Built motion from commit 6d4eceb7.|2.5.34
authorAndrea Amorese <andrea.amorese@xenialab.it>
Wed, 8 Sep 2021 14:17:51 +0000 (16:17 +0200)
committerAndrea Amorese <andrea.amorese@xenialab.it>
Wed, 8 Sep 2021 14:17:51 +0000 (16:17 +0200)
1254 files changed:
apidoc/api_data.js
apidoc/api_data.json
apidoc/api_project.js
apidoc/api_project.json
package.json
public/app/forgot/i18n/de.json
public/app/login/i18n/de.json
public/app/main/apps/analytics/i18n/de.json
public/app/main/apps/chat/i18n/de.json
public/app/main/apps/contactmanager/i18n/de.json
public/app/main/apps/dashboards/i18n/de.json
public/app/main/apps/mail/i18n/de.json
public/app/main/apps/marketplace/i18n/ar.json
public/app/main/apps/marketplace/i18n/cs.json
public/app/main/apps/marketplace/i18n/da.json
public/app/main/apps/marketplace/i18n/de.json
public/app/main/apps/marketplace/i18n/en.json
public/app/main/apps/marketplace/i18n/es.json
public/app/main/apps/marketplace/i18n/et.json
public/app/main/apps/marketplace/i18n/fa.json
public/app/main/apps/marketplace/i18n/fi.json
public/app/main/apps/marketplace/i18n/fr.json
public/app/main/apps/marketplace/i18n/he.json
public/app/main/apps/marketplace/i18n/hi.json
public/app/main/apps/marketplace/i18n/id.json
public/app/main/apps/marketplace/i18n/it.json
public/app/main/apps/marketplace/i18n/ja.json
public/app/main/apps/marketplace/i18n/ko.json
public/app/main/apps/marketplace/i18n/lt.json
public/app/main/apps/marketplace/i18n/lv.json
public/app/main/apps/marketplace/i18n/nl.json
public/app/main/apps/marketplace/i18n/no.json
public/app/main/apps/marketplace/i18n/pl.json
public/app/main/apps/marketplace/i18n/pt-BR.json
public/app/main/apps/marketplace/i18n/pt-PT.json
public/app/main/apps/marketplace/i18n/ru.json
public/app/main/apps/marketplace/i18n/sv.json
public/app/main/apps/marketplace/i18n/tr.json
public/app/main/apps/marketplace/i18n/zh-CN.json
public/app/main/apps/marketplace/i18n/zh-TW.json
public/app/main/apps/openchannel/i18n/de.json
public/app/main/apps/staff/i18n/de.json
public/app/main/apps/tools/i18n/de.json
public/app/main/apps/voice/i18n/ar.json
public/app/main/apps/voice/i18n/cs.json
public/app/main/apps/voice/i18n/da.json
public/app/main/apps/voice/i18n/de.json
public/app/main/apps/voice/i18n/en.json
public/app/main/apps/voice/i18n/es.json
public/app/main/apps/voice/i18n/et.json
public/app/main/apps/voice/i18n/fa.json
public/app/main/apps/voice/i18n/fi.json
public/app/main/apps/voice/i18n/fr.json
public/app/main/apps/voice/i18n/he.json
public/app/main/apps/voice/i18n/hi.json
public/app/main/apps/voice/i18n/id.json
public/app/main/apps/voice/i18n/it.json
public/app/main/apps/voice/i18n/ja.json
public/app/main/apps/voice/i18n/ko.json
public/app/main/apps/voice/i18n/lt.json
public/app/main/apps/voice/i18n/lv.json
public/app/main/apps/voice/i18n/nl.json
public/app/main/apps/voice/i18n/no.json
public/app/main/apps/voice/i18n/pl.json
public/app/main/apps/voice/i18n/pt-BR.json
public/app/main/apps/voice/i18n/pt-PT.json
public/app/main/apps/voice/i18n/ru.json
public/app/main/apps/voice/i18n/sv.json
public/app/main/apps/voice/i18n/tr.json
public/app/main/apps/voice/i18n/zh-CN.json
public/app/main/apps/voice/i18n/zh-TW.json
public/app/main/apps/whatsapp/i18n/ar.json
public/app/main/apps/whatsapp/i18n/cs.json
public/app/main/apps/whatsapp/i18n/da.json
public/app/main/apps/whatsapp/i18n/de.json
public/app/main/apps/whatsapp/i18n/en.json
public/app/main/apps/whatsapp/i18n/es.json
public/app/main/apps/whatsapp/i18n/et.json
public/app/main/apps/whatsapp/i18n/fa.json
public/app/main/apps/whatsapp/i18n/fi.json
public/app/main/apps/whatsapp/i18n/fr.json
public/app/main/apps/whatsapp/i18n/he.json
public/app/main/apps/whatsapp/i18n/hi.json
public/app/main/apps/whatsapp/i18n/id.json
public/app/main/apps/whatsapp/i18n/ja.json
public/app/main/apps/whatsapp/i18n/ko.json
public/app/main/apps/whatsapp/i18n/lt.json
public/app/main/apps/whatsapp/i18n/lv.json
public/app/main/apps/whatsapp/i18n/nl.json
public/app/main/apps/whatsapp/i18n/no.json
public/app/main/apps/whatsapp/i18n/pl.json
public/app/main/apps/whatsapp/i18n/pt-BR.json
public/app/main/apps/whatsapp/i18n/pt-PT.json
public/app/main/apps/whatsapp/i18n/ru.json
public/app/main/apps/whatsapp/i18n/sv.json
public/app/main/apps/whatsapp/i18n/tr.json
public/app/main/apps/whatsapp/i18n/zh-CN.json
public/app/main/apps/whatsapp/i18n/zh-TW.json
public/app/quick-panel/i18n/de.json
public/app/reset/i18n/de.json
public/app/toolbar/i18n/de.json
public/index.html
public/scripts/app.8a22b3f9.js [moved from public/scripts/app.17add46f.js with 52% similarity]
public/styles/app.0b303223.css [moved from public/styles/app.59371f48.css with 68% 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/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.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/cloudProvider/cloudProvider.attributes.js
server/api/cloudProvider/cloudProvider.controller.js
server/api/cloudProvider/cloudProvider.model.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/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/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/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.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 [deleted file]
server/api/teamVoicePrefix/teamVoicePrefix.model.js [deleted file]
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/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 [deleted file]
server/api/userVoicePrefix/userVoicePrefix.model.js [deleted file]
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/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/integrations/configuration.js
server/components/interaction/service.js
server/components/license/service.js
server/components/parsers/advancedSearch.js
server/components/parsers/qs.js
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/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/index.js
server/migrations/2.5.35.js [deleted file]
server/mysqldb/index.js
server/routes.js
server/rpc/index.js
server/services/agi/channel.js
server/services/agi/error.js
server/services/agi/graph/index.js
server/services/agi/index.js
server/services/agi/mailRpc/index.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/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/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/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/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

index 17583b9..fb458d5 100644 (file)
@@ -2441,6 +2441,24 @@ define({ "api": [
     "groupTitle": "Chat_Interactions"
   },
   {
+    "type": "put",
+    "url": "/api/chat/interactions/{id}/close",
+    "title": "Close Interaction",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/chat/interactions/{id}/close -d '[{\"to\": \"+3901119886500\", \"...\": \"...\"}]' \\ \n -H 'Content-Type: application/json' -v -u {name}:{password} -X POST",
+        "type": "json"
+      }
+    ],
+    "name": "addMessage",
+    "group": "Chat_Interactions",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/chatInteraction/index.js",
+    "groupTitle": "Chat_Interactions"
+  },
+  {
     "type": "post",
     "url": "/api/chat/interactions/{id}/messages",
     "title": "Creates new messages",
@@ -2518,24 +2536,6 @@ define({ "api": [
     "groupTitle": "Chat_Interactions"
   },
   {
-    "type": "put",
-    "url": "/api/chat/interactions/{id}/close",
-    "title": "Close Interaction",
-    "examples": [
-      {
-        "title": "Example usage:",
-        "content": "curl https://{domain}/api/chat/interactions/{id}/close -d '[{\"to\": \"+3901119886500\", \"...\": \"...\"}]' \\ \n -H 'Content-Type: application/json' -v -u {name}:{password} -X POST",
-        "type": "json"
-      }
-    ],
-    "name": "addMessage",
-    "group": "Chat_Interactions",
-    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
-    "version": "0.0.0",
-    "filename": "server/api/chatInteraction/index.js",
-    "groupTitle": "Chat_Interactions"
-  },
-  {
     "type": "post",
     "url": "/api/chat/interactions/{id}/attachment_upload",
     "title": "Add attachment",
@@ -10888,9 +10888,9 @@ define({ "api": [
     "groupTitle": "Fax_Messages"
   },
   {
-    "type": "post",
-    "url": "/api/fax/messages",
-    "title": "Create message and send Fax",
+    "type": "put",
+    "url": "/api/fax/messages/{id}/reject",
+    "title": "Rejects message",
     "examples": [
       {
         "title": "Example usage:",
@@ -10900,15 +10900,15 @@ define({ "api": [
     ],
     "name": "rejectMessage",
     "group": "Fax_Messages",
-    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
     "version": "0.0.0",
     "filename": "server/api/faxMessage/index.js",
     "groupTitle": "Fax_Messages"
   },
   {
-    "type": "put",
-    "url": "/api/fax/messages/{id}/reject",
-    "title": "Rejects message",
+    "type": "post",
+    "url": "/api/fax/messages",
+    "title": "Create message and send Fax",
     "examples": [
       {
         "title": "Example usage:",
@@ -10918,7 +10918,7 @@ define({ "api": [
     ],
     "name": "rejectMessage",
     "group": "Fax_Messages",
-    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
     "version": "0.0.0",
     "filename": "server/api/faxMessage/index.js",
     "groupTitle": "Fax_Messages"
@@ -19908,36 +19908,36 @@ define({ "api": [
   },
   {
     "type": "get",
-    "url": "/api/rpc/voice/queues",
-    "title": "Gets a list of RTVoiceQueues",
+    "url": "/api/rpc/outbound",
+    "title": "Gets a list of RTOutbound",
     "examples": [
       {
         "title": "Example usage:",
-        "content": "curl https://{domain}/api/rpc/voice/queues -v -u {name}:{password}",
+        "content": "curl https://{domain}/api/rpc/outbound -v -u {name}:{password}",
         "type": "json"
       }
     ],
     "name": "RTVoiceQueues",
     "group": "RPC_Realtime",
-    "description": "<p>Motion will return a list of realtime voice queues parameters.</p> <p>Upon success Motion will return a HTTP status code <code>200 OK</code> if the entire collection was returned.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "description": "<p>Motion will return a list of realtime outbound parameters.</p> <p>Upon success Motion will return a HTTP status code <code>200 OK</code> if the entire collection was returned.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
     "version": "0.0.0",
     "filename": "server/api/rpc/index.js",
     "groupTitle": "RPC_Realtime"
   },
   {
     "type": "get",
-    "url": "/api/rpc/outbound",
-    "title": "Gets a list of RTOutbound",
+    "url": "/api/rpc/voice/queues",
+    "title": "Gets a list of RTVoiceQueues",
     "examples": [
       {
         "title": "Example usage:",
-        "content": "curl https://{domain}/api/rpc/outbound -v -u {name}:{password}",
+        "content": "curl https://{domain}/api/rpc/voice/queues -v -u {name}:{password}",
         "type": "json"
       }
     ],
     "name": "RTVoiceQueues",
     "group": "RPC_Realtime",
-    "description": "<p>Motion will return a list of realtime outbound parameters.</p> <p>Upon success Motion will return a HTTP status code <code>200 OK</code> if the entire collection was returned.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "description": "<p>Motion will return a list of realtime voice queues parameters.</p> <p>Upon success Motion will return a HTTP status code <code>200 OK</code> if the entire collection was returned.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
     "version": "0.0.0",
     "filename": "server/api/rpc/index.js",
     "groupTitle": "RPC_Realtime"
@@ -22851,12 +22851,12 @@ define({ "api": [
   },
   {
     "type": "post",
-    "url": "/api/sms/accounts/{id}/status",
+    "url": "/api/sms/messages/{id}/status",
     "title": "Receive message status",
     "examples": [
       {
         "title": "Example usage:",
-        "content": "curl https://{domain}/api/sms/accounts/{id}/status -H 'Content-Type: application/json' -v -X POST",
+        "content": "curl https://{domain}/api/sms/messages/{id}/status \\ \n -H 'Content-Type: application/json' -v -X POST",
         "type": "json"
       }
     ],
@@ -22864,41 +22864,41 @@ define({ "api": [
     "group": "Sms_Accounts",
     "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
     "version": "0.0.0",
-    "filename": "server/api/smsAccount/index.js",
+    "filename": "server/api/smsMessage/index.js",
     "groupTitle": "Sms_Accounts"
   },
   {
-    "type": "post",
-    "url": "/api/sms/messages/{id}/status",
-    "title": "Receive message status",
+    "type": "get",
+    "url": "/api/sms/accounts/{id}/status",
+    "title": "Receive message status as get request",
     "examples": [
       {
         "title": "Example usage:",
-        "content": "curl https://{domain}/api/sms/messages/{id}/status \\ \n -H 'Content-Type: application/json' -v -X POST",
+        "content": "curl https://{domain}/api/sms/accounts/{id}/status -H 'Content-Type: application/json' -v -X GET",
         "type": "json"
       }
     ],
     "name": "statusMessage",
     "group": "Sms_Accounts",
-    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
     "version": "0.0.0",
-    "filename": "server/api/smsMessage/index.js",
+    "filename": "server/api/smsAccount/index.js",
     "groupTitle": "Sms_Accounts"
   },
   {
-    "type": "get",
+    "type": "post",
     "url": "/api/sms/accounts/{id}/status",
-    "title": "Receive message status as get request",
+    "title": "Receive message status",
     "examples": [
       {
         "title": "Example usage:",
-        "content": "curl https://{domain}/api/sms/accounts/{id}/status -H 'Content-Type: application/json' -v -X GET",
+        "content": "curl https://{domain}/api/sms/accounts/{id}/status -H 'Content-Type: application/json' -v -X POST",
         "type": "json"
       }
     ],
     "name": "statusMessage",
     "group": "Sms_Accounts",
-    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
     "version": "0.0.0",
     "filename": "server/api/smsAccount/index.js",
     "groupTitle": "Sms_Accounts"
@@ -26240,12 +26240,12 @@ define({ "api": [
   },
   {
     "type": "delete",
-    "url": "/api/whatsapp/queues/{id}/teams",
+    "url": "/api/fax/queues/{id}/teams",
     "title": "Remove teams from a queue",
     "examples": [
       {
         "title": "Example usage:",
-        "content": "curl https://{domain}/api/whatsapp/queues/{id}/teams -v -u {name}:{password} -X DELETE",
+        "content": "curl https://{domain}/api/fax/queues/{id}/teams -v -u {name}:{password} -X DELETE",
         "type": "json"
       }
     ],
@@ -26253,17 +26253,17 @@ define({ "api": [
     "group": "Teams",
     "description": "<p>Motion will return a HTTP status code <code>204</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
     "version": "0.0.0",
-    "filename": "server/api/whatsappQueue/index.js",
+    "filename": "server/api/faxQueue/index.js",
     "groupTitle": "Teams"
   },
   {
     "type": "delete",
-    "url": "/api/openchannel/queues/{id}/teams",
+    "url": "/api/mail/queues/{id}/teams",
     "title": "Remove teams from a queue",
     "examples": [
       {
         "title": "Example usage:",
-        "content": "curl https://{domain}/api/openchannel/queues/{id}/teams -v -u {name}:{password} -X DELETE",
+        "content": "curl https://{domain}/api/mail/queues/{id}/teams -v -u {name}:{password} -X DELETE",
         "type": "json"
       }
     ],
@@ -26271,17 +26271,17 @@ define({ "api": [
     "group": "Teams",
     "description": "<p>Motion will return a HTTP status code <code>204</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
     "version": "0.0.0",
-    "filename": "server/api/openchannelQueue/index.js",
+    "filename": "server/api/mailQueue/index.js",
     "groupTitle": "Teams"
   },
   {
     "type": "delete",
-    "url": "/api/voice/queues/{id}/teams",
+    "url": "/api/openchannel/queues/{id}/teams",
     "title": "Remove teams from a queue",
     "examples": [
       {
         "title": "Example usage:",
-        "content": "curl https://{domain}/api/voice/queues/{id}/teams -v -u {name}:{password} -X DELETE",
+        "content": "curl https://{domain}/api/openchannel/queues/{id}/teams -v -u {name}:{password} -X DELETE",
         "type": "json"
       }
     ],
@@ -26289,7 +26289,7 @@ define({ "api": [
     "group": "Teams",
     "description": "<p>Motion will return a HTTP status code <code>204</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
     "version": "0.0.0",
-    "filename": "server/api/voiceQueue/index.js",
+    "filename": "server/api/openchannelQueue/index.js",
     "groupTitle": "Teams"
   },
   {
@@ -26312,30 +26312,12 @@ define({ "api": [
   },
   {
     "type": "delete",
-    "url": "/api/voice/Prefixes/{id}/teams",
-    "title": "Remove teams from a voice prefix",
-    "examples": [
-      {
-        "title": "Example usage:",
-        "content": "curl https://{domain}/api/voice/prefixes/{id}/teams -v -u {name}:{password} -X DELETE",
-        "type": "json"
-      }
-    ],
-    "name": "RemoveTeams",
-    "group": "Teams",
-    "description": "<p>Motion will return a HTTP status code <code>204</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
-    "version": "0.0.0",
-    "filename": "server/api/voicePrefix/index.js",
-    "groupTitle": "Teams"
-  },
-  {
-    "type": "delete",
-    "url": "/api/chat/queues/{id}/teams",
+    "url": "/api/whatsapp/queues/{id}/teams",
     "title": "Remove teams from a queue",
     "examples": [
       {
         "title": "Example usage:",
-        "content": "curl https://{domain}/api/chat/queues/{id}/teams -v -u {name}:{password} -X DELETE",
+        "content": "curl https://{domain}/api/whatsapp/queues/{id}/teams -v -u {name}:{password} -X DELETE",
         "type": "json"
       }
     ],
@@ -26343,17 +26325,17 @@ define({ "api": [
     "group": "Teams",
     "description": "<p>Motion will return a HTTP status code <code>204</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
     "version": "0.0.0",
-    "filename": "server/api/chatQueue/index.js",
+    "filename": "server/api/whatsappQueue/index.js",
     "groupTitle": "Teams"
   },
   {
     "type": "delete",
-    "url": "/api/fax/queues/{id}/teams",
+    "url": "/api/voice/queues/{id}/teams",
     "title": "Remove teams from a queue",
     "examples": [
       {
         "title": "Example usage:",
-        "content": "curl https://{domain}/api/fax/queues/{id}/teams -v -u {name}:{password} -X DELETE",
+        "content": "curl https://{domain}/api/voice/queues/{id}/teams -v -u {name}:{password} -X DELETE",
         "type": "json"
       }
     ],
@@ -26361,17 +26343,17 @@ define({ "api": [
     "group": "Teams",
     "description": "<p>Motion will return a HTTP status code <code>204</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
     "version": "0.0.0",
-    "filename": "server/api/faxQueue/index.js",
+    "filename": "server/api/voiceQueue/index.js",
     "groupTitle": "Teams"
   },
   {
     "type": "delete",
-    "url": "/api/mail/queues/{id}/teams",
+    "url": "/api/chat/queues/{id}/teams",
     "title": "Remove teams from a queue",
     "examples": [
       {
         "title": "Example usage:",
-        "content": "curl https://{domain}/api/mail/queues/{id}/teams -v -u {name}:{password} -X DELETE",
+        "content": "curl https://{domain}/api/chat/queues/{id}/teams -v -u {name}:{password} -X DELETE",
         "type": "json"
       }
     ],
@@ -26379,7 +26361,7 @@ define({ "api": [
     "group": "Teams",
     "description": "<p>Motion will return a HTTP status code <code>204</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
     "version": "0.0.0",
-    "filename": "server/api/mailQueue/index.js",
+    "filename": "server/api/chatQueue/index.js",
     "groupTitle": "Teams"
   },
   {
@@ -31407,42 +31389,6 @@ define({ "api": [
   },
   {
     "type": "post",
-    "url": "/api/voice/prefixes/{id}/teams",
-    "title": "Add teams to voice prefix",
-    "examples": [
-      {
-        "title": "Example usage:",
-        "content": "curl https://{domain}/api/voice/prefixes/{id}/teams -d '{\"ids\": [1,2]}' \\ \n -H 'Content-Type: application/json' -v -u {name}:{password} -X POST",
-        "type": "json"
-      }
-    ],
-    "name": "AddTeams",
-    "group": "Voice_Prefix",
-    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
-    "version": "0.0.0",
-    "filename": "server/api/voicePrefix/index.js",
-    "groupTitle": "Voice_Prefix"
-  },
-  {
-    "type": "get",
-    "url": "/api/voice/prefixes/{id}/teams",
-    "title": "Gets voice prefix team",
-    "examples": [
-      {
-        "title": "Example usage:",
-        "content": "curl https://{domain}/api/voice/prefixes/{id}/teams -v -u {name}:{password}  -X GET",
-        "type": "json"
-      }
-    ],
-    "name": "GetTeams",
-    "group": "Voice_Prefix",
-    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
-    "version": "0.0.0",
-    "filename": "server/api/voicePrefix/index.js",
-    "groupTitle": "Voice_Prefix"
-  },
-  {
-    "type": "post",
     "url": "/api/voice/prefixes/{id}/users",
     "title": "Add agents to a prefix",
     "examples": [
@@ -33365,37 +33311,37 @@ define({ "api": [
     "groupTitle": "Voice_Recordings"
   },
   {
-    "type": "get",
+    "type": "post",
     "url": "/api/voice/recordings/{id}/transcribe",
     "title": "Run Transcribe Recording",
     "examples": [
       {
         "title": "Example usage:",
-        "content": "curl https://{domain}/api/voice/recordings/{id}/transcribe -v -u {name}:{password} -X GET",
+        "content": "curl https://{domain}/api/voice/recordings/{id}/transcribe -d '{\"runSentiment\": \"true\"}' -v -u {name}:{password} -X POST",
         "type": "json"
       }
     ],
     "name": "transcribe",
     "group": "Voice_Recordings",
-    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
     "version": "0.0.0",
     "filename": "server/api/voiceRecording/index.js",
     "groupTitle": "Voice_Recordings"
   },
   {
-    "type": "post",
+    "type": "get",
     "url": "/api/voice/recordings/{id}/transcribe",
     "title": "Run Transcribe Recording",
     "examples": [
       {
         "title": "Example usage:",
-        "content": "curl https://{domain}/api/voice/recordings/{id}/transcribe -d '{\"runSentiment\": \"true\"}' -v -u {name}:{password} -X POST",
+        "content": "curl https://{domain}/api/voice/recordings/{id}/transcribe -v -u {name}:{password} -X GET",
         "type": "json"
       }
     ],
     "name": "transcribe",
     "group": "Voice_Recordings",
-    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
     "version": "0.0.0",
     "filename": "server/api/voiceRecording/index.js",
     "groupTitle": "Voice_Recordings"
index 5c8c36e..726d908 100644 (file)
     "groupTitle": "Chat_Interactions"
   },
   {
+    "type": "put",
+    "url": "/api/chat/interactions/{id}/close",
+    "title": "Close Interaction",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/chat/interactions/{id}/close -d '[{\"to\": \"+3901119886500\", \"...\": \"...\"}]' \\ \n -H 'Content-Type: application/json' -v -u {name}:{password} -X POST",
+        "type": "json"
+      }
+    ],
+    "name": "addMessage",
+    "group": "Chat_Interactions",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/chatInteraction/index.js",
+    "groupTitle": "Chat_Interactions"
+  },
+  {
     "type": "post",
     "url": "/api/chat/interactions/{id}/messages",
     "title": "Creates new messages",
     "groupTitle": "Chat_Interactions"
   },
   {
-    "type": "put",
-    "url": "/api/chat/interactions/{id}/close",
-    "title": "Close Interaction",
-    "examples": [
-      {
-        "title": "Example usage:",
-        "content": "curl https://{domain}/api/chat/interactions/{id}/close -d '[{\"to\": \"+3901119886500\", \"...\": \"...\"}]' \\ \n -H 'Content-Type: application/json' -v -u {name}:{password} -X POST",
-        "type": "json"
-      }
-    ],
-    "name": "addMessage",
-    "group": "Chat_Interactions",
-    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
-    "version": "0.0.0",
-    "filename": "server/api/chatInteraction/index.js",
-    "groupTitle": "Chat_Interactions"
-  },
-  {
     "type": "post",
     "url": "/api/chat/interactions/{id}/attachment_upload",
     "title": "Add attachment",
     "groupTitle": "Fax_Messages"
   },
   {
-    "type": "post",
-    "url": "/api/fax/messages",
-    "title": "Create message and send Fax",
+    "type": "put",
+    "url": "/api/fax/messages/{id}/reject",
+    "title": "Rejects message",
     "examples": [
       {
         "title": "Example usage:",
     ],
     "name": "rejectMessage",
     "group": "Fax_Messages",
-    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
     "version": "0.0.0",
     "filename": "server/api/faxMessage/index.js",
     "groupTitle": "Fax_Messages"
   },
   {
-    "type": "put",
-    "url": "/api/fax/messages/{id}/reject",
-    "title": "Rejects message",
+    "type": "post",
+    "url": "/api/fax/messages",
+    "title": "Create message and send Fax",
     "examples": [
       {
         "title": "Example usage:",
     ],
     "name": "rejectMessage",
     "group": "Fax_Messages",
-    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
     "version": "0.0.0",
     "filename": "server/api/faxMessage/index.js",
     "groupTitle": "Fax_Messages"
   },
   {
     "type": "get",
-    "url": "/api/rpc/voice/queues",
-    "title": "Gets a list of RTVoiceQueues",
+    "url": "/api/rpc/outbound",
+    "title": "Gets a list of RTOutbound",
     "examples": [
       {
         "title": "Example usage:",
-        "content": "curl https://{domain}/api/rpc/voice/queues -v -u {name}:{password}",
+        "content": "curl https://{domain}/api/rpc/outbound -v -u {name}:{password}",
         "type": "json"
       }
     ],
     "name": "RTVoiceQueues",
     "group": "RPC_Realtime",
-    "description": "<p>Motion will return a list of realtime voice queues parameters.</p> <p>Upon success Motion will return a HTTP status code <code>200 OK</code> if the entire collection was returned.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "description": "<p>Motion will return a list of realtime outbound parameters.</p> <p>Upon success Motion will return a HTTP status code <code>200 OK</code> if the entire collection was returned.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
     "version": "0.0.0",
     "filename": "server/api/rpc/index.js",
     "groupTitle": "RPC_Realtime"
   },
   {
     "type": "get",
-    "url": "/api/rpc/outbound",
-    "title": "Gets a list of RTOutbound",
+    "url": "/api/rpc/voice/queues",
+    "title": "Gets a list of RTVoiceQueues",
     "examples": [
       {
         "title": "Example usage:",
-        "content": "curl https://{domain}/api/rpc/outbound -v -u {name}:{password}",
+        "content": "curl https://{domain}/api/rpc/voice/queues -v -u {name}:{password}",
         "type": "json"
       }
     ],
     "name": "RTVoiceQueues",
     "group": "RPC_Realtime",
-    "description": "<p>Motion will return a list of realtime outbound parameters.</p> <p>Upon success Motion will return a HTTP status code <code>200 OK</code> if the entire collection was returned.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "description": "<p>Motion will return a list of realtime voice queues parameters.</p> <p>Upon success Motion will return a HTTP status code <code>200 OK</code> if the entire collection was returned.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
     "version": "0.0.0",
     "filename": "server/api/rpc/index.js",
     "groupTitle": "RPC_Realtime"
   },
   {
     "type": "post",
-    "url": "/api/sms/accounts/{id}/status",
+    "url": "/api/sms/messages/{id}/status",
     "title": "Receive message status",
     "examples": [
       {
         "title": "Example usage:",
-        "content": "curl https://{domain}/api/sms/accounts/{id}/status -H 'Content-Type: application/json' -v -X POST",
+        "content": "curl https://{domain}/api/sms/messages/{id}/status \\ \n -H 'Content-Type: application/json' -v -X POST",
         "type": "json"
       }
     ],
     "group": "Sms_Accounts",
     "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
     "version": "0.0.0",
-    "filename": "server/api/smsAccount/index.js",
+    "filename": "server/api/smsMessage/index.js",
     "groupTitle": "Sms_Accounts"
   },
   {
-    "type": "post",
-    "url": "/api/sms/messages/{id}/status",
-    "title": "Receive message status",
+    "type": "get",
+    "url": "/api/sms/accounts/{id}/status",
+    "title": "Receive message status as get request",
     "examples": [
       {
         "title": "Example usage:",
-        "content": "curl https://{domain}/api/sms/messages/{id}/status \\ \n -H 'Content-Type: application/json' -v -X POST",
+        "content": "curl https://{domain}/api/sms/accounts/{id}/status -H 'Content-Type: application/json' -v -X GET",
         "type": "json"
       }
     ],
     "name": "statusMessage",
     "group": "Sms_Accounts",
-    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
     "version": "0.0.0",
-    "filename": "server/api/smsMessage/index.js",
+    "filename": "server/api/smsAccount/index.js",
     "groupTitle": "Sms_Accounts"
   },
   {
-    "type": "get",
+    "type": "post",
     "url": "/api/sms/accounts/{id}/status",
-    "title": "Receive message status as get request",
+    "title": "Receive message status",
     "examples": [
       {
         "title": "Example usage:",
-        "content": "curl https://{domain}/api/sms/accounts/{id}/status -H 'Content-Type: application/json' -v -X GET",
+        "content": "curl https://{domain}/api/sms/accounts/{id}/status -H 'Content-Type: application/json' -v -X POST",
         "type": "json"
       }
     ],
     "name": "statusMessage",
     "group": "Sms_Accounts",
-    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
     "version": "0.0.0",
     "filename": "server/api/smsAccount/index.js",
     "groupTitle": "Sms_Accounts"
   },
   {
     "type": "delete",
-    "url": "/api/whatsapp/queues/{id}/teams",
+    "url": "/api/fax/queues/{id}/teams",
     "title": "Remove teams from a queue",
     "examples": [
       {
         "title": "Example usage:",
-        "content": "curl https://{domain}/api/whatsapp/queues/{id}/teams -v -u {name}:{password} -X DELETE",
+        "content": "curl https://{domain}/api/fax/queues/{id}/teams -v -u {name}:{password} -X DELETE",
         "type": "json"
       }
     ],
     "group": "Teams",
     "description": "<p>Motion will return a HTTP status code <code>204</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
     "version": "0.0.0",
-    "filename": "server/api/whatsappQueue/index.js",
+    "filename": "server/api/faxQueue/index.js",
     "groupTitle": "Teams"
   },
   {
     "type": "delete",
-    "url": "/api/openchannel/queues/{id}/teams",
+    "url": "/api/mail/queues/{id}/teams",
     "title": "Remove teams from a queue",
     "examples": [
       {
         "title": "Example usage:",
-        "content": "curl https://{domain}/api/openchannel/queues/{id}/teams -v -u {name}:{password} -X DELETE",
+        "content": "curl https://{domain}/api/mail/queues/{id}/teams -v -u {name}:{password} -X DELETE",
         "type": "json"
       }
     ],
     "group": "Teams",
     "description": "<p>Motion will return a HTTP status code <code>204</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
     "version": "0.0.0",
-    "filename": "server/api/openchannelQueue/index.js",
+    "filename": "server/api/mailQueue/index.js",
     "groupTitle": "Teams"
   },
   {
     "type": "delete",
-    "url": "/api/voice/queues/{id}/teams",
+    "url": "/api/openchannel/queues/{id}/teams",
     "title": "Remove teams from a queue",
     "examples": [
       {
         "title": "Example usage:",
-        "content": "curl https://{domain}/api/voice/queues/{id}/teams -v -u {name}:{password} -X DELETE",
+        "content": "curl https://{domain}/api/openchannel/queues/{id}/teams -v -u {name}:{password} -X DELETE",
         "type": "json"
       }
     ],
     "group": "Teams",
     "description": "<p>Motion will return a HTTP status code <code>204</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
     "version": "0.0.0",
-    "filename": "server/api/voiceQueue/index.js",
+    "filename": "server/api/openchannelQueue/index.js",
     "groupTitle": "Teams"
   },
   {
   },
   {
     "type": "delete",
-    "url": "/api/voice/Prefixes/{id}/teams",
-    "title": "Remove teams from a voice prefix",
-    "examples": [
-      {
-        "title": "Example usage:",
-        "content": "curl https://{domain}/api/voice/prefixes/{id}/teams -v -u {name}:{password} -X DELETE",
-        "type": "json"
-      }
-    ],
-    "name": "RemoveTeams",
-    "group": "Teams",
-    "description": "<p>Motion will return a HTTP status code <code>204</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
-    "version": "0.0.0",
-    "filename": "server/api/voicePrefix/index.js",
-    "groupTitle": "Teams"
-  },
-  {
-    "type": "delete",
-    "url": "/api/chat/queues/{id}/teams",
+    "url": "/api/whatsapp/queues/{id}/teams",
     "title": "Remove teams from a queue",
     "examples": [
       {
         "title": "Example usage:",
-        "content": "curl https://{domain}/api/chat/queues/{id}/teams -v -u {name}:{password} -X DELETE",
+        "content": "curl https://{domain}/api/whatsapp/queues/{id}/teams -v -u {name}:{password} -X DELETE",
         "type": "json"
       }
     ],
     "group": "Teams",
     "description": "<p>Motion will return a HTTP status code <code>204</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
     "version": "0.0.0",
-    "filename": "server/api/chatQueue/index.js",
+    "filename": "server/api/whatsappQueue/index.js",
     "groupTitle": "Teams"
   },
   {
     "type": "delete",
-    "url": "/api/fax/queues/{id}/teams",
+    "url": "/api/voice/queues/{id}/teams",
     "title": "Remove teams from a queue",
     "examples": [
       {
         "title": "Example usage:",
-        "content": "curl https://{domain}/api/fax/queues/{id}/teams -v -u {name}:{password} -X DELETE",
+        "content": "curl https://{domain}/api/voice/queues/{id}/teams -v -u {name}:{password} -X DELETE",
         "type": "json"
       }
     ],
     "group": "Teams",
     "description": "<p>Motion will return a HTTP status code <code>204</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
     "version": "0.0.0",
-    "filename": "server/api/faxQueue/index.js",
+    "filename": "server/api/voiceQueue/index.js",
     "groupTitle": "Teams"
   },
   {
     "type": "delete",
-    "url": "/api/mail/queues/{id}/teams",
+    "url": "/api/chat/queues/{id}/teams",
     "title": "Remove teams from a queue",
     "examples": [
       {
         "title": "Example usage:",
-        "content": "curl https://{domain}/api/mail/queues/{id}/teams -v -u {name}:{password} -X DELETE",
+        "content": "curl https://{domain}/api/chat/queues/{id}/teams -v -u {name}:{password} -X DELETE",
         "type": "json"
       }
     ],
     "group": "Teams",
     "description": "<p>Motion will return a HTTP status code <code>204</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
     "version": "0.0.0",
-    "filename": "server/api/mailQueue/index.js",
+    "filename": "server/api/chatQueue/index.js",
     "groupTitle": "Teams"
   },
   {
   },
   {
     "type": "post",
-    "url": "/api/voice/prefixes/{id}/teams",
-    "title": "Add teams to voice prefix",
-    "examples": [
-      {
-        "title": "Example usage:",
-        "content": "curl https://{domain}/api/voice/prefixes/{id}/teams -d '{\"ids\": [1,2]}' \\ \n -H 'Content-Type: application/json' -v -u {name}:{password} -X POST",
-        "type": "json"
-      }
-    ],
-    "name": "AddTeams",
-    "group": "Voice_Prefix",
-    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
-    "version": "0.0.0",
-    "filename": "server/api/voicePrefix/index.js",
-    "groupTitle": "Voice_Prefix"
-  },
-  {
-    "type": "get",
-    "url": "/api/voice/prefixes/{id}/teams",
-    "title": "Gets voice prefix team",
-    "examples": [
-      {
-        "title": "Example usage:",
-        "content": "curl https://{domain}/api/voice/prefixes/{id}/teams -v -u {name}:{password}  -X GET",
-        "type": "json"
-      }
-    ],
-    "name": "GetTeams",
-    "group": "Voice_Prefix",
-    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
-    "version": "0.0.0",
-    "filename": "server/api/voicePrefix/index.js",
-    "groupTitle": "Voice_Prefix"
-  },
-  {
-    "type": "post",
     "url": "/api/voice/prefixes/{id}/users",
     "title": "Add agents to a prefix",
     "examples": [
     "groupTitle": "Voice_Recordings"
   },
   {
-    "type": "get",
+    "type": "post",
     "url": "/api/voice/recordings/{id}/transcribe",
     "title": "Run Transcribe Recording",
     "examples": [
       {
         "title": "Example usage:",
-        "content": "curl https://{domain}/api/voice/recordings/{id}/transcribe -v -u {name}:{password} -X GET",
+        "content": "curl https://{domain}/api/voice/recordings/{id}/transcribe -d '{\"runSentiment\": \"true\"}' -v -u {name}:{password} -X POST",
         "type": "json"
       }
     ],
     "name": "transcribe",
     "group": "Voice_Recordings",
-    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
     "version": "0.0.0",
     "filename": "server/api/voiceRecording/index.js",
     "groupTitle": "Voice_Recordings"
   },
   {
-    "type": "post",
+    "type": "get",
     "url": "/api/voice/recordings/{id}/transcribe",
     "title": "Run Transcribe Recording",
     "examples": [
       {
         "title": "Example usage:",
-        "content": "curl https://{domain}/api/voice/recordings/{id}/transcribe -d '{\"runSentiment\": \"true\"}' -v -u {name}:{password} -X POST",
+        "content": "curl https://{domain}/api/voice/recordings/{id}/transcribe -v -u {name}:{password} -X GET",
         "type": "json"
       }
     ],
     "name": "transcribe",
     "group": "Voice_Recordings",
-    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
     "version": "0.0.0",
     "filename": "server/api/voiceRecording/index.js",
     "groupTitle": "Voice_Recordings"
index 6f36a66..3bea1a8 100644 (file)
@@ -1,6 +1,6 @@
 define({
   "name": "xCALLY Motion API",
-  "version": "2.5.35",
+  "version": "2.5.34",
   "description": "Thank you for choosing xCALLY MOTION, one of the first Omni Channel solution integrated with AsteriskTM and the most innovative real time solutions available on the market.",
   "title": "xCALLY MOTION API",
   "header": {
@@ -17,7 +17,7 @@ define({
   "apidoc": "0.3.0",
   "generator": {
     "name": "apidoc",
-    "time": "2021-09-08T13:47:50.306Z",
+    "time": "2021-09-08T14:11:41.336Z",
     "url": "http://apidocjs.com",
     "version": "0.24.0"
   }
index 2814a93..f0fe5da 100644 (file)
@@ -1,6 +1,6 @@
 {
   "name": "xCALLY Motion API",
-  "version": "2.5.35",
+  "version": "2.5.34",
   "description": "Thank you for choosing xCALLY MOTION, one of the first Omni Channel solution integrated with AsteriskTM and the most innovative real time solutions available on the market.",
   "title": "xCALLY MOTION API",
   "header": {
@@ -17,7 +17,7 @@
   "apidoc": "0.3.0",
   "generator": {
     "name": "apidoc",
-    "time": "2021-09-08T13:47:50.306Z",
+    "time": "2021-09-08T14:11:41.336Z",
     "url": "http://apidocjs.com",
     "version": "0.24.0"
   }
index 07334ea..225e85b 100644 (file)
@@ -1,6 +1,6 @@
 {
   "name": "motion",
-  "version": "2.5.345",
+  "version": "2.5.34",
   "description": "xCALLY Motion is the new Realtime asynchronous solution for your multichannel contact center over Asterisk.",
   "main": "server/app.js",
   "engines": {
index 5c4734e..53a27fb 100644 (file)
@@ -1,15 +1,15 @@
 {
   "FORGOTPASSWORD": {
-    "TITLE": "Passwort wiederherstellen",
-    "EMAIL_ADRESS": "E-Mail Adresse",
+    "TITLE": "Ihr Passwort wiederherstellen",
+    "EMAIL_ADRESS": "E-mail Adresse",
     "SEND_RESET_LINK": "LINK ZUM ZURÜCKSETZEN SENDEN",
     "GO_BACK": "Zurück zum Login",
     "LINK_SENT": "Link gesendet",
-    "LINNK_SENT_MESSAGE": "Eine E-Mail mit einem Link zum Zurücksetzen des Passwortes wurde an Ihre Adresse gesendet.",
-    "PASSWORD_RESET_ERROR": "Fehler beim Zurücksetzen des Passwortes",
+    "LINNK_SENT_MESSAGE": "Eine e-Mail mit einem Link zum Zurücksetzen des Kennworts wurde an Ihre Adresse gesendet!",
+    "PASSWORD_RESET_ERROR": "Passwort Fehler zurücksetzen",
     "ERRORS": {
-      "EMAIL_REQUIRED": "Eingabe E-Mail Adresse erforderlich",
-      "EMAIL_MUST_VALID": "Es muss eine gültige E-Mail Adresse eingegeben werden"
+      "EMAIL_REQUIRED": "Im Feld E-Mail ist erforderlich",
+      "EMAIL_MUST_VALID": "E-Mail muss eine gültige e-mail Adresse"
     }
   }
 }
index bced170..c090dfa 100644 (file)
@@ -1,16 +1,16 @@
 {
   "LOGIN": {
-    "TITLE": "Bitte mit Ihrem Konto anmelden",
+    "TITLE": "Melden Sie sich bei Ihrem Konto an",
     "EMAIL": "E-Mail",
     "PASSWORD": "Passwort",
-    "REMEMBER_ME": "Anmeldedaten merken",
+    "REMEMBER_ME": "Erinnere Dich an Mich",
     "FORGOT_PASSWORD": "Passwort vergessen?",
-    "LOG_IN": "ANMELDEN",
+    "LOG_IN": "LOG IN",
     "OR": "Oder",
-    "WITH_GOOGLE": "Anmeldung mit Google",
-    "WITH_FACEBOOK": "Anmeldung mit Facebook",
+    "WITH_GOOGLE": "Melden Sie sich mit Google",
+    "WITH_FACEBOOK": "Mit Facebook anmelden",
     "DONT_HAVE_ACCOUNT": "Sie haben noch kein Konto?",
-    "CREATE_ACCOUNT": "Konto erstellen",
+    "CREATE_ACCOUNT": "Erstellen Sie ein Konto",
     "ERRORS": {
       "EMAIL_REQUIRED": "Pflichtfeld",
       "EMAIL_MUST_VALID": "Falsches Format",
@@ -18,8 +18,8 @@
       "USERNAME_REQUIRED": "Pflichtfeld"
     },
     "USERNAME": "Benutzername",
-    "CANCEL": "Abbrechen",
-    "SELECT": "Auswählen",
+    "CANCEL": "Stornieren",
+    "SELECT": "Wählen",
     "TELEPHONES": "Telefone"
   }
 }
index e6b577a..e60162b 100644 (file)
@@ -13,7 +13,7 @@
       "METRIC_REQUIRED": "Pflichtfeld",
       "COLUMN_REQUIRED": "Pflichtfeld",
       "VALUE_REQUIRED": "Pflichtfeld",
-      "CUSTOM_METRIC_REQUIRED": "Pflichtfeld",
+      "CUSTOM_METRIC_REQUIRED": "benutzerdefinierte Metrik (erforderlich)",
       "ALIAS_REQUIRED": "Pflichtfeld"
     },
     "NEW_METRIC": "Neue Metrik",
@@ -23,8 +23,8 @@
     "SAVE": "Speichern",
     "BACK": "Zurück",
     "SELECTED": "Ausgewählte",
-    "SELECT_ALL": "Alles auswählen",
-    "SELECT_NONE": "Nichts auswählen",
+    "SELECT_ALL": "Alle auswählen",
+    "SELECT_NONE": "Keine auswählen",
     "TYPE": "Typ",
     "EXTRACTEDREPORTS": "Extrahierte Berichte",
     "DATE_RANGE_FROM": "Datum von",
     "GENERAL": "Allgemein",
     "FIELDS": "Felder",
     "CONDITION": "Bedingung",
-    "OPERATOR": "Operator",
+    "OPERATOR": "Betreiber",
     "GROUP": "Gruppe",
     "COLUMN": "Spalte",
     "VALUE": "Wert",
     "PREVIEW": "Vorschau",
-    "LIMITED_RESULT": "Ergebins begrenzt",
+    "LIMITED_RESULT": "BEGRENZTES ERGEBNIS",
     "NO_DATA": "Keine Daten",
     "CONDITIONS": "Bedingungen",
     "ALIAS": "Alias",
     "FUNCTION": "Funktion",
     "GROUP_BY": "Gruppieren nach",
-    "ORDER_BY": "Sortieren nach",
+    "ORDER_BY": "Bestellung von",
     "ADD_REPORTFIELD": "Feld hinzufügen",
     "EDIT_REPORTFIELD": "Feld bearbeiten",
     "DELETE_REPORTFIELD": "Feld löschen",
     "NO_METRIC_FOUND": "Keine Metrik gefunden",
     "NO_AVAILABLE_INFO": "keine Informationen verfügbar",
     "CUSTOM_METRIC": "Benutzerdefinierte Metrik",
-    "DELETE_EXTRACTEDREPORT": "Extrahierte Berichte löschen",
+    "DELETE_EXTRACTEDREPORT": "Löschen extrahierte Berichte",
     "EDIT_EXTRACTEDREPORT": "Extrahierte Berichte bearbeiten",
-    "DOWNLOAD_EXTRACTEDREPORT": "Extrahierte Berichte herunterladen",
+    "DOWNLOAD_EXTRACTEDREPORT": "Herunterladen extrahierte Berichte",
     "PAGE": "Seite",
     "ROWSPERPAGE": "Zeilen pro Seite",
-    "OF": "von",
+    "OF": "Von",
     "DELETE": "Löschen",
     "REPORTNAME": "Berichtsname",
     "SEND_IF_EMPTY": "Senden, wenn leer",
index 02f4f10..4bc9896 100644 (file)
@@ -2,12 +2,12 @@
   "CHAT": {
     "AMAZONLEX": "Amazon Lex",
     "TEXT": "Text",
-    "TIMES": "Anzahl der Zeiten pro Interaktion",
+    "TIMES": "Anzahl von Malen pro Interaktion",
     "EDIT_AUTOREPLY": "Automatische Antwort bearbeiten",
     "AUTOREPLY": "Automatische Antwort",
-    "NEW_CHATDISPOSITION": "Neue Chat-Qualifizierung",
+    "NEW_CHATDISPOSITION": "Neue Chat-Disposition",
     "ENABLECUSTOMERATTACHMENT": "Kundenanhänge aktivieren",
-    "OFFLINE_CHAT_BUTTON": "Button Chat offline",
+    "OFFLINE_CHAT_BUTTON": "Offline-Chat-Taste",
     "OFFLINESTATUS": "Offline Status",
     "NAME": "Name",
     "CHATQUEUES": "Chat-Warteschlangen",
     "STRATEGY": "Strategie",
     "AGENT_TIMEOUT": "Agent Timeout",
     "DESCRIPTION": "Beschreibung",
-    "KEY": "Schlüssel",
+    "KEY": "Key",
     "ALIAS": "Alias-Name",
     "VARIABLE": "Variable",
     "INTERVAL": "Intervall",
-    "EDIT_CLOSE": "Bearbeitung abschließen",
+    "EDIT_CLOSE": "Bearbeiten Schließen",
     "TIMEZONE": "Zeitzone",
     "MESSAGE": "Nachricht",
     "ADVANCED": "Erweitert",
     "FORWARDTRANSCRIPT": "Transkript weiterleiten",
     "FORWARDTRANSCRIPTMESSAGE": "Transkript-Nachricht weiterleiten",
-    "SKIPMESSAGEBUTTON": "Nachrichtenbutton überspringen",
+    "SKIPMESSAGEBUTTON": "Nachrichtentaste überspringen",
     "EDIT_MESSAGE": "Nachricht bearbeiten",
-    "CONDITION_AGREEMENT": "Konditionelle Vereinbarung",
-    "NONE": "Nichts",
+    "CONDITION_AGREEMENT": "Bedingungsvereinbarung",
+    "NONE": "Keine",
     "PRIORITY": "Priorität",
     "ONLINESTATUS": "Online Status",
-    "UNMANAGEDSTATUS": "Status nicht bearbeitet",
+    "UNMANAGEDSTATUS": "Nicht verwalteter Status",
     "AUTOCLOSE": "Automatisches Schließen aktivieren",
-    "ENABLEUNMANAGEDNOTE": "Unbearbeitete Nachricht aktivieren",
-    "UNMANAGEDMESSAGE": "Unbearbeitete Nachricht",
+    "ENABLEUNMANAGEDNOTE": "Nicht verwaltete Nachricht aktivieren",
+    "UNMANAGEDMESSAGE": "Nachricht",
     "SKIPUNMANAGED": "Nachricht überspringen",
     "SENDUNMANAGED": "Nachricht senden",
-    "WEBSITESCRIPT": "Webseiten-Skript",
+    "WEBSITESCRIPT": "Website-Script",
     "DELETE_OFFLINEMESSAGE": "Löschen",
     "OFFLINEMESSAGES": "Offline Nachrichten",
     "FORWARD_OFFLINE": "Offline weiterleiten",
     "FORWARD_OFFLINE_ADDRESS": "Offline-Adresse weiterleiten",
     "CLOSINGFORM": "Formular schließen",
     "ENABLERATING": "Bewertung aktivieren",
-    "ENABLECUSTOMERWRITING": "Kunde kann schreiben, bevor Chat akzeptiert wird",
+    "ENABLECUSTOMERWRITING": "Dem Kunden \"schreiben\" erlauben, bevor der Agent akzeptiert",
     "ENABLEFEEDBACK": "Feedback aktivieren",
     "RATINGTYPE": "Bewertungstyp",
-    "CLOSINGMESSAGE": "Abschluss Nachricht",
-    "CLOSINGMESSAGEBUTTON": "Button für Abschluss Nachricht",
+    "CLOSINGMESSAGE": "Nachricht schließen",
+    "CLOSINGMESSAGEBUTTON": "Nachrichtentaste schließen",
     "RATINGSTARSNUMBER": "Anzahl der Bewertungssterne",
     "EDIT_GOTOIF": "GotoIf bearbeiten",
     "CONDITION": "Bedingung",
-    "TRUEPRIORITY": "Wahre Priorität",
+    "TRUEPRIORITY": "Echte Priorität",
     "FALSEPRIORITY": "Falsche Priorität",
     "VALUE": "Wert",
     "WEBSITEALIAS": "Website-Alias",
     "ERRORS": {
       "TEXT_REQUIRED": "Pflichtfeld",
       "SENDUNMANAGED_REQUIRED": "Pflichtfeld",
-      "SENDUNMANAGED_MAX_LENGTH": "Wert darf eine maximale Länge haben von {{max}} ",
-      "SKIPUNMANAGED_MAX_LENGTH": "Wert darf eine maximale Länge haben von {{max}} ",
-      "UNMANAGEDMESSAGE_MAX_LENGTH": "Wert darf eine maximale Länge haben von {{max}} ",
-      "WEBSITEALIAS_MAX_LENGTH": "Wert darf eine maximale Länge haben von {{max}} ",
+      "SENDUNMANAGED_MAX_LENGTH": "Der Wert muss eine maximale Länge gleich {{max}} haben",
+      "SKIPUNMANAGED_MAX_LENGTH": "Der Wert muss eine maximale Länge gleich {{{{max}} haben",
+      "UNMANAGEDMESSAGE_MAX_LENGTH": "Der Wert muss eine maximale Länge gleich {{{{max}} haben",
+      "WEBSITEALIAS_MAX_LENGTH": "Der Wert muss eine maximale Länge gleich {{{{max}} haben",
       "AGENT_REQUIRED": "Pflichtfeld",
       "QUEUE_REQUIRED": "Pflichtfeld",
       "CONDITION_REQUIRED": "Pflichtfeld",
       "TIMEOUT_REQUIRED": "Pflichtfeld",
       "REJECTURL_MUST_VALID_URL": "Falsches Format",
       "CLOSEURL_MUST_VALID_URL": "Falsches Format",
-      "PRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Wert muss größer oder gleich sein als",
-      "TRUEPRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Wert muss größer oder gleich sein als",
-      "FALSEPRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Wert muss größer oder gleich sein als",
-      "TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Wert muss größer oder gleich sein als",
-      "POLLING_INTERVAL_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Wert muss größer oder gleich sein als",
+      "PRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Der Wert muss größer oder gleich sein",
+      "TRUEPRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Der Wert muss größer oder gleich sein",
+      "FALSEPRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Der Wert muss größer oder gleich sein",
+      "TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Der Wert muss größer oder gleich sein",
+      "POLLING_INTERVAL_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Der Wert muss größer oder gleich sein",
       "WAITINGMESSAGE_REQUIRED": "Pflichtfeld",
       "WAITINGTITLE_REQUIRED": "Pflichtfeld",
-      "KEY_MAX_LENGTH": "Wert darf eine maximale Länge haben von {{max}} ",
+      "KEY_MAX_LENGTH": "Der Wert muss eine maximale Länge gleich {{max}} haben",
       "KEY_REQUIRED": "Pflichtfeld",
-      "WAITINGMESSAGE_MAX_LENGTH": "Wert darf eine maximale Länge haben von {{max}} ",
-      "WAITINGTITLE_MAX_LENGTH": "Wert darf eine maximale Länge haben von {{max}} ",
-      "RATINGSTARSNUMBER_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Wert muss größer oder gleich sein als",
-      "HEADER_OFFLINE_MAX_LENGTH": "Wert darf eine maximale Länge haben von {{max}} ",
-      "OFFLINE_CHAT_BUTTON_MAX_LENGTH": "Wert darf eine maximale Länge haben von {{max}} ",
-      "CLOSINGQUESTION_MAX_LENGTH": "Wert darf eine maximale Länge haben von {{max}} ",
-      "TEXT_MAX_LENGTH": "Wert darf eine maximale Länge haben von {{max}} ",
+      "WAITINGMESSAGE_MAX_LENGTH": "Der Wert muss eine maximale Länge gleich {{max}} haben",
+      "WAITINGTITLE_MAX_LENGTH": "Der Wert muss eine maximale Länge gleich {{max}} haben",
+      "RATINGSTARSNUMBER_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Der Wert muss kleiner oder gleich sein",
+      "HEADER_OFFLINE_MAX_LENGTH": "Der Wert muss eine maximale Länge gleich {{max}} haben",
+      "OFFLINE_CHAT_BUTTON_MAX_LENGTH": "Der Wert muss eine maximale Länge gleich {{max}} haben",
+      "CLOSINGQUESTION_MAX_LENGTH": "Der Wert muss eine maximale Länge gleich {{max}} haben",
+      "TEXT_MAX_LENGTH": "Der Wert muss eine maximale Länge gleich {{max}} haben",
       "VALUE_REQUIRED": "Pflichtfeld",
-      "OFFLINEMESSAGESUBJECT_MAX_LENGTH": "Wert darf eine maximale Länge haben von {{max}} ",
-      "OFFLINEMESSAGEBODY_MAX_LENGTH": "Wert darf eine maximale Länge haben von {{max}} ",
-      "PLACEHOLDERMESSAGE_MAX_LENGTH": "Wert darf eine maximale Länge haben von {{max}} ",
-      "NOTETITLE_MAX_LENGTH": "Wert darf eine maximale Länge haben von {{max}} ",
-      "FORMSUBMITSUCCESSMESSAGE_MAX_LENGTH": "Wert darf eine maximale Länge haben von {{max}} ",
-      "FORMSUBMITFAILUREMESSAGE_MAX_LENGTH": "Wert darf eine maximale Länge haben von {{max}} ",
-      "FONTSIZE_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Wert muss größer oder gleich sein als",
+      "OFFLINEMESSAGESUBJECT_MAX_LENGTH": "Der Wert muss eine maximale Länge gleich {{max}} haben",
+      "OFFLINEMESSAGEBODY_MAX_LENGTH": "Der Wert muss eine maximale Länge gleich {{max}} haben",
+      "PLACEHOLDERMESSAGE_MAX_LENGTH": "Der Wert muss eine maximale Länge gleich {{max}} haben",
+      "NOTETITLE_MAX_LENGTH": "Der Wert muss eine maximale Länge gleich {{max}} haben",
+      "FORMSUBMITSUCCESSMESSAGE_MAX_LENGTH": "Der Wert muss eine maximale Länge gleich {{max}} haben",
+      "FORMSUBMITFAILUREMESSAGE_MAX_LENGTH": "Der Wert muss eine maximale Länge gleich {{max}} haben",
+      "FONTSIZE_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Der Wert muss größer oder gleich sein",
       "FONTSIZE_REQUIRED": "Pflichtfeld",
       "COMMAND_REQUIRED": "Pflichtfeld",
-      "AGENT_TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Wert muss größer oder gleich sein als",
+      "AGENT_TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Der Wert muss größer oder gleich sein",
       "NAME_MUST_VALID_PATTERN": "Falsches Format",
-      "TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Wert muss größer oder gleich sein als",
-      "AGENT_TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Wert muss größer oder gleich sein als",
-      "WAITFORTHEASSIGNEDAGENT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Wert muss größer oder gleich sein als",
-      "WAITFORTHEASSIGNEDAGENT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Wert muss kleiner oder gleich sein als",
+      "TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Der Wert muss kleiner oder gleich sein",
+      "AGENT_TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Der Wert muss kleiner oder gleich sein",
+      "WAITFORTHEASSIGNEDAGENT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Der Wert muss größer oder gleich sein",
+      "WAITFORTHEASSIGNEDAGENT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Der Wert muss kleiner oder gleich sein",
       "WAITFORTHEASSIGNEDAGENT_REQUIRED": "Pflichtfeld",
-      "VERTICALPOSITION_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Wert muss größer oder gleich sein als",
-      "VERTICALPOSITION_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Wert muss kleiner oder gleich sein als",
+      "VERTICALPOSITION_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Der Wert muss größer oder gleich sein",
+      "VERTICALPOSITION_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Der Wert muss kleiner oder gleich sein",
       "VERTICALPOSITION_REQUIRED": "Pflichtfeld",
-      "CUSTOMERALIAS_MAX_LENGTH": "Wert darf eine maximale Länge haben von {{max}} ",
+      "CUSTOMERALIAS_MAX_LENGTH": "Der Wert muss eine maximale Länge gleich {{max}} haben",
       "TAG_REQUIRED": "Pflichtfeld",
-      "MESSAGEFONTSIZE_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Wert muss größer oder gleich sein als",
-      "MESSAGEFONTSIZE_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Wert muss kleiner oder gleich sein als",
+      "MESSAGEFONTSIZE_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Der Wert muss größer oder gleich sein",
+      "MESSAGEFONTSIZE_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Der Wert muss kleiner oder gleich sein",
       "MESSAGEFONTSIZE_REQUIRED": "Pflichtfeld",
       "AGENTALIAS_REQUIRED": "Pflichtfeld",
-      "AGENTTRANSFERTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Wert muss größer oder gleich sein als",
-      "AGENTTRANSFERTIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Wert muss kleiner oder gleich sein als",
+      "AGENTTRANSFERTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Der Wert muss größer oder gleich sein",
+      "AGENTTRANSFERTIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Der Wert muss kleiner oder gleich sein",
       "AGENTTRANSFERTIMEOUT_REQUIRED": "Pflichtfeld",
       "CUSTOMERALIAS_REQUIRED": "Pflichtfeld",
-      "QUEUETRANSFERTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Wert muss größer oder gleich sein als",
-      "QUEUETRANSFERTIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Wert muss kleiner oder gleich sein als",
+      "QUEUETRANSFERTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Der Wert muss größer oder gleich sein",
+      "QUEUETRANSFERTIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Der Wert muss kleiner oder gleich sein",
       "QUEUETRANSFERTIMEOUT_REQUIRED": "Pflichtfeld",
-      "SYSTEMALIAS_MAX_LENGTH": "Wert darf eine maximale Länge haben von {{max}} ",
+      "SYSTEMALIAS_MAX_LENGTH": "Der Wert muss eine maximale Länge gleich {{max}} haben",
       "SYSTEMALIAS_REQUIRED": "Pflichtfeld",
       "ACCESSKEYID_REQUIRED": "Pflichtfeld",
       "BOTNAME_REQUIRED": "Pflichtfeld",
       "PROJECTID_REQUIRED": "Pflichtfeld",
       "VIDAOOTOPIC_REQUIRED": "Pflichtfeld"
     },
-    "CM_FIELD": "Kontaktmanager-Feld",
-    "CHATPROACTIVEACTIONS": "Proaktive Anfragen",
-    "NEW_CHATPROACTIVEACTION": "Neue proaktive Anfrage",
-    "EDIT_CHATPROACTIVEACTION": "Proaktive Anfrage bearbeiten",
-    "DELETE_CHATPROACTIVEACTION": "Proaktive Anfrage löschen",
-    "ADD_CHATPROACTIVEACTION": "Proaktive Anfrage hinzufügen",
-    "NO_CHATPROACTIVEACTION_AVAILABLE": "Keine proaktiven Anfragen verfügbar",
+    "CM_FIELD": "Kontakt Manager Feld",
+    "CHATPROACTIVEACTIONS": "Proaktive Aktionen",
+    "NEW_CHATPROACTIVEACTION": "Neue proaktive Aktion",
+    "EDIT_CHATPROACTIVEACTION": "Proaktive Aktion bearbeiten",
+    "DELETE_CHATPROACTIVEACTION": "Proaktive Aktion löschen",
+    "ADD_CHATPROACTIVEACTION": "Proaktive Aktion hinzufügen",
+    "NO_CHATPROACTIVEACTION_AVAILABLE": "Keine proaktiven Aktionen verfügbar",
     "NO_OFFLINEMESSAGE_AVAILABLE": "Keine Offline-Nachrichten verfügbar",
-    "MOUSEOVER": "Mouse-Over",
+    "MOUSEOVER": "Maus über",
     "TIMEOUT": "Timeout",
     "TYPE": "Typ",
-    "SELECTOR": "Selektion",
+    "SELECTOR": "Wählschalter",
     "AGENT": "Agent",
     "GOTO": "Goto",
     "GOTOIF": "GotoIf",
     "QUEUE": "Warteschlange",
     "BUILDER": "Builder",
     "PREVIEW": "Vorschau",
-    "EDIT_AGENT": "Agenten bearbeiten",
+    "EDIT_AGENT": "Agent bearbeiten",
     "EDIT_QUEUE": "Warteschlange bearbeiten",
     "EDIT_GOTO": "Goto bearbeiten",
     "EDIT_GOTOIf": "GotoIf bearbeiten",
     "LIST": "Liste",
     "SNIPPET": "Snippet",
     "FORMS": "Formulare",
-    "UP": "Nach Oben",
-    "DOWN": "Nach Unten",
-    "COLLAPSE": "Einklappen",
-    "PROACTIVEACTIONS": "Proaktive Anfragen",
-    "DISPOSITIONS": "Qualifizierungen",
+    "UP": "Bis",
+    "DOWN": "Unten",
+    "COLLAPSE": "Zusammenklappen",
+    "PROACTIVEACTIONS": "Proaktive Aktionen",
+    "DISPOSITIONS": "Dispositionen",
     "WEBHOOKS": "WebHooks",
     "ACTIONS": "Aktionen",
     "FIDELITY": "Treue",
-    "APPEARANCE": "Darstellung",
+    "APPEARANCE": "Aussehen",
     "MAINCOLOR": "Hauptfarbe",
     "FOCUSCOLOR": "Fokusfarbe",
-    "BUTTONCOLOR": "Buttonfarbe",
+    "BUTTONCOLOR": "Tastenfarbe",
     "HEADERSHAPE": "Kopfzeilenform",
     "ANIMATION": "Animation",
     "DEFAULT": "Standard",
     "LABELS": "Labels",
     "HEADER_ONLINE": "Online-Kopfzeile",
     "ONLINE_MESSAGE": "Online Nachricht",
-    "NAME_TITLE": "Name Titel",
-    "USERNAME_PLACEHOLDER": "Platzhalter für Nutzernamen",
-    "EMAIL_TITLE": "E-Mail Titel",
-    "EMAIL_PLACEHOLDER": "Platzhalter für E-Mail Adresse",
-    "START_CHAT_BUTTON": "'Chat starten' Button",
-    "AGENTS_BUSY": "Agenten besetzt",
+    "NAME_TITLE": "Name Eingabebezeichnung",
+    "USERNAME_PLACEHOLDER": "Benutzername Eingabe Platzhalter",
+    "EMAIL_TITLE": "E-Mail-Eingabe Label",
+    "EMAIL_PLACEHOLDER": "Platzhalter für E-Mail-Eingabe",
+    "START_CHAT_BUTTON": "'Chat starten' Taste",
+    "AGENTS_BUSY": "Meldung für besetzte Agenten",
     "HEADER_OFFLINE": "Offline-Kopfzeile",
     "OFFLINE_MESSAGE": "Offline Nachricht",
-    "MESSAGE_TITLE": "Nachricht Titel",
-    "ENQUIRY_MESSAGE_PLACEHOLDER": "Platzhalter für Nachrichteneingabe",
-    "ENQUIRY_BUTTON": "Anfrage-Button",
+    "MESSAGE_TITLE": "Nachrichtenbezeichnung",
+    "ENQUIRY_MESSAGE_PLACEHOLDER": "Platzhalter für die Eingabe von Anfragenachrichten",
+    "ENQUIRY_BUTTON": "Anfrage-Taste Text",
     "RATING_MESSAGE": "Bewertungsnachricht",
-    "RATING_SEND": "Button Bewertung senden",
-    "RATING_SKIP": "Button Bewertung überspringen",
+    "RATING_SEND": "Bewertung Senden Tasten-Text",
+    "RATING_SKIP": "Bewertung Überspringen Tasten-Text",
     "ONLINE": "Online",
     "OFFLINE": "Offline",
-    "PROACTIVE": "Proaktiv",
+    "PROACTIVE": "Proaktive",
     "ACCEPT": "Akzeptieren",
-    "ACCEPTMETHOD": "Methode akzeptieren",
+    "ACCEPTMETHOD": "Methode",
     "ACCEPTURL": "URL akzeptieren",
     "REJECT": "Ablehnen",
     "REJECTMETHOD": "Methode ablehnen",
     "REJECTURL": "URL ablehnen",
-    "CLOSE": "Schließen",
+    "CLOSE": "Schliessen",
     "CLOSEMETHOD": "Methode schließen",
     "CLOSEURL": "URL schließen",
-    "EMBEDDING": "Einbetten",
+    "EMBEDDING": "Einbettung",
     "GENERAL": "Allgemein",
     "SELECTED": "Ausgewählte",
-    "SELECT_ALL": "Alles auswählen",
-    "SELECT_NONE": "Nichts auswählen",
+    "SELECT_ALL": "Alle auswählen",
+    "SELECT_NONE": "Wählen Sie \"Keine\"",
     "BACK": "Zurück",
     "HELP": {
-      "MAPKEY": "Das folgende Feld aus dem Kontaktmanager:",
-      "FROMKEY": "wird in dem Chat-Snippet wie folgt zugeordnet:",
-      "TOKEN": "Automatisch generierter Token zur Verwendung im Skript",
+      "MAPKEY": "Das folgende Motion Contact Manager-Feld:",
+      "FROMKEY": "Wird in Ihrem Motion Chat-Snippet wie folgt zugeordnet:",
+      "TOKEN": "Automatisch generiertes Token, das im Skript verwendet wird",
       "COPYSCRIPTTOCLIPBOARD": "Kopieren Sie den Skripttext und fügen Sie ihn in Ihre Website ein",
       "FORWARD_OFFLINE": "Sie können mehrere durch Kommas getrennte Adressen hinzufügen (z. B. john.doe@xcally.com, jane.miller@xcally.com)",
       "MOTIONADDRESS": "Das Feld muss das folgende Format haben: ≪protocol>://<IP-Adresse>[:<port>]. Beispiel: https://X.Y.Z.W",
       "MOTIONPROXY": "Das Feld muss das folgende Format haben: ≪Protocol>:// ≪IP-Adresse>: ≪port>]. Beispiel: https://X.Y.Z.W",
       "NAME": "Nur Zahlen, Buchstaben und Sonderzeichen (._) werden unterstützt.",
-      "LIST": "Liste für die Zuordnung aus dem Kontaktmanager",
+      "LIST": "Contact Manager-Liste, die zum Zuordnen von Kontakten verwendet wird",
       "KEY": "Website-Kurzname (5 Zeichen), der auf der Registerkarte \"Agent\" angezeigt wird",
-      "INTEVAL": "Wählen aus der Liste der verfügbaren Intervalle",
-      "TIMEZONE": "Zeitzone auswählen (Standard = lokale Zeitzone)",
-      "ENABLERATING": "Bewertung nach Chat durch Kunden aktivieren",
-      "ENABLEFEEDBACK": "Feedback nach Chat durch Kunden aktivieren (Max. 150 Zeichen)",
-      "FORWARDTRANSCRIPT": "Chatprotokoll nach Abschluss per E-Mail senden",
-      "AUTOCLOSE": "Aktivieren Sie diese Option, wenn Chat-Sitzungen als nicht bearbeitet geschlossen werden sollen, sofern kein Agent verfügbar ist.",
-      "ENABLEUNMANAGEDNOTE": "Automatische Nachricht an den Kunden, wenn alle Agenten besetzt sind und somit der Chat nicht verfügbar ist",
-      "ENABLECUSTOMERWRITING": "Legt fest, ob der Kunde bereits im Chat schreiben kann, bevor ein Agent den Chat entgegen nimmmt. Hinweis: Dadurch kein Status \"unbearbeitet\"",
-      "INTERVAL": "Bitte aus der Liste wählen",
+      "INTEVAL": "Wird aus der Liste der verfügbaren Intervalle ausgewählt",
+      "TIMEZONE": "Wählen Sie eine aus der Liste aus (Standard = lokale Zeitzone)",
+      "ENABLERATING": "Aktivieren Sie es, wenn Sie möchten, dass der Webbesucher die Interaktion am Ende bewerten kann",
+      "ENABLEFEEDBACK": "Aktivieren Sie es, wenn Sie möchten, dass der Webbesucher am Ende ein Feedback (bis zu 150 Zeichen) senden kann",
+      "FORWARDTRANSCRIPT": "Aktivieren Sie diese Option, wenn der Webbesucher aufgefordert wird, ein Chat-Protokoll per E-Mail zu erhalten",
+      "AUTOCLOSE": "Aktivieren Sie diese Option, wenn Chat-Sitzungen als nicht verwaltet geschlossen werden sollen, wenn kein Agent verfügbar ist. Weitere Informationen finden Sie unter: https://wiki.xcallymotion.com/display/XMV/Chat+Websites#ChatWebsites-Snippet",
+      "ENABLEUNMANAGEDNOTE": "Aktivieren Sie diese Option, wenn dem Besucher eine Nachricht angezeigt werden soll, wenn alle Agenten besetzt sind und der Chat nicht mehr verwaltet wird",
+      "ENABLECUSTOMERWRITING": "Aktivieren Sie es, wenn der Chat gestartet werden soll, ohne auf einen verfügbaren Agenten zu warten (Achtung: Wenn Sie ihn aktivieren, werden Ihre Chats niemals nicht verwaltet). Weitere Informationen finden Sie unter: https://wiki.xcallymotion.com/display/XMV/ Chat + Websites # ChatWebsites-Snippet ",
+      "INTERVAL": "Wählen Sie eins aus der Liste aus",
       "HIDEWHENOFFLINE": "Snippet ausblenden, wenn offline",
-      "AGENTIDENTIFIER": "Agentenkennung innerhalb der Chat-Sitzung im Snippet",
+      "AGENTIDENTIFIER": "Repräsentiert die Agentenkennung innerhalb der Chat-Sitzung im Snippet",
       "WEBSITEALIAS": "Ein Präfix, mit dem der Agentenname (Präfix + Agenten-ID) erstellt wird, der dem Webbesucher während der Chat-Sitzung angezeigt wird",
-      "VERTICALPOSITION": "Prozentualer Abstand in Prozent vom oberen Bildschirmrand",
-      "WELCOMEMESSAGE": "Leer lassen, um keine Nachricht zu senden",
-      "MANDATORYDISPOSITION": "Qualifizierung erforderlich",
-      "MANDATORYDISPOSITIONPAUSEID": "PausenID bei erforderlicher Qualifizierung"
+      "VERTICALPOSITION": "Stellt den Abstand in Prozent von oben dar",
+      "WELCOMEMESSAGE": "Lassen Sie das Feld leer, wenn Sie keine Willkommensnachricht senden möchten",
+      "MANDATORYDISPOSITION": "Obligatorische Disposition",
+      "MANDATORYDISPOSITIONPAUSEID": "Pausieren Sie die Verwendung, wenn die obligatorische Disposition aktiviert ist"
     },
     "ADDRESS": "Adresse",
     "ONLINESTATE": "Online Status",
     "RATINGSTATE": "Bewertungsstatus",
     "ENQUIRY": "Anfrage",
     "OFFLINETEMPLATE": "Offline Vorlage",
-    "CHATDISPOSITIONS": "Chat-Qualifizierungen",
-    "NO_CHATDISPOSITION_AVAILABLE": "Keine Qualifizierung verfügbar",
-    "ADD_CHATDISPOSITION": "Qualifizierung hinzufügen",
+    "CHATDISPOSITIONS": "Chat-Dispositionen",
+    "NO_CHATDISPOSITION_AVAILABLE": "Keine Chat-Dispositionen verfügbar",
+    "ADD_CHATDISPOSITION": "Chat Disposition hinzufügen",
     "DELETE": "Löschen",
-    "EDIT_CHATDISPOSITION": "Qualifizierung bearbeiten",
-    "DELETE_CHATDISPOSITION": "Qualifizierung löschen",
+    "EDIT_CHATDISPOSITION": "Chat-Disposition bearbeiten",
+    "DELETE_CHATDISPOSITION": "Chat-Disposition löschen",
     "CHAT": "Chat",
     "ID": "ID",
     "NEW_CHATQUEUE": "Neue Chat-Warteschlange",
     "NEW_CHATWEBSITE": "Neue Chat-Website",
-    "ROUNDED": "Rundes Design",
-    "SQUARED": "Eckiges Design",
-    "NO_AVAILABLE_INFO": "Keine Informationen verfügbar",
+    "ROUNDED": "Abgerundet",
+    "SQUARED": "Quadratisch",
+    "NO_AVAILABLE_INFO": "Keine verfügbaren Info",
     "ALL_TEAMS": "Alle Teams",
     "SELECTED_TEAMS": "Ausgewählte Teams",
     "PAGE": "Seite",
     "ROWSPERPAGE": "Zeilen pro Seite",
-    "OF": "von",
+    "OF": "Von",
     "CONTACT": "Kontakt",
     "STARTEDAT": "Gestartet am",
     "STATUS": "Status",
     "CLOSED": "Geschlossen",
-    "OPENED": "Geöffnet",
-    "OPEN": "Offen",
+    "OPENED": "Öffnen",
+    "OPEN": "Öffnen",
     "ACCOUNT": "Konto",
     "INTERACTION": "Interaktion",
     "INTERACTIONS": "Interaktionen",
     "WEBSITE": "Website",
-    "ALL": "Alles",
-    "SELECT_STATUS": "Status auswählen",
+    "ALL": "Alle",
+    "SELECT_STATUS": "Wählen Sie einen Status",
     "FILTER": "Filter",
     "FILTERS": "Filter",
     "TEAMADD_CHATQUEUE": "Team zur Chat-Warteschlange hinzufügen",
-    "AGENTADD_CHATQUEUE": "Agenten zur Chat-Warteschlange hinzufügen",
+    "AGENTADD_CHATQUEUE": "Agent zur Chat-Warteschlange hinzufügen",
     "ALL_AGENTS": "Alle Agenten",
     "SELECTED_AGENTS": "Ausgewählte Agenten",
     "CLOSEDAT": "Geschlossen am",
-    "DISPOSITION": "Qualifizierung",
+    "DISPOSITION": "Disposition",
     "CREATEDAT": "Erstellt am",
     "NOTES": "Notizen",
     "NO_INTERACTION_AVAILABLE": "Keine Interaktionen verfügbar",
-    "SELECTED_WEBSITE": "Ausgewählte Webseite",
+    "SELECTED_WEBSITE": "Wählen Sie eine Website",
     "GOTOP": "Gotop",
     "EDIT_GOTOP": "Gotop bearbeiten",
-    "SELECT_WEBSITE": "Webseite auswählen",
+    "SELECT_WEBSITE": "Wählen Sie eine Website",
     "INFO": "Info",
     "OFFLINEMESSAGES_CHATWEBSITE": "Zu Offline-Nachrichten gehen",
-    "WAITINGTITLE": "Titel während Warten",
-    "WAITINGMESSAGE": "Wartenachricht",
+    "WAITINGTITLE": "Wartetitel",
+    "WAITINGMESSAGE": "Wartende Nachricht",
     "RATING": "Bewertung",
     "NO_RATINGVALUE": "Keine Bewertung",
-    "AGENTSADD_QUEUE": "Agenten zur Chat-Warteschlange hinzufügen",
+    "AGENTSADD_QUEUE": "Agent zur Chat-Warteschlange hinzufügen",
     "QUEUES": "Warteschlangen",
     "LOGGED_IN": "Angemeldet",
-    "PAUSED": "in Pause",
+    "PAUSED": "Pausiert",
     "READY": "Bereit",
-    "WAITING": "Wartezustand",
-    "WRITING": "am Schreiben",
+    "WAITING": "Warten",
+    "WRITING": "Schreiben",
     "MAIL": "E-Mail",
     "SMS": "SMS",
-    "OPENCHANNEL": "Offener Kanal",
+    "OPENCHANNEL": "Openchannel",
     "FAX": "Fax",
     "PAUSE": "Pause",
     "REALTIME": "Echtzeit",
     "AGENTS": "Agenten",
     "FULLNAME": "Vollständiger Name",
-    "INTERNAL": "Intern",
+    "INTERNAL": "Interne",
     "PHONE_STATE": "Telefonstatus",
     "PHONE_STATUS": "Telefonstatus",
     "LOGOUT": "Abmelden",
     "UNPAUSE": "Pause beenden",
-    "AGENTADD_QUEUE": "Agenten zur Chat-Warteschlange hinzufügen",
+    "AGENTADD_QUEUE": "Agent zur Chat-Warteschlange hinzufügen",
     "DEFAULT_PAUSE": "Standard Pause",
     "UNKNOWN": "Unbekannt",
-    "UNREGISTERED": "Nicht registriert",
+    "UNREGISTERED": "Unregistrierte",
     "UNAVAILABLE": "Nicht verfügbar",
     "NOT_INUSE": "Nicht in Verwendung",
     "REACHABLE": "Erreichbar",
-    "IN_USE": "In Verwendung",
-    "VOICE": "Anrufe",
+    "IN_USE": "Im Einsatz",
+    "VOICE": "Sprache",
     "NO_AGENT_ONLINE": "Kein Agent Online",
-    "GOTOREALTIME_CHATQUEUE": "Zur Echtzeit-Warteschlange für Chat gehen",
+    "GOTOREALTIME_CHATQUEUE": "Go to Echtzeit-Chat-Warteschlange",
     "PARTIALPAUSE": "Teilpause",
     "BUSY": "Besetzt",
     "TIMER": "Timer",
     "CAPACITY": "Kapazität",
     "TAGS": "Tags",
     "SHOWAGENTAVATAR": "Persönlichen Agenten-Avatar anzeigen",
-    "AGENTAVATAR": "Agenten-Avatar",
-    "SPYINTERACTION": "Mitlesen",
+    "AGENTAVATAR": "Agent Avatar",
+    "SPYINTERACTION": "Spion",
     "INTERACTIONS_CHATWEBSITE": "Zu den Interaktionen gehen",
     "REFRESH_INTERACTIONS": "Interaktionen aktualisieren",
-    "CLOSINGQUESTION": "Abschlussfrage",
+    "CLOSINGQUESTION": "Frage schließen",
     "WEBSCRIPT": "Webskript",
-    "NO_CHATCANNEDANSWER_AVAILABLE": "Keine Textvorlagen verfügbar",
-    "NEW_CHATCANNEDANSWER": "Neue Textvorlage",
-    "ADD_CHATCANNEDANSWER": "Textvorlage hinzufügen",
-    "EDIT_CHATCANNEDANSWER": "Textvorlage bearbeiten",
-    "DELETE_CHATCANNEDANSWER": "Textvorlage löschen",
-    "OFFLINEMESSAGESUBJECT": "Betreff der Nachricht bei Offline",
-    "OFFLINEMESSAGEBODY": "Test der Nachricht bei Offline",
-    "FORMSUBMITSUCCESSMESSAGE": "Meldung Formular erfolgreich gesendet",
-    "FORMSUBMITFAILUREMESSAGE": "Meldung Fehler beim Senden des Formulars",
-    "PLACEHOLDERMESSAGE": "Nachricht für Platzhalter",
+    "NO_CHATCANNEDANSWER_AVAILABLE": "Keine vordefinierten Antworten verfügbar",
+    "NEW_CHATCANNEDANSWER": "Neue vordefinierte Antwort",
+    "ADD_CHATCANNEDANSWER": "Vordefinierte Antwort hinzufügen",
+    "EDIT_CHATCANNEDANSWER": "Vordefinierte Antwort bearbeiten",
+    "DELETE_CHATCANNEDANSWER": "Vordefinierte Antwort löschen",
+    "OFFLINEMESSAGESUBJECT": "Betreff der Nachricht",
+    "OFFLINEMESSAGEBODY": "Nachrichtentext",
+    "FORMSUBMITSUCCESSMESSAGE": "Erfolgsmeldung beim Absenden des Formulars",
+    "FORMSUBMITFAILUREMESSAGE": "Fehlermeldung beim Absenden des Formulars",
+    "PLACEHOLDERMESSAGE": "Platzhalter für Nachrichten",
     "NOTETITLE": "Titel der Notiz",
     "DELETE_INTERACTION": "Interaktion löschen",
     "FONTSIZE": "Schriftgröße",
     "TEXTCOLOR": "Textfarbe",
-    "COMMAND": "Eingabe",
+    "COMMAND": "Befehl",
     "EDIT_SYSTEM": "System bearbeiten",
     "SYSTEM": "System",
     "NOTIFICATION": "Benachrichtigung",
     "NOTIFICATIONSHAKE": "Schütteln",
-    "NOTIFICATIONSOUND": "Klingeln",
+    "NOTIFICATIONSOUND": "Ton",
     "NOTIFICATIONTEMPLATE": "Vorlage",
-    "HIDEWHENOFFLINE": "Ausblenden, wenn offline",
-    "INSERT_MESSAGE_HERE": "Nachricht hier eingeben",
+    "HIDEWHENOFFLINE": "Ausblenden",
+    "INSERT_MESSAGE_HERE": "Fügen Sie hier Ihre Textnachricht ein",
     "AGENTALIAS": "Agent Alias",
     "AGENTFULLNAME": "Vollständiger Name des Agenten",
     "AGENTIDENTIFIER": "Identifikator",
-    "WAITFORTHEASSIGNEDAGENT": "Warten auf den zugewiesenen Mitarbeiter",
+    "WAITFORTHEASSIGNEDAGENT": "Warten auf den zugewiesenen Agenten",
     "ALIGNMENT": "Ausrichtung",
     "BOTTOM_RIGHT": "Unten rechts",
     "LEFT": "Links",
     "CUSTOMERALIAS": "Kunden-Alias",
     "EDIT_TAG": "Tag bearbeiten",
     "TAG": "Tag",
-    "AGENTADD_CHATWEBSITE": "Agenten zur Chat-Website hinzufügen",
+    "AGENTADD_CHATWEBSITE": "Agent zur Chat-Website hinzufügen",
     "BACKGROUNDCOLOR": "Hintergrundfarbe",
     "MESSAGEFONTSIZE": "Schriftgröße der Nachricht",
     "AGENTTRANSFER": "Agententransfer",
     "DIALOGFLOW": "Dialogflow",
     "EDIT_DIALOGFLOW": "Dialogflow bearbeiten",
     "LANGUAGE": "Sprache",
-    "QUEUETRANSFER": "Transfer in Warteschlange",
+    "QUEUETRANSFER": "Warteschlangenübertragung",
     "QUEUETRANSFERTIMEOUT": "Timeout bei der Warteschlangenübertragung",
     "SYSTEMALIAS": "Systemalias",
     "SYSTEMAVATAR": "System-Avatar",
     "TRANSFER": "Transfer",
     "WELCOMEMESSAGE": "Willkommensnachricht",
-    "ENABLECUSTOMERCHECKMARKS": "Bestätigung Nachricht erhalten/gelesen",
-    "CANNEDANSWERS": "Textvorlagen",
-    "CHATCANNEDANSWERS": "Textvorlagen",
+    "ENABLECUSTOMERCHECKMARKS": "Aktivieren vom Kunden gelieferten / gelesenen Benachrichtigungen",
+    "CANNEDANSWERS": "Vordefinierte Antworten",
+    "CHATCANNEDANSWERS": "Vordefinierte Antworten",
     "DOWNLOAD_INTERACTION": "Herunterladen",
-    "LOGIN_TIME": "Zeit angemeldet",
-    "PAUSE_TIME": "Zeit in Pause",
+    "LOGIN_TIME": "Login-Zeit",
+    "PAUSE_TIME": "Pausenzeit",
     "ACCESSKEYID": "Zugangsschlüssel-ID",
-    "BOTNAME": "Botname",
+    "BOTNAME": "Bot-Name",
     "EDIT_AMAZONLEX": "Amazon Lex bearbeiten",
     "LEXREGION": "Region",
     "SECRETACCESSKEY": "Geheimer Zugangsschlüssel",
-    "TEAMS_ASSOCIATION": "Teamzuweisung",
-    "MANDATORYDISPOSITION": "Qualifizierung erforderlich",
-    "MANDATORYDISPOSITIONPAUSEID": "PausenID, wenn Qualifizierung erforderlich",
-    "ENABLESENDBUTTON": "Senden-Button aktivieren",
+    "TEAMS_ASSOCIATION": "Teams Verband",
+    "MANDATORYDISPOSITION": "Obligatorische Disposition",
+    "MANDATORYDISPOSITIONPAUSEID": "Pausieren Sie die Verwendung, wenn die obligatorische Disposition aktiviert ist",
+    "ENABLESENDBUTTON": "Sendetaste aktivieren",
     "FEEDBACKTITLE": "Feedback-Titel",
-    "TOOLTIP_SCREENRECORDING_OFF": "Bildschirmaufzeichnung verfügbar",
-    "TOOLTIP_SCREENRECORDING_ON": "Bildschirmaufzeichnung läuft",
+    "TOOLTIP_SCREENRECORDING_OFF": "Bildschirmaufnahme verfügbar",
+    "TOOLTIP_SCREENRECORDING_ON": "Bildschirmaufnahme läuft",
     "DOWNLOAD_WITHOUT_ATTACHMENTS": "Herunterladen ohne Anhänge",
-    "DOWNLOAD_WITH_ATTACHMENTS": "Herunterladen inkl. Anhänge",
+    "DOWNLOAD_WITH_ATTACHMENTS": "Mit Anhängen herunterladen",
     "LASTMESSAGE": "Letzte Nachricht",
     "VIDAOO": "Vidaoo",
     "VIDAOOAPIKEY": "Vidaoo Api Key",
     "CLIENTEMAIL": "Kunden-E-Mail",
     "DIALOGFLOWV2": "Dialogflow V2",
     "EDIT_DIALOGFLOWV2": "Dialogflow V2 bearbeiten",
-    "PRIVATEKEY": "Privater Schlüssel",
+    "PRIVATEKEY": "Privat Key",
     "PROJECTID": "Projekt-ID",
     "EMAIL_ACCOUNT": "Email-Konto",
     "OPEN_NEW_INTERACTION": "Neue Interaktion öffnen",
-    "SUBJECT": "Betreff",
+    "SUBJECT": "Gegenstand",
     "ADD_NOTE": "Notiz hinzufügen",
-    "CANNED_ANSWER_NOT_FOUND": "Keine Textvorlagen gefunden",
-    "NOTE": "Notiz",
+    "CANNED_ANSWER_NOT_FOUND": "Es wurden keine vordefinierten Antworten gefunden",
+    "NOTE": "Hinweis",
     "VIDAOOMETADATA": "Vidaoo-Metadaten",
     "VIDAOONOTE": "Vidaoo-Hinweis",
     "VIDAOOTOPIC": "Vidaoo-Thema"
index 3c27f23..da8b00a 100644 (file)
@@ -1,8 +1,8 @@
 {
   "CONTACTMANAGER": {
-    "VOICEQUEUEID": "ID Warteschlange für Sprachanrufe",
-    "CAMPAIGNID": "Kampagnen-ID",
-    "STATE": "Status",
+    "VOICEQUEUEID": "Sprachwarteschlange ID",
+    "CAMPAIGNID": "Kampagne ID",
+    "STATE": "Zustand",
     "NAME": "Name",
     "LISTS": "Listen",
     "UNIQUEID": "Eindeutige ID",
@@ -11,8 +11,8 @@
     "ENDTIME": "Endzeit",
     "MOTION_BULL": "Motion Bull",
     "HOPPER": "Hopper",
-    "FINAL": "Hopper final",
-    "HISTORY": "Hopper historisch",
+    "FINAL": "Hopper Final",
+    "HISTORY": "Hopper Geschichte",
     "SCHEDULEDAT": "Geplant am",
     "SEARCH_FOR_ANYONE": "Suche",
     "EDIT_LIST": "Liste bearbeiten",
     "DELETE_HOPPER": "Hopper löschen",
     "RELOAD": "Neu laden",
     "NO_COMPANIES": "Kein Unternehmen",
-    "NO_AVAILABLE_ITEMS": "Keine Einträge verfügbar",
+    "NO_AVAILABLE_ITEMS": "Keine verfügbaren Artikel",
     "ADD": "Hinzufügen",
     "ERRORS": {
-      "NAME_REQUIRED": "Name ist erforderlich",
-      "FIRSTNAME_REQUIRED": "Vorname ist erforderlich",
-      "PHONE_REQUIRED": "Telefonnummer ist erforderlich",
+      "NAME_REQUIRED": "Der Name ist erforderlich",
+      "FIRSTNAME_REQUIRED": "Der Vorname ist erforderlich",
+      "PHONE_REQUIRED": "Die Telefonnummer ist erforderlich",
       "ALIAS_REQUIRED": "Alias ist erforderlich",
-      "VALUE_REQUIRED": "Wert ist erforderlich",
+      "VALUE_REQUIRED": "Der Wert ist erforderlich",
       "EMAIL_MUST_VALID": "Falsches Format",
-      "PHONEBAR_API": "Statusprüfung für die MotionBar und des Remote-Switches für den Agenten",
+      "PHONEBAR_API": "Prüfen, ob die MotionBar ausgeführt wird und der Fernbedienungsschalter für den Agenten eingeschaltet ist",
       "ACTIONTYPE_REQUIRED": "Pflichtfeld",
       "CLICKTOACTION_REQUIRED": "Pflichtfeld"
     },
     "DESCRIPTION": "Beschreibung",
-    "DISPOSITION": "Qualifizierung",
-    "DISPOSITIONS": "Qualifizierungen",
-    "VOICEDISPOSITIONS": "Anrufqualifizierungen",
-    "NEW_VOICEDISPOSITION": "Neue Anrufqualifizierung",
+    "DISPOSITION": "Disposition",
+    "DISPOSITIONS": "Dispositionen",
+    "VOICEDISPOSITIONS": "Sprachdispositionen",
+    "NEW_VOICEDISPOSITION": "Neue Sprachdisposition",
     "CUSTOM_FIELDS": "Benutzerdefinierte Felder",
     "ADD_LIST": "Liste hinzufügen",
     "BACK": "Zurück",
     "SELECTED": "Ausgewählt",
-    "SELECT_ALL": "Alles auswählen",
-    "SELECT_NONE": "Nichts auswählen",
+    "SELECT_ALL": "Alle auswählen",
+    "SELECT_NONE": "Keine auswählen",
     "COMPANIES": "Unternehmen",
     "EDIT_COMPANY": "Unternehmen bearbeiten",
     "DELETE_COMPANY": "Unternehmen löschen",
@@ -76,7 +76,7 @@
     "STREET": "Straße",
     "POSTALCODE": "Postleitzahl",
     "DELETE": "Löschen",
-    "DELETE_ALL": "Alles Löschen",
+    "DELETE_ALL": "Alle Löschen",
     "CONTACTMANAGER": "Kontaktmanager",
     "ID": "ID",
     "SETTINGS": "Einstellungen",
     "NEW_CONTACT": "Neuer Kontakt",
     "NEW_TAG": "Neuer Tag",
     "UPLOAD_CONTACTS": "Kontakte hochladen",
-    "FINISH": "Beenden",
-    "SUCCESS": "Erfolg",
+    "FINISH": "Fertig",
+    "SUCCESS": "Erfolgreich",
     "FAILURE": "Fehler",
     "ALL_CONTACTS": "Alle Kontakte",
     "NEW_CUSTOMFIELD": "Neues benutzerdefiniertes Feld",
-    "NO_VOICEDISPOSITION_AVAILABLE": "Keine Anrufqualifizierung verfügbar",
-    "ADD_VOICEDISPOSITION": "Anrufqualifizierung hinzufügen",
-    "EDIT_VOICEDISPOSITION": "Anrufqualifizierung bearbeiten",
-    "DELETE_VOICEDISPOSITION": "Anrufqualifizierung löschen",
-    "VAT": "Ust-ID.",
-    "COMPANYID": "Unternehmens-ID",
+    "NO_VOICEDISPOSITION_AVAILABLE": "Keine Sprachdispositionen verfügbar",
+    "ADD_VOICEDISPOSITION": "Sprachdisposition hinzufügen",
+    "EDIT_VOICEDISPOSITION": "Sprachdisposition bearbeiten",
+    "DELETE_VOICEDISPOSITION": "Sprachdisposition löschen",
+    "VAT": "Mwst.",
+    "COMPANYID": "Ihre Unternehmens-ID",
     "WEBSITE": "Website",
     "EMAIL_DOMAIN": "E-Mail Domain",
     "ADDRESS": "Adresse",
     "GOTOCONTACTS_COMPANY": "Kontakte anzeigen",
     "ADD_AGENT_TO_LIST": "Agenten zur Liste hinzufügen",
     "AGENTADD_LIST": "Agenten zur Liste hinzufügen",
-    "NO_AVAILABLE_INFO": "Keine verfügbaren Informationen",
-    "NONE": "Nichts",
+    "NO_AVAILABLE_INFO": "Keine verfügbaren Info",
+    "NONE": "Keine",
     "FULLNAME": "Vollständiger Name",
-    "CHECK_DUPLICATES": "auf Duplikate prüfen",
+    "CHECK_DUPLICATES": "Duplikate prüfen",
     "DUPLICATES": "Duplikate",
-    "UPLOAD_CSV": "Hochladen von CSV-Datei",
+    "UPLOAD_CSV": "Hochladen von CSV",
     "TAG": "Tag",
     "UPLOAD": "Hochladen",
     "ALL_AGENTS": "Alle Agenten",
     "DATE_OF_BIRTH": "Geburtsdatum",
     "DATEOFBIRTH": "Geburtsdatum",
     "NOTES": "Notizen",
-    "EXPORTCSVCONTACTS_LIST": "In CSV-Datei exportieren",
+    "EXPORTCSVCONTACTS_LIST": "In CSV exportieren",
     "GOTO_LIST": "Kontakte anzeigen",
     "GOTO_COMPANY": "Kontakte anzeigen",
     "REQUIRED": "Erforderlich",
     "SESSIONS": "Sitzungen",
     "AGENT": "Agent",
     "PROJECT": "Projekt",
-    "SELECT_LIST": "Liste auswählen",
-    "SELECT_COMPANY": "Unternehmen auswählen",
-    "SELECT_TAGS": "Tags auswählen",
+    "SELECT_LIST": "Wählen Sie eine Liste aus",
+    "SELECT_COMPANY": "Wählen Sie ein Unternehmen aus",
+    "SELECT_TAGS": "Wählen Sie ein oder mehrere Tags aus",
     "HELP": {
-      "PHONEBAR_API": "Um Click-to-Call zu aktivieren, geben Sie eine Telefonnummer ein und überprüfen Sie, ob der Remote-Switch für den Agenten eingeschaltet ist",
-      "PHONEBAR_API_MESSAGE": "Um Click-to-Call zu aktivieren, geben Sie eine Telefonnummer ein und überprüfen Sie, ob der Remote-Switch für den Agenten eingeschaltet ist"
+      "PHONEBAR_API": "Um Click-to-Call zu aktivieren, geben Sie eine Telefonnummer ein und überprüfen Sie, ob der Fernbedienungsschalter für den Agenten eingeschaltet ist",
+      "PHONEBAR_API_MESSAGE": "Um Click-to-Call zu aktivieren, geben Sie eine Telefonnummer ein und überprüfen Sie, ob der Fernbedienungsschalter für den Agenten eingeschaltet ist"
     },
     "PAGE": "Seite",
     "ROWSPERPAGE": "Zeilen pro Seite",
-    "OF": "von",
+    "OF": "Von",
     "SOCIAL": "Social",
     "ROW": "Reihe",
-    "EXPORT_ERRORS": "Fehler-Log exportieren",
+    "EXPORT_ERRORS": "Fehler exportieren",
     "UPLOAD_COMPLETED": "Hochladen abgeschlossen",
     "STOP": "Stopp",
-    "SELECT_FILE": "Datei auswählen",
+    "SELECT_FILE": "Datei aussuchen",
     "IMPORT_CONTACTS": "Kontakte importieren",
     "MOTIONDIALER": "Motion Bull",
     "PREFIX": "Vorwahl wählen",
     "PRIORITY": "Priorität",
     "USERID": "Agent-ID abrufen",
-    "CUSTOMER_JOURNEY": "Kundenhistorie",
-    "SELECT_TAG": "Tag auswählen",
+    "CUSTOMER_JOURNEY": "Kundenreise",
+    "SELECT_TAG": "Wählen Sie Tags aus",
     "ALL": "Alle",
     "BILLINGINFORMATION": "Abrechnungsdaten",
     "COMPANY_FISCAL_TYPE": "Unternehmenssteuerart",
     "CREATE": "Erstellen",
     "EUROPE": "Europa",
-    "EXPIREDAY": "Ablauftag",
+    "EXPIREDAY": "Ablauftage",
     "FLATDISCOUNT": "Firmenrabatt",
     "INVOICEARTICLE": "Gesetzliche Artikel",
     "ISOCODE": "Nationaler ISO-Code",
     "RELATIONSHIPCOMPANY": " ... mit",
     "SDICODE": "SDI-Code",
     "SOCIAL_CAPITAL": "Aktienkapital",
-    "VATNUMBER_CF": "Umsatzsteuer Identnummer / VAT",
-    "RECALLME": "Rückruf anfordern",
+    "VATNUMBER_CF": "Codice Fiscale / VAT",
+    "RECALLME": "Ruf mich zurück",
     "ACTIONTYPE": "Aktionstyp",
-    "CLICKTOACTION": "Klicken für Aktion"
+    "CLICKTOACTION": "Zur Aktion klicken"
   }
 }
index dbfb7c7..df9fabe 100644 (file)
@@ -1,10 +1,10 @@
 {
   "DASHBOARDS": {
-    "HOME": "Startseite",
+    "HOME": "Home",
     "CHAT": "Chat",
-    "MAIL": "E-Mail",
-    "SMS": "SMS",
-    "OPENCHANNEL": "Offener Kanal",
+    "MAIL": "Email",
+    "SMS": "Sms",
+    "OPENCHANNEL": "Open Channel",
     "FAX": "Fax",
     "RATING": "Bewertung",
     "FEEDBACK": "Feedback",
     "AGENT": "Agent",
     "CREATED_AT": "Erstellt am",
     "CLOSED_AT": "Geschlossen am",
-    "DISPOSITION": "Qualifizierung",
+    "DISPOSITION": "Disposition",
     "CONTACT": "Kontakt",
     "INTERACTION": "Interaktion",
     "BROWSER_NAME": "Browser Name",
     "BROWSER_VERSION": "Browser Version",
-    "OS_NAME": "Betriebssystem Name",
-    "OS_VERSION": "Betriebssystem Version",
+    "OS_NAME": "Name des Betriebssystems",
+    "OS_VERSION": "Version des Betriebssystems",
     "DEVICE_MODEL": "Gerätemodell",
     "DEVICE_VENDOR": "Gerätehersteller",
     "DEVICE_TYPE": "Gerätetyp",
-    "RECALLME": "Rückruf anfordern",
-    "DROP_RATE": "Abbruchrate Anrufe",
+    "RECALLME": "Ruf mich zurück",
+    "DROP_RATE": "Abgebrochene Anrufrate",
     "DROPPED": "Abgebrochen",
-    "DROPPED_TEXT": "Abgebrochene Anrufe innerhalb der Warteschlange",
+    "DROPPED_TEXT": "Abgebrochene Anrufe aus der Warteschlange",
     "DETAIL": "Detail",
     "MOTION_BULL": "Motion Bull",
     "LIMITED": "Limitiert",
     "LIMITED_TEXT": "IVR-Kampagnen Anrufe getätigt/limitiert",
     "DASHBOARDS": "Dashboards",
-    "RECORDINGS": "Aufzeichnungen",
-    "TODAY_MOTION_BULL_STATS": "Tagesstatistiken Warteschlangen",
+    "RECORDINGS": "Aufnahmen",
+    "TODAY_MOTION_BULL_STATS": "Warteschlangen-Kampagnen Tagesstatistiken",
     "ORIGINATED": "Gewählt",
     "ORIGINATED_TEXT": "Anrufe aus der Warteschlange gewählt",
     "UPDATE": "Aktualisieren",
     "MORE": "Mehr",
     "MOTIONDIALER": "Motion Dialer",
-    "DISPOSE": "Qualifizieren",
+    "DISPOSE": "Entsorgen",
     "QUEUES": "Warteschlangen",
-    "DIALER_CALL": "Dialer-Anruf",
+    "DIALER_CALL": "Dialer Anruf",
     "ELAPSED_TIME": "Abgelaufene Zeit",
     "EDIT": "Bearbeiten",
     "MERGE": "Zusammenführen",
     "DUPLICATE": "Duplizieren",
     "UNIQUEID": "Eindeutige ID",
     "CAMPAIGN": "Kampagne",
-    "NONE": "Nichts",
+    "NONE": "Keine",
     "NAME": "Name",
     "ANSWER_MACHINE": "Anrufbeantworter",
     "INTERESTED": "Interessiert",
     "NOT_INTERESTED": "Kein Interesse",
     "PERSONAL_INFO": "Persönliche Infos",
     "SOLD": "Verkauft",
-    "SPECIAL": "Speziell",
+    "SPECIAL": "Spezielle",
     "BLACKLIST": "Blacklist",
-    "RESCHEDULE": "erneut Planen",
+    "RESCHEDULE": "Verschieben",
     "FIRSTNAME": "Vorname",
     "LASTNAME": "Nachname",
-    "MOBILE": "Mobilnummer",
+    "MOBILE": "Mobile",
     "DATE_OF_BIRTH": "Geburtsdatum",
     "COMPANY": "Unternehmen",
     "TAG": "Tag",
     "POSTALCODE": "Postleitzahl",
     "CUSTOM_FIELDS": "Benutzerdefinierte Felder",
     "GENERAL": "Allgemein",
-    "VOICE": "Sprachanrufe",
+    "VOICE": "Sprache",
     "TODAY_IVR_CAMPAIGNS_STATS": "IVR-Tagesstatistiken",
-    "TODAY_INBOUND_STATS": "Tagesstatistiken - eingehende Warteschlangen",
-    "TODAY_OUTBOUND_STATS": "Tagesstatistiken - ausgehende Warteschlangen",
-    "WAITING": "Anrufe in Warteschlange",
+    "TODAY_INBOUND_STATS": "Inbound Warteschlangen Tagesstatistiken",
+    "TODAY_OUTBOUND_STATS": "Outbound Warteschlangen Tagesstatistiken",
+    "WAITING": "Anrufe in der Warteschlange",
     "TALKING": "Im Gespräch",
-    "INBOUND_ANSWERED": "Angenommen eingehend",
-    "OUTBOUND_ANSWERED": "Angenommen ausgehend",
-    "ABANDONED": "Abgebrochen",
-    "TOTAL_OFFERED": "Gesamt angeboten",
+    "INBOUND_ANSWERED": "Angenommen",
+    "OUTBOUND_ANSWERED": "Angenommen",
+    "ABANDONED": "Verlassen",
+    "TOTAL_OFFERED": "Insgesamt",
     "AVG_HOLD_TIME": "Durchschnittliche Wartezeit",
-    "INBOUND_ANSWER_RATE": "Antwortrate eingehend",
-    "OUTBOUND_ANSWER_RATE": "Antwortrate ausgehend",
-    "ABANDON_RATE": "Abbruchrate",
-    "UNMANAGED": "Nicht bearbeitet",
-    "TOTAL": "Gesamt",
+    "INBOUND_ANSWER_RATE": "Angenommene Anrufrate",
+    "OUTBOUND_ANSWER_RATE": "Angenommene Anrufrate",
+    "ABANDON_RATE": "Verlassene Anrufrate",
+    "UNMANAGED": "Nicht verwaltete",
+    "TOTAL": "Insgesamt",
     "TOT_DURATION": "Gesamtdauer",
     "AVG_DURATION": "Durchschnittliche Dauer",
     "HELP": {
-      "ORIGINATEDLIMITED": "IVR Kampagnen gewählt/limitiert",
-      "DROPPED": "Gesamtzahl abgebrochener Anrufe innerhalb der Warteschlange",
-      "DROP_RATE": "Abbruchrate aller Anrufe in der Warteschlange",
-      "WAITING": "Gesamtzahl der wartenden Anrufe aus der Warteschlange",
-      "OUTBOUND_ANSWERED": "Gesamtzahl der angenommenen ausgehenden Anrufe",
-      "ABANDONED": "Gesamtzahl der abgebrochenen Anrufe innerhalb der Warteschlange",
-      "TOTAL_OFFERED": "Gesamtzahl der angebotenen Anrufe in der Warteschlange (angenommen + abgebrochen + nicht bearbeitet in der letzten Warteschlange des Callflows). Hinweis: Anrufe innerhalb der IVR werden nicht berücksichtigt.",
-      "AVG_HOLD_TIME": "Durchschnittliche Wartezeit einer Interaktion bis zur Beantwortung durch einen Agenten.",
-      "OUTBOUND_ANSWER_RATE": "Rate aller angenommenen ausgehenden Anrufe",
-      "ABANDON_RATE": "Rate aller abgebrochener Anrufe innerhalb der Warteschlange",
-      "UNMANAGED": "Gesamtzahl der nicht bearbeiteten Anrufe für alle Warteschlangen. Enthält die Anrufe, die durch Timeout, Joinempty, Leavewhenempty und Exitwithkey abgebrochen wurden (siehe Asterisk-Dokumentation für weitere Informationen).",
-      "TOTAL": "Gesamtzahl der ausgehenden Anrufe",
-      "TOT_DURATION": "Gesamtdauer aller ausgehenden Anrufe",
-      "AVG_DURATION": "Durchschnittliche Dauer aller angenommenen ausgehenden Anrufe",
-      "ORIGINATED": "Gesamtzahl der in den Warteschlangen-Kampagnen gewählten Anrufe",
-      "ABANDONED_RATE": "Rate aller abgebrochenen Interaktionen",
-      "AVG_MANAGED_TIME": "Durchschnittliche Bearbeitungszeit einer Interaktion",
-      "MANAGED": "Gesamtzahl der abgeschlossenen Interaktionen",
-      "MANAGED_RATE": "Rate aller bearbeiteten Anrufe",
-      "OPENED": "Gesamtzahl der aktiven Interaktionen",
-      "UNMANAGED_RATE": "Rate aller unbearbeiteten Interaktionen",
-      "VOICE_ABANDONED": "Gesamtzahl der abgebrochenen Anrufe in der Warteschlange unter Berücksichtigung aller vorhandenen Warteschlangen. Hinweis: Anrufe, die wegen Timeout und joinempty abgebrochen wurden, werden nicht berücksichtigt.",
-      "VOICE_ANSWERED": "Gesamtzahl der abgeschlossenen Anrufe für alle vorhandenen Warteschlangen",
-      "VOICE_ANSWER_RATE": "Antwortrate aller Anrufe in der Warteschlange",
-      "VOICE_AVG_HOLD_TIME": "Durchschnittliche Wartezeit bis zur Beantwortung durch einen Agenten für alle vorhandenen Warteschlangen",
-      "VOICE_AVG_TALK_TIME": "Durchschnittliche Gesprächszeit für alle Anrufe aus der Warteschlange ",
-      "VOICE_TALKING": "Gesamtzahl der aktiven Anrufe für alle vorhandenen Warteschlangen",
-      "VOICE_TOTAL_OFFERED": "Gesamtzahl der Anrufe der Warteschlangen (angenommen + abgebrochen + nicht bearbeitet in der letzten Warteschlange des Callflows). Hinweis: Anrufe innerhalb der IVR werden nicht berücksichtigt.",
-      "VOICE_UNMANAGED": "Gesamtzahl der nicht bearbeiteten Anrufe für alle vorhandenen Warteschlangen. Enthält die Anrufe, die durch Timeout, Joinempty, Leavewhenempty und Exitwithkey abgebrochen wurden (siehe Asterisk-Dokumentation für weitere Informationen).",
-      "VOICE_WAITING": "Gesamtanzahl der aktuell wartenden Anrufe für alle vorhandenen Warteschlangen",
-      "MANDATORY_DISPOSITION_ENABLED": "Kontaktqualifizierung erforderlich",
-      "EXACT_MATCH_FILTER": "Suche nach einer genauen Übereinstimmung der Suchbegriffe",
-      "LIKE_FILTER": "Suche nach variablen Übereinstimmungen der Suchbegriffe"
+      "ORIGINATEDLIMITED": "IVR Kampagnen gewählt/Limitiert",
+      "DROPPED": "Die Gesamtzahl abgebrochener Anrufe aus der Warteschlange",
+      "DROP_RATE": "Die Rate aller abgebrochener Anrufe aus der Warteschlange",
+      "WAITING": "Die Gesamtzahl der wartenden Anrufe aus der Warteschlange",
+      "OUTBOUND_ANSWERED": "Die Gesamtzahl der angenommenen ausgehenden Anrufe",
+      "ABANDONED": "Die Gesamtzahl der abgebrochenen Anrufe aus der Warteschlange",
+      "TOTAL_OFFERED": "Die Gesamtzahl der Warteschlangenanrufe (angenommen + verlassen + nicht verwaltet in der letzten Warteschlange des Datenflusses). Beachten Sie, dass Anrufe, die in ein IVR und nicht in eine Warteschlange eingehen, nicht berücksichtigt werden.",
+      "AVG_HOLD_TIME": "Die durchschnittliche Interaktionswartezeit, d.h. die durchschnittliche Wartezeit auf die Antwort eines Agenten für alle vorhandenen Interaktionen.",
+      "OUTBOUND_ANSWER_RATE": "Die Rate aller angenommenen ausgehenden Anrufe",
+      "ABANDON_RATE": "Die Rate aller verlassenen Anrufe aus der Warteschlange",
+      "UNMANAGED": "Die Gesamtzahl der nicht verwalteten Warteschlangenanfrufe für alle vorhandenen Warteschlangen. Es enthält die Anrufe, die durch Timeout, Joinempty, Leavewhenempty und Exitwithkey abgebrochen werden (siehe Asterisk-Dokumentation für weitere Informationen).",
+      "TOTAL": "Die Gesamtzahl der ausgehenden Anrufe",
+      "TOT_DURATION": "Die Gesamtdauer aller ausgehenden Anrufe",
+      "AVG_DURATION": "Die durchschnittliche Dauer aller angenommenen ausgehenden Anrufe",
+      "ORIGINATED": "Die Gesamtzahl der in den Warteschlangenkampagnen gewählten Anrufe",
+      "ABANDONED_RATE": "Die Rate aller abgebrochenen Interaktionen",
+      "AVG_MANAGED_TIME": "Die durchschnittliche verwaltete Interaktionszeit, nämlich die durchschnittliche Zeit, die während des Gesprächs verbracht wird",
+      "MANAGED": "Die Gesamtzahl der abgeschlossenen Interaktionen",
+      "MANAGED_RATE": "Die verwaltete Rate aller Interaktionen",
+      "OPENED": "Die Gesamtzahl der aktiven Interaktionen",
+      "UNMANAGED_RATE": "Die nicht verwaltete Rate aller Interaktionen",
+      "VOICE_ABANDONED": "Die Gesamtzahl der aufgegebenen Warteschlangenanrufe unter Berücksichtigung aller vorhandenen Warteschlangen. Beachten Sie, dass Anrufe, die wegen Timeout und joinempty abgebrochen werden, nicht berücksichtigt werden",
+      "VOICE_ANSWERED": "Die Gesamtzahl der abgeschlossenen Warteschlangenanrufe für alle vorhandenen Warteschlangen",
+      "VOICE_ANSWER_RATE": "Die Antwortrate aller Warteschlangenanrufe",
+      "VOICE_AVG_HOLD_TIME": "Die durchschnittliche Wartezeit für Warteschlangen, nämlich die durchschnittliche Wartezeit auf die Antwort eines Agenten für alle vorhandenen Warteschlangen",
+      "VOICE_AVG_TALK_TIME": "Die durchschnittliche Gesprächszeit in der Warteschlange, nämlich die durchschnittliche Gesprächszeit für alle vorhandenen Warteschlangen",
+      "VOICE_TALKING": "Die Gesamtzahl der aktiven Warteschlangenanrufe für alle vorhandenen Warteschlangen",
+      "VOICE_TOTAL_OFFERED": "Die Gesamtzahl der Warteschlangenanrufe (angenommen + verlassen + nicht verwaltet in der letzten Warteschlange des Datenflusses). Beachten Sie, dass Anrufe, die in ein IVR und nicht in eine Warteschlange eingehen, nicht berücksichtigt werden.",
+      "VOICE_UNMANAGED": "Die Gesamtzahl der nicht verwalteten Warteschlangenanfrufe für alle vorhandenen Warteschlangen. Es enthält die Anrufe, die durch Timeout, Joinempty, Leavewhenempty und Exitwithkey abgebrochen werden (siehe Asterisk-Dokumentation für weitere Informationen).",
+      "VOICE_WAITING": "Die Gesamtanzahl der wartenden Warteschlangenanrufe für alle vorhandenen Warteschlangen",
+      "MANDATORY_DISPOSITION_ENABLED": "Obligatorische Disposition für dieses Konto aktiviert",
+      "EXACT_MATCH_FILTER": "Suche nach einer genauen Übereinstimmung",
+      "LIKE_FILTER": "Suchen Sie nach dem angegebenen Muster"
     },
     "ERRORS": {
       "FIRSTNAME_REQUIRED": "Der erste Name ist erforderlich",
       "CAMPAIGN_REQUIRED": "Pflichtfeld",
       "FAILED_INITIALIZATION": "Fehler während der Initialisierung"
     },
-    "NO_AVAILABLE_INFO": "Keine Information vorhanden",
-    "WELCOME_TO_MOTION": "Willkommen zu Motion",
+    "NO_AVAILABLE_INFO": "Keine verfügbaren Info",
+    "WELCOME_TO_MOTION": "Willkommen bei Motion",
     "WELCOME_MESSAGE": "Verwenden Sie die linke Seitenleiste, um durch die verfügbaren Abschnitte zu navigieren",
     "ADD": "Hinzufügen",
-    "CONTACTMANAGER": "Kontaktmanager",
+    "CONTACTMANAGER": "Contact Manager",
     "DASHBOARD": "Dashboard",
     "EDIT_CONTACT": "Kontakt bearbeiten",
     "EMAIL": "E-Mail",
     "NEW_CONTACT": "Neuer Kontakt",
     "PHONE": "Telefon",
     "SAVE": "Speichern",
-    "INBOUND_WAITING_CALLS": "Wartende Anrufe (Eingehend)",
+    "INBOUND_WAITING_CALLS": "Eingehende Anrufe in der Warteschlange",
     "CONTACTS": "Kontakte",
     "MYCONTACTS": "Meine Kontakte",
     "ADD_CONTACT": "Kontakt hinzufügen",
-    "RELOAD": "Neu Laden",
+    "RELOAD": "Neu laden",
     "WAITING_TEXT": "Wartende Interaktionen",
-    "TALKING_TEXT": "Aktive Anrufe",
-    "INBOUND_ANSWERED_TEXT": "Angenommene Anrufe",
-    "ABANDONED_TEXT": "Abgebrochene Anrufe",
-    "DROP_RATE_TEXT": "Abbruchrate",
-    "TOTAL_OFFERED_TEXT": "Gesamt angebotene Interaktionen",
-    "AVG_HOLD_TIME_TEXT": "Durchschnittliche Wartezeit",
-    "AVG_TALK_TIME_TEXT": "Durchschnittliche Gesprächszeit",
-    "INBOUND_ANSWER_RATE_TEXT": "Antwortrate ",
-    "UNMANAGED_TEXT": "Nicht bearbeitete Interaktionen",
-    "TOTAL_TEXT": "Gesamt ausgehende Anrufe",
-    "OUTBOUND_ANSWERED_TEXT": "Beantwortete Anrufe (Ausgehend) ",
+    "TALKING_TEXT": "Aktive Anrufe in der Warteschlange",
+    "INBOUND_ANSWERED_TEXT": "Angenommene Anrufe in der Warteschlange",
+    "ABANDONED_TEXT": "Verlassene Anrufe in der Warteschlange",
+    "DROP_RATE_TEXT": "Rate abgebrochener Anrufe in der Warteschlange",
+    "TOTAL_OFFERED_TEXT": "Gesamtzahl der Interaktionen",
+    "AVG_HOLD_TIME_TEXT": "Durchschnittliche Wartezeit der Interaktionen",
+    "AVG_TALK_TIME_TEXT": "Gesprächszeit der Warteschlangenanrufe",
+    "INBOUND_ANSWER_RATE_TEXT": "Rate angenommener Anrufe in der Warteschlange ",
+    "UNMANAGED_TEXT": "Nicht verwaltete Interaktionen",
+    "TOTAL_TEXT": "Gesamtzahl ausgehender Anrufe",
+    "OUTBOUND_ANSWERED_TEXT": "Ausgehende angenommene Anrufe ",
     "TOT_DURATION_TEXT": "Gesamtdauer ausgehender Anrufe ",
     "AVG_DURATION_TEXT": "Durchschnittliche Dauer ausgehender Anrufe",
     "OUTBOUND_ANSWER_RATE_TEXT": "Rate angenommener ausgehender Anrufe",
     "PAGE": "Seite",
     "ROWSPERPAGE": "Zeilen pro Seite",
-    "OF": "von",
-    "REPLY_PLACEHOLDER": "Text eingeben und ENTER drücken zum Senden",
+    "OF": "Von",
+    "REPLY_PLACEHOLDER": "Geben Sie ein und drücken Sie die Eingabetaste, um eine Nachricht zu senden",
     "CONTACT_INFO": "Kontaktinformationen",
-    "CLOSE_AND_DISPOSE": "Schließen und Qualifizieren",
-    "DISPOSITIONS": "Qualifizierungen",
-    "CLOSE_WITHOUT_DISPOSE": "Schließen ohne Qualifizierung",
-    "ACCEPT": "Annehmen",
+    "CLOSE_AND_DISPOSE": "Schließen und Entsorgen",
+    "DISPOSITIONS": "Dispositionen",
+    "CLOSE_WITHOUT_DISPOSE": "Schließen ohne Entsorgen",
+    "ACCEPT": "Akzeptieren",
     "REJECT": "Ablehnen",
     "CLOSED": "Geschlossen",
-    "INFO": "Information",
+    "INFO": "Info",
     "NOTE": "Hinweis",
-    "ACCEPT_ELSEWHERE": "Von anderem Teilnehmer angenommen",
+    "ACCEPT_ELSEWHERE": "Anderswo akzeptiert",
     "ATTENTION": "Achtung",
     "SOCIAL": "Sozial",
     "NO_JSCRIPTY_PROJECTS_AVAILABLE": "Keine Jscripty-Projekte verfügbar",
     "FILTER": "Filter",
     "SELECT_STATUS": "Status auswählen",
     "SELECT_ACCOUNT": "Konto auswählen",
-    "SELECT_WEBSITE": "Webseite auswählen",
-    "ALL": "Alles",
+    "SELECT_WEBSITE": "Wählen Sie die Webseite",
+    "ALL": "Alle",
     "INTERACTIONS": "Interaktionen",
-    "STARTEDAT": "Begonnen am",
+    "STARTEDAT": "Gestartet am",
     "STATUS": "Status",
     "OPEN": "Öffnen",
-    "SHOW": "Anzeigen",
+    "SHOW": "Zeigen",
     "ME": "ICH",
     "NOT_ASSIGNED": "Nicht zugewiesen",
     "UNKNOWN": "Unbekannt",
-    "SELECT_USER": "Benutzer auswählen",
+    "SELECT_USER": "Wählen Sie einen Benutzer",
     "LAST_MESSAGE": "Letzte Nachricht",
     "USER": "Benutzer",
     "TAGS": "Tags",
     "SOURCE": "Quelle",
     "DESTINATION": "Ziel",
     "CALLERID": "Anrufer-ID",
-    "END_AT": "Beendet am",
+    "END_AT": "Ende am",
     "DURATION": "Dauer",
     "SHOW_DETAILS": "Details anzeigen",
     "HIDE_DETAILS": "Details ausblenden",
     "EXTERNAL_URL": "Externer Link",
     "SET_AS": "Festlegen als",
     "PENDING": "Ausstehend",
-    "CANNED_ANSWER_NOT_FOUND": "Keine Textbausteine gefunden",
-    "CANNED_ANSWER_SEARCH": "Hier nach einem Textbaustein suchen",
+    "CANNED_ANSWER_NOT_FOUND": "Es wurden keine vordefinierten Antworten gefunden",
+    "CANNED_ANSWER_SEARCH": "Geben Sie einen Text ein, um eine vordefinierte Antwort zu suchen",
     "NO_MAIL_ACCOUNTS_AVAILABLE": "Keine E-Mail-Konten verfügbar",
     "NO_FAX_ACCOUNTS_AVAILABLE": "Keine Fax-Konten verfügbar",
     "NO_SMS_ACCOUNTS_AVAILABLE": "Keine SMS-Konten verfügbar",
-    "FILTER_VOICE_QUEUES": "Anrufwarteschlangen filtern",
-    "LOADING_INTERACTION": "Interaktion wird geladen",
+    "FILTER_VOICE_QUEUES": "Sprachwarteschlangen filtern",
+    "LOADING_INTERACTION": "Wir laden die Interaktion ...",
     "JANUARY": "Januar",
     "FEBRUARY": "Februar",
     "MARCH": "März",
     "SELECT_DATE": "Datum auswählen",
     "SELECT_DATE_RANGE": "Wählen Sie einen Datumsbereich",
     "CLEAR": "Löschen",
-    "CALL_NUMBER": "Anrufen",
+    "CALL_NUMBER": "Anruf",
     "TRANSFER_NUMBER": "Transfer",
-    "CALL_SAVED": "Anruf erfolgreich gespeichert",
-    "CALL_DISPOSED": "Anruf erfolgreich qualifiziert",
-    "CHANNEL_WAITING_TEXT": "Wartende Interaktionen",
+    "CALL_SAVED": "Anruf richtig gespeichert",
+    "CALL_DISPOSED": "Anruf richtig entsorgt",
+    "CHANNEL_WAITING_TEXT": "Wartende Warteschlangen-Interaktionen",
     "CHANNEL_QUEUE": "Warteschlange",
-    "CHANNEL_FROM": "von",
+    "CHANNEL_FROM": "Von",
     "MARK_AS_UNREAD": "Als ungelesen markieren",
-    "SELECT_AGENT": "Agenten auswählen",
+    "SELECT_AGENT": "Wählen Sie den Agenten aus",
     "READ": "Gelesen",
-    "SELECT_READ_UNREAD": "Wählen ob Lesen/Ungelesen",
-    "SELECT_SUBSTATUS": "Zwischenstatus auswählen",
+    "SELECT_READ_UNREAD": "Wählen Sie Lesen/Ungelesen",
+    "SELECT_SUBSTATUS": "Wählen Sie Substatus",
     "UNREAD": "Ungelesen",
-    "ABANDONAT": "Abgebrochen",
-    "ABANDONEDQUEUECALLS": "Abgebrochene Anrufe",
+    "ABANDONAT": "Verlassen",
+    "ABANDONEDQUEUECALLS": "Verlassene Warteschlangenanrufe",
     "FREE": "Frei",
     "LASTASSIGNEDTO": "Zuletzt zugewiesen an",
     "QUEUE": "Warteschlange",
     "QUEUECALLEREXITAT": "Abgebrochen",
     "QUEUECALLEREXITREASON": "Grund",
     "RESERVED": "Reserviert",
-    "SELECT_CAMPAIGN": "Warteschlange auswählen",
+    "SELECT_CAMPAIGN": "Wählen Sie eine Warteschlange",
     "ASSIGNTO": "Zuweisen",
-    "CLICKRELOAD": "Verpasste Anrufe! Bitte Seite erneut laden",
+    "CLICKRELOAD": "Neue verlassene Anrufe! Bitte neu laden",
     "NOTAVAILABLE": "Nicht verfügbar",
-    "CURRENTLY_IN_USE_BY": "Derzeit verwendet von",
-    "CUSTOMER_JOURNEY": "Kundenhistorie",
+    "CURRENTLY_IN_USE_BY": "Derzeit im Einsatz von",
+    "CUSTOMER_JOURNEY": "Kundenreise",
     "NO_DATA_AVAILABLE": "Keine Daten verfügbar",
     "AGENTS": "Agenten",
     "TRANSFER": "Transfer",
-    "NO_DISPOSITION_SET": "Keine Qualifizierungen definiert",
-    "ABANDONED_RATE": "Abbruchrate",
-    "ABANDONED_RATE_TEXT": "Rate der abgebrochenen Anrufe innerhalb der Warteschlange",
-    "AVG_MANAGED_TIME": "Durchschnittliche Bearbeitungszeit",
-    "AVG_MANAGED_TIME_TEXT": "Durchschnittliche Bearbeitungszeit aller Interkationen",
-    "MANAGED": "Bearbeitet",
-    "MANAGED_RATE": "Bearbeitungsrate",
-    "MANAGED_RATE_TEXT": "Rate der bearbeiteten Interaktionen",
-    "MANAGED_TEXT": "Interaktionen bearbeitet",
-    "OPENED_TEXT": "Interaktionen geöffnet",
+    "NO_DISPOSITION_SET": "Keine Disposition festgelegt",
+    "ABANDONED_RATE": "Verlassene Rate",
+    "ABANDONED_RATE_TEXT": "Rate verlassener Interaktionen",
+    "AVG_MANAGED_TIME": " Durchschnittliche Verwaltungszeit",
+    "AVG_MANAGED_TIME_TEXT": "Durchschnittliche Verwaltungszeit der Interkationen",
+    "MANAGED": "Verwaltet",
+    "MANAGED_RATE": "Verwaltete Rate",
+    "MANAGED_RATE_TEXT": "Verwaltete Interaktionsrate",
+    "MANAGED_TEXT": "Verwaltete Interaktionen",
+    "OPENED_TEXT": "Geöffnete Interaktionen",
     "TODAY_INTERACTIONS_STATS": "Interaktionen Tagesstatistiken",
-    "UNMANAGED_RATE": "Rate nicht Bearbeitet",
-    "UNMANAGED_RATE_TEXT": "Rate der nicht bearbeiteten Interaktionen in der Warteschlange",
-    "VOICE_ABANDONED": "Abgebrochen",
-    "VOICE_ABANDONED_TEXT": "Abgebrochene Anrufe innerhalb der Warteschlange",
-    "VOICE_ABANDON_RATE": "Abbruchrate",
-    "VOICE_ABANDON_RATE_TEXT": "Rate der abgebrochenen Anrufe innerhalb der Warteschlange",
+    "UNMANAGED_RATE": "Nicht verwaltete Rate",
+    "UNMANAGED_RATE_TEXT": "Nicht verwaltete Interaktionsate",
+    "VOICE_ABANDONED": "Verlassen",
+    "VOICE_ABANDONED_TEXT": "Verlassene Warteschlangenanrufe",
+    "VOICE_ABANDON_RATE": "Verlassene Rate",
+    "VOICE_ABANDON_RATE_TEXT": "Rate verlassener Warteschlangenanrufe",
     "VOICE_ANSWERED": "Angenommen",
     "VOICE_ANSWERED_TEXT": "Angenommene Anrufe in der Warteschlange",
-    "VOICE_ANSWER_RATE": "Antwortrate",
+    "VOICE_ANSWER_RATE": "Angenommene Rate",
     "VOICE_ANSWER_RATE_TEXT": "Rate angenommener Anrufe in der Warteschlange",
     "VOICE_AVG_HOLD_TIME": "Durchschnittliche Wartezeit",
-    "VOICE_AVG_HOLD_TIME_TEXT": "Durchschnittliche Wartezeit aller Sprachanrufe",
+    "VOICE_AVG_HOLD_TIME_TEXT": "Queue ruft AVG HOLD TIME an",
     "VOICE_AVG_TALK_TIME": "Durchschnittliche Gesprächszeit",
-    "VOICE_AVG_TALK_TIME_TEXT": "Durchschnittliche Gesprächszeit aller Anrufe nach der Warteschleife",
+    "VOICE_AVG_TALK_TIME_TEXT": "Gesprächszeit der Anrufe in der Warteschlage",
     "VOICE_TALKING": "IM GESPRÄCH",
     "VOICE_TALKING_TEXT": "Aktive Anrufe in der Warteschlange",
-    "VOICE_TOTAL_OFFERED": "Gesamt angeboten",
-    "VOICE_TOTAL_OFFERED_TEXT": "Gesamtzahl der angebotenen Anrufe in der Warteschlange",
-    "VOICE_UNMANAGED": "Nicht bearbeitet",
-    "VOICE_UNMANAGED_TEXT": "Nicht bearbeitete Anrufe in der Warteschlange",
+    "VOICE_TOTAL_OFFERED": "Insgesamt",
+    "VOICE_TOTAL_OFFERED_TEXT": "Gesamtzahl der Anrufe in der Warteschlange",
+    "VOICE_UNMANAGED": "Nicht verwaltet",
+    "VOICE_UNMANAGED_TEXT": "Nicht verwaltete Anrufe in der Warteschlange",
     "VOICE_WAITING": "Wartende Anrufe",
     "VOICE_WAITING_TEXT": "Wartende Anrufe in der Warteschlange",
     "DOWNLOAD": "Herunterladen",
     "SCHEDULED_CALLS": "Geplante Anrufe",
-    "PRIVATE": "Persönlich",
+    "PRIVATE": "Privat",
     "PUBLIC": "Öffentlich",
-    "PUBLIC_INTERACTION": "Öffentliche Interaktion",
+    "PUBLIC_INTERACTION": "Die Interaktion ist öffentlich",
     "VISIBILITY": "Sichtbarkeit",
-    "INTERACTION_CLOSED": "Interaktion erfolgreich geschlossen",
-    "INTERACTION_CLOSED_DISPOSED": "Interaktion erfolgreich geschlossen und qualifiziert",
-    "INTERACTION_DISPOSED": "Interaktion erfolgreich qualifiziert",
-    "ASSIGNED_TO_OTHERS": "An Andere zugewiesen",
-    "SELECT_ALL": "Alles auswählen",
+    "INTERACTION_CLOSED": "Interaktion korrekt geschlossen",
+    "INTERACTION_CLOSED_DISPOSED": "Interaktion korrekt geschlossen und entsorgt",
+    "INTERACTION_DISPOSED": "Interaktion korrekt entsorgt",
+    "ASSIGNED_TO_OTHERS": "An andere zugewiesen",
+    "SELECT_ALL": "Alle auswählen",
     "CHAT_INTERACTIONS": "Chat-Interaktionen",
     "FAX_INTERACTIONS": "Fax-Interaktionen",
-    "ID": "ID",
+    "ID": "Id",
     "MAIL_INTERACTIONS": "E-Mail-Interaktionen",
-    "OPENCHANNEL_INTERACTIONS": "Offener-Kanal-Interaktionen",
+    "OPENCHANNEL_INTERACTIONS": "Open Channel-Interaktionen",
     "SMS_INTERACTIONS": "SMS-Interaktionen",
-    "CANCEL": "Abbrechen",
-    "DRAFT": "Entwurf speichern",
-    "DRAFT_SAVE_WARNING_MESSAGE": "Für diese Interaktion ist bereits ein Entwurf gespeichert. Möchten Sie diesen überschreiben?",
+    "CANCEL": "Stornieren",
+    "DRAFT": "Entwurf",
+    "DRAFT_SAVE_WARNING_MESSAGE": "Für diese Interaktion ist bereits ein Entwurf gespeichert. Sind Sie sicher, dass Sie ihn überschreiben möchten?",
     "DRAFT_SAVE_WARNING_TITLE": "Vorhandenen Entwurf überschreiben?",
     "OVERWRITE": "Überschreiben",
     "SAVE_AS_DRAFT": "Als Entwurf speichern",
     "UNTITLED": "Ohne Titel",
     "UPDATE_DRAFT": "Entwurf aktualisieren",
     "NO_AVAILABLE_INTERACTION": "Keine Interaktionen verfügbar",
-    "ACCOUNTINGDOC": "Abrechnungsdokumente",
+    "ACCOUNTINGDOC": "Buchhaltung",
     "ADD_PRODUCTPRICELIST": "PRODUKT HINZUFÜGEN",
     "AGENTFULLNAME": "Agent",
     "ALL_COMPANIES": "Alle Unternehmen",
-    "ALL_PRODUCTS": "Alles",
-    "ALL_STATUS": "Alles",
-    "ALL_STEP": "Alles",
+    "ALL_PRODUCTS": "Alle",
+    "ALL_STATUS": "Alle",
+    "ALL_STEP": "Alle",
     "ALL_WORKFLOW": "Alle Arbeitsabläufe",
     "ATTENDACELASTINVOICE": "Letzte Rechnung",
     "ATTENDACENEXTINVOICE": "Nächste Rechnung",
     "AUTHORIZED": "AUTORISIERT",
     "AUTOINVOICE": "SELBSTABRECHNUNG",
     "AUTOPROFORMA": "SELBST-PROFORMA",
-    "BALANCE": "SALDO",
+    "BALANCE": "BALANCE",
     "BY": "Durch",
     "CLONEPROFORMA": "Klon",
     "COMPANIES": "Unternehmen",
     "DOSSIERS": "Dossiers",
     "DOSSIER_INFO": "Information",
     "ENDDATE": "Ablaufdatum",
-    "FROM": "von",
+    "FROM": "Von",
     "GRAPHINVOICES": "Diagramm der Rechnungsemission",
     "INASSET": "Kapital",
     "INVOICE": "RECHNUNG",
     "INVOICEPAYED": "Bezahlt",
     "INVOICES": "RECHNUNGEN",
     "INVOICESTATUS": "Status",
-    "INVOICETOTAL": "Gesamt",
+    "INVOICETOTAL": "Insgesamt",
     "INVOICE_INFO": "Rechnung",
     "MANAGESALES": "Abonnements",
     "MOVEASSET": "Kapital",
     "QUOTATIONSTATUS": "Status",
     "QUOTATIONSUBSCRIPTION": "Dauer",
     "QUOTATIONTAX": "MwSt",
-    "QUOTATIONTOTAL": "Gesamt",
+    "QUOTATIONTOTAL": "Insgesamt",
     "QUOTATIONTOTALPRICE": "Gesamt netto",
-    "QUOTATIONTOTALS": "Gesamt",
+    "QUOTATIONTOTALS": "Insgesamt",
     "QUOTATIONTOTALTAX": "Gesamtsteuer",
     "QUOTATIONUNIT": "Einheit",
     "QUOTATIONVAT": "VAT",
     "TOTALPAYMENTS": "Gesamtzahlungen",
     "UPDATED_AT": "Geändert am",
     "UPDATE_PRODUCT": "Produkt aktualisieren",
-    "WORKFLOW": "Arbeitsablauf wählen",
+    "WORKFLOW": "Wählen Sie einen Arbeitsablauf",
     "YEARS": "Jahre",
     "CUSTOMER_IP": "Ursprüngliche IP-Adresse",
     "CUSTOMER_PORT": "Ursprünglicher TCP-Port",
     "ADVANCED_SEARCH": "Erweiterte Suche",
-    "AND": "und",
+    "AND": "Und",
     "APPLY": "Anwenden",
-    "CONTAINS": "enthält",
+    "CONTAINS": "Enthält",
     "DISABLED": "Deaktiviert",
     "ENABLED": "Aktiviert",
     "ENDING_DATE": "Enddatum",
     "ENDING_VALUE": "Endwert",
-    "ENDS_WITH": "endet mit",
-    "EQUALS": "gleich",
-    "IS_AMONG": "ist unter",
-    "IS_BETWEEN": "ist zwischen",
-    "IS_GREATER_THAN": "ist größer als",
-    "IS_GREATER_THAN_OR_EQUAL_TO": "ist größer oder gleich",
-    "IS_LESS_THAN": "ist kleiner als",
-    "IS_LESS_THAN_OR_EQUAL_TO": "ist kleiner oder gleich",
-    "IS_NOT_AMONG": "ist nicht innerhalb",
-    "IS_NOT_EQUAL": "ist nicht gleich",
+    "ENDS_WITH": "Endet mit",
+    "EQUALS": "Gleich",
+    "IS_AMONG": "Ist unter",
+    "IS_BETWEEN": "Ist zwischen",
+    "IS_GREATER_THAN": "Ist größer als",
+    "IS_GREATER_THAN_OR_EQUAL_TO": "Ist größer oder gleich",
+    "IS_LESS_THAN": "Ist kleiner als",
+    "IS_LESS_THAN_OR_EQUAL_TO": "Ist kleiner oder gleich",
+    "IS_NOT_AMONG": "Ist nicht unter",
+    "IS_NOT_EQUAL": "Ist nicht gleich",
     "MEET_ALL_CONDITIONS": "Alle Bedingungen erfüllen",
     "MEET_ANY_CONDITIONS": "Mindestens eine Bedingung erfüllen",
     "NEW_CONDITION": "Neue Bedingung",
     "SELECT_OPERATOR": "Operator auswählen",
     "STARTING_DATE": "Startdatum",
     "STARTING_VALUE": "Startwert",
-    "STARTS_WITH": "beginnt mit",
+    "STARTS_WITH": "Beginnt mit",
     "VALUE": "Wert",
     "VALUES": "Werte",
     "VALUE_RANGE_CHECK": "Wert muss größer sein als",
-    "CHOOSE": "Auswählen",
+    "CHOOSE": "Wählen",
     "DOWNLOAD_WITHOUT_ATTACHMENTS": "Herunterladen ohne Anhänge",
     "DOWNLOAD_WITH_ATTACHMENTS": "Mit Anhängen herunterladen",
-    "SELECT_QUEUE": "Warteschlange auswählen",
+    "SELECT_QUEUE": "Wählen Sie eine Warteschlange aus",
     "VIDAOOSESSION": "Videoanruf starten",
     "WHATSAPP": "WhatsApp Connector",
-    "WHATSAPP_INTERACTIONS": "WhatsApp-Interaktionen",
+    "WHATSAPP_INTERACTIONS": "WhatsApp Connector-Interaktionen",
     "LAST_UPDATED": "Zuletzt aktualisiert",
     "MATCHING_FIELD": "Übereinstimmendes Feld",
     "MULTIPLE_CONTACTS_FOUND": "Mehrere Kontakte für Nummer gefunden",
-    "SELECT": "Auswählen",
+    "SELECT": "Wählen",
     "SELECT_CONTACT": "Kontakt auswählen",
-    "WHICH_ONE_TO_USE": "Welcher Eintrag soll verwendet werden?",
+    "WHICH_ONE_TO_USE": "Welches möchten Sie verwenden?",
     "NO_WHATSAPP_ACCOUNTS_AVAILABLE": "Kein WhatsApp-Konto verfügbar",
-    "SECOND_LEVEL_DISPOSITION": "Qualifizierung der zweiten Ebene",
-    "THIRD_LEVEL_DISPOSITION": "Qualifizierung der dritten Ebene",
+    "SECOND_LEVEL_DISPOSITION": "Disposition der zweiten Ebene",
+    "THIRD_LEVEL_DISPOSITION": "Disposition der dritten Ebene",
     "LICENSE_EXPIRE_REMAINING_DAYS": "Ihre Lizenz läuft bald ab! Bitte wenden Sie sich an Ihren Administrator",
     "CREATEDAT": "Hergestellt in",
     "ELAPSED_ANSWERED": "Verstrichene Zeit seit dem Start des Anrufs",
     "ELAPSED_DISPOSED": "Verstrichene Zeit seit Beendigung des Anrufs",
-    "LOST_CONNECTION": "Probleme mit der Netzwerkkonnektivität. Bitte Internetverbindung prüfen.",
+    "LOST_CONNECTION": "Probleme mit der Netzwerkkonnektivität. Bitte überprüfe deine Internetverbindung.",
     "NO_RESULTS_AVAILABLE": "Keine Ergebnisse verfügbar",
-    "AUTOCLOSE": "Tab nach Qualifizierung automatisch schließen",
-    "AGENT_PRESENCE": "Bereitschaftsstatus",
-    "SELECT_TEAM": "Team auswählen"
+    "AUTOCLOSE": "Schließen Sie die Kontaktlasche nach der Entsorgung automatisch",
+    "AGENT_PRESENCE": "Agentenpräsenz",
+    "SELECT_TEAM": "Team auswählen",
+    "AVAILABLE": "Erhältlich"
   }
 }
index fd1c6a8..4b2f44e 100644 (file)
@@ -1,83 +1,83 @@
 {
   "MAIL": {
     "TEXT": "Text",
-    "TIMES": "Zeitstempel",
-    "EDIT_AUTOREPLY": "Automatische Antwort bearbeiten",
+    "TIMES": "Die Anzahl der Zeiten pro Interaktion",
+    "EDIT_AUTOREPLY": "Bearbeiten Sie automatische Antwort",
     "AUTOREPLY": "Automatische Antwort",
-    "SHOW_AUTOREPLY": "Automatische Antwort anzeigen",
+    "SHOW_AUTOREPLY": "Die automatische Antwort anzeigen",
     "SHOW_DETAILS": "Details anzeigen",
     "HIDE_DETAILS": "Details ausblenden",
-    "TO": "An",
+    "TO": "Zu",
     "FROM": "Von",
     "DATE": "Datum",
-    "CC": "CC",
-    "REPLY": "Antworten",
+    "CC": "Cc",
+    "REPLY": "Antwort",
     "REPLY_ALL": "Allen antworten",
-    "FORWARD": "Weiterleiten",
+    "FORWARD": "Vorwärts",
     "SUBJECT": "Betreff",
-    "BCC": "BCC",
+    "BCC": "Bcc",
     "SEND": "Senden",
     "ATTACHMENT": "Anhang",
     "ATTACHMENTS": "Anhänge",
     "NAME": "Name",
     "MAILQUEUES": "E-Mail Warteschlangen",
-    "SEARCH_FOR_ANYONE": "Suche",
+    "SEARCH_FOR_ANYONE": "Suche für Jedermann",
     "STRATEGY": "Strategie",
     "ERRORS": {
-      "TEXT_REQUIRED": "Feld \"Text\" ist erforderlich",
-      "NAME_REQUIRED": "Name ist erforderlich",
-      "AGENT_TIMEOUT_REQUIRED": "Agent Timeout ist erforderlich",
-      "EMAIL_ADDRESS_REQUIRED": "E-Mail-Adresse ist erforderlich",
-      "EMAIL_ADDRESS_MUST_VALID": "E-Mail ungültiges Format",
-      "HOST_REQUIRED": "Host wird benötigt",
-      "USERNAME_REQUIRED": "Benutzername ist erforderlich",
-      "PORT_REQUIRED": "Port ist erforderlich",
+      "TEXT_REQUIRED": "Das Feld \"Text\" ist erforderlich",
+      "NAME_REQUIRED": "Der Name ist erforderlich",
+      "AGENT_TIMEOUT_REQUIRED": "Der Agent Timeout ist erforderlich",
+      "EMAIL_ADDRESS_REQUIRED": "Die E-Mail-Adresse ist erforderlich",
+      "EMAIL_ADDRESS_MUST_VALID": "Die E-Mail Adresse muss in einem gültigen Format",
+      "HOST_REQUIRED": "Der Host wird benötigt",
+      "USERNAME_REQUIRED": "Der Benutzername ist erforderlich",
+      "PORT_REQUIRED": "Der Port ist erforderlich",
       "CONNTIMEOUT_REQUIRED": "Timeout der Verbindung ist erforderlich",
-      "AUTHTIMEOUT_REQUIRED": "Zeitlimit für die Authentifizierung ist erforderlich",
-      "ACCEPTURL_MUST_VALID_URL": "URL ungültiges Format",
-      "TIMEOUT_REQUIRED": "Timeout ist erforderlich",
-      "REJECTURL_MUST_VALID_URL": "URL ungültiges Format",
-      "CLOSEURL_MUST_VALID_URL": "URL ungültiges Format",
-      "AGENT_REQUIRED": "Agent ist erforderlich",
-      "TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Timeout muss größer oder gleich sein als",
-      "DISPOSITION_REQUIRED": "Qualifizierung ist erforderlich",
-      "CONDITION_REQUIRED": "Bedingung ist erforderlich",
-      "TRUEPRIORITY_REQUIRED": "Wahre Priorität ist erforderlich",
-      "FALSEPRIORITY_REQUIRED": "Falsche Priorität ist erforderlich",
-      "TRUEPRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Wahre Priorität muss größer oder gleich sein als",
-      "FALSEPRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Falsche Priorität muss größer oder gleich sein als",
-      "PRIORITY_REQUIRED": "Priorität ist erforderlich",
-      "PRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Priorität muss größer oder gleich sein als",
-      "QUEUE_REQUIRED": "Warteschlange ist erforderlich",
-      "LIST_REQUIRED": "Liste ist erforderlich",
-      "PASSWORD_REQUIRED": "Passwort ist erforderlich",
-      "SERVICE_REQUIRED": "Dienst ist erforderlich,",
-      "IMAP_HOST_REQUIRED": "IMAP-Host ist erforderlich",
-      "IMAP_PORT_REQUIRED": "IMAP-Port erforderlich",
-      "SMTP_HOST_REQUIRED": "SMTP-Host ist erforderlich",
-      "SMTP_PORT_REQUIRED": "SMTP-Port ist erforderlich",
-      "CONFIRM_NOT_MATCH": "Die Passwörter stimmen nicht überein",
-      "KEY_MAX_LENGTH": "Schlüssel darf eine maximale Länge haben von {{max}}",
-      "KEY_REQUIRED": "Schlüssel ist erforderlich",
-      "TEXT_MAX_LENGTH": "Wert darf eine maximale Länge haben von {{max}}",
+      "AUTHTIMEOUT_REQUIRED": "Das Zeitlimit für die Authentifizierung erforderlich ist",
+      "ACCEPTURL_MUST_VALID_URL": "Die URL muss in einem gültigen Format",
+      "TIMEOUT_REQUIRED": "Der Timeout ist erforderlich",
+      "REJECTURL_MUST_VALID_URL": "Die URL muss in einem gültigen Format",
+      "CLOSEURL_MUST_VALID_URL": "Die URL muss in einem gültigen Format",
+      "AGENT_REQUIRED": "Der Agent ist erforderlich",
+      "TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Der Timeout muss größer als oder gleich",
+      "DISPOSITION_REQUIRED": "Die Disposition ist erforderlich",
+      "CONDITION_REQUIRED": "Der Zustand ist erforderlich",
+      "TRUEPRIORITY_REQUIRED": "Die wahre Priorität ist erforderlich",
+      "FALSEPRIORITY_REQUIRED": "Die falsche Priorität ist erforderlich",
+      "TRUEPRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Die wahre Priorität muss größer als oder gleich",
+      "FALSEPRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Die falsche Priorität muss größer als oder gleich",
+      "PRIORITY_REQUIRED": "Die Priorität ist erforderlich",
+      "PRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Die Priorität muss größer als oder gleich",
+      "QUEUE_REQUIRED": "Die Warteschlange ist erforderlich",
+      "LIST_REQUIRED": "Die Liste ist erforderlich",
+      "PASSWORD_REQUIRED": "Das Kennwort ist erforderlich",
+      "SERVICE_REQUIRED": "Der Dienst ist erforderlich,",
+      "IMAP_HOST_REQUIRED": "Der IMAP-Host wird benötigt",
+      "IMAP_PORT_REQUIRED": "Der IMAP-Anschluss erforderlich",
+      "SMTP_HOST_REQUIRED": "Der SMTP-Host ist erforderlich",
+      "SMTP_PORT_REQUIRED": "Der SMTP-Port ist erforderlich",
+      "CONFIRM_NOT_MATCH": "Die Passwörter nicht übereinstimmen",
+      "KEY_MAX_LENGTH": "Schlüssel muss eine maximale Länge von {{max}}",
+      "KEY_REQUIRED": "Der Schlüssel ist erforderlich",
+      "TEXT_MAX_LENGTH": "Der Wert muss eine maximale Länge von {{max}} haben",
       "VALUE_REQUIRED": "Pflichtfeld",
-      "FONT_SIZE_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Wert muss größer oder gleich sein als",
-      "FONT_SIZE_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Wert muss kleiner oder gleich sein als",
+      "FONT_SIZE_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Der Wert muss größer oder gleich sein",
+      "FONT_SIZE_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Der Wert muss kleiner oder gleich sein",
       "FONT_SIZE_REQUIRED": "Pflichtfeld",
       "COMMAND_REQUIRED": "Pflichtfeld",
-      "AGENT_TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Wert muss größer oder gleich sein als",
+      "AGENT_TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Der Wert muss größer oder gleich sein",
       "NAME_MUST_VALID_PATTERN": "Falsches Format",
-      "TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Wert muss kleiner oder gleich sein als",
-      "AGENT_TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Wert muss kleiner oder gleich sein als",
-      "WAITFORTHEASSIGNEDAGENT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Wert muss größer oder gleich sein als",
-      "WAITFORTHEASSIGNEDAGENT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Wert muss kleiner oder gleich sein als",
+      "TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Der Wert muss kleiner oder gleich sein",
+      "AGENT_TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Der Wert muss kleiner oder gleich sein",
+      "WAITFORTHEASSIGNEDAGENT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Der Wert muss größer oder gleich sein",
+      "WAITFORTHEASSIGNEDAGENT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Der Wert muss kleiner oder gleich sein",
       "WAITFORTHEASSIGNEDAGENT_REQUIRED": "Pflichtfeld",
       "TAG_REQUIRED": "Pflichtfeld",
-      "AGENTTRANSFERTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Wert muss größer oder gleich sein als",
-      "AGENTTRANSFERTIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Wert muss kleiner oder gleich sein als",
+      "AGENTTRANSFERTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Der Wert muss größer oder gleich sein",
+      "AGENTTRANSFERTIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Der Wert muss kleiner oder gleich sein",
       "AGENTTRANSFERTIMEOUT_REQUIRED": "Pflichtfeld",
-      "QUEUETRANSFERTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Wert muss größer oder gleich sein als",
-      "QUEUETRANSFERTIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Wert muss kleiner oder gleich sein als",
+      "QUEUETRANSFERTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Der Wert muss größer oder gleich sein",
+      "QUEUETRANSFERTIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Der Wert muss kleiner oder gleich sein",
       "QUEUETRANSFERTIMEOUT_REQUIRED": "Pflichtfeld",
       "MANDATORYDISPOSITIONPAUSEID_REQUIRED": "Pflichtfeld",
       "REPLY_TYPE_REQUIRED": "Pflichtfeld"
@@ -93,9 +93,9 @@
     "MAILACCOUNTS": "E-Mail Konten",
     "EMAIL_ADDRESS": "E-Mail Adresse",
     "ADD_MAILACCOUNT": "E-Mail Konto hinzufügen",
-    "EDIT_MAILACCOUNT": "E-Mail Konto bearbeiten",
-    "DELETE_MAILACCOUNT": "E-Mail Konto löschen",
-    "DISPOSITIONS": "Qualifizierungen",
+    "EDIT_MAILACCOUNT": "E-Mail-Konto bearbeiten",
+    "DELETE_MAILACCOUNT": "E-Mail-Konten löschen",
+    "DISPOSITIONS": "Bestimmungen",
     "WEBHOOKS": "WebHooks",
     "ACTIONS": "Aktionen",
     "OTHERS": "Andere",
     "SERVICE": "Service",
     "CREATED_AT": "Erstellt am",
     "ACCEPT": "Akzeptieren",
-    "ACCEPTMETHOD": "Methode akzeptieren",
+    "ACCEPTMETHOD": "Die Methode",
     "ACCEPTURL": "URL akzeptieren",
     "REJECT": "Ablehnen",
     "REJECTMETHOD": "Methode ablehnen",
     "REJECTURL": "URL ablehnen",
-    "CLOSE": "Schließen",
-    "CLOSEMETHOD": "Methode schließen",
-    "CLOSEURL": "URL schließen",
+    "CLOSE": "In der Nähe",
+    "CLOSEMETHOD": "In der Nähe Methode",
+    "CLOSEURL": "Der URL",
     "WHITELABEL": "White Label",
-    "SIGNATURE": "Signatur",
+    "SIGNATURE": "Unterschrift",
     "IMAP": "IMAP",
     "HOST": "Host",
     "USERNAME": "Benutzername",
-    "PORT": "Port",
+    "PORT": "Hafen",
     "MAILBOX": "Mailbox",
     "FILTER": "Filter",
     "CONNTIMEOUT": "Connection Timeout [sek]",
     "SMTP": "SMTP",
     "SELECTED": "Ausgewählte",
     "SELECT_ALL": "Alle auswählen",
-    "SELECT_NONE": "Nichts auswählen",
+    "SELECT_NONE": "Wählen Sie \"Keine\"",
     "BACK": "Zurück",
     "MAIL": "E-Mail",
-    "ID": "ID",
+    "ID": "Id",
     "TIMEOUT": "Timeout",
     "PASSWORD": "Passwort",
-    "NO_MAILDISPOSITION_AVAILABLE": "Keine E-Mail Qualifizierung verfügbar",
-    "ADD_MAILDISPOSITION": "Qualifizierung hinzufügen",
-    "NEW_MAILDISPOSITION": "Neue E-Mail Qualifizierung",
-    "EDIT_MAILDISPOSITION": "Qualifizierung bearbeiten",
-    "DELETE_MAILDISPOSITION": "Qualifizierung löschen",
-    "MAILDISPOSITIONS": "E-Mail Qualifizierungen",
+    "NO_MAILDISPOSITION_AVAILABLE": "Keine E-Mail zur Verfügung Verfügungen",
+    "ADD_MAILDISPOSITION": "E-Mail hinzufügen Disposition",
+    "NEW_MAILDISPOSITION": "Neue E-Mail zur Verfügung",
+    "EDIT_MAILDISPOSITION": "Bearbeiten von E-Mail zur Verfügung",
+    "DELETE_MAILDISPOSITION": "Löschen von E-Mail zur Verfügung",
+    "MAILDISPOSITIONS": "E-Mail Verfügungen",
     "NEW_MAILQUEUE": "Neue E-Mail Warteschlange",
-    "NEW_MAILACCOUNT": "Neues E-Mail Konto",
-    "NO_AVAILABLE_INFO": "Keine Informationen verfügbar",
-    "ALL_TEAMS": "Alle Teams",
+    "NEW_MAILACCOUNT": "Neue E-Mail Konto",
+    "NO_AVAILABLE_INFO": "Keine verfügbaren Info",
+    "ALL_TEAMS": "Alle Mannschaften",
     "SELECTED_TEAMS": "Ausgewählte Teams",
     "HELP": {
       "NAME": "Nur Zahlen, Buchstaben und Sonderzeichen (._) werden unterstützt.",
-      "USERNAME": "Benutzername für die Authentifizierung",
-      "PASSWORD": "Passwort für die Authentifizierung",
-      "SECURE": "Bei true wird die Verbindung TLS verwenden, wenn eine Verbindung zum Server aufgebaut wird",
-      "FONT_FAMILY": "Standard-Schriften",
+      "USERNAME": "Benutzername für die Authentifizierung verwendet werden",
+      "PASSWORD": "Kennwort für die Authentifizierung verwendet werden",
+      "SECURE": "Bei true wird die Verbindung TLS verwenden, wenn eine Verbindung zu Server",
+      "FONT_FAMILY": "Standardschriftfamilie",
       "FONT_SIZE": "Standard Schriftgröße",
-      "MARK_AS_UNREAD": "Aktivieren / deaktivieren, um die letzte Nachricht einer Interaktion als ungelesen zu markieren",
-      "MANDATORYDISPOSITION": "Qualifizierung erforderlich",
-      "MANDATORYDISPOSITIONPAUSEID": "PausenID bei erforderlicher Qualifizierung"
+      "MARK_AS_UNREAD": "Agent aktivieren / deaktivieren, um die letzte Nachricht einer Interaktion als ungelesen zu markieren",
+      "MANDATORYDISPOSITION": "Zwingende Disposition",
+      "MANDATORYDISPOSITIONPAUSEID": "Anhalten, um zu verwenden, wenn die obligatorische Disposition aktiviert ist"
     },
     "PAGE": "Seite",
     "ROWSPERPAGE": "Zeilen pro Seite",
-    "OF": "von",
-    "TEAMADD_MAILQUEUE": "Team zur Warteschlange hinzufügen",
-    "AGENTADD_MAILQUEUE": "Agenten zur Warteschlange hinzufügen",
+    "OF": "Von",
+    "TEAMADD_MAILQUEUE": "Team Chat Warteschlange hinzufügen",
+    "AGENTADD_MAILQUEUE": "Agent zu Chatten Warteschlange hinzufügen",
     "ALL_AGENTS": "Alle Agenten",
     "SELECTED_AGENTS": "Ausgewählte Agenten",
     "AGENT": "Agent",
     "EDIT_AGENT": "Agent bearbeiten",
-    "EDIT_CLOSE": "Bearbeitung abschließen",
-    "DISPOSITION": "Qualifizierung",
-    "GOTOIF": "GoToIf",
+    "EDIT_CLOSE": "Bearbeiten Schließen",
+    "DISPOSITION": "Disposition",
+    "GOTOIF": "GotoIf",
     "EDIT_GOTOIF": "Bearbeiten GotoIf",
-    "CONDITION": "Bedingung",
+    "CONDITION": "Zustand",
     "TRUEPRIORITY": "Wahre Priorität",
     "FALSEPRIORITY": "Falsche Priorität",
     "GOTOP": "GotoP",
     "VALUE": "Wert",
     "QUEUE": "Warteschlange",
     "EDIT_QUEUE": "Warteschlange bearbeiten",
-    "INTERACTIONS": "Interaktionen",
-    "STARTEDAT": "Startdatum",
+    "INTERACTIONS": "Wechselwirkungen",
+    "STARTEDAT": "Gestartet am",
     "CONTACT": "Kontakt",
     "CLOSEDAT": "Geschlossen",
-    "NOTES": "Anmerkungen",
-    "NO_INTERACTION_AVAILABLE": "Keine neuen Interaktionen verfügbar",
+    "NOTES": "Hinweise",
+    "NO_INTERACTION_AVAILABLE": "Es sind keine Wechselwirkungen zur Verfügung",
     "ACTIVE": "Aktiv",
-    "SECURE": "Sicher",
+    "SECURE": "Sichere",
     "AUTHENTICATION": "Authentifizierung",
     "SMTP_HOST": "SMTP-Host",
     "SMTP_PORT": "SMTP-Port",
     "IMAP_PORT": "IMAP-Port",
     "CONFIRM_PASSWORD": "Passwort bestätigen",
     "SELECT_STATUS": "Status auswählen",
-    "OPENED": "Geöffnet",
+    "OPENED": "Öffnen",
     "CLOSED": "Geschlossen",
     "ALL": "Alle",
     "SELECT_ACCOUNT": "Konto auswählen",
     "UNPAUSE": "Pause beenden",
     "DEFAULT_PAUSE": "Standard Pause",
     "LOGOUT": "An-/Abmelden",
-    "AGENTADD_QUEUE": "Agenten zur Warteschlange hinzufügen",
-    "VOICE": "Anrufe",
+    "AGENTADD_QUEUE": "Agent E-Mail Warteschlange hinzufügen",
+    "VOICE": "Voice",
     "CHAT": "Chat",
-    "SMS": "SMS",
-    "OPENCHANNEL": "Offener Kanal",
+    "SMS": "Sms",
+    "OPENCHANNEL": "Channel öffnen",
     "FAX": "Fax",
     "REALTIME": "Echtzeit",
     "AGENTS": "Agenten",
     "QUEUES": "Warteschlangen",
     "ACCOUNTS": "Konten",
-    "FULLNAME": "Vollständiger Name",
-    "INTERNAL": "Intern",
+    "FULLNAME": "Voller Name",
+    "INTERNAL": "Interne",
     "PHONE_STATE": "Telefonstatus",
     "PHONE_STATUS": "Telefonstatus",
     "PAUSE": "Pause",
     "LOGGED_IN": "Angemeldet",
     "PAUSED": "Angehalten",
     "READY": "Bereit",
-    "WAITING": "Wartezustand",
-    "TOTAL": "Gesamt",
-    "IN": "Eingehend",
-    "OUT": "Ausgehend",
+    "WAITING": "Warten",
+    "TOTAL": "Insgesamt",
+    "IN": "In",
+    "OUT": "Aus",
     "IMAP_STATUS": "IMAP-Status",
     "SMTP_STATUS": "SMTP-Status",
     "DISABLED": "Deaktiviert",
     "CONNECTED": "Verbunden",
-    "NEVER_VERIFIED": "Noch nicht verifiziert",
+    "NEVER_VERIFIED": "Nie verifiziert",
     "ERROR": "Fehler",
     "EDIT_ACCOUNT": "Konto bearbeiten",
-    "VERIFY_SMTP": "Bitte SMTP-Einstellungen prüfen",
+    "VERIFY_SMTP": "Überprüfen Sie die SMTP-",
     "VERIFIED": "Überprüft",
-    "VERIFYSMTP_MAILACCOUNT": "Bitte SMTP-Einstellungen prüfen",
-    "GOTOREALTIME_MAILACCOUNT": "Zum E-Mail-Konto Echtzeitmonitoring",
-    "GOTO_MAILACCOUNT": "Zum E-Mail Konto gehen",
+    "VERIFYSMTP_MAILACCOUNT": "Überprüfen Sie die SMTP-",
+    "GOTOREALTIME_MAILACCOUNT": "In Echtzeit, E-Mail Konto",
+    "GOTO_MAILACCOUNT": "In Echtzeit, E-Mail Konto",
     "UNKNOWN": "Unbekannt",
-    "UNREGISTERED": "Nicht registriert",
+    "UNREGISTERED": "Unregistrierte",
     "UNAVAILABLE": "Nicht verfügbar",
-    "NOT_INUSE": "Nicht in Verwendung",
+    "NOT_INUSE": "Nicht in Gebrauch",
     "REACHABLE": "Erreichbar",
-    "IN_USE": "In Verwendung",
-    "AGENTSADD_QUEUE": "Agenten zur Warteschlange hinzufügen",
-    "INFO": "Information",
+    "IN_USE": "Im Einsatz",
+    "AGENTSADD_QUEUE": "Agenten zu Warteschlange hinzufügen",
+    "INFO": "Info",
     "NO_AGENT_ONLINE": "Kein Agent Online",
-    "GOTOREALTIME_MAILQUEUE": "Echtzeitmonitoring E-Mail Warteschlangen",
-    "PARTIALPAUSE": "Teilpause",
+    "GOTOREALTIME_MAILQUEUE": "In Echtzeit, E-Mail Warteschlange",
+    "PARTIALPAUSE": "Lastschriftzahlung teilweise Pause",
     "BUSY": "Besetzt",
     "TIMER": "Timer",
     "IDLE": "Leerlauf",
     "CAPACITY": "Kapazität",
-    "SPYINTERACTION": "Mithören",
+    "SPYINTERACTION": "Spy",
     "ADD_NOTE": "Notiz hinzufügen",
-    "NOTE": "Notiz",
+    "NOTE": "Hinweis",
     "TAGS": "Tags",
-    "INTERACTIONS_MAILACCOUNT": "Zu den Interaktionen gehen",
-    "REFRESH_INTERACTIONS": "Interaktionen aktualisieren",
-    "PENDING": "Warten auf Rückmeldung",
-    "SEND_AS_PENDING": "Senden und auf Rückmeldung warten",
-    "SEND_AND_CLOSE": "Senden und schließen",
-    "CANNED_ANSWER_NOT_FOUND": "Keine Textvorlagen gefunden",
-    "CANNED_ANSWER_SEARCH": "Nach Textvorlagen suchen",
-    "NO_MAILCANNEDANSWER_AVAILABLE": "Keine Textvorlagen verfügbar",
-    "NEW_MAILCANNEDANSWER": "Neue Textvorlage",
-    "ADD_MAILCANNEDANSWER": "Textvorlage hinzufügen",
-    "EDIT_MAILCANNEDANSWER": "Textvorlage bearbeiten",
-    "DELETE_MAILCANNEDANSWER": "Textvorlage löschen",
+    "INTERACTIONS_MAILACCOUNT": "Zu Wechselwirkungen gehen",
+    "REFRESH_INTERACTIONS": "Aktualisieren Interaktionen",
+    "PENDING": "Ausstehend",
+    "SEND_AS_PENDING": "Senden als Ausstehend",
+    "SEND_AND_CLOSE": "Senden und Schließen",
+    "CANNED_ANSWER_NOT_FOUND": "Es wurden keine vordefinierten Antworten gefunden",
+    "CANNED_ANSWER_SEARCH": "Geben Sie einen Text ein, um eine vordefinierte Antwort zu suchen",
+    "NO_MAILCANNEDANSWER_AVAILABLE": "Keine vordefinierten Antworten verfügbar",
+    "NEW_MAILCANNEDANSWER": "Neue vordefinierte Antowrt",
+    "ADD_MAILCANNEDANSWER": "Vordefinierte Antwort hinzufügen",
+    "EDIT_MAILCANNEDANSWER": "Vordefiierte Antwort bearbeiten",
+    "DELETE_MAILCANNEDANSWER": "Vordefinierte Antwort löschen",
     "SHOW_ORIGINAL_MESSAGE": "Ursprüngliche Nachricht anzeigen",
     "DELETE_INTERACTION": "Interaktion löschen",
     "ACCEPTED": "Akzeptiert",
     "FONT_FAMILY": "Schriftfamilie",
     "FONT_SIZE": "Schriftgröße",
-    "MARK_AS_UNREAD": "Als ungelesen markieren",
-    "ADD_MAILSUBSTATUS": "SubStatus hinzufügen",
-    "DELETE_MAILSUBSTATUS": "SubStatus löschen",
-    "EDIT_MAILSUBSTATUS": "SubStatus bearbeiten",
-    "MAILSUBSTATUSES": "E-Mail SubStatus",
-    "NEW_MAILSUBSTATUS": "Neuer SubStatus",
-    "SEND_AS": "Senden als",
-    "COMMAND": "Eingabe",
+    "MARK_AS_UNREAD": "als ungelesen markieren",
+    "ADD_MAILSUBSTATUS": "Unterstatus hinzufügen",
+    "DELETE_MAILSUBSTATUS": "Löschen",
+    "EDIT_MAILSUBSTATUS": "Bearbeiten",
+    "MAILSUBSTATUSES": "E-Mail-Unterstatus",
+    "NEW_MAILSUBSTATUS": "Neuer Unterstatus",
+    "SEND_AS": "Senden Als",
+    "COMMAND": "Befehl",
     "EDIT_SYSTEM": "System bearbeiten",
     "SYSTEM": "System",
     "VARIABLE": "Variable",
     "NOTIFICATION": "Benachrichtigung",
-    "NOTIFICATIONSHAKE": "Schütteln",
-    "NOTIFICATIONSOUND": "Klingeln",
+    "NOTIFICATIONSHAKE": "Shake",
+    "NOTIFICATIONSOUND": "Klingen",
     "NOTIFICATIONTEMPLATE": "Vorlage",
     "WAITFORTHEASSIGNEDAGENT": "Warte auf den zugewiesenen Agenten",
     "EDIT_TAG": "Tag bearbeiten",
-    "TAG": "Tag",
-    "AGENTTRANSFER": "Weiterleitung Agent",
-    "AGENTTRANSFERTIMEOUT": "Zeitlimit für Agententransfer",
-    "QUEUETRANSFER": "Weiterleitung Warteschlange",
-    "QUEUETRANSFERTIMEOUT": "Zeitüberschreitung für Warteschlangentransfer",
-    "TRANSFER": "Weiterleitung",
-    "AGENTADD_MAILACCOUNT": "Agenten zum E-Mail Konto hinzufügen",
+    "TAG": "Etikett",
+    "AGENTTRANSFER": "Agentenübertragung",
+    "AGENTTRANSFERTIMEOUT": "Zeitlimit für Agentenübertragungen",
+    "QUEUETRANSFER": "Warteschlangenübertragung",
+    "QUEUETRANSFERTIMEOUT": "Zeitüberschreitung bei der Warteschlangenübertragung",
+    "TRANSFER": "Transfer",
+    "AGENTADD_MAILACCOUNT": "Fügen Sie dem E-Mail-Konto Agent hinzu",
     "YOU_ARE_REGISTERED_AS_A": "Sie sind registriert als",
-    "CANNEDANSWERS": "Textvorlagen",
+    "CANNEDANSWERS": "Vordefinierte Antworten",
     "DOWNLOAD_INTERACTION": "Herunterladen",
-    "MAILCANNEDANSWERS": "E-Mail Textvorlagen",
-    "LOGIN_TIME": "Zeit angemeldet",
-    "PAUSE_TIME": "Zeit in Pause",
+    "MAILCANNEDANSWERS": "Vordefinierte Antworten",
+    "LOGIN_TIME": "Login-Zeit",
+    "PAUSE_TIME": "Pausenzeit",
     "DOWNLOAD": "Herunterladen",
-    "DOWNLOAD_WITHOUT_ATTACHMENTS": "Herunterladen ohne Anhänge",
-    "DOWNLOAD_WITH_ATTACHMENTS": "Herunterlagen inkl. Anhänge",
-    "TEAMS_ASSOCIATION": "Teamzuweisung",
-    "MANDATORYDISPOSITION": "Qualifizierung erforderlich",
-    "MANDATORYDISPOSITIONPAUSEID": "Qualifizierung pausieren, sofern sonst erforderlich",
-    "ADVANCED": "Erweitert",
-    "TOOLTIP_SCREENRECORDING_OFF": "Bildschirmaufzeichnung angehalten",
-    "TOOLTIP_SCREENRECORDING_ON": "Bildschirmaufzeichnung läuft",
-    "DOWNLOAD_WITHOUT_ATTACHMENT": "Herunterladen ohne Anhang",
-    "DOWNLOAD_WITH_ATTACHMENT": "Herunterladen inkl. Anhang",
+    "DOWNLOAD_WITHOUT_ATTACHMENTS": "Download ohne Anhänge",
+    "DOWNLOAD_WITH_ATTACHMENTS": "Mit Anhängen herunterladen",
+    "TEAMS_ASSOCIATION": "Vereinigung der Mannschaften",
+    "MANDATORYDISPOSITION": "Zwingende Disposition",
+    "MANDATORYDISPOSITIONPAUSEID": "Pause zur Verwendung, wenn die obligatorische Disposition aktiviert ist",
+    "ADVANCED": "Fortgeschritten",
+    "TOOLTIP_SCREENRECORDING_OFF": "Bildschirmaufnahme verfügbar",
+    "TOOLTIP_SCREENRECORDING_ON": "Bildschirmaufnahme läuft",
+    "DOWNLOAD_WITHOUT_ATTACHMENT": "Ohne Anhang herunterladen",
+    "DOWNLOAD_WITH_ATTACHMENT": "Download mit Anhang",
     "LASTMESSAGE": "Letzte Nachricht",
     "REPLY_TYPE": "Antworttyp"
   }
index 97c6fe2..235afae 100644 (file)
@@ -15,7 +15,7 @@
     "DESCRIPTION": "وصف",
     "DOWNLOAD_PLUGIN": "تنزيل المكون الإضافي",
     "DROP_TO_UPLOAD": "إسقاط للتحميل",
-    "DROP_TO_UPLOAD_MESSAGE": "أسقط ملفك هنا للتحميل. فقط الرمز البريدي - ماكس. 4MB",
+    "DROP_TO_UPLOAD_MESSAGE": "أسقط ملفك هنا للتحميل. فقط الرمز البريدي - ماكس. 2MB",
     "EDITOR": "محرر",
     "EDIT_PLUGIN": "تحرير المكوّن الإضافي",
     "FINISH": "إنهاء",
index 312c4ab..e80fbe2 100644 (file)
@@ -33,7 +33,7 @@
     "SAVE": "Save",
     "INSTALLING": "Installing",
     "DROP_TO_UPLOAD": "Drop To Upload",
-    "DROP_TO_UPLOAD_MESSAGE": "Drop your file here to upload. Only ZIP - Max. 4MB",
+    "DROP_TO_UPLOAD_MESSAGE": "Drop your file here to upload. Only ZIP - Max. 2MB",
     "UPLOAD_PLUGIN": "Upload plugin",
     "UPLOADING": "Uploading",
     "CREATED_AT": "Created at",
index 495ea1e..3bd5ad2 100644 (file)
@@ -15,7 +15,7 @@
     "DESCRIPTION": "Beskrivelse",
     "DOWNLOAD_PLUGIN": "Download plugin",
     "DROP_TO_UPLOAD": "Drop til upload",
-    "DROP_TO_UPLOAD_MESSAGE": "Drop din fil her for at uploade. Kun ZIP - Max. 4MB",
+    "DROP_TO_UPLOAD_MESSAGE": "Drop din fil her for at uploade. Kun ZIP - Max. 2MB",
     "EDITOR": "Editor",
     "EDIT_PLUGIN": "Rediger plugin",
     "FINISH": "Afslut",
index 054564e..f150ff2 100644 (file)
@@ -15,7 +15,7 @@
     "DESCRIPTION": "Beschreibung",
     "DOWNLOAD_PLUGIN": "Plugin herunterladen",
     "DROP_TO_UPLOAD": "Hochladen",
-    "DROP_TO_UPLOAD_MESSAGE": "Legen Sie Ihre Datei zum Hochladen hier ab. Nur PLZ - Max. 4 MB",
+    "DROP_TO_UPLOAD_MESSAGE": "Legen Sie Ihre Datei zum Hochladen hier ab. Nur PLZ - Max. 2 MB",
     "EDITOR": "Editor",
     "EDIT_PLUGIN": "Plugin bearbeiten",
     "FINISH": "Fertig",
index 312c4ab..e80fbe2 100644 (file)
@@ -33,7 +33,7 @@
     "SAVE": "Save",
     "INSTALLING": "Installing",
     "DROP_TO_UPLOAD": "Drop To Upload",
-    "DROP_TO_UPLOAD_MESSAGE": "Drop your file here to upload. Only ZIP - Max. 4MB",
+    "DROP_TO_UPLOAD_MESSAGE": "Drop your file here to upload. Only ZIP - Max. 2MB",
     "UPLOAD_PLUGIN": "Upload plugin",
     "UPLOADING": "Uploading",
     "CREATED_AT": "Created at",
index 56d6276..a85d3cb 100644 (file)
@@ -15,7 +15,7 @@
     "DESCRIPTION": "Descripción",
     "DOWNLOAD_PLUGIN": "Descargar plugin",
     "DROP_TO_UPLOAD": "Suelta para subir",
-    "DROP_TO_UPLOAD_MESSAGE": "Suelta tu archivo aquí para subirlo. Solo ZIP - Max. 4 MB",
+    "DROP_TO_UPLOAD_MESSAGE": "Suelta tu archivo aquí para subirlo. Solo ZIP - Max. 2 MB",
     "EDITOR": "Editor",
     "EDIT_PLUGIN": "Editar plugin",
     "FINISH": "Terminar",
index 312c4ab..e80fbe2 100644 (file)
@@ -33,7 +33,7 @@
     "SAVE": "Save",
     "INSTALLING": "Installing",
     "DROP_TO_UPLOAD": "Drop To Upload",
-    "DROP_TO_UPLOAD_MESSAGE": "Drop your file here to upload. Only ZIP - Max. 4MB",
+    "DROP_TO_UPLOAD_MESSAGE": "Drop your file here to upload. Only ZIP - Max. 2MB",
     "UPLOAD_PLUGIN": "Upload plugin",
     "UPLOADING": "Uploading",
     "CREATED_AT": "Created at",
index 0202268..bf299e5 100644 (file)
@@ -15,7 +15,7 @@
     "DESCRIPTION": "شرح",
     "DOWNLOAD_PLUGIN": "دانلود پلاگین",
     "DROP_TO_UPLOAD": "قطره برای آپلود",
-    "DROP_TO_UPLOAD_MESSAGE": "فایل خود را اینجا بگذارید تا آپلود شود فقط ZIP - حداکثر. 4 مگابایت",
+    "DROP_TO_UPLOAD_MESSAGE": "فایل خود را اینجا بگذارید تا آپلود شود فقط ZIP - حداکثر. 2 مگابایت",
     "EDITOR": "ویرایشگر",
     "EDIT_PLUGIN": "ویرایش پلاگین",
     "FINISH": "پایان دادن",
index b934012..be3860b 100644 (file)
@@ -15,7 +15,7 @@
     "DESCRIPTION": "Kuvaus",
     "DOWNLOAD_PLUGIN": "Lataa laajennus",
     "DROP_TO_UPLOAD": "Pudota lähetettäväksi",
-    "DROP_TO_UPLOAD_MESSAGE": "Pudota tiedosto täällä lähetettäväksi. Vain ZIP - Max. 4 Mt",
+    "DROP_TO_UPLOAD_MESSAGE": "Pudota tiedosto täällä lähetettäväksi. Vain ZIP - Max. 2 Mt",
     "EDITOR": "toimittaja",
     "EDIT_PLUGIN": "Muokkaa lisäosaa",
     "FINISH": "Suorittaa loppuun",
index bbf8e7b..edbcd90 100644 (file)
@@ -15,7 +15,7 @@
     "DESCRIPTION": "La description",
     "DOWNLOAD_PLUGIN": "Télécharger le plugin",
     "DROP_TO_UPLOAD": "Drop To Upload",
-    "DROP_TO_UPLOAD_MESSAGE": "Déposez votre fichier ici pour le télécharger. Seulement ZIP - Max. 4 Mo",
+    "DROP_TO_UPLOAD_MESSAGE": "Déposez votre fichier ici pour le télécharger. Seulement ZIP - Max. 2 Mo",
     "EDITOR": "Éditeur",
     "EDIT_PLUGIN": "Modifier le plugin",
     "FINISH": "terminer",
index d5a9a13..c3cb181 100644 (file)
@@ -33,7 +33,7 @@
     "SAVE": "שמור",
     "INSTALLING": "התקנה",
     "DROP_TO_UPLOAD": "שחרר כדי להעלות",
-    "DROP_TO_UPLOAD_MESSAGE": "כדי להעלות את הקובץ, שחרר אותו כאן. ZIP בלבד – מקס' 4MB",
+    "DROP_TO_UPLOAD_MESSAGE": "כדי להעלות את הקובץ, שחרר אותו כאן. ZIP בלבד – מקס' 2MB",
     "UPLOAD_PLUGIN": "יישום Plug-in להעלאות",
     "UPLOADING": "העלאה",
     "CREATED_AT": "נוצר ב-",
index 043d58e..1170227 100644 (file)
@@ -15,7 +15,7 @@
     "DESCRIPTION": "विवरण",
     "DOWNLOAD_PLUGIN": "प्लगइन डाउनलोड करें",
     "DROP_TO_UPLOAD": "अपलोड करने के लिए ड्रॉप",
-    "DROP_TO_UPLOAD_MESSAGE": "अपलोड करने के लिए अपनी फाइल यहां ड्रॉप करें। केवल ज़िप - अधिकतम। 4 एमबी",
+    "DROP_TO_UPLOAD_MESSAGE": "अपलोड करने के लिए अपनी फाइल यहां ड्रॉप करें। केवल ज़िप - अधिकतम। 2 एमबी",
     "EDITOR": "संपादक",
     "EDIT_PLUGIN": "प्लगइन संपादित करें",
     "FINISH": "समाप्त",
index 86fb87a..c4fbe7e 100644 (file)
@@ -15,7 +15,7 @@
     "DESCRIPTION": "Deskripsi",
     "DOWNLOAD_PLUGIN": "Unduh plugin",
     "DROP_TO_UPLOAD": "Jatuhkan Untuk Mengunggah",
-    "DROP_TO_UPLOAD_MESSAGE": "Jatuhkan file Anda di sini untuk mengunggah. Hanya ZIP - Max. 4 MB",
+    "DROP_TO_UPLOAD_MESSAGE": "Jatuhkan file Anda di sini untuk mengunggah. Hanya ZIP - Max. 2 MB",
     "EDITOR": "Editor",
     "EDIT_PLUGIN": "Edit plugin",
     "FINISH": "Selesai",
index 212fdff..68e0c53 100644 (file)
@@ -33,7 +33,7 @@
     "SAVE": "Salva",
     "INSTALLING": "Installazione in corso",
     "DROP_TO_UPLOAD": "Trascina il file da caricare",
-    "DROP_TO_UPLOAD_MESSAGE": "Trascina qui il tuo plugin da caricare. Solo ZIP - Max. 4MB",
+    "DROP_TO_UPLOAD_MESSAGE": "Trascina qui il tuo plugin da caricare. Solo ZIP - Max. 2MB",
     "UPLOAD_PLUGIN": "Upload plugin",
     "UPLOADING": "Upload in corso",
     "CREATED_AT": "Creato il",
index 190c600..3fd4f57 100644 (file)
@@ -15,7 +15,7 @@
     "DESCRIPTION": "説明",
     "DOWNLOAD_PLUGIN": "プラグインをダウンロード",
     "DROP_TO_UPLOAD": "アップロードするドロップ",
-    "DROP_TO_UPLOAD_MESSAGE": "アップロードするファイルをここにドロップします。 ZIP  -  Max。 4MB",
+    "DROP_TO_UPLOAD_MESSAGE": "アップロードするファイルをここにドロップします。 ZIP  -  Max。 2MB",
     "EDITOR": "編集者",
     "EDIT_PLUGIN": "プラグインを編集",
     "FINISH": "フィニッシュ",
index a3774d1..29c0869 100644 (file)
@@ -15,7 +15,7 @@
     "DESCRIPTION": "기술",
     "DOWNLOAD_PLUGIN": "플러그인 다운로드",
     "DROP_TO_UPLOAD": "올리기",
-    "DROP_TO_UPLOAD_MESSAGE": "여기에 파일을 올려 업로드하십시오. ZIP - Max. 4MB",
+    "DROP_TO_UPLOAD_MESSAGE": "여기에 파일을 올려 업로드하십시오. ZIP - Max. 2MB",
     "EDITOR": "편집자",
     "EDIT_PLUGIN": "플러그인 편집",
     "FINISH": "끝",
index 312c4ab..e80fbe2 100644 (file)
@@ -33,7 +33,7 @@
     "SAVE": "Save",
     "INSTALLING": "Installing",
     "DROP_TO_UPLOAD": "Drop To Upload",
-    "DROP_TO_UPLOAD_MESSAGE": "Drop your file here to upload. Only ZIP - Max. 4MB",
+    "DROP_TO_UPLOAD_MESSAGE": "Drop your file here to upload. Only ZIP - Max. 2MB",
     "UPLOAD_PLUGIN": "Upload plugin",
     "UPLOADING": "Uploading",
     "CREATED_AT": "Created at",
index aad4d13..154c0b7 100644 (file)
@@ -15,7 +15,7 @@
     "DESCRIPTION": "Apraksts",
     "DOWNLOAD_PLUGIN": "Lejupielādēt spraudni",
     "DROP_TO_UPLOAD": "Pārvelciet šeit, lai augšupielādētu",
-    "DROP_TO_UPLOAD_MESSAGE": "Pārvelciet datni šeit, lai augšupielādētu Tikai<i> ZIP</i> – maks. 4 MB",
+    "DROP_TO_UPLOAD_MESSAGE": "Pārvelciet datni šeit, lai augšupielādētu Tikai<i> ZIP</i> – maks. 2 MB",
     "EDITOR": "Redaktors",
     "EDIT_PLUGIN": "Rediģēt spraudni",
     "FINISH": "Pabeigt",
index 0ab1946..361f77e 100644 (file)
@@ -15,7 +15,7 @@
     "DESCRIPTION": "Beschrijving",
     "DOWNLOAD_PLUGIN": "Download plugin",
     "DROP_TO_UPLOAD": "Drop To Upload",
-    "DROP_TO_UPLOAD_MESSAGE": "Zet je bestand hier neer om te uploaden. Alleen ZIP - Max. 4MB",
+    "DROP_TO_UPLOAD_MESSAGE": "Zet je bestand hier neer om te uploaden. Alleen ZIP - Max. 2MB",
     "EDITOR": "Editor",
     "EDIT_PLUGIN": "Bewerk plugin",
     "FINISH": "Af hebben",
index 0fbd637..d49bd20 100644 (file)
@@ -15,7 +15,7 @@
     "DESCRIPTION": "Beskrivelse",
     "DOWNLOAD_PLUGIN": "Last ned plugin",
     "DROP_TO_UPLOAD": "Drop til opplasting",
-    "DROP_TO_UPLOAD_MESSAGE": "Slett filen din her for å laste opp. Kun ZIP - Maks. 4MB",
+    "DROP_TO_UPLOAD_MESSAGE": "Slett filen din her for å laste opp. Kun ZIP - Maks. 2MB",
     "EDITOR": "Redaktør",
     "EDIT_PLUGIN": "Rediger plugin",
     "FINISH": "Bli ferdig",
index 2bda13c..d694357 100644 (file)
@@ -15,7 +15,7 @@
     "DESCRIPTION": "Opis",
     "DOWNLOAD_PLUGIN": "Pobierz wtyczkę",
     "DROP_TO_UPLOAD": "Upuść, aby przesłać",
-    "DROP_TO_UPLOAD_MESSAGE": "Upuść swój plik tutaj, aby przesłać. Tylko ZIP - Max. 4 MB",
+    "DROP_TO_UPLOAD_MESSAGE": "Upuść swój plik tutaj, aby przesłać. Tylko ZIP - Max. 2 MB",
     "EDITOR": "Redaktor",
     "EDIT_PLUGIN": "Edytuj wtyczkę",
     "FINISH": "koniec",
index 312c4ab..e80fbe2 100644 (file)
@@ -33,7 +33,7 @@
     "SAVE": "Save",
     "INSTALLING": "Installing",
     "DROP_TO_UPLOAD": "Drop To Upload",
-    "DROP_TO_UPLOAD_MESSAGE": "Drop your file here to upload. Only ZIP - Max. 4MB",
+    "DROP_TO_UPLOAD_MESSAGE": "Drop your file here to upload. Only ZIP - Max. 2MB",
     "UPLOAD_PLUGIN": "Upload plugin",
     "UPLOADING": "Uploading",
     "CREATED_AT": "Created at",
index e93ddba..ac5383c 100644 (file)
@@ -15,7 +15,7 @@
     "DESCRIPTION": "Descrição",
     "DOWNLOAD_PLUGIN": "Download do plugin",
     "DROP_TO_UPLOAD": "Drop To Upload",
-    "DROP_TO_UPLOAD_MESSAGE": "Solte seu arquivo aqui para fazer o upload. Apenas ZIP - Máx. 4MB",
+    "DROP_TO_UPLOAD_MESSAGE": "Solte seu arquivo aqui para fazer o upload. Apenas ZIP - Máx. 2MB",
     "EDITOR": "editor",
     "EDIT_PLUGIN": "Editar plugin",
     "FINISH": "Terminar",
index 534d51d..39efe9f 100644 (file)
@@ -15,7 +15,7 @@
     "DESCRIPTION": "Описание",
     "DOWNLOAD_PLUGIN": "Скачать плагин",
     "DROP_TO_UPLOAD": "Загрузить",
-    "DROP_TO_UPLOAD_MESSAGE": "Отбросьте свой файл здесь, чтобы загрузить его. Только ZIP - Макс. 4MB",
+    "DROP_TO_UPLOAD_MESSAGE": "Отбросьте свой файл здесь, чтобы загрузить его. Только ZIP - Макс. 2MB",
     "EDITOR": "редактор",
     "EDIT_PLUGIN": "Изменить плагин",
     "FINISH": "Конец",
index 4085544..171327a 100644 (file)
@@ -15,7 +15,7 @@
     "DESCRIPTION": "Beskrivning",
     "DOWNLOAD_PLUGIN": "Hämta plugin",
     "DROP_TO_UPLOAD": "Släpp för att ladda upp",
-    "DROP_TO_UPLOAD_MESSAGE": "Släpp din fil här för att ladda upp. Endast ZIP - Max. 4MB",
+    "DROP_TO_UPLOAD_MESSAGE": "Släpp din fil här för att ladda upp. Endast ZIP - Max. 2MB",
     "EDITOR": "Redaktör",
     "EDIT_PLUGIN": "Redigera plugin",
     "FINISH": "Avsluta",
index 0c17adc..4646459 100644 (file)
@@ -15,7 +15,7 @@
     "DESCRIPTION": "Açıklama",
     "DOWNLOAD_PLUGIN": "Eklentiyi indir",
     "DROP_TO_UPLOAD": "Yüklenmeye Bırak",
-    "DROP_TO_UPLOAD_MESSAGE": "Yüklemek için dosyanızı buraya bırakın. Sadece ZIP - Maks. 4MB",
+    "DROP_TO_UPLOAD_MESSAGE": "Yüklemek için dosyanızı buraya bırakın. Sadece ZIP - Maks. 2MB",
     "EDITOR": "Editör",
     "EDIT_PLUGIN": "Eklentiyi düzenle",
     "FINISH": "Bitiş",
index ac2f84c..18246b8 100644 (file)
@@ -15,7 +15,7 @@
     "DESCRIPTION": "描述",
     "DOWNLOAD_PLUGIN": "下载插件",
     "DROP_TO_UPLOAD": "删除上传",
-    "DROP_TO_UPLOAD_MESSAGE": "将您的文件放在此处上传。只有ZIP  -  Max。 4MB",
+    "DROP_TO_UPLOAD_MESSAGE": "将您的文件放在此处上传。只有ZIP  -  Max。 2MB",
     "EDITOR": "编辑",
     "EDIT_PLUGIN": "编辑插件",
     "FINISH": "完",
index 98dc201..2956f0d 100644 (file)
@@ -15,7 +15,7 @@
     "DESCRIPTION": "描述",
     "DOWNLOAD_PLUGIN": "下載插件",
     "DROP_TO_UPLOAD": "刪除上傳",
-    "DROP_TO_UPLOAD_MESSAGE": "將您的文件放在此處上傳。只有ZIP  -  Max。 4MB",
+    "DROP_TO_UPLOAD_MESSAGE": "將您的文件放在此處上傳。只有ZIP  -  Max。 2MB",
     "EDITOR": "編輯",
     "EDIT_PLUGIN": "編輯插件",
     "FINISH": "完",
index d002733..0ef1225 100644 (file)
@@ -1,59 +1,59 @@
 {
   "OPENCHANNEL": {
     "TEXT": "Text",
-    "TIMES": "Zeitstempel",
-    "EDIT_AUTOREPLY": "Automatische Antwort bearbeiten",
+    "TIMES": "Die Anzahl der Zeiten pro Interaktion",
+    "EDIT_AUTOREPLY": "Bearbeiten Sie automatische Antwort",
     "AUTOREPLY": "Automatische Antwort",
     "NAME": "Name",
-    "OPENCHANNELQUEUES": "Warteschlangen offener Kanal",
-    "SEARCH_FOR_ANYONE": "Suche",
+    "OPENCHANNELQUEUES": "Offener Kanal Warteschlangen",
+    "SEARCH_FOR_ANYONE": "Suche für Jedermann",
     "ERRORS": {
-      "TEXT_REQUIRED": "Feld \"Text\" ist erforderlich",
-      "NAME_REQUIRED": "Name ist erforderlich",
-      "AGENT_TIMEOUT_REQUIRED": "Agent Timeout ist erforderlich",
-      "MOTIONADDRESS_REQUIRED": "Adresse ist erforderlich",
-      "MOTIONADDRESS_MUST_VALID_URL": "Adresse ungültiges Format",
-      "ACCEPTURL_MUST_VALID_URL": "URL ungültiges Format",
-      "TIMEOUT_REQUIRED": "Timeout ist erforderlich",
-      "REJECTURL_MUST_VALID_URL": "URL ungültiges Format",
-      "CLOSEURL_MUST_VALID_URL": "URL ungültiges Format",
-      "REPLYURI_REQUIRED": "Antwort-URL ungültiges Format",
-      "REPLYURI_MUST_VALID_URL": "Antwort-URL ungültiges Format",
-      "PRIORITY_REQUIRED": "Priorität ist erforderlich",
-      "CONDITION_REQUIRED": "Bedingung ist erforderlich",
-      "TRUEPRIORITY_REQUIRED": "Wahre Priorität ist erforderlich",
-      "FALSEPRIORITY_REQUIRED": "Falsche Priorität ist erforderlich",
+      "TEXT_REQUIRED": "Das Feld \"Text\" ist erforderlich",
+      "NAME_REQUIRED": "Der Name ist erforderlich",
+      "AGENT_TIMEOUT_REQUIRED": "Der Agent Timeout ist erforderlich",
+      "MOTIONADDRESS_REQUIRED": "Die Adresse ist erforderlich",
+      "MOTIONADDRESS_MUST_VALID_URL": "Die Adresse muss in einem gültigen Format",
+      "ACCEPTURL_MUST_VALID_URL": "Die URL muss in einem gültigen Format",
+      "TIMEOUT_REQUIRED": "Der Timeout ist erforderlich",
+      "REJECTURL_MUST_VALID_URL": "Die URL muss in einem gültigen Format",
+      "CLOSEURL_MUST_VALID_URL": "Die URL muss in einem gültigen Format",
+      "REPLYURI_REQUIRED": "Die Antwort URL ist erforderlich",
+      "REPLYURI_MUST_VALID_URL": "Die Antwort URL muss im gültigen Format geschrieben werden",
+      "PRIORITY_REQUIRED": "Die Priorität ist erforderlich",
+      "CONDITION_REQUIRED": "Der Zustand ist erforderlich",
+      "TRUEPRIORITY_REQUIRED": "Die wahre Priorität ist erforderlich",
+      "FALSEPRIORITY_REQUIRED": "Die falsche Priorität ist erforderlich",
       "AGENT_REQUIRED": "Pflichtfeld",
-      "TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Der Wert muss größer oder gleich sein als",
-      "PRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Der Wert muss größer oder gleich sein als",
-      "TRUEPRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Der Wert muss größer oder gleich sein als",
-      "FALSEPRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Der Wert muss größer oder gleich sein als",
+      "TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Der Wert muss größer als oder gleich",
+      "PRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Der Wert muss größer als oder gleich",
+      "TRUEPRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Der Wert muss größer als oder gleich",
+      "FALSEPRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Der Wert muss größer als oder gleich",
       "DISPOSITION_REQUIRED": "Pflichtfeld",
       "QUEUE_REQUIRED": "Pflichtfeld",
-      "KEY_MAX_LENGTH": "Schlüssel darf eine maximale Länge haben von {{max}}",
-      "TEXT_MAX_LENGTH": "Wert darf eine maximale Länge haben von {{max}}",
+      "KEY_MAX_LENGTH": "Schlüssel muss eine maximale Länge von {{max}}",
+      "TEXT_MAX_LENGTH": "Der Wert muss eine maximale Länge von {{max}} haben",
       "VALUE_REQUIRED": "Pflichtfeld",
       "COMMAND_REQUIRED": "Pflichtfeld",
       "LIST_REQUIRED": "Pflichtfeld",
       "KEY_REQUIRED": "Pflichtfeld",
-      "AGENT_TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Der Wert muss größer oder gleich sein als",
-      "NAME_MUST_VALID_PATTERN": "Format ungültig",
-      "TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Wert muss kleiner oder gleich sein als",
-      "AGENT_TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Wert muss kleiner oder gleich sein als",
-      "WAITFORTHEASSIGNEDAGENT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Der Wert muss größer oder gleich sein als",
-      "WAITFORTHEASSIGNEDAGENT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Wert muss kleiner oder gleich sein als",
+      "AGENT_TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Der Wert muss größer oder gleich sein",
+      "NAME_MUST_VALID_PATTERN": "Falsches Format",
+      "TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Der Wert muss kleiner oder gleich sein",
+      "AGENT_TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Der Wert muss kleiner oder gleich sein",
+      "WAITFORTHEASSIGNEDAGENT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Der Wert muss größer oder gleich sein",
+      "WAITFORTHEASSIGNEDAGENT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Der Wert muss kleiner oder gleich sein",
       "WAITFORTHEASSIGNEDAGENT_REQUIRED": "Pflichtfeld",
       "TAG_REQUIRED": "Pflichtfeld",
-      "AGENTTRANSFERTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Der Wert muss größer oder gleich sein als",
-      "AGENTTRANSFERTIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Wert muss kleiner oder gleich sein als",
+      "AGENTTRANSFERTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Der Wert muss größer oder gleich sein",
+      "AGENTTRANSFERTIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Der Wert muss kleiner oder gleich sein",
       "AGENTTRANSFERTIMEOUT_REQUIRED": "Pflichtfeld",
-      "QUEUETRANSFERTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Der Wert muss größer oder gleich sein als",
-      "QUEUETRANSFERTIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Wert muss kleiner oder gleich sein als",
+      "QUEUETRANSFERTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Der Wert muss größer oder gleich sein",
+      "QUEUETRANSFERTIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Der Wert muss kleiner oder gleich sein",
       "QUEUETRANSFERTIMEOUT_REQUIRED": "Pflichtfeld",
       "MANDATORYDISPOSITIONPAUSEID_REQUIRED": "Pflichtfeld",
       "ACCESSKEYID_REQUIRED": "Zugangsschlüssel-ID ist erforderlich",
-      "BOTNAME_REQUIRED": "Bot-Name ist erforderlich",
-      "SECRETACCESSKEY_REQUIRED": "Geheimer Schlüssel ist erforderlich",
+      "BOTNAME_REQUIRED": "Der Bot-Name ist erforderlich",
+      "SECRETACCESSKEY_REQUIRED": "Zugangsschlüssel geheim ist erforderlich",
       "CLIENTEMAIL_REQUIRED": "Pflichtfeld",
       "PRIVATEKEY_REQUIRED": "Pflichtfeld",
       "PROJECTID_REQUIRED": "Pflichtfeld"
     "GOTOIF": "Gotoif",
     "NOOP": "Noop",
     "QUEUE": "Warteschlange",
-    "EDIT_AGENT": "Agenteb bearbeiten",
-    "EDIT_GOTO": "Gehe zu bearbeiten",
-    "EDIT_NOOP": "Noop bearbeiten",
-    "EDIT_GOTOIF": "GoToIf bearbeiten",
+    "EDIT_AGENT": "Agent bearbeiten",
+    "EDIT_GOTO": "Bearbeiten Gehe zu",
+    "EDIT_NOOP": "Bearbeiten Noop",
+    "EDIT_GOTOIF": "Bearbeiten Gotoif",
     "EDIT_QUEUE": "Warteschlange bearbeiten",
-    "CONDITION": "Bedingung",
+    "CONDITION": "Zustand",
     "TRUEPRIORITY": "Wahre Priorität",
     "FALSEPRIORITY": "Falsche Priorität",
     "VALUE": "Wert",
     "PRIORITY": "Priorität",
     "AGENT_TIMEOUT": "Agent Timeout",
     "DESCRIPTION": "Beschreibung",
-    "ADD_OPENCHANNELQUEUE": "Warteschlange offener Kanal hinzufügen",
-    "EDIT_OPENCHANNELQUEUE": "Warteschlange offener Kanal bearbeiten",
-    "DELETE_OPENCHANNELQUEUE": "Warteschlange offener Kanal löschen",
-    "PENALTY": "Verzögerung",
+    "ADD_OPENCHANNELQUEUE": "Fügen Sie im Offenen Kanal Warteschlange",
+    "EDIT_OPENCHANNELQUEUE": "Offener Kanal Warteschlange bearbeiten",
+    "DELETE_OPENCHANNELQUEUE": "Löschen der Warteschlange im Offenen Kanal",
+    "PENALTY": "Strafe",
     "TEAMADD_OPENCHANNELQUEUE": "Team zur Warteschlange hinzufügen",
-    "AGENTADD_OPENCHANNELQUEUE": "Agenten zur Warteschlange hinzufügen",
+    "AGENTADD_OPENCHANNELQUEUE": "Agent zur Warteschlange hinzufügen",
     "ALL_AGENTS": "Alle Agenten",
     "SELECTED_AGENTS": "Ausgewählte Agenten",
     "CREATED_AT": "Erstellt am",
     "SAVE": "Speichern",
     "SETTINGS": "Einstellungen",
     "GENERAL": "Allgemein",
-    "OPENCHANNELACCOUNTS": "Konten offener Kanal",
+    "OPENCHANNELACCOUNTS": "Offener Kanal Konten",
     "MOTIONADDRESS": "Motion Adresse",
-    "ADD_OPENCHANNELACCOUNT": "Konto offener Kanal hinzufügen",
-    "EDIT_OPENCHANNELACCOUNT": "Konto offener Kanal bearbeiten",
-    "DELETE_OPENCHANNELACCOUNT": "Konto offener Kanal löschen",
+    "ADD_OPENCHANNELACCOUNT": "Öffnen Sie den Channel Account hinzufügen",
+    "EDIT_OPENCHANNELACCOUNT": "Öffnen Sie den Channel Account bearbeiten",
+    "DELETE_OPENCHANNELACCOUNT": "Öffnen Sie den Channel Account löschen.",
     "API": "API",
-    "DISPOSITIONS": "Qualifizierungen",
+    "DISPOSITIONS": "Bestimmungen",
     "WEBHOOKS": "WebHooks",
     "ACTIONS": "Aktionen",
     "LIST": "Liste",
     "FIDELITY": "Treue",
     "ACCEPT": "Akzeptieren",
-    "ACCEPTMETHOD": "Methode akzeptieren",
+    "ACCEPTMETHOD": "Die Methode",
     "ACCEPTURL": "URL akzeptieren",
     "REJECT": "Ablehnen",
     "REJECTMETHOD": "Methode ablehnen",
     "REJECTURL": "URL ablehnen",
-    "CLOSE": "Schließen",
-    "CLOSEMETHOD": "Methode schließen",
-    "CLOSEURL": "URL schließen",
-    "SELECTED": "Ausgewählt",
+    "CLOSE": "In der Nähe",
+    "CLOSEMETHOD": "In der Nähe Methode",
+    "CLOSEURL": "Der URL",
+    "SELECTED": "Ausgewählte",
     "SELECT_ALL": "Alle auswählen",
-    "SELECT_NONE": "Nichts auswählen",
+    "SELECT_NONE": "Wählen Sie \"Keine\"",
     "BACK": "Zurück",
     "OPENCHANNEL": "Offener Kanal",
-    "ID": "ID",
+    "ID": "Id",
     "TIMEOUT": "Timeout",
-    "OPENCHANNELDISPOSITIONS": "Qualifizierungen offener Kanal",
-    "NO_OPENCHANNELDISPOSITION_AVAILABLE": "Keine Qualifizierungen verfügbar",
-    "NEW_OPENCHANNELDISPOSITION": "Neue Qualifizierung",
-    "ADD_OPENCHANNELDISPOSITION": "Qualifizierung offener Kanal hinzufügen",
-    "EDIT_OPENCHANNELDISPOSITION": "Qualifizierung bearbeiten",
-    "DELETE_OPENCHANNELDISPOSITION": "Qualifizierung löschen",
-    "NEW_OPENCHANNELQUEUE": "Neue Warteschlange offener Kanal",
-    "NEW_OPENCHANNELACCOUNT": "Neues Konto offener Kanal",
-    "NO_AVAILABLE_INFO": "Keine Informationen verfügbar",
-    "ALL_TEAMS": "Alle Teams",
+    "OPENCHANNELDISPOSITIONS": "Offener Kanal Verfügungen",
+    "NO_OPENCHANNELDISPOSITION_AVAILABLE": "Keine offenen Kanal Dispositionen verfügbar",
+    "NEW_OPENCHANNELDISPOSITION": "Neue Offene Kanal inspektion",
+    "ADD_OPENCHANNELDISPOSITION": "Fügen Sie im Offenen Kanal inspektion",
+    "EDIT_OPENCHANNELDISPOSITION": "Bearbeiten Sie im Offenen Kanal inspektion",
+    "DELETE_OPENCHANNELDISPOSITION": "Löschen Sie im Offenen Kanal inspektion",
+    "NEW_OPENCHANNELQUEUE": "Neue Offene Kanal Warteschlange",
+    "NEW_OPENCHANNELACCOUNT": "Neue Open Channel Account",
+    "NO_AVAILABLE_INFO": "Keine verfügbaren Info",
+    "ALL_TEAMS": "Alle Mannschaften",
     "SELECTED_TEAMS": "Ausgewählte Teams",
     "REPLYURI": "Antwort URL",
     "RECEIVEURI": "Erhalten URL",
     "HELP": {
-      "RECEIVEURI": "Automatisch generierter API-String, um die Nachrichten über den offenen Kanal zu erhalten (POST-Methode). Zum Kopieren in die Zwischenablage klicken",
-      "REPLYURI": "URL des offenen Kanals zum Senden und Empfangen von Nachrichten",
+      "RECEIVEURI": "Dies ist die automatisch generierte API-String müssen Sie die Nachrichten in Ihrem offenen Kanal zu erhalten von der externen Anwendung (POST-Methode verwendet werden muss). Drücken Sie die Zwischenablage, um Sie in die Zwischenablage zu kopieren.",
+      "REPLYURI": "Dies ist die URL der Offene Kanal wird beim Senden oder Beantworten von Nachrichten",
       "NAME": "Nur Zahlen, Buchstaben und Sonderzeichen (._) werden unterstützt.",
       "LIST": "Contact Manager Liste zu verknüpfen von Kontakten",
       "TOKEN": "Fügen Sie diese Eigenschaft als Abfragezeichenfolge in Ihrer Web-Service-URL hinzu. Weitere Informationen finden Sie im Dokument doc <a target = \"_ blank\" href = \"https://wiki.xcallymotion.com/display/XMV/New Channels Configuration Steps",
-      "MANDATORYDISPOSITION": "Qualifizierung erforderlich",
-      "MANDATORYDISPOSITIONPAUSEID": "PausenID bei erforderlicher Qualifizierung",
-      "WELCOMEMESSAGE": "Willkommensnachricht beim Eintreffen der ersten Anfrage"
+      "MANDATORYDISPOSITION": "Zwingende Disposition",
+      "MANDATORYDISPOSITIONPAUSEID": "Pause zur Verwendung, wenn die obligatorische Disposition aktiviert ist",
+      "WELCOMEMESSAGE": "Dies ist die erste Nachricht, die an das Schütz gesendet wird"
     },
     "PAGE": "Seite",
     "ROWSPERPAGE": "Zeilen pro Seite",
-    "OF": "von",
+    "OF": "Von",
     "CONTACT": "Kontakt",
-    "STARTEDAT": "Startdatum",
+    "STARTEDAT": "Gestartet am",
     "STATUS": "Status",
     "CLOSED": "Geschlossen",
-    "OPENED": "Geöffnet",
+    "OPENED": "Öffnen",
     "OPEN": "Öffnen",
     "ACCOUNT": "Konto",
     "INTERACTION": "Interaktion",
-    "INTERACTIONS": "Interaktionen",
+    "INTERACTIONS": "Wechselwirkungen",
     "ALL": "Alle",
-    "SELECT_STATUS": "Status auswählen",
+    "SELECT_STATUS": "Wählen Sie einen Status",
     "FILTER": "Filter",
     "FILTERS": "Filter",
     "CLOSEDAT": "Geschlossen",
-    "DISPOSITION": "Qualifizierung",
-    "NOTES": "Anmerkungen",
-    "NO_INTERACTION_AVAILABLE": "Keine neuen Interaktionen verfügbar",
-    "SELECT_ACCOUNT": "Konto auswählen",
+    "DISPOSITION": "Disposition",
+    "NOTES": "Hinweise",
+    "NO_INTERACTION_AVAILABLE": "Es sind keine Wechselwirkungen zur Verfügung",
+    "SELECT_ACCOUNT": "Wählen Sie ein Konto",
     "GOTOP": "Gotop",
     "EDIT_GOTOP": "Gotop bearbeiten",
-    "EDIT_CLOSE": "Bearbeitung abschließen",
-    "INFO": "Information",
+    "EDIT_CLOSE": "Bearbeiten Schließen",
+    "INFO": "Info",
     "KEY": "Schlüssel",
     "REALTIME": "Echtzeit",
     "UNKNOWN": "Unbekannt",
-    "UNREGISTERED": "Nicht registriert",
+    "UNREGISTERED": "Unregistrierte",
     "UNAVAILABLE": "Nicht verfügbar",
-    "NOT_INUSE": "Nicht in Verwendung",
+    "NOT_INUSE": "Nicht in Gebrauch",
     "REACHABLE": "Erreichbar",
-    "IN_USE": "In Verwendung",
+    "IN_USE": "Im Einsatz",
     "AGENTS": "Agenten",
     "QUEUES": "Warteschlangen",
-    "FULLNAME": "Vollständiger Name",
-    "INTERNAL": "Intern",
+    "FULLNAME": "Fullname",
+    "INTERNAL": "Interne",
     "PHONE_STATE": "Telefonstatus",
     "PHONE_STATUS": "Telefonstatus",
     "PAUSE": "Pause",
     "LOGOUT": "An-/Abmelden",
-    "AGENTADD_QUEUE": "Agenten zur Warteschlange offener Kanal hinzufügen",
+    "AGENTADD_QUEUE": "Agent zu Offenen Kanal Warteschlange hinzufügen",
     "UNPAUSE": "Pause beenden",
     "DEFAULT_PAUSE": "Standard Pause",
     "LOGGED_IN": "Angemeldet",
     "PAUSED": "Angehalten",
     "READY": "Bereit",
-    "WAITING": "Wartezustand",
-    "VOICE": "Anrufe",
+    "WAITING": "Warten",
+    "VOICE": "Voice",
     "CHAT": "Chat",
     "MAIL": "E-Mail",
     "SMS": "SMS",
     "FAX": "Fax",
-    "AGENTSADD_QUEUE": "Agenten zur Warteschlange offener Kanal hinzufügen",
+    "AGENTSADD_QUEUE": "Agenten, die Offenen Kanal Warteschlange hinzufügen",
     "NO_AGENT_ONLINE": "Kein Agent Online",
-    "GOTOREALTIME_OPENCHANNELQUEUE": "Zum offener Kanal Echtzeitmonitoring",
-    "PARTIALPAUSE": "Teilpause",
+    "GOTOREALTIME_OPENCHANNELQUEUE": "In Echtzeit, offenen Kanal Warteschlange",
+    "PARTIALPAUSE": "Lastschriftzahlung teilweise Pause",
     "BUSY": "Besetzt",
     "TIMER": "Timer",
     "IDLE": "Leerlauf",
     "CAPACITY": "Kapazität",
     "TAGS": "Tags",
-    "SPYINTERACTION": "Mithören",
-    "INTERACTIONS_OPENCHANNELACCOUNT": "Zu Interaktionen gehen",
-    "REFRESH_INTERACTIONS": "Interaktionen aktualisieren",
+    "SPYINTERACTION": "Spy",
+    "INTERACTIONS_OPENCHANNELACCOUNT": "Zu Wechselwirkungen gehen",
+    "REFRESH_INTERACTIONS": "Aktualisieren Interaktionen",
     "DELETE": "Löschen",
-    "NO_OPENCHANNELCANNEDANSWER_AVAILABLE": "Keine Textvorlagen verfügbar",
-    "NEW_OPENCHANNELCANNEDANSWER": "Neue Textvorlage",
-    "ADD_OPENCHANNELCANNEDANSWER": "Textvorlage hinzufügen",
-    "EDIT_OPENCHANNELCANNEDANSWER": "Textvorlage bearbeiten",
-    "DELETE_OPENCHANNELCANNEDANSWER": "Textvorlage löschen",
-    "DELIVERYREPORTURL": "URL für Zustellungsbericht",
+    "NO_OPENCHANNELCANNEDANSWER_AVAILABLE": "Keine vordefinierten Antworten verfügbar",
+    "NEW_OPENCHANNELCANNEDANSWER": "Neue vordefinierte Antwort",
+    "ADD_OPENCHANNELCANNEDANSWER": "Vordefinierte Antwort hinzufügen",
+    "EDIT_OPENCHANNELCANNEDANSWER": "Vordefinierte Antwort bearbeiten",
+    "DELETE_OPENCHANNELCANNEDANSWER": "Vordefinierte Antwort löschen",
+    "DELIVERYREPORTURL": "Zustellungsbericht-URL",
     "DELETE_INTERACTION": "Interaktion löschen",
-    "COMMAND": "Eingabe",
+    "COMMAND": "Befehl",
     "EDIT_SYSTEM": "System bearbeiten",
     "SYSTEM": "System",
     "VARIABLE": "Variable",
     "NOTIFICATION": "Benachrichtigung",
-    "NOTIFICATIONSHAKE": "Schütteln",
-    "NOTIFICATIONSOUND": "Klingeln",
+    "NOTIFICATIONSHAKE": "Shake",
+    "NOTIFICATIONSOUND": "Klingen",
     "NOTIFICATIONTEMPLATE": "Vorlage",
-    "INSERT_MESSAGE_HERE": "Textnachricht hier eingeben",
+    "INSERT_MESSAGE_HERE": "Fügen Sie hier Ihre Textnachricht ein",
     "WAITFORTHEASSIGNEDAGENT": "Warte auf den zugewiesenen Agenten",
-    "ADVANCED": "Erweitert",
+    "ADVANCED": "Fortgeschritten",
     "PROXY": "Proxy",
-    "TOKEN": "Token",
+    "TOKEN": "Zeichen",
     "EDIT_TAG": "Tag bearbeiten",
-    "TAG": "Tag",
-    "AGENTADD_OPENCHANNELACCOUNT": "Konto offener Kanal hinzufügen",
-    "CANNED_ANSWER_NOT_FOUND": "Keine Textvorlagen gefunden",
-    "CANNED_ANSWER_SEARCH": "Nach Textvorlagen suchen",
-    "MAPKEY": "MAP-KEY",
+    "TAG": "Etikett",
+    "AGENTADD_OPENCHANNELACCOUNT": "Fügen Sie Agent zu Openchannel Account hinzu",
+    "CANNED_ANSWER_NOT_FOUND": "Es wurden keine vordefinierten Antworten gefunden",
+    "CANNED_ANSWER_SEARCH": "Geben Sie einen Text ein, um eine vordefinierte Antwort zu suchen",
+    "MAPKEY": "Karten Schlüssel",
     "SEND": "Senden",
-    "TO": "An",
-    "AGENTTRANSFER": "Weiterleitung Agent",
+    "TO": "Zu",
+    "AGENTTRANSFER": "Agent Transfer",
     "AGENTTRANSFERTIMEOUT": "Zeitüberschreitung für Agententransfer",
-    "QUEUETRANSFER": "Weiterleitung Warteschlange",
-    "QUEUETRANSFERTIMEOUT": "Zeitüberschreitung für Warteschlangentransfer",
-    "TRANSFER": "Weiterleitung",
-    "CANNEDANSWERS": "Textvorlagen",
+    "QUEUETRANSFER": "Warteschlangenübertragung",
+    "QUEUETRANSFERTIMEOUT": "Warteschlangenübertragungs-Timeout",
+    "TRANSFER": "Transfer",
+    "CANNEDANSWERS": "Vordefinierte Antworten",
     "DOWNLOAD_INTERACTION": "Herunterladen",
-    "OPENCHANNELCANNEDANSWERS": "Textvorlagen offener Kanal",
-    "LOGIN_TIME": "Zeit angemeldet",
-    "PAUSE_TIME": "Zeit in Pause",
-    "TEAMS_ASSOCIATION": "Teamzuweisung",
-    "MANDATORYDISPOSITION": "Qualifizierung erforderlich",
-    "MANDATORYDISPOSITIONPAUSEID": "Qualifizierung pausieren, sofern sonst erforderlich",
-    "DIALOGFLOW": "DialogFlow",
-    "EDIT_DIALOGFLOW": "DialogFlow bearbeiten",
+    "OPENCHANNELCANNEDANSWERS": "Vordefinierte Antworten",
+    "LOGIN_TIME": "Login-Zeit",
+    "PAUSE_TIME": "Pausenzeit",
+    "TEAMS_ASSOCIATION": "Vereinigung der Mannschaften",
+    "MANDATORYDISPOSITION": "Zwingende Disposition",
+    "MANDATORYDISPOSITIONPAUSEID": "Pause zur Verwendung, wenn die obligatorische Disposition aktiviert ist",
+    "DIALOGFLOW": "Dialogablauf",
+    "EDIT_DIALOGFLOW": "Bearbeiten Sie die Dialogflow-Konfiguration",
     "LANGUAGE": "Sprache",
-    "WELCOMEMESSAGE": "Willkommensnachricht",
+    "WELCOMEMESSAGE": "Willkommen Messsage",
     "ACCESSKEYID": "Zugangsschlüssel-ID",
     "AMAZONLEX": "AmazonLex",
-    "BOTNAME": "Botname",
-    "EDIT_AMAZONLEX": "Lex-Konfiguration bearbeiten",
-    "LEXREGION": "Lex Region",
-    "SECRETACCESSKEY": "Geheimer Schlüssel",
-    "TOOLTIP_SCREENRECORDING_OFF": "Bildschirmaufnahme angehalten",
+    "BOTNAME": "Bot-Name",
+    "EDIT_AMAZONLEX": "Bearbeiten Sie die Lex-Konfiguration",
+    "LEXREGION": "Region",
+    "SECRETACCESSKEY": "Zugangsschlüssel geheim",
+    "TOOLTIP_SCREENRECORDING_OFF": "Bildschirmaufnahme verfügbar",
     "TOOLTIP_SCREENRECORDING_ON": "Bildschirmaufnahme läuft",
-    "DOWNLOAD_WITHOUT_ATTACHMENTS": "Herunterlagen ohne Anhänge",
-    "DOWNLOAD_WITH_ATTACHMENTS": "Herunterlagen inkl. Anhänge",
+    "DOWNLOAD_WITHOUT_ATTACHMENTS": "Download ohne Anhänge",
+    "DOWNLOAD_WITH_ATTACHMENTS": "Mit Anhängen herunterladen",
     "LASTMESSAGE": "Letzte Nachricht",
-    "CLIENTEMAIL": "Kunden E-Mail",
+    "CLIENTEMAIL": "Kunden-E-Mail",
     "DIALOGFLOWV2": "Dialogflow V2",
     "EDIT_DIALOGFLOWV2": "Dialogflow V2 bearbeiten",
-    "PRIVATEKEY": "Privater Schlüssel",
+    "PRIVATEKEY": "Privat Schlüssel",
     "PROJECTID": "Projekt-ID",
     "ADD_NOTE": "Notiz hinzufügen",
-    "NOTE": "Notiz"
+    "NOTE": "Hinweis"
   }
 }
index ee88755..b5e8a7a 100644 (file)
 {
   "STAFF": {
     "CONTEXT": "Kontext",
-    "RINGINUSE": "Innerhalb Verteilungsgrupppe",
+    "RINGINUSE": "Ring im Einsatz",
     "USERS": "Benutzer",
     "AGENTS": "Agenten",
-    "TOGGLE_SIDENAV": "Navigationsleiste umschalten",
-    "SEARCH_FOR_ANYONE": "Suche",
+    "TOGGLE_SIDENAV": "Um sidenav",
+    "SEARCH_FOR_ANYONE": "Suche für Jedermann",
     "BACK": "Zurück",
-    "MULTI_SELECT_TOGGLE": "Mehrfachauswahl ja/nein",
-    "SELECT_ALL": "Alles auswählen",
-    "SELECT_NONE": "Nichts auswählen",
-    "SELECTED": "Ausgewählt",
+    "MULTI_SELECT_TOGGLE": "Wählen Sie toggle multi",
+    "SELECT_ALL": "Alle auswählen",
+    "SELECT_NONE": "Wählen Sie \"Keine\"",
+    "SELECTED": "Ausgewählte",
     "DELETE_SELECTED": "Auswahl löschen",
     "EXPORT_SELECTED": "Auswahl exportieren",
     "ALL_USERS": "Alle Benutzer",
     "ALL_AGENTS": "Alle Agenten",
     "SORT": "Sortieren",
     "NAME": "Name",
-    "FULLNAME": "Vollständiger Name",
+    "FULLNAME": "Voller Name",
     "A_TO_Z": "(A bis Z)",
     "Z_TO_A": "(Z bis A)",
     "MORE": "Mehr",
     "DELETE_USER": "Benutzer löschen",
     "EDIT_USER": "Benutzer bearbeiten",
-    "DELETE_AGENT": "Agenten löschen",
-    "EDIT_AGENT": "Agenten bearbeiten",
+    "DELETE_AGENT": "Bedienplatz löschen",
+    "EDIT_AGENT": "Agent bearbeiten",
     "DELETE": "Löschen",
     "SAVE": "Speichern",
     "ADD_USER": "Benutzer hinzufügen",
     "ADD_AGENT": "AGENT HINZUFÜGEN",
-    "NO_RESULTS": "Keine Ergebnisse",
+    "NO_RESULTS": "Keine Ergebnisse.",
     "CLOSE_DIALOG": "Dialog schließen",
-    "NAME_REQUIRED": "Name (erforderlich)",
+    "NAME_REQUIRED": "Name (erforderlich).",
     "USERNAME": "Benutzername",
     "SHOW_ALL_FIELDS": "Alle Felder anzeigen",
     "PHONE_NUMBER": "Telefonnummer",
     "EMAIL": "E-Mail",
     "PASSWORD": "Passwort",
     "ERRORS": {
-      "FULLNAME_REQUIRED": "Vollständiger Name ist erforderlich",
-      "USERNAME_REQUIRED": "Benutzername ist erforderlich",
-      "EMAIL_REQUIRED": "E-Mail ist erforderlich",
-      "PASSWORD_REQUIRED": "Passwort ist erforderlich",
-      "CONFIRM_NOT_MATCH": "Die Passwörter stimmen nicht überein",
-      "EMAIL_MUST_VALID": "E-Mail Format ungültig",
-      "ACCOUNTNAME_REQUIRED": "Konto ist erforderlich",
-      "NAME_REQUIRED": "Name ist erforderlich",
-      "HOST_REQUIRED": "Host ist erforderlich",
-      "CHATCAPACITY_REQUIRED": "Kapazität Chat ist erforderlich",
-      "MAILCAPACITY_REQUIRED": "Kapazität E-Msil ist erforderlich",
-      "FAXCAPACITY_REQUIRED": "Kapazität Fax ist erforderlich",
-      "SMSCAPACITY_REQUIRED": "Kapazität SMS ist erforderlich",
-      "OPENCHANNELCAPACITY_REQUIRED": "Kapazität offener Kanal ist erforderlich",
-      "SIPEXPIRES_REQUIRED": "SIP-Ablaufdatum ist erforderlich",
-      "SIPPORT_REQUIRED": "SIP-Port ist erforderlich",
-      "UNCONDITIONALNUMBER_REQUIRED": "Zielrufnummer ist erforderlich",
-      "NOREPLYNUMBER_REQUIRED": "Nummer bei keiner Antwort ist erforderlich",
-      "BUSYNUMBER_REQUIRED": "Nummer bei Besetzt ist erforderlich",
-      "USERNAME_MUST_VALID_PATTERN": "Benutzername ungültig {{regex}}.",
-      "REMOTECONTROLPORT_REQUIRED": "Port für Remote ist erforderlich",
-      "CHATCAPACITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Kapazität Chat muss größer oder gleich sein als",
-      "MAILCAPACITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Kapazität E-Mail muss größer oder gleich sein als",
-      "FAXCAPACITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Kapazität Fax muss größer oder gleich sein als",
-      "OPENCHANNELCAPACITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Kapazität offener Kanal muss größer oder gleich sein als",
-      "AUTOANSWERDELAY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Wert muss größer oder gleich sein als",
+      "FULLNAME_REQUIRED": "Der Fullname ist erforderlich",
+      "USERNAME_REQUIRED": "Der Benutzername ist erforderlich",
+      "EMAIL_REQUIRED": "Die E-Mail ist erforderlich",
+      "PASSWORD_REQUIRED": "Das Kennwort ist erforderlich",
+      "CONFIRM_NOT_MATCH": "Die Kennwörter stimmen nicht überein.",
+      "EMAIL_MUST_VALID": "Die e-Mail muss in einem gültigen Format",
+      "ACCOUNTNAME_REQUIRED": "Der Account ist erforderlich.",
+      "NAME_REQUIRED": "Der Name ist erforderlich",
+      "HOST_REQUIRED": "Der Host wird benötigt",
+      "CHATCAPACITY_REQUIRED": "Die Kapazität ist erforderlich",
+      "MAILCAPACITY_REQUIRED": "Die E-Mail Kapazität erforderlich ist",
+      "FAXCAPACITY_REQUIRED": "Die Kapazität ist erforderlich",
+      "SMSCAPACITY_REQUIRED": "Die SMS-Kapazität erforderlich ist",
+      "OPENCHANNELCAPACITY_REQUIRED": "Der Offene Kanal Kapazität erforderlich ist",
+      "SIPEXPIRES_REQUIRED": "Der SIP-Ablauf ist erforderlich",
+      "SIPPORT_REQUIRED": "Die SIP-Port erforderlich.",
+      "UNCONDITIONALNUMBER_REQUIRED": "Die Zielrufnummer ist erforderlich",
+      "NOREPLYNUMBER_REQUIRED": "Die Nummer ist keine Antwort erforderlich",
+      "BUSYNUMBER_REQUIRED": "Die besetzt ist erforderlich",
+      "USERNAME_MUST_VALID_PATTERN": "Der Benutzername muss gültige {{regex}}.",
+      "REMOTECONTROLPORT_REQUIRED": "Die Fernbedienung Anschluss erforderlich",
+      "CHATCAPACITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Der Chat Kapazität muss größer als oder gleich",
+      "MAILCAPACITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Die E-Mail Kapazität muss größer als oder gleich",
+      "FAXCAPACITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Das Fax Kapazität muss größer als oder gleich",
+      "OPENCHANNELCAPACITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Der offene Kanal Kapazität muss größer als oder gleich",
+      "AUTOANSWERDELAY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Der Wert muss größer als oder gleich",
       "AUTOANSWERDELAY_REQUIRED": "Pflichtfeld",
       "MONITOREXTENSION_REQUIRED": "Pflichtfeld",
       "ENCRYPTION": "SRTP (Secure Realtime Protocol) Verschlüsselung",
       "DTLSCERTFILE_REQUIRED": "Pflichtfeld",
       "DTLSPRIVATEKEY_REQUIRED": "Pflichtfeld",
-      "SECURE_PASSWORD_PATTERN": "Das Passwort muss mindestens 8 Zeichen lang sein und 1 Kleinbuchstaben, 1 Großbuchstaben, 1 Zahl und 1 Sonderzeichen enthalten",
+      "SECURE_PASSWORD_PATTERN": "Das Passwort muss mindestens 8 Zeichen lang sein und 1 Kleinbuchstabe, 1 Großbuchstabe, 1 Zahl und 1 Sonderzeichen haben ~! @",
       "ALLOWCODECS_REQUIRED": "Pflichtfeld",
       "CRUDPERMISSIONS_REQUIRED": "Pflichtfeld",
       "USERPROFILE_REQUIRED": "Pflichtfeld",
-      "PASSWORD_OLDPASSWORD_MATCH": "Neues und altes Passwort dürfen nicht gleich sein",
+      "PASSWORD_OLDPASSWORD_MATCH": "Das neue Passwort muss sich vom vorherigen Passwort unterscheiden",
       "CONFIRM_REQUIRED": "Pflichtfeld",
       "WHATSAPPCAPACITY_REQUIRED": "Pflichtfeld"
     },
     "ACCOUNT": "Konto",
-    "VOICE": "Anrufe",
+    "VOICE": "Voice",
     "CREATED_AT": "Erstellt am",
     "ROLE": "Rolle",
-    "PERSONAL_INFO": "Persönliche Informationen",
+    "PERSONAL_INFO": "Persönliche Infos",
     "DESCRIPTION": "Beschreibung",
-    "CHANGE_AVATAR": "Avatar ändern",
+    "CHANGE_AVATAR": "Avatar ändern.",
     "GENERAL": "Allgemein",
-    "INTERNAL": "Intern",
-    "TRANSPORT": "Transport",
+    "INTERNAL": "Interne",
+    "TRANSPORT": "Verkehr",
     "ALLOWCODECS": "Codecs erlaubt",
     "HELP": {
       "ALLOWCODECS": "Erlaubt Codecs in der Reihenfolge ihrer Präferenz",
       "TRANSPORT": "Festlegen der Standardeinstellungen für Transporte. Die Reihenfolge bestimmt den primären Standard.",
-      "HOST": "Wie finden Sie die Client-IP oder den Host-Namen um das Telefon zu registrieren, verwenden Sie das Schlüsselwort Dynamic anstelle von Host-IP.",
-      "NAT": "Ändert das Verhalten von Sternchen für Clients hinter einer Firewall. Wenn der Komma-getrennten Optionen ist \"Nein\", Asterisk ignoriert alle anderen Einstellungen und die nat=No.",
-      "SIPEXPIRES": "Standardeinstellung: 160",
+      "HOST": "Wie finden Sie die Client-IP oder den Host-Namen. Wenn Sie möchten, dass das Telefon zu registrieren, verwenden Sie das Schlüsselwort Dynamic anstelle von Host-IP.",
+      "NAT": "Ändert das Verhalten von Sternchen für Clients hinter einer Firewall.Wenn der Komma-getrennten Optionen ist \"Nein\", Asterisk ignoriert alle anderen Einstellungen und die nat=No.",
+      "SIPEXPIRES": "Standardeinstellung: 120",
       "SIPPORT": "Standardeinstellung: 5160",
-      "TYPE": "Legt das SIP-Rolle innerhalb der Sternchen. User: eingehende Authentifizierung - Peer: für ausgehende Anrufe - Freund: Deckt beide Eigenschaften",
-      "CHATCAPACITY": "0 für unbegrenzt",
-      "MAILCAPACITY": "0 für unbegrenzt",
-      "FAXCAPACITY": "0 für unbegrenzt",
-      "SMSCAPACITY": "0 für unbegrenzt",
-      "OPENCHANNELCAPACITY": "0 für unbegrenzt",
-      "CALLGROUP": "Anrufgruppe",
-      "PICKUPGROUP": "Übernahmegruppe",
+      "TYPE": "Legt das SIP-Rolle innerhalb der Sternchen. User: Wird verwendet, um die Authentifizierung für eingehende - Peer: für ausgehende Anrufe - Freund: Deckt sowohl die Eigenschaften der oben genannten.",
+      "CHATCAPACITY": "Null bedeutet unbegrenzt.",
+      "MAILCAPACITY": "Null bedeutet unbegrenzt.",
+      "FAXCAPACITY": "Null bedeutet unbegrenzt.",
+      "SMSCAPACITY": "Null bedeutet unbegrenzt.",
+      "OPENCHANNELCAPACITY": "Null bedeutet unbegrenzt.",
+      "CALLGROUP": "Legt der Agent callgroup",
+      "PICKUPGROUP": "Definiert die Gruppen in denen der Agent Anrufe annehmen können",
       "USERNAME": "Nur Zahlen, Buchstaben und Sonderzeichen (._) werden unterstützt.",
       "ENCRYPTION": "SRTP (Secure Realtime Protocol) Verschlüsselung",
       "LAST_PASSWORD_RESET_AT": "Letztes Datum und Uhrzeit, zu der das Passwort geändert wurde. Wenn die Allgemeinen Einstellungen für Secure Suite aktiviert sind, läuft das Passwort nach 90 Tagen ab.",
       "DTLSCERTFILE": "Verknüpfen Sie mit dem gültigen TLS-Zertifikat (.crt-Datei). Standardwert: '/etc/pki/tls/certs/motion.crt'.",
       "DTLSPRIVATEKEY": "Verknüpfen Sie mit dem privaten Schlüssel des Zertifikats (.key-Datei). Standardwert: '/etc/pki/tls/private/motion.key'.",
       "SAVE_PERMISSIONS": "Jeder Abschnitt, der ausstehende Änderungen enthält, wird gespeichert",
-      "CUSTOM_DASHBOARDS_PERMISSIONS": "Berechtigungen für benutzerdefinierte Dashboards werden im Werkzeuge-Modul verwaltet",
+      "CUSTOM_DASHBOARDS_PERMISSIONS": "Berechtigungen für benutzerdefinierte Dashboards werden im Modul Tools verwaltet",
       "APIKEY": "Verwenden Sie die Schaltfläche \"API-Schlüsselmanager\" in der Symbolleiste, um diesen Schlüssel zu verwalten",
-      "ENABLEAUTOMATICSCREENRECORDING": "Funktionalität ist nur für Sprachkanäle verfügbar",
-      "BLOCKED": "Zugriff sperren/entsperren",
-      "DISABLED": "Auswählen zum Aktivieren",
-      "WHATSAPPCAPACITY": "Maximale Anzahl gleichzeitiger Whatsapp-Interaktionen pro Agent (0 = unbegrenzt)",
+      "ENABLEAUTOMATICSCREENRECORDING": "Die Funktionalität ist nur für Sprachkanäle verfügbar",
+      "BLOCKED": "Zugriff sperren / entsperren",
+      "DISABLED": "Zum Deaktivieren auswählen / Zum Reaktivieren deaktivieren",
+      "WHATSAPPCAPACITY": "Maximale Anzahl gleichzeitiger Kanalinteraktionen pro Agent (0 = unbegrenzt)",
       "MASK_SENSITIVE_DATA": "Maskieren Sie vertrauliche Daten in der gesamten Anwendung (z. B. Telefonnummern und E-Mail-Adressen).",
       "WSS_PORT": "Standard: 8089"
     },
-    "NEW_PASSWORD": "Neues Passwort",
+    "NEW_PASSWORD": "Neues Kennwort",
     "CONFIRM_PASSWORD": "Passwort bestätigen",
     "CHANGE_PASSWORD": "Passwort ändern",
-    "CHANGEPASSWORD_AGENT": "Agent",
-    "CHANGEPASSWORD_USER": "Nutzer",
-    "CHANGEPASSWORD_TELEPHONE": "Telefon",
-    "LOGININPAUSE": "Pause nach Anmelden",
+    "CHANGEPASSWORD_AGENT": "Passwort ändern",
+    "CHANGEPASSWORD_USER": "Passwort ändern",
+    "CHANGEPASSWORD_TELEPHONE": "Passwort ändern",
+    "LOGININPAUSE": "Geben Sie Ihren Benutzernamen und Ihr Passwort In der Pause",
     "HOST": "Host",
     "NAT": "NAT",
-    "CHANSPY": "Listen-In",
+    "CHANSPY": "ChanSpy",
     "OTHER_CHANNELS": "Andere Kanäle",
-    "CHATCAPACITY": "Kapazität Chats",
-    "MAILCAPACITY": "Kapazität E-Mail",
-    "FAXCAPACITY": "Kapazität Fax",
-    "SMSCAPACITY": "Kapazität SMSW",
-    "OPENCHANNELCAPACITY": "Kapazität offener Kanal",
+    "CHATCAPACITY": "Chat Kapazität",
+    "MAILCAPACITY": "E-Kapazität",
+    "FAXCAPACITY": "Fax Kapazität",
+    "SMSCAPACITY": "Sms-Kapazität",
+    "OPENCHANNELCAPACITY": "Offener Kanal Kapazität",
     "MOTIONBAR": "Motion Bar",
     "SETTINGS": "Einstellungen",
-    "AUTOANSWER": "Auto-Antwort",
+    "AUTOANSWER": "\"Autom. Antwort\"",
     "ENABLESETTINGS": "Einstellungen aktivieren",
     "CALL_FORWARDING": "Anrufweiterleitung",
-    "UNCONDITIONAL": "Generell",
-    "UNCONDITIONALNUMBER": "Nummer Weiterleitung generell",
-    "NOREPLY": "Bei keiner Antwort",
-    "NOREPLYNUMBER": "Nummer Weiterleitung keine Antwort",
-    "BUSY": "Bei Besetzt",
-    "BUSYNUMBER": "Nummer Weiterleitung Besetzt",
-    "REMOTE_CONTROL": "Remote-Nebenstelle",
-    "REMOTECONTROL": "Remote-Nebenstelle",
-    "REMOTECONTROLPORT": "Port Remote-Nebenstelle",
+    "UNCONDITIONAL": "Unbedingte",
+    "UNCONDITIONALNUMBER": "Uneingeschränkte Anzahl",
+    "NOREPLY": "Keine Antwort",
+    "NOREPLYNUMBER": "\"Keine Antwort\"-Nummer",
+    "BUSY": "Besetzt",
+    "BUSYNUMBER": "Nummer besetzt",
+    "REMOTE_CONTROL": "Fernbedienung",
+    "REMOTECONTROL": "Fernbedienung",
+    "REMOTECONTROLPORT": "Fernbedienung",
     "SIP": "SIP",
-    "SIPEXPIRES": "SIP-Ablaufdatum",
+    "SIPEXPIRES": "SIP läuft [sec]",
     "SIPPORT": "SIP-Port",
-    "PENALTY": "Verzögerung",
+    "PENALTY": "Strafe",
     "ACCOUNTNAME": "Account Name",
     "ADD_TELEPHONE": "Telefon hinzufügen",
     "EDIT_TELEPHONE": "Telefon bearbeiten",
     "DELETE_TELEPHONE": "Telefon löschen",
     "TEAMS": "Teams",
     "DELETE_TEAM": "Team löschen",
-    "AGENTADD_TEAM": "Agenten zu einem Team hinzufügen",
-    "EDIT_TEAM": "Team bearbeiten",
+    "AGENTADD_TEAM": "Hinzufügen von Agenten zu einer Gruppe",
+    "EDIT_TEAM": "Team bearbeiten.",
     "TYPE": "Typ",
-    "TELEPHONES": "Telefonnummern",
-    "CALLERID": "Anrufer-ID",
-    "ENABLERECORDING": "Aufzeichnung aktiv",
+    "TELEPHONES": "Telefone",
+    "CALLERID": "Die Anrufer-ID",
+    "ENABLERECORDING": "Aktivieren der Aufzeichnung",
     "STAFF": "Personal",
-    "ID": "ID",
+    "ID": "Id",
     "NEW_USER": "Neuer Benutzer",
     "NEW_AGENT": "Neuer Agent",
     "NEW_TELEPHONE": "Neues Telefon",
     "NEW_TEAM": "Neues Team",
     "ADD_TEAM": "Team hinzufügen",
-    "JOIN_QUEUE": "In Warteschlange beitreten",
+    "JOIN_QUEUE": "Melden Sie Warteschlange",
     "CAPACITY": "Kapazität",
     "AUTOINTERNAL": "Interne Nummer automatisch generieren",
-    "ADD_AGENT_TO_TEAM": "Agenten zum Team hinzufügen",
-    "TEAMADD_AGENT": "Zum Team hinzufügen",
-    "NO_AVAILABLE_INFO": "Keine Informationen verfügbar",
+    "ADD_AGENT_TO_TEAM": "Hinzufügen von Agenten zu einer Gruppe",
+    "TEAMADD_AGENT": "Agent zu Gruppe hinzufügen",
+    "NO_AVAILABLE_INFO": "Keine verfügbaren Info",
     "PERMISSIONS": "Berechtigungen",
-    "ADD_AGENT_TO_QUEUE": "Agenten zur Warteschlange hinzufügen",
+    "ADD_AGENT_TO_QUEUE": "Agent zur Warteschlange hinzufügen",
     "ALL_MODULES_AVAILABLE": "Alle Module verfügbar",
-    "CALLGROUP": "Gruppenanruf",
+    "CALLGROUP": "Gruppenruf",
     "PICKUPGROUP": "Übernahmegruppe",
-    "QUEUEADD_AGENT_VOICE_OUTBOUND": "Agenten hinzufügen - ausgehende Anrufe",
-    "QUEUEADD_AGENT_VOICE_INBOUND": "Agenten hinzufügen - eingehende Anrufe",
-    "QUEUEADD_AGENT_CHAT_INBOUND": "Agenten hinzufügen - Chat-Warteschlangen",
-    "QUEUEADD_AGENT_MAIL_INBOUND": "Agenten hinzufügen - E-Mail-Warteschlangen",
-    "QUEUEADD_AGENT_SMS_INBOUND": "Agenten hinzufügen - SMS-Warteschlangen",
-    "QUEUEADD_AGENT_OPENCHANNEL_INBOUND": "Agenten hinzufügen - offener Kanal-Warteschlangen",
-    "QUEUEADD_AGENT_FAX_INBOUND": "Agenten hinzufügen - Fax-Warteschlangen",
-    "QUEUEADD_USER_VOICE_INBOUND": "Nutzer hinzufügen - eingehende Anrufe",
-    "QUEUEADD_USER_CHAT_INBOUND": "Nutzer hinzufügen - eingehende Chats",
-    "QUEUEADD_USER_MAIL_INBOUND": "Nutzer hinzufügen - eingehende E-Mails",
-    "QUEUEADD_USER_SMS_INBOUND": "Nutzer hinzufügen - eingehende SMS",
-    "QUEUEADD_USER_OPENCHANNEL_INBOUND": "Nutzer hinzufügen - eingehender offener Kanal",
-    "QUEUEADD_USER_FAX_INBOUND": "Nutzer hinzufügen - eingehende Faxe",
-    "ALL_TEAMS": "Alle Teams",
+    "QUEUEADD_AGENT_VOICE_OUTBOUND": "Agent in der Warteschlange Kampagnen hinzufügen",
+    "QUEUEADD_AGENT_VOICE_INBOUND": "Agent Voice Warteschlangen hinzufügen",
+    "QUEUEADD_AGENT_CHAT_INBOUND": "Agent zu chatten Warteschlangen hinzufügen",
+    "QUEUEADD_AGENT_MAIL_INBOUND": "Agent Mail Warteschlangen hinzufügen",
+    "QUEUEADD_AGENT_SMS_INBOUND": "Agent sms-Warteschlangen hinzufügen",
+    "QUEUEADD_AGENT_OPENCHANNEL_INBOUND": "Agent zu offenen Kanal Warteschlangen hinzufügen",
+    "QUEUEADD_AGENT_FAX_INBOUND": "Agent fax Warteschlangen hinzufügen",
+    "QUEUEADD_USER_VOICE_INBOUND": "Benutzer stimme Warteschlangen hinzufügen",
+    "QUEUEADD_USER_CHAT_INBOUND": "Benutzer zu chatten Warteschlangen hinzufügen",
+    "QUEUEADD_USER_MAIL_INBOUND": "Benutzer Mail Warteschlangen hinzufügen",
+    "QUEUEADD_USER_SMS_INBOUND": "Benutzer von SMS-Warteschlangen hinzufügen",
+    "QUEUEADD_USER_OPENCHANNEL_INBOUND": "Benutzer zum offenen Kanal Warteschlangen hinzufügen",
+    "QUEUEADD_USER_FAX_INBOUND": "Benutzer fax Warteschlangen hinzufügen",
+    "ALL_TEAMS": "Alle Mannschaften",
     "SELECTED_TEAMS": "Ausgewählte Teams",
     "SELECTED_AGENTS": "Ausgewählte Agenten",
-    "ALL_QUEUES_VOICE_OUTBOUND": "Alle Warteschlangen - ausgehende Anrufe",
-    "SELECTED_QUEUES_VOICE_OUTBOUND": "Gewählte Warteschlangen - ausgehende Anrufe",
-    "ALL_QUEUES_VOICE_INBOUND": "Alle Warteschlangen - eingehende Anrufe",
-    "SELECTED_QUEUES_VOICE_INBOUND": "Ausgewählte Warteschlangen - eingehende Anrufe",
-    "ALL_QUEUES_CHAT_INBOUND": "Alle Warteschlangen - Chat",
-    "SELECTED_QUEUES_CHAT_INBOUND": "Ausgewählte Warteschlangen - Chat",
-    "ALL_QUEUES_MAIL_INBOUND": "Alle Warteschlangen - E-Mail",
-    "SELECTED_QUEUES_MAIL_INBOUND": "Ausgewählte Warteschlangen - E-Mail",
-    "ALL_QUEUES_SMS_INBOUND": "Alle Warteschlangen - SMS",
-    "SELECTED_QUEUES_SMS_INBOUND": "Ausgewählte Warteschlangen - SMS",
-    "ALL_QUEUES_OPENCHANNEL_INBOUND": "Alle Warteschlangen - offener Kanal",
-    "SELECTED_QUEUES_OPENCHANNEL_INBOUND": "Ausgewählte Warteschlangen - offener Kanal",
-    "ALL_QUEUES_FAX_INBOUND": "Alle Warteschlangen - Fax",
-    "SELECTED_QUEUES_FAX_INBOUND": "Ausgewählte Warteschlangen - Fax",
+    "ALL_QUEUES_VOICE_OUTBOUND": "Alle Queue Kampagnen",
+    "SELECTED_QUEUES_VOICE_OUTBOUND": "Ausgewählte Warteschlange Kampagnen",
+    "ALL_QUEUES_VOICE_INBOUND": "Alle Warteschlangen",
+    "SELECTED_QUEUES_VOICE_INBOUND": "Ausgewählte Voice Warteschlangen",
+    "ALL_QUEUES_CHAT_INBOUND": "Alle Chat Warteschlangen",
+    "SELECTED_QUEUES_CHAT_INBOUND": "Ausgewählte Chat-warteschlangen",
+    "ALL_QUEUES_MAIL_INBOUND": "Alle E-Mail-Warteschlangen",
+    "SELECTED_QUEUES_MAIL_INBOUND": "Ausgewählte Mail Warteschlangen",
+    "ALL_QUEUES_SMS_INBOUND": "Alle SMS-Warteschlangen",
+    "SELECTED_QUEUES_SMS_INBOUND": "Ausgewählte SMS-Warteschlangen",
+    "ALL_QUEUES_OPENCHANNEL_INBOUND": "Alle offenen Kanal Warteschlangen",
+    "SELECTED_QUEUES_OPENCHANNEL_INBOUND": "Ausgewählten Offenen Kanal Warteschlangen",
+    "ALL_QUEUES_FAX_INBOUND": "Alle Fax Warteschlangen",
+    "SELECTED_QUEUES_FAX_INBOUND": "Ausgewählte Fax Warteschlangen",
     "VOICEMAIL": "Voicemail",
-    "SHOWWEBCONTROL": "WebControl anzeigen",
+    "SHOWWEBCONTROL": "Anzeigen Web Control",
     "PAGE": "Seite",
     "ROWSPERPAGE": "Zeilen pro Seite",
-    "OF": "von",
+    "OF": "Von",
     "CALLFORWARDING": "Anrufweiterleitung",
-    "DND": "Nicht stören",
-    "UNANSWEREDCALLBADGE": "Badge unbeantwortete Anrufe",
-    "ENABLEDTMFTONE": "DMFT-Töne aktivieren",
-    "AUTOANSWERDELAY": "Automatische Antwort nach",
+    "DND": "Während der Pause nicht stören",
+    "UNANSWEREDCALLBADGE": "Zeige unbeantwortete Anruf Abzeichen",
+    "ENABLEDTMFTONE": "Dtmf-Töne aktivieren",
+    "AUTOANSWERDELAY": "Auto Antwortverzögerung",
     "ENCRYPTION": "Verschlüsselung",
     "CHANNELS": "Kanäle",
     "CHAT": "Chat",
-    "SMS": "SMS",
+    "SMS": "Sms",
     "OPENCHANNEL": "Offener Kanal",
     "FAX": "Fax",
-    "QUEUEADD_USER_VOICE_OUTBOUND": "Nutzer zu Warteschlange für eingehende Anrufe hinzufügen",
-    "MONITOREXTENSION": "Nebenstelle des Nutzers aufzeichnen",
+    "QUEUEADD_USER_VOICE_OUTBOUND": "Benutzer in Warteschlange Kampagnen hinzufügen",
+    "MONITOREXTENSION": "Anrufe an die Nebenstelle des Benutzers aufzeichnen",
     "NO_PASSWORD_CHANGE": "Keine Passwortänderung",
     "SECURITY_SUITE": "Sicherheitssuite",
-    "LAST_PASSWORD_RESET_AT": "Passwort zuletzt zurückgesetzt am:",
-    "SIP_WEBRTC": "SIP/WebRTC",
-    "SETTINGS_WEBRTC": "Einstellungen",
+    "LAST_PASSWORD_RESET_AT": "Letzte Passwort zurücksetzen um",
+    "SIP_WEBRTC": "Schluck",
+    "SETTINGS_WEBRTC": "die Einstellungen",
     "WEBRTC": "WebRTC",
     "DTLSCERTFILE": "TLS-Zertifikat",
-    "DTLSPRIVATEKEY": "Privater Schlüssel des TLS-Zertifikats",
-    "EDITPERMISSIONS": "Berechtigungen verwalten",
-    "READANDEDIT": "Lesen und Bearbeiten",
-    "READANDEDITANDDELETE": "Lesen, Bearbeiten und Löschen",
-    "GENERAL_PERMISSIONS": "Allgemein",
-    "ENABLEMESSENGER": "Internen Messenger aktivieren",
-    "OUTBOUNDPROXY": "Outbound-Proxy",
+    "DTLSPRIVATEKEY": "Der private Schlüssel des TLS-Zertifikats",
+    "EDITPERMISSIONS": "Bearbeiten von Berechtigungen",
+    "READANDEDIT": "Lesen, Bearbeiten",
+    "READANDEDITANDDELETE": "Lesen, Bearbeiten, Löschen",
+    "GENERAL_PERMISSIONS": "Allgemeines",
+    "ENABLEMESSENGER": "Aktivieren Sie den internen Messenger",
+    "OUTBOUNDPROXY": "Oubound-Proxy",
     "PHONE": "Telefon",
     "MOBILE": "Handy, Mobiltelefon",
     "ALIAS": "Alias",
     "ENABLEJAWSINTEGRATION": "Jaws-Integration aktivieren",
     "PREFIXREQUIRED": "Präfix erforderlich",
-    "ENABLEVIDEORECORDING": "Videoaufzeichnung aktivieren",
+    "ENABLEVIDEORECORDING": "Aktiviere Videoaufnahme",
     "OLD_PASSWORD": "Altes Passwort",
     "ALL_CHATQUEUES": "Alle Chat-Warteschlangen",
     "ALL_CHATWEBSITES": "Alle Chat-Websites",
     "ALL_FAXACCOUNTS": "Alle Faxkonten",
-    "ALL_FAXQUEUES": "Alle Fax-Warteschlangen",
+    "ALL_FAXQUEUES": "Alle Faxwarteschlangen",
     "ALL_MAILACCOUNTS": "Alle E-Mail-Konten",
     "ALL_MAILQUEUES": "Alle E-Mail-Warteschlangen",
-    "ALL_OPENCHANNELACCOUNTS": "Alle offener Kanal-Konten",
-    "ALL_OPENCHANNELQUEUES": "Alle offener Kanal-Warteschlangen",
+    "ALL_OPENCHANNELACCOUNTS": "Alle offenen Channel-Konten",
+    "ALL_OPENCHANNELQUEUES": "Alle offenen Kanalwarteschlangen",
     "ALL_PROJECTS": "Alle Cally Square-Projekte",
     "ALL_QUEUECAMPAIGNS": "Alle Queue-Kampagnen",
     "ALL_SMSACCOUNTS": "Alle SMS-Konten",
     "SELECTED_CHATQUEUES": "Ausgewählte E-Mail-Warteschlangen",
     "SELECTED_CHATWEBSITES": "Ausgewählte Chat-Websites",
     "SELECTED_FAXACCOUNTS": "Ausgewählte Faxkonten",
-    "SELECTED_FAXQUEUES": "Ausgewählte Fax-Warteschlangen",
+    "SELECTED_FAXQUEUES": "Ausgewählte Faxwarteschlangen",
     "SELECTED_MAILACCOUNTS": "Ausgewählte E-Mail-Konten",
     "SELECTED_MAILQUEUES": "Ausgewählte Chat-Warteschlangen",
-    "SELECTED_OPENCHANNELACCOUNTS": "Ausgewählte offener Kanal-Konten",
-    "SELECTED_OPENCHANNELQUEUES": "Ausgewählte offene Kanal-Warteschlangen",
+    "SELECTED_OPENCHANNELACCOUNTS": "Ausgewählte offene Channel-Konten",
+    "SELECTED_OPENCHANNELQUEUES": "Ausgewählte offene Kanalwarteschlangen",
     "SELECTED_PROJECTS": "Ausgewählte Projekte von Cally Square",
     "SELECTED_QUEUECAMPAIGNS": "Ausgewählte Queue-Kampagnen",
     "SELECTED_SMSACCOUNTS": "Ausgewählte SMS-Konten",
     "SELECTED_SMSQUEUES": "Ausgewählte SMS-Warteschlangen",
-    "SELECTED_VOICEQUEUES": "Ausgewählte Anruf-Warteschlangen",
+    "SELECTED_VOICEQUEUES": "Ausgewählte Sprachwarteschlangen",
     "USERADD_CHATQUEUES": "Chat-Warteschlange zum Benutzer hinzufügen",
     "USERADD_CHATWEBSITES": "Chat-Website zum Benutzer hinzufügen",
     "USERADD_FAXACCOUNTS": "Faxkonto zum Benutzer hinzufügen",
-    "USERADD_FAXQUEUES": "Fax-Warteschlange zum Benutzer hinzufügen",
+    "USERADD_FAXQUEUES": "Faxwarteschlange zum Benutzer hinzufügen",
     "USERADD_MAILACCOUNTS": "E-Mail-Konto zum Benutzer hinzufügen",
     "USERADD_MAILQUEUES": "E-Mail-Warteschlange zum Benutzer hinzufügen",
-    "USERADD_OPENCHANNELACCOUNTS": "Offener Kanal-Konto zum Benutzer hinzufügen",
-    "USERADD_OPENCHANNELQUEUES": "Offener Kanal-Warteschlange zum Benutzer hinzufügen",
+    "USERADD_OPENCHANNELACCOUNTS": "Open Channel-Konto zum Benutzer hinzufügen",
+    "USERADD_OPENCHANNELQUEUES": "Open Channel-Warteschlange zum Benutzer hinzufügen",
     "USERADD_PROJECTS": "Cally Square-Projekt zum Benutzer hinzufügen",
     "USERADD_QUEUECAMPAIGNS": "Queue-Kampagne zum Benutzer hinzufügen",
     "USERADD_SMSACCOUNTS": "SMS-Konto zum Benutzer hinzufügen",
     "USERADD_SMSQUEUES": "SMS-Warteschlange zum Benutzer hinzufügen",
-    "USERADD_VOICEQUEUES": "Anruf-Warteschlange zum Benutzer hinzufügen",
-    "HOTDESK": "Wechselnder Arbeitsplatz",
+    "USERADD_VOICEQUEUES": "Sprachwarteschlange zum Benutzer hinzufügen",
+    "HOTDESK": "Heißer Schreibtisch",
     "ADD_USERPROFILE": "Benutzerprofil hinzufügen",
-    "CANCEL": "Abbrechen",
+    "CANCEL": "Stornieren",
     "CLONE_USERPROFILE": "Benutzerprofil klonen",
     "CLOSE": "Schließen",
     "CONFIRM": "Bestätigen",
     "PERMISSIONS_SELECTED_RESOURCES": "Ausgewählte Ressourcen",
     "PERMISSIONS_SELECT_REPORT_TYPE": "Wählen Sie den Berichtstyp",
     "PERMISSIONS_SELECT_SECTION": "Wählen Sie einen Abschnitt aus",
-    "PERMISSIONS_UNAUTHORIZED_REDIRECT_MESSAGE": "Kein Zugriff auf den ausgewählten Bereich",
+    "PERMISSIONS_UNAUTHORIZED_REDIRECT_MESSAGE": "Sie dürfen nicht auf den ausgewählten Bereich zugreifen",
     "PERMISSIONS_UNAUTHORIZED_REDIRECT_TITLE": "Unbefugte Handlung",
-    "PERMISSIONS_WARNING_CLOSE": "Es wurden Änderungen nicht gespeichert. Fortfahren?",
+    "PERMISSIONS_WARNING_CLOSE": "Du hast nicht gespeicherte Änderungen. Möchten Sie den Vorgang wirklich ohne Speichern beenden?",
     "PERMISSIONS_WARNING_ENABLE_ALL": "Alle {{sectionName}} Unterabschnitte und ihre Ressourcen werden aktiviert. Sind Sie sicher, dass Sie fortfahren möchten?",
-    "QUEUES_ASSOCIATION": "{{channel}} Warteschlangen-Zuweisung",
+    "QUEUES_ASSOCIATION": "{{channel}} Queues Association",
     "READ_PERMISSION": "Lesen",
     "REPORT_TYPE": "Berichtstyp",
     "SECTIONS": "Abschnitte",
     "SUMMARY": "Zusammenfassung",
-    "TEAMS_ASSOCIATION": "Teamzuweisung",
+    "TEAMS_ASSOCIATION": "Vereinigung der Mannschaften",
     "USERPROFILE": "Benutzerprofil",
     "USERPROFILES": "Benutzerprofil",
-    "PERMISSIONS_UNAUTHORIZED_CREATION_MESSAGE": "Keine Berechtigung zum Erstellen der Ressource",
-    "VIDEOSUPPORT": "Unterstützt Video",
+    "PERMISSIONS_UNAUTHORIZED_CREATION_MESSAGE": "Sie dürfen die Ressource nicht erstellen",
+    "VIDEOSUPPORT": "Video-Unterstützung",
     "APIKEY": "API-Schlüssel",
     "APIKEYMANAGER_USER": "API Key Manager",
-    "GENERATE": "Erneut generieren",
+    "GENERATE": "(Regenerieren",
     "MANAGE_API_KEY": "API-Schlüsselmanager",
-    "REMOVE": "Entfernen",
-    "ENABLEAUTOMATICSCREENRECORDING": "Automatische Bildschirmaufzeichnung aktivieren",
-    "ENABLESCREENRECORDINGBYAGENT": "Bildschirmaufzeichnung durch Agenten aktivieren",
-    "ENABLEVIDEOECORDING": "Videoaufzeichnung aktivieren",
+    "REMOVE": "Löschen",
+    "ENABLEAUTOMATICSCREENRECORDING": "Aktivieren Sie die automatische Bildschirmaufnahme",
+    "ENABLESCREENRECORDINGBYAGENT": "Aktivieren Sie die Bildschirmaufzeichnung nach Agent",
+    "ENABLEVIDEOECORDING": "Videoaufnahme aktivieren",
     "BLOCKED": "Gesperrt",
     "DISABLED": "Deaktiviert",
-    "REGENERATE": "Erneut generieren",
+    "REGENERATE": "Regenerieren",
     "ALL_QUEUES_WHATSAPP_INBOUND": "Alle WhatsApp-Warteschlangen",
     "ALL_WHATSAPPACCOUNTS": "Alle WhatsApp-Konten",
     "ALL_WHATSAPPQUEUES": "Alle Whataspp-Warteschlangen",
-    "QUEUEADD_AGENT_WHATSAPP_INBOUND": "Agenten zu WhatsApp-Warteschlangen hinzufügen",
+    "QUEUEADD_AGENT_WHATSAPP_INBOUND": "Agent zu WhatsApp-Warteschlangen hinzufügen",
     "QUEUEADD_USER_WHATSAPP_INBOUND": "Benutzer zu WhatsApp-Warteschlangen hinzufügen",
     "SELECTED_QUEUES_WHATSAPP_INBOUND": "Ausgewählte WhatsApp-Warteschlangen",
     "SELECTED_WHATSAPPACCOUNTS": "Ausgewählte WhatsApp-Konten",
     "SELECTED_WHATSAPPQUEUES": "Ausgewählte WhatsApp-Warteschlangen",
     "USERADD_WHATSAPPACCOUNTS": "WhatsApp-Konto zum Benutzer hinzufügen",
-    "USERADD_WHATSAPPQUEUES": "Whataspp-Warteschlange dem Benutzer hinzufügen",
+    "USERADD_WHATSAPPQUEUES": "Fügen Sie dem Benutzer die Whataspp-Warteschlange hinzu",
     "WHATSAPP": "WhatsApp Connector",
-    "WHATSAPPCAPACITY": "Kapazität Whatsapp",
+    "WHATSAPPCAPACITY": "WhatsApp Connector-Kapazität",
     "MASK_SENSITIVE_DATA": "Sensitive Daten maskieren",
     "WSS_PORT": "WSS-Port",
     "ATTACHMENTS": "Anhänge",
     "CALLYSQUARE_RECORDINGS": "Cally Square-Aufnahmen",
-    "CONTACT_MANAGER_LISTS": "Kontaktmanager Listen",
+    "CONTACT_MANAGER_LISTS": "Kontaktmanagerlisten",
     "DOWNLOADS": "Downloads",
     "DOWNLOAD_PERMISSIONS": "Download-Berechtigungen",
     "JSCRIPTY_SESSIONS": "Jscripty-Sitzungen",
     "OMNICHANNEL_INTERACTIONS": "Omnichannel-Interaktionen",
-    "SCREEN_RECORDINGS": "Bildschirmaufzeichnungen",
-    "VOICE_RECORDINGS": "Sprachaufzeichnungen"
+    "SCREEN_RECORDINGS": "Bildschirmaufnahmen",
+    "VOICE_RECORDINGS": "Sprachaufnahmen"
   }
 }
index d62768d..6207bf0 100644 (file)
     "BOT": "Voicebot",
     "CALL": "Anruf",
     "NAME": "Name",
-    "TRUNKS": "Trunks",
-    "SEARCH_FOR_ANYONE": "Suche",
+    "TRUNKS": "Amtsleitungen",
+    "SEARCH_FOR_ANYONE": "Suche für Jedermann",
     "ERRORS": {
-      "NAME_REQUIRED": "Name ist erforderlich",
-      "HOST_REQUIRED": "Host wird benötigt",
-      "DEFAULTUSER_REQUIRED": "Standardbenutzer ist erforderlich",
-      "CALLERID_REQUIRED": "Anrufer-ID ist erforderlich",
-      "KEY_REQUIRED": "Schlüssel ist erforderlich",
-      "CONFIRM_NOT_MATCH": "Die Passwörter stimmen nicht überein",
-      "VALIDITYSTART_REQUIRED": "Startzeit ist erforderlich",
-      "VALIDITYEND_REQUIRED": "Endzeit ist erforderlich",
+      "NAME_REQUIRED": "Der Name ist erforderlich",
+      "HOST_REQUIRED": "Der Host wird benötigt",
+      "DEFAULTUSER_REQUIRED": "Der Standardbenutzer ist erforderlich",
+      "CALLERID_REQUIRED": "Die Anrufer-ID ist erforderlich",
+      "KEY_REQUIRED": "Der Schlüssel ist erforderlich",
+      "CONFIRM_NOT_MATCH": "Die Kennwörter nicht übereinstimmen",
+      "VALIDITYSTART_REQUIRED": "Die Startzeit ist erforderlich",
+      "VALIDITYEND_REQUIRED": "Das Ende der Zeit ist erforderlich",
       "MONTHDAY_REQUIRED": "Tag des Monats ist erforderlich",
-      "HOUR_REQUIRED": "Stunde ist erforderlich",
-      "CONTENT_REQUIRED": "Inhalt ist erforderlich",
-      "URL_REQUIRED": "URL ist erforderlich",
-      "URL_MUST_VALID_URL": "URL ungültiges Format",
-      "APPLICATION_REQUIRED": "Anwendung ist erforderlich",
-      "ARGUMENTS_REQUIRED": "Bedingungen sind erforderlich",
-      "NAME_MUST_VALID_PATTERN": "Name ungültiges Format",
-      "POLLING_INTERVAL_REQUIRED": "Abfrageintervall ist erforderlich",
-      "TITLE_REQUIRED": "Titel ist erforderlich",
-      "EMAILADDRESS_REQUIRED": "E-Mail Adresse ist erforderlich",
-      "EVENTVARIABLES_REQUIRED": "Variablen sind erforderlich",
-      "TYPE_REQUIRED": "Typ ist erforderlich",
-      "VALUE_REQUIRED": "Wert ist erforderlich",
-      "ACCOUNT_REQUIRED": "Konto ist erforderlich",
-      "FIELD_REQUIRED": "Feld ist erforderlich",
-      "INTEGRATION_REQUIRED": "Integration ist erforderlich",
-      "LIST_REQUIRED": "Liste ist erforderlich",
-      "TEMPLATE_REQUIRED": "Vorlage ist erforderlich",
-      "AUTOCREATECONTACT_REQUIRED": "Kontakterstellung erforderlich",
-      "OUTBOUNDROUTE_REQUIRED": "Ausgehende Route erforderlich",
-      "QUEUE_REQUIRED": "Warteschlange erforderlich",
-      "TIME_RANGE_TO_REQUIRED": "Zeitintervall erforderlich",
-      "WEEK_DAYS_TO_REQUIRED": "Wochentage erforderlich",
-      "MONTH_DAYS_TO_REQUIRED": "Tage des Monats erforderlich",
-      "MONTH_TO_REQUIRED": "Monat erforderlich",
+      "HOUR_REQUIRED": "Die Stunde ist erforderlich",
+      "CONTENT_REQUIRED": "Der Inhalt ist erforderlich",
+      "URL_REQUIRED": "Die URL ist erforderlich",
+      "URL_MUST_VALID_URL": "Die URL muss gültig sein",
+      "APPLICATION_REQUIRED": "Die Anwendung ist erforderlich",
+      "ARGUMENTS_REQUIRED": "Die Argumente sind erforderlich",
+      "NAME_MUST_VALID_PATTERN": "Der Name muss in einem gültigen Format geschrieben werden",
+      "POLLING_INTERVAL_REQUIRED": "Das Abfrageintervall ist erforderlich",
+      "TITLE_REQUIRED": "Der Titel ist erforderlich",
+      "EMAILADDRESS_REQUIRED": "Die E-Mail Adresse ist erforderlich",
+      "EVENTVARIABLES_REQUIRED": "Pflichtfeld",
+      "TYPE_REQUIRED": "Pflichtfeld",
+      "VALUE_REQUIRED": "Pflichtfeld",
+      "ACCOUNT_REQUIRED": "Pflichtfeld",
+      "FIELD_REQUIRED": "Pflichtfeld",
+      "INTEGRATION_REQUIRED": "Pflichtfeld",
+      "LIST_REQUIRED": "Pflichtfeld",
+      "TEMPLATE_REQUIRED": "Pflichtfeld",
+      "AUTOCREATECONTACT_REQUIRED": "Pflichtfeld",
+      "OUTBOUNDROUTE_REQUIRED": "Pflichtfeld",
+      "QUEUE_REQUIRED": "Pflichtfeld",
+      "TIME_RANGE_TO_REQUIRED": "Pflichtfeld",
+      "WEEK_DAYS_TO_REQUIRED": "Pflichtfeld",
+      "MONTH_DAYS_TO_REQUIRED": "Pflichtfeld",
+      "MONTH_TO_REQUIRED": "Pflichtfeld",
       "TIME_RANGE_FROM_INVALID": "Falsches Format",
       "TIME_RANGE_TO_INVALID": "Falsches Format",
-      "ACTION_REQUIRED": "Aktion erforderlich",
-      "CONFIGURATION_REQUIRED": "Konfiguration erforderlich",
-      "PROJECT_REQUIRED": "Projekt erforderlich",
-      "LOCATION_REQUIRED": "Standort erforderlich",
-      "FONTSIZE_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Wert muss kleiner oder gleich sein als",
-      "FONTSIZE_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Wert muss größer oder gleich sein als",
-      "FONTSIZE_REQUIRED": "Schriftgröße erforderlich",
-      "PATH_REQUIRED": "Pfad erforderlich",
-      "FORMAT_REQUIRED": "Format erforderlich",
-      "REPORT_REQUIRED": "Report erforderlich",
-      "REFRESH_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Wert muss größer oder gleich sein als",
-      "REFRESH_REQUIRED": "Aktualisieren erforderlich",
-      "TITLE_MAX_LENGTH": "Titel darf eine maximale Länge haben von {{max}} ",
-      "NAME_MAX_LENGTH": "Name darf eine maximale Länge haben von {{max}} ",
-      "OUTPUT_REQUIRED": "Ausgabe erforderlich",
-      "REPORTFOLDER_REQUIRED": "Ordner erforderlich",
-      "REPORTSUBFOLDER_REQUIRED": "Unterordner erforderlich",
-      "REPORTTYPE_REQUIRED": "Reporttyp erforderlich",
-      "AGENT_REQUIRED": "Agent erforderlich",
-      "INFO_REQUIRED": "Information erforderlich",
-      "SCRIPT_REQUIRED": "Skript erforderlich",
-      "TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Wert muss größer oder gleich sein als",
-      "TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Wert muss kleiner oder gleich sein als",
-      "TIMEOUT_REQUIRED": "Timeout erforderlich",
-      "AUTOCREATE_FIELD_REQUIRED": "Automatisches Erstellen erforderlich"
+      "ACTION_REQUIRED": "Pflichtfeld",
+      "CONFIGURATION_REQUIRED": "Pflichtfeld",
+      "PROJECT_REQUIRED": "Pflichtfeld",
+      "LOCATION_REQUIRED": "Pflichtfeld",
+      "FONTSIZE_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Der Wert muss kleiner oder gleich sein",
+      "FONTSIZE_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Der Wert muss größer oder gleich sein",
+      "FONTSIZE_REQUIRED": "Pflichtfeld",
+      "PATH_REQUIRED": "Pflichtfeld",
+      "FORMAT_REQUIRED": "Pflichtfeld",
+      "REPORT_REQUIRED": "Pflichtfeld",
+      "REFRESH_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Der Wert muss größer oder gleich sein",
+      "REFRESH_REQUIRED": "Pflichtfeld",
+      "TITLE_MAX_LENGTH": "Der Wert muss eine maximale Länge von {{max}} haben",
+      "NAME_MAX_LENGTH": "Der Wert muss eine maximale Länge von {{max}} haben",
+      "OUTPUT_REQUIRED": "Pflichtfeld",
+      "REPORTFOLDER_REQUIRED": "Pflichtfeld",
+      "REPORTSUBFOLDER_REQUIRED": "Pflichtfeld",
+      "REPORTTYPE_REQUIRED": "Pflichtfeld",
+      "AGENT_REQUIRED": "Pflichtfeld",
+      "INFO_REQUIRED": "Pflichtfeld",
+      "SCRIPT_REQUIRED": "Pflichtfeld",
+      "TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Der Wert muss größer oder gleich sein",
+      "TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Der Wert muss kleiner oder gleich sein",
+      "TIMEOUT_REQUIRED": "Pflichtfeld",
+      "AUTOCREATE_FIELD_REQUIRED": "Pflichtfeld"
     },
     "HOST": "Host",
-    "SECRET": "Secret",
-    "DEFAULTUSER": "Standardnutzer",
+    "SECRET": "Geheimnis",
+    "DEFAULTUSER": "Default User",
     "DESCRIPTION": "Beschreibung",
-    "ADD_TRUNK": "Trunk hinzufügen",
+    "ADD_TRUNK": "Amtsleitung hinzufügen",
     "HELP": {
-      "SECRET": "Kennwort für die Authentifizierung, wenden Sie sich an den Systemadministrator.",
+      "SECRET": "Kennwort für die Authentifizierung, wenden Sie sich an den Anbieter.",
       "HOST": "Die Domäne oder den Hostnamen für den Anbieter.",
       "DEFAULTUSER": "Authentifizierung Benutzernamen, wenden Sie sich an den Anbieter.",
       "CALLERID": "Die Anrufer-ID im Format \"name\" <Nummer>.",
-      "REGISTRY": "Die SIP-Registry, die von einigen Anbietern, die in der Regel defaultuser:Secret@host.",
-      "FROMDOMAIN": "Legt Standardeinstellungen von:domain in SIP-Nachrichten als SIP-ua (Client).",
-      "FROMUSER": "SIP-Nutzereinstellungen. Nur gültig für den Typ=peer.",
+      "REGISTRY": "Die amtsleitung Registry, die von einigen Anbietern, die in der Regel defaultuser:Secret@host.",
+      "FROMDOMAIN": "Legt Standardeinstellungen von:domain in SIP-Nachrichten als SIP-ua (Client). Einige Ziele können die obligatorische Identität Name anstatt nur die IP-Adresse.",
+      "FROMUSER": "Rovider wie ihr sie kennt. Dies ist der Benutzer, um anstelle der Anrufer-ID beim Tätigen von Anrufen zu anderen Peer (SIP-Proxy). Nur gültig für den Typ=peer.",
       "OUTBOUNDPROXY": "IP-Adresse oder DNS-SRV-Ressourceneintrag name (ausgenommen die _sip._udp-Präfix): SRV Name, den Hostnamen oder die IP-Adresse des ausgehenden SIP-Proxy. Senden Sie ausgehende Signale zu diesem Proxy und nicht direkt an die Geräte. Nur gültig für den Typ=peer.",
-      "PORT": "Die Nummer des Ports, zu dem Sie eine Verbindung herstellen möchten.",
-      "CONTEXT": "Die nutzbaren Kontext für den Trunk.",
-      "TYPE": "Definiert die SIP-Rolle innerhalb der Anwendung. User: Authentifizierung für eingehende Verbindungen; Peer: für ausgehende Verbindungen - Freund: Beide Eigenschaften werden erfüllt",
-      "DTMFMODE": "Sendeart von DTMF-Tönen (Dual-Tone Multi-Frequency): RFC2833: Standardeinstellung, DMTF wird über RTP gesendet (außerhalb des Audiostreams) - INBAND DTMF wird innerhalb des Audiostreams gesendet, über die Lautsprecher hörbar. Erfordert eine höhere CPU-Last.",
-      "NAT": "Ändert das Verhalten von Sternchen für Clients hinter einer Firewall. Wenn \"Nein\", ignoriert der Asterisk alle anderen Einstellungen und die nat=No.",
+      "PORT": "Die Nummer des Ports, zu dem Sie eine Verbindung herstellen möchten wir auf der anderen Seite.",
+      "CONTEXT": "Die nutzbaren Rahmen für den Trunk.",
+      "TYPE": "Legt das SIP-Rolle innerhalb der Sternchen. User: Wird verwendet, um die Authentifizierung für eingehende - Peer: für ausgehende Anrufe - Freund: Deckt sowohl die Eigenschaften der oben genannten.",
+      "DTMFMODE": "Wie DTMF (Dual-Tone Multi-Frequency): RFC2833: Die Standardeinstellung, die DTMF gesendet mit RTP, aber außerhalb der Audio Stream. INBAND DTMF gesendet wird: Die in der Audio Stream des aktuellen Gesprächs, wird über die Lautsprecher hörbar. Erfordert eine hohe CPU-Last. INFO: Diese Methode ist zwar sehr zuverlässig, es ist nicht für alle TK-Anlagen und viele SIP-Trunk.",
+      "NAT": "Ändert das Verhalten von Sternchen für Clients hinter einer Firewall.Wenn der Komma-getrennten Optionen ist \"Nein\", Asterisk ignoriert alle anderen Einstellungen und die nat=No.",
       "QUALIFY": "Legt fest, wann die SIP erreichbar ist.",
       "ALLOWCODECS": "Erlaubt Codecs in der Reihenfolge ihrer Präferenz.",
-      "INSECURE": "Erlaubt unsichere Einstellungen für peer",
-      "CALL_LIMIT": "Maximale Anzahl aller gleichzeitigen ein- und ausgehenden Anrufe",
-      "DIRECTMEDIA": "Der Asterisk versucht, den RTP-Stream im Standard direkt zwischen dem Anrufer und dem Angerufenen aufzubauen. Manche Geräte (z.B. Firewalls) unterstützen diese Funktion nicht. Daher kann hier eine Umstellung erfolgen.",
-      "CALLCOUNTER": "Aktivieren der Anrufzähler für die Geräte",
-      "ADD_PHONE_TO_URI": "Fügt im SIP den user=phone zur URL hinzu",
-      "TRUST_REMOTE_PARTY_ID": "Soll der URL der anderen Partei vertraut werden?",
-      "SEND_REMOTE_PARTY_ID_HEADER": "Soll die ID der anderen Partei gesendet werden?",
-      "ENCRYPTION": "Legt fest, ob die Verbindung über SRTP verschlüsselt vorliegt. Sollte das peer kein SRTP unterstützen, werden Anrufe mit dem HANGUPCAUSE=58 beendet.",
+      "INSECURE": "Legt fest, wie Verbindungen mit Peer, dass unsichere Einstellungen.",
+      "CALL_LIMIT": "Die Anzahl der eingehenden und abgehenden Anrufe, die zu einer Zeit.",
+      "DIRECTMEDIA": "Sternchen standardmäßig versucht, die RTP-Stream direkt aus den Anrufer an den Angerufenen. Einige Geräte werden nicht unterstützt wird (vor allem, wenn einer von Ihnen hinter einem NAT-Gerät befindet). Die Standardeinstellung ist Ja. Wenn Sie alle Clients hinter einem NAT-Gerät befindet, oder aus einem anderen Grund nicht möchten, dass Sternchen in der Audiospur, können Sie diese ausschalten.",
+      "CALLCOUNTER": "Aktivieren Sie die Zähler auf Geräte.",
+      "ADD_PHONE_TO_URI": "Legen Sie fest, ob die Provider ';user=Telefon\" an den URL.",
+      "TRUST_REMOTE_PARTY_ID": "Wenn Remote-Party-ID definieren sollte.",
+      "SEND_REMOTE_PARTY_ID_HEADER": "Status",
+      "ENCRYPTION": "Festlegen, ob die Remote-Party-ID gesendet werden soll (standardmäßig auf Nein).",
       "TRANSPORT": "Festlegen der Standardeinstellungen für Transporte. Die Reihenfolge bestimmt den primären Standard.",
-      "OTHERFIELDS": "Weitere Felder hinzufügen, in der Trunks conf-Dateien. In Sternchen format (key=value), jedes Feld auf einer Zeile.",
-      "EMAILADDRESS": "Mehrere Adressen mit Komma getrennt eingeben: (z. b. John.doe@xcally.com, jane.miller@xcally.com)",
+      "OTHERFIELDS": "Weitere Felder hinzufügen, in der Amtsleitungen conf-Dateien. In Sternchen format (key=value), jedes Feld auf einer Zeile.",
+      "EMAILADDRESS": "Sie können mehrere Adressen mit Kommata (z. b. John.doe@xcally.com, jane.miller@xcally.com)",
       "NAME": "Nur Zahlen, Buchstaben und Sonderzeichen (._) werden unterstützt.",
-      "EVENTVARIABLES": "Fügt die Event-Variablen der URL hinzu",
+      "EVENTVARIABLES": "Wenn aktiviert, Es fügt alle Event Variablen an die Url",
       "T38PT_UDPTL": "Es: Ja, Redundanz, maxdatagram = 400",
       "EMAILBCCADDRESS": "Fügen Sie eine oder mehrere durch Kommas getrennte Adressen hinzu (z. B. john.doe@xcally.com, jane.miller@xcally.com).",
       "EMAILCCADDRESS": "Fügen Sie eine oder mehrere durch Kommas getrennte Adressen hinzu (z. B. john.doe@xcally.com, jane.miller@xcally.com).",
-      "BODY": "(RAW-JSON-Format) Wenn nicht ausgefüllt, wird der Standardwert verwendet",
+      "BODY": "Wenn nicht ausgefüllt, wird der Standardwert gesendet",
       "INFO": "Titel einfügen",
       "SCRIPT": "Skript einfügen",
       "SCRIPT_INFO": "Fügen Sie eine Beschreibung für das Skript ein",
       "SCRIPT_TYPE": "Geben Sie eine Typologie für das Skript ein (zB curl, bash ...)",
-      "HEADERS": "Hinweis: Der Header-Abschnitt muss im RAW-JSON-Format {\"key\": \"value\"} vorliegen.\nHinweis: Wenn nicht ausgefüllt, wird der Standardwert verwendet",
-      "TIMEOUT": "Zeitüberschreitung in Sekunden anfordern. Der Wert muss zwischen 1 und 10 liegen - Standardwert ist 5."
+      "HEADERS": "Hinweis: Der Header-Abschnitt muss im RAW-JSON-Format {\"key\": \"value\"} vorliegen.\nHinweis: Wenn nicht ausgefüllt, wird der Standardwert gesendet",
+      "TIMEOUT": "Zeitüberschreitung in Sekunden anfordern. Der Wert muss zwischen 1 und 10 liegen und der Standardwert ist 5."
     },
     "EDIT_TRUNK": "Trunk bearbeiten",
-    "DELETE_TRUNK": "Trunk löschen",
+    "DELETE_TRUNK": "Löschen Sie Trunk",
     "CREATED_AT": "Erstellt am",
     "SETTINGS": "Einstellungen",
-    "ADVANCED": "Erweitert",
+    "ADVANCED": "Erweiterte",
     "OTHER": "Andere",
     "ACTIVE": "Aktiv",
     "CONTEXT": "Kontext",
-    "CALLERID": "Anrufer-ID",
+    "CALLERID": "Die Anrufer-ID",
     "TYPE": "Typ",
-    "DTMFMODE": "DTMF-Modus",
+    "DTMFMODE": "Mfv-Modus",
     "NAT": "NAT",
     "QUALIFY": "Qualifizieren",
     "ALLOWCODECS": "Codecs erlaubt",
     "INSECURE": "Unsicher",
     "REGISTRY": "Registrierung",
-    "DIRECTMEDIA": "Direct Media",
+    "DIRECTMEDIA": "Direkte Medien",
     "CALLCOUNTER": "Anrufzähler",
-    "FROMDOMAIN": "From Domain",
-    "FROMUSER": "From Nutzer",
-    "OUTBOUNDPROXY": "Outbound Proxy",
-    "ADD_PHONE_TO_URI": "Telefon zur URL hinzufügen",
-    "TRUST_REMOTE_PARTY_ID": "Trust Remote Party ID",
-    "SEND_REMOTE_PARTY_ID_HEADER": "Remote Party im Header senden",
+    "FROMDOMAIN": "Aus der Domäne",
+    "FROMUSER": "Vom Benutzer",
+    "OUTBOUNDPROXY": "Ausgehender Proxy",
+    "ADD_PHONE_TO_URI": "Telefon hinzufügen, URL",
+    "TRUST_REMOTE_PARTY_ID": "Vertrauen Gegenstelle ID",
+    "SEND_REMOTE_PARTY_ID_HEADER": "Senden einer Partner-ID Header",
     "ENCRYPTION": "Verschlüsselung",
-    "PORT": "Port",
-    "TRANSPORT": "Transport",
+    "PORT": "Hafen",
+    "TRANSPORT": "Verkehr",
     "SAVE": "Speichern",
     "VARIABLES": "Variablen",
     "ADD_VARIABLE": "Variable hinzufügen",
     "EDIT_VARIABLE": "Variable bearbeiten",
     "DELETE_VARIABLE": "Variable löschen",
-    "SELECTED": "Ausgewählt",
-    "SELECT_ALL": "Alles auswählen",
-    "SELECT_NONE": "Nichts auswählen",
+    "SELECTED": "Ausgewählte",
+    "SELECT_ALL": "Alle auswählen",
+    "SELECT_NONE": "Wählen Sie \"Keine\"",
     "TAGS": "Tags",
-    "ADD_TAG": "Tag hinzufügen",
-    "EDIT_TAG": "Tag bearbeiten",
-    "DELETE_TAG": "Tag löschen",
+    "ADD_TAG": "Variable hinzufügen",
+    "EDIT_TAG": "Variable bearbeiten",
+    "DELETE_TAG": "Variable löschen",
     "PAUSES": "Pausen",
     "ADD_PAUSE": "Pause hinzufügen",
     "EDIT_PAUSE": "Pause bearbeiten",
     "DELETE_PAUSE": "Pause löschen",
-    "ADD_CANNEDANSWER": "Textvorlage hinzufügen",
-    "EDIT_CANNEDANSWER": "Textvorlage bearbeiten",
-    "DELETE_CANNEDANSWER": "Testvorlage löschen",
+    "ADD_CANNEDANSWER": "Vordefinierte Antwort hinzufügen",
+    "EDIT_CANNEDANSWER": "Vordefinierte Antwort bearbeiten",
+    "DELETE_CANNEDANSWER": "Vordefinierte Antwort löschen",
     "KEY": "Schlüssel",
     "VALUE": "Wert",
-    "SOUNDS": "Audiodateien",
-    "EDIT_SOUND": "Audiodatei bearbeiten",
-    "DELETE_SOUND": "Audiodatei löschen",
-    "FINISH": "Abschließen",
+    "SOUNDS": "Sounds",
+    "EDIT_SOUND": "Ton bearbeiten",
+    "DELETE_SOUND": "Sound löschen",
+    "FINISH": "Fertig stellen",
     "DROP_TO_UPLOAD": "Drop hochladen",
     "TRIGGERS": "Trigger",
-    "EDIT_TRIGGER": "Trigger bearbeiten",
-    "DELETE_TRIGGER": "Trigger löschen",
+    "EDIT_TRIGGER": "Auslöser bearbeiten",
+    "DELETE_TRIGGER": "Auslöser löschen",
     "ADD_TRIGGER": "Trigger hinzufügen",
     "DELETE": "Löschen",
-    "AUTOMATIONS": "Automation",
-    "EDIT_AUTOMATION": "Automation bearbeiten",
+    "AUTOMATIONS": "Automatisierungen",
+    "EDIT_AUTOMATION": "Bearbeiten einer Automation",
     "DELETE_AUTOMATION": "Automation löschen",
     "ADD_AUTOMATION": "Automation hinzufügen",
     "INTERVALS": "Intervalle",
     "EDIT_INTERVAL": "Intervall bearbeiten",
-    "DELETE_INTERVAL": "Intervall löschen",
+    "DELETE_INTERVAL": "Intervall für Löschen.",
     "ADD_INTERVAL": "Intervall hinzufügen",
     "TOOLS": "Werkzeuge",
-    "ID": "ID",
+    "ID": "Id",
     "AUDIO": "Audio",
-    "DOWNLOAD_SOUND": "Audiodatei herunterladen",
-    "UPLOAD_SOUND": "Audiodatei hochladen",
+    "DOWNLOAD_SOUND": "Download Sound",
+    "UPLOAD_SOUND": "Werkzeuge",
     "CHANNEL": "Kanal",
     "NEW_TRIGGER": "Neue Trigger",
     "GENERAL": "Allgemein",
     "STATUS": "Status",
     "CONDITIONS&ACTIONS": "Bedingungen und Aktionen",
-    "ALLCONDITIONS": "Alle Bedingungen werden erfüllt",
-    "ANYCONDITIONS": "Einige Bedingungen werden erfüllt",
-    "ACTIONS": "Aktionen",
+    "ALLCONDITIONS": "Alle diese Bedingungen erfüllen:",
+    "ANYCONDITIONS": "Treffen diese Voraussetzungen:",
+    "ACTIONS": "Aktionen:",
     "NEW_AUTOMATION": "Neue Automation",
     "TIMEOUT": "Timeout",
     "PEERSTATUS": "Peer Status",
-    "CALL_LIMIT": "Anrufe limitieren",
-    "OTHERFIELDS": "Weitere Felder",
+    "CALL_LIMIT": "Anrufe beschränken",
+    "OTHERFIELDS": "Andere Felder",
     "NEW_VARIABLE": "Neue Variable",
     "NEW_TAG": "Neuer Tag",
     "NEW_PAUSE": "Neue Pause",
-    "NEW_CANNEDANSWER": "Neue Textvorlage",
+    "NEW_CANNEDANSWER": "Neue vordefinierte Antwort",
     "CONFIRM_PASSWORD": "Passwort bestätigen",
-    "NEW_TRUNK": "Neuer Trunk",
-    "FROM": "von",
-    "TO": "an",
-    "WEEKDAY": "Wochentag",
-    "MONTHDAY": "Monatstag",
+    "NEW_TRUNK": "Neue Leitung",
+    "FROM": "Von",
+    "TO": "Zu",
+    "WEEKDAY": "Woche Tag",
+    "MONTHDAY": "Monat Tag",
     "MONTH": "Monat",
     "ALWAYS": "Immer",
     "MON": "Montag",
     "PASSWORD": "Passwort",
     "CUSTOMDASHBOARDS": "Benutzerdefinierte Dashboards",
     "NEW_CUSTOMDASHBOARD": "Neues benutzerdefiniertes Dashboard",
-    "ADD_CUSTOMDASHBOARD": "Benutzerdefiniertes Dashboard hinzufügen",
-    "EDIT_CUSTOMDASHBOARD": "Benutzerdefiniertes Dashboard bearbeiten",
-    "DELETE_CUSTOMDASHBOARD": "Benutzerdefiniertes Dashboard löschen",
-    "SCHEDULER": "Berichtsplanung",
-    "NEW_SCHEDULE": "Neue Planung",
-    "ADD_SCHEDULE": "Planung hinzufügen",
-    "EDIT_SCHEDULE": "Planung bearbeiten",
-    "DELETE_SCHEDULE": "Planung löschen",
+    "ADD_CUSTOMDASHBOARD": "Hinzufügen von benutzerdefinierten Dashboard",
+    "EDIT_CUSTOMDASHBOARD": "Benutzerdefinierte Dashboards bearbeiten",
+    "DELETE_CUSTOMDASHBOARD": "Benutzerdefiniertes Dashboard löschen.",
+    "SCHEDULER": "Scheduler",
+    "NEW_SCHEDULE": "Neuer Zeitplan",
+    "ADD_SCHEDULE": "Zeitplan hinzufügen",
+    "EDIT_SCHEDULE": "Zeitplan bearbeiten",
+    "DELETE_SCHEDULE": "Zeitplan löschen",
     "SENDMAIL": "E-Mail senden",
     "CONFIGURATION": "Konfiguration",
     "MAIL": "E-Mail",
     "REPORTTYPE": "Berichtstyp",
     "REPORT": "Bericht",
-    "OUTPUT": "Ausgabe",
+    "OUTPUT": "Ausgang",
     "EXECUTEON": "Ausführung",
-    "REPORTRANGE": "Bereich",
+    "REPORTRANGE": "Berichtsbereich",
     "VALIDITYSTART": "Startzeit",
     "VALIDITYEND": "Endzeit",
     "EXECUTEEVERY": "Alle ausführen",
     "MONTHLY": "Monatlich",
     "PREVIOUS_DAY": "Vorheriger Tag",
     "LAST_SEVEN_DAYS": "Letzte sieben Tage",
-    "LAST_THIRTY_DAYS": "Letzte 30 Tage",
+    "LAST_THIRTY_DAYS": "33 verbotenen letzte Tage",
     "LAST_MONTH": "Letzter Monat",
-    "WEEKDAYS": "Wochentage",
+    "WEEKDAYS": "Woche Tage",
     "HOUR": "Stunde",
     "DEFAULT": "Standard",
     "CSV": "CSV",
     "15MIN": "15 Minuten",
     "30MIN": "30 Minuten",
     "1H": "1 Stunde",
-    "VOICE": "Sprachanrufe",
+    "VOICE": "Voice",
     "CHAT": "Chat",
     "SMS": "SMS",
     "OPENCHANNEL": "Offener Kanal",
     "ADD_ALLCONDITION": "Bedingung hinzufügen",
     "EDIT_ACTION": "Aktion bearbeiten",
     "DELETE_ACTION": "Aktion löschen",
-    "NEW_ACTION": "Neue Aktion",
+    "NEW_ACTION": "Neue Maßnahme",
     "ADD_ACTION": "Aktion hinzufügen",
     "QUEUE": "Warteschlange",
     "CALL_STATUS": "Anrufstatus",
-    "OUTBOUNDROUTE": "Ausgehende Routen",
-    "EQUALS": "ist gleich",
-    "NOT_EQUALS": "ist nicht gleich",
-    "CONTACT_MANAGER": "Kontaktmanager",
+    "OUTBOUNDROUTE": "Abgehende Routen",
+    "EQUALS": "Ist gleich",
+    "NOT_EQUALS": "Nicht gleich",
+    "CONTACT_MANAGER": "Contacts Manager",
     "INTEGRATIONS": "Integrationen",
     "MOTIONBAR": "Motion Bar",
     "JSCRIPTY": "Jscripty",
-    "URL_FORWARD": "URL-Weiterleitung",
-    "WEB_POPUP": "Web-Popup",
+    "URL_FORWARD": "URL Weiterleitung",
+    "WEB_POPUP": "Web Popup",
     "LIST": "Liste",
     "INTEGRATION": "Integration",
     "TEMPLATE": "Vorlage",
     "OPERATOR": "Betreiber",
     "NO_INTERVALS_AVAILABLE": "Keine Intervalle zur Verfügung",
     "YES": "Ja",
-    "NO": "Nein",
+    "NO": "Keine",
     "SUBJECT": "Betreff",
-    "NO_AVAILABLE_INFO": "Keine Informationen verfügbar",
+    "NO_AVAILABLE_INFO": "Keine verfügbaren Info",
     "BROWSER": "Browser",
     "INTERVAL": "Intervall",
-    "INFO": "Information",
+    "INFO": "Info",
     "TIME_RANGE": "Zeitbereich",
-    "WEEK_DAYS": "Wochentage",
-    "MONTH_DAYS": "Monatstage",
+    "WEEK_DAYS": "Woche Tage",
+    "MONTH_DAYS": "Monat Tage",
     "MONTHS": "Monate",
-    "DROP_TO_UPLOAD_MESSAGE": "Dateien hier hinein ziehen zum Hochladen. Unterstütze Formate: .mp3, .wav, .gsm; Max. Dateigröße: 15 MB",
+    "DROP_TO_UPLOAD_MESSAGE": "Sie können auch Audiodateien hier ablegen\" hochzuladen. Nur MP3-, WAV-, GSM-Max. 15 MB",
     "POLLING_INTERVAL": "Abfrageintervall (Sekunden)",
-    "DASHBOARD": "Dashboard",
-    "NEW_DASHBOARDITEM": "Neues Dashboard-Widget",
+    "DASHBOARD": "Armaturenbrett",
+    "NEW_DASHBOARDITEM": "Neue Dashboard Widget",
     "COUNTER": "Zähler",
     "IFRAME": "IFrame",
     "CLOCK": "Uhr",
-    "ADD_DASHBOARDITEM": "Dashboard-Widget hinzufügen",
-    "EDIT_WIDGET": "Widget bearbeiten",
-    "DELETE_WIDGET": "Widget löschen",
-    "FLIP_WIDGET": "Widget drehen",
+    "ADD_DASHBOARDITEM": "Dashboard Widget hinzufügen",
+    "EDIT_WIDGET": "Bearbeiten Widget",
+    "DELETE_WIDGET": "Löschen Widget",
+    "FLIP_WIDGET": "Flip Widget",
     "TITLE": "Titel",
     "UPDATE": "Aktualisieren",
     "LAYOUT": "Layout",
     "FOREGROUND_COLOR": "Vordergrundfarbe",
     "FOREGROUND_TITLE_COLOR": "Vordergrund Titel Farbe",
     "THEME": "Thema",
-    "LIGHT": "Hell",
+    "LIGHT": "Licht",
     "DARK": "Dunkel",
     "TIMEZONE": "Zeitzone",
-    "DIGITAL_FORMAT": "Digitales Datumsformat",
+    "DIGITAL_FORMAT": "Digitale Datum Format",
     "TOOLS_QUERY": "Abfrage",
-    "SELECT": "Auswählen",
+    "SELECT": "Wählen Sie",
     "WHERE": "Wo",
     "BACK": "Zurück",
     "PROJECT": "Projekt",
-    "GOTOREALTIME_TRUNK": "Zum Echtzeitmonitoring SIP-Trunks gehen",
-    "GOTO_TRUNK": "Zum SIP-Trunk gehen",
-    "CRON": "CrOn",
+    "GOTOREALTIME_TRUNK": "In Echtzeit, Trunk gehen",
+    "GOTO_TRUNK": "Um die Leitungsbündel gehen",
+    "CRON": "Cron",
     "MINUTES": "Minuten",
     "HOURLY": "Stündlich",
     "YEARLY": "Jährlich",
     "EVERY": "Jede",
     "MINUTE": "Minute",
-    "ON_SECOND": "Zur Sekunde",
-    "HOUR_ON_MINUTE": "Stunde zur Minute",
-    "AND_SECOND": "und Sekunde",
-    "DAY_AT": "Am Tag",
+    "ON_SECOND": "Im 2.",
+    "HOUR_ON_MINUTE": "Stunde Minute",
+    "AND_SECOND": "Und 2.",
+    "DAY_AT": "Tag an",
     "START_TIME": "Startzeit",
-    "ON_THE": "Am",
-    "OF_EVERY": "An jedem",
+    "ON_THE": "Auf der",
+    "OF_EVERY": "Jedes",
     "MONTH_AT": "Monat",
-    "AT": "Um",
+    "AT": "An",
     "LAST": "Letzte",
     "LASTUNIT": "Einheit",
     "MAILACCOUNT": "E-Mail Konto",
-    "OF": "von",
+    "OF": "Von",
     "PAST_THE_HOUR": "Nach der vollen Stunde",
     "DAY": "Tag",
     "WEEK": "Woche",
     "YEAR": "Jahr",
-    "ON": "Am",
+    "ON": "Auf",
     "PAI": "P-Asserted-Identity",
     "PAGE": "Seite",
     "ROWSPERPAGE": "Zeilen pro Seite",
-    "OUTBOUND_ROUTE": "Ausgehende Routen",
-    "EVENTVARIABLES": "Event-Variablen",
+    "OUTBOUND_ROUTE": "Abgehende Routen",
+    "EVENTVARIABLES": "Bei Variablen",
     "FAX": "Fax",
     "INTERACTION": "Interaktion",
     "MESSAGE": "Nachricht",
     "T38PT_UDPTL": "T38 pt Udptl",
-    "AUTOCREATECONTACT": "Automatische Kontakterstellung",
+    "AUTOCREATECONTACT": "Erstellen Sie automatisch",
     "COLOR": "Farbe",
-    "LOCATION": "Standort",
-    "NEW_TAB": "Neuer Tab",
+    "LOCATION": "Lage",
+    "NEW_TAB": "Neue Registerkarte",
     "NEW_WINDOW": "Neues Fenster",
-    "WINDOWWIDTH": "Fensterbreite (px)",
+    "WINDOWWIDTH": "Fenster Breite (px)",
     "WINDOWHEIGHT": "Fensterhöhe (px)",
     "EDIT_DASHBOARDITEM": "Dashboard-Widget bearbeiten",
     "FONTSIZE": "Schriftgröße",
     "FOREGROUND": "Vordergrund",
     "NONE": "Keiner",
     "TOTAL": "Gesamt",
-    "ABANDONED": "Abgebrochen",
+    "ABANDONED": "Verlassen",
     "WAITING": "Warten",
-    "TALKING": "im Gespräch",
-    "ANSWERED": "Beantwortet",
-    "UNMANAGED": "Nicht bearbeitet",
+    "TALKING": "Reden",
+    "ANSWERED": "Antwortete",
+    "UNMANAGED": "Nicht verwaltet",
     "CUSTOMTYPE": "Benutzerdefiniert [Pfad]",
     "WEBREPORT": "Webbericht",
     "PIECHART": "Kuchendiagramm",
     "MULTIBARCHART": "Multibar-Diagramm",
     "MOVE_WIDGET": "Widget verschieben",
-    "USERADD_CUSTOMDASHBOARD": "Berechtigungen hinzufügen",
-    "GOTODASHBOARD_CUSTOMDASHBOARD": "Vorschau Dashboard",
-    "GOTO_CUSTOMDASHBOARD": "Vorschau Dashboard",
+    "USERADD_CUSTOMDASHBOARD": "Hinzufügen von Benutzerberechtigungen",
+    "GOTODASHBOARD_CUSTOMDASHBOARD": "Gehe zum Vorschau-Dashboard",
+    "GOTO_CUSTOMDASHBOARD": "Gehe zum Vorschau-Dashboard",
     "METRIC": "Metrisch",
-    "FILTERVOICEQUEUES": "Anruf-Warteschlangen filtern",
+    "FILTERVOICEQUEUES": "Voice-Warteschlangen filtern",
     "SERIE1": "Serie 1",
     "SERIE2": "Serie 2",
     "SERIE3": "Serie 3",
     "ALL_USERS": "Alle Nutzer",
     "SELECTED_USERS": "Ausgewählte Benutzer",
     "ADD_WIDGET": "Widget hinzufügen",
-    "NEXTCONTACT": "Nächster Kontakt",
+    "NEXTCONTACT": "Nächster",
     "SENDIFEMPTY": "Senden, wenn leer",
-    "CANCEL": "Abbrechen",
+    "CANCEL": "Stornieren",
     "UPLOADING": "Hochladen",
-    "EMAILBCCADDRESS": "BCC",
-    "EMAILCCADDRESS": "CC",
-    "RUN_SCHEDULE": "Zeitplanung ausführen",
-    "ADD_DISPOSITION": "Qualifizierung hinzufügen",
-    "DELETE_DISPOSITION": "Qualifizierung löschen",
-    "DISPOSITIONS": "Qualifizierungen",
-    "EDIT_DISPOSITION": "Qualifizierung bearbeiten",
-    "NEW_DISPOSITION": "Neue Qualifizierung",
-    "CLONE_TRUNK": "Trunk klonen",
-    "BODY": "Textinhalt",
-    "CANNEDANSWERS": "Textvorlagen",
+    "EMAILBCCADDRESS": "Bcc",
+    "EMAILCCADDRESS": "Cc",
+    "RUN_SCHEDULE": "Zeitplan ausführen",
+    "ADD_DISPOSITION": "Disposition hinzufügen",
+    "DELETE_DISPOSITION": "Disposition löschen",
+    "DISPOSITIONS": "Dispositionen",
+    "EDIT_DISPOSITION": "Disposition bearbeiten",
+    "NEW_DISPOSITION": "Neue Disposition",
+    "CLONE_TRUNK": "Klon-Trunk",
+    "BODY": "Karosserie",
+    "CANNEDANSWERS": "Vordefinierte Antworten",
     "REPORTFOLDER": "Berichtsordner",
-    "REPORTSUBFOLDER": "Unterordner",
-    "PREVIOUSCONTACT": "Vorherigen Kontakt",
+    "REPORTSUBFOLDER": "Unterordner melden",
+    "PREVIOUSCONTACT": "Bisherige",
     "VIDEOSUPPORT": "Video-Unterstützung",
     "AGENT": "Agent",
     "HEADERS": "Überschriften",
     "SCRIPT": "Skript",
-    "SCRIPT_INFO": "Information",
+    "SCRIPT_INFO": "Info",
     "SCRIPT_TYPE": "Art",
     "MOTION_TAB": "Neue Registerkarte \"Agent Dashboard\"",
     "WHATSAPP": "WhatsApp Connector",
     "AUTOCREATE_FIELD": "Feld automatisch erstellen",
-    "GLOBALS": "Globale Werte",
+    "GLOBALS": "Globals",
     "SEARCH_FIELDS": "Suchfelder",
     "STANDARD": "Standard",
     "MOTION_BAR": "Motion Bar",
     "ALL": "Alle",
-    "ALL_DISPOSITIONS": "Alle Qualifizierungen",
-    "FIRST_LEVEL_DISPOSITION": "Qualifizierung der ersten Ebene",
-    "LEVEL": "Ebene",
-    "SECOND_LEVEL_DISPOSITION": "Qualifizierung der zweiten Ebene",
-    "SELECT_LEVEL": "Ebene auswählen",
-    "TITLEFONTSIZE": "Schriftgröße Titel"
+    "ALL_DISPOSITIONS": "Alle Dispositionen",
+    "FIRST_LEVEL_DISPOSITION": "First Level Disposition",
+    "LEVEL": "Niveau",
+    "SECOND_LEVEL_DISPOSITION": "Disposition der zweiten Ebene",
+    "SELECT_LEVEL": "Wählen Sie eine Ebene",
+    "TITLEFONTSIZE": "Schrifttitelgröße"
   }
 }
index 254759d..91d5165 100644 (file)
     "SERVICELEVEL": "مستوى الخدمة",
     "SECOND_LEVEL_DISPOSITION": "ترتيب المستوى الثاني",
     "THIRD_LEVEL_DISPOSITION": "الترتيب الثالث",
-    "TEAMADD_VOICEPREFIX": "أضف الفريق إلى البادئة",
     "ALIAS": "الاسم المستعار"
   }
 }
index 3f3b98d..5fe900e 100644 (file)
     "SERVICELEVEL": "Úroveň služby",
     "SECOND_LEVEL_DISPOSITION": "Dispozice druhé úrovně",
     "THIRD_LEVEL_DISPOSITION": "Dispozice třetí úrovně",
-    "TEAMADD_VOICEPREFIX": "Přidat tým k předponě",
     "ALIAS": "Alias"
   }
 }
index ea7f1fe..67570a2 100644 (file)
     "SERVICELEVEL": "Serviceniveau",
     "SECOND_LEVEL_DISPOSITION": "Andet niveau disposition",
     "THIRD_LEVEL_DISPOSITION": "Tredje niveau disposition",
-    "TEAMADD_VOICEPREFIX": "Føj team til præfiks",
     "ALIAS": "Alias"
   }
 }
index bd7bae8..c698d09 100644 (file)
@@ -1,68 +1,68 @@
 {
   "VOICE": {
-    "GOTO_VOICEQUEUE": "Zur Anruf-Warteschlange gehen",
-    "GOTOREALTIME_VOICEQUEUE": "Zur Echtzeitansicht Anruf-Warteschlange gehen",
+    "GOTO_VOICEQUEUE": "Zu Realtime Voice Warteschlangen gehen",
+    "GOTOREALTIME_VOICEQUEUE": "Zu Realtime Voice Warteschlangen gehen",
     "NAME": "Name",
     "LOGOUT": "An-/Abmelden",
-    "VOICEQUEUES": "Anruf-Warteschlangen",
-    "SEARCH_FOR_ANYONE": "Suche",
+    "VOICEQUEUES": "Voice Warteschlangen",
+    "SEARCH_FOR_ANYONE": "Suche für Jedermann",
     "BACK": "Zurück",
-    "SELECTED": "Ausgewählt",
-    "SELECT_ALL": "Alles auswählen",
-    "SELECT_NONE": "Nichts auswählen",
-    "DELETE_VOICEDISPOSITION": "Qualifizierung löschen",
-    "EDIT_VOICEDISPOSITION": "Qualifizierung bearbeiten",
-    "EDIT_VOICEQUEUE": "Anruf-Warteschlange bearbeiten",
-    "DELETE_VOICEQUEUE": "Anruf-Warteschlange löschen",
-    "MOHSOUNDS": "MOH-Töne",
+    "SELECTED": "Ausgewählte",
+    "SELECT_ALL": "Alle auswählen",
+    "SELECT_NONE": "Wählen Sie \"Keine\"",
+    "DELETE_VOICEDISPOSITION": "Disposition löschen",
+    "EDIT_VOICEDISPOSITION": "Edit Voice Disposition",
+    "EDIT_VOICEQUEUE": "Edit Voice Warteschlange",
+    "DELETE_VOICEQUEUE": "Warteschlange löschen",
+    "MOHSOUNDS": "Die MOH-Sounds",
     "STRATEGY": "Strategie",
     "DESCRIPTION": "Beschreibung",
-    "ADD_VOICEQUEUE": "Warteschlangen hinzufügen",
+    "ADD_VOICEQUEUE": "Hinzufügen von Warteschlangen",
     "CREATED_AT": "Erstellt am",
-    "CANT_PLAY_GSM_AUDIO_FILES": "Nicht GSM-Audiodateien",
+    "CANT_PLAY_GSM_AUDIO_FILES": "Nicht gsm-Audiodateien",
     "APPLICATIONS_LIST": "Liste der Anwendungen",
     "LEGEND": {
       "CUSTOM_APPLICATION": "(*) - Benutzerdefinierte Anwendung."
     },
     "ERRORS": {
-      "NAME_REQUIRED": "Name ist erforderlich",
-      "APPLICATION_NAME_REQUIRED": "Name der Anwendung ist erforderlich",
-      "TIMEOUT_REQUIRED": "Timeout ist erforderlich",
-      "PHONENUMBER_REQUIRED": "Telefonnummer ist erforderlich",
-      "CONTEXT_REQUIRED": "Kontext ist erforderlich",
-      "DESTINATIONPATTERN_REQUIRED": "Ziel-Pattern ist erforderlich",
-      "FULLNAME_REQUIRED": "Vollständiger Name ist erforderlich",
-      "EMAIL_REQUIRED": "E-Mail ist erforderlich",
-      "EMAIL_MUST_VALID": "E-Mail Format ungültig",
-      "MAILBOX_REQUIRED": "Mailbox ist erforderlich",
-      "PASSWORD_REQUIRED": "Passwort ist erforderlich",
-      "CONFIRM_NOT_MATCH": "Die Passwörter stimmen nicht überein",
-      "TIMEZONE_REQUIRED": "Zeitzone ist erforderlich",
-      "PREFIX_REQUIRED": "Präfix ist erforderlich",
-      "OPTIONS_REQUIRED": "Bedingungen sind Erforderlich",
-      "AFTERCALLWORKDURATION_REQUIRED": "Dauer Nacharbeit ist erforderlich",
-      "TECHNOLOGY/RESOURCE_REQUIRED": "Ressource ist erforderlich",
-      "PHONE_REQUIRED": "Telefonnummer ist erforderlich",
-      "VALUE_REQUIRED": "Wert ist erforderlich",
-      "EXTENSION_REQUIRED": "Nebenstelle ist erforderlich",
-      "PRIORITY_REQUIRED": "Priorität ist erforderlich",
-      "NAME_MUST_VALID_PATTERN": "Format Name ungültig",
-      "APPLICATION_REQUIRED": "Anwendung ist erforderlich",
-      "TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Timeout muss größer oder gleich sein als",
-      "MAXLENGTH_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Die max. Länge muss größer oder gleich sein als",
-      "RETRY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Wiederversuche muss größer oder gleich sein als",
-      "WRAPUPTIME_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Nacharbeit Zeit muss größer oder gleich sein als",
-      "WEIGHT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Gewichtung muss größer oder gleich sein als",
-      "ANNOUNCEFREQUENCY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Frequenz der Ansagen muss größer oder gleich sein als",
-      "MINANNOUNCEFREQUENCY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Min. Frequenz der Ansagen muss größer oder gleich sein als",
-      "PERIODICANNOUNCEFREQUENCY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Wiederholende Frequenz der Ansagen muss größer oder gleich sein als",
-      "AFTERCALLWORKDURATION_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Nacharbeit Zeit muss größer oder gleich sein als",
-      "MEMBERDELAY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Verzögerung muss größer oder gleich sein als",
-      "POSITION_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Position muss größer oder gleich sein als",
-      "CUTDIGITS_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Schnitt muss größer oder gleich sein als",
-      "MAXSECONDS_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Max. Sekundenmuss größer oder gleich sein als",
-      "MAXMESSAGES_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Max. Nachrichten muss größer oder gleich sein als",
-      "MAXMESSAGES_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Max. Nachrichten muss kleiner oder gleich sein als",
+      "NAME_REQUIRED": "Der Name ist erforderlich",
+      "APPLICATION_NAME_REQUIRED": "Der Name der Anwendung ist erforderlich",
+      "TIMEOUT_REQUIRED": "Der Timeout ist erforderlich",
+      "PHONENUMBER_REQUIRED": "Die Telefonnummer ist erforderlich",
+      "CONTEXT_REQUIRED": "Der Rahmen ist erforderlich",
+      "DESTINATIONPATTERN_REQUIRED": "Das Ziel-pattern ist erforderlich",
+      "FULLNAME_REQUIRED": "Der vollständige Name ist erforderlich",
+      "EMAIL_REQUIRED": "Die E-Mail ist erforderlich",
+      "EMAIL_MUST_VALID": "Die e-Mail muss in einem gültigen Format",
+      "MAILBOX_REQUIRED": "Die Mailbox ist erforderlich",
+      "PASSWORD_REQUIRED": "Das Kennwort ist erforderlich",
+      "CONFIRM_NOT_MATCH": "Die Kennwörter stimmen nicht überein.",
+      "TIMEZONE_REQUIRED": "Die Zeitzone ist erforderlich",
+      "PREFIX_REQUIRED": "Das Präfix ist erforderlich",
+      "OPTIONS_REQUIRED": "Die Optionen sind Erforderlich",
+      "AFTERCALLWORKDURATION_REQUIRED": "Die Arbeit nach Anruf Dauer ist erforderlich",
+      "TECHNOLOGY/RESOURCE_REQUIRED": "Die Technologie/Ressource erforderlich ist",
+      "PHONE_REQUIRED": "Die Telefonnummer ist erforderlich",
+      "VALUE_REQUIRED": "Der Wert ist erforderlich",
+      "EXTENSION_REQUIRED": "Die Verlängerung ist erforderlich",
+      "PRIORITY_REQUIRED": "Die Priorität ist erforderlich",
+      "NAME_MUST_VALID_PATTERN": "Der Name muss in einem gültigen Format geschrieben werden",
+      "APPLICATION_REQUIRED": "Die Anwendung ist erforderlich",
+      "TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Der Timeout muss größer als oder gleich",
+      "MAXLENGTH_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Die max. Länge muss größer als oder gleich",
+      "RETRY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Die Wiederholung muss größer als oder gleich",
+      "WRAPUPTIME_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Die Nachlese Zeit muss größer als oder gleich",
+      "WEIGHT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Das Gewicht muss größer als oder gleich",
+      "ANNOUNCEFREQUENCY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Die Häufigkeit verkünden muss größer als oder gleich",
+      "MINANNOUNCEFREQUENCY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Die Min Frequenz ankündigen muss größer als oder gleich",
+      "PERIODICANNOUNCEFREQUENCY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Die periodische Frequenz ankündigen muss größer als oder gleich",
+      "AFTERCALLWORKDURATION_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Die Arbeit nach Anruf Dauer muss größer als oder gleich",
+      "MEMBERDELAY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Die Verzögerung muss größer als oder gleich",
+      "POSITION_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Die Position muss größer als oder gleich",
+      "CUTDIGITS_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Den Schnitt stellen muss größer als oder gleich",
+      "MAXSECONDS_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Muss die Max Sekunden größer als oder gleich",
+      "MAXMESSAGES_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Die Max Meldungen muss größer als oder gleich",
+      "MAXMESSAGES_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Die Max Meldungen muss kleiner als oder gleich",
       "CALLERIDALL_MUST_VALID_PATTERN": "Falsches Format",
       "OUTBOUNDROUTE_REQUIRED": "Pflichtfeld",
       "VARIABLE_REQUIRED": "Pflichtfeld",
       "TRUNK_REQUIRED": "Pflichtfeld",
       "MANDATORYDISPOSITIONPAUSEID_REQUIRED": "Pflichtfeld",
       "PROJECT_REQUIRED": "Pflichtfeld",
-      "PENALTY_REQUIRED": "Wert für Verzögerung erforderlich"
+      "PENALTY_REQUIRED": "Sie müssen einen Wert für die Strafe angeben"
     },
     "GENERAL": "Allgemein",
     "TIMEOUT": "Timeout",
     "MAXLENGTH": "Maximale Länge",
-    "RETRY": "Bitte erneut versuchen",
-    "WRAPUPTIME": "Nacharbeit",
-    "WEIGHT": "Gewichtung",
-    "JOINWHENEMPTY": "Beitreten, wenn leer",
-    "LEAVEWHENEMPTY": "Verlassen, wenn leer",
+    "RETRY": "Versuchen Sie es erneut",
+    "WRAPUPTIME": "-Zeit",
+    "WEIGHT": "Gewicht",
+    "JOINWHENEMPTY": "Melden Sie wenn sie leer sind",
+    "LEAVEWHENEMPTY": "Wenn sie leer lassen",
     "HELP": {
-      "TIMEOUT": "Zeitüberschreitung in Sekunden",
-      "MAXLENGTH": "Maximaler Anrufer in der Warteschlange. Wenn Wert 0, dann keine Begrenzung.",
-      "RETRY": "Klingelzeit in Sekunden pro Mitglied. Danach erfolgt ein weiterer Versuch bei der nächsten freien Nebenstelle.",
-      "WRAPUPTIME": "Nacharbeitszeit in Sekunden, bis ein Nutzer nach einem Anruf wieder verfügbar ist.",
-      "WEIGHT": "Gewichtung der Warteschlange. Ein höherer Wert bedeutet eine Priorisierung gegenüber anderen Warteschlangen.",
-      "JOINWHENEMPTY": "Legt fest, ob ein Anruf in die Warteschlange eintreten kann, wenn dort keine Nutzer angemeldet sind.",
-      "LEAVEWHENEMPTY": "Wirft den Anruf aus der Warteschlange, wenn dort kein Nutzer angemeldet ist.",
-      "ANNOUNCEFREQUENCY": "Intervall für automatische Ansagen der Wartezeit, Position, etc. Der Wert 0 deaktiviert diese Option.",
-      "MINANNOUNCEFREQUENCY": "Minimales Intervall für die Ansagen der Wartezeit. Verhindert, dass ein Nutzer bei häufigen Wechsel der Warteposition zu viele Ansagen erhält.",
-      "PERIODICANNOUNCEFREQUENCY": "Legt fest, wie oft die sich wiederholenden Ansagen gespielt werden sollen",
-      "ANNOUNCEPOSITIONLIMIT": "Wird verwendet, wenn der Wert für die Warteposition auf \"Limitierung\" oder \"Mehr\" gestellt wird.",
-      "AFTERCALLWORKDURATION": "Die Dauer der Nacharbeit nach einem Anruf",
-      "MEMBERDELAY": "Erstellt eine Verzögerung des Anrufes für bestimmte Agenten. Kann zum Skillbasierten Routing verwendet werden.",
-      "MUSICONHOLD": "Legt die Haltemusik auf Basis der Warteschlange fest",
-      "ANNOUNCETOAGENT": "Legt fest, ob der Agent vor Annahme des Anrufes einen Hinweis auf die eingehende Warteschlange hört",
-      "RANDOMPERIODICANNOUNCE": "Bei ja, werden die zugewiesenen Ansagen zufällig abgespielt",
-      "ANNOUNCEHOLDTIME": "Spielt die geschätzte Wartezeit zusammen oder ohne die sich wiederholenden Ansagen ab.",
-      "ANNOUNCECALLERPOSITION": "Definiert die Ansage der Warteposition für den Anrufer. Nein = Niemals; Ja = Immer; Limitierung = nur, wenn die Zeit innerhalb dem eingetragenen Wert liegt; Mehr = nur, wenn die Zeit oberhalb dem eingetragenen Wert liegt ",
-      "REPORTHOLDTIMEAGENT": "Haltezeiten der Agenten in den Berichten verwenden",
-      "PERIODICANNOUNCE": "Sich wiederholende Ansagen; können je nach Konfiguration in definierter Reihenfolge oder zufällig abgespielt werden.",
-      "HOLDTIMEANNOUNCE": "Ansage der Wartezeit. Leer lassen zum Überspringen",
-      "YOUARENEXTANNOUNCE": "Ansage \"Sie sind an erster Position der Warteschlange\", Leer lassen zum Überspringen",
-      "THEREAREANNOUNCE": "Ansage \"Es befinden sich..\" Leer lassen zum Überspringen",
-      "WAITINGCALLSANNOUNCE": "Ansage \"...Anrufe in der Warteschlange\" Leer lassen zum Überspringen",
-      "ESTIMATEDHOLDTIMEANNOUNCE": "Ansage: \"Die geschätzte Wartezeit beträgt derzeit...\" Leer lassen zum Überspringen",
-      "MINUTESANNOUNCE": "Ansage \"Minuten\"",
-      "MINUTEANNOUNCE": "Ansage \"Minute\"",
-      "SECONDSANNOUNCE": "Ansage \"Sekunden\" Leer lassen zum Überspringen",
-      "THANKYOUANNOUNCE": "Ansage \"Vielen Dank für Ihre Geduld\" Leer lassen zum Überspringen",
-      "AFTERCALLWORK": "Wenn aktiviert, erhalten die Agenten eine kurze Pause nach jedem Anruf",
-      "AUTOPAUSE": "Aktiviert/Deaktiviert die automatische Pause der Agenten, bei einem verpassten Anruf. Hinweis: bezieht sich dann auf alle Anruf-Warteschlangen des Agenten.",
-      "RINGINUSE": "Verhindert das Klingeln bei Agenten, deren Nebenstelle in Verwendung ist",
-      "TIMEOUTRESTART": "Wenn ja, wird die Zeitüberschreitung bei Agenten mit \"Besetzt\" oder \"Verbindungsfehler\"-Status übersprungen",
-      "CONTEXT": "Ermöglicht einem Anrufer, durch Drücken einer einzelnen Taste, die Warteschlange zu verlassen.",
-      "SETINTERFACEVARIABLES": "Definiert die Variablen im Interface, welche bei einem Anruf übergeben werden können. ",
-      "SETQUEUEVARIABLES": "Definiert die Variablen in der Warteschlange, welche bei einem Anruf übergeben werden können. ",
-      "SETQUEUEENTRYVARIABLES": "Definiert die Variablen beim Eintritt in die Warteschlange, welche bei einem Anruf übergeben werden können. ",
+      "TIMEOUT": "Gibt die Anzahl von Sekunden an, die das Gerät.",
+      "MAXLENGTH": "Gibt die maximale Anzahl der Anrufer, die in der Warteschlange. Ein Wert von Null bedeutet, dass eine unbegrenzte Anzahl von Anrufern in der Warteschlange sind erlaubt.",
+      "RETRY": "Gibt die Anzahl der Sekunden, die gewartet wird, bevor das nächste Mitglied in die Warteschlange, wenn der Wert für die Zeitüberschreitung erschöpft ist, während versucht wird, den ein Mitglied der Warteschlange.",
+      "WRAPUPTIME": "Die Anzahl der Sekunden, die ein Mitglied in einer Warteschlange verfügbar, nachdem Sie einen Anruf.",
+      "WEIGHT": "Legt das Gewicht einer Warteschlange. Eine Warteschlange mit einem höheren Gewicht definiert werden erste Priorität, wenn Mitglieder, die mit mehreren Warteschlangen.",
+      "JOINWHENEMPTY": "Steuert, ob ein Anrufer wird zur Warteschlange hinzugefügt werden, wenn keine Mitglieder verfügbar sind.",
+      "LEAVEWHENEMPTY": "Zur Kontrolle, ob die Anrufer aus der Warteschlange, wenn die Mitglieder nicht mehr bereit sind, Anrufe zu beantworten.",
+      "ANNOUNCEFREQUENCY": "Legt fest, wie oft sollten wir den Anrufer ankündigen und/oder geschätzte Wartezeit in der Warteschlange. Setzen Sie diesen Wert auf Null, um die Funktion zu deaktivieren.",
+      "MINANNOUNCEFREQUENCY": "Gibt die minimale Zeit, die verstreichen müssen, bevor wir Ihnen die Anrufer in der Warteschlange wieder. Dieser wird verwendet, wenn der Anrufer die Position kann sich häufig ändern, um zu verhindern, dass der Anrufer hören mehrere Updates in einem kurzen Zeitraum.",
+      "PERIODICANNOUNCEFREQUENCY": "Gibt an, wie oft wir sollten regelmäßige Ansagen, die dem Anrufer vorgespielt werden.",
+      "ANNOUNCEPOSITIONLIMIT": "Sie kann verwendet werden, wenn Sie definiert haben, verkünden-Position entweder als Begrenzung oder mehr.",
+      "AFTERCALLWORKDURATION": "Die Dauer der Pause durch die Option \"Arbeit nach Anruf",
+      "MEMBERDELAY": "Sie kann verwendet werden, wenn Sie wollen, dass es eine Verzögerung, bevor der Anrufer und Mitglied der Warteschlange, die miteinander verbunden sind.",
+      "MUSICONHOLD": "Setzt die Musik klasse verwendet werden, die von einer bestimmten Warteschlange an.",
+      "ANNOUNCETOAGENT": "Für die Wiedergabe einer Ansage auf den Agenten, der den Anruf entgegengenommen hat, ihn wissen zu lassen, was der Anrufer die Warteschlange aus.",
+      "RANDOMPERIODICANNOUNCE": "Falls auf Ja eingestellt, wird die festgelegte regelmäßige Mitteilungen in einer zufälligen Reihenfolge.",
+      "ANNOUNCEHOLDTIME": "Legt fest, ob die geschätzte Wartezeit gespielt werden sollte zusammen mit den regelmäßigen Ankündigungen.",
+      "ANNOUNCECALLERPOSITION": "Legt fest, ob es sich bei dem Anrufer seine Position in der Warteschlange mitgeteilt werden sollten. Wenn die Einstellung Nein lautet, die Position wird nicht bekannt gegeben. Falls auf Ja eingestellt, wird die Position des Anrufers wird immer bekannt gegeben. Wenn der Wert überschritten wird, wird der Anrufer hört ihre Position in der Warteschlange nur, wenn er sich innerhalb der Grenze von AK-Position. Wenn der Wert auf Mehr, hört der Anrufer ihre Position, wenn es über die Zahl von AK-Position.",
+      "REPORTHOLDTIMEAGENT": "Die Berichterstattung über die CLI des Anrufers mit der Zeit in der Warteschleife in der Warteschlange vor.",
+      "PERIODICANNOUNCE": "Eine Reihe von regelmäßigen Mitteilungen gespielt zu werden, in der Reihenfolge wiedergegeben, in der sie definiert sind.",
+      "HOLDTIMEANNOUNCE": "Wenn nicht definiert, wird die Standardeinstellung (\"Hold\"). Wenn Sie auf einen leeren Wert, wird die Aufforderung werden nicht gespielt.",
+      "YOUARENEXTANNOUNCE": "Wenn nicht definiert, wird die Standardeinstellung (\"Sie sind jetzt in erster Linie\"). Wenn Sie auf einen leeren Wert, wird die Aufforderung werden nicht gespielt.",
+      "THEREAREANNOUNCE": "Wenn nicht definiert, wird die Standardeinstellung (\"Es gibt\"). Wenn Sie auf einen leeren Wert, wird die Aufforderung werden nicht gespielt.",
+      "WAITINGCALLSANNOUNCE": "Wenn nicht definiert, wird die Standardeinstellung (\"Wartende Anrufe\"). Wenn Sie auf einen leeren Wert, wird die Aufforderung werden nicht gespielt.",
+      "ESTIMATEDHOLDTIMEANNOUNCE": "Wenn nicht definiert, wird die Standardeinstellung (\"Die voraussichtliche Wartezeit ist\"). Wenn Sie auf einen leeren Wert, wird die Aufforderung werden nicht gespielt.",
+      "MINUTESANNOUNCE": "Wenn nicht definiert, wird die Standardeinstellung (\"min\"). Wenn Sie auf einen leeren Wert, wird die Aufforderung werden nicht gespielt.",
+      "MINUTEANNOUNCE": "Wenn nicht definiert, wird die Standardeinstellung (\"min\"). Wenn Sie auf einen leeren Wert, wird die Aufforderung werden nicht gespielt.",
+      "SECONDSANNOUNCE": "Wenn nicht definiert, wird die Standardeinstellung (\"Sekunden\"). Wenn Sie auf einen leeren Wert, wird die Aufforderung werden nicht gespielt.",
+      "THANKYOUANNOUNCE": "Wenn nicht definiert, wird die Standardeinstellung (\"Vielen Dank für Ihre Geduld.\"). Wenn Sie auf einen leeren Wert, wird die Aufforderung werden nicht gespielt.",
+      "AFTERCALLWORK": "Wenn der Agent aktiv ist, wird auf eine Pause nach einer abgeschlossenen Anruf in der Warteschlange",
+      "AUTOPAUSE": "Aktiviert/Deaktiviert die automatische Unterbrechung der Mitglieder, die es versäumen, um einen Anruf zu beantworten. Wenn aktiv, wird diese Mitgliedstaaten angehalten zu werden in allen Warteschlangen er Mitglied ist.",
+      "RINGINUSE": "Verwendet werden, um zu vermeiden, Senden von Anrufen an Mitglieder, deren Status im Einsatz ist.",
+      "TIMEOUTRESTART": "Falls auf Ja eingestellt, wird das Timeout für einen Agenten zu beantworten, wenn entweder ein Besetztzeichen oder wird mit dem Status \"Überlastung des Kanals.",
+      "CONTEXT": "Ermöglicht einem Anrufer zu beenden, die die Warteschlange durch Drücken einer einzigen Taste MFV-Ziffer. Wenn Sie einen Kontext angegeben ist und der Anrufer gibt eine Zahl, Ziffer wird versuchen, die angepasst werden können, im Rahmen festgelegt, und es wird auch weiterhin die Ausführung Nummernplan.",
+      "SETINTERFACEVARIABLES": "Falls auf Ja eingestellt, kurz vor dem Anrufer, die mit einer Warteschlange, die einige Variablen werden(siehe wiki)",
+      "SETQUEUEVARIABLES": "Falls auf Ja eingestellt, kurz vor dem Anrufer, die mit einer Warteschlange und kurz vor dem Anrufer die Warteschlange verlassen einige Variablen werden(siehe wiki)",
+      "SETQUEUEENTRYVARIABLES": "Falls auf Ja eingestellt, kurz vor dem Anrufer, die mit einer Warteschlange, die einige Variablen werden(siehe wiki)",
       "RECORDING": "Aktivieren der Aufzeichnung",
-      "VOICEMAIL_CONTEXT": "Kontext der verwendeten Nebenstellen",
+      "VOICEMAIL_CONTEXT": "Im Rahmen der relativen Erweiterung.",
       "NAME": "Nur Zahlen, Buchstaben und Sonderzeichen (._) werden unterstützt.",
       "CALLERIDALL": "Unterstützte Formate: \"CallerId\" & lt; number & gt;",
       "CALLER_ID": "Unterstützte Formate: \"CallerId\" & lt; number & gt;",
-      "MANDATORYDISPOSITIONPAUSEID": "Pausenstatus, welcher während einer erforderlichen Qualifizierung verwendet wird",
-      "SERVICELEVEL": "Zweite Einstellungen für Service-Level (Standard = 0, kein SL). Wird für Service Level-Statistiken verwendet (Anrufe werden innerhalb des Service Level-Zeitrahmens beantwortet)",
-      "MONITORFORMAT": "Gibt das Format der Aufzeichnungsdatei an. Bei 'inaktiv', werden Anrufe nicht aufgezeichnet"
+      "MANDATORYDISPOSITIONPAUSEID": "Pausenstatus, der während der Zwangsdisposition festgelegt werden soll",
+      "SERVICELEVEL": "Zweite Einstellungen für Service Level (Standard = 0, kein SL). Wird für Service Level-Statistiken verwendet (Anrufe werden innerhalb des Service Level-Zeitrahmens beantwortet)",
+      "MONITORFORMAT": "Gibt das Format der Aufnahmedatei an. Wenn es auf 'inaktiv' gesetzt ist, werden Anrufe nicht aufgezeichnet",
+      "SAVE_ROUTES": "Die Streckenführung wurde geändert. Denken Sie daran, zu speichern, wenn Sie Ihre Änderungen nicht verlieren möchten."
     },
-    "MUSICONHOLD": "Wartemusik",
-    "ANNOUNCETOAGENT": "Ansage an Agenten",
-    "ANNOUNCEMENTS": "Ansagen",
-    "ADVANCED": "Erweitert",
-    "ANNOUNCEFREQUENCY": "Ansagefrequenz",
-    "MINANNOUNCEFREQUENCY": "Min. Ansagefrequenz",
-    "PERIODICANNOUNCEFREQUENCY": "Frequenz wiederholende Ansagen",
-    "RANDOMPERIODICANNOUNCE": "Zufällige Ansagen",
-    "ANNOUNCEHOLDTIME": "Wartezeit ansagen",
-    "ANNOUNCECALLERPOSITION": "Warteposition ansagen",
-    "ANNOUNCEPOSITIONLIMIT": "Limitierung Warteposition ansagen",
-    "REPORTHOLDTIMEAGENT": "Haltezeit in Agentenbericht",
-    "PERIODICANNOUNCE": "Wiederholende Ansagen",
-    "HOLDTIMEANNOUNCE": "Wartezeit ansagen",
-    "YOUARENEXTANNOUNCE": "Erste Position",
-    "THEREAREANNOUNCE": "Es befinden sich",
-    "WAITINGCALLSANNOUNCE": "Wartende Anrufe",
-    "ESTIMATEDHOLDTIMEANNOUNCE": "Geschätzte Wartezeit ansagen",
-    "MINUTESANNOUNCE": "Minuten",
-    "MINUTEANNOUNCE": "Minute",
-    "SECONDSANNOUNCE": "Sekunden",
+    "MUSICONHOLD": "Musik auf Halten",
+    "ANNOUNCETOAGENT": "Geben Sie Agent",
+    "ANNOUNCEMENTS": "Ankündigungen",
+    "ADVANCED": "Erweiterte",
+    "ANNOUNCEFREQUENCY": "Frequenz ankündigen",
+    "MINANNOUNCEFREQUENCY": "Minimale Frequenz ankündigen",
+    "PERIODICANNOUNCEFREQUENCY": "Periodische Frequenz ankündigen",
+    "RANDOMPERIODICANNOUNCE": "Random Periodische verkünden",
+    "ANNOUNCEHOLDTIME": "Geben Sie Zeit",
+    "ANNOUNCECALLERPOSITION": "Position des Anrufers bekannt",
+    "ANNOUNCEPOSITIONLIMIT": "Geben Position Limit",
+    "REPORTHOLDTIMEAGENT": "Bericht Agenten",
+    "PERIODICANNOUNCE": "Periodische verkünden",
+    "HOLDTIMEANNOUNCE": "Zeit in der Warteschleife verkünden",
+    "YOUARENEXTANNOUNCE": "\"Sie sind weiter' verkünden",
+    "THEREAREANNOUNCE": "'Es gibt' verkünden",
+    "WAITINGCALLSANNOUNCE": "Wartende Anrufe,",
+    "ESTIMATEDHOLDTIMEANNOUNCE": "Geschätzte Zeit halten,",
+    "MINUTESANNOUNCE": "Minuten ankündigen",
+    "MINUTEANNOUNCE": "Minute verkünden",
+    "SECONDSANNOUNCE": "Sekunden,",
     "THANKYOUANNOUNCE": "'Vielen Dank' verkünden",
     "AUTOPAUSE": "Auto Pause",
-    "AFTERCALLWORK": "Nacharbeit",
-    "AFTERCALLWORKDURATION": "Dauer Nacharbeit",
-    "RINGINUSE": "Klingeln bei Besetzt",
-    "MEMBERDELAY": "Verzögerung",
-    "TIMEOUTRESTART": "Zeitüberschreitung",
+    "AFTERCALLWORK": "Arbeit nach Anruf",
+    "AFTERCALLWORKDURATION": "Arbeit nach Anruf Dauer",
+    "RINGINUSE": "Ring in Verwendung",
+    "MEMBERDELAY": "Die Verzögerung",
+    "TIMEOUTRESTART": "Timeout starten",
     "MONITORFORMAT": "Aufzeichnungsformat",
-    "SETINTERFACEVARIABLES": "Interface-Variablen",
-    "SETQUEUEVARIABLES": "Warteschlangen-Variablen",
-    "SETQUEUEENTRYVARIABLES": "Warteschlangen-Eintritts-Variablen",
+    "SETINTERFACEVARIABLES": "Die Interface- Variablen",
+    "SETQUEUEVARIABLES": "Die Warteschlange Variablen",
+    "SETQUEUEENTRYVARIABLES": "Die Warteschlange ENTRY-Variablen",
     "VARIABLE": "Variable",
-    "CONTEXT": "Kontext Austritt aus Warteschlange",
+    "CONTEXT": "Kontext",
     "SAVE": "Speichern",
     "SETTINGS": "Einstellungen",
-    "INBOUNDROUTES": "Eingehende Routen",
+    "INBOUNDROUTES": "Ankommende Routen",
     "PHONENUMBER": "Telefonnummer",
     "ADD_INBOUNDROUTE": "Eingehende Route hinzufügen",
-    "EDIT_INBOUNDROUTE": "Eingehende Route bearbeiten",
-    "DELETE_INBOUNDROUTE": "Eingehende Route löschen",
+    "EDIT_INBOUNDROUTE": "Route für eingehende Anrufe bearbeiten.",
+    "DELETE_INBOUNDROUTE": "Löschen der Route für eingehende Anrufe",
     "ACTIONS": "Aktionen",
-    "OUTBOUNDROUTES": "Ausgehende Routen",
-    "DESTINATIONPATTERN": "Ziel-Pattern",
+    "OUTBOUNDROUTES": "Abgehende Routen",
+    "DESTINATIONPATTERN": "Ziel Muster",
     "ADD_OUTBOUNDROUTE": "Ausgehende Route hinzufügen",
-    "EDIT_OUTBOUNDROUTE": "Ausgehende Route bearbeiten",
-    "DELETE_OUTBOUNDROUTE": "Ausgehende Route löschen",
-    "CUTDIGITS": "Ziffern",
-    "RECORDING": "Aufzeichnung",
+    "EDIT_OUTBOUNDROUTE": "Abgehende Route bearbeiten",
+    "DELETE_OUTBOUNDROUTE": "Abgehende Route löschen",
+    "CUTDIGITS": "Die Ziffern",
+    "RECORDING": "Aufnahme",
     "RECORDINGFORMAT": "Aufzeichnungsformat",
     "INTERNALROUTES": "Interne Routen",
-    "ADD_INTERNALROUTE": "Interne Route hinzufügen",
+    "ADD_INTERNALROUTE": "Fügen Sie interne Routen",
     "EDIT_INTERNALROUTE": "Interne Route bearbeiten",
-    "DELETE_INTERNALROUTE": "Interne Route löschen",
+    "DELETE_INTERNALROUTE": "Interne Routen löschen",
     "CONTEXTS": "Kontexte",
-    "ADD_CONTEXT": "Kontext hinzufügen",
+    "ADD_CONTEXT": "Rahmen hinzufügen",
     "EDIT_CONTEXT": "Kontext bearbeiten",
-    "DELETE_CONTEXT": "Kontext löschen",
-    "VOICEMAILS": "Voicemails",
-    "ADD_VOICEMAIL": "Voicemail hinzufügen",
-    "EDIT_VOICEMAIL": "Voicemail bearbeiten",
+    "DELETE_CONTEXT": "Löschen von Rahmen",
+    "VOICEMAILS": "Von Voicemails",
+    "ADD_VOICEMAIL": "Fügen Sie Voicemail",
+    "EDIT_VOICEMAIL": "Bearbeiten von Voicemail",
     "DELETE_VOICEMAIL": "Voicemail löschen",
-    "FULLNAME": "Vollständiger Name",
+    "FULLNAME": "Voller Name",
     "EMAIL": "E-Mail",
     "MAILBOX": "Mailbox",
     "PASSWORD": "Passwort",
     "CONFIRM_PASSWORD": "Passwort bestätigen",
     "TIMEZONE": "Zeitzone",
-    "ATTACH": "Anhängen",
+    "ATTACH": "Befestigen Sie",
     "ENVELOPE": "Umschlag",
     "DELETE": "Löschen",
     "EMAILBODY": "E-Mail-Text",
     "EMAILSUBJECT": "Betreff der E-Mail",
-    "MAXSECONDS": "Max. Sekunden",
+    "MAXSECONDS": "In Sekunden",
     "MAXMESSAGES": "Max. Nachrichten",
     "MESSAGES": "Nachrichten",
     "SORT": "Sortieren",
-    "ADD_MUSICONHOLD": "Wartemusik hinzufügen",
-    "MUSICONHOLDS": "Wartemusik",
-    "EDIT_MUSICONHOLD": "Wartemusik bearbeiten",
-    "DELETE_MUSICONHOLD": "Wartemusik löschen",
+    "ADD_MUSICONHOLD": "Hinzufügen von Musik auf Halten",
+    "MUSICONHOLDS": "Musik auf Halten",
+    "EDIT_MUSICONHOLD": "Bearbeiten Musik auf Halten",
+    "DELETE_MUSICONHOLD": "Löschen Sie Musik auf Halten",
     "DIRECTORY": "Verzeichnis",
     "AUDIOFILES": "Audiodateien",
-    "RECORDINGS": "Aufzeichnungen",
-    "CHANSPY": "Listen-In",
+    "RECORDINGS": "Aufnahmen",
+    "CHANSPY": "ChanSpy",
     "PREFIX": "Präfix",
     "OPTIONS": "Optionen",
-    "AUTH": "Authentifizierung",
-    "ADD_CHANSPY": "Listen-In hinzufügen",
-    "EDIT_CHANSPY": "Listen-In bearbeiten",
-    "DELETE_CHANSPY": "Listen-In löschen",
+    "AUTH": "Auth",
+    "ADD_CHANSPY": "Fügen Sie ChanSpy",
+    "EDIT_CHANSPY": "Bearbeiten Sie ChanSpy",
+    "DELETE_CHANSPY": "Löschen Sie ChanSpy",
     "AGENTS": "Agenten",
     "TELEPHONES": "Telefone",
     "QUEUES": "Warteschlangen",
-    "QUEUE_CALLS": "Anrufe in Warteschlange",
-    "QUEUE_PARAMETERS": "Warteschlangen Parameter",
+    "QUEUE_CALLS": "Anrufe aus einer Warteschlange",
+    "QUEUE_PARAMETERS": "Queue Parameter",
     "ABANDONED_CALLS": "Abgebrochene Anrufe",
     "OUTBOUND_CALLS": "Ausgehende Anrufe",
     "AGI": "AGI",
-    "DIAL": "Wählen",
+    "DIAL": "Kurzwahl",
     "CALLYSQUARE": "CallySquare",
-    "INTERNALDIAL": "Interner Anruf",
-    "EXTERNALDIAL": "Externer Anruf",
-    "RINGGROUP": "Rufgruppe",
+    "INTERNALDIAL": "Interne Wahl",
+    "EXTERNALDIAL": "Externes Wählen",
+    "RINGGROUP": "Ring-Gruppe",
     "PLAYBACK": "Wiedergabe",
     "QUEUE": "Warteschlange",
-    "SET": "Einstellen",
+    "SET": "Set",
     "VOICEMAIL": "Voicemail",
     "GOTO": "Gehe zu",
     "HANGUP": "Auflegen",
-    "CUSTOM": "Benutzerdefiniert",
+    "CUSTOM": "Benutzerdefinierte",
     "PROJECT": "Cally-Square Projekt",
     "TECHNOLOGY/RESOURCE": "Technologie-/Ressourcen",
     "URL": "URL",
-    "EDIT_APP": "App bearbeiten.",
+    "EDIT_APP": "Anwendung bearbeiten.",
     "EDIT_INTERVAL": "Intervall bearbeiten",
-    "DELETE_APP": "App löschen",
+    "DELETE_APP": "Anwendung löschen",
     "INTERVALS": "Intervalle",
     "USER": "Benutzer",
-    "TRUNK": "Trunk",
+    "TRUNK": "Amtsleitung",
     "PHONE": "Telefon",
     "AUDIO_FILES": "Audiodateien",
-    "ANNOUNCE_OVERRIDES": "Überschreibungen ankündigen",
+    "ANNOUNCE_OVERRIDES": "Überschreibt ankündigen",
     "MACRO": "Makro",
     "GOSUB": "GoSub",
     "RULE": "Regel",
     "ANSWER": "Antwort",
     "VALUE": "Wert",
     "MAILBOX@CONTEXT": "Mailbox@Kontext",
-    "EXTENSION": "Nebenstelle",
+    "EXTENSION": "Erweiterung",
     "PRIORITY": "Priorität",
-    "HANGUP_CAUSE": "Ablehnungsgrund",
-    "OUTBOUNDDIAL": "Extern wählen",
-    "CALLER_ID": "Anrufer-ID",
+    "HANGUP_CAUSE": "Ursache auflegen",
+    "OUTBOUNDDIAL": "Wählen Sie für abgehende Anrufe",
+    "CALLER_ID": "Die Anrufer-ID",
     "NO_MESSAGE_AVAILABLE": "Keine Meldungen vorhanden",
     "NO_SOUND_AVAILABLE": "Kein Ton verfügbar",
-    "VOICERECORDINGS": "Sprachaufzeichnungen",
-    "CHANSPIES": "Listen-Ins",
-    "VOICE": "Anrufe",
+    "VOICERECORDINGS": "Sprachaufnahmen",
+    "CHANSPIES": "Chan Spies",
+    "VOICE": "Voice",
     "REALTIME": "Echtzeit",
-    "ID": "ID",
+    "ID": "Id",
     "VOICEMAIL_CONTEXT": "Kontext",
     "NO_MOHSOUND_AVAILABLE": "Keine Wartemusik verfügbar",
     "FILE": "Datei",
-    "ADD_MOHSOUND": "Musik bei Halten hinzufügen",
-    "DOWNLOAD_MOHSOUND": "Musik bei Halten herunterladen",
-    "DELETE_MOHSOUND": "Musik bei Halten löschen",
+    "ADD_MOHSOUND": "Hinzufügen von Musik auf Halten sound",
+    "DOWNLOAD_MOHSOUND": "Download Music-on-Hold sound",
+    "DELETE_MOHSOUND": "Löschen Sie Music On Hold sound",
     "UNIQUEID": "Eindeutige ID",
     "AGENT": "Agent",
     "TYPE": "Typ",
     "RATING": "Bewertung",
     "AUDIO": "Audio",
     "DATE": "Datum",
-    "NEW_VOICEQUEUE": "Neue Anruf-Warteschlange",
-    "NEW_INBOUNDROUTE": "Neue eingehende Route",
-    "NEW_OUTBOUNDROUTE": "Neue ausgehende Route",
-    "NEW_INTERNALROUTE": "Neue interne Route",
-    "NEW_CONTEXT": "Neuer Kontext",
+    "NEW_VOICEQUEUE": "Neue Stimme der Warteschlange",
+    "NEW_INBOUNDROUTE": "Neue Route für eingehende Anrufe",
+    "NEW_OUTBOUNDROUTE": "Neue abgehende Route",
+    "NEW_INTERNALROUTE": "Neue interne Routen",
+    "NEW_CONTEXT": "Neue Kontext",
     "NEW_VOICEMAIL": "Neue Voicemail",
-    "NEW_MUSICONHOLD": "Neue Haltemusik",
-    "NEW_CHANSPY": "Neuer Listen-In",
-    "PENALTY": "Verzögerung",
-    "ADD_TEAM_TO_VOICEQUEUE": "Team zur Warteschlange hinzufügen",
-    "ADD_AGENT_TO_VOICEQUEUE": "Agenten zur Warteschlange hinzufügen",
-    "EDIT_DIAL": "Wählen anpassen",
+    "NEW_MUSICONHOLD": "Neue Musik auf Halten",
+    "NEW_CHANSPY": "Neue ChanSpy",
+    "PENALTY": "Strafe",
+    "ADD_TEAM_TO_VOICEQUEUE": "Team hinzufügen, Warteschlange",
+    "ADD_AGENT_TO_VOICEQUEUE": "Hinzufügen von Agenten der Warteschlange an die Mailbox",
+    "EDIT_DIAL": "Wählen Sie Bearbeiten.",
     "EDIT_AGI": "AGI bearbeiten",
-    "EDIT_INTERNALDIAL": "Internes Wählen bearbeiten",
-    "EDIT_EXTERNALDIAL": "Externes Wählen bearbeiten",
-    "EDIT_RINGGROUP": "Rufgruppe bearbeiten",
-    "EDIT_PLAYBACK": "Wiedergabe bearbeiten",
-    "EDIT_QUEUE": "Warteschlange bearbeiten",
-    "EDIT_SET": "Set bearbeiten",
-    "EDIT_GOTO": "Gehe zu bearbeiten",
-    "EDIT_HANGUP": "Auflegen bearbeiten",
-    "EDIT_CUSTOM": "Benutzerdef. Einstellungen bearbeiten",
+    "EDIT_INTERNALDIAL": "Interne Wahl bearbeiten.",
+    "EDIT_EXTERNALDIAL": "Wählen Sie Externen bearbeiten",
+    "EDIT_RINGGROUP": "Gruppe bearbeiten",
+    "EDIT_PLAYBACK": "Bearbeiten Sie die Wiedergabe",
+    "EDIT_QUEUE": "Bearbeiten von Warteschlangen",
+    "EDIT_SET": "Bearbeiten",
+    "EDIT_GOTO": "Gehe zu bearbeiten.",
+    "EDIT_HANGUP": "Bearbeiten Sie Auflegen",
+    "EDIT_CUSTOM": "Bearbeiten von benutzerdefinierten",
     "DURATION": "Dauer",
-    "RECEIVED_AT": "Eingegangen am",
+    "RECEIVED_AT": "Empfangen am",
     "YES": "Ja",
-    "NO": "Nein",
-    "HANGUPCAUSE_1": "1 = Nummer nicht zugewiesen",
-    "HANGUPCAUSE_16": "16 = Beenden durch Nutzer",
-    "HANGUPCAUSE_17": "17 = Besetzt",
-    "HANGUPCAUSE_18": "18 = Keine Antwort (Nebenstelle nicht verbunden)",
+    "NO": "Keine",
+    "HANGUPCAUSE_1": "1 = Nicht zugewiesene Nummer",
+    "HANGUPCAUSE_16": "16 = Normail Anruf löschen",
+    "HANGUPCAUSE_17": "17 = Benutzer besetzt",
+    "HANGUPCAUSE_18": "18 = Keine Reaktion (Telefon Gerät nicht verbunden)",
     "HANGUPCAUSE_21": "21 = Anruf abgelehnt",
-    "HANGUPCAUSE_22": "22 = Nummer geändert",
-    "HANGUPCAUSE_27": "27 = Ziel nicht verfügbar",
-    "HANGUPCAUSE_38": "38 = Netzwerk nicht verfügbar",
+    "HANGUPCAUSE_22": "22 = Anzahl geändert",
+    "HANGUPCAUSE_27": "27 = Ziel nicht in Ordnung",
+    "HANGUPCAUSE_38": "38 = Netzwerk aus, um",
     "HANGUPCAUSE_41": "41 = vorübergehende Störung",
-    "RANDOM": "Zufall",
+    "RANDOM": "Random",
     "ALPHABETICAL": "Alphabetisch",
     "NO_APPS_AVAILABLE": "Keine Anwendungen verfügbar",
-    "DOWNLOAD_VOICERECORDING": "Sprachaufzeichnung herunterladen",
-    "DELETE_VOICERECORDING": "Sprachaufzeichnung löschen",
-    "INTERNAL": "Intern",
+    "DOWNLOAD_VOICERECORDING": "Download Voice Recording",
+    "DELETE_VOICERECORDING": "Löschen von Voice Recording",
+    "INTERNAL": "Interne",
     "PHONE_STATE": "Telefonstatus",
     "PHONE_STATUS": "Telefonstatus",
     "TRUNK_STATUS": "Trunk Status",
     "REGISTERED": "Registriert",
-    "UNREGISTERED": "Nicht registriert",
+    "UNREGISTERED": "Unregistrierte",
     "LAGGED": "Zurück",
     "REACHABLE": "Erreichbar",
     "UNREACHABLE": "Nicht erreichbar",
     "UNKNOWN": "Unbekannt",
-    "NOT_INUSE": "Nicht in Verwendung",
-    "INUSE": "In Verwendung",
+    "NOT_INUSE": "Nicht in Gebrauch",
+    "INUSE": "Im Einsatz",
     "BUSY": "Besetzt",
     "INVALID": "Ungültig",
     "UNAVAILABLE": "Nicht verfügbar",
     "RINGING": "Klingeln",
-    "ONHOLD": "Halten",
-    "RING": "Klingeln",
-    "UP": "Nach Oben",
-    "INFO": "Information",
-    "TRUNKS": "Trunks",
+    "ONHOLD": "Auf Halten",
+    "RING": "Ring",
+    "UP": "Bis",
+    "INFO": "Info",
+    "TRUNKS": "Amtsleitungen",
     "REGISTRY": "Registrierung",
-    "NO_REGISTRY": "Keine Registrierung",
+    "NO_REGISTRY": "Keine registry",
     "LOGGED_IN": "Angemeldet",
     "PAUSED": "Angehalten",
-    "WAITING": "Wartezustand",
-    "TALKING": "Im Gespräch",
-    "DID": "DID",
+    "WAITING": "Warten",
+    "TALKING": "Sprechen",
+    "DID": "Haben",
     "CALLER": "Anrufer",
-    "TOTAL": "Gesamt",
+    "TOTAL": "Insgesamt",
     "ANSWERED": "Beantwortet",
     "ABANDONED": "Abgebrochen",
-    "UNMANAGED": "Nicht bearbeitet",
-    "AVG_HOLD_TIME": "Durchschnittliche Wartezeit",
-    "AVG_DURATION": "Durchschnittliche Dauer",
-    "AVG_BILLABLE": "Durchschnittliche abrechenbare Zeit",
-    "SOURCE": "Ursprung",
+    "UNMANAGED": "Nicht verwaltete",
+    "AVG_HOLD_TIME": "Durchschnittl. Warteschleifenzeit",
+    "AVG_DURATION": "Av-Dauer",
+    "AVG_BILLABLE": "Avg Fakturierbaren",
+    "SOURCE": "Quelle",
     "DESTINATION": "Ziel",
     "REJECTED": "Abgelehnt",
     "FAILED": "Fehlgeschlagen",
-    "CALLED": "Angerufen",
+    "CALLED": "Aufgerufen",
     "CONNECTED": "Verbunden",
     "NO_RATING": "Keine Bewertung",
-    "EDIT_VOICERECORDING": "Sprachaufzeichnungen verwalten",
+    "EDIT_VOICERECORDING": "Edit Voice Recording",
     "APPLICATION_NAME": "Name der Anwendung",
     "ARGUMENTS": "Argumente",
-    "NO_AVAILABLE_INFO": "Keine Informationen verfügbar",
-    "ADD_AGENT_TO_QUEUE": "Agenten zur Warteschlange hinzufügen",
-    "DEFAULT_PAUSE": "Standard Pause",
+    "NO_AVAILABLE_INFO": "Keine verfügbaren Info",
+    "ADD_AGENT_TO_QUEUE": "Agent zur Warteschlange hinzufügen",
+    "DEFAULT_PAUSE": "Standard PAUSE",
     "PAUSE": "Pause",
-    "UNPAUSE": "Fortsetzen",
-    "REDIRECT_TO_NUMBER": "Weiterleiten an Nummer",
-    "REDIRECT_TO_AGENT": "Weiterleiten an Agenten",
-    "AGENTADD_VOICEQUEUE": "Agenten zu Anruf-Warteschlange hinzufügen",
+    "UNPAUSE": "Pause",
+    "REDIRECT_TO_NUMBER": "Umleiten zu: Anzahl",
+    "REDIRECT_TO_AGENT": "Umleiten zu: Agent",
+    "AGENTADD_VOICEQUEUE": "Hinzufügen von Agenten der Warteschlange an die Mailbox",
     "APPLICATION": "Anwendung",
     "FILES": "Dateien",
     "FORMAT": "Format",
     "MODE": "Modus",
     "RECORD": "Datensatz",
-    "TEAMADD_VOICEQUEUE": "Team zur Anruf-Warteschlange hinzufügen",
-    "NEW_MOHSOUND": "Neue Wartemusik",
-    "DOWNLOAD_MESSAGE": "Herunterladen",
+    "TEAMADD_VOICEQUEUE": "Hinzufügen Team voicequeue",
+    "NEW_MOHSOUND": "Neue Musik auf Halten",
+    "DOWNLOAD_MESSAGE": "Download",
     "DELETE_MESSAGE": "Löschen",
     "QUEUE_PARAMS": "Queue Parameter",
-    "TOTAL_OFFERED": "Gesamt",
+    "TOTAL_OFFERED": "Insgesamt",
     "READY": "Bereit",
-    "AGENTADD_QUEUE": "Agenten zur Warteschlange hinzufügen",
-    "AGENTSADD_QUEUE": "Agenten zur Warteschlangen hinzufügen",
-    "ALL_TEAMS": "Alle Teams",
+    "AGENTADD_QUEUE": "Agent hinzufügen Warteschlangen zu Voice",
+    "AGENTSADD_QUEUE": "Hinzufügen von Agenten der Warteschlange an die Mailbox",
+    "ALL_TEAMS": "Alle Mannschaften",
     "SELECTED_TEAMS": "Ausgewählte Teams",
     "ALL_AGENTS": "Alle Agenten",
     "SELECTED_AGENTS": "Ausgewählte Agenten",
     "CLOSING": "Schließen",
     "TAGS": "Tags",
     "WAITING_FOR_AGENT": "Warten auf Agenten",
-    "EDIT_OUTBOUNDDIAL": "Wählverhalten ausgehend bearbeiten",
-    "ACCOUNTNAME": "Kontoname",
+    "EDIT_OUTBOUNDDIAL": "Bearbeiten ausgehenden DFÜ",
+    "ACCOUNTNAME": "Konto Name",
     "PAGE": "Seite",
     "ROWSPERPAGE": "Zeilen pro Seite",
-    "OF": "von",
-    "DISPOSITION": "Qualifizierung",
+    "OF": "Von",
+    "DISPOSITION": "Disposition",
     "WAITING_FOR_AGENTS": "Warten auf Agenten",
     "CHAT": "Chat",
     "MAIL": "E-Mail",
     "OPENCHANNEL": "Offener Kanal",
     "FAX": "Fax",
     "NO_AGENT_ONLINE": "Kein Agent Online",
-    "PARTIALPAUSE": "Teilpause",
+    "PARTIALPAUSE": "Teilweise Pause",
     "STATUS": "Status",
     "TIMER": "Timer",
     "ALL": "Alle",
     "IDLE": "Leerlauf",
-    "EDIT_TRUNK": "Trunk bearbeiten",
+    "EDIT_TRUNK": "Bearbeiten Trunk",
     "ACTIVE": "Aktiv",
-    "CLEAR": "Leeren",
+    "CLEAR": "klar",
     "CALLS": "Anrufe",
-    "STARTEDAT": "Startdatum",
-    "ENDEDAT": "Enddatum",
-    "TAG": "Tag",
-    "DETAILS": "Details",
+    "STARTEDAT": "Fing an bei",
+    "ENDEDAT": "Beendet bei",
+    "TAG": "Etikett",
+    "DETAILS": "Einzelheiten",
     "BILLABLESECONDS": "Abrechenbare Sekunden",
-    "ANSWEREDAT": "Beantwortet am",
-    "NOTE": "Notiz",
+    "ANSWEREDAT": "Beantwortet bei",
+    "NOTE": "Hinweis",
     "CLOSE": "Schließen",
-    "SELECT_DATE": "Startdatum auswählen",
-    "SELECT_TYPE": "Typ auswählen",
-    "ABANDONEDCALLS": "Abgebrochene Anrufe",
+    "SELECT_DATE": "Wählen Sie Startdatum",
+    "SELECT_TYPE": "Art auswählen",
+    "ABANDONEDCALLS": "Verlassene Warteschlangenanrufe",
     "ADD_VOICEPREFIX": "Präfix hinzufügen",
-    "AGENTADD_VOICEPREFIX": "Agentenpräfix hinzufügen",
+    "AGENTADD_VOICEPREFIX": "Fügen Sie Agent zu Präfix hinzu",
     "DELETE_VOICEPREFIX": "Präfix löschen",
     "EDIT_VOICEPREFIX": "Präfix bearbeiten",
     "NEW_VOICEPREFIX": "Neues Präfix",
-    "VOICEPREFIXES": "Präfixe für Sprachanrufe",
+    "VOICEPREFIXES": "Vorgegebene Präfixe",
     "CALLERIDALL": "Anruferidentifikation",
     "OUTBOUNDROUTE": "Ausgehende Route",
-    "LOGIN_TIME": "Zeit angemeldet",
-    "PAUSE_TIME": "Zeit in Pause",
+    "LOGIN_TIME": "Login-Zeit",
+    "PAUSE_TIME": "Pausenzeit",
     "DIALER": "Dialer",
-    "INBOUND": "Eingehend",
+    "INBOUND": "Eingehende",
     "OUTBOUND": "Ausgehend",
-    "MANDATORYDISPOSITION": "Qualifikation erforderlich",
-    "MANDATORYDISPOSITIONPAUSEID": "PausenID bei erforderlicher Qualifizierung",
-    "TEAMS_ASSOCIATION": "Teamzuweisung",
+    "MANDATORYDISPOSITION": "Zwingende Disposition",
+    "MANDATORYDISPOSITIONPAUSEID": "Status der obligatorischen Dispositionspause",
+    "TEAMS_ASSOCIATION": "Vereinigung der Mannschaften",
     "CANT_DOWNLOAD_THIS_FILE": "Diese Datei kann nicht heruntergeladen werden",
     "FILE_NOT_FOUND": "Datei nicht gefunden",
     "SCREENRECORDING": "Bildschirmaufzeichnung verwalten",
-    "START_SCREENRECORDING": "Bildschirmaufzeichnung starten",
-    "STOP_SCREENRECORDING": "Bildschirmaufzeichnung beenden",
-    "TOOLTIP_SCREENRECORDING_OFF": "Bildschirmaufzeichnung verfügbar",
-    "TOOLTIP_SCREENRECORDING_ON": "Bildschirmaufzeichnung läuft",
-    "WRONG_EXTENSION": "Ungültige Dateiendung",
+    "START_SCREENRECORDING": "Starten Sie die Bildschirmaufnahme",
+    "STOP_SCREENRECORDING": "Beenden Sie die Bildschirmaufnahme",
+    "TOOLTIP_SCREENRECORDING_OFF": "Bildschirmaufnahme verfügbar",
+    "TOOLTIP_SCREENRECORDING_ON": "Bildschirmaufnahme läuft",
+    "WRONG_EXTENSION": "Die Datei weist die falsche Erweiterung auf",
     "DOWNLOADTRANSCRIBE_VOICERECORDING": "Transkript herunterladen",
     "FAILUREREASON": "Fehlergrund",
-    "RUNSENTIMENT_VOICERECORDING": "Starten Sprachaufzeichnung inkl. Sentiment",
-    "RUNTRANSCRIBESENTIMENT_VOICERECORDING": "Transkription und Sentinemtaufzeichnung starten",
-    "RUNTRANSCRIBE_VOICERECORDING": "Transkription starten",
-    "SENTIMENT": "Sentiment",
-    "SENTIMENTANALYSIS": "Sentiment-Analyse",
+    "RUNSENTIMENT_VOICERECORDING": "Führen Sie Sentiment",
+    "RUNTRANSCRIBESENTIMENT_VOICERECORDING": "Führen Sie Transcribe & Sentiment aus",
+    "RUNTRANSCRIBE_VOICERECORDING": "Führen Sie Transcribe aus",
+    "SENTIMENT": "Gefühl",
+    "SENTIMENTANALYSIS": "Stimmungsanalyse",
     "SENTIMENT_MIXED": "Gemischt",
     "SENTIMENT_NEGATIVE": "Negativ",
     "SENTIMENT_NEUTRAL": "Neutral",
     "SENTIMENT_POSITIVE": "Positiv",
     "TEXT": "Text",
     "TRANSCRIBE": "Transkribieren",
-    "TRANSCRIBESTATUS_COMPLETED": "Transkription abgeschlossen",
-    "TRANSCRIBESTATUS_FAILED": "Transkription fehlgeschlagen",
+    "TRANSCRIBESTATUS_COMPLETED": "Abgeschlossen",
+    "TRANSCRIBESTATUS_FAILED": "Gescheitert",
     "TRANSCRIBESTATUS_IN_PROGRESS": "In Bearbeitung",
     "TRANSCRIBESTATUS_NEW": "Neu",
     "TRANSCRIPT": "Transkript",
     "TRANSCRIPTANALYSIS": "Transkript & Analyse",
     "SERVICELEVEL": "Service Level",
-    "SECOND_LEVEL_DISPOSITION": "Qualifizierung der zweiten Ebene",
-    "THIRD_LEVEL_DISPOSITION": "Qualifizierung der dritten Ebene",
-    "TEAMADD_VOICEPREFIX": "Team zum Präfix hinzufügen",
+    "SECOND_LEVEL_DISPOSITION": "Disposition der zweiten Ebene",
+    "THIRD_LEVEL_DISPOSITION": "Disposition der dritten Ebene",
     "ALIAS": "Alias"
   }
 }
index a06798a..0e070f7 100644 (file)
     "ADD_VOICEPREFIX": "Add Prefix",
     "EDIT_VOICEPREFIX": "Edit Prefix",
     "AGENTADD_VOICEPREFIX": "Add Agent to Prefix",
-    "TEAMADD_VOICEPREFIX": "Add Team to Prefix",
     "DELETE_VOICEPREFIX": "Delete Prefix",
     "OUTBOUNDROUTE": "Outbound Route",
     "CALLERIDALL": "Caller Id",
index b29a2d3..90b1016 100644 (file)
     "SERVICELEVEL": "Nivel de servicio",
     "SECOND_LEVEL_DISPOSITION": "Tipificación de segundo nivel",
     "THIRD_LEVEL_DISPOSITION": "Tipificación de tercer nivel",
-    "TEAMADD_VOICEPREFIX": "Agregar equipo al prefijo",
     "ALIAS": "Alias"
   }
 }
index b52a7e9..bd75c5e 100644 (file)
     "SERVICELEVEL": "Teenuse tase",
     "SECOND_LEVEL_DISPOSITION": "Teise taseme korraldus",
     "THIRD_LEVEL_DISPOSITION": "Kolmanda taseme korraldus",
-    "TEAMADD_VOICEPREFIX": "Lisa meeskond eesliidesse",
     "ALIAS": "Teise nimega"
   }
 }
index 4c8f69b..64fd7ba 100644 (file)
     "SERVICELEVEL": "سطح سرویس",
     "SECOND_LEVEL_DISPOSITION": "دفع سطح دوم",
     "THIRD_LEVEL_DISPOSITION": "دفع سطح سوم",
-    "TEAMADD_VOICEPREFIX": "اضافه کردن تیم به پیشوند",
     "ALIAS": "نام مستعار"
   }
 }
index 664bc29..f1874d1 100644 (file)
     "SERVICELEVEL": "Palvelutaso",
     "SECOND_LEVEL_DISPOSITION": "Toisen tason sijoitus",
     "THIRD_LEVEL_DISPOSITION": "Kolmannen tason sijoitus",
-    "TEAMADD_VOICEPREFIX": "Lisää joukkue etuliitteeseen",
     "ALIAS": "Alias"
   }
 }
index 51099a3..ca6418d 100644 (file)
     "SERVICELEVEL": "Niveau de service",
     "SECOND_LEVEL_DISPOSITION": "Disposition de deuxième niveau",
     "THIRD_LEVEL_DISPOSITION": "Disposition de troisième niveau",
-    "TEAMADD_VOICEPREFIX": "Ajouter une équipe au préfixe",
     "ALIAS": "Alias"
   }
 }
index 61c740b..2da30a3 100644 (file)
     "SERVICELEVEL": "רמת שירות",
     "SECOND_LEVEL_DISPOSITION": "נטייה בדרגה שנייה",
     "THIRD_LEVEL_DISPOSITION": "נטייה ברמה השלישית",
-    "TEAMADD_VOICEPREFIX": "הוסף צוות לקידומת",
     "ALIAS": "כינוי"
   }
 }
index 905e9aa..2fbd46a 100644 (file)
     "SERVICELEVEL": "सेवा का स्तर",
     "SECOND_LEVEL_DISPOSITION": "दूसरा स्तर विवाद",
     "THIRD_LEVEL_DISPOSITION": "तीसरे स्तर का विवाद",
-    "TEAMADD_VOICEPREFIX": "उपसर्ग में टीम जोड़ें",
     "ALIAS": "उपनाम"
   }
 }
index eef7ebe..1fecba7 100644 (file)
     "SERVICELEVEL": "Tingkat layanan",
     "SECOND_LEVEL_DISPOSITION": "Disposisi Tingkat Kedua",
     "THIRD_LEVEL_DISPOSITION": "Disposisi Tingkat Ketiga",
-    "TEAMADD_VOICEPREFIX": "Tambahkan Tim ke Awalan",
     "ALIAS": "Alias"
   }
 }
index 527d7c5..3b739d4 100644 (file)
     "ADD_VOICEPREFIX": "Aggiungi Prefisso",
     "EDIT_VOICEPREFIX": "Modifica Prefisso",
     "AGENTADD_VOICEPREFIX": "Aggiungi Agente al Prefisso",
-    "TEAMADD_VOICEPREFIX": "Aggiungi Team al Prefisso",
     "DELETE_VOICEPREFIX": "Elimina Prefisso",
     "OUTBOUNDROUTE": "Rotta Outbound",
     "CALLERIDALL": "Numero Chiamante",
index d2accf3..c7d5d57 100644 (file)
     "SERVICELEVEL": "サービスレベル",
     "SECOND_LEVEL_DISPOSITION": "第2レベルの気質",
     "THIRD_LEVEL_DISPOSITION": "第3レベルの気質",
-    "TEAMADD_VOICEPREFIX": "プレフィックスにチームを追加",
     "ALIAS": "エイリアス"
   }
 }
index 9e4a917..bc9ce6e 100644 (file)
     "SERVICELEVEL": "서비스 수준",
     "SECOND_LEVEL_DISPOSITION": "두 번째 수준 처리",
     "THIRD_LEVEL_DISPOSITION": "3 단계 처리",
-    "TEAMADD_VOICEPREFIX": "접두사에 팀 추가",
     "ALIAS": "별명"
   }
 }
index 65172e6..1a07f3d 100644 (file)
     "SERVICELEVEL": "Aptarnavimo lygis",
     "SECOND_LEVEL_DISPOSITION": "Antro lygio disponavimas",
     "THIRD_LEVEL_DISPOSITION": "Trečiojo lygio disponavimas",
-    "TEAMADD_VOICEPREFIX": "Pridėti komandą prie priešdėlio",
     "ALIAS": "Pseudonimas"
   }
 }
index 499925d..3e683d8 100644 (file)
     "SERVICELEVEL": "Pakalpojuma līmenis",
     "SECOND_LEVEL_DISPOSITION": "Otrā līmeņa izvietojums",
     "THIRD_LEVEL_DISPOSITION": "Trešā līmeņa izvietojums",
-    "TEAMADD_VOICEPREFIX": "Pievienot komandu prefiksam",
     "ALIAS": "Pseidonīms"
   }
 }
index a1ad47d..103a753 100644 (file)
     "SERVICELEVEL": "Service Level",
     "SECOND_LEVEL_DISPOSITION": "Tweede niveau dispositie",
     "THIRD_LEVEL_DISPOSITION": "Dispositie op het derde niveau",
-    "TEAMADD_VOICEPREFIX": "Team toevoegen aan voorvoegsel",
     "ALIAS": "Alias"
   }
 }
index f979e88..729522a 100644 (file)
     "SERVICELEVEL": "Service nivå",
     "SECOND_LEVEL_DISPOSITION": "Andre nivå disposisjon",
     "THIRD_LEVEL_DISPOSITION": "Tredje nivå disposisjon",
-    "TEAMADD_VOICEPREFIX": "Legg Team til prefiks",
     "ALIAS": "Alias"
   }
 }
index 9974a58..3988cbe 100644 (file)
     "SERVICELEVEL": "Poziom usług",
     "SECOND_LEVEL_DISPOSITION": "Dyspozycja drugiego poziomu",
     "THIRD_LEVEL_DISPOSITION": "Dyspozycja trzeciego poziomu",
-    "TEAMADD_VOICEPREFIX": "Dodaj drużynę do prefiksu",
     "ALIAS": "Alias"
   }
 }
index 95abd15..5113530 100644 (file)
     "SERVICELEVEL": "Nível de serviço",
     "SECOND_LEVEL_DISPOSITION": "Disposição de Segundo Nível",
     "THIRD_LEVEL_DISPOSITION": "Disposição de terceiro nível",
-    "TEAMADD_VOICEPREFIX": "Adicionar equipe ao prefixo",
     "ALIAS": "Pseudônimo"
   }
 }
index 3c55740..a46bf2f 100644 (file)
     "SERVICELEVEL": "Nível de serviço",
     "SECOND_LEVEL_DISPOSITION": "Disposição de Segundo Nível",
     "THIRD_LEVEL_DISPOSITION": "Disposição de terceiro nível",
-    "TEAMADD_VOICEPREFIX": "Adicionar equipe ao prefixo",
     "ALIAS": "Pseudônimo"
   }
 }
index 022d0b1..672f53d 100644 (file)
     "SERVICELEVEL": "Уровень обслуживания",
     "SECOND_LEVEL_DISPOSITION": "Расположение второго уровня",
     "THIRD_LEVEL_DISPOSITION": "Расположение третьего уровня",
-    "TEAMADD_VOICEPREFIX": "Добавить команду к префиксу",
     "ALIAS": "Псевдоним"
   }
 }
index 6a741b4..83c6c54 100644 (file)
     "SERVICELEVEL": "Servicenivå",
     "SECOND_LEVEL_DISPOSITION": "Andra nivån disposition",
     "THIRD_LEVEL_DISPOSITION": "Tredje nivåens disposition",
-    "TEAMADD_VOICEPREFIX": "Lägg till Team i prefixet",
     "ALIAS": "Alias"
   }
 }
index 51a4ca4..6dd9d26 100644 (file)
     "SERVICELEVEL": "Servis seviyesi",
     "SECOND_LEVEL_DISPOSITION": "İkinci Düzey Tasarruf",
     "THIRD_LEVEL_DISPOSITION": "Üçüncü Düzey Tasarruf",
-    "TEAMADD_VOICEPREFIX": "Önek'e Takım Ekle",
     "ALIAS": "takma ad"
   }
 }
index 3abaa1b..2415dcc 100644 (file)
     "SERVICELEVEL": "服务等级",
     "SECOND_LEVEL_DISPOSITION": "二级处置",
     "THIRD_LEVEL_DISPOSITION": "第三级处置",
-    "TEAMADD_VOICEPREFIX": "将团队添加到前缀",
     "ALIAS": "别名"
   }
 }
index c78fea9..294b15a 100644 (file)
     "SERVICELEVEL": "服務等級",
     "SECOND_LEVEL_DISPOSITION": "二級處置",
     "THIRD_LEVEL_DISPOSITION": "第三級處置",
-    "TEAMADD_VOICEPREFIX": "將團隊添加到前綴",
     "ALIAS": "別名"
   }
 }
index 6f42238..03bcbeb 100644 (file)
     "LASTMESSAGE": "اخر رسالة",
     "LEXREGION": "منطقة",
     "LIST": "قائمة",
-    "LOGGED_IN": "تم تسجيل الدخول",
+    "LOGGED_IN": "تم تسجيل الدخول (SIP متصل)",
     "LOGIN_TIME": "وقت تسجيل الدخول",
     "LOGOUT": "تسجيل خروج",
     "MANDATORYDISPOSITION": "الترتيب الإلزامي",
index e361766..07beea8 100644 (file)
     "LASTMESSAGE": "Poslední zpráva",
     "LEXREGION": "Kraj",
     "LIST": "Seznam",
-    "LOGGED_IN": "Přihlášen",
+    "LOGGED_IN": "Přihlášen (připojeno SIP)",
     "LOGIN_TIME": "Čas přihlášení",
     "LOGOUT": "Odhlásit se",
     "MANDATORYDISPOSITION": "Povinná dispozice",
index 00e305d..67fc111 100644 (file)
     "LASTMESSAGE": "Sidste meddelelse",
     "LEXREGION": "Område",
     "LIST": "Liste",
-    "LOGGED_IN": "Logget ind",
+    "LOGGED_IN": "Logget ind (SIP tilsluttet)",
     "LOGIN_TIME": "Login tid",
     "LOGOUT": "Log ud",
     "MANDATORYDISPOSITION": "Obligatorisk disposition",
index f01cf37..80b51fd 100644 (file)
@@ -3,8 +3,8 @@
     "ERRORS": {
       "ACCESSKEYID_REQUIRED": "Pflichtfeld",
       "ACCOUNTSID_REQUIRED": "Pflichtfeld",
-      "AGENTTRANSFERTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Wert muss größer oder gleich sein als",
-      "AGENTTRANSFERTIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Wert muss kleiner oder gleich sein als",
+      "AGENTTRANSFERTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Der Wert muss größer oder gleich sein als",
+      "AGENTTRANSFERTIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Der Wert muss kleiner oder gleich sein",
       "AGENTTRANSFERTIMEOUT_REQUIRED": "Pflichtfeld",
       "AGENT_REQUIRED": "Pflichtfeld",
       "AGENT_TIMEOUT_REQUIRED": "Pflichtfeld",
@@ -14,9 +14,9 @@
       "CONDITION_REQUIRED": "Pflichtfeld",
       "DESCRIPTION_REQUIRED": "Pflichtfeld",
       "DISPOSITION_REQUIRED": "Pflichtfeld",
-      "FALSEPRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Wert muss größer oder gleich sein als",
+      "FALSEPRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Der Wert muss größer oder gleich sein als",
       "FALSEPRIORITY_REQUIRED": "Pflichtfeld",
-      "KEY_MAX_LENGTH": "Wert darf eine maximale Länge haben von {{max}} ",
+      "KEY_MAX_LENGTH": "Der Wert muss eine maximale Länge von {{max}} haben",
       "KEY_REQUIRED": "Pflichtfeld",
       "LANGUAGE_REQUIRED": "Pflichtfeld",
       "LEXREGION_REQUIRED": "Pflichtfeld",
       "MANDATORYDISPOSITIONPAUSEID_REQUIRED": "Pflichtfeld",
       "NAME_REQUIRED": "Pflichtfeld",
       "PHONE_REQUIRED": "Pflichtfeld",
-      "PRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Wert muss größer oder gleich sein als",
+      "PRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Der Wert muss größer oder gleich sein als",
       "PRIORITY_REQUIRED": "Pflichtfeld",
-      "QUEUETRANSFERTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Wert muss größer oder gleich sein als",
-      "QUEUETRANSFERTIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Wert muss kleiner oder gleich sein als",
+      "QUEUETRANSFERTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Der Wert muss größer oder gleich sein als",
+      "QUEUETRANSFERTIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Der Wert muss kleiner oder gleich sein",
       "QUEUETRANSFERTIMEOUT_REQUIRED": "Pflichtfeld",
       "QUEUE_REQUIRED": "Pflichtfeld",
       "SECRETACCESSKEY_REQUIRED": "Pflichtfeld",
       "TAG_REQUIRED": "Pflichtfeld",
       "TEXT_REQUIRED": "Pflichtfeld",
-      "TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Wert muss größer oder gleich sein als",
-      "TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Wert muss kleiner oder gleich sein als",
+      "TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Der Wert muss größer oder gleich sein als",
+      "TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Der Wert muss kleiner oder gleich sein",
       "TIMEOUT_REQUIRED": "Pflichtfeld",
       "TIMES_REQUIRED": "Pflichtfeld",
       "TOKEN_REQUIRED": "Pflichtfeld",
-      "TRUEPRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Wert muss größer oder gleich sein als",
+      "TRUEPRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Der Wert muss größer oder gleich sein als",
       "TRUEPRIORITY_REQUIRED": "Pflichtfeld",
       "TYPE_REQUIRED": "Pflichtfeld",
       "VALUE_REQUIRED": "Pflichtfeld",
       "VARIABLE_REQUIRED": "Pflichtfeld",
-      "WAITFORTHEASSIGNEDAGENT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Wert muss größer oder gleich sein als",
-      "WAITFORTHEASSIGNEDAGENT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Wert muss kleiner oder gleich sein als",
+      "WAITFORTHEASSIGNEDAGENT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Der Wert muss größer oder gleich sein als",
+      "WAITFORTHEASSIGNEDAGENT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Der Wert muss kleiner oder gleich sein",
       "WAITFORTHEASSIGNEDAGENT_REQUIRED": "Pflichtfeld",
-      "WELCOMEMESSAGE_MAX_LENGTH": "Wert darf eine maximale Länge haben von {{max}} ",
+      "WELCOMEMESSAGE_MAX_LENGTH": "Der Wert muss eine maximale Länge von {{max}} haben",
       "WELCOMEMESSAGE_REQUIRED": "Pflichtfeld",
       "CLIENTEMAIL_REQUIRED": "Pflichtfeld",
       "PRIVATEKEY_REQUIRED": "Pflichtfeld",
       "PROJECTID_REQUIRED": "Pflichtfeld"
     },
     "HELP": {
-      "LIST": "Liste für die Zuordnung von Kontakten",
-      "MANDATORYDISPOSITION": "Qualifizierung erforderlich",
-      "MANDATORYDISPOSITIONPAUSEID": "PausenID bei erforderlicher Qualifizierung",
+      "LIST": "Kontaktmanagerliste zum Zuordnen von Kontakten",
+      "MANDATORYDISPOSITION": "Obligatorische Disposition",
+      "MANDATORYDISPOSITIONPAUSEID": "Pause, um zu verwenden, wenn die obligatorische Disposition aktiviert ist",
       "MOTIONPROXY": "Das Feld muss das folgende Format haben: <Protokoll>: // <IP-Adresse> [: <Port>]. Beispiel: https: //X.Y.Z.W",
       "NAME": "Es werden nur Zahlen, Buchstaben und bestimmte Zeichen (._) unterstützt",
       "RECEIVEURL": "Dies ist die automatisch generierte API-Zeichenfolge, die Sie zum Empfangen der Nachrichten in Ihrem Konto von Ihrem WhatsApp Connector-Anbieter verwenden müssen (POST-Methode muss verwendet werden): Klicken Sie auf die Schaltfläche in der Zwischenablage, um sie zu kopieren",
-      "WELCOMEMESSAGE": "Dies ist die erste Antwortnachricht, welche bei einer neuen Interaktion gesendet wird"
+      "WELCOMEMESSAGE": "Dies ist die erste Antwortnachricht, die an neue Interaktionen gesendet wird"
     },
     "ACCESSKEYID": "Zugriffsschlüssel-ID",
-    "ACCOUNTSID": "Konto-ID",
+    "ACCOUNTSID": "Konto-SID",
     "ACTIONS": "Aktionen",
     "ADD_NOTE": "Notiz hinzufügen",
-    "ADD_WHATSAPPACCOUNT": "Whatsapp Konto konzufügen",
-    "ADD_WHATSAPPCANNEDANSWER": "Textvorlage hinzufügen",
-    "ADD_WHATSAPPDISPOSITION": "Whatsapp-Qualifizierung hinzufügen",
+    "ADD_WHATSAPPACCOUNT": "Hinzufügen",
+    "ADD_WHATSAPPCANNEDANSWER": "Vordefinierte Antwort hinzufügen",
+    "ADD_WHATSAPPDISPOSITION": "WhatsApp Disposition hinzufügen",
     "ADD_WHATSAPPQUEUE": "WhatsApp-Warteschlange hinzufügen",
-    "ADVANCED": "Erweitert",
+    "ADVANCED": "Fortgeschrittene",
     "AGENT": "Agent",
-    "AGENTADD_QUEUE": "Agenten zur Warteschlange hinzufügen",
-    "AGENTADD_WHATSAPPACCOUNT": "Agenten zum WhatsApp-Konto hinzufügen",
-    "AGENTADD_WHATSAPPQUEUE": "Agenten zur WhatsApp-Warteschlange hinzufügen",
+    "AGENTADD_QUEUE": "Agent zur WhatsApp-Warteschlange hinzufügen",
+    "AGENTADD_WHATSAPPACCOUNT": "Agent zum WhatsApp-Konto hinzufügen",
+    "AGENTADD_WHATSAPPQUEUE": "Agent zur WhatsApp-Warteschlange hinzufügen",
     "AGENTS": "Agenten",
-    "AGENTSADD_QUEUE": "Agenten zur Warteschlange hinzufügen",
-    "AGENTTRANSFER": "Transfer Agent",
-    "AGENTTRANSFERTIMEOUT": "Timeout Agententransfer",
-    "AGENT_TIMEOUT": "Timeout Agent",
+    "AGENTSADD_QUEUE": "Hinzufügen von Agenten zur WhatsApp-Warteschlange",
+    "AGENTTRANSFER": "Agententransfer",
+    "AGENTTRANSFERTIMEOUT": "Zeitüberschreitung bei der Agentenübertragung",
+    "AGENT_TIMEOUT": "Agent Timeout",
     "ALL": "Alles",
     "ALL_AGENTS": "Alle Agenten",
     "ALL_TEAMS": "Alle Teams",
     "AUTHTOKEN": "Auth Token",
     "AUTOREPLY": "Automatische Antwort",
     "BACK": "Zurück",
-    "BOTNAME": "Botname",
+    "BOTNAME": "Bot Name",
     "BUSY": "Beschäftigt",
-    "CANNEDANSWERS": "Textvorlagen",
-    "CANNED_ANSWER_NOT_FOUND": "Keine Textvorlagen gefunden",
-    "CANNED_ANSWER_SEARCH": "Suchen nach Textvorlagen",
+    "CANNEDANSWERS": "Vordefinierte Antworten",
+    "CANNED_ANSWER_NOT_FOUND": "Es wurden keine vordefinierten Antworten gefunden",
+    "CANNED_ANSWER_SEARCH": "Geben Sie einen Text ein, um eine vordefinierte Antwort zu suchen",
     "CAPACITY": "Kapazität",
     "CLOSE": "Schließen",
     "CLOSED": "Geschlossen",
     "CLOSEMETHOD": "Methode schließen",
     "CLOSEURL": "URL schließen",
-    "COMMAND": "Eingabe",
+    "COMMAND": "Befehl",
     "CONDITION": "Bedingung",
     "CONTACT": "Kontakt",
-    "CREATED_AT": "Erstellt am",
-    "DEFAULT_PAUSE": "Standard Pause",
+    "CREATED_AT": "Hergestellt in",
+    "DEFAULT_PAUSE": "STANDARD PAUSE",
     "DELETE": "Löschen",
     "DELETE_INTERACTION": "Interaktion löschen",
     "DELETE_SELECTED": "Ausgewählte löschen",
     "DELETE_WHATSAPPACCOUNT": "WhatsApp-Konto löschen",
-    "DELETE_WHATSAPPCANNEDANSWER": "Textvorlage löschen",
-    "DELETE_WHATSAPPDISPOSITION": "Qualifizierung löschen",
+    "DELETE_WHATSAPPCANNEDANSWER": "Vordefinierte Antwort löschen",
+    "DELETE_WHATSAPPDISPOSITION": "WhatsApp-Disposition löschen",
     "DELETE_WHATSAPPQUEUE": "WhatsApp-Warteschlange löschen",
     "DESCRIPTION": "Beschreibung",
     "DIALOGFLOW": "DialogFlow",
-    "DISPOSITION": "Qualifizierung",
-    "DISPOSITIONS": "Qualifizierungen",
-    "DOWNLOAD_INTERACTION": "Interaktion herunterladen",
-    "DOWNLOAD_WITHOUT_ATTACHMENTS": "Herunterladen ohne Anhänge",
-    "DOWNLOAD_WITH_ATTACHMENTS": "Herunterladen inkl. Anhänge",
-    "EDIT_AGENT": "Agenten bearbeiten",
-    "EDIT_AMAZONLEX": "Lex-Konfiguration bearbeiten",
+    "DISPOSITION": "Anordnung",
+    "DISPOSITIONS": "Dispositionen",
+    "DOWNLOAD_INTERACTION": "Herunterladen",
+    "DOWNLOAD_WITHOUT_ATTACHMENTS": "Ohne Anhänge herunterladen",
+    "DOWNLOAD_WITH_ATTACHMENTS": "Mit Anhängen herunterladen",
+    "EDIT_AGENT": "Agent bearbeiten",
+    "EDIT_AMAZONLEX": "Bearbeiten Sie die Lex-Konfiguration",
     "EDIT_AUTOREPLY": "Automatische Antwort bearbeiten",
-    "EDIT_CLOSE": "Bearbeitung abschließen",
-    "EDIT_DIALOGFLOW": "DialogFlow-Konfiguration bearbeiten",
-    "EDIT_GOTOIF": "GoToIf bearbeiten",
-    "EDIT_GOTOP": "GoTop bearbeiten",
+    "EDIT_CLOSE": "Bearbeiten Schließen",
+    "EDIT_DIALOGFLOW": "Bearbeiten Sie die DialogFlow-Konfiguration",
+    "EDIT_GOTOIF": "Bearbeiten Sie Gotoif",
+    "EDIT_GOTOP": "Gotop bearbeiten",
     "EDIT_NOOP": "Noop bearbeiten",
     "EDIT_QUEUE": "Warteschlange bearbeiten",
     "EDIT_SYSTEM": "System bearbeiten",
     "EDIT_TAG": "Tag bearbeiten",
     "EDIT_WHATSAPPACCOUNT": "WhatsApp-Konto bearbeiten",
-    "EDIT_WHATSAPPCANNEDANSWER": "Textvorlage bearbeiten",
-    "EDIT_WHATSAPPDISPOSITION": "Whatsapp-Qualifizierung bearbeiten",
-    "EDIT_WHATSAPPQUEUE": "Whatsapp-Warteschlange bearbeiten",
-    "FALSEPRIORITY": "Priorität falsch",
-    "GENERAL": "Allgemein",
+    "EDIT_WHATSAPPCANNEDANSWER": "Vordefinierte Antwort bearbeiten",
+    "EDIT_WHATSAPPDISPOSITION": "WhatsApp-Disposition bearbeiten",
+    "EDIT_WHATSAPPQUEUE": "Bearbeiten Sie die WhatsApp-Warteschlange",
+    "FALSEPRIORITY": "Falsche Priorität",
+    "GENERAL": "Allgemeines",
     "GOTOIF": "Gotoif",
     "GOTOP": "Zum Seitenanfang",
-    "GOTOREALTIME_WHATSAPPQUEUE": "Zur Echtzeitansicht gehen",
-    "GO_TO_WHATSAPPACCOUNTS": "Zum Whatsapp-Konto gehen",
-    "ID": "ID",
+    "GOTOREALTIME_WHATSAPPQUEUE": "Wechseln Sie zur WhatsApp-Warteschlange in Echtzeit",
+    "GO_TO_WHATSAPPACCOUNTS": "Gehe zu Konto",
+    "ID": "Ich würde",
     "IDLE": "Leerlauf",
     "INSERT_MESSAGE_HERE": "Nachricht hier einfügen",
     "INTERACTIONS": "Interaktionen",
-    "INTERACTIONS_WHATSAPPACCOUNT": "Zu Interaktionen gehen",
+    "INTERACTIONS_WHATSAPPACCOUNT": "Gehen Sie zu Interaktionen",
     "KEY": "Schlüssel",
     "LANGUAGE": "Sprache",
     "LASTMESSAGE": "Letzte Nachricht",
-    "LEXREGION": "LexRegion",
-    "LIST": "Liste",
-    "LOGGED_IN": "Eingeloggt",
+    "LEXREGION": "Region",
+    "LIST": "Aufführen",
+    "LOGGED_IN": "Eingeloggt (SIP verbunden)",
     "LOGIN_TIME": "Anmeldezeit",
     "LOGOUT": "Ausloggen",
-    "MANDATORYDISPOSITION": "Qualifizierung erforderlich",
-    "MANDATORYDISPOSITIONPAUSEID": "Qualifizierung pausieren, sofern erforderlich",
+    "MANDATORYDISPOSITION": "Obligatorische Disposition",
+    "MANDATORYDISPOSITIONPAUSEID": "Pause, um zu verwenden, wenn die obligatorische Disposition aktiviert ist",
     "MORE": "Mehr",
-    "MOTIONPROXY": "Proxy",
+    "MOTIONPROXY": "Proxy- oder Bewegungsdomäne",
     "MULTI_SELECT_TOGGLE": "Mehrfachauswahl umschalten",
     "NAME": "Name",
     "NEW_WHATSAPPACCOUNT": "Neues WhatsApp-Konto",
-    "NEW_WHATSAPPCANNEDANSWER": "Neue WhatsApp-Textvorlage",
-    "NEW_WHATSAPPDISPOSITION": "Neue WhatsApp-Quailifizierung",
+    "NEW_WHATSAPPCANNEDANSWER": "Neue vordefinierte WhatsApp-Antwort",
+    "NEW_WHATSAPPDISPOSITION": "Neue WhatsApp-Disposition",
     "NEW_WHATSAPPQUEUE": "Neue WhatsApp-Warteschlange",
     "NOOP": "Noop",
-    "NOTE": "Anmerkung",
+    "NOTE": "Hinweis",
     "NOTIFICATION": "Benachrichtigung",
-    "NOTIFICATIONSHAKE": "Schütteln",
-    "NOTIFICATIONSOUND": "Klingeln",
+    "NOTIFICATIONSHAKE": "Shake",
+    "NOTIFICATIONSOUND": "Klang",
     "NOTIFICATIONTEMPLATE": "Vorlage",
     "NO_AGENT_ONLINE": "Kein Agent online",
-    "NO_AVAILABLE_INFO": "Keine Informationen verfügbar",
-    "NO_INTERACTION_AVAILABLE": "Keine neuen Interaktionen verfügbar",
-    "NO_WHATSAPPCANNEDANSWER_AVAILABLE": "Keine Textvorlagen verfügbar",
-    "NO_WHATSAPPDISPOSITION_AVAILABLE": "Keine Qualifizierungen verfügbar",
+    "NO_AVAILABLE_INFO": "Keine verfügbaren Informationen",
+    "NO_INTERACTION_AVAILABLE": "Keine Interaktionen verfügbar",
+    "NO_WHATSAPPCANNEDANSWER_AVAILABLE": "Keine vordefinierten WhatsApp-Antworten verfügbar",
+    "NO_WHATSAPPDISPOSITION_AVAILABLE": "Keine WhatsApp-Dispositionen verfügbar",
     "NO_WHATSAPP_ACCOUNTS_AVAILABLE": "Keine WhatsApp-Konten verfügbar",
     "OF": "von",
     "OPENED": "Geöffnet",
     "PROXY": "Proxy",
     "QUEUE": "Warteschlange",
     "QUEUES": "Warteschlangen",
-    "QUEUETRANSFER": "Transfer an Warteschlange",
-    "QUEUETRANSFERTIMEOUT": "Zeitüberschreitung bei der Warteschlangentransfer",
+    "QUEUETRANSFER": "Warteschlangenübertragung",
+    "QUEUETRANSFERTIMEOUT": "Zeitüberschreitung bei der Warteschlangenübertragung",
     "READY": "Bereit",
     "REALTIME": "Echtzeit",
-    "RECEIVEURL": "URL für Erhalt",
+    "RECEIVEURL": "URL erhalten",
     "REFRESH_INTERACTIONS": "Interaktionen aktualisieren",
-    "REMOTE": "Remote",
+    "REMOTE": "Fernbedienung",
     "ROWSPERPAGE": "Zeilen pro Seite",
-    "SAVE": "Speichern",
+    "SAVE": "sparen",
     "SCREENRECORDING": "Bildschirmaufzeichnung verwalten",
     "SEARCH_FOR_ANYONE": "Suche",
-    "SECRETACCESSKEY": "Geheimer Schlüssel",
+    "SECRETACCESSKEY": "Zugriffsschlüsselgeheimnis",
     "SELECTED": "Ausgewählt",
     "SELECTED_AGENTS": "Ausgewählte Agenten",
     "SELECTED_TEAMS": "Ausgewählte Teams",
-    "SELECT_ALL": "Alles auswählen",
-    "SELECT_NONE": "Nichts auswählen",
+    "SELECT_ALL": "Wählen Sie Alle",
+    "SELECT_NONE": "Nichts ausgewählt",
     "SEND": "Senden",
-    "SETTINGS": "Einstellungen",
-    "SPYINTERACTION": "Mitlesen",
-    "STARTEDAT": "Startdatum",
-    "START_SCREENRECORDING": "Bildschirmaufzeichnung starten",
+    "SETTINGS": "die Einstellungen",
+    "SPYINTERACTION": "Spionage-Interaktion",
+    "STARTEDAT": "Fing an bei",
+    "START_SCREENRECORDING": "Bildschirmaufnahme starten",
     "STATUS": "Status",
     "STOP_SCREENRECORDING": "Bildschirmaufzeichnung stoppen",
     "STRATEGY": "Strategie",
     "SYSTEM": "System",
-    "TAG": "Tag",
-    "TAGS": "Tags",
+    "TAG": "Etikett",
+    "TAGS": "Stichworte",
     "TEAMADD_WHATSAPPQUEUE": "Team zur WhatsApp-Warteschlange hinzufügen",
-    "TEAMS_ASSOCIATION": "Teamzuweisung",
+    "TEAMS_ASSOCIATION": "Mannschaftsverband",
     "TEXT": "Text",
-    "TIMEOUT": "Zeitüberschreitung",
+    "TIMEOUT": "Auszeit",
     "TIMER": "Timer",
-    "TIMES": "Zeiten",
-    "TO": "an",
-    "TOKEN": "Token",
-    "TOOLTIP_SCREENRECORDING_OFF": "Bildschirmaufzeichnung verfügbar",
-    "TOOLTIP_SCREENRECORDING_ON": "Bildschirmaufzeichnung läuft",
-    "TRANSFER": "Weiterleiten",
+    "TIMES": "Mal",
+    "TO": "Zu",
+    "TOKEN": "Zeichen",
+    "TOOLTIP_SCREENRECORDING_OFF": "Bildschirmaufnahme verfügbar",
+    "TOOLTIP_SCREENRECORDING_ON": "Bildschirmaufnahme läuft",
+    "TRANSFER": "Transfer",
     "TRUEPRIORITY": "Wahre Priorität",
-    "TYPE": "Typ",
+    "TYPE": "Art",
     "UNPAUSE": "Pause beenden",
     "VALUE": "Wert",
     "VARIABLE": "Variable",
-    "WAITFORTHEASSIGNEDAGENT": "Auf den zugewiesenen Mitarbeiter warten",
+    "WAITFORTHEASSIGNEDAGENT": "Warten Sie auf den zugewiesenen Agenten",
     "WAITING": "Warten",
     "WELCOMEMESSAGE": "Willkommensnachricht",
     "WHATSAPP": "WhatsApp Connector",
     "WHATSAPPACCOUNTS": "WhatsApp-Konten",
-    "WHATSAPPCANNEDANSWERS": "WhatsApp-Textvorlagen",
-    "WHATSAPPDISPOSITIONS": "WhatsApp-Qualifizierungen",
+    "WHATSAPPCANNEDANSWERS": "WhatsApp vordefinierte Antworten",
+    "WHATSAPPDISPOSITIONS": "WhatsApp Dispositionen",
     "WHATSAPPQUEUES": "WhatsApp-Warteschlangen",
-    "CLIENTEMAIL": "Kunden E-Mail",
+    "CLIENTEMAIL": "Kunden-E-Mail",
     "DIALOGFLOWV2": "Dialogflow V2",
     "EDIT_DIALOGFLOWV2": "Dialogflow V2 bearbeiten",
-    "PRIVATEKEY": "Privater Schlüssel",
+    "PRIVATEKEY": "Privat Schlüssel",
     "PROJECTID": "Projekt-ID"
   }
 }
index 8ac07bf..0920067 100644 (file)
     "LASTMESSAGE": "Last Message",
     "LEXREGION": "Region",
     "LIST": "List",
-    "LOGGED_IN": "Logged In",
+    "LOGGED_IN": "Logged In (SIP Connected)",
     "LOGIN_TIME": "Login Time",
     "LOGOUT": "Logout",
     "MANDATORYDISPOSITION": "Mandatory Disposition",
index a7cb714..03aafb4 100644 (file)
     "LASTMESSAGE": "Ultimo mensaje",
     "LEXREGION": "Región",
     "LIST": "Lista",
-    "LOGGED_IN": "Conectado",
+    "LOGGED_IN": "Conectado (SIP conectado)",
     "LOGIN_TIME": "Hora de inicio de sesión",
     "LOGOUT": "Cerrar sesión",
     "MANDATORYDISPOSITION": "Tipificación obligatoria",
index c40e5bd..5ff75f9 100644 (file)
     "LASTMESSAGE": "Viimane sõnum",
     "LEXREGION": "Piirkond",
     "LIST": "Loend",
-    "LOGGED_IN": "Sisse logitud",
+    "LOGGED_IN": "Sisse logitud (SIP ühendatud)",
     "LOGIN_TIME": "Sisselogimise aeg",
     "LOGOUT": "Logi välja",
     "MANDATORYDISPOSITION": "Kohustuslik käsutamine",
index 76a3444..2bfad68 100644 (file)
     "LASTMESSAGE": "آخرین پیام",
     "LEXREGION": "منطقه",
     "LIST": "لیست",
-    "LOGGED_IN": "ورود به سیستم",
+    "LOGGED_IN": "ورود به سیستم (SIP متصل)",
     "LOGIN_TIME": "زمان ورود",
     "LOGOUT": "خروج",
     "MANDATORYDISPOSITION": "اختیار اجباری",
index 52f4f20..647eabf 100644 (file)
     "LASTMESSAGE": "Viimeinen viesti",
     "LEXREGION": "alue",
     "LIST": "Lista",
-    "LOGGED_IN": "Sisäänkirjautunut",
+    "LOGGED_IN": "Sisäänkirjautunut (SIP kytketty)",
     "LOGIN_TIME": "Sisäänkirjautumisaika",
     "LOGOUT": "Kirjautua ulos",
     "MANDATORYDISPOSITION": "Pakollinen sijoittaminen",
index 919bb35..b2e331a 100644 (file)
     "LASTMESSAGE": "Dernier message",
     "LEXREGION": "Région",
     "LIST": "liste",
-    "LOGGED_IN": "Connecté",
+    "LOGGED_IN": "Connecté (SIP connecté)",
     "LOGIN_TIME": "Heure de connexion",
     "LOGOUT": "Se déconnecter",
     "MANDATORYDISPOSITION": "Disposition obligatoire",
index a6c765d..00d0fa4 100644 (file)
     "LASTMESSAGE": "הודעה אחרונה",
     "LEXREGION": "אזור",
     "LIST": "רשימה",
-    "LOGGED_IN": "מחובר",
+    "LOGGED_IN": "מחובר (SIP מחובר)",
     "LOGIN_TIME": "זמן כניסה",
     "LOGOUT": "להתנתק",
     "MANDATORYDISPOSITION": "התנהגות חובה",
index 0550a1a..819f531 100644 (file)
     "LASTMESSAGE": "आखिरी सन्देश",
     "LEXREGION": "क्षेत्र",
     "LIST": "सूची",
-    "LOGGED_IN": "लॉग इन",
+    "LOGGED_IN": "लॉग इन (SIP कनेक्टेड)",
     "LOGIN_TIME": "लॉग इन टाइम",
     "LOGOUT": "लॉग आउट",
     "MANDATORYDISPOSITION": "अनिवार्य विवाद",
index 246085c..b2e703c 100644 (file)
     "LASTMESSAGE": "Pesan Terakhir",
     "LEXREGION": "Wilayah",
     "LIST": "Daftar",
-    "LOGGED_IN": "Masuk",
+    "LOGGED_IN": "Masuk (SIP Terhubung)",
     "LOGIN_TIME": "Waktu Login",
     "LOGOUT": "Keluar",
     "MANDATORYDISPOSITION": "Disposisi Wajib",
index d23db62..0350e8d 100644 (file)
     "LASTMESSAGE": "最後のメッセージ",
     "LEXREGION": "領域",
     "LIST": "リスト",
-    "LOGGED_IN": "ログイン済み",
+    "LOGGED_IN": "ログイン済み(SIP接続済み)",
     "LOGIN_TIME": "ログイン時間",
     "LOGOUT": "ログアウト",
     "MANDATORYDISPOSITION": "強制処分",
index 53a3344..d6c34e1 100644 (file)
     "LASTMESSAGE": "마지막 메시지",
     "LEXREGION": "부위",
     "LIST": "명부",
-    "LOGGED_IN": "로그인 됨",
+    "LOGGED_IN": "로그인 됨 (SIP 연결됨)",
     "LOGIN_TIME": "로그인 시간",
     "LOGOUT": "로그 아웃",
     "MANDATORYDISPOSITION": "필수 처분",
index a074057..282dd81 100644 (file)
     "LASTMESSAGE": "Paskutinė žinutė",
     "LEXREGION": "Regionas",
     "LIST": "Sąrašas",
-    "LOGGED_IN": "Prisijungęs",
+    "LOGGED_IN": "Prisijungęs (prijungtas prie SIP)",
     "LOGIN_TIME": "Prisijungimo laikas",
     "LOGOUT": "Atsijungti",
     "MANDATORYDISPOSITION": "Privalomas nusistatymas",
index fb7beca..2389947 100644 (file)
     "LASTMESSAGE": "Pēdējā ziņa",
     "LEXREGION": "Novads",
     "LIST": "Saraksts",
-    "LOGGED_IN": "Pieteicies",
+    "LOGGED_IN": "Pieteicies (savienots ar SIP)",
     "LOGIN_TIME": "Pieteikšanās laiks",
     "LOGOUT": "Izlogoties",
     "MANDATORYDISPOSITION": "Obligāta rīcība",
index 5eed559..85a42ac 100644 (file)
     "LASTMESSAGE": "Laatste bericht",
     "LEXREGION": "Regio",
     "LIST": "Lijst",
-    "LOGGED_IN": "Ingelogd",
+    "LOGGED_IN": "Ingelogd (SIP verbonden)",
     "LOGIN_TIME": "Login Tijd",
     "LOGOUT": "Uitloggen",
     "MANDATORYDISPOSITION": "Verplichte dispositie",
index efdafa2..b8c8675 100644 (file)
     "LASTMESSAGE": "Siste melding",
     "LEXREGION": "Region",
     "LIST": "Liste",
-    "LOGGED_IN": "Logget inn",
+    "LOGGED_IN": "Logget inn (SIP-tilkoblet)",
     "LOGIN_TIME": "Innloggingstid",
     "LOGOUT": "Logg ut",
     "MANDATORYDISPOSITION": "Obligatorisk disposisjon",
index 510b8e5..da5dad6 100644 (file)
     "LASTMESSAGE": "Ostatnia wiadomość",
     "LEXREGION": "Region",
     "LIST": "Lista",
-    "LOGGED_IN": "Zalogowano",
+    "LOGGED_IN": "Zalogowano (połączenie SIP)",
     "LOGIN_TIME": "Czas logowania",
     "LOGOUT": "Wyloguj",
     "MANDATORYDISPOSITION": "Obowiązkowa dyspozycja",
index 29fd2ec..ec3412a 100644 (file)
     "LASTMESSAGE": "Última mensagem",
     "LEXREGION": "Região",
     "LIST": "Lista",
-    "LOGGED_IN": "Conectado",
+    "LOGGED_IN": "Conectado (SIP conectado)",
     "LOGIN_TIME": "Hora de Login",
     "LOGOUT": "Sair",
     "MANDATORYDISPOSITION": "Disposição Obrigatória",
index 29fd2ec..ec3412a 100644 (file)
     "LASTMESSAGE": "Última mensagem",
     "LEXREGION": "Região",
     "LIST": "Lista",
-    "LOGGED_IN": "Conectado",
+    "LOGGED_IN": "Conectado (SIP conectado)",
     "LOGIN_TIME": "Hora de Login",
     "LOGOUT": "Sair",
     "MANDATORYDISPOSITION": "Disposição Obrigatória",
index 5131899..87a083a 100644 (file)
     "LASTMESSAGE": "Последнее сообщение",
     "LEXREGION": "Область",
     "LIST": "Список",
-    "LOGGED_IN": "Авторизован",
+    "LOGGED_IN": "Авторизован (SIP подключен)",
     "LOGIN_TIME": "Время входа",
     "LOGOUT": "Выйти",
     "MANDATORYDISPOSITION": "Обязательное распоряжение",
index ae13a80..f4f2b7e 100644 (file)
     "LASTMESSAGE": "Senaste meddelandet",
     "LEXREGION": "Område",
     "LIST": "Lista",
-    "LOGGED_IN": "Inloggad",
+    "LOGGED_IN": "Inloggad (SIP ansluten)",
     "LOGIN_TIME": "Inloggningstid",
     "LOGOUT": "Logga ut",
     "MANDATORYDISPOSITION": "Obligatorisk disposition",
index da1b4f9..e867462 100644 (file)
     "LASTMESSAGE": "Son Mesaj",
     "LEXREGION": "bölge",
     "LIST": "Liste",
-    "LOGGED_IN": "Oturum Açıldı",
+    "LOGGED_IN": "Oturum Açıldı (SIP Bağlı)",
     "LOGIN_TIME": "Giriş Zamanı",
     "LOGOUT": "Çıkış Yap",
     "MANDATORYDISPOSITION": "Zorunlu Elden Çıkarma",
index 4804111..b81f80a 100644 (file)
     "LASTMESSAGE": "最后留言",
     "LEXREGION": "地区",
     "LIST": "清单",
-    "LOGGED_IN": "已登录",
+    "LOGGED_IN": "已登录(已连接SIP)",
     "LOGIN_TIME": "登录时间",
     "LOGOUT": "登出",
     "MANDATORYDISPOSITION": "强制性",
index 6d85da7..cb5a2ee 100644 (file)
     "LASTMESSAGE": "最後留言",
     "LEXREGION": "地區",
     "LIST": "清單",
-    "LOGGED_IN": "已登錄",
+    "LOGGED_IN": "已登錄(已連接SIP)",
     "LOGIN_TIME": "登錄時間",
     "LOGOUT": "登出",
     "MANDATORYDISPOSITION": "強制性",
index fd8ccd9..3162f7a 100644 (file)
     "CHAT": "CHAT",
     "ACTIVITY": "Aktivität",
     "FRIENDS": "Freunde",
-    "APP_SERVERS": "Server Anwendung",
-    "USER_STATS": "Benutzer Statistiken",
-    "EVENTS": "Ereignisse",
-    "NOTES": "Notizen",
-    "QUICK_SETTINGS": "Schnelleinstellungen",
+    "APP_SERVERS": "Anwendungsserver",
+    "USER_STATS": "Benutzer Stats",
+    "EVENTS": "Veranstaltungen",
+    "NOTES": "Hinweise",
+    "QUICK_SETTINGS": "Schnelle Einstellungen",
     "NOTIFICATIONS": "Benachrichtigungen",
     "CLOUD_SYNC": "Cloud Synchronisieren",
-    "RETRO_THRUSTERS": "Retro Thrusters",
-    "RECENT": "Neuste",
+    "RETRO_THRUSTERS": "Retro Triebwerke",
+    "RECENT": "Die jüngsten",
     "START_NEW_CHAT": "Neuen Chat starten",
     "BACK": "Zurück",
-    "CALL": "Anrufen",
+    "CALL": "Anruf",
     "MORE": "Mehr",
     "SEND_MESSAGE": "Nachricht senden",
-    "REPLY_PLACEHOLDER": "Nachricht eingeben und Enter drücken zum Senden",
-    "CONTACT_XCALLY_MOTION_SUPPORT": "Support kontaktieren",
+    "REPLY_PLACEHOLDER": "Geben Sie ein, und drücken Sie die Eingabetaste, um Nachricht senden",
+    "CONTACT_XCALLY_MOTION_SUPPORT": "Kontakt xCALLY Motion Support",
     "EXPIRATION_DATE": "Ablaufdatum",
     "EXPIRATION_REASON": "Ablauf Grund",
     "LICENSE": "Lizenz",
-    "NEW_TOKEN": "Neuer Token",
-    "OLD_TOKEN": "Alter Token",
+    "NEW_TOKEN": "Neue Token",
+    "OLD_TOKEN": "Alte Token",
     "SEND_EMAIL_TO": "E-Mail senden an",
     "TOKEN": "Token",
-    "EXPIRATION_REASON_MESSAGE": "Ihre Lizenz ist abgelaufen oder Ihre eindeutige ID wurde aufgrund einer Änderung an Ihrem System aktualisiert. Bitte den Support kontaktieren",
-    "GRAY_PERIOD_EXPIRATION": "Ablauf Testphase",
+    "EXPIRATION_REASON_MESSAGE": "Ihre Lizenz ist abgelaufen oder Ihre Maschine eindeutige Id wurde aufgrund einer Änderung an Ihrem System aktualisiert. Die xCALLY Motion Support Team Ihre alte und Ihre neue uuid senden Kontakt.",
+    "GRAY_PERIOD_EXPIRATION": "Grau Zeitraum Ablauf",
     "ERRORS": {
       "NAME_REQUIRED": "Pflichtfeld"
     },
-    "EXPIRATION_GRAY_PERIOD": "Ablauf Testphase",
-    "NO_AVAILABLE_GROUPS": "Keine Gruppen verfügbar",
-    "SAVE": "Speichern",
-    "INFO": "Information",
+    "EXPIRATION_GRAY_PERIOD": "Ablauf Grauzeit",
+    "NO_AVAILABLE_GROUPS": "Keine verfügbaren Gruppen",
+    "SAVE": "sparen",
+    "INFO": "Info",
     "NEW_CHATGROUP": "Neue Gruppe",
     "NAME": "Name",
     "MEMBERS": "Mitglieder",
@@ -65,9 +65,9 @@
     "DELETE": "Löschen",
     "SEARCH": "Suche",
     "USERS": "Benutzer",
-    "EXPIRATION_REASON_MESSAGE_GRAY": "Ihre Lizenz ist abgelaufen oder wurde deaktiviert. Bitte den Support kontaktieren.",
-    "EXPIRATION_REASON_MESSAGE_CHANGED": "Ihre Lizenz ist abgelaufen oder Ihre eindeutige ID wurde aufgrund einer Änderung an Ihrem System aktualisiert. Bitte den Support kontaktieren",
-    "MESSENGER_DISABLED": "Internes Messaging für diesen Benutzer nicht aktiviert",
+    "EXPIRATION_REASON_MESSAGE_GRAY": "Ihre Lizenz ist abgelaufen oder wurde deaktiviert. Kontaktieren Sie xCALLY Motion Support Team.",
+    "EXPIRATION_REASON_MESSAGE_CHANGED": "Die eindeutige ID Ihres Rechners wurde aufgrund einer Änderung Ihres Systems aktualisiert. Kontaktieren Sie xCALLY Motion Support Team, das sowohl Ihren alten als auch Ihren neuen UUID sendet.",
+    "MESSENGER_DISABLED": "Das interne Messaging ist für diesen Agenten deaktiviert!",
     "WARNING": "Warnung"
   }
 }
index 6eb58fc..1d7248b 100644 (file)
@@ -1,20 +1,20 @@
 {
   "RESETPASSWORD": {
-    "TITLE": "Passwort zurücksetzen",
-    "EMAIL_ADRESS": "E-Mail Adresse",
-    "PASSWORD": "Passwort",
-    "PASSWORD_CONFIRM": "Passwort bestätigen",
-    "UPDATE_PASSWORD": "Passwort zurücksetzen",
+    "TITLE": "Ihr Kennwort zurücksetzen",
+    "EMAIL_ADRESS": "E-mail Adresse",
+    "PASSWORD": "Kennwort",
+    "PASSWORD_CONFIRM": "Kennwort (bestätigen)",
+    "UPDATE_PASSWORD": "Kennwort zurücksetzen",
     "GO_BACK": "Zurück zum Login",
-    "PASSWORD_RESET": "Passwort zurücksetzen",
-    "PASSWORD_RESET_MESSAGE": "Das Passwort wurde erfolgreich zurückgesetzt. Sie können sich nun erneut anmelden",
-    "PASSWORD_RESET_ERROR": "Fehler beim Zurücksetzen des Passwortes",
+    "PASSWORD_RESET": "Kennwort zurücksetzen",
+    "PASSWORD_RESET_MESSAGE": "Ihr Passwort wurde korrekt zurückgesetzt wurde, können Sie sich jetzt!",
+    "PASSWORD_RESET_ERROR": "Passwort Fehler zurücksetzen",
     "ERRORS": {
-      "EMAIL_REQUIRED": "E-Mail Adresse erfoderlich",
-      "EMAIL_MUST_VALID": "E-Mail Adresse ungültig",
-      "PASSWORD_REQUIRED": "Passwort erforderlich",
+      "EMAIL_REQUIRED": "Im Feld \"E-Mail ist erforderlich",
+      "EMAIL_MUST_VALID": "E-Mail muss eine gültige e-mail Adresse",
+      "PASSWORD_REQUIRED": "Kennwort Feld ist erforderlich.",
       "CONFIRM_NOT_MATCH": "Die Passwörter stimmen nicht überein.",
-      "SECURE_PASSWORD_PATTERN": "Muss mindestens 8 Zeichen enthalten, Minimum von 1 Kleinbuchstabe, 1 Großbuchstabe, 1 Zahl und 1 Sonderzeichen ~!?*@#$%^&-_=+[{]}."
+      "SECURE_PASSWORD_PATTERN": "Muss mindestens 8 Zeichen enthalten, mit einem Minimum von 1 Kleinbuchstaben, Großbuchstaben, 1 numerisches und 1 Sonderzeichen ~!?*@#$%^&-_=+[{]}."
     }
   }
 }
index b6abdf2..a399ee6 100644 (file)
@@ -1,11 +1,11 @@
 {
   "TOOLBAR": {
-    "TOGGLE_NAVIGATION": "Navigation umschalten",
-    "TOGGLE_NAVIGATION_FOLD": "Navigation einklappen",
-    "TOGGLE_NAVIGATION_MODE": "Navigation Moduswechsel",
+    "TOGGLE_NAVIGATION": "Navigation wechseln",
+    "TOGGLE_NAVIGATION_FOLD": "Navigation wechseln Fach",
+    "TOGGLE_NAVIGATION_MODE": "Navigation Modus umschalten",
     "SEARCH": "Suche",
-    "USER_SETTINGS": "Nutzereinstellungen",
-    "TOGGLE_QUICK_PANEL": "Schnelles Panel umschalten",
+    "USER_SETTINGS": "Benutzereinstellungen",
+    "TOGGLE_QUICK_PANEL": "Um schnelle Panel",
     "ENGLISH": "Englisch",
     "ITALIAN": "Italienisch",
     "FRENCH": "Französisch",
     "CHINESESIMPLIFIED": "Vereinfachtes Chinesisch",
     "CHINESETRADITIONAL": "Traditionelles Chinesisch",
     "DUTCH": "Niederländisch",
-    "FINNISH": "Finnisch",
+    "FINNISH": "Finnische",
     "DANISH": "Dänisch",
     "PORTUGUESE": "Portugiesisch",
     "NORWEGIAN": "Norwegisch",
     "HINDI": "Hindi",
     "TURKISH": "Türkisch",
     "PERSIAN": "Persisch",
-    "LOGIN_TIME": "Zeit angemeldet",
-    "PAUSE_TIME": "Zeit in Pause",
+    "LOGIN_TIME": "Login Zeit",
+    "PAUSE_TIME": "Pausenzeit",
     "PREVIEW": "Vorschau",
     "CONFIRM_PASSWORD": "Passwort bestätigen",
     "NEW_PASSWORD": "Neues Passwort",
     "OLD_PASSWORD": "Altes Passwort",
     "SAVE": "Speichern",
     "TRIAL_VERSION": "Testversion",
-    "SOMEONE_LOGGED_YOU_OUT": "Sie wurden von einem anderen Benutzer abgemeldet. Erneut anmelden?",
+    "SOMEONE_LOGGED_YOU_OUT": "Jemand eingeloggt haben, möchten Sie angemeldet bleiben?",
     "STAY_LOGGED": "Angemeldet bleiben",
     "WARNING": "Warnung",
     "PAUSE": "Pause",
-    "RESUME": "Fortsetzen",
-    "NO_PAUSES_AVAILABLE": "Keine Pausen verfügbar",
-    "LATVIAN": "Lettisch",
+    "RESUME": "Lebenslauf",
+    "NO_PAUSES_AVAILABLE": "Keine Pausen zur Verfügung",
+    "LATVIAN": "Lettische",
     "POLISH": "Polnisch",
     "ERRORS": {
       "FIELD_REQUIRED": "Pflichtfeld",
       "PASSWORD_REQUIRED": "Pflichtfeld",
       "CONFIRM_NOT_MATCH": "Die Passwörter stimmen nicht überein",
-      "SECURE_PASSWORD_PATTERN": "Das Passwort muss mindestens 8 Zeichen lang sein und 1 Kleinbuchstaben, 1 Großbuchstaben, 1 Zahl und 1 Sonderzeichen enthalten.",
-      "PASSWORD_OLDPASSWORD_MATCH": "Die Passwörter stimmen nicht überein"
+      "SECURE_PASSWORD_PATTERN": "Das Passwort muss mindestens 8 Zeichen lang sein und 1 Kleinbuchstabe, 1 Großbuchstabe, 1 Zahl und 1 Sonderzeichen haben ~! @",
+      "PASSWORD_OLDPASSWORD_MATCH": "Das neue Passwort muss sich vom vorherigen Passwort unterscheiden"
     },
     "RESETPASSWORD": "Passwort zurücksetzen",
-    "PASSWORD_EXPIRE_REMAINING_DAYS": "Verbleibende Tage, bis zum Ablauf des Passwortes",
+    "PASSWORD_EXPIRE_REMAINING_DAYS": "Verbleibende Tage, bevor Ihr Passwort abläuft",
     "BROWSER_COMPATIBILITY": "Browserkompatibilität [Chrome, Opera, Safari]",
     "RECORDING": "Aufzeichnung",
-    "INVALID_LICENSE": "Lizenz ungültig",
+    "INVALID_LICENSE": "Ungültige Lizenz",
     "BROWSER": "Browser",
     "OS": "Betriebssystem",
-    "REQUIREMENTS": "Anforderungen",
+    "REQUIREMENTS": "Bedarf",
     "LICENSE": "Lizenz",
     "HTTPS": "HTTPS",
     "WEBRTCSUPPORT": "WebRTC-Unterstützung",
-    "REGISTERED": "Registriert",
+    "REGISTERED": "Eingetragen",
     "NOT_REGISTERED": "Nicht registriert",
-    "WEBRTC_LICENSE_NOT_ENABELD": "WebRTC-Lizenz ist nicht aktiviert",
-    "ATTENDED_TRANSFER": "Warmer Transfer",
+    "WEBRTC_LICENSE_NOT_ENABELD": "Die WebRTC-Lizenz ist nicht aktiviert",
+    "ATTENDED_TRANSFER": "Begleiteter Tranfer",
     "TRANSFER": "Transfer",
     "TARGET": "Ziel",
-    "CANCEL": "Abbrechen",
+    "CANCEL": "Stornieren",
     "FILENAME": "Dateiname",
     "STATUS": "Status",
     "ACTIONS": "Aktionen",
-    "SPEAKER": "Lautsprecher",
-    "RINGING": "Klingeln",
+    "SPEAKER": "Redner",
+    "RINGING": "Klingelton",
     "MICROPHONE": "Mikrofon",
     "PROFILE": "Profil",
-    "SERVICES": "Dienste",
+    "SERVICES": "Dienstleistungen",
     "AUDIO": "Audio",
     "FULLNAME": "Vollständiger Name",
     "NAME": "Name",
     "INTERNAL": "Intern",
-    "RINGINGDEVICE": "Klingeln auf Gerät",
-    "SPEAKERDEVICE": "Verwendeter Lautsprecher",
-    "MICROPHONEDEVICE": "Verwendetes Mikrofon",
+    "RINGINGDEVICE": "Klingelgerät",
+    "SPEAKERDEVICE": "Lautsprechergerät",
+    "MICROPHONEDEVICE": "Mikrofon Gerät",
     "CHANGEPASSWORD": "Passwort ändern",
-    "SETTINGS": "Einstellungen",
+    "SETTINGS": "die Einstellungen",
     "AUTOANSWER": "Automatische Antwort",
     "INDONESIAN": "Indonesisch",
     "ARABIC": "Arabisch",
-    "CALL": "Anrufen",
+    "CALL": "Anruf",
     "PREFIXES": "Präfixe",
     "HEBREW": "Hebräisch",
-    "ESTONIAN": "Estnisch",
+    "ESTONIAN": "estnisch",
     "CZECH": "Tschechisch",
-    "BRAZILIAN": "Brasilianisch",
-    "CONFERENCE": "Konferenz mit 2 aktiven Sitzungen",
-    "CHANGE_LANGUAGE_MESSAGE": "Bitte Seite aktualisieren, um Änderungen zu übernehmen",
+    "BRAZILIAN": "Brasilianer",
+    "CONFERENCE": "Konferenz mit 2 aktiven Sessions",
+    "CHANGE_LANGUAGE_MESSAGE": "Denken Sie daran, die Seite zu aktualisieren, um die RTL-Unterstützung anzuwenden (falls aktiviert).",
     "CHANGE_LANGUAGE_TITLE": "Sprache ändern",
     "WEBRTC_AUDIO_DEVICES_NOT_AVAILABLE": "Keine Audiogeräte verfügbar",
     "WEBRTC_MICROPHONE_NOT_AVAILABLE": "Kein Mikrofon vorhanden",
     "WEBRTC_SPEAKER_NOT_AVAILABLE": "Kein Lautsprecher verfügbar",
     "NO_AVAILABLE_INFO": "Keine verfügbaren Informationen",
-    "LITHUANIAN": "Litauisch",
+    "LITHUANIAN": "litauisch",
     "NOTIFICATION_TITLE": "Neue Benachrichtigung von {{Absender}}",
     "NOTIFICATION_TITLE_RECIPIENT": "an {{Empfänger}}",
     "USER_FORCE_LOGOUT": "{{ip}} hat sich mit Ihren Anmeldeinformationen angemeldet.\nMehrfachanmeldungen sind nicht zulässig",
index d45831b..2506a28 100644 (file)
@@ -16,7 +16,7 @@
 
   <link rel="stylesheet" href="styles/vendor.def00a0c.css">
 
-  <link rel="stylesheet" href="styles/app.59371f48.css">
+  <link rel="stylesheet" href="styles/app.0b303223.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'> -->
@@ -68,7 +68,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.17add46f.js"></script>
+  <script src="scripts/app.8a22b3f9.js"></script>
 
   <!-- CKEDITOR -->
   <script src="assets/plugins/ckeditor/ckeditor.js"></script>
similarity index 52%
rename from public/scripts/app.17add46f.js
rename to public/scripts/app.8a22b3f9.js
index 42cfd54..b052fee 100644 (file)
@@ -1 +1 @@
-!function(){"use strict";angular.module("app.auth",[])}(),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.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"])}(),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,backgroundColor,fontSize,header_shape,showAgentAvatar,showCustomerAvatar,alignment,verticalAlignment,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,backgroundColor,fontSize,header_shape,showAgentAvatar,showCustomerAvatar,alignment,verticalAlignment,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,backgroundColor,fontSize,header_shape,showAgentAvatar,showCustomerAvatar,alignment,verticalAlignment,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",controller:"AgentsChatRealtimeController as vm",templateUrl:"app/main/apps/chat/views/realtime/agents/view.html",resolve:{pauses:["apiResolver",function(e){return e.resolve("pause@get",{nolimit:!0})}],agents:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("user@get",{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",role:"agent",sort:"fullname",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Agents",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",role:"agent",sort:"fullname",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:202})}],rpcAgents:["apiResolver",function(e){return e.resolve("rpc@getAgents")}]},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"):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 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 a=e,n.resolve("rpc@getVoiceQueues")}).then(function(e){if(e)for(var n,t=0;t<e.rows.length;t+=1)(n=_.find(a.rows,{id:e.rows[t].id}))&&_.merge(n,_.pick(e.rows[t],["waiting","total","talking","answered","unmanaged","abandoned"]));return a})}],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",function(e,n,t){return 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",{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:"createdAt,updatedAt,id,token,agentIdentifier,customerAlias,messageFontSize,name,key,address,remote,ListId,fidelity,timeout,agentAlias,closingQuestion,formSubmitSuccessMessage,formSubmitFailureMessage,color,color_focus,color_button,textColor,backgroundColor,fontSize,header_shape,showAgentAvatar,showCustomerAvatar,alignment,verticalAlignment,messagesAlignment,defaultTitle,animation,defaultWhiteLabel,whiteLabel,defaultLogo,conditionAgreement,autoclose,enableUnmanagedNote,unmanagedMessage,skipUnmanaged,sendUnmanaged,enableCustomerWriting,waitingTitle,waitingMessage,closingMessage,noteTitle,placeholderMessage,skipMessageButton,enableRating,ratingType,ratingStarsNumber,enableFeedback,forwardTranscript,forwardTranscriptMessage,closingMessageButton,download_transcript,enableCustomerAttachment,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,header_offline,offline_message,message_title,enquiry_message_placeholder,enquiry_button,rating_message,rating_send,rating_skip,acceptMethod,acceptUrl,rejectMethod,rejectUrl,closeMethod,closeUrl,onlineForm,offlineForm,mapKey,mapKeyOffline,forwardTranscript,forwardOffline,forwardOfflineAddress,IntervalId,timezone,waitForTheAssignedAgent,description,notificationSound,notificationShake,notificationTemplate",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,backgroundColor,fontSize,header_shape,showAgentAvatar,showCustomerAvatar,alignment,verticalAlignment,messagesAlignment,defaultTitle,animation,defaultWhiteLabel,whiteLabel,defaultLogo,conditionAgreement,autoclose,enableUnmanagedNote,unmanagedMessage,skipUnmanaged,sendUnmanaged,enableCustomerWriting,waitingTitle,waitingMessage,closingMessage,noteTitle,placeholderMessage,skipMessageButton,enableRating,ratingType,ratingStarsNumber,enableFeedback,forwardTranscript,forwardTranscriptMessage,closingMessageButton,download_transcript,enableCustomerAttachment,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,header_offline,offline_message,message_title,enquiry_message_placeholder,enquiry_button,rating_message,rating_send,rating_skip,acceptMethod,acceptUrl,rejectMethod,rejectUrl,closeMethod,closeUrl,onlineForm,offlineForm,mapKey,mapKeyOffline,forwardTranscript,forwardOffline,forwardOfflineAddress,IntervalId,timezone,waitForTheAssignedAgent,description,notificationSound,notificationShake,notificationTemplate",sort:"-updatedAt",limit:10,offset: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",{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:"createdAt,updatedAt,id,name,key,email,ListId,active,cservice,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,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,key,email,ListId,active,cservice,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,description,notificationSound,notificationShake,notificationTemplate,queueTransfer,queueTransferTimeout,agentTransfer,agentTransferTimeout",sort:"-updatedAt",limit:10,offset: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",{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:"createdAt,updatedAt,id,name,key,token,remote,ListId,phone,type,accountSid,authId,authToken,smsMethod,applicationId,accountId,username,password,senderString,deliveryReport,waitForTheAssignedAgent,description,receiveUrl,deliveryReportUrl,notificationSound,notificationShake,notificationTemplate",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,phone,type,accountSid,authId,authToken,smsMethod,applicationId,accountId,username,password,senderString,deliveryReport,waitForTheAssignedAgent,description,receiveUrl,deliveryReportUrl,notificationSound,notificationShake,notificationTemplate",sort:"-updatedAt",limit:10,offset: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",{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:"createdAt,updatedAt,id,name,key,token,replyUri,ListId,waitForTheAssignedAgent,mapKey,description,receiveUri,notificationSound,notificationShake,notificationTemplate",sort:"-updatedAt",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"OpenchannelAccounts",fields:"createdAt,updatedAt,id,name,key,token,replyUri,ListId,waitForTheAssignedAgent,mapKey,description,receiveUri,notificationSound,notificationShake,notificationTemplate",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",{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:"createdAt,updatedAt,id,name,key,headerinfo,TrunkId,localstationid,ListId,waitForTheAssignedAgent,description,ecm,minrate,maxrate,modem,gateway,faxdetect,t38timeout,tech,acceptMethod,acceptUrl,rejectMethod,rejectUrl,closeMethod,closeUrl,notificationSound,notificationShake,notificationTemplate",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,description,ecm,minrate,maxrate,modem,gateway,faxdetect,t38timeout,tech,acceptMethod,acceptUrl,rejectMethod,rejectUrl,closeMethod,closeUrl,notificationSound,notificationShake,notificationTemplate",sort:"-updatedAt",limit:10,offset: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",{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:"createdAt,updatedAt,id,name,key,token,remote,ListId,phone,type,accountSid,authId,authToken,whatsappMethod,username,password,senderString,deliveryReport,waitForTheAssignedAgent,description,receiveUrl,deliveryReportUrl,notificationSound,notificationShake,notificationTemplate",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"WhatsappAccounts",fields:"createdAt,updatedAt,id,name,key,token,remote,ListId,phone,type,accountSid,authId,authToken,whatsappMethod,username,password,senderString,deliveryReport,waitForTheAssignedAgent,description,receiveUrl,deliveryReportUrl,notificationSound,notificationShake,notificationTemplate",sort:"-updatedAt",limit:10,offset: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",controller:"AgentsFaxRealtimeController as vm",templateUrl:"app/main/apps/fax/views/realtime/agents/view.html",resolve:{pauses:["apiResolver",function(e){return e.resolve("pause@get",{nolimit:!0})}],agents:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("user@get",{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",role:"agent",sort:"fullname",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Agents",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",role:"agent",sort:"fullname",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:202})}],rpcAgents:["apiResolver",function(e){return e.resolve("rpc@getAgents")}]},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",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})}],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",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: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,t,a){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,key,email,ListId,active,cservice,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,key,email,ListId,active,cservice,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,key,email,ListId,active,cservice,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})}],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","Auth",function(e,n){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","msApiProvider","msNavigationServiceProvider"],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",controller:"AgentsMailRealtimeController as vm",templateUrl:"app/main/apps/mail/views/realtime/agents/view.html",resolve:{pauses:["apiResolver",function(e){return e.resolve("pause@get",{nolimit:!0})}],agents:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("user@get",{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",role:"agent",sort:"fullname",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Agents",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",role:"agent",sort:"fullname",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:202})}],rpcAgents:["apiResolver",function(e){return e.resolve("rpc@getAgents")}]},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,description,mandatoryDisposition,mandatoryDispositionPauseId,dialPredictiveIntervalMaxThreshold,dialPredictiveIntervalMinThreshold",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,description,mandatoryDisposition,mandatoryDispositionPauseId,dialPredictiveIntervalMaxThreshold,dialPredictiveIntervalMinThreshold",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",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.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",controller:"AgentsMotionDialerRealtimeController as vm",templateUrl:"app/main/apps/motiondialer/views/realtime/agents/view.html",resolve:{pauses:["apiResolver",function(e){return e.resolve("pause@get",{nolimit:!0})}],agents:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("user@get",{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",role:"agent",sort:"fullname",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Agents",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",role:"agent",sort:"fullname",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:202})}],rpcAgents:["apiResolver",function(e){return e.resolve("rpc@getAgents")}]},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",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",controller:"AgentsOpenchannelRealtimeController as vm",templateUrl:"app/main/apps/openchannel/views/realtime/agents/view.html",resolve:{pauses:["apiResolver",function(e){return e.resolve("pause@get",{nolimit:!0})}],agents:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("user@get",{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",role:"agent",sort:"fullname",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Agents",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",role:"agent",sort:"fullname",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:202})}],rpcAgents:["apiResolver",function(e){return e.resolve("rpc@getAgents")}]},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";function e(e,n,t,a){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",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:{smtps:["apiResolver",function(e){return e.resolve("mailAccount@get",{fields:"createdAt,updatedAt,id,service,name,email,Smtp.service,Smtp.host,Smtp.port,Smtp.secure,Smtp.authentication,Smtp.user,Smtp.pass,description",service:"1",limit:10,offset:0})}]},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,data2,data1",sort:"-updatedAt",limit:10,offset:0})}]},authenticate:!0,permissionId:1400,bodyClass:"settings"}),n.addPart("app/main/apps/settings")}e.$inject=["$stateProvider","$translatePartialLoaderProvider","msApiProvider","msNavigationServiceProvider"],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",controller:"AgentsSmsRealtimeController as vm",templateUrl:"app/main/apps/sms/views/realtime/agents/view.html",resolve:{pauses:["apiResolver",function(e){return e.resolve("pause@get",{nolimit:!0})}],agents:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("user@get",{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",role:"agent",sort:"fullname",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Agents",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",role:"agent",sort:"fullname",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:202})}],rpcAgents:["apiResolver",function(e){return e.resolve("rpc@getAgents")}]},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,t,a){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","Auth",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",role:"admin,user",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: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",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: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",role:"agent",sort:"-updatedAt",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",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",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: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","Auth",function(e,n){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","msApiProvider","msNavigationServiceProvider"],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"}),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",controller:"AgentsVoiceRealtimeController as vm",templateUrl:"app/main/apps/voice/views/realtime/agents/view.html",resolve:{pauses:["apiResolver",function(e){return e.resolve("pause@get",{nolimit:!0})}],agents:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("user@get",{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",role:"agent",sort:"fullname",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Agents",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",role:"agent",sort:"fullname",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:202})}],rpcAgents:["apiResolver",function(e){return e.resolve("rpc@getAgents")}]},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",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",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})}],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",controller:"AgentsWhatsappRealtimeController as vm",templateUrl:"app/main/apps/whatsapp/views/realtime/agents/view.html",resolve:{pauses:["apiResolver",function(e){return e.resolve("pause@get",{nolimit:!0})}],agents:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("user@get",{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",role:"agent",sort:"fullname",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Agents",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",role:"agent",sort:"fullname",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:202})}],rpcAgents:["apiResolver",function(e){return e.resolve("rpc@getAgents")}]},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",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",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";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 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,i,o,n,s,r,l){var d;return{getToken:e,getCurrentUser:function(){return d},getPermissions:h,hasChildrenPermissions:function(e){return!!e&&_.some(e,function(e){return t(e)})},hasModulePermissions:function(i){return o(function(a,n){g()?a(!0):r.userProfileSection.get({userProfileId:d.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={};g()?(s.forEach(function(e){i[e]=!0}),a(i)):r.userProfileSection.get({userProfileId:d.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!!d&&d.role===e},hasPermission:t,hasResourcePermission:function(e,s){return o(function(a,i){return r.userProfileSection.get({userProfileId:d.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 f().then(function(){_.includes(d.permissions,a)&&(t[a]=!0),e(t)}).catch(function(e){n(e)})})},hasSectionsPermissions:function(a){return o(function(e,n){var t={};if(!g())return f().then(function(){a.forEach(function(e){_.includes(d.permissions,e)&&(t[e]=!0)}),e(t)}).catch(function(e){n(e)});a.forEach(function(e){t[e]=!0}),e(t)})},isAgent:p,isAdmin:g,isLoggedIn:function(){return!!e()},isTelephone:function(){return"telephone"===d.role},isUser:v,login:function(e){return o(function(n,t){r.auth.local(e).$promise.then(function(e){return i.put("motion.token",e.token),r.user.get({id:e.id}).$promise}).then(function(e){(d=e).lastLoginAt=moment().format("YYYY-MM-DD HH:mm:ss"),b("LOCAL_LOGIN")}).then(function(){if(p()&&1===d.showWebBar&&d.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 p()&&0!==d.showWebBar?c(e):g()||v()?m(!0):void 0}).then(function(e){d=_.assign(d,e),n()}).catch(function(e){t(e)})})},logout:function(t){return o(function(e,n){t?(u(),e()):o.resolve().then(function(){return p()&&0!==d.showWebBar?o(function(e,n){r.user.logout({id:d.id,device:"web"}).$promise.then(function(){e()}).catch(function(e){n(e)})}):g()||v()?m(!1):void 0}).then(function(){u(),e()}).catch(function(e){n(e)})})},parseCrudPermissions:function(e){return g()?{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:c,reloadPermissions:f,removeCookies:u,retrieveUser:function(){return o(function(n,t){r.user.whoami().$promise.then(function(n){return"user"===n.role?h(n.userProfileId).then(function(e){return n.permissions=e,n}):n}).then(function(e){n(d=e)}).catch(function(e){t(e)})})},setCurrentUser:function(e){d=_.merge(d,e)},getAuthenticationType:function(){return n.localStorage["motion.authenticationtype"]||"NONE"},loginSSO:function(e){return b("SSO_LOGIN"),"/api/auth/"+e}};function e(){return i.get("motion.token")}function c(e){return o(function(n,t){r.user.login({id:d.id,device:"web",intrf:e}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}function m(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:d.id},e).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}function u(){i.remove("motion.token"),d&&(n.localStorage.removeItem("motion.user:"+d.id),n.localStorage.removeItem("motion.authenticationtype"),d=null)}function p(){return"agent"===d.role}function g(){return"admin"===d.role}function v(){return"user"===d.role}function t(e){return!!d&&_.includes(d.permissions,e)}function h(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 f(){return o(function(n,t){h(d.userProfileId).then(function(e){d.permissions=e,n()}).catch(function(e){t(e)})})}function b(e){n.localStorage["motion.authenticationtype"]=e}}e.$inject=["$mdDialog","$cookies","$q","$window","$document","api","msNavigationService"],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";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,a){n.debugEnabled(!0),e.config({tabindex:!1}),a.config({disableCustomScrollbars:!1,disableCustomScrollbarsOnMobile:!0,disableMdInkRippleOnMobile:!0}),t.config({wheelPropagation:!0})}e.$inject=["$ariaProvider","$logProvider","msScrollConfigProvider","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(a,i,s,o){var r=this;function n(){var a=r.selectedField.options&&!_.isEmpty(r.selectedField.options.extraOperators),i=r.selectedField.options&&!_.isEmpty(r.selectedField.options.excludedOperators);r.availableOperators=_.filter(r.operators,function(n){var e=!n.applyTo||_.includes(n.applyTo,r.selectedField.type);n.isExtra=a&&_.some(r.selectedField.options.extraOperators,function(e){return e===n.type});var t=_.includes(n.excludeFrom,r.selectedField.type)||i&&_.includes(r.selectedField.options.excludedOperators,n.type);if((e||n.isExtra)&&!t)return n})}function t(){!r.value||_.isArray(r.value)&&_.isEmpty(r.value)?r.isValidCondition=!1:r.selectedOperator&&"$between"===r.selectedOperator.type?r.isValidCondition=!(!r.endRangeValue||!r.isValidRange):r.isValidCondition=!0}function e(){"number"===r.selectedField.type?_.isNumber(r.endRangeValue)?r.isValidRange=Number(r.endRangeValue)>Number(r.value):r.isValidRange=!0:"date"===r.selectedField.type&&(r.maxDateRange=moment(r.endRangeValue).subtract(1,"day"),r.isValidRange=!0),t()}function l(){var e=c();r.options.conditions.push(e),u()}function d(){var e=c(),n=_.findIndex(r.options.conditions,"style");r.options.conditions.splice(n,1,e),u(),r.pendingCondition.style=null,r.pendingCondition=void 0}function c(){return{name:r.selectedField.name,operator:a.instant("DASHBOARDS."+r.selectedOperator.translate),value:r.value,endValue:r.endRangeValue,displayValue:m(r.value),displayEndValue:m(r.endRangeValue),query:{column:r.selectedField.column,operator:r.selectedOperator.type,value:function(){var e,n=r.value,t=r.endRangeValue;switch(r.selectedField.type){case"date":var a=moment(n).utcOffset(0,!0).format("YYYY-MM-DD");if("$between"===r.selectedOperator.type){var i=moment(t).utcOffset(0,!0).format("YYYY-MM-DD");e=[a,i]}else e=a;break;case"number":e="$between"===r.selectedOperator.type?[n,t]:n;break;case"multiselect":var s=r.selectedField.options.field||"id";e=_.map(n,s);break;case"select":e=n.id;break;case"autocomplete":e=r.selectedOperator.isExtra?n:n.id;break;default:e=n}return e}()},disabled:!1}}function m(e){var n;if(e){switch(r.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"===r.selectedOperator.type?t.join(" or "):t.join(" and ");break;case"select":n=e.name;break;case"autocomplete":n=r.selectedOperator.isExtra?e:e.displayValue;break;default:n=e}return n}}function u(){r.value=null,r.endRangeValue=null,r.minDateRange=null,r.maxDateRange=null,r.isValidCondition=!1}r.operators=r.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"]}],r.addCondition=l,r.editCondition=function(e){r.pendingCondition=e,r.pendingCondition.style="md-amber-200-bg",r.selectedField=_.find(r.options.fields,["name",r.pendingCondition.name]),n(),r.selectedOperator=_.find(r.availableOperators,["type",r.pendingCondition.query.operator]),"date"===r.selectedField.type&&"string"==typeof r.pendingCondition.value?(r.value=new Date(r.pendingCondition.value),r.minDateRange=moment(r.value).add(1,"day"),r.endRangeValue=r.pendingCondition.endValue?new Date(r.pendingCondition.endValue):void 0):(r.value=r.pendingCondition.value,r.endRangeValue=r.pendingCondition.endValue);r.isValidRange=!0,r.isValidCondition=!0},r.updateCondition=d,r.cancelUpdateCondition=function(){r.pendingCondition.style=null,r.pendingCondition=void 0},r.setConditionStatus=function(e){e.style=e.disabled?void 0:"chip-disabled",e.disabled=!e.disabled},r.removeCondition=function(){_.isEmpty(r.options.conditions)&&r.clearFilter()},r.getValues=function(){var n=angular.copy(r.selectedField.options.route);if("autocomplete"===r.selectedField.type)for(var e=0;e<Object.keys(n.params).length;e++){var t=Object.keys(n.params)[e];"@autocomplete"===n.params[t]&&(n.params[t]=r.searchText)}{if(!r.selectedField.values)return s[n.model][n.action](n.params).$promise.then(function(e){if("autocomplete"!==r.selectedField.type)return r.selectedField.values=e.rows;var n=r.searchText?_.filter(e.rows,function(e){e.displayValue="";for(var n=0;n<r.selectedField.options.searchFields.length;n++){var t=r.selectedField.options.searchFields[n],a=e[t]||"";e.displayValue+=a+" "}return _.trimEnd(e.displayValue),_.includes(e.displayValue.toLowerCase(),r.searchText.toLowerCase())}):[];return i.when(n)}).catch(function(e){o.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()})});r.selectedField.values.forEach(function(e){e.translate&&(e.name=a.instant(e.translate))})}},r.onFieldChange=function(){r.value=void 0,r.endRangeValue=void 0,r.searchText=void 0,r.isValidCondition=!1,n(),r.autoSelectOperator=1===r.availableOperators.length,r.autoSelectOperator||(r.selectedOperator=void 0)},r.onOperatorChange=function(e){r.isValidRange=!0,r.selectedOperator&&(e?e.applyTo?0<_.difference(r.selectedOperator.applyTo,e.applyTo).length&&(r.value=null):r.selectedOperator.applyTo&&(r.value=null):r.value=null,"between"!=r.selectedOperator.type&&(r.endRangeValue=null),r.selectedField.options&&!_.isEmpty(r.selectedField.options.extraOperators)&&(r.selectedOperator.isExtra=_.some(r.selectedField.options.extraOperators,function(e){return e===r.selectedOperator.type})));t()},r.onValueChange=function(){r.selectedOperator&&"$between"===r.selectedOperator.type?"number"===r.selectedField.type?e():"date"===r.selectedField.type&&(r.minDateRange=moment(r.value).add(1,"day"),t()):t()},r.checkRange=e,r.handleKeyboardAction=function(){r.pendingCondition?d():l()}}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";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(u,t,p,e,a,i,n,g,s,v,h,f,b,o,A){var E=this,r=["ringingId","speakerId","microphoneId","ringingVolume","speakerVolume","microphoneVolume","ringingMute","speakerMute","microphoneMute"],l=JSON.parse(n.localStorage.getItem("motion2.user:"+E.conf.id))||{webrtc:{ringingVolume:.5,speakerVolume:.5,microphoneVolume:1,ringingMute:!1,speakerMute:!1,microphoneMute:!1}};function d(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){console.log(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:g.instant("TOOLBAR.WARNING"),msg:g.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,R("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:g.instant("TOOLBAR.WARNING"),msg:g.instant("TOOLBAR.WEBRTC_SPEAKER_NOT_AVAILABLE"),clickToClose:!0,showClose:!0,shake:!1,timeout:!1,position:"bottom-right"});return R("speaker",!1)}).then(function(){return R("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)&&(console.log("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):console.error("Unable to find a valid call to answer",e):console.error("Unable to answer the call",e)}.bind(this)),jabra.addEventListener("mute",function(){R("microphone",E.conf.microphoneMute=!0)}.bind(this)),jabra.addEventListener("unmute",function(){E.conf.microphoneMute=!1,R("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(){new Promise(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){console.warn("Error initializing Jabra integration",e)})}).catch(function(e){console.error("Unable to init media devices",e),"NotFoundError"===e.name&&v.warning({title:g.instant("TOOLBAR.WARNING"),msg:g.instant("TOOLBAR.WEBRTC_AUDIO_DEVICES_NOT_AVAILABLE"),clickToClose:!0,showClose:!0,shake:!1,timeout:!1,position:"bottom-right"})}).finally(function(){E.initDeviceInProgress=!1,y(),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:g.instant("TOOLBAR.WARNING"),msg:g.instant("TOOLBAR.WEBRTC_LICENSE_NOT_ENABELD"),clickToClose:!0,showClose:!0,shake:!1,timeout:!1,position:"bottom-right"})}.bind(this))})}function y(){l.webrtc=_.pick(E.conf,r),n.localStorage.setItem("motion2.user:"+E.conf.id,JSON.stringify(l))}function S(e,n,t){console.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 T(e){console.debug("answer -> session",e),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 I(e,n){console.debug("terminate -> session",e),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 console.debug("getVoiceChannels -> session",t),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 O(e){console.debug("onAddstream -> data",e),this.remotePlayer.srcObject=e.stream,this.remotePlayer.play()}function w(){E.canGoInConference=!1,E.isInConference=!1,E.currentconferenceSessions=[]}function R(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&&y()}).catch(function(e){console.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&&y()}).catch(function(e){console.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&&y();break;default:console.log("unknown device")}}function c(){E.target="",document.getElementById("ms-target").blur(),document.getElementById("ms-target").value="",u.$broadcast("angucomplete-alt:clearInput","ms-target-wrap")}function m(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 x(){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){console.log(e)})}}function N(e,n,t,a){return console.debug("onReferCallback -> session, textContent, position, delay",e,n,t,a),function(){i.show(i.simple().textContent(n).position(t).hideDelay(a)),I(e)}}function D(n){return console.debug("findSessionBySessionId -> sessionId, vm_pb.sessions",n,E.sessions),_.find(E.sessions,function(e){return e.call_id==n})}function P(e,n){return console.debug("callCallback -> url, params",e,n),s({url:e,method:"GET",params:n})}e(function(){},999),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(l.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:p(function(){E.showDialpad=!1})}}),E.$onInit=function(){d(!1),navigator.mediaDevices.ondevicechange=function(){E.initDeviceInProgress||(E.initDeviceInProgress=!0,jabra&&E.isJabraInitialized?jabra.shutdown().then(function(){E.isJabraInitialized=!1,d(!(E.isJabraEnabled=!1))}).catch(function(e){console.error("Unable to shutdown Jabra library",e)}):d(!0))};var e=[h.network.get({type:"turn",nolimit:!0}).$promise,h.network.get({type:"stun",nolimit:!0}).$promise];Promise.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){console.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,S(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();if(c.voicePause&&c.phoneBarDnd||E.originateInProgress)r=!1;else if(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){console.debug("getNotification -> session",n);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(){T(n)},function(){I(n)},E.conf.autoAnswer).then(function(e){n.notification=e}).catch(function(e){console.error("Error creating notification for incoming call",e)})}(e.session),S(e.session.user,!0),E.isJabraEnabled&&jabra.ring(),E.conf.autoAnswer&&p(function(){o.isInProgress()&&(o.autoAnswer=!0,T(o))},E.conf.autoAnswerDelay?1e3*E.conf.autoAnswerDelay:0),console.debug("xAnswerMode",l),console.debug("xAnswerAfterSec",d),"auto"==l.toLowerCase()){var m=0==d?500:1e3*d;console.debug("auto answer enabled after:"+m+" ms"),p(function(){o.isInProgress()&&(o.autoAnswer=!0,T(o))},m)}}r?(o.call_id=e.request.call_id,n&&P(E.callbackQueue[o.call_id]=n,{call_id:o.call_id}).then(function(){console.log('callbackurl:"'+n+'" called successfully')}).catch(function(e){console.log('fail callbackurl:"'+n+'" err:',e)}),o.connection&&(o.connection.onaddstream=O.bind(this)),o.iceCandidateTimeout=null,o.on("progress",function(e,n){console.debug("onProgress -> session, data",e,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){console.log(e.message)})),C(e).then(function(){var n=E.callbackQueue[e.call_id];n&&P(n,{uniqueid:e.uniqueid,call_id:e.call_id,number_called:e.user}).then(function(){console.log('callbackurl:"'+n+'" called successfully')}).catch(function(e){console.log('fail callbackurl:"'+n+'" err:',e)}).finally(function(){delete E.callbackQueue[e.call_id]})}).catch(function(e){console.error("Unable to retrieve voice channels",e)})}.bind(this,o)),o.on("confirmed",function(e,n){console.debug("onConfirmed -> session, data",e,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=O.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){console.log("Unable to play autoAnswer notification",e)})),E.canGoInConference=2==E.sessions.length,C(e).catch(function(e){console.error("Unable to retrieve voice channels",e)})}.bind(this,o)),o.on("hold",function(e,n){console.debug("onHold -> session, data",e,n),"local"===n.originator&&(e.localHold=!0)}.bind(this,o)),o.on("unhold",function(e,n){console.debug("onUnhold -> session, data",e,n),"local"===n.originator&&(e.localHold=!1)}.bind(this,o)),o.on("ended",function(e,n){if(console.debug("onEnded -> session, data",e,n),E.isInConference&&_.includes(E.currentConferenceSessions,e.id)&&(w(),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()})})}.bind(this,o)),o.on("failed",function(e,n){if(console.debug("onFailed -> session, data",e,n),this.soundPlayer.pause(),this.soundPlayer.loop=null,e.notification&&e.notification.close(),E.isInConference&&_.includes(E.currentConferenceSessions,e.id)&&w(),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){console.debug("onIcecandidate -> session, data",e,n),null!==e.iceCandidateTimeout&&clearTimeout(e.iceCandidateTimeout),e.iceCandidateTimeout=setTimeout(n.ready,1e3)}.bind(this,o)),E.sessions.push(o),p(function(){u.$apply(),console.debug("onNewRTCSession -> vm_pb.sessions",E.sessions)})):I(o,486)}.bind(this)),o.on("webbar:originate",function(e){console.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)),o.on("webbar:hangup",function(e){console.debug("hangupHook -> payload",e);var n=E.sessions;if(e.sessionId&&((n=[]).push(D(e.sessionId)),0==n.length))console.warn("call with session Id "+e.sessionId+" not found");else for(var t=0;t<n.length;t++){var a=n[t];console.log("hangupHook -> sessionToHangup",a),E.terminate(a)}}.bind(this)),o.on("webbar:answer",function(e){var n;console.debug("answerHook -> payload",e),n=e.sessionId?D(e.sessionId):_.find(E.sessions,function(e){return e.incoming&&!e.confirmed}),e.sessionId&&!n&&console.warn("call with session Id "+e.sessionId+" not found"),n&&E.answer(n)}.bind(this)),o.on("webbar:hold",function(e){console.debug("holdHook -> payload",e);var n=E.sessions;if(e.sessionId&&((n=[]).push(D(e.sessionId)),0==n.length))console.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)),o.on("webbar:unhold",function(e){if(console.debug("holdHook -> payload",e),e.sessionId){var n=D(e.sessionId);n?E.unhold(n):console.warn("call with session Id "+e.sessionId+" not found")}else console.error("sessionId required")}.bind(this)),o.on("webbar:transfer",function(e){if(console.debug("transferHook -> payload",e),e.sessionId)if(e.transferNumber){var n=D(e.sessionId);n?n.refer(e.transferNumber,{eventHandlers:{requestSucceeded:N(n,"requestSucceeded","top right",3e3),requestFailed:N(n,"requestFailed","top right",3e3)}}):console.warn("call with session Id "+e.sessionId+" not found")}else console.error("transferNumber required");else console.error("sessionId required")}.bind(this)),o.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,u.$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){console.log(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 m(e=(e=e.replace(/\(/g,"")).replace(/\)/g,"")).then(function(e){e&&E.ua.call(e,E.sessionConf)}).then(function(){c()})}},E.hold=function(e){console.debug("hold -> session",e),e.hold({useUpdate:!1}),E.isJabraEnabled&&(jabra.hold(),jabra.onHook())},E.refer=function(n){console.debug("refer -> session",n);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 m(e)}).then(function(e){n.refer(e,{eventHandlers:{requestSucceeded:N(n,"requestSucceeded","top right",3e3),requestFailed:N(n,"requestFailed","top right",3e3)}})})},E.record=function(e){console.debug("record -> session",e),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){console.debug("unhold -> session",e),e.unhold({useUpdate:!1}),E.putOtherCallsOnHold(e),E.isJabraEnabled&&(jabra.offHook(),jabra.resume())},E.answer=T,E.terminate=I,E.selectSession=function(e){console.debug("selectSession -> session",e),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){console.debug("referAttended -> session",e),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=R,E.putOtherCallsOnHold=function(e){if(console.debug("putOtherCallsOnHold -> session",e),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,u.$broadcast("angucomplete-alt:changeInput","ms-target-wrap",E.target)):E.target?u.$broadcast("angucomplete-alt:changeInput","ms-target-wrap",E.target):c():c()},E.targetSelected=function(e){e&&(E.target=e.originalObject.target,E.call(),c())},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(){x()},1e3)},!1);var a=E.sessions[1].connection.getSenders()[0],i=E.sessions[1].connection.getReceivers()[0];i.track.addEventListener("unmute",function(){setTimeout(function(){x()},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){console.log(e)})})},E.patchConference=x,u.$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}}).then(function(e){e&&(E.conf=e,E.initDeviceInProgress||(E.initDeviceInProgress=!0,jabra&&E.isJabraInitialized?jabra.shutdown().then(function(){E.isJabraInitialized=!1,d(E.isJabraEnabled=!1)}).catch(function(e){console.error("Unable to shutdown Jabra library",e)}):d(!1)))})}),u.$on("webrtc::logout",function(){E.ua.stop(),jabra&&E.isJabraInitialized&&jabra.shutdown(),navigator.mediaDevices.ondevicechange=function(){}}),u.$on("webrtc::call",function(e,n){console.debug("onRemoteCall -> evt, data",e,n),n.target&&(E.target=n.target,E.call())}),u.$on("webrtc::transfer",function(e,n){if(console.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 m(n.target).then(function(e){e&&E.sessions[t].refer(e,{eventHandlers:{requestSucceeded:N(E.sessions[t],"requestSucceeded","top right",3e3),requestFailed:N(E.sessions[t],"requestFailed","top right",3e3)}})})}),u.$on("$destroy",function(){console.debug("$destroy event fired"),o.removeAllListeners("webbar:originate"),o.removeAllListeners("webbar:hangup"),o.removeAllListeners("webbar:answer"),o.removeAllListeners("webbar:hold"),o.removeAllListeners("webbar:unhold"),o.removeAllListeners("webbar:transfer"),o.removeAllListeners("webbar:stopmonitors")})}e.$inject=["$scope","$document","$timeout","$interval","$mdDialog","$mdToast","$window","$translate","$http","toasty","api","motNotification","Auth","socket","privacyManager"],angular.module("app.core").controller("MsPhonebarController",e).directive("msPhonebar",function(){return{restrict:"E",scope:{conf:"=",sessions:"="},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){var t=this;function a(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=a(n,"audiooutput","ringingId"),s.speakerId=a(n,"audiooutput","speakerId"),s.microphoneId=a(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,t.conf=angular.copy(s),t.devices=n,t.saveSettings=function(){e.hide(t.conf)},t.closeDialog=function(){e.hide()},t.isCompatibleBrowser=function(){return"chrome"===t.conf.browserName.toLowerCase()||"opera"===t.conf.browserName.toLowerCase()||"safari"===t.conf.browserName.toLowerCase()}}e.$inject=["$mdDialog","conf","devices"],angular.module("app.toolbar").controller("SettingsController",e)}(),function(){"use strict";function e(t,a){var i=this;function s(e){var n=e.key,t={param:i.query[n],resources:e.options,placeholder:e.placeholder,ngValue:e.ngValue};a.setPlaceholder(t).then(function(e){i.placeholders[n]=e})}i.pickerModels={},i.placeholders={},i.localizationMap=t.localizationMap,i.onMultiselectInit=function(e){s(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=function(e,n){n&&(s(e),i.search())},i.onDateRangeSelection=function(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()},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]]:[],s(e),i.search()},i.selectAll=function(e){var n=e.key,t=e.ngValue||"id";i.query[n]=_.map(e.options,t),s(e),i.search()}}function n(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}n.$inject=["$filter","dateFilterLocalizationFactory"],e.$inject=["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"}}).factory("dateRangeManager",n)}(),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(s,o,n,t){return{restrict:"AE",compile:function(e){if(!(t.getConfig("disableCustomScrollbars")||t.getConfig("disableCustomScrollbarsOnMobile")&&n.isMobile()))return e.addClass("ms-scroll"),function(e,n,t){var a={};function i(){PerfectScrollbar.update(n[0])}t.msScroll&&(a=e.$eval(t.msScroll)),a=angular.extend({},o.getConfig(),a),s(function(){PerfectScrollbar.initialize(n[0],a)},0),n.on("mouseenter",i),e.$watch(function(){return n.prop("scrollHeight")},function(e,n){angular.isUndefined(e)||angular.equals(e,n)||i()}),e.$watch(function(){return n.prop("scrollWidth")},function(e,n){angular.isUndefined(e)||angular.equals(e,n)||i()}),e.$on("$destroy",function(){n.off("mouseenter"),PerfectScrollbar.destroy(n[0])})}}}}e.$inject=["$timeout","msScrollConfig","msUtils","motionConfig"],angular.module("app.core").provider("msScrollConfig",function(){var n={wheelSpeed:1,wheelPropagation:!1,swipePropagation:!0,minScrollbarLength:null,maxScrollbarLength:null,useBothWheelAxes:!1,useKeyboard:!0,suppressScrollX:!1,suppressScrollY:!1,scrollXMarginOffset:0,scrollYMarginOffset:0,stopPropagationOnClick:!0};this.config=function(e){n=angular.extend({},n,e)},this.$get=function(){var e={getConfig:function(){return n}};return e}}).directive("msScroll",e)}(),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 animate-rotate"></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(a,e,n,i,t){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(),a.$digest()},r.interval)}function l(e){var n=(e||moment()).utcOffset(a.serverDateOffset).format("YYYY-MM-DD HH:mm:ss");return moment(n)}function o(){n(function(n,t){try{if(a.serverDateOffset)return void n(l());i.setting.getDate().$promise.then(function(e){a.serverDateOffset=e.offset,n(moment(e.now))})}catch(e){t(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){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.setting.getDate",msg:e.data?JSON.stringify(e.data.message):e.toString()})})}o(),a.$watch("vm.startTime",function(e,n){angular.isUndefined(e)||0!==e.length&&(angular.equals(e,n)||o())}),a.$on("timer-start",function(){r.startTime=void 0,o()}),e.bind("$destroy",function(){r.timeoutId&&clearTimeout(r.timeoutId)})}e.$inject=["$scope","$element","$q","api","toasty"],angular.module("app.core").directive("timer",function(){return{restrict:"EA",replace:!1,scope:{startTime:"=?",interval:"=?"},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:"="},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"]}]}],templateUrl:"app/core/directives/ms-timezone/ms-timezone.html"}})}(),function(){"use strict";angular.module("app.core").controller("MsWidgetEngineCounterController",function(){var a=this;a.filter=[],a.filtered=!1,a.fontSize=20,a.getCount=function(e){var n=0;if(e){a.fontSize=e.attrs[2]&&e.attrs[2].value?parseInt(e.attrs[2].value)-parseInt(e.attrs[2].value)%2:20,e.attrs[1].value&&e.attrs[1].value.length?(a.filtered=!0,a.filter=_.intersection(e.voiceQueuesSelected,e.attrs[1].value)):(a.filtered=!1,a.filter=e.voiceQueuesSelected);for(var t=0;t<e.voiceQueues.rows.length;t+=1)_.includes(a.filter,e.voiceQueues.rows[t].id)&&(n+=e.voiceQueues.rows[t][e.attrs[0].value]?parseInt(e.voiceQueues.rows[t][e.attrs[0].value]):0)}return n}})}(),function(){"use strict";function e(o,e){var r=this;r.filter=[],r.filtered=!1,r.properties=[],r.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"}}]}}},r.getMultiBarChart=function(e){e&&(e.attrs&&function(e){r.properties=_.map(_.filter(e.attrs,function(e){return e.name&&0<=e.name.indexOf("attrSerie")&&e.value&&"null"!==e.value}),"value"),e.attrs[3].value&&e.attrs[3].value.length?(r.filtered=!0,r.filter=_.intersection(e.voiceQueuesSelected,e.attrs[3].value)):(r.filtered=!1,r.filter=e.voiceQueuesSelected);if(r.multiBarChart.series.length>r.properties.length){var n=r.multiBarChart.series.length-r.properties.length;r.multiBarChart.series.splice(0,n),r.multiBarChart.data.splice(0,n)}for(var t=0;t<r.properties.length;t+=1){if(r.multiBarChart.series[t]=o.instant("TOOLS."+r.properties[t].toUpperCase()),_.isNil(r.multiBarChart.data[t])&&(r.multiBarChart.data[t]=[]),r.multiBarChart.labels.length>r.filter.length){var a=r.multiBarChart.labels.length-r.filter.length;r.multiBarChart.labels.splice(0,a),r.multiBarChart.data[t].splice(0,a)}for(var i=0,s=0;i<e.voiceQueues.rows.length;i+=1)_.includes(r.filter,e.voiceQueues.rows[i].id)&&(r.multiBarChart.labels[s]=e.voiceQueues.rows[i].name,r.multiBarChart.data[t][s]=e.voiceQueues.rows[i][r.properties[t]]?parseInt(e.voiceQueues.rows[i][r.properties[t]]):0,s+=1)}}(e),e.foreground&&function(e){r.multiBarChart.options.legend.fontColor=e.foreground;for(var n=0;n<r.multiBarChart.options.scales.xAxes.length;n+=1)r.multiBarChart.options.scales.xAxes[n].ticks.fontColor=e.foreground;for(var t=0;t<r.multiBarChart.options.scales.yAxes.length;t+=1)r.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){o.properties=_.map(_.filter(e.attrs,function(e){return e.name&&0<=e.name.indexOf("attrSerie")&&e.value&&"null"!==e.value}),"value"),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){o.pieChart.labels[t]=s.instant("TOOLS."+o.properties[t].toUpperCase());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(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 Promise.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(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(i){function s(e,n){var t=i.localStorage.getItem(e),a=t?JSON.parse(t):{};return n?a[n]:a}function o(e,n){return i.localStorage.setItem(e,JSON.stringify(n))}return{get:s,set:o,update:function(e,n,t){var a=s(e);t?a[t]=n:a=n;return o(e,a)}}}e.$inject=["$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(e,s){return{setPlaceholder:function(a){var i;return e(function(n,e){try{if(_.isEmpty(a.resources))i=s.instant("DASHBOARDS.NONE");else if(_.isEmpty(a.param))i=a.placeholder?s.instant(a.placeholder):s.instant("DASHBOARDS.CHOOSE");else if(a.param.length===a.resources.length)i=s.instant("DASHBOARDS.ALL");else{var t=a.ngValue||"id";i=_(a.resources).filter(function(e){return _.includes(a.param,e[t])}).map("name").value().join(", ")}n(i)}catch(e){console.log("QuickFilterManager::setPlaceholder",e),n(null)}})}}}e.$inject=["$q","$translate"],angular.module("app.core").factory("quickFilterManager",e)}(),function(){"use strict";angular.module("app.core").factory("settingsManager",function(){var n={};return{get:function(){return n},set:function(e){e&&(n=e.toJSON())}}})}(),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;if(n)return 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("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}},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()}}}}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){var t=this;t.currentUser=e.getCurrentUser(),t.cookieAlertHide=n.get("motion.cookieAlertHide:"+t.currentUser.id)||!1,t.cookieAlertOnClose=function(){n.put("motion.cookieAlertHide:"+t.currentUser.id,!0)}}e.$inject=["Auth","$cookies"],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"}}),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"},getSquareProjects:{isArray:!1,method:"get",url:r.baseUrl+"users/:id/square_projects"},addSquareProjects:{isArray:!0,method:"post",url:r.baseUrl+"users/:id/square_projects"},removeSquareProjects:{isArray:!1,method:"delete",url:r.baseUrl+"users/:id/square_projects"},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"},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"},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"},getOpenContacts:{isArray:!1,method:"get",url:r.baseUrl+"cm/hopper/opencontacts"}}),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.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"}},addUsers:{isArray:!0,method:"post",url:r.baseUrl+"square/projects/:id/users"},removeUsers:{isArray:!1,method:"delete",url:r.baseUrl+"square/projects/:id/users"},getUsers:{isArray:!1,method:"get",url:r.baseUrl+"square/projects/:id/users"}}),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"}}}),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"},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"}}}),r.realtime=e(r.baseUrl+"realtime",{},{getQueues:{isArray:!1,method:"get",url:r.baseUrl+"realtime/queues"}}),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("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){var r=this;r.progresslogin=!1,r.googleSsoEnabled=!1,r.login=function(){return r.progresslogin=!0,r.message="",s.login(r.form).then(function(){return n.go("app.dashboards.general")}).catch(function(e){r.message=e.data?e.data.message:e.message}).finally(function(){r.progresslogin=!1})},r.loginOauth=function(e){r.message="",t.location.href=s.loginSSO(e)},r.onInit=function(){{if(n.params.token&&n.params.userId)return s.removeCookies(),r.progresslogin=!0,e.put("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(){r.progresslogin=!1});s.isLoggedIn()&&n.go("app.dashboards.general")}r.googleSsoEnabled=o.googleSsoEnabled},r.onInit()}e.$inject=["$state","$window","$cookies","$timeout","api","Auth","setting"],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,_.pick(e.toJSON(),_.keys(n))),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,_.pick(e.toJSON(),_.keys(n))),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(n){var a={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(a,function(e,n){t.push({name:n,api:e})}),t},getColumns:function(e){return n[a[e]].describe().$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=angular.toJson(p.treeCustomInstance.jstree(!0).get_json("#"));d.analyticTreeReport.update({id:2,tree:t}).$promise.then(function(){c.rows[1]&&(c.rows[1].tree=t),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,_.pick(e.toJSON(),_.keys(n))),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,i,s,e,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=e,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){return r.user.addSquareProjects({id:i.getCurrentUser().id,ids:[e.id]}).$promise,e}).then(function(e){c.projects.unshift(e),s.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++)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.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),s.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++)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.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(){return r.squareProject.getUsers({id:c.project.id}).$promise}).then(function(e){for(var n=[],t=e.rows,a=0;a<t.length;a++)n.push(r.user.removeSquareProjects({id:i.getCurrentUser().id,ids:[c.project.id]}).$promise);return $q.all(n)}).then(function(){_.remove(c.projects,{id:c.project.id}),s.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,C,O,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(C,{id:e})&&0<e)return t.smsAccount.get({id:e,fields:"id,name"}).$promise.then(function(e){var n=e.toJSON();n.canSelect=!1,C.push(n),P.values.sms_account_id=U(C,"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(C,"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(O,{id:e})&&0<e)return t.pause.get({id:e,fields:"id,name"}).$promise.then(function(e){var n=e.toJSON();n.canSelect=!1,O.push(n),P.values.pause_id=U(O,"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(O,"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(C,"id","name"),pause_id:U(O,"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:"Amy",option:"Amy (English, British, Female)"},{value:"Astrid",option:"Astrid (Swedish, Female)"},{value:"Brian",option:"Brian (English, British, Male)"},{value:"Carla",option:"Carla (Italian, Female)"},{value:"Carmen",option:"Carmen (Romanian, Female)"},{value:"Celine",option:"Celine (French, Female)"},{value:"Chantal",option:"Chantal (French, Canadian, Female)"},{value:"Conchita",option:"Conchita (Spanish, Castilian, Female)"},{value:"Cristiano",option:"Cristiano (Portuguese, Male)"},{value:"Dora",option:"Dora (Icelandic, Female)"},{value:"Emma",option:"Emma (English, British, Female)"},{value:"Enrique",option:"Enrique (Spanish, Castilian, Male)"},{value:"Ewa",option:"Ewa (Polish, Female)"},{value:"Filiz",option:"Filiz (Turkish, Female)"},{value:"Geraint",option:"Geraint (English, Welsh, Male)"},{value:"Giorgio",option:"Giorgio (Italian, Male)"},{value:"Gwineth",option:"Gwineth (Welsh, Female)"},{value:"Hans",option:"Hans (German, Male)"},{value:"Ines",option:"Ines (Portuguese, Female)"},{value:"Ivy",option:"Ivy (English, US, Female)"},{value:"Jacek",option:"Jacek (Polish, Male)"},{value:"Jan",option:"Jan (Polish, Male)"},{value:"Joanna",option:"Joanna (English, US, Female)"},{value:"Joey",option:"Joey (English, US, Male)"},{value:"Justin",option:"Justin (English, US, Male)"},{value:"Karl",option:"Karl (Icelandic, Male)"},{value:"Kendra",option:"Kendra (English, US, Female)"},{value:"Kimberly",option:"Kimberly (English, US, Female)"},{value:"Liv",option:"Liv (Norwegian, Female)"},{value:"Lotte",option:"Lotte (Dutch, Female)"},{value:"Mads",option:"Mads (Danish, Male)"},{value:"Maja",option:"Maja (Polish, Female)"},{value:"Marlene",option:"Marlene (German, Female)"},{value:"Mathieu",option:"Mathieu (French, Male)"},{value:"Maxim",option:"Maxim (Russian, Male)"},{value:"Miguel",option:"Miguel (Spanish, US, Male)"},{value:"Mizuki",option:"Mizuki (Japanese, Female)"},{value:"Naja",option:"Naja (Danish, Female)"},{value:"Nicole",option:"Nicole (English, Austrialian, Female)"},{value:"Penelope",option:"Penelope (Spanish, US, Female)"},{value:"Raveena",option:"Raveena (English, Indian, Female)"},{value:"Ricardo",option:"Ricardo (Portuguese, Brazilian, Male)"},{value:"Ruben",option:"Ruben (Dutch, Male)"},{value:"Russell",option:"Russell (English, Austrialian, Male)"},{value:"Salli",option:"Salli (English, US, Female)"},{value:"Tatyana",option:"Tatyana (Russian, Female)"},{value:"Vitoria",option:"Vitoria (Portuguese, Brazilian, 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(e,t,a,n,i,s,o){var r=this;function l(){return a.squareProject.getUsers({id:r.project.id,fields:"id,name,fullname,internal",nolimit:!0,role:"user"}).$promise.then(function(e){return r.selectedItems=e.rows?_.map(e.rows,function(e){return e}):[],r.dualMultiselectOptions.selectedItems=r.selectedItems,a.user.get({fields:"id,fullname,name,internal",role:"user",nolimit:!0}).$promise}).then(function(e){r.items=e.rows?_.map(e.rows,function(e){return e}):[],r.dualMultiselectOptions.items=_.differenceBy(r.items,r.selectedItems,"id")}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETUSERS",msg:e.status?JSON.stringify(e.data):e.toString()})})}r.project=n,r.penalty=0,r.items=[],r.selectedItems=[],r.closeDialog=function(){e.hide()},r.dualMultiselectOptions={items:[],selectedItems:[],orderBy:"name",line1:"fullname",line2:["name","internal"],line3:"penalty",labelAll:s.instant("CALLYSQUARE.ALL_USERS"),labelSelected:s.instant("CALLYSQUARE.SELECTED_USERS"),transferCallback:function(e,n){a.squareProject[n?"removeUsers":"addUsers"]({id:r.project.id,ids:_.map(e,"id"),penalty:r.penalty||0}).$promise.then(function(){t.success({title:"Project properly "+(n?"removed":"added"),msg:"Project has been "+(n?"removed":"added")+"!"}),n||l()}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:squareProjects.ADDUSERS",msg:e.status?JSON.stringify(e.data):e.toString()})})}},l()}e.$inject=["$mdDialog","toasty","api","project","projects","$translate","Auth"],angular.module("app.callysquare").controller("ProjectspermissionaddController",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,_.pick(e.toJSON(),_.keys(n))),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,_.pick(e.toJSON(),_.keys(n))),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,backgroundColor,fontSize,header_shape,showAgentAvatar,showCustomerAvatar,alignment,verticalAlignment,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,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,_.pick(e.toJSON(),_.keys(n))),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"]),{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(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,_.pick(e.toJSON(),_.keys(n))),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){m.chatWebsiteInteractions=e||{count:0,rows:[]};for(var n=0;n<m.chatWebsiteInteractions.rows.length;n+=1){var t=m.chatWebsiteInteractions.rows[n];v(t),t.Owner.name=h(t)}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=d.chatInteraction.get(m.query,u).$promise}function g(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||p(),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 v(e){e.Contact?e.contactName=(e.Contact.firstName||"")+" "+(e.Contact.lastName||""):e.contactName=i.instant("DASHBOARDS.UNKNOWN")}function h(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"]}}]},d.tag.get().$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(){g(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=u,m.getChatWebsiteInteractions=p,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,p()}}).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=g,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){g(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,_.pick(e.toJSON(),_.keys(n))),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,o,n,t,a,i,s,r,l,d,c,m,u,p,g,v,h,f){var b=this,A=["userpic","online","lastLoginAt","lastPauseAt","pauseType","lastPauseAt","internal","address","chatPause","openchannelPause","mailPause","smsPause","whatsappPause","faxPause","voicePause","chatCapacity","openchannelCapacity","mailCapacity","smsCapacity","whatsappCapacity","faxCapacity","chatCurrentCapacity","openchannelCurrentCapacity","mailCurrentCapacity","smsCurrentCapacity","whatsappCurrentCapacity","faxCurrentCapacity","chatStatus","openchannelStatus","mailStatus","smsStatus","whatsappStatus","faxStatus","voiceStatus","chatStatusTime","openchannelStatusTime","mailStatusTime","smsStatusTime","whatsappStatusTime","faxStatusTime","voiceStatusTime","queue","destconnectedlinenum","screenrecording","phoneBarEnableScreenRecordingByAgent","phoneBarEnableAutomaticScreenRecording"],E=["chatPause","openchannelPause","mailPause","smsPause","whatsappPause","faxPause","voicePause","online"];for(var y in b.currentUser=v.getCurrentUser(),b.availableStates=["ringing","inuse","busy","onhold","not_inuse"],b.pauses=s||{count:0,rows:[]},b.license=h,b.userProfile=p,b.userProfileSection=g&&1==g.count?g.rows[0]:null,b.crudPermissions=v.parseCrudPermissions(b.userProfileSection?b.userProfileSection.crudPermissions:null),b.agents=r?_.keyBy(r.rows?r.rows:[],"id"):{},b.rpcAgents=l?_.keyBy(l.rows?l.rows:[],"id"):{},b.paginatedAgents={},b.load=!1,b.order=[],b.agentInternal={},b.agents)b.agents.hasOwnProperty(y)&&(b.agents[y].init=!0);b.query={limit:10,page:1,order:"fullname",globalStatusFilter:"",pauseTypeFilter:""},b.logout=function(e,n){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"}),b.agents[e.id]&&(b.agents[e.id].online=!1),b.rpcAgents[e.id]&&(b.rpcAgents[e.id].online=!1),T()}).catch(function(e){m.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.staff.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},b.queueAdd=function(e,n){t.show({controller:"AgentqueueaddController",controllerAs:"vm",templateUrl:"app/main/apps/staff/views/agents/edit/queueadd/queueadd.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{agent:e,agents:[],channel:"chat",direction:"inbound",crudPermissions:b.crudPermissions}})},b.pause=function(n,e){return d.user.pause({id:n.id,type:e}).$promise.then(function(e){b.agents[n.id]&&_.merge(b.agents[n.id],_.pick(e,A)),b.rpcAgents[n.id]&&_.merge(b.rpcAgents[n.id],_.pick(e,A)),w(b.agents[n.id])}).catch(function(e){m.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.staff.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},b.unPause=function(n){return d.user.unpause({id:n.id}).$promise.then(function(e){b.agents[n.id]&&_.merge(b.agents[n.id],_.pick(e,A)),b.rpcAgents[n.id]&&_.merge(b.rpcAgents[n.id],_.pick(e,A)),w(b.agents[n.id])}).catch(function(e){m.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.staff.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},b.showInfo=function(e){t.show(t.alert().clickOutsideToClose(!0).title("Legend").htmlContent("<div>TODO legend status + state</div>").ok("Ok").targetEvent(e))},b.getAgentStatus=O,b.getAgentGlobalStatus=w,b.isPause=I,b.checkPause=function(e){return"pause"===e},b.isPartialPause=function(e){return"*pause"===e},b.onSave=function(e){b.agents[e.id]&&(_.merge(b.agents[e.id],_.pick(_.omit(e,E),A)),_.merge(b.rpcAgents[e.id],_.pick(_.omit(e,E),A)),w(b.agents[e.id]))},b.onUpdate=function(e){b.agents[e.id]&&(_.merge(b.agents[e.id],_.pick(e,A)),_.merge(b.rpcAgents[e.id],_.pick(e,A)),e.lastPauseAt&&(b.agents[e.id].globalStatusTime=e.lastPauseAt,b.rpcAgents[e.id].globalStatusTime=e.lastPauseAt),w(b.agents[e.id]))},b.onInit=T,b.onConnect=function(e){b.agents[b.agentInternal[e.destaccountcode]]&&(_.merge(b.agents[b.agentInternal[e.destaccountcode]],_.pick(e,["queue","destconnectedlinenum","routealias"])),_.merge(b.rpcAgents[b.agentInternal[e.destaccountcode]],_.pick(e,["queue","destconnectedlinenum","routealias"])))},b.onComplete=function(e){b.agents[b.agentInternal[e.destaccountcode]]&&(b.agents[b.agentInternal[e.destaccountcode]]=_.omit(b.agents[b.agentInternal[e.destaccountcode]],["queue","destconnectedlinenum"]),b.rpcAgents[b.agentInternal[e.destaccountcode]]=_.omit(b.rpcAgents[b.agentInternal[e.destaccountcode]],["queue","destconnectedlinenum"]))},b.screenRecording=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:"api.user.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},c.on("user:save",b.onSave),c.on("user:update",b.onUpdate),c.on("user:agentconnect",b.onConnect),c.on("user:agentcomplete",b.onComplete),T();var S=f(function(){b.load&&(b.load=!1,T())},999);function T(e){b.load=!1;var n,t,a=o.defer();b.promise=a.promise,b.filteredAgents=[],b.order=[],_.forIn(b.agents,function(e,n){b.rpcAgents[n]&&_.merge(e,_.pick(_.omit(b.rpcAgents[n],E),A)),w(e),e.online?(b.filteredAgents.push(e),b.agentInternal[e.internal]=n):e.globalStatusTime=_.toNumber(moment().format("x"))}),b.query.globalStatusFilter&&_.remove(b.filteredAgents,function(e){return e.globalStatus!==b.query.globalStatusFilter}),b.query.pauseTypeFilter&&_.remove(b.filteredAgents,function(e){return e.pauseType!==b.query.pauseTypeFilter}),b.query.filter&&_.remove(b.filteredAgents,function(e){return e.fullname.toLowerCase().indexOf(b.query.filter.toLowerCase())<0}),b.filteredAgents=(n=b.filteredAgents,t=_.startsWith(b.query.order,"-")?"desc":"asc",_.orderBy(n,[b.query.order.replace("-","")],[t]));var i=(b.query.page-1)*b.query.limit;b.paginatedAgents=_.drop(b.filteredAgents,i).slice(0,b.query.limit);for(var s=0;s<b.paginatedAgents.length;s+=1)b.order.push(b.paginatedAgents[s].id);a.resolve(),b.load=!0}function I(e){return"pause"===e||"*pause"===e}function C(e){return"idle"===e||"unknown"===e||"unavailable"===e||"ringing"===e||_.isNil(e)}function O(e,n){return"voice"===n?"idle"!==e[n+"Status"]?e[n+"Status"]:e[n+"Pause"]?e[n+"Status"]="pause":"idle":e[n+"Pause"]?e[n+"Status"]="pause":e[n+"Status"]}function w(e){var n="unknown";n=_.every([O(e,"voice"),O(e,"chat"),O(e,"mail"),O(e,"openchannel"),O(e,"sms"),O(e,"whatsapp"),O(e,"fax")],I)?"pause":_.some([O(e,"voice"),O(e,"chat"),O(e,"mail"),O(e,"openchannel"),O(e,"sms"),O(e,"whatsapp"),O(e,"fax")],I)?"*pause":_.every([O(e,"voice"),O(e,"chat"),O(e,"mail"),O(e,"openchannel"),O(e,"sms"),O(e,"whatsapp"),O(e,"fax")],C)?"idle":"busy",e.globalStatus!==n&&(e.globalStatus=n,e.init?(e.init=!1,e.globalStatusTime=I(n)?_.toNumber(moment(e.lastPauseAt).format("x")):_.max([e.voiceStatusTime,e.chatStatusTime,e.mailStatusTime,e.smsStatusTime,e.whatsappStatusTime,e.openchannelStatusTime,e.faxStatusTime])):e.globalStatusTime=_.toNumber(moment().format("x")))}e.$on("$destroy",function(){c.removeAllListeners("user:save"),c.removeAllListeners("user:update"),c.removeAllListeners("user:agentconnect"),c.removeAllListeners("user:agentcomplete"),S&&(f.cancel(S),S=null)})}e.$inject=["$scope","$q","$timeout","$mdDialog","$document","$filter","pauses","agents","rpcAgents","api","socket","toasty","helperClasses","userProfile","userProfileSection","Auth","license","$interval"],angular.module("app.voice").controller("AgentsChatRealtimeController",e)}(),function(){"use strict";function e(e,t,a,n,i,s,o,r,l,d,c){var m=this,u=["loggedIn","available","waiting","paused"],p=n(function(){},999);m.currentUser=c.getCurrentUser(),m.queues=i,m.userProfileSection=d&&1==d.count?d.rows[0]:null,m.crudPermissions=c.parseCrudPermissions(m.userProfileSection?m.userProfileSection.crudPermissions:null),m.query={id:c.isUser()?m.currentUser.id:void 0,section:c.isUser()?"ChatQueues":void 0,channel:"chat",sort:"name",limit:10,page:1},m.getQueues=function(){m.query.offset=(m.query.page-1)*m.query.limit,s.realtime.getQueues(m.query).$promise.then(function(e){m.queues=e}).catch(function(e){console.error(e)})},m.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:m.queues.rows,license:null,setting:null,crudPermissions:m.crudPermissions}})},m.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:m.queues.rows,realtime:!1,crudPermissions:m.crudPermissions}})},o.on("chat_queue:save",function(e){var n=_.find(m.queues.rows,["id",e.id]);n&&_.merge(n,_.pick(e,u))}),o.on("userChatQueue:save",function(e){var n=_.find(m.queues.rows,["id",e.ChatQueueId]);n&&(n.loggedInDb++,n.agents.push({id:e.UserId}))}),o.on("userChatQueue:remove",function(e){var n=_.find(m.queues.rows,["id",e.ChatQueueId]);n&&(0<n.loggedInDb&&n.loggedInDb--,_.remove(n.agents,["id",e.UserId]))}),o.on("user:update",function(t){m.queues.rows.forEach(function(e){var n=_.find(e.agents,["id",t.id]);n&&(!1===t.online?(n.online=!1,e.loggedInDb-=1,n.paused?(n.paused=!1,e.paused-=1):e.available-=1):n.online?t.chatPause?(n.paused=!0,e.paused+=1,e.available-=1):!t.chatPause&&n.paused&&(n.paused=!1,e.paused-=1,e.available+=1):(n.online=!0,e.loggedInDb+=1,e.available+=1))})}),e.$on("$destroy",function(){o.removeAllListeners("chat_queue:save"),o.removeAllListeners("userChatQueue:remove"),o.removeAllListeners("userChatQueue:save"),o.removeAllListeners("user:update"),p&&n.cancel(p)})}e.$inject=["$scope","$mdDialog","$document","$interval","queues","api","socket","toasty","userProfile","userProfileSection","Auth"],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(n.disconnect(),n.connect(),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,_.pick(e.toJSON(),_.keys(n))),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(){C(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=C,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){C(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.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 C(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,a,e,n,i,s,o,r,l,d){var c=this;function m(){t.hide()}c.errors=[],c.title="CONTACTMANAGER.EDIT_CONTACT",c.crudPermissions=d,c.contact=angular.copy(s),c.contacts=e||{rows:[],count:0},c.lists=n||{rows:[],count:0},c.companies=i||{rows:[],count:0},c.customFields={rows:[],count:0},c.newContact=!1,c.contact?(delete c.contact.List,c.ListId=c.contact.ListId||void 0):(c.contact={ListId:o?parseInt(o,10):void 0,CompanyId:r?parseInt(r,10):void 0},c.title="CONTACTMANAGER.NEW_CONTACT",c.newContact=!0),c.addNewContact=function(){c.errors=[],l.cmContact.save(c.contact).$promise.then(function(e){c.contacts.unshift(e),a.success({title:"Contact properly created",msg:c.contact.name?c.contact.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.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()})})},c.saveContact=function(){c.errors=[],l.cmContact.update({id:c.contact.id},c.contact).$promise.then(function(e){var n=_.find(c.contacts,{id:e.id});n&&_.merge(n,e),a.success({title:"Contact properly saved!",msg:c.contact.name?c.contact.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.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()})})},c.deleteContact=function(e){c.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(){l.cmContact.delete({id:c.contact.id}).$promise.then(function(){_.remove(c.contacts,{id:c.contact.id}),a.success({title:"Contact properly deleted!",msg:c.contact.name?c.contact.name+" has been deleted!":""}),m()}).catch(function(e){console.error(e),c.errors=e.data.errors||[{message:e.toString(),type:"api.contact.delete"}]})},function(){})},c.closeDialog=m,c.getCustomFields=function(e){{if(e)return l.cmList.getCustomFields({id:e}).$promise.then(function(e){if(e){c.customFields=e;var n=_.map(c.customFields.rows,function(e){return"cf_"+e.id});l.cmContact.get({id:c.contact.id,attributes:n,raw:!0}).$promise.then(function(e){c.contact=_.merge(c.contact,e)})}}).catch(function(e){console.error(e)});c.customFields={rows:[],count:0}}},c.getDateFromString=function(e){return null===e?void 0:new Date(e)}}e.$inject=["$mdDialog","toasty","contacts","lists","companies","contact","ListId","CompanyId","api","crudPermissions"],angular.module("app.tools").controller("CreateOrEditContactDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s){var o=this;function r(){e.hide()}o.errors=[],o.title="CONTACTMANAGER.COPY_CONTACT",o.contact=angular.copy(t),o.lists=i||{rows:[],count:0},o.addNewContact=function(){o.errors=[],delete o.contact.id,o.contact.tags&&!o.contact.tags.length&&delete o.contact.tags;s.cmContact.save(o.contact).$promise.then(function(e){a.unshift(e),n.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(e,t,n,a,i,s,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 C(){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 O(){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.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=n.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")}).finally(function(){S.contact&&w()})},S.gotoContacts=function(){n.go("app.contactmanager.contacts",{},{reload:!0,notify:!0})},S.duplicateContact=function(e){i.show({controller:"DuplicateContactDialogController",controllerAs:"vm",templateUrl:"app/main/apps/contactmanager/views/contacts/duplicate/dialog.html",parent:angular.element(a.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}).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});i.show({controller:"CreateOrEditCompanyDialogController",controllerAs:"vm",templateUrl:"app/main/apps/contactmanager/views/companies/create/dialog.html",parent:angular.element(a.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=i.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 i.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=C,S.getHistories=O,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=i.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");i.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){i.show({controller:"CreateOrEditHopperVoiceQueueIdDialogController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/queueCampaigns/edit/hoppers/dialog.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{hopper:n,hoppers:S.hoppers.rows,license:null,setting:null,crudPermissions:S.crudPermissions}})},S.createOrEditIvrCampaignHopper=function(e,n){i.show({controller:"CreateOrEditHopperCampaignIdDialogController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/ivrCampaigns/edit/hoppers/dialog.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{hopper:n,hoppers:S.hoppers.rows,license:null,setting:null,crudPermissions:S.crudPermissions}})},S.getCustomerJourney=w,S.loadMoreJourney=function(){return s(function(e,n){var t=S.journey.length;return e(w(t))})};var R=!0,x=1;e.$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())}),e.$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),C())}),e.$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),O())})}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)}(),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}],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(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,_.pick(e.toJSON(),_.keys(n))),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,_.pick(e.toJSON(),_.keys(n))),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,_.pick(e.toJSON(),_.keys(n))),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){var d=this;d.currentUser=s.getCurrentUser(),d.userProfile=r,d.userProfileSection=l&&1==l.count?l.rows[0]:null,d.crudPermissions=s.parseCrudPermissions(d.userProfileSection?d.userProfileSection.crudPermissions:null),d.customDashboard={},d.voiceQueues=o&&o.count?o:{count:0,rows:[]},d.voiceQueuesSelected=o&&o.count?_.map(o.rows,"id"):[],d.interval=n(function(){},1e3),d.onChangeVoiceQueues=function(){for(var e=0;e<d.customDashboard.widgets.length;e+=1)d.customDashboard.widgets[e].voiceQueuesSelected=d.voiceQueuesSelected},d.goToEdit=function(){e.go("app.tools.customDashboards.edit",{id:d.customDashboard.id,tab:1})},i.onWithoutApply("voice_queue:save",function(e){var n=_.find(d.voiceQueues.rows,{id:e.id});n&&_.merge(n,_.pick(e,_.keys(n)))}),a.dashboard.get({id:e.params.id}).$promise.then(function(e){if(e)return d.customDashboard=e,d.customDashboard.widgets=[],d.customDashboard.preview=!0,d.customDashboard.draggable={enabled:!1},d.customDashboard.resizable={enabled:!1},a.dashboard.getItems({id:d.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=d.voiceQueues,e.rows[n].voiceQueuesSelected=d.voiceQueuesSelected,d.customDashboard.widgets.push(e.rows[n])}).catch(function(e){d.customDashboard=void 0}),t.$on("$destroy",function(){i.removeAllListeners("voice_queue:save"),d.interval&&n.cancel(d.interval)})}e.$inject=["$state","$interval","$scope","api","socket","Auth","voiceQueues","userProfile","userProfileSection"],angular.module("app.dashboards.custom").controller("DashboardCustomController",e)}(),function(){"use strict";function e(e,i,s,o,r,l,n,d,t,a,c,m,u,p,g,v,h,f,b){var A=this;function E(e){var n={};for(var t in A.tabs)A.tabs.hasOwnProperty(t)&&(n[t]=_.pick(A.tabs[t],["type","title","channel","icon","color","autoCreate","id","saved","badges","openedAt"]),_.isNil(A.tabs[t].contact)||(n[t].contact=_.pick(A.tabs[t].contact,["id","ListId"])),_.isNil(A.tabs[t].calls)||(n[t].calls=A.tabs[t].calls),A.tabs[t].interaction&&(n[t].interaction=_.pick(A.tabs[t].interaction,["id","OpenchannelAccountId","MailAccountId","ChatWebsiteId","FaxAccountId","SmsAccountId","WhatsappAccountId","closed","draft"])));var a=JSON.parse(s.localStorage.getItem("motion2.user:"+A.user.id));a?(a.tabs=n,a.currentTab=A.currentTab,a.autoClose=A.autoClose):a={tabs:n,currentTab:A.currentTab,autoClose:A.autoClose},s.localStorage.setItem("motion2.user:"+A.user.id,JSON.stringify(a)),e&&y(e)}function y(e){if(_.isNil(e)||e&&"interaction"===e.type){var n={id:A.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 A.tabs)A.tabs.hasOwnProperty(t)&&n.capacity.hasOwnProperty(A.tabs[t].channel)&&A.tabs[t].interaction&&!A.tabs[t].interaction.closed&&(n.capacity[A.tabs[t].channel]+=1,n.interaction[A.tabs[t].channel].push(A.tabs[t].interaction.id));if(!_.isEqual(A.agentCapacity,n.capacity))return A.agentCapacity=n.capacity,d.rpc.setAgentCapacity(n)}}function S(e){A.tabs[e.id]&&(!function(e){if(e.channel&&e.interaction)d.user["remove"+_.upperFirst(e.channel)+"Interactions"]({id:A.user.id,ids:[e.interaction.id]}).$promise.catch(function(e){console.error(e)})}(A.tabs[e.id]),delete A.tabs[e.id],A.currentTab=0,E(e))}function T(e){e.id=_.random(1e10),e.openedAt=(new Date).toISOString(),e.saved=!1,e.badges=0,A.tabs[e.id]=e,A.currentTab=e.id,E(e)}function I(n){return _.find(A.tabs,function(e){return"interaction"===e.type&&e.interaction&&e.interaction.id==n.interactionId&&e.channel==n.channel})}function C(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=A.user.privacyEnabled?b.mask(a):a):o.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)&&N(t)),n){var s=_.find(A.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 d.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];A.currentTab=s.id})}else{if(n.ListId)return d.disposition.get({ListId:n.ListId,nolimit:!0}).$promise.then(function(e){return i.dispositions=e,d.cmList.getCustomFields({id:n.ListId,nolimit:!0}).$promise}).then(function(e){i.customFields=e}).catch(D()).finally(function(){T(i)});T(i)}}else T(i)}function O(n,t){var e=_.find(A.tabs,function(e){return"interaction"===e.type&&e.interaction&&e.interaction.id===t.id&&e.channel===n});e?(e.isDraft=t.isDraft||!1,A.currentTab=e.id):T(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 w(e){e&&e.uniqueid&&A.notifications[e.uniqueid]&&(a.clear(A.notifications[e.uniqueid]),delete A.notifications[e.uniqueid])}function R(n){var t=n.uniqueid;for(var e in console.debug("onVoiceChannelRemove -> evt",n),A.tabs)if(A.tabs.hasOwnProperty(e)){var a=A.tabs[e];if(a.calls){console.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?(console.debug("Allowing disposition for call %s",a.calls[i].uniqueid),N(a.calls[i])):console.debug("Call %s not found or already completed",a.calls[i].uniqueid),a.contact&&a.contact.id&&l(x(t,a.contact.id,a),1e3)}}E()}function x(n,e,t){return function(){if(_.find(t.calls,function(e){return e.uniqueid===n}))return d.voiceCallReport.update({id:n,ContactId:e}).$promise.catch(function(e){console.error(e)})}}function N(e){e.disposedAt=new Date}function D(){return function(e){if(404===e.status)a.warning({title:o.instant("DASHBOARDS.ATTENTION"),msg:o.instant("DASHBOARDS.ACCEPT_ELSEWHERE")});else if(e.data&&e.data.errors&&e.data.errors.length){A.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()})}}A.license=g,A.setting=v,A.detectBrowser=f.detectBrowser(),A.user=n.getCurrentUser(),A.currentTab=0,A.notifications={},A.tabs={},A.agentCapacity={},A.autoClose=!1,A.globalUserLists=c||{count:0,rows:[]},A.globalLists=m||{count:0,rows:[]},A.globalCompanies=u||{count:0,rows:[]},A.globalTags=p||{count:0,rows:[]},A.onClickTab=function(e){A.currentTab=e,E(A.tabs[e])},A.isActiveTab=function(e){return e===A.currentTab},A.alreadyExistsTab=I,A.addContactTab=C,A.addInteractionTab=O,A.addTab=T,A.removeTab=S,A.updateLocalStorage=E,A.closeTab=function(e){var n=i.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 t=A.user.voicePause||A.user.chatPause||A.user.mailPause||A.user.openchannelPause||A.user.faxPause,a=!1;return"interaction"===e.type&&(a=e.interaction.Account.mandatoryDisposition),i.show(n).then(function(){"interaction"===e.type&&i.show({controller:"DisposeInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/dispose/dialog.html",parent:angular.element(r.body),onRemoving:function(e,n){A.user&&a&&!t&&d.user.unpause({id:A.user.id}).$promise.catch(function(e){console.error(e)})},clickOutsideToClose:!a,escapeToClose:!a,locals:{user:A.user,channel:e.channel,interaction:e.interaction}}),S(e)}).catch(function(){"interaction"===e.type&&S(e)})}var a=!1;if(_.forEach(e.calls,function(e){e.mandatoryDisposition&&(a=!0)}),"contact"===e.type&&0<e.calls.length){if(!a)return n._options.textContent="There is a call that hasn't been disposed yet.",i.show(n).then(function(){S(e)});alert=i.alert().title("Warning").textContent("There is a call that hasn't been disposed yet.").ok("OK"),i.show(alert).finally(function(){alert=void 0})}else S(e)}},t.on("trigger:contactmanager",function(n){if(!_.isNil(n.contacts)&&1===n.contacts.length)return void C(n.contact,n.evt);i.show({controller:"ContactSelectionController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/contact/selection/dialog.html",parent:angular.element(r.body),locals:{contacts:n.contacts,callNumber:n.evt.routeId?n.evt.destcalleridnum:n.evt.calleridnum}}).then(function(e){C(e,n.evt)})}),t.on("trigger:jscripty",function(t){return d.jscriptyProject.get({id:t.ProjectId}).$promise.then(function(n){if(n){if(!_.isUndefined(t["xmd-contactid"]))return d.cmContact.get({id:t["xmd-contactid"]}).$promise.then(function(e){try{n.formData=Mustache.render(n.formData,_.merge(t,{user:A.user,contact:e}))}catch(e){console.error(e)}T({type:"jscripty",title:n.name,icon:"icon-script",color:"grey",project:n,call:t,contact:e})}).catch(D());try{n.formData=Mustache.render(n.formData,_.merge(t,{user:A.user}))}catch(e){console.error(e)}T({type:"jscripty",title:n.name,icon:"icon-script",color:"grey",project:n,call:t})}}).catch(D())}),t.on("trigger:bot",function(n){var t=n.calleridname&&"<unknown>"!==n.calleridname?n.calleridname:n.calleridnum,a=n.calleridnum;return d.squareMessage.get({fields:"id",limit:1,offset:0,uniqueid:n.uniqueid}).$promise.then(function(e){e.count&&T({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":s.open(e.uri);break;case"1":s.open(e.uri,"_blank","width="+(e.windowWidth||"800")+",height="+e.windowHeight||"600");break;case"2":var n={type:"iframe",title:e.uri,icon:"icon-google-earth",color:"blue",src:e.uri};T(n);break;default:s.open(e.uri)}else s.open(e.uri)}),t.on("trigger:browser:popup",function(e){e&&e.html&&T({type:"popup",title:e.calleridnum||"popup",icon:"icon-tablet",color:"grey",html:e.html})}),t.on("notification:save",function(e){if(e&&e.uniqueid){t=e,h.isSupported()?h.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},h.show(e.title,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.");var n=I(e);if(n){if(d[e.channel+"Message"])return A.currentTab!==n.id&&(n.badges+=1),d[e.channel+"Message"].accept({id:e.id,UserId:A.user.id}).$promise.catch(D())}else a.wait({title:e.title,msg:e.msg||"",showClose:!1,clickToClose:!1,timeout:!1,sound:e.sound,html:!0,shake:e.shake||!1,onAdd:function(){A.notifications[e.uniqueid]=this.id},onAccept:function(){if(w(e),d[e.channel+"Message"])return d[e.channel+"Message"].accept({id:e.id,UserId:A.user.id,manual:!0}).$promise.then(function(e){O(e.channel,e.interaction),a.success({title:"Message properly accepted!",msg:"Message has been accepted!"})}).catch(D())},onReject:function(){if(w(e),d[e.channel+"Message"])return d[e.channel+"Message"].reject({id:e.id,UserId:A.user.id}).$promise.then(function(e){a.success({title:"Message properly rejected!",msg:"Message has been rejected!"})}).catch(D())}})}var t}),t.on("notification:remove",w),t.on("voice_queue_channel:remove",R),t.on("voice_outbound_channel:remove",R),function(){var e=s.localStorage.getItem("motion2.user:"+A.user.id);if(e)try{e=JSON.parse(e),A.tabs=e.tabs?e.tabs:{},A.currentTab=e.currentTab?e.currentTab:0,A.autoClose=!!e.autoClose&&e.autoClose,y(A.tabs[A.currentTab])}catch(e){console.error(e)}}(),e.$on("$destroy",function(){for(var e in A.notifications)A.notifications.hasOwnProperty(e)&&w({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")})}e.$inject=["$scope","$mdDialog","$window","$translate","$document","$timeout","Auth","api","socket","toasty","globalUserLists","globalLists","globalCompanies","globalTags","license","setting","desktopNotification","msUtils","privacyManager"],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,n,l){var g=this;function v(){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 h(n){return function(e){g[n]=e||{count:0,rows:[]}}}function f(){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,h("hoppers")).$promise)}function b(){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,h("finals")).$promise)}function A(){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,h("histories")).$promise)}function E(e){return null===e?void 0:new Date(e)}function y(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})}g.user=s.getCurrentUser(),g.detectBrowser=e.detectBrowser(),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=v,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(){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(e,n){g.user&&i.mandatoryDisposition&&u.user.unpause({id:g.user.id}).$promise.catch(function(e){console.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=E,g.addJscriptyTab=function(e){try{e.formData=Mustache.render(e.formData,{contact:g.contact,user:g.user})}catch(e){console.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=f,g.getFinals=b,g.getHistories=A,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(e,n){g.user&&r.mandatoryDisposition&&!i&&u.user.unpause({id:g.user.id}).$promise.catch(function(e){console.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){}f(),b(),A()}).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?v():void 0}).finally(function(){g.contact&&g.contact.id&&(y(),g.contact.dateOfBirth=E(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=y,g.loadMoreJourney=function(){return i(function(e,n){var t=g.journey.length;return e(y(t))})},m.$on("$destroy",function(){}),m.$watch("currentTab",function(e,n){1===g.currentTab&&(f(),b(),A())});var S=!0,T=1;m.$watch("queryHopper.filter",function(e,n){S?t(function(){S=!1}):(n||(T=g.queryHopper.page),e!==n&&(g.queryHopper.page=1),e||(g.queryHopper.page=T),f())}),m.$watch("queryFinal.filter",function(e,n){S?t(function(){S=!1}):(n||(T=g.queryFinal.page),e!==n&&(g.queryFinal.page=1),e||(g.queryFinal.page=T),b())}),m.$watch("queryHistory.filter",function(e,n){S?t(function(){S=!1}):(n||(T=g.queryHistory.page),e!==n&&(g.queryHistory.page=1),e||(g.queryHistory.page=T),A())})}e.$inject=["$window","$mdDialog","$document","$timeout","$scope","$q","api","toasty","Auth","$translate","msUtils","customerJourneyManager","draftManager","privacyManager"],angular.module("app.dashboards").controller("AgentGeneralContactController",e)}(),function(){"use strict";function e(n,i,s,o,e,t,a,r,l,d,c,m){var u=this;function p(){var e=u.selectedDisposition?u.selectedDisposition.name.toLowerCase():void 0;return{id:u.call.uniqueid,disposition:u.firstLevelDisposition?u.firstLevelDisposition.name:null,secondDisposition:u.secondLevelDisposition?u.secondLevelDisposition.name:null,thirdDisposition:u.thirdLevelDisposition?u.thirdLevelDisposition.name:null,dispositionat:moment(),amd:"amd"===e,fax:"fax"===e,blacklist:"blacklist"===e,recallme:"recallme"===e,UserId:"recallme"===e?l.getCurrentUser().id:null,OwnerId:l.getCurrentUser().id}}function g(e){n.hide([e,u.autoClose])}u.isReschedule=!1,u.recallme=!1,u.queueCampaign=void 0,u.queueCampaigns={count:0,rows:[]},u.dispositions=_.orderBy(_.concat([],e.rows,t.rows),["name"],["asc"]),u.contact=r,u.call=a,u.note=u.call.note||void 0,u.dialerCall=!1,u.hasBlackLists=!1,u.availableCalls=c,u.autoClose=m,u.hopper={minDate:new Date,dateTime:new Date},u.call&&u.call.variables&&u.call.variables["xmd-voicequeueid"]?(u.dialerCall=!0,o.voiceQueue.getBlackLists({id:u.call.variables["xmd-voicequeueid"]}).$promise.then(function(e){e&&e.rows&&0<e.rows.length&&(u.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()})})):o.user.getQueues({id:l.getCurrentUser().id,fields:"id,name,dialActive",channel:"voice",type:"outbound",nolimit:!0}).$promise.then(function(e){u.queueCampaigns=e||{count:0,rows:[]}}).catch(function(e){console.error(e)}),u.onDispositionChange=function(e){switch(e){case"first":u.selectedDisposition=u.firstLevelDisposition,u.anySecondLevelDisposition=_.some(u.dispositions,["ParentId",u.firstLevelDisposition.id]),u.secondLevelDisposition=void 0,u.thirdLevelDisposition=void 0,u.anyThirdLevelDisposition=!1;break;case"second":u.selectedDisposition=u.secondLevelDisposition,u.anyThirdLevelDisposition=_.some(u.dispositions,["ParentId",u.secondLevelDisposition.id]);break;case"third":u.selectedDisposition=u.thirdLevelDisposition}},u.clearDispositionSelection=function(e){"second"===e?(u.secondLevelDisposition=void 0,u.thirdLevelDisposition=void 0,u.selectedDisposition=u.firstLevelDisposition):"third"===e&&(u.thirdLevelDisposition=void 0,u.selectedDisposition=u.secondLevelDisposition)},u.saveDisposition=function(e){u.selectedDisposition=_.isNil(e)?u.selectedDisposition:{name:e},e&&(u.firstLevelDisposition=u.selectedDisposition);u.call.note=u.note,o.voiceCallReport.update({id:u.call.uniqueid,userDisposition:u.firstLevelDisposition?u.firstLevelDisposition.name:null,userSecondDisposition:u.secondLevelDisposition?u.secondLevelDisposition.name:null,userThirdDisposition:u.thirdLevelDisposition?u.thirdLevelDisposition.name:null,note:u.note,UserId:l.getCurrentUser().id,ContactId:u.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:u.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:u.firstLevelDisposition?u.firstLevelDisposition.name:null,userSecondDisposition:u.secondLevelDisposition?u.secondLevelDisposition.name:null,userThirdDisposition:u.thirdLevelDisposition?u.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()})}),u.dialerCall&&(o.cmHopperFinal.update(p()).$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(p()).$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(u.selectedDisposition))g(u.selectedDisposition?u.selectedDisposition.name.toUpperCase():"");else switch(u.selectedDisposition.name.toLowerCase()){case"blacklist":u.call&&u.call.variables&&u.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(u.contact);delete a.id,a.ListId=e.rows[t].id,n.push(o.cmContact.save(a).$promise)}return i.all(n)}s.success({title:d.instant("DASHBOARDS.INFO"),msg:d.instant("DASHBOARDS.NOTAVAILABLE")+" "+u.selectedDisposition}),u.selectedDisposition=void 0}).then(function(e){e&&g(u.selectedDisposition?u.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()}),g(u.selectedDisposition?u.selectedDisposition.name.toUpperCase():"")})}(u.call.variables["xmd-voicequeueid"]);break;case"reschedule":u.isReschedule=!0,u.recallme=!1;break;case"recallme":u.isReschedule=!0,u.recallme=!0;break;default:g(u.selectedDisposition?u.selectedDisposition.name.toUpperCase():"")}},u.closeDialog=function(){n.cancel()},u.saveReschedule=function(){return u.disable=!0,o.cmHopper.save({phone:u.contact.phone,UserId:u.recallme?l.getCurrentUser().id:null,ContactId:u.contact.id,ListId:u.contact.ListId,VoiceQueueId:u.dialerCall?Number(u.call["xmd-voicequeueid"]):u.queueCampaign?u.queueCampaign.id:null,scheduledat:moment(u.hopper.dateTime).format("YYYY-MM-DD HH:mm:ss"),priority:3,recallme:u.recallme,OwnerId:l.getCurrentUser().id}).$promise.then(function(){u.dialerCall&&o.cmHopperFinal.update({id:u.call.uniqueid,rescheduled:!0,rescheduledat:moment(u.hopper.dateTime).format("YYYY-MM-DD HH:mm:ss"),recallme:u.recallme}).$promise.catch(function(e){console.log(e)})}).then(function(){s.success({title:d.instant("DASHBOARDS.INFO"),msg:d.instant("DASHBOARDS.CALL_DISPOSED")+" "+(u.recallme?d.instant("DASHBOARDS.RECALLME"):d.instant("DASHBOARDS.RESCHEDULE"))})}).catch(function(e){g(u.selectedDisposition?u.selectedDisposition.name.toUpperCase():"")}).finally(function(){u.disable=!1,g(u.selectedDisposition?u.selectedDisposition.name.toUpperCase():"")})}}e.$inject=["$mdDialog","$q","toasty","api","dispositions","globalDispositions","call","contact","Auth","$translate","availableCalls","autoClose"],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};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};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;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)},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,r,e,l,d){var c=this;function m(e){!c.reloadingInteractions&&0<c.setting.chatInteractionsReloadTimeout&&A(!0),c.searchInProgress=!1,c.reloadingInteractions=!1,c.chatInteractions=e||{count:0,rows:[]};for(var n=0;n<c.chatInteractions.rows.length;n+=1)p(c.chatInteractions.rows[n])}function u(e,n){c.searchInProgress=!0,e||(c.query.page=1),c.query.offset=(c.query.page-1)*c.query.limit;var t=a.localStorage.getItem("motion2.home.chat:"+c.user.id);(t=t?JSON.parse(t):{}).query=c.query,a.localStorage.setItem("motion2.home.chat:"+c.user.id,JSON.stringify(t)),c.promise=r.chatInteraction.get(c.query,m).$promise}function p(e){"Unknown"===e.contactName&&(e.contactName=o.instant("DASHBOARDS.UNKNOWN"))}function g(e){var n=_.find(c.chatInteractions.rows,{id:e.ChatInteractionId});n&&n.Users&&(_.find(n.Users,{id:e.UserId})||n.Users.push({id:e.UserId}))}function v(e){var n=_.find(c.chatInteractions.rows,{id:e.ChatInteractionId});n&&n.Users&&_.remove(n.Users,{id:e.UserId})}function h(e){if(e){var n=_.find(c.chatInteractions.rows,{id:e.id});if(n){if(n.Users=[],e.closed&&(n.unreadMessages=0),c.query.sort){var t=_.startsWith(c.query.sort,"-")?"desc":"asc";c.chatInteractions.rows=_.orderBy(c.chatInteractions.rows,_.trimStart(c.query.sort,"-"),t)}_.merge(n,_.pick(e,_.keys(n)))}else 0===c.setting.chatInteractionsReloadTimeout&&u(c.query.page)}}function f(e){if(e){var n=_.find(c.chatInteractions.rows,{id:e.id});n&&(n.Tags=e.tags||[],_.merge(n,_.pick(e,_.keys(n))))}}function b(e){if(e&&!e.secret){var n=_.find(c.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 A(e){e&&c.interactionsInterval&&n.cancel(c.interactionsInterval),c.interactionsInterval=n(function(){c.reloadingInteractions=!0,c.searchInProgress||u()},1e3*c.setting.chatInteractionsReloadTimeout)}c.user=e.getCurrentUser(),c.license={},c.setting={},c.tags={count:0,rows:[]},c.chatInteractions={count:0,rows:[]},c.query={includeAll:!0,sort:"-updatedAt",limit:10,page:1,read:null,closed:null},c.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:c.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"]}}]},c.sectionColor="green-A700",c.onInit=function(e,n){return c.license=e,c.setting=n,r.user["get"+_.upperFirst("ChatWebsites")]({id:c.user.id,nolimit:!0}).$promise.then(function(e){return c.chatAccounts=e||{count:0,rows:[]},r.tag.get().$promise}).then(function(e){c.tags=e||{count:0,rows:[]}}).then(function(){c.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:c.chatAccounts.rows,clearAll:!1},{name:"Agent",key:"UserId",type:"select",label:"DASHBOARDS.SELECT_AGENT",customOptions:[{value:c.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:c.tags.rows,placeholder:"DASHBOARDS.TAGS"}]}).catch(function(e){console.error(e)}).finally(function(){var e=a.localStorage.getItem("motion2.home.chat:"+c.user.id);if(e)try{(e=JSON.parse(e)).query&&(c.query=_.merge(c.query,e.query),_.isEmpty(c.chatAccounts.rows)?c.query.ChatWebsiteId=[]:_.isEmpty(c.query.ChatWebsiteId)&&(c.query.ChatWebsiteId=_(c.chatAccounts.rows).map("id").take().value()),c.query.sort&&0<=c.query.sort.indexOf("lastMessage")&&(c.query=_.omit(c.query,"sort")),c.query.includeAll=!0,c.isSearchBarVisible=!(c.query.search||!c.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()},t={ChatWebsiteId:_.map(c.chatAccounts.rows,"id"),createdAt:n};c.query=_.merge(c.query,t)}l.on("chatInteraction:save",h),l.on("chatInteraction:update",h),l.on("chatInteractionTags:save",f),l.on("chatMessage:save",b),l.on("chatMessage:update",b),l.on("user_has_chat_interactions:save",g),l.on("user_has_chat_interactions:remove",v),u(c.query.page),0<c.setting.chatInteractionsReloadTimeout&&A()})},c.success=m,c.getChatInteractions=u,c.showChatInteraction=function(e,n){t.$parent.vm.addInteractionTab("chat",n)},c.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)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:"downloadChatInteraction",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},c.disposeInteraction=function(e,t){var a=c.user.voicePause||c.user.chatPause||c.user.mailPause||c.user.openchannelPause||c.user.faxPause,n=!t.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:n,escapeToClose:n,onRemoving:function(e,n){c.user&&t.Account.mandatoryDisposition&&!a&&r.user.unpause({id:c.user.id}).$promise.catch(function(e){console.error(e)})},locals:{user:c.user,channel:"chat",interaction:t}})},c.getContactLabel=p,c.getAgentLabel=function(e){if(e.UserId)return e.UserId===c.user.id?o.instant("DASHBOARDS.ME"):e.Owner.fullname+" <"+e.Owner.internal+">";return o.instant("DASHBOARDS.NOT_ASSIGNED")},c.getChatWebsiteLabel=function(e){if(e.Account)return e.Account.key;return o.instant("DASHBOARDS.UNKNOWN")},c.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:c.sectionColor,fields:c.advancedSearch.fields,storagePath:"home.chat"},fullscreen:!0}).then(function(e){c.isSearchBarVisible=!(e.value||!c.query.filter),e.apply&&(c.query.search=e.value,u())}).catch(function(e){d.error({title:"ERROR",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},t.$on("$destroy",function(){l.removeAllListeners("chatMessage:save"),l.removeAllListeners("chatMessage:update"),l.removeAllListeners("chatInteraction:save"),l.removeAllListeners("chatInteractionTags:save"),l.removeAllListeners("chatInteraction:update"),l.removeAllListeners("user_has_chat_interactions:save"),l.removeAllListeners("user_has_chat_interactions:remove"),c.interactionsInterval&&n.cancel(c.interactionsInterval)})}e.$inject=["$scope","$interval","$mdDialog","$document","$window","$translate","api","Auth","socket","toasty"],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().$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(i,t,s,o,a,n,r,e,l,d,c){var m=this;function u(e){!m.reloadingInteractions&&0<m.setting.faxInteractionsReloadTimeout&&function(e){e&&m.interactionsInterval&&t.cancel(m.interactionsInterval);m.interactionsInterval=t(function(){m.reloadingInteractions=!0,m.searchInProgress||p()},1e3*m.setting.faxInteractionsReloadTimeout)}(!0),m.searchInProgress=!1,m.reloadingInteractions=!1,m.faxInteractions=e||{count:0,rows:[]};for(var n=0;n<m.faxInteractions.rows.length;n+=1)g(m.faxInteractions.rows[n])}function p(e,n){m.searchInProgress=!0,e||(m.query.page=1),m.query.offset=(m.query.page-1)*m.query.limit;var t=a.localStorage.getItem("motion2.home.fax:"+m.user.id);(t=t?JSON.parse(t):{}).query=m.query,a.localStorage.setItem("motion2.home.fax:"+m.user.id,JSON.stringify(t)),m.promise=r.faxInteraction.get(m.query,u).$promise}function g(e){e.contactInfo=e.Contact?e.Contact.fax:void 0,"Unknown"===e.contactName&&(e.contactName=n.instant("DASHBOARDS.UNKNOWN"))}function v(e){var n=_.find(m.faxInteractions.rows,{id:e.FaxInteractionId});n&&n.Users&&(_.find(n.Users,{id:e.UserId})||n.Users.push({id:e.UserId}))}function h(e){var n=_.find(m.faxInteractions.rows,{id:e.FaxInteractionId});n&&n.Users&&_.remove(n.Users,{id:e.UserId})}function f(e){if(e){var n=_.find(m.faxInteractions.rows,{id:e.id});if(n){if(n.Users=[],e.closed&&(n.unreadMessages=0),m.query.sort){var t=_.startsWith(m.query.sort,"-")?"desc":"asc";m.faxInteractions.rows=_.orderBy(m.faxInteractions.rows,_.trimStart(m.query.sort,"-"),t)}_.merge(n,_.pick(e,_.keys(n)))}else p(m.query.page)}}function b(e){if(e){var n=_.find(m.faxInteractions.rows,{id:e.id});n&&(n.Tags=e.tags||[],_.merge(n,_.pick(e,_.keys(n))))}}function A(e){if(e&&!e.secret){var n=_.find(m.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))}}}m.user=e.getCurrentUser(),m.license={},m.setting={},m.tags={count:0,rows:[]},m.faxInteractions={count:0,rows:[]},m.query={includeAll:!0,sort:"-updatedAt",limit:10,page:1,read:null,closed:null},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:"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:m.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"]}}]},m.sectionColor="blue-grey",m.onInit=function(e,n){return m.license=e,m.setting=n,r.user["get"+_.upperFirst("faxAccounts")]({id:m.user.id,nolimit:!0}).$promise.then(function(e){return m.faxAccounts=e||{count:0,rows:[]},r.tag.get().$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:"Account",key:"FaxAccountId",type:"multiselect",label:"DASHBOARDS.SELECT_ACCOUNT",options:m.faxAccounts.rows,clearAll:!1},{name:"Agent",key:"UserId",type:"select",label:"DASHBOARDS.SELECT_AGENT",customOptions:[{value:m.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:m.tags.rows,placeholder:"DASHBOARDS.TAGS"}]}).catch(function(e){console.error(e)}).finally(function(){var e=a.localStorage.getItem("motion2.home.fax:"+m.user.id);if(e)try{(e=JSON.parse(e)).query&&(m.query=_.merge(m.query,e.query),_.isEmpty(m.faxAccounts.rows)?m.query.FaxAccountId=[]:_.isEmpty(m.query.FaxAccountId)&&(m.query.FaxAccountId=_(m.faxAccounts.rows).map("id").take().value()),m.query.sort&&0<=m.query.sort.indexOf("lastMessage")&&(m.query=_.omit(m.query,"sort")),m.query.includeAll=!0,m.isSearchBarVisible=!(m.query.search||!m.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()},t={FaxAccountId:_.map(m.faxAccounts.rows,"id"),createdAt:n};m.query=_.merge(m.query,t)}l.on("faxInteraction:save",f),l.on("faxInteraction:update",f),l.on("faxInteractionTags:save",b),l.on("faxMessage:save",A),l.on("faxMessage:update",A),l.on("user_has_fax_interactions:save",v),l.on("user_has_fax_interactions:remove",h),p(m.query.page)})},m.success=u,m.getFaxInteractions=p,m.showFaxInteraction=function(e,n){i.$parent.vm.addInteractionTab("fax",n)},m.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)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:"downloadFaxInteraction",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},m.disposeInteraction=function(e,t){var a=m.user.voicePause||m.user.chatPause||m.user.mailPause||m.user.openchannelPause||m.user.faxPause,n=!t.Account.mandatoryDisposition;s.show({controller:"DisposeInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/dispose/dialog.html",parent:angular.element(o.body),clickOutsideToClose:n,escapeToClose:n,onRemoving:function(e,n){m.user&&t.Account.mandatoryDisposition&&!a&&r.user.unpause({id:m.user.id}).$promise.catch(function(e){console.error(e)})},locals:{user:m.user,channel:"fax",interaction:t}})},m.getContactLabel=g,m.getAgentLabel=function(e){if(e.UserId)return e.UserId===m.user.id?n.instant("DASHBOARDS.ME"):e.Owner.fullname+" <"+e.Owner.internal+">";return n.instant("DASHBOARDS.NOT_ASSIGNED")},m.getFaxAccountLabel=function(e){if(e.Account)return e.Account.key;return n.instant("DASHBOARDS.UNKNOWN")},m.composeFaxInteraction=function(e,a){s.show({controller:"ComposeFaxInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/compose/fax/dialog.html",parent:angular.element(o.body),clickOutsideToClose:!1,locals:{account:a,message:{},type:"new",interaction:{}},fullscreen:!0}).then(function(e){if(e){if(!e.message||!e.message.savedAsDraft){var n=e;return r.faxAccount.send({id:a.id},n).$promise.then(function(e){d.success({title:"Message properly sent!",msg:"Message has been sent!"}),i.$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()})})}var t={channel:"fax",account:a,message:e.message,contact:e.contact};c.add(t)}})},m.openAdvancedSearch=function(){s.show({controller:"AdvancedSearchController",controllerAs:"vm",templateUrl:"app/core/dialogs/advanced-search/dialog.html",parent:angular.element(o.body),clickOutsideToClose:!1,locals:{color:m.sectionColor,fields:m.advancedSearch.fields,storagePath:"home.fax"},fullscreen:!0}).then(function(e){m.isSearchBarVisible=!(e.value||!m.query.filter),e.apply&&(m.query.search=e.value,p())}).catch(function(e){d.error({title:"ERROR",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},i.$on("$destroy",function(){l.removeAllListeners("faxMessage:save"),l.removeAllListeners("faxMessage:update"),l.removeAllListeners("faxInteraction:save"),l.removeAllListeners("faxInteractionTags:save"),l.removeAllListeners("faxInteraction:update"),l.removeAllListeners("user_has_fax_interactions:save"),l.removeAllListeners("user_has_fax_interactions:remove"),m.interactionsInterval&&t.cancel(m.interactionsInterval)})}e.$inject=["$scope","$interval","$mdDialog","$document","$window","$translate","api","Auth","socket","toasty","draftManager"],angular.module("app.dashboards").controller("AgentHomeFaxController",e)}(),function(){"use strict";function e(o,n,r,l,a,t,d,e,i,c,m){var u=this;function s(e){!u.reloadingInteractions&&0<u.setting.mailInteractionsReloadTimeout&&y(!0),u.searchInProgress=!1,u.reloadingInteractions=!1,u.mailInteractions=e||{count:0,rows:[]};for(var n=0;n<u.mailInteractions.rows.length;n+=1)v(u.mailInteractions.rows[n])}function p(e,n){u.searchInProgress=!0,e||(u.query.page=1),(void 0===u.query.closed||null===u.query.closed||u.query.closed)&&delete u.query.substatus,u.query.offset=(u.query.page-1)*u.query.limit;var t=a.localStorage.getItem("motion2.home.mail:"+u.user.id);(t=t?JSON.parse(t):{}).query=u.query,a.localStorage.setItem("motion2.home.mail:"+u.user.id,JSON.stringify(t)),u.promise=d.mailInteraction.get(u.query,s).$promise}function g(e,n){o.$parent.vm.addInteractionTab("mail",n)}function v(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 h(e){var n=_.find(u.mailInteractions.rows,{id:e.MailInteractionId});n&&n.Users&&(_.find(n.Users,{id:e.UserId})||n.Users.push({id:e.UserId}))}function f(e){var n=_.find(u.mailInteractions.rows,{id:e.MailInteractionId});n&&n.Users&&_.remove(n.Users,{id:e.UserId})}function b(e){if(e){var n=_.find(u.mailInteractions.rows,{id:e.id});if(n){if(n.Users=[],e.closed&&(n.unreadMessages=0),u.query.sort){var t=_.startsWith(u.query.sort,"-")?"desc":"asc";u.mailInteractions.rows=_.orderBy(u.mailInteractions.rows,_.trimStart(u.query.sort,"-"),t)}_.merge(n,_.pick(e,_.keys(n)))}else 0===u.setting.mailInteractionsReloadTimeout&&p(u.query.page)}}function A(e){if(e){var n=_.find(u.mailInteractions.rows,{id:e.id});n&&(n.Tags=e.tags||[],_.merge(n,_.pick(e,_.keys(n))))}}function E(e){if(e&&!e.secret){var n=_.find(u.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 y(e){e&&u.interactionsInterval&&n.cancel(u.interactionsInterval),u.interactionsInterval=n(function(){u.reloadingInteractions=!0,u.searchInProgress||p()},1e3*u.setting.mailInteractionsReloadTimeout)}u.user=e.getCurrentUser(),u.license={},u.setting={},u.tags={count:0,rows:[]},u.mailInteractions={count:0,rows:[]},u.query={includeAll:!0,sort:"-updatedAt",limit:10,page:1,read:null,closed:null},u.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:u.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"]}}]},u.sectionColor="teal",u.onInit=function(e,n){return u.license=e,u.setting=n,d.user["get"+_.upperFirst("mailAccounts")]({id:u.user.id,nolimit:!0}).$promise.then(function(e){return u.mailAccounts=e||{count:0,rows:[]},d.tag.get().$promise}).then(function(e){u.tags=e||{count:0,rows:[]}}).then(function(){return d.mailSubstatus.get({nolimit:!0}).$promise}).then(function(e){u.subStatuses=e||{count:0,rows:[]}}).then(function(){u.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:u.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:u.mailAccounts.rows,clearAll:!1},{name:"Agent",key:"UserId",type:"select",label:"DASHBOARDS.SELECT_AGENT",customOptions:[{value:u.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:u.tags.rows,placeholder:"DASHBOARDS.TAGS"}]}).catch(function(e){console.error(e)}).finally(function(){var e=a.localStorage.getItem("motion2.home.mail:"+u.user.id);if(e)try{(e=JSON.parse(e)).query&&(u.query=_.merge(u.query,e.query),_.isEmpty(u.mailAccounts.rows)?u.query.MailAccountId=[]:_.isEmpty(u.query.MailAccountId)&&(u.query.MailAccountId=_(u.mailAccounts.rows).map("id").take().value()),u.query.sort&&0<=u.query.sort.indexOf("lastMessage")&&(u.query=_.omit(u.query,"sort")),u.query.includeAll=!0,u.isSearchBarVisible=!(u.query.search||!u.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()},t={MailAccountId:_.map(u.mailAccounts.rows,"id"),createdAt:n};u.query=_.merge(u.query,t)}i.on("mailInteraction:save",b),i.on("mailInteraction:update",b),i.on("mailInteractionTags:save",A),i.on("mailMessage:save",E),i.on("mailMessage:update",E),i.on("user_has_mail_interactions:save",h),i.on("user_has_mail_interactions:remove",f),p(u.query.page),0<u.setting.mailInteractionsReloadTimeout&&y()})},u.success=s,u.getMailInteractions=p,u.showMailInteraction=g,u.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()})})},u.disposeInteraction=function(e,t){var a=u.user.voicePause||u.user.chatPause||u.user.mailPause||u.user.openchannelPause||u.user.faxPause,n=!t.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:n,escapeToClose:n,onRemoving:function(e,n){u.user&&t.Account.mandatoryDisposition&&!a&&d.user.unpause({id:u.user.id}).$promise.catch(function(e){console.error(e)})},locals:{user:u.user,channel:"mail",interaction:t}})},u.getContactLabel=v,u.getAgentLabel=function(e){if(e.UserId)return e.UserId===u.user.id?t.instant("DASHBOARDS.ME"):e.Owner.fullname+" <"+e.Owner.internal+">";return t.instant("DASHBOARDS.NOT_ASSIGNED")},u.getMailAccountLabel=function(e){if(e.Account)return e.Account.key;return t.instant("DASHBOARDS.UNKNOWN")},u.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=u.user.voicePause||u.user.chatPause||u.user.mailPause||u.user.openchannelPause||u.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(e,n){u.user&&s.mandatoryDisposition&&!a&&d.user.unpause({id:u.user.id}).$promise.catch(function(e){console.error(e)})},clickOutsideToClose:t,escapeToClose:t,locals:{user:u.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};m.add(n)}})},u.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:u.sectionColor,fields:u.advancedSearch.fields,storagePath:"home.mail"},fullscreen:!0}).then(function(e){u.isSearchBarVisible=!(e.value||!u.query.filter),e.apply&&(u.query.search=e.value,p())}).catch(function(e){c.error({title:"ERROR",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},o.$on("openMailDraft",function(e,s){s.interaction?(s.interaction.isDraft=!0,g(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(m.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=u.user.voicePause||u.user.chatPause||u.user.mailPause||u.user.openchannelPause||u.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(e,n){u.user&&s.account.mandatoryDisposition&&!a&&d.user.unpause({id:u.user.id}).$promise.catch(function(e){console.error(e)})},clickOutsideToClose:t,escapeToClose:t,locals:{user:u.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};m.update(n)}})}),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"),u.interactionsInterval&&n.cancel(u.interactionsInterval)})}e.$inject=["$scope","$interval","$mdDialog","$document","$window","$translate","api","Auth","socket","toasty","draftManager"],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().$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(i,n,s,o,a,t,r,e,l,d,c){var m=this;function u(e){!m.reloadingInteractions&&0<m.setting.openchannelInteractionsReloadTimeout&&E(!0),m.searchInProgress=!1,m.reloadingInteractions=!1,m.openchannelInteractions=e||{count:0,rows:[]};for(var n=0;n<m.openchannelInteractions.rows.length;n+=1)g(m.openchannelInteractions.rows[n])}function p(e,n){m.searchInProgress=!0,e||(m.query.page=1),m.query.offset=(m.query.page-1)*m.query.limit;var t=a.localStorage.getItem("motion2.home.openchannel:"+m.user.id);(t=t?JSON.parse(t):{}).query=m.query,a.localStorage.setItem("motion2.home.openchannel:"+m.user.id,JSON.stringify(t)),m.promise=r.openchannelInteraction.get(m.query,u).$promise}function g(e){"Unknown"===e.contactName&&(e.contactName=t.instant("DASHBOARDS.UNKNOWN"))}function v(e){var n=_.find(m.openchannelInteractions.rows,{id:e.OpenchannelInteractionId});n&&n.Users&&(_.find(n.Users,{id:e.UserId})||n.Users.push({id:e.UserId}))}function h(e){var n=_.find(m.openchannelInteractions.rows,{id:e.OpenchannelInteractionId});n&&n.Users&&_.remove(n.Users,{id:e.UserId})}function f(e){if(e){var n=_.find(m.openchannelInteractions.rows,{id:e.id});if(n){if(n.Users=[],e.closed&&(n.unreadMessages=0),m.query.sort){var t=_.startsWith(m.query.sort,"-")?"desc":"asc";m.openchannelInteractions.rows=_.orderBy(m.openchannelInteractions.rows,_.trimStart(m.query.sort,"-"),t)}_.merge(n,_.pick(e,_.keys(n)))}else 0===m.setting.openchannelInteractionsReloadTimeout&&p(m.query.page)}}function b(e){if(e){var n=_.find(m.openchannelInteractions.rows,{id:e.id});n&&(n.Tags=e.tags||[],_.merge(n,_.pick(e,_.keys(n))))}}function A(e){if(e&&!e.secret){var n=_.find(m.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 E(e){e&&m.interactionsInterval&&n.cancel(m.interactionsInterval),m.interactionsInterval=n(function(){m.reloadingInteractions=!0,m.searchInProgress||p()},1e3*m.setting.openchannelInteractionsReloadTimeout)}m.user=e.getCurrentUser(),m.license={},m.setting={},m.tags={count:0,rows:[]},m.openchannelInteractions={count:0,rows:[]},m.query={includeAll:!0,sort:"-updatedAt",limit:10,page:1,read:null,closed:null},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:"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:m.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"]}}]},m.sectionColor="amber",m.onInit=function(e,n){return m.license=e,m.setting=n,r.user["get"+_.upperFirst("openchannelAccounts")]({id:m.user.id,nolimit:!0}).$promise.then(function(e){return m.openchannelAccounts=e||{count:0,rows:[]},r.tag.get().$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:"Account",key:"OpenchannelAccountId",type:"multiselect",label:"DASHBOARDS.SELECT_ACCOUNT",options:m.openchannelAccounts.rows,clearAll:!1},{name:"Agent",key:"UserId",type:"select",label:"DASHBOARDS.SELECT_AGENT",customOptions:[{value:m.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:m.tags.rows,placeholder:"DASHBOARDS.TAGS"}]}).catch(function(e){console.error(e)}).finally(function(){var e=a.localStorage.getItem("motion2.home.openchannel:"+m.user.id);if(e)try{(e=JSON.parse(e)).query&&(m.query=_.merge(m.query,e.query),_.isEmpty(m.openchannelAccounts.rows)?m.query.OpenchannelAccountId=[]:_.isEmpty(m.query.OpenchannelAccountId)&&(m.query.OpenchannelAccountId=_(m.openchannelAccounts.rows).map("id").take().value()),m.query.sort&&0<=m.query.sort.indexOf("lastMessage")&&(m.query=_.omit(m.query,"sort")),m.query.includeAll=!0,m.isSearchBarVisible=!(m.query.search||!m.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()},t={OpenchannelAccountId:_.map(m.openchannelAccounts.rows,"id"),createdAt:n};m.query=_.merge(m.query,t)}l.on("openchannelInteraction:save",f),l.on("openchannelInteraction:update",f),l.on("openchannelInteractionTags:save",b),l.on("openchannelMessage:save",A),l.on("openchannelMessage:update",A),l.on("user_has_openchannel_interactions:save",v),l.on("user_has_openchannel_interactions:remove",h),p(m.query.page),0<m.setting.openchannelInteractionsReloadTimeout&&E()})},m.success=u,m.getOpenchannelInteractions=p,m.showOpenchannelInteraction=function(e,n){i.$parent.vm.addInteractionTab("openchannel",n)},m.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)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:"downloadOpenchannelInteraction",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},m.disposeInteraction=function(e,t){var a=m.user.voicePause||m.user.chatPause||m.user.mailPause||m.user.openchannelPause||m.user.faxPause,n=!t.Account.mandatoryDisposition;s.show({controller:"DisposeInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/dispose/dialog.html",parent:angular.element(o.body),clickOutsideToClose:n,escapeToClose:n,onRemoving:function(e,n){m.user&&t.Account.mandatoryDisposition&&!a&&r.user.unpause({id:m.user.id}).$promise.catch(function(e){console.error(e)})},locals:{user:m.user,channel:"openchannel",interaction:t}})},m.getContactLabel=g,m.getAgentLabel=function(e){if(e.UserId)return e.UserId===m.user.id?t.instant("DASHBOARDS.ME"):e.Owner.fullname+" <"+e.Owner.internal+">";return t.instant("DASHBOARDS.NOT_ASSIGNED")},m.getOpenchannelAccountLabel=function(e){if(e.Account)return e.Account.key;return t.instant("DASHBOARDS.UNKNOWN")},m.composeOpenchannelInteraction=function(e,a){s.show({controller:"ComposeOpenchannelInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/compose/openchannel/dialog.html",parent:angular.element(o.body),clickOutsideToClose:!1,locals:{account:a,message:{},type:"new",interaction:{}},fullscreen:!0}).then(function(e){if(e){if(!e.message||!e.message.savedAsDraft){var n=e;return r.openchannelAccount.send({id:a.id},n).$promise.then(function(e){d.success({title:"Message properly sent!",msg:"Message has been sent!"}),i.$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++)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:"OPENCHANNELACCOUNT:SEND",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}var t={channel:"openchannel",account:a,message:e.message,contact:e.contact};c.add(t)}})},m.openAdvancedSearch=function(){s.show({controller:"AdvancedSearchController",controllerAs:"vm",templateUrl:"app/core/dialogs/advanced-search/dialog.html",parent:angular.element(o.body),clickOutsideToClose:!1,locals:{color:m.sectionColor,fields:m.advancedSearch.fields,storagePath:"home.openchannel"},fullscreen:!0}).then(function(e){m.isSearchBarVisible=!(e.value||!m.query.filter),e.apply&&(m.query.search=e.value,p())}).catch(function(e){d.error({title:"ERROR",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},i.$on("$destroy",function(){l.removeAllListeners("openchannelMessage:save"),l.removeAllListeners("openchannelMessage:update"),l.removeAllListeners("openchannelInteraction:save"),l.removeAllListeners("openchannelInteractionTags:save"),l.removeAllListeners("openchannelInteraction:update"),l.removeAllListeners("user_has_openchannel_interactions:save"),l.removeAllListeners("user_has_openchannel_interactions:remove"),m.interactionsInterval&&n.cancel(m.interactionsInterval)})}e.$inject=["$scope","$interval","$mdDialog","$document","$window","$translate","api","Auth","socket","toasty","draftManager"],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",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;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(i,n,s,o,a,t,r,e,l,d,c){var m=this;function u(e){!m.reloadingInteractions&&0<m.setting.smsInteractionsReloadTimeout&&E(!0),m.searchInProgress=!1,m.reloadingInteractions=!1,m.smsInteractions=e||{count:0,rows:[]};for(var n=0;n<m.smsInteractions.rows.length;n+=1)g(m.smsInteractions.rows[n])}function p(e,n){m.searchInProgress=!0,e||(m.query.page=1),m.query.offset=(m.query.page-1)*m.query.limit;var t=a.localStorage.getItem("motion2.home.sms:"+m.user.id);(t=t?JSON.parse(t):{}).query=m.query,a.localStorage.setItem("motion2.home.sms:"+m.user.id,JSON.stringify(t)),m.promise=r.smsInteraction.get(m.query,u).$promise}function g(e){e.contactInfo=e.Contact?e.Contact.mobile:void 0,"Unknown"===e.contactName&&(e.contactName=t.instant("DASHBOARDS.UNKNOWN"))}function v(e){var n=_.find(m.smsInteractions.rows,{id:e.SmsInteractionId});n&&n.Users&&(_.find(n.Users,{id:e.UserId})||n.Users.push({id:e.UserId}))}function h(e){var n=_.find(m.smsInteractions.rows,{id:e.SmsInteractionId});n&&n.Users&&_.remove(n.Users,{id:e.UserId})}function f(e){if(e){var n=_.find(m.smsInteractions.rows,{id:e.id});if(n){if(n.Users=[],e.closed&&(n.unreadMessages=0),m.query.sort){var t=_.startsWith(m.query.sort,"-")?"desc":"asc";m.smsInteractions.rows=_.orderBy(m.smsInteractions.rows,_.trimStart(m.query.sort,"-"),t)}_.merge(n,_.pick(e,_.keys(n)))}else 0===m.setting.smsInteractionsReloadTimeout&&p(m.query.page)}}function b(e){if(e){var n=_.find(m.smsInteractions.rows,{id:e.id});n&&(n.Tags=e.tags||[],_.merge(n,_.pick(e,_.keys(n))))}}function A(e){if(e&&!e.secret){var n=_.find(m.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 E(e){e&&m.interactionsInterval&&n.cancel(m.interactionsInterval),m.interactionsInterval=n(function(){m.reloadingInteractions=!0,m.searchInProgress||p()},1e3*m.setting.smsInteractionsReloadTimeout)}m.user=e.getCurrentUser(),m.license={},m.setting={},m.tags={count:0,rows:[]},m.smsInteractions={count:0,rows:[]},m.query={includeAll:!0,sort:"-updatedAt",limit:10,page:1,read:null,closed:null},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:"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:m.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"]}}]},m.sectionColor="orange",m.onInit=function(e,n){return m.license=e,m.setting=n,r.user["get"+_.upperFirst("smsAccounts")]({id:m.user.id,nolimit:!0}).$promise.then(function(e){return m.smsAccounts=e||{count:0,rows:[]},r.tag.get().$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:"Account",key:"SmsAccountId",type:"multiselect",label:"DASHBOARDS.SELECT_ACCOUNT",options:m.smsAccounts.rows,clearAll:!1},{name:"Agent",key:"UserId",type:"select",label:"DASHBOARDS.SELECT_AGENT",customOptions:[{value:m.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:m.tags.rows,placeholder:"DASHBOARDS.TAGS"}]}).catch(function(e){console.error(e)}).finally(function(){var e=a.localStorage.getItem("motion2.home.sms:"+m.user.id);if(e)try{(e=JSON.parse(e)).query&&(m.query=_.merge(m.query,e.query),_.isEmpty(m.smsAccounts.rows)?m.query.SmsAccountId=[]:_.isEmpty(m.query.SmsAccountId)&&(m.query.SmsAccountId=_(m.smsAccounts.rows).map("id").take().value()),m.query.sort&&0<=m.query.sort.indexOf("lastMessage")&&(m.query=_.omit(m.query,"sort")),m.query.includeAll=!0,m.isSearchBarVisible=!(m.query.search||!m.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()},t={SmsAccountId:_.map(m.smsAccounts.rows,"id"),createdAt:n};m.query=_.merge(m.query,t)}l.on("smsInteraction:save",f),l.on("smsInteraction:update",f),l.on("smsInteractionTags:save",b),l.on("smsMessage:save",A),l.on("smsMessage:update",A),l.on("user_has_sms_interactions:save",v),l.on("user_has_sms_interactions:remove",h),p(m.query.page),0<m.setting.smsInteractionsReloadTimeout&&E()})},m.success=u,m.getSmsInteractions=p,m.showSmsInteraction=function(e,n){i.$parent.vm.addInteractionTab("sms",n)},m.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)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:"downloadSmsInteraction",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},m.disposeInteraction=function(e,t){var a=m.user.voicePause||m.user.chatPause||m.user.mailPause||m.user.openchannelPause||m.user.faxPause,n=!t.Account.mandatoryDisposition;s.show({controller:"DisposeInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/dispose/dialog.html",parent:angular.element(o.body),clickOutsideToClose:n,escapeToClose:n,onRemoving:function(e,n){m.user&&t.Account.mandatoryDisposition&&!a&&r.user.unpause({id:m.user.id}).$promise.catch(function(e){console.error(e)})},locals:{user:m.user,channel:"sms",interaction:t}})},m.getContactLabel=g,m.getAgentLabel=function(e){if(e.UserId)return e.UserId===m.user.id?t.instant("DASHBOARDS.ME"):e.Owner.fullname+" <"+e.Owner.internal+">";return t.instant("DASHBOARDS.NOT_ASSIGNED")},m.getSmsAccountLabel=function(e){if(e.Account)return e.Account.key;return t.instant("DASHBOARDS.UNKNOWN")},m.composeSmsInteraction=function(e,a){s.show({controller:"ComposeSmsInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/compose/sms/dialog.html",parent:angular.element(o.body),clickOutsideToClose:!1,locals:{account:a,message:{},type:"new",interaction:{}},fullscreen:!0}).then(function(e){if(e){if(!e.message||!e.message.savedAsDraft){var n=e;return r.smsAccount.send({id:a.id},n).$promise.then(function(e){d.success({title:"Message properly sent!",msg:"Message has been sent!"}),i.$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++)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:"SMSACCOUNT:SEND",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}var t={channel:"sms",account:a,message:e.message,contact:e.contact};c.add(t)}})},m.openAdvancedSearch=function(){s.show({controller:"AdvancedSearchController",controllerAs:"vm",templateUrl:"app/core/dialogs/advanced-search/dialog.html",parent:angular.element(o.body),clickOutsideToClose:!1,locals:{color:m.sectionColor,fields:m.advancedSearch.fields,storagePath:"home.sms"},fullscreen:!0}).then(function(e){m.isSearchBarVisible=!(e.value||!m.query.filter),e.apply&&(m.query.search=e.value,p())}).catch(function(e){d.error({title:"ERROR",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},i.$on("$destroy",function(){l.removeAllListeners("smsMessage:save"),l.removeAllListeners("smsMessage:update"),l.removeAllListeners("smsInteraction:save"),l.removeAllListeners("smsInteractionTags:save"),l.removeAllListeners("smsInteraction:update"),l.removeAllListeners("user_has_sms_interactions:save"),l.removeAllListeners("user_has_sms_interactions:remove"),m.interactionsInterval&&n.cancel(m.interactionsInterval)})}e.$inject=["$scope","$interval","$mdDialog","$document","$window","$translate","api","Auth","socket","toasty","draftManager"],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().$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(i,n,s,o,a,t,r,e,l,d,c){var m=this;function u(e){!m.reloadingInteractions&&0<m.setting.whatsappInteractionsReloadTimeout&&E(!0),m.searchInProgress=!1,m.reloadingInteractions=!1,m.whatsappInteractions=e||{count:0,rows:[]};for(var n=0;n<m.whatsappInteractions.rows.length;n+=1)g(m.whatsappInteractions.rows[n])}function p(e,n){m.searchInProgress=!0,e||(m.query.page=1),m.query.offset=(m.query.page-1)*m.query.limit;var t=a.localStorage.getItem("motion2.home.whatsapp:"+m.user.id);(t=t?JSON.parse(t):{}).query=m.query,a.localStorage.setItem("motion2.home.whatsapp:"+m.user.id,JSON.stringify(t)),m.promise=r.whatsappInteraction.get(m.query,u).$promise}function g(e){e.contactInfo=e.Contact?e.Contact.mobile:void 0,"Unknown"===e.contactName&&(e.contactName=t.instant("DASHBOARDS.UNKNOWN"))}function v(e){var n=_.find(m.whatsappInteractions.rows,{id:e.WhatsappInteractionId});n&&n.Users&&(_.find(n.Users,{id:e.UserId})||n.Users.push({id:e.UserId}))}function h(e){var n=_.find(m.whatsappInteractions.rows,{id:e.WhatsappInteractionId});n&&n.Users&&_.remove(n.Users,{id:e.UserId})}function f(e){if(e){var n=_.find(m.whatsappInteractions.rows,{id:e.id});if(n){if(n.Users=[],e.closed&&(n.unreadMessages=0),m.query.sort){var t=_.startsWith(m.query.sort,"-")?"desc":"asc";m.whatsappInteractions.rows=_.orderBy(m.whatsappInteractions.rows,_.trimStart(m.query.sort,"-"),t)}_.merge(n,_.pick(e,_.keys(n)))}else 0===m.setting.whatsappInteractionsReloadTimeout&&p(m.query.page)}}function b(e){if(e){var n=_.find(m.whatsappInteractions.rows,{id:e.id});n&&(n.Tags=e.tags||[],_.merge(n,_.pick(e,_.keys(n))))}}function A(e){if(e&&!e.secret){var n=_.find(m.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 E(e){e&&m.interactionsInterval&&n.cancel(m.interactionsInterval),m.interactionsInterval=n(function(){m.reloadingInteractions=!0,m.searchInProgress||p()},1e3*m.setting.whatsappInteractionsReloadTimeout)}m.user=e.getCurrentUser(),m.license={},m.setting={},m.tags={count:0,rows:[]},m.whatsappInteractions={count:0,rows:[]},m.query={includeAll:!0,sort:"-updatedAt",limit:10,page:1,read:null,closed:null},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:"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:m.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"]}}]},m.sectionColor="lime-A700",m.onInit=function(e,n){return m.license=e,m.setting=n,r.user["get"+_.upperFirst("whatsappAccounts")]({id:m.user.id,nolimit:!0}).$promise.then(function(e){return m.whatsappAccounts=e||{count:0,rows:[]},r.tag.get().$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:"Account",key:"WhatsappAccountId",type:"multiselect",label:"DASHBOARDS.SELECT_ACCOUNT",options:m.whatsappAccounts.rows,clearAll:!1},{name:"Agent",key:"UserId",type:"select",label:"DASHBOARDS.SELECT_AGENT",customOptions:[{value:m.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:m.tags.rows,placeholder:"DASHBOARDS.TAGS"}]}).catch(function(e){console.error(e)}).finally(function(){var e=a.localStorage.getItem("motion2.home.whatsapp:"+m.user.id);if(e)try{(e=JSON.parse(e)).query&&(m.query=_.merge(m.query,e.query),_.isEmpty(m.whatsappAccounts.rows)?m.query.WhatsappAccountId=[]:_.isEmpty(m.query.WhatsappAccountId)&&(m.query.WhatsappAccountId=_(m.whatsappAccounts.rows).map("id").take().value()),m.query.sort&&0<=m.query.sort.indexOf("lastMessage")&&(m.query=_.omit(m.query,"sort")),m.query.includeAll=!0,m.isSearchBarVisible=!(m.query.search||!m.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()},t={WhatsappAccountId:_.map(m.whatsappAccounts.rows,"id"),createdAt:n};m.query=_.merge(m.query,t)}l.on("whatsappInteraction:save",f),l.on("whatsappInteraction:update",f),l.on("whatsappInteractionTags:save",b),l.on("whatsappMessage:save",A),l.on("whatsappMessage:update",A),l.on("user_has_whatsapp_interactions:save",v),l.on("user_has_whatsapp_interactions:remove",h),p(m.query.page),0<m.setting.whatsappInteractionsReloadTimeout&&E()})},m.success=u,m.getWhatsappInteractions=p,m.showWhatsappInteraction=function(e,n){i.$parent.vm.addInteractionTab("whatsapp",n)},m.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)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:"downloadWhatsappInteraction",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},m.disposeInteraction=function(e,t){var a=m.user.voicePause||m.user.chatPause||m.user.mailPause||m.user.openchannelPause||m.user.faxPause,n=!t.Account.mandatoryDisposition;s.show({controller:"DisposeInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/dispose/dialog.html",parent:angular.element(o.body),clickOutsideToClose:n,escapeToClose:n,onRemoving:function(e,n){m.user&&t.Account.mandatoryDisposition&&!a&&r.user.unpause({id:m.user.id}).$promise.catch(function(e){console.error(e)})},locals:{user:m.user,channel:"whatsapp",interaction:t}})},m.getContactLabel=g,m.getAgentLabel=function(e){if(e.UserId)return e.UserId===m.user.id?t.instant("DASHBOARDS.ME"):e.Owner.fullname+" <"+e.Owner.internal+">";return t.instant("DASHBOARDS.NOT_ASSIGNED")},m.getWhatsappAccountLabel=function(e){if(e.Account)return e.Account.key;return t.instant("DASHBOARDS.UNKNOWN")},m.composeWhatsappInteraction=function(e,a){s.show({controller:"ComposeWhatsappInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/compose/whatsapp/dialog.html",parent:angular.element(o.body),clickOutsideToClose:!1,locals:{account:a,message:{},type:"new",interaction:{}},fullscreen:!0}).then(function(e){if(e){if(!e.message||!e.message.savedAsDraft){var n=e;return r.whatsappAccount.send({id:a.id},n).$promise.then(function(e){d.success({title:"Message properly sent!",msg:"Message has been sent!"}),i.$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++)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:"WHATSAPPACCOUNT:SEND",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}var t={channel:"whatsapp",account:a,message:e.message,contact:e.contact};c.add(t)}})},m.openAdvancedSearch=function(){s.show({controller:"AdvancedSearchController",controllerAs:"vm",templateUrl:"app/core/dialogs/advanced-search/dialog.html",parent:angular.element(o.body),clickOutsideToClose:!1,locals:{color:m.sectionColor,fields:m.advancedSearch.fields,storagePath:"home.whatsapp"},fullscreen:!0}).then(function(e){m.isSearchBarVisible=!(e.value||!m.query.filter),e.apply&&(m.query.search=e.value,p())}).catch(function(e){d.error({title:"ERROR",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},i.$on("$destroy",function(){l.removeAllListeners("whatsappMessage:save"),l.removeAllListeners("whatsappMessage:update"),l.removeAllListeners("whatsappInteraction:save"),l.removeAllListeners("whatsappInteractionTags:save"),l.removeAllListeners("whatsappInteraction:update"),l.removeAllListeners("user_has_whatsapp_interactions:save"),l.removeAllListeners("user_has_whatsapp_interactions:remove"),m.interactionsInterval&&n.cancel(m.interactionsInterval)})}e.$inject=["$scope","$interval","$mdDialog","$document","$window","$translate","api","Auth","socket","toasty","draftManager"],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.replace(/\n$/,"")))},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?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+=" "+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[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+=" "+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("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+=" "+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("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,_.pick(e.toJSON(),_.keys(n))),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){m.faxAccountInteractions=e||{count:0,rows:[]};for(var n=0;n<m.faxAccountInteractions.rows.length;n+=1){var t=m.faxAccountInteractions.rows[n];v(t),t.Owner.name=h(t)}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=d.faxInteraction.get(m.query,u).$promise}function g(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||p(),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 v(e){e.Contact?(e.contactName=(e.Contact.firstName||"")+" "+(e.Contact.lastName||""),e.contactInfo=e.Contact.fax):e.contactName=i.instant("DASHBOARDS.UNKNOWN")}function h(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"]}}]},d.tag.get().$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(){g(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=u,m.getFaxAccountInteractions=p,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,p()}}).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=g,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){g(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,_.pick(e.toJSON(),_.keys(n))),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,o,n,t,a,i,s,r,l,d,c,m,u,p,g,v,h,f){var b=this,A=["userpic","online","lastLoginAt","lastPauseAt","pauseType","lastPauseAt","internal","address","chatPause","openchannelPause","mailPause","smsPause","whatsappPause","faxPause","voicePause","chatCapacity","openchannelCapacity","mailCapacity","smsCapacity","whatsappCapacity","faxCapacity","chatCurrentCapacity","openchannelCurrentCapacity","mailCurrentCapacity","smsCurrentCapacity","whatsappCurrentCapacity","faxCurrentCapacity","chatStatus","openchannelStatus","mailStatus","smsStatus","whatsappStatus","faxStatus","voiceStatus","chatStatusTime","openchannelStatusTime","mailStatusTime","smsStatusTime","whatsappStatusTime","faxStatusTime","voiceStatusTime","queue","destconnectedlinenum","screenrecording","phoneBarEnableScreenRecordingByAgent","phoneBarEnableAutomaticScreenRecording"],E=["chatPause","openchannelPause","mailPause","smsPause","whatsappPause","faxPause","voicePause","online"];for(var y in b.currentUser=v.getCurrentUser(),b.availableStates=["ringing","inuse","busy","onhold","not_inuse"],b.pauses=s||{count:0,rows:[]},b.license=h,b.userProfile=p,b.userProfileSection=g&&1==g.count?g.rows[0]:null,b.crudPermissions=v.parseCrudPermissions(b.userProfileSection?b.userProfileSection.crudPermissions:null),b.agents=r?_.keyBy(r.rows?r.rows:[],"id"):{},b.rpcAgents=l?_.keyBy(l.rows?l.rows:[],"id"):{},b.paginatedAgents={},b.load=!1,b.order=[],b.agentInternal={},b.agents)b.agents.hasOwnProperty(y)&&(b.agents[y].init=!0);b.query={limit:10,page:1,order:"fullname",globalStatusFilter:"",pauseTypeFilter:""},b.logout=function(e,n){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"}),b.agents[e.id]&&(b.agents[e.id].online=!1),b.rpcAgents[e.id]&&(b.rpcAgents[e.id].online=!1),T()}).catch(function(e){m.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.staff.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},b.queueAdd=function(e,n){t.show({controller:"AgentqueueaddController",controllerAs:"vm",templateUrl:"app/main/apps/staff/views/agents/edit/queueadd/queueadd.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{agent:e,agents:[],channel:"fax",direction:"inbound",crudPermissions:b.crudPermissions}})},b.pause=function(n,e){return d.user.pause({id:n.id,type:e}).$promise.then(function(e){b.agents[n.id]&&_.merge(b.agents[n.id],_.pick(e,A)),b.rpcAgents[n.id]&&_.merge(b.rpcAgents[n.id],_.pick(e,A)),w(b.agents[n.id])}).catch(function(e){m.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.staff.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},b.unPause=function(n){return d.user.unpause({id:n.id}).$promise.then(function(e){b.agents[n.id]&&_.merge(b.agents[n.id],_.pick(e,A)),b.rpcAgents[n.id]&&_.merge(b.rpcAgents[n.id],_.pick(e,A)),w(b.agents[n.id])}).catch(function(e){m.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.staff.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},b.showInfo=function(e){t.show(t.alert().clickOutsideToClose(!0).title("Legend").htmlContent("<div>TODO legend status + state</div>").ok("Ok").targetEvent(e))},b.getAgentStatus=O,b.getAgentGlobalStatus=w,b.isPause=I,b.checkPause=function(e){return"pause"===e},b.isPartialPause=function(e){return"*pause"===e},b.onSave=function(e){b.agents[e.id]&&(_.merge(b.agents[e.id],_.pick(_.omit(e,E),A)),_.merge(b.rpcAgents[e.id],_.pick(_.omit(e,E),A)),w(b.agents[e.id]))},b.onUpdate=function(e){b.agents[e.id]&&(_.merge(b.agents[e.id],_.pick(e,A)),_.merge(b.rpcAgents[e.id],_.pick(e,A)),e.lastPauseAt&&(b.agents[e.id].globalStatusTime=e.lastPauseAt,b.rpcAgents[e.id].globalStatusTime=e.lastPauseAt),w(b.agents[e.id]))},b.onInit=T,b.onConnect=function(e){b.agents[b.agentInternal[e.destaccountcode]]&&(_.merge(b.agents[b.agentInternal[e.destaccountcode]],_.pick(e,["queue","destconnectedlinenum","routealias"])),_.merge(b.rpcAgents[b.agentInternal[e.destaccountcode]],_.pick(e,["queue","destconnectedlinenum","routealias"])))},b.onComplete=function(e){b.agents[b.agentInternal[e.destaccountcode]]&&(b.agents[b.agentInternal[e.destaccountcode]]=_.omit(b.agents[b.agentInternal[e.destaccountcode]],["queue","destconnectedlinenum"]),b.rpcAgents[b.agentInternal[e.destaccountcode]]=_.omit(b.rpcAgents[b.agentInternal[e.destaccountcode]],["queue","destconnectedlinenum"]))},b.screenRecording=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:"api.user.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},c.on("user:save",b.onSave),c.on("user:update",b.onUpdate),c.on("user:agentconnect",b.onConnect),c.on("user:agentcomplete",b.onComplete),T();var S=f(function(){b.load&&(b.load=!1,T())},999);function T(e){b.load=!1;var n,t,a=o.defer();b.promise=a.promise,b.filteredAgents=[],b.order=[],_.forIn(b.agents,function(e,n){b.rpcAgents[n]&&_.merge(e,_.pick(_.omit(b.rpcAgents[n],E),A)),w(e),e.online?(b.filteredAgents.push(e),b.agentInternal[e.internal]=n):e.globalStatusTime=_.toNumber(moment().format("x"))}),b.query.globalStatusFilter&&_.remove(b.filteredAgents,function(e){return e.globalStatus!==b.query.globalStatusFilter}),b.query.pauseTypeFilter&&_.remove(b.filteredAgents,function(e){return e.pauseType!==b.query.pauseTypeFilter}),b.query.filter&&_.remove(b.filteredAgents,function(e){return e.fullname.toLowerCase().indexOf(b.query.filter.toLowerCase())<0}),b.filteredAgents=(n=b.filteredAgents,t=_.startsWith(b.query.order,"-")?"desc":"asc",_.orderBy(n,[b.query.order.replace("-","")],[t]));var i=(b.query.page-1)*b.query.limit;b.paginatedAgents=_.drop(b.filteredAgents,i).slice(0,b.query.limit);for(var s=0;s<b.paginatedAgents.length;s+=1)b.order.push(b.paginatedAgents[s].id);a.resolve(),b.load=!0}function I(e){return"pause"===e||"*pause"===e}function C(e){return"idle"===e||"unknown"===e||"unavailable"===e||"ringing"===e||_.isNil(e)}function O(e,n){return"voice"===n?"idle"!==e[n+"Status"]?e[n+"Status"]:e[n+"Pause"]?e[n+"Status"]="pause":"idle":e[n+"Pause"]?e[n+"Status"]="pause":e[n+"Status"]}function w(e){var n="unknown";n=_.every([O(e,"voice"),O(e,"chat"),O(e,"mail"),O(e,"openchannel"),O(e,"sms"),O(e,"whatsapp"),O(e,"fax")],I)?"pause":_.some([O(e,"voice"),O(e,"chat"),O(e,"mail"),O(e,"openchannel"),O(e,"sms"),O(e,"whatsapp"),O(e,"fax")],I)?"*pause":_.every([O(e,"voice"),O(e,"chat"),O(e,"mail"),O(e,"openchannel"),O(e,"sms"),O(e,"whatsapp"),O(e,"fax")],C)?"idle":"busy",e.globalStatus!==n&&(e.globalStatus=n,e.init?(e.init=!1,e.globalStatusTime=I(n)?_.toNumber(moment(e.lastPauseAt).format("x")):_.max([e.voiceStatusTime,e.chatStatusTime,e.mailStatusTime,e.smsStatusTime,e.whatsappStatusTime,e.openchannelStatusTime,e.faxStatusTime])):e.globalStatusTime=_.toNumber(moment().format("x")))}e.$on("$destroy",function(){c.removeAllListeners("user:save"),c.removeAllListeners("user:update"),c.removeAllListeners("user:agentconnect"),c.removeAllListeners("user:agentcomplete"),S&&(f.cancel(S),S=null)})}e.$inject=["$scope","$q","$timeout","$mdDialog","$document","$filter","pauses","agents","rpcAgents","api","socket","toasty","helperClasses","userProfile","userProfileSection","Auth","license","$interval"],angular.module("app.voice").controller("AgentsFaxRealtimeController",e)}(),function(){"use strict";function e(e,t,a,n,i,s,o,r,l,d,c){var m=this,u=["loggedIn","available","waiting","paused"],p=n(function(){},999);m.currentUser=c.getCurrentUser(),m.queues=i,m.userProfileSection=d&&1==d.count?d.rows[0]:null,m.crudPermissions=c.parseCrudPermissions(m.userProfileSection?m.userProfileSection.crudPermissions:null),m.query={id:c.isUser()?m.currentUser.id:void 0,section:c.isUser()?"FaxQueues":void 0,channel:"fax",sort:"name",limit:10,page:1},m.getQueues=function(){m.query.offset=(m.query.page-1)*m.query.limit,s.realtime.getQueues(m.query).$promise.then(function(e){m.queues=e}).catch(function(e){console.error(e)})},m.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:m.queues.rows,license:null,setting:null,crudPermissions:m.crudPermissions}})},m.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:m.queues.rows,realtime:!1,crudPermissions:m.crudPermissions}})},o.on("fax_queue:save",function(e){var n=_.find(m.queues.rows,["id",e.id]);n&&_.merge(n,_.pick(e,u))}),o.on("userFaxQueue:save",function(e){var n=_.find(m.queues.rows,["id",e.FaxQueueId]);n&&(n.loggedInDb++,n.agents.push({id:e.UserId}))}),o.on("userFaxQueue:remove",function(e){var n=_.find(m.queues.rows,["id",e.FaxQueueId]);n&&(0<n.loggedInDb&&n.loggedInDb--,_.remove(n.agents,["id",e.UserId]))}),o.on("user:update",function(t){m.queues.rows.forEach(function(e){var n=_.find(e.agents,["id",t.id]);n&&(!1===t.online?(n.online=!1,e.loggedInDb-=1,n.paused?(n.paused=!1,e.paused-=1):e.available-=1):n.online?t.faxPause?(n.paused=!0,e.paused+=1,e.available-=1):!t.faxPause&&n.paused&&(n.paused=!1,e.paused-=1,e.available+=1):(n.online=!0,e.loggedInDb+=1,e.available+=1))})}),e.$on("$destroy",function(){o.removeAllListeners("fax_queue:save"),o.removeAllListeners("userFaxQueue:remove"),o.removeAllListeners("userFaxQueue:save"),o.removeAllListeners("user:update"),p&&n.cancel(p)})}e.$inject=["$scope","$mdDialog","$document","$interval","queues","api","socket","toasty","userProfile","userProfileSection","Auth"],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(n.disconnect(),n.connect(),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,_.pick(e.toJSON(),_.keys(n))),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,_.pick(e.toJSON(),_.keys(n))),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){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_DYNAMICS365ACCOUNT",g.dynamics365Account=angular.copy(l),g.dynamics365Accounts=r,g.newDynamics365Account=!1,g.dynamics365Account||(g.dynamics365Account={serverUrl:t.protocol()+"://"+t.host()+(t.port()?":"+t.port():"")},g.title="INTEGRATIONS.NEW_DYNAMICS365ACCOUNT",g.newDynamics365Account=!0),g.addNewDynamics365Account=function(){g.errors=[],d.intDynamics365Account.save(g.dynamics365Account).$promise.then(function(e){g.dynamics365Accounts.unshift(e.toJSON()),o.success({title:"Dynamics365Account properly created",msg:g.dynamics365Account.name?g.dynamics365Account.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.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()})})},g.saveDynamics365Account=function(){g.errors=[],d.intDynamics365Account.update({id:g.dynamics365Account.id},g.dynamics365Account).$promise.then(function(e){var n=_.find(g.dynamics365Accounts,{id:e.id});n&&_.merge(n,_.pick(e.toJSON(),_.keys(n))),o.success({title:"Dynamics365Account properly saved!",msg:g.dynamics365Account.name?g.dynamics365Account.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.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()})})},g.deleteDynamics365Account=function(e){g.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(){d.intDynamics365Account.delete({id:g.dynamics365Account.id}).$promise.then(function(){_.remove(g.dynamics365Accounts,{id:g.dynamics365Account.id}),o.success({title:"Dynamics365Account properly deleted!",msg:(g.dynamics365Account.name||"dynamics365Account")+" has been deleted!"}),v(g.dynamics365Account)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.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(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","dynamics365Accounts","dynamics365Account","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){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.dynamics365Accounts=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="dynamics365Accounts",f.listOrder="",f.listOrderAsc=null,f.selectedDynamics365Accounts=[],f.query={fields:"createdAt,updatedAt,id,name,username,password,remoteUri,tenantId,clientId,clientSecret,serverUrl,description",sort:"-updatedAt",limit:10,page:1},f.editstate=function(e,n){t.go("app.integrations.dynamics365Accounts.edit",{id:e.id,dynamics365Account:e,crudPermissions:f.crudPermissions})},f.testtestintegrationaccount=function(e,n){return m.intDynamics365Account.getFields({id:e.id,test:!0}).$promise.then(function(){p.success({title:"Dynamics365Account properly tested",msg:"Connection succeded!"})}).catch(function(e){p.error({title:"Dynamics365Account 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("dynamics365Account")+"?").htmlContent("<b>"+(e.name||"dynamics365Account")+"</b> will be deleted.").ariaLabel("delete dynamics365Account").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getDynamics365Accounts=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.intDynamics365Account.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="Dynamics365Accounts",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.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:f.dynamics365Accounts.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteDynamics365Account=y,f.exportSelectedDynamics365Accounts=function(){var e=angular.copy(f.selectedDynamics365Accounts);return f.selectedDynamics365Accounts=[],e},f.deleteSelectedDynamics365Accounts=function(e){var n=i.confirm().title("Are you sure want to delete the selected dynamics365Accounts?").htmlContent("<b>"+f.selectedDynamics365Accounts.length+" selected</b> will be deleted.").ariaLabel("delete Dynamics365Accounts").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedDynamics365Accounts.forEach(function(e){y(e)}),f.selectedDynamics365Accounts=[]})},f.deselectDynamics365Accounts=function(){f.selectedDynamics365Accounts=[]},f.selectAllDynamics365Accounts=function(){f.selectedDynamics365Accounts=f.dynamics365Accounts.rows};var b=!0,A=1;function E(e){f.dynamics365Accounts=e||{count:0,rows:[]}}function y(e){m.intDynamics365Account.delete({id:e.id}).$promise.then(function(){_.remove(f.dynamics365Accounts.rows,{id:e.id}),f.dynamics365Accounts.count-=1,f.dynamics365Accounts.rows.length||f.getDynamics365Accounts(),p.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){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEintDynamics365Account"}];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:DELETEintDynamics365Account",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.getDynamics365Accounts())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","dynamics365Accounts","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.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.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,_.pick(e.toJSON(),_.keys(n))),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){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.dynamics365Account=c||e.params.dynamics365Account||{},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.gotoDynamics365Accounts=function(){e.go("app.integrations.dynamics365Accounts",{},{reload:"app.integrations.dynamics365Accounts"})},u.saveDynamics365Account=function(){r.intDynamics365Account.update({id:u.dynamics365Account.id},u.dynamics365Account).$promise.then(function(){l.success({title:"Dynamics365Account updated!",msg:u.dynamics365Account.name?u.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","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,_.pick(e.toJSON(),_.keys(n))),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,_.pick(e.toJSON(),_.keys(n))),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,_.pick(e.toJSON(),_.keys(n))),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,_.pick(e.toJSON(),_.keys(n))),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,_.pick(e.toJSON(),_.keys(n))),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,_.pick(e.toJSON(),_.keys(n))),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,_.pick(e.toJSON(),_.keys(n))),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,_.pick(e.toJSON(),_.keys(n))),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,_.pick(e.toJSON(),_.keys(n))),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,_.pick(e.toJSON(),_.keys(n))),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,_.pick(e.toJSON(),_.keys(n))),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,_.pick(e.toJSON(),_.keys(n))),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,_.pick(e.toJSON(),_.keys(n))),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,_.pick(e.toJSON(),_.keys(n))),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,_.pick(e.toJSON(),_.keys(n))),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,_.pick(e.toJSON(),_.keys(n))),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,_.pick(e.toJSON(),_.keys(n))),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,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_MAILACCOUNT",g.mailAccount=angular.copy(l),g.mailAccounts=r,g.newMailAccount=!1,g.mailAccount||(g.mailAccount={active:!0,cservice:"null",cauthentication:!0,fontSize:13,waitForTheAssignedAgent:10,notificationSound:!0,queueTransferTimeout:300,agentTransferTimeout:300},g.title="MAIL.NEW_MAILACCOUNT",g.newMailAccount=!0),n.params.id&&(g.mailAccount.MailAccountId=n.params.id),g.addNewMailAccount=function(){g.errors=[],d.mailAccount.save(g.mailAccount).$promise.then(function(e){g.mailAccounts.unshift(e.toJSON()),o.success({title:"MailAccount properly created",msg:g.mailAccount.name?g.mailAccount.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.mailAccount.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.mailAccount.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveMailAccount=function(){g.errors=[],d.mailAccount.update({id:g.mailAccount.id},g.mailAccount).$promise.then(function(e){var n=_.find(g.mailAccounts,{id:e.id});n&&_.merge(n,_.pick(e.toJSON(),_.keys(n))),o.success({title:"MailAccount properly saved!",msg:g.mailAccount.name?g.mailAccount.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.mailAccount.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.mailAccount.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteMailAccount=function(e){if(g.mailAccount.service)return o.error({title:"Mail Account not deleted!",msg:"You can't remove service account"});g.errors=[];var n=a.confirm().title("Are you sure?").content("The mailAccount will be deleted.").ariaLabel("Delete MailAccount").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.mailAccount.delete({id:g.mailAccount.id}).$promise.then(function(){_.remove(g.mailAccounts,{id:g.mailAccount.id}),o.success({title:"MailAccount properly deleted!",msg:(g.mailAccount.name||"mailAccount")+" has been deleted!"}),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++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.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.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.mailAccount&&(t=_.find(g.lists,{id:Number(g.mailAccount.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.mailAccount&&(a=_.find(g.lists,{id:Number(g.mailAccount.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","mailAccounts","mailAccount","api","Auth","license","setting","crudPermissions"],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){m.mailAccountInteractions=e||{count:0,rows:[]};for(var n=0;n<m.mailAccountInteractions.rows.length;n+=1){var t=m.mailAccountInteractions.rows[n];v(t),t.Owner.name=h(t)}}function p(){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,u).$promise}function g(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||p(),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 v(e){_.isEmpty(e.to)||_.includes(e.to,m.mailAccount.email)?e.Contact?(e.contactName=(e.Contact.firstName||"")+" "+(e.Contact.lastName||""),e.contactInfo=e.Contact.email||""):e.contactName=i.instant("MAIL.UNKNOWN"):(e.contactName=e.to.split(" <")[0],e.contactInfo=e.to.split("<").pop().split(">")[0])}function h(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"]}}]},d.tag.get().$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(){g(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=u,m.getMailAccountInteractions=p,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,p()}}).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=g,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){g(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,_.pick(e.toJSON(),_.keys(n))),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,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.mailAccount=c||t.params.mailAccount||{},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:610}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;n&&n.enabled?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()})});t.go("app.mail.realtime.accounts",{})}},p.agentadddialog=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:p.mailAccounts?p.mailAccounts.rows:[],crudPermissions:p.crudPermissions,realtime:!1}})},p.alert=l.info,p.gotoMailAccounts=function(){t.go("app.mail.mailAccounts",{},{reload:"app.mail.mailAccounts"})},p.saveMailAccount=function(){r.mailAccount.update({id:p.mailAccount.id},p.mailAccount).$promise.then(function(){l.success({title:"MailAccount updated!",msg:p.mailAccount.name?p.mailAccount.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETmailAccount",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.mailAccount&&(t=_.find(p.lists,{id:Number(p.mailAccount.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.mailAccount&&(a=_.find(p.lists,{id:Number(p.mailAccount.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","mailAccount","userProfile","userProfileSection"],angular.module("app.mail").controller("MailAccountController",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.mailAccounts=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="mailAccounts",f.listOrder="",f.listOrderAsc=null,f.selectedMailAccounts=[],f.query={fields:"createdAt,updatedAt,id,name,key,email,ListId,active,cservice,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},f.arraycservice=_.keyBy([{option:"Custom",value:"null"},{option:"Gmail",value:"'gmail'"},{option:"Hotmail",value:"'hotmail'"},{option:"Yahoo",value:"'yahoo'"},{option:"Outlook365",value:"'outlook365'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f["arrayImap.service"]=_.keyBy([{option:"Custom",value:"null"},{option:"Gmail",value:"'gmail'"},{option:"Hotmail",value:"'hotmail'"},{option:"Yahoo",value:"'yahoo'"},{option:"Outlook365",value:"'outlook365'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f["arraySmtp.service"]=_.keyBy([{option:"Custom",value:"null"},{option:"Gmail",value:"'gmail'"},{option:"Hotmail",value:"'hotmail'"},{option:"Yahoo",value:"'yahoo'"},{option:"Outlook365",value:"'outlook365'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.editstate=function(e,n){t.go("app.mail.mailAccounts.edit",{id:e.id,mailAccount:e,crudPermissions:f.crudPermissions})},f.verifysmtpverifysmtp=function(e,n){{if(e&&e.id)return m.mailAccount.verifySmtp({id:e.id}).$promise.then(function(){p.success({title:"Smtp properly verified",msg:"Connection succeded!"})}).catch(function(e){p.error({title:"Smtp properly verified",msg:e.data?JSON.stringify(e.data):e.toString()})});p.error({title:"Smtp properly verified",msg:"Smpt id unknown"})}},f.interactionsgoto=function(e,n){t.go("app.mail.mailAccounts.edit",{id:e.id,tab:7})},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.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.mail.realtime.accounts",{})}},f.agentadddialog=function(e,n){i.show({controller:"MailAccountagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/mail/views/mailAccounts/edit/agentadd/agentadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{mailAccount:e,mailAccounts:f.mailAccounts?f.mailAccounts.rows:[],crudPermissions:f.crudPermissions,realtime:!1}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("mailAccount")+"?").htmlContent("<b>"+(e.name||"mailAccount")+"</b> will be deleted.").ariaLabel("delete mailAccount").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getMailAccounts=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.mailAccount.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="MailAccounts",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditMailAccount=function(e,n){i.show({controller:"CreateOrEditMailAccountDialogController",controllerAs:"vm",templateUrl:"app/main/apps/mail/views/mailAccounts/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{mailAccount:n,mailAccounts:f.mailAccounts.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteMailAccount=y,f.exportSelectedMailAccounts=function(){var e=angular.copy(f.selectedMailAccounts);return f.selectedMailAccounts=[],e},f.deleteSelectedMailAccounts=function(e){var n=i.confirm().title("Are you sure want to delete the selected mailAccounts?").htmlContent("<b>"+f.selectedMailAccounts.length+" selected</b> will be deleted.").ariaLabel("delete MailAccounts").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedMailAccounts.forEach(function(e){y(e)}),f.selectedMailAccounts=[]})},f.deselectMailAccounts=function(){f.selectedMailAccounts=[]},f.selectAllMailAccounts=function(){f.selectedMailAccounts=f.mailAccounts.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.mailAccount&&(t=_.find(f.lists,{id:Number(f.mailAccount.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.mailAccount&&(a=_.find(f.lists,{id:Number(f.mailAccount.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.mailAccounts=e||{count:0,rows:[]}}function y(e){if(e.service)return p.error({title:"Mail Account not deleted!",msg:"You can't remove service account"});m.mailAccount.delete({id:e.id}).$promise.then(function(){_.remove(f.mailAccounts.rows,{id:e.id}),f.mailAccounts.count-=1,f.mailAccounts.rows.length||f.getMailAccounts(),p.success({title:_.startCase("MailAccount")+" 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:DELETEmailAccount"}];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:DELETEmailAccount",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.getMailAccounts())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","mailAccounts","userProfile","userProfileSection","api","msUtils","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,_.pick(e.toJSON(),_.keys(n))),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,_.pick(e.toJSON(),_.keys(n))),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,o,n,t,a,i,s,r,l,d,c,m,u,p,g,v,h,f){var b=this,A=["userpic","online","lastLoginAt","lastPauseAt","pauseType","lastPauseAt","internal","address","chatPause","openchannelPause","mailPause","smsPause","whatsappPause","faxPause","voicePause","chatCapacity","openchannelCapacity","mailCapacity","smsCapacity","whatsappCapacity","faxCapacity","chatCurrentCapacity","openchannelCurrentCapacity","mailCurrentCapacity","smsCurrentCapacity","whatsappCurrentCapacity","faxCurrentCapacity","chatStatus","openchannelStatus","mailStatus","smsStatus","whatsappStatus","faxStatus","voiceStatus","chatStatusTime","openchannelStatusTime","mailStatusTime","smsStatusTime","whatsappStatusTime","faxStatusTime","voiceStatusTime","queue","destconnectedlinenum","screenrecording","phoneBarEnableScreenRecordingByAgent","phoneBarEnableAutomaticScreenRecording"],E=["chatPause","openchannelPause","mailPause","smsPause","whatsappPause","faxPause","voicePause","online"];for(var y in b.currentUser=v.getCurrentUser(),b.availableStates=["ringing","inuse","busy","onhold","not_inuse"],b.pauses=s||{count:0,rows:[]},b.license=h,b.userProfile=p,b.userProfileSection=g&&1==g.count?g.rows[0]:null,b.crudPermissions=v.parseCrudPermissions(b.userProfileSection?b.userProfileSection.crudPermissions:null),b.agents=r?_.keyBy(r.rows?r.rows:[],"id"):{},b.rpcAgents=l?_.keyBy(l.rows?l.rows:[],"id"):{},b.paginatedAgents={},b.load=!1,b.order=[],b.agentInternal={},b.agents)b.agents.hasOwnProperty(y)&&(b.agents[y].init=!0);b.query={limit:10,page:1,order:"fullname",globalStatusFilter:"",pauseTypeFilter:""},b.logout=function(e,n){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"}),b.agents[e.id]&&(b.agents[e.id].online=!1),b.rpcAgents[e.id]&&(b.rpcAgents[e.id].online=!1),T()}).catch(function(e){m.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.staff.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},b.queueAdd=function(e,n){t.show({controller:"AgentqueueaddController",controllerAs:"vm",templateUrl:"app/main/apps/staff/views/agents/edit/queueadd/queueadd.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{agent:e,agents:[],channel:"mail",direction:"inbound",crudPermissions:b.crudPermissions}})},b.pause=function(n,e){return d.user.pause({id:n.id,type:e}).$promise.then(function(e){b.agents[n.id]&&_.merge(b.agents[n.id],_.pick(e,A)),b.rpcAgents[n.id]&&_.merge(b.rpcAgents[n.id],_.pick(e,A)),w(b.agents[n.id])}).catch(function(e){m.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.staff.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},b.unPause=function(n){return d.user.unpause({id:n.id}).$promise.then(function(e){b.agents[n.id]&&_.merge(b.agents[n.id],_.pick(e,A)),b.rpcAgents[n.id]&&_.merge(b.rpcAgents[n.id],_.pick(e,A)),w(b.agents[n.id])}).catch(function(e){m.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.staff.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},b.showInfo=function(e){t.show(t.alert().clickOutsideToClose(!0).title("Legend").htmlContent("<div>TODO legend status + state</div>").ok("Ok").targetEvent(e))},b.getAgentStatus=O,b.getAgentGlobalStatus=w,b.isPause=I,b.checkPause=function(e){return"pause"===e},b.isPartialPause=function(e){return"*pause"===e},b.onSave=function(e){b.agents[e.id]&&(_.merge(b.agents[e.id],_.pick(_.omit(e,E),A)),_.merge(b.rpcAgents[e.id],_.pick(_.omit(e,E),A)),w(b.agents[e.id]))},b.onUpdate=function(e){b.agents[e.id]&&(_.merge(b.agents[e.id],_.pick(e,A)),_.merge(b.rpcAgents[e.id],_.pick(e,A)),e.lastPauseAt&&(b.agents[e.id].globalStatusTime=e.lastPauseAt,b.rpcAgents[e.id].globalStatusTime=e.lastPauseAt),w(b.agents[e.id]))},b.onInit=T,b.onConnect=function(e){b.agents[b.agentInternal[e.destaccountcode]]&&(_.merge(b.agents[b.agentInternal[e.destaccountcode]],_.pick(e,["queue","destconnectedlinenum","routealias"])),_.merge(b.rpcAgents[b.agentInternal[e.destaccountcode]],_.pick(e,["queue","destconnectedlinenum","routealias"])))},b.onComplete=function(e){b.agents[b.agentInternal[e.destaccountcode]]&&(b.agents[b.agentInternal[e.destaccountcode]]=_.omit(b.agents[b.agentInternal[e.destaccountcode]],["queue","destconnectedlinenum"]),b.rpcAgents[b.agentInternal[e.destaccountcode]]=_.omit(b.rpcAgents[b.agentInternal[e.destaccountcode]],["queue","destconnectedlinenum"]))},b.screenRecording=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:"api.user.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},c.on("user:save",b.onSave),c.on("user:update",b.onUpdate),c.on("user:agentconnect",b.onConnect),c.on("user:agentcomplete",b.onComplete),T();var S=f(function(){b.load&&(b.load=!1,T())},999);function T(e){b.load=!1;var n,t,a=o.defer();b.promise=a.promise,b.filteredAgents=[],b.order=[],_.forIn(b.agents,function(e,n){b.rpcAgents[n]&&_.merge(e,_.pick(_.omit(b.rpcAgents[n],E),A)),w(e),e.online?(b.filteredAgents.push(e),b.agentInternal[e.internal]=n):e.globalStatusTime=_.toNumber(moment().format("x"))}),b.query.globalStatusFilter&&_.remove(b.filteredAgents,function(e){return e.globalStatus!==b.query.globalStatusFilter}),b.query.pauseTypeFilter&&_.remove(b.filteredAgents,function(e){return e.pauseType!==b.query.pauseTypeFilter}),b.query.filter&&_.remove(b.filteredAgents,function(e){return e.fullname.toLowerCase().indexOf(b.query.filter.toLowerCase())<0}),b.filteredAgents=(n=b.filteredAgents,t=_.startsWith(b.query.order,"-")?"desc":"asc",_.orderBy(n,[b.query.order.replace("-","")],[t]));var i=(b.query.page-1)*b.query.limit;b.paginatedAgents=_.drop(b.filteredAgents,i).slice(0,b.query.limit);for(var s=0;s<b.paginatedAgents.length;s+=1)b.order.push(b.paginatedAgents[s].id);a.resolve(),b.load=!0}function I(e){return"pause"===e||"*pause"===e}function C(e){return"idle"===e||"unknown"===e||"unavailable"===e||"ringing"===e||_.isNil(e)}function O(e,n){return"voice"===n?"idle"!==e[n+"Status"]?e[n+"Status"]:e[n+"Pause"]?e[n+"Status"]="pause":"idle":e[n+"Pause"]?e[n+"Status"]="pause":e[n+"Status"]}function w(e){var n="unknown";n=_.every([O(e,"voice"),O(e,"chat"),O(e,"mail"),O(e,"openchannel"),O(e,"sms"),O(e,"whatsapp"),O(e,"fax")],I)?"pause":_.some([O(e,"voice"),O(e,"chat"),O(e,"mail"),O(e,"openchannel"),O(e,"sms"),O(e,"whatsapp"),O(e,"fax")],I)?"*pause":_.every([O(e,"voice"),O(e,"chat"),O(e,"mail"),O(e,"openchannel"),O(e,"sms"),O(e,"whatsapp"),O(e,"fax")],C)?"idle":"busy",e.globalStatus!==n&&(e.globalStatus=n,e.init?(e.init=!1,e.globalStatusTime=I(n)?_.toNumber(moment(e.lastPauseAt).format("x")):_.max([e.voiceStatusTime,e.chatStatusTime,e.mailStatusTime,e.smsStatusTime,e.whatsappStatusTime,e.openchannelStatusTime,e.faxStatusTime])):e.globalStatusTime=_.toNumber(moment().format("x")))}e.$on("$destroy",function(){c.removeAllListeners("user:save"),c.removeAllListeners("user:update"),c.removeAllListeners("user:agentconnect"),c.removeAllListeners("user:agentcomplete"),S&&(f.cancel(S),S=null)})}e.$inject=["$scope","$q","$timeout","$mdDialog","$document","$filter","pauses","agents","rpcAgents","api","socket","toasty","helperClasses","userProfile","userProfileSection","Auth","license","$interval"],angular.module("app.voice").controller("AgentsMailRealtimeController",e)}(),function(){"use strict";function e(e,t,a,n,i,s,o,r,l,d,c){var m=this,u=["loggedIn","available","waiting","paused"],p=n(function(){},999);m.currentUser=c.getCurrentUser(),m.queues=i,m.userProfileSection=d&&1==d.count?d.rows[0]:null,m.crudPermissions=c.parseCrudPermissions(m.userProfileSection?m.userProfileSection.crudPermissions:null),m.query={id:c.isUser()?m.currentUser.id:void 0,section:c.isUser()?"MailQueues":void 0,channel:"mail",sort:"name",limit:10,page:1},m.getQueues=function(){m.query.offset=(m.query.page-1)*m.query.limit,s.realtime.getQueues(m.query).$promise.then(function(e){m.queues=e}).catch(function(e){console.error(e)})},m.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:m.queues.rows,license:null,setting:null,crudPermissions:m.crudPermissions}})},m.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:m.queues.rows,realtime:!1,crudPermissions:m.crudPermissions}})},o.on("mail_queue:save",function(e){var n=_.find(m.queues.rows,["id",e.id]);n&&_.merge(n,_.pick(e,u))}),o.on("userMailQueue:save",function(e){var n=_.find(m.queues.rows,["id",e.MailQueueId]);n&&(n.loggedInDb++,n.agents.push({id:e.UserId}))}),o.on("userMailQueue:remove",function(e){var n=_.find(m.queues.rows,["id",e.MailQueueId]);n&&(0<n.loggedInDb&&n.loggedInDb--,_.remove(n.agents,["id",e.UserId]))}),o.on("user:update",function(t){m.queues.rows.forEach(function(e){var n=_.find(e.agents,["id",t.id]);n&&(!1===t.online?(n.online=!1,e.loggedInDb-=1,n.paused?(n.paused=!1,e.paused-=1):e.available-=1):n.online?t.mailPause?(n.paused=!0,e.paused+=1,e.available-=1):!t.mailPause&&n.paused&&(n.paused=!1,e.paused-=1,e.available+=1):(n.online=!0,e.loggedInDb+=1,e.available+=1))})}),e.$on("$destroy",function(){o.removeAllListeners("mail_queue:save"),o.removeAllListeners("userMailQueue:remove"),o.removeAllListeners("userMailQueue:save"),o.removeAllListeners("user:update"),p&&n.cancel(p)})}e.$inject=["$scope","$mdDialog","$document","$interval","queues","api","socket","toasty","userProfile","userProfileSection","Auth"],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(n.disconnect(),n.connect(),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,_.pick(e.toJSON(),_.keys(n))),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){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,_.pick(e.toJSON(),_.keys(n))),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:"CreateOrEditHopperCampaignIdDialogController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/ivrCampaigns/edit/hoppers/dialog.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}})},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,_.pick(e.toJSON(),_.keys(n))),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,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,_.pick(e.toJSON(),_.keys(n))),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:"CreateOrEditHopperVoiceQueueIdDialogController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/queueCampaigns/edit/hoppers/dialog.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}})},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)}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.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,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})})});var n=_.find(g.hoppers,{id:e.id});n&&_.merge(n,_.pick(e.toJSON(),_.keys(n))),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})}),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,description,mandatoryDisposition,mandatoryDispositionPauseId,dialPredictiveIntervalMaxThreshold,dialPredictiveIntervalMinThreshold",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,o,n,t,a,i,s,r,l,d,c,m,u,p,g,v,h,f){var b=this,A=["userpic","online","lastLoginAt","lastPauseAt","pauseType","lastPauseAt","internal","address","chatPause","openchannelPause","mailPause","smsPause","whatsappPause","faxPause","voicePause","chatCapacity","openchannelCapacity","mailCapacity","smsCapacity","whatsappCapacity","faxCapacity","chatCurrentCapacity","openchannelCurrentCapacity","mailCurrentCapacity","smsCurrentCapacity","whatsappCurrentCapacity","faxCurrentCapacity","chatStatus","openchannelStatus","mailStatus","smsStatus","whatsappStatus","faxStatus","voiceStatus","chatStatusTime","openchannelStatusTime","mailStatusTime","smsStatusTime","whatsappStatusTime","faxStatusTime","voiceStatusTime","queue","destconnectedlinenum","screenrecording","phoneBarEnableScreenRecordingByAgent","phoneBarEnableAutomaticScreenRecording"],E=["chatPause","openchannelPause","mailPause","smsPause","whatsappPause","faxPause","voicePause","online"];for(var y in b.currentUser=v.getCurrentUser(),b.availableStates=["ringing","inuse","busy","onhold","not_inuse"],b.pauses=s||{count:0,rows:[]},b.license=h,b.userProfile=p,b.userProfileSection=g&&1==g.count?g.rows[0]:null,b.crudPermissions=v.parseCrudPermissions(b.userProfileSection?b.userProfileSection.crudPermissions:null),b.agents=r?_.keyBy(r.rows?r.rows:[],"id"):{},b.rpcAgents=l?_.keyBy(l.rows?l.rows:[],"id"):{},b.paginatedAgents={},b.load=!1,b.order=[],b.agentInternal={},b.agents)b.agents.hasOwnProperty(y)&&(b.agents[y].init=!0);b.query={limit:10,page:1,order:"fullname",globalStatusFilter:"",pauseTypeFilter:""},b.logout=function(e,n){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"}),b.agents[e.id]&&(b.agents[e.id].online=!1),b.rpcAgents[e.id]&&(b.rpcAgents[e.id].online=!1),T()}).catch(function(e){m.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.staff.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},b.queueAdd=function(e,n){t.show({controller:"AgentqueueaddController",controllerAs:"vm",templateUrl:"app/main/apps/staff/views/agents/edit/queueadd/queueadd.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{agent:e,agents:[],channel:"voice",direction:"outbound",crudPermissions:b.crudPermissions}})},b.pause=function(n,e){return d.user.pause({id:n.id,type:e}).$promise.then(function(e){b.agents[n.id]&&_.merge(b.agents[n.id],_.pick(e,A)),b.rpcAgents[n.id]&&_.merge(b.rpcAgents[n.id],_.pick(e,A)),w(b.agents[n.id])}).catch(function(e){m.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.staff.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},b.unPause=function(n){return d.user.unpause({id:n.id}).$promise.then(function(e){b.agents[n.id]&&_.merge(b.agents[n.id],_.pick(e,A)),b.rpcAgents[n.id]&&_.merge(b.rpcAgents[n.id],_.pick(e,A)),w(b.agents[n.id])}).catch(function(e){m.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.staff.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},b.showInfo=function(e){t.show(t.alert().clickOutsideToClose(!0).title("Legend").htmlContent("<div>TODO legend status + state</div>").ok("Ok").targetEvent(e))},b.getAgentStatus=O,b.getAgentGlobalStatus=w,b.isPause=I,b.checkPause=function(e){return"pause"===e},b.isPartialPause=function(e){return"*pause"===e},b.onSave=function(e){b.agents[e.id]&&(_.merge(b.agents[e.id],_.pick(_.omit(e,E),A)),_.merge(b.rpcAgents[e.id],_.pick(_.omit(e,E),A)),w(b.agents[e.id]))},b.onUpdate=function(e){b.agents[e.id]&&(_.merge(b.agents[e.id],_.pick(e,A)),_.merge(b.rpcAgents[e.id],_.pick(e,A)),e.lastPauseAt&&(b.agents[e.id].globalStatusTime=e.lastPauseAt,b.rpcAgents[e.id].globalStatusTime=e.lastPauseAt),w(b.agents[e.id]))},b.onInit=T,b.onConnect=function(e){b.agents[b.agentInternal[e.destaccountcode]]&&(_.merge(b.agents[b.agentInternal[e.destaccountcode]],_.pick(e,["queue","destconnectedlinenum","routealias"])),_.merge(b.rpcAgents[b.agentInternal[e.destaccountcode]],_.pick(e,["queue","destconnectedlinenum","routealias"])))},b.onComplete=function(e){b.agents[b.agentInternal[e.destaccountcode]]&&(b.agents[b.agentInternal[e.destaccountcode]]=_.omit(b.agents[b.agentInternal[e.destaccountcode]],["queue","destconnectedlinenum"]),b.rpcAgents[b.agentInternal[e.destaccountcode]]=_.omit(b.rpcAgents[b.agentInternal[e.destaccountcode]],["queue","destconnectedlinenum"]))},b.screenRecording=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:"api.user.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},c.on("user:save",b.onSave),c.on("user:update",b.onUpdate),c.on("user:agentconnect",b.onConnect),c.on("user:agentcomplete",b.onComplete),T();var S=f(function(){b.load&&(b.load=!1,T())},999);function T(e){b.load=!1;var n,t,a=o.defer();b.promise=a.promise,b.filteredAgents=[],b.order=[],_.forIn(b.agents,function(e,n){b.rpcAgents[n]&&_.merge(e,_.pick(_.omit(b.rpcAgents[n],E),A)),w(e),e.online?(b.filteredAgents.push(e),b.agentInternal[e.internal]=n):e.globalStatusTime=_.toNumber(moment().format("x"))}),b.query.globalStatusFilter&&_.remove(b.filteredAgents,function(e){return e.globalStatus!==b.query.globalStatusFilter}),b.query.pauseTypeFilter&&_.remove(b.filteredAgents,function(e){return e.pauseType!==b.query.pauseTypeFilter}),b.query.filter&&_.remove(b.filteredAgents,function(e){return e.fullname.toLowerCase().indexOf(b.query.filter.toLowerCase())<0}),b.filteredAgents=(n=b.filteredAgents,t=_.startsWith(b.query.order,"-")?"desc":"asc",_.orderBy(n,[b.query.order.replace("-","")],[t]));var i=(b.query.page-1)*b.query.limit;b.paginatedAgents=_.drop(b.filteredAgents,i).slice(0,b.query.limit);for(var s=0;s<b.paginatedAgents.length;s+=1)b.order.push(b.paginatedAgents[s].id);a.resolve(),b.load=!0}function I(e){return"pause"===e||"*pause"===e}function C(e){return"idle"===e||"unknown"===e||"unavailable"===e||"ringing"===e||_.isNil(e)}function O(e,n){return"voice"===n?"idle"!==e[n+"Status"]?e[n+"Status"]:e[n+"Pause"]?e[n+"Status"]="pause":"idle":e[n+"Pause"]?e[n+"Status"]="pause":e[n+"Status"]}function w(e){var n="unknown";n=_.every([O(e,"voice"),O(e,"chat"),O(e,"mail"),O(e,"openchannel"),O(e,"sms"),O(e,"whatsapp"),O(e,"fax")],I)?"pause":_.some([O(e,"voice"),O(e,"chat"),O(e,"mail"),O(e,"openchannel"),O(e,"sms"),O(e,"whatsapp"),O(e,"fax")],I)?"*pause":_.every([O(e,"voice"),O(e,"chat"),O(e,"mail"),O(e,"openchannel"),O(e,"sms"),O(e,"whatsapp"),O(e,"fax")],C)?"idle":"busy",e.globalStatus!==n&&(e.globalStatus=n,e.init?(e.init=!1,e.globalStatusTime=I(n)?_.toNumber(moment(e.lastPauseAt).format("x")):_.max([e.voiceStatusTime,e.chatStatusTime,e.mailStatusTime,e.smsStatusTime,e.whatsappStatusTime,e.openchannelStatusTime,e.faxStatusTime])):e.globalStatusTime=_.toNumber(moment().format("x")))}e.$on("$destroy",function(){c.removeAllListeners("user:save"),c.removeAllListeners("user:update"),c.removeAllListeners("user:agentconnect"),c.removeAllListeners("user:agentcomplete"),S&&(f.cancel(S),S=null)})}e.$inject=["$scope","$q","$timeout","$mdDialog","$document","$filter","pauses","agents","rpcAgents","api","socket","toasty","helperClasses","userProfile","userProfileSection","Auth","license","$interval"],angular.module("app.voice").controller("AgentsMotionDialerRealtimeController",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){var m=this,u=["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"],p=n(function(){},999);m.currentUser=c.getCurrentUser(),m.queues=i,m.userProfileSection=d&&1==d.count?d.rows[0]:null,m.crudPermissions=c.parseCrudPermissions(m.userProfileSection?m.userProfileSection.crudPermissions:null),m.query={id:c.isUser()?m.currentUser.id:void 0,section:c.isUser()?"QueueCampaigns":void 0,channel:"voice",type:"outbound",sort:"name",limit:10,page:1},m.getQueues=function(){m.query.offset=(m.query.page-1)*m.query.limit,s.realtime.getQueues(m.query).$promise.then(function(e){m.queues=e}).catch(function(e){console.error(e)})},m.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:m.queues.rows,license:null,setting:null,crudPermissions:m.crudPermissions}})},m.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:m.queues.rows,realtime:!0,crudPermissions:m.crudPermissions}})},m.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}})},o.onWithoutApply("voice_queue:save",function(e){var n=_.find(m.queues.rows,["id",e.id]);n&&(_.merge(n,_.pick(e,u)),_.isNil(e.startPredictive)&&(n.startPredictive=void 0))}),o.on("userVoiceQueueRt:save",function(e){var n=_.find(m.queues.rows,["id",e.MotionDialerQueueId]);n&&(n.loggedInDb++,n.agents.push({id:e.UserId}))}),o.on("user:agentconnect",function(t){m.queues.rows.forEach(function(e){var n=_.find(e.agents,["id",t.id]);n&&(e.available-=1)})}),o.on("user:agentcomplete",function(t){m.queues.rows.forEach(function(e){var n=_.find(e.agents,["id",t.id]);n&&(e.available+=1)})}),o.on("user:update",function(t){m.queues.rows.forEach(function(e){var n=_.find(e.agents,["id",t.id]);n&&(!1===t.online?(n.online=!1,e.loggedInDb-=1,n.paused?(n.paused=!1,e.paused-=1):e.available-=1):n.online?t.voicePause?(n.paused=!0,e.paused+=1,e.available-=1):!t.voicePause&&n.paused&&(n.paused=!1,e.paused-=1,e.available+=1):(n.online=!0,e.loggedInDb+=1,e.available+=1))})}),e.$on("$destroy",function(){o.removeAllListeners("voice_queue:save"),o.removeAllListeners("userVoiceQueueRt:save"),o.removeAllListeners("user:agentconnect"),o.removeAllListeners("user:agentcomplete"),o.removeAllListeners("user:update"),p&&n.cancel(p)})}e.$inject=["$scope","$mdDialog","$document","$interval","queues","api","socket","toasty","userProfile","userProfileSection","Auth"],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(n.disconnect(),n.connect(),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,_.pick(e.toJSON(),_.keys(n))),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){m.openchannelAccountInteractions=e||{count:0,rows:[]};for(var n=0;n<m.openchannelAccountInteractions.rows.length;n+=1){var t=m.openchannelAccountInteractions.rows[n];v(t),t.Owner.name=h(t)}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=d.openchannelInteraction.get(m.query,u).$promise}function g(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||p(),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 v(e){e.from?e.contactName=e.from:e.Contact?e.contactName=(e.Contact.firstName||"")+" "+(e.Contact.lastName||""):e.contactName=i.instant("OPENCHANNEL.UNKNOWN")}function h(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"]}}]},d.tag.get().$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(){g(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=u,m.getOpenchannelAccountInteractions=p,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,p()}}).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=g,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){g(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,_.pick(e.toJSON(),_.keys(n))),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,_.pick(e.toJSON(),_.keys(n))),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,o,n,t,a,i,s,r,l,d,c,m,u,p,g,v,h,f){var b=this,A=["userpic","online","lastLoginAt","lastPauseAt","pauseType","lastPauseAt","internal","address","chatPause","openchannelPause","mailPause","smsPause","whatsappPause","faxPause","voicePause","chatCapacity","openchannelCapacity","mailCapacity","smsCapacity","whatsappCapacity","faxCapacity","chatCurrentCapacity","openchannelCurrentCapacity","mailCurrentCapacity","smsCurrentCapacity","whatsappCurrentCapacity","faxCurrentCapacity","chatStatus","openchannelStatus","mailStatus","smsStatus","whatsappStatus","faxStatus","voiceStatus","chatStatusTime","openchannelStatusTime","mailStatusTime","smsStatusTime","whatsappStatusTime","faxStatusTime","voiceStatusTime","queue","destconnectedlinenum","screenrecording","phoneBarEnableScreenRecordingByAgent","phoneBarEnableAutomaticScreenRecording"],E=["chatPause","openchannelPause","mailPause","smsPause","whatsappPause","faxPause","voicePause","online"];for(var y in b.currentUser=v.getCurrentUser(),b.availableStates=["ringing","inuse","busy","onhold","not_inuse"],b.pauses=s||{count:0,rows:[]},b.license=h,b.userProfile=p,b.userProfileSection=g&&1==g.count?g.rows[0]:null,b.crudPermissions=v.parseCrudPermissions(b.userProfileSection?b.userProfileSection.crudPermissions:null),b.agents=r?_.keyBy(r.rows?r.rows:[],"id"):{},b.rpcAgents=l?_.keyBy(l.rows?l.rows:[],"id"):{},b.paginatedAgents={},b.load=!1,b.order=[],b.agentInternal={},b.agents)b.agents.hasOwnProperty(y)&&(b.agents[y].init=!0);b.query={limit:10,page:1,order:"fullname",globalStatusFilter:"",pauseTypeFilter:""},b.logout=function(e,n){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"}),b.agents[e.id]&&(b.agents[e.id].online=!1),b.rpcAgents[e.id]&&(b.rpcAgents[e.id].online=!1),T()}).catch(function(e){m.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.staff.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},b.queueAdd=function(e,n){t.show({controller:"AgentqueueaddController",controllerAs:"vm",templateUrl:"app/main/apps/staff/views/agents/edit/queueadd/queueadd.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{agent:e,agents:[],channel:"openchannel",direction:"inbound",crudPermissions:b.crudPermissions}})},b.pause=function(n,e){return d.user.pause({id:n.id,type:e}).$promise.then(function(e){b.agents[n.id]&&_.merge(b.agents[n.id],_.pick(e,A)),b.rpcAgents[n.id]&&_.merge(b.rpcAgents[n.id],_.pick(e,A)),w(b.agents[n.id])}).catch(function(e){m.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.staff.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},b.unPause=function(n){return d.user.unpause({id:n.id}).$promise.then(function(e){b.agents[n.id]&&_.merge(b.agents[n.id],_.pick(e,A)),b.rpcAgents[n.id]&&_.merge(b.rpcAgents[n.id],_.pick(e,A)),w(b.agents[n.id])}).catch(function(e){m.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.staff.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},b.showInfo=function(e){t.show(t.alert().clickOutsideToClose(!0).title("Legend").htmlContent("<div>TODO legend status + state</div>").ok("Ok").targetEvent(e))},b.getAgentStatus=O,b.getAgentGlobalStatus=w,b.isPause=I,b.checkPause=function(e){return"pause"===e},b.isPartialPause=function(e){return"*pause"===e},b.onSave=function(e){b.agents[e.id]&&(_.merge(b.agents[e.id],_.pick(_.omit(e,E),A)),_.merge(b.rpcAgents[e.id],_.pick(_.omit(e,E),A)),w(b.agents[e.id]))},b.onUpdate=function(e){b.agents[e.id]&&(_.merge(b.agents[e.id],_.pick(e,A)),_.merge(b.rpcAgents[e.id],_.pick(e,A)),e.lastPauseAt&&(b.agents[e.id].globalStatusTime=e.lastPauseAt,b.rpcAgents[e.id].globalStatusTime=e.lastPauseAt),w(b.agents[e.id]))},b.onInit=T,b.onConnect=function(e){b.agents[b.agentInternal[e.destaccountcode]]&&(_.merge(b.agents[b.agentInternal[e.destaccountcode]],_.pick(e,["queue","destconnectedlinenum","routealias"])),_.merge(b.rpcAgents[b.agentInternal[e.destaccountcode]],_.pick(e,["queue","destconnectedlinenum","routealias"])))},b.onComplete=function(e){b.agents[b.agentInternal[e.destaccountcode]]&&(b.agents[b.agentInternal[e.destaccountcode]]=_.omit(b.agents[b.agentInternal[e.destaccountcode]],["queue","destconnectedlinenum"]),b.rpcAgents[b.agentInternal[e.destaccountcode]]=_.omit(b.rpcAgents[b.agentInternal[e.destaccountcode]],["queue","destconnectedlinenum"]))},b.screenRecording=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:"api.user.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},c.on("user:save",b.onSave),c.on("user:update",b.onUpdate),c.on("user:agentconnect",b.onConnect),c.on("user:agentcomplete",b.onComplete),T();var S=f(function(){b.load&&(b.load=!1,T())},999);function T(e){b.load=!1;var n,t,a=o.defer();b.promise=a.promise,b.filteredAgents=[],b.order=[],_.forIn(b.agents,function(e,n){b.rpcAgents[n]&&_.merge(e,_.pick(_.omit(b.rpcAgents[n],E),A)),w(e),e.online?(b.filteredAgents.push(e),b.agentInternal[e.internal]=n):e.globalStatusTime=_.toNumber(moment().format("x"))}),b.query.globalStatusFilter&&_.remove(b.filteredAgents,function(e){return e.globalStatus!==b.query.globalStatusFilter}),b.query.pauseTypeFilter&&_.remove(b.filteredAgents,function(e){return e.pauseType!==b.query.pauseTypeFilter}),b.query.filter&&_.remove(b.filteredAgents,function(e){return e.fullname.toLowerCase().indexOf(b.query.filter.toLowerCase())<0}),b.filteredAgents=(n=b.filteredAgents,t=_.startsWith(b.query.order,"-")?"desc":"asc",_.orderBy(n,[b.query.order.replace("-","")],[t]));var i=(b.query.page-1)*b.query.limit;b.paginatedAgents=_.drop(b.filteredAgents,i).slice(0,b.query.limit);for(var s=0;s<b.paginatedAgents.length;s+=1)b.order.push(b.paginatedAgents[s].id);a.resolve(),b.load=!0}function I(e){return"pause"===e||"*pause"===e}function C(e){return"idle"===e||"unknown"===e||"unavailable"===e||"ringing"===e||_.isNil(e)}function O(e,n){return"voice"===n?"idle"!==e[n+"Status"]?e[n+"Status"]:e[n+"Pause"]?e[n+"Status"]="pause":"idle":e[n+"Pause"]?e[n+"Status"]="pause":e[n+"Status"]}function w(e){var n="unknown";n=_.every([O(e,"voice"),O(e,"chat"),O(e,"mail"),O(e,"openchannel"),O(e,"sms"),O(e,"whatsapp"),O(e,"fax")],I)?"pause":_.some([O(e,"voice"),O(e,"chat"),O(e,"mail"),O(e,"openchannel"),O(e,"sms"),O(e,"whatsapp"),O(e,"fax")],I)?"*pause":_.every([O(e,"voice"),O(e,"chat"),O(e,"mail"),O(e,"openchannel"),O(e,"sms"),O(e,"whatsapp"),O(e,"fax")],C)?"idle":"busy",e.globalStatus!==n&&(e.globalStatus=n,e.init?(e.init=!1,e.globalStatusTime=I(n)?_.toNumber(moment(e.lastPauseAt).format("x")):_.max([e.voiceStatusTime,e.chatStatusTime,e.mailStatusTime,e.smsStatusTime,e.whatsappStatusTime,e.openchannelStatusTime,e.faxStatusTime])):e.globalStatusTime=_.toNumber(moment().format("x")))}e.$on("$destroy",function(){c.removeAllListeners("user:save"),c.removeAllListeners("user:update"),c.removeAllListeners("user:agentconnect"),c.removeAllListeners("user:agentcomplete"),S&&(f.cancel(S),S=null)})}e.$inject=["$scope","$q","$timeout","$mdDialog","$document","$filter","pauses","agents","rpcAgents","api","socket","toasty","helperClasses","userProfile","userProfileSection","Auth","license","$interval"],angular.module("app.voice").controller("AgentsOpenchannelRealtimeController",e)}(),function(){"use strict";function e(e,t,a,n,i,s,o,r,l,d,c){var m=this,u=["loggedIn","available","waiting","paused"],p=n(function(){},999);m.currentUser=c.getCurrentUser(),m.queues=i,m.userProfileSection=d&&1==d.count?d.rows[0]:null,m.crudPermissions=c.parseCrudPermissions(m.userProfileSection?m.userProfileSection.crudPermissions:null),m.query={id:c.isUser()?m.currentUser.id:void 0,section:c.isUser()?"OpenchannelQueues":void 0,channel:"openchannel",sort:"name",limit:10,page:1},m.getQueues=function(){m.query.offset=(m.query.page-1)*m.query.limit,s.realtime.getQueues(m.query).$promise.then(function(e){m.queues=e}).catch(function(e){console.error(e)})},m.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:m.queues.rows,license:null,setting:null,crudPermissions:m.crudPermissions}})},m.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:m.queues.rows,realtime:!1,crudPermissions:m.crudPermissions}})},o.on("openchannel_queue:save",function(e){var n=_.find(m.queues.rows,["id",e.id]);n&&_.merge(n,_.pick(e,u))}),o.on("userOpenchannelQueue:save",function(e){var n=_.find(m.queues.rows,["id",e.OpenchannelQueueId]);n&&(n.loggedInDb++,n.agents.push({id:e.UserId}))}),o.on("userOpenchannelQueue:remove",function(e){var n=_.find(m.queues.rows,["id",e.OpenchannelQueueId]);n&&(0<n.loggedInDb&&n.loggedInDb--,_.remove(n.agents,["id",e.UserId]))}),o.on("user:update",function(t){m.queues.rows.forEach(function(e){var n=_.find(e.agents,["id",t.id]);n&&(!1===t.online?(n.online=!1,e.loggedInDb-=1,n.paused?(n.paused=!1,e.paused-=1):e.available-=1):n.online?t.openchannelPause?(n.paused=!0,e.paused+=1,e.available-=1):!t.openchannelPause&&n.paused&&(n.paused=!1,e.paused-=1,e.available+=1):(n.online=!0,e.loggedInDb+=1,e.available+=1))})}),e.$on("$destroy",function(){o.removeAllListeners("openchannel_queue:save"),o.removeAllListeners("userOpenchannelQueue:remove"),o.removeAllListeners("userOpenchannelQueue:save"),o.removeAllListeners("user:update"),p&&n.cancel(p)})}e.$inject=["$scope","$mdDialog","$document","$interval","queues","api","socket","toasty","userProfile","userProfileSection","Auth"],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(n.disconnect(),n.connect(),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){var v=this;v.license=p,v.setting=g,v.currentUser=u.getCurrentUser(),v.cloudProviders=l||{count:0,rows:[]},v.table="cloudProviders",v.listOrder="",v.listOrderAsc=null,v.selectedAiTools=[],v.query={fields:"createdAt,updatedAt,id,name,service,data2,data1",sort:"-updatedAt",limit:10,page:1},v.arrayservice=_.keyBy([{option:"AmazonAWS",value:"'AmazonAWS'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),v.editdialog=function(e,n){i.show({controller:"CreateOrEditCloudProviderDialogController",controllerAs:"vm",templateUrl:"app/main/apps/settings/views/cloudProviders/create/dialog.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{cloudProvider:e,cloudProviders:v.cloudProviders.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("cloudProvider")+"?").htmlContent("<b>"+(e.name||"cloudProvider")+"</b> will be deleted.").ariaLabel("delete cloudProvider").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){A(e)},function(){console.log("CANCEL")})},v.success=b,v.getAiTools=function(){v.query.offset=(v.query.page-1)*v.query.limit,u.hasRole("admin")?v.promise=d.cloudProvider.get(v.query,b).$promise:(v.query.id=v.userProfile.id,v.query.section="AiTools",v.promise=d.userProfile.getResources(v.query,b).$promise)},v.createOrEditCloudProvider=function(e,n){i.show({controller:"CreateOrEditCloudProviderDialogController",controllerAs:"vm",templateUrl:"app/main/apps/settings/views/cloudProviders/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{cloudProvider:n,cloudProviders:v.cloudProviders.rows,license:v.license,setting:v.setting,crudPermissions:v.crudPermissions}})},v.deleteCloudProvider=A,v.exportSelectedAiTools=function(){var e=angular.copy(v.selectedAiTools);return v.selectedAiTools=[],e},v.deleteSelectedAiTools=function(e){var n=i.confirm().title("Are you sure want to delete the selected cloudProviders?").htmlContent("<b>"+v.selectedAiTools.length+" selected</b> will be deleted.").ariaLabel("delete CloudProviders").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){v.selectedAiTools.forEach(function(e){A(e)}),v.selectedAiTools=[]})},v.deselectAiTools=function(){v.selectedAiTools=[]},v.selectAllAiTools=function(){v.selectedAiTools=v.cloudProviders.rows};var h=!0,f=1;function b(e){v.cloudProviders=e||{count:0,rows:[]}}function A(e){d.cloudProvider.delete({id:e.id}).$promise.then(function(){_.remove(v.cloudProviders.rows,{id:e.id}),v.cloudProviders.count-=1,v.cloudProviders.rows.length||v.getAiTools(),m.success({title:_.startCase("CloudProvider")+" 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:DELETEcloudProvider"}];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:DELETEcloudProvider",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.getAiTools())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","cloudProviders","api","msUtils","toasty","Auth","license","setting"],angular.module("app.settings").controller("CloudProvidersController",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_CLOUDPROVIDER",p.cloudProvider=angular.copy(l),p.cloudProviders=r,p.newCloudProvider=!1,p.cloudProvider||(p.cloudProvider={},p.title="SETTINGS.NEW_CLOUDPROVIDER",p.newCloudProvider=!0),p.addNewCloudProvider=function(){p.errors=[],d.cloudProvider.save(p.cloudProvider).$promise.then(function(e){p.cloudProviders.unshift(e.toJSON()),o.success({title:"CloudProvider properly created",msg:p.cloudProvider.name?p.cloudProvider.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.cloudProvider.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.cloudProvider.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},p.saveCloudProvider=function(){p.errors=[],d.cloudProvider.update({id:p.cloudProvider.id},p.cloudProvider).$promise.then(function(e){var n=_.find(p.cloudProviders,{id:e.id});n&&_.merge(n,_.pick(e.toJSON(),_.keys(n))),o.success({title:"CloudProvider properly saved!",msg:p.cloudProvider.name?p.cloudProvider.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.cloudProvider.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.cloudProvider.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},p.deleteCloudProvider=function(e){p.errors=[];var n=a.confirm().title("Are you sure?").content("The cloudProvider will be deleted.").ariaLabel("Delete CloudProvider").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.cloudProvider.delete({id:p.cloudProvider.id}).$promise.then(function(){_.remove(p.cloudProviders,{id:p.cloudProvider.id}),o.success({title:"CloudProvider properly deleted!",msg:(p.cloudProvider.name||"cloudProvider")+" has been deleted!"}),g(p.cloudProvider)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){p.errors=e.data.errors||[{message:e.toString(),type:"api.cloudProvider.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.cloudProvider.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","cloudProviders","cloudProvider","api","Auth","license","setting"],angular.module("app.settings").controller("CreateOrEditCloudProviderDialogController",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,_.pick(e.toJSON(),_.keys(n))),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,_.pick(e.toJSON(),_.keys(n))),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,t,a,i,e,s){var o=this;o.license=i||{},o.agents=0,o.users=0,o.telephones=0,o.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"}],o.modules=[{name:"cm",icon:"icon-account-circle"},{name:"dialer",icon:"icon-crosshairs"},{name:"jscripty",icon:"icon-console"}],o.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"}],o.sessions=[{name:"callysquare",icon:"icon-sitemap",restart:!0,label:"channels",enabled:"voice"},{name:"virtual",icon:"icon-dots-horizontal",restart:!1,label:"sessions",enabled:"chat"}],o.others=[{name:"update",icon:"icon-cloud-download"}],o.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:o.channels,modules:o.modules,addons:o.addons,sessions:o.sessions,others:o.others}})},o.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}})},o.gotoProcess=function(e){a.go("app.settings.system",{tab:1})},s.user.get({fields:"id",role:"agent",online:!0}).$promise.then(function(e){return o.agents=e&&e.count?e.count:0,s.user.get({fields:"id",role:"user,admin"}).$promise}).then(function(e){return o.users=e&&e.count?e.count:0,s.user.get({fields:"id",role:"telephone"}).$promise}).then(function(e){o.telephones=e&&e.count?e.count:0}).catch(function(e){console.log(e)})}e.$inject=["$document","$mdDialog","$state","license","toasty","api"],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,_.pick(e.toJSON(),_.keys(n))),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(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_SMTP",g.smtp=angular.copy(l),g.smtps=r,g.newSmtp=!1,g.smtp||(g.smtp={service:!0},g.title="SETTINGS.NEW_SMTP",g.newSmtp=!0),g.addNewSmtp=function(){g.errors=[],d.mailAccount.save(g.smtp).$promise.then(function(e){g.smtps.unshift(e.toJSON()),o.success({title:"Smtp properly created",msg:g.smtp.name?g.smtp.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.mailAccount.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.mailAccount.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveSmtp=function(){g.errors=[],d.mailAccount.update({id:g.smtp.id},g.smtp).$promise.then(function(e){var n=_.find(g.smtps,{id:e.id});n&&_.merge(n,_.pick(e.toJSON(),_.keys(n))),o.success({title:"Smtp properly saved!",msg:g.smtp.name?g.smtp.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.mailAccount.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.mailAccount.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteSmtp=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The smtp will be deleted.").ariaLabel("Delete Smtp").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.mailAccount.delete({id:g.smtp.id}).$promise.then(function(){_.remove(g.smtps,{id:g.smtp.id}),o.success({title:"Smtp properly deleted!",msg:(g.smtp.name||"smtp")+" has been deleted!"}),v(g.smtp)}).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++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.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.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","smtps","smtp","api","Auth","license","setting","crudPermissions"],angular.module("app.settings").controller("CreateOrEditSmtpDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i){var s=this;s.currentUser=i.getCurrentUser(),s.license=a,s.smtps=e,s.smtp={},s.smtps&&s.smtps.rows&&s.smtps.rows.length?s.smtp=s.smtps.rows[0]:s.smtp={service:!0,Smtp:{service:null}},s.saveSmtp=function(){s.smtp.id?n.mailAccount.update({id:s.smtp.id},s.smtp).$promise.then(function(){t.success({title:"Smtp updated!",msg:s.smtp.name?s.smtp.name+" has been updated!":""})}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETmailAccount",msg:e.data?JSON.stringify(e.data):e.toString()})}):n.mailAccount.save(s.smtp).$promise.then(function(e){_.merge(s.smtp,e),t.success({title:"Smtp updated!",msg:s.smtp.name?s.smtp.name+" has been updated!":""})}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETmailAccount",msg:e.data?JSON.stringify(e.data):e.toString()})})},s.verifySmtp=function(){s.smtp.id&&n.mailAccount.verifySmtp({id:s.smtp.id}).$promise.then(function(){t.success({title:"Smtp verified!",msg:s.smtp.name?s.smtp.name+" has been verified!":""})}).catch(function(e){t.error({title:"Smtp not verified! Remember to save before to verify!",msg:e.data?JSON.stringify(e.data):e.toString(),timeout:1e4})})}}e.$inject=["smtps","api","toasty","license","Auth"],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,o,n,t,a,i,s,r,l,d,c,m,u,p,g,v,h,f){var b=this,A=["userpic","online","lastLoginAt","lastPauseAt","pauseType","lastPauseAt","internal","address","chatPause","openchannelPause","mailPause","smsPause","whatsappPause","faxPause","voicePause","chatCapacity","openchannelCapacity","mailCapacity","smsCapacity","whatsappCapacity","faxCapacity","chatCurrentCapacity","openchannelCurrentCapacity","mailCurrentCapacity","smsCurrentCapacity","whatsappCurrentCapacity","faxCurrentCapacity","chatStatus","openchannelStatus","mailStatus","smsStatus","whatsappStatus","faxStatus","voiceStatus","chatStatusTime","openchannelStatusTime","mailStatusTime","smsStatusTime","whatsappStatusTime","faxStatusTime","voiceStatusTime","queue","destconnectedlinenum","screenrecording","phoneBarEnableScreenRecordingByAgent","phoneBarEnableAutomaticScreenRecording"],E=["chatPause","openchannelPause","mailPause","smsPause","whatsappPause","faxPause","voicePause","online"];for(var y in b.currentUser=v.getCurrentUser(),b.availableStates=["ringing","inuse","busy","onhold","not_inuse"],b.pauses=s||{count:0,rows:[]},b.license=h,b.userProfile=p,b.userProfileSection=g&&1==g.count?g.rows[0]:null,b.crudPermissions=v.parseCrudPermissions(b.userProfileSection?b.userProfileSection.crudPermissions:null),b.agents=r?_.keyBy(r.rows?r.rows:[],"id"):{},b.rpcAgents=l?_.keyBy(l.rows?l.rows:[],"id"):{},b.paginatedAgents={},b.load=!1,b.order=[],b.agentInternal={},b.agents)b.agents.hasOwnProperty(y)&&(b.agents[y].init=!0);b.query={limit:10,page:1,order:"fullname",globalStatusFilter:"",pauseTypeFilter:""},b.logout=function(e,n){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"}),b.agents[e.id]&&(b.agents[e.id].online=!1),b.rpcAgents[e.id]&&(b.rpcAgents[e.id].online=!1),T()}).catch(function(e){m.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.staff.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},b.queueAdd=function(e,n){t.show({controller:"AgentqueueaddController",controllerAs:"vm",templateUrl:"app/main/apps/staff/views/agents/edit/queueadd/queueadd.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{agent:e,agents:[],channel:"sms",direction:"inbound",crudPermissions:b.crudPermissions}})},b.pause=function(n,e){return d.user.pause({id:n.id,type:e}).$promise.then(function(e){b.agents[n.id]&&_.merge(b.agents[n.id],_.pick(e,A)),b.rpcAgents[n.id]&&_.merge(b.rpcAgents[n.id],_.pick(e,A)),w(b.agents[n.id])}).catch(function(e){m.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.staff.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},b.unPause=function(n){return d.user.unpause({id:n.id}).$promise.then(function(e){b.agents[n.id]&&_.merge(b.agents[n.id],_.pick(e,A)),b.rpcAgents[n.id]&&_.merge(b.rpcAgents[n.id],_.pick(e,A)),w(b.agents[n.id])}).catch(function(e){m.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.staff.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},b.showInfo=function(e){t.show(t.alert().clickOutsideToClose(!0).title("Legend").htmlContent("<div>TODO legend status + state</div>").ok("Ok").targetEvent(e))},b.getAgentStatus=O,b.getAgentGlobalStatus=w,b.isPause=I,b.checkPause=function(e){return"pause"===e},b.isPartialPause=function(e){return"*pause"===e},b.onSave=function(e){b.agents[e.id]&&(_.merge(b.agents[e.id],_.pick(_.omit(e,E),A)),_.merge(b.rpcAgents[e.id],_.pick(_.omit(e,E),A)),w(b.agents[e.id]))},b.onUpdate=function(e){b.agents[e.id]&&(_.merge(b.agents[e.id],_.pick(e,A)),_.merge(b.rpcAgents[e.id],_.pick(e,A)),e.lastPauseAt&&(b.agents[e.id].globalStatusTime=e.lastPauseAt,b.rpcAgents[e.id].globalStatusTime=e.lastPauseAt),w(b.agents[e.id]))},b.onInit=T,b.onConnect=function(e){b.agents[b.agentInternal[e.destaccountcode]]&&(_.merge(b.agents[b.agentInternal[e.destaccountcode]],_.pick(e,["queue","destconnectedlinenum","routealias"])),_.merge(b.rpcAgents[b.agentInternal[e.destaccountcode]],_.pick(e,["queue","destconnectedlinenum","routealias"])))},b.onComplete=function(e){b.agents[b.agentInternal[e.destaccountcode]]&&(b.agents[b.agentInternal[e.destaccountcode]]=_.omit(b.agents[b.agentInternal[e.destaccountcode]],["queue","destconnectedlinenum"]),b.rpcAgents[b.agentInternal[e.destaccountcode]]=_.omit(b.rpcAgents[b.agentInternal[e.destaccountcode]],["queue","destconnectedlinenum"]))},b.screenRecording=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:"api.user.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},c.on("user:save",b.onSave),c.on("user:update",b.onUpdate),c.on("user:agentconnect",b.onConnect),c.on("user:agentcomplete",b.onComplete),T();var S=f(function(){b.load&&(b.load=!1,T())},999);function T(e){b.load=!1;var n,t,a=o.defer();b.promise=a.promise,b.filteredAgents=[],b.order=[],_.forIn(b.agents,function(e,n){b.rpcAgents[n]&&_.merge(e,_.pick(_.omit(b.rpcAgents[n],E),A)),w(e),e.online?(b.filteredAgents.push(e),b.agentInternal[e.internal]=n):e.globalStatusTime=_.toNumber(moment().format("x"))}),b.query.globalStatusFilter&&_.remove(b.filteredAgents,function(e){return e.globalStatus!==b.query.globalStatusFilter}),b.query.pauseTypeFilter&&_.remove(b.filteredAgents,function(e){return e.pauseType!==b.query.pauseTypeFilter}),b.query.filter&&_.remove(b.filteredAgents,function(e){return e.fullname.toLowerCase().indexOf(b.query.filter.toLowerCase())<0}),b.filteredAgents=(n=b.filteredAgents,t=_.startsWith(b.query.order,"-")?"desc":"asc",_.orderBy(n,[b.query.order.replace("-","")],[t]));var i=(b.query.page-1)*b.query.limit;b.paginatedAgents=_.drop(b.filteredAgents,i).slice(0,b.query.limit);for(var s=0;s<b.paginatedAgents.length;s+=1)b.order.push(b.paginatedAgents[s].id);a.resolve(),b.load=!0}function I(e){return"pause"===e||"*pause"===e}function C(e){return"idle"===e||"unknown"===e||"unavailable"===e||"ringing"===e||_.isNil(e)}function O(e,n){return"voice"===n?"idle"!==e[n+"Status"]?e[n+"Status"]:e[n+"Pause"]?e[n+"Status"]="pause":"idle":e[n+"Pause"]?e[n+"Status"]="pause":e[n+"Status"]}function w(e){var n="unknown";n=_.every([O(e,"voice"),O(e,"chat"),O(e,"mail"),O(e,"openchannel"),O(e,"sms"),O(e,"whatsapp"),O(e,"fax")],I)?"pause":_.some([O(e,"voice"),O(e,"chat"),O(e,"mail"),O(e,"openchannel"),O(e,"sms"),O(e,"whatsapp"),O(e,"fax")],I)?"*pause":_.every([O(e,"voice"),O(e,"chat"),O(e,"mail"),O(e,"openchannel"),O(e,"sms"),O(e,"whatsapp"),O(e,"fax")],C)?"idle":"busy",e.globalStatus!==n&&(e.globalStatus=n,e.init?(e.init=!1,e.globalStatusTime=I(n)?_.toNumber(moment(e.lastPauseAt).format("x")):_.max([e.voiceStatusTime,e.chatStatusTime,e.mailStatusTime,e.smsStatusTime,e.whatsappStatusTime,e.openchannelStatusTime,e.faxStatusTime])):e.globalStatusTime=_.toNumber(moment().format("x")))}e.$on("$destroy",function(){c.removeAllListeners("user:save"),c.removeAllListeners("user:update"),c.removeAllListeners("user:agentconnect"),c.removeAllListeners("user:agentcomplete"),S&&(f.cancel(S),S=null)})}e.$inject=["$scope","$q","$timeout","$mdDialog","$document","$filter","pauses","agents","rpcAgents","api","socket","toasty","helperClasses","userProfile","userProfileSection","Auth","license","$interval"],angular.module("app.voice").controller("AgentsSmsRealtimeController",e)}(),function(){"use strict";function e(e,t,a,n,i,s,o,r,l,d,c){var m=this,u=["loggedIn","available","waiting","paused"],p=n(function(){},999);m.currentUser=c.getCurrentUser(),m.queues=i,m.userProfileSection=d&&1==d.count?d.rows[0]:null,m.crudPermissions=c.parseCrudPermissions(m.userProfileSection?m.userProfileSection.crudPermissions:null),m.query={id:c.isUser()?m.currentUser.id:void 0,section:c.isUser()?"SmsQueues":void 0,channel:"sms",sort:"name",limit:10,page:1},m.getQueues=function(){m.query.offset=(m.query.page-1)*m.query.limit,s.realtime.getQueues(m.query).$promise.then(function(e){m.queues=e}).catch(function(e){console.error(e)})},m.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:m.queues.rows,license:null,setting:null,crudPermissions:m.crudPermissions}})},m.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:m.queues.rows,realtime:!1,crudPermissions:m.crudPermissions}})},o.on("sms_queue:save",function(e){var n=_.find(m.queues.rows,["id",e.id]);n&&_.merge(n,_.pick(e,u))}),o.on("userSmsQueue:save",function(e){var n=_.find(m.queues.rows,["id",e.SmsQueueId]);n&&(n.loggedInDb++,n.agents.push({id:e.UserId}))}),o.on("userSmsQueue:remove",function(e){var n=_.find(m.queues.rows,["id",e.SmsQueueId]);n&&(0<n.loggedInDb&&n.loggedInDb--,_.remove(n.agents,["id",e.UserId]))}),o.on("user:update",function(t){m.queues.rows.forEach(function(e){var n=_.find(e.agents,["id",t.id]);n&&(!1===t.online?(n.online=!1,e.loggedInDb-=1,n.paused?(n.paused=!1,e.paused-=1):e.available-=1):n.online?t.smsPause?(n.paused=!0,e.paused+=1,e.available-=1):!t.smsPause&&n.paused&&(n.paused=!1,e.paused-=1,e.available+=1):(n.online=!0,e.loggedInDb+=1,e.available+=1))})}),e.$on("$destroy",function(){o.removeAllListeners("sms_queue:save"),o.removeAllListeners("userSmsQueue:remove"),o.removeAllListeners("userSmsQueue:save"),o.removeAllListeners("user:update"),p&&n.cancel(p)})}e.$inject=["$scope","$mdDialog","$document","$interval","queues","api","socket","toasty","userProfile","userProfileSection","Auth"],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(n.disconnect(),n.connect(),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,_.pick(e.toJSON(),_.keys(n))),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){m.smsAccountInteractions=e||{count:0,rows:[]};for(var n=0;n<m.smsAccountInteractions.rows.length;n+=1){var t=m.smsAccountInteractions.rows[n];v(t),t.Owner.name=h(t)}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=d.smsInteraction.get(m.query,u).$promise}function g(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||p(),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 v(e){e.Contact?(e.contactName=(e.Contact.firstName||"")+" "+(e.Contact.lastName||""),e.contactInfo=e.Contact.mobile):e.contactName=i.instant("DASHBOARDS.UNKNOWN")}function h(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"]}}]},d.tag.get().$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(){g(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=u,m.getSmsAccountInteractions=p,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,p()}}).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=g,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){g(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,_.pick(e.toJSON(),_.keys(n))),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,_.pick(e.toJSON(),_.keys(n))),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,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.agents=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="agents",f.listOrder="",f.listOrderAsc=null,f.selectedAgents=[],f.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",role:"agent",sort:"-updatedAt",limit:10,page:1},f.arrayshowWebBar=_.keyBy([{option:"Phonebar",value:"0"},{option:"External",value:"1"},{option:"WebRTC",value:"2"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraytransport=_.keyBy([{option:"udp",value:"'udp'"},{option:"tcp",value:"'tcp'"},{option:"ws",value:"'ws'",ngIf:"vm.agent.showWebBar == 1"},{option:"wss",value:"'wss'",ngIf:"vm.agent.showWebBar == 1"},{option:"tls",value:"'tls'",ngIf:"vm.agent.showWebBar == 1"}],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.arraytype=_.keyBy([{option:"Friend",value:"'friend'"},{option:"User",value:"'user'"},{option:"Peer",value:"'peer'"}],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.arrayextensionMonitor=_.keyBy([{option:"Inactive",value:"''"},{option:"wav",value:"'wav'"},{option:"wav49",value:"'WAV'"},{option:"gsm",value:"'gsm'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.editstate=function(e,n){t.go("app.staff.agents.edit",{id:e.id,agent:e,crudPermissions:f.crudPermissions})},f.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:f.agents?f.agents.rows:[],crudPermissions:f.crudPermissions}})},f.deleteconfirm=function(e,n){var t=i.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");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getAgents=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="Agents",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditAgent=function(e,n){i.show({controller:"CreateOrEditAgentDialogController",controllerAs:"vm",templateUrl:"app/main/apps/staff/views/agents/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{agent:n,agents:f.agents.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteAgent=y,f.exportSelectedAgents=function(){var e=angular.copy(f.selectedAgents);return f.selectedAgents=[],e},f.deleteSelectedAgents=function(e){var n=i.confirm().title("Are you sure want to delete the selected agents?").htmlContent("<b>"+f.selectedAgents.length+" selected</b> will be deleted.").ariaLabel("delete Agents").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedAgents.forEach(function(e){y(e)}),f.selectedAgents=[]})},f.deselectAgents=function(){f.selectedAgents=[]},f.selectAllAgents=function(){f.selectedAgents=f.agents.rows};var b=!0,A=1;function E(e){f.agents=e||{count:0,rows:[]}}function y(e){m.user.delete({id:e.id}).$promise.then(function(){_.remove(f.agents.rows,{id:e.id}),f.agents.count-=1,f.agents.rows.length||f.getAgents(),p.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){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.getAgents())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","agents","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.staff").controller("AgentsController",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_AGENT",g.agent=angular.copy(l),g.agents=r,g.newAgent=!1,g.agent||(g.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},g.title="STAFF.NEW_AGENT",g.newAgent=!0),g.addNewAgent=function(){g.errors=[],d.user.save(g.agent).$promise.then(function(e){g.agents.unshift(e.toJSON()),o.success({title:"Agent properly created",msg:g.agent.name?g.agent.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.saveAgent=function(){g.errors=[],d.user.update({id:g.agent.id},g.agent).$promise.then(function(e){var n=_.find(g.agents,{id:e.id});n&&_.merge(n,_.pick(e.toJSON(),_.keys(n))),o.success({title:"Agent properly saved!",msg:g.agent.name?g.agent.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.deleteAgent=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The agent will be deleted.").ariaLabel("Delete Agent").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.user.delete({id:g.agent.id}).$promise.then(function(){_.remove(g.agents,{id:g.agent.id}),o.success({title:"Agent properly deleted!",msg:(g.agent.name||"agent")+" has been deleted!"}),v(g.agent)}).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","agents","agent","api","Auth","license","setting","crudPermissions"],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:"bull"===c.channel?"voice":c.channel,type:c.direction,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:c.direction,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.QUEUEADD_AGENT_"+c.channel.toUpperCase()+"_"+c.direction.toUpperCase()),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_QUEUES_"+c.channel.toUpperCase()+"_"+c.direction.toUpperCase()),labelSelected:s.instant("STAFF.SELECTED_QUEUES_"+c.channel.toUpperCase()+"_"+c.direction.toUpperCase()),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,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=a,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=n.protocol()+"://"+n.host(),u.agent=c||e.params.agent||{},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.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:u.agents?u.agents.rows:[],channel:n,direction:a||"inbound",crudPermissions:u.crudPermissions}})},u.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:u.agents?u.agents.rows:[],crudPermissions:u.crudPermissions}})},u.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:o,agents:u.agents?u.agents.rows:[],crudPermissions:u.crudPermissions}})},u.onEnableScreenRecordingByAgentSelection=function(){["phoneBarEnableAutomaticScreenRecording"].forEach(function(e){u.agent.phoneBarEnableScreenRecordingByAgent&&(u.agent[e]=!u.agent.phoneBarEnableScreenRecordingByAgent)})},u.onEnableAutomaticScreenRecordingSelection=function(){["phoneBarEnableScreenRecordingByAgent"].forEach(function(e){u.agent.phoneBarEnableAutomaticScreenRecording&&(u.agent[e]=!u.agent.phoneBarEnableAutomaticScreenRecording)})},u.alert=l.info,u.gotoAgents=function(){e.go("app.staff.agents",{},{reload:"app.staff.agents"})},u.saveAgent=function(){u.agent=_.omit(u.agent,"userpic"),r.user.update({id:u.agent.id},u.agent).$promise.then(function(){l.success({title:"Agent updated!",msg:u.agent.name?u.agent.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.agent&&(t=_.find(u.contexts,{name:u.agent.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","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,_.pick(e.toJSON(),_.keys(n))),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,_.pick(e.toJSON(),_.keys(n))),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,_.pick(e.toJSON(),_.keys(n))),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,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_USER",g.user=angular.copy(l),g.users=r,g.newUser=!1,g.user||(g.user={role:"user",autointernal:!0,context:"from-sip"},g.title="STAFF.NEW_USER",g.newUser=!0),g.addNewUser=function(){g.errors=[],d.user.save(g.user).$promise.then(function(e){g.users.unshift(e.toJSON()),o.success({title:"User properly created",msg:g.user.name?g.user.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.saveUser=function(){g.errors=[],d.user.update({id:g.user.id},g.user).$promise.then(function(e){var n=_.find(g.users,{id:e.id});n&&_.merge(n,_.pick(e.toJSON(),_.keys(n))),o.success({title:"User properly saved!",msg:g.user.name?g.user.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.deleteUser=function(e){if(c.getCurrentUser().id===g.user.id)return o.error({title:"User not deleted!",msg:"You can't remove yourself"});g.errors=[];var n=a.confirm().title("Are you sure?").content("The user will be deleted.").ariaLabel("Delete User").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.user.delete({id:g.user.id}).$promise.then(function(){_.remove(g.users,{id:g.user.id}),o.success({title:"User properly deleted!",msg:(g.user.name||"user")+" has been deleted!"}),v(g.user)}).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,d.userProfile.get({fields:"id,name",sort:"name"}).$promise.then(function(e){g.userProfiles=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_USERPROFILES",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","users","user","api","Auth","license","setting","crudPermissions"],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,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.user=c||e.params.user||{},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.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:u.users?u.users.rows:[],crudPermissions:u.crudPermissions}})},u.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:o,users:u.users?u.users.rows:[],crudPermissions:u.crudPermissions}})},u.alert=l.info,u.gotoUsers=function(){e.go("app.staff.users",{},{reload:"app.staff.users"})},u.saveUser=function(){u.user=_.omit(u.user,"userpic"),r.user.update({id:u.user.id},u.user).$promise.then(function(){l.success({title:"User updated!",msg:u.user.name?u.user.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()})})},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.userProfile.get({fields:"id,name",sort:"name"}).$promise.then(function(e){u.userProfiles=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_USERPROFILES",msg:e.data?JSON.stringify(e.data):e.toString()})}),r.user.getApiKey({id:u.user.id}).$promise.then(function(e){u.user.apiKey=e.api_key?e.api_key:"N/A"}).catch(function(e){l.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","$translate","license","setting","api","toasty","Auth","user","userProfileSection"],angular.module("app.staff").controller("UserController",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.users=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="users",f.listOrder="",f.listOrderAsc=null,f.selectedUsers=[],f.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",role:"admin,user",sort:"-updatedAt",limit:10,page:1},f.arrayrole=_.keyBy([{option:"Admin",value:"'admin'"},{option:"User",value:"'user'"}],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.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.editstate=function(e,n){t.go("app.staff.users.edit",{id:e.id,user:e,crudPermissions:f.crudPermissions})},f.deleteconfirm=function(e,n){var t=i.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");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getUsers=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="Users",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditUser=function(e,n){i.show({controller:"CreateOrEditUserDialogController",controllerAs:"vm",templateUrl:"app/main/apps/staff/views/users/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{user:n,users:f.users.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteUser=y,f.exportSelectedUsers=function(){var e=angular.copy(f.selectedUsers);return f.selectedUsers=[],e},f.deleteSelectedUsers=function(e){var n=i.confirm().title("Are you sure want to delete the selected users?").htmlContent("<b>"+f.selectedUsers.length+" selected</b> will be deleted.").ariaLabel("delete Users").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedUsers.forEach(function(e){y(e)}),f.selectedUsers=[]})},f.deselectUsers=function(){f.selectedUsers=[]},f.selectAllUsers=function(){f.selectedUsers=f.users.rows},m.userProfile.get({fields:"id,name",sort:"name"}).$promise.then(function(e){f.userProfiles=e.rows||[]}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_USERPROFILES",msg:e.data?JSON.stringify(e.data):e.toString()})});var b=!0,A=1;function E(e){f.users=e||{count:0,rows:[]}}function y(e){m.user.delete({id:e.id}).$promise.then(function(){_.remove(f.users.rows,{id:e.id}),f.users.count-=1,f.users.rows.length||f.getUsers(),p.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){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.getUsers())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","users","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],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,_.pick(e.toJSON(),_.keys(n))),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){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,_.pick(e.toJSON(),_.keys(n))),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,e,i,s){var o=this;function r(e,n,t){return s.dashboardItem.update(t).$promise.catch(function(e){console.error(e)})}o.customDashboard={},o.voiceQueues=s.rpc.getVoiceQueues({fields:"id,name"}),o.init=function(e,n){return o.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},o.customDashboard=e,o.customDashboard.draggable={enabled:!0,handle:".draggable",stop:r},o.customDashboard.resizable={enabled:!0,handle:".resizable",stop:r},o.customDashboard.widgets=[],s.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=o.voiceQueues,e.rows[n].voiceQueuesSelected=_.map(o.voiceQueues.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",o.customDashboard.widgets.push(e.rows[n])}).catch(function(e){console.error(e)})},o.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:o.customDashboard.widgets,license:null,setting:null,crudPermissions:o.crudPermissions}}).then(function(e){if(e)for(var n=0;n<o.customDashboard.widgets.length;n+=1)o.customDashboard.widgets[n].id===e.id&&(o.customDashboard.widgets[n].attrs=e.attrs,o.customDashboard.widgets[n].voiceQueues=o.voiceQueues,o.customDashboard.widgets[n].voiceQueuesSelected=_.map(o.voiceQueues.rows,"id"),o.customDashboard.widgets[n].templateUrl="app/core/directives/ms-widget-engine/ms-widget-engine-"+o.customDashboard.widgets[n].type+"/ms-widget-engine."+o.customDashboard.widgets[n].type+".html")})},o.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 s.dashboardItem.delete({id:n.id}).$promise.then(function(e){_.remove(o.customDashboard.widgets,{id:n.id}),i.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){o.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETE.customDashboard"}];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:"SYSTEM:DELETEdashboard",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()});console.error(e)})})}}e.$inject=["$mdDialog","$document","socket","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",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,_.pick(e.toJSON(),_.keys(n))),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.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()})})}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 n="disposition";l?n=l.route:"user"===m.currentUser.role&&(n="userProfile");var t="get";l?t="getDispositions":"user"===m.currentUser.role&&(t="getResources");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"};(a=n,i=t,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",n,t].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,_.pick(e.toJSON(),_.keys(n))),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,_.pick(e.toJSON(),_.keys(n))),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,_.pick(e.toJSON(),_.keys(n))),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,_.pick(e.toJSON(),_.keys(n))),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,_.pick(e.toJSON(),_.keys(n))),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,_.pick(e.toJSON(),_.keys(n))),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,_.pick(e.toJSON(),_.keys(n))),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:"-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,_.pick(e.toJSON(),_.keys(n))),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()})})))):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"},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()})})}()}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(){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()})})))):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"},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()})})}()}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(){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,_.pick(e.toJSON(),_.keys(n))),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,_.pick(e.toJSON(),_.keys(n))),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,_.pick(e.toJSON(),_.keys(n))),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,_.pick(e.toJSON(),_.keys(n))),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,_.pick(e.toJSON(),_.keys(n))),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-sip"},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,_.pick(e.toJSON(),_.keys(n))),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,_.pick(e.toJSON(),_.keys(n))),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,_.pick(e.toJSON(),_.keys(n))),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,_.pick(e.toJSON(),_.keys(n))),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,_.pick(e.toJSON(),_.keys(n))),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",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};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,o,n,t,a,i,s,r,l,d,c,m,u,p,g,v,h,f){var b=this,A=["userpic","online","lastLoginAt","lastPauseAt","pauseType","lastPauseAt","internal","address","chatPause","openchannelPause","mailPause","smsPause","whatsappPause","faxPause","voicePause","chatCapacity","openchannelCapacity","mailCapacity","smsCapacity","whatsappCapacity","faxCapacity","chatCurrentCapacity","openchannelCurrentCapacity","mailCurrentCapacity","smsCurrentCapacity","whatsappCurrentCapacity","faxCurrentCapacity","chatStatus","openchannelStatus","mailStatus","smsStatus","whatsappStatus","faxStatus","voiceStatus","chatStatusTime","openchannelStatusTime","mailStatusTime","smsStatusTime","whatsappStatusTime","faxStatusTime","voiceStatusTime","queue","destconnectedlinenum","screenrecording","phoneBarEnableScreenRecordingByAgent","phoneBarEnableAutomaticScreenRecording","routealias"],E=["chatPause","openchannelPause","mailPause","smsPause","whatsappPause","faxPause","voicePause","online"];for(var y in b.currentUser=v.getCurrentUser(),b.availableStates=["ringing","inuse","busy","onhold","not_inuse"],b.pauses=s||{count:0,rows:[]},b.license=h,b.userProfile=p,b.userProfileSection=g&&1==g.count?g.rows[0]:null,b.crudPermissions=v.parseCrudPermissions(b.userProfileSection?b.userProfileSection.crudPermissions:null),b.agents=r?_.keyBy(r.rows?r.rows:[],"id"):{},b.rpcAgents=l?_.keyBy(l.rows?l.rows:[],"id"):{},b.paginatedAgents={},b.load=!1,b.order=[],b.agentInternal={},b.agents)b.agents.hasOwnProperty(y)&&(b.agents[y].init=!0);b.query={limit:10,page:1,order:"fullname",globalStatusFilter:"",pauseTypeFilter:""},b.logout=function(e,n){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"}),b.agents[e.id]&&(b.agents[e.id].online=!1),b.rpcAgents[e.id]&&(b.rpcAgents[e.id].online=!1),T()}).catch(function(e){m.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.staff.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},b.queueAdd=function(e,n){t.show({controller:"AgentqueueaddController",controllerAs:"vm",templateUrl:"app/main/apps/staff/views/agents/edit/queueadd/queueadd.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{agent:e,agents:[],channel:"voice",direction:"inbound",crudPermissions:b.crudPermissions}})},b.pause=function(n,e){return d.user.pause({id:n.id,type:e}).$promise.then(function(e){b.agents[n.id]&&_.merge(b.agents[n.id],_.pick(e,A)),b.rpcAgents[n.id]&&_.merge(b.rpcAgents[n.id],_.pick(e,A)),w(b.agents[n.id])}).catch(function(e){m.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.staff.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},b.unPause=function(n){return d.user.unpause({id:n.id}).$promise.then(function(e){b.agents[n.id]&&_.merge(b.agents[n.id],_.pick(e,A)),b.rpcAgents[n.id]&&_.merge(b.rpcAgents[n.id],_.pick(e,A)),w(b.agents[n.id])}).catch(function(e){m.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.staff.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},b.showInfo=function(e){t.show(t.alert().clickOutsideToClose(!0).title("Legend").htmlContent("<div>TODO legend status + state</div>").ok("Ok").targetEvent(e))},b.getAgentStatus=O,b.getAgentGlobalStatus=w,b.isPause=I,b.checkPause=function(e){return"pause"===e},b.isPartialPause=function(e){return"*pause"===e},b.onSave=function(e){b.agents[e.id]&&(_.merge(b.agents[e.id],_.pick(_.omit(e,E),A)),_.merge(b.rpcAgents[e.id],_.pick(_.omit(e,E),A)),w(b.agents[e.id]))},b.onUpdate=function(e){b.agents[e.id]&&(_.merge(b.agents[e.id],_.pick(e,A)),_.merge(b.rpcAgents[e.id],_.pick(e,A)),e.lastPauseAt&&(b.agents[e.id].globalStatusTime=e.lastPauseAt,b.rpcAgents[e.id].globalStatusTime=e.lastPauseAt),w(b.agents[e.id]))},b.onInit=T,b.onConnect=function(e){b.agents[b.agentInternal[e.destaccountcode]]&&(_.merge(b.agents[b.agentInternal[e.destaccountcode]],_.pick(e,["queue","destconnectedlinenum","routealias"])),_.merge(b.rpcAgents[b.agentInternal[e.destaccountcode]],_.pick(e,["queue","destconnectedlinenum","routealias"])))},b.onComplete=function(e){b.agents[b.agentInternal[e.destaccountcode]]&&(b.agents[b.agentInternal[e.destaccountcode]]=_.omit(b.agents[b.agentInternal[e.destaccountcode]],["queue","destconnectedlinenum"]),b.rpcAgents[b.agentInternal[e.destaccountcode]]=_.omit(b.rpcAgents[b.agentInternal[e.destaccountcode]],["queue","destconnectedlinenum"]))},b.screenRecording=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:"api.user.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},c.on("user:save",b.onSave),c.on("user:update",b.onUpdate),c.on("user:agentconnect",b.onConnect),c.on("user:agentcomplete",b.onComplete),T();var S=f(function(){b.load&&(b.load=!1,T())},999);function T(e){b.load=!1;var n,t,a=o.defer();b.promise=a.promise,b.filteredAgents=[],b.order=[],_.forIn(b.agents,function(e,n){b.rpcAgents[n]&&_.merge(e,_.pick(_.omit(b.rpcAgents[n],E),A)),w(e),e.online?(b.filteredAgents.push(e),b.agentInternal[e.internal]=n):e.globalStatusTime=_.toNumber(moment().format("x"))}),b.query.globalStatusFilter&&_.remove(b.filteredAgents,function(e){return e.globalStatus!==b.query.globalStatusFilter}),b.query.pauseTypeFilter&&_.remove(b.filteredAgents,function(e){return e.pauseType!==b.query.pauseTypeFilter}),b.query.filter&&_.remove(b.filteredAgents,function(e){return e.fullname.toLowerCase().indexOf(b.query.filter.toLowerCase())<0}),b.filteredAgents=(n=b.filteredAgents,t=_.startsWith(b.query.order,"-")?"desc":"asc",_.orderBy(n,[b.query.order.replace("-","")],[t]));var i=(b.query.page-1)*b.query.limit;b.paginatedAgents=_.drop(b.filteredAgents,i).slice(0,b.query.limit);for(var s=0;s<b.paginatedAgents.length;s+=1)b.order.push(b.paginatedAgents[s].id);a.resolve(),b.load=!0}function I(e){return"pause"===e||"*pause"===e}function C(e){return"idle"===e||"unknown"===e||"unavailable"===e||"ringing"===e||_.isNil(e)}function O(e,n){return"voice"===n?"idle"!==e[n+"Status"]?e[n+"Status"]:e[n+"Pause"]?e[n+"Status"]="pause":"idle":e[n+"Pause"]?e[n+"Status"]="pause":e[n+"Status"]}function w(e){var n="unknown";n=_.every([O(e,"voice"),O(e,"chat"),O(e,"mail"),O(e,"openchannel"),O(e,"sms"),O(e,"whatsapp"),O(e,"fax")],I)?"pause":_.some([O(e,"voice"),O(e,"chat"),O(e,"mail"),O(e,"openchannel"),O(e,"sms"),O(e,"whatsapp"),O(e,"fax")],I)?"*pause":_.every([O(e,"voice"),O(e,"chat"),O(e,"mail"),O(e,"openchannel"),O(e,"sms"),O(e,"whatsapp"),O(e,"fax")],C)?"idle":"busy",e.globalStatus!==n&&(e.globalStatus=n,e.init?(e.init=!1,e.globalStatusTime=I(n)?_.toNumber(moment(e.lastPauseAt).format("x")):_.max([e.voiceStatusTime,e.chatStatusTime,e.mailStatusTime,e.smsStatusTime,e.whatsappStatusTime,e.openchannelStatusTime,e.faxStatusTime])):e.globalStatusTime=_.toNumber(moment().format("x")))}e.$on("$destroy",function(){c.removeAllListeners("user:save"),c.removeAllListeners("user:update"),c.removeAllListeners("user:agentconnect"),c.removeAllListeners("user:agentcomplete"),S&&(f.cancel(S),S=null)})}e.$inject=["$scope","$q","$timeout","$mdDialog","$document","$filter","pauses","agents","rpcAgents","api","socket","toasty","helperClasses","userProfile","userProfileSection","Auth","license","$interval"],angular.module("app.voice").controller("AgentsVoiceRealtimeController",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){var m=this,u=["loggedIn","available","waiting","talking","paused"],p=n(function(){},999);m.currentUser=c.getCurrentUser(),m.queues=i,m.userProfileSection=d&&1==d.count?d.rows[0]:null,m.crudPermissions=c.parseCrudPermissions(m.userProfileSection?m.userProfileSection.crudPermissions:null),m.query={id:c.isUser()?m.currentUser.id:void 0,section:c.isUser()?"VoiceQueues":void 0,channel:"voice",type:"inbound",sort:"name",limit:10,page:1},m.getQueues=function(){m.query.offset=(m.query.page-1)*m.query.limit,s.realtime.getQueues(m.query).$promise.then(function(e){m.queues=e}).catch(function(e){console.error(e)})},m.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:m.queues.rows,license:null,setting:null,crudPermissions:m.crudPermissions}})},m.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:m.queues.rows,realtime:!0,crudPermissions:m.crudPermissions}})},o.onWithoutApply("voice_queue:save",function(e){var n=_.find(m.queues.rows,["id",e.id]);n&&(e.loggedIn===e.available&&0<e.waiting&&(e.available-=e.waiting),_.merge(n,_.pick(e,u)))}),o.on("userVoiceQueue:save",function(e){var n=_.find(m.queues.rows,["id",e.VoiceQueueId]);n&&(n.loggedInDb++,n.agents.push({id:e.UserId}))}),o.on("userVoiceQueue:remove",function(e){var n=_.find(m.queues.rows,["id",e.VoiceQueueId]);n&&(0<n.loggedInDb&&n.loggedInDb--,_.remove(n.agents,["id",e.UserId]))}),o.on("user:agentconnect",function(t){m.queues.rows.forEach(function(e){var n=_.find(e.agents,["id",t.id]);n&&(e.available-=1)})}),o.on("user:agentcomplete",function(t){m.queues.rows.forEach(function(e){var n=_.find(e.agents,["id",t.id]);n&&(e.available+=1)})}),o.on("user:update",function(t){m.queues.rows.forEach(function(e){var n=_.find(e.agents,["id",t.id]);n&&(!1===t.online?(n.online=!1,e.loggedInDb-=1,n.paused?(n.paused=!1,e.paused-=1):e.available-=1):n.online?t.voicePause?(n.paused=!0,e.paused+=1,e.available-=1):!t.voicePause&&n.paused&&(n.paused=!1,e.paused-=1,e.available+=1):(n.online=!0,e.loggedInDb+=1,e.available+=1))})}),e.$on("$destroy",function(){o.removeAllListeners("voice_queue:save"),o.removeAllListeners("userVoiceQueue:remove"),o.removeAllListeners("userVoiceQueue:save"),o.removeAllListeners("user:agentconnect"),o.removeAllListeners("user:agentcomplete"),o.removeAllListeners("user:update"),p&&n.cancel(p)})}e.$inject=["$scope","$mdDialog","$document","$interval","queues","api","socket","toasty","userProfile","userProfileSection","Auth"],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(n.disconnect(),n.connect(),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,_.pick(e.toJSON(),_.keys(n))),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,_.pick(e.toJSON(),_.keys(n))),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,_.pick(e.toJSON(),_.keys(n))),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,_.pick(e.toJSON(),_.keys(n))),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){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.voiceRecording=c||e.params.voiceRecording||{},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.gotoVoiceRecordings=function(){e.go("app.voice.voiceRecordings",{},{reload:"app.voice.voiceRecordings"})},u.saveVoiceRecording=function(){r.voiceRecording.update({id:u.voiceRecording.id},u.voiceRecording).$promise.then(function(){l.success({title:"VoiceRecording updated!",msg:u.voiceRecording.name?u.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","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){var f=this;function b(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 A(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 E(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()})})}f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.voiceRecordings=r||{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="voiceRecordings",f.listOrder="",f.listOrderAsc=null,f.selectedVoiceRecordings=[],f.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},f.query.createdAt=u.firstLastDayMonth(),f.quickFilters=[{name:"Start Date",key:"createdAt",type:"date",label:"DASHBOARDS.SELECT_DATE_RANGE"}],f.editstate=function(e,n){t.go("app.voice.voiceRecordings.edit",{id:e.id,voiceRecording:e,crudPermissions:f.crudPermissions})},f.runtranscriberuntranscribesentiment=b,f.runtranscribesentimentruntranscribesentiment=A,f.runsentimentruntranscribesentiment=E,f.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()})})},f.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()})})},f.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(){I(e)},function(){console.log("CANCEL")})},f.success=T,f.getVoiceRecordings=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.voiceRecording.get(f.query,T).$promise:(f.query.id=f.userProfile.id,f.query.section="VoiceRecordings",f.promise=m.userProfile.getResources(f.query,T).$promise)},f.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:f.voiceRecordings.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteVoiceRecording=I,f.exportSelectedVoiceRecordings=function(){var e=angular.copy(f.selectedVoiceRecordings);return f.selectedVoiceRecordings=[],e},f.deleteSelectedVoiceRecordings=function(e){var n=i.confirm().title("Are you sure want to delete the selected voiceRecordings?").htmlContent("<b>"+f.selectedVoiceRecordings.length+" selected</b> will be deleted.").ariaLabel("delete VoiceRecordings").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedVoiceRecordings.forEach(function(e){I(e)}),f.selectedVoiceRecordings=[]})},f.deselectVoiceRecordings=function(){f.selectedVoiceRecordings=[]},f.selectAllVoiceRecordings=function(){f.selectedVoiceRecordings=f.voiceRecordings.rows},f.runtranscribeSelectedVoiceRecordings=function(n){f.selectedVoiceRecordings.forEach(function(e){b(e,n)}),f.selectedVoiceRecordings=[]},f.runtranscribesentimentSelectedVoiceRecordings=function(n){f.selectedVoiceRecordings.forEach(function(e){A(e,n)}),f.selectedVoiceRecordings=[]},f.runsentimentSelectedVoiceRecordings=function(n){f.selectedVoiceRecordings.forEach(function(e){E(e,n)}),f.selectedVoiceRecordings=[]};var y=!0,S=1;function T(e){f.voiceRecordings=e||{count:0,rows:[]}}function I(e){m.voiceRecording.delete({id:e.id}).$promise.then(function(){_.remove(f.voiceRecordings.rows,{id:e.id}),f.voiceRecordings.count-=1,f.voiceRecordings.rows.length||f.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){f.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){y?o(function(){y=!1}):(n||(S=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=S),f.getVoiceRecordings())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","voiceRecordings","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.voice").controller("VoiceRecordingsController",e)}(),function(){"use strict";function e(e,o,n,t,a,i,s,r,l,d,c,m,u,p,g,v,h,f){var b=this,A=["userpic","online","lastLoginAt","lastPauseAt","pauseType","lastPauseAt","internal","address","chatPause","openchannelPause","mailPause","smsPause","whatsappPause","faxPause","voicePause","chatCapacity","openchannelCapacity","mailCapacity","smsCapacity","whatsappCapacity","faxCapacity","chatCurrentCapacity","openchannelCurrentCapacity","mailCurrentCapacity","smsCurrentCapacity","whatsappCurrentCapacity","faxCurrentCapacity","chatStatus","openchannelStatus","mailStatus","smsStatus","whatsappStatus","faxStatus","voiceStatus","chatStatusTime","openchannelStatusTime","mailStatusTime","smsStatusTime","whatsappStatusTime","faxStatusTime","voiceStatusTime","queue","destconnectedlinenum","screenrecording","phoneBarEnableScreenRecordingByAgent","phoneBarEnableAutomaticScreenRecording"],E=["chatPause","openchannelPause","mailPause","smsPause","whatsappPause","faxPause","voicePause","online"];for(var y in b.currentUser=v.getCurrentUser(),b.availableStates=["ringing","inuse","busy","onhold","not_inuse"],b.pauses=s||{count:0,rows:[]},b.license=h,b.userProfile=p,b.userProfileSection=g&&1==g.count?g.rows[0]:null,b.crudPermissions=v.parseCrudPermissions(b.userProfileSection?b.userProfileSection.crudPermissions:null),b.agents=r?_.keyBy(r.rows?r.rows:[],"id"):{},b.rpcAgents=l?_.keyBy(l.rows?l.rows:[],"id"):{},b.paginatedAgents={},b.load=!1,b.order=[],b.agentInternal={},b.agents)b.agents.hasOwnProperty(y)&&(b.agents[y].init=!0);b.query={limit:10,page:1,order:"fullname",globalStatusFilter:"",pauseTypeFilter:""},b.logout=function(e,n){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"}),b.agents[e.id]&&(b.agents[e.id].online=!1),b.rpcAgents[e.id]&&(b.rpcAgents[e.id].online=!1),T()}).catch(function(e){m.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.staff.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},b.queueAdd=function(e,n){t.show({controller:"AgentqueueaddController",controllerAs:"vm",templateUrl:"app/main/apps/staff/views/agents/edit/queueadd/queueadd.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{agent:e,agents:[],channel:"whatsapp",direction:"inbound",crudPermissions:b.crudPermissions}})},b.pause=function(n,e){return d.user.pause({id:n.id,type:e}).$promise.then(function(e){b.agents[n.id]&&_.merge(b.agents[n.id],_.pick(e,A)),b.rpcAgents[n.id]&&_.merge(b.rpcAgents[n.id],_.pick(e,A)),w(b.agents[n.id])}).catch(function(e){m.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.staff.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},b.unPause=function(n){return d.user.unpause({id:n.id}).$promise.then(function(e){b.agents[n.id]&&_.merge(b.agents[n.id],_.pick(e,A)),b.rpcAgents[n.id]&&_.merge(b.rpcAgents[n.id],_.pick(e,A)),w(b.agents[n.id])}).catch(function(e){m.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.staff.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},b.showInfo=function(e){t.show(t.alert().clickOutsideToClose(!0).title("Legend").htmlContent("<div>TODO legend status + state</div>").ok("Ok").targetEvent(e))},b.getAgentStatus=O,b.getAgentGlobalStatus=w,b.isPause=I,b.checkPause=function(e){return"pause"===e},b.isPartialPause=function(e){return"*pause"===e},b.onSave=function(e){b.agents[e.id]&&(_.merge(b.agents[e.id],_.pick(_.omit(e,E),A)),_.merge(b.rpcAgents[e.id],_.pick(_.omit(e,E),A)),w(b.agents[e.id]))},b.onUpdate=function(e){b.agents[e.id]&&(_.merge(b.agents[e.id],_.pick(e,A)),_.merge(b.rpcAgents[e.id],_.pick(e,A)),e.lastPauseAt&&(b.agents[e.id].globalStatusTime=e.lastPauseAt,b.rpcAgents[e.id].globalStatusTime=e.lastPauseAt),w(b.agents[e.id]))},b.onInit=T,b.onConnect=function(e){b.agents[b.agentInternal[e.destaccountcode]]&&(_.merge(b.agents[b.agentInternal[e.destaccountcode]],_.pick(e,["queue","destconnectedlinenum","routealias"])),_.merge(b.rpcAgents[b.agentInternal[e.destaccountcode]],_.pick(e,["queue","destconnectedlinenum","routealias"])))},b.onComplete=function(e){b.agents[b.agentInternal[e.destaccountcode]]&&(b.agents[b.agentInternal[e.destaccountcode]]=_.omit(b.agents[b.agentInternal[e.destaccountcode]],["queue","destconnectedlinenum"]),b.rpcAgents[b.agentInternal[e.destaccountcode]]=_.omit(b.rpcAgents[b.agentInternal[e.destaccountcode]],["queue","destconnectedlinenum"]))},b.screenRecording=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:"api.user.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},c.on("user:save",b.onSave),c.on("user:update",b.onUpdate),c.on("user:agentconnect",b.onConnect),c.on("user:agentcomplete",b.onComplete),T();var S=f(function(){b.load&&(b.load=!1,T())},999);function T(e){b.load=!1;var n,t,a=o.defer();b.promise=a.promise,b.filteredAgents=[],b.order=[],_.forIn(b.agents,function(e,n){b.rpcAgents[n]&&_.merge(e,_.pick(_.omit(b.rpcAgents[n],E),A)),w(e),e.online?(b.filteredAgents.push(e),b.agentInternal[e.internal]=n):e.globalStatusTime=_.toNumber(moment().format("x"))}),b.query.globalStatusFilter&&_.remove(b.filteredAgents,function(e){return e.globalStatus!==b.query.globalStatusFilter}),b.query.pauseTypeFilter&&_.remove(b.filteredAgents,function(e){return e.pauseType!==b.query.pauseTypeFilter}),b.query.filter&&_.remove(b.filteredAgents,function(e){return e.fullname.toLowerCase().indexOf(b.query.filter.toLowerCase())<0}),b.filteredAgents=(n=b.filteredAgents,t=_.startsWith(b.query.order,"-")?"desc":"asc",_.orderBy(n,[b.query.order.replace("-","")],[t]));var i=(b.query.page-1)*b.query.limit;b.paginatedAgents=_.drop(b.filteredAgents,i).slice(0,b.query.limit);for(var s=0;s<b.paginatedAgents.length;s+=1)b.order.push(b.paginatedAgents[s].id);a.resolve(),b.load=!0}function I(e){return"pause"===e||"*pause"===e}function C(e){return"idle"===e||"unknown"===e||"unavailable"===e||"ringing"===e||_.isNil(e)}function O(e,n){return"voice"===n?"idle"!==e[n+"Status"]?e[n+"Status"]:e[n+"Pause"]?e[n+"Status"]="pause":"idle":e[n+"Pause"]?e[n+"Status"]="pause":e[n+"Status"]}function w(e){var n="unknown";n=_.every([O(e,"voice"),O(e,"chat"),O(e,"mail"),O(e,"openchannel"),O(e,"sms"),O(e,"whatsapp"),O(e,"fax")],I)?"pause":_.some([O(e,"voice"),O(e,"chat"),O(e,"mail"),O(e,"openchannel"),O(e,"sms"),O(e,"whatsapp"),O(e,"fax")],I)?"*pause":_.every([O(e,"voice"),O(e,"chat"),O(e,"mail"),O(e,"openchannel"),O(e,"sms"),O(e,"whatsapp"),O(e,"fax")],C)?"idle":"busy",e.globalStatus!==n&&(e.globalStatus=n,e.init?(e.init=!1,e.globalStatusTime=I(n)?_.toNumber(moment(e.lastPauseAt).format("x")):_.max([e.voiceStatusTime,e.chatStatusTime,e.mailStatusTime,e.smsStatusTime,e.whatsappStatusTime,e.openchannelStatusTime,e.faxStatusTime])):e.globalStatusTime=_.toNumber(moment().format("x")))}e.$on("$destroy",function(){c.removeAllListeners("user:save"),c.removeAllListeners("user:update"),c.removeAllListeners("user:agentconnect"),c.removeAllListeners("user:agentcomplete"),S&&(f.cancel(S),S=null)})}e.$inject=["$scope","$q","$timeout","$mdDialog","$document","$filter","pauses","agents","rpcAgents","api","socket","toasty","helperClasses","userProfile","userProfileSection","Auth","license","$interval"],angular.module("app.voice").controller("AgentsWhatsappRealtimeController",e)}(),function(){"use strict";function e(e,t,a,n,i,s,o,r,l,d,c){var m=this,u=["loggedIn","available","waiting","paused"],p=n(function(){},999);m.currentUser=c.getCurrentUser(),m.queues=i,m.userProfileSection=d&&1==d.count?d.rows[0]:null,m.crudPermissions=c.parseCrudPermissions(m.userProfileSection?m.userProfileSection.crudPermissions:null),m.query={id:c.isUser()?m.currentUser.id:void 0,section:c.isUser()?"WhatsappQueues":void 0,channel:"whatsapp",sort:"name",limit:10,page:1},m.getQueues=function(){m.query.offset=(m.query.page-1)*m.query.limit,s.realtime.getQueues(m.query).$promise.then(function(e){m.queues=e}).catch(function(e){console.error(e)})},m.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:m.queues.rows,license:null,setting:null,crudPermissions:m.crudPermissions}})},m.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:m.queues.rows,realtime:!1,crudPermissions:m.crudPermissions}})},o.on("whatsapp_queue:save",function(e){var n=_.find(m.queues.rows,["id",e.id]);n&&_.merge(n,_.pick(e,u))}),o.on("userWhatsappQueue:save",function(e){var n=_.find(m.queues.rows,["id",e.WhatsappQueueId]);n&&(n.loggedInDb++,n.agents.push({id:e.UserId}))}),o.on("userWhatsappQueue:remove",function(e){var n=_.find(m.queues.rows,["id",e.WhatsappQueueId]);n&&(0<n.loggedInDb&&n.loggedInDb--,_.remove(n.agents,["id",e.UserId]))}),o.on("user:update",function(t){m.queues.rows.forEach(function(e){var n=_.find(e.agents,["id",t.id]);n&&(!1===t.online?(n.online=!1,e.loggedInDb-=1,n.paused?(n.paused=!1,e.paused-=1):e.available-=1):n.online?t.whatsappPause?(n.paused=!0,e.paused+=1,e.available-=1):!t.whatsappPause&&n.paused&&(n.paused=!1,e.paused-=1,e.available+=1):(n.online=!0,e.loggedInDb+=1,e.available+=1))})}),e.$on("$destroy",function(){o.removeAllListeners("whatsapp_queue:save"),o.removeAllListeners("userWhatsappQueue:remove"),o.removeAllListeners("userWhatsappQueue:save"),o.removeAllListeners("user:update"),p&&n.cancel(p)})}e.$inject=["$scope","$mdDialog","$document","$interval","queues","api","socket","toasty","userProfile","userProfileSection","Auth"],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(n.disconnect(),n.connect(),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(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=[],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!":""}),v(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=[],d.whatsappAccount.update({id:g.whatsappAccount.id},g.whatsappAccount).$promise.then(function(e){var n=_.find(g.whatsappAccounts,{id:e.id});n&&_.merge(n,_.pick(e.toJSON(),_.keys(n))),o.success({title:"WhatsappAccount properly saved!",msg:g.whatsappAccount.name?g.whatsappAccount.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.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!"}),v(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=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.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){m.whatsappAccountInteractions=e||{count:0,rows:[]};for(var n=0;n<m.whatsappAccountInteractions.rows.length;n+=1){var t=m.whatsappAccountInteractions.rows[n];v(t),t.Owner.name=h(t)}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=d.whatsappInteraction.get(m.query,u).$promise}function g(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||p(),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 v(e){e.Contact?e.contactName=(e.Contact.firstName||"")+" "+(e.Contact.lastName||""):e.contactName=i.instant("DASHBOARDS.UNKNOWN")}function h(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"]}}]},d.tag.get().$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(){g(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=u,m.getWhatsappAccountInteractions=p,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,p()}}).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=g,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){g(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.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(){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,_.pick(e.toJSON(),_.keys(n))),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",sort:"-updatedAt",limit:10,page:1},f.arraytype=_.keyBy([{option:"Twilio",value:"'twilio'"}],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,_.pick(e.toJSON(),_.keys(n))),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,s,a,i,o,r,l,d,c){var m=this;function u(e,n){return{id:e,title:n.name||"NONAME",state:"app.dashboards.custom",stateParams:n,weight:2,hidden:function(){return o.hasRole("agent")||!o.hasPermission(e)&&!o.hasRole("admin")}}}function p(e,n){return{id:e,title:n.name||"NONAME",state:"app.plugins.plugin",stateParams:n,weight:2,hidden:function(){return o.hasRole("agent")||!o.hasPermission(e)&&!o.hasRole("admin")}}}function g(e,n){var t={user:_.pick(o.getCurrentUser(),["id","name","fullname","email","role","internal","interface"])};n.agentUrl=Mustache.render(n.agentUrl,t),a.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!o.hasPermission(e)}})}function v(e){return _.map(e.children,function(e){return e.id})}i.clear(),m.isAgent=function(){return o.getCurrentUser()&&o.hasRole("agent")},s.saveItem("apps",{title:"APPS",group:!0,weight:1,hidden:function(){return o.hasRole("agent")}}),l.version.get().$promise.then(function(e){m.version=e&&e.current?e.current:"UNKNOWN"}).catch(function(e){m.version="UNKNOWN"}).finally(function(){s.saveItem("version",{title:"VERSION "+m.version,group:!0,weight:2,hidden:function(){return o.hasRole("agent")}})}),o.isLoggedIn()&&(r.gray&&i.warning({msg:e.instant("DASHBOARDS.LICENSE_EXPIRE_REMAINING_DAYS"),showClose:!0,timeout:!1}),l.dashboard.get().$promise.then(function(e){for(var n=0,t=0;t<e.rows.length;t+=1)n=99999+e.rows[t].id,s.saveItem("apps.dashboards.custom_"+n,u(n,e.rows[t]))}),l.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){s.saveItem("apps.plugins",{id:1900,title:"Plugins",translate:"PLUGINS.PLUGINS",icon:"icon-apps",permissions:{hidden:!0},weight:17,hidden:function(){return o.hasRole("agent")||!o.hasChildrenPermissions(v(this))&&!o.hasRole("admin")}});for(var a=0;a<t.length;a+=1)n=88888+t[a].id,s.saveItem("apps.plugins.plugin_"+n,p(n,t[a]));s.sort()}var i=_.filter(e.rows,function(e){return"never"!=e.sidebar&&"adminOnly"!=e.sidebar});if(0<i.length)for(a=0;a<i.length;a+=1)g(n=88888+i[a].id,i[a])}})),r.custom&&!d.defaultPageTitle&&d.pageTitle&&angular.element("#pageTitle").html(d.pageTitle),s.saveItem("apps.dashboards",{id:100,title:"Dashboards",translate:"DASHBOARDS.DASHBOARDS",icon:"icon-tile-four",weight:2,hidden:function(){return o.hasRole("agent")||!o.hasChildrenPermissions(v(this))&&!o.hasRole("admin")}}),s.saveItem("apps.dashboards.general",{id:101,title:"General",route:"",translate:"DASHBOARDS.GENERAL",state:"app.dashboards.general",weight:1,hidden:function(){return o.hasRole("agent")||!o.hasPermission(101)&&!o.hasRole("admin")}}),s.saveItem("apps.staff",{id:200,title:"Staff",translate:"STAFF.STAFF",icon:"icon-account-multiple",weight:3,hidden:function(){return o.hasRole("agent")||!o.hasChildrenPermissions(v(this))&&!o.hasRole("admin")}}),s.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 o.hasRole("agent")||o.hasRole("user")||!o.hasPermission(201)&&!o.hasRole("admin")}}),s.saveItem("apps.staff.agents",{id:202,title:"Agents",route:"user",translate:"STAFF.AGENTS",state:"app.staff.agents",weight:1,hidden:function(){return o.hasRole("agent")||!o.hasPermission(202)&&!o.hasRole("admin")}}),s.saveItem("apps.staff.telephones",{id:203,title:"Telephones",route:"user",translate:"STAFF.TELEPHONES",state:"app.staff.telephones",weight:1,hidden:function(){return o.hasRole("agent")||!o.hasPermission(203)&&!o.hasRole("admin")}}),s.saveItem("apps.staff.teams",{id:204,title:"Teams",route:"team",translate:"STAFF.TEAMS",state:"app.staff.teams",weight:1,hidden:function(){return o.hasRole("agent")||!o.hasPermission(204)&&!o.hasRole("admin")}}),s.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 o.hasRole("agent")||!o.hasPermission(205)&&!o.hasRole("admin")}}),s.saveItem("apps.contactmanager",{id:300,title:"ContactManager",translate:"CONTACTMANAGER.CONTACTMANAGER",icon:"icon-account-circle",license:"cm",weight:4,hidden:function(){return!r.cm||o.hasRole("agent")||!o.hasChildrenPermissions(v(this))&&!o.hasRole("admin")}}),s.saveItem("apps.contactmanager.lists",{id:301,title:"Lists",route:"cmList",translate:"CONTACTMANAGER.LISTS",state:"app.contactmanager.lists",weight:2,hidden:function(){return o.hasRole("agent")||!o.hasPermission(301)&&!o.hasRole("admin")}}),s.saveItem("apps.contactmanager.companies",{id:302,title:"Companies",route:"cmCompany",translate:"CONTACTMANAGER.COMPANIES",state:"app.contactmanager.companies",weight:3,hidden:function(){return o.hasRole("agent")||!o.hasPermission(302)&&!o.hasRole("admin")}}),s.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 o.hasRole("agent")||!o.hasPermission(304)&&!o.hasRole("admin")}}),s.saveItem("apps.contactmanager.contacts",{id:303,title:"Contacts",route:"",translate:"CONTACTMANAGER.CONTACTS",state:"app.contactmanager.contacts",permissions:{association:!1},weight:1,hidden:function(){return o.hasRole("agent")||!o.hasPermission(303)&&!o.hasRole("admin")}}),s.saveItem("apps.voice",{id:400,title:"Voice",translate:"VOICE.VOICE",icon:"icon-phone",license:"voice",weight:5,hidden:function(){return!r.voice||o.hasRole("agent")||!o.hasChildrenPermissions(v(this))&&!o.hasRole("admin")}}),s.saveItem("apps.voice.voiceQueues",{id:401,title:"VoiceQueues",route:"voiceQueue",channel:"voice",translate:"VOICE.VOICEQUEUES",state:"app.voice.voiceQueues",weight:1,hidden:function(){return o.hasRole("agent")||!o.hasPermission(401)&&!o.hasRole("admin")}}),s.saveItem("apps.voice.contexts",{id:405,title:"Contexts",route:"voiceContext",translate:"VOICE.CONTEXTS",state:"app.voice.contexts",weight:5,hidden:function(){return o.hasRole("agent")||!o.hasPermission(405)&&!o.hasRole("admin")}}),s.saveItem("apps.voice.voicemails",{id:406,title:"Voicemails",route:"voiceMail",translate:"VOICE.VOICEMAILS",state:"app.voice.voicemails",weight:6,hidden:function(){return o.hasRole("agent")||!o.hasPermission(406)&&!o.hasRole("admin")}}),s.saveItem("apps.voice.musiconholds",{id:407,title:"MusicOnHolds",route:"voiceMusicOnHold",translate:"VOICE.MUSICONHOLDS",state:"app.voice.musiconholds",weight:7,hidden:function(){return o.hasRole("agent")||!o.hasPermission(407)&&!o.hasRole("admin")}}),s.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 o.hasRole("agent")||!o.hasPermission(408)&&!o.hasRole("admin")}}),s.saveItem("apps.voice.chanSpies",{id:409,title:"ChanSpies",route:"voiceChanSpy",translate:"VOICE.CHANSPIES",state:"app.voice.chanSpies",weight:9,hidden:function(){return o.hasRole("agent")||!o.hasPermission(409)&&!o.hasRole("admin")}}),s.saveItem("apps.voice.voicePrefixes",{id:410,title:"VoicePrefixes",route:"voicePrefix",translate:"VOICE.VOICEPREFIXES",state:"app.voice.voicePrefixes",weight:10,hidden:function(){return o.hasRole("agent")||!o.hasPermission(410)&&!o.hasRole("admin")}}),s.saveItem("apps.voice.inboundRoutes",{id:402,title:"InboundRoutes",route:"voiceExtension",translate:"VOICE.INBOUNDROUTES",state:"app.voice.inboundRoutes",weight:2,hidden:function(){return o.hasRole("agent")||!o.hasPermission(402)&&!o.hasRole("admin")}}),s.saveItem("apps.voice.outboundRoutes",{id:403,title:"OutboundRoutes",route:"voiceExtension",translate:"VOICE.OUTBOUNDROUTES",state:"app.voice.outboundRoutes",weight:3,hidden:function(){return o.hasRole("agent")||!o.hasPermission(403)&&!o.hasRole("admin")}}),s.saveItem("apps.voice.internalRoutes",{id:404,title:"InternalRoutes",route:"voiceExtension",translate:"VOICE.INTERNALROUTES",state:"app.voice.internalRoutes",weight:4,hidden:function(){return o.hasRole("agent")||!o.hasPermission(404)&&!o.hasRole("admin")}}),s.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 o.hasRole("agent")||!o.hasPermission(411)&&!o.hasRole("admin")}}),s.saveItem("apps.chat",{id:500,title:"Chat",translate:"CHAT.CHAT",icon:"icon-hangouts",license:"chat",weight:6,hidden:function(){return!r.chat||o.hasRole("agent")||!o.hasChildrenPermissions(v(this))&&!o.hasRole("admin")}}),s.saveItem("apps.chat.chatQueues",{id:501,title:"ChatQueues",route:"chatQueue",channel:"chat",translate:"CHAT.CHATQUEUES",state:"app.chat.chatQueues",weight:1,hidden:function(){return o.hasRole("agent")||!o.hasPermission(501)&&!o.hasRole("admin")}}),s.saveItem("apps.chat.chatWebsites",{id:502,title:"ChatWebsites",route:"chatWebsite",channel:"chat",translate:"CHAT.CHATWEBSITES",state:"app.chat.chatWebsites",weight:1,hidden:function(){return o.hasRole("agent")||!o.hasPermission(502)&&!o.hasRole("admin")}}),s.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 o.hasRole("agent")||!o.hasPermission(510)&&!o.hasRole("admin")}}),s.saveItem("apps.mail",{id:600,title:"Mail",translate:"MAIL.MAIL",icon:"icon-email",license:"mail",weight:7,hidden:function(){return!r.mail||o.hasRole("agent")||!o.hasChildrenPermissions(v(this))&&!o.hasRole("admin")}}),s.saveItem("apps.mail.mailQueues",{id:601,title:"MailQueues",route:"mailQueue",channel:"mail",translate:"MAIL.MAILQUEUES",state:"app.mail.mailQueues",weight:1,hidden:function(){return o.hasRole("agent")||!o.hasPermission(601)&&!o.hasRole("admin")}}),s.saveItem("apps.mail.mailAccounts",{id:602,title:"MailAccounts",route:"mailAccount",channel:"mail",translate:"MAIL.MAILACCOUNTS",state:"app.mail.mailAccounts",weight:1,hidden:function(){return o.hasRole("agent")||!o.hasPermission(602)&&!o.hasRole("admin")}}),s.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 o.hasRole("agent")||!o.hasPermission(603)&&!o.hasRole("admin")}}),s.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 o.hasRole("agent")||!o.hasPermission(610)&&!o.hasRole("admin")}}),s.saveItem("apps.sms",{id:700,title:"Sms",translate:"SMS.SMS",icon:"icon-message-text",license:"messaging",weight:8,hidden:function(){return!r.messaging||o.hasRole("agent")||!o.hasChildrenPermissions(v(this))&&!o.hasRole("admin")}}),s.saveItem("apps.sms.smsQueues",{id:701,title:"SmsQueues",route:"smsQueue",channel:"sms",translate:"SMS.SMSQUEUES",state:"app.sms.smsQueues",weight:1,hidden:function(){return o.hasRole("agent")||!o.hasPermission(701)&&!o.hasRole("admin")}}),s.saveItem("apps.sms.smsAccounts",{id:702,title:"SmsAccounts",route:"smsAccount",channel:"sms",translate:"SMS.SMSACCOUNTS",state:"app.sms.smsAccounts",weight:1,hidden:function(){return o.hasRole("agent")||!o.hasPermission(702)&&!o.hasRole("admin")}}),s.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 o.hasRole("agent")||!o.hasPermission(710)&&!o.hasRole("admin")}}),s.saveItem("apps.openchannel",{id:800,title:"Openchannel",translate:"OPENCHANNEL.OPENCHANNEL",icon:"icon-google-earth",license:"openchannel",weight:9,hidden:function(){return!r.openchannel||o.hasRole("agent")||!o.hasChildrenPermissions(v(this))&&!o.hasRole("admin")}}),s.saveItem("apps.openchannel.openchannelQueues",{id:801,title:"OpenchannelQueues",route:"openchannelQueue",channel:"openChannel",translate:"OPENCHANNEL.OPENCHANNELQUEUES",state:"app.openchannel.openchannelQueues",weight:1,hidden:function(){return o.hasRole("agent")||!o.hasPermission(801)&&!o.hasRole("admin")}}),s.saveItem("apps.openchannel.openchannelAccounts",{id:802,title:"OpenchannelAccounts",route:"openchannelAccount",channel:"openChannel",translate:"OPENCHANNEL.OPENCHANNELACCOUNTS",state:"app.openchannel.openchannelAccounts",weight:1,hidden:function(){return o.hasRole("agent")||!o.hasPermission(802)&&!o.hasRole("admin")}}),s.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 o.hasRole("agent")||!o.hasPermission(810)&&!o.hasRole("admin")}}),s.saveItem("apps.fax",{id:900,title:"Fax",translate:"FAX.FAX",icon:"icon-deskphone",license:"fax",weight:10,hidden:function(){return!r.fax||o.hasRole("agent")||!o.hasChildrenPermissions(v(this))&&!o.hasRole("admin")}}),s.saveItem("apps.fax.faxQueues",{id:901,title:"FaxQueues",route:"faxQueue",channel:"fax",translate:"FAX.FAXQUEUES",state:"app.fax.faxQueues",weight:1,hidden:function(){return o.hasRole("agent")||!o.hasPermission(901)&&!o.hasRole("admin")}}),s.saveItem("apps.fax.faxAccounts",{id:902,title:"FaxAccounts",route:"faxAccount",channel:"fax",translate:"FAX.FAXACCOUNTS",state:"app.fax.faxAccounts",weight:1,hidden:function(){return o.hasRole("agent")||!o.hasPermission(902)&&!o.hasRole("admin")}}),s.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 o.hasRole("agent")||!o.hasPermission(910)&&!o.hasRole("admin")}}),s.saveItem("apps.tools",{id:1e3,title:"Tools",translate:"TOOLS.TOOLS",icon:"icon-auto-fix",weight:15,hidden:function(){return o.hasRole("agent")||!o.hasChildrenPermissions(v(this))&&!o.hasRole("admin")}}),s.saveItem("apps.tools.cannedAnswers",{id:1001,title:"CannedAnswers",route:"cannedAnswer",translate:"TOOLS.CANNEDANSWERS",state:"app.tools.cannedAnswers",weight:1,hidden:function(){return o.hasRole("agent")||!o.hasPermission(1001)&&!o.hasRole("admin")}}),s.saveItem("apps.tools.customDashboards",{id:1003,title:"CustomDashboards",route:"dashboard",translate:"TOOLS.CUSTOMDASHBOARDS",state:"app.tools.customDashboards",weight:3,hidden:function(){return o.hasRole("agent")||!o.hasPermission(1003)&&!o.hasRole("admin")}}),s.saveItem("apps.tools.intervals",{id:1004,title:"Intervals",route:"interval",translate:"TOOLS.INTERVALS",state:"app.tools.intervals",weight:4,hidden:function(){return o.hasRole("agent")||!o.hasPermission(1004)&&!o.hasRole("admin")}}),s.saveItem("apps.tools.pauses",{id:1005,title:"Pauses",route:"pause",translate:"TOOLS.PAUSES",state:"app.tools.pauses",weight:5,hidden:function(){return o.hasRole("agent")||!o.hasPermission(1005)&&!o.hasRole("admin")}}),s.saveItem("apps.tools.schedules",{id:1006,title:"Scheduler",route:"schedule",translate:"TOOLS.SCHEDULER",state:"app.tools.schedules",weight:6,hidden:function(){return o.hasRole("agent")||!o.hasPermission(1006)&&!o.hasRole("admin")}}),s.saveItem("apps.tools.sounds",{id:1007,title:"Sounds",route:"sound",translate:"TOOLS.SOUNDS",state:"app.tools.sounds",weight:7,hidden:function(){return o.hasRole("agent")||!o.hasPermission(1007)&&!o.hasRole("admin")}}),s.saveItem("apps.tools.tags",{id:1008,title:"Tags",route:"tag",translate:"TOOLS.TAGS",state:"app.tools.tags",weight:8,hidden:function(){return o.hasRole("agent")||!o.hasPermission(1008)&&!o.hasRole("admin")}}),s.saveItem("apps.tools.templates",{id:1009,title:"Templates",route:"template",translate:"TOOLS.TEMPLATES",state:"app.tools.templates",weight:9,hidden:function(){return o.hasRole("agent")||!o.hasPermission(1009)&&!o.hasRole("admin")}}),s.saveItem("apps.tools.trunks",{id:1011,title:"Trunks",route:"trunk",translate:"TOOLS.TRUNKS",state:"app.tools.trunks",weight:11,hidden:function(){return o.hasRole("agent")||!o.hasPermission(1011)&&!o.hasRole("admin")}}),s.saveItem("apps.tools.variables",{id:1012,title:"Variables",route:"variable",translate:"TOOLS.VARIABLES",state:"app.tools.variables",weight:12,hidden:function(){return o.hasRole("agent")||!o.hasPermission(1012)&&!o.hasRole("admin")}}),s.saveItem("apps.tools.dispositions",{id:1002,title:"Dispositions",route:"disposition",translate:"TOOLS.DISPOSITIONS",state:"app.tools.dispositions",weight:2,hidden:function(){return o.hasRole("agent")||!o.hasPermission(1002)&&!o.hasRole("admin")}}),s.saveItem("apps.tools.triggers",{id:1010,title:"Triggers",route:"trigger",translate:"TOOLS.TRIGGERS",state:"app.tools.triggers",weight:10,hidden:function(){return o.hasRole("agent")||!o.hasPermission(1010)&&!o.hasRole("admin")}}),s.saveItem("apps.callysquare",{id:1100,title:"CallySquare",translate:"CALLYSQUARE.CALLYSQUARE",icon:"icon-sitemap",license:"voice",weight:13,hidden:function(){return!r.voice||o.hasRole("agent")||!o.hasChildrenPermissions(v(this))&&!o.hasRole("admin")}}),s.saveItem("apps.callysquare.odbcs",{id:1101,title:"ODBC",route:"squareOdbc",translate:"CALLYSQUARE.ODBC",state:"app.callysquare.odbcs",weight:2,hidden:function(){return o.hasRole("agent")||!o.hasPermission(1101)&&!o.hasRole("admin")}}),s.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 o.hasRole("agent")||!o.hasPermission(1102)&&!o.hasRole("admin")}}),s.saveItem("apps.callysquare.projects",{id:1103,title:"Projects",route:"squareProject",translate:"CALLYSQUARE.PROJECTS",state:"app.callysquare.projects",weight:1,hidden:function(){return o.hasRole("agent")||!o.hasPermission(1103)&&!o.hasRole("admin")}}),s.saveItem("apps.analytics",{id:1200,title:"Analytics",translate:"ANALYTICS.ANALYTICS",icon:"icon-chart-line",weight:16,hidden:function(){return o.hasRole("agent")||!o.hasChildrenPermissions(v(this))&&!o.hasRole("admin")}}),s.saveItem("apps.analytics.metrics",{id:1201,title:"Metrics",route:"analyticMetric",translate:"ANALYTICS.METRICS",state:"app.analytics.metrics",weight:3,hidden:function(){return o.hasRole("agent")||!o.hasPermission(1201)&&!o.hasRole("admin")}}),s.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 o.hasRole("agent")||!o.hasPermission(1202)&&!o.hasRole("admin")}}),s.saveItem("apps.analytics.reports",{id:1203,title:"Reports",route:"",translate:"ANALYTICS.REPORTS",state:"app.analytics.reports",weight:1,hidden:function(){return o.hasRole("agent")||!o.hasPermission(1203)&&!o.hasRole("admin")}}),s.saveItem("apps.integrations",{id:1300,title:"Integrations",translate:"INTEGRATIONS.INTEGRATIONS",icon:"icon-heart",weight:17,hidden:function(){return o.hasRole("agent")||!o.hasChildrenPermissions(v(this))&&!o.hasRole("admin")}}),s.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 o.hasRole("agent")||!o.hasPermission(1301)&&!o.hasRole("admin")}}),s.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 o.hasRole("agent")||!o.hasPermission(1302)&&!o.hasRole("admin")}}),s.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 o.hasRole("agent")||!o.hasPermission(1303)&&!o.hasRole("admin")}}),s.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 o.hasRole("agent")||!o.hasPermission(1305)&&!o.hasRole("admin")}}),s.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 o.hasRole("agent")||!o.hasPermission(1306)&&!o.hasRole("admin")}}),s.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 o.hasRole("agent")||!o.hasPermission(1307)&&!o.hasRole("admin")}}),s.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 o.hasRole("agent")||!o.hasPermission(1308)&&!o.hasRole("admin")}}),s.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 o.hasRole("agent")||!o.hasPermission(1309)&&!o.hasRole("admin")}}),s.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 o.hasRole("agent")||!o.hasPermission(1310)&&!o.hasRole("admin")}}),s.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 o.hasRole("agent")||!o.hasPermission(1304)&&!o.hasRole("admin")}}),s.saveItem("apps.settings",{id:1400,title:"Settings",translate:"SETTINGS.SETTINGS",icon:"icon-cog",permissions:{hidden:!0},weight:20,hidden:function(){return o.hasRole("agent")||!o.hasPermission(1400)&&!o.hasRole("admin")||o.hasRole("admin")&&!o.getCurrentUser().settingsEnabled}}),s.saveItem("apps.settings.generals",{id:1401,title:"General",route:"setting",translate:"SETTINGS.GENERAL",state:"app.settings.generals",weight:1,hidden:function(){return o.hasRole("agent")||!o.hasPermission(1400)&&!o.hasRole("admin")}}),s.saveItem("apps.settings.smtps",{id:1402,title:"Smtp",route:"mailAccount",translate:"SETTINGS.SMTP",state:"app.settings.smtps",weight:1,hidden:function(){return o.hasRole("agent")||!o.hasPermission(1400)&&!o.hasRole("admin")}}),s.saveItem("apps.settings.networks",{id:1403,title:"Networks",route:"network",translate:"SETTINGS.NETWORKS",state:"app.settings.networks",weight:1,hidden:function(){return o.hasRole("agent")||!o.hasPermission(1400)&&!o.hasRole("admin")}}),s.saveItem("apps.settings.customizations",{id:1407,title:"Customizations",route:"setting",translate:"SETTINGS.CUSTOMIZATIONS",state:"app.settings.customizations",weight:1,hidden:function(){return!r.custom||o.hasRole("agent")||!o.hasPermission(1400)&&!o.hasRole("admin")}}),s.saveItem("apps.settings.cloudProviders",{id:1408,title:"AiTools",route:"cloudProvider",translate:"SETTINGS.AITOOLS",state:"app.settings.cloudProviders",weight:1,hidden:function(){return!r.ai||o.hasRole("agent")||!o.hasPermission(1400)&&!o.hasRole("admin")}}),s.saveItem("apps.settings.updates",{id:1404,title:"Updates",route:"",translate:"SETTINGS.UPDATES",state:"app.settings.updates",weight:1,hidden:function(){return!r.update||o.hasRole("agent")||!o.hasPermission(1400)&&!o.hasRole("admin")}}),s.saveItem("apps.settings.license",{id:1405,title:"License",route:"",translate:"SETTINGS.LICENSE",state:"app.settings.license",weight:1,hidden:function(){return o.hasRole("agent")||!o.hasPermission(1400)&&!o.hasRole("admin")}}),s.saveItem("apps.settings.system",{id:1406,title:"System",route:"",translate:"SETTINGS.SYSTEM",state:"app.settings.system",weight:1,hidden:function(){return o.hasRole("agent")||!o.hasPermission(1400)&&!o.hasRole("admin")}}),s.saveItem("apps.motiondialer",{id:1500,title:"MotionDialer",translate:"MOTIONDIALER.MOTIONDIALER",icon:"icon-fire",license:"dialer",weight:5,hidden:function(){return!r.dialer||o.hasRole("agent")||!o.hasChildrenPermissions(v(this))&&!o.hasRole("admin")}}),s.saveItem("apps.motiondialer.queueCampaigns",{id:1501,title:"QueueCampaigns",route:"voiceQueue",channel:"bull",translate:"MOTIONDIALER.QUEUECAMPAIGNS",state:"app.motiondialer.queueCampaigns",weight:1,hidden:function(){return o.hasRole("agent")||!o.hasPermission(1501)&&!o.hasRole("admin")}}),s.saveItem("apps.motiondialer.ivrCampaigns",{id:1502,title:"IvrCampaigns",route:"campaign",translate:"MOTIONDIALER.IVRCAMPAIGNS",state:"app.motiondialer.ivrCampaigns",weight:1,hidden:function(){return o.hasRole("agent")||!o.hasPermission(1502)&&!o.hasRole("admin")}}),s.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 o.hasRole("agent")||!o.hasPermission(1510)&&!o.hasRole("admin")}}),s.saveItem("apps.help",{id:1600,title:"Help",translate:"HELP.HELP",icon:"icon-help",permissions:{association:!1},weight:21,hidden:function(){return o.hasRole("agent")||!o.hasPermission(1600)&&!o.hasRole("admin")}}),s.saveItem("apps.help.about",{id:1601,title:"About",route:"",translate:"HELP.ABOUT",state:"app.help.about",weight:1,hidden:function(){return o.hasRole("agent")||!o.hasPermission(1600)&&!o.hasRole("admin")}}),s.saveItem("apps.jscripty",{id:1700,title:"jscripty",translate:"JSCRIPTY.JSCRIPTY",icon:"icon-script",license:"jscripty",weight:14,hidden:function(){return!r.jscripty||o.hasRole("agent")||!o.hasChildrenPermissions(v(this))&&!o.hasRole("admin")}}),s.saveItem("apps.jscripty.projects",{id:1701,title:"Projects",route:"jscriptyProject",translate:"JSCRIPTY.PROJECTS",state:"app.jscripty.projects",weight:1,hidden:function(){return o.hasRole("agent")||!o.hasPermission(1701)&&!o.hasRole("admin")}}),s.saveItem("apps.marketplace",{id:1800,title:"Marketplace",translate:"MARKETPLACE.MARKETPLACE",icon:"icon-cart",weight:18,hidden:function(){return o.hasRole("agent")||!o.hasChildrenPermissions(v(this))&&!o.hasRole("admin")}}),s.saveItem("apps.marketplace.plugins",{id:1801,title:"Plugins",route:"plugin",translate:"MARKETPLACE.PLUGINS",state:"app.marketplace.plugins",weight:1,hidden:function(){return o.hasRole("agent")||!o.hasPermission(1801)&&!o.hasRole("admin")}}),s.saveItem("apps.video",{id:2e3,title:"Video",translate:"VIDEO.VIDEO",icon:"icon-video",license:"screenrecording",weight:12,hidden:function(){return!r.screenrecording||o.hasRole("agent")||!o.hasChildrenPermissions(v(this))&&!o.hasRole("admin")}}),s.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 o.hasRole("agent")||!o.hasPermission(2001)&&!o.hasRole("admin")}}),s.saveItem("apps.whatsapp",{id:2100,title:"Whatsapp",translate:"WHATSAPP.WHATSAPP",icon:"icon-whatsapp",license:"whatsapp",weight:11,hidden:function(){return!r.whatsapp||o.hasRole("agent")||!o.hasChildrenPermissions(v(this))&&!o.hasRole("admin")}}),s.saveItem("apps.whatsapp.whatsappQueues",{id:2101,title:"WhatsappQueues",route:"whatsappQueue",channel:"whatsapp",translate:"WHATSAPP.WHATSAPPQUEUES",state:"app.whatsapp.whatsappQueues",weight:1,hidden:function(){return o.hasRole("agent")||!o.hasPermission(2101)&&!o.hasRole("admin")}}),s.saveItem("apps.whatsapp.whatsappAccounts",{id:2102,title:"WhatsappAccounts",route:"whatsappAccount",channel:"whatsapp",translate:"WHATSAPP.WHATSAPPACCOUNTS",state:"app.whatsapp.whatsappAccounts",weight:1,hidden:function(){return o.hasRole("agent")||!o.hasPermission(2102)&&!o.hasRole("admin")}}),s.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 o.hasRole("agent")||!o.hasPermission(2110)&&!o.hasRole("admin")}}),s.sort(),a.saveItem("apps",{title:"APPS",group:!0,weight:1}),a.saveItem("apps.home",{id:100,title:"Home",translate:"DASHBOARDS.HOME",icon:"icon-home",weight:1}),a.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!o.hasPermission(101)}}),a.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!o.hasPermission(115)}}),a.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!r.cm||!o.hasPermission(102)}}),a.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!r.cm||!o.hasPermission(103)}}),a.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!r.dialer||!o.hasPermission(113)}}),a.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!r.voice||!o.hasPermission(110)}}),a.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!r.voice||!o.hasPermission(111)}}),a.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!r.voice||!o.hasPermission(104)}}),a.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!r.chat||!o.hasPermission(105)}}),a.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!r.mail||!o.hasPermission(106)}}),a.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!r.messaging||!o.hasPermission(107)}}),a.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!r.openchannel||!o.hasPermission(108)}}),a.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!r.fax||!o.hasPermission(109)}}),a.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!r.whatsapp||!o.hasPermission(114)}}),n.$on("$viewContentAnimationEnded",function(e){e.targetScope.$id===n.$id&&t.$broadcast("msSplashScreen::remove")}),n.$on("socket:connect",function(){t.toastySocketLost&&(i.clear(t.toastySocketLost),t.toastySocketLost=void 0)}),n.$on("socket:disconnect",function(){t.toastySocketLost||i.warning({title:e.instant("TOOLBAR.WARNING"),msg:e.instant("DASHBOARDS.LOST_CONNECTION"),timeout:!1,onAdd:function(){t.toastySocketLost=this.id}})})}e.$inject=["$scope","$rootScope","$translate","msNavigationService","msNavigationAgentService","toasty","Auth","license","api","setting","socket"],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.msScrollOptions={suppressScrollX:!0},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(e,n,t,a,i,s,o,r,l,d,c,m){var u=this;function p(e){var n=angular.element("#chat-dialog");a(function(){n.animate({scrollTop:n[0].scrollHeight},e)},0)}function g(e){return _.isNil(e)?"":e.replace(/[^\w.+#*\-]+/g,"")}function v(e){return m.get(e).success(function(){n.success({title:"Successful call",msg:"Call properly handled!"})}).error(function(e){n.error({title:"PhoneBar API Error",msg:d.instant("CONTACTMANAGER.ERRORS.PHONEBAR_API")})})}u.currentUser=i.getCurrentUser(),u.user=void 0,u.users={count:0,rows:[]},u.standardDate=moment(0).format("YYYY-MM-DD HH:mm:ss"),u.unreadMessage={},u.replyMessage="",u.disabled=!1,u.init=function(e){u.license=e},u.toggleChat=function(e){if(e){if(!e.allowmessenger&&"agent"===e.role)return n.warning({title:d.instant("QUICKPANEL.WARNING"),msg:d.instant("QUICKPANEL.MESSENGER_DISABLED")}),void(u.user=void 0);u.user=e,u.replyMessage="",t.chatInternalMessage.get({sort:"createdAt",FromId:u.currentUser.id+","+e.id,ToId:u.currentUser.id+","+e.id,ChatGroupId:"null"}).$promise.then(function(e){if(e&&e.rows){u.user.messages=e;for(var n=0;n<u.user.messages.rows.length;n+=1)!1===u.user.messages.rows[n].read&&u.user.messages.rows[n].ToId===u.currentUser.id&&t.chatInternalMessage.update({id:u.user.messages.rows[n].id,read:!0})}}).finally(function(){p(0)})}else u.user=void 0},u.reply=function(){u.disabled=!0;Date.now();if(""===u.replyMessage)return void(u.disabled=!1);var e={FromId:u.currentUser.id,ToId:u.user.id,body:u.replyMessage,read:!1};u.replyMessage="",t.chatInternalMessage.save(e).$promise.then(function(e){u.user.messages.rows.push(e),u.user.lastMessageAt=e.createdAt,u.user.lastMessage=e,p(400)}).catch(function(e){}).finally(function(){u.disabled=!1})},u.onMessageSave=function(e){if(e.ToId===u.currentUser.id&&!e.ChatGroupId){u.user&&u.user.id===e.FromId?(u.user.messages.rows.push(e),p(0),t.chatInternalMessage.update({id:e.id,read:!0})):u.unreadMessage[e.FromId]=u.unreadMessage[e.FromId]?u.unreadMessage[e.FromId]+1:1;var n=_.find(u.users.rows,{id:e.FromId});n&&(n.lastMessageAt=e.createdAt,n.lastMessage=e)}},u.onMessageUpdate=function(e){if((e.FromId===u.currentUser.id||e.ToId===u.currentUser.id)&&!e.ChatGroupId){if(u.user){var n=_.find(u.user.messages.rows,{id:e.id});n&&_.merge(n,e)}var t=_.find(u.users.rows,{id:u.currentUser.id===e.FromId?e.ToId:e.FromId});t&&t.lastMessage&&_.merge(t.lastMessage,e),e.ToId===u.currentUser.id&&e.read&&0<u.unreadMessage[e.FromId]&&(u.unreadMessage[e.FromId]-=1)}},u.onUserUpdate=function(e){var n=_.find(u.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))},u.webcall=function(e){c.$broadcast("webrtc::call",{target:g(e)})},u.call=function(e){return v("http://127.0.0.1:"+(u.user.phoneBarRemoteControlPort||"9888")+"/api/originate/"+g(e))},u.transfer=function(e){return v("http://127.0.0.1:"+(u.user.phoneBarRemoteControlPort||"9888")+"/api/transfer?number="+g(e))},s.on("chatInternalMessage:save",u.onMessageSave),s.on("chatInternalMessage:update",u.onMessageUpdate),s.on("user:update",u.onUserUpdate),o("quick-panel").onClose(function(){u.user=void 0}),t.chatInternalMessage.get({fields:"FromId",ToId:u.currentUser.id,read:!1,nolimit:!0,ChatGroupId:"null"}).$promise.then(function(e){u.unreadMessage=_.countBy(e.rows,"FromId")}).catch(function(e){}),t.chatInternalMessage.getUsers().$promise.then(function(e){u.users=e}).catch(function(e){console.error(e)}),e.$on("$destroy",function(){s.removeAllListeners("chatInternalMessage:save"),s.removeAllListeners("chatInternalMessage:update"),s.removeAllListeners("user:update")})}e.$inject=["$scope","toasty","api","$timeout","Auth","socket","$mdSidenav","$q","$interval","$translate","$rootScope","$http"],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(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,n,t,a,i,s,o,r,l){var d=this;function c(e){_.isNil(e)&&s.cmHopper.update({id:d.preview.id,UserId:null}),a.hide()}d.customFieldsMap=l&&l.rows?_.mapValues(_.keyBy(l.rows,function(e){return"cf_"+e.id}),"name"):{},d.errors=[],d.hopperIds=[],d.preview=o,d.currentUser=r,d.originated=!1,d.disable=!1,d.disableGetContact=!1,d.hopperIds.push(d.preview.id),d.originatePreview=function(){d.originated=!0,d.disable=!0,_.isEmpty(d.preview)?(i.error({title:"Message",msg:"Contact not available"}),d.disable=!1,d.hopperIds=[],c(!0)):s.rpc.getVoiceQueuesPreview({id:d.preview.id}).$promise.then(function(e){c(!0)}).catch(function(e){i.error({title:"Message",msg:e.data}),c(!0)}).finally(function(){d.disable=!1,d.hopperIds=[]})},d.closeDialog=c,d.nextContact=function(){return d.disableGetContact=!0,s.cmHopper.getPreview({hopperIds:d.hopperIds,direction:"next"}).$promise.then(function(e){d.disableGetContact=!1,_.isNil(e)||_.isNil(e.Queue)||!e.Queue.dialActive?(d.hopperIds=[],a.hide(),i.info({title:"PREVIEW",msg:"CAMPAIGN NOT ACTIVE"})):(d.originated||s.cmHopper.update({id:d.preview.id,UserId:null}),d.preview=e,d.hopperIds.push(d.preview.id))}).catch(function(e){if(d.disableGetContact=!1,d.hopperIds=[],404===e.status)d.getFirstAvailableContact();else if(e.data&&e.data.errors&&e.data.errors.length){a.hide();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 a.hide(),i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api preview",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},d.previousContact=function(){if(d.disableGetContact=!0,1<d.hopperIds.length){var e=_.without(d.hopperIds,d.preview.id);return s.cmHopper.getPreview({hopperIds:e,direction:"prev"}).$promise.then(function(e){d.disableGetContact=!1,_.isNil(e)||_.isNil(e.Queue)||!e.Queue.dialActive?(d.hopperIds=[],a.hide(),i.info({title:"PREVIEW",msg:"CAMPAIGN NOT ACTIVE"})):(_.remove(d.hopperIds,function(e){return e==d.preview.id}),d.originated||s.cmHopper.update({id:d.preview.id,UserId:null}),d.preview=e)}).catch(function(e){if(404===e.status)d.hopperIds=[d.preview.id],i.info({title:"PREVIEW",msg:"PREVIOUS CONTACTS NOT AVAILABLE"});else if(e.data&&e.data.errors&&e.data.errors.length){d.hopperIds=[],a.hide();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 d.hopperIds=[],a.hide(),i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api preview",msg:e.data?JSON.stringify(e.data.message):e.toString()})})}},d.getFirstAvailableContact=function(){return d.disableGetContact=!0,i.info({title:"PREVIEW",msg:"CONTACTS NOT AVAILABLE. REWINDING THE LIST"}),s.cmHopper.getPreview({hopperIds:[d.preview.id],direction:"next"}).$promise.then(function(e){_.isNil(e)||_.isNil(e.Queue)||!e.Queue.dialActive?(a.hide(),i.info({title:"PREVIEW",msg:"CAMPAIGN NOT ACTIVE"})):(d.originated||s.cmHopper.update({id:d.preview.id,UserId:null}),d.preview=e,d.hopperIds.push(d.preview.id))}).catch(function(e){if(a.hide(),404===e.status)i.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)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 preview",msg:e.data?JSON.stringify(e.data.message):e.toString()})}).finally(function(){d.disableGetContact=!1})},d.isCustomField=function(e){return _.startsWith(e,"cf_")},d.isHiddenField=function(e){return _.includes(["Company","CompanyId","ListId","UserId","createdAt","deletedAt","id","priority","scheduledat","tags","updatedAt","facebook","twitter","skype","wechat","teams","viber","line","telegram"],e)},d.isNil=function(e){return _.isNil(e)},e.$on("$destroy",function(){d.originated||s.cmHopper.update({id:d.preview.id,UserId:null})})}e.$inject=["$scope","$state","$location","$mdDialog","toasty","api","preview","currentUser","customFields"],angular.module("app.toolbar").controller("PreviewDialogController",e)}(),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){var S,T=this;T.voiceQueues={},T.polling=!0,t.global={search:""},T.pauses=[],T.license=b,T.currentUser=v.getCurrentUser(),T.unreadTotalMessages=0,T.unreadTotalGroupMessages=0,T.contacts=0,"agent"===T.currentUser.role&&(S=E(function(){_.some(T.voiceQueues,{dialMethod:"preview",dialActive:!0})&&T.license.dialer&&T.polling?(T.polling=!1,f.cmHopper.getOpenContacts().$promise.then(function(e){e&&_.isNumber(e.contacts)&&(T.contacts=e.contacts)}).finally(function(){T.polling=!0})):T.contacts=0},14999)),T.setting=A,T.bodyEl=angular.element("body"),T.conf={realm:"asterisk",host:e.host(),protocol:e.protocol(),soundPlayerId:"local-audio",remotePlayerId:"remote-audio",ua:"Motion WebRTC Bar 0.2.0",license:T.license.webrtc,phoneBarExpires:T.currentUser.phoneBarExpires,phoneBarPrefixRequired:T.currentUser.phoneBarPrefixRequired,wssPort:T.currentUser.wssPort},T.webRTCSessions=[],T.query={id:v.getCurrentUser().id,fields:"id,name,type,dialMethod,dialActive",channel:"voice",nolimit:!0},T.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"}],T.languages={ar:{title:"Arabic",translation:"TOOLBAR.ARABIC",code:"ar",flag:"ar"},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"},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"}};var I=["ar","fa","he"];function C(){h.connect(),h.on("user:update",T.onUserUpdate),h.on("user:called",T.onUserCalled),h.on("chatInternalMessage:save",T.onInternalMessageSave),h.on("chatInternalMessage:update",T.onInternalMessageUpdate),h.on("userVoiceQueue:save",T.onUserVoiceQueue),h.on("voiceQueue:save",T.onVoiceQueue),h.on("userVoiceQueue:remove",T.onUserVoiceQueue),h.on("voiceQueue:remove",T.onVoiceQueue),h.on("voiceQueue:update",T.onVoiceQueue),h.on("user:forcelogout",D),h.on("userNotification:send",P)}function O(){h.disconnect("logout")}function w(e){T.voiceQueues=e?_.keyBy(e.rows?e.rows:[],"id"):{}}function R(){T.promise=f.user.getQueues(T.query,w).$promise}function x(e){return O(),v.logout(e).then(function(){return t.$broadcast("webrtc::logout"),a.go("app.login")}).catch(function(e){console.error(e)})}function N(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:T.user,setting:A,reset:n}})}function D(e){if(console.debug("onForceLogout -> data",e),e.user.id===T.user.id&&0!==T.user.showWebBar)return O(),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){console.error(e)})}function P(e){var n=e;if(T.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})}}T.toggleSidenav=function(e){i(e).toggle()},T.logout=x,T.changeLanguage=function(e){if(!T.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"})}T.selectedLanguage=e,u.put("motion.language",e.code),r.use(e.code),"app.callysquare.projects.edit"===a.current.name&&d.location.reload();0<=I.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"},T.setUserStatus=function(e){T.userStatus=e},T.toggleHorizontalMobileMenu=function(){T.bodyEl.toggleClass("ms-navigation-horizontal-mobile-menu-active")},T.toggleMsNavigationFolded=function(){g.toggleFolded()},T.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},T.searchResultClick=function(e){e.uisref&&(e.stateParams?a.go(e.state,e.stateParams):a.go(e.state))},T.openSettings=function(e){t.$broadcast("webrtc::settings")},T.changePassword=N,T.isAgent=function(){return v.getCurrentUser()&&v.hasRole("agent")},T.onUserUpdate=function(e){if(e.id===T.user.id)if("agent"===e.role&&_.isBoolean(e.online)&&!e.online)if(0!==T.user.showWebBar){var t;O();var n=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(e,n){t=setTimeout(function(){c.cancel()},6e4)}});c.show(n).then(function(){return clearTimeout(t),v.queueLogin().then(function(){C(),_.merge(T.user,e),v.setCurrentUser(T.user)})}).catch(function(e){clearTimeout(t),x(!0)})}else x(!0);else _.merge(T.user,e),v.setCurrentUser(T.user)},T.onUserCalled=function(e){if(2===T.currentUser.showWebBar&&"agent"===T.currentUser.role&&T.currentUser.name===e.membername){var n=T.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&&e.variables.extravar?e.variables.extravar:"Not defined")+"</span><br>            </div>",showClose:!0,timeout:1e4,html:!0})}},T.pause=function(e){var n=e||"DEFAULT PAUSE";_.some(T.webRTCSessions,["confirmed",!0])&&(n="#"+n);return f.user.pause({id:T.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()})})},T.unpause=function(){return f.user.unpause({id:T.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()})})},T.preview=function(n){return T.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"}):c.show({controller:"PreviewDialogController",controllerAs:"vm",templateUrl:"app/toolbar/preview/dialog.html",parent:angular.element(m.body),targetEvent:n,clickOutsideToClose:!0,locals:{preview:e,currentUser:T.currentUser},resolve:{customFields:["apiResolver",function(e){return e.resolve("cmCustomField@get",{nolimit:!0})}]}})}).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){T.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(){T.disable=!1})},T.getLogo=function(){return T.setting.defaultHeaderWhiteLabel?"xCALLY Motion":T.setting.headerWhiteLabel},T.userIsNotPhonebar=function(){return"admin"===T.currentUser.role||"user"===T.currentUser.role||"agent"===T.currentUser.role&&0!==T.currentUser.showWebBar},T.onInternalMessageSave=function(e){e.ToId!==T.currentUser.id||e.ChatGroupId||(T.unreadTotalMessages+=1);e.ToId===T.currentUser.id&&e.FromId!==T.currentUser.id&&!e.read&&e.ChatGroupId&&T.unreadTotalGroupMessages++},T.onInternalMessageUpdate=function(e){e.ToId===T.currentUser.id&&e.read&&0<T.unreadTotalMessages&&!e.ChatGroupId&&(T.unreadTotalMessages-=1);e.ToId===T.currentUser.id&&e.read&&e.ChatGroupId&&0<T.unreadTotalGroupMessages&&T.unreadTotalGroupMessages--},T.onUserVoiceQueue=function(e){_.toInteger(e.UserId)===v.getCurrentUser().id&&R()},T.onVoiceQueue=function(e){R()},function(){T.user=v.getCurrentUser(),T.conf.ha1=T.user.md5secret,T.conf.id=T.user.id,T.conf.name=T.user.name,T.conf.fullname=T.user.fullname,T.conf.internal=T.user.internal,T.conf.recording=T.user.phoneBarEnableRecording,T.conf.autoAnswer=T.user.phoneBarAutoAnswer,T.conf.enableSettings=T.user.phoneBarEnableSettings,T.conf.enableDtmfTone=T.user.phoneBarEnableDtmfTone,T.conf.autoAnswerDelay=T.user.phoneBarAutoAnswerDelay,T.userStatus=T.userStatusOptions[0];var e=u.get("motion.language");e&&T.languages.hasOwnProperty(e)?T.selectedLanguage=T.languages[e]:T.selectedLanguage=T.languages[r.preferredLanguage()];if(f.pause.get({fields:"name",nolimit:!0}).$promise.then(function(e){T.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()&&T.setting.securePassword)if(T.user.passwordResetAt){var n=moment(T.user.passwordResetAt).add(T.setting.passwordExpiresDays||90,"day");moment().isAfter(n)?N(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 N(null,!0)}(),R(),C(),f.chatInternalMessage.get({fields:"FromId",ToId:T.currentUser.id,read:!1,nolimit:!0}).$promise.then(function(e){T.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"),S&&(E.cancel(S),S=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"],angular.module("app.toolbar").controller("ToolbarController",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","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-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" ms-scroll>\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 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)" ng-disabled="!vm_pb.registered">\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" />\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" ms-scroll>\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              <div layout="row" layout-align="space-between center">\n                <md-switch 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, isOpened)" md-selected-text="vm.placeholders[filter.key]" aria-label="Filter {{ filter.name }}" md-on-open="isOpened = true" md-on-close="isOpened = 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" ms-scroll>\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" ms-scroll 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" ms-scroll>\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">\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.\' + widget.attrs[0].value | 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="animate-slide-up 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="animate-slide-up 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" ms-scroll 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="animate-slide-up md-hue-2" ms-scroll 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" ms-scroll 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" ms-scroll ui-view="navigation"></md-sidenav>\n\n    <div id="content-container" flex layout="column">\n      <md-content id="content" class="animate-slide-up md-hue-2" ms-scroll 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" ms-scroll 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" ms-scroll ui-view="navigation"></md-sidenav>\n\n    <div id="content-container" flex layout="column">\n      <md-content id="content" class="animate-slide-up md-hue-2" ms-scroll 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" ms-scroll 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" ms-scroll 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="animate-slide-up md-hue-2" ms-scroll 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" ms-scroll 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" ms-scroll 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" ms-scroll>\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" 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    </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 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="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 animate-slide-down 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" ms-scroll>\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 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="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 animate-slide-down 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" ms-scroll>\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 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="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 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="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 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="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 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        <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 animate-slide-down 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" ms-scroll>\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" ms-scroll>\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 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="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 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="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 animate-slide-down 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" ms-scroll>\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 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="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 ms-scroll>\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 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>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 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          </div>\n          <md-button class="md-icon-button">\n            <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 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="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 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="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/permissionadd/permissionadd.html",'<md-dialog class="projects-dialog" aria-label="projects">\n  <form name="projectsForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="CALLYSQUARE.PERMISSIONADD_PROJECTS">Add User Permissions</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"></ms-dual-multiselect>\n    </md-dialog-content>\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 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="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 animate-slide-down 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" ms-scroll>\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 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="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 animate-slide-down 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" ms-scroll>\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 animate-slide-down 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" ms-scroll>\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 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="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 animate-slide-down 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" ms-scroll>\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 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="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 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="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 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="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 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="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 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="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 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="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 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="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 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="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 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="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 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\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 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="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 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="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 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="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 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="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/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 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="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 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="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            <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              <form name="scriptForm" flex="100" novalidate>\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              </form>\n            </div>\n\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.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              </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">\n                            <md-option ng-value="null">None</md-option>\n                            <md-option ng-repeat="account in vm_fonc.email_accounts" ng-value="account.id">{{ account.name }}</md-option>\n                          </md-select>\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" ms-scroll 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" ms-scroll 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/agents/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="CHAT.AGENTS">Agents</span>\n    <div flex></div>\n    <ms-search-bar on-search="vm.onInit()" query="vm.query" on-collapse="vm.query.filter = undefined; vm.onInit()" debounce="300"></ms-search-bar>\n    <md-select ng-model="vm.query.globalStatusFilter" class="md-caption" ng-change="vm.query.pauseTypeFilter = \'\'; vm.onInit()">\n      <md-option ng-value="\'\'">{{ \'CHAT.ALL\' | translate }}</md-option>\n      <md-option value="pause">{{ \'CHAT.PAUSE\' | translate }}</md-option>\n      <md-option value="*pause">{{ \'CHAT.PARTIALPAUSE\' | translate }}</md-option>\n      <md-option value="busy">{{ \'CHAT.BUSY\' | translate }}</md-option>\n      <md-option value="idle">{{ \'CHAT.IDLE\' | translate }}</md-option>\n    </md-select>\n    <md-select ng-if="vm.isPause(vm.query.globalStatusFilter)" ng-model="vm.query.pauseTypeFilter" class="md-caption" ng-change="vm.onInit()">\n      <md-option ng-value="\'\'">All</md-option>\n      <md-option value="DEFAULT PAUSE">DEFAULT PAUSE</md-option>\n      <md-option value="ACW">ACW</md-option>\n      <md-option value="LOGININPAUSE">LOGININPAUSE</md-option>\n      <md-option value="Auto-Pause">AUTOPAUSE</md-option>\n      <md-option ng-value="pause.name" ng-repeat="pause in vm.pauses.rows">{{pause.name}}</md-option>\n    </md-select>\n  </div>\n</md-toolbar>\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.order" md-on-reorder="vm.onInit">\n      <tr md-row border="1">\n        <th class="bv text-center" colspan="5">{{ \'CHAT.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          {{ \'CHAT.NAME\' | translate }}</th>\n        <th class="bl custom-column" md-column md-order-by="globalStatus">\n          {{ \'CHAT.STATUS\' | translate }}</th>\n        <th class="bl custom-column" md-column md-order-by="lastLoginAt">\n          {{ \'CHAT.LOGIN_TIME\' | translate }}</th>\n        <th class="bl custom-column" md-column md-order-by="lastPauseAt">\n          {{ \'CHAT.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.order.length">\n        <td md-cell colspan="19">\n          <div layout="row" layout-align="center center">\n            <span>{{ \'CHAT.NO_AGENT_ONLINE\' | translate }}</span>\n          </div>\n        </td>\n      </tr>\n      <tr md-select="vm.agents[value]" md-select-id="id" ng-repeat="(id, value) in vm.order">\n        <td class="bt padding-5">\n          <div layout="row" layout-align="start center">\n            <img class="avatar" ng-src="{{vm.agents[value].userpic && \'api/users/\'+vm.agents[value].id+\'/avatar\' || \'assets/images/avatars/profile.png\'}}">\n            <div layout="column">\n              <span>{{vm.agents[value].fullname}}</span>\n              <span>{{vm.agents[value].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 && (vm.agents[value].phoneBarEnableScreenRecordingByAgent || vm.agents[value].phoneBarEnableAutomaticScreenRecording)">\n            <div class="column" ng-if="vm.agents[value].screenrecording">\n              <span>\n                <md-icon md-font-icon="icon-camcorder-box" style="color: green; font-size: 36px;" aria-label="icon-camcorder-box26">\n                  <md-tooltip>\n                    {{ \'CHAT.TOOLTIP_SCREENRECORDING_ON\' | translate }}\n                  </md-tooltip>\n                </md-icon>\n              </span>\n            </div>\n            <div class="column" ng-if="!vm.agents[value].screenrecording">\n              <span>\n                <md-icon md-font-icon="icon-camcorder-box" style="color: gray" aria-label="icon-camcorder-box26">\n                  <md-tooltip>\n                    {{ \'CHAT.TOOLTIP_SCREENRECORDING_OFF\' | translate }}\n                  </md-tooltip>\n                </md-icon>\n              </span>\n            </div>\n          </div>\n        </td>\n        <td class="bt">\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'}[vm.agents[value].globalStatus]\">{{\n            vm.isPause(vm.agents[value].globalStatus) ? '' : vm.agents[value].globalStatus | uppercase }}\n            {{ vm.isPause(vm.agents[value].globalStatus) ? (vm.isPartialPause(vm.agents[value].globalStatus) ?\n            '*'+vm.agents[value].pauseType || 'DEFAULT PAUSE' : vm.agents[value].pauseType || 'DEFAULT PAUSE') :\n            ''}}</span>\n        </td>\n        <td class=\"bt custom-column\">\n          <timer start-time=\"vm.agents[value].lastLoginAt\"></timer>\n        </td>\n        <td class=\"bt custom-column\">\n          <timer ng-if=\"vm.isPause(vm.agents[value].globalStatus) || vm.isPartialPause(vm.agents[value].globalStatus)\" start-time=\"vm.agents[value].lastPauseAt\"></timer>\n        </td>\n        <td class=\"bt bl\">\n          <div layout=\"row\">\n            <span ng-if=\"!vm.agents[value].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'}[vm.agents[value].voiceStatus]\">{{\n              vm.agents[value].voiceStatus | uppercase }}</span>\n            <span ng-if=\"vm.agents[value].onhold\" class=\"text-boxed md-background-bg bl bt padding-5 orange-400-bg\">ONHOLD</span>\n          </div>\n        </td>\n        <td class=\"bt bl\">\n          <div layout=\"column\">\n            <span ng-if=\"vm.agents[value].queue\" class=\"padding-5\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].voiceStatus]\">{{\n              vm.agents[value].queue }}</span>\n            <span ng-if=\"vm.agents[value].destconnectedlinenum\" class=\"padding-5\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].voiceStatus]\" privacy ng-cloak>{{\n              vm.agents[value].destconnectedlinenum }}</span>\n            <span ng-if=\"vm.agents[value].routealias\" class=\"padding-5\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].voiceStatus]\">{{\n              vm.agents[value].routealias }}</span>\n            <span class=\"padding-5\" ng-if=\"vm.agents[value].queue || vm.agents[value].destconnectedlinenum\">\n              <timer start-time=\"vm.agents[value].voiceStatusTime\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].voiceStatus]\">\n              </timer>\n            </span>\n          </div>\n        </td>\n        <td class=\"bt bl\" ng-if=\"vm.license.chat\">\n          <div layout=\"row\">\n            <div layout=\"column\" layout-align=\"center center\">\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'}[vm.agents[value].chatStatus]\">{{\n                vm.agents[value].chatStatus | uppercase }}</span>\n            </div>\n          </div>\n        </td>\n        <td md-number class=\"bt text-center font-size-20\" ng-if=\"vm.license.chat\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].chatStatus]\">\n          {{ vm.agents[value].chatCurrentCapacity }}</td>\n        <td class=\"bl bt\" ng-if=\"vm.license.mail\">\n          <div layout=\"row\">\n            <div layout=\"column\" layout-align=\"center center\">\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'}[vm.agents[value].mailStatus]\">{{\n                vm.agents[value].mailStatus | uppercase }}</span>\n            </div>\n          </div>\n        </td>\n        <td class=\"bt padding-5 text-center font-size-20\" ng-if=\"vm.license.mail\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].mailStatus]\">\n          {{ vm.agents[value].mailCurrentCapacity }}</td>\n        <td class=\"bl bt\" ng-if=\"vm.license.messaging\">\n          <div layout=\"row\">\n            <div layout=\"column\" layout-align=\"center center\">\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'}[vm.agents[value].smsStatus]\">{{\n                vm.agents[value].smsStatus | uppercase }}</span>\n            </div>\n          </div>\n        </td>\n        <td class=\"bt padding-5 text-center font-size-20\" ng-if=\"vm.license.messaging\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].smsStatus]\">\n          {{ vm.agents[value].smsCurrentCapacity }}</td>\n        <td class=\"bt bl\" ng-if=\"vm.license.openchannel\">\n          <div layout=\"row\">\n            <div layout=\"column\" layout-align=\"center center\">\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'}[vm.agents[value].openchannelStatus]\">{{\n                vm.agents[value].openchannelStatus | uppercase }}</span>\n            </div>\n          </div>\n        </td>\n        <td class=\"bt padding-5 text-center font-size-20\" ng-if=\"vm.license.openchannel\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].openchannelStatus]\">\n          {{ vm.agents[value].openchannelCurrentCapacity }}</td>\n        <td class=\"bt bl\" ng-if=\"vm.license.fax\">\n          <div layout=\"row\">\n            <div layout=\"column\" layout-align=\"center center\">\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'}[vm.agents[value].faxStatus]\">{{\n                vm.agents[value].faxStatus | uppercase }}</span>\n            </div>\n          </div>\n        </td>\n        <td class=\"bt padding-5 text-center font-size-20\" ng-if=\"vm.license.fax\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].faxStatus]\">\n          {{ vm.agents[value].faxCurrentCapacity }}</td>\n        <td class=\"bl bt\" ng-if=\"vm.license.whatsapp\">\n          <div layout=\"row\">\n            <div layout=\"column\" layout-align=\"center center\">\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'}[vm.agents[value].whatsappStatus]\">{{\n                vm.agents[value].whatsappStatus | uppercase }}</span>\n            </div>\n          </div>\n        </td>\n        <td class=\"bt padding-5 text-center font-size-20\" ng-if=\"vm.license.whatsapp\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].whatsappStatus]\">\n          {{ vm.agents[value].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(vm.agents[value], $event)\" translate=\"CHAT.LOGOUT\">\n                  Logout\n                </md-button>\n              </md-menu-item>\n              <md-menu-item>\n                <md-button ng-click=\"vm.queueAdd(vm.agents[value], $event)\" translate=\"CHAT.AGENTADD_QUEUE\">\n                  Add Agent In Queue\n                </md-button>\n              </md-menu-item>\n              <md-menu-item ng-if=\"vm.license.screenrecording && vm.agents[value].phoneBarEnableScreenRecordingByAgent\">\n                <md-menu>\n                  <md-button ng-click=\"$mdMenu.open()\" class=\"text-capitalize\" translate=\"CHAT.SCREENRECORDING\">Screen Recording\n                  </md-button>\n                  <md-menu-content>\n                    <md-menu-item ng-if=\"!vm.agents[value].screenrecording\">\n                      <md-button ng-click=\"vm.screenRecording(vm.agents[value], true)\"><em translate=\"CHAT.START_SCREENRECORDING\">Start\n                          Screen Recording</em></md-button>\n                    </md-menu-item>\n                    <md-menu-item ng-if=\"vm.agents[value].screenrecording\">\n                      <md-button ng-click=\"vm.screenRecording(vm.agents[value], false)\"><em translate=\"CHAT.STOP_SCREENRECORDING\">Stop\n                          Screen Recording</em></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=\"CHAT.PAUSE\">Pause</md-button>\n                  <md-menu-content>\n                    <md-menu-item>\n                      <md-button ng-disabled=\" vm.agents[value].voicePause && 'DEFAULT PAUSE' === vm.agents[value].pauseType\" ng-click=\"vm.pause(vm.agents[value])\"><em translate=\"CHAT.DEFAULT_PAUSE\">Default\n                          Pause</em></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=\"vm.agents[value].voicePause && pause.name === vm.agents[value].pauseType\" ng-click=\"vm.pause(vm.agents[value], 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=\"vm.isPause(vm.agents[value].globalStatus)\">\n                <md-button ng-click=\"vm.unPause(vm.agents[value])\" translate=\"CHAT.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\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.filteredAgents.length}}\" md-on-paginate=\"vm.onInit\" md-page-select></md-table-pagination>\n\x3c!-- / AGENT TABLE --\x3e\n\x3c!-- / MAIN --\x3e"),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 animate-slide-down 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" ms-scroll>\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 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="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 animate-slide-down 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" ms-scroll>\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-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 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      <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-init="vm.getCustomFields(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\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 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\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        </div>\n\n        <div ng-switch-when="select">\n          <label>{{customField.alias}}</label>\n\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\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 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      <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 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 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" 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\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" 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          </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 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>\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 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      <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 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="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 animate-slide-down 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" ms-scroll>\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 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="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 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="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 animate-slide-down 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" ms-scroll>\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        <div layout="column">\n          <span class="font-size-10" translate="DASHBOARDS.FILTER_VOICE_QUEUES">Filter Voice Queues</span>\n          <md-select placeholder="Select one or more queues" class="font-size-12 no-margin w-200" md-on-close="vm.onChangeVoiceQueues()" ng-model="vm.voiceQueuesSelected" multiple aria-label="voiceQueues">\n            <md-option ng-value="voiceQueue.id" ng-repeat="voiceQueue in vm.voiceQueues.rows">{{ voiceQueue.name }}</md-option>\n          </md-select>\n        </div>\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/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  <div layout="row" class="agent-content" ng-if="vm.isActiveTab(0)" ng-style="{\'top\': vm.detectBrowser.browser == \'safari\' ? \'100px\' : \'36px\'}" 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  <div ng-if="!vm.isActiveTab(0)" ng-repeat="(key, tab) in vm.tabs | orderByDate " ng-switch="tab.type">\n    <div ng-switch-when="contact">\n      <div class="agent-content" ms-scroll ng-if="vm.isActiveTab(tab.id)" ng-style="{\'top\': vm.detectBrowser.browser == \'safari\' ? \'100px\' : \'36px\'}" 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">\n      <div ng-if="vm.isActiveTab(tab.id)" ms-scroll 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">\n      <div class="agent-content" ms-scroll ng-if="vm.isActiveTab(tab.id)" ng-style="{\'top\': vm.detectBrowser.browser == \'safari\' ? \'100px\' : \'36px\'}" 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">\n      <div id="interaction-app" ng-if="vm.isActiveTab(tab.id)" class="agent-content" ng-style="{\'top\': vm.detectBrowser.browser == \'safari\' ? \'100px\' : \'36px\'}" 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">\n      <div id="interaction-app" ng-if="vm.isActiveTab(tab.id)" class="agent-content" ng-style="{\'top\': vm.detectBrowser.browser == \'safari\' ? \'100px\' : \'36px\'}" 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">\n      <div id="iframe" ng-if="vm.isActiveTab(tab.id)" class="agent-content" ng-style="{\'top\': vm.detectBrowser.browser == \'safari\' ? \'100px\' : \'36px\'}" 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 ms-scroll 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">\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 mr-0">\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-card-header>\n            <md-divider></md-divider>\n            <md-card-content>\n              <div layout="row" layout-align="end center" class="reload-container">\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"></md-icon>\n                  <md-tooltip md-direction="bottom">\n                    {{ \'DASHBOARDS.RELOAD\' | translate }}\n                  </md-tooltip>\n                </md-button>\n              </div>\n              <div layout="column" layout-align="space-between start" class="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="mr-8">\n                  </md-icon>\n                  <span class="h1" 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"></md-icon>\n                  Name: <span privacy ng-cloak>{{ call.calleridname }}</span>\n                </div>\n\n                <div class="text h4 pt-8" ng-if="call.queue">\n                  <md-icon md-font-icon="icon-stackoverflow"></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"></md-icon>\n                  Extra: {{call.variables.extravar}}\n                </div>\n              </div>\n              <div layout="row" layout-align="end center">\n                <md-button ng-if="call.disposedAt" type="submit" ng-click="vm.disposeCall($event, call)" class="send-button md-accent md-raised">\n                  {{ \'DASHBOARDS.DISPOSE\' | translate}}\n                </md-button>\n              </div>\n            </md-card-content>\n          </md-card>\n          <div flex layout="row" layout-align="end 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\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                </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 ms-scroll>\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" 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" 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        <md-input-container ng-if="!vm.dialerCall" class="md-block">\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              {{ queueCampaign.name }} ({{ queueCampaign.dialActive ? \'Active\' : \'Not Active\' }})</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    </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 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 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" ms-scroll>\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 ms-scroll>\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="md-primary-bg width-50" ms-scroll>\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 layout="column" flex>\n  <div layout="column" flex>\n    <div ng-switch="vm_home.sidebar" style="overflow-y: auto" flex>\n      <div ng-switch-when="agentPresence">\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">\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">\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">\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">\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">\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">\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">\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">\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">\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">\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">\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">\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" 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>\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">\n              <span class="text-truncate font-size-12 subject-text">{{ interaction.subject }}</span>\n              \x3c!-- ng-style="{top: \'-\' + ((($index % 10) + 1) * 18) + \'px\'}" --\x3e\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" class="text-truncate font-size-12">{{ interaction.subject }}</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 ms-scroll 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 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 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 ms-scroll>\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 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 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 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 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 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 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 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 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 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="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 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        <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 ms-scroll>\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 ms-scroll 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 ms-scroll>\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 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="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 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="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 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="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 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="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 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="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 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\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 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="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 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="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 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="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 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="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" ms-scroll 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" ms-scroll 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 animate-slide-down 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" ms-scroll>\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 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="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 animate-slide-down 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" ms-scroll>\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/agents/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.AGENTS">Agents</span>\n    <div flex></div>\n    <ms-search-bar on-search="vm.onInit()" query="vm.query" on-collapse="vm.query.filter = undefined; vm.onInit()" debounce="300"></ms-search-bar>\n    <md-select ng-model="vm.query.globalStatusFilter" class="md-caption" ng-change="vm.query.pauseTypeFilter = \'\'; vm.onInit()">\n      <md-option ng-value="\'\'">{{ \'FAX.ALL\' | translate }}</md-option>\n      <md-option value="pause">{{ \'FAX.PAUSE\' | translate }}</md-option>\n      <md-option value="*pause">{{ \'FAX.PARTIALPAUSE\' | translate }}</md-option>\n      <md-option value="busy">{{ \'FAX.BUSY\' | translate }}</md-option>\n      <md-option value="idle">{{ \'FAX.IDLE\' | translate }}</md-option>\n    </md-select>\n    <md-select ng-if="vm.isPause(vm.query.globalStatusFilter)" ng-model="vm.query.pauseTypeFilter" class="md-caption" ng-change="vm.onInit()">\n      <md-option ng-value="\'\'">All</md-option>\n      <md-option value="DEFAULT PAUSE">DEFAULT PAUSE</md-option>\n      <md-option value="ACW">ACW</md-option>\n      <md-option value="LOGININPAUSE">LOGININPAUSE</md-option>\n      <md-option value="Auto-Pause">AUTOPAUSE</md-option>\n      <md-option ng-value="pause.name" ng-repeat="pause in vm.pauses.rows">{{pause.name}}</md-option>\n    </md-select>\n  </div>\n</md-toolbar>\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.order" md-on-reorder="vm.onInit">\n      <tr md-row border="1">\n        <th class="bv text-center" colspan="5">{{ \'FAX.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          {{ \'FAX.NAME\' | translate }}</th>\n        <th class="bl custom-column" md-column md-order-by="globalStatus">\n          {{ \'FAX.STATUS\' | translate }}</th>\n        <th class="bl custom-column" md-column md-order-by="lastLoginAt">\n          {{ \'FAX.LOGIN_TIME\' | translate }}</th>\n        <th class="bl custom-column" md-column md-order-by="lastPauseAt">\n          {{ \'FAX.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.order.length">\n        <td md-cell colspan="19">\n          <div layout="row" layout-align="center center">\n            <span>{{ \'FAX.NO_AGENT_ONLINE\' | translate }}</span>\n          </div>\n        </td>\n      </tr>\n      <tr md-select="vm.agents[value]" md-select-id="id" ng-repeat="(id, value) in vm.order">\n        <td class="bt padding-5">\n          <div layout="row" layout-align="start center">\n            <img class="avatar" ng-src="{{vm.agents[value].userpic && \'api/users/\'+vm.agents[value].id+\'/avatar\' || \'assets/images/avatars/profile.png\'}}">\n            <div layout="column">\n              <span>{{vm.agents[value].fullname}}</span>\n              <span>{{vm.agents[value].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 && (vm.agents[value].phoneBarEnableScreenRecordingByAgent || vm.agents[value].phoneBarEnableAutomaticScreenRecording)">\n            <div class="column" ng-if="vm.agents[value].screenrecording">\n              <span>\n                <md-icon md-font-icon="icon-camcorder-box" style="color: green; font-size: 36px;" aria-label="icon-camcorder-box26">\n                  <md-tooltip>\n                    {{ \'FAX.TOOLTIP_SCREENRECORDING_ON\' | translate }}\n                  </md-tooltip>\n                </md-icon>\n              </span>\n            </div>\n            <div class="column" ng-if="!vm.agents[value].screenrecording">\n              <span>\n                <md-icon md-font-icon="icon-camcorder-box" style="color: gray" aria-label="icon-camcorder-box26">\n                  <md-tooltip>\n                    {{ \'FAX.TOOLTIP_SCREENRECORDING_OFF\' | translate }}\n                  </md-tooltip>\n                </md-icon>\n              </span>\n            </div>\n          </div>\n        </td>\n        <td class="bt">\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'}[vm.agents[value].globalStatus]\">{{\n            vm.isPause(vm.agents[value].globalStatus) ? '' : vm.agents[value].globalStatus | uppercase }}\n            {{ vm.isPause(vm.agents[value].globalStatus) ? (vm.isPartialPause(vm.agents[value].globalStatus) ?\n            '*'+vm.agents[value].pauseType || 'DEFAULT PAUSE' : vm.agents[value].pauseType || 'DEFAULT PAUSE') :\n            ''}}</span>\n        </td>\n        <td class=\"bt custom-column\">\n          <timer start-time=\"vm.agents[value].lastLoginAt\"></timer>\n        </td>\n        <td class=\"bt custom-column\">\n          <timer ng-if=\"vm.isPause(vm.agents[value].globalStatus) || vm.isPartialPause(vm.agents[value].globalStatus)\" start-time=\"vm.agents[value].lastPauseAt\"></timer>\n        </td>\n        <td class=\"bt bl\">\n          <div layout=\"row\">\n            <span ng-if=\"!vm.agents[value].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'}[vm.agents[value].voiceStatus]\">{{\n              vm.agents[value].voiceStatus | uppercase }}</span>\n            <span ng-if=\"vm.agents[value].onhold\" class=\"text-boxed md-background-bg bl bt padding-5 orange-400-bg\">ONHOLD</span>\n          </div>\n        </td>\n        <td class=\"bt bl\">\n          <div layout=\"column\">\n            <span ng-if=\"vm.agents[value].queue\" class=\"padding-5\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].voiceStatus]\">{{\n              vm.agents[value].queue }}</span>\n            <span ng-if=\"vm.agents[value].destconnectedlinenum\" class=\"padding-5\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].voiceStatus]\" privacy ng-cloak>{{\n              vm.agents[value].destconnectedlinenum }}</span>\n            <span ng-if=\"vm.agents[value].routealias\" class=\"padding-5\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].voiceStatus]\">{{\n              vm.agents[value].routealias }}</span>\n            <span class=\"padding-5\" ng-if=\"vm.agents[value].queue || vm.agents[value].destconnectedlinenum\">\n              <timer start-time=\"vm.agents[value].voiceStatusTime\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].voiceStatus]\">\n              </timer>\n            </span>\n          </div>\n        </td>\n        <td class=\"bt bl\" ng-if=\"vm.license.chat\">\n          <div layout=\"row\">\n            <div layout=\"column\" layout-align=\"center center\">\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'}[vm.agents[value].chatStatus]\">{{\n                vm.agents[value].chatStatus | uppercase }}</span>\n            </div>\n          </div>\n        </td>\n        <td md-number class=\"bt text-center font-size-20\" ng-if=\"vm.license.chat\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].chatStatus]\">\n          {{ vm.agents[value].chatCurrentCapacity }}</td>\n        <td class=\"bl bt\" ng-if=\"vm.license.mail\">\n          <div layout=\"row\">\n            <div layout=\"column\" layout-align=\"center center\">\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'}[vm.agents[value].mailStatus]\">{{\n                vm.agents[value].mailStatus | uppercase }}</span>\n            </div>\n          </div>\n        </td>\n        <td class=\"bt padding-5 text-center font-size-20\" ng-if=\"vm.license.mail\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].mailStatus]\">\n          {{ vm.agents[value].mailCurrentCapacity }}</td>\n        <td class=\"bl bt\" ng-if=\"vm.license.messaging\">\n          <div layout=\"row\">\n            <div layout=\"column\" layout-align=\"center center\">\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'}[vm.agents[value].smsStatus]\">{{\n                vm.agents[value].smsStatus | uppercase }}</span>\n            </div>\n          </div>\n        </td>\n        <td class=\"bt padding-5 text-center font-size-20\" ng-if=\"vm.license.messaging\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].smsStatus]\">\n          {{ vm.agents[value].smsCurrentCapacity }}</td>\n        <td class=\"bt bl\" ng-if=\"vm.license.openchannel\">\n          <div layout=\"row\">\n            <div layout=\"column\" layout-align=\"center center\">\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'}[vm.agents[value].openchannelStatus]\">{{\n                vm.agents[value].openchannelStatus | uppercase }}</span>\n            </div>\n          </div>\n        </td>\n        <td class=\"bt padding-5 text-center font-size-20\" ng-if=\"vm.license.openchannel\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].openchannelStatus]\">\n          {{ vm.agents[value].openchannelCurrentCapacity }}</td>\n        <td class=\"bt bl\" ng-if=\"vm.license.fax\">\n          <div layout=\"row\">\n            <div layout=\"column\" layout-align=\"center center\">\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'}[vm.agents[value].faxStatus]\">{{\n                vm.agents[value].faxStatus | uppercase }}</span>\n            </div>\n          </div>\n        </td>\n        <td class=\"bt padding-5 text-center font-size-20\" ng-if=\"vm.license.fax\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].faxStatus]\">\n          {{ vm.agents[value].faxCurrentCapacity }}</td>\n        <td class=\"bl bt\" ng-if=\"vm.license.whatsapp\">\n          <div layout=\"row\">\n            <div layout=\"column\" layout-align=\"center center\">\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'}[vm.agents[value].whatsappStatus]\">{{\n                vm.agents[value].whatsappStatus | uppercase }}</span>\n            </div>\n          </div>\n        </td>\n        <td class=\"bt padding-5 text-center font-size-20\" ng-if=\"vm.license.whatsapp\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].whatsappStatus]\">\n          {{ vm.agents[value].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(vm.agents[value], $event)\" translate=\"FAX.LOGOUT\">\n                  Logout\n                </md-button>\n              </md-menu-item>\n              <md-menu-item>\n                <md-button ng-click=\"vm.queueAdd(vm.agents[value], $event)\" translate=\"FAX.AGENTADD_QUEUE\">\n                  Add Agent In Queue\n                </md-button>\n              </md-menu-item>\n              <md-menu-item ng-if=\"vm.license.screenrecording && vm.agents[value].phoneBarEnableScreenRecordingByAgent\">\n                <md-menu>\n                  <md-button ng-click=\"$mdMenu.open()\" class=\"text-capitalize\" translate=\"FAX.SCREENRECORDING\">Screen Recording\n                  </md-button>\n                  <md-menu-content>\n                    <md-menu-item ng-if=\"!vm.agents[value].screenrecording\">\n                      <md-button ng-click=\"vm.screenRecording(vm.agents[value], true)\"><em translate=\"FAX.START_SCREENRECORDING\">Start\n                          Screen Recording</em></md-button>\n                    </md-menu-item>\n                    <md-menu-item ng-if=\"vm.agents[value].screenrecording\">\n                      <md-button ng-click=\"vm.screenRecording(vm.agents[value], false)\"><em translate=\"FAX.STOP_SCREENRECORDING\">Stop\n                          Screen Recording</em></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=\"FAX.PAUSE\">Pause</md-button>\n                  <md-menu-content>\n                    <md-menu-item>\n                      <md-button ng-disabled=\" vm.agents[value].voicePause && 'DEFAULT PAUSE' === vm.agents[value].pauseType\" ng-click=\"vm.pause(vm.agents[value])\"><em translate=\"FAX.DEFAULT_PAUSE\">Default\n                          Pause</em></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=\"vm.agents[value].voicePause && pause.name === vm.agents[value].pauseType\" ng-click=\"vm.pause(vm.agents[value], 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=\"vm.isPause(vm.agents[value].globalStatus)\">\n                <md-button ng-click=\"vm.unPause(vm.agents[value])\" translate=\"FAX.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\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.filteredAgents.length}}\" md-on-paginate=\"vm.onInit\" 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" ms-scroll>\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 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="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 animate-slide-down 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" ms-scroll>\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 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="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 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 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 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="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      <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      <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" required>\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      <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\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 animate-slide-down 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" ms-scroll>\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="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.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="username ">{{dynamics365Account.username}}</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="remoteUri ">{{dynamics365Account.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(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 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="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 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 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              <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\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.dynamics365Account.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.URI">Uri</label>\n                <input type="url" name="remoteUri" ng-model="vm.dynamics365Account.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.TENANTID">TenantId</label>\n                <input type="text" name="tenantId" ng-model="vm.dynamics365Account.tenantId" ng-required="true" 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="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.dynamics365Account.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.MOTIONPROXYADDRESS">MotionProxyAddress</label>\n                <input type="url" name="serverUrl" ng-model="vm.dynamics365Account.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.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      <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\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\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/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 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="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 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="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 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 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 animate-slide-down 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" ms-scroll>\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 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="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 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="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 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 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 animate-slide-down 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" ms-scroll>\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 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="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 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="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 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 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 animate-slide-down 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" ms-scroll>\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 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="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 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="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 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 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 animate-slide-down 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" ms-scroll>\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 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="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 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="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 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 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 animate-slide-down 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" ms-scroll>\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 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="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 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="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 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 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 animate-slide-down 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" ms-scroll>\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 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="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 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 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 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="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 animate-slide-down 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" ms-scroll>\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 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="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 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="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 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 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 animate-slide-down 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" ms-scroll>\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 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="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 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="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 ms-scroll>\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 animate-slide-down 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" ms-scroll>\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.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon 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="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="cservice" ng-model="vm.mailAccount.cservice" required>\n          <md-option ng-value="null">Custom</md-option>\n          <md-option ng-value="\'gmail\'">Gmail</md-option>\n          <md-option ng-value="\'hotmail\'">Hotmail</md-option>\n          <md-option ng-value="\'yahoo\'">Yahoo</md-option>\n          <md-option ng-value="\'outlook365\'">Outlook365</md-option>\n        </md-select>\n        <div ng-messages="mailAccountForm[\'cservice\'].$error" ng-show="mailAccountForm[\'cservice\'].$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      <md-input-container ng-if="(vm.newMailAccount && vm.mailAccount.cservice == null) || (vm.newMailAccount == undefined && vm.mailAccount.Imap.service == null)" 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">\n\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 ng-if="(vm.newMailAccount && vm.mailAccount.cservice == null) || (vm.newMailAccount == undefined && vm.mailAccount.Imap.service == null)" 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">\n\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      <md-input-container ng-if="(vm.newMailAccount && vm.mailAccount.cservice == null) || (vm.newMailAccount == undefined && vm.mailAccount.Smtp.service == null)" 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">\n\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 ng-if="(vm.newMailAccount && vm.mailAccount.cservice == null) || (vm.newMailAccount == undefined && vm.mailAccount.Smtp.service == null)" 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">\n\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      <md-input-container ng-if="vm.mailAccount.cservice !== undefined && vm.mailAccount.cservice == null && vm.newMailAccount" class="md-block">\n        <md-switch ng-model="vm.mailAccount.cauthentication" aria-label="Authentication"><span translate="MAIL.AUTHENTICATION">Authentication</span></md-switch>\n      </md-input-container>\n      <md-input-container ng-if="(vm.mailAccount.cauthentication == true || vm.mailAccount.cservice != null) && vm.newMailAccount" class="md-block">\n        <label translate="MAIL.USERNAME">Username</label>\n        <input type="text" name="cuser" ng-model="vm.mailAccount.cuser" ng-required="true">\n\n        <div class="hint"><span translate="MAIL.HELP.USERNAME"></span></div>\n        <div ng-messages="mailAccountForm[\'cuser\'].$error" ng-show="mailAccountForm[\'cuser\'].$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.cauthentication == true || vm.mailAccount.cservice != null) && vm.newMailAccount">\n        <label translate="MAIL.PASSWORD">Password</label>\n        <input type="password" name="cpassword" ng-model="vm.mailAccount.cpassword" placeholder="Password" translate translate-attr-placeholder="MAIL.PASSWORD" required>\n        <div class="hint"><span translate="MAIL.HELP.PASSWORD"></span></div>\n        <div ng-messages="mailAccountForm[\'cpassword\'].$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\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\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 MAILACCOUNT\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 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="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 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="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 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="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 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="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 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="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 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\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 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="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 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="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 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="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 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="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 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="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  \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-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.gotogoto(vm.mailAccount, $event)" 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.agentadddialog(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) || (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  \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="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.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                <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="generalForm[\'fontFamily\'].$error" ng-show="generalForm[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="generalForm[\'fontSize\'].$error" ng-show="generalForm[\'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              <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\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          <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          <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        </md-tab-body>\n      </md-tab>\n      <md-tab>\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.SERVICE">Service</label>\n                <md-select name="Imap.service" ng-model="vm.mailAccount.Imap.service" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="null">Custom</md-option>\n                  <md-option ng-value="\'gmail\'">Gmail</md-option>\n                  <md-option ng-value="\'hotmail\'">Hotmail</md-option>\n                  <md-option ng-value="\'yahoo\'">Yahoo</md-option>\n                  <md-option ng-value="\'outlook365\'">Outlook365</md-option>\n                </md-select>\n                <div ng-messages="imapForm[\'Imap.service\'].$error" ng-show="imapForm[\'Imap.service\'].$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              <md-input-container ng-if="(vm.newMailAccount && vm.mailAccount.cservice == null) || (vm.newMailAccount == undefined && vm.mailAccount.Imap.service == null)" 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\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 ng-if="(vm.newMailAccount && vm.mailAccount.cservice == null) || (vm.newMailAccount == undefined && vm.mailAccount.Imap.service == null)" 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\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 ng-if="vm.mailAccount.Imap.service == null" 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 == true || vm.mailAccount.Imap.service != null" 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\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 == true || vm.mailAccount.Imap.service != null">\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\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\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">connTimeout</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\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">connTimeout field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MAIL.ERRORS.CONNTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">connTimeout 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">authTimeout</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\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">authTimeout field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MAIL.ERRORS.AUTHTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">authTimeout must be a valid greater or equal than</span> <span>1</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.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.SERVICE">Service</label>\n                <md-select name="Smtp.service" ng-model="vm.mailAccount.Smtp.service" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="null">Custom</md-option>\n                  <md-option ng-value="\'gmail\'">Gmail</md-option>\n                  <md-option ng-value="\'hotmail\'">Hotmail</md-option>\n                  <md-option ng-value="\'yahoo\'">Yahoo</md-option>\n                  <md-option ng-value="\'outlook365\'">Outlook365</md-option>\n                </md-select>\n                <div ng-messages="smtpForm[\'Smtp.service\'].$error" ng-show="smtpForm[\'Smtp.service\'].$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              <md-input-container ng-if="(vm.newMailAccount && vm.mailAccount.cservice == null) || (vm.newMailAccount == undefined && vm.mailAccount.Smtp.service == null)" 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 ng-if="(vm.newMailAccount && vm.mailAccount.cservice == null) || (vm.newMailAccount == undefined && vm.mailAccount.Smtp.service == null)" 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 ng-if="vm.mailAccount.Smtp.service == null" 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 ng-if="vm.mailAccount.Smtp.service == null" 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 == true || vm.mailAccount.Smtp.service != null" 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 == true || vm.mailAccount.Smtp.service != null">\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\n\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 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" ms-scroll 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" ms-scroll 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  \x3c!-- / CONTENT --\x3e\n\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  \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.MAILACCOUNTS">MailAccounts</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.selectedMailAccounts.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.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  \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!-- MAILACCOUNT TABLE --\x3e\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 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="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">\n                <td md-cell ng-if="mailAccount.userpic"><img class="avatar" alt="{{mailAccount.name}}" ng-src="api/users/{{mailAccount.id}}/avatar" /></td>\n                <td md-cell ng-if="!mailAccount.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{mailAccount.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(mailAccount, ev) : vm.createOrEditMailAccount($event, mailAccount)" md-cell class="id ">{{mailAccount.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(mailAccount, ev) : vm.createOrEditMailAccount($event, mailAccount)" md-cell class="name ">{{mailAccount.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(mailAccount, ev) : vm.createOrEditMailAccount($event, mailAccount)" md-cell class="key ">{{mailAccount.key}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(mailAccount, ev) : vm.createOrEditMailAccount($event, mailAccount)" md-cell class="email ">{{mailAccount.email}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(mailAccount, ev) : vm.createOrEditMailAccount($event, mailAccount)" 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 ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(mailAccount, ev) : vm.createOrEditMailAccount($event, mailAccount)" md-cell class="description ">{{mailAccount.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="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(mailAccount, $event    )" translate="MAIL.EDIT_MAILACCOUNT">\n                          Edit MailAccount\n                        </md-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.verifysmtpverifysmtp(mailAccount, $event    )" translate="MAIL.VERIFYSMTP_MAILACCOUNT">\n                          verifysmtp MailAccount\n                        </md-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(mailAccount, $event    )" translate="MAIL.INTERACTIONS_MAILACCOUNT">\n                          Interactions MailAccount\n                        </md-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(mailAccount, $event    )" translate="MAIL.GOTOREALTIME_MAILACCOUNT">\n                          goToRealtime MailAccount\n                        </md-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(mailAccount, $event    )" translate="MAIL.AGENTADD_MAILACCOUNT">\n                          AgentAdd MailAccount\n                        </md-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(mailAccount, $event    )" translate="MAIL.DELETE_MAILACCOUNT">\n                          Delete MailAccount\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.mailAccounts.count}}" md-on-paginate="vm.getMailAccounts" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / MAILACCOUNT 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 MAILACCOUNT BUTTON --\x3e\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  \x3c!-- / ADD MAILACCOUNT BUTTON --\x3e\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 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="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 animate-slide-down 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" ms-scroll>\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 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="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 animate-slide-down 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" ms-scroll>\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/agents/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.AGENTS">Agents</span>\n    <div flex></div>\n    <ms-search-bar on-search="vm.onInit()" query="vm.query" on-collapse="vm.query.filter = undefined; vm.onInit()" debounce="300"></ms-search-bar>\n    <md-select ng-model="vm.query.globalStatusFilter" class="md-caption" ng-change="vm.query.pauseTypeFilter = \'\'; vm.onInit()">\n      <md-option ng-value="\'\'">{{ \'MAIL.ALL\' | translate }}</md-option>\n      <md-option value="pause">{{ \'MAIL.PAUSE\' | translate }}</md-option>\n      <md-option value="*pause">{{ \'MAIL.PARTIALPAUSE\' | translate }}</md-option>\n      <md-option value="busy">{{ \'MAIL.BUSY\' | translate }}</md-option>\n      <md-option value="idle">{{ \'MAIL.IDLE\' | translate }}</md-option>\n    </md-select>\n    <md-select ng-if="vm.isPause(vm.query.globalStatusFilter)" ng-model="vm.query.pauseTypeFilter" class="md-caption" ng-change="vm.onInit()">\n      <md-option ng-value="\'\'">All</md-option>\n      <md-option value="DEFAULT PAUSE">DEFAULT PAUSE</md-option>\n      <md-option value="ACW">ACW</md-option>\n      <md-option value="LOGININPAUSE">LOGININPAUSE</md-option>\n      <md-option value="Auto-Pause">AUTOPAUSE</md-option>\n      <md-option ng-value="pause.name" ng-repeat="pause in vm.pauses.rows">{{pause.name}}</md-option>\n    </md-select>\n  </div>\n</md-toolbar>\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.order" md-on-reorder="vm.onInit">\n      <tr md-row border="1">\n        <th class="bv text-center" colspan="5">{{ \'MAIL.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          {{ \'MAIL.NAME\' | translate }}</th>\n        <th class="bl custom-column" md-column md-order-by="globalStatus">\n          {{ \'MAIL.STATUS\' | translate }}</th>\n        <th class="bl custom-column" md-column md-order-by="lastLoginAt">\n          {{ \'MAIL.LOGIN_TIME\' | translate }}</th>\n        <th class="bl custom-column" md-column md-order-by="lastPauseAt">\n          {{ \'MAIL.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.order.length">\n        <td md-cell colspan="19">\n          <div layout="row" layout-align="center center">\n            <span>{{ \'MAIL.NO_AGENT_ONLINE\' | translate }}</span>\n          </div>\n        </td>\n      </tr>\n      <tr md-select="vm.agents[value]" md-select-id="id" ng-repeat="(id, value) in vm.order">\n        <td class="bt padding-5">\n          <div layout="row" layout-align="start center">\n            <img class="avatar" ng-src="{{vm.agents[value].userpic && \'api/users/\'+vm.agents[value].id+\'/avatar\' || \'assets/images/avatars/profile.png\'}}">\n            <div layout="column">\n              <span>{{vm.agents[value].fullname}}</span>\n              <span>{{vm.agents[value].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 && (vm.agents[value].phoneBarEnableScreenRecordingByAgent || vm.agents[value].phoneBarEnableAutomaticScreenRecording)">\n            <div class="column" ng-if="vm.agents[value].screenrecording">\n              <span>\n                <md-icon md-font-icon="icon-camcorder-box" style="color: green; font-size: 36px;" aria-label="icon-camcorder-box26">\n                  <md-tooltip>\n                    {{ \'MAIL.TOOLTIP_SCREENRECORDING_ON\' | translate }}\n                  </md-tooltip>\n                </md-icon>\n              </span>\n            </div>\n            <div class="column" ng-if="!vm.agents[value].screenrecording">\n              <span>\n                <md-icon md-font-icon="icon-camcorder-box" style="color: gray" aria-label="icon-camcorder-box26">\n                  <md-tooltip>\n                    {{ \'MAIL.TOOLTIP_SCREENRECORDING_OFF\' | translate }}\n                  </md-tooltip>\n                </md-icon>\n              </span>\n            </div>\n          </div>\n        </td>\n        <td class="bt">\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'}[vm.agents[value].globalStatus]\">{{\n            vm.isPause(vm.agents[value].globalStatus) ? '' : vm.agents[value].globalStatus | uppercase }}\n            {{ vm.isPause(vm.agents[value].globalStatus) ? (vm.isPartialPause(vm.agents[value].globalStatus) ?\n            '*'+vm.agents[value].pauseType || 'DEFAULT PAUSE' : vm.agents[value].pauseType || 'DEFAULT PAUSE') :\n            ''}}</span>\n        </td>\n        <td class=\"bt custom-column\">\n          <timer start-time=\"vm.agents[value].lastLoginAt\"></timer>\n        </td>\n        <td class=\"bt custom-column\">\n          <timer ng-if=\"vm.isPause(vm.agents[value].globalStatus) || vm.isPartialPause(vm.agents[value].globalStatus)\" start-time=\"vm.agents[value].lastPauseAt\"></timer>\n        </td>\n        <td class=\"bt bl\">\n          <div layout=\"row\">\n            <span ng-if=\"!vm.agents[value].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'}[vm.agents[value].voiceStatus]\">{{\n              vm.agents[value].voiceStatus | uppercase }}</span>\n            <span ng-if=\"vm.agents[value].onhold\" class=\"text-boxed md-background-bg bl bt padding-5 orange-400-bg\">ONHOLD</span>\n          </div>\n        </td>\n        <td class=\"bt bl\">\n          <div layout=\"column\">\n            <span ng-if=\"vm.agents[value].queue\" class=\"padding-5\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].voiceStatus]\">{{\n              vm.agents[value].queue }}</span>\n            <span ng-if=\"vm.agents[value].destconnectedlinenum\" class=\"padding-5\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].voiceStatus]\" privacy ng-cloak>{{\n              vm.agents[value].destconnectedlinenum }}</span>\n            <span ng-if=\"vm.agents[value].routealias\" class=\"padding-5\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].voiceStatus]\">{{\n              vm.agents[value].routealias }}</span>\n            <span class=\"padding-5\" ng-if=\"vm.agents[value].queue || vm.agents[value].destconnectedlinenum\">\n              <timer start-time=\"vm.agents[value].voiceStatusTime\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].voiceStatus]\">\n              </timer>\n            </span>\n          </div>\n        </td>\n        <td class=\"bt bl\" ng-if=\"vm.license.chat\">\n          <div layout=\"row\">\n            <div layout=\"column\" layout-align=\"center center\">\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'}[vm.agents[value].chatStatus]\">{{\n                vm.agents[value].chatStatus | uppercase }}</span>\n            </div>\n          </div>\n        </td>\n        <td md-number class=\"bt text-center font-size-20\" ng-if=\"vm.license.chat\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].chatStatus]\">\n          {{ vm.agents[value].chatCurrentCapacity }}</td>\n        <td class=\"bl bt\" ng-if=\"vm.license.mail\">\n          <div layout=\"row\">\n            <div layout=\"column\" layout-align=\"center center\">\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'}[vm.agents[value].mailStatus]\">{{\n                vm.agents[value].mailStatus | uppercase }}</span>\n            </div>\n          </div>\n        </td>\n        <td class=\"bt padding-5 text-center font-size-20\" ng-if=\"vm.license.mail\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].mailStatus]\">\n          {{ vm.agents[value].mailCurrentCapacity }}</td>\n        <td class=\"bl bt\" ng-if=\"vm.license.messaging\">\n          <div layout=\"row\">\n            <div layout=\"column\" layout-align=\"center center\">\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'}[vm.agents[value].smsStatus]\">{{\n                vm.agents[value].smsStatus | uppercase }}</span>\n            </div>\n          </div>\n        </td>\n        <td class=\"bt padding-5 text-center font-size-20\" ng-if=\"vm.license.messaging\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].smsStatus]\">\n          {{ vm.agents[value].smsCurrentCapacity }}</td>\n        <td class=\"bt bl\" ng-if=\"vm.license.openchannel\">\n          <div layout=\"row\">\n            <div layout=\"column\" layout-align=\"center center\">\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'}[vm.agents[value].openchannelStatus]\">{{\n                vm.agents[value].openchannelStatus | uppercase }}</span>\n            </div>\n          </div>\n        </td>\n        <td class=\"bt padding-5 text-center font-size-20\" ng-if=\"vm.license.openchannel\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].openchannelStatus]\">\n          {{ vm.agents[value].openchannelCurrentCapacity }}</td>\n        <td class=\"bt bl\" ng-if=\"vm.license.fax\">\n          <div layout=\"row\">\n            <div layout=\"column\" layout-align=\"center center\">\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'}[vm.agents[value].faxStatus]\">{{\n                vm.agents[value].faxStatus | uppercase }}</span>\n            </div>\n          </div>\n        </td>\n        <td class=\"bt padding-5 text-center font-size-20\" ng-if=\"vm.license.fax\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].faxStatus]\">\n          {{ vm.agents[value].faxCurrentCapacity }}</td>\n        <td class=\"bl bt\" ng-if=\"vm.license.whatsapp\">\n          <div layout=\"row\">\n            <div layout=\"column\" layout-align=\"center center\">\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'}[vm.agents[value].whatsappStatus]\">{{\n                vm.agents[value].whatsappStatus | uppercase }}</span>\n            </div>\n          </div>\n        </td>\n        <td class=\"bt padding-5 text-center font-size-20\" ng-if=\"vm.license.whatsapp\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].whatsappStatus]\">\n          {{ vm.agents[value].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(vm.agents[value], $event)\" translate=\"MAIL.LOGOUT\">\n                  Logout\n                </md-button>\n              </md-menu-item>\n              <md-menu-item>\n                <md-button ng-click=\"vm.queueAdd(vm.agents[value], $event)\" translate=\"MAIL.AGENTADD_QUEUE\">\n                  Add Agent In Queue\n                </md-button>\n              </md-menu-item>\n              <md-menu-item ng-if=\"vm.license.screenrecording && vm.agents[value].phoneBarEnableScreenRecordingByAgent\">\n                <md-menu>\n                  <md-button ng-click=\"$mdMenu.open()\" class=\"text-capitalize\" translate=\"MAIL.SCREENRECORDING\">Screen Recording\n                  </md-button>\n                  <md-menu-content>\n                    <md-menu-item ng-if=\"!vm.agents[value].screenrecording\">\n                      <md-button ng-click=\"vm.screenRecording(vm.agents[value], true)\"><em translate=\"MAIL.START_SCREENRECORDING\">Start\n                          Screen Recording</em></md-button>\n                    </md-menu-item>\n                    <md-menu-item ng-if=\"vm.agents[value].screenrecording\">\n                      <md-button ng-click=\"vm.screenRecording(vm.agents[value], false)\"><em translate=\"MAIL.STOP_SCREENRECORDING\">Stop\n                          Screen Recording</em></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=\"MAIL.PAUSE\">Pause</md-button>\n                  <md-menu-content>\n                    <md-menu-item>\n                      <md-button ng-disabled=\" vm.agents[value].voicePause && 'DEFAULT PAUSE' === vm.agents[value].pauseType\" ng-click=\"vm.pause(vm.agents[value])\"><em translate=\"MAIL.DEFAULT_PAUSE\">Default\n                          Pause</em></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=\"vm.agents[value].voicePause && pause.name === vm.agents[value].pauseType\" ng-click=\"vm.pause(vm.agents[value], 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=\"vm.isPause(vm.agents[value].globalStatus)\">\n                <md-button ng-click=\"vm.unPause(vm.agents[value])\" translate=\"MAIL.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\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.filteredAgents.length}}\" md-on-paginate=\"vm.onInit\" 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 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="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 animate-slide-down 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" ms-scroll>\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 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 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/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 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="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 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="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 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" 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 animate-slide-down 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" ms-scroll>\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 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="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 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="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 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" 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      <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) || (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        </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\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 animate-slide-down 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" ms-scroll>\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/agents/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.AGENTS">Agents</span>\n    <div flex></div>\n    <ms-search-bar on-search="vm.onInit()" query="vm.query" on-collapse="vm.query.filter = undefined; vm.onInit()" debounce="300"></ms-search-bar>\n    <md-select ng-model="vm.query.globalStatusFilter" class="md-caption" ng-change="vm.query.pauseTypeFilter = \'\'; vm.onInit()">\n      <md-option ng-value="\'\'">{{ \'MOTIONDIALER.ALL\' | translate }}</md-option>\n      <md-option value="pause">{{ \'MOTIONDIALER.PAUSE\' | translate }}</md-option>\n      <md-option value="*pause">{{ \'MOTIONDIALER.PARTIALPAUSE\' | translate }}</md-option>\n      <md-option value="busy">{{ \'MOTIONDIALER.BUSY\' | translate }}</md-option>\n      <md-option value="idle">{{ \'MOTIONDIALER.IDLE\' | translate }}</md-option>\n    </md-select>\n    <md-select ng-if="vm.isPause(vm.query.globalStatusFilter)" ng-model="vm.query.pauseTypeFilter" class="md-caption" ng-change="vm.onInit()">\n      <md-option ng-value="\'\'">All</md-option>\n      <md-option value="DEFAULT PAUSE">DEFAULT PAUSE</md-option>\n      <md-option value="ACW">ACW</md-option>\n      <md-option value="LOGININPAUSE">LOGININPAUSE</md-option>\n      <md-option value="Auto-Pause">AUTOPAUSE</md-option>\n      <md-option ng-value="pause.name" ng-repeat="pause in vm.pauses.rows">{{pause.name}}</md-option>\n    </md-select>\n  </div>\n</md-toolbar>\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.order" md-on-reorder="vm.onInit">\n      <tr md-row border="1">\n        <th class="bv text-center" colspan="5">{{ \'MOTIONDIALER.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          {{ \'MOTIONDIALER.NAME\' | translate }}</th>\n        <th class="bl custom-column" md-column md-order-by="globalStatus">\n          {{ \'MOTIONDIALER.STATUS\' | translate }}</th>\n        <th class="bl custom-column" md-column md-order-by="lastLoginAt">\n          {{ \'MOTIONDIALER.LOGIN_TIME\' | translate }}</th>\n        <th class="bl custom-column" md-column md-order-by="lastPauseAt">\n          {{ \'MOTIONDIALER.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.order.length">\n        <td md-cell colspan="19">\n          <div layout="row" layout-align="center center">\n            <span>{{ \'MOTIONDIALER.NO_AGENT_ONLINE\' | translate }}</span>\n          </div>\n        </td>\n      </tr>\n      <tr md-select="vm.agents[value]" md-select-id="id" ng-repeat="(id, value) in vm.order">\n        <td class="bt padding-5">\n          <div layout="row" layout-align="start center">\n            <img class="avatar" ng-src="{{vm.agents[value].userpic && \'api/users/\'+vm.agents[value].id+\'/avatar\' || \'assets/images/avatars/profile.png\'}}">\n            <div layout="column">\n              <span>{{vm.agents[value].fullname}}</span>\n              <span>{{vm.agents[value].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 && (vm.agents[value].phoneBarEnableScreenRecordingByAgent || vm.agents[value].phoneBarEnableAutomaticScreenRecording)">\n            <div class="column" ng-if="vm.agents[value].screenrecording">\n              <span>\n                <md-icon md-font-icon="icon-camcorder-box" style="color: green; font-size: 36px;" aria-label="icon-camcorder-box26">\n                  <md-tooltip>\n                    {{ \'MOTIONDIALER.TOOLTIP_SCREENRECORDING_ON\' | translate }}\n                  </md-tooltip>\n                </md-icon>\n              </span>\n            </div>\n            <div class="column" ng-if="!vm.agents[value].screenrecording">\n              <span>\n                <md-icon md-font-icon="icon-camcorder-box" style="color: gray" aria-label="icon-camcorder-box26">\n                  <md-tooltip>\n                    {{ \'MOTIONDIALER.TOOLTIP_SCREENRECORDING_OFF\' | translate }}\n                  </md-tooltip>\n                </md-icon>\n              </span>\n            </div>\n          </div>\n        </td>\n        <td class="bt">\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'}[vm.agents[value].globalStatus]\">{{\n            vm.isPause(vm.agents[value].globalStatus) ? '' : vm.agents[value].globalStatus | uppercase }}\n            {{ vm.isPause(vm.agents[value].globalStatus) ? (vm.isPartialPause(vm.agents[value].globalStatus) ?\n            '*'+vm.agents[value].pauseType || 'DEFAULT PAUSE' : vm.agents[value].pauseType || 'DEFAULT PAUSE') :\n            ''}}</span>\n        </td>\n        <td class=\"bt custom-column\">\n          <timer start-time=\"vm.agents[value].lastLoginAt\"></timer>\n        </td>\n        <td class=\"bt custom-column\">\n          <timer ng-if=\"vm.isPause(vm.agents[value].globalStatus) || vm.isPartialPause(vm.agents[value].globalStatus)\" start-time=\"vm.agents[value].lastPauseAt\"></timer>\n        </td>\n        <td class=\"bt bl\">\n          <div layout=\"row\">\n            <span ng-if=\"!vm.agents[value].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'}[vm.agents[value].voiceStatus]\">{{\n              vm.agents[value].voiceStatus | uppercase }}</span>\n            <span ng-if=\"vm.agents[value].onhold\" class=\"text-boxed md-background-bg bl bt padding-5 orange-400-bg\">ONHOLD</span>\n          </div>\n        </td>\n        <td class=\"bt bl\">\n          <div layout=\"column\">\n            <span ng-if=\"vm.agents[value].queue\" class=\"padding-5\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].voiceStatus]\">{{\n              vm.agents[value].queue }}</span>\n            <span ng-if=\"vm.agents[value].destconnectedlinenum\" class=\"padding-5\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].voiceStatus]\" privacy ng-cloak>{{\n              vm.agents[value].destconnectedlinenum }}</span>\n            <span ng-if=\"vm.agents[value].routealias\" class=\"padding-5\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].voiceStatus]\">{{\n              vm.agents[value].routealias }}</span>\n            <span class=\"padding-5\" ng-if=\"vm.agents[value].queue || vm.agents[value].destconnectedlinenum\">\n              <timer start-time=\"vm.agents[value].voiceStatusTime\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].voiceStatus]\">\n              </timer>\n            </span>\n          </div>\n        </td>\n        <td class=\"bt bl\" ng-if=\"vm.license.chat\">\n          <div layout=\"row\">\n            <div layout=\"column\" layout-align=\"center center\">\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'}[vm.agents[value].chatStatus]\">{{\n                vm.agents[value].chatStatus | uppercase }}</span>\n            </div>\n          </div>\n        </td>\n        <td md-number class=\"bt text-center font-size-20\" ng-if=\"vm.license.chat\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].chatStatus]\">\n          {{ vm.agents[value].chatCurrentCapacity }}</td>\n        <td class=\"bl bt\" ng-if=\"vm.license.mail\">\n          <div layout=\"row\">\n            <div layout=\"column\" layout-align=\"center center\">\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'}[vm.agents[value].mailStatus]\">{{\n                vm.agents[value].mailStatus | uppercase }}</span>\n            </div>\n          </div>\n        </td>\n        <td class=\"bt padding-5 text-center font-size-20\" ng-if=\"vm.license.mail\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].mailStatus]\">\n          {{ vm.agents[value].mailCurrentCapacity }}</td>\n        <td class=\"bl bt\" ng-if=\"vm.license.messaging\">\n          <div layout=\"row\">\n            <div layout=\"column\" layout-align=\"center center\">\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'}[vm.agents[value].smsStatus]\">{{\n                vm.agents[value].smsStatus | uppercase }}</span>\n            </div>\n          </div>\n        </td>\n        <td class=\"bt padding-5 text-center font-size-20\" ng-if=\"vm.license.messaging\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].smsStatus]\">\n          {{ vm.agents[value].smsCurrentCapacity }}</td>\n        <td class=\"bt bl\" ng-if=\"vm.license.openchannel\">\n          <div layout=\"row\">\n            <div layout=\"column\" layout-align=\"center center\">\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'}[vm.agents[value].openchannelStatus]\">{{\n                vm.agents[value].openchannelStatus | uppercase }}</span>\n            </div>\n          </div>\n        </td>\n        <td class=\"bt padding-5 text-center font-size-20\" ng-if=\"vm.license.openchannel\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].openchannelStatus]\">\n          {{ vm.agents[value].openchannelCurrentCapacity }}</td>\n        <td class=\"bt bl\" ng-if=\"vm.license.fax\">\n          <div layout=\"row\">\n            <div layout=\"column\" layout-align=\"center center\">\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'}[vm.agents[value].faxStatus]\">{{\n                vm.agents[value].faxStatus | uppercase }}</span>\n            </div>\n          </div>\n        </td>\n        <td class=\"bt padding-5 text-center font-size-20\" ng-if=\"vm.license.fax\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].faxStatus]\">\n          {{ vm.agents[value].faxCurrentCapacity }}</td>\n        <td class=\"bl bt\" ng-if=\"vm.license.whatsapp\">\n          <div layout=\"row\">\n            <div layout=\"column\" layout-align=\"center center\">\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'}[vm.agents[value].whatsappStatus]\">{{\n                vm.agents[value].whatsappStatus | uppercase }}</span>\n            </div>\n          </div>\n        </td>\n        <td class=\"bt padding-5 text-center font-size-20\" ng-if=\"vm.license.whatsapp\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].whatsappStatus]\">\n          {{ vm.agents[value].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(vm.agents[value], $event)\" translate=\"MOTIONDIALER.LOGOUT\">\n                  Logout\n                </md-button>\n              </md-menu-item>\n              <md-menu-item>\n                <md-button ng-click=\"vm.queueAdd(vm.agents[value], $event)\" translate=\"MOTIONDIALER.AGENTADD_QUEUE\">\n                  Add Agent In Queue\n                </md-button>\n              </md-menu-item>\n              <md-menu-item ng-if=\"vm.license.screenrecording && vm.agents[value].phoneBarEnableScreenRecordingByAgent\">\n                <md-menu>\n                  <md-button ng-click=\"$mdMenu.open()\" class=\"text-capitalize\" translate=\"MOTIONDIALER.SCREENRECORDING\">Screen Recording\n                  </md-button>\n                  <md-menu-content>\n                    <md-menu-item ng-if=\"!vm.agents[value].screenrecording\">\n                      <md-button ng-click=\"vm.screenRecording(vm.agents[value], true)\"><em translate=\"MOTIONDIALER.START_SCREENRECORDING\">Start\n                          Screen Recording</em></md-button>\n                    </md-menu-item>\n                    <md-menu-item ng-if=\"vm.agents[value].screenrecording\">\n                      <md-button ng-click=\"vm.screenRecording(vm.agents[value], false)\"><em translate=\"MOTIONDIALER.STOP_SCREENRECORDING\">Stop\n                          Screen Recording</em></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=\"MOTIONDIALER.PAUSE\">Pause</md-button>\n                  <md-menu-content>\n                    <md-menu-item>\n                      <md-button ng-disabled=\" vm.agents[value].voicePause && 'DEFAULT PAUSE' === vm.agents[value].pauseType\" ng-click=\"vm.pause(vm.agents[value])\"><em translate=\"MOTIONDIALER.DEFAULT_PAUSE\">Default\n                          Pause</em></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=\"vm.agents[value].voicePause && pause.name === vm.agents[value].pauseType\" ng-click=\"vm.pause(vm.agents[value], 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=\"vm.isPause(vm.agents[value].globalStatus)\">\n                <md-button ng-click=\"vm.unPause(vm.agents[value])\" translate=\"MOTIONDIALER.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\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.filteredAgents.length}}\" md-on-paginate=\"vm.onInit\" md-page-select></md-table-pagination>\n\x3c!-- / AGENT TABLE --\x3e\n\x3c!-- / MAIN --\x3e"),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" ms-scroll>\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 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="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 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="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 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="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 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="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 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="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 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="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 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="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 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="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 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="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 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\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 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="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 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="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 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="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 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="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 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="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" ms-scroll 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" ms-scroll 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 animate-slide-down 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" ms-scroll>\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 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="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 animate-slide-down 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" ms-scroll>\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/agents/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="OPENCHANNEL.AGENTS">Agents</span>\n    <div flex></div>\n    <ms-search-bar on-search="vm.onInit()" query="vm.query" on-collapse="vm.query.filter = undefined; vm.onInit()" debounce="300"></ms-search-bar>\n    <md-select ng-model="vm.query.globalStatusFilter" class="md-caption" ng-change="vm.query.pauseTypeFilter = \'\'; vm.onInit()">\n      <md-option ng-value="\'\'">{{ \'OPENCHANNEL.ALL\' | translate }}</md-option>\n      <md-option value="pause">{{ \'OPENCHANNEL.PAUSE\' | translate }}</md-option>\n      <md-option value="*pause">{{ \'OPENCHANNEL.PARTIALPAUSE\' | translate }}</md-option>\n      <md-option value="busy">{{ \'OPENCHANNEL.BUSY\' | translate }}</md-option>\n      <md-option value="idle">{{ \'OPENCHANNEL.IDLE\' | translate }}</md-option>\n    </md-select>\n    <md-select ng-if="vm.isPause(vm.query.globalStatusFilter)" ng-model="vm.query.pauseTypeFilter" class="md-caption" ng-change="vm.onInit()">\n      <md-option ng-value="\'\'">All</md-option>\n      <md-option value="DEFAULT PAUSE">DEFAULT PAUSE</md-option>\n      <md-option value="ACW">ACW</md-option>\n      <md-option value="LOGININPAUSE">LOGININPAUSE</md-option>\n      <md-option value="Auto-Pause">AUTOPAUSE</md-option>\n      <md-option ng-value="pause.name" ng-repeat="pause in vm.pauses.rows">{{pause.name}}</md-option>\n    </md-select>\n  </div>\n</md-toolbar>\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.order" md-on-reorder="vm.onInit">\n      <tr md-row border="1">\n        <th class="bv text-center" colspan="5">{{ \'OPENCHANNEL.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          {{ \'OPENCHANNEL.NAME\' | translate }}</th>\n        <th class="bl custom-column" md-column md-order-by="globalStatus">\n          {{ \'OPENCHANNEL.STATUS\' | translate }}</th>\n        <th class="bl custom-column" md-column md-order-by="lastLoginAt">\n          {{ \'OPENCHANNEL.LOGIN_TIME\' | translate }}</th>\n        <th class="bl custom-column" md-column md-order-by="lastPauseAt">\n          {{ \'OPENCHANNEL.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.order.length">\n        <td md-cell colspan="19">\n          <div layout="row" layout-align="center center">\n            <span>{{ \'OPENCHANNEL.NO_AGENT_ONLINE\' | translate }}</span>\n          </div>\n        </td>\n      </tr>\n      <tr md-select="vm.agents[value]" md-select-id="id" ng-repeat="(id, value) in vm.order">\n        <td class="bt padding-5">\n          <div layout="row" layout-align="start center">\n            <img class="avatar" ng-src="{{vm.agents[value].userpic && \'api/users/\'+vm.agents[value].id+\'/avatar\' || \'assets/images/avatars/profile.png\'}}">\n            <div layout="column">\n              <span>{{vm.agents[value].fullname}}</span>\n              <span>{{vm.agents[value].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 && (vm.agents[value].phoneBarEnableScreenRecordingByAgent || vm.agents[value].phoneBarEnableAutomaticScreenRecording)">\n            <div class="column" ng-if="vm.agents[value].screenrecording">\n              <span>\n                <md-icon md-font-icon="icon-camcorder-box" style="color: green; font-size: 36px;" aria-label="icon-camcorder-box26">\n                  <md-tooltip>\n                    {{ \'OPENCHANNEL.TOOLTIP_SCREENRECORDING_ON\' | translate }}\n                  </md-tooltip>\n                </md-icon>\n              </span>\n            </div>\n            <div class="column" ng-if="!vm.agents[value].screenrecording">\n              <span>\n                <md-icon md-font-icon="icon-camcorder-box" style="color: gray" aria-label="icon-camcorder-box26">\n                  <md-tooltip>\n                    {{ \'OPENCHANNEL.TOOLTIP_SCREENRECORDING_OFF\' | translate }}\n                  </md-tooltip>\n                </md-icon>\n              </span>\n            </div>\n          </div>\n        </td>\n        <td class="bt">\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'}[vm.agents[value].globalStatus]\">{{\n            vm.isPause(vm.agents[value].globalStatus) ? '' : vm.agents[value].globalStatus | uppercase }}\n            {{ vm.isPause(vm.agents[value].globalStatus) ? (vm.isPartialPause(vm.agents[value].globalStatus) ?\n            '*'+vm.agents[value].pauseType || 'DEFAULT PAUSE' : vm.agents[value].pauseType || 'DEFAULT PAUSE') :\n            ''}}</span>\n        </td>\n        <td class=\"bt custom-column\">\n          <timer start-time=\"vm.agents[value].lastLoginAt\"></timer>\n        </td>\n        <td class=\"bt custom-column\">\n          <timer ng-if=\"vm.isPause(vm.agents[value].globalStatus) || vm.isPartialPause(vm.agents[value].globalStatus)\" start-time=\"vm.agents[value].lastPauseAt\"></timer>\n        </td>\n        <td class=\"bt bl\">\n          <div layout=\"row\">\n            <span ng-if=\"!vm.agents[value].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'}[vm.agents[value].voiceStatus]\">{{\n              vm.agents[value].voiceStatus | uppercase }}</span>\n            <span ng-if=\"vm.agents[value].onhold\" class=\"text-boxed md-background-bg bl bt padding-5 orange-400-bg\">ONHOLD</span>\n          </div>\n        </td>\n        <td class=\"bt bl\">\n          <div layout=\"column\">\n            <span ng-if=\"vm.agents[value].queue\" class=\"padding-5\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].voiceStatus]\">{{\n              vm.agents[value].queue }}</span>\n            <span ng-if=\"vm.agents[value].destconnectedlinenum\" class=\"padding-5\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].voiceStatus]\" privacy ng-cloak>{{\n              vm.agents[value].destconnectedlinenum }}</span>\n            <span ng-if=\"vm.agents[value].routealias\" class=\"padding-5\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].voiceStatus]\">{{\n              vm.agents[value].routealias }}</span>\n            <span class=\"padding-5\" ng-if=\"vm.agents[value].queue || vm.agents[value].destconnectedlinenum\">\n              <timer start-time=\"vm.agents[value].voiceStatusTime\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].voiceStatus]\">\n              </timer>\n            </span>\n          </div>\n        </td>\n        <td class=\"bt bl\" ng-if=\"vm.license.chat\">\n          <div layout=\"row\">\n            <div layout=\"column\" layout-align=\"center center\">\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'}[vm.agents[value].chatStatus]\">{{\n                vm.agents[value].chatStatus | uppercase }}</span>\n            </div>\n          </div>\n        </td>\n        <td md-number class=\"bt text-center font-size-20\" ng-if=\"vm.license.chat\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].chatStatus]\">\n          {{ vm.agents[value].chatCurrentCapacity }}</td>\n        <td class=\"bl bt\" ng-if=\"vm.license.mail\">\n          <div layout=\"row\">\n            <div layout=\"column\" layout-align=\"center center\">\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'}[vm.agents[value].mailStatus]\">{{\n                vm.agents[value].mailStatus | uppercase }}</span>\n            </div>\n          </div>\n        </td>\n        <td class=\"bt padding-5 text-center font-size-20\" ng-if=\"vm.license.mail\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].mailStatus]\">\n          {{ vm.agents[value].mailCurrentCapacity }}</td>\n        <td class=\"bl bt\" ng-if=\"vm.license.messaging\">\n          <div layout=\"row\">\n            <div layout=\"column\" layout-align=\"center center\">\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'}[vm.agents[value].smsStatus]\">{{\n                vm.agents[value].smsStatus | uppercase }}</span>\n            </div>\n          </div>\n        </td>\n        <td class=\"bt padding-5 text-center font-size-20\" ng-if=\"vm.license.messaging\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].smsStatus]\">\n          {{ vm.agents[value].smsCurrentCapacity }}</td>\n        <td class=\"bt bl\" ng-if=\"vm.license.openchannel\">\n          <div layout=\"row\">\n            <div layout=\"column\" layout-align=\"center center\">\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'}[vm.agents[value].openchannelStatus]\">{{\n                vm.agents[value].openchannelStatus | uppercase }}</span>\n            </div>\n          </div>\n        </td>\n        <td class=\"bt padding-5 text-center font-size-20\" ng-if=\"vm.license.openchannel\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].openchannelStatus]\">\n          {{ vm.agents[value].openchannelCurrentCapacity }}</td>\n        <td class=\"bt bl\" ng-if=\"vm.license.fax\">\n          <div layout=\"row\">\n            <div layout=\"column\" layout-align=\"center center\">\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'}[vm.agents[value].faxStatus]\">{{\n                vm.agents[value].faxStatus | uppercase }}</span>\n            </div>\n          </div>\n        </td>\n        <td class=\"bt padding-5 text-center font-size-20\" ng-if=\"vm.license.fax\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].faxStatus]\">\n          {{ vm.agents[value].faxCurrentCapacity }}</td>\n        <td class=\"bl bt\" ng-if=\"vm.license.whatsapp\">\n          <div layout=\"row\">\n            <div layout=\"column\" layout-align=\"center center\">\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'}[vm.agents[value].whatsappStatus]\">{{\n                vm.agents[value].whatsappStatus | uppercase }}</span>\n            </div>\n          </div>\n        </td>\n        <td class=\"bt padding-5 text-center font-size-20\" ng-if=\"vm.license.whatsapp\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].whatsappStatus]\">\n          {{ vm.agents[value].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(vm.agents[value], $event)\" translate=\"OPENCHANNEL.LOGOUT\">\n                  Logout\n                </md-button>\n              </md-menu-item>\n              <md-menu-item>\n                <md-button ng-click=\"vm.queueAdd(vm.agents[value], $event)\" translate=\"OPENCHANNEL.AGENTADD_QUEUE\">\n                  Add Agent In Queue\n                </md-button>\n              </md-menu-item>\n              <md-menu-item ng-if=\"vm.license.screenrecording && vm.agents[value].phoneBarEnableScreenRecordingByAgent\">\n                <md-menu>\n                  <md-button ng-click=\"$mdMenu.open()\" class=\"text-capitalize\" translate=\"OPENCHANNEL.SCREENRECORDING\">Screen Recording\n                  </md-button>\n                  <md-menu-content>\n                    <md-menu-item ng-if=\"!vm.agents[value].screenrecording\">\n                      <md-button ng-click=\"vm.screenRecording(vm.agents[value], true)\"><em translate=\"OPENCHANNEL.START_SCREENRECORDING\">Start\n                          Screen Recording</em></md-button>\n                    </md-menu-item>\n                    <md-menu-item ng-if=\"vm.agents[value].screenrecording\">\n                      <md-button ng-click=\"vm.screenRecording(vm.agents[value], false)\"><em translate=\"OPENCHANNEL.STOP_SCREENRECORDING\">Stop\n                          Screen Recording</em></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=\"OPENCHANNEL.PAUSE\">Pause</md-button>\n                  <md-menu-content>\n                    <md-menu-item>\n                      <md-button ng-disabled=\" vm.agents[value].voicePause && 'DEFAULT PAUSE' === vm.agents[value].pauseType\" ng-click=\"vm.pause(vm.agents[value])\"><em translate=\"OPENCHANNEL.DEFAULT_PAUSE\">Default\n                          Pause</em></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=\"vm.agents[value].voicePause && pause.name === vm.agents[value].pauseType\" ng-click=\"vm.pause(vm.agents[value], 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=\"vm.isPause(vm.agents[value].globalStatus)\">\n                <md-button ng-click=\"vm.unPause(vm.agents[value])\" translate=\"OPENCHANNEL.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\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.filteredAgents.length}}\" md-on-paginate=\"vm.onInit\" md-page-select></md-table-pagination>\n\x3c!-- / AGENT TABLE --\x3e\n\x3c!-- / MAIN --\x3e"),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/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.AITOOLS">AiTools</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 animate-slide-down 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" ms-scroll>\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 md-cell ng-if="cloudProvider.userpic"><img class="avatar" alt="{{cloudProvider.name}}" ng-src="api/users/{{cloudProvider.id}}/avatar" /></td>\n                <td md-cell ng-if="!cloudProvider.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{cloudProvider.name}}" ng-src="assets/images/avatars/profile.png" /></td>\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.arrayservice[cloudProvider.service].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="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(cloudProvider, $event    )" translate="SETTINGS.EDIT_CLOUDPROVIDER">\n                          Edit CloudProvider\n                        </md-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(cloudProvider, $event    )" translate="SETTINGS.DELETE_CLOUDPROVIDER">\n                          Delete CloudProvider\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.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.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon 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="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-value="\'AmazonAWS\'">AmazonAWS</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      <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 class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-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/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 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        <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" ms-scroll>\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 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 class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-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" ms-scroll>\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\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\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\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        </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        </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" ms-scroll>\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="36" 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              </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 class="text-italic text-bold">{{vm.license.uuid}}</span></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 class="text-italic text-bold">{{vm.license.machineUuid}}</span></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 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="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="36"><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 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      <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 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="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 animate-slide-down 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" ms-scroll>\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/create/dialog.html",'<md-dialog class="smtp-dialog" aria-label="New Smtp">\n  <form name="smtpForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon 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="SETTINGS.ACCOUNTNAME">AccountName</label>\n        <input type="text" name="name" ng-model="vm.smtp.name" ng-required="true" autofocus>\n\n        <div ng-messages="smtpForm[\'name\'].$error" ng-show="smtpForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SETTINGS.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="SETTINGS.EMAILADDRESS">EmailAddress</label>\n        <input type="email" name="email" ng-model="vm.smtp.email" ng-required="true">\n\n        <div class="hint"><span translate="SETTINGS.HELP.EMAILADDRESS"></span></div>\n        <div ng-messages="smtpForm[\'email\'].$error" ng-show="smtpForm[\'email\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SETTINGS.ERRORS.EMAILADDRESS_REQUIRED">EmailAddress field is required</span>\n          </div>\n          <div ng-message="email">\n            <span translate="SETTINGS.ERRORS.EMAILADDRESS_MUST_VALID">EmailAddress 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.SMTP_SERVICE">SMTP_Service</label>\n        <md-select name="Smtp.service" ng-model="vm.smtp.Smtp.service" required>\n          <md-option ng-value="null">Custom</md-option>\n          <md-option ng-value="\'gmail\'">Gmail</md-option>\n          <md-option ng-value="\'hotmail\'">Hotmail</md-option>\n          <md-option ng-value="\'yahoo\'">Yahoo</md-option>\n          <md-option ng-value="\'outlook365\'">Outlook365</md-option>\n        </md-select>\n        <div ng-messages="smtpForm[\'Smtp.service\'].$error" ng-show="smtpForm[\'Smtp.service\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SETTINGS.ERRORS.SMTP_SERVICE_REQUIRED">SMTP_Service field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.smtp.Smtp.service == null" class="md-block">\n        <label translate="SETTINGS.SMTP_HOST">SMTP_Host</label>\n        <input type="text" name="Smtp.host" ng-model="vm.smtp.Smtp.host" ng-required="true">\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="SETTINGS.ERRORS.SMTP_HOST_REQUIRED">SMTP_Host field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.smtp.Smtp.service == null" class="md-block">\n        <label translate="SETTINGS.SMTP_PORT">SMTP_Port</label>\n        <input type="number" name="Smtp.port" ng-model="vm.smtp.Smtp.port" value="465" ng-required="true">\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="SETTINGS.ERRORS.SMTP_PORT_REQUIRED">SMTP_Port field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.smtp.Smtp.service == null" class="md-block">\n        <md-switch ng-model="vm.smtp.Smtp.secure" aria-label="SMTP_Secure"><span translate="SETTINGS.SMTP_SECURE">SMTP_Secure</span></md-switch>\n        <div class="hint"><span translate="SETTINGS.HELP.SMTP_SECURE"></span></div>\n      </md-input-container>\n      <md-input-container ng-if="vm.smtp.Smtp.service == null" class="md-block">\n        <md-switch ng-model="vm.smtp.Smtp.authentication" aria-label="SMTP_Authentication"><span translate="SETTINGS.SMTP_AUTHENTICATION">SMTP_Authentication</span></md-switch>\n      </md-input-container>\n      <md-input-container ng-if="vm.smtp.Smtp.authentication == true || vm.smtp.Smtp.service != null" class="md-block">\n        <label translate="SETTINGS.SMTP_USERNAME">SMTP_Username</label>\n        <input type="text" name="Smtp.user" ng-model="vm.smtp.Smtp.user" ng-required="true">\n\n        <div class="hint"><span translate="SETTINGS.HELP.SMTP_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="SETTINGS.ERRORS.SMTP_USERNAME_REQUIRED">SMTP_Username field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block" ng-if="vm.smtp.Smtp.authentication == true || vm.smtp.Smtp.service != null">\n        <label translate="SETTINGS.SMTP_PASSWORD">SMTP_Password</label>\n        <input type="password" name="Smtp.pass" ng-model="vm.smtp.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="smtpForm[\'Smtp.pass\'].$error" role="alert">\n          <div ng-message="required">\n            <span translate="SETTINGS.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="SETTINGS.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="SETTINGS.DESCRIPTION">Description</label>\n        <input type="" name="description" ng-model="vm.smtp.description">\n\n        <div ng-messages="smtpForm[\'description\'].$error" ng-show="smtpForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SETTINGS.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.newSmtp" ng-click="vm.saveSmtp()" class="send-button md-accent md-raised" ng-disabled="smtpForm.$invalid || smtpForm.$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.newSmtp" ng-click="vm.addNewSmtp()" class="send-button md-accent md-raised" ng-disabled="smtpForm.$invalid" aria-label="ADD" translate="SETTINGS.ADD_SMTP" translate-attr-aria-label="SETTINGS.ADD_SMTP">\n          ADD SMTP\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newSmtp" ng-click="vm.deleteSmtp($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/smtps/smtps.html",'<div id="smtps" 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.SMTP">Smtp</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div>\n      <md-button type="submit" ng-click="vm.verifySmtp()" ng-disabled="!vm.smtp.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  \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" ms-scroll>\n\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          <md-input-container class="md-block">\n            <label translate="SETTINGS.ACCOUNTNAME">AccountName</label>\n            <input type="text" name="name" ng-model="vm.smtp.name" ng-required="true" autofocus>\n\n            <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.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="SETTINGS.EMAILADDRESS">EmailAddress</label>\n            <input type="email" name="email" ng-model="vm.smtp.email" ng-required="true">\n\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.EMAILADDRESS_REQUIRED">EmailAddress field is required</span>\n              </div>\n              <div ng-message="email">\n                <span translate="SETTINGS.ERRORS.EMAILADDRESS_MUST_VALID">EmailAddress 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.SMTP_SERVICE">SMTP_Service</label>\n            <md-select name="Smtp.service" ng-model="vm.smtp.Smtp.service" required>\n              <md-option ng-value="null">Custom</md-option>\n              <md-option ng-value="\'gmail\'">Gmail</md-option>\n              <md-option ng-value="\'hotmail\'">Hotmail</md-option>\n              <md-option ng-value="\'yahoo\'">Yahoo</md-option>\n              <md-option ng-value="\'outlook365\'">Outlook365</md-option>\n            </md-select>\n            <div ng-messages="generalForm[\'Smtp.service\'].$error" ng-show="generalForm[\'Smtp.service\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.SMTP_SERVICE_REQUIRED">SMTP_Service field is required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container ng-if="vm.smtp.Smtp.service == null" class="md-block">\n            <label translate="SETTINGS.SMTP_HOST">SMTP_Host</label>\n            <input type="text" name="Smtp.host" ng-model="vm.smtp.Smtp.host" ng-required="true">\n\n            <div ng-messages="generalForm[\'Smtp.host\'].$error" ng-show="generalForm[\'Smtp.host\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.SMTP_HOST_REQUIRED">SMTP_Host field is required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container ng-if="vm.smtp.Smtp.service == null" class="md-block">\n            <label translate="SETTINGS.SMTP_PORT">SMTP_Port</label>\n            <input type="number" name="Smtp.port" ng-model="vm.smtp.Smtp.port" value="465" ng-required="true">\n\n            <div ng-messages="generalForm[\'Smtp.port\'].$error" ng-show="generalForm[\'Smtp.port\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.SMTP_PORT_REQUIRED">SMTP_Port field is required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container ng-if="vm.smtp.Smtp.service == null" class="md-block">\n            <md-switch ng-model="vm.smtp.Smtp.secure" aria-label="SMTP_Secure"><span translate="SETTINGS.SMTP_SECURE">SMTP_Secure</span></md-switch>\n            <div class="hint"><span translate="SETTINGS.HELP.SMTP_SECURE"></span></div>\n          </md-input-container>\n          <md-input-container ng-if="vm.smtp.Smtp.service == null" class="md-block">\n            <md-switch ng-model="vm.smtp.Smtp.authentication" aria-label="SMTP_Authentication"><span translate="SETTINGS.SMTP_AUTHENTICATION">SMTP_Authentication</span></md-switch>\n          </md-input-container>\n          <md-input-container ng-if="vm.smtp.Smtp.authentication == true || vm.smtp.Smtp.service != null" class="md-block">\n            <label translate="SETTINGS.SMTP_USERNAME">SMTP_Username</label>\n            <input type="text" name="Smtp.user" ng-model="vm.smtp.Smtp.user" ng-required="true">\n\n            <div class="hint"><span translate="SETTINGS.HELP.SMTP_USERNAME"></span></div>\n            <div ng-messages="generalForm[\'Smtp.user\'].$error" ng-show="generalForm[\'Smtp.user\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.SMTP_USERNAME_REQUIRED">SMTP_Username field is required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container class="md-block" ng-if="vm.smtp.Smtp.authentication == true || vm.smtp.Smtp.service != null">\n            <label translate="SETTINGS.SMTP_PASSWORD">SMTP_Password</label>\n            <input type="password" name="Smtp.pass" ng-model="vm.smtp.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[\'Smtp.pass\'].$error" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n              </div>\n              <div ng-message="pattern">\n                <span translate="SETTINGS.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="SETTINGS.DESCRIPTION">Description</label>\n            <input type="" name="description" ng-model="vm.smtp.description">\n\n            <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.DESCRIPTION_REQUIRED">Description 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/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 ms-scroll>\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" ms-scroll>\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/agents/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="SMS.AGENTS">Agents</span>\n    <div flex></div>\n    <ms-search-bar on-search="vm.onInit()" query="vm.query" on-collapse="vm.query.filter = undefined; vm.onInit()" debounce="300"></ms-search-bar>\n    <md-select ng-model="vm.query.globalStatusFilter" class="md-caption" ng-change="vm.query.pauseTypeFilter = \'\'; vm.onInit()">\n      <md-option ng-value="\'\'">{{ \'SMS.ALL\' | translate }}</md-option>\n      <md-option value="pause">{{ \'SMS.PAUSE\' | translate }}</md-option>\n      <md-option value="*pause">{{ \'SMS.PARTIALPAUSE\' | translate }}</md-option>\n      <md-option value="busy">{{ \'SMS.BUSY\' | translate }}</md-option>\n      <md-option value="idle">{{ \'SMS.IDLE\' | translate }}</md-option>\n    </md-select>\n    <md-select ng-if="vm.isPause(vm.query.globalStatusFilter)" ng-model="vm.query.pauseTypeFilter" class="md-caption" ng-change="vm.onInit()">\n      <md-option ng-value="\'\'">All</md-option>\n      <md-option value="DEFAULT PAUSE">DEFAULT PAUSE</md-option>\n      <md-option value="ACW">ACW</md-option>\n      <md-option value="LOGININPAUSE">LOGININPAUSE</md-option>\n      <md-option value="Auto-Pause">AUTOPAUSE</md-option>\n      <md-option ng-value="pause.name" ng-repeat="pause in vm.pauses.rows">{{pause.name}}</md-option>\n    </md-select>\n  </div>\n</md-toolbar>\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.order" md-on-reorder="vm.onInit">\n      <tr md-row border="1">\n        <th class="bv text-center" colspan="5">{{ \'SMS.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          {{ \'SMS.NAME\' | translate }}</th>\n        <th class="bl custom-column" md-column md-order-by="globalStatus">\n          {{ \'SMS.STATUS\' | translate }}</th>\n        <th class="bl custom-column" md-column md-order-by="lastLoginAt">\n          {{ \'SMS.LOGIN_TIME\' | translate }}</th>\n        <th class="bl custom-column" md-column md-order-by="lastPauseAt">\n          {{ \'SMS.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.order.length">\n        <td md-cell colspan="19">\n          <div layout="row" layout-align="center center">\n            <span>{{ \'SMS.NO_AGENT_ONLINE\' | translate }}</span>\n          </div>\n        </td>\n      </tr>\n      <tr md-select="vm.agents[value]" md-select-id="id" ng-repeat="(id, value) in vm.order">\n        <td class="bt padding-5">\n          <div layout="row" layout-align="start center">\n            <img class="avatar" ng-src="{{vm.agents[value].userpic && \'api/users/\'+vm.agents[value].id+\'/avatar\' || \'assets/images/avatars/profile.png\'}}">\n            <div layout="column">\n              <span>{{vm.agents[value].fullname}}</span>\n              <span>{{vm.agents[value].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 && (vm.agents[value].phoneBarEnableScreenRecordingByAgent || vm.agents[value].phoneBarEnableAutomaticScreenRecording)">\n            <div class="column" ng-if="vm.agents[value].screenrecording">\n              <span>\n                <md-icon md-font-icon="icon-camcorder-box" style="color: green; font-size: 36px;" aria-label="icon-camcorder-box26">\n                  <md-tooltip>\n                    {{ \'SMS.TOOLTIP_SCREENRECORDING_ON\' | translate }}\n                  </md-tooltip>\n                </md-icon>\n              </span>\n            </div>\n            <div class="column" ng-if="!vm.agents[value].screenrecording">\n              <span>\n                <md-icon md-font-icon="icon-camcorder-box" style="color: gray" aria-label="icon-camcorder-box26">\n                  <md-tooltip>\n                    {{ \'SMS.TOOLTIP_SCREENRECORDING_OFF\' | translate }}\n                  </md-tooltip>\n                </md-icon>\n              </span>\n            </div>\n          </div>\n        </td>\n        <td class="bt">\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'}[vm.agents[value].globalStatus]\">{{\n            vm.isPause(vm.agents[value].globalStatus) ? '' : vm.agents[value].globalStatus | uppercase }}\n            {{ vm.isPause(vm.agents[value].globalStatus) ? (vm.isPartialPause(vm.agents[value].globalStatus) ?\n            '*'+vm.agents[value].pauseType || 'DEFAULT PAUSE' : vm.agents[value].pauseType || 'DEFAULT PAUSE') :\n            ''}}</span>\n        </td>\n        <td class=\"bt custom-column\">\n          <timer start-time=\"vm.agents[value].lastLoginAt\"></timer>\n        </td>\n        <td class=\"bt custom-column\">\n          <timer ng-if=\"vm.isPause(vm.agents[value].globalStatus) || vm.isPartialPause(vm.agents[value].globalStatus)\" start-time=\"vm.agents[value].lastPauseAt\"></timer>\n        </td>\n        <td class=\"bt bl\">\n          <div layout=\"row\">\n            <span ng-if=\"!vm.agents[value].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'}[vm.agents[value].voiceStatus]\">{{\n              vm.agents[value].voiceStatus | uppercase }}</span>\n            <span ng-if=\"vm.agents[value].onhold\" class=\"text-boxed md-background-bg bl bt padding-5 orange-400-bg\">ONHOLD</span>\n          </div>\n        </td>\n        <td class=\"bt bl\">\n          <div layout=\"column\">\n            <span ng-if=\"vm.agents[value].queue\" class=\"padding-5\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].voiceStatus]\">{{\n              vm.agents[value].queue }}</span>\n            <span ng-if=\"vm.agents[value].destconnectedlinenum\" class=\"padding-5\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].voiceStatus]\" privacy ng-cloak>{{\n              vm.agents[value].destconnectedlinenum }}</span>\n            <span ng-if=\"vm.agents[value].routealias\" class=\"padding-5\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].voiceStatus]\">{{\n              vm.agents[value].routealias }}</span>\n            <span class=\"padding-5\" ng-if=\"vm.agents[value].queue || vm.agents[value].destconnectedlinenum\">\n              <timer start-time=\"vm.agents[value].voiceStatusTime\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].voiceStatus]\">\n              </timer>\n            </span>\n          </div>\n        </td>\n        <td class=\"bt bl\" ng-if=\"vm.license.chat\">\n          <div layout=\"row\">\n            <div layout=\"column\" layout-align=\"center center\">\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'}[vm.agents[value].chatStatus]\">{{\n                vm.agents[value].chatStatus | uppercase }}</span>\n            </div>\n          </div>\n        </td>\n        <td md-number class=\"bt text-center font-size-20\" ng-if=\"vm.license.chat\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].chatStatus]\">\n          {{ vm.agents[value].chatCurrentCapacity }}</td>\n        <td class=\"bl bt\" ng-if=\"vm.license.mail\">\n          <div layout=\"row\">\n            <div layout=\"column\" layout-align=\"center center\">\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'}[vm.agents[value].mailStatus]\">{{\n                vm.agents[value].mailStatus | uppercase }}</span>\n            </div>\n          </div>\n        </td>\n        <td class=\"bt padding-5 text-center font-size-20\" ng-if=\"vm.license.mail\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].mailStatus]\">\n          {{ vm.agents[value].mailCurrentCapacity }}</td>\n        <td class=\"bl bt\" ng-if=\"vm.license.messaging\">\n          <div layout=\"row\">\n            <div layout=\"column\" layout-align=\"center center\">\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'}[vm.agents[value].smsStatus]\">{{\n                vm.agents[value].smsStatus | uppercase }}</span>\n            </div>\n          </div>\n        </td>\n        <td class=\"bt padding-5 text-center font-size-20\" ng-if=\"vm.license.messaging\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].smsStatus]\">\n          {{ vm.agents[value].smsCurrentCapacity }}</td>\n        <td class=\"bt bl\" ng-if=\"vm.license.openchannel\">\n          <div layout=\"row\">\n            <div layout=\"column\" layout-align=\"center center\">\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'}[vm.agents[value].openchannelStatus]\">{{\n                vm.agents[value].openchannelStatus | uppercase }}</span>\n            </div>\n          </div>\n        </td>\n        <td class=\"bt padding-5 text-center font-size-20\" ng-if=\"vm.license.openchannel\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].openchannelStatus]\">\n          {{ vm.agents[value].openchannelCurrentCapacity }}</td>\n        <td class=\"bt bl\" ng-if=\"vm.license.fax\">\n          <div layout=\"row\">\n            <div layout=\"column\" layout-align=\"center center\">\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'}[vm.agents[value].faxStatus]\">{{\n                vm.agents[value].faxStatus | uppercase }}</span>\n            </div>\n          </div>\n        </td>\n        <td class=\"bt padding-5 text-center font-size-20\" ng-if=\"vm.license.fax\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].faxStatus]\">\n          {{ vm.agents[value].faxCurrentCapacity }}</td>\n        <td class=\"bl bt\" ng-if=\"vm.license.whatsapp\">\n          <div layout=\"row\">\n            <div layout=\"column\" layout-align=\"center center\">\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'}[vm.agents[value].whatsappStatus]\">{{\n                vm.agents[value].whatsappStatus | uppercase }}</span>\n            </div>\n          </div>\n        </td>\n        <td class=\"bt padding-5 text-center font-size-20\" ng-if=\"vm.license.whatsapp\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].whatsappStatus]\">\n          {{ vm.agents[value].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(vm.agents[value], $event)\" translate=\"SMS.LOGOUT\">\n                  Logout\n                </md-button>\n              </md-menu-item>\n              <md-menu-item>\n                <md-button ng-click=\"vm.queueAdd(vm.agents[value], $event)\" translate=\"SMS.AGENTADD_QUEUE\">\n                  Add Agent In Queue\n                </md-button>\n              </md-menu-item>\n              <md-menu-item ng-if=\"vm.license.screenrecording && vm.agents[value].phoneBarEnableScreenRecordingByAgent\">\n                <md-menu>\n                  <md-button ng-click=\"$mdMenu.open()\" class=\"text-capitalize\" translate=\"SMS.SCREENRECORDING\">Screen Recording\n                  </md-button>\n                  <md-menu-content>\n                    <md-menu-item ng-if=\"!vm.agents[value].screenrecording\">\n                      <md-button ng-click=\"vm.screenRecording(vm.agents[value], true)\"><em translate=\"SMS.START_SCREENRECORDING\">Start\n                          Screen Recording</em></md-button>\n                    </md-menu-item>\n                    <md-menu-item ng-if=\"vm.agents[value].screenrecording\">\n                      <md-button ng-click=\"vm.screenRecording(vm.agents[value], false)\"><em translate=\"SMS.STOP_SCREENRECORDING\">Stop\n                          Screen Recording</em></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=\"SMS.PAUSE\">Pause</md-button>\n                  <md-menu-content>\n                    <md-menu-item>\n                      <md-button ng-disabled=\" vm.agents[value].voicePause && 'DEFAULT PAUSE' === vm.agents[value].pauseType\" ng-click=\"vm.pause(vm.agents[value])\"><em translate=\"SMS.DEFAULT_PAUSE\">Default\n                          Pause</em></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=\"vm.agents[value].voicePause && pause.name === vm.agents[value].pauseType\" ng-click=\"vm.pause(vm.agents[value], 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=\"vm.isPause(vm.agents[value].globalStatus)\">\n                <md-button ng-click=\"vm.unPause(vm.agents[value])\" translate=\"SMS.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\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.filteredAgents.length}}\" md-on-paginate=\"vm.onInit\" md-page-select></md-table-pagination>\n\x3c!-- / AGENT TABLE --\x3e\n\x3c!-- / MAIN --\x3e"),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 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="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 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="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 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="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 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="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 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="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 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="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 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="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 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="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 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="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 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\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 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="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 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="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 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="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 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="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 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="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" ms-scroll 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" ms-scroll 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 animate-slide-down 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" ms-scroll>\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 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="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 animate-slide-down 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" ms-scroll>\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\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.AGENTS">Agents</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.selectedAgents.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.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\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-agents-count">\n          <span>{{vm.selectedAgents.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.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\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\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\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 ng-if="vm.table == \'users\' || vm.table == \'agents\'" 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 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 && (vm.table == \'users\' || vm.table == \'agents\')"><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 ">{{ vm.arrayshowWebBar[agent.showWebBar].option }}</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\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(agent, $event    )" translate="STAFF.EDIT_AGENT">\n                          Edit Agent\n                        </md-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(agent, $event    )" translate="STAFF.TEAMADD_AGENT">\n                          teamadd Agent\n                        </md-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(agent, $event    )" translate="STAFF.DELETE_AGENT">\n                          Delete Agent\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.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\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\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 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="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\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\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 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 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" 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\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\n      <div layout="row" layout-align="start center">\n\n        <div class="agent-image" hide-xs>\n          <img ng-src="assets/images/business/agents.jpg">\n        </div>\n\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\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\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)" 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="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\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\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\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\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\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\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\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\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\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\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\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\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\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="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\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\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\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\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\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\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\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\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\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\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\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\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\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\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\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\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\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\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\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\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\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\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\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\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\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\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\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\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\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\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\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\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\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\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\n      <md-divider></md-divider>\n\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\n              <span ng-if="vm_pc.agent.role === \'admin\'" class="md-headline" translate="STAFF.ALL_MODULES_AVAILABLE">All modules are already available.</span>\n\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/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 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="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 animate-slide-down 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" ms-scroll>\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 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="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 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" 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 animate-slide-down 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" ms-scroll>\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 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="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 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="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 animate-slide-down 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" ms-scroll>\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 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="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\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\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\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-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 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" 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\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\n      <div layout="row" layout-align="start center">\n\n        <div class="user-image" hide-xs>\n          <img ng-src="assets/images/business/users.jpg">\n        </div>\n\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\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\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\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="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\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\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\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\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\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\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\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\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\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\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\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\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="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\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\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\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\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\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.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 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\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/users/users.html",'<div id="users" 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.USERS">Users</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.selectedUsers.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.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\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-users-count">\n          <span>{{vm.selectedUsers.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.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\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\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\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 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 && (vm.table == \'users\' || vm.table == \'agents\')"><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\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(user, $event    )" translate="STAFF.EDIT_USER">\n                          Edit User\n                        </md-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(user, $event    )" translate="STAFF.DELETE_USER">\n                          Delete User\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.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\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\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 animate-slide-down 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" ms-scroll>\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 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.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/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 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.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 animate-slide-down 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" ms-scroll>\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 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.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 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.TYPE">Type</label>\n        <md-select name="type" ng-model="vm.dashboarditem.type" 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 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\'"> {{ \'TOOLS.ABANDONED\' | translate }} </md-option>\n\n          <md-option ng-value="\'waiting\'"> {{ \'TOOLS.WAITING\' | translate }} </md-option>\n\n          <md-option ng-value="\'talking\'"> {{ \'TOOLS.TALKING\' | translate }} </md-option>\n\n          <md-option ng-value="\'answered\'"> {{ \'TOOLS.ANSWERED\' | translate }} </md-option>\n\n          <md-option ng-value="\'unmanaged\'"> {{ \'TOOLS.UNMANAGED\' | 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\'"> {{ \'TOOLS.ABANDONED\' | translate }} </md-option>\n\n          <md-option ng-value="\'waiting\'"> {{ \'TOOLS.WAITING\' | translate }} </md-option>\n\n          <md-option ng-value="\'talking\'"> {{ \'TOOLS.TALKING\' | translate }} </md-option>\n\n          <md-option ng-value="\'answered\'"> {{ \'TOOLS.ANSWERED\' | 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\'"> {{ \'TOOLS.ABANDONED\' | translate }} </md-option>\n\n          <md-option ng-value="\'waiting\'"> {{ \'TOOLS.WAITING\' | translate }} </md-option>\n\n          <md-option ng-value="\'talking\'"> {{ \'TOOLS.TALKING\' | translate }} </md-option>\n\n          <md-option ng-value="\'answered\'"> {{ \'TOOLS.ANSWERED\' | 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\'"> {{ \'TOOLS.ABANDONED\' | translate }} </md-option>\n\n          <md-option ng-value="\'waiting\'"> {{ \'TOOLS.WAITING\' | translate }} </md-option>\n\n          <md-option ng-value="\'talking\'"> {{ \'TOOLS.TALKING\' | translate }} </md-option>\n\n          <md-option ng-value="\'answered\'"> {{ \'TOOLS.ANSWERED\' | 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="[\'multibar-chart\', \'pie-chart\', \'counter\'].includes(vm.dashboarditem.type)" 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 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" ms-scroll>\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" ms-scroll>\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 ms-scroll>\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 animate-slide-down 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" ms-scroll>\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 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.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 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      <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 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="" 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 animate-slide-down 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" ms-scroll>\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 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.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 animate-slide-down 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" ms-scroll>\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 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.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" ms-scroll>\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" ms-scroll>\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 animate-slide-down 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" ms-scroll>\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 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.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 animate-slide-down 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" ms-scroll>\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 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 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 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.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 animate-slide-down 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" ms-scroll>\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 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.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 animate-slide-down 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" ms-scroll>\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 ms-scroll>\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 ms-scroll>\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 == \'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)" 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  <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 ms-scroll>\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-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\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      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-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.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 ms-scroll>\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-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 == \'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      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-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 animate-slide-down 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" ms-scroll>\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 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.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 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.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 animate-slide-down 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" ms-scroll>\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 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.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 animate-slide-down 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" ms-scroll>\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 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="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 animate-slide-down 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" ms-scroll>\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" 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>({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <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 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>({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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 animate-slide-down 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" ms-scroll>\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 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="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 animate-slide-down 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" ms-scroll>\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 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="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 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>({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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" ms-scroll 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" ms-scroll 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 animate-slide-down 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" ms-scroll>\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 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>({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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" ms-scroll 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" ms-scroll 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 animate-slide-down 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" ms-scroll>\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 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="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 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="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 animate-slide-down 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" ms-scroll>\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 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>({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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" 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" 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" ms-scroll 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" ms-scroll 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 animate-slide-down 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" ms-scroll>\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/agents/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.AGENTS">Agents</span>\n    <div flex></div>\n    <ms-search-bar on-search="vm.onInit()" query="vm.query" on-collapse="vm.query.filter = undefined; vm.onInit()" debounce="300"></ms-search-bar>\n    <md-select ng-model="vm.query.globalStatusFilter" class="md-caption" ng-change="vm.query.pauseTypeFilter = \'\'; vm.onInit()">\n      <md-option ng-value="\'\'">{{ \'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.isPause(vm.query.globalStatusFilter)" ng-model="vm.query.pauseTypeFilter" class="md-caption" ng-change="vm.onInit()">\n      <md-option ng-value="\'\'">All</md-option>\n      <md-option value="DEFAULT PAUSE">DEFAULT PAUSE</md-option>\n      <md-option value="ACW">ACW</md-option>\n      <md-option value="LOGININPAUSE">LOGININPAUSE</md-option>\n      <md-option value="Auto-Pause">AUTOPAUSE</md-option>\n      <md-option ng-value="pause.name" ng-repeat="pause in vm.pauses.rows">{{pause.name}}</md-option>\n    </md-select>\n  </div>\n</md-toolbar>\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.order" md-on-reorder="vm.onInit">\n      <tr md-row border="1">\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.order.length">\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="vm.agents[value]" md-select-id="id" ng-repeat="(id, value) in vm.order">\n        <td class="bt padding-5">\n          <div layout="row" layout-align="start center">\n            <img class="avatar" ng-src="{{vm.agents[value].userpic && \'api/users/\'+vm.agents[value].id+\'/avatar\' || \'assets/images/avatars/profile.png\'}}">\n            <div layout="column">\n              <span>{{vm.agents[value].fullname}}</span>\n              <span>{{vm.agents[value].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 && (vm.agents[value].phoneBarEnableScreenRecordingByAgent || vm.agents[value].phoneBarEnableAutomaticScreenRecording)">\n            <div class="column" ng-if="vm.agents[value].screenrecording">\n              <span>\n                <md-icon md-font-icon="icon-camcorder-box" style="color: green; font-size: 36px;" aria-label="icon-camcorder-box26">\n                  <md-tooltip>\n                    {{ \'VOICE.TOOLTIP_SCREENRECORDING_ON\' | translate }}\n                  </md-tooltip>\n                </md-icon>\n              </span>\n            </div>\n            <div class="column" ng-if="!vm.agents[value].screenrecording">\n              <span>\n                <md-icon md-font-icon="icon-camcorder-box" style="color: gray" aria-label="icon-camcorder-box26">\n                  <md-tooltip>\n                    {{ \'VOICE.TOOLTIP_SCREENRECORDING_OFF\' | translate }}\n                  </md-tooltip>\n                </md-icon>\n              </span>\n            </div>\n          </div>\n        </td>\n        <td class="bt">\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'}[vm.agents[value].globalStatus]\">{{\n            vm.isPause(vm.agents[value].globalStatus) ? '' : vm.agents[value].globalStatus | uppercase }}\n            {{ vm.isPause(vm.agents[value].globalStatus) ? (vm.isPartialPause(vm.agents[value].globalStatus) ?\n            '*'+vm.agents[value].pauseType || 'DEFAULT PAUSE' : vm.agents[value].pauseType || 'DEFAULT PAUSE') :\n            ''}}</span>\n        </td>\n        <td class=\"bt custom-column\">\n          <timer start-time=\"vm.agents[value].lastLoginAt\"></timer>\n        </td>\n        <td class=\"bt custom-column\">\n          <timer ng-if=\"vm.isPause(vm.agents[value].globalStatus) || vm.isPartialPause(vm.agents[value].globalStatus)\" start-time=\"vm.agents[value].lastPauseAt\"></timer>\n        </td>\n        <td class=\"bt bl\">\n          <div layout=\"row\">\n            <span ng-if=\"!vm.agents[value].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'}[vm.agents[value].voiceStatus]\">{{\n              vm.agents[value].voiceStatus | uppercase }}</span>\n            <span ng-if=\"vm.agents[value].onhold\" class=\"text-boxed md-background-bg bl bt padding-5 orange-400-bg\">ONHOLD</span>\n          </div>\n        </td>\n        <td class=\"bt bl\">\n          <div layout=\"column\">\n            <span ng-if=\"vm.agents[value].queue\" class=\"padding-5\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].voiceStatus]\">{{\n              vm.agents[value].queue }}</span>\n            <span ng-if=\"vm.agents[value].destconnectedlinenum\" class=\"padding-5\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].voiceStatus]\" privacy ng-cloak>{{\n              vm.agents[value].destconnectedlinenum }}</span>\n            <span ng-if=\"vm.agents[value].routealias\" class=\"padding-5\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].voiceStatus]\">{{\n              vm.agents[value].routealias }}</span>\n            <span class=\"padding-5\" ng-if=\"vm.agents[value].queue || vm.agents[value].destconnectedlinenum\">\n              <timer start-time=\"vm.agents[value].voiceStatusTime\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].voiceStatus]\">\n              </timer>\n            </span>\n          </div>\n        </td>\n        <td class=\"bt bl\" ng-if=\"vm.license.chat\">\n          <div layout=\"row\">\n            <div layout=\"column\" layout-align=\"center center\">\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'}[vm.agents[value].chatStatus]\">{{\n                vm.agents[value].chatStatus | uppercase }}</span>\n            </div>\n          </div>\n        </td>\n        <td md-number class=\"bt text-center font-size-20\" ng-if=\"vm.license.chat\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].chatStatus]\">\n          {{ vm.agents[value].chatCurrentCapacity }}</td>\n        <td class=\"bl bt\" ng-if=\"vm.license.mail\">\n          <div layout=\"row\">\n            <div layout=\"column\" layout-align=\"center center\">\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'}[vm.agents[value].mailStatus]\">{{\n                vm.agents[value].mailStatus | uppercase }}</span>\n            </div>\n          </div>\n        </td>\n        <td class=\"bt padding-5 text-center font-size-20\" ng-if=\"vm.license.mail\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].mailStatus]\">\n          {{ vm.agents[value].mailCurrentCapacity }}</td>\n        <td class=\"bl bt\" ng-if=\"vm.license.messaging\">\n          <div layout=\"row\">\n            <div layout=\"column\" layout-align=\"center center\">\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'}[vm.agents[value].smsStatus]\">{{\n                vm.agents[value].smsStatus | uppercase }}</span>\n            </div>\n          </div>\n        </td>\n        <td class=\"bt padding-5 text-center font-size-20\" ng-if=\"vm.license.messaging\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].smsStatus]\">\n          {{ vm.agents[value].smsCurrentCapacity }}</td>\n        <td class=\"bt bl\" ng-if=\"vm.license.openchannel\">\n          <div layout=\"row\">\n            <div layout=\"column\" layout-align=\"center center\">\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'}[vm.agents[value].openchannelStatus]\">{{\n                vm.agents[value].openchannelStatus | uppercase }}</span>\n            </div>\n          </div>\n        </td>\n        <td class=\"bt padding-5 text-center font-size-20\" ng-if=\"vm.license.openchannel\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].openchannelStatus]\">\n          {{ vm.agents[value].openchannelCurrentCapacity }}</td>\n        <td class=\"bt bl\" ng-if=\"vm.license.fax\">\n          <div layout=\"row\">\n            <div layout=\"column\" layout-align=\"center center\">\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'}[vm.agents[value].faxStatus]\">{{\n                vm.agents[value].faxStatus | uppercase }}</span>\n            </div>\n          </div>\n        </td>\n        <td class=\"bt padding-5 text-center font-size-20\" ng-if=\"vm.license.fax\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].faxStatus]\">\n          {{ vm.agents[value].faxCurrentCapacity }}</td>\n        <td class=\"bl bt\" ng-if=\"vm.license.whatsapp\">\n          <div layout=\"row\">\n            <div layout=\"column\" layout-align=\"center center\">\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'}[vm.agents[value].whatsappStatus]\">{{\n                vm.agents[value].whatsappStatus | uppercase }}</span>\n            </div>\n          </div>\n        </td>\n        <td class=\"bt padding-5 text-center font-size-20\" ng-if=\"vm.license.whatsapp\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].whatsappStatus]\">\n          {{ vm.agents[value].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(vm.agents[value], $event)\" translate=\"VOICE.LOGOUT\">\n                  Logout\n                </md-button>\n              </md-menu-item>\n              <md-menu-item>\n                <md-button ng-click=\"vm.queueAdd(vm.agents[value], $event)\" translate=\"VOICE.AGENTADD_QUEUE\">\n                  Add Agent In Queue\n                </md-button>\n              </md-menu-item>\n              <md-menu-item ng-if=\"vm.license.screenrecording && vm.agents[value].phoneBarEnableScreenRecordingByAgent\">\n                <md-menu>\n                  <md-button ng-click=\"$mdMenu.open()\" class=\"text-capitalize\" translate=\"VOICE.SCREENRECORDING\">Screen Recording\n                  </md-button>\n                  <md-menu-content>\n                    <md-menu-item ng-if=\"!vm.agents[value].screenrecording\">\n                      <md-button ng-click=\"vm.screenRecording(vm.agents[value], true)\"><em translate=\"VOICE.START_SCREENRECORDING\">Start\n                          Screen Recording</em></md-button>\n                    </md-menu-item>\n                    <md-menu-item ng-if=\"vm.agents[value].screenrecording\">\n                      <md-button ng-click=\"vm.screenRecording(vm.agents[value], false)\"><em translate=\"VOICE.STOP_SCREENRECORDING\">Stop\n                          Screen Recording</em></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=\" vm.agents[value].voicePause && 'DEFAULT PAUSE' === vm.agents[value].pauseType\" ng-click=\"vm.pause(vm.agents[value])\"><em translate=\"VOICE.DEFAULT_PAUSE\">Default\n                          Pause</em></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=\"vm.agents[value].voicePause && pause.name === vm.agents[value].pauseType\" ng-click=\"vm.pause(vm.agents[value], 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=\"vm.isPause(vm.agents[value].globalStatus)\">\n                <md-button ng-click=\"vm.unPause(vm.agents[value])\" 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\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.filteredAgents.length}}\" md-on-paginate=\"vm.onInit\" md-page-select></md-table-pagination>\n\x3c!-- / AGENT TABLE --\x3e\n\x3c!-- / MAIN --\x3e"),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="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 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>{{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            {{ \'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.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 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 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="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 animate-slide-down 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" ms-scroll>\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 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="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 animate-slide-down 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" ms-scroll>\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 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="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 animate-slide-down 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" ms-scroll>\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 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="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" 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" 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" 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" 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 animate-slide-down 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" ms-scroll>\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 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 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 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 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/agents/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="WHATSAPP.AGENTS">Agents</span>\n    <div flex></div>\n    <ms-search-bar on-search="vm.onInit()" query="vm.query" on-collapse="vm.query.filter = undefined; vm.onInit()" debounce="300"></ms-search-bar>\n    <md-select ng-model="vm.query.globalStatusFilter" class="md-caption" ng-change="vm.query.pauseTypeFilter = \'\'; vm.onInit()">\n      <md-option ng-value="\'\'">{{ \'WHATSAPP.ALL\' | translate }}</md-option>\n      <md-option value="pause">{{ \'WHATSAPP.PAUSE\' | translate }}</md-option>\n      <md-option value="*pause">{{ \'WHATSAPP.PARTIALPAUSE\' | translate }}</md-option>\n      <md-option value="busy">{{ \'WHATSAPP.BUSY\' | translate }}</md-option>\n      <md-option value="idle">{{ \'WHATSAPP.IDLE\' | translate }}</md-option>\n    </md-select>\n    <md-select ng-if="vm.isPause(vm.query.globalStatusFilter)" ng-model="vm.query.pauseTypeFilter" class="md-caption" ng-change="vm.onInit()">\n      <md-option ng-value="\'\'">All</md-option>\n      <md-option value="DEFAULT PAUSE">DEFAULT PAUSE</md-option>\n      <md-option value="ACW">ACW</md-option>\n      <md-option value="LOGININPAUSE">LOGININPAUSE</md-option>\n      <md-option value="Auto-Pause">AUTOPAUSE</md-option>\n      <md-option ng-value="pause.name" ng-repeat="pause in vm.pauses.rows">{{pause.name}}</md-option>\n    </md-select>\n  </div>\n</md-toolbar>\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.order" md-on-reorder="vm.onInit">\n      <tr md-row border="1">\n        <th class="bv text-center" colspan="5">{{ \'WHATSAPP.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          {{ \'WHATSAPP.NAME\' | translate }}</th>\n        <th class="bl custom-column" md-column md-order-by="globalStatus">\n          {{ \'WHATSAPP.STATUS\' | translate }}</th>\n        <th class="bl custom-column" md-column md-order-by="lastLoginAt">\n          {{ \'WHATSAPP.LOGIN_TIME\' | translate }}</th>\n        <th class="bl custom-column" md-column md-order-by="lastPauseAt">\n          {{ \'WHATSAPP.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.order.length">\n        <td md-cell colspan="19">\n          <div layout="row" layout-align="center center">\n            <span>{{ \'WHATSAPP.NO_AGENT_ONLINE\' | translate }}</span>\n          </div>\n        </td>\n      </tr>\n      <tr md-select="vm.agents[value]" md-select-id="id" ng-repeat="(id, value) in vm.order">\n        <td class="bt padding-5">\n          <div layout="row" layout-align="start center">\n            <img class="avatar" ng-src="{{vm.agents[value].userpic && \'api/users/\'+vm.agents[value].id+\'/avatar\' || \'assets/images/avatars/profile.png\'}}">\n            <div layout="column">\n              <span>{{vm.agents[value].fullname}}</span>\n              <span>{{vm.agents[value].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 && (vm.agents[value].phoneBarEnableScreenRecordingByAgent || vm.agents[value].phoneBarEnableAutomaticScreenRecording)">\n            <div class="column" ng-if="vm.agents[value].screenrecording">\n              <span>\n                <md-icon md-font-icon="icon-camcorder-box" style="color: green; font-size: 36px;" aria-label="icon-camcorder-box26">\n                  <md-tooltip>\n                    {{ \'WHATSAPP.TOOLTIP_SCREENRECORDING_ON\' | translate }}\n                  </md-tooltip>\n                </md-icon>\n              </span>\n            </div>\n            <div class="column" ng-if="!vm.agents[value].screenrecording">\n              <span>\n                <md-icon md-font-icon="icon-camcorder-box" style="color: gray" aria-label="icon-camcorder-box26">\n                  <md-tooltip>\n                    {{ \'WHATSAPP.TOOLTIP_SCREENRECORDING_OFF\' | translate }}\n                  </md-tooltip>\n                </md-icon>\n              </span>\n            </div>\n          </div>\n        </td>\n        <td class="bt">\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'}[vm.agents[value].globalStatus]\">{{\n            vm.isPause(vm.agents[value].globalStatus) ? '' : vm.agents[value].globalStatus | uppercase }}\n            {{ vm.isPause(vm.agents[value].globalStatus) ? (vm.isPartialPause(vm.agents[value].globalStatus) ?\n            '*'+vm.agents[value].pauseType || 'DEFAULT PAUSE' : vm.agents[value].pauseType || 'DEFAULT PAUSE') :\n            ''}}</span>\n        </td>\n        <td class=\"bt custom-column\">\n          <timer start-time=\"vm.agents[value].lastLoginAt\"></timer>\n        </td>\n        <td class=\"bt custom-column\">\n          <timer ng-if=\"vm.isPause(vm.agents[value].globalStatus) || vm.isPartialPause(vm.agents[value].globalStatus)\" start-time=\"vm.agents[value].lastPauseAt\"></timer>\n        </td>\n        <td class=\"bt bl\">\n          <div layout=\"row\">\n            <span ng-if=\"!vm.agents[value].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'}[vm.agents[value].voiceStatus]\">{{\n              vm.agents[value].voiceStatus | uppercase }}</span>\n            <span ng-if=\"vm.agents[value].onhold\" class=\"text-boxed md-background-bg bl bt padding-5 orange-400-bg\">ONHOLD</span>\n          </div>\n        </td>\n        <td class=\"bt bl\">\n          <div layout=\"column\">\n            <span ng-if=\"vm.agents[value].queue\" class=\"padding-5\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].voiceStatus]\">{{\n              vm.agents[value].queue }}</span>\n            <span ng-if=\"vm.agents[value].destconnectedlinenum\" class=\"padding-5\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].voiceStatus]\" privacy ng-cloak>{{\n              vm.agents[value].destconnectedlinenum }}</span>\n            <span ng-if=\"vm.agents[value].routealias\" class=\"padding-5\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].voiceStatus]\">{{\n              vm.agents[value].routealias }}</span>\n            <span class=\"padding-5\" ng-if=\"vm.agents[value].queue || vm.agents[value].destconnectedlinenum\">\n              <timer start-time=\"vm.agents[value].voiceStatusTime\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].voiceStatus]\">\n              </timer>\n            </span>\n          </div>\n        </td>\n        <td class=\"bt bl\" ng-if=\"vm.license.chat\">\n          <div layout=\"row\">\n            <div layout=\"column\" layout-align=\"center center\">\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'}[vm.agents[value].chatStatus]\">{{\n                vm.agents[value].chatStatus | uppercase }}</span>\n            </div>\n          </div>\n        </td>\n        <td md-number class=\"bt text-center font-size-20\" ng-if=\"vm.license.chat\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].chatStatus]\">\n          {{ vm.agents[value].chatCurrentCapacity }}</td>\n        <td class=\"bl bt\" ng-if=\"vm.license.mail\">\n          <div layout=\"row\">\n            <div layout=\"column\" layout-align=\"center center\">\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'}[vm.agents[value].mailStatus]\">{{\n                vm.agents[value].mailStatus | uppercase }}</span>\n            </div>\n          </div>\n        </td>\n        <td class=\"bt padding-5 text-center font-size-20\" ng-if=\"vm.license.mail\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].mailStatus]\">\n          {{ vm.agents[value].mailCurrentCapacity }}</td>\n        <td class=\"bl bt\" ng-if=\"vm.license.messaging\">\n          <div layout=\"row\">\n            <div layout=\"column\" layout-align=\"center center\">\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'}[vm.agents[value].smsStatus]\">{{\n                vm.agents[value].smsStatus | uppercase }}</span>\n            </div>\n          </div>\n        </td>\n        <td class=\"bt padding-5 text-center font-size-20\" ng-if=\"vm.license.messaging\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].smsStatus]\">\n          {{ vm.agents[value].smsCurrentCapacity }}</td>\n        <td class=\"bt bl\" ng-if=\"vm.license.openchannel\">\n          <div layout=\"row\">\n            <div layout=\"column\" layout-align=\"center center\">\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'}[vm.agents[value].openchannelStatus]\">{{\n                vm.agents[value].openchannelStatus | uppercase }}</span>\n            </div>\n          </div>\n        </td>\n        <td class=\"bt padding-5 text-center font-size-20\" ng-if=\"vm.license.openchannel\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].openchannelStatus]\">\n          {{ vm.agents[value].openchannelCurrentCapacity }}</td>\n        <td class=\"bt bl\" ng-if=\"vm.license.fax\">\n          <div layout=\"row\">\n            <div layout=\"column\" layout-align=\"center center\">\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'}[vm.agents[value].faxStatus]\">{{\n                vm.agents[value].faxStatus | uppercase }}</span>\n            </div>\n          </div>\n        </td>\n        <td class=\"bt padding-5 text-center font-size-20\" ng-if=\"vm.license.fax\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].faxStatus]\">\n          {{ vm.agents[value].faxCurrentCapacity }}</td>\n        <td class=\"bl bt\" ng-if=\"vm.license.whatsapp\">\n          <div layout=\"row\">\n            <div layout=\"column\" layout-align=\"center center\">\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'}[vm.agents[value].whatsappStatus]\">{{\n                vm.agents[value].whatsappStatus | uppercase }}</span>\n            </div>\n          </div>\n        </td>\n        <td class=\"bt padding-5 text-center font-size-20\" ng-if=\"vm.license.whatsapp\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].whatsappStatus]\">\n          {{ vm.agents[value].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(vm.agents[value], $event)\" translate=\"WHATSAPP.LOGOUT\">\n                  Logout\n                </md-button>\n              </md-menu-item>\n              <md-menu-item>\n                <md-button ng-click=\"vm.queueAdd(vm.agents[value], $event)\" translate=\"WHATSAPP.AGENTADD_QUEUE\">\n                  Add Agent In Queue\n                </md-button>\n              </md-menu-item>\n              <md-menu-item ng-if=\"vm.license.screenrecording && vm.agents[value].phoneBarEnableScreenRecordingByAgent\">\n                <md-menu>\n                  <md-button ng-click=\"$mdMenu.open()\" class=\"text-capitalize\" translate=\"WHATSAPP.SCREENRECORDING\">Screen Recording\n                  </md-button>\n                  <md-menu-content>\n                    <md-menu-item ng-if=\"!vm.agents[value].screenrecording\">\n                      <md-button ng-click=\"vm.screenRecording(vm.agents[value], true)\"><em translate=\"WHATSAPP.START_SCREENRECORDING\">Start\n                          Screen Recording</em></md-button>\n                    </md-menu-item>\n                    <md-menu-item ng-if=\"vm.agents[value].screenrecording\">\n                      <md-button ng-click=\"vm.screenRecording(vm.agents[value], false)\"><em translate=\"WHATSAPP.STOP_SCREENRECORDING\">Stop\n                          Screen Recording</em></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=\"WHATSAPP.PAUSE\">Pause</md-button>\n                  <md-menu-content>\n                    <md-menu-item>\n                      <md-button ng-disabled=\" vm.agents[value].voicePause && 'DEFAULT PAUSE' === vm.agents[value].pauseType\" ng-click=\"vm.pause(vm.agents[value])\"><em translate=\"WHATSAPP.DEFAULT_PAUSE\">Default\n                          Pause</em></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=\"vm.agents[value].voicePause && pause.name === vm.agents[value].pauseType\" ng-click=\"vm.pause(vm.agents[value], 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=\"vm.isPause(vm.agents[value].globalStatus)\">\n                <md-button ng-click=\"vm.unPause(vm.agents[value])\" translate=\"WHATSAPP.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\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.filteredAgents.length}}\" md-on-paginate=\"vm.onInit\" md-page-select></md-table-pagination>\n\x3c!-- / AGENT TABLE --\x3e\n\x3c!-- / MAIN --\x3e"),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 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="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-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\'" 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\'" 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      <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\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 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="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 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="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 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="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 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="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 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="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 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="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 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="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 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="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 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\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 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="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 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="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 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="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 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="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\'" 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\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              <md-input-container ng-if="vm.whatsappAccount.type == \'twilio\'" 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              <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\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                <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 ng-if="vm.whatsappAccount.type == \'twillo\'" class="md-block">\n                <label translate="WHATSAPP.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.whatsappAccount.remote + \'/api/whatsapp/accounts/\' + vm.whatsappAccount.id + \'/status?token=\' + vm.whatsappAccount.token + (vm.whatsappAccount.type == \'csc\' ? \'&message-id={message-id}&state={state}\' : \'\')" ng-readonly="true">\n                </div>\n                <div class="hint"><span translate="WHATSAPP.HELP.DELIVERYREPORTURL"></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" ms-scroll 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" ms-scroll 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 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="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 animate-slide-down 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" ms-scroll>\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 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="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 animate-slide-down 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" ms-scroll>\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-scroll="vm.msScrollOptions"></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-scroll="vm.msScrollOptions"></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" ms-scroll 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" ms-scroll 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" ms-scroll 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 animate-slide-left" ng-hide="vm_ct.user">\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" placeholder="Search by fullname.." 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">All</md-option>\n        <md-option ng-value="true">\n          <md-icon md-font-icon="icon-checkbox-blank-circle" class="s12 green-fg"></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"></md-icon>Offline\n        </md-option>\n      </md-select>\n    </div>\n  </md-subheader>\n  \x3c!-- <select ng-model="vm_ct.filterOnline" class="height-50 no-padding no-margin">\n            <option ng-value="undefined">All</option>\n            <option ng-value="true"><md-icon md-font-icon="icon-checkbox-blank-circle" class="s12 green-fg"></md-icon>Online</option>\n            <option ng-value="false"><md-icon md-font-icon="icon-checkbox-blank-circle" class="s12 red-fg"></md-icon>Offline</option>\n        </select> --\x3e\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.toggleChat(user)">\n      <md-divider></md-divider>\n      <img ng-src="{{user.userpic ? \'api/users/\' + user.id + \'/avatar\' : \'assets/images/avatars/profile.png\'}}" 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.unreadMessage[user.id]" class="md-accent-bg unread-message-count">\n        {{vm_ct.unreadMessage[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"></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.read && user.lastMessage.FromId === vm_ct.currentUser.id" class="s16 no-margin" md-font-icon="icon-check"></md-icon>\n          <md-icon ng-if="user.lastMessage.read && user.lastMessage.FromId === vm_ct.currentUser.id" class="s16 no-margin" md-font-icon="icon-check-all md-accent"></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      </div>\n    </md-list-item>\n  </md-list>\n</div>\n\n<div class="chat animate-slide-right" ng-show="vm_ct.user" 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.toggleChat()" 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 layout="row" ng-repeat="message in vm_ct.user.messages.rows" class="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\' : \'assets/images/avatars/profile.png\'}}" class="avatar" alt="{{vm_ct.user.fullname}}" />\n      <img ng-if="message.FromId === vm_ct.currentUser.id" class="avatar" ng-src="{{vm_ct.currentUser.userpic ? \'api/users/\' + vm_ct.currentUser.id + \'/avatar\' : \'assets/images/avatars/profile.png\'}}">\n      <div class="bubble" 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.read && message.FromId === vm_ct.currentUser.id" class="s16 margin-5" md-font-icon="icon-check"></md-icon>\n          <md-icon ng-if="message.read && message.FromId === vm_ct.currentUser.id" class="s16 margin-5" md-font-icon="icon-check-all md-accent"></md-icon>\n        </div>\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\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 ms-scroll>\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 animate-slide-left" 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 animate-slide-right" 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 ms-scroll 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 ms-scroll>\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()" ms-scroll>\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/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 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="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" 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.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 translate="{{lang.translation}}">{{lang.title}}</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">Preview</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon 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 layout="row" ng-if="vm.preview">\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" privacy=\'vm.currentUser.privacyEnabled && (key === "firstName" || key === "lastName" || key === "phone" || key === "mobile" || key === "email" || key === "fax") \' ng-cloak>\n          </md-input-container>\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 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-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-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.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.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"])}(),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,backgroundColor,fontSize,header_shape,showAgentAvatar,showCustomerAvatar,alignment,verticalAlignment,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,backgroundColor,fontSize,header_shape,showAgentAvatar,showCustomerAvatar,alignment,verticalAlignment,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,backgroundColor,fontSize,header_shape,showAgentAvatar,showCustomerAvatar,alignment,verticalAlignment,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",controller:"AgentsChatRealtimeController as vm",templateUrl:"app/main/apps/chat/views/realtime/agents/view.html",resolve:{pauses:["apiResolver",function(e){return e.resolve("pause@get",{nolimit:!0})}],agents:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("user@get",{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",role:"agent",sort:"fullname",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Agents",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",role:"agent",sort:"fullname",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:202})}],rpcAgents:["apiResolver",function(e){return e.resolve("rpc@getAgents")}]},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 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 a=e,n.resolve("rpc@getVoiceQueues")}).then(function(e){if(e)for(var n,t=0;t<e.rows.length;t+=1)(n=_.find(a.rows,{id:e.rows[t].id}))&&_.merge(n,_.pick(e.rows[t],["waiting","total","talking","answered","unmanaged","abandoned"]));return a})}],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",function(e,n,t){return 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",{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:"createdAt,updatedAt,id,token,agentIdentifier,customerAlias,messageFontSize,name,key,address,remote,ListId,fidelity,timeout,agentAlias,closingQuestion,formSubmitSuccessMessage,formSubmitFailureMessage,color,color_focus,color_button,textColor,backgroundColor,fontSize,header_shape,showAgentAvatar,showCustomerAvatar,alignment,verticalAlignment,messagesAlignment,defaultTitle,animation,defaultWhiteLabel,whiteLabel,defaultLogo,conditionAgreement,autoclose,enableUnmanagedNote,unmanagedMessage,skipUnmanaged,sendUnmanaged,enableCustomerWriting,waitingTitle,waitingMessage,closingMessage,noteTitle,placeholderMessage,skipMessageButton,enableRating,ratingType,ratingStarsNumber,enableFeedback,forwardTranscript,forwardTranscriptMessage,closingMessageButton,download_transcript,enableCustomerAttachment,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,header_offline,offline_message,message_title,enquiry_message_placeholder,enquiry_button,rating_message,rating_send,rating_skip,acceptMethod,acceptUrl,rejectMethod,rejectUrl,closeMethod,closeUrl,onlineForm,offlineForm,mapKey,mapKeyOffline,forwardTranscript,forwardOffline,forwardOfflineAddress,IntervalId,timezone,waitForTheAssignedAgent,description,notificationSound,notificationShake,notificationTemplate",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,backgroundColor,fontSize,header_shape,showAgentAvatar,showCustomerAvatar,alignment,verticalAlignment,messagesAlignment,defaultTitle,animation,defaultWhiteLabel,whiteLabel,defaultLogo,conditionAgreement,autoclose,enableUnmanagedNote,unmanagedMessage,skipUnmanaged,sendUnmanaged,enableCustomerWriting,waitingTitle,waitingMessage,closingMessage,noteTitle,placeholderMessage,skipMessageButton,enableRating,ratingType,ratingStarsNumber,enableFeedback,forwardTranscript,forwardTranscriptMessage,closingMessageButton,download_transcript,enableCustomerAttachment,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,header_offline,offline_message,message_title,enquiry_message_placeholder,enquiry_button,rating_message,rating_send,rating_skip,acceptMethod,acceptUrl,rejectMethod,rejectUrl,closeMethod,closeUrl,onlineForm,offlineForm,mapKey,mapKeyOffline,forwardTranscript,forwardOffline,forwardOfflineAddress,IntervalId,timezone,waitForTheAssignedAgent,description,notificationSound,notificationShake,notificationTemplate",sort:"-updatedAt",limit:10,offset: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",{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:"createdAt,updatedAt,id,name,key,email,ListId,active,cservice,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,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,key,email,ListId,active,cservice,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,description,notificationSound,notificationShake,notificationTemplate,queueTransfer,queueTransferTimeout,agentTransfer,agentTransferTimeout",sort:"-updatedAt",limit:10,offset: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",{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:"createdAt,updatedAt,id,name,key,token,remote,ListId,phone,type,accountSid,authId,authToken,smsMethod,applicationId,accountId,username,password,senderString,deliveryReport,waitForTheAssignedAgent,description,receiveUrl,deliveryReportUrl,notificationSound,notificationShake,notificationTemplate",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,phone,type,accountSid,authId,authToken,smsMethod,applicationId,accountId,username,password,senderString,deliveryReport,waitForTheAssignedAgent,description,receiveUrl,deliveryReportUrl,notificationSound,notificationShake,notificationTemplate",sort:"-updatedAt",limit:10,offset: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",{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:"createdAt,updatedAt,id,name,key,token,replyUri,ListId,waitForTheAssignedAgent,mapKey,description,receiveUri,notificationSound,notificationShake,notificationTemplate",sort:"-updatedAt",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"OpenchannelAccounts",fields:"createdAt,updatedAt,id,name,key,token,replyUri,ListId,waitForTheAssignedAgent,mapKey,description,receiveUri,notificationSound,notificationShake,notificationTemplate",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",{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:"createdAt,updatedAt,id,name,key,headerinfo,TrunkId,localstationid,ListId,waitForTheAssignedAgent,description,ecm,minrate,maxrate,modem,gateway,faxdetect,t38timeout,tech,acceptMethod,acceptUrl,rejectMethod,rejectUrl,closeMethod,closeUrl,notificationSound,notificationShake,notificationTemplate",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,description,ecm,minrate,maxrate,modem,gateway,faxdetect,t38timeout,tech,acceptMethod,acceptUrl,rejectMethod,rejectUrl,closeMethod,closeUrl,notificationSound,notificationShake,notificationTemplate",sort:"-updatedAt",limit:10,offset: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",{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:"createdAt,updatedAt,id,name,key,token,remote,ListId,phone,type,accountSid,authId,authToken,whatsappMethod,username,password,senderString,deliveryReport,waitForTheAssignedAgent,description,receiveUrl,deliveryReportUrl,notificationSound,notificationShake,notificationTemplate",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"WhatsappAccounts",fields:"createdAt,updatedAt,id,name,key,token,remote,ListId,phone,type,accountSid,authId,authToken,whatsappMethod,username,password,senderString,deliveryReport,waitForTheAssignedAgent,description,receiveUrl,deliveryReportUrl,notificationSound,notificationShake,notificationTemplate",sort:"-updatedAt",limit:10,offset: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",controller:"AgentsFaxRealtimeController as vm",templateUrl:"app/main/apps/fax/views/realtime/agents/view.html",resolve:{pauses:["apiResolver",function(e){return e.resolve("pause@get",{nolimit:!0})}],agents:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("user@get",{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",role:"agent",sort:"fullname",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Agents",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",role:"agent",sort:"fullname",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:202})}],rpcAgents:["apiResolver",function(e){return e.resolve("rpc@getAgents")}]},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",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})}],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",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: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,t,a){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,key,email,ListId,active,cservice,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,key,email,ListId,active,cservice,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,key,email,ListId,active,cservice,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})}],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","Auth",function(e,n){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","msApiProvider","msNavigationServiceProvider"],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",controller:"AgentsMailRealtimeController as vm",templateUrl:"app/main/apps/mail/views/realtime/agents/view.html",resolve:{pauses:["apiResolver",function(e){return e.resolve("pause@get",{nolimit:!0})}],agents:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("user@get",{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",role:"agent",sort:"fullname",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Agents",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",role:"agent",sort:"fullname",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:202})}],rpcAgents:["apiResolver",function(e){return e.resolve("rpc@getAgents")}]},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,description,mandatoryDisposition,mandatoryDispositionPauseId,dialPredictiveIntervalMaxThreshold,dialPredictiveIntervalMinThreshold",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,description,mandatoryDisposition,mandatoryDispositionPauseId,dialPredictiveIntervalMaxThreshold,dialPredictiveIntervalMinThreshold",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",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.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",controller:"AgentsMotionDialerRealtimeController as vm",templateUrl:"app/main/apps/motiondialer/views/realtime/agents/view.html",resolve:{pauses:["apiResolver",function(e){return e.resolve("pause@get",{nolimit:!0})}],agents:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("user@get",{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",role:"agent",sort:"fullname",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Agents",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",role:"agent",sort:"fullname",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:202})}],rpcAgents:["apiResolver",function(e){return e.resolve("rpc@getAgents")}]},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",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",controller:"AgentsOpenchannelRealtimeController as vm",templateUrl:"app/main/apps/openchannel/views/realtime/agents/view.html",resolve:{pauses:["apiResolver",function(e){return e.resolve("pause@get",{nolimit:!0})}],agents:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("user@get",{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",role:"agent",sort:"fullname",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Agents",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",role:"agent",sort:"fullname",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:202})}],rpcAgents:["apiResolver",function(e){return e.resolve("rpc@getAgents")}]},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";function e(e,n,t,a){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",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:{smtps:["apiResolver",function(e){return e.resolve("mailAccount@get",{fields:"createdAt,updatedAt,id,service,name,email,Smtp.service,Smtp.host,Smtp.port,Smtp.secure,Smtp.authentication,Smtp.user,Smtp.pass,description",service:"1",limit:10,offset:0})}]},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,data2,data1",sort:"-updatedAt",limit:10,offset:0})}]},authenticate:!0,permissionId:1400,bodyClass:"settings"}),n.addPart("app/main/apps/settings")}e.$inject=["$stateProvider","$translatePartialLoaderProvider","msApiProvider","msNavigationServiceProvider"],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",controller:"AgentsSmsRealtimeController as vm",templateUrl:"app/main/apps/sms/views/realtime/agents/view.html",resolve:{pauses:["apiResolver",function(e){return e.resolve("pause@get",{nolimit:!0})}],agents:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("user@get",{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",role:"agent",sort:"fullname",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Agents",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",role:"agent",sort:"fullname",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:202})}],rpcAgents:["apiResolver",function(e){return e.resolve("rpc@getAgents")}]},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,t,a){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","Auth",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",role:"admin,user",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: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",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: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",role:"agent",sort:"-updatedAt",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",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",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: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","Auth",function(e,n){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","msApiProvider","msNavigationServiceProvider"],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"}),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",controller:"AgentsVoiceRealtimeController as vm",templateUrl:"app/main/apps/voice/views/realtime/agents/view.html",resolve:{pauses:["apiResolver",function(e){return e.resolve("pause@get",{nolimit:!0})}],agents:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("user@get",{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",role:"agent",sort:"fullname",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Agents",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",role:"agent",sort:"fullname",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:202})}],rpcAgents:["apiResolver",function(e){return e.resolve("rpc@getAgents")}]},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",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",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})}],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",controller:"AgentsWhatsappRealtimeController as vm",templateUrl:"app/main/apps/whatsapp/views/realtime/agents/view.html",resolve:{pauses:["apiResolver",function(e){return e.resolve("pause@get",{nolimit:!0})}],agents:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("user@get",{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",role:"agent",sort:"fullname",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Agents",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",role:"agent",sort:"fullname",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:202})}],rpcAgents:["apiResolver",function(e){return e.resolve("rpc@getAgents")}]},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",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",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";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 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,i,o,n,s,r,l){var d;return{getToken:e,getCurrentUser:function(){return d},getPermissions:h,hasChildrenPermissions:function(e){return!!e&&_.some(e,function(e){return t(e)})},hasModulePermissions:function(i){return o(function(a,n){g()?a(!0):r.userProfileSection.get({userProfileId:d.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={};g()?(s.forEach(function(e){i[e]=!0}),a(i)):r.userProfileSection.get({userProfileId:d.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!!d&&d.role===e},hasPermission:t,hasResourcePermission:function(e,s){return o(function(a,i){return r.userProfileSection.get({userProfileId:d.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 f().then(function(){_.includes(d.permissions,a)&&(t[a]=!0),e(t)}).catch(function(e){n(e)})})},hasSectionsPermissions:function(a){return o(function(e,n){var t={};if(!g())return f().then(function(){a.forEach(function(e){_.includes(d.permissions,e)&&(t[e]=!0)}),e(t)}).catch(function(e){n(e)});a.forEach(function(e){t[e]=!0}),e(t)})},isAgent:p,isAdmin:g,isLoggedIn:function(){return!!e()},isTelephone:function(){return"telephone"===d.role},isUser:v,login:function(e){return o(function(n,t){r.auth.local(e).$promise.then(function(e){return i.put("motion.token",e.token),r.user.get({id:e.id}).$promise}).then(function(e){(d=e).lastLoginAt=moment().format("YYYY-MM-DD HH:mm:ss"),b("LOCAL_LOGIN")}).then(function(){if(p()&&1===d.showWebBar&&d.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 p()&&0!==d.showWebBar?c(e):g()||v()?m(!0):void 0}).then(function(e){d=_.assign(d,e),n()}).catch(function(e){t(e)})})},logout:function(t){return o(function(e,n){t?(u(),e()):o.resolve().then(function(){return p()&&0!==d.showWebBar?o(function(e,n){r.user.logout({id:d.id,device:"web"}).$promise.then(function(){e()}).catch(function(e){n(e)})}):g()||v()?m(!1):void 0}).then(function(){u(),e()}).catch(function(e){n(e)})})},parseCrudPermissions:function(e){return g()?{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:c,reloadPermissions:f,removeCookies:u,retrieveUser:function(){return o(function(n,t){r.user.whoami().$promise.then(function(n){return"user"===n.role?h(n.userProfileId).then(function(e){return n.permissions=e,n}):n}).then(function(e){n(d=e)}).catch(function(e){t(e)})})},setCurrentUser:function(e){d=_.merge(d,e)},getAuthenticationType:function(){return n.localStorage["motion.authenticationtype"]||"NONE"},loginSSO:function(e){return b("SSO_LOGIN"),"/api/auth/"+e}};function e(){return i.get("motion.token")}function c(e){return o(function(n,t){r.user.login({id:d.id,device:"web",intrf:e}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}function m(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:d.id},e).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}function u(){i.remove("motion.token"),d&&(n.localStorage.removeItem("motion.user:"+d.id),n.localStorage.removeItem("motion.authenticationtype"),d=null)}function p(){return"agent"===d.role}function g(){return"admin"===d.role}function v(){return"user"===d.role}function t(e){return!!d&&_.includes(d.permissions,e)}function h(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 f(){return o(function(n,t){h(d.userProfileId).then(function(e){d.permissions=e,n()}).catch(function(e){t(e)})})}function b(e){n.localStorage["motion.authenticationtype"]=e}}e.$inject=["$mdDialog","$cookies","$q","$window","$document","api","msNavigationService"],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";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,a){n.debugEnabled(!0),e.config({tabindex:!1}),a.config({disableCustomScrollbars:!1,disableCustomScrollbarsOnMobile:!0,disableMdInkRippleOnMobile:!0}),t.config({wheelPropagation:!0})}e.$inject=["$ariaProvider","$logProvider","msScrollConfigProvider","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(a,i,s,o){var r=this;function n(){var a=r.selectedField.options&&!_.isEmpty(r.selectedField.options.extraOperators),i=r.selectedField.options&&!_.isEmpty(r.selectedField.options.excludedOperators);r.availableOperators=_.filter(r.operators,function(n){var e=!n.applyTo||_.includes(n.applyTo,r.selectedField.type);n.isExtra=a&&_.some(r.selectedField.options.extraOperators,function(e){return e===n.type});var t=_.includes(n.excludeFrom,r.selectedField.type)||i&&_.includes(r.selectedField.options.excludedOperators,n.type);if((e||n.isExtra)&&!t)return n})}function t(){!r.value||_.isArray(r.value)&&_.isEmpty(r.value)?r.isValidCondition=!1:r.selectedOperator&&"$between"===r.selectedOperator.type?r.isValidCondition=!(!r.endRangeValue||!r.isValidRange):r.isValidCondition=!0}function e(){"number"===r.selectedField.type?_.isNumber(r.endRangeValue)?r.isValidRange=Number(r.endRangeValue)>Number(r.value):r.isValidRange=!0:"date"===r.selectedField.type&&(r.maxDateRange=moment(r.endRangeValue).subtract(1,"day"),r.isValidRange=!0),t()}function l(){var e=c();r.options.conditions.push(e),u()}function d(){var e=c(),n=_.findIndex(r.options.conditions,"style");r.options.conditions.splice(n,1,e),u(),r.pendingCondition.style=null,r.pendingCondition=void 0}function c(){return{name:r.selectedField.name,operator:a.instant("DASHBOARDS."+r.selectedOperator.translate),value:r.value,endValue:r.endRangeValue,displayValue:m(r.value),displayEndValue:m(r.endRangeValue),query:{column:r.selectedField.column,operator:r.selectedOperator.type,value:function(){var e,n=r.value,t=r.endRangeValue;switch(r.selectedField.type){case"date":var a=moment(n).utcOffset(0,!0).format("YYYY-MM-DD");if("$between"===r.selectedOperator.type){var i=moment(t).utcOffset(0,!0).format("YYYY-MM-DD");e=[a,i]}else e=a;break;case"number":e="$between"===r.selectedOperator.type?[n,t]:n;break;case"multiselect":var s=r.selectedField.options.field||"id";e=_.map(n,s);break;case"select":e=n.id;break;case"autocomplete":e=r.selectedOperator.isExtra?n:n.id;break;default:e=n}return e}()},disabled:!1}}function m(e){var n;if(e){switch(r.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"===r.selectedOperator.type?t.join(" or "):t.join(" and ");break;case"select":n=e.name;break;case"autocomplete":n=r.selectedOperator.isExtra?e:e.displayValue;break;default:n=e}return n}}function u(){r.value=null,r.endRangeValue=null,r.minDateRange=null,r.maxDateRange=null,r.isValidCondition=!1}r.operators=r.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"]}],r.addCondition=l,r.editCondition=function(e){r.pendingCondition=e,r.pendingCondition.style="md-amber-200-bg",r.selectedField=_.find(r.options.fields,["name",r.pendingCondition.name]),n(),r.selectedOperator=_.find(r.availableOperators,["type",r.pendingCondition.query.operator]),"date"===r.selectedField.type&&"string"==typeof r.pendingCondition.value?(r.value=new Date(r.pendingCondition.value),r.minDateRange=moment(r.value).add(1,"day"),r.endRangeValue=r.pendingCondition.endValue?new Date(r.pendingCondition.endValue):void 0):(r.value=r.pendingCondition.value,r.endRangeValue=r.pendingCondition.endValue);r.isValidRange=!0,r.isValidCondition=!0},r.updateCondition=d,r.cancelUpdateCondition=function(){r.pendingCondition.style=null,r.pendingCondition=void 0},r.setConditionStatus=function(e){e.style=e.disabled?void 0:"chip-disabled",e.disabled=!e.disabled},r.removeCondition=function(){_.isEmpty(r.options.conditions)&&r.clearFilter()},r.getValues=function(){var n=angular.copy(r.selectedField.options.route);if("autocomplete"===r.selectedField.type)for(var e=0;e<Object.keys(n.params).length;e++){var t=Object.keys(n.params)[e];"@autocomplete"===n.params[t]&&(n.params[t]=r.searchText)}{if(!r.selectedField.values)return s[n.model][n.action](n.params).$promise.then(function(e){if("autocomplete"!==r.selectedField.type)return r.selectedField.values=e.rows;var n=r.searchText?_.filter(e.rows,function(e){e.displayValue="";for(var n=0;n<r.selectedField.options.searchFields.length;n++){var t=r.selectedField.options.searchFields[n],a=e[t]||"";e.displayValue+=a+" "}return _.trimEnd(e.displayValue),_.includes(e.displayValue.toLowerCase(),r.searchText.toLowerCase())}):[];return i.when(n)}).catch(function(e){o.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()})});r.selectedField.values.forEach(function(e){e.translate&&(e.name=a.instant(e.translate))})}},r.onFieldChange=function(){r.value=void 0,r.endRangeValue=void 0,r.searchText=void 0,r.isValidCondition=!1,n(),r.autoSelectOperator=1===r.availableOperators.length,r.autoSelectOperator||(r.selectedOperator=void 0)},r.onOperatorChange=function(e){r.isValidRange=!0,r.selectedOperator&&(e?e.applyTo?0<_.difference(r.selectedOperator.applyTo,e.applyTo).length&&(r.value=null):r.selectedOperator.applyTo&&(r.value=null):r.value=null,"between"!=r.selectedOperator.type&&(r.endRangeValue=null),r.selectedField.options&&!_.isEmpty(r.selectedField.options.extraOperators)&&(r.selectedOperator.isExtra=_.some(r.selectedField.options.extraOperators,function(e){return e===r.selectedOperator.type})));t()},r.onValueChange=function(){r.selectedOperator&&"$between"===r.selectedOperator.type?"number"===r.selectedField.type?e():"date"===r.selectedField.type&&(r.minDateRange=moment(r.value).add(1,"day"),t()):t()},r.checkRange=e,r.handleKeyboardAction=function(){r.pendingCondition?d():l()}}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";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(u,t,p,e,a,i,n,g,s,v,h,f,b,o,A){var E=this,r=["ringingId","speakerId","microphoneId","ringingVolume","speakerVolume","microphoneVolume","ringingMute","speakerMute","microphoneMute"],l=JSON.parse(n.localStorage.getItem("motion2.user:"+E.conf.id))||{webrtc:{ringingVolume:.5,speakerVolume:.5,microphoneVolume:1,ringingMute:!1,speakerMute:!1,microphoneMute:!1}};function d(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){console.log(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:g.instant("TOOLBAR.WARNING"),msg:g.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,R("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:g.instant("TOOLBAR.WARNING"),msg:g.instant("TOOLBAR.WEBRTC_SPEAKER_NOT_AVAILABLE"),clickToClose:!0,showClose:!0,shake:!1,timeout:!1,position:"bottom-right"});return R("speaker",!1)}).then(function(){return R("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)&&(console.log("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):console.error("Unable to find a valid call to answer",e):console.error("Unable to answer the call",e)}.bind(this)),jabra.addEventListener("mute",function(){R("microphone",E.conf.microphoneMute=!0)}.bind(this)),jabra.addEventListener("unmute",function(){E.conf.microphoneMute=!1,R("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(){new Promise(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){console.warn("Error initializing Jabra integration",e)})}).catch(function(e){console.error("Unable to init media devices",e),"NotFoundError"===e.name&&v.warning({title:g.instant("TOOLBAR.WARNING"),msg:g.instant("TOOLBAR.WEBRTC_AUDIO_DEVICES_NOT_AVAILABLE"),clickToClose:!0,showClose:!0,shake:!1,timeout:!1,position:"bottom-right"})}).finally(function(){E.initDeviceInProgress=!1,y(),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:g.instant("TOOLBAR.WARNING"),msg:g.instant("TOOLBAR.WEBRTC_LICENSE_NOT_ENABELD"),clickToClose:!0,showClose:!0,shake:!1,timeout:!1,position:"bottom-right"})}.bind(this))})}function y(){l.webrtc=_.pick(E.conf,r),n.localStorage.setItem("motion2.user:"+E.conf.id,JSON.stringify(l))}function S(e,n,t){console.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 T(e){console.debug("answer -> session",e),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 I(e,n){console.debug("terminate -> session",e),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 console.debug("getVoiceChannels -> session",t),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 O(e){console.debug("onAddstream -> data",e),this.remotePlayer.srcObject=e.stream,this.remotePlayer.play()}function w(){E.canGoInConference=!1,E.isInConference=!1,E.currentconferenceSessions=[]}function R(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&&y()}).catch(function(e){console.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&&y()}).catch(function(e){console.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&&y();break;default:console.log("unknown device")}}function c(){E.target="",document.getElementById("ms-target").blur(),document.getElementById("ms-target").value="",u.$broadcast("angucomplete-alt:clearInput","ms-target-wrap")}function m(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 x(){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){console.log(e)})}}function N(e,n,t,a){return console.debug("onReferCallback -> session, textContent, position, delay",e,n,t,a),function(){i.show(i.simple().textContent(n).position(t).hideDelay(a)),I(e)}}function D(n){return console.debug("findSessionBySessionId -> sessionId, vm_pb.sessions",n,E.sessions),_.find(E.sessions,function(e){return e.call_id==n})}function P(e,n){return console.debug("callCallback -> url, params",e,n),s({url:e,method:"GET",params:n})}e(function(){},999),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(l.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:p(function(){E.showDialpad=!1})}}),E.$onInit=function(){d(!1),navigator.mediaDevices.ondevicechange=function(){E.initDeviceInProgress||(E.initDeviceInProgress=!0,jabra&&E.isJabraInitialized?jabra.shutdown().then(function(){E.isJabraInitialized=!1,d(!(E.isJabraEnabled=!1))}).catch(function(e){console.error("Unable to shutdown Jabra library",e)}):d(!0))};var e=[h.network.get({type:"turn",nolimit:!0}).$promise,h.network.get({type:"stun",nolimit:!0}).$promise];Promise.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){console.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,S(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();if(c.voicePause&&c.phoneBarDnd||E.originateInProgress)r=!1;else if(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){console.debug("getNotification -> session",n);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(){T(n)},function(){I(n)},E.conf.autoAnswer).then(function(e){n.notification=e}).catch(function(e){console.error("Error creating notification for incoming call",e)})}(e.session),S(e.session.user,!0),E.isJabraEnabled&&jabra.ring(),E.conf.autoAnswer&&p(function(){o.isInProgress()&&(o.autoAnswer=!0,T(o))},E.conf.autoAnswerDelay?1e3*E.conf.autoAnswerDelay:0),console.debug("xAnswerMode",l),console.debug("xAnswerAfterSec",d),"auto"==l.toLowerCase()){var m=0==d?500:1e3*d;console.debug("auto answer enabled after:"+m+" ms"),p(function(){o.isInProgress()&&(o.autoAnswer=!0,T(o))},m)}}r?(o.call_id=e.request.call_id,n&&P(E.callbackQueue[o.call_id]=n,{call_id:o.call_id}).then(function(){console.log('callbackurl:"'+n+'" called successfully')}).catch(function(e){console.log('fail callbackurl:"'+n+'" err:',e)}),o.connection&&(o.connection.onaddstream=O.bind(this)),o.iceCandidateTimeout=null,o.on("progress",function(e,n){console.debug("onProgress -> session, data",e,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){console.log(e.message)})),C(e).then(function(){var n=E.callbackQueue[e.call_id];n&&P(n,{uniqueid:e.uniqueid,call_id:e.call_id,number_called:e.user}).then(function(){console.log('callbackurl:"'+n+'" called successfully')}).catch(function(e){console.log('fail callbackurl:"'+n+'" err:',e)}).finally(function(){delete E.callbackQueue[e.call_id]})}).catch(function(e){console.error("Unable to retrieve voice channels",e)})}.bind(this,o)),o.on("confirmed",function(e,n){console.debug("onConfirmed -> session, data",e,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=O.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){console.log("Unable to play autoAnswer notification",e)})),E.canGoInConference=2==E.sessions.length,C(e).catch(function(e){console.error("Unable to retrieve voice channels",e)})}.bind(this,o)),o.on("hold",function(e,n){console.debug("onHold -> session, data",e,n),"local"===n.originator&&(e.localHold=!0)}.bind(this,o)),o.on("unhold",function(e,n){console.debug("onUnhold -> session, data",e,n),"local"===n.originator&&(e.localHold=!1)}.bind(this,o)),o.on("ended",function(e,n){if(console.debug("onEnded -> session, data",e,n),E.isInConference&&_.includes(E.currentConferenceSessions,e.id)&&(w(),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()})})}.bind(this,o)),o.on("failed",function(e,n){if(console.debug("onFailed -> session, data",e,n),this.soundPlayer.pause(),this.soundPlayer.loop=null,e.notification&&e.notification.close(),E.isInConference&&_.includes(E.currentConferenceSessions,e.id)&&w(),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){console.debug("onIcecandidate -> session, data",e,n),null!==e.iceCandidateTimeout&&clearTimeout(e.iceCandidateTimeout),e.iceCandidateTimeout=setTimeout(n.ready,1e3)}.bind(this,o)),E.sessions.push(o),p(function(){u.$apply(),console.debug("onNewRTCSession -> vm_pb.sessions",E.sessions)})):I(o,486)}.bind(this)),o.on("webbar:originate",function(e){console.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)),o.on("webbar:hangup",function(e){console.debug("hangupHook -> payload",e);var n=E.sessions;if(e.sessionId&&((n=[]).push(D(e.sessionId)),0==n.length))console.warn("call with session Id "+e.sessionId+" not found");else for(var t=0;t<n.length;t++){var a=n[t];console.log("hangupHook -> sessionToHangup",a),E.terminate(a)}}.bind(this)),o.on("webbar:answer",function(e){var n;console.debug("answerHook -> payload",e),n=e.sessionId?D(e.sessionId):_.find(E.sessions,function(e){return e.incoming&&!e.confirmed}),e.sessionId&&!n&&console.warn("call with session Id "+e.sessionId+" not found"),n&&E.answer(n)}.bind(this)),o.on("webbar:hold",function(e){console.debug("holdHook -> payload",e);var n=E.sessions;if(e.sessionId&&((n=[]).push(D(e.sessionId)),0==n.length))console.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)),o.on("webbar:unhold",function(e){if(console.debug("holdHook -> payload",e),e.sessionId){var n=D(e.sessionId);n?E.unhold(n):console.warn("call with session Id "+e.sessionId+" not found")}else console.error("sessionId required")}.bind(this)),o.on("webbar:transfer",function(e){if(console.debug("transferHook -> payload",e),e.sessionId)if(e.transferNumber){var n=D(e.sessionId);n?n.refer(e.transferNumber,{eventHandlers:{requestSucceeded:N(n,"requestSucceeded","top right",3e3),requestFailed:N(n,"requestFailed","top right",3e3)}}):console.warn("call with session Id "+e.sessionId+" not found")}else console.error("transferNumber required");else console.error("sessionId required")}.bind(this)),o.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,u.$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){console.log(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 m(e=(e=e.replace(/\(/g,"")).replace(/\)/g,"")).then(function(e){e&&E.ua.call(e,E.sessionConf)}).then(function(){c()})}},E.hold=function(e){console.debug("hold -> session",e),e.hold({useUpdate:!1}),E.isJabraEnabled&&(jabra.hold(),jabra.onHook())},E.refer=function(n){console.debug("refer -> session",n);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 m(e)}).then(function(e){n.refer(e,{eventHandlers:{requestSucceeded:N(n,"requestSucceeded","top right",3e3),requestFailed:N(n,"requestFailed","top right",3e3)}})})},E.record=function(e){console.debug("record -> session",e),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){console.debug("unhold -> session",e),e.unhold({useUpdate:!1}),E.putOtherCallsOnHold(e),E.isJabraEnabled&&(jabra.offHook(),jabra.resume())},E.answer=T,E.terminate=I,E.selectSession=function(e){console.debug("selectSession -> session",e),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){console.debug("referAttended -> session",e),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=R,E.putOtherCallsOnHold=function(e){if(console.debug("putOtherCallsOnHold -> session",e),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,u.$broadcast("angucomplete-alt:changeInput","ms-target-wrap",E.target)):E.target?u.$broadcast("angucomplete-alt:changeInput","ms-target-wrap",E.target):c():c()},E.targetSelected=function(e){e&&(E.target=e.originalObject.target,E.call(),c())},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(){x()},1e3)},!1);var a=E.sessions[1].connection.getSenders()[0],i=E.sessions[1].connection.getReceivers()[0];i.track.addEventListener("unmute",function(){setTimeout(function(){x()},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){console.log(e)})})},E.patchConference=x,u.$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}}).then(function(e){e&&(E.conf=e,E.initDeviceInProgress||(E.initDeviceInProgress=!0,jabra&&E.isJabraInitialized?jabra.shutdown().then(function(){E.isJabraInitialized=!1,d(E.isJabraEnabled=!1)}).catch(function(e){console.error("Unable to shutdown Jabra library",e)}):d(!1)))})}),u.$on("webrtc::logout",function(){E.ua.stop(),jabra&&E.isJabraInitialized&&jabra.shutdown(),navigator.mediaDevices.ondevicechange=function(){}}),u.$on("webrtc::call",function(e,n){console.debug("onRemoteCall -> evt, data",e,n),n.target&&(E.target=n.target,E.call())}),u.$on("webrtc::transfer",function(e,n){if(console.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 m(n.target).then(function(e){e&&E.sessions[t].refer(e,{eventHandlers:{requestSucceeded:N(E.sessions[t],"requestSucceeded","top right",3e3),requestFailed:N(E.sessions[t],"requestFailed","top right",3e3)}})})}),u.$on("$destroy",function(){console.debug("$destroy event fired"),o.removeAllListeners("webbar:originate"),o.removeAllListeners("webbar:hangup"),o.removeAllListeners("webbar:answer"),o.removeAllListeners("webbar:hold"),o.removeAllListeners("webbar:unhold"),o.removeAllListeners("webbar:transfer"),o.removeAllListeners("webbar:stopmonitors")})}e.$inject=["$scope","$document","$timeout","$interval","$mdDialog","$mdToast","$window","$translate","$http","toasty","api","motNotification","Auth","socket","privacyManager"],angular.module("app.core").controller("MsPhonebarController",e).directive("msPhonebar",function(){return{restrict:"E",scope:{conf:"=",sessions:"="},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){var t=this;function a(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=a(n,"audiooutput","ringingId"),s.speakerId=a(n,"audiooutput","speakerId"),s.microphoneId=a(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,t.conf=angular.copy(s),t.devices=n,t.saveSettings=function(){e.hide(t.conf)},t.closeDialog=function(){e.hide()},t.isCompatibleBrowser=function(){return"chrome"===t.conf.browserName.toLowerCase()||"opera"===t.conf.browserName.toLowerCase()||"safari"===t.conf.browserName.toLowerCase()}}e.$inject=["$mdDialog","conf","devices"],angular.module("app.toolbar").controller("SettingsController",e)}(),function(){"use strict";function e(t,a){var i=this;function s(e){var n=e.key,t={param:i.query[n],resources:e.options,placeholder:e.placeholder,ngValue:e.ngValue};a.setPlaceholder(t).then(function(e){i.placeholders[n]=e})}i.pickerModels={},i.placeholders={},i.localizationMap=t.localizationMap,i.onMultiselectInit=function(e){s(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=function(e,n){n&&(s(e),i.search())},i.onDateRangeSelection=function(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()},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]]:[],s(e),i.search()},i.selectAll=function(e){var n=e.key,t=e.ngValue||"id";i.query[n]=_.map(e.options,t),s(e),i.search()}}function n(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}n.$inject=["$filter","dateFilterLocalizationFactory"],e.$inject=["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"}}).factory("dateRangeManager",n)}(),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(s,o,n,t){return{restrict:"AE",compile:function(e){if(!(t.getConfig("disableCustomScrollbars")||t.getConfig("disableCustomScrollbarsOnMobile")&&n.isMobile()))return e.addClass("ms-scroll"),function(e,n,t){var a={};function i(){PerfectScrollbar.update(n[0])}t.msScroll&&(a=e.$eval(t.msScroll)),a=angular.extend({},o.getConfig(),a),s(function(){PerfectScrollbar.initialize(n[0],a)},0),n.on("mouseenter",i),e.$watch(function(){return n.prop("scrollHeight")},function(e,n){angular.isUndefined(e)||angular.equals(e,n)||i()}),e.$watch(function(){return n.prop("scrollWidth")},function(e,n){angular.isUndefined(e)||angular.equals(e,n)||i()}),e.$on("$destroy",function(){n.off("mouseenter"),PerfectScrollbar.destroy(n[0])})}}}}e.$inject=["$timeout","msScrollConfig","msUtils","motionConfig"],angular.module("app.core").provider("msScrollConfig",function(){var n={wheelSpeed:1,wheelPropagation:!1,swipePropagation:!0,minScrollbarLength:null,maxScrollbarLength:null,useBothWheelAxes:!1,useKeyboard:!0,suppressScrollX:!1,suppressScrollY:!1,scrollXMarginOffset:0,scrollYMarginOffset:0,stopPropagationOnClick:!0};this.config=function(e){n=angular.extend({},n,e)},this.$get=function(){var e={getConfig:function(){return n}};return e}}).directive("msScroll",e)}(),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 animate-rotate"></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(a,e,n,i,t){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(),a.$digest()},r.interval)}function l(e){var n=(e||moment()).utcOffset(a.serverDateOffset).format("YYYY-MM-DD HH:mm:ss");return moment(n)}function o(){n(function(n,t){try{if(a.serverDateOffset)return void n(l());i.setting.getDate().$promise.then(function(e){a.serverDateOffset=e.offset,n(moment(e.now))})}catch(e){t(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){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.setting.getDate",msg:e.data?JSON.stringify(e.data.message):e.toString()})})}o(),a.$watch("vm.startTime",function(e,n){angular.isUndefined(e)||0!==e.length&&(angular.equals(e,n)||o())}),a.$on("timer-start",function(){r.startTime=void 0,o()}),e.bind("$destroy",function(){r.timeoutId&&clearTimeout(r.timeoutId)})}e.$inject=["$scope","$element","$q","api","toasty"],angular.module("app.core").directive("timer",function(){return{restrict:"EA",replace:!1,scope:{startTime:"=?",interval:"=?"},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:"="},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"]}]}],templateUrl:"app/core/directives/ms-timezone/ms-timezone.html"}})}(),function(){"use strict";angular.module("app.core").controller("MsWidgetEngineCounterController",function(){var a=this;a.filter=[],a.filtered=!1,a.fontSize=20,a.getCount=function(e){var n=0;if(e){a.fontSize=e.attrs[2]&&e.attrs[2].value?parseInt(e.attrs[2].value)-parseInt(e.attrs[2].value)%2:20,e.attrs[1].value&&e.attrs[1].value.length?(a.filtered=!0,a.filter=_.intersection(e.voiceQueuesSelected,e.attrs[1].value)):(a.filtered=!1,a.filter=e.voiceQueuesSelected);for(var t=0;t<e.voiceQueues.rows.length;t+=1)_.includes(a.filter,e.voiceQueues.rows[t].id)&&(n+=e.voiceQueues.rows[t][e.attrs[0].value]?parseInt(e.voiceQueues.rows[t][e.attrs[0].value]):0)}return n}})}(),function(){"use strict";function e(o,e){var r=this;r.filter=[],r.filtered=!1,r.properties=[],r.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"}}]}}},r.getMultiBarChart=function(e){e&&(e.attrs&&function(e){r.properties=_.map(_.filter(e.attrs,function(e){return e.name&&0<=e.name.indexOf("attrSerie")&&e.value&&"null"!==e.value}),"value"),e.attrs[3].value&&e.attrs[3].value.length?(r.filtered=!0,r.filter=_.intersection(e.voiceQueuesSelected,e.attrs[3].value)):(r.filtered=!1,r.filter=e.voiceQueuesSelected);if(r.multiBarChart.series.length>r.properties.length){var n=r.multiBarChart.series.length-r.properties.length;r.multiBarChart.series.splice(0,n),r.multiBarChart.data.splice(0,n)}for(var t=0;t<r.properties.length;t+=1){if(r.multiBarChart.series[t]=o.instant("TOOLS."+r.properties[t].toUpperCase()),_.isNil(r.multiBarChart.data[t])&&(r.multiBarChart.data[t]=[]),r.multiBarChart.labels.length>r.filter.length){var a=r.multiBarChart.labels.length-r.filter.length;r.multiBarChart.labels.splice(0,a),r.multiBarChart.data[t].splice(0,a)}for(var i=0,s=0;i<e.voiceQueues.rows.length;i+=1)_.includes(r.filter,e.voiceQueues.rows[i].id)&&(r.multiBarChart.labels[s]=e.voiceQueues.rows[i].name,r.multiBarChart.data[t][s]=e.voiceQueues.rows[i][r.properties[t]]?parseInt(e.voiceQueues.rows[i][r.properties[t]]):0,s+=1)}}(e),e.foreground&&function(e){r.multiBarChart.options.legend.fontColor=e.foreground;for(var n=0;n<r.multiBarChart.options.scales.xAxes.length;n+=1)r.multiBarChart.options.scales.xAxes[n].ticks.fontColor=e.foreground;for(var t=0;t<r.multiBarChart.options.scales.yAxes.length;t+=1)r.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){o.properties=_.map(_.filter(e.attrs,function(e){return e.name&&0<=e.name.indexOf("attrSerie")&&e.value&&"null"!==e.value}),"value"),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){o.pieChart.labels[t]=s.instant("TOOLS."+o.properties[t].toUpperCase());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(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 Promise.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(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(i){function s(e,n){var t=i.localStorage.getItem(e),a=t?JSON.parse(t):{};return n?a[n]:a}function o(e,n){return i.localStorage.setItem(e,JSON.stringify(n))}return{get:s,set:o,update:function(e,n,t){var a=s(e);t?a[t]=n:a=n;return o(e,a)}}}e.$inject=["$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(e,s){return{setPlaceholder:function(a){var i;return e(function(n,e){try{if(_.isEmpty(a.resources))i=s.instant("DASHBOARDS.NONE");else if(_.isEmpty(a.param))i=a.placeholder?s.instant(a.placeholder):s.instant("DASHBOARDS.CHOOSE");else if(a.param.length===a.resources.length)i=s.instant("DASHBOARDS.ALL");else{var t=a.ngValue||"id";i=_(a.resources).filter(function(e){return _.includes(a.param,e[t])}).map("name").value().join(", ")}n(i)}catch(e){console.log("QuickFilterManager::setPlaceholder",e),n(null)}})}}}e.$inject=["$q","$translate"],angular.module("app.core").factory("quickFilterManager",e)}(),function(){"use strict";angular.module("app.core").factory("settingsManager",function(){var n={};return{get:function(){return n},set:function(e){e&&(n=e.toJSON())}}})}(),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;if(n)return 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("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("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}},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()}}}}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){var t=this;t.currentUser=e.getCurrentUser(),t.cookieAlertHide=n.get("motion.cookieAlertHide:"+t.currentUser.id)||!1,t.cookieAlertOnClose=function(){n.put("motion.cookieAlertHide:"+t.currentUser.id,!0)}}e.$inject=["Auth","$cookies"],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"}}),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"},getSquareProjects:{isArray:!1,method:"get",url:r.baseUrl+"users/:id/square_projects"},addSquareProjects:{isArray:!0,method:"post",url:r.baseUrl+"users/:id/square_projects"},removeSquareProjects:{isArray:!1,method:"delete",url:r.baseUrl+"users/:id/square_projects"},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"},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"},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"},getOpenContacts:{isArray:!1,method:"get",url:r.baseUrl+"cm/hopper/opencontacts"}}),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.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"}},addUsers:{isArray:!0,method:"post",url:r.baseUrl+"square/projects/:id/users"},removeUsers:{isArray:!1,method:"delete",url:r.baseUrl+"square/projects/:id/users"},getUsers:{isArray:!1,method:"get",url:r.baseUrl+"square/projects/:id/users"}}),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"}}}),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"},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"}}),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"}}}),r.realtime=e(r.baseUrl+"realtime",{},{getQueues:{isArray:!1,method:"get",url:r.baseUrl+"realtime/queues"}}),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("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){var r=this;r.progresslogin=!1,r.googleSsoEnabled=!1,r.login=function(){return r.progresslogin=!0,r.message="",s.login(r.form).then(function(){return n.go("app.dashboards.general")}).catch(function(e){r.message=e.data?e.data.message:e.message}).finally(function(){r.progresslogin=!1})},r.loginOauth=function(e){r.message="",t.location.href=s.loginSSO(e)},r.onInit=function(){{if(n.params.token&&n.params.userId)return s.removeCookies(),r.progresslogin=!0,e.put("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(){r.progresslogin=!1});s.isLoggedIn()&&n.go("app.dashboards.general")}r.googleSsoEnabled=o.googleSsoEnabled},r.onInit()}e.$inject=["$state","$window","$cookies","$timeout","api","Auth","setting"],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,_.pick(e.toJSON(),_.keys(n))),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,_.pick(e.toJSON(),_.keys(n))),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(n){var a={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(a,function(e,n){t.push({name:n,api:e})}),t},getColumns:function(e){return n[a[e]].describe().$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=angular.toJson(p.treeCustomInstance.jstree(!0).get_json("#"));d.analyticTreeReport.update({id:2,tree:t}).$promise.then(function(){c.rows[1]&&(c.rows[1].tree=t),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,_.pick(e.toJSON(),_.keys(n))),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,i,s,e,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=e,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){return r.user.addSquareProjects({id:i.getCurrentUser().id,ids:[e.id]}).$promise,e}).then(function(e){c.projects.unshift(e),s.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++)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.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),s.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++)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.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(){return r.squareProject.getUsers({id:c.project.id}).$promise}).then(function(e){for(var n=[],t=e.rows,a=0;a<t.length;a++)n.push(r.user.removeSquareProjects({id:i.getCurrentUser().id,ids:[c.project.id]}).$promise);return $q.all(n)}).then(function(){_.remove(c.projects,{id:c.project.id}),s.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,C,O,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(C,{id:e})&&0<e)return t.smsAccount.get({id:e,fields:"id,name"}).$promise.then(function(e){var n=e.toJSON();n.canSelect=!1,C.push(n),P.values.sms_account_id=U(C,"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(C,"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(O,{id:e})&&0<e)return t.pause.get({id:e,fields:"id,name"}).$promise.then(function(e){var n=e.toJSON();n.canSelect=!1,O.push(n),P.values.pause_id=U(O,"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(O,"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(C,"id","name"),pause_id:U(O,"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:"Amy",option:"Amy (English, British, Female)"},{value:"Astrid",option:"Astrid (Swedish, Female)"},{value:"Brian",option:"Brian (English, British, Male)"},{value:"Carla",option:"Carla (Italian, Female)"},{value:"Carmen",option:"Carmen (Romanian, Female)"},{value:"Celine",option:"Celine (French, Female)"},{value:"Chantal",option:"Chantal (French, Canadian, Female)"},{value:"Conchita",option:"Conchita (Spanish, Castilian, Female)"},{value:"Cristiano",option:"Cristiano (Portuguese, Male)"},{value:"Dora",option:"Dora (Icelandic, Female)"},{value:"Emma",option:"Emma (English, British, Female)"},{value:"Enrique",option:"Enrique (Spanish, Castilian, Male)"},{value:"Ewa",option:"Ewa (Polish, Female)"},{value:"Filiz",option:"Filiz (Turkish, Female)"},{value:"Geraint",option:"Geraint (English, Welsh, Male)"},{value:"Giorgio",option:"Giorgio (Italian, Male)"},{value:"Gwineth",option:"Gwineth (Welsh, Female)"},{value:"Hans",option:"Hans (German, Male)"},{value:"Ines",option:"Ines (Portuguese, Female)"},{value:"Ivy",option:"Ivy (English, US, Female)"},{value:"Jacek",option:"Jacek (Polish, Male)"},{value:"Jan",option:"Jan (Polish, Male)"},{value:"Joanna",option:"Joanna (English, US, Female)"},{value:"Joey",option:"Joey (English, US, Male)"},{value:"Justin",option:"Justin (English, US, Male)"},{value:"Karl",option:"Karl (Icelandic, Male)"},{value:"Kendra",option:"Kendra (English, US, Female)"},{value:"Kimberly",option:"Kimberly (English, US, Female)"},{value:"Liv",option:"Liv (Norwegian, Female)"},{value:"Lotte",option:"Lotte (Dutch, Female)"},{value:"Mads",option:"Mads (Danish, Male)"},{value:"Maja",option:"Maja (Polish, Female)"},{value:"Marlene",option:"Marlene (German, Female)"},{value:"Mathieu",option:"Mathieu (French, Male)"},{value:"Maxim",option:"Maxim (Russian, Male)"},{value:"Miguel",option:"Miguel (Spanish, US, Male)"},{value:"Mizuki",option:"Mizuki (Japanese, Female)"},{value:"Naja",option:"Naja (Danish, Female)"},{value:"Nicole",option:"Nicole (English, Austrialian, Female)"},{value:"Penelope",option:"Penelope (Spanish, US, Female)"},{value:"Raveena",option:"Raveena (English, Indian, Female)"},{value:"Ricardo",option:"Ricardo (Portuguese, Brazilian, Male)"},{value:"Ruben",option:"Ruben (Dutch, Male)"},{value:"Russell",option:"Russell (English, Austrialian, Male)"},{value:"Salli",option:"Salli (English, US, Female)"},{value:"Tatyana",option:"Tatyana (Russian, Female)"},{value:"Vitoria",option:"Vitoria (Portuguese, Brazilian, 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(e,t,a,n,i,s,o){var r=this;function l(){return a.squareProject.getUsers({id:r.project.id,fields:"id,name,fullname,internal",nolimit:!0,role:"user"}).$promise.then(function(e){return r.selectedItems=e.rows?_.map(e.rows,function(e){return e}):[],r.dualMultiselectOptions.selectedItems=r.selectedItems,a.user.get({fields:"id,fullname,name,internal",role:"user",nolimit:!0}).$promise}).then(function(e){r.items=e.rows?_.map(e.rows,function(e){return e}):[],r.dualMultiselectOptions.items=_.differenceBy(r.items,r.selectedItems,"id")}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETUSERS",msg:e.status?JSON.stringify(e.data):e.toString()})})}r.project=n,r.penalty=0,r.items=[],r.selectedItems=[],r.closeDialog=function(){e.hide()},r.dualMultiselectOptions={items:[],selectedItems:[],orderBy:"name",line1:"fullname",line2:["name","internal"],line3:"penalty",labelAll:s.instant("CALLYSQUARE.ALL_USERS"),labelSelected:s.instant("CALLYSQUARE.SELECTED_USERS"),transferCallback:function(e,n){a.squareProject[n?"removeUsers":"addUsers"]({id:r.project.id,ids:_.map(e,"id"),penalty:r.penalty||0}).$promise.then(function(){t.success({title:"Project properly "+(n?"removed":"added"),msg:"Project has been "+(n?"removed":"added")+"!"}),n||l()}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:squareProjects.ADDUSERS",msg:e.status?JSON.stringify(e.data):e.toString()})})}},l()}e.$inject=["$mdDialog","toasty","api","project","projects","$translate","Auth"],angular.module("app.callysquare").controller("ProjectspermissionaddController",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,_.pick(e.toJSON(),_.keys(n))),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,_.pick(e.toJSON(),_.keys(n))),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,backgroundColor,fontSize,header_shape,showAgentAvatar,showCustomerAvatar,alignment,verticalAlignment,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,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,_.pick(e.toJSON(),_.keys(n))),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"]),{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(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,_.pick(e.toJSON(),_.keys(n))),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){m.chatWebsiteInteractions=e||{count:0,rows:[]};for(var n=0;n<m.chatWebsiteInteractions.rows.length;n+=1){var t=m.chatWebsiteInteractions.rows[n];v(t),t.Owner.name=h(t)}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=d.chatInteraction.get(m.query,u).$promise}function g(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||p(),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 v(e){e.Contact?e.contactName=(e.Contact.firstName||"")+" "+(e.Contact.lastName||""):e.contactName=i.instant("DASHBOARDS.UNKNOWN")}function h(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"]}}]},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(){g(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=u,m.getChatWebsiteInteractions=p,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,p()}}).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=g,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){g(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,_.pick(e.toJSON(),_.keys(n))),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,o,n,t,a,i,s,r,l,d,c,m,u,p,g,v,h,f){var b=this,A=["userpic","online","lastLoginAt","lastPauseAt","pauseType","lastPauseAt","internal","address","chatPause","openchannelPause","mailPause","smsPause","whatsappPause","faxPause","voicePause","chatCapacity","openchannelCapacity","mailCapacity","smsCapacity","whatsappCapacity","faxCapacity","chatCurrentCapacity","openchannelCurrentCapacity","mailCurrentCapacity","smsCurrentCapacity","whatsappCurrentCapacity","faxCurrentCapacity","chatStatus","openchannelStatus","mailStatus","smsStatus","whatsappStatus","faxStatus","voiceStatus","chatStatusTime","openchannelStatusTime","mailStatusTime","smsStatusTime","whatsappStatusTime","faxStatusTime","voiceStatusTime","queue","destconnectedlinenum","screenrecording","phoneBarEnableScreenRecordingByAgent","phoneBarEnableAutomaticScreenRecording"],E=["chatPause","openchannelPause","mailPause","smsPause","whatsappPause","faxPause","voicePause","online"];for(var y in b.currentUser=v.getCurrentUser(),b.availableStates=["ringing","inuse","busy","onhold","not_inuse"],b.pauses=s||{count:0,rows:[]},b.license=h,b.userProfile=p,b.userProfileSection=g&&1==g.count?g.rows[0]:null,b.crudPermissions=v.parseCrudPermissions(b.userProfileSection?b.userProfileSection.crudPermissions:null),b.agents=r?_.keyBy(r.rows?r.rows:[],"id"):{},b.rpcAgents=l?_.keyBy(l.rows?l.rows:[],"id"):{},b.paginatedAgents={},b.load=!1,b.order=[],b.agentInternal={},b.agents)b.agents.hasOwnProperty(y)&&(b.agents[y].init=!0);b.query={limit:10,page:1,order:"fullname",globalStatusFilter:"",pauseTypeFilter:""},b.logout=function(e,n){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"}),b.agents[e.id]&&(b.agents[e.id].online=!1),b.rpcAgents[e.id]&&(b.rpcAgents[e.id].online=!1),T()}).catch(function(e){m.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.staff.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},b.queueAdd=function(e,n){t.show({controller:"AgentqueueaddController",controllerAs:"vm",templateUrl:"app/main/apps/staff/views/agents/edit/queueadd/queueadd.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{agent:e,agents:[],channel:"chat",direction:"inbound",crudPermissions:b.crudPermissions}})},b.pause=function(n,e){return d.user.pause({id:n.id,type:e}).$promise.then(function(e){b.agents[n.id]&&_.merge(b.agents[n.id],_.pick(e,A)),b.rpcAgents[n.id]&&_.merge(b.rpcAgents[n.id],_.pick(e,A)),w(b.agents[n.id])}).catch(function(e){m.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.staff.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},b.unPause=function(n){return d.user.unpause({id:n.id}).$promise.then(function(e){b.agents[n.id]&&_.merge(b.agents[n.id],_.pick(e,A)),b.rpcAgents[n.id]&&_.merge(b.rpcAgents[n.id],_.pick(e,A)),w(b.agents[n.id])}).catch(function(e){m.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.staff.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},b.showInfo=function(e){t.show(t.alert().clickOutsideToClose(!0).title("Legend").htmlContent("<div>TODO legend status + state</div>").ok("Ok").targetEvent(e))},b.getAgentStatus=O,b.getAgentGlobalStatus=w,b.isPause=I,b.checkPause=function(e){return"pause"===e},b.isPartialPause=function(e){return"*pause"===e},b.onSave=function(e){b.agents[e.id]&&(_.merge(b.agents[e.id],_.pick(_.omit(e,E),A)),_.merge(b.rpcAgents[e.id],_.pick(_.omit(e,E),A)),w(b.agents[e.id]))},b.onUpdate=function(e){b.agents[e.id]&&(_.merge(b.agents[e.id],_.pick(e,A)),_.merge(b.rpcAgents[e.id],_.pick(e,A)),e.lastPauseAt&&(b.agents[e.id].globalStatusTime=e.lastPauseAt,b.rpcAgents[e.id].globalStatusTime=e.lastPauseAt),w(b.agents[e.id]))},b.onInit=T,b.onConnect=function(e){b.agents[b.agentInternal[e.destaccountcode]]&&(_.merge(b.agents[b.agentInternal[e.destaccountcode]],_.pick(e,["queue","destconnectedlinenum","routealias"])),_.merge(b.rpcAgents[b.agentInternal[e.destaccountcode]],_.pick(e,["queue","destconnectedlinenum","routealias"])))},b.onComplete=function(e){b.agents[b.agentInternal[e.destaccountcode]]&&(b.agents[b.agentInternal[e.destaccountcode]]=_.omit(b.agents[b.agentInternal[e.destaccountcode]],["queue","destconnectedlinenum"]),b.rpcAgents[b.agentInternal[e.destaccountcode]]=_.omit(b.rpcAgents[b.agentInternal[e.destaccountcode]],["queue","destconnectedlinenum"]))},b.screenRecording=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:"api.user.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},c.on("user:save",b.onSave),c.on("user:update",b.onUpdate),c.on("user:agentconnect",b.onConnect),c.on("user:agentcomplete",b.onComplete),T();var S=f(function(){b.load&&(b.load=!1,T())},999);function T(e){b.load=!1;var n,t,a=o.defer();b.promise=a.promise,b.filteredAgents=[],b.order=[],_.forIn(b.agents,function(e,n){b.rpcAgents[n]&&_.merge(e,_.pick(_.omit(b.rpcAgents[n],E),A)),w(e),e.online?(b.filteredAgents.push(e),b.agentInternal[e.internal]=n):e.globalStatusTime=_.toNumber(moment().format("x"))}),b.query.globalStatusFilter&&_.remove(b.filteredAgents,function(e){return e.globalStatus!==b.query.globalStatusFilter}),b.query.pauseTypeFilter&&_.remove(b.filteredAgents,function(e){return e.pauseType!==b.query.pauseTypeFilter}),b.query.filter&&_.remove(b.filteredAgents,function(e){return e.fullname.toLowerCase().indexOf(b.query.filter.toLowerCase())<0}),b.filteredAgents=(n=b.filteredAgents,t=_.startsWith(b.query.order,"-")?"desc":"asc",_.orderBy(n,[b.query.order.replace("-","")],[t]));var i=(b.query.page-1)*b.query.limit;b.paginatedAgents=_.drop(b.filteredAgents,i).slice(0,b.query.limit);for(var s=0;s<b.paginatedAgents.length;s+=1)b.order.push(b.paginatedAgents[s].id);a.resolve(),b.load=!0}function I(e){return"pause"===e||"*pause"===e}function C(e){return"idle"===e||"unknown"===e||"unavailable"===e||"ringing"===e||_.isNil(e)}function O(e,n){return"voice"===n?"idle"!==e[n+"Status"]?e[n+"Status"]:e[n+"Pause"]?e[n+"Status"]="pause":"idle":e[n+"Pause"]?e[n+"Status"]="pause":e[n+"Status"]}function w(e){var n="unknown";n=_.every([O(e,"voice"),O(e,"chat"),O(e,"mail"),O(e,"openchannel"),O(e,"sms"),O(e,"whatsapp"),O(e,"fax")],I)?"pause":_.some([O(e,"voice"),O(e,"chat"),O(e,"mail"),O(e,"openchannel"),O(e,"sms"),O(e,"whatsapp"),O(e,"fax")],I)?"*pause":_.every([O(e,"voice"),O(e,"chat"),O(e,"mail"),O(e,"openchannel"),O(e,"sms"),O(e,"whatsapp"),O(e,"fax")],C)?"idle":"busy",e.globalStatus!==n&&(e.globalStatus=n,e.init?(e.init=!1,e.globalStatusTime=I(n)?_.toNumber(moment(e.lastPauseAt).format("x")):_.max([e.voiceStatusTime,e.chatStatusTime,e.mailStatusTime,e.smsStatusTime,e.whatsappStatusTime,e.openchannelStatusTime,e.faxStatusTime])):e.globalStatusTime=_.toNumber(moment().format("x")))}e.$on("$destroy",function(){c.removeAllListeners("user:save"),c.removeAllListeners("user:update"),c.removeAllListeners("user:agentconnect"),c.removeAllListeners("user:agentcomplete"),S&&(f.cancel(S),S=null)})}e.$inject=["$scope","$q","$timeout","$mdDialog","$document","$filter","pauses","agents","rpcAgents","api","socket","toasty","helperClasses","userProfile","userProfileSection","Auth","license","$interval"],angular.module("app.voice").controller("AgentsChatRealtimeController",e)}(),function(){"use strict";function e(e,t,a,n,i,s,o,r,l,d,c){var m=this,u=["loggedIn","available","waiting","paused"],p=n(function(){},999);m.currentUser=c.getCurrentUser(),m.queues=i,m.userProfileSection=d&&1==d.count?d.rows[0]:null,m.crudPermissions=c.parseCrudPermissions(m.userProfileSection?m.userProfileSection.crudPermissions:null),m.query={id:c.isUser()?m.currentUser.id:void 0,section:c.isUser()?"ChatQueues":void 0,channel:"chat",sort:"name",limit:10,page:1},m.getQueues=function(){m.query.offset=(m.query.page-1)*m.query.limit,s.realtime.getQueues(m.query).$promise.then(function(e){m.queues=e}).catch(function(e){console.error(e)})},m.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:m.queues.rows,license:null,setting:null,crudPermissions:m.crudPermissions}})},m.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:m.queues.rows,realtime:!1,crudPermissions:m.crudPermissions}})},o.on("chat_queue:save",function(e){var n=_.find(m.queues.rows,["id",e.id]);n&&_.merge(n,_.pick(e,u))}),o.on("userChatQueue:save",function(e){var n=_.find(m.queues.rows,["id",e.ChatQueueId]);n&&(n.loggedInDb++,n.agents.push({id:e.UserId}))}),o.on("userChatQueue:remove",function(e){var n=_.find(m.queues.rows,["id",e.ChatQueueId]);n&&(0<n.loggedInDb&&n.loggedInDb--,_.remove(n.agents,["id",e.UserId]))}),o.on("user:update",function(t){m.queues.rows.forEach(function(e){var n=_.find(e.agents,["id",t.id]);n&&(!1===t.online?(n.online=!1,e.loggedInDb-=1,n.paused?(n.paused=!1,e.paused-=1):e.available-=1):n.online?t.chatPause?(n.paused=!0,e.paused+=1,e.available-=1):!t.chatPause&&n.paused&&(n.paused=!1,e.paused-=1,e.available+=1):(n.online=!0,e.loggedInDb+=1,e.available+=1))})}),e.$on("$destroy",function(){o.removeAllListeners("chat_queue:save"),o.removeAllListeners("userChatQueue:remove"),o.removeAllListeners("userChatQueue:save"),o.removeAllListeners("user:update"),p&&n.cancel(p)})}e.$inject=["$scope","$mdDialog","$document","$interval","queues","api","socket","toasty","userProfile","userProfileSection","Auth"],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(n.disconnect(),n.connect(),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,_.pick(e.toJSON(),_.keys(n))),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(){C(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=C,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){C(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.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 C(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,a,e,n,i,s,o,r,l,d){var c=this;function m(){t.hide()}c.errors=[],c.title="CONTACTMANAGER.EDIT_CONTACT",c.crudPermissions=d,c.contact=angular.copy(s),c.contacts=e||{rows:[],count:0},c.lists=n||{rows:[],count:0},c.companies=i||{rows:[],count:0},c.customFields={rows:[],count:0},c.newContact=!1,c.contact?(delete c.contact.List,c.ListId=c.contact.ListId||void 0):(c.contact={ListId:o?parseInt(o,10):void 0,CompanyId:r?parseInt(r,10):void 0},c.title="CONTACTMANAGER.NEW_CONTACT",c.newContact=!0),c.addNewContact=function(){c.errors=[],l.cmContact.save(c.contact).$promise.then(function(e){c.contacts.unshift(e),a.success({title:"Contact properly created",msg:c.contact.name?c.contact.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.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()})})},c.saveContact=function(){c.errors=[],l.cmContact.update({id:c.contact.id},c.contact).$promise.then(function(e){var n=_.find(c.contacts,{id:e.id});n&&_.merge(n,e),a.success({title:"Contact properly saved!",msg:c.contact.name?c.contact.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.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()})})},c.deleteContact=function(e){c.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(){l.cmContact.delete({id:c.contact.id}).$promise.then(function(){_.remove(c.contacts,{id:c.contact.id}),a.success({title:"Contact properly deleted!",msg:c.contact.name?c.contact.name+" has been deleted!":""}),m()}).catch(function(e){console.error(e),c.errors=e.data.errors||[{message:e.toString(),type:"api.contact.delete"}]})},function(){})},c.closeDialog=m,c.getCustomFields=function(e){{if(e)return l.cmList.getCustomFields({id:e}).$promise.then(function(e){if(e){c.customFields=e;var n=_.map(c.customFields.rows,function(e){return"cf_"+e.id});l.cmContact.get({id:c.contact.id,attributes:n,raw:!0}).$promise.then(function(e){c.contact=_.merge(c.contact,e)})}}).catch(function(e){console.error(e)});c.customFields={rows:[],count:0}}},c.getDateFromString=function(e){return null===e?void 0:new Date(e)}}e.$inject=["$mdDialog","toasty","contacts","lists","companies","contact","ListId","CompanyId","api","crudPermissions"],angular.module("app.tools").controller("CreateOrEditContactDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s){var o=this;function r(){e.hide()}o.errors=[],o.title="CONTACTMANAGER.COPY_CONTACT",o.contact=angular.copy(t),o.lists=i||{rows:[],count:0},o.addNewContact=function(){o.errors=[],delete o.contact.id,o.contact.tags&&!o.contact.tags.length&&delete o.contact.tags;s.cmContact.save(o.contact).$promise.then(function(e){a.unshift(e),n.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(e,t,n,a,i,s,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 C(){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 O(){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.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=n.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")}).finally(function(){S.contact&&w()})},S.gotoContacts=function(){n.go("app.contactmanager.contacts",{},{reload:!0,notify:!0})},S.duplicateContact=function(e){i.show({controller:"DuplicateContactDialogController",controllerAs:"vm",templateUrl:"app/main/apps/contactmanager/views/contacts/duplicate/dialog.html",parent:angular.element(a.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}).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});i.show({controller:"CreateOrEditCompanyDialogController",controllerAs:"vm",templateUrl:"app/main/apps/contactmanager/views/companies/create/dialog.html",parent:angular.element(a.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=i.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 i.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=C,S.getHistories=O,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=i.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");i.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){i.show({controller:"CreateOrEditHopperVoiceQueueIdDialogController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/queueCampaigns/edit/hoppers/dialog.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{hopper:n,hoppers:S.hoppers.rows,license:null,setting:null,crudPermissions:S.crudPermissions}})},S.createOrEditIvrCampaignHopper=function(e,n){i.show({controller:"CreateOrEditHopperCampaignIdDialogController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/ivrCampaigns/edit/hoppers/dialog.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{hopper:n,hoppers:S.hoppers.rows,license:null,setting:null,crudPermissions:S.crudPermissions}})},S.getCustomerJourney=w,S.loadMoreJourney=function(){return s(function(e,n){var t=S.journey.length;return e(w(t))})};var R=!0,x=1;e.$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())}),e.$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),C())}),e.$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),O())})}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)}(),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}],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(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,_.pick(e.toJSON(),_.keys(n))),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,_.pick(e.toJSON(),_.keys(n))),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,_.pick(e.toJSON(),_.keys(n))),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){var d=this;d.currentUser=s.getCurrentUser(),d.userProfile=r,d.userProfileSection=l&&1==l.count?l.rows[0]:null,d.crudPermissions=s.parseCrudPermissions(d.userProfileSection?d.userProfileSection.crudPermissions:null),d.customDashboard={},d.voiceQueues=o&&o.count?o:{count:0,rows:[]},d.voiceQueuesSelected=o&&o.count?_.map(o.rows,"id"):[],d.interval=n(function(){},1e3),d.onChangeVoiceQueues=function(){for(var e=0;e<d.customDashboard.widgets.length;e+=1)d.customDashboard.widgets[e].voiceQueuesSelected=d.voiceQueuesSelected},d.goToEdit=function(){e.go("app.tools.customDashboards.edit",{id:d.customDashboard.id,tab:1})},i.onWithoutApply("voice_queue:save",function(e){var n=_.find(d.voiceQueues.rows,{id:e.id});n&&_.merge(n,_.pick(e,_.keys(n)))}),a.dashboard.get({id:e.params.id}).$promise.then(function(e){if(e)return d.customDashboard=e,d.customDashboard.widgets=[],d.customDashboard.preview=!0,d.customDashboard.draggable={enabled:!1},d.customDashboard.resizable={enabled:!1},a.dashboard.getItems({id:d.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=d.voiceQueues,e.rows[n].voiceQueuesSelected=d.voiceQueuesSelected,d.customDashboard.widgets.push(e.rows[n])}).catch(function(e){d.customDashboard=void 0}),t.$on("$destroy",function(){i.removeAllListeners("voice_queue:save"),d.interval&&n.cancel(d.interval)})}e.$inject=["$state","$interval","$scope","api","socket","Auth","voiceQueues","userProfile","userProfileSection"],angular.module("app.dashboards.custom").controller("DashboardCustomController",e)}(),function(){"use strict";function e(e,i,s,o,r,l,n,d,t,a,c,m,u,p,g,v,h,f,b){var A=this;function E(e){var n={};for(var t in A.tabs)A.tabs.hasOwnProperty(t)&&(n[t]=_.pick(A.tabs[t],["type","title","channel","icon","color","autoCreate","id","saved","badges","openedAt"]),_.isNil(A.tabs[t].contact)||(n[t].contact=_.pick(A.tabs[t].contact,["id","ListId"])),_.isNil(A.tabs[t].calls)||(n[t].calls=A.tabs[t].calls),A.tabs[t].interaction&&(n[t].interaction=_.pick(A.tabs[t].interaction,["id","OpenchannelAccountId","MailAccountId","ChatWebsiteId","FaxAccountId","SmsAccountId","WhatsappAccountId","closed","draft"])));var a=JSON.parse(s.localStorage.getItem("motion2.user:"+A.user.id));a?(a.tabs=n,a.currentTab=A.currentTab,a.autoClose=A.autoClose):a={tabs:n,currentTab:A.currentTab,autoClose:A.autoClose},s.localStorage.setItem("motion2.user:"+A.user.id,JSON.stringify(a)),e&&y(e)}function y(e){if(_.isNil(e)||e&&"interaction"===e.type){var n={id:A.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 A.tabs)A.tabs.hasOwnProperty(t)&&n.capacity.hasOwnProperty(A.tabs[t].channel)&&A.tabs[t].interaction&&!A.tabs[t].interaction.closed&&(n.capacity[A.tabs[t].channel]+=1,n.interaction[A.tabs[t].channel].push(A.tabs[t].interaction.id));if(!_.isEqual(A.agentCapacity,n.capacity))return A.agentCapacity=n.capacity,d.rpc.setAgentCapacity(n)}}function S(e){A.tabs[e.id]&&(!function(e){if(e.channel&&e.interaction)d.user["remove"+_.upperFirst(e.channel)+"Interactions"]({id:A.user.id,ids:[e.interaction.id]}).$promise.catch(function(e){console.error(e)})}(A.tabs[e.id]),delete A.tabs[e.id],A.currentTab=0,E(e))}function T(e){e.id=_.random(1e10),e.openedAt=(new Date).toISOString(),e.saved=!1,e.badges=0,A.tabs[e.id]=e,A.currentTab=e.id,E(e)}function I(n){return _.find(A.tabs,function(e){return"interaction"===e.type&&e.interaction&&e.interaction.id==n.interactionId&&e.channel==n.channel})}function C(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=A.user.privacyEnabled?b.mask(a):a):o.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)&&N(t)),n){var s=_.find(A.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 d.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];A.currentTab=s.id})}else{if(n.ListId)return d.disposition.get({ListId:n.ListId,nolimit:!0}).$promise.then(function(e){return i.dispositions=e,d.cmList.getCustomFields({id:n.ListId,nolimit:!0}).$promise}).then(function(e){i.customFields=e}).catch(D()).finally(function(){T(i)});T(i)}}else T(i)}function O(n,t){var e=_.find(A.tabs,function(e){return"interaction"===e.type&&e.interaction&&e.interaction.id===t.id&&e.channel===n});e?(e.isDraft=t.isDraft||!1,A.currentTab=e.id):T(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 w(e){e&&e.uniqueid&&A.notifications[e.uniqueid]&&(a.clear(A.notifications[e.uniqueid]),delete A.notifications[e.uniqueid])}function R(n){var t=n.uniqueid;for(var e in console.debug("onVoiceChannelRemove -> evt",n),A.tabs)if(A.tabs.hasOwnProperty(e)){var a=A.tabs[e];if(a.calls){console.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?(console.debug("Allowing disposition for call %s",a.calls[i].uniqueid),N(a.calls[i])):console.debug("Call %s not found or already completed",a.calls[i].uniqueid),a.contact&&a.contact.id&&l(x(t,a.contact.id,a),1e3)}}E()}function x(n,e,t){return function(){if(_.find(t.calls,function(e){return e.uniqueid===n}))return d.voiceCallReport.update({id:n,ContactId:e}).$promise.catch(function(e){console.error(e)})}}function N(e){e.disposedAt=new Date}function D(){return function(e){if(404===e.status)a.warning({title:o.instant("DASHBOARDS.ATTENTION"),msg:o.instant("DASHBOARDS.ACCEPT_ELSEWHERE")});else if(e.data&&e.data.errors&&e.data.errors.length){A.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()})}}A.license=g,A.setting=v,A.detectBrowser=f.detectBrowser(),A.user=n.getCurrentUser(),A.currentTab=0,A.notifications={},A.tabs={},A.agentCapacity={},A.autoClose=!1,A.globalUserLists=c||{count:0,rows:[]},A.globalLists=m||{count:0,rows:[]},A.globalCompanies=u||{count:0,rows:[]},A.globalTags=p||{count:0,rows:[]},A.onClickTab=function(e){A.currentTab=e,E(A.tabs[e])},A.isActiveTab=function(e){return e===A.currentTab},A.alreadyExistsTab=I,A.addContactTab=C,A.addInteractionTab=O,A.addTab=T,A.removeTab=S,A.updateLocalStorage=E,A.closeTab=function(e){var n=i.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 t=A.user.voicePause||A.user.chatPause||A.user.mailPause||A.user.openchannelPause||A.user.faxPause,a=!1;return"interaction"===e.type&&(a=e.interaction.Account.mandatoryDisposition),i.show(n).then(function(){"interaction"===e.type&&i.show({controller:"DisposeInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/dispose/dialog.html",parent:angular.element(r.body),onRemoving:function(e,n){A.user&&a&&!t&&d.user.unpause({id:A.user.id}).$promise.catch(function(e){console.error(e)})},clickOutsideToClose:!a,escapeToClose:!a,locals:{user:A.user,channel:e.channel,interaction:e.interaction}}),S(e)}).catch(function(){"interaction"===e.type&&S(e)})}var a=!1;if(_.forEach(e.calls,function(e){e.mandatoryDisposition&&(a=!0)}),"contact"===e.type&&0<e.calls.length){if(!a)return n._options.textContent="There is a call that hasn't been disposed yet.",i.show(n).then(function(){S(e)});alert=i.alert().title("Warning").textContent("There is a call that hasn't been disposed yet.").ok("OK"),i.show(alert).finally(function(){alert=void 0})}else S(e)}},t.on("trigger:contactmanager",function(n){if(!_.isNil(n.contacts)&&1===n.contacts.length)return void C(n.contact,n.evt);i.show({controller:"ContactSelectionController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/contact/selection/dialog.html",parent:angular.element(r.body),locals:{contacts:n.contacts,callNumber:n.evt.routeId?n.evt.destcalleridnum:n.evt.calleridnum}}).then(function(e){C(e,n.evt)})}),t.on("trigger:jscripty",function(t){return d.jscriptyProject.get({id:t.ProjectId}).$promise.then(function(n){if(n){if(!_.isUndefined(t["xmd-contactid"]))return d.cmContact.get({id:t["xmd-contactid"]}).$promise.then(function(e){try{n.formData=Mustache.render(n.formData,_.merge(t,{user:A.user,contact:e}))}catch(e){console.error(e)}T({type:"jscripty",title:n.name,icon:"icon-script",color:"grey",project:n,call:t,contact:e})}).catch(D());try{n.formData=Mustache.render(n.formData,_.merge(t,{user:A.user}))}catch(e){console.error(e)}T({type:"jscripty",title:n.name,icon:"icon-script",color:"grey",project:n,call:t})}}).catch(D())}),t.on("trigger:bot",function(n){var t=n.calleridname&&"<unknown>"!==n.calleridname?n.calleridname:n.calleridnum,a=n.calleridnum;return d.squareMessage.get({fields:"id",limit:1,offset:0,uniqueid:n.uniqueid}).$promise.then(function(e){e.count&&T({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":s.open(e.uri);break;case"1":s.open(e.uri,"_blank","width="+(e.windowWidth||"800")+",height="+e.windowHeight||"600");break;case"2":var n={type:"iframe",title:e.uri,icon:"icon-google-earth",color:"blue",src:e.uri};T(n);break;default:s.open(e.uri)}else s.open(e.uri)}),t.on("trigger:browser:popup",function(e){e&&e.html&&T({type:"popup",title:e.calleridnum||"popup",icon:"icon-tablet",color:"grey",html:e.html})}),t.on("notification:save",function(e){if(e&&e.uniqueid){t=e,h.isSupported()?h.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},h.show(e.title,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.");var n=I(e);if(n){if(d[e.channel+"Message"])return A.currentTab!==n.id&&(n.badges+=1),d[e.channel+"Message"].accept({id:e.id,UserId:A.user.id}).$promise.catch(D())}else a.wait({title:e.title,msg:e.msg||"",showClose:!1,clickToClose:!1,timeout:!1,sound:e.sound,html:!0,shake:e.shake||!1,onAdd:function(){A.notifications[e.uniqueid]=this.id},onAccept:function(){if(w(e),d[e.channel+"Message"])return d[e.channel+"Message"].accept({id:e.id,UserId:A.user.id,manual:!0}).$promise.then(function(e){O(e.channel,e.interaction),a.success({title:"Message properly accepted!",msg:"Message has been accepted!"})}).catch(D())},onReject:function(){if(w(e),d[e.channel+"Message"])return d[e.channel+"Message"].reject({id:e.id,UserId:A.user.id}).$promise.then(function(e){a.success({title:"Message properly rejected!",msg:"Message has been rejected!"})}).catch(D())}})}var t}),t.on("notification:remove",w),t.on("voice_queue_channel:remove",R),t.on("voice_outbound_channel:remove",R),function(){var e=s.localStorage.getItem("motion2.user:"+A.user.id);if(e)try{e=JSON.parse(e),A.tabs=e.tabs?e.tabs:{},A.currentTab=e.currentTab?e.currentTab:0,A.autoClose=!!e.autoClose&&e.autoClose,y(A.tabs[A.currentTab])}catch(e){console.error(e)}}(),e.$on("$destroy",function(){for(var e in A.notifications)A.notifications.hasOwnProperty(e)&&w({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")})}e.$inject=["$scope","$mdDialog","$window","$translate","$document","$timeout","Auth","api","socket","toasty","globalUserLists","globalLists","globalCompanies","globalTags","license","setting","desktopNotification","msUtils","privacyManager"],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,n,l){var g=this;function v(){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 h(n){return function(e){g[n]=e||{count:0,rows:[]}}}function f(){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,h("hoppers")).$promise)}function b(){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,h("finals")).$promise)}function A(){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,h("histories")).$promise)}function E(e){return null===e?void 0:new Date(e)}function y(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})}g.user=s.getCurrentUser(),g.detectBrowser=e.detectBrowser(),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=v,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(){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(e,n){g.user&&i.mandatoryDisposition&&u.user.unpause({id:g.user.id}).$promise.catch(function(e){console.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=E,g.addJscriptyTab=function(e){try{e.formData=Mustache.render(e.formData,{contact:g.contact,user:g.user})}catch(e){console.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=f,g.getFinals=b,g.getHistories=A,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(e,n){g.user&&r.mandatoryDisposition&&!i&&u.user.unpause({id:g.user.id}).$promise.catch(function(e){console.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){}f(),b(),A()}).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?v():void 0}).finally(function(){g.contact&&g.contact.id&&(y(),g.contact.dateOfBirth=E(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=y,g.loadMoreJourney=function(){return i(function(e,n){var t=g.journey.length;return e(y(t))})},m.$on("$destroy",function(){}),m.$watch("currentTab",function(e,n){1===g.currentTab&&(f(),b(),A())});var S=!0,T=1;m.$watch("queryHopper.filter",function(e,n){S?t(function(){S=!1}):(n||(T=g.queryHopper.page),e!==n&&(g.queryHopper.page=1),e||(g.queryHopper.page=T),f())}),m.$watch("queryFinal.filter",function(e,n){S?t(function(){S=!1}):(n||(T=g.queryFinal.page),e!==n&&(g.queryFinal.page=1),e||(g.queryFinal.page=T),b())}),m.$watch("queryHistory.filter",function(e,n){S?t(function(){S=!1}):(n||(T=g.queryHistory.page),e!==n&&(g.queryHistory.page=1),e||(g.queryHistory.page=T),A())})}e.$inject=["$window","$mdDialog","$document","$timeout","$scope","$q","api","toasty","Auth","$translate","msUtils","customerJourneyManager","draftManager","privacyManager"],angular.module("app.dashboards").controller("AgentGeneralContactController",e)}(),function(){"use strict";function e(n,i,s,o,e,t,a,r,l,d,c,m){var u=this;function p(){var e=u.selectedDisposition?u.selectedDisposition.name.toLowerCase():void 0;return{id:u.call.uniqueid,disposition:u.firstLevelDisposition?u.firstLevelDisposition.name:null,secondDisposition:u.secondLevelDisposition?u.secondLevelDisposition.name:null,thirdDisposition:u.thirdLevelDisposition?u.thirdLevelDisposition.name:null,dispositionat:moment(),amd:"amd"===e,fax:"fax"===e,blacklist:"blacklist"===e,recallme:"recallme"===e,UserId:"recallme"===e?l.getCurrentUser().id:null,OwnerId:l.getCurrentUser().id}}function g(e){n.hide([e,u.autoClose])}u.isReschedule=!1,u.recallme=!1,u.queueCampaign=void 0,u.queueCampaigns={count:0,rows:[]},u.dispositions=_.orderBy(_.concat([],e.rows,t.rows),["name"],["asc"]),u.contact=r,u.call=a,u.note=u.call.note||void 0,u.dialerCall=!1,u.hasBlackLists=!1,u.availableCalls=c,u.autoClose=m,u.hopper={minDate:new Date,dateTime:new Date},u.call&&u.call.variables&&u.call.variables["xmd-voicequeueid"]?(u.dialerCall=!0,o.voiceQueue.getBlackLists({id:u.call.variables["xmd-voicequeueid"]}).$promise.then(function(e){e&&e.rows&&0<e.rows.length&&(u.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()})})):o.user.getQueues({id:l.getCurrentUser().id,fields:"id,name,dialActive",channel:"voice",type:"outbound",nolimit:!0}).$promise.then(function(e){u.queueCampaigns=e||{count:0,rows:[]}}).catch(function(e){console.error(e)}),u.onDispositionChange=function(e){switch(e){case"first":u.selectedDisposition=u.firstLevelDisposition,u.anySecondLevelDisposition=_.some(u.dispositions,["ParentId",u.firstLevelDisposition.id]),u.secondLevelDisposition=void 0,u.thirdLevelDisposition=void 0,u.anyThirdLevelDisposition=!1;break;case"second":u.selectedDisposition=u.secondLevelDisposition,u.anyThirdLevelDisposition=_.some(u.dispositions,["ParentId",u.secondLevelDisposition.id]);break;case"third":u.selectedDisposition=u.thirdLevelDisposition}},u.clearDispositionSelection=function(e){"second"===e?(u.secondLevelDisposition=void 0,u.thirdLevelDisposition=void 0,u.selectedDisposition=u.firstLevelDisposition):"third"===e&&(u.thirdLevelDisposition=void 0,u.selectedDisposition=u.secondLevelDisposition)},u.saveDisposition=function(e){u.selectedDisposition=_.isNil(e)?u.selectedDisposition:{name:e},e&&(u.firstLevelDisposition=u.selectedDisposition);u.call.note=u.note,o.voiceCallReport.update({id:u.call.uniqueid,userDisposition:u.firstLevelDisposition?u.firstLevelDisposition.name:null,userSecondDisposition:u.secondLevelDisposition?u.secondLevelDisposition.name:null,userThirdDisposition:u.thirdLevelDisposition?u.thirdLevelDisposition.name:null,note:u.note,UserId:l.getCurrentUser().id,ContactId:u.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:u.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:u.firstLevelDisposition?u.firstLevelDisposition.name:null,userSecondDisposition:u.secondLevelDisposition?u.secondLevelDisposition.name:null,userThirdDisposition:u.thirdLevelDisposition?u.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()})}),u.dialerCall&&(o.cmHopperFinal.update(p()).$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(p()).$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(u.selectedDisposition))g(u.selectedDisposition?u.selectedDisposition.name.toUpperCase():"");else switch(u.selectedDisposition.name.toLowerCase()){case"blacklist":u.call&&u.call.variables&&u.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(u.contact);delete a.id,a.ListId=e.rows[t].id,n.push(o.cmContact.save(a).$promise)}return i.all(n)}s.success({title:d.instant("DASHBOARDS.INFO"),msg:d.instant("DASHBOARDS.NOTAVAILABLE")+" "+u.selectedDisposition}),u.selectedDisposition=void 0}).then(function(e){e&&g(u.selectedDisposition?u.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()}),g(u.selectedDisposition?u.selectedDisposition.name.toUpperCase():"")})}(u.call.variables["xmd-voicequeueid"]);break;case"reschedule":u.isReschedule=!0,u.recallme=!1;break;case"recallme":u.isReschedule=!0,u.recallme=!0;break;default:g(u.selectedDisposition?u.selectedDisposition.name.toUpperCase():"")}},u.closeDialog=function(){n.cancel()},u.saveReschedule=function(){return u.disable=!0,o.cmHopper.save({phone:u.contact.phone,UserId:u.recallme?l.getCurrentUser().id:null,ContactId:u.contact.id,ListId:u.contact.ListId,VoiceQueueId:u.dialerCall?Number(u.call["xmd-voicequeueid"]):u.queueCampaign?u.queueCampaign.id:null,scheduledat:moment(u.hopper.dateTime).format("YYYY-MM-DD HH:mm:ss"),priority:3,recallme:u.recallme,OwnerId:l.getCurrentUser().id}).$promise.then(function(){u.dialerCall&&o.cmHopperFinal.update({id:u.call.uniqueid,rescheduled:!0,rescheduledat:moment(u.hopper.dateTime).format("YYYY-MM-DD HH:mm:ss"),recallme:u.recallme}).$promise.catch(function(e){console.log(e)})}).then(function(){s.success({title:d.instant("DASHBOARDS.INFO"),msg:d.instant("DASHBOARDS.CALL_DISPOSED")+" "+(u.recallme?d.instant("DASHBOARDS.RECALLME"):d.instant("DASHBOARDS.RESCHEDULE"))})}).catch(function(e){g(u.selectedDisposition?u.selectedDisposition.name.toUpperCase():"")}).finally(function(){u.disable=!1,g(u.selectedDisposition?u.selectedDisposition.name.toUpperCase():"")})}}e.$inject=["$mdDialog","$q","toasty","api","dispositions","globalDispositions","call","contact","Auth","$translate","availableCalls","autoClose"],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};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};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;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)},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,r,e,l,d){var c=this;function m(e){!c.reloadingInteractions&&0<c.setting.chatInteractionsReloadTimeout&&A(!0),c.searchInProgress=!1,c.reloadingInteractions=!1,c.chatInteractions=e||{count:0,rows:[]};for(var n=0;n<c.chatInteractions.rows.length;n+=1)p(c.chatInteractions.rows[n])}function u(e,n){c.searchInProgress=!0,e||(c.query.page=1),c.query.offset=(c.query.page-1)*c.query.limit;var t=a.localStorage.getItem("motion2.home.chat:"+c.user.id);(t=t?JSON.parse(t):{}).query=c.query,a.localStorage.setItem("motion2.home.chat:"+c.user.id,JSON.stringify(t)),c.promise=r.chatInteraction.get(c.query,m).$promise}function p(e){"Unknown"===e.contactName&&(e.contactName=o.instant("DASHBOARDS.UNKNOWN"))}function g(e){var n=_.find(c.chatInteractions.rows,{id:e.ChatInteractionId});n&&n.Users&&(_.find(n.Users,{id:e.UserId})||n.Users.push({id:e.UserId}))}function v(e){var n=_.find(c.chatInteractions.rows,{id:e.ChatInteractionId});n&&n.Users&&_.remove(n.Users,{id:e.UserId})}function h(e){if(e){var n=_.find(c.chatInteractions.rows,{id:e.id});if(n){if(n.Users=[],e.closed&&(n.unreadMessages=0),c.query.sort){var t=_.startsWith(c.query.sort,"-")?"desc":"asc";c.chatInteractions.rows=_.orderBy(c.chatInteractions.rows,_.trimStart(c.query.sort,"-"),t)}_.merge(n,_.pick(e,_.keys(n)))}else 0===c.setting.chatInteractionsReloadTimeout&&u(c.query.page)}}function f(e){if(e){var n=_.find(c.chatInteractions.rows,{id:e.id});n&&(n.Tags=e.tags||[],_.merge(n,_.pick(e,_.keys(n))))}}function b(e){if(e&&!e.secret){var n=_.find(c.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 A(e){e&&c.interactionsInterval&&n.cancel(c.interactionsInterval),c.interactionsInterval=n(function(){c.reloadingInteractions=!0,c.searchInProgress||u()},1e3*c.setting.chatInteractionsReloadTimeout)}c.user=e.getCurrentUser(),c.license={},c.setting={},c.tags={count:0,rows:[]},c.chatInteractions={count:0,rows:[]},c.query={includeAll:!0,sort:"-updatedAt",limit:10,page:1,read:null,closed:null},c.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:c.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"]}}]},c.sectionColor="green-A700",c.onInit=function(e,n){return c.license=e,c.setting=n,r.user["get"+_.upperFirst("ChatWebsites")]({id:c.user.id,nolimit:!0}).$promise.then(function(e){return c.chatAccounts=e||{count:0,rows:[]},r.tag.get({sort:"name"}).$promise}).then(function(e){c.tags=e||{count:0,rows:[]}}).then(function(){c.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:c.chatAccounts.rows,clearAll:!1},{name:"Agent",key:"UserId",type:"select",label:"DASHBOARDS.SELECT_AGENT",customOptions:[{value:c.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:c.tags.rows,placeholder:"DASHBOARDS.TAGS"}]}).catch(function(e){console.error(e)}).finally(function(){var e=a.localStorage.getItem("motion2.home.chat:"+c.user.id);if(e)try{(e=JSON.parse(e)).query&&(c.query=_.merge(c.query,e.query),_.isEmpty(c.chatAccounts.rows)?c.query.ChatWebsiteId=[]:_.isEmpty(c.query.ChatWebsiteId)&&(c.query.ChatWebsiteId=_(c.chatAccounts.rows).map("id").take().value()),c.query.sort&&0<=c.query.sort.indexOf("lastMessage")&&(c.query=_.omit(c.query,"sort")),c.query.includeAll=!0,c.isSearchBarVisible=!(c.query.search||!c.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()},t={ChatWebsiteId:_.map(c.chatAccounts.rows,"id"),createdAt:n};c.query=_.merge(c.query,t)}l.on("chatInteraction:save",h),l.on("chatInteraction:update",h),l.on("chatInteractionTags:save",f),l.on("chatMessage:save",b),l.on("chatMessage:update",b),l.on("user_has_chat_interactions:save",g),l.on("user_has_chat_interactions:remove",v),u(c.query.page),0<c.setting.chatInteractionsReloadTimeout&&A()})},c.success=m,c.getChatInteractions=u,c.showChatInteraction=function(e,n){t.$parent.vm.addInteractionTab("chat",n)},c.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)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:"downloadChatInteraction",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},c.disposeInteraction=function(e,t){var a=c.user.voicePause||c.user.chatPause||c.user.mailPause||c.user.openchannelPause||c.user.faxPause,n=!t.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:n,escapeToClose:n,onRemoving:function(e,n){c.user&&t.Account.mandatoryDisposition&&!a&&r.user.unpause({id:c.user.id}).$promise.catch(function(e){console.error(e)})},locals:{user:c.user,channel:"chat",interaction:t}})},c.getContactLabel=p,c.getAgentLabel=function(e){if(e.UserId)return e.UserId===c.user.id?o.instant("DASHBOARDS.ME"):e.Owner.fullname+" <"+e.Owner.internal+">";return o.instant("DASHBOARDS.NOT_ASSIGNED")},c.getChatWebsiteLabel=function(e){if(e.Account)return e.Account.key;return o.instant("DASHBOARDS.UNKNOWN")},c.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:c.sectionColor,fields:c.advancedSearch.fields,storagePath:"home.chat"},fullscreen:!0}).then(function(e){c.isSearchBarVisible=!(e.value||!c.query.filter),e.apply&&(c.query.search=e.value,u())}).catch(function(e){d.error({title:"ERROR",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},t.$on("$destroy",function(){l.removeAllListeners("chatMessage:save"),l.removeAllListeners("chatMessage:update"),l.removeAllListeners("chatInteraction:save"),l.removeAllListeners("chatInteractionTags:save"),l.removeAllListeners("chatInteraction:update"),l.removeAllListeners("user_has_chat_interactions:save"),l.removeAllListeners("user_has_chat_interactions:remove"),c.interactionsInterval&&n.cancel(c.interactionsInterval)})}e.$inject=["$scope","$interval","$mdDialog","$document","$window","$translate","api","Auth","socket","toasty"],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(i,t,s,o,a,n,r,e,l,d,c){var m=this;function u(e){!m.reloadingInteractions&&0<m.setting.faxInteractionsReloadTimeout&&function(e){e&&m.interactionsInterval&&t.cancel(m.interactionsInterval);m.interactionsInterval=t(function(){m.reloadingInteractions=!0,m.searchInProgress||p()},1e3*m.setting.faxInteractionsReloadTimeout)}(!0),m.searchInProgress=!1,m.reloadingInteractions=!1,m.faxInteractions=e||{count:0,rows:[]};for(var n=0;n<m.faxInteractions.rows.length;n+=1)g(m.faxInteractions.rows[n])}function p(e,n){m.searchInProgress=!0,e||(m.query.page=1),m.query.offset=(m.query.page-1)*m.query.limit;var t=a.localStorage.getItem("motion2.home.fax:"+m.user.id);(t=t?JSON.parse(t):{}).query=m.query,a.localStorage.setItem("motion2.home.fax:"+m.user.id,JSON.stringify(t)),m.promise=r.faxInteraction.get(m.query,u).$promise}function g(e){e.contactInfo=e.Contact?e.Contact.fax:void 0,"Unknown"===e.contactName&&(e.contactName=n.instant("DASHBOARDS.UNKNOWN"))}function v(e){var n=_.find(m.faxInteractions.rows,{id:e.FaxInteractionId});n&&n.Users&&(_.find(n.Users,{id:e.UserId})||n.Users.push({id:e.UserId}))}function h(e){var n=_.find(m.faxInteractions.rows,{id:e.FaxInteractionId});n&&n.Users&&_.remove(n.Users,{id:e.UserId})}function f(e){if(e){var n=_.find(m.faxInteractions.rows,{id:e.id});if(n){if(n.Users=[],e.closed&&(n.unreadMessages=0),m.query.sort){var t=_.startsWith(m.query.sort,"-")?"desc":"asc";m.faxInteractions.rows=_.orderBy(m.faxInteractions.rows,_.trimStart(m.query.sort,"-"),t)}_.merge(n,_.pick(e,_.keys(n)))}else p(m.query.page)}}function b(e){if(e){var n=_.find(m.faxInteractions.rows,{id:e.id});n&&(n.Tags=e.tags||[],_.merge(n,_.pick(e,_.keys(n))))}}function A(e){if(e&&!e.secret){var n=_.find(m.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))}}}m.user=e.getCurrentUser(),m.license={},m.setting={},m.tags={count:0,rows:[]},m.faxInteractions={count:0,rows:[]},m.query={includeAll:!0,sort:"-updatedAt",limit:10,page:1,read:null,closed:null},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:"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:m.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"]}}]},m.sectionColor="blue-grey",m.onInit=function(e,n){return m.license=e,m.setting=n,r.user["get"+_.upperFirst("faxAccounts")]({id:m.user.id,nolimit:!0}).$promise.then(function(e){return m.faxAccounts=e||{count:0,rows:[]},r.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:"Account",key:"FaxAccountId",type:"multiselect",label:"DASHBOARDS.SELECT_ACCOUNT",options:m.faxAccounts.rows,clearAll:!1},{name:"Agent",key:"UserId",type:"select",label:"DASHBOARDS.SELECT_AGENT",customOptions:[{value:m.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:m.tags.rows,placeholder:"DASHBOARDS.TAGS"}]}).catch(function(e){console.error(e)}).finally(function(){var e=a.localStorage.getItem("motion2.home.fax:"+m.user.id);if(e)try{(e=JSON.parse(e)).query&&(m.query=_.merge(m.query,e.query),_.isEmpty(m.faxAccounts.rows)?m.query.FaxAccountId=[]:_.isEmpty(m.query.FaxAccountId)&&(m.query.FaxAccountId=_(m.faxAccounts.rows).map("id").take().value()),m.query.sort&&0<=m.query.sort.indexOf("lastMessage")&&(m.query=_.omit(m.query,"sort")),m.query.includeAll=!0,m.isSearchBarVisible=!(m.query.search||!m.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()},t={FaxAccountId:_.map(m.faxAccounts.rows,"id"),createdAt:n};m.query=_.merge(m.query,t)}l.on("faxInteraction:save",f),l.on("faxInteraction:update",f),l.on("faxInteractionTags:save",b),l.on("faxMessage:save",A),l.on("faxMessage:update",A),l.on("user_has_fax_interactions:save",v),l.on("user_has_fax_interactions:remove",h),p(m.query.page)})},m.success=u,m.getFaxInteractions=p,m.showFaxInteraction=function(e,n){i.$parent.vm.addInteractionTab("fax",n)},m.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)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:"downloadFaxInteraction",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},m.disposeInteraction=function(e,t){var a=m.user.voicePause||m.user.chatPause||m.user.mailPause||m.user.openchannelPause||m.user.faxPause,n=!t.Account.mandatoryDisposition;s.show({controller:"DisposeInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/dispose/dialog.html",parent:angular.element(o.body),clickOutsideToClose:n,escapeToClose:n,onRemoving:function(e,n){m.user&&t.Account.mandatoryDisposition&&!a&&r.user.unpause({id:m.user.id}).$promise.catch(function(e){console.error(e)})},locals:{user:m.user,channel:"fax",interaction:t}})},m.getContactLabel=g,m.getAgentLabel=function(e){if(e.UserId)return e.UserId===m.user.id?n.instant("DASHBOARDS.ME"):e.Owner.fullname+" <"+e.Owner.internal+">";return n.instant("DASHBOARDS.NOT_ASSIGNED")},m.getFaxAccountLabel=function(e){if(e.Account)return e.Account.key;return n.instant("DASHBOARDS.UNKNOWN")},m.composeFaxInteraction=function(e,a){s.show({controller:"ComposeFaxInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/compose/fax/dialog.html",parent:angular.element(o.body),clickOutsideToClose:!1,locals:{account:a,message:{},type:"new",interaction:{}},fullscreen:!0}).then(function(e){if(e){if(!e.message||!e.message.savedAsDraft){var n=e;return r.faxAccount.send({id:a.id},n).$promise.then(function(e){d.success({title:"Message properly sent!",msg:"Message has been sent!"}),i.$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()})})}var t={channel:"fax",account:a,message:e.message,contact:e.contact};c.add(t)}})},m.openAdvancedSearch=function(){s.show({controller:"AdvancedSearchController",controllerAs:"vm",templateUrl:"app/core/dialogs/advanced-search/dialog.html",parent:angular.element(o.body),clickOutsideToClose:!1,locals:{color:m.sectionColor,fields:m.advancedSearch.fields,storagePath:"home.fax"},fullscreen:!0}).then(function(e){m.isSearchBarVisible=!(e.value||!m.query.filter),e.apply&&(m.query.search=e.value,p())}).catch(function(e){d.error({title:"ERROR",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},i.$on("$destroy",function(){l.removeAllListeners("faxMessage:save"),l.removeAllListeners("faxMessage:update"),l.removeAllListeners("faxInteraction:save"),l.removeAllListeners("faxInteractionTags:save"),l.removeAllListeners("faxInteraction:update"),l.removeAllListeners("user_has_fax_interactions:save"),l.removeAllListeners("user_has_fax_interactions:remove"),m.interactionsInterval&&t.cancel(m.interactionsInterval)})}e.$inject=["$scope","$interval","$mdDialog","$document","$window","$translate","api","Auth","socket","toasty","draftManager"],angular.module("app.dashboards").controller("AgentHomeFaxController",e)}(),function(){"use strict";function e(o,n,r,l,a,t,d,e,i,c,m){var u=this;function s(e){!u.reloadingInteractions&&0<u.setting.mailInteractionsReloadTimeout&&y(!0),u.searchInProgress=!1,u.reloadingInteractions=!1,u.mailInteractions=e||{count:0,rows:[]};for(var n=0;n<u.mailInteractions.rows.length;n+=1)v(u.mailInteractions.rows[n])}function p(e,n){u.searchInProgress=!0,e||(u.query.page=1),(void 0===u.query.closed||null===u.query.closed||u.query.closed)&&delete u.query.substatus,u.query.offset=(u.query.page-1)*u.query.limit;var t=a.localStorage.getItem("motion2.home.mail:"+u.user.id);(t=t?JSON.parse(t):{}).query=u.query,a.localStorage.setItem("motion2.home.mail:"+u.user.id,JSON.stringify(t)),u.promise=d.mailInteraction.get(u.query,s).$promise}function g(e,n){o.$parent.vm.addInteractionTab("mail",n)}function v(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 h(e){var n=_.find(u.mailInteractions.rows,{id:e.MailInteractionId});n&&n.Users&&(_.find(n.Users,{id:e.UserId})||n.Users.push({id:e.UserId}))}function f(e){var n=_.find(u.mailInteractions.rows,{id:e.MailInteractionId});n&&n.Users&&_.remove(n.Users,{id:e.UserId})}function b(e){if(e){var n=_.find(u.mailInteractions.rows,{id:e.id});if(n){if(n.Users=[],e.closed&&(n.unreadMessages=0),u.query.sort){var t=_.startsWith(u.query.sort,"-")?"desc":"asc";u.mailInteractions.rows=_.orderBy(u.mailInteractions.rows,_.trimStart(u.query.sort,"-"),t)}_.merge(n,_.pick(e,_.keys(n)))}else 0===u.setting.mailInteractionsReloadTimeout&&p(u.query.page)}}function A(e){if(e){var n=_.find(u.mailInteractions.rows,{id:e.id});n&&(n.Tags=e.tags||[],_.merge(n,_.pick(e,_.keys(n))))}}function E(e){if(e&&!e.secret){var n=_.find(u.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 y(e){e&&u.interactionsInterval&&n.cancel(u.interactionsInterval),u.interactionsInterval=n(function(){u.reloadingInteractions=!0,u.searchInProgress||p()},1e3*u.setting.mailInteractionsReloadTimeout)}u.user=e.getCurrentUser(),u.license={},u.setting={},u.tags={count:0,rows:[]},u.mailInteractions={count:0,rows:[]},u.query={includeAll:!0,sort:"-updatedAt",limit:10,page:1,read:null,closed:null},u.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:u.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"]}}]},u.sectionColor="teal",u.onInit=function(e,n){return u.license=e,u.setting=n,d.user["get"+_.upperFirst("mailAccounts")]({id:u.user.id,nolimit:!0}).$promise.then(function(e){return u.mailAccounts=e||{count:0,rows:[]},d.tag.get({sort:"name"}).$promise}).then(function(e){u.tags=e||{count:0,rows:[]}}).then(function(){return d.mailSubstatus.get({nolimit:!0}).$promise}).then(function(e){u.subStatuses=e||{count:0,rows:[]}}).then(function(){u.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:u.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:u.mailAccounts.rows,clearAll:!1},{name:"Agent",key:"UserId",type:"select",label:"DASHBOARDS.SELECT_AGENT",customOptions:[{value:u.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:u.tags.rows,placeholder:"DASHBOARDS.TAGS"}]}).catch(function(e){console.error(e)}).finally(function(){var e=a.localStorage.getItem("motion2.home.mail:"+u.user.id);if(e)try{(e=JSON.parse(e)).query&&(u.query=_.merge(u.query,e.query),_.isEmpty(u.mailAccounts.rows)?u.query.MailAccountId=[]:_.isEmpty(u.query.MailAccountId)&&(u.query.MailAccountId=_(u.mailAccounts.rows).map("id").take().value()),u.query.sort&&0<=u.query.sort.indexOf("lastMessage")&&(u.query=_.omit(u.query,"sort")),u.query.includeAll=!0,u.isSearchBarVisible=!(u.query.search||!u.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()},t={MailAccountId:_.map(u.mailAccounts.rows,"id"),createdAt:n};u.query=_.merge(u.query,t)}i.on("mailInteraction:save",b),i.on("mailInteraction:update",b),i.on("mailInteractionTags:save",A),i.on("mailMessage:save",E),i.on("mailMessage:update",E),i.on("user_has_mail_interactions:save",h),i.on("user_has_mail_interactions:remove",f),p(u.query.page),0<u.setting.mailInteractionsReloadTimeout&&y()})},u.success=s,u.getMailInteractions=p,u.showMailInteraction=g,u.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()})})},u.disposeInteraction=function(e,t){var a=u.user.voicePause||u.user.chatPause||u.user.mailPause||u.user.openchannelPause||u.user.faxPause,n=!t.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:n,escapeToClose:n,onRemoving:function(e,n){u.user&&t.Account.mandatoryDisposition&&!a&&d.user.unpause({id:u.user.id}).$promise.catch(function(e){console.error(e)})},locals:{user:u.user,channel:"mail",interaction:t}})},u.getContactLabel=v,u.getAgentLabel=function(e){if(e.UserId)return e.UserId===u.user.id?t.instant("DASHBOARDS.ME"):e.Owner.fullname+" <"+e.Owner.internal+">";return t.instant("DASHBOARDS.NOT_ASSIGNED")},u.getMailAccountLabel=function(e){if(e.Account)return e.Account.key;return t.instant("DASHBOARDS.UNKNOWN")},u.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=u.user.voicePause||u.user.chatPause||u.user.mailPause||u.user.openchannelPause||u.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(e,n){u.user&&s.mandatoryDisposition&&!a&&d.user.unpause({id:u.user.id}).$promise.catch(function(e){console.error(e)})},clickOutsideToClose:t,escapeToClose:t,locals:{user:u.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};m.add(n)}})},u.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:u.sectionColor,fields:u.advancedSearch.fields,storagePath:"home.mail"},fullscreen:!0}).then(function(e){u.isSearchBarVisible=!(e.value||!u.query.filter),e.apply&&(u.query.search=e.value,p())}).catch(function(e){c.error({title:"ERROR",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},o.$on("openMailDraft",function(e,s){s.interaction?(s.interaction.isDraft=!0,g(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(m.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=u.user.voicePause||u.user.chatPause||u.user.mailPause||u.user.openchannelPause||u.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(e,n){u.user&&s.account.mandatoryDisposition&&!a&&d.user.unpause({id:u.user.id}).$promise.catch(function(e){console.error(e)})},clickOutsideToClose:t,escapeToClose:t,locals:{user:u.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};m.update(n)}})}),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"),u.interactionsInterval&&n.cancel(u.interactionsInterval)})}e.$inject=["$scope","$interval","$mdDialog","$document","$window","$translate","api","Auth","socket","toasty","draftManager"],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(i,n,s,o,a,t,r,e,l,d,c){var m=this;function u(e){!m.reloadingInteractions&&0<m.setting.openchannelInteractionsReloadTimeout&&E(!0),m.searchInProgress=!1,m.reloadingInteractions=!1,m.openchannelInteractions=e||{count:0,rows:[]};for(var n=0;n<m.openchannelInteractions.rows.length;n+=1)g(m.openchannelInteractions.rows[n])}function p(e,n){m.searchInProgress=!0,e||(m.query.page=1),m.query.offset=(m.query.page-1)*m.query.limit;var t=a.localStorage.getItem("motion2.home.openchannel:"+m.user.id);(t=t?JSON.parse(t):{}).query=m.query,a.localStorage.setItem("motion2.home.openchannel:"+m.user.id,JSON.stringify(t)),m.promise=r.openchannelInteraction.get(m.query,u).$promise}function g(e){"Unknown"===e.contactName&&(e.contactName=t.instant("DASHBOARDS.UNKNOWN"))}function v(e){var n=_.find(m.openchannelInteractions.rows,{id:e.OpenchannelInteractionId});n&&n.Users&&(_.find(n.Users,{id:e.UserId})||n.Users.push({id:e.UserId}))}function h(e){var n=_.find(m.openchannelInteractions.rows,{id:e.OpenchannelInteractionId});n&&n.Users&&_.remove(n.Users,{id:e.UserId})}function f(e){if(e){var n=_.find(m.openchannelInteractions.rows,{id:e.id});if(n){if(n.Users=[],e.closed&&(n.unreadMessages=0),m.query.sort){var t=_.startsWith(m.query.sort,"-")?"desc":"asc";m.openchannelInteractions.rows=_.orderBy(m.openchannelInteractions.rows,_.trimStart(m.query.sort,"-"),t)}_.merge(n,_.pick(e,_.keys(n)))}else 0===m.setting.openchannelInteractionsReloadTimeout&&p(m.query.page)}}function b(e){if(e){var n=_.find(m.openchannelInteractions.rows,{id:e.id});n&&(n.Tags=e.tags||[],_.merge(n,_.pick(e,_.keys(n))))}}function A(e){if(e&&!e.secret){var n=_.find(m.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 E(e){e&&m.interactionsInterval&&n.cancel(m.interactionsInterval),m.interactionsInterval=n(function(){m.reloadingInteractions=!0,m.searchInProgress||p()},1e3*m.setting.openchannelInteractionsReloadTimeout)}m.user=e.getCurrentUser(),m.license={},m.setting={},m.tags={count:0,rows:[]},m.openchannelInteractions={count:0,rows:[]},m.query={includeAll:!0,sort:"-updatedAt",limit:10,page:1,read:null,closed:null},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:"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:m.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"]}}]},m.sectionColor="amber",m.onInit=function(e,n){return m.license=e,m.setting=n,r.user["get"+_.upperFirst("openchannelAccounts")]({id:m.user.id,nolimit:!0}).$promise.then(function(e){return m.openchannelAccounts=e||{count:0,rows:[]},r.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:"Account",key:"OpenchannelAccountId",type:"multiselect",label:"DASHBOARDS.SELECT_ACCOUNT",options:m.openchannelAccounts.rows,clearAll:!1},{name:"Agent",key:"UserId",type:"select",label:"DASHBOARDS.SELECT_AGENT",customOptions:[{value:m.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:m.tags.rows,placeholder:"DASHBOARDS.TAGS"}]}).catch(function(e){console.error(e)}).finally(function(){var e=a.localStorage.getItem("motion2.home.openchannel:"+m.user.id);if(e)try{(e=JSON.parse(e)).query&&(m.query=_.merge(m.query,e.query),_.isEmpty(m.openchannelAccounts.rows)?m.query.OpenchannelAccountId=[]:_.isEmpty(m.query.OpenchannelAccountId)&&(m.query.OpenchannelAccountId=_(m.openchannelAccounts.rows).map("id").take().value()),m.query.sort&&0<=m.query.sort.indexOf("lastMessage")&&(m.query=_.omit(m.query,"sort")),m.query.includeAll=!0,m.isSearchBarVisible=!(m.query.search||!m.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()},t={OpenchannelAccountId:_.map(m.openchannelAccounts.rows,"id"),createdAt:n};m.query=_.merge(m.query,t)}l.on("openchannelInteraction:save",f),l.on("openchannelInteraction:update",f),l.on("openchannelInteractionTags:save",b),l.on("openchannelMessage:save",A),l.on("openchannelMessage:update",A),l.on("user_has_openchannel_interactions:save",v),l.on("user_has_openchannel_interactions:remove",h),p(m.query.page),0<m.setting.openchannelInteractionsReloadTimeout&&E()})},m.success=u,m.getOpenchannelInteractions=p,m.showOpenchannelInteraction=function(e,n){i.$parent.vm.addInteractionTab("openchannel",n)},m.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)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:"downloadOpenchannelInteraction",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},m.disposeInteraction=function(e,t){var a=m.user.voicePause||m.user.chatPause||m.user.mailPause||m.user.openchannelPause||m.user.faxPause,n=!t.Account.mandatoryDisposition;s.show({controller:"DisposeInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/dispose/dialog.html",parent:angular.element(o.body),clickOutsideToClose:n,escapeToClose:n,onRemoving:function(e,n){m.user&&t.Account.mandatoryDisposition&&!a&&r.user.unpause({id:m.user.id}).$promise.catch(function(e){console.error(e)})},locals:{user:m.user,channel:"openchannel",interaction:t}})},m.getContactLabel=g,m.getAgentLabel=function(e){if(e.UserId)return e.UserId===m.user.id?t.instant("DASHBOARDS.ME"):e.Owner.fullname+" <"+e.Owner.internal+">";return t.instant("DASHBOARDS.NOT_ASSIGNED")},m.getOpenchannelAccountLabel=function(e){if(e.Account)return e.Account.key;return t.instant("DASHBOARDS.UNKNOWN")},m.composeOpenchannelInteraction=function(e,a){s.show({controller:"ComposeOpenchannelInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/compose/openchannel/dialog.html",parent:angular.element(o.body),clickOutsideToClose:!1,locals:{account:a,message:{},type:"new",interaction:{}},fullscreen:!0}).then(function(e){if(e){if(!e.message||!e.message.savedAsDraft){var n=e;return r.openchannelAccount.send({id:a.id},n).$promise.then(function(e){d.success({title:"Message properly sent!",msg:"Message has been sent!"}),i.$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++)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:"OPENCHANNELACCOUNT:SEND",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}var t={channel:"openchannel",account:a,message:e.message,contact:e.contact};c.add(t)}})},m.openAdvancedSearch=function(){s.show({controller:"AdvancedSearchController",controllerAs:"vm",templateUrl:"app/core/dialogs/advanced-search/dialog.html",parent:angular.element(o.body),clickOutsideToClose:!1,locals:{color:m.sectionColor,fields:m.advancedSearch.fields,storagePath:"home.openchannel"},fullscreen:!0}).then(function(e){m.isSearchBarVisible=!(e.value||!m.query.filter),e.apply&&(m.query.search=e.value,p())}).catch(function(e){d.error({title:"ERROR",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},i.$on("$destroy",function(){l.removeAllListeners("openchannelMessage:save"),l.removeAllListeners("openchannelMessage:update"),l.removeAllListeners("openchannelInteraction:save"),l.removeAllListeners("openchannelInteractionTags:save"),l.removeAllListeners("openchannelInteraction:update"),l.removeAllListeners("user_has_openchannel_interactions:save"),l.removeAllListeners("user_has_openchannel_interactions:remove"),m.interactionsInterval&&n.cancel(m.interactionsInterval)})}e.$inject=["$scope","$interval","$mdDialog","$document","$window","$translate","api","Auth","socket","toasty","draftManager"],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",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;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(i,n,s,o,a,t,r,e,l,d,c){var m=this;function u(e){!m.reloadingInteractions&&0<m.setting.smsInteractionsReloadTimeout&&E(!0),m.searchInProgress=!1,m.reloadingInteractions=!1,m.smsInteractions=e||{count:0,rows:[]};for(var n=0;n<m.smsInteractions.rows.length;n+=1)g(m.smsInteractions.rows[n])}function p(e,n){m.searchInProgress=!0,e||(m.query.page=1),m.query.offset=(m.query.page-1)*m.query.limit;var t=a.localStorage.getItem("motion2.home.sms:"+m.user.id);(t=t?JSON.parse(t):{}).query=m.query,a.localStorage.setItem("motion2.home.sms:"+m.user.id,JSON.stringify(t)),m.promise=r.smsInteraction.get(m.query,u).$promise}function g(e){e.contactInfo=e.Contact?e.Contact.mobile:void 0,"Unknown"===e.contactName&&(e.contactName=t.instant("DASHBOARDS.UNKNOWN"))}function v(e){var n=_.find(m.smsInteractions.rows,{id:e.SmsInteractionId});n&&n.Users&&(_.find(n.Users,{id:e.UserId})||n.Users.push({id:e.UserId}))}function h(e){var n=_.find(m.smsInteractions.rows,{id:e.SmsInteractionId});n&&n.Users&&_.remove(n.Users,{id:e.UserId})}function f(e){if(e){var n=_.find(m.smsInteractions.rows,{id:e.id});if(n){if(n.Users=[],e.closed&&(n.unreadMessages=0),m.query.sort){var t=_.startsWith(m.query.sort,"-")?"desc":"asc";m.smsInteractions.rows=_.orderBy(m.smsInteractions.rows,_.trimStart(m.query.sort,"-"),t)}_.merge(n,_.pick(e,_.keys(n)))}else 0===m.setting.smsInteractionsReloadTimeout&&p(m.query.page)}}function b(e){if(e){var n=_.find(m.smsInteractions.rows,{id:e.id});n&&(n.Tags=e.tags||[],_.merge(n,_.pick(e,_.keys(n))))}}function A(e){if(e&&!e.secret){var n=_.find(m.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 E(e){e&&m.interactionsInterval&&n.cancel(m.interactionsInterval),m.interactionsInterval=n(function(){m.reloadingInteractions=!0,m.searchInProgress||p()},1e3*m.setting.smsInteractionsReloadTimeout)}m.user=e.getCurrentUser(),m.license={},m.setting={},m.tags={count:0,rows:[]},m.smsInteractions={count:0,rows:[]},m.query={includeAll:!0,sort:"-updatedAt",limit:10,page:1,read:null,closed:null},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:"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:m.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"]}}]},m.sectionColor="orange",m.onInit=function(e,n){return m.license=e,m.setting=n,r.user["get"+_.upperFirst("smsAccounts")]({id:m.user.id,nolimit:!0}).$promise.then(function(e){return m.smsAccounts=e||{count:0,rows:[]},r.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:"Account",key:"SmsAccountId",type:"multiselect",label:"DASHBOARDS.SELECT_ACCOUNT",options:m.smsAccounts.rows,clearAll:!1},{name:"Agent",key:"UserId",type:"select",label:"DASHBOARDS.SELECT_AGENT",customOptions:[{value:m.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:m.tags.rows,placeholder:"DASHBOARDS.TAGS"}]}).catch(function(e){console.error(e)}).finally(function(){var e=a.localStorage.getItem("motion2.home.sms:"+m.user.id);if(e)try{(e=JSON.parse(e)).query&&(m.query=_.merge(m.query,e.query),_.isEmpty(m.smsAccounts.rows)?m.query.SmsAccountId=[]:_.isEmpty(m.query.SmsAccountId)&&(m.query.SmsAccountId=_(m.smsAccounts.rows).map("id").take().value()),m.query.sort&&0<=m.query.sort.indexOf("lastMessage")&&(m.query=_.omit(m.query,"sort")),m.query.includeAll=!0,m.isSearchBarVisible=!(m.query.search||!m.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()},t={SmsAccountId:_.map(m.smsAccounts.rows,"id"),createdAt:n};m.query=_.merge(m.query,t)}l.on("smsInteraction:save",f),l.on("smsInteraction:update",f),l.on("smsInteractionTags:save",b),l.on("smsMessage:save",A),l.on("smsMessage:update",A),l.on("user_has_sms_interactions:save",v),l.on("user_has_sms_interactions:remove",h),p(m.query.page),0<m.setting.smsInteractionsReloadTimeout&&E()})},m.success=u,m.getSmsInteractions=p,m.showSmsInteraction=function(e,n){i.$parent.vm.addInteractionTab("sms",n)},m.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)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:"downloadSmsInteraction",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},m.disposeInteraction=function(e,t){var a=m.user.voicePause||m.user.chatPause||m.user.mailPause||m.user.openchannelPause||m.user.faxPause,n=!t.Account.mandatoryDisposition;s.show({controller:"DisposeInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/dispose/dialog.html",parent:angular.element(o.body),clickOutsideToClose:n,escapeToClose:n,onRemoving:function(e,n){m.user&&t.Account.mandatoryDisposition&&!a&&r.user.unpause({id:m.user.id}).$promise.catch(function(e){console.error(e)})},locals:{user:m.user,channel:"sms",interaction:t}})},m.getContactLabel=g,m.getAgentLabel=function(e){if(e.UserId)return e.UserId===m.user.id?t.instant("DASHBOARDS.ME"):e.Owner.fullname+" <"+e.Owner.internal+">";return t.instant("DASHBOARDS.NOT_ASSIGNED")},m.getSmsAccountLabel=function(e){if(e.Account)return e.Account.key;return t.instant("DASHBOARDS.UNKNOWN")},m.composeSmsInteraction=function(e,a){s.show({controller:"ComposeSmsInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/compose/sms/dialog.html",parent:angular.element(o.body),clickOutsideToClose:!1,locals:{account:a,message:{},type:"new",interaction:{}},fullscreen:!0}).then(function(e){if(e){if(!e.message||!e.message.savedAsDraft){var n=e;return r.smsAccount.send({id:a.id},n).$promise.then(function(e){d.success({title:"Message properly sent!",msg:"Message has been sent!"}),i.$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++)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:"SMSACCOUNT:SEND",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}var t={channel:"sms",account:a,message:e.message,contact:e.contact};c.add(t)}})},m.openAdvancedSearch=function(){s.show({controller:"AdvancedSearchController",controllerAs:"vm",templateUrl:"app/core/dialogs/advanced-search/dialog.html",parent:angular.element(o.body),clickOutsideToClose:!1,locals:{color:m.sectionColor,fields:m.advancedSearch.fields,storagePath:"home.sms"},fullscreen:!0}).then(function(e){m.isSearchBarVisible=!(e.value||!m.query.filter),e.apply&&(m.query.search=e.value,p())}).catch(function(e){d.error({title:"ERROR",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},i.$on("$destroy",function(){l.removeAllListeners("smsMessage:save"),l.removeAllListeners("smsMessage:update"),l.removeAllListeners("smsInteraction:save"),l.removeAllListeners("smsInteractionTags:save"),l.removeAllListeners("smsInteraction:update"),l.removeAllListeners("user_has_sms_interactions:save"),l.removeAllListeners("user_has_sms_interactions:remove"),m.interactionsInterval&&n.cancel(m.interactionsInterval)})}e.$inject=["$scope","$interval","$mdDialog","$document","$window","$translate","api","Auth","socket","toasty","draftManager"],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(i,n,s,o,a,t,r,e,l,d,c){var m=this;function u(e){!m.reloadingInteractions&&0<m.setting.whatsappInteractionsReloadTimeout&&E(!0),m.searchInProgress=!1,m.reloadingInteractions=!1,m.whatsappInteractions=e||{count:0,rows:[]};for(var n=0;n<m.whatsappInteractions.rows.length;n+=1)g(m.whatsappInteractions.rows[n])}function p(e,n){m.searchInProgress=!0,e||(m.query.page=1),m.query.offset=(m.query.page-1)*m.query.limit;var t=a.localStorage.getItem("motion2.home.whatsapp:"+m.user.id);(t=t?JSON.parse(t):{}).query=m.query,a.localStorage.setItem("motion2.home.whatsapp:"+m.user.id,JSON.stringify(t)),m.promise=r.whatsappInteraction.get(m.query,u).$promise}function g(e){e.contactInfo=e.Contact?e.Contact.mobile:void 0,"Unknown"===e.contactName&&(e.contactName=t.instant("DASHBOARDS.UNKNOWN"))}function v(e){var n=_.find(m.whatsappInteractions.rows,{id:e.WhatsappInteractionId});n&&n.Users&&(_.find(n.Users,{id:e.UserId})||n.Users.push({id:e.UserId}))}function h(e){var n=_.find(m.whatsappInteractions.rows,{id:e.WhatsappInteractionId});n&&n.Users&&_.remove(n.Users,{id:e.UserId})}function f(e){if(e){var n=_.find(m.whatsappInteractions.rows,{id:e.id});if(n){if(n.Users=[],e.closed&&(n.unreadMessages=0),m.query.sort){var t=_.startsWith(m.query.sort,"-")?"desc":"asc";m.whatsappInteractions.rows=_.orderBy(m.whatsappInteractions.rows,_.trimStart(m.query.sort,"-"),t)}_.merge(n,_.pick(e,_.keys(n)))}else 0===m.setting.whatsappInteractionsReloadTimeout&&p(m.query.page)}}function b(e){if(e){var n=_.find(m.whatsappInteractions.rows,{id:e.id});n&&(n.Tags=e.tags||[],_.merge(n,_.pick(e,_.keys(n))))}}function A(e){if(e&&!e.secret){var n=_.find(m.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 E(e){e&&m.interactionsInterval&&n.cancel(m.interactionsInterval),m.interactionsInterval=n(function(){m.reloadingInteractions=!0,m.searchInProgress||p()},1e3*m.setting.whatsappInteractionsReloadTimeout)}m.user=e.getCurrentUser(),m.license={},m.setting={},m.tags={count:0,rows:[]},m.whatsappInteractions={count:0,rows:[]},m.query={includeAll:!0,sort:"-updatedAt",limit:10,page:1,read:null,closed:null},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:"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:m.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"]}}]},m.sectionColor="lime-A700",m.onInit=function(e,n){return m.license=e,m.setting=n,r.user["get"+_.upperFirst("whatsappAccounts")]({id:m.user.id,nolimit:!0}).$promise.then(function(e){return m.whatsappAccounts=e||{count:0,rows:[]},r.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:"Account",key:"WhatsappAccountId",type:"multiselect",label:"DASHBOARDS.SELECT_ACCOUNT",options:m.whatsappAccounts.rows,clearAll:!1},{name:"Agent",key:"UserId",type:"select",label:"DASHBOARDS.SELECT_AGENT",customOptions:[{value:m.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:m.tags.rows,placeholder:"DASHBOARDS.TAGS"}]}).catch(function(e){console.error(e)}).finally(function(){var e=a.localStorage.getItem("motion2.home.whatsapp:"+m.user.id);if(e)try{(e=JSON.parse(e)).query&&(m.query=_.merge(m.query,e.query),_.isEmpty(m.whatsappAccounts.rows)?m.query.WhatsappAccountId=[]:_.isEmpty(m.query.WhatsappAccountId)&&(m.query.WhatsappAccountId=_(m.whatsappAccounts.rows).map("id").take().value()),m.query.sort&&0<=m.query.sort.indexOf("lastMessage")&&(m.query=_.omit(m.query,"sort")),m.query.includeAll=!0,m.isSearchBarVisible=!(m.query.search||!m.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()},t={WhatsappAccountId:_.map(m.whatsappAccounts.rows,"id"),createdAt:n};m.query=_.merge(m.query,t)}l.on("whatsappInteraction:save",f),l.on("whatsappInteraction:update",f),l.on("whatsappInteractionTags:save",b),l.on("whatsappMessage:save",A),l.on("whatsappMessage:update",A),l.on("user_has_whatsapp_interactions:save",v),l.on("user_has_whatsapp_interactions:remove",h),p(m.query.page),0<m.setting.whatsappInteractionsReloadTimeout&&E()})},m.success=u,m.getWhatsappInteractions=p,m.showWhatsappInteraction=function(e,n){i.$parent.vm.addInteractionTab("whatsapp",n)},m.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)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:"downloadWhatsappInteraction",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},m.disposeInteraction=function(e,t){var a=m.user.voicePause||m.user.chatPause||m.user.mailPause||m.user.openchannelPause||m.user.faxPause,n=!t.Account.mandatoryDisposition;s.show({controller:"DisposeInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/dispose/dialog.html",parent:angular.element(o.body),clickOutsideToClose:n,escapeToClose:n,onRemoving:function(e,n){m.user&&t.Account.mandatoryDisposition&&!a&&r.user.unpause({id:m.user.id}).$promise.catch(function(e){console.error(e)})},locals:{user:m.user,channel:"whatsapp",interaction:t}})},m.getContactLabel=g,m.getAgentLabel=function(e){if(e.UserId)return e.UserId===m.user.id?t.instant("DASHBOARDS.ME"):e.Owner.fullname+" <"+e.Owner.internal+">";return t.instant("DASHBOARDS.NOT_ASSIGNED")},m.getWhatsappAccountLabel=function(e){if(e.Account)return e.Account.key;return t.instant("DASHBOARDS.UNKNOWN")},m.composeWhatsappInteraction=function(e,a){s.show({controller:"ComposeWhatsappInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/compose/whatsapp/dialog.html",parent:angular.element(o.body),clickOutsideToClose:!1,locals:{account:a,message:{},type:"new",interaction:{}},fullscreen:!0}).then(function(e){if(e){if(!e.message||!e.message.savedAsDraft){var n=e;return r.whatsappAccount.send({id:a.id},n).$promise.then(function(e){d.success({title:"Message properly sent!",msg:"Message has been sent!"}),i.$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++)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:"WHATSAPPACCOUNT:SEND",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}var t={channel:"whatsapp",account:a,message:e.message,contact:e.contact};c.add(t)}})},m.openAdvancedSearch=function(){s.show({controller:"AdvancedSearchController",controllerAs:"vm",templateUrl:"app/core/dialogs/advanced-search/dialog.html",parent:angular.element(o.body),clickOutsideToClose:!1,locals:{color:m.sectionColor,fields:m.advancedSearch.fields,storagePath:"home.whatsapp"},fullscreen:!0}).then(function(e){m.isSearchBarVisible=!(e.value||!m.query.filter),e.apply&&(m.query.search=e.value,p())}).catch(function(e){d.error({title:"ERROR",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},i.$on("$destroy",function(){l.removeAllListeners("whatsappMessage:save"),l.removeAllListeners("whatsappMessage:update"),l.removeAllListeners("whatsappInteraction:save"),l.removeAllListeners("whatsappInteractionTags:save"),l.removeAllListeners("whatsappInteraction:update"),l.removeAllListeners("user_has_whatsapp_interactions:save"),l.removeAllListeners("user_has_whatsapp_interactions:remove"),m.interactionsInterval&&n.cancel(m.interactionsInterval)})}e.$inject=["$scope","$interval","$mdDialog","$document","$window","$translate","api","Auth","socket","toasty","draftManager"],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.replace(/\n$/,"")))},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?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+=" "+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[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+=" "+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("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+=" "+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("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").filter("secToTime",function(){return function(e){return new Date(1e3*e).toISOString().substr(11,8)}}).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,_.pick(e.toJSON(),_.keys(n))),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){m.faxAccountInteractions=e||{count:0,rows:[]};for(var n=0;n<m.faxAccountInteractions.rows.length;n+=1){var t=m.faxAccountInteractions.rows[n];v(t),t.Owner.name=h(t)}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=d.faxInteraction.get(m.query,u).$promise}function g(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||p(),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 v(e){e.Contact?(e.contactName=(e.Contact.firstName||"")+" "+(e.Contact.lastName||""),e.contactInfo=e.Contact.fax):e.contactName=i.instant("DASHBOARDS.UNKNOWN")}function h(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"]}}]},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(){g(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=u,m.getFaxAccountInteractions=p,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,p()}}).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=g,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){g(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,_.pick(e.toJSON(),_.keys(n))),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,o,n,t,a,i,s,r,l,d,c,m,u,p,g,v,h,f){var b=this,A=["userpic","online","lastLoginAt","lastPauseAt","pauseType","lastPauseAt","internal","address","chatPause","openchannelPause","mailPause","smsPause","whatsappPause","faxPause","voicePause","chatCapacity","openchannelCapacity","mailCapacity","smsCapacity","whatsappCapacity","faxCapacity","chatCurrentCapacity","openchannelCurrentCapacity","mailCurrentCapacity","smsCurrentCapacity","whatsappCurrentCapacity","faxCurrentCapacity","chatStatus","openchannelStatus","mailStatus","smsStatus","whatsappStatus","faxStatus","voiceStatus","chatStatusTime","openchannelStatusTime","mailStatusTime","smsStatusTime","whatsappStatusTime","faxStatusTime","voiceStatusTime","queue","destconnectedlinenum","screenrecording","phoneBarEnableScreenRecordingByAgent","phoneBarEnableAutomaticScreenRecording"],E=["chatPause","openchannelPause","mailPause","smsPause","whatsappPause","faxPause","voicePause","online"];for(var y in b.currentUser=v.getCurrentUser(),b.availableStates=["ringing","inuse","busy","onhold","not_inuse"],b.pauses=s||{count:0,rows:[]},b.license=h,b.userProfile=p,b.userProfileSection=g&&1==g.count?g.rows[0]:null,b.crudPermissions=v.parseCrudPermissions(b.userProfileSection?b.userProfileSection.crudPermissions:null),b.agents=r?_.keyBy(r.rows?r.rows:[],"id"):{},b.rpcAgents=l?_.keyBy(l.rows?l.rows:[],"id"):{},b.paginatedAgents={},b.load=!1,b.order=[],b.agentInternal={},b.agents)b.agents.hasOwnProperty(y)&&(b.agents[y].init=!0);b.query={limit:10,page:1,order:"fullname",globalStatusFilter:"",pauseTypeFilter:""},b.logout=function(e,n){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"}),b.agents[e.id]&&(b.agents[e.id].online=!1),b.rpcAgents[e.id]&&(b.rpcAgents[e.id].online=!1),T()}).catch(function(e){m.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.staff.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},b.queueAdd=function(e,n){t.show({controller:"AgentqueueaddController",controllerAs:"vm",templateUrl:"app/main/apps/staff/views/agents/edit/queueadd/queueadd.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{agent:e,agents:[],channel:"fax",direction:"inbound",crudPermissions:b.crudPermissions}})},b.pause=function(n,e){return d.user.pause({id:n.id,type:e}).$promise.then(function(e){b.agents[n.id]&&_.merge(b.agents[n.id],_.pick(e,A)),b.rpcAgents[n.id]&&_.merge(b.rpcAgents[n.id],_.pick(e,A)),w(b.agents[n.id])}).catch(function(e){m.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.staff.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},b.unPause=function(n){return d.user.unpause({id:n.id}).$promise.then(function(e){b.agents[n.id]&&_.merge(b.agents[n.id],_.pick(e,A)),b.rpcAgents[n.id]&&_.merge(b.rpcAgents[n.id],_.pick(e,A)),w(b.agents[n.id])}).catch(function(e){m.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.staff.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},b.showInfo=function(e){t.show(t.alert().clickOutsideToClose(!0).title("Legend").htmlContent("<div>TODO legend status + state</div>").ok("Ok").targetEvent(e))},b.getAgentStatus=O,b.getAgentGlobalStatus=w,b.isPause=I,b.checkPause=function(e){return"pause"===e},b.isPartialPause=function(e){return"*pause"===e},b.onSave=function(e){b.agents[e.id]&&(_.merge(b.agents[e.id],_.pick(_.omit(e,E),A)),_.merge(b.rpcAgents[e.id],_.pick(_.omit(e,E),A)),w(b.agents[e.id]))},b.onUpdate=function(e){b.agents[e.id]&&(_.merge(b.agents[e.id],_.pick(e,A)),_.merge(b.rpcAgents[e.id],_.pick(e,A)),e.lastPauseAt&&(b.agents[e.id].globalStatusTime=e.lastPauseAt,b.rpcAgents[e.id].globalStatusTime=e.lastPauseAt),w(b.agents[e.id]))},b.onInit=T,b.onConnect=function(e){b.agents[b.agentInternal[e.destaccountcode]]&&(_.merge(b.agents[b.agentInternal[e.destaccountcode]],_.pick(e,["queue","destconnectedlinenum","routealias"])),_.merge(b.rpcAgents[b.agentInternal[e.destaccountcode]],_.pick(e,["queue","destconnectedlinenum","routealias"])))},b.onComplete=function(e){b.agents[b.agentInternal[e.destaccountcode]]&&(b.agents[b.agentInternal[e.destaccountcode]]=_.omit(b.agents[b.agentInternal[e.destaccountcode]],["queue","destconnectedlinenum"]),b.rpcAgents[b.agentInternal[e.destaccountcode]]=_.omit(b.rpcAgents[b.agentInternal[e.destaccountcode]],["queue","destconnectedlinenum"]))},b.screenRecording=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:"api.user.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},c.on("user:save",b.onSave),c.on("user:update",b.onUpdate),c.on("user:agentconnect",b.onConnect),c.on("user:agentcomplete",b.onComplete),T();var S=f(function(){b.load&&(b.load=!1,T())},999);function T(e){b.load=!1;var n,t,a=o.defer();b.promise=a.promise,b.filteredAgents=[],b.order=[],_.forIn(b.agents,function(e,n){b.rpcAgents[n]&&_.merge(e,_.pick(_.omit(b.rpcAgents[n],E),A)),w(e),e.online?(b.filteredAgents.push(e),b.agentInternal[e.internal]=n):e.globalStatusTime=_.toNumber(moment().format("x"))}),b.query.globalStatusFilter&&_.remove(b.filteredAgents,function(e){return e.globalStatus!==b.query.globalStatusFilter}),b.query.pauseTypeFilter&&_.remove(b.filteredAgents,function(e){return e.pauseType!==b.query.pauseTypeFilter}),b.query.filter&&_.remove(b.filteredAgents,function(e){return e.fullname.toLowerCase().indexOf(b.query.filter.toLowerCase())<0}),b.filteredAgents=(n=b.filteredAgents,t=_.startsWith(b.query.order,"-")?"desc":"asc",_.orderBy(n,[b.query.order.replace("-","")],[t]));var i=(b.query.page-1)*b.query.limit;b.paginatedAgents=_.drop(b.filteredAgents,i).slice(0,b.query.limit);for(var s=0;s<b.paginatedAgents.length;s+=1)b.order.push(b.paginatedAgents[s].id);a.resolve(),b.load=!0}function I(e){return"pause"===e||"*pause"===e}function C(e){return"idle"===e||"unknown"===e||"unavailable"===e||"ringing"===e||_.isNil(e)}function O(e,n){return"voice"===n?"idle"!==e[n+"Status"]?e[n+"Status"]:e[n+"Pause"]?e[n+"Status"]="pause":"idle":e[n+"Pause"]?e[n+"Status"]="pause":e[n+"Status"]}function w(e){var n="unknown";n=_.every([O(e,"voice"),O(e,"chat"),O(e,"mail"),O(e,"openchannel"),O(e,"sms"),O(e,"whatsapp"),O(e,"fax")],I)?"pause":_.some([O(e,"voice"),O(e,"chat"),O(e,"mail"),O(e,"openchannel"),O(e,"sms"),O(e,"whatsapp"),O(e,"fax")],I)?"*pause":_.every([O(e,"voice"),O(e,"chat"),O(e,"mail"),O(e,"openchannel"),O(e,"sms"),O(e,"whatsapp"),O(e,"fax")],C)?"idle":"busy",e.globalStatus!==n&&(e.globalStatus=n,e.init?(e.init=!1,e.globalStatusTime=I(n)?_.toNumber(moment(e.lastPauseAt).format("x")):_.max([e.voiceStatusTime,e.chatStatusTime,e.mailStatusTime,e.smsStatusTime,e.whatsappStatusTime,e.openchannelStatusTime,e.faxStatusTime])):e.globalStatusTime=_.toNumber(moment().format("x")))}e.$on("$destroy",function(){c.removeAllListeners("user:save"),c.removeAllListeners("user:update"),c.removeAllListeners("user:agentconnect"),c.removeAllListeners("user:agentcomplete"),S&&(f.cancel(S),S=null)})}e.$inject=["$scope","$q","$timeout","$mdDialog","$document","$filter","pauses","agents","rpcAgents","api","socket","toasty","helperClasses","userProfile","userProfileSection","Auth","license","$interval"],angular.module("app.voice").controller("AgentsFaxRealtimeController",e)}(),function(){"use strict";function e(e,t,a,n,i,s,o,r,l,d,c){var m=this,u=["loggedIn","available","waiting","paused"],p=n(function(){},999);m.currentUser=c.getCurrentUser(),m.queues=i,m.userProfileSection=d&&1==d.count?d.rows[0]:null,m.crudPermissions=c.parseCrudPermissions(m.userProfileSection?m.userProfileSection.crudPermissions:null),m.query={id:c.isUser()?m.currentUser.id:void 0,section:c.isUser()?"FaxQueues":void 0,channel:"fax",sort:"name",limit:10,page:1},m.getQueues=function(){m.query.offset=(m.query.page-1)*m.query.limit,s.realtime.getQueues(m.query).$promise.then(function(e){m.queues=e}).catch(function(e){console.error(e)})},m.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:m.queues.rows,license:null,setting:null,crudPermissions:m.crudPermissions}})},m.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:m.queues.rows,realtime:!1,crudPermissions:m.crudPermissions}})},o.on("fax_queue:save",function(e){var n=_.find(m.queues.rows,["id",e.id]);n&&_.merge(n,_.pick(e,u))}),o.on("userFaxQueue:save",function(e){var n=_.find(m.queues.rows,["id",e.FaxQueueId]);n&&(n.loggedInDb++,n.agents.push({id:e.UserId}))}),o.on("userFaxQueue:remove",function(e){var n=_.find(m.queues.rows,["id",e.FaxQueueId]);n&&(0<n.loggedInDb&&n.loggedInDb--,_.remove(n.agents,["id",e.UserId]))}),o.on("user:update",function(t){m.queues.rows.forEach(function(e){var n=_.find(e.agents,["id",t.id]);n&&(!1===t.online?(n.online=!1,e.loggedInDb-=1,n.paused?(n.paused=!1,e.paused-=1):e.available-=1):n.online?t.faxPause?(n.paused=!0,e.paused+=1,e.available-=1):!t.faxPause&&n.paused&&(n.paused=!1,e.paused-=1,e.available+=1):(n.online=!0,e.loggedInDb+=1,e.available+=1))})}),e.$on("$destroy",function(){o.removeAllListeners("fax_queue:save"),o.removeAllListeners("userFaxQueue:remove"),o.removeAllListeners("userFaxQueue:save"),o.removeAllListeners("user:update"),p&&n.cancel(p)})}e.$inject=["$scope","$mdDialog","$document","$interval","queues","api","socket","toasty","userProfile","userProfileSection","Auth"],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(n.disconnect(),n.connect(),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,_.pick(e.toJSON(),_.keys(n))),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,_.pick(e.toJSON(),_.keys(n))),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){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_DYNAMICS365ACCOUNT",g.dynamics365Account=angular.copy(l),g.dynamics365Accounts=r,g.newDynamics365Account=!1,g.dynamics365Account||(g.dynamics365Account={serverUrl:t.protocol()+"://"+t.host()+(t.port()?":"+t.port():"")},g.title="INTEGRATIONS.NEW_DYNAMICS365ACCOUNT",g.newDynamics365Account=!0),g.addNewDynamics365Account=function(){g.errors=[],d.intDynamics365Account.save(g.dynamics365Account).$promise.then(function(e){g.dynamics365Accounts.unshift(e.toJSON()),o.success({title:"Dynamics365Account properly created",msg:g.dynamics365Account.name?g.dynamics365Account.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.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()})})},g.saveDynamics365Account=function(){g.errors=[],d.intDynamics365Account.update({id:g.dynamics365Account.id},g.dynamics365Account).$promise.then(function(e){var n=_.find(g.dynamics365Accounts,{id:e.id});n&&_.merge(n,_.pick(e.toJSON(),_.keys(n))),o.success({title:"Dynamics365Account properly saved!",msg:g.dynamics365Account.name?g.dynamics365Account.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.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()})})},g.deleteDynamics365Account=function(e){g.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(){d.intDynamics365Account.delete({id:g.dynamics365Account.id}).$promise.then(function(){_.remove(g.dynamics365Accounts,{id:g.dynamics365Account.id}),o.success({title:"Dynamics365Account properly deleted!",msg:(g.dynamics365Account.name||"dynamics365Account")+" has been deleted!"}),v(g.dynamics365Account)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.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(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","dynamics365Accounts","dynamics365Account","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){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.dynamics365Accounts=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="dynamics365Accounts",f.listOrder="",f.listOrderAsc=null,f.selectedDynamics365Accounts=[],f.query={fields:"createdAt,updatedAt,id,name,username,password,remoteUri,tenantId,clientId,clientSecret,serverUrl,description",sort:"-updatedAt",limit:10,page:1},f.editstate=function(e,n){t.go("app.integrations.dynamics365Accounts.edit",{id:e.id,dynamics365Account:e,crudPermissions:f.crudPermissions})},f.testtestintegrationaccount=function(e,n){return m.intDynamics365Account.getFields({id:e.id,test:!0}).$promise.then(function(){p.success({title:"Dynamics365Account properly tested",msg:"Connection succeded!"})}).catch(function(e){p.error({title:"Dynamics365Account 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("dynamics365Account")+"?").htmlContent("<b>"+(e.name||"dynamics365Account")+"</b> will be deleted.").ariaLabel("delete dynamics365Account").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getDynamics365Accounts=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.intDynamics365Account.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="Dynamics365Accounts",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.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:f.dynamics365Accounts.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteDynamics365Account=y,f.exportSelectedDynamics365Accounts=function(){var e=angular.copy(f.selectedDynamics365Accounts);return f.selectedDynamics365Accounts=[],e},f.deleteSelectedDynamics365Accounts=function(e){var n=i.confirm().title("Are you sure want to delete the selected dynamics365Accounts?").htmlContent("<b>"+f.selectedDynamics365Accounts.length+" selected</b> will be deleted.").ariaLabel("delete Dynamics365Accounts").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedDynamics365Accounts.forEach(function(e){y(e)}),f.selectedDynamics365Accounts=[]})},f.deselectDynamics365Accounts=function(){f.selectedDynamics365Accounts=[]},f.selectAllDynamics365Accounts=function(){f.selectedDynamics365Accounts=f.dynamics365Accounts.rows};var b=!0,A=1;function E(e){f.dynamics365Accounts=e||{count:0,rows:[]}}function y(e){m.intDynamics365Account.delete({id:e.id}).$promise.then(function(){_.remove(f.dynamics365Accounts.rows,{id:e.id}),f.dynamics365Accounts.count-=1,f.dynamics365Accounts.rows.length||f.getDynamics365Accounts(),p.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){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEintDynamics365Account"}];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:DELETEintDynamics365Account",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.getDynamics365Accounts())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","dynamics365Accounts","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.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.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,_.pick(e.toJSON(),_.keys(n))),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){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.dynamics365Account=c||e.params.dynamics365Account||{},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.gotoDynamics365Accounts=function(){e.go("app.integrations.dynamics365Accounts",{},{reload:"app.integrations.dynamics365Accounts"})},u.saveDynamics365Account=function(){r.intDynamics365Account.update({id:u.dynamics365Account.id},u.dynamics365Account).$promise.then(function(){l.success({title:"Dynamics365Account updated!",msg:u.dynamics365Account.name?u.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","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,_.pick(e.toJSON(),_.keys(n))),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,_.pick(e.toJSON(),_.keys(n))),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,_.pick(e.toJSON(),_.keys(n))),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,_.pick(e.toJSON(),_.keys(n))),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,_.pick(e.toJSON(),_.keys(n))),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,_.pick(e.toJSON(),_.keys(n))),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,_.pick(e.toJSON(),_.keys(n))),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,_.pick(e.toJSON(),_.keys(n))),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,_.pick(e.toJSON(),_.keys(n))),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,_.pick(e.toJSON(),_.keys(n))),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,_.pick(e.toJSON(),_.keys(n))),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,_.pick(e.toJSON(),_.keys(n))),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,_.pick(e.toJSON(),_.keys(n))),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,_.pick(e.toJSON(),_.keys(n))),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,_.pick(e.toJSON(),_.keys(n))),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,_.pick(e.toJSON(),_.keys(n))),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,_.pick(e.toJSON(),_.keys(n))),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,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_MAILACCOUNT",g.mailAccount=angular.copy(l),g.mailAccounts=r,g.newMailAccount=!1,g.mailAccount||(g.mailAccount={active:!0,cservice:"null",cauthentication:!0,fontSize:13,waitForTheAssignedAgent:10,notificationSound:!0,queueTransferTimeout:300,agentTransferTimeout:300},g.title="MAIL.NEW_MAILACCOUNT",g.newMailAccount=!0),n.params.id&&(g.mailAccount.MailAccountId=n.params.id),g.addNewMailAccount=function(){g.errors=[],d.mailAccount.save(g.mailAccount).$promise.then(function(e){g.mailAccounts.unshift(e.toJSON()),o.success({title:"MailAccount properly created",msg:g.mailAccount.name?g.mailAccount.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.mailAccount.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.mailAccount.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveMailAccount=function(){g.errors=[],d.mailAccount.update({id:g.mailAccount.id},g.mailAccount).$promise.then(function(e){var n=_.find(g.mailAccounts,{id:e.id});n&&_.merge(n,_.pick(e.toJSON(),_.keys(n))),o.success({title:"MailAccount properly saved!",msg:g.mailAccount.name?g.mailAccount.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.mailAccount.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.mailAccount.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteMailAccount=function(e){if(g.mailAccount.service)return o.error({title:"Mail Account not deleted!",msg:"You can't remove service account"});g.errors=[];var n=a.confirm().title("Are you sure?").content("The mailAccount will be deleted.").ariaLabel("Delete MailAccount").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.mailAccount.delete({id:g.mailAccount.id}).$promise.then(function(){_.remove(g.mailAccounts,{id:g.mailAccount.id}),o.success({title:"MailAccount properly deleted!",msg:(g.mailAccount.name||"mailAccount")+" has been deleted!"}),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++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.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.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.mailAccount&&(t=_.find(g.lists,{id:Number(g.mailAccount.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.mailAccount&&(a=_.find(g.lists,{id:Number(g.mailAccount.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","mailAccounts","mailAccount","api","Auth","license","setting","crudPermissions"],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){m.mailAccountInteractions=e||{count:0,rows:[]};for(var n=0;n<m.mailAccountInteractions.rows.length;n+=1){var t=m.mailAccountInteractions.rows[n];v(t),t.Owner.name=h(t)}}function p(){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,u).$promise}function g(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||p(),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 v(e){_.isEmpty(e.to)||_.includes(e.to,m.mailAccount.email)?e.Contact?(e.contactName=(e.Contact.firstName||"")+" "+(e.Contact.lastName||""),e.contactInfo=e.Contact.email||""):e.contactName=i.instant("MAIL.UNKNOWN"):(e.contactName=e.to.split(" <")[0],e.contactInfo=e.to.split("<").pop().split(">")[0])}function h(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"]}}]},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(){g(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=u,m.getMailAccountInteractions=p,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,p()}}).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=g,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){g(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,_.pick(e.toJSON(),_.keys(n))),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,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.mailAccount=c||t.params.mailAccount||{},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:610}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;n&&n.enabled?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()})});t.go("app.mail.realtime.accounts",{})}},p.agentadddialog=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:p.mailAccounts?p.mailAccounts.rows:[],crudPermissions:p.crudPermissions,realtime:!1}})},p.alert=l.info,p.gotoMailAccounts=function(){t.go("app.mail.mailAccounts",{},{reload:"app.mail.mailAccounts"})},p.saveMailAccount=function(){r.mailAccount.update({id:p.mailAccount.id},p.mailAccount).$promise.then(function(){l.success({title:"MailAccount updated!",msg:p.mailAccount.name?p.mailAccount.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETmailAccount",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.mailAccount&&(t=_.find(p.lists,{id:Number(p.mailAccount.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.mailAccount&&(a=_.find(p.lists,{id:Number(p.mailAccount.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","mailAccount","userProfile","userProfileSection"],angular.module("app.mail").controller("MailAccountController",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.mailAccounts=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="mailAccounts",f.listOrder="",f.listOrderAsc=null,f.selectedMailAccounts=[],f.query={fields:"createdAt,updatedAt,id,name,key,email,ListId,active,cservice,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},f.arraycservice=_.keyBy([{option:"Custom",value:"null"},{option:"Gmail",value:"'gmail'"},{option:"Hotmail",value:"'hotmail'"},{option:"Yahoo",value:"'yahoo'"},{option:"Outlook365",value:"'outlook365'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f["arrayImap.service"]=_.keyBy([{option:"Custom",value:"null"},{option:"Gmail",value:"'gmail'"},{option:"Hotmail",value:"'hotmail'"},{option:"Yahoo",value:"'yahoo'"},{option:"Outlook365",value:"'outlook365'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f["arraySmtp.service"]=_.keyBy([{option:"Custom",value:"null"},{option:"Gmail",value:"'gmail'"},{option:"Hotmail",value:"'hotmail'"},{option:"Yahoo",value:"'yahoo'"},{option:"Outlook365",value:"'outlook365'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.editstate=function(e,n){t.go("app.mail.mailAccounts.edit",{id:e.id,mailAccount:e,crudPermissions:f.crudPermissions})},f.verifysmtpverifysmtp=function(e,n){{if(e&&e.id)return m.mailAccount.verifySmtp({id:e.id}).$promise.then(function(){p.success({title:"Smtp properly verified",msg:"Connection succeded!"})}).catch(function(e){p.error({title:"Smtp properly verified",msg:e.data?JSON.stringify(e.data):e.toString()})});p.error({title:"Smtp properly verified",msg:"Smpt id unknown"})}},f.interactionsgoto=function(e,n){t.go("app.mail.mailAccounts.edit",{id:e.id,tab:7})},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.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.mail.realtime.accounts",{})}},f.agentadddialog=function(e,n){i.show({controller:"MailAccountagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/mail/views/mailAccounts/edit/agentadd/agentadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{mailAccount:e,mailAccounts:f.mailAccounts?f.mailAccounts.rows:[],crudPermissions:f.crudPermissions,realtime:!1}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("mailAccount")+"?").htmlContent("<b>"+(e.name||"mailAccount")+"</b> will be deleted.").ariaLabel("delete mailAccount").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getMailAccounts=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.mailAccount.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="MailAccounts",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditMailAccount=function(e,n){i.show({controller:"CreateOrEditMailAccountDialogController",controllerAs:"vm",templateUrl:"app/main/apps/mail/views/mailAccounts/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{mailAccount:n,mailAccounts:f.mailAccounts.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteMailAccount=y,f.exportSelectedMailAccounts=function(){var e=angular.copy(f.selectedMailAccounts);return f.selectedMailAccounts=[],e},f.deleteSelectedMailAccounts=function(e){var n=i.confirm().title("Are you sure want to delete the selected mailAccounts?").htmlContent("<b>"+f.selectedMailAccounts.length+" selected</b> will be deleted.").ariaLabel("delete MailAccounts").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedMailAccounts.forEach(function(e){y(e)}),f.selectedMailAccounts=[]})},f.deselectMailAccounts=function(){f.selectedMailAccounts=[]},f.selectAllMailAccounts=function(){f.selectedMailAccounts=f.mailAccounts.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.mailAccount&&(t=_.find(f.lists,{id:Number(f.mailAccount.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.mailAccount&&(a=_.find(f.lists,{id:Number(f.mailAccount.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.mailAccounts=e||{count:0,rows:[]}}function y(e){if(e.service)return p.error({title:"Mail Account not deleted!",msg:"You can't remove service account"});m.mailAccount.delete({id:e.id}).$promise.then(function(){_.remove(f.mailAccounts.rows,{id:e.id}),f.mailAccounts.count-=1,f.mailAccounts.rows.length||f.getMailAccounts(),p.success({title:_.startCase("MailAccount")+" 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:DELETEmailAccount"}];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:DELETEmailAccount",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.getMailAccounts())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","mailAccounts","userProfile","userProfileSection","api","msUtils","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,_.pick(e.toJSON(),_.keys(n))),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,_.pick(e.toJSON(),_.keys(n))),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,o,n,t,a,i,s,r,l,d,c,m,u,p,g,v,h,f){var b=this,A=["userpic","online","lastLoginAt","lastPauseAt","pauseType","lastPauseAt","internal","address","chatPause","openchannelPause","mailPause","smsPause","whatsappPause","faxPause","voicePause","chatCapacity","openchannelCapacity","mailCapacity","smsCapacity","whatsappCapacity","faxCapacity","chatCurrentCapacity","openchannelCurrentCapacity","mailCurrentCapacity","smsCurrentCapacity","whatsappCurrentCapacity","faxCurrentCapacity","chatStatus","openchannelStatus","mailStatus","smsStatus","whatsappStatus","faxStatus","voiceStatus","chatStatusTime","openchannelStatusTime","mailStatusTime","smsStatusTime","whatsappStatusTime","faxStatusTime","voiceStatusTime","queue","destconnectedlinenum","screenrecording","phoneBarEnableScreenRecordingByAgent","phoneBarEnableAutomaticScreenRecording"],E=["chatPause","openchannelPause","mailPause","smsPause","whatsappPause","faxPause","voicePause","online"];for(var y in b.currentUser=v.getCurrentUser(),b.availableStates=["ringing","inuse","busy","onhold","not_inuse"],b.pauses=s||{count:0,rows:[]},b.license=h,b.userProfile=p,b.userProfileSection=g&&1==g.count?g.rows[0]:null,b.crudPermissions=v.parseCrudPermissions(b.userProfileSection?b.userProfileSection.crudPermissions:null),b.agents=r?_.keyBy(r.rows?r.rows:[],"id"):{},b.rpcAgents=l?_.keyBy(l.rows?l.rows:[],"id"):{},b.paginatedAgents={},b.load=!1,b.order=[],b.agentInternal={},b.agents)b.agents.hasOwnProperty(y)&&(b.agents[y].init=!0);b.query={limit:10,page:1,order:"fullname",globalStatusFilter:"",pauseTypeFilter:""},b.logout=function(e,n){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"}),b.agents[e.id]&&(b.agents[e.id].online=!1),b.rpcAgents[e.id]&&(b.rpcAgents[e.id].online=!1),T()}).catch(function(e){m.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.staff.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},b.queueAdd=function(e,n){t.show({controller:"AgentqueueaddController",controllerAs:"vm",templateUrl:"app/main/apps/staff/views/agents/edit/queueadd/queueadd.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{agent:e,agents:[],channel:"mail",direction:"inbound",crudPermissions:b.crudPermissions}})},b.pause=function(n,e){return d.user.pause({id:n.id,type:e}).$promise.then(function(e){b.agents[n.id]&&_.merge(b.agents[n.id],_.pick(e,A)),b.rpcAgents[n.id]&&_.merge(b.rpcAgents[n.id],_.pick(e,A)),w(b.agents[n.id])}).catch(function(e){m.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.staff.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},b.unPause=function(n){return d.user.unpause({id:n.id}).$promise.then(function(e){b.agents[n.id]&&_.merge(b.agents[n.id],_.pick(e,A)),b.rpcAgents[n.id]&&_.merge(b.rpcAgents[n.id],_.pick(e,A)),w(b.agents[n.id])}).catch(function(e){m.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.staff.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},b.showInfo=function(e){t.show(t.alert().clickOutsideToClose(!0).title("Legend").htmlContent("<div>TODO legend status + state</div>").ok("Ok").targetEvent(e))},b.getAgentStatus=O,b.getAgentGlobalStatus=w,b.isPause=I,b.checkPause=function(e){return"pause"===e},b.isPartialPause=function(e){return"*pause"===e},b.onSave=function(e){b.agents[e.id]&&(_.merge(b.agents[e.id],_.pick(_.omit(e,E),A)),_.merge(b.rpcAgents[e.id],_.pick(_.omit(e,E),A)),w(b.agents[e.id]))},b.onUpdate=function(e){b.agents[e.id]&&(_.merge(b.agents[e.id],_.pick(e,A)),_.merge(b.rpcAgents[e.id],_.pick(e,A)),e.lastPauseAt&&(b.agents[e.id].globalStatusTime=e.lastPauseAt,b.rpcAgents[e.id].globalStatusTime=e.lastPauseAt),w(b.agents[e.id]))},b.onInit=T,b.onConnect=function(e){b.agents[b.agentInternal[e.destaccountcode]]&&(_.merge(b.agents[b.agentInternal[e.destaccountcode]],_.pick(e,["queue","destconnectedlinenum","routealias"])),_.merge(b.rpcAgents[b.agentInternal[e.destaccountcode]],_.pick(e,["queue","destconnectedlinenum","routealias"])))},b.onComplete=function(e){b.agents[b.agentInternal[e.destaccountcode]]&&(b.agents[b.agentInternal[e.destaccountcode]]=_.omit(b.agents[b.agentInternal[e.destaccountcode]],["queue","destconnectedlinenum"]),b.rpcAgents[b.agentInternal[e.destaccountcode]]=_.omit(b.rpcAgents[b.agentInternal[e.destaccountcode]],["queue","destconnectedlinenum"]))},b.screenRecording=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:"api.user.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},c.on("user:save",b.onSave),c.on("user:update",b.onUpdate),c.on("user:agentconnect",b.onConnect),c.on("user:agentcomplete",b.onComplete),T();var S=f(function(){b.load&&(b.load=!1,T())},999);function T(e){b.load=!1;var n,t,a=o.defer();b.promise=a.promise,b.filteredAgents=[],b.order=[],_.forIn(b.agents,function(e,n){b.rpcAgents[n]&&_.merge(e,_.pick(_.omit(b.rpcAgents[n],E),A)),w(e),e.online?(b.filteredAgents.push(e),b.agentInternal[e.internal]=n):e.globalStatusTime=_.toNumber(moment().format("x"))}),b.query.globalStatusFilter&&_.remove(b.filteredAgents,function(e){return e.globalStatus!==b.query.globalStatusFilter}),b.query.pauseTypeFilter&&_.remove(b.filteredAgents,function(e){return e.pauseType!==b.query.pauseTypeFilter}),b.query.filter&&_.remove(b.filteredAgents,function(e){return e.fullname.toLowerCase().indexOf(b.query.filter.toLowerCase())<0}),b.filteredAgents=(n=b.filteredAgents,t=_.startsWith(b.query.order,"-")?"desc":"asc",_.orderBy(n,[b.query.order.replace("-","")],[t]));var i=(b.query.page-1)*b.query.limit;b.paginatedAgents=_.drop(b.filteredAgents,i).slice(0,b.query.limit);for(var s=0;s<b.paginatedAgents.length;s+=1)b.order.push(b.paginatedAgents[s].id);a.resolve(),b.load=!0}function I(e){return"pause"===e||"*pause"===e}function C(e){return"idle"===e||"unknown"===e||"unavailable"===e||"ringing"===e||_.isNil(e)}function O(e,n){return"voice"===n?"idle"!==e[n+"Status"]?e[n+"Status"]:e[n+"Pause"]?e[n+"Status"]="pause":"idle":e[n+"Pause"]?e[n+"Status"]="pause":e[n+"Status"]}function w(e){var n="unknown";n=_.every([O(e,"voice"),O(e,"chat"),O(e,"mail"),O(e,"openchannel"),O(e,"sms"),O(e,"whatsapp"),O(e,"fax")],I)?"pause":_.some([O(e,"voice"),O(e,"chat"),O(e,"mail"),O(e,"openchannel"),O(e,"sms"),O(e,"whatsapp"),O(e,"fax")],I)?"*pause":_.every([O(e,"voice"),O(e,"chat"),O(e,"mail"),O(e,"openchannel"),O(e,"sms"),O(e,"whatsapp"),O(e,"fax")],C)?"idle":"busy",e.globalStatus!==n&&(e.globalStatus=n,e.init?(e.init=!1,e.globalStatusTime=I(n)?_.toNumber(moment(e.lastPauseAt).format("x")):_.max([e.voiceStatusTime,e.chatStatusTime,e.mailStatusTime,e.smsStatusTime,e.whatsappStatusTime,e.openchannelStatusTime,e.faxStatusTime])):e.globalStatusTime=_.toNumber(moment().format("x")))}e.$on("$destroy",function(){c.removeAllListeners("user:save"),c.removeAllListeners("user:update"),c.removeAllListeners("user:agentconnect"),c.removeAllListeners("user:agentcomplete"),S&&(f.cancel(S),S=null)})}e.$inject=["$scope","$q","$timeout","$mdDialog","$document","$filter","pauses","agents","rpcAgents","api","socket","toasty","helperClasses","userProfile","userProfileSection","Auth","license","$interval"],angular.module("app.voice").controller("AgentsMailRealtimeController",e)}(),function(){"use strict";function e(e,t,a,n,i,s,o,r,l,d,c){var m=this,u=["loggedIn","available","waiting","paused"],p=n(function(){},999);m.currentUser=c.getCurrentUser(),m.queues=i,m.userProfileSection=d&&1==d.count?d.rows[0]:null,m.crudPermissions=c.parseCrudPermissions(m.userProfileSection?m.userProfileSection.crudPermissions:null),m.query={id:c.isUser()?m.currentUser.id:void 0,section:c.isUser()?"MailQueues":void 0,channel:"mail",sort:"name",limit:10,page:1},m.getQueues=function(){m.query.offset=(m.query.page-1)*m.query.limit,s.realtime.getQueues(m.query).$promise.then(function(e){m.queues=e}).catch(function(e){console.error(e)})},m.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:m.queues.rows,license:null,setting:null,crudPermissions:m.crudPermissions}})},m.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:m.queues.rows,realtime:!1,crudPermissions:m.crudPermissions}})},o.on("mail_queue:save",function(e){var n=_.find(m.queues.rows,["id",e.id]);n&&_.merge(n,_.pick(e,u))}),o.on("userMailQueue:save",function(e){var n=_.find(m.queues.rows,["id",e.MailQueueId]);n&&(n.loggedInDb++,n.agents.push({id:e.UserId}))}),o.on("userMailQueue:remove",function(e){var n=_.find(m.queues.rows,["id",e.MailQueueId]);n&&(0<n.loggedInDb&&n.loggedInDb--,_.remove(n.agents,["id",e.UserId]))}),o.on("user:update",function(t){m.queues.rows.forEach(function(e){var n=_.find(e.agents,["id",t.id]);n&&(!1===t.online?(n.online=!1,e.loggedInDb-=1,n.paused?(n.paused=!1,e.paused-=1):e.available-=1):n.online?t.mailPause?(n.paused=!0,e.paused+=1,e.available-=1):!t.mailPause&&n.paused&&(n.paused=!1,e.paused-=1,e.available+=1):(n.online=!0,e.loggedInDb+=1,e.available+=1))})}),e.$on("$destroy",function(){o.removeAllListeners("mail_queue:save"),o.removeAllListeners("userMailQueue:remove"),o.removeAllListeners("userMailQueue:save"),o.removeAllListeners("user:update"),p&&n.cancel(p)})}e.$inject=["$scope","$mdDialog","$document","$interval","queues","api","socket","toasty","userProfile","userProfileSection","Auth"],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(n.disconnect(),n.connect(),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,_.pick(e.toJSON(),_.keys(n))),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=2,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){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,_.pick(e.toJSON(),_.keys(n))),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:"CreateOrEditHopperCampaignIdDialogController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/ivrCampaigns/edit/hoppers/dialog.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}})},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,_.pick(e.toJSON(),_.keys(n))),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,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,_.pick(e.toJSON(),_.keys(n))),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:"CreateOrEditHopperVoiceQueueIdDialogController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/queueCampaigns/edit/hoppers/dialog.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}})},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)}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.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,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})})});var n=_.find(g.hoppers,{id:e.id});n&&_.merge(n,_.pick(e.toJSON(),_.keys(n))),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})}),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,description,mandatoryDisposition,mandatoryDispositionPauseId,dialPredictiveIntervalMaxThreshold,dialPredictiveIntervalMinThreshold",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,o,n,t,a,i,s,r,l,d,c,m,u,p,g,v,h,f){var b=this,A=["userpic","online","lastLoginAt","lastPauseAt","pauseType","lastPauseAt","internal","address","chatPause","openchannelPause","mailPause","smsPause","whatsappPause","faxPause","voicePause","chatCapacity","openchannelCapacity","mailCapacity","smsCapacity","whatsappCapacity","faxCapacity","chatCurrentCapacity","openchannelCurrentCapacity","mailCurrentCapacity","smsCurrentCapacity","whatsappCurrentCapacity","faxCurrentCapacity","chatStatus","openchannelStatus","mailStatus","smsStatus","whatsappStatus","faxStatus","voiceStatus","chatStatusTime","openchannelStatusTime","mailStatusTime","smsStatusTime","whatsappStatusTime","faxStatusTime","voiceStatusTime","queue","destconnectedlinenum","screenrecording","phoneBarEnableScreenRecordingByAgent","phoneBarEnableAutomaticScreenRecording"],E=["chatPause","openchannelPause","mailPause","smsPause","whatsappPause","faxPause","voicePause","online"];for(var y in b.currentUser=v.getCurrentUser(),b.availableStates=["ringing","inuse","busy","onhold","not_inuse"],b.pauses=s||{count:0,rows:[]},b.license=h,b.userProfile=p,b.userProfileSection=g&&1==g.count?g.rows[0]:null,b.crudPermissions=v.parseCrudPermissions(b.userProfileSection?b.userProfileSection.crudPermissions:null),b.agents=r?_.keyBy(r.rows?r.rows:[],"id"):{},b.rpcAgents=l?_.keyBy(l.rows?l.rows:[],"id"):{},b.paginatedAgents={},b.load=!1,b.order=[],b.agentInternal={},b.agents)b.agents.hasOwnProperty(y)&&(b.agents[y].init=!0);b.query={limit:10,page:1,order:"fullname",globalStatusFilter:"",pauseTypeFilter:""},b.logout=function(e,n){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"}),b.agents[e.id]&&(b.agents[e.id].online=!1),b.rpcAgents[e.id]&&(b.rpcAgents[e.id].online=!1),T()}).catch(function(e){m.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.staff.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},b.queueAdd=function(e,n){t.show({controller:"AgentqueueaddController",controllerAs:"vm",templateUrl:"app/main/apps/staff/views/agents/edit/queueadd/queueadd.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{agent:e,agents:[],channel:"voice",direction:"outbound",crudPermissions:b.crudPermissions}})},b.pause=function(n,e){return d.user.pause({id:n.id,type:e}).$promise.then(function(e){b.agents[n.id]&&_.merge(b.agents[n.id],_.pick(e,A)),b.rpcAgents[n.id]&&_.merge(b.rpcAgents[n.id],_.pick(e,A)),w(b.agents[n.id])}).catch(function(e){m.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.staff.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},b.unPause=function(n){return d.user.unpause({id:n.id}).$promise.then(function(e){b.agents[n.id]&&_.merge(b.agents[n.id],_.pick(e,A)),b.rpcAgents[n.id]&&_.merge(b.rpcAgents[n.id],_.pick(e,A)),w(b.agents[n.id])}).catch(function(e){m.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.staff.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},b.showInfo=function(e){t.show(t.alert().clickOutsideToClose(!0).title("Legend").htmlContent("<div>TODO legend status + state</div>").ok("Ok").targetEvent(e))},b.getAgentStatus=O,b.getAgentGlobalStatus=w,b.isPause=I,b.checkPause=function(e){return"pause"===e},b.isPartialPause=function(e){return"*pause"===e},b.onSave=function(e){b.agents[e.id]&&(_.merge(b.agents[e.id],_.pick(_.omit(e,E),A)),_.merge(b.rpcAgents[e.id],_.pick(_.omit(e,E),A)),w(b.agents[e.id]))},b.onUpdate=function(e){b.agents[e.id]&&(_.merge(b.agents[e.id],_.pick(e,A)),_.merge(b.rpcAgents[e.id],_.pick(e,A)),e.lastPauseAt&&(b.agents[e.id].globalStatusTime=e.lastPauseAt,b.rpcAgents[e.id].globalStatusTime=e.lastPauseAt),w(b.agents[e.id]))},b.onInit=T,b.onConnect=function(e){b.agents[b.agentInternal[e.destaccountcode]]&&(_.merge(b.agents[b.agentInternal[e.destaccountcode]],_.pick(e,["queue","destconnectedlinenum","routealias"])),_.merge(b.rpcAgents[b.agentInternal[e.destaccountcode]],_.pick(e,["queue","destconnectedlinenum","routealias"])))},b.onComplete=function(e){b.agents[b.agentInternal[e.destaccountcode]]&&(b.agents[b.agentInternal[e.destaccountcode]]=_.omit(b.agents[b.agentInternal[e.destaccountcode]],["queue","destconnectedlinenum"]),b.rpcAgents[b.agentInternal[e.destaccountcode]]=_.omit(b.rpcAgents[b.agentInternal[e.destaccountcode]],["queue","destconnectedlinenum"]))},b.screenRecording=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:"api.user.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},c.on("user:save",b.onSave),c.on("user:update",b.onUpdate),c.on("user:agentconnect",b.onConnect),c.on("user:agentcomplete",b.onComplete),T();var S=f(function(){b.load&&(b.load=!1,T())},999);function T(e){b.load=!1;var n,t,a=o.defer();b.promise=a.promise,b.filteredAgents=[],b.order=[],_.forIn(b.agents,function(e,n){b.rpcAgents[n]&&_.merge(e,_.pick(_.omit(b.rpcAgents[n],E),A)),w(e),e.online?(b.filteredAgents.push(e),b.agentInternal[e.internal]=n):e.globalStatusTime=_.toNumber(moment().format("x"))}),b.query.globalStatusFilter&&_.remove(b.filteredAgents,function(e){return e.globalStatus!==b.query.globalStatusFilter}),b.query.pauseTypeFilter&&_.remove(b.filteredAgents,function(e){return e.pauseType!==b.query.pauseTypeFilter}),b.query.filter&&_.remove(b.filteredAgents,function(e){return e.fullname.toLowerCase().indexOf(b.query.filter.toLowerCase())<0}),b.filteredAgents=(n=b.filteredAgents,t=_.startsWith(b.query.order,"-")?"desc":"asc",_.orderBy(n,[b.query.order.replace("-","")],[t]));var i=(b.query.page-1)*b.query.limit;b.paginatedAgents=_.drop(b.filteredAgents,i).slice(0,b.query.limit);for(var s=0;s<b.paginatedAgents.length;s+=1)b.order.push(b.paginatedAgents[s].id);a.resolve(),b.load=!0}function I(e){return"pause"===e||"*pause"===e}function C(e){return"idle"===e||"unknown"===e||"unavailable"===e||"ringing"===e||_.isNil(e)}function O(e,n){return"voice"===n?"idle"!==e[n+"Status"]?e[n+"Status"]:e[n+"Pause"]?e[n+"Status"]="pause":"idle":e[n+"Pause"]?e[n+"Status"]="pause":e[n+"Status"]}function w(e){var n="unknown";n=_.every([O(e,"voice"),O(e,"chat"),O(e,"mail"),O(e,"openchannel"),O(e,"sms"),O(e,"whatsapp"),O(e,"fax")],I)?"pause":_.some([O(e,"voice"),O(e,"chat"),O(e,"mail"),O(e,"openchannel"),O(e,"sms"),O(e,"whatsapp"),O(e,"fax")],I)?"*pause":_.every([O(e,"voice"),O(e,"chat"),O(e,"mail"),O(e,"openchannel"),O(e,"sms"),O(e,"whatsapp"),O(e,"fax")],C)?"idle":"busy",e.globalStatus!==n&&(e.globalStatus=n,e.init?(e.init=!1,e.globalStatusTime=I(n)?_.toNumber(moment(e.lastPauseAt).format("x")):_.max([e.voiceStatusTime,e.chatStatusTime,e.mailStatusTime,e.smsStatusTime,e.whatsappStatusTime,e.openchannelStatusTime,e.faxStatusTime])):e.globalStatusTime=_.toNumber(moment().format("x")))}e.$on("$destroy",function(){c.removeAllListeners("user:save"),c.removeAllListeners("user:update"),c.removeAllListeners("user:agentconnect"),c.removeAllListeners("user:agentcomplete"),S&&(f.cancel(S),S=null)})}e.$inject=["$scope","$q","$timeout","$mdDialog","$document","$filter","pauses","agents","rpcAgents","api","socket","toasty","helperClasses","userProfile","userProfileSection","Auth","license","$interval"],angular.module("app.voice").controller("AgentsMotionDialerRealtimeController",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){var m=this,u=["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"],p=n(function(){},999);m.currentUser=c.getCurrentUser(),m.queues=i,m.userProfileSection=d&&1==d.count?d.rows[0]:null,m.crudPermissions=c.parseCrudPermissions(m.userProfileSection?m.userProfileSection.crudPermissions:null),m.query={id:c.isUser()?m.currentUser.id:void 0,section:c.isUser()?"QueueCampaigns":void 0,channel:"voice",type:"outbound",sort:"name",limit:10,page:1},m.getQueues=function(){m.query.offset=(m.query.page-1)*m.query.limit,s.realtime.getQueues(m.query).$promise.then(function(e){m.queues=e}).catch(function(e){console.error(e)})},m.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:m.queues.rows,license:null,setting:null,crudPermissions:m.crudPermissions}})},m.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:m.queues.rows,realtime:!0,crudPermissions:m.crudPermissions}})},m.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}})},o.onWithoutApply("voice_queue:save",function(e){var n=_.find(m.queues.rows,["id",e.id]);n&&(_.merge(n,_.pick(e,u)),_.isNil(e.startPredictive)&&(n.startPredictive=void 0))}),o.on("userVoiceQueueRt:save",function(e){var n=_.find(m.queues.rows,["id",e.MotionDialerQueueId]);n&&(n.loggedInDb++,n.agents.push({id:e.UserId}))}),o.on("user:agentconnect",function(t){m.queues.rows.forEach(function(e){var n=_.find(e.agents,["id",t.id]);n&&(e.available-=1)})}),o.on("user:agentcomplete",function(t){m.queues.rows.forEach(function(e){var n=_.find(e.agents,["id",t.id]);n&&(e.available+=1)})}),o.on("user:update",function(t){m.queues.rows.forEach(function(e){var n=_.find(e.agents,["id",t.id]);n&&(!1===t.online?(n.online=!1,e.loggedInDb-=1,n.paused?(n.paused=!1,e.paused-=1):e.available-=1):n.online?t.voicePause?(n.paused=!0,e.paused+=1,e.available-=1):!t.voicePause&&n.paused&&(n.paused=!1,e.paused-=1,e.available+=1):(n.online=!0,e.loggedInDb+=1,e.available+=1))})}),e.$on("$destroy",function(){o.removeAllListeners("voice_queue:save"),o.removeAllListeners("userVoiceQueueRt:save"),o.removeAllListeners("user:agentconnect"),o.removeAllListeners("user:agentcomplete"),o.removeAllListeners("user:update"),p&&n.cancel(p)})}e.$inject=["$scope","$mdDialog","$document","$interval","queues","api","socket","toasty","userProfile","userProfileSection","Auth"],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(n.disconnect(),n.connect(),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,_.pick(e.toJSON(),_.keys(n))),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){m.openchannelAccountInteractions=e||{count:0,rows:[]};for(var n=0;n<m.openchannelAccountInteractions.rows.length;n+=1){var t=m.openchannelAccountInteractions.rows[n];v(t),t.Owner.name=h(t)}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=d.openchannelInteraction.get(m.query,u).$promise}function g(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||p(),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 v(e){e.from?e.contactName=e.from:e.Contact?e.contactName=(e.Contact.firstName||"")+" "+(e.Contact.lastName||""):e.contactName=i.instant("OPENCHANNEL.UNKNOWN")}function h(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"]}}]},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(){g(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=u,m.getOpenchannelAccountInteractions=p,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,p()}}).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=g,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){g(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,_.pick(e.toJSON(),_.keys(n))),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,_.pick(e.toJSON(),_.keys(n))),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,o,n,t,a,i,s,r,l,d,c,m,u,p,g,v,h,f){var b=this,A=["userpic","online","lastLoginAt","lastPauseAt","pauseType","lastPauseAt","internal","address","chatPause","openchannelPause","mailPause","smsPause","whatsappPause","faxPause","voicePause","chatCapacity","openchannelCapacity","mailCapacity","smsCapacity","whatsappCapacity","faxCapacity","chatCurrentCapacity","openchannelCurrentCapacity","mailCurrentCapacity","smsCurrentCapacity","whatsappCurrentCapacity","faxCurrentCapacity","chatStatus","openchannelStatus","mailStatus","smsStatus","whatsappStatus","faxStatus","voiceStatus","chatStatusTime","openchannelStatusTime","mailStatusTime","smsStatusTime","whatsappStatusTime","faxStatusTime","voiceStatusTime","queue","destconnectedlinenum","screenrecording","phoneBarEnableScreenRecordingByAgent","phoneBarEnableAutomaticScreenRecording"],E=["chatPause","openchannelPause","mailPause","smsPause","whatsappPause","faxPause","voicePause","online"];for(var y in b.currentUser=v.getCurrentUser(),b.availableStates=["ringing","inuse","busy","onhold","not_inuse"],b.pauses=s||{count:0,rows:[]},b.license=h,b.userProfile=p,b.userProfileSection=g&&1==g.count?g.rows[0]:null,b.crudPermissions=v.parseCrudPermissions(b.userProfileSection?b.userProfileSection.crudPermissions:null),b.agents=r?_.keyBy(r.rows?r.rows:[],"id"):{},b.rpcAgents=l?_.keyBy(l.rows?l.rows:[],"id"):{},b.paginatedAgents={},b.load=!1,b.order=[],b.agentInternal={},b.agents)b.agents.hasOwnProperty(y)&&(b.agents[y].init=!0);b.query={limit:10,page:1,order:"fullname",globalStatusFilter:"",pauseTypeFilter:""},b.logout=function(e,n){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"}),b.agents[e.id]&&(b.agents[e.id].online=!1),b.rpcAgents[e.id]&&(b.rpcAgents[e.id].online=!1),T()}).catch(function(e){m.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.staff.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},b.queueAdd=function(e,n){t.show({controller:"AgentqueueaddController",controllerAs:"vm",templateUrl:"app/main/apps/staff/views/agents/edit/queueadd/queueadd.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{agent:e,agents:[],channel:"openchannel",direction:"inbound",crudPermissions:b.crudPermissions}})},b.pause=function(n,e){return d.user.pause({id:n.id,type:e}).$promise.then(function(e){b.agents[n.id]&&_.merge(b.agents[n.id],_.pick(e,A)),b.rpcAgents[n.id]&&_.merge(b.rpcAgents[n.id],_.pick(e,A)),w(b.agents[n.id])}).catch(function(e){m.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.staff.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},b.unPause=function(n){return d.user.unpause({id:n.id}).$promise.then(function(e){b.agents[n.id]&&_.merge(b.agents[n.id],_.pick(e,A)),b.rpcAgents[n.id]&&_.merge(b.rpcAgents[n.id],_.pick(e,A)),w(b.agents[n.id])}).catch(function(e){m.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.staff.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},b.showInfo=function(e){t.show(t.alert().clickOutsideToClose(!0).title("Legend").htmlContent("<div>TODO legend status + state</div>").ok("Ok").targetEvent(e))},b.getAgentStatus=O,b.getAgentGlobalStatus=w,b.isPause=I,b.checkPause=function(e){return"pause"===e},b.isPartialPause=function(e){return"*pause"===e},b.onSave=function(e){b.agents[e.id]&&(_.merge(b.agents[e.id],_.pick(_.omit(e,E),A)),_.merge(b.rpcAgents[e.id],_.pick(_.omit(e,E),A)),w(b.agents[e.id]))},b.onUpdate=function(e){b.agents[e.id]&&(_.merge(b.agents[e.id],_.pick(e,A)),_.merge(b.rpcAgents[e.id],_.pick(e,A)),e.lastPauseAt&&(b.agents[e.id].globalStatusTime=e.lastPauseAt,b.rpcAgents[e.id].globalStatusTime=e.lastPauseAt),w(b.agents[e.id]))},b.onInit=T,b.onConnect=function(e){b.agents[b.agentInternal[e.destaccountcode]]&&(_.merge(b.agents[b.agentInternal[e.destaccountcode]],_.pick(e,["queue","destconnectedlinenum","routealias"])),_.merge(b.rpcAgents[b.agentInternal[e.destaccountcode]],_.pick(e,["queue","destconnectedlinenum","routealias"])))},b.onComplete=function(e){b.agents[b.agentInternal[e.destaccountcode]]&&(b.agents[b.agentInternal[e.destaccountcode]]=_.omit(b.agents[b.agentInternal[e.destaccountcode]],["queue","destconnectedlinenum"]),b.rpcAgents[b.agentInternal[e.destaccountcode]]=_.omit(b.rpcAgents[b.agentInternal[e.destaccountcode]],["queue","destconnectedlinenum"]))},b.screenRecording=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:"api.user.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},c.on("user:save",b.onSave),c.on("user:update",b.onUpdate),c.on("user:agentconnect",b.onConnect),c.on("user:agentcomplete",b.onComplete),T();var S=f(function(){b.load&&(b.load=!1,T())},999);function T(e){b.load=!1;var n,t,a=o.defer();b.promise=a.promise,b.filteredAgents=[],b.order=[],_.forIn(b.agents,function(e,n){b.rpcAgents[n]&&_.merge(e,_.pick(_.omit(b.rpcAgents[n],E),A)),w(e),e.online?(b.filteredAgents.push(e),b.agentInternal[e.internal]=n):e.globalStatusTime=_.toNumber(moment().format("x"))}),b.query.globalStatusFilter&&_.remove(b.filteredAgents,function(e){return e.globalStatus!==b.query.globalStatusFilter}),b.query.pauseTypeFilter&&_.remove(b.filteredAgents,function(e){return e.pauseType!==b.query.pauseTypeFilter}),b.query.filter&&_.remove(b.filteredAgents,function(e){return e.fullname.toLowerCase().indexOf(b.query.filter.toLowerCase())<0}),b.filteredAgents=(n=b.filteredAgents,t=_.startsWith(b.query.order,"-")?"desc":"asc",_.orderBy(n,[b.query.order.replace("-","")],[t]));var i=(b.query.page-1)*b.query.limit;b.paginatedAgents=_.drop(b.filteredAgents,i).slice(0,b.query.limit);for(var s=0;s<b.paginatedAgents.length;s+=1)b.order.push(b.paginatedAgents[s].id);a.resolve(),b.load=!0}function I(e){return"pause"===e||"*pause"===e}function C(e){return"idle"===e||"unknown"===e||"unavailable"===e||"ringing"===e||_.isNil(e)}function O(e,n){return"voice"===n?"idle"!==e[n+"Status"]?e[n+"Status"]:e[n+"Pause"]?e[n+"Status"]="pause":"idle":e[n+"Pause"]?e[n+"Status"]="pause":e[n+"Status"]}function w(e){var n="unknown";n=_.every([O(e,"voice"),O(e,"chat"),O(e,"mail"),O(e,"openchannel"),O(e,"sms"),O(e,"whatsapp"),O(e,"fax")],I)?"pause":_.some([O(e,"voice"),O(e,"chat"),O(e,"mail"),O(e,"openchannel"),O(e,"sms"),O(e,"whatsapp"),O(e,"fax")],I)?"*pause":_.every([O(e,"voice"),O(e,"chat"),O(e,"mail"),O(e,"openchannel"),O(e,"sms"),O(e,"whatsapp"),O(e,"fax")],C)?"idle":"busy",e.globalStatus!==n&&(e.globalStatus=n,e.init?(e.init=!1,e.globalStatusTime=I(n)?_.toNumber(moment(e.lastPauseAt).format("x")):_.max([e.voiceStatusTime,e.chatStatusTime,e.mailStatusTime,e.smsStatusTime,e.whatsappStatusTime,e.openchannelStatusTime,e.faxStatusTime])):e.globalStatusTime=_.toNumber(moment().format("x")))}e.$on("$destroy",function(){c.removeAllListeners("user:save"),c.removeAllListeners("user:update"),c.removeAllListeners("user:agentconnect"),c.removeAllListeners("user:agentcomplete"),S&&(f.cancel(S),S=null)})}e.$inject=["$scope","$q","$timeout","$mdDialog","$document","$filter","pauses","agents","rpcAgents","api","socket","toasty","helperClasses","userProfile","userProfileSection","Auth","license","$interval"],angular.module("app.voice").controller("AgentsOpenchannelRealtimeController",e)}(),function(){"use strict";function e(e,t,a,n,i,s,o,r,l,d,c){var m=this,u=["loggedIn","available","waiting","paused"],p=n(function(){},999);m.currentUser=c.getCurrentUser(),m.queues=i,m.userProfileSection=d&&1==d.count?d.rows[0]:null,m.crudPermissions=c.parseCrudPermissions(m.userProfileSection?m.userProfileSection.crudPermissions:null),m.query={id:c.isUser()?m.currentUser.id:void 0,section:c.isUser()?"OpenchannelQueues":void 0,channel:"openchannel",sort:"name",limit:10,page:1},m.getQueues=function(){m.query.offset=(m.query.page-1)*m.query.limit,s.realtime.getQueues(m.query).$promise.then(function(e){m.queues=e}).catch(function(e){console.error(e)})},m.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:m.queues.rows,license:null,setting:null,crudPermissions:m.crudPermissions}})},m.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:m.queues.rows,realtime:!1,crudPermissions:m.crudPermissions}})},o.on("openchannel_queue:save",function(e){var n=_.find(m.queues.rows,["id",e.id]);n&&_.merge(n,_.pick(e,u))}),o.on("userOpenchannelQueue:save",function(e){var n=_.find(m.queues.rows,["id",e.OpenchannelQueueId]);n&&(n.loggedInDb++,n.agents.push({id:e.UserId}))}),o.on("userOpenchannelQueue:remove",function(e){var n=_.find(m.queues.rows,["id",e.OpenchannelQueueId]);n&&(0<n.loggedInDb&&n.loggedInDb--,_.remove(n.agents,["id",e.UserId]))}),o.on("user:update",function(t){m.queues.rows.forEach(function(e){var n=_.find(e.agents,["id",t.id]);n&&(!1===t.online?(n.online=!1,e.loggedInDb-=1,n.paused?(n.paused=!1,e.paused-=1):e.available-=1):n.online?t.openchannelPause?(n.paused=!0,e.paused+=1,e.available-=1):!t.openchannelPause&&n.paused&&(n.paused=!1,e.paused-=1,e.available+=1):(n.online=!0,e.loggedInDb+=1,e.available+=1))})}),e.$on("$destroy",function(){o.removeAllListeners("openchannel_queue:save"),o.removeAllListeners("userOpenchannelQueue:remove"),o.removeAllListeners("userOpenchannelQueue:save"),o.removeAllListeners("user:update"),p&&n.cancel(p)})}e.$inject=["$scope","$mdDialog","$document","$interval","queues","api","socket","toasty","userProfile","userProfileSection","Auth"],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(n.disconnect(),n.connect(),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){var v=this;v.license=p,v.setting=g,v.currentUser=u.getCurrentUser(),v.cloudProviders=l||{count:0,rows:[]},v.table="cloudProviders",v.listOrder="",v.listOrderAsc=null,v.selectedAiTools=[],v.query={fields:"createdAt,updatedAt,id,name,service,data2,data1",sort:"-updatedAt",limit:10,page:1},v.arrayservice=_.keyBy([{option:"AmazonAWS",value:"'AmazonAWS'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),v.editdialog=function(e,n){i.show({controller:"CreateOrEditCloudProviderDialogController",controllerAs:"vm",templateUrl:"app/main/apps/settings/views/cloudProviders/create/dialog.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{cloudProvider:e,cloudProviders:v.cloudProviders.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("cloudProvider")+"?").htmlContent("<b>"+(e.name||"cloudProvider")+"</b> will be deleted.").ariaLabel("delete cloudProvider").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){A(e)},function(){console.log("CANCEL")})},v.success=b,v.getAiTools=function(){v.query.offset=(v.query.page-1)*v.query.limit,u.hasRole("admin")?v.promise=d.cloudProvider.get(v.query,b).$promise:(v.query.id=v.userProfile.id,v.query.section="AiTools",v.promise=d.userProfile.getResources(v.query,b).$promise)},v.createOrEditCloudProvider=function(e,n){i.show({controller:"CreateOrEditCloudProviderDialogController",controllerAs:"vm",templateUrl:"app/main/apps/settings/views/cloudProviders/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{cloudProvider:n,cloudProviders:v.cloudProviders.rows,license:v.license,setting:v.setting,crudPermissions:v.crudPermissions}})},v.deleteCloudProvider=A,v.exportSelectedAiTools=function(){var e=angular.copy(v.selectedAiTools);return v.selectedAiTools=[],e},v.deleteSelectedAiTools=function(e){var n=i.confirm().title("Are you sure want to delete the selected cloudProviders?").htmlContent("<b>"+v.selectedAiTools.length+" selected</b> will be deleted.").ariaLabel("delete CloudProviders").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){v.selectedAiTools.forEach(function(e){A(e)}),v.selectedAiTools=[]})},v.deselectAiTools=function(){v.selectedAiTools=[]},v.selectAllAiTools=function(){v.selectedAiTools=v.cloudProviders.rows};var h=!0,f=1;function b(e){v.cloudProviders=e||{count:0,rows:[]}}function A(e){d.cloudProvider.delete({id:e.id}).$promise.then(function(){_.remove(v.cloudProviders.rows,{id:e.id}),v.cloudProviders.count-=1,v.cloudProviders.rows.length||v.getAiTools(),m.success({title:_.startCase("CloudProvider")+" 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:DELETEcloudProvider"}];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:DELETEcloudProvider",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.getAiTools())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","cloudProviders","api","msUtils","toasty","Auth","license","setting"],angular.module("app.settings").controller("CloudProvidersController",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_CLOUDPROVIDER",p.cloudProvider=angular.copy(l),p.cloudProviders=r,p.newCloudProvider=!1,p.cloudProvider||(p.cloudProvider={},p.title="SETTINGS.NEW_CLOUDPROVIDER",p.newCloudProvider=!0),p.addNewCloudProvider=function(){p.errors=[],d.cloudProvider.save(p.cloudProvider).$promise.then(function(e){p.cloudProviders.unshift(e.toJSON()),o.success({title:"CloudProvider properly created",msg:p.cloudProvider.name?p.cloudProvider.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.cloudProvider.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.cloudProvider.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},p.saveCloudProvider=function(){p.errors=[],d.cloudProvider.update({id:p.cloudProvider.id},p.cloudProvider).$promise.then(function(e){var n=_.find(p.cloudProviders,{id:e.id});n&&_.merge(n,_.pick(e.toJSON(),_.keys(n))),o.success({title:"CloudProvider properly saved!",msg:p.cloudProvider.name?p.cloudProvider.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.cloudProvider.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.cloudProvider.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},p.deleteCloudProvider=function(e){p.errors=[];var n=a.confirm().title("Are you sure?").content("The cloudProvider will be deleted.").ariaLabel("Delete CloudProvider").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.cloudProvider.delete({id:p.cloudProvider.id}).$promise.then(function(){_.remove(p.cloudProviders,{id:p.cloudProvider.id}),o.success({title:"CloudProvider properly deleted!",msg:(p.cloudProvider.name||"cloudProvider")+" has been deleted!"}),g(p.cloudProvider)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){p.errors=e.data.errors||[{message:e.toString(),type:"api.cloudProvider.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.cloudProvider.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","cloudProviders","cloudProvider","api","Auth","license","setting"],angular.module("app.settings").controller("CreateOrEditCloudProviderDialogController",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,_.pick(e.toJSON(),_.keys(n))),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,_.pick(e.toJSON(),_.keys(n))),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,t,a,i,e,s){var o=this;o.license=i||{},o.agents=0,o.users=0,o.telephones=0,o.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"}],o.modules=[{name:"cm",icon:"icon-account-circle"},{name:"dialer",icon:"icon-crosshairs"},{name:"jscripty",icon:"icon-console"}],o.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"}],o.sessions=[{name:"callysquare",icon:"icon-sitemap",restart:!0,label:"channels",enabled:"voice"},{name:"virtual",icon:"icon-dots-horizontal",restart:!1,label:"sessions",enabled:"chat"}],o.others=[{name:"update",icon:"icon-cloud-download"}],o.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:o.channels,modules:o.modules,addons:o.addons,sessions:o.sessions,others:o.others}})},o.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}})},o.gotoProcess=function(e){a.go("app.settings.system",{tab:1})},s.user.get({fields:"id",role:"agent",online:!0}).$promise.then(function(e){return o.agents=e&&e.count?e.count:0,s.user.get({fields:"id",role:"user,admin"}).$promise}).then(function(e){return o.users=e&&e.count?e.count:0,s.user.get({fields:"id",role:"telephone"}).$promise}).then(function(e){o.telephones=e&&e.count?e.count:0}).catch(function(e){console.log(e)})}e.$inject=["$document","$mdDialog","$state","license","toasty","api"],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,_.pick(e.toJSON(),_.keys(n))),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(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_SMTP",g.smtp=angular.copy(l),g.smtps=r,g.newSmtp=!1,g.smtp||(g.smtp={service:!0},g.title="SETTINGS.NEW_SMTP",g.newSmtp=!0),g.addNewSmtp=function(){g.errors=[],d.mailAccount.save(g.smtp).$promise.then(function(e){g.smtps.unshift(e.toJSON()),o.success({title:"Smtp properly created",msg:g.smtp.name?g.smtp.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.mailAccount.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.mailAccount.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveSmtp=function(){g.errors=[],d.mailAccount.update({id:g.smtp.id},g.smtp).$promise.then(function(e){var n=_.find(g.smtps,{id:e.id});n&&_.merge(n,_.pick(e.toJSON(),_.keys(n))),o.success({title:"Smtp properly saved!",msg:g.smtp.name?g.smtp.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.mailAccount.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.mailAccount.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteSmtp=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The smtp will be deleted.").ariaLabel("Delete Smtp").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.mailAccount.delete({id:g.smtp.id}).$promise.then(function(){_.remove(g.smtps,{id:g.smtp.id}),o.success({title:"Smtp properly deleted!",msg:(g.smtp.name||"smtp")+" has been deleted!"}),v(g.smtp)}).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++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.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.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","smtps","smtp","api","Auth","license","setting","crudPermissions"],angular.module("app.settings").controller("CreateOrEditSmtpDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i){var s=this;s.currentUser=i.getCurrentUser(),s.license=a,s.smtps=e,s.smtp={},s.smtps&&s.smtps.rows&&s.smtps.rows.length?s.smtp=s.smtps.rows[0]:s.smtp={service:!0,Smtp:{service:null}},s.saveSmtp=function(){s.smtp.id?n.mailAccount.update({id:s.smtp.id},s.smtp).$promise.then(function(){t.success({title:"Smtp updated!",msg:s.smtp.name?s.smtp.name+" has been updated!":""})}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETmailAccount",msg:e.data?JSON.stringify(e.data):e.toString()})}):n.mailAccount.save(s.smtp).$promise.then(function(e){_.merge(s.smtp,e),t.success({title:"Smtp updated!",msg:s.smtp.name?s.smtp.name+" has been updated!":""})}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETmailAccount",msg:e.data?JSON.stringify(e.data):e.toString()})})},s.verifySmtp=function(){s.smtp.id&&n.mailAccount.verifySmtp({id:s.smtp.id}).$promise.then(function(){t.success({title:"Smtp verified!",msg:s.smtp.name?s.smtp.name+" has been verified!":""})}).catch(function(e){t.error({title:"Smtp not verified! Remember to save before to verify!",msg:e.data?JSON.stringify(e.data):e.toString(),timeout:1e4})})}}e.$inject=["smtps","api","toasty","license","Auth"],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,o,n,t,a,i,s,r,l,d,c,m,u,p,g,v,h,f){var b=this,A=["userpic","online","lastLoginAt","lastPauseAt","pauseType","lastPauseAt","internal","address","chatPause","openchannelPause","mailPause","smsPause","whatsappPause","faxPause","voicePause","chatCapacity","openchannelCapacity","mailCapacity","smsCapacity","whatsappCapacity","faxCapacity","chatCurrentCapacity","openchannelCurrentCapacity","mailCurrentCapacity","smsCurrentCapacity","whatsappCurrentCapacity","faxCurrentCapacity","chatStatus","openchannelStatus","mailStatus","smsStatus","whatsappStatus","faxStatus","voiceStatus","chatStatusTime","openchannelStatusTime","mailStatusTime","smsStatusTime","whatsappStatusTime","faxStatusTime","voiceStatusTime","queue","destconnectedlinenum","screenrecording","phoneBarEnableScreenRecordingByAgent","phoneBarEnableAutomaticScreenRecording"],E=["chatPause","openchannelPause","mailPause","smsPause","whatsappPause","faxPause","voicePause","online"];for(var y in b.currentUser=v.getCurrentUser(),b.availableStates=["ringing","inuse","busy","onhold","not_inuse"],b.pauses=s||{count:0,rows:[]},b.license=h,b.userProfile=p,b.userProfileSection=g&&1==g.count?g.rows[0]:null,b.crudPermissions=v.parseCrudPermissions(b.userProfileSection?b.userProfileSection.crudPermissions:null),b.agents=r?_.keyBy(r.rows?r.rows:[],"id"):{},b.rpcAgents=l?_.keyBy(l.rows?l.rows:[],"id"):{},b.paginatedAgents={},b.load=!1,b.order=[],b.agentInternal={},b.agents)b.agents.hasOwnProperty(y)&&(b.agents[y].init=!0);b.query={limit:10,page:1,order:"fullname",globalStatusFilter:"",pauseTypeFilter:""},b.logout=function(e,n){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"}),b.agents[e.id]&&(b.agents[e.id].online=!1),b.rpcAgents[e.id]&&(b.rpcAgents[e.id].online=!1),T()}).catch(function(e){m.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.staff.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},b.queueAdd=function(e,n){t.show({controller:"AgentqueueaddController",controllerAs:"vm",templateUrl:"app/main/apps/staff/views/agents/edit/queueadd/queueadd.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{agent:e,agents:[],channel:"sms",direction:"inbound",crudPermissions:b.crudPermissions}})},b.pause=function(n,e){return d.user.pause({id:n.id,type:e}).$promise.then(function(e){b.agents[n.id]&&_.merge(b.agents[n.id],_.pick(e,A)),b.rpcAgents[n.id]&&_.merge(b.rpcAgents[n.id],_.pick(e,A)),w(b.agents[n.id])}).catch(function(e){m.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.staff.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},b.unPause=function(n){return d.user.unpause({id:n.id}).$promise.then(function(e){b.agents[n.id]&&_.merge(b.agents[n.id],_.pick(e,A)),b.rpcAgents[n.id]&&_.merge(b.rpcAgents[n.id],_.pick(e,A)),w(b.agents[n.id])}).catch(function(e){m.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.staff.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},b.showInfo=function(e){t.show(t.alert().clickOutsideToClose(!0).title("Legend").htmlContent("<div>TODO legend status + state</div>").ok("Ok").targetEvent(e))},b.getAgentStatus=O,b.getAgentGlobalStatus=w,b.isPause=I,b.checkPause=function(e){return"pause"===e},b.isPartialPause=function(e){return"*pause"===e},b.onSave=function(e){b.agents[e.id]&&(_.merge(b.agents[e.id],_.pick(_.omit(e,E),A)),_.merge(b.rpcAgents[e.id],_.pick(_.omit(e,E),A)),w(b.agents[e.id]))},b.onUpdate=function(e){b.agents[e.id]&&(_.merge(b.agents[e.id],_.pick(e,A)),_.merge(b.rpcAgents[e.id],_.pick(e,A)),e.lastPauseAt&&(b.agents[e.id].globalStatusTime=e.lastPauseAt,b.rpcAgents[e.id].globalStatusTime=e.lastPauseAt),w(b.agents[e.id]))},b.onInit=T,b.onConnect=function(e){b.agents[b.agentInternal[e.destaccountcode]]&&(_.merge(b.agents[b.agentInternal[e.destaccountcode]],_.pick(e,["queue","destconnectedlinenum","routealias"])),_.merge(b.rpcAgents[b.agentInternal[e.destaccountcode]],_.pick(e,["queue","destconnectedlinenum","routealias"])))},b.onComplete=function(e){b.agents[b.agentInternal[e.destaccountcode]]&&(b.agents[b.agentInternal[e.destaccountcode]]=_.omit(b.agents[b.agentInternal[e.destaccountcode]],["queue","destconnectedlinenum"]),b.rpcAgents[b.agentInternal[e.destaccountcode]]=_.omit(b.rpcAgents[b.agentInternal[e.destaccountcode]],["queue","destconnectedlinenum"]))},b.screenRecording=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:"api.user.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},c.on("user:save",b.onSave),c.on("user:update",b.onUpdate),c.on("user:agentconnect",b.onConnect),c.on("user:agentcomplete",b.onComplete),T();var S=f(function(){b.load&&(b.load=!1,T())},999);function T(e){b.load=!1;var n,t,a=o.defer();b.promise=a.promise,b.filteredAgents=[],b.order=[],_.forIn(b.agents,function(e,n){b.rpcAgents[n]&&_.merge(e,_.pick(_.omit(b.rpcAgents[n],E),A)),w(e),e.online?(b.filteredAgents.push(e),b.agentInternal[e.internal]=n):e.globalStatusTime=_.toNumber(moment().format("x"))}),b.query.globalStatusFilter&&_.remove(b.filteredAgents,function(e){return e.globalStatus!==b.query.globalStatusFilter}),b.query.pauseTypeFilter&&_.remove(b.filteredAgents,function(e){return e.pauseType!==b.query.pauseTypeFilter}),b.query.filter&&_.remove(b.filteredAgents,function(e){return e.fullname.toLowerCase().indexOf(b.query.filter.toLowerCase())<0}),b.filteredAgents=(n=b.filteredAgents,t=_.startsWith(b.query.order,"-")?"desc":"asc",_.orderBy(n,[b.query.order.replace("-","")],[t]));var i=(b.query.page-1)*b.query.limit;b.paginatedAgents=_.drop(b.filteredAgents,i).slice(0,b.query.limit);for(var s=0;s<b.paginatedAgents.length;s+=1)b.order.push(b.paginatedAgents[s].id);a.resolve(),b.load=!0}function I(e){return"pause"===e||"*pause"===e}function C(e){return"idle"===e||"unknown"===e||"unavailable"===e||"ringing"===e||_.isNil(e)}function O(e,n){return"voice"===n?"idle"!==e[n+"Status"]?e[n+"Status"]:e[n+"Pause"]?e[n+"Status"]="pause":"idle":e[n+"Pause"]?e[n+"Status"]="pause":e[n+"Status"]}function w(e){var n="unknown";n=_.every([O(e,"voice"),O(e,"chat"),O(e,"mail"),O(e,"openchannel"),O(e,"sms"),O(e,"whatsapp"),O(e,"fax")],I)?"pause":_.some([O(e,"voice"),O(e,"chat"),O(e,"mail"),O(e,"openchannel"),O(e,"sms"),O(e,"whatsapp"),O(e,"fax")],I)?"*pause":_.every([O(e,"voice"),O(e,"chat"),O(e,"mail"),O(e,"openchannel"),O(e,"sms"),O(e,"whatsapp"),O(e,"fax")],C)?"idle":"busy",e.globalStatus!==n&&(e.globalStatus=n,e.init?(e.init=!1,e.globalStatusTime=I(n)?_.toNumber(moment(e.lastPauseAt).format("x")):_.max([e.voiceStatusTime,e.chatStatusTime,e.mailStatusTime,e.smsStatusTime,e.whatsappStatusTime,e.openchannelStatusTime,e.faxStatusTime])):e.globalStatusTime=_.toNumber(moment().format("x")))}e.$on("$destroy",function(){c.removeAllListeners("user:save"),c.removeAllListeners("user:update"),c.removeAllListeners("user:agentconnect"),c.removeAllListeners("user:agentcomplete"),S&&(f.cancel(S),S=null)})}e.$inject=["$scope","$q","$timeout","$mdDialog","$document","$filter","pauses","agents","rpcAgents","api","socket","toasty","helperClasses","userProfile","userProfileSection","Auth","license","$interval"],angular.module("app.voice").controller("AgentsSmsRealtimeController",e)}(),function(){"use strict";function e(e,t,a,n,i,s,o,r,l,d,c){var m=this,u=["loggedIn","available","waiting","paused"],p=n(function(){},999);m.currentUser=c.getCurrentUser(),m.queues=i,m.userProfileSection=d&&1==d.count?d.rows[0]:null,m.crudPermissions=c.parseCrudPermissions(m.userProfileSection?m.userProfileSection.crudPermissions:null),m.query={id:c.isUser()?m.currentUser.id:void 0,section:c.isUser()?"SmsQueues":void 0,channel:"sms",sort:"name",limit:10,page:1},m.getQueues=function(){m.query.offset=(m.query.page-1)*m.query.limit,s.realtime.getQueues(m.query).$promise.then(function(e){m.queues=e}).catch(function(e){console.error(e)})},m.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:m.queues.rows,license:null,setting:null,crudPermissions:m.crudPermissions}})},m.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:m.queues.rows,realtime:!1,crudPermissions:m.crudPermissions}})},o.on("sms_queue:save",function(e){var n=_.find(m.queues.rows,["id",e.id]);n&&_.merge(n,_.pick(e,u))}),o.on("userSmsQueue:save",function(e){var n=_.find(m.queues.rows,["id",e.SmsQueueId]);n&&(n.loggedInDb++,n.agents.push({id:e.UserId}))}),o.on("userSmsQueue:remove",function(e){var n=_.find(m.queues.rows,["id",e.SmsQueueId]);n&&(0<n.loggedInDb&&n.loggedInDb--,_.remove(n.agents,["id",e.UserId]))}),o.on("user:update",function(t){m.queues.rows.forEach(function(e){var n=_.find(e.agents,["id",t.id]);n&&(!1===t.online?(n.online=!1,e.loggedInDb-=1,n.paused?(n.paused=!1,e.paused-=1):e.available-=1):n.online?t.smsPause?(n.paused=!0,e.paused+=1,e.available-=1):!t.smsPause&&n.paused&&(n.paused=!1,e.paused-=1,e.available+=1):(n.online=!0,e.loggedInDb+=1,e.available+=1))})}),e.$on("$destroy",function(){o.removeAllListeners("sms_queue:save"),o.removeAllListeners("userSmsQueue:remove"),o.removeAllListeners("userSmsQueue:save"),o.removeAllListeners("user:update"),p&&n.cancel(p)})}e.$inject=["$scope","$mdDialog","$document","$interval","queues","api","socket","toasty","userProfile","userProfileSection","Auth"],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(n.disconnect(),n.connect(),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,_.pick(e.toJSON(),_.keys(n))),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){m.smsAccountInteractions=e||{count:0,rows:[]};for(var n=0;n<m.smsAccountInteractions.rows.length;n+=1){var t=m.smsAccountInteractions.rows[n];v(t),t.Owner.name=h(t)}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=d.smsInteraction.get(m.query,u).$promise}function g(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||p(),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 v(e){e.Contact?(e.contactName=(e.Contact.firstName||"")+" "+(e.Contact.lastName||""),e.contactInfo=e.Contact.mobile):e.contactName=i.instant("DASHBOARDS.UNKNOWN")}function h(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"]}}]},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(){g(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=u,m.getSmsAccountInteractions=p,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,p()}}).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=g,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){g(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,_.pick(e.toJSON(),_.keys(n))),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,_.pick(e.toJSON(),_.keys(n))),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,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.agents=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="agents",f.listOrder="",f.listOrderAsc=null,f.selectedAgents=[],f.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",role:"agent",sort:"-updatedAt",limit:10,page:1},f.arrayshowWebBar=_.keyBy([{option:"Phonebar",value:"0"},{option:"External",value:"1"},{option:"WebRTC",value:"2"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraytransport=_.keyBy([{option:"udp",value:"'udp'"},{option:"tcp",value:"'tcp'"},{option:"ws",value:"'ws'",ngIf:"vm.agent.showWebBar == 1"},{option:"wss",value:"'wss'",ngIf:"vm.agent.showWebBar == 1"},{option:"tls",value:"'tls'",ngIf:"vm.agent.showWebBar == 1"}],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.arraytype=_.keyBy([{option:"Friend",value:"'friend'"},{option:"User",value:"'user'"},{option:"Peer",value:"'peer'"}],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.arrayextensionMonitor=_.keyBy([{option:"Inactive",value:"''"},{option:"wav",value:"'wav'"},{option:"wav49",value:"'WAV'"},{option:"gsm",value:"'gsm'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.editstate=function(e,n){t.go("app.staff.agents.edit",{id:e.id,agent:e,crudPermissions:f.crudPermissions})},f.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:f.agents?f.agents.rows:[],crudPermissions:f.crudPermissions}})},f.deleteconfirm=function(e,n){var t=i.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");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getAgents=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="Agents",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditAgent=function(e,n){i.show({controller:"CreateOrEditAgentDialogController",controllerAs:"vm",templateUrl:"app/main/apps/staff/views/agents/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{agent:n,agents:f.agents.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteAgent=y,f.exportSelectedAgents=function(){var e=angular.copy(f.selectedAgents);return f.selectedAgents=[],e},f.deleteSelectedAgents=function(e){var n=i.confirm().title("Are you sure want to delete the selected agents?").htmlContent("<b>"+f.selectedAgents.length+" selected</b> will be deleted.").ariaLabel("delete Agents").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedAgents.forEach(function(e){y(e)}),f.selectedAgents=[]})},f.deselectAgents=function(){f.selectedAgents=[]},f.selectAllAgents=function(){f.selectedAgents=f.agents.rows};var b=!0,A=1;function E(e){f.agents=e||{count:0,rows:[]}}function y(e){m.user.delete({id:e.id}).$promise.then(function(){_.remove(f.agents.rows,{id:e.id}),f.agents.count-=1,f.agents.rows.length||f.getAgents(),p.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){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.getAgents())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","agents","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.staff").controller("AgentsController",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_AGENT",g.agent=angular.copy(l),g.agents=r,g.newAgent=!1,g.agent||(g.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},g.title="STAFF.NEW_AGENT",g.newAgent=!0),g.addNewAgent=function(){g.errors=[],d.user.save(g.agent).$promise.then(function(e){g.agents.unshift(e.toJSON()),o.success({title:"Agent properly created",msg:g.agent.name?g.agent.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.saveAgent=function(){g.errors=[],d.user.update({id:g.agent.id},g.agent).$promise.then(function(e){var n=_.find(g.agents,{id:e.id});n&&_.merge(n,_.pick(e.toJSON(),_.keys(n))),o.success({title:"Agent properly saved!",msg:g.agent.name?g.agent.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.deleteAgent=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The agent will be deleted.").ariaLabel("Delete Agent").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.user.delete({id:g.agent.id}).$promise.then(function(){_.remove(g.agents,{id:g.agent.id}),o.success({title:"Agent properly deleted!",msg:(g.agent.name||"agent")+" has been deleted!"}),v(g.agent)}).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","agents","agent","api","Auth","license","setting","crudPermissions"],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:"bull"===c.channel?"voice":c.channel,type:c.direction,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:c.direction,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.QUEUEADD_AGENT_"+c.channel.toUpperCase()+"_"+c.direction.toUpperCase()),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_QUEUES_"+c.channel.toUpperCase()+"_"+c.direction.toUpperCase()),labelSelected:s.instant("STAFF.SELECTED_QUEUES_"+c.channel.toUpperCase()+"_"+c.direction.toUpperCase()),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,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=a,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=n.protocol()+"://"+n.host(),u.agent=c||e.params.agent||{},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.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:u.agents?u.agents.rows:[],channel:n,direction:a||"inbound",crudPermissions:u.crudPermissions}})},u.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:u.agents?u.agents.rows:[],crudPermissions:u.crudPermissions}})},u.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:o,agents:u.agents?u.agents.rows:[],crudPermissions:u.crudPermissions}})},u.onEnableScreenRecordingByAgentSelection=function(){["phoneBarEnableAutomaticScreenRecording"].forEach(function(e){u.agent.phoneBarEnableScreenRecordingByAgent&&(u.agent[e]=!u.agent.phoneBarEnableScreenRecordingByAgent)})},u.onEnableAutomaticScreenRecordingSelection=function(){["phoneBarEnableScreenRecordingByAgent"].forEach(function(e){u.agent.phoneBarEnableAutomaticScreenRecording&&(u.agent[e]=!u.agent.phoneBarEnableAutomaticScreenRecording)})},u.alert=l.info,u.gotoAgents=function(){e.go("app.staff.agents",{},{reload:"app.staff.agents"})},u.saveAgent=function(){u.agent=_.omit(u.agent,"userpic"),r.user.update({id:u.agent.id},u.agent).$promise.then(function(){l.success({title:"Agent updated!",msg:u.agent.name?u.agent.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.agent&&(t=_.find(u.contexts,{name:u.agent.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","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,_.pick(e.toJSON(),_.keys(n))),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,_.pick(e.toJSON(),_.keys(n))),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,_.pick(e.toJSON(),_.keys(n))),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,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_USER",g.user=angular.copy(l),g.users=r,g.newUser=!1,g.user||(g.user={role:"user",autointernal:!0,context:"from-sip"},g.title="STAFF.NEW_USER",g.newUser=!0),g.addNewUser=function(){g.errors=[],d.user.save(g.user).$promise.then(function(e){g.users.unshift(e.toJSON()),o.success({title:"User properly created",msg:g.user.name?g.user.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.saveUser=function(){g.errors=[],d.user.update({id:g.user.id},g.user).$promise.then(function(e){var n=_.find(g.users,{id:e.id});n&&_.merge(n,_.pick(e.toJSON(),_.keys(n))),o.success({title:"User properly saved!",msg:g.user.name?g.user.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.deleteUser=function(e){if(c.getCurrentUser().id===g.user.id)return o.error({title:"User not deleted!",msg:"You can't remove yourself"});g.errors=[];var n=a.confirm().title("Are you sure?").content("The user will be deleted.").ariaLabel("Delete User").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.user.delete({id:g.user.id}).$promise.then(function(){_.remove(g.users,{id:g.user.id}),o.success({title:"User properly deleted!",msg:(g.user.name||"user")+" has been deleted!"}),v(g.user)}).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,d.userProfile.get({fields:"id,name",sort:"name"}).$promise.then(function(e){g.userProfiles=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_USERPROFILES",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","users","user","api","Auth","license","setting","crudPermissions"],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,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.user=c||e.params.user||{},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.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:u.users?u.users.rows:[],crudPermissions:u.crudPermissions}})},u.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:o,users:u.users?u.users.rows:[],crudPermissions:u.crudPermissions}})},u.alert=l.info,u.gotoUsers=function(){e.go("app.staff.users",{},{reload:"app.staff.users"})},u.saveUser=function(){u.user=_.omit(u.user,"userpic"),r.user.update({id:u.user.id},u.user).$promise.then(function(){l.success({title:"User updated!",msg:u.user.name?u.user.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()})})},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.userProfile.get({fields:"id,name",sort:"name"}).$promise.then(function(e){u.userProfiles=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_USERPROFILES",msg:e.data?JSON.stringify(e.data):e.toString()})}),r.user.getApiKey({id:u.user.id}).$promise.then(function(e){u.user.apiKey=e.api_key?e.api_key:"N/A"}).catch(function(e){l.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","$translate","license","setting","api","toasty","Auth","user","userProfileSection"],angular.module("app.staff").controller("UserController",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.users=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="users",f.listOrder="",f.listOrderAsc=null,f.selectedUsers=[],f.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",role:"admin,user",sort:"-updatedAt",limit:10,page:1},f.arrayrole=_.keyBy([{option:"Admin",value:"'admin'"},{option:"User",value:"'user'"}],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.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.editstate=function(e,n){t.go("app.staff.users.edit",{id:e.id,user:e,crudPermissions:f.crudPermissions})},f.deleteconfirm=function(e,n){var t=i.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");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getUsers=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="Users",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditUser=function(e,n){i.show({controller:"CreateOrEditUserDialogController",controllerAs:"vm",templateUrl:"app/main/apps/staff/views/users/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{user:n,users:f.users.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteUser=y,f.exportSelectedUsers=function(){var e=angular.copy(f.selectedUsers);return f.selectedUsers=[],e},f.deleteSelectedUsers=function(e){var n=i.confirm().title("Are you sure want to delete the selected users?").htmlContent("<b>"+f.selectedUsers.length+" selected</b> will be deleted.").ariaLabel("delete Users").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedUsers.forEach(function(e){y(e)}),f.selectedUsers=[]})},f.deselectUsers=function(){f.selectedUsers=[]},f.selectAllUsers=function(){f.selectedUsers=f.users.rows},m.userProfile.get({fields:"id,name",sort:"name"}).$promise.then(function(e){f.userProfiles=e.rows||[]}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_USERPROFILES",msg:e.data?JSON.stringify(e.data):e.toString()})});var b=!0,A=1;function E(e){f.users=e||{count:0,rows:[]}}function y(e){m.user.delete({id:e.id}).$promise.then(function(){_.remove(f.users.rows,{id:e.id}),f.users.count-=1,f.users.rows.length||f.getUsers(),p.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){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.getUsers())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","users","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],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,_.pick(e.toJSON(),_.keys(n))),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){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,_.pick(e.toJSON(),_.keys(n))),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,e,i,s){var o=this;function r(e,n,t){return s.dashboardItem.update(t).$promise.catch(function(e){console.error(e)})}o.customDashboard={},o.voiceQueues=s.rpc.getVoiceQueues({fields:"id,name"}),o.init=function(e,n){return o.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},o.customDashboard=e,o.customDashboard.draggable={enabled:!0,handle:".draggable",stop:r},o.customDashboard.resizable={enabled:!0,handle:".resizable",stop:r},o.customDashboard.widgets=[],s.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=o.voiceQueues,e.rows[n].voiceQueuesSelected=_.map(o.voiceQueues.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",o.customDashboard.widgets.push(e.rows[n])}).catch(function(e){console.error(e)})},o.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:o.customDashboard.widgets,license:null,setting:null,crudPermissions:o.crudPermissions}}).then(function(e){if(e)for(var n=0;n<o.customDashboard.widgets.length;n+=1)o.customDashboard.widgets[n].id===e.id&&(o.customDashboard.widgets[n].attrs=e.attrs,o.customDashboard.widgets[n].voiceQueues=o.voiceQueues,o.customDashboard.widgets[n].voiceQueuesSelected=_.map(o.voiceQueues.rows,"id"),o.customDashboard.widgets[n].templateUrl="app/core/directives/ms-widget-engine/ms-widget-engine-"+o.customDashboard.widgets[n].type+"/ms-widget-engine."+o.customDashboard.widgets[n].type+".html")})},o.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 s.dashboardItem.delete({id:n.id}).$promise.then(function(e){_.remove(o.customDashboard.widgets,{id:n.id}),i.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){o.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETE.customDashboard"}];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:"SYSTEM:DELETEdashboard",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()});console.error(e)})})}}e.$inject=["$mdDialog","$document","socket","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",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,_.pick(e.toJSON(),_.keys(n))),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.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()})})}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 n="disposition";l?n=l.route:"user"===m.currentUser.role&&(n="userProfile");var t="get";l?t="getDispositions":"user"===m.currentUser.role&&(t="getResources");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"};(a=n,i=t,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",n,t].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,_.pick(e.toJSON(),_.keys(n))),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,_.pick(e.toJSON(),_.keys(n))),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,_.pick(e.toJSON(),_.keys(n))),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,_.pick(e.toJSON(),_.keys(n))),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,_.pick(e.toJSON(),_.keys(n))),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,_.pick(e.toJSON(),_.keys(n))),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,_.pick(e.toJSON(),_.keys(n))),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,_.pick(e.toJSON(),_.keys(n))),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()})})))):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"},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()})})}()}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(){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()})})))):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"},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()})})}()}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(){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,_.pick(e.toJSON(),_.keys(n))),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,_.pick(e.toJSON(),_.keys(n))),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,_.pick(e.toJSON(),_.keys(n))),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,_.pick(e.toJSON(),_.keys(n))),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,_.pick(e.toJSON(),_.keys(n))),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-sip"},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,_.pick(e.toJSON(),_.keys(n))),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,_.pick(e.toJSON(),_.keys(n))),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,_.pick(e.toJSON(),_.keys(n))),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,_.pick(e.toJSON(),_.keys(n))),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,_.pick(e.toJSON(),_.keys(n))),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",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};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,o,n,t,a,i,s,r,l,d,c,m,u,p,g,v,h,f){var b=this,A=["userpic","online","lastLoginAt","lastPauseAt","pauseType","lastPauseAt","internal","address","chatPause","openchannelPause","mailPause","smsPause","whatsappPause","faxPause","voicePause","chatCapacity","openchannelCapacity","mailCapacity","smsCapacity","whatsappCapacity","faxCapacity","chatCurrentCapacity","openchannelCurrentCapacity","mailCurrentCapacity","smsCurrentCapacity","whatsappCurrentCapacity","faxCurrentCapacity","chatStatus","openchannelStatus","mailStatus","smsStatus","whatsappStatus","faxStatus","voiceStatus","chatStatusTime","openchannelStatusTime","mailStatusTime","smsStatusTime","whatsappStatusTime","faxStatusTime","voiceStatusTime","queue","destconnectedlinenum","screenrecording","phoneBarEnableScreenRecordingByAgent","phoneBarEnableAutomaticScreenRecording","routealias"],E=["chatPause","openchannelPause","mailPause","smsPause","whatsappPause","faxPause","voicePause","online"];for(var y in b.currentUser=v.getCurrentUser(),b.availableStates=["ringing","inuse","busy","onhold","not_inuse"],b.pauses=s||{count:0,rows:[]},b.license=h,b.userProfile=p,b.userProfileSection=g&&1==g.count?g.rows[0]:null,b.crudPermissions=v.parseCrudPermissions(b.userProfileSection?b.userProfileSection.crudPermissions:null),b.agents=r?_.keyBy(r.rows?r.rows:[],"id"):{},b.rpcAgents=l?_.keyBy(l.rows?l.rows:[],"id"):{},b.paginatedAgents={},b.load=!1,b.order=[],b.agentInternal={},b.agents)b.agents.hasOwnProperty(y)&&(b.agents[y].init=!0);b.query={limit:10,page:1,order:"fullname",globalStatusFilter:"",pauseTypeFilter:""},b.logout=function(e,n){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"}),b.agents[e.id]&&(b.agents[e.id].online=!1),b.rpcAgents[e.id]&&(b.rpcAgents[e.id].online=!1),T()}).catch(function(e){m.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.staff.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},b.queueAdd=function(e,n){t.show({controller:"AgentqueueaddController",controllerAs:"vm",templateUrl:"app/main/apps/staff/views/agents/edit/queueadd/queueadd.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{agent:e,agents:[],channel:"voice",direction:"inbound",crudPermissions:b.crudPermissions}})},b.pause=function(n,e){return d.user.pause({id:n.id,type:e}).$promise.then(function(e){b.agents[n.id]&&_.merge(b.agents[n.id],_.pick(e,A)),b.rpcAgents[n.id]&&_.merge(b.rpcAgents[n.id],_.pick(e,A)),w(b.agents[n.id])}).catch(function(e){m.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.staff.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},b.unPause=function(n){return d.user.unpause({id:n.id}).$promise.then(function(e){b.agents[n.id]&&_.merge(b.agents[n.id],_.pick(e,A)),b.rpcAgents[n.id]&&_.merge(b.rpcAgents[n.id],_.pick(e,A)),w(b.agents[n.id])}).catch(function(e){m.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.staff.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},b.showInfo=function(e){t.show(t.alert().clickOutsideToClose(!0).title("Legend").htmlContent("<div>TODO legend status + state</div>").ok("Ok").targetEvent(e))},b.getAgentStatus=O,b.getAgentGlobalStatus=w,b.isPause=I,b.checkPause=function(e){return"pause"===e},b.isPartialPause=function(e){return"*pause"===e},b.onSave=function(e){b.agents[e.id]&&(_.merge(b.agents[e.id],_.pick(_.omit(e,E),A)),_.merge(b.rpcAgents[e.id],_.pick(_.omit(e,E),A)),w(b.agents[e.id]))},b.onUpdate=function(e){b.agents[e.id]&&(_.merge(b.agents[e.id],_.pick(e,A)),_.merge(b.rpcAgents[e.id],_.pick(e,A)),e.lastPauseAt&&(b.agents[e.id].globalStatusTime=e.lastPauseAt,b.rpcAgents[e.id].globalStatusTime=e.lastPauseAt),w(b.agents[e.id]))},b.onInit=T,b.onConnect=function(e){b.agents[b.agentInternal[e.destaccountcode]]&&(_.merge(b.agents[b.agentInternal[e.destaccountcode]],_.pick(e,["queue","destconnectedlinenum","routealias"])),_.merge(b.rpcAgents[b.agentInternal[e.destaccountcode]],_.pick(e,["queue","destconnectedlinenum","routealias"])))},b.onComplete=function(e){b.agents[b.agentInternal[e.destaccountcode]]&&(b.agents[b.agentInternal[e.destaccountcode]]=_.omit(b.agents[b.agentInternal[e.destaccountcode]],["queue","destconnectedlinenum"]),b.rpcAgents[b.agentInternal[e.destaccountcode]]=_.omit(b.rpcAgents[b.agentInternal[e.destaccountcode]],["queue","destconnectedlinenum"]))},b.screenRecording=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:"api.user.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},c.on("user:save",b.onSave),c.on("user:update",b.onUpdate),c.on("user:agentconnect",b.onConnect),c.on("user:agentcomplete",b.onComplete),T();var S=f(function(){b.load&&(b.load=!1,T())},999);function T(e){b.load=!1;var n,t,a=o.defer();b.promise=a.promise,b.filteredAgents=[],b.order=[],_.forIn(b.agents,function(e,n){b.rpcAgents[n]&&_.merge(e,_.pick(_.omit(b.rpcAgents[n],E),A)),w(e),e.online?(b.filteredAgents.push(e),b.agentInternal[e.internal]=n):e.globalStatusTime=_.toNumber(moment().format("x"))}),b.query.globalStatusFilter&&_.remove(b.filteredAgents,function(e){return e.globalStatus!==b.query.globalStatusFilter}),b.query.pauseTypeFilter&&_.remove(b.filteredAgents,function(e){return e.pauseType!==b.query.pauseTypeFilter}),b.query.filter&&_.remove(b.filteredAgents,function(e){return e.fullname.toLowerCase().indexOf(b.query.filter.toLowerCase())<0}),b.filteredAgents=(n=b.filteredAgents,t=_.startsWith(b.query.order,"-")?"desc":"asc",_.orderBy(n,[b.query.order.replace("-","")],[t]));var i=(b.query.page-1)*b.query.limit;b.paginatedAgents=_.drop(b.filteredAgents,i).slice(0,b.query.limit);for(var s=0;s<b.paginatedAgents.length;s+=1)b.order.push(b.paginatedAgents[s].id);a.resolve(),b.load=!0}function I(e){return"pause"===e||"*pause"===e}function C(e){return"idle"===e||"unknown"===e||"unavailable"===e||"ringing"===e||_.isNil(e)}function O(e,n){return"voice"===n?"idle"!==e[n+"Status"]?e[n+"Status"]:e[n+"Pause"]?e[n+"Status"]="pause":"idle":e[n+"Pause"]?e[n+"Status"]="pause":e[n+"Status"]}function w(e){var n="unknown";n=_.every([O(e,"voice"),O(e,"chat"),O(e,"mail"),O(e,"openchannel"),O(e,"sms"),O(e,"whatsapp"),O(e,"fax")],I)?"pause":_.some([O(e,"voice"),O(e,"chat"),O(e,"mail"),O(e,"openchannel"),O(e,"sms"),O(e,"whatsapp"),O(e,"fax")],I)?"*pause":_.every([O(e,"voice"),O(e,"chat"),O(e,"mail"),O(e,"openchannel"),O(e,"sms"),O(e,"whatsapp"),O(e,"fax")],C)?"idle":"busy",e.globalStatus!==n&&(e.globalStatus=n,e.init?(e.init=!1,e.globalStatusTime=I(n)?_.toNumber(moment(e.lastPauseAt).format("x")):_.max([e.voiceStatusTime,e.chatStatusTime,e.mailStatusTime,e.smsStatusTime,e.whatsappStatusTime,e.openchannelStatusTime,e.faxStatusTime])):e.globalStatusTime=_.toNumber(moment().format("x")))}e.$on("$destroy",function(){c.removeAllListeners("user:save"),c.removeAllListeners("user:update"),c.removeAllListeners("user:agentconnect"),c.removeAllListeners("user:agentcomplete"),S&&(f.cancel(S),S=null)})}e.$inject=["$scope","$q","$timeout","$mdDialog","$document","$filter","pauses","agents","rpcAgents","api","socket","toasty","helperClasses","userProfile","userProfileSection","Auth","license","$interval"],angular.module("app.voice").controller("AgentsVoiceRealtimeController",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){var m=this,u=["loggedIn","available","waiting","talking","paused"],p=n(function(){},999);m.currentUser=c.getCurrentUser(),m.queues=i,m.userProfileSection=d&&1==d.count?d.rows[0]:null,m.crudPermissions=c.parseCrudPermissions(m.userProfileSection?m.userProfileSection.crudPermissions:null),m.query={id:c.isUser()?m.currentUser.id:void 0,section:c.isUser()?"VoiceQueues":void 0,channel:"voice",type:"inbound",sort:"name",limit:10,page:1},m.getQueues=function(){m.query.offset=(m.query.page-1)*m.query.limit,s.realtime.getQueues(m.query).$promise.then(function(e){m.queues=e}).catch(function(e){console.error(e)})},m.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:m.queues.rows,license:null,setting:null,crudPermissions:m.crudPermissions}})},m.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:m.queues.rows,realtime:!0,crudPermissions:m.crudPermissions}})},o.onWithoutApply("voice_queue:save",function(e){var n=_.find(m.queues.rows,["id",e.id]);n&&(e.loggedIn===e.available&&0<e.waiting&&(e.available-=e.waiting),_.merge(n,_.pick(e,u)))}),o.on("userVoiceQueue:save",function(e){var n=_.find(m.queues.rows,["id",e.VoiceQueueId]);n&&(n.loggedInDb++,n.agents.push({id:e.UserId}))}),o.on("userVoiceQueue:remove",function(e){var n=_.find(m.queues.rows,["id",e.VoiceQueueId]);n&&(0<n.loggedInDb&&n.loggedInDb--,_.remove(n.agents,["id",e.UserId]))}),o.on("user:agentconnect",function(t){m.queues.rows.forEach(function(e){var n=_.find(e.agents,["id",t.id]);n&&(e.available-=1)})}),o.on("user:agentcomplete",function(t){m.queues.rows.forEach(function(e){var n=_.find(e.agents,["id",t.id]);n&&(e.available+=1)})}),o.on("user:update",function(t){m.queues.rows.forEach(function(e){var n=_.find(e.agents,["id",t.id]);n&&(!1===t.online?(n.online=!1,e.loggedInDb-=1,n.paused?(n.paused=!1,e.paused-=1):e.available-=1):n.online?t.voicePause?(n.paused=!0,e.paused+=1,e.available-=1):!t.voicePause&&n.paused&&(n.paused=!1,e.paused-=1,e.available+=1):(n.online=!0,e.loggedInDb+=1,e.available+=1))})}),e.$on("$destroy",function(){o.removeAllListeners("voice_queue:save"),o.removeAllListeners("userVoiceQueue:remove"),o.removeAllListeners("userVoiceQueue:save"),o.removeAllListeners("user:agentconnect"),o.removeAllListeners("user:agentcomplete"),o.removeAllListeners("user:update"),p&&n.cancel(p)})}e.$inject=["$scope","$mdDialog","$document","$interval","queues","api","socket","toasty","userProfile","userProfileSection","Auth"],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(n.disconnect(),n.connect(),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,_.pick(e.toJSON(),_.keys(n))),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,_.pick(e.toJSON(),_.keys(n))),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,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.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,_.pick(e.toJSON(),_.keys(n))),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,_.pick(e.toJSON(),_.keys(n))),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){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.voiceRecording=c||e.params.voiceRecording||{},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.gotoVoiceRecordings=function(){e.go("app.voice.voiceRecordings",{},{reload:"app.voice.voiceRecordings"})},u.saveVoiceRecording=function(){r.voiceRecording.update({id:u.voiceRecording.id},u.voiceRecording).$promise.then(function(){l.success({title:"VoiceRecording updated!",msg:u.voiceRecording.name?u.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","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){var f=this;function b(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 A(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 E(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()})})}f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.voiceRecordings=r||{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="voiceRecordings",f.listOrder="",f.listOrderAsc=null,f.selectedVoiceRecordings=[],f.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},f.query.createdAt=u.firstLastDayMonth(),f.quickFilters=[{name:"Start Date",key:"createdAt",type:"date",label:"DASHBOARDS.SELECT_DATE_RANGE"}],f.editstate=function(e,n){t.go("app.voice.voiceRecordings.edit",{id:e.id,voiceRecording:e,crudPermissions:f.crudPermissions})},f.runtranscriberuntranscribesentiment=b,f.runtranscribesentimentruntranscribesentiment=A,f.runsentimentruntranscribesentiment=E,f.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()})})},f.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()})})},f.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(){I(e)},function(){console.log("CANCEL")})},f.success=T,f.getVoiceRecordings=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.voiceRecording.get(f.query,T).$promise:(f.query.id=f.userProfile.id,f.query.section="VoiceRecordings",f.promise=m.userProfile.getResources(f.query,T).$promise)},f.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:f.voiceRecordings.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteVoiceRecording=I,f.exportSelectedVoiceRecordings=function(){var e=angular.copy(f.selectedVoiceRecordings);return f.selectedVoiceRecordings=[],e},f.deleteSelectedVoiceRecordings=function(e){var n=i.confirm().title("Are you sure want to delete the selected voiceRecordings?").htmlContent("<b>"+f.selectedVoiceRecordings.length+" selected</b> will be deleted.").ariaLabel("delete VoiceRecordings").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedVoiceRecordings.forEach(function(e){I(e)}),f.selectedVoiceRecordings=[]})},f.deselectVoiceRecordings=function(){f.selectedVoiceRecordings=[]},f.selectAllVoiceRecordings=function(){f.selectedVoiceRecordings=f.voiceRecordings.rows},f.runtranscribeSelectedVoiceRecordings=function(n){f.selectedVoiceRecordings.forEach(function(e){b(e,n)}),f.selectedVoiceRecordings=[]},f.runtranscribesentimentSelectedVoiceRecordings=function(n){f.selectedVoiceRecordings.forEach(function(e){A(e,n)}),f.selectedVoiceRecordings=[]},f.runsentimentSelectedVoiceRecordings=function(n){f.selectedVoiceRecordings.forEach(function(e){E(e,n)}),f.selectedVoiceRecordings=[]};var y=!0,S=1;function T(e){f.voiceRecordings=e||{count:0,rows:[]}}function I(e){m.voiceRecording.delete({id:e.id}).$promise.then(function(){_.remove(f.voiceRecordings.rows,{id:e.id}),f.voiceRecordings.count-=1,f.voiceRecordings.rows.length||f.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){f.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){y?o(function(){y=!1}):(n||(S=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=S),f.getVoiceRecordings())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","voiceRecordings","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.voice").controller("VoiceRecordingsController",e)}(),function(){"use strict";function e(e,o,n,t,a,i,s,r,l,d,c,m,u,p,g,v,h,f){var b=this,A=["userpic","online","lastLoginAt","lastPauseAt","pauseType","lastPauseAt","internal","address","chatPause","openchannelPause","mailPause","smsPause","whatsappPause","faxPause","voicePause","chatCapacity","openchannelCapacity","mailCapacity","smsCapacity","whatsappCapacity","faxCapacity","chatCurrentCapacity","openchannelCurrentCapacity","mailCurrentCapacity","smsCurrentCapacity","whatsappCurrentCapacity","faxCurrentCapacity","chatStatus","openchannelStatus","mailStatus","smsStatus","whatsappStatus","faxStatus","voiceStatus","chatStatusTime","openchannelStatusTime","mailStatusTime","smsStatusTime","whatsappStatusTime","faxStatusTime","voiceStatusTime","queue","destconnectedlinenum","screenrecording","phoneBarEnableScreenRecordingByAgent","phoneBarEnableAutomaticScreenRecording"],E=["chatPause","openchannelPause","mailPause","smsPause","whatsappPause","faxPause","voicePause","online"];for(var y in b.currentUser=v.getCurrentUser(),b.availableStates=["ringing","inuse","busy","onhold","not_inuse"],b.pauses=s||{count:0,rows:[]},b.license=h,b.userProfile=p,b.userProfileSection=g&&1==g.count?g.rows[0]:null,b.crudPermissions=v.parseCrudPermissions(b.userProfileSection?b.userProfileSection.crudPermissions:null),b.agents=r?_.keyBy(r.rows?r.rows:[],"id"):{},b.rpcAgents=l?_.keyBy(l.rows?l.rows:[],"id"):{},b.paginatedAgents={},b.load=!1,b.order=[],b.agentInternal={},b.agents)b.agents.hasOwnProperty(y)&&(b.agents[y].init=!0);b.query={limit:10,page:1,order:"fullname",globalStatusFilter:"",pauseTypeFilter:""},b.logout=function(e,n){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"}),b.agents[e.id]&&(b.agents[e.id].online=!1),b.rpcAgents[e.id]&&(b.rpcAgents[e.id].online=!1),T()}).catch(function(e){m.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.staff.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},b.queueAdd=function(e,n){t.show({controller:"AgentqueueaddController",controllerAs:"vm",templateUrl:"app/main/apps/staff/views/agents/edit/queueadd/queueadd.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{agent:e,agents:[],channel:"whatsapp",direction:"inbound",crudPermissions:b.crudPermissions}})},b.pause=function(n,e){return d.user.pause({id:n.id,type:e}).$promise.then(function(e){b.agents[n.id]&&_.merge(b.agents[n.id],_.pick(e,A)),b.rpcAgents[n.id]&&_.merge(b.rpcAgents[n.id],_.pick(e,A)),w(b.agents[n.id])}).catch(function(e){m.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.staff.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},b.unPause=function(n){return d.user.unpause({id:n.id}).$promise.then(function(e){b.agents[n.id]&&_.merge(b.agents[n.id],_.pick(e,A)),b.rpcAgents[n.id]&&_.merge(b.rpcAgents[n.id],_.pick(e,A)),w(b.agents[n.id])}).catch(function(e){m.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.staff.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},b.showInfo=function(e){t.show(t.alert().clickOutsideToClose(!0).title("Legend").htmlContent("<div>TODO legend status + state</div>").ok("Ok").targetEvent(e))},b.getAgentStatus=O,b.getAgentGlobalStatus=w,b.isPause=I,b.checkPause=function(e){return"pause"===e},b.isPartialPause=function(e){return"*pause"===e},b.onSave=function(e){b.agents[e.id]&&(_.merge(b.agents[e.id],_.pick(_.omit(e,E),A)),_.merge(b.rpcAgents[e.id],_.pick(_.omit(e,E),A)),w(b.agents[e.id]))},b.onUpdate=function(e){b.agents[e.id]&&(_.merge(b.agents[e.id],_.pick(e,A)),_.merge(b.rpcAgents[e.id],_.pick(e,A)),e.lastPauseAt&&(b.agents[e.id].globalStatusTime=e.lastPauseAt,b.rpcAgents[e.id].globalStatusTime=e.lastPauseAt),w(b.agents[e.id]))},b.onInit=T,b.onConnect=function(e){b.agents[b.agentInternal[e.destaccountcode]]&&(_.merge(b.agents[b.agentInternal[e.destaccountcode]],_.pick(e,["queue","destconnectedlinenum","routealias"])),_.merge(b.rpcAgents[b.agentInternal[e.destaccountcode]],_.pick(e,["queue","destconnectedlinenum","routealias"])))},b.onComplete=function(e){b.agents[b.agentInternal[e.destaccountcode]]&&(b.agents[b.agentInternal[e.destaccountcode]]=_.omit(b.agents[b.agentInternal[e.destaccountcode]],["queue","destconnectedlinenum"]),b.rpcAgents[b.agentInternal[e.destaccountcode]]=_.omit(b.rpcAgents[b.agentInternal[e.destaccountcode]],["queue","destconnectedlinenum"]))},b.screenRecording=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:"api.user.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},c.on("user:save",b.onSave),c.on("user:update",b.onUpdate),c.on("user:agentconnect",b.onConnect),c.on("user:agentcomplete",b.onComplete),T();var S=f(function(){b.load&&(b.load=!1,T())},999);function T(e){b.load=!1;var n,t,a=o.defer();b.promise=a.promise,b.filteredAgents=[],b.order=[],_.forIn(b.agents,function(e,n){b.rpcAgents[n]&&_.merge(e,_.pick(_.omit(b.rpcAgents[n],E),A)),w(e),e.online?(b.filteredAgents.push(e),b.agentInternal[e.internal]=n):e.globalStatusTime=_.toNumber(moment().format("x"))}),b.query.globalStatusFilter&&_.remove(b.filteredAgents,function(e){return e.globalStatus!==b.query.globalStatusFilter}),b.query.pauseTypeFilter&&_.remove(b.filteredAgents,function(e){return e.pauseType!==b.query.pauseTypeFilter}),b.query.filter&&_.remove(b.filteredAgents,function(e){return e.fullname.toLowerCase().indexOf(b.query.filter.toLowerCase())<0}),b.filteredAgents=(n=b.filteredAgents,t=_.startsWith(b.query.order,"-")?"desc":"asc",_.orderBy(n,[b.query.order.replace("-","")],[t]));var i=(b.query.page-1)*b.query.limit;b.paginatedAgents=_.drop(b.filteredAgents,i).slice(0,b.query.limit);for(var s=0;s<b.paginatedAgents.length;s+=1)b.order.push(b.paginatedAgents[s].id);a.resolve(),b.load=!0}function I(e){return"pause"===e||"*pause"===e}function C(e){return"idle"===e||"unknown"===e||"unavailable"===e||"ringing"===e||_.isNil(e)}function O(e,n){return"voice"===n?"idle"!==e[n+"Status"]?e[n+"Status"]:e[n+"Pause"]?e[n+"Status"]="pause":"idle":e[n+"Pause"]?e[n+"Status"]="pause":e[n+"Status"]}function w(e){var n="unknown";n=_.every([O(e,"voice"),O(e,"chat"),O(e,"mail"),O(e,"openchannel"),O(e,"sms"),O(e,"whatsapp"),O(e,"fax")],I)?"pause":_.some([O(e,"voice"),O(e,"chat"),O(e,"mail"),O(e,"openchannel"),O(e,"sms"),O(e,"whatsapp"),O(e,"fax")],I)?"*pause":_.every([O(e,"voice"),O(e,"chat"),O(e,"mail"),O(e,"openchannel"),O(e,"sms"),O(e,"whatsapp"),O(e,"fax")],C)?"idle":"busy",e.globalStatus!==n&&(e.globalStatus=n,e.init?(e.init=!1,e.globalStatusTime=I(n)?_.toNumber(moment(e.lastPauseAt).format("x")):_.max([e.voiceStatusTime,e.chatStatusTime,e.mailStatusTime,e.smsStatusTime,e.whatsappStatusTime,e.openchannelStatusTime,e.faxStatusTime])):e.globalStatusTime=_.toNumber(moment().format("x")))}e.$on("$destroy",function(){c.removeAllListeners("user:save"),c.removeAllListeners("user:update"),c.removeAllListeners("user:agentconnect"),c.removeAllListeners("user:agentcomplete"),S&&(f.cancel(S),S=null)})}e.$inject=["$scope","$q","$timeout","$mdDialog","$document","$filter","pauses","agents","rpcAgents","api","socket","toasty","helperClasses","userProfile","userProfileSection","Auth","license","$interval"],angular.module("app.voice").controller("AgentsWhatsappRealtimeController",e)}(),function(){"use strict";function e(e,t,a,n,i,s,o,r,l,d,c){var m=this,u=["loggedIn","available","waiting","paused"],p=n(function(){},999);m.currentUser=c.getCurrentUser(),m.queues=i,m.userProfileSection=d&&1==d.count?d.rows[0]:null,m.crudPermissions=c.parseCrudPermissions(m.userProfileSection?m.userProfileSection.crudPermissions:null),m.query={id:c.isUser()?m.currentUser.id:void 0,section:c.isUser()?"WhatsappQueues":void 0,channel:"whatsapp",sort:"name",limit:10,page:1},m.getQueues=function(){m.query.offset=(m.query.page-1)*m.query.limit,s.realtime.getQueues(m.query).$promise.then(function(e){m.queues=e}).catch(function(e){console.error(e)})},m.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:m.queues.rows,license:null,setting:null,crudPermissions:m.crudPermissions}})},m.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:m.queues.rows,realtime:!1,crudPermissions:m.crudPermissions}})},o.on("whatsapp_queue:save",function(e){var n=_.find(m.queues.rows,["id",e.id]);n&&_.merge(n,_.pick(e,u))}),o.on("userWhatsappQueue:save",function(e){var n=_.find(m.queues.rows,["id",e.WhatsappQueueId]);n&&(n.loggedInDb++,n.agents.push({id:e.UserId}))}),o.on("userWhatsappQueue:remove",function(e){var n=_.find(m.queues.rows,["id",e.WhatsappQueueId]);n&&(0<n.loggedInDb&&n.loggedInDb--,_.remove(n.agents,["id",e.UserId]))}),o.on("user:update",function(t){m.queues.rows.forEach(function(e){var n=_.find(e.agents,["id",t.id]);n&&(!1===t.online?(n.online=!1,e.loggedInDb-=1,n.paused?(n.paused=!1,e.paused-=1):e.available-=1):n.online?t.whatsappPause?(n.paused=!0,e.paused+=1,e.available-=1):!t.whatsappPause&&n.paused&&(n.paused=!1,e.paused-=1,e.available+=1):(n.online=!0,e.loggedInDb+=1,e.available+=1))})}),e.$on("$destroy",function(){o.removeAllListeners("whatsapp_queue:save"),o.removeAllListeners("userWhatsappQueue:remove"),o.removeAllListeners("userWhatsappQueue:save"),o.removeAllListeners("user:update"),p&&n.cancel(p)})}e.$inject=["$scope","$mdDialog","$document","$interval","queues","api","socket","toasty","userProfile","userProfileSection","Auth"],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(n.disconnect(),n.connect(),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(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=[],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!":""}),v(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=[],d.whatsappAccount.update({id:g.whatsappAccount.id},g.whatsappAccount).$promise.then(function(e){var n=_.find(g.whatsappAccounts,{id:e.id});n&&_.merge(n,_.pick(e.toJSON(),_.keys(n))),o.success({title:"WhatsappAccount properly saved!",msg:g.whatsappAccount.name?g.whatsappAccount.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.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!"}),v(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=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.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){m.whatsappAccountInteractions=e||{count:0,rows:[]};for(var n=0;n<m.whatsappAccountInteractions.rows.length;n+=1){var t=m.whatsappAccountInteractions.rows[n];v(t),t.Owner.name=h(t)}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=d.whatsappInteraction.get(m.query,u).$promise}function g(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||p(),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 v(e){e.Contact?e.contactName=(e.Contact.firstName||"")+" "+(e.Contact.lastName||""):e.contactName=i.instant("DASHBOARDS.UNKNOWN")}function h(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"]}}]},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(){g(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=u,m.getWhatsappAccountInteractions=p,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,p()}}).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=g,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){g(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.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(){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,_.pick(e.toJSON(),_.keys(n))),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",sort:"-updatedAt",limit:10,page:1},f.arraytype=_.keyBy([{option:"Twilio",value:"'twilio'"}],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,_.pick(e.toJSON(),_.keys(n))),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,s,a,i,o,r,l,d,c){var m=this;function u(e,n){return{id:e,title:n.name||"NONAME",state:"app.dashboards.custom",stateParams:n,weight:2,hidden:function(){return o.hasRole("agent")||!o.hasPermission(e)&&!o.hasRole("admin")}}}function p(e,n){return{id:e,title:n.name||"NONAME",state:"app.plugins.plugin",stateParams:n,weight:2,hidden:function(){return o.hasRole("agent")||!o.hasPermission(e)&&!o.hasRole("admin")}}}function g(e,n){var t={user:_.pick(o.getCurrentUser(),["id","name","fullname","email","role","internal","interface"])};n.agentUrl=Mustache.render(n.agentUrl,t),a.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!o.hasPermission(e)}})}function v(e){return _.map(e.children,function(e){return e.id})}i.clear(),m.isAgent=function(){return o.getCurrentUser()&&o.hasRole("agent")},s.saveItem("apps",{title:"APPS",group:!0,weight:1,hidden:function(){return o.hasRole("agent")}}),l.version.get().$promise.then(function(e){m.version=e&&e.current?e.current:"UNKNOWN"}).catch(function(e){m.version="UNKNOWN"}).finally(function(){s.saveItem("version",{title:"VERSION "+m.version,group:!0,weight:2,hidden:function(){return o.hasRole("agent")}})}),o.isLoggedIn()&&(r.gray&&i.warning({msg:e.instant("DASHBOARDS.LICENSE_EXPIRE_REMAINING_DAYS"),showClose:!0,timeout:!1}),l.dashboard.get().$promise.then(function(e){for(var n=0,t=0;t<e.rows.length;t+=1)n=99999+e.rows[t].id,s.saveItem("apps.dashboards.custom_"+n,u(n,e.rows[t]))}),l.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){s.saveItem("apps.plugins",{id:1900,title:"Plugins",translate:"PLUGINS.PLUGINS",icon:"icon-apps",permissions:{hidden:!0},weight:17,hidden:function(){return o.hasRole("agent")||!o.hasChildrenPermissions(v(this))&&!o.hasRole("admin")}});for(var a=0;a<t.length;a+=1)n=88888+t[a].id,s.saveItem("apps.plugins.plugin_"+n,p(n,t[a]));s.sort()}var i=_.filter(e.rows,function(e){return"never"!=e.sidebar&&"adminOnly"!=e.sidebar});if(0<i.length)for(a=0;a<i.length;a+=1)g(n=88888+i[a].id,i[a])}})),r.custom&&!d.defaultPageTitle&&d.pageTitle&&angular.element("#pageTitle").html(d.pageTitle),s.saveItem("apps.dashboards",{id:100,title:"Dashboards",translate:"DASHBOARDS.DASHBOARDS",icon:"icon-tile-four",weight:2,hidden:function(){return o.hasRole("agent")||!o.hasChildrenPermissions(v(this))&&!o.hasRole("admin")}}),s.saveItem("apps.dashboards.general",{id:101,title:"General",route:"",translate:"DASHBOARDS.GENERAL",state:"app.dashboards.general",weight:1,hidden:function(){return o.hasRole("agent")||!o.hasPermission(101)&&!o.hasRole("admin")}}),s.saveItem("apps.staff",{id:200,title:"Staff",translate:"STAFF.STAFF",icon:"icon-account-multiple",weight:3,hidden:function(){return o.hasRole("agent")||!o.hasChildrenPermissions(v(this))&&!o.hasRole("admin")}}),s.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 o.hasRole("agent")||o.hasRole("user")||!o.hasPermission(201)&&!o.hasRole("admin")}}),s.saveItem("apps.staff.agents",{id:202,title:"Agents",route:"user",translate:"STAFF.AGENTS",state:"app.staff.agents",weight:1,hidden:function(){return o.hasRole("agent")||!o.hasPermission(202)&&!o.hasRole("admin")}}),s.saveItem("apps.staff.telephones",{id:203,title:"Telephones",route:"user",translate:"STAFF.TELEPHONES",state:"app.staff.telephones",weight:1,hidden:function(){return o.hasRole("agent")||!o.hasPermission(203)&&!o.hasRole("admin")}}),s.saveItem("apps.staff.teams",{id:204,title:"Teams",route:"team",translate:"STAFF.TEAMS",state:"app.staff.teams",weight:1,hidden:function(){return o.hasRole("agent")||!o.hasPermission(204)&&!o.hasRole("admin")}}),s.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 o.hasRole("agent")||!o.hasPermission(205)&&!o.hasRole("admin")}}),s.saveItem("apps.contactmanager",{id:300,title:"ContactManager",translate:"CONTACTMANAGER.CONTACTMANAGER",icon:"icon-account-circle",license:"cm",weight:4,hidden:function(){return!r.cm||o.hasRole("agent")||!o.hasChildrenPermissions(v(this))&&!o.hasRole("admin")}}),s.saveItem("apps.contactmanager.lists",{id:301,title:"Lists",route:"cmList",translate:"CONTACTMANAGER.LISTS",state:"app.contactmanager.lists",weight:2,hidden:function(){return o.hasRole("agent")||!o.hasPermission(301)&&!o.hasRole("admin")}}),s.saveItem("apps.contactmanager.companies",{id:302,title:"Companies",route:"cmCompany",translate:"CONTACTMANAGER.COMPANIES",state:"app.contactmanager.companies",weight:3,hidden:function(){return o.hasRole("agent")||!o.hasPermission(302)&&!o.hasRole("admin")}}),s.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 o.hasRole("agent")||!o.hasPermission(304)&&!o.hasRole("admin")}}),s.saveItem("apps.contactmanager.contacts",{id:303,title:"Contacts",route:"",translate:"CONTACTMANAGER.CONTACTS",state:"app.contactmanager.contacts",permissions:{association:!1},weight:1,hidden:function(){return o.hasRole("agent")||!o.hasPermission(303)&&!o.hasRole("admin")}}),s.saveItem("apps.voice",{id:400,title:"Voice",translate:"VOICE.VOICE",icon:"icon-phone",license:"voice",weight:5,hidden:function(){return!r.voice||o.hasRole("agent")||!o.hasChildrenPermissions(v(this))&&!o.hasRole("admin")}}),s.saveItem("apps.voice.voiceQueues",{id:401,title:"VoiceQueues",route:"voiceQueue",channel:"voice",translate:"VOICE.VOICEQUEUES",state:"app.voice.voiceQueues",weight:1,hidden:function(){return o.hasRole("agent")||!o.hasPermission(401)&&!o.hasRole("admin")}}),s.saveItem("apps.voice.contexts",{id:405,title:"Contexts",route:"voiceContext",translate:"VOICE.CONTEXTS",state:"app.voice.contexts",weight:5,hidden:function(){return o.hasRole("agent")||!o.hasPermission(405)&&!o.hasRole("admin")}}),s.saveItem("apps.voice.voicemails",{id:406,title:"Voicemails",route:"voiceMail",translate:"VOICE.VOICEMAILS",state:"app.voice.voicemails",weight:6,hidden:function(){return o.hasRole("agent")||!o.hasPermission(406)&&!o.hasRole("admin")}}),s.saveItem("apps.voice.musiconholds",{id:407,title:"MusicOnHolds",route:"voiceMusicOnHold",translate:"VOICE.MUSICONHOLDS",state:"app.voice.musiconholds",weight:7,hidden:function(){return o.hasRole("agent")||!o.hasPermission(407)&&!o.hasRole("admin")}}),s.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 o.hasRole("agent")||!o.hasPermission(408)&&!o.hasRole("admin")}}),s.saveItem("apps.voice.chanSpies",{id:409,title:"ChanSpies",route:"voiceChanSpy",translate:"VOICE.CHANSPIES",state:"app.voice.chanSpies",weight:9,hidden:function(){return o.hasRole("agent")||!o.hasPermission(409)&&!o.hasRole("admin")}}),s.saveItem("apps.voice.voicePrefixes",{id:410,title:"VoicePrefixes",route:"voicePrefix",translate:"VOICE.VOICEPREFIXES",state:"app.voice.voicePrefixes",weight:10,hidden:function(){return o.hasRole("agent")||!o.hasPermission(410)&&!o.hasRole("admin")}}),s.saveItem("apps.voice.inboundRoutes",{id:402,title:"InboundRoutes",route:"voiceExtension",translate:"VOICE.INBOUNDROUTES",state:"app.voice.inboundRoutes",weight:2,hidden:function(){return o.hasRole("agent")||!o.hasPermission(402)&&!o.hasRole("admin")}}),s.saveItem("apps.voice.outboundRoutes",{id:403,title:"OutboundRoutes",route:"voiceExtension",translate:"VOICE.OUTBOUNDROUTES",state:"app.voice.outboundRoutes",weight:3,hidden:function(){return o.hasRole("agent")||!o.hasPermission(403)&&!o.hasRole("admin")}}),s.saveItem("apps.voice.internalRoutes",{id:404,title:"InternalRoutes",route:"voiceExtension",translate:"VOICE.INTERNALROUTES",state:"app.voice.internalRoutes",weight:4,hidden:function(){return o.hasRole("agent")||!o.hasPermission(404)&&!o.hasRole("admin")}}),s.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 o.hasRole("agent")||!o.hasPermission(411)&&!o.hasRole("admin")}}),s.saveItem("apps.chat",{id:500,title:"Chat",translate:"CHAT.CHAT",icon:"icon-hangouts",license:"chat",weight:6,hidden:function(){return!r.chat||o.hasRole("agent")||!o.hasChildrenPermissions(v(this))&&!o.hasRole("admin")}}),s.saveItem("apps.chat.chatQueues",{id:501,title:"ChatQueues",route:"chatQueue",channel:"chat",translate:"CHAT.CHATQUEUES",state:"app.chat.chatQueues",weight:1,hidden:function(){return o.hasRole("agent")||!o.hasPermission(501)&&!o.hasRole("admin")}}),s.saveItem("apps.chat.chatWebsites",{id:502,title:"ChatWebsites",route:"chatWebsite",channel:"chat",translate:"CHAT.CHATWEBSITES",state:"app.chat.chatWebsites",weight:1,hidden:function(){return o.hasRole("agent")||!o.hasPermission(502)&&!o.hasRole("admin")}}),s.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 o.hasRole("agent")||!o.hasPermission(510)&&!o.hasRole("admin")}}),s.saveItem("apps.mail",{id:600,title:"Mail",translate:"MAIL.MAIL",icon:"icon-email",license:"mail",weight:7,hidden:function(){return!r.mail||o.hasRole("agent")||!o.hasChildrenPermissions(v(this))&&!o.hasRole("admin")}}),s.saveItem("apps.mail.mailQueues",{id:601,title:"MailQueues",route:"mailQueue",channel:"mail",translate:"MAIL.MAILQUEUES",state:"app.mail.mailQueues",weight:1,hidden:function(){return o.hasRole("agent")||!o.hasPermission(601)&&!o.hasRole("admin")}}),s.saveItem("apps.mail.mailAccounts",{id:602,title:"MailAccounts",route:"mailAccount",channel:"mail",translate:"MAIL.MAILACCOUNTS",state:"app.mail.mailAccounts",weight:1,hidden:function(){return o.hasRole("agent")||!o.hasPermission(602)&&!o.hasRole("admin")}}),s.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 o.hasRole("agent")||!o.hasPermission(603)&&!o.hasRole("admin")}}),s.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 o.hasRole("agent")||!o.hasPermission(610)&&!o.hasRole("admin")}}),s.saveItem("apps.sms",{id:700,title:"Sms",translate:"SMS.SMS",icon:"icon-message-text",license:"messaging",weight:8,hidden:function(){return!r.messaging||o.hasRole("agent")||!o.hasChildrenPermissions(v(this))&&!o.hasRole("admin")}}),s.saveItem("apps.sms.smsQueues",{id:701,title:"SmsQueues",route:"smsQueue",channel:"sms",translate:"SMS.SMSQUEUES",state:"app.sms.smsQueues",weight:1,hidden:function(){return o.hasRole("agent")||!o.hasPermission(701)&&!o.hasRole("admin")}}),s.saveItem("apps.sms.smsAccounts",{id:702,title:"SmsAccounts",route:"smsAccount",channel:"sms",translate:"SMS.SMSACCOUNTS",state:"app.sms.smsAccounts",weight:1,hidden:function(){return o.hasRole("agent")||!o.hasPermission(702)&&!o.hasRole("admin")}}),s.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 o.hasRole("agent")||!o.hasPermission(710)&&!o.hasRole("admin")}}),s.saveItem("apps.openchannel",{id:800,title:"Openchannel",translate:"OPENCHANNEL.OPENCHANNEL",icon:"icon-google-earth",license:"openchannel",weight:9,hidden:function(){return!r.openchannel||o.hasRole("agent")||!o.hasChildrenPermissions(v(this))&&!o.hasRole("admin")}}),s.saveItem("apps.openchannel.openchannelQueues",{id:801,title:"OpenchannelQueues",route:"openchannelQueue",channel:"openChannel",translate:"OPENCHANNEL.OPENCHANNELQUEUES",state:"app.openchannel.openchannelQueues",weight:1,hidden:function(){return o.hasRole("agent")||!o.hasPermission(801)&&!o.hasRole("admin")}}),s.saveItem("apps.openchannel.openchannelAccounts",{id:802,title:"OpenchannelAccounts",route:"openchannelAccount",channel:"openChannel",translate:"OPENCHANNEL.OPENCHANNELACCOUNTS",state:"app.openchannel.openchannelAccounts",weight:1,hidden:function(){return o.hasRole("agent")||!o.hasPermission(802)&&!o.hasRole("admin")}}),s.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 o.hasRole("agent")||!o.hasPermission(810)&&!o.hasRole("admin")}}),s.saveItem("apps.fax",{id:900,title:"Fax",translate:"FAX.FAX",icon:"icon-deskphone",license:"fax",weight:10,hidden:function(){return!r.fax||o.hasRole("agent")||!o.hasChildrenPermissions(v(this))&&!o.hasRole("admin")}}),s.saveItem("apps.fax.faxQueues",{id:901,title:"FaxQueues",route:"faxQueue",channel:"fax",translate:"FAX.FAXQUEUES",state:"app.fax.faxQueues",weight:1,hidden:function(){return o.hasRole("agent")||!o.hasPermission(901)&&!o.hasRole("admin")}}),s.saveItem("apps.fax.faxAccounts",{id:902,title:"FaxAccounts",route:"faxAccount",channel:"fax",translate:"FAX.FAXACCOUNTS",state:"app.fax.faxAccounts",weight:1,hidden:function(){return o.hasRole("agent")||!o.hasPermission(902)&&!o.hasRole("admin")}}),s.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 o.hasRole("agent")||!o.hasPermission(910)&&!o.hasRole("admin")}}),s.saveItem("apps.tools",{id:1e3,title:"Tools",translate:"TOOLS.TOOLS",icon:"icon-auto-fix",weight:15,hidden:function(){return o.hasRole("agent")||!o.hasChildrenPermissions(v(this))&&!o.hasRole("admin")}}),s.saveItem("apps.tools.cannedAnswers",{id:1001,title:"CannedAnswers",route:"cannedAnswer",translate:"TOOLS.CANNEDANSWERS",state:"app.tools.cannedAnswers",weight:1,hidden:function(){return o.hasRole("agent")||!o.hasPermission(1001)&&!o.hasRole("admin")}}),s.saveItem("apps.tools.customDashboards",{id:1003,title:"CustomDashboards",route:"dashboard",translate:"TOOLS.CUSTOMDASHBOARDS",state:"app.tools.customDashboards",weight:3,hidden:function(){return o.hasRole("agent")||!o.hasPermission(1003)&&!o.hasRole("admin")}}),s.saveItem("apps.tools.intervals",{id:1004,title:"Intervals",route:"interval",translate:"TOOLS.INTERVALS",state:"app.tools.intervals",weight:4,hidden:function(){return o.hasRole("agent")||!o.hasPermission(1004)&&!o.hasRole("admin")}}),s.saveItem("apps.tools.pauses",{id:1005,title:"Pauses",route:"pause",translate:"TOOLS.PAUSES",state:"app.tools.pauses",weight:5,hidden:function(){return o.hasRole("agent")||!o.hasPermission(1005)&&!o.hasRole("admin")}}),s.saveItem("apps.tools.schedules",{id:1006,title:"Scheduler",route:"schedule",translate:"TOOLS.SCHEDULER",state:"app.tools.schedules",weight:6,hidden:function(){return o.hasRole("agent")||!o.hasPermission(1006)&&!o.hasRole("admin")}}),s.saveItem("apps.tools.sounds",{id:1007,title:"Sounds",route:"sound",translate:"TOOLS.SOUNDS",state:"app.tools.sounds",weight:7,hidden:function(){return o.hasRole("agent")||!o.hasPermission(1007)&&!o.hasRole("admin")}}),s.saveItem("apps.tools.tags",{id:1008,title:"Tags",route:"tag",translate:"TOOLS.TAGS",state:"app.tools.tags",weight:8,hidden:function(){return o.hasRole("agent")||!o.hasPermission(1008)&&!o.hasRole("admin")}}),s.saveItem("apps.tools.templates",{id:1009,title:"Templates",route:"template",translate:"TOOLS.TEMPLATES",state:"app.tools.templates",weight:9,hidden:function(){return o.hasRole("agent")||!o.hasPermission(1009)&&!o.hasRole("admin")}}),s.saveItem("apps.tools.trunks",{id:1011,title:"Trunks",route:"trunk",translate:"TOOLS.TRUNKS",state:"app.tools.trunks",weight:11,hidden:function(){return o.hasRole("agent")||!o.hasPermission(1011)&&!o.hasRole("admin")}}),s.saveItem("apps.tools.variables",{id:1012,title:"Variables",route:"variable",translate:"TOOLS.VARIABLES",state:"app.tools.variables",weight:12,hidden:function(){return o.hasRole("agent")||!o.hasPermission(1012)&&!o.hasRole("admin")}}),s.saveItem("apps.tools.dispositions",{id:1002,title:"Dispositions",route:"disposition",translate:"TOOLS.DISPOSITIONS",state:"app.tools.dispositions",weight:2,hidden:function(){return o.hasRole("agent")||!o.hasPermission(1002)&&!o.hasRole("admin")}}),s.saveItem("apps.tools.triggers",{id:1010,title:"Triggers",route:"trigger",translate:"TOOLS.TRIGGERS",state:"app.tools.triggers",weight:10,hidden:function(){return o.hasRole("agent")||!o.hasPermission(1010)&&!o.hasRole("admin")}}),s.saveItem("apps.callysquare",{id:1100,title:"CallySquare",translate:"CALLYSQUARE.CALLYSQUARE",icon:"icon-sitemap",license:"voice",weight:13,hidden:function(){return!r.voice||o.hasRole("agent")||!o.hasChildrenPermissions(v(this))&&!o.hasRole("admin")}}),s.saveItem("apps.callysquare.odbcs",{id:1101,title:"ODBC",route:"squareOdbc",translate:"CALLYSQUARE.ODBC",state:"app.callysquare.odbcs",weight:2,hidden:function(){return o.hasRole("agent")||!o.hasPermission(1101)&&!o.hasRole("admin")}}),s.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 o.hasRole("agent")||!o.hasPermission(1102)&&!o.hasRole("admin")}}),s.saveItem("apps.callysquare.projects",{id:1103,title:"Projects",route:"squareProject",translate:"CALLYSQUARE.PROJECTS",state:"app.callysquare.projects",weight:1,hidden:function(){return o.hasRole("agent")||!o.hasPermission(1103)&&!o.hasRole("admin")}}),s.saveItem("apps.analytics",{id:1200,title:"Analytics",translate:"ANALYTICS.ANALYTICS",icon:"icon-chart-line",weight:16,hidden:function(){return o.hasRole("agent")||!o.hasChildrenPermissions(v(this))&&!o.hasRole("admin")}}),s.saveItem("apps.analytics.metrics",{id:1201,title:"Metrics",route:"analyticMetric",translate:"ANALYTICS.METRICS",state:"app.analytics.metrics",weight:3,hidden:function(){return o.hasRole("agent")||!o.hasPermission(1201)&&!o.hasRole("admin")}}),s.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 o.hasRole("agent")||!o.hasPermission(1202)&&!o.hasRole("admin")}}),s.saveItem("apps.analytics.reports",{id:1203,title:"Reports",route:"",translate:"ANALYTICS.REPORTS",state:"app.analytics.reports",weight:1,hidden:function(){return o.hasRole("agent")||!o.hasPermission(1203)&&!o.hasRole("admin")}}),s.saveItem("apps.integrations",{id:1300,title:"Integrations",translate:"INTEGRATIONS.INTEGRATIONS",icon:"icon-heart",weight:17,hidden:function(){return o.hasRole("agent")||!o.hasChildrenPermissions(v(this))&&!o.hasRole("admin")}}),s.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 o.hasRole("agent")||!o.hasPermission(1301)&&!o.hasRole("admin")}}),s.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 o.hasRole("agent")||!o.hasPermission(1302)&&!o.hasRole("admin")}}),s.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 o.hasRole("agent")||!o.hasPermission(1303)&&!o.hasRole("admin")}}),s.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 o.hasRole("agent")||!o.hasPermission(1305)&&!o.hasRole("admin")}}),s.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 o.hasRole("agent")||!o.hasPermission(1306)&&!o.hasRole("admin")}}),s.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 o.hasRole("agent")||!o.hasPermission(1307)&&!o.hasRole("admin")}}),s.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 o.hasRole("agent")||!o.hasPermission(1308)&&!o.hasRole("admin")}}),s.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 o.hasRole("agent")||!o.hasPermission(1309)&&!o.hasRole("admin")}}),s.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 o.hasRole("agent")||!o.hasPermission(1310)&&!o.hasRole("admin")}}),s.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 o.hasRole("agent")||!o.hasPermission(1304)&&!o.hasRole("admin")}}),s.saveItem("apps.settings",{id:1400,title:"Settings",translate:"SETTINGS.SETTINGS",icon:"icon-cog",permissions:{hidden:!0},weight:20,hidden:function(){return o.hasRole("agent")||!o.hasPermission(1400)&&!o.hasRole("admin")||o.hasRole("admin")&&!o.getCurrentUser().settingsEnabled}}),s.saveItem("apps.settings.generals",{id:1401,title:"General",route:"setting",translate:"SETTINGS.GENERAL",state:"app.settings.generals",weight:1,hidden:function(){return o.hasRole("agent")||!o.hasPermission(1400)&&!o.hasRole("admin")}}),s.saveItem("apps.settings.smtps",{id:1402,title:"Smtp",route:"mailAccount",translate:"SETTINGS.SMTP",state:"app.settings.smtps",weight:1,hidden:function(){return o.hasRole("agent")||!o.hasPermission(1400)&&!o.hasRole("admin")}}),s.saveItem("apps.settings.networks",{id:1403,title:"Networks",route:"network",translate:"SETTINGS.NETWORKS",state:"app.settings.networks",weight:1,hidden:function(){return o.hasRole("agent")||!o.hasPermission(1400)&&!o.hasRole("admin")}}),s.saveItem("apps.settings.customizations",{id:1407,title:"Customizations",route:"setting",translate:"SETTINGS.CUSTOMIZATIONS",state:"app.settings.customizations",weight:1,hidden:function(){return!r.custom||o.hasRole("agent")||!o.hasPermission(1400)&&!o.hasRole("admin")}}),s.saveItem("apps.settings.cloudProviders",{id:1408,title:"AiTools",route:"cloudProvider",translate:"SETTINGS.AITOOLS",state:"app.settings.cloudProviders",weight:1,hidden:function(){return!r.ai||o.hasRole("agent")||!o.hasPermission(1400)&&!o.hasRole("admin")}}),s.saveItem("apps.settings.updates",{id:1404,title:"Updates",route:"",translate:"SETTINGS.UPDATES",state:"app.settings.updates",weight:1,hidden:function(){return!r.update||o.hasRole("agent")||!o.hasPermission(1400)&&!o.hasRole("admin")}}),s.saveItem("apps.settings.license",{id:1405,title:"License",route:"",translate:"SETTINGS.LICENSE",state:"app.settings.license",weight:1,hidden:function(){return o.hasRole("agent")||!o.hasPermission(1400)&&!o.hasRole("admin")}}),s.saveItem("apps.settings.system",{id:1406,title:"System",route:"",translate:"SETTINGS.SYSTEM",state:"app.settings.system",weight:1,hidden:function(){return o.hasRole("agent")||!o.hasPermission(1400)&&!o.hasRole("admin")}}),s.saveItem("apps.motiondialer",{id:1500,title:"MotionDialer",translate:"MOTIONDIALER.MOTIONDIALER",icon:"icon-fire",license:"dialer",weight:5,hidden:function(){return!r.dialer||o.hasRole("agent")||!o.hasChildrenPermissions(v(this))&&!o.hasRole("admin")}}),s.saveItem("apps.motiondialer.queueCampaigns",{id:1501,title:"QueueCampaigns",route:"voiceQueue",channel:"bull",translate:"MOTIONDIALER.QUEUECAMPAIGNS",state:"app.motiondialer.queueCampaigns",weight:1,hidden:function(){return o.hasRole("agent")||!o.hasPermission(1501)&&!o.hasRole("admin")}}),s.saveItem("apps.motiondialer.ivrCampaigns",{id:1502,title:"IvrCampaigns",route:"campaign",translate:"MOTIONDIALER.IVRCAMPAIGNS",state:"app.motiondialer.ivrCampaigns",weight:1,hidden:function(){return o.hasRole("agent")||!o.hasPermission(1502)&&!o.hasRole("admin")}}),s.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 o.hasRole("agent")||!o.hasPermission(1510)&&!o.hasRole("admin")}}),s.saveItem("apps.help",{id:1600,title:"Help",translate:"HELP.HELP",icon:"icon-help",permissions:{association:!1},weight:21,hidden:function(){return o.hasRole("agent")||!o.hasPermission(1600)&&!o.hasRole("admin")}}),s.saveItem("apps.help.about",{id:1601,title:"About",route:"",translate:"HELP.ABOUT",state:"app.help.about",weight:1,hidden:function(){return o.hasRole("agent")||!o.hasPermission(1600)&&!o.hasRole("admin")}}),s.saveItem("apps.jscripty",{id:1700,title:"jscripty",translate:"JSCRIPTY.JSCRIPTY",icon:"icon-script",license:"jscripty",weight:14,hidden:function(){return!r.jscripty||o.hasRole("agent")||!o.hasChildrenPermissions(v(this))&&!o.hasRole("admin")}}),s.saveItem("apps.jscripty.projects",{id:1701,title:"Projects",route:"jscriptyProject",translate:"JSCRIPTY.PROJECTS",state:"app.jscripty.projects",weight:1,hidden:function(){return o.hasRole("agent")||!o.hasPermission(1701)&&!o.hasRole("admin")}}),s.saveItem("apps.marketplace",{id:1800,title:"Marketplace",translate:"MARKETPLACE.MARKETPLACE",icon:"icon-cart",weight:18,hidden:function(){return o.hasRole("agent")||!o.hasChildrenPermissions(v(this))&&!o.hasRole("admin")}}),s.saveItem("apps.marketplace.plugins",{id:1801,title:"Plugins",route:"plugin",translate:"MARKETPLACE.PLUGINS",state:"app.marketplace.plugins",weight:1,hidden:function(){return o.hasRole("agent")||!o.hasPermission(1801)&&!o.hasRole("admin")}}),s.saveItem("apps.video",{id:2e3,title:"Video",translate:"VIDEO.VIDEO",icon:"icon-video",license:"screenrecording",weight:12,hidden:function(){return!r.screenrecording||o.hasRole("agent")||!o.hasChildrenPermissions(v(this))&&!o.hasRole("admin")}}),s.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 o.hasRole("agent")||!o.hasPermission(2001)&&!o.hasRole("admin")}}),s.saveItem("apps.whatsapp",{id:2100,title:"Whatsapp",translate:"WHATSAPP.WHATSAPP",icon:"icon-whatsapp",license:"whatsapp",weight:11,hidden:function(){return!r.whatsapp||o.hasRole("agent")||!o.hasChildrenPermissions(v(this))&&!o.hasRole("admin")}}),s.saveItem("apps.whatsapp.whatsappQueues",{id:2101,title:"WhatsappQueues",route:"whatsappQueue",channel:"whatsapp",translate:"WHATSAPP.WHATSAPPQUEUES",state:"app.whatsapp.whatsappQueues",weight:1,hidden:function(){return o.hasRole("agent")||!o.hasPermission(2101)&&!o.hasRole("admin")}}),s.saveItem("apps.whatsapp.whatsappAccounts",{id:2102,title:"WhatsappAccounts",route:"whatsappAccount",channel:"whatsapp",translate:"WHATSAPP.WHATSAPPACCOUNTS",state:"app.whatsapp.whatsappAccounts",weight:1,hidden:function(){return o.hasRole("agent")||!o.hasPermission(2102)&&!o.hasRole("admin")}}),s.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 o.hasRole("agent")||!o.hasPermission(2110)&&!o.hasRole("admin")}}),s.sort(),a.saveItem("apps",{title:"APPS",group:!0,weight:1}),a.saveItem("apps.home",{id:100,title:"Home",translate:"DASHBOARDS.HOME",icon:"icon-home",weight:1}),a.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!o.hasPermission(101)}}),a.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!o.hasPermission(115)}}),a.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!r.cm||!o.hasPermission(102)}}),a.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!r.cm||!o.hasPermission(103)}}),a.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!r.dialer||!o.hasPermission(113)}}),a.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!r.voice||!o.hasPermission(110)}}),a.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!r.voice||!o.hasPermission(111)}}),a.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!r.voice||!o.hasPermission(104)}}),a.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!r.chat||!o.hasPermission(105)}}),a.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!r.mail||!o.hasPermission(106)}}),a.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!r.messaging||!o.hasPermission(107)}}),a.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!r.openchannel||!o.hasPermission(108)}}),a.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!r.fax||!o.hasPermission(109)}}),a.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!r.whatsapp||!o.hasPermission(114)}}),n.$on("$viewContentAnimationEnded",function(e){e.targetScope.$id===n.$id&&t.$broadcast("msSplashScreen::remove")}),n.$on("socket:connect",function(){t.toastySocketLost&&(i.clear(t.toastySocketLost),t.toastySocketLost=void 0)}),n.$on("socket:disconnect",function(){t.toastySocketLost||i.warning({title:e.instant("TOOLBAR.WARNING"),msg:e.instant("DASHBOARDS.LOST_CONNECTION"),timeout:!1,onAdd:function(){t.toastySocketLost=this.id}})})}e.$inject=["$scope","$rootScope","$translate","msNavigationService","msNavigationAgentService","toasty","Auth","license","api","setting","socket"],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.msScrollOptions={suppressScrollX:!0},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(e,n,t,a,i,s,o,r,l,d,c,m){var u=this;function p(e){var n=angular.element("#chat-dialog");a(function(){n.animate({scrollTop:n[0].scrollHeight},e)},0)}function g(e){return _.isNil(e)?"":e.replace(/[^\w.+#*\-]+/g,"")}function v(e){return m.get(e).success(function(){n.success({title:"Successful call",msg:"Call properly handled!"})}).error(function(e){n.error({title:"PhoneBar API Error",msg:d.instant("CONTACTMANAGER.ERRORS.PHONEBAR_API")})})}u.currentUser=i.getCurrentUser(),u.user=void 0,u.users={count:0,rows:[]},u.standardDate=moment(0).format("YYYY-MM-DD HH:mm:ss"),u.unreadMessage={},u.replyMessage="",u.disabled=!1,u.init=function(e){u.license=e},u.toggleChat=function(e){if(e){if(!e.allowmessenger&&"agent"===e.role)return n.warning({title:d.instant("QUICKPANEL.WARNING"),msg:d.instant("QUICKPANEL.MESSENGER_DISABLED")}),void(u.user=void 0);u.user=e,u.replyMessage="",t.chatInternalMessage.get({sort:"createdAt",FromId:u.currentUser.id+","+e.id,ToId:u.currentUser.id+","+e.id,ChatGroupId:"null"}).$promise.then(function(e){if(e&&e.rows){u.user.messages=e;for(var n=0;n<u.user.messages.rows.length;n+=1)!1===u.user.messages.rows[n].read&&u.user.messages.rows[n].ToId===u.currentUser.id&&t.chatInternalMessage.update({id:u.user.messages.rows[n].id,read:!0})}}).finally(function(){p(0)})}else u.user=void 0},u.reply=function(){u.disabled=!0;Date.now();if(""===u.replyMessage)return void(u.disabled=!1);var e={FromId:u.currentUser.id,ToId:u.user.id,body:u.replyMessage,read:!1};u.replyMessage="",t.chatInternalMessage.save(e).$promise.then(function(e){u.user.messages.rows.push(e),u.user.lastMessageAt=e.createdAt,u.user.lastMessage=e,p(400)}).catch(function(e){}).finally(function(){u.disabled=!1})},u.onMessageSave=function(e){if(e.ToId===u.currentUser.id&&!e.ChatGroupId){u.user&&u.user.id===e.FromId?(u.user.messages.rows.push(e),p(0),t.chatInternalMessage.update({id:e.id,read:!0})):u.unreadMessage[e.FromId]=u.unreadMessage[e.FromId]?u.unreadMessage[e.FromId]+1:1;var n=_.find(u.users.rows,{id:e.FromId});n&&(n.lastMessageAt=e.createdAt,n.lastMessage=e)}},u.onMessageUpdate=function(e){if((e.FromId===u.currentUser.id||e.ToId===u.currentUser.id)&&!e.ChatGroupId){if(u.user){var n=_.find(u.user.messages.rows,{id:e.id});n&&_.merge(n,e)}var t=_.find(u.users.rows,{id:u.currentUser.id===e.FromId?e.ToId:e.FromId});t&&t.lastMessage&&_.merge(t.lastMessage,e),e.ToId===u.currentUser.id&&e.read&&0<u.unreadMessage[e.FromId]&&(u.unreadMessage[e.FromId]-=1)}},u.onUserUpdate=function(e){var n=_.find(u.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))},u.webcall=function(e){c.$broadcast("webrtc::call",{target:g(e)})},u.call=function(e){return v("http://127.0.0.1:"+(u.user.phoneBarRemoteControlPort||"9888")+"/api/originate/"+g(e))},u.transfer=function(e){return v("http://127.0.0.1:"+(u.user.phoneBarRemoteControlPort||"9888")+"/api/transfer?number="+g(e))},s.on("chatInternalMessage:save",u.onMessageSave),s.on("chatInternalMessage:update",u.onMessageUpdate),s.on("user:update",u.onUserUpdate),o("quick-panel").onClose(function(){u.user=void 0}),t.chatInternalMessage.get({fields:"FromId",ToId:u.currentUser.id,read:!1,nolimit:!0,ChatGroupId:"null"}).$promise.then(function(e){u.unreadMessage=_.countBy(e.rows,"FromId")}).catch(function(e){}),t.chatInternalMessage.getUsers().$promise.then(function(e){u.users=e}).catch(function(e){console.error(e)}),e.$on("$destroy",function(){s.removeAllListeners("chatInternalMessage:save"),s.removeAllListeners("chatInternalMessage:update"),s.removeAllListeners("user:update")})}e.$inject=["$scope","toasty","api","$timeout","Auth","socket","$mdSidenav","$q","$interval","$translate","$rootScope","$http"],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(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,n,t,a,i,s,o,r,l){var d=this;function c(e){_.isNil(e)&&s.cmHopper.update({id:d.preview.id,UserId:null}),a.hide()}d.customFieldsMap=l&&l.rows?_.mapValues(_.keyBy(l.rows,function(e){return"cf_"+e.id}),"name"):{},d.errors=[],d.hopperIds=[],d.preview=o,d.currentUser=r,d.originated=!1,d.disable=!1,d.disableGetContact=!1,d.hopperIds.push(d.preview.id),d.originatePreview=function(){d.originated=!0,d.disable=!0,_.isEmpty(d.preview)?(i.error({title:"Message",msg:"Contact not available"}),d.disable=!1,d.hopperIds=[],c(!0)):s.rpc.getVoiceQueuesPreview({id:d.preview.id}).$promise.then(function(e){c(!0)}).catch(function(e){i.error({title:"Message",msg:e.data}),c(!0)}).finally(function(){d.disable=!1,d.hopperIds=[]})},d.closeDialog=c,d.nextContact=function(){return d.disableGetContact=!0,s.cmHopper.getPreview({hopperIds:d.hopperIds,direction:"next"}).$promise.then(function(e){d.disableGetContact=!1,_.isNil(e)||_.isNil(e.Queue)||!e.Queue.dialActive?(d.hopperIds=[],a.hide(),i.info({title:"PREVIEW",msg:"CAMPAIGN NOT ACTIVE"})):(d.originated||s.cmHopper.update({id:d.preview.id,UserId:null}),d.preview=e,d.hopperIds.push(d.preview.id))}).catch(function(e){if(d.disableGetContact=!1,d.hopperIds=[],404===e.status)d.getFirstAvailableContact();else if(e.data&&e.data.errors&&e.data.errors.length){a.hide();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 a.hide(),i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api preview",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},d.previousContact=function(){if(d.disableGetContact=!0,1<d.hopperIds.length){var e=_.without(d.hopperIds,d.preview.id);return s.cmHopper.getPreview({hopperIds:e,direction:"prev"}).$promise.then(function(e){d.disableGetContact=!1,_.isNil(e)||_.isNil(e.Queue)||!e.Queue.dialActive?(d.hopperIds=[],a.hide(),i.info({title:"PREVIEW",msg:"CAMPAIGN NOT ACTIVE"})):(_.remove(d.hopperIds,function(e){return e==d.preview.id}),d.originated||s.cmHopper.update({id:d.preview.id,UserId:null}),d.preview=e)}).catch(function(e){if(404===e.status)d.hopperIds=[d.preview.id],i.info({title:"PREVIEW",msg:"PREVIOUS CONTACTS NOT AVAILABLE"});else if(e.data&&e.data.errors&&e.data.errors.length){d.hopperIds=[],a.hide();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 d.hopperIds=[],a.hide(),i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api preview",msg:e.data?JSON.stringify(e.data.message):e.toString()})})}},d.getFirstAvailableContact=function(){return d.disableGetContact=!0,i.info({title:"PREVIEW",msg:"CONTACTS NOT AVAILABLE. REWINDING THE LIST"}),s.cmHopper.getPreview({hopperIds:[d.preview.id],direction:"next"}).$promise.then(function(e){_.isNil(e)||_.isNil(e.Queue)||!e.Queue.dialActive?(a.hide(),i.info({title:"PREVIEW",msg:"CAMPAIGN NOT ACTIVE"})):(d.originated||s.cmHopper.update({id:d.preview.id,UserId:null}),d.preview=e,d.hopperIds.push(d.preview.id))}).catch(function(e){if(a.hide(),404===e.status)i.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)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 preview",msg:e.data?JSON.stringify(e.data.message):e.toString()})}).finally(function(){d.disableGetContact=!1})},d.isCustomField=function(e){return _.startsWith(e,"cf_")},d.isHiddenField=function(e){return _.includes(["Company","CompanyId","ListId","UserId","createdAt","deletedAt","id","priority","scheduledat","tags","updatedAt","facebook","twitter","skype","wechat","teams","viber","line","telegram"],e)},d.isNil=function(e){return _.isNil(e)},e.$on("$destroy",function(){d.originated||s.cmHopper.update({id:d.preview.id,UserId:null})})}e.$inject=["$scope","$state","$location","$mdDialog","toasty","api","preview","currentUser","customFields"],angular.module("app.toolbar").controller("PreviewDialogController",e)}(),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){var S,T=this;T.voiceQueues={},T.polling=!0,t.global={search:""},T.pauses=[],T.license=b,T.currentUser=v.getCurrentUser(),T.unreadTotalMessages=0,T.unreadTotalGroupMessages=0,T.contacts=0,"agent"===T.currentUser.role&&(S=E(function(){_.some(T.voiceQueues,{dialMethod:"preview",dialActive:!0})&&T.license.dialer&&T.polling?(T.polling=!1,f.cmHopper.getOpenContacts().$promise.then(function(e){e&&_.isNumber(e.contacts)&&(T.contacts=e.contacts)}).finally(function(){T.polling=!0})):T.contacts=0},14999)),T.setting=A,T.bodyEl=angular.element("body"),T.conf={realm:"asterisk",host:e.host(),protocol:e.protocol(),soundPlayerId:"local-audio",remotePlayerId:"remote-audio",ua:"Motion WebRTC Bar 0.2.0",license:T.license.webrtc,phoneBarExpires:T.currentUser.phoneBarExpires,phoneBarPrefixRequired:T.currentUser.phoneBarPrefixRequired,wssPort:T.currentUser.wssPort},T.webRTCSessions=[],T.query={id:v.getCurrentUser().id,fields:"id,name,type,dialMethod,dialActive",channel:"voice",nolimit:!0},T.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"}],T.languages={ar:{title:"Arabic",translation:"TOOLBAR.ARABIC",code:"ar",flag:"ar"},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"},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"}};var I=["ar","fa","he"];function C(){h.connect(),h.on("user:update",T.onUserUpdate),h.on("user:called",T.onUserCalled),h.on("chatInternalMessage:save",T.onInternalMessageSave),h.on("chatInternalMessage:update",T.onInternalMessageUpdate),h.on("userVoiceQueue:save",T.onUserVoiceQueue),h.on("voiceQueue:save",T.onVoiceQueue),h.on("userVoiceQueue:remove",T.onUserVoiceQueue),h.on("voiceQueue:remove",T.onVoiceQueue),h.on("voiceQueue:update",T.onVoiceQueue),h.on("user:forcelogout",D),h.on("userNotification:send",P)}function O(){h.disconnect("logout")}function w(e){T.voiceQueues=e?_.keyBy(e.rows?e.rows:[],"id"):{}}function R(){T.promise=f.user.getQueues(T.query,w).$promise}function x(e){return O(),v.logout(e).then(function(){return t.$broadcast("webrtc::logout"),a.go("app.login")}).catch(function(e){console.error(e)})}function N(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:T.user,setting:A,reset:n}})}function D(e){if(console.debug("onForceLogout -> data",e),e.user.id===T.user.id&&0!==T.user.showWebBar)return O(),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){console.error(e)})}function P(e){var n=e;if(T.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})}}T.toggleSidenav=function(e){i(e).toggle()},T.logout=x,T.changeLanguage=function(e){if(!T.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"})}T.selectedLanguage=e,u.put("motion.language",e.code),r.use(e.code),"app.callysquare.projects.edit"===a.current.name&&d.location.reload();0<=I.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"},T.setUserStatus=function(e){T.userStatus=e},T.toggleHorizontalMobileMenu=function(){T.bodyEl.toggleClass("ms-navigation-horizontal-mobile-menu-active")},T.toggleMsNavigationFolded=function(){g.toggleFolded()},T.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},T.searchResultClick=function(e){e.uisref&&(e.stateParams?a.go(e.state,e.stateParams):a.go(e.state))},T.openSettings=function(e){t.$broadcast("webrtc::settings")},T.changePassword=N,T.isAgent=function(){return v.getCurrentUser()&&v.hasRole("agent")},T.onUserUpdate=function(e){if(e.id===T.user.id)if("agent"===e.role&&_.isBoolean(e.online)&&!e.online)if(0!==T.user.showWebBar){var t;O();var n=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(e,n){t=setTimeout(function(){c.cancel()},6e4)}});c.show(n).then(function(){return clearTimeout(t),v.queueLogin().then(function(){C(),_.merge(T.user,e),v.setCurrentUser(T.user)})}).catch(function(e){clearTimeout(t),x(!0)})}else x(!0);else _.merge(T.user,e),v.setCurrentUser(T.user)},T.onUserCalled=function(e){if(2===T.currentUser.showWebBar&&"agent"===T.currentUser.role&&T.currentUser.name===e.membername){var n=T.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&&e.variables.extravar?e.variables.extravar:"Not defined")+"</span><br>            </div>",showClose:!0,timeout:1e4,html:!0})}},T.pause=function(e){var n=e||"DEFAULT PAUSE";_.some(T.webRTCSessions,["confirmed",!0])&&(n="#"+n);return f.user.pause({id:T.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()})})},T.unpause=function(){return f.user.unpause({id:T.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()})})},T.preview=function(n){return T.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"}):c.show({controller:"PreviewDialogController",controllerAs:"vm",templateUrl:"app/toolbar/preview/dialog.html",parent:angular.element(m.body),targetEvent:n,clickOutsideToClose:!0,locals:{preview:e,currentUser:T.currentUser},resolve:{customFields:["apiResolver",function(e){return e.resolve("cmCustomField@get",{nolimit:!0})}]}})}).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){T.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(){T.disable=!1})},T.getLogo=function(){return T.setting.defaultHeaderWhiteLabel?"xCALLY Motion":T.setting.headerWhiteLabel},T.userIsNotPhonebar=function(){return"admin"===T.currentUser.role||"user"===T.currentUser.role||"agent"===T.currentUser.role&&0!==T.currentUser.showWebBar},T.onInternalMessageSave=function(e){e.ToId!==T.currentUser.id||e.ChatGroupId||(T.unreadTotalMessages+=1);e.ToId===T.currentUser.id&&e.FromId!==T.currentUser.id&&!e.read&&e.ChatGroupId&&T.unreadTotalGroupMessages++},T.onInternalMessageUpdate=function(e){e.ToId===T.currentUser.id&&e.read&&0<T.unreadTotalMessages&&!e.ChatGroupId&&(T.unreadTotalMessages-=1);e.ToId===T.currentUser.id&&e.read&&e.ChatGroupId&&0<T.unreadTotalGroupMessages&&T.unreadTotalGroupMessages--},T.onUserVoiceQueue=function(e){_.toInteger(e.UserId)===v.getCurrentUser().id&&R()},T.onVoiceQueue=function(e){R()},function(){T.user=v.getCurrentUser(),T.conf.ha1=T.user.md5secret,T.conf.id=T.user.id,T.conf.name=T.user.name,T.conf.fullname=T.user.fullname,T.conf.internal=T.user.internal,T.conf.recording=T.user.phoneBarEnableRecording,T.conf.autoAnswer=T.user.phoneBarAutoAnswer,T.conf.enableSettings=T.user.phoneBarEnableSettings,T.conf.enableDtmfTone=T.user.phoneBarEnableDtmfTone,T.conf.autoAnswerDelay=T.user.phoneBarAutoAnswerDelay,T.userStatus=T.userStatusOptions[0];var e=u.get("motion.language");e&&T.languages.hasOwnProperty(e)?T.selectedLanguage=T.languages[e]:T.selectedLanguage=T.languages[r.preferredLanguage()];if(f.pause.get({fields:"name",nolimit:!0}).$promise.then(function(e){T.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()&&T.setting.securePassword)if(T.user.passwordResetAt){var n=moment(T.user.passwordResetAt).add(T.setting.passwordExpiresDays||90,"day");moment().isAfter(n)?N(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 N(null,!0)}(),R(),C(),f.chatInternalMessage.get({fields:"FromId",ToId:T.currentUser.id,read:!1,nolimit:!0}).$promise.then(function(e){T.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"),S&&(E.cancel(S),S=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"],angular.module("app.toolbar").controller("ToolbarController",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","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-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" ms-scroll>\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 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)" ng-disabled="!vm_pb.registered">\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" />\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" ms-scroll>\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              <div layout="row" layout-align="space-between center">\n                <md-switch 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, isOpened)" md-selected-text="vm.placeholders[filter.key]" aria-label="Filter {{ filter.name }}" md-on-open="isOpened = true" md-on-close="isOpened = 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" ms-scroll>\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" ms-scroll 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" ms-scroll>\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">\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.\' + widget.attrs[0].value | 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="animate-slide-up 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="animate-slide-up 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" ms-scroll 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="animate-slide-up md-hue-2" ms-scroll 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" ms-scroll 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" ms-scroll ui-view="navigation"></md-sidenav>\n\n    <div id="content-container" flex layout="column">\n      <md-content id="content" class="animate-slide-up md-hue-2" ms-scroll 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" ms-scroll 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" ms-scroll ui-view="navigation"></md-sidenav>\n\n    <div id="content-container" flex layout="column">\n      <md-content id="content" class="animate-slide-up md-hue-2" ms-scroll 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" ms-scroll 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" ms-scroll 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="animate-slide-up md-hue-2" ms-scroll 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" ms-scroll 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" ms-scroll 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" ms-scroll>\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" 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    </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 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="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 animate-slide-down 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" ms-scroll>\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 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="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 animate-slide-down 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" ms-scroll>\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 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="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 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="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 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="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 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        <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 animate-slide-down 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" ms-scroll>\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" ms-scroll>\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 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="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 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="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 animate-slide-down 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" ms-scroll>\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 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="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 ms-scroll>\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 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>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 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          </div>\n          <md-button class="md-icon-button">\n            <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 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="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 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="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/permissionadd/permissionadd.html",'<md-dialog class="projects-dialog" aria-label="projects">\n  <form name="projectsForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="CALLYSQUARE.PERMISSIONADD_PROJECTS">Add User Permissions</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"></ms-dual-multiselect>\n    </md-dialog-content>\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 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="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 animate-slide-down 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" ms-scroll>\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 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="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 animate-slide-down 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" ms-scroll>\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 animate-slide-down 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" ms-scroll>\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 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="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 animate-slide-down 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" ms-scroll>\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 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="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 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="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 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="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 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="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 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="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 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="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 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="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 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="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 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="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 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\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 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="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 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="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 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="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 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="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/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 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="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 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="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            <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              <form name="scriptForm" flex="100" novalidate>\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              </form>\n            </div>\n\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.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              </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">\n                            <md-option ng-value="null">None</md-option>\n                            <md-option ng-repeat="account in vm_fonc.email_accounts" ng-value="account.id">{{ account.name }}</md-option>\n                          </md-select>\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" ms-scroll 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" ms-scroll 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" style="width:200px">{{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/agents/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="CHAT.AGENTS">Agents</span>\n    <div flex></div>\n    <ms-search-bar on-search="vm.onInit()" query="vm.query" on-collapse="vm.query.filter = undefined; vm.onInit()" debounce="300"></ms-search-bar>\n    <md-select ng-model="vm.query.globalStatusFilter" class="md-caption" ng-change="vm.query.pauseTypeFilter = \'\'; vm.onInit()">\n      <md-option ng-value="\'\'">{{ \'CHAT.ALL\' | translate }}</md-option>\n      <md-option value="pause">{{ \'CHAT.PAUSE\' | translate }}</md-option>\n      <md-option value="*pause">{{ \'CHAT.PARTIALPAUSE\' | translate }}</md-option>\n      <md-option value="busy">{{ \'CHAT.BUSY\' | translate }}</md-option>\n      <md-option value="idle">{{ \'CHAT.IDLE\' | translate }}</md-option>\n    </md-select>\n    <md-select ng-if="vm.isPause(vm.query.globalStatusFilter)" ng-model="vm.query.pauseTypeFilter" class="md-caption" ng-change="vm.onInit()">\n      <md-option ng-value="\'\'">All</md-option>\n      <md-option value="DEFAULT PAUSE">DEFAULT PAUSE</md-option>\n      <md-option value="ACW">ACW</md-option>\n      <md-option value="LOGININPAUSE">LOGININPAUSE</md-option>\n      <md-option value="Auto-Pause">AUTOPAUSE</md-option>\n      <md-option ng-value="pause.name" ng-repeat="pause in vm.pauses.rows">{{pause.name}}</md-option>\n    </md-select>\n  </div>\n</md-toolbar>\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.order" md-on-reorder="vm.onInit">\n      <tr md-row border="1">\n        <th class="bv text-center" colspan="5">{{ \'CHAT.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          {{ \'CHAT.NAME\' | translate }}</th>\n        <th class="bl custom-column" md-column md-order-by="globalStatus">\n          {{ \'CHAT.STATUS\' | translate }}</th>\n        <th class="bl custom-column" md-column md-order-by="lastLoginAt">\n          {{ \'CHAT.LOGIN_TIME\' | translate }}</th>\n        <th class="bl custom-column" md-column md-order-by="lastPauseAt">\n          {{ \'CHAT.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.order.length">\n        <td md-cell colspan="19">\n          <div layout="row" layout-align="center center">\n            <span>{{ \'CHAT.NO_AGENT_ONLINE\' | translate }}</span>\n          </div>\n        </td>\n      </tr>\n      <tr md-select="vm.agents[value]" md-select-id="id" ng-repeat="(id, value) in vm.order">\n        <td class="bt padding-5">\n          <div layout="row" layout-align="start center">\n            <img class="avatar" ng-src="{{vm.agents[value].userpic && \'api/users/\'+vm.agents[value].id+\'/avatar\' || \'assets/images/avatars/profile.png\'}}">\n            <div layout="column">\n              <span>{{vm.agents[value].fullname}}</span>\n              <span>{{vm.agents[value].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 && (vm.agents[value].phoneBarEnableScreenRecordingByAgent || vm.agents[value].phoneBarEnableAutomaticScreenRecording)">\n            <div class="column" ng-if="vm.agents[value].screenrecording">\n              <span>\n                <md-icon md-font-icon="icon-camcorder-box" style="color: green; font-size: 36px;" aria-label="icon-camcorder-box26">\n                  <md-tooltip>\n                    {{ \'CHAT.TOOLTIP_SCREENRECORDING_ON\' | translate }}\n                  </md-tooltip>\n                </md-icon>\n              </span>\n            </div>\n            <div class="column" ng-if="!vm.agents[value].screenrecording">\n              <span>\n                <md-icon md-font-icon="icon-camcorder-box" style="color: gray" aria-label="icon-camcorder-box26">\n                  <md-tooltip>\n                    {{ \'CHAT.TOOLTIP_SCREENRECORDING_OFF\' | translate }}\n                  </md-tooltip>\n                </md-icon>\n              </span>\n            </div>\n          </div>\n        </td>\n        <td class="bt">\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'}[vm.agents[value].globalStatus]\">{{\n            vm.isPause(vm.agents[value].globalStatus) ? '' : vm.agents[value].globalStatus | uppercase }}\n            {{ vm.isPause(vm.agents[value].globalStatus) ? (vm.isPartialPause(vm.agents[value].globalStatus) ?\n            '*'+vm.agents[value].pauseType || 'DEFAULT PAUSE' : vm.agents[value].pauseType || 'DEFAULT PAUSE') :\n            ''}}</span>\n        </td>\n        <td class=\"bt custom-column\">\n          <timer start-time=\"vm.agents[value].lastLoginAt\"></timer>\n        </td>\n        <td class=\"bt custom-column\">\n          <timer ng-if=\"vm.isPause(vm.agents[value].globalStatus) || vm.isPartialPause(vm.agents[value].globalStatus)\" start-time=\"vm.agents[value].lastPauseAt\"></timer>\n        </td>\n        <td class=\"bt bl\">\n          <div layout=\"row\">\n            <span ng-if=\"!vm.agents[value].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'}[vm.agents[value].voiceStatus]\">{{\n              vm.agents[value].voiceStatus | uppercase }}</span>\n            <span ng-if=\"vm.agents[value].onhold\" class=\"text-boxed md-background-bg bl bt padding-5 orange-400-bg\">ONHOLD</span>\n          </div>\n        </td>\n        <td class=\"bt bl\">\n          <div layout=\"column\">\n            <span ng-if=\"vm.agents[value].queue\" class=\"padding-5\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].voiceStatus]\">{{\n              vm.agents[value].queue }}</span>\n            <span ng-if=\"vm.agents[value].destconnectedlinenum\" class=\"padding-5\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].voiceStatus]\" privacy ng-cloak>{{\n              vm.agents[value].destconnectedlinenum }}</span>\n            <span ng-if=\"vm.agents[value].routealias\" class=\"padding-5\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].voiceStatus]\">{{\n              vm.agents[value].routealias }}</span>\n            <span class=\"padding-5\" ng-if=\"vm.agents[value].queue || vm.agents[value].destconnectedlinenum\">\n              <timer start-time=\"vm.agents[value].voiceStatusTime\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].voiceStatus]\">\n              </timer>\n            </span>\n          </div>\n        </td>\n        <td class=\"bt bl\" ng-if=\"vm.license.chat\">\n          <div layout=\"row\">\n            <div layout=\"column\" layout-align=\"center center\">\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'}[vm.agents[value].chatStatus]\">{{\n                vm.agents[value].chatStatus | uppercase }}</span>\n            </div>\n          </div>\n        </td>\n        <td md-number class=\"bt text-center font-size-20\" ng-if=\"vm.license.chat\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].chatStatus]\">\n          {{ vm.agents[value].chatCurrentCapacity }}</td>\n        <td class=\"bl bt\" ng-if=\"vm.license.mail\">\n          <div layout=\"row\">\n            <div layout=\"column\" layout-align=\"center center\">\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'}[vm.agents[value].mailStatus]\">{{\n                vm.agents[value].mailStatus | uppercase }}</span>\n            </div>\n          </div>\n        </td>\n        <td class=\"bt padding-5 text-center font-size-20\" ng-if=\"vm.license.mail\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].mailStatus]\">\n          {{ vm.agents[value].mailCurrentCapacity }}</td>\n        <td class=\"bl bt\" ng-if=\"vm.license.messaging\">\n          <div layout=\"row\">\n            <div layout=\"column\" layout-align=\"center center\">\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'}[vm.agents[value].smsStatus]\">{{\n                vm.agents[value].smsStatus | uppercase }}</span>\n            </div>\n          </div>\n        </td>\n        <td class=\"bt padding-5 text-center font-size-20\" ng-if=\"vm.license.messaging\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].smsStatus]\">\n          {{ vm.agents[value].smsCurrentCapacity }}</td>\n        <td class=\"bt bl\" ng-if=\"vm.license.openchannel\">\n          <div layout=\"row\">\n            <div layout=\"column\" layout-align=\"center center\">\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'}[vm.agents[value].openchannelStatus]\">{{\n                vm.agents[value].openchannelStatus | uppercase }}</span>\n            </div>\n          </div>\n        </td>\n        <td class=\"bt padding-5 text-center font-size-20\" ng-if=\"vm.license.openchannel\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].openchannelStatus]\">\n          {{ vm.agents[value].openchannelCurrentCapacity }}</td>\n        <td class=\"bt bl\" ng-if=\"vm.license.fax\">\n          <div layout=\"row\">\n            <div layout=\"column\" layout-align=\"center center\">\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'}[vm.agents[value].faxStatus]\">{{\n                vm.agents[value].faxStatus | uppercase }}</span>\n            </div>\n          </div>\n        </td>\n        <td class=\"bt padding-5 text-center font-size-20\" ng-if=\"vm.license.fax\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].faxStatus]\">\n          {{ vm.agents[value].faxCurrentCapacity }}</td>\n        <td class=\"bl bt\" ng-if=\"vm.license.whatsapp\">\n          <div layout=\"row\">\n            <div layout=\"column\" layout-align=\"center center\">\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'}[vm.agents[value].whatsappStatus]\">{{\n                vm.agents[value].whatsappStatus | uppercase }}</span>\n            </div>\n          </div>\n        </td>\n        <td class=\"bt padding-5 text-center font-size-20\" ng-if=\"vm.license.whatsapp\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].whatsappStatus]\">\n          {{ vm.agents[value].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(vm.agents[value], $event)\" translate=\"CHAT.LOGOUT\">\n                  Logout\n                </md-button>\n              </md-menu-item>\n              <md-menu-item>\n                <md-button ng-click=\"vm.queueAdd(vm.agents[value], $event)\" translate=\"CHAT.AGENTADD_QUEUE\">\n                  Add Agent In Queue\n                </md-button>\n              </md-menu-item>\n              <md-menu-item ng-if=\"vm.license.screenrecording && vm.agents[value].phoneBarEnableScreenRecordingByAgent\">\n                <md-menu>\n                  <md-button ng-click=\"$mdMenu.open()\" class=\"text-capitalize\" translate=\"CHAT.SCREENRECORDING\">Screen Recording\n                  </md-button>\n                  <md-menu-content>\n                    <md-menu-item ng-if=\"!vm.agents[value].screenrecording\">\n                      <md-button ng-click=\"vm.screenRecording(vm.agents[value], true)\"><em translate=\"CHAT.START_SCREENRECORDING\">Start\n                          Screen Recording</em></md-button>\n                    </md-menu-item>\n                    <md-menu-item ng-if=\"vm.agents[value].screenrecording\">\n                      <md-button ng-click=\"vm.screenRecording(vm.agents[value], false)\"><em translate=\"CHAT.STOP_SCREENRECORDING\">Stop\n                          Screen Recording</em></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=\"CHAT.PAUSE\">Pause</md-button>\n                  <md-menu-content>\n                    <md-menu-item>\n                      <md-button ng-disabled=\" vm.agents[value].voicePause && 'DEFAULT PAUSE' === vm.agents[value].pauseType\" ng-click=\"vm.pause(vm.agents[value])\"><em translate=\"CHAT.DEFAULT_PAUSE\">Default\n                          Pause</em></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=\"vm.agents[value].voicePause && pause.name === vm.agents[value].pauseType\" ng-click=\"vm.pause(vm.agents[value], 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=\"vm.isPause(vm.agents[value].globalStatus)\">\n                <md-button ng-click=\"vm.unPause(vm.agents[value])\" translate=\"CHAT.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\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.filteredAgents.length}}\" md-on-paginate=\"vm.onInit\" md-page-select></md-table-pagination>\n\x3c!-- / AGENT TABLE --\x3e\n\x3c!-- / MAIN --\x3e"),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 animate-slide-down 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" ms-scroll>\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 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="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 animate-slide-down 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" ms-scroll>\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-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 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      <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-init="vm.getCustomFields(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\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 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\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        </div>\n\n        <div ng-switch-when="select">\n          <label>{{customField.alias}}</label>\n\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\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 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      <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 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 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" 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\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" 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          </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 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>\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 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      <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 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="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 animate-slide-down 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" ms-scroll>\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 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="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 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="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 animate-slide-down 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" ms-scroll>\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        <div layout="column">\n          <span class="font-size-10" translate="DASHBOARDS.FILTER_VOICE_QUEUES">Filter Voice Queues</span>\n          <md-select placeholder="Select one or more queues" class="font-size-12 no-margin w-200" md-on-close="vm.onChangeVoiceQueues()" ng-model="vm.voiceQueuesSelected" multiple aria-label="voiceQueues">\n            <md-option ng-value="voiceQueue.id" ng-repeat="voiceQueue in vm.voiceQueues.rows">{{ voiceQueue.name }}</md-option>\n          </md-select>\n        </div>\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/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  <div layout="row" class="agent-content" ng-if="vm.isActiveTab(0)" ng-style="{\'top\': vm.detectBrowser.browser == \'safari\' ? \'100px\' : \'36px\'}" 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  <div ng-if="!vm.isActiveTab(0)" ng-repeat="(key, tab) in vm.tabs | orderByDate " ng-switch="tab.type">\n    <div ng-switch-when="contact">\n      <div class="agent-content" ms-scroll ng-if="vm.isActiveTab(tab.id)" ng-style="{\'top\': vm.detectBrowser.browser == \'safari\' ? \'100px\' : \'36px\'}" 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">\n      <div ng-if="vm.isActiveTab(tab.id)" ms-scroll 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">\n      <div class="agent-content" ms-scroll ng-if="vm.isActiveTab(tab.id)" ng-style="{\'top\': vm.detectBrowser.browser == \'safari\' ? \'100px\' : \'36px\'}" 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">\n      <div id="interaction-app" ng-if="vm.isActiveTab(tab.id)" class="agent-content" ng-style="{\'top\': vm.detectBrowser.browser == \'safari\' ? \'100px\' : \'36px\'}" 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">\n      <div id="interaction-app" ng-if="vm.isActiveTab(tab.id)" class="agent-content" ng-style="{\'top\': vm.detectBrowser.browser == \'safari\' ? \'100px\' : \'36px\'}" 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">\n      <div id="iframe" ng-if="vm.isActiveTab(tab.id)" class="agent-content" ng-style="{\'top\': vm.detectBrowser.browser == \'safari\' ? \'100px\' : \'36px\'}" 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 ms-scroll 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">\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 mr-0">\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-card-header>\n            <md-divider></md-divider>\n            <md-card-content>\n              <div layout="row" layout-align="end center" class="reload-container">\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"></md-icon>\n                  <md-tooltip md-direction="bottom">\n                    {{ \'DASHBOARDS.RELOAD\' | translate }}\n                  </md-tooltip>\n                </md-button>\n              </div>\n              <div layout="column" layout-align="space-between start" class="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="mr-8">\n                  </md-icon>\n                  <span class="h1" 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"></md-icon>\n                  Name: <span privacy ng-cloak>{{ call.calleridname }}</span>\n                </div>\n\n                <div class="text h4 pt-8" ng-if="call.queue">\n                  <md-icon md-font-icon="icon-stackoverflow"></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"></md-icon>\n                  Extra: {{call.variables.extravar}}\n                </div>\n              </div>\n              <div layout="row" layout-align="end center">\n                <md-button ng-if="call.disposedAt" type="submit" ng-click="vm.disposeCall($event, call)" class="send-button md-accent md-raised">\n                  {{ \'DASHBOARDS.DISPOSE\' | translate}}\n                </md-button>\n              </div>\n            </md-card-content>\n          </md-card>\n          <div flex layout="row" layout-align="end 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\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                </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 ms-scroll>\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" 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" 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        <md-input-container ng-if="!vm.dialerCall" class="md-block">\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              {{ queueCampaign.name }} ({{ queueCampaign.dialActive ? \'Active\' : \'Not Active\' }})</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    </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 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 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" ms-scroll>\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 ms-scroll>\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="md-primary-bg width-50" ms-scroll>\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 layout="column" flex>\n  <div layout="column" flex>\n    <div ng-switch="vm_home.sidebar" style="overflow-y: auto" flex>\n      <div ng-switch-when="agentPresence">\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">\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">\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">\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">\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">\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">\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">\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">\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">\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">\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">\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">\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" 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>\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">\n              <span class="text-truncate font-size-12 subject-text">{{ interaction.subject }}</span>\n              <md-card class="tooltip-preview-text" ng-style="{top: \'-\' + ((($index % 10) + 1) * 18) + \'px\'}">\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" class="text-truncate font-size-12">{{ interaction.subject }}</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 ms-scroll 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 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 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 ms-scroll>\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 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 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 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 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 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 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 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 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 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="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 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        <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 ms-scroll>\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 ms-scroll 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 ms-scroll>\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 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="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 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="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 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="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 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="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 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="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 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\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 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="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 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="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 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="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 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="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" ms-scroll 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" ms-scroll 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" style="width:200px">{{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 animate-slide-down 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" ms-scroll>\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 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="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 animate-slide-down 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" ms-scroll>\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/agents/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.AGENTS">Agents</span>\n    <div flex></div>\n    <ms-search-bar on-search="vm.onInit()" query="vm.query" on-collapse="vm.query.filter = undefined; vm.onInit()" debounce="300"></ms-search-bar>\n    <md-select ng-model="vm.query.globalStatusFilter" class="md-caption" ng-change="vm.query.pauseTypeFilter = \'\'; vm.onInit()">\n      <md-option ng-value="\'\'">{{ \'FAX.ALL\' | translate }}</md-option>\n      <md-option value="pause">{{ \'FAX.PAUSE\' | translate }}</md-option>\n      <md-option value="*pause">{{ \'FAX.PARTIALPAUSE\' | translate }}</md-option>\n      <md-option value="busy">{{ \'FAX.BUSY\' | translate }}</md-option>\n      <md-option value="idle">{{ \'FAX.IDLE\' | translate }}</md-option>\n    </md-select>\n    <md-select ng-if="vm.isPause(vm.query.globalStatusFilter)" ng-model="vm.query.pauseTypeFilter" class="md-caption" ng-change="vm.onInit()">\n      <md-option ng-value="\'\'">All</md-option>\n      <md-option value="DEFAULT PAUSE">DEFAULT PAUSE</md-option>\n      <md-option value="ACW">ACW</md-option>\n      <md-option value="LOGININPAUSE">LOGININPAUSE</md-option>\n      <md-option value="Auto-Pause">AUTOPAUSE</md-option>\n      <md-option ng-value="pause.name" ng-repeat="pause in vm.pauses.rows">{{pause.name}}</md-option>\n    </md-select>\n  </div>\n</md-toolbar>\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.order" md-on-reorder="vm.onInit">\n      <tr md-row border="1">\n        <th class="bv text-center" colspan="5">{{ \'FAX.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          {{ \'FAX.NAME\' | translate }}</th>\n        <th class="bl custom-column" md-column md-order-by="globalStatus">\n          {{ \'FAX.STATUS\' | translate }}</th>\n        <th class="bl custom-column" md-column md-order-by="lastLoginAt">\n          {{ \'FAX.LOGIN_TIME\' | translate }}</th>\n        <th class="bl custom-column" md-column md-order-by="lastPauseAt">\n          {{ \'FAX.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.order.length">\n        <td md-cell colspan="19">\n          <div layout="row" layout-align="center center">\n            <span>{{ \'FAX.NO_AGENT_ONLINE\' | translate }}</span>\n          </div>\n        </td>\n      </tr>\n      <tr md-select="vm.agents[value]" md-select-id="id" ng-repeat="(id, value) in vm.order">\n        <td class="bt padding-5">\n          <div layout="row" layout-align="start center">\n            <img class="avatar" ng-src="{{vm.agents[value].userpic && \'api/users/\'+vm.agents[value].id+\'/avatar\' || \'assets/images/avatars/profile.png\'}}">\n            <div layout="column">\n              <span>{{vm.agents[value].fullname}}</span>\n              <span>{{vm.agents[value].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 && (vm.agents[value].phoneBarEnableScreenRecordingByAgent || vm.agents[value].phoneBarEnableAutomaticScreenRecording)">\n            <div class="column" ng-if="vm.agents[value].screenrecording">\n              <span>\n                <md-icon md-font-icon="icon-camcorder-box" style="color: green; font-size: 36px;" aria-label="icon-camcorder-box26">\n                  <md-tooltip>\n                    {{ \'FAX.TOOLTIP_SCREENRECORDING_ON\' | translate }}\n                  </md-tooltip>\n                </md-icon>\n              </span>\n            </div>\n            <div class="column" ng-if="!vm.agents[value].screenrecording">\n              <span>\n                <md-icon md-font-icon="icon-camcorder-box" style="color: gray" aria-label="icon-camcorder-box26">\n                  <md-tooltip>\n                    {{ \'FAX.TOOLTIP_SCREENRECORDING_OFF\' | translate }}\n                  </md-tooltip>\n                </md-icon>\n              </span>\n            </div>\n          </div>\n        </td>\n        <td class="bt">\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'}[vm.agents[value].globalStatus]\">{{\n            vm.isPause(vm.agents[value].globalStatus) ? '' : vm.agents[value].globalStatus | uppercase }}\n            {{ vm.isPause(vm.agents[value].globalStatus) ? (vm.isPartialPause(vm.agents[value].globalStatus) ?\n            '*'+vm.agents[value].pauseType || 'DEFAULT PAUSE' : vm.agents[value].pauseType || 'DEFAULT PAUSE') :\n            ''}}</span>\n        </td>\n        <td class=\"bt custom-column\">\n          <timer start-time=\"vm.agents[value].lastLoginAt\"></timer>\n        </td>\n        <td class=\"bt custom-column\">\n          <timer ng-if=\"vm.isPause(vm.agents[value].globalStatus) || vm.isPartialPause(vm.agents[value].globalStatus)\" start-time=\"vm.agents[value].lastPauseAt\"></timer>\n        </td>\n        <td class=\"bt bl\">\n          <div layout=\"row\">\n            <span ng-if=\"!vm.agents[value].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'}[vm.agents[value].voiceStatus]\">{{\n              vm.agents[value].voiceStatus | uppercase }}</span>\n            <span ng-if=\"vm.agents[value].onhold\" class=\"text-boxed md-background-bg bl bt padding-5 orange-400-bg\">ONHOLD</span>\n          </div>\n        </td>\n        <td class=\"bt bl\">\n          <div layout=\"column\">\n            <span ng-if=\"vm.agents[value].queue\" class=\"padding-5\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].voiceStatus]\">{{\n              vm.agents[value].queue }}</span>\n            <span ng-if=\"vm.agents[value].destconnectedlinenum\" class=\"padding-5\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].voiceStatus]\" privacy ng-cloak>{{\n              vm.agents[value].destconnectedlinenum }}</span>\n            <span ng-if=\"vm.agents[value].routealias\" class=\"padding-5\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].voiceStatus]\">{{\n              vm.agents[value].routealias }}</span>\n            <span class=\"padding-5\" ng-if=\"vm.agents[value].queue || vm.agents[value].destconnectedlinenum\">\n              <timer start-time=\"vm.agents[value].voiceStatusTime\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].voiceStatus]\">\n              </timer>\n            </span>\n          </div>\n        </td>\n        <td class=\"bt bl\" ng-if=\"vm.license.chat\">\n          <div layout=\"row\">\n            <div layout=\"column\" layout-align=\"center center\">\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'}[vm.agents[value].chatStatus]\">{{\n                vm.agents[value].chatStatus | uppercase }}</span>\n            </div>\n          </div>\n        </td>\n        <td md-number class=\"bt text-center font-size-20\" ng-if=\"vm.license.chat\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].chatStatus]\">\n          {{ vm.agents[value].chatCurrentCapacity }}</td>\n        <td class=\"bl bt\" ng-if=\"vm.license.mail\">\n          <div layout=\"row\">\n            <div layout=\"column\" layout-align=\"center center\">\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'}[vm.agents[value].mailStatus]\">{{\n                vm.agents[value].mailStatus | uppercase }}</span>\n            </div>\n          </div>\n        </td>\n        <td class=\"bt padding-5 text-center font-size-20\" ng-if=\"vm.license.mail\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].mailStatus]\">\n          {{ vm.agents[value].mailCurrentCapacity }}</td>\n        <td class=\"bl bt\" ng-if=\"vm.license.messaging\">\n          <div layout=\"row\">\n            <div layout=\"column\" layout-align=\"center center\">\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'}[vm.agents[value].smsStatus]\">{{\n                vm.agents[value].smsStatus | uppercase }}</span>\n            </div>\n          </div>\n        </td>\n        <td class=\"bt padding-5 text-center font-size-20\" ng-if=\"vm.license.messaging\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].smsStatus]\">\n          {{ vm.agents[value].smsCurrentCapacity }}</td>\n        <td class=\"bt bl\" ng-if=\"vm.license.openchannel\">\n          <div layout=\"row\">\n            <div layout=\"column\" layout-align=\"center center\">\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'}[vm.agents[value].openchannelStatus]\">{{\n                vm.agents[value].openchannelStatus | uppercase }}</span>\n            </div>\n          </div>\n        </td>\n        <td class=\"bt padding-5 text-center font-size-20\" ng-if=\"vm.license.openchannel\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].openchannelStatus]\">\n          {{ vm.agents[value].openchannelCurrentCapacity }}</td>\n        <td class=\"bt bl\" ng-if=\"vm.license.fax\">\n          <div layout=\"row\">\n            <div layout=\"column\" layout-align=\"center center\">\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'}[vm.agents[value].faxStatus]\">{{\n                vm.agents[value].faxStatus | uppercase }}</span>\n            </div>\n          </div>\n        </td>\n        <td class=\"bt padding-5 text-center font-size-20\" ng-if=\"vm.license.fax\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].faxStatus]\">\n          {{ vm.agents[value].faxCurrentCapacity }}</td>\n        <td class=\"bl bt\" ng-if=\"vm.license.whatsapp\">\n          <div layout=\"row\">\n            <div layout=\"column\" layout-align=\"center center\">\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'}[vm.agents[value].whatsappStatus]\">{{\n                vm.agents[value].whatsappStatus | uppercase }}</span>\n            </div>\n          </div>\n        </td>\n        <td class=\"bt padding-5 text-center font-size-20\" ng-if=\"vm.license.whatsapp\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].whatsappStatus]\">\n          {{ vm.agents[value].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(vm.agents[value], $event)\" translate=\"FAX.LOGOUT\">\n                  Logout\n                </md-button>\n              </md-menu-item>\n              <md-menu-item>\n                <md-button ng-click=\"vm.queueAdd(vm.agents[value], $event)\" translate=\"FAX.AGENTADD_QUEUE\">\n                  Add Agent In Queue\n                </md-button>\n              </md-menu-item>\n              <md-menu-item ng-if=\"vm.license.screenrecording && vm.agents[value].phoneBarEnableScreenRecordingByAgent\">\n                <md-menu>\n                  <md-button ng-click=\"$mdMenu.open()\" class=\"text-capitalize\" translate=\"FAX.SCREENRECORDING\">Screen Recording\n                  </md-button>\n                  <md-menu-content>\n                    <md-menu-item ng-if=\"!vm.agents[value].screenrecording\">\n                      <md-button ng-click=\"vm.screenRecording(vm.agents[value], true)\"><em translate=\"FAX.START_SCREENRECORDING\">Start\n                          Screen Recording</em></md-button>\n                    </md-menu-item>\n                    <md-menu-item ng-if=\"vm.agents[value].screenrecording\">\n                      <md-button ng-click=\"vm.screenRecording(vm.agents[value], false)\"><em translate=\"FAX.STOP_SCREENRECORDING\">Stop\n                          Screen Recording</em></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=\"FAX.PAUSE\">Pause</md-button>\n                  <md-menu-content>\n                    <md-menu-item>\n                      <md-button ng-disabled=\" vm.agents[value].voicePause && 'DEFAULT PAUSE' === vm.agents[value].pauseType\" ng-click=\"vm.pause(vm.agents[value])\"><em translate=\"FAX.DEFAULT_PAUSE\">Default\n                          Pause</em></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=\"vm.agents[value].voicePause && pause.name === vm.agents[value].pauseType\" ng-click=\"vm.pause(vm.agents[value], 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=\"vm.isPause(vm.agents[value].globalStatus)\">\n                <md-button ng-click=\"vm.unPause(vm.agents[value])\" translate=\"FAX.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\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.filteredAgents.length}}\" md-on-paginate=\"vm.onInit\" 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" ms-scroll>\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 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="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 animate-slide-down 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" ms-scroll>\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 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="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 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 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 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="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      <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      <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" required>\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      <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\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 animate-slide-down 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" ms-scroll>\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="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.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="username ">{{dynamics365Account.username}}</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="remoteUri ">{{dynamics365Account.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(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 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="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 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 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              <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\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.dynamics365Account.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.URI">Uri</label>\n                <input type="url" name="remoteUri" ng-model="vm.dynamics365Account.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.TENANTID">TenantId</label>\n                <input type="text" name="tenantId" ng-model="vm.dynamics365Account.tenantId" ng-required="true" 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="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.dynamics365Account.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.MOTIONPROXYADDRESS">MotionProxyAddress</label>\n                <input type="url" name="serverUrl" ng-model="vm.dynamics365Account.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.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      <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\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\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/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 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="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 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="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 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 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 animate-slide-down 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" ms-scroll>\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 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="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 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="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 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 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 animate-slide-down 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" ms-scroll>\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 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="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 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="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 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 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 animate-slide-down 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" ms-scroll>\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 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="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 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="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 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 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 animate-slide-down 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" ms-scroll>\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 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="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 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="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 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 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 animate-slide-down 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" ms-scroll>\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 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="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 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="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 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 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 animate-slide-down 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" ms-scroll>\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 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="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 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 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 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="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 animate-slide-down 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" ms-scroll>\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 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="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 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="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 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 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 animate-slide-down 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" ms-scroll>\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 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="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 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="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 ms-scroll>\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 animate-slide-down 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" ms-scroll>\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.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon 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="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="cservice" ng-model="vm.mailAccount.cservice" required>\n          <md-option ng-value="null">Custom</md-option>\n          <md-option ng-value="\'gmail\'">Gmail</md-option>\n          <md-option ng-value="\'hotmail\'">Hotmail</md-option>\n          <md-option ng-value="\'yahoo\'">Yahoo</md-option>\n          <md-option ng-value="\'outlook365\'">Outlook365</md-option>\n        </md-select>\n        <div ng-messages="mailAccountForm[\'cservice\'].$error" ng-show="mailAccountForm[\'cservice\'].$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      <md-input-container ng-if="(vm.newMailAccount && vm.mailAccount.cservice == null) || (vm.newMailAccount == undefined && vm.mailAccount.Imap.service == null)" 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">\n\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 ng-if="(vm.newMailAccount && vm.mailAccount.cservice == null) || (vm.newMailAccount == undefined && vm.mailAccount.Imap.service == null)" 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">\n\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      <md-input-container ng-if="(vm.newMailAccount && vm.mailAccount.cservice == null) || (vm.newMailAccount == undefined && vm.mailAccount.Smtp.service == null)" 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">\n\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 ng-if="(vm.newMailAccount && vm.mailAccount.cservice == null) || (vm.newMailAccount == undefined && vm.mailAccount.Smtp.service == null)" 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">\n\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      <md-input-container ng-if="vm.mailAccount.cservice !== undefined && vm.mailAccount.cservice == null && vm.newMailAccount" class="md-block">\n        <md-switch ng-model="vm.mailAccount.cauthentication" aria-label="Authentication"><span translate="MAIL.AUTHENTICATION">Authentication</span></md-switch>\n      </md-input-container>\n      <md-input-container ng-if="(vm.mailAccount.cauthentication == true || vm.mailAccount.cservice != null) && vm.newMailAccount" class="md-block">\n        <label translate="MAIL.USERNAME">Username</label>\n        <input type="text" name="cuser" ng-model="vm.mailAccount.cuser" ng-required="true">\n\n        <div class="hint"><span translate="MAIL.HELP.USERNAME"></span></div>\n        <div ng-messages="mailAccountForm[\'cuser\'].$error" ng-show="mailAccountForm[\'cuser\'].$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.cauthentication == true || vm.mailAccount.cservice != null) && vm.newMailAccount">\n        <label translate="MAIL.PASSWORD">Password</label>\n        <input type="password" name="cpassword" ng-model="vm.mailAccount.cpassword" placeholder="Password" translate translate-attr-placeholder="MAIL.PASSWORD" required>\n        <div class="hint"><span translate="MAIL.HELP.PASSWORD"></span></div>\n        <div ng-messages="mailAccountForm[\'cpassword\'].$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\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\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 MAILACCOUNT\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 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="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 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="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 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="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 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="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 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="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 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\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 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="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 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="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 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="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 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="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 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="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  \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-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.gotogoto(vm.mailAccount, $event)" 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.agentadddialog(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) || (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  \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="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.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                <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="generalForm[\'fontFamily\'].$error" ng-show="generalForm[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="generalForm[\'fontSize\'].$error" ng-show="generalForm[\'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              <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\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          <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          <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        </md-tab-body>\n      </md-tab>\n      <md-tab>\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.SERVICE">Service</label>\n                <md-select name="Imap.service" ng-model="vm.mailAccount.Imap.service" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="null">Custom</md-option>\n                  <md-option ng-value="\'gmail\'">Gmail</md-option>\n                  <md-option ng-value="\'hotmail\'">Hotmail</md-option>\n                  <md-option ng-value="\'yahoo\'">Yahoo</md-option>\n                  <md-option ng-value="\'outlook365\'">Outlook365</md-option>\n                </md-select>\n                <div ng-messages="imapForm[\'Imap.service\'].$error" ng-show="imapForm[\'Imap.service\'].$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              <md-input-container ng-if="(vm.newMailAccount && vm.mailAccount.cservice == null) || (vm.newMailAccount == undefined && vm.mailAccount.Imap.service == null)" 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\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 ng-if="(vm.newMailAccount && vm.mailAccount.cservice == null) || (vm.newMailAccount == undefined && vm.mailAccount.Imap.service == null)" 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\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 ng-if="vm.mailAccount.Imap.service == null" 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 == true || vm.mailAccount.Imap.service != null" 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\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 == true || vm.mailAccount.Imap.service != null">\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\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\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">connTimeout</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\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">connTimeout field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MAIL.ERRORS.CONNTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">connTimeout 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">authTimeout</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\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">authTimeout field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MAIL.ERRORS.AUTHTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">authTimeout must be a valid greater or equal than</span> <span>1</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.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.SERVICE">Service</label>\n                <md-select name="Smtp.service" ng-model="vm.mailAccount.Smtp.service" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="null">Custom</md-option>\n                  <md-option ng-value="\'gmail\'">Gmail</md-option>\n                  <md-option ng-value="\'hotmail\'">Hotmail</md-option>\n                  <md-option ng-value="\'yahoo\'">Yahoo</md-option>\n                  <md-option ng-value="\'outlook365\'">Outlook365</md-option>\n                </md-select>\n                <div ng-messages="smtpForm[\'Smtp.service\'].$error" ng-show="smtpForm[\'Smtp.service\'].$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              <md-input-container ng-if="(vm.newMailAccount && vm.mailAccount.cservice == null) || (vm.newMailAccount == undefined && vm.mailAccount.Smtp.service == null)" 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 ng-if="(vm.newMailAccount && vm.mailAccount.cservice == null) || (vm.newMailAccount == undefined && vm.mailAccount.Smtp.service == null)" 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 ng-if="vm.mailAccount.Smtp.service == null" 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 ng-if="vm.mailAccount.Smtp.service == null" 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 == true || vm.mailAccount.Smtp.service != null" 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 == true || vm.mailAccount.Smtp.service != null">\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\n\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 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" ms-scroll 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" ms-scroll 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" style="width:200px">{{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  \x3c!-- / CONTENT --\x3e\n\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  \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.MAILACCOUNTS">MailAccounts</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.selectedMailAccounts.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.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  \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!-- MAILACCOUNT TABLE --\x3e\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 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="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">\n                <td md-cell ng-if="mailAccount.userpic"><img class="avatar" alt="{{mailAccount.name}}" ng-src="api/users/{{mailAccount.id}}/avatar" /></td>\n                <td md-cell ng-if="!mailAccount.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{mailAccount.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(mailAccount, ev) : vm.createOrEditMailAccount($event, mailAccount)" md-cell class="id ">{{mailAccount.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(mailAccount, ev) : vm.createOrEditMailAccount($event, mailAccount)" md-cell class="name ">{{mailAccount.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(mailAccount, ev) : vm.createOrEditMailAccount($event, mailAccount)" md-cell class="key ">{{mailAccount.key}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(mailAccount, ev) : vm.createOrEditMailAccount($event, mailAccount)" md-cell class="email ">{{mailAccount.email}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(mailAccount, ev) : vm.createOrEditMailAccount($event, mailAccount)" 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 ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(mailAccount, ev) : vm.createOrEditMailAccount($event, mailAccount)" md-cell class="description ">{{mailAccount.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="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(mailAccount, $event    )" translate="MAIL.EDIT_MAILACCOUNT">\n                          Edit MailAccount\n                        </md-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.verifysmtpverifysmtp(mailAccount, $event    )" translate="MAIL.VERIFYSMTP_MAILACCOUNT">\n                          verifysmtp MailAccount\n                        </md-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(mailAccount, $event    )" translate="MAIL.INTERACTIONS_MAILACCOUNT">\n                          Interactions MailAccount\n                        </md-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(mailAccount, $event    )" translate="MAIL.GOTOREALTIME_MAILACCOUNT">\n                          goToRealtime MailAccount\n                        </md-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(mailAccount, $event    )" translate="MAIL.AGENTADD_MAILACCOUNT">\n                          AgentAdd MailAccount\n                        </md-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(mailAccount, $event    )" translate="MAIL.DELETE_MAILACCOUNT">\n                          Delete MailAccount\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.mailAccounts.count}}" md-on-paginate="vm.getMailAccounts" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / MAILACCOUNT 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 MAILACCOUNT BUTTON --\x3e\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  \x3c!-- / ADD MAILACCOUNT BUTTON --\x3e\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 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="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 animate-slide-down 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" ms-scroll>\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 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="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 animate-slide-down 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" ms-scroll>\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/agents/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.AGENTS">Agents</span>\n    <div flex></div>\n    <ms-search-bar on-search="vm.onInit()" query="vm.query" on-collapse="vm.query.filter = undefined; vm.onInit()" debounce="300"></ms-search-bar>\n    <md-select ng-model="vm.query.globalStatusFilter" class="md-caption" ng-change="vm.query.pauseTypeFilter = \'\'; vm.onInit()">\n      <md-option ng-value="\'\'">{{ \'MAIL.ALL\' | translate }}</md-option>\n      <md-option value="pause">{{ \'MAIL.PAUSE\' | translate }}</md-option>\n      <md-option value="*pause">{{ \'MAIL.PARTIALPAUSE\' | translate }}</md-option>\n      <md-option value="busy">{{ \'MAIL.BUSY\' | translate }}</md-option>\n      <md-option value="idle">{{ \'MAIL.IDLE\' | translate }}</md-option>\n    </md-select>\n    <md-select ng-if="vm.isPause(vm.query.globalStatusFilter)" ng-model="vm.query.pauseTypeFilter" class="md-caption" ng-change="vm.onInit()">\n      <md-option ng-value="\'\'">All</md-option>\n      <md-option value="DEFAULT PAUSE">DEFAULT PAUSE</md-option>\n      <md-option value="ACW">ACW</md-option>\n      <md-option value="LOGININPAUSE">LOGININPAUSE</md-option>\n      <md-option value="Auto-Pause">AUTOPAUSE</md-option>\n      <md-option ng-value="pause.name" ng-repeat="pause in vm.pauses.rows">{{pause.name}}</md-option>\n    </md-select>\n  </div>\n</md-toolbar>\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.order" md-on-reorder="vm.onInit">\n      <tr md-row border="1">\n        <th class="bv text-center" colspan="5">{{ \'MAIL.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          {{ \'MAIL.NAME\' | translate }}</th>\n        <th class="bl custom-column" md-column md-order-by="globalStatus">\n          {{ \'MAIL.STATUS\' | translate }}</th>\n        <th class="bl custom-column" md-column md-order-by="lastLoginAt">\n          {{ \'MAIL.LOGIN_TIME\' | translate }}</th>\n        <th class="bl custom-column" md-column md-order-by="lastPauseAt">\n          {{ \'MAIL.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.order.length">\n        <td md-cell colspan="19">\n          <div layout="row" layout-align="center center">\n            <span>{{ \'MAIL.NO_AGENT_ONLINE\' | translate }}</span>\n          </div>\n        </td>\n      </tr>\n      <tr md-select="vm.agents[value]" md-select-id="id" ng-repeat="(id, value) in vm.order">\n        <td class="bt padding-5">\n          <div layout="row" layout-align="start center">\n            <img class="avatar" ng-src="{{vm.agents[value].userpic && \'api/users/\'+vm.agents[value].id+\'/avatar\' || \'assets/images/avatars/profile.png\'}}">\n            <div layout="column">\n              <span>{{vm.agents[value].fullname}}</span>\n              <span>{{vm.agents[value].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 && (vm.agents[value].phoneBarEnableScreenRecordingByAgent || vm.agents[value].phoneBarEnableAutomaticScreenRecording)">\n            <div class="column" ng-if="vm.agents[value].screenrecording">\n              <span>\n                <md-icon md-font-icon="icon-camcorder-box" style="color: green; font-size: 36px;" aria-label="icon-camcorder-box26">\n                  <md-tooltip>\n                    {{ \'MAIL.TOOLTIP_SCREENRECORDING_ON\' | translate }}\n                  </md-tooltip>\n                </md-icon>\n              </span>\n            </div>\n            <div class="column" ng-if="!vm.agents[value].screenrecording">\n              <span>\n                <md-icon md-font-icon="icon-camcorder-box" style="color: gray" aria-label="icon-camcorder-box26">\n                  <md-tooltip>\n                    {{ \'MAIL.TOOLTIP_SCREENRECORDING_OFF\' | translate }}\n                  </md-tooltip>\n                </md-icon>\n              </span>\n            </div>\n          </div>\n        </td>\n        <td class="bt">\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'}[vm.agents[value].globalStatus]\">{{\n            vm.isPause(vm.agents[value].globalStatus) ? '' : vm.agents[value].globalStatus | uppercase }}\n            {{ vm.isPause(vm.agents[value].globalStatus) ? (vm.isPartialPause(vm.agents[value].globalStatus) ?\n            '*'+vm.agents[value].pauseType || 'DEFAULT PAUSE' : vm.agents[value].pauseType || 'DEFAULT PAUSE') :\n            ''}}</span>\n        </td>\n        <td class=\"bt custom-column\">\n          <timer start-time=\"vm.agents[value].lastLoginAt\"></timer>\n        </td>\n        <td class=\"bt custom-column\">\n          <timer ng-if=\"vm.isPause(vm.agents[value].globalStatus) || vm.isPartialPause(vm.agents[value].globalStatus)\" start-time=\"vm.agents[value].lastPauseAt\"></timer>\n        </td>\n        <td class=\"bt bl\">\n          <div layout=\"row\">\n            <span ng-if=\"!vm.agents[value].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'}[vm.agents[value].voiceStatus]\">{{\n              vm.agents[value].voiceStatus | uppercase }}</span>\n            <span ng-if=\"vm.agents[value].onhold\" class=\"text-boxed md-background-bg bl bt padding-5 orange-400-bg\">ONHOLD</span>\n          </div>\n        </td>\n        <td class=\"bt bl\">\n          <div layout=\"column\">\n            <span ng-if=\"vm.agents[value].queue\" class=\"padding-5\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].voiceStatus]\">{{\n              vm.agents[value].queue }}</span>\n            <span ng-if=\"vm.agents[value].destconnectedlinenum\" class=\"padding-5\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].voiceStatus]\" privacy ng-cloak>{{\n              vm.agents[value].destconnectedlinenum }}</span>\n            <span ng-if=\"vm.agents[value].routealias\" class=\"padding-5\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].voiceStatus]\">{{\n              vm.agents[value].routealias }}</span>\n            <span class=\"padding-5\" ng-if=\"vm.agents[value].queue || vm.agents[value].destconnectedlinenum\">\n              <timer start-time=\"vm.agents[value].voiceStatusTime\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].voiceStatus]\">\n              </timer>\n            </span>\n          </div>\n        </td>\n        <td class=\"bt bl\" ng-if=\"vm.license.chat\">\n          <div layout=\"row\">\n            <div layout=\"column\" layout-align=\"center center\">\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'}[vm.agents[value].chatStatus]\">{{\n                vm.agents[value].chatStatus | uppercase }}</span>\n            </div>\n          </div>\n        </td>\n        <td md-number class=\"bt text-center font-size-20\" ng-if=\"vm.license.chat\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].chatStatus]\">\n          {{ vm.agents[value].chatCurrentCapacity }}</td>\n        <td class=\"bl bt\" ng-if=\"vm.license.mail\">\n          <div layout=\"row\">\n            <div layout=\"column\" layout-align=\"center center\">\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'}[vm.agents[value].mailStatus]\">{{\n                vm.agents[value].mailStatus | uppercase }}</span>\n            </div>\n          </div>\n        </td>\n        <td class=\"bt padding-5 text-center font-size-20\" ng-if=\"vm.license.mail\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].mailStatus]\">\n          {{ vm.agents[value].mailCurrentCapacity }}</td>\n        <td class=\"bl bt\" ng-if=\"vm.license.messaging\">\n          <div layout=\"row\">\n            <div layout=\"column\" layout-align=\"center center\">\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'}[vm.agents[value].smsStatus]\">{{\n                vm.agents[value].smsStatus | uppercase }}</span>\n            </div>\n          </div>\n        </td>\n        <td class=\"bt padding-5 text-center font-size-20\" ng-if=\"vm.license.messaging\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].smsStatus]\">\n          {{ vm.agents[value].smsCurrentCapacity }}</td>\n        <td class=\"bt bl\" ng-if=\"vm.license.openchannel\">\n          <div layout=\"row\">\n            <div layout=\"column\" layout-align=\"center center\">\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'}[vm.agents[value].openchannelStatus]\">{{\n                vm.agents[value].openchannelStatus | uppercase }}</span>\n            </div>\n          </div>\n        </td>\n        <td class=\"bt padding-5 text-center font-size-20\" ng-if=\"vm.license.openchannel\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].openchannelStatus]\">\n          {{ vm.agents[value].openchannelCurrentCapacity }}</td>\n        <td class=\"bt bl\" ng-if=\"vm.license.fax\">\n          <div layout=\"row\">\n            <div layout=\"column\" layout-align=\"center center\">\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'}[vm.agents[value].faxStatus]\">{{\n                vm.agents[value].faxStatus | uppercase }}</span>\n            </div>\n          </div>\n        </td>\n        <td class=\"bt padding-5 text-center font-size-20\" ng-if=\"vm.license.fax\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].faxStatus]\">\n          {{ vm.agents[value].faxCurrentCapacity }}</td>\n        <td class=\"bl bt\" ng-if=\"vm.license.whatsapp\">\n          <div layout=\"row\">\n            <div layout=\"column\" layout-align=\"center center\">\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'}[vm.agents[value].whatsappStatus]\">{{\n                vm.agents[value].whatsappStatus | uppercase }}</span>\n            </div>\n          </div>\n        </td>\n        <td class=\"bt padding-5 text-center font-size-20\" ng-if=\"vm.license.whatsapp\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].whatsappStatus]\">\n          {{ vm.agents[value].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(vm.agents[value], $event)\" translate=\"MAIL.LOGOUT\">\n                  Logout\n                </md-button>\n              </md-menu-item>\n              <md-menu-item>\n                <md-button ng-click=\"vm.queueAdd(vm.agents[value], $event)\" translate=\"MAIL.AGENTADD_QUEUE\">\n                  Add Agent In Queue\n                </md-button>\n              </md-menu-item>\n              <md-menu-item ng-if=\"vm.license.screenrecording && vm.agents[value].phoneBarEnableScreenRecordingByAgent\">\n                <md-menu>\n                  <md-button ng-click=\"$mdMenu.open()\" class=\"text-capitalize\" translate=\"MAIL.SCREENRECORDING\">Screen Recording\n                  </md-button>\n                  <md-menu-content>\n                    <md-menu-item ng-if=\"!vm.agents[value].screenrecording\">\n                      <md-button ng-click=\"vm.screenRecording(vm.agents[value], true)\"><em translate=\"MAIL.START_SCREENRECORDING\">Start\n                          Screen Recording</em></md-button>\n                    </md-menu-item>\n                    <md-menu-item ng-if=\"vm.agents[value].screenrecording\">\n                      <md-button ng-click=\"vm.screenRecording(vm.agents[value], false)\"><em translate=\"MAIL.STOP_SCREENRECORDING\">Stop\n                          Screen Recording</em></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=\"MAIL.PAUSE\">Pause</md-button>\n                  <md-menu-content>\n                    <md-menu-item>\n                      <md-button ng-disabled=\" vm.agents[value].voicePause && 'DEFAULT PAUSE' === vm.agents[value].pauseType\" ng-click=\"vm.pause(vm.agents[value])\"><em translate=\"MAIL.DEFAULT_PAUSE\">Default\n                          Pause</em></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=\"vm.agents[value].voicePause && pause.name === vm.agents[value].pauseType\" ng-click=\"vm.pause(vm.agents[value], 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=\"vm.isPause(vm.agents[value].globalStatus)\">\n                <md-button ng-click=\"vm.unPause(vm.agents[value])\" translate=\"MAIL.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\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.filteredAgents.length}}\" md-on-paginate=\"vm.onInit\" 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 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="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 animate-slide-down 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" ms-scroll>\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 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 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/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 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="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 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="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 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" 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 animate-slide-down 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" ms-scroll>\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 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="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 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="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 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" 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      <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) || (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        </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\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 animate-slide-down 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" ms-scroll>\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/agents/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.AGENTS">Agents</span>\n    <div flex></div>\n    <ms-search-bar on-search="vm.onInit()" query="vm.query" on-collapse="vm.query.filter = undefined; vm.onInit()" debounce="300"></ms-search-bar>\n    <md-select ng-model="vm.query.globalStatusFilter" class="md-caption" ng-change="vm.query.pauseTypeFilter = \'\'; vm.onInit()">\n      <md-option ng-value="\'\'">{{ \'MOTIONDIALER.ALL\' | translate }}</md-option>\n      <md-option value="pause">{{ \'MOTIONDIALER.PAUSE\' | translate }}</md-option>\n      <md-option value="*pause">{{ \'MOTIONDIALER.PARTIALPAUSE\' | translate }}</md-option>\n      <md-option value="busy">{{ \'MOTIONDIALER.BUSY\' | translate }}</md-option>\n      <md-option value="idle">{{ \'MOTIONDIALER.IDLE\' | translate }}</md-option>\n    </md-select>\n    <md-select ng-if="vm.isPause(vm.query.globalStatusFilter)" ng-model="vm.query.pauseTypeFilter" class="md-caption" ng-change="vm.onInit()">\n      <md-option ng-value="\'\'">All</md-option>\n      <md-option value="DEFAULT PAUSE">DEFAULT PAUSE</md-option>\n      <md-option value="ACW">ACW</md-option>\n      <md-option value="LOGININPAUSE">LOGININPAUSE</md-option>\n      <md-option value="Auto-Pause">AUTOPAUSE</md-option>\n      <md-option ng-value="pause.name" ng-repeat="pause in vm.pauses.rows">{{pause.name}}</md-option>\n    </md-select>\n  </div>\n</md-toolbar>\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.order" md-on-reorder="vm.onInit">\n      <tr md-row border="1">\n        <th class="bv text-center" colspan="5">{{ \'MOTIONDIALER.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          {{ \'MOTIONDIALER.NAME\' | translate }}</th>\n        <th class="bl custom-column" md-column md-order-by="globalStatus">\n          {{ \'MOTIONDIALER.STATUS\' | translate }}</th>\n        <th class="bl custom-column" md-column md-order-by="lastLoginAt">\n          {{ \'MOTIONDIALER.LOGIN_TIME\' | translate }}</th>\n        <th class="bl custom-column" md-column md-order-by="lastPauseAt">\n          {{ \'MOTIONDIALER.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.order.length">\n        <td md-cell colspan="19">\n          <div layout="row" layout-align="center center">\n            <span>{{ \'MOTIONDIALER.NO_AGENT_ONLINE\' | translate }}</span>\n          </div>\n        </td>\n      </tr>\n      <tr md-select="vm.agents[value]" md-select-id="id" ng-repeat="(id, value) in vm.order">\n        <td class="bt padding-5">\n          <div layout="row" layout-align="start center">\n            <img class="avatar" ng-src="{{vm.agents[value].userpic && \'api/users/\'+vm.agents[value].id+\'/avatar\' || \'assets/images/avatars/profile.png\'}}">\n            <div layout="column">\n              <span>{{vm.agents[value].fullname}}</span>\n              <span>{{vm.agents[value].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 && (vm.agents[value].phoneBarEnableScreenRecordingByAgent || vm.agents[value].phoneBarEnableAutomaticScreenRecording)">\n            <div class="column" ng-if="vm.agents[value].screenrecording">\n              <span>\n                <md-icon md-font-icon="icon-camcorder-box" style="color: green; font-size: 36px;" aria-label="icon-camcorder-box26">\n                  <md-tooltip>\n                    {{ \'MOTIONDIALER.TOOLTIP_SCREENRECORDING_ON\' | translate }}\n                  </md-tooltip>\n                </md-icon>\n              </span>\n            </div>\n            <div class="column" ng-if="!vm.agents[value].screenrecording">\n              <span>\n                <md-icon md-font-icon="icon-camcorder-box" style="color: gray" aria-label="icon-camcorder-box26">\n                  <md-tooltip>\n                    {{ \'MOTIONDIALER.TOOLTIP_SCREENRECORDING_OFF\' | translate }}\n                  </md-tooltip>\n                </md-icon>\n              </span>\n            </div>\n          </div>\n        </td>\n        <td class="bt">\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'}[vm.agents[value].globalStatus]\">{{\n            vm.isPause(vm.agents[value].globalStatus) ? '' : vm.agents[value].globalStatus | uppercase }}\n            {{ vm.isPause(vm.agents[value].globalStatus) ? (vm.isPartialPause(vm.agents[value].globalStatus) ?\n            '*'+vm.agents[value].pauseType || 'DEFAULT PAUSE' : vm.agents[value].pauseType || 'DEFAULT PAUSE') :\n            ''}}</span>\n        </td>\n        <td class=\"bt custom-column\">\n          <timer start-time=\"vm.agents[value].lastLoginAt\"></timer>\n        </td>\n        <td class=\"bt custom-column\">\n          <timer ng-if=\"vm.isPause(vm.agents[value].globalStatus) || vm.isPartialPause(vm.agents[value].globalStatus)\" start-time=\"vm.agents[value].lastPauseAt\"></timer>\n        </td>\n        <td class=\"bt bl\">\n          <div layout=\"row\">\n            <span ng-if=\"!vm.agents[value].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'}[vm.agents[value].voiceStatus]\">{{\n              vm.agents[value].voiceStatus | uppercase }}</span>\n            <span ng-if=\"vm.agents[value].onhold\" class=\"text-boxed md-background-bg bl bt padding-5 orange-400-bg\">ONHOLD</span>\n          </div>\n        </td>\n        <td class=\"bt bl\">\n          <div layout=\"column\">\n            <span ng-if=\"vm.agents[value].queue\" class=\"padding-5\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].voiceStatus]\">{{\n              vm.agents[value].queue }}</span>\n            <span ng-if=\"vm.agents[value].destconnectedlinenum\" class=\"padding-5\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].voiceStatus]\" privacy ng-cloak>{{\n              vm.agents[value].destconnectedlinenum }}</span>\n            <span ng-if=\"vm.agents[value].routealias\" class=\"padding-5\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].voiceStatus]\">{{\n              vm.agents[value].routealias }}</span>\n            <span class=\"padding-5\" ng-if=\"vm.agents[value].queue || vm.agents[value].destconnectedlinenum\">\n              <timer start-time=\"vm.agents[value].voiceStatusTime\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].voiceStatus]\">\n              </timer>\n            </span>\n          </div>\n        </td>\n        <td class=\"bt bl\" ng-if=\"vm.license.chat\">\n          <div layout=\"row\">\n            <div layout=\"column\" layout-align=\"center center\">\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'}[vm.agents[value].chatStatus]\">{{\n                vm.agents[value].chatStatus | uppercase }}</span>\n            </div>\n          </div>\n        </td>\n        <td md-number class=\"bt text-center font-size-20\" ng-if=\"vm.license.chat\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].chatStatus]\">\n          {{ vm.agents[value].chatCurrentCapacity }}</td>\n        <td class=\"bl bt\" ng-if=\"vm.license.mail\">\n          <div layout=\"row\">\n            <div layout=\"column\" layout-align=\"center center\">\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'}[vm.agents[value].mailStatus]\">{{\n                vm.agents[value].mailStatus | uppercase }}</span>\n            </div>\n          </div>\n        </td>\n        <td class=\"bt padding-5 text-center font-size-20\" ng-if=\"vm.license.mail\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].mailStatus]\">\n          {{ vm.agents[value].mailCurrentCapacity }}</td>\n        <td class=\"bl bt\" ng-if=\"vm.license.messaging\">\n          <div layout=\"row\">\n            <div layout=\"column\" layout-align=\"center center\">\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'}[vm.agents[value].smsStatus]\">{{\n                vm.agents[value].smsStatus | uppercase }}</span>\n            </div>\n          </div>\n        </td>\n        <td class=\"bt padding-5 text-center font-size-20\" ng-if=\"vm.license.messaging\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].smsStatus]\">\n          {{ vm.agents[value].smsCurrentCapacity }}</td>\n        <td class=\"bt bl\" ng-if=\"vm.license.openchannel\">\n          <div layout=\"row\">\n            <div layout=\"column\" layout-align=\"center center\">\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'}[vm.agents[value].openchannelStatus]\">{{\n                vm.agents[value].openchannelStatus | uppercase }}</span>\n            </div>\n          </div>\n        </td>\n        <td class=\"bt padding-5 text-center font-size-20\" ng-if=\"vm.license.openchannel\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].openchannelStatus]\">\n          {{ vm.agents[value].openchannelCurrentCapacity }}</td>\n        <td class=\"bt bl\" ng-if=\"vm.license.fax\">\n          <div layout=\"row\">\n            <div layout=\"column\" layout-align=\"center center\">\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'}[vm.agents[value].faxStatus]\">{{\n                vm.agents[value].faxStatus | uppercase }}</span>\n            </div>\n          </div>\n        </td>\n        <td class=\"bt padding-5 text-center font-size-20\" ng-if=\"vm.license.fax\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].faxStatus]\">\n          {{ vm.agents[value].faxCurrentCapacity }}</td>\n        <td class=\"bl bt\" ng-if=\"vm.license.whatsapp\">\n          <div layout=\"row\">\n            <div layout=\"column\" layout-align=\"center center\">\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'}[vm.agents[value].whatsappStatus]\">{{\n                vm.agents[value].whatsappStatus | uppercase }}</span>\n            </div>\n          </div>\n        </td>\n        <td class=\"bt padding-5 text-center font-size-20\" ng-if=\"vm.license.whatsapp\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].whatsappStatus]\">\n          {{ vm.agents[value].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(vm.agents[value], $event)\" translate=\"MOTIONDIALER.LOGOUT\">\n                  Logout\n                </md-button>\n              </md-menu-item>\n              <md-menu-item>\n                <md-button ng-click=\"vm.queueAdd(vm.agents[value], $event)\" translate=\"MOTIONDIALER.AGENTADD_QUEUE\">\n                  Add Agent In Queue\n                </md-button>\n              </md-menu-item>\n              <md-menu-item ng-if=\"vm.license.screenrecording && vm.agents[value].phoneBarEnableScreenRecordingByAgent\">\n                <md-menu>\n                  <md-button ng-click=\"$mdMenu.open()\" class=\"text-capitalize\" translate=\"MOTIONDIALER.SCREENRECORDING\">Screen Recording\n                  </md-button>\n                  <md-menu-content>\n                    <md-menu-item ng-if=\"!vm.agents[value].screenrecording\">\n                      <md-button ng-click=\"vm.screenRecording(vm.agents[value], true)\"><em translate=\"MOTIONDIALER.START_SCREENRECORDING\">Start\n                          Screen Recording</em></md-button>\n                    </md-menu-item>\n                    <md-menu-item ng-if=\"vm.agents[value].screenrecording\">\n                      <md-button ng-click=\"vm.screenRecording(vm.agents[value], false)\"><em translate=\"MOTIONDIALER.STOP_SCREENRECORDING\">Stop\n                          Screen Recording</em></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=\"MOTIONDIALER.PAUSE\">Pause</md-button>\n                  <md-menu-content>\n                    <md-menu-item>\n                      <md-button ng-disabled=\" vm.agents[value].voicePause && 'DEFAULT PAUSE' === vm.agents[value].pauseType\" ng-click=\"vm.pause(vm.agents[value])\"><em translate=\"MOTIONDIALER.DEFAULT_PAUSE\">Default\n                          Pause</em></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=\"vm.agents[value].voicePause && pause.name === vm.agents[value].pauseType\" ng-click=\"vm.pause(vm.agents[value], 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=\"vm.isPause(vm.agents[value].globalStatus)\">\n                <md-button ng-click=\"vm.unPause(vm.agents[value])\" translate=\"MOTIONDIALER.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\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.filteredAgents.length}}\" md-on-paginate=\"vm.onInit\" md-page-select></md-table-pagination>\n\x3c!-- / AGENT TABLE --\x3e\n\x3c!-- / MAIN --\x3e"),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" ms-scroll>\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 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="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 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="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 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="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 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="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 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="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 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="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 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="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 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="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 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="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 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\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 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="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 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="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 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="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 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="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 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="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" ms-scroll 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" ms-scroll 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" style="width:200px">{{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 animate-slide-down 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" ms-scroll>\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 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="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 animate-slide-down 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" ms-scroll>\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/agents/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="OPENCHANNEL.AGENTS">Agents</span>\n    <div flex></div>\n    <ms-search-bar on-search="vm.onInit()" query="vm.query" on-collapse="vm.query.filter = undefined; vm.onInit()" debounce="300"></ms-search-bar>\n    <md-select ng-model="vm.query.globalStatusFilter" class="md-caption" ng-change="vm.query.pauseTypeFilter = \'\'; vm.onInit()">\n      <md-option ng-value="\'\'">{{ \'OPENCHANNEL.ALL\' | translate }}</md-option>\n      <md-option value="pause">{{ \'OPENCHANNEL.PAUSE\' | translate }}</md-option>\n      <md-option value="*pause">{{ \'OPENCHANNEL.PARTIALPAUSE\' | translate }}</md-option>\n      <md-option value="busy">{{ \'OPENCHANNEL.BUSY\' | translate }}</md-option>\n      <md-option value="idle">{{ \'OPENCHANNEL.IDLE\' | translate }}</md-option>\n    </md-select>\n    <md-select ng-if="vm.isPause(vm.query.globalStatusFilter)" ng-model="vm.query.pauseTypeFilter" class="md-caption" ng-change="vm.onInit()">\n      <md-option ng-value="\'\'">All</md-option>\n      <md-option value="DEFAULT PAUSE">DEFAULT PAUSE</md-option>\n      <md-option value="ACW">ACW</md-option>\n      <md-option value="LOGININPAUSE">LOGININPAUSE</md-option>\n      <md-option value="Auto-Pause">AUTOPAUSE</md-option>\n      <md-option ng-value="pause.name" ng-repeat="pause in vm.pauses.rows">{{pause.name}}</md-option>\n    </md-select>\n  </div>\n</md-toolbar>\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.order" md-on-reorder="vm.onInit">\n      <tr md-row border="1">\n        <th class="bv text-center" colspan="5">{{ \'OPENCHANNEL.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          {{ \'OPENCHANNEL.NAME\' | translate }}</th>\n        <th class="bl custom-column" md-column md-order-by="globalStatus">\n          {{ \'OPENCHANNEL.STATUS\' | translate }}</th>\n        <th class="bl custom-column" md-column md-order-by="lastLoginAt">\n          {{ \'OPENCHANNEL.LOGIN_TIME\' | translate }}</th>\n        <th class="bl custom-column" md-column md-order-by="lastPauseAt">\n          {{ \'OPENCHANNEL.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.order.length">\n        <td md-cell colspan="19">\n          <div layout="row" layout-align="center center">\n            <span>{{ \'OPENCHANNEL.NO_AGENT_ONLINE\' | translate }}</span>\n          </div>\n        </td>\n      </tr>\n      <tr md-select="vm.agents[value]" md-select-id="id" ng-repeat="(id, value) in vm.order">\n        <td class="bt padding-5">\n          <div layout="row" layout-align="start center">\n            <img class="avatar" ng-src="{{vm.agents[value].userpic && \'api/users/\'+vm.agents[value].id+\'/avatar\' || \'assets/images/avatars/profile.png\'}}">\n            <div layout="column">\n              <span>{{vm.agents[value].fullname}}</span>\n              <span>{{vm.agents[value].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 && (vm.agents[value].phoneBarEnableScreenRecordingByAgent || vm.agents[value].phoneBarEnableAutomaticScreenRecording)">\n            <div class="column" ng-if="vm.agents[value].screenrecording">\n              <span>\n                <md-icon md-font-icon="icon-camcorder-box" style="color: green; font-size: 36px;" aria-label="icon-camcorder-box26">\n                  <md-tooltip>\n                    {{ \'OPENCHANNEL.TOOLTIP_SCREENRECORDING_ON\' | translate }}\n                  </md-tooltip>\n                </md-icon>\n              </span>\n            </div>\n            <div class="column" ng-if="!vm.agents[value].screenrecording">\n              <span>\n                <md-icon md-font-icon="icon-camcorder-box" style="color: gray" aria-label="icon-camcorder-box26">\n                  <md-tooltip>\n                    {{ \'OPENCHANNEL.TOOLTIP_SCREENRECORDING_OFF\' | translate }}\n                  </md-tooltip>\n                </md-icon>\n              </span>\n            </div>\n          </div>\n        </td>\n        <td class="bt">\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'}[vm.agents[value].globalStatus]\">{{\n            vm.isPause(vm.agents[value].globalStatus) ? '' : vm.agents[value].globalStatus | uppercase }}\n            {{ vm.isPause(vm.agents[value].globalStatus) ? (vm.isPartialPause(vm.agents[value].globalStatus) ?\n            '*'+vm.agents[value].pauseType || 'DEFAULT PAUSE' : vm.agents[value].pauseType || 'DEFAULT PAUSE') :\n            ''}}</span>\n        </td>\n        <td class=\"bt custom-column\">\n          <timer start-time=\"vm.agents[value].lastLoginAt\"></timer>\n        </td>\n        <td class=\"bt custom-column\">\n          <timer ng-if=\"vm.isPause(vm.agents[value].globalStatus) || vm.isPartialPause(vm.agents[value].globalStatus)\" start-time=\"vm.agents[value].lastPauseAt\"></timer>\n        </td>\n        <td class=\"bt bl\">\n          <div layout=\"row\">\n            <span ng-if=\"!vm.agents[value].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'}[vm.agents[value].voiceStatus]\">{{\n              vm.agents[value].voiceStatus | uppercase }}</span>\n            <span ng-if=\"vm.agents[value].onhold\" class=\"text-boxed md-background-bg bl bt padding-5 orange-400-bg\">ONHOLD</span>\n          </div>\n        </td>\n        <td class=\"bt bl\">\n          <div layout=\"column\">\n            <span ng-if=\"vm.agents[value].queue\" class=\"padding-5\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].voiceStatus]\">{{\n              vm.agents[value].queue }}</span>\n            <span ng-if=\"vm.agents[value].destconnectedlinenum\" class=\"padding-5\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].voiceStatus]\" privacy ng-cloak>{{\n              vm.agents[value].destconnectedlinenum }}</span>\n            <span ng-if=\"vm.agents[value].routealias\" class=\"padding-5\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].voiceStatus]\">{{\n              vm.agents[value].routealias }}</span>\n            <span class=\"padding-5\" ng-if=\"vm.agents[value].queue || vm.agents[value].destconnectedlinenum\">\n              <timer start-time=\"vm.agents[value].voiceStatusTime\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].voiceStatus]\">\n              </timer>\n            </span>\n          </div>\n        </td>\n        <td class=\"bt bl\" ng-if=\"vm.license.chat\">\n          <div layout=\"row\">\n            <div layout=\"column\" layout-align=\"center center\">\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'}[vm.agents[value].chatStatus]\">{{\n                vm.agents[value].chatStatus | uppercase }}</span>\n            </div>\n          </div>\n        </td>\n        <td md-number class=\"bt text-center font-size-20\" ng-if=\"vm.license.chat\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].chatStatus]\">\n          {{ vm.agents[value].chatCurrentCapacity }}</td>\n        <td class=\"bl bt\" ng-if=\"vm.license.mail\">\n          <div layout=\"row\">\n            <div layout=\"column\" layout-align=\"center center\">\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'}[vm.agents[value].mailStatus]\">{{\n                vm.agents[value].mailStatus | uppercase }}</span>\n            </div>\n          </div>\n        </td>\n        <td class=\"bt padding-5 text-center font-size-20\" ng-if=\"vm.license.mail\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].mailStatus]\">\n          {{ vm.agents[value].mailCurrentCapacity }}</td>\n        <td class=\"bl bt\" ng-if=\"vm.license.messaging\">\n          <div layout=\"row\">\n            <div layout=\"column\" layout-align=\"center center\">\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'}[vm.agents[value].smsStatus]\">{{\n                vm.agents[value].smsStatus | uppercase }}</span>\n            </div>\n          </div>\n        </td>\n        <td class=\"bt padding-5 text-center font-size-20\" ng-if=\"vm.license.messaging\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].smsStatus]\">\n          {{ vm.agents[value].smsCurrentCapacity }}</td>\n        <td class=\"bt bl\" ng-if=\"vm.license.openchannel\">\n          <div layout=\"row\">\n            <div layout=\"column\" layout-align=\"center center\">\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'}[vm.agents[value].openchannelStatus]\">{{\n                vm.agents[value].openchannelStatus | uppercase }}</span>\n            </div>\n          </div>\n        </td>\n        <td class=\"bt padding-5 text-center font-size-20\" ng-if=\"vm.license.openchannel\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].openchannelStatus]\">\n          {{ vm.agents[value].openchannelCurrentCapacity }}</td>\n        <td class=\"bt bl\" ng-if=\"vm.license.fax\">\n          <div layout=\"row\">\n            <div layout=\"column\" layout-align=\"center center\">\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'}[vm.agents[value].faxStatus]\">{{\n                vm.agents[value].faxStatus | uppercase }}</span>\n            </div>\n          </div>\n        </td>\n        <td class=\"bt padding-5 text-center font-size-20\" ng-if=\"vm.license.fax\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].faxStatus]\">\n          {{ vm.agents[value].faxCurrentCapacity }}</td>\n        <td class=\"bl bt\" ng-if=\"vm.license.whatsapp\">\n          <div layout=\"row\">\n            <div layout=\"column\" layout-align=\"center center\">\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'}[vm.agents[value].whatsappStatus]\">{{\n                vm.agents[value].whatsappStatus | uppercase }}</span>\n            </div>\n          </div>\n        </td>\n        <td class=\"bt padding-5 text-center font-size-20\" ng-if=\"vm.license.whatsapp\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].whatsappStatus]\">\n          {{ vm.agents[value].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(vm.agents[value], $event)\" translate=\"OPENCHANNEL.LOGOUT\">\n                  Logout\n                </md-button>\n              </md-menu-item>\n              <md-menu-item>\n                <md-button ng-click=\"vm.queueAdd(vm.agents[value], $event)\" translate=\"OPENCHANNEL.AGENTADD_QUEUE\">\n                  Add Agent In Queue\n                </md-button>\n              </md-menu-item>\n              <md-menu-item ng-if=\"vm.license.screenrecording && vm.agents[value].phoneBarEnableScreenRecordingByAgent\">\n                <md-menu>\n                  <md-button ng-click=\"$mdMenu.open()\" class=\"text-capitalize\" translate=\"OPENCHANNEL.SCREENRECORDING\">Screen Recording\n                  </md-button>\n                  <md-menu-content>\n                    <md-menu-item ng-if=\"!vm.agents[value].screenrecording\">\n                      <md-button ng-click=\"vm.screenRecording(vm.agents[value], true)\"><em translate=\"OPENCHANNEL.START_SCREENRECORDING\">Start\n                          Screen Recording</em></md-button>\n                    </md-menu-item>\n                    <md-menu-item ng-if=\"vm.agents[value].screenrecording\">\n                      <md-button ng-click=\"vm.screenRecording(vm.agents[value], false)\"><em translate=\"OPENCHANNEL.STOP_SCREENRECORDING\">Stop\n                          Screen Recording</em></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=\"OPENCHANNEL.PAUSE\">Pause</md-button>\n                  <md-menu-content>\n                    <md-menu-item>\n                      <md-button ng-disabled=\" vm.agents[value].voicePause && 'DEFAULT PAUSE' === vm.agents[value].pauseType\" ng-click=\"vm.pause(vm.agents[value])\"><em translate=\"OPENCHANNEL.DEFAULT_PAUSE\">Default\n                          Pause</em></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=\"vm.agents[value].voicePause && pause.name === vm.agents[value].pauseType\" ng-click=\"vm.pause(vm.agents[value], 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=\"vm.isPause(vm.agents[value].globalStatus)\">\n                <md-button ng-click=\"vm.unPause(vm.agents[value])\" translate=\"OPENCHANNEL.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\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.filteredAgents.length}}\" md-on-paginate=\"vm.onInit\" md-page-select></md-table-pagination>\n\x3c!-- / AGENT TABLE --\x3e\n\x3c!-- / MAIN --\x3e"),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/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.AITOOLS">AiTools</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 animate-slide-down 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" ms-scroll>\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 md-cell ng-if="cloudProvider.userpic"><img class="avatar" alt="{{cloudProvider.name}}" ng-src="api/users/{{cloudProvider.id}}/avatar" /></td>\n                <td md-cell ng-if="!cloudProvider.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{cloudProvider.name}}" ng-src="assets/images/avatars/profile.png" /></td>\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.arrayservice[cloudProvider.service].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="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(cloudProvider, $event    )" translate="SETTINGS.EDIT_CLOUDPROVIDER">\n                          Edit CloudProvider\n                        </md-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(cloudProvider, $event    )" translate="SETTINGS.DELETE_CLOUDPROVIDER">\n                          Delete CloudProvider\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.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.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon 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="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-value="\'AmazonAWS\'">AmazonAWS</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      <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 class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-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/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 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        <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" ms-scroll>\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 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 class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-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" ms-scroll>\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\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\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\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        </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        </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" ms-scroll>\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="36" 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              </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 class="text-italic text-bold">{{vm.license.uuid}}</span></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 class="text-italic text-bold">{{vm.license.machineUuid}}</span></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 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="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="36"><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 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      <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 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="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 animate-slide-down 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" ms-scroll>\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/create/dialog.html",'<md-dialog class="smtp-dialog" aria-label="New Smtp">\n  <form name="smtpForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon 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="SETTINGS.ACCOUNTNAME">AccountName</label>\n        <input type="text" name="name" ng-model="vm.smtp.name" ng-required="true" autofocus>\n\n        <div ng-messages="smtpForm[\'name\'].$error" ng-show="smtpForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SETTINGS.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="SETTINGS.EMAILADDRESS">EmailAddress</label>\n        <input type="email" name="email" ng-model="vm.smtp.email" ng-required="true">\n\n        <div class="hint"><span translate="SETTINGS.HELP.EMAILADDRESS"></span></div>\n        <div ng-messages="smtpForm[\'email\'].$error" ng-show="smtpForm[\'email\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SETTINGS.ERRORS.EMAILADDRESS_REQUIRED">EmailAddress field is required</span>\n          </div>\n          <div ng-message="email">\n            <span translate="SETTINGS.ERRORS.EMAILADDRESS_MUST_VALID">EmailAddress 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.SMTP_SERVICE">SMTP_Service</label>\n        <md-select name="Smtp.service" ng-model="vm.smtp.Smtp.service" required>\n          <md-option ng-value="null">Custom</md-option>\n          <md-option ng-value="\'gmail\'">Gmail</md-option>\n          <md-option ng-value="\'hotmail\'">Hotmail</md-option>\n          <md-option ng-value="\'yahoo\'">Yahoo</md-option>\n          <md-option ng-value="\'outlook365\'">Outlook365</md-option>\n        </md-select>\n        <div ng-messages="smtpForm[\'Smtp.service\'].$error" ng-show="smtpForm[\'Smtp.service\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SETTINGS.ERRORS.SMTP_SERVICE_REQUIRED">SMTP_Service field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.smtp.Smtp.service == null" class="md-block">\n        <label translate="SETTINGS.SMTP_HOST">SMTP_Host</label>\n        <input type="text" name="Smtp.host" ng-model="vm.smtp.Smtp.host" ng-required="true">\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="SETTINGS.ERRORS.SMTP_HOST_REQUIRED">SMTP_Host field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.smtp.Smtp.service == null" class="md-block">\n        <label translate="SETTINGS.SMTP_PORT">SMTP_Port</label>\n        <input type="number" name="Smtp.port" ng-model="vm.smtp.Smtp.port" value="465" ng-required="true">\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="SETTINGS.ERRORS.SMTP_PORT_REQUIRED">SMTP_Port field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.smtp.Smtp.service == null" class="md-block">\n        <md-switch ng-model="vm.smtp.Smtp.secure" aria-label="SMTP_Secure"><span translate="SETTINGS.SMTP_SECURE">SMTP_Secure</span></md-switch>\n        <div class="hint"><span translate="SETTINGS.HELP.SMTP_SECURE"></span></div>\n      </md-input-container>\n      <md-input-container ng-if="vm.smtp.Smtp.service == null" class="md-block">\n        <md-switch ng-model="vm.smtp.Smtp.authentication" aria-label="SMTP_Authentication"><span translate="SETTINGS.SMTP_AUTHENTICATION">SMTP_Authentication</span></md-switch>\n      </md-input-container>\n      <md-input-container ng-if="vm.smtp.Smtp.authentication == true || vm.smtp.Smtp.service != null" class="md-block">\n        <label translate="SETTINGS.SMTP_USERNAME">SMTP_Username</label>\n        <input type="text" name="Smtp.user" ng-model="vm.smtp.Smtp.user" ng-required="true">\n\n        <div class="hint"><span translate="SETTINGS.HELP.SMTP_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="SETTINGS.ERRORS.SMTP_USERNAME_REQUIRED">SMTP_Username field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block" ng-if="vm.smtp.Smtp.authentication == true || vm.smtp.Smtp.service != null">\n        <label translate="SETTINGS.SMTP_PASSWORD">SMTP_Password</label>\n        <input type="password" name="Smtp.pass" ng-model="vm.smtp.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="smtpForm[\'Smtp.pass\'].$error" role="alert">\n          <div ng-message="required">\n            <span translate="SETTINGS.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="SETTINGS.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="SETTINGS.DESCRIPTION">Description</label>\n        <input type="" name="description" ng-model="vm.smtp.description">\n\n        <div ng-messages="smtpForm[\'description\'].$error" ng-show="smtpForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SETTINGS.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.newSmtp" ng-click="vm.saveSmtp()" class="send-button md-accent md-raised" ng-disabled="smtpForm.$invalid || smtpForm.$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.newSmtp" ng-click="vm.addNewSmtp()" class="send-button md-accent md-raised" ng-disabled="smtpForm.$invalid" aria-label="ADD" translate="SETTINGS.ADD_SMTP" translate-attr-aria-label="SETTINGS.ADD_SMTP">\n          ADD SMTP\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newSmtp" ng-click="vm.deleteSmtp($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/smtps/smtps.html",'<div id="smtps" 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.SMTP">Smtp</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div>\n      <md-button type="submit" ng-click="vm.verifySmtp()" ng-disabled="!vm.smtp.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  \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" ms-scroll>\n\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          <md-input-container class="md-block">\n            <label translate="SETTINGS.ACCOUNTNAME">AccountName</label>\n            <input type="text" name="name" ng-model="vm.smtp.name" ng-required="true" autofocus>\n\n            <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.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="SETTINGS.EMAILADDRESS">EmailAddress</label>\n            <input type="email" name="email" ng-model="vm.smtp.email" ng-required="true">\n\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.EMAILADDRESS_REQUIRED">EmailAddress field is required</span>\n              </div>\n              <div ng-message="email">\n                <span translate="SETTINGS.ERRORS.EMAILADDRESS_MUST_VALID">EmailAddress 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.SMTP_SERVICE">SMTP_Service</label>\n            <md-select name="Smtp.service" ng-model="vm.smtp.Smtp.service" required>\n              <md-option ng-value="null">Custom</md-option>\n              <md-option ng-value="\'gmail\'">Gmail</md-option>\n              <md-option ng-value="\'hotmail\'">Hotmail</md-option>\n              <md-option ng-value="\'yahoo\'">Yahoo</md-option>\n              <md-option ng-value="\'outlook365\'">Outlook365</md-option>\n            </md-select>\n            <div ng-messages="generalForm[\'Smtp.service\'].$error" ng-show="generalForm[\'Smtp.service\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.SMTP_SERVICE_REQUIRED">SMTP_Service field is required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container ng-if="vm.smtp.Smtp.service == null" class="md-block">\n            <label translate="SETTINGS.SMTP_HOST">SMTP_Host</label>\n            <input type="text" name="Smtp.host" ng-model="vm.smtp.Smtp.host" ng-required="true">\n\n            <div ng-messages="generalForm[\'Smtp.host\'].$error" ng-show="generalForm[\'Smtp.host\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.SMTP_HOST_REQUIRED">SMTP_Host field is required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container ng-if="vm.smtp.Smtp.service == null" class="md-block">\n            <label translate="SETTINGS.SMTP_PORT">SMTP_Port</label>\n            <input type="number" name="Smtp.port" ng-model="vm.smtp.Smtp.port" value="465" ng-required="true">\n\n            <div ng-messages="generalForm[\'Smtp.port\'].$error" ng-show="generalForm[\'Smtp.port\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.SMTP_PORT_REQUIRED">SMTP_Port field is required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container ng-if="vm.smtp.Smtp.service == null" class="md-block">\n            <md-switch ng-model="vm.smtp.Smtp.secure" aria-label="SMTP_Secure"><span translate="SETTINGS.SMTP_SECURE">SMTP_Secure</span></md-switch>\n            <div class="hint"><span translate="SETTINGS.HELP.SMTP_SECURE"></span></div>\n          </md-input-container>\n          <md-input-container ng-if="vm.smtp.Smtp.service == null" class="md-block">\n            <md-switch ng-model="vm.smtp.Smtp.authentication" aria-label="SMTP_Authentication"><span translate="SETTINGS.SMTP_AUTHENTICATION">SMTP_Authentication</span></md-switch>\n          </md-input-container>\n          <md-input-container ng-if="vm.smtp.Smtp.authentication == true || vm.smtp.Smtp.service != null" class="md-block">\n            <label translate="SETTINGS.SMTP_USERNAME">SMTP_Username</label>\n            <input type="text" name="Smtp.user" ng-model="vm.smtp.Smtp.user" ng-required="true">\n\n            <div class="hint"><span translate="SETTINGS.HELP.SMTP_USERNAME"></span></div>\n            <div ng-messages="generalForm[\'Smtp.user\'].$error" ng-show="generalForm[\'Smtp.user\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.SMTP_USERNAME_REQUIRED">SMTP_Username field is required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container class="md-block" ng-if="vm.smtp.Smtp.authentication == true || vm.smtp.Smtp.service != null">\n            <label translate="SETTINGS.SMTP_PASSWORD">SMTP_Password</label>\n            <input type="password" name="Smtp.pass" ng-model="vm.smtp.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[\'Smtp.pass\'].$error" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n              </div>\n              <div ng-message="pattern">\n                <span translate="SETTINGS.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="SETTINGS.DESCRIPTION">Description</label>\n            <input type="" name="description" ng-model="vm.smtp.description">\n\n            <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.DESCRIPTION_REQUIRED">Description 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/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 ms-scroll>\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" ms-scroll>\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/agents/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="SMS.AGENTS">Agents</span>\n    <div flex></div>\n    <ms-search-bar on-search="vm.onInit()" query="vm.query" on-collapse="vm.query.filter = undefined; vm.onInit()" debounce="300"></ms-search-bar>\n    <md-select ng-model="vm.query.globalStatusFilter" class="md-caption" ng-change="vm.query.pauseTypeFilter = \'\'; vm.onInit()">\n      <md-option ng-value="\'\'">{{ \'SMS.ALL\' | translate }}</md-option>\n      <md-option value="pause">{{ \'SMS.PAUSE\' | translate }}</md-option>\n      <md-option value="*pause">{{ \'SMS.PARTIALPAUSE\' | translate }}</md-option>\n      <md-option value="busy">{{ \'SMS.BUSY\' | translate }}</md-option>\n      <md-option value="idle">{{ \'SMS.IDLE\' | translate }}</md-option>\n    </md-select>\n    <md-select ng-if="vm.isPause(vm.query.globalStatusFilter)" ng-model="vm.query.pauseTypeFilter" class="md-caption" ng-change="vm.onInit()">\n      <md-option ng-value="\'\'">All</md-option>\n      <md-option value="DEFAULT PAUSE">DEFAULT PAUSE</md-option>\n      <md-option value="ACW">ACW</md-option>\n      <md-option value="LOGININPAUSE">LOGININPAUSE</md-option>\n      <md-option value="Auto-Pause">AUTOPAUSE</md-option>\n      <md-option ng-value="pause.name" ng-repeat="pause in vm.pauses.rows">{{pause.name}}</md-option>\n    </md-select>\n  </div>\n</md-toolbar>\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.order" md-on-reorder="vm.onInit">\n      <tr md-row border="1">\n        <th class="bv text-center" colspan="5">{{ \'SMS.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          {{ \'SMS.NAME\' | translate }}</th>\n        <th class="bl custom-column" md-column md-order-by="globalStatus">\n          {{ \'SMS.STATUS\' | translate }}</th>\n        <th class="bl custom-column" md-column md-order-by="lastLoginAt">\n          {{ \'SMS.LOGIN_TIME\' | translate }}</th>\n        <th class="bl custom-column" md-column md-order-by="lastPauseAt">\n          {{ \'SMS.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.order.length">\n        <td md-cell colspan="19">\n          <div layout="row" layout-align="center center">\n            <span>{{ \'SMS.NO_AGENT_ONLINE\' | translate }}</span>\n          </div>\n        </td>\n      </tr>\n      <tr md-select="vm.agents[value]" md-select-id="id" ng-repeat="(id, value) in vm.order">\n        <td class="bt padding-5">\n          <div layout="row" layout-align="start center">\n            <img class="avatar" ng-src="{{vm.agents[value].userpic && \'api/users/\'+vm.agents[value].id+\'/avatar\' || \'assets/images/avatars/profile.png\'}}">\n            <div layout="column">\n              <span>{{vm.agents[value].fullname}}</span>\n              <span>{{vm.agents[value].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 && (vm.agents[value].phoneBarEnableScreenRecordingByAgent || vm.agents[value].phoneBarEnableAutomaticScreenRecording)">\n            <div class="column" ng-if="vm.agents[value].screenrecording">\n              <span>\n                <md-icon md-font-icon="icon-camcorder-box" style="color: green; font-size: 36px;" aria-label="icon-camcorder-box26">\n                  <md-tooltip>\n                    {{ \'SMS.TOOLTIP_SCREENRECORDING_ON\' | translate }}\n                  </md-tooltip>\n                </md-icon>\n              </span>\n            </div>\n            <div class="column" ng-if="!vm.agents[value].screenrecording">\n              <span>\n                <md-icon md-font-icon="icon-camcorder-box" style="color: gray" aria-label="icon-camcorder-box26">\n                  <md-tooltip>\n                    {{ \'SMS.TOOLTIP_SCREENRECORDING_OFF\' | translate }}\n                  </md-tooltip>\n                </md-icon>\n              </span>\n            </div>\n          </div>\n        </td>\n        <td class="bt">\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'}[vm.agents[value].globalStatus]\">{{\n            vm.isPause(vm.agents[value].globalStatus) ? '' : vm.agents[value].globalStatus | uppercase }}\n            {{ vm.isPause(vm.agents[value].globalStatus) ? (vm.isPartialPause(vm.agents[value].globalStatus) ?\n            '*'+vm.agents[value].pauseType || 'DEFAULT PAUSE' : vm.agents[value].pauseType || 'DEFAULT PAUSE') :\n            ''}}</span>\n        </td>\n        <td class=\"bt custom-column\">\n          <timer start-time=\"vm.agents[value].lastLoginAt\"></timer>\n        </td>\n        <td class=\"bt custom-column\">\n          <timer ng-if=\"vm.isPause(vm.agents[value].globalStatus) || vm.isPartialPause(vm.agents[value].globalStatus)\" start-time=\"vm.agents[value].lastPauseAt\"></timer>\n        </td>\n        <td class=\"bt bl\">\n          <div layout=\"row\">\n            <span ng-if=\"!vm.agents[value].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'}[vm.agents[value].voiceStatus]\">{{\n              vm.agents[value].voiceStatus | uppercase }}</span>\n            <span ng-if=\"vm.agents[value].onhold\" class=\"text-boxed md-background-bg bl bt padding-5 orange-400-bg\">ONHOLD</span>\n          </div>\n        </td>\n        <td class=\"bt bl\">\n          <div layout=\"column\">\n            <span ng-if=\"vm.agents[value].queue\" class=\"padding-5\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].voiceStatus]\">{{\n              vm.agents[value].queue }}</span>\n            <span ng-if=\"vm.agents[value].destconnectedlinenum\" class=\"padding-5\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].voiceStatus]\" privacy ng-cloak>{{\n              vm.agents[value].destconnectedlinenum }}</span>\n            <span ng-if=\"vm.agents[value].routealias\" class=\"padding-5\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].voiceStatus]\">{{\n              vm.agents[value].routealias }}</span>\n            <span class=\"padding-5\" ng-if=\"vm.agents[value].queue || vm.agents[value].destconnectedlinenum\">\n              <timer start-time=\"vm.agents[value].voiceStatusTime\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].voiceStatus]\">\n              </timer>\n            </span>\n          </div>\n        </td>\n        <td class=\"bt bl\" ng-if=\"vm.license.chat\">\n          <div layout=\"row\">\n            <div layout=\"column\" layout-align=\"center center\">\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'}[vm.agents[value].chatStatus]\">{{\n                vm.agents[value].chatStatus | uppercase }}</span>\n            </div>\n          </div>\n        </td>\n        <td md-number class=\"bt text-center font-size-20\" ng-if=\"vm.license.chat\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].chatStatus]\">\n          {{ vm.agents[value].chatCurrentCapacity }}</td>\n        <td class=\"bl bt\" ng-if=\"vm.license.mail\">\n          <div layout=\"row\">\n            <div layout=\"column\" layout-align=\"center center\">\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'}[vm.agents[value].mailStatus]\">{{\n                vm.agents[value].mailStatus | uppercase }}</span>\n            </div>\n          </div>\n        </td>\n        <td class=\"bt padding-5 text-center font-size-20\" ng-if=\"vm.license.mail\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].mailStatus]\">\n          {{ vm.agents[value].mailCurrentCapacity }}</td>\n        <td class=\"bl bt\" ng-if=\"vm.license.messaging\">\n          <div layout=\"row\">\n            <div layout=\"column\" layout-align=\"center center\">\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'}[vm.agents[value].smsStatus]\">{{\n                vm.agents[value].smsStatus | uppercase }}</span>\n            </div>\n          </div>\n        </td>\n        <td class=\"bt padding-5 text-center font-size-20\" ng-if=\"vm.license.messaging\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].smsStatus]\">\n          {{ vm.agents[value].smsCurrentCapacity }}</td>\n        <td class=\"bt bl\" ng-if=\"vm.license.openchannel\">\n          <div layout=\"row\">\n            <div layout=\"column\" layout-align=\"center center\">\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'}[vm.agents[value].openchannelStatus]\">{{\n                vm.agents[value].openchannelStatus | uppercase }}</span>\n            </div>\n          </div>\n        </td>\n        <td class=\"bt padding-5 text-center font-size-20\" ng-if=\"vm.license.openchannel\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].openchannelStatus]\">\n          {{ vm.agents[value].openchannelCurrentCapacity }}</td>\n        <td class=\"bt bl\" ng-if=\"vm.license.fax\">\n          <div layout=\"row\">\n            <div layout=\"column\" layout-align=\"center center\">\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'}[vm.agents[value].faxStatus]\">{{\n                vm.agents[value].faxStatus | uppercase }}</span>\n            </div>\n          </div>\n        </td>\n        <td class=\"bt padding-5 text-center font-size-20\" ng-if=\"vm.license.fax\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].faxStatus]\">\n          {{ vm.agents[value].faxCurrentCapacity }}</td>\n        <td class=\"bl bt\" ng-if=\"vm.license.whatsapp\">\n          <div layout=\"row\">\n            <div layout=\"column\" layout-align=\"center center\">\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'}[vm.agents[value].whatsappStatus]\">{{\n                vm.agents[value].whatsappStatus | uppercase }}</span>\n            </div>\n          </div>\n        </td>\n        <td class=\"bt padding-5 text-center font-size-20\" ng-if=\"vm.license.whatsapp\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].whatsappStatus]\">\n          {{ vm.agents[value].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(vm.agents[value], $event)\" translate=\"SMS.LOGOUT\">\n                  Logout\n                </md-button>\n              </md-menu-item>\n              <md-menu-item>\n                <md-button ng-click=\"vm.queueAdd(vm.agents[value], $event)\" translate=\"SMS.AGENTADD_QUEUE\">\n                  Add Agent In Queue\n                </md-button>\n              </md-menu-item>\n              <md-menu-item ng-if=\"vm.license.screenrecording && vm.agents[value].phoneBarEnableScreenRecordingByAgent\">\n                <md-menu>\n                  <md-button ng-click=\"$mdMenu.open()\" class=\"text-capitalize\" translate=\"SMS.SCREENRECORDING\">Screen Recording\n                  </md-button>\n                  <md-menu-content>\n                    <md-menu-item ng-if=\"!vm.agents[value].screenrecording\">\n                      <md-button ng-click=\"vm.screenRecording(vm.agents[value], true)\"><em translate=\"SMS.START_SCREENRECORDING\">Start\n                          Screen Recording</em></md-button>\n                    </md-menu-item>\n                    <md-menu-item ng-if=\"vm.agents[value].screenrecording\">\n                      <md-button ng-click=\"vm.screenRecording(vm.agents[value], false)\"><em translate=\"SMS.STOP_SCREENRECORDING\">Stop\n                          Screen Recording</em></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=\"SMS.PAUSE\">Pause</md-button>\n                  <md-menu-content>\n                    <md-menu-item>\n                      <md-button ng-disabled=\" vm.agents[value].voicePause && 'DEFAULT PAUSE' === vm.agents[value].pauseType\" ng-click=\"vm.pause(vm.agents[value])\"><em translate=\"SMS.DEFAULT_PAUSE\">Default\n                          Pause</em></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=\"vm.agents[value].voicePause && pause.name === vm.agents[value].pauseType\" ng-click=\"vm.pause(vm.agents[value], 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=\"vm.isPause(vm.agents[value].globalStatus)\">\n                <md-button ng-click=\"vm.unPause(vm.agents[value])\" translate=\"SMS.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\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.filteredAgents.length}}\" md-on-paginate=\"vm.onInit\" md-page-select></md-table-pagination>\n\x3c!-- / AGENT TABLE --\x3e\n\x3c!-- / MAIN --\x3e"),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 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="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 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="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 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="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 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="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 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="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 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="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 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="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 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="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 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="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 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\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 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="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 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="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 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="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 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="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 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="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" ms-scroll 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" ms-scroll 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" style="width:200px">{{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 animate-slide-down 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" ms-scroll>\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 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="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 animate-slide-down 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" ms-scroll>\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\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.AGENTS">Agents</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.selectedAgents.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.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\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-agents-count">\n          <span>{{vm.selectedAgents.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.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\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\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\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 ng-if="vm.table == \'users\' || vm.table == \'agents\'" 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 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 && (vm.table == \'users\' || vm.table == \'agents\')"><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 ">{{ vm.arrayshowWebBar[agent.showWebBar].option }}</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\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(agent, $event    )" translate="STAFF.EDIT_AGENT">\n                          Edit Agent\n                        </md-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(agent, $event    )" translate="STAFF.TEAMADD_AGENT">\n                          teamadd Agent\n                        </md-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(agent, $event    )" translate="STAFF.DELETE_AGENT">\n                          Delete Agent\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.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\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\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 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="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\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\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 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 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" 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\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\n      <div layout="row" layout-align="start center">\n\n        <div class="agent-image" hide-xs>\n          <img ng-src="assets/images/business/agents.jpg">\n        </div>\n\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\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\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)" 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="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\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\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\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\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\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\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\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\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\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\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\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\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\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="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\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\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\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\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\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\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\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\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\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\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\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\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\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\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\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\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\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\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\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\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\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\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\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\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\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\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\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\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\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\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\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\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\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\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\n      <md-divider></md-divider>\n\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\n              <span ng-if="vm_pc.agent.role === \'admin\'" class="md-headline" translate="STAFF.ALL_MODULES_AVAILABLE">All modules are already available.</span>\n\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/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 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="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 animate-slide-down 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" ms-scroll>\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 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="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 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" 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 animate-slide-down 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" ms-scroll>\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 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="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 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="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 animate-slide-down 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" ms-scroll>\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 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="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\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\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\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-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 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" 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\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\n      <div layout="row" layout-align="start center">\n\n        <div class="user-image" hide-xs>\n          <img ng-src="assets/images/business/users.jpg">\n        </div>\n\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\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\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\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="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\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\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\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\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\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\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\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\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\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\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\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\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="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\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\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\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\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\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.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 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\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/users/users.html",'<div id="users" 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.USERS">Users</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.selectedUsers.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.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\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-users-count">\n          <span>{{vm.selectedUsers.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.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\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\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\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 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 && (vm.table == \'users\' || vm.table == \'agents\')"><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\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(user, $event    )" translate="STAFF.EDIT_USER">\n                          Edit User\n                        </md-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(user, $event    )" translate="STAFF.DELETE_USER">\n                          Delete User\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.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\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\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 animate-slide-down 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" ms-scroll>\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 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.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/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 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.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 animate-slide-down 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" ms-scroll>\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 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.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 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.TYPE">Type</label>\n        <md-select name="type" ng-model="vm.dashboarditem.type" 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 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\'"> {{ \'TOOLS.ABANDONED\' | translate }} </md-option>\n\n          <md-option ng-value="\'waiting\'"> {{ \'TOOLS.WAITING\' | translate }} </md-option>\n\n          <md-option ng-value="\'talking\'"> {{ \'TOOLS.TALKING\' | translate }} </md-option>\n\n          <md-option ng-value="\'answered\'"> {{ \'TOOLS.ANSWERED\' | translate }} </md-option>\n\n          <md-option ng-value="\'unmanaged\'"> {{ \'TOOLS.UNMANAGED\' | 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\'"> {{ \'TOOLS.ABANDONED\' | translate }} </md-option>\n\n          <md-option ng-value="\'waiting\'"> {{ \'TOOLS.WAITING\' | translate }} </md-option>\n\n          <md-option ng-value="\'talking\'"> {{ \'TOOLS.TALKING\' | translate }} </md-option>\n\n          <md-option ng-value="\'answered\'"> {{ \'TOOLS.ANSWERED\' | 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\'"> {{ \'TOOLS.ABANDONED\' | translate }} </md-option>\n\n          <md-option ng-value="\'waiting\'"> {{ \'TOOLS.WAITING\' | translate }} </md-option>\n\n          <md-option ng-value="\'talking\'"> {{ \'TOOLS.TALKING\' | translate }} </md-option>\n\n          <md-option ng-value="\'answered\'"> {{ \'TOOLS.ANSWERED\' | 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\'"> {{ \'TOOLS.ABANDONED\' | translate }} </md-option>\n\n          <md-option ng-value="\'waiting\'"> {{ \'TOOLS.WAITING\' | translate }} </md-option>\n\n          <md-option ng-value="\'talking\'"> {{ \'TOOLS.TALKING\' | translate }} </md-option>\n\n          <md-option ng-value="\'answered\'"> {{ \'TOOLS.ANSWERED\' | 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="[\'multibar-chart\', \'pie-chart\', \'counter\'].includes(vm.dashboarditem.type)" 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 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" ms-scroll>\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" ms-scroll>\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 ms-scroll>\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 animate-slide-down 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" ms-scroll>\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 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.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 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      <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 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="" 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 animate-slide-down 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" ms-scroll>\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 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.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 animate-slide-down 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" ms-scroll>\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 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.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" ms-scroll>\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" ms-scroll>\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 animate-slide-down 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" ms-scroll>\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 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.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 animate-slide-down 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" ms-scroll>\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 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 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 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.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 animate-slide-down 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" ms-scroll>\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 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.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 animate-slide-down 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" ms-scroll>\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 ms-scroll>\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 ms-scroll>\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 == \'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)" 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  <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 ms-scroll>\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-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 == \'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-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      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-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.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 ms-scroll>\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-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 == \'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-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      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-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 animate-slide-down 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" ms-scroll>\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 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.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 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.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 animate-slide-down 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" ms-scroll>\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 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.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 animate-slide-down 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" ms-scroll>\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 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="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 animate-slide-down 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" ms-scroll>\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" 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>({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <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 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>({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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 animate-slide-down 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" ms-scroll>\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 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="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 animate-slide-down 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" ms-scroll>\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 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="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 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>({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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" ms-scroll 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" ms-scroll 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" style="width:200px">{{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 animate-slide-down 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" ms-scroll>\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 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>({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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" ms-scroll 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" ms-scroll 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" style="width:200px">{{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 animate-slide-down 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" ms-scroll>\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 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="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 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="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 animate-slide-down 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" ms-scroll>\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 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>({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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" 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" 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" ms-scroll 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" ms-scroll 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" style="width:200px">{{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 animate-slide-down 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" ms-scroll>\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/agents/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.AGENTS">Agents</span>\n    <div flex></div>\n    <ms-search-bar on-search="vm.onInit()" query="vm.query" on-collapse="vm.query.filter = undefined; vm.onInit()" debounce="300"></ms-search-bar>\n    <md-select ng-model="vm.query.globalStatusFilter" class="md-caption" ng-change="vm.query.pauseTypeFilter = \'\'; vm.onInit()">\n      <md-option ng-value="\'\'">{{ \'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.isPause(vm.query.globalStatusFilter)" ng-model="vm.query.pauseTypeFilter" class="md-caption" ng-change="vm.onInit()">\n      <md-option ng-value="\'\'">All</md-option>\n      <md-option value="DEFAULT PAUSE">DEFAULT PAUSE</md-option>\n      <md-option value="ACW">ACW</md-option>\n      <md-option value="LOGININPAUSE">LOGININPAUSE</md-option>\n      <md-option value="Auto-Pause">AUTOPAUSE</md-option>\n      <md-option ng-value="pause.name" ng-repeat="pause in vm.pauses.rows">{{pause.name}}</md-option>\n    </md-select>\n  </div>\n</md-toolbar>\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.order" md-on-reorder="vm.onInit">\n      <tr md-row border="1">\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.order.length">\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="vm.agents[value]" md-select-id="id" ng-repeat="(id, value) in vm.order">\n        <td class="bt padding-5">\n          <div layout="row" layout-align="start center">\n            <img class="avatar" ng-src="{{vm.agents[value].userpic && \'api/users/\'+vm.agents[value].id+\'/avatar\' || \'assets/images/avatars/profile.png\'}}">\n            <div layout="column">\n              <span>{{vm.agents[value].fullname}}</span>\n              <span>{{vm.agents[value].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 && (vm.agents[value].phoneBarEnableScreenRecordingByAgent || vm.agents[value].phoneBarEnableAutomaticScreenRecording)">\n            <div class="column" ng-if="vm.agents[value].screenrecording">\n              <span>\n                <md-icon md-font-icon="icon-camcorder-box" style="color: green; font-size: 36px;" aria-label="icon-camcorder-box26">\n                  <md-tooltip>\n                    {{ \'VOICE.TOOLTIP_SCREENRECORDING_ON\' | translate }}\n                  </md-tooltip>\n                </md-icon>\n              </span>\n            </div>\n            <div class="column" ng-if="!vm.agents[value].screenrecording">\n              <span>\n                <md-icon md-font-icon="icon-camcorder-box" style="color: gray" aria-label="icon-camcorder-box26">\n                  <md-tooltip>\n                    {{ \'VOICE.TOOLTIP_SCREENRECORDING_OFF\' | translate }}\n                  </md-tooltip>\n                </md-icon>\n              </span>\n            </div>\n          </div>\n        </td>\n        <td class="bt">\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'}[vm.agents[value].globalStatus]\">{{\n            vm.isPause(vm.agents[value].globalStatus) ? '' : vm.agents[value].globalStatus | uppercase }}\n            {{ vm.isPause(vm.agents[value].globalStatus) ? (vm.isPartialPause(vm.agents[value].globalStatus) ?\n            '*'+vm.agents[value].pauseType || 'DEFAULT PAUSE' : vm.agents[value].pauseType || 'DEFAULT PAUSE') :\n            ''}}</span>\n        </td>\n        <td class=\"bt custom-column\">\n          <timer start-time=\"vm.agents[value].lastLoginAt\"></timer>\n        </td>\n        <td class=\"bt custom-column\">\n          <timer ng-if=\"vm.isPause(vm.agents[value].globalStatus) || vm.isPartialPause(vm.agents[value].globalStatus)\" start-time=\"vm.agents[value].lastPauseAt\"></timer>\n        </td>\n        <td class=\"bt bl\">\n          <div layout=\"row\">\n            <span ng-if=\"!vm.agents[value].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'}[vm.agents[value].voiceStatus]\">{{\n              vm.agents[value].voiceStatus | uppercase }}</span>\n            <span ng-if=\"vm.agents[value].onhold\" class=\"text-boxed md-background-bg bl bt padding-5 orange-400-bg\">ONHOLD</span>\n          </div>\n        </td>\n        <td class=\"bt bl\">\n          <div layout=\"column\">\n            <span ng-if=\"vm.agents[value].queue\" class=\"padding-5\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].voiceStatus]\">{{\n              vm.agents[value].queue }}</span>\n            <span ng-if=\"vm.agents[value].destconnectedlinenum\" class=\"padding-5\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].voiceStatus]\" privacy ng-cloak>{{\n              vm.agents[value].destconnectedlinenum }}</span>\n            <span ng-if=\"vm.agents[value].routealias\" class=\"padding-5\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].voiceStatus]\">{{\n              vm.agents[value].routealias }}</span>\n            <span class=\"padding-5\" ng-if=\"vm.agents[value].queue || vm.agents[value].destconnectedlinenum\">\n              <timer start-time=\"vm.agents[value].voiceStatusTime\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].voiceStatus]\">\n              </timer>\n            </span>\n          </div>\n        </td>\n        <td class=\"bt bl\" ng-if=\"vm.license.chat\">\n          <div layout=\"row\">\n            <div layout=\"column\" layout-align=\"center center\">\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'}[vm.agents[value].chatStatus]\">{{\n                vm.agents[value].chatStatus | uppercase }}</span>\n            </div>\n          </div>\n        </td>\n        <td md-number class=\"bt text-center font-size-20\" ng-if=\"vm.license.chat\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].chatStatus]\">\n          {{ vm.agents[value].chatCurrentCapacity }}</td>\n        <td class=\"bl bt\" ng-if=\"vm.license.mail\">\n          <div layout=\"row\">\n            <div layout=\"column\" layout-align=\"center center\">\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'}[vm.agents[value].mailStatus]\">{{\n                vm.agents[value].mailStatus | uppercase }}</span>\n            </div>\n          </div>\n        </td>\n        <td class=\"bt padding-5 text-center font-size-20\" ng-if=\"vm.license.mail\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].mailStatus]\">\n          {{ vm.agents[value].mailCurrentCapacity }}</td>\n        <td class=\"bl bt\" ng-if=\"vm.license.messaging\">\n          <div layout=\"row\">\n            <div layout=\"column\" layout-align=\"center center\">\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'}[vm.agents[value].smsStatus]\">{{\n                vm.agents[value].smsStatus | uppercase }}</span>\n            </div>\n          </div>\n        </td>\n        <td class=\"bt padding-5 text-center font-size-20\" ng-if=\"vm.license.messaging\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].smsStatus]\">\n          {{ vm.agents[value].smsCurrentCapacity }}</td>\n        <td class=\"bt bl\" ng-if=\"vm.license.openchannel\">\n          <div layout=\"row\">\n            <div layout=\"column\" layout-align=\"center center\">\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'}[vm.agents[value].openchannelStatus]\">{{\n                vm.agents[value].openchannelStatus | uppercase }}</span>\n            </div>\n          </div>\n        </td>\n        <td class=\"bt padding-5 text-center font-size-20\" ng-if=\"vm.license.openchannel\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].openchannelStatus]\">\n          {{ vm.agents[value].openchannelCurrentCapacity }}</td>\n        <td class=\"bt bl\" ng-if=\"vm.license.fax\">\n          <div layout=\"row\">\n            <div layout=\"column\" layout-align=\"center center\">\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'}[vm.agents[value].faxStatus]\">{{\n                vm.agents[value].faxStatus | uppercase }}</span>\n            </div>\n          </div>\n        </td>\n        <td class=\"bt padding-5 text-center font-size-20\" ng-if=\"vm.license.fax\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].faxStatus]\">\n          {{ vm.agents[value].faxCurrentCapacity }}</td>\n        <td class=\"bl bt\" ng-if=\"vm.license.whatsapp\">\n          <div layout=\"row\">\n            <div layout=\"column\" layout-align=\"center center\">\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'}[vm.agents[value].whatsappStatus]\">{{\n                vm.agents[value].whatsappStatus | uppercase }}</span>\n            </div>\n          </div>\n        </td>\n        <td class=\"bt padding-5 text-center font-size-20\" ng-if=\"vm.license.whatsapp\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].whatsappStatus]\">\n          {{ vm.agents[value].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(vm.agents[value], $event)\" translate=\"VOICE.LOGOUT\">\n                  Logout\n                </md-button>\n              </md-menu-item>\n              <md-menu-item>\n                <md-button ng-click=\"vm.queueAdd(vm.agents[value], $event)\" translate=\"VOICE.AGENTADD_QUEUE\">\n                  Add Agent In Queue\n                </md-button>\n              </md-menu-item>\n              <md-menu-item ng-if=\"vm.license.screenrecording && vm.agents[value].phoneBarEnableScreenRecordingByAgent\">\n                <md-menu>\n                  <md-button ng-click=\"$mdMenu.open()\" class=\"text-capitalize\" translate=\"VOICE.SCREENRECORDING\">Screen Recording\n                  </md-button>\n                  <md-menu-content>\n                    <md-menu-item ng-if=\"!vm.agents[value].screenrecording\">\n                      <md-button ng-click=\"vm.screenRecording(vm.agents[value], true)\"><em translate=\"VOICE.START_SCREENRECORDING\">Start\n                          Screen Recording</em></md-button>\n                    </md-menu-item>\n                    <md-menu-item ng-if=\"vm.agents[value].screenrecording\">\n                      <md-button ng-click=\"vm.screenRecording(vm.agents[value], false)\"><em translate=\"VOICE.STOP_SCREENRECORDING\">Stop\n                          Screen Recording</em></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=\" vm.agents[value].voicePause && 'DEFAULT PAUSE' === vm.agents[value].pauseType\" ng-click=\"vm.pause(vm.agents[value])\"><em translate=\"VOICE.DEFAULT_PAUSE\">Default\n                          Pause</em></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=\"vm.agents[value].voicePause && pause.name === vm.agents[value].pauseType\" ng-click=\"vm.pause(vm.agents[value], 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=\"vm.isPause(vm.agents[value].globalStatus)\">\n                <md-button ng-click=\"vm.unPause(vm.agents[value])\" 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\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.filteredAgents.length}}\" md-on-paginate=\"vm.onInit\" md-page-select></md-table-pagination>\n\x3c!-- / AGENT TABLE --\x3e\n\x3c!-- / MAIN --\x3e"),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="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 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>{{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            {{ \'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.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 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 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="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 animate-slide-down 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" ms-scroll>\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 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="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/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 animate-slide-down 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" ms-scroll>\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 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 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="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 animate-slide-down 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" ms-scroll>\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 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="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" 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" 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" 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" 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 animate-slide-down 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" ms-scroll>\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 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 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 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 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/agents/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="WHATSAPP.AGENTS">Agents</span>\n    <div flex></div>\n    <ms-search-bar on-search="vm.onInit()" query="vm.query" on-collapse="vm.query.filter = undefined; vm.onInit()" debounce="300"></ms-search-bar>\n    <md-select ng-model="vm.query.globalStatusFilter" class="md-caption" ng-change="vm.query.pauseTypeFilter = \'\'; vm.onInit()">\n      <md-option ng-value="\'\'">{{ \'WHATSAPP.ALL\' | translate }}</md-option>\n      <md-option value="pause">{{ \'WHATSAPP.PAUSE\' | translate }}</md-option>\n      <md-option value="*pause">{{ \'WHATSAPP.PARTIALPAUSE\' | translate }}</md-option>\n      <md-option value="busy">{{ \'WHATSAPP.BUSY\' | translate }}</md-option>\n      <md-option value="idle">{{ \'WHATSAPP.IDLE\' | translate }}</md-option>\n    </md-select>\n    <md-select ng-if="vm.isPause(vm.query.globalStatusFilter)" ng-model="vm.query.pauseTypeFilter" class="md-caption" ng-change="vm.onInit()">\n      <md-option ng-value="\'\'">All</md-option>\n      <md-option value="DEFAULT PAUSE">DEFAULT PAUSE</md-option>\n      <md-option value="ACW">ACW</md-option>\n      <md-option value="LOGININPAUSE">LOGININPAUSE</md-option>\n      <md-option value="Auto-Pause">AUTOPAUSE</md-option>\n      <md-option ng-value="pause.name" ng-repeat="pause in vm.pauses.rows">{{pause.name}}</md-option>\n    </md-select>\n  </div>\n</md-toolbar>\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.order" md-on-reorder="vm.onInit">\n      <tr md-row border="1">\n        <th class="bv text-center" colspan="5">{{ \'WHATSAPP.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          {{ \'WHATSAPP.NAME\' | translate }}</th>\n        <th class="bl custom-column" md-column md-order-by="globalStatus">\n          {{ \'WHATSAPP.STATUS\' | translate }}</th>\n        <th class="bl custom-column" md-column md-order-by="lastLoginAt">\n          {{ \'WHATSAPP.LOGIN_TIME\' | translate }}</th>\n        <th class="bl custom-column" md-column md-order-by="lastPauseAt">\n          {{ \'WHATSAPP.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.order.length">\n        <td md-cell colspan="19">\n          <div layout="row" layout-align="center center">\n            <span>{{ \'WHATSAPP.NO_AGENT_ONLINE\' | translate }}</span>\n          </div>\n        </td>\n      </tr>\n      <tr md-select="vm.agents[value]" md-select-id="id" ng-repeat="(id, value) in vm.order">\n        <td class="bt padding-5">\n          <div layout="row" layout-align="start center">\n            <img class="avatar" ng-src="{{vm.agents[value].userpic && \'api/users/\'+vm.agents[value].id+\'/avatar\' || \'assets/images/avatars/profile.png\'}}">\n            <div layout="column">\n              <span>{{vm.agents[value].fullname}}</span>\n              <span>{{vm.agents[value].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 && (vm.agents[value].phoneBarEnableScreenRecordingByAgent || vm.agents[value].phoneBarEnableAutomaticScreenRecording)">\n            <div class="column" ng-if="vm.agents[value].screenrecording">\n              <span>\n                <md-icon md-font-icon="icon-camcorder-box" style="color: green; font-size: 36px;" aria-label="icon-camcorder-box26">\n                  <md-tooltip>\n                    {{ \'WHATSAPP.TOOLTIP_SCREENRECORDING_ON\' | translate }}\n                  </md-tooltip>\n                </md-icon>\n              </span>\n            </div>\n            <div class="column" ng-if="!vm.agents[value].screenrecording">\n              <span>\n                <md-icon md-font-icon="icon-camcorder-box" style="color: gray" aria-label="icon-camcorder-box26">\n                  <md-tooltip>\n                    {{ \'WHATSAPP.TOOLTIP_SCREENRECORDING_OFF\' | translate }}\n                  </md-tooltip>\n                </md-icon>\n              </span>\n            </div>\n          </div>\n        </td>\n        <td class="bt">\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'}[vm.agents[value].globalStatus]\">{{\n            vm.isPause(vm.agents[value].globalStatus) ? '' : vm.agents[value].globalStatus | uppercase }}\n            {{ vm.isPause(vm.agents[value].globalStatus) ? (vm.isPartialPause(vm.agents[value].globalStatus) ?\n            '*'+vm.agents[value].pauseType || 'DEFAULT PAUSE' : vm.agents[value].pauseType || 'DEFAULT PAUSE') :\n            ''}}</span>\n        </td>\n        <td class=\"bt custom-column\">\n          <timer start-time=\"vm.agents[value].lastLoginAt\"></timer>\n        </td>\n        <td class=\"bt custom-column\">\n          <timer ng-if=\"vm.isPause(vm.agents[value].globalStatus) || vm.isPartialPause(vm.agents[value].globalStatus)\" start-time=\"vm.agents[value].lastPauseAt\"></timer>\n        </td>\n        <td class=\"bt bl\">\n          <div layout=\"row\">\n            <span ng-if=\"!vm.agents[value].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'}[vm.agents[value].voiceStatus]\">{{\n              vm.agents[value].voiceStatus | uppercase }}</span>\n            <span ng-if=\"vm.agents[value].onhold\" class=\"text-boxed md-background-bg bl bt padding-5 orange-400-bg\">ONHOLD</span>\n          </div>\n        </td>\n        <td class=\"bt bl\">\n          <div layout=\"column\">\n            <span ng-if=\"vm.agents[value].queue\" class=\"padding-5\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].voiceStatus]\">{{\n              vm.agents[value].queue }}</span>\n            <span ng-if=\"vm.agents[value].destconnectedlinenum\" class=\"padding-5\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].voiceStatus]\" privacy ng-cloak>{{\n              vm.agents[value].destconnectedlinenum }}</span>\n            <span ng-if=\"vm.agents[value].routealias\" class=\"padding-5\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].voiceStatus]\">{{\n              vm.agents[value].routealias }}</span>\n            <span class=\"padding-5\" ng-if=\"vm.agents[value].queue || vm.agents[value].destconnectedlinenum\">\n              <timer start-time=\"vm.agents[value].voiceStatusTime\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].voiceStatus]\">\n              </timer>\n            </span>\n          </div>\n        </td>\n        <td class=\"bt bl\" ng-if=\"vm.license.chat\">\n          <div layout=\"row\">\n            <div layout=\"column\" layout-align=\"center center\">\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'}[vm.agents[value].chatStatus]\">{{\n                vm.agents[value].chatStatus | uppercase }}</span>\n            </div>\n          </div>\n        </td>\n        <td md-number class=\"bt text-center font-size-20\" ng-if=\"vm.license.chat\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].chatStatus]\">\n          {{ vm.agents[value].chatCurrentCapacity }}</td>\n        <td class=\"bl bt\" ng-if=\"vm.license.mail\">\n          <div layout=\"row\">\n            <div layout=\"column\" layout-align=\"center center\">\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'}[vm.agents[value].mailStatus]\">{{\n                vm.agents[value].mailStatus | uppercase }}</span>\n            </div>\n          </div>\n        </td>\n        <td class=\"bt padding-5 text-center font-size-20\" ng-if=\"vm.license.mail\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].mailStatus]\">\n          {{ vm.agents[value].mailCurrentCapacity }}</td>\n        <td class=\"bl bt\" ng-if=\"vm.license.messaging\">\n          <div layout=\"row\">\n            <div layout=\"column\" layout-align=\"center center\">\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'}[vm.agents[value].smsStatus]\">{{\n                vm.agents[value].smsStatus | uppercase }}</span>\n            </div>\n          </div>\n        </td>\n        <td class=\"bt padding-5 text-center font-size-20\" ng-if=\"vm.license.messaging\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].smsStatus]\">\n          {{ vm.agents[value].smsCurrentCapacity }}</td>\n        <td class=\"bt bl\" ng-if=\"vm.license.openchannel\">\n          <div layout=\"row\">\n            <div layout=\"column\" layout-align=\"center center\">\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'}[vm.agents[value].openchannelStatus]\">{{\n                vm.agents[value].openchannelStatus | uppercase }}</span>\n            </div>\n          </div>\n        </td>\n        <td class=\"bt padding-5 text-center font-size-20\" ng-if=\"vm.license.openchannel\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].openchannelStatus]\">\n          {{ vm.agents[value].openchannelCurrentCapacity }}</td>\n        <td class=\"bt bl\" ng-if=\"vm.license.fax\">\n          <div layout=\"row\">\n            <div layout=\"column\" layout-align=\"center center\">\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'}[vm.agents[value].faxStatus]\">{{\n                vm.agents[value].faxStatus | uppercase }}</span>\n            </div>\n          </div>\n        </td>\n        <td class=\"bt padding-5 text-center font-size-20\" ng-if=\"vm.license.fax\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].faxStatus]\">\n          {{ vm.agents[value].faxCurrentCapacity }}</td>\n        <td class=\"bl bt\" ng-if=\"vm.license.whatsapp\">\n          <div layout=\"row\">\n            <div layout=\"column\" layout-align=\"center center\">\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'}[vm.agents[value].whatsappStatus]\">{{\n                vm.agents[value].whatsappStatus | uppercase }}</span>\n            </div>\n          </div>\n        </td>\n        <td class=\"bt padding-5 text-center font-size-20\" ng-if=\"vm.license.whatsapp\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].whatsappStatus]\">\n          {{ vm.agents[value].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(vm.agents[value], $event)\" translate=\"WHATSAPP.LOGOUT\">\n                  Logout\n                </md-button>\n              </md-menu-item>\n              <md-menu-item>\n                <md-button ng-click=\"vm.queueAdd(vm.agents[value], $event)\" translate=\"WHATSAPP.AGENTADD_QUEUE\">\n                  Add Agent In Queue\n                </md-button>\n              </md-menu-item>\n              <md-menu-item ng-if=\"vm.license.screenrecording && vm.agents[value].phoneBarEnableScreenRecordingByAgent\">\n                <md-menu>\n                  <md-button ng-click=\"$mdMenu.open()\" class=\"text-capitalize\" translate=\"WHATSAPP.SCREENRECORDING\">Screen Recording\n                  </md-button>\n                  <md-menu-content>\n                    <md-menu-item ng-if=\"!vm.agents[value].screenrecording\">\n                      <md-button ng-click=\"vm.screenRecording(vm.agents[value], true)\"><em translate=\"WHATSAPP.START_SCREENRECORDING\">Start\n                          Screen Recording</em></md-button>\n                    </md-menu-item>\n                    <md-menu-item ng-if=\"vm.agents[value].screenrecording\">\n                      <md-button ng-click=\"vm.screenRecording(vm.agents[value], false)\"><em translate=\"WHATSAPP.STOP_SCREENRECORDING\">Stop\n                          Screen Recording</em></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=\"WHATSAPP.PAUSE\">Pause</md-button>\n                  <md-menu-content>\n                    <md-menu-item>\n                      <md-button ng-disabled=\" vm.agents[value].voicePause && 'DEFAULT PAUSE' === vm.agents[value].pauseType\" ng-click=\"vm.pause(vm.agents[value])\"><em translate=\"WHATSAPP.DEFAULT_PAUSE\">Default\n                          Pause</em></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=\"vm.agents[value].voicePause && pause.name === vm.agents[value].pauseType\" ng-click=\"vm.pause(vm.agents[value], 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=\"vm.isPause(vm.agents[value].globalStatus)\">\n                <md-button ng-click=\"vm.unPause(vm.agents[value])\" translate=\"WHATSAPP.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\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.filteredAgents.length}}\" md-on-paginate=\"vm.onInit\" md-page-select></md-table-pagination>\n\x3c!-- / AGENT TABLE --\x3e\n\x3c!-- / MAIN --\x3e"),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 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="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-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\'" 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\'" 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      <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\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 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="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 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="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 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="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 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="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 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="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 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="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 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="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 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="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 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\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 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="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 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="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 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="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 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="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\'" 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\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              <md-input-container ng-if="vm.whatsappAccount.type == \'twilio\'" 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              <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\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                <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 ng-if="vm.whatsappAccount.type == \'twillo\'" class="md-block">\n                <label translate="WHATSAPP.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.whatsappAccount.remote + \'/api/whatsapp/accounts/\' + vm.whatsappAccount.id + \'/status?token=\' + vm.whatsappAccount.token + (vm.whatsappAccount.type == \'csc\' ? \'&message-id={message-id}&state={state}\' : \'\')" ng-readonly="true">\n                </div>\n                <div class="hint"><span translate="WHATSAPP.HELP.DELIVERYREPORTURL"></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" ms-scroll 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" ms-scroll 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" style="width:200px">{{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 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="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 animate-slide-down 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" ms-scroll>\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 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="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 animate-slide-down 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" ms-scroll>\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-scroll="vm.msScrollOptions"></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-scroll="vm.msScrollOptions"></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" ms-scroll 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" ms-scroll 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" ms-scroll 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 animate-slide-left" ng-hide="vm_ct.user">\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" placeholder="Search by fullname.." 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">All</md-option>\n        <md-option ng-value="true">\n          <md-icon md-font-icon="icon-checkbox-blank-circle" class="s12 green-fg"></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"></md-icon>Offline\n        </md-option>\n      </md-select>\n    </div>\n  </md-subheader>\n  \x3c!-- <select ng-model="vm_ct.filterOnline" class="height-50 no-padding no-margin">\n            <option ng-value="undefined">All</option>\n            <option ng-value="true"><md-icon md-font-icon="icon-checkbox-blank-circle" class="s12 green-fg"></md-icon>Online</option>\n            <option ng-value="false"><md-icon md-font-icon="icon-checkbox-blank-circle" class="s12 red-fg"></md-icon>Offline</option>\n        </select> --\x3e\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.toggleChat(user)">\n      <md-divider></md-divider>\n      <img ng-src="{{user.userpic ? \'api/users/\' + user.id + \'/avatar\' : \'assets/images/avatars/profile.png\'}}" 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.unreadMessage[user.id]" class="md-accent-bg unread-message-count">\n        {{vm_ct.unreadMessage[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"></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.read && user.lastMessage.FromId === vm_ct.currentUser.id" class="s16 no-margin" md-font-icon="icon-check"></md-icon>\n          <md-icon ng-if="user.lastMessage.read && user.lastMessage.FromId === vm_ct.currentUser.id" class="s16 no-margin" md-font-icon="icon-check-all md-accent"></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      </div>\n    </md-list-item>\n  </md-list>\n</div>\n\n<div class="chat animate-slide-right" ng-show="vm_ct.user" 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.toggleChat()" 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 layout="row" ng-repeat="message in vm_ct.user.messages.rows" class="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\' : \'assets/images/avatars/profile.png\'}}" class="avatar" alt="{{vm_ct.user.fullname}}" />\n      <img ng-if="message.FromId === vm_ct.currentUser.id" class="avatar" ng-src="{{vm_ct.currentUser.userpic ? \'api/users/\' + vm_ct.currentUser.id + \'/avatar\' : \'assets/images/avatars/profile.png\'}}">\n      <div class="bubble" 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.read && message.FromId === vm_ct.currentUser.id" class="s16 margin-5" md-font-icon="icon-check"></md-icon>\n          <md-icon ng-if="message.read && message.FromId === vm_ct.currentUser.id" class="s16 margin-5" md-font-icon="icon-check-all md-accent"></md-icon>\n        </div>\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\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 ms-scroll>\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 animate-slide-left" 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 animate-slide-right" 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 ms-scroll 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 ms-scroll>\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()" ms-scroll>\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/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 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="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" 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.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 translate="{{lang.translation}}">{{lang.title}}</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">Preview</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon 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 layout="row" ng-if="vm.preview">\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" privacy=\'vm.currentUser.privacyEnabled && (key === "firstName" || key === "lastName" || key === "phone" || key === "mobile" || key === "email" || key === "fax") \' ng-cloak>\n          </md-input-container>\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 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-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-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 68%
rename from public/styles/app.59371f48.css
rename to public/styles/app.0b303223.css
index 291a0c2..9363192 100644 (file)
@@ -1 +1 @@
-[data-ng-click],[ng-click],[x-ng-click]{cursor:pointer}.ms-container{width:100%!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}@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}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}}*{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:absolute;top:0;right:0;bottom:0;left:0}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{height:100%;max-height:100%}#layout-vertical-navigation #content-container{position:relative;overflow:hidden}#layout-vertical-navigation #content-container #content{position:absolute;top:64px;right:0;bottom:0;left:0}#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{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>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>md-tab-content{padding:24px}.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}}.animate-slide-up{-webkit-backface-visibility:hidden;-webkit-perspective:1000px;transition-property:none;transition-duration:.4s;transition-timing-function:cubic-bezier(.25,.46,.45,.94);opacity:1}.animate-slide-up.ng-enter{transform:translateY(100%);opacity:0}.animate-slide-up.ng-enter.ng-enter-active{transition-property:all;transform:translateY(0);opacity:1}.animate-slide-up.ng-leave{transform:translateY(0);opacity:1}.animate-slide-up.ng-leave.ng-leave-active{transition-property:all;transform:translateY(-100%);opacity:0}.animate-slide-up.ng-hide{transform:translateY(-100%);opacity:0}.animate-slide-up.ng-hide-add-active,.animate-slide-up.ng-hide-remove-active{transition-property:all}.animate-slide-down{-webkit-backface-visibility:hidden;-webkit-perspective:1000px;transition-property:none;transition-duration:.4s;transition-timing-function:cubic-bezier(.25,.46,.45,.94);opacity:1}.animate-slide-down.ng-enter{transform:translateY(-100%);opacity:0}.animate-slide-down.ng-enter.ng-enter-active{transition-property:all;transform:translateY(0);opacity:1}.animate-slide-down.ng-leave{transform:translateY(0);opacity:1}.animate-slide-down.ng-leave.ng-leave-active{transition-property:all;transform:translateY(100%);opacity:0}.animate-slide-down.ng-hide{transform:translateY(-100%);opacity:0}.animate-slide-down.ng-hide-add-active,.animate-slide-down.ng-hide-remove-active{transition-property:all}.animate-slide-left{-webkit-backface-visibility:hidden;-webkit-perspective:1000px;transition-property:none;transition-duration:.4s;transition-timing-function:cubic-bezier(.25,.46,.45,.94);opacity:1}.animate-slide-left.ng-enter{transform:translateX(100%);opacity:0}.animate-slide-left.ng-enter.ng-enter-active{transition-property:all;transform:translateX(0);opacity:1}.animate-slide-left.ng-leave{transform:translateX(0);opacity:1}.animate-slide-left.ng-leave.ng-leave-active{transition-property:all;transform:translateX(-100%);opacity:0}.animate-slide-left.ng-hide{transform:translateX(-100%);opacity:0}.animate-slide-left.ng-hide-add-active,.animate-slide-left.ng-hide-remove-active{transition-property:all}.animate-slide-right{-webkit-backface-visibility:hidden;-webkit-perspective:1000px;transition-property:none;transition-duration:.4s;transition-timing-function:cubic-bezier(.25,.46,.45,.94);opacity:1}.animate-slide-right.ng-enter{transform:translateX(-100%);opacity:0}.animate-slide-right.ng-enter.ng-enter-active{transition-property:all;transform:translateX(0);opacity:1}.animate-slide-right.ng-leave{transform:translateX(0);opacity:1}.animate-slide-right.ng-leave.ng-leave-active{transition-property:all;transform:translateX(100%);opacity:0}.animate-slide-right.ng-hide{transform:translateX(100%);opacity:0}.animate-slide-right.ng-hide-add-active,.animate-slide-right.ng-hide-remove-active{transition-property:all}.animate-fade-in-out{-webkit-backface-visibility:hidden;-webkit-perspective:1000px;transition-property:none;transition-duration:.4s;transition-timing-function:cubic-bezier(.25,.46,.45,.94);opacity:1}.animate-fade-in-out.ng-enter{opacity:0}.animate-fade-in-out.ng-enter.ng-enter-active{transition-property:all;opacity:1}.animate-fade-in-out.ng-leave{opacity:1}.animate-fade-in-out.ng-leave.ng-leave-active{transition-property:all;opacity:0}.animate-fade-in-out.ng-hide{opacity:0}.animate-fade-in-out.ng-hide-add-active,.animate-fade-in-out.ng-hide-remove-active{transition-property:all}@keyframes slide-in-left{0%{opacity:0;transform:translateX(-500px)}65%{opacity:1;transform:translateX(0)}100%{transform:translateX(0)}}@keyframes slide-in-right{0%{opacity:0;transform:translateX(500px)}65%{opacity:1;transform:translateX(0)}100%{transform:translateX(0)}}@keyframes slide-in-bottom{0%{opacity:0;transform:translateY(200px)}65%{opacity:1;transform:translateY(0)}100%{transform:translateY(0)}}.animate-rotate{animation:rotate 1.75s linear infinite}@keyframes rotate{0%{transform:rotate(0)}100%{transform:rotate(360deg)}}.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}.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}.ps-container:hover .ps-in-scrolling{pointer-events:auto}.ps-container .ps-in-scrolling{pointer-events:auto}.ps-container>.ps-scrollbar-x-rail{background:0 0!important;margin:4px 0;height:4px;z-index:49}.ps-container>.ps-scrollbar-x-rail>.ps-scrollbar-x{height:4px}.ps-container>.ps-scrollbar-y-rail{background:0 0!important;margin:4px 0;width:4px;z-index:49}.ps-container>.ps-scrollbar-y-rail>.ps-scrollbar-y{width:4px}.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-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-scroll{overflow:hidden!important}.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.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 (max-width:1920px){#chat-chatWebsite .actionAppData{width:800px!important}}@media screen and (min-width:1281px) and (max-width:1536px){#chat-chatWebsite .actionAppData{width:450px!important}}@media screen and (max-width:1280px){#chat-chatWebsite .actionAppData{width:350px!important}}@media screen and (max-width:960px){#chat-chatWebsite .actionAppData{width:250px!important}}#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}#agent-general{position:fixed;width:100%;height:100%}#agent-general .agent-content{position:fixed;top:36px;bottom:0;left:0;right:0}#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}#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{visibility:hidden;width:500px;position:fixed;white-space:pre-line;left:28%;z-index:9999}#agent-general .tooltip-preview:hover .tooltip-preview-text{visibility:visible}#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:200px}#agent-general md-card.call-info-card div.reload-container{position:relative}#agent-general md-card.call-info-card button.reload-button{position:absolute;right:-16px}@media screen and (max-width:1280px){#agent-general span.contact-text{width:100px!important}#agent-general span.subject-text{width:350px!important}}@media screen and (max-width:1920px){#agent-general span.contact-text{width:150px!important}#agent-general span.subject-text{width:500px!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 (max-width:1920px){#fax-faxAccount .actionAppData{width:800px!important}}@media screen and (min-width:1281px) and (max-width:1536px){#fax-faxAccount .actionAppData{width:450px!important}}@media screen and (max-width:1280px){#fax-faxAccount .actionAppData{width:350px!important}}@media screen and (max-width:960px){#fax-faxAccount .actionAppData{width:250px!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>.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 (max-width:1920px){#mail-mailAccount .actionAppData{width:800px!important}}@media screen and (min-width:1281px) and (max-width:1536px){#mail-mailAccount .actionAppData{width:450px!important}}@media screen and (max-width:1280px){#mail-mailAccount .actionAppData{width:350px!important}}@media screen and (max-width:960px){#mail-mailAccount .actionAppData{width:250px!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>.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>.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 (max-width:1920px){#openchannel-openchannelAccount .actionAppData{width:800px!important}}@media screen and (min-width:1281px) and (max-width:1536px){#openchannel-openchannelAccount .actionAppData{width:450px!important}}@media screen and (max-width:1280px){#openchannel-openchannelAccount .actionAppData{width:350px!important}}@media screen and (max-width:960px){#openchannel-openchannelAccount .actionAppData{width:250px!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>.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}md-dialog.smtp-dialog{max-width:720px;width:720px}md-dialog.smtp-dialog md-dialog-content{display:block;position:relative}md-dialog.smtp-dialog md-toolbar .title{font-size:17px}md-dialog.smtp-dialog md-input-container textarea{min-height:150px}md-dialog.smtp-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.smtp-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.smtp-dialog .date-container{padding:16px 0 24px 0}md-dialog.smtp-dialog .error-list{font-size:13px}md-dialog.smtp-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.smtp-dialog .error-list .error .message{font-weight:500}md-dialog.smtp-dialog .error-list .error .md-button{margin:0}md-dialog.smtp-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.smtp-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#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>.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 (max-width:1920px){#sms-smsAccount .actionAppData{width:800px!important}}@media screen and (min-width:1281px) and (max-width:1536px){#sms-smsAccount .actionAppData{width:450px!important}}@media screen and (max-width:1280px){#sms-smsAccount .actionAppData{width:350px!important}}@media screen and (max-width:960px){#sms-smsAccount .actionAppData{width:250px!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%}}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 (max-width:1920px){#voice-inbound-route .actionAppData{width:800px!important}}@media screen and (min-width:1281px) and (max-width:1536px){#voice-inbound-route .actionAppData{width:450px!important}}@media screen and (max-width:1280px){#voice-inbound-route .actionAppData{width:350px!important}}@media screen and (max-width:960px){#voice-inbound-route .actionAppData{width:250px!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 (max-width:1920px){#voice-internal-route .actionAppData{width:800px!important}}@media screen and (min-width:1281px) and (max-width:1536px){#voice-internal-route .actionAppData{width:450px!important}}@media screen and (max-width:1280px){#voice-internal-route .actionAppData{width:350px!important}}@media screen and (max-width:960px){#voice-internal-route .actionAppData{width:250px!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 (max-width:1920px){#voice-outbound-route .actionAppData{width:800px!important}}@media screen and (min-width:1281px) and (max-width:1536px){#voice-outbound-route .actionAppData{width:450px!important}}@media screen and (max-width:1280px){#voice-outbound-route .actionAppData{width:350px!important}}@media screen and (max-width:960px){#voice-outbound-route .actionAppData{width:250px!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>.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.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>.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 (max-width:1920px){#whatsapp-whatsappAccount .actionAppData{width:800px!important}}@media screen and (min-width:1281px) and (max-width:1536px){#whatsapp-whatsappAccount .actionAppData{width:450px!important}}@media screen and (max-width:1280px){#whatsapp-whatsappAccount .actionAppData{width:350px!important}}@media screen and (max-width:960px){#whatsapp-whatsappAccount .actionAppData{width:250px!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}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-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{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}.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}@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}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}}*{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:absolute;top:0;right:0;bottom:0;left:0}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{height:100%;max-height:100%}#layout-vertical-navigation #content-container{position:relative;overflow:hidden}#layout-vertical-navigation #content-container #content{position:absolute;top:64px;right:0;bottom:0;left:0}#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{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>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>md-tab-content{padding:24px}.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}}.animate-slide-up{-webkit-backface-visibility:hidden;-webkit-perspective:1000px;transition-property:none;transition-duration:.4s;transition-timing-function:cubic-bezier(.25,.46,.45,.94);opacity:1}.animate-slide-up.ng-enter{transform:translateY(100%);opacity:0}.animate-slide-up.ng-enter.ng-enter-active{transition-property:all;transform:translateY(0);opacity:1}.animate-slide-up.ng-leave{transform:translateY(0);opacity:1}.animate-slide-up.ng-leave.ng-leave-active{transition-property:all;transform:translateY(-100%);opacity:0}.animate-slide-up.ng-hide{transform:translateY(-100%);opacity:0}.animate-slide-up.ng-hide-add-active,.animate-slide-up.ng-hide-remove-active{transition-property:all}.animate-slide-down{-webkit-backface-visibility:hidden;-webkit-perspective:1000px;transition-property:none;transition-duration:.4s;transition-timing-function:cubic-bezier(.25,.46,.45,.94);opacity:1}.animate-slide-down.ng-enter{transform:translateY(-100%);opacity:0}.animate-slide-down.ng-enter.ng-enter-active{transition-property:all;transform:translateY(0);opacity:1}.animate-slide-down.ng-leave{transform:translateY(0);opacity:1}.animate-slide-down.ng-leave.ng-leave-active{transition-property:all;transform:translateY(100%);opacity:0}.animate-slide-down.ng-hide{transform:translateY(-100%);opacity:0}.animate-slide-down.ng-hide-add-active,.animate-slide-down.ng-hide-remove-active{transition-property:all}.animate-slide-left{-webkit-backface-visibility:hidden;-webkit-perspective:1000px;transition-property:none;transition-duration:.4s;transition-timing-function:cubic-bezier(.25,.46,.45,.94);opacity:1}.animate-slide-left.ng-enter{transform:translateX(100%);opacity:0}.animate-slide-left.ng-enter.ng-enter-active{transition-property:all;transform:translateX(0);opacity:1}.animate-slide-left.ng-leave{transform:translateX(0);opacity:1}.animate-slide-left.ng-leave.ng-leave-active{transition-property:all;transform:translateX(-100%);opacity:0}.animate-slide-left.ng-hide{transform:translateX(-100%);opacity:0}.animate-slide-left.ng-hide-add-active,.animate-slide-left.ng-hide-remove-active{transition-property:all}.animate-slide-right{-webkit-backface-visibility:hidden;-webkit-perspective:1000px;transition-property:none;transition-duration:.4s;transition-timing-function:cubic-bezier(.25,.46,.45,.94);opacity:1}.animate-slide-right.ng-enter{transform:translateX(-100%);opacity:0}.animate-slide-right.ng-enter.ng-enter-active{transition-property:all;transform:translateX(0);opacity:1}.animate-slide-right.ng-leave{transform:translateX(0);opacity:1}.animate-slide-right.ng-leave.ng-leave-active{transition-property:all;transform:translateX(100%);opacity:0}.animate-slide-right.ng-hide{transform:translateX(100%);opacity:0}.animate-slide-right.ng-hide-add-active,.animate-slide-right.ng-hide-remove-active{transition-property:all}.animate-fade-in-out{-webkit-backface-visibility:hidden;-webkit-perspective:1000px;transition-property:none;transition-duration:.4s;transition-timing-function:cubic-bezier(.25,.46,.45,.94);opacity:1}.animate-fade-in-out.ng-enter{opacity:0}.animate-fade-in-out.ng-enter.ng-enter-active{transition-property:all;opacity:1}.animate-fade-in-out.ng-leave{opacity:1}.animate-fade-in-out.ng-leave.ng-leave-active{transition-property:all;opacity:0}.animate-fade-in-out.ng-hide{opacity:0}.animate-fade-in-out.ng-hide-add-active,.animate-fade-in-out.ng-hide-remove-active{transition-property:all}@keyframes slide-in-left{0%{opacity:0;transform:translateX(-500px)}65%{opacity:1;transform:translateX(0)}100%{transform:translateX(0)}}@keyframes slide-in-right{0%{opacity:0;transform:translateX(500px)}65%{opacity:1;transform:translateX(0)}100%{transform:translateX(0)}}@keyframes slide-in-bottom{0%{opacity:0;transform:translateY(200px)}65%{opacity:1;transform:translateY(0)}100%{transform:translateY(0)}}.animate-rotate{animation:rotate 1.75s linear infinite}@keyframes rotate{0%{transform:rotate(0)}100%{transform:rotate(360deg)}}.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}.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}.ps-container:hover .ps-in-scrolling{pointer-events:auto}.ps-container .ps-in-scrolling{pointer-events:auto}.ps-container>.ps-scrollbar-x-rail{background:0 0!important;margin:4px 0;height:4px;z-index:49}.ps-container>.ps-scrollbar-x-rail>.ps-scrollbar-x{height:4px}.ps-container>.ps-scrollbar-y-rail{background:0 0!important;margin:4px 0;width:4px;z-index:49}.ps-container>.ps-scrollbar-y-rail>.ps-scrollbar-y{width:4px}.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-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-scroll{overflow:hidden!important}.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.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}#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}#agent-general{position:fixed;width:100%;height:100%}#agent-general .agent-content{position:fixed;top:36px;bottom:0;left:0;right:0}#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}#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{visibility:hidden;width:500px;position:absolute;white-space:pre-line;left:100%;z-index:9999}#agent-general .tooltip-preview:hover .tooltip-preview-text{visibility:visible}#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:200px}#agent-general md-card.call-info-card div.reload-container{position:relative}#agent-general md-card.call-info-card button.reload-button{position:absolute;right:-16px}@media screen and (max-width:1280px){#agent-general span.contact-text{width:100px!important}#agent-general span.subject-text{width:350px!important}}@media screen and (max-width:1920px){#agent-general span.contact-text{width:150px!important}#agent-general span.subject-text{width:500px!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}#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>.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}#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>.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>.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}#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>.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}md-dialog.smtp-dialog{max-width:720px;width:720px}md-dialog.smtp-dialog md-dialog-content{display:block;position:relative}md-dialog.smtp-dialog md-toolbar .title{font-size:17px}md-dialog.smtp-dialog md-input-container textarea{min-height:150px}md-dialog.smtp-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.smtp-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.smtp-dialog .date-container{padding:16px 0 24px 0}md-dialog.smtp-dialog .error-list{font-size:13px}md-dialog.smtp-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.smtp-dialog .error-list .error .message{font-weight:500}md-dialog.smtp-dialog .error-list .error .md-button{margin:0}md-dialog.smtp-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.smtp-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#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>.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}#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%}}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}#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}#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}#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>.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.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>.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}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}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-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{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 a5aa257..7285ff2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xfc17=['STRING','contactManager','integration','motionbar','jscripty','browser','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[headers],\x20browser[wsindowHeight]','TEXT','urlForward[body]','sequelize','exports','VIRTUAL','action'];(function(_0x1b8f3c,_0x5896a1){var _0x30411a=function(_0x155b5a){while(--_0x155b5a){_0x1b8f3c['push'](_0x1b8f3c['shift']());}};_0x30411a(++_0x5896a1);}(_0xfc17,0x1b4));var _0x7fc1=function(_0x37aa6a,_0x4168b2){_0x37aa6a=_0x37aa6a-0x0;var _0x4111a9=_0xfc17[_0x37aa6a];return _0x4111a9;};'use strict';var Sequelize=require(_0x7fc1('0x0'));module[_0x7fc1('0x1')]={'name':{'type':Sequelize[_0x7fc1('0x2')],'get':function(_0x3de7bf){return this['getDataValue'](_0x7fc1('0x3'));}},'action':{'type':Sequelize[_0x7fc1('0x4')],'allowNull':![],'validate':{'isIn':{'args':[[_0x7fc1('0x5'),_0x7fc1('0x6'),_0x7fc1('0x7'),_0x7fc1('0x8'),'urlForward',_0x7fc1('0x9'),_0x7fc1('0xa'),_0x7fc1('0xb')]],'msg':_0x7fc1('0xc')}},'comment':_0x7fc1('0xc')},'data1':{'type':Sequelize[_0x7fc1('0x4')](0x1000),'comment':_0x7fc1('0xd')},'data2':{'type':Sequelize['STRING'](0x1000),'comment':_0x7fc1('0xe')},'data3':{'type':Sequelize[_0x7fc1('0x4')](0x1000),'comment':_0x7fc1('0xf')},'data4':{'type':Sequelize['STRING'](0x1000),'comments':_0x7fc1('0x10')},'data5':{'type':Sequelize['STRING'](0x1000),'comments':'urlForward[timeout],\x20browser[windowWidth]'},'data6':{'type':Sequelize[_0x7fc1('0x4')],'comments':_0x7fc1('0x11')},'data7':{'type':Sequelize[_0x7fc1('0x12')],'comments':_0x7fc1('0x13')}};
\ No newline at end of file
+var _0xdbb1=['browser[location(0=NewTab,1=NewWindow,2=MotionTab)],\x20contactManager[autoCreateField]','urlForward[timeout],\x20browser[windowWidth]','urlForward[headers],\x20browser[wsindowHeight]','TEXT','urlForward[body]','sequelize','getDataValue','contactManager','motionbar','jscripty','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)]','STRING','contactManager[searchFields],\x20script[script],\x20integration[ConfigurationId],\x20motionbar[NULL,eventVariables(0=No,1=Yes),WinAppArguments],\x20browser[NULL,eventVariables(0=No,1=Yes)]'];(function(_0x39096d,_0x51f8a0){var _0x13da4f=function(_0x11e6b2){while(--_0x11e6b2){_0x39096d['push'](_0x39096d['shift']());}};_0x13da4f(++_0x51f8a0);}(_0xdbb1,0x105));var _0x1dbb=function(_0x2aa0e7,_0x4e5145){_0x2aa0e7=_0x2aa0e7-0x0;var _0x1472c0=_0xdbb1[_0x2aa0e7];return _0x1472c0;};'use strict';var Sequelize=require(_0x1dbb('0x0'));module['exports']={'name':{'type':Sequelize['VIRTUAL'],'get':function(_0x4b55f7){return this[_0x1dbb('0x1')]('action');}},'action':{'type':Sequelize['STRING'],'allowNull':![],'validate':{'isIn':{'args':[[_0x1dbb('0x2'),'integration',_0x1dbb('0x3'),_0x1dbb('0x4'),'urlForward','browser',_0x1dbb('0x5'),_0x1dbb('0x6')]],'msg':_0x1dbb('0x7')}},'comment':_0x1dbb('0x7')},'data1':{'type':Sequelize['STRING'](0x1000),'comment':_0x1dbb('0x8')},'data2':{'type':Sequelize[_0x1dbb('0x9')](0x1000),'comment':'contactManager[autoCreate(0=No,1=Yes)],\x20urlForward[URL],\x20script[type],\x20integration[AccountId],\x20motionbar[TemplateId,URL,WinAppPath],\x20browser[TemplateId,URL]'},'data3':{'type':Sequelize[_0x1dbb('0x9')](0x1000),'comment':_0x1dbb('0xa')},'data4':{'type':Sequelize[_0x1dbb('0x9')](0x1000),'comments':_0x1dbb('0xb')},'data5':{'type':Sequelize[_0x1dbb('0x9')](0x1000),'comments':_0x1dbb('0xc')},'data6':{'type':Sequelize[_0x1dbb('0x9')],'comments':_0x1dbb('0xd')},'data7':{'type':Sequelize[_0x1dbb('0xe')],'comments':_0x1dbb('0xf')}};
\ No newline at end of file
index 99395f0..db311cd 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7795=['find','params','catch','Action','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','bluebird','mustache','util','sox','to-csv','ejs','lodash','squel','crypto','jsforce','desk.js','querystring','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/utils','../../config/environment','../../config/license/util','status','offset','limit','undefined','count','set','Content-Range','json','apply','reject','save','update','then','destroy','end','sendStatus','error','stack','name','body'];(function(_0x2919f4,_0x52b585){var _0x4aa63e=function(_0x588895){while(--_0x588895){_0x2919f4['push'](_0x2919f4['shift']());}};_0x4aa63e(++_0x52b585);}(_0x7795,0xc8));var _0x5779=function(_0x2009c5,_0x305c06){_0x2009c5=_0x2009c5-0x0;var _0x3f3a32=_0x7795[_0x2009c5];return _0x3f3a32;};'use strict';var emlformat=require(_0x5779('0x0'));var rimraf=require(_0x5779('0x1'));var zipdir=require(_0x5779('0x2'));var jsonpatch=require(_0x5779('0x3'));var rp=require(_0x5779('0x4'));var moment=require('moment');var BPromise=require(_0x5779('0x5'));var Mustache=require(_0x5779('0x6'));var util=require(_0x5779('0x7'));var path=require('path');var sox=require(_0x5779('0x8'));var csv=require(_0x5779('0x9'));var ejs=require(_0x5779('0xa'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x5779('0xb'));var squel=require(_0x5779('0xc'));var crypto=require(_0x5779('0xd'));var jsforce=require(_0x5779('0xe'));var deskjs=require(_0x5779('0xf'));var toCsv=require(_0x5779('0x9'));var querystring=require(_0x5779('0x10'));var Papa=require('papaparse');var Redis=require(_0x5779('0x11'));var authService=require('../../components/auth/service');var qs=require(_0x5779('0x12'));var as=require(_0x5779('0x13'));var hardwareService=require(_0x5779('0x14'));var logger=require('../../config/logger')(_0x5779('0x15'));var utils=require(_0x5779('0x16'));var config=require(_0x5779('0x17'));var licenseUtil=require(_0x5779('0x18'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x467741,_0x11862b){_0x11862b=_0x11862b||0xcc;return function(_0xd6ae36){if(_0xd6ae36){return _0x467741['sendStatus'](_0x11862b);}return _0x467741[_0x5779('0x19')](_0x11862b)['end']();};}function respondWithResult(_0x5936f8,_0x79e4b7){_0x79e4b7=_0x79e4b7||0xc8;return function(_0x300ad3){if(_0x300ad3){return _0x5936f8[_0x5779('0x19')](_0x79e4b7)['json'](_0x300ad3);}};}function respondWithFilteredResult(_0x17bdfc,_0x30ad80){return function(_0x5f488d){if(_0x5f488d){var _0x4f1fe9=typeof _0x30ad80[_0x5779('0x1a')]==='undefined'&&typeof _0x30ad80[_0x5779('0x1b')]===_0x5779('0x1c');var _0x343010=_0x5f488d[_0x5779('0x1d')];var _0x313102=_0x4f1fe9?0x0:_0x30ad80[_0x5779('0x1a')];var _0xcdc451=_0x4f1fe9?_0x5f488d[_0x5779('0x1d')]:_0x30ad80[_0x5779('0x1a')]+_0x30ad80[_0x5779('0x1b')];var _0x420b33;if(_0xcdc451>=_0x343010){_0xcdc451=_0x343010;_0x420b33=0xc8;}else{_0x420b33=0xce;}_0x17bdfc['status'](_0x420b33);return _0x17bdfc[_0x5779('0x1e')](_0x5779('0x1f'),_0x313102+'-'+_0xcdc451+'/'+_0x343010)[_0x5779('0x20')](_0x5f488d);}return null;};}function patchUpdates(_0x1f31b9){return function(_0x3975aa){try{jsonpatch[_0x5779('0x21')](_0x3975aa,_0x1f31b9,!![]);}catch(_0x255c1a){return BPromise[_0x5779('0x22')](_0x255c1a);}return _0x3975aa[_0x5779('0x23')]();};}function saveUpdates(_0x578d79,_0x44bf1a){return function(_0x228ce5){if(_0x228ce5){return _0x228ce5[_0x5779('0x24')](_0x578d79)[_0x5779('0x25')](function(_0x37a330){return _0x37a330;});}return null;};}function removeEntity(_0xf7bd1b,_0x6a4aab){return function(_0x232b10){if(_0x232b10){return _0x232b10[_0x5779('0x26')]()['then'](function(){_0xf7bd1b[_0x5779('0x19')](0xcc)[_0x5779('0x27')]();});}};}function handleEntityNotFound(_0x4dc1,_0x6bc4c8){return function(_0x1bdc90){if(!_0x1bdc90){_0x4dc1[_0x5779('0x28')](0x194);}return _0x1bdc90;};}function handleError(_0x5d0e60,_0x52510c){_0x52510c=_0x52510c||0x1f4;return function(_0x216cab){logger[_0x5779('0x29')](_0x216cab[_0x5779('0x2a')]);if(_0x216cab[_0x5779('0x2b')]){delete _0x216cab[_0x5779('0x2b')];}_0x5d0e60[_0x5779('0x19')](_0x52510c)['send'](_0x216cab);};}exports[_0x5779('0x24')]=function(_0x5af707,_0x1cb1cd){if(_0x5af707[_0x5779('0x2c')]['id']){delete _0x5af707[_0x5779('0x2c')]['id'];}return db['Action'][_0x5779('0x2d')]({'where':{'id':_0x5af707[_0x5779('0x2e')]['id']}})[_0x5779('0x25')](handleEntityNotFound(_0x1cb1cd,null))[_0x5779('0x25')](saveUpdates(_0x5af707['body'],null))[_0x5779('0x25')](respondWithResult(_0x1cb1cd,null))[_0x5779('0x2f')](handleError(_0x1cb1cd,null));};exports[_0x5779('0x26')]=function(_0xedc9b7,_0x56de7d){return db[_0x5779('0x30')]['find']({'where':{'id':_0xedc9b7[_0x5779('0x2e')]['id']}})[_0x5779('0x25')](handleEntityNotFound(_0x56de7d,null))[_0x5779('0x25')](removeEntity(_0x56de7d,null))[_0x5779('0x2f')](handleError(_0x56de7d,null));};
\ No newline at end of file
+var _0x934a=['count','set','Content-Range','apply','reject','save','update','destroy','then','error','name','body','Action','find','params','catch','eml-format','rimraf','zip-dir','moment','bluebird','mustache','util','path','sox','lodash','crypto','jsforce','desk.js','querystring','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','api','../../config/environment','../../config/license/util','status','end','json','offset','limit','undefined'];(function(_0x5f1391,_0x19c132){var _0x50ebe3=function(_0x3d00a3){while(--_0x3d00a3){_0x5f1391['push'](_0x5f1391['shift']());}};_0x50ebe3(++_0x19c132);}(_0x934a,0xb8));var _0xa934=function(_0x237c45,_0x55cf99){_0x237c45=_0x237c45-0x0;var _0x2942f6=_0x934a[_0x237c45];return _0x2942f6;};'use strict';var emlformat=require(_0xa934('0x0'));var rimraf=require(_0xa934('0x1'));var zipdir=require(_0xa934('0x2'));var jsonpatch=require('fast-json-patch');var rp=require('request-promise');var moment=require(_0xa934('0x3'));var BPromise=require(_0xa934('0x4'));var Mustache=require(_0xa934('0x5'));var util=require(_0xa934('0x6'));var path=require(_0xa934('0x7'));var sox=require(_0xa934('0x8'));var csv=require('to-csv');var ejs=require('ejs');var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0xa934('0x9'));var squel=require('squel');var crypto=require(_0xa934('0xa'));var jsforce=require(_0xa934('0xb'));var deskjs=require(_0xa934('0xc'));var toCsv=require('to-csv');var querystring=require(_0xa934('0xd'));var Papa=require('papaparse');var Redis=require('ioredis');var authService=require('../../components/auth/service');var qs=require(_0xa934('0xe'));var as=require(_0xa934('0xf'));var hardwareService=require('../../config/license/hardware');var logger=require(_0xa934('0x10'))(_0xa934('0x11'));var utils=require('../../config/utils');var config=require(_0xa934('0x12'));var licenseUtil=require(_0xa934('0x13'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x328042,_0x19ca58){_0x19ca58=_0x19ca58||0xcc;return function(_0x5e0930){if(_0x5e0930){return _0x328042['sendStatus'](_0x19ca58);}return _0x328042[_0xa934('0x14')](_0x19ca58)[_0xa934('0x15')]();};}function respondWithResult(_0x4b477d,_0x6e8476){_0x6e8476=_0x6e8476||0xc8;return function(_0x4f3ecd){if(_0x4f3ecd){return _0x4b477d[_0xa934('0x14')](_0x6e8476)[_0xa934('0x16')](_0x4f3ecd);}};}function respondWithFilteredResult(_0x1d7202,_0x397027){return function(_0x4eb72b){if(_0x4eb72b){var _0x14a6f6=typeof _0x397027[_0xa934('0x17')]==='undefined'&&typeof _0x397027[_0xa934('0x18')]===_0xa934('0x19');var _0x5e5e29=_0x4eb72b[_0xa934('0x1a')];var _0x5c126e=_0x14a6f6?0x0:_0x397027[_0xa934('0x17')];var _0x1709a2=_0x14a6f6?_0x4eb72b[_0xa934('0x1a')]:_0x397027[_0xa934('0x17')]+_0x397027[_0xa934('0x18')];var _0x42c5ec;if(_0x1709a2>=_0x5e5e29){_0x1709a2=_0x5e5e29;_0x42c5ec=0xc8;}else{_0x42c5ec=0xce;}_0x1d7202[_0xa934('0x14')](_0x42c5ec);return _0x1d7202[_0xa934('0x1b')](_0xa934('0x1c'),_0x5c126e+'-'+_0x1709a2+'/'+_0x5e5e29)[_0xa934('0x16')](_0x4eb72b);}return null;};}function patchUpdates(_0x550260){return function(_0x2962a8){try{jsonpatch[_0xa934('0x1d')](_0x2962a8,_0x550260,!![]);}catch(_0x458422){return BPromise[_0xa934('0x1e')](_0x458422);}return _0x2962a8[_0xa934('0x1f')]();};}function saveUpdates(_0x2bbe42,_0x3a6620){return function(_0x1f7e52){if(_0x1f7e52){return _0x1f7e52[_0xa934('0x20')](_0x2bbe42)['then'](function(_0x14aa1d){return _0x14aa1d;});}return null;};}function removeEntity(_0x53d5a4,_0x347859){return function(_0x4ee27){if(_0x4ee27){return _0x4ee27[_0xa934('0x21')]()[_0xa934('0x22')](function(){_0x53d5a4[_0xa934('0x14')](0xcc)['end']();});}};}function handleEntityNotFound(_0x1ff02a,_0x14927e){return function(_0x276429){if(!_0x276429){_0x1ff02a['sendStatus'](0x194);}return _0x276429;};}function handleError(_0x5098ee,_0x39ff23){_0x39ff23=_0x39ff23||0x1f4;return function(_0x550d08){logger[_0xa934('0x23')](_0x550d08['stack']);if(_0x550d08[_0xa934('0x24')]){delete _0x550d08[_0xa934('0x24')];}_0x5098ee[_0xa934('0x14')](_0x39ff23)['send'](_0x550d08);};}exports[_0xa934('0x20')]=function(_0x607455,_0x1bb89e){if(_0x607455[_0xa934('0x25')]['id']){delete _0x607455[_0xa934('0x25')]['id'];}return db[_0xa934('0x26')][_0xa934('0x27')]({'where':{'id':_0x607455[_0xa934('0x28')]['id']}})[_0xa934('0x22')](handleEntityNotFound(_0x1bb89e,null))[_0xa934('0x22')](saveUpdates(_0x607455[_0xa934('0x25')],null))[_0xa934('0x22')](respondWithResult(_0x1bb89e,null))[_0xa934('0x29')](handleError(_0x1bb89e,null));};exports[_0xa934('0x21')]=function(_0x228fa5,_0x1b0cf6){return db[_0xa934('0x26')][_0xa934('0x27')]({'where':{'id':_0x228fa5[_0xa934('0x28')]['id']}})['then'](handleEntityNotFound(_0x1b0cf6,null))[_0xa934('0x22')](removeEntity(_0x1b0cf6,null))['catch'](handleError(_0x1b0cf6,null));};
\ No newline at end of file
index b2d8194..8161d34 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xff83=['moment','bluebird','request-promise','path','../../config/environment','define','Action','tools_actions','util','../../config/logger'];(function(_0x4565bf,_0x5ad9d6){var _0x5610ba=function(_0x170988){while(--_0x170988){_0x4565bf['push'](_0x4565bf['shift']());}};_0x5610ba(++_0x5ad9d6);}(_0xff83,0xee));var _0x3ff8=function(_0x220dbb,_0x99328d){_0x220dbb=_0x220dbb-0x0;var _0x2b77de=_0xff83[_0x220dbb];return _0x2b77de;};'use strict';var _=require('lodash');var util=require(_0x3ff8('0x0'));var logger=require(_0x3ff8('0x1'))('api');var moment=require(_0x3ff8('0x2'));var BPromise=require(_0x3ff8('0x3'));var rp=require(_0x3ff8('0x4'));var fs=require('fs');var path=require(_0x3ff8('0x5'));var rimraf=require('rimraf');var config=require(_0x3ff8('0x6'));var attributes=require('./action.attributes');module['exports']=function(_0xc011a7,_0x16ec74){return _0xc011a7[_0x3ff8('0x7')](_0x3ff8('0x8'),attributes,{'tableName':_0x3ff8('0x9'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x061a=['../../config/logger','api','request-promise','path','rimraf','../../config/environment','./action.attributes','define','Action','tools_actions','lodash','util'];(function(_0x2659fa,_0x2e3c1f){var _0x1b6031=function(_0x383ef0){while(--_0x383ef0){_0x2659fa['push'](_0x2659fa['shift']());}};_0x1b6031(++_0x2e3c1f);}(_0x061a,0x18a));var _0xa061=function(_0x489085,_0x3a6fc9){_0x489085=_0x489085-0x0;var _0x264899=_0x061a[_0x489085];return _0x264899;};'use strict';var _=require(_0xa061('0x0'));var util=require(_0xa061('0x1'));var logger=require(_0xa061('0x2'))(_0xa061('0x3'));var moment=require('moment');var BPromise=require('bluebird');var rp=require(_0xa061('0x4'));var fs=require('fs');var path=require(_0xa061('0x5'));var rimraf=require(_0xa061('0x6'));var config=require(_0xa061('0x7'));var attributes=require(_0xa061('0x8'));module['exports']=function(_0x1bab14,_0x56aa61){return _0x1bab14[_0xa061('0x9')](_0xa061('0xa'),attributes,{'tableName':_0xa061('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 72504b9..de18216 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7fbe=['request','then','Action,\x20%s,\x20%s','request\x20sent','debug','Action,\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'];(function(_0x48fec7,_0x1f6cdf){var _0x1f3a25=function(_0x267e2f){while(--_0x267e2f){_0x48fec7['push'](_0x48fec7['shift']());}};_0x1f3a25(++_0x1f6cdf);}(_0x7fbe,0x1ec));var _0xe7fb=function(_0x3cac61,_0x62fed0){_0x3cac61=_0x3cac61-0x0;var _0x570b82=_0x7fbe[_0x3cac61];return _0x570b82;};'use strict';var _=require('lodash');var util=require('util');var moment=require(_0xe7fb('0x0'));var BPromise=require(_0xe7fb('0x1'));var rs=require(_0xe7fb('0x2'));var fs=require('fs');var Redis=require(_0xe7fb('0x3'));var db=require(_0xe7fb('0x4'))['db'];var utils=require(_0xe7fb('0x5'));var logger=require(_0xe7fb('0x6'))(_0xe7fb('0x7'));var config=require(_0xe7fb('0x8'));var jayson=require(_0xe7fb('0x9'));var client=jayson[_0xe7fb('0xa')][_0xe7fb('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x24cd67,_0x1f943f,_0x5ad75b){return new BPromise(function(_0x213ebc,_0x228f6b){return client[_0xe7fb('0xc')](_0x24cd67,_0x5ad75b)[_0xe7fb('0xd')](function(_0x4ba197){logger['info'](_0xe7fb('0xe'),_0x1f943f,_0xe7fb('0xf'));logger[_0xe7fb('0x10')](_0xe7fb('0x11'),_0x1f943f,_0xe7fb('0xf'),JSON[_0xe7fb('0x12')](_0x4ba197));if(_0x4ba197[_0xe7fb('0x13')]){if(_0x4ba197[_0xe7fb('0x13')][_0xe7fb('0x14')]===0x1f4){logger[_0xe7fb('0x13')](_0xe7fb('0xe'),_0x1f943f,_0x4ba197[_0xe7fb('0x13')][_0xe7fb('0x15')]);return _0x228f6b(_0x4ba197[_0xe7fb('0x13')][_0xe7fb('0x15')]);}logger['error'](_0xe7fb('0xe'),_0x1f943f,_0x4ba197[_0xe7fb('0x13')]['message']);return _0x213ebc(_0x4ba197[_0xe7fb('0x13')][_0xe7fb('0x15')]);}else{logger['info'](_0xe7fb('0xe'),_0x1f943f,'request\x20sent');_0x213ebc(_0x4ba197[_0xe7fb('0x16')][_0xe7fb('0x15')]);}})[_0xe7fb('0x17')](function(_0x17e8a8){logger['error'](_0xe7fb('0xe'),_0x1f943f,_0x17e8a8);_0x228f6b(_0x17e8a8);});});}
\ No newline at end of file
+var _0x7fbe=['request','then','Action,\x20%s,\x20%s','request\x20sent','debug','Action,\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'];(function(_0x455638,_0x2e725b){var _0x3a4c6c=function(_0x32fc4b){while(--_0x32fc4b){_0x455638['push'](_0x455638['shift']());}};_0x3a4c6c(++_0x2e725b);}(_0x7fbe,0x1ec));var _0xe7fb=function(_0x570b34,_0x537c5c){_0x570b34=_0x570b34-0x0;var _0x325f61=_0x7fbe[_0x570b34];return _0x325f61;};'use strict';var _=require('lodash');var util=require('util');var moment=require(_0xe7fb('0x0'));var BPromise=require(_0xe7fb('0x1'));var rs=require(_0xe7fb('0x2'));var fs=require('fs');var Redis=require(_0xe7fb('0x3'));var db=require(_0xe7fb('0x4'))['db'];var utils=require(_0xe7fb('0x5'));var logger=require(_0xe7fb('0x6'))(_0xe7fb('0x7'));var config=require(_0xe7fb('0x8'));var jayson=require(_0xe7fb('0x9'));var client=jayson[_0xe7fb('0xa')][_0xe7fb('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x24cd67,_0x1f943f,_0x5ad75b){return new BPromise(function(_0x213ebc,_0x228f6b){return client[_0xe7fb('0xc')](_0x24cd67,_0x5ad75b)[_0xe7fb('0xd')](function(_0x4ba197){logger['info'](_0xe7fb('0xe'),_0x1f943f,_0xe7fb('0xf'));logger[_0xe7fb('0x10')](_0xe7fb('0x11'),_0x1f943f,_0xe7fb('0xf'),JSON[_0xe7fb('0x12')](_0x4ba197));if(_0x4ba197[_0xe7fb('0x13')]){if(_0x4ba197[_0xe7fb('0x13')][_0xe7fb('0x14')]===0x1f4){logger[_0xe7fb('0x13')](_0xe7fb('0xe'),_0x1f943f,_0x4ba197[_0xe7fb('0x13')][_0xe7fb('0x15')]);return _0x228f6b(_0x4ba197[_0xe7fb('0x13')][_0xe7fb('0x15')]);}logger['error'](_0xe7fb('0xe'),_0x1f943f,_0x4ba197[_0xe7fb('0x13')]['message']);return _0x213ebc(_0x4ba197[_0xe7fb('0x13')][_0xe7fb('0x15')]);}else{logger['info'](_0xe7fb('0xe'),_0x1f943f,'request\x20sent');_0x213ebc(_0x4ba197[_0xe7fb('0x16')][_0xe7fb('0x15')]);}})[_0xe7fb('0x17')](function(_0x17e8a8){logger['error'](_0xe7fb('0xe'),_0x1f943f,_0x17e8a8);_0x228f6b(_0x17e8a8);});});}
\ No newline at end of file
index 6985d65..c793749 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xcacc=['exports','multer','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','isAuthenticated','update','delete','/:id','destroy'];(function(_0x4d6c7f,_0x4f1231){var _0x12c88e=function(_0x5057b6){while(--_0x5057b6){_0x4d6c7f['push'](_0x4d6c7f['shift']());}};_0x12c88e(++_0x4f1231);}(_0xcacc,0xb5));var _0xccac=function(_0x13ef6c,_0x351ccc){_0x13ef6c=_0x13ef6c-0x0;var _0x1c3deb=_0xcacc[_0x13ef6c];return _0x1c3deb;};'use strict';var multer=require(_0xccac('0x0'));var util=require('util');var path=require(_0xccac('0x1'));var timeout=require(_0xccac('0x2'));var express=require(_0xccac('0x3'));var router=express[_0xccac('0x4')]();var fs_extra=require(_0xccac('0x5'));var auth=require(_0xccac('0x6'));var interaction=require(_0xccac('0x7'));var config=require(_0xccac('0x8'));var controller=require('./action.controller');router['put']('/:id',auth[_0xccac('0x9')](),controller[_0xccac('0xa')]);router[_0xccac('0xb')](_0xccac('0xc'),auth[_0xccac('0x9')](),controller[_0xccac('0xd')]);module[_0xccac('0xe')]=router;
\ No newline at end of file
+var _0x3f28=['put','isAuthenticated','update','delete','/:id','destroy','multer','path','connect-timeout','express','Router','../../components/interaction/service','../../config/environment','./action.controller'];(function(_0x32d457,_0x1a39c9){var _0x338386=function(_0x199d7a){while(--_0x199d7a){_0x32d457['push'](_0x32d457['shift']());}};_0x338386(++_0x1a39c9);}(_0x3f28,0x12c));var _0x83f2=function(_0x78b565,_0x37aaf4){_0x78b565=_0x78b565-0x0;var _0x2244ac=_0x3f28[_0x78b565];return _0x2244ac;};'use strict';var multer=require(_0x83f2('0x0'));var util=require('util');var path=require(_0x83f2('0x1'));var timeout=require(_0x83f2('0x2'));var express=require(_0x83f2('0x3'));var router=express[_0x83f2('0x4')]();var fs_extra=require('fs-extra');var auth=require('../../components/auth/service');var interaction=require(_0x83f2('0x5'));var config=require(_0x83f2('0x6'));var controller=require(_0x83f2('0x7'));router[_0x83f2('0x8')]('/:id',auth[_0x83f2('0x9')](),controller[_0x83f2('0xa')]);router[_0x83f2('0xb')](_0x83f2('0xc'),auth[_0x83f2('0x9')](),controller[_0x83f2('0xd')]);module['exports']=router;
\ No newline at end of file
index 74028d1..e132574 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7dfd=['STRING','TEXT','sequelize','exports'];(function(_0x156798,_0x88f858){var _0x522959=function(_0xd6a621){while(--_0xd6a621){_0x156798['push'](_0x156798['shift']());}};_0x522959(++_0x88f858);}(_0x7dfd,0x1c2));var _0xd7df=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x7dfd[_0x3dd15e];return _0x231fd0;};'use strict';var Sequelize=require(_0xd7df('0x0'));module[_0xd7df('0x1')]={'name':{'type':Sequelize[_0xd7df('0x2')],'allowNull':![]},'description':{'type':Sequelize[_0xd7df('0x2')]},'parent':{'type':Sequelize[_0xd7df('0x2')]},'table':{'type':Sequelize[_0xd7df('0x2')]},'conditions':{'type':Sequelize[_0xd7df('0x3')]},'joins':{'type':Sequelize[_0xd7df('0x3')]}};
\ No newline at end of file
+var _0xf494=['STRING','TEXT','sequelize','exports'];(function(_0x21065c,_0x23839c){var _0x3500c0=function(_0x59c477){while(--_0x59c477){_0x21065c['push'](_0x21065c['shift']());}};_0x3500c0(++_0x23839c);}(_0xf494,0x1c6));var _0x4f49=function(_0x32efb7,_0x460fee){_0x32efb7=_0x32efb7-0x0;var _0x310d09=_0xf494[_0x32efb7];return _0x310d09;};'use strict';var Sequelize=require(_0x4f49('0x0'));module[_0x4f49('0x1')]={'name':{'type':Sequelize[_0x4f49('0x2')],'allowNull':![]},'description':{'type':Sequelize['STRING']},'parent':{'type':Sequelize[_0x4f49('0x2')]},'table':{'type':Sequelize[_0x4f49('0x2')]},'conditions':{'type':Sequelize[_0x4f49('0x3')]},'joins':{'type':Sequelize[_0x4f49('0x3')]}};
\ No newline at end of file
index 9d4113b..dd3e41a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x57e9=['update','then','destroy','get','CustomReports','UserProfileResource','sendStatus','stack','name','send','index','map','fieldName','type','key','model','query','keys','filters','attributes','fields','length','hasOwnProperty','nolimit','order','where','pick','filter','merge','VIRTUAL','options','AnalyticCustomReport','includeAll','include','findAll','rows','show','params','rawAttributes','intersection','create','body','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','UserProfileSection','find','userProfileId','autoAssociation','catch','error','preview','left_join','SUM(%s)','COUNT(%s)','COUNT(DISTINCT\x20%s)','MAX(%s)','MIN(%s)','AVG(%s)','GROUP_CONCAT(%s\x20ORDER\x20BY\x20%s\x20DESC)','HOUR(%s)','ROUND(%s)','includes','IS\x20NOT\x20NULL','IS\x20EMPTY','IS\x20NOT\x20EMPTY','rules','group','condition','value','getFields','Sequelize','ValidationErrorItem','Please\x20insert\x20at\x20least\x20one\x20field','keyBy','from','table','MetricId','metric','function','replace','format','groupBy','orderBy','alias','joins','parse','foreignTable','foreignKey','%s.%s\x20=\x20%s.%s','parentKey','conditions','debug','Limited\x20Query:','sequelize','toString','QueryTypes','SELECT','right_join','cross_join','GROUP_CONCAT(%s\x20ORDER\x20BY\x20%s\x20ASC)','DATE(%s)','IS\x20NULL','field','AnalyticMetric','select','DESC','clone','output','web','fullPath','%s-%s.%s','randomstring','generate','csv','AnalyticExtractedReport','cdr','.calldate\x20BETWEEN\x20?\x20AND\x20?','startDate','endDate','.createdAt\x20BETWEEN\x20?\x20AND\x20?','Run\x20Query:','join','../../components/export/','../../files/reports','savename','countTable','COUNT(*)','run','runReport','GROUP_CONCAT(%s)','SEC_TO_TIME(%s)','operator','zip-dir','fast-json-patch','request-promise','moment','bluebird','util','sox','to-csv','ejs','fs-extra','lodash','desk.js','querystring','papaparse','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/utils','../../config/license/util','../../mysqldb','dbH','end','status','json','offset','undefined','limit','count','set','Content-Range','reject'];(function(_0xeb67d8,_0x14a337){var _0x4138f9=function(_0x3b0407){while(--_0x3b0407){_0xeb67d8['push'](_0xeb67d8['shift']());}};_0x4138f9(++_0x14a337);}(_0x57e9,0x12b));var _0x957e=function(_0x45cbd5,_0x5a8a87){_0x45cbd5=_0x45cbd5-0x0;var _0xe5942=_0x57e9[_0x45cbd5];return _0xe5942;};'use strict';var emlformat=require('eml-format');var rimraf=require('rimraf');var zipdir=require(_0x957e('0x0'));var jsonpatch=require(_0x957e('0x1'));var rp=require(_0x957e('0x2'));var moment=require(_0x957e('0x3'));var BPromise=require(_0x957e('0x4'));var Mustache=require('mustache');var util=require(_0x957e('0x5'));var path=require('path');var sox=require(_0x957e('0x6'));var csv=require(_0x957e('0x7'));var ejs=require(_0x957e('0x8'));var fs=require('fs');var fs_extra=require(_0x957e('0x9'));var _=require(_0x957e('0xa'));var squel=require('squel');var crypto=require('crypto');var jsforce=require('jsforce');var deskjs=require(_0x957e('0xb'));var toCsv=require(_0x957e('0x7'));var querystring=require(_0x957e('0xc'));var Papa=require(_0x957e('0xd'));var Redis=require('ioredis');var authService=require(_0x957e('0xe'));var qs=require(_0x957e('0xf'));var as=require(_0x957e('0x10'));var hardwareService=require(_0x957e('0x11'));var logger=require('../../config/logger')(_0x957e('0x12'));var utils=require(_0x957e('0x13'));var config=require('../../config/environment');var licenseUtil=require(_0x957e('0x14'));var db=require(_0x957e('0x15'))['db'];var dbH=require(_0x957e('0x15'))[_0x957e('0x16')];function respondWithStatusCode(_0x2461ac,_0x29a196){_0x29a196=_0x29a196||0xcc;return function(_0x4f5c4b){if(_0x4f5c4b){return _0x2461ac['sendStatus'](_0x29a196);}return _0x2461ac['status'](_0x29a196)[_0x957e('0x17')]();};}function respondWithResult(_0x45a0ef,_0x3397c9){_0x3397c9=_0x3397c9||0xc8;return function(_0x22697b){if(_0x22697b){return _0x45a0ef[_0x957e('0x18')](_0x3397c9)[_0x957e('0x19')](_0x22697b);}};}function respondWithFilteredResult(_0x15d21c,_0xb8567){return function(_0x2e0f6a){if(_0x2e0f6a){var _0x198f81=typeof _0xb8567[_0x957e('0x1a')]===_0x957e('0x1b')&&typeof _0xb8567[_0x957e('0x1c')]===_0x957e('0x1b');var _0x550e67=_0x2e0f6a[_0x957e('0x1d')];var _0x2285b8=_0x198f81?0x0:_0xb8567[_0x957e('0x1a')];var _0x22ec8b=_0x198f81?_0x2e0f6a['count']:_0xb8567[_0x957e('0x1a')]+_0xb8567[_0x957e('0x1c')];var _0x586e91;if(_0x22ec8b>=_0x550e67){_0x22ec8b=_0x550e67;_0x586e91=0xc8;}else{_0x586e91=0xce;}_0x15d21c['status'](_0x586e91);return _0x15d21c[_0x957e('0x1e')](_0x957e('0x1f'),_0x2285b8+'-'+_0x22ec8b+'/'+_0x550e67)[_0x957e('0x19')](_0x2e0f6a);}return null;};}function patchUpdates(_0x2c02ed){return function(_0xa282e3){try{jsonpatch['apply'](_0xa282e3,_0x2c02ed,!![]);}catch(_0x5c3bec){return BPromise[_0x957e('0x20')](_0x5c3bec);}return _0xa282e3['save']();};}function saveUpdates(_0x3da2c0,_0x79267c){return function(_0x5e9c32){if(_0x5e9c32){return _0x5e9c32[_0x957e('0x21')](_0x3da2c0)[_0x957e('0x22')](function(_0x232373){return _0x232373;});}return null;};}function removeEntity(_0x9faf2b,_0x3623f0){return function(_0x413f07){if(_0x413f07){return _0x413f07[_0x957e('0x23')]()[_0x957e('0x22')](function(){var _0x3982ef=_0x413f07[_0x957e('0x24')]({'plain':!![]});var _0x23c07e=_0x957e('0x25');return db[_0x957e('0x26')][_0x957e('0x23')]({'where':{'type':_0x23c07e,'resourceId':_0x3982ef['id']}})[_0x957e('0x22')](function(){return _0x413f07;});})[_0x957e('0x22')](function(){_0x9faf2b[_0x957e('0x18')](0xcc)['end']();});}};}function handleEntityNotFound(_0x5da687,_0x1eb56b){return function(_0x47f841){if(!_0x47f841){_0x5da687[_0x957e('0x27')](0x194);}return _0x47f841;};}function handleError(_0x5ea112,_0x55f226){_0x55f226=_0x55f226||0x1f4;return function(_0x38f2b3){logger['error'](_0x38f2b3[_0x957e('0x28')]);if(_0x38f2b3[_0x957e('0x29')]){delete _0x38f2b3['name'];}_0x5ea112[_0x957e('0x18')](_0x55f226)[_0x957e('0x2a')](_0x38f2b3);};}exports[_0x957e('0x2b')]=function(_0x43e2da,_0x2c65f1){var _0x3c6359={},_0x12f71d={},_0x14bb5b={'count':0x0,'rows':[]};var _0x55ca08=_[_0x957e('0x2c')](db['AnalyticCustomReport']['rawAttributes'],function(_0x4b4402){return{'name':_0x4b4402[_0x957e('0x2d')],'type':_0x4b4402[_0x957e('0x2e')][_0x957e('0x2f')]};});_0x12f71d[_0x957e('0x30')]=_[_0x957e('0x2c')](_0x55ca08,_0x957e('0x29'));_0x12f71d[_0x957e('0x31')]=_[_0x957e('0x32')](_0x43e2da['query']);_0x12f71d[_0x957e('0x33')]=_['intersection'](_0x12f71d[_0x957e('0x30')],_0x12f71d['query']);_0x3c6359[_0x957e('0x34')]=_['intersection'](_0x12f71d[_0x957e('0x30')],qs[_0x957e('0x35')](_0x43e2da[_0x957e('0x31')][_0x957e('0x35')]));_0x3c6359[_0x957e('0x34')]=_0x3c6359[_0x957e('0x34')][_0x957e('0x36')]?_0x3c6359['attributes']:_0x12f71d[_0x957e('0x30')];if(!_0x43e2da['query'][_0x957e('0x37')](_0x957e('0x38'))){_0x3c6359['limit']=qs['limit'](_0x43e2da[_0x957e('0x31')][_0x957e('0x1c')]);_0x3c6359[_0x957e('0x1a')]=qs[_0x957e('0x1a')](_0x43e2da[_0x957e('0x31')]['offset']);}_0x3c6359[_0x957e('0x39')]=qs['sort'](_0x43e2da[_0x957e('0x31')]['sort']);_0x3c6359[_0x957e('0x3a')]=qs['filters'](_[_0x957e('0x3b')](_0x43e2da[_0x957e('0x31')],_0x12f71d[_0x957e('0x33')]),_0x55ca08);if(_0x43e2da[_0x957e('0x31')][_0x957e('0x3c')]){_0x3c6359['where']=_[_0x957e('0x3d')](_0x3c6359[_0x957e('0x3a')],{'$or':_['map'](_0x55ca08,function(_0x5e02cd){if(_0x5e02cd[_0x957e('0x2e')]!==_0x957e('0x3e')){var _0x52db90={};_0x52db90[_0x5e02cd['name']]={'$like':'%'+_0x43e2da[_0x957e('0x31')][_0x957e('0x3c')]+'%'};return _0x52db90;}})});}_0x3c6359=_[_0x957e('0x3d')]({},_0x3c6359,_0x43e2da[_0x957e('0x3f')]);var _0x1c6110={'where':_0x3c6359['where']};return db[_0x957e('0x40')]['count'](_0x1c6110)['then'](function(_0x2ad523){_0x14bb5b['count']=_0x2ad523;if(_0x43e2da[_0x957e('0x31')][_0x957e('0x41')]){_0x3c6359[_0x957e('0x42')]=[{'all':!![]}];}return db[_0x957e('0x40')][_0x957e('0x43')](_0x3c6359);})[_0x957e('0x22')](function(_0x5b846b){_0x14bb5b[_0x957e('0x44')]=_0x5b846b;return _0x14bb5b;})['then'](respondWithFilteredResult(_0x2c65f1,_0x3c6359))['catch'](handleError(_0x2c65f1,null));};exports[_0x957e('0x45')]=function(_0x12cabd,_0x445724){var _0x7e9d90={'raw':![],'where':{'id':_0x12cabd[_0x957e('0x46')]['id']}},_0x562f9c={};_0x562f9c[_0x957e('0x30')]=_[_0x957e('0x32')](db[_0x957e('0x40')][_0x957e('0x47')]);_0x562f9c['query']=_['keys'](_0x12cabd[_0x957e('0x31')]);_0x562f9c['filters']=_['intersection'](_0x562f9c['model'],_0x562f9c['query']);_0x7e9d90[_0x957e('0x34')]=_[_0x957e('0x48')](_0x562f9c['model'],qs[_0x957e('0x35')](_0x12cabd[_0x957e('0x31')][_0x957e('0x35')]));_0x7e9d90[_0x957e('0x34')]=_0x7e9d90[_0x957e('0x34')][_0x957e('0x36')]?_0x7e9d90[_0x957e('0x34')]:_0x562f9c[_0x957e('0x30')];if(_0x12cabd[_0x957e('0x31')]['includeAll']){_0x7e9d90[_0x957e('0x42')]=[{'all':!![]}];}_0x7e9d90=_[_0x957e('0x3d')]({},_0x7e9d90,_0x12cabd[_0x957e('0x3f')]);return db[_0x957e('0x40')]['find'](_0x7e9d90)[_0x957e('0x22')](handleEntityNotFound(_0x445724,null))[_0x957e('0x22')](respondWithResult(_0x445724,null))['catch'](handleError(_0x445724,null));};exports[_0x957e('0x49')]=function(_0xf8fee0,_0x45806e){return db['AnalyticCustomReport'][_0x957e('0x49')](_0xf8fee0[_0x957e('0x4a')],{})['then'](function(_0x35c637){var _0x33f119=_0xf8fee0[_0x957e('0x4b')][_0x957e('0x24')]({'plain':!![]});if(!_0x33f119)throw new Error(_0x957e('0x4c'));if(_0x33f119[_0x957e('0x4d')]==='user'){var _0x428d4e=_0x35c637['get']({'plain':!![]});var _0xfe36ed='Reports';return db[_0x957e('0x4e')][_0x957e('0x4f')]({'where':{'name':_0xfe36ed,'userProfileId':_0x33f119[_0x957e('0x50')]},'raw':!![]})[_0x957e('0x22')](function(_0x319874){if(_0x319874&&_0x319874[_0x957e('0x51')]===0x0){return db[_0x957e('0x26')][_0x957e('0x49')]({'name':_0x428d4e[_0x957e('0x29')],'resourceId':_0x428d4e['id'],'type':_0x957e('0x25'),'sectionId':_0x319874['id']},{})[_0x957e('0x22')](function(){return _0x35c637;});}else{return _0x35c637;}})[_0x957e('0x52')](function(_0x1234f9){logger[_0x957e('0x53')]('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0x1234f9);throw _0x1234f9;});}return _0x35c637;})[_0x957e('0x22')](respondWithResult(_0x45806e,0xc9))[_0x957e('0x52')](handleError(_0x45806e,null));};exports[_0x957e('0x21')]=function(_0xc2888a,_0x2b8f8c){if(_0xc2888a[_0x957e('0x4a')]['id']){delete _0xc2888a[_0x957e('0x4a')]['id'];}return db[_0x957e('0x40')]['find']({'where':{'id':_0xc2888a[_0x957e('0x46')]['id']}})[_0x957e('0x22')](handleEntityNotFound(_0x2b8f8c,null))[_0x957e('0x22')](saveUpdates(_0xc2888a[_0x957e('0x4a')],null))['then'](respondWithResult(_0x2b8f8c,null))[_0x957e('0x52')](handleError(_0x2b8f8c,null));};exports['destroy']=function(_0x1e599d,_0x2901a2){return db[_0x957e('0x40')]['find']({'where':{'id':_0x1e599d[_0x957e('0x46')]['id']}})[_0x957e('0x22')](handleEntityNotFound(_0x2901a2,null))[_0x957e('0x22')](removeEntity(_0x2901a2,null))[_0x957e('0x52')](handleError(_0x2901a2,null));};exports[_0x957e('0x54')]=function(_0x4edef9,_0x590aa7){var _0x5bccb6=0xa;var _0x674dd1=['join',_0x957e('0x55'),'right_join','cross_join'];var _0x90cfb={'SUM':_0x957e('0x56'),'COUNT':_0x957e('0x57'),'COUNT DISTINCT':_0x957e('0x58'),'MAX':_0x957e('0x59'),'MIN':_0x957e('0x5a'),'AVG':_0x957e('0x5b'),'GROUP_CONCAT':'GROUP_CONCAT(%s)','GROUP_CONCAT ASC':'GROUP_CONCAT(%s\x20ORDER\x20BY\x20%s\x20ASC)','GROUP_CONCAT DESC':_0x957e('0x5c')};var _0x5c736d={'SEC_TO_TIME':'SEC_TO_TIME(%s)','DATE':'DATE(%s)','HOUR':_0x957e('0x5d'),'ROUND':_0x957e('0x5e'),'UNIX_TIMESTAMP':'UNIX_TIMESTAMP(%s)'};var _0xca27f=function(_0x3c1e71){return!_[_0x957e('0x5f')](['IS\x20NULL',_0x957e('0x60'),_0x957e('0x61'),_0x957e('0x62')],_0x3c1e71);};var _0x24ee68=function(_0x4c776f){if(!_0x4c776f||!_0x4c776f[_0x957e('0x63')][_0x957e('0x36')]){return'';}for(var _0x23ffd3='(',_0xf1563=0x0;_0xf1563<_0x4c776f[_0x957e('0x63')]['length'];_0xf1563+=0x1){_0xf1563>0x0&&(_0x23ffd3+='\x20'+_0x4c776f['operator']+'\x20');_0x23ffd3+=_0x4c776f[_0x957e('0x63')][_0xf1563][_0x957e('0x64')]?_0x24ee68(_0x4c776f[_0x957e('0x63')][_0xf1563]['group']):_0x4c776f[_0x957e('0x63')][_0xf1563]['field']+'\x20'+_0x4c776f[_0x957e('0x63')][_0xf1563][_0x957e('0x65')]+(_0xca27f(_0x4c776f[_0x957e('0x63')][_0xf1563][_0x957e('0x65')])?'\x20'+_0x4c776f[_0x957e('0x63')][_0xf1563][_0x957e('0x66')]:'');}return _0x23ffd3+')';};var _0x270089={'where':{'id':_0x4edef9[_0x957e('0x46')]['id']}},_0xcb6c2c,_0x3d4d34,_0x1f6f7b,_0x4eb0c3,_0xfc3668;_0x270089=_['merge']({},_0x270089,_0x4edef9[_0x957e('0x3f')]);return db['AnalyticCustomReport'][_0x957e('0x4f')](_0x270089)[_0x957e('0x22')](function(_0x3c212a){if(_0x3c212a){_0xcb6c2c=_0x3c212a;return _0x3c212a[_0x957e('0x67')]();}return null;})[_0x957e('0x22')](function(_0x33188f){if(_0x33188f){if(!_0x33188f[_0x957e('0x36')]){throw new db[(_0x957e('0x68'))][(_0x957e('0x69'))](_0x957e('0x6a'),0x193);}_0x3d4d34=_0x33188f;return db['AnalyticMetric'][_0x957e('0x43')]({'raw':!![]});}return null;})[_0x957e('0x22')](function(_0x3eadf4){if(_0x3eadf4){_0x1f6f7b=_[_0x957e('0x6b')](_0x3eadf4,'id');var _0x4b273a;var _0x2e9e85=squel['select']();_0x2e9e85[_0x957e('0x6c')](_0xcb6c2c[_0x957e('0x6d')]);for(var _0x171917=0x0;_0x171917<_0x3d4d34['length'];_0x171917+=0x1){_0x4b273a=_0x3d4d34[_0x171917][_0x957e('0x6e')]?_0x1f6f7b[_0x3d4d34[_0x171917]['MetricId']][_0x957e('0x6f')]:_0x3d4d34[_0x171917]['field'];_0x4b273a=_0x3d4d34[_0x171917][_0x957e('0x70')]?_[_0x957e('0x71')](_0x90cfb[_0x3d4d34[_0x171917][_0x957e('0x70')]],'%s',_0x4b273a):_0x4b273a;_0x4b273a=_0x3d4d34[_0x171917][_0x957e('0x72')]?_['replace'](_0x5c736d[_0x3d4d34[_0x171917][_0x957e('0x72')]],'%s',_0x4b273a):_0x4b273a;if(_0x3d4d34[_0x171917][_0x957e('0x73')]){_0x2e9e85[_0x957e('0x64')](_0x4b273a);}_0x3d4d34[_0x171917][_0x957e('0x74')]&&_0x2e9e85[_0x957e('0x39')](_0x4b273a,_0x3d4d34[_0x171917][_0x957e('0x74')]==='DESC'?![]:!![]);_0x2e9e85['field'](_0x4b273a,_0x3d4d34[_0x171917][_0x957e('0x75')]||_0x4b273a);}if(_0xcb6c2c['joins']){_0xcb6c2c[_0x957e('0x76')]=JSON[_0x957e('0x77')](_0xcb6c2c[_0x957e('0x76')]);for(var _0x3662d6=0x0;_0x3662d6<_0xcb6c2c[_0x957e('0x76')][_0x957e('0x36')];_0x3662d6+=0x1){if(_0xcb6c2c[_0x957e('0x76')][_0x3662d6][_0x957e('0x2e')]&&_[_0x957e('0x5f')](_0x674dd1,_0xcb6c2c[_0x957e('0x76')][_0x3662d6][_0x957e('0x2e')])&&_0xcb6c2c['joins'][_0x3662d6]['parentKey']&&_0xcb6c2c['joins'][_0x3662d6][_0x957e('0x78')]&&_0xcb6c2c[_0x957e('0x76')][_0x3662d6][_0x957e('0x79')]){_0x2e9e85[_0xcb6c2c[_0x957e('0x76')][_0x3662d6]['type']](_0xcb6c2c[_0x957e('0x76')][_0x3662d6][_0x957e('0x78')],null,util[_0x957e('0x72')](_0x957e('0x7a'),_0xcb6c2c[_0x957e('0x6d')],_0xcb6c2c['joins'][_0x3662d6][_0x957e('0x7b')],_0xcb6c2c['joins'][_0x3662d6]['foreignTable'],_0xcb6c2c[_0x957e('0x76')][_0x3662d6][_0x957e('0x79')]));}}}if(_0xcb6c2c[_0x957e('0x7c')]){_0xcb6c2c['conditions']=JSON[_0x957e('0x77')](_0xcb6c2c['conditions']);_0x2e9e85[_0x957e('0x3a')](_0x24ee68(_0xcb6c2c[_0x957e('0x7c')][_0x957e('0x64')]));}_0xfc3668=_0x2e9e85['clone']();_0x2e9e85[_0x957e('0x1c')](_0x5bccb6);_0x2e9e85[_0x957e('0x1a')](0x0);logger[_0x957e('0x7d')](_0x957e('0x7e'),_0x2e9e85['toString']());return dbH[_0x957e('0x7f')][_0x957e('0x31')](_0x2e9e85[_0x957e('0x80')](),{'type':dbH[_0x957e('0x7f')][_0x957e('0x81')][_0x957e('0x82')]});}})[_0x957e('0x22')](respondWithResult(_0x590aa7,null))['catch'](handleError(_0x590aa7,null));};function runReport(_0x289eb5,_0x291f86,_0x4f2ac7){var _0xeda0e7=_0x291f86['name'];var _0x384253=0xa;var _0x2e46f6=['join',_0x957e('0x55'),_0x957e('0x83'),_0x957e('0x84')];var _0x517d91={'SUM':_0x957e('0x56'),'COUNT':'COUNT(%s)','COUNT DISTINCT':_0x957e('0x58'),'MAX':_0x957e('0x59'),'MIN':_0x957e('0x5a'),'AVG':_0x957e('0x5b'),'GROUP_CONCAT':'GROUP_CONCAT(%s)','GROUP_CONCAT ASC':_0x957e('0x85'),'GROUP_CONCAT DESC':_0x957e('0x5c')};var _0x118024={'SEC_TO_TIME':'SEC_TO_TIME(%s)','DATE':_0x957e('0x86'),'HOUR':_0x957e('0x5d'),'ROUND':_0x957e('0x5e'),'UNIX_TIMESTAMP':'UNIX_TIMESTAMP(%s)'};var _0x5643b0=function(_0x46b94e){return!_['includes']([_0x957e('0x87'),_0x957e('0x60'),_0x957e('0x61'),_0x957e('0x62')],_0x46b94e);};var _0x371206=function(_0x34b725){if(!_0x34b725||!_0x34b725['rules']['length']){return'';}for(var _0x5423cb='(',_0x5051c6=0x0;_0x5051c6<_0x34b725[_0x957e('0x63')][_0x957e('0x36')];_0x5051c6+=0x1){_0x5051c6>0x0&&(_0x5423cb+='\x20'+_0x34b725['operator']+'\x20');_0x5423cb+=_0x34b725['rules'][_0x5051c6][_0x957e('0x64')]?_0x371206(_0x34b725['rules'][_0x5051c6][_0x957e('0x64')]):_0x34b725[_0x957e('0x63')][_0x5051c6][_0x957e('0x88')]+'\x20'+_0x34b725[_0x957e('0x63')][_0x5051c6][_0x957e('0x65')]+(_0x5643b0(_0x34b725[_0x957e('0x63')][_0x5051c6][_0x957e('0x65')])?'\x20'+_0x34b725[_0x957e('0x63')][_0x5051c6][_0x957e('0x66')]:'');}return _0x5423cb+')';};var _0x4e2de7={'where':{'id':_0x289eb5['id']}},_0x5df582,_0x272f34,_0x449993,_0x16b0df,_0x35c5fd;_0x4e2de7=_[_0x957e('0x3d')]({},_0x4e2de7,_0x4f2ac7);return db[_0x957e('0x40')][_0x957e('0x4f')](_0x4e2de7)['then'](function(_0xab594d){if(_0xab594d){_0x5df582=_0xab594d;return _0xab594d[_0x957e('0x67')]();}return null;})['then'](function(_0x1bace8){if(_0x1bace8){if(!_0x1bace8[_0x957e('0x36')]){throw new db[(_0x957e('0x68'))]['ValidationErrorItem'](_0x957e('0x6a'),0x193);}_0x272f34=_0x1bace8;return db[_0x957e('0x89')][_0x957e('0x43')]({'raw':!![]});}return null;})[_0x957e('0x22')](function(_0x16c18){if(_0x16c18){_0x449993=_[_0x957e('0x6b')](_0x16c18,'id');var _0x360524;var _0x446cf4=squel[_0x957e('0x8a')]();_0x446cf4[_0x957e('0x6c')](_0x5df582[_0x957e('0x6d')]);for(var _0x572ecb=0x0;_0x572ecb<_0x272f34[_0x957e('0x36')];_0x572ecb+=0x1){_0x360524=_0x272f34[_0x572ecb][_0x957e('0x6e')]?_0x449993[_0x272f34[_0x572ecb]['MetricId']]['metric']:_0x272f34[_0x572ecb][_0x957e('0x88')];_0x360524=_0x272f34[_0x572ecb][_0x957e('0x70')]?_[_0x957e('0x71')](_0x517d91[_0x272f34[_0x572ecb][_0x957e('0x70')]],'%s',_0x360524):_0x360524;_0x360524=_0x272f34[_0x572ecb]['format']?_['replace'](_0x118024[_0x272f34[_0x572ecb]['format']],'%s',_0x360524):_0x360524;if(_0x272f34[_0x572ecb][_0x957e('0x73')]){_0x446cf4[_0x957e('0x64')](_0x360524);}_0x272f34[_0x572ecb][_0x957e('0x74')]&&_0x446cf4['order'](_0x360524,_0x272f34[_0x572ecb]['orderBy']===_0x957e('0x8b')?![]:!![]);_0x446cf4['field'](_0x360524,_0x272f34[_0x572ecb][_0x957e('0x75')]||_0x360524);}if(_0x5df582[_0x957e('0x76')]){_0x5df582[_0x957e('0x76')]=JSON[_0x957e('0x77')](_0x5df582[_0x957e('0x76')]);for(var _0xa981=0x0;_0xa981<_0x5df582[_0x957e('0x76')]['length'];_0xa981+=0x1){if(_0x5df582[_0x957e('0x76')][_0xa981][_0x957e('0x2e')]&&_[_0x957e('0x5f')](_0x2e46f6,_0x5df582[_0x957e('0x76')][_0xa981][_0x957e('0x2e')])&&_0x5df582[_0x957e('0x76')][_0xa981][_0x957e('0x7b')]&&_0x5df582['joins'][_0xa981][_0x957e('0x78')]&&_0x5df582[_0x957e('0x76')][_0xa981][_0x957e('0x79')]){_0x446cf4[_0x5df582[_0x957e('0x76')][_0xa981][_0x957e('0x2e')]](_0x5df582[_0x957e('0x76')][_0xa981][_0x957e('0x78')],null,util[_0x957e('0x72')](_0x957e('0x7a'),_0x5df582['table'],_0x5df582[_0x957e('0x76')][_0xa981][_0x957e('0x7b')],_0x5df582[_0x957e('0x76')][_0xa981]['foreignTable'],_0x5df582[_0x957e('0x76')][_0xa981]['foreignKey']));}}}if(_0x5df582[_0x957e('0x7c')]){_0x5df582[_0x957e('0x7c')]=JSON[_0x957e('0x77')](_0x5df582[_0x957e('0x7c')]);_0x446cf4[_0x957e('0x3a')](_0x371206(_0x5df582['conditions'][_0x957e('0x64')]));}_0x35c5fd=_0x446cf4[_0x957e('0x8c')]();_0x446cf4[_0x957e('0x1c')](_0x384253);_0x446cf4[_0x957e('0x1a')](0x0);return;}})[_0x957e('0x22')](function(){if(_0x291f86[_0x957e('0x8d')]===_0x957e('0x8e')){return null;}var _0xbe4ce0=_[_0x957e('0x3d')](_0x291f86,{'name':_0x291f86[_0x957e('0x8f')]||_0x291f86['name']||_0x5df582[_0x957e('0x29')],'basename':_0xeda0e7,'savename':util[_0x957e('0x72')](_0x957e('0x90'),_0x291f86[_0x957e('0x29')]||_0x5df582[_0x957e('0x29')],require(_0x957e('0x91'))[_0x957e('0x92')](0x4),_0x291f86[_0x957e('0x8d')]||_0x957e('0x93')),'reportId':_0x5df582['id'],'reportType':'custom'});return db[_0x957e('0x94')]['create'](_0xbe4ce0,{'raw':!![]});})[_0x957e('0x22')](function(_0x6a90f3){if(_0x5df582['table']===_0x957e('0x95')){_0x35c5fd[_0x957e('0x3a')](_0x5df582[_0x957e('0x6d')]+_0x957e('0x96'),_0x291f86[_0x957e('0x97')],_0x291f86[_0x957e('0x98')]);}else{_0x35c5fd[_0x957e('0x3a')](_0x5df582['table']+_0x957e('0x99'),_0x291f86[_0x957e('0x97')],_0x291f86['endDate']);}if(_0x6a90f3){logger['info'](_0x957e('0x9a'),_0x35c5fd['toString']());require('child_process')['fork'](path[_0x957e('0x9b')](__dirname,_0x957e('0x9c'),_0x6a90f3['output']),[_0x6a90f3['id'],_0x35c5fd[_0x957e('0x80')](),path[_0x957e('0x9b')](__dirname,_0x957e('0x9d'),_0x6a90f3[_0x957e('0x9e')]),_0xeda0e7]);return _0x6a90f3;}else{var _0x32fce4=squel[_0x957e('0x8a')]();_0x32fce4[_0x957e('0x6c')]('('+_0x35c5fd[_0x957e('0x80')]()+')',_0x957e('0x9f'));_0x32fce4[_0x957e('0x88')](_0x957e('0xa0'),_0x957e('0x1d'));_0x35c5fd[_0x957e('0x1c')](_0x291f86[_0x957e('0x1c')]||_0x384253);_0x35c5fd[_0x957e('0x1a')](_0x291f86[_0x957e('0x1a')]||0x0);return dbH[_0x957e('0x7f')]['query'](_0x32fce4[_0x957e('0x80')](),{'type':dbH['sequelize'][_0x957e('0x81')][_0x957e('0x82')]})[_0x957e('0x22')](function(_0x1ee726){if(!_0x1ee726[_0x957e('0x36')]){_0x16b0df=0x0;}else{_0x16b0df=_0x1ee726[0x0][_0x957e('0x1d')]||0x0;}return dbH['sequelize'][_0x957e('0x31')](_0x35c5fd[_0x957e('0x80')](),{'type':dbH['sequelize'][_0x957e('0x81')][_0x957e('0x82')]});})['then'](function(_0x424fe7){return{'rows':_0x424fe7||[],'count':_0x16b0df};});}});}exports[_0x957e('0xa1')]=function(_0x40bc8a,_0x5516a5){return runReport(_0x40bc8a[_0x957e('0x46')],_0x40bc8a[_0x957e('0x31')],_0x40bc8a[_0x957e('0x3f')])[_0x957e('0x22')](respondWithResult(_0x5516a5,null))[_0x957e('0x52')](handleError(_0x5516a5,null));};exports[_0x957e('0xa2')]=runReport;exports[_0x957e('0x31')]=function(_0x1fda3d,_0x4176b6){var _0x39a388=0xa;var _0x4781f0=[_0x957e('0x9b'),_0x957e('0x55'),_0x957e('0x83'),_0x957e('0x84')];var _0x4f7a2f={'SUM':_0x957e('0x56'),'COUNT':_0x957e('0x57'),'COUNT DISTINCT':_0x957e('0x58'),'MAX':'MAX(%s)','MIN':_0x957e('0x5a'),'AVG':'AVG(%s)','GROUP_CONCAT':_0x957e('0xa3'),'GROUP_CONCAT ASC':_0x957e('0x85'),'GROUP_CONCAT DESC':'GROUP_CONCAT(%s\x20ORDER\x20BY\x20%s\x20DESC)'};var _0x2faf93={'SEC_TO_TIME':_0x957e('0xa4'),'DATE':'DATE(%s)','HOUR':_0x957e('0x5d'),'ROUND':_0x957e('0x5e'),'UNIX_TIMESTAMP':'UNIX_TIMESTAMP(%s)'};var _0x1e340a=function(_0x2bef53){return!_[_0x957e('0x5f')]([_0x957e('0x87'),'IS\x20NOT\x20NULL','IS\x20EMPTY',_0x957e('0x62')],_0x2bef53);};var _0x36f00c=function(_0x319bfb){if(!_0x319bfb||!_0x319bfb['rules'][_0x957e('0x36')]){return'';}for(var _0x3d1fd2='(',_0x57d236=0x0;_0x57d236<_0x319bfb[_0x957e('0x63')]['length'];_0x57d236+=0x1){_0x57d236>0x0&&(_0x3d1fd2+='\x20'+_0x319bfb[_0x957e('0xa5')]+'\x20');_0x3d1fd2+=_0x319bfb['rules'][_0x57d236]['group']?_0x36f00c(_0x319bfb[_0x957e('0x63')][_0x57d236][_0x957e('0x64')]):_0x319bfb[_0x957e('0x63')][_0x57d236][_0x957e('0x88')]+'\x20'+_0x319bfb[_0x957e('0x63')][_0x57d236][_0x957e('0x65')]+(_0x1e340a(_0x319bfb[_0x957e('0x63')][_0x57d236][_0x957e('0x65')])?'\x20'+_0x319bfb[_0x957e('0x63')][_0x57d236][_0x957e('0x66')]:'');}return _0x3d1fd2+')';};var _0x1479d3={'where':{'id':_0x1fda3d[_0x957e('0x46')]['id']}},_0x1932cd,_0x15177a,_0x78b1b7,_0x1a664d,_0xcd0a28;_0x1479d3=_[_0x957e('0x3d')]({},_0x1479d3,_0x1fda3d[_0x957e('0x3f')]);return db['AnalyticCustomReport'][_0x957e('0x4f')](_0x1479d3)[_0x957e('0x22')](function(_0x10e8dc){if(_0x10e8dc){_0x1932cd=_0x10e8dc;return _0x10e8dc[_0x957e('0x67')]();}return null;})[_0x957e('0x22')](function(_0x53efd2){if(_0x53efd2){if(!_0x53efd2[_0x957e('0x36')]){throw new db[(_0x957e('0x68'))]['ValidationErrorItem'](_0x957e('0x6a'),0x193);}_0x15177a=_0x53efd2;return db['AnalyticMetric']['findAll']({'raw':!![]});}return null;})[_0x957e('0x22')](function(_0x2aca7a){if(_0x2aca7a){_0x78b1b7=_['keyBy'](_0x2aca7a,'id');var _0x3472b1;var _0x2078c6=squel[_0x957e('0x8a')]();_0x2078c6[_0x957e('0x6c')](_0x1932cd[_0x957e('0x6d')]);for(var _0x4b09c8=0x0;_0x4b09c8<_0x15177a[_0x957e('0x36')];_0x4b09c8+=0x1){_0x3472b1=_0x15177a[_0x4b09c8][_0x957e('0x6e')]?_0x78b1b7[_0x15177a[_0x4b09c8][_0x957e('0x6e')]]['metric']:_0x15177a[_0x4b09c8][_0x957e('0x88')];_0x3472b1=_0x15177a[_0x4b09c8][_0x957e('0x70')]?_['replace'](_0x4f7a2f[_0x15177a[_0x4b09c8][_0x957e('0x70')]],'%s',_0x3472b1):_0x3472b1;_0x3472b1=_0x15177a[_0x4b09c8][_0x957e('0x72')]?_[_0x957e('0x71')](_0x2faf93[_0x15177a[_0x4b09c8]['format']],'%s',_0x3472b1):_0x3472b1;if(_0x15177a[_0x4b09c8][_0x957e('0x73')]){_0x2078c6['group'](_0x3472b1);}_0x15177a[_0x4b09c8]['orderBy']&&_0x2078c6[_0x957e('0x39')](_0x3472b1,_0x15177a[_0x4b09c8][_0x957e('0x74')]==='DESC'?![]:!![]);_0x2078c6[_0x957e('0x88')](_0x3472b1,_0x15177a[_0x4b09c8][_0x957e('0x75')]||_0x3472b1);}if(_0x1932cd['joins']){_0x1932cd[_0x957e('0x76')]=JSON[_0x957e('0x77')](_0x1932cd[_0x957e('0x76')]);for(var _0x131a79=0x0;_0x131a79<_0x1932cd['joins'][_0x957e('0x36')];_0x131a79+=0x1){if(_0x1932cd['joins'][_0x131a79][_0x957e('0x2e')]&&_[_0x957e('0x5f')](_0x4781f0,_0x1932cd[_0x957e('0x76')][_0x131a79][_0x957e('0x2e')])&&_0x1932cd[_0x957e('0x76')][_0x131a79][_0x957e('0x7b')]&&_0x1932cd[_0x957e('0x76')][_0x131a79][_0x957e('0x78')]&&_0x1932cd['joins'][_0x131a79][_0x957e('0x79')]){_0x2078c6[_0x1932cd[_0x957e('0x76')][_0x131a79][_0x957e('0x2e')]](_0x1932cd[_0x957e('0x76')][_0x131a79][_0x957e('0x78')],null,util['format']('%s.%s\x20=\x20%s.%s',_0x1932cd[_0x957e('0x6d')],_0x1932cd[_0x957e('0x76')][_0x131a79][_0x957e('0x7b')],_0x1932cd[_0x957e('0x76')][_0x131a79][_0x957e('0x78')],_0x1932cd[_0x957e('0x76')][_0x131a79][_0x957e('0x79')]));}}}if(_0x1932cd[_0x957e('0x7c')]){_0x1932cd[_0x957e('0x7c')]=JSON[_0x957e('0x77')](_0x1932cd[_0x957e('0x7c')]);_0x2078c6[_0x957e('0x3a')](_0x36f00c(_0x1932cd[_0x957e('0x7c')]['group']));}_0xcd0a28=_0x2078c6[_0x957e('0x8c')]();_0x2078c6['limit'](_0x39a388);_0x2078c6[_0x957e('0x1a')](0x0);logger[_0x957e('0x7d')](_0x957e('0x7e'),_0x2078c6[_0x957e('0x80')]());return dbH['sequelize'][_0x957e('0x31')](_0x2078c6[_0x957e('0x80')](),{'type':dbH[_0x957e('0x7f')]['QueryTypes'][_0x957e('0x82')]});}})[_0x957e('0x22')](function(){return{'sql':_0xcd0a28[_0x957e('0x80')]()};})[_0x957e('0x22')](respondWithResult(_0x4176b6,null))['catch'](handleError(_0x4176b6,null));};
\ No newline at end of file
+var _0xaf90=['ioredis','../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','../../config/utils','../../config/environment','../../mysqldb','sendStatus','status','json','offset','undefined','limit','count','Content-Range','apply','reject','save','update','then','destroy','get','CustomReports','UserProfileResource','error','stack','name','send','index','AnalyticCustomReport','rawAttributes','type','model','map','query','keys','filters','intersection','attributes','fields','hasOwnProperty','order','sort','where','pick','filter','merge','options','findAll','rows','catch','params','includeAll','include','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','join','left_join','right_join','cross_join','SUM(%s)','COUNT(%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)','HOUR(%s)','UNIX_TIMESTAMP(%s)','IS\x20NOT\x20NULL','IS\x20NOT\x20EMPTY','rules','length','group','field','condition','getFields','Sequelize','ValidationErrorItem','AnalyticMetric','keyBy','from','MetricId','metric','function','replace','format','groupBy','orderBy','DESC','joins','parse','includes','foreignTable','foreignKey','%s.%s\x20=\x20%s.%s','table','parentKey','conditions','clone','toString','sequelize','GROUP_CONCAT(%s)','DATE(%s)','ROUND(%s)','IS\x20NULL','IS\x20EMPTY','operator','value','Please\x20insert\x20at\x20least\x20one\x20field','select','alias','web','fullPath','%s-%s.%s','randomstring','generate','output','custom','AnalyticExtractedReport','cdr','.calldate\x20BETWEEN\x20?\x20AND\x20?','startDate','endDate','.createdAt\x20BETWEEN\x20?\x20AND\x20?','info','Run\x20Query:','child_process','../../components/export/','savename','countTable','COUNT(*)','SELECT','run','COUNT(DISTINCT\x20%s)','debug','QueryTypes','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','util','to-csv','fs-extra','lodash','squel','desk.js'];(function(_0x21a9d9,_0x4d5ac8){var _0x46adce=function(_0xfdd336){while(--_0xfdd336){_0x21a9d9['push'](_0x21a9d9['shift']());}};_0x46adce(++_0x4d5ac8);}(_0xaf90,0x93));var _0x0af9=function(_0x3947c9,_0x4d6c97){_0x3947c9=_0x3947c9-0x0;var _0x2e7871=_0xaf90[_0x3947c9];return _0x2e7871;};'use strict';var emlformat=require(_0x0af9('0x0'));var rimraf=require(_0x0af9('0x1'));var zipdir=require(_0x0af9('0x2'));var jsonpatch=require(_0x0af9('0x3'));var rp=require(_0x0af9('0x4'));var moment=require('moment');var BPromise=require('bluebird');var Mustache=require('mustache');var util=require(_0x0af9('0x5'));var path=require('path');var sox=require('sox');var csv=require(_0x0af9('0x6'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x0af9('0x7'));var _=require(_0x0af9('0x8'));var squel=require(_0x0af9('0x9'));var crypto=require('crypto');var jsforce=require('jsforce');var deskjs=require(_0x0af9('0xa'));var toCsv=require(_0x0af9('0x6'));var querystring=require('querystring');var Papa=require('papaparse');var Redis=require(_0x0af9('0xb'));var authService=require(_0x0af9('0xc'));var qs=require('../../components/parsers/qs');var as=require(_0x0af9('0xd'));var hardwareService=require(_0x0af9('0xe'));var logger=require(_0x0af9('0xf'))('api');var utils=require(_0x0af9('0x10'));var config=require(_0x0af9('0x11'));var licenseUtil=require('../../config/license/util');var db=require('../../mysqldb')['db'];var dbH=require(_0x0af9('0x12'))['dbH'];function respondWithStatusCode(_0x8f63f9,_0x2398f4){_0x2398f4=_0x2398f4||0xcc;return function(_0x641137){if(_0x641137){return _0x8f63f9[_0x0af9('0x13')](_0x2398f4);}return _0x8f63f9[_0x0af9('0x14')](_0x2398f4)['end']();};}function respondWithResult(_0x539b21,_0x4df13f){_0x4df13f=_0x4df13f||0xc8;return function(_0x4108a4){if(_0x4108a4){return _0x539b21['status'](_0x4df13f)[_0x0af9('0x15')](_0x4108a4);}};}function respondWithFilteredResult(_0x165284,_0x5ae60e){return function(_0x428455){if(_0x428455){var _0x38cc7b=typeof _0x5ae60e[_0x0af9('0x16')]===_0x0af9('0x17')&&typeof _0x5ae60e[_0x0af9('0x18')]===_0x0af9('0x17');var _0x5710f1=_0x428455[_0x0af9('0x19')];var _0x33e858=_0x38cc7b?0x0:_0x5ae60e[_0x0af9('0x16')];var _0x5a1d43=_0x38cc7b?_0x428455[_0x0af9('0x19')]:_0x5ae60e['offset']+_0x5ae60e[_0x0af9('0x18')];var _0x583ffa;if(_0x5a1d43>=_0x5710f1){_0x5a1d43=_0x5710f1;_0x583ffa=0xc8;}else{_0x583ffa=0xce;}_0x165284['status'](_0x583ffa);return _0x165284['set'](_0x0af9('0x1a'),_0x33e858+'-'+_0x5a1d43+'/'+_0x5710f1)[_0x0af9('0x15')](_0x428455);}return null;};}function patchUpdates(_0x326e21){return function(_0x55f70d){try{jsonpatch[_0x0af9('0x1b')](_0x55f70d,_0x326e21,!![]);}catch(_0x1d1250){return BPromise[_0x0af9('0x1c')](_0x1d1250);}return _0x55f70d[_0x0af9('0x1d')]();};}function saveUpdates(_0x1e3de9,_0x459f52){return function(_0x2ea407){if(_0x2ea407){return _0x2ea407[_0x0af9('0x1e')](_0x1e3de9)[_0x0af9('0x1f')](function(_0x5d70f7){return _0x5d70f7;});}return null;};}function removeEntity(_0x348096,_0x8eaf81){return function(_0x1a7ed9){if(_0x1a7ed9){return _0x1a7ed9[_0x0af9('0x20')]()[_0x0af9('0x1f')](function(){var _0x1114a4=_0x1a7ed9[_0x0af9('0x21')]({'plain':!![]});var _0xbc5d7d=_0x0af9('0x22');return db[_0x0af9('0x23')][_0x0af9('0x20')]({'where':{'type':_0xbc5d7d,'resourceId':_0x1114a4['id']}})[_0x0af9('0x1f')](function(){return _0x1a7ed9;});})['then'](function(){_0x348096[_0x0af9('0x14')](0xcc)['end']();});}};}function handleEntityNotFound(_0x4ab5d3,_0x32ffcc){return function(_0x42af1c){if(!_0x42af1c){_0x4ab5d3[_0x0af9('0x13')](0x194);}return _0x42af1c;};}function handleError(_0x15a5ce,_0x5baa84){_0x5baa84=_0x5baa84||0x1f4;return function(_0x1a8d1f){logger[_0x0af9('0x24')](_0x1a8d1f[_0x0af9('0x25')]);if(_0x1a8d1f[_0x0af9('0x26')]){delete _0x1a8d1f[_0x0af9('0x26')];}_0x15a5ce['status'](_0x5baa84)[_0x0af9('0x27')](_0x1a8d1f);};}exports[_0x0af9('0x28')]=function(_0x4a7d86,_0x5a2bf0){var _0x40f5bf={},_0x26e8ea={},_0x2f4ea0={'count':0x0,'rows':[]};var _0x29e292=_['map'](db[_0x0af9('0x29')][_0x0af9('0x2a')],function(_0x48874b){return{'name':_0x48874b['fieldName'],'type':_0x48874b[_0x0af9('0x2b')]['key']};});_0x26e8ea[_0x0af9('0x2c')]=_[_0x0af9('0x2d')](_0x29e292,_0x0af9('0x26'));_0x26e8ea[_0x0af9('0x2e')]=_[_0x0af9('0x2f')](_0x4a7d86[_0x0af9('0x2e')]);_0x26e8ea[_0x0af9('0x30')]=_[_0x0af9('0x31')](_0x26e8ea['model'],_0x26e8ea[_0x0af9('0x2e')]);_0x40f5bf[_0x0af9('0x32')]=_[_0x0af9('0x31')](_0x26e8ea[_0x0af9('0x2c')],qs[_0x0af9('0x33')](_0x4a7d86[_0x0af9('0x2e')][_0x0af9('0x33')]));_0x40f5bf[_0x0af9('0x32')]=_0x40f5bf[_0x0af9('0x32')]['length']?_0x40f5bf['attributes']:_0x26e8ea[_0x0af9('0x2c')];if(!_0x4a7d86[_0x0af9('0x2e')][_0x0af9('0x34')]('nolimit')){_0x40f5bf['limit']=qs[_0x0af9('0x18')](_0x4a7d86['query'][_0x0af9('0x18')]);_0x40f5bf['offset']=qs[_0x0af9('0x16')](_0x4a7d86[_0x0af9('0x2e')][_0x0af9('0x16')]);}_0x40f5bf[_0x0af9('0x35')]=qs['sort'](_0x4a7d86[_0x0af9('0x2e')][_0x0af9('0x36')]);_0x40f5bf[_0x0af9('0x37')]=qs[_0x0af9('0x30')](_[_0x0af9('0x38')](_0x4a7d86['query'],_0x26e8ea[_0x0af9('0x30')]),_0x29e292);if(_0x4a7d86[_0x0af9('0x2e')][_0x0af9('0x39')]){_0x40f5bf['where']=_[_0x0af9('0x3a')](_0x40f5bf[_0x0af9('0x37')],{'$or':_['map'](_0x29e292,function(_0x3222e5){if(_0x3222e5[_0x0af9('0x2b')]!=='VIRTUAL'){var _0x11ddeb={};_0x11ddeb[_0x3222e5[_0x0af9('0x26')]]={'$like':'%'+_0x4a7d86[_0x0af9('0x2e')][_0x0af9('0x39')]+'%'};return _0x11ddeb;}})});}_0x40f5bf=_[_0x0af9('0x3a')]({},_0x40f5bf,_0x4a7d86[_0x0af9('0x3b')]);var _0x3548f9={'where':_0x40f5bf[_0x0af9('0x37')]};return db[_0x0af9('0x29')][_0x0af9('0x19')](_0x3548f9)[_0x0af9('0x1f')](function(_0x4c70e1){_0x2f4ea0[_0x0af9('0x19')]=_0x4c70e1;if(_0x4a7d86[_0x0af9('0x2e')]['includeAll']){_0x40f5bf['include']=[{'all':!![]}];}return db[_0x0af9('0x29')][_0x0af9('0x3c')](_0x40f5bf);})['then'](function(_0x56b7af){_0x2f4ea0[_0x0af9('0x3d')]=_0x56b7af;return _0x2f4ea0;})[_0x0af9('0x1f')](respondWithFilteredResult(_0x5a2bf0,_0x40f5bf))[_0x0af9('0x3e')](handleError(_0x5a2bf0,null));};exports['show']=function(_0x318e6a,_0x5b0239){var _0x2ddd0b={'raw':![],'where':{'id':_0x318e6a[_0x0af9('0x3f')]['id']}},_0x114118={};_0x114118['model']=_[_0x0af9('0x2f')](db['AnalyticCustomReport']['rawAttributes']);_0x114118['query']=_[_0x0af9('0x2f')](_0x318e6a[_0x0af9('0x2e')]);_0x114118['filters']=_[_0x0af9('0x31')](_0x114118[_0x0af9('0x2c')],_0x114118[_0x0af9('0x2e')]);_0x2ddd0b['attributes']=_[_0x0af9('0x31')](_0x114118[_0x0af9('0x2c')],qs[_0x0af9('0x33')](_0x318e6a[_0x0af9('0x2e')][_0x0af9('0x33')]));_0x2ddd0b[_0x0af9('0x32')]=_0x2ddd0b['attributes']['length']?_0x2ddd0b[_0x0af9('0x32')]:_0x114118[_0x0af9('0x2c')];if(_0x318e6a[_0x0af9('0x2e')][_0x0af9('0x40')]){_0x2ddd0b[_0x0af9('0x41')]=[{'all':!![]}];}_0x2ddd0b=_[_0x0af9('0x3a')]({},_0x2ddd0b,_0x318e6a[_0x0af9('0x3b')]);return db[_0x0af9('0x29')][_0x0af9('0x42')](_0x2ddd0b)['then'](handleEntityNotFound(_0x5b0239,null))[_0x0af9('0x1f')](respondWithResult(_0x5b0239,null))['catch'](handleError(_0x5b0239,null));};exports[_0x0af9('0x43')]=function(_0x4a245a,_0x2def50){return db[_0x0af9('0x29')][_0x0af9('0x43')](_0x4a245a[_0x0af9('0x44')],{})[_0x0af9('0x1f')](function(_0x178190){var _0x507268=_0x4a245a[_0x0af9('0x45')][_0x0af9('0x21')]({'plain':!![]});if(!_0x507268)throw new Error(_0x0af9('0x46'));if(_0x507268[_0x0af9('0x47')]===_0x0af9('0x45')){var _0x439a57=_0x178190[_0x0af9('0x21')]({'plain':!![]});var _0x1320e6='Reports';return db[_0x0af9('0x48')][_0x0af9('0x42')]({'where':{'name':_0x1320e6,'userProfileId':_0x507268[_0x0af9('0x49')]},'raw':!![]})[_0x0af9('0x1f')](function(_0x3bf46a){if(_0x3bf46a&&_0x3bf46a[_0x0af9('0x4a')]===0x0){return db[_0x0af9('0x23')]['create']({'name':_0x439a57[_0x0af9('0x26')],'resourceId':_0x439a57['id'],'type':_0x0af9('0x22'),'sectionId':_0x3bf46a['id']},{})[_0x0af9('0x1f')](function(){return _0x178190;});}else{return _0x178190;}})[_0x0af9('0x3e')](function(_0x46e2cc){logger[_0x0af9('0x24')](_0x0af9('0x4b'),_0x46e2cc);throw _0x46e2cc;});}return _0x178190;})[_0x0af9('0x1f')](respondWithResult(_0x2def50,0xc9))['catch'](handleError(_0x2def50,null));};exports[_0x0af9('0x1e')]=function(_0x3ec7e5,_0x2981bc){if(_0x3ec7e5['body']['id']){delete _0x3ec7e5[_0x0af9('0x44')]['id'];}return db[_0x0af9('0x29')][_0x0af9('0x42')]({'where':{'id':_0x3ec7e5[_0x0af9('0x3f')]['id']}})[_0x0af9('0x1f')](handleEntityNotFound(_0x2981bc,null))[_0x0af9('0x1f')](saveUpdates(_0x3ec7e5[_0x0af9('0x44')],null))[_0x0af9('0x1f')](respondWithResult(_0x2981bc,null))[_0x0af9('0x3e')](handleError(_0x2981bc,null));};exports[_0x0af9('0x20')]=function(_0x22e484,_0x4c1e22){return db[_0x0af9('0x29')][_0x0af9('0x42')]({'where':{'id':_0x22e484['params']['id']}})[_0x0af9('0x1f')](handleEntityNotFound(_0x4c1e22,null))[_0x0af9('0x1f')](removeEntity(_0x4c1e22,null))[_0x0af9('0x3e')](handleError(_0x4c1e22,null));};exports['preview']=function(_0x2afc93,_0x3db1cd){var _0x5aab5d=0xa;var _0x305e02=[_0x0af9('0x4c'),_0x0af9('0x4d'),_0x0af9('0x4e'),_0x0af9('0x4f')];var _0x160f6f={'SUM':_0x0af9('0x50'),'COUNT':_0x0af9('0x51'),'COUNT DISTINCT':'COUNT(DISTINCT\x20%s)','MAX':_0x0af9('0x52'),'MIN':_0x0af9('0x53'),'AVG':_0x0af9('0x54'),'GROUP_CONCAT':'GROUP_CONCAT(%s)','GROUP_CONCAT ASC':_0x0af9('0x55'),'GROUP_CONCAT DESC':_0x0af9('0x56')};var _0x2b4d73={'SEC_TO_TIME':_0x0af9('0x57'),'DATE':'DATE(%s)','HOUR':_0x0af9('0x58'),'ROUND':'ROUND(%s)','UNIX_TIMESTAMP':_0x0af9('0x59')};var _0x5a4bcc=function(_0x2e6929){return!_['includes'](['IS\x20NULL',_0x0af9('0x5a'),'IS\x20EMPTY',_0x0af9('0x5b')],_0x2e6929);};var _0x552e86=function(_0x2e4d3b){if(!_0x2e4d3b||!_0x2e4d3b[_0x0af9('0x5c')]['length']){return'';}for(var _0x19ef09='(',_0x2385fd=0x0;_0x2385fd<_0x2e4d3b[_0x0af9('0x5c')][_0x0af9('0x5d')];_0x2385fd+=0x1){_0x2385fd>0x0&&(_0x19ef09+='\x20'+_0x2e4d3b['operator']+'\x20');_0x19ef09+=_0x2e4d3b[_0x0af9('0x5c')][_0x2385fd][_0x0af9('0x5e')]?_0x552e86(_0x2e4d3b[_0x0af9('0x5c')][_0x2385fd][_0x0af9('0x5e')]):_0x2e4d3b[_0x0af9('0x5c')][_0x2385fd][_0x0af9('0x5f')]+'\x20'+_0x2e4d3b[_0x0af9('0x5c')][_0x2385fd][_0x0af9('0x60')]+(_0x5a4bcc(_0x2e4d3b[_0x0af9('0x5c')][_0x2385fd][_0x0af9('0x60')])?'\x20'+_0x2e4d3b['rules'][_0x2385fd]['value']:'');}return _0x19ef09+')';};var _0x2b9bc6={'where':{'id':_0x2afc93[_0x0af9('0x3f')]['id']}},_0x1e264b,_0x4c433b,_0x42d841,_0x1d709a,_0x68077d;_0x2b9bc6=_[_0x0af9('0x3a')]({},_0x2b9bc6,_0x2afc93[_0x0af9('0x3b')]);return db['AnalyticCustomReport'][_0x0af9('0x42')](_0x2b9bc6)[_0x0af9('0x1f')](function(_0x3c6b44){if(_0x3c6b44){_0x1e264b=_0x3c6b44;return _0x3c6b44[_0x0af9('0x61')]();}return null;})[_0x0af9('0x1f')](function(_0x379271){if(_0x379271){if(!_0x379271[_0x0af9('0x5d')]){throw new db[(_0x0af9('0x62'))][(_0x0af9('0x63'))]('Please\x20insert\x20at\x20least\x20one\x20field',0x193);}_0x4c433b=_0x379271;return db[_0x0af9('0x64')]['findAll']({'raw':!![]});}return null;})[_0x0af9('0x1f')](function(_0x4d620d){if(_0x4d620d){_0x42d841=_[_0x0af9('0x65')](_0x4d620d,'id');var _0x1b3ceb;var _0x28d327=squel['select']();_0x28d327[_0x0af9('0x66')](_0x1e264b['table']);for(var _0x55b727=0x0;_0x55b727<_0x4c433b[_0x0af9('0x5d')];_0x55b727+=0x1){_0x1b3ceb=_0x4c433b[_0x55b727][_0x0af9('0x67')]?_0x42d841[_0x4c433b[_0x55b727][_0x0af9('0x67')]][_0x0af9('0x68')]:_0x4c433b[_0x55b727]['field'];_0x1b3ceb=_0x4c433b[_0x55b727][_0x0af9('0x69')]?_[_0x0af9('0x6a')](_0x160f6f[_0x4c433b[_0x55b727][_0x0af9('0x69')]],'%s',_0x1b3ceb):_0x1b3ceb;_0x1b3ceb=_0x4c433b[_0x55b727]['format']?_[_0x0af9('0x6a')](_0x2b4d73[_0x4c433b[_0x55b727][_0x0af9('0x6b')]],'%s',_0x1b3ceb):_0x1b3ceb;if(_0x4c433b[_0x55b727][_0x0af9('0x6c')]){_0x28d327['group'](_0x1b3ceb);}_0x4c433b[_0x55b727][_0x0af9('0x6d')]&&_0x28d327[_0x0af9('0x35')](_0x1b3ceb,_0x4c433b[_0x55b727][_0x0af9('0x6d')]===_0x0af9('0x6e')?![]:!![]);_0x28d327['field'](_0x1b3ceb,_0x4c433b[_0x55b727]['alias']||_0x1b3ceb);}if(_0x1e264b['joins']){_0x1e264b[_0x0af9('0x6f')]=JSON[_0x0af9('0x70')](_0x1e264b[_0x0af9('0x6f')]);for(var _0x4e9707=0x0;_0x4e9707<_0x1e264b[_0x0af9('0x6f')][_0x0af9('0x5d')];_0x4e9707+=0x1){if(_0x1e264b[_0x0af9('0x6f')][_0x4e9707][_0x0af9('0x2b')]&&_[_0x0af9('0x71')](_0x305e02,_0x1e264b['joins'][_0x4e9707][_0x0af9('0x2b')])&&_0x1e264b['joins'][_0x4e9707]['parentKey']&&_0x1e264b['joins'][_0x4e9707][_0x0af9('0x72')]&&_0x1e264b[_0x0af9('0x6f')][_0x4e9707][_0x0af9('0x73')]){_0x28d327[_0x1e264b[_0x0af9('0x6f')][_0x4e9707]['type']](_0x1e264b[_0x0af9('0x6f')][_0x4e9707]['foreignTable'],null,util[_0x0af9('0x6b')](_0x0af9('0x74'),_0x1e264b[_0x0af9('0x75')],_0x1e264b[_0x0af9('0x6f')][_0x4e9707][_0x0af9('0x76')],_0x1e264b[_0x0af9('0x6f')][_0x4e9707][_0x0af9('0x72')],_0x1e264b[_0x0af9('0x6f')][_0x4e9707][_0x0af9('0x73')]));}}}if(_0x1e264b['conditions']){_0x1e264b[_0x0af9('0x77')]=JSON['parse'](_0x1e264b['conditions']);_0x28d327[_0x0af9('0x37')](_0x552e86(_0x1e264b[_0x0af9('0x77')]['group']));}_0x68077d=_0x28d327[_0x0af9('0x78')]();_0x28d327[_0x0af9('0x18')](_0x5aab5d);_0x28d327[_0x0af9('0x16')](0x0);logger['debug']('Limited\x20Query:',_0x28d327[_0x0af9('0x79')]());return dbH[_0x0af9('0x7a')]['query'](_0x28d327[_0x0af9('0x79')](),{'type':dbH[_0x0af9('0x7a')]['QueryTypes']['SELECT']});}})[_0x0af9('0x1f')](respondWithResult(_0x3db1cd,null))[_0x0af9('0x3e')](handleError(_0x3db1cd,null));};function runReport(_0x3aa6d2,_0x1344b7,_0x45f2cd){var _0x44de6a=_0x1344b7['name'];var _0x3ed1a2=0xa;var _0x51e6b2=[_0x0af9('0x4c'),_0x0af9('0x4d'),_0x0af9('0x4e'),_0x0af9('0x4f')];var _0x10e62a={'SUM':_0x0af9('0x50'),'COUNT':_0x0af9('0x51'),'COUNT DISTINCT':'COUNT(DISTINCT\x20%s)','MAX':_0x0af9('0x52'),'MIN':_0x0af9('0x53'),'AVG':_0x0af9('0x54'),'GROUP_CONCAT':_0x0af9('0x7b'),'GROUP_CONCAT ASC':_0x0af9('0x55'),'GROUP_CONCAT DESC':_0x0af9('0x56')};var _0x51cca0={'SEC_TO_TIME':_0x0af9('0x57'),'DATE':_0x0af9('0x7c'),'HOUR':'HOUR(%s)','ROUND':_0x0af9('0x7d'),'UNIX_TIMESTAMP':_0x0af9('0x59')};var _0x4eaf16=function(_0xd0c45f){return!_['includes']([_0x0af9('0x7e'),_0x0af9('0x5a'),_0x0af9('0x7f'),_0x0af9('0x5b')],_0xd0c45f);};var _0x7ccd4f=function(_0x2d9509){if(!_0x2d9509||!_0x2d9509['rules'][_0x0af9('0x5d')]){return'';}for(var _0x48c10b='(',_0x4efffa=0x0;_0x4efffa<_0x2d9509[_0x0af9('0x5c')]['length'];_0x4efffa+=0x1){_0x4efffa>0x0&&(_0x48c10b+='\x20'+_0x2d9509[_0x0af9('0x80')]+'\x20');_0x48c10b+=_0x2d9509[_0x0af9('0x5c')][_0x4efffa][_0x0af9('0x5e')]?_0x7ccd4f(_0x2d9509[_0x0af9('0x5c')][_0x4efffa][_0x0af9('0x5e')]):_0x2d9509[_0x0af9('0x5c')][_0x4efffa][_0x0af9('0x5f')]+'\x20'+_0x2d9509[_0x0af9('0x5c')][_0x4efffa]['condition']+(_0x4eaf16(_0x2d9509['rules'][_0x4efffa][_0x0af9('0x60')])?'\x20'+_0x2d9509[_0x0af9('0x5c')][_0x4efffa][_0x0af9('0x81')]:'');}return _0x48c10b+')';};var _0x2b6db2={'where':{'id':_0x3aa6d2['id']}},_0x3fe561,_0x35f550,_0x2e80d3,_0x88c0a3,_0x362f22;_0x2b6db2=_['merge']({},_0x2b6db2,_0x45f2cd);return db[_0x0af9('0x29')]['find'](_0x2b6db2)[_0x0af9('0x1f')](function(_0x4f7f4e){if(_0x4f7f4e){_0x3fe561=_0x4f7f4e;return _0x4f7f4e[_0x0af9('0x61')]();}return null;})[_0x0af9('0x1f')](function(_0x33fa4b){if(_0x33fa4b){if(!_0x33fa4b[_0x0af9('0x5d')]){throw new db[(_0x0af9('0x62'))][(_0x0af9('0x63'))](_0x0af9('0x82'),0x193);}_0x35f550=_0x33fa4b;return db[_0x0af9('0x64')]['findAll']({'raw':!![]});}return null;})[_0x0af9('0x1f')](function(_0x1d6e59){if(_0x1d6e59){_0x2e80d3=_['keyBy'](_0x1d6e59,'id');var _0xb2587c;var _0x3ebe5e=squel[_0x0af9('0x83')]();_0x3ebe5e[_0x0af9('0x66')](_0x3fe561[_0x0af9('0x75')]);for(var _0x697ddf=0x0;_0x697ddf<_0x35f550['length'];_0x697ddf+=0x1){_0xb2587c=_0x35f550[_0x697ddf]['MetricId']?_0x2e80d3[_0x35f550[_0x697ddf][_0x0af9('0x67')]][_0x0af9('0x68')]:_0x35f550[_0x697ddf][_0x0af9('0x5f')];_0xb2587c=_0x35f550[_0x697ddf]['function']?_[_0x0af9('0x6a')](_0x10e62a[_0x35f550[_0x697ddf][_0x0af9('0x69')]],'%s',_0xb2587c):_0xb2587c;_0xb2587c=_0x35f550[_0x697ddf][_0x0af9('0x6b')]?_[_0x0af9('0x6a')](_0x51cca0[_0x35f550[_0x697ddf]['format']],'%s',_0xb2587c):_0xb2587c;if(_0x35f550[_0x697ddf][_0x0af9('0x6c')]){_0x3ebe5e['group'](_0xb2587c);}_0x35f550[_0x697ddf][_0x0af9('0x6d')]&&_0x3ebe5e[_0x0af9('0x35')](_0xb2587c,_0x35f550[_0x697ddf][_0x0af9('0x6d')]==='DESC'?![]:!![]);_0x3ebe5e[_0x0af9('0x5f')](_0xb2587c,_0x35f550[_0x697ddf][_0x0af9('0x84')]||_0xb2587c);}if(_0x3fe561[_0x0af9('0x6f')]){_0x3fe561[_0x0af9('0x6f')]=JSON[_0x0af9('0x70')](_0x3fe561['joins']);for(var _0x2859d8=0x0;_0x2859d8<_0x3fe561['joins'][_0x0af9('0x5d')];_0x2859d8+=0x1){if(_0x3fe561[_0x0af9('0x6f')][_0x2859d8][_0x0af9('0x2b')]&&_[_0x0af9('0x71')](_0x51e6b2,_0x3fe561[_0x0af9('0x6f')][_0x2859d8][_0x0af9('0x2b')])&&_0x3fe561[_0x0af9('0x6f')][_0x2859d8][_0x0af9('0x76')]&&_0x3fe561[_0x0af9('0x6f')][_0x2859d8][_0x0af9('0x72')]&&_0x3fe561[_0x0af9('0x6f')][_0x2859d8][_0x0af9('0x73')]){_0x3ebe5e[_0x3fe561['joins'][_0x2859d8][_0x0af9('0x2b')]](_0x3fe561[_0x0af9('0x6f')][_0x2859d8][_0x0af9('0x72')],null,util['format']('%s.%s\x20=\x20%s.%s',_0x3fe561[_0x0af9('0x75')],_0x3fe561[_0x0af9('0x6f')][_0x2859d8][_0x0af9('0x76')],_0x3fe561[_0x0af9('0x6f')][_0x2859d8][_0x0af9('0x72')],_0x3fe561['joins'][_0x2859d8][_0x0af9('0x73')]));}}}if(_0x3fe561['conditions']){_0x3fe561[_0x0af9('0x77')]=JSON[_0x0af9('0x70')](_0x3fe561[_0x0af9('0x77')]);_0x3ebe5e['where'](_0x7ccd4f(_0x3fe561['conditions'][_0x0af9('0x5e')]));}_0x362f22=_0x3ebe5e['clone']();_0x3ebe5e[_0x0af9('0x18')](_0x3ed1a2);_0x3ebe5e['offset'](0x0);return;}})[_0x0af9('0x1f')](function(){if(_0x1344b7['output']===_0x0af9('0x85')){return null;}var _0x23ac14=_['merge'](_0x1344b7,{'name':_0x1344b7[_0x0af9('0x86')]||_0x1344b7[_0x0af9('0x26')]||_0x3fe561['name'],'basename':_0x44de6a,'savename':util[_0x0af9('0x6b')](_0x0af9('0x87'),_0x1344b7[_0x0af9('0x26')]||_0x3fe561['name'],require(_0x0af9('0x88'))[_0x0af9('0x89')](0x4),_0x1344b7[_0x0af9('0x8a')]||'csv'),'reportId':_0x3fe561['id'],'reportType':_0x0af9('0x8b')});return db[_0x0af9('0x8c')]['create'](_0x23ac14,{'raw':!![]});})[_0x0af9('0x1f')](function(_0x114ba1){if(_0x3fe561[_0x0af9('0x75')]===_0x0af9('0x8d')){_0x362f22[_0x0af9('0x37')](_0x3fe561['table']+_0x0af9('0x8e'),_0x1344b7[_0x0af9('0x8f')],_0x1344b7[_0x0af9('0x90')]);}else{_0x362f22['where'](_0x3fe561[_0x0af9('0x75')]+_0x0af9('0x91'),_0x1344b7[_0x0af9('0x8f')],_0x1344b7[_0x0af9('0x90')]);}if(_0x114ba1){logger[_0x0af9('0x92')](_0x0af9('0x93'),_0x362f22[_0x0af9('0x79')]());require(_0x0af9('0x94'))['fork'](path['join'](__dirname,_0x0af9('0x95'),_0x114ba1[_0x0af9('0x8a')]),[_0x114ba1['id'],_0x362f22['toString'](),path['join'](__dirname,'../../files/reports',_0x114ba1[_0x0af9('0x96')]),_0x44de6a]);return _0x114ba1;}else{var _0x32710f=squel[_0x0af9('0x83')]();_0x32710f[_0x0af9('0x66')]('('+_0x362f22['toString']()+')',_0x0af9('0x97'));_0x32710f[_0x0af9('0x5f')](_0x0af9('0x98'),_0x0af9('0x19'));_0x362f22['limit'](_0x1344b7[_0x0af9('0x18')]||_0x3ed1a2);_0x362f22[_0x0af9('0x16')](_0x1344b7[_0x0af9('0x16')]||0x0);return dbH[_0x0af9('0x7a')][_0x0af9('0x2e')](_0x32710f[_0x0af9('0x79')](),{'type':dbH[_0x0af9('0x7a')]['QueryTypes'][_0x0af9('0x99')]})[_0x0af9('0x1f')](function(_0x506a10){if(!_0x506a10[_0x0af9('0x5d')]){_0x88c0a3=0x0;}else{_0x88c0a3=_0x506a10[0x0]['count']||0x0;}return dbH['sequelize'][_0x0af9('0x2e')](_0x362f22[_0x0af9('0x79')](),{'type':dbH['sequelize']['QueryTypes'][_0x0af9('0x99')]});})[_0x0af9('0x1f')](function(_0x96eccc){return{'rows':_0x96eccc||[],'count':_0x88c0a3};});}});}exports[_0x0af9('0x9a')]=function(_0x4b9135,_0x554b9d){return runReport(_0x4b9135[_0x0af9('0x3f')],_0x4b9135[_0x0af9('0x2e')],_0x4b9135[_0x0af9('0x3b')])[_0x0af9('0x1f')](respondWithResult(_0x554b9d,null))[_0x0af9('0x3e')](handleError(_0x554b9d,null));};exports['runReport']=runReport;exports[_0x0af9('0x2e')]=function(_0x5fbae8,_0x1f1948){var _0x169164=0xa;var _0xc0df80=[_0x0af9('0x4c'),'left_join',_0x0af9('0x4e'),_0x0af9('0x4f')];var _0x2ad23a={'SUM':_0x0af9('0x50'),'COUNT':_0x0af9('0x51'),'COUNT DISTINCT':_0x0af9('0x9b'),'MAX':'MAX(%s)','MIN':'MIN(%s)','AVG':'AVG(%s)','GROUP_CONCAT':_0x0af9('0x7b'),'GROUP_CONCAT ASC':_0x0af9('0x55'),'GROUP_CONCAT DESC':_0x0af9('0x56')};var _0x4e3fba={'SEC_TO_TIME':_0x0af9('0x57'),'DATE':'DATE(%s)','HOUR':'HOUR(%s)','ROUND':_0x0af9('0x7d'),'UNIX_TIMESTAMP':'UNIX_TIMESTAMP(%s)'};var _0x5afe6d=function(_0x5e9eb3){return!_[_0x0af9('0x71')]([_0x0af9('0x7e'),_0x0af9('0x5a'),_0x0af9('0x7f'),_0x0af9('0x5b')],_0x5e9eb3);};var _0x4efad2=function(_0x1b6d20){if(!_0x1b6d20||!_0x1b6d20['rules']['length']){return'';}for(var _0x2a9679='(',_0x484766=0x0;_0x484766<_0x1b6d20['rules'][_0x0af9('0x5d')];_0x484766+=0x1){_0x484766>0x0&&(_0x2a9679+='\x20'+_0x1b6d20['operator']+'\x20');_0x2a9679+=_0x1b6d20[_0x0af9('0x5c')][_0x484766][_0x0af9('0x5e')]?_0x4efad2(_0x1b6d20[_0x0af9('0x5c')][_0x484766]['group']):_0x1b6d20[_0x0af9('0x5c')][_0x484766][_0x0af9('0x5f')]+'\x20'+_0x1b6d20[_0x0af9('0x5c')][_0x484766][_0x0af9('0x60')]+(_0x5afe6d(_0x1b6d20[_0x0af9('0x5c')][_0x484766][_0x0af9('0x60')])?'\x20'+_0x1b6d20['rules'][_0x484766][_0x0af9('0x81')]:'');}return _0x2a9679+')';};var _0x1221ca={'where':{'id':_0x5fbae8[_0x0af9('0x3f')]['id']}},_0x5c33cb,_0x518d88,_0x273dcd,_0x182934,_0x567adf;_0x1221ca=_['merge']({},_0x1221ca,_0x5fbae8[_0x0af9('0x3b')]);return db['AnalyticCustomReport']['find'](_0x1221ca)[_0x0af9('0x1f')](function(_0x1624e9){if(_0x1624e9){_0x5c33cb=_0x1624e9;return _0x1624e9[_0x0af9('0x61')]();}return null;})[_0x0af9('0x1f')](function(_0x2b39c0){if(_0x2b39c0){if(!_0x2b39c0['length']){throw new db[(_0x0af9('0x62'))][(_0x0af9('0x63'))](_0x0af9('0x82'),0x193);}_0x518d88=_0x2b39c0;return db[_0x0af9('0x64')]['findAll']({'raw':!![]});}return null;})[_0x0af9('0x1f')](function(_0x189487){if(_0x189487){_0x273dcd=_['keyBy'](_0x189487,'id');var _0x244a89;var _0x2a519e=squel[_0x0af9('0x83')]();_0x2a519e[_0x0af9('0x66')](_0x5c33cb[_0x0af9('0x75')]);for(var _0x176378=0x0;_0x176378<_0x518d88[_0x0af9('0x5d')];_0x176378+=0x1){_0x244a89=_0x518d88[_0x176378][_0x0af9('0x67')]?_0x273dcd[_0x518d88[_0x176378][_0x0af9('0x67')]]['metric']:_0x518d88[_0x176378][_0x0af9('0x5f')];_0x244a89=_0x518d88[_0x176378][_0x0af9('0x69')]?_[_0x0af9('0x6a')](_0x2ad23a[_0x518d88[_0x176378][_0x0af9('0x69')]],'%s',_0x244a89):_0x244a89;_0x244a89=_0x518d88[_0x176378][_0x0af9('0x6b')]?_['replace'](_0x4e3fba[_0x518d88[_0x176378]['format']],'%s',_0x244a89):_0x244a89;if(_0x518d88[_0x176378]['groupBy']){_0x2a519e[_0x0af9('0x5e')](_0x244a89);}_0x518d88[_0x176378][_0x0af9('0x6d')]&&_0x2a519e['order'](_0x244a89,_0x518d88[_0x176378][_0x0af9('0x6d')]===_0x0af9('0x6e')?![]:!![]);_0x2a519e['field'](_0x244a89,_0x518d88[_0x176378][_0x0af9('0x84')]||_0x244a89);}if(_0x5c33cb[_0x0af9('0x6f')]){_0x5c33cb[_0x0af9('0x6f')]=JSON[_0x0af9('0x70')](_0x5c33cb['joins']);for(var _0x2eb7c2=0x0;_0x2eb7c2<_0x5c33cb[_0x0af9('0x6f')]['length'];_0x2eb7c2+=0x1){if(_0x5c33cb['joins'][_0x2eb7c2][_0x0af9('0x2b')]&&_[_0x0af9('0x71')](_0xc0df80,_0x5c33cb[_0x0af9('0x6f')][_0x2eb7c2][_0x0af9('0x2b')])&&_0x5c33cb['joins'][_0x2eb7c2][_0x0af9('0x76')]&&_0x5c33cb[_0x0af9('0x6f')][_0x2eb7c2][_0x0af9('0x72')]&&_0x5c33cb[_0x0af9('0x6f')][_0x2eb7c2][_0x0af9('0x73')]){_0x2a519e[_0x5c33cb[_0x0af9('0x6f')][_0x2eb7c2][_0x0af9('0x2b')]](_0x5c33cb[_0x0af9('0x6f')][_0x2eb7c2][_0x0af9('0x72')],null,util['format'](_0x0af9('0x74'),_0x5c33cb[_0x0af9('0x75')],_0x5c33cb[_0x0af9('0x6f')][_0x2eb7c2][_0x0af9('0x76')],_0x5c33cb[_0x0af9('0x6f')][_0x2eb7c2][_0x0af9('0x72')],_0x5c33cb[_0x0af9('0x6f')][_0x2eb7c2]['foreignKey']));}}}if(_0x5c33cb[_0x0af9('0x77')]){_0x5c33cb[_0x0af9('0x77')]=JSON[_0x0af9('0x70')](_0x5c33cb['conditions']);_0x2a519e['where'](_0x4efad2(_0x5c33cb[_0x0af9('0x77')]['group']));}_0x567adf=_0x2a519e[_0x0af9('0x78')]();_0x2a519e[_0x0af9('0x18')](_0x169164);_0x2a519e[_0x0af9('0x16')](0x0);logger[_0x0af9('0x9c')]('Limited\x20Query:',_0x2a519e[_0x0af9('0x79')]());return dbH[_0x0af9('0x7a')][_0x0af9('0x2e')](_0x2a519e['toString'](),{'type':dbH['sequelize'][_0x0af9('0x9d')][_0x0af9('0x99')]});}})[_0x0af9('0x1f')](function(){return{'sql':_0x567adf[_0x0af9('0x79')]()};})[_0x0af9('0x1f')](respondWithResult(_0x1f1948,null))[_0x0af9('0x3e')](handleError(_0x1f1948,null));};
\ No newline at end of file
index 7dcf483..f3a53f8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1093=['rimraf','../../config/environment','./analyticCustomReport.attributes','exports','define','AnalyticCustomReport','analytics_custom_reports','lodash','util','api','moment','bluebird','request-promise','path'];(function(_0x523eb5,_0x48ff30){var _0x47a4a9=function(_0x537014){while(--_0x537014){_0x523eb5['push'](_0x523eb5['shift']());}};_0x47a4a9(++_0x48ff30);}(_0x1093,0xcb));var _0x3109=function(_0x34bf97,_0xc60f9d){_0x34bf97=_0x34bf97-0x0;var _0x292719=_0x1093[_0x34bf97];return _0x292719;};'use strict';var _=require(_0x3109('0x0'));var util=require(_0x3109('0x1'));var logger=require('../../config/logger')(_0x3109('0x2'));var moment=require(_0x3109('0x3'));var BPromise=require(_0x3109('0x4'));var rp=require(_0x3109('0x5'));var fs=require('fs');var path=require(_0x3109('0x6'));var rimraf=require(_0x3109('0x7'));var config=require(_0x3109('0x8'));var attributes=require(_0x3109('0x9'));module[_0x3109('0xa')]=function(_0x2bf32d,_0x5e7d7f){return _0x2bf32d[_0x3109('0xb')](_0x3109('0xc'),attributes,{'tableName':_0x3109('0xd'),'paranoid':!![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xdd4b=['./analyticCustomReport.attributes','exports','AnalyticCustomReport','analytics_custom_reports','lodash','../../config/logger','moment','request-promise','path','../../config/environment'];(function(_0x45d3f0,_0x4be53f){var _0x314b79=function(_0x563d32){while(--_0x563d32){_0x45d3f0['push'](_0x45d3f0['shift']());}};_0x314b79(++_0x4be53f);}(_0xdd4b,0xfe));var _0xbdd4=function(_0x2d7f0e,_0x3e6fbd){_0x2d7f0e=_0x2d7f0e-0x0;var _0x110b07=_0xdd4b[_0x2d7f0e];return _0x110b07;};'use strict';var _=require(_0xbdd4('0x0'));var util=require('util');var logger=require(_0xbdd4('0x1'))('api');var moment=require(_0xbdd4('0x2'));var BPromise=require('bluebird');var rp=require(_0xbdd4('0x3'));var fs=require('fs');var path=require(_0xbdd4('0x4'));var rimraf=require('rimraf');var config=require(_0xbdd4('0x5'));var attributes=require(_0xbdd4('0x6'));module[_0xbdd4('0x7')]=function(_0x42ce89,_0x40a7ce){return _0x42ce89['define'](_0xbdd4('0x8'),attributes,{'tableName':_0xbdd4('0x9'),'paranoid':!![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 3208305..888c272 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9429=['randomstring','../../config/utils','rpc','client','request','then','info','AnalyticCustomReport,\x20%s,\x20%s','request\x20sent','debug','AnalyticCustomReport,\x20%s,\x20%s,\x20%s','error','code','message','result','catch','lodash','util','moment','bluebird'];(function(_0x7a04f8,_0xc720e6){var _0x560a41=function(_0x6efb68){while(--_0x6efb68){_0x7a04f8['push'](_0x7a04f8['shift']());}};_0x560a41(++_0xc720e6);}(_0x9429,0x88));var _0x9942=function(_0xf3dfca,_0x187c40){_0xf3dfca=_0xf3dfca-0x0;var _0x170928=_0x9429[_0xf3dfca];return _0x170928;};'use strict';var _=require(_0x9942('0x0'));var util=require(_0x9942('0x1'));var moment=require(_0x9942('0x2'));var BPromise=require(_0x9942('0x3'));var rs=require(_0x9942('0x4'));var fs=require('fs');var Redis=require('ioredis');var db=require('../../mysqldb')['db'];var utils=require(_0x9942('0x5'));var logger=require('../../config/logger')(_0x9942('0x6'));var config=require('../../config/environment');var jayson=require('jayson/promise');var client=jayson[_0x9942('0x7')]['http']({'port':0x232a});function respondWithRpcPromise(_0x3a70f9,_0x3ff942,_0x599084){return new BPromise(function(_0x3391dd,_0x2c05d0){return client[_0x9942('0x8')](_0x3a70f9,_0x599084)[_0x9942('0x9')](function(_0x10d25e){logger[_0x9942('0xa')](_0x9942('0xb'),_0x3ff942,_0x9942('0xc'));logger[_0x9942('0xd')](_0x9942('0xe'),_0x3ff942,_0x9942('0xc'),JSON['stringify'](_0x10d25e));if(_0x10d25e['error']){if(_0x10d25e[_0x9942('0xf')][_0x9942('0x10')]===0x1f4){logger[_0x9942('0xf')](_0x9942('0xb'),_0x3ff942,_0x10d25e[_0x9942('0xf')][_0x9942('0x11')]);return _0x2c05d0(_0x10d25e[_0x9942('0xf')][_0x9942('0x11')]);}logger['error']('AnalyticCustomReport,\x20%s,\x20%s',_0x3ff942,_0x10d25e['error'][_0x9942('0x11')]);return _0x3391dd(_0x10d25e['error']['message']);}else{logger['info'](_0x9942('0xb'),_0x3ff942,_0x9942('0xc'));_0x3391dd(_0x10d25e[_0x9942('0x12')][_0x9942('0x11')]);}})[_0x9942('0x13')](function(_0x3b9128){logger[_0x9942('0xf')](_0x9942('0xb'),_0x3ff942,_0x3b9128);_0x2c05d0(_0x3b9128);});});}
\ No newline at end of file
+var _0x83f3=['client','http','request','then','info','request\x20sent','debug','AnalyticCustomReport,\x20%s,\x20%s,\x20%s','stringify','error','code','AnalyticCustomReport,\x20%s,\x20%s','message','result','lodash','util','bluebird','ioredis','../../mysqldb','../../config/logger','../../config/environment'];(function(_0x31e29a,_0x349c9b){var _0x32d892=function(_0x41cc86){while(--_0x41cc86){_0x31e29a['push'](_0x31e29a['shift']());}};_0x32d892(++_0x349c9b);}(_0x83f3,0xb6));var _0x383f=function(_0x50235d,_0x62e70d){_0x50235d=_0x50235d-0x0;var _0x1b4304=_0x83f3[_0x50235d];return _0x1b4304;};'use strict';var _=require(_0x383f('0x0'));var util=require(_0x383f('0x1'));var moment=require('moment');var BPromise=require(_0x383f('0x2'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x383f('0x3'));var db=require(_0x383f('0x4'))['db'];var utils=require('../../config/utils');var logger=require(_0x383f('0x5'))('rpc');var config=require(_0x383f('0x6'));var jayson=require('jayson/promise');var client=jayson[_0x383f('0x7')][_0x383f('0x8')]({'port':0x232a});function respondWithRpcPromise(_0x144123,_0x374eb9,_0x469d7){return new BPromise(function(_0x14eee2,_0x2062d2){return client[_0x383f('0x9')](_0x144123,_0x469d7)[_0x383f('0xa')](function(_0x5bd2c2){logger[_0x383f('0xb')]('AnalyticCustomReport,\x20%s,\x20%s',_0x374eb9,_0x383f('0xc'));logger[_0x383f('0xd')](_0x383f('0xe'),_0x374eb9,'request\x20sent',JSON[_0x383f('0xf')](_0x5bd2c2));if(_0x5bd2c2[_0x383f('0x10')]){if(_0x5bd2c2[_0x383f('0x10')][_0x383f('0x11')]===0x1f4){logger['error'](_0x383f('0x12'),_0x374eb9,_0x5bd2c2['error'][_0x383f('0x13')]);return _0x2062d2(_0x5bd2c2[_0x383f('0x10')][_0x383f('0x13')]);}logger['error'](_0x383f('0x12'),_0x374eb9,_0x5bd2c2['error']['message']);return _0x14eee2(_0x5bd2c2[_0x383f('0x10')][_0x383f('0x13')]);}else{logger[_0x383f('0xb')]('AnalyticCustomReport,\x20%s,\x20%s',_0x374eb9,_0x383f('0xc'));_0x14eee2(_0x5bd2c2[_0x383f('0x14')][_0x383f('0x13')]);}})['catch'](function(_0x495c62){logger[_0x383f('0x10')]('AnalyticCustomReport,\x20%s,\x20%s',_0x374eb9,_0x495c62);_0x2062d2(_0x495c62);});});}
\ No newline at end of file
index 7f2b3ca..801292b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1de5=['multer','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','./analyticCustomReport.controller','index','get','/:id','isAuthenticated','show','/:id/preview','preview','/:id/query','query','post','create','put','update','delete','destroy','exports'];(function(_0x3ac876,_0x6a8b1f){var _0x439fe2=function(_0x481f27){while(--_0x481f27){_0x3ac876['push'](_0x3ac876['shift']());}};_0x439fe2(++_0x6a8b1f);}(_0x1de5,0x177));var _0x51de=function(_0x2283dc,_0x2fcfc5){_0x2283dc=_0x2283dc-0x0;var _0x16db90=_0x1de5[_0x2283dc];return _0x16db90;};'use strict';var multer=require(_0x51de('0x0'));var util=require(_0x51de('0x1'));var path=require(_0x51de('0x2'));var timeout=require(_0x51de('0x3'));var express=require(_0x51de('0x4'));var router=express[_0x51de('0x5')]();var fs_extra=require(_0x51de('0x6'));var auth=require(_0x51de('0x7'));var interaction=require('../../components/interaction/service');var config=require('../../config/environment');var controller=require(_0x51de('0x8'));router['get']('/',auth['isAuthenticated'](),controller[_0x51de('0x9')]);router[_0x51de('0xa')](_0x51de('0xb'),auth[_0x51de('0xc')](),controller[_0x51de('0xd')]);router[_0x51de('0xa')](_0x51de('0xe'),auth[_0x51de('0xc')](),controller[_0x51de('0xf')]);router[_0x51de('0xa')]('/:id/run',auth['isAuthenticated'](),controller['run']);router[_0x51de('0xa')](_0x51de('0x10'),auth[_0x51de('0xc')](),controller[_0x51de('0x11')]);router[_0x51de('0x12')]('/',auth[_0x51de('0xc')](),controller[_0x51de('0x13')]);router[_0x51de('0x14')](_0x51de('0xb'),auth[_0x51de('0xc')](),controller[_0x51de('0x15')]);router[_0x51de('0x16')](_0x51de('0xb'),auth[_0x51de('0xc')](),controller[_0x51de('0x17')]);module[_0x51de('0x18')]=router;
\ No newline at end of file
+var _0x9a37=['run','/:id/query','query','post','delete','destroy','exports','multer','path','connect-timeout','express','Router','fs-extra','../../components/interaction/service','./analyticCustomReport.controller','get','isAuthenticated','/:id','/:id/preview','preview','/:id/run'];(function(_0x3c81b5,_0x3f5ed7){var _0x5888c4=function(_0x4e65b0){while(--_0x4e65b0){_0x3c81b5['push'](_0x3c81b5['shift']());}};_0x5888c4(++_0x3f5ed7);}(_0x9a37,0x1ea));var _0x79a3=function(_0x309a5e,_0x1ec246){_0x309a5e=_0x309a5e-0x0;var _0x1d21f1=_0x9a37[_0x309a5e];return _0x1d21f1;};'use strict';var multer=require(_0x79a3('0x0'));var util=require('util');var path=require(_0x79a3('0x1'));var timeout=require(_0x79a3('0x2'));var express=require(_0x79a3('0x3'));var router=express[_0x79a3('0x4')]();var fs_extra=require(_0x79a3('0x5'));var auth=require('../../components/auth/service');var interaction=require(_0x79a3('0x6'));var config=require('../../config/environment');var controller=require(_0x79a3('0x7'));router[_0x79a3('0x8')]('/',auth[_0x79a3('0x9')](),controller['index']);router['get'](_0x79a3('0xa'),auth[_0x79a3('0x9')](),controller['show']);router[_0x79a3('0x8')](_0x79a3('0xb'),auth[_0x79a3('0x9')](),controller[_0x79a3('0xc')]);router['get'](_0x79a3('0xd'),auth['isAuthenticated'](),controller[_0x79a3('0xe')]);router[_0x79a3('0x8')](_0x79a3('0xf'),auth[_0x79a3('0x9')](),controller[_0x79a3('0x10')]);router[_0x79a3('0x11')]('/',auth[_0x79a3('0x9')](),controller['create']);router['put'](_0x79a3('0xa'),auth[_0x79a3('0x9')](),controller['update']);router[_0x79a3('0x12')]('/:id',auth[_0x79a3('0x9')](),controller[_0x79a3('0x13')]);module[_0x79a3('0x14')]=router;
\ No newline at end of file
index d88358f..997cf95 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5d17=['sequelize','exports','STRING','TEXT'];(function(_0x5d0fde,_0x44010f){var _0x513570=function(_0x575a5f){while(--_0x575a5f){_0x5d0fde['push'](_0x5d0fde['shift']());}};_0x513570(++_0x44010f);}(_0x5d17,0x114));var _0x75d1=function(_0x5be8ab,_0x4000a6){_0x5be8ab=_0x5be8ab-0x0;var _0x35914d=_0x5d17[_0x5be8ab];return _0x35914d;};'use strict';var Sequelize=require(_0x75d1('0x0'));module[_0x75d1('0x1')]={'name':{'type':Sequelize['STRING'],'allowNull':![]},'description':{'type':Sequelize['STRING']},'parent':{'type':Sequelize[_0x75d1('0x2')]},'table':{'type':Sequelize[_0x75d1('0x2')]},'conditions':{'type':Sequelize[_0x75d1('0x3')]},'joins':{'type':Sequelize['TEXT']}};
\ No newline at end of file
+var _0x8ef6=['STRING','TEXT','sequelize','exports'];(function(_0x20a584,_0xe384a5){var _0x4b41a8=function(_0x2127c6){while(--_0x2127c6){_0x20a584['push'](_0x20a584['shift']());}};_0x4b41a8(++_0xe384a5);}(_0x8ef6,0xf2));var _0x68ef=function(_0x3bf336,_0x1803a3){_0x3bf336=_0x3bf336-0x0;var _0x512d07=_0x8ef6[_0x3bf336];return _0x512d07;};'use strict';var Sequelize=require(_0x68ef('0x0'));module[_0x68ef('0x1')]={'name':{'type':Sequelize[_0x68ef('0x2')],'allowNull':![]},'description':{'type':Sequelize[_0x68ef('0x2')]},'parent':{'type':Sequelize[_0x68ef('0x2')]},'table':{'type':Sequelize[_0x68ef('0x2')]},'conditions':{'type':Sequelize[_0x68ef('0x3')]},'joins':{'type':Sequelize['TEXT']}};
\ No newline at end of file
index a8843da..9bce996 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2675=['AnalyticDefaultReport','rawAttributes','fieldName','type','key','model','query','keys','intersection','attributes','fields','length','nolimit','sort','where','filters','pick','VIRTUAL','merge','options','includeAll','include','catch','params','create','body','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','Reports','UserProfileSection','find','userProfileId','UserProfileResource','error','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','update','preview','join','left_join','cross_join','SUM(%s)','COUNT(%s)','COUNT(DISTINCT\x20%s)','MAX(%s)','AVG(%s)','GROUP_CONCAT(%s)','GROUP_CONCAT(%s\x20ORDER\x20BY\x20%s\x20ASC)','GROUP_CONCAT(%s\x20ORDER\x20BY\x20%s\x20DESC)','DATE(%s)','ROUND(%s)','UNIX_TIMESTAMP(%s)','includes','IS\x20NULL','IS\x20NOT\x20NULL','IS\x20NOT\x20EMPTY','rules','operator','group','condition','value','getFields','ValidationErrorItem','Please\x20insert\x20at\x20least\x20one\x20field','AnalyticMetric','findAll','select','table','MetricId','metric','field','function','replace','format','groupBy','order','orderBy','DESC','joins','parentKey','foreignTable','foreignKey','%s.%s\x20=\x20%s.%s','conditions','parse','clone','toString','sequelize','QueryTypes','right_join','SEC_TO_TIME(%s)','IS\x20EMPTY','Sequelize','keyBy','from','alias','output','randomstring','generate','csv','default','AnalyticExtractedReport','cdr','.calldate\x20BETWEEN\x20?\x20AND\x20?','startDate','endDate','info','Run\x20Query:','child_process','fork','../../files/reports','savename','COUNT(*)','SELECT','run','runReport','MIN(%s)','debug','eml-format','request-promise','moment','mustache','util','sox','to-csv','ejs','fs-extra','lodash','squel','jsforce','desk.js','querystring','ioredis','../../components/auth/service','../../components/parsers/qs','../../config/license/hardware','api','../../config/environment','../../config/license/util','../../mysqldb','dbH','sendStatus','status','end','json','offset','undefined','limit','count','set','Content-Range','apply','reject','save','destroy','then','get','DefaultReports','name','map'];(function(_0x37beb4,_0x4f207b){var _0x130c12=function(_0x1e8cf1){while(--_0x1e8cf1){_0x37beb4['push'](_0x37beb4['shift']());}};_0x130c12(++_0x4f207b);}(_0x2675,0x75));var _0x5267=function(_0x40cab6,_0x2129c9){_0x40cab6=_0x40cab6-0x0;var _0x4c685c=_0x2675[_0x40cab6];return _0x4c685c;};'use strict';var emlformat=require(_0x5267('0x0'));var rimraf=require('rimraf');var zipdir=require('zip-dir');var jsonpatch=require('fast-json-patch');var rp=require(_0x5267('0x1'));var moment=require(_0x5267('0x2'));var BPromise=require('bluebird');var Mustache=require(_0x5267('0x3'));var util=require(_0x5267('0x4'));var path=require('path');var sox=require(_0x5267('0x5'));var csv=require(_0x5267('0x6'));var ejs=require(_0x5267('0x7'));var fs=require('fs');var fs_extra=require(_0x5267('0x8'));var _=require(_0x5267('0x9'));var squel=require(_0x5267('0xa'));var crypto=require('crypto');var jsforce=require(_0x5267('0xb'));var deskjs=require(_0x5267('0xc'));var toCsv=require('to-csv');var querystring=require(_0x5267('0xd'));var Papa=require('papaparse');var Redis=require(_0x5267('0xe'));var authService=require(_0x5267('0xf'));var qs=require(_0x5267('0x10'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x5267('0x11'));var logger=require('../../config/logger')(_0x5267('0x12'));var utils=require('../../config/utils');var config=require(_0x5267('0x13'));var licenseUtil=require(_0x5267('0x14'));var db=require(_0x5267('0x15'))['db'];var dbH=require(_0x5267('0x15'))[_0x5267('0x16')];function respondWithStatusCode(_0x1171b9,_0x20785c){_0x20785c=_0x20785c||0xcc;return function(_0x36dc17){if(_0x36dc17){return _0x1171b9[_0x5267('0x17')](_0x20785c);}return _0x1171b9[_0x5267('0x18')](_0x20785c)[_0x5267('0x19')]();};}function respondWithResult(_0x29349a,_0x3e2bab){_0x3e2bab=_0x3e2bab||0xc8;return function(_0x548040){if(_0x548040){return _0x29349a['status'](_0x3e2bab)[_0x5267('0x1a')](_0x548040);}};}function respondWithFilteredResult(_0x40d897,_0x38a147){return function(_0x3f5344){if(_0x3f5344){var _0x46b2c2=typeof _0x38a147[_0x5267('0x1b')]===_0x5267('0x1c')&&typeof _0x38a147[_0x5267('0x1d')]===_0x5267('0x1c');var _0xb1c97a=_0x3f5344[_0x5267('0x1e')];var _0x1ab03=_0x46b2c2?0x0:_0x38a147['offset'];var _0x18f32e=_0x46b2c2?_0x3f5344[_0x5267('0x1e')]:_0x38a147['offset']+_0x38a147[_0x5267('0x1d')];var _0x56733e;if(_0x18f32e>=_0xb1c97a){_0x18f32e=_0xb1c97a;_0x56733e=0xc8;}else{_0x56733e=0xce;}_0x40d897[_0x5267('0x18')](_0x56733e);return _0x40d897[_0x5267('0x1f')](_0x5267('0x20'),_0x1ab03+'-'+_0x18f32e+'/'+_0xb1c97a)[_0x5267('0x1a')](_0x3f5344);}return null;};}function patchUpdates(_0x5ca9c6){return function(_0x4dd637){try{jsonpatch[_0x5267('0x21')](_0x4dd637,_0x5ca9c6,!![]);}catch(_0x5aebdd){return BPromise[_0x5267('0x22')](_0x5aebdd);}return _0x4dd637[_0x5267('0x23')]();};}function saveUpdates(_0x3b53ac,_0x56dd95){return function(_0x499f19){if(_0x499f19){return _0x499f19['update'](_0x3b53ac)['then'](function(_0x5ea6a6){return _0x5ea6a6;});}return null;};}function removeEntity(_0x26c7f8,_0x399e64){return function(_0x2d761d){if(_0x2d761d){return _0x2d761d[_0x5267('0x24')]()[_0x5267('0x25')](function(){var _0x40d1be=_0x2d761d[_0x5267('0x26')]({'plain':!![]});var _0x220e03=_0x5267('0x27');return db['UserProfileResource']['destroy']({'where':{'type':_0x220e03,'resourceId':_0x40d1be['id']}})[_0x5267('0x25')](function(){return _0x2d761d;});})[_0x5267('0x25')](function(){_0x26c7f8['status'](0xcc)[_0x5267('0x19')]();});}};}function handleEntityNotFound(_0x52504e,_0x4d7c2a){return function(_0x43e7e7){if(!_0x43e7e7){_0x52504e[_0x5267('0x17')](0x194);}return _0x43e7e7;};}function handleError(_0x1f33b7,_0x2d2ace){_0x2d2ace=_0x2d2ace||0x1f4;return function(_0x33c431){logger['error'](_0x33c431['stack']);if(_0x33c431[_0x5267('0x28')]){delete _0x33c431[_0x5267('0x28')];}_0x1f33b7[_0x5267('0x18')](_0x2d2ace)['send'](_0x33c431);};}exports['index']=function(_0xbe7922,_0x3ef2a8){var _0x1fa725={},_0x5bec7e={},_0x59b091={'count':0x0,'rows':[]};var _0x2249a1=_[_0x5267('0x29')](db[_0x5267('0x2a')][_0x5267('0x2b')],function(_0x5bbb83){return{'name':_0x5bbb83[_0x5267('0x2c')],'type':_0x5bbb83[_0x5267('0x2d')][_0x5267('0x2e')]};});_0x5bec7e[_0x5267('0x2f')]=_[_0x5267('0x29')](_0x2249a1,_0x5267('0x28'));_0x5bec7e[_0x5267('0x30')]=_[_0x5267('0x31')](_0xbe7922['query']);_0x5bec7e['filters']=_[_0x5267('0x32')](_0x5bec7e['model'],_0x5bec7e[_0x5267('0x30')]);_0x1fa725[_0x5267('0x33')]=_[_0x5267('0x32')](_0x5bec7e[_0x5267('0x2f')],qs['fields'](_0xbe7922[_0x5267('0x30')][_0x5267('0x34')]));_0x1fa725[_0x5267('0x33')]=_0x1fa725[_0x5267('0x33')][_0x5267('0x35')]?_0x1fa725[_0x5267('0x33')]:_0x5bec7e[_0x5267('0x2f')];if(!_0xbe7922[_0x5267('0x30')]['hasOwnProperty'](_0x5267('0x36'))){_0x1fa725['limit']=qs[_0x5267('0x1d')](_0xbe7922[_0x5267('0x30')][_0x5267('0x1d')]);_0x1fa725[_0x5267('0x1b')]=qs[_0x5267('0x1b')](_0xbe7922[_0x5267('0x30')][_0x5267('0x1b')]);}_0x1fa725['order']=qs[_0x5267('0x37')](_0xbe7922[_0x5267('0x30')][_0x5267('0x37')]);_0x1fa725[_0x5267('0x38')]=qs[_0x5267('0x39')](_[_0x5267('0x3a')](_0xbe7922[_0x5267('0x30')],_0x5bec7e['filters']),_0x2249a1);if(_0xbe7922[_0x5267('0x30')]['filter']){_0x1fa725[_0x5267('0x38')]=_['merge'](_0x1fa725['where'],{'$or':_['map'](_0x2249a1,function(_0x46bfcc){if(_0x46bfcc['type']!==_0x5267('0x3b')){var _0x146476={};_0x146476[_0x46bfcc[_0x5267('0x28')]]={'$like':'%'+_0xbe7922[_0x5267('0x30')]['filter']+'%'};return _0x146476;}})});}_0x1fa725=_[_0x5267('0x3c')]({},_0x1fa725,_0xbe7922[_0x5267('0x3d')]);var _0x588edf={'where':_0x1fa725['where']};return db[_0x5267('0x2a')]['count'](_0x588edf)[_0x5267('0x25')](function(_0x1cf94a){_0x59b091[_0x5267('0x1e')]=_0x1cf94a;if(_0xbe7922[_0x5267('0x30')][_0x5267('0x3e')]){_0x1fa725[_0x5267('0x3f')]=[{'all':!![]}];}return db[_0x5267('0x2a')]['findAll'](_0x1fa725);})['then'](function(_0x28ea4a){_0x59b091['rows']=_0x28ea4a;return _0x59b091;})[_0x5267('0x25')](respondWithFilteredResult(_0x3ef2a8,_0x1fa725))[_0x5267('0x40')](handleError(_0x3ef2a8,null));};exports['show']=function(_0x1fa925,_0xc764cd){var _0x299a13={'raw':!![],'where':{'id':_0x1fa925[_0x5267('0x41')]['id']}},_0x161fed={};_0x161fed[_0x5267('0x2f')]=_[_0x5267('0x31')](db[_0x5267('0x2a')][_0x5267('0x2b')]);_0x161fed['query']=_[_0x5267('0x31')](_0x1fa925[_0x5267('0x30')]);_0x161fed[_0x5267('0x39')]=_[_0x5267('0x32')](_0x161fed[_0x5267('0x2f')],_0x161fed['query']);_0x299a13[_0x5267('0x33')]=_['intersection'](_0x161fed[_0x5267('0x2f')],qs['fields'](_0x1fa925['query'][_0x5267('0x34')]));_0x299a13['attributes']=_0x299a13[_0x5267('0x33')][_0x5267('0x35')]?_0x299a13[_0x5267('0x33')]:_0x161fed[_0x5267('0x2f')];if(_0x1fa925['query'][_0x5267('0x3e')]){_0x299a13['include']=[{'all':!![]}];}_0x299a13=_['merge']({},_0x299a13,_0x1fa925[_0x5267('0x3d')]);return db[_0x5267('0x2a')]['find'](_0x299a13)['then'](handleEntityNotFound(_0xc764cd,null))[_0x5267('0x25')](respondWithResult(_0xc764cd,null))[_0x5267('0x40')](handleError(_0xc764cd,null));};exports[_0x5267('0x42')]=function(_0x1b5a7e,_0x1c2803){return db[_0x5267('0x2a')][_0x5267('0x42')](_0x1b5a7e[_0x5267('0x43')],{})[_0x5267('0x25')](function(_0x2cfe09){var _0x21b040=_0x1b5a7e[_0x5267('0x44')][_0x5267('0x26')]({'plain':!![]});if(!_0x21b040)throw new Error(_0x5267('0x45'));if(_0x21b040['role']===_0x5267('0x44')){var _0x466d46=_0x2cfe09[_0x5267('0x26')]({'plain':!![]});var _0x4f0148=_0x5267('0x46');return db[_0x5267('0x47')][_0x5267('0x48')]({'where':{'name':_0x4f0148,'userProfileId':_0x21b040[_0x5267('0x49')]},'raw':!![]})[_0x5267('0x25')](function(_0x1457cf){if(_0x1457cf&&_0x1457cf['autoAssociation']===0x0){return db[_0x5267('0x4a')]['create']({'name':_0x466d46[_0x5267('0x28')],'resourceId':_0x466d46['id'],'type':_0x5267('0x27'),'sectionId':_0x1457cf['id']},{})[_0x5267('0x25')](function(){return _0x2cfe09;});}else{return _0x2cfe09;}})[_0x5267('0x40')](function(_0x91b932){logger[_0x5267('0x4b')](_0x5267('0x4c'),_0x91b932);throw _0x91b932;});}return _0x2cfe09;})['then'](respondWithResult(_0x1c2803,0xc9))['catch'](handleError(_0x1c2803,null));};exports[_0x5267('0x4d')]=function(_0x15b5c9,_0x566b6f){if(_0x15b5c9[_0x5267('0x43')]['id']){delete _0x15b5c9['body']['id'];}return db['AnalyticDefaultReport'][_0x5267('0x48')]({'where':{'id':_0x15b5c9[_0x5267('0x41')]['id']}})[_0x5267('0x25')](handleEntityNotFound(_0x566b6f,null))[_0x5267('0x25')](saveUpdates(_0x15b5c9[_0x5267('0x43')],null))[_0x5267('0x25')](respondWithResult(_0x566b6f,null))[_0x5267('0x40')](handleError(_0x566b6f,null));};exports[_0x5267('0x24')]=function(_0xf0b5a9,_0x43d254){return db['AnalyticDefaultReport'][_0x5267('0x48')]({'where':{'id':_0xf0b5a9[_0x5267('0x41')]['id']}})[_0x5267('0x25')](handleEntityNotFound(_0x43d254,null))[_0x5267('0x25')](removeEntity(_0x43d254,null))[_0x5267('0x40')](handleError(_0x43d254,null));};exports[_0x5267('0x4e')]=function(_0x552211,_0x195575){var _0x5ad1ce=0xa;var _0x1522d6=[_0x5267('0x4f'),_0x5267('0x50'),'right_join',_0x5267('0x51')];var _0x161dab={'SUM':_0x5267('0x52'),'COUNT':_0x5267('0x53'),'COUNT DISTINCT':_0x5267('0x54'),'MAX':_0x5267('0x55'),'MIN':'MIN(%s)','AVG':_0x5267('0x56'),'GROUP_CONCAT':_0x5267('0x57'),'GROUP_CONCAT ASC':_0x5267('0x58'),'GROUP_CONCAT DESC':_0x5267('0x59')};var _0x51220c={'SEC_TO_TIME':'SEC_TO_TIME(%s)','DATE':_0x5267('0x5a'),'HOUR':'HOUR(%s)','ROUND':_0x5267('0x5b'),'UNIX_TIMESTAMP':_0x5267('0x5c')};var _0x4e3771=function(_0x489780){return!_[_0x5267('0x5d')]([_0x5267('0x5e'),_0x5267('0x5f'),'IS\x20EMPTY',_0x5267('0x60')],_0x489780);};var _0xc88193=function(_0x293e61){if(!_0x293e61||!_0x293e61[_0x5267('0x61')]['length']){return'';}for(var _0x5a87b5='(',_0x540ab8=0x0;_0x540ab8<_0x293e61[_0x5267('0x61')][_0x5267('0x35')];_0x540ab8+=0x1){_0x540ab8>0x0&&(_0x5a87b5+='\x20'+_0x293e61[_0x5267('0x62')]+'\x20');_0x5a87b5+=_0x293e61[_0x5267('0x61')][_0x540ab8][_0x5267('0x63')]?_0xc88193(_0x293e61[_0x5267('0x61')][_0x540ab8][_0x5267('0x63')]):_0x293e61[_0x5267('0x61')][_0x540ab8]['field']+'\x20'+_0x293e61[_0x5267('0x61')][_0x540ab8][_0x5267('0x64')]+(_0x4e3771(_0x293e61['rules'][_0x540ab8][_0x5267('0x64')])?'\x20'+_0x293e61[_0x5267('0x61')][_0x540ab8][_0x5267('0x65')]:'');}return _0x5a87b5+')';};var _0x1b6dd7={'where':{'id':_0x552211[_0x5267('0x41')]['id']}},_0x19adf5,_0xde1ecd,_0x4915f4,_0x2ca259,_0x726410;_0x1b6dd7=_[_0x5267('0x3c')]({},_0x1b6dd7,_0x552211[_0x5267('0x3d')]);return db[_0x5267('0x2a')]['find'](_0x1b6dd7)[_0x5267('0x25')](function(_0x87465){if(_0x87465){_0x19adf5=_0x87465;return _0x87465[_0x5267('0x66')]();}return null;})[_0x5267('0x25')](function(_0x1a4016){if(_0x1a4016){if(!_0x1a4016[_0x5267('0x35')]){throw new db['Sequelize'][(_0x5267('0x67'))](_0x5267('0x68'),0x193);}_0xde1ecd=_0x1a4016;return db[_0x5267('0x69')][_0x5267('0x6a')]({'raw':!![]});}return null;})['then'](function(_0x516e6e){if(_0x516e6e){_0x4915f4=_['keyBy'](_0x516e6e,'id');var _0x910f97;var _0x5cca85=squel[_0x5267('0x6b')]();_0x5cca85['from'](_0x19adf5[_0x5267('0x6c')]);for(var _0x1150ba=0x0;_0x1150ba<_0xde1ecd[_0x5267('0x35')];_0x1150ba+=0x1){_0x910f97=_0xde1ecd[_0x1150ba][_0x5267('0x6d')]?_0x4915f4[_0xde1ecd[_0x1150ba][_0x5267('0x6d')]][_0x5267('0x6e')]:_0xde1ecd[_0x1150ba][_0x5267('0x6f')];_0x910f97=_0xde1ecd[_0x1150ba][_0x5267('0x70')]?_['replace'](_0x161dab[_0xde1ecd[_0x1150ba]['function']],'%s',_0x910f97):_0x910f97;_0x910f97=_0xde1ecd[_0x1150ba]['format']?_[_0x5267('0x71')](_0x51220c[_0xde1ecd[_0x1150ba][_0x5267('0x72')]],'%s',_0x910f97):_0x910f97;if(_0xde1ecd[_0x1150ba][_0x5267('0x73')]){_0x5cca85[_0x5267('0x63')](_0x910f97);}_0xde1ecd[_0x1150ba]['orderBy']&&_0x5cca85[_0x5267('0x74')](_0x910f97,_0xde1ecd[_0x1150ba][_0x5267('0x75')]===_0x5267('0x76')?![]:!![]);_0x5cca85[_0x5267('0x6f')](_0x910f97,_0xde1ecd[_0x1150ba]['alias']||_0x910f97);}if(_0x19adf5[_0x5267('0x77')]){_0x19adf5[_0x5267('0x77')]=JSON['parse'](_0x19adf5[_0x5267('0x77')]);for(var _0x268805=0x0;_0x268805<_0x19adf5['joins']['length'];_0x268805+=0x1){if(_0x19adf5[_0x5267('0x77')][_0x268805][_0x5267('0x2d')]&&_['includes'](_0x1522d6,_0x19adf5['joins'][_0x268805][_0x5267('0x2d')])&&_0x19adf5[_0x5267('0x77')][_0x268805][_0x5267('0x78')]&&_0x19adf5[_0x5267('0x77')][_0x268805][_0x5267('0x79')]&&_0x19adf5['joins'][_0x268805][_0x5267('0x7a')]){_0x5cca85[_0x19adf5[_0x5267('0x77')][_0x268805]['type']](_0x19adf5[_0x5267('0x77')][_0x268805][_0x5267('0x79')],null,util[_0x5267('0x72')](_0x5267('0x7b'),_0x19adf5[_0x5267('0x6c')],_0x19adf5[_0x5267('0x77')][_0x268805][_0x5267('0x78')],_0x19adf5[_0x5267('0x77')][_0x268805]['foreignTable'],_0x19adf5['joins'][_0x268805][_0x5267('0x7a')]));}}}if(_0x19adf5[_0x5267('0x7c')]){_0x19adf5[_0x5267('0x7c')]=JSON[_0x5267('0x7d')](_0x19adf5['conditions']);_0x5cca85[_0x5267('0x38')](_0xc88193(_0x19adf5['conditions'][_0x5267('0x63')]));}_0x726410=_0x5cca85[_0x5267('0x7e')]();_0x5cca85[_0x5267('0x1d')](_0x5ad1ce);_0x5cca85[_0x5267('0x1b')](0x0);logger['debug']('Limited\x20Query:',_0x5cca85[_0x5267('0x7f')]());return dbH[_0x5267('0x80')][_0x5267('0x30')](_0x5cca85[_0x5267('0x7f')](),{'type':dbH[_0x5267('0x80')][_0x5267('0x81')]['SELECT']});}})[_0x5267('0x25')](respondWithResult(_0x195575,null))['catch'](handleError(_0x195575,null));};function runReport(_0x418a03,_0x5b8026,_0x2c2b95){var _0x20888d=_0x5b8026[_0x5267('0x28')];var _0x87aa90=0xa;var _0x164cc1=[_0x5267('0x4f'),_0x5267('0x50'),_0x5267('0x82'),_0x5267('0x51')];var _0x28e4b6={'SUM':_0x5267('0x52'),'COUNT':'COUNT(%s)','COUNT DISTINCT':_0x5267('0x54'),'MAX':_0x5267('0x55'),'MIN':'MIN(%s)','AVG':_0x5267('0x56'),'GROUP_CONCAT':_0x5267('0x57'),'GROUP_CONCAT ASC':_0x5267('0x58'),'GROUP_CONCAT DESC':_0x5267('0x59')};var _0xd18795={'SEC_TO_TIME':_0x5267('0x83'),'DATE':_0x5267('0x5a'),'HOUR':'HOUR(%s)','ROUND':_0x5267('0x5b'),'UNIX_TIMESTAMP':_0x5267('0x5c')};var _0x2543a4=function(_0x2feea8){return!_[_0x5267('0x5d')](['IS\x20NULL','IS\x20NOT\x20NULL',_0x5267('0x84'),_0x5267('0x60')],_0x2feea8);};var _0x199ff6=function(_0xbf36fb){if(!_0xbf36fb||!_0xbf36fb['rules'][_0x5267('0x35')]){return'';}for(var _0x3cc775='(',_0x2630f2=0x0;_0x2630f2<_0xbf36fb[_0x5267('0x61')][_0x5267('0x35')];_0x2630f2+=0x1){_0x2630f2>0x0&&(_0x3cc775+='\x20'+_0xbf36fb[_0x5267('0x62')]+'\x20');_0x3cc775+=_0xbf36fb[_0x5267('0x61')][_0x2630f2][_0x5267('0x63')]?_0x199ff6(_0xbf36fb[_0x5267('0x61')][_0x2630f2][_0x5267('0x63')]):_0xbf36fb[_0x5267('0x61')][_0x2630f2][_0x5267('0x6f')]+'\x20'+_0xbf36fb[_0x5267('0x61')][_0x2630f2]['condition']+(_0x2543a4(_0xbf36fb[_0x5267('0x61')][_0x2630f2][_0x5267('0x64')])?'\x20'+_0xbf36fb[_0x5267('0x61')][_0x2630f2][_0x5267('0x65')]:'');}return _0x3cc775+')';};var _0x447b5f={'where':{'id':_0x418a03['id']}},_0x25ce90,_0x257c69,_0x160c9c,_0x42694a,_0x11a2f4;_0x447b5f=_[_0x5267('0x3c')]({},_0x447b5f,_0x2c2b95);return db[_0x5267('0x2a')][_0x5267('0x48')](_0x447b5f)[_0x5267('0x25')](function(_0x35c3b7){if(_0x35c3b7){_0x25ce90=_0x35c3b7;return _0x35c3b7[_0x5267('0x66')]();}return null;})[_0x5267('0x25')](function(_0x35a4a3){if(_0x35a4a3){if(!_0x35a4a3[_0x5267('0x35')]){throw new db[(_0x5267('0x85'))][(_0x5267('0x67'))](_0x5267('0x68'),0x193);}_0x257c69=_0x35a4a3;return db[_0x5267('0x69')]['findAll']({'raw':!![]});}return null;})[_0x5267('0x25')](function(_0x318393){if(_0x318393){_0x160c9c=_[_0x5267('0x86')](_0x318393,'id');var _0x405eb4;var _0x38f5b7=squel['select']();_0x38f5b7[_0x5267('0x87')](_0x25ce90[_0x5267('0x6c')]);for(var _0x4c68cd=0x0;_0x4c68cd<_0x257c69['length'];_0x4c68cd+=0x1){_0x405eb4=_0x257c69[_0x4c68cd]['MetricId']?_0x160c9c[_0x257c69[_0x4c68cd][_0x5267('0x6d')]]['metric']:_0x257c69[_0x4c68cd][_0x5267('0x6f')];_0x405eb4=_0x257c69[_0x4c68cd]['function']?_['replace'](_0x28e4b6[_0x257c69[_0x4c68cd][_0x5267('0x70')]],'%s',_0x405eb4):_0x405eb4;_0x405eb4=_0x257c69[_0x4c68cd][_0x5267('0x72')]?_[_0x5267('0x71')](_0xd18795[_0x257c69[_0x4c68cd][_0x5267('0x72')]],'%s',_0x405eb4):_0x405eb4;if(_0x257c69[_0x4c68cd][_0x5267('0x73')]){_0x38f5b7['group'](_0x405eb4);}_0x257c69[_0x4c68cd]['orderBy']&&_0x38f5b7[_0x5267('0x74')](_0x405eb4,_0x257c69[_0x4c68cd][_0x5267('0x75')]===_0x5267('0x76')?![]:!![]);_0x38f5b7[_0x5267('0x6f')](_0x405eb4,_0x257c69[_0x4c68cd][_0x5267('0x88')]||_0x405eb4);}if(_0x25ce90['joins']){_0x25ce90[_0x5267('0x77')]=JSON['parse'](_0x25ce90['joins']);for(var _0x3dfd8d=0x0;_0x3dfd8d<_0x25ce90['joins']['length'];_0x3dfd8d+=0x1){if(_0x25ce90[_0x5267('0x77')][_0x3dfd8d][_0x5267('0x2d')]&&_['includes'](_0x164cc1,_0x25ce90['joins'][_0x3dfd8d]['type'])&&_0x25ce90[_0x5267('0x77')][_0x3dfd8d]['parentKey']&&_0x25ce90[_0x5267('0x77')][_0x3dfd8d]['foreignTable']&&_0x25ce90[_0x5267('0x77')][_0x3dfd8d][_0x5267('0x7a')]){_0x38f5b7[_0x25ce90['joins'][_0x3dfd8d][_0x5267('0x2d')]](_0x25ce90[_0x5267('0x77')][_0x3dfd8d][_0x5267('0x79')],null,util[_0x5267('0x72')](_0x5267('0x7b'),_0x25ce90[_0x5267('0x6c')],_0x25ce90['joins'][_0x3dfd8d]['parentKey'],_0x25ce90[_0x5267('0x77')][_0x3dfd8d]['foreignTable'],_0x25ce90['joins'][_0x3dfd8d][_0x5267('0x7a')]));}}}if(_0x25ce90['conditions']){_0x25ce90[_0x5267('0x7c')]=JSON['parse'](_0x25ce90[_0x5267('0x7c')]);_0x38f5b7['where'](_0x199ff6(_0x25ce90[_0x5267('0x7c')][_0x5267('0x63')]));}_0x11a2f4=_0x38f5b7[_0x5267('0x7e')]();_0x38f5b7[_0x5267('0x1d')](_0x87aa90);_0x38f5b7[_0x5267('0x1b')](0x0);return;}})[_0x5267('0x25')](function(){if(_0x5b8026[_0x5267('0x89')]==='web'){return null;}var _0x4df99f=_[_0x5267('0x3c')](_0x5b8026,{'name':_0x5b8026['fullPath']||_0x5b8026['name']||_0x25ce90['name'],'basename':_0x20888d,'savename':util['format']('%s-%s.%s',_0x5b8026['name']||_0x25ce90[_0x5267('0x28')],require(_0x5267('0x8a'))[_0x5267('0x8b')](0x4),_0x5b8026[_0x5267('0x89')]||_0x5267('0x8c')),'reportId':_0x25ce90['id'],'reportType':_0x5267('0x8d')});return db[_0x5267('0x8e')][_0x5267('0x42')](_0x4df99f,{'raw':!![]});})['then'](function(_0x5df23d){if(_0x25ce90['table']===_0x5267('0x8f')){_0x11a2f4[_0x5267('0x38')](_0x25ce90['table']+_0x5267('0x90'),_0x5b8026[_0x5267('0x91')],_0x5b8026[_0x5267('0x92')]);}else{_0x11a2f4[_0x5267('0x38')](_0x25ce90['table']+'.createdAt\x20BETWEEN\x20?\x20AND\x20?',_0x5b8026[_0x5267('0x91')],_0x5b8026[_0x5267('0x92')]);}if(_0x5df23d){logger[_0x5267('0x93')](_0x5267('0x94'),_0x11a2f4[_0x5267('0x7f')]());require(_0x5267('0x95'))[_0x5267('0x96')](path['join'](__dirname,'../../components/export/',_0x5df23d['output']),[_0x5df23d['id'],_0x11a2f4[_0x5267('0x7f')](),path[_0x5267('0x4f')](__dirname,_0x5267('0x97'),_0x5df23d[_0x5267('0x98')]),_0x20888d]);return _0x5df23d;}else{var _0x190ef4=squel[_0x5267('0x6b')]();_0x190ef4['from']('('+_0x11a2f4[_0x5267('0x7f')]()+')','countTable');_0x190ef4[_0x5267('0x6f')](_0x5267('0x99'),_0x5267('0x1e'));_0x11a2f4[_0x5267('0x1d')](_0x5b8026[_0x5267('0x1d')]||_0x87aa90);_0x11a2f4['offset'](_0x5b8026[_0x5267('0x1b')]||0x0);return dbH[_0x5267('0x80')][_0x5267('0x30')](_0x190ef4['toString'](),{'type':dbH['sequelize']['QueryTypes'][_0x5267('0x9a')]})[_0x5267('0x25')](function(_0x1be763){if(!_0x1be763[_0x5267('0x35')]){_0x42694a=0x0;}else{_0x42694a=_0x1be763[0x0]['count']||0x0;}return dbH['sequelize'][_0x5267('0x30')](_0x11a2f4[_0x5267('0x7f')](),{'type':dbH['sequelize'][_0x5267('0x81')][_0x5267('0x9a')]});})['then'](function(_0x5005b3){return{'rows':_0x5005b3||[],'count':_0x42694a};});}});}exports[_0x5267('0x9b')]=function(_0x11a6f4,_0x5a16ee){return runReport(_0x11a6f4[_0x5267('0x41')],_0x11a6f4[_0x5267('0x30')],_0x11a6f4[_0x5267('0x3d')])[_0x5267('0x25')](respondWithResult(_0x5a16ee,null))[_0x5267('0x40')](handleError(_0x5a16ee,null));};exports[_0x5267('0x9c')]=runReport;exports[_0x5267('0x30')]=function(_0x1e9651,_0x66da7a){var _0x54b582=0xa;var _0x4e4724=[_0x5267('0x4f'),'left_join',_0x5267('0x82'),_0x5267('0x51')];var _0x2722f9={'SUM':_0x5267('0x52'),'COUNT':_0x5267('0x53'),'COUNT DISTINCT':_0x5267('0x54'),'MAX':_0x5267('0x55'),'MIN':_0x5267('0x9d'),'AVG':_0x5267('0x56'),'GROUP_CONCAT':_0x5267('0x57'),'GROUP_CONCAT ASC':_0x5267('0x58'),'GROUP_CONCAT DESC':_0x5267('0x59')};var _0x5909b3={'SEC_TO_TIME':_0x5267('0x83'),'DATE':'DATE(%s)','HOUR':'HOUR(%s)','ROUND':_0x5267('0x5b'),'UNIX_TIMESTAMP':_0x5267('0x5c')};var _0x1d7987=function(_0x59efe1){return!_[_0x5267('0x5d')]([_0x5267('0x5e'),_0x5267('0x5f'),_0x5267('0x84'),_0x5267('0x60')],_0x59efe1);};var _0x46c79e=function(_0xcfba51){if(!_0xcfba51||!_0xcfba51[_0x5267('0x61')][_0x5267('0x35')]){return'';}for(var _0x3c5516='(',_0x1e8367=0x0;_0x1e8367<_0xcfba51[_0x5267('0x61')]['length'];_0x1e8367+=0x1){_0x1e8367>0x0&&(_0x3c5516+='\x20'+_0xcfba51[_0x5267('0x62')]+'\x20');_0x3c5516+=_0xcfba51[_0x5267('0x61')][_0x1e8367]['group']?_0x46c79e(_0xcfba51[_0x5267('0x61')][_0x1e8367][_0x5267('0x63')]):_0xcfba51[_0x5267('0x61')][_0x1e8367][_0x5267('0x6f')]+'\x20'+_0xcfba51['rules'][_0x1e8367][_0x5267('0x64')]+(_0x1d7987(_0xcfba51[_0x5267('0x61')][_0x1e8367][_0x5267('0x64')])?'\x20'+_0xcfba51['rules'][_0x1e8367][_0x5267('0x65')]:'');}return _0x3c5516+')';};var _0x19935d={'where':{'id':_0x1e9651[_0x5267('0x41')]['id']}},_0x3102e0,_0x2d215e,_0xc0af94,_0x178080,_0x3485ab;_0x19935d=_[_0x5267('0x3c')]({},_0x19935d,_0x1e9651['options']);return db[_0x5267('0x2a')][_0x5267('0x48')](_0x19935d)['then'](function(_0x17d2d4){if(_0x17d2d4){_0x3102e0=_0x17d2d4;return _0x17d2d4['getFields']();}return null;})[_0x5267('0x25')](function(_0x4c5a26){if(_0x4c5a26){if(!_0x4c5a26[_0x5267('0x35')]){throw new db[(_0x5267('0x85'))]['ValidationErrorItem']('Please\x20insert\x20at\x20least\x20one\x20field',0x193);}_0x2d215e=_0x4c5a26;return db[_0x5267('0x69')][_0x5267('0x6a')]({'raw':!![]});}return null;})[_0x5267('0x25')](function(_0x1a0883){if(_0x1a0883){_0xc0af94=_[_0x5267('0x86')](_0x1a0883,'id');var _0x501da6;var _0x3dcf73=squel['select']();_0x3dcf73['from'](_0x3102e0['table']);for(var _0x1ded05=0x0;_0x1ded05<_0x2d215e[_0x5267('0x35')];_0x1ded05+=0x1){_0x501da6=_0x2d215e[_0x1ded05][_0x5267('0x6d')]?_0xc0af94[_0x2d215e[_0x1ded05][_0x5267('0x6d')]][_0x5267('0x6e')]:_0x2d215e[_0x1ded05][_0x5267('0x6f')];_0x501da6=_0x2d215e[_0x1ded05][_0x5267('0x70')]?_['replace'](_0x2722f9[_0x2d215e[_0x1ded05]['function']],'%s',_0x501da6):_0x501da6;_0x501da6=_0x2d215e[_0x1ded05][_0x5267('0x72')]?_[_0x5267('0x71')](_0x5909b3[_0x2d215e[_0x1ded05][_0x5267('0x72')]],'%s',_0x501da6):_0x501da6;if(_0x2d215e[_0x1ded05][_0x5267('0x73')]){_0x3dcf73[_0x5267('0x63')](_0x501da6);}_0x2d215e[_0x1ded05]['orderBy']&&_0x3dcf73[_0x5267('0x74')](_0x501da6,_0x2d215e[_0x1ded05][_0x5267('0x75')]===_0x5267('0x76')?![]:!![]);_0x3dcf73[_0x5267('0x6f')](_0x501da6,_0x2d215e[_0x1ded05][_0x5267('0x88')]||_0x501da6);}if(_0x3102e0['joins']){_0x3102e0[_0x5267('0x77')]=JSON[_0x5267('0x7d')](_0x3102e0[_0x5267('0x77')]);for(var _0x4bfafd=0x0;_0x4bfafd<_0x3102e0[_0x5267('0x77')]['length'];_0x4bfafd+=0x1){if(_0x3102e0[_0x5267('0x77')][_0x4bfafd][_0x5267('0x2d')]&&_['includes'](_0x4e4724,_0x3102e0[_0x5267('0x77')][_0x4bfafd]['type'])&&_0x3102e0[_0x5267('0x77')][_0x4bfafd][_0x5267('0x78')]&&_0x3102e0['joins'][_0x4bfafd][_0x5267('0x79')]&&_0x3102e0[_0x5267('0x77')][_0x4bfafd]['foreignKey']){_0x3dcf73[_0x3102e0[_0x5267('0x77')][_0x4bfafd][_0x5267('0x2d')]](_0x3102e0[_0x5267('0x77')][_0x4bfafd][_0x5267('0x79')],null,util[_0x5267('0x72')]('%s.%s\x20=\x20%s.%s',_0x3102e0['table'],_0x3102e0[_0x5267('0x77')][_0x4bfafd][_0x5267('0x78')],_0x3102e0['joins'][_0x4bfafd][_0x5267('0x79')],_0x3102e0['joins'][_0x4bfafd][_0x5267('0x7a')]));}}}if(_0x3102e0[_0x5267('0x7c')]){_0x3102e0[_0x5267('0x7c')]=JSON[_0x5267('0x7d')](_0x3102e0[_0x5267('0x7c')]);_0x3dcf73[_0x5267('0x38')](_0x46c79e(_0x3102e0[_0x5267('0x7c')][_0x5267('0x63')]));}_0x3485ab=_0x3dcf73[_0x5267('0x7e')]();_0x3dcf73[_0x5267('0x1d')](_0x54b582);_0x3dcf73[_0x5267('0x1b')](0x0);logger[_0x5267('0x9e')]('Limited\x20Query:',_0x3dcf73[_0x5267('0x7f')]());return dbH[_0x5267('0x80')][_0x5267('0x30')](_0x3dcf73[_0x5267('0x7f')](),{'type':dbH[_0x5267('0x80')][_0x5267('0x81')][_0x5267('0x9a')]});}})[_0x5267('0x25')](function(){return{'sql':_0x3485ab[_0x5267('0x7f')]()};})[_0x5267('0x25')](respondWithResult(_0x66da7a,null))[_0x5267('0x40')](handleError(_0x66da7a,null));};
\ No newline at end of file
+var _0x2ef3=['Sequelize','from','foreignKey','output','web','fullPath','generate','csv','cdr','startDate','endDate','info','child_process','fork','../../components/export/','savename','countTable','COUNT(*)','runReport','IS\x20NULL','IS\x20NOT\x20EMPTY','metric','Limited\x20Query:','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','../../mysqldb','status','offset','undefined','count','limit','set','Content-Range','apply','save','then','destroy','get','DefaultReports','UserProfileResource','end','error','stack','name','send','index','map','rawAttributes','type','key','model','query','intersection','attributes','length','hasOwnProperty','nolimit','order','sort','where','filters','pick','filter','merge','VIRTUAL','options','AnalyticDefaultReport','includeAll','include','findAll','rows','catch','show','params','keys','fields','find','create','body','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','Reports','UserProfileSection','autoAssociation','update','preview','left_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\x20DESC)','DATE(%s)','HOUR(%s)','ROUND(%s)','includes','IS\x20EMPTY','operator','rules','group','condition','value','getFields','ValidationErrorItem','Please\x20insert\x20at\x20least\x20one\x20field','AnalyticMetric','keyBy','select','MetricId','field','function','replace','format','groupBy','orderBy','DESC','alias','joins','parentKey','foreignTable','%s.%s\x20=\x20%s.%s','table','conditions','parse','clone','debug','toString','sequelize','QueryTypes','SELECT','join','GROUP_CONCAT(%s)','GROUP_CONCAT(%s\x20ORDER\x20BY\x20%s\x20ASC)','SEC_TO_TIME(%s)','UNIX_TIMESTAMP(%s)','IS\x20NOT\x20NULL'];(function(_0x36c5b0,_0x5001da){var _0xf19333=function(_0x1e880a){while(--_0x1e880a){_0x36c5b0['push'](_0x36c5b0['shift']());}};_0xf19333(++_0x5001da);}(_0x2ef3,0xba));var _0x32ef=function(_0x55d115,_0x1da7db){_0x55d115=_0x55d115-0x0;var _0x580e92=_0x2ef3[_0x55d115];return _0x580e92;};'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'];var dbH=require(_0x32ef('0x18'))['dbH'];function respondWithStatusCode(_0x3e98df,_0x1ef1ae){_0x1ef1ae=_0x1ef1ae||0xcc;return function(_0x5c3eb9){if(_0x5c3eb9){return _0x3e98df['sendStatus'](_0x1ef1ae);}return _0x3e98df[_0x32ef('0x19')](_0x1ef1ae)['end']();};}function respondWithResult(_0x326fce,_0x40a6e6){_0x40a6e6=_0x40a6e6||0xc8;return function(_0x93d492){if(_0x93d492){return _0x326fce[_0x32ef('0x19')](_0x40a6e6)['json'](_0x93d492);}};}function respondWithFilteredResult(_0x55bf0b,_0x531e30){return function(_0x13db1a){if(_0x13db1a){var _0x3950e6=typeof _0x531e30[_0x32ef('0x1a')]==='undefined'&&typeof _0x531e30['limit']===_0x32ef('0x1b');var _0x1a9476=_0x13db1a[_0x32ef('0x1c')];var _0x57863c=_0x3950e6?0x0:_0x531e30[_0x32ef('0x1a')];var _0x33e230=_0x3950e6?_0x13db1a['count']:_0x531e30[_0x32ef('0x1a')]+_0x531e30[_0x32ef('0x1d')];var _0x26aff3;if(_0x33e230>=_0x1a9476){_0x33e230=_0x1a9476;_0x26aff3=0xc8;}else{_0x26aff3=0xce;}_0x55bf0b[_0x32ef('0x19')](_0x26aff3);return _0x55bf0b[_0x32ef('0x1e')](_0x32ef('0x1f'),_0x57863c+'-'+_0x33e230+'/'+_0x1a9476)['json'](_0x13db1a);}return null;};}function patchUpdates(_0x3c5b78){return function(_0x5cc3ef){try{jsonpatch[_0x32ef('0x20')](_0x5cc3ef,_0x3c5b78,!![]);}catch(_0x3a20ca){return BPromise['reject'](_0x3a20ca);}return _0x5cc3ef[_0x32ef('0x21')]();};}function saveUpdates(_0x97780,_0x5e8898){return function(_0x55f7f2){if(_0x55f7f2){return _0x55f7f2['update'](_0x97780)[_0x32ef('0x22')](function(_0xb30fab){return _0xb30fab;});}return null;};}function removeEntity(_0x225feb,_0x478bef){return function(_0x59585f){if(_0x59585f){return _0x59585f[_0x32ef('0x23')]()['then'](function(){var _0x51a412=_0x59585f[_0x32ef('0x24')]({'plain':!![]});var _0x14d4b3=_0x32ef('0x25');return db[_0x32ef('0x26')][_0x32ef('0x23')]({'where':{'type':_0x14d4b3,'resourceId':_0x51a412['id']}})[_0x32ef('0x22')](function(){return _0x59585f;});})[_0x32ef('0x22')](function(){_0x225feb[_0x32ef('0x19')](0xcc)[_0x32ef('0x27')]();});}};}function handleEntityNotFound(_0x2f52d7,_0x1335e2){return function(_0xba4b3f){if(!_0xba4b3f){_0x2f52d7['sendStatus'](0x194);}return _0xba4b3f;};}function handleError(_0xd65fde,_0x2f5d06){_0x2f5d06=_0x2f5d06||0x1f4;return function(_0x5a04cd){logger[_0x32ef('0x28')](_0x5a04cd[_0x32ef('0x29')]);if(_0x5a04cd[_0x32ef('0x2a')]){delete _0x5a04cd[_0x32ef('0x2a')];}_0xd65fde['status'](_0x2f5d06)[_0x32ef('0x2b')](_0x5a04cd);};}exports[_0x32ef('0x2c')]=function(_0x31dbc3,_0x2ac686){var _0x1b668a={},_0x1a6ed2={},_0x1a122d={'count':0x0,'rows':[]};var _0x575f3e=_[_0x32ef('0x2d')](db['AnalyticDefaultReport'][_0x32ef('0x2e')],function(_0x2b6c6a){return{'name':_0x2b6c6a['fieldName'],'type':_0x2b6c6a[_0x32ef('0x2f')][_0x32ef('0x30')]};});_0x1a6ed2[_0x32ef('0x31')]=_[_0x32ef('0x2d')](_0x575f3e,_0x32ef('0x2a'));_0x1a6ed2['query']=_['keys'](_0x31dbc3[_0x32ef('0x32')]);_0x1a6ed2['filters']=_[_0x32ef('0x33')](_0x1a6ed2[_0x32ef('0x31')],_0x1a6ed2[_0x32ef('0x32')]);_0x1b668a[_0x32ef('0x34')]=_[_0x32ef('0x33')](_0x1a6ed2[_0x32ef('0x31')],qs['fields'](_0x31dbc3['query']['fields']));_0x1b668a[_0x32ef('0x34')]=_0x1b668a[_0x32ef('0x34')][_0x32ef('0x35')]?_0x1b668a['attributes']:_0x1a6ed2['model'];if(!_0x31dbc3[_0x32ef('0x32')][_0x32ef('0x36')](_0x32ef('0x37'))){_0x1b668a['limit']=qs['limit'](_0x31dbc3[_0x32ef('0x32')][_0x32ef('0x1d')]);_0x1b668a[_0x32ef('0x1a')]=qs[_0x32ef('0x1a')](_0x31dbc3[_0x32ef('0x32')][_0x32ef('0x1a')]);}_0x1b668a[_0x32ef('0x38')]=qs[_0x32ef('0x39')](_0x31dbc3[_0x32ef('0x32')]['sort']);_0x1b668a[_0x32ef('0x3a')]=qs[_0x32ef('0x3b')](_[_0x32ef('0x3c')](_0x31dbc3['query'],_0x1a6ed2[_0x32ef('0x3b')]),_0x575f3e);if(_0x31dbc3[_0x32ef('0x32')][_0x32ef('0x3d')]){_0x1b668a[_0x32ef('0x3a')]=_[_0x32ef('0x3e')](_0x1b668a[_0x32ef('0x3a')],{'$or':_[_0x32ef('0x2d')](_0x575f3e,function(_0x1cebed){if(_0x1cebed[_0x32ef('0x2f')]!==_0x32ef('0x3f')){var _0xb4db74={};_0xb4db74[_0x1cebed[_0x32ef('0x2a')]]={'$like':'%'+_0x31dbc3['query'][_0x32ef('0x3d')]+'%'};return _0xb4db74;}})});}_0x1b668a=_[_0x32ef('0x3e')]({},_0x1b668a,_0x31dbc3[_0x32ef('0x40')]);var _0x1733e3={'where':_0x1b668a[_0x32ef('0x3a')]};return db[_0x32ef('0x41')][_0x32ef('0x1c')](_0x1733e3)['then'](function(_0x538758){_0x1a122d[_0x32ef('0x1c')]=_0x538758;if(_0x31dbc3[_0x32ef('0x32')][_0x32ef('0x42')]){_0x1b668a[_0x32ef('0x43')]=[{'all':!![]}];}return db['AnalyticDefaultReport'][_0x32ef('0x44')](_0x1b668a);})[_0x32ef('0x22')](function(_0x5d2f06){_0x1a122d[_0x32ef('0x45')]=_0x5d2f06;return _0x1a122d;})['then'](respondWithFilteredResult(_0x2ac686,_0x1b668a))[_0x32ef('0x46')](handleError(_0x2ac686,null));};exports[_0x32ef('0x47')]=function(_0x37a497,_0x3be46d){var _0x2c2b62={'raw':!![],'where':{'id':_0x37a497[_0x32ef('0x48')]['id']}},_0x2310ae={};_0x2310ae[_0x32ef('0x31')]=_[_0x32ef('0x49')](db[_0x32ef('0x41')]['rawAttributes']);_0x2310ae[_0x32ef('0x32')]=_['keys'](_0x37a497[_0x32ef('0x32')]);_0x2310ae[_0x32ef('0x3b')]=_[_0x32ef('0x33')](_0x2310ae['model'],_0x2310ae[_0x32ef('0x32')]);_0x2c2b62[_0x32ef('0x34')]=_[_0x32ef('0x33')](_0x2310ae[_0x32ef('0x31')],qs[_0x32ef('0x4a')](_0x37a497[_0x32ef('0x32')][_0x32ef('0x4a')]));_0x2c2b62['attributes']=_0x2c2b62['attributes'][_0x32ef('0x35')]?_0x2c2b62[_0x32ef('0x34')]:_0x2310ae[_0x32ef('0x31')];if(_0x37a497[_0x32ef('0x32')][_0x32ef('0x42')]){_0x2c2b62[_0x32ef('0x43')]=[{'all':!![]}];}_0x2c2b62=_[_0x32ef('0x3e')]({},_0x2c2b62,_0x37a497[_0x32ef('0x40')]);return db[_0x32ef('0x41')][_0x32ef('0x4b')](_0x2c2b62)[_0x32ef('0x22')](handleEntityNotFound(_0x3be46d,null))[_0x32ef('0x22')](respondWithResult(_0x3be46d,null))[_0x32ef('0x46')](handleError(_0x3be46d,null));};exports['create']=function(_0x420f00,_0x12fbd7){return db[_0x32ef('0x41')][_0x32ef('0x4c')](_0x420f00[_0x32ef('0x4d')],{})[_0x32ef('0x22')](function(_0x278696){var _0x1acded=_0x420f00[_0x32ef('0x4e')][_0x32ef('0x24')]({'plain':!![]});if(!_0x1acded)throw new Error(_0x32ef('0x4f'));if(_0x1acded[_0x32ef('0x50')]===_0x32ef('0x4e')){var _0x326445=_0x278696[_0x32ef('0x24')]({'plain':!![]});var _0x3fb4d8=_0x32ef('0x51');return db[_0x32ef('0x52')]['find']({'where':{'name':_0x3fb4d8,'userProfileId':_0x1acded['userProfileId']},'raw':!![]})[_0x32ef('0x22')](function(_0x259c32){if(_0x259c32&&_0x259c32[_0x32ef('0x53')]===0x0){return db[_0x32ef('0x26')][_0x32ef('0x4c')]({'name':_0x326445[_0x32ef('0x2a')],'resourceId':_0x326445['id'],'type':_0x32ef('0x25'),'sectionId':_0x259c32['id']},{})[_0x32ef('0x22')](function(){return _0x278696;});}else{return _0x278696;}})[_0x32ef('0x46')](function(_0x368bf1){logger[_0x32ef('0x28')]('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0x368bf1);throw _0x368bf1;});}return _0x278696;})[_0x32ef('0x22')](respondWithResult(_0x12fbd7,0xc9))[_0x32ef('0x46')](handleError(_0x12fbd7,null));};exports[_0x32ef('0x54')]=function(_0x3fe01f,_0x38314a){if(_0x3fe01f[_0x32ef('0x4d')]['id']){delete _0x3fe01f['body']['id'];}return db[_0x32ef('0x41')][_0x32ef('0x4b')]({'where':{'id':_0x3fe01f[_0x32ef('0x48')]['id']}})['then'](handleEntityNotFound(_0x38314a,null))[_0x32ef('0x22')](saveUpdates(_0x3fe01f['body'],null))[_0x32ef('0x22')](respondWithResult(_0x38314a,null))[_0x32ef('0x46')](handleError(_0x38314a,null));};exports['destroy']=function(_0x206ad5,_0x59e5f9){return db[_0x32ef('0x41')][_0x32ef('0x4b')]({'where':{'id':_0x206ad5[_0x32ef('0x48')]['id']}})[_0x32ef('0x22')](handleEntityNotFound(_0x59e5f9,null))[_0x32ef('0x22')](removeEntity(_0x59e5f9,null))[_0x32ef('0x46')](handleError(_0x59e5f9,null));};exports[_0x32ef('0x55')]=function(_0x56260f,_0x56cc75){var _0xdfa103=0xa;var _0x52232a=['join',_0x32ef('0x56'),_0x32ef('0x57'),_0x32ef('0x58')];var _0x6aae59={'SUM':_0x32ef('0x59'),'COUNT':_0x32ef('0x5a'),'COUNT DISTINCT':_0x32ef('0x5b'),'MAX':_0x32ef('0x5c'),'MIN':_0x32ef('0x5d'),'AVG':_0x32ef('0x5e'),'GROUP_CONCAT':'GROUP_CONCAT(%s)','GROUP_CONCAT ASC':'GROUP_CONCAT(%s\x20ORDER\x20BY\x20%s\x20ASC)','GROUP_CONCAT DESC':_0x32ef('0x5f')};var _0xbd059e={'SEC_TO_TIME':'SEC_TO_TIME(%s)','DATE':_0x32ef('0x60'),'HOUR':_0x32ef('0x61'),'ROUND':_0x32ef('0x62'),'UNIX_TIMESTAMP':'UNIX_TIMESTAMP(%s)'};var _0x2ac877=function(_0x3c31d0){return!_[_0x32ef('0x63')](['IS\x20NULL','IS\x20NOT\x20NULL',_0x32ef('0x64'),'IS\x20NOT\x20EMPTY'],_0x3c31d0);};var _0x17f447=function(_0x5bb114){if(!_0x5bb114||!_0x5bb114['rules'][_0x32ef('0x35')]){return'';}for(var _0x208989='(',_0x10cb37=0x0;_0x10cb37<_0x5bb114['rules'][_0x32ef('0x35')];_0x10cb37+=0x1){_0x10cb37>0x0&&(_0x208989+='\x20'+_0x5bb114[_0x32ef('0x65')]+'\x20');_0x208989+=_0x5bb114[_0x32ef('0x66')][_0x10cb37]['group']?_0x17f447(_0x5bb114[_0x32ef('0x66')][_0x10cb37][_0x32ef('0x67')]):_0x5bb114['rules'][_0x10cb37]['field']+'\x20'+_0x5bb114[_0x32ef('0x66')][_0x10cb37][_0x32ef('0x68')]+(_0x2ac877(_0x5bb114[_0x32ef('0x66')][_0x10cb37][_0x32ef('0x68')])?'\x20'+_0x5bb114[_0x32ef('0x66')][_0x10cb37][_0x32ef('0x69')]:'');}return _0x208989+')';};var _0x4c89e8={'where':{'id':_0x56260f[_0x32ef('0x48')]['id']}},_0x285330,_0x63b65,_0x25b6d6,_0x36ed97,_0x21e930;_0x4c89e8=_[_0x32ef('0x3e')]({},_0x4c89e8,_0x56260f[_0x32ef('0x40')]);return db[_0x32ef('0x41')]['find'](_0x4c89e8)[_0x32ef('0x22')](function(_0x29ff58){if(_0x29ff58){_0x285330=_0x29ff58;return _0x29ff58[_0x32ef('0x6a')]();}return null;})[_0x32ef('0x22')](function(_0x79ae28){if(_0x79ae28){if(!_0x79ae28['length']){throw new db['Sequelize'][(_0x32ef('0x6b'))](_0x32ef('0x6c'),0x193);}_0x63b65=_0x79ae28;return db[_0x32ef('0x6d')][_0x32ef('0x44')]({'raw':!![]});}return null;})[_0x32ef('0x22')](function(_0x526fb1){if(_0x526fb1){_0x25b6d6=_[_0x32ef('0x6e')](_0x526fb1,'id');var _0x544045;var _0x216e2f=squel[_0x32ef('0x6f')]();_0x216e2f['from'](_0x285330['table']);for(var _0x2c9f7a=0x0;_0x2c9f7a<_0x63b65[_0x32ef('0x35')];_0x2c9f7a+=0x1){_0x544045=_0x63b65[_0x2c9f7a][_0x32ef('0x70')]?_0x25b6d6[_0x63b65[_0x2c9f7a]['MetricId']]['metric']:_0x63b65[_0x2c9f7a][_0x32ef('0x71')];_0x544045=_0x63b65[_0x2c9f7a][_0x32ef('0x72')]?_[_0x32ef('0x73')](_0x6aae59[_0x63b65[_0x2c9f7a][_0x32ef('0x72')]],'%s',_0x544045):_0x544045;_0x544045=_0x63b65[_0x2c9f7a]['format']?_[_0x32ef('0x73')](_0xbd059e[_0x63b65[_0x2c9f7a][_0x32ef('0x74')]],'%s',_0x544045):_0x544045;if(_0x63b65[_0x2c9f7a][_0x32ef('0x75')]){_0x216e2f[_0x32ef('0x67')](_0x544045);}_0x63b65[_0x2c9f7a][_0x32ef('0x76')]&&_0x216e2f[_0x32ef('0x38')](_0x544045,_0x63b65[_0x2c9f7a][_0x32ef('0x76')]===_0x32ef('0x77')?![]:!![]);_0x216e2f[_0x32ef('0x71')](_0x544045,_0x63b65[_0x2c9f7a][_0x32ef('0x78')]||_0x544045);}if(_0x285330[_0x32ef('0x79')]){_0x285330[_0x32ef('0x79')]=JSON['parse'](_0x285330['joins']);for(var _0x3a9c97=0x0;_0x3a9c97<_0x285330[_0x32ef('0x79')]['length'];_0x3a9c97+=0x1){if(_0x285330[_0x32ef('0x79')][_0x3a9c97]['type']&&_[_0x32ef('0x63')](_0x52232a,_0x285330[_0x32ef('0x79')][_0x3a9c97][_0x32ef('0x2f')])&&_0x285330['joins'][_0x3a9c97][_0x32ef('0x7a')]&&_0x285330['joins'][_0x3a9c97][_0x32ef('0x7b')]&&_0x285330[_0x32ef('0x79')][_0x3a9c97]['foreignKey']){_0x216e2f[_0x285330['joins'][_0x3a9c97][_0x32ef('0x2f')]](_0x285330['joins'][_0x3a9c97][_0x32ef('0x7b')],null,util['format'](_0x32ef('0x7c'),_0x285330[_0x32ef('0x7d')],_0x285330[_0x32ef('0x79')][_0x3a9c97]['parentKey'],_0x285330['joins'][_0x3a9c97]['foreignTable'],_0x285330[_0x32ef('0x79')][_0x3a9c97]['foreignKey']));}}}if(_0x285330[_0x32ef('0x7e')]){_0x285330[_0x32ef('0x7e')]=JSON[_0x32ef('0x7f')](_0x285330[_0x32ef('0x7e')]);_0x216e2f[_0x32ef('0x3a')](_0x17f447(_0x285330[_0x32ef('0x7e')]['group']));}_0x21e930=_0x216e2f[_0x32ef('0x80')]();_0x216e2f['limit'](_0xdfa103);_0x216e2f['offset'](0x0);logger[_0x32ef('0x81')]('Limited\x20Query:',_0x216e2f[_0x32ef('0x82')]());return dbH[_0x32ef('0x83')]['query'](_0x216e2f[_0x32ef('0x82')](),{'type':dbH[_0x32ef('0x83')][_0x32ef('0x84')][_0x32ef('0x85')]});}})[_0x32ef('0x22')](respondWithResult(_0x56cc75,null))[_0x32ef('0x46')](handleError(_0x56cc75,null));};function runReport(_0x4b5506,_0x51736f,_0x35b10d){var _0x5e0b55=_0x51736f[_0x32ef('0x2a')];var _0x266688=0xa;var _0x114d8e=[_0x32ef('0x86'),_0x32ef('0x56'),_0x32ef('0x57'),'cross_join'];var _0x3232ca={'SUM':_0x32ef('0x59'),'COUNT':_0x32ef('0x5a'),'COUNT DISTINCT':_0x32ef('0x5b'),'MAX':_0x32ef('0x5c'),'MIN':'MIN(%s)','AVG':'AVG(%s)','GROUP_CONCAT':_0x32ef('0x87'),'GROUP_CONCAT ASC':_0x32ef('0x88'),'GROUP_CONCAT DESC':'GROUP_CONCAT(%s\x20ORDER\x20BY\x20%s\x20DESC)'};var _0x211fb1={'SEC_TO_TIME':_0x32ef('0x89'),'DATE':_0x32ef('0x60'),'HOUR':_0x32ef('0x61'),'ROUND':_0x32ef('0x62'),'UNIX_TIMESTAMP':_0x32ef('0x8a')};var _0xfb4845=function(_0x21067e){return!_[_0x32ef('0x63')](['IS\x20NULL',_0x32ef('0x8b'),_0x32ef('0x64'),'IS\x20NOT\x20EMPTY'],_0x21067e);};var _0x35653b=function(_0x5ea727){if(!_0x5ea727||!_0x5ea727[_0x32ef('0x66')]['length']){return'';}for(var _0x43f36e='(',_0x39300f=0x0;_0x39300f<_0x5ea727[_0x32ef('0x66')][_0x32ef('0x35')];_0x39300f+=0x1){_0x39300f>0x0&&(_0x43f36e+='\x20'+_0x5ea727['operator']+'\x20');_0x43f36e+=_0x5ea727[_0x32ef('0x66')][_0x39300f][_0x32ef('0x67')]?_0x35653b(_0x5ea727[_0x32ef('0x66')][_0x39300f]['group']):_0x5ea727['rules'][_0x39300f]['field']+'\x20'+_0x5ea727[_0x32ef('0x66')][_0x39300f][_0x32ef('0x68')]+(_0xfb4845(_0x5ea727[_0x32ef('0x66')][_0x39300f][_0x32ef('0x68')])?'\x20'+_0x5ea727[_0x32ef('0x66')][_0x39300f]['value']:'');}return _0x43f36e+')';};var _0x2678e3={'where':{'id':_0x4b5506['id']}},_0x5b3deb,_0x471de6,_0x7b0ea5,_0xc43e1,_0x4baa7a;_0x2678e3=_[_0x32ef('0x3e')]({},_0x2678e3,_0x35b10d);return db[_0x32ef('0x41')][_0x32ef('0x4b')](_0x2678e3)[_0x32ef('0x22')](function(_0x28bebb){if(_0x28bebb){_0x5b3deb=_0x28bebb;return _0x28bebb['getFields']();}return null;})[_0x32ef('0x22')](function(_0x484df0){if(_0x484df0){if(!_0x484df0[_0x32ef('0x35')]){throw new db[(_0x32ef('0x8c'))]['ValidationErrorItem']('Please\x20insert\x20at\x20least\x20one\x20field',0x193);}_0x471de6=_0x484df0;return db[_0x32ef('0x6d')][_0x32ef('0x44')]({'raw':!![]});}return null;})[_0x32ef('0x22')](function(_0x3b9896){if(_0x3b9896){_0x7b0ea5=_['keyBy'](_0x3b9896,'id');var _0x356fd4;var _0x51ca6e=squel['select']();_0x51ca6e[_0x32ef('0x8d')](_0x5b3deb['table']);for(var _0x2237cf=0x0;_0x2237cf<_0x471de6[_0x32ef('0x35')];_0x2237cf+=0x1){_0x356fd4=_0x471de6[_0x2237cf][_0x32ef('0x70')]?_0x7b0ea5[_0x471de6[_0x2237cf]['MetricId']]['metric']:_0x471de6[_0x2237cf][_0x32ef('0x71')];_0x356fd4=_0x471de6[_0x2237cf][_0x32ef('0x72')]?_[_0x32ef('0x73')](_0x3232ca[_0x471de6[_0x2237cf][_0x32ef('0x72')]],'%s',_0x356fd4):_0x356fd4;_0x356fd4=_0x471de6[_0x2237cf][_0x32ef('0x74')]?_[_0x32ef('0x73')](_0x211fb1[_0x471de6[_0x2237cf][_0x32ef('0x74')]],'%s',_0x356fd4):_0x356fd4;if(_0x471de6[_0x2237cf]['groupBy']){_0x51ca6e[_0x32ef('0x67')](_0x356fd4);}_0x471de6[_0x2237cf][_0x32ef('0x76')]&&_0x51ca6e[_0x32ef('0x38')](_0x356fd4,_0x471de6[_0x2237cf][_0x32ef('0x76')]==='DESC'?![]:!![]);_0x51ca6e['field'](_0x356fd4,_0x471de6[_0x2237cf][_0x32ef('0x78')]||_0x356fd4);}if(_0x5b3deb['joins']){_0x5b3deb[_0x32ef('0x79')]=JSON[_0x32ef('0x7f')](_0x5b3deb['joins']);for(var _0x5c7594=0x0;_0x5c7594<_0x5b3deb['joins'][_0x32ef('0x35')];_0x5c7594+=0x1){if(_0x5b3deb[_0x32ef('0x79')][_0x5c7594][_0x32ef('0x2f')]&&_[_0x32ef('0x63')](_0x114d8e,_0x5b3deb['joins'][_0x5c7594][_0x32ef('0x2f')])&&_0x5b3deb[_0x32ef('0x79')][_0x5c7594][_0x32ef('0x7a')]&&_0x5b3deb['joins'][_0x5c7594][_0x32ef('0x7b')]&&_0x5b3deb['joins'][_0x5c7594][_0x32ef('0x8e')]){_0x51ca6e[_0x5b3deb[_0x32ef('0x79')][_0x5c7594]['type']](_0x5b3deb['joins'][_0x5c7594][_0x32ef('0x7b')],null,util[_0x32ef('0x74')](_0x32ef('0x7c'),_0x5b3deb[_0x32ef('0x7d')],_0x5b3deb[_0x32ef('0x79')][_0x5c7594][_0x32ef('0x7a')],_0x5b3deb[_0x32ef('0x79')][_0x5c7594][_0x32ef('0x7b')],_0x5b3deb[_0x32ef('0x79')][_0x5c7594]['foreignKey']));}}}if(_0x5b3deb[_0x32ef('0x7e')]){_0x5b3deb['conditions']=JSON[_0x32ef('0x7f')](_0x5b3deb[_0x32ef('0x7e')]);_0x51ca6e[_0x32ef('0x3a')](_0x35653b(_0x5b3deb[_0x32ef('0x7e')][_0x32ef('0x67')]));}_0x4baa7a=_0x51ca6e['clone']();_0x51ca6e[_0x32ef('0x1d')](_0x266688);_0x51ca6e[_0x32ef('0x1a')](0x0);return;}})[_0x32ef('0x22')](function(){if(_0x51736f[_0x32ef('0x8f')]===_0x32ef('0x90')){return null;}var _0x1cfdd8=_[_0x32ef('0x3e')](_0x51736f,{'name':_0x51736f[_0x32ef('0x91')]||_0x51736f[_0x32ef('0x2a')]||_0x5b3deb['name'],'basename':_0x5e0b55,'savename':util['format']('%s-%s.%s',_0x51736f[_0x32ef('0x2a')]||_0x5b3deb[_0x32ef('0x2a')],require('randomstring')[_0x32ef('0x92')](0x4),_0x51736f['output']||_0x32ef('0x93')),'reportId':_0x5b3deb['id'],'reportType':'default'});return db['AnalyticExtractedReport'][_0x32ef('0x4c')](_0x1cfdd8,{'raw':!![]});})[_0x32ef('0x22')](function(_0x118d2e){if(_0x5b3deb[_0x32ef('0x7d')]===_0x32ef('0x94')){_0x4baa7a['where'](_0x5b3deb[_0x32ef('0x7d')]+'.calldate\x20BETWEEN\x20?\x20AND\x20?',_0x51736f[_0x32ef('0x95')],_0x51736f['endDate']);}else{_0x4baa7a['where'](_0x5b3deb['table']+'.createdAt\x20BETWEEN\x20?\x20AND\x20?',_0x51736f['startDate'],_0x51736f[_0x32ef('0x96')]);}if(_0x118d2e){logger[_0x32ef('0x97')]('Run\x20Query:',_0x4baa7a[_0x32ef('0x82')]());require(_0x32ef('0x98'))[_0x32ef('0x99')](path[_0x32ef('0x86')](__dirname,_0x32ef('0x9a'),_0x118d2e[_0x32ef('0x8f')]),[_0x118d2e['id'],_0x4baa7a['toString'](),path[_0x32ef('0x86')](__dirname,'../../files/reports',_0x118d2e[_0x32ef('0x9b')]),_0x5e0b55]);return _0x118d2e;}else{var _0x1be713=squel['select']();_0x1be713[_0x32ef('0x8d')]('('+_0x4baa7a['toString']()+')',_0x32ef('0x9c'));_0x1be713[_0x32ef('0x71')](_0x32ef('0x9d'),_0x32ef('0x1c'));_0x4baa7a['limit'](_0x51736f[_0x32ef('0x1d')]||_0x266688);_0x4baa7a[_0x32ef('0x1a')](_0x51736f[_0x32ef('0x1a')]||0x0);return dbH[_0x32ef('0x83')]['query'](_0x1be713[_0x32ef('0x82')](),{'type':dbH['sequelize'][_0x32ef('0x84')][_0x32ef('0x85')]})[_0x32ef('0x22')](function(_0x28ef17){if(!_0x28ef17[_0x32ef('0x35')]){_0xc43e1=0x0;}else{_0xc43e1=_0x28ef17[0x0][_0x32ef('0x1c')]||0x0;}return dbH['sequelize'][_0x32ef('0x32')](_0x4baa7a['toString'](),{'type':dbH['sequelize'][_0x32ef('0x84')][_0x32ef('0x85')]});})[_0x32ef('0x22')](function(_0x3956e7){return{'rows':_0x3956e7||[],'count':_0xc43e1};});}});}exports['run']=function(_0x8d3b24,_0x642716){return runReport(_0x8d3b24[_0x32ef('0x48')],_0x8d3b24[_0x32ef('0x32')],_0x8d3b24['options'])['then'](respondWithResult(_0x642716,null))['catch'](handleError(_0x642716,null));};exports[_0x32ef('0x9e')]=runReport;exports[_0x32ef('0x32')]=function(_0x4454f3,_0xc92dcc){var _0x3d18b9=0xa;var _0x9233cb=[_0x32ef('0x86'),_0x32ef('0x56'),_0x32ef('0x57'),_0x32ef('0x58')];var _0xa76912={'SUM':'SUM(%s)','COUNT':_0x32ef('0x5a'),'COUNT DISTINCT':_0x32ef('0x5b'),'MAX':_0x32ef('0x5c'),'MIN':_0x32ef('0x5d'),'AVG':_0x32ef('0x5e'),'GROUP_CONCAT':_0x32ef('0x87'),'GROUP_CONCAT ASC':'GROUP_CONCAT(%s\x20ORDER\x20BY\x20%s\x20ASC)','GROUP_CONCAT DESC':_0x32ef('0x5f')};var _0x1526a1={'SEC_TO_TIME':_0x32ef('0x89'),'DATE':_0x32ef('0x60'),'HOUR':_0x32ef('0x61'),'ROUND':_0x32ef('0x62'),'UNIX_TIMESTAMP':_0x32ef('0x8a')};var _0x2d4d2f=function(_0x292488){return!_[_0x32ef('0x63')]([_0x32ef('0x9f'),_0x32ef('0x8b'),_0x32ef('0x64'),_0x32ef('0xa0')],_0x292488);};var _0x50b674=function(_0x379d40){if(!_0x379d40||!_0x379d40[_0x32ef('0x66')][_0x32ef('0x35')]){return'';}for(var _0x4b7a4d='(',_0x16525b=0x0;_0x16525b<_0x379d40['rules'][_0x32ef('0x35')];_0x16525b+=0x1){_0x16525b>0x0&&(_0x4b7a4d+='\x20'+_0x379d40[_0x32ef('0x65')]+'\x20');_0x4b7a4d+=_0x379d40[_0x32ef('0x66')][_0x16525b]['group']?_0x50b674(_0x379d40[_0x32ef('0x66')][_0x16525b]['group']):_0x379d40[_0x32ef('0x66')][_0x16525b][_0x32ef('0x71')]+'\x20'+_0x379d40['rules'][_0x16525b][_0x32ef('0x68')]+(_0x2d4d2f(_0x379d40[_0x32ef('0x66')][_0x16525b][_0x32ef('0x68')])?'\x20'+_0x379d40[_0x32ef('0x66')][_0x16525b][_0x32ef('0x69')]:'');}return _0x4b7a4d+')';};var _0x264075={'where':{'id':_0x4454f3[_0x32ef('0x48')]['id']}},_0x3798d1,_0x4befa9,_0x493ae9,_0x143d39,_0x497948;_0x264075=_[_0x32ef('0x3e')]({},_0x264075,_0x4454f3['options']);return db[_0x32ef('0x41')][_0x32ef('0x4b')](_0x264075)['then'](function(_0x1200c9){if(_0x1200c9){_0x3798d1=_0x1200c9;return _0x1200c9[_0x32ef('0x6a')]();}return null;})[_0x32ef('0x22')](function(_0xa5f787){if(_0xa5f787){if(!_0xa5f787[_0x32ef('0x35')]){throw new db['Sequelize'][(_0x32ef('0x6b'))](_0x32ef('0x6c'),0x193);}_0x4befa9=_0xa5f787;return db['AnalyticMetric'][_0x32ef('0x44')]({'raw':!![]});}return null;})[_0x32ef('0x22')](function(_0x55ad11){if(_0x55ad11){_0x493ae9=_[_0x32ef('0x6e')](_0x55ad11,'id');var _0x2971a8;var _0x522c22=squel[_0x32ef('0x6f')]();_0x522c22[_0x32ef('0x8d')](_0x3798d1['table']);for(var _0xb41a01=0x0;_0xb41a01<_0x4befa9[_0x32ef('0x35')];_0xb41a01+=0x1){_0x2971a8=_0x4befa9[_0xb41a01][_0x32ef('0x70')]?_0x493ae9[_0x4befa9[_0xb41a01][_0x32ef('0x70')]][_0x32ef('0xa1')]:_0x4befa9[_0xb41a01][_0x32ef('0x71')];_0x2971a8=_0x4befa9[_0xb41a01][_0x32ef('0x72')]?_['replace'](_0xa76912[_0x4befa9[_0xb41a01]['function']],'%s',_0x2971a8):_0x2971a8;_0x2971a8=_0x4befa9[_0xb41a01][_0x32ef('0x74')]?_[_0x32ef('0x73')](_0x1526a1[_0x4befa9[_0xb41a01][_0x32ef('0x74')]],'%s',_0x2971a8):_0x2971a8;if(_0x4befa9[_0xb41a01]['groupBy']){_0x522c22[_0x32ef('0x67')](_0x2971a8);}_0x4befa9[_0xb41a01][_0x32ef('0x76')]&&_0x522c22['order'](_0x2971a8,_0x4befa9[_0xb41a01][_0x32ef('0x76')]===_0x32ef('0x77')?![]:!![]);_0x522c22['field'](_0x2971a8,_0x4befa9[_0xb41a01]['alias']||_0x2971a8);}if(_0x3798d1[_0x32ef('0x79')]){_0x3798d1[_0x32ef('0x79')]=JSON[_0x32ef('0x7f')](_0x3798d1['joins']);for(var _0x5f4eab=0x0;_0x5f4eab<_0x3798d1['joins'][_0x32ef('0x35')];_0x5f4eab+=0x1){if(_0x3798d1[_0x32ef('0x79')][_0x5f4eab][_0x32ef('0x2f')]&&_['includes'](_0x9233cb,_0x3798d1[_0x32ef('0x79')][_0x5f4eab][_0x32ef('0x2f')])&&_0x3798d1[_0x32ef('0x79')][_0x5f4eab]['parentKey']&&_0x3798d1[_0x32ef('0x79')][_0x5f4eab][_0x32ef('0x7b')]&&_0x3798d1['joins'][_0x5f4eab]['foreignKey']){_0x522c22[_0x3798d1[_0x32ef('0x79')][_0x5f4eab]['type']](_0x3798d1[_0x32ef('0x79')][_0x5f4eab][_0x32ef('0x7b')],null,util['format']('%s.%s\x20=\x20%s.%s',_0x3798d1[_0x32ef('0x7d')],_0x3798d1['joins'][_0x5f4eab][_0x32ef('0x7a')],_0x3798d1[_0x32ef('0x79')][_0x5f4eab][_0x32ef('0x7b')],_0x3798d1[_0x32ef('0x79')][_0x5f4eab][_0x32ef('0x8e')]));}}}if(_0x3798d1[_0x32ef('0x7e')]){_0x3798d1[_0x32ef('0x7e')]=JSON[_0x32ef('0x7f')](_0x3798d1[_0x32ef('0x7e')]);_0x522c22[_0x32ef('0x3a')](_0x50b674(_0x3798d1['conditions']['group']));}_0x497948=_0x522c22[_0x32ef('0x80')]();_0x522c22[_0x32ef('0x1d')](_0x3d18b9);_0x522c22[_0x32ef('0x1a')](0x0);logger[_0x32ef('0x81')](_0x32ef('0xa2'),_0x522c22[_0x32ef('0x82')]());return dbH[_0x32ef('0x83')][_0x32ef('0x32')](_0x522c22[_0x32ef('0x82')](),{'type':dbH[_0x32ef('0x83')]['QueryTypes'][_0x32ef('0x85')]});}})[_0x32ef('0x22')](function(){return{'sql':_0x497948[_0x32ef('0x82')]()};})[_0x32ef('0x22')](respondWithResult(_0xc92dcc,null))[_0x32ef('0x46')](handleError(_0xc92dcc,null));};
\ No newline at end of file
index 9d86717..28d0a71 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9995=['AnalyticDefaultReport','lodash','../../config/logger','api','moment','request-promise','path','rimraf','../../config/environment','exports','define'];(function(_0x430f44,_0x4ae21b){var _0x1f6b0f=function(_0x35968f){while(--_0x35968f){_0x430f44['push'](_0x430f44['shift']());}};_0x1f6b0f(++_0x4ae21b);}(_0x9995,0x135));var _0x5999=function(_0x43da17,_0xc03c2a){_0x43da17=_0x43da17-0x0;var _0x1e8d97=_0x9995[_0x43da17];return _0x1e8d97;};'use strict';var _=require(_0x5999('0x0'));var util=require('util');var logger=require(_0x5999('0x1'))(_0x5999('0x2'));var moment=require(_0x5999('0x3'));var BPromise=require('bluebird');var rp=require(_0x5999('0x4'));var fs=require('fs');var path=require(_0x5999('0x5'));var rimraf=require(_0x5999('0x6'));var config=require(_0x5999('0x7'));var attributes=require('./analyticDefaultReport.attributes');module[_0x5999('0x8')]=function(_0x4c351e,_0xe34491){return _0x4c351e[_0x5999('0x9')](_0x5999('0xa'),attributes,{'tableName':'analytics_default_reports','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xa0ac=['api','bluebird','request-promise','./analyticDefaultReport.attributes','exports','AnalyticDefaultReport','lodash','util','../../config/logger'];(function(_0x596815,_0x43d5c8){var _0xcb9cb5=function(_0x1bdc2c){while(--_0x1bdc2c){_0x596815['push'](_0x596815['shift']());}};_0xcb9cb5(++_0x43d5c8);}(_0xa0ac,0x153));var _0xca0a=function(_0x1fd3e1,_0x4f0ab1){_0x1fd3e1=_0x1fd3e1-0x0;var _0x4d7b8f=_0xa0ac[_0x1fd3e1];return _0x4d7b8f;};'use strict';var _=require(_0xca0a('0x0'));var util=require(_0xca0a('0x1'));var logger=require(_0xca0a('0x2'))(_0xca0a('0x3'));var moment=require('moment');var BPromise=require(_0xca0a('0x4'));var rp=require(_0xca0a('0x5'));var fs=require('fs');var path=require('path');var rimraf=require('rimraf');var config=require('../../config/environment');var attributes=require(_0xca0a('0x6'));module[_0xca0a('0x7')]=function(_0x2265df,_0x29b40e){return _0x2265df['define'](_0xca0a('0x8'),attributes,{'tableName':'analytics_default_reports','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 42d063a..2eded1b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2485=['ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','request','info','request\x20sent','error','code','AnalyticDefaultReport,\x20%s,\x20%s','message','util','moment','bluebird','randomstring'];(function(_0x55882b,_0x3f5979){var _0x46e0e0=function(_0x3db356){while(--_0x3db356){_0x55882b['push'](_0x55882b['shift']());}};_0x46e0e0(++_0x3f5979);}(_0x2485,0x1dc));var _0x5248=function(_0x34c956,_0x2eed30){_0x34c956=_0x34c956-0x0;var _0x1bf1d0=_0x2485[_0x34c956];return _0x1bf1d0;};'use strict';var _=require('lodash');var util=require(_0x5248('0x0'));var moment=require(_0x5248('0x1'));var BPromise=require(_0x5248('0x2'));var rs=require(_0x5248('0x3'));var fs=require('fs');var Redis=require(_0x5248('0x4'));var db=require(_0x5248('0x5'))['db'];var utils=require(_0x5248('0x6'));var logger=require(_0x5248('0x7'))(_0x5248('0x8'));var config=require(_0x5248('0x9'));var jayson=require(_0x5248('0xa'));var client=jayson[_0x5248('0xb')][_0x5248('0xc')]({'port':0x232a});function respondWithRpcPromise(_0x2fa878,_0x439e44,_0x2cdecb){return new BPromise(function(_0xc4765e,_0x3a2281){return client[_0x5248('0xd')](_0x2fa878,_0x2cdecb)['then'](function(_0x31feca){logger[_0x5248('0xe')]('AnalyticDefaultReport,\x20%s,\x20%s',_0x439e44,'request\x20sent');logger['debug']('AnalyticDefaultReport,\x20%s,\x20%s,\x20%s',_0x439e44,_0x5248('0xf'),JSON['stringify'](_0x31feca));if(_0x31feca['error']){if(_0x31feca[_0x5248('0x10')][_0x5248('0x11')]===0x1f4){logger[_0x5248('0x10')](_0x5248('0x12'),_0x439e44,_0x31feca[_0x5248('0x10')][_0x5248('0x13')]);return _0x3a2281(_0x31feca[_0x5248('0x10')][_0x5248('0x13')]);}logger[_0x5248('0x10')]('AnalyticDefaultReport,\x20%s,\x20%s',_0x439e44,_0x31feca[_0x5248('0x10')][_0x5248('0x13')]);return _0xc4765e(_0x31feca[_0x5248('0x10')]['message']);}else{logger[_0x5248('0xe')](_0x5248('0x12'),_0x439e44,'request\x20sent');_0xc4765e(_0x31feca['result'][_0x5248('0x13')]);}})['catch'](function(_0x41b861){logger[_0x5248('0x10')](_0x5248('0x12'),_0x439e44,_0x41b861);_0x3a2281(_0x41b861);});});}
\ No newline at end of file
+var _0x87b2=['debug','AnalyticDefaultReport,\x20%s,\x20%s,\x20%s','error','code','result','message','catch','util','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','then','info','AnalyticDefaultReport,\x20%s,\x20%s','request\x20sent'];(function(_0xa99afd,_0x814e74){var _0x30292a=function(_0x41350f){while(--_0x41350f){_0xa99afd['push'](_0xa99afd['shift']());}};_0x30292a(++_0x814e74);}(_0x87b2,0x8b));var _0x287b=function(_0x3c737c,_0x453bc3){_0x3c737c=_0x3c737c-0x0;var _0x3aebfe=_0x87b2[_0x3c737c];return _0x3aebfe;};'use strict';var _=require('lodash');var util=require(_0x287b('0x0'));var moment=require('moment');var BPromise=require('bluebird');var rs=require(_0x287b('0x1'));var fs=require('fs');var Redis=require(_0x287b('0x2'));var db=require(_0x287b('0x3'))['db'];var utils=require(_0x287b('0x4'));var logger=require(_0x287b('0x5'))(_0x287b('0x6'));var config=require(_0x287b('0x7'));var jayson=require(_0x287b('0x8'));var client=jayson[_0x287b('0x9')][_0x287b('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x59b22f,_0x366ea7,_0x12f4cd){return new BPromise(function(_0x57406e,_0x10c3fe){return client['request'](_0x59b22f,_0x12f4cd)[_0x287b('0xb')](function(_0x28ef7a){logger[_0x287b('0xc')](_0x287b('0xd'),_0x366ea7,_0x287b('0xe'));logger[_0x287b('0xf')](_0x287b('0x10'),_0x366ea7,_0x287b('0xe'),JSON['stringify'](_0x28ef7a));if(_0x28ef7a[_0x287b('0x11')]){if(_0x28ef7a[_0x287b('0x11')][_0x287b('0x12')]===0x1f4){logger['error'](_0x287b('0xd'),_0x366ea7,_0x28ef7a[_0x287b('0x11')]['message']);return _0x10c3fe(_0x28ef7a[_0x287b('0x11')]['message']);}logger[_0x287b('0x11')](_0x287b('0xd'),_0x366ea7,_0x28ef7a[_0x287b('0x11')]['message']);return _0x57406e(_0x28ef7a[_0x287b('0x11')]['message']);}else{logger[_0x287b('0xc')](_0x287b('0xd'),_0x366ea7,_0x287b('0xe'));_0x57406e(_0x28ef7a[_0x287b('0x13')][_0x287b('0x14')]);}})[_0x287b('0x15')](function(_0x293986){logger['error'](_0x287b('0xd'),_0x366ea7,_0x293986);_0x10c3fe(_0x293986);});});}
\ No newline at end of file
index 596e015..aabf8df 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb72f=['./analyticDefaultReport.controller','get','isAuthenticated','index','/:id','show','/:id/preview','preview','/:id/run','run','query','post','put','update','destroy','exports','multer','util','path','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service'];(function(_0x220f3f,_0x11c540){var _0x1f170e=function(_0x2c0ec9){while(--_0x2c0ec9){_0x220f3f['push'](_0x220f3f['shift']());}};_0x1f170e(++_0x11c540);}(_0xb72f,0x1d8));var _0xfb72=function(_0x1b4b23,_0x5dd6d6){_0x1b4b23=_0x1b4b23-0x0;var _0x2a325b=_0xb72f[_0x1b4b23];return _0x2a325b;};'use strict';var multer=require(_0xfb72('0x0'));var util=require(_0xfb72('0x1'));var path=require(_0xfb72('0x2'));var timeout=require('connect-timeout');var express=require(_0xfb72('0x3'));var router=express[_0xfb72('0x4')]();var fs_extra=require(_0xfb72('0x5'));var auth=require(_0xfb72('0x6'));var interaction=require(_0xfb72('0x7'));var config=require('../../config/environment');var controller=require(_0xfb72('0x8'));router[_0xfb72('0x9')]('/',auth[_0xfb72('0xa')](),controller[_0xfb72('0xb')]);router[_0xfb72('0x9')](_0xfb72('0xc'),auth[_0xfb72('0xa')](),controller[_0xfb72('0xd')]);router[_0xfb72('0x9')](_0xfb72('0xe'),auth[_0xfb72('0xa')](),controller[_0xfb72('0xf')]);router[_0xfb72('0x9')](_0xfb72('0x10'),auth[_0xfb72('0xa')](),controller[_0xfb72('0x11')]);router[_0xfb72('0x9')]('/:id/query',auth['isAuthenticated'](),controller[_0xfb72('0x12')]);router[_0xfb72('0x13')]('/',auth[_0xfb72('0xa')](),controller['create']);router[_0xfb72('0x14')](_0xfb72('0xc'),auth[_0xfb72('0xa')](),controller[_0xfb72('0x15')]);router['delete'](_0xfb72('0xc'),auth[_0xfb72('0xa')](),controller[_0xfb72('0x16')]);module[_0xfb72('0x17')]=router;
\ No newline at end of file
+var _0x3310=['destroy','exports','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','isAuthenticated','get','/:id','show','/:id/preview','preview','/:id/run','/:id/query','query','post','create','put','update','delete'];(function(_0x294cef,_0x55f570){var _0x4d700f=function(_0x182398){while(--_0x182398){_0x294cef['push'](_0x294cef['shift']());}};_0x4d700f(++_0x55f570);}(_0x3310,0x13a));var _0x0331=function(_0x468e18,_0x8e288b){_0x468e18=_0x468e18-0x0;var _0x418bde=_0x3310[_0x468e18];return _0x418bde;};'use strict';var multer=require('multer');var util=require(_0x0331('0x0'));var path=require(_0x0331('0x1'));var timeout=require(_0x0331('0x2'));var express=require(_0x0331('0x3'));var router=express[_0x0331('0x4')]();var fs_extra=require(_0x0331('0x5'));var auth=require(_0x0331('0x6'));var interaction=require(_0x0331('0x7'));var config=require('../../config/environment');var controller=require('./analyticDefaultReport.controller');router['get']('/',auth[_0x0331('0x8')](),controller['index']);router[_0x0331('0x9')](_0x0331('0xa'),auth[_0x0331('0x8')](),controller[_0x0331('0xb')]);router[_0x0331('0x9')](_0x0331('0xc'),auth[_0x0331('0x8')](),controller[_0x0331('0xd')]);router['get'](_0x0331('0xe'),auth['isAuthenticated'](),controller['run']);router[_0x0331('0x9')](_0x0331('0xf'),auth['isAuthenticated'](),controller[_0x0331('0x10')]);router[_0x0331('0x11')]('/',auth[_0x0331('0x8')](),controller[_0x0331('0x12')]);router[_0x0331('0x13')]('/:id',auth[_0x0331('0x8')](),controller[_0x0331('0x14')]);router[_0x0331('0x15')](_0x0331('0xa'),auth['isAuthenticated'](),controller[_0x0331('0x16')]);module[_0x0331('0x17')]=router;
\ No newline at end of file
index 1a85a53..8f2f736 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe0c1=['ENUM','xlsx','DATE','manual','scheduled','INTEGER','sequelize','moment','exports','STRING'];(function(_0x5c1659,_0x2a4748){var _0x57c663=function(_0x4b0f86){while(--_0x4b0f86){_0x5c1659['push'](_0x5c1659['shift']());}};_0x57c663(++_0x2a4748);}(_0xe0c1,0x132));var _0x1e0c=function(_0x23a5e7,_0x32d176){_0x23a5e7=_0x23a5e7-0x0;var _0x2cd54b=_0xe0c1[_0x23a5e7];return _0x2cd54b;};'use strict';var Sequelize=require(_0x1e0c('0x0'));var moment=require(_0x1e0c('0x1'));module[_0x1e0c('0x2')]={'name':{'type':Sequelize[_0x1e0c('0x3')],'allowNull':![]},'basename':{'type':Sequelize[_0x1e0c('0x3')],'allowNull':![]},'output':{'type':Sequelize[_0x1e0c('0x4')]('csv','pdf',_0x1e0c('0x5')),'allowNull':![],'defaultValue':'csv'},'savename':{'type':Sequelize[_0x1e0c('0x3')],'allowNull':![]},'startDate':{'type':Sequelize[_0x1e0c('0x6')]},'endDate':{'type':Sequelize[_0x1e0c('0x6')]},'status':{'type':Sequelize[_0x1e0c('0x3')],'defaultValue':'Loading'},'type':{'type':Sequelize[_0x1e0c('0x4')](_0x1e0c('0x7'),_0x1e0c('0x8')),'allowNull':![],'defaultValue':'manual'},'reportId':{'type':Sequelize[_0x1e0c('0x9')](0xb)['UNSIGNED']},'reportType':{'type':Sequelize[_0x1e0c('0x3')]}};
\ No newline at end of file
+var _0xc186=['UNSIGNED','moment','exports','STRING','csv','pdf','xlsx','DATE','Loading','ENUM','manual','scheduled','INTEGER'];(function(_0x5f09c5,_0x2bfca0){var _0x426ad9=function(_0x18fe5f){while(--_0x18fe5f){_0x5f09c5['push'](_0x5f09c5['shift']());}};_0x426ad9(++_0x2bfca0);}(_0xc186,0xf8));var _0x6c18=function(_0x5031d1,_0x5c2350){_0x5031d1=_0x5031d1-0x0;var _0x42609c=_0xc186[_0x5031d1];return _0x42609c;};'use strict';var Sequelize=require('sequelize');var moment=require(_0x6c18('0x0'));module[_0x6c18('0x1')]={'name':{'type':Sequelize[_0x6c18('0x2')],'allowNull':![]},'basename':{'type':Sequelize[_0x6c18('0x2')],'allowNull':![]},'output':{'type':Sequelize['ENUM'](_0x6c18('0x3'),_0x6c18('0x4'),_0x6c18('0x5')),'allowNull':![],'defaultValue':_0x6c18('0x3')},'savename':{'type':Sequelize[_0x6c18('0x2')],'allowNull':![]},'startDate':{'type':Sequelize[_0x6c18('0x6')]},'endDate':{'type':Sequelize[_0x6c18('0x6')]},'status':{'type':Sequelize[_0x6c18('0x2')],'defaultValue':_0x6c18('0x7')},'type':{'type':Sequelize[_0x6c18('0x8')](_0x6c18('0x9'),_0x6c18('0xa')),'allowNull':![],'defaultValue':_0x6c18('0x9')},'reportId':{'type':Sequelize[_0x6c18('0xb')](0xb)[_0x6c18('0xc')]},'reportType':{'type':Sequelize[_0x6c18('0x2')]}};
\ No newline at end of file
index ef020b0..486b4a4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x52df=['AnalyticExtractedReport','fieldName','type','key','map','query','keys','filters','intersection','model','attributes','fields','hasOwnProperty','nolimit','order','sort','filter','where','merge','options','includeAll','findAll','catch','show','rawAttributes','length','find','create','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','user','ExtractedReports','UserProfileSection','autoAssociation','body','params','download','output','existsSync','join','root','server/files/reports','Sequelize','ValidationError','Report\x20not\x20found\x20or\x20empty','savename','format','%s.%s','basename','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','util','to-csv','ejs','fs-extra','lodash','squel','crypto','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','sendStatus','status','end','json','limit','undefined','count','offset','set','Content-Range','save','update','then','destroy','get','UserProfileResource','error','stack','name','send','index'];(function(_0x5c4358,_0xa82f12){var _0x2081ae=function(_0x4269b3){while(--_0x4269b3){_0x5c4358['push'](_0x5c4358['shift']());}};_0x2081ae(++_0xa82f12);}(_0x52df,0x90));var _0xf52d=function(_0x445aad,_0x547772){_0x445aad=_0x445aad-0x0;var _0x28b49f=_0x52df[_0x445aad];return _0x28b49f;};'use strict';var emlformat=require(_0xf52d('0x0'));var rimraf=require(_0xf52d('0x1'));var zipdir=require(_0xf52d('0x2'));var jsonpatch=require(_0xf52d('0x3'));var rp=require(_0xf52d('0x4'));var moment=require(_0xf52d('0x5'));var BPromise=require(_0xf52d('0x6'));var Mustache=require('mustache');var util=require(_0xf52d('0x7'));var path=require('path');var sox=require('sox');var csv=require(_0xf52d('0x8'));var ejs=require(_0xf52d('0x9'));var fs=require('fs');var fs_extra=require(_0xf52d('0xa'));var _=require(_0xf52d('0xb'));var squel=require(_0xf52d('0xc'));var crypto=require(_0xf52d('0xd'));var jsforce=require('jsforce');var deskjs=require(_0xf52d('0xe'));var toCsv=require(_0xf52d('0x8'));var querystring=require(_0xf52d('0xf'));var Papa=require(_0xf52d('0x10'));var Redis=require(_0xf52d('0x11'));var authService=require(_0xf52d('0x12'));var qs=require('../../components/parsers/qs');var as=require(_0xf52d('0x13'));var hardwareService=require(_0xf52d('0x14'));var logger=require(_0xf52d('0x15'))(_0xf52d('0x16'));var utils=require(_0xf52d('0x17'));var config=require(_0xf52d('0x18'));var licenseUtil=require('../../config/license/util');var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x463088,_0x4c4c48){_0x4c4c48=_0x4c4c48||0xcc;return function(_0x39bdea){if(_0x39bdea){return _0x463088[_0xf52d('0x19')](_0x4c4c48);}return _0x463088[_0xf52d('0x1a')](_0x4c4c48)[_0xf52d('0x1b')]();};}function respondWithResult(_0x52f627,_0x210656){_0x210656=_0x210656||0xc8;return function(_0x43c84b){if(_0x43c84b){return _0x52f627[_0xf52d('0x1a')](_0x210656)[_0xf52d('0x1c')](_0x43c84b);}};}function respondWithFilteredResult(_0x518fd1,_0x18169d){return function(_0x43a61f){if(_0x43a61f){var _0x4c0589=typeof _0x18169d['offset']==='undefined'&&typeof _0x18169d[_0xf52d('0x1d')]===_0xf52d('0x1e');var _0xf84a7c=_0x43a61f[_0xf52d('0x1f')];var _0x4ad341=_0x4c0589?0x0:_0x18169d[_0xf52d('0x20')];var _0x5ccad6=_0x4c0589?_0x43a61f[_0xf52d('0x1f')]:_0x18169d['offset']+_0x18169d[_0xf52d('0x1d')];var _0x58fbbf;if(_0x5ccad6>=_0xf84a7c){_0x5ccad6=_0xf84a7c;_0x58fbbf=0xc8;}else{_0x58fbbf=0xce;}_0x518fd1[_0xf52d('0x1a')](_0x58fbbf);return _0x518fd1[_0xf52d('0x21')](_0xf52d('0x22'),_0x4ad341+'-'+_0x5ccad6+'/'+_0xf84a7c)[_0xf52d('0x1c')](_0x43a61f);}return null;};}function patchUpdates(_0x58a63c){return function(_0x4d787f){try{jsonpatch['apply'](_0x4d787f,_0x58a63c,!![]);}catch(_0x15e4c8){return BPromise['reject'](_0x15e4c8);}return _0x4d787f[_0xf52d('0x23')]();};}function saveUpdates(_0x572466,_0x1800fa){return function(_0x17a3e1){if(_0x17a3e1){return _0x17a3e1[_0xf52d('0x24')](_0x572466)[_0xf52d('0x25')](function(_0x57e9f2){return _0x57e9f2;});}return null;};}function removeEntity(_0x4a4d08,_0x391b2e){return function(_0x594093){if(_0x594093){return _0x594093[_0xf52d('0x26')]()[_0xf52d('0x25')](function(){var _0x527eb5=_0x594093[_0xf52d('0x27')]({'plain':!![]});var _0xf9d7ba='ExtractedReports';return db[_0xf52d('0x28')][_0xf52d('0x26')]({'where':{'type':_0xf9d7ba,'resourceId':_0x527eb5['id']}})[_0xf52d('0x25')](function(){return _0x594093;});})[_0xf52d('0x25')](function(){_0x4a4d08[_0xf52d('0x1a')](0xcc)['end']();});}};}function handleEntityNotFound(_0x34933b,_0x2714cd){return function(_0x47c0e6){if(!_0x47c0e6){_0x34933b['sendStatus'](0x194);}return _0x47c0e6;};}function handleError(_0x106c31,_0x40733c){_0x40733c=_0x40733c||0x1f4;return function(_0x799863){logger[_0xf52d('0x29')](_0x799863[_0xf52d('0x2a')]);if(_0x799863[_0xf52d('0x2b')]){delete _0x799863[_0xf52d('0x2b')];}_0x106c31['status'](_0x40733c)[_0xf52d('0x2c')](_0x799863);};}exports[_0xf52d('0x2d')]=function(_0x1b10bd,_0x1336d5){var _0x542bc4={},_0x5361f1={},_0x2235f9={'count':0x0,'rows':[]};var _0x5883f9=_['map'](db[_0xf52d('0x2e')]['rawAttributes'],function(_0x4f95cd){return{'name':_0x4f95cd[_0xf52d('0x2f')],'type':_0x4f95cd[_0xf52d('0x30')][_0xf52d('0x31')]};});_0x5361f1['model']=_[_0xf52d('0x32')](_0x5883f9,_0xf52d('0x2b'));_0x5361f1[_0xf52d('0x33')]=_[_0xf52d('0x34')](_0x1b10bd['query']);_0x5361f1[_0xf52d('0x35')]=_[_0xf52d('0x36')](_0x5361f1[_0xf52d('0x37')],_0x5361f1[_0xf52d('0x33')]);_0x542bc4[_0xf52d('0x38')]=_[_0xf52d('0x36')](_0x5361f1[_0xf52d('0x37')],qs[_0xf52d('0x39')](_0x1b10bd[_0xf52d('0x33')][_0xf52d('0x39')]));_0x542bc4['attributes']=_0x542bc4['attributes']['length']?_0x542bc4['attributes']:_0x5361f1[_0xf52d('0x37')];if(!_0x1b10bd[_0xf52d('0x33')][_0xf52d('0x3a')](_0xf52d('0x3b'))){_0x542bc4[_0xf52d('0x1d')]=qs['limit'](_0x1b10bd[_0xf52d('0x33')][_0xf52d('0x1d')]);_0x542bc4['offset']=qs['offset'](_0x1b10bd['query'][_0xf52d('0x20')]);}_0x542bc4[_0xf52d('0x3c')]=qs[_0xf52d('0x3d')](_0x1b10bd[_0xf52d('0x33')]['sort']);_0x542bc4['where']=qs[_0xf52d('0x35')](_['pick'](_0x1b10bd[_0xf52d('0x33')],_0x5361f1['filters']),_0x5883f9);if(_0x1b10bd[_0xf52d('0x33')][_0xf52d('0x3e')]){_0x542bc4[_0xf52d('0x3f')]=_['merge'](_0x542bc4[_0xf52d('0x3f')],{'$or':_[_0xf52d('0x32')](_0x5883f9,function(_0x5bfeac){if(_0x5bfeac[_0xf52d('0x30')]!=='VIRTUAL'){var _0x313d8f={};_0x313d8f[_0x5bfeac[_0xf52d('0x2b')]]={'$like':'%'+_0x1b10bd[_0xf52d('0x33')][_0xf52d('0x3e')]+'%'};return _0x313d8f;}})});}_0x542bc4=_[_0xf52d('0x40')]({},_0x542bc4,_0x1b10bd[_0xf52d('0x41')]);var _0x50f3af={'where':_0x542bc4[_0xf52d('0x3f')]};return db[_0xf52d('0x2e')][_0xf52d('0x1f')](_0x50f3af)[_0xf52d('0x25')](function(_0x22a45d){_0x2235f9['count']=_0x22a45d;if(_0x1b10bd[_0xf52d('0x33')][_0xf52d('0x42')]){_0x542bc4['include']=[{'all':!![]}];}return db[_0xf52d('0x2e')][_0xf52d('0x43')](_0x542bc4);})[_0xf52d('0x25')](function(_0x1797eb){_0x2235f9['rows']=_0x1797eb;return _0x2235f9;})[_0xf52d('0x25')](respondWithFilteredResult(_0x1336d5,_0x542bc4))[_0xf52d('0x44')](handleError(_0x1336d5,null));};exports[_0xf52d('0x45')]=function(_0x3158a6,_0x48a63d){var _0x44c903={'raw':!![],'where':{'id':_0x3158a6['params']['id']}},_0x2e323d={};_0x2e323d[_0xf52d('0x37')]=_[_0xf52d('0x34')](db[_0xf52d('0x2e')][_0xf52d('0x46')]);_0x2e323d[_0xf52d('0x33')]=_[_0xf52d('0x34')](_0x3158a6['query']);_0x2e323d[_0xf52d('0x35')]=_[_0xf52d('0x36')](_0x2e323d['model'],_0x2e323d['query']);_0x44c903[_0xf52d('0x38')]=_[_0xf52d('0x36')](_0x2e323d[_0xf52d('0x37')],qs[_0xf52d('0x39')](_0x3158a6[_0xf52d('0x33')]['fields']));_0x44c903[_0xf52d('0x38')]=_0x44c903[_0xf52d('0x38')][_0xf52d('0x47')]?_0x44c903[_0xf52d('0x38')]:_0x2e323d[_0xf52d('0x37')];if(_0x3158a6[_0xf52d('0x33')][_0xf52d('0x42')]){_0x44c903['include']=[{'all':!![]}];}_0x44c903=_['merge']({},_0x44c903,_0x3158a6[_0xf52d('0x41')]);return db[_0xf52d('0x2e')][_0xf52d('0x48')](_0x44c903)[_0xf52d('0x25')](handleEntityNotFound(_0x48a63d,null))[_0xf52d('0x25')](respondWithResult(_0x48a63d,null))[_0xf52d('0x44')](handleError(_0x48a63d,null));};exports[_0xf52d('0x49')]=function(_0x37d60c,_0x2cd5a6){return db[_0xf52d('0x2e')]['create'](_0x37d60c['body'],{})[_0xf52d('0x25')](function(_0x421840){var _0x7a972=_0x37d60c['user'][_0xf52d('0x27')]({'plain':!![]});if(!_0x7a972)throw new Error(_0xf52d('0x4a'));if(_0x7a972[_0xf52d('0x4b')]===_0xf52d('0x4c')){var _0x6a408c=_0x421840[_0xf52d('0x27')]({'plain':!![]});var _0x31527a=_0xf52d('0x4d');return db[_0xf52d('0x4e')]['find']({'where':{'name':_0x31527a,'userProfileId':_0x7a972['userProfileId']},'raw':!![]})['then'](function(_0x50359e){if(_0x50359e&&_0x50359e[_0xf52d('0x4f')]===0x0){return db[_0xf52d('0x28')][_0xf52d('0x49')]({'name':_0x6a408c[_0xf52d('0x2b')],'resourceId':_0x6a408c['id'],'type':_0x50359e['name'],'sectionId':_0x50359e['id']},{})[_0xf52d('0x25')](function(){return _0x421840;});}else{return _0x421840;}})[_0xf52d('0x44')](function(_0x52cf3a){logger['error']('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0x52cf3a);throw _0x52cf3a;});}return _0x421840;})[_0xf52d('0x25')](respondWithResult(_0x2cd5a6,0xc9))['catch'](handleError(_0x2cd5a6,null));};exports['update']=function(_0x145c12,_0x1a7661){if(_0x145c12['body']['id']){delete _0x145c12[_0xf52d('0x50')]['id'];}return db[_0xf52d('0x2e')][_0xf52d('0x48')]({'where':{'id':_0x145c12[_0xf52d('0x51')]['id']}})[_0xf52d('0x25')](handleEntityNotFound(_0x1a7661,null))[_0xf52d('0x25')](saveUpdates(_0x145c12[_0xf52d('0x50')],null))['then'](respondWithResult(_0x1a7661,null))['catch'](handleError(_0x1a7661,null));};exports[_0xf52d('0x26')]=function(_0x5c3d9b,_0x37aa73){return db['AnalyticExtractedReport'][_0xf52d('0x48')]({'where':{'id':_0x5c3d9b[_0xf52d('0x51')]['id']}})[_0xf52d('0x25')](handleEntityNotFound(_0x37aa73,null))[_0xf52d('0x25')](removeEntity(_0x37aa73,null))[_0xf52d('0x44')](handleError(_0x37aa73,null));};exports[_0xf52d('0x52')]=function(_0x12f2f5,_0xe05c81,_0x50c218){return db[_0xf52d('0x2e')][_0xf52d('0x48')]({'where':{'id':_0x12f2f5['params']['id']},'attributes':[_0xf52d('0x2b'),'basename','savename',_0xf52d('0x53')],'raw':!![]})['then'](handleEntityNotFound(_0xe05c81,null))[_0xf52d('0x25')](function(_0x50f2a0){if(_0x50f2a0){if(!fs[_0xf52d('0x54')](path[_0xf52d('0x55')](config[_0xf52d('0x56')],_0xf52d('0x57'),_0x50f2a0['savename']))){throw new db[(_0xf52d('0x58'))][(_0xf52d('0x59'))](_0xf52d('0x5a'));}if(_0x12f2f5[_0xf52d('0x33')]['exists']){return _0xe05c81['sendStatus'](0xc8);}return _0xe05c81[_0xf52d('0x52')](path[_0xf52d('0x55')](config[_0xf52d('0x56')],_0xf52d('0x57'),_0x50f2a0[_0xf52d('0x5b')]),util[_0xf52d('0x5c')](_0xf52d('0x5d'),_0x50f2a0[_0xf52d('0x5e')]||_0x50f2a0[_0xf52d('0x2b')],_0x50f2a0['output']['toLowerCase']()));}})['catch'](handleError(_0xe05c81,null));};
\ No newline at end of file
+var _0xf17b=['AnalyticExtractedReport','fieldName','type','key','map','query','keys','filters','intersection','model','attributes','fields','length','hasOwnProperty','nolimit','order','sort','pick','filter','merge','where','options','count','include','findAll','catch','params','rawAttributes','includeAll','find','create','body','user','role','UserProfileSection','userProfileId','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','download','basename','output','join','root','server/files/reports','savename','Sequelize','ValidationError','Report\x20not\x20found\x20or\x20empty','exists','format','eml-format','rimraf','zip-dir','request-promise','mustache','util','path','sox','to-csv','fs-extra','lodash','crypto','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/environment','../../config/license/util','sendStatus','status','end','json','offset','undefined','limit','set','apply','reject','save','update','then','destroy','get','ExtractedReports','UserProfileResource','error','name','index'];(function(_0x1f4a62,_0x24192a){var _0x2a9fe7=function(_0x2c8e09){while(--_0x2c8e09){_0x1f4a62['push'](_0x1f4a62['shift']());}};_0x2a9fe7(++_0x24192a);}(_0xf17b,0x8d));var _0xbf17=function(_0x182af5,_0x2fb4bc){_0x182af5=_0x182af5-0x0;var _0x104988=_0xf17b[_0x182af5];return _0x104988;};'use strict';var emlformat=require(_0xbf17('0x0'));var rimraf=require(_0xbf17('0x1'));var zipdir=require(_0xbf17('0x2'));var jsonpatch=require('fast-json-patch');var rp=require(_0xbf17('0x3'));var moment=require('moment');var BPromise=require('bluebird');var Mustache=require(_0xbf17('0x4'));var util=require(_0xbf17('0x5'));var path=require(_0xbf17('0x6'));var sox=require(_0xbf17('0x7'));var csv=require(_0xbf17('0x8'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0xbf17('0x9'));var _=require(_0xbf17('0xa'));var squel=require('squel');var crypto=require(_0xbf17('0xb'));var jsforce=require('jsforce');var deskjs=require('desk.js');var toCsv=require(_0xbf17('0x8'));var querystring=require(_0xbf17('0xc'));var Papa=require(_0xbf17('0xd'));var Redis=require(_0xbf17('0xe'));var authService=require(_0xbf17('0xf'));var qs=require(_0xbf17('0x10'));var as=require(_0xbf17('0x11'));var hardwareService=require(_0xbf17('0x12'));var logger=require(_0xbf17('0x13'))(_0xbf17('0x14'));var utils=require('../../config/utils');var config=require(_0xbf17('0x15'));var licenseUtil=require(_0xbf17('0x16'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x983370,_0x43d914){_0x43d914=_0x43d914||0xcc;return function(_0x250a4d){if(_0x250a4d){return _0x983370[_0xbf17('0x17')](_0x43d914);}return _0x983370[_0xbf17('0x18')](_0x43d914)[_0xbf17('0x19')]();};}function respondWithResult(_0x2d698e,_0x4ac484){_0x4ac484=_0x4ac484||0xc8;return function(_0x52ddba){if(_0x52ddba){return _0x2d698e[_0xbf17('0x18')](_0x4ac484)[_0xbf17('0x1a')](_0x52ddba);}};}function respondWithFilteredResult(_0x5e8af0,_0x17983f){return function(_0x2708bd){if(_0x2708bd){var _0x29aef5=typeof _0x17983f[_0xbf17('0x1b')]===_0xbf17('0x1c')&&typeof _0x17983f[_0xbf17('0x1d')]===_0xbf17('0x1c');var _0x1c0561=_0x2708bd['count'];var _0x46419f=_0x29aef5?0x0:_0x17983f[_0xbf17('0x1b')];var _0x53d0a4=_0x29aef5?_0x2708bd['count']:_0x17983f[_0xbf17('0x1b')]+_0x17983f[_0xbf17('0x1d')];var _0x254987;if(_0x53d0a4>=_0x1c0561){_0x53d0a4=_0x1c0561;_0x254987=0xc8;}else{_0x254987=0xce;}_0x5e8af0[_0xbf17('0x18')](_0x254987);return _0x5e8af0[_0xbf17('0x1e')]('Content-Range',_0x46419f+'-'+_0x53d0a4+'/'+_0x1c0561)[_0xbf17('0x1a')](_0x2708bd);}return null;};}function patchUpdates(_0xbbda4d){return function(_0x335c85){try{jsonpatch[_0xbf17('0x1f')](_0x335c85,_0xbbda4d,!![]);}catch(_0x2a3f2f){return BPromise[_0xbf17('0x20')](_0x2a3f2f);}return _0x335c85[_0xbf17('0x21')]();};}function saveUpdates(_0x27038e,_0x4f1d83){return function(_0x220e1f){if(_0x220e1f){return _0x220e1f[_0xbf17('0x22')](_0x27038e)[_0xbf17('0x23')](function(_0x815aa2){return _0x815aa2;});}return null;};}function removeEntity(_0x226044,_0x509c0b){return function(_0x4846ba){if(_0x4846ba){return _0x4846ba[_0xbf17('0x24')]()['then'](function(){var _0x2279e4=_0x4846ba[_0xbf17('0x25')]({'plain':!![]});var _0x54abf0=_0xbf17('0x26');return db[_0xbf17('0x27')][_0xbf17('0x24')]({'where':{'type':_0x54abf0,'resourceId':_0x2279e4['id']}})['then'](function(){return _0x4846ba;});})['then'](function(){_0x226044[_0xbf17('0x18')](0xcc)[_0xbf17('0x19')]();});}};}function handleEntityNotFound(_0x1fb7d6,_0x389990){return function(_0x42fb82){if(!_0x42fb82){_0x1fb7d6[_0xbf17('0x17')](0x194);}return _0x42fb82;};}function handleError(_0x2225bc,_0x16ad8d){_0x16ad8d=_0x16ad8d||0x1f4;return function(_0x1c8186){logger[_0xbf17('0x28')](_0x1c8186['stack']);if(_0x1c8186[_0xbf17('0x29')]){delete _0x1c8186[_0xbf17('0x29')];}_0x2225bc[_0xbf17('0x18')](_0x16ad8d)['send'](_0x1c8186);};}exports[_0xbf17('0x2a')]=function(_0x1ea4dc,_0xb498d6){var _0x290552={},_0x18888f={},_0x2846f3={'count':0x0,'rows':[]};var _0xbc86b3=_['map'](db[_0xbf17('0x2b')]['rawAttributes'],function(_0x2b8855){return{'name':_0x2b8855[_0xbf17('0x2c')],'type':_0x2b8855[_0xbf17('0x2d')][_0xbf17('0x2e')]};});_0x18888f['model']=_[_0xbf17('0x2f')](_0xbc86b3,_0xbf17('0x29'));_0x18888f[_0xbf17('0x30')]=_[_0xbf17('0x31')](_0x1ea4dc[_0xbf17('0x30')]);_0x18888f[_0xbf17('0x32')]=_[_0xbf17('0x33')](_0x18888f[_0xbf17('0x34')],_0x18888f['query']);_0x290552[_0xbf17('0x35')]=_[_0xbf17('0x33')](_0x18888f[_0xbf17('0x34')],qs[_0xbf17('0x36')](_0x1ea4dc[_0xbf17('0x30')][_0xbf17('0x36')]));_0x290552['attributes']=_0x290552['attributes'][_0xbf17('0x37')]?_0x290552[_0xbf17('0x35')]:_0x18888f[_0xbf17('0x34')];if(!_0x1ea4dc[_0xbf17('0x30')][_0xbf17('0x38')](_0xbf17('0x39'))){_0x290552['limit']=qs[_0xbf17('0x1d')](_0x1ea4dc['query']['limit']);_0x290552[_0xbf17('0x1b')]=qs['offset'](_0x1ea4dc[_0xbf17('0x30')][_0xbf17('0x1b')]);}_0x290552[_0xbf17('0x3a')]=qs['sort'](_0x1ea4dc[_0xbf17('0x30')][_0xbf17('0x3b')]);_0x290552['where']=qs[_0xbf17('0x32')](_[_0xbf17('0x3c')](_0x1ea4dc['query'],_0x18888f['filters']),_0xbc86b3);if(_0x1ea4dc[_0xbf17('0x30')][_0xbf17('0x3d')]){_0x290552['where']=_[_0xbf17('0x3e')](_0x290552[_0xbf17('0x3f')],{'$or':_['map'](_0xbc86b3,function(_0xd3bcea){if(_0xd3bcea[_0xbf17('0x2d')]!=='VIRTUAL'){var _0x2381dc={};_0x2381dc[_0xd3bcea['name']]={'$like':'%'+_0x1ea4dc[_0xbf17('0x30')][_0xbf17('0x3d')]+'%'};return _0x2381dc;}})});}_0x290552=_[_0xbf17('0x3e')]({},_0x290552,_0x1ea4dc[_0xbf17('0x40')]);var _0x40939b={'where':_0x290552['where']};return db['AnalyticExtractedReport']['count'](_0x40939b)[_0xbf17('0x23')](function(_0x1a942d){_0x2846f3[_0xbf17('0x41')]=_0x1a942d;if(_0x1ea4dc[_0xbf17('0x30')]['includeAll']){_0x290552[_0xbf17('0x42')]=[{'all':!![]}];}return db['AnalyticExtractedReport'][_0xbf17('0x43')](_0x290552);})['then'](function(_0x149698){_0x2846f3['rows']=_0x149698;return _0x2846f3;})[_0xbf17('0x23')](respondWithFilteredResult(_0xb498d6,_0x290552))[_0xbf17('0x44')](handleError(_0xb498d6,null));};exports['show']=function(_0x5a2f14,_0x1357f9){var _0x231dff={'raw':!![],'where':{'id':_0x5a2f14[_0xbf17('0x45')]['id']}},_0x5e0f10={};_0x5e0f10[_0xbf17('0x34')]=_[_0xbf17('0x31')](db[_0xbf17('0x2b')][_0xbf17('0x46')]);_0x5e0f10[_0xbf17('0x30')]=_[_0xbf17('0x31')](_0x5a2f14[_0xbf17('0x30')]);_0x5e0f10['filters']=_['intersection'](_0x5e0f10[_0xbf17('0x34')],_0x5e0f10['query']);_0x231dff[_0xbf17('0x35')]=_[_0xbf17('0x33')](_0x5e0f10['model'],qs[_0xbf17('0x36')](_0x5a2f14[_0xbf17('0x30')][_0xbf17('0x36')]));_0x231dff[_0xbf17('0x35')]=_0x231dff['attributes'][_0xbf17('0x37')]?_0x231dff[_0xbf17('0x35')]:_0x5e0f10[_0xbf17('0x34')];if(_0x5a2f14[_0xbf17('0x30')][_0xbf17('0x47')]){_0x231dff[_0xbf17('0x42')]=[{'all':!![]}];}_0x231dff=_['merge']({},_0x231dff,_0x5a2f14[_0xbf17('0x40')]);return db[_0xbf17('0x2b')][_0xbf17('0x48')](_0x231dff)['then'](handleEntityNotFound(_0x1357f9,null))[_0xbf17('0x23')](respondWithResult(_0x1357f9,null))[_0xbf17('0x44')](handleError(_0x1357f9,null));};exports[_0xbf17('0x49')]=function(_0x10e401,_0x45d703){return db[_0xbf17('0x2b')][_0xbf17('0x49')](_0x10e401[_0xbf17('0x4a')],{})[_0xbf17('0x23')](function(_0x46d6d9){var _0x3a0825=_0x10e401[_0xbf17('0x4b')][_0xbf17('0x25')]({'plain':!![]});if(!_0x3a0825)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0x3a0825[_0xbf17('0x4c')]==='user'){var _0x20380a=_0x46d6d9[_0xbf17('0x25')]({'plain':!![]});var _0x59a83a=_0xbf17('0x26');return db[_0xbf17('0x4d')][_0xbf17('0x48')]({'where':{'name':_0x59a83a,'userProfileId':_0x3a0825[_0xbf17('0x4e')]},'raw':!![]})[_0xbf17('0x23')](function(_0x20e6e0){if(_0x20e6e0&&_0x20e6e0['autoAssociation']===0x0){return db[_0xbf17('0x27')]['create']({'name':_0x20380a['name'],'resourceId':_0x20380a['id'],'type':_0x20e6e0[_0xbf17('0x29')],'sectionId':_0x20e6e0['id']},{})[_0xbf17('0x23')](function(){return _0x46d6d9;});}else{return _0x46d6d9;}})['catch'](function(_0x5d66c2){logger[_0xbf17('0x28')](_0xbf17('0x4f'),_0x5d66c2);throw _0x5d66c2;});}return _0x46d6d9;})[_0xbf17('0x23')](respondWithResult(_0x45d703,0xc9))['catch'](handleError(_0x45d703,null));};exports[_0xbf17('0x22')]=function(_0x3b16c8,_0x40353a){if(_0x3b16c8['body']['id']){delete _0x3b16c8['body']['id'];}return db[_0xbf17('0x2b')][_0xbf17('0x48')]({'where':{'id':_0x3b16c8[_0xbf17('0x45')]['id']}})['then'](handleEntityNotFound(_0x40353a,null))[_0xbf17('0x23')](saveUpdates(_0x3b16c8['body'],null))[_0xbf17('0x23')](respondWithResult(_0x40353a,null))[_0xbf17('0x44')](handleError(_0x40353a,null));};exports['destroy']=function(_0x2b0388,_0x197be3){return db[_0xbf17('0x2b')][_0xbf17('0x48')]({'where':{'id':_0x2b0388[_0xbf17('0x45')]['id']}})['then'](handleEntityNotFound(_0x197be3,null))[_0xbf17('0x23')](removeEntity(_0x197be3,null))['catch'](handleError(_0x197be3,null));};exports[_0xbf17('0x50')]=function(_0x10b6ca,_0x5c5494,_0x2ee7eb){return db[_0xbf17('0x2b')][_0xbf17('0x48')]({'where':{'id':_0x10b6ca['params']['id']},'attributes':['name',_0xbf17('0x51'),'savename',_0xbf17('0x52')],'raw':!![]})[_0xbf17('0x23')](handleEntityNotFound(_0x5c5494,null))['then'](function(_0x548df1){if(_0x548df1){if(!fs['existsSync'](path[_0xbf17('0x53')](config[_0xbf17('0x54')],_0xbf17('0x55'),_0x548df1[_0xbf17('0x56')]))){throw new db[(_0xbf17('0x57'))][(_0xbf17('0x58'))](_0xbf17('0x59'));}if(_0x10b6ca['query'][_0xbf17('0x5a')]){return _0x5c5494['sendStatus'](0xc8);}return _0x5c5494['download'](path[_0xbf17('0x53')](config[_0xbf17('0x54')],_0xbf17('0x55'),_0x548df1[_0xbf17('0x56')]),util[_0xbf17('0x5b')]('%s.%s',_0x548df1[_0xbf17('0x51')]||_0x548df1[_0xbf17('0x29')],_0x548df1[_0xbf17('0x52')]['toLowerCase']()));}})[_0xbf17('0x44')](handleError(_0x5c5494,null));};
\ No newline at end of file
index 68320e3..ec98ed7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xdd08=['../../config/environment','./analyticExtractedReport.attributes','exports','define','AnalyticExtractedReport','analytics_extracted_reports','lodash','util','../../config/logger','api','bluebird','request-promise','path','rimraf'];(function(_0x27edde,_0x21b5b9){var _0x23a15f=function(_0x5edb2a){while(--_0x5edb2a){_0x27edde['push'](_0x27edde['shift']());}};_0x23a15f(++_0x21b5b9);}(_0xdd08,0x110));var _0x8dd0=function(_0x34bc30,_0x177cb0){_0x34bc30=_0x34bc30-0x0;var _0x5706de=_0xdd08[_0x34bc30];return _0x5706de;};'use strict';var _=require(_0x8dd0('0x0'));var util=require(_0x8dd0('0x1'));var logger=require(_0x8dd0('0x2'))(_0x8dd0('0x3'));var moment=require('moment');var BPromise=require(_0x8dd0('0x4'));var rp=require(_0x8dd0('0x5'));var fs=require('fs');var path=require(_0x8dd0('0x6'));var rimraf=require(_0x8dd0('0x7'));var config=require(_0x8dd0('0x8'));var attributes=require(_0x8dd0('0x9'));module[_0x8dd0('0xa')]=function(_0x383d38,_0x233921){return _0x383d38[_0x8dd0('0xb')](_0x8dd0('0xc'),attributes,{'tableName':_0x8dd0('0xd'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xc6a2=['define','analytics_extracted_reports','lodash','util','../../config/logger','api','moment','bluebird','request-promise','path','rimraf','../../config/environment','./analyticExtractedReport.attributes','exports'];(function(_0x3fbbc8,_0x396bcd){var _0x1d77f7=function(_0x77597e){while(--_0x77597e){_0x3fbbc8['push'](_0x3fbbc8['shift']());}};_0x1d77f7(++_0x396bcd);}(_0xc6a2,0x64));var _0x2c6a=function(_0x3f2aa7,_0xa46eeb){_0x3f2aa7=_0x3f2aa7-0x0;var _0x57cdf2=_0xc6a2[_0x3f2aa7];return _0x57cdf2;};'use strict';var _=require(_0x2c6a('0x0'));var util=require(_0x2c6a('0x1'));var logger=require(_0x2c6a('0x2'))(_0x2c6a('0x3'));var moment=require(_0x2c6a('0x4'));var BPromise=require(_0x2c6a('0x5'));var rp=require(_0x2c6a('0x6'));var fs=require('fs');var path=require(_0x2c6a('0x7'));var rimraf=require(_0x2c6a('0x8'));var config=require(_0x2c6a('0x9'));var attributes=require(_0x2c6a('0xa'));module[_0x2c6a('0xb')]=function(_0x4c1c09,_0x53b1f1){return _0x4c1c09[_0x2c6a('0xc')]('AnalyticExtractedReport',attributes,{'tableName':_0x2c6a('0xd'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 8ec2960..eeb732b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x99cd=['code','message','result','catch','lodash','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','http','request','then','info','AnalyticExtractedReport,\x20%s,\x20%s','request\x20sent','debug','AnalyticExtractedReport,\x20%s,\x20%s,\x20%s','stringify','error'];(function(_0xfa0651,_0x33c9fa){var _0x2898e3=function(_0x5c7f64){while(--_0x5c7f64){_0xfa0651['push'](_0xfa0651['shift']());}};_0x2898e3(++_0x33c9fa);}(_0x99cd,0x1df));var _0xd99c=function(_0x3b2a85,_0x432a30){_0x3b2a85=_0x3b2a85-0x0;var _0x58c2b1=_0x99cd[_0x3b2a85];return _0x58c2b1;};'use strict';var _=require(_0xd99c('0x0'));var util=require('util');var moment=require(_0xd99c('0x1'));var BPromise=require(_0xd99c('0x2'));var rs=require(_0xd99c('0x3'));var fs=require('fs');var Redis=require(_0xd99c('0x4'));var db=require(_0xd99c('0x5'))['db'];var utils=require(_0xd99c('0x6'));var logger=require(_0xd99c('0x7'))(_0xd99c('0x8'));var config=require(_0xd99c('0x9'));var jayson=require(_0xd99c('0xa'));var client=jayson['client'][_0xd99c('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x4a56d5,_0x26ebac,_0x4b739c){return new BPromise(function(_0x53d8b2,_0x28ea88){return client[_0xd99c('0xc')](_0x4a56d5,_0x4b739c)[_0xd99c('0xd')](function(_0x2bcd16){logger[_0xd99c('0xe')](_0xd99c('0xf'),_0x26ebac,_0xd99c('0x10'));logger[_0xd99c('0x11')](_0xd99c('0x12'),_0x26ebac,_0xd99c('0x10'),JSON[_0xd99c('0x13')](_0x2bcd16));if(_0x2bcd16[_0xd99c('0x14')]){if(_0x2bcd16[_0xd99c('0x14')][_0xd99c('0x15')]===0x1f4){logger['error'](_0xd99c('0xf'),_0x26ebac,_0x2bcd16[_0xd99c('0x14')][_0xd99c('0x16')]);return _0x28ea88(_0x2bcd16[_0xd99c('0x14')][_0xd99c('0x16')]);}logger['error'](_0xd99c('0xf'),_0x26ebac,_0x2bcd16[_0xd99c('0x14')][_0xd99c('0x16')]);return _0x53d8b2(_0x2bcd16[_0xd99c('0x14')][_0xd99c('0x16')]);}else{logger['info'](_0xd99c('0xf'),_0x26ebac,_0xd99c('0x10'));_0x53d8b2(_0x2bcd16[_0xd99c('0x17')][_0xd99c('0x16')]);}})[_0xd99c('0x18')](function(_0x41936e){logger[_0xd99c('0x14')](_0xd99c('0xf'),_0x26ebac,_0x41936e);_0x28ea88(_0x41936e);});});}
\ No newline at end of file
+var _0xeed2=['rpc','http','request','then','info','request\x20sent','AnalyticExtractedReport,\x20%s,\x20%s,\x20%s','stringify','error','code','message','AnalyticExtractedReport,\x20%s,\x20%s','result','lodash','moment','bluebird','ioredis','../../mysqldb'];(function(_0x234e1a,_0x500d79){var _0x55aad2=function(_0x272396){while(--_0x272396){_0x234e1a['push'](_0x234e1a['shift']());}};_0x55aad2(++_0x500d79);}(_0xeed2,0xd3));var _0x2eed=function(_0x317067,_0x149d90){_0x317067=_0x317067-0x0;var _0x48e375=_0xeed2[_0x317067];return _0x48e375;};'use strict';var _=require(_0x2eed('0x0'));var util=require('util');var moment=require(_0x2eed('0x1'));var BPromise=require(_0x2eed('0x2'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x2eed('0x3'));var db=require(_0x2eed('0x4'))['db'];var utils=require('../../config/utils');var logger=require('../../config/logger')(_0x2eed('0x5'));var config=require('../../config/environment');var jayson=require('jayson/promise');var client=jayson['client'][_0x2eed('0x6')]({'port':0x232a});function respondWithRpcPromise(_0x8c3047,_0x2cfe82,_0x9220d1){return new BPromise(function(_0x1b1a75,_0x40c564){return client[_0x2eed('0x7')](_0x8c3047,_0x9220d1)[_0x2eed('0x8')](function(_0x2eb951){logger[_0x2eed('0x9')]('AnalyticExtractedReport,\x20%s,\x20%s',_0x2cfe82,_0x2eed('0xa'));logger['debug'](_0x2eed('0xb'),_0x2cfe82,_0x2eed('0xa'),JSON[_0x2eed('0xc')](_0x2eb951));if(_0x2eb951['error']){if(_0x2eb951[_0x2eed('0xd')][_0x2eed('0xe')]===0x1f4){logger[_0x2eed('0xd')]('AnalyticExtractedReport,\x20%s,\x20%s',_0x2cfe82,_0x2eb951[_0x2eed('0xd')][_0x2eed('0xf')]);return _0x40c564(_0x2eb951[_0x2eed('0xd')][_0x2eed('0xf')]);}logger[_0x2eed('0xd')](_0x2eed('0x10'),_0x2cfe82,_0x2eb951[_0x2eed('0xd')][_0x2eed('0xf')]);return _0x1b1a75(_0x2eb951[_0x2eed('0xd')]['message']);}else{logger[_0x2eed('0x9')]('AnalyticExtractedReport,\x20%s,\x20%s',_0x2cfe82,_0x2eed('0xa'));_0x1b1a75(_0x2eb951[_0x2eed('0x11')][_0x2eed('0xf')]);}})['catch'](function(_0x13a449){logger['error'](_0x2eed('0x10'),_0x2cfe82,_0x13a449);_0x40c564(_0x13a449);});});}
\ No newline at end of file
index b2060e0..f16e496 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6b93=['/:id','show','/:id/download','download','post','create','put','update','delete','destroy','multer','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../config/environment','./analyticExtractedReport.controller','get','isAuthenticated','index'];(function(_0x4144ca,_0x3f22e3){var _0x2de8ee=function(_0x160005){while(--_0x160005){_0x4144ca['push'](_0x4144ca['shift']());}};_0x2de8ee(++_0x3f22e3);}(_0x6b93,0x191));var _0x36b9=function(_0x8e77f8,_0x37c10f){_0x8e77f8=_0x8e77f8-0x0;var _0x26f682=_0x6b93[_0x8e77f8];return _0x26f682;};'use strict';var multer=require(_0x36b9('0x0'));var util=require(_0x36b9('0x1'));var path=require(_0x36b9('0x2'));var timeout=require(_0x36b9('0x3'));var express=require(_0x36b9('0x4'));var router=express[_0x36b9('0x5')]();var fs_extra=require(_0x36b9('0x6'));var auth=require(_0x36b9('0x7'));var interaction=require('../../components/interaction/service');var config=require(_0x36b9('0x8'));var controller=require(_0x36b9('0x9'));router[_0x36b9('0xa')]('/',auth[_0x36b9('0xb')](),controller[_0x36b9('0xc')]);router[_0x36b9('0xa')](_0x36b9('0xd'),auth[_0x36b9('0xb')](),controller[_0x36b9('0xe')]);router[_0x36b9('0xa')](_0x36b9('0xf'),auth[_0x36b9('0xb')](),controller[_0x36b9('0x10')]);router[_0x36b9('0x11')]('/',auth['isAuthenticated'](),controller[_0x36b9('0x12')]);router[_0x36b9('0x13')]('/:id',auth['isAuthenticated'](),controller[_0x36b9('0x14')]);router[_0x36b9('0x15')](_0x36b9('0xd'),auth[_0x36b9('0xb')](),controller[_0x36b9('0x16')]);module['exports']=router;
\ No newline at end of file
+var _0x0018=['exports','multer','util','path','Router','fs-extra','../../components/auth/service','../../components/interaction/service','./analyticExtractedReport.controller','get','isAuthenticated','index','/:id','create','put','update','delete'];(function(_0x1cf764,_0x59c063){var _0x49ca2b=function(_0x2fb3f8){while(--_0x2fb3f8){_0x1cf764['push'](_0x1cf764['shift']());}};_0x49ca2b(++_0x59c063);}(_0x0018,0x78));var _0x8001=function(_0x21a9d9,_0x4d5ac8){_0x21a9d9=_0x21a9d9-0x0;var _0x46adce=_0x0018[_0x21a9d9];return _0x46adce;};'use strict';var multer=require(_0x8001('0x0'));var util=require(_0x8001('0x1'));var path=require(_0x8001('0x2'));var timeout=require('connect-timeout');var express=require('express');var router=express[_0x8001('0x3')]();var fs_extra=require(_0x8001('0x4'));var auth=require(_0x8001('0x5'));var interaction=require(_0x8001('0x6'));var config=require('../../config/environment');var controller=require(_0x8001('0x7'));router[_0x8001('0x8')]('/',auth[_0x8001('0x9')](),controller[_0x8001('0xa')]);router['get'](_0x8001('0xb'),auth[_0x8001('0x9')](),controller['show']);router['get']('/:id/download',auth['isAuthenticated'](),controller['download']);router['post']('/',auth['isAuthenticated'](),controller[_0x8001('0xc')]);router[_0x8001('0xd')](_0x8001('0xb'),auth[_0x8001('0x9')](),controller[_0x8001('0xe')]);router[_0x8001('0xf')]('/:id',auth[_0x8001('0x9')](),controller['destroy']);module[_0x8001('0x10')]=router;
\ No newline at end of file
index 3ca37ac..b8d4208 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb373=['BOOLEAN','sequelize','exports','STRING'];(function(_0x184d8d,_0x39fbf7){var _0x4800b4=function(_0x43552d){while(--_0x43552d){_0x184d8d['push'](_0x184d8d['shift']());}};_0x4800b4(++_0x39fbf7);}(_0xb373,0x165));var _0x3b37=function(_0x619c69,_0x626ea1){_0x619c69=_0x619c69-0x0;var _0x33d2fe=_0xb373[_0x619c69];return _0x33d2fe;};'use strict';var Sequelize=require(_0x3b37('0x0'));module[_0x3b37('0x1')]={'field':{'type':Sequelize['TEXT']},'alias':{'type':Sequelize[_0x3b37('0x2')]},'function':{'type':Sequelize[_0x3b37('0x2')]},'format':{'type':Sequelize[_0x3b37('0x2')]},'groupBy':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'orderBy':{'type':Sequelize[_0x3b37('0x2')]},'custom':{'type':Sequelize[_0x3b37('0x3')],'defaultValue':![]}};
\ No newline at end of file
+var _0x87f4=['STRING','BOOLEAN','sequelize','exports'];(function(_0x5463a3,_0x57d1c4){var _0x54bb27=function(_0x158334){while(--_0x158334){_0x5463a3['push'](_0x5463a3['shift']());}};_0x54bb27(++_0x57d1c4);}(_0x87f4,0x17a));var _0x487f=function(_0x38dbb5,_0x427be1){_0x38dbb5=_0x38dbb5-0x0;var _0x34bd46=_0x87f4[_0x38dbb5];return _0x34bd46;};'use strict';var Sequelize=require(_0x487f('0x0'));module[_0x487f('0x1')]={'field':{'type':Sequelize['TEXT']},'alias':{'type':Sequelize[_0x487f('0x2')]},'function':{'type':Sequelize['STRING']},'format':{'type':Sequelize['STRING']},'groupBy':{'type':Sequelize[_0x487f('0x3')],'defaultValue':![]},'orderBy':{'type':Sequelize[_0x487f('0x2')]},'custom':{'type':Sequelize[_0x487f('0x3')],'defaultValue':![]}};
\ No newline at end of file
index 02bda46..05a9dce 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xddd7=['../../config/license/hardware','api','../../config/utils','../../config/environment','../../mysqldb','sendStatus','status','end','offset','undefined','limit','count','set','Content-Range','json','apply','reject','save','update','then','destroy','error','stack','name','send','index','map','AnalyticFieldReport','rawAttributes','fieldName','type','key','model','keys','query','filters','intersection','attributes','length','hasOwnProperty','nolimit','order','sort','pick','filter','where','merge','VIRTUAL','options','includeAll','include','findAll','rows','catch','show','params','fields','create','body','bulkCreate','find','ids','addFields','AnalyticCustomReport','findOne','sequelize','CustomReportId','rimraf','request-promise','moment','bluebird','util','path','to-csv','ejs','lodash','jsforce','desk.js','querystring','ioredis','../../components/auth/service','../../components/parsers/advancedSearch'];(function(_0x349b70,_0x41ba4a){var _0x59085c=function(_0x2fb681){while(--_0x2fb681){_0x349b70['push'](_0x349b70['shift']());}};_0x59085c(++_0x41ba4a);}(_0xddd7,0x95));var _0x7ddd=function(_0x457342,_0x578362){_0x457342=_0x457342-0x0;var _0x110cb6=_0xddd7[_0x457342];return _0x110cb6;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x7ddd('0x0'));var zipdir=require('zip-dir');var jsonpatch=require('fast-json-patch');var rp=require(_0x7ddd('0x1'));var moment=require(_0x7ddd('0x2'));var BPromise=require(_0x7ddd('0x3'));var Mustache=require('mustache');var util=require(_0x7ddd('0x4'));var path=require(_0x7ddd('0x5'));var sox=require('sox');var csv=require(_0x7ddd('0x6'));var ejs=require(_0x7ddd('0x7'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x7ddd('0x8'));var squel=require('squel');var crypto=require('crypto');var jsforce=require(_0x7ddd('0x9'));var deskjs=require(_0x7ddd('0xa'));var toCsv=require(_0x7ddd('0x6'));var querystring=require(_0x7ddd('0xb'));var Papa=require('papaparse');var Redis=require(_0x7ddd('0xc'));var authService=require(_0x7ddd('0xd'));var qs=require('../../components/parsers/qs');var as=require(_0x7ddd('0xe'));var hardwareService=require(_0x7ddd('0xf'));var logger=require('../../config/logger')(_0x7ddd('0x10'));var utils=require(_0x7ddd('0x11'));var config=require(_0x7ddd('0x12'));var licenseUtil=require('../../config/license/util');var db=require(_0x7ddd('0x13'))['db'];function respondWithStatusCode(_0x31c609,_0x56b9c3){_0x56b9c3=_0x56b9c3||0xcc;return function(_0x301bda){if(_0x301bda){return _0x31c609[_0x7ddd('0x14')](_0x56b9c3);}return _0x31c609[_0x7ddd('0x15')](_0x56b9c3)[_0x7ddd('0x16')]();};}function respondWithResult(_0x2e14da,_0x3eb3e5){_0x3eb3e5=_0x3eb3e5||0xc8;return function(_0x5c663c){if(_0x5c663c){return _0x2e14da['status'](_0x3eb3e5)['json'](_0x5c663c);}};}function respondWithFilteredResult(_0x73cf29,_0x49413e){return function(_0xcc5a25){if(_0xcc5a25){var _0x2836a7=typeof _0x49413e[_0x7ddd('0x17')]===_0x7ddd('0x18')&&typeof _0x49413e[_0x7ddd('0x19')]===_0x7ddd('0x18');var _0x3c86a8=_0xcc5a25[_0x7ddd('0x1a')];var _0xbc3749=_0x2836a7?0x0:_0x49413e[_0x7ddd('0x17')];var _0x2ca943=_0x2836a7?_0xcc5a25['count']:_0x49413e[_0x7ddd('0x17')]+_0x49413e[_0x7ddd('0x19')];var _0x241061;if(_0x2ca943>=_0x3c86a8){_0x2ca943=_0x3c86a8;_0x241061=0xc8;}else{_0x241061=0xce;}_0x73cf29[_0x7ddd('0x15')](_0x241061);return _0x73cf29[_0x7ddd('0x1b')](_0x7ddd('0x1c'),_0xbc3749+'-'+_0x2ca943+'/'+_0x3c86a8)[_0x7ddd('0x1d')](_0xcc5a25);}return null;};}function patchUpdates(_0x7a6498){return function(_0x5d1921){try{jsonpatch[_0x7ddd('0x1e')](_0x5d1921,_0x7a6498,!![]);}catch(_0x40a6d7){return BPromise[_0x7ddd('0x1f')](_0x40a6d7);}return _0x5d1921[_0x7ddd('0x20')]();};}function saveUpdates(_0x2cfc60,_0x34922c){return function(_0x5bb7b1){if(_0x5bb7b1){return _0x5bb7b1[_0x7ddd('0x21')](_0x2cfc60)[_0x7ddd('0x22')](function(_0x4c4a78){return _0x4c4a78;});}return null;};}function removeEntity(_0x2ea8eb,_0x41479d){return function(_0x4ab541){if(_0x4ab541){return _0x4ab541[_0x7ddd('0x23')]()['then'](function(){_0x2ea8eb['status'](0xcc)['end']();});}};}function handleEntityNotFound(_0x1926e4,_0x1487d4){return function(_0x17812f){if(!_0x17812f){_0x1926e4[_0x7ddd('0x14')](0x194);}return _0x17812f;};}function handleError(_0x16e54e,_0x32bb73){_0x32bb73=_0x32bb73||0x1f4;return function(_0x256895){logger[_0x7ddd('0x24')](_0x256895[_0x7ddd('0x25')]);if(_0x256895[_0x7ddd('0x26')]){delete _0x256895[_0x7ddd('0x26')];}_0x16e54e[_0x7ddd('0x15')](_0x32bb73)[_0x7ddd('0x27')](_0x256895);};}exports[_0x7ddd('0x28')]=function(_0x563e14,_0x42ca8d){var _0x49c42a={},_0x39f8a5={},_0x55c89b={'count':0x0,'rows':[]};var _0x47c692=_[_0x7ddd('0x29')](db[_0x7ddd('0x2a')][_0x7ddd('0x2b')],function(_0x2c5f25){return{'name':_0x2c5f25[_0x7ddd('0x2c')],'type':_0x2c5f25[_0x7ddd('0x2d')][_0x7ddd('0x2e')]};});_0x39f8a5[_0x7ddd('0x2f')]=_[_0x7ddd('0x29')](_0x47c692,_0x7ddd('0x26'));_0x39f8a5['query']=_[_0x7ddd('0x30')](_0x563e14[_0x7ddd('0x31')]);_0x39f8a5[_0x7ddd('0x32')]=_[_0x7ddd('0x33')](_0x39f8a5[_0x7ddd('0x2f')],_0x39f8a5[_0x7ddd('0x31')]);_0x49c42a['attributes']=_[_0x7ddd('0x33')](_0x39f8a5[_0x7ddd('0x2f')],qs['fields'](_0x563e14[_0x7ddd('0x31')]['fields']));_0x49c42a[_0x7ddd('0x34')]=_0x49c42a[_0x7ddd('0x34')][_0x7ddd('0x35')]?_0x49c42a[_0x7ddd('0x34')]:_0x39f8a5['model'];if(!_0x563e14[_0x7ddd('0x31')][_0x7ddd('0x36')](_0x7ddd('0x37'))){_0x49c42a[_0x7ddd('0x19')]=qs['limit'](_0x563e14[_0x7ddd('0x31')][_0x7ddd('0x19')]);_0x49c42a[_0x7ddd('0x17')]=qs[_0x7ddd('0x17')](_0x563e14[_0x7ddd('0x31')][_0x7ddd('0x17')]);}_0x49c42a[_0x7ddd('0x38')]=qs[_0x7ddd('0x39')](_0x563e14[_0x7ddd('0x31')][_0x7ddd('0x39')]);_0x49c42a['where']=qs[_0x7ddd('0x32')](_[_0x7ddd('0x3a')](_0x563e14['query'],_0x39f8a5['filters']),_0x47c692);if(_0x563e14[_0x7ddd('0x31')][_0x7ddd('0x3b')]){_0x49c42a[_0x7ddd('0x3c')]=_[_0x7ddd('0x3d')](_0x49c42a[_0x7ddd('0x3c')],{'$or':_['map'](_0x47c692,function(_0x11f5aa){if(_0x11f5aa[_0x7ddd('0x2d')]!==_0x7ddd('0x3e')){var _0x4f7000={};_0x4f7000[_0x11f5aa[_0x7ddd('0x26')]]={'$like':'%'+_0x563e14[_0x7ddd('0x31')]['filter']+'%'};return _0x4f7000;}})});}_0x49c42a=_['merge']({},_0x49c42a,_0x563e14[_0x7ddd('0x3f')]);var _0x42a4df={'where':_0x49c42a[_0x7ddd('0x3c')]};return db[_0x7ddd('0x2a')]['count'](_0x42a4df)[_0x7ddd('0x22')](function(_0x10cc84){_0x55c89b[_0x7ddd('0x1a')]=_0x10cc84;if(_0x563e14[_0x7ddd('0x31')][_0x7ddd('0x40')]){_0x49c42a[_0x7ddd('0x41')]=[{'all':!![]}];}return db[_0x7ddd('0x2a')][_0x7ddd('0x42')](_0x49c42a);})[_0x7ddd('0x22')](function(_0x16892a){_0x55c89b[_0x7ddd('0x43')]=_0x16892a;return _0x55c89b;})[_0x7ddd('0x22')](respondWithFilteredResult(_0x42ca8d,_0x49c42a))[_0x7ddd('0x44')](handleError(_0x42ca8d,null));};exports[_0x7ddd('0x45')]=function(_0x59cddd,_0x20e3b3){var _0x11f2ed={'raw':![],'where':{'id':_0x59cddd[_0x7ddd('0x46')]['id']}},_0xfbc78c={};_0xfbc78c['model']=_[_0x7ddd('0x30')](db[_0x7ddd('0x2a')]['rawAttributes']);_0xfbc78c[_0x7ddd('0x31')]=_['keys'](_0x59cddd[_0x7ddd('0x31')]);_0xfbc78c[_0x7ddd('0x32')]=_['intersection'](_0xfbc78c[_0x7ddd('0x2f')],_0xfbc78c[_0x7ddd('0x31')]);_0x11f2ed[_0x7ddd('0x34')]=_[_0x7ddd('0x33')](_0xfbc78c['model'],qs['fields'](_0x59cddd[_0x7ddd('0x31')][_0x7ddd('0x47')]));_0x11f2ed[_0x7ddd('0x34')]=_0x11f2ed['attributes'][_0x7ddd('0x35')]?_0x11f2ed[_0x7ddd('0x34')]:_0xfbc78c[_0x7ddd('0x2f')];if(_0x59cddd[_0x7ddd('0x31')][_0x7ddd('0x40')]){_0x11f2ed[_0x7ddd('0x41')]=[{'all':!![]}];}_0x11f2ed=_[_0x7ddd('0x3d')]({},_0x11f2ed,_0x59cddd[_0x7ddd('0x3f')]);return db['AnalyticFieldReport']['find'](_0x11f2ed)[_0x7ddd('0x22')](handleEntityNotFound(_0x20e3b3,null))[_0x7ddd('0x22')](respondWithResult(_0x20e3b3,null))[_0x7ddd('0x44')](handleError(_0x20e3b3,null));};exports[_0x7ddd('0x48')]=function(_0x105e05,_0x44f5f1){return db[_0x7ddd('0x2a')][_0x7ddd('0x48')](_0x105e05[_0x7ddd('0x49')],{})[_0x7ddd('0x22')](respondWithResult(_0x44f5f1,0xc9))[_0x7ddd('0x44')](handleError(_0x44f5f1,null));};exports[_0x7ddd('0x4a')]=function(_0xa692ab,_0x11c70a){return db[_0x7ddd('0x2a')][_0x7ddd('0x4a')](_0xa692ab['body'],{'raw':![],'individualHooks':!![]})['then'](respondWithResult(_0x11c70a,0xc9))[_0x7ddd('0x44')](handleError(_0x11c70a,null));};exports['update']=function(_0x18910c,_0x232e6b){if(_0x18910c[_0x7ddd('0x49')]['id']){delete _0x18910c[_0x7ddd('0x49')]['id'];}return db[_0x7ddd('0x2a')][_0x7ddd('0x4b')]({'where':{'id':_0x18910c[_0x7ddd('0x46')]['id']}})['then'](handleEntityNotFound(_0x232e6b,null))[_0x7ddd('0x22')](saveUpdates(_0x18910c[_0x7ddd('0x49')],null))[_0x7ddd('0x22')](respondWithResult(_0x232e6b,null))[_0x7ddd('0x44')](handleError(_0x232e6b,null));};exports[_0x7ddd('0x23')]=function(_0x6decf3,_0x1aaf54){return db[_0x7ddd('0x2a')][_0x7ddd('0x4b')]({'where':{'id':_0x6decf3['params']['id']}})[_0x7ddd('0x22')](handleEntityNotFound(_0x1aaf54,null))[_0x7ddd('0x22')](removeEntity(_0x1aaf54,null))['catch'](handleError(_0x1aaf54,null));};exports['bulkDestroy']=function(_0x5f2bb1,_0x1872b8){return db['AnalyticFieldReport'][_0x7ddd('0x23')]({'where':{'id':_0x5f2bb1[_0x7ddd('0x31')][_0x7ddd('0x4c')]||[]},'raw':![],'individualHooks':!![]})[_0x7ddd('0x22')](respondWithResult(_0x1872b8,0xcc))[_0x7ddd('0x44')](handleError(_0x1872b8,null));};exports[_0x7ddd('0x4d')]=function(_0x2cd7f0,_0x35cd36,_0x319fca){return db[_0x7ddd('0x4e')][_0x7ddd('0x4f')]({'where':{'id':_0x2cd7f0[_0x7ddd('0x46')]['id']}})[_0x7ddd('0x22')](handleEntityNotFound(_0x35cd36,null))[_0x7ddd('0x22')](function(_0x1c7511){if(_0x1c7511){return db[_0x7ddd('0x50')]['transaction'](function(_0x468230){return db[_0x7ddd('0x2a')][_0x7ddd('0x23')]({'where':{'CustomReportId':_0x2cd7f0[_0x7ddd('0x46')]['id']},'transaction':_0x468230})['then'](function(_0x5bd094){var _0x5f5ca7=_[_0x7ddd('0x29')](_0x2cd7f0['body'],function(_0x12b8e7){delete _0x12b8e7['id'];_0x12b8e7[_0x7ddd('0x51')]=_0x2cd7f0[_0x7ddd('0x46')]['id'];return _0x12b8e7;});return db['AnalyticFieldReport'][_0x7ddd('0x4a')](_0x5f5ca7,{'transaction':_0x468230});});})[_0x7ddd('0x22')](function(){return db['AnalyticFieldReport'][_0x7ddd('0x42')]({'where':{'CustomReportId':_0x2cd7f0[_0x7ddd('0x46')]['id']}});});}})[_0x7ddd('0x22')](respondWithResult(_0x35cd36,null))[_0x7ddd('0x44')](handleError(_0x35cd36,null));};
\ No newline at end of file
+var _0xd215=['key','keys','intersection','model','query','attributes','fields','length','nolimit','order','sort','filters','pick','where','merge','VIRTUAL','filter','options','includeAll','include','AnalyticFieldReport','findAll','rows','catch','show','params','create','body','bulkCreate','find','addFields','AnalyticCustomReport','findOne','sequelize','transaction','CustomReportId','eml-format','request-promise','moment','bluebird','mustache','util','path','to-csv','ejs','fs-extra','squel','crypto','desk.js','papaparse','ioredis','../../components/auth/service','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../mysqldb','sendStatus','status','undefined','limit','offset','count','Content-Range','apply','reject','save','update','then','destroy','end','error','name','index','map','rawAttributes','fieldName','type'];(function(_0x24606a,_0x4f999){var _0x2168ce=function(_0x310646){while(--_0x310646){_0x24606a['push'](_0x24606a['shift']());}};_0x2168ce(++_0x4f999);}(_0xd215,0xc2));var _0x5d21=function(_0x31b659,_0x44f3d2){_0x31b659=_0x31b659-0x0;var _0xe67ee4=_0xd215[_0x31b659];return _0xe67ee4;};'use strict';var emlformat=require(_0x5d21('0x0'));var rimraf=require('rimraf');var zipdir=require('zip-dir');var jsonpatch=require('fast-json-patch');var rp=require(_0x5d21('0x1'));var moment=require(_0x5d21('0x2'));var BPromise=require(_0x5d21('0x3'));var Mustache=require(_0x5d21('0x4'));var util=require(_0x5d21('0x5'));var path=require(_0x5d21('0x6'));var sox=require('sox');var csv=require(_0x5d21('0x7'));var ejs=require(_0x5d21('0x8'));var fs=require('fs');var fs_extra=require(_0x5d21('0x9'));var _=require('lodash');var squel=require(_0x5d21('0xa'));var crypto=require(_0x5d21('0xb'));var jsforce=require('jsforce');var deskjs=require(_0x5d21('0xc'));var toCsv=require(_0x5d21('0x7'));var querystring=require('querystring');var Papa=require(_0x5d21('0xd'));var Redis=require(_0x5d21('0xe'));var authService=require(_0x5d21('0xf'));var qs=require('../../components/parsers/qs');var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x5d21('0x10'));var logger=require(_0x5d21('0x11'))(_0x5d21('0x12'));var utils=require(_0x5d21('0x13'));var config=require(_0x5d21('0x14'));var licenseUtil=require('../../config/license/util');var db=require(_0x5d21('0x15'))['db'];function respondWithStatusCode(_0x1227a9,_0x36e3a7){_0x36e3a7=_0x36e3a7||0xcc;return function(_0x4958ed){if(_0x4958ed){return _0x1227a9[_0x5d21('0x16')](_0x36e3a7);}return _0x1227a9['status'](_0x36e3a7)['end']();};}function respondWithResult(_0x4aaf55,_0x2d745e){_0x2d745e=_0x2d745e||0xc8;return function(_0x5f25f1){if(_0x5f25f1){return _0x4aaf55[_0x5d21('0x17')](_0x2d745e)['json'](_0x5f25f1);}};}function respondWithFilteredResult(_0x166f47,_0x1ecf8f){return function(_0x1627fa){if(_0x1627fa){var _0x182a51=typeof _0x1ecf8f['offset']===_0x5d21('0x18')&&typeof _0x1ecf8f[_0x5d21('0x19')]===_0x5d21('0x18');var _0x4781d6=_0x1627fa['count'];var _0x1b24fb=_0x182a51?0x0:_0x1ecf8f[_0x5d21('0x1a')];var _0x2de61f=_0x182a51?_0x1627fa[_0x5d21('0x1b')]:_0x1ecf8f['offset']+_0x1ecf8f[_0x5d21('0x19')];var _0x11f133;if(_0x2de61f>=_0x4781d6){_0x2de61f=_0x4781d6;_0x11f133=0xc8;}else{_0x11f133=0xce;}_0x166f47[_0x5d21('0x17')](_0x11f133);return _0x166f47['set'](_0x5d21('0x1c'),_0x1b24fb+'-'+_0x2de61f+'/'+_0x4781d6)['json'](_0x1627fa);}return null;};}function patchUpdates(_0x5a72c4){return function(_0x4bb804){try{jsonpatch[_0x5d21('0x1d')](_0x4bb804,_0x5a72c4,!![]);}catch(_0x3cc278){return BPromise[_0x5d21('0x1e')](_0x3cc278);}return _0x4bb804[_0x5d21('0x1f')]();};}function saveUpdates(_0x37df58,_0x3549a6){return function(_0x12183a){if(_0x12183a){return _0x12183a[_0x5d21('0x20')](_0x37df58)[_0x5d21('0x21')](function(_0x439eca){return _0x439eca;});}return null;};}function removeEntity(_0x5a6b81,_0x1deec2){return function(_0x1c9ae5){if(_0x1c9ae5){return _0x1c9ae5[_0x5d21('0x22')]()['then'](function(){_0x5a6b81[_0x5d21('0x17')](0xcc)[_0x5d21('0x23')]();});}};}function handleEntityNotFound(_0x353200,_0x5b2617){return function(_0x7feb5f){if(!_0x7feb5f){_0x353200[_0x5d21('0x16')](0x194);}return _0x7feb5f;};}function handleError(_0x12d7a7,_0x9beab8){_0x9beab8=_0x9beab8||0x1f4;return function(_0x53b644){logger[_0x5d21('0x24')](_0x53b644['stack']);if(_0x53b644['name']){delete _0x53b644[_0x5d21('0x25')];}_0x12d7a7[_0x5d21('0x17')](_0x9beab8)['send'](_0x53b644);};}exports[_0x5d21('0x26')]=function(_0x5e6412,_0x477d53){var _0x528128={},_0x22d813={},_0x3a22c3={'count':0x0,'rows':[]};var _0x34b05e=_[_0x5d21('0x27')](db['AnalyticFieldReport'][_0x5d21('0x28')],function(_0x603c79){return{'name':_0x603c79[_0x5d21('0x29')],'type':_0x603c79[_0x5d21('0x2a')][_0x5d21('0x2b')]};});_0x22d813['model']=_[_0x5d21('0x27')](_0x34b05e,_0x5d21('0x25'));_0x22d813['query']=_[_0x5d21('0x2c')](_0x5e6412['query']);_0x22d813['filters']=_[_0x5d21('0x2d')](_0x22d813[_0x5d21('0x2e')],_0x22d813[_0x5d21('0x2f')]);_0x528128[_0x5d21('0x30')]=_[_0x5d21('0x2d')](_0x22d813['model'],qs['fields'](_0x5e6412['query'][_0x5d21('0x31')]));_0x528128[_0x5d21('0x30')]=_0x528128['attributes'][_0x5d21('0x32')]?_0x528128[_0x5d21('0x30')]:_0x22d813[_0x5d21('0x2e')];if(!_0x5e6412[_0x5d21('0x2f')]['hasOwnProperty'](_0x5d21('0x33'))){_0x528128[_0x5d21('0x19')]=qs[_0x5d21('0x19')](_0x5e6412['query']['limit']);_0x528128[_0x5d21('0x1a')]=qs[_0x5d21('0x1a')](_0x5e6412['query'][_0x5d21('0x1a')]);}_0x528128[_0x5d21('0x34')]=qs['sort'](_0x5e6412[_0x5d21('0x2f')][_0x5d21('0x35')]);_0x528128['where']=qs[_0x5d21('0x36')](_[_0x5d21('0x37')](_0x5e6412[_0x5d21('0x2f')],_0x22d813[_0x5d21('0x36')]),_0x34b05e);if(_0x5e6412[_0x5d21('0x2f')]['filter']){_0x528128[_0x5d21('0x38')]=_[_0x5d21('0x39')](_0x528128[_0x5d21('0x38')],{'$or':_[_0x5d21('0x27')](_0x34b05e,function(_0x429daa){if(_0x429daa['type']!==_0x5d21('0x3a')){var _0x2e15e5={};_0x2e15e5[_0x429daa[_0x5d21('0x25')]]={'$like':'%'+_0x5e6412[_0x5d21('0x2f')][_0x5d21('0x3b')]+'%'};return _0x2e15e5;}})});}_0x528128=_[_0x5d21('0x39')]({},_0x528128,_0x5e6412[_0x5d21('0x3c')]);var _0x2e17d6={'where':_0x528128['where']};return db['AnalyticFieldReport']['count'](_0x2e17d6)[_0x5d21('0x21')](function(_0x114120){_0x3a22c3[_0x5d21('0x1b')]=_0x114120;if(_0x5e6412[_0x5d21('0x2f')][_0x5d21('0x3d')]){_0x528128[_0x5d21('0x3e')]=[{'all':!![]}];}return db[_0x5d21('0x3f')][_0x5d21('0x40')](_0x528128);})['then'](function(_0x2fca32){_0x3a22c3[_0x5d21('0x41')]=_0x2fca32;return _0x3a22c3;})['then'](respondWithFilteredResult(_0x477d53,_0x528128))[_0x5d21('0x42')](handleError(_0x477d53,null));};exports[_0x5d21('0x43')]=function(_0x56af36,_0xf9a838){var _0x5ef7c1={'raw':![],'where':{'id':_0x56af36[_0x5d21('0x44')]['id']}},_0x4c3d3f={};_0x4c3d3f['model']=_[_0x5d21('0x2c')](db['AnalyticFieldReport'][_0x5d21('0x28')]);_0x4c3d3f[_0x5d21('0x2f')]=_['keys'](_0x56af36[_0x5d21('0x2f')]);_0x4c3d3f['filters']=_['intersection'](_0x4c3d3f['model'],_0x4c3d3f[_0x5d21('0x2f')]);_0x5ef7c1[_0x5d21('0x30')]=_[_0x5d21('0x2d')](_0x4c3d3f[_0x5d21('0x2e')],qs[_0x5d21('0x31')](_0x56af36['query'][_0x5d21('0x31')]));_0x5ef7c1['attributes']=_0x5ef7c1[_0x5d21('0x30')]['length']?_0x5ef7c1[_0x5d21('0x30')]:_0x4c3d3f[_0x5d21('0x2e')];if(_0x56af36[_0x5d21('0x2f')]['includeAll']){_0x5ef7c1[_0x5d21('0x3e')]=[{'all':!![]}];}_0x5ef7c1=_['merge']({},_0x5ef7c1,_0x56af36[_0x5d21('0x3c')]);return db[_0x5d21('0x3f')]['find'](_0x5ef7c1)[_0x5d21('0x21')](handleEntityNotFound(_0xf9a838,null))['then'](respondWithResult(_0xf9a838,null))[_0x5d21('0x42')](handleError(_0xf9a838,null));};exports[_0x5d21('0x45')]=function(_0x3ed31b,_0x2b188d){return db[_0x5d21('0x3f')][_0x5d21('0x45')](_0x3ed31b[_0x5d21('0x46')],{})[_0x5d21('0x21')](respondWithResult(_0x2b188d,0xc9))[_0x5d21('0x42')](handleError(_0x2b188d,null));};exports['bulkCreate']=function(_0x595fc3,_0xaa3772){return db[_0x5d21('0x3f')][_0x5d21('0x47')](_0x595fc3[_0x5d21('0x46')],{'raw':![],'individualHooks':!![]})[_0x5d21('0x21')](respondWithResult(_0xaa3772,0xc9))[_0x5d21('0x42')](handleError(_0xaa3772,null));};exports[_0x5d21('0x20')]=function(_0x149fb0,_0x508b51){if(_0x149fb0['body']['id']){delete _0x149fb0['body']['id'];}return db['AnalyticFieldReport']['find']({'where':{'id':_0x149fb0[_0x5d21('0x44')]['id']}})['then'](handleEntityNotFound(_0x508b51,null))[_0x5d21('0x21')](saveUpdates(_0x149fb0[_0x5d21('0x46')],null))[_0x5d21('0x21')](respondWithResult(_0x508b51,null))['catch'](handleError(_0x508b51,null));};exports[_0x5d21('0x22')]=function(_0x33c1f9,_0x2c4370){return db['AnalyticFieldReport'][_0x5d21('0x48')]({'where':{'id':_0x33c1f9[_0x5d21('0x44')]['id']}})[_0x5d21('0x21')](handleEntityNotFound(_0x2c4370,null))['then'](removeEntity(_0x2c4370,null))[_0x5d21('0x42')](handleError(_0x2c4370,null));};exports['bulkDestroy']=function(_0x467f03,_0x1c382c){return db[_0x5d21('0x3f')]['destroy']({'where':{'id':_0x467f03[_0x5d21('0x2f')]['ids']||[]},'raw':![],'individualHooks':!![]})[_0x5d21('0x21')](respondWithResult(_0x1c382c,0xcc))[_0x5d21('0x42')](handleError(_0x1c382c,null));};exports[_0x5d21('0x49')]=function(_0x1d3ff0,_0x14f143,_0x48fdb8){return db[_0x5d21('0x4a')][_0x5d21('0x4b')]({'where':{'id':_0x1d3ff0[_0x5d21('0x44')]['id']}})[_0x5d21('0x21')](handleEntityNotFound(_0x14f143,null))[_0x5d21('0x21')](function(_0x20b318){if(_0x20b318){return db[_0x5d21('0x4c')][_0x5d21('0x4d')](function(_0x331529){return db[_0x5d21('0x3f')][_0x5d21('0x22')]({'where':{'CustomReportId':_0x1d3ff0[_0x5d21('0x44')]['id']},'transaction':_0x331529})[_0x5d21('0x21')](function(_0x285009){var _0x359f47=_[_0x5d21('0x27')](_0x1d3ff0[_0x5d21('0x46')],function(_0x34d0e1){delete _0x34d0e1['id'];_0x34d0e1[_0x5d21('0x4e')]=_0x1d3ff0['params']['id'];return _0x34d0e1;});return db[_0x5d21('0x3f')][_0x5d21('0x47')](_0x359f47,{'transaction':_0x331529});});})['then'](function(){return db['AnalyticFieldReport']['findAll']({'where':{'CustomReportId':_0x1d3ff0['params']['id']}});});}})['then'](respondWithResult(_0x14f143,null))[_0x5d21('0x42')](handleError(_0x14f143,null));};
\ No newline at end of file
index 04b8854..e81a779 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0645=['moment','request-promise','path','../../config/environment','exports','define','analytics_report_fields','lodash','util','../../config/logger','api'];(function(_0x4d613c,_0x55f220){var _0x301fe3=function(_0x5eec0b){while(--_0x5eec0b){_0x4d613c['push'](_0x4d613c['shift']());}};_0x301fe3(++_0x55f220);}(_0x0645,0x1ca));var _0x5064=function(_0xc30cf0,_0x1ea6d7){_0xc30cf0=_0xc30cf0-0x0;var _0x2e2072=_0x0645[_0xc30cf0];return _0x2e2072;};'use strict';var _=require(_0x5064('0x0'));var util=require(_0x5064('0x1'));var logger=require(_0x5064('0x2'))(_0x5064('0x3'));var moment=require(_0x5064('0x4'));var BPromise=require('bluebird');var rp=require(_0x5064('0x5'));var fs=require('fs');var path=require(_0x5064('0x6'));var rimraf=require('rimraf');var config=require(_0x5064('0x7'));var attributes=require('./analyticFieldReport.attributes');module[_0x5064('0x8')]=function(_0x4fdd43,_0x441887){return _0x4fdd43[_0x5064('0x9')]('AnalyticFieldReport',attributes,{'tableName':_0x5064('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x67e2=['../../config/logger','api','bluebird','request-promise','rimraf','../../config/environment','./analyticFieldReport.attributes','define','analytics_report_fields'];(function(_0x3ed0d5,_0x5f0e1f){var _0x5e4563=function(_0x1517ea){while(--_0x1517ea){_0x3ed0d5['push'](_0x3ed0d5['shift']());}};_0x5e4563(++_0x5f0e1f);}(_0x67e2,0xf3));var _0x267e=function(_0x72ee58,_0x3ddc46){_0x72ee58=_0x72ee58-0x0;var _0x233307=_0x67e2[_0x72ee58];return _0x233307;};'use strict';var _=require('lodash');var util=require('util');var logger=require(_0x267e('0x0'))(_0x267e('0x1'));var moment=require('moment');var BPromise=require(_0x267e('0x2'));var rp=require(_0x267e('0x3'));var fs=require('fs');var path=require('path');var rimraf=require(_0x267e('0x4'));var config=require(_0x267e('0x5'));var attributes=require(_0x267e('0x6'));module['exports']=function(_0x4c8ce4,_0x2781dd){return _0x4c8ce4[_0x267e('0x7')]('AnalyticFieldReport',attributes,{'tableName':_0x267e('0x8'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index e252b01..a34c9d0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb6b8=['../../config/logger','rpc','../../config/environment','request','then','info','AnalyticFieldReport,\x20%s,\x20%s','request\x20sent','debug','AnalyticFieldReport,\x20%s,\x20%s,\x20%s','error','code','message','result','catch','util','moment','bluebird','randomstring','ioredis','../../mysqldb'];(function(_0x501510,_0x61caa9){var _0x1e6ee5=function(_0x32845b){while(--_0x32845b){_0x501510['push'](_0x501510['shift']());}};_0x1e6ee5(++_0x61caa9);}(_0xb6b8,0x14a));var _0x8b6b=function(_0xdba154,_0x3e082a){_0xdba154=_0xdba154-0x0;var _0x289287=_0xb6b8[_0xdba154];return _0x289287;};'use strict';var _=require('lodash');var util=require(_0x8b6b('0x0'));var moment=require(_0x8b6b('0x1'));var BPromise=require(_0x8b6b('0x2'));var rs=require(_0x8b6b('0x3'));var fs=require('fs');var Redis=require(_0x8b6b('0x4'));var db=require(_0x8b6b('0x5'))['db'];var utils=require('../../config/utils');var logger=require(_0x8b6b('0x6'))(_0x8b6b('0x7'));var config=require(_0x8b6b('0x8'));var jayson=require('jayson/promise');var client=jayson['client']['http']({'port':0x232a});function respondWithRpcPromise(_0x330553,_0x1693b2,_0x20c9d5){return new BPromise(function(_0x7e5559,_0xbf322){return client[_0x8b6b('0x9')](_0x330553,_0x20c9d5)[_0x8b6b('0xa')](function(_0x338a25){logger[_0x8b6b('0xb')](_0x8b6b('0xc'),_0x1693b2,_0x8b6b('0xd'));logger[_0x8b6b('0xe')](_0x8b6b('0xf'),_0x1693b2,'request\x20sent',JSON['stringify'](_0x338a25));if(_0x338a25[_0x8b6b('0x10')]){if(_0x338a25[_0x8b6b('0x10')][_0x8b6b('0x11')]===0x1f4){logger['error']('AnalyticFieldReport,\x20%s,\x20%s',_0x1693b2,_0x338a25[_0x8b6b('0x10')]['message']);return _0xbf322(_0x338a25[_0x8b6b('0x10')][_0x8b6b('0x12')]);}logger[_0x8b6b('0x10')](_0x8b6b('0xc'),_0x1693b2,_0x338a25[_0x8b6b('0x10')][_0x8b6b('0x12')]);return _0x7e5559(_0x338a25[_0x8b6b('0x10')][_0x8b6b('0x12')]);}else{logger[_0x8b6b('0xb')]('AnalyticFieldReport,\x20%s,\x20%s',_0x1693b2,_0x8b6b('0xd'));_0x7e5559(_0x338a25[_0x8b6b('0x13')][_0x8b6b('0x12')]);}})[_0x8b6b('0x14')](function(_0x3b434d){logger[_0x8b6b('0x10')]('AnalyticFieldReport,\x20%s,\x20%s',_0x1693b2,_0x3b434d);_0xbf322(_0x3b434d);});});}
\ No newline at end of file
+var _0x42c1=['request\x20sent','stringify','error','message','result','catch','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','jayson/promise','client','http','request','info','AnalyticFieldReport,\x20%s,\x20%s','debug','AnalyticFieldReport,\x20%s,\x20%s,\x20%s'];(function(_0x52fd3d,_0x3af718){var _0x49b06d=function(_0x2f4a2b){while(--_0x2f4a2b){_0x52fd3d['push'](_0x52fd3d['shift']());}};_0x49b06d(++_0x3af718);}(_0x42c1,0x1ce));var _0x142c=function(_0x1ff321,_0x155fa5){_0x1ff321=_0x1ff321-0x0;var _0x5a81b3=_0x42c1[_0x1ff321];return _0x5a81b3;};'use strict';var _=require(_0x142c('0x0'));var util=require(_0x142c('0x1'));var moment=require(_0x142c('0x2'));var BPromise=require(_0x142c('0x3'));var rs=require(_0x142c('0x4'));var fs=require('fs');var Redis=require(_0x142c('0x5'));var db=require(_0x142c('0x6'))['db'];var utils=require(_0x142c('0x7'));var logger=require(_0x142c('0x8'))(_0x142c('0x9'));var config=require('../../config/environment');var jayson=require(_0x142c('0xa'));var client=jayson[_0x142c('0xb')][_0x142c('0xc')]({'port':0x232a});function respondWithRpcPromise(_0x4bb2cf,_0x9649b,_0x2d3e1a){return new BPromise(function(_0x102dca,_0x7c61ac){return client[_0x142c('0xd')](_0x4bb2cf,_0x2d3e1a)['then'](function(_0x57beca){logger[_0x142c('0xe')](_0x142c('0xf'),_0x9649b,'request\x20sent');logger[_0x142c('0x10')](_0x142c('0x11'),_0x9649b,_0x142c('0x12'),JSON[_0x142c('0x13')](_0x57beca));if(_0x57beca[_0x142c('0x14')]){if(_0x57beca[_0x142c('0x14')]['code']===0x1f4){logger[_0x142c('0x14')](_0x142c('0xf'),_0x9649b,_0x57beca[_0x142c('0x14')][_0x142c('0x15')]);return _0x7c61ac(_0x57beca[_0x142c('0x14')][_0x142c('0x15')]);}logger[_0x142c('0x14')](_0x142c('0xf'),_0x9649b,_0x57beca['error'][_0x142c('0x15')]);return _0x102dca(_0x57beca['error']['message']);}else{logger[_0x142c('0xe')]('AnalyticFieldReport,\x20%s,\x20%s',_0x9649b,_0x142c('0x12'));_0x102dca(_0x57beca[_0x142c('0x16')][_0x142c('0x15')]);}})[_0x142c('0x17')](function(_0x1b02d5){logger[_0x142c('0x14')](_0x142c('0xf'),_0x9649b,_0x1b02d5);_0x7c61ac(_0x1b02d5);});});}
\ No newline at end of file
index e637958..0989598 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(_0x235acd,_0x18f6e4){var _0xd47ef3=function(_0x10db64){while(--_0x10db64){_0x235acd['push'](_0x235acd['shift']());}};_0xd47ef3(++_0x18f6e4);}(_0xa9e0,0x123));var _0x0a9e=function(_0x1facfa,_0x1acf7d){_0x1facfa=_0x1facfa-0x0;var _0x9ec701=_0xa9e0[_0x1facfa];return _0x9ec701;};'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(_0x5e2751,_0x518a55){var _0x139a39=function(_0x4802db){while(--_0x4802db){_0x5e2751['push'](_0x5e2751['shift']());}};_0x139a39(++_0x518a55);}(_0xa9e0,0x123));var _0x0a9e=function(_0x6c993a,_0x5ea3ab){_0x6c993a=_0x6c993a-0x0;var _0x27f547=_0xa9e0[_0x6c993a];return _0x27f547;};'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 9ca737a..157d516 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x93e7=['name','TEXT','sequelize','STRING'];(function(_0x2d68bf,_0x297fad){var _0x3a0e52=function(_0x2e67d1){while(--_0x2e67d1){_0x2d68bf['push'](_0x2d68bf['shift']());}};_0x3a0e52(++_0x297fad);}(_0x93e7,0x9e));var _0x793e=function(_0x333fc8,_0x2b292c){_0x333fc8=_0x333fc8-0x0;var _0x432439=_0x93e7[_0x333fc8];return _0x432439;};'use strict';var Sequelize=require(_0x793e('0x0'));module['exports']={'name':{'type':Sequelize[_0x793e('0x1')],'allowNull':![],'unique':_0x793e('0x2')},'table':{'type':Sequelize['STRING']},'metric':{'type':Sequelize[_0x793e('0x3')]},'description':{'type':Sequelize[_0x793e('0x1')]}};
\ No newline at end of file
+var _0xb544=['TEXT','STRING','name'];(function(_0x52121e,_0x4e7ac8){var _0x2d7778=function(_0x41775c){while(--_0x41775c){_0x52121e['push'](_0x52121e['shift']());}};_0x2d7778(++_0x4e7ac8);}(_0xb544,0xd0));var _0x4b54=function(_0x88cd7b,_0x4c884c){_0x88cd7b=_0x88cd7b-0x0;var _0x56fcc8=_0xb544[_0x88cd7b];return _0x56fcc8;};'use strict';var Sequelize=require('sequelize');module['exports']={'name':{'type':Sequelize[_0x4b54('0x0')],'allowNull':![],'unique':_0x4b54('0x1')},'table':{'type':Sequelize[_0x4b54('0x0')]},'metric':{'type':Sequelize[_0x4b54('0x2')]},'description':{'type':Sequelize[_0x4b54('0x0')]}};
\ No newline at end of file
index 58c91b8..12b56cf 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x008c=['path','sox','to-csv','ejs','fs-extra','lodash','crypto','desk.js','papaparse','ioredis','../../config/license/hardware','../../config/logger','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','end','status','json','offset','undefined','limit','count','save','update','then','destroy','get','stack','name','index','map','AnalyticMetric','rawAttributes','fieldName','type','key','model','keys','query','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort','filters','filter','where','merge','VIRTUAL','options','include','findAll','catch','show','params','includeAll','find','create','body','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','UserProfileSection','userProfileId','autoAssociation','UserProfileResource','error','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','bluebird','mustache','util'];(function(_0x4b744a,_0x308bef){var _0x4572fc=function(_0x53f5c4){while(--_0x53f5c4){_0x4b744a['push'](_0x4b744a['shift']());}};_0x4572fc(++_0x308bef);}(_0x008c,0x188));var _0xc008=function(_0xf3de7a,_0x464f47){_0xf3de7a=_0xf3de7a-0x0;var _0x56f74a=_0x008c[_0xf3de7a];return _0x56f74a;};'use strict';var emlformat=require(_0xc008('0x0'));var rimraf=require(_0xc008('0x1'));var zipdir=require(_0xc008('0x2'));var jsonpatch=require(_0xc008('0x3'));var rp=require(_0xc008('0x4'));var moment=require('moment');var BPromise=require(_0xc008('0x5'));var Mustache=require(_0xc008('0x6'));var util=require(_0xc008('0x7'));var path=require(_0xc008('0x8'));var sox=require(_0xc008('0x9'));var csv=require(_0xc008('0xa'));var ejs=require(_0xc008('0xb'));var fs=require('fs');var fs_extra=require(_0xc008('0xc'));var _=require(_0xc008('0xd'));var squel=require('squel');var crypto=require(_0xc008('0xe'));var jsforce=require('jsforce');var deskjs=require(_0xc008('0xf'));var toCsv=require('to-csv');var querystring=require('querystring');var Papa=require(_0xc008('0x10'));var Redis=require(_0xc008('0x11'));var authService=require('../../components/auth/service');var qs=require('../../components/parsers/qs');var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0xc008('0x12'));var logger=require(_0xc008('0x13'))('api');var utils=require(_0xc008('0x14'));var config=require(_0xc008('0x15'));var licenseUtil=require(_0xc008('0x16'));var db=require(_0xc008('0x17'))['db'];function respondWithStatusCode(_0x9ffa93,_0x1819c6){_0x1819c6=_0x1819c6||0xcc;return function(_0x69726e){if(_0x69726e){return _0x9ffa93['sendStatus'](_0x1819c6);}return _0x9ffa93['status'](_0x1819c6)[_0xc008('0x18')]();};}function respondWithResult(_0x50c1ab,_0x25e13f){_0x25e13f=_0x25e13f||0xc8;return function(_0x4584e1){if(_0x4584e1){return _0x50c1ab[_0xc008('0x19')](_0x25e13f)[_0xc008('0x1a')](_0x4584e1);}};}function respondWithFilteredResult(_0x3f0ecf,_0x5ee00b){return function(_0x5e894e){if(_0x5e894e){var _0x4bd0f4=typeof _0x5ee00b[_0xc008('0x1b')]===_0xc008('0x1c')&&typeof _0x5ee00b[_0xc008('0x1d')]===_0xc008('0x1c');var _0x4fe771=_0x5e894e['count'];var _0x540e45=_0x4bd0f4?0x0:_0x5ee00b['offset'];var _0x46042b=_0x4bd0f4?_0x5e894e[_0xc008('0x1e')]:_0x5ee00b['offset']+_0x5ee00b[_0xc008('0x1d')];var _0x5906e6;if(_0x46042b>=_0x4fe771){_0x46042b=_0x4fe771;_0x5906e6=0xc8;}else{_0x5906e6=0xce;}_0x3f0ecf['status'](_0x5906e6);return _0x3f0ecf['set']('Content-Range',_0x540e45+'-'+_0x46042b+'/'+_0x4fe771)[_0xc008('0x1a')](_0x5e894e);}return null;};}function patchUpdates(_0x4b9726){return function(_0x5560b1){try{jsonpatch['apply'](_0x5560b1,_0x4b9726,!![]);}catch(_0x4a582d){return BPromise['reject'](_0x4a582d);}return _0x5560b1[_0xc008('0x1f')]();};}function saveUpdates(_0x4777a6,_0x251db2){return function(_0x415af3){if(_0x415af3){return _0x415af3[_0xc008('0x20')](_0x4777a6)[_0xc008('0x21')](function(_0x4f43e2){return _0x4f43e2;});}return null;};}function removeEntity(_0x459fd9,_0x5c85f2){return function(_0x58a6ea){if(_0x58a6ea){return _0x58a6ea[_0xc008('0x22')]()[_0xc008('0x21')](function(){var _0x2e3cfb=_0x58a6ea[_0xc008('0x23')]({'plain':!![]});var _0x5410f5='Metrics';return db['UserProfileResource'][_0xc008('0x22')]({'where':{'type':_0x5410f5,'resourceId':_0x2e3cfb['id']}})[_0xc008('0x21')](function(){return _0x58a6ea;});})[_0xc008('0x21')](function(){_0x459fd9[_0xc008('0x19')](0xcc)['end']();});}};}function handleEntityNotFound(_0x5e2aca,_0x4fce9c){return function(_0x4adbab){if(!_0x4adbab){_0x5e2aca['sendStatus'](0x194);}return _0x4adbab;};}function handleError(_0x3865c0,_0x29ba43){_0x29ba43=_0x29ba43||0x1f4;return function(_0x25eae4){logger['error'](_0x25eae4[_0xc008('0x24')]);if(_0x25eae4[_0xc008('0x25')]){delete _0x25eae4[_0xc008('0x25')];}_0x3865c0[_0xc008('0x19')](_0x29ba43)['send'](_0x25eae4);};}exports[_0xc008('0x26')]=function(_0x2e0b4e,_0x53ed35){var _0x58db82={},_0x539766={},_0x1032b2={'count':0x0,'rows':[]};var _0x267abd=_[_0xc008('0x27')](db[_0xc008('0x28')][_0xc008('0x29')],function(_0xceebc3){return{'name':_0xceebc3[_0xc008('0x2a')],'type':_0xceebc3[_0xc008('0x2b')][_0xc008('0x2c')]};});_0x539766[_0xc008('0x2d')]=_[_0xc008('0x27')](_0x267abd,_0xc008('0x25'));_0x539766['query']=_[_0xc008('0x2e')](_0x2e0b4e[_0xc008('0x2f')]);_0x539766['filters']=_[_0xc008('0x30')](_0x539766[_0xc008('0x2d')],_0x539766[_0xc008('0x2f')]);_0x58db82[_0xc008('0x31')]=_[_0xc008('0x30')](_0x539766[_0xc008('0x2d')],qs[_0xc008('0x32')](_0x2e0b4e[_0xc008('0x2f')][_0xc008('0x32')]));_0x58db82['attributes']=_0x58db82[_0xc008('0x31')][_0xc008('0x33')]?_0x58db82[_0xc008('0x31')]:_0x539766[_0xc008('0x2d')];if(!_0x2e0b4e[_0xc008('0x2f')][_0xc008('0x34')](_0xc008('0x35'))){_0x58db82['limit']=qs[_0xc008('0x1d')](_0x2e0b4e[_0xc008('0x2f')]['limit']);_0x58db82[_0xc008('0x1b')]=qs[_0xc008('0x1b')](_0x2e0b4e['query'][_0xc008('0x1b')]);}_0x58db82[_0xc008('0x36')]=qs[_0xc008('0x37')](_0x2e0b4e['query']['sort']);_0x58db82['where']=qs[_0xc008('0x38')](_['pick'](_0x2e0b4e[_0xc008('0x2f')],_0x539766[_0xc008('0x38')]),_0x267abd);if(_0x2e0b4e[_0xc008('0x2f')][_0xc008('0x39')]){_0x58db82[_0xc008('0x3a')]=_[_0xc008('0x3b')](_0x58db82[_0xc008('0x3a')],{'$or':_[_0xc008('0x27')](_0x267abd,function(_0xffd2b3){if(_0xffd2b3[_0xc008('0x2b')]!==_0xc008('0x3c')){var _0xdfca2e={};_0xdfca2e[_0xffd2b3[_0xc008('0x25')]]={'$like':'%'+_0x2e0b4e[_0xc008('0x2f')]['filter']+'%'};return _0xdfca2e;}})});}_0x58db82=_[_0xc008('0x3b')]({},_0x58db82,_0x2e0b4e[_0xc008('0x3d')]);var _0x30b7df={'where':_0x58db82[_0xc008('0x3a')]};return db['AnalyticMetric'][_0xc008('0x1e')](_0x30b7df)[_0xc008('0x21')](function(_0xc8cb91){_0x1032b2[_0xc008('0x1e')]=_0xc8cb91;if(_0x2e0b4e[_0xc008('0x2f')]['includeAll']){_0x58db82[_0xc008('0x3e')]=[{'all':!![]}];}return db[_0xc008('0x28')][_0xc008('0x3f')](_0x58db82);})[_0xc008('0x21')](function(_0x7279e8){_0x1032b2['rows']=_0x7279e8;return _0x1032b2;})[_0xc008('0x21')](respondWithFilteredResult(_0x53ed35,_0x58db82))[_0xc008('0x40')](handleError(_0x53ed35,null));};exports[_0xc008('0x41')]=function(_0x408192,_0x4b80f3){var _0x26cd05={'raw':!![],'where':{'id':_0x408192[_0xc008('0x42')]['id']}},_0xe37446={};_0xe37446['model']=_[_0xc008('0x2e')](db['AnalyticMetric'][_0xc008('0x29')]);_0xe37446['query']=_[_0xc008('0x2e')](_0x408192[_0xc008('0x2f')]);_0xe37446['filters']=_[_0xc008('0x30')](_0xe37446[_0xc008('0x2d')],_0xe37446[_0xc008('0x2f')]);_0x26cd05['attributes']=_[_0xc008('0x30')](_0xe37446[_0xc008('0x2d')],qs[_0xc008('0x32')](_0x408192[_0xc008('0x2f')][_0xc008('0x32')]));_0x26cd05[_0xc008('0x31')]=_0x26cd05['attributes']['length']?_0x26cd05['attributes']:_0xe37446[_0xc008('0x2d')];if(_0x408192[_0xc008('0x2f')][_0xc008('0x43')]){_0x26cd05[_0xc008('0x3e')]=[{'all':!![]}];}_0x26cd05=_[_0xc008('0x3b')]({},_0x26cd05,_0x408192[_0xc008('0x3d')]);return db[_0xc008('0x28')][_0xc008('0x44')](_0x26cd05)['then'](handleEntityNotFound(_0x4b80f3,null))['then'](respondWithResult(_0x4b80f3,null))['catch'](handleError(_0x4b80f3,null));};exports[_0xc008('0x45')]=function(_0x2651cf,_0x158eae){return db['AnalyticMetric'][_0xc008('0x45')](_0x2651cf[_0xc008('0x46')],{})[_0xc008('0x21')](function(_0x1c2c50){var _0x4981b4=_0x2651cf[_0xc008('0x47')][_0xc008('0x23')]({'plain':!![]});if(!_0x4981b4)throw new Error(_0xc008('0x48'));if(_0x4981b4[_0xc008('0x49')]===_0xc008('0x47')){var _0x52c444=_0x1c2c50['get']({'plain':!![]});var _0x223056='Metrics';return db[_0xc008('0x4a')][_0xc008('0x44')]({'where':{'name':_0x223056,'userProfileId':_0x4981b4[_0xc008('0x4b')]},'raw':!![]})['then'](function(_0x144ab2){if(_0x144ab2&&_0x144ab2[_0xc008('0x4c')]===0x0){return db[_0xc008('0x4d')][_0xc008('0x45')]({'name':_0x52c444[_0xc008('0x25')],'resourceId':_0x52c444['id'],'type':_0x144ab2['name'],'sectionId':_0x144ab2['id']},{})[_0xc008('0x21')](function(){return _0x1c2c50;});}else{return _0x1c2c50;}})[_0xc008('0x40')](function(_0x4b4c6d){logger[_0xc008('0x4e')](_0xc008('0x4f'),_0x4b4c6d);throw _0x4b4c6d;});}return _0x1c2c50;})['then'](respondWithResult(_0x158eae,0xc9))['catch'](handleError(_0x158eae,null));};exports[_0xc008('0x20')]=function(_0xd47b74,_0x20947b){if(_0xd47b74[_0xc008('0x46')]['id']){delete _0xd47b74[_0xc008('0x46')]['id'];}return db['AnalyticMetric']['find']({'where':{'id':_0xd47b74[_0xc008('0x42')]['id']}})['then'](handleEntityNotFound(_0x20947b,null))[_0xc008('0x21')](saveUpdates(_0xd47b74[_0xc008('0x46')],null))[_0xc008('0x21')](respondWithResult(_0x20947b,null))[_0xc008('0x40')](handleError(_0x20947b,null));};exports[_0xc008('0x22')]=function(_0x27a167,_0x49d8b0){return db[_0xc008('0x28')][_0xc008('0x44')]({'where':{'id':_0x27a167[_0xc008('0x42')]['id']}})[_0xc008('0x21')](handleEntityNotFound(_0x49d8b0,null))[_0xc008('0x21')](removeEntity(_0x49d8b0,null))['catch'](handleError(_0x49d8b0,null));};
\ No newline at end of file
+var _0xa41a=['attributes','length','hasOwnProperty','order','sort','where','filters','pick','filter','VIRTUAL','merge','options','includeAll','include','rows','catch','show','params','create','body','user','get','Unable\x20to\x20retrieve\x20the\x20current\x20user','Metrics','UserProfileSection','find','userProfileId','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','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','send','map','AnalyticMetric','type','key','model','query','keys','intersection','fields'];(function(_0x27d0f1,_0x2ed0e5){var _0x27747b=function(_0x5c727d){while(--_0x5c727d){_0x27d0f1['push'](_0x27d0f1['shift']());}};_0x27747b(++_0x2ed0e5);}(_0xa41a,0x6b));var _0xaa41=function(_0x3b7f2e,_0x57d0b8){_0x3b7f2e=_0x3b7f2e-0x0;var _0x286451=_0xa41a[_0x3b7f2e];return _0x286451;};'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(){var _0x5c3074=_0x21f596['get']({'plain':!![]});var _0x16aec5='Metrics';return db['UserProfileResource'][_0xaa41('0x24')]({'where':{'type':_0x16aec5,'resourceId':_0x5c3074['id']}})['then'](function(){return _0x21f596;});})['then'](function(){_0x43a85c[_0xaa41('0x1a')](0xcc)[_0xaa41('0x1b')]();});}};}function handleEntityNotFound(_0x392214,_0x632fd2){return function(_0x3f5272){if(!_0x3f5272){_0x392214[_0xaa41('0x19')](0x194);}return _0x3f5272;};}function handleError(_0x57ef96,_0x30a174){_0x30a174=_0x30a174||0x1f4;return function(_0x1f0275){logger[_0xaa41('0x26')](_0x1f0275[_0xaa41('0x27')]);if(_0x1f0275[_0xaa41('0x28')]){delete _0x1f0275[_0xaa41('0x28')];}_0x57ef96[_0xaa41('0x1a')](_0x30a174)[_0xaa41('0x29')](_0x1f0275);};}exports['index']=function(_0x377add,_0x48b48b){var _0x5dad80={},_0x714537={},_0x1176bd={'count':0x0,'rows':[]};var _0x534a85=_[_0xaa41('0x2a')](db[_0xaa41('0x2b')]['rawAttributes'],function(_0x5022fb){return{'name':_0x5022fb['fieldName'],'type':_0x5022fb[_0xaa41('0x2c')][_0xaa41('0x2d')]};});_0x714537[_0xaa41('0x2e')]=_[_0xaa41('0x2a')](_0x534a85,'name');_0x714537[_0xaa41('0x2f')]=_[_0xaa41('0x30')](_0x377add[_0xaa41('0x2f')]);_0x714537['filters']=_[_0xaa41('0x31')](_0x714537[_0xaa41('0x2e')],_0x714537[_0xaa41('0x2f')]);_0x5dad80['attributes']=_[_0xaa41('0x31')](_0x714537[_0xaa41('0x2e')],qs['fields'](_0x377add[_0xaa41('0x2f')][_0xaa41('0x32')]));_0x5dad80[_0xaa41('0x33')]=_0x5dad80['attributes'][_0xaa41('0x34')]?_0x5dad80['attributes']:_0x714537[_0xaa41('0x2e')];if(!_0x377add[_0xaa41('0x2f')][_0xaa41('0x35')]('nolimit')){_0x5dad80['limit']=qs['limit'](_0x377add[_0xaa41('0x2f')][_0xaa41('0x1e')]);_0x5dad80[_0xaa41('0x20')]=qs[_0xaa41('0x20')](_0x377add['query']['offset']);}_0x5dad80[_0xaa41('0x36')]=qs[_0xaa41('0x37')](_0x377add[_0xaa41('0x2f')][_0xaa41('0x37')]);_0x5dad80[_0xaa41('0x38')]=qs[_0xaa41('0x39')](_[_0xaa41('0x3a')](_0x377add['query'],_0x714537[_0xaa41('0x39')]),_0x534a85);if(_0x377add[_0xaa41('0x2f')][_0xaa41('0x3b')]){_0x5dad80[_0xaa41('0x38')]=_['merge'](_0x5dad80['where'],{'$or':_[_0xaa41('0x2a')](_0x534a85,function(_0x275fa3){if(_0x275fa3['type']!==_0xaa41('0x3c')){var _0x563687={};_0x563687[_0x275fa3[_0xaa41('0x28')]]={'$like':'%'+_0x377add[_0xaa41('0x2f')][_0xaa41('0x3b')]+'%'};return _0x563687;}})});}_0x5dad80=_[_0xaa41('0x3d')]({},_0x5dad80,_0x377add[_0xaa41('0x3e')]);var _0x12ba1a={'where':_0x5dad80[_0xaa41('0x38')]};return db[_0xaa41('0x2b')]['count'](_0x12ba1a)[_0xaa41('0x25')](function(_0x2abf39){_0x1176bd[_0xaa41('0x1f')]=_0x2abf39;if(_0x377add[_0xaa41('0x2f')][_0xaa41('0x3f')]){_0x5dad80[_0xaa41('0x40')]=[{'all':!![]}];}return db['AnalyticMetric']['findAll'](_0x5dad80);})[_0xaa41('0x25')](function(_0x4f9086){_0x1176bd[_0xaa41('0x41')]=_0x4f9086;return _0x1176bd;})[_0xaa41('0x25')](respondWithFilteredResult(_0x48b48b,_0x5dad80))[_0xaa41('0x42')](handleError(_0x48b48b,null));};exports[_0xaa41('0x43')]=function(_0x2aac10,_0x10bf09){var _0x2db8d6={'raw':!![],'where':{'id':_0x2aac10[_0xaa41('0x44')]['id']}},_0x5ee74c={};_0x5ee74c['model']=_['keys'](db[_0xaa41('0x2b')]['rawAttributes']);_0x5ee74c['query']=_['keys'](_0x2aac10[_0xaa41('0x2f')]);_0x5ee74c['filters']=_[_0xaa41('0x31')](_0x5ee74c[_0xaa41('0x2e')],_0x5ee74c['query']);_0x2db8d6['attributes']=_[_0xaa41('0x31')](_0x5ee74c[_0xaa41('0x2e')],qs[_0xaa41('0x32')](_0x2aac10[_0xaa41('0x2f')][_0xaa41('0x32')]));_0x2db8d6[_0xaa41('0x33')]=_0x2db8d6[_0xaa41('0x33')][_0xaa41('0x34')]?_0x2db8d6[_0xaa41('0x33')]:_0x5ee74c['model'];if(_0x2aac10[_0xaa41('0x2f')][_0xaa41('0x3f')]){_0x2db8d6[_0xaa41('0x40')]=[{'all':!![]}];}_0x2db8d6=_[_0xaa41('0x3d')]({},_0x2db8d6,_0x2aac10[_0xaa41('0x3e')]);return db[_0xaa41('0x2b')]['find'](_0x2db8d6)[_0xaa41('0x25')](handleEntityNotFound(_0x10bf09,null))[_0xaa41('0x25')](respondWithResult(_0x10bf09,null))[_0xaa41('0x42')](handleError(_0x10bf09,null));};exports[_0xaa41('0x45')]=function(_0x57d1f6,_0x23bc61){return db['AnalyticMetric']['create'](_0x57d1f6[_0xaa41('0x46')],{})[_0xaa41('0x25')](function(_0x3e16ef){var _0x4ca114=_0x57d1f6[_0xaa41('0x47')][_0xaa41('0x48')]({'plain':!![]});if(!_0x4ca114)throw new Error(_0xaa41('0x49'));if(_0x4ca114['role']===_0xaa41('0x47')){var _0x3c4f24=_0x3e16ef[_0xaa41('0x48')]({'plain':!![]});var _0x1378f9=_0xaa41('0x4a');return db[_0xaa41('0x4b')][_0xaa41('0x4c')]({'where':{'name':_0x1378f9,'userProfileId':_0x4ca114[_0xaa41('0x4d')]},'raw':!![]})['then'](function(_0x9f0a81){if(_0x9f0a81&&_0x9f0a81['autoAssociation']===0x0){return db['UserProfileResource'][_0xaa41('0x45')]({'name':_0x3c4f24[_0xaa41('0x28')],'resourceId':_0x3c4f24['id'],'type':_0x9f0a81[_0xaa41('0x28')],'sectionId':_0x9f0a81['id']},{})[_0xaa41('0x25')](function(){return _0x3e16ef;});}else{return _0x3e16ef;}})[_0xaa41('0x42')](function(_0x288db3){logger[_0xaa41('0x26')](_0xaa41('0x4e'),_0x288db3);throw _0x288db3;});}return _0x3e16ef;})['then'](respondWithResult(_0x23bc61,0xc9))[_0xaa41('0x42')](handleError(_0x23bc61,null));};exports[_0xaa41('0x23')]=function(_0x1d518f,_0x4f9e92){if(_0x1d518f[_0xaa41('0x46')]['id']){delete _0x1d518f[_0xaa41('0x46')]['id'];}return db['AnalyticMetric'][_0xaa41('0x4c')]({'where':{'id':_0x1d518f[_0xaa41('0x44')]['id']}})[_0xaa41('0x25')](handleEntityNotFound(_0x4f9e92,null))['then'](saveUpdates(_0x1d518f[_0xaa41('0x46')],null))[_0xaa41('0x25')](respondWithResult(_0x4f9e92,null))['catch'](handleError(_0x4f9e92,null));};exports['destroy']=function(_0x3745ed,_0x3cd14f){return db[_0xaa41('0x2b')]['find']({'where':{'id':_0x3745ed[_0xaa41('0x44')]['id']}})[_0xaa41('0x25')](handleEntityNotFound(_0x3cd14f,null))[_0xaa41('0x25')](removeEntity(_0x3cd14f,null))[_0xaa41('0x42')](handleError(_0x3cd14f,null));};
\ No newline at end of file
index f148d8e..e518eb1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x323f=['util','api','moment','bluebird','request-promise','path','rimraf','../../config/environment','./analyticMetric.attributes','exports','define','AnalyticMetric','analytics_metrics'];(function(_0x18fdc1,_0x45e5f3){var _0x18316c=function(_0x4ab1e0){while(--_0x4ab1e0){_0x18fdc1['push'](_0x18fdc1['shift']());}};_0x18316c(++_0x45e5f3);}(_0x323f,0x1ee));var _0xf323=function(_0x6c993a,_0x5ea3ab){_0x6c993a=_0x6c993a-0x0;var _0x27f547=_0x323f[_0x6c993a];return _0x27f547;};'use strict';var _=require('lodash');var util=require(_0xf323('0x0'));var logger=require('../../config/logger')(_0xf323('0x1'));var moment=require(_0xf323('0x2'));var BPromise=require(_0xf323('0x3'));var rp=require(_0xf323('0x4'));var fs=require('fs');var path=require(_0xf323('0x5'));var rimraf=require(_0xf323('0x6'));var config=require(_0xf323('0x7'));var attributes=require(_0xf323('0x8'));module[_0xf323('0x9')]=function(_0x371707,_0x5d7d60){return _0x371707[_0xf323('0xa')](_0xf323('0xb'),attributes,{'tableName':_0xf323('0xc'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x5a2a=['analytics_metrics','lodash','util','../../config/logger','api','path','rimraf','./analyticMetric.attributes','exports','define'];(function(_0x9cd4c3,_0x1c9b2c){var _0x4c9025=function(_0x25b3c6){while(--_0x25b3c6){_0x9cd4c3['push'](_0x9cd4c3['shift']());}};_0x4c9025(++_0x1c9b2c);}(_0x5a2a,0x1c3));var _0xa5a2=function(_0x1e389f,_0x59ec25){_0x1e389f=_0x1e389f-0x0;var _0x3d1491=_0x5a2a[_0x1e389f];return _0x3d1491;};'use strict';var _=require(_0xa5a2('0x0'));var util=require(_0xa5a2('0x1'));var logger=require(_0xa5a2('0x2'))(_0xa5a2('0x3'));var moment=require('moment');var BPromise=require('bluebird');var rp=require('request-promise');var fs=require('fs');var path=require(_0xa5a2('0x4'));var rimraf=require(_0xa5a2('0x5'));var config=require('../../config/environment');var attributes=require(_0xa5a2('0x6'));module[_0xa5a2('0x7')]=function(_0x2e97d3,_0x55728b){return _0x2e97d3[_0xa5a2('0x8')]('AnalyticMetric',attributes,{'tableName':_0xa5a2('0x9'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 1f0482d..10c4af9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xfafa=['ioredis','../../mysqldb','../../config/logger','rpc','client','request','then','info','debug','AnalyticMetric,\x20%s,\x20%s,\x20%s','stringify','error','code','AnalyticMetric,\x20%s,\x20%s','message','request\x20sent','result','catch','lodash','util','moment','randomstring'];(function(_0x3a213b,_0x1626a6){var _0x1353cd=function(_0x45eb2c){while(--_0x45eb2c){_0x3a213b['push'](_0x3a213b['shift']());}};_0x1353cd(++_0x1626a6);}(_0xfafa,0x1b4));var _0xafaf=function(_0xe92570,_0x11c784){_0xe92570=_0xe92570-0x0;var _0x49dbc1=_0xfafa[_0xe92570];return _0x49dbc1;};'use strict';var _=require(_0xafaf('0x0'));var util=require(_0xafaf('0x1'));var moment=require(_0xafaf('0x2'));var BPromise=require('bluebird');var rs=require(_0xafaf('0x3'));var fs=require('fs');var Redis=require(_0xafaf('0x4'));var db=require(_0xafaf('0x5'))['db'];var utils=require('../../config/utils');var logger=require(_0xafaf('0x6'))(_0xafaf('0x7'));var config=require('../../config/environment');var jayson=require('jayson/promise');var client=jayson[_0xafaf('0x8')]['http']({'port':0x232a});function respondWithRpcPromise(_0x47e01c,_0xb59cf0,_0x238e2d){return new BPromise(function(_0x1e81de,_0x4047a5){return client[_0xafaf('0x9')](_0x47e01c,_0x238e2d)[_0xafaf('0xa')](function(_0x5b8b8d){logger[_0xafaf('0xb')]('AnalyticMetric,\x20%s,\x20%s',_0xb59cf0,'request\x20sent');logger[_0xafaf('0xc')](_0xafaf('0xd'),_0xb59cf0,'request\x20sent',JSON[_0xafaf('0xe')](_0x5b8b8d));if(_0x5b8b8d['error']){if(_0x5b8b8d[_0xafaf('0xf')][_0xafaf('0x10')]===0x1f4){logger[_0xafaf('0xf')](_0xafaf('0x11'),_0xb59cf0,_0x5b8b8d[_0xafaf('0xf')][_0xafaf('0x12')]);return _0x4047a5(_0x5b8b8d['error'][_0xafaf('0x12')]);}logger[_0xafaf('0xf')](_0xafaf('0x11'),_0xb59cf0,_0x5b8b8d[_0xafaf('0xf')][_0xafaf('0x12')]);return _0x1e81de(_0x5b8b8d[_0xafaf('0xf')]['message']);}else{logger[_0xafaf('0xb')](_0xafaf('0x11'),_0xb59cf0,_0xafaf('0x13'));_0x1e81de(_0x5b8b8d[_0xafaf('0x14')][_0xafaf('0x12')]);}})[_0xafaf('0x15')](function(_0x300ec8){logger[_0xafaf('0xf')]('AnalyticMetric,\x20%s,\x20%s',_0xb59cf0,_0x300ec8);_0x4047a5(_0x300ec8);});});}
\ No newline at end of file
+var _0xf27b=['AnalyticMetric,\x20%s,\x20%s','message','catch','lodash','util','moment','randomstring','../../mysqldb','../../config/utils','../../config/logger','../../config/environment','http','request','then','info','request\x20sent','AnalyticMetric,\x20%s,\x20%s,\x20%s','stringify','error'];(function(_0x5c7dfa,_0x47cad7){var _0x102bb8=function(_0x73f55f){while(--_0x73f55f){_0x5c7dfa['push'](_0x5c7dfa['shift']());}};_0x102bb8(++_0x47cad7);}(_0xf27b,0x10d));var _0xbf27=function(_0x4a6cf8,_0x5534ef){_0x4a6cf8=_0x4a6cf8-0x0;var _0x22205e=_0xf27b[_0x4a6cf8];return _0x22205e;};'use strict';var _=require(_0xbf27('0x0'));var util=require(_0xbf27('0x1'));var moment=require(_0xbf27('0x2'));var BPromise=require('bluebird');var rs=require(_0xbf27('0x3'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0xbf27('0x4'))['db'];var utils=require(_0xbf27('0x5'));var logger=require(_0xbf27('0x6'))('rpc');var config=require(_0xbf27('0x7'));var jayson=require('jayson/promise');var client=jayson['client'][_0xbf27('0x8')]({'port':0x232a});function respondWithRpcPromise(_0x50de37,_0x4c63d4,_0x209eff){return new BPromise(function(_0x2241db,_0x253e03){return client[_0xbf27('0x9')](_0x50de37,_0x209eff)[_0xbf27('0xa')](function(_0x336e05){logger[_0xbf27('0xb')]('AnalyticMetric,\x20%s,\x20%s',_0x4c63d4,_0xbf27('0xc'));logger['debug'](_0xbf27('0xd'),_0x4c63d4,'request\x20sent',JSON[_0xbf27('0xe')](_0x336e05));if(_0x336e05[_0xbf27('0xf')]){if(_0x336e05[_0xbf27('0xf')]['code']===0x1f4){logger['error'](_0xbf27('0x10'),_0x4c63d4,_0x336e05[_0xbf27('0xf')][_0xbf27('0x11')]);return _0x253e03(_0x336e05[_0xbf27('0xf')][_0xbf27('0x11')]);}logger[_0xbf27('0xf')]('AnalyticMetric,\x20%s,\x20%s',_0x4c63d4,_0x336e05[_0xbf27('0xf')][_0xbf27('0x11')]);return _0x2241db(_0x336e05[_0xbf27('0xf')][_0xbf27('0x11')]);}else{logger[_0xbf27('0xb')](_0xbf27('0x10'),_0x4c63d4,'request\x20sent');_0x2241db(_0x336e05['result'][_0xbf27('0x11')]);}})[_0xbf27('0x12')](function(_0x26041d){logger[_0xbf27('0xf')](_0xbf27('0x10'),_0x4c63d4,_0x26041d);_0x253e03(_0x26041d);});});}
\ No newline at end of file
index 8c9e047..ad7c9fe 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xdd0c=['util','path','connect-timeout','Router','../../components/auth/service','../../components/interaction/service','../../config/environment','./analyticMetric.controller','get','index','/:id','isAuthenticated','show','update','delete','destroy','exports'];(function(_0x322bef,_0x4890d4){var _0x229e60=function(_0x45f89b){while(--_0x45f89b){_0x322bef['push'](_0x322bef['shift']());}};_0x229e60(++_0x4890d4);}(_0xdd0c,0x165));var _0xcdd0=function(_0x3f4bb1,_0x16139f){_0x3f4bb1=_0x3f4bb1-0x0;var _0x39f737=_0xdd0c[_0x3f4bb1];return _0x39f737;};'use strict';var multer=require('multer');var util=require(_0xcdd0('0x0'));var path=require(_0xcdd0('0x1'));var timeout=require(_0xcdd0('0x2'));var express=require('express');var router=express[_0xcdd0('0x3')]();var fs_extra=require('fs-extra');var auth=require(_0xcdd0('0x4'));var interaction=require(_0xcdd0('0x5'));var config=require(_0xcdd0('0x6'));var controller=require(_0xcdd0('0x7'));router[_0xcdd0('0x8')]('/',auth['isAuthenticated'](),controller[_0xcdd0('0x9')]);router[_0xcdd0('0x8')](_0xcdd0('0xa'),auth[_0xcdd0('0xb')](),controller[_0xcdd0('0xc')]);router['post']('/',auth[_0xcdd0('0xb')](),controller['create']);router['put'](_0xcdd0('0xa'),auth[_0xcdd0('0xb')](),controller[_0xcdd0('0xd')]);router[_0xcdd0('0xe')](_0xcdd0('0xa'),auth[_0xcdd0('0xb')](),controller[_0xcdd0('0xf')]);module[_0xcdd0('0x10')]=router;
\ No newline at end of file
+var _0xa647=['connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./analyticMetric.controller','get','index','isAuthenticated','show','post','create','put','/:id','update','delete','destroy','multer','util','path'];(function(_0x139eab,_0x2c36c1){var _0x1c7d30=function(_0x299029){while(--_0x299029){_0x139eab['push'](_0x139eab['shift']());}};_0x1c7d30(++_0x2c36c1);}(_0xa647,0x81));var _0x7a64=function(_0x4658df,_0x1d7495){_0x4658df=_0x4658df-0x0;var _0x20f120=_0xa647[_0x4658df];return _0x20f120;};'use strict';var multer=require(_0x7a64('0x0'));var util=require(_0x7a64('0x1'));var path=require(_0x7a64('0x2'));var timeout=require(_0x7a64('0x3'));var express=require(_0x7a64('0x4'));var router=express[_0x7a64('0x5')]();var fs_extra=require(_0x7a64('0x6'));var auth=require(_0x7a64('0x7'));var interaction=require(_0x7a64('0x8'));var config=require(_0x7a64('0x9'));var controller=require(_0x7a64('0xa'));router[_0x7a64('0xb')]('/',auth['isAuthenticated'](),controller[_0x7a64('0xc')]);router[_0x7a64('0xb')]('/:id',auth[_0x7a64('0xd')](),controller[_0x7a64('0xe')]);router[_0x7a64('0xf')]('/',auth[_0x7a64('0xd')](),controller[_0x7a64('0x10')]);router[_0x7a64('0x11')](_0x7a64('0x12'),auth[_0x7a64('0xd')](),controller[_0x7a64('0x13')]);router[_0x7a64('0x14')](_0x7a64('0x12'),auth[_0x7a64('0xd')](),controller[_0x7a64('0x15')]);module['exports']=router;
\ No newline at end of file
index e04e364..aa667cf 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1b36=['exports','sequelize'];(function(_0x8153ce,_0xcb6429){var _0x3294bc=function(_0x52382f){while(--_0x52382f){_0x8153ce['push'](_0x8153ce['shift']());}};_0x3294bc(++_0xcb6429);}(_0x1b36,0x103));var _0x61b3=function(_0x1a89e3,_0x581dc){_0x1a89e3=_0x1a89e3-0x0;var _0x41137a=_0x1b36[_0x1a89e3];return _0x41137a;};'use strict';var Sequelize=require(_0x61b3('0x0'));module[_0x61b3('0x1')]={'tree':{'type':Sequelize['TEXT'],'allowNull':![]}};
\ No newline at end of file
+var _0xe919=['sequelize','exports'];(function(_0x26a515,_0x286339){var _0x314682=function(_0x501b51){while(--_0x501b51){_0x26a515['push'](_0x26a515['shift']());}};_0x314682(++_0x286339);}(_0xe919,0x1d0));var _0x9e91=function(_0x91f539,_0x442a0c){_0x91f539=_0x91f539-0x0;var _0x2e3bdd=_0xe919[_0x91f539];return _0x2e3bdd;};'use strict';var Sequelize=require(_0x9e91('0x0'));module[_0x9e91('0x1')]={'tree':{'type':Sequelize['TEXT'],'allowNull':![]}};
\ No newline at end of file
index 373a4ac..fd4108c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8a00=['then','destroy','end','stack','name','send','index','map','AnalyticTreeReport','rawAttributes','fieldName','key','model','query','keys','filters','intersection','attributes','fields','length','nolimit','limit','order','sort','where','pick','merge','type','VIRTUAL','filter','options','includeAll','include','rows','show','params','find','catch','create','body','eml-format','rimraf','zip-dir','fast-json-patch','moment','bluebird','mustache','util','ejs','lodash','crypto','jsforce','desk.js','to-csv','querystring','papaparse','ioredis','../../components/auth/service','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','sendStatus','status','json','offset','undefined','count','set','reject','save'];(function(_0xf50820,_0x56f041){var _0x2a9b10=function(_0x33f0f4){while(--_0x33f0f4){_0xf50820['push'](_0xf50820['shift']());}};_0x2a9b10(++_0x56f041);}(_0x8a00,0xb8));var _0x08a0=function(_0x5b9c69,_0x2f50d5){_0x5b9c69=_0x5b9c69-0x0;var _0x5ccbc9=_0x8a00[_0x5b9c69];return _0x5ccbc9;};'use strict';var emlformat=require(_0x08a0('0x0'));var rimraf=require(_0x08a0('0x1'));var zipdir=require(_0x08a0('0x2'));var jsonpatch=require(_0x08a0('0x3'));var rp=require('request-promise');var moment=require(_0x08a0('0x4'));var BPromise=require(_0x08a0('0x5'));var Mustache=require(_0x08a0('0x6'));var util=require(_0x08a0('0x7'));var path=require('path');var sox=require('sox');var csv=require('to-csv');var ejs=require(_0x08a0('0x8'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x08a0('0x9'));var squel=require('squel');var crypto=require(_0x08a0('0xa'));var jsforce=require(_0x08a0('0xb'));var deskjs=require(_0x08a0('0xc'));var toCsv=require(_0x08a0('0xd'));var querystring=require(_0x08a0('0xe'));var Papa=require(_0x08a0('0xf'));var Redis=require(_0x08a0('0x10'));var authService=require(_0x08a0('0x11'));var qs=require('../../components/parsers/qs');var as=require('../../components/parsers/advancedSearch');var hardwareService=require('../../config/license/hardware');var logger=require(_0x08a0('0x12'))(_0x08a0('0x13'));var utils=require(_0x08a0('0x14'));var config=require(_0x08a0('0x15'));var licenseUtil=require(_0x08a0('0x16'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x2db8b1,_0x667974){_0x667974=_0x667974||0xcc;return function(_0x3dad16){if(_0x3dad16){return _0x2db8b1[_0x08a0('0x17')](_0x667974);}return _0x2db8b1[_0x08a0('0x18')](_0x667974)['end']();};}function respondWithResult(_0x411347,_0x25e2bb){_0x25e2bb=_0x25e2bb||0xc8;return function(_0x1a06bc){if(_0x1a06bc){return _0x411347[_0x08a0('0x18')](_0x25e2bb)[_0x08a0('0x19')](_0x1a06bc);}};}function respondWithFilteredResult(_0x539dd2,_0x27b9de){return function(_0x56798e){if(_0x56798e){var _0x2fea4e=typeof _0x27b9de[_0x08a0('0x1a')]===_0x08a0('0x1b')&&typeof _0x27b9de['limit']===_0x08a0('0x1b');var _0x4bbd93=_0x56798e[_0x08a0('0x1c')];var _0xe45b35=_0x2fea4e?0x0:_0x27b9de[_0x08a0('0x1a')];var _0x225001=_0x2fea4e?_0x56798e[_0x08a0('0x1c')]:_0x27b9de[_0x08a0('0x1a')]+_0x27b9de['limit'];var _0x1063da;if(_0x225001>=_0x4bbd93){_0x225001=_0x4bbd93;_0x1063da=0xc8;}else{_0x1063da=0xce;}_0x539dd2[_0x08a0('0x18')](_0x1063da);return _0x539dd2[_0x08a0('0x1d')]('Content-Range',_0xe45b35+'-'+_0x225001+'/'+_0x4bbd93)[_0x08a0('0x19')](_0x56798e);}return null;};}function patchUpdates(_0xad79ee){return function(_0x47ef86){try{jsonpatch['apply'](_0x47ef86,_0xad79ee,!![]);}catch(_0x601b31){return BPromise[_0x08a0('0x1e')](_0x601b31);}return _0x47ef86[_0x08a0('0x1f')]();};}function saveUpdates(_0x7b36f6,_0x778976){return function(_0x4ca631){if(_0x4ca631){return _0x4ca631['update'](_0x7b36f6)[_0x08a0('0x20')](function(_0x49336e){return _0x49336e;});}return null;};}function removeEntity(_0xa50227,_0x20bd34){return function(_0x1e6a4e){if(_0x1e6a4e){return _0x1e6a4e[_0x08a0('0x21')]()[_0x08a0('0x20')](function(){_0xa50227['status'](0xcc)[_0x08a0('0x22')]();});}};}function handleEntityNotFound(_0xec0f54,_0x4a9223){return function(_0x326c01){if(!_0x326c01){_0xec0f54[_0x08a0('0x17')](0x194);}return _0x326c01;};}function handleError(_0x374e21,_0x98b440){_0x98b440=_0x98b440||0x1f4;return function(_0x1ae832){logger['error'](_0x1ae832[_0x08a0('0x23')]);if(_0x1ae832['name']){delete _0x1ae832[_0x08a0('0x24')];}_0x374e21[_0x08a0('0x18')](_0x98b440)[_0x08a0('0x25')](_0x1ae832);};}exports[_0x08a0('0x26')]=function(_0x4bd371,_0x50f3d2){var _0x471765={},_0x1b1819={},_0x1a1115={'count':0x0,'rows':[]};var _0x2a302d=_[_0x08a0('0x27')](db[_0x08a0('0x28')][_0x08a0('0x29')],function(_0x177cab){return{'name':_0x177cab[_0x08a0('0x2a')],'type':_0x177cab['type'][_0x08a0('0x2b')]};});_0x1b1819[_0x08a0('0x2c')]=_[_0x08a0('0x27')](_0x2a302d,'name');_0x1b1819[_0x08a0('0x2d')]=_[_0x08a0('0x2e')](_0x4bd371[_0x08a0('0x2d')]);_0x1b1819[_0x08a0('0x2f')]=_[_0x08a0('0x30')](_0x1b1819['model'],_0x1b1819[_0x08a0('0x2d')]);_0x471765[_0x08a0('0x31')]=_[_0x08a0('0x30')](_0x1b1819[_0x08a0('0x2c')],qs[_0x08a0('0x32')](_0x4bd371[_0x08a0('0x2d')][_0x08a0('0x32')]));_0x471765[_0x08a0('0x31')]=_0x471765['attributes'][_0x08a0('0x33')]?_0x471765[_0x08a0('0x31')]:_0x1b1819[_0x08a0('0x2c')];if(!_0x4bd371[_0x08a0('0x2d')]['hasOwnProperty'](_0x08a0('0x34'))){_0x471765[_0x08a0('0x35')]=qs[_0x08a0('0x35')](_0x4bd371[_0x08a0('0x2d')][_0x08a0('0x35')]);_0x471765[_0x08a0('0x1a')]=qs[_0x08a0('0x1a')](_0x4bd371[_0x08a0('0x2d')][_0x08a0('0x1a')]);}_0x471765[_0x08a0('0x36')]=qs[_0x08a0('0x37')](_0x4bd371[_0x08a0('0x2d')][_0x08a0('0x37')]);_0x471765[_0x08a0('0x38')]=qs['filters'](_[_0x08a0('0x39')](_0x4bd371[_0x08a0('0x2d')],_0x1b1819['filters']),_0x2a302d);if(_0x4bd371[_0x08a0('0x2d')]['filter']){_0x471765[_0x08a0('0x38')]=_[_0x08a0('0x3a')](_0x471765[_0x08a0('0x38')],{'$or':_[_0x08a0('0x27')](_0x2a302d,function(_0x4bcbaf){if(_0x4bcbaf[_0x08a0('0x3b')]!==_0x08a0('0x3c')){var _0x2fb45b={};_0x2fb45b[_0x4bcbaf[_0x08a0('0x24')]]={'$like':'%'+_0x4bd371['query'][_0x08a0('0x3d')]+'%'};return _0x2fb45b;}})});}_0x471765=_[_0x08a0('0x3a')]({},_0x471765,_0x4bd371[_0x08a0('0x3e')]);var _0x548329={'where':_0x471765['where']};return db['AnalyticTreeReport'][_0x08a0('0x1c')](_0x548329)[_0x08a0('0x20')](function(_0x3fdff7){_0x1a1115[_0x08a0('0x1c')]=_0x3fdff7;if(_0x4bd371[_0x08a0('0x2d')][_0x08a0('0x3f')]){_0x471765[_0x08a0('0x40')]=[{'all':!![]}];}return db[_0x08a0('0x28')]['findAll'](_0x471765);})[_0x08a0('0x20')](function(_0x209267){_0x1a1115[_0x08a0('0x41')]=_0x209267;return _0x1a1115;})[_0x08a0('0x20')](respondWithFilteredResult(_0x50f3d2,_0x471765))['catch'](handleError(_0x50f3d2,null));};exports[_0x08a0('0x42')]=function(_0x32edda,_0x5afa2b){var _0xc2943f={'raw':!![],'where':{'id':_0x32edda[_0x08a0('0x43')]['id']}},_0x44c739={};_0x44c739[_0x08a0('0x2c')]=_[_0x08a0('0x2e')](db['AnalyticTreeReport'][_0x08a0('0x29')]);_0x44c739[_0x08a0('0x2d')]=_['keys'](_0x32edda[_0x08a0('0x2d')]);_0x44c739['filters']=_[_0x08a0('0x30')](_0x44c739['model'],_0x44c739[_0x08a0('0x2d')]);_0xc2943f[_0x08a0('0x31')]=_[_0x08a0('0x30')](_0x44c739[_0x08a0('0x2c')],qs[_0x08a0('0x32')](_0x32edda[_0x08a0('0x2d')][_0x08a0('0x32')]));_0xc2943f[_0x08a0('0x31')]=_0xc2943f[_0x08a0('0x31')][_0x08a0('0x33')]?_0xc2943f['attributes']:_0x44c739[_0x08a0('0x2c')];if(_0x32edda[_0x08a0('0x2d')][_0x08a0('0x3f')]){_0xc2943f[_0x08a0('0x40')]=[{'all':!![]}];}_0xc2943f=_[_0x08a0('0x3a')]({},_0xc2943f,_0x32edda[_0x08a0('0x3e')]);return db[_0x08a0('0x28')][_0x08a0('0x44')](_0xc2943f)[_0x08a0('0x20')](handleEntityNotFound(_0x5afa2b,null))[_0x08a0('0x20')](respondWithResult(_0x5afa2b,null))[_0x08a0('0x45')](handleError(_0x5afa2b,null));};exports['create']=function(_0x46da10,_0x19f40a){return db[_0x08a0('0x28')][_0x08a0('0x46')](_0x46da10['body'],{})['then'](respondWithResult(_0x19f40a,0xc9))[_0x08a0('0x45')](handleError(_0x19f40a,null));};exports['update']=function(_0x2a6ff3,_0x5c28b8){if(_0x2a6ff3[_0x08a0('0x47')]['id']){delete _0x2a6ff3[_0x08a0('0x47')]['id'];}return db[_0x08a0('0x28')]['find']({'where':{'id':_0x2a6ff3[_0x08a0('0x43')]['id']}})[_0x08a0('0x20')](handleEntityNotFound(_0x5c28b8,null))[_0x08a0('0x20')](saveUpdates(_0x2a6ff3['body'],null))[_0x08a0('0x20')](respondWithResult(_0x5c28b8,null))[_0x08a0('0x45')](handleError(_0x5c28b8,null));};exports['destroy']=function(_0x4f550f,_0x4380d2){return db[_0x08a0('0x28')]['find']({'where':{'id':_0x4f550f['params']['id']}})[_0x08a0('0x20')](handleEntityNotFound(_0x4380d2,null))[_0x08a0('0x20')](removeEntity(_0x4380d2,null))['catch'](handleError(_0x4380d2,null));};
\ No newline at end of file
+var _0x2fae=['apply','reject','save','update','then','destroy','sendStatus','error','stack','name','send','map','rawAttributes','fieldName','type','key','query','keys','filters','intersection','model','attributes','fields','hasOwnProperty','order','sort','where','filter','merge','VIRTUAL','options','AnalyticTreeReport','include','findAll','rows','catch','show','length','includeAll','find','create','body','eml-format','rimraf','request-promise','moment','bluebird','mustache','util','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/logger','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','status','end','json','offset','undefined','limit','count','set','Content-Range'];(function(_0x18a79d,_0x57bd2c){var _0x4f8848=function(_0x28af80){while(--_0x28af80){_0x18a79d['push'](_0x18a79d['shift']());}};_0x4f8848(++_0x57bd2c);}(_0x2fae,0x1b0));var _0xe2fa=function(_0x3473ec,_0x24b113){_0x3473ec=_0x3473ec-0x0;var _0x4c5f36=_0x2fae[_0x3473ec];return _0x4c5f36;};'use strict';var emlformat=require(_0xe2fa('0x0'));var rimraf=require(_0xe2fa('0x1'));var zipdir=require('zip-dir');var jsonpatch=require('fast-json-patch');var rp=require(_0xe2fa('0x2'));var moment=require(_0xe2fa('0x3'));var BPromise=require(_0xe2fa('0x4'));var Mustache=require(_0xe2fa('0x5'));var util=require(_0xe2fa('0x6'));var path=require(_0xe2fa('0x7'));var sox=require(_0xe2fa('0x8'));var csv=require('to-csv');var ejs=require(_0xe2fa('0x9'));var fs=require('fs');var fs_extra=require(_0xe2fa('0xa'));var _=require(_0xe2fa('0xb'));var squel=require(_0xe2fa('0xc'));var crypto=require(_0xe2fa('0xd'));var jsforce=require(_0xe2fa('0xe'));var deskjs=require(_0xe2fa('0xf'));var toCsv=require(_0xe2fa('0x10'));var querystring=require('querystring');var Papa=require(_0xe2fa('0x11'));var Redis=require(_0xe2fa('0x12'));var authService=require(_0xe2fa('0x13'));var qs=require(_0xe2fa('0x14'));var as=require(_0xe2fa('0x15'));var hardwareService=require('../../config/license/hardware');var logger=require(_0xe2fa('0x16'))('api');var utils=require(_0xe2fa('0x17'));var config=require(_0xe2fa('0x18'));var licenseUtil=require(_0xe2fa('0x19'));var db=require(_0xe2fa('0x1a'))['db'];function respondWithStatusCode(_0x1e4ae6,_0x3fc69f){_0x3fc69f=_0x3fc69f||0xcc;return function(_0x450231){if(_0x450231){return _0x1e4ae6['sendStatus'](_0x3fc69f);}return _0x1e4ae6[_0xe2fa('0x1b')](_0x3fc69f)[_0xe2fa('0x1c')]();};}function respondWithResult(_0x1e6d6e,_0x304451){_0x304451=_0x304451||0xc8;return function(_0x5253c1){if(_0x5253c1){return _0x1e6d6e[_0xe2fa('0x1b')](_0x304451)[_0xe2fa('0x1d')](_0x5253c1);}};}function respondWithFilteredResult(_0x204dc0,_0x4202f8){return function(_0x31c999){if(_0x31c999){var _0x4ec201=typeof _0x4202f8[_0xe2fa('0x1e')]===_0xe2fa('0x1f')&&typeof _0x4202f8[_0xe2fa('0x20')]===_0xe2fa('0x1f');var _0x255577=_0x31c999[_0xe2fa('0x21')];var _0x5b84f7=_0x4ec201?0x0:_0x4202f8['offset'];var _0xdce244=_0x4ec201?_0x31c999['count']:_0x4202f8[_0xe2fa('0x1e')]+_0x4202f8['limit'];var _0x4a37bc;if(_0xdce244>=_0x255577){_0xdce244=_0x255577;_0x4a37bc=0xc8;}else{_0x4a37bc=0xce;}_0x204dc0['status'](_0x4a37bc);return _0x204dc0[_0xe2fa('0x22')](_0xe2fa('0x23'),_0x5b84f7+'-'+_0xdce244+'/'+_0x255577)[_0xe2fa('0x1d')](_0x31c999);}return null;};}function patchUpdates(_0xd4ff70){return function(_0x220f99){try{jsonpatch[_0xe2fa('0x24')](_0x220f99,_0xd4ff70,!![]);}catch(_0x5da68c){return BPromise[_0xe2fa('0x25')](_0x5da68c);}return _0x220f99[_0xe2fa('0x26')]();};}function saveUpdates(_0x10a0a2,_0x539dbe){return function(_0xb62fe6){if(_0xb62fe6){return _0xb62fe6[_0xe2fa('0x27')](_0x10a0a2)[_0xe2fa('0x28')](function(_0x1c9e5f){return _0x1c9e5f;});}return null;};}function removeEntity(_0x1a3020,_0xd405d6){return function(_0x161f33){if(_0x161f33){return _0x161f33[_0xe2fa('0x29')]()[_0xe2fa('0x28')](function(){_0x1a3020[_0xe2fa('0x1b')](0xcc)[_0xe2fa('0x1c')]();});}};}function handleEntityNotFound(_0x1084c0,_0x19ef40){return function(_0x1cdbb4){if(!_0x1cdbb4){_0x1084c0[_0xe2fa('0x2a')](0x194);}return _0x1cdbb4;};}function handleError(_0x194ca0,_0x4be672){_0x4be672=_0x4be672||0x1f4;return function(_0x475ba7){logger[_0xe2fa('0x2b')](_0x475ba7[_0xe2fa('0x2c')]);if(_0x475ba7[_0xe2fa('0x2d')]){delete _0x475ba7[_0xe2fa('0x2d')];}_0x194ca0['status'](_0x4be672)[_0xe2fa('0x2e')](_0x475ba7);};}exports['index']=function(_0x54b8ec,_0x13e46e){var _0x59a561={},_0x3a792d={},_0x4d8bf5={'count':0x0,'rows':[]};var _0x4d3f14=_[_0xe2fa('0x2f')](db['AnalyticTreeReport'][_0xe2fa('0x30')],function(_0x41dd15){return{'name':_0x41dd15[_0xe2fa('0x31')],'type':_0x41dd15[_0xe2fa('0x32')][_0xe2fa('0x33')]};});_0x3a792d['model']=_[_0xe2fa('0x2f')](_0x4d3f14,'name');_0x3a792d[_0xe2fa('0x34')]=_[_0xe2fa('0x35')](_0x54b8ec[_0xe2fa('0x34')]);_0x3a792d[_0xe2fa('0x36')]=_[_0xe2fa('0x37')](_0x3a792d[_0xe2fa('0x38')],_0x3a792d[_0xe2fa('0x34')]);_0x59a561[_0xe2fa('0x39')]=_[_0xe2fa('0x37')](_0x3a792d['model'],qs[_0xe2fa('0x3a')](_0x54b8ec[_0xe2fa('0x34')][_0xe2fa('0x3a')]));_0x59a561[_0xe2fa('0x39')]=_0x59a561['attributes']['length']?_0x59a561[_0xe2fa('0x39')]:_0x3a792d[_0xe2fa('0x38')];if(!_0x54b8ec[_0xe2fa('0x34')][_0xe2fa('0x3b')]('nolimit')){_0x59a561[_0xe2fa('0x20')]=qs[_0xe2fa('0x20')](_0x54b8ec['query'][_0xe2fa('0x20')]);_0x59a561['offset']=qs['offset'](_0x54b8ec[_0xe2fa('0x34')][_0xe2fa('0x1e')]);}_0x59a561[_0xe2fa('0x3c')]=qs[_0xe2fa('0x3d')](_0x54b8ec['query'][_0xe2fa('0x3d')]);_0x59a561[_0xe2fa('0x3e')]=qs[_0xe2fa('0x36')](_['pick'](_0x54b8ec[_0xe2fa('0x34')],_0x3a792d[_0xe2fa('0x36')]),_0x4d3f14);if(_0x54b8ec['query'][_0xe2fa('0x3f')]){_0x59a561[_0xe2fa('0x3e')]=_[_0xe2fa('0x40')](_0x59a561[_0xe2fa('0x3e')],{'$or':_[_0xe2fa('0x2f')](_0x4d3f14,function(_0x59e4ea){if(_0x59e4ea['type']!==_0xe2fa('0x41')){var _0x43f273={};_0x43f273[_0x59e4ea[_0xe2fa('0x2d')]]={'$like':'%'+_0x54b8ec[_0xe2fa('0x34')]['filter']+'%'};return _0x43f273;}})});}_0x59a561=_[_0xe2fa('0x40')]({},_0x59a561,_0x54b8ec[_0xe2fa('0x42')]);var _0x166d54={'where':_0x59a561[_0xe2fa('0x3e')]};return db[_0xe2fa('0x43')][_0xe2fa('0x21')](_0x166d54)[_0xe2fa('0x28')](function(_0x4dd924){_0x4d8bf5[_0xe2fa('0x21')]=_0x4dd924;if(_0x54b8ec[_0xe2fa('0x34')]['includeAll']){_0x59a561[_0xe2fa('0x44')]=[{'all':!![]}];}return db['AnalyticTreeReport'][_0xe2fa('0x45')](_0x59a561);})[_0xe2fa('0x28')](function(_0x25f0e3){_0x4d8bf5[_0xe2fa('0x46')]=_0x25f0e3;return _0x4d8bf5;})[_0xe2fa('0x28')](respondWithFilteredResult(_0x13e46e,_0x59a561))[_0xe2fa('0x47')](handleError(_0x13e46e,null));};exports[_0xe2fa('0x48')]=function(_0x1aea11,_0x18ea6c){var _0x30c0fa={'raw':!![],'where':{'id':_0x1aea11['params']['id']}},_0x39391a={};_0x39391a[_0xe2fa('0x38')]=_[_0xe2fa('0x35')](db[_0xe2fa('0x43')][_0xe2fa('0x30')]);_0x39391a[_0xe2fa('0x34')]=_[_0xe2fa('0x35')](_0x1aea11['query']);_0x39391a[_0xe2fa('0x36')]=_[_0xe2fa('0x37')](_0x39391a[_0xe2fa('0x38')],_0x39391a[_0xe2fa('0x34')]);_0x30c0fa[_0xe2fa('0x39')]=_[_0xe2fa('0x37')](_0x39391a[_0xe2fa('0x38')],qs[_0xe2fa('0x3a')](_0x1aea11[_0xe2fa('0x34')][_0xe2fa('0x3a')]));_0x30c0fa[_0xe2fa('0x39')]=_0x30c0fa[_0xe2fa('0x39')][_0xe2fa('0x49')]?_0x30c0fa[_0xe2fa('0x39')]:_0x39391a[_0xe2fa('0x38')];if(_0x1aea11[_0xe2fa('0x34')][_0xe2fa('0x4a')]){_0x30c0fa[_0xe2fa('0x44')]=[{'all':!![]}];}_0x30c0fa=_[_0xe2fa('0x40')]({},_0x30c0fa,_0x1aea11[_0xe2fa('0x42')]);return db[_0xe2fa('0x43')][_0xe2fa('0x4b')](_0x30c0fa)[_0xe2fa('0x28')](handleEntityNotFound(_0x18ea6c,null))['then'](respondWithResult(_0x18ea6c,null))['catch'](handleError(_0x18ea6c,null));};exports['create']=function(_0x4e98d0,_0x495a72){return db['AnalyticTreeReport'][_0xe2fa('0x4c')](_0x4e98d0[_0xe2fa('0x4d')],{})[_0xe2fa('0x28')](respondWithResult(_0x495a72,0xc9))[_0xe2fa('0x47')](handleError(_0x495a72,null));};exports['update']=function(_0x516272,_0x1ad866){if(_0x516272[_0xe2fa('0x4d')]['id']){delete _0x516272['body']['id'];}return db[_0xe2fa('0x43')][_0xe2fa('0x4b')]({'where':{'id':_0x516272['params']['id']}})[_0xe2fa('0x28')](handleEntityNotFound(_0x1ad866,null))[_0xe2fa('0x28')](saveUpdates(_0x516272[_0xe2fa('0x4d')],null))[_0xe2fa('0x28')](respondWithResult(_0x1ad866,null))[_0xe2fa('0x47')](handleError(_0x1ad866,null));};exports[_0xe2fa('0x29')]=function(_0x3b5684,_0x1e0533){return db[_0xe2fa('0x43')][_0xe2fa('0x4b')]({'where':{'id':_0x3b5684['params']['id']}})[_0xe2fa('0x28')](handleEntityNotFound(_0x1e0533,null))[_0xe2fa('0x28')](removeEntity(_0x1e0533,null))[_0xe2fa('0x47')](handleError(_0x1e0533,null));};
\ No newline at end of file
index df6323f..de34282 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x13dc=['rimraf','../../config/environment','exports','define','AnalyticTreeReport','analytics_report_trees','lodash','util','api','bluebird','request-promise'];(function(_0x417287,_0x6d5625){var _0x3a68a2=function(_0x4d858a){while(--_0x4d858a){_0x417287['push'](_0x417287['shift']());}};_0x3a68a2(++_0x6d5625);}(_0x13dc,0x10e));var _0xc13d=function(_0x556b81,_0x1ab899){_0x556b81=_0x556b81-0x0;var _0x2306ea=_0x13dc[_0x556b81];return _0x2306ea;};'use strict';var _=require(_0xc13d('0x0'));var util=require(_0xc13d('0x1'));var logger=require('../../config/logger')(_0xc13d('0x2'));var moment=require('moment');var BPromise=require(_0xc13d('0x3'));var rp=require(_0xc13d('0x4'));var fs=require('fs');var path=require('path');var rimraf=require(_0xc13d('0x5'));var config=require(_0xc13d('0x6'));var attributes=require('./analyticTreeReport.attributes');module[_0xc13d('0x7')]=function(_0x5843ce,_0x162dac){return _0x5843ce[_0xc13d('0x8')](_0xc13d('0x9'),attributes,{'tableName':_0xc13d('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x95ac=['analytics_report_trees','lodash','util','api','moment','bluebird','request-promise','path','rimraf','./analyticTreeReport.attributes','define','AnalyticTreeReport'];(function(_0x48d122,_0x4bcd20){var _0x36e303=function(_0x2b7a2e){while(--_0x2b7a2e){_0x48d122['push'](_0x48d122['shift']());}};_0x36e303(++_0x4bcd20);}(_0x95ac,0xcd));var _0xc95a=function(_0x1d1f27,_0x2aa6f7){_0x1d1f27=_0x1d1f27-0x0;var _0x40a790=_0x95ac[_0x1d1f27];return _0x40a790;};'use strict';var _=require(_0xc95a('0x0'));var util=require(_0xc95a('0x1'));var logger=require('../../config/logger')(_0xc95a('0x2'));var moment=require(_0xc95a('0x3'));var BPromise=require(_0xc95a('0x4'));var rp=require(_0xc95a('0x5'));var fs=require('fs');var path=require(_0xc95a('0x6'));var rimraf=require(_0xc95a('0x7'));var config=require('../../config/environment');var attributes=require(_0xc95a('0x8'));module['exports']=function(_0x30da7f,_0x211893){return _0x30da7f[_0xc95a('0x9')](_0xc95a('0xa'),attributes,{'tableName':_0xc95a('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index d7852f2..24dff67 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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(_0xff3357,_0x3b4152){var _0x16d529=function(_0x38d7f7){while(--_0x38d7f7){_0xff3357['push'](_0xff3357['shift']());}};_0x16d529(++_0x3b4152);}(_0xadb5,0xad));var _0x5adb=function(_0xa49d8c,_0x26fe97){_0xa49d8c=_0xa49d8c-0x0;var _0x3acf24=_0xadb5[_0xa49d8c];return _0x3acf24;};'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
+var _0x7a54=['info','AnalyticTreeReport,\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(_0x167cc1,_0x56ef5a){var _0x10bc4b=function(_0xd6a255){while(--_0xd6a255){_0x167cc1['push'](_0x167cc1['shift']());}};_0x10bc4b(++_0x56ef5a);}(_0x7a54,0x106));var _0x47a5=function(_0x494ccf,_0x46be20){_0x494ccf=_0x494ccf-0x0;var _0x223b8a=_0x7a54[_0x494ccf];return _0x223b8a;};'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')]('AnalyticTreeReport,\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 aebd04b..3cf8fc5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4465=['./analyticTreeReport.controller','get','isAuthenticated','index','show','post','create','/:id','delete','destroy','exports','multer','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment'];(function(_0x59d0c8,_0x5a00e3){var _0x152e91=function(_0x3367db){while(--_0x3367db){_0x59d0c8['push'](_0x59d0c8['shift']());}};_0x152e91(++_0x5a00e3);}(_0x4465,0x1c3));var _0x5446=function(_0x1f4f58,_0x5ef776){_0x1f4f58=_0x1f4f58-0x0;var _0x4b0c03=_0x4465[_0x1f4f58];return _0x4b0c03;};'use strict';var multer=require(_0x5446('0x0'));var util=require('util');var path=require(_0x5446('0x1'));var timeout=require(_0x5446('0x2'));var express=require(_0x5446('0x3'));var router=express[_0x5446('0x4')]();var fs_extra=require(_0x5446('0x5'));var auth=require(_0x5446('0x6'));var interaction=require(_0x5446('0x7'));var config=require(_0x5446('0x8'));var controller=require(_0x5446('0x9'));router[_0x5446('0xa')]('/',auth[_0x5446('0xb')](),controller[_0x5446('0xc')]);router[_0x5446('0xa')]('/:id',auth['isAuthenticated'](),controller[_0x5446('0xd')]);router[_0x5446('0xe')]('/',auth[_0x5446('0xb')](),controller[_0x5446('0xf')]);router['put'](_0x5446('0x10'),auth[_0x5446('0xb')](),controller['update']);router[_0x5446('0x11')](_0x5446('0x10'),auth[_0x5446('0xb')](),controller[_0x5446('0x12')]);module[_0x5446('0x13')]=router;
\ No newline at end of file
+var _0x8c12=['../../config/environment','isAuthenticated','index','get','/:id','show','post','create','update','exports','multer','path','Router','../../components/auth/service','../../components/interaction/service'];(function(_0x1f8057,_0x29937c){var _0x530ae5=function(_0x1870ea){while(--_0x1870ea){_0x1f8057['push'](_0x1f8057['shift']());}};_0x530ae5(++_0x29937c);}(_0x8c12,0x190));var _0x28c1=function(_0x3f813d,_0x473c67){_0x3f813d=_0x3f813d-0x0;var _0x3a7580=_0x8c12[_0x3f813d];return _0x3a7580;};'use strict';var multer=require(_0x28c1('0x0'));var util=require('util');var path=require(_0x28c1('0x1'));var timeout=require('connect-timeout');var express=require('express');var router=express[_0x28c1('0x2')]();var fs_extra=require('fs-extra');var auth=require(_0x28c1('0x3'));var interaction=require(_0x28c1('0x4'));var config=require(_0x28c1('0x5'));var controller=require('./analyticTreeReport.controller');router['get']('/',auth[_0x28c1('0x6')](),controller[_0x28c1('0x7')]);router[_0x28c1('0x8')](_0x28c1('0x9'),auth[_0x28c1('0x6')](),controller[_0x28c1('0xa')]);router[_0x28c1('0xb')]('/',auth['isAuthenticated'](),controller[_0x28c1('0xc')]);router['put'](_0x28c1('0x9'),auth[_0x28c1('0x6')](),controller[_0x28c1('0xd')]);router['delete']('/:id',auth[_0x28c1('0x6')](),controller['destroy']);module[_0x28c1('0xe')]=router;
\ No newline at end of file
index 2a77b8f..d2d7921 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9ef8=['exports','STRING','sequelize'];(function(_0x193b59,_0x1d3454){var _0x339e71=function(_0x401922){while(--_0x401922){_0x193b59['push'](_0x193b59['shift']());}};_0x339e71(++_0x1d3454);}(_0x9ef8,0x17f));var _0x89ef=function(_0x2534cf,_0x545be6){_0x2534cf=_0x2534cf-0x0;var _0x221461=_0x9ef8[_0x2534cf];return _0x221461;};'use strict';var Sequelize=require(_0x89ef('0x0'));module[_0x89ef('0x1')]={'name':{'type':Sequelize['STRING']},'basename':{'type':Sequelize[_0x89ef('0x2')]},'type':{'type':Sequelize[_0x89ef('0x2')]}};
\ No newline at end of file
+var _0x80fb=['exports','STRING'];(function(_0x5a99db,_0x1cece5){var _0x3aad62=function(_0x334cb7){while(--_0x334cb7){_0x5a99db['push'](_0x5a99db['shift']());}};_0x3aad62(++_0x1cece5);}(_0x80fb,0x11e));var _0xb80f=function(_0x1b828b,_0x344400){_0x1b828b=_0x1b828b-0x0;var _0x98da1a=_0x80fb[_0x1b828b];return _0x98da1a;};'use strict';var Sequelize=require('sequelize');module[_0xb80f('0x0')]={'name':{'type':Sequelize[_0xb80f('0x1')]},'basename':{'type':Sequelize['STRING']},'type':{'type':Sequelize[_0xb80f('0x1')]}};
\ No newline at end of file
index 2e8b072..6bb57f6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7eb8=['../../config/license/util','../../mysqldb','status','end','json','offset','undefined','limit','count','Content-Range','reject','save','update','then','destroy','error','name','map','Attachment','fieldName','key','model','query','filters','intersection','fields','attributes','length','hasOwnProperty','order','sort','where','pick','merge','type','VIRTUAL','filter','includeAll','include','findAll','rows','catch','show','params','keys','options','find','clone','rawAttributes','omit','body','updatedAt','create','file','originalname','basename','filename','mimetype','download','findOne','ChatOfflineMessageId','root','join','offline-chat/','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','path','sox','ejs','squel','crypto','jsforce','desk.js','to-csv','querystring','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment'];(function(_0x38dcf8,_0x58b4ef){var _0x27793f=function(_0x3eb775){while(--_0x3eb775){_0x38dcf8['push'](_0x38dcf8['shift']());}};_0x27793f(++_0x58b4ef);}(_0x7eb8,0x9a));var _0x87eb=function(_0x60aa06,_0x1b688c){_0x60aa06=_0x60aa06-0x0;var _0x2ac604=_0x7eb8[_0x60aa06];return _0x2ac604;};'use strict';var emlformat=require(_0x87eb('0x0'));var rimraf=require(_0x87eb('0x1'));var zipdir=require(_0x87eb('0x2'));var jsonpatch=require(_0x87eb('0x3'));var rp=require(_0x87eb('0x4'));var moment=require(_0x87eb('0x5'));var BPromise=require(_0x87eb('0x6'));var Mustache=require(_0x87eb('0x7'));var util=require('util');var path=require(_0x87eb('0x8'));var sox=require(_0x87eb('0x9'));var csv=require('to-csv');var ejs=require(_0x87eb('0xa'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require('lodash');var squel=require(_0x87eb('0xb'));var crypto=require(_0x87eb('0xc'));var jsforce=require(_0x87eb('0xd'));var deskjs=require(_0x87eb('0xe'));var toCsv=require(_0x87eb('0xf'));var querystring=require(_0x87eb('0x10'));var Papa=require('papaparse');var Redis=require(_0x87eb('0x11'));var authService=require(_0x87eb('0x12'));var qs=require(_0x87eb('0x13'));var as=require(_0x87eb('0x14'));var hardwareService=require(_0x87eb('0x15'));var logger=require(_0x87eb('0x16'))(_0x87eb('0x17'));var utils=require(_0x87eb('0x18'));var config=require(_0x87eb('0x19'));var licenseUtil=require(_0x87eb('0x1a'));var db=require(_0x87eb('0x1b'))['db'];function respondWithStatusCode(_0x56a030,_0x491e2e){_0x491e2e=_0x491e2e||0xcc;return function(_0x159b9c){if(_0x159b9c){return _0x56a030['sendStatus'](_0x491e2e);}return _0x56a030[_0x87eb('0x1c')](_0x491e2e)[_0x87eb('0x1d')]();};}function respondWithResult(_0x20392f,_0x28624c){_0x28624c=_0x28624c||0xc8;return function(_0x3f0954){if(_0x3f0954){return _0x20392f[_0x87eb('0x1c')](_0x28624c)[_0x87eb('0x1e')](_0x3f0954);}};}function respondWithFilteredResult(_0x5dc0bc,_0x8e0de8){return function(_0x2b26dd){if(_0x2b26dd){var _0x108581=typeof _0x8e0de8[_0x87eb('0x1f')]===_0x87eb('0x20')&&typeof _0x8e0de8[_0x87eb('0x21')]==='undefined';var _0x22faeb=_0x2b26dd[_0x87eb('0x22')];var _0x4dee32=_0x108581?0x0:_0x8e0de8[_0x87eb('0x1f')];var _0x24ee26=_0x108581?_0x2b26dd['count']:_0x8e0de8[_0x87eb('0x1f')]+_0x8e0de8[_0x87eb('0x21')];var _0x2db103;if(_0x24ee26>=_0x22faeb){_0x24ee26=_0x22faeb;_0x2db103=0xc8;}else{_0x2db103=0xce;}_0x5dc0bc[_0x87eb('0x1c')](_0x2db103);return _0x5dc0bc['set'](_0x87eb('0x23'),_0x4dee32+'-'+_0x24ee26+'/'+_0x22faeb)[_0x87eb('0x1e')](_0x2b26dd);}return null;};}function patchUpdates(_0x226e4a){return function(_0x471b03){try{jsonpatch['apply'](_0x471b03,_0x226e4a,!![]);}catch(_0x501c4c){return BPromise[_0x87eb('0x24')](_0x501c4c);}return _0x471b03[_0x87eb('0x25')]();};}function saveUpdates(_0xa44728,_0x22a246){return function(_0x46637a){if(_0x46637a){return _0x46637a[_0x87eb('0x26')](_0xa44728)[_0x87eb('0x27')](function(_0x584214){return _0x584214;});}return null;};}function removeEntity(_0x4d2b8b,_0x205e4e){return function(_0x55469b){if(_0x55469b){return _0x55469b[_0x87eb('0x28')]()['then'](function(){_0x4d2b8b['status'](0xcc)['end']();});}};}function handleEntityNotFound(_0x34b990,_0x4b52ae){return function(_0x3b43c7){if(!_0x3b43c7){_0x34b990['sendStatus'](0x194);}return _0x3b43c7;};}function handleError(_0x120969,_0x44548f){_0x44548f=_0x44548f||0x1f4;return function(_0x4684d8){logger[_0x87eb('0x29')](_0x4684d8['stack']);if(_0x4684d8['name']){delete _0x4684d8[_0x87eb('0x2a')];}_0x120969[_0x87eb('0x1c')](_0x44548f)['send'](_0x4684d8);};}exports['index']=function(_0x36fbec,_0x34e547){var _0x35c0b6={},_0x22d89d={},_0x342547={'count':0x0,'rows':[]};var _0x458309=_[_0x87eb('0x2b')](db[_0x87eb('0x2c')]['rawAttributes'],function(_0x4b9ba1){return{'name':_0x4b9ba1[_0x87eb('0x2d')],'type':_0x4b9ba1['type'][_0x87eb('0x2e')]};});_0x22d89d[_0x87eb('0x2f')]=_[_0x87eb('0x2b')](_0x458309,_0x87eb('0x2a'));_0x22d89d['query']=_['keys'](_0x36fbec[_0x87eb('0x30')]);_0x22d89d[_0x87eb('0x31')]=_[_0x87eb('0x32')](_0x22d89d[_0x87eb('0x2f')],_0x22d89d[_0x87eb('0x30')]);_0x35c0b6['attributes']=_[_0x87eb('0x32')](_0x22d89d[_0x87eb('0x2f')],qs[_0x87eb('0x33')](_0x36fbec[_0x87eb('0x30')][_0x87eb('0x33')]));_0x35c0b6['attributes']=_0x35c0b6[_0x87eb('0x34')][_0x87eb('0x35')]?_0x35c0b6[_0x87eb('0x34')]:_0x22d89d[_0x87eb('0x2f')];if(!_0x36fbec[_0x87eb('0x30')][_0x87eb('0x36')]('nolimit')){_0x35c0b6[_0x87eb('0x21')]=qs[_0x87eb('0x21')](_0x36fbec['query'][_0x87eb('0x21')]);_0x35c0b6[_0x87eb('0x1f')]=qs[_0x87eb('0x1f')](_0x36fbec[_0x87eb('0x30')]['offset']);}_0x35c0b6[_0x87eb('0x37')]=qs[_0x87eb('0x38')](_0x36fbec[_0x87eb('0x30')]['sort']);_0x35c0b6[_0x87eb('0x39')]=qs[_0x87eb('0x31')](_[_0x87eb('0x3a')](_0x36fbec[_0x87eb('0x30')],_0x22d89d[_0x87eb('0x31')]),_0x458309);if(_0x36fbec[_0x87eb('0x30')]['filter']){_0x35c0b6[_0x87eb('0x39')]=_[_0x87eb('0x3b')](_0x35c0b6[_0x87eb('0x39')],{'$or':_[_0x87eb('0x2b')](_0x458309,function(_0x4db68a){if(_0x4db68a[_0x87eb('0x3c')]!==_0x87eb('0x3d')){var _0x56a277={};_0x56a277[_0x4db68a[_0x87eb('0x2a')]]={'$like':'%'+_0x36fbec[_0x87eb('0x30')][_0x87eb('0x3e')]+'%'};return _0x56a277;}})});}_0x35c0b6=_[_0x87eb('0x3b')]({},_0x35c0b6,_0x36fbec['options']);var _0x2cf937={'where':_0x35c0b6['where']};return db[_0x87eb('0x2c')][_0x87eb('0x22')](_0x2cf937)[_0x87eb('0x27')](function(_0x529505){_0x342547[_0x87eb('0x22')]=_0x529505;if(_0x36fbec['query'][_0x87eb('0x3f')]){_0x35c0b6[_0x87eb('0x40')]=[{'all':!![]}];}return db[_0x87eb('0x2c')][_0x87eb('0x41')](_0x35c0b6);})[_0x87eb('0x27')](function(_0x34a5c7){_0x342547[_0x87eb('0x42')]=_0x34a5c7;return _0x342547;})[_0x87eb('0x27')](respondWithFilteredResult(_0x34e547,_0x35c0b6))[_0x87eb('0x43')](handleError(_0x34e547,null));};exports[_0x87eb('0x44')]=function(_0x47dedf,_0x21dae6){var _0x3bbeab={'raw':!![],'where':{'id':_0x47dedf[_0x87eb('0x45')]['id']}},_0x756ec9={};_0x756ec9[_0x87eb('0x2f')]=_[_0x87eb('0x46')](db[_0x87eb('0x2c')]['rawAttributes']);_0x756ec9[_0x87eb('0x30')]=_['keys'](_0x47dedf[_0x87eb('0x30')]);_0x756ec9[_0x87eb('0x31')]=_[_0x87eb('0x32')](_0x756ec9[_0x87eb('0x2f')],_0x756ec9['query']);_0x3bbeab[_0x87eb('0x34')]=_[_0x87eb('0x32')](_0x756ec9['model'],qs[_0x87eb('0x33')](_0x47dedf[_0x87eb('0x30')][_0x87eb('0x33')]));_0x3bbeab[_0x87eb('0x34')]=_0x3bbeab[_0x87eb('0x34')]['length']?_0x3bbeab[_0x87eb('0x34')]:_0x756ec9[_0x87eb('0x2f')];if(_0x47dedf[_0x87eb('0x30')]['includeAll']){_0x3bbeab['include']=[{'all':!![]}];}_0x3bbeab=_['merge']({},_0x3bbeab,_0x47dedf[_0x87eb('0x47')]);return db[_0x87eb('0x2c')][_0x87eb('0x48')](_0x3bbeab)[_0x87eb('0x27')](handleEntityNotFound(_0x21dae6,null))[_0x87eb('0x27')](respondWithResult(_0x21dae6,null))[_0x87eb('0x43')](handleError(_0x21dae6,null));};exports[_0x87eb('0x49')]=function(_0x192125,_0x2b9f60){var _0x461d2f={'where':{'id':_0x192125['params']['id']}},_0x5410c7={};_0x5410c7[_0x87eb('0x2f')]=_[_0x87eb('0x46')](db[_0x87eb('0x2c')][_0x87eb('0x4a')]);_0x461d2f['attributes']=_[_0x87eb('0x32')](_0x5410c7[_0x87eb('0x2f')],qs['fields'](_0x192125['query']['fields']));_0x461d2f[_0x87eb('0x34')]=_0x461d2f[_0x87eb('0x34')]['length']?_0x461d2f[_0x87eb('0x34')]:_0x5410c7[_0x87eb('0x2f')];if(_0x192125['query'][_0x87eb('0x3f')]){_0x461d2f[_0x87eb('0x40')]=[{'all':!![]}];}_0x461d2f=_[_0x87eb('0x3b')]({},_0x461d2f,_0x192125[_0x87eb('0x47')]);return db[_0x87eb('0x2c')][_0x87eb('0x48')](_0x461d2f)['then'](handleEntityNotFound(_0x2b9f60,null))[_0x87eb('0x27')](function(_0x6140d6){if(_0x6140d6){var _0x2bc974=_0x6140d6['get']({'plain':!![]});_0x2bc974=qs[_0x87eb('0x4b')](_0x2bc974,['id','createdAt','updatedAt']);_0x192125['body']=_['omit'](_0x192125[_0x87eb('0x4c')],['id','createdAt',_0x87eb('0x4d')]);return db['Attachment'][_0x87eb('0x4e')](_[_0x87eb('0x3b')](_0x2bc974,_0x192125[_0x87eb('0x4c')]),{'include':_0x192125[_0x87eb('0x30')][_0x87eb('0x3f')]?[{'all':!![]}]:undefined});}})[_0x87eb('0x27')](respondWithResult(_0x2b9f60,0xc9))[_0x87eb('0x43')](handleError(_0x2b9f60,null));};exports['update']=function(_0x428c6c,_0x36ac2e){if(_0x428c6c[_0x87eb('0x4c')]['id']){delete _0x428c6c[_0x87eb('0x4c')]['id'];}return db['Attachment'][_0x87eb('0x48')]({'where':{'id':_0x428c6c[_0x87eb('0x45')]['id']}})[_0x87eb('0x27')](handleEntityNotFound(_0x36ac2e,null))[_0x87eb('0x27')](saveUpdates(_0x428c6c[_0x87eb('0x4c')],null))[_0x87eb('0x27')](respondWithResult(_0x36ac2e,null))['catch'](handleError(_0x36ac2e,null));};exports['destroy']=function(_0x2a98fc,_0x23eb32){return db['Attachment'][_0x87eb('0x48')]({'where':{'id':_0x2a98fc[_0x87eb('0x45')]['id']}})[_0x87eb('0x27')](handleEntityNotFound(_0x23eb32,null))[_0x87eb('0x27')](removeEntity(_0x23eb32,null))[_0x87eb('0x43')](handleError(_0x23eb32,null));};exports[_0x87eb('0x4e')]=function(_0x378579,_0x4e3836,_0x5650e1){_0x378579[_0x87eb('0x4c')]['name']=_0x378579[_0x87eb('0x4f')][_0x87eb('0x50')];_0x378579[_0x87eb('0x4c')][_0x87eb('0x51')]=_0x378579[_0x87eb('0x4f')][_0x87eb('0x52')];_0x378579[_0x87eb('0x4c')]['type']=_0x378579['file'][_0x87eb('0x53')];return db['Attachment'][_0x87eb('0x4e')](_0x378579[_0x87eb('0x4c')])[_0x87eb('0x27')](respondWithResult(_0x4e3836,0xc9))[_0x87eb('0x43')](handleError(_0x4e3836,null));};exports[_0x87eb('0x54')]=function(_0x179ac0,_0x5825ef,_0x22d4e9){return db['Attachment'][_0x87eb('0x55')]({'where':{'id':_0x179ac0[_0x87eb('0x45')]['id']},'raw':!![]})[_0x87eb('0x27')](handleEntityNotFound(_0x5825ef,null))[_0x87eb('0x27')](function(_0x268cbc){if(_0x268cbc){var _0x22753e=_0x268cbc[_0x87eb('0x56')]!==null;var _0x25ef5c=path['join'](config[_0x87eb('0x57')],'server/files/attachments/');if(_0x22753e){_0x25ef5c=path[_0x87eb('0x58')](_0x25ef5c,_0x87eb('0x59'));}var _0x459eee=path[_0x87eb('0x58')](_0x25ef5c,_0x268cbc['basename']);return _0x5825ef[_0x87eb('0x54')](_0x459eee);}})[_0x87eb('0x43')](handleError(_0x5825ef,null));};
\ No newline at end of file
+var _0xe596=['find','catch','clone','include','get','omit','createdAt','updatedAt','body','create','file','originalname','basename','mimetype','download','ChatOfflineMessageId','join','root','server/files/attachments/','offline-chat/','eml-format','rimraf','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','to-csv','ejs','fs-extra','crypto','jsforce','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../mysqldb','sendStatus','status','json','offset','undefined','limit','count','Content-Range','reject','save','update','then','error','name','send','index','map','Attachment','rawAttributes','fieldName','type','model','query','keys','attributes','intersection','fields','length','hasOwnProperty','nolimit','order','sort','where','pick','VIRTUAL','filter','merge','options','includeAll','findAll','show','params','filters'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0xe596,0x6d));var _0x6e59=function(_0x4e676e,_0x2a7c6d){_0x4e676e=_0x4e676e-0x0;var _0x336a3c=_0xe596[_0x4e676e];return _0x336a3c;};'use strict';var emlformat=require(_0x6e59('0x0'));var rimraf=require(_0x6e59('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0x6e59('0x2'));var rp=require(_0x6e59('0x3'));var moment=require(_0x6e59('0x4'));var BPromise=require(_0x6e59('0x5'));var Mustache=require(_0x6e59('0x6'));var util=require(_0x6e59('0x7'));var path=require(_0x6e59('0x8'));var sox=require('sox');var csv=require(_0x6e59('0x9'));var ejs=require(_0x6e59('0xa'));var fs=require('fs');var fs_extra=require(_0x6e59('0xb'));var _=require('lodash');var squel=require('squel');var crypto=require(_0x6e59('0xc'));var jsforce=require(_0x6e59('0xd'));var deskjs=require('desk.js');var toCsv=require(_0x6e59('0x9'));var querystring=require(_0x6e59('0xe'));var Papa=require(_0x6e59('0xf'));var Redis=require(_0x6e59('0x10'));var authService=require(_0x6e59('0x11'));var qs=require(_0x6e59('0x12'));var as=require(_0x6e59('0x13'));var hardwareService=require(_0x6e59('0x14'));var logger=require(_0x6e59('0x15'))(_0x6e59('0x16'));var utils=require(_0x6e59('0x17'));var config=require(_0x6e59('0x18'));var licenseUtil=require('../../config/license/util');var db=require(_0x6e59('0x19'))['db'];function respondWithStatusCode(_0x228f35,_0x1df3e9){_0x1df3e9=_0x1df3e9||0xcc;return function(_0x590965){if(_0x590965){return _0x228f35[_0x6e59('0x1a')](_0x1df3e9);}return _0x228f35[_0x6e59('0x1b')](_0x1df3e9)['end']();};}function respondWithResult(_0x511114,_0x5ca8a8){_0x5ca8a8=_0x5ca8a8||0xc8;return function(_0x4c3dac){if(_0x4c3dac){return _0x511114[_0x6e59('0x1b')](_0x5ca8a8)[_0x6e59('0x1c')](_0x4c3dac);}};}function respondWithFilteredResult(_0x906df1,_0x4546c2){return function(_0x11736e){if(_0x11736e){var _0x3c1fdb=typeof _0x4546c2[_0x6e59('0x1d')]===_0x6e59('0x1e')&&typeof _0x4546c2[_0x6e59('0x1f')]===_0x6e59('0x1e');var _0x53529f=_0x11736e[_0x6e59('0x20')];var _0x7b712d=_0x3c1fdb?0x0:_0x4546c2['offset'];var _0x221f57=_0x3c1fdb?_0x11736e[_0x6e59('0x20')]:_0x4546c2['offset']+_0x4546c2['limit'];var _0x53a588;if(_0x221f57>=_0x53529f){_0x221f57=_0x53529f;_0x53a588=0xc8;}else{_0x53a588=0xce;}_0x906df1[_0x6e59('0x1b')](_0x53a588);return _0x906df1['set'](_0x6e59('0x21'),_0x7b712d+'-'+_0x221f57+'/'+_0x53529f)[_0x6e59('0x1c')](_0x11736e);}return null;};}function patchUpdates(_0x3128cf){return function(_0x4076ba){try{jsonpatch['apply'](_0x4076ba,_0x3128cf,!![]);}catch(_0x1ab9c4){return BPromise[_0x6e59('0x22')](_0x1ab9c4);}return _0x4076ba[_0x6e59('0x23')]();};}function saveUpdates(_0x24b7c5,_0x77e557){return function(_0x89a293){if(_0x89a293){return _0x89a293[_0x6e59('0x24')](_0x24b7c5)[_0x6e59('0x25')](function(_0x8337c2){return _0x8337c2;});}return null;};}function removeEntity(_0x218818,_0x1beac6){return function(_0x4cc573){if(_0x4cc573){return _0x4cc573['destroy']()[_0x6e59('0x25')](function(){_0x218818[_0x6e59('0x1b')](0xcc)['end']();});}};}function handleEntityNotFound(_0x297c07,_0x3f77e6){return function(_0x328070){if(!_0x328070){_0x297c07[_0x6e59('0x1a')](0x194);}return _0x328070;};}function handleError(_0x2d4757,_0x313976){_0x313976=_0x313976||0x1f4;return function(_0x5c2023){logger[_0x6e59('0x26')](_0x5c2023['stack']);if(_0x5c2023['name']){delete _0x5c2023[_0x6e59('0x27')];}_0x2d4757['status'](_0x313976)[_0x6e59('0x28')](_0x5c2023);};}exports[_0x6e59('0x29')]=function(_0x2e9317,_0x10b2d1){var _0x357e51={},_0x2d7c7b={},_0xaa2fbb={'count':0x0,'rows':[]};var _0x532faf=_[_0x6e59('0x2a')](db[_0x6e59('0x2b')][_0x6e59('0x2c')],function(_0x496ca8){return{'name':_0x496ca8[_0x6e59('0x2d')],'type':_0x496ca8[_0x6e59('0x2e')]['key']};});_0x2d7c7b[_0x6e59('0x2f')]=_[_0x6e59('0x2a')](_0x532faf,'name');_0x2d7c7b[_0x6e59('0x30')]=_[_0x6e59('0x31')](_0x2e9317['query']);_0x2d7c7b['filters']=_['intersection'](_0x2d7c7b[_0x6e59('0x2f')],_0x2d7c7b[_0x6e59('0x30')]);_0x357e51[_0x6e59('0x32')]=_[_0x6e59('0x33')](_0x2d7c7b[_0x6e59('0x2f')],qs['fields'](_0x2e9317['query'][_0x6e59('0x34')]));_0x357e51[_0x6e59('0x32')]=_0x357e51['attributes'][_0x6e59('0x35')]?_0x357e51[_0x6e59('0x32')]:_0x2d7c7b[_0x6e59('0x2f')];if(!_0x2e9317[_0x6e59('0x30')][_0x6e59('0x36')](_0x6e59('0x37'))){_0x357e51[_0x6e59('0x1f')]=qs['limit'](_0x2e9317[_0x6e59('0x30')]['limit']);_0x357e51[_0x6e59('0x1d')]=qs[_0x6e59('0x1d')](_0x2e9317[_0x6e59('0x30')]['offset']);}_0x357e51[_0x6e59('0x38')]=qs[_0x6e59('0x39')](_0x2e9317[_0x6e59('0x30')][_0x6e59('0x39')]);_0x357e51[_0x6e59('0x3a')]=qs['filters'](_[_0x6e59('0x3b')](_0x2e9317[_0x6e59('0x30')],_0x2d7c7b['filters']),_0x532faf);if(_0x2e9317['query']['filter']){_0x357e51[_0x6e59('0x3a')]=_['merge'](_0x357e51['where'],{'$or':_[_0x6e59('0x2a')](_0x532faf,function(_0x36cbed){if(_0x36cbed['type']!==_0x6e59('0x3c')){var _0x75ca8d={};_0x75ca8d[_0x36cbed['name']]={'$like':'%'+_0x2e9317[_0x6e59('0x30')][_0x6e59('0x3d')]+'%'};return _0x75ca8d;}})});}_0x357e51=_[_0x6e59('0x3e')]({},_0x357e51,_0x2e9317[_0x6e59('0x3f')]);var _0x5063b3={'where':_0x357e51[_0x6e59('0x3a')]};return db['Attachment']['count'](_0x5063b3)['then'](function(_0x518c1a){_0xaa2fbb[_0x6e59('0x20')]=_0x518c1a;if(_0x2e9317[_0x6e59('0x30')][_0x6e59('0x40')]){_0x357e51['include']=[{'all':!![]}];}return db[_0x6e59('0x2b')][_0x6e59('0x41')](_0x357e51);})[_0x6e59('0x25')](function(_0x3fbc34){_0xaa2fbb['rows']=_0x3fbc34;return _0xaa2fbb;})[_0x6e59('0x25')](respondWithFilteredResult(_0x10b2d1,_0x357e51))['catch'](handleError(_0x10b2d1,null));};exports[_0x6e59('0x42')]=function(_0x36788f,_0x36fb31){var _0x14955c={'raw':!![],'where':{'id':_0x36788f[_0x6e59('0x43')]['id']}},_0x402c00={};_0x402c00['model']=_[_0x6e59('0x31')](db[_0x6e59('0x2b')][_0x6e59('0x2c')]);_0x402c00['query']=_[_0x6e59('0x31')](_0x36788f[_0x6e59('0x30')]);_0x402c00[_0x6e59('0x44')]=_[_0x6e59('0x33')](_0x402c00[_0x6e59('0x2f')],_0x402c00[_0x6e59('0x30')]);_0x14955c[_0x6e59('0x32')]=_['intersection'](_0x402c00[_0x6e59('0x2f')],qs[_0x6e59('0x34')](_0x36788f[_0x6e59('0x30')][_0x6e59('0x34')]));_0x14955c[_0x6e59('0x32')]=_0x14955c[_0x6e59('0x32')][_0x6e59('0x35')]?_0x14955c[_0x6e59('0x32')]:_0x402c00['model'];if(_0x36788f['query'][_0x6e59('0x40')]){_0x14955c['include']=[{'all':!![]}];}_0x14955c=_[_0x6e59('0x3e')]({},_0x14955c,_0x36788f['options']);return db[_0x6e59('0x2b')][_0x6e59('0x45')](_0x14955c)[_0x6e59('0x25')](handleEntityNotFound(_0x36fb31,null))['then'](respondWithResult(_0x36fb31,null))[_0x6e59('0x46')](handleError(_0x36fb31,null));};exports[_0x6e59('0x47')]=function(_0x2b2b21,_0x336de1){var _0x3b186a={'where':{'id':_0x2b2b21[_0x6e59('0x43')]['id']}},_0x458931={};_0x458931[_0x6e59('0x2f')]=_[_0x6e59('0x31')](db['Attachment'][_0x6e59('0x2c')]);_0x3b186a[_0x6e59('0x32')]=_[_0x6e59('0x33')](_0x458931[_0x6e59('0x2f')],qs[_0x6e59('0x34')](_0x2b2b21[_0x6e59('0x30')][_0x6e59('0x34')]));_0x3b186a[_0x6e59('0x32')]=_0x3b186a['attributes'][_0x6e59('0x35')]?_0x3b186a[_0x6e59('0x32')]:_0x458931[_0x6e59('0x2f')];if(_0x2b2b21['query'][_0x6e59('0x40')]){_0x3b186a[_0x6e59('0x48')]=[{'all':!![]}];}_0x3b186a=_[_0x6e59('0x3e')]({},_0x3b186a,_0x2b2b21['options']);return db['Attachment']['find'](_0x3b186a)[_0x6e59('0x25')](handleEntityNotFound(_0x336de1,null))[_0x6e59('0x25')](function(_0x1bd005){if(_0x1bd005){var _0x515291=_0x1bd005[_0x6e59('0x49')]({'plain':!![]});_0x515291=qs[_0x6e59('0x4a')](_0x515291,['id',_0x6e59('0x4b'),_0x6e59('0x4c')]);_0x2b2b21[_0x6e59('0x4d')]=_[_0x6e59('0x4a')](_0x2b2b21[_0x6e59('0x4d')],['id','createdAt',_0x6e59('0x4c')]);return db['Attachment'][_0x6e59('0x4e')](_[_0x6e59('0x3e')](_0x515291,_0x2b2b21[_0x6e59('0x4d')]),{'include':_0x2b2b21[_0x6e59('0x30')][_0x6e59('0x40')]?[{'all':!![]}]:undefined});}})[_0x6e59('0x25')](respondWithResult(_0x336de1,0xc9))[_0x6e59('0x46')](handleError(_0x336de1,null));};exports[_0x6e59('0x24')]=function(_0x4a6116,_0x943bd){if(_0x4a6116[_0x6e59('0x4d')]['id']){delete _0x4a6116['body']['id'];}return db[_0x6e59('0x2b')][_0x6e59('0x45')]({'where':{'id':_0x4a6116[_0x6e59('0x43')]['id']}})[_0x6e59('0x25')](handleEntityNotFound(_0x943bd,null))[_0x6e59('0x25')](saveUpdates(_0x4a6116['body'],null))[_0x6e59('0x25')](respondWithResult(_0x943bd,null))[_0x6e59('0x46')](handleError(_0x943bd,null));};exports['destroy']=function(_0x5773a1,_0x2cd3f0){return db['Attachment'][_0x6e59('0x45')]({'where':{'id':_0x5773a1['params']['id']}})[_0x6e59('0x25')](handleEntityNotFound(_0x2cd3f0,null))[_0x6e59('0x25')](removeEntity(_0x2cd3f0,null))['catch'](handleError(_0x2cd3f0,null));};exports[_0x6e59('0x4e')]=function(_0x288653,_0x5b7083,_0x1bc28b){_0x288653[_0x6e59('0x4d')][_0x6e59('0x27')]=_0x288653[_0x6e59('0x4f')][_0x6e59('0x50')];_0x288653[_0x6e59('0x4d')][_0x6e59('0x51')]=_0x288653[_0x6e59('0x4f')]['filename'];_0x288653[_0x6e59('0x4d')][_0x6e59('0x2e')]=_0x288653[_0x6e59('0x4f')][_0x6e59('0x52')];return db[_0x6e59('0x2b')][_0x6e59('0x4e')](_0x288653[_0x6e59('0x4d')])[_0x6e59('0x25')](respondWithResult(_0x5b7083,0xc9))[_0x6e59('0x46')](handleError(_0x5b7083,null));};exports[_0x6e59('0x53')]=function(_0xa4f8a4,_0x62a694,_0xbb3448){return db[_0x6e59('0x2b')]['findOne']({'where':{'id':_0xa4f8a4['params']['id']},'raw':!![]})[_0x6e59('0x25')](handleEntityNotFound(_0x62a694,null))[_0x6e59('0x25')](function(_0x1686c3){if(_0x1686c3){var _0x38b1fb=_0x1686c3[_0x6e59('0x54')]!==null;var _0x566cc9=path[_0x6e59('0x55')](config[_0x6e59('0x56')],_0x6e59('0x57'));if(_0x38b1fb){_0x566cc9=path[_0x6e59('0x55')](_0x566cc9,_0x6e59('0x58'));}var _0x56eed5=path[_0x6e59('0x55')](_0x566cc9,_0x1686c3[_0x6e59('0x51')]);return _0x62a694[_0x6e59('0x53')](_0x56eed5);}})[_0x6e59('0x46')](handleError(_0x62a694,null));};
\ No newline at end of file
index ada1c88..e256fa4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x72e0=['rimraf','../../config/environment','define','attachments','util','../../config/logger','api','request-promise','path'];(function(_0x5b9e38,_0x47cc9d){var _0x1ef67d=function(_0x21406b){while(--_0x21406b){_0x5b9e38['push'](_0x5b9e38['shift']());}};_0x1ef67d(++_0x47cc9d);}(_0x72e0,0x199));var _0x072e=function(_0x109aaf,_0x3979da){_0x109aaf=_0x109aaf-0x0;var _0x41b723=_0x72e0[_0x109aaf];return _0x41b723;};'use strict';var _=require('lodash');var util=require(_0x072e('0x0'));var logger=require(_0x072e('0x1'))(_0x072e('0x2'));var moment=require('moment');var BPromise=require('bluebird');var rp=require(_0x072e('0x3'));var fs=require('fs');var path=require(_0x072e('0x4'));var rimraf=require(_0x072e('0x5'));var config=require(_0x072e('0x6'));var attributes=require('./attachment.attributes');module['exports']=function(_0x200fd8,_0x4f6cb3){return _0x200fd8[_0x072e('0x7')]('Attachment',attributes,{'tableName':_0x072e('0x8'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xdf01=['../../config/environment','./attachment.attributes','exports','define','Attachment','attachments','lodash','util','../../config/logger','api','moment','bluebird','request-promise','rimraf'];(function(_0x14f89e,_0x139fce){var _0x26092d=function(_0x2bdc20){while(--_0x2bdc20){_0x14f89e['push'](_0x14f89e['shift']());}};_0x26092d(++_0x139fce);}(_0xdf01,0x13a));var _0x1df0=function(_0x19ba91,_0x2e0669){_0x19ba91=_0x19ba91-0x0;var _0x96636a=_0xdf01[_0x19ba91];return _0x96636a;};'use strict';var _=require(_0x1df0('0x0'));var util=require(_0x1df0('0x1'));var logger=require(_0x1df0('0x2'))(_0x1df0('0x3'));var moment=require(_0x1df0('0x4'));var BPromise=require(_0x1df0('0x5'));var rp=require(_0x1df0('0x6'));var fs=require('fs');var path=require('path');var rimraf=require(_0x1df0('0x7'));var config=require(_0x1df0('0x8'));var attributes=require(_0x1df0('0x9'));module[_0x1df0('0xa')]=function(_0x29e2e2,_0x1ca198){return _0x29e2e2[_0x1df0('0xb')](_0x1df0('0xc'),attributes,{'tableName':_0x1df0('0xd'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 1565b6a..dcd45b2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb0d9=['Attachment,\x20%s,\x20%s','debug','Attachment,\x20%s,\x20%s,\x20%s','stringify','error','code','message','request\x20sent','catch','CreateAttachment','Attachment','create','body','options','raw','then','lodash','util','moment','bluebird','randomstring','ioredis','../../config/utils','jayson/promise','client','http','request','info'];(function(_0x1ca4c3,_0x554126){var _0x4426a6=function(_0x11e9b0){while(--_0x11e9b0){_0x1ca4c3['push'](_0x1ca4c3['shift']());}};_0x4426a6(++_0x554126);}(_0xb0d9,0x10c));var _0x9b0d=function(_0x56c9df,_0xce16bb){_0x56c9df=_0x56c9df-0x0;var _0x3cf94a=_0xb0d9[_0x56c9df];return _0x3cf94a;};'use strict';var _=require(_0x9b0d('0x0'));var util=require(_0x9b0d('0x1'));var moment=require(_0x9b0d('0x2'));var BPromise=require(_0x9b0d('0x3'));var rs=require(_0x9b0d('0x4'));var fs=require('fs');var Redis=require(_0x9b0d('0x5'));var db=require('../../mysqldb')['db'];var utils=require(_0x9b0d('0x6'));var logger=require('../../config/logger')('rpc');var config=require('../../config/environment');var jayson=require(_0x9b0d('0x7'));var client=jayson[_0x9b0d('0x8')][_0x9b0d('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x438e0a,_0x2c519d,_0x45c371){return new BPromise(function(_0x32ee67,_0x30cd11){return client[_0x9b0d('0xa')](_0x438e0a,_0x45c371)['then'](function(_0x479a06){logger[_0x9b0d('0xb')](_0x9b0d('0xc'),_0x2c519d,'request\x20sent');logger[_0x9b0d('0xd')](_0x9b0d('0xe'),_0x2c519d,'request\x20sent',JSON[_0x9b0d('0xf')](_0x479a06));if(_0x479a06[_0x9b0d('0x10')]){if(_0x479a06['error'][_0x9b0d('0x11')]===0x1f4){logger['error'](_0x9b0d('0xc'),_0x2c519d,_0x479a06[_0x9b0d('0x10')][_0x9b0d('0x12')]);return _0x30cd11(_0x479a06['error'][_0x9b0d('0x12')]);}logger['error'](_0x9b0d('0xc'),_0x2c519d,_0x479a06[_0x9b0d('0x10')]['message']);return _0x32ee67(_0x479a06[_0x9b0d('0x10')]['message']);}else{logger[_0x9b0d('0xb')](_0x9b0d('0xc'),_0x2c519d,_0x9b0d('0x13'));_0x32ee67(_0x479a06['result'][_0x9b0d('0x12')]);}})[_0x9b0d('0x14')](function(_0x49db91){logger['error']('Attachment,\x20%s,\x20%s',_0x2c519d,_0x49db91);_0x30cd11(_0x49db91);});});}exports[_0x9b0d('0x15')]=function(_0xd8bb89){var _0x41a5e2=this;return new Promise(function(_0x27ee1a,_0x54ccf1){return db[_0x9b0d('0x16')][_0x9b0d('0x17')](_0xd8bb89[_0x9b0d('0x18')],{'raw':_0xd8bb89[_0x9b0d('0x19')]?_0xd8bb89['options'][_0x9b0d('0x1a')]===undefined?!![]:![]:!![]})[_0x9b0d('0x1b')](function(_0xe5fb08){logger[_0x9b0d('0xb')](_0x9b0d('0x15'),_0xd8bb89);logger['debug'](_0x9b0d('0x15'),_0xd8bb89,JSON[_0x9b0d('0xf')](_0xe5fb08));_0x27ee1a(_0xe5fb08);})[_0x9b0d('0x14')](function(_0x14c01b){logger[_0x9b0d('0x10')](_0x9b0d('0x15'),_0x14c01b[_0x9b0d('0x12')],_0xd8bb89);_0x54ccf1(_0x41a5e2[_0x9b0d('0x10')](0x1f4,_0x14c01b[_0x9b0d('0x12')]));});});};
\ No newline at end of file
+var _0x3685=['ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','http','request','then','info','Attachment,\x20%s,\x20%s','request\x20sent','debug','stringify','error','code','message','result','CreateAttachment','Attachment','options','raw','catch','lodash','moment','bluebird','randomstring'];(function(_0x5a79e2,_0x319b1a){var _0x266c45=function(_0x172478){while(--_0x172478){_0x5a79e2['push'](_0x5a79e2['shift']());}};_0x266c45(++_0x319b1a);}(_0x3685,0xf8));var _0x5368=function(_0x20a584,_0xe384a5){_0x20a584=_0x20a584-0x0;var _0x4b41a8=_0x3685[_0x20a584];return _0x4b41a8;};'use strict';var _=require(_0x5368('0x0'));var util=require('util');var moment=require(_0x5368('0x1'));var BPromise=require(_0x5368('0x2'));var rs=require(_0x5368('0x3'));var fs=require('fs');var Redis=require(_0x5368('0x4'));var db=require(_0x5368('0x5'))['db'];var utils=require(_0x5368('0x6'));var logger=require(_0x5368('0x7'))(_0x5368('0x8'));var config=require(_0x5368('0x9'));var jayson=require(_0x5368('0xa'));var client=jayson['client'][_0x5368('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x2529a2,_0x39223d,_0xaf4549){return new BPromise(function(_0x55fb7d,_0x14e621){return client[_0x5368('0xc')](_0x2529a2,_0xaf4549)[_0x5368('0xd')](function(_0x2a6ce8){logger[_0x5368('0xe')](_0x5368('0xf'),_0x39223d,_0x5368('0x10'));logger[_0x5368('0x11')]('Attachment,\x20%s,\x20%s,\x20%s',_0x39223d,_0x5368('0x10'),JSON[_0x5368('0x12')](_0x2a6ce8));if(_0x2a6ce8[_0x5368('0x13')]){if(_0x2a6ce8['error'][_0x5368('0x14')]===0x1f4){logger[_0x5368('0x13')]('Attachment,\x20%s,\x20%s',_0x39223d,_0x2a6ce8['error']['message']);return _0x14e621(_0x2a6ce8[_0x5368('0x13')][_0x5368('0x15')]);}logger[_0x5368('0x13')](_0x5368('0xf'),_0x39223d,_0x2a6ce8[_0x5368('0x13')][_0x5368('0x15')]);return _0x55fb7d(_0x2a6ce8[_0x5368('0x13')][_0x5368('0x15')]);}else{logger[_0x5368('0xe')](_0x5368('0xf'),_0x39223d,'request\x20sent');_0x55fb7d(_0x2a6ce8[_0x5368('0x16')][_0x5368('0x15')]);}})['catch'](function(_0x19790d){logger[_0x5368('0x13')](_0x5368('0xf'),_0x39223d,_0x19790d);_0x14e621(_0x19790d);});});}exports[_0x5368('0x17')]=function(_0x5b10e9){var _0x3fcae0=this;return new Promise(function(_0x56ac4d,_0x4baaa9){return db[_0x5368('0x18')]['create'](_0x5b10e9['body'],{'raw':_0x5b10e9['options']?_0x5b10e9[_0x5368('0x19')][_0x5368('0x1a')]===undefined?!![]:![]:!![]})[_0x5368('0xd')](function(_0x5cef40){logger['info'](_0x5368('0x17'),_0x5b10e9);logger[_0x5368('0x11')](_0x5368('0x17'),_0x5b10e9,JSON[_0x5368('0x12')](_0x5cef40));_0x56ac4d(_0x5cef40);})[_0x5368('0x1b')](function(_0x1093e2){logger[_0x5368('0x13')](_0x5368('0x17'),_0x1093e2[_0x5368('0x15')],_0x5b10e9);_0x4baaa9(_0x3fcae0[_0x5368('0x13')](0x1f4,_0x1093e2['message']));});});};
\ No newline at end of file
index bf5720e..a95d499 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(_0x26702b,_0x11afd8){var _0x5ee6d4=function(_0x331a42){while(--_0x331a42){_0x26702b['push'](_0x26702b['shift']());}};_0x5ee6d4(++_0x11afd8);}(_0x5f2f,0x73));var _0xf5f2=function(_0x2163ca,_0x14aaed){_0x2163ca=_0x2163ca-0x0;var _0x47ec92=_0x5f2f[_0x2163ca];return _0x47ec92;};'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 _0x5f66=['fs-extra','../../components/auth/service','../../config/environment','get','isAuthenticated','/:id','show','/:id/download','/:id/clone','clone','diskStorage','root','format','%s-%s','now','originalname','replace','post','single','file','create','delete','destroy','exports','util','connect-timeout','express','Router'];(function(_0x4bb66f,_0x3cd682){var _0xf2772f=function(_0x2e3698){while(--_0x2e3698){_0x4bb66f['push'](_0x4bb66f['shift']());}};_0xf2772f(++_0x3cd682);}(_0x5f66,0x1a0));var _0x65f6=function(_0x13d07a,_0x41efc3){_0x13d07a=_0x13d07a-0x0;var _0x5ee0ee=_0x5f66[_0x13d07a];return _0x5ee0ee;};'use strict';var multer=require('multer');var util=require(_0x65f6('0x0'));var path=require('path');var timeout=require(_0x65f6('0x1'));var express=require(_0x65f6('0x2'));var router=express[_0x65f6('0x3')]();var fs_extra=require(_0x65f6('0x4'));var auth=require(_0x65f6('0x5'));var interaction=require('../../components/interaction/service');var config=require(_0x65f6('0x6'));var controller=require('./attachment.controller');router[_0x65f6('0x7')]('/',auth[_0x65f6('0x8')](),controller['index']);router['get'](_0x65f6('0x9'),auth[_0x65f6('0x8')](),controller[_0x65f6('0xa')]);router[_0x65f6('0x7')](_0x65f6('0xb'),auth[_0x65f6('0x8')](),controller['download']);router['post'](_0x65f6('0xc'),auth[_0x65f6('0x8')](),controller[_0x65f6('0xd')]);var upload=multer({'storage':multer[_0x65f6('0xe')]({'destination':function(_0x50d26d,_0x41a7fd,_0x571436){_0x571436(null,path['join'](config[_0x65f6('0xf')],'server/files/attachments/'));},'filename':function(_0x419819,_0x4862a5,_0x2f964a){_0x2f964a(null,util[_0x65f6('0x10')](_0x65f6('0x11'),Date[_0x65f6('0x12')](),_0x4862a5[_0x65f6('0x13')][_0x65f6('0x14')](/[+@&\/\\#,+()$~%'":*?<>{}\s\\|]/g,'-')));}})});router[_0x65f6('0x15')]('/',upload[_0x65f6('0x16')](_0x65f6('0x17')),controller[_0x65f6('0x18')]);router['put'](_0x65f6('0x9'),auth['isAuthenticated'](),controller['update']);router[_0x65f6('0x19')](_0x65f6('0x9'),auth[_0x65f6('0x8')](),controller[_0x65f6('0x1a')]);module[_0x65f6('0x1b')]=router;
\ No newline at end of file
index 1fa44a7..25f8839 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0e6c=['moment','../../mysqldb','../../config/environment','../../components/auth/service','signToken','../../config/utils','authenticate','google','/login','profile','email','use','secret','callbackURL','Setting','blockDuration','then','User','map','emails','value','admin','user','agent','disabled','Incorrect\x20username\x20and/or\x20password.\x20Please\x20retry\x20again\x20or\x20contact\x20the\x20administrator.','blocked','add','minutes','clearBlockUser','getLicense','catch','passport-google-oauth20','Strategy'];(function(_0x34e89d,_0xfe54b7){var _0x19919d=function(_0x556bf3){while(--_0x556bf3){_0x34e89d['push'](_0x34e89d['shift']());}};_0x19919d(++_0xfe54b7);}(_0x0e6c,0x64));var _0xc0e6=function(_0x23f607,_0x181d10){_0x23f607=_0x23f607-0x0;var _0x161984=_0x0e6c[_0x23f607];return _0x161984;};'use strict';var _=require('lodash');var passport=require('passport');var GoogleStrategy=require(_0xc0e6('0x0'))[_0xc0e6('0x1')];var moment=require(_0xc0e6('0x2'));var db=require(_0xc0e6('0x3'))['db'];var config=require(_0xc0e6('0x4'));var signToken=require(_0xc0e6('0x5'))[_0xc0e6('0x6')];var utils=require(_0xc0e6('0x7'));exports['login']=passport[_0xc0e6('0x8')](_0xc0e6('0x9'),{'failureRedirect':_0xc0e6('0xa'),'scope':[_0xc0e6('0xb'),_0xc0e6('0xc')],'session':![]});exports['callback']=passport['authenticate']('google',{'failureRedirect':_0xc0e6('0xa'),'session':![]});passport[_0xc0e6('0xd')](new GoogleStrategy({'clientID':config[_0xc0e6('0x9')]?config[_0xc0e6('0x9')]['clientID']:'id','clientSecret':config[_0xc0e6('0x9')]?config['google']['clientSecret']:_0xc0e6('0xe'),'callbackURL':config[_0xc0e6('0x9')]?config[_0xc0e6('0x9')][_0xc0e6('0xf')]:''},function(_0x523ba0,_0x2de010,_0x1ae1b5,_0x24c376){var _0x33e98a,_0x5395ec;return db[_0xc0e6('0x10')]['findOne']({'where':{'id':0x1},'attributes':['allowedLoginAttempts',_0xc0e6('0x11')],'raw':!![]})[_0xc0e6('0x12')](function(_0x3984c8){_0x33e98a=_0x3984c8;return db[_0xc0e6('0x13')]['find']({'where':{'email':_[_0xc0e6('0x14')](_0x1ae1b5[_0xc0e6('0x15')],_0xc0e6('0x16')),'role':{'$or':[_0xc0e6('0x17'),_0xc0e6('0x18'),_0xc0e6('0x19')]}}});})['then'](function(_0x57f846){_0x5395ec=_0x57f846;if(_0x5395ec){if(_0x5395ec[_0xc0e6('0x1a')]){return _0x24c376(_0xc0e6('0x1b'));}else if(_0x33e98a[_0xc0e6('0x11')]>0x0){if(_0x5395ec[_0xc0e6('0x1c')]){if(moment(_0x5395ec['blockedAt'])[_0xc0e6('0x1d')](_0x33e98a[_0xc0e6('0x11')],_0xc0e6('0x1e'))>moment()){return _0x24c376(_0xc0e6('0x1b'));}else{return utils[_0xc0e6('0x1f')](_0x5395ec,0x0,![],null)[_0xc0e6('0x12')](function(){return utils[_0xc0e6('0x20')](_0x5395ec);})['then'](function(){return _0x24c376(null,_0x5395ec);});}}else{return utils[_0xc0e6('0x20')](_0x5395ec)['then'](function(){return _0x24c376(null,_0x5395ec);});}}else{return utils[_0xc0e6('0x20')](_0x5395ec)[_0xc0e6('0x12')](function(){return _0x24c376(null,_0x5395ec);});}}return _0x24c376('Incorrect\x20username\x20and/or\x20password.\x20Please\x20retry\x20again\x20or\x20contact\x20the\x20administrator.');})[_0xc0e6('0x21')](function(_0x22825b){_0x24c376(_0x22825b);});}));
\ No newline at end of file
+var _0xe54c=['map','emails','value','admin','user','agent','Incorrect\x20username\x20and/or\x20password.\x20Please\x20retry\x20again\x20or\x20contact\x20the\x20administrator.','blocked','blockedAt','add','minutes','clearBlockUser','then','getLicense','catch','passport','Strategy','moment','../../mysqldb','../../config/environment','signToken','login','authenticate','/login','email','google','clientSecret','secret','callbackURL','Setting','findOne','blockDuration','User','find'];(function(_0x12143e,_0x279f8e){var _0x14f9cc=function(_0x3d807b){while(--_0x3d807b){_0x12143e['push'](_0x12143e['shift']());}};_0x14f9cc(++_0x279f8e);}(_0xe54c,0x1eb));var _0xce54=function(_0x5d82d9,_0x3d7694){_0x5d82d9=_0x5d82d9-0x0;var _0x3dfd86=_0xe54c[_0x5d82d9];return _0x3dfd86;};'use strict';var _=require('lodash');var passport=require(_0xce54('0x0'));var GoogleStrategy=require('passport-google-oauth20')[_0xce54('0x1')];var moment=require(_0xce54('0x2'));var db=require(_0xce54('0x3'))['db'];var config=require(_0xce54('0x4'));var signToken=require('../../components/auth/service')[_0xce54('0x5')];var utils=require('../../config/utils');exports[_0xce54('0x6')]=passport[_0xce54('0x7')]('google',{'failureRedirect':_0xce54('0x8'),'scope':['profile',_0xce54('0x9')],'session':![]});exports['callback']=passport[_0xce54('0x7')](_0xce54('0xa'),{'failureRedirect':_0xce54('0x8'),'session':![]});passport['use'](new GoogleStrategy({'clientID':config[_0xce54('0xa')]?config[_0xce54('0xa')]['clientID']:'id','clientSecret':config[_0xce54('0xa')]?config[_0xce54('0xa')][_0xce54('0xb')]:_0xce54('0xc'),'callbackURL':config[_0xce54('0xa')]?config[_0xce54('0xa')][_0xce54('0xd')]:''},function(_0x43f054,_0x34d271,_0x34c11f,_0x5badea){var _0x477777,_0x329df6;return db[_0xce54('0xe')][_0xce54('0xf')]({'where':{'id':0x1},'attributes':['allowedLoginAttempts',_0xce54('0x10')],'raw':!![]})['then'](function(_0x1a0340){_0x477777=_0x1a0340;return db[_0xce54('0x11')][_0xce54('0x12')]({'where':{'email':_[_0xce54('0x13')](_0x34c11f[_0xce54('0x14')],_0xce54('0x15')),'role':{'$or':[_0xce54('0x16'),_0xce54('0x17'),_0xce54('0x18')]}}});})['then'](function(_0x1dcfc2){_0x329df6=_0x1dcfc2;if(_0x329df6){if(_0x329df6['disabled']){return _0x5badea(_0xce54('0x19'));}else if(_0x477777['blockDuration']>0x0){if(_0x329df6[_0xce54('0x1a')]){if(moment(_0x329df6[_0xce54('0x1b')])[_0xce54('0x1c')](_0x477777[_0xce54('0x10')],_0xce54('0x1d'))>moment()){return _0x5badea('Incorrect\x20username\x20and/or\x20password.\x20Please\x20retry\x20again\x20or\x20contact\x20the\x20administrator.');}else{return utils[_0xce54('0x1e')](_0x329df6,0x0,![],null)[_0xce54('0x1f')](function(){return utils['getLicense'](_0x329df6);})[_0xce54('0x1f')](function(){return _0x5badea(null,_0x329df6);});}}else{return utils[_0xce54('0x20')](_0x329df6)['then'](function(){return _0x5badea(null,_0x329df6);});}}else{return utils[_0xce54('0x20')](_0x329df6)[_0xce54('0x1f')](function(){return _0x5badea(null,_0x329df6);});}}return _0x5badea(_0xce54('0x19'));})[_0xce54('0x21')](function(_0x480d72){_0x5badea(_0x480d72);});}));
\ No newline at end of file
index 514416d..ec5e02f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xcde0=['/callback','callback','isMiddleware','login','setTokenCookie','exports','express','passport','Router','../user/user.controller.js','../../components/auth/service','get'];(function(_0x4e08d0,_0x43b973){var _0x8b2cdf=function(_0x2fc912){while(--_0x2fc912){_0x4e08d0['push'](_0x4e08d0['shift']());}};_0x8b2cdf(++_0x43b973);}(_0xcde0,0x14a));var _0x0cde=function(_0x94e810,_0x318924){_0x94e810=_0x94e810-0x0;var _0x144207=_0xcde0[_0x94e810];return _0x144207;};'use strict';var express=require(_0x0cde('0x0'));var passport=require(_0x0cde('0x1'));var router=express[_0x0cde('0x2')]();var controller=require('./authGoogle.controller');var userController=require(_0x0cde('0x3'));var authService=require(_0x0cde('0x4'));router[_0x0cde('0x5')]('/',controller['login']);router[_0x0cde('0x5')](_0x0cde('0x6'),controller[_0x0cde('0x7')],authService[_0x0cde('0x8')],userController[_0x0cde('0x9')],authService[_0x0cde('0xa')]);module[_0x0cde('0xb')]=router;
\ No newline at end of file
+var _0xbeae=['exports','express','passport','./authGoogle.controller','../user/user.controller.js','../../components/auth/service','get','login','/callback','isMiddleware'];(function(_0x1a3832,_0x33c9d9){var _0x1fdbcd=function(_0x3822e5){while(--_0x3822e5){_0x1a3832['push'](_0x1a3832['shift']());}};_0x1fdbcd(++_0x33c9d9);}(_0xbeae,0x1cd));var _0xebea=function(_0x4b55e8,_0x41ba7e){_0x4b55e8=_0x4b55e8-0x0;var _0x46e844=_0xbeae[_0x4b55e8];return _0x46e844;};'use strict';var express=require(_0xebea('0x0'));var passport=require(_0xebea('0x1'));var router=express['Router']();var controller=require(_0xebea('0x2'));var userController=require(_0xebea('0x3'));var authService=require(_0xebea('0x4'));router[_0xebea('0x5')]('/',controller[_0xebea('0x6')]);router[_0xebea('0x5')](_0xebea('0x7'),controller['callback'],authService[_0xebea('0x8')],userController[_0xebea('0x6')],authService['setTokenCookie']);module[_0xebea('0x9')]=router;
\ No newline at end of file
index 16e35b6..2f3680a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb7c8=['Email\x20parameter\x20is\x20missing','body','trim','toLowerCase','The\x20user\x20is\x20disabled.\x20Please\x20contact\x20the\x20administrator.','resetPasswordToken','now','save','xCally\x20Motion\x20Password\x20Reset','Please\x20click\x20on\x20the\x20following\x20link,\x20or\x20paste\x20this\x20into\x20your\x20browser\x20to\x20complete\x20the\x20process:\x0a\x0a','https://','headers','/reset/','If\x20you\x20did\x20not\x20request\x20this,\x20please\x20ignore\x20this\x20email\x20and\x20your\x20password\x20will\x20remain\x20unchanged.\x0a','Reset\x20Email\x20sent!','User','token','Password\x20reset\x20token\x20is\x20invalid\x20or\x20has\x20expired.','securePassword','enforcePasswordHistory','passwordHistoryLimit','validatePasswordPattern','previousPasswords','validatePasswordHistory','resetPasswordExpires','Password\x20reset!','passport','passport-local','Strategy','jayson/promise','lodash','randomstring','moment','../../components/auth/service','../../config/utils','client','http','Setting','findOne','blockDuration','password','salt','role','blockedAt','loginAttempts','admin','user','agent','then','Incorrect\x20username\x20and/or\x20password.\x20Please\x20retry\x20again\x20or\x20contact\x20the\x20administrator.','authenticate','disabled','allowedLoginAttempts','blocked','add','minutes','clearBlockUser','getLicense','catch','MailAccount','find','name','email','MailServerOut','Smtp','Unable\x20to\x20find\x20a\x20configured\x20SMTP\x20service!','service','host','secure','auth','pass','merge','format','\x22%s\x22\x20<%s>','SendMail\x20error:\x20%s.\x20Please\x20contact\x20your\x20Administrator!','error','message','status','send','local','Something\x20went\x20wrong,\x20please\x20try\x20again.','signToken','json','online','forgot'];(function(_0x342baa,_0x4a110f){var _0x1208f3=function(_0x56a645){while(--_0x56a645){_0x342baa['push'](_0x342baa['shift']());}};_0x1208f3(++_0x4a110f);}(_0xb7c8,0x119));var _0x8b7c=function(_0x4d5f4d,_0x5bdba7){_0x4d5f4d=_0x4d5f4d-0x0;var _0x411c54=_0xb7c8[_0x4d5f4d];return _0x411c54;};'use strict';var util=require('util');var passport=require(_0x8b7c('0x0'));var LocalStrategy=require(_0x8b7c('0x1'))[_0x8b7c('0x2')];var jayson=require(_0x8b7c('0x3'));var _=require(_0x8b7c('0x4'));var rs=require(_0x8b7c('0x5'));var moment=require(_0x8b7c('0x6'));var db=require('../../mysqldb')['db'];var authService=require(_0x8b7c('0x7'));var utils=require(_0x8b7c('0x8'));var client=jayson[_0x8b7c('0x9')][_0x8b7c('0xa')]({'port':0x232b});function localAuthenticate(_0x107428,_0x12665c,_0x7a3850,_0x3c8fd6){var _0x6afb55,_0x30a924;return db[_0x8b7c('0xb')][_0x8b7c('0xc')]({'where':{'id':0x1},'attributes':['allowedLoginAttempts',_0x8b7c('0xd')],'raw':!![]})['then'](function(_0x224a0b){_0x6afb55=_0x224a0b;return _0x107428[_0x8b7c('0xc')]({'attributes':['id','name',_0x8b7c('0xe'),_0x8b7c('0xf'),_0x8b7c('0x10'),'disabled','blocked',_0x8b7c('0x11'),_0x8b7c('0x12')],'where':{'name':_0x12665c,'role':{'$or':[_0x8b7c('0x13'),_0x8b7c('0x14'),_0x8b7c('0x15')]}}});})[_0x8b7c('0x16')](function(_0x33b135){if(!_0x33b135||_0x33b135&&_0x33b135['name']!==_0x12665c){throw new Error(_0x8b7c('0x17'));}else{_0x30a924=_0x33b135;return _0x30a924;}})[_0x8b7c('0x16')](function(){_0x30a924[_0x8b7c('0x18')](_0x7a3850,function(_0x52cfe7,_0xd37a82){var _0x4284a2=_0x30a924['loginAttempts']+0x1;if(_0x52cfe7){return _0x3c8fd6(_0x52cfe7);}else if(!_0xd37a82){if(_0x30a924[_0x8b7c('0x19')]){return _0x3c8fd6(null,![],{'message':_0x8b7c('0x17')});}else if(_0x6afb55[_0x8b7c('0x1a')]>0x0){if(_0x30a924[_0x8b7c('0x1b')]){if(_0x6afb55[_0x8b7c('0xd')]>0x0){if(moment(_0x30a924['blockedAt'])[_0x8b7c('0x1c')](_0x6afb55[_0x8b7c('0xd')],_0x8b7c('0x1d'))>moment()){return _0x3c8fd6(null,![],{'message':_0x8b7c('0x17')});}else{return utils[_0x8b7c('0x1e')](_0x30a924,_0x4284a2,![],null)['then'](function(){return _0x3c8fd6(null,![],{'message':_0x8b7c('0x17')});});}}else{return _0x3c8fd6(null,![],{'message':_0x8b7c('0x17')});}}else{if(_0x4284a2>=_0x6afb55[_0x8b7c('0x1a')]){return utils[_0x8b7c('0x1e')](_0x30a924,0x0,!![],moment())[_0x8b7c('0x16')](function(){return _0x3c8fd6(null,![],{'message':_0x8b7c('0x17')});});}else{return utils[_0x8b7c('0x1e')](_0x30a924,_0x4284a2,![],null)[_0x8b7c('0x16')](function(){return _0x3c8fd6(null,![],{'message':_0x8b7c('0x17')});});}}}else{return _0x3c8fd6(null,![],{'message':_0x8b7c('0x17')});}}else{if(_0x30a924[_0x8b7c('0x19')]){return _0x3c8fd6(null,![],{'message':_0x8b7c('0x17')});}else if(_0x6afb55['allowedLoginAttempts']>0x0){if(_0x30a924[_0x8b7c('0x1b')]){if(_0x6afb55[_0x8b7c('0xd')]>0x0){if(moment(_0x30a924[_0x8b7c('0x11')])[_0x8b7c('0x1c')](_0x6afb55[_0x8b7c('0xd')],_0x8b7c('0x1d'))>moment()){return _0x3c8fd6(null,![],{'message':_0x8b7c('0x17')});}else{return utils[_0x8b7c('0x1e')](_0x30a924,0x0,![],null)[_0x8b7c('0x16')](function(){return utils[_0x8b7c('0x1f')](_0x30a924);})['then'](function(){return _0x3c8fd6(null,_0x30a924);});}}else{return _0x3c8fd6(null,![],{'message':'Incorrect\x20username\x20and/or\x20password.\x20Please\x20retry\x20again\x20or\x20contact\x20the\x20administrator.'});}}else{return utils[_0x8b7c('0x1e')](_0x30a924,0x0,![],null)['then'](function(){return utils[_0x8b7c('0x1f')](_0x30a924);})[_0x8b7c('0x16')](function(){return _0x3c8fd6(null,_0x30a924);})[_0x8b7c('0x20')](function(_0x3db721){return _0x3c8fd6(null,![],_0x3db721);});}}else{if(_0x30a924[_0x8b7c('0x1b')]){return _0x3c8fd6(null,![],{'message':_0x8b7c('0x17')});}else{return utils['getLicense'](_0x30a924)[_0x8b7c('0x16')](function(){return _0x3c8fd6(null,_0x30a924);});}}}});})[_0x8b7c('0x20')](function(_0x19c015){return _0x3c8fd6(null,![],_0x19c015);});}function sendServiceMail(_0x94a31e){return db[_0x8b7c('0x21')][_0x8b7c('0x22')]({'where':{'service':!![]},'attributes':['id',_0x8b7c('0x23'),_0x8b7c('0x24')],'include':[{'model':db[_0x8b7c('0x25')],'as':_0x8b7c('0x26')}]})['then'](function(_0x4bfe5d){if(!_0x4bfe5d){throw new Error(_0x8b7c('0x27'));}var _0x170fa9={'tls':{'rejectUnauthorized':![]}};if(_0x4bfe5d[_0x8b7c('0x26')][_0x8b7c('0x28')]){_0x170fa9[_0x8b7c('0x28')]=_0x4bfe5d[_0x8b7c('0x26')][_0x8b7c('0x28')];}else{_0x170fa9[_0x8b7c('0x29')]=_0x4bfe5d[_0x8b7c('0x26')][_0x8b7c('0x29')];_0x170fa9['port']=_0x4bfe5d[_0x8b7c('0x26')]['port'];_0x170fa9[_0x8b7c('0x2a')]=_0x4bfe5d[_0x8b7c('0x26')]['secure'];}if(_0x4bfe5d[_0x8b7c('0x26')]['authentication']){_0x170fa9[_0x8b7c('0x2b')]={'user':_0x4bfe5d[_0x8b7c('0x26')][_0x8b7c('0x14')],'pass':_0x4bfe5d[_0x8b7c('0x26')][_0x8b7c('0x2c')]};}var _0x1e9438={'account':_0x170fa9,'message':_[_0x8b7c('0x2d')]({'from':util[_0x8b7c('0x2e')](_0x8b7c('0x2f'),_0x4bfe5d['name'],_0x4bfe5d[_0x8b7c('0x24')]||_0x4bfe5d[_0x8b7c('0x26')]['user'])},_0x94a31e)};return client['request']('SendMail',_0x1e9438);})[_0x8b7c('0x16')](function(_0x2743be){if(_0x2743be['error']){throw new Error(util[_0x8b7c('0x2e')](_0x8b7c('0x30'),_0x2743be[_0x8b7c('0x31')][_0x8b7c('0x32')]||JSON['stringify'](_0x2743be[_0x8b7c('0x31')])));}return!![];});}function handleError(_0x243588,_0x2c674a,_0x5eb191){return _0x243588[_0x8b7c('0x33')](_0x2c674a||0x1f4)[_0x8b7c('0x34')]({'message':_0x5eb191?_0x5eb191['message']||_0x5eb191:''});}exports['login']=function(_0x5013d0,_0x240b19,_0x3236dd){passport[_0x8b7c('0x18')](_0x8b7c('0x35'),function(_0x1c9dae,_0x2f9f6b,_0x4830d7){var _0x3da514=_0x1c9dae||_0x4830d7;if(_0x3da514){return handleError(_0x240b19,0x191,_0x3da514);}if(!_0x2f9f6b){return handleError(_0x240b19,0x194,{'message':_0x8b7c('0x36')});}else{var _0x322662={'payload':{'id':_0x2f9f6b['id'],'role':_0x2f9f6b[_0x8b7c('0x10')]},'options':{'expiresIn':0x15180}};return authService[_0x8b7c('0x37')](_0x322662)[_0x8b7c('0x16')](function(_0x4fd851){_0x240b19[_0x8b7c('0x38')]({'id':_0x2f9f6b['id'],'token':_0x4fd851,'statusCall':'','isAlreadyLogged':_0x2f9f6b[_0x8b7c('0x39')]});});}})(_0x5013d0,_0x240b19,_0x3236dd);};exports[_0x8b7c('0x3a')]=function(_0x151e28,_0x181fdc,_0x3252f9){if(!_0x151e28['body']['email']){return handleError(_0x181fdc,0x1f4,{'message':_0x8b7c('0x3b')});}var _0xc6a144=rs['generate']();_0x151e28['body'][_0x8b7c('0x24')]=_0x151e28[_0x8b7c('0x3c')][_0x8b7c('0x24')][_0x8b7c('0x3d')]()[_0x8b7c('0x3e')]();var _0x2e9b1c;return db[_0x8b7c('0xb')][_0x8b7c('0xc')]({'where':{'id':0x1},'attributes':[_0x8b7c('0x1a'),_0x8b7c('0xd')],'raw':!![]})[_0x8b7c('0x16')](function(_0x1d9229){_0x2e9b1c=_0x1d9229;return db['User'][_0x8b7c('0x22')]({'where':{'email':_0x151e28[_0x8b7c('0x3c')][_0x8b7c('0x24')]}});})[_0x8b7c('0x16')](function(_0x1c114d){if(!_0x1c114d){throw new Error('This\x20email\x20is\x20not\x20registered.');}if(_0x1c114d['disabled']){throw new Error(_0x8b7c('0x3f'));}if(_0x1c114d[_0x8b7c('0x1b')]){if(moment(_0x1c114d[_0x8b7c('0x11')])[_0x8b7c('0x1c')](_0x2e9b1c[_0x8b7c('0xd')],_0x8b7c('0x1d'))>moment()){throw new Error('The\x20user\x20is\x20blocked.\x20Please\x20contact\x20the\x20administrator.');}else{_0x1c114d['blocked']=![];_0x1c114d[_0x8b7c('0x11')]=null;}}_0x1c114d[_0x8b7c('0x40')]=_0xc6a144;_0x1c114d['resetPasswordExpires']=Date[_0x8b7c('0x41')]()+0x36ee80;return _0x1c114d[_0x8b7c('0x42')]();})[_0x8b7c('0x16')](function(){return sendServiceMail({'to':_0x151e28['body']['email'],'subject':_0x8b7c('0x43'),'text':'You\x20are\x20receiving\x20this\x20because\x20you\x20(or\x20someone\x20else)\x20have\x20requested\x20the\x20reset\x20of\x20the\x20password\x20for\x20your\x20account.\x0a\x0a'+_0x8b7c('0x44')+_0x8b7c('0x45')+_0x151e28[_0x8b7c('0x46')][_0x8b7c('0x29')]+_0x8b7c('0x47')+_0xc6a144+'\x0a\x0a'+_0x8b7c('0x48')});})[_0x8b7c('0x16')](function(){_0x181fdc['status'](0xc8)[_0x8b7c('0x34')]({'message':_0x8b7c('0x49')});})[_0x8b7c('0x20')](function(_0x7461b){return handleError(_0x181fdc,0x1f4,_0x7461b);});};exports['reset']=function(_0x56d378,_0x498d5a,_0xed7dad){return db[_0x8b7c('0x4a')][_0x8b7c('0x22')]({'where':{'resetPasswordToken':_0x56d378['params'][_0x8b7c('0x4b')],'resetPasswordExpires':{'$gt':Date[_0x8b7c('0x41')]()}}})[_0x8b7c('0x16')](function(_0xa8019e){if(!_0xa8019e){throw new Error(_0x8b7c('0x4c'));}return db[_0x8b7c('0xb')]['findOne']({'attributes':['id',_0x8b7c('0x4d'),_0x8b7c('0x4e'),_0x8b7c('0x4f')]})['then'](function(_0x2c85c1){if(_0x2c85c1[_0x8b7c('0x4d')])authService[_0x8b7c('0x50')](_0x56d378[_0x8b7c('0x3c')]['password']);if(!_0x2c85c1['enforcePasswordHistory']||!_0xa8019e[_0x8b7c('0x51')])return _0xa8019e;authService[_0x8b7c('0x52')](_0x56d378['body'][_0x8b7c('0xe')],_0xa8019e[_0x8b7c('0x51')],_0x2c85c1[_0x8b7c('0x4f')]);return _0xa8019e;})['then'](function(){_0xa8019e[_0x8b7c('0xe')]=_0x56d378[_0x8b7c('0x3c')][_0x8b7c('0xe')];_0xa8019e[_0x8b7c('0x40')]=null;_0xa8019e[_0x8b7c('0x53')]=null;return _0xa8019e[_0x8b7c('0x42')]();});})['then'](function(){_0x498d5a['status'](0xc8)[_0x8b7c('0x34')]({'message':_0x8b7c('0x54')});})['catch'](function(_0x539241){return handleError(_0x498d5a,0x1f4,_0x539241);});};passport['use'](new LocalStrategy({'usernameField':_0x8b7c('0x23'),'passwordField':'password'},function(_0x559b98,_0x5a67b9,_0x52b4e3){return localAuthenticate(db[_0x8b7c('0x4a')],_0x559b98,_0x5a67b9,_0x52b4e3);}));
\ No newline at end of file
+var _0xaace=['stringify','status','send','login','local','Something\x20went\x20wrong,\x20please\x20try\x20again.','json','online','forgot','body','Email\x20parameter\x20is\x20missing','trim','User','find','This\x20email\x20is\x20not\x20registered.','The\x20user\x20is\x20blocked.\x20Please\x20contact\x20the\x20administrator.','resetPasswordToken','now','save','xCally\x20Motion\x20Password\x20Reset','Please\x20click\x20on\x20the\x20following\x20link,\x20or\x20paste\x20this\x20into\x20your\x20browser\x20to\x20complete\x20the\x20process:\x0a\x0a','https://','/reset/','If\x20you\x20did\x20not\x20request\x20this,\x20please\x20ignore\x20this\x20email\x20and\x20your\x20password\x20will\x20remain\x20unchanged.\x0a','Reset\x20Email\x20sent!','reset','params','token','Password\x20reset\x20token\x20is\x20invalid\x20or\x20has\x20expired.','securePassword','enforcePasswordHistory','passwordHistoryLimit','validatePasswordPattern','previousPasswords','validatePasswordHistory','resetPasswordExpires','Password\x20reset!','util','passport','Strategy','jayson/promise','lodash','randomstring','moment','../../components/auth/service','client','http','Setting','findOne','allowedLoginAttempts','blockDuration','then','name','password','salt','role','blocked','blockedAt','agent','Incorrect\x20username\x20and/or\x20password.\x20Please\x20retry\x20again\x20or\x20contact\x20the\x20administrator.','authenticate','loginAttempts','disabled','clearBlockUser','add','minutes','getLicense','catch','MailAccount','email','Smtp','Unable\x20to\x20find\x20a\x20configured\x20SMTP\x20service!','service','host','secure','authentication','auth','pass','merge','user','request','error','message'];(function(_0x42bfe9,_0x5d22d6){var _0x3b733a=function(_0x5071c8){while(--_0x5071c8){_0x42bfe9['push'](_0x42bfe9['shift']());}};_0x3b733a(++_0x5d22d6);}(_0xaace,0x78));var _0xeaac=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0xaace[_0x3dd15e];return _0x231fd0;};'use strict';var util=require(_0xeaac('0x0'));var passport=require(_0xeaac('0x1'));var LocalStrategy=require('passport-local')[_0xeaac('0x2')];var jayson=require(_0xeaac('0x3'));var _=require(_0xeaac('0x4'));var rs=require(_0xeaac('0x5'));var moment=require(_0xeaac('0x6'));var db=require('../../mysqldb')['db'];var authService=require(_0xeaac('0x7'));var utils=require('../../config/utils');var client=jayson[_0xeaac('0x8')][_0xeaac('0x9')]({'port':0x232b});function localAuthenticate(_0x9f1d36,_0x1e511e,_0x101f1f,_0x3e62dd){var _0x44b543,_0x322cfc;return db[_0xeaac('0xa')][_0xeaac('0xb')]({'where':{'id':0x1},'attributes':[_0xeaac('0xc'),_0xeaac('0xd')],'raw':!![]})[_0xeaac('0xe')](function(_0x1da861){_0x44b543=_0x1da861;return _0x9f1d36['findOne']({'attributes':['id',_0xeaac('0xf'),_0xeaac('0x10'),_0xeaac('0x11'),_0xeaac('0x12'),'disabled',_0xeaac('0x13'),_0xeaac('0x14'),'loginAttempts'],'where':{'name':_0x1e511e,'role':{'$or':['admin','user',_0xeaac('0x15')]}}});})['then'](function(_0x5ddeb5){if(!_0x5ddeb5||_0x5ddeb5&&_0x5ddeb5['name']!==_0x1e511e){throw new Error(_0xeaac('0x16'));}else{_0x322cfc=_0x5ddeb5;return _0x322cfc;}})[_0xeaac('0xe')](function(){_0x322cfc[_0xeaac('0x17')](_0x101f1f,function(_0x1df40c,_0x5cd5fa){var _0x139e02=_0x322cfc[_0xeaac('0x18')]+0x1;if(_0x1df40c){return _0x3e62dd(_0x1df40c);}else if(!_0x5cd5fa){if(_0x322cfc[_0xeaac('0x19')]){return _0x3e62dd(null,![],{'message':_0xeaac('0x16')});}else if(_0x44b543['allowedLoginAttempts']>0x0){if(_0x322cfc['blocked']){if(_0x44b543[_0xeaac('0xd')]>0x0){if(moment(_0x322cfc[_0xeaac('0x14')])['add'](_0x44b543['blockDuration'],'minutes')>moment()){return _0x3e62dd(null,![],{'message':'Incorrect\x20username\x20and/or\x20password.\x20Please\x20retry\x20again\x20or\x20contact\x20the\x20administrator.'});}else{return utils[_0xeaac('0x1a')](_0x322cfc,_0x139e02,![],null)[_0xeaac('0xe')](function(){return _0x3e62dd(null,![],{'message':_0xeaac('0x16')});});}}else{return _0x3e62dd(null,![],{'message':'Incorrect\x20username\x20and/or\x20password.\x20Please\x20retry\x20again\x20or\x20contact\x20the\x20administrator.'});}}else{if(_0x139e02>=_0x44b543[_0xeaac('0xc')]){return utils[_0xeaac('0x1a')](_0x322cfc,0x0,!![],moment())[_0xeaac('0xe')](function(){return _0x3e62dd(null,![],{'message':'Incorrect\x20username\x20and/or\x20password.\x20Please\x20retry\x20again\x20or\x20contact\x20the\x20administrator.'});});}else{return utils[_0xeaac('0x1a')](_0x322cfc,_0x139e02,![],null)['then'](function(){return _0x3e62dd(null,![],{'message':_0xeaac('0x16')});});}}}else{return _0x3e62dd(null,![],{'message':_0xeaac('0x16')});}}else{if(_0x322cfc[_0xeaac('0x19')]){return _0x3e62dd(null,![],{'message':_0xeaac('0x16')});}else if(_0x44b543[_0xeaac('0xc')]>0x0){if(_0x322cfc[_0xeaac('0x13')]){if(_0x44b543[_0xeaac('0xd')]>0x0){if(moment(_0x322cfc[_0xeaac('0x14')])[_0xeaac('0x1b')](_0x44b543[_0xeaac('0xd')],_0xeaac('0x1c'))>moment()){return _0x3e62dd(null,![],{'message':_0xeaac('0x16')});}else{return utils[_0xeaac('0x1a')](_0x322cfc,0x0,![],null)[_0xeaac('0xe')](function(){return utils[_0xeaac('0x1d')](_0x322cfc);})[_0xeaac('0xe')](function(){return _0x3e62dd(null,_0x322cfc);});}}else{return _0x3e62dd(null,![],{'message':_0xeaac('0x16')});}}else{return utils['clearBlockUser'](_0x322cfc,0x0,![],null)['then'](function(){return utils[_0xeaac('0x1d')](_0x322cfc);})['then'](function(){return _0x3e62dd(null,_0x322cfc);})[_0xeaac('0x1e')](function(_0x56dcf8){return _0x3e62dd(null,![],_0x56dcf8);});}}else{if(_0x322cfc[_0xeaac('0x13')]){return _0x3e62dd(null,![],{'message':'Incorrect\x20username\x20and/or\x20password.\x20Please\x20retry\x20again\x20or\x20contact\x20the\x20administrator.'});}else{return utils[_0xeaac('0x1d')](_0x322cfc)[_0xeaac('0xe')](function(){return _0x3e62dd(null,_0x322cfc);});}}}});})[_0xeaac('0x1e')](function(_0x485263){return _0x3e62dd(null,![],_0x485263);});}function sendServiceMail(_0x5f868a){return db[_0xeaac('0x1f')]['find']({'where':{'service':!![]},'attributes':['id',_0xeaac('0xf'),_0xeaac('0x20')],'include':[{'model':db['MailServerOut'],'as':_0xeaac('0x21')}]})[_0xeaac('0xe')](function(_0x3f743a){if(!_0x3f743a){throw new Error(_0xeaac('0x22'));}var _0x33cf74={'tls':{'rejectUnauthorized':![]}};if(_0x3f743a[_0xeaac('0x21')][_0xeaac('0x23')]){_0x33cf74['service']=_0x3f743a[_0xeaac('0x21')]['service'];}else{_0x33cf74[_0xeaac('0x24')]=_0x3f743a[_0xeaac('0x21')][_0xeaac('0x24')];_0x33cf74['port']=_0x3f743a[_0xeaac('0x21')]['port'];_0x33cf74['secure']=_0x3f743a[_0xeaac('0x21')][_0xeaac('0x25')];}if(_0x3f743a['Smtp'][_0xeaac('0x26')]){_0x33cf74[_0xeaac('0x27')]={'user':_0x3f743a['Smtp']['user'],'pass':_0x3f743a['Smtp'][_0xeaac('0x28')]};}var _0x3e6c9e={'account':_0x33cf74,'message':_[_0xeaac('0x29')]({'from':util['format']('\x22%s\x22\x20<%s>',_0x3f743a[_0xeaac('0xf')],_0x3f743a[_0xeaac('0x20')]||_0x3f743a[_0xeaac('0x21')][_0xeaac('0x2a')])},_0x5f868a)};return client[_0xeaac('0x2b')]('SendMail',_0x3e6c9e);})[_0xeaac('0xe')](function(_0x5a621f){if(_0x5a621f[_0xeaac('0x2c')]){throw new Error(util['format']('SendMail\x20error:\x20%s.\x20Please\x20contact\x20your\x20Administrator!',_0x5a621f[_0xeaac('0x2c')][_0xeaac('0x2d')]||JSON[_0xeaac('0x2e')](_0x5a621f['error'])));}return!![];});}function handleError(_0x4c8567,_0x18016d,_0x5ac757){return _0x4c8567[_0xeaac('0x2f')](_0x18016d||0x1f4)[_0xeaac('0x30')]({'message':_0x5ac757?_0x5ac757['message']||_0x5ac757:''});}exports[_0xeaac('0x31')]=function(_0x5a7bc8,_0x24ca4a,_0x11b966){passport[_0xeaac('0x17')](_0xeaac('0x32'),function(_0xd0058e,_0x4b9045,_0xea1e65){var _0x31b76e=_0xd0058e||_0xea1e65;if(_0x31b76e){return handleError(_0x24ca4a,0x191,_0x31b76e);}if(!_0x4b9045){return handleError(_0x24ca4a,0x194,{'message':_0xeaac('0x33')});}else{var _0x407cfc={'payload':{'id':_0x4b9045['id'],'role':_0x4b9045['role']},'options':{'expiresIn':0x15180}};return authService['signToken'](_0x407cfc)[_0xeaac('0xe')](function(_0x1ff338){_0x24ca4a[_0xeaac('0x34')]({'id':_0x4b9045['id'],'token':_0x1ff338,'statusCall':'','isAlreadyLogged':_0x4b9045[_0xeaac('0x35')]});});}})(_0x5a7bc8,_0x24ca4a,_0x11b966);};exports[_0xeaac('0x36')]=function(_0x3a5bc0,_0x34f9f1,_0xf43ab7){if(!_0x3a5bc0[_0xeaac('0x37')][_0xeaac('0x20')]){return handleError(_0x34f9f1,0x1f4,{'message':_0xeaac('0x38')});}var _0x4e1e4d=rs['generate']();_0x3a5bc0[_0xeaac('0x37')][_0xeaac('0x20')]=_0x3a5bc0[_0xeaac('0x37')][_0xeaac('0x20')][_0xeaac('0x39')]()['toLowerCase']();var _0x502dd2;return db[_0xeaac('0xa')][_0xeaac('0xb')]({'where':{'id':0x1},'attributes':[_0xeaac('0xc'),_0xeaac('0xd')],'raw':!![]})[_0xeaac('0xe')](function(_0x43a132){_0x502dd2=_0x43a132;return db[_0xeaac('0x3a')][_0xeaac('0x3b')]({'where':{'email':_0x3a5bc0[_0xeaac('0x37')]['email']}});})['then'](function(_0x59e06d){if(!_0x59e06d){throw new Error(_0xeaac('0x3c'));}if(_0x59e06d[_0xeaac('0x19')]){throw new Error('The\x20user\x20is\x20disabled.\x20Please\x20contact\x20the\x20administrator.');}if(_0x59e06d['blocked']){if(moment(_0x59e06d[_0xeaac('0x14')])[_0xeaac('0x1b')](_0x502dd2['blockDuration'],_0xeaac('0x1c'))>moment()){throw new Error(_0xeaac('0x3d'));}else{_0x59e06d['blocked']=![];_0x59e06d[_0xeaac('0x14')]=null;}}_0x59e06d[_0xeaac('0x3e')]=_0x4e1e4d;_0x59e06d['resetPasswordExpires']=Date[_0xeaac('0x3f')]()+0x36ee80;return _0x59e06d[_0xeaac('0x40')]();})[_0xeaac('0xe')](function(){return sendServiceMail({'to':_0x3a5bc0['body']['email'],'subject':_0xeaac('0x41'),'text':'You\x20are\x20receiving\x20this\x20because\x20you\x20(or\x20someone\x20else)\x20have\x20requested\x20the\x20reset\x20of\x20the\x20password\x20for\x20your\x20account.\x0a\x0a'+_0xeaac('0x42')+_0xeaac('0x43')+_0x3a5bc0['headers'][_0xeaac('0x24')]+_0xeaac('0x44')+_0x4e1e4d+'\x0a\x0a'+_0xeaac('0x45')});})[_0xeaac('0xe')](function(){_0x34f9f1['status'](0xc8)[_0xeaac('0x30')]({'message':_0xeaac('0x46')});})[_0xeaac('0x1e')](function(_0x3bc842){return handleError(_0x34f9f1,0x1f4,_0x3bc842);});};exports[_0xeaac('0x47')]=function(_0x13f97c,_0x247d39,_0x552176){return db['User'][_0xeaac('0x3b')]({'where':{'resetPasswordToken':_0x13f97c[_0xeaac('0x48')][_0xeaac('0x49')],'resetPasswordExpires':{'$gt':Date['now']()}}})[_0xeaac('0xe')](function(_0x556784){if(!_0x556784){throw new Error(_0xeaac('0x4a'));}return db['Setting'][_0xeaac('0xb')]({'attributes':['id',_0xeaac('0x4b'),_0xeaac('0x4c'),_0xeaac('0x4d')]})[_0xeaac('0xe')](function(_0x14923c){if(_0x14923c[_0xeaac('0x4b')])authService[_0xeaac('0x4e')](_0x13f97c[_0xeaac('0x37')]['password']);if(!_0x14923c[_0xeaac('0x4c')]||!_0x556784[_0xeaac('0x4f')])return _0x556784;authService[_0xeaac('0x50')](_0x13f97c['body'][_0xeaac('0x10')],_0x556784[_0xeaac('0x4f')],_0x14923c[_0xeaac('0x4d')]);return _0x556784;})[_0xeaac('0xe')](function(){_0x556784[_0xeaac('0x10')]=_0x13f97c[_0xeaac('0x37')][_0xeaac('0x10')];_0x556784[_0xeaac('0x3e')]=null;_0x556784[_0xeaac('0x51')]=null;return _0x556784[_0xeaac('0x40')]();});})['then'](function(){_0x247d39[_0xeaac('0x2f')](0xc8)['send']({'message':_0xeaac('0x52')});})[_0xeaac('0x1e')](function(_0x4aafb9){return handleError(_0x247d39,0x1f4,_0x4aafb9);});};passport['use'](new LocalStrategy({'usernameField':_0xeaac('0xf'),'passwordField':_0xeaac('0x10')},function(_0x383f75,_0x548bff,_0x37ae29){return localAuthenticate(db[_0xeaac('0x3a')],_0x383f75,_0x548bff,_0x37ae29);}));
\ No newline at end of file
index c4c58f6..95d3757 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x057c=['exports','Router','./authLocal.controller','post','/forgot','forgot','/reset/:token','reset'];(function(_0x5d36a7,_0x5cdb1a){var _0x4f9bc6=function(_0x48b0e1){while(--_0x48b0e1){_0x5d36a7['push'](_0x5d36a7['shift']());}};_0x4f9bc6(++_0x5cdb1a);}(_0x057c,0x1a9));var _0xc057=function(_0x53a393,_0x2e3db){_0x53a393=_0x53a393-0x0;var _0x3a8248=_0x057c[_0x53a393];return _0x3a8248;};'use strict';var express=require('express');var router=express[_0xc057('0x0')]();var controller=require(_0xc057('0x1'));router[_0xc057('0x2')]('/',controller['login']);router[_0xc057('0x2')](_0xc057('0x3'),controller[_0xc057('0x4')]);router['post'](_0xc057('0x5'),controller[_0xc057('0x6')]);module[_0xc057('0x7')]=router;
\ No newline at end of file
+var _0x6a9e=['/forgot','forgot','/reset/:token','reset','express','Router','./authLocal.controller','login','post'];(function(_0x43916e,_0x136c0e){var _0x225c62=function(_0x3c3637){while(--_0x3c3637){_0x43916e['push'](_0x43916e['shift']());}};_0x225c62(++_0x136c0e);}(_0x6a9e,0x1cf));var _0xe6a9=function(_0x5cd4b9,_0x3996c0){_0x5cd4b9=_0x5cd4b9-0x0;var _0x30fbf1=_0x6a9e[_0x5cd4b9];return _0x30fbf1;};'use strict';var express=require(_0xe6a9('0x0'));var router=express[_0xe6a9('0x1')]();var controller=require(_0xe6a9('0x2'));router['post']('/',controller[_0xe6a9('0x3')]);router[_0xe6a9('0x4')](_0xe6a9('0x5'),controller[_0xe6a9('0x6')]);router[_0xe6a9('0x4')](_0xe6a9('0x7'),controller[_0xe6a9('0x8')]);module['exports']=router;
\ No newline at end of file
index 753709a..6d6f6fc 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x819b=['BOOLEAN','INTEGER','sequelize','exports','STRING'];(function(_0x4a58f9,_0x322b75){var _0x3edf16=function(_0x3e9faf){while(--_0x3e9faf){_0x4a58f9['push'](_0x4a58f9['shift']());}};_0x3edf16(++_0x322b75);}(_0x819b,0x11a));var _0xb819=function(_0x46f6c6,_0x5f337d){_0x46f6c6=_0x46f6c6-0x0;var _0x462bb8=_0x819b[_0x46f6c6];return _0x462bb8;};'use strict';var Sequelize=require(_0xb819('0x0'));module[_0xb819('0x1')]={'name':{'type':Sequelize[_0xb819('0x2')],'allowNull':![]},'channel':{'type':Sequelize[_0xb819('0x2')]},'description':{'type':Sequelize[_0xb819('0x2')]},'status':{'type':Sequelize[_0xb819('0x3')],'defaultValue':![]},'timeout':{'type':Sequelize[_0xb819('0x4')],'defaultValue':0xa}};
\ No newline at end of file
+var _0xd9fe=['BOOLEAN','INTEGER','sequelize','exports','STRING'];(function(_0x518b82,_0x222a4e){var _0x3660f1=function(_0x5f300a){while(--_0x5f300a){_0x518b82['push'](_0x518b82['shift']());}};_0x3660f1(++_0x222a4e);}(_0xd9fe,0xde));var _0xed9f=function(_0x3c8e9a,_0x384306){_0x3c8e9a=_0x3c8e9a-0x0;var _0x2d4c57=_0xd9fe[_0x3c8e9a];return _0x2d4c57;};'use strict';var Sequelize=require(_0xed9f('0x0'));module[_0xed9f('0x1')]={'name':{'type':Sequelize['STRING'],'allowNull':![]},'channel':{'type':Sequelize[_0xed9f('0x2')]},'description':{'type':Sequelize[_0xed9f('0x2')]},'status':{'type':Sequelize[_0xed9f('0x3')],'defaultValue':![]},'timeout':{'type':Sequelize[_0xed9f('0x4')],'defaultValue':0xa}};
\ No newline at end of file
index 0326fcc..c2aa946 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8b91=['findOne','merge','addActions','Action','getActions','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox','to-csv','ejs','fs-extra','squel','crypto','jsforce','querystring','papaparse','ioredis','../../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','Content-Range','apply','save','then','destroy','error','stack','name','index','map','Automation','rawAttributes','fieldName','type','model','keys','query','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','pick','VIRTUAL','filter','options','include','findAll','show','params','includeAll','find','catch','create','body','update','Condition','ids','omit','getConditions'];(function(_0x52ece1,_0x425dc5){var _0x329205=function(_0xf76c47){while(--_0xf76c47){_0x52ece1['push'](_0x52ece1['shift']());}};_0x329205(++_0x425dc5);}(_0x8b91,0x10a));var _0x18b9=function(_0x51bde3,_0x2d514d){_0x51bde3=_0x51bde3-0x0;var _0x3b6b20=_0x8b91[_0x51bde3];return _0x3b6b20;};'use strict';var emlformat=require(_0x18b9('0x0'));var rimraf=require(_0x18b9('0x1'));var zipdir=require(_0x18b9('0x2'));var jsonpatch=require(_0x18b9('0x3'));var rp=require(_0x18b9('0x4'));var moment=require(_0x18b9('0x5'));var BPromise=require(_0x18b9('0x6'));var Mustache=require(_0x18b9('0x7'));var util=require(_0x18b9('0x8'));var path=require(_0x18b9('0x9'));var sox=require(_0x18b9('0xa'));var csv=require(_0x18b9('0xb'));var ejs=require(_0x18b9('0xc'));var fs=require('fs');var fs_extra=require(_0x18b9('0xd'));var _=require('lodash');var squel=require(_0x18b9('0xe'));var crypto=require(_0x18b9('0xf'));var jsforce=require(_0x18b9('0x10'));var deskjs=require('desk.js');var toCsv=require(_0x18b9('0xb'));var querystring=require(_0x18b9('0x11'));var Papa=require(_0x18b9('0x12'));var Redis=require(_0x18b9('0x13'));var authService=require('../../components/auth/service');var qs=require('../../components/parsers/qs');var as=require(_0x18b9('0x14'));var hardwareService=require(_0x18b9('0x15'));var logger=require(_0x18b9('0x16'))(_0x18b9('0x17'));var utils=require(_0x18b9('0x18'));var config=require(_0x18b9('0x19'));var licenseUtil=require(_0x18b9('0x1a'));var db=require(_0x18b9('0x1b'))['db'];function respondWithStatusCode(_0x3964ff,_0x42222d){_0x42222d=_0x42222d||0xcc;return function(_0x40d7b6){if(_0x40d7b6){return _0x3964ff[_0x18b9('0x1c')](_0x42222d);}return _0x3964ff[_0x18b9('0x1d')](_0x42222d)[_0x18b9('0x1e')]();};}function respondWithResult(_0xccd2f7,_0x1542ba){_0x1542ba=_0x1542ba||0xc8;return function(_0x4ba52){if(_0x4ba52){return _0xccd2f7[_0x18b9('0x1d')](_0x1542ba)[_0x18b9('0x1f')](_0x4ba52);}};}function respondWithFilteredResult(_0xd17a6d,_0x1597ac){return function(_0x4b30a5){if(_0x4b30a5){var _0x3ac36d=typeof _0x1597ac[_0x18b9('0x20')]==='undefined'&&typeof _0x1597ac[_0x18b9('0x21')]===_0x18b9('0x22');var _0x2fb025=_0x4b30a5['count'];var _0x51c36c=_0x3ac36d?0x0:_0x1597ac[_0x18b9('0x20')];var _0x29cc2e=_0x3ac36d?_0x4b30a5[_0x18b9('0x23')]:_0x1597ac[_0x18b9('0x20')]+_0x1597ac[_0x18b9('0x21')];var _0x56e85d;if(_0x29cc2e>=_0x2fb025){_0x29cc2e=_0x2fb025;_0x56e85d=0xc8;}else{_0x56e85d=0xce;}_0xd17a6d[_0x18b9('0x1d')](_0x56e85d);return _0xd17a6d[_0x18b9('0x24')](_0x18b9('0x25'),_0x51c36c+'-'+_0x29cc2e+'/'+_0x2fb025)[_0x18b9('0x1f')](_0x4b30a5);}return null;};}function patchUpdates(_0x1a739c){return function(_0x43acc5){try{jsonpatch[_0x18b9('0x26')](_0x43acc5,_0x1a739c,!![]);}catch(_0x35b68c){return BPromise['reject'](_0x35b68c);}return _0x43acc5[_0x18b9('0x27')]();};}function saveUpdates(_0x2a4b49,_0x2079c4){return function(_0x10bd48){if(_0x10bd48){return _0x10bd48['update'](_0x2a4b49)[_0x18b9('0x28')](function(_0x2a2b9f){return _0x2a2b9f;});}return null;};}function removeEntity(_0x9654c1,_0x557c1e){return function(_0x4012a5){if(_0x4012a5){return _0x4012a5[_0x18b9('0x29')]()[_0x18b9('0x28')](function(){_0x9654c1[_0x18b9('0x1d')](0xcc)[_0x18b9('0x1e')]();});}};}function handleEntityNotFound(_0x552cbd,_0x1c1f5e){return function(_0xbbd537){if(!_0xbbd537){_0x552cbd[_0x18b9('0x1c')](0x194);}return _0xbbd537;};}function handleError(_0x17b118,_0x10851e){_0x10851e=_0x10851e||0x1f4;return function(_0x5eab65){logger[_0x18b9('0x2a')](_0x5eab65[_0x18b9('0x2b')]);if(_0x5eab65[_0x18b9('0x2c')]){delete _0x5eab65[_0x18b9('0x2c')];}_0x17b118[_0x18b9('0x1d')](_0x10851e)['send'](_0x5eab65);};}exports[_0x18b9('0x2d')]=function(_0x25a612,_0xdd9e8c){var _0x4402e1={},_0xc67df2={},_0x35ad08={'count':0x0,'rows':[]};var _0x1a81b4=_[_0x18b9('0x2e')](db[_0x18b9('0x2f')][_0x18b9('0x30')],function(_0x2b0446){return{'name':_0x2b0446[_0x18b9('0x31')],'type':_0x2b0446[_0x18b9('0x32')]['key']};});_0xc67df2[_0x18b9('0x33')]=_[_0x18b9('0x2e')](_0x1a81b4,_0x18b9('0x2c'));_0xc67df2['query']=_[_0x18b9('0x34')](_0x25a612[_0x18b9('0x35')]);_0xc67df2[_0x18b9('0x36')]=_[_0x18b9('0x37')](_0xc67df2[_0x18b9('0x33')],_0xc67df2[_0x18b9('0x35')]);_0x4402e1[_0x18b9('0x38')]=_[_0x18b9('0x37')](_0xc67df2[_0x18b9('0x33')],qs[_0x18b9('0x39')](_0x25a612['query'][_0x18b9('0x39')]));_0x4402e1[_0x18b9('0x38')]=_0x4402e1['attributes'][_0x18b9('0x3a')]?_0x4402e1[_0x18b9('0x38')]:_0xc67df2[_0x18b9('0x33')];if(!_0x25a612['query'][_0x18b9('0x3b')](_0x18b9('0x3c'))){_0x4402e1[_0x18b9('0x21')]=qs[_0x18b9('0x21')](_0x25a612[_0x18b9('0x35')][_0x18b9('0x21')]);_0x4402e1[_0x18b9('0x20')]=qs[_0x18b9('0x20')](_0x25a612['query']['offset']);}_0x4402e1[_0x18b9('0x3d')]=qs[_0x18b9('0x3e')](_0x25a612[_0x18b9('0x35')][_0x18b9('0x3e')]);_0x4402e1[_0x18b9('0x3f')]=qs[_0x18b9('0x36')](_[_0x18b9('0x40')](_0x25a612[_0x18b9('0x35')],_0xc67df2[_0x18b9('0x36')]),_0x1a81b4);if(_0x25a612[_0x18b9('0x35')]['filter']){_0x4402e1[_0x18b9('0x3f')]=_['merge'](_0x4402e1['where'],{'$or':_[_0x18b9('0x2e')](_0x1a81b4,function(_0x3f822f){if(_0x3f822f[_0x18b9('0x32')]!==_0x18b9('0x41')){var _0x4aecc2={};_0x4aecc2[_0x3f822f[_0x18b9('0x2c')]]={'$like':'%'+_0x25a612[_0x18b9('0x35')][_0x18b9('0x42')]+'%'};return _0x4aecc2;}})});}_0x4402e1=_['merge']({},_0x4402e1,_0x25a612[_0x18b9('0x43')]);var _0x3b339f={'where':_0x4402e1[_0x18b9('0x3f')]};return db[_0x18b9('0x2f')][_0x18b9('0x23')](_0x3b339f)[_0x18b9('0x28')](function(_0x336cdb){_0x35ad08['count']=_0x336cdb;if(_0x25a612[_0x18b9('0x35')]['includeAll']){_0x4402e1[_0x18b9('0x44')]=[{'all':!![]}];}return db[_0x18b9('0x2f')][_0x18b9('0x45')](_0x4402e1);})[_0x18b9('0x28')](function(_0x463a3c){_0x35ad08['rows']=_0x463a3c;return _0x35ad08;})['then'](respondWithFilteredResult(_0xdd9e8c,_0x4402e1))['catch'](handleError(_0xdd9e8c,null));};exports[_0x18b9('0x46')]=function(_0x13439f,_0x1766eb){var _0x27d648={'raw':![],'where':{'id':_0x13439f[_0x18b9('0x47')]['id']}},_0x57fed9={};_0x57fed9[_0x18b9('0x33')]=_[_0x18b9('0x34')](db[_0x18b9('0x2f')]['rawAttributes']);_0x57fed9[_0x18b9('0x35')]=_[_0x18b9('0x34')](_0x13439f['query']);_0x57fed9['filters']=_[_0x18b9('0x37')](_0x57fed9['model'],_0x57fed9[_0x18b9('0x35')]);_0x27d648[_0x18b9('0x38')]=_['intersection'](_0x57fed9[_0x18b9('0x33')],qs[_0x18b9('0x39')](_0x13439f[_0x18b9('0x35')][_0x18b9('0x39')]));_0x27d648[_0x18b9('0x38')]=_0x27d648[_0x18b9('0x38')]['length']?_0x27d648[_0x18b9('0x38')]:_0x57fed9[_0x18b9('0x33')];if(_0x13439f[_0x18b9('0x35')][_0x18b9('0x48')]){_0x27d648[_0x18b9('0x44')]=[{'all':!![]}];}_0x27d648=_['merge']({},_0x27d648,_0x13439f['options']);return db[_0x18b9('0x2f')][_0x18b9('0x49')](_0x27d648)[_0x18b9('0x28')](handleEntityNotFound(_0x1766eb,null))[_0x18b9('0x28')](respondWithResult(_0x1766eb,null))[_0x18b9('0x4a')](handleError(_0x1766eb,null));};exports[_0x18b9('0x4b')]=function(_0x4d5227,_0x5b0b1d){return db[_0x18b9('0x2f')][_0x18b9('0x4b')](_0x4d5227[_0x18b9('0x4c')],{})[_0x18b9('0x28')](respondWithResult(_0x5b0b1d,0xc9))['catch'](handleError(_0x5b0b1d,null));};exports[_0x18b9('0x4d')]=function(_0x447b1f,_0x575b32){if(_0x447b1f[_0x18b9('0x4c')]['id']){delete _0x447b1f['body']['id'];}return db[_0x18b9('0x2f')][_0x18b9('0x49')]({'where':{'id':_0x447b1f['params']['id']}})['then'](handleEntityNotFound(_0x575b32,null))[_0x18b9('0x28')](saveUpdates(_0x447b1f[_0x18b9('0x4c')],null))[_0x18b9('0x28')](respondWithResult(_0x575b32,null))[_0x18b9('0x4a')](handleError(_0x575b32,null));};exports[_0x18b9('0x29')]=function(_0x4a157c,_0x79b1f1){return db[_0x18b9('0x2f')][_0x18b9('0x49')]({'where':{'id':_0x4a157c[_0x18b9('0x47')]['id']}})[_0x18b9('0x28')](handleEntityNotFound(_0x79b1f1,null))[_0x18b9('0x28')](removeEntity(_0x79b1f1,null))['catch'](handleError(_0x79b1f1,null));};exports['addConditions']=function(_0x5ee7b8,_0x4f916a,_0x527ed7){return db[_0x18b9('0x4e')]['find']({'where':{'id':_0x5ee7b8[_0x18b9('0x47')]['id']}})[_0x18b9('0x28')](handleEntityNotFound(_0x4f916a,null))[_0x18b9('0x28')](function(_0x3eda2c){if(_0x3eda2c){return _0x3eda2c['addConditions'](_0x5ee7b8[_0x18b9('0x4c')][_0x18b9('0x4f')],_[_0x18b9('0x50')](_0x5ee7b8['body'],[_0x18b9('0x4f'),'id'])||{});}})[_0x18b9('0x28')](respondWithResult(_0x4f916a,null))[_0x18b9('0x4a')](handleError(_0x4f916a,null));};exports[_0x18b9('0x51')]=function(_0x59d28f,_0x24175e,_0x5cd7c8){var _0x4cc95f={};var _0x16387c={};var _0x279639;var _0x7b608f;return db[_0x18b9('0x2f')][_0x18b9('0x52')]({'where':{'id':_0x59d28f[_0x18b9('0x47')]['id']}})[_0x18b9('0x28')](handleEntityNotFound(_0x24175e,null))[_0x18b9('0x28')](function(_0x1e8f48){if(_0x1e8f48){_0x279639=_0x1e8f48;_0x16387c[_0x18b9('0x33')]=_['keys'](db[_0x18b9('0x4e')][_0x18b9('0x30')]);_0x16387c[_0x18b9('0x35')]=_[_0x18b9('0x34')](_0x59d28f[_0x18b9('0x35')]);_0x16387c['filters']=_['intersection'](_0x16387c[_0x18b9('0x33')],_0x16387c[_0x18b9('0x35')]);_0x4cc95f[_0x18b9('0x38')]=_[_0x18b9('0x37')](_0x16387c[_0x18b9('0x33')],qs[_0x18b9('0x39')](_0x59d28f[_0x18b9('0x35')][_0x18b9('0x39')]));_0x4cc95f['attributes']=_0x4cc95f[_0x18b9('0x38')][_0x18b9('0x3a')]?_0x4cc95f[_0x18b9('0x38')]:_0x16387c[_0x18b9('0x33')];_0x4cc95f['order']=qs['sort'](_0x59d28f[_0x18b9('0x35')]['sort']);_0x4cc95f[_0x18b9('0x3f')]=qs['filters'](_[_0x18b9('0x40')](_0x59d28f[_0x18b9('0x35')],_0x16387c[_0x18b9('0x36')]));if(_0x59d28f['query'][_0x18b9('0x42')]){_0x4cc95f[_0x18b9('0x3f')]=_[_0x18b9('0x53')](_0x4cc95f['where'],{'$or':_[_0x18b9('0x2e')](_0x4cc95f[_0x18b9('0x38')],function(_0xa5544){var _0x1af9f4={};_0x1af9f4[_0xa5544]={'$like':'%'+_0x59d28f['query'][_0x18b9('0x42')]+'%'};return _0x1af9f4;})});}_0x4cc95f=_[_0x18b9('0x53')]({},_0x4cc95f,_0x59d28f[_0x18b9('0x43')]);return _0x279639[_0x18b9('0x51')](_0x4cc95f);}})[_0x18b9('0x28')](function(_0x5e76b4){if(_0x5e76b4){_0x7b608f=_0x5e76b4['length'];if(!_0x59d28f[_0x18b9('0x35')][_0x18b9('0x3b')](_0x18b9('0x3c'))){_0x4cc95f[_0x18b9('0x21')]=qs['limit'](_0x59d28f[_0x18b9('0x35')][_0x18b9('0x21')]);_0x4cc95f['offset']=qs[_0x18b9('0x20')](_0x59d28f[_0x18b9('0x35')]['offset']);}return _0x279639[_0x18b9('0x51')](_0x4cc95f);}})[_0x18b9('0x28')](function(_0x59d5bf){if(_0x59d5bf){return _0x59d5bf?{'count':_0x7b608f,'rows':_0x59d5bf}:null;}})[_0x18b9('0x28')](respondWithResult(_0x24175e,null))[_0x18b9('0x4a')](handleError(_0x24175e,null));};exports[_0x18b9('0x54')]=function(_0x275ced,_0x28bd69,_0x21449b){return db[_0x18b9('0x55')]['find']({'where':{'id':_0x275ced[_0x18b9('0x47')]['id']}})[_0x18b9('0x28')](handleEntityNotFound(_0x28bd69,null))[_0x18b9('0x28')](function(_0xc9b268){if(_0xc9b268){return _0xc9b268[_0x18b9('0x54')](_0x275ced[_0x18b9('0x4c')][_0x18b9('0x4f')],_[_0x18b9('0x50')](_0x275ced['body'],[_0x18b9('0x4f'),'id'])||{});}})[_0x18b9('0x28')](respondWithResult(_0x28bd69,null))[_0x18b9('0x4a')](handleError(_0x28bd69,null));};exports[_0x18b9('0x56')]=function(_0xe00b8a,_0x1e8861,_0x4d2288){var _0x251063={};var _0x5bc2fc={};var _0x5f51ba;var _0xa01fd;return db[_0x18b9('0x2f')][_0x18b9('0x52')]({'where':{'id':_0xe00b8a[_0x18b9('0x47')]['id']}})[_0x18b9('0x28')](handleEntityNotFound(_0x1e8861,null))[_0x18b9('0x28')](function(_0x3a09e2){if(_0x3a09e2){_0x5f51ba=_0x3a09e2;_0x5bc2fc[_0x18b9('0x33')]=_[_0x18b9('0x34')](db['Action'][_0x18b9('0x30')]);_0x5bc2fc[_0x18b9('0x35')]=_[_0x18b9('0x34')](_0xe00b8a['query']);_0x5bc2fc[_0x18b9('0x36')]=_[_0x18b9('0x37')](_0x5bc2fc[_0x18b9('0x33')],_0x5bc2fc[_0x18b9('0x35')]);_0x251063[_0x18b9('0x38')]=_[_0x18b9('0x37')](_0x5bc2fc['model'],qs[_0x18b9('0x39')](_0xe00b8a[_0x18b9('0x35')][_0x18b9('0x39')]));_0x251063[_0x18b9('0x38')]=_0x251063['attributes'][_0x18b9('0x3a')]?_0x251063[_0x18b9('0x38')]:_0x5bc2fc[_0x18b9('0x33')];_0x251063[_0x18b9('0x3d')]=qs[_0x18b9('0x3e')](_0xe00b8a['query'][_0x18b9('0x3e')]);_0x251063[_0x18b9('0x3f')]=qs['filters'](_[_0x18b9('0x40')](_0xe00b8a['query'],_0x5bc2fc[_0x18b9('0x36')]));if(_0xe00b8a[_0x18b9('0x35')][_0x18b9('0x42')]){_0x251063[_0x18b9('0x3f')]=_[_0x18b9('0x53')](_0x251063['where'],{'$or':_[_0x18b9('0x2e')](_0x251063[_0x18b9('0x38')],function(_0x1f31cf){var _0x1de2dd={};_0x1de2dd[_0x1f31cf]={'$like':'%'+_0xe00b8a[_0x18b9('0x35')][_0x18b9('0x42')]+'%'};return _0x1de2dd;})});}_0x251063=_['merge']({},_0x251063,_0xe00b8a[_0x18b9('0x43')]);return _0x5f51ba[_0x18b9('0x56')](_0x251063);}})['then'](function(_0x3c9d3b){if(_0x3c9d3b){_0xa01fd=_0x3c9d3b[_0x18b9('0x3a')];if(!_0xe00b8a['query'][_0x18b9('0x3b')](_0x18b9('0x3c'))){_0x251063[_0x18b9('0x21')]=qs[_0x18b9('0x21')](_0xe00b8a[_0x18b9('0x35')][_0x18b9('0x21')]);_0x251063[_0x18b9('0x20')]=qs[_0x18b9('0x20')](_0xe00b8a[_0x18b9('0x35')]['offset']);}return _0x5f51ba[_0x18b9('0x56')](_0x251063);}})[_0x18b9('0x28')](function(_0x56799f){if(_0x56799f){return _0x56799f?{'count':_0xa01fd,'rows':_0x56799f}:null;}})[_0x18b9('0x28')](respondWithResult(_0x1e8861,null))[_0x18b9('0x4a')](handleError(_0x1e8861,null));};
\ No newline at end of file
+var _0x4086=['query','filters','intersection','attributes','fields','length','hasOwnProperty','sort','where','pick','filter','merge','VIRTUAL','options','includeAll','include','findAll','rows','catch','show','params','keys','rawAttributes','create','update','body','destroy','find','addConditions','Condition','ids','findOne','order','getConditions','nolimit','addActions','omit','getActions','rimraf','zip-dir','fast-json-patch','moment','bluebird','mustache','util','path','sox','to-csv','ejs','fs-extra','lodash','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','sendStatus','status','end','json','offset','undefined','limit','count','set','Content-Range','apply','reject','save','then','error','name','send','map','Automation','type','key','model'];(function(_0x347097,_0x37a135){var _0x5dfd04=function(_0x131412){while(--_0x131412){_0x347097['push'](_0x347097['shift']());}};_0x5dfd04(++_0x37a135);}(_0x4086,0x7d));var _0x6408=function(_0x122ef9,_0x451d2a){_0x122ef9=_0x122ef9-0x0;var _0x42fba0=_0x4086[_0x122ef9];return _0x42fba0;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x6408('0x0'));var zipdir=require(_0x6408('0x1'));var jsonpatch=require(_0x6408('0x2'));var rp=require('request-promise');var moment=require(_0x6408('0x3'));var BPromise=require(_0x6408('0x4'));var Mustache=require(_0x6408('0x5'));var util=require(_0x6408('0x6'));var path=require(_0x6408('0x7'));var sox=require(_0x6408('0x8'));var csv=require(_0x6408('0x9'));var ejs=require(_0x6408('0xa'));var fs=require('fs');var fs_extra=require(_0x6408('0xb'));var _=require(_0x6408('0xc'));var squel=require('squel');var crypto=require(_0x6408('0xd'));var jsforce=require('jsforce');var deskjs=require(_0x6408('0xe'));var toCsv=require(_0x6408('0x9'));var querystring=require(_0x6408('0xf'));var Papa=require(_0x6408('0x10'));var Redis=require(_0x6408('0x11'));var authService=require('../../components/auth/service');var qs=require(_0x6408('0x12'));var as=require(_0x6408('0x13'));var hardwareService=require(_0x6408('0x14'));var logger=require(_0x6408('0x15'))(_0x6408('0x16'));var utils=require(_0x6408('0x17'));var config=require(_0x6408('0x18'));var licenseUtil=require(_0x6408('0x19'));var db=require(_0x6408('0x1a'))['db'];function respondWithStatusCode(_0x4aec2c,_0x5b7d4d){_0x5b7d4d=_0x5b7d4d||0xcc;return function(_0x11406b){if(_0x11406b){return _0x4aec2c[_0x6408('0x1b')](_0x5b7d4d);}return _0x4aec2c[_0x6408('0x1c')](_0x5b7d4d)[_0x6408('0x1d')]();};}function respondWithResult(_0x3971c3,_0x843446){_0x843446=_0x843446||0xc8;return function(_0x1d6106){if(_0x1d6106){return _0x3971c3[_0x6408('0x1c')](_0x843446)[_0x6408('0x1e')](_0x1d6106);}};}function respondWithFilteredResult(_0x547099,_0x4888db){return function(_0x2661d3){if(_0x2661d3){var _0x1f5d63=typeof _0x4888db[_0x6408('0x1f')]===_0x6408('0x20')&&typeof _0x4888db[_0x6408('0x21')]===_0x6408('0x20');var _0x24e81f=_0x2661d3[_0x6408('0x22')];var _0x1ceecb=_0x1f5d63?0x0:_0x4888db[_0x6408('0x1f')];var _0x500bc2=_0x1f5d63?_0x2661d3[_0x6408('0x22')]:_0x4888db[_0x6408('0x1f')]+_0x4888db[_0x6408('0x21')];var _0x68fa5d;if(_0x500bc2>=_0x24e81f){_0x500bc2=_0x24e81f;_0x68fa5d=0xc8;}else{_0x68fa5d=0xce;}_0x547099[_0x6408('0x1c')](_0x68fa5d);return _0x547099[_0x6408('0x23')](_0x6408('0x24'),_0x1ceecb+'-'+_0x500bc2+'/'+_0x24e81f)[_0x6408('0x1e')](_0x2661d3);}return null;};}function patchUpdates(_0x29c9a){return function(_0x40e1ed){try{jsonpatch[_0x6408('0x25')](_0x40e1ed,_0x29c9a,!![]);}catch(_0x508fd9){return BPromise[_0x6408('0x26')](_0x508fd9);}return _0x40e1ed[_0x6408('0x27')]();};}function saveUpdates(_0x2296f6,_0x12b462){return function(_0x42d146){if(_0x42d146){return _0x42d146['update'](_0x2296f6)[_0x6408('0x28')](function(_0x394573){return _0x394573;});}return null;};}function removeEntity(_0x4ee6af,_0x882e8c){return function(_0x4fecc4){if(_0x4fecc4){return _0x4fecc4['destroy']()['then'](function(){_0x4ee6af['status'](0xcc)[_0x6408('0x1d')]();});}};}function handleEntityNotFound(_0xf6ebcc,_0x36138d){return function(_0x47c1ae){if(!_0x47c1ae){_0xf6ebcc[_0x6408('0x1b')](0x194);}return _0x47c1ae;};}function handleError(_0x484b34,_0x1effbf){_0x1effbf=_0x1effbf||0x1f4;return function(_0x40b3de){logger[_0x6408('0x29')](_0x40b3de['stack']);if(_0x40b3de[_0x6408('0x2a')]){delete _0x40b3de[_0x6408('0x2a')];}_0x484b34['status'](_0x1effbf)[_0x6408('0x2b')](_0x40b3de);};}exports['index']=function(_0x1c527e,_0x5ae4bd){var _0x39b386={},_0x3fff05={},_0x4c5cea={'count':0x0,'rows':[]};var _0x3b6ead=_[_0x6408('0x2c')](db[_0x6408('0x2d')]['rawAttributes'],function(_0x1055b8){return{'name':_0x1055b8['fieldName'],'type':_0x1055b8[_0x6408('0x2e')][_0x6408('0x2f')]};});_0x3fff05[_0x6408('0x30')]=_[_0x6408('0x2c')](_0x3b6ead,_0x6408('0x2a'));_0x3fff05[_0x6408('0x31')]=_['keys'](_0x1c527e[_0x6408('0x31')]);_0x3fff05[_0x6408('0x32')]=_[_0x6408('0x33')](_0x3fff05[_0x6408('0x30')],_0x3fff05[_0x6408('0x31')]);_0x39b386[_0x6408('0x34')]=_[_0x6408('0x33')](_0x3fff05['model'],qs[_0x6408('0x35')](_0x1c527e[_0x6408('0x31')]['fields']));_0x39b386['attributes']=_0x39b386['attributes'][_0x6408('0x36')]?_0x39b386['attributes']:_0x3fff05[_0x6408('0x30')];if(!_0x1c527e[_0x6408('0x31')][_0x6408('0x37')]('nolimit')){_0x39b386[_0x6408('0x21')]=qs[_0x6408('0x21')](_0x1c527e['query']['limit']);_0x39b386['offset']=qs['offset'](_0x1c527e[_0x6408('0x31')]['offset']);}_0x39b386['order']=qs[_0x6408('0x38')](_0x1c527e[_0x6408('0x31')]['sort']);_0x39b386[_0x6408('0x39')]=qs[_0x6408('0x32')](_[_0x6408('0x3a')](_0x1c527e[_0x6408('0x31')],_0x3fff05[_0x6408('0x32')]),_0x3b6ead);if(_0x1c527e[_0x6408('0x31')][_0x6408('0x3b')]){_0x39b386[_0x6408('0x39')]=_[_0x6408('0x3c')](_0x39b386[_0x6408('0x39')],{'$or':_['map'](_0x3b6ead,function(_0x47dbf3){if(_0x47dbf3['type']!==_0x6408('0x3d')){var _0x594ca3={};_0x594ca3[_0x47dbf3[_0x6408('0x2a')]]={'$like':'%'+_0x1c527e[_0x6408('0x31')][_0x6408('0x3b')]+'%'};return _0x594ca3;}})});}_0x39b386=_['merge']({},_0x39b386,_0x1c527e[_0x6408('0x3e')]);var _0xd262bd={'where':_0x39b386[_0x6408('0x39')]};return db[_0x6408('0x2d')][_0x6408('0x22')](_0xd262bd)[_0x6408('0x28')](function(_0x2b32e8){_0x4c5cea['count']=_0x2b32e8;if(_0x1c527e[_0x6408('0x31')][_0x6408('0x3f')]){_0x39b386[_0x6408('0x40')]=[{'all':!![]}];}return db[_0x6408('0x2d')][_0x6408('0x41')](_0x39b386);})[_0x6408('0x28')](function(_0x30baa0){_0x4c5cea[_0x6408('0x42')]=_0x30baa0;return _0x4c5cea;})[_0x6408('0x28')](respondWithFilteredResult(_0x5ae4bd,_0x39b386))[_0x6408('0x43')](handleError(_0x5ae4bd,null));};exports[_0x6408('0x44')]=function(_0x23adb6,_0x1c1cd9){var _0x571499={'raw':![],'where':{'id':_0x23adb6[_0x6408('0x45')]['id']}},_0x5f3e19={};_0x5f3e19[_0x6408('0x30')]=_[_0x6408('0x46')](db['Automation'][_0x6408('0x47')]);_0x5f3e19[_0x6408('0x31')]=_['keys'](_0x23adb6[_0x6408('0x31')]);_0x5f3e19[_0x6408('0x32')]=_[_0x6408('0x33')](_0x5f3e19[_0x6408('0x30')],_0x5f3e19['query']);_0x571499[_0x6408('0x34')]=_[_0x6408('0x33')](_0x5f3e19[_0x6408('0x30')],qs['fields'](_0x23adb6['query'][_0x6408('0x35')]));_0x571499[_0x6408('0x34')]=_0x571499['attributes'][_0x6408('0x36')]?_0x571499[_0x6408('0x34')]:_0x5f3e19[_0x6408('0x30')];if(_0x23adb6[_0x6408('0x31')]['includeAll']){_0x571499[_0x6408('0x40')]=[{'all':!![]}];}_0x571499=_[_0x6408('0x3c')]({},_0x571499,_0x23adb6[_0x6408('0x3e')]);return db[_0x6408('0x2d')]['find'](_0x571499)['then'](handleEntityNotFound(_0x1c1cd9,null))[_0x6408('0x28')](respondWithResult(_0x1c1cd9,null))[_0x6408('0x43')](handleError(_0x1c1cd9,null));};exports[_0x6408('0x48')]=function(_0x36254d,_0x2882d8){return db[_0x6408('0x2d')]['create'](_0x36254d['body'],{})[_0x6408('0x28')](respondWithResult(_0x2882d8,0xc9))['catch'](handleError(_0x2882d8,null));};exports[_0x6408('0x49')]=function(_0x242d16,_0x24df2b){if(_0x242d16[_0x6408('0x4a')]['id']){delete _0x242d16[_0x6408('0x4a')]['id'];}return db[_0x6408('0x2d')]['find']({'where':{'id':_0x242d16[_0x6408('0x45')]['id']}})[_0x6408('0x28')](handleEntityNotFound(_0x24df2b,null))[_0x6408('0x28')](saveUpdates(_0x242d16[_0x6408('0x4a')],null))[_0x6408('0x28')](respondWithResult(_0x24df2b,null))[_0x6408('0x43')](handleError(_0x24df2b,null));};exports[_0x6408('0x4b')]=function(_0x15d5b6,_0x3df639){return db[_0x6408('0x2d')][_0x6408('0x4c')]({'where':{'id':_0x15d5b6[_0x6408('0x45')]['id']}})[_0x6408('0x28')](handleEntityNotFound(_0x3df639,null))[_0x6408('0x28')](removeEntity(_0x3df639,null))[_0x6408('0x43')](handleError(_0x3df639,null));};exports[_0x6408('0x4d')]=function(_0x2e397e,_0x4861d2,_0x260814){return db[_0x6408('0x4e')][_0x6408('0x4c')]({'where':{'id':_0x2e397e[_0x6408('0x45')]['id']}})[_0x6408('0x28')](handleEntityNotFound(_0x4861d2,null))[_0x6408('0x28')](function(_0x2b78f0){if(_0x2b78f0){return _0x2b78f0[_0x6408('0x4d')](_0x2e397e['body']['ids'],_['omit'](_0x2e397e['body'],[_0x6408('0x4f'),'id'])||{});}})[_0x6408('0x28')](respondWithResult(_0x4861d2,null))['catch'](handleError(_0x4861d2,null));};exports['getConditions']=function(_0x238db4,_0x4b5d4e,_0x2f92df){var _0x310063={};var _0x3f93ca={};var _0x3a7002;var _0x154af4;return db['Automation'][_0x6408('0x50')]({'where':{'id':_0x238db4['params']['id']}})['then'](handleEntityNotFound(_0x4b5d4e,null))[_0x6408('0x28')](function(_0x224e41){if(_0x224e41){_0x3a7002=_0x224e41;_0x3f93ca[_0x6408('0x30')]=_[_0x6408('0x46')](db[_0x6408('0x4e')]['rawAttributes']);_0x3f93ca[_0x6408('0x31')]=_[_0x6408('0x46')](_0x238db4[_0x6408('0x31')]);_0x3f93ca[_0x6408('0x32')]=_['intersection'](_0x3f93ca[_0x6408('0x30')],_0x3f93ca[_0x6408('0x31')]);_0x310063[_0x6408('0x34')]=_[_0x6408('0x33')](_0x3f93ca['model'],qs['fields'](_0x238db4[_0x6408('0x31')][_0x6408('0x35')]));_0x310063[_0x6408('0x34')]=_0x310063[_0x6408('0x34')]['length']?_0x310063['attributes']:_0x3f93ca[_0x6408('0x30')];_0x310063[_0x6408('0x51')]=qs[_0x6408('0x38')](_0x238db4[_0x6408('0x31')][_0x6408('0x38')]);_0x310063[_0x6408('0x39')]=qs['filters'](_[_0x6408('0x3a')](_0x238db4['query'],_0x3f93ca['filters']));if(_0x238db4['query'][_0x6408('0x3b')]){_0x310063[_0x6408('0x39')]=_[_0x6408('0x3c')](_0x310063['where'],{'$or':_[_0x6408('0x2c')](_0x310063[_0x6408('0x34')],function(_0x3e0933){var _0x5d03fa={};_0x5d03fa[_0x3e0933]={'$like':'%'+_0x238db4[_0x6408('0x31')][_0x6408('0x3b')]+'%'};return _0x5d03fa;})});}_0x310063=_['merge']({},_0x310063,_0x238db4[_0x6408('0x3e')]);return _0x3a7002[_0x6408('0x52')](_0x310063);}})['then'](function(_0x11cfd1){if(_0x11cfd1){_0x154af4=_0x11cfd1['length'];if(!_0x238db4[_0x6408('0x31')][_0x6408('0x37')](_0x6408('0x53'))){_0x310063[_0x6408('0x21')]=qs['limit'](_0x238db4[_0x6408('0x31')][_0x6408('0x21')]);_0x310063['offset']=qs[_0x6408('0x1f')](_0x238db4[_0x6408('0x31')]['offset']);}return _0x3a7002[_0x6408('0x52')](_0x310063);}})[_0x6408('0x28')](function(_0x2b2514){if(_0x2b2514){return _0x2b2514?{'count':_0x154af4,'rows':_0x2b2514}:null;}})['then'](respondWithResult(_0x4b5d4e,null))['catch'](handleError(_0x4b5d4e,null));};exports[_0x6408('0x54')]=function(_0x3bc160,_0x11a810,_0xe07440){return db['Action'][_0x6408('0x4c')]({'where':{'id':_0x3bc160['params']['id']}})[_0x6408('0x28')](handleEntityNotFound(_0x11a810,null))['then'](function(_0x257b33){if(_0x257b33){return _0x257b33[_0x6408('0x54')](_0x3bc160[_0x6408('0x4a')][_0x6408('0x4f')],_[_0x6408('0x55')](_0x3bc160['body'],[_0x6408('0x4f'),'id'])||{});}})['then'](respondWithResult(_0x11a810,null))[_0x6408('0x43')](handleError(_0x11a810,null));};exports[_0x6408('0x56')]=function(_0x377990,_0x2e81ac,_0x3d430e){var _0xc09d1f={};var _0x1c42fd={};var _0x5e8547;var _0x3a4d35;return db[_0x6408('0x2d')][_0x6408('0x50')]({'where':{'id':_0x377990[_0x6408('0x45')]['id']}})[_0x6408('0x28')](handleEntityNotFound(_0x2e81ac,null))[_0x6408('0x28')](function(_0x51cf8a){if(_0x51cf8a){_0x5e8547=_0x51cf8a;_0x1c42fd[_0x6408('0x30')]=_[_0x6408('0x46')](db['Action'][_0x6408('0x47')]);_0x1c42fd[_0x6408('0x31')]=_[_0x6408('0x46')](_0x377990['query']);_0x1c42fd[_0x6408('0x32')]=_[_0x6408('0x33')](_0x1c42fd[_0x6408('0x30')],_0x1c42fd['query']);_0xc09d1f['attributes']=_[_0x6408('0x33')](_0x1c42fd[_0x6408('0x30')],qs[_0x6408('0x35')](_0x377990[_0x6408('0x31')][_0x6408('0x35')]));_0xc09d1f[_0x6408('0x34')]=_0xc09d1f[_0x6408('0x34')][_0x6408('0x36')]?_0xc09d1f[_0x6408('0x34')]:_0x1c42fd[_0x6408('0x30')];_0xc09d1f['order']=qs[_0x6408('0x38')](_0x377990[_0x6408('0x31')][_0x6408('0x38')]);_0xc09d1f[_0x6408('0x39')]=qs['filters'](_[_0x6408('0x3a')](_0x377990[_0x6408('0x31')],_0x1c42fd[_0x6408('0x32')]));if(_0x377990['query'][_0x6408('0x3b')]){_0xc09d1f[_0x6408('0x39')]=_[_0x6408('0x3c')](_0xc09d1f[_0x6408('0x39')],{'$or':_[_0x6408('0x2c')](_0xc09d1f[_0x6408('0x34')],function(_0x372c01){var _0x1f0081={};_0x1f0081[_0x372c01]={'$like':'%'+_0x377990[_0x6408('0x31')][_0x6408('0x3b')]+'%'};return _0x1f0081;})});}_0xc09d1f=_[_0x6408('0x3c')]({},_0xc09d1f,_0x377990[_0x6408('0x3e')]);return _0x5e8547[_0x6408('0x56')](_0xc09d1f);}})[_0x6408('0x28')](function(_0x2e40c0){if(_0x2e40c0){_0x3a4d35=_0x2e40c0[_0x6408('0x36')];if(!_0x377990[_0x6408('0x31')][_0x6408('0x37')](_0x6408('0x53'))){_0xc09d1f[_0x6408('0x21')]=qs['limit'](_0x377990[_0x6408('0x31')][_0x6408('0x21')]);_0xc09d1f[_0x6408('0x1f')]=qs[_0x6408('0x1f')](_0x377990[_0x6408('0x31')]['offset']);}return _0x5e8547[_0x6408('0x56')](_0xc09d1f);}})[_0x6408('0x28')](function(_0xbaa515){if(_0xbaa515){return _0xbaa515?{'count':_0x3a4d35,'rows':_0xbaa515}:null;}})['then'](respondWithResult(_0x2e81ac,null))['catch'](handleError(_0x2e81ac,null));};
\ No newline at end of file
index e123463..486019d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2cf9=['util','../../config/logger','moment','bluebird','path','rimraf','../../config/environment','./automation.attributes','exports','Automation'];(function(_0x2c5df6,_0x191ba6){var _0x348d43=function(_0x2b27c0){while(--_0x2b27c0){_0x2c5df6['push'](_0x2c5df6['shift']());}};_0x348d43(++_0x191ba6);}(_0x2cf9,0x96));var _0x92cf=function(_0x11c872,_0x110eb1){_0x11c872=_0x11c872-0x0;var _0x92a55a=_0x2cf9[_0x11c872];return _0x92a55a;};'use strict';var _=require('lodash');var util=require(_0x92cf('0x0'));var logger=require(_0x92cf('0x1'))('api');var moment=require(_0x92cf('0x2'));var BPromise=require(_0x92cf('0x3'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x92cf('0x4'));var rimraf=require(_0x92cf('0x5'));var config=require(_0x92cf('0x6'));var attributes=require(_0x92cf('0x7'));module[_0x92cf('0x8')]=function(_0x131003,_0x154ed4){return _0x131003['define'](_0x92cf('0x9'),attributes,{'tableName':'tools_automations','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x2ba3=['tools_automations','lodash','util','../../config/logger','api','bluebird','request-promise','rimraf','../../config/environment','define'];(function(_0x274244,_0x122529){var _0x25ca10=function(_0x200ca1){while(--_0x200ca1){_0x274244['push'](_0x274244['shift']());}};_0x25ca10(++_0x122529);}(_0x2ba3,0x83));var _0x32ba=function(_0x49e342,_0x4cb7bd){_0x49e342=_0x49e342-0x0;var _0x40cd8c=_0x2ba3[_0x49e342];return _0x40cd8c;};'use strict';var _=require(_0x32ba('0x0'));var util=require(_0x32ba('0x1'));var logger=require(_0x32ba('0x2'))(_0x32ba('0x3'));var moment=require('moment');var BPromise=require(_0x32ba('0x4'));var rp=require(_0x32ba('0x5'));var fs=require('fs');var path=require('path');var rimraf=require(_0x32ba('0x6'));var config=require(_0x32ba('0x7'));var attributes=require('./automation.attributes');module['exports']=function(_0x15bee6,_0x16a193){return _0x15bee6[_0x32ba('0x8')]('Automation',attributes,{'tableName':_0x32ba('0x9'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 21b050c..5fc5e36 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3af5=['stringify','error','code','message','info','request\x20sent','catch','lodash','util','bluebird','randomstring','../../config/utils','../../config/environment','jayson/promise','http','request','then','Automation,\x20%s,\x20%s','debug','Automation,\x20%s,\x20%s,\x20%s'];(function(_0x4565bf,_0x5ad9d6){var _0x5610ba=function(_0x170988){while(--_0x170988){_0x4565bf['push'](_0x4565bf['shift']());}};_0x5610ba(++_0x5ad9d6);}(_0x3af5,0x1d3));var _0x53af=function(_0x2bc7bc,_0x827ea){_0x2bc7bc=_0x2bc7bc-0x0;var _0xbae862=_0x3af5[_0x2bc7bc];return _0xbae862;};'use strict';var _=require(_0x53af('0x0'));var util=require(_0x53af('0x1'));var moment=require('moment');var BPromise=require(_0x53af('0x2'));var rs=require(_0x53af('0x3'));var fs=require('fs');var Redis=require('ioredis');var db=require('../../mysqldb')['db'];var utils=require(_0x53af('0x4'));var logger=require('../../config/logger')('rpc');var config=require(_0x53af('0x5'));var jayson=require(_0x53af('0x6'));var client=jayson['client'][_0x53af('0x7')]({'port':0x232a});function respondWithRpcPromise(_0x4eb461,_0x3aefaf,_0x27eed3){return new BPromise(function(_0x2875ab,_0x22c0cb){return client[_0x53af('0x8')](_0x4eb461,_0x27eed3)[_0x53af('0x9')](function(_0x56751b){logger['info'](_0x53af('0xa'),_0x3aefaf,'request\x20sent');logger[_0x53af('0xb')](_0x53af('0xc'),_0x3aefaf,'request\x20sent',JSON[_0x53af('0xd')](_0x56751b));if(_0x56751b[_0x53af('0xe')]){if(_0x56751b['error'][_0x53af('0xf')]===0x1f4){logger[_0x53af('0xe')](_0x53af('0xa'),_0x3aefaf,_0x56751b['error'][_0x53af('0x10')]);return _0x22c0cb(_0x56751b['error'][_0x53af('0x10')]);}logger[_0x53af('0xe')](_0x53af('0xa'),_0x3aefaf,_0x56751b[_0x53af('0xe')][_0x53af('0x10')]);return _0x2875ab(_0x56751b[_0x53af('0xe')][_0x53af('0x10')]);}else{logger[_0x53af('0x11')](_0x53af('0xa'),_0x3aefaf,_0x53af('0x12'));_0x2875ab(_0x56751b['result'][_0x53af('0x10')]);}})[_0x53af('0x13')](function(_0x29bb86){logger[_0x53af('0xe')](_0x53af('0xa'),_0x3aefaf,_0x29bb86);_0x22c0cb(_0x29bb86);});});}
\ No newline at end of file
+var _0x0137=['http','then','info','Automation,\x20%s,\x20%s','debug','Automation,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','message','result','catch','lodash','util','moment','bluebird','randomstring','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise'];(function(_0x1b1e76,_0x31695b){var _0x3d743a=function(_0x4ae27b){while(--_0x4ae27b){_0x1b1e76['push'](_0x1b1e76['shift']());}};_0x3d743a(++_0x31695b);}(_0x0137,0x1d8));var _0x7013=function(_0x4c82af,_0x5ca362){_0x4c82af=_0x4c82af-0x0;var _0x260354=_0x0137[_0x4c82af];return _0x260354;};'use strict';var _=require(_0x7013('0x0'));var util=require(_0x7013('0x1'));var moment=require(_0x7013('0x2'));var BPromise=require(_0x7013('0x3'));var rs=require(_0x7013('0x4'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x7013('0x5'))['db'];var utils=require(_0x7013('0x6'));var logger=require(_0x7013('0x7'))(_0x7013('0x8'));var config=require(_0x7013('0x9'));var jayson=require(_0x7013('0xa'));var client=jayson['client'][_0x7013('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x346a4d,_0x4e2460,_0x16c0c8){return new BPromise(function(_0x16dae3,_0x1b748c){return client['request'](_0x346a4d,_0x16c0c8)[_0x7013('0xc')](function(_0x551b8a){logger[_0x7013('0xd')](_0x7013('0xe'),_0x4e2460,'request\x20sent');logger[_0x7013('0xf')](_0x7013('0x10'),_0x4e2460,_0x7013('0x11'),JSON[_0x7013('0x12')](_0x551b8a));if(_0x551b8a[_0x7013('0x13')]){if(_0x551b8a[_0x7013('0x13')]['code']===0x1f4){logger[_0x7013('0x13')](_0x7013('0xe'),_0x4e2460,_0x551b8a[_0x7013('0x13')][_0x7013('0x14')]);return _0x1b748c(_0x551b8a[_0x7013('0x13')][_0x7013('0x14')]);}logger[_0x7013('0x13')](_0x7013('0xe'),_0x4e2460,_0x551b8a[_0x7013('0x13')][_0x7013('0x14')]);return _0x16dae3(_0x551b8a[_0x7013('0x13')]['message']);}else{logger['info'](_0x7013('0xe'),_0x4e2460,_0x7013('0x11'));_0x16dae3(_0x551b8a[_0x7013('0x15')][_0x7013('0x14')]);}})[_0x7013('0x16')](function(_0x48614e){logger['error'](_0x7013('0xe'),_0x4e2460,_0x48614e);_0x1b748c(_0x48614e);});});}
\ No newline at end of file
index c20384d..9ef693a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xac8b=['isAuthenticated','index','/:id','/:id/conditions','getConditions','/:id/actions','post','create','addConditions','addActions','put','update','delete','util','path','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./automation.controller','get'];(function(_0x52dfa9,_0x306d3f){var _0xdfaa57=function(_0x9991c6){while(--_0x9991c6){_0x52dfa9['push'](_0x52dfa9['shift']());}};_0xdfaa57(++_0x306d3f);}(_0xac8b,0x1c2));var _0xbac8=function(_0x432682,_0x253044){_0x432682=_0x432682-0x0;var _0x463d05=_0xac8b[_0x432682];return _0x463d05;};'use strict';var multer=require('multer');var util=require(_0xbac8('0x0'));var path=require(_0xbac8('0x1'));var timeout=require('connect-timeout');var express=require(_0xbac8('0x2'));var router=express[_0xbac8('0x3')]();var fs_extra=require(_0xbac8('0x4'));var auth=require(_0xbac8('0x5'));var interaction=require(_0xbac8('0x6'));var config=require(_0xbac8('0x7'));var controller=require(_0xbac8('0x8'));router[_0xbac8('0x9')]('/',auth[_0xbac8('0xa')](),controller[_0xbac8('0xb')]);router[_0xbac8('0x9')](_0xbac8('0xc'),auth[_0xbac8('0xa')](),controller['show']);router[_0xbac8('0x9')](_0xbac8('0xd'),auth[_0xbac8('0xa')](),controller[_0xbac8('0xe')]);router[_0xbac8('0x9')](_0xbac8('0xf'),auth['isAuthenticated'](),controller['getActions']);router[_0xbac8('0x10')]('/',auth['isAuthenticated'](),controller[_0xbac8('0x11')]);router[_0xbac8('0x10')](_0xbac8('0xd'),auth[_0xbac8('0xa')](),controller[_0xbac8('0x12')]);router[_0xbac8('0x10')](_0xbac8('0xf'),auth[_0xbac8('0xa')](),controller[_0xbac8('0x13')]);router[_0xbac8('0x14')](_0xbac8('0xc'),auth[_0xbac8('0xa')](),controller[_0xbac8('0x15')]);router[_0xbac8('0x16')](_0xbac8('0xc'),auth[_0xbac8('0xa')](),controller['destroy']);module['exports']=router;
\ No newline at end of file
+var _0xe953=['post','addConditions','addActions','put','update','delete','destroy','exports','Router','fs-extra','../../components/interaction/service','./automation.controller','isAuthenticated','index','get','/:id','/:id/conditions','/:id/actions','getActions'];(function(_0x333ce0,_0x512969){var _0x2f576e=function(_0x4f90b1){while(--_0x4f90b1){_0x333ce0['push'](_0x333ce0['shift']());}};_0x2f576e(++_0x512969);}(_0xe953,0x1d0));var _0x3e95=function(_0x164af1,_0x3cf772){_0x164af1=_0x164af1-0x0;var _0x5d81a2=_0xe953[_0x164af1];return _0x5d81a2;};'use strict';var multer=require('multer');var util=require('util');var path=require('path');var timeout=require('connect-timeout');var express=require('express');var router=express[_0x3e95('0x0')]();var fs_extra=require(_0x3e95('0x1'));var auth=require('../../components/auth/service');var interaction=require(_0x3e95('0x2'));var config=require('../../config/environment');var controller=require(_0x3e95('0x3'));router['get']('/',auth[_0x3e95('0x4')](),controller[_0x3e95('0x5')]);router[_0x3e95('0x6')](_0x3e95('0x7'),auth[_0x3e95('0x4')](),controller['show']);router[_0x3e95('0x6')](_0x3e95('0x8'),auth[_0x3e95('0x4')](),controller['getConditions']);router[_0x3e95('0x6')](_0x3e95('0x9'),auth[_0x3e95('0x4')](),controller[_0x3e95('0xa')]);router['post']('/',auth[_0x3e95('0x4')](),controller['create']);router[_0x3e95('0xb')](_0x3e95('0x8'),auth[_0x3e95('0x4')](),controller[_0x3e95('0xc')]);router[_0x3e95('0xb')](_0x3e95('0x9'),auth['isAuthenticated'](),controller[_0x3e95('0xd')]);router[_0x3e95('0xe')]('/:id',auth[_0x3e95('0x4')](),controller[_0x3e95('0xf')]);router[_0x3e95('0x10')](_0x3e95('0x7'),auth['isAuthenticated'](),controller[_0x3e95('0x11')]);module[_0x3e95('0x12')]=router;
\ No newline at end of file
index f10ca20..6cec220 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7d31=['Originate\x20Timeout\x20Seconds\x20(min:1,\x20max:999)','#Congestion\x20Retry\x20(min:1,\x20max:999)','#Busy\x20Retry\x20(min:1,\x20max:999)','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)','never','always','#AMD\x20Initial\x20Silence','#AMD\x20Greeting','#AMD\x20After\x20Greeting\x20Silence','#AMD\x20Total\x20Analysis\x20Time','#AMD\x20Maximum\x20Number\x20Of\x20Words','#AMD\x20Silence\x20Threshold\x20(min:0,\x20max:32767)','DESC','ASC','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\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)','sequelize','STRING','name','ENUM','ivr','BOOLEAN','Active/Disactive\x20Campaign','INTEGER','UNSIGNED','Max\x20200\x20calls.'];(function(_0x2dee29,_0x4014f4){var _0xe49090=function(_0x4f932c){while(--_0x4f932c){_0x2dee29['push'](_0x2dee29['shift']());}};_0xe49090(++_0x4014f4);}(_0x7d31,0x1e4));var _0x17d3=function(_0x5bcf9b,_0x39b15d){_0x5bcf9b=_0x5bcf9b-0x0;var _0x1b2b38=_0x7d31[_0x5bcf9b];return _0x1b2b38;};'use strict';var Sequelize=require(_0x17d3('0x0'));module['exports']={'name':{'type':Sequelize[_0x17d3('0x1')],'unique':_0x17d3('0x2'),'allowNull':![],'validate':{'is':/[A-Za-z0-9._\\+*!-]+/,'notEmpty':!![]}},'type':{'type':Sequelize[_0x17d3('0x3')]('ivr'),'allowNull':![],'defaultValue':_0x17d3('0x4')},'description':{'type':Sequelize[_0x17d3('0x1')]},'active':{'type':Sequelize[_0x17d3('0x5')],'defaultValue':0x0,'comment':_0x17d3('0x6')},'limitCalls':{'type':Sequelize[_0x17d3('0x7')](0x4)[_0x17d3('0x8')],'defaultValue':0x1e,'validate':{'min':0x1,'max':0xc8},'comment':_0x17d3('0x9')},'dialOriginateCallerIdName':{'type':Sequelize[_0x17d3('0x1')]},'dialOriginateCallerIdNumber':{'type':Sequelize[_0x17d3('0x1')]},'dialOriginateTimeout':{'type':Sequelize[_0x17d3('0x7')](0x3)['UNSIGNED'],'defaultValue':0x1e,'validate':{'min':0x1,'max':0x3e7},'comment':_0x17d3('0xa')},'dialCongestionMaxRetry':{'type':Sequelize[_0x17d3('0x7')](0x3)['UNSIGNED'],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':_0x17d3('0xb')},'dialCongestionRetryFrequency':{'type':Sequelize[_0x17d3('0x7')](0x5)[_0x17d3('0x8')],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':'Congestion\x20Retry\x20Frequency\x20Minutes\x20(min:1,\x20max:99999)'},'dialBusyMaxRetry':{'type':Sequelize['INTEGER'](0x3)[_0x17d3('0x8')],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':_0x17d3('0xc')},'dialBusyRetryFrequency':{'type':Sequelize[_0x17d3('0x7')](0x5)[_0x17d3('0x8')],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':_0x17d3('0xd')},'dialNoAnswerMaxRetry':{'type':Sequelize[_0x17d3('0x7')](0x3)[_0x17d3('0x8')],'defaultValue':0x3,'comment':_0x17d3('0xe')},'dialNoAnswerRetryFrequency':{'type':Sequelize[_0x17d3('0x7')](0x5)[_0x17d3('0x8')],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':_0x17d3('0xf')},'dialGlobalMaxRetry':{'type':Sequelize[_0x17d3('0x7')](0x3)[_0x17d3('0x8')],'validate':{'min':0x1,'max':0x3e7},'defaultValue':0x4,'comment':_0x17d3('0x10')},'dialTimezone':{'type':Sequelize['STRING'],'defaultValue':null},'dialGlobalInterval':{'type':Sequelize[_0x17d3('0x1')],'defaultValue':'07:00-22:00,*,*,*'},'dialCheckDuplicateType':{'type':Sequelize['ENUM']('always',_0x17d3('0x11'),'onlyIfOpen'),'defaultValue':_0x17d3('0x12')},'dialAMDActive':{'type':Sequelize[_0x17d3('0x5')],'defaultValue':0x0,'comment':'Active/Disactive\x20AMD'},'dialAMDInitialSilence':{'type':Sequelize['INTEGER'](0x9)['UNSIGNED'],'defaultValue':0x9c4,'validate':{'min':0x0},'comment':_0x17d3('0x13')},'dialAMDGreeting':{'type':Sequelize[_0x17d3('0x7')](0x9)[_0x17d3('0x8')],'defaultValue':0x5dc,'validate':{'min':0x0},'comment':_0x17d3('0x14')},'dialAMDAfterGreetingSilence':{'type':Sequelize[_0x17d3('0x7')](0x9)[_0x17d3('0x8')],'defaultValue':0x320,'validate':{'min':0x0},'comment':_0x17d3('0x15')},'dialAMDTotalAnalysisTime':{'type':Sequelize[_0x17d3('0x7')](0x9)[_0x17d3('0x8')],'defaultValue':0x1388,'validate':{'min':0x0},'comment':_0x17d3('0x16')},'dialAMDMinWordLength':{'type':Sequelize['INTEGER'](0x9)[_0x17d3('0x8')],'defaultValue':0x64,'validate':{'min':0x0},'comment':'#AMD\x20Min\x20Word\x20Length'},'dialAMDBetweenWordsSilence':{'type':Sequelize[_0x17d3('0x7')](0x9)['UNSIGNED'],'defaultValue':0x32,'validate':{'min':0x0},'comment':'#AMD\x20Between\x20Words\x20Silence'},'dialAMDMaximumNumberOfWords':{'type':Sequelize[_0x17d3('0x7')](0x9)['UNSIGNED'],'defaultValue':0x3,'validate':{'min':0x0},'comment':_0x17d3('0x17')},'dialAMDSilenceThreshold':{'type':Sequelize[_0x17d3('0x7')](0x5)[_0x17d3('0x8')],'validate':{'min':0x0,'max':0x7fff},'defaultValue':0x100,'comment':_0x17d3('0x18')},'dialAMDMaximumWordLength':{'type':Sequelize[_0x17d3('0x7')](0x9)[_0x17d3('0x8')],'defaultValue':0x1388,'validate':{'min':0x0},'comment':'#AMD\x20Maximum\x20Word\x20Length'},'dialOrderByScheduledAt':{'type':Sequelize[_0x17d3('0x3')](_0x17d3('0x19'),_0x17d3('0x1a')),'defaultValue':'DESC'},'dialPrefix':{'type':Sequelize[_0x17d3('0x1')],'defaultValue':null},'dialRandomLastDigitCallerIdNumber':{'type':Sequelize[_0x17d3('0x7')](0x3)[_0x17d3('0x8')],'validate':{'min':0x0,'max':0xf},'defaultValue':0x0,'comment':_0x17d3('0x1b')},'dialCutDigit':{'type':Sequelize[_0x17d3('0x7')](0x3)[_0x17d3('0x8')],'validate':{'min':0x0,'max':0xf},'defaultValue':0x0,'comment':_0x17d3('0x1c')},'dialNoSuchNumberMaxRetry':{'type':Sequelize[_0x17d3('0x7')](0x3)[_0x17d3('0x8')],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':_0x17d3('0x1d')},'dialNoSuchNumberRetryFrequency':{'type':Sequelize[_0x17d3('0x7')](0x5)[_0x17d3('0x8')],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':_0x17d3('0x1e')},'dialDropMaxRetry':{'type':Sequelize[_0x17d3('0x7')](0x3)[_0x17d3('0x8')],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':'#Drop\x20Retry\x20(min:1,\x20max:999)'},'dialDropRetryFrequency':{'type':Sequelize['INTEGER'](0x5)[_0x17d3('0x8')],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':_0x17d3('0x1f')},'dialAbandonedMaxRetry':{'type':Sequelize[_0x17d3('0x7')](0x3)['UNSIGNED'],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':_0x17d3('0x20')},'dialAbandonedRetryFrequency':{'type':Sequelize[_0x17d3('0x7')](0x5)[_0x17d3('0x8')],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':_0x17d3('0x21')},'dialMachineMaxRetry':{'type':Sequelize[_0x17d3('0x7')](0x3)[_0x17d3('0x8')],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':_0x17d3('0x22')},'dialMachineRetryFrequency':{'type':Sequelize[_0x17d3('0x7')](0x5)[_0x17d3('0x8')],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':_0x17d3('0x23')},'dialAgentRejectMaxRetry':{'type':Sequelize[_0x17d3('0x7')](0x3)[_0x17d3('0x8')],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':_0x17d3('0x24')},'dialAgentRejectRetryFrequency':{'type':Sequelize[_0x17d3('0x7')](0x5)['UNSIGNED'],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':_0x17d3('0x25')}};
\ No newline at end of file
+var _0x9b12=['DESC','ASC','Cut\x20Digit\x20(min:1,\x20max:15)','NoSuchNumber\x20Retry\x20Frequency\x20Minutes\x20(min:1,\x20max:99999)','#Drop\x20Retry\x20(min:1,\x20max:999)','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)','exports','STRING','name','ENUM','ivr','Active/Disactive\x20Campaign','INTEGER','UNSIGNED','Max\x20200\x20calls.','Originate\x20Timeout\x20Seconds\x20(min:1,\x20max:999)','Congestion\x20Retry\x20Frequency\x20Minutes\x20(min:1,\x20max:99999)','#Busy\x20Retry\x20(min:1,\x20max:999)','#NoAnswer\x20Retry\x20(min:1,\x20max:999)','#Global\x20Max\x20Retry\x20(min:1,\x20max:999)','07:00-22:00,*,*,*','always','Active/Disactive\x20AMD','#AMD\x20Greeting','#AMD\x20After\x20Greeting\x20Silence','#AMD\x20Between\x20Words\x20Silence','#AMD\x20Maximum\x20Number\x20Of\x20Words','#AMD\x20Silence\x20Threshold\x20(min:0,\x20max:32767)','#AMD\x20Maximum\x20Word\x20Length'];(function(_0x21db13,_0x2b2d48){var _0x57aa14=function(_0x53b54b){while(--_0x53b54b){_0x21db13['push'](_0x21db13['shift']());}};_0x57aa14(++_0x2b2d48);}(_0x9b12,0x1d8));var _0x29b1=function(_0x252862,_0x2040a6){_0x252862=_0x252862-0x0;var _0x3ab7e2=_0x9b12[_0x252862];return _0x3ab7e2;};'use strict';var Sequelize=require('sequelize');module[_0x29b1('0x0')]={'name':{'type':Sequelize[_0x29b1('0x1')],'unique':_0x29b1('0x2'),'allowNull':![],'validate':{'is':/[A-Za-z0-9._\\+*!-]+/,'notEmpty':!![]}},'type':{'type':Sequelize[_0x29b1('0x3')]('ivr'),'allowNull':![],'defaultValue':_0x29b1('0x4')},'description':{'type':Sequelize[_0x29b1('0x1')]},'active':{'type':Sequelize['BOOLEAN'],'defaultValue':0x0,'comment':_0x29b1('0x5')},'limitCalls':{'type':Sequelize[_0x29b1('0x6')](0x4)[_0x29b1('0x7')],'defaultValue':0x1e,'validate':{'min':0x1,'max':0xc8},'comment':_0x29b1('0x8')},'dialOriginateCallerIdName':{'type':Sequelize[_0x29b1('0x1')]},'dialOriginateCallerIdNumber':{'type':Sequelize[_0x29b1('0x1')]},'dialOriginateTimeout':{'type':Sequelize[_0x29b1('0x6')](0x3)[_0x29b1('0x7')],'defaultValue':0x1e,'validate':{'min':0x1,'max':0x3e7},'comment':_0x29b1('0x9')},'dialCongestionMaxRetry':{'type':Sequelize[_0x29b1('0x6')](0x3)[_0x29b1('0x7')],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':'#Congestion\x20Retry\x20(min:1,\x20max:999)'},'dialCongestionRetryFrequency':{'type':Sequelize[_0x29b1('0x6')](0x5)[_0x29b1('0x7')],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':_0x29b1('0xa')},'dialBusyMaxRetry':{'type':Sequelize['INTEGER'](0x3)['UNSIGNED'],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':_0x29b1('0xb')},'dialBusyRetryFrequency':{'type':Sequelize['INTEGER'](0x5)['UNSIGNED'],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':'Busy\x20Retry\x20Frequency\x20Minutes\x20(min:1,\x20max:99999)'},'dialNoAnswerMaxRetry':{'type':Sequelize[_0x29b1('0x6')](0x3)[_0x29b1('0x7')],'defaultValue':0x3,'comment':_0x29b1('0xc')},'dialNoAnswerRetryFrequency':{'type':Sequelize[_0x29b1('0x6')](0x5)[_0x29b1('0x7')],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':'NoAnswer\x20Retry\x20Frequency\x20Minutes\x20(min:1,\x20max:99999)'},'dialGlobalMaxRetry':{'type':Sequelize[_0x29b1('0x6')](0x3)['UNSIGNED'],'validate':{'min':0x1,'max':0x3e7},'defaultValue':0x4,'comment':_0x29b1('0xd')},'dialTimezone':{'type':Sequelize[_0x29b1('0x1')],'defaultValue':null},'dialGlobalInterval':{'type':Sequelize['STRING'],'defaultValue':_0x29b1('0xe')},'dialCheckDuplicateType':{'type':Sequelize[_0x29b1('0x3')](_0x29b1('0xf'),'never','onlyIfOpen'),'defaultValue':_0x29b1('0xf')},'dialAMDActive':{'type':Sequelize['BOOLEAN'],'defaultValue':0x0,'comment':_0x29b1('0x10')},'dialAMDInitialSilence':{'type':Sequelize['INTEGER'](0x9)[_0x29b1('0x7')],'defaultValue':0x9c4,'validate':{'min':0x0},'comment':'#AMD\x20Initial\x20Silence'},'dialAMDGreeting':{'type':Sequelize[_0x29b1('0x6')](0x9)[_0x29b1('0x7')],'defaultValue':0x5dc,'validate':{'min':0x0},'comment':_0x29b1('0x11')},'dialAMDAfterGreetingSilence':{'type':Sequelize[_0x29b1('0x6')](0x9)[_0x29b1('0x7')],'defaultValue':0x320,'validate':{'min':0x0},'comment':_0x29b1('0x12')},'dialAMDTotalAnalysisTime':{'type':Sequelize[_0x29b1('0x6')](0x9)['UNSIGNED'],'defaultValue':0x1388,'validate':{'min':0x0},'comment':'#AMD\x20Total\x20Analysis\x20Time'},'dialAMDMinWordLength':{'type':Sequelize[_0x29b1('0x6')](0x9)[_0x29b1('0x7')],'defaultValue':0x64,'validate':{'min':0x0},'comment':'#AMD\x20Min\x20Word\x20Length'},'dialAMDBetweenWordsSilence':{'type':Sequelize[_0x29b1('0x6')](0x9)['UNSIGNED'],'defaultValue':0x32,'validate':{'min':0x0},'comment':_0x29b1('0x13')},'dialAMDMaximumNumberOfWords':{'type':Sequelize[_0x29b1('0x6')](0x9)['UNSIGNED'],'defaultValue':0x3,'validate':{'min':0x0},'comment':_0x29b1('0x14')},'dialAMDSilenceThreshold':{'type':Sequelize[_0x29b1('0x6')](0x5)['UNSIGNED'],'validate':{'min':0x0,'max':0x7fff},'defaultValue':0x100,'comment':_0x29b1('0x15')},'dialAMDMaximumWordLength':{'type':Sequelize[_0x29b1('0x6')](0x9)[_0x29b1('0x7')],'defaultValue':0x1388,'validate':{'min':0x0},'comment':_0x29b1('0x16')},'dialOrderByScheduledAt':{'type':Sequelize['ENUM'](_0x29b1('0x17'),_0x29b1('0x18')),'defaultValue':_0x29b1('0x17')},'dialPrefix':{'type':Sequelize[_0x29b1('0x1')],'defaultValue':null},'dialRandomLastDigitCallerIdNumber':{'type':Sequelize[_0x29b1('0x6')](0x3)[_0x29b1('0x7')],'validate':{'min':0x0,'max':0xf},'defaultValue':0x0,'comment':'Random\x20Last\x20Digit\x20(min:1,\x20max:15)'},'dialCutDigit':{'type':Sequelize['INTEGER'](0x3)[_0x29b1('0x7')],'validate':{'min':0x0,'max':0xf},'defaultValue':0x0,'comment':_0x29b1('0x19')},'dialNoSuchNumberMaxRetry':{'type':Sequelize[_0x29b1('0x6')](0x3)['UNSIGNED'],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':'#NoSuchNumber\x20Retry\x20(min:1,\x20max:999)'},'dialNoSuchNumberRetryFrequency':{'type':Sequelize[_0x29b1('0x6')](0x5)[_0x29b1('0x7')],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':_0x29b1('0x1a')},'dialDropMaxRetry':{'type':Sequelize['INTEGER'](0x3)[_0x29b1('0x7')],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':_0x29b1('0x1b')},'dialDropRetryFrequency':{'type':Sequelize[_0x29b1('0x6')](0x5)[_0x29b1('0x7')],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':'Drop\x20Retry\x20Frequency\x20Minutes\x20(min:1,\x20max:99999)'},'dialAbandonedMaxRetry':{'type':Sequelize[_0x29b1('0x6')](0x3)[_0x29b1('0x7')],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':'#Abandoned\x20Retry\x20(min:1,\x20max:999)'},'dialAbandonedRetryFrequency':{'type':Sequelize[_0x29b1('0x6')](0x5)[_0x29b1('0x7')],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':_0x29b1('0x1c')},'dialMachineMaxRetry':{'type':Sequelize[_0x29b1('0x6')](0x3)[_0x29b1('0x7')],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':_0x29b1('0x1d')},'dialMachineRetryFrequency':{'type':Sequelize[_0x29b1('0x6')](0x5)[_0x29b1('0x7')],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':_0x29b1('0x1e')},'dialAgentRejectMaxRetry':{'type':Sequelize[_0x29b1('0x6')](0x3)[_0x29b1('0x7')],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':_0x29b1('0x1f')},'dialAgentRejectRetryFrequency':{'type':Sequelize[_0x29b1('0x6')](0x5)['UNSIGNED'],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':_0x29b1('0x20')}};
\ No newline at end of file
index 6805e66..db555ee 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3ec1=['Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','clone','omit','createdAt','updatedAt','role','params','getHoppers','findOne','CmHopper','nolimit','order','pick','CampaignId','findAll','getHopperHistories','CmHopperHistory','CmHopperFinal','getHopperBlacks','CmHopperBlack','getLists','CmList','addLists','ids','spread','dialCheckDuplicateType','always','into','fromQuery','phone','ContactId','ListId','select','NOW()','scheduledAt','field','CmListId','toString','from','cm_contacts','deletedAt\x20IS\x20NULL','ListId\x20=\x20?','phone\x20IS\x20NOT\x20NULL','phone\x20NOT\x20IN\x20(?)','COALESCE(calleridnum,\x27\x27)','CampaignId\x20=\x20?','COALESCE(phone,\x27\x27)','cm_hopper','onlyIfOpen','insert','push','sequelize','removeLists','getBlackLists','addBlackLists','all','removeBlackLists','eml-format','rimraf','zip-dir','request-promise','bluebird','mustache','util','path','sox','to-csv','fs-extra','lodash','squel','crypto','jsforce','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','api','../../config/environment','../../config/license/util','sendStatus','status','end','json','undefined','limit','count','offset','Content-Range','apply','reject','update','then','destroy','IvrCampaigns','UserProfileResource','stack','name','send','Campaign','rawAttributes','fieldName','type','key','model','map','keys','query','filters','intersection','fields','attributes','length','hasOwnProperty','sort','where','filter','merge','options','includeAll','include','rows','catch','find','create','body','user','get','Unable\x20to\x20retrieve\x20the\x20current\x20user','UserProfileSection','userProfileId','autoAssociation','error'];(function(_0x48c615,_0x4cc757){var _0x3d9e22=function(_0x1ee9f2){while(--_0x1ee9f2){_0x48c615['push'](_0x48c615['shift']());}};_0x3d9e22(++_0x4cc757);}(_0x3ec1,0x147));var _0x13ec=function(_0x40dd3d,_0x19bfab){_0x40dd3d=_0x40dd3d-0x0;var _0x2df68f=_0x3ec1[_0x40dd3d];return _0x2df68f;};'use strict';var emlformat=require(_0x13ec('0x0'));var rimraf=require(_0x13ec('0x1'));var zipdir=require(_0x13ec('0x2'));var jsonpatch=require('fast-json-patch');var rp=require(_0x13ec('0x3'));var moment=require('moment');var BPromise=require(_0x13ec('0x4'));var Mustache=require(_0x13ec('0x5'));var util=require(_0x13ec('0x6'));var path=require(_0x13ec('0x7'));var sox=require(_0x13ec('0x8'));var csv=require(_0x13ec('0x9'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x13ec('0xa'));var _=require(_0x13ec('0xb'));var squel=require(_0x13ec('0xc'));var crypto=require(_0x13ec('0xd'));var jsforce=require(_0x13ec('0xe'));var deskjs=require('desk.js');var toCsv=require('to-csv');var querystring=require(_0x13ec('0xf'));var Papa=require(_0x13ec('0x10'));var Redis=require(_0x13ec('0x11'));var authService=require(_0x13ec('0x12'));var qs=require(_0x13ec('0x13'));var as=require(_0x13ec('0x14'));var hardwareService=require('../../config/license/hardware');var logger=require(_0x13ec('0x15'))(_0x13ec('0x16'));var utils=require('../../config/utils');var config=require(_0x13ec('0x17'));var licenseUtil=require(_0x13ec('0x18'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x4fe460,_0xd67747){_0xd67747=_0xd67747||0xcc;return function(_0x49170a){if(_0x49170a){return _0x4fe460[_0x13ec('0x19')](_0xd67747);}return _0x4fe460[_0x13ec('0x1a')](_0xd67747)[_0x13ec('0x1b')]();};}function respondWithResult(_0x239819,_0x287c7e){_0x287c7e=_0x287c7e||0xc8;return function(_0x6a79){if(_0x6a79){return _0x239819[_0x13ec('0x1a')](_0x287c7e)[_0x13ec('0x1c')](_0x6a79);}};}function respondWithFilteredResult(_0x5588f9,_0x4c5d93){return function(_0x2315c0){if(_0x2315c0){var _0x545bda=typeof _0x4c5d93['offset']===_0x13ec('0x1d')&&typeof _0x4c5d93[_0x13ec('0x1e')]===_0x13ec('0x1d');var _0x1e6479=_0x2315c0[_0x13ec('0x1f')];var _0x22cfe2=_0x545bda?0x0:_0x4c5d93[_0x13ec('0x20')];var _0x1ac1c4=_0x545bda?_0x2315c0['count']:_0x4c5d93['offset']+_0x4c5d93[_0x13ec('0x1e')];var _0x1f1977;if(_0x1ac1c4>=_0x1e6479){_0x1ac1c4=_0x1e6479;_0x1f1977=0xc8;}else{_0x1f1977=0xce;}_0x5588f9[_0x13ec('0x1a')](_0x1f1977);return _0x5588f9['set'](_0x13ec('0x21'),_0x22cfe2+'-'+_0x1ac1c4+'/'+_0x1e6479)[_0x13ec('0x1c')](_0x2315c0);}return null;};}function patchUpdates(_0x2f22f8){return function(_0xc048a3){try{jsonpatch[_0x13ec('0x22')](_0xc048a3,_0x2f22f8,!![]);}catch(_0x129121){return BPromise[_0x13ec('0x23')](_0x129121);}return _0xc048a3['save']();};}function saveUpdates(_0x30ef22,_0x44602b){return function(_0x3deb56){if(_0x3deb56){return _0x3deb56[_0x13ec('0x24')](_0x30ef22)[_0x13ec('0x25')](function(_0x56c334){return _0x56c334;});}return null;};}function removeEntity(_0x3ece38,_0x118859){return function(_0x2a3727){if(_0x2a3727){return _0x2a3727[_0x13ec('0x26')]()[_0x13ec('0x25')](function(){var _0x30da42=_0x2a3727['get']({'plain':!![]});var _0x3add48=_0x13ec('0x27');return db[_0x13ec('0x28')][_0x13ec('0x26')]({'where':{'type':_0x3add48,'resourceId':_0x30da42['id']}})[_0x13ec('0x25')](function(){return _0x2a3727;});})[_0x13ec('0x25')](function(){_0x3ece38[_0x13ec('0x1a')](0xcc)[_0x13ec('0x1b')]();});}};}function handleEntityNotFound(_0x3a7d3e,_0x44df8b){return function(_0x4cdfad){if(!_0x4cdfad){_0x3a7d3e[_0x13ec('0x19')](0x194);}return _0x4cdfad;};}function handleError(_0xf05ea0,_0x2fc248){_0x2fc248=_0x2fc248||0x1f4;return function(_0x50d4b4){logger['error'](_0x50d4b4[_0x13ec('0x29')]);if(_0x50d4b4['name']){delete _0x50d4b4[_0x13ec('0x2a')];}_0xf05ea0[_0x13ec('0x1a')](_0x2fc248)[_0x13ec('0x2b')](_0x50d4b4);};}exports['index']=function(_0x587f44,_0x283434){var _0x544edf={},_0x1b0fc7={},_0x173920={'count':0x0,'rows':[]};var _0xd68a03=_['map'](db[_0x13ec('0x2c')][_0x13ec('0x2d')],function(_0x36b7d7){return{'name':_0x36b7d7[_0x13ec('0x2e')],'type':_0x36b7d7[_0x13ec('0x2f')][_0x13ec('0x30')]};});_0x1b0fc7[_0x13ec('0x31')]=_[_0x13ec('0x32')](_0xd68a03,_0x13ec('0x2a'));_0x1b0fc7['query']=_[_0x13ec('0x33')](_0x587f44[_0x13ec('0x34')]);_0x1b0fc7[_0x13ec('0x35')]=_['intersection'](_0x1b0fc7[_0x13ec('0x31')],_0x1b0fc7[_0x13ec('0x34')]);_0x544edf['attributes']=_[_0x13ec('0x36')](_0x1b0fc7[_0x13ec('0x31')],qs[_0x13ec('0x37')](_0x587f44[_0x13ec('0x34')][_0x13ec('0x37')]));_0x544edf[_0x13ec('0x38')]=_0x544edf[_0x13ec('0x38')][_0x13ec('0x39')]?_0x544edf[_0x13ec('0x38')]:_0x1b0fc7[_0x13ec('0x31')];if(!_0x587f44[_0x13ec('0x34')][_0x13ec('0x3a')]('nolimit')){_0x544edf[_0x13ec('0x1e')]=qs[_0x13ec('0x1e')](_0x587f44[_0x13ec('0x34')][_0x13ec('0x1e')]);_0x544edf['offset']=qs[_0x13ec('0x20')](_0x587f44[_0x13ec('0x34')][_0x13ec('0x20')]);}_0x544edf['order']=qs[_0x13ec('0x3b')](_0x587f44[_0x13ec('0x34')][_0x13ec('0x3b')]);_0x544edf[_0x13ec('0x3c')]=qs[_0x13ec('0x35')](_['pick'](_0x587f44[_0x13ec('0x34')],_0x1b0fc7[_0x13ec('0x35')]),_0xd68a03);if(_0x587f44['query'][_0x13ec('0x3d')]){_0x544edf['where']=_[_0x13ec('0x3e')](_0x544edf[_0x13ec('0x3c')],{'$or':_[_0x13ec('0x32')](_0xd68a03,function(_0x14cf7d){if(_0x14cf7d[_0x13ec('0x2f')]!=='VIRTUAL'){var _0x1c8694={};_0x1c8694[_0x14cf7d[_0x13ec('0x2a')]]={'$like':'%'+_0x587f44['query'][_0x13ec('0x3d')]+'%'};return _0x1c8694;}})});}_0x544edf=_[_0x13ec('0x3e')]({},_0x544edf,_0x587f44[_0x13ec('0x3f')]);var _0x51fa9f={'where':_0x544edf['where']};return db[_0x13ec('0x2c')][_0x13ec('0x1f')](_0x51fa9f)[_0x13ec('0x25')](function(_0x5613c6){_0x173920[_0x13ec('0x1f')]=_0x5613c6;if(_0x587f44[_0x13ec('0x34')][_0x13ec('0x40')]){_0x544edf[_0x13ec('0x41')]=[{'all':!![]}];}return db[_0x13ec('0x2c')]['findAll'](_0x544edf);})[_0x13ec('0x25')](function(_0x2cb820){_0x173920[_0x13ec('0x42')]=_0x2cb820;return _0x173920;})[_0x13ec('0x25')](respondWithFilteredResult(_0x283434,_0x544edf))[_0x13ec('0x43')](handleError(_0x283434,null));};exports['show']=function(_0x1942d8,_0x16814b){var _0x546084={'raw':![],'where':{'id':_0x1942d8['params']['id']}},_0x347b7f={};_0x347b7f[_0x13ec('0x31')]=_['keys'](db[_0x13ec('0x2c')][_0x13ec('0x2d')]);_0x347b7f[_0x13ec('0x34')]=_[_0x13ec('0x33')](_0x1942d8['query']);_0x347b7f[_0x13ec('0x35')]=_[_0x13ec('0x36')](_0x347b7f[_0x13ec('0x31')],_0x347b7f[_0x13ec('0x34')]);_0x546084[_0x13ec('0x38')]=_[_0x13ec('0x36')](_0x347b7f['model'],qs['fields'](_0x1942d8['query'][_0x13ec('0x37')]));_0x546084[_0x13ec('0x38')]=_0x546084[_0x13ec('0x38')][_0x13ec('0x39')]?_0x546084[_0x13ec('0x38')]:_0x347b7f[_0x13ec('0x31')];if(_0x1942d8[_0x13ec('0x34')]['includeAll']){_0x546084[_0x13ec('0x41')]=[{'all':!![]}];}_0x546084=_[_0x13ec('0x3e')]({},_0x546084,_0x1942d8[_0x13ec('0x3f')]);return db['Campaign'][_0x13ec('0x44')](_0x546084)[_0x13ec('0x25')](handleEntityNotFound(_0x16814b,null))[_0x13ec('0x25')](respondWithResult(_0x16814b,null))[_0x13ec('0x43')](handleError(_0x16814b,null));};exports[_0x13ec('0x45')]=function(_0x4141bf,_0x269bea){return db[_0x13ec('0x2c')][_0x13ec('0x45')](_0x4141bf[_0x13ec('0x46')],{})[_0x13ec('0x25')](function(_0x829ec8){var _0x10e628=_0x4141bf[_0x13ec('0x47')][_0x13ec('0x48')]({'plain':!![]});if(!_0x10e628)throw new Error(_0x13ec('0x49'));if(_0x10e628['role']===_0x13ec('0x47')){var _0x46fc55=_0x829ec8['get']({'plain':!![]});var _0x133831=_0x13ec('0x27');return db[_0x13ec('0x4a')][_0x13ec('0x44')]({'where':{'name':_0x133831,'userProfileId':_0x10e628[_0x13ec('0x4b')]},'raw':!![]})[_0x13ec('0x25')](function(_0xf26d37){if(_0xf26d37&&_0xf26d37[_0x13ec('0x4c')]===0x0){return db[_0x13ec('0x28')][_0x13ec('0x45')]({'name':_0x46fc55[_0x13ec('0x2a')],'resourceId':_0x46fc55['id'],'type':_0xf26d37[_0x13ec('0x2a')],'sectionId':_0xf26d37['id']},{})['then'](function(){return _0x829ec8;});}else{return _0x829ec8;}})[_0x13ec('0x43')](function(_0x322823){logger[_0x13ec('0x4d')](_0x13ec('0x4e'),_0x322823);throw _0x322823;});}return _0x829ec8;})[_0x13ec('0x25')](respondWithResult(_0x269bea,0xc9))[_0x13ec('0x43')](handleError(_0x269bea,null));};exports[_0x13ec('0x4f')]=function(_0x24a6bc,_0x26e527){var _0x4effd3={'where':{'id':_0x24a6bc['params']['id']}},_0x133b10={};_0x133b10[_0x13ec('0x31')]=_[_0x13ec('0x33')](db['Campaign'][_0x13ec('0x2d')]);_0x4effd3[_0x13ec('0x38')]=_[_0x13ec('0x36')](_0x133b10[_0x13ec('0x31')],qs[_0x13ec('0x37')](_0x24a6bc[_0x13ec('0x34')]['fields']));_0x4effd3[_0x13ec('0x38')]=_0x4effd3['attributes']['length']?_0x4effd3['attributes']:_0x133b10['model'];if(_0x24a6bc[_0x13ec('0x34')][_0x13ec('0x40')]){_0x4effd3['include']=[{'all':!![]}];}_0x4effd3=_['merge']({},_0x4effd3,_0x24a6bc['options']);return db['Campaign']['find'](_0x4effd3)[_0x13ec('0x25')](handleEntityNotFound(_0x26e527,null))[_0x13ec('0x25')](function(_0x4929e8){if(_0x4929e8){var _0x4d8ad2=_0x4929e8[_0x13ec('0x48')]({'plain':!![]});_0x4d8ad2=qs[_0x13ec('0x50')](_0x4d8ad2,['id',_0x13ec('0x51'),_0x13ec('0x52')]);_0x24a6bc['body']=_[_0x13ec('0x50')](_0x24a6bc['body'],['id',_0x13ec('0x51'),_0x13ec('0x52')]);return db['Campaign']['create'](_['merge'](_0x4d8ad2,_0x24a6bc[_0x13ec('0x46')]),{'include':_0x24a6bc[_0x13ec('0x34')]['includeAll']?[{'all':!![]}]:undefined})['then'](function(_0x6a0272){var _0x59067f=_0x24a6bc[_0x13ec('0x47')][_0x13ec('0x48')]({'plain':!![]});if(!_0x59067f)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0x59067f[_0x13ec('0x53')]===_0x13ec('0x47')){var _0xaccd41=_0x6a0272[_0x13ec('0x48')]({'plain':!![]});var _0x206d84=_0x13ec('0x27');return db[_0x13ec('0x4a')][_0x13ec('0x44')]({'where':{'name':_0x206d84,'userProfileId':_0x59067f[_0x13ec('0x4b')]},'raw':!![]})['then'](function(_0x2ee493){if(_0x2ee493&&_0x2ee493[_0x13ec('0x4c')]===0x0){return db[_0x13ec('0x28')]['create']({'name':_0xaccd41[_0x13ec('0x2a')],'resourceId':_0xaccd41['id'],'type':_0x2ee493[_0x13ec('0x2a')],'sectionId':_0x2ee493['id']},{})['then'](function(){return _0x6a0272;});}else{return _0x6a0272;}})[_0x13ec('0x43')](function(_0x274cfa){logger['error']('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0x274cfa);throw _0x274cfa;});}return _0x6a0272;});}})['then'](respondWithResult(_0x26e527,0xc9))['catch'](handleError(_0x26e527,null));};exports[_0x13ec('0x24')]=function(_0x3c26d4,_0x25be2d){if(_0x3c26d4[_0x13ec('0x46')]['id']){delete _0x3c26d4['body']['id'];}return db[_0x13ec('0x2c')][_0x13ec('0x44')]({'where':{'id':_0x3c26d4[_0x13ec('0x54')]['id']}})['then'](handleEntityNotFound(_0x25be2d,null))[_0x13ec('0x25')](saveUpdates(_0x3c26d4[_0x13ec('0x46')],null))['then'](respondWithResult(_0x25be2d,null))['catch'](handleError(_0x25be2d,null));};exports[_0x13ec('0x26')]=function(_0x2ed4ee,_0x310ade){return db['Campaign'][_0x13ec('0x44')]({'where':{'id':_0x2ed4ee[_0x13ec('0x54')]['id']}})[_0x13ec('0x25')](handleEntityNotFound(_0x310ade,null))['then'](removeEntity(_0x310ade,null))[_0x13ec('0x43')](handleError(_0x310ade,null));};exports[_0x13ec('0x55')]=function(_0x2f19f1,_0x4d00d4,_0x4c8c34){var _0x1b13ec={'raw':!![],'where':{}};var _0x1e959f={};var _0x1caeff={'count':0x0,'rows':[]};return db['Campaign'][_0x13ec('0x56')]({'where':{'id':_0x2f19f1[_0x13ec('0x54')]['id']}})[_0x13ec('0x25')](handleEntityNotFound(_0x4d00d4,null))[_0x13ec('0x25')](function(_0x1eb17b){if(_0x1eb17b){_0x1e959f[_0x13ec('0x31')]=_['keys'](db[_0x13ec('0x57')][_0x13ec('0x2d')]);_0x1e959f[_0x13ec('0x34')]=_[_0x13ec('0x33')](_0x2f19f1[_0x13ec('0x34')]);_0x1e959f[_0x13ec('0x35')]=_['intersection'](_0x1e959f['model'],_0x1e959f[_0x13ec('0x34')]);_0x1b13ec[_0x13ec('0x38')]=_[_0x13ec('0x36')](_0x1e959f['model'],qs['fields'](_0x2f19f1[_0x13ec('0x34')][_0x13ec('0x37')]));_0x1b13ec[_0x13ec('0x38')]=_0x1b13ec['attributes']['length']?_0x1b13ec[_0x13ec('0x38')]:_0x1e959f[_0x13ec('0x31')];if(!_0x2f19f1[_0x13ec('0x34')][_0x13ec('0x3a')](_0x13ec('0x58'))){_0x1b13ec[_0x13ec('0x1e')]=qs[_0x13ec('0x1e')](_0x2f19f1[_0x13ec('0x34')][_0x13ec('0x1e')]);_0x1b13ec[_0x13ec('0x20')]=qs[_0x13ec('0x20')](_0x2f19f1[_0x13ec('0x34')]['offset']);}_0x1b13ec[_0x13ec('0x59')]=qs[_0x13ec('0x3b')](_0x2f19f1[_0x13ec('0x34')]['sort']);_0x1b13ec[_0x13ec('0x3c')]=qs[_0x13ec('0x35')](_[_0x13ec('0x5a')](_0x2f19f1[_0x13ec('0x34')],_0x1e959f['filters']));_0x1b13ec['where'][_0x13ec('0x5b')]=_0x1eb17b['id'];if(_0x2f19f1['query']['filter']){_0x1b13ec[_0x13ec('0x3c')]=_[_0x13ec('0x3e')](_0x1b13ec['where'],{'$or':_[_0x13ec('0x32')](_0x1b13ec[_0x13ec('0x38')],function(_0xccf4a9){var _0x3116a9={};_0x3116a9[_0xccf4a9]={'$like':'%'+_0x2f19f1[_0x13ec('0x34')][_0x13ec('0x3d')]+'%'};return _0x3116a9;})});}_0x1b13ec=_[_0x13ec('0x3e')]({},_0x1b13ec,_0x2f19f1[_0x13ec('0x3f')]);return db[_0x13ec('0x57')][_0x13ec('0x1f')]({'where':_0x1b13ec[_0x13ec('0x3c')]})[_0x13ec('0x25')](function(_0xae31e4){_0x1caeff[_0x13ec('0x1f')]=_0xae31e4;if(_0x2f19f1[_0x13ec('0x34')][_0x13ec('0x40')]){_0x1b13ec[_0x13ec('0x41')]=[{'all':!![]}];}return db['CmHopper'][_0x13ec('0x5c')](_0x1b13ec);})['then'](function(_0x40ffc2){_0x1caeff[_0x13ec('0x42')]=_0x40ffc2;return _0x1caeff;});}})[_0x13ec('0x25')](respondWithFilteredResult(_0x4d00d4,_0x1b13ec))[_0x13ec('0x43')](handleError(_0x4d00d4,null));};exports[_0x13ec('0x5d')]=function(_0x3ac9fc,_0x47f827,_0x49e2da){var _0x3ca479={'raw':!![],'where':{}};var _0xfecec6={};var _0x103d7={'count':0x0,'rows':[]};return db[_0x13ec('0x2c')][_0x13ec('0x56')]({'where':{'id':_0x3ac9fc[_0x13ec('0x54')]['id']}})[_0x13ec('0x25')](handleEntityNotFound(_0x47f827,null))['then'](function(_0x214f63){if(_0x214f63){_0xfecec6[_0x13ec('0x31')]=_[_0x13ec('0x33')](db[_0x13ec('0x5e')][_0x13ec('0x2d')]);_0xfecec6[_0x13ec('0x34')]=_[_0x13ec('0x33')](_0x3ac9fc['query']);_0xfecec6[_0x13ec('0x35')]=_[_0x13ec('0x36')](_0xfecec6[_0x13ec('0x31')],_0xfecec6[_0x13ec('0x34')]);_0x3ca479[_0x13ec('0x38')]=_[_0x13ec('0x36')](_0xfecec6[_0x13ec('0x31')],qs[_0x13ec('0x37')](_0x3ac9fc['query'][_0x13ec('0x37')]));_0x3ca479[_0x13ec('0x38')]=_0x3ca479[_0x13ec('0x38')][_0x13ec('0x39')]?_0x3ca479[_0x13ec('0x38')]:_0xfecec6[_0x13ec('0x31')];if(!_0x3ac9fc[_0x13ec('0x34')][_0x13ec('0x3a')](_0x13ec('0x58'))){_0x3ca479['limit']=qs[_0x13ec('0x1e')](_0x3ac9fc[_0x13ec('0x34')]['limit']);_0x3ca479[_0x13ec('0x20')]=qs[_0x13ec('0x20')](_0x3ac9fc['query'][_0x13ec('0x20')]);}_0x3ca479['order']=qs[_0x13ec('0x3b')](_0x3ac9fc[_0x13ec('0x34')][_0x13ec('0x3b')]);_0x3ca479[_0x13ec('0x3c')]=qs[_0x13ec('0x35')](_['pick'](_0x3ac9fc['query'],_0xfecec6['filters']));_0x3ca479['where'][_0x13ec('0x5b')]=_0x214f63['id'];if(_0x3ac9fc[_0x13ec('0x34')]['filter']){_0x3ca479[_0x13ec('0x3c')]=_['merge'](_0x3ca479[_0x13ec('0x3c')],{'$or':_[_0x13ec('0x32')](_0x3ca479[_0x13ec('0x38')],function(_0x7c1ffe){var _0xa6e8da={};_0xa6e8da[_0x7c1ffe]={'$like':'%'+_0x3ac9fc[_0x13ec('0x34')][_0x13ec('0x3d')]+'%'};return _0xa6e8da;})});}_0x3ca479=_[_0x13ec('0x3e')]({},_0x3ca479,_0x3ac9fc[_0x13ec('0x3f')]);return db[_0x13ec('0x5e')]['count']({'where':_0x3ca479[_0x13ec('0x3c')]})[_0x13ec('0x25')](function(_0x2cdd2d){_0x103d7[_0x13ec('0x1f')]=_0x2cdd2d;if(_0x3ac9fc['query'][_0x13ec('0x40')]){_0x3ca479[_0x13ec('0x41')]=[{'all':!![]}];}return db[_0x13ec('0x5e')][_0x13ec('0x5c')](_0x3ca479);})[_0x13ec('0x25')](function(_0x55fc30){_0x103d7[_0x13ec('0x42')]=_0x55fc30;return _0x103d7;});}})[_0x13ec('0x25')](respondWithFilteredResult(_0x47f827,_0x3ca479))['catch'](handleError(_0x47f827,null));};exports['getHopperFinals']=function(_0x3ce6ee,_0x218f16,_0x2be84e){var _0x975420={'raw':!![],'where':{}};var _0x1458c3={};var _0x48aba1={'count':0x0,'rows':[]};return db['Campaign'][_0x13ec('0x56')]({'where':{'id':_0x3ce6ee['params']['id']}})[_0x13ec('0x25')](handleEntityNotFound(_0x218f16,null))[_0x13ec('0x25')](function(_0xdec937){if(_0xdec937){_0x1458c3[_0x13ec('0x31')]=_[_0x13ec('0x33')](db[_0x13ec('0x5f')][_0x13ec('0x2d')]);_0x1458c3[_0x13ec('0x34')]=_[_0x13ec('0x33')](_0x3ce6ee['query']);_0x1458c3[_0x13ec('0x35')]=_[_0x13ec('0x36')](_0x1458c3[_0x13ec('0x31')],_0x1458c3[_0x13ec('0x34')]);_0x975420[_0x13ec('0x38')]=_[_0x13ec('0x36')](_0x1458c3[_0x13ec('0x31')],qs[_0x13ec('0x37')](_0x3ce6ee['query'][_0x13ec('0x37')]));_0x975420['attributes']=_0x975420[_0x13ec('0x38')][_0x13ec('0x39')]?_0x975420[_0x13ec('0x38')]:_0x1458c3[_0x13ec('0x31')];if(!_0x3ce6ee[_0x13ec('0x34')][_0x13ec('0x3a')](_0x13ec('0x58'))){_0x975420['limit']=qs[_0x13ec('0x1e')](_0x3ce6ee[_0x13ec('0x34')][_0x13ec('0x1e')]);_0x975420['offset']=qs[_0x13ec('0x20')](_0x3ce6ee[_0x13ec('0x34')][_0x13ec('0x20')]);}_0x975420[_0x13ec('0x59')]=qs[_0x13ec('0x3b')](_0x3ce6ee[_0x13ec('0x34')][_0x13ec('0x3b')]);_0x975420[_0x13ec('0x3c')]=qs[_0x13ec('0x35')](_['pick'](_0x3ce6ee[_0x13ec('0x34')],_0x1458c3[_0x13ec('0x35')]));_0x975420[_0x13ec('0x3c')][_0x13ec('0x5b')]=_0xdec937['id'];if(_0x3ce6ee[_0x13ec('0x34')][_0x13ec('0x3d')]){_0x975420[_0x13ec('0x3c')]=_['merge'](_0x975420[_0x13ec('0x3c')],{'$or':_[_0x13ec('0x32')](_0x975420['attributes'],function(_0x1cd815){var _0x565371={};_0x565371[_0x1cd815]={'$like':'%'+_0x3ce6ee[_0x13ec('0x34')][_0x13ec('0x3d')]+'%'};return _0x565371;})});}_0x975420=_[_0x13ec('0x3e')]({},_0x975420,_0x3ce6ee['options']);return db[_0x13ec('0x5f')]['count']({'where':_0x975420[_0x13ec('0x3c')]})[_0x13ec('0x25')](function(_0x5578f2){_0x48aba1['count']=_0x5578f2;if(_0x3ce6ee['query'][_0x13ec('0x40')]){_0x975420[_0x13ec('0x41')]=[{'all':!![]}];}return db['CmHopperFinal'][_0x13ec('0x5c')](_0x975420);})[_0x13ec('0x25')](function(_0x11a1d2){_0x48aba1[_0x13ec('0x42')]=_0x11a1d2;return _0x48aba1;});}})[_0x13ec('0x25')](respondWithFilteredResult(_0x218f16,_0x975420))[_0x13ec('0x43')](handleError(_0x218f16,null));};exports[_0x13ec('0x60')]=function(_0x141cdf,_0x55ade9,_0x56b759){var _0x4546dd={'raw':!![],'where':{}};var _0x3588f5={};var _0x4a42d4={'count':0x0,'rows':[]};return db[_0x13ec('0x2c')]['findOne']({'where':{'id':_0x141cdf[_0x13ec('0x54')]['id']}})[_0x13ec('0x25')](handleEntityNotFound(_0x55ade9,null))['then'](function(_0xf6c5a7){if(_0xf6c5a7){_0x3588f5[_0x13ec('0x31')]=_[_0x13ec('0x33')](db[_0x13ec('0x61')][_0x13ec('0x2d')]);_0x3588f5[_0x13ec('0x34')]=_[_0x13ec('0x33')](_0x141cdf['query']);_0x3588f5['filters']=_[_0x13ec('0x36')](_0x3588f5['model'],_0x3588f5[_0x13ec('0x34')]);_0x4546dd[_0x13ec('0x38')]=_[_0x13ec('0x36')](_0x3588f5[_0x13ec('0x31')],qs['fields'](_0x141cdf['query'][_0x13ec('0x37')]));_0x4546dd[_0x13ec('0x38')]=_0x4546dd['attributes'][_0x13ec('0x39')]?_0x4546dd[_0x13ec('0x38')]:_0x3588f5[_0x13ec('0x31')];if(!_0x141cdf['query'][_0x13ec('0x3a')](_0x13ec('0x58'))){_0x4546dd[_0x13ec('0x1e')]=qs[_0x13ec('0x1e')](_0x141cdf['query'][_0x13ec('0x1e')]);_0x4546dd[_0x13ec('0x20')]=qs[_0x13ec('0x20')](_0x141cdf[_0x13ec('0x34')][_0x13ec('0x20')]);}_0x4546dd['order']=qs['sort'](_0x141cdf[_0x13ec('0x34')][_0x13ec('0x3b')]);_0x4546dd['where']=qs[_0x13ec('0x35')](_[_0x13ec('0x5a')](_0x141cdf[_0x13ec('0x34')],_0x3588f5[_0x13ec('0x35')]));_0x4546dd[_0x13ec('0x3c')]['CampaignId']=_0xf6c5a7['id'];if(_0x141cdf[_0x13ec('0x34')][_0x13ec('0x3d')]){_0x4546dd[_0x13ec('0x3c')]=_[_0x13ec('0x3e')](_0x4546dd['where'],{'$or':_[_0x13ec('0x32')](_0x4546dd[_0x13ec('0x38')],function(_0x1b20d6){var _0x503d89={};_0x503d89[_0x1b20d6]={'$like':'%'+_0x141cdf[_0x13ec('0x34')]['filter']+'%'};return _0x503d89;})});}_0x4546dd=_[_0x13ec('0x3e')]({},_0x4546dd,_0x141cdf['options']);return db[_0x13ec('0x61')][_0x13ec('0x1f')]({'where':_0x4546dd[_0x13ec('0x3c')]})[_0x13ec('0x25')](function(_0x36146b){_0x4a42d4['count']=_0x36146b;if(_0x141cdf[_0x13ec('0x34')][_0x13ec('0x40')]){_0x4546dd['include']=[{'all':!![]}];}return db[_0x13ec('0x61')]['findAll'](_0x4546dd);})['then'](function(_0x79ff){_0x4a42d4[_0x13ec('0x42')]=_0x79ff;return _0x4a42d4;});}})[_0x13ec('0x25')](respondWithFilteredResult(_0x55ade9,_0x4546dd))[_0x13ec('0x43')](handleError(_0x55ade9,null));};exports[_0x13ec('0x62')]=function(_0x4d5e79,_0x5b82d8,_0x35711f){var _0x1fd1aa={};var _0x3e50e6={};var _0x1879b4;var _0x441971;return db[_0x13ec('0x2c')][_0x13ec('0x56')]({'where':{'id':_0x4d5e79[_0x13ec('0x54')]['id']}})[_0x13ec('0x25')](handleEntityNotFound(_0x5b82d8,null))[_0x13ec('0x25')](function(_0x21774c){if(_0x21774c){_0x1879b4=_0x21774c;_0x3e50e6[_0x13ec('0x31')]=_[_0x13ec('0x33')](db[_0x13ec('0x63')]['rawAttributes']);_0x3e50e6[_0x13ec('0x34')]=_[_0x13ec('0x33')](_0x4d5e79['query']);_0x3e50e6[_0x13ec('0x35')]=_[_0x13ec('0x36')](_0x3e50e6[_0x13ec('0x31')],_0x3e50e6[_0x13ec('0x34')]);_0x1fd1aa[_0x13ec('0x38')]=_[_0x13ec('0x36')](_0x3e50e6[_0x13ec('0x31')],qs[_0x13ec('0x37')](_0x4d5e79[_0x13ec('0x34')][_0x13ec('0x37')]));_0x1fd1aa['attributes']=_0x1fd1aa[_0x13ec('0x38')]['length']?_0x1fd1aa[_0x13ec('0x38')]:_0x3e50e6[_0x13ec('0x31')];_0x1fd1aa['order']=qs[_0x13ec('0x3b')](_0x4d5e79['query'][_0x13ec('0x3b')]);_0x1fd1aa[_0x13ec('0x3c')]=qs[_0x13ec('0x35')](_[_0x13ec('0x5a')](_0x4d5e79[_0x13ec('0x34')],_0x3e50e6[_0x13ec('0x35')]));if(_0x4d5e79[_0x13ec('0x34')]['filter']){_0x1fd1aa['where']=_[_0x13ec('0x3e')](_0x1fd1aa[_0x13ec('0x3c')],{'$or':_[_0x13ec('0x32')](_0x1fd1aa[_0x13ec('0x38')],function(_0x33e6de){var _0x389e29={};_0x389e29[_0x33e6de]={'$like':'%'+_0x4d5e79[_0x13ec('0x34')][_0x13ec('0x3d')]+'%'};return _0x389e29;})});}_0x1fd1aa=_['merge']({},_0x1fd1aa,_0x4d5e79['options']);return _0x1879b4[_0x13ec('0x62')](_0x1fd1aa);}})[_0x13ec('0x25')](function(_0x385afb){if(_0x385afb){_0x441971=_0x385afb[_0x13ec('0x39')];if(!_0x4d5e79[_0x13ec('0x34')]['hasOwnProperty'](_0x13ec('0x58'))){_0x1fd1aa[_0x13ec('0x1e')]=qs[_0x13ec('0x1e')](_0x4d5e79[_0x13ec('0x34')][_0x13ec('0x1e')]);_0x1fd1aa[_0x13ec('0x20')]=qs[_0x13ec('0x20')](_0x4d5e79[_0x13ec('0x34')][_0x13ec('0x20')]);}return _0x1879b4['getLists'](_0x1fd1aa);}})[_0x13ec('0x25')](function(_0x48fb7a){if(_0x48fb7a){return _0x48fb7a?{'count':_0x441971,'rows':_0x48fb7a}:null;}})[_0x13ec('0x25')](respondWithResult(_0x5b82d8,null))[_0x13ec('0x43')](handleError(_0x5b82d8,null));};exports['addLists']=function(_0x51412a,_0x422752,_0x225c02){var _0x46e099,_0x8abba8;return db[_0x13ec('0x2c')]['find']({'where':{'id':_0x51412a[_0x13ec('0x54')]['id']}})[_0x13ec('0x25')](handleEntityNotFound(_0x422752,null))[_0x13ec('0x25')](function(_0x2e9df3){if(_0x2e9df3){_0x8abba8=_0x2e9df3;return _0x2e9df3[_0x13ec('0x64')](_0x51412a['body'][_0x13ec('0x65')],_[_0x13ec('0x50')](_0x51412a['body'],[_0x13ec('0x65'),'id'])||{});}return null;})[_0x13ec('0x66')](function(_0x5828a8){var _0x403ee5;_0x46e099=_0x5828a8||[];var _0x104982=[];if(_0x5828a8){for(var _0x25546d=0x0;_0x25546d<_0x5828a8[_0x13ec('0x39')];_0x25546d+=0x1){var _0x180dc3=_0x5828a8[_0x25546d][_0x13ec('0x48')]({'plain':!![]});_0x8abba8[_0x13ec('0x67')]=_0x51412a[_0x13ec('0x46')][_0x13ec('0x67')]?_0x51412a[_0x13ec('0x46')]['dialCheckDuplicateType']:_0x8abba8['dialCheckDuplicateType'];switch(_0x8abba8[_0x13ec('0x67')]){case _0x13ec('0x68'):_0x403ee5=squel['insert']()[_0x13ec('0x69')]('cm_hopper')[_0x13ec('0x6a')]([_0x13ec('0x6b'),'scheduledAt',_0x13ec('0x6c'),_0x13ec('0x6d'),_0x13ec('0x5b'),_0x13ec('0x51'),_0x13ec('0x52')],squel[_0x13ec('0x6e')]()['field'](_0x13ec('0x6b'),_0x13ec('0x6b'))['field'](_0x13ec('0x6f'),_0x13ec('0x70'))[_0x13ec('0x71')]('id',_0x13ec('0x6c'))[_0x13ec('0x71')](_0x180dc3[_0x13ec('0x72')][_0x13ec('0x73')](),_0x13ec('0x6d'))[_0x13ec('0x71')](_0x51412a[_0x13ec('0x54')]['id'][_0x13ec('0x73')](),_0x13ec('0x5b'))['field'](_0x13ec('0x6f'),'createdAt')['field'](_0x13ec('0x6f'),_0x13ec('0x52'))[_0x13ec('0x74')](_0x13ec('0x75'))[_0x13ec('0x3c')](_0x13ec('0x76'))[_0x13ec('0x3c')](_0x13ec('0x77'),_0x180dc3[_0x13ec('0x72')]['toString']())['where'](_0x13ec('0x78'))['where'](_0x13ec('0x79'),squel[_0x13ec('0x6e')]()['field'](_0x13ec('0x7a'))[_0x13ec('0x74')]('cm_hopper_final')[_0x13ec('0x3c')](_0x13ec('0x7b'),_0x51412a[_0x13ec('0x54')]['id'][_0x13ec('0x73')]()))[_0x13ec('0x3c')](_0x13ec('0x79'),squel['select']()[_0x13ec('0x71')](_0x13ec('0x7c'))['from'](_0x13ec('0x7d'))[_0x13ec('0x3c')](_0x13ec('0x7b'),_0x51412a['params']['id'][_0x13ec('0x73')]())))[_0x13ec('0x73')]();break;case _0x13ec('0x7e'):_0x403ee5=squel[_0x13ec('0x7f')]()[_0x13ec('0x69')](_0x13ec('0x7d'))[_0x13ec('0x6a')](['phone',_0x13ec('0x70'),_0x13ec('0x6c'),_0x13ec('0x6d'),_0x13ec('0x5b'),_0x13ec('0x51'),_0x13ec('0x52')],squel['select']()[_0x13ec('0x71')]('phone','phone')[_0x13ec('0x71')](_0x13ec('0x6f'),'scheduledAt')[_0x13ec('0x71')]('id',_0x13ec('0x6c'))[_0x13ec('0x71')](_0x180dc3['CmListId'][_0x13ec('0x73')](),_0x13ec('0x6d'))[_0x13ec('0x71')](_0x51412a[_0x13ec('0x54')]['id']['toString'](),'CampaignId')['field'](_0x13ec('0x6f'),_0x13ec('0x51'))['field'](_0x13ec('0x6f'),_0x13ec('0x52'))[_0x13ec('0x74')]('cm_contacts')['where']('deletedAt\x20IS\x20NULL')['where'](_0x13ec('0x77'),_0x180dc3[_0x13ec('0x72')][_0x13ec('0x73')]())[_0x13ec('0x3c')]('phone\x20IS\x20NOT\x20NULL')[_0x13ec('0x3c')]('phone\x20NOT\x20IN\x20(?)',squel[_0x13ec('0x6e')]()[_0x13ec('0x71')](_0x13ec('0x7c'))[_0x13ec('0x74')](_0x13ec('0x7d'))[_0x13ec('0x3c')](_0x13ec('0x7b'),_0x51412a[_0x13ec('0x54')]['id'][_0x13ec('0x73')]())))[_0x13ec('0x73')]();break;default:_0x403ee5=squel[_0x13ec('0x7f')]()[_0x13ec('0x69')](_0x13ec('0x7d'))[_0x13ec('0x6a')]([_0x13ec('0x6b'),_0x13ec('0x70'),_0x13ec('0x6c'),'ListId','CampaignId','createdAt',_0x13ec('0x52')],squel[_0x13ec('0x6e')]()['field'](_0x13ec('0x6b'),_0x13ec('0x6b'))[_0x13ec('0x71')](_0x13ec('0x6f'),_0x13ec('0x70'))[_0x13ec('0x71')]('id',_0x13ec('0x6c'))[_0x13ec('0x71')](_0x180dc3['CmListId'][_0x13ec('0x73')](),_0x13ec('0x6d'))[_0x13ec('0x71')](_0x51412a[_0x13ec('0x54')]['id'][_0x13ec('0x73')](),'CampaignId')['field'](_0x13ec('0x6f'),_0x13ec('0x51'))[_0x13ec('0x71')]('NOW()',_0x13ec('0x52'))[_0x13ec('0x74')]('cm_contacts')['where'](_0x13ec('0x76'))[_0x13ec('0x3c')]('ListId\x20=\x20?',_0x180dc3['CmListId'][_0x13ec('0x73')]())[_0x13ec('0x3c')](_0x13ec('0x78')))[_0x13ec('0x73')]();}_0x104982[_0x13ec('0x80')](db[_0x13ec('0x81')][_0x13ec('0x34')](_0x403ee5));}return BPromise['all'](_0x104982);}})[_0x13ec('0x25')](function(){return _0x46e099;})['then'](respondWithResult(_0x422752,null))['catch'](handleError(_0x422752,null));};exports[_0x13ec('0x82')]=function(_0xfeba78,_0x101df9,_0xa3f0ae){return db['Campaign']['find']({'where':{'id':_0xfeba78['params']['id']}})[_0x13ec('0x25')](handleEntityNotFound(_0x101df9,null))[_0x13ec('0x25')](function(_0xe46e43){if(_0xe46e43){return _0xe46e43[_0x13ec('0x82')](_0xfeba78['query'][_0x13ec('0x65')]);}})['then'](function(_0x4c78db){if(_0x4c78db){return db['CmHopper'][_0x13ec('0x26')]({'where':{'ListId':_0xfeba78[_0x13ec('0x34')]['ids'],'CampaignId':_0xfeba78[_0x13ec('0x54')]['id']}})[_0x13ec('0x25')](function(){return _0x4c78db;});}})[_0x13ec('0x25')](respondWithStatusCode(_0x101df9,null))['catch'](handleError(_0x101df9,null));};exports['getBlackLists']=function(_0x261135,_0x3e3483,_0x4cd012){var _0x4b8154={};var _0x4769bd={};var _0x47dc8c;var _0x102433;return db[_0x13ec('0x2c')]['findOne']({'where':{'id':_0x261135['params']['id']}})[_0x13ec('0x25')](handleEntityNotFound(_0x3e3483,null))[_0x13ec('0x25')](function(_0xb134c2){if(_0xb134c2){_0x47dc8c=_0xb134c2;_0x4769bd[_0x13ec('0x31')]=_[_0x13ec('0x33')](db['CmList'][_0x13ec('0x2d')]);_0x4769bd[_0x13ec('0x34')]=_['keys'](_0x261135['query']);_0x4769bd[_0x13ec('0x35')]=_[_0x13ec('0x36')](_0x4769bd['model'],_0x4769bd[_0x13ec('0x34')]);_0x4b8154[_0x13ec('0x38')]=_[_0x13ec('0x36')](_0x4769bd['model'],qs['fields'](_0x261135[_0x13ec('0x34')][_0x13ec('0x37')]));_0x4b8154[_0x13ec('0x38')]=_0x4b8154[_0x13ec('0x38')][_0x13ec('0x39')]?_0x4b8154[_0x13ec('0x38')]:_0x4769bd[_0x13ec('0x31')];_0x4b8154['order']=qs['sort'](_0x261135[_0x13ec('0x34')][_0x13ec('0x3b')]);_0x4b8154[_0x13ec('0x3c')]=qs['filters'](_['pick'](_0x261135[_0x13ec('0x34')],_0x4769bd['filters']));if(_0x261135['query'][_0x13ec('0x3d')]){_0x4b8154[_0x13ec('0x3c')]=_['merge'](_0x4b8154['where'],{'$or':_['map'](_0x4b8154['attributes'],function(_0x4f4f75){var _0x3e7b15={};_0x3e7b15[_0x4f4f75]={'$like':'%'+_0x261135['query'][_0x13ec('0x3d')]+'%'};return _0x3e7b15;})});}_0x4b8154=_['merge']({},_0x4b8154,_0x261135[_0x13ec('0x3f')]);return _0x47dc8c[_0x13ec('0x83')](_0x4b8154);}})[_0x13ec('0x25')](function(_0x264c75){if(_0x264c75){_0x102433=_0x264c75[_0x13ec('0x39')];if(!_0x261135[_0x13ec('0x34')][_0x13ec('0x3a')](_0x13ec('0x58'))){_0x4b8154[_0x13ec('0x1e')]=qs[_0x13ec('0x1e')](_0x261135[_0x13ec('0x34')]['limit']);_0x4b8154[_0x13ec('0x20')]=qs[_0x13ec('0x20')](_0x261135[_0x13ec('0x34')][_0x13ec('0x20')]);}return _0x47dc8c['getBlackLists'](_0x4b8154);}})['then'](function(_0x338de1){if(_0x338de1){return _0x338de1?{'count':_0x102433,'rows':_0x338de1}:null;}})['then'](respondWithResult(_0x3e3483,null))[_0x13ec('0x43')](handleError(_0x3e3483,null));};exports[_0x13ec('0x84')]=function(_0x5adaed,_0xcc2355,_0x47ddc9){var _0x895575,_0x54ea16;return db[_0x13ec('0x2c')][_0x13ec('0x44')]({'where':{'id':_0x5adaed[_0x13ec('0x54')]['id']}})[_0x13ec('0x25')](handleEntityNotFound(_0xcc2355,null))['then'](function(_0x4c80ef){if(_0x4c80ef){_0x54ea16=_0x4c80ef;return _0x4c80ef[_0x13ec('0x84')](_0x5adaed['body'][_0x13ec('0x65')],_[_0x13ec('0x50')](_0x5adaed['body'],[_0x13ec('0x65'),'id'])||{});}return null;})[_0x13ec('0x66')](function(_0x3add41){var _0x275b0;_0x895575=_0x3add41||[];var _0x4de3bf=[];if(_0x3add41){for(var _0x1bf956=0x0;_0x1bf956<_0x3add41[_0x13ec('0x39')];_0x1bf956+=0x1){var _0x57143b=_0x3add41[_0x1bf956]['get']({'plain':!![]});_0x275b0=squel['insert']()[_0x13ec('0x69')]('cm_hopper_black')[_0x13ec('0x6a')]([_0x13ec('0x6b'),_0x13ec('0x6c'),_0x13ec('0x6d'),_0x13ec('0x5b'),_0x13ec('0x51'),_0x13ec('0x52')],squel[_0x13ec('0x6e')]()[_0x13ec('0x71')]('phone',_0x13ec('0x6b'))['field']('id',_0x13ec('0x6c'))[_0x13ec('0x71')](_0x57143b['CmListId']['toString'](),_0x13ec('0x6d'))['field'](_0x5adaed[_0x13ec('0x54')]['id'][_0x13ec('0x73')](),_0x13ec('0x5b'))['field']('NOW()','createdAt')[_0x13ec('0x71')]('NOW()',_0x13ec('0x52'))[_0x13ec('0x74')](_0x13ec('0x75'))['where']('deletedAt\x20IS\x20NULL')['where'](_0x13ec('0x77'),_0x57143b[_0x13ec('0x72')][_0x13ec('0x73')]())['where'](_0x13ec('0x78')))[_0x13ec('0x73')]();_0x4de3bf['push'](db['sequelize']['query'](_0x275b0));}return BPromise[_0x13ec('0x85')](_0x4de3bf);}})[_0x13ec('0x25')](function(){return _0x895575;})[_0x13ec('0x25')](respondWithResult(_0xcc2355,null))[_0x13ec('0x43')](handleError(_0xcc2355,null));};exports[_0x13ec('0x86')]=function(_0x4f63ac,_0x332dfc,_0x4bb12a){return db['Campaign']['find']({'where':{'id':_0x4f63ac[_0x13ec('0x54')]['id']}})[_0x13ec('0x25')](handleEntityNotFound(_0x332dfc,null))['then'](function(_0x5e52e2){if(_0x5e52e2){return _0x5e52e2[_0x13ec('0x86')](_0x4f63ac[_0x13ec('0x34')][_0x13ec('0x65')]);}})[_0x13ec('0x25')](function(_0x3bde6e){if(_0x3bde6e){return db[_0x13ec('0x61')][_0x13ec('0x26')]({'where':{'ListId':_0x4f63ac[_0x13ec('0x34')][_0x13ec('0x65')],'CampaignId':_0x4f63ac['params']['id']}})['then'](function(){return _0x3bde6e;});}})[_0x13ec('0x25')](respondWithStatusCode(_0x332dfc,null))[_0x13ec('0x43')](handleError(_0x332dfc,null));};
\ No newline at end of file
+var _0x055f=['push','sequelize','all','removeLists','getBlackLists','addBlackLists','cm_hopper_black','fromQuery','removeBlackLists','eml-format','rimraf','fast-json-patch','request-promise','moment','bluebird','mustache','util','sox','to-csv','fs-extra','crypto','jsforce','querystring','papaparse','../../components/auth/service','../../components/parsers/qs','api','../../config/utils','../../config/environment','../../config/license/util','status','end','json','undefined','count','offset','limit','set','Content-Range','apply','reject','update','then','destroy','get','IvrCampaigns','sendStatus','error','stack','send','index','map','Campaign','fieldName','type','key','model','query','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','pick','filter','merge','VIRTUAL','name','options','includeAll','include','findAll','rows','show','params','rawAttributes','keys','find','catch','create','body','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','autoAssociation','UserProfileResource','clone','omit','updatedAt','createdAt','UserProfileSection','userProfileId','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','findOne','CmHopper','getHopperHistories','CmHopperHistory','CampaignId','getHopperFinals','CmHopperFinal','getHopperBlacks','CmHopperBlack','getLists','CmList','addLists','ids','spread','dialCheckDuplicateType','always','insert','into','cm_hopper','select','field','phone','NOW()','ContactId','CmListId','toString','ListId','cm_contacts','deletedAt\x20IS\x20NULL','ListId\x20=\x20?','phone\x20IS\x20NOT\x20NULL','from','COALESCE(phone,\x27\x27)','onlyIfOpen','scheduledAt'];(function(_0x23eda3,_0x4d4bbb){var _0x3ffc87=function(_0xd2e2cb){while(--_0xd2e2cb){_0x23eda3['push'](_0x23eda3['shift']());}};_0x3ffc87(++_0x4d4bbb);}(_0x055f,0x113));var _0xf055=function(_0x441dfc,_0x1d856f){_0x441dfc=_0x441dfc-0x0;var _0x2c8bf6=_0x055f[_0x441dfc];return _0x2c8bf6;};'use strict';var emlformat=require(_0xf055('0x0'));var rimraf=require(_0xf055('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0xf055('0x2'));var rp=require(_0xf055('0x3'));var moment=require(_0xf055('0x4'));var BPromise=require(_0xf055('0x5'));var Mustache=require(_0xf055('0x6'));var util=require(_0xf055('0x7'));var path=require('path');var sox=require(_0xf055('0x8'));var csv=require(_0xf055('0x9'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0xf055('0xa'));var _=require('lodash');var squel=require('squel');var crypto=require(_0xf055('0xb'));var jsforce=require(_0xf055('0xc'));var deskjs=require('desk.js');var toCsv=require(_0xf055('0x9'));var querystring=require(_0xf055('0xd'));var Papa=require(_0xf055('0xe'));var Redis=require('ioredis');var authService=require(_0xf055('0xf'));var qs=require(_0xf055('0x10'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require('../../config/license/hardware');var logger=require('../../config/logger')(_0xf055('0x11'));var utils=require(_0xf055('0x12'));var config=require(_0xf055('0x13'));var licenseUtil=require(_0xf055('0x14'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x5cba22,_0x5327cf){_0x5327cf=_0x5327cf||0xcc;return function(_0x596755){if(_0x596755){return _0x5cba22['sendStatus'](_0x5327cf);}return _0x5cba22[_0xf055('0x15')](_0x5327cf)[_0xf055('0x16')]();};}function respondWithResult(_0x4d39ca,_0x496de0){_0x496de0=_0x496de0||0xc8;return function(_0x2cd269){if(_0x2cd269){return _0x4d39ca['status'](_0x496de0)[_0xf055('0x17')](_0x2cd269);}};}function respondWithFilteredResult(_0x4f1193,_0x1f4fa3){return function(_0x589417){if(_0x589417){var _0x20185b=typeof _0x1f4fa3['offset']===_0xf055('0x18')&&typeof _0x1f4fa3['limit']===_0xf055('0x18');var _0x5a0b5e=_0x589417[_0xf055('0x19')];var _0x550f0e=_0x20185b?0x0:_0x1f4fa3[_0xf055('0x1a')];var _0x28155d=_0x20185b?_0x589417[_0xf055('0x19')]:_0x1f4fa3[_0xf055('0x1a')]+_0x1f4fa3[_0xf055('0x1b')];var _0x2cb8ac;if(_0x28155d>=_0x5a0b5e){_0x28155d=_0x5a0b5e;_0x2cb8ac=0xc8;}else{_0x2cb8ac=0xce;}_0x4f1193[_0xf055('0x15')](_0x2cb8ac);return _0x4f1193[_0xf055('0x1c')](_0xf055('0x1d'),_0x550f0e+'-'+_0x28155d+'/'+_0x5a0b5e)['json'](_0x589417);}return null;};}function patchUpdates(_0x121772){return function(_0x55c3f1){try{jsonpatch[_0xf055('0x1e')](_0x55c3f1,_0x121772,!![]);}catch(_0x48a323){return BPromise[_0xf055('0x1f')](_0x48a323);}return _0x55c3f1['save']();};}function saveUpdates(_0x3ca692,_0x4546f4){return function(_0x55079c){if(_0x55079c){return _0x55079c[_0xf055('0x20')](_0x3ca692)[_0xf055('0x21')](function(_0x248cce){return _0x248cce;});}return null;};}function removeEntity(_0x3f426c,_0xdef04){return function(_0x3b5f1f){if(_0x3b5f1f){return _0x3b5f1f[_0xf055('0x22')]()[_0xf055('0x21')](function(){var _0x471faf=_0x3b5f1f[_0xf055('0x23')]({'plain':!![]});var _0xf43d05=_0xf055('0x24');return db['UserProfileResource']['destroy']({'where':{'type':_0xf43d05,'resourceId':_0x471faf['id']}})[_0xf055('0x21')](function(){return _0x3b5f1f;});})[_0xf055('0x21')](function(){_0x3f426c[_0xf055('0x15')](0xcc)[_0xf055('0x16')]();});}};}function handleEntityNotFound(_0x2b507d,_0x450d22){return function(_0x3e8774){if(!_0x3e8774){_0x2b507d[_0xf055('0x25')](0x194);}return _0x3e8774;};}function handleError(_0x477781,_0xc0b0f6){_0xc0b0f6=_0xc0b0f6||0x1f4;return function(_0x46e92b){logger[_0xf055('0x26')](_0x46e92b[_0xf055('0x27')]);if(_0x46e92b['name']){delete _0x46e92b['name'];}_0x477781[_0xf055('0x15')](_0xc0b0f6)[_0xf055('0x28')](_0x46e92b);};}exports[_0xf055('0x29')]=function(_0x442447,_0x596c39){var _0x53345e={},_0x38dcd4={},_0x511f48={'count':0x0,'rows':[]};var _0x44e704=_[_0xf055('0x2a')](db[_0xf055('0x2b')]['rawAttributes'],function(_0x46dddc){return{'name':_0x46dddc[_0xf055('0x2c')],'type':_0x46dddc[_0xf055('0x2d')][_0xf055('0x2e')]};});_0x38dcd4[_0xf055('0x2f')]=_[_0xf055('0x2a')](_0x44e704,'name');_0x38dcd4['query']=_['keys'](_0x442447[_0xf055('0x30')]);_0x38dcd4[_0xf055('0x31')]=_[_0xf055('0x32')](_0x38dcd4[_0xf055('0x2f')],_0x38dcd4[_0xf055('0x30')]);_0x53345e[_0xf055('0x33')]=_[_0xf055('0x32')](_0x38dcd4[_0xf055('0x2f')],qs[_0xf055('0x34')](_0x442447[_0xf055('0x30')][_0xf055('0x34')]));_0x53345e[_0xf055('0x33')]=_0x53345e['attributes'][_0xf055('0x35')]?_0x53345e[_0xf055('0x33')]:_0x38dcd4['model'];if(!_0x442447[_0xf055('0x30')][_0xf055('0x36')](_0xf055('0x37'))){_0x53345e['limit']=qs[_0xf055('0x1b')](_0x442447[_0xf055('0x30')]['limit']);_0x53345e[_0xf055('0x1a')]=qs[_0xf055('0x1a')](_0x442447[_0xf055('0x30')]['offset']);}_0x53345e[_0xf055('0x38')]=qs[_0xf055('0x39')](_0x442447[_0xf055('0x30')][_0xf055('0x39')]);_0x53345e[_0xf055('0x3a')]=qs[_0xf055('0x31')](_[_0xf055('0x3b')](_0x442447[_0xf055('0x30')],_0x38dcd4[_0xf055('0x31')]),_0x44e704);if(_0x442447[_0xf055('0x30')][_0xf055('0x3c')]){_0x53345e['where']=_[_0xf055('0x3d')](_0x53345e['where'],{'$or':_[_0xf055('0x2a')](_0x44e704,function(_0x4c36d7){if(_0x4c36d7['type']!==_0xf055('0x3e')){var _0x540171={};_0x540171[_0x4c36d7[_0xf055('0x3f')]]={'$like':'%'+_0x442447[_0xf055('0x30')][_0xf055('0x3c')]+'%'};return _0x540171;}})});}_0x53345e=_[_0xf055('0x3d')]({},_0x53345e,_0x442447[_0xf055('0x40')]);var _0x44da3f={'where':_0x53345e['where']};return db['Campaign'][_0xf055('0x19')](_0x44da3f)[_0xf055('0x21')](function(_0xcd17b2){_0x511f48[_0xf055('0x19')]=_0xcd17b2;if(_0x442447[_0xf055('0x30')][_0xf055('0x41')]){_0x53345e[_0xf055('0x42')]=[{'all':!![]}];}return db[_0xf055('0x2b')][_0xf055('0x43')](_0x53345e);})[_0xf055('0x21')](function(_0x245717){_0x511f48[_0xf055('0x44')]=_0x245717;return _0x511f48;})[_0xf055('0x21')](respondWithFilteredResult(_0x596c39,_0x53345e))['catch'](handleError(_0x596c39,null));};exports[_0xf055('0x45')]=function(_0x601669,_0x2c55cd){var _0x1a55b2={'raw':![],'where':{'id':_0x601669[_0xf055('0x46')]['id']}},_0x5b9b19={};_0x5b9b19['model']=_['keys'](db[_0xf055('0x2b')][_0xf055('0x47')]);_0x5b9b19[_0xf055('0x30')]=_[_0xf055('0x48')](_0x601669[_0xf055('0x30')]);_0x5b9b19['filters']=_[_0xf055('0x32')](_0x5b9b19[_0xf055('0x2f')],_0x5b9b19[_0xf055('0x30')]);_0x1a55b2[_0xf055('0x33')]=_[_0xf055('0x32')](_0x5b9b19[_0xf055('0x2f')],qs[_0xf055('0x34')](_0x601669[_0xf055('0x30')][_0xf055('0x34')]));_0x1a55b2[_0xf055('0x33')]=_0x1a55b2[_0xf055('0x33')][_0xf055('0x35')]?_0x1a55b2[_0xf055('0x33')]:_0x5b9b19[_0xf055('0x2f')];if(_0x601669[_0xf055('0x30')][_0xf055('0x41')]){_0x1a55b2[_0xf055('0x42')]=[{'all':!![]}];}_0x1a55b2=_[_0xf055('0x3d')]({},_0x1a55b2,_0x601669[_0xf055('0x40')]);return db[_0xf055('0x2b')][_0xf055('0x49')](_0x1a55b2)[_0xf055('0x21')](handleEntityNotFound(_0x2c55cd,null))['then'](respondWithResult(_0x2c55cd,null))[_0xf055('0x4a')](handleError(_0x2c55cd,null));};exports[_0xf055('0x4b')]=function(_0x4cca9c,_0x197b53){return db[_0xf055('0x2b')][_0xf055('0x4b')](_0x4cca9c[_0xf055('0x4c')],{})[_0xf055('0x21')](function(_0x4faf2d){var _0x3de1fe=_0x4cca9c[_0xf055('0x4d')][_0xf055('0x23')]({'plain':!![]});if(!_0x3de1fe)throw new Error(_0xf055('0x4e'));if(_0x3de1fe[_0xf055('0x4f')]===_0xf055('0x4d')){var _0x47f9b7=_0x4faf2d[_0xf055('0x23')]({'plain':!![]});var _0x59dfbf=_0xf055('0x24');return db['UserProfileSection']['find']({'where':{'name':_0x59dfbf,'userProfileId':_0x3de1fe['userProfileId']},'raw':!![]})[_0xf055('0x21')](function(_0x4cbda2){if(_0x4cbda2&&_0x4cbda2[_0xf055('0x50')]===0x0){return db[_0xf055('0x51')][_0xf055('0x4b')]({'name':_0x47f9b7[_0xf055('0x3f')],'resourceId':_0x47f9b7['id'],'type':_0x4cbda2[_0xf055('0x3f')],'sectionId':_0x4cbda2['id']},{})[_0xf055('0x21')](function(){return _0x4faf2d;});}else{return _0x4faf2d;}})[_0xf055('0x4a')](function(_0x3ce5e0){logger[_0xf055('0x26')]('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0x3ce5e0);throw _0x3ce5e0;});}return _0x4faf2d;})[_0xf055('0x21')](respondWithResult(_0x197b53,0xc9))[_0xf055('0x4a')](handleError(_0x197b53,null));};exports[_0xf055('0x52')]=function(_0x13f831,_0x499c33){var _0x46a9d8={'where':{'id':_0x13f831[_0xf055('0x46')]['id']}},_0x5c8efa={};_0x5c8efa[_0xf055('0x2f')]=_['keys'](db[_0xf055('0x2b')][_0xf055('0x47')]);_0x46a9d8[_0xf055('0x33')]=_[_0xf055('0x32')](_0x5c8efa[_0xf055('0x2f')],qs[_0xf055('0x34')](_0x13f831[_0xf055('0x30')][_0xf055('0x34')]));_0x46a9d8[_0xf055('0x33')]=_0x46a9d8[_0xf055('0x33')][_0xf055('0x35')]?_0x46a9d8['attributes']:_0x5c8efa[_0xf055('0x2f')];if(_0x13f831[_0xf055('0x30')][_0xf055('0x41')]){_0x46a9d8[_0xf055('0x42')]=[{'all':!![]}];}_0x46a9d8=_[_0xf055('0x3d')]({},_0x46a9d8,_0x13f831[_0xf055('0x40')]);return db[_0xf055('0x2b')][_0xf055('0x49')](_0x46a9d8)['then'](handleEntityNotFound(_0x499c33,null))[_0xf055('0x21')](function(_0x4ed352){if(_0x4ed352){var _0x5b7d93=_0x4ed352[_0xf055('0x23')]({'plain':!![]});_0x5b7d93=qs[_0xf055('0x53')](_0x5b7d93,['id','createdAt',_0xf055('0x54')]);_0x13f831[_0xf055('0x4c')]=_['omit'](_0x13f831[_0xf055('0x4c')],['id',_0xf055('0x55'),_0xf055('0x54')]);return db[_0xf055('0x2b')][_0xf055('0x4b')](_[_0xf055('0x3d')](_0x5b7d93,_0x13f831[_0xf055('0x4c')]),{'include':_0x13f831[_0xf055('0x30')][_0xf055('0x41')]?[{'all':!![]}]:undefined})[_0xf055('0x21')](function(_0x40780e){var _0x1373a9=_0x13f831['user'][_0xf055('0x23')]({'plain':!![]});if(!_0x1373a9)throw new Error(_0xf055('0x4e'));if(_0x1373a9[_0xf055('0x4f')]===_0xf055('0x4d')){var _0x118827=_0x40780e[_0xf055('0x23')]({'plain':!![]});var _0x51f46d=_0xf055('0x24');return db[_0xf055('0x56')][_0xf055('0x49')]({'where':{'name':_0x51f46d,'userProfileId':_0x1373a9[_0xf055('0x57')]},'raw':!![]})['then'](function(_0x4a2ae9){if(_0x4a2ae9&&_0x4a2ae9[_0xf055('0x50')]===0x0){return db[_0xf055('0x51')][_0xf055('0x4b')]({'name':_0x118827['name'],'resourceId':_0x118827['id'],'type':_0x4a2ae9[_0xf055('0x3f')],'sectionId':_0x4a2ae9['id']},{})[_0xf055('0x21')](function(){return _0x40780e;});}else{return _0x40780e;}})[_0xf055('0x4a')](function(_0x4c6278){logger[_0xf055('0x26')](_0xf055('0x58'),_0x4c6278);throw _0x4c6278;});}return _0x40780e;});}})[_0xf055('0x21')](respondWithResult(_0x499c33,0xc9))[_0xf055('0x4a')](handleError(_0x499c33,null));};exports['update']=function(_0x3d0640,_0x3adb95){if(_0x3d0640['body']['id']){delete _0x3d0640['body']['id'];}return db[_0xf055('0x2b')][_0xf055('0x49')]({'where':{'id':_0x3d0640[_0xf055('0x46')]['id']}})['then'](handleEntityNotFound(_0x3adb95,null))['then'](saveUpdates(_0x3d0640[_0xf055('0x4c')],null))[_0xf055('0x21')](respondWithResult(_0x3adb95,null))[_0xf055('0x4a')](handleError(_0x3adb95,null));};exports[_0xf055('0x22')]=function(_0x185ea6,_0x31c367){return db[_0xf055('0x2b')][_0xf055('0x49')]({'where':{'id':_0x185ea6['params']['id']}})[_0xf055('0x21')](handleEntityNotFound(_0x31c367,null))[_0xf055('0x21')](removeEntity(_0x31c367,null))['catch'](handleError(_0x31c367,null));};exports['getHoppers']=function(_0x85e6d0,_0x5d7aa1,_0x416640){var _0x459811={'raw':!![],'where':{}};var _0xd9c191={};var _0x1d82e6={'count':0x0,'rows':[]};return db['Campaign'][_0xf055('0x59')]({'where':{'id':_0x85e6d0[_0xf055('0x46')]['id']}})['then'](handleEntityNotFound(_0x5d7aa1,null))[_0xf055('0x21')](function(_0x302337){if(_0x302337){_0xd9c191['model']=_[_0xf055('0x48')](db['CmHopper']['rawAttributes']);_0xd9c191[_0xf055('0x30')]=_[_0xf055('0x48')](_0x85e6d0['query']);_0xd9c191[_0xf055('0x31')]=_[_0xf055('0x32')](_0xd9c191[_0xf055('0x2f')],_0xd9c191[_0xf055('0x30')]);_0x459811[_0xf055('0x33')]=_[_0xf055('0x32')](_0xd9c191[_0xf055('0x2f')],qs[_0xf055('0x34')](_0x85e6d0['query']['fields']));_0x459811[_0xf055('0x33')]=_0x459811['attributes'][_0xf055('0x35')]?_0x459811[_0xf055('0x33')]:_0xd9c191[_0xf055('0x2f')];if(!_0x85e6d0[_0xf055('0x30')][_0xf055('0x36')](_0xf055('0x37'))){_0x459811['limit']=qs['limit'](_0x85e6d0['query'][_0xf055('0x1b')]);_0x459811[_0xf055('0x1a')]=qs['offset'](_0x85e6d0['query'][_0xf055('0x1a')]);}_0x459811[_0xf055('0x38')]=qs[_0xf055('0x39')](_0x85e6d0['query'][_0xf055('0x39')]);_0x459811['where']=qs[_0xf055('0x31')](_[_0xf055('0x3b')](_0x85e6d0[_0xf055('0x30')],_0xd9c191[_0xf055('0x31')]));_0x459811[_0xf055('0x3a')]['CampaignId']=_0x302337['id'];if(_0x85e6d0[_0xf055('0x30')][_0xf055('0x3c')]){_0x459811['where']=_[_0xf055('0x3d')](_0x459811[_0xf055('0x3a')],{'$or':_[_0xf055('0x2a')](_0x459811['attributes'],function(_0x3f561f){var _0x240c0e={};_0x240c0e[_0x3f561f]={'$like':'%'+_0x85e6d0[_0xf055('0x30')][_0xf055('0x3c')]+'%'};return _0x240c0e;})});}_0x459811=_['merge']({},_0x459811,_0x85e6d0[_0xf055('0x40')]);return db[_0xf055('0x5a')][_0xf055('0x19')]({'where':_0x459811[_0xf055('0x3a')]})[_0xf055('0x21')](function(_0x24581b){_0x1d82e6['count']=_0x24581b;if(_0x85e6d0['query'][_0xf055('0x41')]){_0x459811[_0xf055('0x42')]=[{'all':!![]}];}return db[_0xf055('0x5a')][_0xf055('0x43')](_0x459811);})['then'](function(_0x2882b5){_0x1d82e6[_0xf055('0x44')]=_0x2882b5;return _0x1d82e6;});}})['then'](respondWithFilteredResult(_0x5d7aa1,_0x459811))[_0xf055('0x4a')](handleError(_0x5d7aa1,null));};exports[_0xf055('0x5b')]=function(_0x373340,_0x14cf77,_0x180c77){var _0x2e6878={'raw':!![],'where':{}};var _0x125588={};var _0x34d94e={'count':0x0,'rows':[]};return db[_0xf055('0x2b')][_0xf055('0x59')]({'where':{'id':_0x373340[_0xf055('0x46')]['id']}})[_0xf055('0x21')](handleEntityNotFound(_0x14cf77,null))['then'](function(_0x524df0){if(_0x524df0){_0x125588[_0xf055('0x2f')]=_[_0xf055('0x48')](db[_0xf055('0x5c')][_0xf055('0x47')]);_0x125588['query']=_['keys'](_0x373340[_0xf055('0x30')]);_0x125588[_0xf055('0x31')]=_[_0xf055('0x32')](_0x125588[_0xf055('0x2f')],_0x125588[_0xf055('0x30')]);_0x2e6878[_0xf055('0x33')]=_[_0xf055('0x32')](_0x125588['model'],qs[_0xf055('0x34')](_0x373340[_0xf055('0x30')]['fields']));_0x2e6878[_0xf055('0x33')]=_0x2e6878[_0xf055('0x33')]['length']?_0x2e6878['attributes']:_0x125588[_0xf055('0x2f')];if(!_0x373340['query'][_0xf055('0x36')](_0xf055('0x37'))){_0x2e6878['limit']=qs[_0xf055('0x1b')](_0x373340[_0xf055('0x30')][_0xf055('0x1b')]);_0x2e6878['offset']=qs[_0xf055('0x1a')](_0x373340[_0xf055('0x30')]['offset']);}_0x2e6878['order']=qs[_0xf055('0x39')](_0x373340[_0xf055('0x30')]['sort']);_0x2e6878[_0xf055('0x3a')]=qs[_0xf055('0x31')](_['pick'](_0x373340[_0xf055('0x30')],_0x125588[_0xf055('0x31')]));_0x2e6878[_0xf055('0x3a')][_0xf055('0x5d')]=_0x524df0['id'];if(_0x373340[_0xf055('0x30')][_0xf055('0x3c')]){_0x2e6878[_0xf055('0x3a')]=_[_0xf055('0x3d')](_0x2e6878[_0xf055('0x3a')],{'$or':_['map'](_0x2e6878['attributes'],function(_0x1aa135){var _0x4f9cb3={};_0x4f9cb3[_0x1aa135]={'$like':'%'+_0x373340[_0xf055('0x30')]['filter']+'%'};return _0x4f9cb3;})});}_0x2e6878=_['merge']({},_0x2e6878,_0x373340[_0xf055('0x40')]);return db[_0xf055('0x5c')][_0xf055('0x19')]({'where':_0x2e6878[_0xf055('0x3a')]})[_0xf055('0x21')](function(_0x141c0b){_0x34d94e[_0xf055('0x19')]=_0x141c0b;if(_0x373340[_0xf055('0x30')]['includeAll']){_0x2e6878[_0xf055('0x42')]=[{'all':!![]}];}return db[_0xf055('0x5c')][_0xf055('0x43')](_0x2e6878);})[_0xf055('0x21')](function(_0x32a906){_0x34d94e[_0xf055('0x44')]=_0x32a906;return _0x34d94e;});}})[_0xf055('0x21')](respondWithFilteredResult(_0x14cf77,_0x2e6878))[_0xf055('0x4a')](handleError(_0x14cf77,null));};exports[_0xf055('0x5e')]=function(_0xc0ce83,_0x5da616,_0xa541a0){var _0x325115={'raw':!![],'where':{}};var _0x547b9b={};var _0xfb82dc={'count':0x0,'rows':[]};return db[_0xf055('0x2b')]['findOne']({'where':{'id':_0xc0ce83[_0xf055('0x46')]['id']}})[_0xf055('0x21')](handleEntityNotFound(_0x5da616,null))[_0xf055('0x21')](function(_0x21966c){if(_0x21966c){_0x547b9b[_0xf055('0x2f')]=_[_0xf055('0x48')](db['CmHopperFinal'][_0xf055('0x47')]);_0x547b9b[_0xf055('0x30')]=_[_0xf055('0x48')](_0xc0ce83[_0xf055('0x30')]);_0x547b9b['filters']=_['intersection'](_0x547b9b[_0xf055('0x2f')],_0x547b9b['query']);_0x325115[_0xf055('0x33')]=_['intersection'](_0x547b9b[_0xf055('0x2f')],qs[_0xf055('0x34')](_0xc0ce83[_0xf055('0x30')][_0xf055('0x34')]));_0x325115[_0xf055('0x33')]=_0x325115[_0xf055('0x33')][_0xf055('0x35')]?_0x325115[_0xf055('0x33')]:_0x547b9b[_0xf055('0x2f')];if(!_0xc0ce83[_0xf055('0x30')][_0xf055('0x36')](_0xf055('0x37'))){_0x325115['limit']=qs['limit'](_0xc0ce83[_0xf055('0x30')][_0xf055('0x1b')]);_0x325115[_0xf055('0x1a')]=qs[_0xf055('0x1a')](_0xc0ce83[_0xf055('0x30')][_0xf055('0x1a')]);}_0x325115[_0xf055('0x38')]=qs['sort'](_0xc0ce83[_0xf055('0x30')][_0xf055('0x39')]);_0x325115[_0xf055('0x3a')]=qs['filters'](_['pick'](_0xc0ce83[_0xf055('0x30')],_0x547b9b[_0xf055('0x31')]));_0x325115[_0xf055('0x3a')][_0xf055('0x5d')]=_0x21966c['id'];if(_0xc0ce83[_0xf055('0x30')][_0xf055('0x3c')]){_0x325115[_0xf055('0x3a')]=_[_0xf055('0x3d')](_0x325115[_0xf055('0x3a')],{'$or':_[_0xf055('0x2a')](_0x325115['attributes'],function(_0x12e2bb){var _0x7336d1={};_0x7336d1[_0x12e2bb]={'$like':'%'+_0xc0ce83[_0xf055('0x30')][_0xf055('0x3c')]+'%'};return _0x7336d1;})});}_0x325115=_['merge']({},_0x325115,_0xc0ce83[_0xf055('0x40')]);return db[_0xf055('0x5f')]['count']({'where':_0x325115['where']})['then'](function(_0x1c82de){_0xfb82dc[_0xf055('0x19')]=_0x1c82de;if(_0xc0ce83['query'][_0xf055('0x41')]){_0x325115[_0xf055('0x42')]=[{'all':!![]}];}return db[_0xf055('0x5f')][_0xf055('0x43')](_0x325115);})[_0xf055('0x21')](function(_0x14e60d){_0xfb82dc[_0xf055('0x44')]=_0x14e60d;return _0xfb82dc;});}})[_0xf055('0x21')](respondWithFilteredResult(_0x5da616,_0x325115))[_0xf055('0x4a')](handleError(_0x5da616,null));};exports[_0xf055('0x60')]=function(_0x4c0676,_0x160145,_0x3e01f6){var _0x275bca={'raw':!![],'where':{}};var _0x32fd5a={};var _0x2e1508={'count':0x0,'rows':[]};return db[_0xf055('0x2b')][_0xf055('0x59')]({'where':{'id':_0x4c0676['params']['id']}})[_0xf055('0x21')](handleEntityNotFound(_0x160145,null))[_0xf055('0x21')](function(_0xa9e201){if(_0xa9e201){_0x32fd5a[_0xf055('0x2f')]=_[_0xf055('0x48')](db[_0xf055('0x61')][_0xf055('0x47')]);_0x32fd5a[_0xf055('0x30')]=_['keys'](_0x4c0676['query']);_0x32fd5a['filters']=_[_0xf055('0x32')](_0x32fd5a[_0xf055('0x2f')],_0x32fd5a['query']);_0x275bca['attributes']=_[_0xf055('0x32')](_0x32fd5a[_0xf055('0x2f')],qs[_0xf055('0x34')](_0x4c0676[_0xf055('0x30')][_0xf055('0x34')]));_0x275bca[_0xf055('0x33')]=_0x275bca[_0xf055('0x33')]['length']?_0x275bca[_0xf055('0x33')]:_0x32fd5a[_0xf055('0x2f')];if(!_0x4c0676[_0xf055('0x30')][_0xf055('0x36')]('nolimit')){_0x275bca[_0xf055('0x1b')]=qs[_0xf055('0x1b')](_0x4c0676[_0xf055('0x30')][_0xf055('0x1b')]);_0x275bca[_0xf055('0x1a')]=qs['offset'](_0x4c0676[_0xf055('0x30')][_0xf055('0x1a')]);}_0x275bca['order']=qs[_0xf055('0x39')](_0x4c0676[_0xf055('0x30')][_0xf055('0x39')]);_0x275bca[_0xf055('0x3a')]=qs['filters'](_[_0xf055('0x3b')](_0x4c0676[_0xf055('0x30')],_0x32fd5a['filters']));_0x275bca['where'][_0xf055('0x5d')]=_0xa9e201['id'];if(_0x4c0676[_0xf055('0x30')][_0xf055('0x3c')]){_0x275bca[_0xf055('0x3a')]=_[_0xf055('0x3d')](_0x275bca['where'],{'$or':_[_0xf055('0x2a')](_0x275bca[_0xf055('0x33')],function(_0x223099){var _0x4f865c={};_0x4f865c[_0x223099]={'$like':'%'+_0x4c0676['query']['filter']+'%'};return _0x4f865c;})});}_0x275bca=_[_0xf055('0x3d')]({},_0x275bca,_0x4c0676[_0xf055('0x40')]);return db['CmHopperBlack'][_0xf055('0x19')]({'where':_0x275bca[_0xf055('0x3a')]})[_0xf055('0x21')](function(_0x19b0c4){_0x2e1508[_0xf055('0x19')]=_0x19b0c4;if(_0x4c0676[_0xf055('0x30')][_0xf055('0x41')]){_0x275bca[_0xf055('0x42')]=[{'all':!![]}];}return db['CmHopperBlack'][_0xf055('0x43')](_0x275bca);})[_0xf055('0x21')](function(_0x172568){_0x2e1508[_0xf055('0x44')]=_0x172568;return _0x2e1508;});}})[_0xf055('0x21')](respondWithFilteredResult(_0x160145,_0x275bca))[_0xf055('0x4a')](handleError(_0x160145,null));};exports[_0xf055('0x62')]=function(_0x1d7cf6,_0x266f7c,_0x6d9697){var _0x4a4fa2={};var _0x1446b8={};var _0x3087af;var _0x41644e;return db[_0xf055('0x2b')]['findOne']({'where':{'id':_0x1d7cf6[_0xf055('0x46')]['id']}})[_0xf055('0x21')](handleEntityNotFound(_0x266f7c,null))[_0xf055('0x21')](function(_0x25c6c5){if(_0x25c6c5){_0x3087af=_0x25c6c5;_0x1446b8['model']=_['keys'](db[_0xf055('0x63')][_0xf055('0x47')]);_0x1446b8['query']=_['keys'](_0x1d7cf6['query']);_0x1446b8[_0xf055('0x31')]=_[_0xf055('0x32')](_0x1446b8['model'],_0x1446b8['query']);_0x4a4fa2[_0xf055('0x33')]=_['intersection'](_0x1446b8[_0xf055('0x2f')],qs[_0xf055('0x34')](_0x1d7cf6[_0xf055('0x30')][_0xf055('0x34')]));_0x4a4fa2[_0xf055('0x33')]=_0x4a4fa2[_0xf055('0x33')]['length']?_0x4a4fa2['attributes']:_0x1446b8[_0xf055('0x2f')];_0x4a4fa2[_0xf055('0x38')]=qs['sort'](_0x1d7cf6[_0xf055('0x30')][_0xf055('0x39')]);_0x4a4fa2[_0xf055('0x3a')]=qs[_0xf055('0x31')](_['pick'](_0x1d7cf6['query'],_0x1446b8[_0xf055('0x31')]));if(_0x1d7cf6[_0xf055('0x30')]['filter']){_0x4a4fa2[_0xf055('0x3a')]=_[_0xf055('0x3d')](_0x4a4fa2['where'],{'$or':_[_0xf055('0x2a')](_0x4a4fa2['attributes'],function(_0x55ba55){var _0x15ad6c={};_0x15ad6c[_0x55ba55]={'$like':'%'+_0x1d7cf6['query'][_0xf055('0x3c')]+'%'};return _0x15ad6c;})});}_0x4a4fa2=_['merge']({},_0x4a4fa2,_0x1d7cf6[_0xf055('0x40')]);return _0x3087af[_0xf055('0x62')](_0x4a4fa2);}})[_0xf055('0x21')](function(_0x3a92d8){if(_0x3a92d8){_0x41644e=_0x3a92d8['length'];if(!_0x1d7cf6[_0xf055('0x30')][_0xf055('0x36')]('nolimit')){_0x4a4fa2[_0xf055('0x1b')]=qs[_0xf055('0x1b')](_0x1d7cf6[_0xf055('0x30')]['limit']);_0x4a4fa2[_0xf055('0x1a')]=qs[_0xf055('0x1a')](_0x1d7cf6[_0xf055('0x30')][_0xf055('0x1a')]);}return _0x3087af['getLists'](_0x4a4fa2);}})[_0xf055('0x21')](function(_0x28096b){if(_0x28096b){return _0x28096b?{'count':_0x41644e,'rows':_0x28096b}:null;}})[_0xf055('0x21')](respondWithResult(_0x266f7c,null))[_0xf055('0x4a')](handleError(_0x266f7c,null));};exports[_0xf055('0x64')]=function(_0x5da3c9,_0x2ca1e8,_0x1b9f06){var _0xf56293,_0x590953;return db[_0xf055('0x2b')][_0xf055('0x49')]({'where':{'id':_0x5da3c9['params']['id']}})['then'](handleEntityNotFound(_0x2ca1e8,null))[_0xf055('0x21')](function(_0x2b3ffb){if(_0x2b3ffb){_0x590953=_0x2b3ffb;return _0x2b3ffb['addLists'](_0x5da3c9['body'][_0xf055('0x65')],_[_0xf055('0x53')](_0x5da3c9[_0xf055('0x4c')],[_0xf055('0x65'),'id'])||{});}return null;})[_0xf055('0x66')](function(_0x249435){var _0x2ee427;_0xf56293=_0x249435||[];var _0x16559b=[];if(_0x249435){for(var _0x2696e6=0x0;_0x2696e6<_0x249435[_0xf055('0x35')];_0x2696e6+=0x1){var _0x33acc0=_0x249435[_0x2696e6]['get']({'plain':!![]});_0x590953[_0xf055('0x67')]=_0x5da3c9[_0xf055('0x4c')][_0xf055('0x67')]?_0x5da3c9['body'][_0xf055('0x67')]:_0x590953[_0xf055('0x67')];switch(_0x590953['dialCheckDuplicateType']){case _0xf055('0x68'):_0x2ee427=squel[_0xf055('0x69')]()[_0xf055('0x6a')](_0xf055('0x6b'))['fromQuery'](['phone','scheduledAt','ContactId','ListId',_0xf055('0x5d'),_0xf055('0x55'),_0xf055('0x54')],squel[_0xf055('0x6c')]()[_0xf055('0x6d')](_0xf055('0x6e'),_0xf055('0x6e'))[_0xf055('0x6d')](_0xf055('0x6f'),'scheduledAt')[_0xf055('0x6d')]('id',_0xf055('0x70'))[_0xf055('0x6d')](_0x33acc0[_0xf055('0x71')][_0xf055('0x72')](),_0xf055('0x73'))[_0xf055('0x6d')](_0x5da3c9[_0xf055('0x46')]['id']['toString'](),'CampaignId')[_0xf055('0x6d')]('NOW()',_0xf055('0x55'))[_0xf055('0x6d')](_0xf055('0x6f'),_0xf055('0x54'))['from'](_0xf055('0x74'))[_0xf055('0x3a')](_0xf055('0x75'))[_0xf055('0x3a')](_0xf055('0x76'),_0x33acc0[_0xf055('0x71')][_0xf055('0x72')]())['where'](_0xf055('0x77'))['where']('phone\x20NOT\x20IN\x20(?)',squel['select']()[_0xf055('0x6d')]('COALESCE(calleridnum,\x27\x27)')[_0xf055('0x78')]('cm_hopper_final')[_0xf055('0x3a')]('CampaignId\x20=\x20?',_0x5da3c9['params']['id'][_0xf055('0x72')]()))[_0xf055('0x3a')]('phone\x20NOT\x20IN\x20(?)',squel['select']()['field'](_0xf055('0x79'))['from']('cm_hopper')['where']('CampaignId\x20=\x20?',_0x5da3c9[_0xf055('0x46')]['id']['toString']())))[_0xf055('0x72')]();break;case _0xf055('0x7a'):_0x2ee427=squel['insert']()[_0xf055('0x6a')](_0xf055('0x6b'))['fromQuery']([_0xf055('0x6e'),_0xf055('0x7b'),'ContactId','ListId',_0xf055('0x5d'),_0xf055('0x55'),_0xf055('0x54')],squel[_0xf055('0x6c')]()['field'](_0xf055('0x6e'),'phone')[_0xf055('0x6d')]('NOW()','scheduledAt')[_0xf055('0x6d')]('id','ContactId')['field'](_0x33acc0['CmListId'][_0xf055('0x72')](),_0xf055('0x73'))['field'](_0x5da3c9[_0xf055('0x46')]['id']['toString'](),_0xf055('0x5d'))['field'](_0xf055('0x6f'),_0xf055('0x55'))[_0xf055('0x6d')]('NOW()',_0xf055('0x54'))['from'](_0xf055('0x74'))[_0xf055('0x3a')]('deletedAt\x20IS\x20NULL')['where'](_0xf055('0x76'),_0x33acc0[_0xf055('0x71')][_0xf055('0x72')]())['where'](_0xf055('0x77'))[_0xf055('0x3a')]('phone\x20NOT\x20IN\x20(?)',squel['select']()['field'](_0xf055('0x79'))['from'](_0xf055('0x6b'))[_0xf055('0x3a')]('CampaignId\x20=\x20?',_0x5da3c9[_0xf055('0x46')]['id']['toString']())))[_0xf055('0x72')]();break;default:_0x2ee427=squel[_0xf055('0x69')]()['into']('cm_hopper')['fromQuery']([_0xf055('0x6e'),_0xf055('0x7b'),_0xf055('0x70'),_0xf055('0x73'),_0xf055('0x5d'),_0xf055('0x55'),'updatedAt'],squel[_0xf055('0x6c')]()[_0xf055('0x6d')]('phone',_0xf055('0x6e'))[_0xf055('0x6d')](_0xf055('0x6f'),_0xf055('0x7b'))[_0xf055('0x6d')]('id',_0xf055('0x70'))[_0xf055('0x6d')](_0x33acc0[_0xf055('0x71')][_0xf055('0x72')](),_0xf055('0x73'))['field'](_0x5da3c9[_0xf055('0x46')]['id'][_0xf055('0x72')](),_0xf055('0x5d'))[_0xf055('0x6d')](_0xf055('0x6f'),'createdAt')[_0xf055('0x6d')]('NOW()','updatedAt')[_0xf055('0x78')](_0xf055('0x74'))[_0xf055('0x3a')](_0xf055('0x75'))[_0xf055('0x3a')]('ListId\x20=\x20?',_0x33acc0[_0xf055('0x71')][_0xf055('0x72')]())[_0xf055('0x3a')](_0xf055('0x77')))[_0xf055('0x72')]();}_0x16559b[_0xf055('0x7c')](db[_0xf055('0x7d')]['query'](_0x2ee427));}return BPromise[_0xf055('0x7e')](_0x16559b);}})[_0xf055('0x21')](function(){return _0xf56293;})['then'](respondWithResult(_0x2ca1e8,null))[_0xf055('0x4a')](handleError(_0x2ca1e8,null));};exports[_0xf055('0x7f')]=function(_0x51d77f,_0x23a9b7,_0x3ef940){return db[_0xf055('0x2b')][_0xf055('0x49')]({'where':{'id':_0x51d77f[_0xf055('0x46')]['id']}})[_0xf055('0x21')](handleEntityNotFound(_0x23a9b7,null))[_0xf055('0x21')](function(_0x517c8b){if(_0x517c8b){return _0x517c8b[_0xf055('0x7f')](_0x51d77f['query']['ids']);}})[_0xf055('0x21')](function(_0xe2791c){if(_0xe2791c){return db['CmHopper'][_0xf055('0x22')]({'where':{'ListId':_0x51d77f[_0xf055('0x30')][_0xf055('0x65')],'CampaignId':_0x51d77f['params']['id']}})[_0xf055('0x21')](function(){return _0xe2791c;});}})['then'](respondWithStatusCode(_0x23a9b7,null))[_0xf055('0x4a')](handleError(_0x23a9b7,null));};exports[_0xf055('0x80')]=function(_0x2664a4,_0x50f810,_0x43ebe1){var _0x1e3426={};var _0x43e30b={};var _0x97ef8d;var _0x35d6ab;return db[_0xf055('0x2b')][_0xf055('0x59')]({'where':{'id':_0x2664a4['params']['id']}})[_0xf055('0x21')](handleEntityNotFound(_0x50f810,null))['then'](function(_0x5bd6d9){if(_0x5bd6d9){_0x97ef8d=_0x5bd6d9;_0x43e30b['model']=_[_0xf055('0x48')](db[_0xf055('0x63')][_0xf055('0x47')]);_0x43e30b['query']=_[_0xf055('0x48')](_0x2664a4[_0xf055('0x30')]);_0x43e30b[_0xf055('0x31')]=_[_0xf055('0x32')](_0x43e30b[_0xf055('0x2f')],_0x43e30b[_0xf055('0x30')]);_0x1e3426[_0xf055('0x33')]=_[_0xf055('0x32')](_0x43e30b[_0xf055('0x2f')],qs[_0xf055('0x34')](_0x2664a4['query'][_0xf055('0x34')]));_0x1e3426[_0xf055('0x33')]=_0x1e3426[_0xf055('0x33')]['length']?_0x1e3426[_0xf055('0x33')]:_0x43e30b['model'];_0x1e3426[_0xf055('0x38')]=qs[_0xf055('0x39')](_0x2664a4[_0xf055('0x30')][_0xf055('0x39')]);_0x1e3426[_0xf055('0x3a')]=qs[_0xf055('0x31')](_[_0xf055('0x3b')](_0x2664a4[_0xf055('0x30')],_0x43e30b[_0xf055('0x31')]));if(_0x2664a4[_0xf055('0x30')]['filter']){_0x1e3426['where']=_[_0xf055('0x3d')](_0x1e3426[_0xf055('0x3a')],{'$or':_[_0xf055('0x2a')](_0x1e3426['attributes'],function(_0x49aea){var _0x30d255={};_0x30d255[_0x49aea]={'$like':'%'+_0x2664a4['query'][_0xf055('0x3c')]+'%'};return _0x30d255;})});}_0x1e3426=_[_0xf055('0x3d')]({},_0x1e3426,_0x2664a4['options']);return _0x97ef8d[_0xf055('0x80')](_0x1e3426);}})[_0xf055('0x21')](function(_0x5abe3d){if(_0x5abe3d){_0x35d6ab=_0x5abe3d[_0xf055('0x35')];if(!_0x2664a4[_0xf055('0x30')][_0xf055('0x36')]('nolimit')){_0x1e3426[_0xf055('0x1b')]=qs['limit'](_0x2664a4[_0xf055('0x30')][_0xf055('0x1b')]);_0x1e3426['offset']=qs[_0xf055('0x1a')](_0x2664a4[_0xf055('0x30')][_0xf055('0x1a')]);}return _0x97ef8d['getBlackLists'](_0x1e3426);}})[_0xf055('0x21')](function(_0x3dd78e){if(_0x3dd78e){return _0x3dd78e?{'count':_0x35d6ab,'rows':_0x3dd78e}:null;}})[_0xf055('0x21')](respondWithResult(_0x50f810,null))['catch'](handleError(_0x50f810,null));};exports[_0xf055('0x81')]=function(_0x37e8f9,_0xa7570b,_0x4a30d1){var _0x55e853,_0x506e21;return db['Campaign'][_0xf055('0x49')]({'where':{'id':_0x37e8f9[_0xf055('0x46')]['id']}})[_0xf055('0x21')](handleEntityNotFound(_0xa7570b,null))['then'](function(_0x56a20e){if(_0x56a20e){_0x506e21=_0x56a20e;return _0x56a20e[_0xf055('0x81')](_0x37e8f9[_0xf055('0x4c')][_0xf055('0x65')],_['omit'](_0x37e8f9[_0xf055('0x4c')],['ids','id'])||{});}return null;})[_0xf055('0x66')](function(_0x567a37){var _0x4c732d;_0x55e853=_0x567a37||[];var _0x30e443=[];if(_0x567a37){for(var _0x1a9fd2=0x0;_0x1a9fd2<_0x567a37[_0xf055('0x35')];_0x1a9fd2+=0x1){var _0x436498=_0x567a37[_0x1a9fd2][_0xf055('0x23')]({'plain':!![]});_0x4c732d=squel['insert']()[_0xf055('0x6a')](_0xf055('0x82'))[_0xf055('0x83')]([_0xf055('0x6e'),'ContactId','ListId','CampaignId',_0xf055('0x55'),'updatedAt'],squel[_0xf055('0x6c')]()['field'](_0xf055('0x6e'),'phone')[_0xf055('0x6d')]('id',_0xf055('0x70'))[_0xf055('0x6d')](_0x436498[_0xf055('0x71')]['toString'](),'ListId')['field'](_0x37e8f9['params']['id'][_0xf055('0x72')](),_0xf055('0x5d'))['field'](_0xf055('0x6f'),'createdAt')['field'](_0xf055('0x6f'),_0xf055('0x54'))[_0xf055('0x78')](_0xf055('0x74'))[_0xf055('0x3a')](_0xf055('0x75'))[_0xf055('0x3a')]('ListId\x20=\x20?',_0x436498['CmListId'][_0xf055('0x72')]())[_0xf055('0x3a')](_0xf055('0x77')))[_0xf055('0x72')]();_0x30e443[_0xf055('0x7c')](db[_0xf055('0x7d')][_0xf055('0x30')](_0x4c732d));}return BPromise[_0xf055('0x7e')](_0x30e443);}})[_0xf055('0x21')](function(){return _0x55e853;})[_0xf055('0x21')](respondWithResult(_0xa7570b,null))[_0xf055('0x4a')](handleError(_0xa7570b,null));};exports[_0xf055('0x84')]=function(_0x338338,_0x31e9a3,_0xddac88){return db['Campaign'][_0xf055('0x49')]({'where':{'id':_0x338338[_0xf055('0x46')]['id']}})['then'](handleEntityNotFound(_0x31e9a3,null))[_0xf055('0x21')](function(_0x59833f){if(_0x59833f){return _0x59833f[_0xf055('0x84')](_0x338338[_0xf055('0x30')]['ids']);}})['then'](function(_0x5e8722){if(_0x5e8722){return db[_0xf055('0x61')]['destroy']({'where':{'ListId':_0x338338['query'][_0xf055('0x65')],'CampaignId':_0x338338[_0xf055('0x46')]['id']}})['then'](function(){return _0x5e8722;});}})['then'](respondWithStatusCode(_0x31e9a3,null))[_0xf055('0x4a')](handleError(_0x31e9a3,null));};
\ No newline at end of file
index 721a49c..6830fb1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9957=['exports','define','Campaign','lodash','util','../../config/logger','api','bluebird','request-promise','path','rimraf','./campaign.attributes'];(function(_0x35da42,_0x5c2610){var _0x370035=function(_0x546db5){while(--_0x546db5){_0x35da42['push'](_0x35da42['shift']());}};_0x370035(++_0x5c2610);}(_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 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':'campaigns','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x9957=['exports','define','Campaign','lodash','util','../../config/logger','api','bluebird','request-promise','path','rimraf','./campaign.attributes'];(function(_0x5a3cf0,_0x160a68){var _0x5a64ee=function(_0x34cd1d){while(--_0x34cd1d){_0x5a3cf0['push'](_0x5a3cf0['shift']());}};_0x5a64ee(++_0x160a68);}(_0x9957,0x93));var _0x7995=function(_0x6c993a,_0x5ea3ab){_0x6c993a=_0x6c993a-0x0;var _0x27f547=_0x9957[_0x6c993a];return _0x27f547;};'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':'campaigns','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 45475ae..3f180c1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8fed=['include','model','map','then','catch','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/logger','rpc','../../config/environment','jayson/promise','client','request','info','Campaign,\x20%s,\x20%s','request\x20sent','debug','stringify','error','code','message','result','GetCampaign','options','where','attributes','limit'];(function(_0x5006ac,_0xf2f1fd){var _0x4095f1=function(_0x292779){while(--_0x292779){_0x5006ac['push'](_0x5006ac['shift']());}};_0x4095f1(++_0xf2f1fd);}(_0x8fed,0xf5));var _0xd8fe=function(_0x534799,_0x3719ae){_0x534799=_0x534799-0x0;var _0x14f6f3=_0x8fed[_0x534799];return _0x14f6f3;};'use strict';var _=require('lodash');var util=require('util');var moment=require(_0xd8fe('0x0'));var BPromise=require(_0xd8fe('0x1'));var rs=require(_0xd8fe('0x2'));var fs=require('fs');var Redis=require(_0xd8fe('0x3'));var db=require(_0xd8fe('0x4'))['db'];var utils=require('../../config/utils');var logger=require(_0xd8fe('0x5'))(_0xd8fe('0x6'));var config=require(_0xd8fe('0x7'));var jayson=require(_0xd8fe('0x8'));var client=jayson[_0xd8fe('0x9')]['http']({'port':0x232a});function respondWithRpcPromise(_0x7e3b94,_0x1747b3,_0xa33e22){return new BPromise(function(_0x26d33d,_0x5e48f9){return client[_0xd8fe('0xa')](_0x7e3b94,_0xa33e22)['then'](function(_0x410d44){logger[_0xd8fe('0xb')](_0xd8fe('0xc'),_0x1747b3,_0xd8fe('0xd'));logger[_0xd8fe('0xe')]('Campaign,\x20%s,\x20%s,\x20%s',_0x1747b3,_0xd8fe('0xd'),JSON[_0xd8fe('0xf')](_0x410d44));if(_0x410d44[_0xd8fe('0x10')]){if(_0x410d44['error'][_0xd8fe('0x11')]===0x1f4){logger['error'](_0xd8fe('0xc'),_0x1747b3,_0x410d44[_0xd8fe('0x10')][_0xd8fe('0x12')]);return _0x5e48f9(_0x410d44[_0xd8fe('0x10')][_0xd8fe('0x12')]);}logger['error'](_0xd8fe('0xc'),_0x1747b3,_0x410d44[_0xd8fe('0x10')]['message']);return _0x26d33d(_0x410d44[_0xd8fe('0x10')][_0xd8fe('0x12')]);}else{logger[_0xd8fe('0xb')](_0xd8fe('0xc'),_0x1747b3,_0xd8fe('0xd'));_0x26d33d(_0x410d44[_0xd8fe('0x13')][_0xd8fe('0x12')]);}})['catch'](function(_0x260a7f){logger['error'](_0xd8fe('0xc'),_0x1747b3,_0x260a7f);_0x5e48f9(_0x260a7f);});});}exports[_0xd8fe('0x14')]=function(_0x4cfb98){var _0x31a5d7=this;return new Promise(function(_0x4b7d9e,_0x52a8b6){return db['Campaign']['findAll']({'raw':_0x4cfb98['options']?_0x4cfb98[_0xd8fe('0x15')]['raw']===undefined?!![]:![]:!![],'where':_0x4cfb98[_0xd8fe('0x15')]?_0x4cfb98['options'][_0xd8fe('0x16')]||null:null,'attributes':_0x4cfb98['options']?_0x4cfb98[_0xd8fe('0x15')][_0xd8fe('0x17')]||null:null,'limit':_0x4cfb98[_0xd8fe('0x15')]?_0x4cfb98[_0xd8fe('0x15')][_0xd8fe('0x18')]||null:null,'include':_0x4cfb98[_0xd8fe('0x15')]?_0x4cfb98[_0xd8fe('0x15')][_0xd8fe('0x19')]?_['map'](_0x4cfb98[_0xd8fe('0x15')][_0xd8fe('0x19')],function(_0x19d4d1){return{'model':db[_0x19d4d1[_0xd8fe('0x1a')]],'as':_0x19d4d1['as'],'attributes':_0x19d4d1['attributes'],'include':_0x19d4d1[_0xd8fe('0x19')]?_[_0xd8fe('0x1b')](_0x19d4d1[_0xd8fe('0x19')],function(_0x130c16){return{'model':db[_0x130c16[_0xd8fe('0x1a')]],'as':_0x130c16['as'],'attributes':_0x130c16[_0xd8fe('0x17')],'include':_0x130c16['include']?_['map'](_0x130c16[_0xd8fe('0x19')],function(_0x22ef87){return{'model':db[_0x22ef87[_0xd8fe('0x1a')]],'as':_0x22ef87['as'],'attributes':_0x22ef87[_0xd8fe('0x17')]};}):[]};}):[]};}):[]:[]})[_0xd8fe('0x1c')](function(_0x1666e4){logger[_0xd8fe('0xb')](_0xd8fe('0x14'),_0x4cfb98);logger[_0xd8fe('0xe')](_0xd8fe('0x14'),_0x4cfb98,JSON[_0xd8fe('0xf')](_0x1666e4));_0x4b7d9e(_0x1666e4);})[_0xd8fe('0x1d')](function(_0x2c2767){logger[_0xd8fe('0x10')]('GetCampaign',_0x2c2767[_0xd8fe('0x12')],_0x4cfb98);_0x52a8b6(_0x31a5d7[_0xd8fe('0x10')](0x1f4,_0x2c2767[_0xd8fe('0x12')]));});});};
\ No newline at end of file
+var _0x50a8=['map','model','lodash','randomstring','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','request','then','info','debug','Campaign,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','Campaign,\x20%s,\x20%s','message','catch','GetCampaign','raw','options','attributes','limit','include'];(function(_0x4a9fb1,_0x273043){var _0x348672=function(_0x142b69){while(--_0x142b69){_0x4a9fb1['push'](_0x4a9fb1['shift']());}};_0x348672(++_0x273043);}(_0x50a8,0x198));var _0x850a=function(_0x459a0a,_0x25c46f){_0x459a0a=_0x459a0a-0x0;var _0x4ab46c=_0x50a8[_0x459a0a];return _0x4ab46c;};'use strict';var _=require(_0x850a('0x0'));var util=require('util');var moment=require('moment');var BPromise=require('bluebird');var rs=require(_0x850a('0x1'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x850a('0x2'))['db'];var utils=require(_0x850a('0x3'));var logger=require(_0x850a('0x4'))(_0x850a('0x5'));var config=require(_0x850a('0x6'));var jayson=require(_0x850a('0x7'));var client=jayson[_0x850a('0x8')][_0x850a('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x3fdb41,_0x543ef0,_0x488676){return new BPromise(function(_0x3c138a,_0xf4dcd1){return client[_0x850a('0xa')](_0x3fdb41,_0x488676)[_0x850a('0xb')](function(_0x5c197f){logger[_0x850a('0xc')]('Campaign,\x20%s,\x20%s',_0x543ef0,'request\x20sent');logger[_0x850a('0xd')](_0x850a('0xe'),_0x543ef0,_0x850a('0xf'),JSON[_0x850a('0x10')](_0x5c197f));if(_0x5c197f[_0x850a('0x11')]){if(_0x5c197f['error']['code']===0x1f4){logger['error'](_0x850a('0x12'),_0x543ef0,_0x5c197f['error'][_0x850a('0x13')]);return _0xf4dcd1(_0x5c197f[_0x850a('0x11')][_0x850a('0x13')]);}logger[_0x850a('0x11')](_0x850a('0x12'),_0x543ef0,_0x5c197f['error'][_0x850a('0x13')]);return _0x3c138a(_0x5c197f['error']['message']);}else{logger['info']('Campaign,\x20%s,\x20%s',_0x543ef0,_0x850a('0xf'));_0x3c138a(_0x5c197f['result'][_0x850a('0x13')]);}})[_0x850a('0x14')](function(_0x3c90e6){logger[_0x850a('0x11')](_0x850a('0x12'),_0x543ef0,_0x3c90e6);_0xf4dcd1(_0x3c90e6);});});}exports[_0x850a('0x15')]=function(_0x3e2715){var _0x419ae6=this;return new Promise(function(_0x57e789,_0x432a28){return db['Campaign']['findAll']({'raw':_0x3e2715['options']?_0x3e2715['options'][_0x850a('0x16')]===undefined?!![]:![]:!![],'where':_0x3e2715[_0x850a('0x17')]?_0x3e2715[_0x850a('0x17')]['where']||null:null,'attributes':_0x3e2715[_0x850a('0x17')]?_0x3e2715[_0x850a('0x17')][_0x850a('0x18')]||null:null,'limit':_0x3e2715['options']?_0x3e2715['options'][_0x850a('0x19')]||null:null,'include':_0x3e2715[_0x850a('0x17')]?_0x3e2715[_0x850a('0x17')][_0x850a('0x1a')]?_['map'](_0x3e2715['options']['include'],function(_0x4363d4){return{'model':db[_0x4363d4['model']],'as':_0x4363d4['as'],'attributes':_0x4363d4[_0x850a('0x18')],'include':_0x4363d4[_0x850a('0x1a')]?_[_0x850a('0x1b')](_0x4363d4['include'],function(_0x4606ef){return{'model':db[_0x4606ef[_0x850a('0x1c')]],'as':_0x4606ef['as'],'attributes':_0x4606ef[_0x850a('0x18')],'include':_0x4606ef['include']?_[_0x850a('0x1b')](_0x4606ef[_0x850a('0x1a')],function(_0x4d715c){return{'model':db[_0x4d715c[_0x850a('0x1c')]],'as':_0x4d715c['as'],'attributes':_0x4d715c[_0x850a('0x18')]};}):[]};}):[]};}):[]:[]})[_0x850a('0xb')](function(_0x468c6b){logger[_0x850a('0xc')](_0x850a('0x15'),_0x3e2715);logger[_0x850a('0xd')](_0x850a('0x15'),_0x3e2715,JSON[_0x850a('0x10')](_0x468c6b));_0x57e789(_0x468c6b);})[_0x850a('0x14')](function(_0x44fb58){logger[_0x850a('0x11')](_0x850a('0x15'),_0x44fb58[_0x850a('0x13')],_0x3e2715);_0x432a28(_0x419ae6[_0x850a('0x11')](0x1f4,_0x44fb58['message']));});});};
\ No newline at end of file
index 18a5c4e..2da8ffa 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8269=['getLists','/:id/blacklists','getBlackLists','post','/:id/clone','update','delete','destroy','exports','multer','util','path','Router','../../components/interaction/service','../../config/environment','./campaign.controller','isAuthenticated','index','get','/:id','show','getHoppers','/:id/hopper_histories','getHopperHistories','/:id/hopper_finals','getHopperFinals','/:id/hopper_black','/:id/lists'];(function(_0x1325e1,_0x42f844){var _0x3332ce=function(_0x2d23d4){while(--_0x2d23d4){_0x1325e1['push'](_0x1325e1['shift']());}};_0x3332ce(++_0x42f844);}(_0x8269,0x121));var _0x9826=function(_0x278e3c,_0x1c9cfd){_0x278e3c=_0x278e3c-0x0;var _0x3e2d9b=_0x8269[_0x278e3c];return _0x3e2d9b;};'use strict';var multer=require(_0x9826('0x0'));var util=require(_0x9826('0x1'));var path=require(_0x9826('0x2'));var timeout=require('connect-timeout');var express=require('express');var router=express[_0x9826('0x3')]();var fs_extra=require('fs-extra');var auth=require('../../components/auth/service');var interaction=require(_0x9826('0x4'));var config=require(_0x9826('0x5'));var controller=require(_0x9826('0x6'));router['get']('/',auth[_0x9826('0x7')](),controller[_0x9826('0x8')]);router[_0x9826('0x9')](_0x9826('0xa'),auth[_0x9826('0x7')](),controller[_0x9826('0xb')]);router[_0x9826('0x9')]('/:id/hoppers',auth[_0x9826('0x7')](),controller[_0x9826('0xc')]);router[_0x9826('0x9')](_0x9826('0xd'),auth['isAuthenticated'](),controller[_0x9826('0xe')]);router[_0x9826('0x9')](_0x9826('0xf'),auth[_0x9826('0x7')](),controller[_0x9826('0x10')]);router[_0x9826('0x9')](_0x9826('0x11'),auth[_0x9826('0x7')](),controller['getHopperBlacks']);router['get'](_0x9826('0x12'),auth['isAuthenticated'](),controller[_0x9826('0x13')]);router[_0x9826('0x9')](_0x9826('0x14'),auth[_0x9826('0x7')](),controller[_0x9826('0x15')]);router[_0x9826('0x16')]('/',auth[_0x9826('0x7')](),controller['create']);router[_0x9826('0x16')](_0x9826('0x17'),auth['isAuthenticated'](),controller['clone']);router['post'](_0x9826('0x12'),auth[_0x9826('0x7')](),controller['addLists']);router[_0x9826('0x16')](_0x9826('0x14'),auth[_0x9826('0x7')](),controller['addBlackLists']);router['put'](_0x9826('0xa'),auth[_0x9826('0x7')](),controller[_0x9826('0x18')]);router[_0x9826('0x19')](_0x9826('0xa'),auth[_0x9826('0x7')](),controller[_0x9826('0x1a')]);router[_0x9826('0x19')]('/:id/lists',auth['isAuthenticated'](),controller['removeLists']);router['delete'](_0x9826('0x14'),auth[_0x9826('0x7')](),controller['removeBlackLists']);module[_0x9826('0x1b')]=router;
\ No newline at end of file
+var _0xbdf4=['getBlackLists','post','create','/:id/clone','clone','/:id/blacklists','addBlackLists','put','delete','destroy','removeLists','removeBlackLists','exports','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','get','isAuthenticated','index','/:id','show','/:id/hoppers','getHoppers','/:id/hopper_histories','/:id/hopper_finals','getHopperFinals','/:id/hopper_black','getHopperBlacks','/:id/lists','getLists'];(function(_0x42b030,_0x252cb6){var _0x112303=function(_0x261838){while(--_0x261838){_0x42b030['push'](_0x42b030['shift']());}};_0x112303(++_0x252cb6);}(_0xbdf4,0x199));var _0x4bdf=function(_0x46698a,_0x8de1e4){_0x46698a=_0x46698a-0x0;var _0x356db0=_0xbdf4[_0x46698a];return _0x356db0;};'use strict';var multer=require('multer');var util=require(_0x4bdf('0x0'));var path=require(_0x4bdf('0x1'));var timeout=require(_0x4bdf('0x2'));var express=require(_0x4bdf('0x3'));var router=express[_0x4bdf('0x4')]();var fs_extra=require(_0x4bdf('0x5'));var auth=require(_0x4bdf('0x6'));var interaction=require(_0x4bdf('0x7'));var config=require(_0x4bdf('0x8'));var controller=require('./campaign.controller');router[_0x4bdf('0x9')]('/',auth[_0x4bdf('0xa')](),controller[_0x4bdf('0xb')]);router[_0x4bdf('0x9')](_0x4bdf('0xc'),auth['isAuthenticated'](),controller[_0x4bdf('0xd')]);router[_0x4bdf('0x9')](_0x4bdf('0xe'),auth[_0x4bdf('0xa')](),controller[_0x4bdf('0xf')]);router[_0x4bdf('0x9')](_0x4bdf('0x10'),auth[_0x4bdf('0xa')](),controller['getHopperHistories']);router[_0x4bdf('0x9')](_0x4bdf('0x11'),auth[_0x4bdf('0xa')](),controller[_0x4bdf('0x12')]);router['get'](_0x4bdf('0x13'),auth[_0x4bdf('0xa')](),controller[_0x4bdf('0x14')]);router[_0x4bdf('0x9')](_0x4bdf('0x15'),auth[_0x4bdf('0xa')](),controller[_0x4bdf('0x16')]);router['get']('/:id/blacklists',auth[_0x4bdf('0xa')](),controller[_0x4bdf('0x17')]);router[_0x4bdf('0x18')]('/',auth[_0x4bdf('0xa')](),controller[_0x4bdf('0x19')]);router['post'](_0x4bdf('0x1a'),auth[_0x4bdf('0xa')](),controller[_0x4bdf('0x1b')]);router[_0x4bdf('0x18')](_0x4bdf('0x15'),auth[_0x4bdf('0xa')](),controller['addLists']);router[_0x4bdf('0x18')](_0x4bdf('0x1c'),auth[_0x4bdf('0xa')](),controller[_0x4bdf('0x1d')]);router[_0x4bdf('0x1e')](_0x4bdf('0xc'),auth[_0x4bdf('0xa')](),controller['update']);router[_0x4bdf('0x1f')](_0x4bdf('0xc'),auth['isAuthenticated'](),controller[_0x4bdf('0x20')]);router[_0x4bdf('0x1f')]('/:id/lists',auth[_0x4bdf('0xa')](),controller[_0x4bdf('0x21')]);router[_0x4bdf('0x1f')](_0x4bdf('0x1c'),auth[_0x4bdf('0xa')](),controller[_0x4bdf('0x22')]);module[_0x4bdf('0x23')]=router;
\ No newline at end of file
index 19ddb3b..6038300 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5d35=['key','exports','TEXT','STRING','VIRTUAL'];(function(_0x38d682,_0x5766ef){var _0x4c22b5=function(_0x2ee576){while(--_0x2ee576){_0x38d682['push'](_0x38d682['shift']());}};_0x4c22b5(++_0x5766ef);}(_0x5d35,0xf1));var _0x55d3=function(_0x4e3cc9,_0x80be6c){_0x4e3cc9=_0x4e3cc9-0x0;var _0x2f99cd=_0x5d35[_0x4e3cc9];return _0x2f99cd;};'use strict';var Sequelize=require('sequelize');module[_0x55d3('0x0')]={'key':{'type':Sequelize['STRING'],'allowNull':![]},'value':{'type':Sequelize[_0x55d3('0x1')],'allowNull':![]},'description':{'type':Sequelize[_0x55d3('0x2')]},'name':{'type':Sequelize[_0x55d3('0x3')],'get':function(){return this['getDataValue'](_0x55d3('0x4'));}}};
\ No newline at end of file
+var _0x2a24=['sequelize','exports','VIRTUAL','getDataValue','key'];(function(_0x4f939a,_0x5232ee){var _0xb1d4eb=function(_0x19821b){while(--_0x19821b){_0x4f939a['push'](_0x4f939a['shift']());}};_0xb1d4eb(++_0x5232ee);}(_0x2a24,0x1bd));var _0x42a2=function(_0xfae23b,_0x2be4ba){_0xfae23b=_0xfae23b-0x0;var _0x200640=_0x2a24[_0xfae23b];return _0x200640;};'use strict';var Sequelize=require(_0x42a2('0x0'));module[_0x42a2('0x1')]={'key':{'type':Sequelize['STRING'],'allowNull':![]},'value':{'type':Sequelize['TEXT'],'allowNull':![]},'description':{'type':Sequelize['STRING']},'name':{'type':Sequelize[_0x42a2('0x2')],'get':function(){return this[_0x42a2('0x3')](_0x42a2('0x4'));}}};
\ No newline at end of file
index 33d333e..329ce19 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x108a=['error','stack','name','send','index','map','CannedAnswer','rawAttributes','key','model','query','keys','filters','intersection','attributes','fields','hasOwnProperty','nolimit','order','sort','where','merge','filter','include','findAll','catch','length','options','find','body','params','create','MailAccountId','SmsAccountId','OpenchannelAccountId','ChatWebsiteId','Sequelize','ValidationError','The\x20inserted\x20key\x20already\x20exists.','UserProfileSection','userProfileId','autoAssociation','rimraf','zip-dir','moment','bluebird','mustache','path','sox','to-csv','fs-extra','lodash','squel','crypto','jsforce','desk.js','querystring','ioredis','../../components/auth/service','../../components/parsers/qs','../../config/license/hardware','api','../../config/utils','../../config/license/util','../../mysqldb','sendStatus','status','end','json','offset','undefined','limit','count','set','Content-Range','apply','reject','then','destroy','get','CannedAnswers','UserProfileResource'];(function(_0x4554d2,_0x37ca6d){var _0x4e8f33=function(_0x57731b){while(--_0x57731b){_0x4554d2['push'](_0x4554d2['shift']());}};_0x4e8f33(++_0x37ca6d);}(_0x108a,0x172));var _0xa108=function(_0x22df5a,_0x4987fe){_0x22df5a=_0x22df5a-0x0;var _0x1edadb=_0x108a[_0x22df5a];return _0x1edadb;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0xa108('0x0'));var zipdir=require(_0xa108('0x1'));var jsonpatch=require('fast-json-patch');var rp=require('request-promise');var moment=require(_0xa108('0x2'));var BPromise=require(_0xa108('0x3'));var Mustache=require(_0xa108('0x4'));var util=require('util');var path=require(_0xa108('0x5'));var sox=require(_0xa108('0x6'));var csv=require(_0xa108('0x7'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0xa108('0x8'));var _=require(_0xa108('0x9'));var squel=require(_0xa108('0xa'));var crypto=require(_0xa108('0xb'));var jsforce=require(_0xa108('0xc'));var deskjs=require(_0xa108('0xd'));var toCsv=require(_0xa108('0x7'));var querystring=require(_0xa108('0xe'));var Papa=require('papaparse');var Redis=require(_0xa108('0xf'));var authService=require(_0xa108('0x10'));var qs=require(_0xa108('0x11'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0xa108('0x12'));var logger=require('../../config/logger')(_0xa108('0x13'));var utils=require(_0xa108('0x14'));var config=require('../../config/environment');var licenseUtil=require(_0xa108('0x15'));var db=require(_0xa108('0x16'))['db'];function respondWithStatusCode(_0x1f988a,_0x1debcf){_0x1debcf=_0x1debcf||0xcc;return function(_0x2ca158){if(_0x2ca158){return _0x1f988a[_0xa108('0x17')](_0x1debcf);}return _0x1f988a[_0xa108('0x18')](_0x1debcf)[_0xa108('0x19')]();};}function respondWithResult(_0x464aec,_0x2f34a1){_0x2f34a1=_0x2f34a1||0xc8;return function(_0xce3b39){if(_0xce3b39){return _0x464aec[_0xa108('0x18')](_0x2f34a1)[_0xa108('0x1a')](_0xce3b39);}};}function respondWithFilteredResult(_0x1be0bb,_0x34ccc7){return function(_0x450471){if(_0x450471){var _0x1fd43c=typeof _0x34ccc7[_0xa108('0x1b')]===_0xa108('0x1c')&&typeof _0x34ccc7[_0xa108('0x1d')]===_0xa108('0x1c');var _0x2232e9=_0x450471[_0xa108('0x1e')];var _0x153aef=_0x1fd43c?0x0:_0x34ccc7['offset'];var _0x130acc=_0x1fd43c?_0x450471['count']:_0x34ccc7[_0xa108('0x1b')]+_0x34ccc7[_0xa108('0x1d')];var _0x59b39c;if(_0x130acc>=_0x2232e9){_0x130acc=_0x2232e9;_0x59b39c=0xc8;}else{_0x59b39c=0xce;}_0x1be0bb['status'](_0x59b39c);return _0x1be0bb[_0xa108('0x1f')](_0xa108('0x20'),_0x153aef+'-'+_0x130acc+'/'+_0x2232e9)[_0xa108('0x1a')](_0x450471);}return null;};}function patchUpdates(_0x53426c){return function(_0x470405){try{jsonpatch[_0xa108('0x21')](_0x470405,_0x53426c,!![]);}catch(_0x3e32b7){return BPromise[_0xa108('0x22')](_0x3e32b7);}return _0x470405['save']();};}function saveUpdates(_0x1bc9c8,_0x56adb6){return function(_0x2406c7){if(_0x2406c7){return _0x2406c7['update'](_0x1bc9c8)[_0xa108('0x23')](function(_0x121a0a){return _0x121a0a;});}return null;};}function removeEntity(_0xda3986,_0xba270b){return function(_0x28447b){if(_0x28447b){return _0x28447b[_0xa108('0x24')]()[_0xa108('0x23')](function(){var _0x5aff54=_0x28447b[_0xa108('0x25')]({'plain':!![]});var _0xcc039e=_0xa108('0x26');return db[_0xa108('0x27')][_0xa108('0x24')]({'where':{'type':_0xcc039e,'resourceId':_0x5aff54['id']}})[_0xa108('0x23')](function(){return _0x28447b;});})['then'](function(){_0xda3986['status'](0xcc)['end']();});}};}function handleEntityNotFound(_0x4c5fa4,_0x1c1c48){return function(_0x2dd857){if(!_0x2dd857){_0x4c5fa4[_0xa108('0x17')](0x194);}return _0x2dd857;};}function handleError(_0xbee7e0,_0x2dfa83){_0x2dfa83=_0x2dfa83||0x1f4;return function(_0x47f66a){logger[_0xa108('0x28')](_0x47f66a[_0xa108('0x29')]);if(_0x47f66a[_0xa108('0x2a')]){delete _0x47f66a['name'];}_0xbee7e0[_0xa108('0x18')](_0x2dfa83)[_0xa108('0x2b')](_0x47f66a);};}exports[_0xa108('0x2c')]=function(_0xe5b26,_0x4cc1fb){var _0x142bb1={},_0xec579b={},_0x32ee65={'count':0x0,'rows':[]};var _0x46acf7=_[_0xa108('0x2d')](db[_0xa108('0x2e')][_0xa108('0x2f')],function(_0x10400e){return{'name':_0x10400e['fieldName'],'type':_0x10400e['type'][_0xa108('0x30')]};});_0xec579b[_0xa108('0x31')]=_[_0xa108('0x2d')](_0x46acf7,'name');_0xec579b[_0xa108('0x32')]=_[_0xa108('0x33')](_0xe5b26[_0xa108('0x32')]);_0xec579b[_0xa108('0x34')]=_[_0xa108('0x35')](_0xec579b[_0xa108('0x31')],_0xec579b[_0xa108('0x32')]);_0x142bb1[_0xa108('0x36')]=_[_0xa108('0x35')](_0xec579b[_0xa108('0x31')],qs[_0xa108('0x37')](_0xe5b26['query']['fields']));_0x142bb1[_0xa108('0x36')]=_0x142bb1[_0xa108('0x36')]['length']?_0x142bb1[_0xa108('0x36')]:_0xec579b[_0xa108('0x31')];if(!_0xe5b26[_0xa108('0x32')][_0xa108('0x38')](_0xa108('0x39'))){_0x142bb1[_0xa108('0x1d')]=qs['limit'](_0xe5b26['query'][_0xa108('0x1d')]);_0x142bb1[_0xa108('0x1b')]=qs[_0xa108('0x1b')](_0xe5b26['query'][_0xa108('0x1b')]);}_0x142bb1[_0xa108('0x3a')]=qs[_0xa108('0x3b')](_0xe5b26[_0xa108('0x32')]['sort']);_0x142bb1[_0xa108('0x3c')]=qs[_0xa108('0x34')](_['pick'](_0xe5b26[_0xa108('0x32')],_0xec579b[_0xa108('0x34')]),_0x46acf7);if(_0xe5b26['query']['filter']){_0x142bb1[_0xa108('0x3c')]=_[_0xa108('0x3d')](_0x142bb1[_0xa108('0x3c')],{'$or':[{'key':{'$like':'%'+_0xe5b26[_0xa108('0x32')][_0xa108('0x3e')]+'%'}},{'value':{'$like':'%'+_0xe5b26[_0xa108('0x32')][_0xa108('0x3e')]+'%'}}]});}_0x142bb1=_[_0xa108('0x3d')]({},_0x142bb1,_0xe5b26['options']);var _0x1a71a8={'where':_0x142bb1[_0xa108('0x3c')]};return db[_0xa108('0x2e')][_0xa108('0x1e')](_0x1a71a8)[_0xa108('0x23')](function(_0x1241eb){_0x32ee65[_0xa108('0x1e')]=_0x1241eb;if(_0xe5b26['query']['includeAll']){_0x142bb1[_0xa108('0x3f')]=[{'all':!![]}];}return db[_0xa108('0x2e')][_0xa108('0x40')](_0x142bb1);})['then'](function(_0x2998c7){_0x32ee65['rows']=_0x2998c7;return _0x32ee65;})[_0xa108('0x23')](respondWithFilteredResult(_0x4cc1fb,_0x142bb1))[_0xa108('0x41')](handleError(_0x4cc1fb,null));};exports['show']=function(_0x3b8f62,_0x1bab89){var _0x329c2d={'raw':!![],'where':{'id':_0x3b8f62['params']['id']}},_0x5be856={};_0x5be856['model']=_['keys'](db['CannedAnswer']['rawAttributes']);_0x5be856['query']=_[_0xa108('0x33')](_0x3b8f62['query']);_0x5be856[_0xa108('0x34')]=_['intersection'](_0x5be856[_0xa108('0x31')],_0x5be856[_0xa108('0x32')]);_0x329c2d[_0xa108('0x36')]=_['intersection'](_0x5be856[_0xa108('0x31')],qs[_0xa108('0x37')](_0x3b8f62[_0xa108('0x32')][_0xa108('0x37')]));_0x329c2d[_0xa108('0x36')]=_0x329c2d[_0xa108('0x36')][_0xa108('0x42')]?_0x329c2d['attributes']:_0x5be856['model'];if(_0x3b8f62[_0xa108('0x32')]['includeAll']){_0x329c2d[_0xa108('0x3f')]=[{'all':!![]}];}_0x329c2d=_[_0xa108('0x3d')]({},_0x329c2d,_0x3b8f62[_0xa108('0x43')]);return db[_0xa108('0x2e')][_0xa108('0x44')](_0x329c2d)[_0xa108('0x23')](handleEntityNotFound(_0x1bab89,null))[_0xa108('0x23')](respondWithResult(_0x1bab89,null))[_0xa108('0x41')](handleError(_0x1bab89,null));};exports['update']=function(_0x1c5a01,_0x38dcd1){if(_0x1c5a01['body']['id']){delete _0x1c5a01[_0xa108('0x45')]['id'];}return db[_0xa108('0x2e')][_0xa108('0x44')]({'where':{'id':_0x1c5a01[_0xa108('0x46')]['id']}})[_0xa108('0x23')](handleEntityNotFound(_0x38dcd1,null))['then'](saveUpdates(_0x1c5a01[_0xa108('0x45')],null))[_0xa108('0x23')](respondWithResult(_0x38dcd1,null))[_0xa108('0x41')](handleError(_0x38dcd1,null));};exports[_0xa108('0x24')]=function(_0x3fac41,_0x44ec72){return db[_0xa108('0x2e')][_0xa108('0x44')]({'where':{'id':_0x3fac41[_0xa108('0x46')]['id']}})[_0xa108('0x23')](handleEntityNotFound(_0x44ec72,null))[_0xa108('0x23')](removeEntity(_0x44ec72,null))['catch'](handleError(_0x44ec72,null));};exports[_0xa108('0x47')]=function(_0x363c37,_0x4f6132){var _0x5b4967={'key':_0x363c37[_0xa108('0x45')]['key']};if(_0x363c37[_0xa108('0x45')][_0xa108('0x48')]){_0x5b4967['MailAccountId']=_0x363c37[_0xa108('0x45')][_0xa108('0x48')];}else if(_0x363c37[_0xa108('0x45')][_0xa108('0x49')]){_0x5b4967['SmsAccountId']=_0x363c37[_0xa108('0x45')][_0xa108('0x49')];}else if(_0x363c37['body'][_0xa108('0x4a')]){_0x5b4967['OpenchannelAccountId']=_0x363c37[_0xa108('0x45')][_0xa108('0x4a')];}else if(_0x363c37['body'][_0xa108('0x4b')]){_0x5b4967[_0xa108('0x4b')]=_0x363c37['body'][_0xa108('0x4b')];}return db[_0xa108('0x2e')][_0xa108('0x44')]({'where':_0x5b4967})[_0xa108('0x23')](function(_0x1765fd){if(_0x1765fd){throw new db[(_0xa108('0x4c'))][(_0xa108('0x4d'))](_0xa108('0x4e'));}return db[_0xa108('0x2e')][_0xa108('0x47')](_0x363c37['body']);})[_0xa108('0x23')](function(_0x4d4c8e){var _0x12f9af=_0x363c37['user'][_0xa108('0x25')]({'plain':!![]});if(!_0x12f9af)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0x12f9af['role']==='user'){var _0x2f5557=_0x4d4c8e[_0xa108('0x25')]({'plain':!![]});return db[_0xa108('0x4f')][_0xa108('0x44')]({'where':{'name':'CannedAnswers','userProfileId':_0x12f9af[_0xa108('0x50')]},'raw':!![]})['then'](function(_0x4d3b11){if(_0x4d3b11&&_0x4d3b11[_0xa108('0x51')]===0x0){return db['UserProfileResource'][_0xa108('0x47')]({'name':_0x2f5557['name'],'resourceId':_0x2f5557['id'],'type':_0x4d3b11[_0xa108('0x2a')],'sectionId':_0x4d3b11['id']},{})[_0xa108('0x23')](function(){return _0x4d4c8e;});}else{return _0x4d4c8e;}})[_0xa108('0x41')](function(_0x3173d5){logger[_0xa108('0x28')]('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0x3173d5);throw _0x3173d5;});}return _0x4d4c8e;})[_0xa108('0x23')](respondWithResult(_0x4f6132,0xc9))['catch'](handleError(_0x4f6132,null));};
\ No newline at end of file
+var _0x667f=['json','offset','limit','undefined','apply','reject','save','update','destroy','then','CannedAnswers','error','name','send','index','map','CannedAnswer','fieldName','type','key','query','keys','intersection','model','attributes','fields','length','order','sort','where','filters','pick','filter','merge','options','includeAll','include','findAll','catch','show','params','rawAttributes','find','body','create','MailAccountId','SmsAccountId','OpenchannelAccountId','Sequelize','The\x20inserted\x20key\x20already\x20exists.','get','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','user','UserProfileSection','userProfileId','autoAssociation','UserProfileResource','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','mustache','util','sox','ejs','lodash','squel','crypto','jsforce','desk.js','to-csv','querystring','papaparse','ioredis','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/license/util','../../mysqldb','sendStatus','status','end'];(function(_0x14add3,_0x13ce8d){var _0x4a174f=function(_0x2b3ed7){while(--_0x2b3ed7){_0x14add3['push'](_0x14add3['shift']());}};_0x4a174f(++_0x13ce8d);}(_0x667f,0x93));var _0xf667=function(_0x4edb1f,_0x13a1a3){_0x4edb1f=_0x4edb1f-0x0;var _0x3508d4=_0x667f[_0x4edb1f];return _0x3508d4;};'use strict';var emlformat=require(_0xf667('0x0'));var rimraf=require(_0xf667('0x1'));var zipdir=require(_0xf667('0x2'));var jsonpatch=require(_0xf667('0x3'));var rp=require(_0xf667('0x4'));var moment=require(_0xf667('0x5'));var BPromise=require('bluebird');var Mustache=require(_0xf667('0x6'));var util=require(_0xf667('0x7'));var path=require('path');var sox=require(_0xf667('0x8'));var csv=require('to-csv');var ejs=require(_0xf667('0x9'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0xf667('0xa'));var squel=require(_0xf667('0xb'));var crypto=require(_0xf667('0xc'));var jsforce=require(_0xf667('0xd'));var deskjs=require(_0xf667('0xe'));var toCsv=require(_0xf667('0xf'));var querystring=require(_0xf667('0x10'));var Papa=require(_0xf667('0x11'));var Redis=require(_0xf667('0x12'));var authService=require('../../components/auth/service');var qs=require('../../components/parsers/qs');var as=require(_0xf667('0x13'));var hardwareService=require(_0xf667('0x14'));var logger=require(_0xf667('0x15'))(_0xf667('0x16'));var utils=require(_0xf667('0x17'));var config=require('../../config/environment');var licenseUtil=require(_0xf667('0x18'));var db=require(_0xf667('0x19'))['db'];function respondWithStatusCode(_0x1278dd,_0x154d69){_0x154d69=_0x154d69||0xcc;return function(_0x4ebf48){if(_0x4ebf48){return _0x1278dd[_0xf667('0x1a')](_0x154d69);}return _0x1278dd[_0xf667('0x1b')](_0x154d69)[_0xf667('0x1c')]();};}function respondWithResult(_0xa54507,_0x120cbd){_0x120cbd=_0x120cbd||0xc8;return function(_0x2abd80){if(_0x2abd80){return _0xa54507['status'](_0x120cbd)[_0xf667('0x1d')](_0x2abd80);}};}function respondWithFilteredResult(_0x458d58,_0x448619){return function(_0x39c19f){if(_0x39c19f){var _0x13408c=typeof _0x448619[_0xf667('0x1e')]==='undefined'&&typeof _0x448619[_0xf667('0x1f')]===_0xf667('0x20');var _0x3726dc=_0x39c19f['count'];var _0x4020e2=_0x13408c?0x0:_0x448619[_0xf667('0x1e')];var _0x303faf=_0x13408c?_0x39c19f['count']:_0x448619[_0xf667('0x1e')]+_0x448619[_0xf667('0x1f')];var _0x496e76;if(_0x303faf>=_0x3726dc){_0x303faf=_0x3726dc;_0x496e76=0xc8;}else{_0x496e76=0xce;}_0x458d58['status'](_0x496e76);return _0x458d58['set']('Content-Range',_0x4020e2+'-'+_0x303faf+'/'+_0x3726dc)['json'](_0x39c19f);}return null;};}function patchUpdates(_0x37483e){return function(_0x1e73c9){try{jsonpatch[_0xf667('0x21')](_0x1e73c9,_0x37483e,!![]);}catch(_0x4e1015){return BPromise[_0xf667('0x22')](_0x4e1015);}return _0x1e73c9[_0xf667('0x23')]();};}function saveUpdates(_0x557631,_0x31ef3f){return function(_0x27176e){if(_0x27176e){return _0x27176e[_0xf667('0x24')](_0x557631)['then'](function(_0x15dbc5){return _0x15dbc5;});}return null;};}function removeEntity(_0x10e585,_0x515805){return function(_0x4075b2){if(_0x4075b2){return _0x4075b2[_0xf667('0x25')]()[_0xf667('0x26')](function(){var _0x13a45d=_0x4075b2['get']({'plain':!![]});var _0x52dee3=_0xf667('0x27');return db['UserProfileResource'][_0xf667('0x25')]({'where':{'type':_0x52dee3,'resourceId':_0x13a45d['id']}})[_0xf667('0x26')](function(){return _0x4075b2;});})[_0xf667('0x26')](function(){_0x10e585['status'](0xcc)[_0xf667('0x1c')]();});}};}function handleEntityNotFound(_0x271b01,_0xd45d81){return function(_0x233498){if(!_0x233498){_0x271b01[_0xf667('0x1a')](0x194);}return _0x233498;};}function handleError(_0x6df76,_0x3b5fc3){_0x3b5fc3=_0x3b5fc3||0x1f4;return function(_0x32623f){logger[_0xf667('0x28')](_0x32623f['stack']);if(_0x32623f['name']){delete _0x32623f[_0xf667('0x29')];}_0x6df76[_0xf667('0x1b')](_0x3b5fc3)[_0xf667('0x2a')](_0x32623f);};}exports[_0xf667('0x2b')]=function(_0x2da3f8,_0x2e9548){var _0x56fd42={},_0x43ab3b={},_0x22f144={'count':0x0,'rows':[]};var _0x34a944=_[_0xf667('0x2c')](db[_0xf667('0x2d')]['rawAttributes'],function(_0x31b670){return{'name':_0x31b670[_0xf667('0x2e')],'type':_0x31b670[_0xf667('0x2f')][_0xf667('0x30')]};});_0x43ab3b['model']=_[_0xf667('0x2c')](_0x34a944,_0xf667('0x29'));_0x43ab3b[_0xf667('0x31')]=_[_0xf667('0x32')](_0x2da3f8[_0xf667('0x31')]);_0x43ab3b['filters']=_[_0xf667('0x33')](_0x43ab3b[_0xf667('0x34')],_0x43ab3b[_0xf667('0x31')]);_0x56fd42[_0xf667('0x35')]=_[_0xf667('0x33')](_0x43ab3b[_0xf667('0x34')],qs[_0xf667('0x36')](_0x2da3f8['query']['fields']));_0x56fd42[_0xf667('0x35')]=_0x56fd42['attributes'][_0xf667('0x37')]?_0x56fd42[_0xf667('0x35')]:_0x43ab3b[_0xf667('0x34')];if(!_0x2da3f8['query']['hasOwnProperty']('nolimit')){_0x56fd42[_0xf667('0x1f')]=qs[_0xf667('0x1f')](_0x2da3f8[_0xf667('0x31')][_0xf667('0x1f')]);_0x56fd42[_0xf667('0x1e')]=qs['offset'](_0x2da3f8[_0xf667('0x31')][_0xf667('0x1e')]);}_0x56fd42[_0xf667('0x38')]=qs[_0xf667('0x39')](_0x2da3f8[_0xf667('0x31')][_0xf667('0x39')]);_0x56fd42[_0xf667('0x3a')]=qs[_0xf667('0x3b')](_[_0xf667('0x3c')](_0x2da3f8[_0xf667('0x31')],_0x43ab3b['filters']),_0x34a944);if(_0x2da3f8[_0xf667('0x31')][_0xf667('0x3d')]){_0x56fd42[_0xf667('0x3a')]=_[_0xf667('0x3e')](_0x56fd42[_0xf667('0x3a')],{'$or':[{'key':{'$like':'%'+_0x2da3f8['query'][_0xf667('0x3d')]+'%'}},{'value':{'$like':'%'+_0x2da3f8[_0xf667('0x31')][_0xf667('0x3d')]+'%'}}]});}_0x56fd42=_[_0xf667('0x3e')]({},_0x56fd42,_0x2da3f8[_0xf667('0x3f')]);var _0x5c48ce={'where':_0x56fd42[_0xf667('0x3a')]};return db['CannedAnswer']['count'](_0x5c48ce)[_0xf667('0x26')](function(_0x5ced4d){_0x22f144['count']=_0x5ced4d;if(_0x2da3f8[_0xf667('0x31')][_0xf667('0x40')]){_0x56fd42[_0xf667('0x41')]=[{'all':!![]}];}return db['CannedAnswer'][_0xf667('0x42')](_0x56fd42);})[_0xf667('0x26')](function(_0x2d775f){_0x22f144['rows']=_0x2d775f;return _0x22f144;})[_0xf667('0x26')](respondWithFilteredResult(_0x2e9548,_0x56fd42))[_0xf667('0x43')](handleError(_0x2e9548,null));};exports[_0xf667('0x44')]=function(_0x47af95,_0x2e299b){var _0x1413da={'raw':!![],'where':{'id':_0x47af95[_0xf667('0x45')]['id']}},_0x515e4b={};_0x515e4b[_0xf667('0x34')]=_[_0xf667('0x32')](db['CannedAnswer'][_0xf667('0x46')]);_0x515e4b[_0xf667('0x31')]=_[_0xf667('0x32')](_0x47af95[_0xf667('0x31')]);_0x515e4b[_0xf667('0x3b')]=_[_0xf667('0x33')](_0x515e4b[_0xf667('0x34')],_0x515e4b[_0xf667('0x31')]);_0x1413da[_0xf667('0x35')]=_[_0xf667('0x33')](_0x515e4b[_0xf667('0x34')],qs[_0xf667('0x36')](_0x47af95[_0xf667('0x31')][_0xf667('0x36')]));_0x1413da[_0xf667('0x35')]=_0x1413da[_0xf667('0x35')][_0xf667('0x37')]?_0x1413da[_0xf667('0x35')]:_0x515e4b['model'];if(_0x47af95[_0xf667('0x31')][_0xf667('0x40')]){_0x1413da['include']=[{'all':!![]}];}_0x1413da=_[_0xf667('0x3e')]({},_0x1413da,_0x47af95[_0xf667('0x3f')]);return db[_0xf667('0x2d')]['find'](_0x1413da)[_0xf667('0x26')](handleEntityNotFound(_0x2e299b,null))[_0xf667('0x26')](respondWithResult(_0x2e299b,null))[_0xf667('0x43')](handleError(_0x2e299b,null));};exports[_0xf667('0x24')]=function(_0x28971a,_0x2b2937){if(_0x28971a['body']['id']){delete _0x28971a['body']['id'];}return db[_0xf667('0x2d')][_0xf667('0x47')]({'where':{'id':_0x28971a[_0xf667('0x45')]['id']}})[_0xf667('0x26')](handleEntityNotFound(_0x2b2937,null))[_0xf667('0x26')](saveUpdates(_0x28971a[_0xf667('0x48')],null))[_0xf667('0x26')](respondWithResult(_0x2b2937,null))['catch'](handleError(_0x2b2937,null));};exports['destroy']=function(_0x4d085b,_0x76c872){return db[_0xf667('0x2d')][_0xf667('0x47')]({'where':{'id':_0x4d085b[_0xf667('0x45')]['id']}})[_0xf667('0x26')](handleEntityNotFound(_0x76c872,null))[_0xf667('0x26')](removeEntity(_0x76c872,null))[_0xf667('0x43')](handleError(_0x76c872,null));};exports[_0xf667('0x49')]=function(_0x29a9d8,_0x45ed41){var _0x1900c9={'key':_0x29a9d8[_0xf667('0x48')][_0xf667('0x30')]};if(_0x29a9d8['body']['MailAccountId']){_0x1900c9[_0xf667('0x4a')]=_0x29a9d8[_0xf667('0x48')][_0xf667('0x4a')];}else if(_0x29a9d8['body'][_0xf667('0x4b')]){_0x1900c9[_0xf667('0x4b')]=_0x29a9d8[_0xf667('0x48')]['SmsAccountId'];}else if(_0x29a9d8[_0xf667('0x48')][_0xf667('0x4c')]){_0x1900c9[_0xf667('0x4c')]=_0x29a9d8[_0xf667('0x48')][_0xf667('0x4c')];}else if(_0x29a9d8[_0xf667('0x48')]['ChatWebsiteId']){_0x1900c9['ChatWebsiteId']=_0x29a9d8['body']['ChatWebsiteId'];}return db[_0xf667('0x2d')]['find']({'where':_0x1900c9})[_0xf667('0x26')](function(_0x14ff0e){if(_0x14ff0e){throw new db[(_0xf667('0x4d'))]['ValidationError'](_0xf667('0x4e'));}return db[_0xf667('0x2d')]['create'](_0x29a9d8[_0xf667('0x48')]);})[_0xf667('0x26')](function(_0x32494e){var _0x5180fe=_0x29a9d8['user'][_0xf667('0x4f')]({'plain':!![]});if(!_0x5180fe)throw new Error(_0xf667('0x50'));if(_0x5180fe[_0xf667('0x51')]===_0xf667('0x52')){var _0x28686a=_0x32494e[_0xf667('0x4f')]({'plain':!![]});return db[_0xf667('0x53')][_0xf667('0x47')]({'where':{'name':_0xf667('0x27'),'userProfileId':_0x5180fe[_0xf667('0x54')]},'raw':!![]})[_0xf667('0x26')](function(_0x138e4c){if(_0x138e4c&&_0x138e4c[_0xf667('0x55')]===0x0){return db[_0xf667('0x56')][_0xf667('0x49')]({'name':_0x28686a['name'],'resourceId':_0x28686a['id'],'type':_0x138e4c[_0xf667('0x29')],'sectionId':_0x138e4c['id']},{})[_0xf667('0x26')](function(){return _0x32494e;});}else{return _0x32494e;}})[_0xf667('0x43')](function(_0x45f489){logger[_0xf667('0x28')](_0xf667('0x57'),_0x45f489);throw _0x45f489;});}return _0x32494e;})[_0xf667('0x26')](respondWithResult(_0x45ed41,0xc9))[_0xf667('0x43')](handleError(_0x45ed41,null));};
\ No newline at end of file
index 716235a..4856904 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xce2f=['CannedAnswer','tools_canned_answers','utf8mb4','utf8mb4_unicode_ci','util','../../config/logger','api','moment','request-promise','path','rimraf','../../config/environment','exports','define'];(function(_0x50a0c2,_0x4befab){var _0x5ebadd=function(_0x3a3342){while(--_0x3a3342){_0x50a0c2['push'](_0x50a0c2['shift']());}};_0x5ebadd(++_0x4befab);}(_0xce2f,0x162));var _0xfce2=function(_0x258c64,_0x54762a){_0x258c64=_0x258c64-0x0;var _0x4d74bf=_0xce2f[_0x258c64];return _0x4d74bf;};'use strict';var _=require('lodash');var util=require(_0xfce2('0x0'));var logger=require(_0xfce2('0x1'))(_0xfce2('0x2'));var moment=require(_0xfce2('0x3'));var BPromise=require('bluebird');var rp=require(_0xfce2('0x4'));var fs=require('fs');var path=require(_0xfce2('0x5'));var rimraf=require(_0xfce2('0x6'));var config=require(_0xfce2('0x7'));var attributes=require('./cannedAnswer.attributes');module[_0xfce2('0x8')]=function(_0x150553,_0x2ebdb3){return _0x150553[_0xfce2('0x9')](_0xfce2('0xa'),attributes,{'tableName':_0xfce2('0xb'),'paranoid':![],'indexes':[],'timestamps':!![],'charset':_0xfce2('0xc'),'collate':_0xfce2('0xd')});};
\ No newline at end of file
+var _0x3b1b=['define','CannedAnswer','tools_canned_answers','utf8mb4','utf8mb4_unicode_ci','lodash','util','../../config/logger','moment','bluebird','path','rimraf','../../config/environment','./cannedAnswer.attributes'];(function(_0x5068c0,_0x4beee0){var _0x30c7fb=function(_0x144929){while(--_0x144929){_0x5068c0['push'](_0x5068c0['shift']());}};_0x30c7fb(++_0x4beee0);}(_0x3b1b,0x139));var _0xb3b1=function(_0x2a9007,_0x4e0431){_0x2a9007=_0x2a9007-0x0;var _0x2a9ab0=_0x3b1b[_0x2a9007];return _0x2a9ab0;};'use strict';var _=require(_0xb3b1('0x0'));var util=require(_0xb3b1('0x1'));var logger=require(_0xb3b1('0x2'))('api');var moment=require(_0xb3b1('0x3'));var BPromise=require(_0xb3b1('0x4'));var rp=require('request-promise');var fs=require('fs');var path=require(_0xb3b1('0x5'));var rimraf=require(_0xb3b1('0x6'));var config=require(_0xb3b1('0x7'));var attributes=require(_0xb3b1('0x8'));module['exports']=function(_0xf317ae,_0x497f46){return _0xf317ae[_0xb3b1('0x9')](_0xb3b1('0xa'),attributes,{'tableName':_0xb3b1('0xb'),'paranoid':![],'indexes':[],'timestamps':!![],'charset':_0xb3b1('0xc'),'collate':_0xb3b1('0xd')});};
\ No newline at end of file
index df8dd28..66a4881 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(_0x2545fc,_0x28f810){var _0x153f61=function(_0xbcc384){while(--_0xbcc384){_0x2545fc['push'](_0x2545fc['shift']());}};_0x153f61(++_0x28f810);}(_0xa9e0,0x123));var _0x0a9e=function(_0x12d033,_0x25fa2f){_0x12d033=_0x12d033-0x0;var _0x3b4e80=_0xa9e0[_0x12d033];return _0x3b4e80;};'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(_0x2c871c,_0x21c3ee){var _0x2db0c0=function(_0x57b5e0){while(--_0x57b5e0){_0x2c871c['push'](_0x2c871c['shift']());}};_0x2db0c0(++_0x21c3ee);}(_0xa9e0,0x123));var _0x0a9e=function(_0x4cf98e,_0xba4b79){_0x4cf98e=_0x4cf98e-0x0;var _0x1623ac=_0xa9e0[_0x4cf98e];return _0x1623ac;};'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 6073fdd..5aa2a1b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7973=['path','connect-timeout','../../components/auth/service','../../components/interaction/service','../../config/environment','./cannedAnswer.controller','get','/:id','show','create','put','delete','isAuthenticated','destroy','multer','util'];(function(_0x1fc5b2,_0x39ae99){var _0x3563bb=function(_0x46675e){while(--_0x46675e){_0x1fc5b2['push'](_0x1fc5b2['shift']());}};_0x3563bb(++_0x39ae99);}(_0x7973,0x1ce));var _0x3797=function(_0x5ceb4f,_0x35ecd6){_0x5ceb4f=_0x5ceb4f-0x0;var _0x1a2de3=_0x7973[_0x5ceb4f];return _0x1a2de3;};'use strict';var multer=require(_0x3797('0x0'));var util=require(_0x3797('0x1'));var path=require(_0x3797('0x2'));var timeout=require(_0x3797('0x3'));var express=require('express');var router=express['Router']();var fs_extra=require('fs-extra');var auth=require(_0x3797('0x4'));var interaction=require(_0x3797('0x5'));var config=require(_0x3797('0x6'));var controller=require(_0x3797('0x7'));router[_0x3797('0x8')]('/',auth['isAuthenticated'](),controller['index']);router[_0x3797('0x8')](_0x3797('0x9'),auth['isAuthenticated'](),controller[_0x3797('0xa')]);router['post']('/',auth['isAuthenticated'](),controller[_0x3797('0xb')]);router[_0x3797('0xc')](_0x3797('0x9'),auth['isAuthenticated'](),controller['update']);router[_0x3797('0xd')](_0x3797('0x9'),auth[_0x3797('0xe')](),controller[_0x3797('0xf')]);module['exports']=router;
\ No newline at end of file
+var _0x3769=['destroy','multer','path','connect-timeout','express','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./cannedAnswer.controller','get','index','isAuthenticated','post','create','put','/:id','update'];(function(_0x5dc550,_0x38d0f0){var _0x7b41a0=function(_0x415b8e){while(--_0x415b8e){_0x5dc550['push'](_0x5dc550['shift']());}};_0x7b41a0(++_0x38d0f0);}(_0x3769,0xa3));var _0x9376=function(_0x3b8fc5,_0x3bd37c){_0x3b8fc5=_0x3b8fc5-0x0;var _0x5ea05c=_0x3769[_0x3b8fc5];return _0x5ea05c;};'use strict';var multer=require(_0x9376('0x0'));var util=require('util');var path=require(_0x9376('0x1'));var timeout=require(_0x9376('0x2'));var express=require(_0x9376('0x3'));var router=express['Router']();var fs_extra=require(_0x9376('0x4'));var auth=require(_0x9376('0x5'));var interaction=require(_0x9376('0x6'));var config=require(_0x9376('0x7'));var controller=require(_0x9376('0x8'));router[_0x9376('0x9')]('/',auth['isAuthenticated'](),controller[_0x9376('0xa')]);router['get']('/:id',auth[_0x9376('0xb')](),controller['show']);router[_0x9376('0xc')]('/',auth['isAuthenticated'](),controller[_0x9376('0xd')]);router[_0x9376('0xe')](_0x9376('0xf'),auth[_0x9376('0xb')](),controller[_0x9376('0x10')]);router['delete'](_0x9376('0xf'),auth['isAuthenticated'](),controller[_0x9376('0x11')]);module['exports']=router;
\ No newline at end of file
index e1b3626..2f6995a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x354c=['DATE','1970-01-01\x2000:00:01','STRING','INTEGER','sequelize','exports'];(function(_0x2a4095,_0x13f4f0){var _0x52eeab=function(_0x3950dd){while(--_0x3950dd){_0x2a4095['push'](_0x2a4095['shift']());}};_0x52eeab(++_0x13f4f0);}(_0x354c,0x1e4));var _0xc354=function(_0x56a132,_0x533c61){_0x56a132=_0x56a132-0x0;var _0x26884a=_0x354c[_0x56a132];return _0x26884a;};'use strict';var Sequelize=require(_0xc354('0x0'));module[_0xc354('0x1')]={'calldate':{'type':Sequelize[_0xc354('0x2')],'allowNull':![],'defaultValue':_0xc354('0x3')},'clid':{'type':Sequelize['STRING']},'src':{'type':Sequelize[_0xc354('0x4')]},'dst':{'type':Sequelize[_0xc354('0x4')]},'dcontext':{'type':Sequelize['STRING']},'channel':{'type':Sequelize[_0xc354('0x4')]},'dstchannel':{'type':Sequelize[_0xc354('0x4')]},'lastapp':{'type':Sequelize[_0xc354('0x4')]},'lastdata':{'type':Sequelize['STRING']},'duration':{'type':Sequelize['INTEGER'],'allowNull':![],'defaultValue':0x0},'billsec':{'type':Sequelize[_0xc354('0x5')],'allowNull':![],'defaultValue':0x0},'disposition':{'type':Sequelize[_0xc354('0x4')]},'amaflags':{'type':Sequelize[_0xc354('0x5')],'allowNull':![],'defaultValue':0x0},'accountcode':{'type':Sequelize[_0xc354('0x4')]},'userfield':{'type':Sequelize['STRING']},'uniqueid':{'type':Sequelize[_0xc354('0x4')]},'linkedid':{'type':Sequelize[_0xc354('0x4')]},'sequence':{'type':Sequelize['STRING']},'peeraccount':{'type':Sequelize['STRING']},'type':{'type':Sequelize[_0xc354('0x4')]},'tag':{'type':Sequelize['STRING']}};
\ No newline at end of file
+var _0x1b0b=['INTEGER','sequelize','exports','DATE','STRING'];(function(_0x57975f,_0x388556){var _0x4793b8=function(_0x652c05){while(--_0x652c05){_0x57975f['push'](_0x57975f['shift']());}};_0x4793b8(++_0x388556);}(_0x1b0b,0x173));var _0xb1b0=function(_0x32f7d7,_0x54231b){_0x32f7d7=_0x32f7d7-0x0;var _0x133d09=_0x1b0b[_0x32f7d7];return _0x133d09;};'use strict';var Sequelize=require(_0xb1b0('0x0'));module[_0xb1b0('0x1')]={'calldate':{'type':Sequelize[_0xb1b0('0x2')],'allowNull':![],'defaultValue':'1970-01-01\x2000:00:01'},'clid':{'type':Sequelize[_0xb1b0('0x3')]},'src':{'type':Sequelize[_0xb1b0('0x3')]},'dst':{'type':Sequelize[_0xb1b0('0x3')]},'dcontext':{'type':Sequelize['STRING']},'channel':{'type':Sequelize['STRING']},'dstchannel':{'type':Sequelize['STRING']},'lastapp':{'type':Sequelize[_0xb1b0('0x3')]},'lastdata':{'type':Sequelize[_0xb1b0('0x3')]},'duration':{'type':Sequelize[_0xb1b0('0x4')],'allowNull':![],'defaultValue':0x0},'billsec':{'type':Sequelize[_0xb1b0('0x4')],'allowNull':![],'defaultValue':0x0},'disposition':{'type':Sequelize[_0xb1b0('0x3')]},'amaflags':{'type':Sequelize[_0xb1b0('0x4')],'allowNull':![],'defaultValue':0x0},'accountcode':{'type':Sequelize[_0xb1b0('0x3')]},'userfield':{'type':Sequelize[_0xb1b0('0x3')]},'uniqueid':{'type':Sequelize[_0xb1b0('0x3')]},'linkedid':{'type':Sequelize['STRING']},'sequence':{'type':Sequelize[_0xb1b0('0x3')]},'peeraccount':{'type':Sequelize['STRING']},'type':{'type':Sequelize['STRING']},'tag':{'type':Sequelize[_0xb1b0('0x3')]}};
\ No newline at end of file
index cd91d4c..e5b7286 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0e85=['json','offset','undefined','limit','count','set','apply','save','update','then','error','stack','name','send','map','Cdr','rawAttributes','fieldName','key','model','query','keys','intersection','fields','attributes','length','hasOwnProperty','nolimit','order','sort','where','filters','filter','merge','type','VIRTUAL','options','includeAll','include','findAll','rows','catch','show','params','find','create','body','destroy','describe','eml-format','rimraf','fast-json-patch','request-promise','util','sox','to-csv','ejs','fs-extra','squel','crypto','jsforce','desk.js','querystring','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../mysqldb','sendStatus','status','end'];(function(_0x1cd9fd,_0x32ebd2){var _0x1c7ef6=function(_0x3e53c1){while(--_0x3e53c1){_0x1cd9fd['push'](_0x1cd9fd['shift']());}};_0x1c7ef6(++_0x32ebd2);}(_0x0e85,0x7c));var _0x50e8=function(_0x62c958,_0x2bfdbc){_0x62c958=_0x62c958-0x0;var _0x57ec61=_0x0e85[_0x62c958];return _0x57ec61;};'use strict';var emlformat=require(_0x50e8('0x0'));var rimraf=require(_0x50e8('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0x50e8('0x2'));var rp=require(_0x50e8('0x3'));var moment=require('moment');var BPromise=require('bluebird');var Mustache=require('mustache');var util=require(_0x50e8('0x4'));var path=require('path');var sox=require(_0x50e8('0x5'));var csv=require(_0x50e8('0x6'));var ejs=require(_0x50e8('0x7'));var fs=require('fs');var fs_extra=require(_0x50e8('0x8'));var _=require('lodash');var squel=require(_0x50e8('0x9'));var crypto=require(_0x50e8('0xa'));var jsforce=require(_0x50e8('0xb'));var deskjs=require(_0x50e8('0xc'));var toCsv=require(_0x50e8('0x6'));var querystring=require(_0x50e8('0xd'));var Papa=require('papaparse');var Redis=require(_0x50e8('0xe'));var authService=require(_0x50e8('0xf'));var qs=require(_0x50e8('0x10'));var as=require(_0x50e8('0x11'));var hardwareService=require(_0x50e8('0x12'));var logger=require(_0x50e8('0x13'))(_0x50e8('0x14'));var utils=require(_0x50e8('0x15'));var config=require('../../config/environment');var licenseUtil=require('../../config/license/util');var db=require(_0x50e8('0x16'))['db'];function respondWithStatusCode(_0x24d381,_0x508377){_0x508377=_0x508377||0xcc;return function(_0x49e02f){if(_0x49e02f){return _0x24d381[_0x50e8('0x17')](_0x508377);}return _0x24d381[_0x50e8('0x18')](_0x508377)[_0x50e8('0x19')]();};}function respondWithResult(_0x473aa7,_0x54efd3){_0x54efd3=_0x54efd3||0xc8;return function(_0x18596f){if(_0x18596f){return _0x473aa7[_0x50e8('0x18')](_0x54efd3)[_0x50e8('0x1a')](_0x18596f);}};}function respondWithFilteredResult(_0x5c3baa,_0x5524a3){return function(_0x30a872){if(_0x30a872){var _0xf02b48=typeof _0x5524a3[_0x50e8('0x1b')]===_0x50e8('0x1c')&&typeof _0x5524a3[_0x50e8('0x1d')]===_0x50e8('0x1c');var _0x5642bf=_0x30a872['count'];var _0x441f25=_0xf02b48?0x0:_0x5524a3[_0x50e8('0x1b')];var _0x40d060=_0xf02b48?_0x30a872[_0x50e8('0x1e')]:_0x5524a3[_0x50e8('0x1b')]+_0x5524a3[_0x50e8('0x1d')];var _0x1a451d;if(_0x40d060>=_0x5642bf){_0x40d060=_0x5642bf;_0x1a451d=0xc8;}else{_0x1a451d=0xce;}_0x5c3baa['status'](_0x1a451d);return _0x5c3baa[_0x50e8('0x1f')]('Content-Range',_0x441f25+'-'+_0x40d060+'/'+_0x5642bf)[_0x50e8('0x1a')](_0x30a872);}return null;};}function patchUpdates(_0xe04a5c){return function(_0xd263d){try{jsonpatch[_0x50e8('0x20')](_0xd263d,_0xe04a5c,!![]);}catch(_0x46af8e){return BPromise['reject'](_0x46af8e);}return _0xd263d[_0x50e8('0x21')]();};}function saveUpdates(_0x1e4e0d,_0x58110d){return function(_0x31d23c){if(_0x31d23c){return _0x31d23c[_0x50e8('0x22')](_0x1e4e0d)['then'](function(_0x1ce7fc){return _0x1ce7fc;});}return null;};}function removeEntity(_0xe7e56c,_0x4f56b7){return function(_0x47a3d8){if(_0x47a3d8){return _0x47a3d8['destroy']()[_0x50e8('0x23')](function(){_0xe7e56c[_0x50e8('0x18')](0xcc)[_0x50e8('0x19')]();});}};}function handleEntityNotFound(_0x371a1f,_0xc2f832){return function(_0x13b6e9){if(!_0x13b6e9){_0x371a1f['sendStatus'](0x194);}return _0x13b6e9;};}function handleError(_0x3a6442,_0x396611){_0x396611=_0x396611||0x1f4;return function(_0x4b3a09){logger[_0x50e8('0x24')](_0x4b3a09[_0x50e8('0x25')]);if(_0x4b3a09[_0x50e8('0x26')]){delete _0x4b3a09[_0x50e8('0x26')];}_0x3a6442['status'](_0x396611)[_0x50e8('0x27')](_0x4b3a09);};}exports['index']=function(_0x30fedf,_0x39c0c6){var _0x42bbef={},_0x4f0b88={},_0x1041b9={'count':0x0,'rows':[]};var _0x126c99=_[_0x50e8('0x28')](db[_0x50e8('0x29')][_0x50e8('0x2a')],function(_0x18aa31){return{'name':_0x18aa31[_0x50e8('0x2b')],'type':_0x18aa31['type'][_0x50e8('0x2c')]};});_0x4f0b88[_0x50e8('0x2d')]=_['map'](_0x126c99,'name');_0x4f0b88[_0x50e8('0x2e')]=_[_0x50e8('0x2f')](_0x30fedf[_0x50e8('0x2e')]);_0x4f0b88['filters']=_['intersection'](_0x4f0b88[_0x50e8('0x2d')],_0x4f0b88[_0x50e8('0x2e')]);_0x42bbef['attributes']=_[_0x50e8('0x30')](_0x4f0b88[_0x50e8('0x2d')],qs[_0x50e8('0x31')](_0x30fedf[_0x50e8('0x2e')]['fields']));_0x42bbef[_0x50e8('0x32')]=_0x42bbef['attributes'][_0x50e8('0x33')]?_0x42bbef[_0x50e8('0x32')]:_0x4f0b88[_0x50e8('0x2d')];if(!_0x30fedf['query'][_0x50e8('0x34')](_0x50e8('0x35'))){_0x42bbef['limit']=qs[_0x50e8('0x1d')](_0x30fedf[_0x50e8('0x2e')][_0x50e8('0x1d')]);_0x42bbef[_0x50e8('0x1b')]=qs['offset'](_0x30fedf[_0x50e8('0x2e')][_0x50e8('0x1b')]);}_0x42bbef[_0x50e8('0x36')]=qs[_0x50e8('0x37')](_0x30fedf['query'][_0x50e8('0x37')]);_0x42bbef[_0x50e8('0x38')]=qs[_0x50e8('0x39')](_['pick'](_0x30fedf['query'],_0x4f0b88['filters']),_0x126c99);if(_0x30fedf[_0x50e8('0x2e')][_0x50e8('0x3a')]){_0x42bbef[_0x50e8('0x38')]=_[_0x50e8('0x3b')](_0x42bbef[_0x50e8('0x38')],{'$or':_[_0x50e8('0x28')](_0x126c99,function(_0xb566c2){if(_0xb566c2[_0x50e8('0x3c')]!==_0x50e8('0x3d')){var _0x3a1b4d={};_0x3a1b4d[_0xb566c2['name']]={'$like':'%'+_0x30fedf[_0x50e8('0x2e')][_0x50e8('0x3a')]+'%'};return _0x3a1b4d;}})});}_0x42bbef=_[_0x50e8('0x3b')]({},_0x42bbef,_0x30fedf[_0x50e8('0x3e')]);var _0x5dbbe1={'where':_0x42bbef[_0x50e8('0x38')]};return db[_0x50e8('0x29')][_0x50e8('0x1e')](_0x5dbbe1)[_0x50e8('0x23')](function(_0x8e8a97){_0x1041b9['count']=_0x8e8a97;if(_0x30fedf['query'][_0x50e8('0x3f')]){_0x42bbef[_0x50e8('0x40')]=[{'all':!![]}];}return db['Cdr'][_0x50e8('0x41')](_0x42bbef);})[_0x50e8('0x23')](function(_0x3db1ab){_0x1041b9[_0x50e8('0x42')]=_0x3db1ab;return _0x1041b9;})[_0x50e8('0x23')](respondWithFilteredResult(_0x39c0c6,_0x42bbef))[_0x50e8('0x43')](handleError(_0x39c0c6,null));};exports[_0x50e8('0x44')]=function(_0x172049,_0x5e9da3){var _0x3d26bd={'raw':!![],'where':{'id':_0x172049[_0x50e8('0x45')]['id']}},_0x44e0ca={};_0x44e0ca[_0x50e8('0x2d')]=_['keys'](db[_0x50e8('0x29')][_0x50e8('0x2a')]);_0x44e0ca[_0x50e8('0x2e')]=_[_0x50e8('0x2f')](_0x172049['query']);_0x44e0ca[_0x50e8('0x39')]=_['intersection'](_0x44e0ca['model'],_0x44e0ca['query']);_0x3d26bd[_0x50e8('0x32')]=_[_0x50e8('0x30')](_0x44e0ca['model'],qs[_0x50e8('0x31')](_0x172049[_0x50e8('0x2e')][_0x50e8('0x31')]));_0x3d26bd[_0x50e8('0x32')]=_0x3d26bd[_0x50e8('0x32')][_0x50e8('0x33')]?_0x3d26bd['attributes']:_0x44e0ca[_0x50e8('0x2d')];if(_0x172049['query'][_0x50e8('0x3f')]){_0x3d26bd[_0x50e8('0x40')]=[{'all':!![]}];}_0x3d26bd=_['merge']({},_0x3d26bd,_0x172049[_0x50e8('0x3e')]);return db['Cdr'][_0x50e8('0x46')](_0x3d26bd)[_0x50e8('0x23')](handleEntityNotFound(_0x5e9da3,null))[_0x50e8('0x23')](respondWithResult(_0x5e9da3,null))[_0x50e8('0x43')](handleError(_0x5e9da3,null));};exports[_0x50e8('0x47')]=function(_0x3f72ea,_0x229d60){return db[_0x50e8('0x29')][_0x50e8('0x47')](_0x3f72ea[_0x50e8('0x48')],{})[_0x50e8('0x23')](respondWithResult(_0x229d60,0xc9))['catch'](handleError(_0x229d60,null));};exports[_0x50e8('0x22')]=function(_0x275a1b,_0x479431){if(_0x275a1b[_0x50e8('0x48')]['id']){delete _0x275a1b['body']['id'];}return db[_0x50e8('0x29')]['find']({'where':{'id':_0x275a1b[_0x50e8('0x45')]['id']}})[_0x50e8('0x23')](handleEntityNotFound(_0x479431,null))[_0x50e8('0x23')](saveUpdates(_0x275a1b[_0x50e8('0x48')],null))[_0x50e8('0x23')](respondWithResult(_0x479431,null))[_0x50e8('0x43')](handleError(_0x479431,null));};exports[_0x50e8('0x49')]=function(_0x5f256a,_0x3410f3){return db[_0x50e8('0x29')][_0x50e8('0x46')]({'where':{'id':_0x5f256a[_0x50e8('0x45')]['id']}})[_0x50e8('0x23')](handleEntityNotFound(_0x3410f3,null))[_0x50e8('0x23')](removeEntity(_0x3410f3,null))['catch'](handleError(_0x3410f3,null));};exports[_0x50e8('0x4a')]=function(_0x250b28,_0xff2e24){return db[_0x50e8('0x29')]['describe']()[_0x50e8('0x23')](respondWithResult(_0xff2e24,null))[_0x50e8('0x43')](handleError(_0xff2e24,null));};
\ No newline at end of file
+var _0xda19=['rimraf','zip-dir','request-promise','bluebird','util','path','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','papaparse','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../mysqldb','sendStatus','status','offset','limit','undefined','count','set','Content-Range','json','apply','reject','save','update','then','destroy','end','name','send','map','rawAttributes','fieldName','type','model','query','keys','filters','attributes','intersection','fields','length','hasOwnProperty','order','sort','where','pick','merge','VIRTUAL','filter','options','Cdr','includeAll','findAll','catch','show','body','find','params','describe'];(function(_0x31b533,_0xaa5884){var _0x37fe3e=function(_0x4bf9a4){while(--_0x4bf9a4){_0x31b533['push'](_0x31b533['shift']());}};_0x37fe3e(++_0xaa5884);}(_0xda19,0xd5));var _0x9da1=function(_0x39cea8,_0x492d2c){_0x39cea8=_0x39cea8-0x0;var _0x5b136e=_0xda19[_0x39cea8];return _0x5b136e;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x9da1('0x0'));var zipdir=require(_0x9da1('0x1'));var jsonpatch=require('fast-json-patch');var rp=require(_0x9da1('0x2'));var moment=require('moment');var BPromise=require(_0x9da1('0x3'));var Mustache=require('mustache');var util=require(_0x9da1('0x4'));var path=require(_0x9da1('0x5'));var sox=require(_0x9da1('0x6'));var csv=require(_0x9da1('0x7'));var ejs=require(_0x9da1('0x8'));var fs=require('fs');var fs_extra=require(_0x9da1('0x9'));var _=require(_0x9da1('0xa'));var squel=require(_0x9da1('0xb'));var crypto=require(_0x9da1('0xc'));var jsforce=require(_0x9da1('0xd'));var deskjs=require('desk.js');var toCsv=require('to-csv');var querystring=require('querystring');var Papa=require(_0x9da1('0xe'));var Redis=require('ioredis');var authService=require(_0x9da1('0xf'));var qs=require(_0x9da1('0x10'));var as=require(_0x9da1('0x11'));var hardwareService=require(_0x9da1('0x12'));var logger=require(_0x9da1('0x13'))(_0x9da1('0x14'));var utils=require(_0x9da1('0x15'));var config=require('../../config/environment');var licenseUtil=require('../../config/license/util');var db=require(_0x9da1('0x16'))['db'];function respondWithStatusCode(_0x596b6b,_0x4735c7){_0x4735c7=_0x4735c7||0xcc;return function(_0x1d93f8){if(_0x1d93f8){return _0x596b6b[_0x9da1('0x17')](_0x4735c7);}return _0x596b6b[_0x9da1('0x18')](_0x4735c7)['end']();};}function respondWithResult(_0x2837e3,_0x535a13){_0x535a13=_0x535a13||0xc8;return function(_0x4d17e1){if(_0x4d17e1){return _0x2837e3[_0x9da1('0x18')](_0x535a13)['json'](_0x4d17e1);}};}function respondWithFilteredResult(_0x433ff4,_0x43c093){return function(_0x37653d){if(_0x37653d){var _0x1a1a6b=typeof _0x43c093[_0x9da1('0x19')]==='undefined'&&typeof _0x43c093[_0x9da1('0x1a')]===_0x9da1('0x1b');var _0xf83bf8=_0x37653d[_0x9da1('0x1c')];var _0xfb278d=_0x1a1a6b?0x0:_0x43c093[_0x9da1('0x19')];var _0x497676=_0x1a1a6b?_0x37653d['count']:_0x43c093[_0x9da1('0x19')]+_0x43c093[_0x9da1('0x1a')];var _0x1b0e7f;if(_0x497676>=_0xf83bf8){_0x497676=_0xf83bf8;_0x1b0e7f=0xc8;}else{_0x1b0e7f=0xce;}_0x433ff4[_0x9da1('0x18')](_0x1b0e7f);return _0x433ff4[_0x9da1('0x1d')](_0x9da1('0x1e'),_0xfb278d+'-'+_0x497676+'/'+_0xf83bf8)[_0x9da1('0x1f')](_0x37653d);}return null;};}function patchUpdates(_0x47e5cf){return function(_0x1a459c){try{jsonpatch[_0x9da1('0x20')](_0x1a459c,_0x47e5cf,!![]);}catch(_0x9c3b37){return BPromise[_0x9da1('0x21')](_0x9c3b37);}return _0x1a459c[_0x9da1('0x22')]();};}function saveUpdates(_0x4e9d7d,_0x5454d3){return function(_0x14793b){if(_0x14793b){return _0x14793b[_0x9da1('0x23')](_0x4e9d7d)[_0x9da1('0x24')](function(_0x330219){return _0x330219;});}return null;};}function removeEntity(_0x32eb55,_0x165b73){return function(_0x4c60aa){if(_0x4c60aa){return _0x4c60aa[_0x9da1('0x25')]()[_0x9da1('0x24')](function(){_0x32eb55['status'](0xcc)[_0x9da1('0x26')]();});}};}function handleEntityNotFound(_0x3f5680,_0x534210){return function(_0x2fd49c){if(!_0x2fd49c){_0x3f5680[_0x9da1('0x17')](0x194);}return _0x2fd49c;};}function handleError(_0x4b1152,_0x36b87a){_0x36b87a=_0x36b87a||0x1f4;return function(_0x1d6af5){logger['error'](_0x1d6af5['stack']);if(_0x1d6af5[_0x9da1('0x27')]){delete _0x1d6af5[_0x9da1('0x27')];}_0x4b1152['status'](_0x36b87a)[_0x9da1('0x28')](_0x1d6af5);};}exports['index']=function(_0x5a6f2d,_0x5a59c2){var _0x31b826={},_0x404b86={},_0x24c6d5={'count':0x0,'rows':[]};var _0x26dd58=_[_0x9da1('0x29')](db['Cdr'][_0x9da1('0x2a')],function(_0x4e6083){return{'name':_0x4e6083[_0x9da1('0x2b')],'type':_0x4e6083[_0x9da1('0x2c')]['key']};});_0x404b86[_0x9da1('0x2d')]=_[_0x9da1('0x29')](_0x26dd58,'name');_0x404b86[_0x9da1('0x2e')]=_[_0x9da1('0x2f')](_0x5a6f2d[_0x9da1('0x2e')]);_0x404b86[_0x9da1('0x30')]=_['intersection'](_0x404b86['model'],_0x404b86[_0x9da1('0x2e')]);_0x31b826[_0x9da1('0x31')]=_[_0x9da1('0x32')](_0x404b86[_0x9da1('0x2d')],qs[_0x9da1('0x33')](_0x5a6f2d['query'][_0x9da1('0x33')]));_0x31b826[_0x9da1('0x31')]=_0x31b826[_0x9da1('0x31')][_0x9da1('0x34')]?_0x31b826[_0x9da1('0x31')]:_0x404b86[_0x9da1('0x2d')];if(!_0x5a6f2d['query'][_0x9da1('0x35')]('nolimit')){_0x31b826['limit']=qs[_0x9da1('0x1a')](_0x5a6f2d['query'][_0x9da1('0x1a')]);_0x31b826[_0x9da1('0x19')]=qs[_0x9da1('0x19')](_0x5a6f2d[_0x9da1('0x2e')][_0x9da1('0x19')]);}_0x31b826[_0x9da1('0x36')]=qs[_0x9da1('0x37')](_0x5a6f2d[_0x9da1('0x2e')]['sort']);_0x31b826[_0x9da1('0x38')]=qs['filters'](_[_0x9da1('0x39')](_0x5a6f2d['query'],_0x404b86['filters']),_0x26dd58);if(_0x5a6f2d[_0x9da1('0x2e')]['filter']){_0x31b826[_0x9da1('0x38')]=_[_0x9da1('0x3a')](_0x31b826['where'],{'$or':_[_0x9da1('0x29')](_0x26dd58,function(_0x1b750f){if(_0x1b750f[_0x9da1('0x2c')]!==_0x9da1('0x3b')){var _0x56bd49={};_0x56bd49[_0x1b750f[_0x9da1('0x27')]]={'$like':'%'+_0x5a6f2d['query'][_0x9da1('0x3c')]+'%'};return _0x56bd49;}})});}_0x31b826=_['merge']({},_0x31b826,_0x5a6f2d[_0x9da1('0x3d')]);var _0x46c176={'where':_0x31b826['where']};return db[_0x9da1('0x3e')][_0x9da1('0x1c')](_0x46c176)[_0x9da1('0x24')](function(_0x4e9af3){_0x24c6d5['count']=_0x4e9af3;if(_0x5a6f2d['query'][_0x9da1('0x3f')]){_0x31b826['include']=[{'all':!![]}];}return db[_0x9da1('0x3e')][_0x9da1('0x40')](_0x31b826);})[_0x9da1('0x24')](function(_0x43c064){_0x24c6d5['rows']=_0x43c064;return _0x24c6d5;})[_0x9da1('0x24')](respondWithFilteredResult(_0x5a59c2,_0x31b826))[_0x9da1('0x41')](handleError(_0x5a59c2,null));};exports[_0x9da1('0x42')]=function(_0x173dc6,_0x28fc88){var _0x26c225={'raw':!![],'where':{'id':_0x173dc6['params']['id']}},_0x28e0b2={};_0x28e0b2[_0x9da1('0x2d')]=_['keys'](db[_0x9da1('0x3e')]['rawAttributes']);_0x28e0b2[_0x9da1('0x2e')]=_[_0x9da1('0x2f')](_0x173dc6['query']);_0x28e0b2[_0x9da1('0x30')]=_[_0x9da1('0x32')](_0x28e0b2['model'],_0x28e0b2[_0x9da1('0x2e')]);_0x26c225['attributes']=_[_0x9da1('0x32')](_0x28e0b2[_0x9da1('0x2d')],qs['fields'](_0x173dc6['query'][_0x9da1('0x33')]));_0x26c225[_0x9da1('0x31')]=_0x26c225[_0x9da1('0x31')][_0x9da1('0x34')]?_0x26c225[_0x9da1('0x31')]:_0x28e0b2[_0x9da1('0x2d')];if(_0x173dc6[_0x9da1('0x2e')][_0x9da1('0x3f')]){_0x26c225['include']=[{'all':!![]}];}_0x26c225=_[_0x9da1('0x3a')]({},_0x26c225,_0x173dc6[_0x9da1('0x3d')]);return db[_0x9da1('0x3e')]['find'](_0x26c225)[_0x9da1('0x24')](handleEntityNotFound(_0x28fc88,null))[_0x9da1('0x24')](respondWithResult(_0x28fc88,null))[_0x9da1('0x41')](handleError(_0x28fc88,null));};exports['create']=function(_0x336fc3,_0x351d4d){return db[_0x9da1('0x3e')]['create'](_0x336fc3[_0x9da1('0x43')],{})['then'](respondWithResult(_0x351d4d,0xc9))['catch'](handleError(_0x351d4d,null));};exports[_0x9da1('0x23')]=function(_0x43c47d,_0x5afbc7){if(_0x43c47d[_0x9da1('0x43')]['id']){delete _0x43c47d[_0x9da1('0x43')]['id'];}return db['Cdr'][_0x9da1('0x44')]({'where':{'id':_0x43c47d[_0x9da1('0x45')]['id']}})[_0x9da1('0x24')](handleEntityNotFound(_0x5afbc7,null))[_0x9da1('0x24')](saveUpdates(_0x43c47d[_0x9da1('0x43')],null))[_0x9da1('0x24')](respondWithResult(_0x5afbc7,null))[_0x9da1('0x41')](handleError(_0x5afbc7,null));};exports[_0x9da1('0x25')]=function(_0x3889f4,_0x5c9b46){return db[_0x9da1('0x3e')][_0x9da1('0x44')]({'where':{'id':_0x3889f4[_0x9da1('0x45')]['id']}})[_0x9da1('0x24')](handleEntityNotFound(_0x5c9b46,null))['then'](removeEntity(_0x5c9b46,null))['catch'](handleError(_0x5c9b46,null));};exports[_0x9da1('0x46')]=function(_0x6ca1ac,_0x3870dd){return db[_0x9da1('0x3e')][_0x9da1('0x46')]()[_0x9da1('0x24')](respondWithResult(_0x3870dd,null))[_0x9da1('0x41')](handleError(_0x3870dd,null));};
\ No newline at end of file
index 87b14da..a037b97 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(_0x265356,_0x370efd){var _0x3c86e1=function(_0x35ffa6){while(--_0x35ffa6){_0x265356['push'](_0x265356['shift']());}};_0x3c86e1(++_0x370efd);}(_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 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(_0x1f1b58,_0x5a5daf){var _0x96cade=function(_0x5da739){while(--_0x5da739){_0x1f1b58['push'](_0x1f1b58['shift']());}};_0x96cade(++_0x5a5daf);}(_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 da4d181..b7b2448 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x121f=['Cdr,\x20%s,\x20%s,\x20%s','stringify','error','Cdr,\x20%s,\x20%s','message','result','lodash','util','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','client','http','then','info','request\x20sent','debug'];(function(_0x391034,_0x234b05){var _0x3ef833=function(_0x486e90){while(--_0x486e90){_0x391034['push'](_0x391034['shift']());}};_0x3ef833(++_0x234b05);}(_0x121f,0x124));var _0xf121=function(_0x313df3,_0x4fca45){_0x313df3=_0x313df3-0x0;var _0x241d59=_0x121f[_0x313df3];return _0x241d59;};'use strict';var _=require(_0xf121('0x0'));var util=require(_0xf121('0x1'));var moment=require('moment');var BPromise=require(_0xf121('0x2'));var rs=require(_0xf121('0x3'));var fs=require('fs');var Redis=require(_0xf121('0x4'));var db=require(_0xf121('0x5'))['db'];var utils=require(_0xf121('0x6'));var logger=require(_0xf121('0x7'))(_0xf121('0x8'));var config=require(_0xf121('0x9'));var jayson=require('jayson/promise');var client=jayson[_0xf121('0xa')][_0xf121('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x2f7a28,_0x3a94b1,_0x197d8b){return new BPromise(function(_0x3723b9,_0x138955){return client['request'](_0x2f7a28,_0x197d8b)[_0xf121('0xc')](function(_0x5b43bb){logger[_0xf121('0xd')]('Cdr,\x20%s,\x20%s',_0x3a94b1,_0xf121('0xe'));logger[_0xf121('0xf')](_0xf121('0x10'),_0x3a94b1,_0xf121('0xe'),JSON[_0xf121('0x11')](_0x5b43bb));if(_0x5b43bb['error']){if(_0x5b43bb[_0xf121('0x12')]['code']===0x1f4){logger[_0xf121('0x12')](_0xf121('0x13'),_0x3a94b1,_0x5b43bb[_0xf121('0x12')][_0xf121('0x14')]);return _0x138955(_0x5b43bb['error']['message']);}logger[_0xf121('0x12')](_0xf121('0x13'),_0x3a94b1,_0x5b43bb[_0xf121('0x12')][_0xf121('0x14')]);return _0x3723b9(_0x5b43bb[_0xf121('0x12')][_0xf121('0x14')]);}else{logger['info']('Cdr,\x20%s,\x20%s',_0x3a94b1,_0xf121('0xe'));_0x3723b9(_0x5b43bb[_0xf121('0x15')][_0xf121('0x14')]);}})['catch'](function(_0x475026){logger[_0xf121('0x12')](_0xf121('0x13'),_0x3a94b1,_0x475026);_0x138955(_0x475026);});});}
\ No newline at end of file
+var _0x1f0b=['ioredis','../../mysqldb','../../config/utils','rpc','jayson/promise','request','request\x20sent','debug','Cdr,\x20%s,\x20%s,\x20%s','stringify','error','code','Cdr,\x20%s,\x20%s','message','info','result','catch','lodash','util','moment'];(function(_0xf26c2e,_0x56c3ea){var _0x46ecb4=function(_0x1be516){while(--_0x1be516){_0xf26c2e['push'](_0xf26c2e['shift']());}};_0x46ecb4(++_0x56c3ea);}(_0x1f0b,0x129));var _0xb1f0=function(_0x15ab99,_0x10c0c3){_0x15ab99=_0x15ab99-0x0;var _0x3734a7=_0x1f0b[_0x15ab99];return _0x3734a7;};'use strict';var _=require(_0xb1f0('0x0'));var util=require(_0xb1f0('0x1'));var moment=require(_0xb1f0('0x2'));var BPromise=require('bluebird');var rs=require('randomstring');var fs=require('fs');var Redis=require(_0xb1f0('0x3'));var db=require(_0xb1f0('0x4'))['db'];var utils=require(_0xb1f0('0x5'));var logger=require('../../config/logger')(_0xb1f0('0x6'));var config=require('../../config/environment');var jayson=require(_0xb1f0('0x7'));var client=jayson['client']['http']({'port':0x232a});function respondWithRpcPromise(_0x58800a,_0x5702f0,_0x1e5246){return new BPromise(function(_0xc971c6,_0x130feb){return client[_0xb1f0('0x8')](_0x58800a,_0x1e5246)['then'](function(_0x5dab08){logger['info']('Cdr,\x20%s,\x20%s',_0x5702f0,_0xb1f0('0x9'));logger[_0xb1f0('0xa')](_0xb1f0('0xb'),_0x5702f0,_0xb1f0('0x9'),JSON[_0xb1f0('0xc')](_0x5dab08));if(_0x5dab08[_0xb1f0('0xd')]){if(_0x5dab08[_0xb1f0('0xd')][_0xb1f0('0xe')]===0x1f4){logger[_0xb1f0('0xd')](_0xb1f0('0xf'),_0x5702f0,_0x5dab08[_0xb1f0('0xd')][_0xb1f0('0x10')]);return _0x130feb(_0x5dab08[_0xb1f0('0xd')][_0xb1f0('0x10')]);}logger[_0xb1f0('0xd')]('Cdr,\x20%s,\x20%s',_0x5702f0,_0x5dab08['error']['message']);return _0xc971c6(_0x5dab08[_0xb1f0('0xd')][_0xb1f0('0x10')]);}else{logger[_0xb1f0('0x11')](_0xb1f0('0xf'),_0x5702f0,_0xb1f0('0x9'));_0xc971c6(_0x5dab08[_0xb1f0('0x12')][_0xb1f0('0x10')]);}})[_0xb1f0('0x13')](function(_0x22a215){logger[_0xb1f0('0xd')]('Cdr,\x20%s,\x20%s',_0x5702f0,_0x22a215);_0x130feb(_0x22a215);});});}
\ No newline at end of file
index 0ab9218..c5675ee 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(_0x33e9c3,_0x5df2a8){var _0x5d752f=function(_0x340c28){while(--_0x340c28){_0x33e9c3['push'](_0x33e9c3['shift']());}};_0x5d752f(++_0x5df2a8);}(_0xd8b0,0xad));var _0x0d8b=function(_0xa464c9,_0x7c86d8){_0xa464c9=_0xa464c9-0x0;var _0x3d73c4=_0xd8b0[_0xa464c9];return _0x3d73c4;};'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(_0x255a63,_0x2b8f0c){var _0xf6a438=function(_0x1c3a0f){while(--_0x1c3a0f){_0x255a63['push'](_0x255a63['shift']());}};_0xf6a438(++_0x2b8f0c);}(_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 f56d7d0..c9d17d1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd015=['STRING','noop','TEXT','*,*,*,*','sequelize','exports','INTEGER'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0xd015,0x18c));var _0x5d01=function(_0x2bb729,_0x224f4a){_0x2bb729=_0x2bb729-0x0;var _0x426cb5=_0xd015[_0x2bb729];return _0x426cb5;};'use strict';var Sequelize=require(_0x5d01('0x0'));module[_0x5d01('0x1')]={'priority':{'type':Sequelize[_0x5d01('0x2')],'allowNull':![]},'app':{'type':Sequelize[_0x5d01('0x3')],'allowNull':![],'defaultValue':_0x5d01('0x4')},'appdata':{'type':Sequelize[_0x5d01('0x5')]()},'description':{'type':Sequelize[_0x5d01('0x3')]},'interval':{'type':Sequelize[_0x5d01('0x3')],'defaultValue':_0x5d01('0x6')}};
\ No newline at end of file
+var _0x2328=['*,*,*,*','exports','INTEGER','STRING','noop','TEXT'];(function(_0x397e5f,_0x454c8f){var _0x5302b8=function(_0x1a29ef){while(--_0x1a29ef){_0x397e5f['push'](_0x397e5f['shift']());}};_0x5302b8(++_0x454c8f);}(_0x2328,0x157));var _0x8232=function(_0x4cfb85,_0x23ad69){_0x4cfb85=_0x4cfb85-0x0;var _0x577721=_0x2328[_0x4cfb85];return _0x577721;};'use strict';var Sequelize=require('sequelize');module[_0x8232('0x0')]={'priority':{'type':Sequelize[_0x8232('0x1')],'allowNull':![]},'app':{'type':Sequelize[_0x8232('0x2')],'allowNull':![],'defaultValue':_0x8232('0x3')},'appdata':{'type':Sequelize[_0x8232('0x4')]()},'description':{'type':Sequelize[_0x8232('0x2')]},'interval':{'type':Sequelize['STRING'],'defaultValue':_0x8232('0x5')}};
\ No newline at end of file
index 9995338..4123e2e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd1f1=['includeAll','include','merge','options','find','catch','body','params','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','bluebird','mustache','util','sox','to-csv','fs-extra','squel','crypto','jsforce','desk.js','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','json','offset','limit','undefined','count','set','Content-Range','apply','save','update','then','destroy','error','stack','name','send','show','ChatApplication','rawAttributes','query','filters','model','attributes','intersection','fields','length'];(function(_0x9db5d3,_0x4eea5e){var _0x477a81=function(_0x28e774){while(--_0x28e774){_0x9db5d3['push'](_0x9db5d3['shift']());}};_0x477a81(++_0x4eea5e);}(_0xd1f1,0x84));var _0x1d1f=function(_0x16d1b6,_0x5912db){_0x16d1b6=_0x16d1b6-0x0;var _0x2ca1f5=_0xd1f1[_0x16d1b6];return _0x2ca1f5;};'use strict';var emlformat=require(_0x1d1f('0x0'));var rimraf=require(_0x1d1f('0x1'));var zipdir=require(_0x1d1f('0x2'));var jsonpatch=require(_0x1d1f('0x3'));var rp=require(_0x1d1f('0x4'));var moment=require('moment');var BPromise=require(_0x1d1f('0x5'));var Mustache=require(_0x1d1f('0x6'));var util=require(_0x1d1f('0x7'));var path=require('path');var sox=require(_0x1d1f('0x8'));var csv=require(_0x1d1f('0x9'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x1d1f('0xa'));var _=require('lodash');var squel=require(_0x1d1f('0xb'));var crypto=require(_0x1d1f('0xc'));var jsforce=require(_0x1d1f('0xd'));var deskjs=require(_0x1d1f('0xe'));var toCsv=require('to-csv');var querystring=require('querystring');var Papa=require('papaparse');var Redis=require(_0x1d1f('0xf'));var authService=require(_0x1d1f('0x10'));var qs=require(_0x1d1f('0x11'));var as=require(_0x1d1f('0x12'));var hardwareService=require('../../config/license/hardware');var logger=require(_0x1d1f('0x13'))(_0x1d1f('0x14'));var utils=require(_0x1d1f('0x15'));var config=require(_0x1d1f('0x16'));var licenseUtil=require(_0x1d1f('0x17'));var db=require(_0x1d1f('0x18'))['db'];function respondWithStatusCode(_0x4ce793,_0x4c92c1){_0x4c92c1=_0x4c92c1||0xcc;return function(_0x48e2c0){if(_0x48e2c0){return _0x4ce793[_0x1d1f('0x19')](_0x4c92c1);}return _0x4ce793[_0x1d1f('0x1a')](_0x4c92c1)[_0x1d1f('0x1b')]();};}function respondWithResult(_0x2b156d,_0x43e323){_0x43e323=_0x43e323||0xc8;return function(_0x465f20){if(_0x465f20){return _0x2b156d[_0x1d1f('0x1a')](_0x43e323)[_0x1d1f('0x1c')](_0x465f20);}};}function respondWithFilteredResult(_0xfbadad,_0x37af18){return function(_0x2ec931){if(_0x2ec931){var _0x397f74=typeof _0x37af18[_0x1d1f('0x1d')]==='undefined'&&typeof _0x37af18[_0x1d1f('0x1e')]===_0x1d1f('0x1f');var _0x19eb5a=_0x2ec931[_0x1d1f('0x20')];var _0x32b911=_0x397f74?0x0:_0x37af18[_0x1d1f('0x1d')];var _0x336104=_0x397f74?_0x2ec931[_0x1d1f('0x20')]:_0x37af18[_0x1d1f('0x1d')]+_0x37af18[_0x1d1f('0x1e')];var _0x8bfdfd;if(_0x336104>=_0x19eb5a){_0x336104=_0x19eb5a;_0x8bfdfd=0xc8;}else{_0x8bfdfd=0xce;}_0xfbadad[_0x1d1f('0x1a')](_0x8bfdfd);return _0xfbadad[_0x1d1f('0x21')](_0x1d1f('0x22'),_0x32b911+'-'+_0x336104+'/'+_0x19eb5a)[_0x1d1f('0x1c')](_0x2ec931);}return null;};}function patchUpdates(_0x413c87){return function(_0x2dac03){try{jsonpatch[_0x1d1f('0x23')](_0x2dac03,_0x413c87,!![]);}catch(_0x10ba0d){return BPromise['reject'](_0x10ba0d);}return _0x2dac03[_0x1d1f('0x24')]();};}function saveUpdates(_0x2ca72d,_0x4f1947){return function(_0x18f05b){if(_0x18f05b){return _0x18f05b[_0x1d1f('0x25')](_0x2ca72d)[_0x1d1f('0x26')](function(_0x2a6c09){return _0x2a6c09;});}return null;};}function removeEntity(_0xbd591a,_0x45cd59){return function(_0x5aae81){if(_0x5aae81){return _0x5aae81[_0x1d1f('0x27')]()[_0x1d1f('0x26')](function(){_0xbd591a[_0x1d1f('0x1a')](0xcc)[_0x1d1f('0x1b')]();});}};}function handleEntityNotFound(_0x39313f,_0x571ad3){return function(_0x43a03a){if(!_0x43a03a){_0x39313f[_0x1d1f('0x19')](0x194);}return _0x43a03a;};}function handleError(_0x5e32b7,_0x4ec531){_0x4ec531=_0x4ec531||0x1f4;return function(_0x4030b0){logger[_0x1d1f('0x28')](_0x4030b0[_0x1d1f('0x29')]);if(_0x4030b0[_0x1d1f('0x2a')]){delete _0x4030b0['name'];}_0x5e32b7['status'](_0x4ec531)[_0x1d1f('0x2b')](_0x4030b0);};}exports[_0x1d1f('0x2c')]=function(_0x2b99e3,_0x1dcac6){var _0x285c98={'raw':!![],'where':{'id':_0x2b99e3['params']['id']}},_0x44e3c1={};_0x44e3c1['model']=_['keys'](db[_0x1d1f('0x2d')][_0x1d1f('0x2e')]);_0x44e3c1[_0x1d1f('0x2f')]=_['keys'](_0x2b99e3[_0x1d1f('0x2f')]);_0x44e3c1[_0x1d1f('0x30')]=_['intersection'](_0x44e3c1[_0x1d1f('0x31')],_0x44e3c1[_0x1d1f('0x2f')]);_0x285c98[_0x1d1f('0x32')]=_[_0x1d1f('0x33')](_0x44e3c1[_0x1d1f('0x31')],qs[_0x1d1f('0x34')](_0x2b99e3[_0x1d1f('0x2f')][_0x1d1f('0x34')]));_0x285c98[_0x1d1f('0x32')]=_0x285c98[_0x1d1f('0x32')][_0x1d1f('0x35')]?_0x285c98[_0x1d1f('0x32')]:_0x44e3c1[_0x1d1f('0x31')];if(_0x2b99e3[_0x1d1f('0x2f')][_0x1d1f('0x36')]){_0x285c98[_0x1d1f('0x37')]=[{'all':!![]}];}_0x285c98=_[_0x1d1f('0x38')]({},_0x285c98,_0x2b99e3[_0x1d1f('0x39')]);return db[_0x1d1f('0x2d')][_0x1d1f('0x3a')](_0x285c98)[_0x1d1f('0x26')](handleEntityNotFound(_0x1dcac6,null))[_0x1d1f('0x26')](respondWithResult(_0x1dcac6,null))[_0x1d1f('0x3b')](handleError(_0x1dcac6,null));};exports['update']=function(_0x408004,_0x2211b9){if(_0x408004[_0x1d1f('0x3c')]['id']){delete _0x408004[_0x1d1f('0x3c')]['id'];}return db['ChatApplication']['find']({'where':{'id':_0x408004[_0x1d1f('0x3d')]['id']}})[_0x1d1f('0x26')](handleEntityNotFound(_0x2211b9,null))[_0x1d1f('0x26')](saveUpdates(_0x408004[_0x1d1f('0x3c')],null))[_0x1d1f('0x26')](respondWithResult(_0x2211b9,null))[_0x1d1f('0x3b')](handleError(_0x2211b9,null));};exports['destroy']=function(_0x1350cd,_0x512b0c){return db['ChatApplication'][_0x1d1f('0x3a')]({'where':{'id':_0x1350cd[_0x1d1f('0x3d')]['id']}})['then'](handleEntityNotFound(_0x512b0c,null))[_0x1d1f('0x26')](removeEntity(_0x512b0c,null))[_0x1d1f('0x3b')](handleError(_0x512b0c,null));};
\ No newline at end of file
+var _0xcce8=['../../config/logger','api','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','json','offset','undefined','limit','count','set','Content-Range','apply','save','update','then','destroy','error','stack','name','send','show','params','model','keys','ChatApplication','rawAttributes','query','filters','intersection','attributes','fields','length','includeAll','include','merge','options','find','catch','body','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','to-csv','ejs','fs-extra','lodash','squel','crypto','querystring','../../components/auth/service','../../components/parsers/qs','../../config/license/hardware'];(function(_0x430b24,_0x1f085e){var _0x5cee14=function(_0x15fcf4){while(--_0x15fcf4){_0x430b24['push'](_0x430b24['shift']());}};_0x5cee14(++_0x1f085e);}(_0xcce8,0x1a5));var _0x8cce=function(_0x252cd1,_0x4712d1){_0x252cd1=_0x252cd1-0x0;var _0x2e3cc1=_0xcce8[_0x252cd1];return _0x2e3cc1;};'use strict';var emlformat=require(_0x8cce('0x0'));var rimraf=require(_0x8cce('0x1'));var zipdir=require(_0x8cce('0x2'));var jsonpatch=require(_0x8cce('0x3'));var rp=require(_0x8cce('0x4'));var moment=require(_0x8cce('0x5'));var BPromise=require(_0x8cce('0x6'));var Mustache=require(_0x8cce('0x7'));var util=require(_0x8cce('0x8'));var path=require(_0x8cce('0x9'));var sox=require('sox');var csv=require(_0x8cce('0xa'));var ejs=require(_0x8cce('0xb'));var fs=require('fs');var fs_extra=require(_0x8cce('0xc'));var _=require(_0x8cce('0xd'));var squel=require(_0x8cce('0xe'));var crypto=require(_0x8cce('0xf'));var jsforce=require('jsforce');var deskjs=require('desk.js');var toCsv=require('to-csv');var querystring=require(_0x8cce('0x10'));var Papa=require('papaparse');var Redis=require('ioredis');var authService=require(_0x8cce('0x11'));var qs=require(_0x8cce('0x12'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x8cce('0x13'));var logger=require(_0x8cce('0x14'))(_0x8cce('0x15'));var utils=require('../../config/utils');var config=require(_0x8cce('0x16'));var licenseUtil=require(_0x8cce('0x17'));var db=require(_0x8cce('0x18'))['db'];function respondWithStatusCode(_0x3ce0b5,_0x54f76c){_0x54f76c=_0x54f76c||0xcc;return function(_0x2e1eeb){if(_0x2e1eeb){return _0x3ce0b5[_0x8cce('0x19')](_0x54f76c);}return _0x3ce0b5[_0x8cce('0x1a')](_0x54f76c)[_0x8cce('0x1b')]();};}function respondWithResult(_0x4c7018,_0x2ebd26){_0x2ebd26=_0x2ebd26||0xc8;return function(_0x59b900){if(_0x59b900){return _0x4c7018['status'](_0x2ebd26)[_0x8cce('0x1c')](_0x59b900);}};}function respondWithFilteredResult(_0x556f59,_0x4548a1){return function(_0x3e13e5){if(_0x3e13e5){var _0x13fa21=typeof _0x4548a1[_0x8cce('0x1d')]===_0x8cce('0x1e')&&typeof _0x4548a1[_0x8cce('0x1f')]===_0x8cce('0x1e');var _0x44fd50=_0x3e13e5[_0x8cce('0x20')];var _0x8f3333=_0x13fa21?0x0:_0x4548a1['offset'];var _0x8ca96f=_0x13fa21?_0x3e13e5[_0x8cce('0x20')]:_0x4548a1['offset']+_0x4548a1[_0x8cce('0x1f')];var _0x1f7ce2;if(_0x8ca96f>=_0x44fd50){_0x8ca96f=_0x44fd50;_0x1f7ce2=0xc8;}else{_0x1f7ce2=0xce;}_0x556f59[_0x8cce('0x1a')](_0x1f7ce2);return _0x556f59[_0x8cce('0x21')](_0x8cce('0x22'),_0x8f3333+'-'+_0x8ca96f+'/'+_0x44fd50)['json'](_0x3e13e5);}return null;};}function patchUpdates(_0x17c30d){return function(_0x221fe2){try{jsonpatch[_0x8cce('0x23')](_0x221fe2,_0x17c30d,!![]);}catch(_0x472169){return BPromise['reject'](_0x472169);}return _0x221fe2[_0x8cce('0x24')]();};}function saveUpdates(_0x49af29,_0x38a5a5){return function(_0x2aa625){if(_0x2aa625){return _0x2aa625[_0x8cce('0x25')](_0x49af29)[_0x8cce('0x26')](function(_0x54611c){return _0x54611c;});}return null;};}function removeEntity(_0x1b064c,_0x20bedb){return function(_0x244bb7){if(_0x244bb7){return _0x244bb7[_0x8cce('0x27')]()[_0x8cce('0x26')](function(){_0x1b064c['status'](0xcc)[_0x8cce('0x1b')]();});}};}function handleEntityNotFound(_0x3e191d,_0xfd5aae){return function(_0x53f7d5){if(!_0x53f7d5){_0x3e191d['sendStatus'](0x194);}return _0x53f7d5;};}function handleError(_0x3b55c4,_0x592e11){_0x592e11=_0x592e11||0x1f4;return function(_0x57dca4){logger[_0x8cce('0x28')](_0x57dca4[_0x8cce('0x29')]);if(_0x57dca4[_0x8cce('0x2a')]){delete _0x57dca4[_0x8cce('0x2a')];}_0x3b55c4[_0x8cce('0x1a')](_0x592e11)[_0x8cce('0x2b')](_0x57dca4);};}exports[_0x8cce('0x2c')]=function(_0x16d469,_0x28d61b){var _0x3b1c49={'raw':!![],'where':{'id':_0x16d469[_0x8cce('0x2d')]['id']}},_0x4cb528={};_0x4cb528[_0x8cce('0x2e')]=_[_0x8cce('0x2f')](db[_0x8cce('0x30')][_0x8cce('0x31')]);_0x4cb528['query']=_[_0x8cce('0x2f')](_0x16d469[_0x8cce('0x32')]);_0x4cb528[_0x8cce('0x33')]=_[_0x8cce('0x34')](_0x4cb528[_0x8cce('0x2e')],_0x4cb528[_0x8cce('0x32')]);_0x3b1c49[_0x8cce('0x35')]=_[_0x8cce('0x34')](_0x4cb528[_0x8cce('0x2e')],qs[_0x8cce('0x36')](_0x16d469['query'][_0x8cce('0x36')]));_0x3b1c49[_0x8cce('0x35')]=_0x3b1c49['attributes'][_0x8cce('0x37')]?_0x3b1c49[_0x8cce('0x35')]:_0x4cb528[_0x8cce('0x2e')];if(_0x16d469[_0x8cce('0x32')][_0x8cce('0x38')]){_0x3b1c49[_0x8cce('0x39')]=[{'all':!![]}];}_0x3b1c49=_[_0x8cce('0x3a')]({},_0x3b1c49,_0x16d469[_0x8cce('0x3b')]);return db[_0x8cce('0x30')][_0x8cce('0x3c')](_0x3b1c49)['then'](handleEntityNotFound(_0x28d61b,null))[_0x8cce('0x26')](respondWithResult(_0x28d61b,null))[_0x8cce('0x3d')](handleError(_0x28d61b,null));};exports[_0x8cce('0x25')]=function(_0x4b8cfc,_0x2c60b4){if(_0x4b8cfc['body']['id']){delete _0x4b8cfc[_0x8cce('0x3e')]['id'];}return db[_0x8cce('0x30')][_0x8cce('0x3c')]({'where':{'id':_0x4b8cfc['params']['id']}})[_0x8cce('0x26')](handleEntityNotFound(_0x2c60b4,null))[_0x8cce('0x26')](saveUpdates(_0x4b8cfc[_0x8cce('0x3e')],null))[_0x8cce('0x26')](respondWithResult(_0x2c60b4,null))['catch'](handleError(_0x2c60b4,null));};exports['destroy']=function(_0x116926,_0x1cf39a){return db[_0x8cce('0x30')][_0x8cce('0x3c')]({'where':{'id':_0x116926[_0x8cce('0x2d')]['id']}})[_0x8cce('0x26')](handleEntityNotFound(_0x1cf39a,null))[_0x8cce('0x26')](removeEntity(_0x1cf39a,null))[_0x8cce('0x3d')](handleError(_0x1cf39a,null));};
\ No newline at end of file
index b5bff8e..7a9562b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8751=['path','../../config/environment','exports','define','ChatApplication','chat_applications','utf8mb4','utf8mb4_unicode_ci','util','../../config/logger','api','moment'];(function(_0x56f935,_0xbb3e13){var _0x25ff2f=function(_0x3d0fad){while(--_0x3d0fad){_0x56f935['push'](_0x56f935['shift']());}};_0x25ff2f(++_0xbb3e13);}(_0x8751,0xf8));var _0x1875=function(_0x42b156,_0x655a21){_0x42b156=_0x42b156-0x0;var _0x206ce5=_0x8751[_0x42b156];return _0x206ce5;};'use strict';var _=require('lodash');var util=require(_0x1875('0x0'));var logger=require(_0x1875('0x1'))(_0x1875('0x2'));var moment=require(_0x1875('0x3'));var BPromise=require('bluebird');var rp=require('request-promise');var fs=require('fs');var path=require(_0x1875('0x4'));var rimraf=require('rimraf');var config=require(_0x1875('0x5'));var attributes=require('./chatApplication.attributes');module[_0x1875('0x6')]=function(_0x431b9b,_0x20c0e7){return _0x431b9b[_0x1875('0x7')](_0x1875('0x8'),attributes,{'tableName':_0x1875('0x9'),'paranoid':![],'indexes':[],'timestamps':!![],'charset':_0x1875('0xa'),'collate':_0x1875('0xb')});};
\ No newline at end of file
+var _0x1571=['../../config/environment','./chatApplication.attributes','exports','utf8mb4_unicode_ci','util','api','moment','request-promise','path'];(function(_0x335251,_0x5efde1){var _0x12ae10=function(_0x26e2b6){while(--_0x26e2b6){_0x335251['push'](_0x335251['shift']());}};_0x12ae10(++_0x5efde1);}(_0x1571,0x199));var _0x1157=function(_0x4fe328,_0x5e456d){_0x4fe328=_0x4fe328-0x0;var _0x11a53b=_0x1571[_0x4fe328];return _0x11a53b;};'use strict';var _=require('lodash');var util=require(_0x1157('0x0'));var logger=require('../../config/logger')(_0x1157('0x1'));var moment=require(_0x1157('0x2'));var BPromise=require('bluebird');var rp=require(_0x1157('0x3'));var fs=require('fs');var path=require(_0x1157('0x4'));var rimraf=require('rimraf');var config=require(_0x1157('0x5'));var attributes=require(_0x1157('0x6'));module[_0x1157('0x7')]=function(_0x2f0a3f,_0xa59bd6){return _0x2f0a3f['define']('ChatApplication',attributes,{'tableName':'chat_applications','paranoid':![],'indexes':[],'timestamps':!![],'charset':'utf8mb4','collate':_0x1157('0x8')});};
\ No newline at end of file
index 50b7407..8465589 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc877=['message','result','catch','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/logger','rpc','../../config/environment','jayson/promise','client','request','info','ChatApplication,\x20%s,\x20%s','debug','ChatApplication,\x20%s,\x20%s,\x20%s','stringify','error','code'];(function(_0x265aa2,_0x220072){var _0x447a3a=function(_0x1512cc){while(--_0x1512cc){_0x265aa2['push'](_0x265aa2['shift']());}};_0x447a3a(++_0x220072);}(_0xc877,0x76));var _0x7c87=function(_0x18e535,_0x41ed0a){_0x18e535=_0x18e535-0x0;var _0x333c33=_0xc877[_0x18e535];return _0x333c33;};'use strict';var _=require(_0x7c87('0x0'));var util=require(_0x7c87('0x1'));var moment=require(_0x7c87('0x2'));var BPromise=require(_0x7c87('0x3'));var rs=require(_0x7c87('0x4'));var fs=require('fs');var Redis=require(_0x7c87('0x5'));var db=require(_0x7c87('0x6'))['db'];var utils=require('../../config/utils');var logger=require(_0x7c87('0x7'))(_0x7c87('0x8'));var config=require(_0x7c87('0x9'));var jayson=require(_0x7c87('0xa'));var client=jayson[_0x7c87('0xb')]['http']({'port':0x232a});function respondWithRpcPromise(_0x189c0a,_0x5c12ae,_0x241b05){return new BPromise(function(_0x323520,_0x208aca){return client[_0x7c87('0xc')](_0x189c0a,_0x241b05)['then'](function(_0xc2303a){logger[_0x7c87('0xd')](_0x7c87('0xe'),_0x5c12ae,'request\x20sent');logger[_0x7c87('0xf')](_0x7c87('0x10'),_0x5c12ae,'request\x20sent',JSON[_0x7c87('0x11')](_0xc2303a));if(_0xc2303a[_0x7c87('0x12')]){if(_0xc2303a[_0x7c87('0x12')][_0x7c87('0x13')]===0x1f4){logger['error'](_0x7c87('0xe'),_0x5c12ae,_0xc2303a[_0x7c87('0x12')]['message']);return _0x208aca(_0xc2303a['error']['message']);}logger[_0x7c87('0x12')](_0x7c87('0xe'),_0x5c12ae,_0xc2303a['error'][_0x7c87('0x14')]);return _0x323520(_0xc2303a[_0x7c87('0x12')][_0x7c87('0x14')]);}else{logger[_0x7c87('0xd')](_0x7c87('0xe'),_0x5c12ae,'request\x20sent');_0x323520(_0xc2303a[_0x7c87('0x15')]['message']);}})[_0x7c87('0x16')](function(_0x4e5570){logger[_0x7c87('0x12')](_0x7c87('0xe'),_0x5c12ae,_0x4e5570);_0x208aca(_0x4e5570);});});}
\ No newline at end of file
+var _0xcaf1=['../../config/logger','rpc','../../config/environment','jayson/promise','client','http','request','then','info','request\x20sent','debug','stringify','error','code','ChatApplication,\x20%s,\x20%s','message','result','util','moment','bluebird','../../mysqldb','../../config/utils'];(function(_0x3b309f,_0x5c3215){var _0x268d4f=function(_0x4cc8e9){while(--_0x4cc8e9){_0x3b309f['push'](_0x3b309f['shift']());}};_0x268d4f(++_0x5c3215);}(_0xcaf1,0x19d));var _0x1caf=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0xcaf1[_0x3dd15e];return _0x231fd0;};'use strict';var _=require('lodash');var util=require(_0x1caf('0x0'));var moment=require(_0x1caf('0x1'));var BPromise=require(_0x1caf('0x2'));var rs=require('randomstring');var fs=require('fs');var Redis=require('ioredis');var db=require(_0x1caf('0x3'))['db'];var utils=require(_0x1caf('0x4'));var logger=require(_0x1caf('0x5'))(_0x1caf('0x6'));var config=require(_0x1caf('0x7'));var jayson=require(_0x1caf('0x8'));var client=jayson[_0x1caf('0x9')][_0x1caf('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x10f48a,_0x50b25b,_0x5640f9){return new BPromise(function(_0x4436a9,_0x46ab5f){return client[_0x1caf('0xb')](_0x10f48a,_0x5640f9)[_0x1caf('0xc')](function(_0x2e60c3){logger[_0x1caf('0xd')]('ChatApplication,\x20%s,\x20%s',_0x50b25b,_0x1caf('0xe'));logger[_0x1caf('0xf')]('ChatApplication,\x20%s,\x20%s,\x20%s',_0x50b25b,_0x1caf('0xe'),JSON[_0x1caf('0x10')](_0x2e60c3));if(_0x2e60c3['error']){if(_0x2e60c3[_0x1caf('0x11')][_0x1caf('0x12')]===0x1f4){logger[_0x1caf('0x11')](_0x1caf('0x13'),_0x50b25b,_0x2e60c3[_0x1caf('0x11')][_0x1caf('0x14')]);return _0x46ab5f(_0x2e60c3[_0x1caf('0x11')][_0x1caf('0x14')]);}logger[_0x1caf('0x11')]('ChatApplication,\x20%s,\x20%s',_0x50b25b,_0x2e60c3[_0x1caf('0x11')][_0x1caf('0x14')]);return _0x4436a9(_0x2e60c3[_0x1caf('0x11')][_0x1caf('0x14')]);}else{logger[_0x1caf('0xd')]('ChatApplication,\x20%s,\x20%s',_0x50b25b,_0x1caf('0xe'));_0x4436a9(_0x2e60c3[_0x1caf('0x15')][_0x1caf('0x14')]);}})['catch'](function(_0x12c4ab){logger[_0x1caf('0x11')](_0x1caf('0x13'),_0x50b25b,_0x12c4ab);_0x46ab5f(_0x12c4ab);});});}
\ No newline at end of file
index fc04fde..1442c1a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7954=['delete','destroy','exports','multer','util','path','connect-timeout','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','get','/:id','isAuthenticated','show','update'];(function(_0x51ef15,_0x106cb3){var _0x98939f=function(_0x5a99a2){while(--_0x5a99a2){_0x51ef15['push'](_0x51ef15['shift']());}};_0x98939f(++_0x106cb3);}(_0x7954,0x8b));var _0x4795=function(_0x53a066,_0x109f6d){_0x53a066=_0x53a066-0x0;var _0x5362ac=_0x7954[_0x53a066];return _0x5362ac;};'use strict';var multer=require(_0x4795('0x0'));var util=require(_0x4795('0x1'));var path=require(_0x4795('0x2'));var timeout=require(_0x4795('0x3'));var express=require('express');var router=express[_0x4795('0x4')]();var fs_extra=require(_0x4795('0x5'));var auth=require(_0x4795('0x6'));var interaction=require(_0x4795('0x7'));var config=require(_0x4795('0x8'));var controller=require('./chatApplication.controller');router[_0x4795('0x9')](_0x4795('0xa'),auth[_0x4795('0xb')](),controller[_0x4795('0xc')]);router['put']('/:id',auth[_0x4795('0xb')](),controller[_0x4795('0xd')]);router[_0x4795('0xe')](_0x4795('0xa'),auth[_0x4795('0xb')](),controller[_0x4795('0xf')]);module[_0x4795('0x10')]=router;
\ No newline at end of file
+var _0xe06f=['../../config/environment','./chatApplication.controller','get','/:id','isAuthenticated','show','put','update','delete','exports','util','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service'];(function(_0x44e4e8,_0x254701){var _0x574ad3=function(_0x20d202){while(--_0x20d202){_0x44e4e8['push'](_0x44e4e8['shift']());}};_0x574ad3(++_0x254701);}(_0xe06f,0x180));var _0xfe06=function(_0x20550f,_0xf0706f){_0x20550f=_0x20550f-0x0;var _0x3ea1be=_0xe06f[_0x20550f];return _0x3ea1be;};'use strict';var multer=require('multer');var util=require(_0xfe06('0x0'));var path=require('path');var timeout=require(_0xfe06('0x1'));var express=require(_0xfe06('0x2'));var router=express[_0xfe06('0x3')]();var fs_extra=require(_0xfe06('0x4'));var auth=require(_0xfe06('0x5'));var interaction=require(_0xfe06('0x6'));var config=require(_0xfe06('0x7'));var controller=require(_0xfe06('0x8'));router[_0xfe06('0x9')](_0xfe06('0xa'),auth[_0xfe06('0xb')](),controller[_0xfe06('0xc')]);router[_0xfe06('0xd')](_0xfe06('0xa'),auth[_0xfe06('0xb')](),controller[_0xfe06('0xe')]);router[_0xfe06('0xf')]('/:id',auth[_0xfe06('0xb')](),controller['destroy']);module[_0xfe06('0x10')]=router;
\ No newline at end of file
index dcb4fad..a3016b1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf55d=['exports','STRING','BOOLEAN','sequelize'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0xf55d,0x14b));var _0xdf55=function(_0x3eec85,_0x3385d4){_0x3eec85=_0x3eec85-0x0;var _0x5cabaa=_0xf55d[_0x3eec85];return _0x5cabaa;};'use strict';var Sequelize=require(_0xdf55('0x0'));module[_0xdf55('0x1')]={'name':{'type':Sequelize[_0xdf55('0x2')],'allowNull':![]},'description':{'type':Sequelize['STRING']},'write':{'type':Sequelize[_0xdf55('0x3')],'defaultValue':!![]}};
\ No newline at end of file
+var _0x3bf0=['exports','STRING','BOOLEAN','sequelize'];(function(_0x3ab51d,_0x2fa01d){var _0x29a04e=function(_0x7807b0){while(--_0x7807b0){_0x3ab51d['push'](_0x3ab51d['shift']());}};_0x29a04e(++_0x2fa01d);}(_0x3bf0,0x83));var _0x03bf=function(_0x5754e3,_0x5d9437){_0x5754e3=_0x5754e3-0x0;var _0x41b1aa=_0x3bf0[_0x5754e3];return _0x41b1aa;};'use strict';var Sequelize=require(_0x03bf('0x0'));module[_0x03bf('0x1')]={'name':{'type':Sequelize[_0x03bf('0x2')],'allowNull':![]},'description':{'type':Sequelize[_0x03bf('0x2')]},'write':{'type':Sequelize[_0x03bf('0x3')],'defaultValue':!![]}};
\ No newline at end of file
index 7373aa0..5ed3a17 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc45e=['api','../../config/utils','../../config/environment','../../config/license/util','redis','defaults','localhost','./chatGroup.socket','register','sendStatus','status','json','undefined','count','offset','limit','set','Content-Range','reject','save','then','destroy','end','error','stack','name','send','index','map','ChatGroup','rawAttributes','fieldName','type','key','model','query','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','pick','filter','VIRTUAL','merge','options','includeAll','findAll','rows','catch','show','params','keys','find','create','body','update','describe','getUnread','user','toInteger','addMembers','omit','ids','getMembers','User','removeMembers','addMessage','ChatInternalMessage','getMessages','findOne','$gte','format','YYYY-MM-DD\x20HH:mm:ss','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','ejs','fs-extra','lodash','squel','crypto','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/advancedSearch'];(function(_0x31fa64,_0x61cbe0){var _0x1077df=function(_0xc79c7b){while(--_0xc79c7b){_0x31fa64['push'](_0x31fa64['shift']());}};_0x1077df(++_0x61cbe0);}(_0xc45e,0x113));var _0xec45=function(_0x121df1,_0x3a06c0){_0x121df1=_0x121df1-0x0;var _0x59b6f8=_0xc45e[_0x121df1];return _0x59b6f8;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0xec45('0x0'));var zipdir=require(_0xec45('0x1'));var jsonpatch=require(_0xec45('0x2'));var rp=require(_0xec45('0x3'));var moment=require(_0xec45('0x4'));var BPromise=require(_0xec45('0x5'));var Mustache=require(_0xec45('0x6'));var util=require(_0xec45('0x7'));var path=require('path');var sox=require('sox');var csv=require('to-csv');var ejs=require(_0xec45('0x8'));var fs=require('fs');var fs_extra=require(_0xec45('0x9'));var _=require(_0xec45('0xa'));var squel=require(_0xec45('0xb'));var crypto=require(_0xec45('0xc'));var jsforce=require('jsforce');var deskjs=require(_0xec45('0xd'));var toCsv=require('to-csv');var querystring=require(_0xec45('0xe'));var Papa=require(_0xec45('0xf'));var Redis=require(_0xec45('0x10'));var authService=require(_0xec45('0x11'));var qs=require('../../components/parsers/qs');var as=require(_0xec45('0x12'));var hardwareService=require('../../config/license/hardware');var logger=require('../../config/logger')(_0xec45('0x13'));var utils=require(_0xec45('0x14'));var config=require(_0xec45('0x15'));var licenseUtil=require(_0xec45('0x16'));var db=require('../../mysqldb')['db'];config[_0xec45('0x17')]=_[_0xec45('0x18')](config[_0xec45('0x17')],{'host':_0xec45('0x19'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0xec45('0x17')]));require(_0xec45('0x1a'))[_0xec45('0x1b')](socket);function respondWithStatusCode(_0x140cf6,_0x4b56d1){_0x4b56d1=_0x4b56d1||0xcc;return function(_0x302385){if(_0x302385){return _0x140cf6[_0xec45('0x1c')](_0x4b56d1);}return _0x140cf6[_0xec45('0x1d')](_0x4b56d1)['end']();};}function respondWithResult(_0x5019c4,_0x5ae880){_0x5ae880=_0x5ae880||0xc8;return function(_0x4aa27b){if(_0x4aa27b){return _0x5019c4[_0xec45('0x1d')](_0x5ae880)[_0xec45('0x1e')](_0x4aa27b);}};}function respondWithFilteredResult(_0x1daeb0,_0x5295f8){return function(_0x461962){if(_0x461962){var _0x92a2ca=typeof _0x5295f8['offset']===_0xec45('0x1f')&&typeof _0x5295f8['limit']==='undefined';var _0x5e08a4=_0x461962[_0xec45('0x20')];var _0x1e983c=_0x92a2ca?0x0:_0x5295f8['offset'];var _0x2bb95e=_0x92a2ca?_0x461962[_0xec45('0x20')]:_0x5295f8[_0xec45('0x21')]+_0x5295f8[_0xec45('0x22')];var _0x2fcd6e;if(_0x2bb95e>=_0x5e08a4){_0x2bb95e=_0x5e08a4;_0x2fcd6e=0xc8;}else{_0x2fcd6e=0xce;}_0x1daeb0[_0xec45('0x1d')](_0x2fcd6e);return _0x1daeb0[_0xec45('0x23')](_0xec45('0x24'),_0x1e983c+'-'+_0x2bb95e+'/'+_0x5e08a4)[_0xec45('0x1e')](_0x461962);}return null;};}function patchUpdates(_0x58b546){return function(_0xb675f1){try{jsonpatch['apply'](_0xb675f1,_0x58b546,!![]);}catch(_0x32ddd1){return BPromise[_0xec45('0x25')](_0x32ddd1);}return _0xb675f1[_0xec45('0x26')]();};}function saveUpdates(_0x20ca28,_0x58a133){return function(_0x2d54b1){if(_0x2d54b1){return _0x2d54b1['update'](_0x20ca28)[_0xec45('0x27')](function(_0x1a7ad1){return _0x1a7ad1;});}return null;};}function removeEntity(_0x2bf96d,_0x1e8fd1){return function(_0x23c2ef){if(_0x23c2ef){return _0x23c2ef[_0xec45('0x28')]()[_0xec45('0x27')](function(){_0x2bf96d[_0xec45('0x1d')](0xcc)[_0xec45('0x29')]();});}};}function handleEntityNotFound(_0x59fae0,_0x40907d){return function(_0x38515a){if(!_0x38515a){_0x59fae0[_0xec45('0x1c')](0x194);}return _0x38515a;};}function handleError(_0x427f60,_0x547cd7){_0x547cd7=_0x547cd7||0x1f4;return function(_0x17808a){logger[_0xec45('0x2a')](_0x17808a[_0xec45('0x2b')]);if(_0x17808a[_0xec45('0x2c')]){delete _0x17808a[_0xec45('0x2c')];}_0x427f60[_0xec45('0x1d')](_0x547cd7)[_0xec45('0x2d')](_0x17808a);};}exports[_0xec45('0x2e')]=function(_0x1cbe08,_0x21b927){var _0x32dc0a={},_0x563f83={},_0x35d9bf={'count':0x0,'rows':[]};var _0x45e25c=_[_0xec45('0x2f')](db[_0xec45('0x30')][_0xec45('0x31')],function(_0x4c90b4){return{'name':_0x4c90b4[_0xec45('0x32')],'type':_0x4c90b4[_0xec45('0x33')][_0xec45('0x34')]};});_0x563f83[_0xec45('0x35')]=_[_0xec45('0x2f')](_0x45e25c,_0xec45('0x2c'));_0x563f83[_0xec45('0x36')]=_['keys'](_0x1cbe08['query']);_0x563f83[_0xec45('0x37')]=_[_0xec45('0x38')](_0x563f83[_0xec45('0x35')],_0x563f83[_0xec45('0x36')]);_0x32dc0a[_0xec45('0x39')]=_[_0xec45('0x38')](_0x563f83[_0xec45('0x35')],qs[_0xec45('0x3a')](_0x1cbe08[_0xec45('0x36')][_0xec45('0x3a')]));_0x32dc0a[_0xec45('0x39')]=_0x32dc0a[_0xec45('0x39')][_0xec45('0x3b')]?_0x32dc0a[_0xec45('0x39')]:_0x563f83[_0xec45('0x35')];if(!_0x1cbe08['query'][_0xec45('0x3c')](_0xec45('0x3d'))){_0x32dc0a[_0xec45('0x22')]=qs[_0xec45('0x22')](_0x1cbe08[_0xec45('0x36')]['limit']);_0x32dc0a[_0xec45('0x21')]=qs[_0xec45('0x21')](_0x1cbe08[_0xec45('0x36')][_0xec45('0x21')]);}_0x32dc0a[_0xec45('0x3e')]=qs[_0xec45('0x3f')](_0x1cbe08[_0xec45('0x36')][_0xec45('0x3f')]);_0x32dc0a[_0xec45('0x40')]=qs[_0xec45('0x37')](_[_0xec45('0x41')](_0x1cbe08[_0xec45('0x36')],_0x563f83[_0xec45('0x37')]),_0x45e25c);if(_0x1cbe08['query'][_0xec45('0x42')]){_0x32dc0a[_0xec45('0x40')]=_['merge'](_0x32dc0a[_0xec45('0x40')],{'$or':_[_0xec45('0x2f')](_0x45e25c,function(_0x3130cb){if(_0x3130cb[_0xec45('0x33')]!==_0xec45('0x43')){var _0x4293c5={};_0x4293c5[_0x3130cb[_0xec45('0x2c')]]={'$like':'%'+_0x1cbe08[_0xec45('0x36')][_0xec45('0x42')]+'%'};return _0x4293c5;}})});}_0x32dc0a=_[_0xec45('0x44')]({},_0x32dc0a,_0x1cbe08[_0xec45('0x45')]);var _0x44e92a={'where':_0x32dc0a[_0xec45('0x40')]};return db[_0xec45('0x30')][_0xec45('0x20')](_0x44e92a)[_0xec45('0x27')](function(_0x5e0b75){_0x35d9bf[_0xec45('0x20')]=_0x5e0b75;if(_0x1cbe08[_0xec45('0x36')][_0xec45('0x46')]){_0x32dc0a['include']=[{'all':!![]}];}return db[_0xec45('0x30')][_0xec45('0x47')](_0x32dc0a);})[_0xec45('0x27')](function(_0x430ae9){_0x35d9bf[_0xec45('0x48')]=_0x430ae9;return _0x35d9bf;})[_0xec45('0x27')](respondWithFilteredResult(_0x21b927,_0x32dc0a))[_0xec45('0x49')](handleError(_0x21b927,null));};exports[_0xec45('0x4a')]=function(_0x268149,_0x44b4c6){var _0x254a04={'raw':!![],'where':{'id':_0x268149[_0xec45('0x4b')]['id']}},_0x35c82c={};_0x35c82c[_0xec45('0x35')]=_[_0xec45('0x4c')](db[_0xec45('0x30')][_0xec45('0x31')]);_0x35c82c[_0xec45('0x36')]=_['keys'](_0x268149[_0xec45('0x36')]);_0x35c82c[_0xec45('0x37')]=_[_0xec45('0x38')](_0x35c82c[_0xec45('0x35')],_0x35c82c[_0xec45('0x36')]);_0x254a04[_0xec45('0x39')]=_[_0xec45('0x38')](_0x35c82c[_0xec45('0x35')],qs['fields'](_0x268149[_0xec45('0x36')][_0xec45('0x3a')]));_0x254a04[_0xec45('0x39')]=_0x254a04[_0xec45('0x39')]['length']?_0x254a04['attributes']:_0x35c82c[_0xec45('0x35')];if(_0x268149['query'][_0xec45('0x46')]){_0x254a04['include']=[{'all':!![]}];}_0x254a04=_[_0xec45('0x44')]({},_0x254a04,_0x268149['options']);return db[_0xec45('0x30')][_0xec45('0x4d')](_0x254a04)['then'](handleEntityNotFound(_0x44b4c6,null))[_0xec45('0x27')](respondWithResult(_0x44b4c6,null))[_0xec45('0x49')](handleError(_0x44b4c6,null));};exports['create']=function(_0x219e8c,_0x4d96cb){return db[_0xec45('0x30')][_0xec45('0x4e')](_0x219e8c[_0xec45('0x4f')],{})[_0xec45('0x27')](respondWithResult(_0x4d96cb,0xc9))['catch'](handleError(_0x4d96cb,null));};exports[_0xec45('0x50')]=function(_0x52c57a,_0x4f0b9f){if(_0x52c57a[_0xec45('0x4f')]['id']){delete _0x52c57a[_0xec45('0x4f')]['id'];}return db['ChatGroup'][_0xec45('0x4d')]({'where':{'id':_0x52c57a['params']['id']}})[_0xec45('0x27')](handleEntityNotFound(_0x4f0b9f,null))[_0xec45('0x27')](saveUpdates(_0x52c57a['body'],null))[_0xec45('0x27')](respondWithResult(_0x4f0b9f,null))[_0xec45('0x49')](handleError(_0x4f0b9f,null));};exports['destroy']=function(_0x3fa66f,_0x237621){return db[_0xec45('0x30')][_0xec45('0x4d')]({'where':{'id':_0x3fa66f['params']['id']}})[_0xec45('0x27')](handleEntityNotFound(_0x237621,null))[_0xec45('0x27')](removeEntity(_0x237621,null))[_0xec45('0x49')](handleError(_0x237621,null));};exports[_0xec45('0x51')]=function(_0x87ff21,_0x39090e){return db[_0xec45('0x30')]['describe']()[_0xec45('0x27')](respondWithResult(_0x39090e,null))['catch'](handleError(_0x39090e,null));};exports[_0xec45('0x52')]=function(_0x5dbde6,_0x492aba,_0x2bddd3){return db['ChatInternalMessage'][_0xec45('0x20')]({'where':{'ChatGroupId':_0x5dbde6[_0xec45('0x4b')]['id'],'ToId':_0x5dbde6[_0xec45('0x53')]['id'],'read':![]}})['then'](function(_0x59df24){return{'id':_[_0xec45('0x54')](_0x5dbde6[_0xec45('0x4b')]['id']),'count':_0x59df24};})[_0xec45('0x27')](respondWithResult(_0x492aba,null))[_0xec45('0x49')](handleError(_0x492aba,null));};exports[_0xec45('0x55')]=function(_0x59c187,_0x38b8b7,_0x408efa){return db[_0xec45('0x30')]['find']({'where':{'id':_0x59c187[_0xec45('0x4b')]['id']}})[_0xec45('0x27')](handleEntityNotFound(_0x38b8b7,null))[_0xec45('0x27')](function(_0x39367e){if(_0x39367e){return _0x39367e[_0xec45('0x55')](_0x59c187[_0xec45('0x4f')]['ids'],_[_0xec45('0x56')](_0x59c187[_0xec45('0x4f')],[_0xec45('0x57'),'id'])||{});}})[_0xec45('0x27')](respondWithResult(_0x38b8b7,null))['catch'](handleError(_0x38b8b7,null));};exports[_0xec45('0x58')]=function(_0x447eb1,_0x3cee48,_0x40cd29){var _0x154aef={};var _0x5b62d8={};var _0x36afb3;var _0x583643;return db[_0xec45('0x30')]['findOne']({'where':{'id':_0x447eb1[_0xec45('0x4b')]['id']}})[_0xec45('0x27')](handleEntityNotFound(_0x3cee48,null))[_0xec45('0x27')](function(_0x5751bf){if(_0x5751bf){_0x36afb3=_0x5751bf;_0x5b62d8[_0xec45('0x35')]=_[_0xec45('0x4c')](db[_0xec45('0x59')][_0xec45('0x31')]);_0x5b62d8[_0xec45('0x36')]=_['keys'](_0x447eb1[_0xec45('0x36')]);_0x5b62d8[_0xec45('0x37')]=_[_0xec45('0x38')](_0x5b62d8[_0xec45('0x35')],_0x5b62d8[_0xec45('0x36')]);_0x154aef[_0xec45('0x39')]=_['intersection'](_0x5b62d8[_0xec45('0x35')],qs[_0xec45('0x3a')](_0x447eb1[_0xec45('0x36')][_0xec45('0x3a')]));_0x154aef[_0xec45('0x39')]=_0x154aef[_0xec45('0x39')][_0xec45('0x3b')]?_0x154aef[_0xec45('0x39')]:_0x5b62d8[_0xec45('0x35')];_0x154aef[_0xec45('0x3e')]=qs[_0xec45('0x3f')](_0x447eb1[_0xec45('0x36')][_0xec45('0x3f')]);_0x154aef[_0xec45('0x40')]=qs[_0xec45('0x37')](_[_0xec45('0x41')](_0x447eb1['query'],_0x5b62d8[_0xec45('0x37')]));if(_0x447eb1['query'][_0xec45('0x42')]){_0x154aef[_0xec45('0x40')]=_[_0xec45('0x44')](_0x154aef['where'],{'$or':_[_0xec45('0x2f')](_0x154aef['attributes'],function(_0x4ab215){var _0x3b75f4={};_0x3b75f4[_0x4ab215]={'$like':'%'+_0x447eb1[_0xec45('0x36')]['filter']+'%'};return _0x3b75f4;})});}_0x154aef=_[_0xec45('0x44')]({},_0x154aef,_0x447eb1[_0xec45('0x45')]);return _0x36afb3[_0xec45('0x58')](_0x154aef);}})[_0xec45('0x27')](function(_0x5323d1){if(_0x5323d1){_0x583643=_0x5323d1[_0xec45('0x3b')];if(!_0x447eb1[_0xec45('0x36')][_0xec45('0x3c')]('nolimit')){_0x154aef[_0xec45('0x22')]=qs['limit'](_0x447eb1[_0xec45('0x36')][_0xec45('0x22')]);_0x154aef['offset']=qs[_0xec45('0x21')](_0x447eb1['query'][_0xec45('0x21')]);}return _0x36afb3[_0xec45('0x58')](_0x154aef);}})[_0xec45('0x27')](function(_0x363022){if(_0x363022){return _0x363022?{'count':_0x583643,'rows':_0x363022}:null;}})[_0xec45('0x27')](respondWithResult(_0x3cee48,null))[_0xec45('0x49')](handleError(_0x3cee48,null));};exports[_0xec45('0x5a')]=function(_0x190861,_0x5172cd,_0x6f9d56){return db[_0xec45('0x30')][_0xec45('0x4d')]({'where':{'id':_0x190861[_0xec45('0x4b')]['id']}})[_0xec45('0x27')](handleEntityNotFound(_0x5172cd,null))['then'](function(_0x3c4460){if(_0x3c4460){return _0x3c4460[_0xec45('0x5a')](_0x190861[_0xec45('0x36')]['ids']);}})['then'](respondWithStatusCode(_0x5172cd,null))[_0xec45('0x49')](handleError(_0x5172cd,null));};exports[_0xec45('0x5b')]=function(_0x3e3672,_0x349f4c,_0x382c4c){if(_0x3e3672[_0xec45('0x4f')]['id']){delete _0x3e3672['body']['id'];}return db[_0xec45('0x30')][_0xec45('0x4d')]({'where':{'id':_0x3e3672[_0xec45('0x4b')]['id']}})['then'](handleEntityNotFound(_0x349f4c,null))[_0xec45('0x27')](function(_0x5632a1){if(_0x5632a1){_0x3e3672[_0xec45('0x4f')]['ChatGroupId']=_0x5632a1['id'];return db[_0xec45('0x5c')][_0xec45('0x4e')](_0x3e3672[_0xec45('0x4f')]);}})['then'](respondWithResult(_0x349f4c,null))[_0xec45('0x49')](handleError(_0x349f4c,null));};exports[_0xec45('0x5d')]=function(_0x4e8d2d,_0x26730d,_0x102b0b){var _0x283076={};var _0x434b5={};var _0x1c2c07;var _0x38e056;return db[_0xec45('0x30')][_0xec45('0x5e')]({'where':{'id':_0x4e8d2d[_0xec45('0x4b')]['id']}})[_0xec45('0x27')](handleEntityNotFound(_0x26730d,null))[_0xec45('0x27')](function(_0x2fd8d1){if(_0x2fd8d1){_0x1c2c07=_0x2fd8d1;_0x434b5['model']=_[_0xec45('0x4c')](db[_0xec45('0x5c')][_0xec45('0x31')]);_0x434b5[_0xec45('0x36')]=_[_0xec45('0x4c')](_0x4e8d2d[_0xec45('0x36')]);_0x434b5[_0xec45('0x37')]=_[_0xec45('0x38')](_0x434b5['model'],_0x434b5[_0xec45('0x36')]);_0x283076[_0xec45('0x39')]=_[_0xec45('0x38')](_0x434b5[_0xec45('0x35')],qs[_0xec45('0x3a')](_0x4e8d2d[_0xec45('0x36')][_0xec45('0x3a')]));_0x283076['attributes']=_0x283076[_0xec45('0x39')][_0xec45('0x3b')]?_0x283076[_0xec45('0x39')]:_0x434b5['model'];_0x283076[_0xec45('0x3e')]=qs[_0xec45('0x3f')](_0x4e8d2d['query'][_0xec45('0x3f')]);_0x283076[_0xec45('0x40')]=qs[_0xec45('0x37')](_[_0xec45('0x41')](_0x4e8d2d[_0xec45('0x36')],_0x434b5[_0xec45('0x37')]));if(_0x4e8d2d[_0xec45('0x36')]['filter']){_0x283076[_0xec45('0x40')]=_[_0xec45('0x44')](_0x283076[_0xec45('0x40')],{'$or':_['map'](_0x283076[_0xec45('0x39')],function(_0x1f3457){var _0x5c1e90={};_0x5c1e90[_0x1f3457]={'$like':'%'+_0x4e8d2d[_0xec45('0x36')][_0xec45('0x42')]+'%'};return _0x5c1e90;})});}if(_0x4e8d2d[_0xec45('0x36')][_0xec45('0x5f')]){var _0x5b0a3e=_0x4e8d2d[_0xec45('0x36')]['$gte']['split'](',');var _0x370c7a={};_0x370c7a[_0x5b0a3e[0x0]]={'$gte':moment(_0x5b0a3e[0x1])[_0xec45('0x60')](_0xec45('0x61'))};_0x283076[_0xec45('0x40')]=_[_0xec45('0x44')](_0x283076[_0xec45('0x40')],_0x370c7a);}_0x283076=_[_0xec45('0x44')]({},_0x283076,_0x4e8d2d[_0xec45('0x45')]);return _0x1c2c07[_0xec45('0x5d')](_0x283076);}})['then'](function(_0x5ada69){if(_0x5ada69){_0x38e056=_0x5ada69[_0xec45('0x3b')];if(!_0x4e8d2d[_0xec45('0x36')]['hasOwnProperty'](_0xec45('0x3d'))){_0x283076[_0xec45('0x22')]=qs[_0xec45('0x22')](_0x4e8d2d['query']['limit']);_0x283076['offset']=qs[_0xec45('0x21')](_0x4e8d2d[_0xec45('0x36')]['offset']);}return _0x1c2c07[_0xec45('0x5d')](_0x283076);}})[_0xec45('0x27')](function(_0x37860e){if(_0x37860e){return _0x37860e?{'count':_0x38e056,'rows':_0x37860e}:null;}})[_0xec45('0x27')](respondWithResult(_0x26730d,null))[_0xec45('0x49')](handleError(_0x26730d,null));};
\ No newline at end of file
+var _0x5a57=['request-promise','moment','mustache','path','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','to-csv','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/utils','../../config/environment','../../mysqldb','defaults','redis','localhost','socket.io-emitter','./chatGroup.socket','register','sendStatus','status','end','json','offset','undefined','limit','count','set','Content-Range','apply','reject','save','update','destroy','then','error','stack','name','map','rawAttributes','fieldName','type','key','query','keys','model','attributes','intersection','fields','length','hasOwnProperty','nolimit','order','sort','where','filters','filter','merge','VIRTUAL','options','ChatGroup','includeAll','include','findAll','catch','show','params','find','body','describe','getUnread','ChatInternalMessage','user','toInteger','addMembers','ids','omit','getMembers','findOne','User','pick','removeMembers','ChatGroupId','create','getMessages','$gte','split','format','YYYY-MM-DD\x20HH:mm:ss','eml-format','rimraf'];(function(_0x48b852,_0x591467){var _0x2bb570=function(_0x4c1146){while(--_0x4c1146){_0x48b852['push'](_0x48b852['shift']());}};_0x2bb570(++_0x591467);}(_0x5a57,0x192));var _0x75a5=function(_0x5e36d1,_0x471178){_0x5e36d1=_0x5e36d1-0x0;var _0x950b9e=_0x5a57[_0x5e36d1];return _0x950b9e;};'use strict';var emlformat=require(_0x75a5('0x0'));var rimraf=require(_0x75a5('0x1'));var zipdir=require('zip-dir');var jsonpatch=require('fast-json-patch');var rp=require(_0x75a5('0x2'));var moment=require(_0x75a5('0x3'));var BPromise=require('bluebird');var Mustache=require(_0x75a5('0x4'));var util=require('util');var path=require(_0x75a5('0x5'));var sox=require('sox');var csv=require('to-csv');var ejs=require(_0x75a5('0x6'));var fs=require('fs');var fs_extra=require(_0x75a5('0x7'));var _=require(_0x75a5('0x8'));var squel=require(_0x75a5('0x9'));var crypto=require(_0x75a5('0xa'));var jsforce=require(_0x75a5('0xb'));var deskjs=require(_0x75a5('0xc'));var toCsv=require(_0x75a5('0xd'));var querystring=require(_0x75a5('0xe'));var Papa=require(_0x75a5('0xf'));var Redis=require(_0x75a5('0x10'));var authService=require(_0x75a5('0x11'));var qs=require(_0x75a5('0x12'));var as=require(_0x75a5('0x13'));var hardwareService=require(_0x75a5('0x14'));var logger=require('../../config/logger')(_0x75a5('0x15'));var utils=require(_0x75a5('0x16'));var config=require(_0x75a5('0x17'));var licenseUtil=require('../../config/license/util');var db=require(_0x75a5('0x18'))['db'];config['redis']=_[_0x75a5('0x19')](config[_0x75a5('0x1a')],{'host':_0x75a5('0x1b'),'port':0x18eb});var socket=require(_0x75a5('0x1c'))(new Redis(config['redis']));require(_0x75a5('0x1d'))[_0x75a5('0x1e')](socket);function respondWithStatusCode(_0x451a0c,_0x1a3596){_0x1a3596=_0x1a3596||0xcc;return function(_0x56f099){if(_0x56f099){return _0x451a0c[_0x75a5('0x1f')](_0x1a3596);}return _0x451a0c[_0x75a5('0x20')](_0x1a3596)[_0x75a5('0x21')]();};}function respondWithResult(_0x212e0a,_0x318608){_0x318608=_0x318608||0xc8;return function(_0xd23a3c){if(_0xd23a3c){return _0x212e0a[_0x75a5('0x20')](_0x318608)[_0x75a5('0x22')](_0xd23a3c);}};}function respondWithFilteredResult(_0x3c457e,_0x2f6bf1){return function(_0x375d06){if(_0x375d06){var _0x1fc605=typeof _0x2f6bf1[_0x75a5('0x23')]===_0x75a5('0x24')&&typeof _0x2f6bf1[_0x75a5('0x25')]===_0x75a5('0x24');var _0x5d035d=_0x375d06[_0x75a5('0x26')];var _0x40a5fe=_0x1fc605?0x0:_0x2f6bf1['offset'];var _0x3a3e77=_0x1fc605?_0x375d06[_0x75a5('0x26')]:_0x2f6bf1[_0x75a5('0x23')]+_0x2f6bf1['limit'];var _0x370419;if(_0x3a3e77>=_0x5d035d){_0x3a3e77=_0x5d035d;_0x370419=0xc8;}else{_0x370419=0xce;}_0x3c457e[_0x75a5('0x20')](_0x370419);return _0x3c457e[_0x75a5('0x27')](_0x75a5('0x28'),_0x40a5fe+'-'+_0x3a3e77+'/'+_0x5d035d)[_0x75a5('0x22')](_0x375d06);}return null;};}function patchUpdates(_0x39459a){return function(_0x369ba2){try{jsonpatch[_0x75a5('0x29')](_0x369ba2,_0x39459a,!![]);}catch(_0x2d69fd){return BPromise[_0x75a5('0x2a')](_0x2d69fd);}return _0x369ba2[_0x75a5('0x2b')]();};}function saveUpdates(_0x4ea76a,_0x450724){return function(_0x1638ad){if(_0x1638ad){return _0x1638ad[_0x75a5('0x2c')](_0x4ea76a)['then'](function(_0x1fae25){return _0x1fae25;});}return null;};}function removeEntity(_0x12d275,_0x2a8623){return function(_0x11d27c){if(_0x11d27c){return _0x11d27c[_0x75a5('0x2d')]()[_0x75a5('0x2e')](function(){_0x12d275[_0x75a5('0x20')](0xcc)[_0x75a5('0x21')]();});}};}function handleEntityNotFound(_0x5ce792,_0x5c737c){return function(_0x2d6be9){if(!_0x2d6be9){_0x5ce792[_0x75a5('0x1f')](0x194);}return _0x2d6be9;};}function handleError(_0x197562,_0x52c958){_0x52c958=_0x52c958||0x1f4;return function(_0xadd1d){logger[_0x75a5('0x2f')](_0xadd1d[_0x75a5('0x30')]);if(_0xadd1d[_0x75a5('0x31')]){delete _0xadd1d[_0x75a5('0x31')];}_0x197562['status'](_0x52c958)['send'](_0xadd1d);};}exports['index']=function(_0x539beb,_0x12c4f4){var _0x188bc0={},_0x16955e={},_0x22668e={'count':0x0,'rows':[]};var _0x4c3395=_[_0x75a5('0x32')](db['ChatGroup'][_0x75a5('0x33')],function(_0x530807){return{'name':_0x530807[_0x75a5('0x34')],'type':_0x530807[_0x75a5('0x35')][_0x75a5('0x36')]};});_0x16955e['model']=_[_0x75a5('0x32')](_0x4c3395,_0x75a5('0x31'));_0x16955e[_0x75a5('0x37')]=_[_0x75a5('0x38')](_0x539beb[_0x75a5('0x37')]);_0x16955e['filters']=_['intersection'](_0x16955e[_0x75a5('0x39')],_0x16955e['query']);_0x188bc0[_0x75a5('0x3a')]=_[_0x75a5('0x3b')](_0x16955e[_0x75a5('0x39')],qs[_0x75a5('0x3c')](_0x539beb[_0x75a5('0x37')][_0x75a5('0x3c')]));_0x188bc0[_0x75a5('0x3a')]=_0x188bc0[_0x75a5('0x3a')][_0x75a5('0x3d')]?_0x188bc0[_0x75a5('0x3a')]:_0x16955e[_0x75a5('0x39')];if(!_0x539beb['query'][_0x75a5('0x3e')](_0x75a5('0x3f'))){_0x188bc0[_0x75a5('0x25')]=qs[_0x75a5('0x25')](_0x539beb[_0x75a5('0x37')]['limit']);_0x188bc0[_0x75a5('0x23')]=qs[_0x75a5('0x23')](_0x539beb[_0x75a5('0x37')][_0x75a5('0x23')]);}_0x188bc0[_0x75a5('0x40')]=qs[_0x75a5('0x41')](_0x539beb[_0x75a5('0x37')]['sort']);_0x188bc0[_0x75a5('0x42')]=qs[_0x75a5('0x43')](_['pick'](_0x539beb[_0x75a5('0x37')],_0x16955e[_0x75a5('0x43')]),_0x4c3395);if(_0x539beb[_0x75a5('0x37')][_0x75a5('0x44')]){_0x188bc0[_0x75a5('0x42')]=_[_0x75a5('0x45')](_0x188bc0[_0x75a5('0x42')],{'$or':_[_0x75a5('0x32')](_0x4c3395,function(_0x4e7c54){if(_0x4e7c54['type']!==_0x75a5('0x46')){var _0x13de73={};_0x13de73[_0x4e7c54[_0x75a5('0x31')]]={'$like':'%'+_0x539beb[_0x75a5('0x37')][_0x75a5('0x44')]+'%'};return _0x13de73;}})});}_0x188bc0=_['merge']({},_0x188bc0,_0x539beb[_0x75a5('0x47')]);var _0x1d921b={'where':_0x188bc0['where']};return db[_0x75a5('0x48')][_0x75a5('0x26')](_0x1d921b)['then'](function(_0x12e5bb){_0x22668e[_0x75a5('0x26')]=_0x12e5bb;if(_0x539beb['query'][_0x75a5('0x49')]){_0x188bc0[_0x75a5('0x4a')]=[{'all':!![]}];}return db[_0x75a5('0x48')][_0x75a5('0x4b')](_0x188bc0);})[_0x75a5('0x2e')](function(_0x4e76da){_0x22668e['rows']=_0x4e76da;return _0x22668e;})[_0x75a5('0x2e')](respondWithFilteredResult(_0x12c4f4,_0x188bc0))[_0x75a5('0x4c')](handleError(_0x12c4f4,null));};exports[_0x75a5('0x4d')]=function(_0x5bf3bb,_0x5cddcf){var _0x8a9866={'raw':!![],'where':{'id':_0x5bf3bb[_0x75a5('0x4e')]['id']}},_0x32c20b={};_0x32c20b[_0x75a5('0x39')]=_[_0x75a5('0x38')](db[_0x75a5('0x48')][_0x75a5('0x33')]);_0x32c20b['query']=_['keys'](_0x5bf3bb[_0x75a5('0x37')]);_0x32c20b['filters']=_['intersection'](_0x32c20b[_0x75a5('0x39')],_0x32c20b['query']);_0x8a9866[_0x75a5('0x3a')]=_[_0x75a5('0x3b')](_0x32c20b[_0x75a5('0x39')],qs[_0x75a5('0x3c')](_0x5bf3bb[_0x75a5('0x37')][_0x75a5('0x3c')]));_0x8a9866['attributes']=_0x8a9866[_0x75a5('0x3a')][_0x75a5('0x3d')]?_0x8a9866[_0x75a5('0x3a')]:_0x32c20b[_0x75a5('0x39')];if(_0x5bf3bb['query']['includeAll']){_0x8a9866[_0x75a5('0x4a')]=[{'all':!![]}];}_0x8a9866=_[_0x75a5('0x45')]({},_0x8a9866,_0x5bf3bb[_0x75a5('0x47')]);return db['ChatGroup'][_0x75a5('0x4f')](_0x8a9866)[_0x75a5('0x2e')](handleEntityNotFound(_0x5cddcf,null))[_0x75a5('0x2e')](respondWithResult(_0x5cddcf,null))['catch'](handleError(_0x5cddcf,null));};exports['create']=function(_0x187663,_0x7772ce){return db['ChatGroup']['create'](_0x187663[_0x75a5('0x50')],{})[_0x75a5('0x2e')](respondWithResult(_0x7772ce,0xc9))[_0x75a5('0x4c')](handleError(_0x7772ce,null));};exports[_0x75a5('0x2c')]=function(_0x302fa9,_0x3afd84){if(_0x302fa9[_0x75a5('0x50')]['id']){delete _0x302fa9['body']['id'];}return db[_0x75a5('0x48')][_0x75a5('0x4f')]({'where':{'id':_0x302fa9['params']['id']}})[_0x75a5('0x2e')](handleEntityNotFound(_0x3afd84,null))[_0x75a5('0x2e')](saveUpdates(_0x302fa9[_0x75a5('0x50')],null))[_0x75a5('0x2e')](respondWithResult(_0x3afd84,null))[_0x75a5('0x4c')](handleError(_0x3afd84,null));};exports['destroy']=function(_0x225acd,_0x4901c5){return db[_0x75a5('0x48')][_0x75a5('0x4f')]({'where':{'id':_0x225acd[_0x75a5('0x4e')]['id']}})[_0x75a5('0x2e')](handleEntityNotFound(_0x4901c5,null))[_0x75a5('0x2e')](removeEntity(_0x4901c5,null))['catch'](handleError(_0x4901c5,null));};exports[_0x75a5('0x51')]=function(_0x5def8f,_0x1e909f){return db[_0x75a5('0x48')][_0x75a5('0x51')]()[_0x75a5('0x2e')](respondWithResult(_0x1e909f,null))[_0x75a5('0x4c')](handleError(_0x1e909f,null));};exports[_0x75a5('0x52')]=function(_0xcb9fbf,_0x38df2e,_0x569dd1){return db[_0x75a5('0x53')][_0x75a5('0x26')]({'where':{'ChatGroupId':_0xcb9fbf[_0x75a5('0x4e')]['id'],'ToId':_0xcb9fbf[_0x75a5('0x54')]['id'],'read':![]}})['then'](function(_0x12bad7){return{'id':_[_0x75a5('0x55')](_0xcb9fbf[_0x75a5('0x4e')]['id']),'count':_0x12bad7};})[_0x75a5('0x2e')](respondWithResult(_0x38df2e,null))[_0x75a5('0x4c')](handleError(_0x38df2e,null));};exports[_0x75a5('0x56')]=function(_0x82dcc2,_0x47e01c,_0x42e2d1){return db[_0x75a5('0x48')][_0x75a5('0x4f')]({'where':{'id':_0x82dcc2[_0x75a5('0x4e')]['id']}})[_0x75a5('0x2e')](handleEntityNotFound(_0x47e01c,null))[_0x75a5('0x2e')](function(_0x3faa9c){if(_0x3faa9c){return _0x3faa9c[_0x75a5('0x56')](_0x82dcc2[_0x75a5('0x50')][_0x75a5('0x57')],_[_0x75a5('0x58')](_0x82dcc2[_0x75a5('0x50')],[_0x75a5('0x57'),'id'])||{});}})['then'](respondWithResult(_0x47e01c,null))[_0x75a5('0x4c')](handleError(_0x47e01c,null));};exports[_0x75a5('0x59')]=function(_0x1ab7ee,_0x87df24,_0xd63550){var _0x55c715={};var _0xfe3c16={};var _0x1f6386;var _0x2514a5;return db[_0x75a5('0x48')][_0x75a5('0x5a')]({'where':{'id':_0x1ab7ee[_0x75a5('0x4e')]['id']}})[_0x75a5('0x2e')](handleEntityNotFound(_0x87df24,null))[_0x75a5('0x2e')](function(_0x33efd8){if(_0x33efd8){_0x1f6386=_0x33efd8;_0xfe3c16['model']=_[_0x75a5('0x38')](db[_0x75a5('0x5b')]['rawAttributes']);_0xfe3c16[_0x75a5('0x37')]=_[_0x75a5('0x38')](_0x1ab7ee[_0x75a5('0x37')]);_0xfe3c16[_0x75a5('0x43')]=_[_0x75a5('0x3b')](_0xfe3c16[_0x75a5('0x39')],_0xfe3c16['query']);_0x55c715[_0x75a5('0x3a')]=_['intersection'](_0xfe3c16[_0x75a5('0x39')],qs[_0x75a5('0x3c')](_0x1ab7ee[_0x75a5('0x37')][_0x75a5('0x3c')]));_0x55c715[_0x75a5('0x3a')]=_0x55c715['attributes'][_0x75a5('0x3d')]?_0x55c715[_0x75a5('0x3a')]:_0xfe3c16[_0x75a5('0x39')];_0x55c715[_0x75a5('0x40')]=qs[_0x75a5('0x41')](_0x1ab7ee[_0x75a5('0x37')]['sort']);_0x55c715[_0x75a5('0x42')]=qs[_0x75a5('0x43')](_[_0x75a5('0x5c')](_0x1ab7ee['query'],_0xfe3c16[_0x75a5('0x43')]));if(_0x1ab7ee[_0x75a5('0x37')]['filter']){_0x55c715['where']=_[_0x75a5('0x45')](_0x55c715[_0x75a5('0x42')],{'$or':_[_0x75a5('0x32')](_0x55c715[_0x75a5('0x3a')],function(_0x3c8bd1){var _0x55d33e={};_0x55d33e[_0x3c8bd1]={'$like':'%'+_0x1ab7ee['query']['filter']+'%'};return _0x55d33e;})});}_0x55c715=_[_0x75a5('0x45')]({},_0x55c715,_0x1ab7ee[_0x75a5('0x47')]);return _0x1f6386[_0x75a5('0x59')](_0x55c715);}})[_0x75a5('0x2e')](function(_0x227035){if(_0x227035){_0x2514a5=_0x227035['length'];if(!_0x1ab7ee[_0x75a5('0x37')][_0x75a5('0x3e')](_0x75a5('0x3f'))){_0x55c715['limit']=qs[_0x75a5('0x25')](_0x1ab7ee['query'][_0x75a5('0x25')]);_0x55c715['offset']=qs[_0x75a5('0x23')](_0x1ab7ee['query'][_0x75a5('0x23')]);}return _0x1f6386[_0x75a5('0x59')](_0x55c715);}})['then'](function(_0xfde669){if(_0xfde669){return _0xfde669?{'count':_0x2514a5,'rows':_0xfde669}:null;}})[_0x75a5('0x2e')](respondWithResult(_0x87df24,null))[_0x75a5('0x4c')](handleError(_0x87df24,null));};exports[_0x75a5('0x5d')]=function(_0x5cc0cf,_0x4c6e16,_0x2d3e35){return db['ChatGroup'][_0x75a5('0x4f')]({'where':{'id':_0x5cc0cf['params']['id']}})['then'](handleEntityNotFound(_0x4c6e16,null))['then'](function(_0x3356e2){if(_0x3356e2){return _0x3356e2[_0x75a5('0x5d')](_0x5cc0cf[_0x75a5('0x37')][_0x75a5('0x57')]);}})[_0x75a5('0x2e')](respondWithStatusCode(_0x4c6e16,null))['catch'](handleError(_0x4c6e16,null));};exports['addMessage']=function(_0x59e6f1,_0x360b12,_0x49601f){if(_0x59e6f1[_0x75a5('0x50')]['id']){delete _0x59e6f1[_0x75a5('0x50')]['id'];}return db['ChatGroup'][_0x75a5('0x4f')]({'where':{'id':_0x59e6f1[_0x75a5('0x4e')]['id']}})[_0x75a5('0x2e')](handleEntityNotFound(_0x360b12,null))[_0x75a5('0x2e')](function(_0x4da8ff){if(_0x4da8ff){_0x59e6f1['body'][_0x75a5('0x5e')]=_0x4da8ff['id'];return db[_0x75a5('0x53')][_0x75a5('0x5f')](_0x59e6f1[_0x75a5('0x50')]);}})[_0x75a5('0x2e')](respondWithResult(_0x360b12,null))['catch'](handleError(_0x360b12,null));};exports[_0x75a5('0x60')]=function(_0x374167,_0x27ff72,_0x8ea9ed){var _0x3bfd64={};var _0x3cb1d3={};var _0x179329;var _0x39a899;return db[_0x75a5('0x48')][_0x75a5('0x5a')]({'where':{'id':_0x374167[_0x75a5('0x4e')]['id']}})[_0x75a5('0x2e')](handleEntityNotFound(_0x27ff72,null))[_0x75a5('0x2e')](function(_0x89459a){if(_0x89459a){_0x179329=_0x89459a;_0x3cb1d3[_0x75a5('0x39')]=_[_0x75a5('0x38')](db[_0x75a5('0x53')][_0x75a5('0x33')]);_0x3cb1d3['query']=_['keys'](_0x374167[_0x75a5('0x37')]);_0x3cb1d3['filters']=_[_0x75a5('0x3b')](_0x3cb1d3[_0x75a5('0x39')],_0x3cb1d3[_0x75a5('0x37')]);_0x3bfd64[_0x75a5('0x3a')]=_['intersection'](_0x3cb1d3[_0x75a5('0x39')],qs[_0x75a5('0x3c')](_0x374167['query'][_0x75a5('0x3c')]));_0x3bfd64[_0x75a5('0x3a')]=_0x3bfd64[_0x75a5('0x3a')][_0x75a5('0x3d')]?_0x3bfd64[_0x75a5('0x3a')]:_0x3cb1d3[_0x75a5('0x39')];_0x3bfd64[_0x75a5('0x40')]=qs[_0x75a5('0x41')](_0x374167[_0x75a5('0x37')][_0x75a5('0x41')]);_0x3bfd64[_0x75a5('0x42')]=qs[_0x75a5('0x43')](_[_0x75a5('0x5c')](_0x374167[_0x75a5('0x37')],_0x3cb1d3[_0x75a5('0x43')]));if(_0x374167[_0x75a5('0x37')][_0x75a5('0x44')]){_0x3bfd64[_0x75a5('0x42')]=_['merge'](_0x3bfd64[_0x75a5('0x42')],{'$or':_[_0x75a5('0x32')](_0x3bfd64[_0x75a5('0x3a')],function(_0x4fa5c7){var _0x40c5fb={};_0x40c5fb[_0x4fa5c7]={'$like':'%'+_0x374167[_0x75a5('0x37')][_0x75a5('0x44')]+'%'};return _0x40c5fb;})});}if(_0x374167[_0x75a5('0x37')][_0x75a5('0x61')]){var _0x155902=_0x374167[_0x75a5('0x37')]['$gte'][_0x75a5('0x62')](',');var _0x39ca5a={};_0x39ca5a[_0x155902[0x0]]={'$gte':moment(_0x155902[0x1])[_0x75a5('0x63')](_0x75a5('0x64'))};_0x3bfd64[_0x75a5('0x42')]=_[_0x75a5('0x45')](_0x3bfd64['where'],_0x39ca5a);}_0x3bfd64=_['merge']({},_0x3bfd64,_0x374167[_0x75a5('0x47')]);return _0x179329[_0x75a5('0x60')](_0x3bfd64);}})[_0x75a5('0x2e')](function(_0x359c97){if(_0x359c97){_0x39a899=_0x359c97[_0x75a5('0x3d')];if(!_0x374167[_0x75a5('0x37')][_0x75a5('0x3e')]('nolimit')){_0x3bfd64[_0x75a5('0x25')]=qs[_0x75a5('0x25')](_0x374167['query'][_0x75a5('0x25')]);_0x3bfd64['offset']=qs['offset'](_0x374167[_0x75a5('0x37')]['offset']);}return _0x179329[_0x75a5('0x60')](_0x3bfd64);}})['then'](function(_0x39b884){if(_0x39b884){return _0x39b884?{'count':_0x39a899,'rows':_0x39b884}:null;}})['then'](respondWithResult(_0x27ff72,null))[_0x75a5('0x4c')](handleError(_0x27ff72,null));};
\ No newline at end of file
index a2d47dd..47a6e69 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe917=['setMaxListeners','save','update','emit','hook','exports','events','../../mysqldb','ChatGroup'];(function(_0x1977f1,_0x19ef5c){var _0x5185ce=function(_0x388d7c){while(--_0x388d7c){_0x1977f1['push'](_0x1977f1['shift']());}};_0x5185ce(++_0x19ef5c);}(_0xe917,0x1da));var _0x7e91=function(_0xefd519,_0xc62635){_0xefd519=_0xefd519-0x0;var _0x4bb882=_0xe917[_0xefd519];return _0x4bb882;};'use strict';var EventEmitter=require(_0x7e91('0x0'));var ChatGroup=require(_0x7e91('0x1'))['db'][_0x7e91('0x2')];var ChatGroupEvents=new EventEmitter();ChatGroupEvents[_0x7e91('0x3')](0x0);var events={'afterCreate':_0x7e91('0x4'),'afterUpdate':_0x7e91('0x5'),'afterDestroy':'remove'};function emitEvent(_0x5d7e46){return function(_0x299071,_0xf6e4ee,_0x312895){ChatGroupEvents[_0x7e91('0x6')](_0x5d7e46+':'+_0x299071['id'],_0x299071);ChatGroupEvents[_0x7e91('0x6')](_0x5d7e46,_0x299071);_0x312895(null);};}for(var e in events){if(events['hasOwnProperty'](e)){var event=events[e];ChatGroup[_0x7e91('0x7')](e,emitEvent(event));}}module[_0x7e91('0x8')]=ChatGroupEvents;
\ No newline at end of file
+var _0x8b43=['events','../../mysqldb','ChatGroup','update','remove','emit','hasOwnProperty','hook','exports'];(function(_0x2f2a9d,_0x2b700b){var _0x13ca6a=function(_0x47a72b){while(--_0x47a72b){_0x2f2a9d['push'](_0x2f2a9d['shift']());}};_0x13ca6a(++_0x2b700b);}(_0x8b43,0x7e));var _0x38b4=function(_0x20cdb8,_0x432d70){_0x20cdb8=_0x20cdb8-0x0;var _0x4623bb=_0x8b43[_0x20cdb8];return _0x4623bb;};'use strict';var EventEmitter=require(_0x38b4('0x0'));var ChatGroup=require(_0x38b4('0x1'))['db'][_0x38b4('0x2')];var ChatGroupEvents=new EventEmitter();ChatGroupEvents['setMaxListeners'](0x0);var events={'afterCreate':'save','afterUpdate':_0x38b4('0x3'),'afterDestroy':_0x38b4('0x4')};function emitEvent(_0x1a57b5){return function(_0x58d046,_0x1d7c99,_0x560139){ChatGroupEvents[_0x38b4('0x5')](_0x1a57b5+':'+_0x58d046['id'],_0x58d046);ChatGroupEvents[_0x38b4('0x5')](_0x1a57b5,_0x58d046);_0x560139(null);};}for(var e in events){if(events[_0x38b4('0x6')](e)){var event=events[e];ChatGroup[_0x38b4('0x7')](e,emitEvent(event));}}module[_0x38b4('0x8')]=ChatGroupEvents;
\ No newline at end of file
index cff496f..acc3c2f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1fbc=['define','ChatGroup','chat_groups','lodash','util','bluebird','request-promise','path','./chatGroup.attributes'];(function(_0x5edda7,_0x5f92a6){var _0x3361e0=function(_0x8ad127){while(--_0x8ad127){_0x5edda7['push'](_0x5edda7['shift']());}};_0x3361e0(++_0x5f92a6);}(_0x1fbc,0x1f2));var _0xc1fb=function(_0x590c9a,_0x21ae60){_0x590c9a=_0x590c9a-0x0;var _0x2e2b15=_0x1fbc[_0x590c9a];return _0x2e2b15;};'use strict';var _=require(_0xc1fb('0x0'));var util=require(_0xc1fb('0x1'));var logger=require('../../config/logger')('api');var moment=require('moment');var BPromise=require(_0xc1fb('0x2'));var rp=require(_0xc1fb('0x3'));var fs=require('fs');var path=require(_0xc1fb('0x4'));var rimraf=require('rimraf');var config=require('../../config/environment');var attributes=require(_0xc1fb('0x5'));module['exports']=function(_0x2323f4,_0x2fa4e6){return _0x2323f4[_0xc1fb('0x6')](_0xc1fb('0x7'),attributes,{'tableName':_0xc1fb('0x8'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xa07a=['moment','bluebird','request-promise','rimraf','../../config/environment','./chatGroup.attributes','exports','define','ChatGroup','chat_groups','lodash','util','../../config/logger','api'];(function(_0x318840,_0x561b1e){var _0x223da4=function(_0x510071){while(--_0x510071){_0x318840['push'](_0x318840['shift']());}};_0x223da4(++_0x561b1e);}(_0xa07a,0x1bc));var _0xaa07=function(_0x52107c,_0x2c7ac3){_0x52107c=_0x52107c-0x0;var _0x5c6298=_0xa07a[_0x52107c];return _0x5c6298;};'use strict';var _=require(_0xaa07('0x0'));var util=require(_0xaa07('0x1'));var logger=require(_0xaa07('0x2'))(_0xaa07('0x3'));var moment=require(_0xaa07('0x4'));var BPromise=require(_0xaa07('0x5'));var rp=require(_0xaa07('0x6'));var fs=require('fs');var path=require('path');var rimraf=require(_0xaa07('0x7'));var config=require(_0xaa07('0x8'));var attributes=require(_0xaa07('0x9'));module[_0xaa07('0xa')]=function(_0x4ad831,_0x804601){return _0x4ad831[_0xaa07('0xb')](_0xaa07('0xc'),attributes,{'tableName':_0xaa07('0xd'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index d3f44c8..16f6a89 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xcb99=['rpc','../../config/environment','client','redis','defaults','localhost','socket.io-emitter','./chatGroup.socket','register','then','request\x20sent','debug','ChatGroup,\x20%s,\x20%s,\x20%s','error','code','ChatGroup,\x20%s,\x20%s','message','info','catch','lodash','moment','ioredis','../../mysqldb','../../config/utils'];(function(_0x496ed2,_0x44854a){var _0x1de88c=function(_0x4d8d33){while(--_0x4d8d33){_0x496ed2['push'](_0x496ed2['shift']());}};_0x1de88c(++_0x44854a);}(_0xcb99,0x8b));var _0x9cb9=function(_0x18a16d,_0x199976){_0x18a16d=_0x18a16d-0x0;var _0x21cf0c=_0xcb99[_0x18a16d];return _0x21cf0c;};'use strict';var _=require(_0x9cb9('0x0'));var util=require('util');var moment=require(_0x9cb9('0x1'));var BPromise=require('bluebird');var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x9cb9('0x2'));var db=require(_0x9cb9('0x3'))['db'];var utils=require(_0x9cb9('0x4'));var logger=require('../../config/logger')(_0x9cb9('0x5'));var config=require(_0x9cb9('0x6'));var jayson=require('jayson/promise');var client=jayson[_0x9cb9('0x7')]['http']({'port':0x232a});config[_0x9cb9('0x8')]=_[_0x9cb9('0x9')](config[_0x9cb9('0x8')],{'host':_0x9cb9('0xa'),'port':0x18eb});var socket=require(_0x9cb9('0xb'))(new Redis(config[_0x9cb9('0x8')]));require(_0x9cb9('0xc'))[_0x9cb9('0xd')](socket);function respondWithRpcPromise(_0x48d99a,_0x5264c9,_0xe6d275){return new BPromise(function(_0x392f93,_0x1b4fa6){return client['request'](_0x48d99a,_0xe6d275)[_0x9cb9('0xe')](function(_0x3d38f1){logger['info']('ChatGroup,\x20%s,\x20%s',_0x5264c9,_0x9cb9('0xf'));logger[_0x9cb9('0x10')](_0x9cb9('0x11'),_0x5264c9,_0x9cb9('0xf'),JSON['stringify'](_0x3d38f1));if(_0x3d38f1[_0x9cb9('0x12')]){if(_0x3d38f1[_0x9cb9('0x12')][_0x9cb9('0x13')]===0x1f4){logger[_0x9cb9('0x12')](_0x9cb9('0x14'),_0x5264c9,_0x3d38f1[_0x9cb9('0x12')][_0x9cb9('0x15')]);return _0x1b4fa6(_0x3d38f1[_0x9cb9('0x12')][_0x9cb9('0x15')]);}logger[_0x9cb9('0x12')](_0x9cb9('0x14'),_0x5264c9,_0x3d38f1[_0x9cb9('0x12')][_0x9cb9('0x15')]);return _0x392f93(_0x3d38f1[_0x9cb9('0x12')][_0x9cb9('0x15')]);}else{logger[_0x9cb9('0x16')](_0x9cb9('0x14'),_0x5264c9,_0x9cb9('0xf'));_0x392f93(_0x3d38f1['result']['message']);}})[_0x9cb9('0x17')](function(_0x50169f){logger['error']('ChatGroup,\x20%s,\x20%s',_0x5264c9,_0x50169f);_0x1b4fa6(_0x50169f);});});}
\ No newline at end of file
+var _0x8169=['error','code','message','result','catch','lodash','moment','ioredis','../../mysqldb','../../config/utils','../../config/environment','jayson/promise','http','redis','defaults','register','request','then','info','ChatGroup,\x20%s,\x20%s','request\x20sent','ChatGroup,\x20%s,\x20%s,\x20%s','stringify'];(function(_0x411add,_0x1aed38){var _0x238242=function(_0x4a1cd5){while(--_0x4a1cd5){_0x411add['push'](_0x411add['shift']());}};_0x238242(++_0x1aed38);}(_0x8169,0xd4));var _0x9816=function(_0x4a2130,_0x36a2c5){_0x4a2130=_0x4a2130-0x0;var _0x78dc56=_0x8169[_0x4a2130];return _0x78dc56;};'use strict';var _=require(_0x9816('0x0'));var util=require('util');var moment=require(_0x9816('0x1'));var BPromise=require('bluebird');var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x9816('0x2'));var db=require(_0x9816('0x3'))['db'];var utils=require(_0x9816('0x4'));var logger=require('../../config/logger')('rpc');var config=require(_0x9816('0x5'));var jayson=require(_0x9816('0x6'));var client=jayson['client'][_0x9816('0x7')]({'port':0x232a});config[_0x9816('0x8')]=_[_0x9816('0x9')](config[_0x9816('0x8')],{'host':'localhost','port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0x9816('0x8')]));require('./chatGroup.socket')[_0x9816('0xa')](socket);function respondWithRpcPromise(_0x55f668,_0x2f8d70,_0x142259){return new BPromise(function(_0x2a912f,_0x1d1182){return client[_0x9816('0xb')](_0x55f668,_0x142259)[_0x9816('0xc')](function(_0x378aee){logger[_0x9816('0xd')](_0x9816('0xe'),_0x2f8d70,_0x9816('0xf'));logger['debug'](_0x9816('0x10'),_0x2f8d70,_0x9816('0xf'),JSON[_0x9816('0x11')](_0x378aee));if(_0x378aee[_0x9816('0x12')]){if(_0x378aee['error'][_0x9816('0x13')]===0x1f4){logger[_0x9816('0x12')](_0x9816('0xe'),_0x2f8d70,_0x378aee['error'][_0x9816('0x14')]);return _0x1d1182(_0x378aee[_0x9816('0x12')]['message']);}logger[_0x9816('0x12')]('ChatGroup,\x20%s,\x20%s',_0x2f8d70,_0x378aee[_0x9816('0x12')]['message']);return _0x2a912f(_0x378aee[_0x9816('0x12')][_0x9816('0x14')]);}else{logger[_0x9816('0xd')](_0x9816('0xe'),_0x2f8d70,_0x9816('0xf'));_0x2a912f(_0x378aee[_0x9816('0x15')][_0x9816('0x14')]);}})[_0x9816('0x16')](function(_0x45642b){logger[_0x9816('0x12')](_0x9816('0xe'),_0x2f8d70,_0x45642b);_0x1d1182(_0x45642b);});});}
\ No newline at end of file
index 939eebb..1199f87 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x726a=['removeListener','register','length','chatGroup:','./chatGroup.events','save','remove','update','emit'];(function(_0x1f77c0,_0x57a2b9){var _0xdacc07=function(_0x5a2206){while(--_0x5a2206){_0x1f77c0['push'](_0x1f77c0['shift']());}};_0xdacc07(++_0x57a2b9);}(_0x726a,0x1ab));var _0xa726=function(_0x94d80a,_0x12e09b){_0x94d80a=_0x94d80a-0x0;var _0x3e7cd9=_0x726a[_0x94d80a];return _0x3e7cd9;};'use strict';var ChatGroupEvents=require(_0xa726('0x0'));var events=[_0xa726('0x1'),_0xa726('0x2'),_0xa726('0x3')];function createListener(_0x15cdc6,_0xc0220){return function(_0x298802){_0xc0220[_0xa726('0x4')](_0x15cdc6,_0x298802);};}function removeListener(_0x246974,_0x4f77e7){return function(){ChatGroupEvents[_0xa726('0x5')](_0x246974,_0x4f77e7);};}exports[_0xa726('0x6')]=function(_0xeec1e0){for(var _0x1cc96f=0x0,_0x444b7e=events[_0xa726('0x7')];_0x1cc96f<_0x444b7e;_0x1cc96f++){var _0x270d20=events[_0x1cc96f];var _0xdbf2ce=createListener(_0xa726('0x8')+_0x270d20,_0xeec1e0);ChatGroupEvents['on'](_0x270d20,_0xdbf2ce);}};
\ No newline at end of file
+var _0x41f1=['update','emit','register','length','./chatGroup.events'];(function(_0x4627fb,_0x4d89b8){var _0x1ad65d=function(_0x32a1df){while(--_0x32a1df){_0x4627fb['push'](_0x4627fb['shift']());}};_0x1ad65d(++_0x4d89b8);}(_0x41f1,0x117));var _0x141f=function(_0x5c7158,_0x40146f){_0x5c7158=_0x5c7158-0x0;var _0x526bc4=_0x41f1[_0x5c7158];return _0x526bc4;};'use strict';var ChatGroupEvents=require(_0x141f('0x0'));var events=['save','remove',_0x141f('0x1')];function createListener(_0x428fc2,_0x3be288){return function(_0x2e9bab){_0x3be288[_0x141f('0x2')](_0x428fc2,_0x2e9bab);};}function removeListener(_0x19ef3c,_0x33343c){return function(){ChatGroupEvents['removeListener'](_0x19ef3c,_0x33343c);};}exports[_0x141f('0x3')]=function(_0x5a5241){for(var _0x3340fe=0x0,_0x6dda91=events[_0x141f('0x4')];_0x3340fe<_0x6dda91;_0x3340fe++){var _0x11e6b9=events[_0x3340fe];var _0x2eaa29=createListener('chatGroup:'+_0x11e6b9,_0x5a5241);ChatGroupEvents['on'](_0x11e6b9,_0x2eaa29);}};
\ No newline at end of file
index 998098c..198c06a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9da0=['show','/:id/unread','getUnread','/:id/members','getMembers','/:id/messages','getMessages','post','addMessage','delete','removeMembers','exports','multer','util','path','connect-timeout','express','Router','../../components/auth/service','../../components/interaction/service','../../config/environment','./chatGroup.controller','get','isAuthenticated','index','/describe'];(function(_0x5dc5d5,_0xdeef91){var _0xee4226=function(_0x56b313){while(--_0x56b313){_0x5dc5d5['push'](_0x5dc5d5['shift']());}};_0xee4226(++_0xdeef91);}(_0x9da0,0x192));var _0x09da=function(_0x6c4dde,_0x537361){_0x6c4dde=_0x6c4dde-0x0;var _0x5027cf=_0x9da0[_0x6c4dde];return _0x5027cf;};'use strict';var multer=require(_0x09da('0x0'));var util=require(_0x09da('0x1'));var path=require(_0x09da('0x2'));var timeout=require(_0x09da('0x3'));var express=require(_0x09da('0x4'));var router=express[_0x09da('0x5')]();var fs_extra=require('fs-extra');var auth=require(_0x09da('0x6'));var interaction=require(_0x09da('0x7'));var config=require(_0x09da('0x8'));var controller=require(_0x09da('0x9'));router[_0x09da('0xa')]('/',auth[_0x09da('0xb')](),controller[_0x09da('0xc')]);router['get'](_0x09da('0xd'),auth[_0x09da('0xb')](),controller['describe']);router[_0x09da('0xa')]('/:id',auth[_0x09da('0xb')](),controller[_0x09da('0xe')]);router['get'](_0x09da('0xf'),auth[_0x09da('0xb')](),controller[_0x09da('0x10')]);router['get'](_0x09da('0x11'),auth[_0x09da('0xb')](),controller[_0x09da('0x12')]);router['get'](_0x09da('0x13'),auth['isAuthenticated'](),controller[_0x09da('0x14')]);router['post']('/',auth[_0x09da('0xb')](),controller['create']);router[_0x09da('0x15')](_0x09da('0x11'),auth[_0x09da('0xb')](),controller['addMembers']);router[_0x09da('0x15')](_0x09da('0x13'),auth[_0x09da('0xb')](),controller[_0x09da('0x16')]);router['put']('/:id',auth[_0x09da('0xb')](),controller['update']);router[_0x09da('0x17')]('/:id',auth[_0x09da('0xb')](),controller['destroy']);router[_0x09da('0x17')](_0x09da('0x11'),auth['isAuthenticated'](),controller[_0x09da('0x18')]);module[_0x09da('0x19')]=router;
\ No newline at end of file
+var _0x3919=['Router','../../components/interaction/service','get','isAuthenticated','index','describe','/:id','show','getUnread','/:id/members','getMembers','/:id/messages','getMessages','post','create','addMembers','addMessage','put','update','delete','destroy','removeMembers','multer','path','connect-timeout'];(function(_0x4f79b4,_0x47dba7){var _0x2c7d2c=function(_0x36ebae){while(--_0x36ebae){_0x4f79b4['push'](_0x4f79b4['shift']());}};_0x2c7d2c(++_0x47dba7);}(_0x3919,0x1d8));var _0x9391=function(_0x5309cd,_0x1dca0e){_0x5309cd=_0x5309cd-0x0;var _0x56e3b0=_0x3919[_0x5309cd];return _0x56e3b0;};'use strict';var multer=require(_0x9391('0x0'));var util=require('util');var path=require(_0x9391('0x1'));var timeout=require(_0x9391('0x2'));var express=require('express');var router=express[_0x9391('0x3')]();var fs_extra=require('fs-extra');var auth=require('../../components/auth/service');var interaction=require(_0x9391('0x4'));var config=require('../../config/environment');var controller=require('./chatGroup.controller');router[_0x9391('0x5')]('/',auth[_0x9391('0x6')](),controller[_0x9391('0x7')]);router[_0x9391('0x5')]('/describe',auth[_0x9391('0x6')](),controller[_0x9391('0x8')]);router[_0x9391('0x5')](_0x9391('0x9'),auth[_0x9391('0x6')](),controller[_0x9391('0xa')]);router[_0x9391('0x5')]('/:id/unread',auth[_0x9391('0x6')](),controller[_0x9391('0xb')]);router[_0x9391('0x5')](_0x9391('0xc'),auth[_0x9391('0x6')](),controller[_0x9391('0xd')]);router[_0x9391('0x5')](_0x9391('0xe'),auth[_0x9391('0x6')](),controller[_0x9391('0xf')]);router[_0x9391('0x10')]('/',auth[_0x9391('0x6')](),controller[_0x9391('0x11')]);router[_0x9391('0x10')](_0x9391('0xc'),auth[_0x9391('0x6')](),controller[_0x9391('0x12')]);router[_0x9391('0x10')](_0x9391('0xe'),auth[_0x9391('0x6')](),controller[_0x9391('0x13')]);router[_0x9391('0x14')](_0x9391('0x9'),auth['isAuthenticated'](),controller[_0x9391('0x15')]);router[_0x9391('0x16')](_0x9391('0x9'),auth[_0x9391('0x6')](),controller[_0x9391('0x17')]);router[_0x9391('0x16')](_0x9391('0xc'),auth[_0x9391('0x6')](),controller[_0x9391('0x18')]);module['exports']=router;
\ No newline at end of file
index 9613641..0904f02 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc692=['out','sequelize','exports','BOOLEAN','star','thumb','TEXT','STRING','DATE','ENUM'];(function(_0xabfec4,_0x35076e){var _0x7bafa2=function(_0x52d551){while(--_0x52d551){_0xabfec4['push'](_0xabfec4['shift']());}};_0x7bafa2(++_0x35076e);}(_0xc692,0x15f));var _0x2c69=function(_0x2b7764,_0x2606f1){_0x2b7764=_0x2b7764-0x0;var _0x848dcb=_0xc692[_0x2b7764];return _0x848dcb;};'use strict';var Sequelize=require(_0x2c69('0x0'));module[_0x2c69('0x1')]={'closed':{'type':Sequelize[_0x2c69('0x2')],'defaultValue':![]},'ratingValue':{'type':Sequelize['INTEGER']},'ratingType':{'type':Sequelize['ENUM'](_0x2c69('0x3'),_0x2c69('0x4')),'defaultValue':_0x2c69('0x3')},'ratingMessage':{'type':Sequelize[_0x2c69('0x5')]},'pathTranscript':{'type':Sequelize[_0x2c69('0x5')]},'mailTranscript':{'type':Sequelize[_0x2c69('0x6')],'validate':{'isEmail':!![]}},'closedAt':{'type':Sequelize[_0x2c69('0x7')]},'disposition':{'type':Sequelize['STRING']},'secondDisposition':{'type':Sequelize[_0x2c69('0x6')]},'thirdDisposition':{'type':Sequelize['STRING']},'note':{'type':Sequelize['STRING']},'browserName':{'type':Sequelize[_0x2c69('0x6')]},'browserVersion':{'type':Sequelize[_0x2c69('0x6')]},'osName':{'type':Sequelize[_0x2c69('0x6')]},'osVersion':{'type':Sequelize[_0x2c69('0x6')]},'deviceModel':{'type':Sequelize[_0x2c69('0x6')]},'deviceVendor':{'type':Sequelize[_0x2c69('0x6')]},'deviceType':{'type':Sequelize['STRING']},'referer':{'type':Sequelize[_0x2c69('0x5')]},'customerIp':{'type':Sequelize['STRING']},'formData':{'type':Sequelize[_0x2c69('0x5')]('long')},'read1stAt':{'type':Sequelize[_0x2c69('0x7')]},'lastMsgAt':{'type':Sequelize[_0x2c69('0x7')]},'lastMsgDirection':{'type':Sequelize[_0x2c69('0x8')]('in',_0x2c69('0x9')),'defaultValue':'in','allowNull':![]},'closeReason':{'type':Sequelize[_0x2c69('0x6')]},'customerPort':{'type':Sequelize[_0x2c69('0x6')]},'vidaooSessionId':{'type':Sequelize['TEXT']},'autoreplyExecuted':{'type':Sequelize[_0x2c69('0x2')],'defaultValue':![]}};
\ No newline at end of file
+var _0x7916=['thumb','TEXT','STRING','DATE','ENUM','out','sequelize','BOOLEAN','INTEGER','star'];(function(_0x171e96,_0x382bb1){var _0x31687d=function(_0x2f6808){while(--_0x2f6808){_0x171e96['push'](_0x171e96['shift']());}};_0x31687d(++_0x382bb1);}(_0x7916,0x128));var _0x6791=function(_0x5ea7ce,_0x4be050){_0x5ea7ce=_0x5ea7ce-0x0;var _0x1ac22c=_0x7916[_0x5ea7ce];return _0x1ac22c;};'use strict';var Sequelize=require(_0x6791('0x0'));module['exports']={'closed':{'type':Sequelize[_0x6791('0x1')],'defaultValue':![]},'ratingValue':{'type':Sequelize[_0x6791('0x2')]},'ratingType':{'type':Sequelize['ENUM'](_0x6791('0x3'),_0x6791('0x4')),'defaultValue':_0x6791('0x3')},'ratingMessage':{'type':Sequelize[_0x6791('0x5')]},'pathTranscript':{'type':Sequelize['TEXT']},'mailTranscript':{'type':Sequelize[_0x6791('0x6')],'validate':{'isEmail':!![]}},'closedAt':{'type':Sequelize['DATE']},'disposition':{'type':Sequelize[_0x6791('0x6')]},'secondDisposition':{'type':Sequelize[_0x6791('0x6')]},'thirdDisposition':{'type':Sequelize['STRING']},'note':{'type':Sequelize[_0x6791('0x6')]},'browserName':{'type':Sequelize['STRING']},'browserVersion':{'type':Sequelize[_0x6791('0x6')]},'osName':{'type':Sequelize['STRING']},'osVersion':{'type':Sequelize['STRING']},'deviceModel':{'type':Sequelize[_0x6791('0x6')]},'deviceVendor':{'type':Sequelize[_0x6791('0x6')]},'deviceType':{'type':Sequelize['STRING']},'referer':{'type':Sequelize[_0x6791('0x5')]},'customerIp':{'type':Sequelize[_0x6791('0x6')]},'formData':{'type':Sequelize[_0x6791('0x5')]('long')},'read1stAt':{'type':Sequelize[_0x6791('0x7')]},'lastMsgAt':{'type':Sequelize[_0x6791('0x7')]},'lastMsgDirection':{'type':Sequelize[_0x6791('0x8')]('in',_0x6791('0x9')),'defaultValue':'in','allowNull':![]},'closeReason':{'type':Sequelize[_0x6791('0x6')]},'customerPort':{'type':Sequelize[_0x6791('0x6')]},'vidaooSessionId':{'type':Sequelize[_0x6791('0x5')]},'autoreplyExecuted':{'type':Sequelize[_0x6791('0x1')],'defaultValue':![]}};
\ No newline at end of file
index 7d8c40c..8a925b9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7880=['parse','$gte','$lte','i.createdAt\x20BETWEEN\x20?\x20AND\x20?','null','\x20IS\x20NULL','\x20=\x20?','read','`unreadMessages`\x20=\x200','tag','isArray','filter','replace','isNumeric','i.id\x20LIKE\x20?','getFullTextValue','CONCAT(c.firstName,\x20\x27\x20\x27,\x20c.lastName)\x20LIKE\x20?','i.id','Sequelize','SELECT','clone','SUM(me.read\x20=\x200\x20AND\x20me.direction\x20=\x20\x27in\x27)','DESC','t.id\x20IN\x20?','resolve','ChatWebsiteId','user','role','getChatWebsites','i.ChatWebsiteId\x20IS\x20NULL','i.ChatWebsiteId\x20IN\x20?','agent','sequelize','toString','keyBy','a.mandatoryDisposition','Account.mandatoryDisposition','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','contactName','i.*','c.firstName','Contact.firstName','c.lastName','Contact.lastName','c.email','c.phone','Contact.phone','c.mobile','Contact.mobile','c.fax','Contact.fax','o.fullname','Owner.fullname','o.internal','Owner.internal','GROUP_CONCAT(DISTINCT\x20t.id)','ui.ChatInteractionId\x20IN\x20?','groupBy','ChatInteractionId','all','rows','show','params','include','options','create','destroy','describe','createVidaooSession','ChatWebsite','vidaooApiKey','vidaooEscalation','vidaooTopic','vidaooNote','vidaooMetadata','https://api-vidaoo.xcally.com/api/v1/meetings','isNull','follow','Error\x20in\x20conversion\x20vidaooMetadata','ValidationError','out','ChatMessage','Unable\x20to\x20create\x20Vidaoo\x20session','updateAttributes','customUpdate','CmContact','abandon','abandonInteraction,\x20%s,\x20%s,\x20%s','entity\x20not\x20found','Interaction\x20already\x20assigned','update','closed','disposition','AbandonInteraction','attachmentUpload','file','originalname','basename','filename','mimetype','Attachment','attachmentDownload','Unauthorized','findOne','attachId','join','root','server/files/attachments/','offline-chat/','download','close','mailTranscript','transcript-%s.txt','now','Messages','%s%d','agentAlias','customer','format','website_alias','System','alias','agent_fullname','[%s]\x20%s:\x20%s\x0a','MM/DD/YYYY\x20HH:mm:ss','appendFileSync','MailServerOut','Smtp','service','host','port','secure','pass','SendMail','\x22%s\x22\x20<%s>','email','Mail\x20Transcript','Hi\x20%s,\x20attached\x20you\x20can\x20find\x20your\x20transcript\x20file.\x20\x0a\x0aRegards.\x20\x0a\x0a','addMessage','ids','getMessages','nolimit','pick','YYYY-MM-DD\x20HH:mm:ss','includeAll','getMyMessages','secret','includeAgent','findAll','addTags','spread','emit','chatInteractionTags:save','removeTags','unix','server','files','tmp','attachments','transcript-%d-%s.zip','firstName','lastName','Owner','get','mkdirSync','Account','closedAt','browserName','customerPort','N.A.','tail','createReadStream','createWriteStream','direction','renderFile','downloadInteraction.ejs','transcript-','.pdf','Chat','createPdfFromHTML','err','unlinkSync','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','util','path','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','papaparse','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../components/export/pdf','../../config/license/hardware','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','redis','defaults','localhost','socket.io-emitter','./chatInteraction.socket','jayson/promise','http','client','then','info','request\x20sent','debug','error','code','ChatInteraction,\x20%s,\x20%s','message','catch','sendStatus','status','end','json','limit','undefined','count','offset','set','Content-Range','apply','reject','save','name','send','merge','contact','interaction','account','fullname','Tags','TagIds','split','forEach','push','index','map','ChatInteraction','rawAttributes','fieldName','type','keys','query','filters','intersection','model','attributes','fields','length','hasOwnProperty','order','sort','where','select','field','color','from','tools_tags','u.id','ui.ChatInteractionId','user_has_chat_interactions','left_join','users','u.id\x20=\x20ui.UserId','chat_interactions','c.id\x20=\x20i.ContactId\x20AND\x20c.deletedAt\x20IS\x20NULL','chat_websites','chat_messages','me.ChatInteractionId\x20=\x20i.id','chat_interaction_has_tags','it.ChatInteractionId\x20=\x20i.id','t.id\x20=\x20it.TagId','expr','search','parseSearch','sqlOperator','conditions','find','unreadMessages','value','having','`\x20=\x200','`\x20>\x200','Contact','operator','$substring','MATCH\x20(c.firstName,\x20c.lastName,\x20c.phone,\x20c.mobile,\x20c.fax,\x20c.email)\x20AGAINST\x20(?\x20IN\x20BOOLEAN\x20MODE)','ContactId','buildExpression','text','Tag','CONCAT(\x27,\x27,\x20`TagIds`,\x20\x27,\x27)\x20LIKE\x20?','union','User','CONCAT_WS(\x27\x20\x27,\x20o.name,\x20o.fullname)\x20LIKE\x20?','UserId','start','body','some','isEmpty','concat','createdAt'];(function(_0x50eca6,_0x1f81eb){var _0x24fe0d=function(_0x1d8ef3){while(--_0x1d8ef3){_0x50eca6['push'](_0x50eca6['shift']());}};_0x24fe0d(++_0x1f81eb);}(_0x7880,0x1f4));var _0x0788=function(_0x1cd585,_0x54276b){_0x1cd585=_0x1cd585-0x0;var _0x3ca87f=_0x7880[_0x1cd585];return _0x3ca87f;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x0788('0x0'));var zipdir=require(_0x0788('0x1'));var jsonpatch=require(_0x0788('0x2'));var rp=require(_0x0788('0x3'));var moment=require(_0x0788('0x4'));var BPromise=require(_0x0788('0x5'));var Mustache=require('mustache');var util=require(_0x0788('0x6'));var path=require(_0x0788('0x7'));var sox=require(_0x0788('0x8'));var csv=require(_0x0788('0x9'));var ejs=require(_0x0788('0xa'));var fs=require('fs');var fs_extra=require(_0x0788('0xb'));var _=require(_0x0788('0xc'));var squel=require(_0x0788('0xd'));var crypto=require(_0x0788('0xe'));var jsforce=require(_0x0788('0xf'));var deskjs=require('desk.js');var toCsv=require(_0x0788('0x9'));var querystring=require('querystring');var Papa=require(_0x0788('0x10'));var Redis=require('ioredis');var authService=require(_0x0788('0x11'));var qs=require(_0x0788('0x12'));var as=require(_0x0788('0x13'));var pdf=require(_0x0788('0x14'));var hardwareService=require(_0x0788('0x15'));var logger=require('../../config/logger')(_0x0788('0x16'));var utils=require(_0x0788('0x17'));var config=require(_0x0788('0x18'));var licenseUtil=require(_0x0788('0x19'));var db=require(_0x0788('0x1a'))['db'];config[_0x0788('0x1b')]=_[_0x0788('0x1c')](config['redis'],{'host':_0x0788('0x1d'),'port':0x18eb});var socket=require(_0x0788('0x1e'))(new Redis(config[_0x0788('0x1b')]));require(_0x0788('0x1f'))['register'](socket);var jayson=require(_0x0788('0x20'));var client=jayson['client'][_0x0788('0x21')]({'port':0x232b});var client9004=jayson[_0x0788('0x22')][_0x0788('0x21')]({'port':0x232c});function respondWithRpcPromise(_0xb406fb,_0x2ddd1a,_0x430e34,_0x5e1a29){return new BPromise(function(_0x573822,_0x17d805){var _0x461d9d=_0x5e1a29||client;return _0x461d9d['request'](_0xb406fb,_0x430e34)[_0x0788('0x23')](function(_0x415f19){logger[_0x0788('0x24')]('ChatInteraction,\x20%s,\x20%s',_0x2ddd1a,_0x0788('0x25'));logger[_0x0788('0x26')]('ChatInteraction,\x20%s,\x20%s,\x20%s',_0x2ddd1a,_0x0788('0x25'),JSON['stringify'](_0x415f19));if(_0x415f19[_0x0788('0x27')]){if(_0x415f19['error'][_0x0788('0x28')]===0x1f4){logger[_0x0788('0x27')](_0x0788('0x29'),_0x2ddd1a,_0x415f19[_0x0788('0x27')][_0x0788('0x2a')]);return _0x17d805(_0x415f19['error']['message']);}logger[_0x0788('0x27')](_0x0788('0x29'),_0x2ddd1a,_0x415f19[_0x0788('0x27')][_0x0788('0x2a')]);return _0x573822(_0x415f19['error']['message']);}else{logger[_0x0788('0x24')](_0x0788('0x29'),_0x2ddd1a,_0x0788('0x25'));_0x573822(_0x415f19['result']['message']);}})[_0x0788('0x2b')](function(_0xa1f7dc){logger['error']('ChatInteraction,\x20%s,\x20%s',_0x2ddd1a,_0xa1f7dc);_0x17d805(_0xa1f7dc);});});}function respondWithStatusCode(_0x5a54a5,_0x44798c){_0x44798c=_0x44798c||0xcc;return function(_0x57fda1){if(_0x57fda1){return _0x5a54a5[_0x0788('0x2c')](_0x44798c);}return _0x5a54a5[_0x0788('0x2d')](_0x44798c)[_0x0788('0x2e')]();};}function respondWithResult(_0x18fc0e,_0xf9ba32){_0xf9ba32=_0xf9ba32||0xc8;return function(_0xb2f4a5){if(_0xb2f4a5){return _0x18fc0e[_0x0788('0x2d')](_0xf9ba32)[_0x0788('0x2f')](_0xb2f4a5);}};}function respondWithFilteredResult(_0x5b7594,_0x5a5178){return function(_0x3c5246){if(_0x3c5246){var _0x40d345=typeof _0x5a5178['offset']==='undefined'&&typeof _0x5a5178[_0x0788('0x30')]===_0x0788('0x31');var _0x20fcd8=_0x3c5246[_0x0788('0x32')];var _0x44cbfb=_0x40d345?0x0:_0x5a5178[_0x0788('0x33')];var _0x327d67=_0x40d345?_0x3c5246[_0x0788('0x32')]:_0x5a5178[_0x0788('0x33')]+_0x5a5178[_0x0788('0x30')];var _0x5ec0ed;if(_0x327d67>=_0x20fcd8){_0x327d67=_0x20fcd8;_0x5ec0ed=0xc8;}else{_0x5ec0ed=0xce;}_0x5b7594[_0x0788('0x2d')](_0x5ec0ed);return _0x5b7594[_0x0788('0x34')](_0x0788('0x35'),_0x44cbfb+'-'+_0x327d67+'/'+_0x20fcd8)[_0x0788('0x2f')](_0x3c5246);}return null;};}function patchUpdates(_0xce4534){return function(_0x458193){try{jsonpatch[_0x0788('0x36')](_0x458193,_0xce4534,!![]);}catch(_0x15d67a){return BPromise[_0x0788('0x37')](_0x15d67a);}return _0x458193[_0x0788('0x38')]();};}function saveUpdates(_0x4fa055,_0x4ae132){return function(_0x5947d3){if(_0x5947d3){return _0x5947d3['update'](_0x4fa055)['then'](function(_0x586a06){return _0x586a06;});}return null;};}function removeEntity(_0x208a89,_0x38a4ae){return function(_0x2130e3){if(_0x2130e3){return _0x2130e3['destroy']()[_0x0788('0x23')](function(){_0x208a89[_0x0788('0x2d')](0xcc)[_0x0788('0x2e')]();});}};}function handleEntityNotFound(_0xaea11d,_0x57c4d8){return function(_0x2ed940){if(!_0x2ed940){_0xaea11d['sendStatus'](0x194);}return _0x2ed940;};}function handleError(_0x322465,_0x4fcde3){_0x4fcde3=_0x4fcde3||0x1f4;return function(_0x9d1edb){logger[_0x0788('0x27')](_0x9d1edb['stack']);if(_0x9d1edb[_0x0788('0x39')]){delete _0x9d1edb[_0x0788('0x39')];}_0x322465['status'](_0x4fcde3)[_0x0788('0x3a')](_0x9d1edb);};}function getMustacheRender(_0x5eb693,_0x295024){return Mustache['render'](_0x5eb693,_[_0x0788('0x3b')](_0x295024['body'],{'contact':_0x295024[_0x0788('0x3c')],'message':_0x295024['message'],'agent':_0x295024['agent'],'interaction':_0x295024[_0x0788('0x3d')],'account':_0x295024[_0x0788('0x3e')]}))||'';}function getInteractionUsers(_0x2e48cf,_0x2d17b0){return new BPromise(function(_0x8cfffc,_0x53da74){try{if(_0x2d17b0[_0x2e48cf['id']]){_0x2e48cf['Users']=_['map'](_0x2d17b0[_0x2e48cf['id']],function(_0x4d539a){return{'id':_0x4d539a['id'],'fullname':_0x4d539a[_0x0788('0x3f')]};});}}catch(_0x1202c4){_0x53da74(_0x1202c4);}_0x8cfffc(_0x2e48cf);});}function getInteractionTags(_0x45b247,_0x358a22){return new BPromise(function(_0x362c49,_0x5993ad){try{if(_0x45b247['TagIds']){_0x45b247[_0x0788('0x40')]=[];_0x45b247[_0x0788('0x41')][_0x0788('0x42')](',')[_0x0788('0x43')](function(_0x236b63){_0x45b247[_0x0788('0x40')][_0x0788('0x44')](_0x358a22[_0x236b63]);});}delete _0x45b247[_0x0788('0x41')];}catch(_0x347984){_0x5993ad(_0x347984);}_0x362c49(_0x45b247);});}function updateChatInteraction(_0x50e8f5,_0x5581e6,_0x441aec){return new BPromise(function(_0x1d579d,_0x9e8ee){return getInteractionUsers(_0x50e8f5,_0x441aec)['then'](function(_0x5ab353){return getInteractionTags(_0x5ab353,_0x5581e6);})['then'](function(_0x172424){_0x1d579d(_0x172424);})[_0x0788('0x2b')](function(_0x25501b){_0x9e8ee(_0x25501b);});});}exports[_0x0788('0x45')]=function(_0x2737d8,_0x1928f3){var _0x1ab634={},_0x15b90c={},_0x4bd0d9={'count':0x0,'rows':[]};var _0x15c618=_[_0x0788('0x46')](db[_0x0788('0x47')][_0x0788('0x48')],function(_0x58eb04){return{'name':_0x58eb04[_0x0788('0x49')],'type':_0x58eb04[_0x0788('0x4a')]['key']};});_0x15b90c['model']=_['map'](_0x15c618,_0x0788('0x39'));_0x15b90c['query']=_[_0x0788('0x4b')](_0x2737d8[_0x0788('0x4c')]);_0x15b90c[_0x0788('0x4d')]=_[_0x0788('0x4e')](_0x15b90c[_0x0788('0x4f')],_0x15b90c[_0x0788('0x4c')]);_0x1ab634[_0x0788('0x50')]=_[_0x0788('0x4e')](_0x15b90c['model'],qs['fields'](_0x2737d8[_0x0788('0x4c')][_0x0788('0x51')]));_0x1ab634[_0x0788('0x50')]=_0x1ab634['attributes'][_0x0788('0x52')]?_0x1ab634[_0x0788('0x50')]:_0x15b90c[_0x0788('0x4f')];if(!_0x2737d8[_0x0788('0x4c')][_0x0788('0x53')]('nolimit')){_0x1ab634['limit']=qs[_0x0788('0x30')](_0x2737d8[_0x0788('0x4c')]['limit']);_0x1ab634[_0x0788('0x33')]=qs['offset'](_0x2737d8[_0x0788('0x4c')][_0x0788('0x33')]);}_0x1ab634[_0x0788('0x54')]=qs[_0x0788('0x55')](_0x2737d8[_0x0788('0x4c')][_0x0788('0x55')]);_0x1ab634[_0x0788('0x56')]=qs[_0x0788('0x4d')](_['pick'](_0x2737d8[_0x0788('0x4c')],_0x15b90c[_0x0788('0x4d')]),_0x15c618);var _0x3f2f1b=[];var _0x5ef557=squel[_0x0788('0x57')]()[_0x0788('0x58')]('id')['field'](_0x0788('0x39'))[_0x0788('0x58')](_0x0788('0x59'))[_0x0788('0x5a')](_0x0788('0x5b'));var _0x347cc8=squel['select']()['field'](_0x0788('0x5c'))[_0x0788('0x58')]('u.fullname')[_0x0788('0x58')](_0x0788('0x5d'))[_0x0788('0x5a')](_0x0788('0x5e'),'ui')[_0x0788('0x5f')](_0x0788('0x60'),'u',_0x0788('0x61'));var _0xeedd30=squel[_0x0788('0x57')]()[_0x0788('0x5a')](_0x0788('0x62'),'i')[_0x0788('0x5f')]('cm_contacts','c',_0x0788('0x63'))[_0x0788('0x5f')](_0x0788('0x60'),'o','o.id\x20=\x20i.UserId')[_0x0788('0x5f')](_0x0788('0x64'),'a','a.id\x20=\x20i.ChatWebsiteId')['left_join'](_0x0788('0x65'),'me',_0x0788('0x66'))[_0x0788('0x5f')](_0x0788('0x67'),'it',_0x0788('0x68'))[_0x0788('0x5f')]('tools_tags','t',_0x0788('0x69'));var _0x3be076=squel[_0x0788('0x6a')]();var _0x47be71=[];var _0x533f71=squel[_0x0788('0x6a')]();var _0x5419d9;if(_0x2737d8[_0x0788('0x4c')][_0x0788('0x6b')]){_0x5419d9=as[_0x0788('0x6c')](_0x2737d8[_0x0788('0x4c')][_0x0788('0x6b')]);var _0x348d25=_0x5419d9[_0x0788('0x6d')];for(var _0x29c912=0x0;_0x29c912<_0x5419d9[_0x0788('0x6e')][_0x0788('0x52')];_0x29c912++){var _0x59fcbc=_0x5419d9[_0x0788('0x6e')][_0x29c912];var _0x446170='i';var _0x602e3b=_[_0x0788('0x6f')](_0x15c618,['name',_0x59fcbc[_0x0788('0x58')]]);if(!_0x602e3b){switch(_0x59fcbc[_0x0788('0x58')]){case _0x0788('0x70'):if(_0x59fcbc[_0x0788('0x71')]==0x1){_0xeedd30[_0x0788('0x72')]('`'+_0x59fcbc['field']+_0x0788('0x73'));}else{_0xeedd30['having']('`'+_0x59fcbc[_0x0788('0x58')]+_0x0788('0x74'));}break;case _0x0788('0x75'):if(_0x59fcbc[_0x0788('0x76')]===_0x0788('0x77')){if(_0x59fcbc[_0x0788('0x71')][_0x0788('0x42')]('\x20')[_0x0788('0x52')]>0x1){_0x3be076[_0x348d25](_0x0788('0x78'),qs['getFullTextValue'](_0x59fcbc[_0x0788('0x71')]),null);}else{var _0x2dea6c='%'+_0x59fcbc[_0x0788('0x71')]+'%';_0x3be076[_0x348d25]('c.firstName\x20LIKE\x20?\x20OR\x20c.lastName\x20LIKE\x20?\x20OR\x20c.email\x20LIKE\x20?',_0x2dea6c,_0x2dea6c,_0x2dea6c);}}else{_0x602e3b=_['find'](_0x15c618,[_0x0788('0x39'),_0x0788('0x79')]);_0x59fcbc[_0x0788('0x58')]='ContactId';_0x35c612=as[_0x0788('0x7a')](_0x446170,_0x602e3b[_0x0788('0x4a')],_0x59fcbc);_0x3be076[_0x348d25](_0x35c612[_0x0788('0x7b')],_0x35c612[_0x0788('0x71')]['start'],_0x35c612['value']['end']);}break;case _0x0788('0x7c'):var _0x2a55f2=_0x59fcbc[_0x0788('0x71')]['split'](',')['map'](function(_0xaa2d4d){return Number(_0xaa2d4d);});_0x2a55f2['forEach'](function(_0x955bfa){_0x533f71['or'](_0x0788('0x7d'),'%,'+_0x955bfa+',%');});_0x47be71=_[_0x0788('0x7e')](_0x47be71,_0x2a55f2);break;case _0x0788('0x7f'):if(_0x59fcbc[_0x0788('0x76')]===_0x0788('0x77')){_0x3be076[_0x348d25](_0x0788('0x80'),'%'+_0x59fcbc[_0x0788('0x71')]+'%',null);}else{_0x602e3b=_[_0x0788('0x6f')](_0x15c618,[_0x0788('0x39'),'UserId']);_0x59fcbc[_0x0788('0x58')]=_0x0788('0x81');_0x35c612=as['buildExpression'](_0x446170,_0x602e3b['type'],_0x59fcbc);_0x3be076[_0x348d25](_0x35c612[_0x0788('0x7b')],_0x35c612[_0x0788('0x71')][_0x0788('0x82')],_0x35c612[_0x0788('0x71')][_0x0788('0x2e')]);}break;case _0x0788('0x83'):_0x35c612=as['buildExpression']('me',null,_0x59fcbc);_0x3be076[_0x348d25](_0x35c612[_0x0788('0x7b')],_0x35c612[_0x0788('0x71')][_0x0788('0x82')],_0x35c612[_0x0788('0x71')]['end']);break;}}else{var _0x35c612=as[_0x0788('0x7a')](_0x446170,_0x602e3b[_0x0788('0x4a')],_0x59fcbc);_0x3be076[_0x348d25](_0x35c612[_0x0788('0x7b')],_0x35c612['value']['start'],_0x35c612[_0x0788('0x71')][_0x0788('0x2e')]);}}}else{var _0x5513f7=_(_0x2737d8[_0x0788('0x4c')])[_0x0788('0x4b')]()[_0x0788('0x46')](function(_0x2b10fe){return _[_0x0788('0x84')](_0x15c618,[_0x0788('0x39'),_0x2b10fe])?_0x2b10fe:undefined;})['compact']()[_0x0788('0x71')]();if(!_[_0x0788('0x85')](_0x5513f7)){_0x5513f7[_0x0788('0x43')](function(_0x515dd8){if(_0x515dd8==='ChatWebsiteId'){_0xeedd30[_0x0788('0x56')]('i.ChatWebsiteId\x20IN\x20?',[][_0x0788('0x86')](_0x2737d8[_0x0788('0x4c')][_0x515dd8]));}else if(_0x515dd8===_0x0788('0x87')){var _0xa4b3f8=JSON[_0x0788('0x88')](_0x2737d8[_0x0788('0x4c')][_0x515dd8])[_0x0788('0x89')];var _0x216ea9=JSON[_0x0788('0x88')](_0x2737d8['query'][_0x515dd8])[_0x0788('0x8a')];_0xeedd30[_0x0788('0x56')](_0x0788('0x8b'),_0xa4b3f8,_0x216ea9);}else{if(_0x2737d8['query'][_0x515dd8]===_0x0788('0x8c')){_0xeedd30[_0x0788('0x56')]('i.'+_0x515dd8+_0x0788('0x8d'));}else{_0xeedd30['where']('i.'+_0x515dd8+_0x0788('0x8e'),_0x2737d8[_0x0788('0x4c')][_0x515dd8]);}}});}if(_0x2737d8[_0x0788('0x4c')][_0x0788('0x8f')]){if(_0x2737d8[_0x0788('0x4c')][_0x0788('0x8f')]==0x1){_0xeedd30[_0x0788('0x72')](_0x0788('0x90'));}else{_0xeedd30[_0x0788('0x72')]('`unreadMessages`\x20>\x200');}}if(_0x2737d8[_0x0788('0x4c')][_0x0788('0x91')]){_0x47be71=_[_0x0788('0x92')](_0x2737d8[_0x0788('0x4c')][_0x0788('0x91')])?_0x2737d8['query'][_0x0788('0x91')]:new Array(_0x2737d8[_0x0788('0x4c')][_0x0788('0x91')]);_0x47be71['forEach'](function(_0x1788d1){_0x533f71['or'](_0x0788('0x7d'),'%,'+_0x1788d1+',%');});}if(_0x2737d8[_0x0788('0x4c')][_0x0788('0x93')]){var _0x2b74df=_0x2737d8['query'][_0x0788('0x93')][_0x0788('0x94')]('\x5c','\x5c\x5c')['replace'](/'/g,'\x27\x27');if(qs[_0x0788('0x95')](_0x2b74df)){_0x3be076['or'](_0x0788('0x96'),_0x2b74df+'%');}else{_0x3be076['or']('MATCH\x20(me.body)\x20AGAINST\x20(?\x20IN\x20BOOLEAN\x20MODE)',qs[_0x0788('0x97')](_0x2b74df))['or'](_0x0788('0x98'),_0x2b74df+'%');}}}_0xeedd30[_0x0788('0x56')](_0x3be076);_0xeedd30['group'](_0x0788('0x99'));var _0x42c537={'type':db[_0x0788('0x9a')]['QueryTypes'][_0x0788('0x9b')],'raw':!![]};var _0x1b3046=_0xeedd30[_0x0788('0x9c')]();_0x1b3046[_0x0788('0x58')](_0x0788('0x99'));_0x1b3046[_0x0788('0x58')](_0x0788('0x9d'),_0x0788('0x70'));if(_0x1ab634['order']){_0x1ab634[_0x0788('0x54')][_0x0788('0x43')](function(_0x121f1d){var _0x31c921=_0x121f1d[0x0]==='contactName'?_0x121f1d[0x0]:'i.'+_0x121f1d[0x0];_0xeedd30['order'](_0x31c921,_0x121f1d[0x1]===_0x0788('0x9e')?![]:!![]);});}if(!_[_0x0788('0x85')](_0x47be71)){_0xeedd30['having'](_0x533f71);_0x1b3046[_0x0788('0x56')](_0x0788('0x9f'),_0x47be71);}BPromise[_0x0788('0xa0')]()['then'](function(){if(!_0x5419d9){if(_0x2737d8['query'][_0x0788('0xa1')])return;_0x1b3046[_0x0788('0x56')]('i.ChatWebsiteId\x20IS\x20NOT\x20NULL');_0xeedd30['where']('i.ChatWebsiteId\x20IS\x20NOT\x20NULL');return;}if(_0x2737d8[_0x0788('0xa2')][_0x0788('0xa3')]!=='agent')return;return _0x2737d8[_0x0788('0xa2')][_0x0788('0xa4')]({'attributes':['id'],'raw':!![]})[_0x0788('0x23')](function(_0x41fe7a){if(_[_0x0788('0x85')](_0x41fe7a)){_0x1b3046['where'](_0x0788('0xa5'));_0xeedd30['where'](_0x0788('0xa5'));}else{_0x1b3046['where'](_0x0788('0xa6'),_[_0x0788('0x46')](_0x41fe7a,'id'));_0xeedd30[_0x0788('0x56')](_0x0788('0xa6'),_[_0x0788('0x46')](_0x41fe7a,'id'));}});})[_0x0788('0x23')](function(){if(_0x2737d8[_0x0788('0xa2')][_0x0788('0xa3')]===_0x0788('0xa7')&&!_0x5419d9&&!_0x2737d8[_0x0788('0x4c')][_0x0788('0xa1')])return[];return db[_0x0788('0xa8')][_0x0788('0x4c')](_0x1b3046['toString'](),_0x42c537);})['then'](function(_0x50363e){_0x4bd0d9[_0x0788('0x32')]=_0x50363e[_0x0788('0x52')];if(_0x4bd0d9[_0x0788('0x32')]===0x0)return[];return db[_0x0788('0xa8')][_0x0788('0x4c')](_0x5ef557[_0x0788('0xa9')](),_0x42c537)[_0x0788('0x23')](function(_0x16838d){_0x3f2f1b=_[_0x0788('0xaa')](_0x16838d,'id');_0x42c537=_[_0x0788('0x3b')](_0x42c537,{'model':db[_0x0788('0x47')],'mapToModel':!![],'raw':!![],'nest':!![]});if(_0x2737d8['query']['fields']){_0x1ab634[_0x0788('0x50')][_0x0788('0x43')](function(_0x104a70){_0xeedd30[_0x0788('0x58')]('i.'+_0x104a70);});}else{_0xeedd30[_0x0788('0x58')](_0x0788('0x9d'),_0x0788('0x70'));_0xeedd30[_0x0788('0x58')]('a.key','Account.key');_0xeedd30[_0x0788('0x58')](_0x0788('0xab'),_0x0788('0xac'));_0xeedd30[_0x0788('0x58')](_0x0788('0xad'),_0x0788('0xae'));_0xeedd30['field'](_0x0788('0xaf'));_0xeedd30[_0x0788('0x58')](_0x0788('0xb0'),_0x0788('0xb1'));_0xeedd30[_0x0788('0x58')](_0x0788('0xb2'),_0x0788('0xb3'));_0xeedd30[_0x0788('0x58')](_0x0788('0xb4'),'Contact.email');_0xeedd30[_0x0788('0x58')](_0x0788('0xb5'),_0x0788('0xb6'));_0xeedd30[_0x0788('0x58')](_0x0788('0xb7'),_0x0788('0xb8'));_0xeedd30['field'](_0x0788('0xb9'),_0x0788('0xba'));_0xeedd30[_0x0788('0x58')](_0x0788('0xbb'),_0x0788('0xbc'));_0xeedd30[_0x0788('0x58')](_0x0788('0xbd'),_0x0788('0xbe'));_0xeedd30[_0x0788('0x58')](_0x0788('0xbf'),'TagIds');}if(_0x1ab634[_0x0788('0x30')])_0xeedd30['limit'](_0x1ab634[_0x0788('0x30')]);if(_0x1ab634['offset'])_0xeedd30[_0x0788('0x33')](_0x1ab634['offset']);return db[_0x0788('0xa8')][_0x0788('0x4c')](_0xeedd30[_0x0788('0xa9')](),_0x42c537);})[_0x0788('0x23')](function(_0x5242eb){if(_0x5242eb[_0x0788('0x52')]>0x0)_0x347cc8[_0x0788('0x56')](_0x0788('0xc0'),_['map'](_0x5242eb,'id'));return db[_0x0788('0xa8')][_0x0788('0x4c')](_0x347cc8['toString'](),_0x42c537)[_0x0788('0x23')](function(_0x4645aa){var _0x37e9a9=_[_0x0788('0xc1')](_0x4645aa,_0x0788('0xc2'));var _0xab471b=[];_0x5242eb[_0x0788('0x43')](function(_0x563533){_0xab471b[_0x0788('0x44')](updateChatInteraction(_0x563533,_0x3f2f1b,_0x37e9a9));});return BPromise[_0x0788('0xc3')](_0xab471b);});});})[_0x0788('0x23')](function(_0x3f3e06){_0x4bd0d9[_0x0788('0xc4')]=_0x3f3e06;return _0x4bd0d9;})[_0x0788('0x23')](respondWithFilteredResult(_0x1928f3,_0x1ab634))[_0x0788('0x2b')](handleError(_0x1928f3,null));};exports[_0x0788('0xc5')]=function(_0x5761b1,_0x5130c4){var _0x26233b={'raw':![],'where':{'id':_0x5761b1[_0x0788('0xc6')]['id']}},_0x42f6df={};_0x42f6df[_0x0788('0x4f')]=_[_0x0788('0x4b')](db[_0x0788('0x47')][_0x0788('0x48')]);_0x42f6df['query']=_[_0x0788('0x4b')](_0x5761b1['query']);_0x42f6df['filters']=_[_0x0788('0x4e')](_0x42f6df[_0x0788('0x4f')],_0x42f6df['query']);_0x26233b[_0x0788('0x50')]=_[_0x0788('0x4e')](_0x42f6df[_0x0788('0x4f')],qs[_0x0788('0x51')](_0x5761b1[_0x0788('0x4c')][_0x0788('0x51')]));_0x26233b['attributes']=_0x26233b[_0x0788('0x50')][_0x0788('0x52')]?_0x26233b['attributes']:_0x42f6df[_0x0788('0x4f')];if(_0x5761b1[_0x0788('0x4c')]['includeAll']){_0x26233b[_0x0788('0xc7')]=[{'all':!![]}];}_0x26233b=_[_0x0788('0x3b')]({},_0x26233b,_0x5761b1[_0x0788('0xc8')]);return db[_0x0788('0x47')][_0x0788('0x6f')](_0x26233b)[_0x0788('0x23')](handleEntityNotFound(_0x5130c4,null))[_0x0788('0x23')](respondWithResult(_0x5130c4,null))['catch'](handleError(_0x5130c4,null));};exports[_0x0788('0xc9')]=function(_0x2e0529,_0x1f9944){return db[_0x0788('0x47')]['create'](_0x2e0529[_0x0788('0x83')],{})[_0x0788('0x23')](respondWithResult(_0x1f9944,0xc9))['catch'](handleError(_0x1f9944,null));};exports['update']=function(_0x691225,_0x15a70b){if(_0x691225[_0x0788('0x83')]['id']){delete _0x691225[_0x0788('0x83')]['id'];}return db[_0x0788('0x47')][_0x0788('0x6f')]({'where':{'id':_0x691225['params']['id']}})[_0x0788('0x23')](handleEntityNotFound(_0x15a70b,null))[_0x0788('0x23')](saveUpdates(_0x691225[_0x0788('0x83')],null))[_0x0788('0x23')](respondWithResult(_0x15a70b,null))[_0x0788('0x2b')](handleError(_0x15a70b,null));};exports[_0x0788('0xca')]=function(_0xc5e64a,_0x3539d4){return db[_0x0788('0x47')][_0x0788('0x6f')]({'where':{'id':_0xc5e64a[_0x0788('0xc6')]['id']}})[_0x0788('0x23')](handleEntityNotFound(_0x3539d4,null))[_0x0788('0x23')](removeEntity(_0x3539d4,null))[_0x0788('0x2b')](handleError(_0x3539d4,null));};exports[_0x0788('0xcb')]=function(_0x150a05,_0x1e0fb7){return db['ChatInteraction'][_0x0788('0xcb')]()[_0x0788('0x23')](respondWithResult(_0x1e0fb7,null))[_0x0788('0x2b')](handleError(_0x1e0fb7,null));};exports[_0x0788('0xcc')]=function(_0x57b44e,_0x191e15){var _0x5d0919=_0x57b44e[_0x0788('0xc6')]['id'];var _0x563e4c;var _0x51da2c;var _0x34a12a;return db[_0x0788('0x47')]['findOne']({'where':{'id':_0x5d0919}})[_0x0788('0x23')](function(_0x522e02){_0x563e4c=_0x522e02;return db[_0x0788('0xcd')]['findOne']({'where':{'id':_0x522e02[_0x0788('0xa1')]},'attributes':['id',_0x0788('0xce'),_0x0788('0xcf'),_0x0788('0xd0'),_0x0788('0xd1'),_0x0788('0xd2')],'raw':!![]});})['then'](function(_0x473491){if(_0x473491&&_0x473491['vidaooApiKey']&&_0x473491[_0x0788('0xcf')]){_0x51da2c=_0x473491;var _0x1222f8={'interaction':{'id':_0x5d0919},'agent':{'id':_0x57b44e['user']['id'],'name':_0x57b44e['user']['name'],'fullname':_0x57b44e[_0x0788('0xa2')]['fullname'],'email':_0x57b44e['user']['email']},'contact':_0x57b44e['body']['contact'],'account':_0x57b44e['body'][_0x0788('0x3e')]};var _0x3c2aa3={'rejectUnauthorized':![],'method':'POST','url':_0x0788('0xd3'),'headers':{'X-APIKEY':_0x473491['vidaooApiKey']},'body':{'duration':null,'scheduledAt':null,'participants':[_0x57b44e[_0x0788('0xa2')]['email']],'buttons':null,'topic':_0x51da2c[_0x0788('0xd0')],'note':_[_0x0788('0xd4')](_0x51da2c[_0x0788('0xd1')])?null:getMustacheRender(_0x51da2c[_0x0788('0xd1')],_0x1222f8),'metadata':null},'redirect':_0x0788('0xd5'),'json':!![]};try{if(!_[_0x0788('0xd4')](_0x51da2c[_0x0788('0xd2')])){var _0x37439f=getMustacheRender(_0x51da2c[_0x0788('0xd2')],_0x1222f8);var _0xf87649=JSON['parse'](_0x37439f);_0x3c2aa3[_0x0788('0x83')]['metadata']=_0xf87649;}}catch(_0x3bd7f3){throw new db['Sequelize']['ValidationError'](_0x0788('0xd6'));}return rp(_0x3c2aa3);}else{throw new db[(_0x0788('0x9a'))][(_0x0788('0xd7'))]('Error\x20in\x20Vidaoo\x20configuration');}})[_0x0788('0x23')](function(_0x1b52f6){_0x34a12a=_0x1b52f6;if(_0x34a12a['id']){var _0x5be647={'body':_0x34a12a['join_url'],'ChatWebsiteId':_0x51da2c['id'],'ChatInteractionId':_0x563e4c['id'],'direction':_0x0788('0xd8'),'UserId':_0x57b44e[_0x0788('0xa2')]['id']};return db[_0x0788('0xd9')]['create'](_0x5be647,{});}else{throw new db['Sequelize'][(_0x0788('0xd7'))](_0x0788('0xda'));}})[_0x0788('0x23')](function(){return _0x563e4c[_0x0788('0xdb')]({'vidaooSessionId':_0x34a12a['id']});})[_0x0788('0x23')](respondWithResult(_0x191e15,null))[_0x0788('0x2b')](handleError(_0x191e15,null));};exports[_0x0788('0xdc')]=function(_0x252780,_0x3d3272){if(_0x252780['body']['id']){delete _0x252780[_0x0788('0x83')]['id'];}return db['ChatInteraction'][_0x0788('0x6f')]({'where':{'id':_0x252780[_0x0788('0xc6')]['id']},'include':[{'model':db[_0x0788('0xdd')],'as':_0x0788('0x75')}]})[_0x0788('0x23')](handleEntityNotFound(_0x3d3272,null))['then'](saveUpdates(_0x252780[_0x0788('0x83')],null))[_0x0788('0x23')](respondWithResult(_0x3d3272,null))['catch'](handleError(_0x3d3272,null));};exports[_0x0788('0xde')]=function(_0x881d27,_0x47ce3c,_0x1c9b6f){if(_0x881d27['body']['id']){delete _0x881d27[_0x0788('0x83')]['id'];}return db[_0x0788('0x47')]['find']({'where':{'id':_0x881d27[_0x0788('0xc6')]['id']}})[_0x0788('0x23')](function(_0x207b55){if(!_0x207b55){logger[_0x0788('0x27')](_0x0788('0xdf'),_0x0788('0xde'),0x194,_0x0788('0xe0'));_0x47ce3c[_0x0788('0x2c')](0x194);}else{if(_0x207b55['UserId']){throw new db[(_0x0788('0x9a'))][(_0x0788('0xd7'))](_0x0788('0xe1'));}}return _0x207b55;})['then'](function(_0x5ac0bc){if(_0x5ac0bc){return _0x5ac0bc[_0x0788('0xe2')]({'closed':_0x881d27[_0x0788('0x83')][_0x0788('0xe3')],'disposition':_0x881d27[_0x0788('0x83')][_0x0788('0xe4')]})[_0x0788('0x23')](function(_0x48e56d){return _0x48e56d;});}})[_0x0788('0x23')](function(_0x227eaf){return respondWithRpcPromise(_0x0788('0xe5'),_0x0788('0xde'),_0x881d27[_0x0788('0x83')],client9004);})[_0x0788('0x23')](respondWithResult(_0x47ce3c,null))[_0x0788('0x2b')](handleError(_0x47ce3c,null));};exports[_0x0788('0xe6')]=function(_0x1fc335,_0x27c428,_0x1ce4f2){_0x1fc335[_0x0788('0x83')][_0x0788('0x39')]=_0x1fc335[_0x0788('0xe7')][_0x0788('0xe8')];_0x1fc335[_0x0788('0x83')][_0x0788('0xe9')]=_0x1fc335[_0x0788('0xe7')][_0x0788('0xea')];_0x1fc335[_0x0788('0x83')][_0x0788('0x4a')]=_0x1fc335['file'][_0x0788('0xeb')];return db[_0x0788('0xec')][_0x0788('0xc9')](_0x1fc335[_0x0788('0x83')])['then'](respondWithResult(_0x27c428,0xc9))[_0x0788('0x2b')](handleError(_0x27c428,null));};exports[_0x0788('0xed')]=function(_0x5eb3f1,_0xb63553,_0x4a34e2){return db['ChatInteraction']['findOne']({'where':{'id':_0x5eb3f1['params']['id']},'raw':!![]})[_0x0788('0x23')](handleEntityNotFound(_0xb63553,null))[_0x0788('0x23')](function(_0x4cc536){if(_0x4cc536){if(_0x4cc536[_0x0788('0xe3')]){return _0xb63553[_0x0788('0x2d')](0x193)[_0x0788('0x2f')]({'status':0x193,'message':_0x0788('0xee')});}return db[_0x0788('0xec')][_0x0788('0xef')]({'where':{'id':_0x5eb3f1[_0x0788('0x4c')][_0x0788('0xf0')]},'raw':!![]})[_0x0788('0x23')](handleEntityNotFound(_0xb63553,null));}})['then'](function(_0x2047bc){if(_0x2047bc){var _0x38fd71=_0x2047bc['ChatOfflineMessageId']!==null;var _0x224ef9=path[_0x0788('0xf1')](config[_0x0788('0xf2')],_0x0788('0xf3'));if(_0x38fd71){_0x224ef9=path[_0x0788('0xf1')](_0x224ef9,_0x0788('0xf4'));}var _0x2399b9=path[_0x0788('0xf1')](_0x224ef9,_0x2047bc[_0x0788('0xe9')]);return _0xb63553[_0x0788('0xf5')](_0x2399b9);}})[_0x0788('0x2b')](handleError(_0xb63553,null));};exports[_0x0788('0xf6')]=function(_0x31c746,_0x4f696c){var _0x11de9c=null;var _0xf690e0=null;var _0x4a492c=null;var _0x523faa=null;if(_0x31c746[_0x0788('0x83')]['id']){delete _0x31c746[_0x0788('0x83')]['id'];}if(_0x31c746['body'][_0x0788('0xf7')]){_0x523faa=path[_0x0788('0xf1')](config[_0x0788('0xf2')],'server/files/chat/upload/',util['format'](_0x0788('0xf8'),Date[_0x0788('0xf9')]()));_0x31c746['body']['pathTranscript']=_0x523faa;}return db[_0x0788('0x47')][_0x0788('0x6f')]({'where':{'id':_0x31c746['params']['id']},'include':[{'model':db['ChatMessage'],'as':_0x0788('0xfa'),'include':[{'model':db[_0x0788('0x7f')],'as':'User'}]}]})[_0x0788('0x23')](handleEntityNotFound(_0x4f696c,null))[_0x0788('0x23')](saveUpdates(_0x31c746['body'],null))[_0x0788('0x23')](function(_0x21be45){if(_0x21be45){_0x11de9c=_0x21be45;return db[_0x0788('0xcd')][_0x0788('0x6f')]({'where':{'id':_0x11de9c[_0x0788('0xa1')]}});}})['then'](function(_0x36acad){if(_0x36acad){_0x4a492c=_0x36acad;return db[_0x0788('0xdd')][_0x0788('0x6f')]({'where':{'id':_0x11de9c[_0x0788('0x79')]}});}})[_0x0788('0x23')](function(_0x569b4d){if(_0x569b4d){_0xf690e0=_0x569b4d;if(_0x523faa){var _0x31ffc7=null;for(var _0x59aece=0x1;_0x59aece<_0x11de9c['Messages'][_0x0788('0x52')];++_0x59aece){_0x31ffc7=_0x11de9c[_0x0788('0xfa')][_0x59aece];var _0x3787d3=_0x31ffc7[_0x0788('0x81')]?util['format'](_0x0788('0xfb'),_0x4a492c[_0x0788('0xfc')],_0x31ffc7[_0x0788('0x81')]):'System';var _0x3ea229=_0x31c746[_0x0788('0x83')][_0x0788('0xfd')]||util[_0x0788('0xfe')](_0x0788('0xfb'),'Visitor',_0x31ffc7[_0x0788('0x79')]);switch(_0x4a492c['agentIdentifier']){case _0x0788('0xff'):_0x3787d3=_0x31ffc7[_0x0788('0x81')]?util[_0x0788('0xfe')](_0x0788('0xfb'),_0x4a492c[_0x0788('0xfc')],_0x31ffc7['UserId']):_0x0788('0x100');break;case'agent_alias':_0x3787d3=_0x31ffc7[_0x0788('0x81')]?_0x31ffc7['User'][_0x0788('0x101')]||_0x31ffc7[_0x0788('0x7f')]['fullname']:_0x0788('0x100');break;case _0x0788('0x102'):_0x3787d3=_0x31ffc7[_0x0788('0x81')]?_0x31ffc7[_0x0788('0x7f')][_0x0788('0x3f')]:_0x0788('0x100');break;default:_0x3787d3=_0x31ffc7[_0x0788('0x81')]?util[_0x0788('0xfe')](_0x0788('0xfb'),_0x4a492c[_0x0788('0xfc')],_0x31ffc7[_0x0788('0x81')]):'System';}var _0x303d5=util['format'](_0x0788('0x103'),moment(_0x31ffc7['createdAt'])[_0x0788('0xfe')](_0x0788('0x104')),_0x31ffc7['direction']==='in'?_0x3ea229:_0x3787d3,_0x31ffc7['body']);if(!_0x31ffc7['secret']){fs[_0x0788('0x105')](_0x523faa,_0x303d5);}}return db['MailAccount']['findOne']({'where':{'service':!![]},'include':[{'model':db[_0x0788('0x106')],'as':_0x0788('0x107'),'raw':!![]}]});}}})[_0x0788('0x23')](function(_0x5c5464){if(_0x5c5464&&_0x5c5464[_0x0788('0x107')]&&_0x31c746[_0x0788('0x83')]){var _0x14420b={'tls':{'rejectUnauthorized':![]}};if(_0x5c5464['Smtp']['service']){_0x14420b[_0x0788('0x108')]=_0x5c5464[_0x0788('0x107')][_0x0788('0x108')];}else{_0x14420b['host']=_0x5c5464[_0x0788('0x107')][_0x0788('0x109')];_0x14420b[_0x0788('0x10a')]=_0x5c5464['Smtp']['port'];_0x14420b[_0x0788('0x10b')]=_0x5c5464['Smtp'][_0x0788('0x10b')];}if(_0x5c5464[_0x0788('0x107')]['authentication']){_0x14420b['auth']={'user':_0x5c5464[_0x0788('0x107')][_0x0788('0xa2')],'pass':_0x5c5464['Smtp'][_0x0788('0x10c')]};}return respondWithRpcPromise(_0x0788('0x10d'),'sendMail',{'account':_0x14420b,'message':{'from':util[_0x0788('0xfe')](_0x0788('0x10e'),_0x5c5464[_0x0788('0x39')],_0x5c5464[_0x0788('0x10f')]||_0x5c5464['Smtp'][_0x0788('0xa2')]),'to':_0x31c746[_0x0788('0x83')][_0x0788('0xf7')],'subject':_0x0788('0x110'),'text':util[_0x0788('0xfe')](_0x0788('0x111'),_0x31c746[_0x0788('0x83')][_0x0788('0xf7')]),'attachments':[{'path':_0x523faa}]}})[_0x0788('0x23')](function(){return _0x11de9c;})['catch'](function(_0x1b5b80){console[_0x0788('0x27')](_0x1b5b80);});}else{return _0x11de9c;}})['then'](respondWithStatusCode(_0x4f696c,0xc8))[_0x0788('0x2b')](handleError(_0x4f696c,null));};exports[_0x0788('0x112')]=function(_0x5522e3,_0x5f1a46,_0x248f60){return db[_0x0788('0xd9')][_0x0788('0x6f')]({'where':{'id':_0x5522e3['params']['id']}})[_0x0788('0x23')](handleEntityNotFound(_0x5f1a46,null))[_0x0788('0x23')](function(_0x36d7f9){if(_0x36d7f9){return _0x36d7f9['addMessage'](_0x5522e3[_0x0788('0x83')][_0x0788('0x113')],_['omit'](_0x5522e3['body'],['ids','id'])||{});}})[_0x0788('0x23')](respondWithResult(_0x5f1a46,null))[_0x0788('0x2b')](handleError(_0x5f1a46,null));};exports[_0x0788('0x114')]=function(_0x20f429,_0x364f26,_0x351665){var _0x1ba9fb={'raw':![],'where':{}};var _0x56b11c={};var _0x4f36bd={'count':0x0,'rows':[]};return db[_0x0788('0x47')][_0x0788('0xef')]({'where':{'id':_0x20f429[_0x0788('0xc6')]['id']}})['then'](handleEntityNotFound(_0x364f26,null))[_0x0788('0x23')](function(_0x1c7980){if(_0x1c7980){_0x56b11c[_0x0788('0x4f')]=_[_0x0788('0x4b')](db['ChatMessage']['rawAttributes']);_0x56b11c[_0x0788('0x4c')]=_[_0x0788('0x4b')](_0x20f429[_0x0788('0x4c')]);_0x56b11c[_0x0788('0x4d')]=_[_0x0788('0x4e')](_0x56b11c[_0x0788('0x4f')],_0x56b11c[_0x0788('0x4c')]);_0x1ba9fb[_0x0788('0x50')]=_[_0x0788('0x4e')](_0x56b11c['model'],qs[_0x0788('0x51')](_0x20f429[_0x0788('0x4c')][_0x0788('0x51')]));_0x1ba9fb[_0x0788('0x50')]=_0x1ba9fb[_0x0788('0x50')][_0x0788('0x52')]?_0x1ba9fb[_0x0788('0x50')]:_0x56b11c['model'];if(!_0x20f429[_0x0788('0x4c')][_0x0788('0x53')](_0x0788('0x115'))){_0x1ba9fb['limit']=qs[_0x0788('0x30')](_0x20f429[_0x0788('0x4c')][_0x0788('0x30')]);_0x1ba9fb[_0x0788('0x33')]=qs[_0x0788('0x33')](_0x20f429['query']['offset']);}_0x1ba9fb['order']=qs[_0x0788('0x55')](_0x20f429[_0x0788('0x4c')][_0x0788('0x55')]);_0x1ba9fb[_0x0788('0x56')]=qs[_0x0788('0x4d')](_[_0x0788('0x116')](_0x20f429[_0x0788('0x4c')],_0x56b11c['filters']));_0x1ba9fb[_0x0788('0x56')][_0x0788('0xc2')]=_0x1c7980['id'];if(_0x20f429[_0x0788('0x4c')][_0x0788('0x93')]){_0x1ba9fb['where']=_[_0x0788('0x3b')](_0x1ba9fb[_0x0788('0x56')],{'$or':_[_0x0788('0x46')](_0x1ba9fb[_0x0788('0x50')],function(_0xccb2e6){var _0x4cc769={};_0x4cc769[_0xccb2e6]={'$like':'%'+_0x20f429[_0x0788('0x4c')][_0x0788('0x93')]+'%'};return _0x4cc769;})});}if(_0x20f429[_0x0788('0x4c')][_0x0788('0x89')]){var _0x4785ac=_0x20f429[_0x0788('0x4c')][_0x0788('0x89')][_0x0788('0x42')](',');var _0x4455dc={};_0x4455dc[_0x4785ac[0x0]]={'$gte':moment(_0x4785ac[0x1])['format'](_0x0788('0x117'))};_0x1ba9fb['where']=_[_0x0788('0x3b')](_0x1ba9fb[_0x0788('0x56')],_0x4455dc);}_0x1ba9fb=_[_0x0788('0x3b')]({},_0x1ba9fb,_0x20f429[_0x0788('0xc8')]);return db[_0x0788('0xd9')][_0x0788('0x32')]({'where':_0x1ba9fb[_0x0788('0x56')]})['then'](function(_0x3eb474){_0x4f36bd[_0x0788('0x32')]=_0x3eb474;if(_0x20f429['query'][_0x0788('0x118')]){_0x1ba9fb[_0x0788('0xc7')]=[{'all':!![]}];}return db[_0x0788('0xd9')]['findAll'](_0x1ba9fb);})['then'](function(_0x1aa86f){_0x4f36bd[_0x0788('0xc4')]=_0x1aa86f;return _0x4f36bd;});}})['then'](respondWithFilteredResult(_0x364f26,_0x1ba9fb))['catch'](handleError(_0x364f26,null));};exports[_0x0788('0x119')]=function(_0x4d6a60,_0x114658,_0x4b11b9){var _0x9af662={'where':{}},_0x257e1c={},_0x35a6bc={'count':0x0,'rows':[]};return db[_0x0788('0x47')]['findOne']({'where':{'id':_0x4d6a60['params']['id']}})[_0x0788('0x23')](handleEntityNotFound(_0x114658,null))[_0x0788('0x23')](function(_0x278a6f){if(_0x278a6f){_0x257e1c[_0x0788('0x4f')]=_['keys'](db[_0x0788('0xd9')][_0x0788('0x48')]);_0x257e1c[_0x0788('0x4c')]=_[_0x0788('0x4b')](_0x4d6a60['query']);_0x257e1c[_0x0788('0x4d')]=_[_0x0788('0x4e')](_0x257e1c['model'],_0x257e1c[_0x0788('0x4c')]);_0x9af662[_0x0788('0x50')]=_[_0x0788('0x4e')](_0x257e1c[_0x0788('0x4f')],qs[_0x0788('0x51')](_0x4d6a60[_0x0788('0x4c')]['fields']));_0x9af662[_0x0788('0x50')]=_0x9af662[_0x0788('0x50')][_0x0788('0x52')]?_0x9af662[_0x0788('0x50')]:_0x257e1c['model'];if(!_0x4d6a60[_0x0788('0x4c')]['hasOwnProperty'](_0x0788('0x115'))){_0x9af662['limit']=qs['limit'](_0x4d6a60[_0x0788('0x4c')][_0x0788('0x30')]);_0x9af662[_0x0788('0x33')]=qs[_0x0788('0x33')](_0x4d6a60[_0x0788('0x4c')][_0x0788('0x33')]);}_0x9af662[_0x0788('0x54')]=qs[_0x0788('0x55')](_0x4d6a60[_0x0788('0x4c')][_0x0788('0x55')]);_0x9af662['where']=qs['filters'](_['pick'](_0x4d6a60[_0x0788('0x4c')],_0x257e1c[_0x0788('0x4d')]));_0x9af662[_0x0788('0x56')][_0x0788('0xc2')]=_0x278a6f['id'];if(_0x4d6a60[_0x0788('0x4c')][_0x0788('0x93')]){_0x9af662[_0x0788('0x56')]=_[_0x0788('0x3b')](_0x9af662['where'],{'$or':_[_0x0788('0x46')](_0x9af662[_0x0788('0x50')],function(_0x4a4297){var _0x1fb846={};_0x1fb846[_0x4a4297]={'$like':'%'+_0x4d6a60[_0x0788('0x4c')][_0x0788('0x93')]+'%'};return _0x1fb846;})});}_0x9af662['where'][_0x0788('0x11a')]=![];if(_0x4d6a60[_0x0788('0x4c')]['id']){_0x9af662[_0x0788('0x56')]['id']={'$gt':_0x4d6a60[_0x0788('0x4c')]['id']};}_0x9af662=_[_0x0788('0x3b')]({},_0x9af662,_0x4d6a60[_0x0788('0xc8')]);return db[_0x0788('0xd9')][_0x0788('0x32')]({'where':_0x9af662[_0x0788('0x56')]})[_0x0788('0x23')](function(_0x292d07){_0x35a6bc[_0x0788('0x32')]=_0x292d07;_0x9af662[_0x0788('0xc7')]=[];if(_0x4d6a60[_0x0788('0x4c')][_0x0788('0x11b')]){_0x9af662['include'][_0x0788('0x44')]({'model':db[_0x0788('0x7f')],'as':_0x0788('0x7f'),'attributes':['id','fullname',_0x0788('0x101')]});}if(_0x4d6a60[_0x0788('0x4c')][_0x0788('0x118')]){_0x9af662['include']=[{'all':!![]}];}return db[_0x0788('0xd9')][_0x0788('0x11c')](_0x9af662);})['then'](function(_0xa44dc3){_0x35a6bc[_0x0788('0xc4')]=_0xa44dc3;return _0x35a6bc;});}})[_0x0788('0x23')](respondWithFilteredResult(_0x114658,_0x9af662))['catch'](handleError(_0x114658,null));};exports[_0x0788('0x11d')]=function(_0x5b0417,_0x4d5e94,_0x1fb141){return db[_0x0788('0x47')][_0x0788('0x6f')]({'where':{'id':_0x5b0417[_0x0788('0xc6')]['id']}})['then'](handleEntityNotFound(_0x4d5e94,null))[_0x0788('0x23')](function(_0x5bf415){if(_0x5bf415){return _0x5bf415['setTags'](_0x5b0417['body'][_0x0788('0x113')],_['omit'](_0x5b0417['body'],['ids','id'])||{})[_0x0788('0x11e')](function(){return db[_0x0788('0x7c')][_0x0788('0x11c')]({'attributes':['id',_0x0788('0x39'),_0x0788('0x59')],'where':{'id':_0x5b0417[_0x0788('0x83')][_0x0788('0x113')]}});})[_0x0788('0x23')](function(_0x109d90){socket[_0x0788('0x11f')](_0x0788('0x120'),{'id':Number(_0x5b0417[_0x0788('0xc6')]['id']),'tags':_0x109d90||[]});return{'id':Number(_0x5b0417[_0x0788('0xc6')]['id']),'tags':_0x109d90||[]};});}})['then'](respondWithResult(_0x4d5e94,null))[_0x0788('0x2b')](handleError(_0x4d5e94,null));};exports['removeTags']=function(_0x26343c,_0x30334c,_0x1d18bc){return db[_0x0788('0x47')][_0x0788('0x6f')]({'where':{'id':_0x26343c[_0x0788('0xc6')]['id']}})['then'](handleEntityNotFound(_0x30334c,null))[_0x0788('0x23')](function(_0x10266b){if(_0x10266b){return _0x10266b[_0x0788('0x121')](_0x26343c[_0x0788('0x4c')][_0x0788('0x113')]);}})[_0x0788('0x23')](respondWithStatusCode(_0x30334c,null))['catch'](handleError(_0x30334c,null));};exports['download']=function(_0x1fb76f,_0x17ca71){var _0xbae24f=moment()[_0x0788('0x122')]()[_0x0788('0xa9')]();var _0x525754=path['join'](config['root'],_0x0788('0x123'),_0x0788('0x124'),_0x0788('0x125'));var _0x2d51ef=path[_0x0788('0xf1')](config[_0x0788('0xf2')],_0x0788('0x123'),_0x0788('0x124'),_0x0788('0x126'));var _0x5ecd59=path['join'](_0x525754,_0xbae24f);var _0xf63471=util[_0x0788('0xfe')](_0x0788('0x127'),_0x1fb76f[_0x0788('0xc6')]['id'],_0xbae24f);var _0x390cdf=path[_0x0788('0xf1')](_0x525754,_0xf63471);var _0x40a75d=[];_0x40a75d[_0x0788('0x44')]({'model':db[_0x0788('0x7f')],'as':_0x0788('0x7f'),'attributes':['id',_0x0788('0x3f')],'raw':!![]});_0x40a75d[_0x0788('0x44')]({'model':db[_0x0788('0xdd')],'as':'Contact','attributes':['id',_0x0788('0x128'),_0x0788('0x129')],'raw':!![]});if(_0x1fb76f[_0x0788('0x4c')][_0x0788('0x126')]){_0x40a75d[_0x0788('0x44')]({'model':db[_0x0788('0xec')],'as':_0x0788('0xec'),'raw':!![]});}var _0x4cf323=[{'model':db[_0x0788('0xd9')],'as':_0x0788('0xfa'),'attributes':['id','body',_0x0788('0x87'),'direction',_0x0788('0x11a'),_0x0788('0x8f')],'include':_0x40a75d}];_0x4cf323['push']({'model':db[_0x0788('0xcd')],'as':'Account','attributes':['id',_0x0788('0x39')]});_0x4cf323[_0x0788('0x44')]({'model':db[_0x0788('0x7f')],'as':_0x0788('0x12a'),'attributes':['id',_0x0788('0x3f')]});return db['ChatInteraction'][_0x0788('0x6f')]({'where':{'id':_0x1fb76f['params']['id']},'include':_0x4cf323})['then'](handleEntityNotFound(_0x17ca71,null))[_0x0788('0x23')](function(_0x1fa39f){if(_0x1fa39f){var _0x19b030=_0x1fa39f[_0x0788('0x12b')]({'plain':!![]});fs[_0x0788('0x12c')](_0x5ecd59);var _0x35fc5b={'channel':'Chat','account':_0x19b030[_0x0788('0x12d')]['name'],'agent':_0x19b030[_0x0788('0x12a')]?_0x19b030[_0x0788('0x12a')][_0x0788('0x3f')]:'N.A.','createdAt':moment(_0x19b030['createdAt'])[_0x0788('0xfe')](_0x0788('0x117'))['toString'](),'closedAt':_0x19b030[_0x0788('0xe3')]?moment(_0x19b030[_0x0788('0x12e')])[_0x0788('0xfe')](_0x0788('0x117'))[_0x0788('0xa9')]():'','disposition':_0x19b030[_0x0788('0xe4')],'chatInfo':{'browser':_0x19b030[_0x0788('0x12f')],'os':_0x19b030['osName'],'referer':_0x19b030['referer'],'customerIp':_0x19b030['customerIp'],'customerPort':_0x19b030[_0x0788('0x130')]?_0x19b030['customerPort']:_0x0788('0x131')},'messages':_(_0x19b030[_0x0788('0xfa')])[_0x0788('0x132')]()[_0x0788('0x93')]({'secret':![]})[_0x0788('0x46')](function(_0x3ff416){if(_0x3ff416[_0x0788('0xec')]){var _0x7d6cf9=path[_0x0788('0xf1')](_0x2d51ef,_0x3ff416[_0x0788('0xec')][_0x0788('0xe9')]);if(fs['existsSync'](_0x7d6cf9)){fs[_0x0788('0x133')](_0x7d6cf9)['pipe'](fs[_0x0788('0x134')](path[_0x0788('0xf1')](_0x5ecd59,_0x3ff416[_0x0788('0xec')][_0x0788('0xe9')])));}}return{'date':moment(_0x3ff416[_0x0788('0x87')])[_0x0788('0xfe')](_0x0788('0x117'))[_0x0788('0xa9')](),'sender':_0x3ff416[_0x0788('0x135')]===_0x0788('0xd8')?_0x3ff416['User']?_0x3ff416[_0x0788('0x7f')][_0x0788('0x3f')]:_0x0788('0x100'):_0x3ff416[_0x0788('0x75')]['firstName']+(_0x3ff416[_0x0788('0x75')][_0x0788('0x129')]?'\x20'+_0x3ff416['Contact'][_0x0788('0x129')]:''),'body':_0x3ff416['Attachment']?_0x3ff416[_0x0788('0xec')]['basename']:_0x3ff416[_0x0788('0x83')],'direction':_0x3ff416[_0x0788('0x135')]===_0x0788('0xd8')?'A':'C','secret':_0x3ff416['secret'],'read':_0x3ff416[_0x0788('0x8f')],'attachment':_0x3ff416['Attachment']};})[_0x0788('0x71')]()};return ejs[_0x0788('0x136')](path[_0x0788('0xf1')](config[_0x0788('0xf2')],'server','views',_0x0788('0x137')),{'interaction':_0x35fc5b})['then'](function(_0x45962d){var _0x4cc133=path[_0x0788('0xf1')](_0x5ecd59,_0x0788('0x138')+_0x19b030['id']+'-'+_0xbae24f+_0x0788('0x139'));var _0x52452f={'path':_0x4cc133,'channel':_0x0788('0x13a'),'interactionId':_0x19b030['id']};return pdf[_0x0788('0x13b')](_0x45962d,_0x52452f);})[_0x0788('0x23')](function(){return new BPromise(function(_0xe2d72d,_0x5401a8){zipdir(_0x5ecd59,{'saveTo':_0x390cdf},function(_0x5b289e,_0x4191b4){if(_0x5b289e)return _0x5401a8(_0x5b289e);return _0xe2d72d(_0x4191b4);});})[_0x0788('0x23')](function(){return new BPromise(function(_0x5440c6,_0x2dbb74){rimraf(_0x5ecd59,function(_0x8a89c0){if(_0x8a89c0)_0x2dbb74(_0x8a89c0);return _0x5440c6();});});})['then'](function(){return _0x17ca71['download'](_0x390cdf,_0xf63471,function(_0x2487db){if(_0x2487db){console['log'](_0x0788('0x13c'),_0x2487db);}else{fs[_0x0788('0x13d')](_0x390cdf);}});});});}else{return _0x17ca71[_0x0788('0x2c')](0xc8);}})['catch'](handleError(_0x17ca71,null));};
\ No newline at end of file
+var _0x3423=['Unauthorized','attachId','ChatOfflineMessageId','server/files/attachments/','offline-chat/','join','download','root','server/files/chat/upload/','format','now','pathTranscript','Messages','%s%d','System','customer','Visitor','agentIdentifier','website_alias','agentAlias','agent_alias','agent_fullname','[%s]\x20%s:\x20%s\x0a','direction','appendFileSync','MailServerOut','Smtp','service','host','secure','authentication','auth','pass','SendMail','\x22%s\x22\x20<%s>','mailTranscript','Hi\x20%s,\x20attached\x20you\x20can\x20find\x20your\x20transcript\x20file.\x20\x0a\x0aRegards.\x20\x0a\x0a','addMessage','ChatMessage','ids','omit','getMessages','YYYY-MM-DD\x20HH:mm:ss','options','findAll','getMyMessages','alias','addTags','setTags','spread','emit','chatInteractionTags:save','removeTags','server','attachments','transcript-%d-%s.zip','firstName','secret','read','Account','Owner','get','mkdirSync','Chat','closedAt','osName','customerIp','customerPort','existsSync','pipe','out','lastName','renderFile','downloadInteraction.ejs','transcript-','.pdf','createPdfFromHTML','log','err','unlinkSync','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','../../components/auth/service','../../config/logger','api','../../config/environment','../../mysqldb','redis','localhost','socket.io-emitter','./chatInteraction.socket','register','jayson/promise','http','client','request','then','info','ChatInteraction,\x20%s,\x20%s','request\x20sent','ChatInteraction,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','json','offset','undefined','limit','count','status','set','Content-Range','apply','reject','save','update','destroy','end','sendStatus','stack','name','send','render','merge','body','interaction','account','Users','fullname','TagIds','forEach','push','catch','index','map','ChatInteraction','type','key','model','query','keys','filters','intersection','attributes','length','hasOwnProperty','nolimit','order','sort','pick','field','color','tools_tags','select','u.id','u.fullname','ui.ChatInteractionId','user_has_chat_interactions','users','chat_interactions','left_join','cm_contacts','c.id\x20=\x20i.ContactId\x20AND\x20c.deletedAt\x20IS\x20NULL','o.id\x20=\x20i.UserId','chat_websites','a.id\x20=\x20i.ChatWebsiteId','it.ChatInteractionId\x20=\x20i.id','t.id\x20=\x20it.TagId','expr','search','parseSearch','sqlOperator','conditions','find','unreadMessages','value','having','`\x20=\x200','`\x20>\x200','Contact','operator','$substring','split','MATCH\x20(c.firstName,\x20c.lastName,\x20c.phone,\x20c.mobile,\x20c.fax,\x20c.email)\x20AGAINST\x20(?\x20IN\x20BOOLEAN\x20MODE)','getFullTextValue','c.firstName\x20LIKE\x20?\x20OR\x20c.lastName\x20LIKE\x20?\x20OR\x20c.email\x20LIKE\x20?','ContactId','buildExpression','start','Tag','union','User','CONCAT_WS(\x27\x20\x27,\x20o.name,\x20o.fullname)\x20LIKE\x20?','UserId','text','some','ChatWebsiteId','where','i.ChatWebsiteId\x20IN\x20?','concat','createdAt','parse','$gte','$lte','i.createdAt\x20BETWEEN\x20?\x20AND\x20?','null','\x20IS\x20NULL','tag','CONCAT(\x27,\x27,\x20`TagIds`,\x20\x27,\x27)\x20LIKE\x20?','filter','replace','isNumeric','i.id\x20LIKE\x20?','MATCH\x20(me.body)\x20AGAINST\x20(?\x20IN\x20BOOLEAN\x20MODE)','group','i.id','QueryTypes','clone','DESC','t.id\x20IN\x20?','resolve','user','role','agent','getChatWebsites','i.ChatWebsiteId\x20IS\x20NULL','sequelize','toString','fields','SUM(me.read\x20=\x200\x20AND\x20me.direction\x20=\x20\x27in\x27)','a.key','Account.key','a.mandatoryDisposition','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','contactName','i.*','c.firstName','Contact.firstName','c.lastName','c.email','Contact.email','c.phone','Contact.phone','Contact.fax','o.fullname','Owner.fullname','Owner.internal','GROUP_CONCAT(DISTINCT\x20t.id)','ChatInteractionId','all','rows','show','params','rawAttributes','includeAll','include','create','describe','createVidaooSession','findOne','ChatWebsite','vidaooApiKey','vidaooEscalation','vidaooNote','vidaooMetadata','email','contact','POST','https://api-vidaoo.xcally.com/api/v1/meetings','vidaooTopic','isNull','follow','ValidationError','Error\x20in\x20conversion\x20vidaooMetadata','Sequelize','Error\x20in\x20Vidaoo\x20configuration','join_url','Unable\x20to\x20create\x20Vidaoo\x20session','updateAttributes','customUpdate','CmContact','abandon','abandonInteraction,\x20%s,\x20%s,\x20%s','entity\x20not\x20found','closed','disposition','AbandonInteraction','attachmentUpload','file','originalname','basename','filename','Attachment','attachmentDownload'];(function(_0x75fd02,_0x5b0f03){var _0x34066d=function(_0x2caead){while(--_0x2caead){_0x75fd02['push'](_0x75fd02['shift']());}};_0x34066d(++_0x5b0f03);}(_0x3423,0x188));var _0x3342=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x3423[_0x3dd15e];return _0x231fd0;};'use strict';var emlformat=require('eml-format');var rimraf=require('rimraf');var zipdir=require(_0x3342('0x0'));var jsonpatch=require(_0x3342('0x1'));var rp=require(_0x3342('0x2'));var moment=require(_0x3342('0x3'));var BPromise=require(_0x3342('0x4'));var Mustache=require(_0x3342('0x5'));var util=require(_0x3342('0x6'));var path=require(_0x3342('0x7'));var sox=require(_0x3342('0x8'));var csv=require(_0x3342('0x9'));var ejs=require(_0x3342('0xa'));var fs=require('fs');var fs_extra=require(_0x3342('0xb'));var _=require(_0x3342('0xc'));var squel=require(_0x3342('0xd'));var crypto=require(_0x3342('0xe'));var jsforce=require(_0x3342('0xf'));var deskjs=require(_0x3342('0x10'));var toCsv=require(_0x3342('0x9'));var querystring=require(_0x3342('0x11'));var Papa=require('papaparse');var Redis=require('ioredis');var authService=require(_0x3342('0x12'));var qs=require('../../components/parsers/qs');var as=require('../../components/parsers/advancedSearch');var pdf=require('../../components/export/pdf');var hardwareService=require('../../config/license/hardware');var logger=require(_0x3342('0x13'))(_0x3342('0x14'));var utils=require('../../config/utils');var config=require(_0x3342('0x15'));var licenseUtil=require('../../config/license/util');var db=require(_0x3342('0x16'))['db'];config[_0x3342('0x17')]=_['defaults'](config[_0x3342('0x17')],{'host':_0x3342('0x18'),'port':0x18eb});var socket=require(_0x3342('0x19'))(new Redis(config[_0x3342('0x17')]));require(_0x3342('0x1a'))[_0x3342('0x1b')](socket);var jayson=require(_0x3342('0x1c'));var client=jayson['client'][_0x3342('0x1d')]({'port':0x232b});var client9004=jayson[_0x3342('0x1e')]['http']({'port':0x232c});function respondWithRpcPromise(_0x40d609,_0x2c9df0,_0x51ef91,_0x554f9c){return new BPromise(function(_0xdbbb6c,_0x143cf1){var _0x6949fc=_0x554f9c||client;return _0x6949fc[_0x3342('0x1f')](_0x40d609,_0x51ef91)[_0x3342('0x20')](function(_0x156c24){logger[_0x3342('0x21')](_0x3342('0x22'),_0x2c9df0,_0x3342('0x23'));logger['debug'](_0x3342('0x24'),_0x2c9df0,_0x3342('0x23'),JSON[_0x3342('0x25')](_0x156c24));if(_0x156c24['error']){if(_0x156c24[_0x3342('0x26')][_0x3342('0x27')]===0x1f4){logger['error'](_0x3342('0x22'),_0x2c9df0,_0x156c24[_0x3342('0x26')]['message']);return _0x143cf1(_0x156c24[_0x3342('0x26')]['message']);}logger[_0x3342('0x26')](_0x3342('0x22'),_0x2c9df0,_0x156c24[_0x3342('0x26')][_0x3342('0x28')]);return _0xdbbb6c(_0x156c24[_0x3342('0x26')][_0x3342('0x28')]);}else{logger[_0x3342('0x21')](_0x3342('0x22'),_0x2c9df0,'request\x20sent');_0xdbbb6c(_0x156c24[_0x3342('0x29')]['message']);}})['catch'](function(_0x986ab0){logger['error']('ChatInteraction,\x20%s,\x20%s',_0x2c9df0,_0x986ab0);_0x143cf1(_0x986ab0);});});}function respondWithStatusCode(_0x247ee4,_0x58f0f5){_0x58f0f5=_0x58f0f5||0xcc;return function(_0x37df78){if(_0x37df78){return _0x247ee4['sendStatus'](_0x58f0f5);}return _0x247ee4['status'](_0x58f0f5)['end']();};}function respondWithResult(_0x1497d9,_0x286c42){_0x286c42=_0x286c42||0xc8;return function(_0x1dd607){if(_0x1dd607){return _0x1497d9['status'](_0x286c42)[_0x3342('0x2a')](_0x1dd607);}};}function respondWithFilteredResult(_0x1275e2,_0x1cc542){return function(_0x272a52){if(_0x272a52){var _0x4fbfb7=typeof _0x1cc542[_0x3342('0x2b')]===_0x3342('0x2c')&&typeof _0x1cc542[_0x3342('0x2d')]===_0x3342('0x2c');var _0xf82530=_0x272a52[_0x3342('0x2e')];var _0x135760=_0x4fbfb7?0x0:_0x1cc542['offset'];var _0x2e0bde=_0x4fbfb7?_0x272a52['count']:_0x1cc542[_0x3342('0x2b')]+_0x1cc542[_0x3342('0x2d')];var _0x508f87;if(_0x2e0bde>=_0xf82530){_0x2e0bde=_0xf82530;_0x508f87=0xc8;}else{_0x508f87=0xce;}_0x1275e2[_0x3342('0x2f')](_0x508f87);return _0x1275e2[_0x3342('0x30')](_0x3342('0x31'),_0x135760+'-'+_0x2e0bde+'/'+_0xf82530)[_0x3342('0x2a')](_0x272a52);}return null;};}function patchUpdates(_0x498ded){return function(_0x3301c1){try{jsonpatch[_0x3342('0x32')](_0x3301c1,_0x498ded,!![]);}catch(_0x311cfe){return BPromise[_0x3342('0x33')](_0x311cfe);}return _0x3301c1[_0x3342('0x34')]();};}function saveUpdates(_0x26528f,_0x16fbb0){return function(_0x78c868){if(_0x78c868){return _0x78c868[_0x3342('0x35')](_0x26528f)[_0x3342('0x20')](function(_0x46cdbd){return _0x46cdbd;});}return null;};}function removeEntity(_0x30dcea,_0x5aea96){return function(_0x478c8d){if(_0x478c8d){return _0x478c8d[_0x3342('0x36')]()['then'](function(){_0x30dcea[_0x3342('0x2f')](0xcc)[_0x3342('0x37')]();});}};}function handleEntityNotFound(_0x1a74d3,_0x361d23){return function(_0x2dbc02){if(!_0x2dbc02){_0x1a74d3[_0x3342('0x38')](0x194);}return _0x2dbc02;};}function handleError(_0x956cde,_0x5d460c){_0x5d460c=_0x5d460c||0x1f4;return function(_0x4754d9){logger[_0x3342('0x26')](_0x4754d9[_0x3342('0x39')]);if(_0x4754d9[_0x3342('0x3a')]){delete _0x4754d9[_0x3342('0x3a')];}_0x956cde['status'](_0x5d460c)[_0x3342('0x3b')](_0x4754d9);};}function getMustacheRender(_0x4d1a59,_0x22ca76){return Mustache[_0x3342('0x3c')](_0x4d1a59,_[_0x3342('0x3d')](_0x22ca76[_0x3342('0x3e')],{'contact':_0x22ca76['contact'],'message':_0x22ca76[_0x3342('0x28')],'agent':_0x22ca76['agent'],'interaction':_0x22ca76[_0x3342('0x3f')],'account':_0x22ca76[_0x3342('0x40')]}))||'';}function getInteractionUsers(_0x2e815e,_0x1b58c5){return new BPromise(function(_0x40a5bd,_0xf83613){try{if(_0x1b58c5[_0x2e815e['id']]){_0x2e815e[_0x3342('0x41')]=_['map'](_0x1b58c5[_0x2e815e['id']],function(_0x3e626b){return{'id':_0x3e626b['id'],'fullname':_0x3e626b[_0x3342('0x42')]};});}}catch(_0x57cc44){_0xf83613(_0x57cc44);}_0x40a5bd(_0x2e815e);});}function getInteractionTags(_0x324205,_0x1f336c){return new BPromise(function(_0x494d28,_0x45b956){try{if(_0x324205[_0x3342('0x43')]){_0x324205['Tags']=[];_0x324205['TagIds']['split'](',')[_0x3342('0x44')](function(_0x41e727){_0x324205['Tags'][_0x3342('0x45')](_0x1f336c[_0x41e727]);});}delete _0x324205[_0x3342('0x43')];}catch(_0x2944ab){_0x45b956(_0x2944ab);}_0x494d28(_0x324205);});}function updateChatInteraction(_0x17fd01,_0x126ee4,_0x308363){return new BPromise(function(_0x34de7b,_0x4282ea){return getInteractionUsers(_0x17fd01,_0x308363)['then'](function(_0x5a787b){return getInteractionTags(_0x5a787b,_0x126ee4);})[_0x3342('0x20')](function(_0x7341fa){_0x34de7b(_0x7341fa);})[_0x3342('0x46')](function(_0xee717e){_0x4282ea(_0xee717e);});});}exports[_0x3342('0x47')]=function(_0x414fcb,_0x5e24a1){var _0x15eb49={},_0x196436={},_0x283ce9={'count':0x0,'rows':[]};var _0x309423=_[_0x3342('0x48')](db[_0x3342('0x49')]['rawAttributes'],function(_0x36baa4){return{'name':_0x36baa4['fieldName'],'type':_0x36baa4[_0x3342('0x4a')][_0x3342('0x4b')]};});_0x196436[_0x3342('0x4c')]=_[_0x3342('0x48')](_0x309423,'name');_0x196436[_0x3342('0x4d')]=_[_0x3342('0x4e')](_0x414fcb['query']);_0x196436[_0x3342('0x4f')]=_[_0x3342('0x50')](_0x196436[_0x3342('0x4c')],_0x196436[_0x3342('0x4d')]);_0x15eb49['attributes']=_[_0x3342('0x50')](_0x196436[_0x3342('0x4c')],qs['fields'](_0x414fcb[_0x3342('0x4d')]['fields']));_0x15eb49['attributes']=_0x15eb49[_0x3342('0x51')][_0x3342('0x52')]?_0x15eb49[_0x3342('0x51')]:_0x196436[_0x3342('0x4c')];if(!_0x414fcb[_0x3342('0x4d')][_0x3342('0x53')](_0x3342('0x54'))){_0x15eb49['limit']=qs['limit'](_0x414fcb[_0x3342('0x4d')]['limit']);_0x15eb49[_0x3342('0x2b')]=qs['offset'](_0x414fcb['query']['offset']);}_0x15eb49[_0x3342('0x55')]=qs[_0x3342('0x56')](_0x414fcb[_0x3342('0x4d')][_0x3342('0x56')]);_0x15eb49['where']=qs[_0x3342('0x4f')](_[_0x3342('0x57')](_0x414fcb['query'],_0x196436[_0x3342('0x4f')]),_0x309423);var _0x24d543=[];var _0x43c27a=squel['select']()[_0x3342('0x58')]('id')[_0x3342('0x58')](_0x3342('0x3a'))[_0x3342('0x58')](_0x3342('0x59'))['from'](_0x3342('0x5a'));var _0x1d5001=squel[_0x3342('0x5b')]()[_0x3342('0x58')](_0x3342('0x5c'))[_0x3342('0x58')](_0x3342('0x5d'))[_0x3342('0x58')](_0x3342('0x5e'))['from'](_0x3342('0x5f'),'ui')['left_join'](_0x3342('0x60'),'u','u.id\x20=\x20ui.UserId');var _0x49e3c6=squel['select']()['from'](_0x3342('0x61'),'i')[_0x3342('0x62')](_0x3342('0x63'),'c',_0x3342('0x64'))[_0x3342('0x62')](_0x3342('0x60'),'o',_0x3342('0x65'))[_0x3342('0x62')](_0x3342('0x66'),'a',_0x3342('0x67'))[_0x3342('0x62')]('chat_messages','me','me.ChatInteractionId\x20=\x20i.id')[_0x3342('0x62')]('chat_interaction_has_tags','it',_0x3342('0x68'))['left_join']('tools_tags','t',_0x3342('0x69'));var _0x43d39f=squel[_0x3342('0x6a')]();var _0x5d5e0f=[];var _0x58d37a=squel[_0x3342('0x6a')]();var _0x3cc92a;if(_0x414fcb['query'][_0x3342('0x6b')]){_0x3cc92a=as[_0x3342('0x6c')](_0x414fcb[_0x3342('0x4d')]['search']);var _0x23c186=_0x3cc92a[_0x3342('0x6d')];for(var _0x3dd926=0x0;_0x3dd926<_0x3cc92a[_0x3342('0x6e')][_0x3342('0x52')];_0x3dd926++){var _0x19e27b=_0x3cc92a[_0x3342('0x6e')][_0x3dd926];var _0x57942a='i';var _0x4bc9a9=_[_0x3342('0x6f')](_0x309423,['name',_0x19e27b[_0x3342('0x58')]]);if(!_0x4bc9a9){switch(_0x19e27b[_0x3342('0x58')]){case _0x3342('0x70'):if(_0x19e27b[_0x3342('0x71')]==0x1){_0x49e3c6[_0x3342('0x72')]('`'+_0x19e27b['field']+_0x3342('0x73'));}else{_0x49e3c6[_0x3342('0x72')]('`'+_0x19e27b['field']+_0x3342('0x74'));}break;case _0x3342('0x75'):if(_0x19e27b[_0x3342('0x76')]===_0x3342('0x77')){if(_0x19e27b[_0x3342('0x71')][_0x3342('0x78')]('\x20')[_0x3342('0x52')]>0x1){_0x43d39f[_0x23c186](_0x3342('0x79'),qs[_0x3342('0x7a')](_0x19e27b[_0x3342('0x71')]),null);}else{var _0x42fcd7='%'+_0x19e27b[_0x3342('0x71')]+'%';_0x43d39f[_0x23c186](_0x3342('0x7b'),_0x42fcd7,_0x42fcd7,_0x42fcd7);}}else{_0x4bc9a9=_['find'](_0x309423,['name',_0x3342('0x7c')]);_0x19e27b[_0x3342('0x58')]=_0x3342('0x7c');_0x570781=as[_0x3342('0x7d')](_0x57942a,_0x4bc9a9['type'],_0x19e27b);_0x43d39f[_0x23c186](_0x570781['text'],_0x570781[_0x3342('0x71')][_0x3342('0x7e')],_0x570781[_0x3342('0x71')][_0x3342('0x37')]);}break;case _0x3342('0x7f'):var _0x3902b6=_0x19e27b[_0x3342('0x71')][_0x3342('0x78')](',')[_0x3342('0x48')](function(_0x385d9c){return Number(_0x385d9c);});_0x3902b6['forEach'](function(_0x3392a2){_0x58d37a['or']('CONCAT(\x27,\x27,\x20`TagIds`,\x20\x27,\x27)\x20LIKE\x20?','%,'+_0x3392a2+',%');});_0x5d5e0f=_[_0x3342('0x80')](_0x5d5e0f,_0x3902b6);break;case _0x3342('0x81'):if(_0x19e27b['operator']===_0x3342('0x77')){_0x43d39f[_0x23c186](_0x3342('0x82'),'%'+_0x19e27b['value']+'%',null);}else{_0x4bc9a9=_[_0x3342('0x6f')](_0x309423,[_0x3342('0x3a'),_0x3342('0x83')]);_0x19e27b[_0x3342('0x58')]=_0x3342('0x83');_0x570781=as[_0x3342('0x7d')](_0x57942a,_0x4bc9a9[_0x3342('0x4a')],_0x19e27b);_0x43d39f[_0x23c186](_0x570781['text'],_0x570781[_0x3342('0x71')]['start'],_0x570781['value'][_0x3342('0x37')]);}break;case _0x3342('0x3e'):_0x570781=as[_0x3342('0x7d')]('me',null,_0x19e27b);_0x43d39f[_0x23c186](_0x570781[_0x3342('0x84')],_0x570781[_0x3342('0x71')][_0x3342('0x7e')],_0x570781[_0x3342('0x71')][_0x3342('0x37')]);break;}}else{var _0x570781=as[_0x3342('0x7d')](_0x57942a,_0x4bc9a9[_0x3342('0x4a')],_0x19e27b);_0x43d39f[_0x23c186](_0x570781[_0x3342('0x84')],_0x570781[_0x3342('0x71')][_0x3342('0x7e')],_0x570781[_0x3342('0x71')][_0x3342('0x37')]);}}}else{var _0x58926c=_(_0x414fcb[_0x3342('0x4d')])[_0x3342('0x4e')]()[_0x3342('0x48')](function(_0x20203b){return _[_0x3342('0x85')](_0x309423,[_0x3342('0x3a'),_0x20203b])?_0x20203b:undefined;})['compact']()['value']();if(!_['isEmpty'](_0x58926c)){_0x58926c[_0x3342('0x44')](function(_0x21670a){if(_0x21670a===_0x3342('0x86')){_0x49e3c6[_0x3342('0x87')](_0x3342('0x88'),[][_0x3342('0x89')](_0x414fcb[_0x3342('0x4d')][_0x21670a]));}else if(_0x21670a===_0x3342('0x8a')){var _0x4b47ab=JSON[_0x3342('0x8b')](_0x414fcb[_0x3342('0x4d')][_0x21670a])[_0x3342('0x8c')];var _0x42782f=JSON['parse'](_0x414fcb[_0x3342('0x4d')][_0x21670a])[_0x3342('0x8d')];_0x49e3c6[_0x3342('0x87')](_0x3342('0x8e'),_0x4b47ab,_0x42782f);}else{if(_0x414fcb[_0x3342('0x4d')][_0x21670a]===_0x3342('0x8f')){_0x49e3c6[_0x3342('0x87')]('i.'+_0x21670a+_0x3342('0x90'));}else{_0x49e3c6[_0x3342('0x87')]('i.'+_0x21670a+'\x20=\x20?',_0x414fcb[_0x3342('0x4d')][_0x21670a]);}}});}if(_0x414fcb[_0x3342('0x4d')]['read']){if(_0x414fcb[_0x3342('0x4d')]['read']==0x1){_0x49e3c6[_0x3342('0x72')]('`unreadMessages`\x20=\x200');}else{_0x49e3c6[_0x3342('0x72')]('`unreadMessages`\x20>\x200');}}if(_0x414fcb[_0x3342('0x4d')][_0x3342('0x91')]){_0x5d5e0f=_['isArray'](_0x414fcb[_0x3342('0x4d')][_0x3342('0x91')])?_0x414fcb['query'][_0x3342('0x91')]:new Array(_0x414fcb[_0x3342('0x4d')][_0x3342('0x91')]);_0x5d5e0f[_0x3342('0x44')](function(_0x22a9ec){_0x58d37a['or'](_0x3342('0x92'),'%,'+_0x22a9ec+',%');});}if(_0x414fcb['query'][_0x3342('0x93')]){var _0x5f168b=_0x414fcb[_0x3342('0x4d')][_0x3342('0x93')][_0x3342('0x94')]('\x5c','\x5c\x5c')[_0x3342('0x94')](/'/g,'\x27\x27');if(qs[_0x3342('0x95')](_0x5f168b)){_0x43d39f['or'](_0x3342('0x96'),_0x5f168b+'%');}else{_0x43d39f['or'](_0x3342('0x97'),qs[_0x3342('0x7a')](_0x5f168b))['or']('CONCAT(c.firstName,\x20\x27\x20\x27,\x20c.lastName)\x20LIKE\x20?',_0x5f168b+'%');}}}_0x49e3c6[_0x3342('0x87')](_0x43d39f);_0x49e3c6[_0x3342('0x98')](_0x3342('0x99'));var _0x592122={'type':db['Sequelize'][_0x3342('0x9a')]['SELECT'],'raw':!![]};var _0x59088e=_0x49e3c6[_0x3342('0x9b')]();_0x59088e[_0x3342('0x58')]('i.id');_0x59088e[_0x3342('0x58')]('SUM(me.read\x20=\x200\x20AND\x20me.direction\x20=\x20\x27in\x27)',_0x3342('0x70'));if(_0x15eb49['order']){_0x15eb49['order'][_0x3342('0x44')](function(_0x2d3f3e){var _0x3131d9=_0x2d3f3e[0x0]==='contactName'?_0x2d3f3e[0x0]:'i.'+_0x2d3f3e[0x0];_0x49e3c6['order'](_0x3131d9,_0x2d3f3e[0x1]===_0x3342('0x9c')?![]:!![]);});}if(!_['isEmpty'](_0x5d5e0f)){_0x49e3c6[_0x3342('0x72')](_0x58d37a);_0x59088e[_0x3342('0x87')](_0x3342('0x9d'),_0x5d5e0f);}BPromise[_0x3342('0x9e')]()['then'](function(){if(!_0x3cc92a){if(_0x414fcb['query'][_0x3342('0x86')])return;_0x59088e[_0x3342('0x87')]('i.ChatWebsiteId\x20IS\x20NOT\x20NULL');_0x49e3c6[_0x3342('0x87')]('i.ChatWebsiteId\x20IS\x20NOT\x20NULL');return;}if(_0x414fcb[_0x3342('0x9f')][_0x3342('0xa0')]!==_0x3342('0xa1'))return;return _0x414fcb[_0x3342('0x9f')][_0x3342('0xa2')]({'attributes':['id'],'raw':!![]})['then'](function(_0x502050){if(_['isEmpty'](_0x502050)){_0x59088e[_0x3342('0x87')](_0x3342('0xa3'));_0x49e3c6[_0x3342('0x87')]('i.ChatWebsiteId\x20IS\x20NULL');}else{_0x59088e[_0x3342('0x87')](_0x3342('0x88'),_[_0x3342('0x48')](_0x502050,'id'));_0x49e3c6[_0x3342('0x87')](_0x3342('0x88'),_[_0x3342('0x48')](_0x502050,'id'));}});})['then'](function(){if(_0x414fcb[_0x3342('0x9f')]['role']==='agent'&&!_0x3cc92a&&!_0x414fcb['query'][_0x3342('0x86')])return[];return db[_0x3342('0xa4')]['query'](_0x59088e[_0x3342('0xa5')](),_0x592122);})[_0x3342('0x20')](function(_0x55049d){_0x283ce9[_0x3342('0x2e')]=_0x55049d[_0x3342('0x52')];if(_0x283ce9[_0x3342('0x2e')]===0x0)return[];return db[_0x3342('0xa4')][_0x3342('0x4d')](_0x43c27a[_0x3342('0xa5')](),_0x592122)[_0x3342('0x20')](function(_0x132ef4){_0x24d543=_['keyBy'](_0x132ef4,'id');_0x592122=_[_0x3342('0x3d')](_0x592122,{'model':db[_0x3342('0x49')],'mapToModel':!![],'raw':!![],'nest':!![]});if(_0x414fcb[_0x3342('0x4d')][_0x3342('0xa6')]){_0x15eb49[_0x3342('0x51')][_0x3342('0x44')](function(_0x2d2902){_0x49e3c6['field']('i.'+_0x2d2902);});}else{_0x49e3c6['field'](_0x3342('0xa7'),_0x3342('0x70'));_0x49e3c6[_0x3342('0x58')](_0x3342('0xa8'),_0x3342('0xa9'));_0x49e3c6[_0x3342('0x58')](_0x3342('0xaa'),'Account.mandatoryDisposition');_0x49e3c6[_0x3342('0x58')](_0x3342('0xab'),_0x3342('0xac'));_0x49e3c6[_0x3342('0x58')](_0x3342('0xad'));_0x49e3c6['field'](_0x3342('0xae'),_0x3342('0xaf'));_0x49e3c6[_0x3342('0x58')](_0x3342('0xb0'),'Contact.lastName');_0x49e3c6[_0x3342('0x58')](_0x3342('0xb1'),_0x3342('0xb2'));_0x49e3c6[_0x3342('0x58')](_0x3342('0xb3'),_0x3342('0xb4'));_0x49e3c6[_0x3342('0x58')]('c.mobile','Contact.mobile');_0x49e3c6[_0x3342('0x58')]('c.fax',_0x3342('0xb5'));_0x49e3c6[_0x3342('0x58')](_0x3342('0xb6'),_0x3342('0xb7'));_0x49e3c6[_0x3342('0x58')]('o.internal',_0x3342('0xb8'));_0x49e3c6[_0x3342('0x58')](_0x3342('0xb9'),'TagIds');}if(_0x15eb49['limit'])_0x49e3c6[_0x3342('0x2d')](_0x15eb49[_0x3342('0x2d')]);if(_0x15eb49[_0x3342('0x2b')])_0x49e3c6[_0x3342('0x2b')](_0x15eb49[_0x3342('0x2b')]);return db[_0x3342('0xa4')][_0x3342('0x4d')](_0x49e3c6[_0x3342('0xa5')](),_0x592122);})[_0x3342('0x20')](function(_0x304dd0){if(_0x304dd0[_0x3342('0x52')]>0x0)_0x1d5001[_0x3342('0x87')]('ui.ChatInteractionId\x20IN\x20?',_['map'](_0x304dd0,'id'));return db['sequelize'][_0x3342('0x4d')](_0x1d5001[_0x3342('0xa5')](),_0x592122)[_0x3342('0x20')](function(_0x405995){var _0x31bf5c=_['groupBy'](_0x405995,_0x3342('0xba'));var _0x1f98b5=[];_0x304dd0[_0x3342('0x44')](function(_0x537b31){_0x1f98b5[_0x3342('0x45')](updateChatInteraction(_0x537b31,_0x24d543,_0x31bf5c));});return BPromise[_0x3342('0xbb')](_0x1f98b5);});});})['then'](function(_0x501e72){_0x283ce9[_0x3342('0xbc')]=_0x501e72;return _0x283ce9;})[_0x3342('0x20')](respondWithFilteredResult(_0x5e24a1,_0x15eb49))[_0x3342('0x46')](handleError(_0x5e24a1,null));};exports[_0x3342('0xbd')]=function(_0x475ee4,_0x51b0f9){var _0x48cb53={'raw':![],'where':{'id':_0x475ee4[_0x3342('0xbe')]['id']}},_0x37fdc5={};_0x37fdc5[_0x3342('0x4c')]=_[_0x3342('0x4e')](db[_0x3342('0x49')][_0x3342('0xbf')]);_0x37fdc5[_0x3342('0x4d')]=_['keys'](_0x475ee4['query']);_0x37fdc5['filters']=_[_0x3342('0x50')](_0x37fdc5['model'],_0x37fdc5['query']);_0x48cb53['attributes']=_[_0x3342('0x50')](_0x37fdc5[_0x3342('0x4c')],qs['fields'](_0x475ee4[_0x3342('0x4d')]['fields']));_0x48cb53['attributes']=_0x48cb53[_0x3342('0x51')]['length']?_0x48cb53[_0x3342('0x51')]:_0x37fdc5[_0x3342('0x4c')];if(_0x475ee4[_0x3342('0x4d')][_0x3342('0xc0')]){_0x48cb53[_0x3342('0xc1')]=[{'all':!![]}];}_0x48cb53=_[_0x3342('0x3d')]({},_0x48cb53,_0x475ee4['options']);return db[_0x3342('0x49')][_0x3342('0x6f')](_0x48cb53)[_0x3342('0x20')](handleEntityNotFound(_0x51b0f9,null))['then'](respondWithResult(_0x51b0f9,null))[_0x3342('0x46')](handleError(_0x51b0f9,null));};exports[_0x3342('0xc2')]=function(_0x3b206a,_0x1f7b91){return db[_0x3342('0x49')][_0x3342('0xc2')](_0x3b206a['body'],{})[_0x3342('0x20')](respondWithResult(_0x1f7b91,0xc9))[_0x3342('0x46')](handleError(_0x1f7b91,null));};exports[_0x3342('0x35')]=function(_0x3b875e,_0x441c2a){if(_0x3b875e['body']['id']){delete _0x3b875e[_0x3342('0x3e')]['id'];}return db[_0x3342('0x49')][_0x3342('0x6f')]({'where':{'id':_0x3b875e[_0x3342('0xbe')]['id']}})['then'](handleEntityNotFound(_0x441c2a,null))[_0x3342('0x20')](saveUpdates(_0x3b875e['body'],null))[_0x3342('0x20')](respondWithResult(_0x441c2a,null))[_0x3342('0x46')](handleError(_0x441c2a,null));};exports[_0x3342('0x36')]=function(_0x4f4819,_0x1e67a4){return db['ChatInteraction'][_0x3342('0x6f')]({'where':{'id':_0x4f4819['params']['id']}})[_0x3342('0x20')](handleEntityNotFound(_0x1e67a4,null))[_0x3342('0x20')](removeEntity(_0x1e67a4,null))[_0x3342('0x46')](handleError(_0x1e67a4,null));};exports['describe']=function(_0x25b867,_0x3a6d87){return db[_0x3342('0x49')][_0x3342('0xc3')]()[_0x3342('0x20')](respondWithResult(_0x3a6d87,null))[_0x3342('0x46')](handleError(_0x3a6d87,null));};exports[_0x3342('0xc4')]=function(_0x4d86c3,_0x296ae6){var _0x2d7ba8=_0x4d86c3[_0x3342('0xbe')]['id'];var _0x526a1a;var _0x27aa50;var _0x3c0eb8;return db[_0x3342('0x49')][_0x3342('0xc5')]({'where':{'id':_0x2d7ba8}})[_0x3342('0x20')](function(_0x157c6d){_0x526a1a=_0x157c6d;return db[_0x3342('0xc6')][_0x3342('0xc5')]({'where':{'id':_0x157c6d['ChatWebsiteId']},'attributes':['id',_0x3342('0xc7'),_0x3342('0xc8'),'vidaooTopic',_0x3342('0xc9'),_0x3342('0xca')],'raw':!![]});})[_0x3342('0x20')](function(_0x1e26f8){if(_0x1e26f8&&_0x1e26f8[_0x3342('0xc7')]&&_0x1e26f8[_0x3342('0xc8')]){_0x27aa50=_0x1e26f8;var _0x3c371b={'interaction':{'id':_0x2d7ba8},'agent':{'id':_0x4d86c3[_0x3342('0x9f')]['id'],'name':_0x4d86c3[_0x3342('0x9f')][_0x3342('0x3a')],'fullname':_0x4d86c3[_0x3342('0x9f')]['fullname'],'email':_0x4d86c3['user'][_0x3342('0xcb')]},'contact':_0x4d86c3[_0x3342('0x3e')][_0x3342('0xcc')],'account':_0x4d86c3[_0x3342('0x3e')][_0x3342('0x40')]};var _0x1bed4c={'rejectUnauthorized':![],'method':_0x3342('0xcd'),'url':_0x3342('0xce'),'headers':{'X-APIKEY':_0x1e26f8[_0x3342('0xc7')]},'body':{'duration':null,'scheduledAt':null,'participants':[_0x4d86c3[_0x3342('0x9f')][_0x3342('0xcb')]],'buttons':null,'topic':_0x27aa50[_0x3342('0xcf')],'note':_[_0x3342('0xd0')](_0x27aa50[_0x3342('0xc9')])?null:getMustacheRender(_0x27aa50[_0x3342('0xc9')],_0x3c371b),'metadata':null},'redirect':_0x3342('0xd1'),'json':!![]};try{if(!_['isNull'](_0x27aa50['vidaooMetadata'])){var _0x399d30=getMustacheRender(_0x27aa50[_0x3342('0xca')],_0x3c371b);var _0x4fcb8d=JSON[_0x3342('0x8b')](_0x399d30);_0x1bed4c[_0x3342('0x3e')]['metadata']=_0x4fcb8d;}}catch(_0x455b2d){throw new db['Sequelize'][(_0x3342('0xd2'))](_0x3342('0xd3'));}return rp(_0x1bed4c);}else{throw new db[(_0x3342('0xd4'))][(_0x3342('0xd2'))](_0x3342('0xd5'));}})[_0x3342('0x20')](function(_0x8f9e69){_0x3c0eb8=_0x8f9e69;if(_0x3c0eb8['id']){var _0x31014e={'body':_0x3c0eb8[_0x3342('0xd6')],'ChatWebsiteId':_0x27aa50['id'],'ChatInteractionId':_0x526a1a['id'],'direction':'out','UserId':_0x4d86c3['user']['id']};return db['ChatMessage'][_0x3342('0xc2')](_0x31014e,{});}else{throw new db[(_0x3342('0xd4'))]['ValidationError'](_0x3342('0xd7'));}})[_0x3342('0x20')](function(){return _0x526a1a[_0x3342('0xd8')]({'vidaooSessionId':_0x3c0eb8['id']});})[_0x3342('0x20')](respondWithResult(_0x296ae6,null))['catch'](handleError(_0x296ae6,null));};exports[_0x3342('0xd9')]=function(_0x2d38a7,_0x5dbba5){if(_0x2d38a7['body']['id']){delete _0x2d38a7[_0x3342('0x3e')]['id'];}return db[_0x3342('0x49')][_0x3342('0x6f')]({'where':{'id':_0x2d38a7[_0x3342('0xbe')]['id']},'include':[{'model':db[_0x3342('0xda')],'as':_0x3342('0x75')}]})['then'](handleEntityNotFound(_0x5dbba5,null))['then'](saveUpdates(_0x2d38a7[_0x3342('0x3e')],null))[_0x3342('0x20')](respondWithResult(_0x5dbba5,null))[_0x3342('0x46')](handleError(_0x5dbba5,null));};exports[_0x3342('0xdb')]=function(_0x1b87a7,_0x50b51b,_0x50470b){if(_0x1b87a7['body']['id']){delete _0x1b87a7[_0x3342('0x3e')]['id'];}return db['ChatInteraction'][_0x3342('0x6f')]({'where':{'id':_0x1b87a7[_0x3342('0xbe')]['id']}})[_0x3342('0x20')](function(_0x24b50f){if(!_0x24b50f){logger[_0x3342('0x26')](_0x3342('0xdc'),_0x3342('0xdb'),0x194,_0x3342('0xdd'));_0x50b51b[_0x3342('0x38')](0x194);}else{if(_0x24b50f[_0x3342('0x83')]){throw new db[(_0x3342('0xd4'))][(_0x3342('0xd2'))]('Interaction\x20already\x20assigned');}}return _0x24b50f;})[_0x3342('0x20')](function(_0x32a488){if(_0x32a488){return _0x32a488[_0x3342('0x35')]({'closed':_0x1b87a7[_0x3342('0x3e')][_0x3342('0xde')],'disposition':_0x1b87a7[_0x3342('0x3e')][_0x3342('0xdf')]})[_0x3342('0x20')](function(_0x28bb21){return _0x28bb21;});}})[_0x3342('0x20')](function(_0x40aa4a){return respondWithRpcPromise(_0x3342('0xe0'),'abandon',_0x1b87a7[_0x3342('0x3e')],client9004);})[_0x3342('0x20')](respondWithResult(_0x50b51b,null))['catch'](handleError(_0x50b51b,null));};exports[_0x3342('0xe1')]=function(_0x78daec,_0x7b7120,_0x512838){_0x78daec[_0x3342('0x3e')][_0x3342('0x3a')]=_0x78daec[_0x3342('0xe2')][_0x3342('0xe3')];_0x78daec[_0x3342('0x3e')][_0x3342('0xe4')]=_0x78daec['file'][_0x3342('0xe5')];_0x78daec[_0x3342('0x3e')][_0x3342('0x4a')]=_0x78daec[_0x3342('0xe2')]['mimetype'];return db[_0x3342('0xe6')]['create'](_0x78daec['body'])[_0x3342('0x20')](respondWithResult(_0x7b7120,0xc9))[_0x3342('0x46')](handleError(_0x7b7120,null));};exports[_0x3342('0xe7')]=function(_0x22ac7c,_0x4726ab,_0x14a236){return db[_0x3342('0x49')][_0x3342('0xc5')]({'where':{'id':_0x22ac7c[_0x3342('0xbe')]['id']},'raw':!![]})[_0x3342('0x20')](handleEntityNotFound(_0x4726ab,null))['then'](function(_0x58bcc3){if(_0x58bcc3){if(_0x58bcc3[_0x3342('0xde')]){return _0x4726ab[_0x3342('0x2f')](0x193)['json']({'status':0x193,'message':_0x3342('0xe8')});}return db['Attachment'][_0x3342('0xc5')]({'where':{'id':_0x22ac7c[_0x3342('0x4d')][_0x3342('0xe9')]},'raw':!![]})['then'](handleEntityNotFound(_0x4726ab,null));}})['then'](function(_0x328f06){if(_0x328f06){var _0x2a2c38=_0x328f06[_0x3342('0xea')]!==null;var _0x41146b=path['join'](config['root'],_0x3342('0xeb'));if(_0x2a2c38){_0x41146b=path['join'](_0x41146b,_0x3342('0xec'));}var _0xcd0550=path[_0x3342('0xed')](_0x41146b,_0x328f06[_0x3342('0xe4')]);return _0x4726ab[_0x3342('0xee')](_0xcd0550);}})['catch'](handleError(_0x4726ab,null));};exports['close']=function(_0x214ff3,_0x584c31){var _0x6ea059=null;var _0x521e5a=null;var _0x5cc2ef=null;var _0x59c56a=null;if(_0x214ff3['body']['id']){delete _0x214ff3[_0x3342('0x3e')]['id'];}if(_0x214ff3[_0x3342('0x3e')]['mailTranscript']){_0x59c56a=path['join'](config[_0x3342('0xef')],_0x3342('0xf0'),util[_0x3342('0xf1')]('transcript-%s.txt',Date[_0x3342('0xf2')]()));_0x214ff3[_0x3342('0x3e')][_0x3342('0xf3')]=_0x59c56a;}return db[_0x3342('0x49')]['find']({'where':{'id':_0x214ff3[_0x3342('0xbe')]['id']},'include':[{'model':db['ChatMessage'],'as':_0x3342('0xf4'),'include':[{'model':db[_0x3342('0x81')],'as':_0x3342('0x81')}]}]})['then'](handleEntityNotFound(_0x584c31,null))[_0x3342('0x20')](saveUpdates(_0x214ff3['body'],null))[_0x3342('0x20')](function(_0xf61be3){if(_0xf61be3){_0x6ea059=_0xf61be3;return db[_0x3342('0xc6')][_0x3342('0x6f')]({'where':{'id':_0x6ea059[_0x3342('0x86')]}});}})[_0x3342('0x20')](function(_0x322dd2){if(_0x322dd2){_0x5cc2ef=_0x322dd2;return db[_0x3342('0xda')][_0x3342('0x6f')]({'where':{'id':_0x6ea059['ContactId']}});}})[_0x3342('0x20')](function(_0x45bd80){if(_0x45bd80){_0x521e5a=_0x45bd80;if(_0x59c56a){var _0x35c575=null;for(var _0x1df1cb=0x1;_0x1df1cb<_0x6ea059[_0x3342('0xf4')]['length'];++_0x1df1cb){_0x35c575=_0x6ea059['Messages'][_0x1df1cb];var _0x4cb2f5=_0x35c575[_0x3342('0x83')]?util[_0x3342('0xf1')](_0x3342('0xf5'),_0x5cc2ef['agentAlias'],_0x35c575[_0x3342('0x83')]):_0x3342('0xf6');var _0x6d520a=_0x214ff3['body'][_0x3342('0xf7')]||util['format'](_0x3342('0xf5'),_0x3342('0xf8'),_0x35c575[_0x3342('0x7c')]);switch(_0x5cc2ef[_0x3342('0xf9')]){case _0x3342('0xfa'):_0x4cb2f5=_0x35c575['UserId']?util[_0x3342('0xf1')](_0x3342('0xf5'),_0x5cc2ef[_0x3342('0xfb')],_0x35c575['UserId']):_0x3342('0xf6');break;case _0x3342('0xfc'):_0x4cb2f5=_0x35c575[_0x3342('0x83')]?_0x35c575[_0x3342('0x81')]['alias']||_0x35c575[_0x3342('0x81')][_0x3342('0x42')]:_0x3342('0xf6');break;case _0x3342('0xfd'):_0x4cb2f5=_0x35c575[_0x3342('0x83')]?_0x35c575['User'][_0x3342('0x42')]:'System';break;default:_0x4cb2f5=_0x35c575[_0x3342('0x83')]?util[_0x3342('0xf1')](_0x3342('0xf5'),_0x5cc2ef[_0x3342('0xfb')],_0x35c575['UserId']):_0x3342('0xf6');}var _0x3b0ae0=util[_0x3342('0xf1')](_0x3342('0xfe'),moment(_0x35c575['createdAt'])[_0x3342('0xf1')]('MM/DD/YYYY\x20HH:mm:ss'),_0x35c575[_0x3342('0xff')]==='in'?_0x6d520a:_0x4cb2f5,_0x35c575[_0x3342('0x3e')]);if(!_0x35c575['secret']){fs[_0x3342('0x100')](_0x59c56a,_0x3b0ae0);}}return db['MailAccount'][_0x3342('0xc5')]({'where':{'service':!![]},'include':[{'model':db[_0x3342('0x101')],'as':_0x3342('0x102'),'raw':!![]}]});}}})[_0x3342('0x20')](function(_0x1f6d84){if(_0x1f6d84&&_0x1f6d84[_0x3342('0x102')]&&_0x214ff3[_0x3342('0x3e')]){var _0x34e824={'tls':{'rejectUnauthorized':![]}};if(_0x1f6d84[_0x3342('0x102')][_0x3342('0x103')]){_0x34e824[_0x3342('0x103')]=_0x1f6d84['Smtp'][_0x3342('0x103')];}else{_0x34e824[_0x3342('0x104')]=_0x1f6d84[_0x3342('0x102')]['host'];_0x34e824['port']=_0x1f6d84[_0x3342('0x102')]['port'];_0x34e824[_0x3342('0x105')]=_0x1f6d84[_0x3342('0x102')][_0x3342('0x105')];}if(_0x1f6d84[_0x3342('0x102')][_0x3342('0x106')]){_0x34e824[_0x3342('0x107')]={'user':_0x1f6d84[_0x3342('0x102')][_0x3342('0x9f')],'pass':_0x1f6d84['Smtp'][_0x3342('0x108')]};}return respondWithRpcPromise(_0x3342('0x109'),'sendMail',{'account':_0x34e824,'message':{'from':util[_0x3342('0xf1')](_0x3342('0x10a'),_0x1f6d84[_0x3342('0x3a')],_0x1f6d84['email']||_0x1f6d84['Smtp'][_0x3342('0x9f')]),'to':_0x214ff3[_0x3342('0x3e')][_0x3342('0x10b')],'subject':'Mail\x20Transcript','text':util[_0x3342('0xf1')](_0x3342('0x10c'),_0x214ff3[_0x3342('0x3e')]['mailTranscript']),'attachments':[{'path':_0x59c56a}]}})[_0x3342('0x20')](function(){return _0x6ea059;})['catch'](function(_0x4ccbbe){console[_0x3342('0x26')](_0x4ccbbe);});}else{return _0x6ea059;}})[_0x3342('0x20')](respondWithStatusCode(_0x584c31,0xc8))[_0x3342('0x46')](handleError(_0x584c31,null));};exports[_0x3342('0x10d')]=function(_0x41e521,_0x1ab46b,_0x592f9b){return db[_0x3342('0x10e')][_0x3342('0x6f')]({'where':{'id':_0x41e521[_0x3342('0xbe')]['id']}})[_0x3342('0x20')](handleEntityNotFound(_0x1ab46b,null))[_0x3342('0x20')](function(_0x3bb70b){if(_0x3bb70b){return _0x3bb70b[_0x3342('0x10d')](_0x41e521[_0x3342('0x3e')][_0x3342('0x10f')],_[_0x3342('0x110')](_0x41e521[_0x3342('0x3e')],['ids','id'])||{});}})['then'](respondWithResult(_0x1ab46b,null))['catch'](handleError(_0x1ab46b,null));};exports[_0x3342('0x111')]=function(_0x2b46c5,_0x203409,_0x242c31){var _0x87fe8={'raw':![],'where':{}};var _0x3d594c={};var _0x4ea5cf={'count':0x0,'rows':[]};return db[_0x3342('0x49')]['findOne']({'where':{'id':_0x2b46c5[_0x3342('0xbe')]['id']}})[_0x3342('0x20')](handleEntityNotFound(_0x203409,null))[_0x3342('0x20')](function(_0x7b2e55){if(_0x7b2e55){_0x3d594c[_0x3342('0x4c')]=_[_0x3342('0x4e')](db[_0x3342('0x10e')][_0x3342('0xbf')]);_0x3d594c['query']=_[_0x3342('0x4e')](_0x2b46c5[_0x3342('0x4d')]);_0x3d594c[_0x3342('0x4f')]=_[_0x3342('0x50')](_0x3d594c['model'],_0x3d594c['query']);_0x87fe8[_0x3342('0x51')]=_['intersection'](_0x3d594c[_0x3342('0x4c')],qs[_0x3342('0xa6')](_0x2b46c5[_0x3342('0x4d')][_0x3342('0xa6')]));_0x87fe8[_0x3342('0x51')]=_0x87fe8[_0x3342('0x51')][_0x3342('0x52')]?_0x87fe8[_0x3342('0x51')]:_0x3d594c['model'];if(!_0x2b46c5[_0x3342('0x4d')][_0x3342('0x53')](_0x3342('0x54'))){_0x87fe8['limit']=qs[_0x3342('0x2d')](_0x2b46c5[_0x3342('0x4d')][_0x3342('0x2d')]);_0x87fe8[_0x3342('0x2b')]=qs[_0x3342('0x2b')](_0x2b46c5[_0x3342('0x4d')]['offset']);}_0x87fe8[_0x3342('0x55')]=qs[_0x3342('0x56')](_0x2b46c5[_0x3342('0x4d')][_0x3342('0x56')]);_0x87fe8['where']=qs['filters'](_[_0x3342('0x57')](_0x2b46c5[_0x3342('0x4d')],_0x3d594c[_0x3342('0x4f')]));_0x87fe8['where'][_0x3342('0xba')]=_0x7b2e55['id'];if(_0x2b46c5[_0x3342('0x4d')]['filter']){_0x87fe8[_0x3342('0x87')]=_[_0x3342('0x3d')](_0x87fe8[_0x3342('0x87')],{'$or':_[_0x3342('0x48')](_0x87fe8[_0x3342('0x51')],function(_0x1f9706){var _0x422e17={};_0x422e17[_0x1f9706]={'$like':'%'+_0x2b46c5[_0x3342('0x4d')][_0x3342('0x93')]+'%'};return _0x422e17;})});}if(_0x2b46c5['query'][_0x3342('0x8c')]){var _0x109c2c=_0x2b46c5[_0x3342('0x4d')][_0x3342('0x8c')][_0x3342('0x78')](',');var _0x891df3={};_0x891df3[_0x109c2c[0x0]]={'$gte':moment(_0x109c2c[0x1])[_0x3342('0xf1')](_0x3342('0x112'))};_0x87fe8[_0x3342('0x87')]=_[_0x3342('0x3d')](_0x87fe8[_0x3342('0x87')],_0x891df3);}_0x87fe8=_[_0x3342('0x3d')]({},_0x87fe8,_0x2b46c5[_0x3342('0x113')]);return db[_0x3342('0x10e')][_0x3342('0x2e')]({'where':_0x87fe8[_0x3342('0x87')]})[_0x3342('0x20')](function(_0x2dcc44){_0x4ea5cf[_0x3342('0x2e')]=_0x2dcc44;if(_0x2b46c5[_0x3342('0x4d')][_0x3342('0xc0')]){_0x87fe8['include']=[{'all':!![]}];}return db[_0x3342('0x10e')][_0x3342('0x114')](_0x87fe8);})[_0x3342('0x20')](function(_0x34b9bd){_0x4ea5cf['rows']=_0x34b9bd;return _0x4ea5cf;});}})[_0x3342('0x20')](respondWithFilteredResult(_0x203409,_0x87fe8))['catch'](handleError(_0x203409,null));};exports[_0x3342('0x115')]=function(_0x53e73b,_0x51f592,_0x8fc042){var _0x43bf9a={'where':{}},_0x12693e={},_0x564ecb={'count':0x0,'rows':[]};return db[_0x3342('0x49')][_0x3342('0xc5')]({'where':{'id':_0x53e73b[_0x3342('0xbe')]['id']}})[_0x3342('0x20')](handleEntityNotFound(_0x51f592,null))[_0x3342('0x20')](function(_0x7b2d65){if(_0x7b2d65){_0x12693e[_0x3342('0x4c')]=_['keys'](db[_0x3342('0x10e')]['rawAttributes']);_0x12693e[_0x3342('0x4d')]=_[_0x3342('0x4e')](_0x53e73b[_0x3342('0x4d')]);_0x12693e['filters']=_[_0x3342('0x50')](_0x12693e[_0x3342('0x4c')],_0x12693e[_0x3342('0x4d')]);_0x43bf9a[_0x3342('0x51')]=_[_0x3342('0x50')](_0x12693e[_0x3342('0x4c')],qs[_0x3342('0xa6')](_0x53e73b['query'][_0x3342('0xa6')]));_0x43bf9a[_0x3342('0x51')]=_0x43bf9a[_0x3342('0x51')][_0x3342('0x52')]?_0x43bf9a[_0x3342('0x51')]:_0x12693e[_0x3342('0x4c')];if(!_0x53e73b['query'][_0x3342('0x53')](_0x3342('0x54'))){_0x43bf9a['limit']=qs['limit'](_0x53e73b[_0x3342('0x4d')][_0x3342('0x2d')]);_0x43bf9a[_0x3342('0x2b')]=qs['offset'](_0x53e73b[_0x3342('0x4d')][_0x3342('0x2b')]);}_0x43bf9a[_0x3342('0x55')]=qs[_0x3342('0x56')](_0x53e73b['query'][_0x3342('0x56')]);_0x43bf9a['where']=qs['filters'](_[_0x3342('0x57')](_0x53e73b[_0x3342('0x4d')],_0x12693e['filters']));_0x43bf9a[_0x3342('0x87')][_0x3342('0xba')]=_0x7b2d65['id'];if(_0x53e73b[_0x3342('0x4d')][_0x3342('0x93')]){_0x43bf9a['where']=_[_0x3342('0x3d')](_0x43bf9a[_0x3342('0x87')],{'$or':_[_0x3342('0x48')](_0x43bf9a[_0x3342('0x51')],function(_0x1af0ab){var _0x2c36b6={};_0x2c36b6[_0x1af0ab]={'$like':'%'+_0x53e73b[_0x3342('0x4d')][_0x3342('0x93')]+'%'};return _0x2c36b6;})});}_0x43bf9a['where']['secret']=![];if(_0x53e73b[_0x3342('0x4d')]['id']){_0x43bf9a[_0x3342('0x87')]['id']={'$gt':_0x53e73b[_0x3342('0x4d')]['id']};}_0x43bf9a=_[_0x3342('0x3d')]({},_0x43bf9a,_0x53e73b['options']);return db['ChatMessage'][_0x3342('0x2e')]({'where':_0x43bf9a['where']})[_0x3342('0x20')](function(_0x408c0b){_0x564ecb[_0x3342('0x2e')]=_0x408c0b;_0x43bf9a[_0x3342('0xc1')]=[];if(_0x53e73b[_0x3342('0x4d')]['includeAgent']){_0x43bf9a[_0x3342('0xc1')][_0x3342('0x45')]({'model':db[_0x3342('0x81')],'as':_0x3342('0x81'),'attributes':['id',_0x3342('0x42'),_0x3342('0x116')]});}if(_0x53e73b[_0x3342('0x4d')][_0x3342('0xc0')]){_0x43bf9a[_0x3342('0xc1')]=[{'all':!![]}];}return db[_0x3342('0x10e')]['findAll'](_0x43bf9a);})[_0x3342('0x20')](function(_0x4ee731){_0x564ecb[_0x3342('0xbc')]=_0x4ee731;return _0x564ecb;});}})[_0x3342('0x20')](respondWithFilteredResult(_0x51f592,_0x43bf9a))[_0x3342('0x46')](handleError(_0x51f592,null));};exports[_0x3342('0x117')]=function(_0x13846a,_0x35ef7e,_0x65063d){return db[_0x3342('0x49')][_0x3342('0x6f')]({'where':{'id':_0x13846a[_0x3342('0xbe')]['id']}})[_0x3342('0x20')](handleEntityNotFound(_0x35ef7e,null))[_0x3342('0x20')](function(_0xb7cc7){if(_0xb7cc7){return _0xb7cc7[_0x3342('0x118')](_0x13846a[_0x3342('0x3e')]['ids'],_[_0x3342('0x110')](_0x13846a[_0x3342('0x3e')],['ids','id'])||{})[_0x3342('0x119')](function(){return db[_0x3342('0x7f')][_0x3342('0x114')]({'attributes':['id',_0x3342('0x3a'),_0x3342('0x59')],'where':{'id':_0x13846a[_0x3342('0x3e')][_0x3342('0x10f')]}});})[_0x3342('0x20')](function(_0x178c5d){socket[_0x3342('0x11a')](_0x3342('0x11b'),{'id':Number(_0x13846a[_0x3342('0xbe')]['id']),'tags':_0x178c5d||[]});return{'id':Number(_0x13846a[_0x3342('0xbe')]['id']),'tags':_0x178c5d||[]};});}})['then'](respondWithResult(_0x35ef7e,null))[_0x3342('0x46')](handleError(_0x35ef7e,null));};exports[_0x3342('0x11c')]=function(_0x667da3,_0x4a26c4,_0x3d4b1d){return db['ChatInteraction']['find']({'where':{'id':_0x667da3[_0x3342('0xbe')]['id']}})[_0x3342('0x20')](handleEntityNotFound(_0x4a26c4,null))[_0x3342('0x20')](function(_0x91b50b){if(_0x91b50b){return _0x91b50b[_0x3342('0x11c')](_0x667da3['query']['ids']);}})[_0x3342('0x20')](respondWithStatusCode(_0x4a26c4,null))[_0x3342('0x46')](handleError(_0x4a26c4,null));};exports[_0x3342('0xee')]=function(_0x4d7c61,_0x13d5ae){var _0x18e629=moment()['unix']()[_0x3342('0xa5')]();var _0x11f4c7=path[_0x3342('0xed')](config[_0x3342('0xef')],_0x3342('0x11d'),'files','tmp');var _0x20f322=path[_0x3342('0xed')](config[_0x3342('0xef')],_0x3342('0x11d'),'files',_0x3342('0x11e'));var _0xd16f=path[_0x3342('0xed')](_0x11f4c7,_0x18e629);var _0x5b2c37=util[_0x3342('0xf1')](_0x3342('0x11f'),_0x4d7c61[_0x3342('0xbe')]['id'],_0x18e629);var _0x212ec9=path[_0x3342('0xed')](_0x11f4c7,_0x5b2c37);var _0x143b82=[];_0x143b82[_0x3342('0x45')]({'model':db[_0x3342('0x81')],'as':_0x3342('0x81'),'attributes':['id',_0x3342('0x42')],'raw':!![]});_0x143b82[_0x3342('0x45')]({'model':db[_0x3342('0xda')],'as':_0x3342('0x75'),'attributes':['id',_0x3342('0x120'),'lastName'],'raw':!![]});if(_0x4d7c61[_0x3342('0x4d')][_0x3342('0x11e')]){_0x143b82[_0x3342('0x45')]({'model':db[_0x3342('0xe6')],'as':_0x3342('0xe6'),'raw':!![]});}var _0x49b963=[{'model':db[_0x3342('0x10e')],'as':_0x3342('0xf4'),'attributes':['id',_0x3342('0x3e'),'createdAt',_0x3342('0xff'),_0x3342('0x121'),_0x3342('0x122')],'include':_0x143b82}];_0x49b963[_0x3342('0x45')]({'model':db[_0x3342('0xc6')],'as':_0x3342('0x123'),'attributes':['id',_0x3342('0x3a')]});_0x49b963['push']({'model':db['User'],'as':_0x3342('0x124'),'attributes':['id','fullname']});return db[_0x3342('0x49')][_0x3342('0x6f')]({'where':{'id':_0x4d7c61['params']['id']},'include':_0x49b963})['then'](handleEntityNotFound(_0x13d5ae,null))[_0x3342('0x20')](function(_0x44bc75){if(_0x44bc75){var _0x3c85d2=_0x44bc75[_0x3342('0x125')]({'plain':!![]});fs[_0x3342('0x126')](_0xd16f);var _0x1597da={'channel':_0x3342('0x127'),'account':_0x3c85d2[_0x3342('0x123')][_0x3342('0x3a')],'agent':_0x3c85d2[_0x3342('0x124')]?_0x3c85d2[_0x3342('0x124')]['fullname']:'N.A.','createdAt':moment(_0x3c85d2[_0x3342('0x8a')])[_0x3342('0xf1')]('YYYY-MM-DD\x20HH:mm:ss')[_0x3342('0xa5')](),'closedAt':_0x3c85d2['closed']?moment(_0x3c85d2[_0x3342('0x128')])[_0x3342('0xf1')](_0x3342('0x112'))[_0x3342('0xa5')]():'','disposition':_0x3c85d2[_0x3342('0xdf')],'chatInfo':{'browser':_0x3c85d2['browserName'],'os':_0x3c85d2[_0x3342('0x129')],'referer':_0x3c85d2['referer'],'customerIp':_0x3c85d2[_0x3342('0x12a')],'customerPort':_0x3c85d2['customerPort']?_0x3c85d2[_0x3342('0x12b')]:'N.A.'},'messages':_(_0x3c85d2[_0x3342('0xf4')])['tail']()[_0x3342('0x93')]({'secret':![]})[_0x3342('0x48')](function(_0xf3c1bb){if(_0xf3c1bb[_0x3342('0xe6')]){var _0x437bb7=path[_0x3342('0xed')](_0x20f322,_0xf3c1bb[_0x3342('0xe6')]['basename']);if(fs[_0x3342('0x12c')](_0x437bb7)){fs['createReadStream'](_0x437bb7)[_0x3342('0x12d')](fs['createWriteStream'](path[_0x3342('0xed')](_0xd16f,_0xf3c1bb['Attachment'][_0x3342('0xe4')])));}}return{'date':moment(_0xf3c1bb[_0x3342('0x8a')])['format'](_0x3342('0x112'))[_0x3342('0xa5')](),'sender':_0xf3c1bb['direction']===_0x3342('0x12e')?_0xf3c1bb[_0x3342('0x81')]?_0xf3c1bb[_0x3342('0x81')][_0x3342('0x42')]:'System':_0xf3c1bb[_0x3342('0x75')][_0x3342('0x120')]+(_0xf3c1bb['Contact'][_0x3342('0x12f')]?'\x20'+_0xf3c1bb[_0x3342('0x75')][_0x3342('0x12f')]:''),'body':_0xf3c1bb['Attachment']?_0xf3c1bb['Attachment'][_0x3342('0xe4')]:_0xf3c1bb[_0x3342('0x3e')],'direction':_0xf3c1bb['direction']===_0x3342('0x12e')?'A':'C','secret':_0xf3c1bb['secret'],'read':_0xf3c1bb[_0x3342('0x122')],'attachment':_0xf3c1bb[_0x3342('0xe6')]};})['value']()};return ejs[_0x3342('0x130')](path[_0x3342('0xed')](config[_0x3342('0xef')],_0x3342('0x11d'),'views',_0x3342('0x131')),{'interaction':_0x1597da})[_0x3342('0x20')](function(_0x267752){var _0x47bdd3=path[_0x3342('0xed')](_0xd16f,_0x3342('0x132')+_0x3c85d2['id']+'-'+_0x18e629+_0x3342('0x133'));var _0x5b9ac8={'path':_0x47bdd3,'channel':'Chat','interactionId':_0x3c85d2['id']};return pdf[_0x3342('0x134')](_0x267752,_0x5b9ac8);})[_0x3342('0x20')](function(){return new BPromise(function(_0x567761,_0x17cb20){zipdir(_0xd16f,{'saveTo':_0x212ec9},function(_0x5fbd3c,_0x33a274){if(_0x5fbd3c)return _0x17cb20(_0x5fbd3c);return _0x567761(_0x33a274);});})[_0x3342('0x20')](function(){return new BPromise(function(_0x90ef48,_0x76b760){rimraf(_0xd16f,function(_0x1ec7ff){if(_0x1ec7ff)_0x76b760(_0x1ec7ff);return _0x90ef48();});});})[_0x3342('0x20')](function(){return _0x13d5ae[_0x3342('0xee')](_0x212ec9,_0x5b2c37,function(_0x4f3f28){if(_0x4f3f28){console[_0x3342('0x135')](_0x3342('0x136'),_0x4f3f28);}else{fs[_0x3342('0x137')](_0x212ec9);}});});});}else{return _0x13d5ae[_0x3342('0x38')](0xc8);}})[_0x3342('0x46')](handleError(_0x13d5ae,null));};
\ No newline at end of file
index de6d848..a9ff926 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xee9f=['getUsers','then','setDataValue','Users','map','findAll','emit','hasOwnProperty','hook','exports','events','../../mysqldb','ChatInteraction','ChatMessage','setMaxListeners','save','update','remove'];(function(_0x51bda1,_0x44f80d){var _0x1ce08c=function(_0x5b788e){while(--_0x5b788e){_0x51bda1['push'](_0x51bda1['shift']());}};_0x1ce08c(++_0x44f80d);}(_0xee9f,0xac));var _0xfee9=function(_0x9a8c50,_0x39c835){_0x9a8c50=_0x9a8c50-0x0;var _0x4e253b=_0xee9f[_0x9a8c50];return _0x4e253b;};'use strict';var EventEmitter=require(_0xfee9('0x0'));var ChatInteraction=require(_0xfee9('0x1'))['db'][_0xfee9('0x2')];var ChatMessage=require('../../mysqldb')['db'][_0xfee9('0x3')];var ChatInteractionEvents=new EventEmitter();ChatInteractionEvents[_0xfee9('0x4')](0x0);var events={'afterCreate':_0xfee9('0x5'),'afterUpdate':_0xfee9('0x6'),'afterDestroy':_0xfee9('0x7')};function emitEvent(_0x5e30a4){return function(_0x1a94ba,_0x1ecc9e,_0x34b09a){_0x1a94ba[_0xfee9('0x8')]({'attributes':['id'],'raw':!![]})[_0xfee9('0x9')](function(_0x1b18e4){_0x1a94ba[_0xfee9('0xa')](_0xfee9('0xb'),_0x1b18e4[_0xfee9('0xc')](function(_0x4239e0){return{'id':_0x4239e0['id']};}));return ChatMessage[_0xfee9('0xd')]({'where':{'ChatInteractionId':_0x1a94ba['id'],'direction':'in','read':![]},'raw':!![]});})[_0xfee9('0x9')](function(_0x165349){_0x1a94ba[_0xfee9('0xa')]('unreadMessages',_0x165349['length']);ChatInteractionEvents[_0xfee9('0xe')](_0x5e30a4+':'+_0x1a94ba['id'],_0x1a94ba);ChatInteractionEvents[_0xfee9('0xe')](_0x5e30a4,_0x1a94ba);_0x34b09a(null);})['catch'](_0x34b09a(null));};}for(var e in events){if(events[_0xfee9('0xf')](e)){var event=events[e];ChatInteraction[_0xfee9('0x10')](e,emitEvent(event));}}module[_0xfee9('0x11')]=ChatInteractionEvents;
\ No newline at end of file
+var _0x94b8=['length','emit','hasOwnProperty','hook','../../mysqldb','ChatInteraction','setMaxListeners','save','then','setDataValue','map','unreadMessages'];(function(_0xa464c9,_0x7c86d8){var _0x3d73c4=function(_0x5c2056){while(--_0x5c2056){_0xa464c9['push'](_0xa464c9['shift']());}};_0x3d73c4(++_0x7c86d8);}(_0x94b8,0x16c));var _0x894b=function(_0x4cb793,_0x23bf08){_0x4cb793=_0x4cb793-0x0;var _0x3f645e=_0x94b8[_0x4cb793];return _0x3f645e;};'use strict';var EventEmitter=require('events');var ChatInteraction=require(_0x894b('0x0'))['db'][_0x894b('0x1')];var ChatMessage=require(_0x894b('0x0'))['db']['ChatMessage'];var ChatInteractionEvents=new EventEmitter();ChatInteractionEvents[_0x894b('0x2')](0x0);var events={'afterCreate':_0x894b('0x3'),'afterUpdate':'update','afterDestroy':'remove'};function emitEvent(_0x2156a4){return function(_0x35b7d3,_0x314c4e,_0x56fcbe){_0x35b7d3['getUsers']({'attributes':['id'],'raw':!![]})[_0x894b('0x4')](function(_0x4c5cca){_0x35b7d3[_0x894b('0x5')]('Users',_0x4c5cca[_0x894b('0x6')](function(_0x23b81b){return{'id':_0x23b81b['id']};}));return ChatMessage['findAll']({'where':{'ChatInteractionId':_0x35b7d3['id'],'direction':'in','read':![]},'raw':!![]});})[_0x894b('0x4')](function(_0x264934){_0x35b7d3[_0x894b('0x5')](_0x894b('0x7'),_0x264934[_0x894b('0x8')]);ChatInteractionEvents['emit'](_0x2156a4+':'+_0x35b7d3['id'],_0x35b7d3);ChatInteractionEvents[_0x894b('0x9')](_0x2156a4,_0x35b7d3);_0x56fcbe(null);})['catch'](_0x56fcbe(null));};}for(var e in events){if(events[_0x894b('0xa')](e)){var event=events[e];ChatInteraction[_0x894b('0xb')](e,emitEvent(event));}}module['exports']=ChatInteractionEvents;
\ No newline at end of file
index ec7d6b2..37cbce7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5da4=['format','YYYY-MM-DD\x20HH:mm:ss','utf8mb4','lodash','util','../../config/logger','api','bluebird','request-promise','path','rimraf','../../config/environment','./chatInteraction.attributes','define','ChatInteraction','changed','closed','closedAt'];(function(_0x366795,_0x27d012){var _0x3b1f64=function(_0x1e1025){while(--_0x1e1025){_0x366795['push'](_0x366795['shift']());}};_0x3b1f64(++_0x27d012);}(_0x5da4,0xdb));var _0x45da=function(_0x42245d,_0x51758f){_0x42245d=_0x42245d-0x0;var _0x4b211a=_0x5da4[_0x42245d];return _0x4b211a;};'use strict';var _=require(_0x45da('0x0'));var util=require(_0x45da('0x1'));var logger=require(_0x45da('0x2'))(_0x45da('0x3'));var moment=require('moment');var BPromise=require(_0x45da('0x4'));var rp=require(_0x45da('0x5'));var fs=require('fs');var path=require(_0x45da('0x6'));var rimraf=require(_0x45da('0x7'));var config=require(_0x45da('0x8'));var attributes=require(_0x45da('0x9'));module['exports']=function(_0x332c53,_0x1f4a22){return _0x332c53[_0x45da('0xa')](_0x45da('0xb'),attributes,{'tableName':'chat_interactions','paranoid':![],'indexes':[],'timestamps':!![],'hooks':{'beforeUpdate':function(_0x5bc713,_0x65f4d8,_0x5d2796){if(_0x5bc713[_0x45da('0xc')](_0x45da('0xd'))){_0x5bc713[_0x45da('0xe')]=moment()[_0x45da('0xf')](_0x45da('0x10'));}_0x5d2796(null,_0x5bc713);}},'charset':_0x45da('0x11'),'collate':'utf8mb4_unicode_ci'});};
\ No newline at end of file
+var _0x28b2=['format','YYYY-MM-DD\x20HH:mm:ss','utf8mb4','lodash','util','../../config/logger','api','moment','bluebird','request-promise','rimraf','../../config/environment','./chatInteraction.attributes','exports','define','chat_interactions','changed','closed','closedAt'];(function(_0x2d3107,_0x13e8bb){var _0x21d541=function(_0x258a32){while(--_0x258a32){_0x2d3107['push'](_0x2d3107['shift']());}};_0x21d541(++_0x13e8bb);}(_0x28b2,0x1cb));var _0x228b=function(_0x20a558,_0x160e0e){_0x20a558=_0x20a558-0x0;var _0x53d3f7=_0x28b2[_0x20a558];return _0x53d3f7;};'use strict';var _=require(_0x228b('0x0'));var util=require(_0x228b('0x1'));var logger=require(_0x228b('0x2'))(_0x228b('0x3'));var moment=require(_0x228b('0x4'));var BPromise=require(_0x228b('0x5'));var rp=require(_0x228b('0x6'));var fs=require('fs');var path=require('path');var rimraf=require(_0x228b('0x7'));var config=require(_0x228b('0x8'));var attributes=require(_0x228b('0x9'));module[_0x228b('0xa')]=function(_0x56e8fc,_0x1d7170){return _0x56e8fc[_0x228b('0xb')]('ChatInteraction',attributes,{'tableName':_0x228b('0xc'),'paranoid':![],'indexes':[],'timestamps':!![],'hooks':{'beforeUpdate':function(_0x164ea4,_0x54ab58,_0x117ec3){if(_0x164ea4[_0x228b('0xd')](_0x228b('0xe'))){_0x164ea4[_0x228b('0xf')]=moment()[_0x228b('0x10')](_0x228b('0x11'));}_0x117ec3(null,_0x164ea4);}},'charset':_0x228b('0x12'),'collate':'utf8mb4_unicode_ci'});};
\ No newline at end of file
index ba0d8be..7a87aaa 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x12fd=['jayson/promise','client','http','redis','localhost','socket.io-emitter','./chatInteraction.socket','register','request','then','info','ChatInteraction,\x20%s,\x20%s','request\x20sent','debug','ChatInteraction,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','UpdateChatInteraction','ChatInteraction','update','body','options','raw','limit','AddTagsToChatInteraction','find','where','addTags','ids','omit','AddTags','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment'];(function(_0x1096e9,_0x4d1491){var _0x1ccc41=function(_0x768aa3){while(--_0x768aa3){_0x1096e9['push'](_0x1096e9['shift']());}};_0x1ccc41(++_0x4d1491);}(_0x12fd,0x15e));var _0xd12f=function(_0x305bfd,_0x4363b2){_0x305bfd=_0x305bfd-0x0;var _0x25d025=_0x12fd[_0x305bfd];return _0x25d025;};'use strict';var _=require('lodash');var util=require(_0xd12f('0x0'));var moment=require(_0xd12f('0x1'));var BPromise=require(_0xd12f('0x2'));var rs=require(_0xd12f('0x3'));var fs=require('fs');var Redis=require(_0xd12f('0x4'));var db=require(_0xd12f('0x5'))['db'];var utils=require(_0xd12f('0x6'));var logger=require(_0xd12f('0x7'))(_0xd12f('0x8'));var config=require(_0xd12f('0x9'));var jayson=require(_0xd12f('0xa'));var client=jayson[_0xd12f('0xb')][_0xd12f('0xc')]({'port':0x232a});config[_0xd12f('0xd')]=_['defaults'](config[_0xd12f('0xd')],{'host':_0xd12f('0xe'),'port':0x18eb});var socket=require(_0xd12f('0xf'))(new Redis(config[_0xd12f('0xd')]));require(_0xd12f('0x10'))[_0xd12f('0x11')](socket);function respondWithRpcPromise(_0x4d0f1a,_0x164a3e,_0x3ae090){return new BPromise(function(_0xa4b9f9,_0x3cfbe1){return client[_0xd12f('0x12')](_0x4d0f1a,_0x3ae090)[_0xd12f('0x13')](function(_0x32a5e7){logger[_0xd12f('0x14')](_0xd12f('0x15'),_0x164a3e,_0xd12f('0x16'));logger[_0xd12f('0x17')](_0xd12f('0x18'),_0x164a3e,_0xd12f('0x16'),JSON[_0xd12f('0x19')](_0x32a5e7));if(_0x32a5e7[_0xd12f('0x1a')]){if(_0x32a5e7['error'][_0xd12f('0x1b')]===0x1f4){logger[_0xd12f('0x1a')](_0xd12f('0x15'),_0x164a3e,_0x32a5e7[_0xd12f('0x1a')][_0xd12f('0x1c')]);return _0x3cfbe1(_0x32a5e7[_0xd12f('0x1a')][_0xd12f('0x1c')]);}logger['error'](_0xd12f('0x15'),_0x164a3e,_0x32a5e7['error'][_0xd12f('0x1c')]);return _0xa4b9f9(_0x32a5e7[_0xd12f('0x1a')][_0xd12f('0x1c')]);}else{logger[_0xd12f('0x14')](_0xd12f('0x15'),_0x164a3e,_0xd12f('0x16'));_0xa4b9f9(_0x32a5e7[_0xd12f('0x1d')][_0xd12f('0x1c')]);}})[_0xd12f('0x1e')](function(_0x5eb080){logger['error'](_0xd12f('0x15'),_0x164a3e,_0x5eb080);_0x3cfbe1(_0x5eb080);});});}exports[_0xd12f('0x1f')]=function(_0x988806){var _0x3494ac=this;return new Promise(function(_0x21a401,_0x147dc4){return db[_0xd12f('0x20')][_0xd12f('0x21')](_0x988806[_0xd12f('0x22')],{'raw':_0x988806[_0xd12f('0x23')]?_0x988806[_0xd12f('0x23')][_0xd12f('0x24')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x988806[_0xd12f('0x23')]?_0x988806[_0xd12f('0x23')]['where']||null:null,'attributes':_0x988806['options']?_0x988806[_0xd12f('0x23')]['attributes']||null:null,'limit':_0x988806[_0xd12f('0x23')]?_0x988806[_0xd12f('0x23')][_0xd12f('0x25')]||null:null})['then'](function(_0x151169){logger[_0xd12f('0x14')](_0xd12f('0x1f'),_0x988806);logger[_0xd12f('0x17')]('UpdateChatInteraction',_0x988806,JSON['stringify'](_0x151169));_0x21a401(_0x151169);})[_0xd12f('0x1e')](function(_0x1b3475){logger['error'](_0xd12f('0x1f'),_0x1b3475['message'],_0x988806);_0x147dc4(_0x3494ac[_0xd12f('0x1a')](0x1f4,_0x1b3475['message']));});});};exports[_0xd12f('0x26')]=function(_0x416aaf){return new Promise(function(_0x2fd84c,_0x4dab31){return db['ChatInteraction'][_0xd12f('0x27')]({'where':_0x416aaf[_0xd12f('0x23')]?_0x416aaf[_0xd12f('0x23')][_0xd12f('0x28')]||null:null})['then'](function(_0x1a05c6){if(_0x1a05c6){return _0x1a05c6[_0xd12f('0x29')](_0x416aaf[_0xd12f('0x22')][_0xd12f('0x2a')],_[_0xd12f('0x2b')](_0x416aaf[_0xd12f('0x22')],['ids','id'])||{});}})['spread'](function(_0x200a7f){logger['info'](_0xd12f('0x2c'),_0x416aaf);logger['debug']('AddTags',_0x416aaf,JSON[_0xd12f('0x19')](_0x200a7f));_0x2fd84c(_0x200a7f);})[_0xd12f('0x1e')](function(_0x2c4015){logger['error'](_0xd12f('0x2c'),_0x2c4015[_0xd12f('0x1c')],_0x416aaf);_0x4dab31(_this['error'](0x1f4,_0x2c4015['message']));});});};
\ No newline at end of file
+var _0x843c=['./chatInteraction.socket','register','request','then','ChatInteraction,\x20%s,\x20%s','request\x20sent','debug','ChatInteraction,\x20%s,\x20%s,\x20%s','stringify','code','error','message','info','result','catch','ChatInteraction','update','options','raw','attributes','UpdateChatInteraction','find','where','addTags','ids','omit','spread','AddTags','moment','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','defaults','redis','localhost','socket.io-emitter'];(function(_0x35021f,_0x451349){var _0x1044e9=function(_0x379319){while(--_0x379319){_0x35021f['push'](_0x35021f['shift']());}};_0x1044e9(++_0x451349);}(_0x843c,0xc0));var _0xc843=function(_0x54f3cc,_0x52c872){_0x54f3cc=_0x54f3cc-0x0;var _0x10d3fb=_0x843c[_0x54f3cc];return _0x10d3fb;};'use strict';var _=require('lodash');var util=require('util');var moment=require(_0xc843('0x0'));var BPromise=require('bluebird');var rs=require(_0xc843('0x1'));var fs=require('fs');var Redis=require(_0xc843('0x2'));var db=require(_0xc843('0x3'))['db'];var utils=require(_0xc843('0x4'));var logger=require(_0xc843('0x5'))(_0xc843('0x6'));var config=require(_0xc843('0x7'));var jayson=require(_0xc843('0x8'));var client=jayson['client']['http']({'port':0x232a});config['redis']=_[_0xc843('0x9')](config[_0xc843('0xa')],{'host':_0xc843('0xb'),'port':0x18eb});var socket=require(_0xc843('0xc'))(new Redis(config['redis']));require(_0xc843('0xd'))[_0xc843('0xe')](socket);function respondWithRpcPromise(_0x2e9555,_0x1d9f79,_0x4b3ea7){return new BPromise(function(_0x4f3703,_0x209608){return client[_0xc843('0xf')](_0x2e9555,_0x4b3ea7)[_0xc843('0x10')](function(_0x6ae130){logger['info'](_0xc843('0x11'),_0x1d9f79,_0xc843('0x12'));logger[_0xc843('0x13')](_0xc843('0x14'),_0x1d9f79,_0xc843('0x12'),JSON[_0xc843('0x15')](_0x6ae130));if(_0x6ae130['error']){if(_0x6ae130['error'][_0xc843('0x16')]===0x1f4){logger[_0xc843('0x17')]('ChatInteraction,\x20%s,\x20%s',_0x1d9f79,_0x6ae130[_0xc843('0x17')]['message']);return _0x209608(_0x6ae130[_0xc843('0x17')][_0xc843('0x18')]);}logger[_0xc843('0x17')]('ChatInteraction,\x20%s,\x20%s',_0x1d9f79,_0x6ae130[_0xc843('0x17')][_0xc843('0x18')]);return _0x4f3703(_0x6ae130[_0xc843('0x17')][_0xc843('0x18')]);}else{logger[_0xc843('0x19')](_0xc843('0x11'),_0x1d9f79,_0xc843('0x12'));_0x4f3703(_0x6ae130[_0xc843('0x1a')][_0xc843('0x18')]);}})[_0xc843('0x1b')](function(_0x4aadb7){logger['error'](_0xc843('0x11'),_0x1d9f79,_0x4aadb7);_0x209608(_0x4aadb7);});});}exports['UpdateChatInteraction']=function(_0x3ccf9a){var _0x4cc235=this;return new Promise(function(_0x4307b0,_0x4d7747){return db[_0xc843('0x1c')][_0xc843('0x1d')](_0x3ccf9a['body'],{'raw':_0x3ccf9a[_0xc843('0x1e')]?_0x3ccf9a[_0xc843('0x1e')][_0xc843('0x1f')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x3ccf9a[_0xc843('0x1e')]?_0x3ccf9a['options']['where']||null:null,'attributes':_0x3ccf9a[_0xc843('0x1e')]?_0x3ccf9a['options'][_0xc843('0x20')]||null:null,'limit':_0x3ccf9a['options']?_0x3ccf9a[_0xc843('0x1e')]['limit']||null:null})[_0xc843('0x10')](function(_0x5e12b6){logger[_0xc843('0x19')](_0xc843('0x21'),_0x3ccf9a);logger[_0xc843('0x13')]('UpdateChatInteraction',_0x3ccf9a,JSON['stringify'](_0x5e12b6));_0x4307b0(_0x5e12b6);})[_0xc843('0x1b')](function(_0x4ebb8a){logger[_0xc843('0x17')](_0xc843('0x21'),_0x4ebb8a[_0xc843('0x18')],_0x3ccf9a);_0x4d7747(_0x4cc235['error'](0x1f4,_0x4ebb8a[_0xc843('0x18')]));});});};exports['AddTagsToChatInteraction']=function(_0x30c272){return new Promise(function(_0x2210cd,_0x42015a){return db[_0xc843('0x1c')][_0xc843('0x22')]({'where':_0x30c272[_0xc843('0x1e')]?_0x30c272[_0xc843('0x1e')][_0xc843('0x23')]||null:null})['then'](function(_0x37a384){if(_0x37a384){return _0x37a384[_0xc843('0x24')](_0x30c272['body'][_0xc843('0x25')],_[_0xc843('0x26')](_0x30c272['body'],['ids','id'])||{});}})[_0xc843('0x27')](function(_0x514bd1){logger[_0xc843('0x19')](_0xc843('0x28'),_0x30c272);logger['debug'](_0xc843('0x28'),_0x30c272,JSON[_0xc843('0x15')](_0x514bd1));_0x2210cd(_0x514bd1);})[_0xc843('0x1b')](function(_0x11fa15){logger[_0xc843('0x17')](_0xc843('0x28'),_0x11fa15['message'],_0x30c272);_0x42015a(_this[_0xc843('0x17')](0x1f4,_0x11fa15[_0xc843('0x18')]));});});};
\ No newline at end of file
index 3e51556..b40e250 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb9da=['length','./chatInteraction.events','save','remove','update','emit','register'];(function(_0x8673a4,_0x498e19){var _0x59bef1=function(_0x452cbd){while(--_0x452cbd){_0x8673a4['push'](_0x8673a4['shift']());}};_0x59bef1(++_0x498e19);}(_0xb9da,0x1d6));var _0xab9d=function(_0x35a140,_0x3aeac6){_0x35a140=_0x35a140-0x0;var _0x30ab82=_0xb9da[_0x35a140];return _0x30ab82;};'use strict';var ChatInteractionEvents=require(_0xab9d('0x0'));var events=[_0xab9d('0x1'),_0xab9d('0x2'),_0xab9d('0x3')];function createListener(_0x5bc76e,_0x52f4f7){return function(_0x276b3c){_0x52f4f7[_0xab9d('0x4')](_0x5bc76e,_0x276b3c);};}function removeListener(_0x2ee162,_0x560717){return function(){ChatInteractionEvents['removeListener'](_0x2ee162,_0x560717);};}exports[_0xab9d('0x5')]=function(_0x3fb01a){for(var _0x36926e=0x0,_0x1146fc=events[_0xab9d('0x6')];_0x36926e<_0x1146fc;_0x36926e++){var _0x6caba6=events[_0x36926e];var _0x46fb17=createListener('chatInteraction:'+_0x6caba6,_0x3fb01a);ChatInteractionEvents['on'](_0x6caba6,_0x46fb17);}};
\ No newline at end of file
+var _0x193c=['remove','update','removeListener','register','length','./chatInteraction.events','save'];(function(_0x58a4ac,_0x43fd42){var _0x545810=function(_0x308e65){while(--_0x308e65){_0x58a4ac['push'](_0x58a4ac['shift']());}};_0x545810(++_0x43fd42);}(_0x193c,0x1d3));var _0xc193=function(_0x3ab51d,_0x2fa01d){_0x3ab51d=_0x3ab51d-0x0;var _0x29a04e=_0x193c[_0x3ab51d];return _0x29a04e;};'use strict';var ChatInteractionEvents=require(_0xc193('0x0'));var events=[_0xc193('0x1'),_0xc193('0x2'),_0xc193('0x3')];function createListener(_0x442f7e,_0x562397){return function(_0x54ba13){_0x562397['emit'](_0x442f7e,_0x54ba13);};}function removeListener(_0x49bc59,_0x466508){return function(){ChatInteractionEvents[_0xc193('0x4')](_0x49bc59,_0x466508);};}exports[_0xc193('0x5')]=function(_0x91faef){for(var _0x2f101e=0x0,_0x31cbc0=events[_0xc193('0x6')];_0x2f101e<_0x31cbc0;_0x2f101e++){var _0x139766=events[_0x2f101e];var _0x4bece9=createListener('chatInteraction:'+_0x139766,_0x91faef);ChatInteractionEvents['on'](_0x139766,_0x4bece9);}};
\ No newline at end of file
index 9058935..1e73470 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa0c3=['/:id/my_messages','getMyMessages','/:id/download','post','create','createVidaooSession','diskStorage','join','now','originalname','single','file','addMessage','/:id/tags','tracked','chat','chatinteraction:addtags','addTags','put','update','abandon','/:id/close','delete','destroy','removeTags','exports','multer','util','path','../../components/auth/service','../../components/interaction/service','../../config/environment','./chatInteraction.controller','get','isAuthenticated','index','/describe','describe','/:id','isChatInteractionAuthorized','show','/:id/attachment_download','attachmentDownload','/:id/messages'];(function(_0x26474a,_0x3cfcfd){var _0x32e0e0=function(_0x2b110f){while(--_0x2b110f){_0x26474a['push'](_0x26474a['shift']());}};_0x32e0e0(++_0x3cfcfd);}(_0xa0c3,0xca));var _0x3a0c=function(_0x2951cf,_0x13e64f){_0x2951cf=_0x2951cf-0x0;var _0x5b327b=_0xa0c3[_0x2951cf];return _0x5b327b;};'use strict';var multer=require(_0x3a0c('0x0'));var util=require(_0x3a0c('0x1'));var path=require(_0x3a0c('0x2'));var timeout=require('connect-timeout');var express=require('express');var router=express['Router']();var fs_extra=require('fs-extra');var auth=require(_0x3a0c('0x3'));var interaction=require(_0x3a0c('0x4'));var config=require(_0x3a0c('0x5'));var controller=require(_0x3a0c('0x6'));router[_0x3a0c('0x7')]('/',auth[_0x3a0c('0x8')](),controller[_0x3a0c('0x9')]);router[_0x3a0c('0x7')](_0x3a0c('0xa'),auth[_0x3a0c('0x8')](),controller[_0x3a0c('0xb')]);router['get'](_0x3a0c('0xc'),auth[_0x3a0c('0xd')](),controller[_0x3a0c('0xe')]);router[_0x3a0c('0x7')](_0x3a0c('0xf'),auth[_0x3a0c('0xd')](),controller[_0x3a0c('0x10')]);router['get'](_0x3a0c('0x11'),auth['isAuthenticated'](),controller['getMessages']);router[_0x3a0c('0x7')](_0x3a0c('0x12'),auth[_0x3a0c('0xd')](),controller[_0x3a0c('0x13')]);router[_0x3a0c('0x7')](_0x3a0c('0x14'),auth[_0x3a0c('0x8')](),controller['download']);router[_0x3a0c('0x15')]('/',auth[_0x3a0c('0x8')](),controller[_0x3a0c('0x16')]);router[_0x3a0c('0x15')]('/:id/vidaoo',auth['isAuthenticated'](),controller[_0x3a0c('0x17')]);var upload=multer({'storage':multer[_0x3a0c('0x18')]({'destination':function(_0x2e4be7,_0x562452,_0x1fa603){_0x1fa603(null,path[_0x3a0c('0x19')](config['root'],'server/files/attachments/'));},'filename':function(_0x5e2e91,_0x16e759,_0x413628){_0x413628(null,util['format']('%s-%s',Date[_0x3a0c('0x1a')](),_0x16e759[_0x3a0c('0x1b')]['replace'](/[+@&\/\\#,+()$~%'":*?<>{}\s\\|]/g,'-')));}})});router['post']('/:id/attachment_upload',upload[_0x3a0c('0x1c')](_0x3a0c('0x1d')),controller['attachmentUpload']);router[_0x3a0c('0x15')](_0x3a0c('0x11'),auth[_0x3a0c('0xd')](),controller[_0x3a0c('0x1e')]);router[_0x3a0c('0x15')](_0x3a0c('0x1f'),auth['isAuthenticated'](),interaction[_0x3a0c('0x20')](_0x3a0c('0x21'),_0x3a0c('0x22')),controller[_0x3a0c('0x23')]);router[_0x3a0c('0x24')](_0x3a0c('0xc'),auth[_0x3a0c('0x8')](),interaction[_0x3a0c('0x20')](_0x3a0c('0x21'),'chatinteraction:update'),controller[_0x3a0c('0x25')]);router['put']('/:id/custom_update',controller['customUpdate']);router[_0x3a0c('0x24')]('/:id/abandon',auth['isChatInteractionAuthorized'](),controller[_0x3a0c('0x26')]);router['put'](_0x3a0c('0x27'),controller['close']);router[_0x3a0c('0x28')](_0x3a0c('0xc'),auth[_0x3a0c('0x8')](),interaction[_0x3a0c('0x20')](_0x3a0c('0x21'),'chatinteraction:destroy'),controller[_0x3a0c('0x29')]);router[_0x3a0c('0x28')]('/:id/tags',auth[_0x3a0c('0x8')](),controller[_0x3a0c('0x2a')]);module[_0x3a0c('0x2b')]=router;
\ No newline at end of file
+var _0xb2af=['./chatInteraction.controller','get','isAuthenticated','index','/describe','/:id','isChatInteractionAuthorized','show','/:id/attachment_download','attachmentDownload','getMessages','/:id/my_messages','getMyMessages','/:id/download','download','post','/:id/vidaoo','createVidaooSession','diskStorage','join','root','server/files/attachments/','format','now','originalname','replace','/:id/attachment_upload','single','file','/:id/messages','addMessage','/:id/tags','tracked','chat','chatinteraction:addtags','addTags','put','chatinteraction:update','update','/:id/custom_update','customUpdate','/:id/abandon','abandon','/:id/close','close','delete','removeTags','exports','multer','util','path','connect-timeout','Router','fs-extra','../../components/auth/service','../../config/environment'];(function(_0x3ab9ee,_0x4a74b8){var _0x82ee88=function(_0x6ccc7e){while(--_0x6ccc7e){_0x3ab9ee['push'](_0x3ab9ee['shift']());}};_0x82ee88(++_0x4a74b8);}(_0xb2af,0x110));var _0xfb2a=function(_0x15ef18,_0x466f6b){_0x15ef18=_0x15ef18-0x0;var _0x386204=_0xb2af[_0x15ef18];return _0x386204;};'use strict';var multer=require(_0xfb2a('0x0'));var util=require(_0xfb2a('0x1'));var path=require(_0xfb2a('0x2'));var timeout=require(_0xfb2a('0x3'));var express=require('express');var router=express[_0xfb2a('0x4')]();var fs_extra=require(_0xfb2a('0x5'));var auth=require(_0xfb2a('0x6'));var interaction=require('../../components/interaction/service');var config=require(_0xfb2a('0x7'));var controller=require(_0xfb2a('0x8'));router[_0xfb2a('0x9')]('/',auth[_0xfb2a('0xa')](),controller[_0xfb2a('0xb')]);router[_0xfb2a('0x9')](_0xfb2a('0xc'),auth['isAuthenticated'](),controller['describe']);router[_0xfb2a('0x9')](_0xfb2a('0xd'),auth[_0xfb2a('0xe')](),controller[_0xfb2a('0xf')]);router['get'](_0xfb2a('0x10'),auth['isChatInteractionAuthorized'](),controller[_0xfb2a('0x11')]);router[_0xfb2a('0x9')]('/:id/messages',auth[_0xfb2a('0xa')](),controller[_0xfb2a('0x12')]);router[_0xfb2a('0x9')](_0xfb2a('0x13'),auth[_0xfb2a('0xe')](),controller[_0xfb2a('0x14')]);router[_0xfb2a('0x9')](_0xfb2a('0x15'),auth[_0xfb2a('0xa')](),controller[_0xfb2a('0x16')]);router[_0xfb2a('0x17')]('/',auth[_0xfb2a('0xa')](),controller['create']);router[_0xfb2a('0x17')](_0xfb2a('0x18'),auth[_0xfb2a('0xa')](),controller[_0xfb2a('0x19')]);var upload=multer({'storage':multer[_0xfb2a('0x1a')]({'destination':function(_0x2506a9,_0x2772ad,_0x505d02){_0x505d02(null,path[_0xfb2a('0x1b')](config[_0xfb2a('0x1c')],_0xfb2a('0x1d')));},'filename':function(_0x2aa854,_0x44dbee,_0x14f40c){_0x14f40c(null,util[_0xfb2a('0x1e')]('%s-%s',Date[_0xfb2a('0x1f')](),_0x44dbee[_0xfb2a('0x20')][_0xfb2a('0x21')](/[+@&\/\\#,+()$~%'":*?<>{}\s\\|]/g,'-')));}})});router['post'](_0xfb2a('0x22'),upload[_0xfb2a('0x23')](_0xfb2a('0x24')),controller['attachmentUpload']);router[_0xfb2a('0x17')](_0xfb2a('0x25'),auth[_0xfb2a('0xe')](),controller[_0xfb2a('0x26')]);router[_0xfb2a('0x17')](_0xfb2a('0x27'),auth[_0xfb2a('0xa')](),interaction[_0xfb2a('0x28')](_0xfb2a('0x29'),_0xfb2a('0x2a')),controller[_0xfb2a('0x2b')]);router[_0xfb2a('0x2c')](_0xfb2a('0xd'),auth[_0xfb2a('0xa')](),interaction['tracked'](_0xfb2a('0x29'),_0xfb2a('0x2d')),controller[_0xfb2a('0x2e')]);router[_0xfb2a('0x2c')](_0xfb2a('0x2f'),controller[_0xfb2a('0x30')]);router[_0xfb2a('0x2c')](_0xfb2a('0x31'),auth[_0xfb2a('0xe')](),controller[_0xfb2a('0x32')]);router['put'](_0xfb2a('0x33'),controller[_0xfb2a('0x34')]);router['delete'](_0xfb2a('0xd'),auth[_0xfb2a('0xa')](),interaction[_0xfb2a('0x28')](_0xfb2a('0x29'),'chatinteraction:destroy'),controller['destroy']);router[_0xfb2a('0x35')](_0xfb2a('0x27'),auth[_0xfb2a('0xa')](),controller[_0xfb2a('0x36')]);module[_0xfb2a('0x37')]=router;
\ No newline at end of file
index 6568df4..96d1e76 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xcfff=['BOOLEAN','INTEGER','sequelize','exports','TEXT','medium'];(function(_0x458ce5,_0x4210b2){var _0x5749c0=function(_0x4bb5b8){while(--_0x4bb5b8){_0x458ce5['push'](_0x458ce5['shift']());}};_0x5749c0(++_0x4210b2);}(_0xcfff,0x194));var _0xfcff=function(_0x17d9e3,_0x1f969c){_0x17d9e3=_0x17d9e3-0x0;var _0x14192d=_0xcfff[_0x17d9e3];return _0x14192d;};'use strict';var Sequelize=require(_0xfcff('0x0'));module[_0xfcff('0x1')]={'body':{'type':Sequelize[_0xfcff('0x2')](_0xfcff('0x3')),'allowNull':![]},'read':{'type':Sequelize[_0xfcff('0x4')],'defaultValue':![]},'ChatInternalMessageId':{'type':Sequelize[_0xfcff('0x5')]}};
\ No newline at end of file
+var _0x58b5=['BOOLEAN','INTEGER','sequelize','exports','TEXT'];(function(_0x1bd759,_0x234f1a){var _0x2af580=function(_0x284273){while(--_0x284273){_0x1bd759['push'](_0x1bd759['shift']());}};_0x2af580(++_0x234f1a);}(_0x58b5,0xc0));var _0x558b=function(_0x516e0c,_0x4184f9){_0x516e0c=_0x516e0c-0x0;var _0x353d0b=_0x58b5[_0x516e0c];return _0x353d0b;};'use strict';var Sequelize=require(_0x558b('0x0'));module[_0x558b('0x1')]={'body':{'type':Sequelize[_0x558b('0x2')]('medium'),'allowNull':![]},'read':{'type':Sequelize[_0x558b('0x3')],'defaultValue':![]},'ChatInternalMessageId':{'type':Sequelize[_0x558b('0x4')]}};
\ No newline at end of file
index f248fc8..9be82ea 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4d4d=['find','describe','get','messages','lastMessage','lastMessageAt','format','YYYY-MM-DD\x20HH:mm:ss','getUsers','User','agent','admin','user','fullname','role','userpic','internal','online','lastLoginAt','showWebBar','VoiceQueue','VoiceQueues','Unable\x20to\x20retrieve\x20the\x20current\x20user','Agents','userProfileId','autoAssociation','resourceId','push','createdAt','FromId','read','-createdAt','all','eml-format','zip-dir','fast-json-patch','request-promise','moment','bluebird','util','path','sox','ejs','fs-extra','lodash','squel','jsforce','desk.js','papaparse','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','redis','defaults','localhost','register','sendStatus','status','end','json','offset','undefined','count','Content-Range','reject','save','update','then','destroy','error','stack','name','map','fieldName','type','model','query','intersection','attributes','length','nolimit','sort','where','filters','merge','VIRTUAL','filter','options','ChatInternalMessage','includeAll','include','findAll','catch','params','keys','rawAttributes','fields','create','body'];(function(_0x1d3afb,_0x2661f6){var _0x2e35d9=function(_0x49dfd4){while(--_0x49dfd4){_0x1d3afb['push'](_0x1d3afb['shift']());}};_0x2e35d9(++_0x2661f6);}(_0x4d4d,0x1c1));var _0xd4d4=function(_0x8644c8,_0x13a884){_0x8644c8=_0x8644c8-0x0;var _0x2f2730=_0x4d4d[_0x8644c8];return _0x2f2730;};'use strict';var emlformat=require(_0xd4d4('0x0'));var rimraf=require('rimraf');var zipdir=require(_0xd4d4('0x1'));var jsonpatch=require(_0xd4d4('0x2'));var rp=require(_0xd4d4('0x3'));var moment=require(_0xd4d4('0x4'));var BPromise=require(_0xd4d4('0x5'));var Mustache=require('mustache');var util=require(_0xd4d4('0x6'));var path=require(_0xd4d4('0x7'));var sox=require(_0xd4d4('0x8'));var csv=require('to-csv');var ejs=require(_0xd4d4('0x9'));var fs=require('fs');var fs_extra=require(_0xd4d4('0xa'));var _=require(_0xd4d4('0xb'));var squel=require(_0xd4d4('0xc'));var crypto=require('crypto');var jsforce=require(_0xd4d4('0xd'));var deskjs=require(_0xd4d4('0xe'));var toCsv=require('to-csv');var querystring=require('querystring');var Papa=require(_0xd4d4('0xf'));var Redis=require('ioredis');var authService=require(_0xd4d4('0x10'));var qs=require(_0xd4d4('0x11'));var as=require(_0xd4d4('0x12'));var hardwareService=require('../../config/license/hardware');var logger=require(_0xd4d4('0x13'))(_0xd4d4('0x14'));var utils=require(_0xd4d4('0x15'));var config=require(_0xd4d4('0x16'));var licenseUtil=require(_0xd4d4('0x17'));var db=require('../../mysqldb')['db'];config[_0xd4d4('0x18')]=_[_0xd4d4('0x19')](config[_0xd4d4('0x18')],{'host':_0xd4d4('0x1a'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config['redis']));require('./chatInternalMessage.socket')[_0xd4d4('0x1b')](socket);function respondWithStatusCode(_0x631239,_0x591a30){_0x591a30=_0x591a30||0xcc;return function(_0x10ac4c){if(_0x10ac4c){return _0x631239[_0xd4d4('0x1c')](_0x591a30);}return _0x631239[_0xd4d4('0x1d')](_0x591a30)[_0xd4d4('0x1e')]();};}function respondWithResult(_0xf97e67,_0x4a9f49){_0x4a9f49=_0x4a9f49||0xc8;return function(_0x19e7fa){if(_0x19e7fa){return _0xf97e67[_0xd4d4('0x1d')](_0x4a9f49)[_0xd4d4('0x1f')](_0x19e7fa);}};}function respondWithFilteredResult(_0x3a775f,_0x3cd840){return function(_0x4f026a){if(_0x4f026a){var _0x56fa98=typeof _0x3cd840[_0xd4d4('0x20')]==='undefined'&&typeof _0x3cd840['limit']===_0xd4d4('0x21');var _0x187a19=_0x4f026a[_0xd4d4('0x22')];var _0x231bdb=_0x56fa98?0x0:_0x3cd840[_0xd4d4('0x20')];var _0x528266=_0x56fa98?_0x4f026a[_0xd4d4('0x22')]:_0x3cd840['offset']+_0x3cd840['limit'];var _0x10ee84;if(_0x528266>=_0x187a19){_0x528266=_0x187a19;_0x10ee84=0xc8;}else{_0x10ee84=0xce;}_0x3a775f[_0xd4d4('0x1d')](_0x10ee84);return _0x3a775f['set'](_0xd4d4('0x23'),_0x231bdb+'-'+_0x528266+'/'+_0x187a19)[_0xd4d4('0x1f')](_0x4f026a);}return null;};}function patchUpdates(_0x4b3761){return function(_0x96ba9c){try{jsonpatch['apply'](_0x96ba9c,_0x4b3761,!![]);}catch(_0x39b45e){return BPromise[_0xd4d4('0x24')](_0x39b45e);}return _0x96ba9c[_0xd4d4('0x25')]();};}function saveUpdates(_0x341314,_0x260964){return function(_0x5c02e9){if(_0x5c02e9){return _0x5c02e9[_0xd4d4('0x26')](_0x341314)[_0xd4d4('0x27')](function(_0x3ff8b7){return _0x3ff8b7;});}return null;};}function removeEntity(_0x3ba777,_0x51d229){return function(_0x134e8b){if(_0x134e8b){return _0x134e8b[_0xd4d4('0x28')]()[_0xd4d4('0x27')](function(){_0x3ba777[_0xd4d4('0x1d')](0xcc)['end']();});}};}function handleEntityNotFound(_0x69a870,_0x1aed87){return function(_0x5ceb55){if(!_0x5ceb55){_0x69a870['sendStatus'](0x194);}return _0x5ceb55;};}function handleError(_0x3cc531,_0x692f1c){_0x692f1c=_0x692f1c||0x1f4;return function(_0x464a81){logger[_0xd4d4('0x29')](_0x464a81[_0xd4d4('0x2a')]);if(_0x464a81[_0xd4d4('0x2b')]){delete _0x464a81[_0xd4d4('0x2b')];}_0x3cc531[_0xd4d4('0x1d')](_0x692f1c)['send'](_0x464a81);};}exports['index']=function(_0x5609d4,_0x504fe3){var _0x3233b1={},_0x577ab7={},_0x5e0210={'count':0x0,'rows':[]};var _0x1c9aa5=_[_0xd4d4('0x2c')](db['ChatInternalMessage']['rawAttributes'],function(_0x50c718){return{'name':_0x50c718[_0xd4d4('0x2d')],'type':_0x50c718[_0xd4d4('0x2e')]['key']};});_0x577ab7[_0xd4d4('0x2f')]=_[_0xd4d4('0x2c')](_0x1c9aa5,_0xd4d4('0x2b'));_0x577ab7[_0xd4d4('0x30')]=_['keys'](_0x5609d4['query']);_0x577ab7['filters']=_[_0xd4d4('0x31')](_0x577ab7[_0xd4d4('0x2f')],_0x577ab7[_0xd4d4('0x30')]);_0x3233b1[_0xd4d4('0x32')]=_[_0xd4d4('0x31')](_0x577ab7[_0xd4d4('0x2f')],qs['fields'](_0x5609d4[_0xd4d4('0x30')]['fields']));_0x3233b1[_0xd4d4('0x32')]=_0x3233b1[_0xd4d4('0x32')][_0xd4d4('0x33')]?_0x3233b1[_0xd4d4('0x32')]:_0x577ab7[_0xd4d4('0x2f')];if(!_0x5609d4['query']['hasOwnProperty'](_0xd4d4('0x34'))){_0x3233b1['limit']=qs['limit'](_0x5609d4['query']['limit']);_0x3233b1[_0xd4d4('0x20')]=qs[_0xd4d4('0x20')](_0x5609d4['query'][_0xd4d4('0x20')]);}_0x3233b1['order']=qs[_0xd4d4('0x35')](_0x5609d4[_0xd4d4('0x30')][_0xd4d4('0x35')]);_0x3233b1[_0xd4d4('0x36')]=qs[_0xd4d4('0x37')](_['pick'](_0x5609d4[_0xd4d4('0x30')],_0x577ab7['filters']),_0x1c9aa5);if(_0x5609d4[_0xd4d4('0x30')]['filter']){_0x3233b1['where']=_[_0xd4d4('0x38')](_0x3233b1[_0xd4d4('0x36')],{'$or':_[_0xd4d4('0x2c')](_0x1c9aa5,function(_0x4f9050){if(_0x4f9050[_0xd4d4('0x2e')]!==_0xd4d4('0x39')){var _0x55ea0e={};_0x55ea0e[_0x4f9050[_0xd4d4('0x2b')]]={'$like':'%'+_0x5609d4[_0xd4d4('0x30')][_0xd4d4('0x3a')]+'%'};return _0x55ea0e;}})});}_0x3233b1=_['merge']({},_0x3233b1,_0x5609d4[_0xd4d4('0x3b')]);var _0x1157fa={'where':_0x3233b1[_0xd4d4('0x36')]};return db[_0xd4d4('0x3c')][_0xd4d4('0x22')](_0x1157fa)['then'](function(_0x253c7e){_0x5e0210[_0xd4d4('0x22')]=_0x253c7e;if(_0x5609d4['query'][_0xd4d4('0x3d')]){_0x3233b1[_0xd4d4('0x3e')]=[{'all':!![]}];}return db[_0xd4d4('0x3c')][_0xd4d4('0x3f')](_0x3233b1);})[_0xd4d4('0x27')](function(_0x44d328){_0x5e0210['rows']=_0x44d328;return _0x5e0210;})[_0xd4d4('0x27')](respondWithFilteredResult(_0x504fe3,_0x3233b1))[_0xd4d4('0x40')](handleError(_0x504fe3,null));};exports['show']=function(_0x3f67a8,_0x20ecef){var _0x47b0e8={'raw':!![],'where':{'id':_0x3f67a8[_0xd4d4('0x41')]['id']}},_0x2cf1d7={};_0x2cf1d7[_0xd4d4('0x2f')]=_[_0xd4d4('0x42')](db[_0xd4d4('0x3c')][_0xd4d4('0x43')]);_0x2cf1d7[_0xd4d4('0x30')]=_[_0xd4d4('0x42')](_0x3f67a8['query']);_0x2cf1d7[_0xd4d4('0x37')]=_[_0xd4d4('0x31')](_0x2cf1d7[_0xd4d4('0x2f')],_0x2cf1d7['query']);_0x47b0e8[_0xd4d4('0x32')]=_[_0xd4d4('0x31')](_0x2cf1d7['model'],qs[_0xd4d4('0x44')](_0x3f67a8['query'][_0xd4d4('0x44')]));_0x47b0e8[_0xd4d4('0x32')]=_0x47b0e8[_0xd4d4('0x32')][_0xd4d4('0x33')]?_0x47b0e8['attributes']:_0x2cf1d7[_0xd4d4('0x2f')];if(_0x3f67a8['query'][_0xd4d4('0x3d')]){_0x47b0e8['include']=[{'all':!![]}];}_0x47b0e8=_[_0xd4d4('0x38')]({},_0x47b0e8,_0x3f67a8[_0xd4d4('0x3b')]);return db[_0xd4d4('0x3c')]['find'](_0x47b0e8)[_0xd4d4('0x27')](handleEntityNotFound(_0x20ecef,null))[_0xd4d4('0x27')](respondWithResult(_0x20ecef,null))[_0xd4d4('0x40')](handleError(_0x20ecef,null));};exports[_0xd4d4('0x45')]=function(_0x1d7cb8,_0x2949c9){return db['ChatInternalMessage'][_0xd4d4('0x45')](_0x1d7cb8[_0xd4d4('0x46')],{})[_0xd4d4('0x27')](respondWithResult(_0x2949c9,0xc9))[_0xd4d4('0x40')](handleError(_0x2949c9,null));};exports[_0xd4d4('0x26')]=function(_0x215277,_0x281517){if(_0x215277[_0xd4d4('0x46')]['id']){delete _0x215277[_0xd4d4('0x46')]['id'];}return db[_0xd4d4('0x3c')][_0xd4d4('0x47')]({'where':{'id':_0x215277[_0xd4d4('0x41')]['id']}})[_0xd4d4('0x27')](handleEntityNotFound(_0x281517,null))[_0xd4d4('0x27')](saveUpdates(_0x215277[_0xd4d4('0x46')],null))[_0xd4d4('0x27')](respondWithResult(_0x281517,null))[_0xd4d4('0x40')](handleError(_0x281517,null));};exports[_0xd4d4('0x28')]=function(_0x26c855,_0x49ce58){return db[_0xd4d4('0x3c')][_0xd4d4('0x47')]({'where':{'id':_0x26c855[_0xd4d4('0x41')]['id']}})[_0xd4d4('0x27')](handleEntityNotFound(_0x49ce58,null))[_0xd4d4('0x27')](removeEntity(_0x49ce58,null))['catch'](handleError(_0x49ce58,null));};exports[_0xd4d4('0x48')]=function(_0x901c66,_0x26fbfd){return db['ChatInternalMessage'][_0xd4d4('0x48')]()[_0xd4d4('0x27')](respondWithResult(_0x26fbfd,null))['catch'](handleError(_0x26fbfd,null));};function wrapUser(_0x1f0b1e){return function(_0x2aab88){var _0x2306e5=_0x1f0b1e[_0xd4d4('0x49')]({'plain':!![]});_0x2306e5[_0xd4d4('0x4a')]=[];if(_0x2aab88){_0x2306e5['lastMessageAt']=_0x2aab88['createdAt'];_0x2306e5[_0xd4d4('0x4b')]=_0x2aab88;}else{_0x2306e5[_0xd4d4('0x4c')]=moment(0x0)[_0xd4d4('0x4d')](_0xd4d4('0x4e'));_0x2306e5[_0xd4d4('0x4b')]={};}return _0x2306e5;};}exports[_0xd4d4('0x4f')]=function(_0x171ad9,_0x14c46f,_0x2f7814){var _0x3f8511=[];return db[_0xd4d4('0x50')][_0xd4d4('0x3f')]({'where':{'role':[_0xd4d4('0x51'),_0xd4d4('0x52'),_0xd4d4('0x53')]},'attributes':['id',_0xd4d4('0x54'),'name',_0xd4d4('0x55'),_0xd4d4('0x56'),_0xd4d4('0x57'),_0xd4d4('0x58'),_0xd4d4('0x59'),'allowmessenger',_0xd4d4('0x5a')],'order':qs['sort']('-online'),'include':[{'model':db[_0xd4d4('0x5b')],'as':_0xd4d4('0x5c'),'attributes':['id',_0xd4d4('0x2b'),'type'],'through':{'attributes':[]}}]})[_0xd4d4('0x27')](function(_0x4aa6ba){if(_0x4aa6ba){var _0x4110af=_0x171ad9[_0xd4d4('0x53')][_0xd4d4('0x49')]({'plain':!![]});if(!_0x4110af)throw new Error(_0xd4d4('0x5d'));if(_0x4110af['role']==='user'){return db['UserProfileSection'][_0xd4d4('0x47')]({'where':{'name':_0xd4d4('0x5e'),'userProfileId':_0x4110af[_0xd4d4('0x5f')]},'raw':!![]})[_0xd4d4('0x27')](function(_0x3edd06){if(_0x3edd06){if(_0x3edd06[_0xd4d4('0x60')]===0x0){return db['UserProfileResource'][_0xd4d4('0x3f')]({'where':{'sectionId':_0x3edd06['id']},'raw':!![]})[_0xd4d4('0x27')](function(_0x1ba11c){var _0x3719f9=[];if(_['isEmpty'](_0x1ba11c)){_0x3719f9=_['filter'](_0x4aa6ba,function(_0x35964a){if(_0x35964a[_0xd4d4('0x55')]!=='agent'){return _0x35964a;}});return _0x3719f9;}else{for(var _0x9c163=0x0;_0x9c163<_0x4aa6ba[_0xd4d4('0x33')];_0x9c163++){var _0x341624=_0x4aa6ba[_0x9c163];if(_0x341624[_0xd4d4('0x55')]===_0xd4d4('0x51')){var _0x33202c=_['find'](_0x1ba11c,function(_0xfda9fa){return _0xfda9fa[_0xd4d4('0x61')]===_0x341624['id'];});if(_0x33202c)_0x3719f9[_0xd4d4('0x62')](_0x341624);}else{_0x3719f9[_0xd4d4('0x62')](_0x341624);}}return _0x3719f9;}});}else{return _0x4aa6ba;}}else{var _0xee9b3a=_['filter'](_0x4aa6ba,function(_0x1e7a87){if(_0x1e7a87[_0xd4d4('0x55')]!==_0xd4d4('0x51')){return _0x1e7a87;}});return _0xee9b3a;}});}else{return _0x4aa6ba;}}})[_0xd4d4('0x27')](function(_0x3698e7){var _0x2c8301=[];if(_0x3698e7){_0x3f8511=_0x3698e7;for(var _0x1c1d2f=0x0;_0x1c1d2f<_0x3698e7[_0xd4d4('0x33')];_0x1c1d2f+=0x1){_0x3f8511[_0x1c1d2f][_0xd4d4('0x4a')]=[];_0x2c8301[_0xd4d4('0x62')](db[_0xd4d4('0x3c')][_0xd4d4('0x47')]({'where':{'FromId':[_0x171ad9[_0xd4d4('0x53')]['id'],_0x3698e7[_0x1c1d2f]['id']],'ToId':[_0x171ad9['user']['id'],_0x3698e7[_0x1c1d2f]['id']],'ChatGroupId':null},'attributes':['id',_0xd4d4('0x63'),_0xd4d4('0x64'),'ToId',_0xd4d4('0x65'),_0xd4d4('0x46')],'order':qs[_0xd4d4('0x35')](_0xd4d4('0x66')),'limit':0x1,'offset':0x0,'raw':!![]})[_0xd4d4('0x27')](wrapUser(_0x3698e7[_0x1c1d2f])));}return BPromise[_0xd4d4('0x67')](_0x2c8301);}return[];})[_0xd4d4('0x27')](function(_0x4878ff){return{'rows':_0x4878ff,'count':_0x4878ff[_0xd4d4('0x33')]};})['then'](respondWithResult(_0x14c46f,null))['catch'](handleError(_0x14c46f,null));};
\ No newline at end of file
+var _0x356f=['body','describe','get','createdAt','format','YYYY-MM-DD\x20HH:mm:ss','User','agent','admin','user','fullname','role','userpic','internal','online','lastLoginAt','allowmessenger','-online','VoiceQueue','Unable\x20to\x20retrieve\x20the\x20current\x20user','UserProfileSection','find','Agents','autoAssociation','isEmpty','length','resourceId','push','messages','FromId','ToId','read','-createdAt','all','eml-format','fast-json-patch','moment','bluebird','mustache','util','path','sox','to-csv','fs-extra','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','../../config/license/util','../../mysqldb','redis','socket.io-emitter','./chatInternalMessage.socket','register','sendStatus','status','json','offset','undefined','count','limit','set','Content-Range','apply','reject','save','update','then','destroy','end','error','name','send','index','map','ChatInternalMessage','rawAttributes','fieldName','type','key','query','keys','filters','intersection','model','attributes','fields','nolimit','order','sort','where','pick','filter','merge','VIRTUAL','options','includeAll','findAll','catch','show','params','include','create'];(function(_0x782c04,_0x1ba990){var _0x511687=function(_0x5083c9){while(--_0x5083c9){_0x782c04['push'](_0x782c04['shift']());}};_0x511687(++_0x1ba990);}(_0x356f,0x175));var _0xf356=function(_0x17f37f,_0x29dad6){_0x17f37f=_0x17f37f-0x0;var _0x2b2a99=_0x356f[_0x17f37f];return _0x2b2a99;};'use strict';var emlformat=require(_0xf356('0x0'));var rimraf=require('rimraf');var zipdir=require('zip-dir');var jsonpatch=require(_0xf356('0x1'));var rp=require('request-promise');var moment=require(_0xf356('0x2'));var BPromise=require(_0xf356('0x3'));var Mustache=require(_0xf356('0x4'));var util=require(_0xf356('0x5'));var path=require(_0xf356('0x6'));var sox=require(_0xf356('0x7'));var csv=require(_0xf356('0x8'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0xf356('0x9'));var _=require(_0xf356('0xa'));var squel=require(_0xf356('0xb'));var crypto=require(_0xf356('0xc'));var jsforce=require('jsforce');var deskjs=require(_0xf356('0xd'));var toCsv=require(_0xf356('0x8'));var querystring=require(_0xf356('0xe'));var Papa=require('papaparse');var Redis=require(_0xf356('0xf'));var authService=require(_0xf356('0x10'));var qs=require(_0xf356('0x11'));var as=require(_0xf356('0x12'));var hardwareService=require(_0xf356('0x13'));var logger=require(_0xf356('0x14'))(_0xf356('0x15'));var utils=require(_0xf356('0x16'));var config=require(_0xf356('0x17'));var licenseUtil=require(_0xf356('0x18'));var db=require(_0xf356('0x19'))['db'];config[_0xf356('0x1a')]=_['defaults'](config['redis'],{'host':'localhost','port':0x18eb});var socket=require(_0xf356('0x1b'))(new Redis(config[_0xf356('0x1a')]));require(_0xf356('0x1c'))[_0xf356('0x1d')](socket);function respondWithStatusCode(_0x584cd5,_0x3a88bd){_0x3a88bd=_0x3a88bd||0xcc;return function(_0x19e6db){if(_0x19e6db){return _0x584cd5[_0xf356('0x1e')](_0x3a88bd);}return _0x584cd5[_0xf356('0x1f')](_0x3a88bd)['end']();};}function respondWithResult(_0x334c0a,_0x5180a9){_0x5180a9=_0x5180a9||0xc8;return function(_0x424bcd){if(_0x424bcd){return _0x334c0a[_0xf356('0x1f')](_0x5180a9)[_0xf356('0x20')](_0x424bcd);}};}function respondWithFilteredResult(_0x495cc4,_0xca370a){return function(_0x5983b8){if(_0x5983b8){var _0x2a5714=typeof _0xca370a[_0xf356('0x21')]===_0xf356('0x22')&&typeof _0xca370a['limit']===_0xf356('0x22');var _0x40d95b=_0x5983b8['count'];var _0x3b2a12=_0x2a5714?0x0:_0xca370a[_0xf356('0x21')];var _0x20d534=_0x2a5714?_0x5983b8[_0xf356('0x23')]:_0xca370a['offset']+_0xca370a[_0xf356('0x24')];var _0x21097e;if(_0x20d534>=_0x40d95b){_0x20d534=_0x40d95b;_0x21097e=0xc8;}else{_0x21097e=0xce;}_0x495cc4[_0xf356('0x1f')](_0x21097e);return _0x495cc4[_0xf356('0x25')](_0xf356('0x26'),_0x3b2a12+'-'+_0x20d534+'/'+_0x40d95b)['json'](_0x5983b8);}return null;};}function patchUpdates(_0x5d747c){return function(_0x29c3ce){try{jsonpatch[_0xf356('0x27')](_0x29c3ce,_0x5d747c,!![]);}catch(_0x56c0ec){return BPromise[_0xf356('0x28')](_0x56c0ec);}return _0x29c3ce[_0xf356('0x29')]();};}function saveUpdates(_0x32c2dd,_0x5abbcc){return function(_0x548c41){if(_0x548c41){return _0x548c41[_0xf356('0x2a')](_0x32c2dd)[_0xf356('0x2b')](function(_0x111d1e){return _0x111d1e;});}return null;};}function removeEntity(_0x220094,_0x5e25e2){return function(_0x3c5efe){if(_0x3c5efe){return _0x3c5efe[_0xf356('0x2c')]()[_0xf356('0x2b')](function(){_0x220094[_0xf356('0x1f')](0xcc)[_0xf356('0x2d')]();});}};}function handleEntityNotFound(_0x57ef0e,_0x35efa6){return function(_0x2f7fa0){if(!_0x2f7fa0){_0x57ef0e[_0xf356('0x1e')](0x194);}return _0x2f7fa0;};}function handleError(_0x5a5a49,_0x59e6a3){_0x59e6a3=_0x59e6a3||0x1f4;return function(_0x130708){logger[_0xf356('0x2e')](_0x130708['stack']);if(_0x130708[_0xf356('0x2f')]){delete _0x130708[_0xf356('0x2f')];}_0x5a5a49['status'](_0x59e6a3)[_0xf356('0x30')](_0x130708);};}exports[_0xf356('0x31')]=function(_0x2d3e70,_0x1a3acb){var _0x2b043d={},_0x47cf36={},_0x56f328={'count':0x0,'rows':[]};var _0x20d26e=_[_0xf356('0x32')](db[_0xf356('0x33')][_0xf356('0x34')],function(_0x19ef86){return{'name':_0x19ef86[_0xf356('0x35')],'type':_0x19ef86[_0xf356('0x36')][_0xf356('0x37')]};});_0x47cf36['model']=_[_0xf356('0x32')](_0x20d26e,_0xf356('0x2f'));_0x47cf36[_0xf356('0x38')]=_[_0xf356('0x39')](_0x2d3e70[_0xf356('0x38')]);_0x47cf36[_0xf356('0x3a')]=_[_0xf356('0x3b')](_0x47cf36[_0xf356('0x3c')],_0x47cf36[_0xf356('0x38')]);_0x2b043d[_0xf356('0x3d')]=_[_0xf356('0x3b')](_0x47cf36[_0xf356('0x3c')],qs[_0xf356('0x3e')](_0x2d3e70[_0xf356('0x38')]['fields']));_0x2b043d[_0xf356('0x3d')]=_0x2b043d['attributes']['length']?_0x2b043d[_0xf356('0x3d')]:_0x47cf36[_0xf356('0x3c')];if(!_0x2d3e70[_0xf356('0x38')]['hasOwnProperty'](_0xf356('0x3f'))){_0x2b043d['limit']=qs[_0xf356('0x24')](_0x2d3e70[_0xf356('0x38')][_0xf356('0x24')]);_0x2b043d[_0xf356('0x21')]=qs[_0xf356('0x21')](_0x2d3e70[_0xf356('0x38')]['offset']);}_0x2b043d[_0xf356('0x40')]=qs[_0xf356('0x41')](_0x2d3e70[_0xf356('0x38')][_0xf356('0x41')]);_0x2b043d[_0xf356('0x42')]=qs['filters'](_[_0xf356('0x43')](_0x2d3e70[_0xf356('0x38')],_0x47cf36[_0xf356('0x3a')]),_0x20d26e);if(_0x2d3e70[_0xf356('0x38')][_0xf356('0x44')]){_0x2b043d['where']=_[_0xf356('0x45')](_0x2b043d[_0xf356('0x42')],{'$or':_[_0xf356('0x32')](_0x20d26e,function(_0x3ff937){if(_0x3ff937[_0xf356('0x36')]!==_0xf356('0x46')){var _0x4f1084={};_0x4f1084[_0x3ff937[_0xf356('0x2f')]]={'$like':'%'+_0x2d3e70['query'][_0xf356('0x44')]+'%'};return _0x4f1084;}})});}_0x2b043d=_[_0xf356('0x45')]({},_0x2b043d,_0x2d3e70[_0xf356('0x47')]);var _0x4b4ca3={'where':_0x2b043d[_0xf356('0x42')]};return db[_0xf356('0x33')]['count'](_0x4b4ca3)[_0xf356('0x2b')](function(_0x143e23){_0x56f328[_0xf356('0x23')]=_0x143e23;if(_0x2d3e70[_0xf356('0x38')][_0xf356('0x48')]){_0x2b043d['include']=[{'all':!![]}];}return db[_0xf356('0x33')][_0xf356('0x49')](_0x2b043d);})[_0xf356('0x2b')](function(_0x199e7f){_0x56f328['rows']=_0x199e7f;return _0x56f328;})[_0xf356('0x2b')](respondWithFilteredResult(_0x1a3acb,_0x2b043d))[_0xf356('0x4a')](handleError(_0x1a3acb,null));};exports[_0xf356('0x4b')]=function(_0x38a4df,_0x145f6f){var _0x5befb3={'raw':!![],'where':{'id':_0x38a4df[_0xf356('0x4c')]['id']}},_0x3968cb={};_0x3968cb[_0xf356('0x3c')]=_[_0xf356('0x39')](db[_0xf356('0x33')][_0xf356('0x34')]);_0x3968cb[_0xf356('0x38')]=_[_0xf356('0x39')](_0x38a4df[_0xf356('0x38')]);_0x3968cb[_0xf356('0x3a')]=_[_0xf356('0x3b')](_0x3968cb['model'],_0x3968cb[_0xf356('0x38')]);_0x5befb3[_0xf356('0x3d')]=_['intersection'](_0x3968cb['model'],qs[_0xf356('0x3e')](_0x38a4df['query'][_0xf356('0x3e')]));_0x5befb3['attributes']=_0x5befb3[_0xf356('0x3d')]['length']?_0x5befb3[_0xf356('0x3d')]:_0x3968cb[_0xf356('0x3c')];if(_0x38a4df['query'][_0xf356('0x48')]){_0x5befb3[_0xf356('0x4d')]=[{'all':!![]}];}_0x5befb3=_[_0xf356('0x45')]({},_0x5befb3,_0x38a4df['options']);return db[_0xf356('0x33')]['find'](_0x5befb3)[_0xf356('0x2b')](handleEntityNotFound(_0x145f6f,null))['then'](respondWithResult(_0x145f6f,null))[_0xf356('0x4a')](handleError(_0x145f6f,null));};exports[_0xf356('0x4e')]=function(_0x1c0234,_0x157052){return db[_0xf356('0x33')]['create'](_0x1c0234[_0xf356('0x4f')],{})[_0xf356('0x2b')](respondWithResult(_0x157052,0xc9))[_0xf356('0x4a')](handleError(_0x157052,null));};exports[_0xf356('0x2a')]=function(_0x23beee,_0x5d06f9){if(_0x23beee[_0xf356('0x4f')]['id']){delete _0x23beee[_0xf356('0x4f')]['id'];}return db[_0xf356('0x33')]['find']({'where':{'id':_0x23beee['params']['id']}})[_0xf356('0x2b')](handleEntityNotFound(_0x5d06f9,null))[_0xf356('0x2b')](saveUpdates(_0x23beee[_0xf356('0x4f')],null))[_0xf356('0x2b')](respondWithResult(_0x5d06f9,null))['catch'](handleError(_0x5d06f9,null));};exports['destroy']=function(_0x17b041,_0x860800){return db[_0xf356('0x33')]['find']({'where':{'id':_0x17b041[_0xf356('0x4c')]['id']}})[_0xf356('0x2b')](handleEntityNotFound(_0x860800,null))[_0xf356('0x2b')](removeEntity(_0x860800,null))[_0xf356('0x4a')](handleError(_0x860800,null));};exports[_0xf356('0x50')]=function(_0x1c3feb,_0x156217){return db[_0xf356('0x33')][_0xf356('0x50')]()[_0xf356('0x2b')](respondWithResult(_0x156217,null))['catch'](handleError(_0x156217,null));};function wrapUser(_0x16faad){return function(_0xfc2db8){var _0x4568eb=_0x16faad[_0xf356('0x51')]({'plain':!![]});_0x4568eb['messages']=[];if(_0xfc2db8){_0x4568eb['lastMessageAt']=_0xfc2db8[_0xf356('0x52')];_0x4568eb['lastMessage']=_0xfc2db8;}else{_0x4568eb['lastMessageAt']=moment(0x0)[_0xf356('0x53')](_0xf356('0x54'));_0x4568eb['lastMessage']={};}return _0x4568eb;};}exports['getUsers']=function(_0x82b028,_0x30f136,_0x48fb46){var _0x2a312d=[];return db[_0xf356('0x55')][_0xf356('0x49')]({'where':{'role':[_0xf356('0x56'),_0xf356('0x57'),_0xf356('0x58')]},'attributes':['id',_0xf356('0x59'),'name',_0xf356('0x5a'),_0xf356('0x5b'),_0xf356('0x5c'),_0xf356('0x5d'),_0xf356('0x5e'),_0xf356('0x5f'),'showWebBar'],'order':qs[_0xf356('0x41')](_0xf356('0x60')),'include':[{'model':db[_0xf356('0x61')],'as':'VoiceQueues','attributes':['id',_0xf356('0x2f'),'type'],'through':{'attributes':[]}}]})['then'](function(_0x2e379c){if(_0x2e379c){var _0xb4c59a=_0x82b028['user'][_0xf356('0x51')]({'plain':!![]});if(!_0xb4c59a)throw new Error(_0xf356('0x62'));if(_0xb4c59a[_0xf356('0x5a')]===_0xf356('0x58')){return db[_0xf356('0x63')][_0xf356('0x64')]({'where':{'name':_0xf356('0x65'),'userProfileId':_0xb4c59a['userProfileId']},'raw':!![]})[_0xf356('0x2b')](function(_0x2a4832){if(_0x2a4832){if(_0x2a4832[_0xf356('0x66')]===0x0){return db['UserProfileResource'][_0xf356('0x49')]({'where':{'sectionId':_0x2a4832['id']},'raw':!![]})['then'](function(_0x568342){var _0x590bb3=[];if(_[_0xf356('0x67')](_0x568342)){_0x590bb3=_[_0xf356('0x44')](_0x2e379c,function(_0x5ab90c){if(_0x5ab90c[_0xf356('0x5a')]!=='agent'){return _0x5ab90c;}});return _0x590bb3;}else{for(var _0x158747=0x0;_0x158747<_0x2e379c[_0xf356('0x68')];_0x158747++){var _0x2fcac0=_0x2e379c[_0x158747];if(_0x2fcac0[_0xf356('0x5a')]==='agent'){var _0x21d9dc=_[_0xf356('0x64')](_0x568342,function(_0x41c5b6){return _0x41c5b6[_0xf356('0x69')]===_0x2fcac0['id'];});if(_0x21d9dc)_0x590bb3[_0xf356('0x6a')](_0x2fcac0);}else{_0x590bb3[_0xf356('0x6a')](_0x2fcac0);}}return _0x590bb3;}});}else{return _0x2e379c;}}else{var _0x1bdb8d=_['filter'](_0x2e379c,function(_0x4899fa){if(_0x4899fa['role']!==_0xf356('0x56')){return _0x4899fa;}});return _0x1bdb8d;}});}else{return _0x2e379c;}}})[_0xf356('0x2b')](function(_0x1407fa){var _0x4e635a=[];if(_0x1407fa){_0x2a312d=_0x1407fa;for(var _0x340793=0x0;_0x340793<_0x1407fa['length'];_0x340793+=0x1){_0x2a312d[_0x340793][_0xf356('0x6b')]=[];_0x4e635a[_0xf356('0x6a')](db['ChatInternalMessage'][_0xf356('0x64')]({'where':{'FromId':[_0x82b028[_0xf356('0x58')]['id'],_0x1407fa[_0x340793]['id']],'ToId':[_0x82b028[_0xf356('0x58')]['id'],_0x1407fa[_0x340793]['id']],'ChatGroupId':null},'attributes':['id',_0xf356('0x52'),_0xf356('0x6c'),_0xf356('0x6d'),_0xf356('0x6e'),_0xf356('0x4f')],'order':qs[_0xf356('0x41')](_0xf356('0x6f')),'limit':0x1,'offset':0x0,'raw':!![]})[_0xf356('0x2b')](wrapUser(_0x1407fa[_0x340793])));}return BPromise[_0xf356('0x70')](_0x4e635a);}return[];})[_0xf356('0x2b')](function(_0x3bd680){return{'rows':_0x3bd680,'count':_0x3bd680['length']};})[_0xf356('0x2b')](respondWithResult(_0x30f136,null))[_0xf356('0x4a')](handleError(_0x30f136,null));};
\ No newline at end of file
index bb9a6c6..ae4e9db 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa594=['events','../../mysqldb','ChatInternalMessage','setMaxListeners','save','update','emit','hasOwnProperty','hook'];(function(_0x50e3d4,_0x3edd11){var _0x4de78d=function(_0x685a8b){while(--_0x685a8b){_0x50e3d4['push'](_0x50e3d4['shift']());}};_0x4de78d(++_0x3edd11);}(_0xa594,0x18c));var _0x4a59=function(_0x5d31f3,_0x4239b0){_0x5d31f3=_0x5d31f3-0x0;var _0x1cc88c=_0xa594[_0x5d31f3];return _0x1cc88c;};'use strict';var EventEmitter=require(_0x4a59('0x0'));var ChatInternalMessage=require(_0x4a59('0x1'))['db'][_0x4a59('0x2')];var ChatInternalMessageEvents=new EventEmitter();ChatInternalMessageEvents[_0x4a59('0x3')](0x0);var events={'afterCreate':_0x4a59('0x4'),'afterUpdate':_0x4a59('0x5'),'afterDestroy':'remove'};function emitEvent(_0x48bcec){return function(_0x57d871,_0x192529,_0x4f4636){ChatInternalMessageEvents[_0x4a59('0x6')](_0x48bcec+':'+_0x57d871['id'],_0x57d871);ChatInternalMessageEvents[_0x4a59('0x6')](_0x48bcec,_0x57d871);_0x4f4636(null);};}for(var e in events){if(events[_0x4a59('0x7')](e)){var event=events[e];ChatInternalMessage[_0x4a59('0x8')](e,emitEvent(event));}}module['exports']=ChatInternalMessageEvents;
\ No newline at end of file
+var _0x20d9=['save','update','remove','hasOwnProperty','hook','exports','../../mysqldb','ChatInternalMessage','setMaxListeners'];(function(_0x45185b,_0xb2d4db){var _0x24b578=function(_0x1b023d){while(--_0x1b023d){_0x45185b['push'](_0x45185b['shift']());}};_0x24b578(++_0xb2d4db);}(_0x20d9,0xcc));var _0x920d=function(_0xee700d,_0x5c1eb1){_0xee700d=_0xee700d-0x0;var _0x46a7b7=_0x20d9[_0xee700d];return _0x46a7b7;};'use strict';var EventEmitter=require('events');var ChatInternalMessage=require(_0x920d('0x0'))['db'][_0x920d('0x1')];var ChatInternalMessageEvents=new EventEmitter();ChatInternalMessageEvents[_0x920d('0x2')](0x0);var events={'afterCreate':_0x920d('0x3'),'afterUpdate':_0x920d('0x4'),'afterDestroy':_0x920d('0x5')};function emitEvent(_0x2d41d4){return function(_0xd4aa26,_0x21ee9e,_0x8a1718){ChatInternalMessageEvents['emit'](_0x2d41d4+':'+_0xd4aa26['id'],_0xd4aa26);ChatInternalMessageEvents['emit'](_0x2d41d4,_0xd4aa26);_0x8a1718(null);};}for(var e in events){if(events[_0x920d('0x6')](e)){var event=events[e];ChatInternalMessage[_0x920d('0x7')](e,emitEvent(event));}}module[_0x920d('0x8')]=ChatInternalMessageEvents;
\ No newline at end of file
index c00c279..8b39400 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x143f=['define','ChatInternalMessage','lodash','util','../../config/logger','moment','path','../../config/environment','exports'];(function(_0x5d8fd1,_0xd8fc5d){var _0x587332=function(_0x207222){while(--_0x207222){_0x5d8fd1['push'](_0x5d8fd1['shift']());}};_0x587332(++_0xd8fc5d);}(_0x143f,0x89));var _0xf143=function(_0x12ba63,_0x13b7d1){_0x12ba63=_0x12ba63-0x0;var _0x412a20=_0x143f[_0x12ba63];return _0x412a20;};'use strict';var _=require(_0xf143('0x0'));var util=require(_0xf143('0x1'));var logger=require(_0xf143('0x2'))('api');var moment=require(_0xf143('0x3'));var BPromise=require('bluebird');var rp=require('request-promise');var fs=require('fs');var path=require(_0xf143('0x4'));var rimraf=require('rimraf');var config=require(_0xf143('0x5'));var attributes=require('./chatInternalMessage.attributes');module[_0xf143('0x6')]=function(_0x482bde,_0x59504a){return _0x482bde[_0xf143('0x7')](_0xf143('0x8'),attributes,{'tableName':'chat_internal_messages','paranoid':![],'indexes':[],'timestamps':!![],'charset':'utf8mb4','collate':'utf8mb4_unicode_ci'});};
\ No newline at end of file
+var _0x24aa=['bluebird','request-promise','../../config/environment','./chatInternalMessage.attributes','exports','ChatInternalMessage','utf8mb4','utf8mb4_unicode_ci','lodash','util','../../config/logger','moment'];(function(_0x440485,_0x4fdf81){var _0x56e4a4=function(_0x18afdc){while(--_0x18afdc){_0x440485['push'](_0x440485['shift']());}};_0x56e4a4(++_0x4fdf81);}(_0x24aa,0x1e8));var _0xa24a=function(_0x3449dc,_0x242fa7){_0x3449dc=_0x3449dc-0x0;var _0x80cc87=_0x24aa[_0x3449dc];return _0x80cc87;};'use strict';var _=require(_0xa24a('0x0'));var util=require(_0xa24a('0x1'));var logger=require(_0xa24a('0x2'))('api');var moment=require(_0xa24a('0x3'));var BPromise=require(_0xa24a('0x4'));var rp=require(_0xa24a('0x5'));var fs=require('fs');var path=require('path');var rimraf=require('rimraf');var config=require(_0xa24a('0x6'));var attributes=require(_0xa24a('0x7'));module[_0xa24a('0x8')]=function(_0x4e7be4,_0x11b06f){return _0x4e7be4['define'](_0xa24a('0x9'),attributes,{'tableName':'chat_internal_messages','paranoid':![],'indexes':[],'timestamps':!![],'charset':_0xa24a('0xa'),'collate':_0xa24a('0xb')});};
\ No newline at end of file
index aea42ed..11dc82a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2ba4=['ChatInternalMessage,\x20%s,\x20%s','request\x20sent','ChatInternalMessage,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','client','redis','defaults','localhost','socket.io-emitter','./chatInternalMessage.socket','register','request','then'];(function(_0x455913,_0x2b7a92){var _0x3025b8=function(_0x3d754d){while(--_0x3d754d){_0x455913['push'](_0x455913['shift']());}};_0x3025b8(++_0x2b7a92);}(_0x2ba4,0x148));var _0x42ba=function(_0x26d71f,_0x33c95e){_0x26d71f=_0x26d71f-0x0;var _0x5620cd=_0x2ba4[_0x26d71f];return _0x5620cd;};'use strict';var _=require(_0x42ba('0x0'));var util=require(_0x42ba('0x1'));var moment=require(_0x42ba('0x2'));var BPromise=require(_0x42ba('0x3'));var rs=require(_0x42ba('0x4'));var fs=require('fs');var Redis=require(_0x42ba('0x5'));var db=require(_0x42ba('0x6'))['db'];var utils=require(_0x42ba('0x7'));var logger=require(_0x42ba('0x8'))(_0x42ba('0x9'));var config=require(_0x42ba('0xa'));var jayson=require('jayson/promise');var client=jayson[_0x42ba('0xb')]['http']({'port':0x232a});config[_0x42ba('0xc')]=_[_0x42ba('0xd')](config[_0x42ba('0xc')],{'host':_0x42ba('0xe'),'port':0x18eb});var socket=require(_0x42ba('0xf'))(new Redis(config[_0x42ba('0xc')]));require(_0x42ba('0x10'))[_0x42ba('0x11')](socket);function respondWithRpcPromise(_0x3d1888,_0x1167aa,_0x246c1b){return new BPromise(function(_0x122c1a,_0x5ed601){return client[_0x42ba('0x12')](_0x3d1888,_0x246c1b)[_0x42ba('0x13')](function(_0x2ef985){logger['info'](_0x42ba('0x14'),_0x1167aa,_0x42ba('0x15'));logger['debug'](_0x42ba('0x16'),_0x1167aa,_0x42ba('0x15'),JSON[_0x42ba('0x17')](_0x2ef985));if(_0x2ef985[_0x42ba('0x18')]){if(_0x2ef985[_0x42ba('0x18')][_0x42ba('0x19')]===0x1f4){logger[_0x42ba('0x18')](_0x42ba('0x14'),_0x1167aa,_0x2ef985['error'][_0x42ba('0x1a')]);return _0x5ed601(_0x2ef985['error'][_0x42ba('0x1a')]);}logger[_0x42ba('0x18')](_0x42ba('0x14'),_0x1167aa,_0x2ef985[_0x42ba('0x18')][_0x42ba('0x1a')]);return _0x122c1a(_0x2ef985['error'][_0x42ba('0x1a')]);}else{logger['info'](_0x42ba('0x14'),_0x1167aa,_0x42ba('0x15'));_0x122c1a(_0x2ef985[_0x42ba('0x1b')][_0x42ba('0x1a')]);}})[_0x42ba('0x1c')](function(_0x5eee0e){logger[_0x42ba('0x18')](_0x42ba('0x14'),_0x1167aa,_0x5eee0e);_0x5ed601(_0x5eee0e);});});}
\ No newline at end of file
+var _0x5502=['error','code','message','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','jayson/promise','http','redis','defaults','localhost','socket.io-emitter','./chatInternalMessage.socket','register','request','ChatInternalMessage,\x20%s,\x20%s','request\x20sent','stringify'];(function(_0x3d4313,_0x1e9ae1){var _0x5a2f2e=function(_0x222407){while(--_0x222407){_0x3d4313['push'](_0x3d4313['shift']());}};_0x5a2f2e(++_0x1e9ae1);}(_0x5502,0x10b));var _0x2550=function(_0x3d2781,_0x4c8c02){_0x3d2781=_0x3d2781-0x0;var _0x3d71a8=_0x5502[_0x3d2781];return _0x3d71a8;};'use strict';var _=require(_0x2550('0x0'));var util=require(_0x2550('0x1'));var moment=require(_0x2550('0x2'));var BPromise=require(_0x2550('0x3'));var rs=require(_0x2550('0x4'));var fs=require('fs');var Redis=require(_0x2550('0x5'));var db=require(_0x2550('0x6'))['db'];var utils=require(_0x2550('0x7'));var logger=require(_0x2550('0x8'))('rpc');var config=require('../../config/environment');var jayson=require(_0x2550('0x9'));var client=jayson['client'][_0x2550('0xa')]({'port':0x232a});config[_0x2550('0xb')]=_[_0x2550('0xc')](config[_0x2550('0xb')],{'host':_0x2550('0xd'),'port':0x18eb});var socket=require(_0x2550('0xe'))(new Redis(config['redis']));require(_0x2550('0xf'))[_0x2550('0x10')](socket);function respondWithRpcPromise(_0x5cd9b9,_0x38e0a6,_0x2b69d1){return new BPromise(function(_0x175f90,_0x5a90e5){return client[_0x2550('0x11')](_0x5cd9b9,_0x2b69d1)['then'](function(_0x53e570){logger['info'](_0x2550('0x12'),_0x38e0a6,'request\x20sent');logger['debug']('ChatInternalMessage,\x20%s,\x20%s,\x20%s',_0x38e0a6,_0x2550('0x13'),JSON[_0x2550('0x14')](_0x53e570));if(_0x53e570[_0x2550('0x15')]){if(_0x53e570[_0x2550('0x15')][_0x2550('0x16')]===0x1f4){logger[_0x2550('0x15')](_0x2550('0x12'),_0x38e0a6,_0x53e570[_0x2550('0x15')][_0x2550('0x17')]);return _0x5a90e5(_0x53e570['error']['message']);}logger[_0x2550('0x15')](_0x2550('0x12'),_0x38e0a6,_0x53e570[_0x2550('0x15')][_0x2550('0x17')]);return _0x175f90(_0x53e570[_0x2550('0x15')][_0x2550('0x17')]);}else{logger['info']('ChatInternalMessage,\x20%s,\x20%s',_0x38e0a6,_0x2550('0x13'));_0x175f90(_0x53e570['result'][_0x2550('0x17')]);}})['catch'](function(_0x51dd8f){logger[_0x2550('0x15')](_0x2550('0x12'),_0x38e0a6,_0x51dd8f);_0x5a90e5(_0x51dd8f);});});}
\ No newline at end of file
index 59cb5bf..b63e2c0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5da6=['emit','removeListener','length','./chatInternalMessage.events','save','remove','update'];(function(_0x55784c,_0x584b82){var _0x23cd92=function(_0x6e8879){while(--_0x6e8879){_0x55784c['push'](_0x55784c['shift']());}};_0x23cd92(++_0x584b82);}(_0x5da6,0xea));var _0x65da=function(_0x57f785,_0x1b4f18){_0x57f785=_0x57f785-0x0;var _0x5a5eb4=_0x5da6[_0x57f785];return _0x5a5eb4;};'use strict';var ChatInternalMessageEvents=require(_0x65da('0x0'));var events=[_0x65da('0x1'),_0x65da('0x2'),_0x65da('0x3')];function createListener(_0x2cd811,_0x4ff984){return function(_0x102979){_0x4ff984[_0x65da('0x4')](_0x2cd811,_0x102979);};}function removeListener(_0x211332,_0x23cca3){return function(){ChatInternalMessageEvents[_0x65da('0x5')](_0x211332,_0x23cca3);};}exports['register']=function(_0x546b5f){for(var _0xc8bff9=0x0,_0x53869f=events[_0x65da('0x6')];_0xc8bff9<_0x53869f;_0xc8bff9++){var _0x334290=events[_0xc8bff9];var _0x5baea6=createListener('chatInternalMessage:'+_0x334290,_0x546b5f);ChatInternalMessageEvents['on'](_0x334290,_0x5baea6);}};
\ No newline at end of file
+var _0x3b1c=['removeListener','register','length','./chatInternalMessage.events','save','remove','update','emit'];(function(_0x4077f,_0x307a47){var _0xbeb552=function(_0x106e13){while(--_0x106e13){_0x4077f['push'](_0x4077f['shift']());}};_0xbeb552(++_0x307a47);}(_0x3b1c,0x12b));var _0xc3b1=function(_0x40be4a,_0x42747e){_0x40be4a=_0x40be4a-0x0;var _0x5e3a38=_0x3b1c[_0x40be4a];return _0x5e3a38;};'use strict';var ChatInternalMessageEvents=require(_0xc3b1('0x0'));var events=[_0xc3b1('0x1'),_0xc3b1('0x2'),_0xc3b1('0x3')];function createListener(_0x40babe,_0x45ab5d){return function(_0x34bfc7){_0x45ab5d[_0xc3b1('0x4')](_0x40babe,_0x34bfc7);};}function removeListener(_0x5423b9,_0x4ff90c){return function(){ChatInternalMessageEvents[_0xc3b1('0x5')](_0x5423b9,_0x4ff90c);};}exports[_0xc3b1('0x6')]=function(_0xe9d620){for(var _0x3618f1=0x0,_0x5e47e6=events[_0xc3b1('0x7')];_0x3618f1<_0x5e47e6;_0x3618f1++){var _0x5acb96=events[_0x3618f1];var _0x5dc50a=createListener('chatInternalMessage:'+_0x5acb96,_0xe9d620);ChatInternalMessageEvents['on'](_0x5acb96,_0x5dc50a);}};
\ No newline at end of file
index b364436..ebd6840 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x483e=['destroy','exports','multer','util','path','connect-timeout','express','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','get','isAuthenticated','index','describe','show','post','create','put','/:id','update','delete'];(function(_0x43be4d,_0x374dc2){var _0xc6b0cf=function(_0x2c5a83){while(--_0x2c5a83){_0x43be4d['push'](_0x43be4d['shift']());}};_0xc6b0cf(++_0x374dc2);}(_0x483e,0x162));var _0xe483=function(_0x114b7c,_0xc4b93b){_0x114b7c=_0x114b7c-0x0;var _0x47185f=_0x483e[_0x114b7c];return _0x47185f;};'use strict';var multer=require(_0xe483('0x0'));var util=require(_0xe483('0x1'));var path=require(_0xe483('0x2'));var timeout=require(_0xe483('0x3'));var express=require(_0xe483('0x4'));var router=express['Router']();var fs_extra=require(_0xe483('0x5'));var auth=require(_0xe483('0x6'));var interaction=require(_0xe483('0x7'));var config=require(_0xe483('0x8'));var controller=require('./chatInternalMessage.controller');router[_0xe483('0x9')]('/',auth[_0xe483('0xa')](),controller[_0xe483('0xb')]);router[_0xe483('0x9')]('/describe',auth[_0xe483('0xa')](),controller[_0xe483('0xc')]);router['get']('/users',auth[_0xe483('0xa')](),controller['getUsers']);router['get']('/:id',auth[_0xe483('0xa')](),controller[_0xe483('0xd')]);router[_0xe483('0xe')]('/',auth[_0xe483('0xa')](),controller[_0xe483('0xf')]);router[_0xe483('0x10')](_0xe483('0x11'),controller[_0xe483('0x12')]);router[_0xe483('0x13')](_0xe483('0x11'),auth[_0xe483('0xa')](),controller[_0xe483('0x14')]);module[_0xe483('0x15')]=router;
\ No newline at end of file
+var _0x4fb2=['/describe','isAuthenticated','describe','/users','getUsers','/:id','create','put','update','delete','destroy','multer','util','path','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./chatInternalMessage.controller','get','index'];(function(_0x48aa65,_0x2ff462){var _0x354849=function(_0x5e08e8){while(--_0x5e08e8){_0x48aa65['push'](_0x48aa65['shift']());}};_0x354849(++_0x2ff462);}(_0x4fb2,0x17b));var _0x24fb=function(_0x379d12,_0x3737d6){_0x379d12=_0x379d12-0x0;var _0x3073e3=_0x4fb2[_0x379d12];return _0x3073e3;};'use strict';var multer=require(_0x24fb('0x0'));var util=require(_0x24fb('0x1'));var path=require(_0x24fb('0x2'));var timeout=require('connect-timeout');var express=require(_0x24fb('0x3'));var router=express[_0x24fb('0x4')]();var fs_extra=require(_0x24fb('0x5'));var auth=require(_0x24fb('0x6'));var interaction=require(_0x24fb('0x7'));var config=require(_0x24fb('0x8'));var controller=require(_0x24fb('0x9'));router[_0x24fb('0xa')]('/',auth['isAuthenticated'](),controller[_0x24fb('0xb')]);router[_0x24fb('0xa')](_0x24fb('0xc'),auth[_0x24fb('0xd')](),controller[_0x24fb('0xe')]);router[_0x24fb('0xa')](_0x24fb('0xf'),auth[_0x24fb('0xd')](),controller[_0x24fb('0x10')]);router[_0x24fb('0xa')](_0x24fb('0x11'),auth[_0x24fb('0xd')](),controller['show']);router['post']('/',auth[_0x24fb('0xd')](),controller[_0x24fb('0x12')]);router[_0x24fb('0x13')](_0x24fb('0x11'),controller[_0x24fb('0x14')]);router[_0x24fb('0x15')]('/:id',auth[_0x24fb('0xd')](),controller[_0x24fb('0x16')]);module['exports']=router;
\ No newline at end of file
index d5ff73e..c420744 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf846=['medium','BOOLEAN','ENUM','out','STRING','sequelize','exports','TEXT'];(function(_0x25a471,_0x33cb10){var _0x2e59a0=function(_0x16a7fe){while(--_0x16a7fe){_0x25a471['push'](_0x25a471['shift']());}};_0x2e59a0(++_0x33cb10);}(_0xf846,0x85));var _0x6f84=function(_0xba4c7d,_0x1eaec5){_0xba4c7d=_0xba4c7d-0x0;var _0x5dda91=_0xf846[_0xba4c7d];return _0x5dda91;};'use strict';var Sequelize=require(_0x6f84('0x0'));module[_0x6f84('0x1')]={'body':{'type':Sequelize[_0x6f84('0x2')](_0x6f84('0x3')),'allowNull':![]},'read':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'secret':{'type':Sequelize[_0x6f84('0x4')],'defaultValue':![]},'direction':{'type':Sequelize[_0x6f84('0x5')]('in',_0x6f84('0x6')),'defaultValue':_0x6f84('0x6'),'allowNull':![]},'readAt':{'type':Sequelize['DATE']},'providerName':{'type':Sequelize[_0x6f84('0x7')]},'providerResponse':{'type':Sequelize[_0x6f84('0x2')]}};
\ No newline at end of file
+var _0xe1e3=['DATE','STRING','TEXT','sequelize','exports','medium','ENUM','out'];(function(_0x3d5ffe,_0x497344){var _0x19dc7d=function(_0x42695c){while(--_0x42695c){_0x3d5ffe['push'](_0x3d5ffe['shift']());}};_0x19dc7d(++_0x497344);}(_0xe1e3,0x1bb));var _0x3e1e=function(_0x34f39c,_0x5c2f79){_0x34f39c=_0x34f39c-0x0;var _0x51df8a=_0xe1e3[_0x34f39c];return _0x51df8a;};'use strict';var Sequelize=require(_0x3e1e('0x0'));module[_0x3e1e('0x1')]={'body':{'type':Sequelize['TEXT'](_0x3e1e('0x2')),'allowNull':![]},'read':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'secret':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'direction':{'type':Sequelize[_0x3e1e('0x3')]('in','out'),'defaultValue':_0x3e1e('0x4'),'allowNull':![]},'readAt':{'type':Sequelize[_0x3e1e('0x5')]},'providerName':{'type':Sequelize[_0x3e1e('0x6')]},'providerResponse':{'type':Sequelize[_0x3e1e('0x7')]}};
\ No newline at end of file
index af8beb4..e31b5cd 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8239=['ChatInteraction','ChatInteractionId','[CHATMESSAGE:REJECT]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s','RejectMessage','rejectMessage','sequelize','rejectmessage','eml-format','fast-json-patch','moment','mustache','util','path','to-csv','ejs','fs-extra','lodash','squel','jsforce','querystring','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/environment','../../config/license/util','../../mysqldb','redis','defaults','localhost','socket.io-emitter','register','jayson/promise','client','http','then','ChatMessage,\x20%s,\x20%s','ChatMessage,\x20%s,\x20%s,\x20%s','stringify','error','code','message','info','request\x20sent','end','status','json','offset','undefined','limit','count','Content-Range','apply','update','destroy','sendStatus','stack','name','send','index','map','ChatMessage','rawAttributes','type','key','keys','filters','intersection','model','query','attributes','fields','hasOwnProperty','nolimit','order','sort','where','filter','merge','VIRTUAL','options','includeAll','include','findAll','catch','params','find','create','body','describe','chat-interactions','accept','chat','read','readAt','YYYY-MM-DD\x20HH:mm:ss','UserId','user','agent','isNil','read1stAt','format','get','[CHATMESSAGE:ACCEPT]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s','role','interaction','null','AcceptMessage','acceptMessage','SELECT\x20*\x20FROM\x20cm_contacts\x20WHERE\x20id\x20=\x20','ContactId','Sequelize','QueryTypes','SELECT','contact','fullname','email','internal','manual','interface','SIP/%s','channel','motionChannel','event','EventManager','acceptmessage','parse','formData','../../config/logger','reject'];(function(_0x52da7f,_0x5957bc){var _0x5015c5=function(_0x58767d){while(--_0x58767d){_0x52da7f['push'](_0x52da7f['shift']());}};_0x5015c5(++_0x5957bc);}(_0x8239,0x8a));var _0x9823=function(_0x5ca15b,_0x4f079f){_0x5ca15b=_0x5ca15b-0x0;var _0x119d60=_0x8239[_0x5ca15b];return _0x119d60;};'use strict';var emlformat=require(_0x9823('0x0'));var rimraf=require('rimraf');var zipdir=require('zip-dir');var jsonpatch=require(_0x9823('0x1'));var rp=require('request-promise');var moment=require(_0x9823('0x2'));var BPromise=require('bluebird');var Mustache=require(_0x9823('0x3'));var util=require(_0x9823('0x4'));var path=require(_0x9823('0x5'));var sox=require('sox');var csv=require(_0x9823('0x6'));var ejs=require(_0x9823('0x7'));var fs=require('fs');var fs_extra=require(_0x9823('0x8'));var _=require(_0x9823('0x9'));var squel=require(_0x9823('0xa'));var crypto=require('crypto');var jsforce=require(_0x9823('0xb'));var deskjs=require('desk.js');var toCsv=require(_0x9823('0x6'));var querystring=require(_0x9823('0xc'));var Papa=require('papaparse');var Redis=require(_0x9823('0xd'));var authService=require('../../components/auth/service');var qs=require(_0x9823('0xe'));var as=require(_0x9823('0xf'));var hardwareService=require(_0x9823('0x10'));var logger=require('../../config/logger')(_0x9823('0x11'));var utils=require('../../config/utils');var config=require(_0x9823('0x12'));var licenseUtil=require(_0x9823('0x13'));var db=require(_0x9823('0x14'))['db'];config[_0x9823('0x15')]=_[_0x9823('0x16')](config['redis'],{'host':_0x9823('0x17'),'port':0x18eb});var socket=require(_0x9823('0x18'))(new Redis(config[_0x9823('0x15')]));require('./chatMessage.socket')[_0x9823('0x19')](socket);var jayson=require(_0x9823('0x1a'));var client=jayson[_0x9823('0x1b')][_0x9823('0x1c')]({'port':0x232c});var client9002=jayson[_0x9823('0x1b')][_0x9823('0x1c')]({'port':0x232a});function respondWithRpcPromise(_0x1e7f67,_0x4aeafb,_0x5e4a02,_0xbe387d){return new BPromise(function(_0x412064,_0x288de1){var _0x58e610=_0xbe387d||client;return _0x58e610['request'](_0x1e7f67,_0x5e4a02)[_0x9823('0x1d')](function(_0x3beb16){logger['info'](_0x9823('0x1e'),_0x4aeafb,'request\x20sent');logger['debug'](_0x9823('0x1f'),_0x4aeafb,'request\x20sent',JSON[_0x9823('0x20')](_0x3beb16));if(_0x3beb16[_0x9823('0x21')]){if(_0x3beb16[_0x9823('0x21')][_0x9823('0x22')]===0x1f4){logger[_0x9823('0x21')](_0x9823('0x1e'),_0x4aeafb,_0x3beb16[_0x9823('0x21')][_0x9823('0x23')]);return _0x288de1(_0x3beb16[_0x9823('0x21')][_0x9823('0x23')]);}logger[_0x9823('0x21')](_0x9823('0x1e'),_0x4aeafb,_0x3beb16[_0x9823('0x21')][_0x9823('0x23')]);return _0x412064(_0x3beb16[_0x9823('0x21')][_0x9823('0x23')]);}else{logger[_0x9823('0x24')]('ChatMessage,\x20%s,\x20%s',_0x4aeafb,_0x9823('0x25'));_0x412064(_0x3beb16['result']['message']);}})['catch'](function(_0x115185){logger[_0x9823('0x21')]('ChatMessage,\x20%s,\x20%s',_0x4aeafb,_0x115185);_0x288de1(_0x115185);});});}function respondWithStatusCode(_0x269952,_0x4830c6){_0x4830c6=_0x4830c6||0xcc;return function(_0x1a4ab9){if(_0x1a4ab9){return _0x269952['sendStatus'](_0x4830c6);}return _0x269952['status'](_0x4830c6)[_0x9823('0x26')]();};}function respondWithResult(_0x42c6cc,_0x5b1aaf){_0x5b1aaf=_0x5b1aaf||0xc8;return function(_0x34bf9b){if(_0x34bf9b){return _0x42c6cc[_0x9823('0x27')](_0x5b1aaf)[_0x9823('0x28')](_0x34bf9b);}};}function respondWithFilteredResult(_0x59d720,_0x5f2dac){return function(_0x4c25f3){if(_0x4c25f3){var _0x250da2=typeof _0x5f2dac[_0x9823('0x29')]===_0x9823('0x2a')&&typeof _0x5f2dac[_0x9823('0x2b')]===_0x9823('0x2a');var _0x5b88c8=_0x4c25f3['count'];var _0x1f3233=_0x250da2?0x0:_0x5f2dac[_0x9823('0x29')];var _0x293724=_0x250da2?_0x4c25f3[_0x9823('0x2c')]:_0x5f2dac['offset']+_0x5f2dac[_0x9823('0x2b')];var _0x2e33d9;if(_0x293724>=_0x5b88c8){_0x293724=_0x5b88c8;_0x2e33d9=0xc8;}else{_0x2e33d9=0xce;}_0x59d720[_0x9823('0x27')](_0x2e33d9);return _0x59d720['set'](_0x9823('0x2d'),_0x1f3233+'-'+_0x293724+'/'+_0x5b88c8)[_0x9823('0x28')](_0x4c25f3);}return null;};}function patchUpdates(_0x142760){return function(_0x40f3c6){try{jsonpatch[_0x9823('0x2e')](_0x40f3c6,_0x142760,!![]);}catch(_0x2a0f11){return BPromise['reject'](_0x2a0f11);}return _0x40f3c6['save']();};}function saveUpdates(_0x125a79,_0x569b2f){return function(_0x2f2ba4){if(_0x2f2ba4){return _0x2f2ba4[_0x9823('0x2f')](_0x125a79)[_0x9823('0x1d')](function(_0x56e57b){return _0x56e57b;});}return null;};}function removeEntity(_0x562739,_0x139e21){return function(_0x5b2d76){if(_0x5b2d76){return _0x5b2d76[_0x9823('0x30')]()[_0x9823('0x1d')](function(){_0x562739['status'](0xcc)['end']();});}};}function handleEntityNotFound(_0x11ae82,_0x3b59c1){return function(_0x3142a2){if(!_0x3142a2){_0x11ae82[_0x9823('0x31')](0x194);}return _0x3142a2;};}function handleError(_0x58150f,_0x2f6e7f){_0x2f6e7f=_0x2f6e7f||0x1f4;return function(_0x5038b7){logger[_0x9823('0x21')](_0x5038b7[_0x9823('0x32')]);if(_0x5038b7[_0x9823('0x33')]){delete _0x5038b7['name'];}_0x58150f[_0x9823('0x27')](_0x2f6e7f)[_0x9823('0x34')](_0x5038b7);};}exports[_0x9823('0x35')]=function(_0x51608a,_0x128a28){var _0x573eaa={},_0xf1a8be={},_0x46f947={'count':0x0,'rows':[]};var _0x2f5ac7=_[_0x9823('0x36')](db[_0x9823('0x37')][_0x9823('0x38')],function(_0x1c83e6){return{'name':_0x1c83e6['fieldName'],'type':_0x1c83e6[_0x9823('0x39')][_0x9823('0x3a')]};});_0xf1a8be['model']=_['map'](_0x2f5ac7,_0x9823('0x33'));_0xf1a8be['query']=_[_0x9823('0x3b')](_0x51608a['query']);_0xf1a8be[_0x9823('0x3c')]=_[_0x9823('0x3d')](_0xf1a8be[_0x9823('0x3e')],_0xf1a8be[_0x9823('0x3f')]);_0x573eaa[_0x9823('0x40')]=_[_0x9823('0x3d')](_0xf1a8be[_0x9823('0x3e')],qs[_0x9823('0x41')](_0x51608a[_0x9823('0x3f')][_0x9823('0x41')]));_0x573eaa[_0x9823('0x40')]=_0x573eaa[_0x9823('0x40')]['length']?_0x573eaa[_0x9823('0x40')]:_0xf1a8be['model'];if(!_0x51608a['query'][_0x9823('0x42')](_0x9823('0x43'))){_0x573eaa['limit']=qs[_0x9823('0x2b')](_0x51608a[_0x9823('0x3f')][_0x9823('0x2b')]);_0x573eaa[_0x9823('0x29')]=qs[_0x9823('0x29')](_0x51608a['query'][_0x9823('0x29')]);}_0x573eaa[_0x9823('0x44')]=qs['sort'](_0x51608a[_0x9823('0x3f')][_0x9823('0x45')]);_0x573eaa[_0x9823('0x46')]=qs['filters'](_['pick'](_0x51608a[_0x9823('0x3f')],_0xf1a8be[_0x9823('0x3c')]),_0x2f5ac7);if(_0x51608a[_0x9823('0x3f')][_0x9823('0x47')]){_0x573eaa[_0x9823('0x46')]=_[_0x9823('0x48')](_0x573eaa[_0x9823('0x46')],{'$or':_[_0x9823('0x36')](_0x2f5ac7,function(_0xb8725b){if(_0xb8725b[_0x9823('0x39')]!==_0x9823('0x49')){var _0x42281a={};_0x42281a[_0xb8725b[_0x9823('0x33')]]={'$like':'%'+_0x51608a[_0x9823('0x3f')][_0x9823('0x47')]+'%'};return _0x42281a;}})});}_0x573eaa=_[_0x9823('0x48')]({},_0x573eaa,_0x51608a[_0x9823('0x4a')]);var _0x44c536={'where':_0x573eaa[_0x9823('0x46')]};return db[_0x9823('0x37')]['count'](_0x44c536)[_0x9823('0x1d')](function(_0x3930db){_0x46f947[_0x9823('0x2c')]=_0x3930db;if(_0x51608a[_0x9823('0x3f')][_0x9823('0x4b')]){_0x573eaa[_0x9823('0x4c')]=[{'all':!![]}];}return db[_0x9823('0x37')][_0x9823('0x4d')](_0x573eaa);})[_0x9823('0x1d')](function(_0x5089c0){_0x46f947['rows']=_0x5089c0;return _0x46f947;})['then'](respondWithFilteredResult(_0x128a28,_0x573eaa))[_0x9823('0x4e')](handleError(_0x128a28,null));};exports['show']=function(_0xb7d293,_0x3a4885){var _0x1bb040={'raw':!![],'where':{'id':_0xb7d293[_0x9823('0x4f')]['id']}},_0x2facd4={};_0x2facd4[_0x9823('0x3e')]=_[_0x9823('0x3b')](db['ChatMessage'][_0x9823('0x38')]);_0x2facd4[_0x9823('0x3f')]=_['keys'](_0xb7d293['query']);_0x2facd4['filters']=_[_0x9823('0x3d')](_0x2facd4[_0x9823('0x3e')],_0x2facd4['query']);_0x1bb040[_0x9823('0x40')]=_[_0x9823('0x3d')](_0x2facd4[_0x9823('0x3e')],qs['fields'](_0xb7d293[_0x9823('0x3f')][_0x9823('0x41')]));_0x1bb040['attributes']=_0x1bb040[_0x9823('0x40')]['length']?_0x1bb040['attributes']:_0x2facd4[_0x9823('0x3e')];if(_0xb7d293[_0x9823('0x3f')]['includeAll']){_0x1bb040[_0x9823('0x4c')]=[{'all':!![]}];}_0x1bb040=_[_0x9823('0x48')]({},_0x1bb040,_0xb7d293[_0x9823('0x4a')]);return db[_0x9823('0x37')][_0x9823('0x50')](_0x1bb040)[_0x9823('0x1d')](handleEntityNotFound(_0x3a4885,null))['then'](respondWithResult(_0x3a4885,null))[_0x9823('0x4e')](handleError(_0x3a4885,null));};exports[_0x9823('0x51')]=function(_0x1575f1,_0x2220bd){return db['ChatMessage'][_0x9823('0x51')](_0x1575f1[_0x9823('0x52')],{})[_0x9823('0x1d')](respondWithResult(_0x2220bd,0xc9))[_0x9823('0x4e')](handleError(_0x2220bd,null));};exports[_0x9823('0x2f')]=function(_0x33a67b,_0x5b1bdf){if(_0x33a67b[_0x9823('0x52')]['id']){delete _0x33a67b[_0x9823('0x52')]['id'];}return db[_0x9823('0x37')][_0x9823('0x50')]({'where':{'id':_0x33a67b[_0x9823('0x4f')]['id']}})['then'](handleEntityNotFound(_0x5b1bdf,null))[_0x9823('0x1d')](saveUpdates(_0x33a67b[_0x9823('0x52')],null))[_0x9823('0x1d')](respondWithResult(_0x5b1bdf,null))[_0x9823('0x4e')](handleError(_0x5b1bdf,null));};exports[_0x9823('0x30')]=function(_0x23fd57,_0x56cc8f){return db[_0x9823('0x37')][_0x9823('0x50')]({'where':{'id':_0x23fd57['params']['id']}})[_0x9823('0x1d')](handleEntityNotFound(_0x56cc8f,null))['then'](removeEntity(_0x56cc8f,null))['catch'](handleError(_0x56cc8f,null));};exports[_0x9823('0x53')]=function(_0x356df5,_0x3508cb){return db[_0x9823('0x37')][_0x9823('0x53')]()[_0x9823('0x1d')](respondWithResult(_0x3508cb,null))[_0x9823('0x4e')](handleError(_0x3508cb,null));};var interaction_log=require('../../config/logger')(_0x9823('0x54'));exports[_0x9823('0x55')]=function(_0x4340bf,_0x389be9,_0x560e61){var _0x525451={'agent':{},'channel':_0x9823('0x56')};if(_0x4340bf[_0x9823('0x52')]['id']){delete _0x4340bf['body']['id'];}_0x4340bf[_0x9823('0x52')][_0x9823('0x57')]=!![];_0x4340bf[_0x9823('0x52')][_0x9823('0x58')]=moment()['format'](_0x9823('0x59'));_0x4340bf['body']['UserId']=_0x4340bf[_0x9823('0x52')][_0x9823('0x5a')]||_0x4340bf[_0x9823('0x5b')]['id'];_0x525451[_0x9823('0x5c')]['id']=_0x4340bf[_0x9823('0x52')]['UserId'];return db[_0x9823('0x37')]['find']({'where':{'id':_0x4340bf['params']['id'],'UserId':null}})[_0x9823('0x1d')](handleEntityNotFound(_0x389be9,null))[_0x9823('0x1d')](saveUpdates(_0x4340bf[_0x9823('0x52')],null))[_0x9823('0x1d')](function(_0x25cbb8){if(_0x25cbb8){_0x525451[_0x9823('0x23')]=_0x25cbb8['get']({'plain':!![]});return db['ChatInteraction'][_0x9823('0x50')]({'where':{'id':_0x25cbb8['ChatInteractionId']}});}return null;})['then'](handleEntityNotFound(_0x389be9,null))[_0x9823('0x1d')](function(_0x18b012){if(_0x18b012){return _0x18b012[_0x9823('0x2f')]({'UserId':_0x4340bf['body'][_0x9823('0x5a')],'read1stAt':_[_0x9823('0x5d')](_0x18b012[_0x9823('0x5e')])?moment()[_0x9823('0x5f')](_0x9823('0x59')):undefined});}return null;})[_0x9823('0x1d')](function(_0xc4cb2c){if(_0xc4cb2c){_0x525451['interaction']=_0xc4cb2c[_0x9823('0x60')]({'plain':!![]});interaction_log[_0x9823('0x24')](_0x9823('0x61'),_0x4340bf['user']['id'],_0x4340bf[_0x9823('0x5b')][_0x9823('0x33')],_0x4340bf[_0x9823('0x5b')][_0x9823('0x62')],_0x525451[_0x9823('0x63')]['id'],_0x4340bf[_0x9823('0x52')]?JSON[_0x9823('0x20')](_0x4340bf[_0x9823('0x52')]):_0x9823('0x64'));return respondWithRpcPromise(_0x9823('0x65'),_0x9823('0x66'),_0x525451);}return null;})[_0x9823('0x1d')](function(_0x3998df){var _0x548f96=_0x9823('0x67')+_0x3998df[_0x9823('0x23')][_0x9823('0x68')];return db['sequelize']['query'](_0x548f96,{'type':db[_0x9823('0x69')][_0x9823('0x6a')][_0x9823('0x6b')],'raw':!![]})[_0x9823('0x1d')](function(_0x11320f){return _0x11320f;});})[_0x9823('0x1d')](function(_0x54776d){if(_0x54776d){_0x525451['message'][_0x9823('0x6c')]=_0x54776d[0x0];if(!_0x4340bf[_0x9823('0x52')][_0x9823('0x5a')])return;return db['User']['find']({'where':{'id':_0x4340bf[_0x9823('0x52')][_0x9823('0x5a')],'role':_0x9823('0x5c')},'attributes':['id',_0x9823('0x33'),_0x9823('0x6d'),_0x9823('0x6e'),_0x9823('0x6f')],'raw':!![]});}return null;})[_0x9823('0x1d')](function(_0x156c1a){if(!_0x156c1a)return null;_0x525451['message'][_0x9823('0x5c')]=_0x156c1a;return _0x525451;})[_0x9823('0x1d')](function(_0x2ebd73){if(_0x2ebd73){if(_0x4340bf[_0x9823('0x52')][_0x9823('0x70')]){_0x525451[_0x9823('0x23')][_0x9823('0x71')]=util[_0x9823('0x5f')](_0x9823('0x72'),_0x4340bf['user']['name']);_0x525451[_0x9823('0x23')]['channel']=_0x525451[_0x9823('0x73')];_0x525451[_0x9823('0x23')][_0x9823('0x74')]=_0x525451['channel'];_0x525451[_0x9823('0x23')][_0x9823('0x75')]=_0x9823('0x55');return respondWithRpcPromise(_0x9823('0x76'),_0x9823('0x76'),{'event':_0x9823('0x77'),'message':_[_0x9823('0x48')](_0x525451['message'],JSON[_0x9823('0x78')](_0x525451[_0x9823('0x63')][_0x9823('0x79')]))},client9002)[_0x9823('0x1d')](function(){return _0x525451;});}return _0x525451;}return null;})[_0x9823('0x1d')](respondWithResult(_0x389be9,null))['catch'](handleError(_0x389be9,null));};var interaction_log=require(_0x9823('0x7a'))('chat-interactions');exports[_0x9823('0x7b')]=function(_0x472375,_0x5752a7,_0x4f6708){var _0x4df16b={'agent':{},'channel':_0x9823('0x56')};if(_0x472375[_0x9823('0x52')]['id']){delete _0x472375[_0x9823('0x52')]['id'];}_0x472375[_0x9823('0x52')]['UserId']=_0x472375['body'][_0x9823('0x5a')]||_0x472375[_0x9823('0x5b')]['id'];_0x4df16b[_0x9823('0x5c')]['id']=_0x472375[_0x9823('0x52')]['UserId'];return db[_0x9823('0x37')][_0x9823('0x50')]({'where':{'id':_0x472375[_0x9823('0x4f')]['id'],'UserId':null}})[_0x9823('0x1d')](handleEntityNotFound(_0x5752a7,null))['then'](function(_0x39990f){if(_0x39990f){_0x4df16b[_0x9823('0x23')]=_0x39990f['get']({'plain':!![]});return db[_0x9823('0x7c')][_0x9823('0x50')]({'where':{'id':_0x39990f[_0x9823('0x7d')]}});}return null;})[_0x9823('0x1d')](handleEntityNotFound(_0x5752a7,null))[_0x9823('0x1d')](function(_0x1aa80e){if(_0x1aa80e){_0x4df16b[_0x9823('0x63')]=_0x1aa80e[_0x9823('0x60')]({'plain':!![]});interaction_log[_0x9823('0x24')](_0x9823('0x7e'),_0x472375[_0x9823('0x5b')]['id'],_0x472375[_0x9823('0x5b')][_0x9823('0x33')],_0x472375['user'][_0x9823('0x62')],_0x4df16b[_0x9823('0x63')]['id'],_0x472375[_0x9823('0x52')]?JSON[_0x9823('0x20')](_0x472375[_0x9823('0x52')]):_0x9823('0x64'));return respondWithRpcPromise(_0x9823('0x7f'),_0x9823('0x80'),_0x4df16b);}return null;})[_0x9823('0x1d')](function(_0xbc54dd){var _0x56a1e6='SELECT\x20*\x20FROM\x20cm_contacts\x20WHERE\x20id\x20=\x20'+_0xbc54dd['message']['ContactId'];return db[_0x9823('0x81')][_0x9823('0x3f')](_0x56a1e6,{'type':db[_0x9823('0x69')][_0x9823('0x6a')][_0x9823('0x6b')],'raw':!![]})[_0x9823('0x1d')](function(_0x57fb1f){return _0x57fb1f;});})['then'](function(_0x140eb3){if(_0x140eb3){_0x4df16b[_0x9823('0x23')][_0x9823('0x6c')]=_0x140eb3[0x0];if(!_0x472375['body']['UserId'])return;return db['User'][_0x9823('0x50')]({'where':{'id':_0x472375[_0x9823('0x52')][_0x9823('0x5a')],'role':_0x9823('0x5c')},'attributes':['id',_0x9823('0x33'),_0x9823('0x6d'),_0x9823('0x6e'),_0x9823('0x6f')],'raw':!![]});}return null;})[_0x9823('0x1d')](function(_0x1bd16e){if(!_0x1bd16e)return null;_0x4df16b['message'][_0x9823('0x5c')]=_0x1bd16e;return _0x4df16b;})[_0x9823('0x1d')](function(_0x14485e){if(_0x14485e){_0x14485e[_0x9823('0x23')][_0x9823('0x71')]=util[_0x9823('0x5f')](_0x9823('0x72'),_0x472375[_0x9823('0x5b')][_0x9823('0x33')]);_0x14485e[_0x9823('0x23')][_0x9823('0x73')]=_0x4df16b[_0x9823('0x73')];_0x14485e['message'][_0x9823('0x74')]=_0x4df16b[_0x9823('0x73')];_0x14485e[_0x9823('0x23')][_0x9823('0x75')]=_0x9823('0x7b');respondWithRpcPromise('EventManager',_0x9823('0x76'),{'event':_0x9823('0x82'),'message':_[_0x9823('0x48')](_0x4df16b[_0x9823('0x23')],JSON['parse'](_0x4df16b[_0x9823('0x63')]['formData']))},client9002);return _0x4df16b;}return null;})[_0x9823('0x1d')](respondWithResult(_0x5752a7,null))['catch'](handleError(_0x5752a7,null));};
\ No newline at end of file
+var _0xa9e0=['interaction','[CHATMESSAGE:ACCEPT]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s','user','role','null','AcceptMessage','SELECT\x20*\x20FROM\x20cm_contacts\x20WHERE\x20id\x20=\x20','ContactId','sequelize','contact','email','internal','manual','interface','SIP/%s','channel','event','EventManager','acceptmessage','parse','formData','chat-interactions','chat','ChatInteraction','RejectMessage','rejectMessage','Sequelize','QueryTypes','SELECT','fullname','rejectmessage','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','redis','defaults','localhost','./chatMessage.socket','register','jayson/promise','client','http','then','info','ChatMessage,\x20%s,\x20%s','request\x20sent','debug','ChatMessage,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','sendStatus','end','status','json','offset','undefined','count','limit','set','Content-Range','reject','save','update','destroy','stack','name','send','map','ChatMessage','fieldName','type','keys','query','filters','intersection','attributes','fields','length','model','hasOwnProperty','nolimit','sort','where','pick','filter','merge','VIRTUAL','includeAll','include','findAll','rows','show','params','body','find','describe','../../config/logger','accept','read','readAt','YYYY-MM-DD\x20HH:mm:ss','UserId','agent','get','ChatInteractionId','isNil','read1stAt','format'];(function(_0x3e3828,_0x3bd0bb){var _0xd796ba=function(_0x4f2c11){while(--_0x4f2c11){_0x3e3828['push'](_0x3e3828['shift']());}};_0xd796ba(++_0x3bd0bb);}(_0xa9e0,0x123));var _0x0a9e=function(_0x9df060,_0x253d33){_0x9df060=_0x9df060-0x0;var _0x338dfe=_0xa9e0[_0x9df060];return _0x338dfe;};'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'];config[_0x0a9e('0x15')]=_[_0x0a9e('0x16')](config[_0x0a9e('0x15')],{'host':_0x0a9e('0x17'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0x0a9e('0x15')]));require(_0x0a9e('0x18'))[_0x0a9e('0x19')](socket);var jayson=require(_0x0a9e('0x1a'));var client=jayson[_0x0a9e('0x1b')][_0x0a9e('0x1c')]({'port':0x232c});var client9002=jayson['client'][_0x0a9e('0x1c')]({'port':0x232a});function respondWithRpcPromise(_0x5d0880,_0x1985b6,_0x519dfd,_0x16033c){return new BPromise(function(_0x12066b,_0x48f32d){var _0x225616=_0x16033c||client;return _0x225616['request'](_0x5d0880,_0x519dfd)[_0x0a9e('0x1d')](function(_0x478723){logger[_0x0a9e('0x1e')](_0x0a9e('0x1f'),_0x1985b6,_0x0a9e('0x20'));logger[_0x0a9e('0x21')](_0x0a9e('0x22'),_0x1985b6,_0x0a9e('0x20'),JSON[_0x0a9e('0x23')](_0x478723));if(_0x478723[_0x0a9e('0x24')]){if(_0x478723[_0x0a9e('0x24')][_0x0a9e('0x25')]===0x1f4){logger['error'](_0x0a9e('0x1f'),_0x1985b6,_0x478723[_0x0a9e('0x24')]['message']);return _0x48f32d(_0x478723[_0x0a9e('0x24')]['message']);}logger['error'](_0x0a9e('0x1f'),_0x1985b6,_0x478723[_0x0a9e('0x24')][_0x0a9e('0x26')]);return _0x12066b(_0x478723[_0x0a9e('0x24')]['message']);}else{logger[_0x0a9e('0x1e')](_0x0a9e('0x1f'),_0x1985b6,_0x0a9e('0x20'));_0x12066b(_0x478723[_0x0a9e('0x27')][_0x0a9e('0x26')]);}})[_0x0a9e('0x28')](function(_0x16b1ca){logger['error']('ChatMessage,\x20%s,\x20%s',_0x1985b6,_0x16b1ca);_0x48f32d(_0x16b1ca);});});}function respondWithStatusCode(_0x197ec0,_0x3a8e58){_0x3a8e58=_0x3a8e58||0xcc;return function(_0x40c424){if(_0x40c424){return _0x197ec0[_0x0a9e('0x29')](_0x3a8e58);}return _0x197ec0['status'](_0x3a8e58)[_0x0a9e('0x2a')]();};}function respondWithResult(_0x479bc4,_0x45a1e7){_0x45a1e7=_0x45a1e7||0xc8;return function(_0x5bfb33){if(_0x5bfb33){return _0x479bc4[_0x0a9e('0x2b')](_0x45a1e7)[_0x0a9e('0x2c')](_0x5bfb33);}};}function respondWithFilteredResult(_0x25fba9,_0x14433c){return function(_0x140511){if(_0x140511){var _0x1538a4=typeof _0x14433c[_0x0a9e('0x2d')]===_0x0a9e('0x2e')&&typeof _0x14433c['limit']===_0x0a9e('0x2e');var _0x468813=_0x140511[_0x0a9e('0x2f')];var _0x2ec755=_0x1538a4?0x0:_0x14433c['offset'];var _0x15b200=_0x1538a4?_0x140511[_0x0a9e('0x2f')]:_0x14433c[_0x0a9e('0x2d')]+_0x14433c[_0x0a9e('0x30')];var _0x58b06f;if(_0x15b200>=_0x468813){_0x15b200=_0x468813;_0x58b06f=0xc8;}else{_0x58b06f=0xce;}_0x25fba9[_0x0a9e('0x2b')](_0x58b06f);return _0x25fba9[_0x0a9e('0x31')](_0x0a9e('0x32'),_0x2ec755+'-'+_0x15b200+'/'+_0x468813)[_0x0a9e('0x2c')](_0x140511);}return null;};}function patchUpdates(_0x540530){return function(_0x426950){try{jsonpatch['apply'](_0x426950,_0x540530,!![]);}catch(_0x2407f9){return BPromise[_0x0a9e('0x33')](_0x2407f9);}return _0x426950[_0x0a9e('0x34')]();};}function saveUpdates(_0x33bdb7,_0x25ce3a){return function(_0x5180f1){if(_0x5180f1){return _0x5180f1[_0x0a9e('0x35')](_0x33bdb7)[_0x0a9e('0x1d')](function(_0x40cb85){return _0x40cb85;});}return null;};}function removeEntity(_0x2da5c0,_0x2b45ea){return function(_0x409319){if(_0x409319){return _0x409319[_0x0a9e('0x36')]()[_0x0a9e('0x1d')](function(){_0x2da5c0['status'](0xcc)[_0x0a9e('0x2a')]();});}};}function handleEntityNotFound(_0x5e7238,_0x2cc7a0){return function(_0x14b13f){if(!_0x14b13f){_0x5e7238[_0x0a9e('0x29')](0x194);}return _0x14b13f;};}function handleError(_0x3f3d41,_0x567193){_0x567193=_0x567193||0x1f4;return function(_0x191e91){logger[_0x0a9e('0x24')](_0x191e91[_0x0a9e('0x37')]);if(_0x191e91[_0x0a9e('0x38')]){delete _0x191e91['name'];}_0x3f3d41['status'](_0x567193)[_0x0a9e('0x39')](_0x191e91);};}exports['index']=function(_0x24936a,_0x3d9717){var _0x381c37={},_0x1ef87a={},_0x4f41ae={'count':0x0,'rows':[]};var _0x31916f=_[_0x0a9e('0x3a')](db[_0x0a9e('0x3b')]['rawAttributes'],function(_0x1dbf74){return{'name':_0x1dbf74[_0x0a9e('0x3c')],'type':_0x1dbf74[_0x0a9e('0x3d')]['key']};});_0x1ef87a['model']=_[_0x0a9e('0x3a')](_0x31916f,_0x0a9e('0x38'));_0x1ef87a['query']=_[_0x0a9e('0x3e')](_0x24936a[_0x0a9e('0x3f')]);_0x1ef87a[_0x0a9e('0x40')]=_[_0x0a9e('0x41')](_0x1ef87a['model'],_0x1ef87a['query']);_0x381c37[_0x0a9e('0x42')]=_[_0x0a9e('0x41')](_0x1ef87a['model'],qs[_0x0a9e('0x43')](_0x24936a[_0x0a9e('0x3f')][_0x0a9e('0x43')]));_0x381c37['attributes']=_0x381c37[_0x0a9e('0x42')][_0x0a9e('0x44')]?_0x381c37[_0x0a9e('0x42')]:_0x1ef87a[_0x0a9e('0x45')];if(!_0x24936a[_0x0a9e('0x3f')][_0x0a9e('0x46')](_0x0a9e('0x47'))){_0x381c37[_0x0a9e('0x30')]=qs[_0x0a9e('0x30')](_0x24936a[_0x0a9e('0x3f')][_0x0a9e('0x30')]);_0x381c37[_0x0a9e('0x2d')]=qs[_0x0a9e('0x2d')](_0x24936a[_0x0a9e('0x3f')][_0x0a9e('0x2d')]);}_0x381c37['order']=qs['sort'](_0x24936a[_0x0a9e('0x3f')][_0x0a9e('0x48')]);_0x381c37[_0x0a9e('0x49')]=qs[_0x0a9e('0x40')](_[_0x0a9e('0x4a')](_0x24936a[_0x0a9e('0x3f')],_0x1ef87a[_0x0a9e('0x40')]),_0x31916f);if(_0x24936a[_0x0a9e('0x3f')][_0x0a9e('0x4b')]){_0x381c37[_0x0a9e('0x49')]=_[_0x0a9e('0x4c')](_0x381c37[_0x0a9e('0x49')],{'$or':_['map'](_0x31916f,function(_0x117c99){if(_0x117c99[_0x0a9e('0x3d')]!==_0x0a9e('0x4d')){var _0xfbd5ad={};_0xfbd5ad[_0x117c99[_0x0a9e('0x38')]]={'$like':'%'+_0x24936a[_0x0a9e('0x3f')][_0x0a9e('0x4b')]+'%'};return _0xfbd5ad;}})});}_0x381c37=_[_0x0a9e('0x4c')]({},_0x381c37,_0x24936a['options']);var _0x2e9d90={'where':_0x381c37['where']};return db[_0x0a9e('0x3b')][_0x0a9e('0x2f')](_0x2e9d90)[_0x0a9e('0x1d')](function(_0x562fb4){_0x4f41ae[_0x0a9e('0x2f')]=_0x562fb4;if(_0x24936a[_0x0a9e('0x3f')][_0x0a9e('0x4e')]){_0x381c37[_0x0a9e('0x4f')]=[{'all':!![]}];}return db[_0x0a9e('0x3b')][_0x0a9e('0x50')](_0x381c37);})[_0x0a9e('0x1d')](function(_0x5bbcde){_0x4f41ae[_0x0a9e('0x51')]=_0x5bbcde;return _0x4f41ae;})[_0x0a9e('0x1d')](respondWithFilteredResult(_0x3d9717,_0x381c37))[_0x0a9e('0x28')](handleError(_0x3d9717,null));};exports[_0x0a9e('0x52')]=function(_0x409789,_0x992c77){var _0x6054ee={'raw':!![],'where':{'id':_0x409789[_0x0a9e('0x53')]['id']}},_0x19383e={};_0x19383e['model']=_[_0x0a9e('0x3e')](db[_0x0a9e('0x3b')]['rawAttributes']);_0x19383e['query']=_['keys'](_0x409789[_0x0a9e('0x3f')]);_0x19383e[_0x0a9e('0x40')]=_[_0x0a9e('0x41')](_0x19383e[_0x0a9e('0x45')],_0x19383e[_0x0a9e('0x3f')]);_0x6054ee[_0x0a9e('0x42')]=_[_0x0a9e('0x41')](_0x19383e[_0x0a9e('0x45')],qs['fields'](_0x409789['query']['fields']));_0x6054ee[_0x0a9e('0x42')]=_0x6054ee[_0x0a9e('0x42')][_0x0a9e('0x44')]?_0x6054ee['attributes']:_0x19383e[_0x0a9e('0x45')];if(_0x409789[_0x0a9e('0x3f')]['includeAll']){_0x6054ee['include']=[{'all':!![]}];}_0x6054ee=_[_0x0a9e('0x4c')]({},_0x6054ee,_0x409789['options']);return db[_0x0a9e('0x3b')]['find'](_0x6054ee)[_0x0a9e('0x1d')](handleEntityNotFound(_0x992c77,null))[_0x0a9e('0x1d')](respondWithResult(_0x992c77,null))[_0x0a9e('0x28')](handleError(_0x992c77,null));};exports['create']=function(_0x2f82da,_0x1bf38a){return db['ChatMessage']['create'](_0x2f82da[_0x0a9e('0x54')],{})[_0x0a9e('0x1d')](respondWithResult(_0x1bf38a,0xc9))['catch'](handleError(_0x1bf38a,null));};exports[_0x0a9e('0x35')]=function(_0x5ce9ac,_0x211ef9){if(_0x5ce9ac['body']['id']){delete _0x5ce9ac[_0x0a9e('0x54')]['id'];}return db['ChatMessage']['find']({'where':{'id':_0x5ce9ac['params']['id']}})[_0x0a9e('0x1d')](handleEntityNotFound(_0x211ef9,null))['then'](saveUpdates(_0x5ce9ac[_0x0a9e('0x54')],null))[_0x0a9e('0x1d')](respondWithResult(_0x211ef9,null))[_0x0a9e('0x28')](handleError(_0x211ef9,null));};exports[_0x0a9e('0x36')]=function(_0x232830,_0x272738){return db[_0x0a9e('0x3b')][_0x0a9e('0x55')]({'where':{'id':_0x232830['params']['id']}})[_0x0a9e('0x1d')](handleEntityNotFound(_0x272738,null))[_0x0a9e('0x1d')](removeEntity(_0x272738,null))[_0x0a9e('0x28')](handleError(_0x272738,null));};exports[_0x0a9e('0x56')]=function(_0xb83dfd,_0x156662){return db['ChatMessage'][_0x0a9e('0x56')]()[_0x0a9e('0x1d')](respondWithResult(_0x156662,null))['catch'](handleError(_0x156662,null));};var interaction_log=require(_0x0a9e('0x57'))('chat-interactions');exports[_0x0a9e('0x58')]=function(_0x5ba1f9,_0x4b3c1a,_0x5674ee){var _0x273cb5={'agent':{},'channel':'chat'};if(_0x5ba1f9[_0x0a9e('0x54')]['id']){delete _0x5ba1f9[_0x0a9e('0x54')]['id'];}_0x5ba1f9[_0x0a9e('0x54')][_0x0a9e('0x59')]=!![];_0x5ba1f9[_0x0a9e('0x54')][_0x0a9e('0x5a')]=moment()['format'](_0x0a9e('0x5b'));_0x5ba1f9['body'][_0x0a9e('0x5c')]=_0x5ba1f9[_0x0a9e('0x54')][_0x0a9e('0x5c')]||_0x5ba1f9['user']['id'];_0x273cb5[_0x0a9e('0x5d')]['id']=_0x5ba1f9[_0x0a9e('0x54')][_0x0a9e('0x5c')];return db[_0x0a9e('0x3b')]['find']({'where':{'id':_0x5ba1f9[_0x0a9e('0x53')]['id'],'UserId':null}})[_0x0a9e('0x1d')](handleEntityNotFound(_0x4b3c1a,null))['then'](saveUpdates(_0x5ba1f9[_0x0a9e('0x54')],null))[_0x0a9e('0x1d')](function(_0x88dcbf){if(_0x88dcbf){_0x273cb5[_0x0a9e('0x26')]=_0x88dcbf[_0x0a9e('0x5e')]({'plain':!![]});return db['ChatInteraction'][_0x0a9e('0x55')]({'where':{'id':_0x88dcbf[_0x0a9e('0x5f')]}});}return null;})[_0x0a9e('0x1d')](handleEntityNotFound(_0x4b3c1a,null))['then'](function(_0x3528b7){if(_0x3528b7){return _0x3528b7['update']({'UserId':_0x5ba1f9['body'][_0x0a9e('0x5c')],'read1stAt':_[_0x0a9e('0x60')](_0x3528b7[_0x0a9e('0x61')])?moment()[_0x0a9e('0x62')](_0x0a9e('0x5b')):undefined});}return null;})[_0x0a9e('0x1d')](function(_0x387489){if(_0x387489){_0x273cb5[_0x0a9e('0x63')]=_0x387489[_0x0a9e('0x5e')]({'plain':!![]});interaction_log[_0x0a9e('0x1e')](_0x0a9e('0x64'),_0x5ba1f9[_0x0a9e('0x65')]['id'],_0x5ba1f9[_0x0a9e('0x65')][_0x0a9e('0x38')],_0x5ba1f9[_0x0a9e('0x65')][_0x0a9e('0x66')],_0x273cb5[_0x0a9e('0x63')]['id'],_0x5ba1f9[_0x0a9e('0x54')]?JSON['stringify'](_0x5ba1f9[_0x0a9e('0x54')]):_0x0a9e('0x67'));return respondWithRpcPromise(_0x0a9e('0x68'),'acceptMessage',_0x273cb5);}return null;})[_0x0a9e('0x1d')](function(_0x30944e){var _0x4b341d=_0x0a9e('0x69')+_0x30944e[_0x0a9e('0x26')][_0x0a9e('0x6a')];return db[_0x0a9e('0x6b')][_0x0a9e('0x3f')](_0x4b341d,{'type':db['Sequelize']['QueryTypes']['SELECT'],'raw':!![]})[_0x0a9e('0x1d')](function(_0x18bf5d){return _0x18bf5d;});})[_0x0a9e('0x1d')](function(_0x23a7d3){if(_0x23a7d3){_0x273cb5[_0x0a9e('0x26')][_0x0a9e('0x6c')]=_0x23a7d3[0x0];if(!_0x5ba1f9[_0x0a9e('0x54')][_0x0a9e('0x5c')])return;return db['User'][_0x0a9e('0x55')]({'where':{'id':_0x5ba1f9[_0x0a9e('0x54')][_0x0a9e('0x5c')],'role':'agent'},'attributes':['id',_0x0a9e('0x38'),'fullname',_0x0a9e('0x6d'),_0x0a9e('0x6e')],'raw':!![]});}return null;})['then'](function(_0x2ed01e){if(!_0x2ed01e)return null;_0x273cb5[_0x0a9e('0x26')][_0x0a9e('0x5d')]=_0x2ed01e;return _0x273cb5;})[_0x0a9e('0x1d')](function(_0x542ece){if(_0x542ece){if(_0x5ba1f9[_0x0a9e('0x54')][_0x0a9e('0x6f')]){_0x273cb5[_0x0a9e('0x26')][_0x0a9e('0x70')]=util['format'](_0x0a9e('0x71'),_0x5ba1f9[_0x0a9e('0x65')][_0x0a9e('0x38')]);_0x273cb5[_0x0a9e('0x26')]['channel']=_0x273cb5[_0x0a9e('0x72')];_0x273cb5[_0x0a9e('0x26')][_0x0a9e('0x73')]=_0x0a9e('0x58');return respondWithRpcPromise(_0x0a9e('0x74'),_0x0a9e('0x74'),{'event':_0x0a9e('0x75'),'message':_[_0x0a9e('0x4c')](_0x273cb5[_0x0a9e('0x26')],JSON[_0x0a9e('0x76')](_0x273cb5[_0x0a9e('0x63')][_0x0a9e('0x77')]))},client9002)[_0x0a9e('0x1d')](function(){return _0x273cb5;});}return _0x273cb5;}return null;})[_0x0a9e('0x1d')](respondWithResult(_0x4b3c1a,null))['catch'](handleError(_0x4b3c1a,null));};var interaction_log=require(_0x0a9e('0x57'))(_0x0a9e('0x78'));exports[_0x0a9e('0x33')]=function(_0x563627,_0x3736e0,_0x33dda0){var _0x8cea96={'agent':{},'channel':_0x0a9e('0x79')};if(_0x563627['body']['id']){delete _0x563627['body']['id'];}_0x563627[_0x0a9e('0x54')][_0x0a9e('0x5c')]=_0x563627['body'][_0x0a9e('0x5c')]||_0x563627['user']['id'];_0x8cea96[_0x0a9e('0x5d')]['id']=_0x563627[_0x0a9e('0x54')]['UserId'];return db[_0x0a9e('0x3b')][_0x0a9e('0x55')]({'where':{'id':_0x563627[_0x0a9e('0x53')]['id'],'UserId':null}})[_0x0a9e('0x1d')](handleEntityNotFound(_0x3736e0,null))[_0x0a9e('0x1d')](function(_0x1f42a0){if(_0x1f42a0){_0x8cea96[_0x0a9e('0x26')]=_0x1f42a0['get']({'plain':!![]});return db[_0x0a9e('0x7a')][_0x0a9e('0x55')]({'where':{'id':_0x1f42a0[_0x0a9e('0x5f')]}});}return null;})[_0x0a9e('0x1d')](handleEntityNotFound(_0x3736e0,null))['then'](function(_0xf51744){if(_0xf51744){_0x8cea96[_0x0a9e('0x63')]=_0xf51744['get']({'plain':!![]});interaction_log[_0x0a9e('0x1e')]('[CHATMESSAGE:REJECT]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s',_0x563627[_0x0a9e('0x65')]['id'],_0x563627[_0x0a9e('0x65')][_0x0a9e('0x38')],_0x563627[_0x0a9e('0x65')]['role'],_0x8cea96['interaction']['id'],_0x563627[_0x0a9e('0x54')]?JSON[_0x0a9e('0x23')](_0x563627[_0x0a9e('0x54')]):'null');return respondWithRpcPromise(_0x0a9e('0x7b'),_0x0a9e('0x7c'),_0x8cea96);}return null;})['then'](function(_0x4e46b2){var _0xf0a802='SELECT\x20*\x20FROM\x20cm_contacts\x20WHERE\x20id\x20=\x20'+_0x4e46b2['message']['ContactId'];return db[_0x0a9e('0x6b')][_0x0a9e('0x3f')](_0xf0a802,{'type':db[_0x0a9e('0x7d')][_0x0a9e('0x7e')][_0x0a9e('0x7f')],'raw':!![]})[_0x0a9e('0x1d')](function(_0x5a8854){return _0x5a8854;});})[_0x0a9e('0x1d')](function(_0x5955f1){if(_0x5955f1){_0x8cea96[_0x0a9e('0x26')][_0x0a9e('0x6c')]=_0x5955f1[0x0];if(!_0x563627[_0x0a9e('0x54')][_0x0a9e('0x5c')])return;return db['User'][_0x0a9e('0x55')]({'where':{'id':_0x563627[_0x0a9e('0x54')][_0x0a9e('0x5c')],'role':'agent'},'attributes':['id',_0x0a9e('0x38'),_0x0a9e('0x80'),_0x0a9e('0x6d'),_0x0a9e('0x6e')],'raw':!![]});}return null;})[_0x0a9e('0x1d')](function(_0x1910bf){if(!_0x1910bf)return null;_0x8cea96[_0x0a9e('0x26')][_0x0a9e('0x5d')]=_0x1910bf;return _0x8cea96;})['then'](function(_0x2645d6){if(_0x2645d6){_0x2645d6[_0x0a9e('0x26')]['interface']=util[_0x0a9e('0x62')](_0x0a9e('0x71'),_0x563627[_0x0a9e('0x65')]['name']);_0x2645d6[_0x0a9e('0x26')]['channel']=_0x8cea96[_0x0a9e('0x72')];_0x2645d6[_0x0a9e('0x26')][_0x0a9e('0x73')]=_0x0a9e('0x33');respondWithRpcPromise(_0x0a9e('0x74'),_0x0a9e('0x74'),{'event':_0x0a9e('0x81'),'message':_[_0x0a9e('0x4c')](_0x8cea96['message'],JSON[_0x0a9e('0x76')](_0x8cea96[_0x0a9e('0x63')][_0x0a9e('0x77')]))},client9002);return _0x8cea96;}return null;})[_0x0a9e('0x1d')](respondWithResult(_0x3736e0,null))[_0x0a9e('0x28')](handleError(_0x3736e0,null));};
\ No newline at end of file
index 7239945..90a3c40 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe09c=['save','emit','hasOwnProperty','hook','exports','events','../../mysqldb','ChatMessage','setMaxListeners'];(function(_0x40fb20,_0x3a07d0){var _0x50b114=function(_0x100b4b){while(--_0x100b4b){_0x40fb20['push'](_0x40fb20['shift']());}};_0x50b114(++_0x3a07d0);}(_0xe09c,0x1eb));var _0xce09=function(_0x21447f,_0x5a965f){_0x21447f=_0x21447f-0x0;var _0x53510b=_0xe09c[_0x21447f];return _0x53510b;};'use strict';var EventEmitter=require(_0xce09('0x0'));var ChatMessage=require(_0xce09('0x1'))['db'][_0xce09('0x2')];var ChatMessageEvents=new EventEmitter();ChatMessageEvents[_0xce09('0x3')](0x0);var events={'afterCreate':_0xce09('0x4'),'afterUpdate':'update','afterDestroy':'remove'};function emitEvent(_0x42ddf6){return function(_0x5e5bf7,_0x390558,_0x38dc13){ChatMessageEvents['emit'](_0x42ddf6+':'+_0x5e5bf7['id'],_0x5e5bf7);ChatMessageEvents[_0xce09('0x5')](_0x42ddf6,_0x5e5bf7);_0x38dc13(null);};}for(var e in events){if(events[_0xce09('0x6')](e)){var event=events[e];ChatMessage[_0xce09('0x7')](e,emitEvent(event));}}module[_0xce09('0x8')]=ChatMessageEvents;
\ No newline at end of file
+var _0x69b8=['setMaxListeners','update','emit','hasOwnProperty','hook','exports','events','ChatMessage'];(function(_0x2db12b,_0x30ab1d){var _0x20990b=function(_0x589477){while(--_0x589477){_0x2db12b['push'](_0x2db12b['shift']());}};_0x20990b(++_0x30ab1d);}(_0x69b8,0x116));var _0x869b=function(_0x4b1f89,_0x30591e){_0x4b1f89=_0x4b1f89-0x0;var _0x382d1b=_0x69b8[_0x4b1f89];return _0x382d1b;};'use strict';var EventEmitter=require(_0x869b('0x0'));var ChatMessage=require('../../mysqldb')['db'][_0x869b('0x1')];var ChatMessageEvents=new EventEmitter();ChatMessageEvents[_0x869b('0x2')](0x0);var events={'afterCreate':'save','afterUpdate':_0x869b('0x3'),'afterDestroy':'remove'};function emitEvent(_0x4f6042){return function(_0x39e971,_0x8d4ee3,_0x32661b){ChatMessageEvents[_0x869b('0x4')](_0x4f6042+':'+_0x39e971['id'],_0x39e971);ChatMessageEvents[_0x869b('0x4')](_0x4f6042,_0x39e971);_0x32661b(null);};}for(var e in events){if(events[_0x869b('0x5')](e)){var event=events[e];ChatMessage[_0x869b('0x6')](e,emitEvent(event));}}module[_0x869b('0x7')]=ChatMessageEvents;
\ No newline at end of file
index 9fe9e25..6883d84 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xebe5=['./chatMessage.attributes','define','ChatMessage','fti_chat_messages','FULLTEXT','models','get','direction','toLowerCase','out','isNil','UserId','ChatInteraction','findOne','then','update','error','utf8mb4','utf8mb4_unicode_ci','util','../../config/logger','api','moment','bluebird','path','rimraf'];(function(_0x254081,_0x20731a){var _0x5d1e2a=function(_0x597854){while(--_0x597854){_0x254081['push'](_0x254081['shift']());}};_0x5d1e2a(++_0x20731a);}(_0xebe5,0xc9));var _0x5ebe=function(_0x16c064,_0x3f937a){_0x16c064=_0x16c064-0x0;var _0x2e1c34=_0xebe5[_0x16c064];return _0x2e1c34;};'use strict';var _=require('lodash');var util=require(_0x5ebe('0x0'));var logger=require(_0x5ebe('0x1'))(_0x5ebe('0x2'));var moment=require(_0x5ebe('0x3'));var BPromise=require(_0x5ebe('0x4'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x5ebe('0x5'));var rimraf=require(_0x5ebe('0x6'));var config=require('../../config/environment');var attributes=require(_0x5ebe('0x7'));module['exports']=function(_0x5936cf,_0x551b75){return _0x5936cf[_0x5ebe('0x8')](_0x5ebe('0x9'),attributes,{'tableName':'chat_messages','paranoid':![],'indexes':[{'name':_0x5ebe('0xa'),'fields':['body'],'type':_0x5ebe('0xb')}],'timestamps':!![],'hooks':{'afterCreate':function(_0x3ab569,_0x3e7cee,_0x3b9387){var _0x444572=_0x5936cf[_0x5ebe('0xc')];var _0x281819=_0x3ab569[_0x5ebe('0xd')]({'plain':!![]});if(_0x281819[_0x5ebe('0xe')][_0x5ebe('0xf')]()==='in'||_0x281819['direction']['toLowerCase']()===_0x5ebe('0x10')&&!_0x281819['secret']&&!_[_0x5ebe('0x11')](_0x281819[_0x5ebe('0x12')])){_0x444572[_0x5ebe('0x13')][_0x5ebe('0x14')]({'where':{'id':_0x281819['ChatInteractionId']}})[_0x5ebe('0x15')](function(_0x5b65d5){if(_0x5b65d5){_0x5b65d5[_0x5ebe('0x16')]({'lastMsgAt':_0x281819['createdAt'],'lastMsgDirection':_0x281819[_0x5ebe('0xe')]['toLowerCase']()});}})['catch'](function(_0x1a11b8){console[_0x5ebe('0x17')](_0x1a11b8);});}_0x3b9387();}},'charset':_0x5ebe('0x18'),'collate':_0x5ebe('0x19')});};
\ No newline at end of file
+var _0x1a74=['UserId','ChatInteraction','findOne','ChatInteractionId','update','createdAt','catch','error','utf8mb4','utf8mb4_unicode_ci','lodash','util','../../config/logger','api','moment','path','../../config/environment','./chatMessage.attributes','exports','define','ChatMessage','chat_messages','FULLTEXT','direction','toLowerCase','out','secret'];(function(_0x15cd80,_0x3f479c){var _0x4a5ed5=function(_0x56edb8){while(--_0x56edb8){_0x15cd80['push'](_0x15cd80['shift']());}};_0x4a5ed5(++_0x3f479c);}(_0x1a74,0x118));var _0x41a7=function(_0x2c1746,_0x73b35d){_0x2c1746=_0x2c1746-0x0;var _0x56fdc8=_0x1a74[_0x2c1746];return _0x56fdc8;};'use strict';var _=require(_0x41a7('0x0'));var util=require(_0x41a7('0x1'));var logger=require(_0x41a7('0x2'))(_0x41a7('0x3'));var moment=require(_0x41a7('0x4'));var BPromise=require('bluebird');var rp=require('request-promise');var fs=require('fs');var path=require(_0x41a7('0x5'));var rimraf=require('rimraf');var config=require(_0x41a7('0x6'));var attributes=require(_0x41a7('0x7'));module[_0x41a7('0x8')]=function(_0x469db5,_0x21ba25){return _0x469db5[_0x41a7('0x9')](_0x41a7('0xa'),attributes,{'tableName':_0x41a7('0xb'),'paranoid':![],'indexes':[{'name':'fti_chat_messages','fields':['body'],'type':_0x41a7('0xc')}],'timestamps':!![],'hooks':{'afterCreate':function(_0x2e6022,_0x5a7562,_0xfcd7dc){var _0x15957b=_0x469db5['models'];var _0x3c2639=_0x2e6022['get']({'plain':!![]});if(_0x3c2639[_0x41a7('0xd')]['toLowerCase']()==='in'||_0x3c2639[_0x41a7('0xd')][_0x41a7('0xe')]()===_0x41a7('0xf')&&!_0x3c2639[_0x41a7('0x10')]&&!_['isNil'](_0x3c2639[_0x41a7('0x11')])){_0x15957b[_0x41a7('0x12')][_0x41a7('0x13')]({'where':{'id':_0x3c2639[_0x41a7('0x14')]}})['then'](function(_0x42c660){if(_0x42c660){_0x42c660[_0x41a7('0x15')]({'lastMsgAt':_0x3c2639[_0x41a7('0x16')],'lastMsgDirection':_0x3c2639[_0x41a7('0xd')][_0x41a7('0xe')]()});}})[_0x41a7('0x17')](function(_0x57ad4e){console[_0x41a7('0x18')](_0x57ad4e);});}_0xfcd7dc();}},'charset':_0x41a7('0x19'),'collate':_0x41a7('0x1a')});};
\ No newline at end of file
index 481fdc4..d628dad 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xfaad=['stringify','error','message','result','catch','ChatMessage','create','body','options','CreateChatMessage','util','bluebird','randomstring','../../mysqldb','../../config/utils','../../config/logger','../../config/environment','jayson/promise','http','redis','defaults','localhost','./chatMessage.socket','request','then','info','ChatMessage,\x20%s,\x20%s','request\x20sent','debug'];(function(_0x45dd78,_0x58011b){var _0x401968=function(_0x18499d){while(--_0x18499d){_0x45dd78['push'](_0x45dd78['shift']());}};_0x401968(++_0x58011b);}(_0xfaad,0x1a0));var _0xdfaa=function(_0x28556a,_0x10d416){_0x28556a=_0x28556a-0x0;var _0x2cae4c=_0xfaad[_0x28556a];return _0x2cae4c;};'use strict';var _=require('lodash');var util=require(_0xdfaa('0x0'));var moment=require('moment');var BPromise=require(_0xdfaa('0x1'));var rs=require(_0xdfaa('0x2'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0xdfaa('0x3'))['db'];var utils=require(_0xdfaa('0x4'));var logger=require(_0xdfaa('0x5'))('rpc');var config=require(_0xdfaa('0x6'));var jayson=require(_0xdfaa('0x7'));var client=jayson['client'][_0xdfaa('0x8')]({'port':0x232a});config[_0xdfaa('0x9')]=_[_0xdfaa('0xa')](config[_0xdfaa('0x9')],{'host':_0xdfaa('0xb'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0xdfaa('0x9')]));require(_0xdfaa('0xc'))['register'](socket);function respondWithRpcPromise(_0x504ee7,_0x1495d0,_0x1940bb){return new BPromise(function(_0x34e154,_0x2f742d){return client[_0xdfaa('0xd')](_0x504ee7,_0x1940bb)[_0xdfaa('0xe')](function(_0x1362ee){logger[_0xdfaa('0xf')](_0xdfaa('0x10'),_0x1495d0,_0xdfaa('0x11'));logger[_0xdfaa('0x12')]('ChatMessage,\x20%s,\x20%s,\x20%s',_0x1495d0,_0xdfaa('0x11'),JSON[_0xdfaa('0x13')](_0x1362ee));if(_0x1362ee[_0xdfaa('0x14')]){if(_0x1362ee[_0xdfaa('0x14')]['code']===0x1f4){logger['error']('ChatMessage,\x20%s,\x20%s',_0x1495d0,_0x1362ee[_0xdfaa('0x14')]['message']);return _0x2f742d(_0x1362ee[_0xdfaa('0x14')][_0xdfaa('0x15')]);}logger[_0xdfaa('0x14')](_0xdfaa('0x10'),_0x1495d0,_0x1362ee[_0xdfaa('0x14')]['message']);return _0x34e154(_0x1362ee['error'][_0xdfaa('0x15')]);}else{logger[_0xdfaa('0xf')]('ChatMessage,\x20%s,\x20%s',_0x1495d0,_0xdfaa('0x11'));_0x34e154(_0x1362ee[_0xdfaa('0x16')][_0xdfaa('0x15')]);}})[_0xdfaa('0x17')](function(_0x86d0c9){logger['error']('ChatMessage,\x20%s,\x20%s',_0x1495d0,_0x86d0c9);_0x2f742d(_0x86d0c9);});});}exports['CreateChatMessage']=function(_0x623329){var _0x722a21=this;return new Promise(function(_0x3e424d,_0x73ebee){return db[_0xdfaa('0x18')][_0xdfaa('0x19')](_0x623329[_0xdfaa('0x1a')],{'raw':_0x623329['options']?_0x623329[_0xdfaa('0x1b')]['raw']===undefined?!![]:![]:!![]})[_0xdfaa('0xe')](function(_0xda9eb6){logger['info']('CreateChatMessage',_0x623329);logger['debug'](_0xdfaa('0x1c'),_0x623329,JSON[_0xdfaa('0x13')](_0xda9eb6));_0x3e424d(_0xda9eb6);})[_0xdfaa('0x17')](function(_0x3d43b9){logger[_0xdfaa('0x14')](_0xdfaa('0x1c'),_0x3d43b9[_0xdfaa('0x15')],_0x623329);_0x73ebee(_0x722a21[_0xdfaa('0x14')](0x1f4,_0x3d43b9[_0xdfaa('0x15')]));});});};
\ No newline at end of file
+var _0xb31d=['result','CreateChatMessage','ChatMessage','create','body','options','stringify','catch','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','rpc','jayson/promise','http','redis','socket.io-emitter','register','request','then','info','request\x20sent','debug','ChatMessage,\x20%s,\x20%s,\x20%s','error','code','ChatMessage,\x20%s,\x20%s','message'];(function(_0x5b644e,_0x2e5e07){var _0x49c6bf=function(_0x3032d9){while(--_0x3032d9){_0x5b644e['push'](_0x5b644e['shift']());}};_0x49c6bf(++_0x2e5e07);}(_0xb31d,0xe8));var _0xdb31=function(_0x10a1e5,_0x135b55){_0x10a1e5=_0x10a1e5-0x0;var _0x3890e4=_0xb31d[_0x10a1e5];return _0x3890e4;};'use strict';var _=require(_0xdb31('0x0'));var util=require(_0xdb31('0x1'));var moment=require(_0xdb31('0x2'));var BPromise=require(_0xdb31('0x3'));var rs=require(_0xdb31('0x4'));var fs=require('fs');var Redis=require(_0xdb31('0x5'));var db=require(_0xdb31('0x6'))['db'];var utils=require(_0xdb31('0x7'));var logger=require('../../config/logger')(_0xdb31('0x8'));var config=require('../../config/environment');var jayson=require(_0xdb31('0x9'));var client=jayson['client'][_0xdb31('0xa')]({'port':0x232a});config[_0xdb31('0xb')]=_['defaults'](config[_0xdb31('0xb')],{'host':'localhost','port':0x18eb});var socket=require(_0xdb31('0xc'))(new Redis(config['redis']));require('./chatMessage.socket')[_0xdb31('0xd')](socket);function respondWithRpcPromise(_0x406743,_0xb95516,_0x32fe49){return new BPromise(function(_0x280ecf,_0x5ac478){return client[_0xdb31('0xe')](_0x406743,_0x32fe49)[_0xdb31('0xf')](function(_0x2dfc37){logger[_0xdb31('0x10')]('ChatMessage,\x20%s,\x20%s',_0xb95516,_0xdb31('0x11'));logger[_0xdb31('0x12')](_0xdb31('0x13'),_0xb95516,_0xdb31('0x11'),JSON['stringify'](_0x2dfc37));if(_0x2dfc37[_0xdb31('0x14')]){if(_0x2dfc37['error'][_0xdb31('0x15')]===0x1f4){logger['error'](_0xdb31('0x16'),_0xb95516,_0x2dfc37[_0xdb31('0x14')][_0xdb31('0x17')]);return _0x5ac478(_0x2dfc37['error']['message']);}logger[_0xdb31('0x14')](_0xdb31('0x16'),_0xb95516,_0x2dfc37['error'][_0xdb31('0x17')]);return _0x280ecf(_0x2dfc37[_0xdb31('0x14')]['message']);}else{logger[_0xdb31('0x10')](_0xdb31('0x16'),_0xb95516,_0xdb31('0x11'));_0x280ecf(_0x2dfc37[_0xdb31('0x18')][_0xdb31('0x17')]);}})['catch'](function(_0x2e5dad){logger[_0xdb31('0x14')](_0xdb31('0x16'),_0xb95516,_0x2e5dad);_0x5ac478(_0x2e5dad);});});}exports[_0xdb31('0x19')]=function(_0x5df6a0){var _0x4ff078=this;return new Promise(function(_0x157dd9,_0x7dafce){return db[_0xdb31('0x1a')][_0xdb31('0x1b')](_0x5df6a0[_0xdb31('0x1c')],{'raw':_0x5df6a0['options']?_0x5df6a0[_0xdb31('0x1d')]['raw']===undefined?!![]:![]:!![]})[_0xdb31('0xf')](function(_0x1e890c){logger[_0xdb31('0x10')](_0xdb31('0x19'),_0x5df6a0);logger[_0xdb31('0x12')]('CreateChatMessage',_0x5df6a0,JSON[_0xdb31('0x1e')](_0x1e890c));_0x157dd9(_0x1e890c);})[_0xdb31('0x1f')](function(_0xdaec48){logger[_0xdb31('0x14')](_0xdb31('0x19'),_0xdaec48[_0xdb31('0x17')],_0x5df6a0);_0x7dafce(_0x4ff078[_0xdb31('0x14')](0x1f4,_0xdaec48[_0xdb31('0x17')]));});});};
\ No newline at end of file
index 5a200a0..b388b5b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x432b=['remove','update','removeListener','length','chatMessage:','./chatMessage.events'];(function(_0x238b73,_0x5df76f){var _0x5966d9=function(_0x57802d){while(--_0x57802d){_0x238b73['push'](_0x238b73['shift']());}};_0x5966d9(++_0x5df76f);}(_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
+var _0x9879=['remove','emit','removeListener','register','chatMessage:','./chatMessage.events','save'];(function(_0x2e2eab,_0x2e609a){var _0x2357bc=function(_0x2235ad){while(--_0x2235ad){_0x2e2eab['push'](_0x2e2eab['shift']());}};_0x2357bc(++_0x2e609a);}(_0x9879,0x98));var _0x9987=function(_0x219a66,_0x5b157f){_0x219a66=_0x219a66-0x0;var _0x1f0d3e=_0x9879[_0x219a66];return _0x1f0d3e;};'use strict';var ChatMessageEvents=require(_0x9987('0x0'));var events=[_0x9987('0x1'),_0x9987('0x2'),'update'];function createListener(_0xadce9d,_0x525218){return function(_0x3a2473){_0x525218[_0x9987('0x3')](_0xadce9d,_0x3a2473);};}function removeListener(_0x1fd45d,_0xcc5722){return function(){ChatMessageEvents[_0x9987('0x4')](_0x1fd45d,_0xcc5722);};}exports[_0x9987('0x5')]=function(_0x4258df){for(var _0x4d479d=0x0,_0x34d2fd=events['length'];_0x4d479d<_0x34d2fd;_0x4d479d++){var _0x6cb988=events[_0x4d479d];var _0x3e5538=createListener(_0x9987('0x6')+_0x6cb988,_0x4258df);ChatMessageEvents['on'](_0x6cb988,_0x3e5538);}};
\ No newline at end of file
index 826b722..0d76a34 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x387b=['get','isAuthenticated','index','/describe','describe','/:id','show','post','tracked','chat','create','update','put','/:id/reject','reject','delete','destroy','exports','multer','path','connect-timeout','Router','../../components/interaction/service','../../config/environment','./chatMessage.controller'];(function(_0x4a53d,_0x58a95e){var _0x27410e=function(_0x38fc90){while(--_0x38fc90){_0x4a53d['push'](_0x4a53d['shift']());}};_0x27410e(++_0x58a95e);}(_0x387b,0x76));var _0xb387=function(_0x373980,_0x29a8bd){_0x373980=_0x373980-0x0;var _0x26955f=_0x387b[_0x373980];return _0x26955f;};'use strict';var multer=require(_0xb387('0x0'));var util=require('util');var path=require(_0xb387('0x1'));var timeout=require(_0xb387('0x2'));var express=require('express');var router=express[_0xb387('0x3')]();var fs_extra=require('fs-extra');var auth=require('../../components/auth/service');var interaction=require(_0xb387('0x4'));var config=require(_0xb387('0x5'));var controller=require(_0xb387('0x6'));router[_0xb387('0x7')]('/',auth[_0xb387('0x8')](),controller[_0xb387('0x9')]);router['get'](_0xb387('0xa'),auth[_0xb387('0x8')](),controller[_0xb387('0xb')]);router['get'](_0xb387('0xc'),auth[_0xb387('0x8')](),controller[_0xb387('0xd')]);router[_0xb387('0xe')]('/',auth[_0xb387('0x8')](),interaction[_0xb387('0xf')](_0xb387('0x10'),'chatmessage:create'),controller[_0xb387('0x11')]);router['put']('/:id',controller[_0xb387('0x12')]);router[_0xb387('0x13')]('/:id/accept',auth[_0xb387('0x8')](),controller['accept']);router[_0xb387('0x13')](_0xb387('0x14'),auth[_0xb387('0x8')](),controller[_0xb387('0x15')]);router[_0xb387('0x16')](_0xb387('0xc'),auth[_0xb387('0x8')](),controller[_0xb387('0x17')]);module[_0xb387('0x18')]=router;
\ No newline at end of file
+var _0x9aba=['index','/describe','describe','get','/:id','post','tracked','chat','chatmessage:create','create','put','update','/:id/accept','delete','destroy','exports','path','connect-timeout','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./chatMessage.controller','isAuthenticated'];(function(_0x1058f9,_0x200633){var _0x17be6f=function(_0x44e456){while(--_0x44e456){_0x1058f9['push'](_0x1058f9['shift']());}};_0x17be6f(++_0x200633);}(_0x9aba,0x1eb));var _0xa9ab=function(_0x4cc13c,_0x2da74e){_0x4cc13c=_0x4cc13c-0x0;var _0xf24fdb=_0x9aba[_0x4cc13c];return _0xf24fdb;};'use strict';var multer=require('multer');var util=require('util');var path=require(_0xa9ab('0x0'));var timeout=require(_0xa9ab('0x1'));var express=require('express');var router=express[_0xa9ab('0x2')]();var fs_extra=require(_0xa9ab('0x3'));var auth=require(_0xa9ab('0x4'));var interaction=require(_0xa9ab('0x5'));var config=require(_0xa9ab('0x6'));var controller=require(_0xa9ab('0x7'));router['get']('/',auth[_0xa9ab('0x8')](),controller[_0xa9ab('0x9')]);router['get'](_0xa9ab('0xa'),auth[_0xa9ab('0x8')](),controller[_0xa9ab('0xb')]);router[_0xa9ab('0xc')](_0xa9ab('0xd'),auth['isAuthenticated'](),controller['show']);router[_0xa9ab('0xe')]('/',auth['isAuthenticated'](),interaction[_0xa9ab('0xf')](_0xa9ab('0x10'),_0xa9ab('0x11')),controller[_0xa9ab('0x12')]);router[_0xa9ab('0x13')]('/:id',controller[_0xa9ab('0x14')]);router[_0xa9ab('0x13')](_0xa9ab('0x15'),auth['isAuthenticated'](),controller['accept']);router[_0xa9ab('0x13')]('/:id/reject',auth[_0xa9ab('0x8')](),controller['reject']);router[_0xa9ab('0x16')](_0xa9ab('0xd'),auth[_0xa9ab('0x8')](),controller[_0xa9ab('0x17')]);module[_0xa9ab('0x18')]=router;
\ No newline at end of file
index eecc2f7..0e6b811 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1c7c=['TEXT','medium','sequelize'];(function(_0x2dafbe,_0x5d04de){var _0x58a45a=function(_0x50ac96){while(--_0x50ac96){_0x2dafbe['push'](_0x2dafbe['shift']());}};_0x58a45a(++_0x5d04de);}(_0x1c7c,0x1d0));var _0xc1c7=function(_0x7c0c11,_0x3f7160){_0x7c0c11=_0x7c0c11-0x0;var _0x3b0266=_0x1c7c[_0x7c0c11];return _0x3b0266;};'use strict';var Sequelize=require(_0xc1c7('0x0'));module['exports']={'body':{'type':Sequelize[_0xc1c7('0x1')](_0xc1c7('0x2')),'allowNull':![]}};
\ No newline at end of file
+var _0x5034=['medium','sequelize','exports'];(function(_0x3c2ce4,_0x143822){var _0x43d462=function(_0x4a3a58){while(--_0x4a3a58){_0x3c2ce4['push'](_0x3c2ce4['shift']());}};_0x43d462(++_0x143822);}(_0x5034,0xdc));var _0x4503=function(_0x5c6cdc,_0x407422){_0x5c6cdc=_0x5c6cdc-0x0;var _0x2f4dbb=_0x5034[_0x5c6cdc];return _0x2f4dbb;};'use strict';var Sequelize=require(_0x4503('0x0'));module[_0x4503('0x1')]={'body':{'type':Sequelize['TEXT'](_0x4503('0x2')),'allowNull':![]}};
\ No newline at end of file
index 9b78a03..e83a2f6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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(_0x47a7d0,_0x4e182d){var _0xb9bd08=function(_0x588ee2){while(--_0x588ee2){_0x47a7d0['push'](_0x47a7d0['shift']());}};_0xb9bd08(++_0x4e182d);}(_0x7a54,0x106));var _0x47a5=function(_0x211ef3,_0x46e307){_0x211ef3=_0x211ef3-0x0;var _0x4aff97=_0x7a54[_0x211ef3];return _0x4aff97;};'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
+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(_0x1ad95f,_0x425c13){var _0x234493=function(_0xf787a2){while(--_0xf787a2){_0x1ad95f['push'](_0x1ad95f['shift']());}};_0x234493(++_0x425c13);}(_0x9957,0x93));var _0x7995=function(_0x6c993a,_0x5ea3ab){_0x6c993a=_0x6c993a-0x0;var _0x27f547=_0x9957[_0x6c993a];return _0x27f547;};'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
index 57f07aa..fdee63b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4dc1=['./chatOfflineMessage.attributes','exports','define','ChatOfflineMessage','chat_offline_messages','utf8mb4','lodash','util','../../config/logger','api','moment','request-promise','rimraf','../../config/environment'];(function(_0x352f85,_0x3382bf){var _0x2f2f6d=function(_0x5a0a7b){while(--_0x5a0a7b){_0x352f85['push'](_0x352f85['shift']());}};_0x2f2f6d(++_0x3382bf);}(_0x4dc1,0xd8));var _0x14dc=function(_0x1fb994,_0x199671){_0x1fb994=_0x1fb994-0x0;var _0x27fbe6=_0x4dc1[_0x1fb994];return _0x27fbe6;};'use strict';var _=require(_0x14dc('0x0'));var util=require(_0x14dc('0x1'));var logger=require(_0x14dc('0x2'))(_0x14dc('0x3'));var moment=require(_0x14dc('0x4'));var BPromise=require('bluebird');var rp=require(_0x14dc('0x5'));var fs=require('fs');var path=require('path');var rimraf=require(_0x14dc('0x6'));var config=require(_0x14dc('0x7'));var attributes=require(_0x14dc('0x8'));module[_0x14dc('0x9')]=function(_0x20261c,_0x184d37){return _0x20261c[_0x14dc('0xa')](_0x14dc('0xb'),attributes,{'tableName':_0x14dc('0xc'),'paranoid':![],'indexes':[],'timestamps':!![],'charset':_0x14dc('0xd'),'collate':'utf8mb4_unicode_ci'});};
\ No newline at end of file
+var _0xbd76=['request-promise','rimraf','exports','define','ChatOfflineMessage','chat_offline_messages','utf8mb4','utf8mb4_unicode_ci','lodash','util','../../config/logger','api','moment','bluebird'];(function(_0x159f35,_0x1a06d1){var _0xb16cca=function(_0x665397){while(--_0x665397){_0x159f35['push'](_0x159f35['shift']());}};_0xb16cca(++_0x1a06d1);}(_0xbd76,0x86));var _0x6bd7=function(_0x5f0089,_0x227e2c){_0x5f0089=_0x5f0089-0x0;var _0x193892=_0xbd76[_0x5f0089];return _0x193892;};'use strict';var _=require(_0x6bd7('0x0'));var util=require(_0x6bd7('0x1'));var logger=require(_0x6bd7('0x2'))(_0x6bd7('0x3'));var moment=require(_0x6bd7('0x4'));var BPromise=require(_0x6bd7('0x5'));var rp=require(_0x6bd7('0x6'));var fs=require('fs');var path=require('path');var rimraf=require(_0x6bd7('0x7'));var config=require('../../config/environment');var attributes=require('./chatOfflineMessage.attributes');module[_0x6bd7('0x8')]=function(_0x3860b1,_0x4ab273){return _0x3860b1[_0x6bd7('0x9')](_0x6bd7('0xa'),attributes,{'tableName':_0x6bd7('0xb'),'paranoid':![],'indexes':[],'timestamps':!![],'charset':_0x6bd7('0xc'),'collate':_0x6bd7('0xd')});};
\ No newline at end of file
index a515c12..45526e5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x39b4=['ioredis','../../config/utils','../../config/logger','rpc','jayson/promise','client','http','then','info','ChatOfflineMessage,\x20%s,\x20%s','debug','ChatOfflineMessage,\x20%s,\x20%s,\x20%s','stringify','error','code','message','request\x20sent','result','catch','lodash','util','moment','bluebird','randomstring'];(function(_0x27b980,_0x246df2){var _0x1678e6=function(_0x3ae8c8){while(--_0x3ae8c8){_0x27b980['push'](_0x27b980['shift']());}};_0x1678e6(++_0x246df2);}(_0x39b4,0xd3));var _0x439b=function(_0x185eb3,_0x351587){_0x185eb3=_0x185eb3-0x0;var _0x203f19=_0x39b4[_0x185eb3];return _0x203f19;};'use strict';var _=require(_0x439b('0x0'));var util=require(_0x439b('0x1'));var moment=require(_0x439b('0x2'));var BPromise=require(_0x439b('0x3'));var rs=require(_0x439b('0x4'));var fs=require('fs');var Redis=require(_0x439b('0x5'));var db=require('../../mysqldb')['db'];var utils=require(_0x439b('0x6'));var logger=require(_0x439b('0x7'))(_0x439b('0x8'));var config=require('../../config/environment');var jayson=require(_0x439b('0x9'));var client=jayson[_0x439b('0xa')][_0x439b('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x45a077,_0xf3f95b,_0x3d1ec6){return new BPromise(function(_0xbd02e2,_0x14dfa4){return client['request'](_0x45a077,_0x3d1ec6)[_0x439b('0xc')](function(_0x15667d){logger[_0x439b('0xd')](_0x439b('0xe'),_0xf3f95b,'request\x20sent');logger[_0x439b('0xf')](_0x439b('0x10'),_0xf3f95b,'request\x20sent',JSON[_0x439b('0x11')](_0x15667d));if(_0x15667d[_0x439b('0x12')]){if(_0x15667d[_0x439b('0x12')][_0x439b('0x13')]===0x1f4){logger['error']('ChatOfflineMessage,\x20%s,\x20%s',_0xf3f95b,_0x15667d[_0x439b('0x12')][_0x439b('0x14')]);return _0x14dfa4(_0x15667d['error'][_0x439b('0x14')]);}logger['error'](_0x439b('0xe'),_0xf3f95b,_0x15667d[_0x439b('0x12')][_0x439b('0x14')]);return _0xbd02e2(_0x15667d['error'][_0x439b('0x14')]);}else{logger[_0x439b('0xd')](_0x439b('0xe'),_0xf3f95b,_0x439b('0x15'));_0xbd02e2(_0x15667d[_0x439b('0x16')]['message']);}})[_0x439b('0x17')](function(_0x3096e2){logger[_0x439b('0x12')](_0x439b('0xe'),_0xf3f95b,_0x3096e2);_0x14dfa4(_0x3096e2);});});}
\ No newline at end of file
+var _0x5197=['../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','then','ChatOfflineMessage,\x20%s,\x20%s','request\x20sent','debug','error','code','message','result','lodash','moment','bluebird','ioredis'];(function(_0x3ae812,_0x57767f){var _0x3f6639=function(_0x47e00e){while(--_0x47e00e){_0x3ae812['push'](_0x3ae812['shift']());}};_0x3f6639(++_0x57767f);}(_0x5197,0x140));var _0x7519=function(_0xb0f7c3,_0x4eae95){_0xb0f7c3=_0xb0f7c3-0x0;var _0x28ea68=_0x5197[_0xb0f7c3];return _0x28ea68;};'use strict';var _=require(_0x7519('0x0'));var util=require('util');var moment=require(_0x7519('0x1'));var BPromise=require(_0x7519('0x2'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x7519('0x3'));var db=require('../../mysqldb')['db'];var utils=require(_0x7519('0x4'));var logger=require(_0x7519('0x5'))(_0x7519('0x6'));var config=require(_0x7519('0x7'));var jayson=require(_0x7519('0x8'));var client=jayson[_0x7519('0x9')]['http']({'port':0x232a});function respondWithRpcPromise(_0x1c7d28,_0x4e7c6c,_0x4cee53){return new BPromise(function(_0x165537,_0x52493e){return client['request'](_0x1c7d28,_0x4cee53)[_0x7519('0xa')](function(_0x4b09e4){logger['info'](_0x7519('0xb'),_0x4e7c6c,_0x7519('0xc'));logger[_0x7519('0xd')]('ChatOfflineMessage,\x20%s,\x20%s,\x20%s',_0x4e7c6c,_0x7519('0xc'),JSON['stringify'](_0x4b09e4));if(_0x4b09e4['error']){if(_0x4b09e4[_0x7519('0xe')][_0x7519('0xf')]===0x1f4){logger['error']('ChatOfflineMessage,\x20%s,\x20%s',_0x4e7c6c,_0x4b09e4['error'][_0x7519('0x10')]);return _0x52493e(_0x4b09e4[_0x7519('0xe')]['message']);}logger[_0x7519('0xe')]('ChatOfflineMessage,\x20%s,\x20%s',_0x4e7c6c,_0x4b09e4['error'][_0x7519('0x10')]);return _0x165537(_0x4b09e4[_0x7519('0xe')][_0x7519('0x10')]);}else{logger['info'](_0x7519('0xb'),_0x4e7c6c,'request\x20sent');_0x165537(_0x4b09e4[_0x7519('0x11')][_0x7519('0x10')]);}})['catch'](function(_0x4461f7){logger[_0x7519('0xe')](_0x7519('0xb'),_0x4e7c6c,_0x4461f7);_0x52493e(_0x4461f7);});});}
\ No newline at end of file
index 0cdc49a..38d0f75 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5b17=['index','/:id','show','post','create','put','delete','destroy','multer','util','path','connect-timeout','Router','fs-extra','../../components/auth/service','../../components/interaction/service','./chatOfflineMessage.controller','get','isAuthenticated'];(function(_0x16e5b3,_0x30d91d){var _0x4d6874=function(_0x2fffbe){while(--_0x2fffbe){_0x16e5b3['push'](_0x16e5b3['shift']());}};_0x4d6874(++_0x30d91d);}(_0x5b17,0x125));var _0x75b1=function(_0x22a5fd,_0x585df9){_0x22a5fd=_0x22a5fd-0x0;var _0x21a4e9=_0x5b17[_0x22a5fd];return _0x21a4e9;};'use strict';var multer=require(_0x75b1('0x0'));var util=require(_0x75b1('0x1'));var path=require(_0x75b1('0x2'));var timeout=require(_0x75b1('0x3'));var express=require('express');var router=express[_0x75b1('0x4')]();var fs_extra=require(_0x75b1('0x5'));var auth=require(_0x75b1('0x6'));var interaction=require(_0x75b1('0x7'));var config=require('../../config/environment');var controller=require(_0x75b1('0x8'));router[_0x75b1('0x9')]('/',auth[_0x75b1('0xa')](),controller[_0x75b1('0xb')]);router[_0x75b1('0x9')]('/describe',auth[_0x75b1('0xa')](),controller['describe']);router[_0x75b1('0x9')](_0x75b1('0xc'),auth[_0x75b1('0xa')](),controller[_0x75b1('0xd')]);router[_0x75b1('0xe')]('/',auth[_0x75b1('0xa')](),controller[_0x75b1('0xf')]);router[_0x75b1('0x10')](_0x75b1('0xc'),auth['isAuthenticated'](),controller['update']);router[_0x75b1('0x11')](_0x75b1('0xc'),auth[_0x75b1('0xa')](),controller[_0x75b1('0x12')]);module['exports']=router;
\ No newline at end of file
+var _0x197b=['../../components/interaction/service','../../config/environment','./chatOfflineMessage.controller','get','isAuthenticated','/describe','describe','/:id','show','post','create','update','delete','destroy','multer','util','connect-timeout','express','Router','fs-extra','../../components/auth/service'];(function(_0x2ca9b2,_0x436feb){var _0x39d922=function(_0x1fc31){while(--_0x1fc31){_0x2ca9b2['push'](_0x2ca9b2['shift']());}};_0x39d922(++_0x436feb);}(_0x197b,0x1dc));var _0xb197=function(_0xa0074f,_0x3e4c9f){_0xa0074f=_0xa0074f-0x0;var _0x33a82e=_0x197b[_0xa0074f];return _0x33a82e;};'use strict';var multer=require(_0xb197('0x0'));var util=require(_0xb197('0x1'));var path=require('path');var timeout=require(_0xb197('0x2'));var express=require(_0xb197('0x3'));var router=express[_0xb197('0x4')]();var fs_extra=require(_0xb197('0x5'));var auth=require(_0xb197('0x6'));var interaction=require(_0xb197('0x7'));var config=require(_0xb197('0x8'));var controller=require(_0xb197('0x9'));router[_0xb197('0xa')]('/',auth[_0xb197('0xb')](),controller['index']);router['get'](_0xb197('0xc'),auth['isAuthenticated'](),controller[_0xb197('0xd')]);router[_0xb197('0xa')](_0xb197('0xe'),auth['isAuthenticated'](),controller[_0xb197('0xf')]);router[_0xb197('0x10')]('/',auth[_0xb197('0xb')](),controller[_0xb197('0x11')]);router['put'](_0xb197('0xe'),auth[_0xb197('0xb')](),controller[_0xb197('0x12')]);router[_0xb197('0x13')](_0xb197('0xe'),auth[_0xb197('0xb')](),controller[_0xb197('0x14')]);module['exports']=router;
\ No newline at end of file
index 07f530e..3c633fd 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xce0a=['STRING','ENUM','mouseOver','INTEGER','exports'];(function(_0x175a55,_0x4082fd){var _0x167adf=function(_0x18ef07){while(--_0x18ef07){_0x175a55['push'](_0x175a55['shift']());}};_0x167adf(++_0x4082fd);}(_0xce0a,0x68));var _0xace0=function(_0x39ec06,_0xa5e032){_0x39ec06=_0x39ec06-0x0;var _0x43c12f=_0xce0a[_0x39ec06];return _0x43c12f;};'use strict';var Sequelize=require('sequelize');module[_0xace0('0x0')]={'name':{'type':Sequelize[_0xace0('0x1')],'allowNull':![]},'type':{'type':Sequelize[_0xace0('0x2')]('mouseOver','timeout'),'defaultValue':_0xace0('0x3')},'selector':{'type':Sequelize['STRING']},'timeout':{'type':Sequelize[_0xace0('0x4')]}};
\ No newline at end of file
+var _0x68f0=['STRING','sequelize','exports','ENUM','mouseOver'];(function(_0x11aca4,_0x507af9){var _0x1668e5=function(_0x41e821){while(--_0x41e821){_0x11aca4['push'](_0x11aca4['shift']());}};_0x1668e5(++_0x507af9);}(_0x68f0,0xc9));var _0x068f=function(_0xf74372,_0x51fe82){_0xf74372=_0xf74372-0x0;var _0x36bb65=_0x68f0[_0xf74372];return _0x36bb65;};'use strict';var Sequelize=require(_0x068f('0x0'));module[_0x068f('0x1')]={'name':{'type':Sequelize['STRING'],'allowNull':![]},'type':{'type':Sequelize[_0x068f('0x2')](_0x068f('0x3'),'timeout'),'defaultValue':_0x068f('0x3')},'selector':{'type':Sequelize[_0x068f('0x4')]},'timeout':{'type':Sequelize['INTEGER']}};
\ No newline at end of file
index 4be816a..4132ced 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7722=['bluebird','mustache','util','sox','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','to-csv','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','../../config/utils','../../config/environment','../../config/license/util','sendStatus','status','offset','undefined','limit','count','set','Content-Range','apply','reject','save','then','end','error','stack','name','send','show','params','ChatProactiveAction','rawAttributes','query','keys','filters','intersection','model','attributes','fields','length','includeAll','include','merge','options','find','catch','create','update','body','destroy','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment'];(function(_0x17257a,_0x47764b){var _0x46e778=function(_0x5ee84f){while(--_0x5ee84f){_0x17257a['push'](_0x17257a['shift']());}};_0x46e778(++_0x47764b);}(_0x7722,0x14e));var _0x2772=function(_0x3e690a,_0x31aa0f){_0x3e690a=_0x3e690a-0x0;var _0x435ca0=_0x7722[_0x3e690a];return _0x435ca0;};'use strict';var emlformat=require(_0x2772('0x0'));var rimraf=require(_0x2772('0x1'));var zipdir=require(_0x2772('0x2'));var jsonpatch=require(_0x2772('0x3'));var rp=require(_0x2772('0x4'));var moment=require(_0x2772('0x5'));var BPromise=require(_0x2772('0x6'));var Mustache=require(_0x2772('0x7'));var util=require(_0x2772('0x8'));var path=require('path');var sox=require(_0x2772('0x9'));var csv=require('to-csv');var ejs=require(_0x2772('0xa'));var fs=require('fs');var fs_extra=require(_0x2772('0xb'));var _=require(_0x2772('0xc'));var squel=require(_0x2772('0xd'));var crypto=require(_0x2772('0xe'));var jsforce=require(_0x2772('0xf'));var deskjs=require(_0x2772('0x10'));var toCsv=require(_0x2772('0x11'));var querystring=require(_0x2772('0x12'));var Papa=require(_0x2772('0x13'));var Redis=require(_0x2772('0x14'));var authService=require(_0x2772('0x15'));var qs=require(_0x2772('0x16'));var as=require(_0x2772('0x17'));var hardwareService=require(_0x2772('0x18'));var logger=require(_0x2772('0x19'))('api');var utils=require(_0x2772('0x1a'));var config=require(_0x2772('0x1b'));var licenseUtil=require(_0x2772('0x1c'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x14b427,_0x35afaf){_0x35afaf=_0x35afaf||0xcc;return function(_0x3d1440){if(_0x3d1440){return _0x14b427[_0x2772('0x1d')](_0x35afaf);}return _0x14b427[_0x2772('0x1e')](_0x35afaf)['end']();};}function respondWithResult(_0x21443a,_0x286672){_0x286672=_0x286672||0xc8;return function(_0x38fa62){if(_0x38fa62){return _0x21443a[_0x2772('0x1e')](_0x286672)['json'](_0x38fa62);}};}function respondWithFilteredResult(_0x1aecec,_0x580a8b){return function(_0x245645){if(_0x245645){var _0x122628=typeof _0x580a8b[_0x2772('0x1f')]===_0x2772('0x20')&&typeof _0x580a8b[_0x2772('0x21')]===_0x2772('0x20');var _0x314ba1=_0x245645['count'];var _0x27868d=_0x122628?0x0:_0x580a8b[_0x2772('0x1f')];var _0x3dd1ed=_0x122628?_0x245645[_0x2772('0x22')]:_0x580a8b[_0x2772('0x1f')]+_0x580a8b[_0x2772('0x21')];var _0x34eb25;if(_0x3dd1ed>=_0x314ba1){_0x3dd1ed=_0x314ba1;_0x34eb25=0xc8;}else{_0x34eb25=0xce;}_0x1aecec[_0x2772('0x1e')](_0x34eb25);return _0x1aecec[_0x2772('0x23')](_0x2772('0x24'),_0x27868d+'-'+_0x3dd1ed+'/'+_0x314ba1)['json'](_0x245645);}return null;};}function patchUpdates(_0x51beac){return function(_0x123e62){try{jsonpatch[_0x2772('0x25')](_0x123e62,_0x51beac,!![]);}catch(_0x2ef869){return BPromise[_0x2772('0x26')](_0x2ef869);}return _0x123e62[_0x2772('0x27')]();};}function saveUpdates(_0x4a3e28,_0x35a0dd){return function(_0x11c1b8){if(_0x11c1b8){return _0x11c1b8['update'](_0x4a3e28)['then'](function(_0x499214){return _0x499214;});}return null;};}function removeEntity(_0x5bc8f7,_0x52c703){return function(_0x4147dc){if(_0x4147dc){return _0x4147dc['destroy']()[_0x2772('0x28')](function(){_0x5bc8f7[_0x2772('0x1e')](0xcc)[_0x2772('0x29')]();});}};}function handleEntityNotFound(_0x26ffc5,_0x3d4c2f){return function(_0x111fdd){if(!_0x111fdd){_0x26ffc5[_0x2772('0x1d')](0x194);}return _0x111fdd;};}function handleError(_0xd34b26,_0x43995a){_0x43995a=_0x43995a||0x1f4;return function(_0x2de9a4){logger[_0x2772('0x2a')](_0x2de9a4[_0x2772('0x2b')]);if(_0x2de9a4['name']){delete _0x2de9a4[_0x2772('0x2c')];}_0xd34b26[_0x2772('0x1e')](_0x43995a)[_0x2772('0x2d')](_0x2de9a4);};}exports[_0x2772('0x2e')]=function(_0x3c7dda,_0x4923b0){var _0x4583d4={'raw':!![],'where':{'id':_0x3c7dda[_0x2772('0x2f')]['id']}},_0x4323f0={};_0x4323f0['model']=_['keys'](db[_0x2772('0x30')][_0x2772('0x31')]);_0x4323f0[_0x2772('0x32')]=_[_0x2772('0x33')](_0x3c7dda['query']);_0x4323f0[_0x2772('0x34')]=_[_0x2772('0x35')](_0x4323f0[_0x2772('0x36')],_0x4323f0['query']);_0x4583d4[_0x2772('0x37')]=_[_0x2772('0x35')](_0x4323f0[_0x2772('0x36')],qs['fields'](_0x3c7dda['query'][_0x2772('0x38')]));_0x4583d4['attributes']=_0x4583d4['attributes'][_0x2772('0x39')]?_0x4583d4[_0x2772('0x37')]:_0x4323f0[_0x2772('0x36')];if(_0x3c7dda[_0x2772('0x32')][_0x2772('0x3a')]){_0x4583d4[_0x2772('0x3b')]=[{'all':!![]}];}_0x4583d4=_[_0x2772('0x3c')]({},_0x4583d4,_0x3c7dda[_0x2772('0x3d')]);return db[_0x2772('0x30')][_0x2772('0x3e')](_0x4583d4)[_0x2772('0x28')](handleEntityNotFound(_0x4923b0,null))[_0x2772('0x28')](respondWithResult(_0x4923b0,null))[_0x2772('0x3f')](handleError(_0x4923b0,null));};exports['create']=function(_0xef3a95,_0x3b3ef2){return db[_0x2772('0x30')][_0x2772('0x40')](_0xef3a95['body'],{})[_0x2772('0x28')](respondWithResult(_0x3b3ef2,0xc9))[_0x2772('0x3f')](handleError(_0x3b3ef2,null));};exports[_0x2772('0x41')]=function(_0x20aefd,_0x44ef94){if(_0x20aefd[_0x2772('0x42')]['id']){delete _0x20aefd[_0x2772('0x42')]['id'];}return db[_0x2772('0x30')]['find']({'where':{'id':_0x20aefd[_0x2772('0x2f')]['id']}})[_0x2772('0x28')](handleEntityNotFound(_0x44ef94,null))[_0x2772('0x28')](saveUpdates(_0x20aefd[_0x2772('0x42')],null))['then'](respondWithResult(_0x44ef94,null))[_0x2772('0x3f')](handleError(_0x44ef94,null));};exports[_0x2772('0x43')]=function(_0x488424,_0x2eb1e6){return db[_0x2772('0x30')][_0x2772('0x3e')]({'where':{'id':_0x488424[_0x2772('0x2f')]['id']}})[_0x2772('0x28')](handleEntityNotFound(_0x2eb1e6,null))[_0x2772('0x28')](removeEntity(_0x2eb1e6,null))[_0x2772('0x3f')](handleError(_0x2eb1e6,null));};
\ No newline at end of file
+var _0x14f5=['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/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','json','undefined','count','offset','set','Content-Range','reject','update','destroy','then','error','stack','name','send','show','model','keys','ChatProactiveAction','rawAttributes','query','filters','attributes','intersection','length','includeAll','include','merge','options','create','body','catch','find','params','rimraf','fast-json-patch','request-promise','moment','mustache','util'];(function(_0x3457b4,_0x4cd8f9){var _0xaa8fa9=function(_0x51897a){while(--_0x51897a){_0x3457b4['push'](_0x3457b4['shift']());}};_0xaa8fa9(++_0x4cd8f9);}(_0x14f5,0xae));var _0x514f=function(_0x15acaf,_0x4b720e){_0x15acaf=_0x15acaf-0x0;var _0x400770=_0x14f5[_0x15acaf];return _0x400770;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x514f('0x0'));var zipdir=require('zip-dir');var jsonpatch=require(_0x514f('0x1'));var rp=require(_0x514f('0x2'));var moment=require(_0x514f('0x3'));var BPromise=require('bluebird');var Mustache=require(_0x514f('0x4'));var util=require(_0x514f('0x5'));var path=require('path');var sox=require(_0x514f('0x6'));var csv=require(_0x514f('0x7'));var ejs=require(_0x514f('0x8'));var fs=require('fs');var fs_extra=require(_0x514f('0x9'));var _=require(_0x514f('0xa'));var squel=require(_0x514f('0xb'));var crypto=require(_0x514f('0xc'));var jsforce=require('jsforce');var deskjs=require(_0x514f('0xd'));var toCsv=require('to-csv');var querystring=require(_0x514f('0xe'));var Papa=require(_0x514f('0xf'));var Redis=require(_0x514f('0x10'));var authService=require(_0x514f('0x11'));var qs=require(_0x514f('0x12'));var as=require(_0x514f('0x13'));var hardwareService=require(_0x514f('0x14'));var logger=require('../../config/logger')('api');var utils=require('../../config/utils');var config=require(_0x514f('0x15'));var licenseUtil=require(_0x514f('0x16'));var db=require(_0x514f('0x17'))['db'];function respondWithStatusCode(_0x321914,_0x3eed49){_0x3eed49=_0x3eed49||0xcc;return function(_0x2ed1b7){if(_0x2ed1b7){return _0x321914[_0x514f('0x18')](_0x3eed49);}return _0x321914[_0x514f('0x19')](_0x3eed49)[_0x514f('0x1a')]();};}function respondWithResult(_0x4124bf,_0x46e552){_0x46e552=_0x46e552||0xc8;return function(_0x3fc905){if(_0x3fc905){return _0x4124bf[_0x514f('0x19')](_0x46e552)[_0x514f('0x1b')](_0x3fc905);}};}function respondWithFilteredResult(_0x1694b3,_0x5865d1){return function(_0x70d2b4){if(_0x70d2b4){var _0x1f0cbe=typeof _0x5865d1['offset']===_0x514f('0x1c')&&typeof _0x5865d1['limit']===_0x514f('0x1c');var _0x309ce0=_0x70d2b4[_0x514f('0x1d')];var _0x5a5641=_0x1f0cbe?0x0:_0x5865d1[_0x514f('0x1e')];var _0x3673a4=_0x1f0cbe?_0x70d2b4[_0x514f('0x1d')]:_0x5865d1[_0x514f('0x1e')]+_0x5865d1['limit'];var _0x4f9193;if(_0x3673a4>=_0x309ce0){_0x3673a4=_0x309ce0;_0x4f9193=0xc8;}else{_0x4f9193=0xce;}_0x1694b3[_0x514f('0x19')](_0x4f9193);return _0x1694b3[_0x514f('0x1f')](_0x514f('0x20'),_0x5a5641+'-'+_0x3673a4+'/'+_0x309ce0)['json'](_0x70d2b4);}return null;};}function patchUpdates(_0x43fcf9){return function(_0x7248e8){try{jsonpatch['apply'](_0x7248e8,_0x43fcf9,!![]);}catch(_0x186417){return BPromise[_0x514f('0x21')](_0x186417);}return _0x7248e8['save']();};}function saveUpdates(_0xd093a1,_0x18a430){return function(_0xd89aa2){if(_0xd89aa2){return _0xd89aa2[_0x514f('0x22')](_0xd093a1)['then'](function(_0x58861e){return _0x58861e;});}return null;};}function removeEntity(_0x4b0245,_0x5d80cb){return function(_0x1c16f9){if(_0x1c16f9){return _0x1c16f9[_0x514f('0x23')]()[_0x514f('0x24')](function(){_0x4b0245[_0x514f('0x19')](0xcc)[_0x514f('0x1a')]();});}};}function handleEntityNotFound(_0x26df04,_0x2c6bb1){return function(_0x101742){if(!_0x101742){_0x26df04[_0x514f('0x18')](0x194);}return _0x101742;};}function handleError(_0x5f2da2,_0x8c8bdf){_0x8c8bdf=_0x8c8bdf||0x1f4;return function(_0x37b3db){logger[_0x514f('0x25')](_0x37b3db[_0x514f('0x26')]);if(_0x37b3db[_0x514f('0x27')]){delete _0x37b3db[_0x514f('0x27')];}_0x5f2da2[_0x514f('0x19')](_0x8c8bdf)[_0x514f('0x28')](_0x37b3db);};}exports[_0x514f('0x29')]=function(_0x594a50,_0x2c4c4b){var _0x488c17={'raw':!![],'where':{'id':_0x594a50['params']['id']}},_0x2b43e0={};_0x2b43e0[_0x514f('0x2a')]=_[_0x514f('0x2b')](db[_0x514f('0x2c')][_0x514f('0x2d')]);_0x2b43e0[_0x514f('0x2e')]=_['keys'](_0x594a50['query']);_0x2b43e0[_0x514f('0x2f')]=_['intersection'](_0x2b43e0[_0x514f('0x2a')],_0x2b43e0[_0x514f('0x2e')]);_0x488c17[_0x514f('0x30')]=_[_0x514f('0x31')](_0x2b43e0[_0x514f('0x2a')],qs['fields'](_0x594a50['query']['fields']));_0x488c17[_0x514f('0x30')]=_0x488c17[_0x514f('0x30')][_0x514f('0x32')]?_0x488c17[_0x514f('0x30')]:_0x2b43e0[_0x514f('0x2a')];if(_0x594a50[_0x514f('0x2e')][_0x514f('0x33')]){_0x488c17[_0x514f('0x34')]=[{'all':!![]}];}_0x488c17=_[_0x514f('0x35')]({},_0x488c17,_0x594a50[_0x514f('0x36')]);return db['ChatProactiveAction']['find'](_0x488c17)['then'](handleEntityNotFound(_0x2c4c4b,null))[_0x514f('0x24')](respondWithResult(_0x2c4c4b,null))['catch'](handleError(_0x2c4c4b,null));};exports[_0x514f('0x37')]=function(_0x50c120,_0x3aefc5){return db['ChatProactiveAction']['create'](_0x50c120[_0x514f('0x38')],{})['then'](respondWithResult(_0x3aefc5,0xc9))[_0x514f('0x39')](handleError(_0x3aefc5,null));};exports[_0x514f('0x22')]=function(_0x2cea89,_0x1696a2){if(_0x2cea89[_0x514f('0x38')]['id']){delete _0x2cea89['body']['id'];}return db[_0x514f('0x2c')][_0x514f('0x3a')]({'where':{'id':_0x2cea89[_0x514f('0x3b')]['id']}})[_0x514f('0x24')](handleEntityNotFound(_0x1696a2,null))['then'](saveUpdates(_0x2cea89[_0x514f('0x38')],null))[_0x514f('0x24')](respondWithResult(_0x1696a2,null))[_0x514f('0x39')](handleError(_0x1696a2,null));};exports[_0x514f('0x23')]=function(_0x51b24a,_0x1c1a24){return db[_0x514f('0x2c')][_0x514f('0x3a')]({'where':{'id':_0x51b24a[_0x514f('0x3b')]['id']}})['then'](handleEntityNotFound(_0x1c1a24,null))[_0x514f('0x24')](removeEntity(_0x1c1a24,null))['catch'](handleError(_0x1c1a24,null));};
\ No newline at end of file
index 056ad79..da75a76 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb1de=['lodash','util','moment','path','rimraf','../../config/environment'];(function(_0x1a5946,_0x426991){var _0x25e9d5=function(_0x44e1ce){while(--_0x44e1ce){_0x1a5946['push'](_0x1a5946['shift']());}};_0x25e9d5(++_0x426991);}(_0xb1de,0x9c));var _0xeb1d=function(_0x2ff2b1,_0x9944cf){_0x2ff2b1=_0x2ff2b1-0x0;var _0x18678d=_0xb1de[_0x2ff2b1];return _0x18678d;};'use strict';var _=require(_0xeb1d('0x0'));var util=require(_0xeb1d('0x1'));var logger=require('../../config/logger')('api');var moment=require(_0xeb1d('0x2'));var BPromise=require('bluebird');var rp=require('request-promise');var fs=require('fs');var path=require(_0xeb1d('0x3'));var rimraf=require(_0xeb1d('0x4'));var config=require(_0xeb1d('0x5'));var attributes=require('./chatProactiveAction.attributes');module['exports']=function(_0x2c142c,_0x543356){return _0x2c142c['define']('ChatProactiveAction',attributes,{'tableName':'chat_proactive_actions','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xa05d=['lodash','util','../../config/logger','api','moment','path','rimraf','../../config/environment','./chatProactiveAction.attributes','exports','ChatProactiveAction'];(function(_0x3cd133,_0x222fcb){var _0x2512c8=function(_0x484491){while(--_0x484491){_0x3cd133['push'](_0x3cd133['shift']());}};_0x2512c8(++_0x222fcb);}(_0xa05d,0xdc));var _0xda05=function(_0x23ad48,_0x104b01){_0x23ad48=_0x23ad48-0x0;var _0x199a20=_0xa05d[_0x23ad48];return _0x199a20;};'use strict';var _=require(_0xda05('0x0'));var util=require(_0xda05('0x1'));var logger=require(_0xda05('0x2'))(_0xda05('0x3'));var moment=require(_0xda05('0x4'));var BPromise=require('bluebird');var rp=require('request-promise');var fs=require('fs');var path=require(_0xda05('0x5'));var rimraf=require(_0xda05('0x6'));var config=require(_0xda05('0x7'));var attributes=require(_0xda05('0x8'));module[_0xda05('0x9')]=function(_0x3c59e9,_0x187b6e){return _0x3c59e9['define'](_0xda05('0xa'),attributes,{'tableName':'chat_proactive_actions','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 123357b..2f73489 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9015=['then','info','ChatProactiveAction,\x20%s,\x20%s','request\x20sent','ChatProactiveAction,\x20%s,\x20%s,\x20%s','stringify','error','code','message','catch','lodash','util','moment','randomstring','ioredis','rpc','../../config/environment','jayson/promise','http','request'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x9015,0xfa));var _0x5901=function(_0x1beef3,_0x57c4b8){_0x1beef3=_0x1beef3-0x0;var _0x5af964=_0x9015[_0x1beef3];return _0x5af964;};'use strict';var _=require(_0x5901('0x0'));var util=require(_0x5901('0x1'));var moment=require(_0x5901('0x2'));var BPromise=require('bluebird');var rs=require(_0x5901('0x3'));var fs=require('fs');var Redis=require(_0x5901('0x4'));var db=require('../../mysqldb')['db'];var utils=require('../../config/utils');var logger=require('../../config/logger')(_0x5901('0x5'));var config=require(_0x5901('0x6'));var jayson=require(_0x5901('0x7'));var client=jayson['client'][_0x5901('0x8')]({'port':0x232a});function respondWithRpcPromise(_0x19f140,_0x39315a,_0x46eaa8){return new BPromise(function(_0x33f275,_0x7662f9){return client[_0x5901('0x9')](_0x19f140,_0x46eaa8)[_0x5901('0xa')](function(_0x2bef1b){logger[_0x5901('0xb')](_0x5901('0xc'),_0x39315a,_0x5901('0xd'));logger['debug'](_0x5901('0xe'),_0x39315a,_0x5901('0xd'),JSON[_0x5901('0xf')](_0x2bef1b));if(_0x2bef1b[_0x5901('0x10')]){if(_0x2bef1b['error'][_0x5901('0x11')]===0x1f4){logger[_0x5901('0x10')](_0x5901('0xc'),_0x39315a,_0x2bef1b[_0x5901('0x10')][_0x5901('0x12')]);return _0x7662f9(_0x2bef1b['error'][_0x5901('0x12')]);}logger[_0x5901('0x10')](_0x5901('0xc'),_0x39315a,_0x2bef1b[_0x5901('0x10')][_0x5901('0x12')]);return _0x33f275(_0x2bef1b['error'][_0x5901('0x12')]);}else{logger[_0x5901('0xb')]('ChatProactiveAction,\x20%s,\x20%s',_0x39315a,_0x5901('0xd'));_0x33f275(_0x2bef1b['result'][_0x5901('0x12')]);}})[_0x5901('0x13')](function(_0xe29023){logger['error'](_0x5901('0xc'),_0x39315a,_0xe29023);_0x7662f9(_0xe29023);});});}
\ No newline at end of file
+var _0xac52=['ioredis','../../config/utils','../../config/logger','../../config/environment','jayson/promise','client','request','then','info','ChatProactiveAction,\x20%s,\x20%s','request\x20sent','ChatProactiveAction,\x20%s,\x20%s,\x20%s','stringify','error','message','result','catch','util','moment','bluebird','randomstring'];(function(_0x3e229f,_0x179151){var _0x430e94=function(_0x4b89ec){while(--_0x4b89ec){_0x3e229f['push'](_0x3e229f['shift']());}};_0x430e94(++_0x179151);}(_0xac52,0x122));var _0x2ac5=function(_0x3e7e96,_0x5683ca){_0x3e7e96=_0x3e7e96-0x0;var _0x13f6f0=_0xac52[_0x3e7e96];return _0x13f6f0;};'use strict';var _=require('lodash');var util=require(_0x2ac5('0x0'));var moment=require(_0x2ac5('0x1'));var BPromise=require(_0x2ac5('0x2'));var rs=require(_0x2ac5('0x3'));var fs=require('fs');var Redis=require(_0x2ac5('0x4'));var db=require('../../mysqldb')['db'];var utils=require(_0x2ac5('0x5'));var logger=require(_0x2ac5('0x6'))('rpc');var config=require(_0x2ac5('0x7'));var jayson=require(_0x2ac5('0x8'));var client=jayson[_0x2ac5('0x9')]['http']({'port':0x232a});function respondWithRpcPromise(_0x54a8ed,_0x433d88,_0x197aed){return new BPromise(function(_0x1ff724,_0x3fc8b5){return client[_0x2ac5('0xa')](_0x54a8ed,_0x197aed)[_0x2ac5('0xb')](function(_0x22f28b){logger[_0x2ac5('0xc')](_0x2ac5('0xd'),_0x433d88,_0x2ac5('0xe'));logger['debug'](_0x2ac5('0xf'),_0x433d88,_0x2ac5('0xe'),JSON[_0x2ac5('0x10')](_0x22f28b));if(_0x22f28b[_0x2ac5('0x11')]){if(_0x22f28b['error']['code']===0x1f4){logger['error'](_0x2ac5('0xd'),_0x433d88,_0x22f28b[_0x2ac5('0x11')][_0x2ac5('0x12')]);return _0x3fc8b5(_0x22f28b[_0x2ac5('0x11')][_0x2ac5('0x12')]);}logger['error'](_0x2ac5('0xd'),_0x433d88,_0x22f28b['error'][_0x2ac5('0x12')]);return _0x1ff724(_0x22f28b[_0x2ac5('0x11')][_0x2ac5('0x12')]);}else{logger['info']('ChatProactiveAction,\x20%s,\x20%s',_0x433d88,_0x2ac5('0xe'));_0x1ff724(_0x22f28b[_0x2ac5('0x13')][_0x2ac5('0x12')]);}})[_0x2ac5('0x14')](function(_0x1741ce){logger[_0x2ac5('0x11')](_0x2ac5('0xd'),_0x433d88,_0x1741ce);_0x3fc8b5(_0x1741ce);});});}
\ No newline at end of file
index 1c72a1e..e397757 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xae24=['destroy','exports','multer','path','express','Router','../../components/interaction/service','./chatProactiveAction.controller','get','/:id','isAuthenticated','show','post','put','update','delete'];(function(_0xdf5fc5,_0x37255b){var _0x52f5a5=function(_0x5e37aa){while(--_0x5e37aa){_0xdf5fc5['push'](_0xdf5fc5['shift']());}};_0x52f5a5(++_0x37255b);}(_0xae24,0x182));var _0x4ae2=function(_0x188661,_0x5876c6){_0x188661=_0x188661-0x0;var _0x39a041=_0xae24[_0x188661];return _0x39a041;};'use strict';var multer=require(_0x4ae2('0x0'));var util=require('util');var path=require(_0x4ae2('0x1'));var timeout=require('connect-timeout');var express=require(_0x4ae2('0x2'));var router=express[_0x4ae2('0x3')]();var fs_extra=require('fs-extra');var auth=require('../../components/auth/service');var interaction=require(_0x4ae2('0x4'));var config=require('../../config/environment');var controller=require(_0x4ae2('0x5'));router[_0x4ae2('0x6')](_0x4ae2('0x7'),auth[_0x4ae2('0x8')](),controller[_0x4ae2('0x9')]);router[_0x4ae2('0xa')]('/',auth['isAuthenticated'](),controller['create']);router[_0x4ae2('0xb')]('/:id',auth['isAuthenticated'](),controller[_0x4ae2('0xc')]);router[_0x4ae2('0xd')]('/:id',auth[_0x4ae2('0x8')](),controller[_0x4ae2('0xe')]);module[_0x4ae2('0xf')]=router;
\ No newline at end of file
+var _0x038b=['isAuthenticated','/:id','exports','util','path','connect-timeout','Router','../../components/auth/service','../../components/interaction/service','./chatProactiveAction.controller','get','show','post'];(function(_0x20a584,_0xe384a5){var _0x4b41a8=function(_0x2127c6){while(--_0x2127c6){_0x20a584['push'](_0x20a584['shift']());}};_0x4b41a8(++_0xe384a5);}(_0x038b,0x114));var _0xb038=function(_0x4eae78,_0x5908cc){_0x4eae78=_0x4eae78-0x0;var _0x13ae24=_0x038b[_0x4eae78];return _0x13ae24;};'use strict';var multer=require('multer');var util=require(_0xb038('0x0'));var path=require(_0xb038('0x1'));var timeout=require(_0xb038('0x2'));var express=require('express');var router=express[_0xb038('0x3')]();var fs_extra=require('fs-extra');var auth=require(_0xb038('0x4'));var interaction=require(_0xb038('0x5'));var config=require('../../config/environment');var controller=require(_0xb038('0x6'));router[_0xb038('0x7')]('/:id',auth['isAuthenticated'](),controller[_0xb038('0x8')]);router[_0xb038('0x9')]('/',auth[_0xb038('0xa')](),controller['create']);router['put'](_0xb038('0xb'),auth[_0xb038('0xa')](),controller['update']);router['delete'](_0xb038('0xb'),auth[_0xb038('0xa')](),controller['destroy']);module[_0xb038('0xc')]=router;
\ No newline at end of file
index 34d1e4e..da489ae 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x92ba=['sequelize','name','STRING','INTEGER','rrmemory','beepall'];(function(_0x35d58c,_0x5986f5){var _0x5772d3=function(_0x44b70b){while(--_0x44b70b){_0x35d58c['push'](_0x35d58c['shift']());}};_0x5772d3(++_0x5986f5);}(_0x92ba,0x7e));var _0xa92b=function(_0x2d4aac,_0x4c4c65){_0x2d4aac=_0x2d4aac-0x0;var _0x54b324=_0x92ba[_0x2d4aac];return _0x54b324;};'use strict';var Sequelize=require(_0xa92b('0x0'));module['exports']={'name':{'type':Sequelize['STRING'],'unique':_0xa92b('0x1'),'allowNull':![],'validate':{'notEmpty':!![],'is':/^[A-Za-z0-9\.\_]+$/i}},'description':{'type':Sequelize[_0xa92b('0x2')]},'timeout':{'type':Sequelize[_0xa92b('0x3')],'validate':{'min':0x1,'max':0x20c49b}},'strategy':{'type':Sequelize['ENUM'](_0xa92b('0x4'),_0xa92b('0x5'),'roundrobin')}};
\ No newline at end of file
+var _0x0053=['sequelize','exports','name','STRING','INTEGER','rrmemory','beepall'];(function(_0x421e31,_0x5bfb91){var _0x30a361=function(_0x421c25){while(--_0x421c25){_0x421e31['push'](_0x421e31['shift']());}};_0x30a361(++_0x5bfb91);}(_0x0053,0xf5));var _0x3005=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x0053[_0x3dd15e];return _0x231fd0;};'use strict';var Sequelize=require(_0x3005('0x0'));module[_0x3005('0x1')]={'name':{'type':Sequelize['STRING'],'unique':_0x3005('0x2'),'allowNull':![],'validate':{'notEmpty':!![],'is':/^[A-Za-z0-9\.\_]+$/i}},'description':{'type':Sequelize[_0x3005('0x3')]},'timeout':{'type':Sequelize[_0x3005('0x4')],'validate':{'min':0x1,'max':0x20c49b}},'strategy':{'type':Sequelize['ENUM'](_0x3005('0x5'),_0x3005('0x6'),'roundrobin')}};
\ No newline at end of file
index 920b840..4dcb138 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x249d=['compact','value','transaction','removeAgents','userChatQueue:remove','addAgents','spread','isArray','getAgents','rimraf','request-promise','bluebird','mustache','path','to-csv','ejs','lodash','squel','jsforce','querystring','papaparse','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','../../config/utils','../../config/environment','../../config/license/util','defaults','redis','localhost','./chatQueue.socket','register','client','http','then','info','ChatQueue,\x20%s,\x20%s','request\x20sent','debug','ChatQueue,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','status','end','offset','undefined','limit','count','set','json','apply','reject','save','destroy','get','ChatQueues','UserProfileResource','stack','name','index','map','ChatQueue','rawAttributes','fieldName','model','query','keys','filters','intersection','fields','attributes','length','hasOwnProperty','nolimit','sort','filter','where','merge','VIRTUAL','options','includeAll','catch','show','params','include','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','update','describe','getMembers','findOne','UserChatQueue','order','pick','ChatQueueId','findAll','User','findAndCountAll','chatPause','updatedAt','rows','format','%s/%s','SIP','createdAt','getTeams','addTeams','ids','Team','online','flatMap','Agents','sequelize','forEach','emit','userChatQueue:save','removeTeams','select','tq.TeamId','from','team_has_chat_queues','join','user_has_teams','ut.TeamId\x20=\x20tq.TeamId','ChatQueueId\x20=\x20?','ut.UserId\x20=\x20?','toString','QueryTypes','SELECT','every','includes','all','union'];(function(_0x4463c9,_0x1778d7){var _0x843847=function(_0xe7b570){while(--_0xe7b570){_0x4463c9['push'](_0x4463c9['shift']());}};_0x843847(++_0x1778d7);}(_0x249d,0x1bf));var _0xd249=function(_0x321bb2,_0x202794){_0x321bb2=_0x321bb2-0x0;var _0x9c12ed=_0x249d[_0x321bb2];return _0x9c12ed;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0xd249('0x0'));var zipdir=require('zip-dir');var jsonpatch=require('fast-json-patch');var rp=require(_0xd249('0x1'));var moment=require('moment');var BPromise=require(_0xd249('0x2'));var Mustache=require(_0xd249('0x3'));var util=require('util');var path=require(_0xd249('0x4'));var sox=require('sox');var csv=require(_0xd249('0x5'));var ejs=require(_0xd249('0x6'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0xd249('0x7'));var squel=require(_0xd249('0x8'));var crypto=require('crypto');var jsforce=require(_0xd249('0x9'));var deskjs=require('desk.js');var toCsv=require('to-csv');var querystring=require(_0xd249('0xa'));var Papa=require(_0xd249('0xb'));var Redis=require(_0xd249('0xc'));var authService=require('../../components/auth/service');var qs=require(_0xd249('0xd'));var as=require(_0xd249('0xe'));var hardwareService=require(_0xd249('0xf'));var logger=require(_0xd249('0x10'))('api');var utils=require(_0xd249('0x11'));var config=require(_0xd249('0x12'));var licenseUtil=require(_0xd249('0x13'));var db=require('../../mysqldb')['db'];config['redis']=_[_0xd249('0x14')](config[_0xd249('0x15')],{'host':_0xd249('0x16'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config['redis']));require(_0xd249('0x17'))[_0xd249('0x18')](socket);var jayson=require('jayson/promise');var client=jayson[_0xd249('0x19')][_0xd249('0x1a')]({'port':0x232a});function respondWithRpcPromise(_0x116e6d,_0x1c4ef0,_0x195f33,_0x44a61c){return new BPromise(function(_0x3477ed,_0x23e918){var _0x387e0b=_0x44a61c||client;return _0x387e0b['request'](_0x116e6d,_0x195f33)[_0xd249('0x1b')](function(_0x1d7f78){logger[_0xd249('0x1c')](_0xd249('0x1d'),_0x1c4ef0,_0xd249('0x1e'));logger[_0xd249('0x1f')](_0xd249('0x20'),_0x1c4ef0,_0xd249('0x1e'),JSON[_0xd249('0x21')](_0x1d7f78));if(_0x1d7f78['error']){if(_0x1d7f78[_0xd249('0x22')][_0xd249('0x23')]===0x1f4){logger[_0xd249('0x22')](_0xd249('0x1d'),_0x1c4ef0,_0x1d7f78[_0xd249('0x22')]['message']);return _0x23e918(_0x1d7f78[_0xd249('0x22')]['message']);}logger[_0xd249('0x22')]('ChatQueue,\x20%s,\x20%s',_0x1c4ef0,_0x1d7f78[_0xd249('0x22')]['message']);return _0x3477ed(_0x1d7f78[_0xd249('0x22')][_0xd249('0x24')]);}else{logger[_0xd249('0x1c')](_0xd249('0x1d'),_0x1c4ef0,_0xd249('0x1e'));_0x3477ed(_0x1d7f78[_0xd249('0x25')][_0xd249('0x24')]);}})['catch'](function(_0x40d71c){logger[_0xd249('0x22')]('ChatQueue,\x20%s,\x20%s',_0x1c4ef0,_0x40d71c);_0x23e918(_0x40d71c);});});}function respondWithStatusCode(_0x487aa9,_0x179437){_0x179437=_0x179437||0xcc;return function(_0x4a422e){if(_0x4a422e){return _0x487aa9['sendStatus'](_0x179437);}return _0x487aa9[_0xd249('0x26')](_0x179437)[_0xd249('0x27')]();};}function respondWithResult(_0xd27ab7,_0x1bfb8c){_0x1bfb8c=_0x1bfb8c||0xc8;return function(_0x5c28de){if(_0x5c28de){return _0xd27ab7[_0xd249('0x26')](_0x1bfb8c)['json'](_0x5c28de);}};}function respondWithFilteredResult(_0x32e8b9,_0x9eae9c){return function(_0xc184c4){if(_0xc184c4){var _0x3a7415=typeof _0x9eae9c[_0xd249('0x28')]===_0xd249('0x29')&&typeof _0x9eae9c[_0xd249('0x2a')]==='undefined';var _0x4102bf=_0xc184c4['count'];var _0x19dea5=_0x3a7415?0x0:_0x9eae9c[_0xd249('0x28')];var _0x29854d=_0x3a7415?_0xc184c4[_0xd249('0x2b')]:_0x9eae9c[_0xd249('0x28')]+_0x9eae9c[_0xd249('0x2a')];var _0x19c57f;if(_0x29854d>=_0x4102bf){_0x29854d=_0x4102bf;_0x19c57f=0xc8;}else{_0x19c57f=0xce;}_0x32e8b9['status'](_0x19c57f);return _0x32e8b9[_0xd249('0x2c')]('Content-Range',_0x19dea5+'-'+_0x29854d+'/'+_0x4102bf)[_0xd249('0x2d')](_0xc184c4);}return null;};}function patchUpdates(_0x6c1875){return function(_0x147353){try{jsonpatch[_0xd249('0x2e')](_0x147353,_0x6c1875,!![]);}catch(_0x314c84){return BPromise[_0xd249('0x2f')](_0x314c84);}return _0x147353[_0xd249('0x30')]();};}function saveUpdates(_0x27b7bb,_0x34ae83){return function(_0x541079){if(_0x541079){return _0x541079['update'](_0x27b7bb)['then'](function(_0x5f4165){return _0x5f4165;});}return null;};}function removeEntity(_0x35b640,_0x4e7804){return function(_0x205981){if(_0x205981){return _0x205981[_0xd249('0x31')]()[_0xd249('0x1b')](function(){var _0x27b812=_0x205981[_0xd249('0x32')]({'plain':!![]});var _0x2614f7=_0xd249('0x33');return db[_0xd249('0x34')][_0xd249('0x31')]({'where':{'type':_0x2614f7,'resourceId':_0x27b812['id']}})[_0xd249('0x1b')](function(){return _0x205981;});})[_0xd249('0x1b')](function(){_0x35b640['status'](0xcc)['end']();});}};}function handleEntityNotFound(_0x273711,_0x2a9277){return function(_0x1f6b87){if(!_0x1f6b87){_0x273711['sendStatus'](0x194);}return _0x1f6b87;};}function handleError(_0x2cd3f8,_0x41710d){_0x41710d=_0x41710d||0x1f4;return function(_0x10c93d){logger[_0xd249('0x22')](_0x10c93d[_0xd249('0x35')]);if(_0x10c93d[_0xd249('0x36')]){delete _0x10c93d['name'];}_0x2cd3f8['status'](_0x41710d)['send'](_0x10c93d);};}exports[_0xd249('0x37')]=function(_0x169d97,_0x369857){var _0x382f22={},_0x20c2d8={},_0x5d2668={'count':0x0,'rows':[]};var _0x18fcfb=_[_0xd249('0x38')](db[_0xd249('0x39')][_0xd249('0x3a')],function(_0x54da82){return{'name':_0x54da82[_0xd249('0x3b')],'type':_0x54da82['type']['key']};});_0x20c2d8[_0xd249('0x3c')]=_[_0xd249('0x38')](_0x18fcfb,_0xd249('0x36'));_0x20c2d8[_0xd249('0x3d')]=_[_0xd249('0x3e')](_0x169d97[_0xd249('0x3d')]);_0x20c2d8[_0xd249('0x3f')]=_[_0xd249('0x40')](_0x20c2d8[_0xd249('0x3c')],_0x20c2d8[_0xd249('0x3d')]);_0x382f22['attributes']=_['intersection'](_0x20c2d8[_0xd249('0x3c')],qs[_0xd249('0x41')](_0x169d97[_0xd249('0x3d')][_0xd249('0x41')]));_0x382f22[_0xd249('0x42')]=_0x382f22[_0xd249('0x42')][_0xd249('0x43')]?_0x382f22[_0xd249('0x42')]:_0x20c2d8[_0xd249('0x3c')];if(!_0x169d97['query'][_0xd249('0x44')](_0xd249('0x45'))){_0x382f22[_0xd249('0x2a')]=qs[_0xd249('0x2a')](_0x169d97['query'][_0xd249('0x2a')]);_0x382f22[_0xd249('0x28')]=qs[_0xd249('0x28')](_0x169d97[_0xd249('0x3d')][_0xd249('0x28')]);}_0x382f22['order']=qs[_0xd249('0x46')](_0x169d97['query'][_0xd249('0x46')]);_0x382f22['where']=qs[_0xd249('0x3f')](_['pick'](_0x169d97[_0xd249('0x3d')],_0x20c2d8[_0xd249('0x3f')]),_0x18fcfb);if(_0x169d97[_0xd249('0x3d')][_0xd249('0x47')]){_0x382f22[_0xd249('0x48')]=_[_0xd249('0x49')](_0x382f22[_0xd249('0x48')],{'$or':_[_0xd249('0x38')](_0x18fcfb,function(_0x2b6e15){if(_0x2b6e15['type']!==_0xd249('0x4a')){var _0x2f34e7={};_0x2f34e7[_0x2b6e15[_0xd249('0x36')]]={'$like':'%'+_0x169d97['query'][_0xd249('0x47')]+'%'};return _0x2f34e7;}})});}_0x382f22=_[_0xd249('0x49')]({},_0x382f22,_0x169d97[_0xd249('0x4b')]);var _0x529bf6={'where':_0x382f22[_0xd249('0x48')]};return db['ChatQueue'][_0xd249('0x2b')](_0x529bf6)[_0xd249('0x1b')](function(_0x5669ad){_0x5d2668[_0xd249('0x2b')]=_0x5669ad;if(_0x169d97['query'][_0xd249('0x4c')]){_0x382f22['include']=[{'all':!![]}];}return db['ChatQueue']['findAll'](_0x382f22);})['then'](function(_0x5e13a6){_0x5d2668['rows']=_0x5e13a6;return _0x5d2668;})[_0xd249('0x1b')](respondWithFilteredResult(_0x369857,_0x382f22))[_0xd249('0x4d')](handleError(_0x369857,null));};exports[_0xd249('0x4e')]=function(_0x5d9581,_0xf19016){var _0x28d61c={'raw':!![],'where':{'id':_0x5d9581[_0xd249('0x4f')]['id']}},_0x30554c={};_0x30554c[_0xd249('0x3c')]=_[_0xd249('0x3e')](db['ChatQueue'][_0xd249('0x3a')]);_0x30554c['query']=_[_0xd249('0x3e')](_0x5d9581[_0xd249('0x3d')]);_0x30554c[_0xd249('0x3f')]=_[_0xd249('0x40')](_0x30554c[_0xd249('0x3c')],_0x30554c[_0xd249('0x3d')]);_0x28d61c[_0xd249('0x42')]=_['intersection'](_0x30554c[_0xd249('0x3c')],qs[_0xd249('0x41')](_0x5d9581[_0xd249('0x3d')][_0xd249('0x41')]));_0x28d61c[_0xd249('0x42')]=_0x28d61c[_0xd249('0x42')][_0xd249('0x43')]?_0x28d61c[_0xd249('0x42')]:_0x30554c[_0xd249('0x3c')];if(_0x5d9581[_0xd249('0x3d')][_0xd249('0x4c')]){_0x28d61c[_0xd249('0x50')]=[{'all':!![]}];}_0x28d61c=_[_0xd249('0x49')]({},_0x28d61c,_0x5d9581[_0xd249('0x4b')]);return db[_0xd249('0x39')][_0xd249('0x51')](_0x28d61c)[_0xd249('0x1b')](handleEntityNotFound(_0xf19016,null))[_0xd249('0x1b')](respondWithResult(_0xf19016,null))[_0xd249('0x4d')](handleError(_0xf19016,null));};exports[_0xd249('0x52')]=function(_0x45b0ba,_0x458f03){return db[_0xd249('0x39')][_0xd249('0x52')](_0x45b0ba[_0xd249('0x53')],{})['then'](function(_0x54b1e2){var _0x27b5f1=_0x45b0ba[_0xd249('0x54')][_0xd249('0x32')]({'plain':!![]});if(!_0x27b5f1)throw new Error(_0xd249('0x55'));if(_0x27b5f1[_0xd249('0x56')]===_0xd249('0x54')){var _0x4446c4=_0x54b1e2[_0xd249('0x32')]({'plain':!![]});var _0x1771f5=_0xd249('0x33');return db[_0xd249('0x57')][_0xd249('0x51')]({'where':{'name':_0x1771f5,'userProfileId':_0x27b5f1[_0xd249('0x58')]},'raw':!![]})[_0xd249('0x1b')](function(_0x2aa851){if(_0x2aa851&&_0x2aa851[_0xd249('0x59')]===0x0){return db[_0xd249('0x34')][_0xd249('0x52')]({'name':_0x4446c4['name'],'resourceId':_0x4446c4['id'],'type':_0x2aa851['name'],'sectionId':_0x2aa851['id']},{})[_0xd249('0x1b')](function(){return _0x54b1e2;});}else{return _0x54b1e2;}})[_0xd249('0x4d')](function(_0x32a85c){logger[_0xd249('0x22')](_0xd249('0x5a'),_0x32a85c);throw _0x32a85c;});}return _0x54b1e2;})[_0xd249('0x1b')](respondWithResult(_0x458f03,0xc9))['catch'](handleError(_0x458f03,null));};exports[_0xd249('0x5b')]=function(_0x41199f,_0x594a3a){if(_0x41199f[_0xd249('0x53')]['id']){delete _0x41199f['body']['id'];}return db[_0xd249('0x39')][_0xd249('0x51')]({'where':{'id':_0x41199f['params']['id']}})['then'](handleEntityNotFound(_0x594a3a,null))[_0xd249('0x1b')](saveUpdates(_0x41199f[_0xd249('0x53')],null))[_0xd249('0x1b')](respondWithResult(_0x594a3a,null))[_0xd249('0x4d')](handleError(_0x594a3a,null));};exports[_0xd249('0x31')]=function(_0x4f29af,_0x5cfc48){return db[_0xd249('0x39')][_0xd249('0x51')]({'where':{'id':_0x4f29af[_0xd249('0x4f')]['id']}})[_0xd249('0x1b')](handleEntityNotFound(_0x5cfc48,null))[_0xd249('0x1b')](removeEntity(_0x5cfc48,null))[_0xd249('0x4d')](handleError(_0x5cfc48,null));};exports[_0xd249('0x5c')]=function(_0x11c03e,_0x1b0464){return db[_0xd249('0x39')][_0xd249('0x5c')]()['then'](respondWithResult(_0x1b0464,null))[_0xd249('0x4d')](handleError(_0x1b0464,null));};exports[_0xd249('0x5d')]=function(_0x3f628a,_0x38f2bb,_0x27a9de){var _0x55d6b8={'raw':!![],'where':{}},_0x2c6d94={},_0x39a6c2;return db[_0xd249('0x39')][_0xd249('0x5e')]({'where':{'id':_0x3f628a[_0xd249('0x4f')]['id']}})[_0xd249('0x1b')](handleEntityNotFound(_0x38f2bb,null))[_0xd249('0x1b')](function(_0x3c1dcd){if(_0x3c1dcd){_0x39a6c2=_0x3c1dcd['get']({'plain':!![]});_0x2c6d94[_0xd249('0x3c')]=_['keys'](db[_0xd249('0x5f')][_0xd249('0x3a')]);_0x2c6d94[_0xd249('0x3d')]=_['keys'](_0x3f628a[_0xd249('0x3d')]);_0x2c6d94[_0xd249('0x3f')]=_[_0xd249('0x40')](_0x2c6d94[_0xd249('0x3c')],_0x2c6d94[_0xd249('0x3d')]);_0x55d6b8[_0xd249('0x42')]=_[_0xd249('0x40')](_0x2c6d94[_0xd249('0x3c')],qs[_0xd249('0x41')](_0x3f628a[_0xd249('0x3d')][_0xd249('0x41')]));_0x55d6b8[_0xd249('0x42')]=_0x55d6b8['attributes'][_0xd249('0x43')]?_0x55d6b8[_0xd249('0x42')]:_0x2c6d94['model'];if(!_0x3f628a[_0xd249('0x3d')][_0xd249('0x44')](_0xd249('0x45'))){_0x55d6b8[_0xd249('0x2a')]=qs['limit'](_0x3f628a[_0xd249('0x3d')][_0xd249('0x2a')]);_0x55d6b8[_0xd249('0x28')]=qs[_0xd249('0x28')](_0x3f628a[_0xd249('0x3d')][_0xd249('0x28')]);}_0x55d6b8[_0xd249('0x60')]=qs[_0xd249('0x46')](_0x3f628a[_0xd249('0x3d')][_0xd249('0x46')]);_0x55d6b8[_0xd249('0x48')]=qs[_0xd249('0x3f')](_[_0xd249('0x61')](_0x3f628a[_0xd249('0x3d')],_0x2c6d94['filters']));_0x55d6b8['where'][_0xd249('0x62')]=_0x3c1dcd['id'];if(_0x3f628a[_0xd249('0x3d')][_0xd249('0x47')]){_0x55d6b8['where']=_[_0xd249('0x49')](_0x55d6b8[_0xd249('0x48')],{'$or':_[_0xd249('0x38')](_0x55d6b8[_0xd249('0x42')],function(_0x1bba7f){var _0x476524={};_0x476524[_0x1bba7f]={'$like':'%'+_0x3f628a[_0xd249('0x3d')][_0xd249('0x47')]+'%'};return _0x476524;})});}_0x55d6b8=_['merge']({},_0x55d6b8,_0x3f628a['options']);return db['UserChatQueue'][_0xd249('0x63')](_0x55d6b8);}})[_0xd249('0x1b')](function(_0x17aa47){if(_0x17aa47){return db[_0xd249('0x64')][_0xd249('0x65')]({'where':{'id':_[_0xd249('0x38')](_0x17aa47,'UserId'),'role':'agent'},'attributes':['id',_0xd249('0x36'),_0xd249('0x66'),_0xd249('0x67'),'createdAt']});}})[_0xd249('0x1b')](function(_0x439820){if(_0x439820){return{'count':_0x439820['count'],'rows':_['map'](_0x439820[_0xd249('0x68')],function(_0x354daa){return{'membername':_0x354daa['name'],'UserId':_0x354daa['id'],'queue_name':_0x39a6c2['name'],'ChatQueueId':_0x39a6c2['id'],'interface':util[_0xd249('0x69')](_0xd249('0x6a'),_0xd249('0x6b'),_0x354daa[_0xd249('0x36')]),'penalty':0x0,'paused':_0x354daa['chatPause'],'createdAt':_0x354daa[_0xd249('0x6c')],'updatedAt':_0x354daa['updatedAt']};})};}else{return{'count':0x0,'rows':[]};}})[_0xd249('0x1b')](respondWithFilteredResult(_0x38f2bb,_0x55d6b8))['catch'](handleError(_0x38f2bb,null));};exports[_0xd249('0x6d')]=function(_0x521bd2,_0x5b1735,_0x1b80b1){var _0x499e73={};var _0x5a9246={};var _0x458b66;var _0x2a81a9;return db['ChatQueue'][_0xd249('0x5e')]({'where':{'id':_0x521bd2[_0xd249('0x4f')]['id']}})[_0xd249('0x1b')](handleEntityNotFound(_0x5b1735,null))[_0xd249('0x1b')](function(_0x439983){if(_0x439983){_0x458b66=_0x439983;_0x5a9246[_0xd249('0x3c')]=_[_0xd249('0x3e')](db['Team']['rawAttributes']);_0x5a9246[_0xd249('0x3d')]=_[_0xd249('0x3e')](_0x521bd2[_0xd249('0x3d')]);_0x5a9246[_0xd249('0x3f')]=_[_0xd249('0x40')](_0x5a9246[_0xd249('0x3c')],_0x5a9246[_0xd249('0x3d')]);_0x499e73['attributes']=_[_0xd249('0x40')](_0x5a9246[_0xd249('0x3c')],qs[_0xd249('0x41')](_0x521bd2[_0xd249('0x3d')][_0xd249('0x41')]));_0x499e73[_0xd249('0x42')]=_0x499e73[_0xd249('0x42')][_0xd249('0x43')]?_0x499e73[_0xd249('0x42')]:_0x5a9246[_0xd249('0x3c')];_0x499e73[_0xd249('0x60')]=qs[_0xd249('0x46')](_0x521bd2[_0xd249('0x3d')][_0xd249('0x46')]);_0x499e73['where']=qs[_0xd249('0x3f')](_[_0xd249('0x61')](_0x521bd2[_0xd249('0x3d')],_0x5a9246[_0xd249('0x3f')]));if(_0x521bd2[_0xd249('0x3d')]['filter']){_0x499e73[_0xd249('0x48')]=_[_0xd249('0x49')](_0x499e73[_0xd249('0x48')],{'$or':_[_0xd249('0x38')](_0x499e73[_0xd249('0x42')],function(_0x400a2d){var _0x56e338={};_0x56e338[_0x400a2d]={'$like':'%'+_0x521bd2[_0xd249('0x3d')][_0xd249('0x47')]+'%'};return _0x56e338;})});}_0x499e73=_[_0xd249('0x49')]({},_0x499e73,_0x521bd2['options']);return _0x458b66[_0xd249('0x6d')](_0x499e73);}})[_0xd249('0x1b')](function(_0x4e811c){if(_0x4e811c){_0x2a81a9=_0x4e811c[_0xd249('0x43')];if(!_0x521bd2['query']['hasOwnProperty']('nolimit')){_0x499e73[_0xd249('0x2a')]=qs['limit'](_0x521bd2[_0xd249('0x3d')][_0xd249('0x2a')]);_0x499e73[_0xd249('0x28')]=qs[_0xd249('0x28')](_0x521bd2[_0xd249('0x3d')][_0xd249('0x28')]);}return _0x458b66['getTeams'](_0x499e73);}})[_0xd249('0x1b')](function(_0x213173){if(_0x213173){return _0x213173?{'count':_0x2a81a9,'rows':_0x213173}:null;}})['then'](respondWithResult(_0x5b1735,null))[_0xd249('0x4d')](handleError(_0x5b1735,null));};exports[_0xd249('0x6e')]=function(_0x239ef8,_0x4a7d0b,_0x364fe4){var _0x478192=_0x239ef8[_0xd249('0x53')][_0xd249('0x6f')];return db[_0xd249('0x70')][_0xd249('0x63')]({'where':{'id':_0x478192},'attributes':['id'],'include':[{'model':db[_0xd249('0x64')],'as':'Agents','attributes':['id',_0xd249('0x36'),_0xd249('0x71'),'voicePause','interface'],'raw':!![]}]})[_0xd249('0x1b')](function(_0x2b6653){if(_0x2b6653){var _0x49add0=_[_0xd249('0x72')](_0x2b6653,function(_0x4b3f06){var _0x47a57a=_0x4b3f06['get']({'plain':!![]});return _0x47a57a[_0xd249('0x73')];});return db[_0xd249('0x39')][_0xd249('0x51')]({'where':{'id':_0x239ef8[_0xd249('0x4f')]['id']}})[_0xd249('0x1b')](function(_0x51e698){return db[_0xd249('0x74')]['transaction'](function(_0x57a3f7){return _0x51e698[_0xd249('0x6e')](_0x478192,{'transaction':_0x57a3f7})[_0xd249('0x1b')](function(){return BPromise['each'](_0x49add0,function(_0x22e346){return db[_0xd249('0x5f')]['findOrCreate']({'where':{'UserId':_0x22e346['id'],'ChatQueueId':_0x239ef8['params']['id']},'transaction':_0x57a3f7});});})[_0xd249('0x1b')](function(){_0x49add0[_0xd249('0x75')](function(_0x53f456){socket[_0xd249('0x76')](_0xd249('0x77'),{'UserId':_0x53f456['id'],'ChatQueueId':_0x51e698['id']});});});});});}})[_0xd249('0x1b')](respondWithStatusCode(_0x4a7d0b,null))[_0xd249('0x4d')](handleError(_0x4a7d0b,null));};exports[_0xd249('0x78')]=function(_0x141096,_0x3431b2,_0xdeafc5){return db[_0xd249('0x70')]['findAll']({'where':{'id':_0x141096[_0xd249('0x3d')]['ids']},'attributes':['id'],'include':[{'model':db[_0xd249('0x64')],'as':_0xd249('0x73'),'attributes':['id'],'raw':!![]}]})[_0xd249('0x1b')](handleEntityNotFound(_0x3431b2,null))[_0xd249('0x1b')](function(_0x434138){var _0x3365af=_[_0xd249('0x38')](_0x434138,'id');var _0x491f69=[];var _0x417902=[];var _0x273ea5=squel[_0xd249('0x79')]();_0x273ea5['field'](_0xd249('0x7a'))[_0xd249('0x7b')](_0xd249('0x7c'),'tq')[_0xd249('0x7d')](_0xd249('0x7e'),'ut',_0xd249('0x7f'))['where'](_0xd249('0x80'),_0x141096[_0xd249('0x4f')]['id']);for(var _0x41e9d2=0x0;_0x41e9d2<_0x434138['length'];_0x41e9d2+=0x1){let _0x3e124b=_0x434138[_0x41e9d2];for(var _0x9adad5=0x0;_0x9adad5<_0x3e124b[_0xd249('0x73')][_0xd249('0x43')];_0x9adad5+=0x1){let _0x3dedde=_0x3e124b[_0xd249('0x73')][_0x9adad5];var _0x154e24=_0x273ea5['clone']();_0x154e24[_0xd249('0x48')](_0xd249('0x81'),_0x3dedde['id']);_0x417902['push'](db[_0xd249('0x74')][_0xd249('0x3d')](_0x154e24[_0xd249('0x82')](),{'type':db[_0xd249('0x74')][_0xd249('0x83')][_0xd249('0x84')]})[_0xd249('0x1b')](function(_0x53d7f8){if(_0x53d7f8[_0xd249('0x43')]===0x1){return _0x3dedde['id'];}else{var _0x3e292a=_[_0xd249('0x85')](_[_0xd249('0x38')](_0x53d7f8,'TeamId'),function(_0x2a9c7a){return _[_0xd249('0x86')](_0x3365af,_0x2a9c7a);});if(_0x3e292a){return _0x3dedde['id'];}}}));}}return BPromise[_0xd249('0x87')](_0x417902)[_0xd249('0x1b')](function(_0x2c0aed){_0x491f69=_(_0x491f69)[_0xd249('0x88')](_0x2c0aed)[_0xd249('0x89')]()[_0xd249('0x8a')]();return db[_0xd249('0x39')][_0xd249('0x51')]({'where':{'id':_0x141096['params']['id']}})[_0xd249('0x1b')](function(_0x53291c){return db[_0xd249('0x74')][_0xd249('0x8b')](function(_0x17ff92){return _0x53291c[_0xd249('0x78')](_0x141096['query']['ids'],{'transaction':_0x17ff92})[_0xd249('0x1b')](function(){if(!_['isEmpty'](_0x491f69)){return _0x53291c[_0xd249('0x8c')](_0x491f69,{'transaction':_0x17ff92});}})['then'](function(){_0x491f69[_0xd249('0x75')](function(_0xd97350){socket[_0xd249('0x76')](_0xd249('0x8d'),{'UserId':_0xd97350,'ChatQueueId':_0x53291c['id']});});});});});});})[_0xd249('0x1b')](respondWithStatusCode(_0x3431b2,null))[_0xd249('0x4d')](handleError(_0x3431b2,null));};exports[_0xd249('0x8e')]=function(_0x201b38,_0x33e308,_0x393f93){return db['ChatQueue'][_0xd249('0x51')]({'where':{'id':_0x201b38['params']['id']}})[_0xd249('0x1b')](handleEntityNotFound(_0x33e308,null))['then'](function(_0x5c16dd){if(_0x5c16dd){return _0x5c16dd['addAgents'](_0x201b38[_0xd249('0x53')][_0xd249('0x6f')],_['omit'](_0x201b38[_0xd249('0x53')],['ids','id'])||{})[_0xd249('0x8f')](function(_0x41850e){for(var _0x30a16d=0x0;_0x30a16d<_0x201b38[_0xd249('0x53')][_0xd249('0x6f')][_0xd249('0x43')];_0x30a16d+=0x1){socket[_0xd249('0x76')]('userChatQueue:save',{'UserId':Number(_0x201b38[_0xd249('0x53')][_0xd249('0x6f')][_0x30a16d]),'ChatQueueId':Number(_0x201b38[_0xd249('0x4f')]['id'])});}return _0x41850e;});}})[_0xd249('0x1b')](respondWithResult(_0x33e308,null))['catch'](handleError(_0x33e308,null));};exports[_0xd249('0x8c')]=function(_0x190247,_0x1bebf4,_0x12c734){return db[_0xd249('0x39')][_0xd249('0x51')]({'where':{'id':_0x190247[_0xd249('0x4f')]['id']}})[_0xd249('0x1b')](handleEntityNotFound(_0x1bebf4,null))['then'](function(_0x371967){if(_0x371967){return _0x371967[_0xd249('0x8c')](_0x190247['query']['ids'])[_0xd249('0x1b')](function(){if(_[_0xd249('0x90')](_0x190247[_0xd249('0x3d')][_0xd249('0x6f')])){for(var _0x7fa8b5=0x0;_0x7fa8b5<_0x190247['query'][_0xd249('0x6f')][_0xd249('0x43')];_0x7fa8b5+=0x1){socket['emit'](_0xd249('0x8d'),{'UserId':Number(_0x190247[_0xd249('0x3d')][_0xd249('0x6f')][_0x7fa8b5]),'ChatQueueId':Number(_0x190247[_0xd249('0x4f')]['id'])});}}else{socket['emit'](_0xd249('0x8d'),{'UserId':Number(_0x190247[_0xd249('0x3d')][_0xd249('0x6f')]),'ChatQueueId':Number(_0x190247['params']['id'])});}});}})['then'](respondWithStatusCode(_0x1bebf4,null))[_0xd249('0x4d')](handleError(_0x1bebf4,null));};exports[_0xd249('0x91')]=function(_0x69dd9e,_0x50704d,_0x34cab2){var _0x276cdb={};var _0x4f7af2={};var _0x5896e7;var _0x1ff76a;return db[_0xd249('0x39')][_0xd249('0x5e')]({'where':{'id':_0x69dd9e[_0xd249('0x4f')]['id']}})[_0xd249('0x1b')](handleEntityNotFound(_0x50704d,null))[_0xd249('0x1b')](function(_0x25fc03){if(_0x25fc03){_0x5896e7=_0x25fc03;_0x4f7af2['model']=_[_0xd249('0x3e')](db[_0xd249('0x64')][_0xd249('0x3a')]);_0x4f7af2['query']=_['keys'](_0x69dd9e['query']);_0x4f7af2['filters']=_[_0xd249('0x40')](_0x4f7af2[_0xd249('0x3c')],_0x4f7af2[_0xd249('0x3d')]);_0x276cdb[_0xd249('0x42')]=_[_0xd249('0x40')](_0x4f7af2['model'],qs[_0xd249('0x41')](_0x69dd9e[_0xd249('0x3d')]['fields']));_0x276cdb[_0xd249('0x42')]=_0x276cdb[_0xd249('0x42')][_0xd249('0x43')]?_0x276cdb['attributes']:_0x4f7af2[_0xd249('0x3c')];_0x276cdb[_0xd249('0x60')]=qs[_0xd249('0x46')](_0x69dd9e[_0xd249('0x3d')][_0xd249('0x46')]);_0x276cdb[_0xd249('0x48')]=qs[_0xd249('0x3f')](_[_0xd249('0x61')](_0x69dd9e['query'],_0x4f7af2['filters']));if(_0x69dd9e[_0xd249('0x3d')][_0xd249('0x47')]){_0x276cdb['where']=_['merge'](_0x276cdb['where'],{'$or':_[_0xd249('0x38')](_0x276cdb[_0xd249('0x42')],function(_0x1246df){var _0x1e8d1f={};_0x1e8d1f[_0x1246df]={'$like':'%'+_0x69dd9e[_0xd249('0x3d')][_0xd249('0x47')]+'%'};return _0x1e8d1f;})});}_0x276cdb=_[_0xd249('0x49')]({},_0x276cdb,_0x69dd9e[_0xd249('0x4b')]);return _0x5896e7[_0xd249('0x91')](_0x276cdb);}})[_0xd249('0x1b')](function(_0x47195){if(_0x47195){_0x1ff76a=_0x47195[_0xd249('0x43')];if(!_0x69dd9e[_0xd249('0x3d')]['hasOwnProperty'](_0xd249('0x45'))){_0x276cdb[_0xd249('0x2a')]=qs[_0xd249('0x2a')](_0x69dd9e[_0xd249('0x3d')][_0xd249('0x2a')]);_0x276cdb[_0xd249('0x28')]=qs[_0xd249('0x28')](_0x69dd9e[_0xd249('0x3d')][_0xd249('0x28')]);}return _0x5896e7[_0xd249('0x91')](_0x276cdb);}})[_0xd249('0x1b')](function(_0x481ae3){if(_0x481ae3){return _0x481ae3?{'count':_0x1ff76a,'rows':_0x481ae3}:null;}})[_0xd249('0x1b')](respondWithResult(_0x50704d,null))[_0xd249('0x4d')](handleError(_0x50704d,null));};
\ No newline at end of file
+var _0x2b00=['jsforce','querystring','papaparse','../../components/auth/service','../../components/parsers/advancedSearch','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','redis','localhost','socket.io-emitter','./chatQueue.socket','register','client','http','request','then','info','ChatQueue,\x20%s,\x20%s','ChatQueue,\x20%s,\x20%s,\x20%s','stringify','error','code','message','request\x20sent','result','catch','sendStatus','status','end','offset','undefined','limit','count','set','Content-Range','json','reject','save','update','destroy','get','ChatQueues','UserProfileResource','name','send','index','map','ChatQueue','rawAttributes','fieldName','type','model','query','keys','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','filters','pick','filter','VIRTUAL','merge','options','includeAll','include','findAll','show','params','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','getMembers','findOne','UserChatQueue','User','UserId','agent','updatedAt','createdAt','format','%s/%s','chatPause','getTeams','Team','addTeams','online','voicePause','flatMap','Agents','sequelize','transaction','findOrCreate','removeTeams','ids','select','field','tq.TeamId','from','join','ut.TeamId\x20=\x20tq.TeamId','ChatQueueId\x20=\x20?','clone','toString','QueryTypes','includes','all','union','compact','value','isEmpty','removeAgents','forEach','userChatQueue:remove','addAgents','omit','spread','userChatQueue:save','isArray','emit','getAgents','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','bluebird','mustache','to-csv','ejs','lodash','squel','crypto'];(function(_0x29e397,_0x1ec646){var _0x52426a=function(_0xd547e8){while(--_0xd547e8){_0x29e397['push'](_0x29e397['shift']());}};_0x52426a(++_0x1ec646);}(_0x2b00,0x88));var _0x02b0=function(_0x1327f7,_0x574202){_0x1327f7=_0x1327f7-0x0;var _0xa7a00c=_0x2b00[_0x1327f7];return _0xa7a00c;};'use strict';var emlformat=require(_0x02b0('0x0'));var rimraf=require(_0x02b0('0x1'));var zipdir=require(_0x02b0('0x2'));var jsonpatch=require(_0x02b0('0x3'));var rp=require(_0x02b0('0x4'));var moment=require('moment');var BPromise=require(_0x02b0('0x5'));var Mustache=require(_0x02b0('0x6'));var util=require('util');var path=require('path');var sox=require('sox');var csv=require(_0x02b0('0x7'));var ejs=require(_0x02b0('0x8'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x02b0('0x9'));var squel=require(_0x02b0('0xa'));var crypto=require(_0x02b0('0xb'));var jsforce=require(_0x02b0('0xc'));var deskjs=require('desk.js');var toCsv=require('to-csv');var querystring=require(_0x02b0('0xd'));var Papa=require(_0x02b0('0xe'));var Redis=require('ioredis');var authService=require(_0x02b0('0xf'));var qs=require('../../components/parsers/qs');var as=require(_0x02b0('0x10'));var hardwareService=require('../../config/license/hardware');var logger=require('../../config/logger')(_0x02b0('0x11'));var utils=require(_0x02b0('0x12'));var config=require(_0x02b0('0x13'));var licenseUtil=require(_0x02b0('0x14'));var db=require(_0x02b0('0x15'))['db'];config['redis']=_['defaults'](config[_0x02b0('0x16')],{'host':_0x02b0('0x17'),'port':0x18eb});var socket=require(_0x02b0('0x18'))(new Redis(config[_0x02b0('0x16')]));require(_0x02b0('0x19'))[_0x02b0('0x1a')](socket);var jayson=require('jayson/promise');var client=jayson[_0x02b0('0x1b')][_0x02b0('0x1c')]({'port':0x232a});function respondWithRpcPromise(_0x310bd4,_0x22fbfd,_0x7d5af8,_0xb069fc){return new BPromise(function(_0x508971,_0x50dc6a){var _0x12b001=_0xb069fc||client;return _0x12b001[_0x02b0('0x1d')](_0x310bd4,_0x7d5af8)[_0x02b0('0x1e')](function(_0x465505){logger[_0x02b0('0x1f')](_0x02b0('0x20'),_0x22fbfd,'request\x20sent');logger['debug'](_0x02b0('0x21'),_0x22fbfd,'request\x20sent',JSON[_0x02b0('0x22')](_0x465505));if(_0x465505[_0x02b0('0x23')]){if(_0x465505[_0x02b0('0x23')][_0x02b0('0x24')]===0x1f4){logger[_0x02b0('0x23')](_0x02b0('0x20'),_0x22fbfd,_0x465505[_0x02b0('0x23')][_0x02b0('0x25')]);return _0x50dc6a(_0x465505[_0x02b0('0x23')][_0x02b0('0x25')]);}logger[_0x02b0('0x23')](_0x02b0('0x20'),_0x22fbfd,_0x465505[_0x02b0('0x23')][_0x02b0('0x25')]);return _0x508971(_0x465505[_0x02b0('0x23')]['message']);}else{logger[_0x02b0('0x1f')](_0x02b0('0x20'),_0x22fbfd,_0x02b0('0x26'));_0x508971(_0x465505[_0x02b0('0x27')]['message']);}})[_0x02b0('0x28')](function(_0x3762d3){logger['error'](_0x02b0('0x20'),_0x22fbfd,_0x3762d3);_0x50dc6a(_0x3762d3);});});}function respondWithStatusCode(_0x41a0de,_0x21f18e){_0x21f18e=_0x21f18e||0xcc;return function(_0x2f64a6){if(_0x2f64a6){return _0x41a0de[_0x02b0('0x29')](_0x21f18e);}return _0x41a0de[_0x02b0('0x2a')](_0x21f18e)[_0x02b0('0x2b')]();};}function respondWithResult(_0x247697,_0x26e272){_0x26e272=_0x26e272||0xc8;return function(_0x1bcce3){if(_0x1bcce3){return _0x247697[_0x02b0('0x2a')](_0x26e272)['json'](_0x1bcce3);}};}function respondWithFilteredResult(_0x2a1dbe,_0x45a756){return function(_0x53230e){if(_0x53230e){var _0x167ef7=typeof _0x45a756[_0x02b0('0x2c')]===_0x02b0('0x2d')&&typeof _0x45a756[_0x02b0('0x2e')]==='undefined';var _0x2fb696=_0x53230e['count'];var _0x2210b7=_0x167ef7?0x0:_0x45a756[_0x02b0('0x2c')];var _0x1d5c7c=_0x167ef7?_0x53230e[_0x02b0('0x2f')]:_0x45a756[_0x02b0('0x2c')]+_0x45a756[_0x02b0('0x2e')];var _0x3ab197;if(_0x1d5c7c>=_0x2fb696){_0x1d5c7c=_0x2fb696;_0x3ab197=0xc8;}else{_0x3ab197=0xce;}_0x2a1dbe[_0x02b0('0x2a')](_0x3ab197);return _0x2a1dbe[_0x02b0('0x30')](_0x02b0('0x31'),_0x2210b7+'-'+_0x1d5c7c+'/'+_0x2fb696)[_0x02b0('0x32')](_0x53230e);}return null;};}function patchUpdates(_0xd93e16){return function(_0x51f3b8){try{jsonpatch['apply'](_0x51f3b8,_0xd93e16,!![]);}catch(_0x25b801){return BPromise[_0x02b0('0x33')](_0x25b801);}return _0x51f3b8[_0x02b0('0x34')]();};}function saveUpdates(_0x1abf99,_0x5d8a2d){return function(_0xc9fdd6){if(_0xc9fdd6){return _0xc9fdd6[_0x02b0('0x35')](_0x1abf99)[_0x02b0('0x1e')](function(_0x445e87){return _0x445e87;});}return null;};}function removeEntity(_0x5beb8b,_0x4e3b80){return function(_0x1f84eb){if(_0x1f84eb){return _0x1f84eb[_0x02b0('0x36')]()[_0x02b0('0x1e')](function(){var _0x3e9969=_0x1f84eb[_0x02b0('0x37')]({'plain':!![]});var _0x44ebe0=_0x02b0('0x38');return db[_0x02b0('0x39')][_0x02b0('0x36')]({'where':{'type':_0x44ebe0,'resourceId':_0x3e9969['id']}})[_0x02b0('0x1e')](function(){return _0x1f84eb;});})[_0x02b0('0x1e')](function(){_0x5beb8b[_0x02b0('0x2a')](0xcc)['end']();});}};}function handleEntityNotFound(_0x128e9f,_0x139256){return function(_0x29ea58){if(!_0x29ea58){_0x128e9f[_0x02b0('0x29')](0x194);}return _0x29ea58;};}function handleError(_0x49ca06,_0x4ab1a2){_0x4ab1a2=_0x4ab1a2||0x1f4;return function(_0xe4303a){logger[_0x02b0('0x23')](_0xe4303a['stack']);if(_0xe4303a[_0x02b0('0x3a')]){delete _0xe4303a[_0x02b0('0x3a')];}_0x49ca06['status'](_0x4ab1a2)[_0x02b0('0x3b')](_0xe4303a);};}exports[_0x02b0('0x3c')]=function(_0x567191,_0x27b0e1){var _0x2a8bb3={},_0x5382f8={},_0x768e77={'count':0x0,'rows':[]};var _0x1a09d9=_[_0x02b0('0x3d')](db[_0x02b0('0x3e')][_0x02b0('0x3f')],function(_0x35b265){return{'name':_0x35b265[_0x02b0('0x40')],'type':_0x35b265[_0x02b0('0x41')]['key']};});_0x5382f8[_0x02b0('0x42')]=_['map'](_0x1a09d9,'name');_0x5382f8[_0x02b0('0x43')]=_[_0x02b0('0x44')](_0x567191[_0x02b0('0x43')]);_0x5382f8['filters']=_[_0x02b0('0x45')](_0x5382f8[_0x02b0('0x42')],_0x5382f8[_0x02b0('0x43')]);_0x2a8bb3[_0x02b0('0x46')]=_[_0x02b0('0x45')](_0x5382f8[_0x02b0('0x42')],qs[_0x02b0('0x47')](_0x567191[_0x02b0('0x43')]['fields']));_0x2a8bb3[_0x02b0('0x46')]=_0x2a8bb3[_0x02b0('0x46')][_0x02b0('0x48')]?_0x2a8bb3[_0x02b0('0x46')]:_0x5382f8['model'];if(!_0x567191[_0x02b0('0x43')][_0x02b0('0x49')](_0x02b0('0x4a'))){_0x2a8bb3[_0x02b0('0x2e')]=qs[_0x02b0('0x2e')](_0x567191[_0x02b0('0x43')]['limit']);_0x2a8bb3['offset']=qs[_0x02b0('0x2c')](_0x567191['query'][_0x02b0('0x2c')]);}_0x2a8bb3[_0x02b0('0x4b')]=qs[_0x02b0('0x4c')](_0x567191[_0x02b0('0x43')][_0x02b0('0x4c')]);_0x2a8bb3[_0x02b0('0x4d')]=qs[_0x02b0('0x4e')](_[_0x02b0('0x4f')](_0x567191[_0x02b0('0x43')],_0x5382f8['filters']),_0x1a09d9);if(_0x567191['query'][_0x02b0('0x50')]){_0x2a8bb3[_0x02b0('0x4d')]=_['merge'](_0x2a8bb3[_0x02b0('0x4d')],{'$or':_[_0x02b0('0x3d')](_0x1a09d9,function(_0x2107ee){if(_0x2107ee[_0x02b0('0x41')]!==_0x02b0('0x51')){var _0x293e29={};_0x293e29[_0x2107ee[_0x02b0('0x3a')]]={'$like':'%'+_0x567191[_0x02b0('0x43')][_0x02b0('0x50')]+'%'};return _0x293e29;}})});}_0x2a8bb3=_[_0x02b0('0x52')]({},_0x2a8bb3,_0x567191[_0x02b0('0x53')]);var _0x5acdb6={'where':_0x2a8bb3['where']};return db[_0x02b0('0x3e')][_0x02b0('0x2f')](_0x5acdb6)[_0x02b0('0x1e')](function(_0x48f304){_0x768e77[_0x02b0('0x2f')]=_0x48f304;if(_0x567191['query'][_0x02b0('0x54')]){_0x2a8bb3[_0x02b0('0x55')]=[{'all':!![]}];}return db[_0x02b0('0x3e')][_0x02b0('0x56')](_0x2a8bb3);})[_0x02b0('0x1e')](function(_0x294223){_0x768e77['rows']=_0x294223;return _0x768e77;})['then'](respondWithFilteredResult(_0x27b0e1,_0x2a8bb3))['catch'](handleError(_0x27b0e1,null));};exports[_0x02b0('0x57')]=function(_0x2e773b,_0x4126cf){var _0xd7a8f0={'raw':!![],'where':{'id':_0x2e773b[_0x02b0('0x58')]['id']}},_0x54644b={};_0x54644b[_0x02b0('0x42')]=_[_0x02b0('0x44')](db[_0x02b0('0x3e')][_0x02b0('0x3f')]);_0x54644b[_0x02b0('0x43')]=_[_0x02b0('0x44')](_0x2e773b['query']);_0x54644b[_0x02b0('0x4e')]=_['intersection'](_0x54644b[_0x02b0('0x42')],_0x54644b[_0x02b0('0x43')]);_0xd7a8f0['attributes']=_['intersection'](_0x54644b['model'],qs[_0x02b0('0x47')](_0x2e773b[_0x02b0('0x43')][_0x02b0('0x47')]));_0xd7a8f0[_0x02b0('0x46')]=_0xd7a8f0[_0x02b0('0x46')][_0x02b0('0x48')]?_0xd7a8f0[_0x02b0('0x46')]:_0x54644b['model'];if(_0x2e773b['query'][_0x02b0('0x54')]){_0xd7a8f0[_0x02b0('0x55')]=[{'all':!![]}];}_0xd7a8f0=_[_0x02b0('0x52')]({},_0xd7a8f0,_0x2e773b[_0x02b0('0x53')]);return db['ChatQueue'][_0x02b0('0x59')](_0xd7a8f0)[_0x02b0('0x1e')](handleEntityNotFound(_0x4126cf,null))[_0x02b0('0x1e')](respondWithResult(_0x4126cf,null))[_0x02b0('0x28')](handleError(_0x4126cf,null));};exports[_0x02b0('0x5a')]=function(_0x1f2a1a,_0x53d54c){return db[_0x02b0('0x3e')][_0x02b0('0x5a')](_0x1f2a1a[_0x02b0('0x5b')],{})[_0x02b0('0x1e')](function(_0x5d79e8){var _0xab25d=_0x1f2a1a[_0x02b0('0x5c')]['get']({'plain':!![]});if(!_0xab25d)throw new Error(_0x02b0('0x5d'));if(_0xab25d[_0x02b0('0x5e')]===_0x02b0('0x5c')){var _0x22b143=_0x5d79e8[_0x02b0('0x37')]({'plain':!![]});var _0x4a4f5f='ChatQueues';return db[_0x02b0('0x5f')][_0x02b0('0x59')]({'where':{'name':_0x4a4f5f,'userProfileId':_0xab25d[_0x02b0('0x60')]},'raw':!![]})[_0x02b0('0x1e')](function(_0x41aecc){if(_0x41aecc&&_0x41aecc[_0x02b0('0x61')]===0x0){return db[_0x02b0('0x39')][_0x02b0('0x5a')]({'name':_0x22b143['name'],'resourceId':_0x22b143['id'],'type':_0x41aecc[_0x02b0('0x3a')],'sectionId':_0x41aecc['id']},{})[_0x02b0('0x1e')](function(){return _0x5d79e8;});}else{return _0x5d79e8;}})[_0x02b0('0x28')](function(_0x46a01a){logger[_0x02b0('0x23')](_0x02b0('0x62'),_0x46a01a);throw _0x46a01a;});}return _0x5d79e8;})[_0x02b0('0x1e')](respondWithResult(_0x53d54c,0xc9))['catch'](handleError(_0x53d54c,null));};exports['update']=function(_0x1fb950,_0x3b2324){if(_0x1fb950[_0x02b0('0x5b')]['id']){delete _0x1fb950[_0x02b0('0x5b')]['id'];}return db[_0x02b0('0x3e')]['find']({'where':{'id':_0x1fb950[_0x02b0('0x58')]['id']}})[_0x02b0('0x1e')](handleEntityNotFound(_0x3b2324,null))[_0x02b0('0x1e')](saveUpdates(_0x1fb950[_0x02b0('0x5b')],null))[_0x02b0('0x1e')](respondWithResult(_0x3b2324,null))[_0x02b0('0x28')](handleError(_0x3b2324,null));};exports[_0x02b0('0x36')]=function(_0x2bfa25,_0x570327){return db[_0x02b0('0x3e')]['find']({'where':{'id':_0x2bfa25[_0x02b0('0x58')]['id']}})[_0x02b0('0x1e')](handleEntityNotFound(_0x570327,null))['then'](removeEntity(_0x570327,null))['catch'](handleError(_0x570327,null));};exports['describe']=function(_0x1d1236,_0x302dd6){return db['ChatQueue']['describe']()[_0x02b0('0x1e')](respondWithResult(_0x302dd6,null))[_0x02b0('0x28')](handleError(_0x302dd6,null));};exports[_0x02b0('0x63')]=function(_0x281cd2,_0x27912b,_0x39cc94){var _0x4805b4={'raw':!![],'where':{}},_0x78489d={},_0x1c2327;return db[_0x02b0('0x3e')][_0x02b0('0x64')]({'where':{'id':_0x281cd2['params']['id']}})['then'](handleEntityNotFound(_0x27912b,null))['then'](function(_0x405bb0){if(_0x405bb0){_0x1c2327=_0x405bb0['get']({'plain':!![]});_0x78489d['model']=_[_0x02b0('0x44')](db[_0x02b0('0x65')]['rawAttributes']);_0x78489d['query']=_['keys'](_0x281cd2[_0x02b0('0x43')]);_0x78489d[_0x02b0('0x4e')]=_[_0x02b0('0x45')](_0x78489d[_0x02b0('0x42')],_0x78489d[_0x02b0('0x43')]);_0x4805b4[_0x02b0('0x46')]=_[_0x02b0('0x45')](_0x78489d['model'],qs[_0x02b0('0x47')](_0x281cd2[_0x02b0('0x43')][_0x02b0('0x47')]));_0x4805b4['attributes']=_0x4805b4[_0x02b0('0x46')][_0x02b0('0x48')]?_0x4805b4['attributes']:_0x78489d[_0x02b0('0x42')];if(!_0x281cd2[_0x02b0('0x43')][_0x02b0('0x49')](_0x02b0('0x4a'))){_0x4805b4['limit']=qs[_0x02b0('0x2e')](_0x281cd2[_0x02b0('0x43')][_0x02b0('0x2e')]);_0x4805b4[_0x02b0('0x2c')]=qs[_0x02b0('0x2c')](_0x281cd2['query'][_0x02b0('0x2c')]);}_0x4805b4[_0x02b0('0x4b')]=qs[_0x02b0('0x4c')](_0x281cd2[_0x02b0('0x43')]['sort']);_0x4805b4[_0x02b0('0x4d')]=qs['filters'](_[_0x02b0('0x4f')](_0x281cd2[_0x02b0('0x43')],_0x78489d['filters']));_0x4805b4[_0x02b0('0x4d')]['ChatQueueId']=_0x405bb0['id'];if(_0x281cd2['query'][_0x02b0('0x50')]){_0x4805b4['where']=_[_0x02b0('0x52')](_0x4805b4['where'],{'$or':_[_0x02b0('0x3d')](_0x4805b4[_0x02b0('0x46')],function(_0x2a4c6b){var _0x1c07d1={};_0x1c07d1[_0x2a4c6b]={'$like':'%'+_0x281cd2[_0x02b0('0x43')][_0x02b0('0x50')]+'%'};return _0x1c07d1;})});}_0x4805b4=_[_0x02b0('0x52')]({},_0x4805b4,_0x281cd2[_0x02b0('0x53')]);return db['UserChatQueue'][_0x02b0('0x56')](_0x4805b4);}})['then'](function(_0x8a3039){if(_0x8a3039){return db[_0x02b0('0x66')]['findAndCountAll']({'where':{'id':_['map'](_0x8a3039,_0x02b0('0x67')),'role':_0x02b0('0x68')},'attributes':['id','name','chatPause',_0x02b0('0x69'),_0x02b0('0x6a')]});}})[_0x02b0('0x1e')](function(_0x44ec63){if(_0x44ec63){return{'count':_0x44ec63['count'],'rows':_[_0x02b0('0x3d')](_0x44ec63['rows'],function(_0x53566d){return{'membername':_0x53566d['name'],'UserId':_0x53566d['id'],'queue_name':_0x1c2327[_0x02b0('0x3a')],'ChatQueueId':_0x1c2327['id'],'interface':util[_0x02b0('0x6b')](_0x02b0('0x6c'),'SIP',_0x53566d[_0x02b0('0x3a')]),'penalty':0x0,'paused':_0x53566d[_0x02b0('0x6d')],'createdAt':_0x53566d[_0x02b0('0x6a')],'updatedAt':_0x53566d[_0x02b0('0x69')]};})};}else{return{'count':0x0,'rows':[]};}})[_0x02b0('0x1e')](respondWithFilteredResult(_0x27912b,_0x4805b4))[_0x02b0('0x28')](handleError(_0x27912b,null));};exports[_0x02b0('0x6e')]=function(_0x3b10aa,_0x4bb3d6,_0x711067){var _0x487f9a={};var _0xf3244e={};var _0x2c31b0;var _0x12befb;return db[_0x02b0('0x3e')][_0x02b0('0x64')]({'where':{'id':_0x3b10aa[_0x02b0('0x58')]['id']}})['then'](handleEntityNotFound(_0x4bb3d6,null))['then'](function(_0x44012a){if(_0x44012a){_0x2c31b0=_0x44012a;_0xf3244e[_0x02b0('0x42')]=_[_0x02b0('0x44')](db[_0x02b0('0x6f')][_0x02b0('0x3f')]);_0xf3244e[_0x02b0('0x43')]=_[_0x02b0('0x44')](_0x3b10aa['query']);_0xf3244e['filters']=_[_0x02b0('0x45')](_0xf3244e[_0x02b0('0x42')],_0xf3244e[_0x02b0('0x43')]);_0x487f9a['attributes']=_['intersection'](_0xf3244e[_0x02b0('0x42')],qs['fields'](_0x3b10aa['query'][_0x02b0('0x47')]));_0x487f9a[_0x02b0('0x46')]=_0x487f9a[_0x02b0('0x46')][_0x02b0('0x48')]?_0x487f9a[_0x02b0('0x46')]:_0xf3244e['model'];_0x487f9a[_0x02b0('0x4b')]=qs[_0x02b0('0x4c')](_0x3b10aa[_0x02b0('0x43')]['sort']);_0x487f9a[_0x02b0('0x4d')]=qs[_0x02b0('0x4e')](_[_0x02b0('0x4f')](_0x3b10aa['query'],_0xf3244e[_0x02b0('0x4e')]));if(_0x3b10aa[_0x02b0('0x43')][_0x02b0('0x50')]){_0x487f9a[_0x02b0('0x4d')]=_[_0x02b0('0x52')](_0x487f9a['where'],{'$or':_[_0x02b0('0x3d')](_0x487f9a[_0x02b0('0x46')],function(_0x1d7887){var _0x8a6502={};_0x8a6502[_0x1d7887]={'$like':'%'+_0x3b10aa[_0x02b0('0x43')]['filter']+'%'};return _0x8a6502;})});}_0x487f9a=_['merge']({},_0x487f9a,_0x3b10aa[_0x02b0('0x53')]);return _0x2c31b0[_0x02b0('0x6e')](_0x487f9a);}})[_0x02b0('0x1e')](function(_0x1c64a9){if(_0x1c64a9){_0x12befb=_0x1c64a9[_0x02b0('0x48')];if(!_0x3b10aa[_0x02b0('0x43')][_0x02b0('0x49')](_0x02b0('0x4a'))){_0x487f9a['limit']=qs['limit'](_0x3b10aa['query']['limit']);_0x487f9a[_0x02b0('0x2c')]=qs[_0x02b0('0x2c')](_0x3b10aa[_0x02b0('0x43')][_0x02b0('0x2c')]);}return _0x2c31b0[_0x02b0('0x6e')](_0x487f9a);}})['then'](function(_0x963b96){if(_0x963b96){return _0x963b96?{'count':_0x12befb,'rows':_0x963b96}:null;}})[_0x02b0('0x1e')](respondWithResult(_0x4bb3d6,null))[_0x02b0('0x28')](handleError(_0x4bb3d6,null));};exports[_0x02b0('0x70')]=function(_0x1c183a,_0x27c233,_0xecda25){var _0x2b6b14=_0x1c183a['body']['ids'];return db['Team']['findAll']({'where':{'id':_0x2b6b14},'attributes':['id'],'include':[{'model':db[_0x02b0('0x66')],'as':'Agents','attributes':['id','name',_0x02b0('0x71'),_0x02b0('0x72'),'interface'],'raw':!![]}]})['then'](function(_0x493fde){if(_0x493fde){var _0x2dbae0=_[_0x02b0('0x73')](_0x493fde,function(_0x280fd4){var _0x1b559c=_0x280fd4[_0x02b0('0x37')]({'plain':!![]});return _0x1b559c[_0x02b0('0x74')];});return db[_0x02b0('0x3e')][_0x02b0('0x59')]({'where':{'id':_0x1c183a['params']['id']}})[_0x02b0('0x1e')](function(_0x3e4f6e){return db[_0x02b0('0x75')][_0x02b0('0x76')](function(_0x488ed6){return _0x3e4f6e['addTeams'](_0x2b6b14,{'transaction':_0x488ed6})[_0x02b0('0x1e')](function(){return BPromise['each'](_0x2dbae0,function(_0x57d3b5){return db[_0x02b0('0x65')][_0x02b0('0x77')]({'where':{'UserId':_0x57d3b5['id'],'ChatQueueId':_0x1c183a[_0x02b0('0x58')]['id']},'transaction':_0x488ed6});});})[_0x02b0('0x1e')](function(){_0x2dbae0['forEach'](function(_0x1c04d3){socket['emit']('userChatQueue:save',{'UserId':_0x1c04d3['id'],'ChatQueueId':_0x3e4f6e['id']});});});});});}})['then'](respondWithStatusCode(_0x27c233,null))[_0x02b0('0x28')](handleError(_0x27c233,null));};exports[_0x02b0('0x78')]=function(_0x162b1a,_0x55a380,_0x3c157c){return db[_0x02b0('0x6f')][_0x02b0('0x56')]({'where':{'id':_0x162b1a[_0x02b0('0x43')][_0x02b0('0x79')]},'attributes':['id'],'include':[{'model':db['User'],'as':_0x02b0('0x74'),'attributes':['id'],'raw':!![]}]})[_0x02b0('0x1e')](handleEntityNotFound(_0x55a380,null))[_0x02b0('0x1e')](function(_0x42fe8d){var _0x5ab14d=_[_0x02b0('0x3d')](_0x42fe8d,'id');var _0x54ac55=[];var _0x3abcc3=[];var _0xe07b4e=squel[_0x02b0('0x7a')]();_0xe07b4e[_0x02b0('0x7b')](_0x02b0('0x7c'))[_0x02b0('0x7d')]('team_has_chat_queues','tq')[_0x02b0('0x7e')]('user_has_teams','ut',_0x02b0('0x7f'))[_0x02b0('0x4d')](_0x02b0('0x80'),_0x162b1a[_0x02b0('0x58')]['id']);for(var _0x1c6af4=0x0;_0x1c6af4<_0x42fe8d[_0x02b0('0x48')];_0x1c6af4+=0x1){let _0x3e9c53=_0x42fe8d[_0x1c6af4];for(var _0x5a03b1=0x0;_0x5a03b1<_0x3e9c53[_0x02b0('0x74')]['length'];_0x5a03b1+=0x1){let _0x409197=_0x3e9c53['Agents'][_0x5a03b1];var _0x328ab6=_0xe07b4e[_0x02b0('0x81')]();_0x328ab6[_0x02b0('0x4d')]('ut.UserId\x20=\x20?',_0x409197['id']);_0x3abcc3['push'](db[_0x02b0('0x75')][_0x02b0('0x43')](_0x328ab6[_0x02b0('0x82')](),{'type':db[_0x02b0('0x75')][_0x02b0('0x83')]['SELECT']})[_0x02b0('0x1e')](function(_0x2de23e){if(_0x2de23e[_0x02b0('0x48')]===0x1){return _0x409197['id'];}else{var _0x1ab1a8=_['every'](_[_0x02b0('0x3d')](_0x2de23e,'TeamId'),function(_0x5d12a6){return _[_0x02b0('0x84')](_0x5ab14d,_0x5d12a6);});if(_0x1ab1a8){return _0x409197['id'];}}}));}}return BPromise[_0x02b0('0x85')](_0x3abcc3)[_0x02b0('0x1e')](function(_0x2689f0){_0x54ac55=_(_0x54ac55)[_0x02b0('0x86')](_0x2689f0)[_0x02b0('0x87')]()[_0x02b0('0x88')]();return db['ChatQueue'][_0x02b0('0x59')]({'where':{'id':_0x162b1a[_0x02b0('0x58')]['id']}})['then'](function(_0x16ed69){return db[_0x02b0('0x75')][_0x02b0('0x76')](function(_0x4a2293){return _0x16ed69[_0x02b0('0x78')](_0x162b1a['query'][_0x02b0('0x79')],{'transaction':_0x4a2293})[_0x02b0('0x1e')](function(){if(!_[_0x02b0('0x89')](_0x54ac55)){return _0x16ed69[_0x02b0('0x8a')](_0x54ac55,{'transaction':_0x4a2293});}})[_0x02b0('0x1e')](function(){_0x54ac55[_0x02b0('0x8b')](function(_0x1365b4){socket['emit'](_0x02b0('0x8c'),{'UserId':_0x1365b4,'ChatQueueId':_0x16ed69['id']});});});});});});})[_0x02b0('0x1e')](respondWithStatusCode(_0x55a380,null))[_0x02b0('0x28')](handleError(_0x55a380,null));};exports[_0x02b0('0x8d')]=function(_0x1c1302,_0x1d6317,_0x1c7286){return db[_0x02b0('0x3e')][_0x02b0('0x59')]({'where':{'id':_0x1c1302[_0x02b0('0x58')]['id']}})['then'](handleEntityNotFound(_0x1d6317,null))[_0x02b0('0x1e')](function(_0x289bb4){if(_0x289bb4){return _0x289bb4[_0x02b0('0x8d')](_0x1c1302[_0x02b0('0x5b')][_0x02b0('0x79')],_[_0x02b0('0x8e')](_0x1c1302['body'],['ids','id'])||{})[_0x02b0('0x8f')](function(_0x445f18){for(var _0x4c0666=0x0;_0x4c0666<_0x1c1302['body']['ids'][_0x02b0('0x48')];_0x4c0666+=0x1){socket['emit'](_0x02b0('0x90'),{'UserId':Number(_0x1c1302[_0x02b0('0x5b')]['ids'][_0x4c0666]),'ChatQueueId':Number(_0x1c1302['params']['id'])});}return _0x445f18;});}})[_0x02b0('0x1e')](respondWithResult(_0x1d6317,null))[_0x02b0('0x28')](handleError(_0x1d6317,null));};exports[_0x02b0('0x8a')]=function(_0x47a0d1,_0x137c45,_0x52fa1f){return db[_0x02b0('0x3e')][_0x02b0('0x59')]({'where':{'id':_0x47a0d1[_0x02b0('0x58')]['id']}})['then'](handleEntityNotFound(_0x137c45,null))[_0x02b0('0x1e')](function(_0x80c5f1){if(_0x80c5f1){return _0x80c5f1[_0x02b0('0x8a')](_0x47a0d1[_0x02b0('0x43')][_0x02b0('0x79')])['then'](function(){if(_[_0x02b0('0x91')](_0x47a0d1[_0x02b0('0x43')]['ids'])){for(var _0xe37dcf=0x0;_0xe37dcf<_0x47a0d1[_0x02b0('0x43')][_0x02b0('0x79')][_0x02b0('0x48')];_0xe37dcf+=0x1){socket[_0x02b0('0x92')](_0x02b0('0x8c'),{'UserId':Number(_0x47a0d1[_0x02b0('0x43')][_0x02b0('0x79')][_0xe37dcf]),'ChatQueueId':Number(_0x47a0d1[_0x02b0('0x58')]['id'])});}}else{socket[_0x02b0('0x92')]('userChatQueue:remove',{'UserId':Number(_0x47a0d1['query']['ids']),'ChatQueueId':Number(_0x47a0d1['params']['id'])});}});}})['then'](respondWithStatusCode(_0x137c45,null))['catch'](handleError(_0x137c45,null));};exports[_0x02b0('0x93')]=function(_0x2ff017,_0x351634,_0x58e9f5){var _0x412c38={};var _0xf41191={};var _0x4aef44;var _0x105447;return db['ChatQueue'][_0x02b0('0x64')]({'where':{'id':_0x2ff017[_0x02b0('0x58')]['id']}})[_0x02b0('0x1e')](handleEntityNotFound(_0x351634,null))['then'](function(_0x3b11e1){if(_0x3b11e1){_0x4aef44=_0x3b11e1;_0xf41191[_0x02b0('0x42')]=_[_0x02b0('0x44')](db[_0x02b0('0x66')][_0x02b0('0x3f')]);_0xf41191[_0x02b0('0x43')]=_['keys'](_0x2ff017[_0x02b0('0x43')]);_0xf41191[_0x02b0('0x4e')]=_['intersection'](_0xf41191[_0x02b0('0x42')],_0xf41191[_0x02b0('0x43')]);_0x412c38[_0x02b0('0x46')]=_['intersection'](_0xf41191[_0x02b0('0x42')],qs[_0x02b0('0x47')](_0x2ff017['query'][_0x02b0('0x47')]));_0x412c38[_0x02b0('0x46')]=_0x412c38[_0x02b0('0x46')]['length']?_0x412c38[_0x02b0('0x46')]:_0xf41191[_0x02b0('0x42')];_0x412c38[_0x02b0('0x4b')]=qs[_0x02b0('0x4c')](_0x2ff017[_0x02b0('0x43')][_0x02b0('0x4c')]);_0x412c38[_0x02b0('0x4d')]=qs[_0x02b0('0x4e')](_[_0x02b0('0x4f')](_0x2ff017['query'],_0xf41191[_0x02b0('0x4e')]));if(_0x2ff017['query']['filter']){_0x412c38[_0x02b0('0x4d')]=_[_0x02b0('0x52')](_0x412c38[_0x02b0('0x4d')],{'$or':_[_0x02b0('0x3d')](_0x412c38[_0x02b0('0x46')],function(_0x3c11b2){var _0xc639ce={};_0xc639ce[_0x3c11b2]={'$like':'%'+_0x2ff017[_0x02b0('0x43')][_0x02b0('0x50')]+'%'};return _0xc639ce;})});}_0x412c38=_[_0x02b0('0x52')]({},_0x412c38,_0x2ff017[_0x02b0('0x53')]);return _0x4aef44[_0x02b0('0x93')](_0x412c38);}})['then'](function(_0x2a4e56){if(_0x2a4e56){_0x105447=_0x2a4e56[_0x02b0('0x48')];if(!_0x2ff017[_0x02b0('0x43')][_0x02b0('0x49')](_0x02b0('0x4a'))){_0x412c38[_0x02b0('0x2e')]=qs[_0x02b0('0x2e')](_0x2ff017[_0x02b0('0x43')]['limit']);_0x412c38[_0x02b0('0x2c')]=qs['offset'](_0x2ff017['query'][_0x02b0('0x2c')]);}return _0x4aef44[_0x02b0('0x93')](_0x412c38);}})['then'](function(_0x4987a9){if(_0x4987a9){return _0x4987a9?{'count':_0x105447,'rows':_0x4987a9}:null;}})[_0x02b0('0x1e')](respondWithResult(_0x351634,null))[_0x02b0('0x28')](handleError(_0x351634,null));};
\ No newline at end of file
index aeaef16..c6180bc 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa9c4=['../../mysqldb','ChatQueue','remove','events'];(function(_0x3cacdf,_0x1e234e){var _0x5edb3f=function(_0x4283e8){while(--_0x4283e8){_0x3cacdf['push'](_0x3cacdf['shift']());}};_0x5edb3f(++_0x1e234e);}(_0xa9c4,0x18f));var _0x4a9c=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0xa9c4[_0x3dd15e];return _0x231fd0;};'use strict';var EventEmitter=require(_0x4a9c('0x0'));var ChatQueue=require(_0x4a9c('0x1'))['db'][_0x4a9c('0x2')];var ChatQueueEvents=new EventEmitter();ChatQueueEvents['setMaxListeners'](0x0);var events={'afterCreate':'save','afterUpdate':'update','afterDestroy':_0x4a9c('0x3')};function emitEvent(_0x316906){return function(_0x44516a,_0x517313,_0x422937){ChatQueueEvents['emit'](_0x316906+':'+_0x44516a['id'],_0x44516a);ChatQueueEvents['emit'](_0x316906,_0x44516a);_0x422937(null);};}for(var e in events){if(events['hasOwnProperty'](e)){var event=events[e];ChatQueue['hook'](e,emitEvent(event));}}module['exports']=ChatQueueEvents;
\ No newline at end of file
+var _0xba92=['hasOwnProperty','hook','events','../../mysqldb','ChatQueue','update','remove','emit'];(function(_0x24841e,_0x5aeddc){var _0x5ed3e7=function(_0x4ad5e4){while(--_0x4ad5e4){_0x24841e['push'](_0x24841e['shift']());}};_0x5ed3e7(++_0x5aeddc);}(_0xba92,0x1e2));var _0x2ba9=function(_0x2e3876,_0x5b19d){_0x2e3876=_0x2e3876-0x0;var _0x12b466=_0xba92[_0x2e3876];return _0x12b466;};'use strict';var EventEmitter=require(_0x2ba9('0x0'));var ChatQueue=require(_0x2ba9('0x1'))['db'][_0x2ba9('0x2')];var ChatQueueEvents=new EventEmitter();ChatQueueEvents['setMaxListeners'](0x0);var events={'afterCreate':'save','afterUpdate':_0x2ba9('0x3'),'afterDestroy':_0x2ba9('0x4')};function emitEvent(_0x53c796){return function(_0x42d198,_0x33493b,_0x10d27c){ChatQueueEvents[_0x2ba9('0x5')](_0x53c796+':'+_0x42d198['id'],_0x42d198);ChatQueueEvents[_0x2ba9('0x5')](_0x53c796,_0x42d198);_0x10d27c(null);};}for(var e in events){if(events[_0x2ba9('0x6')](e)){var event=events[e];ChatQueue[_0x2ba9('0x7')](e,emitEvent(event));}}module['exports']=ChatQueueEvents;
\ No newline at end of file
index 27831fc..4f88808 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2e9d=['../../config/environment','exports','define','ChatQueue','util','../../config/logger','api','moment','bluebird','path','rimraf'];(function(_0xeb8c29,_0x20e77e){var _0xae197=function(_0x2e7cf3){while(--_0x2e7cf3){_0xeb8c29['push'](_0xeb8c29['shift']());}};_0xae197(++_0x20e77e);}(_0x2e9d,0x10c));var _0xd2e9=function(_0x20a558,_0x160e0e){_0x20a558=_0x20a558-0x0;var _0x53d3f7=_0x2e9d[_0x20a558];return _0x53d3f7;};'use strict';var _=require('lodash');var util=require(_0xd2e9('0x0'));var logger=require(_0xd2e9('0x1'))(_0xd2e9('0x2'));var moment=require(_0xd2e9('0x3'));var BPromise=require(_0xd2e9('0x4'));var rp=require('request-promise');var fs=require('fs');var path=require(_0xd2e9('0x5'));var rimraf=require(_0xd2e9('0x6'));var config=require(_0xd2e9('0x7'));var attributes=require('./chatQueue.attributes');module[_0xd2e9('0x8')]=function(_0x203409,_0x3cc66c){return _0x203409[_0xd2e9('0x9')](_0xd2e9('0xa'),attributes,{'tableName':'chat_queues','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x88a9=['moment','path','rimraf','../../config/environment','./chatQueue.attributes','define','chat_queues','lodash','util','../../config/logger','api'];(function(_0x257642,_0x270a80){var _0x3d813b=function(_0x2a1c8a){while(--_0x2a1c8a){_0x257642['push'](_0x257642['shift']());}};_0x3d813b(++_0x270a80);}(_0x88a9,0xcd));var _0x988a=function(_0xe4827,_0x19c922){_0xe4827=_0xe4827-0x0;var _0xfde1af=_0x88a9[_0xe4827];return _0xfde1af;};'use strict';var _=require(_0x988a('0x0'));var util=require(_0x988a('0x1'));var logger=require(_0x988a('0x2'))(_0x988a('0x3'));var moment=require(_0x988a('0x4'));var BPromise=require('bluebird');var rp=require('request-promise');var fs=require('fs');var path=require(_0x988a('0x5'));var rimraf=require(_0x988a('0x6'));var config=require(_0x988a('0x7'));var attributes=require(_0x988a('0x8'));module['exports']=function(_0x1301f6,_0x3563e4){return _0x1301f6[_0x988a('0x9')]('ChatQueue',attributes,{'tableName':_0x988a('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 88d7818..69e9248 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa786=['register','info','ChatQueue,\x20%s,\x20%s','request\x20sent','debug','ChatQueue,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','GetChatQueue','ChatQueue','findAll','options','raw','where','attributes','include','map','model','then','ShowChatQueue','find','lodash','util','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','../../config/environment','client','redis','defaults','localhost','socket.io-emitter','./chatQueue.socket'];(function(_0x4a20bf,_0x20c076){var _0x567dd1=function(_0x23b747){while(--_0x23b747){_0x4a20bf['push'](_0x4a20bf['shift']());}};_0x567dd1(++_0x20c076);}(_0xa786,0x1a9));var _0x6a78=function(_0x4d656c,_0xdc158f){_0x4d656c=_0x4d656c-0x0;var _0x12cffe=_0xa786[_0x4d656c];return _0x12cffe;};'use strict';var _=require(_0x6a78('0x0'));var util=require(_0x6a78('0x1'));var moment=require('moment');var BPromise=require(_0x6a78('0x2'));var rs=require(_0x6a78('0x3'));var fs=require('fs');var Redis=require(_0x6a78('0x4'));var db=require(_0x6a78('0x5'))['db'];var utils=require(_0x6a78('0x6'));var logger=require(_0x6a78('0x7'))('rpc');var config=require(_0x6a78('0x8'));var jayson=require('jayson/promise');var client=jayson[_0x6a78('0x9')]['http']({'port':0x232a});config[_0x6a78('0xa')]=_[_0x6a78('0xb')](config[_0x6a78('0xa')],{'host':_0x6a78('0xc'),'port':0x18eb});var socket=require(_0x6a78('0xd'))(new Redis(config[_0x6a78('0xa')]));require(_0x6a78('0xe'))[_0x6a78('0xf')](socket);function respondWithRpcPromise(_0xfe8ded,_0x46c99a,_0x4a16c8){return new BPromise(function(_0x2d5c7e,_0xd0aa8a){return client['request'](_0xfe8ded,_0x4a16c8)['then'](function(_0xb7ebfd){logger[_0x6a78('0x10')](_0x6a78('0x11'),_0x46c99a,_0x6a78('0x12'));logger[_0x6a78('0x13')](_0x6a78('0x14'),_0x46c99a,'request\x20sent',JSON[_0x6a78('0x15')](_0xb7ebfd));if(_0xb7ebfd['error']){if(_0xb7ebfd[_0x6a78('0x16')][_0x6a78('0x17')]===0x1f4){logger['error'](_0x6a78('0x11'),_0x46c99a,_0xb7ebfd[_0x6a78('0x16')]['message']);return _0xd0aa8a(_0xb7ebfd[_0x6a78('0x16')][_0x6a78('0x18')]);}logger['error']('ChatQueue,\x20%s,\x20%s',_0x46c99a,_0xb7ebfd['error'][_0x6a78('0x18')]);return _0x2d5c7e(_0xb7ebfd['error'][_0x6a78('0x18')]);}else{logger[_0x6a78('0x10')]('ChatQueue,\x20%s,\x20%s',_0x46c99a,_0x6a78('0x12'));_0x2d5c7e(_0xb7ebfd[_0x6a78('0x19')][_0x6a78('0x18')]);}})[_0x6a78('0x1a')](function(_0x2e248e){logger[_0x6a78('0x16')](_0x6a78('0x11'),_0x46c99a,_0x2e248e);_0xd0aa8a(_0x2e248e);});});}exports[_0x6a78('0x1b')]=function(_0x357f87){var _0x371bb8=this;return new Promise(function(_0x5caa7a,_0x337aee){return db[_0x6a78('0x1c')][_0x6a78('0x1d')]({'raw':_0x357f87[_0x6a78('0x1e')]?_0x357f87['options'][_0x6a78('0x1f')]===undefined?!![]:![]:!![],'where':_0x357f87[_0x6a78('0x1e')]?_0x357f87[_0x6a78('0x1e')][_0x6a78('0x20')]||null:null,'attributes':_0x357f87['options']?_0x357f87['options'][_0x6a78('0x21')]||null:null,'limit':_0x357f87[_0x6a78('0x1e')]?_0x357f87[_0x6a78('0x1e')]['limit']||null:null,'include':_0x357f87['options']?_0x357f87[_0x6a78('0x1e')][_0x6a78('0x22')]?_[_0x6a78('0x23')](_0x357f87[_0x6a78('0x1e')]['include'],function(_0x1b6ba1){return{'model':db[_0x1b6ba1[_0x6a78('0x24')]],'as':_0x1b6ba1['as'],'attributes':_0x1b6ba1[_0x6a78('0x21')],'include':_0x1b6ba1[_0x6a78('0x22')]?_[_0x6a78('0x23')](_0x1b6ba1['include'],function(_0x55a8b5){return{'model':db[_0x55a8b5[_0x6a78('0x24')]],'as':_0x55a8b5['as'],'attributes':_0x55a8b5[_0x6a78('0x21')],'include':_0x55a8b5[_0x6a78('0x22')]?_[_0x6a78('0x23')](_0x55a8b5[_0x6a78('0x22')],function(_0x3c9b3e){return{'model':db[_0x3c9b3e[_0x6a78('0x24')]],'as':_0x3c9b3e['as'],'attributes':_0x3c9b3e[_0x6a78('0x21')]};}):[]};}):[]};}):[]:[]})[_0x6a78('0x25')](function(_0x109854){logger[_0x6a78('0x10')](_0x6a78('0x1b'),_0x357f87);logger[_0x6a78('0x13')](_0x6a78('0x1b'),_0x357f87,JSON[_0x6a78('0x15')](_0x109854));_0x5caa7a(_0x109854);})[_0x6a78('0x1a')](function(_0x36a2c3){logger[_0x6a78('0x16')](_0x6a78('0x1b'),_0x36a2c3['message'],_0x357f87);_0x337aee(_0x371bb8[_0x6a78('0x16')](0x1f4,_0x36a2c3[_0x6a78('0x18')]));});});};exports[_0x6a78('0x26')]=function(_0x536216){var _0x191802=this;return new Promise(function(_0x55a65f,_0x29a8f9){return db[_0x6a78('0x1c')][_0x6a78('0x27')]({'raw':_0x536216[_0x6a78('0x1e')]?_0x536216[_0x6a78('0x1e')][_0x6a78('0x1f')]===undefined?!![]:![]:!![],'where':_0x536216[_0x6a78('0x1e')]?_0x536216[_0x6a78('0x1e')]['where']||null:null,'attributes':_0x536216['options']?_0x536216[_0x6a78('0x1e')]['attributes']||null:null,'include':_0x536216['options']?_0x536216[_0x6a78('0x1e')][_0x6a78('0x22')]?_[_0x6a78('0x23')](_0x536216[_0x6a78('0x1e')]['include'],function(_0x26ca7e){return{'model':db[_0x26ca7e[_0x6a78('0x24')]],'as':_0x26ca7e['as'],'attributes':_0x26ca7e['attributes'],'include':_0x26ca7e[_0x6a78('0x22')]?_[_0x6a78('0x23')](_0x26ca7e['include'],function(_0x97620e){return{'model':db[_0x97620e['model']],'as':_0x97620e['as'],'attributes':_0x97620e[_0x6a78('0x21')],'include':_0x97620e[_0x6a78('0x22')]?_[_0x6a78('0x23')](_0x97620e['include'],function(_0x2150c1){return{'model':db[_0x2150c1[_0x6a78('0x24')]],'as':_0x2150c1['as'],'attributes':_0x2150c1[_0x6a78('0x21')]};}):[]};}):[]};}):[]:[]})[_0x6a78('0x25')](function(_0x5d8b4d){logger[_0x6a78('0x10')](_0x6a78('0x26'),_0x536216);logger['debug']('ShowChatQueue',_0x536216,JSON[_0x6a78('0x15')](_0x5d8b4d));_0x55a65f(_0x5d8b4d);})['catch'](function(_0x245bdc){logger['error'](_0x6a78('0x26'),_0x245bdc[_0x6a78('0x18')],_0x536216);_0x29a8f9(_0x191802[_0x6a78('0x16')](0x1f4,_0x245bdc[_0x6a78('0x18')]));});});};
\ No newline at end of file
+var _0x13ae=['catch','ChatQueue','findAll','options','attributes','limit','include','model','map','GetChatQueue','ShowChatQueue','find','raw','where','randomstring','ioredis','../../config/logger','../../config/environment','jayson/promise','client','http','redis','defaults','localhost','./chatQueue.socket','register','request','then','info','ChatQueue,\x20%s,\x20%s','request\x20sent','debug','stringify','error','code','message'];(function(_0x56fe98,_0x43dc16){var _0x212f4f=function(_0xc3427d){while(--_0xc3427d){_0x56fe98['push'](_0x56fe98['shift']());}};_0x212f4f(++_0x43dc16);}(_0x13ae,0xe6));var _0xe13a=function(_0x3ab9ee,_0x4a74b8){_0x3ab9ee=_0x3ab9ee-0x0;var _0x82ee88=_0x13ae[_0x3ab9ee];return _0x82ee88;};'use strict';var _=require('lodash');var util=require('util');var moment=require('moment');var BPromise=require('bluebird');var rs=require(_0xe13a('0x0'));var fs=require('fs');var Redis=require(_0xe13a('0x1'));var db=require('../../mysqldb')['db'];var utils=require('../../config/utils');var logger=require(_0xe13a('0x2'))('rpc');var config=require(_0xe13a('0x3'));var jayson=require(_0xe13a('0x4'));var client=jayson[_0xe13a('0x5')][_0xe13a('0x6')]({'port':0x232a});config[_0xe13a('0x7')]=_[_0xe13a('0x8')](config[_0xe13a('0x7')],{'host':_0xe13a('0x9'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config['redis']));require(_0xe13a('0xa'))[_0xe13a('0xb')](socket);function respondWithRpcPromise(_0x12f549,_0x10477a,_0x11b623){return new BPromise(function(_0x4b0b03,_0x88125){return client[_0xe13a('0xc')](_0x12f549,_0x11b623)[_0xe13a('0xd')](function(_0x3a993f){logger[_0xe13a('0xe')](_0xe13a('0xf'),_0x10477a,_0xe13a('0x10'));logger[_0xe13a('0x11')]('ChatQueue,\x20%s,\x20%s,\x20%s',_0x10477a,_0xe13a('0x10'),JSON[_0xe13a('0x12')](_0x3a993f));if(_0x3a993f[_0xe13a('0x13')]){if(_0x3a993f[_0xe13a('0x13')][_0xe13a('0x14')]===0x1f4){logger[_0xe13a('0x13')](_0xe13a('0xf'),_0x10477a,_0x3a993f['error']['message']);return _0x88125(_0x3a993f[_0xe13a('0x13')][_0xe13a('0x15')]);}logger[_0xe13a('0x13')](_0xe13a('0xf'),_0x10477a,_0x3a993f[_0xe13a('0x13')][_0xe13a('0x15')]);return _0x4b0b03(_0x3a993f[_0xe13a('0x13')][_0xe13a('0x15')]);}else{logger[_0xe13a('0xe')](_0xe13a('0xf'),_0x10477a,_0xe13a('0x10'));_0x4b0b03(_0x3a993f['result'][_0xe13a('0x15')]);}})[_0xe13a('0x16')](function(_0x5688aa){logger[_0xe13a('0x13')](_0xe13a('0xf'),_0x10477a,_0x5688aa);_0x88125(_0x5688aa);});});}exports['GetChatQueue']=function(_0x21e8c3){var _0x31bccb=this;return new Promise(function(_0x21404e,_0x4489bd){return db[_0xe13a('0x17')][_0xe13a('0x18')]({'raw':_0x21e8c3[_0xe13a('0x19')]?_0x21e8c3[_0xe13a('0x19')]['raw']===undefined?!![]:![]:!![],'where':_0x21e8c3['options']?_0x21e8c3[_0xe13a('0x19')]['where']||null:null,'attributes':_0x21e8c3[_0xe13a('0x19')]?_0x21e8c3[_0xe13a('0x19')][_0xe13a('0x1a')]||null:null,'limit':_0x21e8c3[_0xe13a('0x19')]?_0x21e8c3[_0xe13a('0x19')][_0xe13a('0x1b')]||null:null,'include':_0x21e8c3['options']?_0x21e8c3[_0xe13a('0x19')]['include']?_['map'](_0x21e8c3[_0xe13a('0x19')][_0xe13a('0x1c')],function(_0x43b238){return{'model':db[_0x43b238[_0xe13a('0x1d')]],'as':_0x43b238['as'],'attributes':_0x43b238[_0xe13a('0x1a')],'include':_0x43b238[_0xe13a('0x1c')]?_['map'](_0x43b238['include'],function(_0x562360){return{'model':db[_0x562360[_0xe13a('0x1d')]],'as':_0x562360['as'],'attributes':_0x562360[_0xe13a('0x1a')],'include':_0x562360[_0xe13a('0x1c')]?_[_0xe13a('0x1e')](_0x562360['include'],function(_0x502bff){return{'model':db[_0x502bff[_0xe13a('0x1d')]],'as':_0x502bff['as'],'attributes':_0x502bff[_0xe13a('0x1a')]};}):[]};}):[]};}):[]:[]})[_0xe13a('0xd')](function(_0x55e77d){logger[_0xe13a('0xe')]('GetChatQueue',_0x21e8c3);logger[_0xe13a('0x11')](_0xe13a('0x1f'),_0x21e8c3,JSON[_0xe13a('0x12')](_0x55e77d));_0x21404e(_0x55e77d);})[_0xe13a('0x16')](function(_0x425208){logger[_0xe13a('0x13')]('GetChatQueue',_0x425208['message'],_0x21e8c3);_0x4489bd(_0x31bccb['error'](0x1f4,_0x425208[_0xe13a('0x15')]));});});};exports[_0xe13a('0x20')]=function(_0x569792){var _0x450ab6=this;return new Promise(function(_0x250ad2,_0x1194e4){return db['ChatQueue'][_0xe13a('0x21')]({'raw':_0x569792[_0xe13a('0x19')]?_0x569792[_0xe13a('0x19')][_0xe13a('0x22')]===undefined?!![]:![]:!![],'where':_0x569792[_0xe13a('0x19')]?_0x569792[_0xe13a('0x19')][_0xe13a('0x23')]||null:null,'attributes':_0x569792[_0xe13a('0x19')]?_0x569792[_0xe13a('0x19')][_0xe13a('0x1a')]||null:null,'include':_0x569792[_0xe13a('0x19')]?_0x569792[_0xe13a('0x19')][_0xe13a('0x1c')]?_[_0xe13a('0x1e')](_0x569792[_0xe13a('0x19')][_0xe13a('0x1c')],function(_0x2e9589){return{'model':db[_0x2e9589[_0xe13a('0x1d')]],'as':_0x2e9589['as'],'attributes':_0x2e9589['attributes'],'include':_0x2e9589[_0xe13a('0x1c')]?_[_0xe13a('0x1e')](_0x2e9589[_0xe13a('0x1c')],function(_0x1ab27d){return{'model':db[_0x1ab27d['model']],'as':_0x1ab27d['as'],'attributes':_0x1ab27d[_0xe13a('0x1a')],'include':_0x1ab27d[_0xe13a('0x1c')]?_[_0xe13a('0x1e')](_0x1ab27d[_0xe13a('0x1c')],function(_0x4bbf9b){return{'model':db[_0x4bbf9b[_0xe13a('0x1d')]],'as':_0x4bbf9b['as'],'attributes':_0x4bbf9b[_0xe13a('0x1a')]};}):[]};}):[]};}):[]:[]})['then'](function(_0x5d67bc){logger[_0xe13a('0xe')](_0xe13a('0x20'),_0x569792);logger[_0xe13a('0x11')](_0xe13a('0x20'),_0x569792,JSON[_0xe13a('0x12')](_0x5d67bc));_0x250ad2(_0x5d67bc);})[_0xe13a('0x16')](function(_0x201067){logger[_0xe13a('0x13')]('ShowChatQueue',_0x201067['message'],_0x569792);_0x1194e4(_0x450ab6[_0xe13a('0x13')](0x1f4,_0x201067[_0xe13a('0x15')]));});});};
\ No newline at end of file
index 2a75bc1..25dd772 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2bc6=['length','./chatQueue.events','save','remove','emit','removeListener'];(function(_0x4ace0e,_0x7f30a8){var _0x376e23=function(_0x3801a3){while(--_0x3801a3){_0x4ace0e['push'](_0x4ace0e['shift']());}};_0x376e23(++_0x7f30a8);}(_0x2bc6,0x163));var _0x62bc=function(_0xda127b,_0x3792b4){_0xda127b=_0xda127b-0x0;var _0x4f9ddb=_0x2bc6[_0xda127b];return _0x4f9ddb;};'use strict';var ChatQueueEvents=require(_0x62bc('0x0'));var events=[_0x62bc('0x1'),_0x62bc('0x2'),'update'];function createListener(_0x4b4e73,_0x5a2676){return function(_0x5c5a2a){_0x5a2676[_0x62bc('0x3')](_0x4b4e73,_0x5c5a2a);};}function removeListener(_0x576608,_0x2a1959){return function(){ChatQueueEvents[_0x62bc('0x4')](_0x576608,_0x2a1959);};}exports['register']=function(_0x3cce26){for(var _0x450cb6=0x0,_0x40af10=events[_0x62bc('0x5')];_0x450cb6<_0x40af10;_0x450cb6++){var _0x3ed6ad=events[_0x450cb6];var _0x3f625c=createListener('chatQueue:'+_0x3ed6ad,_0x3cce26);ChatQueueEvents['on'](_0x3ed6ad,_0x3f625c);}};
\ No newline at end of file
+var _0x4b84=['./chatQueue.events','save','emit','length'];(function(_0xf8bc91,_0x40aa22){var _0x543420=function(_0xb137){while(--_0xb137){_0xf8bc91['push'](_0xf8bc91['shift']());}};_0x543420(++_0x40aa22);}(_0x4b84,0x1cc));var _0x44b8=function(_0x55cc58,_0x5ce0af){_0x55cc58=_0x55cc58-0x0;var _0x26062e=_0x4b84[_0x55cc58];return _0x26062e;};'use strict';var ChatQueueEvents=require(_0x44b8('0x0'));var events=[_0x44b8('0x1'),'remove','update'];function createListener(_0x765943,_0x519db3){return function(_0x4b8ad8){_0x519db3[_0x44b8('0x2')](_0x765943,_0x4b8ad8);};}function removeListener(_0x31282a,_0x39ad16){return function(){ChatQueueEvents['removeListener'](_0x31282a,_0x39ad16);};}exports['register']=function(_0x55f25d){for(var _0x996a8b=0x0,_0x54274b=events[_0x44b8('0x3')];_0x996a8b<_0x54274b;_0x996a8b++){var _0x5947f7=events[_0x996a8b];var _0x3e87c5=createListener('chatQueue:'+_0x5947f7,_0x55f25d);ChatQueueEvents['on'](_0x5947f7,_0x3e87c5);}};
\ No newline at end of file
index 128044d..8087787 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x55ca=['post','addAgents','update','delete','destroy','removeTeams','removeAgents','exports','multer','util','Router','fs-extra','../../components/interaction/service','../../config/environment','./chatQueue.controller','get','isAuthenticated','index','describe','/:id','/:id/members','getMembers','/:id/teams','getTeams','/:id/users','addTeams'];(function(_0x2edc3b,_0x7111f1){var _0x231f9e=function(_0x401f5d){while(--_0x401f5d){_0x2edc3b['push'](_0x2edc3b['shift']());}};_0x231f9e(++_0x7111f1);}(_0x55ca,0x126));var _0xa55c=function(_0x4314d7,_0x355218){_0x4314d7=_0x4314d7-0x0;var _0x5c599b=_0x55ca[_0x4314d7];return _0x5c599b;};'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')]('/describe',auth[_0xa55c('0x8')](),controller[_0xa55c('0xa')]);router['get'](_0xa55c('0xb'),auth[_0xa55c('0x8')](),controller['show']);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['getAgents']);router['post']('/',auth[_0xa55c('0x8')](),controller['create']);router['post']('/:id/teams',auth[_0xa55c('0x8')](),controller[_0xa55c('0x11')]);router[_0xa55c('0x12')](_0xa55c('0x10'),auth[_0xa55c('0x8')](),controller[_0xa55c('0x13')]);router['put'](_0xa55c('0xb'),auth[_0xa55c('0x8')](),controller[_0xa55c('0x14')]);router[_0xa55c('0x15')](_0xa55c('0xb'),auth[_0xa55c('0x8')](),controller[_0xa55c('0x16')]);router[_0xa55c('0x15')](_0xa55c('0xe'),auth['isAuthenticated'](),controller[_0xa55c('0x17')]);router[_0xa55c('0x15')](_0xa55c('0x10'),auth[_0xa55c('0x8')](),controller[_0xa55c('0x18')]);module[_0xa55c('0x19')]=router;
\ No newline at end of file
+var _0xe14b=['/describe','show','/:id/members','/:id/teams','getTeams','/:id/users','getAgents','post','create','addTeams','addAgents','put','/:id','delete','destroy','removeAgents','exports','multer','util','express','Router','../../components/auth/service','./chatQueue.controller','get','isAuthenticated','index'];(function(_0x318b2e,_0x41e795){var _0x3609bd=function(_0x4d2423){while(--_0x4d2423){_0x318b2e['push'](_0x318b2e['shift']());}};_0x3609bd(++_0x41e795);}(_0xe14b,0x93));var _0xbe14=function(_0x1844ac,_0x1faf3e){_0x1844ac=_0x1844ac-0x0;var _0x2230cd=_0xe14b[_0x1844ac];return _0x2230cd;};'use strict';var multer=require(_0xbe14('0x0'));var util=require(_0xbe14('0x1'));var path=require('path');var timeout=require('connect-timeout');var express=require(_0xbe14('0x2'));var router=express[_0xbe14('0x3')]();var fs_extra=require('fs-extra');var auth=require(_0xbe14('0x4'));var interaction=require('../../components/interaction/service');var config=require('../../config/environment');var controller=require(_0xbe14('0x5'));router[_0xbe14('0x6')]('/',auth[_0xbe14('0x7')](),controller[_0xbe14('0x8')]);router[_0xbe14('0x6')](_0xbe14('0x9'),auth[_0xbe14('0x7')](),controller['describe']);router['get']('/:id',auth[_0xbe14('0x7')](),controller[_0xbe14('0xa')]);router[_0xbe14('0x6')](_0xbe14('0xb'),auth['isAuthenticated'](),controller['getMembers']);router[_0xbe14('0x6')](_0xbe14('0xc'),auth['isAuthenticated'](),controller[_0xbe14('0xd')]);router[_0xbe14('0x6')](_0xbe14('0xe'),auth[_0xbe14('0x7')](),controller[_0xbe14('0xf')]);router[_0xbe14('0x10')]('/',auth[_0xbe14('0x7')](),controller[_0xbe14('0x11')]);router[_0xbe14('0x10')](_0xbe14('0xc'),auth[_0xbe14('0x7')](),controller[_0xbe14('0x12')]);router[_0xbe14('0x10')]('/:id/users',auth['isAuthenticated'](),controller[_0xbe14('0x13')]);router[_0xbe14('0x14')](_0xbe14('0x15'),auth[_0xbe14('0x7')](),controller['update']);router[_0xbe14('0x16')](_0xbe14('0x15'),auth[_0xbe14('0x7')](),controller[_0xbe14('0x17')]);router[_0xbe14('0x16')](_0xbe14('0xc'),auth[_0xbe14('0x7')](),controller['removeTeams']);router[_0xbe14('0x16')](_0xbe14('0xe'),auth[_0xbe14('0x7')](),controller[_0xbe14('0x18')]);module[_0xbe14('0x19')]=router;
\ No newline at end of file
index 919ec07..093a568 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xffc2=['moment','sequelize','exports','STRING','DATE'];(function(_0x321b95,_0x1cc6f3){var _0x41b60c=function(_0x2f01d7){while(--_0x2f01d7){_0x321b95['push'](_0x321b95['shift']());}};_0x41b60c(++_0x1cc6f3);}(_0xffc2,0x159));var _0x2ffc=function(_0x309458,_0xba6e63){_0x309458=_0x309458-0x0;var _0x3306ee=_0xffc2[_0x309458];return _0x3306ee;};'use strict';var moment=require(_0x2ffc('0x0'));var Sequelize=require(_0x2ffc('0x1'));module[_0x2ffc('0x2')]={'uniqueid':{'type':Sequelize[_0x2ffc('0x3')],'allowNull':![]},'from':{'type':Sequelize[_0x2ffc('0x3')]},'joinAt':{'type':Sequelize[_0x2ffc('0x4')]},'leaveAt':{'type':Sequelize['DATE']},'acceptAt':{'type':Sequelize[_0x2ffc('0x4')]},'exitAt':{'type':Sequelize['DATE']},'reason':{'type':Sequelize[_0x2ffc('0x3')]}};
\ No newline at end of file
+var _0xfe8e=['STRING','DATE','sequelize'];(function(_0x32e685,_0x3bcb0d){var _0x49652f=function(_0x17a7e6){while(--_0x17a7e6){_0x32e685['push'](_0x32e685['shift']());}};_0x49652f(++_0x3bcb0d);}(_0xfe8e,0x197));var _0xefe8=function(_0x710815,_0x520da8){_0x710815=_0x710815-0x0;var _0x5b3b89=_0xfe8e[_0x710815];return _0x5b3b89;};'use strict';var moment=require('moment');var Sequelize=require(_0xefe8('0x0'));module['exports']={'uniqueid':{'type':Sequelize[_0xefe8('0x1')],'allowNull':![]},'from':{'type':Sequelize[_0xefe8('0x1')]},'joinAt':{'type':Sequelize[_0xefe8('0x2')]},'leaveAt':{'type':Sequelize['DATE']},'acceptAt':{'type':Sequelize[_0xefe8('0x2')]},'exitAt':{'type':Sequelize['DATE']},'reason':{'type':Sequelize[_0xefe8('0x1')]}};
\ No newline at end of file
index 2305d28..691c17e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xbbbd=['../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','end','status','json','offset','undefined','limit','count','set','apply','reject','save','update','destroy','then','name','send','index','map','rawAttributes','fieldName','type','model','keys','query','filters','intersection','attributes','fields','length','nolimit','order','sort','pick','filter','merge','where','VIRTUAL','options','includeAll','include','ChatQueueReport','findAll','rows','catch','show','params','find','create','body','describe','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/parsers/qs','../../config/license/hardware','api'];(function(_0x5dd74a,_0x54a54d){var _0x4478ac=function(_0xdc2d12){while(--_0xdc2d12){_0x5dd74a['push'](_0x5dd74a['shift']());}};_0x4478ac(++_0x54a54d);}(_0xbbbd,0x86));var _0xdbbb=function(_0x51c819,_0xd812db){_0x51c819=_0x51c819-0x0;var _0x15c5d2=_0xbbbd[_0x51c819];return _0x15c5d2;};'use strict';var emlformat=require(_0xdbbb('0x0'));var rimraf=require(_0xdbbb('0x1'));var zipdir=require(_0xdbbb('0x2'));var jsonpatch=require(_0xdbbb('0x3'));var rp=require(_0xdbbb('0x4'));var moment=require(_0xdbbb('0x5'));var BPromise=require(_0xdbbb('0x6'));var Mustache=require(_0xdbbb('0x7'));var util=require(_0xdbbb('0x8'));var path=require(_0xdbbb('0x9'));var sox=require(_0xdbbb('0xa'));var csv=require(_0xdbbb('0xb'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0xdbbb('0xc'));var _=require(_0xdbbb('0xd'));var squel=require(_0xdbbb('0xe'));var crypto=require(_0xdbbb('0xf'));var jsforce=require(_0xdbbb('0x10'));var deskjs=require(_0xdbbb('0x11'));var toCsv=require(_0xdbbb('0xb'));var querystring=require(_0xdbbb('0x12'));var Papa=require(_0xdbbb('0x13'));var Redis=require(_0xdbbb('0x14'));var authService=require('../../components/auth/service');var qs=require(_0xdbbb('0x15'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0xdbbb('0x16'));var logger=require('../../config/logger')(_0xdbbb('0x17'));var utils=require(_0xdbbb('0x18'));var config=require(_0xdbbb('0x19'));var licenseUtil=require(_0xdbbb('0x1a'));var db=require(_0xdbbb('0x1b'))['db'];function respondWithStatusCode(_0x2b1cfb,_0x4469dd){_0x4469dd=_0x4469dd||0xcc;return function(_0x63128d){if(_0x63128d){return _0x2b1cfb[_0xdbbb('0x1c')](_0x4469dd);}return _0x2b1cfb['status'](_0x4469dd)[_0xdbbb('0x1d')]();};}function respondWithResult(_0x5a2c64,_0x21706f){_0x21706f=_0x21706f||0xc8;return function(_0x22713c){if(_0x22713c){return _0x5a2c64[_0xdbbb('0x1e')](_0x21706f)[_0xdbbb('0x1f')](_0x22713c);}};}function respondWithFilteredResult(_0x433ffb,_0x14eb3a){return function(_0x2f0f91){if(_0x2f0f91){var _0xf4af5=typeof _0x14eb3a[_0xdbbb('0x20')]===_0xdbbb('0x21')&&typeof _0x14eb3a[_0xdbbb('0x22')]===_0xdbbb('0x21');var _0x4a18d9=_0x2f0f91[_0xdbbb('0x23')];var _0xbbf0b4=_0xf4af5?0x0:_0x14eb3a['offset'];var _0x5c4b3d=_0xf4af5?_0x2f0f91[_0xdbbb('0x23')]:_0x14eb3a[_0xdbbb('0x20')]+_0x14eb3a[_0xdbbb('0x22')];var _0x48284b;if(_0x5c4b3d>=_0x4a18d9){_0x5c4b3d=_0x4a18d9;_0x48284b=0xc8;}else{_0x48284b=0xce;}_0x433ffb[_0xdbbb('0x1e')](_0x48284b);return _0x433ffb[_0xdbbb('0x24')]('Content-Range',_0xbbf0b4+'-'+_0x5c4b3d+'/'+_0x4a18d9)[_0xdbbb('0x1f')](_0x2f0f91);}return null;};}function patchUpdates(_0x1c2e3f){return function(_0x128f93){try{jsonpatch[_0xdbbb('0x25')](_0x128f93,_0x1c2e3f,!![]);}catch(_0x4b0984){return BPromise[_0xdbbb('0x26')](_0x4b0984);}return _0x128f93[_0xdbbb('0x27')]();};}function saveUpdates(_0x6c7610,_0xe98d9e){return function(_0x29c9c6){if(_0x29c9c6){return _0x29c9c6[_0xdbbb('0x28')](_0x6c7610)['then'](function(_0xf998f2){return _0xf998f2;});}return null;};}function removeEntity(_0x2de604,_0x537086){return function(_0x47df58){if(_0x47df58){return _0x47df58[_0xdbbb('0x29')]()[_0xdbbb('0x2a')](function(){_0x2de604[_0xdbbb('0x1e')](0xcc)['end']();});}};}function handleEntityNotFound(_0x371c0b,_0x487880){return function(_0x28d527){if(!_0x28d527){_0x371c0b[_0xdbbb('0x1c')](0x194);}return _0x28d527;};}function handleError(_0x49df51,_0x4934be){_0x4934be=_0x4934be||0x1f4;return function(_0x180f55){logger['error'](_0x180f55['stack']);if(_0x180f55[_0xdbbb('0x2b')]){delete _0x180f55[_0xdbbb('0x2b')];}_0x49df51[_0xdbbb('0x1e')](_0x4934be)[_0xdbbb('0x2c')](_0x180f55);};}exports[_0xdbbb('0x2d')]=function(_0x3234d6,_0x452bea){var _0x41819a={},_0x4ee8f9={},_0x370725={'count':0x0,'rows':[]};var _0x5fcf32=_[_0xdbbb('0x2e')](db['ChatQueueReport'][_0xdbbb('0x2f')],function(_0x30ab26){return{'name':_0x30ab26[_0xdbbb('0x30')],'type':_0x30ab26[_0xdbbb('0x31')]['key']};});_0x4ee8f9[_0xdbbb('0x32')]=_['map'](_0x5fcf32,_0xdbbb('0x2b'));_0x4ee8f9['query']=_[_0xdbbb('0x33')](_0x3234d6[_0xdbbb('0x34')]);_0x4ee8f9[_0xdbbb('0x35')]=_[_0xdbbb('0x36')](_0x4ee8f9[_0xdbbb('0x32')],_0x4ee8f9[_0xdbbb('0x34')]);_0x41819a[_0xdbbb('0x37')]=_[_0xdbbb('0x36')](_0x4ee8f9[_0xdbbb('0x32')],qs[_0xdbbb('0x38')](_0x3234d6[_0xdbbb('0x34')][_0xdbbb('0x38')]));_0x41819a[_0xdbbb('0x37')]=_0x41819a[_0xdbbb('0x37')][_0xdbbb('0x39')]?_0x41819a[_0xdbbb('0x37')]:_0x4ee8f9[_0xdbbb('0x32')];if(!_0x3234d6[_0xdbbb('0x34')]['hasOwnProperty'](_0xdbbb('0x3a'))){_0x41819a['limit']=qs[_0xdbbb('0x22')](_0x3234d6[_0xdbbb('0x34')]['limit']);_0x41819a[_0xdbbb('0x20')]=qs[_0xdbbb('0x20')](_0x3234d6[_0xdbbb('0x34')][_0xdbbb('0x20')]);}_0x41819a[_0xdbbb('0x3b')]=qs['sort'](_0x3234d6[_0xdbbb('0x34')][_0xdbbb('0x3c')]);_0x41819a['where']=qs[_0xdbbb('0x35')](_[_0xdbbb('0x3d')](_0x3234d6[_0xdbbb('0x34')],_0x4ee8f9[_0xdbbb('0x35')]),_0x5fcf32);if(_0x3234d6[_0xdbbb('0x34')][_0xdbbb('0x3e')]){_0x41819a['where']=_[_0xdbbb('0x3f')](_0x41819a[_0xdbbb('0x40')],{'$or':_[_0xdbbb('0x2e')](_0x5fcf32,function(_0x2ddd25){if(_0x2ddd25[_0xdbbb('0x31')]!==_0xdbbb('0x41')){var _0x529f83={};_0x529f83[_0x2ddd25[_0xdbbb('0x2b')]]={'$like':'%'+_0x3234d6[_0xdbbb('0x34')][_0xdbbb('0x3e')]+'%'};return _0x529f83;}})});}_0x41819a=_[_0xdbbb('0x3f')]({},_0x41819a,_0x3234d6[_0xdbbb('0x42')]);var _0x1b0418={'where':_0x41819a[_0xdbbb('0x40')]};return db['ChatQueueReport']['count'](_0x1b0418)['then'](function(_0x2bc5e1){_0x370725[_0xdbbb('0x23')]=_0x2bc5e1;if(_0x3234d6['query'][_0xdbbb('0x43')]){_0x41819a[_0xdbbb('0x44')]=[{'all':!![]}];}return db[_0xdbbb('0x45')][_0xdbbb('0x46')](_0x41819a);})[_0xdbbb('0x2a')](function(_0x189f99){_0x370725[_0xdbbb('0x47')]=_0x189f99;return _0x370725;})[_0xdbbb('0x2a')](respondWithFilteredResult(_0x452bea,_0x41819a))[_0xdbbb('0x48')](handleError(_0x452bea,null));};exports[_0xdbbb('0x49')]=function(_0x1a31ee,_0x49c59b){var _0x467978={'raw':!![],'where':{'id':_0x1a31ee[_0xdbbb('0x4a')]['id']}},_0x4a1cd6={};_0x4a1cd6['model']=_[_0xdbbb('0x33')](db[_0xdbbb('0x45')][_0xdbbb('0x2f')]);_0x4a1cd6[_0xdbbb('0x34')]=_[_0xdbbb('0x33')](_0x1a31ee['query']);_0x4a1cd6[_0xdbbb('0x35')]=_[_0xdbbb('0x36')](_0x4a1cd6['model'],_0x4a1cd6['query']);_0x467978['attributes']=_[_0xdbbb('0x36')](_0x4a1cd6['model'],qs[_0xdbbb('0x38')](_0x1a31ee[_0xdbbb('0x34')][_0xdbbb('0x38')]));_0x467978[_0xdbbb('0x37')]=_0x467978[_0xdbbb('0x37')]['length']?_0x467978[_0xdbbb('0x37')]:_0x4a1cd6['model'];if(_0x1a31ee[_0xdbbb('0x34')]['includeAll']){_0x467978['include']=[{'all':!![]}];}_0x467978=_[_0xdbbb('0x3f')]({},_0x467978,_0x1a31ee[_0xdbbb('0x42')]);return db[_0xdbbb('0x45')][_0xdbbb('0x4b')](_0x467978)[_0xdbbb('0x2a')](handleEntityNotFound(_0x49c59b,null))[_0xdbbb('0x2a')](respondWithResult(_0x49c59b,null))[_0xdbbb('0x48')](handleError(_0x49c59b,null));};exports[_0xdbbb('0x4c')]=function(_0x954c98,_0x1a96fa){return db[_0xdbbb('0x45')][_0xdbbb('0x4c')](_0x954c98[_0xdbbb('0x4d')],{})['then'](respondWithResult(_0x1a96fa,0xc9))['catch'](handleError(_0x1a96fa,null));};exports[_0xdbbb('0x28')]=function(_0x4302a8,_0x318bca){if(_0x4302a8[_0xdbbb('0x4d')]['id']){delete _0x4302a8[_0xdbbb('0x4d')]['id'];}return db[_0xdbbb('0x45')]['find']({'where':{'id':_0x4302a8['params']['id']}})['then'](handleEntityNotFound(_0x318bca,null))['then'](saveUpdates(_0x4302a8[_0xdbbb('0x4d')],null))['then'](respondWithResult(_0x318bca,null))[_0xdbbb('0x48')](handleError(_0x318bca,null));};exports[_0xdbbb('0x29')]=function(_0x1b8ab1,_0x39621e){return db[_0xdbbb('0x45')][_0xdbbb('0x4b')]({'where':{'id':_0x1b8ab1[_0xdbbb('0x4a')]['id']}})[_0xdbbb('0x2a')](handleEntityNotFound(_0x39621e,null))[_0xdbbb('0x2a')](removeEntity(_0x39621e,null))[_0xdbbb('0x48')](handleError(_0x39621e,null));};exports[_0xdbbb('0x4e')]=function(_0x387ae2,_0x527bc7){return db['ChatQueueReport'][_0xdbbb('0x4e')]()[_0xdbbb('0x2a')](respondWithResult(_0x527bc7,null))[_0xdbbb('0x48')](handleError(_0x527bc7,null));};
\ No newline at end of file
+var _0x1410=['eml-format','rimraf','zip-dir','fast-json-patch','moment','mustache','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','api','../../config/utils','../../config/environment','../../config/license/util','status','end','json','offset','undefined','limit','count','set','apply','reject','update','then','destroy','sendStatus','error','stack','name','send','index','map','ChatQueueReport','rawAttributes','fieldName','key','query','keys','filters','model','attributes','intersection','fields','length','nolimit','order','sort','where','filter','merge','type','VIRTUAL','options','includeAll','include','findAll','find','catch','create','body','params','describe'];(function(_0x1a36a5,_0x746928){var _0x746243=function(_0x481966){while(--_0x481966){_0x1a36a5['push'](_0x1a36a5['shift']());}};_0x746243(++_0x746928);}(_0x1410,0x130));var _0x0141=function(_0x50d83c,_0x2cea1d){_0x50d83c=_0x50d83c-0x0;var _0x12f92f=_0x1410[_0x50d83c];return _0x12f92f;};'use strict';var emlformat=require(_0x0141('0x0'));var rimraf=require(_0x0141('0x1'));var zipdir=require(_0x0141('0x2'));var jsonpatch=require(_0x0141('0x3'));var rp=require('request-promise');var moment=require(_0x0141('0x4'));var BPromise=require('bluebird');var Mustache=require(_0x0141('0x5'));var util=require('util');var path=require(_0x0141('0x6'));var sox=require(_0x0141('0x7'));var csv=require(_0x0141('0x8'));var ejs=require(_0x0141('0x9'));var fs=require('fs');var fs_extra=require(_0x0141('0xa'));var _=require(_0x0141('0xb'));var squel=require(_0x0141('0xc'));var crypto=require(_0x0141('0xd'));var jsforce=require(_0x0141('0xe'));var deskjs=require('desk.js');var toCsv=require(_0x0141('0x8'));var querystring=require(_0x0141('0xf'));var Papa=require(_0x0141('0x10'));var Redis=require(_0x0141('0x11'));var authService=require(_0x0141('0x12'));var qs=require(_0x0141('0x13'));var as=require(_0x0141('0x14'));var hardwareService=require(_0x0141('0x15'));var logger=require('../../config/logger')(_0x0141('0x16'));var utils=require(_0x0141('0x17'));var config=require(_0x0141('0x18'));var licenseUtil=require(_0x0141('0x19'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x49cebd,_0xab59e3){_0xab59e3=_0xab59e3||0xcc;return function(_0x25aefb){if(_0x25aefb){return _0x49cebd['sendStatus'](_0xab59e3);}return _0x49cebd[_0x0141('0x1a')](_0xab59e3)[_0x0141('0x1b')]();};}function respondWithResult(_0x16a55a,_0x245007){_0x245007=_0x245007||0xc8;return function(_0x1665e2){if(_0x1665e2){return _0x16a55a['status'](_0x245007)[_0x0141('0x1c')](_0x1665e2);}};}function respondWithFilteredResult(_0x5edd9f,_0x2ee001){return function(_0x3db66a){if(_0x3db66a){var _0x345fbd=typeof _0x2ee001[_0x0141('0x1d')]===_0x0141('0x1e')&&typeof _0x2ee001[_0x0141('0x1f')]==='undefined';var _0x58c3bb=_0x3db66a[_0x0141('0x20')];var _0x3720f6=_0x345fbd?0x0:_0x2ee001['offset'];var _0x9c1eec=_0x345fbd?_0x3db66a[_0x0141('0x20')]:_0x2ee001[_0x0141('0x1d')]+_0x2ee001[_0x0141('0x1f')];var _0x5427b5;if(_0x9c1eec>=_0x58c3bb){_0x9c1eec=_0x58c3bb;_0x5427b5=0xc8;}else{_0x5427b5=0xce;}_0x5edd9f[_0x0141('0x1a')](_0x5427b5);return _0x5edd9f[_0x0141('0x21')]('Content-Range',_0x3720f6+'-'+_0x9c1eec+'/'+_0x58c3bb)[_0x0141('0x1c')](_0x3db66a);}return null;};}function patchUpdates(_0x3e8603){return function(_0x17585f){try{jsonpatch[_0x0141('0x22')](_0x17585f,_0x3e8603,!![]);}catch(_0x316f70){return BPromise[_0x0141('0x23')](_0x316f70);}return _0x17585f['save']();};}function saveUpdates(_0x21d8fc,_0x40c774){return function(_0x363860){if(_0x363860){return _0x363860[_0x0141('0x24')](_0x21d8fc)[_0x0141('0x25')](function(_0x1a4b0b){return _0x1a4b0b;});}return null;};}function removeEntity(_0xccf0c,_0x20656b){return function(_0x12a11e){if(_0x12a11e){return _0x12a11e[_0x0141('0x26')]()[_0x0141('0x25')](function(){_0xccf0c[_0x0141('0x1a')](0xcc)['end']();});}};}function handleEntityNotFound(_0x4247d,_0x14ecbf){return function(_0xb80072){if(!_0xb80072){_0x4247d[_0x0141('0x27')](0x194);}return _0xb80072;};}function handleError(_0xcc5658,_0x52e90a){_0x52e90a=_0x52e90a||0x1f4;return function(_0x59196f){logger[_0x0141('0x28')](_0x59196f[_0x0141('0x29')]);if(_0x59196f['name']){delete _0x59196f[_0x0141('0x2a')];}_0xcc5658['status'](_0x52e90a)[_0x0141('0x2b')](_0x59196f);};}exports[_0x0141('0x2c')]=function(_0x400602,_0x378a87){var _0x2379ad={},_0x29f463={},_0x146daf={'count':0x0,'rows':[]};var _0xc6eabc=_[_0x0141('0x2d')](db[_0x0141('0x2e')][_0x0141('0x2f')],function(_0x36c409){return{'name':_0x36c409[_0x0141('0x30')],'type':_0x36c409['type'][_0x0141('0x31')]};});_0x29f463['model']=_[_0x0141('0x2d')](_0xc6eabc,_0x0141('0x2a'));_0x29f463[_0x0141('0x32')]=_[_0x0141('0x33')](_0x400602[_0x0141('0x32')]);_0x29f463[_0x0141('0x34')]=_['intersection'](_0x29f463[_0x0141('0x35')],_0x29f463['query']);_0x2379ad[_0x0141('0x36')]=_[_0x0141('0x37')](_0x29f463[_0x0141('0x35')],qs['fields'](_0x400602[_0x0141('0x32')][_0x0141('0x38')]));_0x2379ad['attributes']=_0x2379ad[_0x0141('0x36')][_0x0141('0x39')]?_0x2379ad[_0x0141('0x36')]:_0x29f463[_0x0141('0x35')];if(!_0x400602[_0x0141('0x32')]['hasOwnProperty'](_0x0141('0x3a'))){_0x2379ad[_0x0141('0x1f')]=qs[_0x0141('0x1f')](_0x400602[_0x0141('0x32')][_0x0141('0x1f')]);_0x2379ad[_0x0141('0x1d')]=qs['offset'](_0x400602['query'][_0x0141('0x1d')]);}_0x2379ad[_0x0141('0x3b')]=qs['sort'](_0x400602[_0x0141('0x32')][_0x0141('0x3c')]);_0x2379ad[_0x0141('0x3d')]=qs['filters'](_['pick'](_0x400602['query'],_0x29f463[_0x0141('0x34')]),_0xc6eabc);if(_0x400602[_0x0141('0x32')][_0x0141('0x3e')]){_0x2379ad[_0x0141('0x3d')]=_[_0x0141('0x3f')](_0x2379ad[_0x0141('0x3d')],{'$or':_[_0x0141('0x2d')](_0xc6eabc,function(_0x51ae65){if(_0x51ae65[_0x0141('0x40')]!==_0x0141('0x41')){var _0x5b76c1={};_0x5b76c1[_0x51ae65[_0x0141('0x2a')]]={'$like':'%'+_0x400602[_0x0141('0x32')][_0x0141('0x3e')]+'%'};return _0x5b76c1;}})});}_0x2379ad=_[_0x0141('0x3f')]({},_0x2379ad,_0x400602[_0x0141('0x42')]);var _0x158480={'where':_0x2379ad[_0x0141('0x3d')]};return db[_0x0141('0x2e')]['count'](_0x158480)[_0x0141('0x25')](function(_0x9e9408){_0x146daf['count']=_0x9e9408;if(_0x400602[_0x0141('0x32')][_0x0141('0x43')]){_0x2379ad[_0x0141('0x44')]=[{'all':!![]}];}return db[_0x0141('0x2e')][_0x0141('0x45')](_0x2379ad);})['then'](function(_0x1746a1){_0x146daf['rows']=_0x1746a1;return _0x146daf;})[_0x0141('0x25')](respondWithFilteredResult(_0x378a87,_0x2379ad))['catch'](handleError(_0x378a87,null));};exports['show']=function(_0x4e863f,_0x25870d){var _0x2579df={'raw':!![],'where':{'id':_0x4e863f['params']['id']}},_0x210a8c={};_0x210a8c[_0x0141('0x35')]=_[_0x0141('0x33')](db[_0x0141('0x2e')][_0x0141('0x2f')]);_0x210a8c['query']=_[_0x0141('0x33')](_0x4e863f[_0x0141('0x32')]);_0x210a8c[_0x0141('0x34')]=_[_0x0141('0x37')](_0x210a8c[_0x0141('0x35')],_0x210a8c[_0x0141('0x32')]);_0x2579df[_0x0141('0x36')]=_[_0x0141('0x37')](_0x210a8c['model'],qs[_0x0141('0x38')](_0x4e863f[_0x0141('0x32')][_0x0141('0x38')]));_0x2579df['attributes']=_0x2579df[_0x0141('0x36')][_0x0141('0x39')]?_0x2579df[_0x0141('0x36')]:_0x210a8c['model'];if(_0x4e863f[_0x0141('0x32')]['includeAll']){_0x2579df[_0x0141('0x44')]=[{'all':!![]}];}_0x2579df=_['merge']({},_0x2579df,_0x4e863f[_0x0141('0x42')]);return db['ChatQueueReport'][_0x0141('0x46')](_0x2579df)[_0x0141('0x25')](handleEntityNotFound(_0x25870d,null))[_0x0141('0x25')](respondWithResult(_0x25870d,null))[_0x0141('0x47')](handleError(_0x25870d,null));};exports[_0x0141('0x48')]=function(_0x482e1e,_0x3890ef){return db[_0x0141('0x2e')][_0x0141('0x48')](_0x482e1e['body'],{})[_0x0141('0x25')](respondWithResult(_0x3890ef,0xc9))[_0x0141('0x47')](handleError(_0x3890ef,null));};exports[_0x0141('0x24')]=function(_0x4978a3,_0x3e30a8){if(_0x4978a3['body']['id']){delete _0x4978a3[_0x0141('0x49')]['id'];}return db[_0x0141('0x2e')][_0x0141('0x46')]({'where':{'id':_0x4978a3[_0x0141('0x4a')]['id']}})['then'](handleEntityNotFound(_0x3e30a8,null))[_0x0141('0x25')](saveUpdates(_0x4978a3[_0x0141('0x49')],null))[_0x0141('0x25')](respondWithResult(_0x3e30a8,null))[_0x0141('0x47')](handleError(_0x3e30a8,null));};exports[_0x0141('0x26')]=function(_0x2da74f,_0x4a37d3){return db['ChatQueueReport'][_0x0141('0x46')]({'where':{'id':_0x2da74f[_0x0141('0x4a')]['id']}})[_0x0141('0x25')](handleEntityNotFound(_0x4a37d3,null))['then'](removeEntity(_0x4a37d3,null))[_0x0141('0x47')](handleError(_0x4a37d3,null));};exports[_0x0141('0x4b')]=function(_0x1a4217,_0x4b7d84){return db[_0x0141('0x2e')]['describe']()[_0x0141('0x25')](respondWithResult(_0x4b7d84,null))[_0x0141('0x47')](handleError(_0x4b7d84,null));};
\ No newline at end of file
index fcbd54f..a6fbff9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0713=['../../config/logger','api','moment','bluebird','request-promise','rimraf','../../config/environment','./chatQueueReport.attributes','exports','define','ChatQueueReport','report_chat_queue','uniqueid'];(function(_0x43aee5,_0x11268b){var _0x76d1d0=function(_0x3faee6){while(--_0x3faee6){_0x43aee5['push'](_0x43aee5['shift']());}};_0x76d1d0(++_0x11268b);}(_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'));module[_0x3071('0x8')]=function(_0xabd7b6,_0x41cf76){return _0xabd7b6[_0x3071('0x9')](_0x3071('0xa'),attributes,{'tableName':_0x3071('0xb'),'paranoid':![],'indexes':[{'name':_0x3071('0xc'),'fields':[_0x3071('0xc')]}],'timestamps':!![]});};
\ No newline at end of file
+var _0xbaf0=['define','ChatQueueReport','report_chat_queue','uniqueid','util','../../config/logger','api','moment','bluebird','request-promise','rimraf','../../config/environment','./chatQueueReport.attributes','exports'];(function(_0x23ad5a,_0x22b265){var _0x2d6300=function(_0x69e18d){while(--_0x69e18d){_0x23ad5a['push'](_0x23ad5a['shift']());}};_0x2d6300(++_0x22b265);}(_0xbaf0,0x12a));var _0x0baf=function(_0x501510,_0x61caa9){_0x501510=_0x501510-0x0;var _0x1e6ee5=_0xbaf0[_0x501510];return _0x1e6ee5;};'use strict';var _=require('lodash');var util=require(_0x0baf('0x0'));var logger=require(_0x0baf('0x1'))(_0x0baf('0x2'));var moment=require(_0x0baf('0x3'));var BPromise=require(_0x0baf('0x4'));var rp=require(_0x0baf('0x5'));var fs=require('fs');var path=require('path');var rimraf=require(_0x0baf('0x6'));var config=require(_0x0baf('0x7'));var attributes=require(_0x0baf('0x8'));module[_0x0baf('0x9')]=function(_0xe4c3c4,_0x335e24){return _0xe4c3c4[_0x0baf('0xa')](_0x0baf('0xb'),attributes,{'tableName':_0x0baf('0xc'),'paranoid':![],'indexes':[{'name':'uniqueid','fields':[_0x0baf('0xd')]}],'timestamps':!![]});};
\ No newline at end of file
index 07ac853..39854d2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xbc6f=['create','options','raw','UpdateChatQueueReport','body','attributes','limit','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','rpc','client','http','request','then','info','ChatQueueReport,\x20%s,\x20%s','request\x20sent','debug','stringify','error','code','message','result','catch','CreateChatQueueReport','ChatQueueReport'];(function(_0x1b7f17,_0x54411f){var _0x454a80=function(_0x9299f){while(--_0x9299f){_0x1b7f17['push'](_0x1b7f17['shift']());}};_0x454a80(++_0x54411f);}(_0xbc6f,0x127));var _0xfbc6=function(_0x2d9e27,_0x5965b2){_0x2d9e27=_0x2d9e27-0x0;var _0xd35381=_0xbc6f[_0x2d9e27];return _0xd35381;};'use strict';var _=require(_0xfbc6('0x0'));var util=require(_0xfbc6('0x1'));var moment=require(_0xfbc6('0x2'));var BPromise=require(_0xfbc6('0x3'));var rs=require(_0xfbc6('0x4'));var fs=require('fs');var Redis=require(_0xfbc6('0x5'));var db=require(_0xfbc6('0x6'))['db'];var utils=require(_0xfbc6('0x7'));var logger=require('../../config/logger')(_0xfbc6('0x8'));var config=require('../../config/environment');var jayson=require('jayson/promise');var client=jayson[_0xfbc6('0x9')][_0xfbc6('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x5ea2bf,_0x44f724,_0x51c2e3){return new BPromise(function(_0x521c7e,_0x5f408f){return client[_0xfbc6('0xb')](_0x5ea2bf,_0x51c2e3)[_0xfbc6('0xc')](function(_0x47de96){logger[_0xfbc6('0xd')](_0xfbc6('0xe'),_0x44f724,_0xfbc6('0xf'));logger[_0xfbc6('0x10')]('ChatQueueReport,\x20%s,\x20%s,\x20%s',_0x44f724,'request\x20sent',JSON[_0xfbc6('0x11')](_0x47de96));if(_0x47de96[_0xfbc6('0x12')]){if(_0x47de96[_0xfbc6('0x12')][_0xfbc6('0x13')]===0x1f4){logger['error'](_0xfbc6('0xe'),_0x44f724,_0x47de96[_0xfbc6('0x12')][_0xfbc6('0x14')]);return _0x5f408f(_0x47de96[_0xfbc6('0x12')][_0xfbc6('0x14')]);}logger[_0xfbc6('0x12')](_0xfbc6('0xe'),_0x44f724,_0x47de96[_0xfbc6('0x12')]['message']);return _0x521c7e(_0x47de96[_0xfbc6('0x12')][_0xfbc6('0x14')]);}else{logger[_0xfbc6('0xd')]('ChatQueueReport,\x20%s,\x20%s',_0x44f724,_0xfbc6('0xf'));_0x521c7e(_0x47de96[_0xfbc6('0x15')][_0xfbc6('0x14')]);}})[_0xfbc6('0x16')](function(_0x2ea585){logger['error']('ChatQueueReport,\x20%s,\x20%s',_0x44f724,_0x2ea585);_0x5f408f(_0x2ea585);});});}exports[_0xfbc6('0x17')]=function(_0x2eea68){var _0x5f1ff4=this;return new Promise(function(_0x486b96,_0x25cf81){return db[_0xfbc6('0x18')][_0xfbc6('0x19')](_0x2eea68['body'],{'raw':_0x2eea68[_0xfbc6('0x1a')]?_0x2eea68[_0xfbc6('0x1a')][_0xfbc6('0x1b')]===undefined?!![]:![]:!![]})['then'](function(_0x52c6fe){logger[_0xfbc6('0xd')](_0xfbc6('0x17'),_0x2eea68);logger['debug'](_0xfbc6('0x17'),_0x2eea68,JSON[_0xfbc6('0x11')](_0x52c6fe));_0x486b96(_0x52c6fe);})['catch'](function(_0x57d3b3){logger['error'](_0xfbc6('0x17'),_0x57d3b3[_0xfbc6('0x14')],_0x2eea68);_0x25cf81(_0x5f1ff4['error'](0x1f4,_0x57d3b3[_0xfbc6('0x14')]));});});};exports[_0xfbc6('0x1c')]=function(_0x3572d7){var _0x3d05e8=this;return new Promise(function(_0x2d48b5,_0x575d1a){return db[_0xfbc6('0x18')]['update'](_0x3572d7[_0xfbc6('0x1d')],{'raw':_0x3572d7['options']?_0x3572d7[_0xfbc6('0x1a')]['raw']===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x3572d7['options']?_0x3572d7[_0xfbc6('0x1a')]['where']||null:null,'attributes':_0x3572d7[_0xfbc6('0x1a')]?_0x3572d7['options'][_0xfbc6('0x1e')]||null:null,'limit':_0x3572d7['options']?_0x3572d7[_0xfbc6('0x1a')][_0xfbc6('0x1f')]||null:null})['then'](function(_0x5a907a){logger['info']('UpdateChatQueueReport',_0x3572d7);logger[_0xfbc6('0x10')](_0xfbc6('0x1c'),_0x3572d7,JSON[_0xfbc6('0x11')](_0x5a907a));_0x2d48b5(_0x5a907a);})['catch'](function(_0x352442){logger[_0xfbc6('0x12')]('UpdateChatQueueReport',_0x352442[_0xfbc6('0x14')],_0x3572d7);_0x575d1a(_0x3d05e8[_0xfbc6('0x12')](0x1f4,_0x352442[_0xfbc6('0x14')]));});});};
\ No newline at end of file
+var _0x3cc4=['message','info','result','CreateChatQueueReport','ChatQueueReport','options','raw','catch','UpdateChatQueueReport','update','body','where','attributes','then','lodash','util','bluebird','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','http','request','ChatQueueReport,\x20%s,\x20%s','request\x20sent','debug','ChatQueueReport,\x20%s,\x20%s,\x20%s','stringify','error','code'];(function(_0x43c4d6,_0x3e8483){var _0x59ae5f=function(_0xdcc0f){while(--_0xdcc0f){_0x43c4d6['push'](_0x43c4d6['shift']());}};_0x59ae5f(++_0x3e8483);}(_0x3cc4,0x8e));var _0x43cc=function(_0x29067e,_0x8dba59){_0x29067e=_0x29067e-0x0;var _0xdedc50=_0x3cc4[_0x29067e];return _0xdedc50;};'use strict';var _=require(_0x43cc('0x0'));var util=require(_0x43cc('0x1'));var moment=require('moment');var BPromise=require(_0x43cc('0x2'));var rs=require('randomstring');var fs=require('fs');var Redis=require('ioredis');var db=require(_0x43cc('0x3'))['db'];var utils=require(_0x43cc('0x4'));var logger=require(_0x43cc('0x5'))(_0x43cc('0x6'));var config=require(_0x43cc('0x7'));var jayson=require(_0x43cc('0x8'));var client=jayson['client'][_0x43cc('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x178fc2,_0x2a5988,_0x482fb5){return new BPromise(function(_0x412580,_0x297a11){return client[_0x43cc('0xa')](_0x178fc2,_0x482fb5)['then'](function(_0x35f1af){logger['info'](_0x43cc('0xb'),_0x2a5988,_0x43cc('0xc'));logger[_0x43cc('0xd')](_0x43cc('0xe'),_0x2a5988,_0x43cc('0xc'),JSON[_0x43cc('0xf')](_0x35f1af));if(_0x35f1af['error']){if(_0x35f1af[_0x43cc('0x10')][_0x43cc('0x11')]===0x1f4){logger[_0x43cc('0x10')](_0x43cc('0xb'),_0x2a5988,_0x35f1af[_0x43cc('0x10')][_0x43cc('0x12')]);return _0x297a11(_0x35f1af[_0x43cc('0x10')][_0x43cc('0x12')]);}logger[_0x43cc('0x10')](_0x43cc('0xb'),_0x2a5988,_0x35f1af[_0x43cc('0x10')][_0x43cc('0x12')]);return _0x412580(_0x35f1af[_0x43cc('0x10')][_0x43cc('0x12')]);}else{logger[_0x43cc('0x13')](_0x43cc('0xb'),_0x2a5988,_0x43cc('0xc'));_0x412580(_0x35f1af[_0x43cc('0x14')][_0x43cc('0x12')]);}})['catch'](function(_0x68308){logger['error'](_0x43cc('0xb'),_0x2a5988,_0x68308);_0x297a11(_0x68308);});});}exports[_0x43cc('0x15')]=function(_0x35bc24){var _0x142372=this;return new Promise(function(_0x4e6ccb,_0x3c8f3c){return db[_0x43cc('0x16')]['create'](_0x35bc24['body'],{'raw':_0x35bc24[_0x43cc('0x17')]?_0x35bc24[_0x43cc('0x17')][_0x43cc('0x18')]===undefined?!![]:![]:!![]})['then'](function(_0x1991f5){logger[_0x43cc('0x13')](_0x43cc('0x15'),_0x35bc24);logger[_0x43cc('0xd')](_0x43cc('0x15'),_0x35bc24,JSON[_0x43cc('0xf')](_0x1991f5));_0x4e6ccb(_0x1991f5);})[_0x43cc('0x19')](function(_0x1e3336){logger['error'](_0x43cc('0x15'),_0x1e3336['message'],_0x35bc24);_0x3c8f3c(_0x142372[_0x43cc('0x10')](0x1f4,_0x1e3336['message']));});});};exports[_0x43cc('0x1a')]=function(_0x264577){var _0x1cf691=this;return new Promise(function(_0x7b2957,_0x440e76){return db[_0x43cc('0x16')][_0x43cc('0x1b')](_0x264577[_0x43cc('0x1c')],{'raw':_0x264577[_0x43cc('0x17')]?_0x264577[_0x43cc('0x17')][_0x43cc('0x18')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x264577['options']?_0x264577[_0x43cc('0x17')][_0x43cc('0x1d')]||null:null,'attributes':_0x264577[_0x43cc('0x17')]?_0x264577[_0x43cc('0x17')][_0x43cc('0x1e')]||null:null,'limit':_0x264577[_0x43cc('0x17')]?_0x264577[_0x43cc('0x17')]['limit']||null:null})[_0x43cc('0x1f')](function(_0x53427a){logger[_0x43cc('0x13')](_0x43cc('0x1a'),_0x264577);logger[_0x43cc('0xd')]('UpdateChatQueueReport',_0x264577,JSON[_0x43cc('0xf')](_0x53427a));_0x7b2957(_0x53427a);})[_0x43cc('0x19')](function(_0x3897b5){logger[_0x43cc('0x10')](_0x43cc('0x1a'),_0x3897b5['message'],_0x264577);_0x440e76(_0x1cf691[_0x43cc('0x10')](0x1f4,_0x3897b5['message']));});});};
\ No newline at end of file
index d3cd644..1f3a50f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7a0c=['/describe','describe','/:id','create','put','update','delete','destroy','exports','multer','util','path','connect-timeout','Router','fs-extra','../../config/environment','./chatQueueReport.controller','get','isAuthenticated'];(function(_0x67b23f,_0x37c7e9){var _0x49f143=function(_0x103e0e){while(--_0x103e0e){_0x67b23f['push'](_0x67b23f['shift']());}};_0x49f143(++_0x37c7e9);}(_0x7a0c,0x14c));var _0xc7a0=function(_0x2c4563,_0x44d6d5){_0x2c4563=_0x2c4563-0x0;var _0x53ae3c=_0x7a0c[_0x2c4563];return _0x53ae3c;};'use strict';var multer=require(_0xc7a0('0x0'));var util=require(_0xc7a0('0x1'));var path=require(_0xc7a0('0x2'));var timeout=require(_0xc7a0('0x3'));var express=require('express');var router=express[_0xc7a0('0x4')]();var fs_extra=require(_0xc7a0('0x5'));var auth=require('../../components/auth/service');var interaction=require('../../components/interaction/service');var config=require(_0xc7a0('0x6'));var controller=require(_0xc7a0('0x7'));router[_0xc7a0('0x8')]('/',auth[_0xc7a0('0x9')](),controller['index']);router[_0xc7a0('0x8')](_0xc7a0('0xa'),auth[_0xc7a0('0x9')](),controller[_0xc7a0('0xb')]);router[_0xc7a0('0x8')](_0xc7a0('0xc'),auth[_0xc7a0('0x9')](),controller['show']);router['post']('/',auth[_0xc7a0('0x9')](),controller[_0xc7a0('0xd')]);router[_0xc7a0('0xe')]('/:id',auth['isAuthenticated'](),controller[_0xc7a0('0xf')]);router[_0xc7a0('0x10')](_0xc7a0('0xc'),auth[_0xc7a0('0x9')](),controller[_0xc7a0('0x11')]);module[_0xc7a0('0x12')]=router;
\ No newline at end of file
+var _0x01e1=['../../components/auth/service','../../components/interaction/service','../../config/environment','./chatQueueReport.controller','get','isAuthenticated','index','/describe','describe','/:id','show','create','put','delete','destroy','exports','multer','util','connect-timeout','Router'];(function(_0x53afe9,_0x2c9f40){var _0x396396=function(_0x1f574d){while(--_0x1f574d){_0x53afe9['push'](_0x53afe9['shift']());}};_0x396396(++_0x2c9f40);}(_0x01e1,0x100));var _0x101e=function(_0x5cec41,_0x48bf95){_0x5cec41=_0x5cec41-0x0;var _0x57480b=_0x01e1[_0x5cec41];return _0x57480b;};'use strict';var multer=require(_0x101e('0x0'));var util=require(_0x101e('0x1'));var path=require('path');var timeout=require(_0x101e('0x2'));var express=require('express');var router=express[_0x101e('0x3')]();var fs_extra=require('fs-extra');var auth=require(_0x101e('0x4'));var interaction=require(_0x101e('0x5'));var config=require(_0x101e('0x6'));var controller=require(_0x101e('0x7'));router[_0x101e('0x8')]('/',auth[_0x101e('0x9')](),controller[_0x101e('0xa')]);router['get'](_0x101e('0xb'),auth['isAuthenticated'](),controller[_0x101e('0xc')]);router[_0x101e('0x8')](_0x101e('0xd'),auth[_0x101e('0x9')](),controller[_0x101e('0xe')]);router['post']('/',auth[_0x101e('0x9')](),controller[_0x101e('0xf')]);router[_0x101e('0x10')](_0x101e('0xd'),auth['isAuthenticated'](),controller['update']);router[_0x101e('0x11')](_0x101e('0xd'),auth[_0x101e('0x9')](),controller[_0x101e('0x12')]);module[_0x101e('0x13')]=router;
\ No newline at end of file
index b1d76b0..00618ea 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(_0x1a7858,_0x536d22){var _0x4b00c2=function(_0x24c429){while(--_0x24c429){_0x1a7858['push'](_0x1a7858['shift']());}};_0x4b00c2(++_0x536d22);}(_0xaa88,0x137));var _0x8aa8=function(_0x39780c,_0x5782c9){_0x39780c=_0x39780c-0x0;var _0x53c19b=_0xaa88[_0x39780c];return _0x53c19b;};'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 _0xb43b=['DATE','NOW','moment','sequelize','STRING','ENUM','account','queue'];(function(_0x7b173,_0x539d7f){var _0x1c598c=function(_0xe1e1e0){while(--_0xe1e1e0){_0x7b173['push'](_0x7b173['shift']());}};_0x1c598c(++_0x539d7f);}(_0xb43b,0x1b2));var _0xbb43=function(_0xd6ed49,_0x35207b){_0xd6ed49=_0xd6ed49-0x0;var _0x66763a=_0xb43b[_0xd6ed49];return _0x66763a;};'use strict';var moment=require(_0xbb43('0x0'));var Sequelize=require(_0xbb43('0x1'));module['exports']={'uniqueid':{'type':Sequelize[_0xbb43('0x2')],'allowNull':![]},'type':{'type':Sequelize[_0xbb43('0x3')](_0xbb43('0x4'),'agent',_0xbb43('0x5')),'allowNull':![],'defaultValue':_0xbb43('0x5')},'transferredAt':{'type':Sequelize[_0xbb43('0x6')],'allowNull':![],'defaultValue':Sequelize[_0xbb43('0x7')]}};
\ No newline at end of file
index c3aab08..88a1b2f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xfa21=['lodash','squel','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../config/logger','../../config/utils','../../config/environment','../../config/license/util','status','end','json','offset','undefined','count','limit','set','Content-Range','apply','reject','save','update','destroy','then','error','stack','name','send','index','ChatTransferReport','rawAttributes','fieldName','model','query','filters','intersection','attributes','fields','length','nolimit','order','sort','where','filter','merge','map','type','VIRTUAL','options','includeAll','include','rows','catch','show','params','keys','create','body','find','describe','eml-format','rimraf','zip-dir','fast-json-patch','moment','bluebird','mustache','util','path','sox','to-csv','ejs','fs-extra'];(function(_0x28407a,_0x2a7269){var _0x8bd6ef=function(_0x3c886f){while(--_0x3c886f){_0x28407a['push'](_0x28407a['shift']());}};_0x8bd6ef(++_0x2a7269);}(_0xfa21,0x127));var _0x1fa2=function(_0x1c7893,_0x169d1f){_0x1c7893=_0x1c7893-0x0;var _0x5f9cf3=_0xfa21[_0x1c7893];return _0x5f9cf3;};'use strict';var emlformat=require(_0x1fa2('0x0'));var rimraf=require(_0x1fa2('0x1'));var zipdir=require(_0x1fa2('0x2'));var jsonpatch=require(_0x1fa2('0x3'));var rp=require('request-promise');var moment=require(_0x1fa2('0x4'));var BPromise=require(_0x1fa2('0x5'));var Mustache=require(_0x1fa2('0x6'));var util=require(_0x1fa2('0x7'));var path=require(_0x1fa2('0x8'));var sox=require(_0x1fa2('0x9'));var csv=require(_0x1fa2('0xa'));var ejs=require(_0x1fa2('0xb'));var fs=require('fs');var fs_extra=require(_0x1fa2('0xc'));var _=require(_0x1fa2('0xd'));var squel=require(_0x1fa2('0xe'));var crypto=require(_0x1fa2('0xf'));var jsforce=require(_0x1fa2('0x10'));var deskjs=require(_0x1fa2('0x11'));var toCsv=require(_0x1fa2('0xa'));var querystring=require(_0x1fa2('0x12'));var Papa=require(_0x1fa2('0x13'));var Redis=require(_0x1fa2('0x14'));var authService=require(_0x1fa2('0x15'));var qs=require('../../components/parsers/qs');var as=require('../../components/parsers/advancedSearch');var hardwareService=require('../../config/license/hardware');var logger=require(_0x1fa2('0x16'))('api');var utils=require(_0x1fa2('0x17'));var config=require(_0x1fa2('0x18'));var licenseUtil=require(_0x1fa2('0x19'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x41561e,_0x424d5e){_0x424d5e=_0x424d5e||0xcc;return function(_0x177acd){if(_0x177acd){return _0x41561e['sendStatus'](_0x424d5e);}return _0x41561e[_0x1fa2('0x1a')](_0x424d5e)[_0x1fa2('0x1b')]();};}function respondWithResult(_0x139670,_0x4423e9){_0x4423e9=_0x4423e9||0xc8;return function(_0x2c675f){if(_0x2c675f){return _0x139670['status'](_0x4423e9)[_0x1fa2('0x1c')](_0x2c675f);}};}function respondWithFilteredResult(_0x2990b9,_0x12631f){return function(_0x3e9392){if(_0x3e9392){var _0xb44052=typeof _0x12631f[_0x1fa2('0x1d')]==='undefined'&&typeof _0x12631f['limit']===_0x1fa2('0x1e');var _0x3e9541=_0x3e9392[_0x1fa2('0x1f')];var _0x433f28=_0xb44052?0x0:_0x12631f[_0x1fa2('0x1d')];var _0x4bd086=_0xb44052?_0x3e9392['count']:_0x12631f[_0x1fa2('0x1d')]+_0x12631f[_0x1fa2('0x20')];var _0x577e7c;if(_0x4bd086>=_0x3e9541){_0x4bd086=_0x3e9541;_0x577e7c=0xc8;}else{_0x577e7c=0xce;}_0x2990b9[_0x1fa2('0x1a')](_0x577e7c);return _0x2990b9[_0x1fa2('0x21')](_0x1fa2('0x22'),_0x433f28+'-'+_0x4bd086+'/'+_0x3e9541)['json'](_0x3e9392);}return null;};}function patchUpdates(_0x5d63a3){return function(_0x571b97){try{jsonpatch[_0x1fa2('0x23')](_0x571b97,_0x5d63a3,!![]);}catch(_0x5431e2){return BPromise[_0x1fa2('0x24')](_0x5431e2);}return _0x571b97[_0x1fa2('0x25')]();};}function saveUpdates(_0x195fa3,_0x2df072){return function(_0x6821a){if(_0x6821a){return _0x6821a[_0x1fa2('0x26')](_0x195fa3)['then'](function(_0x3056df){return _0x3056df;});}return null;};}function removeEntity(_0x56b8f6,_0x88d6dd){return function(_0x9d0a7c){if(_0x9d0a7c){return _0x9d0a7c[_0x1fa2('0x27')]()[_0x1fa2('0x28')](function(){_0x56b8f6[_0x1fa2('0x1a')](0xcc)[_0x1fa2('0x1b')]();});}};}function handleEntityNotFound(_0x72be9a,_0x4c520e){return function(_0x2c5327){if(!_0x2c5327){_0x72be9a['sendStatus'](0x194);}return _0x2c5327;};}function handleError(_0x14a725,_0x1cbd70){_0x1cbd70=_0x1cbd70||0x1f4;return function(_0x51d8fe){logger[_0x1fa2('0x29')](_0x51d8fe[_0x1fa2('0x2a')]);if(_0x51d8fe[_0x1fa2('0x2b')]){delete _0x51d8fe['name'];}_0x14a725[_0x1fa2('0x1a')](_0x1cbd70)[_0x1fa2('0x2c')](_0x51d8fe);};}exports[_0x1fa2('0x2d')]=function(_0x4739f3,_0x4c481d){var _0x28bf49={},_0x36ea51={},_0x5627f3={'count':0x0,'rows':[]};var _0x543a96=_['map'](db[_0x1fa2('0x2e')][_0x1fa2('0x2f')],function(_0x5b2667){return{'name':_0x5b2667[_0x1fa2('0x30')],'type':_0x5b2667['type']['key']};});_0x36ea51[_0x1fa2('0x31')]=_['map'](_0x543a96,_0x1fa2('0x2b'));_0x36ea51[_0x1fa2('0x32')]=_['keys'](_0x4739f3['query']);_0x36ea51[_0x1fa2('0x33')]=_[_0x1fa2('0x34')](_0x36ea51[_0x1fa2('0x31')],_0x36ea51[_0x1fa2('0x32')]);_0x28bf49[_0x1fa2('0x35')]=_[_0x1fa2('0x34')](_0x36ea51[_0x1fa2('0x31')],qs[_0x1fa2('0x36')](_0x4739f3[_0x1fa2('0x32')][_0x1fa2('0x36')]));_0x28bf49[_0x1fa2('0x35')]=_0x28bf49['attributes'][_0x1fa2('0x37')]?_0x28bf49['attributes']:_0x36ea51[_0x1fa2('0x31')];if(!_0x4739f3[_0x1fa2('0x32')]['hasOwnProperty'](_0x1fa2('0x38'))){_0x28bf49[_0x1fa2('0x20')]=qs['limit'](_0x4739f3[_0x1fa2('0x32')]['limit']);_0x28bf49[_0x1fa2('0x1d')]=qs[_0x1fa2('0x1d')](_0x4739f3[_0x1fa2('0x32')][_0x1fa2('0x1d')]);}_0x28bf49[_0x1fa2('0x39')]=qs['sort'](_0x4739f3[_0x1fa2('0x32')][_0x1fa2('0x3a')]);_0x28bf49[_0x1fa2('0x3b')]=qs['filters'](_['pick'](_0x4739f3['query'],_0x36ea51[_0x1fa2('0x33')]),_0x543a96);if(_0x4739f3[_0x1fa2('0x32')][_0x1fa2('0x3c')]){_0x28bf49['where']=_[_0x1fa2('0x3d')](_0x28bf49[_0x1fa2('0x3b')],{'$or':_[_0x1fa2('0x3e')](_0x543a96,function(_0x3c3657){if(_0x3c3657[_0x1fa2('0x3f')]!==_0x1fa2('0x40')){var _0x15b1ec={};_0x15b1ec[_0x3c3657[_0x1fa2('0x2b')]]={'$like':'%'+_0x4739f3[_0x1fa2('0x32')][_0x1fa2('0x3c')]+'%'};return _0x15b1ec;}})});}_0x28bf49=_[_0x1fa2('0x3d')]({},_0x28bf49,_0x4739f3[_0x1fa2('0x41')]);var _0x318e7={'where':_0x28bf49[_0x1fa2('0x3b')]};return db[_0x1fa2('0x2e')]['count'](_0x318e7)[_0x1fa2('0x28')](function(_0x39e3b4){_0x5627f3[_0x1fa2('0x1f')]=_0x39e3b4;if(_0x4739f3[_0x1fa2('0x32')][_0x1fa2('0x42')]){_0x28bf49[_0x1fa2('0x43')]=[{'all':!![]}];}return db[_0x1fa2('0x2e')]['findAll'](_0x28bf49);})['then'](function(_0x365f2b){_0x5627f3[_0x1fa2('0x44')]=_0x365f2b;return _0x5627f3;})[_0x1fa2('0x28')](respondWithFilteredResult(_0x4c481d,_0x28bf49))[_0x1fa2('0x45')](handleError(_0x4c481d,null));};exports[_0x1fa2('0x46')]=function(_0x301c0b,_0x41222f){var _0x2d4a54={'raw':!![],'where':{'id':_0x301c0b[_0x1fa2('0x47')]['id']}},_0x40f863={};_0x40f863[_0x1fa2('0x31')]=_['keys'](db[_0x1fa2('0x2e')][_0x1fa2('0x2f')]);_0x40f863[_0x1fa2('0x32')]=_[_0x1fa2('0x48')](_0x301c0b[_0x1fa2('0x32')]);_0x40f863[_0x1fa2('0x33')]=_[_0x1fa2('0x34')](_0x40f863['model'],_0x40f863['query']);_0x2d4a54[_0x1fa2('0x35')]=_[_0x1fa2('0x34')](_0x40f863[_0x1fa2('0x31')],qs['fields'](_0x301c0b[_0x1fa2('0x32')][_0x1fa2('0x36')]));_0x2d4a54[_0x1fa2('0x35')]=_0x2d4a54[_0x1fa2('0x35')][_0x1fa2('0x37')]?_0x2d4a54[_0x1fa2('0x35')]:_0x40f863[_0x1fa2('0x31')];if(_0x301c0b[_0x1fa2('0x32')]['includeAll']){_0x2d4a54['include']=[{'all':!![]}];}_0x2d4a54=_[_0x1fa2('0x3d')]({},_0x2d4a54,_0x301c0b['options']);return db[_0x1fa2('0x2e')]['find'](_0x2d4a54)['then'](handleEntityNotFound(_0x41222f,null))[_0x1fa2('0x28')](respondWithResult(_0x41222f,null))['catch'](handleError(_0x41222f,null));};exports[_0x1fa2('0x49')]=function(_0x4b5798,_0x2b82d2){return db['ChatTransferReport'][_0x1fa2('0x49')](_0x4b5798[_0x1fa2('0x4a')],{})['then'](respondWithResult(_0x2b82d2,0xc9))[_0x1fa2('0x45')](handleError(_0x2b82d2,null));};exports[_0x1fa2('0x26')]=function(_0x1932f8,_0x210409){if(_0x1932f8['body']['id']){delete _0x1932f8[_0x1fa2('0x4a')]['id'];}return db['ChatTransferReport']['find']({'where':{'id':_0x1932f8[_0x1fa2('0x47')]['id']}})[_0x1fa2('0x28')](handleEntityNotFound(_0x210409,null))['then'](saveUpdates(_0x1932f8[_0x1fa2('0x4a')],null))['then'](respondWithResult(_0x210409,null))[_0x1fa2('0x45')](handleError(_0x210409,null));};exports[_0x1fa2('0x27')]=function(_0x29db58,_0x2a9989){return db[_0x1fa2('0x2e')][_0x1fa2('0x4b')]({'where':{'id':_0x29db58[_0x1fa2('0x47')]['id']}})['then'](handleEntityNotFound(_0x2a9989,null))['then'](removeEntity(_0x2a9989,null))['catch'](handleError(_0x2a9989,null));};exports[_0x1fa2('0x4c')]=function(_0x2f58a9,_0x2a7bcf){return db[_0x1fa2('0x2e')][_0x1fa2('0x4c')]()[_0x1fa2('0x28')](respondWithResult(_0x2a7bcf,null))['catch'](handleError(_0x2a7bcf,null));};
\ No newline at end of file
+var _0x1b55=['model','attributes','intersection','fields','length','hasOwnProperty','nolimit','order','sort','where','pick','merge','type','VIRTUAL','filter','options','include','findAll','rows','catch','show','includeAll','find','create','body','params','eml-format','rimraf','zip-dir','fast-json-patch','moment','bluebird','mustache','util','sox','to-csv','ejs','fs-extra','squel','crypto','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','sendStatus','status','json','offset','limit','undefined','count','set','reject','update','then','destroy','name','index','map','ChatTransferReport','rawAttributes','query','keys','filters'];(function(_0x208de5,_0x2da92b){var _0x31391a=function(_0x13df55){while(--_0x13df55){_0x208de5['push'](_0x208de5['shift']());}};_0x31391a(++_0x2da92b);}(_0x1b55,0x1ca));var _0x51b5=function(_0xa6e9fa,_0x33372a){_0xa6e9fa=_0xa6e9fa-0x0;var _0x44592c=_0x1b55[_0xa6e9fa];return _0x44592c;};'use strict';var emlformat=require(_0x51b5('0x0'));var rimraf=require(_0x51b5('0x1'));var zipdir=require(_0x51b5('0x2'));var jsonpatch=require(_0x51b5('0x3'));var rp=require('request-promise');var moment=require(_0x51b5('0x4'));var BPromise=require(_0x51b5('0x5'));var Mustache=require(_0x51b5('0x6'));var util=require(_0x51b5('0x7'));var path=require('path');var sox=require(_0x51b5('0x8'));var csv=require(_0x51b5('0x9'));var ejs=require(_0x51b5('0xa'));var fs=require('fs');var fs_extra=require(_0x51b5('0xb'));var _=require('lodash');var squel=require(_0x51b5('0xc'));var crypto=require(_0x51b5('0xd'));var jsforce=require('jsforce');var deskjs=require(_0x51b5('0xe'));var toCsv=require(_0x51b5('0x9'));var querystring=require(_0x51b5('0xf'));var Papa=require(_0x51b5('0x10'));var Redis=require(_0x51b5('0x11'));var authService=require(_0x51b5('0x12'));var qs=require(_0x51b5('0x13'));var as=require(_0x51b5('0x14'));var hardwareService=require(_0x51b5('0x15'));var logger=require(_0x51b5('0x16'))(_0x51b5('0x17'));var utils=require(_0x51b5('0x18'));var config=require('../../config/environment');var licenseUtil=require(_0x51b5('0x19'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x519f4c,_0xe22158){_0xe22158=_0xe22158||0xcc;return function(_0x7dcdbd){if(_0x7dcdbd){return _0x519f4c[_0x51b5('0x1a')](_0xe22158);}return _0x519f4c[_0x51b5('0x1b')](_0xe22158)['end']();};}function respondWithResult(_0x3461ab,_0x558f8d){_0x558f8d=_0x558f8d||0xc8;return function(_0x220a54){if(_0x220a54){return _0x3461ab[_0x51b5('0x1b')](_0x558f8d)[_0x51b5('0x1c')](_0x220a54);}};}function respondWithFilteredResult(_0x2b03e5,_0x197d87){return function(_0x12a5d7){if(_0x12a5d7){var _0x573744=typeof _0x197d87[_0x51b5('0x1d')]==='undefined'&&typeof _0x197d87[_0x51b5('0x1e')]===_0x51b5('0x1f');var _0x51ba41=_0x12a5d7[_0x51b5('0x20')];var _0x252a49=_0x573744?0x0:_0x197d87[_0x51b5('0x1d')];var _0x1271c0=_0x573744?_0x12a5d7[_0x51b5('0x20')]:_0x197d87['offset']+_0x197d87['limit'];var _0x5cadf0;if(_0x1271c0>=_0x51ba41){_0x1271c0=_0x51ba41;_0x5cadf0=0xc8;}else{_0x5cadf0=0xce;}_0x2b03e5['status'](_0x5cadf0);return _0x2b03e5[_0x51b5('0x21')]('Content-Range',_0x252a49+'-'+_0x1271c0+'/'+_0x51ba41)['json'](_0x12a5d7);}return null;};}function patchUpdates(_0x292f87){return function(_0x1380eb){try{jsonpatch['apply'](_0x1380eb,_0x292f87,!![]);}catch(_0x9653cf){return BPromise[_0x51b5('0x22')](_0x9653cf);}return _0x1380eb['save']();};}function saveUpdates(_0x2f95f2,_0x3853fc){return function(_0x2ac7bd){if(_0x2ac7bd){return _0x2ac7bd[_0x51b5('0x23')](_0x2f95f2)[_0x51b5('0x24')](function(_0x560090){return _0x560090;});}return null;};}function removeEntity(_0x18320f,_0x4afc21){return function(_0xf23d37){if(_0xf23d37){return _0xf23d37[_0x51b5('0x25')]()[_0x51b5('0x24')](function(){_0x18320f['status'](0xcc)['end']();});}};}function handleEntityNotFound(_0x36785f,_0x1000e7){return function(_0x11ecf7){if(!_0x11ecf7){_0x36785f['sendStatus'](0x194);}return _0x11ecf7;};}function handleError(_0x44010f,_0x539c2d){_0x539c2d=_0x539c2d||0x1f4;return function(_0x58e97a){logger['error'](_0x58e97a['stack']);if(_0x58e97a[_0x51b5('0x26')]){delete _0x58e97a[_0x51b5('0x26')];}_0x44010f['status'](_0x539c2d)['send'](_0x58e97a);};}exports[_0x51b5('0x27')]=function(_0x3724a9,_0x4ccb6b){var _0x304463={},_0x101283={},_0x4f80f2={'count':0x0,'rows':[]};var _0x5556c5=_[_0x51b5('0x28')](db[_0x51b5('0x29')][_0x51b5('0x2a')],function(_0x2d4889){return{'name':_0x2d4889['fieldName'],'type':_0x2d4889['type']['key']};});_0x101283['model']=_[_0x51b5('0x28')](_0x5556c5,_0x51b5('0x26'));_0x101283[_0x51b5('0x2b')]=_[_0x51b5('0x2c')](_0x3724a9[_0x51b5('0x2b')]);_0x101283[_0x51b5('0x2d')]=_['intersection'](_0x101283[_0x51b5('0x2e')],_0x101283['query']);_0x304463[_0x51b5('0x2f')]=_[_0x51b5('0x30')](_0x101283[_0x51b5('0x2e')],qs[_0x51b5('0x31')](_0x3724a9[_0x51b5('0x2b')][_0x51b5('0x31')]));_0x304463[_0x51b5('0x2f')]=_0x304463[_0x51b5('0x2f')][_0x51b5('0x32')]?_0x304463['attributes']:_0x101283[_0x51b5('0x2e')];if(!_0x3724a9['query'][_0x51b5('0x33')](_0x51b5('0x34'))){_0x304463[_0x51b5('0x1e')]=qs['limit'](_0x3724a9[_0x51b5('0x2b')][_0x51b5('0x1e')]);_0x304463[_0x51b5('0x1d')]=qs[_0x51b5('0x1d')](_0x3724a9[_0x51b5('0x2b')][_0x51b5('0x1d')]);}_0x304463[_0x51b5('0x35')]=qs[_0x51b5('0x36')](_0x3724a9[_0x51b5('0x2b')][_0x51b5('0x36')]);_0x304463[_0x51b5('0x37')]=qs[_0x51b5('0x2d')](_[_0x51b5('0x38')](_0x3724a9[_0x51b5('0x2b')],_0x101283[_0x51b5('0x2d')]),_0x5556c5);if(_0x3724a9[_0x51b5('0x2b')]['filter']){_0x304463['where']=_[_0x51b5('0x39')](_0x304463[_0x51b5('0x37')],{'$or':_[_0x51b5('0x28')](_0x5556c5,function(_0x4e195f){if(_0x4e195f[_0x51b5('0x3a')]!==_0x51b5('0x3b')){var _0x59db7e={};_0x59db7e[_0x4e195f[_0x51b5('0x26')]]={'$like':'%'+_0x3724a9[_0x51b5('0x2b')][_0x51b5('0x3c')]+'%'};return _0x59db7e;}})});}_0x304463=_[_0x51b5('0x39')]({},_0x304463,_0x3724a9[_0x51b5('0x3d')]);var _0x511727={'where':_0x304463['where']};return db[_0x51b5('0x29')][_0x51b5('0x20')](_0x511727)[_0x51b5('0x24')](function(_0x5afbc7){_0x4f80f2[_0x51b5('0x20')]=_0x5afbc7;if(_0x3724a9[_0x51b5('0x2b')]['includeAll']){_0x304463[_0x51b5('0x3e')]=[{'all':!![]}];}return db[_0x51b5('0x29')][_0x51b5('0x3f')](_0x304463);})[_0x51b5('0x24')](function(_0x3b2cc2){_0x4f80f2[_0x51b5('0x40')]=_0x3b2cc2;return _0x4f80f2;})[_0x51b5('0x24')](respondWithFilteredResult(_0x4ccb6b,_0x304463))[_0x51b5('0x41')](handleError(_0x4ccb6b,null));};exports[_0x51b5('0x42')]=function(_0x4e8a39,_0x24ba50){var _0x356c93={'raw':!![],'where':{'id':_0x4e8a39['params']['id']}},_0x436a34={};_0x436a34[_0x51b5('0x2e')]=_[_0x51b5('0x2c')](db['ChatTransferReport'][_0x51b5('0x2a')]);_0x436a34[_0x51b5('0x2b')]=_[_0x51b5('0x2c')](_0x4e8a39[_0x51b5('0x2b')]);_0x436a34[_0x51b5('0x2d')]=_[_0x51b5('0x30')](_0x436a34['model'],_0x436a34['query']);_0x356c93[_0x51b5('0x2f')]=_[_0x51b5('0x30')](_0x436a34[_0x51b5('0x2e')],qs[_0x51b5('0x31')](_0x4e8a39[_0x51b5('0x2b')][_0x51b5('0x31')]));_0x356c93[_0x51b5('0x2f')]=_0x356c93[_0x51b5('0x2f')][_0x51b5('0x32')]?_0x356c93['attributes']:_0x436a34['model'];if(_0x4e8a39[_0x51b5('0x2b')][_0x51b5('0x43')]){_0x356c93[_0x51b5('0x3e')]=[{'all':!![]}];}_0x356c93=_[_0x51b5('0x39')]({},_0x356c93,_0x4e8a39[_0x51b5('0x3d')]);return db['ChatTransferReport'][_0x51b5('0x44')](_0x356c93)[_0x51b5('0x24')](handleEntityNotFound(_0x24ba50,null))[_0x51b5('0x24')](respondWithResult(_0x24ba50,null))['catch'](handleError(_0x24ba50,null));};exports[_0x51b5('0x45')]=function(_0x416cf5,_0x18f7c3){return db[_0x51b5('0x29')][_0x51b5('0x45')](_0x416cf5[_0x51b5('0x46')],{})[_0x51b5('0x24')](respondWithResult(_0x18f7c3,0xc9))[_0x51b5('0x41')](handleError(_0x18f7c3,null));};exports[_0x51b5('0x23')]=function(_0x402cae,_0xc473f0){if(_0x402cae[_0x51b5('0x46')]['id']){delete _0x402cae['body']['id'];}return db[_0x51b5('0x29')][_0x51b5('0x44')]({'where':{'id':_0x402cae[_0x51b5('0x47')]['id']}})[_0x51b5('0x24')](handleEntityNotFound(_0xc473f0,null))['then'](saveUpdates(_0x402cae['body'],null))['then'](respondWithResult(_0xc473f0,null))[_0x51b5('0x41')](handleError(_0xc473f0,null));};exports[_0x51b5('0x25')]=function(_0x148888,_0x9c1487){return db['ChatTransferReport'][_0x51b5('0x44')]({'where':{'id':_0x148888[_0x51b5('0x47')]['id']}})[_0x51b5('0x24')](handleEntityNotFound(_0x9c1487,null))[_0x51b5('0x24')](removeEntity(_0x9c1487,null))[_0x51b5('0x41')](handleError(_0x9c1487,null));};exports['describe']=function(_0x36243c,_0x1b1a12){return db['ChatTransferReport']['describe']()[_0x51b5('0x24')](respondWithResult(_0x1b1a12,null))[_0x51b5('0x41')](handleError(_0x1b1a12,null));};
\ No newline at end of file
index 61bd4c6..5b7539c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6890=['moment','bluebird','request-promise','path','rimraf','../../config/environment','./chatTransferReport.attributes','report_chat_transfer','util','api'];(function(_0x148c09,_0x4fd39f){var _0x18e613=function(_0xfaa810){while(--_0xfaa810){_0x148c09['push'](_0x148c09['shift']());}};_0x18e613(++_0x4fd39f);}(_0x6890,0xbc));var _0x0689=function(_0xbca8c7,_0xa58714){_0xbca8c7=_0xbca8c7-0x0;var _0x56117e=_0x6890[_0xbca8c7];return _0x56117e;};'use strict';var _=require('lodash');var util=require(_0x0689('0x0'));var logger=require('../../config/logger')(_0x0689('0x1'));var moment=require(_0x0689('0x2'));var BPromise=require(_0x0689('0x3'));var rp=require(_0x0689('0x4'));var fs=require('fs');var path=require(_0x0689('0x5'));var rimraf=require(_0x0689('0x6'));var config=require(_0x0689('0x7'));var attributes=require(_0x0689('0x8'));module['exports']=function(_0x1d9160,_0x569d42){return _0x1d9160['define']('ChatTransferReport',attributes,{'tableName':_0x0689('0x9'),'paranoid':![],'indexes':[{'name':'uniqueid','fields':['uniqueid']}],'timestamps':!![]});};
\ No newline at end of file
+var _0xb24a=['exports','define','ChatTransferReport','report_chat_transfer','uniqueid','lodash','util','api','bluebird','request-promise','path','../../config/environment','./chatTransferReport.attributes'];(function(_0x25b276,_0x342433){var _0x4955dd=function(_0x475474){while(--_0x475474){_0x25b276['push'](_0x25b276['shift']());}};_0x4955dd(++_0x342433);}(_0xb24a,0x1b2));var _0xab24=function(_0x11b1b3,_0xf3cc69){_0x11b1b3=_0x11b1b3-0x0;var _0x437029=_0xb24a[_0x11b1b3];return _0x437029;};'use strict';var _=require(_0xab24('0x0'));var util=require(_0xab24('0x1'));var logger=require('../../config/logger')(_0xab24('0x2'));var moment=require('moment');var BPromise=require(_0xab24('0x3'));var rp=require(_0xab24('0x4'));var fs=require('fs');var path=require(_0xab24('0x5'));var rimraf=require('rimraf');var config=require(_0xab24('0x6'));var attributes=require(_0xab24('0x7'));module[_0xab24('0x8')]=function(_0x409fa6,_0x4d6f2b){return _0x409fa6[_0xab24('0x9')](_0xab24('0xa'),attributes,{'tableName':_0xab24('0xb'),'paranoid':![],'indexes':[{'name':'uniqueid','fields':[_0xab24('0xc')]}],'timestamps':!![]});};
\ No newline at end of file
index 6ba8e13..675d2e3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0017=['../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','request','then','info','ChatTransferReport,\x20%s,\x20%s','debug','ChatTransferReport,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','code','message','util','moment','bluebird','randomstring','ioredis'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x0017,0x8b));var _0x7001=function(_0x437d7f,_0x1feb46){_0x437d7f=_0x437d7f-0x0;var _0x31058c=_0x0017[_0x437d7f];return _0x31058c;};'use strict';var _=require('lodash');var util=require(_0x7001('0x0'));var moment=require(_0x7001('0x1'));var BPromise=require(_0x7001('0x2'));var rs=require(_0x7001('0x3'));var fs=require('fs');var Redis=require(_0x7001('0x4'));var db=require(_0x7001('0x5'))['db'];var utils=require(_0x7001('0x6'));var logger=require(_0x7001('0x7'))(_0x7001('0x8'));var config=require(_0x7001('0x9'));var jayson=require(_0x7001('0xa'));var client=jayson[_0x7001('0xb')][_0x7001('0xc')]({'port':0x232a});function respondWithRpcPromise(_0x46d6d0,_0x2e02bc,_0x222d91){return new BPromise(function(_0x3f931e,_0x3b7a6f){return client[_0x7001('0xd')](_0x46d6d0,_0x222d91)[_0x7001('0xe')](function(_0x15aef1){logger[_0x7001('0xf')](_0x7001('0x10'),_0x2e02bc,'request\x20sent');logger[_0x7001('0x11')](_0x7001('0x12'),_0x2e02bc,_0x7001('0x13'),JSON[_0x7001('0x14')](_0x15aef1));if(_0x15aef1[_0x7001('0x15')]){if(_0x15aef1[_0x7001('0x15')][_0x7001('0x16')]===0x1f4){logger[_0x7001('0x15')](_0x7001('0x10'),_0x2e02bc,_0x15aef1[_0x7001('0x15')][_0x7001('0x17')]);return _0x3b7a6f(_0x15aef1[_0x7001('0x15')][_0x7001('0x17')]);}logger[_0x7001('0x15')](_0x7001('0x10'),_0x2e02bc,_0x15aef1[_0x7001('0x15')]['message']);return _0x3f931e(_0x15aef1[_0x7001('0x15')][_0x7001('0x17')]);}else{logger[_0x7001('0xf')](_0x7001('0x10'),_0x2e02bc,'request\x20sent');_0x3f931e(_0x15aef1['result'][_0x7001('0x17')]);}})['catch'](function(_0x5079bb){logger[_0x7001('0x15')](_0x7001('0x10'),_0x2e02bc,_0x5079bb);_0x3b7a6f(_0x5079bb);});});}
\ No newline at end of file
+var _0x049e=['code','message','result','catch','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','jayson/promise','http','request','then','info','ChatTransferReport,\x20%s,\x20%s','debug','request\x20sent','stringify','error'];(function(_0x1a931a,_0x309ef0){var _0x239d88=function(_0x4b5df8){while(--_0x4b5df8){_0x1a931a['push'](_0x1a931a['shift']());}};_0x239d88(++_0x309ef0);}(_0x049e,0x64));var _0xe049=function(_0x466e57,_0x21b819){_0x466e57=_0x466e57-0x0;var _0x34df42=_0x049e[_0x466e57];return _0x34df42;};'use strict';var _=require(_0xe049('0x0'));var util=require(_0xe049('0x1'));var moment=require(_0xe049('0x2'));var BPromise=require(_0xe049('0x3'));var rs=require(_0xe049('0x4'));var fs=require('fs');var Redis=require(_0xe049('0x5'));var db=require(_0xe049('0x6'))['db'];var utils=require(_0xe049('0x7'));var logger=require(_0xe049('0x8'))(_0xe049('0x9'));var config=require('../../config/environment');var jayson=require(_0xe049('0xa'));var client=jayson['client'][_0xe049('0xb')]({'port':0x232a});function respondWithRpcPromise(_0xc9b888,_0x5d9590,_0x108446){return new BPromise(function(_0xbb691f,_0x50e19b){return client[_0xe049('0xc')](_0xc9b888,_0x108446)[_0xe049('0xd')](function(_0x5155f4){logger[_0xe049('0xe')](_0xe049('0xf'),_0x5d9590,'request\x20sent');logger[_0xe049('0x10')]('ChatTransferReport,\x20%s,\x20%s,\x20%s',_0x5d9590,_0xe049('0x11'),JSON[_0xe049('0x12')](_0x5155f4));if(_0x5155f4[_0xe049('0x13')]){if(_0x5155f4[_0xe049('0x13')][_0xe049('0x14')]===0x1f4){logger['error'](_0xe049('0xf'),_0x5d9590,_0x5155f4[_0xe049('0x13')][_0xe049('0x15')]);return _0x50e19b(_0x5155f4[_0xe049('0x13')]['message']);}logger[_0xe049('0x13')](_0xe049('0xf'),_0x5d9590,_0x5155f4[_0xe049('0x13')][_0xe049('0x15')]);return _0xbb691f(_0x5155f4[_0xe049('0x13')][_0xe049('0x15')]);}else{logger[_0xe049('0xe')](_0xe049('0xf'),_0x5d9590,_0xe049('0x11'));_0xbb691f(_0x5155f4[_0xe049('0x16')][_0xe049('0x15')]);}})[_0xe049('0x17')](function(_0x54be48){logger['error'](_0xe049('0xf'),_0x5d9590,_0x54be48);_0x50e19b(_0x54be48);});});}
\ No newline at end of file
index fa8eec2..66a0e88 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xef63=['get','describe','/:id','show','post','create','put','delete','exports','multer','util','path','connect-timeout','express','fs-extra','../../components/auth/service','../../config/environment','isAuthenticated'];(function(_0x57b54c,_0x54ce0d){var _0x59cc19=function(_0xa33bc6){while(--_0xa33bc6){_0x57b54c['push'](_0x57b54c['shift']());}};_0x59cc19(++_0x54ce0d);}(_0xef63,0x183));var _0x3ef6=function(_0x358a63,_0x35633d){_0x358a63=_0x358a63-0x0;var _0x2e7fef=_0xef63[_0x358a63];return _0x2e7fef;};'use strict';var multer=require(_0x3ef6('0x0'));var util=require(_0x3ef6('0x1'));var path=require(_0x3ef6('0x2'));var timeout=require(_0x3ef6('0x3'));var express=require(_0x3ef6('0x4'));var router=express['Router']();var fs_extra=require(_0x3ef6('0x5'));var auth=require(_0x3ef6('0x6'));var interaction=require('../../components/interaction/service');var config=require(_0x3ef6('0x7'));var controller=require('./chatTransferReport.controller');router['get']('/',auth[_0x3ef6('0x8')](),controller['index']);router[_0x3ef6('0x9')]('/describe',auth[_0x3ef6('0x8')](),controller[_0x3ef6('0xa')]);router[_0x3ef6('0x9')](_0x3ef6('0xb'),auth[_0x3ef6('0x8')](),controller[_0x3ef6('0xc')]);router[_0x3ef6('0xd')]('/',auth[_0x3ef6('0x8')](),controller[_0x3ef6('0xe')]);router[_0x3ef6('0xf')](_0x3ef6('0xb'),auth[_0x3ef6('0x8')](),controller['update']);router[_0x3ef6('0x10')]('/:id',auth[_0x3ef6('0x8')](),controller['destroy']);module[_0x3ef6('0x11')]=router;
\ No newline at end of file
+var _0xd7de=['/:id','show','post','create','put','update','delete','exports','connect-timeout','Router','../../components/auth/service','../../components/interaction/service','../../config/environment','./chatTransferReport.controller','get','isAuthenticated','index','/describe','describe'];(function(_0x5b5eb4,_0x117c87){var _0x42af53=function(_0xdf6fcb){while(--_0xdf6fcb){_0x5b5eb4['push'](_0x5b5eb4['shift']());}};_0x42af53(++_0x117c87);}(_0xd7de,0x7a));var _0xed7d=function(_0x25f397,_0x4d1ecc){_0x25f397=_0x25f397-0x0;var _0x11f679=_0xd7de[_0x25f397];return _0x11f679;};'use strict';var multer=require('multer');var util=require('util');var path=require('path');var timeout=require(_0xed7d('0x0'));var express=require('express');var router=express[_0xed7d('0x1')]();var fs_extra=require('fs-extra');var auth=require(_0xed7d('0x2'));var interaction=require(_0xed7d('0x3'));var config=require(_0xed7d('0x4'));var controller=require(_0xed7d('0x5'));router[_0xed7d('0x6')]('/',auth[_0xed7d('0x7')](),controller[_0xed7d('0x8')]);router[_0xed7d('0x6')](_0xed7d('0x9'),auth[_0xed7d('0x7')](),controller[_0xed7d('0xa')]);router['get'](_0xed7d('0xb'),auth['isAuthenticated'](),controller[_0xed7d('0xc')]);router[_0xed7d('0xd')]('/',auth['isAuthenticated'](),controller[_0xed7d('0xe')]);router[_0xed7d('0xf')](_0xed7d('0xb'),auth[_0xed7d('0x7')](),controller[_0xed7d('0x10')]);router[_0xed7d('0x11')](_0xed7d('0xb'),auth[_0xed7d('0x7')](),controller['destroy']);module[_0xed7d('0x12')]=router;
\ No newline at end of file
index fdb9010..4350146 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x41dc=['offlineForm','generate','Please\x20hold\x20and\x20we\x20will\x20answer\x20your\x20request\x20as\x20soon\x20as\x20possible.','New\x20offline\x20message\x20from\x20websiteName','You\x20received\x20a\x20new\x20offline\x20message\x20from\x20websiteName.\x20Here\x20you\x20can\x20find\x20the\x20details\x20of\x20the\x20request:','Your\x20request\x20has\x20not\x20been\x20processed.','Skip','Account:\x20{{account.name}}<br/>{{#queue}}Queue:\x20{{queue.name}}<br/>{{/queue}}From\x20:\x20{{from}}','website_alias','bottom_right','alternate','#fafafa','System','Status\x20to\x20put\x20when\x20mandatory\x20disposition\x20is\x20enabled','Enabled/disables\x20mandatory\x20dispo\x20on\x20a\x20queue','mandatoryDisposition','sequelize','randomstring','exports','STRING','email','Agent','#011F6A','#ffffff','BOOLEAN','ENUM','rounded','squared','We\x20are\x20here!','Send','INTEGER','Powered\x20by\x20xCALLY','Form\x20properly\x20submitted','Form\x20submission\x20error','Note','Type\x20a\x20message','Thanks\x20you\x20for\x20your\x20time!','Feedback','star','thumb','TEXT','stringify','input','name','getDataValue','onlineForm','parse','setDataValue','textarea','Comments','Leave\x20your\x20comments'];(function(_0xa464c9,_0x7c86d8){var _0x3d73c4=function(_0x5c2056){while(--_0x5c2056){_0xa464c9['push'](_0xa464c9['shift']());}};_0x3d73c4(++_0x7c86d8);}(_0x41dc,0x1db));var _0xc41d=function(_0x565c49,_0x54acd0){_0x565c49=_0x565c49-0x0;var _0x20ca34=_0x41dc[_0x565c49];return _0x20ca34;};'use strict';var Sequelize=require(_0xc41d('0x0'));var rs=require(_0xc41d('0x1'));module[_0xc41d('0x2')]={'name':{'type':Sequelize[_0xc41d('0x3')],'allowNull':![]},'address':{'type':Sequelize['STRING'],'allowNull':![],'unique':'address'},'description':{'type':Sequelize[_0xc41d('0x3')]},'mapKey':{'type':Sequelize['STRING'],'defaultValue':'email'},'mapKeyOffline':{'type':Sequelize[_0xc41d('0x3')],'defaultValue':_0xc41d('0x4')},'key':{'type':Sequelize[_0xc41d('0x3')],'allowNull':![]},'agentAlias':{'type':Sequelize[_0xc41d('0x3')],'defaultValue':_0xc41d('0x5')},'customerAlias':{'type':Sequelize['STRING'],'defaultValue':'Me'},'color':{'type':Sequelize[_0xc41d('0x3')],'allowNull':![],'defaultValue':'#011F6A','validate':{'notEmpty':!![]}},'color_button':{'type':Sequelize[_0xc41d('0x3')],'allowNull':![],'defaultValue':_0xc41d('0x6'),'validate':{'notEmpty':!![]}},'textColor':{'type':Sequelize['STRING'],'allowNull':![],'defaultValue':_0xc41d('0x7'),'validate':{'notEmpty':!![]}},'fontSize':{'type':Sequelize['INTEGER'],'defaultValue':0xf},'remote':{'type':Sequelize[_0xc41d('0x3')]},'animation':{'type':Sequelize[_0xc41d('0x8')],'defaultValue':!![]},'header_shape':{'type':Sequelize[_0xc41d('0x9')](_0xc41d('0xa'),_0xc41d('0xb')),'defaultValue':'rounded'},'header_online':{'type':Sequelize[_0xc41d('0x3')],'defaultValue':_0xc41d('0xc')},'start_chat_button':{'type':Sequelize['STRING'],'defaultValue':'Chat'},'offline_chat_button':{'type':Sequelize['STRING'],'defaultValue':_0xc41d('0xd')},'header_offline':{'type':Sequelize[_0xc41d('0x3')],'defaultValue':'Contact\x20us'},'download_transcript':{'type':Sequelize[_0xc41d('0x8')],'defaultValue':!![]},'timeout':{'type':Sequelize[_0xc41d('0xe')],'defaultValue':0x0},'whiteLabel':{'type':Sequelize['STRING'],'defaultValue':_0xc41d('0xf')},'defaultWhiteLabel':{'type':Sequelize[_0xc41d('0x8')],'defaultValue':!![]},'sitepic':{'type':Sequelize['TEXT']},'closingQuestion':{'type':Sequelize['STRING'],'defaultValue':'Do\x20you\x20want\x20to\x20close\x20the\x20interaction?'},'formSubmitSuccessMessage':{'type':Sequelize[_0xc41d('0x3')],'defaultValue':_0xc41d('0x10')},'formSubmitFailureMessage':{'type':Sequelize[_0xc41d('0x3')],'defaultValue':_0xc41d('0x11')},'noteTitle':{'type':Sequelize[_0xc41d('0x3')],'defaultValue':_0xc41d('0x12')},'placeholderMessage':{'type':Sequelize[_0xc41d('0x3')],'defaultValue':_0xc41d('0x13')},'closingMessage':{'type':Sequelize[_0xc41d('0x3')],'defaultValue':_0xc41d('0x14')},'closingMessageButton':{'type':Sequelize[_0xc41d('0x3')],'defaultValue':_0xc41d('0xd')},'skipMessageButton':{'type':Sequelize[_0xc41d('0x3')],'defaultValue':'Skip'},'conditionAgreement':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'enableRating':{'type':Sequelize[_0xc41d('0x8')],'defaultValue':![]},'enableFeedback':{'type':Sequelize[_0xc41d('0x8')],'defaultValue':![]},'enableSendButton':{'type':Sequelize[_0xc41d('0x8')],'defaultValue':![]},'feedbackTitle':{'type':Sequelize[_0xc41d('0x3')],'defaultValue':_0xc41d('0x15')},'ratingType':{'type':Sequelize['ENUM'](_0xc41d('0x16'),_0xc41d('0x17')),'defaultValue':'star'},'ratingStarsNumber':{'type':Sequelize[_0xc41d('0xe')],'defaultValue':0x5},'onlineForm':{'type':Sequelize[_0xc41d('0x18')],'defaultValue':function(){return JSON[_0xc41d('0x19')]({'items':[{'type':_0xc41d('0x1a'),'variable':null,'config':{'placeholder':'name','type':'text','required':!![]},'props':{'title':_0xc41d('0x1b'),'helpText':''}},{'type':_0xc41d('0x1a'),'props':{'title':_0xc41d('0x4'),'helpText':''},'config':{'required':!![],'placeholder':_0xc41d('0x4'),'type':_0xc41d('0x4')},'variable':null}],'fromKey':0x1});},'get':function(){return this[_0xc41d('0x1c')](_0xc41d('0x1d'))?JSON[_0xc41d('0x1e')](this[_0xc41d('0x1c')](_0xc41d('0x1d'))):{};},'set':function(_0x3c606b){return this[_0xc41d('0x1f')]('onlineForm',JSON[_0xc41d('0x19')](_0x3c606b));}},'offlineForm':{'type':Sequelize[_0xc41d('0x18')],'defaultValue':function(){return JSON[_0xc41d('0x19')]({'items':[{'type':_0xc41d('0x1a'),'props':{'title':_0xc41d('0x4'),'helpText':''},'config':{'required':!![],'placeholder':'email','type':_0xc41d('0x4')},'variable':null},{'type':_0xc41d('0x20'),'config':{'placeholder':'Comments'},'props':{'title':_0xc41d('0x21'),'helpText':_0xc41d('0x22')}}],'fromKey':0x0});},'get':function(){return this['getDataValue'](_0xc41d('0x23'))?JSON[_0xc41d('0x1e')](this['getDataValue'](_0xc41d('0x23'))):{};},'set':function(_0x3d9581){return this[_0xc41d('0x1f')]('offlineForm',JSON[_0xc41d('0x19')](_0x3d9581));}},'token':{'type':Sequelize[_0xc41d('0x3')],'defaultValue':function(){return rs[_0xc41d('0x24')]();}},'autoclose':{'type':Sequelize[_0xc41d('0x8')],'defaultValue':!![]},'enableCustomerWriting':{'type':Sequelize[_0xc41d('0x8')],'defaultValue':![]},'forwardTranscript':{'type':Sequelize[_0xc41d('0x8')],'defaultValue':![]},'forwardTranscriptMessage':{'type':Sequelize[_0xc41d('0x3')]},'forwardOffline':{'type':Sequelize[_0xc41d('0x8')],'defaultValue':![]},'forwardOfflineAddress':{'type':Sequelize[_0xc41d('0x3')]},'waitingTitle':{'type':Sequelize['STRING'],'defaultValue':'All\x20of\x20our\x20agents\x20are\x20busy\x20at\x20this\x20time.\x20Your\x20chat\x20is\x20very\x20important\x20to\x20us.'},'waitingMessage':{'type':Sequelize['STRING'],'defaultValue':_0xc41d('0x25')},'offlineMessageSubject':{'type':Sequelize['STRING'],'defaultValue':_0xc41d('0x26')},'offlineMessageBody':{'type':Sequelize[_0xc41d('0x3')],'defaultValue':_0xc41d('0x27')},'enableUnmanagedNote':{'type':Sequelize[_0xc41d('0x8')],'defaultValue':!![]},'unmanagedMessage':{'type':Sequelize[_0xc41d('0x3')],'defaultValue':_0xc41d('0x28')},'skipUnmanaged':{'type':Sequelize[_0xc41d('0x3')],'defaultValue':_0xc41d('0x29')},'sendUnmanaged':{'type':Sequelize[_0xc41d('0x3')],'defaultValue':_0xc41d('0xd')},'enableCustomerAttachment':{'type':Sequelize[_0xc41d('0x8')],'defaultValue':![]},'enableCustomerCheckmarks':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'agentAvatar':{'type':Sequelize['TEXT']},'showAgentAvatar':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'timezone':{'type':Sequelize['STRING']},'notificationTemplate':{'type':Sequelize[_0xc41d('0x18')],'defaultValue':function(){return _0xc41d('0x2a');}},'notificationSound':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]},'notificationShake':{'type':Sequelize[_0xc41d('0x8')],'defaultValue':![]},'hideWhenOffline':{'type':Sequelize[_0xc41d('0x8')],'defaultValue':![]},'agentIdentifier':{'type':Sequelize[_0xc41d('0x3')],'defaultValue':_0xc41d('0x2b')},'waitForTheAssignedAgent':{'type':Sequelize['INTEGER'],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0xa},'alignment':{'type':Sequelize[_0xc41d('0x3')],'defaultValue':_0xc41d('0x2c')},'verticalAlignment':{'type':Sequelize[_0xc41d('0xe')],'defaultValue':0x1e},'messagesAlignment':{'type':Sequelize[_0xc41d('0x3')],'defaultValue':_0xc41d('0x2d')},'defaultTitle':{'type':Sequelize[_0xc41d('0x3')]},'customerAvatar':{'type':Sequelize['TEXT']},'showCustomerAvatar':{'type':Sequelize[_0xc41d('0x8')],'defaultValue':![]},'messageFontSize':{'type':Sequelize[_0xc41d('0xe')],'defaultValue':0xc},'backgroundColor':{'type':Sequelize[_0xc41d('0x3')],'allowNull':![],'defaultValue':_0xc41d('0x2e'),'validate':{'notEmpty':!![]}},'queueTransfer':{'type':Sequelize[_0xc41d('0x8')],'defaultValue':![]},'queueTransferTimeout':{'type':Sequelize[_0xc41d('0xe')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0x12c},'agentTransfer':{'type':Sequelize[_0xc41d('0x8')],'defaultValue':![]},'agentTransferTimeout':{'type':Sequelize[_0xc41d('0xe')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0x12c},'systemAlias':{'type':Sequelize[_0xc41d('0x3')],'defaultValue':_0xc41d('0x2f')},'systemAvatar':{'type':Sequelize[_0xc41d('0x18')]},'mandatoryDispositionPauseId':{'type':Sequelize['INTEGER'],'comment':_0xc41d('0x30')},'mandatoryDisposition':{'type':Sequelize[_0xc41d('0x8')],'defaultValue':![],'comment':_0xc41d('0x31'),'set':function(_0x15bd07){if(!_0x15bd07)this[_0xc41d('0x1f')]('mandatoryDispositionPauseId',null);this['setDataValue'](_0xc41d('0x32'),_0x15bd07);}},'vidaooEscalation':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'vidaooApiKey':{'type':Sequelize[_0xc41d('0x3')]},'vidaooTopic':{'type':Sequelize[_0xc41d('0x3')],'allowNull':![],'defaultValue':'Generated\x20by\x20XCALLY\x20Motion'},'vidaooNote':{'type':Sequelize[_0xc41d('0x3')],'defaultValue':function(){return'Meeting\x20generated\x20for\x20interaction\x20#{{interaction.id}}\x20by\x20{{agent.name}}';}},'vidaooMetadata':{'type':Sequelize['TEXT'],'defaultValue':null},'openNewInteraction':{'type':Sequelize['BOOLEAN'],'defaultValue':![],'allowNull':!![]},'subjectOffline':{'type':Sequelize['TEXT']}};
\ No newline at end of file
+var _0x8366=['parse','generate','All\x20of\x20our\x20agents\x20are\x20busy\x20at\x20this\x20time.\x20Your\x20chat\x20is\x20very\x20important\x20to\x20us.','Please\x20hold\x20and\x20we\x20will\x20answer\x20your\x20request\x20as\x20soon\x20as\x20possible.','New\x20offline\x20message\x20from\x20websiteName','Your\x20request\x20has\x20not\x20been\x20processed.','Skip','Account:\x20{{account.name}}<br/>{{#queue}}Queue:\x20{{queue.name}}<br/>{{/queue}}From\x20:\x20{{from}}','website_alias','bottom_right','alternate','#fafafa','System','Enabled/disables\x20mandatory\x20dispo\x20on\x20a\x20queue','mandatoryDispositionPauseId','sequelize','randomstring','exports','STRING','email','Agent','#011F6A','#ffffff','INTEGER','BOOLEAN','ENUM','rounded','We\x20are\x20here!','Powered\x20by\x20xCALLY','TEXT','Do\x20you\x20want\x20to\x20close\x20the\x20interaction?','Form\x20submission\x20error','Note','Type\x20a\x20message','Thanks\x20you\x20for\x20your\x20time!','Send','Feedback','star','thumb','stringify','input','text','name','getDataValue','onlineForm','setDataValue','textarea','Comments','Leave\x20your\x20comments','offlineForm'];(function(_0x9fa101,_0x4f61d7){var _0x3b90a7=function(_0xf6d40d){while(--_0xf6d40d){_0x9fa101['push'](_0x9fa101['shift']());}};_0x3b90a7(++_0x4f61d7);}(_0x8366,0xd7));var _0x6836=function(_0x1fff4c,_0x2a2264){_0x1fff4c=_0x1fff4c-0x0;var _0x892602=_0x8366[_0x1fff4c];return _0x892602;};'use strict';var Sequelize=require(_0x6836('0x0'));var rs=require(_0x6836('0x1'));module[_0x6836('0x2')]={'name':{'type':Sequelize[_0x6836('0x3')],'allowNull':![]},'address':{'type':Sequelize[_0x6836('0x3')],'allowNull':![],'unique':'address'},'description':{'type':Sequelize[_0x6836('0x3')]},'mapKey':{'type':Sequelize['STRING'],'defaultValue':_0x6836('0x4')},'mapKeyOffline':{'type':Sequelize[_0x6836('0x3')],'defaultValue':_0x6836('0x4')},'key':{'type':Sequelize[_0x6836('0x3')],'allowNull':![]},'agentAlias':{'type':Sequelize[_0x6836('0x3')],'defaultValue':_0x6836('0x5')},'customerAlias':{'type':Sequelize[_0x6836('0x3')],'defaultValue':'Me'},'color':{'type':Sequelize[_0x6836('0x3')],'allowNull':![],'defaultValue':'#011F6A','validate':{'notEmpty':!![]}},'color_button':{'type':Sequelize['STRING'],'allowNull':![],'defaultValue':_0x6836('0x6'),'validate':{'notEmpty':!![]}},'textColor':{'type':Sequelize[_0x6836('0x3')],'allowNull':![],'defaultValue':_0x6836('0x7'),'validate':{'notEmpty':!![]}},'fontSize':{'type':Sequelize[_0x6836('0x8')],'defaultValue':0xf},'remote':{'type':Sequelize[_0x6836('0x3')]},'animation':{'type':Sequelize[_0x6836('0x9')],'defaultValue':!![]},'header_shape':{'type':Sequelize[_0x6836('0xa')](_0x6836('0xb'),'squared'),'defaultValue':_0x6836('0xb')},'header_online':{'type':Sequelize[_0x6836('0x3')],'defaultValue':_0x6836('0xc')},'start_chat_button':{'type':Sequelize[_0x6836('0x3')],'defaultValue':'Chat'},'offline_chat_button':{'type':Sequelize[_0x6836('0x3')],'defaultValue':'Send'},'header_offline':{'type':Sequelize['STRING'],'defaultValue':'Contact\x20us'},'download_transcript':{'type':Sequelize[_0x6836('0x9')],'defaultValue':!![]},'timeout':{'type':Sequelize[_0x6836('0x8')],'defaultValue':0x0},'whiteLabel':{'type':Sequelize[_0x6836('0x3')],'defaultValue':_0x6836('0xd')},'defaultWhiteLabel':{'type':Sequelize[_0x6836('0x9')],'defaultValue':!![]},'sitepic':{'type':Sequelize[_0x6836('0xe')]},'closingQuestion':{'type':Sequelize[_0x6836('0x3')],'defaultValue':_0x6836('0xf')},'formSubmitSuccessMessage':{'type':Sequelize['STRING'],'defaultValue':'Form\x20properly\x20submitted'},'formSubmitFailureMessage':{'type':Sequelize[_0x6836('0x3')],'defaultValue':_0x6836('0x10')},'noteTitle':{'type':Sequelize['STRING'],'defaultValue':_0x6836('0x11')},'placeholderMessage':{'type':Sequelize[_0x6836('0x3')],'defaultValue':_0x6836('0x12')},'closingMessage':{'type':Sequelize[_0x6836('0x3')],'defaultValue':_0x6836('0x13')},'closingMessageButton':{'type':Sequelize[_0x6836('0x3')],'defaultValue':_0x6836('0x14')},'skipMessageButton':{'type':Sequelize['STRING'],'defaultValue':'Skip'},'conditionAgreement':{'type':Sequelize[_0x6836('0x9')],'defaultValue':![]},'enableRating':{'type':Sequelize[_0x6836('0x9')],'defaultValue':![]},'enableFeedback':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'enableSendButton':{'type':Sequelize[_0x6836('0x9')],'defaultValue':![]},'feedbackTitle':{'type':Sequelize[_0x6836('0x3')],'defaultValue':_0x6836('0x15')},'ratingType':{'type':Sequelize[_0x6836('0xa')](_0x6836('0x16'),_0x6836('0x17')),'defaultValue':_0x6836('0x16')},'ratingStarsNumber':{'type':Sequelize[_0x6836('0x8')],'defaultValue':0x5},'onlineForm':{'type':Sequelize[_0x6836('0xe')],'defaultValue':function(){return JSON[_0x6836('0x18')]({'items':[{'type':_0x6836('0x19'),'variable':null,'config':{'placeholder':'name','type':_0x6836('0x1a'),'required':!![]},'props':{'title':_0x6836('0x1b'),'helpText':''}},{'type':_0x6836('0x19'),'props':{'title':_0x6836('0x4'),'helpText':''},'config':{'required':!![],'placeholder':_0x6836('0x4'),'type':'email'},'variable':null}],'fromKey':0x1});},'get':function(){return this[_0x6836('0x1c')](_0x6836('0x1d'))?JSON['parse'](this[_0x6836('0x1c')]('onlineForm')):{};},'set':function(_0x42b200){return this[_0x6836('0x1e')](_0x6836('0x1d'),JSON[_0x6836('0x18')](_0x42b200));}},'offlineForm':{'type':Sequelize[_0x6836('0xe')],'defaultValue':function(){return JSON[_0x6836('0x18')]({'items':[{'type':_0x6836('0x19'),'props':{'title':_0x6836('0x4'),'helpText':''},'config':{'required':!![],'placeholder':_0x6836('0x4'),'type':_0x6836('0x4')},'variable':null},{'type':_0x6836('0x1f'),'config':{'placeholder':_0x6836('0x20')},'props':{'title':_0x6836('0x20'),'helpText':_0x6836('0x21')}}],'fromKey':0x0});},'get':function(){return this[_0x6836('0x1c')](_0x6836('0x22'))?JSON[_0x6836('0x23')](this[_0x6836('0x1c')](_0x6836('0x22'))):{};},'set':function(_0x5371af){return this[_0x6836('0x1e')](_0x6836('0x22'),JSON[_0x6836('0x18')](_0x5371af));}},'token':{'type':Sequelize[_0x6836('0x3')],'defaultValue':function(){return rs[_0x6836('0x24')]();}},'autoclose':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]},'enableCustomerWriting':{'type':Sequelize[_0x6836('0x9')],'defaultValue':![]},'forwardTranscript':{'type':Sequelize[_0x6836('0x9')],'defaultValue':![]},'forwardTranscriptMessage':{'type':Sequelize[_0x6836('0x3')]},'forwardOffline':{'type':Sequelize[_0x6836('0x9')],'defaultValue':![]},'forwardOfflineAddress':{'type':Sequelize[_0x6836('0x3')]},'waitingTitle':{'type':Sequelize[_0x6836('0x3')],'defaultValue':_0x6836('0x25')},'waitingMessage':{'type':Sequelize[_0x6836('0x3')],'defaultValue':_0x6836('0x26')},'offlineMessageSubject':{'type':Sequelize[_0x6836('0x3')],'defaultValue':_0x6836('0x27')},'offlineMessageBody':{'type':Sequelize[_0x6836('0x3')],'defaultValue':'You\x20received\x20a\x20new\x20offline\x20message\x20from\x20websiteName.\x20Here\x20you\x20can\x20find\x20the\x20details\x20of\x20the\x20request:'},'enableUnmanagedNote':{'type':Sequelize[_0x6836('0x9')],'defaultValue':!![]},'unmanagedMessage':{'type':Sequelize[_0x6836('0x3')],'defaultValue':_0x6836('0x28')},'skipUnmanaged':{'type':Sequelize[_0x6836('0x3')],'defaultValue':_0x6836('0x29')},'sendUnmanaged':{'type':Sequelize[_0x6836('0x3')],'defaultValue':_0x6836('0x14')},'enableCustomerAttachment':{'type':Sequelize[_0x6836('0x9')],'defaultValue':![]},'enableCustomerCheckmarks':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'agentAvatar':{'type':Sequelize[_0x6836('0xe')]},'showAgentAvatar':{'type':Sequelize[_0x6836('0x9')],'defaultValue':![]},'timezone':{'type':Sequelize[_0x6836('0x3')]},'notificationTemplate':{'type':Sequelize['TEXT'],'defaultValue':function(){return _0x6836('0x2a');}},'notificationSound':{'type':Sequelize[_0x6836('0x9')],'defaultValue':!![]},'notificationShake':{'type':Sequelize[_0x6836('0x9')],'defaultValue':![]},'hideWhenOffline':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'agentIdentifier':{'type':Sequelize[_0x6836('0x3')],'defaultValue':_0x6836('0x2b')},'waitForTheAssignedAgent':{'type':Sequelize[_0x6836('0x8')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0xa},'alignment':{'type':Sequelize[_0x6836('0x3')],'defaultValue':_0x6836('0x2c')},'verticalAlignment':{'type':Sequelize[_0x6836('0x8')],'defaultValue':0x1e},'messagesAlignment':{'type':Sequelize[_0x6836('0x3')],'defaultValue':_0x6836('0x2d')},'defaultTitle':{'type':Sequelize[_0x6836('0x3')]},'customerAvatar':{'type':Sequelize[_0x6836('0xe')]},'showCustomerAvatar':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'messageFontSize':{'type':Sequelize[_0x6836('0x8')],'defaultValue':0xc},'backgroundColor':{'type':Sequelize[_0x6836('0x3')],'allowNull':![],'defaultValue':_0x6836('0x2e'),'validate':{'notEmpty':!![]}},'queueTransfer':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'queueTransferTimeout':{'type':Sequelize[_0x6836('0x8')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0x12c},'agentTransfer':{'type':Sequelize[_0x6836('0x9')],'defaultValue':![]},'agentTransferTimeout':{'type':Sequelize[_0x6836('0x8')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0x12c},'systemAlias':{'type':Sequelize[_0x6836('0x3')],'defaultValue':_0x6836('0x2f')},'systemAvatar':{'type':Sequelize[_0x6836('0xe')]},'mandatoryDispositionPauseId':{'type':Sequelize[_0x6836('0x8')],'comment':'Status\x20to\x20put\x20when\x20mandatory\x20disposition\x20is\x20enabled'},'mandatoryDisposition':{'type':Sequelize[_0x6836('0x9')],'defaultValue':![],'comment':_0x6836('0x30'),'set':function(_0x37a222){if(!_0x37a222)this['setDataValue'](_0x6836('0x31'),null);this[_0x6836('0x1e')]('mandatoryDisposition',_0x37a222);}},'vidaooEscalation':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'vidaooApiKey':{'type':Sequelize['STRING']},'vidaooTopic':{'type':Sequelize['STRING'],'allowNull':![],'defaultValue':'Generated\x20by\x20XCALLY\x20Motion'},'vidaooNote':{'type':Sequelize['STRING'],'defaultValue':function(){return'Meeting\x20generated\x20for\x20interaction\x20#{{interaction.id}}\x20by\x20{{agent.name}}';}},'vidaooMetadata':{'type':Sequelize[_0x6836('0xe')],'defaultValue':null},'openNewInteraction':{'type':Sequelize['BOOLEAN'],'defaultValue':![],'allowNull':!![]},'subjectOffline':{'type':Sequelize[_0x6836('0xe')]}};
\ No newline at end of file
index c7d2a3e..f561cec 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x87e6=['server','attachments','basename','openNewInteraction','bulkCreate','MailServerOut','Smtp','forwardOffline','forwardOfflineAddress','service','host','port','secure','authentication','pass','SendMail','email','originalname','mapValues','offlineMessageSubject','MailAccountId','NotifyMailAccount','notifyMail','remove','addInteraction','omit','getInteractions','Owner','fullname','Tags','color','tag','Command','timezone','iftime\x20%s,%s','interval','iftime\x20%s','indexOf','true','[%s][INTERVAL][%s]\x20%s\x20%s\x20(%s)','ONLINE','OFFLINE','No\x20timezone','getSnippet','Interval','License','increment','Intervals','all','some','server/files/chat/iframe.ejs','remote','connection','virtual','replace','alignment','textColor','color_button','addApplications','sequelize','transaction','getApplications','addProactiveActions','chatProactiveAction','getProactiveActions','ChatProactiveAction','getFields','online','false','offlineForm','onlineForm','items','fromKey','getOfflineMessages','Contact','Attachment','Attachments','addAgents','userChatWebsite:save','removeAgents','isArray','userChatWebsite:remove','emit','getAgents','eml-format','fast-json-patch','request-promise','moment','mustache','util','sox','to-csv','ejs','lodash','squel','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../config/license/hardware','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','redis','./chatWebsite.socket','register','jayson/promise','http','client','then','info','ChatWebsite,\x20%s,\x20%s','request\x20sent','debug','ChatWebsite,\x20%s,\x20%s,\x20%s','error','code','message','result','catch','status','json','offset','undefined','count','set','apply','save','update','ChatWebsites','UserProfileResource','destroy','end','sendStatus','stack','name','send','index','Pause','mandatoryDispositionPause','map','ChatWebsite','key','model','query','intersection','attributes','length','hasOwnProperty','nolimit','limit','sort','where','pick','filters','filter','merge','type','VIRTUAL','options','findAll','show','params','keys','rawAttributes','fields','includeAll','include','find','create','body','user','get','Unable\x20to\x20retrieve\x20the\x20current\x20user','UserProfileSection','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','describe','addDisposition','Disposition','getDispositions','findOne','order','ChatWebsiteId','rows','removeDispositions','ids','addAnswer','CannedAnswer','getAnswers','removeAnswers','addLogo','file','agentAvatar','addCustomerAvatar','customerAvatar','addSystemAvatar','systemAvatar','filename','getLogo','join','root','server/files/images/logos/default_logo.svg','sitepic','getLicense','custom','isNil','existsSync','server/files/images/logos/','download','getAvatar','server/files/images/avatars/default_avatar.png','server/files/images/avatars/','showCustomerAvatar','getSystemAvatar','server/files/images/avatars/system_avatar.png','user-agent-parser','user-agent','chat','CmContact','Sequelize','ValidationError','no\x20available\x20attributes','difference','updatedAt','createdAt','CompanyId','from','from\x20is\x20mandatory','body\x20is\x20mandatory\x20and\x20not\x20empty','mapKey\x20is\x20mandatory,\x20please\x20use\x20one\x20of\x20these:\x20','mapKey','mapKey\x20invalid,\x20please\x20use\x20one\x20of\x20these:\x20','List','DESC','ChatApplication','Applications','account','applications','list','orderBy','priority','asc','Contacts','defaults','contact','customerIp','headers','cf-connecting-ip','x-forwarded-for','split','firstName','lastName','x-real-port','referer','browser','version','format','unknown','device','vendor','stringify','threadId','ChatInteraction','externalUrl','ContactId','interaction','spread','messageId','created','autoclose','push','close','*,*,*,*','ChatMessage','AttachmentId','UserId','unshift','forcedOwnership','startRouting','Start','EventManager','notify','files','ListId','mapKeyOffline\x20is\x20mandatory,\x20please\x20use\x20one\x20of\x20these:\x20','includes','mapKeyOffline','mapKeyOffline\x20invalid,\x20please\x20use\x20one\x20of\x20these:\x20','CmList','MailAccount','findOrCreate','readFileSync','server/files/templates/chatOfflineMessage.ejs','utf8','render','toPairs','offlineMessageBody','ChatOfflineMessage','mimetype'];(function(_0xab2622,_0x582313){var _0x3ab544=function(_0x591570){while(--_0x591570){_0xab2622['push'](_0xab2622['shift']());}};_0x3ab544(++_0x582313);}(_0x87e6,0x185));var _0x687e=function(_0x1cfce9,_0x518ca2){_0x1cfce9=_0x1cfce9-0x0;var _0x443404=_0x87e6[_0x1cfce9];return _0x443404;};'use strict';var emlformat=require(_0x687e('0x0'));var rimraf=require('rimraf');var zipdir=require('zip-dir');var jsonpatch=require(_0x687e('0x1'));var rp=require(_0x687e('0x2'));var moment=require(_0x687e('0x3'));var BPromise=require('bluebird');var Mustache=require(_0x687e('0x4'));var util=require(_0x687e('0x5'));var path=require('path');var sox=require(_0x687e('0x6'));var csv=require(_0x687e('0x7'));var ejs=require(_0x687e('0x8'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x687e('0x9'));var squel=require(_0x687e('0xa'));var crypto=require('crypto');var jsforce=require(_0x687e('0xb'));var deskjs=require(_0x687e('0xc'));var toCsv=require(_0x687e('0x7'));var querystring=require(_0x687e('0xd'));var Papa=require(_0x687e('0xe'));var Redis=require(_0x687e('0xf'));var authService=require(_0x687e('0x10'));var qs=require(_0x687e('0x11'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x687e('0x12'));var logger=require('../../config/logger')(_0x687e('0x13'));var utils=require(_0x687e('0x14'));var config=require(_0x687e('0x15'));var licenseUtil=require(_0x687e('0x16'));var db=require(_0x687e('0x17'))['db'];config[_0x687e('0x18')]=_['defaults'](config[_0x687e('0x18')],{'host':'localhost','port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0x687e('0x18')]));require(_0x687e('0x19'))[_0x687e('0x1a')](socket);var jayson=require(_0x687e('0x1b'));var client=jayson['client'][_0x687e('0x1c')]({'port':0x232c});var client9002=jayson[_0x687e('0x1d')][_0x687e('0x1c')]({'port':0x232a});var client9003=jayson[_0x687e('0x1d')][_0x687e('0x1c')]({'port':0x232b});var client9001=jayson[_0x687e('0x1d')][_0x687e('0x1c')]({'port':0x2329});function respondWithRpcPromise(_0x2a4032,_0x129dde,_0x45e28c,_0x3fe754){return new BPromise(function(_0x3f98da,_0x2569a9){var _0x41d368=_0x3fe754||client;return _0x41d368['request'](_0x2a4032,_0x45e28c)[_0x687e('0x1e')](function(_0x1d063a){logger[_0x687e('0x1f')](_0x687e('0x20'),_0x129dde,_0x687e('0x21'));logger[_0x687e('0x22')](_0x687e('0x23'),_0x129dde,_0x687e('0x21'),JSON['stringify'](_0x1d063a));if(_0x1d063a['error']){if(_0x1d063a[_0x687e('0x24')][_0x687e('0x25')]===0x1f4){logger[_0x687e('0x24')]('ChatWebsite,\x20%s,\x20%s',_0x129dde,_0x1d063a[_0x687e('0x24')]['message']);return _0x2569a9(_0x1d063a[_0x687e('0x24')][_0x687e('0x26')]);}logger[_0x687e('0x24')](_0x687e('0x20'),_0x129dde,_0x1d063a[_0x687e('0x24')][_0x687e('0x26')]);return _0x3f98da(_0x1d063a[_0x687e('0x24')][_0x687e('0x26')]);}else{logger[_0x687e('0x1f')]('ChatWebsite,\x20%s,\x20%s',_0x129dde,'request\x20sent');_0x3f98da(_0x1d063a[_0x687e('0x27')][_0x687e('0x26')]);}})[_0x687e('0x28')](function(_0x1f5302){logger[_0x687e('0x24')](_0x687e('0x20'),_0x129dde,_0x1f5302);_0x2569a9(_0x1f5302);});});}function respondWithStatusCode(_0x1ac492,_0x5e673b){_0x5e673b=_0x5e673b||0xcc;return function(_0x301da2){if(_0x301da2){return _0x1ac492['sendStatus'](_0x5e673b);}return _0x1ac492[_0x687e('0x29')](_0x5e673b)['end']();};}function respondWithResult(_0x458071,_0x298c29){_0x298c29=_0x298c29||0xc8;return function(_0x33d9cd){if(_0x33d9cd){return _0x458071[_0x687e('0x29')](_0x298c29)[_0x687e('0x2a')](_0x33d9cd);}};}function respondWithFilteredResult(_0xeef2f0,_0x36b564){return function(_0x3ed12f){if(_0x3ed12f){var _0x549356=typeof _0x36b564[_0x687e('0x2b')]===_0x687e('0x2c')&&typeof _0x36b564['limit']==='undefined';var _0x400164=_0x3ed12f[_0x687e('0x2d')];var _0x18440b=_0x549356?0x0:_0x36b564['offset'];var _0x1d622d=_0x549356?_0x3ed12f['count']:_0x36b564[_0x687e('0x2b')]+_0x36b564['limit'];var _0x43ec59;if(_0x1d622d>=_0x400164){_0x1d622d=_0x400164;_0x43ec59=0xc8;}else{_0x43ec59=0xce;}_0xeef2f0[_0x687e('0x29')](_0x43ec59);return _0xeef2f0[_0x687e('0x2e')]('Content-Range',_0x18440b+'-'+_0x1d622d+'/'+_0x400164)['json'](_0x3ed12f);}return null;};}function patchUpdates(_0x5e3360){return function(_0x280dd9){try{jsonpatch[_0x687e('0x2f')](_0x280dd9,_0x5e3360,!![]);}catch(_0x33ef18){return BPromise['reject'](_0x33ef18);}return _0x280dd9[_0x687e('0x30')]();};}function saveUpdates(_0x2c8541,_0x5771a3){return function(_0x3ac4de){if(_0x3ac4de){return _0x3ac4de[_0x687e('0x31')](_0x2c8541)[_0x687e('0x1e')](function(_0x4fc85f){return _0x4fc85f;});}return null;};}function removeEntity(_0xba7cb5,_0x9a1912){return function(_0x1fba3a){if(_0x1fba3a){return _0x1fba3a['destroy']()[_0x687e('0x1e')](function(){var _0x445e99=_0x1fba3a['get']({'plain':!![]});var _0x6fbc7c=_0x687e('0x32');return db[_0x687e('0x33')][_0x687e('0x34')]({'where':{'type':_0x6fbc7c,'resourceId':_0x445e99['id']}})['then'](function(){return _0x1fba3a;});})[_0x687e('0x1e')](function(){_0xba7cb5[_0x687e('0x29')](0xcc)[_0x687e('0x35')]();});}};}function handleEntityNotFound(_0x1bd957,_0x17aa2d){return function(_0x4594e5){if(!_0x4594e5){_0x1bd957[_0x687e('0x36')](0x194);}return _0x4594e5;};}function handleError(_0x3b4b9f,_0x55ac3e){_0x55ac3e=_0x55ac3e||0x1f4;return function(_0x33c6f4){logger[_0x687e('0x24')](_0x33c6f4[_0x687e('0x37')]);if(_0x33c6f4[_0x687e('0x38')]){delete _0x33c6f4[_0x687e('0x38')];}_0x3b4b9f['status'](_0x55ac3e)[_0x687e('0x39')](_0x33c6f4);};}exports[_0x687e('0x3a')]=function(_0x12202d,_0x2a56db){var _0x35daa0={'include':[{'model':db[_0x687e('0x3b')],'as':_0x687e('0x3c')}]},_0x7306b={},_0x197bf8={'count':0x0,'rows':[]};var _0x3a3ccb=_[_0x687e('0x3d')](db[_0x687e('0x3e')]['rawAttributes'],function(_0x257674){return{'name':_0x257674['fieldName'],'type':_0x257674['type'][_0x687e('0x3f')]};});_0x7306b[_0x687e('0x40')]=_[_0x687e('0x3d')](_0x3a3ccb,_0x687e('0x38'));_0x7306b[_0x687e('0x41')]=_['keys'](_0x12202d[_0x687e('0x41')]);_0x7306b['filters']=_[_0x687e('0x42')](_0x7306b['model'],_0x7306b[_0x687e('0x41')]);_0x35daa0[_0x687e('0x43')]=_['intersection'](_0x7306b[_0x687e('0x40')],qs['fields'](_0x12202d[_0x687e('0x41')]['fields']));_0x35daa0[_0x687e('0x43')]=_0x35daa0[_0x687e('0x43')][_0x687e('0x44')]?_0x35daa0['attributes']:_0x7306b['model'];if(!_0x12202d[_0x687e('0x41')][_0x687e('0x45')](_0x687e('0x46'))){_0x35daa0[_0x687e('0x47')]=qs[_0x687e('0x47')](_0x12202d['query'][_0x687e('0x47')]);_0x35daa0[_0x687e('0x2b')]=qs[_0x687e('0x2b')](_0x12202d[_0x687e('0x41')][_0x687e('0x2b')]);}_0x35daa0['order']=qs[_0x687e('0x48')](_0x12202d[_0x687e('0x41')]['sort']);_0x35daa0[_0x687e('0x49')]=qs['filters'](_[_0x687e('0x4a')](_0x12202d[_0x687e('0x41')],_0x7306b[_0x687e('0x4b')]),_0x3a3ccb);if(_0x12202d[_0x687e('0x41')][_0x687e('0x4c')]){_0x35daa0[_0x687e('0x49')]=_[_0x687e('0x4d')](_0x35daa0[_0x687e('0x49')],{'$or':_[_0x687e('0x3d')](_0x3a3ccb,function(_0x593f38){if(_0x593f38[_0x687e('0x4e')]!==_0x687e('0x4f')){var _0x4f0374={};_0x4f0374[_0x593f38[_0x687e('0x38')]]={'$like':'%'+_0x12202d[_0x687e('0x41')][_0x687e('0x4c')]+'%'};return _0x4f0374;}})});}_0x35daa0=_[_0x687e('0x4d')]({},_0x35daa0,_0x12202d[_0x687e('0x50')]);var _0x219ae9={'where':_0x35daa0[_0x687e('0x49')]};return db[_0x687e('0x3e')]['count'](_0x219ae9)['then'](function(_0x268fe9){_0x197bf8[_0x687e('0x2d')]=_0x268fe9;if(_0x12202d['query']['includeAll']){_0x35daa0['include']=[{'all':!![]}];}return db[_0x687e('0x3e')][_0x687e('0x51')](_0x35daa0);})[_0x687e('0x1e')](function(_0x345f43){_0x197bf8['rows']=_0x345f43;return _0x197bf8;})['then'](respondWithFilteredResult(_0x2a56db,_0x35daa0))[_0x687e('0x28')](handleError(_0x2a56db,null));};exports[_0x687e('0x52')]=function(_0x9ec19a,_0x213068){var _0x136082={'raw':![],'where':{'id':_0x9ec19a[_0x687e('0x53')]['id']},'include':[{'model':db['Pause'],'as':_0x687e('0x3c')}]},_0x225989={};_0x225989[_0x687e('0x40')]=_[_0x687e('0x54')](db[_0x687e('0x3e')][_0x687e('0x55')]);_0x225989[_0x687e('0x41')]=_[_0x687e('0x54')](_0x9ec19a['query']);_0x225989[_0x687e('0x4b')]=_[_0x687e('0x42')](_0x225989[_0x687e('0x40')],_0x225989[_0x687e('0x41')]);_0x136082['attributes']=_[_0x687e('0x42')](_0x225989[_0x687e('0x40')],qs[_0x687e('0x56')](_0x9ec19a[_0x687e('0x41')][_0x687e('0x56')]));_0x136082['attributes']=_0x136082[_0x687e('0x43')]['length']?_0x136082['attributes']:_0x225989['model'];if(_0x9ec19a[_0x687e('0x41')][_0x687e('0x57')]){_0x136082[_0x687e('0x58')]=[{'all':!![]}];}_0x136082=_[_0x687e('0x4d')]({},_0x136082,_0x9ec19a[_0x687e('0x50')]);return db[_0x687e('0x3e')][_0x687e('0x59')](_0x136082)[_0x687e('0x1e')](handleEntityNotFound(_0x213068,null))[_0x687e('0x1e')](respondWithResult(_0x213068,null))['catch'](handleError(_0x213068,null));};exports[_0x687e('0x5a')]=function(_0x59b534,_0xec9e92){return db[_0x687e('0x3e')][_0x687e('0x5a')](_0x59b534[_0x687e('0x5b')],{})['then'](function(_0x364884){var _0x484bc5=_0x59b534[_0x687e('0x5c')][_0x687e('0x5d')]({'plain':!![]});if(!_0x484bc5)throw new Error(_0x687e('0x5e'));if(_0x484bc5['role']==='user'){var _0x18fe4b=_0x364884[_0x687e('0x5d')]({'plain':!![]});var _0x589a25=_0x687e('0x32');return db[_0x687e('0x5f')][_0x687e('0x59')]({'where':{'name':_0x589a25,'userProfileId':_0x484bc5['userProfileId']},'raw':!![]})[_0x687e('0x1e')](function(_0x135921){if(_0x135921&&_0x135921[_0x687e('0x60')]===0x0){return db[_0x687e('0x33')]['create']({'name':_0x18fe4b['name'],'resourceId':_0x18fe4b['id'],'type':_0x135921['name'],'sectionId':_0x135921['id']},{})['then'](function(){return _0x364884;});}else{return _0x364884;}})[_0x687e('0x28')](function(_0x1c5376){logger[_0x687e('0x24')](_0x687e('0x61'),_0x1c5376);throw _0x1c5376;});}return _0x364884;})[_0x687e('0x1e')](respondWithResult(_0xec9e92,0xc9))[_0x687e('0x28')](handleError(_0xec9e92,null));};exports['update']=function(_0x3001a6,_0x486c9b){if(_0x3001a6[_0x687e('0x5b')]['id']){delete _0x3001a6[_0x687e('0x5b')]['id'];}return db[_0x687e('0x3e')][_0x687e('0x59')]({'where':{'id':_0x3001a6[_0x687e('0x53')]['id']},'include':[{'model':db[_0x687e('0x3b')],'as':'mandatoryDispositionPause'}]})[_0x687e('0x1e')](handleEntityNotFound(_0x486c9b,null))[_0x687e('0x1e')](saveUpdates(_0x3001a6[_0x687e('0x5b')],null))[_0x687e('0x1e')](respondWithResult(_0x486c9b,null))['catch'](handleError(_0x486c9b,null));};exports[_0x687e('0x34')]=function(_0x5142c5,_0x496e3a){return db[_0x687e('0x3e')][_0x687e('0x59')]({'where':{'id':_0x5142c5[_0x687e('0x53')]['id']}})['then'](handleEntityNotFound(_0x496e3a,null))[_0x687e('0x1e')](removeEntity(_0x496e3a,null))[_0x687e('0x28')](handleError(_0x496e3a,null));};exports[_0x687e('0x62')]=function(_0x5a09ef,_0x9e2ab1){return db[_0x687e('0x3e')][_0x687e('0x62')]()[_0x687e('0x1e')](respondWithResult(_0x9e2ab1,null))[_0x687e('0x28')](handleError(_0x9e2ab1,null));};exports[_0x687e('0x63')]=function(_0x4afa54,_0x52de0a,_0x3546a6){if(_0x4afa54[_0x687e('0x5b')]['id']){delete _0x4afa54[_0x687e('0x5b')]['id'];}return db[_0x687e('0x3e')][_0x687e('0x59')]({'where':{'id':_0x4afa54[_0x687e('0x53')]['id']}})[_0x687e('0x1e')](handleEntityNotFound(_0x52de0a,null))['then'](function(_0x36035f){if(_0x36035f){_0x4afa54[_0x687e('0x5b')]['ChatWebsiteId']=_0x36035f['id'];return db[_0x687e('0x64')][_0x687e('0x5a')](_0x4afa54[_0x687e('0x5b')]);}})[_0x687e('0x1e')](respondWithResult(_0x52de0a,null))[_0x687e('0x28')](handleError(_0x52de0a,null));};exports[_0x687e('0x65')]=function(_0x7e17ad,_0x23e72a,_0x409e1e){var _0x50a10a={'raw':![],'where':{}};var _0x2946ca={};var _0x4f64de={'count':0x0,'rows':[]};return db['ChatWebsite'][_0x687e('0x66')]({'where':{'id':_0x7e17ad[_0x687e('0x53')]['id']}})[_0x687e('0x1e')](handleEntityNotFound(_0x23e72a,null))[_0x687e('0x1e')](function(_0xd4b308){if(_0xd4b308){_0x2946ca[_0x687e('0x40')]=_[_0x687e('0x54')](db[_0x687e('0x64')][_0x687e('0x55')]);_0x2946ca['query']=_[_0x687e('0x54')](_0x7e17ad[_0x687e('0x41')]);_0x2946ca[_0x687e('0x4b')]=_[_0x687e('0x42')](_0x2946ca[_0x687e('0x40')],_0x2946ca[_0x687e('0x41')]);_0x50a10a['attributes']=_[_0x687e('0x42')](_0x2946ca[_0x687e('0x40')],qs[_0x687e('0x56')](_0x7e17ad[_0x687e('0x41')][_0x687e('0x56')]));_0x50a10a['attributes']=_0x50a10a[_0x687e('0x43')][_0x687e('0x44')]?_0x50a10a[_0x687e('0x43')]:_0x2946ca[_0x687e('0x40')];if(!_0x7e17ad['query'][_0x687e('0x45')](_0x687e('0x46'))){_0x50a10a[_0x687e('0x47')]=qs[_0x687e('0x47')](_0x7e17ad[_0x687e('0x41')][_0x687e('0x47')]);_0x50a10a[_0x687e('0x2b')]=qs[_0x687e('0x2b')](_0x7e17ad[_0x687e('0x41')][_0x687e('0x2b')]);}_0x50a10a[_0x687e('0x67')]=qs[_0x687e('0x48')](_0x7e17ad['query'][_0x687e('0x48')]);_0x50a10a[_0x687e('0x49')]=qs[_0x687e('0x4b')](_[_0x687e('0x4a')](_0x7e17ad[_0x687e('0x41')],_0x2946ca[_0x687e('0x4b')]));_0x50a10a['where'][_0x687e('0x68')]=_0xd4b308['id'];if(_0x7e17ad[_0x687e('0x41')][_0x687e('0x4c')]){_0x50a10a['where']=_['merge'](_0x50a10a[_0x687e('0x49')],{'$or':_['map'](_0x50a10a['attributes'],function(_0x40467e){var _0x577b8c={};_0x577b8c[_0x40467e]={'$like':'%'+_0x7e17ad[_0x687e('0x41')]['filter']+'%'};return _0x577b8c;})});}_0x50a10a=_[_0x687e('0x4d')]({},_0x50a10a,_0x7e17ad['options']);return db[_0x687e('0x64')][_0x687e('0x2d')]({'where':_0x50a10a[_0x687e('0x49')]})[_0x687e('0x1e')](function(_0x3a3a97){_0x4f64de[_0x687e('0x2d')]=_0x3a3a97;if(_0x7e17ad[_0x687e('0x41')][_0x687e('0x57')]){_0x50a10a[_0x687e('0x58')]=[{'all':!![]}];}return db[_0x687e('0x64')]['findAll'](_0x50a10a);})[_0x687e('0x1e')](function(_0x2e2a3d){_0x4f64de[_0x687e('0x69')]=_0x2e2a3d;return _0x4f64de;});}})[_0x687e('0x1e')](respondWithFilteredResult(_0x23e72a,_0x50a10a))[_0x687e('0x28')](handleError(_0x23e72a,null));};exports[_0x687e('0x6a')]=function(_0x430dc3,_0x428c62,_0x4d481f){return db[_0x687e('0x3e')]['find']({'where':{'id':_0x430dc3[_0x687e('0x53')]['id']}})['then'](handleEntityNotFound(_0x428c62,null))[_0x687e('0x1e')](function(_0x29a7ed){if(_0x29a7ed){return _0x29a7ed['removeDispositions'](_0x430dc3[_0x687e('0x41')][_0x687e('0x6b')]);}})[_0x687e('0x1e')](respondWithStatusCode(_0x428c62,null))[_0x687e('0x28')](handleError(_0x428c62,null));};exports[_0x687e('0x6c')]=function(_0x3d8686,_0x41a17e,_0x57104c){if(_0x3d8686[_0x687e('0x5b')]['id']){delete _0x3d8686['body']['id'];}return db[_0x687e('0x3e')]['find']({'where':{'id':_0x3d8686[_0x687e('0x53')]['id']}})[_0x687e('0x1e')](handleEntityNotFound(_0x41a17e,null))['then'](function(_0x4ba8bf){if(_0x4ba8bf){_0x3d8686['body'][_0x687e('0x68')]=_0x4ba8bf['id'];return db[_0x687e('0x6d')][_0x687e('0x5a')](_0x3d8686[_0x687e('0x5b')]);}})[_0x687e('0x1e')](respondWithResult(_0x41a17e,null))[_0x687e('0x28')](handleError(_0x41a17e,null));};exports[_0x687e('0x6e')]=function(_0x5c6cfd,_0x109077,_0x370a9e){var _0x50f1f9={'raw':![],'where':{}};var _0x11ae96={};var _0x50c75a={'count':0x0,'rows':[]};return db[_0x687e('0x3e')][_0x687e('0x66')]({'where':{'id':_0x5c6cfd[_0x687e('0x53')]['id']}})[_0x687e('0x1e')](handleEntityNotFound(_0x109077,null))[_0x687e('0x1e')](function(_0x33c14d){if(_0x33c14d){_0x11ae96['model']=_[_0x687e('0x54')](db['CannedAnswer']['rawAttributes']);_0x11ae96[_0x687e('0x41')]=_[_0x687e('0x54')](_0x5c6cfd[_0x687e('0x41')]);_0x11ae96[_0x687e('0x4b')]=_['intersection'](_0x11ae96[_0x687e('0x40')],_0x11ae96['query']);_0x50f1f9[_0x687e('0x43')]=_[_0x687e('0x42')](_0x11ae96[_0x687e('0x40')],qs['fields'](_0x5c6cfd[_0x687e('0x41')][_0x687e('0x56')]));_0x50f1f9[_0x687e('0x43')]=_0x50f1f9[_0x687e('0x43')][_0x687e('0x44')]?_0x50f1f9[_0x687e('0x43')]:_0x11ae96[_0x687e('0x40')];if(!_0x5c6cfd['query']['hasOwnProperty'](_0x687e('0x46'))){_0x50f1f9['limit']=qs['limit'](_0x5c6cfd[_0x687e('0x41')][_0x687e('0x47')]);_0x50f1f9[_0x687e('0x2b')]=qs['offset'](_0x5c6cfd[_0x687e('0x41')][_0x687e('0x2b')]);}_0x50f1f9[_0x687e('0x67')]=qs[_0x687e('0x48')](_0x5c6cfd[_0x687e('0x41')][_0x687e('0x48')]);_0x50f1f9[_0x687e('0x49')]=qs['filters'](_[_0x687e('0x4a')](_0x5c6cfd[_0x687e('0x41')],_0x11ae96['filters']));_0x50f1f9[_0x687e('0x49')][_0x687e('0x68')]=_0x33c14d['id'];if(_0x5c6cfd[_0x687e('0x41')][_0x687e('0x4c')]){_0x50f1f9[_0x687e('0x49')]=_[_0x687e('0x4d')](_0x50f1f9[_0x687e('0x49')],{'$or':_[_0x687e('0x3d')](_0x50f1f9[_0x687e('0x43')],function(_0x135ae1){var _0x2948c6={};_0x2948c6[_0x135ae1]={'$like':'%'+_0x5c6cfd['query']['filter']+'%'};return _0x2948c6;})});}_0x50f1f9=_[_0x687e('0x4d')]({},_0x50f1f9,_0x5c6cfd[_0x687e('0x50')]);return db['CannedAnswer']['count']({'where':_0x50f1f9[_0x687e('0x49')]})[_0x687e('0x1e')](function(_0x347841){_0x50c75a['count']=_0x347841;if(_0x5c6cfd[_0x687e('0x41')]['includeAll']){_0x50f1f9[_0x687e('0x58')]=[{'all':!![]}];}return db[_0x687e('0x6d')][_0x687e('0x51')](_0x50f1f9);})[_0x687e('0x1e')](function(_0x23f4ae){_0x50c75a[_0x687e('0x69')]=_0x23f4ae;return _0x50c75a;});}})[_0x687e('0x1e')](respondWithFilteredResult(_0x109077,_0x50f1f9))['catch'](handleError(_0x109077,null));};exports['removeAnswers']=function(_0x1c93d6,_0x56f5ce,_0x2c8aa4){return db[_0x687e('0x3e')][_0x687e('0x59')]({'where':{'id':_0x1c93d6['params']['id']}})['then'](handleEntityNotFound(_0x56f5ce,null))['then'](function(_0x2b77a3){if(_0x2b77a3){return _0x2b77a3[_0x687e('0x6f')](_0x1c93d6[_0x687e('0x41')][_0x687e('0x6b')]);}})[_0x687e('0x1e')](respondWithStatusCode(_0x56f5ce,null))[_0x687e('0x28')](handleError(_0x56f5ce,null));};exports[_0x687e('0x70')]=function(_0x7c5e1d,_0x1e6003,_0x478875){_0x7c5e1d['body']['sitepic']=_0x7c5e1d[_0x687e('0x71')]['filename'];return db[_0x687e('0x3e')][_0x687e('0x59')]({'where':{'id':_0x7c5e1d[_0x687e('0x53')]['id']}})['then'](handleEntityNotFound(_0x1e6003,null))[_0x687e('0x1e')](saveUpdates(_0x7c5e1d['body'],null))[_0x687e('0x1e')](respondWithResult(_0x1e6003,null))[_0x687e('0x28')](handleError(_0x1e6003,null));};exports['addAvatar']=function(_0x9368c3,_0xe89814,_0x52c9e0){_0x9368c3[_0x687e('0x5b')][_0x687e('0x72')]=_0x9368c3[_0x687e('0x71')]['filename'];return db['ChatWebsite']['find']({'where':{'id':_0x9368c3[_0x687e('0x53')]['id']}})[_0x687e('0x1e')](handleEntityNotFound(_0xe89814,null))[_0x687e('0x1e')](saveUpdates(_0x9368c3[_0x687e('0x5b')],null))[_0x687e('0x1e')](respondWithResult(_0xe89814,null))[_0x687e('0x28')](handleError(_0xe89814,null));};exports[_0x687e('0x73')]=function(_0x30c722,_0x9336b2,_0x1d0c5c){_0x30c722[_0x687e('0x5b')][_0x687e('0x74')]=_0x30c722[_0x687e('0x71')]['filename'];return db['ChatWebsite'][_0x687e('0x59')]({'where':{'id':_0x30c722[_0x687e('0x53')]['id']}})[_0x687e('0x1e')](handleEntityNotFound(_0x9336b2,null))[_0x687e('0x1e')](saveUpdates(_0x30c722['body'],null))[_0x687e('0x1e')](respondWithResult(_0x9336b2,null))[_0x687e('0x28')](handleError(_0x9336b2,null));};exports[_0x687e('0x75')]=function(_0x48254b,_0x498f34,_0x1bc5e9){_0x48254b[_0x687e('0x5b')][_0x687e('0x76')]=_0x48254b['file'][_0x687e('0x77')];return db[_0x687e('0x3e')][_0x687e('0x59')]({'where':{'id':_0x48254b[_0x687e('0x53')]['id']}})[_0x687e('0x1e')](handleEntityNotFound(_0x498f34,null))[_0x687e('0x1e')](saveUpdates(_0x48254b[_0x687e('0x5b')],null))[_0x687e('0x1e')](respondWithResult(_0x498f34,null))[_0x687e('0x28')](handleError(_0x498f34,null));};exports[_0x687e('0x78')]=function(_0x45be2a,_0x1b1a41,_0x5b6f3d){var _0x37acb1=path[_0x687e('0x79')](config[_0x687e('0x7a')],_0x687e('0x7b'));var _0xa12e8d={'where':{'id':_0x45be2a[_0x687e('0x53')]['id']},'attributes':['id',_0x687e('0x7c')],'raw':!![]};var _0x210e17=![];return require('../../config/license/util')[_0x687e('0x7d')]()[_0x687e('0x1e')](function(_0x38dd68){if(_0x38dd68){_0x210e17=_0x38dd68[_0x687e('0x7e')];}})['then'](function(){return db['ChatWebsite'][_0x687e('0x59')](_0xa12e8d);})[_0x687e('0x1e')](handleEntityNotFound(_0x1b1a41,null))[_0x687e('0x1e')](function(_0x217e23){if(_0x217e23){if(!_[_0x687e('0x7f')](_0x217e23[_0x687e('0x7c')])){if(fs[_0x687e('0x80')](path[_0x687e('0x79')](config[_0x687e('0x7a')],_0x687e('0x81'),_0x217e23[_0x687e('0x7c')]))&&_0x210e17){_0x37acb1=path[_0x687e('0x79')](config[_0x687e('0x7a')],_0x687e('0x81'),_0x217e23['sitepic']);}}return _0x1b1a41[_0x687e('0x82')](_0x37acb1);}})['catch'](handleError(_0x1b1a41,null));};exports[_0x687e('0x83')]=function(_0x1d2baa,_0x1aef98,_0xf7fb7e){var _0x2fc205=path['join'](config[_0x687e('0x7a')],_0x687e('0x84'));var _0x487954={'where':{'id':_0x1d2baa['params']['id']},'attributes':['id',_0x687e('0x72')],'raw':!![]};return db[_0x687e('0x3e')][_0x687e('0x59')](_0x487954)[_0x687e('0x1e')](handleEntityNotFound(_0x1aef98,null))[_0x687e('0x1e')](function(_0x1d9a74){if(_0x1d9a74){if(!_[_0x687e('0x7f')](_0x1d9a74[_0x687e('0x72')])){if(fs[_0x687e('0x80')](path[_0x687e('0x79')](config[_0x687e('0x7a')],'server/files/images/avatars/',_0x1d9a74[_0x687e('0x72')]))){_0x2fc205=path[_0x687e('0x79')](config[_0x687e('0x7a')],_0x687e('0x85'),_0x1d9a74[_0x687e('0x72')]);}}return _0x1aef98[_0x687e('0x82')](_0x2fc205);}})[_0x687e('0x28')](handleError(_0x1aef98,null));};exports['getCustomerAvatar']=function(_0x2503e8,_0x558241,_0x2e268a){var _0x3fe3c0=path['join'](config[_0x687e('0x7a')],'server/files/images/avatars/customer_avatar.png');var _0x31fee1={'where':{'id':_0x2503e8[_0x687e('0x53')]['id']},'attributes':['id',_0x687e('0x74'),_0x687e('0x86')],'raw':!![]};return db[_0x687e('0x3e')]['find'](_0x31fee1)[_0x687e('0x1e')](handleEntityNotFound(_0x558241,null))[_0x687e('0x1e')](function(_0x27a288){if(_0x27a288){if(!_['isNil'](_0x27a288['customerAvatar'])){if(fs['existsSync'](path[_0x687e('0x79')](config['root'],'server/files/images/avatars/',_0x27a288[_0x687e('0x74')]))&&_0x27a288[_0x687e('0x86')]){_0x3fe3c0=path['join'](config['root'],'server/files/images/avatars/',_0x27a288[_0x687e('0x74')]);}}return _0x558241[_0x687e('0x82')](_0x3fe3c0);}})[_0x687e('0x28')](handleError(_0x558241,null));};exports[_0x687e('0x87')]=function(_0x4028f0,_0x576d24,_0x43a61d){var _0x4101ae=path['join'](config[_0x687e('0x7a')],_0x687e('0x88'));var _0x4e512b={'where':{'id':_0x4028f0[_0x687e('0x53')]['id']},'attributes':['id',_0x687e('0x76')],'raw':!![]};return db['ChatWebsite'][_0x687e('0x59')](_0x4e512b)[_0x687e('0x1e')](handleEntityNotFound(_0x576d24,null))['then'](function(_0x19b783){if(_0x19b783){if(!_[_0x687e('0x7f')](_0x19b783[_0x687e('0x76')])){if(fs[_0x687e('0x80')](path[_0x687e('0x79')](config[_0x687e('0x7a')],_0x687e('0x85'),_0x19b783[_0x687e('0x76')]))){_0x4101ae=path['join'](config[_0x687e('0x7a')],'server/files/images/avatars/',_0x19b783[_0x687e('0x76')]);}}return _0x576d24[_0x687e('0x82')](_0x4101ae);}})[_0x687e('0x28')](handleError(_0x576d24,null));};exports['notify']=function(_0x2515d0,_0x5666dc,_0x49d922){var _0x18b31c=require(_0x687e('0x89'));var _0x5e0775=new _0x18b31c();var _0x129862=_0x5e0775['setUA'](_0x2515d0['headers'][_0x687e('0x8a')])['getResult']();var _0x28048b={'body':_0x2515d0[_0x687e('0x5b')],'channel':_0x687e('0x8b')};var _0x2a5669=[];var _0x2799c2=[];var _0x59cf27={};var _0x6740b=![];return db[_0x687e('0x8c')][_0x687e('0x62')]()[_0x687e('0x1e')](function(_0x1f37e7){if(!_0x1f37e7){throw new db[(_0x687e('0x8d'))][(_0x687e('0x8e'))](_0x687e('0x8f'));}_0x2a5669=_[_0x687e('0x90')](_[_0x687e('0x54')](_0x1f37e7),['createdAt',_0x687e('0x91')]);_0x2799c2=_[_0x687e('0x90')](_['keys'](_0x1f37e7),[_0x687e('0x92'),'updatedAt',_0x687e('0x93'),'ListId']);if(_0x2515d0[_0x687e('0x5b')]['id']){delete _0x2515d0[_0x687e('0x5b')]['id'];}if(_[_0x687e('0x7f')](_0x2515d0[_0x687e('0x5b')][_0x687e('0x94')])){throw new db['Sequelize']['ValidationError'](_0x687e('0x95'));}if(_[_0x687e('0x7f')](_0x2515d0[_0x687e('0x5b')][_0x687e('0x5b')])||_0x2515d0[_0x687e('0x5b')][_0x687e('0x5b')]===''){throw new db[(_0x687e('0x8d'))][(_0x687e('0x8e'))](_0x687e('0x96'));}if(_['isNil'](_0x2515d0['body']['mapKey'])){throw new db[(_0x687e('0x8d'))][(_0x687e('0x8e'))](_0x687e('0x97')+_0x2799c2);}if(!_['includes'](_0x2799c2,_0x2515d0['body'][_0x687e('0x98')])){throw new db['Sequelize'][(_0x687e('0x8e'))](_0x687e('0x99')+_0x2799c2);}_0x59cf27[_0x2515d0['body'][_0x687e('0x98')]]=_0x2515d0[_0x687e('0x5b')][_0x687e('0x94')];})['then'](function(){return db[_0x687e('0x3e')]['find']({'where':{'id':_0x2515d0[_0x687e('0x53')]['id']},'include':[{'model':db['CmList'],'as':_0x687e('0x9a'),'include':[{'model':db[_0x687e('0x8c')],'as':'Contacts','where':_0x59cf27,'limit':0x1,'order':[[_0x687e('0x91'),_0x687e('0x9b')]]}]},{'model':db[_0x687e('0x9c')],'as':_0x687e('0x9d')}]});})[_0x687e('0x1e')](handleEntityNotFound(_0x5666dc,null))[_0x687e('0x1e')](function(_0x1cbab8){if(_0x1cbab8&&_0x1cbab8['List']){_0x28048b[_0x687e('0x9e')]=_0x1cbab8;_0x28048b[_0x687e('0x9f')]=_0x1cbab8[_0x687e('0x9d')];_0x28048b[_0x687e('0xa0')]=_0x1cbab8[_0x687e('0x9a')];_0x28048b[_0x687e('0x9f')]=_[_0x687e('0xa1')](_0x28048b[_0x687e('0x9f')],[_0x687e('0xa2')],[_0x687e('0xa3')]);if(_0x28048b[_0x687e('0x9e')][_0x687e('0x9d')]){delete _0x28048b[_0x687e('0x9e')]['Applications'];}if(_0x28048b[_0x687e('0x9e')][_0x687e('0x9a')]&&_0x28048b[_0x687e('0x9e')][_0x687e('0x9a')][_0x687e('0xa4')][_0x687e('0x44')]){return _0x28048b[_0x687e('0x9e')][_0x687e('0x9a')]['Contacts'][0x0];}var _0xd92248=_[_0x687e('0xa5')](_0x2515d0[_0x687e('0x5b')],{'firstName':_0x2515d0[_0x687e('0x5b')][_0x687e('0x94')],'ListId':_0x1cbab8['ListId']});_0xd92248[_0x2515d0[_0x687e('0x5b')]['mapKey']]=_0x2515d0[_0x687e('0x5b')]['from'];return db[_0x687e('0x8c')][_0x687e('0x5a')](_0xd92248,{'fields':_0x2a5669,'raw':!![]});}})[_0x687e('0x1e')](handleEntityNotFound(_0x5666dc,null))['then'](function(_0x49e95a){_0x28048b[_0x687e('0xa6')]=_0x49e95a;var _0x5345d8=_0x2515d0[_0x687e('0x5b')][_0x687e('0xa7')];if(_0x2515d0[_0x687e('0xa8')][_0x687e('0xa9')]){_0x5345d8=_0x2515d0['headers'][_0x687e('0xa9')];}else if(_0x2515d0[_0x687e('0xa8')]['x-forwarded-for']){_0x5345d8=_['first'](_0x2515d0[_0x687e('0xa8')][_0x687e('0xaa')][_0x687e('0xab')](','));}if(_0x49e95a){var _0x17edf0={'ContactId':_0x49e95a['id'],'ChatWebsiteId':_0x2515d0['params']['id'],'from':(_0x49e95a[_0x687e('0xac')]||'')+'\x20'+(_0x49e95a[_0x687e('0xad')]||''),'customerIp':_0x5345d8,'customerPort':_0x2515d0[_0x687e('0xa8')][_0x687e('0xae')]?_0x2515d0[_0x687e('0xa8')][_0x687e('0xae')]:null,'referer':_0x2515d0[_0x687e('0x5b')][_0x687e('0xaf')],'browserName':_0x129862[_0x687e('0xb0')][_0x687e('0x38')]&&_0x129862[_0x687e('0xb0')][_0x687e('0xb1')]?util[_0x687e('0xb2')]('%s\x20%s',_0x129862[_0x687e('0xb0')]['name'],_0x129862[_0x687e('0xb0')][_0x687e('0xb1')]):_0x687e('0xb3'),'browserVersion':_0x129862['browser'][_0x687e('0xb1')]||'unknown','osName':util[_0x687e('0xb2')]('%s\x20%s',_0x129862['os'][_0x687e('0x38')],_0x129862['os'][_0x687e('0xb1')]),'osVersion':_0x129862['os'][_0x687e('0xb1')],'deviceModel':_0x129862[_0x687e('0xb4')]['model']&&_0x129862[_0x687e('0xb4')][_0x687e('0xb5')]?util[_0x687e('0xb2')]('%s\x20%s\x20%s',_0x129862['device'][_0x687e('0x40')],_0x129862[_0x687e('0xb4')][_0x687e('0xb5')],_0x129862['device'][_0x687e('0x4e')]):null,'deviceVendor':_0x129862[_0x687e('0xb4')]['vendor'],'deviceType':_0x129862[_0x687e('0xb4')][_0x687e('0x4e')],'formData':JSON[_0x687e('0xb6')](_0x2515d0[_0x687e('0x5b')])};var _0x9862ac={'ChatWebsiteId':_0x2515d0[_0x687e('0x53')]['id'],'closed':![]};if(_0x2515d0[_0x687e('0x5b')]['threadId']){_0x9862ac[_0x687e('0xb7')]=_0x2515d0[_0x687e('0x5b')][_0x687e('0xb7')];return db[_0x687e('0xb8')]['find']({'where':_0x9862ac})[_0x687e('0x1e')](function(_0x37ecf4){if(_0x37ecf4){return[_0x37ecf4,![]];}_0x17edf0[_0x687e('0xb7')]=_0x2515d0[_0x687e('0x5b')][_0x687e('0xb7')];_0x17edf0[_0x687e('0xb9')]=_0x2515d0[_0x687e('0x5b')]['externalUrl'];return db['ChatInteraction']['create'](_0x17edf0)[_0x687e('0x1e')](function(_0x3b1cc1){return[_0x3b1cc1,!![]];});});}_0x9862ac[_0x687e('0xba')]=_0x49e95a['id'];if(_0x2515d0[_0x687e('0x5b')][_0x687e('0xbb')]&&_0x2515d0['body'][_0x687e('0xbb')]['id']){_0x9862ac['id']=_0x2515d0[_0x687e('0x5b')][_0x687e('0xbb')]['id'];return db['ChatInteraction'][_0x687e('0x59')]({'where':_0x9862ac})['then'](function(_0x408761){if(_0x408761){return[_0x408761,![]];}return db['ChatInteraction'][_0x687e('0x5a')](_0x17edf0)[_0x687e('0x1e')](function(_0x4ea5c9){return[_0x4ea5c9,!![]];});});}return db[_0x687e('0xb8')][_0x687e('0x5a')](_0x17edf0)[_0x687e('0x1e')](function(_0x2219aa){return[_0x2219aa,!![]];});}})[_0x687e('0xbc')](function(_0x5c4b74,_0x1ed4ac){if(_0x5c4b74){_0x6740b=_0x1ed4ac;if(!_0x1ed4ac){var _0x21683f={'from':(_0x28048b[_0x687e('0xa6')][_0x687e('0xac')]||'')+'\x20'+(_0x28048b[_0x687e('0xa6')][_0x687e('0xad')]||'')};if(_0x2515d0[_0x687e('0x5b')][_0x687e('0xb7')]&&_0x2515d0[_0x687e('0x5b')][_0x687e('0xbd')]&&_0x2515d0[_0x687e('0x5b')][_0x687e('0xb7')]!=_0x2515d0[_0x687e('0x5b')][_0x687e('0xbd')]){_0x21683f[_0x687e('0xb7')]=_0x2515d0['body'][_0x687e('0xbd')];}return _0x5c4b74[_0x687e('0x31')](_0x21683f);}else{return _0x5c4b74;}}})[_0x687e('0x1e')](function(_0x44c577){_0x28048b['interaction']=_0x44c577['get']({'plain':!![]});_0x28048b[_0x687e('0xbb')][_0x687e('0xbe')]=_0x6740b;if(_0x28048b[_0x687e('0xbb')]['created']){if(_0x28048b[_0x687e('0x9e')][_0x687e('0xbf')]){_0x28048b[_0x687e('0x9f')][_0x687e('0xc0')]({'id':0x0,'priority':_0x28048b['applications'][_0x687e('0x44')]+0x1,'app':_0x687e('0xc1'),'appdata':'unmanaged','interval':_0x687e('0xc2')});}}return db[_0x687e('0xc3')][_0x687e('0x5a')]({'body':_0x2515d0[_0x687e('0x5b')][_0x687e('0x5b')],'ChatWebsiteId':_0x2515d0['params']['id'],'ChatInteractionId':_0x44c577['id'],'direction':'in','ContactId':_0x28048b[_0x687e('0xa6')]['id'],'AttachmentId':_0x2515d0['body'][_0x687e('0xc4')]});})[_0x687e('0x1e')](function(_0x22d171){_0x28048b[_0x687e('0x26')]=_0x22d171;if(_0x28048b[_0x687e('0xbb')]['UserId']){return db['User'][_0x687e('0x59')]({'attributes':['id',_0x687e('0x38')],'where':{'id':_0x28048b[_0x687e('0xbb')][_0x687e('0xc5')]}})['then'](function(_0x2967de){if(_0x2967de){_0x28048b['applications'][_0x687e('0xc6')]({'id':0x0,'priority':0x0,'app':'agent','appdata':_0x2967de[_0x687e('0x38')]+','+(_0x28048b['account']['waitForTheAssignedAgent']||0xa),'interval':_0x687e('0xc2')});_0x28048b[_0x687e('0xc7')]=!![];}return respondWithRpcPromise('Start',_0x687e('0xc8'),_0x28048b);});}return respondWithRpcPromise(_0x687e('0xc9'),'startRouting',_0x28048b);})[_0x687e('0x1e')](function(_0x281876){respondWithRpcPromise(_0x687e('0xca'),_0x687e('0xca'),{'event':_0x687e('0xcb'),'message':_0x281876},client9002);return _0x281876;})['then'](respondWithResult(_0x5666dc,null))[_0x687e('0x28')](handleError(_0x5666dc,null));};exports['offline']=function(_0x21ba25,_0x16a4ac,_0x532658){var _0x55785f,_0x57a078,_0x5d87a0;var _0x30ffe5=[];var _0x4a8735=[];var _0x568026={};var _0x46c689=_0x21ba25[_0x687e('0xcc')]||[];var _0x364366=[];var _0xdb4ef5;return db[_0x687e('0x8c')][_0x687e('0x62')]()[_0x687e('0x1e')](function(_0x418b71){if(!_0x418b71){throw new db[(_0x687e('0x8d'))][(_0x687e('0x8e'))](_0x687e('0x8f'));}_0x4a8735=_['difference'](_[_0x687e('0x54')](_0x418b71),[_0x687e('0x92'),_0x687e('0x91')]);_0x30ffe5=_['difference'](_[_0x687e('0x54')](_0x418b71),[_0x687e('0x92'),'updatedAt',_0x687e('0x93'),_0x687e('0xcd')]);if(_0x21ba25[_0x687e('0x5b')]['id']){delete _0x21ba25['body']['id'];}if(_['isNil'](_0x21ba25['body'][_0x687e('0x94')])){throw _0x16a4ac['status'](0x1f4)[_0x687e('0x39')](new db['Sequelize'][(_0x687e('0x8e'))]('from\x20is\x20mandatory'));}if(_[_0x687e('0x7f')](_0x21ba25[_0x687e('0x5b')][_0x687e('0x5b')])||_0x21ba25['body'][_0x687e('0x5b')]===''){throw _0x16a4ac[_0x687e('0x29')](0x1f4)[_0x687e('0x39')](new db[(_0x687e('0x8d'))][(_0x687e('0x8e'))](_0x687e('0x96')));}if(_[_0x687e('0x7f')](_0x21ba25['body']['mapKeyOffline'])){throw _0x16a4ac['status'](0x1f4)[_0x687e('0x39')](new db['Sequelize']['ValidationError'](_0x687e('0xce')+_0x30ffe5));}if(!_[_0x687e('0xcf')](_0x30ffe5,_0x21ba25[_0x687e('0x5b')][_0x687e('0xd0')])){throw _0x16a4ac[_0x687e('0x29')](0x1f4)[_0x687e('0x39')](new db[(_0x687e('0x8d'))][(_0x687e('0x8e'))](_0x687e('0xd1')+_0x30ffe5));}_0x568026[_0x21ba25[_0x687e('0x5b')][_0x687e('0xd0')]]=_0x21ba25[_0x687e('0x5b')][_0x687e('0x94')];})[_0x687e('0x1e')](function(){return db[_0x687e('0x3e')][_0x687e('0x59')]({'where':{'id':_0x21ba25[_0x687e('0x53')]['id']},'include':[{'model':db[_0x687e('0xd2')],'as':'List'},{'model':db[_0x687e('0xd3')],'as':_0x687e('0xd3')}]});})[_0x687e('0x1e')](handleEntityNotFound(_0x16a4ac,null))[_0x687e('0x1e')](function(_0x541ed1){if(_0x541ed1&&_0x541ed1['List']){_0x57a078=_0x541ed1;var _0x3b616c=_[_0x687e('0xa5')](_0x21ba25['body'],{'firstName':_0x21ba25['body']['from'],'phone':_0x21ba25[_0x687e('0x5b')][_0x687e('0x94')],'ListId':_0x541ed1[_0x687e('0xcd')]});_0x3b616c[_0x21ba25[_0x687e('0x5b')][_0x687e('0xd0')]]=_0x21ba25[_0x687e('0x5b')][_0x687e('0x94')];return db[_0x687e('0x8c')][_0x687e('0xd4')]({'where':_0x568026,'defaults':_0x3b616c});}})['spread'](function(_0x5313f6){if(_0x5313f6){_0x5d87a0=_0x5313f6;var _0xb27319=fs[_0x687e('0xd5')](path[_0x687e('0x79')](config[_0x687e('0x7a')],_0x687e('0xd6')),_0x687e('0xd7'));var _0x3797f4=ejs[_0x687e('0xd8')](_0xb27319,{'body':_[_0x687e('0xd9')](_0x21ba25['body'][_0x687e('0x5b')]),'bodyTitle':_0x57a078[_0x687e('0xda')]});return db[_0x687e('0xdb')][_0x687e('0x5a')]({'body':_0x3797f4,'ContactId':_0x5313f6['id'],'ChatWebsiteId':_0x57a078['id']});}})[_0x687e('0x1e')](function(_0x131541){_0xdb4ef5=_0x131541;if(_0x46c689[_0x687e('0x44')]){var _0x4b6c81=_0x46c689['map'](function(_0xf112){return{'name':_0xf112['originalname'],'basename':_0xf112[_0x687e('0x77')],'type':_0xf112[_0x687e('0xdc')],'ChatOfflineMessageId':_0x131541['id']};});_0x364366=_0x4b6c81['map'](_0x1db164=>{var _0x29e992={'filename':_0x1db164[_0x687e('0x38')],'path':path[_0x687e('0x79')](config[_0x687e('0x7a')],_0x687e('0xdd'),_0x687e('0xcc'),_0x687e('0xde'),'offline-chat',_0x1db164[_0x687e('0xdf')])};return _0x29e992;});if(!_0x57a078[_0x687e('0xe0')]){return db['sequelize']['transaction'](function(_0x402fbb){return db['Attachment'][_0x687e('0xe1')](_0x4b6c81,{'transaction':_0x402fbb});});}}})[_0x687e('0x1e')](function(){if(_0xdb4ef5){_0x55785f=_0xdb4ef5;return db['MailAccount']['findOne']({'where':{'active':!![]},'include':[{'model':db[_0x687e('0xe2')],'as':_0x687e('0xe3'),'raw':!![]}]});}})[_0x687e('0x1e')](function(_0x424ba5){if(_0x424ba5&&_0x424ba5['Smtp']&&_0x57a078[_0x687e('0xe4')]&&_0x57a078[_0x687e('0xe5')]){var _0x2ff48d={'tls':{'rejectUnauthorized':![]}};if(_0x424ba5[_0x687e('0xe3')][_0x687e('0xe6')]){_0x2ff48d[_0x687e('0xe6')]=_0x424ba5[_0x687e('0xe3')]['service'];}else{_0x2ff48d[_0x687e('0xe7')]=_0x424ba5['Smtp'][_0x687e('0xe7')];_0x2ff48d[_0x687e('0xe8')]=_0x424ba5['Smtp']['port'];_0x2ff48d[_0x687e('0xe9')]=_0x424ba5[_0x687e('0xe3')]['secure'];}if(_0x424ba5['Smtp'][_0x687e('0xea')]){_0x2ff48d['auth']={'user':_0x424ba5[_0x687e('0xe3')][_0x687e('0x5c')],'pass':_0x424ba5['Smtp'][_0x687e('0xeb')]};}return respondWithRpcPromise(_0x687e('0xec'),'sendMail',{'account':_0x2ff48d,'message':{'from':util[_0x687e('0xb2')]('\x22%s\x22\x20<%s>',_0x424ba5[_0x687e('0x38')],_0x424ba5[_0x687e('0xed')]||_0x424ba5[_0x687e('0xe3')][_0x687e('0x5c')]),'to':_0x57a078[_0x687e('0xe5')],'subject':_0x57a078['offlineMessageSubject'],'html':_0x55785f[_0x687e('0x5b')],'attachments':_0x364366}},client9003)['then'](function(){return _0x55785f;})[_0x687e('0x28')](function(_0x5e031d){console[_0x687e('0x24')](_0x5e031d);});}})['then'](function(){if(_0x57a078&&_0x57a078[_0x687e('0xe0')]&&_0x57a078['MailAccountId']){var _0x42b748=[];if(_0x46c689[_0x687e('0x44')]){_0x42b748=_0x46c689['map'](function(_0x599714){return{'name':_0x599714[_0x687e('0xee')],'basename':_0x599714[_0x687e('0x77')],'type':_0x599714[_0x687e('0xdc')],'ChatOfflineMessageId':_0xdb4ef5['id']};});}var _0x4a127a;if(!_[_0x687e('0x7f')](_0x57a078['subjectOffline'])){var _0x5975bb=_[_0x687e('0x3d')](_0x21ba25[_0x687e('0x5b')],function(_0x353389){return _0x353389;});var _0x26a967=_['toPairsIn'](_0x5975bb)[0x0];var _0x243755=_[_0x687e('0xef')](_0x26a967,function(_0x39e342){return _0x39e342;});_0x4a127a=_0x243755[0x1][_0x57a078['subjectOffline']];}var _0x3a49f1={'from':_0x5d87a0[_0x687e('0xed')],'firstName':_0x5d87a0[_0x687e('0xac')],'lastName':_0x5d87a0[_0x687e('0xad')],'mapKey':_0x687e('0xed'),'message':{'from':_0x5d87a0[_0x687e('0xed')],'to':_0x57a078['MailAccount']['email'],'cc':'','subject':_['isNil'](_0x4a127a)?_0x57a078[_0x687e('0xf0')]:_0x4a127a,'messageId':'','sentAt':new Date(),'attach':_0x42b748[_0x687e('0x44')],'attachments':_0x42b748,'originChannel':'Chat','ChatWebsiteId':_0x57a078['id'],'ChatOfflineMessageId':_0x55785f['id'],'originTo':_0x57a078[_0x687e('0xd3')]['email']},'body':_0x55785f['body']};var _0x17e806={'account':{'id':_0x57a078[_0x687e('0xf1')]},'body':_0x3a49f1,'log':_0x687e('0xf2')};return respondWithRpcPromise(_0x687e('0xf2'),_0x687e('0xf3'),_0x17e806,client9001)[_0x687e('0x1e')](function(){return _0x55785f;})[_0x687e('0x28')](function(_0x534899){console[_0x687e('0x24')](_0x534899);});}return;})['then'](function(){if(_0x55785f){return _0x55785f;}})[_0x687e('0x1e')](respondWithResult(_0x16a4ac,null))[_0x687e('0x28')](function(_0x398da5){console['error'](_0x687e('0x28'),_0x398da5);for(var _0x4dda57 of _0x46c689){var _0x2ebade=path[_0x687e('0x79')](config[_0x687e('0x7a')],_0x687e('0xdd'),_0x687e('0xcc'),_0x687e('0xde'),'offline-chat',_0x4dda57[_0x687e('0x77')]);fs_extra[_0x687e('0xf4')](_0x2ebade)[_0x687e('0x28')](function(_0xf10383){console['error']('Could\x20not\x20remove\x20attachment\x20file',_0x2ebade,_0xf10383);});}});};exports[_0x687e('0xf5')]=function(_0x1e22a9,_0x34dd93,_0x5f1420){return db[_0x687e('0xb8')][_0x687e('0x59')]({'where':{'id':_0x1e22a9['params']['id']}})['then'](handleEntityNotFound(_0x34dd93,null))[_0x687e('0x1e')](function(_0x233751){if(_0x233751){return _0x233751['addInteraction'](_0x1e22a9[_0x687e('0x5b')][_0x687e('0x6b')],_[_0x687e('0xf6')](_0x1e22a9[_0x687e('0x5b')],[_0x687e('0x6b'),'id'])||{});}})['then'](respondWithResult(_0x34dd93,null))[_0x687e('0x28')](handleError(_0x34dd93,null));};exports[_0x687e('0xf7')]=function(_0x56fffd,_0x1c9e32,_0x2e7411){var _0x4bffd9={'raw':![],'where':{}};var _0x284d8a={};var _0x1dcbef={'count':0x0,'rows':[]};return db[_0x687e('0x3e')][_0x687e('0x66')]({'where':{'id':_0x56fffd[_0x687e('0x53')]['id']}})[_0x687e('0x1e')](handleEntityNotFound(_0x1c9e32,null))['then'](function(_0x3e96a9){if(_0x3e96a9){_0x284d8a['model']=_[_0x687e('0x54')](db['ChatInteraction']['rawAttributes']);_0x284d8a[_0x687e('0x41')]=_[_0x687e('0x54')](_0x56fffd[_0x687e('0x41')]);_0x284d8a[_0x687e('0x4b')]=_[_0x687e('0x42')](_0x284d8a['model'],_0x284d8a[_0x687e('0x41')]);_0x4bffd9['attributes']=_[_0x687e('0x42')](_0x284d8a['model'],qs[_0x687e('0x56')](_0x56fffd[_0x687e('0x41')][_0x687e('0x56')]));_0x4bffd9['attributes']=_0x4bffd9[_0x687e('0x43')][_0x687e('0x44')]?_0x4bffd9['attributes']:_0x284d8a[_0x687e('0x40')];if(!_0x56fffd[_0x687e('0x41')][_0x687e('0x45')]('nolimit')){_0x4bffd9['limit']=qs['limit'](_0x56fffd['query'][_0x687e('0x47')]);_0x4bffd9[_0x687e('0x2b')]=qs[_0x687e('0x2b')](_0x56fffd[_0x687e('0x41')]['offset']);}_0x4bffd9[_0x687e('0x67')]=qs[_0x687e('0x48')](_0x56fffd['query']['sort']);_0x4bffd9[_0x687e('0x49')]=qs['filters'](_[_0x687e('0x4a')](_0x56fffd[_0x687e('0x41')],_0x284d8a[_0x687e('0x4b')]));_0x4bffd9[_0x687e('0x49')]['ChatWebsiteId']=_0x3e96a9['id'];if(_0x56fffd[_0x687e('0x41')][_0x687e('0x4c')]){_0x4bffd9[_0x687e('0x49')]=_[_0x687e('0x4d')](_0x4bffd9['where'],{'$or':_[_0x687e('0x3d')](_0x4bffd9[_0x687e('0x43')],function(_0xc746a9){var _0x22509f={};_0x22509f[_0xc746a9]={'$like':'%'+_0x56fffd['query'][_0x687e('0x4c')]+'%'};return _0x22509f;})});}_0x4bffd9=_[_0x687e('0x4d')]({},_0x4bffd9,_0x56fffd['options']);return db[_0x687e('0xb8')][_0x687e('0x2d')]({'where':_0x4bffd9[_0x687e('0x49')]})[_0x687e('0x1e')](function(_0x279e02){_0x1dcbef[_0x687e('0x2d')]=_0x279e02;if(_0x56fffd['query'][_0x687e('0x57')]){_0x4bffd9[_0x687e('0x58')]=[{'model':db[_0x687e('0x8c')],'as':'Contact','required':![]},{'model':db['User'],'as':_0x687e('0xf8'),'attributes':[_0x687e('0x38'),_0x687e('0xf9'),'internal'],'required':![]},{'model':db['Tag'],'as':_0x687e('0xfa'),'attributes':['id','name',_0x687e('0xfb')],'where':_0x56fffd['query']['tag']?{'id':_0x56fffd[_0x687e('0x41')][_0x687e('0xfc')]}:undefined,'required':_0x56fffd['query'][_0x687e('0xfc')]?!![]:![]}];}return db[_0x687e('0xb8')][_0x687e('0x51')](_0x4bffd9);})[_0x687e('0x1e')](function(_0x64ab4b){_0x1dcbef['rows']=_0x64ab4b;return _0x1dcbef;});}})[_0x687e('0x1e')](respondWithFilteredResult(_0x1c9e32,_0x4bffd9))[_0x687e('0x28')](handleError(_0x1c9e32,null));};function iftimePromise(_0x5eabc8,_0x1ffb0e){return respondWithRpcPromise(_0x687e('0xfd'),'getSnippet',{'command':_0x1ffb0e[_0x687e('0xfe')]?util['format'](_0x687e('0xff'),_0x5eabc8[_0x687e('0x100')],_0x1ffb0e[_0x687e('0xfe')]):util[_0x687e('0xb2')](_0x687e('0x101'),_0x5eabc8[_0x687e('0x100')])},client9002)['then'](function(_0x59fa1f){var _0x1533d7=_0x59fa1f&&_0x59fa1f[_0x687e('0x102')](_0x687e('0x103'))>=0x0?!![]:![];logger[_0x687e('0x1f')](_0x687e('0x104'),_0x1ffb0e['id'],_0x5eabc8['id'],_0x5eabc8[_0x687e('0x100')],_0x1533d7?_0x687e('0x105'):_0x687e('0x106'),_0x1ffb0e[_0x687e('0xfe')]?_0x1ffb0e['timezone']:'No\x20timezone');return _0x1533d7;})['catch'](function(_0x148aa3){logger[_0x687e('0x24')]('[%s][INTERVAL][%s]\x20%s\x20%s\x20(%s)',_0x1ffb0e['id'],_0x5eabc8['id'],_0x5eabc8[_0x687e('0x100')],util['inspect'](_0x148aa3,{'showHidden':![],'depth':null}),_0x1ffb0e[_0x687e('0xfe')]?_0x1ffb0e['timezone']:_0x687e('0x107'));return![];});}exports[_0x687e('0x108')]=function(_0x17ebfc,_0x4e1d04,_0x32ae41){var _0x42f088=0x0;var _0x189e7a=0x0;var _0x189b06=![];var _0x14e807;var _0x1802d9;return db[_0x687e('0x3e')][_0x687e('0x59')]({'where':{'id':_0x17ebfc[_0x687e('0x53')]['id']},'include':[{'model':db[_0x687e('0x109')],'as':_0x687e('0x109'),'include':[{'model':db[_0x687e('0x109')],'as':'Intervals','attributes':['id','interval'],'raw':!![]}]}]})[_0x687e('0x1e')](handleEntityNotFound(_0x4e1d04,null))[_0x687e('0x1e')](function(_0x312f98){if(_0x312f98){_0x14e807=_0x312f98;return _0x312f98['getProactiveActions']({'raw':!![]});}})[_0x687e('0x1e')](function(_0x3ede66){if(_0x14e807){if(_0x3ede66){_0x1802d9=_0x3ede66;}}return require(_0x687e('0x16'))[_0x687e('0x7d')]();})['then'](function(_0x1dbd0a){if(_0x1dbd0a){_0x189e7a=_0x1dbd0a['virtual'];_0x189b06=_0x1dbd0a['custom'];}})[_0x687e('0x1e')](function(){return db[_0x687e('0xb8')][_0x687e('0x2d')]({'where':{'closed':![]}});})[_0x687e('0x1e')](function(_0x3c13c9){_0x42f088=_0x3c13c9;if(_0x189e7a&&_0x3c13c9>_0x189e7a){return db[_0x687e('0x10a')][_0x687e('0x66')]({'where':{'id':0x1}})[_0x687e('0x1e')](function(_0xebb435){if(_0xebb435){_0xebb435[_0x687e('0x10b')]('chatLicenseExceeded');}});}})[_0x687e('0x1e')](function(){if(_0x14e807[_0x687e('0x109')]&&_0x14e807['Interval']['Intervals']){var _0x44fc19=[];for(var _0x1b808e=0x0;_0x1b808e<_0x14e807[_0x687e('0x109')]['Intervals']['length'];_0x1b808e++){var _0x57f212=_0x14e807[_0x687e('0x109')][_0x687e('0x10c')][_0x1b808e][_0x687e('0x5d')]({'plain':!![]});_0x44fc19['push'](iftimePromise(_0x57f212,_0x14e807));}return BPromise[_0x687e('0x10d')](_0x44fc19)[_0x687e('0x1e')](function(_0x1c3e46){return _[_0x687e('0x10e')](_0x1c3e46);});}else{return!![];}})[_0x687e('0x1e')](function(_0x4184f1){var _0x48ce90=fs[_0x687e('0xd5')](path['join'](config[_0x687e('0x7a')],_0x687e('0x10f')),'utf8');var _0x24ccf2={'remote':_0x14e807[_0x687e('0x110')],'query':querystring['stringify'](_[_0x687e('0x4d')](_0x14e807[_0x687e('0x5d')]({'plain':!![]}),{'customerIp':_0x17ebfc[_0x687e('0xa8')]['x-forwarded-for']||_0x17ebfc[_0x687e('0xa8')]['x-real-ip']||_0x17ebfc[_0x687e('0x111')]['remoteAddress']||_0x17ebfc['ip'],'referer':_0x17ebfc[_0x687e('0xa8')][_0x687e('0xaf')],'openedInteractions':_0x42f088,'maxInteractions':_0x189e7a,'virtual':_0x189b06[_0x687e('0x112')],'online':_0x4184f1,'custom':_0x189b06}))[_0x687e('0x113')](/'/g,'\x5c\x27')};_0x4e1d04[_0x687e('0x39')](ejs[_0x687e('0xd8')](Mustache[_0x687e('0xd8')](_0x48ce90,_0x24ccf2),{'proactiveActions':_0x1802d9,'alignment':_0x14e807[_0x687e('0x114')],'verticalAlignment':_0x14e807['verticalAlignment'],'div_color':_0x14e807[_0x687e('0xfb')],'text_color':_0x14e807[_0x687e('0x115')],'button_color':_0x14e807[_0x687e('0x116')],'background_color':_0x14e807['backgroundColor']}));})['catch'](handleError(_0x4e1d04,null));};exports[_0x687e('0x117')]=function(_0x16b061,_0x688583,_0x27c272){return db[_0x687e('0x3e')][_0x687e('0x66')]({'where':{'id':_0x16b061[_0x687e('0x53')]['id']}})[_0x687e('0x1e')](handleEntityNotFound(_0x688583,null))['then'](function(_0x3833ca){if(_0x3833ca){return db[_0x687e('0x118')][_0x687e('0x119')](function(_0x571a28){return db[_0x687e('0x9c')][_0x687e('0x34')]({'where':{'ChatWebsiteId':_0x16b061[_0x687e('0x53')]['id']},'transaction':_0x571a28})[_0x687e('0x1e')](function(_0x2253fa){var _0x445a0a=_['map'](_0x16b061[_0x687e('0x5b')],function(_0x5714a2){_0x5714a2[_0x687e('0x68')]=_0x16b061[_0x687e('0x53')]['id'];return _0x5714a2;});return db[_0x687e('0x9c')][_0x687e('0xe1')](_0x445a0a,{'transaction':_0x571a28});});})[_0x687e('0x1e')](function(){return db[_0x687e('0x9c')]['findAndCountAll']({'where':{'ChatWebsiteId':_0x16b061[_0x687e('0x53')]['id']},'order':_0x687e('0xa2')});});}})[_0x687e('0x1e')](respondWithResult(_0x688583,null))[_0x687e('0x28')](handleError(_0x688583,null));};exports[_0x687e('0x11a')]=function(_0x54ce61,_0x5230a8,_0x30b56b){var _0xdda228={};var _0x33cc62={};var _0x2fe88d;var _0xa05cb8;return db[_0x687e('0x3e')][_0x687e('0x66')]({'where':{'id':_0x54ce61[_0x687e('0x53')]['id']}})[_0x687e('0x1e')](handleEntityNotFound(_0x5230a8,null))[_0x687e('0x1e')](function(_0x397e1e){if(_0x397e1e){_0x2fe88d=_0x397e1e;_0x33cc62[_0x687e('0x40')]=_[_0x687e('0x54')](db[_0x687e('0x9c')]['rawAttributes']);_0x33cc62[_0x687e('0x41')]=_['keys'](_0x54ce61['query']);_0x33cc62[_0x687e('0x4b')]=_['intersection'](_0x33cc62[_0x687e('0x40')],_0x33cc62['query']);_0xdda228[_0x687e('0x43')]=_[_0x687e('0x42')](_0x33cc62[_0x687e('0x40')],qs['fields'](_0x54ce61['query'][_0x687e('0x56')]));_0xdda228[_0x687e('0x43')]=_0xdda228[_0x687e('0x43')][_0x687e('0x44')]?_0xdda228[_0x687e('0x43')]:_0x33cc62[_0x687e('0x40')];_0xdda228[_0x687e('0x67')]=qs[_0x687e('0x48')](_0x54ce61[_0x687e('0x41')]['sort']);_0xdda228[_0x687e('0x49')]=qs['filters'](_[_0x687e('0x4a')](_0x54ce61['query'],_0x33cc62[_0x687e('0x4b')]));if(_0x54ce61[_0x687e('0x41')][_0x687e('0x4c')]){_0xdda228['where']=_['merge'](_0xdda228[_0x687e('0x49')],{'$or':_['map'](_0xdda228[_0x687e('0x43')],function(_0x301d45){var _0x1c40bc={};_0x1c40bc[_0x301d45]={'$like':'%'+_0x54ce61[_0x687e('0x41')][_0x687e('0x4c')]+'%'};return _0x1c40bc;})});}_0xdda228=_['merge']({},_0xdda228,_0x54ce61[_0x687e('0x50')]);return _0x2fe88d[_0x687e('0x11a')](_0xdda228);}})[_0x687e('0x1e')](function(_0x595633){if(_0x595633){_0xa05cb8=_0x595633['length'];if(!_0x54ce61['query']['hasOwnProperty'](_0x687e('0x46'))){_0xdda228[_0x687e('0x47')]=qs[_0x687e('0x47')](_0x54ce61['query'][_0x687e('0x47')]);_0xdda228[_0x687e('0x2b')]=qs[_0x687e('0x2b')](_0x54ce61[_0x687e('0x41')][_0x687e('0x2b')]);}return _0x2fe88d[_0x687e('0x11a')](_0xdda228);}})[_0x687e('0x1e')](function(_0x34e683){if(_0x34e683){return _0x34e683?{'count':_0xa05cb8,'rows':_0x34e683}:null;}})[_0x687e('0x1e')](respondWithResult(_0x5230a8,null))[_0x687e('0x28')](handleError(_0x5230a8,null));};exports[_0x687e('0x11b')]=function(_0x555309,_0x651c0,_0x58b708){return db[_0x687e('0x11c')]['find']({'where':{'id':_0x555309['params']['id']}})[_0x687e('0x1e')](handleEntityNotFound(_0x651c0,null))[_0x687e('0x1e')](function(_0x2cd94e){if(_0x2cd94e){return _0x2cd94e[_0x687e('0x11b')](_0x555309[_0x687e('0x5b')][_0x687e('0x6b')],_['omit'](_0x555309[_0x687e('0x5b')],[_0x687e('0x6b'),'id'])||{});}})[_0x687e('0x1e')](respondWithResult(_0x651c0,null))[_0x687e('0x28')](handleError(_0x651c0,null));};exports[_0x687e('0x11d')]=function(_0x4e3ffb,_0x8e9bb8,_0x125daa){var _0x1efc09={};var _0x533b51={};var _0x5e2920;var _0x550b0a;return db[_0x687e('0x3e')][_0x687e('0x66')]({'where':{'id':_0x4e3ffb[_0x687e('0x53')]['id']}})[_0x687e('0x1e')](handleEntityNotFound(_0x8e9bb8,null))[_0x687e('0x1e')](function(_0x50c5b4){if(_0x50c5b4){_0x5e2920=_0x50c5b4;_0x533b51['model']=_[_0x687e('0x54')](db[_0x687e('0x11e')][_0x687e('0x55')]);_0x533b51[_0x687e('0x41')]=_['keys'](_0x4e3ffb[_0x687e('0x41')]);_0x533b51[_0x687e('0x4b')]=_[_0x687e('0x42')](_0x533b51[_0x687e('0x40')],_0x533b51[_0x687e('0x41')]);_0x1efc09[_0x687e('0x43')]=_[_0x687e('0x42')](_0x533b51['model'],qs[_0x687e('0x56')](_0x4e3ffb['query'][_0x687e('0x56')]));_0x1efc09[_0x687e('0x43')]=_0x1efc09[_0x687e('0x43')]['length']?_0x1efc09[_0x687e('0x43')]:_0x533b51[_0x687e('0x40')];_0x1efc09[_0x687e('0x67')]=qs['sort'](_0x4e3ffb[_0x687e('0x41')][_0x687e('0x48')]);_0x1efc09[_0x687e('0x49')]=qs['filters'](_[_0x687e('0x4a')](_0x4e3ffb[_0x687e('0x41')],_0x533b51[_0x687e('0x4b')]));if(_0x4e3ffb[_0x687e('0x41')][_0x687e('0x4c')]){_0x1efc09[_0x687e('0x49')]=_['merge'](_0x1efc09[_0x687e('0x49')],{'$or':_[_0x687e('0x3d')](_0x1efc09[_0x687e('0x43')],function(_0xb3ee68){var _0x2d87c2={};_0x2d87c2[_0xb3ee68]={'$like':'%'+_0x4e3ffb[_0x687e('0x41')]['filter']+'%'};return _0x2d87c2;})});}_0x1efc09=_[_0x687e('0x4d')]({},_0x1efc09,_0x4e3ffb['options']);return _0x5e2920[_0x687e('0x11d')](_0x1efc09);}})[_0x687e('0x1e')](function(_0x3122aa){if(_0x3122aa){_0x550b0a=_0x3122aa[_0x687e('0x44')];if(!_0x4e3ffb['query'][_0x687e('0x45')](_0x687e('0x46'))){_0x1efc09[_0x687e('0x47')]=qs['limit'](_0x4e3ffb[_0x687e('0x41')][_0x687e('0x47')]);_0x1efc09[_0x687e('0x2b')]=qs[_0x687e('0x2b')](_0x4e3ffb[_0x687e('0x41')]['offset']);}return _0x5e2920['getProactiveActions'](_0x1efc09);}})[_0x687e('0x1e')](function(_0xc8f159){if(_0xc8f159){return _0xc8f159?{'count':_0x550b0a,'rows':_0xc8f159}:null;}})[_0x687e('0x1e')](respondWithResult(_0x8e9bb8,null))[_0x687e('0x28')](handleError(_0x8e9bb8,null));};exports[_0x687e('0x11f')]=function(_0x42a9b5,_0x48a46e,_0x5bf8a2){var _0x4adf07=_0x42a9b5[_0x687e('0x41')][_0x687e('0x120')]===_0x687e('0x121')?_0x687e('0x122'):_0x687e('0x123');return db[_0x687e('0x3e')][_0x687e('0x59')]({'attributes':['id',_0x4adf07],'where':{'id':_0x42a9b5[_0x687e('0x53')]['id']}})[_0x687e('0x1e')](handleEntityNotFound(_0x48a46e,null))[_0x687e('0x1e')](function(_0x54a019){if(_0x54a019){var _0x554c42=_0x54a019[_0x4adf07];var _0x1b8af6=_0x554c42&&_0x554c42['items']?_0x554c42[_0x687e('0x124')]:[];_0x48a46e[_0x687e('0x39')]({'fromKey':_[_0x687e('0x7f')](_0x554c42[_0x687e('0x125')])?undefined:_0x554c42[_0x687e('0x125')],'count':_0x1b8af6[_0x687e('0x44')],'rows':_0x1b8af6});}})[_0x687e('0x28')](handleError(_0x48a46e,null));};exports[_0x687e('0x126')]=function(_0x12dea9,_0x188081,_0x2e300b){var _0x4c1dae={'raw':![],'where':{}};var _0x2a62aa={};var _0x3e3a12={'count':0x0,'rows':[]};return db[_0x687e('0x3e')][_0x687e('0x66')]({'where':{'id':_0x12dea9[_0x687e('0x53')]['id']}})[_0x687e('0x1e')](handleEntityNotFound(_0x188081,null))['then'](function(_0x47296b){if(_0x47296b){_0x2a62aa[_0x687e('0x40')]=_['keys'](db[_0x687e('0xdb')]['rawAttributes']);_0x2a62aa[_0x687e('0x41')]=_[_0x687e('0x54')](_0x12dea9[_0x687e('0x41')]);_0x2a62aa[_0x687e('0x4b')]=_[_0x687e('0x42')](_0x2a62aa[_0x687e('0x40')],_0x2a62aa['query']);_0x4c1dae[_0x687e('0x43')]=_[_0x687e('0x42')](_0x2a62aa[_0x687e('0x40')],qs['fields'](_0x12dea9[_0x687e('0x41')][_0x687e('0x56')]));_0x4c1dae['attributes']=_0x4c1dae[_0x687e('0x43')][_0x687e('0x44')]?_0x4c1dae[_0x687e('0x43')]:_0x2a62aa[_0x687e('0x40')];if(!_0x12dea9[_0x687e('0x41')][_0x687e('0x45')](_0x687e('0x46'))){_0x4c1dae[_0x687e('0x47')]=qs[_0x687e('0x47')](_0x12dea9[_0x687e('0x41')]['limit']);_0x4c1dae['offset']=qs[_0x687e('0x2b')](_0x12dea9[_0x687e('0x41')]['offset']);}_0x4c1dae['order']=qs[_0x687e('0x48')](_0x12dea9[_0x687e('0x41')][_0x687e('0x48')]);_0x4c1dae[_0x687e('0x49')]=qs[_0x687e('0x4b')](_['pick'](_0x12dea9[_0x687e('0x41')],_0x2a62aa[_0x687e('0x4b')]));_0x4c1dae['where']['ChatWebsiteId']=_0x47296b['id'];if(_0x12dea9['query'][_0x687e('0x4c')]){_0x4c1dae['where']=_[_0x687e('0x4d')](_0x4c1dae[_0x687e('0x49')],{'$or':_[_0x687e('0x3d')](_0x4c1dae[_0x687e('0x43')],function(_0x511c2e){var _0x5cdba2={};_0x5cdba2[_0x511c2e]={'$like':'%'+_0x12dea9[_0x687e('0x41')][_0x687e('0x4c')]+'%'};return _0x5cdba2;})});}_0x4c1dae=_['merge']({},_0x4c1dae,_0x12dea9[_0x687e('0x50')]);return db[_0x687e('0xdb')][_0x687e('0x2d')]({'where':_0x4c1dae[_0x687e('0x49')]})['then'](function(_0xc38bc1){_0x3e3a12[_0x687e('0x2d')]=_0xc38bc1;if(_0x12dea9['query']['includeAll']){_0x4c1dae[_0x687e('0x58')]=[{'all':!![]}];}else{_0x4c1dae['include']=[{'model':db[_0x687e('0x8c')],'as':_0x687e('0x127'),'required':![]},{'model':db[_0x687e('0x128')],'as':_0x687e('0x129'),'required':![]}];}return db[_0x687e('0xdb')][_0x687e('0x51')](_0x4c1dae);})['then'](function(_0xadbef8){_0x3e3a12[_0x687e('0x69')]=_0xadbef8;return _0x3e3a12;});}})[_0x687e('0x1e')](respondWithFilteredResult(_0x188081,_0x4c1dae))[_0x687e('0x28')](handleError(_0x188081,null));};exports['addAgents']=function(_0xf903d0,_0xf3e25f,_0x58e1a6){return db[_0x687e('0x3e')][_0x687e('0x59')]({'where':{'id':_0xf903d0[_0x687e('0x53')]['id']}})[_0x687e('0x1e')](handleEntityNotFound(_0xf3e25f,null))['then'](function(_0x2b72c7){if(_0x2b72c7){return _0x2b72c7[_0x687e('0x12a')](_0xf903d0['body'][_0x687e('0x6b')],_[_0x687e('0xf6')](_0xf903d0[_0x687e('0x5b')],['ids','id'])||{})[_0x687e('0xbc')](function(_0x314ff6){for(var _0x552ded=0x0;_0x552ded<_0xf903d0[_0x687e('0x5b')][_0x687e('0x6b')]['length'];_0x552ded+=0x1){socket['emit'](_0x687e('0x12b'),{'UserId':Number(_0xf903d0[_0x687e('0x5b')][_0x687e('0x6b')][_0x552ded]),'ChatWebsiteId':Number(_0xf903d0[_0x687e('0x53')]['id'])});}return _0x314ff6;});}})[_0x687e('0x1e')](respondWithResult(_0xf3e25f,null))[_0x687e('0x28')](handleError(_0xf3e25f,null));};exports[_0x687e('0x12c')]=function(_0x526f5e,_0x5620c1,_0x374c42){return db[_0x687e('0x3e')][_0x687e('0x59')]({'where':{'id':_0x526f5e[_0x687e('0x53')]['id']}})['then'](handleEntityNotFound(_0x5620c1,null))[_0x687e('0x1e')](function(_0x24048a){if(_0x24048a){return _0x24048a['removeAgents'](_0x526f5e[_0x687e('0x41')]['ids'])['then'](function(){if(_[_0x687e('0x12d')](_0x526f5e['query'][_0x687e('0x6b')])){for(var _0x3eaac7=0x0;_0x3eaac7<_0x526f5e[_0x687e('0x41')]['ids'][_0x687e('0x44')];_0x3eaac7+=0x1){socket['emit'](_0x687e('0x12e'),{'UserId':Number(_0x526f5e['query'][_0x687e('0x6b')][_0x3eaac7]),'ChatWebsiteId':Number(_0x526f5e[_0x687e('0x53')]['id'])});}}else{socket[_0x687e('0x12f')](_0x687e('0x12e'),{'UserId':Number(_0x526f5e[_0x687e('0x41')]['ids']),'ChatWebsiteId':Number(_0x526f5e[_0x687e('0x53')]['id'])});}});}})[_0x687e('0x1e')](respondWithStatusCode(_0x5620c1,null))[_0x687e('0x28')](handleError(_0x5620c1,null));};exports[_0x687e('0x130')]=function(_0x15c85e,_0x554b93,_0x1efaa2){var _0x27d812={};var _0x359c67={};var _0x21b5da;var _0x355fdf;return db[_0x687e('0x3e')]['findOne']({'where':{'id':_0x15c85e[_0x687e('0x53')]['id']}})[_0x687e('0x1e')](handleEntityNotFound(_0x554b93,null))['then'](function(_0x8d04b4){if(_0x8d04b4){_0x21b5da=_0x8d04b4;_0x359c67[_0x687e('0x40')]=_['keys'](db['User'][_0x687e('0x55')]);_0x359c67[_0x687e('0x41')]=_[_0x687e('0x54')](_0x15c85e[_0x687e('0x41')]);_0x359c67['filters']=_['intersection'](_0x359c67['model'],_0x359c67[_0x687e('0x41')]);_0x27d812[_0x687e('0x43')]=_[_0x687e('0x42')](_0x359c67[_0x687e('0x40')],qs['fields'](_0x15c85e[_0x687e('0x41')][_0x687e('0x56')]));_0x27d812[_0x687e('0x43')]=_0x27d812['attributes'][_0x687e('0x44')]?_0x27d812[_0x687e('0x43')]:_0x359c67[_0x687e('0x40')];_0x27d812['order']=qs[_0x687e('0x48')](_0x15c85e['query'][_0x687e('0x48')]);_0x27d812[_0x687e('0x49')]=qs['filters'](_[_0x687e('0x4a')](_0x15c85e[_0x687e('0x41')],_0x359c67[_0x687e('0x4b')]));if(_0x15c85e[_0x687e('0x41')][_0x687e('0x4c')]){_0x27d812[_0x687e('0x49')]=_[_0x687e('0x4d')](_0x27d812['where'],{'$or':_[_0x687e('0x3d')](_0x27d812[_0x687e('0x43')],function(_0x2624b0){var _0x239ab8={};_0x239ab8[_0x2624b0]={'$like':'%'+_0x15c85e[_0x687e('0x41')][_0x687e('0x4c')]+'%'};return _0x239ab8;})});}_0x27d812=_[_0x687e('0x4d')]({},_0x27d812,_0x15c85e[_0x687e('0x50')]);return _0x21b5da[_0x687e('0x130')](_0x27d812);}})[_0x687e('0x1e')](function(_0x569a42){if(_0x569a42){_0x355fdf=_0x569a42[_0x687e('0x44')];if(!_0x15c85e[_0x687e('0x41')][_0x687e('0x45')](_0x687e('0x46'))){_0x27d812['limit']=qs[_0x687e('0x47')](_0x15c85e['query'][_0x687e('0x47')]);_0x27d812[_0x687e('0x2b')]=qs[_0x687e('0x2b')](_0x15c85e['query']['offset']);}return _0x21b5da[_0x687e('0x130')](_0x27d812);}})[_0x687e('0x1e')](function(_0x1308c3){if(_0x1308c3){return _0x1308c3?{'count':_0x355fdf,'rows':_0x1308c3}:null;}})['then'](respondWithResult(_0x554b93,null))['catch'](handleError(_0x554b93,null));};
\ No newline at end of file
+var _0x5659=['MailAccount','readFileSync','render','toPairs','ChatOfflineMessage','originalname','server','files','attachments','basename','sequelize','Attachment','bulkCreate','MailServerOut','Smtp','service','host','secure','authentication','auth','pass','SendMail','sendMail','email','offlineMessageSubject','openNewInteraction','mimetype','subjectOffline','toPairsIn','mapValues','Chat','MailAccountId','NotifyMailAccount','offline-chat','remove','Could\x20not\x20remove\x20attachment\x20file','addInteraction','omit','getInteractions','hasOwnProperty','Contact','User','fullname','internal','Tag','Tags','color','tag','Command','timezone','iftime\x20%s,%s','interval','iftime\x20%s','No\x20timezone','[%s][INTERVAL][%s]\x20%s\x20%s\x20(%s)','Interval','getProactiveActions','virtual','License','Intervals','push','some','server/files/chat/iframe.ejs','utf8','x-real-ip','connection','remoteAddress','verticalAlignment','textColor','color_button','backgroundColor','addApplications','ChatApplication','findAndCountAll','getApplications','addProactiveActions','chatProactiveAction','ChatProactiveAction','getFields','false','onlineForm','items','fromKey','Attachments','addAgents','userChatWebsite:save','removeAgents','isArray','emit','userChatWebsite:remove','getAgents','eml-format','zip-dir','fast-json-patch','moment','bluebird','mustache','path','sox','to-csv','ejs','fs-extra','squel','desk.js','papaparse','../../components/parsers/qs','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','redis','defaults','localhost','socket.io-emitter','./chatWebsite.socket','register','client','http','info','request\x20sent','debug','ChatWebsite,\x20%s,\x20%s,\x20%s','stringify','error','code','ChatWebsite,\x20%s,\x20%s','message','result','catch','sendStatus','status','json','limit','undefined','count','offset','apply','reject','then','destroy','get','ChatWebsites','end','stack','name','send','index','Pause','mandatoryDispositionPause','map','ChatWebsite','rawAttributes','fieldName','type','key','model','query','filters','intersection','attributes','fields','length','sort','pick','filter','where','merge','VIRTUAL','include','findAll','rows','show','params','keys','includeAll','options','create','body','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','UserProfileSection','find','userProfileId','autoAssociation','UserProfileResource','update','describe','addDisposition','ChatWebsiteId','Disposition','getDispositions','findOne','removeDispositions','ids','CannedAnswer','getAnswers','nolimit','order','removeAnswers','addLogo','sitepic','agentAvatar','file','customerAvatar','filename','addSystemAvatar','getLogo','join','server/files/images/logos/default_logo.svg','getLicense','custom','isNil','existsSync','root','server/files/images/logos/','download','getAvatar','server/files/images/avatars/','server/files/images/avatars/customer_avatar.png','showCustomerAvatar','getSystemAvatar','systemAvatar','notify','user-agent-parser','user-agent','getResult','chat','CmContact','Sequelize','ValidationError','no\x20available\x20attributes','difference','createdAt','updatedAt','CompanyId','ListId','from','body\x20is\x20mandatory\x20and\x20not\x20empty','mapKey','includes','Contacts','DESC','Applications','List','account','applications','list','orderBy','priority','asc','contact','customerIp','headers','cf-connecting-ip','x-forwarded-for','first','split','x-real-port','referer','browser','format','%s\x20%s','version','device','%s\x20%s\x20%s','vendor','threadId','ChatInteraction','externalUrl','ContactId','interaction','spread','firstName','lastName','messageId','created','close','unmanaged','*,*,*,*','ChatMessage','AttachmentId','UserId','unshift','agent','forcedOwnership','Start','startRouting','EventManager','offline','from\x20is\x20mandatory','mapKeyOffline','mapKeyOffline\x20invalid,\x20please\x20use\x20one\x20of\x20these:\x20','CmList'];(function(_0x321bb2,_0x202794){var _0x9c12ed=function(_0x263dd3){while(--_0x263dd3){_0x321bb2['push'](_0x321bb2['shift']());}};_0x9c12ed(++_0x202794);}(_0x5659,0x184));var _0x9565=function(_0x525290,_0x493c29){_0x525290=_0x525290-0x0;var _0x1231ca=_0x5659[_0x525290];return _0x1231ca;};'use strict';var emlformat=require(_0x9565('0x0'));var rimraf=require('rimraf');var zipdir=require(_0x9565('0x1'));var jsonpatch=require(_0x9565('0x2'));var rp=require('request-promise');var moment=require(_0x9565('0x3'));var BPromise=require(_0x9565('0x4'));var Mustache=require(_0x9565('0x5'));var util=require('util');var path=require(_0x9565('0x6'));var sox=require(_0x9565('0x7'));var csv=require(_0x9565('0x8'));var ejs=require(_0x9565('0x9'));var fs=require('fs');var fs_extra=require(_0x9565('0xa'));var _=require('lodash');var squel=require(_0x9565('0xb'));var crypto=require('crypto');var jsforce=require('jsforce');var deskjs=require(_0x9565('0xc'));var toCsv=require('to-csv');var querystring=require('querystring');var Papa=require(_0x9565('0xd'));var Redis=require('ioredis');var authService=require('../../components/auth/service');var qs=require(_0x9565('0xe'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x9565('0xf'));var logger=require(_0x9565('0x10'))(_0x9565('0x11'));var utils=require(_0x9565('0x12'));var config=require(_0x9565('0x13'));var licenseUtil=require(_0x9565('0x14'));var db=require(_0x9565('0x15'))['db'];config[_0x9565('0x16')]=_[_0x9565('0x17')](config[_0x9565('0x16')],{'host':_0x9565('0x18'),'port':0x18eb});var socket=require(_0x9565('0x19'))(new Redis(config[_0x9565('0x16')]));require(_0x9565('0x1a'))[_0x9565('0x1b')](socket);var jayson=require('jayson/promise');var client=jayson[_0x9565('0x1c')][_0x9565('0x1d')]({'port':0x232c});var client9002=jayson[_0x9565('0x1c')][_0x9565('0x1d')]({'port':0x232a});var client9003=jayson[_0x9565('0x1c')]['http']({'port':0x232b});var client9001=jayson[_0x9565('0x1c')][_0x9565('0x1d')]({'port':0x2329});function respondWithRpcPromise(_0x25b90f,_0x48194a,_0x3e5c7c,_0x368167){return new BPromise(function(_0x368bdc,_0x2231c9){var _0x55580f=_0x368167||client;return _0x55580f['request'](_0x25b90f,_0x3e5c7c)['then'](function(_0x21a67c){logger[_0x9565('0x1e')]('ChatWebsite,\x20%s,\x20%s',_0x48194a,_0x9565('0x1f'));logger[_0x9565('0x20')](_0x9565('0x21'),_0x48194a,_0x9565('0x1f'),JSON[_0x9565('0x22')](_0x21a67c));if(_0x21a67c[_0x9565('0x23')]){if(_0x21a67c[_0x9565('0x23')][_0x9565('0x24')]===0x1f4){logger['error'](_0x9565('0x25'),_0x48194a,_0x21a67c[_0x9565('0x23')][_0x9565('0x26')]);return _0x2231c9(_0x21a67c['error'][_0x9565('0x26')]);}logger[_0x9565('0x23')](_0x9565('0x25'),_0x48194a,_0x21a67c[_0x9565('0x23')]['message']);return _0x368bdc(_0x21a67c[_0x9565('0x23')][_0x9565('0x26')]);}else{logger['info'](_0x9565('0x25'),_0x48194a,'request\x20sent');_0x368bdc(_0x21a67c[_0x9565('0x27')]['message']);}})[_0x9565('0x28')](function(_0x5184cf){logger['error'](_0x9565('0x25'),_0x48194a,_0x5184cf);_0x2231c9(_0x5184cf);});});}function respondWithStatusCode(_0x55f815,_0x177011){_0x177011=_0x177011||0xcc;return function(_0xee7af0){if(_0xee7af0){return _0x55f815[_0x9565('0x29')](_0x177011);}return _0x55f815[_0x9565('0x2a')](_0x177011)['end']();};}function respondWithResult(_0x3ef75d,_0xbd3657){_0xbd3657=_0xbd3657||0xc8;return function(_0xea82d8){if(_0xea82d8){return _0x3ef75d[_0x9565('0x2a')](_0xbd3657)[_0x9565('0x2b')](_0xea82d8);}};}function respondWithFilteredResult(_0x824ec2,_0x13eb35){return function(_0x455c9e){if(_0x455c9e){var _0x15b688=typeof _0x13eb35['offset']==='undefined'&&typeof _0x13eb35[_0x9565('0x2c')]===_0x9565('0x2d');var _0x89014c=_0x455c9e[_0x9565('0x2e')];var _0x5422c4=_0x15b688?0x0:_0x13eb35[_0x9565('0x2f')];var _0x1bf8d5=_0x15b688?_0x455c9e['count']:_0x13eb35[_0x9565('0x2f')]+_0x13eb35[_0x9565('0x2c')];var _0x88788e;if(_0x1bf8d5>=_0x89014c){_0x1bf8d5=_0x89014c;_0x88788e=0xc8;}else{_0x88788e=0xce;}_0x824ec2['status'](_0x88788e);return _0x824ec2['set']('Content-Range',_0x5422c4+'-'+_0x1bf8d5+'/'+_0x89014c)[_0x9565('0x2b')](_0x455c9e);}return null;};}function patchUpdates(_0x3d1b8b){return function(_0x2326a4){try{jsonpatch[_0x9565('0x30')](_0x2326a4,_0x3d1b8b,!![]);}catch(_0x4bcb8b){return BPromise[_0x9565('0x31')](_0x4bcb8b);}return _0x2326a4['save']();};}function saveUpdates(_0x41b430,_0x7a0543){return function(_0x4b931f){if(_0x4b931f){return _0x4b931f['update'](_0x41b430)[_0x9565('0x32')](function(_0x21f3a4){return _0x21f3a4;});}return null;};}function removeEntity(_0x27bc4f,_0x8e7a7a){return function(_0x466de8){if(_0x466de8){return _0x466de8[_0x9565('0x33')]()[_0x9565('0x32')](function(){var _0x442cb4=_0x466de8[_0x9565('0x34')]({'plain':!![]});var _0x1c66c9=_0x9565('0x35');return db['UserProfileResource'][_0x9565('0x33')]({'where':{'type':_0x1c66c9,'resourceId':_0x442cb4['id']}})[_0x9565('0x32')](function(){return _0x466de8;});})[_0x9565('0x32')](function(){_0x27bc4f[_0x9565('0x2a')](0xcc)[_0x9565('0x36')]();});}};}function handleEntityNotFound(_0x48056b,_0x1196de){return function(_0x2d2df3){if(!_0x2d2df3){_0x48056b[_0x9565('0x29')](0x194);}return _0x2d2df3;};}function handleError(_0x468368,_0x1beb27){_0x1beb27=_0x1beb27||0x1f4;return function(_0x2cf54e){logger[_0x9565('0x23')](_0x2cf54e[_0x9565('0x37')]);if(_0x2cf54e[_0x9565('0x38')]){delete _0x2cf54e[_0x9565('0x38')];}_0x468368[_0x9565('0x2a')](_0x1beb27)[_0x9565('0x39')](_0x2cf54e);};}exports[_0x9565('0x3a')]=function(_0x4ef5fd,_0x4bad3a){var _0x5ecea7={'include':[{'model':db[_0x9565('0x3b')],'as':_0x9565('0x3c')}]},_0x501eeb={},_0x213158={'count':0x0,'rows':[]};var _0x541586=_[_0x9565('0x3d')](db[_0x9565('0x3e')][_0x9565('0x3f')],function(_0x53b9e){return{'name':_0x53b9e[_0x9565('0x40')],'type':_0x53b9e[_0x9565('0x41')][_0x9565('0x42')]};});_0x501eeb[_0x9565('0x43')]=_['map'](_0x541586,'name');_0x501eeb[_0x9565('0x44')]=_['keys'](_0x4ef5fd[_0x9565('0x44')]);_0x501eeb[_0x9565('0x45')]=_[_0x9565('0x46')](_0x501eeb[_0x9565('0x43')],_0x501eeb[_0x9565('0x44')]);_0x5ecea7[_0x9565('0x47')]=_['intersection'](_0x501eeb[_0x9565('0x43')],qs['fields'](_0x4ef5fd[_0x9565('0x44')][_0x9565('0x48')]));_0x5ecea7[_0x9565('0x47')]=_0x5ecea7[_0x9565('0x47')][_0x9565('0x49')]?_0x5ecea7[_0x9565('0x47')]:_0x501eeb[_0x9565('0x43')];if(!_0x4ef5fd[_0x9565('0x44')]['hasOwnProperty']('nolimit')){_0x5ecea7['limit']=qs[_0x9565('0x2c')](_0x4ef5fd[_0x9565('0x44')][_0x9565('0x2c')]);_0x5ecea7['offset']=qs[_0x9565('0x2f')](_0x4ef5fd[_0x9565('0x44')][_0x9565('0x2f')]);}_0x5ecea7['order']=qs['sort'](_0x4ef5fd[_0x9565('0x44')][_0x9565('0x4a')]);_0x5ecea7['where']=qs[_0x9565('0x45')](_[_0x9565('0x4b')](_0x4ef5fd[_0x9565('0x44')],_0x501eeb[_0x9565('0x45')]),_0x541586);if(_0x4ef5fd[_0x9565('0x44')][_0x9565('0x4c')]){_0x5ecea7[_0x9565('0x4d')]=_[_0x9565('0x4e')](_0x5ecea7[_0x9565('0x4d')],{'$or':_[_0x9565('0x3d')](_0x541586,function(_0x504958){if(_0x504958['type']!==_0x9565('0x4f')){var _0x1c348d={};_0x1c348d[_0x504958[_0x9565('0x38')]]={'$like':'%'+_0x4ef5fd['query']['filter']+'%'};return _0x1c348d;}})});}_0x5ecea7=_[_0x9565('0x4e')]({},_0x5ecea7,_0x4ef5fd['options']);var _0x196dda={'where':_0x5ecea7[_0x9565('0x4d')]};return db[_0x9565('0x3e')][_0x9565('0x2e')](_0x196dda)[_0x9565('0x32')](function(_0x3e20b6){_0x213158['count']=_0x3e20b6;if(_0x4ef5fd[_0x9565('0x44')]['includeAll']){_0x5ecea7[_0x9565('0x50')]=[{'all':!![]}];}return db['ChatWebsite'][_0x9565('0x51')](_0x5ecea7);})['then'](function(_0x388a49){_0x213158[_0x9565('0x52')]=_0x388a49;return _0x213158;})[_0x9565('0x32')](respondWithFilteredResult(_0x4bad3a,_0x5ecea7))[_0x9565('0x28')](handleError(_0x4bad3a,null));};exports[_0x9565('0x53')]=function(_0xe5234a,_0x1dfb89){var _0x1b2101={'raw':![],'where':{'id':_0xe5234a[_0x9565('0x54')]['id']},'include':[{'model':db['Pause'],'as':_0x9565('0x3c')}]},_0x3d9b07={};_0x3d9b07[_0x9565('0x43')]=_[_0x9565('0x55')](db[_0x9565('0x3e')]['rawAttributes']);_0x3d9b07['query']=_['keys'](_0xe5234a['query']);_0x3d9b07[_0x9565('0x45')]=_['intersection'](_0x3d9b07[_0x9565('0x43')],_0x3d9b07[_0x9565('0x44')]);_0x1b2101[_0x9565('0x47')]=_[_0x9565('0x46')](_0x3d9b07['model'],qs['fields'](_0xe5234a[_0x9565('0x44')]['fields']));_0x1b2101[_0x9565('0x47')]=_0x1b2101['attributes']['length']?_0x1b2101[_0x9565('0x47')]:_0x3d9b07[_0x9565('0x43')];if(_0xe5234a[_0x9565('0x44')][_0x9565('0x56')]){_0x1b2101[_0x9565('0x50')]=[{'all':!![]}];}_0x1b2101=_[_0x9565('0x4e')]({},_0x1b2101,_0xe5234a[_0x9565('0x57')]);return db['ChatWebsite']['find'](_0x1b2101)['then'](handleEntityNotFound(_0x1dfb89,null))[_0x9565('0x32')](respondWithResult(_0x1dfb89,null))[_0x9565('0x28')](handleError(_0x1dfb89,null));};exports['create']=function(_0x227978,_0x46e569){return db[_0x9565('0x3e')][_0x9565('0x58')](_0x227978[_0x9565('0x59')],{})[_0x9565('0x32')](function(_0x4e485c){var _0x32c96f=_0x227978[_0x9565('0x5a')]['get']({'plain':!![]});if(!_0x32c96f)throw new Error(_0x9565('0x5b'));if(_0x32c96f[_0x9565('0x5c')]===_0x9565('0x5a')){var _0x252612=_0x4e485c[_0x9565('0x34')]({'plain':!![]});var _0x5b9a92='ChatWebsites';return db[_0x9565('0x5d')][_0x9565('0x5e')]({'where':{'name':_0x5b9a92,'userProfileId':_0x32c96f[_0x9565('0x5f')]},'raw':!![]})[_0x9565('0x32')](function(_0x3fbceb){if(_0x3fbceb&&_0x3fbceb[_0x9565('0x60')]===0x0){return db[_0x9565('0x61')][_0x9565('0x58')]({'name':_0x252612[_0x9565('0x38')],'resourceId':_0x252612['id'],'type':_0x3fbceb['name'],'sectionId':_0x3fbceb['id']},{})[_0x9565('0x32')](function(){return _0x4e485c;});}else{return _0x4e485c;}})[_0x9565('0x28')](function(_0x5aa6a4){logger[_0x9565('0x23')]('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0x5aa6a4);throw _0x5aa6a4;});}return _0x4e485c;})[_0x9565('0x32')](respondWithResult(_0x46e569,0xc9))[_0x9565('0x28')](handleError(_0x46e569,null));};exports[_0x9565('0x62')]=function(_0x3fcf11,_0x5dd525){if(_0x3fcf11[_0x9565('0x59')]['id']){delete _0x3fcf11['body']['id'];}return db[_0x9565('0x3e')][_0x9565('0x5e')]({'where':{'id':_0x3fcf11['params']['id']},'include':[{'model':db[_0x9565('0x3b')],'as':_0x9565('0x3c')}]})[_0x9565('0x32')](handleEntityNotFound(_0x5dd525,null))[_0x9565('0x32')](saveUpdates(_0x3fcf11['body'],null))[_0x9565('0x32')](respondWithResult(_0x5dd525,null))[_0x9565('0x28')](handleError(_0x5dd525,null));};exports[_0x9565('0x33')]=function(_0x2969e1,_0x30d9f8){return db['ChatWebsite'][_0x9565('0x5e')]({'where':{'id':_0x2969e1[_0x9565('0x54')]['id']}})[_0x9565('0x32')](handleEntityNotFound(_0x30d9f8,null))[_0x9565('0x32')](removeEntity(_0x30d9f8,null))[_0x9565('0x28')](handleError(_0x30d9f8,null));};exports[_0x9565('0x63')]=function(_0x1d86b1,_0x31bad0){return db[_0x9565('0x3e')][_0x9565('0x63')]()[_0x9565('0x32')](respondWithResult(_0x31bad0,null))[_0x9565('0x28')](handleError(_0x31bad0,null));};exports[_0x9565('0x64')]=function(_0x49bd68,_0x5cc045,_0x1b312f){if(_0x49bd68['body']['id']){delete _0x49bd68['body']['id'];}return db[_0x9565('0x3e')]['find']({'where':{'id':_0x49bd68[_0x9565('0x54')]['id']}})[_0x9565('0x32')](handleEntityNotFound(_0x5cc045,null))[_0x9565('0x32')](function(_0x4da260){if(_0x4da260){_0x49bd68['body'][_0x9565('0x65')]=_0x4da260['id'];return db[_0x9565('0x66')][_0x9565('0x58')](_0x49bd68[_0x9565('0x59')]);}})['then'](respondWithResult(_0x5cc045,null))[_0x9565('0x28')](handleError(_0x5cc045,null));};exports[_0x9565('0x67')]=function(_0x2fc720,_0x1da90f,_0x52e42a){var _0x241b58={'raw':![],'where':{}};var _0x4bb3ef={};var _0x23ff48={'count':0x0,'rows':[]};return db['ChatWebsite'][_0x9565('0x68')]({'where':{'id':_0x2fc720[_0x9565('0x54')]['id']}})[_0x9565('0x32')](handleEntityNotFound(_0x1da90f,null))[_0x9565('0x32')](function(_0x740b41){if(_0x740b41){_0x4bb3ef[_0x9565('0x43')]=_[_0x9565('0x55')](db[_0x9565('0x66')]['rawAttributes']);_0x4bb3ef[_0x9565('0x44')]=_['keys'](_0x2fc720[_0x9565('0x44')]);_0x4bb3ef['filters']=_[_0x9565('0x46')](_0x4bb3ef['model'],_0x4bb3ef['query']);_0x241b58[_0x9565('0x47')]=_[_0x9565('0x46')](_0x4bb3ef['model'],qs[_0x9565('0x48')](_0x2fc720[_0x9565('0x44')][_0x9565('0x48')]));_0x241b58[_0x9565('0x47')]=_0x241b58[_0x9565('0x47')]['length']?_0x241b58[_0x9565('0x47')]:_0x4bb3ef[_0x9565('0x43')];if(!_0x2fc720['query']['hasOwnProperty']('nolimit')){_0x241b58[_0x9565('0x2c')]=qs[_0x9565('0x2c')](_0x2fc720[_0x9565('0x44')][_0x9565('0x2c')]);_0x241b58['offset']=qs['offset'](_0x2fc720['query'][_0x9565('0x2f')]);}_0x241b58['order']=qs['sort'](_0x2fc720[_0x9565('0x44')]['sort']);_0x241b58[_0x9565('0x4d')]=qs['filters'](_[_0x9565('0x4b')](_0x2fc720[_0x9565('0x44')],_0x4bb3ef[_0x9565('0x45')]));_0x241b58[_0x9565('0x4d')]['ChatWebsiteId']=_0x740b41['id'];if(_0x2fc720[_0x9565('0x44')][_0x9565('0x4c')]){_0x241b58['where']=_[_0x9565('0x4e')](_0x241b58[_0x9565('0x4d')],{'$or':_[_0x9565('0x3d')](_0x241b58[_0x9565('0x47')],function(_0x1d6441){var _0x73491e={};_0x73491e[_0x1d6441]={'$like':'%'+_0x2fc720[_0x9565('0x44')][_0x9565('0x4c')]+'%'};return _0x73491e;})});}_0x241b58=_[_0x9565('0x4e')]({},_0x241b58,_0x2fc720['options']);return db[_0x9565('0x66')][_0x9565('0x2e')]({'where':_0x241b58[_0x9565('0x4d')]})['then'](function(_0x289db8){_0x23ff48['count']=_0x289db8;if(_0x2fc720[_0x9565('0x44')][_0x9565('0x56')]){_0x241b58['include']=[{'all':!![]}];}return db['Disposition'][_0x9565('0x51')](_0x241b58);})[_0x9565('0x32')](function(_0x3b2e3a){_0x23ff48[_0x9565('0x52')]=_0x3b2e3a;return _0x23ff48;});}})[_0x9565('0x32')](respondWithFilteredResult(_0x1da90f,_0x241b58))[_0x9565('0x28')](handleError(_0x1da90f,null));};exports[_0x9565('0x69')]=function(_0x14153a,_0x136d23,_0x3dcb30){return db[_0x9565('0x3e')][_0x9565('0x5e')]({'where':{'id':_0x14153a[_0x9565('0x54')]['id']}})[_0x9565('0x32')](handleEntityNotFound(_0x136d23,null))[_0x9565('0x32')](function(_0x4ddc12){if(_0x4ddc12){return _0x4ddc12[_0x9565('0x69')](_0x14153a[_0x9565('0x44')][_0x9565('0x6a')]);}})['then'](respondWithStatusCode(_0x136d23,null))[_0x9565('0x28')](handleError(_0x136d23,null));};exports['addAnswer']=function(_0x4b580c,_0x51674d,_0x59c7a3){if(_0x4b580c['body']['id']){delete _0x4b580c['body']['id'];}return db['ChatWebsite'][_0x9565('0x5e')]({'where':{'id':_0x4b580c[_0x9565('0x54')]['id']}})[_0x9565('0x32')](handleEntityNotFound(_0x51674d,null))[_0x9565('0x32')](function(_0x4a365b){if(_0x4a365b){_0x4b580c[_0x9565('0x59')][_0x9565('0x65')]=_0x4a365b['id'];return db[_0x9565('0x6b')][_0x9565('0x58')](_0x4b580c[_0x9565('0x59')]);}})[_0x9565('0x32')](respondWithResult(_0x51674d,null))[_0x9565('0x28')](handleError(_0x51674d,null));};exports[_0x9565('0x6c')]=function(_0x191ef2,_0x4855ba,_0x31841f){var _0xfcc971={'raw':![],'where':{}};var _0x589bfe={};var _0x333727={'count':0x0,'rows':[]};return db['ChatWebsite'][_0x9565('0x68')]({'where':{'id':_0x191ef2[_0x9565('0x54')]['id']}})[_0x9565('0x32')](handleEntityNotFound(_0x4855ba,null))[_0x9565('0x32')](function(_0x26f97a){if(_0x26f97a){_0x589bfe['model']=_['keys'](db[_0x9565('0x6b')][_0x9565('0x3f')]);_0x589bfe[_0x9565('0x44')]=_[_0x9565('0x55')](_0x191ef2[_0x9565('0x44')]);_0x589bfe[_0x9565('0x45')]=_['intersection'](_0x589bfe[_0x9565('0x43')],_0x589bfe[_0x9565('0x44')]);_0xfcc971[_0x9565('0x47')]=_[_0x9565('0x46')](_0x589bfe[_0x9565('0x43')],qs[_0x9565('0x48')](_0x191ef2['query'][_0x9565('0x48')]));_0xfcc971['attributes']=_0xfcc971['attributes'][_0x9565('0x49')]?_0xfcc971[_0x9565('0x47')]:_0x589bfe[_0x9565('0x43')];if(!_0x191ef2['query']['hasOwnProperty'](_0x9565('0x6d'))){_0xfcc971[_0x9565('0x2c')]=qs[_0x9565('0x2c')](_0x191ef2[_0x9565('0x44')][_0x9565('0x2c')]);_0xfcc971[_0x9565('0x2f')]=qs[_0x9565('0x2f')](_0x191ef2[_0x9565('0x44')][_0x9565('0x2f')]);}_0xfcc971[_0x9565('0x6e')]=qs[_0x9565('0x4a')](_0x191ef2[_0x9565('0x44')][_0x9565('0x4a')]);_0xfcc971[_0x9565('0x4d')]=qs[_0x9565('0x45')](_[_0x9565('0x4b')](_0x191ef2[_0x9565('0x44')],_0x589bfe['filters']));_0xfcc971['where'][_0x9565('0x65')]=_0x26f97a['id'];if(_0x191ef2[_0x9565('0x44')][_0x9565('0x4c')]){_0xfcc971['where']=_[_0x9565('0x4e')](_0xfcc971['where'],{'$or':_[_0x9565('0x3d')](_0xfcc971['attributes'],function(_0x68c537){var _0x5c648e={};_0x5c648e[_0x68c537]={'$like':'%'+_0x191ef2[_0x9565('0x44')][_0x9565('0x4c')]+'%'};return _0x5c648e;})});}_0xfcc971=_[_0x9565('0x4e')]({},_0xfcc971,_0x191ef2['options']);return db['CannedAnswer']['count']({'where':_0xfcc971[_0x9565('0x4d')]})[_0x9565('0x32')](function(_0xb84af5){_0x333727[_0x9565('0x2e')]=_0xb84af5;if(_0x191ef2[_0x9565('0x44')]['includeAll']){_0xfcc971[_0x9565('0x50')]=[{'all':!![]}];}return db[_0x9565('0x6b')]['findAll'](_0xfcc971);})[_0x9565('0x32')](function(_0x60f1cb){_0x333727[_0x9565('0x52')]=_0x60f1cb;return _0x333727;});}})[_0x9565('0x32')](respondWithFilteredResult(_0x4855ba,_0xfcc971))[_0x9565('0x28')](handleError(_0x4855ba,null));};exports[_0x9565('0x6f')]=function(_0x3c3681,_0x1c8919,_0x2f7863){return db[_0x9565('0x3e')][_0x9565('0x5e')]({'where':{'id':_0x3c3681[_0x9565('0x54')]['id']}})[_0x9565('0x32')](handleEntityNotFound(_0x1c8919,null))[_0x9565('0x32')](function(_0x1273d7){if(_0x1273d7){return _0x1273d7['removeAnswers'](_0x3c3681[_0x9565('0x44')]['ids']);}})[_0x9565('0x32')](respondWithStatusCode(_0x1c8919,null))[_0x9565('0x28')](handleError(_0x1c8919,null));};exports[_0x9565('0x70')]=function(_0x12d896,_0x7bfbad,_0x144119){_0x12d896[_0x9565('0x59')][_0x9565('0x71')]=_0x12d896['file']['filename'];return db[_0x9565('0x3e')][_0x9565('0x5e')]({'where':{'id':_0x12d896[_0x9565('0x54')]['id']}})['then'](handleEntityNotFound(_0x7bfbad,null))[_0x9565('0x32')](saveUpdates(_0x12d896[_0x9565('0x59')],null))[_0x9565('0x32')](respondWithResult(_0x7bfbad,null))[_0x9565('0x28')](handleError(_0x7bfbad,null));};exports['addAvatar']=function(_0x4a0b24,_0x9f67c4,_0x2789e9){_0x4a0b24[_0x9565('0x59')][_0x9565('0x72')]=_0x4a0b24[_0x9565('0x73')]['filename'];return db['ChatWebsite'][_0x9565('0x5e')]({'where':{'id':_0x4a0b24[_0x9565('0x54')]['id']}})[_0x9565('0x32')](handleEntityNotFound(_0x9f67c4,null))[_0x9565('0x32')](saveUpdates(_0x4a0b24[_0x9565('0x59')],null))[_0x9565('0x32')](respondWithResult(_0x9f67c4,null))[_0x9565('0x28')](handleError(_0x9f67c4,null));};exports['addCustomerAvatar']=function(_0x254af9,_0x3df9b5,_0x115f49){_0x254af9[_0x9565('0x59')][_0x9565('0x74')]=_0x254af9[_0x9565('0x73')][_0x9565('0x75')];return db[_0x9565('0x3e')][_0x9565('0x5e')]({'where':{'id':_0x254af9[_0x9565('0x54')]['id']}})[_0x9565('0x32')](handleEntityNotFound(_0x3df9b5,null))['then'](saveUpdates(_0x254af9['body'],null))[_0x9565('0x32')](respondWithResult(_0x3df9b5,null))[_0x9565('0x28')](handleError(_0x3df9b5,null));};exports[_0x9565('0x76')]=function(_0x578230,_0x48c5cc,_0x205407){_0x578230[_0x9565('0x59')]['systemAvatar']=_0x578230[_0x9565('0x73')][_0x9565('0x75')];return db[_0x9565('0x3e')]['find']({'where':{'id':_0x578230[_0x9565('0x54')]['id']}})[_0x9565('0x32')](handleEntityNotFound(_0x48c5cc,null))[_0x9565('0x32')](saveUpdates(_0x578230[_0x9565('0x59')],null))[_0x9565('0x32')](respondWithResult(_0x48c5cc,null))[_0x9565('0x28')](handleError(_0x48c5cc,null));};exports[_0x9565('0x77')]=function(_0x52a9f6,_0x518743,_0x4f8f07){var _0x2bc494=path[_0x9565('0x78')](config['root'],_0x9565('0x79'));var _0x4b25ba={'where':{'id':_0x52a9f6[_0x9565('0x54')]['id']},'attributes':['id','sitepic'],'raw':!![]};var _0x3ca5ac=![];return require(_0x9565('0x14'))[_0x9565('0x7a')]()[_0x9565('0x32')](function(_0x37db57){if(_0x37db57){_0x3ca5ac=_0x37db57[_0x9565('0x7b')];}})[_0x9565('0x32')](function(){return db['ChatWebsite'][_0x9565('0x5e')](_0x4b25ba);})[_0x9565('0x32')](handleEntityNotFound(_0x518743,null))[_0x9565('0x32')](function(_0x28efec){if(_0x28efec){if(!_[_0x9565('0x7c')](_0x28efec[_0x9565('0x71')])){if(fs[_0x9565('0x7d')](path[_0x9565('0x78')](config['root'],'server/files/images/logos/',_0x28efec[_0x9565('0x71')]))&&_0x3ca5ac){_0x2bc494=path[_0x9565('0x78')](config[_0x9565('0x7e')],_0x9565('0x7f'),_0x28efec[_0x9565('0x71')]);}}return _0x518743[_0x9565('0x80')](_0x2bc494);}})[_0x9565('0x28')](handleError(_0x518743,null));};exports[_0x9565('0x81')]=function(_0x50cb59,_0x5527e0,_0x2e6f7b){var _0x2b0c93=path[_0x9565('0x78')](config[_0x9565('0x7e')],'server/files/images/avatars/default_avatar.png');var _0x40da21={'where':{'id':_0x50cb59[_0x9565('0x54')]['id']},'attributes':['id',_0x9565('0x72')],'raw':!![]};return db['ChatWebsite'][_0x9565('0x5e')](_0x40da21)[_0x9565('0x32')](handleEntityNotFound(_0x5527e0,null))[_0x9565('0x32')](function(_0x788133){if(_0x788133){if(!_[_0x9565('0x7c')](_0x788133[_0x9565('0x72')])){if(fs['existsSync'](path[_0x9565('0x78')](config[_0x9565('0x7e')],'server/files/images/avatars/',_0x788133['agentAvatar']))){_0x2b0c93=path[_0x9565('0x78')](config[_0x9565('0x7e')],_0x9565('0x82'),_0x788133[_0x9565('0x72')]);}}return _0x5527e0[_0x9565('0x80')](_0x2b0c93);}})['catch'](handleError(_0x5527e0,null));};exports['getCustomerAvatar']=function(_0x2aa15c,_0x1a5305,_0x621d96){var _0x54a175=path[_0x9565('0x78')](config['root'],_0x9565('0x83'));var _0x41965f={'where':{'id':_0x2aa15c['params']['id']},'attributes':['id',_0x9565('0x74'),_0x9565('0x84')],'raw':!![]};return db[_0x9565('0x3e')][_0x9565('0x5e')](_0x41965f)[_0x9565('0x32')](handleEntityNotFound(_0x1a5305,null))[_0x9565('0x32')](function(_0x1e32ac){if(_0x1e32ac){if(!_[_0x9565('0x7c')](_0x1e32ac[_0x9565('0x74')])){if(fs[_0x9565('0x7d')](path[_0x9565('0x78')](config[_0x9565('0x7e')],_0x9565('0x82'),_0x1e32ac[_0x9565('0x74')]))&&_0x1e32ac[_0x9565('0x84')]){_0x54a175=path[_0x9565('0x78')](config[_0x9565('0x7e')],'server/files/images/avatars/',_0x1e32ac[_0x9565('0x74')]);}}return _0x1a5305[_0x9565('0x80')](_0x54a175);}})[_0x9565('0x28')](handleError(_0x1a5305,null));};exports[_0x9565('0x85')]=function(_0x5a9e98,_0x42fa57,_0xc70bf9){var _0x3bed0f=path[_0x9565('0x78')](config['root'],'server/files/images/avatars/system_avatar.png');var _0x1b97b0={'where':{'id':_0x5a9e98[_0x9565('0x54')]['id']},'attributes':['id','systemAvatar'],'raw':!![]};return db['ChatWebsite'][_0x9565('0x5e')](_0x1b97b0)[_0x9565('0x32')](handleEntityNotFound(_0x42fa57,null))['then'](function(_0x103da8){if(_0x103da8){if(!_[_0x9565('0x7c')](_0x103da8[_0x9565('0x86')])){if(fs[_0x9565('0x7d')](path[_0x9565('0x78')](config['root'],_0x9565('0x82'),_0x103da8[_0x9565('0x86')]))){_0x3bed0f=path[_0x9565('0x78')](config[_0x9565('0x7e')],_0x9565('0x82'),_0x103da8[_0x9565('0x86')]);}}return _0x42fa57['download'](_0x3bed0f);}})[_0x9565('0x28')](handleError(_0x42fa57,null));};exports[_0x9565('0x87')]=function(_0x4a55db,_0x1380b0,_0x49fc36){var _0x54ee85=require(_0x9565('0x88'));var _0x24d554=new _0x54ee85();var _0x325cb5=_0x24d554['setUA'](_0x4a55db['headers'][_0x9565('0x89')])[_0x9565('0x8a')]();var _0x310721={'body':_0x4a55db[_0x9565('0x59')],'channel':_0x9565('0x8b')};var _0x4d26e6=[];var _0x14f4f1=[];var _0xd79dd4={};var _0x40ee8c=![];return db[_0x9565('0x8c')][_0x9565('0x63')]()[_0x9565('0x32')](function(_0x26bb11){if(!_0x26bb11){throw new db[(_0x9565('0x8d'))][(_0x9565('0x8e'))](_0x9565('0x8f'));}_0x4d26e6=_[_0x9565('0x90')](_[_0x9565('0x55')](_0x26bb11),[_0x9565('0x91'),'updatedAt']);_0x14f4f1=_['difference'](_[_0x9565('0x55')](_0x26bb11),[_0x9565('0x91'),_0x9565('0x92'),_0x9565('0x93'),_0x9565('0x94')]);if(_0x4a55db['body']['id']){delete _0x4a55db[_0x9565('0x59')]['id'];}if(_[_0x9565('0x7c')](_0x4a55db[_0x9565('0x59')][_0x9565('0x95')])){throw new db[(_0x9565('0x8d'))]['ValidationError']('from\x20is\x20mandatory');}if(_[_0x9565('0x7c')](_0x4a55db[_0x9565('0x59')][_0x9565('0x59')])||_0x4a55db['body'][_0x9565('0x59')]===''){throw new db[(_0x9565('0x8d'))][(_0x9565('0x8e'))](_0x9565('0x96'));}if(_['isNil'](_0x4a55db[_0x9565('0x59')][_0x9565('0x97')])){throw new db[(_0x9565('0x8d'))][(_0x9565('0x8e'))]('mapKey\x20is\x20mandatory,\x20please\x20use\x20one\x20of\x20these:\x20'+_0x14f4f1);}if(!_[_0x9565('0x98')](_0x14f4f1,_0x4a55db['body'][_0x9565('0x97')])){throw new db[(_0x9565('0x8d'))][(_0x9565('0x8e'))]('mapKey\x20invalid,\x20please\x20use\x20one\x20of\x20these:\x20'+_0x14f4f1);}_0xd79dd4[_0x4a55db['body'][_0x9565('0x97')]]=_0x4a55db['body'][_0x9565('0x95')];})[_0x9565('0x32')](function(){return db['ChatWebsite'][_0x9565('0x5e')]({'where':{'id':_0x4a55db[_0x9565('0x54')]['id']},'include':[{'model':db['CmList'],'as':'List','include':[{'model':db[_0x9565('0x8c')],'as':_0x9565('0x99'),'where':_0xd79dd4,'limit':0x1,'order':[[_0x9565('0x92'),_0x9565('0x9a')]]}]},{'model':db['ChatApplication'],'as':_0x9565('0x9b')}]});})['then'](handleEntityNotFound(_0x1380b0,null))[_0x9565('0x32')](function(_0x339d0a){if(_0x339d0a&&_0x339d0a[_0x9565('0x9c')]){_0x310721[_0x9565('0x9d')]=_0x339d0a;_0x310721[_0x9565('0x9e')]=_0x339d0a[_0x9565('0x9b')];_0x310721[_0x9565('0x9f')]=_0x339d0a['List'];_0x310721[_0x9565('0x9e')]=_[_0x9565('0xa0')](_0x310721['applications'],[_0x9565('0xa1')],[_0x9565('0xa2')]);if(_0x310721[_0x9565('0x9d')][_0x9565('0x9b')]){delete _0x310721[_0x9565('0x9d')]['Applications'];}if(_0x310721[_0x9565('0x9d')][_0x9565('0x9c')]&&_0x310721[_0x9565('0x9d')]['List'][_0x9565('0x99')][_0x9565('0x49')]){return _0x310721['account'][_0x9565('0x9c')][_0x9565('0x99')][0x0];}var _0x35a927=_[_0x9565('0x17')](_0x4a55db[_0x9565('0x59')],{'firstName':_0x4a55db[_0x9565('0x59')]['from'],'ListId':_0x339d0a[_0x9565('0x94')]});_0x35a927[_0x4a55db[_0x9565('0x59')]['mapKey']]=_0x4a55db['body'][_0x9565('0x95')];return db['CmContact'][_0x9565('0x58')](_0x35a927,{'fields':_0x4d26e6,'raw':!![]});}})['then'](handleEntityNotFound(_0x1380b0,null))[_0x9565('0x32')](function(_0x3646bb){_0x310721[_0x9565('0xa3')]=_0x3646bb;var _0x2c6e5a=_0x4a55db[_0x9565('0x59')][_0x9565('0xa4')];if(_0x4a55db[_0x9565('0xa5')][_0x9565('0xa6')]){_0x2c6e5a=_0x4a55db['headers']['cf-connecting-ip'];}else if(_0x4a55db['headers'][_0x9565('0xa7')]){_0x2c6e5a=_[_0x9565('0xa8')](_0x4a55db[_0x9565('0xa5')]['x-forwarded-for'][_0x9565('0xa9')](','));}if(_0x3646bb){var _0x12936d={'ContactId':_0x3646bb['id'],'ChatWebsiteId':_0x4a55db[_0x9565('0x54')]['id'],'from':(_0x3646bb['firstName']||'')+'\x20'+(_0x3646bb['lastName']||''),'customerIp':_0x2c6e5a,'customerPort':_0x4a55db[_0x9565('0xa5')][_0x9565('0xaa')]?_0x4a55db[_0x9565('0xa5')][_0x9565('0xaa')]:null,'referer':_0x4a55db[_0x9565('0x59')][_0x9565('0xab')],'browserName':_0x325cb5[_0x9565('0xac')][_0x9565('0x38')]&&_0x325cb5[_0x9565('0xac')]['version']?util[_0x9565('0xad')](_0x9565('0xae'),_0x325cb5[_0x9565('0xac')][_0x9565('0x38')],_0x325cb5['browser'][_0x9565('0xaf')]):'unknown','browserVersion':_0x325cb5[_0x9565('0xac')][_0x9565('0xaf')]||'unknown','osName':util[_0x9565('0xad')](_0x9565('0xae'),_0x325cb5['os'][_0x9565('0x38')],_0x325cb5['os'][_0x9565('0xaf')]),'osVersion':_0x325cb5['os'][_0x9565('0xaf')],'deviceModel':_0x325cb5['device']['model']&&_0x325cb5[_0x9565('0xb0')]['vendor']?util[_0x9565('0xad')](_0x9565('0xb1'),_0x325cb5[_0x9565('0xb0')]['model'],_0x325cb5[_0x9565('0xb0')][_0x9565('0xb2')],_0x325cb5[_0x9565('0xb0')]['type']):null,'deviceVendor':_0x325cb5[_0x9565('0xb0')][_0x9565('0xb2')],'deviceType':_0x325cb5[_0x9565('0xb0')][_0x9565('0x41')],'formData':JSON[_0x9565('0x22')](_0x4a55db[_0x9565('0x59')])};var _0x247c4c={'ChatWebsiteId':_0x4a55db['params']['id'],'closed':![]};if(_0x4a55db[_0x9565('0x59')][_0x9565('0xb3')]){_0x247c4c['threadId']=_0x4a55db['body']['threadId'];return db[_0x9565('0xb4')][_0x9565('0x5e')]({'where':_0x247c4c})['then'](function(_0x55c8da){if(_0x55c8da){return[_0x55c8da,![]];}_0x12936d[_0x9565('0xb3')]=_0x4a55db['body']['threadId'];_0x12936d['externalUrl']=_0x4a55db[_0x9565('0x59')][_0x9565('0xb5')];return db[_0x9565('0xb4')][_0x9565('0x58')](_0x12936d)[_0x9565('0x32')](function(_0x1c600b){return[_0x1c600b,!![]];});});}_0x247c4c[_0x9565('0xb6')]=_0x3646bb['id'];if(_0x4a55db[_0x9565('0x59')]['interaction']&&_0x4a55db[_0x9565('0x59')][_0x9565('0xb7')]['id']){_0x247c4c['id']=_0x4a55db['body'][_0x9565('0xb7')]['id'];return db[_0x9565('0xb4')][_0x9565('0x5e')]({'where':_0x247c4c})['then'](function(_0x162e52){if(_0x162e52){return[_0x162e52,![]];}return db['ChatInteraction'][_0x9565('0x58')](_0x12936d)[_0x9565('0x32')](function(_0x1746d1){return[_0x1746d1,!![]];});});}return db[_0x9565('0xb4')]['create'](_0x12936d)[_0x9565('0x32')](function(_0x51b3e3){return[_0x51b3e3,!![]];});}})[_0x9565('0xb8')](function(_0x57a55f,_0x4b99e3){if(_0x57a55f){_0x40ee8c=_0x4b99e3;if(!_0x4b99e3){var _0x29656d={'from':(_0x310721['contact'][_0x9565('0xb9')]||'')+'\x20'+(_0x310721[_0x9565('0xa3')][_0x9565('0xba')]||'')};if(_0x4a55db[_0x9565('0x59')]['threadId']&&_0x4a55db[_0x9565('0x59')][_0x9565('0xbb')]&&_0x4a55db[_0x9565('0x59')]['threadId']!=_0x4a55db[_0x9565('0x59')][_0x9565('0xbb')]){_0x29656d[_0x9565('0xb3')]=_0x4a55db[_0x9565('0x59')][_0x9565('0xbb')];}return _0x57a55f[_0x9565('0x62')](_0x29656d);}else{return _0x57a55f;}}})[_0x9565('0x32')](function(_0x544ace){_0x310721[_0x9565('0xb7')]=_0x544ace[_0x9565('0x34')]({'plain':!![]});_0x310721[_0x9565('0xb7')][_0x9565('0xbc')]=_0x40ee8c;if(_0x310721['interaction'][_0x9565('0xbc')]){if(_0x310721[_0x9565('0x9d')]['autoclose']){_0x310721[_0x9565('0x9e')]['push']({'id':0x0,'priority':_0x310721[_0x9565('0x9e')][_0x9565('0x49')]+0x1,'app':_0x9565('0xbd'),'appdata':_0x9565('0xbe'),'interval':_0x9565('0xbf')});}}return db[_0x9565('0xc0')][_0x9565('0x58')]({'body':_0x4a55db[_0x9565('0x59')][_0x9565('0x59')],'ChatWebsiteId':_0x4a55db[_0x9565('0x54')]['id'],'ChatInteractionId':_0x544ace['id'],'direction':'in','ContactId':_0x310721[_0x9565('0xa3')]['id'],'AttachmentId':_0x4a55db[_0x9565('0x59')][_0x9565('0xc1')]});})['then'](function(_0x5dc363){_0x310721[_0x9565('0x26')]=_0x5dc363;if(_0x310721[_0x9565('0xb7')][_0x9565('0xc2')]){return db['User'][_0x9565('0x5e')]({'attributes':['id',_0x9565('0x38')],'where':{'id':_0x310721[_0x9565('0xb7')][_0x9565('0xc2')]}})[_0x9565('0x32')](function(_0x418ad9){if(_0x418ad9){_0x310721['applications'][_0x9565('0xc3')]({'id':0x0,'priority':0x0,'app':_0x9565('0xc4'),'appdata':_0x418ad9[_0x9565('0x38')]+','+(_0x310721[_0x9565('0x9d')]['waitForTheAssignedAgent']||0xa),'interval':_0x9565('0xbf')});_0x310721[_0x9565('0xc5')]=!![];}return respondWithRpcPromise(_0x9565('0xc6'),_0x9565('0xc7'),_0x310721);});}return respondWithRpcPromise('Start','startRouting',_0x310721);})[_0x9565('0x32')](function(_0x4d7877){respondWithRpcPromise(_0x9565('0xc8'),_0x9565('0xc8'),{'event':_0x9565('0x87'),'message':_0x4d7877},client9002);return _0x4d7877;})['then'](respondWithResult(_0x1380b0,null))[_0x9565('0x28')](handleError(_0x1380b0,null));};exports[_0x9565('0xc9')]=function(_0x5b8b55,_0x1afe2f,_0x24cc66){var _0xfae4c1,_0x5be9cb,_0x173ac1;var _0x503e83=[];var _0xb4fbeb=[];var _0xc79bc7={};var _0x1e1c0b=_0x5b8b55['files']||[];var _0x39be12=[];var _0x30258f;return db[_0x9565('0x8c')][_0x9565('0x63')]()['then'](function(_0x2e9065){if(!_0x2e9065){throw new db[(_0x9565('0x8d'))][(_0x9565('0x8e'))]('no\x20available\x20attributes');}_0xb4fbeb=_['difference'](_[_0x9565('0x55')](_0x2e9065),[_0x9565('0x91'),_0x9565('0x92')]);_0x503e83=_[_0x9565('0x90')](_[_0x9565('0x55')](_0x2e9065),[_0x9565('0x91'),_0x9565('0x92'),_0x9565('0x93'),_0x9565('0x94')]);if(_0x5b8b55[_0x9565('0x59')]['id']){delete _0x5b8b55[_0x9565('0x59')]['id'];}if(_['isNil'](_0x5b8b55['body'][_0x9565('0x95')])){throw _0x1afe2f['status'](0x1f4)[_0x9565('0x39')](new db[(_0x9565('0x8d'))][(_0x9565('0x8e'))](_0x9565('0xca')));}if(_[_0x9565('0x7c')](_0x5b8b55['body']['body'])||_0x5b8b55[_0x9565('0x59')]['body']===''){throw _0x1afe2f[_0x9565('0x2a')](0x1f4)['send'](new db[(_0x9565('0x8d'))][(_0x9565('0x8e'))]('body\x20is\x20mandatory\x20and\x20not\x20empty'));}if(_['isNil'](_0x5b8b55[_0x9565('0x59')][_0x9565('0xcb')])){throw _0x1afe2f[_0x9565('0x2a')](0x1f4)['send'](new db[(_0x9565('0x8d'))][(_0x9565('0x8e'))]('mapKeyOffline\x20is\x20mandatory,\x20please\x20use\x20one\x20of\x20these:\x20'+_0x503e83));}if(!_['includes'](_0x503e83,_0x5b8b55[_0x9565('0x59')]['mapKeyOffline'])){throw _0x1afe2f['status'](0x1f4)[_0x9565('0x39')](new db[(_0x9565('0x8d'))]['ValidationError'](_0x9565('0xcc')+_0x503e83));}_0xc79bc7[_0x5b8b55[_0x9565('0x59')][_0x9565('0xcb')]]=_0x5b8b55[_0x9565('0x59')][_0x9565('0x95')];})[_0x9565('0x32')](function(){return db[_0x9565('0x3e')][_0x9565('0x5e')]({'where':{'id':_0x5b8b55[_0x9565('0x54')]['id']},'include':[{'model':db[_0x9565('0xcd')],'as':'List'},{'model':db[_0x9565('0xce')],'as':_0x9565('0xce')}]});})[_0x9565('0x32')](handleEntityNotFound(_0x1afe2f,null))[_0x9565('0x32')](function(_0x3935ef){if(_0x3935ef&&_0x3935ef[_0x9565('0x9c')]){_0x5be9cb=_0x3935ef;var _0x18b68b=_[_0x9565('0x17')](_0x5b8b55[_0x9565('0x59')],{'firstName':_0x5b8b55['body']['from'],'phone':_0x5b8b55['body'][_0x9565('0x95')],'ListId':_0x3935ef['ListId']});_0x18b68b[_0x5b8b55['body'][_0x9565('0xcb')]]=_0x5b8b55[_0x9565('0x59')][_0x9565('0x95')];return db['CmContact']['findOrCreate']({'where':_0xc79bc7,'defaults':_0x18b68b});}})[_0x9565('0xb8')](function(_0xc24a31){if(_0xc24a31){_0x173ac1=_0xc24a31;var _0x37ce36=fs[_0x9565('0xcf')](path[_0x9565('0x78')](config['root'],'server/files/templates/chatOfflineMessage.ejs'),'utf8');var _0x35adba=ejs[_0x9565('0xd0')](_0x37ce36,{'body':_[_0x9565('0xd1')](_0x5b8b55[_0x9565('0x59')][_0x9565('0x59')]),'bodyTitle':_0x5be9cb['offlineMessageBody']});return db[_0x9565('0xd2')][_0x9565('0x58')]({'body':_0x35adba,'ContactId':_0xc24a31['id'],'ChatWebsiteId':_0x5be9cb['id']});}})['then'](function(_0x11d82d){_0x30258f=_0x11d82d;if(_0x1e1c0b['length']){var _0x32f24a=_0x1e1c0b[_0x9565('0x3d')](function(_0x185826){return{'name':_0x185826[_0x9565('0xd3')],'basename':_0x185826[_0x9565('0x75')],'type':_0x185826['mimetype'],'ChatOfflineMessageId':_0x11d82d['id']};});_0x39be12=_0x32f24a['map'](_0x5741d0=>{var _0x457359={'filename':_0x5741d0[_0x9565('0x38')],'path':path[_0x9565('0x78')](config[_0x9565('0x7e')],_0x9565('0xd4'),_0x9565('0xd5'),_0x9565('0xd6'),'offline-chat',_0x5741d0[_0x9565('0xd7')])};return _0x457359;});if(!_0x5be9cb['openNewInteraction']){return db[_0x9565('0xd8')]['transaction'](function(_0x524bc7){return db[_0x9565('0xd9')][_0x9565('0xda')](_0x32f24a,{'transaction':_0x524bc7});});}}})[_0x9565('0x32')](function(){if(_0x30258f){_0xfae4c1=_0x30258f;return db[_0x9565('0xce')][_0x9565('0x68')]({'where':{'active':!![]},'include':[{'model':db[_0x9565('0xdb')],'as':_0x9565('0xdc'),'raw':!![]}]});}})[_0x9565('0x32')](function(_0x5658ce){if(_0x5658ce&&_0x5658ce['Smtp']&&_0x5be9cb['forwardOffline']&&_0x5be9cb['forwardOfflineAddress']){var _0x16565d={'tls':{'rejectUnauthorized':![]}};if(_0x5658ce[_0x9565('0xdc')][_0x9565('0xdd')]){_0x16565d[_0x9565('0xdd')]=_0x5658ce[_0x9565('0xdc')]['service'];}else{_0x16565d[_0x9565('0xde')]=_0x5658ce['Smtp'][_0x9565('0xde')];_0x16565d['port']=_0x5658ce[_0x9565('0xdc')]['port'];_0x16565d['secure']=_0x5658ce[_0x9565('0xdc')][_0x9565('0xdf')];}if(_0x5658ce['Smtp'][_0x9565('0xe0')]){_0x16565d[_0x9565('0xe1')]={'user':_0x5658ce[_0x9565('0xdc')][_0x9565('0x5a')],'pass':_0x5658ce[_0x9565('0xdc')][_0x9565('0xe2')]};}return respondWithRpcPromise(_0x9565('0xe3'),_0x9565('0xe4'),{'account':_0x16565d,'message':{'from':util[_0x9565('0xad')]('\x22%s\x22\x20<%s>',_0x5658ce[_0x9565('0x38')],_0x5658ce[_0x9565('0xe5')]||_0x5658ce[_0x9565('0xdc')][_0x9565('0x5a')]),'to':_0x5be9cb['forwardOfflineAddress'],'subject':_0x5be9cb[_0x9565('0xe6')],'html':_0xfae4c1[_0x9565('0x59')],'attachments':_0x39be12}},client9003)[_0x9565('0x32')](function(){return _0xfae4c1;})[_0x9565('0x28')](function(_0x37945a){console[_0x9565('0x23')](_0x37945a);});}})[_0x9565('0x32')](function(){if(_0x5be9cb&&_0x5be9cb[_0x9565('0xe7')]&&_0x5be9cb['MailAccountId']){var _0x3545cc=[];if(_0x1e1c0b[_0x9565('0x49')]){_0x3545cc=_0x1e1c0b[_0x9565('0x3d')](function(_0x3a8aeb){return{'name':_0x3a8aeb[_0x9565('0xd3')],'basename':_0x3a8aeb[_0x9565('0x75')],'type':_0x3a8aeb[_0x9565('0xe8')],'ChatOfflineMessageId':_0x30258f['id']};});}var _0x334c24;if(!_[_0x9565('0x7c')](_0x5be9cb[_0x9565('0xe9')])){var _0xe977e0=_[_0x9565('0x3d')](_0x5b8b55['body'],function(_0x175b92){return _0x175b92;});var _0x3df5c0=_[_0x9565('0xea')](_0xe977e0)[0x0];var _0x165993=_[_0x9565('0xeb')](_0x3df5c0,function(_0x3a04e1){return _0x3a04e1;});_0x334c24=_0x165993[0x1][_0x5be9cb[_0x9565('0xe9')]];}var _0x3ccf96={'from':_0x173ac1[_0x9565('0xe5')],'firstName':_0x173ac1[_0x9565('0xb9')],'lastName':_0x173ac1[_0x9565('0xba')],'mapKey':'email','message':{'from':_0x173ac1[_0x9565('0xe5')],'to':_0x5be9cb[_0x9565('0xce')][_0x9565('0xe5')],'cc':'','subject':_[_0x9565('0x7c')](_0x334c24)?_0x5be9cb[_0x9565('0xe6')]:_0x334c24,'messageId':'','sentAt':new Date(),'attach':_0x3545cc['length'],'attachments':_0x3545cc,'originChannel':_0x9565('0xec'),'ChatWebsiteId':_0x5be9cb['id'],'ChatOfflineMessageId':_0xfae4c1['id'],'originTo':_0x5be9cb[_0x9565('0xce')][_0x9565('0xe5')]},'body':_0xfae4c1[_0x9565('0x59')]};var _0x53965b={'account':{'id':_0x5be9cb[_0x9565('0xed')]},'body':_0x3ccf96,'log':'NotifyMailAccount'};return respondWithRpcPromise(_0x9565('0xee'),'notifyMail',_0x53965b,client9001)[_0x9565('0x32')](function(){return _0xfae4c1;})[_0x9565('0x28')](function(_0xb4ccc1){console[_0x9565('0x23')](_0xb4ccc1);});}return;})[_0x9565('0x32')](function(){if(_0xfae4c1){return _0xfae4c1;}})['then'](respondWithResult(_0x1afe2f,null))[_0x9565('0x28')](function(_0xb584e4){console['error']('catch',_0xb584e4);for(var _0x504ce5 of _0x1e1c0b){var _0x33c723=path[_0x9565('0x78')](config['root'],_0x9565('0xd4'),'files',_0x9565('0xd6'),_0x9565('0xef'),_0x504ce5[_0x9565('0x75')]);fs_extra[_0x9565('0xf0')](_0x33c723)[_0x9565('0x28')](function(_0x33cfba){console[_0x9565('0x23')](_0x9565('0xf1'),_0x33c723,_0x33cfba);});}});};exports[_0x9565('0xf2')]=function(_0x4b3e79,_0x455bee,_0x46c6ab){return db['ChatInteraction'][_0x9565('0x5e')]({'where':{'id':_0x4b3e79['params']['id']}})[_0x9565('0x32')](handleEntityNotFound(_0x455bee,null))[_0x9565('0x32')](function(_0x4a6f8){if(_0x4a6f8){return _0x4a6f8[_0x9565('0xf2')](_0x4b3e79['body'][_0x9565('0x6a')],_[_0x9565('0xf3')](_0x4b3e79[_0x9565('0x59')],[_0x9565('0x6a'),'id'])||{});}})[_0x9565('0x32')](respondWithResult(_0x455bee,null))[_0x9565('0x28')](handleError(_0x455bee,null));};exports[_0x9565('0xf4')]=function(_0x12b328,_0x45b1a0,_0x4b07b7){var _0x2b9df9={'raw':![],'where':{}};var _0x1313cd={};var _0x5cc241={'count':0x0,'rows':[]};return db[_0x9565('0x3e')][_0x9565('0x68')]({'where':{'id':_0x12b328[_0x9565('0x54')]['id']}})[_0x9565('0x32')](handleEntityNotFound(_0x45b1a0,null))[_0x9565('0x32')](function(_0x90a066){if(_0x90a066){_0x1313cd[_0x9565('0x43')]=_[_0x9565('0x55')](db['ChatInteraction'][_0x9565('0x3f')]);_0x1313cd[_0x9565('0x44')]=_[_0x9565('0x55')](_0x12b328['query']);_0x1313cd['filters']=_[_0x9565('0x46')](_0x1313cd[_0x9565('0x43')],_0x1313cd['query']);_0x2b9df9['attributes']=_[_0x9565('0x46')](_0x1313cd['model'],qs[_0x9565('0x48')](_0x12b328[_0x9565('0x44')][_0x9565('0x48')]));_0x2b9df9['attributes']=_0x2b9df9[_0x9565('0x47')]['length']?_0x2b9df9[_0x9565('0x47')]:_0x1313cd[_0x9565('0x43')];if(!_0x12b328['query'][_0x9565('0xf5')](_0x9565('0x6d'))){_0x2b9df9[_0x9565('0x2c')]=qs[_0x9565('0x2c')](_0x12b328[_0x9565('0x44')]['limit']);_0x2b9df9[_0x9565('0x2f')]=qs[_0x9565('0x2f')](_0x12b328[_0x9565('0x44')][_0x9565('0x2f')]);}_0x2b9df9['order']=qs[_0x9565('0x4a')](_0x12b328[_0x9565('0x44')][_0x9565('0x4a')]);_0x2b9df9['where']=qs['filters'](_[_0x9565('0x4b')](_0x12b328[_0x9565('0x44')],_0x1313cd[_0x9565('0x45')]));_0x2b9df9[_0x9565('0x4d')][_0x9565('0x65')]=_0x90a066['id'];if(_0x12b328[_0x9565('0x44')][_0x9565('0x4c')]){_0x2b9df9[_0x9565('0x4d')]=_[_0x9565('0x4e')](_0x2b9df9[_0x9565('0x4d')],{'$or':_[_0x9565('0x3d')](_0x2b9df9[_0x9565('0x47')],function(_0x10af6f){var _0x35a0e0={};_0x35a0e0[_0x10af6f]={'$like':'%'+_0x12b328[_0x9565('0x44')]['filter']+'%'};return _0x35a0e0;})});}_0x2b9df9=_[_0x9565('0x4e')]({},_0x2b9df9,_0x12b328[_0x9565('0x57')]);return db[_0x9565('0xb4')][_0x9565('0x2e')]({'where':_0x2b9df9[_0x9565('0x4d')]})[_0x9565('0x32')](function(_0xa163ba){_0x5cc241[_0x9565('0x2e')]=_0xa163ba;if(_0x12b328['query'][_0x9565('0x56')]){_0x2b9df9[_0x9565('0x50')]=[{'model':db[_0x9565('0x8c')],'as':_0x9565('0xf6'),'required':![]},{'model':db[_0x9565('0xf7')],'as':'Owner','attributes':[_0x9565('0x38'),_0x9565('0xf8'),_0x9565('0xf9')],'required':![]},{'model':db[_0x9565('0xfa')],'as':_0x9565('0xfb'),'attributes':['id',_0x9565('0x38'),_0x9565('0xfc')],'where':_0x12b328[_0x9565('0x44')]['tag']?{'id':_0x12b328['query'][_0x9565('0xfd')]}:undefined,'required':_0x12b328[_0x9565('0x44')][_0x9565('0xfd')]?!![]:![]}];}return db[_0x9565('0xb4')][_0x9565('0x51')](_0x2b9df9);})[_0x9565('0x32')](function(_0x415baa){_0x5cc241[_0x9565('0x52')]=_0x415baa;return _0x5cc241;});}})[_0x9565('0x32')](respondWithFilteredResult(_0x45b1a0,_0x2b9df9))[_0x9565('0x28')](handleError(_0x45b1a0,null));};function iftimePromise(_0x2d7023,_0x49050c){return respondWithRpcPromise(_0x9565('0xfe'),'getSnippet',{'command':_0x49050c[_0x9565('0xff')]?util[_0x9565('0xad')](_0x9565('0x100'),_0x2d7023[_0x9565('0x101')],_0x49050c[_0x9565('0xff')]):util[_0x9565('0xad')](_0x9565('0x102'),_0x2d7023[_0x9565('0x101')])},client9002)[_0x9565('0x32')](function(_0x1c02a1){var _0x295a5a=_0x1c02a1&&_0x1c02a1['indexOf']('true')>=0x0?!![]:![];logger[_0x9565('0x1e')]('[%s][INTERVAL][%s]\x20%s\x20%s\x20(%s)',_0x49050c['id'],_0x2d7023['id'],_0x2d7023['interval'],_0x295a5a?'ONLINE':'OFFLINE',_0x49050c['timezone']?_0x49050c[_0x9565('0xff')]:_0x9565('0x103'));return _0x295a5a;})[_0x9565('0x28')](function(_0x481d5e){logger['error'](_0x9565('0x104'),_0x49050c['id'],_0x2d7023['id'],_0x2d7023[_0x9565('0x101')],util['inspect'](_0x481d5e,{'showHidden':![],'depth':null}),_0x49050c['timezone']?_0x49050c[_0x9565('0xff')]:_0x9565('0x103'));return![];});}exports['getSnippet']=function(_0x1a3c5e,_0x1bb929,_0x2c2f82){var _0x15fcef=0x0;var _0x614b49=0x0;var _0x5d675a=![];var _0x2af40c;var _0x835d5b;return db[_0x9565('0x3e')][_0x9565('0x5e')]({'where':{'id':_0x1a3c5e[_0x9565('0x54')]['id']},'include':[{'model':db[_0x9565('0x105')],'as':_0x9565('0x105'),'include':[{'model':db['Interval'],'as':'Intervals','attributes':['id',_0x9565('0x101')],'raw':!![]}]}]})[_0x9565('0x32')](handleEntityNotFound(_0x1bb929,null))[_0x9565('0x32')](function(_0x146252){if(_0x146252){_0x2af40c=_0x146252;return _0x146252[_0x9565('0x106')]({'raw':!![]});}})[_0x9565('0x32')](function(_0x4725b9){if(_0x2af40c){if(_0x4725b9){_0x835d5b=_0x4725b9;}}return require('../../config/license/util')[_0x9565('0x7a')]();})['then'](function(_0x385955){if(_0x385955){_0x614b49=_0x385955[_0x9565('0x107')];_0x5d675a=_0x385955['custom'];}})[_0x9565('0x32')](function(){return db['ChatInteraction']['count']({'where':{'closed':![]}});})[_0x9565('0x32')](function(_0xe7ed46){_0x15fcef=_0xe7ed46;if(_0x614b49&&_0xe7ed46>_0x614b49){return db[_0x9565('0x108')][_0x9565('0x68')]({'where':{'id':0x1}})[_0x9565('0x32')](function(_0x5d26d1){if(_0x5d26d1){_0x5d26d1['increment']('chatLicenseExceeded');}});}})['then'](function(){if(_0x2af40c[_0x9565('0x105')]&&_0x2af40c[_0x9565('0x105')][_0x9565('0x109')]){var _0x1e2234=[];for(var _0xb9bddd=0x0;_0xb9bddd<_0x2af40c[_0x9565('0x105')]['Intervals'][_0x9565('0x49')];_0xb9bddd++){var _0x25f213=_0x2af40c[_0x9565('0x105')][_0x9565('0x109')][_0xb9bddd][_0x9565('0x34')]({'plain':!![]});_0x1e2234[_0x9565('0x10a')](iftimePromise(_0x25f213,_0x2af40c));}return BPromise['all'](_0x1e2234)[_0x9565('0x32')](function(_0x337350){return _[_0x9565('0x10b')](_0x337350);});}else{return!![];}})[_0x9565('0x32')](function(_0x12659c){var _0x5bd904=fs[_0x9565('0xcf')](path[_0x9565('0x78')](config[_0x9565('0x7e')],_0x9565('0x10c')),_0x9565('0x10d'));var _0x2b119f={'remote':_0x2af40c['remote'],'query':querystring[_0x9565('0x22')](_['merge'](_0x2af40c[_0x9565('0x34')]({'plain':!![]}),{'customerIp':_0x1a3c5e[_0x9565('0xa5')][_0x9565('0xa7')]||_0x1a3c5e['headers'][_0x9565('0x10e')]||_0x1a3c5e[_0x9565('0x10f')][_0x9565('0x110')]||_0x1a3c5e['ip'],'referer':_0x1a3c5e['headers']['referer'],'openedInteractions':_0x15fcef,'maxInteractions':_0x614b49,'virtual':_0x5d675a[_0x9565('0x107')],'online':_0x12659c,'custom':_0x5d675a}))['replace'](/'/g,'\x5c\x27')};_0x1bb929[_0x9565('0x39')](ejs['render'](Mustache['render'](_0x5bd904,_0x2b119f),{'proactiveActions':_0x835d5b,'alignment':_0x2af40c['alignment'],'verticalAlignment':_0x2af40c[_0x9565('0x111')],'div_color':_0x2af40c[_0x9565('0xfc')],'text_color':_0x2af40c[_0x9565('0x112')],'button_color':_0x2af40c[_0x9565('0x113')],'background_color':_0x2af40c[_0x9565('0x114')]}));})[_0x9565('0x28')](handleError(_0x1bb929,null));};exports[_0x9565('0x115')]=function(_0x4e14bc,_0xe4ed17,_0x586624){return db['ChatWebsite']['findOne']({'where':{'id':_0x4e14bc[_0x9565('0x54')]['id']}})['then'](handleEntityNotFound(_0xe4ed17,null))[_0x9565('0x32')](function(_0x5e4942){if(_0x5e4942){return db['sequelize']['transaction'](function(_0x42de14){return db[_0x9565('0x116')][_0x9565('0x33')]({'where':{'ChatWebsiteId':_0x4e14bc[_0x9565('0x54')]['id']},'transaction':_0x42de14})['then'](function(_0x153a68){var _0x13cfdd=_['map'](_0x4e14bc['body'],function(_0x14d5d4){_0x14d5d4[_0x9565('0x65')]=_0x4e14bc[_0x9565('0x54')]['id'];return _0x14d5d4;});return db[_0x9565('0x116')][_0x9565('0xda')](_0x13cfdd,{'transaction':_0x42de14});});})[_0x9565('0x32')](function(){return db[_0x9565('0x116')][_0x9565('0x117')]({'where':{'ChatWebsiteId':_0x4e14bc[_0x9565('0x54')]['id']},'order':'priority'});});}})[_0x9565('0x32')](respondWithResult(_0xe4ed17,null))[_0x9565('0x28')](handleError(_0xe4ed17,null));};exports[_0x9565('0x118')]=function(_0x4d5d58,_0x134af9,_0x3fba45){var _0x5f5b35={};var _0x18d649={};var _0x7ffd94;var _0x2118fc;return db['ChatWebsite'][_0x9565('0x68')]({'where':{'id':_0x4d5d58[_0x9565('0x54')]['id']}})[_0x9565('0x32')](handleEntityNotFound(_0x134af9,null))[_0x9565('0x32')](function(_0x345c67){if(_0x345c67){_0x7ffd94=_0x345c67;_0x18d649[_0x9565('0x43')]=_[_0x9565('0x55')](db[_0x9565('0x116')][_0x9565('0x3f')]);_0x18d649[_0x9565('0x44')]=_[_0x9565('0x55')](_0x4d5d58['query']);_0x18d649[_0x9565('0x45')]=_['intersection'](_0x18d649[_0x9565('0x43')],_0x18d649[_0x9565('0x44')]);_0x5f5b35[_0x9565('0x47')]=_[_0x9565('0x46')](_0x18d649[_0x9565('0x43')],qs['fields'](_0x4d5d58[_0x9565('0x44')][_0x9565('0x48')]));_0x5f5b35[_0x9565('0x47')]=_0x5f5b35[_0x9565('0x47')][_0x9565('0x49')]?_0x5f5b35[_0x9565('0x47')]:_0x18d649[_0x9565('0x43')];_0x5f5b35[_0x9565('0x6e')]=qs[_0x9565('0x4a')](_0x4d5d58[_0x9565('0x44')]['sort']);_0x5f5b35[_0x9565('0x4d')]=qs[_0x9565('0x45')](_[_0x9565('0x4b')](_0x4d5d58[_0x9565('0x44')],_0x18d649[_0x9565('0x45')]));if(_0x4d5d58[_0x9565('0x44')][_0x9565('0x4c')]){_0x5f5b35[_0x9565('0x4d')]=_[_0x9565('0x4e')](_0x5f5b35[_0x9565('0x4d')],{'$or':_[_0x9565('0x3d')](_0x5f5b35[_0x9565('0x47')],function(_0x249524){var _0xa55ac8={};_0xa55ac8[_0x249524]={'$like':'%'+_0x4d5d58[_0x9565('0x44')]['filter']+'%'};return _0xa55ac8;})});}_0x5f5b35=_[_0x9565('0x4e')]({},_0x5f5b35,_0x4d5d58[_0x9565('0x57')]);return _0x7ffd94['getApplications'](_0x5f5b35);}})['then'](function(_0x3ed771){if(_0x3ed771){_0x2118fc=_0x3ed771[_0x9565('0x49')];if(!_0x4d5d58[_0x9565('0x44')]['hasOwnProperty']('nolimit')){_0x5f5b35[_0x9565('0x2c')]=qs[_0x9565('0x2c')](_0x4d5d58['query'][_0x9565('0x2c')]);_0x5f5b35[_0x9565('0x2f')]=qs[_0x9565('0x2f')](_0x4d5d58[_0x9565('0x44')][_0x9565('0x2f')]);}return _0x7ffd94[_0x9565('0x118')](_0x5f5b35);}})['then'](function(_0xbe7ab7){if(_0xbe7ab7){return _0xbe7ab7?{'count':_0x2118fc,'rows':_0xbe7ab7}:null;}})[_0x9565('0x32')](respondWithResult(_0x134af9,null))['catch'](handleError(_0x134af9,null));};exports[_0x9565('0x119')]=function(_0xf985cc,_0x160f45,_0x49a847){return db[_0x9565('0x11a')][_0x9565('0x5e')]({'where':{'id':_0xf985cc[_0x9565('0x54')]['id']}})[_0x9565('0x32')](handleEntityNotFound(_0x160f45,null))[_0x9565('0x32')](function(_0x46689e){if(_0x46689e){return _0x46689e[_0x9565('0x119')](_0xf985cc[_0x9565('0x59')][_0x9565('0x6a')],_[_0x9565('0xf3')](_0xf985cc[_0x9565('0x59')],['ids','id'])||{});}})[_0x9565('0x32')](respondWithResult(_0x160f45,null))[_0x9565('0x28')](handleError(_0x160f45,null));};exports['getProactiveActions']=function(_0x5357c7,_0x11b1d5,_0x147626){var _0x5f2d47={};var _0x47fa3b={};var _0xcfe6ee;var _0x44359a;return db[_0x9565('0x3e')][_0x9565('0x68')]({'where':{'id':_0x5357c7[_0x9565('0x54')]['id']}})[_0x9565('0x32')](handleEntityNotFound(_0x11b1d5,null))[_0x9565('0x32')](function(_0x4f459b){if(_0x4f459b){_0xcfe6ee=_0x4f459b;_0x47fa3b[_0x9565('0x43')]=_['keys'](db[_0x9565('0x11b')][_0x9565('0x3f')]);_0x47fa3b[_0x9565('0x44')]=_[_0x9565('0x55')](_0x5357c7[_0x9565('0x44')]);_0x47fa3b['filters']=_[_0x9565('0x46')](_0x47fa3b['model'],_0x47fa3b[_0x9565('0x44')]);_0x5f2d47[_0x9565('0x47')]=_['intersection'](_0x47fa3b['model'],qs[_0x9565('0x48')](_0x5357c7[_0x9565('0x44')][_0x9565('0x48')]));_0x5f2d47[_0x9565('0x47')]=_0x5f2d47[_0x9565('0x47')][_0x9565('0x49')]?_0x5f2d47[_0x9565('0x47')]:_0x47fa3b[_0x9565('0x43')];_0x5f2d47[_0x9565('0x6e')]=qs[_0x9565('0x4a')](_0x5357c7[_0x9565('0x44')][_0x9565('0x4a')]);_0x5f2d47[_0x9565('0x4d')]=qs[_0x9565('0x45')](_[_0x9565('0x4b')](_0x5357c7[_0x9565('0x44')],_0x47fa3b['filters']));if(_0x5357c7[_0x9565('0x44')][_0x9565('0x4c')]){_0x5f2d47[_0x9565('0x4d')]=_[_0x9565('0x4e')](_0x5f2d47[_0x9565('0x4d')],{'$or':_[_0x9565('0x3d')](_0x5f2d47[_0x9565('0x47')],function(_0x6561b7){var _0x336fb8={};_0x336fb8[_0x6561b7]={'$like':'%'+_0x5357c7[_0x9565('0x44')][_0x9565('0x4c')]+'%'};return _0x336fb8;})});}_0x5f2d47=_[_0x9565('0x4e')]({},_0x5f2d47,_0x5357c7[_0x9565('0x57')]);return _0xcfe6ee[_0x9565('0x106')](_0x5f2d47);}})[_0x9565('0x32')](function(_0x31e154){if(_0x31e154){_0x44359a=_0x31e154[_0x9565('0x49')];if(!_0x5357c7[_0x9565('0x44')][_0x9565('0xf5')](_0x9565('0x6d'))){_0x5f2d47[_0x9565('0x2c')]=qs[_0x9565('0x2c')](_0x5357c7['query']['limit']);_0x5f2d47[_0x9565('0x2f')]=qs[_0x9565('0x2f')](_0x5357c7['query']['offset']);}return _0xcfe6ee[_0x9565('0x106')](_0x5f2d47);}})[_0x9565('0x32')](function(_0x2860ee){if(_0x2860ee){return _0x2860ee?{'count':_0x44359a,'rows':_0x2860ee}:null;}})['then'](respondWithResult(_0x11b1d5,null))['catch'](handleError(_0x11b1d5,null));};exports[_0x9565('0x11c')]=function(_0x733692,_0x5c65e4,_0x29b7d2){var _0x28e854=_0x733692[_0x9565('0x44')]['online']===_0x9565('0x11d')?'offlineForm':_0x9565('0x11e');return db[_0x9565('0x3e')]['find']({'attributes':['id',_0x28e854],'where':{'id':_0x733692['params']['id']}})['then'](handleEntityNotFound(_0x5c65e4,null))[_0x9565('0x32')](function(_0x437fab){if(_0x437fab){var _0x324511=_0x437fab[_0x28e854];var _0x198a1d=_0x324511&&_0x324511[_0x9565('0x11f')]?_0x324511['items']:[];_0x5c65e4[_0x9565('0x39')]({'fromKey':_['isNil'](_0x324511[_0x9565('0x120')])?undefined:_0x324511['fromKey'],'count':_0x198a1d[_0x9565('0x49')],'rows':_0x198a1d});}})[_0x9565('0x28')](handleError(_0x5c65e4,null));};exports['getOfflineMessages']=function(_0x5b001a,_0x393436,_0x494548){var _0x35addb={'raw':![],'where':{}};var _0x1d9bbd={};var _0x226df7={'count':0x0,'rows':[]};return db[_0x9565('0x3e')]['findOne']({'where':{'id':_0x5b001a[_0x9565('0x54')]['id']}})['then'](handleEntityNotFound(_0x393436,null))[_0x9565('0x32')](function(_0x2084f8){if(_0x2084f8){_0x1d9bbd[_0x9565('0x43')]=_['keys'](db[_0x9565('0xd2')][_0x9565('0x3f')]);_0x1d9bbd[_0x9565('0x44')]=_[_0x9565('0x55')](_0x5b001a[_0x9565('0x44')]);_0x1d9bbd[_0x9565('0x45')]=_['intersection'](_0x1d9bbd[_0x9565('0x43')],_0x1d9bbd[_0x9565('0x44')]);_0x35addb[_0x9565('0x47')]=_['intersection'](_0x1d9bbd[_0x9565('0x43')],qs[_0x9565('0x48')](_0x5b001a[_0x9565('0x44')][_0x9565('0x48')]));_0x35addb[_0x9565('0x47')]=_0x35addb['attributes'][_0x9565('0x49')]?_0x35addb[_0x9565('0x47')]:_0x1d9bbd['model'];if(!_0x5b001a[_0x9565('0x44')][_0x9565('0xf5')](_0x9565('0x6d'))){_0x35addb[_0x9565('0x2c')]=qs[_0x9565('0x2c')](_0x5b001a['query']['limit']);_0x35addb[_0x9565('0x2f')]=qs[_0x9565('0x2f')](_0x5b001a['query'][_0x9565('0x2f')]);}_0x35addb[_0x9565('0x6e')]=qs['sort'](_0x5b001a[_0x9565('0x44')][_0x9565('0x4a')]);_0x35addb[_0x9565('0x4d')]=qs[_0x9565('0x45')](_['pick'](_0x5b001a['query'],_0x1d9bbd['filters']));_0x35addb[_0x9565('0x4d')][_0x9565('0x65')]=_0x2084f8['id'];if(_0x5b001a[_0x9565('0x44')][_0x9565('0x4c')]){_0x35addb[_0x9565('0x4d')]=_['merge'](_0x35addb[_0x9565('0x4d')],{'$or':_[_0x9565('0x3d')](_0x35addb[_0x9565('0x47')],function(_0x2b5e61){var _0x4534af={};_0x4534af[_0x2b5e61]={'$like':'%'+_0x5b001a['query'][_0x9565('0x4c')]+'%'};return _0x4534af;})});}_0x35addb=_[_0x9565('0x4e')]({},_0x35addb,_0x5b001a[_0x9565('0x57')]);return db[_0x9565('0xd2')][_0x9565('0x2e')]({'where':_0x35addb[_0x9565('0x4d')]})[_0x9565('0x32')](function(_0x5684fd){_0x226df7[_0x9565('0x2e')]=_0x5684fd;if(_0x5b001a['query'][_0x9565('0x56')]){_0x35addb[_0x9565('0x50')]=[{'all':!![]}];}else{_0x35addb['include']=[{'model':db[_0x9565('0x8c')],'as':'Contact','required':![]},{'model':db[_0x9565('0xd9')],'as':_0x9565('0x121'),'required':![]}];}return db['ChatOfflineMessage']['findAll'](_0x35addb);})[_0x9565('0x32')](function(_0x4f32d8){_0x226df7[_0x9565('0x52')]=_0x4f32d8;return _0x226df7;});}})['then'](respondWithFilteredResult(_0x393436,_0x35addb))[_0x9565('0x28')](handleError(_0x393436,null));};exports['addAgents']=function(_0x4faa26,_0x16a911,_0x496b5c){return db[_0x9565('0x3e')][_0x9565('0x5e')]({'where':{'id':_0x4faa26[_0x9565('0x54')]['id']}})[_0x9565('0x32')](handleEntityNotFound(_0x16a911,null))[_0x9565('0x32')](function(_0x5bf885){if(_0x5bf885){return _0x5bf885[_0x9565('0x122')](_0x4faa26[_0x9565('0x59')][_0x9565('0x6a')],_['omit'](_0x4faa26[_0x9565('0x59')],[_0x9565('0x6a'),'id'])||{})[_0x9565('0xb8')](function(_0x19bf85){for(var _0x32863c=0x0;_0x32863c<_0x4faa26[_0x9565('0x59')][_0x9565('0x6a')][_0x9565('0x49')];_0x32863c+=0x1){socket['emit'](_0x9565('0x123'),{'UserId':Number(_0x4faa26[_0x9565('0x59')][_0x9565('0x6a')][_0x32863c]),'ChatWebsiteId':Number(_0x4faa26[_0x9565('0x54')]['id'])});}return _0x19bf85;});}})['then'](respondWithResult(_0x16a911,null))[_0x9565('0x28')](handleError(_0x16a911,null));};exports['removeAgents']=function(_0x127059,_0x47e6ec,_0x1f5211){return db[_0x9565('0x3e')][_0x9565('0x5e')]({'where':{'id':_0x127059[_0x9565('0x54')]['id']}})[_0x9565('0x32')](handleEntityNotFound(_0x47e6ec,null))[_0x9565('0x32')](function(_0x516b62){if(_0x516b62){return _0x516b62[_0x9565('0x124')](_0x127059[_0x9565('0x44')][_0x9565('0x6a')])['then'](function(){if(_[_0x9565('0x125')](_0x127059[_0x9565('0x44')][_0x9565('0x6a')])){for(var _0x10a3fb=0x0;_0x10a3fb<_0x127059[_0x9565('0x44')]['ids'][_0x9565('0x49')];_0x10a3fb+=0x1){socket[_0x9565('0x126')](_0x9565('0x127'),{'UserId':Number(_0x127059[_0x9565('0x44')][_0x9565('0x6a')][_0x10a3fb]),'ChatWebsiteId':Number(_0x127059[_0x9565('0x54')]['id'])});}}else{socket[_0x9565('0x126')](_0x9565('0x127'),{'UserId':Number(_0x127059[_0x9565('0x44')][_0x9565('0x6a')]),'ChatWebsiteId':Number(_0x127059['params']['id'])});}});}})[_0x9565('0x32')](respondWithStatusCode(_0x47e6ec,null))[_0x9565('0x28')](handleError(_0x47e6ec,null));};exports[_0x9565('0x128')]=function(_0x15e5c8,_0x3822aa,_0x63def3){var _0x170b82={};var _0x17ea0c={};var _0x25ba87;var _0x22270f;return db[_0x9565('0x3e')][_0x9565('0x68')]({'where':{'id':_0x15e5c8[_0x9565('0x54')]['id']}})[_0x9565('0x32')](handleEntityNotFound(_0x3822aa,null))[_0x9565('0x32')](function(_0x3a7831){if(_0x3a7831){_0x25ba87=_0x3a7831;_0x17ea0c[_0x9565('0x43')]=_[_0x9565('0x55')](db[_0x9565('0xf7')]['rawAttributes']);_0x17ea0c[_0x9565('0x44')]=_[_0x9565('0x55')](_0x15e5c8[_0x9565('0x44')]);_0x17ea0c['filters']=_[_0x9565('0x46')](_0x17ea0c[_0x9565('0x43')],_0x17ea0c[_0x9565('0x44')]);_0x170b82['attributes']=_[_0x9565('0x46')](_0x17ea0c[_0x9565('0x43')],qs[_0x9565('0x48')](_0x15e5c8[_0x9565('0x44')][_0x9565('0x48')]));_0x170b82[_0x9565('0x47')]=_0x170b82[_0x9565('0x47')][_0x9565('0x49')]?_0x170b82[_0x9565('0x47')]:_0x17ea0c[_0x9565('0x43')];_0x170b82[_0x9565('0x6e')]=qs[_0x9565('0x4a')](_0x15e5c8[_0x9565('0x44')][_0x9565('0x4a')]);_0x170b82[_0x9565('0x4d')]=qs[_0x9565('0x45')](_[_0x9565('0x4b')](_0x15e5c8[_0x9565('0x44')],_0x17ea0c[_0x9565('0x45')]));if(_0x15e5c8[_0x9565('0x44')][_0x9565('0x4c')]){_0x170b82['where']=_[_0x9565('0x4e')](_0x170b82['where'],{'$or':_['map'](_0x170b82['attributes'],function(_0x4bd444){var _0x48ee46={};_0x48ee46[_0x4bd444]={'$like':'%'+_0x15e5c8[_0x9565('0x44')][_0x9565('0x4c')]+'%'};return _0x48ee46;})});}_0x170b82=_[_0x9565('0x4e')]({},_0x170b82,_0x15e5c8[_0x9565('0x57')]);return _0x25ba87[_0x9565('0x128')](_0x170b82);}})[_0x9565('0x32')](function(_0x3453be){if(_0x3453be){_0x22270f=_0x3453be['length'];if(!_0x15e5c8['query']['hasOwnProperty'](_0x9565('0x6d'))){_0x170b82['limit']=qs[_0x9565('0x2c')](_0x15e5c8[_0x9565('0x44')][_0x9565('0x2c')]);_0x170b82[_0x9565('0x2f')]=qs['offset'](_0x15e5c8[_0x9565('0x44')][_0x9565('0x2f')]);}return _0x25ba87[_0x9565('0x128')](_0x170b82);}})[_0x9565('0x32')](function(_0x1094a8){if(_0x1094a8){return _0x1094a8?{'count':_0x22270f,'rows':_0x1094a8}:null;}})[_0x9565('0x32')](respondWithResult(_0x3822aa,null))[_0x9565('0x28')](handleError(_0x3822aa,null));};
\ No newline at end of file
index 41f0895..7fe724f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3c7b=['setMaxListeners','save','emit','hook','exports','events','../../mysqldb','ChatWebsite'];(function(_0x3159e8,_0x24deaf){var _0x2323aa=function(_0x5cf845){while(--_0x5cf845){_0x3159e8['push'](_0x3159e8['shift']());}};_0x2323aa(++_0x24deaf);}(_0x3c7b,0x11d));var _0xb3c7=function(_0x2367f2,_0x72caff){_0x2367f2=_0x2367f2-0x0;var _0x50310e=_0x3c7b[_0x2367f2];return _0x50310e;};'use strict';var EventEmitter=require(_0xb3c7('0x0'));var ChatWebsite=require(_0xb3c7('0x1'))['db'][_0xb3c7('0x2')];var ChatWebsiteEvents=new EventEmitter();ChatWebsiteEvents[_0xb3c7('0x3')](0x0);var events={'afterCreate':_0xb3c7('0x4'),'afterUpdate':'update','afterDestroy':'remove'};function emitEvent(_0x500bea){return function(_0x5b34ef,_0x234fe5,_0x44c399){ChatWebsiteEvents['emit'](_0x500bea+':'+_0x5b34ef['id'],_0x5b34ef);ChatWebsiteEvents[_0xb3c7('0x5')](_0x500bea,_0x5b34ef);_0x44c399(null);};}for(var e in events){if(events['hasOwnProperty'](e)){var event=events[e];ChatWebsite[_0xb3c7('0x6')](e,emitEvent(event));}}module[_0xb3c7('0x7')]=ChatWebsiteEvents;
\ No newline at end of file
+var _0x1061=['emit','hasOwnProperty','hook','events','save','update','remove'];(function(_0x55c00d,_0x520cb6){var _0x254a8f=function(_0x2b3378){while(--_0x2b3378){_0x55c00d['push'](_0x55c00d['shift']());}};_0x254a8f(++_0x520cb6);}(_0x1061,0x1b5));var _0x1106=function(_0x62a8d7,_0xd05a94){_0x62a8d7=_0x62a8d7-0x0;var _0x5477c6=_0x1061[_0x62a8d7];return _0x5477c6;};'use strict';var EventEmitter=require(_0x1106('0x0'));var ChatWebsite=require('../../mysqldb')['db']['ChatWebsite'];var ChatWebsiteEvents=new EventEmitter();ChatWebsiteEvents['setMaxListeners'](0x0);var events={'afterCreate':_0x1106('0x1'),'afterUpdate':_0x1106('0x2'),'afterDestroy':_0x1106('0x3')};function emitEvent(_0x222f76){return function(_0x1c1bae,_0x13fcfc,_0x75d67b){ChatWebsiteEvents[_0x1106('0x4')](_0x222f76+':'+_0x1c1bae['id'],_0x1c1bae);ChatWebsiteEvents['emit'](_0x222f76,_0x1c1bae);_0x75d67b(null);};}for(var e in events){if(events[_0x1106('0x5')](e)){var event=events[e];ChatWebsite[_0x1106('0x6')](e,emitEvent(event));}}module['exports']=ChatWebsiteEvents;
\ No newline at end of file
index eaf2350..e1a1e8b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc0a0=['exports','define','ChatWebsite','chat_websites','lodash','util','../../config/logger','api','moment','bluebird','path','rimraf','../../config/environment','./chatWebsite.attributes'];(function(_0x3e5086,_0x48f4a2){var _0xfeb102=function(_0x5a945f){while(--_0x5a945f){_0x3e5086['push'](_0x3e5086['shift']());}};_0xfeb102(++_0x48f4a2);}(_0xc0a0,0x162));var _0x0c0a=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0xc0a0[_0x3dd15e];return _0x231fd0;};'use strict';var _=require(_0x0c0a('0x0'));var util=require(_0x0c0a('0x1'));var logger=require(_0x0c0a('0x2'))(_0x0c0a('0x3'));var moment=require(_0x0c0a('0x4'));var BPromise=require(_0x0c0a('0x5'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x0c0a('0x6'));var rimraf=require(_0x0c0a('0x7'));var config=require(_0x0c0a('0x8'));var attributes=require(_0x0c0a('0x9'));module[_0x0c0a('0xa')]=function(_0x21282c,_0x4bcfda){return _0x21282c[_0x0c0a('0xb')](_0x0c0a('0xc'),attributes,{'tableName':_0x0c0a('0xd'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x5124=['ChatWebsite','chat_websites','lodash','util','../../config/logger','moment','rimraf','../../config/environment','./chatWebsite.attributes','exports'];(function(_0x1e527e,_0x250b65){var _0x53f774=function(_0x2149b3){while(--_0x2149b3){_0x1e527e['push'](_0x1e527e['shift']());}};_0x53f774(++_0x250b65);}(_0x5124,0x106));var _0x4512=function(_0x10335e,_0x1cb40d){_0x10335e=_0x10335e-0x0;var _0x310772=_0x5124[_0x10335e];return _0x310772;};'use strict';var _=require(_0x4512('0x0'));var util=require(_0x4512('0x1'));var logger=require(_0x4512('0x2'))('api');var moment=require(_0x4512('0x3'));var BPromise=require('bluebird');var rp=require('request-promise');var fs=require('fs');var path=require('path');var rimraf=require(_0x4512('0x4'));var config=require(_0x4512('0x5'));var attributes=require(_0x4512('0x6'));module[_0x4512('0x7')]=function(_0x5a9273,_0x18162d){return _0x5a9273['define'](_0x4512('0x8'),attributes,{'tableName':_0x4512('0x9'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 3f26dcc..aeda6e8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9509=['randomstring','ioredis','../../mysqldb','../../config/utils','rpc','client','http','redis','defaults','localhost','socket.io-emitter','register','request','info','ChatWebsite,\x20%s,\x20%s','request\x20sent','ChatWebsite,\x20%s,\x20%s,\x20%s','error','code','message','result','catch','util','bluebird'];(function(_0x365a0a,_0x5267f3){var _0x1202fb=function(_0x21f6b6){while(--_0x21f6b6){_0x365a0a['push'](_0x365a0a['shift']());}};_0x1202fb(++_0x5267f3);}(_0x9509,0x166));var _0x9950=function(_0x3b5c90,_0x4d4df0){_0x3b5c90=_0x3b5c90-0x0;var _0x44e934=_0x9509[_0x3b5c90];return _0x44e934;};'use strict';var _=require('lodash');var util=require(_0x9950('0x0'));var moment=require('moment');var BPromise=require(_0x9950('0x1'));var rs=require(_0x9950('0x2'));var fs=require('fs');var Redis=require(_0x9950('0x3'));var db=require(_0x9950('0x4'))['db'];var utils=require(_0x9950('0x5'));var logger=require('../../config/logger')(_0x9950('0x6'));var config=require('../../config/environment');var jayson=require('jayson/promise');var client=jayson[_0x9950('0x7')][_0x9950('0x8')]({'port':0x232a});config[_0x9950('0x9')]=_[_0x9950('0xa')](config[_0x9950('0x9')],{'host':_0x9950('0xb'),'port':0x18eb});var socket=require(_0x9950('0xc'))(new Redis(config['redis']));require('./chatWebsite.socket')[_0x9950('0xd')](socket);function respondWithRpcPromise(_0x318a8b,_0x57362e,_0x2509c8){return new BPromise(function(_0x5513cb,_0x536eac){return client[_0x9950('0xe')](_0x318a8b,_0x2509c8)['then'](function(_0x138031){logger[_0x9950('0xf')](_0x9950('0x10'),_0x57362e,_0x9950('0x11'));logger['debug'](_0x9950('0x12'),_0x57362e,_0x9950('0x11'),JSON['stringify'](_0x138031));if(_0x138031[_0x9950('0x13')]){if(_0x138031[_0x9950('0x13')][_0x9950('0x14')]===0x1f4){logger[_0x9950('0x13')](_0x9950('0x10'),_0x57362e,_0x138031[_0x9950('0x13')]['message']);return _0x536eac(_0x138031[_0x9950('0x13')][_0x9950('0x15')]);}logger[_0x9950('0x13')](_0x9950('0x10'),_0x57362e,_0x138031[_0x9950('0x13')][_0x9950('0x15')]);return _0x5513cb(_0x138031[_0x9950('0x13')][_0x9950('0x15')]);}else{logger[_0x9950('0xf')](_0x9950('0x10'),_0x57362e,_0x9950('0x11'));_0x5513cb(_0x138031[_0x9950('0x16')][_0x9950('0x15')]);}})[_0x9950('0x17')](function(_0x10a33a){logger[_0x9950('0x13')]('ChatWebsite,\x20%s,\x20%s',_0x57362e,_0x10a33a);_0x536eac(_0x10a33a);});});}
\ No newline at end of file
+var _0x22a0=['../../mysqldb','../../config/utils','../../config/logger','rpc','client','redis','defaults','socket.io-emitter','./chatWebsite.socket','request','then','debug','ChatWebsite,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','code','ChatWebsite,\x20%s,\x20%s','message','lodash','util','moment','bluebird','randomstring','ioredis'];(function(_0x44511e,_0x2242ba){var _0x243798=function(_0x29a312){while(--_0x29a312){_0x44511e['push'](_0x44511e['shift']());}};_0x243798(++_0x2242ba);}(_0x22a0,0x18a));var _0x022a=function(_0x5199b6,_0x405650){_0x5199b6=_0x5199b6-0x0;var _0x3f37e1=_0x22a0[_0x5199b6];return _0x3f37e1;};'use strict';var _=require(_0x022a('0x0'));var util=require(_0x022a('0x1'));var moment=require(_0x022a('0x2'));var BPromise=require(_0x022a('0x3'));var rs=require(_0x022a('0x4'));var fs=require('fs');var Redis=require(_0x022a('0x5'));var db=require(_0x022a('0x6'))['db'];var utils=require(_0x022a('0x7'));var logger=require(_0x022a('0x8'))(_0x022a('0x9'));var config=require('../../config/environment');var jayson=require('jayson/promise');var client=jayson[_0x022a('0xa')]['http']({'port':0x232a});config[_0x022a('0xb')]=_[_0x022a('0xc')](config[_0x022a('0xb')],{'host':'localhost','port':0x18eb});var socket=require(_0x022a('0xd'))(new Redis(config[_0x022a('0xb')]));require(_0x022a('0xe'))['register'](socket);function respondWithRpcPromise(_0x149851,_0x284045,_0x1ee4b2){return new BPromise(function(_0x57a172,_0xf145c2){return client[_0x022a('0xf')](_0x149851,_0x1ee4b2)[_0x022a('0x10')](function(_0x912cd3){logger['info']('ChatWebsite,\x20%s,\x20%s',_0x284045,'request\x20sent');logger[_0x022a('0x11')](_0x022a('0x12'),_0x284045,_0x022a('0x13'),JSON[_0x022a('0x14')](_0x912cd3));if(_0x912cd3[_0x022a('0x15')]){if(_0x912cd3['error'][_0x022a('0x16')]===0x1f4){logger[_0x022a('0x15')](_0x022a('0x17'),_0x284045,_0x912cd3[_0x022a('0x15')][_0x022a('0x18')]);return _0xf145c2(_0x912cd3[_0x022a('0x15')][_0x022a('0x18')]);}logger[_0x022a('0x15')](_0x022a('0x17'),_0x284045,_0x912cd3['error'][_0x022a('0x18')]);return _0x57a172(_0x912cd3[_0x022a('0x15')]['message']);}else{logger['info'](_0x022a('0x17'),_0x284045,_0x022a('0x13'));_0x57a172(_0x912cd3['result'][_0x022a('0x18')]);}})['catch'](function(_0x28163a){logger[_0x022a('0x15')](_0x022a('0x17'),_0x284045,_0x28163a);_0xf145c2(_0x28163a);});});}
\ No newline at end of file
index 6b85d63..05e64c7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5e7d=['remove','emit','removeListener','register','chatWebsite:','./chatWebsite.events','save'];(function(_0x3a7ef6,_0x10ea33){var _0x39c9b1=function(_0x4784c6){while(--_0x4784c6){_0x3a7ef6['push'](_0x3a7ef6['shift']());}};_0x39c9b1(++_0x10ea33);}(_0x5e7d,0xe5));var _0xd5e7=function(_0x3a2a3c,_0x37bd31){_0x3a2a3c=_0x3a2a3c-0x0;var _0x50ac9a=_0x5e7d[_0x3a2a3c];return _0x50ac9a;};'use strict';var ChatWebsiteEvents=require(_0xd5e7('0x0'));var events=[_0xd5e7('0x1'),_0xd5e7('0x2'),'update'];function createListener(_0x646423,_0x40ced1){return function(_0x5a9e56){_0x40ced1[_0xd5e7('0x3')](_0x646423,_0x5a9e56);};}function removeListener(_0x100c7f,_0x1b22ac){return function(){ChatWebsiteEvents[_0xd5e7('0x4')](_0x100c7f,_0x1b22ac);};}exports[_0xd5e7('0x5')]=function(_0x337e5e){for(var _0x5e13d0=0x0,_0x17ecdd=events['length'];_0x5e13d0<_0x17ecdd;_0x5e13d0++){var _0x566575=events[_0x5e13d0];var _0x4432e3=createListener(_0xd5e7('0x6')+_0x566575,_0x337e5e);ChatWebsiteEvents['on'](_0x566575,_0x4432e3);}};
\ No newline at end of file
+var _0x4902=['register','length','chatWebsite:','./chatWebsite.events','save','remove','update','removeListener'];(function(_0x501510,_0x61caa9){var _0x1e6ee5=function(_0x32845b){while(--_0x32845b){_0x501510['push'](_0x501510['shift']());}};_0x1e6ee5(++_0x61caa9);}(_0x4902,0xbb));var _0x2490=function(_0x99facc,_0x548cd6){_0x99facc=_0x99facc-0x0;var _0xd39ed0=_0x4902[_0x99facc];return _0xd39ed0;};'use strict';var ChatWebsiteEvents=require(_0x2490('0x0'));var events=[_0x2490('0x1'),_0x2490('0x2'),_0x2490('0x3')];function createListener(_0x591380,_0x582839){return function(_0xd2e7c2){_0x582839['emit'](_0x591380,_0xd2e7c2);};}function removeListener(_0x515c10,_0x268057){return function(){ChatWebsiteEvents[_0x2490('0x4')](_0x515c10,_0x268057);};}exports[_0x2490('0x5')]=function(_0xc9e550){for(var _0x3b0ae2=0x0,_0x462483=events[_0x2490('0x6')];_0x3b0ae2<_0x462483;_0x3b0ae2++){var _0x3033da=events[_0x3b0ae2];var _0x4c758b=createListener(_0x2490('0x7')+_0x3033da,_0xc9e550);ChatWebsiteEvents['on'](_0x3033da,_0x4c758b);}};
\ No newline at end of file
index f26a2e8..1239768 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe13c=['/:id/fields','getFields','/:id/users','getAgents','post','create','addAnswer','diskStorage','join','root','format','originalname','/:id/logo','single','file','addLogo','%s-%s','now','addAvatar','/:id/notify','offline-chat','ensureDir','replace','/:id/offline','any','offline','/:id/interactions','addInteraction','addApplications','addAgents','put','/:id','update','destroy','delete','/:id/dispositions','removeDispositions','removeAnswers','removeAgents','util','path','connect-timeout','express','Router','../../components/auth/service','get','isAuthenticated','index','/describe','describe','show','getDispositions','/:id/canned_answers','getAnswers','getLogo','/:id/customer_avatar','getCustomerAvatar','/:id/system_avatar','getSystemAvatar','getInteractions','getSnippet','/:id/applications','getApplications','/:id/proactive_actions','getProactiveActions'];(function(_0x5869f5,_0x176fd5){var _0x6beba1=function(_0x253e04){while(--_0x253e04){_0x5869f5['push'](_0x5869f5['shift']());}};_0x6beba1(++_0x176fd5);}(_0xe13c,0x12b));var _0xce13=function(_0x26469f,_0x2416b3){_0x26469f=_0x26469f-0x0;var _0x1cd14d=_0xe13c[_0x26469f];return _0x1cd14d;};'use strict';var multer=require('multer');var util=require(_0xce13('0x0'));var path=require(_0xce13('0x1'));var timeout=require(_0xce13('0x2'));var express=require(_0xce13('0x3'));var router=express[_0xce13('0x4')]();var fs_extra=require('fs-extra');var auth=require(_0xce13('0x5'));var interaction=require('../../components/interaction/service');var config=require('../../config/environment');var controller=require('./chatWebsite.controller');router[_0xce13('0x6')]('/',auth[_0xce13('0x7')](),controller[_0xce13('0x8')]);router[_0xce13('0x6')](_0xce13('0x9'),auth[_0xce13('0x7')](),controller[_0xce13('0xa')]);router[_0xce13('0x6')]('/:id',auth['isAuthenticated'](),controller[_0xce13('0xb')]);router[_0xce13('0x6')]('/:id/dispositions',auth[_0xce13('0x7')](),controller[_0xce13('0xc')]);router[_0xce13('0x6')](_0xce13('0xd'),auth[_0xce13('0x7')](),controller[_0xce13('0xe')]);router[_0xce13('0x6')]('/:id/logo',controller[_0xce13('0xf')]);router[_0xce13('0x6')]('/:id/avatar',controller['getAvatar']);router[_0xce13('0x6')](_0xce13('0x10'),controller[_0xce13('0x11')]);router['get'](_0xce13('0x12'),controller[_0xce13('0x13')]);router['get']('/:id/interactions',auth['isAuthenticated'](),controller[_0xce13('0x14')]);router[_0xce13('0x6')]('/:id/snippet',controller[_0xce13('0x15')]);router[_0xce13('0x6')](_0xce13('0x16'),auth[_0xce13('0x7')](),controller[_0xce13('0x17')]);router['get'](_0xce13('0x18'),auth['isAuthenticated'](),controller[_0xce13('0x19')]);router[_0xce13('0x6')](_0xce13('0x1a'),controller[_0xce13('0x1b')]);router[_0xce13('0x6')]('/:id/offline_messages',auth[_0xce13('0x7')](),controller['getOfflineMessages']);router[_0xce13('0x6')](_0xce13('0x1c'),auth['isAuthenticated'](),controller[_0xce13('0x1d')]);router[_0xce13('0x1e')]('/',auth['isAuthenticated'](),controller[_0xce13('0x1f')]);router[_0xce13('0x1e')]('/:id/dispositions',auth[_0xce13('0x7')](),controller['addDisposition']);router[_0xce13('0x1e')](_0xce13('0xd'),auth[_0xce13('0x7')](),controller[_0xce13('0x20')]);var upload=multer({'storage':multer[_0xce13('0x21')]({'destination':function(_0x2ce7a0,_0x1a886f,_0x37e1bb){_0x37e1bb(null,path[_0xce13('0x22')](config[_0xce13('0x23')],'server/files/images/logos/'));},'filename':function(_0xbbf09b,_0x1c07b4,_0x52d544){_0x52d544(null,util[_0xce13('0x24')]('%s-%s',Date['now'](),_0x1c07b4[_0xce13('0x25')]));}})});router[_0xce13('0x1e')](_0xce13('0x26'),upload[_0xce13('0x27')](_0xce13('0x28')),controller[_0xce13('0x29')]);var upload=multer({'storage':multer[_0xce13('0x21')]({'destination':function(_0x47e9a8,_0xb55b4,_0x3c303b){_0x3c303b(null,path['join'](config[_0xce13('0x23')],'server/files/images/avatars/'));},'filename':function(_0x154de2,_0x23520b,_0x660705){_0x660705(null,util[_0xce13('0x24')](_0xce13('0x2a'),Date[_0xce13('0x2b')](),_0x23520b[_0xce13('0x25')]));}})});router[_0xce13('0x1e')]('/:id/avatar',upload[_0xce13('0x27')]('file'),controller[_0xce13('0x2c')]);var upload=multer({'storage':multer[_0xce13('0x21')]({'destination':function(_0x50323b,_0x5060db,_0x47f093){_0x47f093(null,path['join'](config[_0xce13('0x23')],'server/files/images/avatars/'));},'filename':function(_0x1050df,_0x534bed,_0x2e5eea){_0x2e5eea(null,util[_0xce13('0x24')](_0xce13('0x2a'),Date[_0xce13('0x2b')](),_0x534bed['originalname']));}})});router[_0xce13('0x1e')](_0xce13('0x10'),upload['single'](_0xce13('0x28')),controller['addCustomerAvatar']);var upload=multer({'storage':multer[_0xce13('0x21')]({'destination':function(_0x12a964,_0x311e2b,_0x595c37){_0x595c37(null,path['join'](config[_0xce13('0x23')],'server/files/images/avatars/'));},'filename':function(_0x2cad1c,_0x3e7999,_0x374af6){_0x374af6(null,util[_0xce13('0x24')](_0xce13('0x2a'),Date['now'](),_0x3e7999[_0xce13('0x25')]));}})});router[_0xce13('0x1e')](_0xce13('0x12'),upload[_0xce13('0x27')](_0xce13('0x28')),controller['addSystemAvatar']);router['post'](_0xce13('0x2d'),controller['notify']);const offlineUploadMulter=multer({'storage':multer[_0xce13('0x21')]({'destination':function(_0x144575,_0x4c6380,_0x15185d){const _0x3ae190=path[_0xce13('0x22')](config[_0xce13('0x23')],'server/files','attachments',_0xce13('0x2e'));fs_extra[_0xce13('0x2f')](_0x3ae190,function(){_0x15185d(null,_0x3ae190);});},'filename':function(_0x48db30,_0x28306e,_0x909652){const _0x3114aa=_0x28306e[_0xce13('0x25')][_0xce13('0x30')](/[+@&\/\\#,+()$~%'":*?<>{}\s\\|]/g,'-');const _0x4b07a1=path['extname'](_0x3114aa);const _0x3b0028=Date[_0xce13('0x2b')]()+'-'+_0x3114aa[_0xce13('0x30')](_0x4b07a1,'')+_0x4b07a1;_0x909652(null,_0x3b0028);}})});router[_0xce13('0x1e')](_0xce13('0x31'),offlineUploadMulter[_0xce13('0x32')](),controller[_0xce13('0x33')]);router[_0xce13('0x1e')](_0xce13('0x34'),auth[_0xce13('0x7')](),controller[_0xce13('0x35')]);router[_0xce13('0x1e')]('/:id/applications',auth[_0xce13('0x7')](),controller[_0xce13('0x36')]);router[_0xce13('0x1e')](_0xce13('0x18'),auth['isAuthenticated'](),controller['addProactiveActions']);router[_0xce13('0x1e')](_0xce13('0x1c'),auth['isAuthenticated'](),controller[_0xce13('0x37')]);router[_0xce13('0x38')](_0xce13('0x39'),auth['isAuthenticated'](),controller[_0xce13('0x3a')]);router['delete'](_0xce13('0x39'),auth[_0xce13('0x7')](),controller[_0xce13('0x3b')]);router[_0xce13('0x3c')](_0xce13('0x3d'),auth['isAuthenticated'](),controller[_0xce13('0x3e')]);router['delete'](_0xce13('0xd'),auth[_0xce13('0x7')](),controller[_0xce13('0x3f')]);router[_0xce13('0x3c')](_0xce13('0x1c'),auth[_0xce13('0x7')](),controller[_0xce13('0x40')]);module['exports']=router;
\ No newline at end of file
+var _0x540f=['getInteractions','/:id/snippet','/:id/applications','getProactiveActions','/:id/fields','getFields','/:id/offline_messages','getOfflineMessages','/:id/users','post','create','addAnswer','diskStorage','join','root','format','now','single','addLogo','server/files/images/avatars/','%s-%s','file','addAvatar','originalname','addCustomerAvatar','addSystemAvatar','/:id/notify','notify','server/files','attachments','offline-chat','replace','extname','/:id/offline','any','offline','addInteraction','addApplications','/:id/proactive_actions','addProactiveActions','put','delete','destroy','removeAnswers','exports','util','path','connect-timeout','express','Router','../../components/interaction/service','../../config/environment','./chatWebsite.controller','get','isAuthenticated','index','/describe','describe','/:id','show','/:id/dispositions','/:id/canned_answers','getAnswers','/:id/logo','getLogo','/:id/avatar','getAvatar','/:id/customer_avatar','getCustomerAvatar','/:id/system_avatar','getSystemAvatar'];(function(_0xd82c46,_0x5bb505){var _0x584779=function(_0x5db5b3){while(--_0x5db5b3){_0xd82c46['push'](_0xd82c46['shift']());}};_0x584779(++_0x5bb505);}(_0x540f,0x190));var _0xf540=function(_0x254081,_0x20731a){_0x254081=_0x254081-0x0;var _0x5d1e2a=_0x540f[_0x254081];return _0x5d1e2a;};'use strict';var multer=require('multer');var util=require(_0xf540('0x0'));var path=require(_0xf540('0x1'));var timeout=require(_0xf540('0x2'));var express=require(_0xf540('0x3'));var router=express[_0xf540('0x4')]();var fs_extra=require('fs-extra');var auth=require('../../components/auth/service');var interaction=require(_0xf540('0x5'));var config=require(_0xf540('0x6'));var controller=require(_0xf540('0x7'));router[_0xf540('0x8')]('/',auth[_0xf540('0x9')](),controller[_0xf540('0xa')]);router[_0xf540('0x8')](_0xf540('0xb'),auth['isAuthenticated'](),controller[_0xf540('0xc')]);router['get'](_0xf540('0xd'),auth[_0xf540('0x9')](),controller[_0xf540('0xe')]);router[_0xf540('0x8')](_0xf540('0xf'),auth[_0xf540('0x9')](),controller['getDispositions']);router['get'](_0xf540('0x10'),auth[_0xf540('0x9')](),controller[_0xf540('0x11')]);router[_0xf540('0x8')](_0xf540('0x12'),controller[_0xf540('0x13')]);router['get'](_0xf540('0x14'),controller[_0xf540('0x15')]);router[_0xf540('0x8')](_0xf540('0x16'),controller[_0xf540('0x17')]);router[_0xf540('0x8')](_0xf540('0x18'),controller[_0xf540('0x19')]);router[_0xf540('0x8')]('/:id/interactions',auth[_0xf540('0x9')](),controller[_0xf540('0x1a')]);router[_0xf540('0x8')](_0xf540('0x1b'),controller['getSnippet']);router[_0xf540('0x8')](_0xf540('0x1c'),auth[_0xf540('0x9')](),controller['getApplications']);router[_0xf540('0x8')]('/:id/proactive_actions',auth[_0xf540('0x9')](),controller[_0xf540('0x1d')]);router['get'](_0xf540('0x1e'),controller[_0xf540('0x1f')]);router[_0xf540('0x8')](_0xf540('0x20'),auth['isAuthenticated'](),controller[_0xf540('0x21')]);router['get'](_0xf540('0x22'),auth[_0xf540('0x9')](),controller['getAgents']);router[_0xf540('0x23')]('/',auth[_0xf540('0x9')](),controller[_0xf540('0x24')]);router[_0xf540('0x23')]('/:id/dispositions',auth[_0xf540('0x9')](),controller['addDisposition']);router[_0xf540('0x23')]('/:id/canned_answers',auth[_0xf540('0x9')](),controller[_0xf540('0x25')]);var upload=multer({'storage':multer[_0xf540('0x26')]({'destination':function(_0x21be06,_0x4e9a85,_0x1a4cc9){_0x1a4cc9(null,path[_0xf540('0x27')](config[_0xf540('0x28')],'server/files/images/logos/'));},'filename':function(_0x4d1a2b,_0x4e713b,_0x443036){_0x443036(null,util[_0xf540('0x29')]('%s-%s',Date[_0xf540('0x2a')](),_0x4e713b['originalname']));}})});router[_0xf540('0x23')](_0xf540('0x12'),upload[_0xf540('0x2b')]('file'),controller[_0xf540('0x2c')]);var upload=multer({'storage':multer[_0xf540('0x26')]({'destination':function(_0x374262,_0x1014e6,_0x2268dd){_0x2268dd(null,path['join'](config[_0xf540('0x28')],_0xf540('0x2d')));},'filename':function(_0x31e0e8,_0x24525c,_0x3623f2){_0x3623f2(null,util[_0xf540('0x29')](_0xf540('0x2e'),Date['now'](),_0x24525c['originalname']));}})});router[_0xf540('0x23')](_0xf540('0x14'),upload[_0xf540('0x2b')](_0xf540('0x2f')),controller[_0xf540('0x30')]);var upload=multer({'storage':multer[_0xf540('0x26')]({'destination':function(_0x569f5f,_0x2d79a2,_0x20e5c7){_0x20e5c7(null,path[_0xf540('0x27')](config[_0xf540('0x28')],_0xf540('0x2d')));},'filename':function(_0x4fbd83,_0x1c3c5e,_0x2eba10){_0x2eba10(null,util[_0xf540('0x29')]('%s-%s',Date[_0xf540('0x2a')](),_0x1c3c5e[_0xf540('0x31')]));}})});router['post'](_0xf540('0x16'),upload[_0xf540('0x2b')](_0xf540('0x2f')),controller[_0xf540('0x32')]);var upload=multer({'storage':multer[_0xf540('0x26')]({'destination':function(_0x2beb06,_0x1bf1c9,_0x59c98c){_0x59c98c(null,path[_0xf540('0x27')](config[_0xf540('0x28')],_0xf540('0x2d')));},'filename':function(_0x1b2315,_0x37486e,_0x187db7){_0x187db7(null,util[_0xf540('0x29')](_0xf540('0x2e'),Date[_0xf540('0x2a')](),_0x37486e['originalname']));}})});router[_0xf540('0x23')](_0xf540('0x18'),upload[_0xf540('0x2b')](_0xf540('0x2f')),controller[_0xf540('0x33')]);router[_0xf540('0x23')](_0xf540('0x34'),controller[_0xf540('0x35')]);const offlineUploadMulter=multer({'storage':multer[_0xf540('0x26')]({'destination':function(_0x2f24dd,_0x1080b0,_0x11180b){const _0x4ed7eb=path[_0xf540('0x27')](config['root'],_0xf540('0x36'),_0xf540('0x37'),_0xf540('0x38'));fs_extra['ensureDir'](_0x4ed7eb,function(){_0x11180b(null,_0x4ed7eb);});},'filename':function(_0x3478b3,_0x4120d0,_0x2b86c1){const _0x176e58=_0x4120d0[_0xf540('0x31')][_0xf540('0x39')](/[+@&\/\\#,+()$~%'":*?<>{}\s\\|]/g,'-');const _0xc2e3ae=path[_0xf540('0x3a')](_0x176e58);const _0xd0dc05=Date[_0xf540('0x2a')]()+'-'+_0x176e58['replace'](_0xc2e3ae,'')+_0xc2e3ae;_0x2b86c1(null,_0xd0dc05);}})});router[_0xf540('0x23')](_0xf540('0x3b'),offlineUploadMulter[_0xf540('0x3c')](),controller[_0xf540('0x3d')]);router[_0xf540('0x23')]('/:id/interactions',auth[_0xf540('0x9')](),controller[_0xf540('0x3e')]);router[_0xf540('0x23')]('/:id/applications',auth[_0xf540('0x9')](),controller[_0xf540('0x3f')]);router[_0xf540('0x23')](_0xf540('0x40'),auth[_0xf540('0x9')](),controller[_0xf540('0x41')]);router[_0xf540('0x23')](_0xf540('0x22'),auth[_0xf540('0x9')](),controller['addAgents']);router[_0xf540('0x42')](_0xf540('0xd'),auth[_0xf540('0x9')](),controller['update']);router[_0xf540('0x43')](_0xf540('0xd'),auth[_0xf540('0x9')](),controller[_0xf540('0x44')]);router['delete'](_0xf540('0xf'),auth[_0xf540('0x9')](),controller['removeDispositions']);router['delete'](_0xf540('0x10'),auth['isAuthenticated'](),controller[_0xf540('0x45')]);router[_0xf540('0x43')](_0xf540('0x22'),auth[_0xf540('0x9')](),controller['removeAgents']);module[_0xf540('0x46')]=router;
\ No newline at end of file
index 1db0099..e2f8462 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x77a9=['AmazonAWS','Google','sequelize','STRING'];(function(_0x10358e,_0x544f58){var _0x57ad89=function(_0x915eb6){while(--_0x915eb6){_0x10358e['push'](_0x10358e['shift']());}};_0x57ad89(++_0x544f58);}(_0x77a9,0x19e));var _0x977a=function(_0x5b4cca,_0x55ebb0){_0x5b4cca=_0x5b4cca-0x0;var _0x3ffbec=_0x77a9[_0x5b4cca];return _0x3ffbec;};'use strict';var Sequelize=require(_0x977a('0x0'));module['exports']={'name':{'type':Sequelize[_0x977a('0x1')],'allowNull':![],'validate':{'notEmpty':!![]}},'service':{'type':Sequelize['ENUM'](_0x977a('0x2'),_0x977a('0x3')),'allowNull':![],'validate':{'notEmpty':!![]}},'data1':{'type':Sequelize[_0x977a('0x1')]},'data2':{'type':Sequelize[_0x977a('0x1')]}};
\ No newline at end of file
+var _0x960c=['STRING','AmazonAWS','Google','sequelize'];(function(_0x4631fc,_0x4d9cf0){var _0x34b44e=function(_0x171202){while(--_0x171202){_0x4631fc['push'](_0x4631fc['shift']());}};_0x34b44e(++_0x4d9cf0);}(_0x960c,0x113));var _0xc960=function(_0x24c70d,_0xcb7e28){_0x24c70d=_0x24c70d-0x0;var _0x3a7563=_0x960c[_0x24c70d];return _0x3a7563;};'use strict';var Sequelize=require(_0xc960('0x0'));module['exports']={'name':{'type':Sequelize[_0xc960('0x1')],'allowNull':![],'validate':{'notEmpty':!![]}},'service':{'type':Sequelize['ENUM'](_0xc960('0x2'),_0xc960('0x3')),'allowNull':![],'validate':{'notEmpty':!![]}},'data1':{'type':Sequelize[_0xc960('0x1')]},'data2':{'type':Sequelize['STRING']}};
\ No newline at end of file
index baeeb55..dc18a8a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xadb5=['model','query','keys','intersection','attributes','fields','hasOwnProperty','nolimit','sort','where','pick','filters','filter','VIRTUAL','merge','options','includeAll','include','findAll','rows','catch','show','params','rawAttributes','create','body','find','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','CloudProvider','fieldName','type','key'];(function(_0x209941,_0x5c9988){var _0x1e8729=function(_0x51a9b8){while(--_0x51a9b8){_0x209941['push'](_0x209941['shift']());}};_0x1e8729(++_0x5c9988);}(_0xadb5,0xad));var _0x5adb=function(_0x595168,_0x24232b){_0x595168=_0x595168-0x0;var _0x1c8e24=_0xadb5[_0x595168];return _0x1c8e24;};'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['CloudProvider']['count'](_0x52d74f)[_0x5adb('0x22')](function(_0x2fbe14){_0x1eac55[_0x5adb('0x1e')]=_0x2fbe14;if(_0x4a5d46[_0x5adb('0x2f')][_0x5adb('0x3e')]){_0x5d457e[_0x5adb('0x3f')]=[{'all':!![]}];}return db[_0x5adb('0x2a')][_0x5adb('0x40')](_0x5d457e);})['then'](function(_0x53f2c6){_0x1eac55[_0x5adb('0x41')]=_0x53f2c6;return _0x1eac55;})['then'](respondWithFilteredResult(_0x49992e,_0x5d457e))[_0x5adb('0x42')](handleError(_0x49992e,null));};exports[_0x5adb('0x43')]=function(_0x299746,_0x121714){var _0xdfecfd={'raw':!![],'where':{'id':_0x299746[_0x5adb('0x44')]['id']}},_0x522ee5={};_0x522ee5[_0x5adb('0x2e')]=_['keys'](db[_0x5adb('0x2a')][_0x5adb('0x45')]);_0x522ee5['query']=_[_0x5adb('0x30')](_0x299746[_0x5adb('0x2f')]);_0x522ee5[_0x5adb('0x39')]=_[_0x5adb('0x31')](_0x522ee5[_0x5adb('0x2e')],_0x522ee5[_0x5adb('0x2f')]);_0xdfecfd[_0x5adb('0x32')]=_['intersection'](_0x522ee5['model'],qs[_0x5adb('0x33')](_0x299746[_0x5adb('0x2f')][_0x5adb('0x33')]));_0xdfecfd[_0x5adb('0x32')]=_0xdfecfd['attributes']['length']?_0xdfecfd[_0x5adb('0x32')]:_0x522ee5[_0x5adb('0x2e')];if(_0x299746[_0x5adb('0x2f')][_0x5adb('0x3e')]){_0xdfecfd[_0x5adb('0x3f')]=[{'all':!![]}];}_0xdfecfd=_['merge']({},_0xdfecfd,_0x299746[_0x5adb('0x3d')]);return db[_0x5adb('0x2a')]['find'](_0xdfecfd)[_0x5adb('0x22')](handleEntityNotFound(_0x121714,null))[_0x5adb('0x22')](respondWithResult(_0x121714,null))[_0x5adb('0x42')](handleError(_0x121714,null));};exports[_0x5adb('0x46')]=function(_0x186bd2,_0x3a5409){return db[_0x5adb('0x2a')][_0x5adb('0x46')](_0x186bd2['body'],{})[_0x5adb('0x22')](respondWithResult(_0x3a5409,0xc9))['catch'](handleError(_0x3a5409,null));};exports['update']=function(_0x5015ee,_0x3cd211){if(_0x5015ee[_0x5adb('0x47')]['id']){delete _0x5015ee[_0x5adb('0x47')]['id'];}return db['CloudProvider'][_0x5adb('0x48')]({'where':{'id':_0x5015ee['params']['id']}})[_0x5adb('0x22')](handleEntityNotFound(_0x3cd211,null))[_0x5adb('0x22')](saveUpdates(_0x5015ee[_0x5adb('0x47')],null))['then'](respondWithResult(_0x3cd211,null))[_0x5adb('0x42')](handleError(_0x3cd211,null));};exports['destroy']=function(_0x22fa54,_0x6dc067){return db['CloudProvider'][_0x5adb('0x48')]({'where':{'id':_0x22fa54[_0x5adb('0x44')]['id']}})[_0x5adb('0x22')](handleEntityNotFound(_0x6dc067,null))[_0x5adb('0x22')](removeEntity(_0x6dc067,null))[_0x5adb('0x42')](handleError(_0x6dc067,null));};
\ No newline at end of file
+var _0x5f66=['update','catch','rimraf','fast-json-patch','request-promise','moment','bluebird','mustache','path','to-csv','ejs','squel','crypto','jsforce','desk.js','querystring','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/license/util','sendStatus','status','end','json','undefined','limit','count','offset','Content-Range','apply','reject','save','destroy','then','error','name','send','index','map','CloudProvider','rawAttributes','fieldName','model','keys','query','filters','intersection','fields','attributes','length','hasOwnProperty','nolimit','order','sort','filter','merge','type','VIRTUAL','includeAll','include','findAll','rows','show','params','find','create','body'];(function(_0x47f5f1,_0x53edc2){var _0x24f65d=function(_0x2f7543){while(--_0x2f7543){_0x47f5f1['push'](_0x47f5f1['shift']());}};_0x24f65d(++_0x53edc2);}(_0x5f66,0x1a0));var _0x65f6=function(_0x4154a6,_0x2c0b8e){_0x4154a6=_0x4154a6-0x0;var _0x3b2786=_0x5f66[_0x4154a6];return _0x3b2786;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x65f6('0x0'));var zipdir=require('zip-dir');var jsonpatch=require(_0x65f6('0x1'));var rp=require(_0x65f6('0x2'));var moment=require(_0x65f6('0x3'));var BPromise=require(_0x65f6('0x4'));var Mustache=require(_0x65f6('0x5'));var util=require('util');var path=require(_0x65f6('0x6'));var sox=require('sox');var csv=require(_0x65f6('0x7'));var ejs=require(_0x65f6('0x8'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require('lodash');var squel=require(_0x65f6('0x9'));var crypto=require(_0x65f6('0xa'));var jsforce=require(_0x65f6('0xb'));var deskjs=require(_0x65f6('0xc'));var toCsv=require(_0x65f6('0x7'));var querystring=require(_0x65f6('0xd'));var Papa=require('papaparse');var Redis=require('ioredis');var authService=require(_0x65f6('0xe'));var qs=require(_0x65f6('0xf'));var as=require(_0x65f6('0x10'));var hardwareService=require(_0x65f6('0x11'));var logger=require('../../config/logger')(_0x65f6('0x12'));var utils=require('../../config/utils');var config=require('../../config/environment');var licenseUtil=require(_0x65f6('0x13'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x419819,_0x4862a5){_0x4862a5=_0x4862a5||0xcc;return function(_0x2f964a){if(_0x2f964a){return _0x419819[_0x65f6('0x14')](_0x4862a5);}return _0x419819[_0x65f6('0x15')](_0x4862a5)[_0x65f6('0x16')]();};}function respondWithResult(_0x369f96,_0x1d29fd){_0x1d29fd=_0x1d29fd||0xc8;return function(_0x44144b){if(_0x44144b){return _0x369f96[_0x65f6('0x15')](_0x1d29fd)[_0x65f6('0x17')](_0x44144b);}};}function respondWithFilteredResult(_0x3440af,_0x59154e){return function(_0x19b9ff){if(_0x19b9ff){var _0x49a913=typeof _0x59154e['offset']===_0x65f6('0x18')&&typeof _0x59154e[_0x65f6('0x19')]===_0x65f6('0x18');var _0x1c955c=_0x19b9ff[_0x65f6('0x1a')];var _0x1f974c=_0x49a913?0x0:_0x59154e[_0x65f6('0x1b')];var _0x18380e=_0x49a913?_0x19b9ff['count']:_0x59154e['offset']+_0x59154e[_0x65f6('0x19')];var _0x5b4055;if(_0x18380e>=_0x1c955c){_0x18380e=_0x1c955c;_0x5b4055=0xc8;}else{_0x5b4055=0xce;}_0x3440af['status'](_0x5b4055);return _0x3440af['set'](_0x65f6('0x1c'),_0x1f974c+'-'+_0x18380e+'/'+_0x1c955c)[_0x65f6('0x17')](_0x19b9ff);}return null;};}function patchUpdates(_0x5114a4){return function(_0x39e19f){try{jsonpatch[_0x65f6('0x1d')](_0x39e19f,_0x5114a4,!![]);}catch(_0xbee6a4){return BPromise[_0x65f6('0x1e')](_0xbee6a4);}return _0x39e19f[_0x65f6('0x1f')]();};}function saveUpdates(_0xc139c2,_0x581374){return function(_0x197a49){if(_0x197a49){return _0x197a49['update'](_0xc139c2)['then'](function(_0x212247){return _0x212247;});}return null;};}function removeEntity(_0xd173f4,_0x524e42){return function(_0x1eeaaa){if(_0x1eeaaa){return _0x1eeaaa[_0x65f6('0x20')]()[_0x65f6('0x21')](function(){_0xd173f4[_0x65f6('0x15')](0xcc)['end']();});}};}function handleEntityNotFound(_0x9d7bb0,_0x59ea32){return function(_0x20a161){if(!_0x20a161){_0x9d7bb0['sendStatus'](0x194);}return _0x20a161;};}function handleError(_0x5cb131,_0x4fde2f){_0x4fde2f=_0x4fde2f||0x1f4;return function(_0x29abdb){logger[_0x65f6('0x22')](_0x29abdb['stack']);if(_0x29abdb[_0x65f6('0x23')]){delete _0x29abdb[_0x65f6('0x23')];}_0x5cb131['status'](_0x4fde2f)[_0x65f6('0x24')](_0x29abdb);};}exports[_0x65f6('0x25')]=function(_0x28d0df,_0x559330){var _0x4ac04b={},_0x488d36={},_0x266cfe={'count':0x0,'rows':[]};var _0x3c032f=_[_0x65f6('0x26')](db[_0x65f6('0x27')][_0x65f6('0x28')],function(_0x14a387){return{'name':_0x14a387[_0x65f6('0x29')],'type':_0x14a387['type']['key']};});_0x488d36[_0x65f6('0x2a')]=_[_0x65f6('0x26')](_0x3c032f,'name');_0x488d36['query']=_[_0x65f6('0x2b')](_0x28d0df[_0x65f6('0x2c')]);_0x488d36[_0x65f6('0x2d')]=_[_0x65f6('0x2e')](_0x488d36[_0x65f6('0x2a')],_0x488d36[_0x65f6('0x2c')]);_0x4ac04b['attributes']=_[_0x65f6('0x2e')](_0x488d36[_0x65f6('0x2a')],qs[_0x65f6('0x2f')](_0x28d0df['query'][_0x65f6('0x2f')]));_0x4ac04b[_0x65f6('0x30')]=_0x4ac04b[_0x65f6('0x30')][_0x65f6('0x31')]?_0x4ac04b[_0x65f6('0x30')]:_0x488d36[_0x65f6('0x2a')];if(!_0x28d0df['query'][_0x65f6('0x32')](_0x65f6('0x33'))){_0x4ac04b['limit']=qs[_0x65f6('0x19')](_0x28d0df['query'][_0x65f6('0x19')]);_0x4ac04b['offset']=qs[_0x65f6('0x1b')](_0x28d0df[_0x65f6('0x2c')]['offset']);}_0x4ac04b[_0x65f6('0x34')]=qs[_0x65f6('0x35')](_0x28d0df[_0x65f6('0x2c')]['sort']);_0x4ac04b['where']=qs[_0x65f6('0x2d')](_['pick'](_0x28d0df[_0x65f6('0x2c')],_0x488d36['filters']),_0x3c032f);if(_0x28d0df[_0x65f6('0x2c')][_0x65f6('0x36')]){_0x4ac04b['where']=_[_0x65f6('0x37')](_0x4ac04b['where'],{'$or':_['map'](_0x3c032f,function(_0x71b16b){if(_0x71b16b[_0x65f6('0x38')]!==_0x65f6('0x39')){var _0x313be5={};_0x313be5[_0x71b16b[_0x65f6('0x23')]]={'$like':'%'+_0x28d0df[_0x65f6('0x2c')][_0x65f6('0x36')]+'%'};return _0x313be5;}})});}_0x4ac04b=_[_0x65f6('0x37')]({},_0x4ac04b,_0x28d0df['options']);var _0x3aa254={'where':_0x4ac04b['where']};return db[_0x65f6('0x27')][_0x65f6('0x1a')](_0x3aa254)[_0x65f6('0x21')](function(_0x2ea7f7){_0x266cfe['count']=_0x2ea7f7;if(_0x28d0df[_0x65f6('0x2c')][_0x65f6('0x3a')]){_0x4ac04b[_0x65f6('0x3b')]=[{'all':!![]}];}return db[_0x65f6('0x27')][_0x65f6('0x3c')](_0x4ac04b);})[_0x65f6('0x21')](function(_0xed4c96){_0x266cfe[_0x65f6('0x3d')]=_0xed4c96;return _0x266cfe;})[_0x65f6('0x21')](respondWithFilteredResult(_0x559330,_0x4ac04b))['catch'](handleError(_0x559330,null));};exports[_0x65f6('0x3e')]=function(_0x400ed2,_0x377ae5){var _0x181798={'raw':!![],'where':{'id':_0x400ed2[_0x65f6('0x3f')]['id']}},_0x83e2d9={};_0x83e2d9[_0x65f6('0x2a')]=_[_0x65f6('0x2b')](db[_0x65f6('0x27')][_0x65f6('0x28')]);_0x83e2d9[_0x65f6('0x2c')]=_[_0x65f6('0x2b')](_0x400ed2[_0x65f6('0x2c')]);_0x83e2d9[_0x65f6('0x2d')]=_[_0x65f6('0x2e')](_0x83e2d9[_0x65f6('0x2a')],_0x83e2d9['query']);_0x181798[_0x65f6('0x30')]=_[_0x65f6('0x2e')](_0x83e2d9[_0x65f6('0x2a')],qs[_0x65f6('0x2f')](_0x400ed2['query'][_0x65f6('0x2f')]));_0x181798[_0x65f6('0x30')]=_0x181798[_0x65f6('0x30')]['length']?_0x181798[_0x65f6('0x30')]:_0x83e2d9[_0x65f6('0x2a')];if(_0x400ed2[_0x65f6('0x2c')][_0x65f6('0x3a')]){_0x181798['include']=[{'all':!![]}];}_0x181798=_[_0x65f6('0x37')]({},_0x181798,_0x400ed2['options']);return db[_0x65f6('0x27')][_0x65f6('0x40')](_0x181798)['then'](handleEntityNotFound(_0x377ae5,null))[_0x65f6('0x21')](respondWithResult(_0x377ae5,null))['catch'](handleError(_0x377ae5,null));};exports[_0x65f6('0x41')]=function(_0x4d9b76,_0x2d1706){return db[_0x65f6('0x27')][_0x65f6('0x41')](_0x4d9b76[_0x65f6('0x42')],{})['then'](respondWithResult(_0x2d1706,0xc9))['catch'](handleError(_0x2d1706,null));};exports[_0x65f6('0x43')]=function(_0x15d3ba,_0x3b647a){if(_0x15d3ba[_0x65f6('0x42')]['id']){delete _0x15d3ba[_0x65f6('0x42')]['id'];}return db[_0x65f6('0x27')][_0x65f6('0x40')]({'where':{'id':_0x15d3ba[_0x65f6('0x3f')]['id']}})[_0x65f6('0x21')](handleEntityNotFound(_0x3b647a,null))['then'](saveUpdates(_0x15d3ba[_0x65f6('0x42')],null))[_0x65f6('0x21')](respondWithResult(_0x3b647a,null))[_0x65f6('0x44')](handleError(_0x3b647a,null));};exports['destroy']=function(_0x47e749,_0x42d453){return db['CloudProvider'][_0x65f6('0x40')]({'where':{'id':_0x47e749[_0x65f6('0x3f')]['id']}})['then'](handleEntityNotFound(_0x42d453,null))[_0x65f6('0x21')](removeEntity(_0x42d453,null))['catch'](handleError(_0x42d453,null));};
\ No newline at end of file
index ed7adfe..df51d1c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc102=['./cloudProvider.attributes','exports','define','CloudProvider','cloud_providers','lodash','util','api','moment','request-promise','path','rimraf','../../config/environment'];(function(_0x36ed48,_0x1ee0d4){var _0x51c63a=function(_0x2d0a40){while(--_0x2d0a40){_0x36ed48['push'](_0x36ed48['shift']());}};_0x51c63a(++_0x1ee0d4);}(_0xc102,0x7a));var _0x2c10=function(_0x35b6a1,_0x1b94b1){_0x35b6a1=_0x35b6a1-0x0;var _0x3b17ac=_0xc102[_0x35b6a1];return _0x3b17ac;};'use strict';var _=require(_0x2c10('0x0'));var util=require(_0x2c10('0x1'));var logger=require('../../config/logger')(_0x2c10('0x2'));var moment=require(_0x2c10('0x3'));var BPromise=require('bluebird');var rp=require(_0x2c10('0x4'));var fs=require('fs');var path=require(_0x2c10('0x5'));var rimraf=require(_0x2c10('0x6'));var config=require(_0x2c10('0x7'));var attributes=require(_0x2c10('0x8'));module[_0x2c10('0x9')]=function(_0x40caa2,_0x27a0bc){return _0x40caa2[_0x2c10('0xa')](_0x2c10('0xb'),attributes,{'tableName':_0x2c10('0xc'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x9e40=['path','../../config/environment','./cloudProvider.attributes','CloudProvider','cloud_providers','../../config/logger','api','moment','bluebird'];(function(_0x52ace8,_0x21ebde){var _0x5d0460=function(_0x2cffd0){while(--_0x2cffd0){_0x52ace8['push'](_0x52ace8['shift']());}};_0x5d0460(++_0x21ebde);}(_0x9e40,0xdd));var _0x09e4=function(_0x17a043,_0x20f0c7){_0x17a043=_0x17a043-0x0;var _0xf106c6=_0x9e40[_0x17a043];return _0xf106c6;};'use strict';var _=require('lodash');var util=require('util');var logger=require(_0x09e4('0x0'))(_0x09e4('0x1'));var moment=require(_0x09e4('0x2'));var BPromise=require(_0x09e4('0x3'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x09e4('0x4'));var rimraf=require('rimraf');var config=require(_0x09e4('0x5'));var attributes=require(_0x09e4('0x6'));module['exports']=function(_0x5c61f2,_0x32a758){return _0x5c61f2['define'](_0x09e4('0x7'),attributes,{'tableName':_0x09e4('0x8'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 8293f60..c61e52e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xab75=['info','request\x20sent','debug','CloudProvider,\x20%s,\x20%s,\x20%s','stringify','code','error','CloudProvider,\x20%s,\x20%s','message','result','catch','lodash','util','moment','ioredis','../../mysqldb','../../config/utils','rpc','../../config/environment','jayson/promise','client','http','request'];(function(_0x12019a,_0x407485){var _0x49520a=function(_0x150fb6){while(--_0x150fb6){_0x12019a['push'](_0x12019a['shift']());}};_0x49520a(++_0x407485);}(_0xab75,0x11f));var _0x5ab7=function(_0x2939d1,_0x36d179){_0x2939d1=_0x2939d1-0x0;var _0x449b69=_0xab75[_0x2939d1];return _0x449b69;};'use strict';var _=require(_0x5ab7('0x0'));var util=require(_0x5ab7('0x1'));var moment=require(_0x5ab7('0x2'));var BPromise=require('bluebird');var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x5ab7('0x3'));var db=require(_0x5ab7('0x4'))['db'];var utils=require(_0x5ab7('0x5'));var logger=require('../../config/logger')(_0x5ab7('0x6'));var config=require(_0x5ab7('0x7'));var jayson=require(_0x5ab7('0x8'));var client=jayson[_0x5ab7('0x9')][_0x5ab7('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x32b338,_0x229f83,_0x368f69){return new BPromise(function(_0x365a58,_0x86468a){return client[_0x5ab7('0xb')](_0x32b338,_0x368f69)['then'](function(_0x216796){logger[_0x5ab7('0xc')]('CloudProvider,\x20%s,\x20%s',_0x229f83,_0x5ab7('0xd'));logger[_0x5ab7('0xe')](_0x5ab7('0xf'),_0x229f83,_0x5ab7('0xd'),JSON[_0x5ab7('0x10')](_0x216796));if(_0x216796['error']){if(_0x216796['error'][_0x5ab7('0x11')]===0x1f4){logger[_0x5ab7('0x12')](_0x5ab7('0x13'),_0x229f83,_0x216796[_0x5ab7('0x12')][_0x5ab7('0x14')]);return _0x86468a(_0x216796[_0x5ab7('0x12')][_0x5ab7('0x14')]);}logger[_0x5ab7('0x12')](_0x5ab7('0x13'),_0x229f83,_0x216796[_0x5ab7('0x12')][_0x5ab7('0x14')]);return _0x365a58(_0x216796['error'][_0x5ab7('0x14')]);}else{logger[_0x5ab7('0xc')](_0x5ab7('0x13'),_0x229f83,_0x5ab7('0xd'));_0x365a58(_0x216796[_0x5ab7('0x15')][_0x5ab7('0x14')]);}})[_0x5ab7('0x16')](function(_0x2a126c){logger[_0x5ab7('0x12')](_0x5ab7('0x13'),_0x229f83,_0x2a126c);_0x86468a(_0x2a126c);});});}
\ No newline at end of file
+var _0xa76e=['result','catch','util','moment','ioredis','../../config/utils','../../config/logger','rpc','jayson/promise','http','request','then','info','request\x20sent','debug','CloudProvider,\x20%s,\x20%s,\x20%s','stringify','error','code','CloudProvider,\x20%s,\x20%s','message'];(function(_0x346737,_0x3e6081){var _0x1ade2e=function(_0x15e50e){while(--_0x15e50e){_0x346737['push'](_0x346737['shift']());}};_0x1ade2e(++_0x3e6081);}(_0xa76e,0xfe));var _0xea76=function(_0x58a4fe,_0x11d439){_0x58a4fe=_0x58a4fe-0x0;var _0x697de2=_0xa76e[_0x58a4fe];return _0x697de2;};'use strict';var _=require('lodash');var util=require(_0xea76('0x0'));var moment=require(_0xea76('0x1'));var BPromise=require('bluebird');var rs=require('randomstring');var fs=require('fs');var Redis=require(_0xea76('0x2'));var db=require('../../mysqldb')['db'];var utils=require(_0xea76('0x3'));var logger=require(_0xea76('0x4'))(_0xea76('0x5'));var config=require('../../config/environment');var jayson=require(_0xea76('0x6'));var client=jayson['client'][_0xea76('0x7')]({'port':0x232a});function respondWithRpcPromise(_0x4ee974,_0x45ac1b,_0x1735ff){return new BPromise(function(_0x5eb746,_0x55aae7){return client[_0xea76('0x8')](_0x4ee974,_0x1735ff)[_0xea76('0x9')](function(_0x1c6723){logger[_0xea76('0xa')]('CloudProvider,\x20%s,\x20%s',_0x45ac1b,_0xea76('0xb'));logger[_0xea76('0xc')](_0xea76('0xd'),_0x45ac1b,'request\x20sent',JSON[_0xea76('0xe')](_0x1c6723));if(_0x1c6723[_0xea76('0xf')]){if(_0x1c6723[_0xea76('0xf')][_0xea76('0x10')]===0x1f4){logger[_0xea76('0xf')](_0xea76('0x11'),_0x45ac1b,_0x1c6723[_0xea76('0xf')][_0xea76('0x12')]);return _0x55aae7(_0x1c6723[_0xea76('0xf')][_0xea76('0x12')]);}logger[_0xea76('0xf')](_0xea76('0x11'),_0x45ac1b,_0x1c6723[_0xea76('0xf')][_0xea76('0x12')]);return _0x5eb746(_0x1c6723[_0xea76('0xf')]['message']);}else{logger[_0xea76('0xa')](_0xea76('0x11'),_0x45ac1b,_0xea76('0xb'));_0x5eb746(_0x1c6723[_0xea76('0x13')][_0xea76('0x12')]);}})[_0xea76('0x14')](function(_0x3b47fa){logger[_0xea76('0xf')](_0xea76('0x11'),_0x45ac1b,_0x3b47fa);_0x55aae7(_0x3b47fa);});});}
\ No newline at end of file
index 1837436..4b9934b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf95b=['get','isAuthenticated','index','/:id','create','update','delete','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./cloudProvider.controller'];(function(_0xb0f7c3,_0x4eae95){var _0x28ea68=function(_0x4395a7){while(--_0x4395a7){_0xb0f7c3['push'](_0xb0f7c3['shift']());}};_0x28ea68(++_0x4eae95);}(_0xf95b,0x197));var _0xbf95=function(_0xc41584,_0x36b9e4){_0xc41584=_0xc41584-0x0;var _0x2c9521=_0xf95b[_0xc41584];return _0x2c9521;};'use strict';var multer=require('multer');var util=require('util');var path=require(_0xbf95('0x0'));var timeout=require(_0xbf95('0x1'));var express=require(_0xbf95('0x2'));var router=express[_0xbf95('0x3')]();var fs_extra=require(_0xbf95('0x4'));var auth=require(_0xbf95('0x5'));var interaction=require(_0xbf95('0x6'));var config=require(_0xbf95('0x7'));var controller=require(_0xbf95('0x8'));router[_0xbf95('0x9')]('/',auth[_0xbf95('0xa')](),controller[_0xbf95('0xb')]);router['get'](_0xbf95('0xc'),auth[_0xbf95('0xa')](),controller['show']);router['post']('/',auth['isAuthenticated'](),controller[_0xbf95('0xd')]);router['put'](_0xbf95('0xc'),auth[_0xbf95('0xa')](),controller[_0xbf95('0xe')]);router[_0xbf95('0xf')](_0xbf95('0xc'),auth[_0xbf95('0xa')](),controller['destroy']);module['exports']=router;
\ No newline at end of file
+var _0x6c0c=['delete','destroy','exports','multer','util','express','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','isAuthenticated','index','get','/:id','show','post','create','update'];(function(_0x20e7e3,_0x1529be){var _0x14b9de=function(_0xa82925){while(--_0xa82925){_0x20e7e3['push'](_0x20e7e3['shift']());}};_0x14b9de(++_0x1529be);}(_0x6c0c,0x18f));var _0xc6c0=function(_0x4c32a5,_0x2ae3ef){_0x4c32a5=_0x4c32a5-0x0;var _0x1a7fa9=_0x6c0c[_0x4c32a5];return _0x1a7fa9;};'use strict';var multer=require(_0xc6c0('0x0'));var util=require(_0xc6c0('0x1'));var path=require('path');var timeout=require('connect-timeout');var express=require(_0xc6c0('0x2'));var router=express['Router']();var fs_extra=require(_0xc6c0('0x3'));var auth=require(_0xc6c0('0x4'));var interaction=require(_0xc6c0('0x5'));var config=require(_0xc6c0('0x6'));var controller=require('./cloudProvider.controller');router['get']('/',auth[_0xc6c0('0x7')](),controller[_0xc6c0('0x8')]);router[_0xc6c0('0x9')](_0xc6c0('0xa'),auth[_0xc6c0('0x7')](),controller[_0xc6c0('0xb')]);router[_0xc6c0('0xc')]('/',auth[_0xc6c0('0x7')](),controller[_0xc6c0('0xd')]);router['put']('/:id',auth[_0xc6c0('0x7')](),controller[_0xc6c0('0xe')]);router[_0xc6c0('0xf')](_0xc6c0('0xa'),auth[_0xc6c0('0x7')](),controller[_0xc6c0('0x10')]);module[_0xc6c0('0x11')]=router;
\ No newline at end of file
index 2394654..8598232 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x80a1=['STRING','sequelize'];(function(_0x3cb306,_0x5e3f86){var _0x1d2f07=function(_0x8ffab3){while(--_0x8ffab3){_0x3cb306['push'](_0x3cb306['shift']());}};_0x1d2f07(++_0x5e3f86);}(_0x80a1,0x185));var _0x180a=function(_0x396795,_0x4b7db4){_0x396795=_0x396795-0x0;var _0x1067bf=_0x80a1[_0x396795];return _0x1067bf;};'use strict';var Sequelize=require(_0x180a('0x0'));module['exports']={'name':{'type':Sequelize[_0x180a('0x1')],'unique':'name','allowNull':![],'validate':{'notEmpty':!![]}},'vat':{'type':Sequelize['STRING']},'companyId':{'type':Sequelize[_0x180a('0x1')]},'website':{'type':Sequelize[_0x180a('0x1')]},'phone':{'type':Sequelize[_0x180a('0x1')]},'fax':{'type':Sequelize[_0x180a('0x1')]},'type':{'type':Sequelize[_0x180a('0x1')]},'street':{'type':Sequelize[_0x180a('0x1')]},'postalCode':{'type':Sequelize[_0x180a('0x1')]},'city':{'type':Sequelize[_0x180a('0x1')]},'country':{'type':Sequelize[_0x180a('0x1')]},'email':{'type':Sequelize[_0x180a('0x1')],'validate':{'isEmail':!![]}},'emailDomain':{'type':Sequelize[_0x180a('0x1')]},'sStreet':{'type':Sequelize['STRING']},'sPostalCode':{'type':Sequelize[_0x180a('0x1')]},'sCity':{'type':Sequelize[_0x180a('0x1')]},'sCountry':{'type':Sequelize[_0x180a('0x1')]},'description':{'type':Sequelize[_0x180a('0x1')]}};
\ No newline at end of file
+var _0x9f75=['name','sequelize','STRING'];(function(_0x2b5db6,_0x1c1e34){var _0x52356e=function(_0x337c2f){while(--_0x337c2f){_0x2b5db6['push'](_0x2b5db6['shift']());}};_0x52356e(++_0x1c1e34);}(_0x9f75,0x15a));var _0x59f7=function(_0x29d08f,_0x233bdb){_0x29d08f=_0x29d08f-0x0;var _0x33052a=_0x9f75[_0x29d08f];return _0x33052a;};'use strict';var Sequelize=require(_0x59f7('0x0'));module['exports']={'name':{'type':Sequelize[_0x59f7('0x1')],'unique':_0x59f7('0x2'),'allowNull':![],'validate':{'notEmpty':!![]}},'vat':{'type':Sequelize['STRING']},'companyId':{'type':Sequelize['STRING']},'website':{'type':Sequelize[_0x59f7('0x1')]},'phone':{'type':Sequelize[_0x59f7('0x1')]},'fax':{'type':Sequelize[_0x59f7('0x1')]},'type':{'type':Sequelize[_0x59f7('0x1')]},'street':{'type':Sequelize['STRING']},'postalCode':{'type':Sequelize[_0x59f7('0x1')]},'city':{'type':Sequelize[_0x59f7('0x1')]},'country':{'type':Sequelize['STRING']},'email':{'type':Sequelize['STRING'],'validate':{'isEmail':!![]}},'emailDomain':{'type':Sequelize[_0x59f7('0x1')]},'sStreet':{'type':Sequelize[_0x59f7('0x1')]},'sPostalCode':{'type':Sequelize[_0x59f7('0x1')]},'sCity':{'type':Sequelize[_0x59f7('0x1')]},'sCountry':{'type':Sequelize[_0x59f7('0x1')]},'description':{'type':Sequelize[_0x59f7('0x1')]}};
\ No newline at end of file
index 95ea7bc..3de059b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xfea5=['rawAttributes','create','user','get','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','UserProfileSection','find','userProfileId','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','update','body','params','addContacts','CmContact','ids','omit','getContacts','findOne','length','nolimit','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','util','path','sox','to-csv','lodash','squel','jsforce','querystring','papaparse','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','sendStatus','status','end','json','offset','undefined','count','Content-Range','reject','then','destroy','Companies','UserProfileResource','error','name','send','CmCompany','describe','model','keys','query','filters','intersection','attributes','fields','hasOwnProperty','limit','order','sort','where','pick','merge','map','filter','options','includeAll','include','findAll','rows','catch','show'];(function(_0x256e87,_0x489c85){var _0x2e0861=function(_0x5defe0){while(--_0x5defe0){_0x256e87['push'](_0x256e87['shift']());}};_0x2e0861(++_0x489c85);}(_0xfea5,0x1c3));var _0x5fea=function(_0x1c59c1,_0x167d0d){_0x1c59c1=_0x1c59c1-0x0;var _0xc7d80a=_0xfea5[_0x1c59c1];return _0xc7d80a;};'use strict';var emlformat=require(_0x5fea('0x0'));var rimraf=require(_0x5fea('0x1'));var zipdir=require(_0x5fea('0x2'));var jsonpatch=require(_0x5fea('0x3'));var rp=require(_0x5fea('0x4'));var moment=require(_0x5fea('0x5'));var BPromise=require(_0x5fea('0x6'));var Mustache=require('mustache');var util=require(_0x5fea('0x7'));var path=require(_0x5fea('0x8'));var sox=require(_0x5fea('0x9'));var csv=require(_0x5fea('0xa'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x5fea('0xb'));var squel=require(_0x5fea('0xc'));var crypto=require('crypto');var jsforce=require(_0x5fea('0xd'));var deskjs=require('desk.js');var toCsv=require(_0x5fea('0xa'));var querystring=require(_0x5fea('0xe'));var Papa=require(_0x5fea('0xf'));var Redis=require('ioredis');var authService=require(_0x5fea('0x10'));var qs=require(_0x5fea('0x11'));var as=require(_0x5fea('0x12'));var hardwareService=require(_0x5fea('0x13'));var logger=require(_0x5fea('0x14'))(_0x5fea('0x15'));var utils=require(_0x5fea('0x16'));var config=require(_0x5fea('0x17'));var licenseUtil=require('../../config/license/util');var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x74c61f,_0xd20068){_0xd20068=_0xd20068||0xcc;return function(_0x537daf){if(_0x537daf){return _0x74c61f[_0x5fea('0x18')](_0xd20068);}return _0x74c61f[_0x5fea('0x19')](_0xd20068)[_0x5fea('0x1a')]();};}function respondWithResult(_0x377cf7,_0x426ab9){_0x426ab9=_0x426ab9||0xc8;return function(_0x581a3c){if(_0x581a3c){return _0x377cf7[_0x5fea('0x19')](_0x426ab9)[_0x5fea('0x1b')](_0x581a3c);}};}function respondWithFilteredResult(_0x5e4330,_0x184964){return function(_0x589d59){if(_0x589d59){var _0x2f9135=typeof _0x184964[_0x5fea('0x1c')]===_0x5fea('0x1d')&&typeof _0x184964['limit']===_0x5fea('0x1d');var _0x2ef189=_0x589d59[_0x5fea('0x1e')];var _0x57f293=_0x2f9135?0x0:_0x184964[_0x5fea('0x1c')];var _0x2fb3f6=_0x2f9135?_0x589d59['count']:_0x184964[_0x5fea('0x1c')]+_0x184964['limit'];var _0x354b06;if(_0x2fb3f6>=_0x2ef189){_0x2fb3f6=_0x2ef189;_0x354b06=0xc8;}else{_0x354b06=0xce;}_0x5e4330[_0x5fea('0x19')](_0x354b06);return _0x5e4330['set'](_0x5fea('0x1f'),_0x57f293+'-'+_0x2fb3f6+'/'+_0x2ef189)[_0x5fea('0x1b')](_0x589d59);}return null;};}function patchUpdates(_0x47739e){return function(_0x1cdadd){try{jsonpatch['apply'](_0x1cdadd,_0x47739e,!![]);}catch(_0x4e1656){return BPromise[_0x5fea('0x20')](_0x4e1656);}return _0x1cdadd['save']();};}function saveUpdates(_0x4cdcfb,_0x33050b){return function(_0x596cfa){if(_0x596cfa){return _0x596cfa['update'](_0x4cdcfb)[_0x5fea('0x21')](function(_0x35c5da){return _0x35c5da;});}return null;};}function removeEntity(_0x5ffe8f,_0x55faa4){return function(_0x946f9e){if(_0x946f9e){return _0x946f9e[_0x5fea('0x22')]()['then'](function(){var _0x59444d=_0x946f9e['get']({'plain':!![]});var _0x43655a=_0x5fea('0x23');return db[_0x5fea('0x24')]['destroy']({'where':{'type':_0x43655a,'resourceId':_0x59444d['id']}})[_0x5fea('0x21')](function(){return _0x946f9e;});})[_0x5fea('0x21')](function(){_0x5ffe8f['status'](0xcc)[_0x5fea('0x1a')]();});}};}function handleEntityNotFound(_0x240e08,_0x365086){return function(_0x3d4e16){if(!_0x3d4e16){_0x240e08[_0x5fea('0x18')](0x194);}return _0x3d4e16;};}function handleError(_0x24807e,_0x4c95a2){_0x4c95a2=_0x4c95a2||0x1f4;return function(_0x347147){logger[_0x5fea('0x25')](_0x347147['stack']);if(_0x347147[_0x5fea('0x26')]){delete _0x347147[_0x5fea('0x26')];}_0x24807e['status'](_0x4c95a2)[_0x5fea('0x27')](_0x347147);};}exports['index']=function(_0x40a004,_0xf06677){var _0x5ad325={},_0x25e3c8={},_0x35f6dc={'count':0x0,'rows':[]};return db[_0x5fea('0x28')][_0x5fea('0x29')]()[_0x5fea('0x21')](function(_0x112dc1){_0x25e3c8[_0x5fea('0x2a')]=_[_0x5fea('0x2b')](_0x112dc1);_0x25e3c8[_0x5fea('0x2c')]=_[_0x5fea('0x2b')](_0x40a004['query']);_0x25e3c8[_0x5fea('0x2d')]=_[_0x5fea('0x2e')](_0x25e3c8[_0x5fea('0x2a')],_0x25e3c8[_0x5fea('0x2c')]);_0x5ad325[_0x5fea('0x2f')]=_[_0x5fea('0x2e')](_0x25e3c8[_0x5fea('0x2a')],qs[_0x5fea('0x30')](_0x40a004[_0x5fea('0x2c')]['fields']));_0x5ad325['attributes']=_0x5ad325[_0x5fea('0x2f')]['length']?_0x5ad325[_0x5fea('0x2f')]:_0x25e3c8[_0x5fea('0x2a')];if(!_0x40a004[_0x5fea('0x2c')][_0x5fea('0x31')]('nolimit')){_0x5ad325[_0x5fea('0x32')]=qs['limit'](_0x40a004[_0x5fea('0x2c')][_0x5fea('0x32')]);_0x5ad325[_0x5fea('0x1c')]=qs[_0x5fea('0x1c')](_0x40a004[_0x5fea('0x2c')][_0x5fea('0x1c')]);}_0x5ad325[_0x5fea('0x33')]=qs[_0x5fea('0x34')](_0x40a004['query'][_0x5fea('0x34')]);_0x5ad325[_0x5fea('0x35')]=qs['filters'](_[_0x5fea('0x36')](_0x40a004[_0x5fea('0x2c')],_0x25e3c8[_0x5fea('0x2d')]),_0x112dc1);if(_0x40a004['query']['filter']){_0x5ad325[_0x5fea('0x35')]=_[_0x5fea('0x37')](_0x5ad325[_0x5fea('0x35')],{'$or':_[_0x5fea('0x38')](_0x5ad325[_0x5fea('0x2f')],function(_0x4270c9){var _0x278a61={};_0x278a61[_0x4270c9]={'$like':'%'+_0x40a004[_0x5fea('0x2c')][_0x5fea('0x39')]+'%'};return _0x278a61;})});}_0x5ad325=_['merge']({},_0x5ad325,_0x40a004[_0x5fea('0x3a')]);var _0x16f69c={'where':_0x5ad325['where']};return db[_0x5fea('0x28')][_0x5fea('0x1e')](_0x16f69c)[_0x5fea('0x21')](function(_0x3e6238){_0x35f6dc[_0x5fea('0x1e')]=_0x3e6238;if(_0x40a004['query'][_0x5fea('0x3b')]){_0x5ad325[_0x5fea('0x3c')]=[{'all':!![]}];}return db['CmCompany'][_0x5fea('0x3d')](_0x5ad325);})[_0x5fea('0x21')](function(_0xc10ab5){_0x35f6dc[_0x5fea('0x3e')]=_0xc10ab5;return _0x35f6dc;})['then'](respondWithFilteredResult(_0xf06677,_0x5ad325))['catch'](handleError(_0xf06677,null));})[_0x5fea('0x3f')](handleError(_0xf06677,null));};exports[_0x5fea('0x40')]=function(_0x5d006b,_0x3d7046){var _0x3d1f1c={'raw':![],'where':{'id':_0x5d006b['params']['id']}},_0x2635ee={};_0x2635ee['model']=_[_0x5fea('0x2b')](db[_0x5fea('0x28')][_0x5fea('0x41')]);_0x2635ee['query']=_[_0x5fea('0x2b')](_0x5d006b['query']);_0x2635ee[_0x5fea('0x2d')]=_[_0x5fea('0x2e')](_0x2635ee[_0x5fea('0x2a')],_0x2635ee['query']);_0x3d1f1c[_0x5fea('0x2f')]=_['intersection'](_0x2635ee[_0x5fea('0x2a')],qs[_0x5fea('0x30')](_0x5d006b[_0x5fea('0x2c')][_0x5fea('0x30')]));_0x3d1f1c[_0x5fea('0x2f')]=_0x3d1f1c[_0x5fea('0x2f')]['length']?_0x3d1f1c[_0x5fea('0x2f')]:_0x2635ee[_0x5fea('0x2a')];if(_0x5d006b['query'][_0x5fea('0x3b')]){_0x3d1f1c['include']=[{'all':!![]}];}_0x3d1f1c=_[_0x5fea('0x37')]({},_0x3d1f1c,_0x5d006b[_0x5fea('0x3a')]);return db[_0x5fea('0x28')]['find'](_0x3d1f1c)[_0x5fea('0x21')](handleEntityNotFound(_0x3d7046,null))['then'](respondWithResult(_0x3d7046,null))[_0x5fea('0x3f')](handleError(_0x3d7046,null));};exports[_0x5fea('0x42')]=function(_0x4ff501,_0x1dabb7){return db[_0x5fea('0x28')]['create'](_0x4ff501['body'],{})[_0x5fea('0x21')](function(_0x5ef6ee){var _0x51c0f6=_0x4ff501[_0x5fea('0x43')][_0x5fea('0x44')]({'plain':!![]});if(!_0x51c0f6)throw new Error(_0x5fea('0x45'));if(_0x51c0f6[_0x5fea('0x46')]===_0x5fea('0x43')){var _0x34166c=_0x5ef6ee[_0x5fea('0x44')]({'plain':!![]});var _0x53000c='Companies';return db[_0x5fea('0x47')][_0x5fea('0x48')]({'where':{'name':_0x53000c,'userProfileId':_0x51c0f6[_0x5fea('0x49')]},'raw':!![]})[_0x5fea('0x21')](function(_0x4e54dd){if(_0x4e54dd&&_0x4e54dd['autoAssociation']===0x0){return db['UserProfileResource']['create']({'name':_0x34166c[_0x5fea('0x26')],'resourceId':_0x34166c['id'],'type':_0x4e54dd['name'],'sectionId':_0x4e54dd['id']},{})['then'](function(){return _0x5ef6ee;});}else{return _0x5ef6ee;}})[_0x5fea('0x3f')](function(_0x578548){logger[_0x5fea('0x25')](_0x5fea('0x4a'),_0x578548);throw _0x578548;});}return _0x5ef6ee;})[_0x5fea('0x21')](respondWithResult(_0x1dabb7,0xc9))[_0x5fea('0x3f')](handleError(_0x1dabb7,null));};exports[_0x5fea('0x4b')]=function(_0x228d3b,_0x236271){if(_0x228d3b['body']['id']){delete _0x228d3b[_0x5fea('0x4c')]['id'];}return db[_0x5fea('0x28')][_0x5fea('0x48')]({'where':{'id':_0x228d3b['params']['id']}})['then'](handleEntityNotFound(_0x236271,null))['then'](saveUpdates(_0x228d3b[_0x5fea('0x4c')],null))[_0x5fea('0x21')](respondWithResult(_0x236271,null))['catch'](handleError(_0x236271,null));};exports[_0x5fea('0x22')]=function(_0x3c597d,_0x235455){return db[_0x5fea('0x28')]['find']({'where':{'id':_0x3c597d[_0x5fea('0x4d')]['id']}})[_0x5fea('0x21')](handleEntityNotFound(_0x235455,null))[_0x5fea('0x21')](removeEntity(_0x235455,null))['catch'](handleError(_0x235455,null));};exports[_0x5fea('0x29')]=function(_0x101b65,_0x30d7c1){return db[_0x5fea('0x28')][_0x5fea('0x29')]()[_0x5fea('0x21')](respondWithResult(_0x30d7c1,null))[_0x5fea('0x3f')](handleError(_0x30d7c1,null));};exports[_0x5fea('0x4e')]=function(_0x9597c4,_0x19803a,_0xce18aa){return db[_0x5fea('0x4f')][_0x5fea('0x48')]({'where':{'id':_0x9597c4[_0x5fea('0x4d')]['id']}})['then'](handleEntityNotFound(_0x19803a,null))[_0x5fea('0x21')](function(_0x4e18db){if(_0x4e18db){return _0x4e18db[_0x5fea('0x4e')](_0x9597c4[_0x5fea('0x4c')][_0x5fea('0x50')],_[_0x5fea('0x51')](_0x9597c4[_0x5fea('0x4c')],[_0x5fea('0x50'),'id'])||{});}})[_0x5fea('0x21')](respondWithResult(_0x19803a,null))[_0x5fea('0x3f')](handleError(_0x19803a,null));};exports[_0x5fea('0x52')]=function(_0x43928f,_0x43b780,_0x369dfd){var _0x588845={};var _0x1c7d94={};var _0x1c6a39;var _0x262b76;return db['CmCompany'][_0x5fea('0x53')]({'where':{'id':_0x43928f['params']['id']}})[_0x5fea('0x21')](handleEntityNotFound(_0x43b780,null))['then'](function(_0x209137){if(_0x209137){_0x1c6a39=_0x209137;_0x1c7d94['model']=_[_0x5fea('0x2b')](db['CmContact'][_0x5fea('0x41')]);_0x1c7d94[_0x5fea('0x2c')]=_['keys'](_0x43928f[_0x5fea('0x2c')]);_0x1c7d94[_0x5fea('0x2d')]=_[_0x5fea('0x2e')](_0x1c7d94['model'],_0x1c7d94[_0x5fea('0x2c')]);_0x588845['attributes']=_[_0x5fea('0x2e')](_0x1c7d94[_0x5fea('0x2a')],qs[_0x5fea('0x30')](_0x43928f['query']['fields']));_0x588845[_0x5fea('0x2f')]=_0x588845[_0x5fea('0x2f')][_0x5fea('0x54')]?_0x588845['attributes']:_0x1c7d94[_0x5fea('0x2a')];_0x588845[_0x5fea('0x33')]=qs[_0x5fea('0x34')](_0x43928f[_0x5fea('0x2c')][_0x5fea('0x34')]);_0x588845['where']=qs[_0x5fea('0x2d')](_[_0x5fea('0x36')](_0x43928f['query'],_0x1c7d94[_0x5fea('0x2d')]));if(_0x43928f['query']['filter']){_0x588845[_0x5fea('0x35')]=_['merge'](_0x588845[_0x5fea('0x35')],{'$or':_[_0x5fea('0x38')](_0x588845['attributes'],function(_0x5b4e08){var _0x46f433={};_0x46f433[_0x5b4e08]={'$like':'%'+_0x43928f[_0x5fea('0x2c')]['filter']+'%'};return _0x46f433;})});}_0x588845=_[_0x5fea('0x37')]({},_0x588845,_0x43928f[_0x5fea('0x3a')]);return _0x1c6a39['getContacts'](_0x588845);}})['then'](function(_0x12b77f){if(_0x12b77f){_0x262b76=_0x12b77f[_0x5fea('0x54')];if(!_0x43928f[_0x5fea('0x2c')][_0x5fea('0x31')](_0x5fea('0x55'))){_0x588845[_0x5fea('0x32')]=qs['limit'](_0x43928f[_0x5fea('0x2c')][_0x5fea('0x32')]);_0x588845[_0x5fea('0x1c')]=qs['offset'](_0x43928f['query'][_0x5fea('0x1c')]);}return _0x1c6a39[_0x5fea('0x52')](_0x588845);}})[_0x5fea('0x21')](function(_0x263d5a){if(_0x263d5a){return _0x263d5a?{'count':_0x262b76,'rows':_0x263d5a}:null;}})[_0x5fea('0x21')](respondWithResult(_0x43b780,null))[_0x5fea('0x3f')](handleError(_0x43b780,null));};
\ No newline at end of file
+var _0x58a8=['update','then','get','Companies','UserProfileResource','destroy','error','stack','name','send','index','model','keys','query','filters','intersection','fields','attributes','length','hasOwnProperty','nolimit','order','sort','where','pick','merge','map','filter','options','CmCompany','includeAll','include','rows','catch','params','rawAttributes','find','create','body','user','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','describe','addContacts','CmContact','ids','getContacts','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','bluebird','mustache','path','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/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','offset','undefined','limit','count','set','Content-Range','save'];(function(_0x4d2459,_0x3c1d9d){var _0x565550=function(_0x322dfd){while(--_0x322dfd){_0x4d2459['push'](_0x4d2459['shift']());}};_0x565550(++_0x3c1d9d);}(_0x58a8,0x131));var _0x858a=function(_0x1a0df5,_0x48ae51){_0x1a0df5=_0x1a0df5-0x0;var _0x43ced8=_0x58a8[_0x1a0df5];return _0x43ced8;};'use strict';var emlformat=require(_0x858a('0x0'));var rimraf=require(_0x858a('0x1'));var zipdir=require(_0x858a('0x2'));var jsonpatch=require(_0x858a('0x3'));var rp=require(_0x858a('0x4'));var moment=require('moment');var BPromise=require(_0x858a('0x5'));var Mustache=require(_0x858a('0x6'));var util=require('util');var path=require(_0x858a('0x7'));var sox=require(_0x858a('0x8'));var csv=require(_0x858a('0x9'));var ejs=require(_0x858a('0xa'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x858a('0xb'));var squel=require(_0x858a('0xc'));var crypto=require(_0x858a('0xd'));var jsforce=require(_0x858a('0xe'));var deskjs=require(_0x858a('0xf'));var toCsv=require(_0x858a('0x9'));var querystring=require(_0x858a('0x10'));var Papa=require(_0x858a('0x11'));var Redis=require(_0x858a('0x12'));var authService=require(_0x858a('0x13'));var qs=require(_0x858a('0x14'));var as=require(_0x858a('0x15'));var hardwareService=require(_0x858a('0x16'));var logger=require(_0x858a('0x17'))(_0x858a('0x18'));var utils=require(_0x858a('0x19'));var config=require(_0x858a('0x1a'));var licenseUtil=require(_0x858a('0x1b'));var db=require(_0x858a('0x1c'))['db'];function respondWithStatusCode(_0x1f7ea6,_0x249306){_0x249306=_0x249306||0xcc;return function(_0x5f3a66){if(_0x5f3a66){return _0x1f7ea6[_0x858a('0x1d')](_0x249306);}return _0x1f7ea6[_0x858a('0x1e')](_0x249306)[_0x858a('0x1f')]();};}function respondWithResult(_0x200617,_0x198bbe){_0x198bbe=_0x198bbe||0xc8;return function(_0xa66a2b){if(_0xa66a2b){return _0x200617['status'](_0x198bbe)['json'](_0xa66a2b);}};}function respondWithFilteredResult(_0x27c46f,_0x46ef35){return function(_0x16b7bf){if(_0x16b7bf){var _0x185e16=typeof _0x46ef35[_0x858a('0x20')]===_0x858a('0x21')&&typeof _0x46ef35[_0x858a('0x22')]===_0x858a('0x21');var _0x30353b=_0x16b7bf[_0x858a('0x23')];var _0x3c201a=_0x185e16?0x0:_0x46ef35['offset'];var _0xa50880=_0x185e16?_0x16b7bf[_0x858a('0x23')]:_0x46ef35['offset']+_0x46ef35[_0x858a('0x22')];var _0x14cec1;if(_0xa50880>=_0x30353b){_0xa50880=_0x30353b;_0x14cec1=0xc8;}else{_0x14cec1=0xce;}_0x27c46f[_0x858a('0x1e')](_0x14cec1);return _0x27c46f[_0x858a('0x24')](_0x858a('0x25'),_0x3c201a+'-'+_0xa50880+'/'+_0x30353b)['json'](_0x16b7bf);}return null;};}function patchUpdates(_0x495a1d){return function(_0x1df856){try{jsonpatch['apply'](_0x1df856,_0x495a1d,!![]);}catch(_0x26bc4b){return BPromise['reject'](_0x26bc4b);}return _0x1df856[_0x858a('0x26')]();};}function saveUpdates(_0x1efd1d,_0x2729df){return function(_0x466926){if(_0x466926){return _0x466926[_0x858a('0x27')](_0x1efd1d)[_0x858a('0x28')](function(_0xd69c65){return _0xd69c65;});}return null;};}function removeEntity(_0x510822,_0x565f73){return function(_0xba570b){if(_0xba570b){return _0xba570b['destroy']()[_0x858a('0x28')](function(){var _0x46260b=_0xba570b[_0x858a('0x29')]({'plain':!![]});var _0x50458a=_0x858a('0x2a');return db[_0x858a('0x2b')][_0x858a('0x2c')]({'where':{'type':_0x50458a,'resourceId':_0x46260b['id']}})['then'](function(){return _0xba570b;});})[_0x858a('0x28')](function(){_0x510822[_0x858a('0x1e')](0xcc)[_0x858a('0x1f')]();});}};}function handleEntityNotFound(_0xe60186,_0x3c5bb4){return function(_0x54f8c1){if(!_0x54f8c1){_0xe60186[_0x858a('0x1d')](0x194);}return _0x54f8c1;};}function handleError(_0x4e9629,_0x1a2ef7){_0x1a2ef7=_0x1a2ef7||0x1f4;return function(_0x5c615c){logger[_0x858a('0x2d')](_0x5c615c[_0x858a('0x2e')]);if(_0x5c615c[_0x858a('0x2f')]){delete _0x5c615c[_0x858a('0x2f')];}_0x4e9629['status'](_0x1a2ef7)[_0x858a('0x30')](_0x5c615c);};}exports[_0x858a('0x31')]=function(_0x2e4318,_0x262685){var _0x431c3d={},_0x274c53={},_0x55d79d={'count':0x0,'rows':[]};return db['CmCompany']['describe']()['then'](function(_0xa33526){_0x274c53[_0x858a('0x32')]=_[_0x858a('0x33')](_0xa33526);_0x274c53[_0x858a('0x34')]=_[_0x858a('0x33')](_0x2e4318['query']);_0x274c53[_0x858a('0x35')]=_[_0x858a('0x36')](_0x274c53['model'],_0x274c53[_0x858a('0x34')]);_0x431c3d['attributes']=_[_0x858a('0x36')](_0x274c53[_0x858a('0x32')],qs[_0x858a('0x37')](_0x2e4318[_0x858a('0x34')][_0x858a('0x37')]));_0x431c3d[_0x858a('0x38')]=_0x431c3d[_0x858a('0x38')][_0x858a('0x39')]?_0x431c3d['attributes']:_0x274c53[_0x858a('0x32')];if(!_0x2e4318[_0x858a('0x34')][_0x858a('0x3a')](_0x858a('0x3b'))){_0x431c3d[_0x858a('0x22')]=qs[_0x858a('0x22')](_0x2e4318['query'][_0x858a('0x22')]);_0x431c3d[_0x858a('0x20')]=qs[_0x858a('0x20')](_0x2e4318['query'][_0x858a('0x20')]);}_0x431c3d[_0x858a('0x3c')]=qs[_0x858a('0x3d')](_0x2e4318[_0x858a('0x34')][_0x858a('0x3d')]);_0x431c3d[_0x858a('0x3e')]=qs[_0x858a('0x35')](_[_0x858a('0x3f')](_0x2e4318['query'],_0x274c53[_0x858a('0x35')]),_0xa33526);if(_0x2e4318['query']['filter']){_0x431c3d[_0x858a('0x3e')]=_[_0x858a('0x40')](_0x431c3d[_0x858a('0x3e')],{'$or':_[_0x858a('0x41')](_0x431c3d[_0x858a('0x38')],function(_0xa001f9){var _0x2c9cd={};_0x2c9cd[_0xa001f9]={'$like':'%'+_0x2e4318[_0x858a('0x34')][_0x858a('0x42')]+'%'};return _0x2c9cd;})});}_0x431c3d=_[_0x858a('0x40')]({},_0x431c3d,_0x2e4318[_0x858a('0x43')]);var _0x10e0de={'where':_0x431c3d['where']};return db[_0x858a('0x44')]['count'](_0x10e0de)[_0x858a('0x28')](function(_0x28fac9){_0x55d79d[_0x858a('0x23')]=_0x28fac9;if(_0x2e4318[_0x858a('0x34')][_0x858a('0x45')]){_0x431c3d[_0x858a('0x46')]=[{'all':!![]}];}return db[_0x858a('0x44')]['findAll'](_0x431c3d);})['then'](function(_0x5df5a4){_0x55d79d[_0x858a('0x47')]=_0x5df5a4;return _0x55d79d;})[_0x858a('0x28')](respondWithFilteredResult(_0x262685,_0x431c3d))[_0x858a('0x48')](handleError(_0x262685,null));})[_0x858a('0x48')](handleError(_0x262685,null));};exports['show']=function(_0x1c1711,_0x5d588a){var _0x1932a0={'raw':![],'where':{'id':_0x1c1711[_0x858a('0x49')]['id']}},_0x52df4c={};_0x52df4c['model']=_[_0x858a('0x33')](db['CmCompany'][_0x858a('0x4a')]);_0x52df4c[_0x858a('0x34')]=_[_0x858a('0x33')](_0x1c1711[_0x858a('0x34')]);_0x52df4c[_0x858a('0x35')]=_['intersection'](_0x52df4c['model'],_0x52df4c['query']);_0x1932a0[_0x858a('0x38')]=_['intersection'](_0x52df4c[_0x858a('0x32')],qs[_0x858a('0x37')](_0x1c1711['query']['fields']));_0x1932a0['attributes']=_0x1932a0[_0x858a('0x38')][_0x858a('0x39')]?_0x1932a0['attributes']:_0x52df4c['model'];if(_0x1c1711[_0x858a('0x34')]['includeAll']){_0x1932a0[_0x858a('0x46')]=[{'all':!![]}];}_0x1932a0=_[_0x858a('0x40')]({},_0x1932a0,_0x1c1711['options']);return db[_0x858a('0x44')][_0x858a('0x4b')](_0x1932a0)[_0x858a('0x28')](handleEntityNotFound(_0x5d588a,null))[_0x858a('0x28')](respondWithResult(_0x5d588a,null))[_0x858a('0x48')](handleError(_0x5d588a,null));};exports[_0x858a('0x4c')]=function(_0x19bf4a,_0x492512){return db[_0x858a('0x44')][_0x858a('0x4c')](_0x19bf4a[_0x858a('0x4d')],{})['then'](function(_0x4b40f6){var _0x49c27b=_0x19bf4a[_0x858a('0x4e')][_0x858a('0x29')]({'plain':!![]});if(!_0x49c27b)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0x49c27b['role']===_0x858a('0x4e')){var _0x23d9e9=_0x4b40f6[_0x858a('0x29')]({'plain':!![]});var _0x1df364=_0x858a('0x2a');return db['UserProfileSection'][_0x858a('0x4b')]({'where':{'name':_0x1df364,'userProfileId':_0x49c27b['userProfileId']},'raw':!![]})[_0x858a('0x28')](function(_0x354004){if(_0x354004&&_0x354004[_0x858a('0x4f')]===0x0){return db[_0x858a('0x2b')][_0x858a('0x4c')]({'name':_0x23d9e9[_0x858a('0x2f')],'resourceId':_0x23d9e9['id'],'type':_0x354004['name'],'sectionId':_0x354004['id']},{})['then'](function(){return _0x4b40f6;});}else{return _0x4b40f6;}})['catch'](function(_0x82f227){logger[_0x858a('0x2d')](_0x858a('0x50'),_0x82f227);throw _0x82f227;});}return _0x4b40f6;})[_0x858a('0x28')](respondWithResult(_0x492512,0xc9))['catch'](handleError(_0x492512,null));};exports[_0x858a('0x27')]=function(_0x5ab2d8,_0xdf6d74){if(_0x5ab2d8[_0x858a('0x4d')]['id']){delete _0x5ab2d8['body']['id'];}return db['CmCompany'][_0x858a('0x4b')]({'where':{'id':_0x5ab2d8[_0x858a('0x49')]['id']}})[_0x858a('0x28')](handleEntityNotFound(_0xdf6d74,null))[_0x858a('0x28')](saveUpdates(_0x5ab2d8[_0x858a('0x4d')],null))[_0x858a('0x28')](respondWithResult(_0xdf6d74,null))[_0x858a('0x48')](handleError(_0xdf6d74,null));};exports[_0x858a('0x2c')]=function(_0x4e53b8,_0x4cf217){return db[_0x858a('0x44')][_0x858a('0x4b')]({'where':{'id':_0x4e53b8['params']['id']}})[_0x858a('0x28')](handleEntityNotFound(_0x4cf217,null))['then'](removeEntity(_0x4cf217,null))['catch'](handleError(_0x4cf217,null));};exports[_0x858a('0x51')]=function(_0xdf0d6d,_0x199fc0){return db[_0x858a('0x44')][_0x858a('0x51')]()['then'](respondWithResult(_0x199fc0,null))['catch'](handleError(_0x199fc0,null));};exports[_0x858a('0x52')]=function(_0x4f0d3a,_0x18ce51,_0x4bebe7){return db[_0x858a('0x53')][_0x858a('0x4b')]({'where':{'id':_0x4f0d3a['params']['id']}})[_0x858a('0x28')](handleEntityNotFound(_0x18ce51,null))[_0x858a('0x28')](function(_0x32d53d){if(_0x32d53d){return _0x32d53d[_0x858a('0x52')](_0x4f0d3a[_0x858a('0x4d')][_0x858a('0x54')],_['omit'](_0x4f0d3a[_0x858a('0x4d')],[_0x858a('0x54'),'id'])||{});}})[_0x858a('0x28')](respondWithResult(_0x18ce51,null))[_0x858a('0x48')](handleError(_0x18ce51,null));};exports[_0x858a('0x55')]=function(_0x39e3d6,_0x358f7c,_0x5b6a53){var _0x54fa0a={};var _0x104924={};var _0x5ef094;var _0x78df4a;return db['CmCompany']['findOne']({'where':{'id':_0x39e3d6['params']['id']}})[_0x858a('0x28')](handleEntityNotFound(_0x358f7c,null))[_0x858a('0x28')](function(_0x225d01){if(_0x225d01){_0x5ef094=_0x225d01;_0x104924[_0x858a('0x32')]=_[_0x858a('0x33')](db[_0x858a('0x53')]['rawAttributes']);_0x104924['query']=_[_0x858a('0x33')](_0x39e3d6['query']);_0x104924[_0x858a('0x35')]=_[_0x858a('0x36')](_0x104924[_0x858a('0x32')],_0x104924[_0x858a('0x34')]);_0x54fa0a[_0x858a('0x38')]=_[_0x858a('0x36')](_0x104924[_0x858a('0x32')],qs[_0x858a('0x37')](_0x39e3d6[_0x858a('0x34')]['fields']));_0x54fa0a[_0x858a('0x38')]=_0x54fa0a['attributes']['length']?_0x54fa0a[_0x858a('0x38')]:_0x104924[_0x858a('0x32')];_0x54fa0a[_0x858a('0x3c')]=qs[_0x858a('0x3d')](_0x39e3d6[_0x858a('0x34')][_0x858a('0x3d')]);_0x54fa0a[_0x858a('0x3e')]=qs[_0x858a('0x35')](_[_0x858a('0x3f')](_0x39e3d6[_0x858a('0x34')],_0x104924[_0x858a('0x35')]));if(_0x39e3d6[_0x858a('0x34')][_0x858a('0x42')]){_0x54fa0a[_0x858a('0x3e')]=_[_0x858a('0x40')](_0x54fa0a['where'],{'$or':_[_0x858a('0x41')](_0x54fa0a['attributes'],function(_0x260171){var _0x544616={};_0x544616[_0x260171]={'$like':'%'+_0x39e3d6[_0x858a('0x34')][_0x858a('0x42')]+'%'};return _0x544616;})});}_0x54fa0a=_[_0x858a('0x40')]({},_0x54fa0a,_0x39e3d6[_0x858a('0x43')]);return _0x5ef094[_0x858a('0x55')](_0x54fa0a);}})[_0x858a('0x28')](function(_0x5c2f5a){if(_0x5c2f5a){_0x78df4a=_0x5c2f5a[_0x858a('0x39')];if(!_0x39e3d6[_0x858a('0x34')]['hasOwnProperty']('nolimit')){_0x54fa0a[_0x858a('0x22')]=qs['limit'](_0x39e3d6[_0x858a('0x34')][_0x858a('0x22')]);_0x54fa0a[_0x858a('0x20')]=qs[_0x858a('0x20')](_0x39e3d6[_0x858a('0x34')][_0x858a('0x20')]);}return _0x5ef094[_0x858a('0x55')](_0x54fa0a);}})[_0x858a('0x28')](function(_0x4e2f24){if(_0x4e2f24){return _0x4e2f24?{'count':_0x78df4a,'rows':_0x4e2f24}:null;}})[_0x858a('0x28')](respondWithResult(_0x358f7c,null))['catch'](handleError(_0x358f7c,null));};
\ No newline at end of file
index 725df3e..2a6b34f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc866=['rimraf','../../config/environment','./cmCompany.attributes','exports','define','CmCompany','lodash','util','api','moment','bluebird','request-promise','path'];(function(_0x4b075e,_0x57874c){var _0x31385c=function(_0x3ab6ef){while(--_0x3ab6ef){_0x4b075e['push'](_0x4b075e['shift']());}};_0x31385c(++_0x57874c);}(_0xc866,0x18c));var _0x6c86=function(_0x3e7ebf,_0x23332c){_0x3e7ebf=_0x3e7ebf-0x0;var _0x4e4bec=_0xc866[_0x3e7ebf];return _0x4e4bec;};'use strict';var _=require(_0x6c86('0x0'));var util=require(_0x6c86('0x1'));var logger=require('../../config/logger')(_0x6c86('0x2'));var moment=require(_0x6c86('0x3'));var BPromise=require(_0x6c86('0x4'));var rp=require(_0x6c86('0x5'));var fs=require('fs');var path=require(_0x6c86('0x6'));var rimraf=require(_0x6c86('0x7'));var config=require(_0x6c86('0x8'));var attributes=require(_0x6c86('0x9'));module[_0x6c86('0xa')]=function(_0x518365,_0x22b360){return _0x518365[_0x6c86('0xb')](_0x6c86('0xc'),attributes,{'tableName':'cm_companies','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x2e94=['lodash','util','../../config/logger','bluebird','request-promise','path','./cmCompany.attributes','exports','define','CmCompany','cm_companies'];(function(_0x16c081,_0x31f3ad){var _0x14940c=function(_0x100075){while(--_0x100075){_0x16c081['push'](_0x16c081['shift']());}};_0x14940c(++_0x31f3ad);}(_0x2e94,0xe7));var _0x42e9=function(_0xc3325c,_0x1f54e8){_0xc3325c=_0xc3325c-0x0;var _0x19e806=_0x2e94[_0xc3325c];return _0x19e806;};'use strict';var _=require(_0x42e9('0x0'));var util=require(_0x42e9('0x1'));var logger=require(_0x42e9('0x2'))('api');var moment=require('moment');var BPromise=require(_0x42e9('0x3'));var rp=require(_0x42e9('0x4'));var fs=require('fs');var path=require(_0x42e9('0x5'));var rimraf=require('rimraf');var config=require('../../config/environment');var attributes=require(_0x42e9('0x6'));module[_0x42e9('0x7')]=function(_0x4d3b53,_0x5cd3de){return _0x4d3b53[_0x42e9('0x8')](_0x42e9('0x9'),attributes,{'tableName':_0x42e9('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index b1481ca..63e6fc0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xba00=['result','catch','lodash','util','moment','bluebird','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','info','CmCompany,\x20%s,\x20%s','request\x20sent','debug','CmCompany,\x20%s,\x20%s,\x20%s','error','message'];(function(_0x21f931,_0x598b2d){var _0x3f083c=function(_0x1c7c49){while(--_0x1c7c49){_0x21f931['push'](_0x21f931['shift']());}};_0x3f083c(++_0x598b2d);}(_0xba00,0x162));var _0x0ba0=function(_0x46a717,_0x563ea6){_0x46a717=_0x46a717-0x0;var _0x5d8d71=_0xba00[_0x46a717];return _0x5d8d71;};'use strict';var _=require(_0x0ba0('0x0'));var util=require(_0x0ba0('0x1'));var moment=require(_0x0ba0('0x2'));var BPromise=require(_0x0ba0('0x3'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x0ba0('0x4'));var db=require(_0x0ba0('0x5'))['db'];var utils=require(_0x0ba0('0x6'));var logger=require(_0x0ba0('0x7'))(_0x0ba0('0x8'));var config=require(_0x0ba0('0x9'));var jayson=require(_0x0ba0('0xa'));var client=jayson[_0x0ba0('0xb')][_0x0ba0('0xc')]({'port':0x232a});function respondWithRpcPromise(_0x8a5a64,_0x67ac0,_0x408934){return new BPromise(function(_0x1d0c68,_0x543e74){return client['request'](_0x8a5a64,_0x408934)['then'](function(_0x515c1e){logger[_0x0ba0('0xd')](_0x0ba0('0xe'),_0x67ac0,_0x0ba0('0xf'));logger[_0x0ba0('0x10')](_0x0ba0('0x11'),_0x67ac0,_0x0ba0('0xf'),JSON['stringify'](_0x515c1e));if(_0x515c1e[_0x0ba0('0x12')]){if(_0x515c1e[_0x0ba0('0x12')]['code']===0x1f4){logger[_0x0ba0('0x12')]('CmCompany,\x20%s,\x20%s',_0x67ac0,_0x515c1e[_0x0ba0('0x12')][_0x0ba0('0x13')]);return _0x543e74(_0x515c1e[_0x0ba0('0x12')]['message']);}logger['error'](_0x0ba0('0xe'),_0x67ac0,_0x515c1e[_0x0ba0('0x12')][_0x0ba0('0x13')]);return _0x1d0c68(_0x515c1e[_0x0ba0('0x12')]['message']);}else{logger[_0x0ba0('0xd')]('CmCompany,\x20%s,\x20%s',_0x67ac0,_0x0ba0('0xf'));_0x1d0c68(_0x515c1e[_0x0ba0('0x14')]['message']);}})[_0x0ba0('0x15')](function(_0x1420b7){logger['error'](_0x0ba0('0xe'),_0x67ac0,_0x1420b7);_0x543e74(_0x1420b7);});});}
\ No newline at end of file
+var _0x6839=['ioredis','../../mysqldb','../../config/logger','../../config/environment','jayson/promise','client','http','then','CmCompany,\x20%s,\x20%s','request\x20sent','debug','CmCompany,\x20%s,\x20%s,\x20%s','stringify','error','code','message','info','catch','lodash','util','moment','bluebird','randomstring'];(function(_0x6b4fb7,_0x165f64){var _0x437f48=function(_0x312287){while(--_0x312287){_0x6b4fb7['push'](_0x6b4fb7['shift']());}};_0x437f48(++_0x165f64);}(_0x6839,0x199));var _0x9683=function(_0x2d6df9,_0x45da50){_0x2d6df9=_0x2d6df9-0x0;var _0x429b18=_0x6839[_0x2d6df9];return _0x429b18;};'use strict';var _=require(_0x9683('0x0'));var util=require(_0x9683('0x1'));var moment=require(_0x9683('0x2'));var BPromise=require(_0x9683('0x3'));var rs=require(_0x9683('0x4'));var fs=require('fs');var Redis=require(_0x9683('0x5'));var db=require(_0x9683('0x6'))['db'];var utils=require('../../config/utils');var logger=require(_0x9683('0x7'))('rpc');var config=require(_0x9683('0x8'));var jayson=require(_0x9683('0x9'));var client=jayson[_0x9683('0xa')][_0x9683('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x1da025,_0x103187,_0x2716fa){return new BPromise(function(_0x3e7ded,_0x18271f){return client['request'](_0x1da025,_0x2716fa)[_0x9683('0xc')](function(_0x4118f1){logger['info'](_0x9683('0xd'),_0x103187,_0x9683('0xe'));logger[_0x9683('0xf')](_0x9683('0x10'),_0x103187,'request\x20sent',JSON[_0x9683('0x11')](_0x4118f1));if(_0x4118f1[_0x9683('0x12')]){if(_0x4118f1['error'][_0x9683('0x13')]===0x1f4){logger[_0x9683('0x12')](_0x9683('0xd'),_0x103187,_0x4118f1[_0x9683('0x12')][_0x9683('0x14')]);return _0x18271f(_0x4118f1[_0x9683('0x12')][_0x9683('0x14')]);}logger[_0x9683('0x12')]('CmCompany,\x20%s,\x20%s',_0x103187,_0x4118f1[_0x9683('0x12')][_0x9683('0x14')]);return _0x3e7ded(_0x4118f1[_0x9683('0x12')][_0x9683('0x14')]);}else{logger[_0x9683('0x15')]('CmCompany,\x20%s,\x20%s',_0x103187,_0x9683('0xe'));_0x3e7ded(_0x4118f1['result'][_0x9683('0x14')]);}})[_0x9683('0x16')](function(_0x4a82b7){logger['error'](_0x9683('0xd'),_0x103187,_0x4a82b7);_0x18271f(_0x4a82b7);});});}
\ No newline at end of file
index e1f7aaa..98c783d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd17c=['addContacts','put','update','delete','exports','multer','util','path','connect-timeout','Router','../../components/interaction/service','../../config/environment','get','isAuthenticated','/describe','/:id','show','/:id/contacts','getContacts','create'];(function(_0x13d07a,_0x41efc3){var _0x5ee0ee=function(_0x4ca94a){while(--_0x4ca94a){_0x13d07a['push'](_0x13d07a['shift']());}};_0x5ee0ee(++_0x41efc3);}(_0xd17c,0xb9));var _0xcd17=function(_0x1b5cb7,_0x40a53d){_0x1b5cb7=_0x1b5cb7-0x0;var _0x1d2d86=_0xd17c[_0x1b5cb7];return _0x1d2d86;};'use strict';var multer=require(_0xcd17('0x0'));var util=require(_0xcd17('0x1'));var path=require(_0xcd17('0x2'));var timeout=require(_0xcd17('0x3'));var express=require('express');var router=express[_0xcd17('0x4')]();var fs_extra=require('fs-extra');var auth=require('../../components/auth/service');var interaction=require(_0xcd17('0x5'));var config=require(_0xcd17('0x6'));var controller=require('./cmCompany.controller');router[_0xcd17('0x7')]('/',auth[_0xcd17('0x8')](),controller['index']);router[_0xcd17('0x7')](_0xcd17('0x9'),auth['isAuthenticated'](),controller['describe']);router['get'](_0xcd17('0xa'),auth[_0xcd17('0x8')](),controller[_0xcd17('0xb')]);router[_0xcd17('0x7')](_0xcd17('0xc'),auth['isAuthenticated'](),controller[_0xcd17('0xd')]);router['post']('/',auth[_0xcd17('0x8')](),controller[_0xcd17('0xe')]);router['post'](_0xcd17('0xc'),auth[_0xcd17('0x8')](),controller[_0xcd17('0xf')]);router[_0xcd17('0x10')](_0xcd17('0xa'),auth[_0xcd17('0x8')](),controller[_0xcd17('0x11')]);router[_0xcd17('0x12')](_0xcd17('0xa'),auth[_0xcd17('0x8')](),controller['destroy']);module[_0xcd17('0x13')]=router;
\ No newline at end of file
+var _0x47da=['multer','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./cmCompany.controller','get','isAuthenticated','index','/describe','describe','/:id','show','/:id/contacts','getContacts','post','create','addContacts','put','update','delete','destroy'];(function(_0x360392,_0x5ed142){var _0x9e2ce1=function(_0x5b56cd){while(--_0x5b56cd){_0x360392['push'](_0x360392['shift']());}};_0x9e2ce1(++_0x5ed142);}(_0x47da,0x195));var _0xa47d=function(_0x1d17c1,_0x4d2a96){_0x1d17c1=_0x1d17c1-0x0;var _0x254470=_0x47da[_0x1d17c1];return _0x254470;};'use strict';var multer=require(_0xa47d('0x0'));var util=require(_0xa47d('0x1'));var path=require(_0xa47d('0x2'));var timeout=require(_0xa47d('0x3'));var express=require(_0xa47d('0x4'));var router=express[_0xa47d('0x5')]();var fs_extra=require(_0xa47d('0x6'));var auth=require(_0xa47d('0x7'));var interaction=require(_0xa47d('0x8'));var config=require(_0xa47d('0x9'));var controller=require(_0xa47d('0xa'));router[_0xa47d('0xb')]('/',auth[_0xa47d('0xc')](),controller[_0xa47d('0xd')]);router[_0xa47d('0xb')](_0xa47d('0xe'),auth[_0xa47d('0xc')](),controller[_0xa47d('0xf')]);router[_0xa47d('0xb')](_0xa47d('0x10'),auth['isAuthenticated'](),controller[_0xa47d('0x11')]);router[_0xa47d('0xb')](_0xa47d('0x12'),auth[_0xa47d('0xc')](),controller[_0xa47d('0x13')]);router[_0xa47d('0x14')]('/',auth[_0xa47d('0xc')](),controller[_0xa47d('0x15')]);router['post'](_0xa47d('0x12'),auth[_0xa47d('0xc')](),controller[_0xa47d('0x16')]);router[_0xa47d('0x17')](_0xa47d('0x10'),auth['isAuthenticated'](),controller[_0xa47d('0x18')]);router[_0xa47d('0x19')](_0xa47d('0x10'),auth['isAuthenticated'](),controller[_0xa47d('0x1a')]);module['exports']=router;
\ No newline at end of file
index ce0ab5c..abc3304 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa9ba=['INTEGER','UNSIGNED','NOW','lodash','exports','STRING','TEXT'];(function(_0x384a79,_0x118794){var _0x35e586=function(_0x76c2a0){while(--_0x76c2a0){_0x384a79['push'](_0x384a79['shift']());}};_0x35e586(++_0x118794);}(_0xa9ba,0xf1));var _0xaa9b=function(_0xc8a708,_0x424fa3){_0xc8a708=_0xc8a708-0x0;var _0x4fb8b8=_0xa9ba[_0xc8a708];return _0x4fb8b8;};'use strict';var _=require(_0xaa9b('0x0'));var Sequelize=require('sequelize');module[_0xaa9b('0x1')]={'firstName':{'type':Sequelize[_0xaa9b('0x2')],'allowNull':![]},'lastName':{'type':Sequelize[_0xaa9b('0x2')]},'street':{'type':Sequelize['STRING']},'postalCode':{'type':Sequelize['STRING']},'city':{'type':Sequelize['STRING']},'country':{'type':Sequelize[_0xaa9b('0x2')]},'dateOfBirth':{'type':Sequelize['STRING']},'description':{'type':Sequelize[_0xaa9b('0x3')]},'phone':{'type':Sequelize[_0xaa9b('0x2')]},'mobile':{'type':Sequelize['STRING']},'fax':{'type':Sequelize[_0xaa9b('0x2')]},'email':{'type':Sequelize[_0xaa9b('0x2')]},'url':{'type':Sequelize[_0xaa9b('0x2')]},'facebook':{'type':Sequelize[_0xaa9b('0x2')]},'fb_data':{'type':Sequelize[_0xaa9b('0x2')]},'twitter':{'type':Sequelize['STRING']},'skype':{'type':Sequelize[_0xaa9b('0x2')]},'teams':{'type':Sequelize['STRING']},'viber':{'type':Sequelize[_0xaa9b('0x2')]},'line':{'type':Sequelize[_0xaa9b('0x2')]},'wechat':{'type':Sequelize[_0xaa9b('0x2')]},'telegram':{'type':Sequelize[_0xaa9b('0x2')]},'UserId':{'type':Sequelize[_0xaa9b('0x4')]},'priority':{'type':Sequelize[_0xaa9b('0x4')](0x2)[_0xaa9b('0x5')],'defaultValue':0x2,'validate':{'min':0x0,'max':0x4}},'scheduledat':{'type':Sequelize['DATE'],'defaultValue':Sequelize[_0xaa9b('0x6')]}};
\ No newline at end of file
+var _0x1cbb=['sequelize','STRING','INTEGER','UNSIGNED','DATE','NOW','lodash'];(function(_0x484e36,_0x4482d8){var _0xafc85d=function(_0xaba9c8){while(--_0xaba9c8){_0x484e36['push'](_0x484e36['shift']());}};_0xafc85d(++_0x4482d8);}(_0x1cbb,0x164));var _0xb1cb=function(_0x5d5852,_0x48a3de){_0x5d5852=_0x5d5852-0x0;var _0x2efcec=_0x1cbb[_0x5d5852];return _0x2efcec;};'use strict';var _=require(_0xb1cb('0x0'));var Sequelize=require(_0xb1cb('0x1'));module['exports']={'firstName':{'type':Sequelize['STRING'],'allowNull':![]},'lastName':{'type':Sequelize['STRING']},'street':{'type':Sequelize[_0xb1cb('0x2')]},'postalCode':{'type':Sequelize['STRING']},'city':{'type':Sequelize[_0xb1cb('0x2')]},'country':{'type':Sequelize['STRING']},'dateOfBirth':{'type':Sequelize[_0xb1cb('0x2')]},'description':{'type':Sequelize['TEXT']},'phone':{'type':Sequelize['STRING']},'mobile':{'type':Sequelize[_0xb1cb('0x2')]},'fax':{'type':Sequelize[_0xb1cb('0x2')]},'email':{'type':Sequelize[_0xb1cb('0x2')]},'url':{'type':Sequelize[_0xb1cb('0x2')]},'facebook':{'type':Sequelize[_0xb1cb('0x2')]},'fb_data':{'type':Sequelize[_0xb1cb('0x2')]},'twitter':{'type':Sequelize[_0xb1cb('0x2')]},'skype':{'type':Sequelize[_0xb1cb('0x2')]},'teams':{'type':Sequelize['STRING']},'viber':{'type':Sequelize['STRING']},'line':{'type':Sequelize[_0xb1cb('0x2')]},'wechat':{'type':Sequelize[_0xb1cb('0x2')]},'telegram':{'type':Sequelize[_0xb1cb('0x2')]},'UserId':{'type':Sequelize[_0xb1cb('0x3')]},'priority':{'type':Sequelize['INTEGER'](0x2)[_0xb1cb('0x4')],'defaultValue':0x2,'validate':{'min':0x0,'max':0x4}},'scheduledat':{'type':Sequelize[_0xb1cb('0x5')],'defaultValue':Sequelize[_0xb1cb('0x6')]}};
\ No newline at end of file
index 17bc6ab..4011c3a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x76ae=['some','c.ListId\x20IS\x20NULL','agent','sequelize','toString','keyBy','c.firstName','c.lastName','c.mobile','c.fax','c.createdAt','c.deletedAt','c.CompanyId','GROUP_CONCAT(DISTINCT\x20t.id)','TagIds','Tags','rows','catch','params','tags','displayName','CmCustomField','findAll','columnName','custom','values','merge','body','get','mergeWith','join','[CmContact][merge]\x20to\x20%s\x20from\x20%s','CmHopper','info','[CmContact][merge][destroy][CmHopper],\x20%s','CmHopperBlack','[CmContact][merge][destroy][CmHopperBlack],\x20%s','ChatMessage','ChatOfflineMessage','MailInteraction','MailMessage','SmsInteraction','SmsMessage','FaxMessage','OpenchannelInteraction','OpenchannelMessage','CmHopperFinal','ReportAgentPreview','VoiceCallReport','ChatQueueReport','FaxQueueReport','MailQueueReport','OpenchannelQueueReport','SmsQueueReport','JscriptySessionReport','WhatsappInteraction','WhatsappMessage','create','bulkCreate','each','duplicates','$or','ListId','findOrCreate','spread','show','color','$and','omit','format','cf_%d','pickBy','table','cm_contacts','toParam','text','phone','getTags','rawAttributes','pick','options','setTags','ids','getHoppers','ContactId','includeAll','include','getHopperHistories','CmHopperHistory','getJscriptySessions','findOne','No\x20ListId\x20specified','binding_keys','No\x20association\x20keys\x20specified!','binding_values','No\x20association\x20values\x20specified!','socket_timestamp','Incorrect\x20binding\x20parameters\x20passed!','zipObject','No\x20phone\x20column\x20specified','firstName','No\x20firstName\x20column\x20specified','root','server/files/tmp','file','filename','chmodSync','0777','fork','../../components/import/cm/csv','File\x20uploaded\x20correctly!','upload','createReadStream','meta','import','binding','../../components/import/cm/csv2','stringify','message','start\x20child\x20process\x20correctly!','pid','exit','getJourney','mail','sms','openchannel','fax','whatsapp','voice','-createdAt','channel','includes','toLowerCase','Invalid\x20channel','parse','range','isValid','Invalid\x20date\x20for\x20range\x20from\x20filter','Invalid\x20date\x20for\x20range\x20to\x20filter','Invalid\x20createdAt\x20filter','uniqueid','source','destination','endtime','duration','note','userDisposition','userSecondDisposition','UserId','fullname','alias','createdAt','findAndCountAll','Website','Account','closed','closedAt','disposition','secondDisposition','thirdDisposition','Owner','chat','customerIp','customerPort','deviceModel','osName','ratingMessage','ratingType','ratingValue','referer','subject','substatus','externalUrl','threadId','startCase','Interaction','flatten','sortBy','reverse','eml-format','zip-dir','request-promise','moment','mustache','path','sox','to-csv','ejs','fs-extra','crypto','desk.js','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','redis','defaults','localhost','socket.io-emitter','./cmContact.socket','sendStatus','status','end','json','undefined','limit','count','offset','Content-Range','reject','save','update','then','destroy','error','stack','name','send','CmContact','describe','keys','length','startsWith','cf_','push','trimStart','all','fieldType','model','query','intersection','attributes','fields','hasOwnProperty','nolimit','order','sort','where','filters','select','field','from','left_join','cm_user_has_contacts','uc.CmContactId\x20=\x20c.id','cm_contact_has_tags','ct.CmContactId\x20=\x20c.id','c.deletedAt\x20IS\x20NULL','expr','search','parseSearch','sqlOperator','conditions','find','Tag','value','split','map','forEach','CONCAT(\x27,\x27,\x20`TagIds`,\x20\x27,\x27)\x20LIKE\x20?','union','User','uc.UserId\x20=\x20?','datetime','castTo','DATE','buildExpression','type','start','filter','isNil','c.ListId\x20IN\x20?','Contact','\x20=\x20?','tag','isArray','replace','MATCH\x20(c.firstName,\x20c.lastName,\x20c.phone,\x20c.mobile,\x20c.fax,\x20c.email)\x20AGAINST\x20(?\x20IN\x20BOOLEAN\x20MODE)','getFullTextValue','c.id\x20LIKE\x20?','c.phone\x20LIKE\x20?','c.fax\x20LIKE\x20?','c.email\x20LIKE\x20?','c.firstName\x20LIKE\x20?','c.lastName\x20LIKE\x20?','group','c.id','Sequelize','SELECT','DESC','isEmpty','having','t.id\x20IN\x20?','resolve','user','role'];(function(_0x5a5fc3,_0x4779bf){var _0x1570cb=function(_0x5b0772){while(--_0x5b0772){_0x5a5fc3['push'](_0x5a5fc3['shift']());}};_0x1570cb(++_0x4779bf);}(_0x76ae,0x1e0));var _0xe76a=function(_0x4c0b27,_0x2f9ba5){_0x4c0b27=_0x4c0b27-0x0;var _0x24183f=_0x76ae[_0x4c0b27];return _0x24183f;};'use strict';var emlformat=require(_0xe76a('0x0'));var rimraf=require('rimraf');var zipdir=require(_0xe76a('0x1'));var jsonpatch=require('fast-json-patch');var rp=require(_0xe76a('0x2'));var moment=require(_0xe76a('0x3'));var BPromise=require('bluebird');var Mustache=require(_0xe76a('0x4'));var util=require('util');var path=require(_0xe76a('0x5'));var sox=require(_0xe76a('0x6'));var csv=require(_0xe76a('0x7'));var ejs=require(_0xe76a('0x8'));var fs=require('fs');var fs_extra=require(_0xe76a('0x9'));var _=require('lodash');var squel=require('squel');var crypto=require(_0xe76a('0xa'));var jsforce=require('jsforce');var deskjs=require(_0xe76a('0xb'));var toCsv=require(_0xe76a('0x7'));var querystring=require('querystring');var Papa=require('papaparse');var Redis=require(_0xe76a('0xc'));var authService=require(_0xe76a('0xd'));var qs=require('../../components/parsers/qs');var as=require(_0xe76a('0xe'));var hardwareService=require('../../config/license/hardware');var logger=require(_0xe76a('0xf'))(_0xe76a('0x10'));var utils=require(_0xe76a('0x11'));var config=require(_0xe76a('0x12'));var licenseUtil=require(_0xe76a('0x13'));var db=require(_0xe76a('0x14'))['db'];config[_0xe76a('0x15')]=_[_0xe76a('0x16')](config['redis'],{'host':_0xe76a('0x17'),'port':0x18eb});var socket=require(_0xe76a('0x18'))(new Redis(config['redis']));require(_0xe76a('0x19'))['register'](socket);function respondWithStatusCode(_0x2e2af4,_0x1db45b){_0x1db45b=_0x1db45b||0xcc;return function(_0x13c8cb){if(_0x13c8cb){return _0x2e2af4[_0xe76a('0x1a')](_0x1db45b);}return _0x2e2af4[_0xe76a('0x1b')](_0x1db45b)[_0xe76a('0x1c')]();};}function respondWithResult(_0x33a715,_0x24cb35){_0x24cb35=_0x24cb35||0xc8;return function(_0x22d850){if(_0x22d850){return _0x33a715[_0xe76a('0x1b')](_0x24cb35)[_0xe76a('0x1d')](_0x22d850);}};}function respondWithFilteredResult(_0x5d11b8,_0x13b55e){return function(_0x533f4a){if(_0x533f4a){var _0x50a2c5=typeof _0x13b55e['offset']===_0xe76a('0x1e')&&typeof _0x13b55e[_0xe76a('0x1f')]==='undefined';var _0x5b0e58=_0x533f4a[_0xe76a('0x20')];var _0x181ba3=_0x50a2c5?0x0:_0x13b55e[_0xe76a('0x21')];var _0xffc632=_0x50a2c5?_0x533f4a[_0xe76a('0x20')]:_0x13b55e[_0xe76a('0x21')]+_0x13b55e[_0xe76a('0x1f')];var _0x35011d;if(_0xffc632>=_0x5b0e58){_0xffc632=_0x5b0e58;_0x35011d=0xc8;}else{_0x35011d=0xce;}_0x5d11b8[_0xe76a('0x1b')](_0x35011d);return _0x5d11b8['set'](_0xe76a('0x22'),_0x181ba3+'-'+_0xffc632+'/'+_0x5b0e58)[_0xe76a('0x1d')](_0x533f4a);}return null;};}function patchUpdates(_0x5c3e0d){return function(_0xa9c7a7){try{jsonpatch['apply'](_0xa9c7a7,_0x5c3e0d,!![]);}catch(_0x2d943e){return BPromise[_0xe76a('0x23')](_0x2d943e);}return _0xa9c7a7[_0xe76a('0x24')]();};}function saveUpdates(_0x12720d,_0x3e4999){return function(_0x1a6d11){if(_0x1a6d11){return _0x1a6d11[_0xe76a('0x25')](_0x12720d)[_0xe76a('0x26')](function(_0x4ac93c){return _0x4ac93c;});}return null;};}function removeEntity(_0x1acc23,_0x7bf0dd){return function(_0x1c2d57){if(_0x1c2d57){return _0x1c2d57[_0xe76a('0x27')]()['then'](function(){_0x1acc23[_0xe76a('0x1b')](0xcc)['end']();});}};}function handleEntityNotFound(_0x17f023,_0x9f34fe){return function(_0x32cb27){if(!_0x32cb27){_0x17f023['sendStatus'](0x194);}return _0x32cb27;};}function handleError(_0x518e04,_0xf01eb2){_0xf01eb2=_0xf01eb2||0x1f4;return function(_0x2d421a){logger[_0xe76a('0x28')](_0x2d421a[_0xe76a('0x29')]);if(_0x2d421a[_0xe76a('0x2a')]){delete _0x2d421a[_0xe76a('0x2a')];}_0x518e04[_0xe76a('0x1b')](_0xf01eb2)[_0xe76a('0x2b')](_0x2d421a);};}exports['index']=function(_0x360ba5,_0x1811ae){var _0x3c80ce={},_0x1e421b={},_0x2b2deb={'count':0x0,'rows':[]};return db[_0xe76a('0x2c')][_0xe76a('0x2d')]()[_0xe76a('0x26')](function(_0xc9d49d){var _0x31eb82=[];for(var _0x444f28=0x0;_0x444f28<Object[_0xe76a('0x2e')](_0xc9d49d)[_0xe76a('0x2f')];_0x444f28++){var _0x1d24b1=Object['keys'](_0xc9d49d)[_0x444f28];if(_[_0xe76a('0x30')](_0x1d24b1,_0xe76a('0x31'))){_0x31eb82[_0xe76a('0x32')](db['CmCustomField']['findOne']({'where':{'id':_[_0xe76a('0x33')](_0x1d24b1,'cf_')},'raw':!![]}));}}return BPromise[_0xe76a('0x34')](_0x31eb82)['then'](function(_0x3b0e11){for(var _0x43589d=0x0;_0x43589d<_0x3b0e11[_0xe76a('0x2f')];_0x43589d++){if(_0x3b0e11[_0x43589d]){var _0x4688b9=_0xe76a('0x31')+_0x3b0e11[_0x43589d]['id'];var _0x4350b0=_0xc9d49d[_0x4688b9];_0x4350b0[_0xe76a('0x35')]=_0x3b0e11[_0x43589d]['type'];}}return _0xc9d49d;});})['then'](function(_0x1cb6d0){_0x1e421b[_0xe76a('0x36')]=_[_0xe76a('0x2e')](_0x1cb6d0);_0x1e421b[_0xe76a('0x37')]=_[_0xe76a('0x2e')](_0x360ba5[_0xe76a('0x37')]);_0x1e421b['filters']=_[_0xe76a('0x38')](_0x1e421b[_0xe76a('0x36')],_0x1e421b[_0xe76a('0x37')]);_0x3c80ce[_0xe76a('0x39')]=_[_0xe76a('0x38')](_0x1e421b[_0xe76a('0x36')],qs[_0xe76a('0x3a')](_0x360ba5[_0xe76a('0x37')]['fields']));_0x3c80ce[_0xe76a('0x39')]=_0x3c80ce[_0xe76a('0x39')][_0xe76a('0x2f')]?_0x3c80ce[_0xe76a('0x39')]:_0x1e421b[_0xe76a('0x36')];if(!_0x360ba5[_0xe76a('0x37')][_0xe76a('0x3b')](_0xe76a('0x3c'))){_0x3c80ce[_0xe76a('0x1f')]=qs[_0xe76a('0x1f')](_0x360ba5[_0xe76a('0x37')]['limit']);_0x3c80ce['offset']=qs[_0xe76a('0x21')](_0x360ba5[_0xe76a('0x37')][_0xe76a('0x21')]);}_0x3c80ce[_0xe76a('0x3d')]=qs[_0xe76a('0x3e')](_0x360ba5[_0xe76a('0x37')][_0xe76a('0x3e')]);_0x3c80ce[_0xe76a('0x3f')]=qs['filters'](_['pick'](_0x360ba5[_0xe76a('0x37')],_0x1e421b[_0xe76a('0x40')]),_0x1cb6d0);var _0x155c84=[];var _0x751e9=squel[_0xe76a('0x41')]()['field']('id')[_0xe76a('0x42')](_0xe76a('0x2a'))[_0xe76a('0x42')]('color')[_0xe76a('0x43')]('tools_tags');var _0x192eba=squel[_0xe76a('0x41')]()[_0xe76a('0x43')]('cm_contacts','c')[_0xe76a('0x44')](_0xe76a('0x45'),'uc',_0xe76a('0x46'))[_0xe76a('0x44')](_0xe76a('0x47'),'ct',_0xe76a('0x48'))[_0xe76a('0x44')]('tools_tags','t','t.id\x20=\x20ct.TagId')[_0xe76a('0x3f')](_0xe76a('0x49'));var _0x6292c8=squel[_0xe76a('0x4a')]();var _0x234b6a=[];var _0x56f820=squel['expr']();var _0x6ae292;if(_0x360ba5[_0xe76a('0x37')][_0xe76a('0x4b')]){_0x6ae292=as[_0xe76a('0x4c')](_0x360ba5['query'][_0xe76a('0x4b')]);var _0x335da6=_0x6ae292[_0xe76a('0x4d')];for(var _0x223661=0x0;_0x223661<_0x6ae292[_0xe76a('0x4e')]['length'];_0x223661++){var _0x1c1024=_0x6ae292['conditions'][_0x223661];var _0x45294f='c';var _0x38feb1=_(_0x1cb6d0)[_0xe76a('0x2e')]()[_0xe76a('0x4f')](function(_0x51c6e3){return _0x51c6e3===_0x1c1024[_0xe76a('0x42')];});if(_0x38feb1)_0x38feb1=_0x1cb6d0[_0x1c1024[_0xe76a('0x42')]];if(!_0x38feb1){if(_0x1c1024[_0xe76a('0x42')]===_0xe76a('0x50')){var _0x25f916=_0x1c1024[_0xe76a('0x51')][_0xe76a('0x52')](',')[_0xe76a('0x53')](function(_0x355f81){return Number(_0x355f81);});_0x25f916[_0xe76a('0x54')](function(_0x2e8645){_0x56f820['or'](_0xe76a('0x55'),'%,'+_0x2e8645+',%');});_0x234b6a=_[_0xe76a('0x56')](_0x234b6a,_0x25f916);}else if(_0x1c1024[_0xe76a('0x42')]===_0xe76a('0x57')){_0x6292c8['and'](_0xe76a('0x58'),_0x1c1024[_0xe76a('0x51')]);}}else{if(_0x1c1024[_0xe76a('0x42')]==='dateOfBirth'||_0x38feb1['fieldType']===_0xe76a('0x59'))_0x1c1024[_0xe76a('0x5a')]=_0xe76a('0x5b');var _0x330d50=as[_0xe76a('0x5c')](_0x45294f,_0x38feb1[_0xe76a('0x5d')],_0x1c1024);_0x6292c8[_0x335da6](_0x330d50['text'],_0x330d50[_0xe76a('0x51')][_0xe76a('0x5e')],_0x330d50[_0xe76a('0x51')][_0xe76a('0x1c')]);}}}else{var _0x3da7db=_(Object[_0xe76a('0x2e')](_0x360ba5[_0xe76a('0x37')]))['map'](function(_0x2a8178){return _0x1cb6d0[_0xe76a('0x3b')](_0x2a8178)?_0x2a8178:undefined;})[_0xe76a('0x5f')](function(_0x353210){return!_[_0xe76a('0x60')](_0x353210);})[_0xe76a('0x51')]();if(_0x360ba5['query']['Contact'])_0x3da7db['push']('Contact');if(!_['isEmpty'](_0x3da7db)){_0x3da7db[_0xe76a('0x54')](function(_0x2c523f){if(_0x2c523f==='ListId'){_0x192eba['where'](_0xe76a('0x61'),[]['concat'](_0x360ba5['query'][_0x2c523f]));}else if(_0x2c523f===_0xe76a('0x62')){var _0x58f3d3='%'+_0x360ba5[_0xe76a('0x37')][_0x2c523f]+'%';_0x192eba[_0xe76a('0x3f')]('CONCAT_WS(\x27\x20\x27,\x20c.firstName,\x20c.lastName,\x20c.email)\x20LIKE\x20?',_0x58f3d3);}else{_0x192eba[_0xe76a('0x3f')]('c.'+_0x2c523f+_0xe76a('0x63'),_0x360ba5[_0xe76a('0x37')][_0x2c523f]);}});}if(_0x360ba5['query'][_0xe76a('0x64')]){_0x234b6a=_[_0xe76a('0x65')](_0x360ba5['query'][_0xe76a('0x64')])?_0x360ba5[_0xe76a('0x37')]['tag']:new Array(_0x360ba5[_0xe76a('0x37')][_0xe76a('0x64')]);_0x234b6a[_0xe76a('0x54')](function(_0x5cef4b){_0x56f820['or'](_0xe76a('0x55'),'%,'+_0x5cef4b+',%');});}if(_0x360ba5[_0xe76a('0x37')][_0xe76a('0x5f')]){var _0xadea66=_0x360ba5[_0xe76a('0x37')][_0xe76a('0x5f')][_0xe76a('0x66')]('\x5c','\x5c\x5c')['replace'](/'/g,'\x27\x27');if(_0xadea66[_0xe76a('0x52')]('\x20')[_0xe76a('0x2f')]>0x1){_0x6292c8['or'](_0xe76a('0x67'),qs[_0xe76a('0x68')](_0xadea66),null);}else{if(qs['isNumeric'](_0xadea66)){_0x6292c8['or'](_0xe76a('0x69'),_0xadea66+'%');_0x6292c8['or'](_0xe76a('0x6a'),_0xadea66+'%');_0x6292c8['or']('c.mobile\x20LIKE\x20?',_0xadea66+'%');_0x6292c8['or'](_0xe76a('0x6b'),_0xadea66+'%');}else if(qs['isEmail'](_0xadea66)){_0x6292c8['or'](_0xe76a('0x6c'),_0xadea66+'%');}else{_0x6292c8['or'](_0xe76a('0x6d'),'%'+_0xadea66+'%');_0x6292c8['or'](_0xe76a('0x6e'),'%'+_0xadea66+'%');_0x6292c8['or'](_0xe76a('0x6c'),'%'+_0xadea66+'%');}}}}_0x192eba['where'](_0x6292c8);_0x192eba[_0xe76a('0x6f')](_0xe76a('0x70'));var _0x210a12={'type':db[_0xe76a('0x71')]['QueryTypes'][_0xe76a('0x72')],'raw':!![]};var _0x4a44f6=_0x192eba['clone']()[_0xe76a('0x42')](_0xe76a('0x70'));if(_0x3c80ce[_0xe76a('0x3d')]){_0x3c80ce['order'][_0xe76a('0x54')](function(_0xdc132d){_0x192eba[_0xe76a('0x3d')]('c.'+_0xdc132d[0x0],_0xdc132d[0x1]===_0xe76a('0x73')?![]:!![]);});}if(!_[_0xe76a('0x74')](_0x234b6a)){_0x192eba[_0xe76a('0x75')](_0x56f820);_0x4a44f6['where'](_0xe76a('0x76'),_0x234b6a);}BPromise[_0xe76a('0x77')]()[_0xe76a('0x26')](function(){if(!_0x6ae292)return;if(_0x360ba5[_0xe76a('0x78')][_0xe76a('0x79')]!=='agent')return;if(!_[_0xe76a('0x7a')](_0x6ae292[_0xe76a('0x4e')],[_0xe76a('0x42'),'User'])){return _0x360ba5[_0xe76a('0x78')]['getLists']({'attributes':['id'],'raw':!![]})[_0xe76a('0x26')](function(_0x22255c){if(_[_0xe76a('0x74')](_0x22255c)){_0x4a44f6[_0xe76a('0x3f')](_0xe76a('0x7b'));_0x192eba[_0xe76a('0x3f')]('c.ListId\x20IS\x20NULL');}else{_0x4a44f6[_0xe76a('0x3f')](_0xe76a('0x61'),_[_0xe76a('0x53')](_0x22255c,'id'));_0x192eba[_0xe76a('0x3f')](_0xe76a('0x61'),_[_0xe76a('0x53')](_0x22255c,'id'));}});}})['then'](function(){if(_0x360ba5[_0xe76a('0x78')][_0xe76a('0x79')]===_0xe76a('0x7c')&&!_0x6ae292&&!_0x360ba5[_0xe76a('0x37')]['ListId'])return[];return db[_0xe76a('0x7d')][_0xe76a('0x37')](_0x4a44f6[_0xe76a('0x7e')](),_0x210a12);})[_0xe76a('0x26')](function(_0x53f608){_0x2b2deb[_0xe76a('0x20')]=_0x53f608['length'];if(_0x2b2deb[_0xe76a('0x20')]===0x0)return[];return db['sequelize']['query'](_0x751e9[_0xe76a('0x7e')](),_0x210a12)[_0xe76a('0x26')](function(_0x476ea3){_0x155c84=_[_0xe76a('0x7f')](_0x476ea3,'id');_0x210a12=_['merge'](_0x210a12,{'model':db[_0xe76a('0x2c')],'mapToModel':!![],'raw':!![],'nest':!![]});if(_0x360ba5[_0xe76a('0x37')][_0xe76a('0x3a')]){_0x3c80ce[_0xe76a('0x39')][_0xe76a('0x54')](function(_0x9e3815){_0x192eba[_0xe76a('0x42')]('c.'+_0x9e3815);});}else{_0x192eba[_0xe76a('0x42')](_0xe76a('0x70'));_0x192eba[_0xe76a('0x42')](_0xe76a('0x80'));_0x192eba['field'](_0xe76a('0x81'));_0x192eba['field']('c.phone');_0x192eba[_0xe76a('0x42')](_0xe76a('0x82'));_0x192eba[_0xe76a('0x42')](_0xe76a('0x83'));_0x192eba[_0xe76a('0x42')]('c.email');_0x192eba[_0xe76a('0x42')]('c.ListId');_0x192eba[_0xe76a('0x42')](_0xe76a('0x84'));_0x192eba[_0xe76a('0x42')](_0xe76a('0x85'));_0x192eba[_0xe76a('0x42')](_0xe76a('0x86'));_0x192eba['field'](_0xe76a('0x87'),_0xe76a('0x88'));}if(_0x3c80ce[_0xe76a('0x1f')])_0x192eba[_0xe76a('0x1f')](_0x3c80ce['limit']);if(_0x3c80ce['offset'])_0x192eba[_0xe76a('0x21')](_0x3c80ce[_0xe76a('0x21')]);return db[_0xe76a('0x7d')][_0xe76a('0x37')](_0x192eba['toString'](),_0x210a12);});})[_0xe76a('0x26')](function(_0x4f4195){_0x4f4195[_0xe76a('0x54')](function(_0x9aa154){if(_0x9aa154[_0xe76a('0x88')]){_0x9aa154[_0xe76a('0x89')]=[];_0x9aa154[_0xe76a('0x88')]['split'](',')[_0xe76a('0x54')](function(_0x564a2d){_0x9aa154['Tags'][_0xe76a('0x32')](_0x155c84[_0x564a2d]);});}delete _0x9aa154[_0xe76a('0x88')];});_0x2b2deb[_0xe76a('0x8a')]=_0x4f4195;return _0x2b2deb;})[_0xe76a('0x26')](respondWithFilteredResult(_0x1811ae,_0x3c80ce));})[_0xe76a('0x8b')](handleError(_0x1811ae,null));};exports['destroy']=function(_0x2b3ad0,_0x2c9fb1){return db['CmContact']['find']({'where':{'id':_0x2b3ad0[_0xe76a('0x8c')]['id']}})['then'](handleEntityNotFound(_0x2c9fb1,null))[_0xe76a('0x26')](removeEntity(_0x2c9fb1,null))[_0xe76a('0x8b')](handleError(_0x2c9fb1,null));};exports[_0xe76a('0x2d')]=function(_0x5d4feb,_0x11eb66){return db[_0xe76a('0x2c')]['describe']()[_0xe76a('0x26')](function(_0x46c7b2){delete _0x46c7b2[_0xe76a('0x8d')];for(var _0xc855f7=0x0;_0xc855f7<Object['keys'](_0x46c7b2)['length'];_0xc855f7++){var _0x4d3f15=Object[_0xe76a('0x2e')](_0x46c7b2)[_0xc855f7];if(!_[_0xe76a('0x30')](_0x4d3f15,'cf_')){_0x46c7b2[_0x4d3f15]['columnName']=_0x4d3f15;_0x46c7b2[_0x4d3f15][_0xe76a('0x8e')]=_0x4d3f15;}}return _0x46c7b2;})['then'](function(_0x47946f){var _0x2370cf={'where':{'$or':[{'ListId':_0x5d4feb[_0xe76a('0x37')]['id']},{'ListId':null}]},'raw':!![]};return db[_0xe76a('0x8f')][_0xe76a('0x90')](_0x2370cf)['then'](function(_0x136f75){for(var _0x2416f5=0x0;_0x2416f5<_0x136f75['length'];_0x2416f5++){var _0x51e3a=_0xe76a('0x31')+_0x136f75[_0x2416f5]['id'];_0x47946f[_0x51e3a][_0xe76a('0x91')]=_0x51e3a;_0x47946f[_0x51e3a][_0xe76a('0x8e')]=_0x136f75[_0x2416f5]['alias'];_0x47946f[_0x51e3a][_0xe76a('0x92')]={'type':_0x136f75[_0x2416f5][_0xe76a('0x5d')],'values':_0x136f75[_0x2416f5][_0xe76a('0x93')]};}Object[_0xe76a('0x2e')](_0x47946f)[_0xe76a('0x54')](function(_0x272f34){if(!_0x47946f[_0x272f34]['hasOwnProperty'](_0xe76a('0x91'))){delete _0x47946f[_0x272f34];}});return _0x47946f;});})['then'](respondWithResult(_0x11eb66,null))['catch'](handleError(_0x11eb66,null));};exports[_0xe76a('0x94')]=function(_0x4f276e,_0x1b9968){var _0x5cd3c2;var _0x489bc0;var _0x23920d;if(_0x4f276e[_0xe76a('0x95')]['id']){delete _0x4f276e[_0xe76a('0x95')]['id'];}return db[_0xe76a('0x2c')]['findAll']({'where':{'id':[_0x4f276e['body']['to'],_0x4f276e['body'][_0xe76a('0x43')]]}})['then'](function(_0x5c74a2){if(_0x5c74a2){if(_0x5c74a2[_0xe76a('0x2f')]!==0x2){return null;}_0x5c74a2[0x0]=_0x5c74a2[0x0][_0xe76a('0x96')]({'plain':!![]});_0x5c74a2[0x1]=_0x5c74a2[0x1][_0xe76a('0x96')]({'plain':!![]});delete _0x5c74a2[0x0]['id'];delete _0x5c74a2[0x1]['id'];return _[_0xe76a('0x97')](_0x5c74a2[0x0],_0x5c74a2[0x1],function(_0x18a590,_0x45f631){if(Array[_0xe76a('0x65')](_0x45f631)&&!_0x45f631[_0xe76a('0x2f')]){return _0x18a590;}else if(!_0x45f631){return _0x18a590;}});}})[_0xe76a('0x26')](handleEntityNotFound(_0x1b9968,null))[_0xe76a('0x26')](function(_0x4d9c83){if(_0x4d9c83){if(_0x4d9c83[_0xe76a('0x8d')]&&_[_0xe76a('0x65')](_0x4d9c83[_0xe76a('0x8d')])){_0x4d9c83[_0xe76a('0x8d')]=_0x4d9c83[_0xe76a('0x8d')][_0xe76a('0x98')]();}logger['info'](_0xe76a('0x99'),_0x4f276e['body']['to'],_0x4f276e[_0xe76a('0x95')][_0xe76a('0x43')]);return db[_0xe76a('0x9a')][_0xe76a('0x27')]({'where':{'ContactId':[_0x4f276e['body']['to'],_0x4f276e[_0xe76a('0x95')][_0xe76a('0x43')]]}})[_0xe76a('0x26')](function(_0x4ac4c8){logger[_0xe76a('0x9b')](_0xe76a('0x9c'),_0x4ac4c8);return db[_0xe76a('0x9d')][_0xe76a('0x27')]({'where':{'ContactId':[_0x4f276e['body']['to'],_0x4f276e[_0xe76a('0x95')][_0xe76a('0x43')]]}})[_0xe76a('0x26')](function(_0x1ccca6){logger['info'](_0xe76a('0x9e'),_0x1ccca6);return db[_0xe76a('0x2c')]['create'](_0x4d9c83);});});}})[_0xe76a('0x26')](function(_0x5488a0){if(_0x5488a0){_0x5cd3c2=_0x5488a0;_0x489bc0={'ContactId':_0x5cd3c2['id']};_0x23920d={'where':{'ContactId':[_0x4f276e[_0xe76a('0x95')]['to'],_0x4f276e[_0xe76a('0x95')][_0xe76a('0x43')]]}};return db['ChatInteraction'][_0xe76a('0x25')](_0x489bc0,_0x23920d);}})[_0xe76a('0x26')](function(){if(_0x5cd3c2){return db[_0xe76a('0x9f')][_0xe76a('0x25')](_0x489bc0,_0x23920d);}})[_0xe76a('0x26')](function(){if(_0x5cd3c2){return db[_0xe76a('0xa0')]['update'](_0x489bc0,_0x23920d);}})['then'](function(){if(_0x5cd3c2){return db[_0xe76a('0xa1')]['update'](_0x489bc0,_0x23920d);}})[_0xe76a('0x26')](function(){if(_0x5cd3c2){return db['MailMessage'][_0xe76a('0x25')](_0x489bc0,_0x23920d);}})[_0xe76a('0x26')](function(){if(_0x5cd3c2){return db[_0xe76a('0xa1')][_0xe76a('0x25')](_0x489bc0,_0x23920d);}})[_0xe76a('0x26')](function(){if(_0x5cd3c2){return db[_0xe76a('0xa2')][_0xe76a('0x25')](_0x489bc0,_0x23920d);}})[_0xe76a('0x26')](function(){if(_0x5cd3c2){return db[_0xe76a('0xa3')][_0xe76a('0x25')](_0x489bc0,_0x23920d);}})['then'](function(){if(_0x5cd3c2){return db[_0xe76a('0xa4')][_0xe76a('0x25')](_0x489bc0,_0x23920d);}})[_0xe76a('0x26')](function(){if(_0x5cd3c2){return db['FaxInteraction'][_0xe76a('0x25')](_0x489bc0,_0x23920d);}})[_0xe76a('0x26')](function(){if(_0x5cd3c2){return db[_0xe76a('0xa5')][_0xe76a('0x25')](_0x489bc0,_0x23920d);}})[_0xe76a('0x26')](function(){if(_0x5cd3c2){return db[_0xe76a('0xa6')][_0xe76a('0x25')](_0x489bc0,_0x23920d);}})[_0xe76a('0x26')](function(){if(_0x5cd3c2){return db[_0xe76a('0xa7')][_0xe76a('0x25')](_0x489bc0,_0x23920d);}})[_0xe76a('0x26')](function(){if(_0x5cd3c2){return db[_0xe76a('0xa8')][_0xe76a('0x25')](_0x489bc0,_0x23920d);}})['then'](function(){if(_0x5cd3c2){return db['CmHopperHistory']['update'](_0x489bc0,_0x23920d);}})[_0xe76a('0x26')](function(){if(_0x5cd3c2){return db[_0xe76a('0xa9')][_0xe76a('0x25')](_0x489bc0,_0x23920d);}})[_0xe76a('0x26')](function(){if(_0x5cd3c2){return db[_0xe76a('0xaa')][_0xe76a('0x25')](_0x489bc0,_0x23920d);}})[_0xe76a('0x26')](function(){if(_0x5cd3c2){return db[_0xe76a('0xab')]['update'](_0x489bc0,_0x23920d);}})[_0xe76a('0x26')](function(){if(_0x5cd3c2){return db[_0xe76a('0xac')][_0xe76a('0x25')](_0x489bc0,_0x23920d);}})[_0xe76a('0x26')](function(){if(_0x5cd3c2){return db[_0xe76a('0xad')][_0xe76a('0x25')](_0x489bc0,_0x23920d);}})[_0xe76a('0x26')](function(){if(_0x5cd3c2){return db[_0xe76a('0xae')][_0xe76a('0x25')](_0x489bc0,_0x23920d);}})[_0xe76a('0x26')](function(){if(_0x5cd3c2){return db[_0xe76a('0xaf')]['update'](_0x489bc0,_0x23920d);}})['then'](function(){if(_0x5cd3c2){return db[_0xe76a('0xb0')]['update'](_0x489bc0,_0x23920d);}})[_0xe76a('0x26')](function(){if(_0x5cd3c2){return db[_0xe76a('0xb1')]['update'](_0x489bc0,_0x23920d);}})[_0xe76a('0x26')](function(){if(_0x5cd3c2){return db[_0xe76a('0xb2')][_0xe76a('0x25')](_0x489bc0,_0x23920d);}})['then'](function(){if(_0x5cd3c2){return db['WhatsappQueueReport'][_0xe76a('0x25')](_0x489bc0,_0x23920d);}})['then'](function(){if(_0x5cd3c2){return db[_0xe76a('0x2c')][_0xe76a('0x27')]({'where':{'id':[_0x4f276e[_0xe76a('0x95')]['to'],_0x4f276e[_0xe76a('0x95')][_0xe76a('0x43')]]}});}})['then'](function(){if(_0x5cd3c2){return _0x5cd3c2;}})['then'](respondWithResult(_0x1b9968,null))['catch'](handleError(_0x1b9968,null));};exports[_0xe76a('0xb3')]=function(_0x5c5ef1,_0x1fd226){return db[_0xe76a('0x2c')][_0xe76a('0x2d')]()[_0xe76a('0x26')](function(_0x26e150){if(_0x5c5ef1['body'][_0xe76a('0x8d')]&&_[_0xe76a('0x65')](_0x5c5ef1[_0xe76a('0x95')][_0xe76a('0x8d')])){if(_0x5c5ef1[_0xe76a('0x95')][_0xe76a('0x8d')]['length']){_0x5c5ef1[_0xe76a('0x95')][_0xe76a('0x8d')]=_0x5c5ef1['body']['tags']['join'](';')+';';}else{_0x5c5ef1['body'][_0xe76a('0x8d')]=null;}}else{_0x5c5ef1[_0xe76a('0x95')][_0xe76a('0x8d')]=null;}return db[_0xe76a('0x2c')][_0xe76a('0xb3')](_0x5c5ef1[_0xe76a('0x95')],{'fields':_[_0xe76a('0x2e')](_0x26e150),'raw':!![]});})['then'](respondWithResult(_0x1fd226,0xc9))[_0xe76a('0x8b')](handleError(_0x1fd226,null));};exports[_0xe76a('0xb4')]=function(_0x9bfdcc,_0x29ac2d){var _0x267536=[];var _0x5ee037=0x0;var _0x33dc6c=0x0;var _0x142cdf=0x0;return db[_0xe76a('0x2c')]['describe']()[_0xe76a('0x26')](function(_0x2df109){return BPromise[_0xe76a('0xb5')](_0x9bfdcc[_0xe76a('0x95')],function(_0x3eec90){var _0x232c84={'where':{'$or':[]},'defaults':_0x3eec90,'fields':_[_0xe76a('0x2e')](_0x2df109),'raw':!![]};if(_0x3eec90[_0xe76a('0xb6')]){for(var _0x1972e0=0x0;_0x1972e0<_0x3eec90['duplicates'][_0xe76a('0x2f')];_0x1972e0++){var _0x561eb3={};_0x561eb3[_0x3eec90[_0xe76a('0xb6')][_0x1972e0]]=_0x3eec90[_0x3eec90[_0xe76a('0xb6')][_0x1972e0]];_0x232c84[_0xe76a('0x3f')][_0xe76a('0xb7')][_0xe76a('0x32')](_0x561eb3);}_0x232c84[_0xe76a('0x3f')]['ListId']=_0x3eec90[_0xe76a('0xb8')];}return db[_0xe76a('0x2c')][_0xe76a('0xb9')](_0x232c84)[_0xe76a('0xba')](function(_0x1ad4f4,_0x58d800){if(_0x58d800){_0x5ee037++;}else{_0x142cdf++;}})['catch'](function(_0x468e3d){console['error'](_0x468e3d);_0x33dc6c++;});});})[_0xe76a('0x26')](function(_0xda2cc8){if(_0xda2cc8){return{'success':_0x5ee037,'failure':_0x33dc6c,'duplicates':_0x142cdf};}})[_0xe76a('0x26')](respondWithResult(_0x29ac2d,0xc9))[_0xe76a('0x8b')](handleError(_0x29ac2d,null));};exports[_0xe76a('0xbb')]=function(_0x1d8803,_0x388cee,_0x4bfd20){var _0x43afca;return db['CmContact'][_0xe76a('0x2d')]()[_0xe76a('0x26')](function(_0x2dc342){return db[_0xe76a('0x2c')][_0xe76a('0x4f')]({'where':{'id':_0x1d8803['params']['id']},'include':[{'model':db[_0xe76a('0x50')],'as':'Tags','attributes':['id','name',_0xe76a('0xbc')],'required':_0x1d8803[_0xe76a('0x37')][_0xe76a('0x64')]?!![]:![]}],'attributes':_[_0xe76a('0x2e')](_0x2dc342)});})[_0xe76a('0x26')](function(_0x7c7f48){_0x43afca=_0x7c7f48[_0xe76a('0x96')]({'plain':!![]});var _0x38354b={'where':{'$and':[{'ListId':{'$ne':null}}]}};if(_0x7c7f48&&_0x7c7f48[_0xe76a('0xb8')]){if(_0x7c7f48[_0xe76a('0xb8')]){_0x38354b[_0xe76a('0x3f')][_0xe76a('0xbd')][_0xe76a('0x32')]({'ListId':{'$ne':_0x7c7f48[_0xe76a('0xb8')]}});}}return db[_0xe76a('0x8f')][_0xe76a('0x90')](_0x38354b);})[_0xe76a('0x26')](function(_0x2a22de){return _[_0xe76a('0xbe')](_0x43afca,_['map'](_0x2a22de,function(_0x56efde){return util[_0xe76a('0xbf')](_0xe76a('0xc0'),_0x56efde['id']);}));})['then'](handleEntityNotFound(_0x388cee,null))[_0xe76a('0x26')](respondWithResult(_0x388cee,null))[_0xe76a('0x8b')](handleError(_0x388cee,null));};exports[_0xe76a('0x25')]=function(_0x539468,_0x130bcb){var _0x30897a;if(_0x539468[_0xe76a('0x95')]['id']){delete _0x539468[_0xe76a('0x95')]['id'];}return db[_0xe76a('0x2c')][_0xe76a('0x4f')]({'where':{'id':_0x539468[_0xe76a('0x8c')]['id']}})['then'](handleEntityNotFound(_0x130bcb,null))[_0xe76a('0x26')](saveUpdates(_0x539468[_0xe76a('0x95')],null))[_0xe76a('0x26')](function(_0x33da70){_0x30897a=_0x33da70;var _0xec79c6={'where':{'$and':[{'ListId':{'$ne':null}}]}};if(_0x33da70&&_0x33da70[_0xe76a('0xb8')]){if(_0x33da70[_0xe76a('0xb8')]){_0xec79c6[_0xe76a('0x3f')][_0xe76a('0xbd')]['push']({'ListId':{'$ne':_0x33da70[_0xe76a('0xb8')]}});}}return db[_0xe76a('0x8f')][_0xe76a('0x90')](_0xec79c6);})[_0xe76a('0x26')](function(_0x38a071){if(_0x38a071){return _['omit'](_[_0xe76a('0xc1')](_0x539468[_0xe76a('0x95')],function(_0x22928f,_0x2cd1a7){return _[_0xe76a('0x30')](_0x2cd1a7,_0xe76a('0x31'));}),_['map'](_0x38a071,function(_0x510ac5){return util['format'](_0xe76a('0xc0'),_0x510ac5['id']);}));}})['then'](function(_0x2f64a2){if(_0x2f64a2&&!_[_0xe76a('0x74')](_0x2f64a2)){var _0xa7f89=squel[_0xe76a('0x25')]()[_0xe76a('0xc2')](_0xe76a('0xc3'))['setFields'](_0x2f64a2)['where']('id\x20=\x20?',_0x539468[_0xe76a('0x8c')]['id'])[_0xe76a('0xc4')]();return db[_0xe76a('0x7d')][_0xe76a('0x37')](_0xa7f89[_0xe76a('0xc5')],{'replacements':_0xa7f89[_0xe76a('0x93')]});}})['then'](function(){if(_0x539468[_0xe76a('0x95')][_0xe76a('0xc6')]&&_0x30897a){return db[_0xe76a('0x9a')][_0xe76a('0x25')]({'phone':_0x539468['body'][_0xe76a('0xc6')]},{'where':{'ContactId':_0x30897a['id']}});}})[_0xe76a('0x26')](function(){return _0x30897a;})[_0xe76a('0x26')](respondWithResult(_0x130bcb,null))[_0xe76a('0x8b')](handleError(_0x130bcb,null));};exports[_0xe76a('0xc7')]=function(_0x372873,_0x53c25b,_0x43e403){var _0x539868={};var _0x423146={};var _0x13f77d;var _0x1e077c;return db[_0xe76a('0x2c')]['findOne']({'where':{'id':_0x372873[_0xe76a('0x8c')]['id']}})[_0xe76a('0x26')](handleEntityNotFound(_0x53c25b,null))[_0xe76a('0x26')](function(_0x8ffee5){if(_0x8ffee5){_0x13f77d=_0x8ffee5;_0x423146['model']=_['keys'](db[_0xe76a('0x50')][_0xe76a('0xc8')]);_0x423146[_0xe76a('0x37')]=_['keys'](_0x372873[_0xe76a('0x37')]);_0x423146[_0xe76a('0x40')]=_[_0xe76a('0x38')](_0x423146[_0xe76a('0x36')],_0x423146['query']);_0x539868[_0xe76a('0x39')]=_[_0xe76a('0x38')](_0x423146[_0xe76a('0x36')],qs[_0xe76a('0x3a')](_0x372873[_0xe76a('0x37')][_0xe76a('0x3a')]));_0x539868['attributes']=_0x539868[_0xe76a('0x39')][_0xe76a('0x2f')]?_0x539868[_0xe76a('0x39')]:_0x423146['model'];_0x539868['order']=qs['sort'](_0x372873[_0xe76a('0x37')][_0xe76a('0x3e')]);_0x539868[_0xe76a('0x3f')]=qs[_0xe76a('0x40')](_[_0xe76a('0xc9')](_0x372873[_0xe76a('0x37')],_0x423146[_0xe76a('0x40')]));if(_0x372873['query']['filter']){_0x539868['where']=_[_0xe76a('0x94')](_0x539868[_0xe76a('0x3f')],{'$or':_['map'](_0x539868['attributes'],function(_0x193f1f){var _0x4d65af={};_0x4d65af[_0x193f1f]={'$like':'%'+_0x372873[_0xe76a('0x37')][_0xe76a('0x5f')]+'%'};return _0x4d65af;})});}_0x539868=_[_0xe76a('0x94')]({},_0x539868,_0x372873[_0xe76a('0xca')]);return _0x13f77d[_0xe76a('0xc7')](_0x539868);}})['then'](function(_0x9ca56b){if(_0x9ca56b){_0x1e077c=_0x9ca56b[_0xe76a('0x2f')];if(!_0x372873[_0xe76a('0x37')][_0xe76a('0x3b')](_0xe76a('0x3c'))){_0x539868[_0xe76a('0x1f')]=qs[_0xe76a('0x1f')](_0x372873[_0xe76a('0x37')][_0xe76a('0x1f')]);_0x539868[_0xe76a('0x21')]=qs['offset'](_0x372873[_0xe76a('0x37')][_0xe76a('0x21')]);}return _0x13f77d[_0xe76a('0xc7')](_0x539868);}})[_0xe76a('0x26')](function(_0x469545){if(_0x469545){return _0x469545?{'count':_0x1e077c,'rows':_0x469545}:null;}})[_0xe76a('0x26')](respondWithResult(_0x53c25b,null))[_0xe76a('0x8b')](handleError(_0x53c25b,null));};exports[_0xe76a('0xcb')]=function(_0x7c502d,_0x1c24a2,_0x182537){if(_0x7c502d[_0xe76a('0x95')]['id']){delete _0x7c502d['body']['id'];}return db[_0xe76a('0x2c')]['findOne']({'where':{'id':_0x7c502d[_0xe76a('0x8c')]['id']}})[_0xe76a('0x26')](handleEntityNotFound(_0x1c24a2,null))[_0xe76a('0x26')](function(_0x135185){if(_0x135185){return _0x135185['setTags'](_0x7c502d[_0xe76a('0x95')][_0xe76a('0xcc')]||[]);}return null;})[_0xe76a('0x26')](respondWithResult(_0x1c24a2,null))['catch'](handleError(_0x1c24a2,null));};exports[_0xe76a('0xcd')]=function(_0x17edd7,_0xa14178,_0x2e1c5b){var _0x58fd8e={'raw':![],'where':{}};var _0x4a0eb={};var _0x19b159={'count':0x0,'rows':[]};return db[_0xe76a('0x2c')]['findOne']({'where':{'id':_0x17edd7[_0xe76a('0x8c')]['id']}})['then'](handleEntityNotFound(_0xa14178,null))[_0xe76a('0x26')](function(_0x349587){if(_0x349587){_0x4a0eb['model']=_[_0xe76a('0x2e')](db[_0xe76a('0x9a')][_0xe76a('0xc8')]);_0x4a0eb[_0xe76a('0x37')]=_[_0xe76a('0x2e')](_0x17edd7[_0xe76a('0x37')]);_0x4a0eb['filters']=_[_0xe76a('0x38')](_0x4a0eb['model'],_0x4a0eb[_0xe76a('0x37')]);_0x58fd8e['attributes']=_[_0xe76a('0x38')](_0x4a0eb[_0xe76a('0x36')],qs[_0xe76a('0x3a')](_0x17edd7[_0xe76a('0x37')][_0xe76a('0x3a')]));_0x58fd8e[_0xe76a('0x39')]=_0x58fd8e[_0xe76a('0x39')]['length']?_0x58fd8e[_0xe76a('0x39')]:_0x4a0eb[_0xe76a('0x36')];if(!_0x17edd7[_0xe76a('0x37')]['hasOwnProperty'](_0xe76a('0x3c'))){_0x58fd8e[_0xe76a('0x1f')]=qs[_0xe76a('0x1f')](_0x17edd7['query'][_0xe76a('0x1f')]);_0x58fd8e[_0xe76a('0x21')]=qs[_0xe76a('0x21')](_0x17edd7[_0xe76a('0x37')]['offset']);}_0x58fd8e[_0xe76a('0x3d')]=qs[_0xe76a('0x3e')](_0x17edd7[_0xe76a('0x37')]['sort']);_0x58fd8e[_0xe76a('0x3f')]=qs[_0xe76a('0x40')](_[_0xe76a('0xc9')](_0x17edd7['query'],_0x4a0eb[_0xe76a('0x40')]));_0x58fd8e['where'][_0xe76a('0xce')]=_0x349587['id'];if(_0x17edd7[_0xe76a('0x37')][_0xe76a('0x5f')]){_0x58fd8e[_0xe76a('0x3f')]=_[_0xe76a('0x94')](_0x58fd8e[_0xe76a('0x3f')],{'$or':_[_0xe76a('0x53')](_0x58fd8e[_0xe76a('0x39')],function(_0x51e382){var _0x451e7d={};_0x451e7d[_0x51e382]={'$like':'%'+_0x17edd7[_0xe76a('0x37')][_0xe76a('0x5f')]+'%'};return _0x451e7d;})});}_0x58fd8e=_[_0xe76a('0x94')]({},_0x58fd8e,_0x17edd7['options']);return db[_0xe76a('0x9a')]['count']({'where':_0x58fd8e[_0xe76a('0x3f')]})['then'](function(_0x45ed6e){_0x19b159[_0xe76a('0x20')]=_0x45ed6e;if(_0x17edd7[_0xe76a('0x37')][_0xe76a('0xcf')]){_0x58fd8e[_0xe76a('0xd0')]=[{'all':!![]}];}return db['CmHopper'][_0xe76a('0x90')](_0x58fd8e);})[_0xe76a('0x26')](function(_0x221c4c){_0x19b159['rows']=_0x221c4c;return _0x19b159;});}})['then'](respondWithFilteredResult(_0xa14178,_0x58fd8e))[_0xe76a('0x8b')](handleError(_0xa14178,null));};exports[_0xe76a('0xd1')]=function(_0x5c341d,_0x5b6883,_0x3dc2ed){var _0x510d1a={'raw':!![],'where':{}};var _0x1e251a={};var _0x4ff74f={'count':0x0,'rows':[]};return db[_0xe76a('0x2c')]['findOne']({'where':{'id':_0x5c341d[_0xe76a('0x8c')]['id']}})[_0xe76a('0x26')](handleEntityNotFound(_0x5b6883,null))[_0xe76a('0x26')](function(_0x2d62f9){if(_0x2d62f9){_0x1e251a[_0xe76a('0x36')]=_['keys'](db['CmHopperHistory'][_0xe76a('0xc8')]);_0x1e251a[_0xe76a('0x37')]=_[_0xe76a('0x2e')](_0x5c341d[_0xe76a('0x37')]);_0x1e251a['filters']=_[_0xe76a('0x38')](_0x1e251a[_0xe76a('0x36')],_0x1e251a[_0xe76a('0x37')]);_0x510d1a[_0xe76a('0x39')]=_[_0xe76a('0x38')](_0x1e251a['model'],qs[_0xe76a('0x3a')](_0x5c341d[_0xe76a('0x37')][_0xe76a('0x3a')]));_0x510d1a[_0xe76a('0x39')]=_0x510d1a[_0xe76a('0x39')][_0xe76a('0x2f')]?_0x510d1a[_0xe76a('0x39')]:_0x1e251a[_0xe76a('0x36')];if(!_0x5c341d[_0xe76a('0x37')][_0xe76a('0x3b')]('nolimit')){_0x510d1a[_0xe76a('0x1f')]=qs[_0xe76a('0x1f')](_0x5c341d[_0xe76a('0x37')][_0xe76a('0x1f')]);_0x510d1a[_0xe76a('0x21')]=qs[_0xe76a('0x21')](_0x5c341d['query'][_0xe76a('0x21')]);}_0x510d1a['order']=qs[_0xe76a('0x3e')](_0x5c341d[_0xe76a('0x37')][_0xe76a('0x3e')]);_0x510d1a['where']=qs[_0xe76a('0x40')](_[_0xe76a('0xc9')](_0x5c341d[_0xe76a('0x37')],_0x1e251a[_0xe76a('0x40')]));_0x510d1a['where'][_0xe76a('0xce')]=_0x2d62f9['id'];if(_0x5c341d[_0xe76a('0x37')][_0xe76a('0x5f')]){_0x510d1a[_0xe76a('0x3f')]=_[_0xe76a('0x94')](_0x510d1a[_0xe76a('0x3f')],{'$or':_[_0xe76a('0x53')](_0x510d1a[_0xe76a('0x39')],function(_0x490c9b){var _0x8f2320={};_0x8f2320[_0x490c9b]={'$like':'%'+_0x5c341d[_0xe76a('0x37')][_0xe76a('0x5f')]+'%'};return _0x8f2320;})});}_0x510d1a=_[_0xe76a('0x94')]({},_0x510d1a,_0x5c341d[_0xe76a('0xca')]);return db['CmHopperHistory']['count']({'where':_0x510d1a['where']})[_0xe76a('0x26')](function(_0x3869bc){_0x4ff74f['count']=_0x3869bc;if(_0x5c341d['query'][_0xe76a('0xcf')]){_0x510d1a[_0xe76a('0xd0')]=[{'all':!![]}];}return db[_0xe76a('0xd2')]['findAll'](_0x510d1a);})[_0xe76a('0x26')](function(_0x5a80a9){_0x4ff74f['rows']=_0x5a80a9;return _0x4ff74f;});}})[_0xe76a('0x26')](respondWithFilteredResult(_0x5b6883,_0x510d1a))[_0xe76a('0x8b')](handleError(_0x5b6883,null));};exports['getHopperFinals']=function(_0x5e6e97,_0x17f842,_0x44d249){var _0x40cb9b={'raw':!![],'where':{}};var _0x176684={};var _0x3d126c={'count':0x0,'rows':[]};return db[_0xe76a('0x2c')]['findOne']({'where':{'id':_0x5e6e97['params']['id']}})[_0xe76a('0x26')](handleEntityNotFound(_0x17f842,null))['then'](function(_0x152f2c){if(_0x152f2c){_0x176684[_0xe76a('0x36')]=_[_0xe76a('0x2e')](db['CmHopperFinal'][_0xe76a('0xc8')]);_0x176684[_0xe76a('0x37')]=_[_0xe76a('0x2e')](_0x5e6e97[_0xe76a('0x37')]);_0x176684[_0xe76a('0x40')]=_[_0xe76a('0x38')](_0x176684['model'],_0x176684['query']);_0x40cb9b[_0xe76a('0x39')]=_['intersection'](_0x176684[_0xe76a('0x36')],qs['fields'](_0x5e6e97['query']['fields']));_0x40cb9b['attributes']=_0x40cb9b['attributes'][_0xe76a('0x2f')]?_0x40cb9b[_0xe76a('0x39')]:_0x176684[_0xe76a('0x36')];if(!_0x5e6e97[_0xe76a('0x37')]['hasOwnProperty'](_0xe76a('0x3c'))){_0x40cb9b[_0xe76a('0x1f')]=qs[_0xe76a('0x1f')](_0x5e6e97[_0xe76a('0x37')][_0xe76a('0x1f')]);_0x40cb9b[_0xe76a('0x21')]=qs[_0xe76a('0x21')](_0x5e6e97[_0xe76a('0x37')][_0xe76a('0x21')]);}_0x40cb9b[_0xe76a('0x3d')]=qs[_0xe76a('0x3e')](_0x5e6e97['query'][_0xe76a('0x3e')]);_0x40cb9b['where']=qs[_0xe76a('0x40')](_['pick'](_0x5e6e97[_0xe76a('0x37')],_0x176684[_0xe76a('0x40')]));_0x40cb9b[_0xe76a('0x3f')][_0xe76a('0xce')]=_0x152f2c['id'];if(_0x5e6e97[_0xe76a('0x37')]['filter']){_0x40cb9b[_0xe76a('0x3f')]=_['merge'](_0x40cb9b[_0xe76a('0x3f')],{'$or':_[_0xe76a('0x53')](_0x40cb9b[_0xe76a('0x39')],function(_0x3e6f98){var _0x1841f8={};_0x1841f8[_0x3e6f98]={'$like':'%'+_0x5e6e97[_0xe76a('0x37')][_0xe76a('0x5f')]+'%'};return _0x1841f8;})});}_0x40cb9b=_['merge']({},_0x40cb9b,_0x5e6e97['options']);return db[_0xe76a('0xa8')][_0xe76a('0x20')]({'where':_0x40cb9b['where']})['then'](function(_0xf0e59d){_0x3d126c[_0xe76a('0x20')]=_0xf0e59d;if(_0x5e6e97['query'][_0xe76a('0xcf')]){_0x40cb9b[_0xe76a('0xd0')]=[{'all':!![]}];}return db[_0xe76a('0xa8')][_0xe76a('0x90')](_0x40cb9b);})[_0xe76a('0x26')](function(_0x2205c6){_0x3d126c[_0xe76a('0x8a')]=_0x2205c6;return _0x3d126c;});}})['then'](respondWithFilteredResult(_0x17f842,_0x40cb9b))[_0xe76a('0x8b')](handleError(_0x17f842,null));};exports[_0xe76a('0xd3')]=function(_0x4b49dc,_0x57fa2a,_0xb950d9){var _0x2f803a={'raw':!![],'where':{}};var _0x13e00c={};var _0xfe3a52={'count':0x0,'rows':[]};return db['CmContact'][_0xe76a('0xd4')]({'where':{'id':_0x4b49dc[_0xe76a('0x8c')]['id']}})[_0xe76a('0x26')](handleEntityNotFound(_0x57fa2a,null))[_0xe76a('0x26')](function(_0x2a6a5a){if(_0x2a6a5a){_0x13e00c['model']=_[_0xe76a('0x2e')](db[_0xe76a('0xb0')][_0xe76a('0xc8')]);_0x13e00c[_0xe76a('0x37')]=_[_0xe76a('0x2e')](_0x4b49dc[_0xe76a('0x37')]);_0x13e00c[_0xe76a('0x40')]=_[_0xe76a('0x38')](_0x13e00c['model'],_0x13e00c[_0xe76a('0x37')]);_0x2f803a[_0xe76a('0x39')]=_[_0xe76a('0x38')](_0x13e00c['model'],qs['fields'](_0x4b49dc['query'][_0xe76a('0x3a')]));_0x2f803a[_0xe76a('0x39')]=_0x2f803a[_0xe76a('0x39')][_0xe76a('0x2f')]?_0x2f803a[_0xe76a('0x39')]:_0x13e00c['model'];if(!_0x4b49dc[_0xe76a('0x37')][_0xe76a('0x3b')](_0xe76a('0x3c'))){_0x2f803a['limit']=qs['limit'](_0x4b49dc[_0xe76a('0x37')]['limit']);_0x2f803a['offset']=qs[_0xe76a('0x21')](_0x4b49dc[_0xe76a('0x37')]['offset']);}_0x2f803a[_0xe76a('0x3d')]=qs['sort'](_0x4b49dc['query'][_0xe76a('0x3e')]);_0x2f803a[_0xe76a('0x3f')]=qs['filters'](_[_0xe76a('0xc9')](_0x4b49dc['query'],_0x13e00c[_0xe76a('0x40')]));_0x2f803a[_0xe76a('0x3f')]['ContactId']=_0x2a6a5a['id'];if(_0x4b49dc[_0xe76a('0x37')][_0xe76a('0x5f')]){_0x2f803a[_0xe76a('0x3f')]=_[_0xe76a('0x94')](_0x2f803a[_0xe76a('0x3f')],{'$or':_[_0xe76a('0x53')](_0x2f803a['attributes'],function(_0x38ccbc){var _0x30fcc5={};_0x30fcc5[_0x38ccbc]={'$like':'%'+_0x4b49dc[_0xe76a('0x37')][_0xe76a('0x5f')]+'%'};return _0x30fcc5;})});}_0x2f803a=_[_0xe76a('0x94')]({},_0x2f803a,_0x4b49dc['options']);return db[_0xe76a('0xb0')][_0xe76a('0x20')]({'where':_0x2f803a[_0xe76a('0x3f')]})['then'](function(_0x5af950){_0xfe3a52[_0xe76a('0x20')]=_0x5af950;if(_0x4b49dc[_0xe76a('0x37')][_0xe76a('0xcf')]){_0x2f803a[_0xe76a('0xd0')]=[{'all':!![]}];}return db['JscriptySessionReport'][_0xe76a('0x90')](_0x2f803a);})[_0xe76a('0x26')](function(_0x36bf96){_0xfe3a52[_0xe76a('0x8a')]=_0x36bf96;return _0xfe3a52;});}})[_0xe76a('0x26')](respondWithFilteredResult(_0x57fa2a,_0x2f803a))[_0xe76a('0x8b')](handleError(_0x57fa2a,null));};exports['uploadCsv']=function(_0x2a6500,_0x1acabd,_0x476814){try{if(!_0x2a6500[_0xe76a('0x95')]['ListId']){throw new Error(_0xe76a('0xd5'));}if(!_0x2a6500[_0xe76a('0x95')][_0xe76a('0xd6')]){throw new Error(_0xe76a('0xd7'));}if(!_0x2a6500[_0xe76a('0x95')][_0xe76a('0xd8')]){throw new Error(_0xe76a('0xd9'));}if(!_0x2a6500['body'][_0xe76a('0xda')]){throw new Error('Unable\x20to\x20synchronize\x20socket,\x20no\x20timestamp\x20passed');}var _0x53f7ba=_0x2a6500[_0xe76a('0x95')]['binding_keys'][_0xe76a('0x52')](',');var _0x49e099=_0x2a6500['body']['binding_values'][_0xe76a('0x52')](',');if(!_0x53f7ba['length']||!_0x49e099['length']||_0x53f7ba['length']!==_0x49e099['length']){throw new Error(_0xe76a('0xdb'));}_0x2a6500['body'][_0xe76a('0x3a')]=_[_0xe76a('0xdc')](_0x53f7ba,_0x49e099);if(!_0x2a6500[_0xe76a('0x95')][_0xe76a('0x3a')][_0xe76a('0xc6')]){throw new Error(_0xe76a('0xdd'));}if(!_0x2a6500['body'][_0xe76a('0x3a')][_0xe76a('0xde')]){throw new Error(_0xe76a('0xdf'));}var _0x4368f1=path['join'](config[_0xe76a('0xe0')],_0xe76a('0xe1'),_0x2a6500[_0xe76a('0xe2')][_0xe76a('0xe3')]);fs[_0xe76a('0xe4')](_0x4368f1,parseInt(_0xe76a('0xe5'),0x8));var _0x2fc988=require('child_process')[_0xe76a('0xe6')](path[_0xe76a('0x98')](__dirname,_0xe76a('0xe7')),[_0x4368f1,_0x2a6500[_0xe76a('0x95')][_0xe76a('0xd6')],_0x2a6500[_0xe76a('0x95')][_0xe76a('0xd8')],_0x2a6500[_0xe76a('0x95')][_0xe76a('0xb8')],_0x2a6500[_0xe76a('0x95')]['CompanyId'],_0x2a6500[_0xe76a('0x95')][_0xe76a('0xb6')],_0x2a6500[_0xe76a('0x95')][_0xe76a('0xda')]]);return _0x1acabd[_0xe76a('0x1b')](0xc8)[_0xe76a('0x1d')]({'message':_0xe76a('0xe8'),'pid':_0x2fc988['pid']});}catch(_0x32666a){return _0x1acabd['status'](0x1f4)[_0xe76a('0x2b')](_0x32666a);}};exports[_0xe76a('0xe9')]=function(_0xf4593a,_0x5619df,_0x31ab3d){var _0x476be6=fs[_0xe76a('0xea')](_0xf4593a[_0xe76a('0xe2')][_0xe76a('0x5')]);Papa['parse'](_0x476be6,{'header':!![],'skipEmptyLines':!![],'preview':0x1,'complete':function(_0x210727){return _0x5619df[_0xe76a('0x1b')](0xc8)['json']({'file':_0xf4593a[_0xe76a('0xe2')],'fields':_0x210727[_0xe76a('0xeb')]['fields']});}});};exports[_0xe76a('0xec')]=function(_0x3ca9b5,_0x293931,_0x24e869){return db[_0xe76a('0x57')]['findAll']({'raw':!![],'attributes':['id'],'where':{'role':_0xe76a('0x7c')}})[_0xe76a('0x26')](function(_0xf2881f){var _0x507d0e=![];if(!_0x3ca9b5['body'][_0xe76a('0xb8')]){throw new Error('No\x20ListId\x20specified');}if(!_0x3ca9b5[_0xe76a('0x95')][_0xe76a('0xed')]['phone']){throw new Error(_0xe76a('0xdd'));}if(!_0x3ca9b5[_0xe76a('0x95')][_0xe76a('0xed')][_0xe76a('0xde')]){throw new Error(_0xe76a('0xdf'));}if(!_0x3ca9b5[_0xe76a('0x95')][_0xe76a('0xda')]){throw new Error('Unable\x20to\x20synchronize\x20socket,\x20no\x20timestamp\x20passed');}var _0x3790a1=require('child_process')['fork'](path[_0xe76a('0x98')](__dirname,_0xe76a('0xee')),[_0x3ca9b5['params']['id'],JSON[_0xe76a('0xef')](_0x3ca9b5[_0xe76a('0x95')]),JSON[_0xe76a('0xef')](_0xf2881f)]);_0x3790a1['on'](_0xe76a('0xf0'),function(_0x13af56){_0x507d0e=!![];return _0x293931[_0xe76a('0x1b')](0xc8)[_0xe76a('0x1d')]({'message':_0xe76a('0xf1'),'pid':_0x3790a1[_0xe76a('0xf2')]});});_0x3790a1['on'](_0xe76a('0xf3'),function(_0x465e71){if(_0x465e71&&!_0x507d0e){return _0x293931['status'](0x1f4)[_0xe76a('0x1d')]({'message':'error\x20child\x20process','pid':_0x3790a1[_0xe76a('0xf2')]});}});})['catch'](handleError(_0x293931,null));};exports[_0xe76a('0xf4')]=function(_0x4844e1,_0x214c5f){var _0x445347=[_0xe76a('0xf5'),'chat',_0xe76a('0xf6'),_0xe76a('0xf7'),_0xe76a('0xf8'),_0xe76a('0xf9'),_0xe76a('0xfa')];var _0x477e57={'offset':0x0,'order':qs[_0xe76a('0x3e')](_0xe76a('0xfb'))},_0x539ea5={'count':0x0,'rows':[]};Promise[_0xe76a('0x77')]()['then'](function(){if(_0x4844e1['query'][_0xe76a('0xfc')]){if(!_[_0xe76a('0xfd')](_0x445347,_0x4844e1[_0xe76a('0x37')][_0xe76a('0xfc')][_0xe76a('0xfe')]())){throw new Error(_0xe76a('0xff'));}_0x445347=[_0x4844e1[_0xe76a('0x37')][_0xe76a('0xfc')][_0xe76a('0xfe')]()];}if(_0x4844e1[_0xe76a('0x37')]['range']){try{var _0x437df3=JSON[_0xe76a('0x100')](_0x4844e1['query'][_0xe76a('0x101')]);if(!moment(_0x437df3['from'])[_0xe76a('0x102')]()){throw new Error(_0xe76a('0x103'));}if(!moment(_0x437df3['to'])[_0xe76a('0x102')]()){throw new Error(_0xe76a('0x104'));}}catch(_0x54677a){throw new Error(_0xe76a('0x105'));}}if(!_0x4844e1[_0xe76a('0x37')][_0xe76a('0x3b')]('nolimit')){_0x477e57[_0xe76a('0x1f')]=qs[_0xe76a('0x1f')](_0x4844e1[_0xe76a('0x37')][_0xe76a('0x1f')]||0xa);_0x477e57[_0xe76a('0x21')]=qs[_0xe76a('0x21')](_0x4844e1['query'][_0xe76a('0x21')]);}var _0xbf1e00=_0x445347[_0xe76a('0x53')](function(_0x5cc601){if(_0x5cc601===_0xe76a('0xfa')){var _0x42bff5={'attributes':['id',_0xe76a('0x106'),'type',_0xe76a('0x107'),_0xe76a('0x108'),'callerid','starttime',_0xe76a('0x109'),_0xe76a('0x10a'),_0xe76a('0x10b'),'createdAt',_0xe76a('0x10c'),_0xe76a('0x10d'),'userThirdDisposition',_0xe76a('0x10e')],'where':{'ContactId':_0x4844e1[_0xe76a('0x8c')]['id']},'include':[{'model':db[_0xe76a('0x57')],'as':'User','attributes':['id',_0xe76a('0x2a'),_0xe76a('0x10f'),_0xe76a('0x110')]}],'order':[[_0xe76a('0x111'),'DESC']]};if(_0x4844e1[_0xe76a('0x37')][_0xe76a('0x101')]){_0x42bff5[_0xe76a('0x3f')][_0xe76a('0x111')]={'$gte':_0x437df3[_0xe76a('0x43')],'$lte':_0x437df3['to']};}return db[_0xe76a('0xaa')][_0xe76a('0x112')](_0x42bff5)[_0xe76a('0x26')](function(_0x4e9faa){_0x539ea5[_0xe76a('0x20')]+=_0x4e9faa[_0xe76a('0x20')];return _[_0xe76a('0x53')](_0x4e9faa[_0xe76a('0x8a')],function(_0x166468){var _0x133f37=_0x166468[_0xe76a('0x96')]({'plain':!![]});_0x133f37[_0xe76a('0xfc')]=_0x5cc601;if(_0x133f37[_0xe76a('0x57')]){_0x133f37[_0xe76a('0x57')]={'id':_0x133f37['User']['id'],'name':_0x133f37['User'][_0xe76a('0x2a')],'fullname':_0x133f37['User'][_0xe76a('0x10f')],'alias':_0x133f37[_0xe76a('0x57')][_0xe76a('0x110')]};}return _0x133f37;});});}else{var _0x1e8c1f=_['startCase'](_0x5cc601)+(_0x5cc601==='chat'?_0xe76a('0x113'):_0xe76a('0x114'));var _0x19288e={'attributes':['id',_0xe76a('0x115'),_0xe76a('0x116'),_0xe76a('0x111'),_0xe76a('0x10b'),_0xe76a('0x117'),_0xe76a('0x118'),_0xe76a('0x119'),_0xe76a('0x10e'),_0x1e8c1f+'Id'],'where':{'ContactId':_0x4844e1[_0xe76a('0x8c')]['id']},'include':[{'model':db[_0x1e8c1f],'as':'Account','attributes':['id',_0xe76a('0x2a'),'key']},{'model':db[_0xe76a('0x57')],'as':_0xe76a('0x11a'),'attributes':['id','name',_0xe76a('0x10f')]},{'model':db[_0xe76a('0x50')],'as':_0xe76a('0x89'),'attributes':['id',_0xe76a('0x2a'),_0xe76a('0xbc')],'through':{'attributes':[]}}],'order':[[_0xe76a('0x111'),_0xe76a('0x73')]]};if(_0x4844e1[_0xe76a('0x37')]['range']){_0x19288e[_0xe76a('0x3f')][_0xe76a('0x111')]={'$gte':_0x437df3[_0xe76a('0x43')],'$lte':_0x437df3['to']};}switch(_0x5cc601){case _0xe76a('0x11b'):_0x19288e[_0xe76a('0x39')]['push']('browserName',_0xe76a('0x11c'),_0xe76a('0x11d'),_0xe76a('0x11e'),_0xe76a('0x11f'),_0xe76a('0x120'),_0xe76a('0x121'),_0xe76a('0x122'),_0xe76a('0x123'));break;case _0xe76a('0xf5'):_0x19288e[_0xe76a('0x39')]['push'](_0xe76a('0x124'),_0xe76a('0x125'));break;case _0xe76a('0xf7'):_0x19288e[_0xe76a('0x39')][_0xe76a('0x32')](_0xe76a('0x126'),_0xe76a('0x127'));break;}return db[_[_0xe76a('0x128')](_0x5cc601)+_0xe76a('0x129')][_0xe76a('0x112')](_0x19288e)[_0xe76a('0x26')](function(_0x3d467d){_0x539ea5[_0xe76a('0x20')]+=_0x3d467d[_0xe76a('0x20')];return _[_0xe76a('0x53')](_0x3d467d['rows'],function(_0x14bb5c){var _0x441b69=_0x14bb5c[_0xe76a('0x96')]({'plain':!![]});_0x441b69[_0xe76a('0xfc')]=_0x5cc601;if(_0x441b69[_0xe76a('0x11a')]){_0x441b69[_0xe76a('0x11a')]={'id':_0x441b69[_0xe76a('0x11a')]['id'],'name':_0x441b69[_0xe76a('0x11a')][_0xe76a('0x2a')],'fullname':_0x441b69[_0xe76a('0x11a')][_0xe76a('0x10f')]};}return _0x441b69;});});}});return Promise['all'](_0xbf1e00);})[_0xe76a('0x26')](function(_0x247ba2){return _(_0x247ba2)[_0xe76a('0x12a')]()[_0xe76a('0x12b')]('createdAt')[_0xe76a('0x12c')]()['value']();})[_0xe76a('0x26')](function(_0xe2182b){_0x539ea5[_0xe76a('0x8a')]=_0x477e57[_0xe76a('0x1f')]?_0xe2182b['slice'](_0x477e57[_0xe76a('0x21')],_0x477e57[_0xe76a('0x21')]+_0x477e57[_0xe76a('0x1f')]):_0xe2182b;return _0x539ea5;})['then'](respondWithFilteredResult(_0x214c5f,_0x477e57))[_0xe76a('0x8b')](handleError(_0x214c5f,null));};
\ No newline at end of file
+var _0x2422=['customerIp','customerPort','deviceModel','osName','ratingMessage','ratingType','ratingValue','referer','subject','substatus','externalUrl','threadId','flatten','sortBy','reverse','slice','eml-format','rimraf','fast-json-patch','request-promise','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/environment','../../config/license/util','../../mysqldb','redis','defaults','localhost','socket.io-emitter','./cmContact.socket','register','sendStatus','status','offset','undefined','limit','count','set','Content-Range','json','apply','reject','save','update','destroy','end','error','name','index','CmContact','describe','then','keys','length','startsWith','cf_','push','CmCustomField','findOne','trimStart','all','fieldType','type','model','filters','query','attributes','intersection','fields','nolimit','order','sort','where','pick','select','color','from','tools_tags','left_join','cm_user_has_contacts','uc.CmContactId\x20=\x20c.id','ct.CmContactId\x20=\x20c.id','t.id\x20=\x20ct.TagId','c.deletedAt\x20IS\x20NULL','expr','parseSearch','search','sqlOperator','conditions','find','field','Tag','value','split','forEach','CONCAT(\x27,\x27,\x20`TagIds`,\x20\x27,\x27)\x20LIKE\x20?','union','User','and','uc.UserId\x20=\x20?','dateOfBirth','castTo','text','start','map','hasOwnProperty','filter','isNil','Contact','isEmpty','ListId','concat','CONCAT_WS(\x27\x20\x27,\x20c.firstName,\x20c.lastName,\x20c.email)\x20LIKE\x20?','tag','replace','MATCH\x20(c.firstName,\x20c.lastName,\x20c.phone,\x20c.mobile,\x20c.fax,\x20c.email)\x20AGAINST\x20(?\x20IN\x20BOOLEAN\x20MODE)','isNumeric','c.id\x20LIKE\x20?','c.phone\x20LIKE\x20?','c.mobile\x20LIKE\x20?','c.email\x20LIKE\x20?','c.lastName\x20LIKE\x20?','group','c.id','Sequelize','QueryTypes','SELECT','clone','DESC','having','t.id\x20IN\x20?','resolve','user','role','agent','getLists','c.ListId\x20IS\x20NULL','c.ListId\x20IN\x20?','sequelize','toString','keyBy','c.lastName','c.phone','c.mobile','c.fax','c.ListId','c.createdAt','c.deletedAt','c.CompanyId','GROUP_CONCAT(DISTINCT\x20t.id)','TagIds','Tags','rows','params','catch','displayName','findAll','columnName','alias','custom','values','body','get','mergeWith','isArray','tags','join','info','[CmContact][merge]\x20to\x20%s\x20from\x20%s','CmHopper','[CmContact][merge][destroy][CmHopper],\x20%s','CmHopperBlack','create','ChatInteraction','ChatMessage','ChatOfflineMessage','MailMessage','SmsMessage','FaxInteraction','FaxMessage','OpenchannelInteraction','CmHopperFinal','CmHopperHistory','ReportAgentPreview','VoiceCallReport','ChatQueueReport','FaxQueueReport','MailQueueReport','OpenchannelQueueReport','SmsQueueReport','JscriptySessionReport','WhatsappInteraction','WhatsappQueueReport','bulkCreate','duplicates','$or','findOrCreate','spread','show','cf_%d','omit','pickBy','format','table','cm_contacts','id\x20=\x20?','toParam','phone','getTags','merge','setTags','ids','getHoppers','rawAttributes','ContactId','includeAll','include','getHopperHistories','getHopperFinals','options','getJscriptySessions','No\x20ListId\x20specified','binding_keys','No\x20association\x20keys\x20specified!','No\x20association\x20values\x20specified!','socket_timestamp','Incorrect\x20binding\x20parameters\x20passed!','zipObject','No\x20phone\x20column\x20specified','firstName','No\x20firstName\x20column\x20specified','root','server/files/tmp','filename','chmodSync','0777','child_process','fork','../../components/import/cm/csv','binding_values','CompanyId','pid','createReadStream','file','parse','meta','import','binding','../../components/import/cm/csv2','stringify','message','start\x20child\x20process\x20correctly!','exit','getJourney','mail','chat','sms','openchannel','whatsapp','voice','-createdAt','channel','includes','Invalid\x20channel','toLowerCase','range','isValid','Invalid\x20date\x20for\x20range\x20from\x20filter','Invalid\x20date\x20for\x20range\x20to\x20filter','Invalid\x20createdAt\x20filter','uniqueid','destination','starttime','endtime','duration','createdAt','userDisposition','userThirdDisposition','UserId','fullname','findAndCountAll','startCase','Website','note','disposition','secondDisposition','Owner','browserName'];(function(_0x364a36,_0x1e2677){var _0x5cd6fa=function(_0x58d692){while(--_0x58d692){_0x364a36['push'](_0x364a36['shift']());}};_0x5cd6fa(++_0x1e2677);}(_0x2422,0x143));var _0x2242=function(_0x3cca86,_0x364bc7){_0x3cca86=_0x3cca86-0x0;var _0x4709b2=_0x2422[_0x3cca86];return _0x4709b2;};'use strict';var emlformat=require(_0x2242('0x0'));var rimraf=require(_0x2242('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0x2242('0x2'));var rp=require(_0x2242('0x3'));var moment=require('moment');var BPromise=require(_0x2242('0x4'));var Mustache=require(_0x2242('0x5'));var util=require(_0x2242('0x6'));var path=require(_0x2242('0x7'));var sox=require(_0x2242('0x8'));var csv=require(_0x2242('0x9'));var ejs=require(_0x2242('0xa'));var fs=require('fs');var fs_extra=require(_0x2242('0xb'));var _=require(_0x2242('0xc'));var squel=require(_0x2242('0xd'));var crypto=require(_0x2242('0xe'));var jsforce=require(_0x2242('0xf'));var deskjs=require('desk.js');var toCsv=require(_0x2242('0x9'));var querystring=require(_0x2242('0x10'));var Papa=require(_0x2242('0x11'));var Redis=require(_0x2242('0x12'));var authService=require(_0x2242('0x13'));var qs=require(_0x2242('0x14'));var as=require(_0x2242('0x15'));var hardwareService=require(_0x2242('0x16'));var logger=require(_0x2242('0x17'))(_0x2242('0x18'));var utils=require('../../config/utils');var config=require(_0x2242('0x19'));var licenseUtil=require(_0x2242('0x1a'));var db=require(_0x2242('0x1b'))['db'];config[_0x2242('0x1c')]=_[_0x2242('0x1d')](config[_0x2242('0x1c')],{'host':_0x2242('0x1e'),'port':0x18eb});var socket=require(_0x2242('0x1f'))(new Redis(config[_0x2242('0x1c')]));require(_0x2242('0x20'))[_0x2242('0x21')](socket);function respondWithStatusCode(_0x30cf85,_0x2124c1){_0x2124c1=_0x2124c1||0xcc;return function(_0x4c536a){if(_0x4c536a){return _0x30cf85[_0x2242('0x22')](_0x2124c1);}return _0x30cf85[_0x2242('0x23')](_0x2124c1)['end']();};}function respondWithResult(_0x4638cd,_0x481a7f){_0x481a7f=_0x481a7f||0xc8;return function(_0x3b12c2){if(_0x3b12c2){return _0x4638cd[_0x2242('0x23')](_0x481a7f)['json'](_0x3b12c2);}};}function respondWithFilteredResult(_0x26753a,_0x3768ee){return function(_0x4be9c6){if(_0x4be9c6){var _0x1fdbf9=typeof _0x3768ee[_0x2242('0x24')]===_0x2242('0x25')&&typeof _0x3768ee[_0x2242('0x26')]==='undefined';var _0x393db6=_0x4be9c6[_0x2242('0x27')];var _0x7463a0=_0x1fdbf9?0x0:_0x3768ee[_0x2242('0x24')];var _0xa69c2=_0x1fdbf9?_0x4be9c6['count']:_0x3768ee[_0x2242('0x24')]+_0x3768ee[_0x2242('0x26')];var _0x581e21;if(_0xa69c2>=_0x393db6){_0xa69c2=_0x393db6;_0x581e21=0xc8;}else{_0x581e21=0xce;}_0x26753a[_0x2242('0x23')](_0x581e21);return _0x26753a[_0x2242('0x28')](_0x2242('0x29'),_0x7463a0+'-'+_0xa69c2+'/'+_0x393db6)[_0x2242('0x2a')](_0x4be9c6);}return null;};}function patchUpdates(_0x2f9db6){return function(_0x2c2b86){try{jsonpatch[_0x2242('0x2b')](_0x2c2b86,_0x2f9db6,!![]);}catch(_0x240b61){return BPromise[_0x2242('0x2c')](_0x240b61);}return _0x2c2b86[_0x2242('0x2d')]();};}function saveUpdates(_0x51271d,_0x467d7f){return function(_0x55acdd){if(_0x55acdd){return _0x55acdd[_0x2242('0x2e')](_0x51271d)['then'](function(_0x285805){return _0x285805;});}return null;};}function removeEntity(_0x1a6b50,_0x326945){return function(_0x335b3c){if(_0x335b3c){return _0x335b3c[_0x2242('0x2f')]()['then'](function(){_0x1a6b50[_0x2242('0x23')](0xcc)[_0x2242('0x30')]();});}};}function handleEntityNotFound(_0x9350a8,_0x189075){return function(_0x715ca2){if(!_0x715ca2){_0x9350a8['sendStatus'](0x194);}return _0x715ca2;};}function handleError(_0x3e8c97,_0x38c127){_0x38c127=_0x38c127||0x1f4;return function(_0x4b37d6){logger[_0x2242('0x31')](_0x4b37d6['stack']);if(_0x4b37d6[_0x2242('0x32')]){delete _0x4b37d6['name'];}_0x3e8c97[_0x2242('0x23')](_0x38c127)['send'](_0x4b37d6);};}exports[_0x2242('0x33')]=function(_0x2cd76d,_0x12a68a){var _0x42da9a={},_0x263b3b={},_0x360cda={'count':0x0,'rows':[]};return db[_0x2242('0x34')][_0x2242('0x35')]()[_0x2242('0x36')](function(_0x2df5e0){var _0x1f4ae9=[];for(var _0x1a597e=0x0;_0x1a597e<Object[_0x2242('0x37')](_0x2df5e0)[_0x2242('0x38')];_0x1a597e++){var _0x1e7d6e=Object[_0x2242('0x37')](_0x2df5e0)[_0x1a597e];if(_[_0x2242('0x39')](_0x1e7d6e,_0x2242('0x3a'))){_0x1f4ae9[_0x2242('0x3b')](db[_0x2242('0x3c')][_0x2242('0x3d')]({'where':{'id':_[_0x2242('0x3e')](_0x1e7d6e,_0x2242('0x3a'))},'raw':!![]}));}}return BPromise[_0x2242('0x3f')](_0x1f4ae9)[_0x2242('0x36')](function(_0x15c828){for(var _0x410d8a=0x0;_0x410d8a<_0x15c828['length'];_0x410d8a++){if(_0x15c828[_0x410d8a]){var _0x27220a='cf_'+_0x15c828[_0x410d8a]['id'];var _0x4a19fa=_0x2df5e0[_0x27220a];_0x4a19fa[_0x2242('0x40')]=_0x15c828[_0x410d8a][_0x2242('0x41')];}}return _0x2df5e0;});})['then'](function(_0x3c065b){_0x263b3b[_0x2242('0x42')]=_[_0x2242('0x37')](_0x3c065b);_0x263b3b['query']=_[_0x2242('0x37')](_0x2cd76d['query']);_0x263b3b[_0x2242('0x43')]=_['intersection'](_0x263b3b[_0x2242('0x42')],_0x263b3b[_0x2242('0x44')]);_0x42da9a[_0x2242('0x45')]=_[_0x2242('0x46')](_0x263b3b[_0x2242('0x42')],qs[_0x2242('0x47')](_0x2cd76d[_0x2242('0x44')][_0x2242('0x47')]));_0x42da9a['attributes']=_0x42da9a[_0x2242('0x45')][_0x2242('0x38')]?_0x42da9a[_0x2242('0x45')]:_0x263b3b[_0x2242('0x42')];if(!_0x2cd76d[_0x2242('0x44')]['hasOwnProperty'](_0x2242('0x48'))){_0x42da9a[_0x2242('0x26')]=qs[_0x2242('0x26')](_0x2cd76d['query'][_0x2242('0x26')]);_0x42da9a['offset']=qs[_0x2242('0x24')](_0x2cd76d[_0x2242('0x44')][_0x2242('0x24')]);}_0x42da9a[_0x2242('0x49')]=qs[_0x2242('0x4a')](_0x2cd76d[_0x2242('0x44')][_0x2242('0x4a')]);_0x42da9a[_0x2242('0x4b')]=qs['filters'](_[_0x2242('0x4c')](_0x2cd76d[_0x2242('0x44')],_0x263b3b[_0x2242('0x43')]),_0x3c065b);var _0x5782bc=[];var _0x80025a=squel[_0x2242('0x4d')]()['field']('id')['field'](_0x2242('0x32'))['field'](_0x2242('0x4e'))[_0x2242('0x4f')](_0x2242('0x50'));var _0x2b22b3=squel[_0x2242('0x4d')]()[_0x2242('0x4f')]('cm_contacts','c')[_0x2242('0x51')](_0x2242('0x52'),'uc',_0x2242('0x53'))[_0x2242('0x51')]('cm_contact_has_tags','ct',_0x2242('0x54'))['left_join']('tools_tags','t',_0x2242('0x55'))['where'](_0x2242('0x56'));var _0x849bf0=squel[_0x2242('0x57')]();var _0x3bb3d7=[];var _0x382e68=squel[_0x2242('0x57')]();var _0x5f1e5e;if(_0x2cd76d[_0x2242('0x44')]['search']){_0x5f1e5e=as[_0x2242('0x58')](_0x2cd76d[_0x2242('0x44')][_0x2242('0x59')]);var _0x231d52=_0x5f1e5e[_0x2242('0x5a')];for(var _0x13b272=0x0;_0x13b272<_0x5f1e5e['conditions'][_0x2242('0x38')];_0x13b272++){var _0x4c5515=_0x5f1e5e[_0x2242('0x5b')][_0x13b272];var _0x12ca51='c';var _0x1dc495=_(_0x3c065b)[_0x2242('0x37')]()[_0x2242('0x5c')](function(_0xb36fd2){return _0xb36fd2===_0x4c5515['field'];});if(_0x1dc495)_0x1dc495=_0x3c065b[_0x4c5515[_0x2242('0x5d')]];if(!_0x1dc495){if(_0x4c5515[_0x2242('0x5d')]===_0x2242('0x5e')){var _0x389e8c=_0x4c5515[_0x2242('0x5f')][_0x2242('0x60')](',')['map'](function(_0x4e710b){return Number(_0x4e710b);});_0x389e8c[_0x2242('0x61')](function(_0x51e81b){_0x382e68['or'](_0x2242('0x62'),'%,'+_0x51e81b+',%');});_0x3bb3d7=_[_0x2242('0x63')](_0x3bb3d7,_0x389e8c);}else if(_0x4c5515[_0x2242('0x5d')]===_0x2242('0x64')){_0x849bf0[_0x2242('0x65')](_0x2242('0x66'),_0x4c5515['value']);}}else{if(_0x4c5515['field']===_0x2242('0x67')||_0x1dc495['fieldType']==='datetime')_0x4c5515[_0x2242('0x68')]='DATE';var _0xba13ef=as['buildExpression'](_0x12ca51,_0x1dc495[_0x2242('0x41')],_0x4c5515);_0x849bf0[_0x231d52](_0xba13ef[_0x2242('0x69')],_0xba13ef[_0x2242('0x5f')][_0x2242('0x6a')],_0xba13ef['value'][_0x2242('0x30')]);}}}else{var _0x2b8cf9=_(Object['keys'](_0x2cd76d[_0x2242('0x44')]))[_0x2242('0x6b')](function(_0x318ae4){return _0x3c065b[_0x2242('0x6c')](_0x318ae4)?_0x318ae4:undefined;})[_0x2242('0x6d')](function(_0x489f30){return!_[_0x2242('0x6e')](_0x489f30);})[_0x2242('0x5f')]();if(_0x2cd76d[_0x2242('0x44')][_0x2242('0x6f')])_0x2b8cf9[_0x2242('0x3b')]('Contact');if(!_[_0x2242('0x70')](_0x2b8cf9)){_0x2b8cf9[_0x2242('0x61')](function(_0x452c57){if(_0x452c57===_0x2242('0x71')){_0x2b22b3[_0x2242('0x4b')]('c.ListId\x20IN\x20?',[][_0x2242('0x72')](_0x2cd76d['query'][_0x452c57]));}else if(_0x452c57==='Contact'){var _0x5ec0b7='%'+_0x2cd76d[_0x2242('0x44')][_0x452c57]+'%';_0x2b22b3[_0x2242('0x4b')](_0x2242('0x73'),_0x5ec0b7);}else{_0x2b22b3[_0x2242('0x4b')]('c.'+_0x452c57+'\x20=\x20?',_0x2cd76d[_0x2242('0x44')][_0x452c57]);}});}if(_0x2cd76d[_0x2242('0x44')]['tag']){_0x3bb3d7=_['isArray'](_0x2cd76d['query']['tag'])?_0x2cd76d['query'][_0x2242('0x74')]:new Array(_0x2cd76d[_0x2242('0x44')][_0x2242('0x74')]);_0x3bb3d7[_0x2242('0x61')](function(_0x1a3551){_0x382e68['or'](_0x2242('0x62'),'%,'+_0x1a3551+',%');});}if(_0x2cd76d[_0x2242('0x44')][_0x2242('0x6d')]){var _0x4bddca=_0x2cd76d[_0x2242('0x44')][_0x2242('0x6d')][_0x2242('0x75')]('\x5c','\x5c\x5c')[_0x2242('0x75')](/'/g,'\x27\x27');if(_0x4bddca[_0x2242('0x60')]('\x20')[_0x2242('0x38')]>0x1){_0x849bf0['or'](_0x2242('0x76'),qs['getFullTextValue'](_0x4bddca),null);}else{if(qs[_0x2242('0x77')](_0x4bddca)){_0x849bf0['or'](_0x2242('0x78'),_0x4bddca+'%');_0x849bf0['or'](_0x2242('0x79'),_0x4bddca+'%');_0x849bf0['or'](_0x2242('0x7a'),_0x4bddca+'%');_0x849bf0['or']('c.fax\x20LIKE\x20?',_0x4bddca+'%');}else if(qs['isEmail'](_0x4bddca)){_0x849bf0['or'](_0x2242('0x7b'),_0x4bddca+'%');}else{_0x849bf0['or']('c.firstName\x20LIKE\x20?','%'+_0x4bddca+'%');_0x849bf0['or'](_0x2242('0x7c'),'%'+_0x4bddca+'%');_0x849bf0['or'](_0x2242('0x7b'),'%'+_0x4bddca+'%');}}}}_0x2b22b3[_0x2242('0x4b')](_0x849bf0);_0x2b22b3[_0x2242('0x7d')](_0x2242('0x7e'));var _0x51da95={'type':db[_0x2242('0x7f')][_0x2242('0x80')][_0x2242('0x81')],'raw':!![]};var _0x54d71e=_0x2b22b3[_0x2242('0x82')]()['field'](_0x2242('0x7e'));if(_0x42da9a[_0x2242('0x49')]){_0x42da9a[_0x2242('0x49')]['forEach'](function(_0x587bf9){_0x2b22b3[_0x2242('0x49')]('c.'+_0x587bf9[0x0],_0x587bf9[0x1]===_0x2242('0x83')?![]:!![]);});}if(!_[_0x2242('0x70')](_0x3bb3d7)){_0x2b22b3[_0x2242('0x84')](_0x382e68);_0x54d71e[_0x2242('0x4b')](_0x2242('0x85'),_0x3bb3d7);}BPromise[_0x2242('0x86')]()[_0x2242('0x36')](function(){if(!_0x5f1e5e)return;if(_0x2cd76d[_0x2242('0x87')][_0x2242('0x88')]!==_0x2242('0x89'))return;if(!_['some'](_0x5f1e5e[_0x2242('0x5b')],[_0x2242('0x5d'),'User'])){return _0x2cd76d['user'][_0x2242('0x8a')]({'attributes':['id'],'raw':!![]})['then'](function(_0x1a19e5){if(_[_0x2242('0x70')](_0x1a19e5)){_0x54d71e['where'](_0x2242('0x8b'));_0x2b22b3['where'](_0x2242('0x8b'));}else{_0x54d71e[_0x2242('0x4b')](_0x2242('0x8c'),_[_0x2242('0x6b')](_0x1a19e5,'id'));_0x2b22b3['where'](_0x2242('0x8c'),_[_0x2242('0x6b')](_0x1a19e5,'id'));}});}})[_0x2242('0x36')](function(){if(_0x2cd76d['user'][_0x2242('0x88')]===_0x2242('0x89')&&!_0x5f1e5e&&!_0x2cd76d[_0x2242('0x44')][_0x2242('0x71')])return[];return db[_0x2242('0x8d')][_0x2242('0x44')](_0x54d71e[_0x2242('0x8e')](),_0x51da95);})['then'](function(_0x51dd9e){_0x360cda[_0x2242('0x27')]=_0x51dd9e['length'];if(_0x360cda[_0x2242('0x27')]===0x0)return[];return db[_0x2242('0x8d')][_0x2242('0x44')](_0x80025a[_0x2242('0x8e')](),_0x51da95)[_0x2242('0x36')](function(_0x482f2a){_0x5782bc=_[_0x2242('0x8f')](_0x482f2a,'id');_0x51da95=_['merge'](_0x51da95,{'model':db['CmContact'],'mapToModel':!![],'raw':!![],'nest':!![]});if(_0x2cd76d[_0x2242('0x44')][_0x2242('0x47')]){_0x42da9a[_0x2242('0x45')][_0x2242('0x61')](function(_0x3fdcb){_0x2b22b3[_0x2242('0x5d')]('c.'+_0x3fdcb);});}else{_0x2b22b3['field']('c.id');_0x2b22b3['field']('c.firstName');_0x2b22b3[_0x2242('0x5d')](_0x2242('0x90'));_0x2b22b3['field'](_0x2242('0x91'));_0x2b22b3[_0x2242('0x5d')](_0x2242('0x92'));_0x2b22b3[_0x2242('0x5d')](_0x2242('0x93'));_0x2b22b3['field']('c.email');_0x2b22b3[_0x2242('0x5d')](_0x2242('0x94'));_0x2b22b3[_0x2242('0x5d')](_0x2242('0x95'));_0x2b22b3[_0x2242('0x5d')](_0x2242('0x96'));_0x2b22b3['field'](_0x2242('0x97'));_0x2b22b3['field'](_0x2242('0x98'),'TagIds');}if(_0x42da9a[_0x2242('0x26')])_0x2b22b3['limit'](_0x42da9a[_0x2242('0x26')]);if(_0x42da9a[_0x2242('0x24')])_0x2b22b3[_0x2242('0x24')](_0x42da9a[_0x2242('0x24')]);return db[_0x2242('0x8d')]['query'](_0x2b22b3[_0x2242('0x8e')](),_0x51da95);});})[_0x2242('0x36')](function(_0x4b8da3){_0x4b8da3[_0x2242('0x61')](function(_0x2586fa){if(_0x2586fa[_0x2242('0x99')]){_0x2586fa[_0x2242('0x9a')]=[];_0x2586fa[_0x2242('0x99')][_0x2242('0x60')](',')['forEach'](function(_0x557cba){_0x2586fa[_0x2242('0x9a')][_0x2242('0x3b')](_0x5782bc[_0x557cba]);});}delete _0x2586fa[_0x2242('0x99')];});_0x360cda[_0x2242('0x9b')]=_0x4b8da3;return _0x360cda;})[_0x2242('0x36')](respondWithFilteredResult(_0x12a68a,_0x42da9a));})['catch'](handleError(_0x12a68a,null));};exports[_0x2242('0x2f')]=function(_0x184b51,_0x28cfc8){return db['CmContact'][_0x2242('0x5c')]({'where':{'id':_0x184b51[_0x2242('0x9c')]['id']}})[_0x2242('0x36')](handleEntityNotFound(_0x28cfc8,null))[_0x2242('0x36')](removeEntity(_0x28cfc8,null))[_0x2242('0x9d')](handleError(_0x28cfc8,null));};exports[_0x2242('0x35')]=function(_0x3fcbe2,_0xef83dc){return db[_0x2242('0x34')][_0x2242('0x35')]()['then'](function(_0x960a0a){delete _0x960a0a['tags'];for(var _0x1a7dcd=0x0;_0x1a7dcd<Object[_0x2242('0x37')](_0x960a0a)[_0x2242('0x38')];_0x1a7dcd++){var _0x3e688c=Object[_0x2242('0x37')](_0x960a0a)[_0x1a7dcd];if(!_[_0x2242('0x39')](_0x3e688c,_0x2242('0x3a'))){_0x960a0a[_0x3e688c]['columnName']=_0x3e688c;_0x960a0a[_0x3e688c][_0x2242('0x9e')]=_0x3e688c;}}return _0x960a0a;})[_0x2242('0x36')](function(_0x491598){var _0x1c67eb={'where':{'$or':[{'ListId':_0x3fcbe2[_0x2242('0x44')]['id']},{'ListId':null}]},'raw':!![]};return db[_0x2242('0x3c')][_0x2242('0x9f')](_0x1c67eb)['then'](function(_0x216cdc){for(var _0x5e2834=0x0;_0x5e2834<_0x216cdc[_0x2242('0x38')];_0x5e2834++){var _0x4c7a53=_0x2242('0x3a')+_0x216cdc[_0x5e2834]['id'];_0x491598[_0x4c7a53][_0x2242('0xa0')]=_0x4c7a53;_0x491598[_0x4c7a53]['displayName']=_0x216cdc[_0x5e2834][_0x2242('0xa1')];_0x491598[_0x4c7a53][_0x2242('0xa2')]={'type':_0x216cdc[_0x5e2834][_0x2242('0x41')],'values':_0x216cdc[_0x5e2834][_0x2242('0xa3')]};}Object['keys'](_0x491598)[_0x2242('0x61')](function(_0x4d13d1){if(!_0x491598[_0x4d13d1][_0x2242('0x6c')](_0x2242('0xa0'))){delete _0x491598[_0x4d13d1];}});return _0x491598;});})[_0x2242('0x36')](respondWithResult(_0xef83dc,null))[_0x2242('0x9d')](handleError(_0xef83dc,null));};exports['merge']=function(_0x418a3b,_0x3e89a9){var _0x3724fd;var _0x5746cb;var _0x555232;if(_0x418a3b[_0x2242('0xa4')]['id']){delete _0x418a3b[_0x2242('0xa4')]['id'];}return db[_0x2242('0x34')][_0x2242('0x9f')]({'where':{'id':[_0x418a3b[_0x2242('0xa4')]['to'],_0x418a3b[_0x2242('0xa4')][_0x2242('0x4f')]]}})[_0x2242('0x36')](function(_0x28d215){if(_0x28d215){if(_0x28d215[_0x2242('0x38')]!==0x2){return null;}_0x28d215[0x0]=_0x28d215[0x0][_0x2242('0xa5')]({'plain':!![]});_0x28d215[0x1]=_0x28d215[0x1][_0x2242('0xa5')]({'plain':!![]});delete _0x28d215[0x0]['id'];delete _0x28d215[0x1]['id'];return _[_0x2242('0xa6')](_0x28d215[0x0],_0x28d215[0x1],function(_0x416918,_0x31ee38){if(Array[_0x2242('0xa7')](_0x31ee38)&&!_0x31ee38[_0x2242('0x38')]){return _0x416918;}else if(!_0x31ee38){return _0x416918;}});}})[_0x2242('0x36')](handleEntityNotFound(_0x3e89a9,null))['then'](function(_0x185235){if(_0x185235){if(_0x185235[_0x2242('0xa8')]&&_['isArray'](_0x185235[_0x2242('0xa8')])){_0x185235[_0x2242('0xa8')]=_0x185235[_0x2242('0xa8')][_0x2242('0xa9')]();}logger[_0x2242('0xaa')](_0x2242('0xab'),_0x418a3b[_0x2242('0xa4')]['to'],_0x418a3b[_0x2242('0xa4')][_0x2242('0x4f')]);return db[_0x2242('0xac')]['destroy']({'where':{'ContactId':[_0x418a3b[_0x2242('0xa4')]['to'],_0x418a3b[_0x2242('0xa4')][_0x2242('0x4f')]]}})[_0x2242('0x36')](function(_0x32160a){logger['info'](_0x2242('0xad'),_0x32160a);return db[_0x2242('0xae')][_0x2242('0x2f')]({'where':{'ContactId':[_0x418a3b['body']['to'],_0x418a3b[_0x2242('0xa4')][_0x2242('0x4f')]]}})[_0x2242('0x36')](function(_0x2e7f11){logger['info']('[CmContact][merge][destroy][CmHopperBlack],\x20%s',_0x2e7f11);return db[_0x2242('0x34')][_0x2242('0xaf')](_0x185235);});});}})[_0x2242('0x36')](function(_0x957c60){if(_0x957c60){_0x3724fd=_0x957c60;_0x5746cb={'ContactId':_0x3724fd['id']};_0x555232={'where':{'ContactId':[_0x418a3b['body']['to'],_0x418a3b[_0x2242('0xa4')]['from']]}};return db[_0x2242('0xb0')]['update'](_0x5746cb,_0x555232);}})[_0x2242('0x36')](function(){if(_0x3724fd){return db[_0x2242('0xb1')]['update'](_0x5746cb,_0x555232);}})['then'](function(){if(_0x3724fd){return db[_0x2242('0xb2')]['update'](_0x5746cb,_0x555232);}})[_0x2242('0x36')](function(){if(_0x3724fd){return db['MailInteraction'][_0x2242('0x2e')](_0x5746cb,_0x555232);}})[_0x2242('0x36')](function(){if(_0x3724fd){return db[_0x2242('0xb3')][_0x2242('0x2e')](_0x5746cb,_0x555232);}})[_0x2242('0x36')](function(){if(_0x3724fd){return db['MailInteraction']['update'](_0x5746cb,_0x555232);}})[_0x2242('0x36')](function(){if(_0x3724fd){return db[_0x2242('0xb3')][_0x2242('0x2e')](_0x5746cb,_0x555232);}})['then'](function(){if(_0x3724fd){return db['SmsInteraction'][_0x2242('0x2e')](_0x5746cb,_0x555232);}})[_0x2242('0x36')](function(){if(_0x3724fd){return db[_0x2242('0xb4')][_0x2242('0x2e')](_0x5746cb,_0x555232);}})['then'](function(){if(_0x3724fd){return db[_0x2242('0xb5')][_0x2242('0x2e')](_0x5746cb,_0x555232);}})[_0x2242('0x36')](function(){if(_0x3724fd){return db[_0x2242('0xb6')][_0x2242('0x2e')](_0x5746cb,_0x555232);}})[_0x2242('0x36')](function(){if(_0x3724fd){return db[_0x2242('0xb7')]['update'](_0x5746cb,_0x555232);}})['then'](function(){if(_0x3724fd){return db['OpenchannelMessage']['update'](_0x5746cb,_0x555232);}})[_0x2242('0x36')](function(){if(_0x3724fd){return db[_0x2242('0xb8')][_0x2242('0x2e')](_0x5746cb,_0x555232);}})[_0x2242('0x36')](function(){if(_0x3724fd){return db[_0x2242('0xb9')][_0x2242('0x2e')](_0x5746cb,_0x555232);}})['then'](function(){if(_0x3724fd){return db[_0x2242('0xba')][_0x2242('0x2e')](_0x5746cb,_0x555232);}})[_0x2242('0x36')](function(){if(_0x3724fd){return db[_0x2242('0xbb')][_0x2242('0x2e')](_0x5746cb,_0x555232);}})[_0x2242('0x36')](function(){if(_0x3724fd){return db[_0x2242('0xbc')]['update'](_0x5746cb,_0x555232);}})['then'](function(){if(_0x3724fd){return db[_0x2242('0xbd')][_0x2242('0x2e')](_0x5746cb,_0x555232);}})['then'](function(){if(_0x3724fd){return db[_0x2242('0xbe')][_0x2242('0x2e')](_0x5746cb,_0x555232);}})['then'](function(){if(_0x3724fd){return db[_0x2242('0xbf')]['update'](_0x5746cb,_0x555232);}})[_0x2242('0x36')](function(){if(_0x3724fd){return db[_0x2242('0xc0')][_0x2242('0x2e')](_0x5746cb,_0x555232);}})[_0x2242('0x36')](function(){if(_0x3724fd){return db[_0x2242('0xc1')][_0x2242('0x2e')](_0x5746cb,_0x555232);}})[_0x2242('0x36')](function(){if(_0x3724fd){return db[_0x2242('0xc2')][_0x2242('0x2e')](_0x5746cb,_0x555232);}})['then'](function(){if(_0x3724fd){return db['WhatsappMessage'][_0x2242('0x2e')](_0x5746cb,_0x555232);}})['then'](function(){if(_0x3724fd){return db[_0x2242('0xc3')][_0x2242('0x2e')](_0x5746cb,_0x555232);}})['then'](function(){if(_0x3724fd){return db[_0x2242('0x34')][_0x2242('0x2f')]({'where':{'id':[_0x418a3b['body']['to'],_0x418a3b[_0x2242('0xa4')][_0x2242('0x4f')]]}});}})[_0x2242('0x36')](function(){if(_0x3724fd){return _0x3724fd;}})['then'](respondWithResult(_0x3e89a9,null))['catch'](handleError(_0x3e89a9,null));};exports[_0x2242('0xaf')]=function(_0x35a749,_0x48ca85){return db[_0x2242('0x34')]['describe']()['then'](function(_0x1f9d14){if(_0x35a749[_0x2242('0xa4')][_0x2242('0xa8')]&&_[_0x2242('0xa7')](_0x35a749[_0x2242('0xa4')]['tags'])){if(_0x35a749[_0x2242('0xa4')]['tags']['length']){_0x35a749['body']['tags']=_0x35a749[_0x2242('0xa4')]['tags'][_0x2242('0xa9')](';')+';';}else{_0x35a749[_0x2242('0xa4')]['tags']=null;}}else{_0x35a749['body'][_0x2242('0xa8')]=null;}return db[_0x2242('0x34')][_0x2242('0xaf')](_0x35a749['body'],{'fields':_[_0x2242('0x37')](_0x1f9d14),'raw':!![]});})['then'](respondWithResult(_0x48ca85,0xc9))['catch'](handleError(_0x48ca85,null));};exports[_0x2242('0xc4')]=function(_0xcc8e4c,_0x298944){var _0x57a192=[];var _0x5e2473=0x0;var _0x5463c1=0x0;var _0x24421d=0x0;return db[_0x2242('0x34')][_0x2242('0x35')]()[_0x2242('0x36')](function(_0xc53f71){return BPromise['each'](_0xcc8e4c['body'],function(_0x17c8c9){var _0x344aff={'where':{'$or':[]},'defaults':_0x17c8c9,'fields':_[_0x2242('0x37')](_0xc53f71),'raw':!![]};if(_0x17c8c9[_0x2242('0xc5')]){for(var _0x5c97d7=0x0;_0x5c97d7<_0x17c8c9[_0x2242('0xc5')][_0x2242('0x38')];_0x5c97d7++){var _0x367245={};_0x367245[_0x17c8c9[_0x2242('0xc5')][_0x5c97d7]]=_0x17c8c9[_0x17c8c9[_0x2242('0xc5')][_0x5c97d7]];_0x344aff[_0x2242('0x4b')][_0x2242('0xc6')][_0x2242('0x3b')](_0x367245);}_0x344aff[_0x2242('0x4b')][_0x2242('0x71')]=_0x17c8c9['ListId'];}return db[_0x2242('0x34')][_0x2242('0xc7')](_0x344aff)[_0x2242('0xc8')](function(_0x2290c5,_0x5f0a15){if(_0x5f0a15){_0x5e2473++;}else{_0x24421d++;}})[_0x2242('0x9d')](function(_0x3f0f4b){console[_0x2242('0x31')](_0x3f0f4b);_0x5463c1++;});});})[_0x2242('0x36')](function(_0x57a1ee){if(_0x57a1ee){return{'success':_0x5e2473,'failure':_0x5463c1,'duplicates':_0x24421d};}})[_0x2242('0x36')](respondWithResult(_0x298944,0xc9))[_0x2242('0x9d')](handleError(_0x298944,null));};exports[_0x2242('0xc9')]=function(_0x357349,_0x238487,_0x53d5ba){var _0x5a2073;return db[_0x2242('0x34')][_0x2242('0x35')]()[_0x2242('0x36')](function(_0x28a601){return db[_0x2242('0x34')]['find']({'where':{'id':_0x357349['params']['id']},'include':[{'model':db[_0x2242('0x5e')],'as':_0x2242('0x9a'),'attributes':['id',_0x2242('0x32'),_0x2242('0x4e')],'required':_0x357349[_0x2242('0x44')][_0x2242('0x74')]?!![]:![]}],'attributes':_[_0x2242('0x37')](_0x28a601)});})['then'](function(_0x409c4a){_0x5a2073=_0x409c4a[_0x2242('0xa5')]({'plain':!![]});var _0x3f75ab={'where':{'$and':[{'ListId':{'$ne':null}}]}};if(_0x409c4a&&_0x409c4a[_0x2242('0x71')]){if(_0x409c4a[_0x2242('0x71')]){_0x3f75ab[_0x2242('0x4b')]['$and'][_0x2242('0x3b')]({'ListId':{'$ne':_0x409c4a[_0x2242('0x71')]}});}}return db[_0x2242('0x3c')]['findAll'](_0x3f75ab);})[_0x2242('0x36')](function(_0x840ea6){return _['omit'](_0x5a2073,_[_0x2242('0x6b')](_0x840ea6,function(_0x3984f2){return util['format'](_0x2242('0xca'),_0x3984f2['id']);}));})[_0x2242('0x36')](handleEntityNotFound(_0x238487,null))[_0x2242('0x36')](respondWithResult(_0x238487,null))['catch'](handleError(_0x238487,null));};exports[_0x2242('0x2e')]=function(_0x5e3029,_0x510552){var _0x242d48;if(_0x5e3029[_0x2242('0xa4')]['id']){delete _0x5e3029[_0x2242('0xa4')]['id'];}return db['CmContact'][_0x2242('0x5c')]({'where':{'id':_0x5e3029[_0x2242('0x9c')]['id']}})[_0x2242('0x36')](handleEntityNotFound(_0x510552,null))[_0x2242('0x36')](saveUpdates(_0x5e3029[_0x2242('0xa4')],null))['then'](function(_0x2f4a7f){_0x242d48=_0x2f4a7f;var _0x150729={'where':{'$and':[{'ListId':{'$ne':null}}]}};if(_0x2f4a7f&&_0x2f4a7f[_0x2242('0x71')]){if(_0x2f4a7f[_0x2242('0x71')]){_0x150729['where']['$and'][_0x2242('0x3b')]({'ListId':{'$ne':_0x2f4a7f[_0x2242('0x71')]}});}}return db[_0x2242('0x3c')]['findAll'](_0x150729);})[_0x2242('0x36')](function(_0x2ddac4){if(_0x2ddac4){return _[_0x2242('0xcb')](_[_0x2242('0xcc')](_0x5e3029[_0x2242('0xa4')],function(_0x1208ad,_0x3fd0a5){return _[_0x2242('0x39')](_0x3fd0a5,'cf_');}),_[_0x2242('0x6b')](_0x2ddac4,function(_0x13e7f8){return util[_0x2242('0xcd')](_0x2242('0xca'),_0x13e7f8['id']);}));}})[_0x2242('0x36')](function(_0x3d0187){if(_0x3d0187&&!_['isEmpty'](_0x3d0187)){var _0x54a938=squel[_0x2242('0x2e')]()[_0x2242('0xce')](_0x2242('0xcf'))['setFields'](_0x3d0187)['where'](_0x2242('0xd0'),_0x5e3029[_0x2242('0x9c')]['id'])[_0x2242('0xd1')]();return db[_0x2242('0x8d')][_0x2242('0x44')](_0x54a938['text'],{'replacements':_0x54a938['values']});}})[_0x2242('0x36')](function(){if(_0x5e3029[_0x2242('0xa4')]['phone']&&_0x242d48){return db['CmHopper'][_0x2242('0x2e')]({'phone':_0x5e3029[_0x2242('0xa4')][_0x2242('0xd2')]},{'where':{'ContactId':_0x242d48['id']}});}})['then'](function(){return _0x242d48;})[_0x2242('0x36')](respondWithResult(_0x510552,null))[_0x2242('0x9d')](handleError(_0x510552,null));};exports[_0x2242('0xd3')]=function(_0x43d8dc,_0x2ba37e,_0x3aaa03){var _0x18cce0={};var _0x601475={};var _0x53c179;var _0x3ec8b8;return db[_0x2242('0x34')][_0x2242('0x3d')]({'where':{'id':_0x43d8dc[_0x2242('0x9c')]['id']}})['then'](handleEntityNotFound(_0x2ba37e,null))[_0x2242('0x36')](function(_0x28e71a){if(_0x28e71a){_0x53c179=_0x28e71a;_0x601475['model']=_['keys'](db[_0x2242('0x5e')]['rawAttributes']);_0x601475[_0x2242('0x44')]=_[_0x2242('0x37')](_0x43d8dc[_0x2242('0x44')]);_0x601475['filters']=_[_0x2242('0x46')](_0x601475[_0x2242('0x42')],_0x601475[_0x2242('0x44')]);_0x18cce0[_0x2242('0x45')]=_[_0x2242('0x46')](_0x601475[_0x2242('0x42')],qs[_0x2242('0x47')](_0x43d8dc[_0x2242('0x44')][_0x2242('0x47')]));_0x18cce0[_0x2242('0x45')]=_0x18cce0['attributes'][_0x2242('0x38')]?_0x18cce0['attributes']:_0x601475[_0x2242('0x42')];_0x18cce0[_0x2242('0x49')]=qs[_0x2242('0x4a')](_0x43d8dc['query']['sort']);_0x18cce0['where']=qs[_0x2242('0x43')](_['pick'](_0x43d8dc[_0x2242('0x44')],_0x601475['filters']));if(_0x43d8dc[_0x2242('0x44')]['filter']){_0x18cce0[_0x2242('0x4b')]=_[_0x2242('0xd4')](_0x18cce0['where'],{'$or':_['map'](_0x18cce0['attributes'],function(_0x17ef0d){var _0x26f27b={};_0x26f27b[_0x17ef0d]={'$like':'%'+_0x43d8dc['query'][_0x2242('0x6d')]+'%'};return _0x26f27b;})});}_0x18cce0=_[_0x2242('0xd4')]({},_0x18cce0,_0x43d8dc['options']);return _0x53c179[_0x2242('0xd3')](_0x18cce0);}})['then'](function(_0x22a7bc){if(_0x22a7bc){_0x3ec8b8=_0x22a7bc[_0x2242('0x38')];if(!_0x43d8dc[_0x2242('0x44')][_0x2242('0x6c')](_0x2242('0x48'))){_0x18cce0[_0x2242('0x26')]=qs[_0x2242('0x26')](_0x43d8dc[_0x2242('0x44')][_0x2242('0x26')]);_0x18cce0[_0x2242('0x24')]=qs[_0x2242('0x24')](_0x43d8dc[_0x2242('0x44')][_0x2242('0x24')]);}return _0x53c179[_0x2242('0xd3')](_0x18cce0);}})[_0x2242('0x36')](function(_0x2408c8){if(_0x2408c8){return _0x2408c8?{'count':_0x3ec8b8,'rows':_0x2408c8}:null;}})[_0x2242('0x36')](respondWithResult(_0x2ba37e,null))[_0x2242('0x9d')](handleError(_0x2ba37e,null));};exports['setTags']=function(_0xa1e997,_0x45c03f,_0x99f371){if(_0xa1e997[_0x2242('0xa4')]['id']){delete _0xa1e997['body']['id'];}return db['CmContact']['findOne']({'where':{'id':_0xa1e997['params']['id']}})[_0x2242('0x36')](handleEntityNotFound(_0x45c03f,null))[_0x2242('0x36')](function(_0x56aaed){if(_0x56aaed){return _0x56aaed[_0x2242('0xd5')](_0xa1e997['body'][_0x2242('0xd6')]||[]);}return null;})[_0x2242('0x36')](respondWithResult(_0x45c03f,null))[_0x2242('0x9d')](handleError(_0x45c03f,null));};exports[_0x2242('0xd7')]=function(_0x25ddd3,_0x5ca5d8,_0x165cd2){var _0x4e77aa={'raw':![],'where':{}};var _0x11e146={};var _0x543105={'count':0x0,'rows':[]};return db[_0x2242('0x34')][_0x2242('0x3d')]({'where':{'id':_0x25ddd3[_0x2242('0x9c')]['id']}})[_0x2242('0x36')](handleEntityNotFound(_0x5ca5d8,null))[_0x2242('0x36')](function(_0x324045){if(_0x324045){_0x11e146[_0x2242('0x42')]=_[_0x2242('0x37')](db[_0x2242('0xac')][_0x2242('0xd8')]);_0x11e146[_0x2242('0x44')]=_['keys'](_0x25ddd3['query']);_0x11e146['filters']=_[_0x2242('0x46')](_0x11e146['model'],_0x11e146[_0x2242('0x44')]);_0x4e77aa[_0x2242('0x45')]=_['intersection'](_0x11e146[_0x2242('0x42')],qs[_0x2242('0x47')](_0x25ddd3['query'][_0x2242('0x47')]));_0x4e77aa['attributes']=_0x4e77aa[_0x2242('0x45')]['length']?_0x4e77aa[_0x2242('0x45')]:_0x11e146[_0x2242('0x42')];if(!_0x25ddd3['query'][_0x2242('0x6c')](_0x2242('0x48'))){_0x4e77aa[_0x2242('0x26')]=qs[_0x2242('0x26')](_0x25ddd3[_0x2242('0x44')][_0x2242('0x26')]);_0x4e77aa[_0x2242('0x24')]=qs[_0x2242('0x24')](_0x25ddd3[_0x2242('0x44')][_0x2242('0x24')]);}_0x4e77aa[_0x2242('0x49')]=qs[_0x2242('0x4a')](_0x25ddd3[_0x2242('0x44')][_0x2242('0x4a')]);_0x4e77aa['where']=qs['filters'](_['pick'](_0x25ddd3[_0x2242('0x44')],_0x11e146[_0x2242('0x43')]));_0x4e77aa['where'][_0x2242('0xd9')]=_0x324045['id'];if(_0x25ddd3[_0x2242('0x44')]['filter']){_0x4e77aa[_0x2242('0x4b')]=_['merge'](_0x4e77aa['where'],{'$or':_['map'](_0x4e77aa[_0x2242('0x45')],function(_0x1fd9d6){var _0x30d0d0={};_0x30d0d0[_0x1fd9d6]={'$like':'%'+_0x25ddd3[_0x2242('0x44')][_0x2242('0x6d')]+'%'};return _0x30d0d0;})});}_0x4e77aa=_[_0x2242('0xd4')]({},_0x4e77aa,_0x25ddd3['options']);return db[_0x2242('0xac')]['count']({'where':_0x4e77aa[_0x2242('0x4b')]})[_0x2242('0x36')](function(_0x8c2ac7){_0x543105[_0x2242('0x27')]=_0x8c2ac7;if(_0x25ddd3[_0x2242('0x44')][_0x2242('0xda')]){_0x4e77aa[_0x2242('0xdb')]=[{'all':!![]}];}return db['CmHopper']['findAll'](_0x4e77aa);})['then'](function(_0x349ff2){_0x543105[_0x2242('0x9b')]=_0x349ff2;return _0x543105;});}})[_0x2242('0x36')](respondWithFilteredResult(_0x5ca5d8,_0x4e77aa))['catch'](handleError(_0x5ca5d8,null));};exports[_0x2242('0xdc')]=function(_0x7bba9f,_0x9d0fd5,_0x68b70){var _0x382b9d={'raw':!![],'where':{}};var _0x2e352a={};var _0x5a47e9={'count':0x0,'rows':[]};return db[_0x2242('0x34')][_0x2242('0x3d')]({'where':{'id':_0x7bba9f[_0x2242('0x9c')]['id']}})['then'](handleEntityNotFound(_0x9d0fd5,null))['then'](function(_0x265458){if(_0x265458){_0x2e352a['model']=_[_0x2242('0x37')](db[_0x2242('0xb9')][_0x2242('0xd8')]);_0x2e352a['query']=_[_0x2242('0x37')](_0x7bba9f['query']);_0x2e352a[_0x2242('0x43')]=_[_0x2242('0x46')](_0x2e352a[_0x2242('0x42')],_0x2e352a[_0x2242('0x44')]);_0x382b9d[_0x2242('0x45')]=_['intersection'](_0x2e352a[_0x2242('0x42')],qs[_0x2242('0x47')](_0x7bba9f['query'][_0x2242('0x47')]));_0x382b9d[_0x2242('0x45')]=_0x382b9d[_0x2242('0x45')][_0x2242('0x38')]?_0x382b9d[_0x2242('0x45')]:_0x2e352a[_0x2242('0x42')];if(!_0x7bba9f['query'][_0x2242('0x6c')](_0x2242('0x48'))){_0x382b9d[_0x2242('0x26')]=qs[_0x2242('0x26')](_0x7bba9f[_0x2242('0x44')][_0x2242('0x26')]);_0x382b9d[_0x2242('0x24')]=qs['offset'](_0x7bba9f[_0x2242('0x44')]['offset']);}_0x382b9d[_0x2242('0x49')]=qs[_0x2242('0x4a')](_0x7bba9f[_0x2242('0x44')][_0x2242('0x4a')]);_0x382b9d['where']=qs[_0x2242('0x43')](_[_0x2242('0x4c')](_0x7bba9f[_0x2242('0x44')],_0x2e352a[_0x2242('0x43')]));_0x382b9d[_0x2242('0x4b')][_0x2242('0xd9')]=_0x265458['id'];if(_0x7bba9f['query'][_0x2242('0x6d')]){_0x382b9d['where']=_[_0x2242('0xd4')](_0x382b9d[_0x2242('0x4b')],{'$or':_[_0x2242('0x6b')](_0x382b9d['attributes'],function(_0x374c38){var _0x4c5537={};_0x4c5537[_0x374c38]={'$like':'%'+_0x7bba9f[_0x2242('0x44')][_0x2242('0x6d')]+'%'};return _0x4c5537;})});}_0x382b9d=_[_0x2242('0xd4')]({},_0x382b9d,_0x7bba9f['options']);return db[_0x2242('0xb9')][_0x2242('0x27')]({'where':_0x382b9d[_0x2242('0x4b')]})['then'](function(_0x4c4ce9){_0x5a47e9['count']=_0x4c4ce9;if(_0x7bba9f['query'][_0x2242('0xda')]){_0x382b9d[_0x2242('0xdb')]=[{'all':!![]}];}return db[_0x2242('0xb9')][_0x2242('0x9f')](_0x382b9d);})[_0x2242('0x36')](function(_0xe9ca90){_0x5a47e9[_0x2242('0x9b')]=_0xe9ca90;return _0x5a47e9;});}})[_0x2242('0x36')](respondWithFilteredResult(_0x9d0fd5,_0x382b9d))[_0x2242('0x9d')](handleError(_0x9d0fd5,null));};exports[_0x2242('0xdd')]=function(_0x5a408c,_0x48121d,_0x5290ca){var _0x5ca76e={'raw':!![],'where':{}};var _0x2ef7d2={};var _0x5912b9={'count':0x0,'rows':[]};return db[_0x2242('0x34')][_0x2242('0x3d')]({'where':{'id':_0x5a408c[_0x2242('0x9c')]['id']}})[_0x2242('0x36')](handleEntityNotFound(_0x48121d,null))[_0x2242('0x36')](function(_0x2d9b6c){if(_0x2d9b6c){_0x2ef7d2['model']=_['keys'](db[_0x2242('0xb8')][_0x2242('0xd8')]);_0x2ef7d2[_0x2242('0x44')]=_[_0x2242('0x37')](_0x5a408c['query']);_0x2ef7d2['filters']=_['intersection'](_0x2ef7d2[_0x2242('0x42')],_0x2ef7d2[_0x2242('0x44')]);_0x5ca76e[_0x2242('0x45')]=_['intersection'](_0x2ef7d2[_0x2242('0x42')],qs[_0x2242('0x47')](_0x5a408c[_0x2242('0x44')][_0x2242('0x47')]));_0x5ca76e[_0x2242('0x45')]=_0x5ca76e[_0x2242('0x45')][_0x2242('0x38')]?_0x5ca76e[_0x2242('0x45')]:_0x2ef7d2[_0x2242('0x42')];if(!_0x5a408c[_0x2242('0x44')][_0x2242('0x6c')](_0x2242('0x48'))){_0x5ca76e[_0x2242('0x26')]=qs[_0x2242('0x26')](_0x5a408c['query'][_0x2242('0x26')]);_0x5ca76e['offset']=qs[_0x2242('0x24')](_0x5a408c[_0x2242('0x44')]['offset']);}_0x5ca76e['order']=qs['sort'](_0x5a408c[_0x2242('0x44')][_0x2242('0x4a')]);_0x5ca76e[_0x2242('0x4b')]=qs[_0x2242('0x43')](_[_0x2242('0x4c')](_0x5a408c[_0x2242('0x44')],_0x2ef7d2[_0x2242('0x43')]));_0x5ca76e[_0x2242('0x4b')]['ContactId']=_0x2d9b6c['id'];if(_0x5a408c[_0x2242('0x44')][_0x2242('0x6d')]){_0x5ca76e[_0x2242('0x4b')]=_[_0x2242('0xd4')](_0x5ca76e[_0x2242('0x4b')],{'$or':_['map'](_0x5ca76e[_0x2242('0x45')],function(_0x22ab4a){var _0x307759={};_0x307759[_0x22ab4a]={'$like':'%'+_0x5a408c[_0x2242('0x44')][_0x2242('0x6d')]+'%'};return _0x307759;})});}_0x5ca76e=_['merge']({},_0x5ca76e,_0x5a408c[_0x2242('0xde')]);return db[_0x2242('0xb8')]['count']({'where':_0x5ca76e[_0x2242('0x4b')]})['then'](function(_0x2052fc){_0x5912b9[_0x2242('0x27')]=_0x2052fc;if(_0x5a408c[_0x2242('0x44')][_0x2242('0xda')]){_0x5ca76e[_0x2242('0xdb')]=[{'all':!![]}];}return db['CmHopperFinal']['findAll'](_0x5ca76e);})[_0x2242('0x36')](function(_0x471eb3){_0x5912b9[_0x2242('0x9b')]=_0x471eb3;return _0x5912b9;});}})['then'](respondWithFilteredResult(_0x48121d,_0x5ca76e))['catch'](handleError(_0x48121d,null));};exports[_0x2242('0xdf')]=function(_0x10e394,_0x115058,_0x5f0aa6){var _0x3eb75e={'raw':!![],'where':{}};var _0x562684={};var _0x54f4e8={'count':0x0,'rows':[]};return db[_0x2242('0x34')][_0x2242('0x3d')]({'where':{'id':_0x10e394[_0x2242('0x9c')]['id']}})[_0x2242('0x36')](handleEntityNotFound(_0x115058,null))['then'](function(_0x13ebf6){if(_0x13ebf6){_0x562684['model']=_['keys'](db['JscriptySessionReport']['rawAttributes']);_0x562684[_0x2242('0x44')]=_['keys'](_0x10e394[_0x2242('0x44')]);_0x562684[_0x2242('0x43')]=_['intersection'](_0x562684[_0x2242('0x42')],_0x562684[_0x2242('0x44')]);_0x3eb75e['attributes']=_[_0x2242('0x46')](_0x562684[_0x2242('0x42')],qs[_0x2242('0x47')](_0x10e394[_0x2242('0x44')]['fields']));_0x3eb75e['attributes']=_0x3eb75e[_0x2242('0x45')][_0x2242('0x38')]?_0x3eb75e[_0x2242('0x45')]:_0x562684[_0x2242('0x42')];if(!_0x10e394[_0x2242('0x44')][_0x2242('0x6c')](_0x2242('0x48'))){_0x3eb75e[_0x2242('0x26')]=qs[_0x2242('0x26')](_0x10e394[_0x2242('0x44')][_0x2242('0x26')]);_0x3eb75e[_0x2242('0x24')]=qs[_0x2242('0x24')](_0x10e394[_0x2242('0x44')][_0x2242('0x24')]);}_0x3eb75e[_0x2242('0x49')]=qs[_0x2242('0x4a')](_0x10e394[_0x2242('0x44')][_0x2242('0x4a')]);_0x3eb75e[_0x2242('0x4b')]=qs[_0x2242('0x43')](_[_0x2242('0x4c')](_0x10e394[_0x2242('0x44')],_0x562684[_0x2242('0x43')]));_0x3eb75e[_0x2242('0x4b')][_0x2242('0xd9')]=_0x13ebf6['id'];if(_0x10e394[_0x2242('0x44')][_0x2242('0x6d')]){_0x3eb75e[_0x2242('0x4b')]=_['merge'](_0x3eb75e[_0x2242('0x4b')],{'$or':_[_0x2242('0x6b')](_0x3eb75e['attributes'],function(_0x2950c3){var _0x47bb0c={};_0x47bb0c[_0x2950c3]={'$like':'%'+_0x10e394[_0x2242('0x44')][_0x2242('0x6d')]+'%'};return _0x47bb0c;})});}_0x3eb75e=_[_0x2242('0xd4')]({},_0x3eb75e,_0x10e394[_0x2242('0xde')]);return db['JscriptySessionReport'][_0x2242('0x27')]({'where':_0x3eb75e[_0x2242('0x4b')]})[_0x2242('0x36')](function(_0xcd2c2a){_0x54f4e8[_0x2242('0x27')]=_0xcd2c2a;if(_0x10e394[_0x2242('0x44')][_0x2242('0xda')]){_0x3eb75e[_0x2242('0xdb')]=[{'all':!![]}];}return db[_0x2242('0xc1')]['findAll'](_0x3eb75e);})[_0x2242('0x36')](function(_0x5ea0d8){_0x54f4e8['rows']=_0x5ea0d8;return _0x54f4e8;});}})[_0x2242('0x36')](respondWithFilteredResult(_0x115058,_0x3eb75e))[_0x2242('0x9d')](handleError(_0x115058,null));};exports['uploadCsv']=function(_0x857186,_0x189335,_0x53688a){try{if(!_0x857186[_0x2242('0xa4')][_0x2242('0x71')]){throw new Error(_0x2242('0xe0'));}if(!_0x857186[_0x2242('0xa4')][_0x2242('0xe1')]){throw new Error(_0x2242('0xe2'));}if(!_0x857186['body']['binding_values']){throw new Error(_0x2242('0xe3'));}if(!_0x857186[_0x2242('0xa4')][_0x2242('0xe4')]){throw new Error('Unable\x20to\x20synchronize\x20socket,\x20no\x20timestamp\x20passed');}var _0x2aa454=_0x857186[_0x2242('0xa4')][_0x2242('0xe1')][_0x2242('0x60')](',');var _0x221582=_0x857186[_0x2242('0xa4')]['binding_values'][_0x2242('0x60')](',');if(!_0x2aa454[_0x2242('0x38')]||!_0x221582[_0x2242('0x38')]||_0x2aa454[_0x2242('0x38')]!==_0x221582[_0x2242('0x38')]){throw new Error(_0x2242('0xe5'));}_0x857186['body'][_0x2242('0x47')]=_[_0x2242('0xe6')](_0x2aa454,_0x221582);if(!_0x857186[_0x2242('0xa4')][_0x2242('0x47')]['phone']){throw new Error(_0x2242('0xe7'));}if(!_0x857186[_0x2242('0xa4')]['fields'][_0x2242('0xe8')]){throw new Error(_0x2242('0xe9'));}var _0x48226b=path[_0x2242('0xa9')](config[_0x2242('0xea')],_0x2242('0xeb'),_0x857186['file'][_0x2242('0xec')]);fs[_0x2242('0xed')](_0x48226b,parseInt(_0x2242('0xee'),0x8));var _0xb62b83=require(_0x2242('0xef'))[_0x2242('0xf0')](path[_0x2242('0xa9')](__dirname,_0x2242('0xf1')),[_0x48226b,_0x857186[_0x2242('0xa4')][_0x2242('0xe1')],_0x857186['body'][_0x2242('0xf2')],_0x857186[_0x2242('0xa4')][_0x2242('0x71')],_0x857186[_0x2242('0xa4')][_0x2242('0xf3')],_0x857186[_0x2242('0xa4')][_0x2242('0xc5')],_0x857186[_0x2242('0xa4')][_0x2242('0xe4')]]);return _0x189335[_0x2242('0x23')](0xc8)['json']({'message':'File\x20uploaded\x20correctly!','pid':_0xb62b83[_0x2242('0xf4')]});}catch(_0x3085b3){return _0x189335['status'](0x1f4)['send'](_0x3085b3);}};exports['upload']=function(_0x497d90,_0x52599c,_0x4aca42){var _0x1f8f0e=fs[_0x2242('0xf5')](_0x497d90[_0x2242('0xf6')][_0x2242('0x7')]);Papa[_0x2242('0xf7')](_0x1f8f0e,{'header':!![],'skipEmptyLines':!![],'preview':0x1,'complete':function(_0x2e60b0){return _0x52599c[_0x2242('0x23')](0xc8)[_0x2242('0x2a')]({'file':_0x497d90[_0x2242('0xf6')],'fields':_0x2e60b0[_0x2242('0xf8')][_0x2242('0x47')]});}});};exports[_0x2242('0xf9')]=function(_0x3cfa86,_0x411f72,_0x2d16d8){return db[_0x2242('0x64')][_0x2242('0x9f')]({'raw':!![],'attributes':['id'],'where':{'role':'agent'}})[_0x2242('0x36')](function(_0x42db2a){var _0x2ade30=![];if(!_0x3cfa86[_0x2242('0xa4')]['ListId']){throw new Error(_0x2242('0xe0'));}if(!_0x3cfa86[_0x2242('0xa4')]['binding'][_0x2242('0xd2')]){throw new Error(_0x2242('0xe7'));}if(!_0x3cfa86[_0x2242('0xa4')][_0x2242('0xfa')]['firstName']){throw new Error('No\x20firstName\x20column\x20specified');}if(!_0x3cfa86[_0x2242('0xa4')][_0x2242('0xe4')]){throw new Error('Unable\x20to\x20synchronize\x20socket,\x20no\x20timestamp\x20passed');}var _0xc4c8a3=require(_0x2242('0xef'))[_0x2242('0xf0')](path['join'](__dirname,_0x2242('0xfb')),[_0x3cfa86['params']['id'],JSON[_0x2242('0xfc')](_0x3cfa86[_0x2242('0xa4')]),JSON['stringify'](_0x42db2a)]);_0xc4c8a3['on'](_0x2242('0xfd'),function(_0x426145){_0x2ade30=!![];return _0x411f72[_0x2242('0x23')](0xc8)['json']({'message':_0x2242('0xfe'),'pid':_0xc4c8a3[_0x2242('0xf4')]});});_0xc4c8a3['on'](_0x2242('0xff'),function(_0xb2355f){if(_0xb2355f&&!_0x2ade30){return _0x411f72[_0x2242('0x23')](0x1f4)[_0x2242('0x2a')]({'message':'error\x20child\x20process','pid':_0xc4c8a3[_0x2242('0xf4')]});}});})['catch'](handleError(_0x411f72,null));};exports[_0x2242('0x100')]=function(_0x4ee7bd,_0x485589){var _0x42b878=[_0x2242('0x101'),_0x2242('0x102'),_0x2242('0x103'),_0x2242('0x104'),'fax',_0x2242('0x105'),_0x2242('0x106')];var _0x3609b3={'offset':0x0,'order':qs[_0x2242('0x4a')](_0x2242('0x107'))},_0x1f98a7={'count':0x0,'rows':[]};Promise['resolve']()[_0x2242('0x36')](function(){if(_0x4ee7bd[_0x2242('0x44')][_0x2242('0x108')]){if(!_[_0x2242('0x109')](_0x42b878,_0x4ee7bd['query'][_0x2242('0x108')]['toLowerCase']())){throw new Error(_0x2242('0x10a'));}_0x42b878=[_0x4ee7bd['query'][_0x2242('0x108')][_0x2242('0x10b')]()];}if(_0x4ee7bd[_0x2242('0x44')][_0x2242('0x10c')]){try{var _0x5c6b74=JSON[_0x2242('0xf7')](_0x4ee7bd[_0x2242('0x44')][_0x2242('0x10c')]);if(!moment(_0x5c6b74[_0x2242('0x4f')])[_0x2242('0x10d')]()){throw new Error(_0x2242('0x10e'));}if(!moment(_0x5c6b74['to'])[_0x2242('0x10d')]()){throw new Error(_0x2242('0x10f'));}}catch(_0x459eac){throw new Error(_0x2242('0x110'));}}if(!_0x4ee7bd[_0x2242('0x44')]['hasOwnProperty']('nolimit')){_0x3609b3[_0x2242('0x26')]=qs[_0x2242('0x26')](_0x4ee7bd[_0x2242('0x44')]['limit']||0xa);_0x3609b3[_0x2242('0x24')]=qs[_0x2242('0x24')](_0x4ee7bd[_0x2242('0x44')][_0x2242('0x24')]);}var _0x2ec2ea=_0x42b878[_0x2242('0x6b')](function(_0x1286cc){if(_0x1286cc===_0x2242('0x106')){var _0xfa5e7={'attributes':['id',_0x2242('0x111'),_0x2242('0x41'),'source',_0x2242('0x112'),'callerid',_0x2242('0x113'),_0x2242('0x114'),_0x2242('0x115'),'note',_0x2242('0x116'),_0x2242('0x117'),'userSecondDisposition',_0x2242('0x118'),_0x2242('0x119')],'where':{'ContactId':_0x4ee7bd[_0x2242('0x9c')]['id']},'include':[{'model':db[_0x2242('0x64')],'as':_0x2242('0x64'),'attributes':['id',_0x2242('0x32'),_0x2242('0x11a'),'alias']}],'order':[[_0x2242('0x116'),_0x2242('0x83')]]};if(_0x4ee7bd[_0x2242('0x44')][_0x2242('0x10c')]){_0xfa5e7[_0x2242('0x4b')][_0x2242('0x116')]={'$gte':_0x5c6b74['from'],'$lte':_0x5c6b74['to']};}return db[_0x2242('0xbb')][_0x2242('0x11b')](_0xfa5e7)['then'](function(_0x4bd59d){_0x1f98a7['count']+=_0x4bd59d[_0x2242('0x27')];return _[_0x2242('0x6b')](_0x4bd59d['rows'],function(_0x163ac8){var _0x59ea4c=_0x163ac8[_0x2242('0xa5')]({'plain':!![]});_0x59ea4c[_0x2242('0x108')]=_0x1286cc;if(_0x59ea4c[_0x2242('0x64')]){_0x59ea4c['User']={'id':_0x59ea4c[_0x2242('0x64')]['id'],'name':_0x59ea4c[_0x2242('0x64')][_0x2242('0x32')],'fullname':_0x59ea4c[_0x2242('0x64')][_0x2242('0x11a')],'alias':_0x59ea4c[_0x2242('0x64')][_0x2242('0xa1')]};}return _0x59ea4c;});});}else{var _0x7df38=_[_0x2242('0x11c')](_0x1286cc)+(_0x1286cc===_0x2242('0x102')?_0x2242('0x11d'):'Account');var _0x179cb6={'attributes':['id','closed','closedAt',_0x2242('0x116'),_0x2242('0x11e'),_0x2242('0x11f'),_0x2242('0x120'),'thirdDisposition',_0x2242('0x119'),_0x7df38+'Id'],'where':{'ContactId':_0x4ee7bd[_0x2242('0x9c')]['id']},'include':[{'model':db[_0x7df38],'as':'Account','attributes':['id','name','key']},{'model':db['User'],'as':_0x2242('0x121'),'attributes':['id',_0x2242('0x32'),_0x2242('0x11a')]},{'model':db['Tag'],'as':_0x2242('0x9a'),'attributes':['id',_0x2242('0x32'),'color'],'through':{'attributes':[]}}],'order':[[_0x2242('0x116'),'DESC']]};if(_0x4ee7bd[_0x2242('0x44')][_0x2242('0x10c')]){_0x179cb6[_0x2242('0x4b')]['createdAt']={'$gte':_0x5c6b74[_0x2242('0x4f')],'$lte':_0x5c6b74['to']};}switch(_0x1286cc){case _0x2242('0x102'):_0x179cb6[_0x2242('0x45')]['push'](_0x2242('0x122'),_0x2242('0x123'),_0x2242('0x124'),_0x2242('0x125'),_0x2242('0x126'),_0x2242('0x127'),_0x2242('0x128'),_0x2242('0x129'),_0x2242('0x12a'));break;case _0x2242('0x101'):_0x179cb6[_0x2242('0x45')]['push'](_0x2242('0x12b'),_0x2242('0x12c'));break;case'openchannel':_0x179cb6[_0x2242('0x45')][_0x2242('0x3b')](_0x2242('0x12d'),_0x2242('0x12e'));break;}return db[_[_0x2242('0x11c')](_0x1286cc)+'Interaction'][_0x2242('0x11b')](_0x179cb6)[_0x2242('0x36')](function(_0x11c56c){_0x1f98a7[_0x2242('0x27')]+=_0x11c56c[_0x2242('0x27')];return _[_0x2242('0x6b')](_0x11c56c[_0x2242('0x9b')],function(_0x2095c8){var _0x3e3635=_0x2095c8['get']({'plain':!![]});_0x3e3635[_0x2242('0x108')]=_0x1286cc;if(_0x3e3635[_0x2242('0x121')]){_0x3e3635[_0x2242('0x121')]={'id':_0x3e3635[_0x2242('0x121')]['id'],'name':_0x3e3635[_0x2242('0x121')]['name'],'fullname':_0x3e3635['Owner']['fullname']};}return _0x3e3635;});});}});return Promise['all'](_0x2ec2ea);})['then'](function(_0x55ce18){return _(_0x55ce18)[_0x2242('0x12f')]()[_0x2242('0x130')](_0x2242('0x116'))[_0x2242('0x131')]()[_0x2242('0x5f')]();})[_0x2242('0x36')](function(_0x3be42d){_0x1f98a7[_0x2242('0x9b')]=_0x3609b3[_0x2242('0x26')]?_0x3be42d[_0x2242('0x132')](_0x3609b3[_0x2242('0x24')],_0x3609b3[_0x2242('0x24')]+_0x3609b3[_0x2242('0x26')]):_0x3be42d;return _0x1f98a7;})[_0x2242('0x36')](respondWithFilteredResult(_0x485589,_0x3609b3))[_0x2242('0x9d')](handleError(_0x485589,null));};
\ No newline at end of file
index 6d10165..4f46c9b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xdd20=['events','../../mysqldb','CmContact','save','update','remove','emit','hasOwnProperty','exports'];(function(_0x321bb2,_0x202794){var _0x9c12ed=function(_0x263dd3){while(--_0x263dd3){_0x321bb2['push'](_0x321bb2['shift']());}};_0x9c12ed(++_0x202794);}(_0xdd20,0xbd));var _0x0dd2=function(_0x178f27,_0x116d1e){_0x178f27=_0x178f27-0x0;var _0x1e19d5=_0xdd20[_0x178f27];return _0x1e19d5;};'use strict';var EventEmitter=require(_0x0dd2('0x0'));var CmContact=require(_0x0dd2('0x1'))['db'][_0x0dd2('0x2')];var CmContactEvents=new EventEmitter();CmContactEvents['setMaxListeners'](0x0);var events={'afterCreate':_0x0dd2('0x3'),'afterUpdate':_0x0dd2('0x4'),'afterDestroy':_0x0dd2('0x5')};function emitEvent(_0x4f6aac){return function(_0x3ae006,_0x1e8cea,_0x33061b){CmContactEvents[_0x0dd2('0x6')](_0x4f6aac+':'+_0x3ae006['id'],_0x3ae006);CmContactEvents[_0x0dd2('0x6')](_0x4f6aac,_0x3ae006);_0x33061b(null);};}for(var e in events){if(events[_0x0dd2('0x7')](e)){var event=events[e];CmContact['hook'](e,emitEvent(event));}}module[_0x0dd2('0x8')]=CmContactEvents;
\ No newline at end of file
+var _0x906b=['hook','exports','events','../../mysqldb','setMaxListeners','save','update','remove','emit','hasOwnProperty'];(function(_0x4cfdc2,_0x259c79){var _0x4fabad=function(_0x13a373){while(--_0x13a373){_0x4cfdc2['push'](_0x4cfdc2['shift']());}};_0x4fabad(++_0x259c79);}(_0x906b,0x142));var _0xb906=function(_0x34ad72,_0x1e43f6){_0x34ad72=_0x34ad72-0x0;var _0x5c9aa8=_0x906b[_0x34ad72];return _0x5c9aa8;};'use strict';var EventEmitter=require(_0xb906('0x0'));var CmContact=require(_0xb906('0x1'))['db']['CmContact'];var CmContactEvents=new EventEmitter();CmContactEvents[_0xb906('0x2')](0x0);var events={'afterCreate':_0xb906('0x3'),'afterUpdate':_0xb906('0x4'),'afterDestroy':_0xb906('0x5')};function emitEvent(_0x43298e){return function(_0x193947,_0x45a833,_0x405890){CmContactEvents[_0xb906('0x6')](_0x43298e+':'+_0x193947['id'],_0x193947);CmContactEvents[_0xb906('0x6')](_0x43298e,_0x193947);_0x405890(null);};}for(var e in events){if(events[_0xb906('0x7')](e)){var event=events[e];CmContact[_0xb906('0x8')](e,emitEvent(event));}}module[_0xb906('0x9')]=CmContactEvents;
\ No newline at end of file
index 92e8cc5..ef06636 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf349=['CmHopper','findOne','then','isNil','cmContact,\x20afterCreate\x20','ListId','priority','scheduledat','format','callbackUniqueid','catch','\x20contact\x20not\x20insert\x20in\x20hopper,\x20check\x20duplicate\x20always,\x20exist\x20in\x20hopper\x20VoiceQueue\x20','CmHopperFinal','cmContact,\x20afterCreate,\x20','create','YYYY-MM-DD\x20HH:mm:ss','\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','VoiceQueue','findAll','outbound','CmList','length','dialCheckDuplicateType','always','BlackLists','CmHopperBlack','cmContact,\x20%s,\x20%s','afterCreate','message','Campaign','onlyIfOpen','List\x20not\x20found','destroy','ContactId','VoiceQueueId','CampaignId','push','all','[CmContact][afterDestroy][Succesfull]','[CmContact][afterDestroy][Error]','lodash','util','../../config/logger','api','moment','bluebird','request-promise','path','rimraf','../../config/environment','./cmContact.attributes','exports','define','phone','firstName','fax','FULLTEXT','utf8mb4','utf8mb4_unicode_ci','models','get','error','cmContact','inspect'];(function(_0x50c149,_0xcdbd0b){var _0x1f7ed4=function(_0x24010c){while(--_0x24010c){_0x50c149['push'](_0x50c149['shift']());}};_0x1f7ed4(++_0xcdbd0b);}(_0xf349,0xab));var _0x9f34=function(_0xc0be57,_0x2d1e96){_0xc0be57=_0xc0be57-0x0;var _0x2d786d=_0xf349[_0xc0be57];return _0x2d786d;};'use strict';var _=require(_0x9f34('0x0'));var util=require(_0x9f34('0x1'));var logger=require(_0x9f34('0x2'))(_0x9f34('0x3'));var moment=require(_0x9f34('0x4'));var BPromise=require(_0x9f34('0x5'));var rp=require(_0x9f34('0x6'));var fs=require('fs');var path=require(_0x9f34('0x7'));var rimraf=require(_0x9f34('0x8'));var config=require(_0x9f34('0x9'));var attributes=require(_0x9f34('0xa'));module[_0x9f34('0xb')]=function(_0x274157,_0x5a11ed){return _0x274157[_0x9f34('0xc')]('CmContact',attributes,{'tableName':'cm_contacts','paranoid':!![],'indexes':[{'name':'phone','fields':[_0x9f34('0xd')]},{'name':'fti_cm_contacts','fields':[_0x9f34('0xe'),'lastName',_0x9f34('0xd'),'mobile',_0x9f34('0xf'),'email'],'type':_0x9f34('0x10')}],'timestamps':!![],'charset':_0x9f34('0x11'),'collate':_0x9f34('0x12'),'hooks':{'afterCreate':function(_0x56585d,_0x16901e,_0x2105a3){var _0x48534c=_0x274157[_0x9f34('0x13')];var _0xd7aef2=_0x56585d[_0x9f34('0x14')]({'plain':!![]});function _0x5d327d(){return function(_0x1c2231){logger[_0x9f34('0x15')](_0x9f34('0x16'),'afterCreate',util[_0x9f34('0x17')](_0x1c2231,{'showHidden':![],'depth':null}));};}var _0x3123be=function(_0x229b9f){return new BPromise(function(_0x3be4cd,_0x29a0d6){_0x48534c[_0x9f34('0x18')][_0x9f34('0x19')]({'where':{'phone':_0xd7aef2['phone'],'VoiceQueueId':_0x229b9f['id']}})[_0x9f34('0x1a')](function(_0x30423a){if(!_[_0x9f34('0x1b')](_0x30423a)){throw new Error(_0x9f34('0x1c')+_0xd7aef2[_0x9f34('0xd')]+'\x20contact\x20not\x20insert\x20in\x20hopper,\x20check\x20duplicate\x20onlyIfOpen,\x20exist\x20in\x20hopper\x20VoiceQueue\x20'+_0x229b9f['id']);}return _0x48534c[_0x9f34('0x18')]['create']({'phone':_0xd7aef2[_0x9f34('0xd')],'ContactId':_0xd7aef2['id'],'ListId':_0xd7aef2[_0x9f34('0x1d')],'priority':_0xd7aef2[_0x9f34('0x1e')]?_0xd7aef2['priority']:0x2,'scheduledat':_0xd7aef2['scheduledat']?_0xd7aef2[_0x9f34('0x1f')]:moment()[_0x9f34('0x20')]('YYYY-MM-DD\x20HH:mm:ss'),'callback':_0xd7aef2[_0x9f34('0x21')]?!![]:![],'callbackuniqueid':_0xd7aef2[_0x9f34('0x21')]?_0xd7aef2[_0x9f34('0x21')]:undefined,'callbackat':_0xd7aef2['callbackUniqueid']?moment()[_0x9f34('0x20')]('YYYY-MM-DD\x20HH:mm:ss'):undefined,'VoiceQueueId':_0x229b9f['id']});})[_0x9f34('0x22')](function(_0x492b9){_0x29a0d6(_0x492b9);});});};var _0x28dc80=function(_0x3c8e63){return new BPromise(function(_0x196909,_0x205539){_0x48534c[_0x9f34('0x18')][_0x9f34('0x19')]({'where':{'phone':_0xd7aef2[_0x9f34('0xd')],'VoiceQueueId':_0x3c8e63['id']}})[_0x9f34('0x1a')](function(_0x5865d5){if(!_['isNil'](_0x5865d5)){throw new Error('cmContact,\x20afterCreate\x20'+_0xd7aef2[_0x9f34('0xd')]+_0x9f34('0x23')+_0x3c8e63['id']);}return _0x48534c[_0x9f34('0x24')]['findOne']({'where':{'calleridnum':_0xd7aef2[_0x9f34('0xd')],'VoiceQueueId':_0x3c8e63['id']}});})[_0x9f34('0x1a')](function(_0x48e82d){if(!_[_0x9f34('0x1b')](_0x48e82d)){throw new Error(_0x9f34('0x25')+_0xd7aef2[_0x9f34('0xd')]+'\x20contact\x20not\x20insert\x20in\x20hopper,\x20check\x20duplicate\x20always,\x20exist\x20in\x20hopperFinal\x20VoiceQueue\x20'+_0x3c8e63['id']);}return _0x48534c['CmHopper'][_0x9f34('0x26')]({'phone':_0xd7aef2['phone'],'ContactId':_0xd7aef2['id'],'ListId':_0xd7aef2[_0x9f34('0x1d')],'priority':_0xd7aef2[_0x9f34('0x1e')]?_0xd7aef2[_0x9f34('0x1e')]:0x2,'scheduledat':_0xd7aef2[_0x9f34('0x1f')]?_0xd7aef2[_0x9f34('0x1f')]:moment()[_0x9f34('0x20')](_0x9f34('0x27')),'callback':_0xd7aef2[_0x9f34('0x21')]?!![]:![],'callbackuniqueid':_0xd7aef2[_0x9f34('0x21')]?_0xd7aef2[_0x9f34('0x21')]:undefined,'callbackat':_0xd7aef2[_0x9f34('0x21')]?moment()[_0x9f34('0x20')](_0x9f34('0x27')):undefined,'VoiceQueueId':_0x3c8e63['id']});})['catch'](function(_0x5ae653){_0x205539(_0x5ae653);});});};function _0x392fa5(){return function(_0x15d355){logger[_0x9f34('0x15')](_0x9f34('0x16'),'afterCreate',util[_0x9f34('0x17')](_0x15d355,{'showHidden':![],'depth':null}));};}var _0x2d9b76=function(_0x196ba2){return new BPromise(function(_0xa05b9e,_0x11b24f){_0x48534c['CmHopper'][_0x9f34('0x19')]({'where':{'phone':_0xd7aef2[_0x9f34('0xd')],'CampaignId':_0x196ba2['id']}})[_0x9f34('0x1a')](function(_0x407004){if(!_[_0x9f34('0x1b')](_0x407004)){throw new Error('cmContact,\x20afterCreate\x20'+_0xd7aef2[_0x9f34('0xd')]+_0x9f34('0x28')+_0x196ba2['id']);}return _0x48534c[_0x9f34('0x18')][_0x9f34('0x26')]({'phone':_0xd7aef2[_0x9f34('0xd')],'ContactId':_0xd7aef2['id'],'ListId':_0xd7aef2['ListId'],'priority':_0xd7aef2['priority']?_0xd7aef2[_0x9f34('0x1e')]:0x2,'scheduledat':_0xd7aef2[_0x9f34('0x1f')]?_0xd7aef2[_0x9f34('0x1f')]:moment()[_0x9f34('0x20')](_0x9f34('0x27')),'callback':_0xd7aef2[_0x9f34('0x21')]?!![]:![],'callbackuniqueid':_0xd7aef2[_0x9f34('0x21')]?_0xd7aef2['callbackUniqueid']:undefined,'callbackat':_0xd7aef2[_0x9f34('0x21')]?moment()['format'](_0x9f34('0x27')):undefined,'CampaignId':_0x196ba2['id']});})[_0x9f34('0x22')](function(_0x54fcbf){_0x11b24f(_0x54fcbf);});});};var _0xcc4383=function(_0x2a3316){return new BPromise(function(_0x127b0d,_0x3944b3){_0x48534c['CmHopper'][_0x9f34('0x19')]({'where':{'phone':_0xd7aef2[_0x9f34('0xd')],'CampaignId':_0x2a3316['id']}})[_0x9f34('0x1a')](function(_0x597f90){if(!_['isNil'](_0x597f90)){throw new Error(_0x9f34('0x1c')+_0xd7aef2[_0x9f34('0xd')]+_0x9f34('0x29')+_0x2a3316['id']);}return _0x48534c[_0x9f34('0x24')][_0x9f34('0x19')]({'where':{'calleridnum':_0xd7aef2[_0x9f34('0xd')],'CampaignId':_0x2a3316['id']}});})[_0x9f34('0x1a')](function(_0x548ae3){if(!_[_0x9f34('0x1b')](_0x548ae3)){throw new Error(_0x9f34('0x25')+_0xd7aef2[_0x9f34('0xd')]+'\x20contact\x20not\x20insert\x20in\x20hopper,\x20check\x20duplicate\x20always,\x20exist\x20in\x20hopperFinal\x20Campaign\x20'+_0x2a3316['id']);}return _0x48534c['CmHopper'][_0x9f34('0x26')]({'phone':_0xd7aef2[_0x9f34('0xd')],'ContactId':_0xd7aef2['id'],'ListId':_0xd7aef2['ListId'],'priority':_0xd7aef2['priority']?_0xd7aef2[_0x9f34('0x1e')]:0x2,'scheduledat':_0xd7aef2[_0x9f34('0x1f')]?_0xd7aef2['scheduledat']:moment()[_0x9f34('0x20')](_0x9f34('0x27')),'callback':_0xd7aef2[_0x9f34('0x21')]?!![]:![],'callbackuniqueid':_0xd7aef2[_0x9f34('0x21')]?_0xd7aef2['callbackUniqueid']:undefined,'callbackat':_0xd7aef2[_0x9f34('0x21')]?moment()[_0x9f34('0x20')](_0x9f34('0x27')):undefined,'CampaignId':_0x2a3316['id']});})['catch'](function(_0x2a1ebc){_0x3944b3(_0x2a1ebc);});});};if(_0xd7aef2[_0x9f34('0x1d')]){_0x48534c[_0x9f34('0x2a')][_0x9f34('0x2b')]({'where':{'type':_0x9f34('0x2c')},'attributes':['id','dialCheckDuplicateType'],'include':[{'model':_0x48534c[_0x9f34('0x2d')],'as':'Lists','where':{'id':_0xd7aef2[_0x9f34('0x1d')]}}]})['then'](function(_0x52c573){if(_0x52c573){var _0x21ec1a=[];for(var _0x29bd84=0x0,_0x1c61ee;_0x29bd84<_0x52c573[_0x9f34('0x2e')];_0x29bd84+=0x1){_0x1c61ee=_0x52c573[_0x29bd84][_0x9f34('0x14')]({'plain':!![]});switch(_0x1c61ee[_0x9f34('0x2f')]){case _0x9f34('0x30'):_0x28dc80(_0x1c61ee)[_0x9f34('0x22')](_0x5d327d());break;case'onlyIfOpen':_0x3123be(_0x1c61ee)[_0x9f34('0x22')](_0x5d327d());break;default:_0x48534c[_0x9f34('0x18')][_0x9f34('0x26')]({'phone':_0xd7aef2[_0x9f34('0xd')],'ContactId':_0xd7aef2['id'],'ListId':_0xd7aef2[_0x9f34('0x1d')],'scheduledat':_0xd7aef2[_0x9f34('0x1f')]?_0xd7aef2[_0x9f34('0x1f')]:moment()[_0x9f34('0x20')](_0x9f34('0x27')),'priority':_0xd7aef2['priority']?_0xd7aef2[_0x9f34('0x1e')]:0x2,'callback':_0xd7aef2[_0x9f34('0x21')]?!![]:![],'callbackuniqueid':_0xd7aef2[_0x9f34('0x21')]?_0xd7aef2['callbackUniqueid']:undefined,'callbackat':_0xd7aef2[_0x9f34('0x21')]?moment()[_0x9f34('0x20')]('YYYY-MM-DD\x20HH:mm:ss'):undefined,'VoiceQueueId':_0x1c61ee['id']})['catch'](_0x5d327d());}}}})['then'](function(){return _0x48534c['VoiceQueue']['findAll']({'where':{'type':_0x9f34('0x2c')},'attributes':['id'],'include':[{'model':_0x48534c[_0x9f34('0x2d')],'as':_0x9f34('0x31'),'where':{'id':_0xd7aef2[_0x9f34('0x1d')]}}]})['then'](function(_0xcd25f2){if(_0xcd25f2){var _0x6cc8a6=[];for(var _0x3722c0=0x0,_0x3bc639;_0x3722c0<_0xcd25f2[_0x9f34('0x2e')];_0x3722c0+=0x1){_0x3bc639=_0xcd25f2[_0x3722c0][_0x9f34('0x14')]({'plain':!![]});_0x48534c[_0x9f34('0x32')][_0x9f34('0x26')]({'phone':_0xd7aef2[_0x9f34('0xd')],'ContactId':_0xd7aef2['id'],'ListId':_0xd7aef2[_0x9f34('0x1d')],'VoiceQueueId':_0x3bc639['id']})[_0x9f34('0x22')](function(_0x204dbe){logger[_0x9f34('0x15')](_0x9f34('0x33'),_0x9f34('0x34'),_0x204dbe[_0x9f34('0x35')]);});}}});})[_0x9f34('0x1a')](function(){return _0x48534c[_0x9f34('0x36')]['findAll']({'attributes':['id',_0x9f34('0x2f')],'include':[{'model':_0x48534c['CmList'],'as':'Lists','where':{'id':_0xd7aef2[_0x9f34('0x1d')]}}]})[_0x9f34('0x1a')](function(_0x19dccc){if(_0x19dccc){var _0x128078=[];for(var _0x3f44c4=0x0,_0x45e3b1;_0x3f44c4<_0x19dccc[_0x9f34('0x2e')];_0x3f44c4+=0x1){_0x45e3b1=_0x19dccc[_0x3f44c4][_0x9f34('0x14')]({'plain':!![]});switch(_0x45e3b1['dialCheckDuplicateType']){case _0x9f34('0x30'):_0xcc4383(_0x45e3b1)['catch'](_0x392fa5());break;case _0x9f34('0x37'):_0x2d9b76(_0x45e3b1)['catch'](_0x392fa5());break;default:_0x48534c[_0x9f34('0x18')][_0x9f34('0x26')]({'phone':_0xd7aef2[_0x9f34('0xd')],'ContactId':_0xd7aef2['id'],'ListId':_0xd7aef2['ListId'],'scheduledat':_0xd7aef2[_0x9f34('0x1f')]?_0xd7aef2[_0x9f34('0x1f')]:moment()['format'](_0x9f34('0x27')),'priority':_0xd7aef2[_0x9f34('0x1e')]?_0xd7aef2[_0x9f34('0x1e')]:0x2,'callback':_0xd7aef2['callbackUniqueid']?!![]:![],'callbackuniqueid':_0xd7aef2[_0x9f34('0x21')]?_0xd7aef2['callbackUniqueid']:undefined,'callbackat':_0xd7aef2['callbackUniqueid']?moment()[_0x9f34('0x20')]('YYYY-MM-DD\x20HH:mm:ss'):undefined,'CampaignId':_0x45e3b1['id']})[_0x9f34('0x22')](_0x392fa5());}}}});})[_0x9f34('0x1a')](function(){return _0x48534c[_0x9f34('0x36')][_0x9f34('0x2b')]({'attributes':['id'],'include':[{'model':_0x48534c['CmList'],'as':_0x9f34('0x31'),'where':{'id':_0xd7aef2[_0x9f34('0x1d')]}}]})[_0x9f34('0x1a')](function(_0x342dcd){if(_0x342dcd){var _0x7d787b=[];for(var _0x20722f=0x0,_0x27e44e;_0x20722f<_0x342dcd[_0x9f34('0x2e')];_0x20722f+=0x1){_0x27e44e=_0x342dcd[_0x20722f][_0x9f34('0x14')]({'plain':!![]});_0x48534c['CmHopperBlack'][_0x9f34('0x26')]({'phone':_0xd7aef2['phone'],'ContactId':_0xd7aef2['id'],'ListId':_0xd7aef2[_0x9f34('0x1d')],'CampaignId':_0x27e44e['id']})[_0x9f34('0x22')](function(_0x2c8683){logger[_0x9f34('0x15')](_0x9f34('0x33'),_0x9f34('0x34'),_0x2c8683['message']);});}}});})[_0x9f34('0x1a')](function(){_0x2105a3();})[_0x9f34('0x22')](function(_0xd2ae5c){logger['error'](_0x9f34('0x33'),_0x9f34('0x34'),_0xd2ae5c[_0x9f34('0x35')]);_0x2105a3(_0xd2ae5c);});}else{_0x2105a3(new Error(_0x9f34('0x38')));}},'afterDestroy':function(_0x3118c9,_0x41c79f,_0x17fd60){var _0x4eb0c5=_0x274157[_0x9f34('0x13')];var _0x5dd6f8=_0x3118c9[_0x9f34('0x14')]({'plain':!![]});return _0x4eb0c5[_0x9f34('0x18')][_0x9f34('0x2b')]({'raw':!![],'where':{'ListId':_0x5dd6f8[_0x9f34('0x1d')],'ContactId':_0x5dd6f8['id']}})[_0x9f34('0x1a')](function(_0x5a183e){if(!_['isEmpty'](_0x5a183e)){var _0x17d9b8=[];for(var _0x128e47=0x0;_0x128e47<_0x5a183e['length'];_0x128e47+=0x1){var _0x307465=_0x4eb0c5[_0x9f34('0x18')][_0x9f34('0x39')]({'where':{'ListId':_0x5a183e[_0x128e47][_0x9f34('0x1d')],'ContactId':_0x5a183e[_0x128e47][_0x9f34('0x3a')],'VoiceQueueId':_0x5a183e[_0x128e47][_0x9f34('0x3b')],'CampaignId':_0x5a183e[_0x128e47][_0x9f34('0x3c')]}});_0x17d9b8[_0x9f34('0x3d')](_0x307465);}return BPromise[_0x9f34('0x3e')](_0x17d9b8);}})[_0x9f34('0x1a')](function(_0x2ff650){logger['info'](_0x9f34('0x3f'),util[_0x9f34('0x17')](_0x2ff650,{'showHidden':![],'depth':null}));_0x17fd60();})[_0x9f34('0x22')](function(_0x260978){logger[_0x9f34('0x15')](_0x9f34('0x40'),util['inspect'](_0x260978,{'showHidden':![],'depth':null}));_0x17fd60(_0x260978);});}}});};
\ No newline at end of file
+var _0xea12=['CmList','BlackLists','get','CmHopperBlack','cmContact,\x20%s,\x20%s','Campaign','findAll','Lists','dialCheckDuplicateType','always','message','destroy','ContactId','VoiceQueueId','CampaignId','push','info','[CmContact][afterDestroy][Succesfull]','[CmContact][afterDestroy][Error]','lodash','util','../../config/logger','api','bluebird','request-promise','rimraf','../../config/environment','./cmContact.attributes','exports','define','cm_contacts','fti_cm_contacts','firstName','phone','mobile','utf8mb4','models','error','cmContact','afterCreate','CmHopper','findOne','then','isNil','create','ListId','priority','scheduledat','format','YYYY-MM-DD\x20HH:mm:ss','callbackUniqueid','catch','cmContact,\x20afterCreate\x20','\x20contact\x20not\x20insert\x20in\x20hopper,\x20check\x20duplicate\x20always,\x20exist\x20in\x20hopper\x20VoiceQueue\x20','cmContact,\x20afterCreate,\x20','inspect','\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','outbound','length','onlyIfOpen'];(function(_0x2bc98e,_0x49ed1c){var _0x24b895=function(_0x58f303){while(--_0x58f303){_0x2bc98e['push'](_0x2bc98e['shift']());}};_0x24b895(++_0x49ed1c);}(_0xea12,0x1c5));var _0x2ea1=function(_0x19f048,_0x647a39){_0x19f048=_0x19f048-0x0;var _0x7c8799=_0xea12[_0x19f048];return _0x7c8799;};'use strict';var _=require(_0x2ea1('0x0'));var util=require(_0x2ea1('0x1'));var logger=require(_0x2ea1('0x2'))(_0x2ea1('0x3'));var moment=require('moment');var BPromise=require(_0x2ea1('0x4'));var rp=require(_0x2ea1('0x5'));var fs=require('fs');var path=require('path');var rimraf=require(_0x2ea1('0x6'));var config=require(_0x2ea1('0x7'));var attributes=require(_0x2ea1('0x8'));module[_0x2ea1('0x9')]=function(_0x5ddb58,_0x32e4f4){return _0x5ddb58[_0x2ea1('0xa')]('CmContact',attributes,{'tableName':_0x2ea1('0xb'),'paranoid':!![],'indexes':[{'name':'phone','fields':['phone']},{'name':_0x2ea1('0xc'),'fields':[_0x2ea1('0xd'),'lastName',_0x2ea1('0xe'),_0x2ea1('0xf'),'fax','email'],'type':'FULLTEXT'}],'timestamps':!![],'charset':_0x2ea1('0x10'),'collate':'utf8mb4_unicode_ci','hooks':{'afterCreate':function(_0x4fdb2d,_0x4bd4b9,_0x160238){var _0x3d8148=_0x5ddb58[_0x2ea1('0x11')];var _0x13908b=_0x4fdb2d['get']({'plain':!![]});function _0x587d01(){return function(_0x35e04a){logger[_0x2ea1('0x12')](_0x2ea1('0x13'),_0x2ea1('0x14'),util['inspect'](_0x35e04a,{'showHidden':![],'depth':null}));};}var _0x4dfcbb=function(_0x23344d){return new BPromise(function(_0x16ee6d,_0x14bfe7){_0x3d8148[_0x2ea1('0x15')][_0x2ea1('0x16')]({'where':{'phone':_0x13908b[_0x2ea1('0xe')],'VoiceQueueId':_0x23344d['id']}})[_0x2ea1('0x17')](function(_0x1c1f03){if(!_[_0x2ea1('0x18')](_0x1c1f03)){throw new Error('cmContact,\x20afterCreate\x20'+_0x13908b[_0x2ea1('0xe')]+'\x20contact\x20not\x20insert\x20in\x20hopper,\x20check\x20duplicate\x20onlyIfOpen,\x20exist\x20in\x20hopper\x20VoiceQueue\x20'+_0x23344d['id']);}return _0x3d8148[_0x2ea1('0x15')][_0x2ea1('0x19')]({'phone':_0x13908b[_0x2ea1('0xe')],'ContactId':_0x13908b['id'],'ListId':_0x13908b[_0x2ea1('0x1a')],'priority':_0x13908b[_0x2ea1('0x1b')]?_0x13908b[_0x2ea1('0x1b')]:0x2,'scheduledat':_0x13908b[_0x2ea1('0x1c')]?_0x13908b[_0x2ea1('0x1c')]:moment()[_0x2ea1('0x1d')](_0x2ea1('0x1e')),'callback':_0x13908b['callbackUniqueid']?!![]:![],'callbackuniqueid':_0x13908b[_0x2ea1('0x1f')]?_0x13908b[_0x2ea1('0x1f')]:undefined,'callbackat':_0x13908b[_0x2ea1('0x1f')]?moment()['format'](_0x2ea1('0x1e')):undefined,'VoiceQueueId':_0x23344d['id']});})[_0x2ea1('0x20')](function(_0x1e55ec){_0x14bfe7(_0x1e55ec);});});};var _0x1ac7ab=function(_0x2e5975){return new BPromise(function(_0x1b2a50,_0x1a2c99){_0x3d8148[_0x2ea1('0x15')]['findOne']({'where':{'phone':_0x13908b[_0x2ea1('0xe')],'VoiceQueueId':_0x2e5975['id']}})[_0x2ea1('0x17')](function(_0x140a37){if(!_[_0x2ea1('0x18')](_0x140a37)){throw new Error(_0x2ea1('0x21')+_0x13908b[_0x2ea1('0xe')]+_0x2ea1('0x22')+_0x2e5975['id']);}return _0x3d8148['CmHopperFinal'][_0x2ea1('0x16')]({'where':{'calleridnum':_0x13908b[_0x2ea1('0xe')],'VoiceQueueId':_0x2e5975['id']}});})[_0x2ea1('0x17')](function(_0x219b28){if(!_['isNil'](_0x219b28)){throw new Error(_0x2ea1('0x23')+_0x13908b[_0x2ea1('0xe')]+'\x20contact\x20not\x20insert\x20in\x20hopper,\x20check\x20duplicate\x20always,\x20exist\x20in\x20hopperFinal\x20VoiceQueue\x20'+_0x2e5975['id']);}return _0x3d8148[_0x2ea1('0x15')][_0x2ea1('0x19')]({'phone':_0x13908b[_0x2ea1('0xe')],'ContactId':_0x13908b['id'],'ListId':_0x13908b['ListId'],'priority':_0x13908b[_0x2ea1('0x1b')]?_0x13908b[_0x2ea1('0x1b')]:0x2,'scheduledat':_0x13908b['scheduledat']?_0x13908b[_0x2ea1('0x1c')]:moment()['format'](_0x2ea1('0x1e')),'callback':_0x13908b[_0x2ea1('0x1f')]?!![]:![],'callbackuniqueid':_0x13908b[_0x2ea1('0x1f')]?_0x13908b['callbackUniqueid']:undefined,'callbackat':_0x13908b[_0x2ea1('0x1f')]?moment()['format'](_0x2ea1('0x1e')):undefined,'VoiceQueueId':_0x2e5975['id']});})[_0x2ea1('0x20')](function(_0x2172fd){_0x1a2c99(_0x2172fd);});});};function _0x34ba5b(){return function(_0x37f8a0){logger[_0x2ea1('0x12')](_0x2ea1('0x13'),'afterCreate',util[_0x2ea1('0x24')](_0x37f8a0,{'showHidden':![],'depth':null}));};}var _0x7c725d=function(_0x2e10d9){return new BPromise(function(_0x280e5f,_0x1cb0d7){_0x3d8148[_0x2ea1('0x15')]['findOne']({'where':{'phone':_0x13908b['phone'],'CampaignId':_0x2e10d9['id']}})[_0x2ea1('0x17')](function(_0x51c0c8){if(!_[_0x2ea1('0x18')](_0x51c0c8)){throw new Error(_0x2ea1('0x21')+_0x13908b[_0x2ea1('0xe')]+'\x20contact\x20not\x20insert\x20in\x20hopper,\x20check\x20duplicate\x20onlyIfOpen,\x20exist\x20in\x20hopper\x20Campaign\x20'+_0x2e10d9['id']);}return _0x3d8148[_0x2ea1('0x15')]['create']({'phone':_0x13908b[_0x2ea1('0xe')],'ContactId':_0x13908b['id'],'ListId':_0x13908b['ListId'],'priority':_0x13908b['priority']?_0x13908b['priority']:0x2,'scheduledat':_0x13908b['scheduledat']?_0x13908b[_0x2ea1('0x1c')]:moment()['format'](_0x2ea1('0x1e')),'callback':_0x13908b[_0x2ea1('0x1f')]?!![]:![],'callbackuniqueid':_0x13908b['callbackUniqueid']?_0x13908b[_0x2ea1('0x1f')]:undefined,'callbackat':_0x13908b[_0x2ea1('0x1f')]?moment()[_0x2ea1('0x1d')]('YYYY-MM-DD\x20HH:mm:ss'):undefined,'CampaignId':_0x2e10d9['id']});})[_0x2ea1('0x20')](function(_0x5ce2d1){_0x1cb0d7(_0x5ce2d1);});});};var _0x4167de=function(_0x5e88b5){return new BPromise(function(_0x3f1597,_0x149115){_0x3d8148['CmHopper'][_0x2ea1('0x16')]({'where':{'phone':_0x13908b['phone'],'CampaignId':_0x5e88b5['id']}})['then'](function(_0x52b80d){if(!_[_0x2ea1('0x18')](_0x52b80d)){throw new Error(_0x2ea1('0x21')+_0x13908b[_0x2ea1('0xe')]+_0x2ea1('0x25')+_0x5e88b5['id']);}return _0x3d8148['CmHopperFinal'][_0x2ea1('0x16')]({'where':{'calleridnum':_0x13908b[_0x2ea1('0xe')],'CampaignId':_0x5e88b5['id']}});})['then'](function(_0x481ea9){if(!_[_0x2ea1('0x18')](_0x481ea9)){throw new Error(_0x2ea1('0x23')+_0x13908b[_0x2ea1('0xe')]+_0x2ea1('0x26')+_0x5e88b5['id']);}return _0x3d8148[_0x2ea1('0x15')][_0x2ea1('0x19')]({'phone':_0x13908b['phone'],'ContactId':_0x13908b['id'],'ListId':_0x13908b[_0x2ea1('0x1a')],'priority':_0x13908b[_0x2ea1('0x1b')]?_0x13908b[_0x2ea1('0x1b')]:0x2,'scheduledat':_0x13908b[_0x2ea1('0x1c')]?_0x13908b[_0x2ea1('0x1c')]:moment()[_0x2ea1('0x1d')](_0x2ea1('0x1e')),'callback':_0x13908b['callbackUniqueid']?!![]:![],'callbackuniqueid':_0x13908b[_0x2ea1('0x1f')]?_0x13908b['callbackUniqueid']:undefined,'callbackat':_0x13908b[_0x2ea1('0x1f')]?moment()[_0x2ea1('0x1d')](_0x2ea1('0x1e')):undefined,'CampaignId':_0x5e88b5['id']});})['catch'](function(_0x44f152){_0x149115(_0x44f152);});});};if(_0x13908b[_0x2ea1('0x1a')]){_0x3d8148[_0x2ea1('0x27')]['findAll']({'where':{'type':_0x2ea1('0x28')},'attributes':['id','dialCheckDuplicateType'],'include':[{'model':_0x3d8148['CmList'],'as':'Lists','where':{'id':_0x13908b[_0x2ea1('0x1a')]}}]})['then'](function(_0x1f3b9c){if(_0x1f3b9c){var _0x331ff1=[];for(var _0x43c6eb=0x0,_0x1800c7;_0x43c6eb<_0x1f3b9c[_0x2ea1('0x29')];_0x43c6eb+=0x1){_0x1800c7=_0x1f3b9c[_0x43c6eb]['get']({'plain':!![]});switch(_0x1800c7['dialCheckDuplicateType']){case'always':_0x1ac7ab(_0x1800c7)[_0x2ea1('0x20')](_0x587d01());break;case _0x2ea1('0x2a'):_0x4dfcbb(_0x1800c7)['catch'](_0x587d01());break;default:_0x3d8148['CmHopper'][_0x2ea1('0x19')]({'phone':_0x13908b[_0x2ea1('0xe')],'ContactId':_0x13908b['id'],'ListId':_0x13908b[_0x2ea1('0x1a')],'scheduledat':_0x13908b[_0x2ea1('0x1c')]?_0x13908b[_0x2ea1('0x1c')]:moment()[_0x2ea1('0x1d')](_0x2ea1('0x1e')),'priority':_0x13908b[_0x2ea1('0x1b')]?_0x13908b['priority']:0x2,'callback':_0x13908b['callbackUniqueid']?!![]:![],'callbackuniqueid':_0x13908b[_0x2ea1('0x1f')]?_0x13908b[_0x2ea1('0x1f')]:undefined,'callbackat':_0x13908b[_0x2ea1('0x1f')]?moment()[_0x2ea1('0x1d')](_0x2ea1('0x1e')):undefined,'VoiceQueueId':_0x1800c7['id']})[_0x2ea1('0x20')](_0x587d01());}}}})[_0x2ea1('0x17')](function(){return _0x3d8148['VoiceQueue']['findAll']({'where':{'type':_0x2ea1('0x28')},'attributes':['id'],'include':[{'model':_0x3d8148[_0x2ea1('0x2b')],'as':_0x2ea1('0x2c'),'where':{'id':_0x13908b['ListId']}}]})['then'](function(_0x52e027){if(_0x52e027){var _0x2ef0b5=[];for(var _0x2685bd=0x0,_0xbdf03d;_0x2685bd<_0x52e027[_0x2ea1('0x29')];_0x2685bd+=0x1){_0xbdf03d=_0x52e027[_0x2685bd][_0x2ea1('0x2d')]({'plain':!![]});_0x3d8148[_0x2ea1('0x2e')][_0x2ea1('0x19')]({'phone':_0x13908b[_0x2ea1('0xe')],'ContactId':_0x13908b['id'],'ListId':_0x13908b['ListId'],'VoiceQueueId':_0xbdf03d['id']})[_0x2ea1('0x20')](function(_0x45c5a0){logger[_0x2ea1('0x12')](_0x2ea1('0x2f'),'afterCreate',_0x45c5a0['message']);});}}});})['then'](function(){return _0x3d8148[_0x2ea1('0x30')][_0x2ea1('0x31')]({'attributes':['id','dialCheckDuplicateType'],'include':[{'model':_0x3d8148[_0x2ea1('0x2b')],'as':_0x2ea1('0x32'),'where':{'id':_0x13908b[_0x2ea1('0x1a')]}}]})[_0x2ea1('0x17')](function(_0x207af4){if(_0x207af4){var _0xabfd0d=[];for(var _0x3c3f3c=0x0,_0x2fc13a;_0x3c3f3c<_0x207af4[_0x2ea1('0x29')];_0x3c3f3c+=0x1){_0x2fc13a=_0x207af4[_0x3c3f3c]['get']({'plain':!![]});switch(_0x2fc13a[_0x2ea1('0x33')]){case _0x2ea1('0x34'):_0x4167de(_0x2fc13a)['catch'](_0x34ba5b());break;case _0x2ea1('0x2a'):_0x7c725d(_0x2fc13a)[_0x2ea1('0x20')](_0x34ba5b());break;default:_0x3d8148[_0x2ea1('0x15')][_0x2ea1('0x19')]({'phone':_0x13908b[_0x2ea1('0xe')],'ContactId':_0x13908b['id'],'ListId':_0x13908b[_0x2ea1('0x1a')],'scheduledat':_0x13908b[_0x2ea1('0x1c')]?_0x13908b[_0x2ea1('0x1c')]:moment()['format'](_0x2ea1('0x1e')),'priority':_0x13908b['priority']?_0x13908b['priority']:0x2,'callback':_0x13908b[_0x2ea1('0x1f')]?!![]:![],'callbackuniqueid':_0x13908b[_0x2ea1('0x1f')]?_0x13908b[_0x2ea1('0x1f')]:undefined,'callbackat':_0x13908b[_0x2ea1('0x1f')]?moment()['format'](_0x2ea1('0x1e')):undefined,'CampaignId':_0x2fc13a['id']})[_0x2ea1('0x20')](_0x34ba5b());}}}});})[_0x2ea1('0x17')](function(){return _0x3d8148[_0x2ea1('0x30')][_0x2ea1('0x31')]({'attributes':['id'],'include':[{'model':_0x3d8148[_0x2ea1('0x2b')],'as':_0x2ea1('0x2c'),'where':{'id':_0x13908b['ListId']}}]})[_0x2ea1('0x17')](function(_0x45d1b2){if(_0x45d1b2){var _0x7baa99=[];for(var _0x4b4dd0=0x0,_0x40175e;_0x4b4dd0<_0x45d1b2[_0x2ea1('0x29')];_0x4b4dd0+=0x1){_0x40175e=_0x45d1b2[_0x4b4dd0][_0x2ea1('0x2d')]({'plain':!![]});_0x3d8148[_0x2ea1('0x2e')]['create']({'phone':_0x13908b[_0x2ea1('0xe')],'ContactId':_0x13908b['id'],'ListId':_0x13908b[_0x2ea1('0x1a')],'CampaignId':_0x40175e['id']})[_0x2ea1('0x20')](function(_0x7e2d83){logger[_0x2ea1('0x12')]('cmContact,\x20%s,\x20%s','afterCreate',_0x7e2d83['message']);});}}});})['then'](function(){_0x160238();})[_0x2ea1('0x20')](function(_0x5aa149){logger[_0x2ea1('0x12')](_0x2ea1('0x2f'),_0x2ea1('0x14'),_0x5aa149[_0x2ea1('0x35')]);_0x160238(_0x5aa149);});}else{_0x160238(new Error('List\x20not\x20found'));}},'afterDestroy':function(_0x1b76e5,_0x33222a,_0x463a41){var _0x442873=_0x5ddb58[_0x2ea1('0x11')];var _0x469e01=_0x1b76e5[_0x2ea1('0x2d')]({'plain':!![]});return _0x442873['CmHopper'][_0x2ea1('0x31')]({'raw':!![],'where':{'ListId':_0x469e01[_0x2ea1('0x1a')],'ContactId':_0x469e01['id']}})[_0x2ea1('0x17')](function(_0x497d53){if(!_['isEmpty'](_0x497d53)){var _0x304c24=[];for(var _0x52e746=0x0;_0x52e746<_0x497d53[_0x2ea1('0x29')];_0x52e746+=0x1){var _0x1027a7=_0x442873[_0x2ea1('0x15')][_0x2ea1('0x36')]({'where':{'ListId':_0x497d53[_0x52e746][_0x2ea1('0x1a')],'ContactId':_0x497d53[_0x52e746][_0x2ea1('0x37')],'VoiceQueueId':_0x497d53[_0x52e746][_0x2ea1('0x38')],'CampaignId':_0x497d53[_0x52e746][_0x2ea1('0x39')]}});_0x304c24[_0x2ea1('0x3a')](_0x1027a7);}return BPromise['all'](_0x304c24);}})[_0x2ea1('0x17')](function(_0x100e7c){logger[_0x2ea1('0x3b')](_0x2ea1('0x3c'),util[_0x2ea1('0x24')](_0x100e7c,{'showHidden':![],'depth':null}));_0x463a41();})[_0x2ea1('0x20')](function(_0x3bba6f){logger[_0x2ea1('0x12')](_0x2ea1('0x3d'),util[_0x2ea1('0x24')](_0x3bba6f,{'showHidden':![],'depth':null}));_0x463a41(_0x3bba6f);});}}});};
\ No newline at end of file
index 9967486..c8eb578 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe1e1=['startsWith','update','set','toString','sequelize','query','lodash','util','moment','bluebird','randomstring','ioredis','squel','../../mysqldb','../../config/logger','rpc','jayson/promise','client','redis','defaults','localhost','./cmContact.socket','register','request','then','info','CmContact,\x20%s,\x20%s','request\x20sent','debug','CmContact,\x20%s,\x20%s,\x20%s','stringify','error','message','result','catch','GetCmContact','CmContact','options','raw','where','limit','include','map','model','attributes','CreateCmContact','body','length','keys'];(function(_0x9df060,_0x253d33){var _0x338dfe=function(_0x17d9a5){while(--_0x17d9a5){_0x9df060['push'](_0x9df060['shift']());}};_0x338dfe(++_0x253d33);}(_0xe1e1,0x18e));var _0x1e1e=function(_0x24148e,_0x385a86){_0x24148e=_0x24148e-0x0;var _0x1fb2f7=_0xe1e1[_0x24148e];return _0x1fb2f7;};'use strict';var _=require(_0x1e1e('0x0'));var util=require(_0x1e1e('0x1'));var moment=require(_0x1e1e('0x2'));var BPromise=require(_0x1e1e('0x3'));var rs=require(_0x1e1e('0x4'));var fs=require('fs');var Redis=require(_0x1e1e('0x5'));var squel=require(_0x1e1e('0x6'));var db=require(_0x1e1e('0x7'))['db'];var utils=require('../../config/utils');var logger=require(_0x1e1e('0x8'))(_0x1e1e('0x9'));var config=require('../../config/environment');var jayson=require(_0x1e1e('0xa'));var client=jayson[_0x1e1e('0xb')]['http']({'port':0x232a});config[_0x1e1e('0xc')]=_[_0x1e1e('0xd')](config[_0x1e1e('0xc')],{'host':_0x1e1e('0xe'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0x1e1e('0xc')]));require(_0x1e1e('0xf'))[_0x1e1e('0x10')](socket);function respondWithRpcPromise(_0x5af05d,_0x371ebb,_0x5ab67b){return new BPromise(function(_0x9b0e82,_0x5e7ec3){return client[_0x1e1e('0x11')](_0x5af05d,_0x5ab67b)[_0x1e1e('0x12')](function(_0x1f4e85){logger[_0x1e1e('0x13')](_0x1e1e('0x14'),_0x371ebb,_0x1e1e('0x15'));logger[_0x1e1e('0x16')](_0x1e1e('0x17'),_0x371ebb,'request\x20sent',JSON[_0x1e1e('0x18')](_0x1f4e85));if(_0x1f4e85[_0x1e1e('0x19')]){if(_0x1f4e85['error']['code']===0x1f4){logger['error'](_0x1e1e('0x14'),_0x371ebb,_0x1f4e85[_0x1e1e('0x19')][_0x1e1e('0x1a')]);return _0x5e7ec3(_0x1f4e85['error'][_0x1e1e('0x1a')]);}logger[_0x1e1e('0x19')](_0x1e1e('0x14'),_0x371ebb,_0x1f4e85['error'][_0x1e1e('0x1a')]);return _0x9b0e82(_0x1f4e85['error']['message']);}else{logger[_0x1e1e('0x13')]('CmContact,\x20%s,\x20%s',_0x371ebb,'request\x20sent');_0x9b0e82(_0x1f4e85[_0x1e1e('0x1b')][_0x1e1e('0x1a')]);}})[_0x1e1e('0x1c')](function(_0x3ea261){logger[_0x1e1e('0x19')](_0x1e1e('0x14'),_0x371ebb,_0x3ea261);_0x5e7ec3(_0x3ea261);});});}exports[_0x1e1e('0x1d')]=function(_0xc53164){var _0x5d40a1=this;return new Promise(function(_0x1f5128,_0x19f07f){return db[_0x1e1e('0x1e')]['findAll']({'raw':_0xc53164['options']?_0xc53164[_0x1e1e('0x1f')][_0x1e1e('0x20')]===undefined?!![]:![]:!![],'where':_0xc53164[_0x1e1e('0x1f')]?_0xc53164[_0x1e1e('0x1f')][_0x1e1e('0x21')]||null:null,'attributes':_0xc53164[_0x1e1e('0x1f')]?_0xc53164['options']['attributes']||null:null,'limit':_0xc53164[_0x1e1e('0x1f')]?_0xc53164[_0x1e1e('0x1f')][_0x1e1e('0x22')]||null:null,'include':_0xc53164['options']?_0xc53164['options'][_0x1e1e('0x23')]?_[_0x1e1e('0x24')](_0xc53164['options'][_0x1e1e('0x23')],function(_0x5535f3){return{'model':db[_0x5535f3[_0x1e1e('0x25')]],'as':_0x5535f3['as'],'attributes':_0x5535f3[_0x1e1e('0x26')],'include':_0x5535f3[_0x1e1e('0x23')]?_['map'](_0x5535f3[_0x1e1e('0x23')],function(_0x557c0c){return{'model':db[_0x557c0c[_0x1e1e('0x25')]],'as':_0x557c0c['as'],'attributes':_0x557c0c[_0x1e1e('0x26')],'include':_0x557c0c[_0x1e1e('0x23')]?_[_0x1e1e('0x24')](_0x557c0c['include'],function(_0x114e30){return{'model':db[_0x114e30[_0x1e1e('0x25')]],'as':_0x114e30['as'],'attributes':_0x114e30[_0x1e1e('0x26')]};}):[]};}):[]};}):[]:[]})[_0x1e1e('0x12')](function(_0x147409){logger[_0x1e1e('0x13')]('GetCmContact',_0xc53164);logger['debug']('GetCmContact',_0xc53164,JSON[_0x1e1e('0x18')](_0x147409));_0x1f5128(_0x147409);})[_0x1e1e('0x1c')](function(_0x18695d){logger[_0x1e1e('0x19')](_0x1e1e('0x1d'),_0x18695d['message'],_0xc53164);_0x19f07f(_0x5d40a1['error'](0x1f4,_0x18695d[_0x1e1e('0x1a')]));});});};exports[_0x1e1e('0x27')]=function(_0x4f77ce){var _0x118aa4=this;return new Promise(function(_0x24fb1b,_0x1f1696){return db['CmContact']['create'](_0x4f77ce[_0x1e1e('0x28')],{'raw':_0x4f77ce[_0x1e1e('0x1f')]?_0x4f77ce[_0x1e1e('0x1f')][_0x1e1e('0x20')]===undefined?!![]:![]:!![]})[_0x1e1e('0x12')](function(_0x58e0c2){var _0x119a33;for(var _0x21719c=0x0;_0x21719c<Object['keys'](_0x4f77ce['body'])[_0x1e1e('0x29')];_0x21719c++){var _0x3b2100=Object[_0x1e1e('0x2a')](_0x4f77ce[_0x1e1e('0x28')])[_0x21719c];if(_0x3b2100[_0x1e1e('0x2b')]('cf_')){_0x119a33=squel[_0x1e1e('0x2c')]()['table']('cm_contacts')[_0x1e1e('0x2d')](_0x3b2100,_0x4f77ce[_0x1e1e('0x28')][_0x3b2100])[_0x1e1e('0x21')]('id\x20=\x20?',_0x58e0c2['id'])[_0x1e1e('0x2e')]();break;}}if(!_0x119a33)return _0x58e0c2;return db[_0x1e1e('0x2f')][_0x1e1e('0x30')](_0x119a33)['then'](function(){return _0x58e0c2;});})[_0x1e1e('0x12')](function(_0x4b5dc9){logger['info'](_0x1e1e('0x27'),_0x4f77ce);logger[_0x1e1e('0x16')](_0x1e1e('0x27'),_0x4f77ce,JSON[_0x1e1e('0x18')](_0x4b5dc9));_0x24fb1b(_0x4b5dc9);})[_0x1e1e('0x1c')](function(_0x440338){logger[_0x1e1e('0x19')](_0x1e1e('0x27'),_0x440338[_0x1e1e('0x1a')],_0x4f77ce);_0x1f1696(_0x118aa4[_0x1e1e('0x19')](0x1f4,_0x440338[_0x1e1e('0x1a')]));});});};
\ No newline at end of file
+var _0xefc8=['query','lodash','util','bluebird','ioredis','squel','../../mysqldb','../../config/utils','rpc','../../config/environment','jayson/promise','client','defaults','localhost','socket.io-emitter','redis','./cmContact.socket','register','request','then','info','CmContact,\x20%s,\x20%s','request\x20sent','error','code','message','catch','GetCmContact','CmContact','options','raw','where','include','map','model','attributes','debug','stringify','CreateCmContact','body','length','keys','startsWith','update','table','cm_contacts','set','id\x20=\x20?','sequelize'];(function(_0x1599ed,_0x543460){var _0x12c03c=function(_0x3e2a44){while(--_0x3e2a44){_0x1599ed['push'](_0x1599ed['shift']());}};_0x12c03c(++_0x543460);}(_0xefc8,0x127));var _0x8efc=function(_0x1cbd4b,_0x469134){_0x1cbd4b=_0x1cbd4b-0x0;var _0x594036=_0xefc8[_0x1cbd4b];return _0x594036;};'use strict';var _=require(_0x8efc('0x0'));var util=require(_0x8efc('0x1'));var moment=require('moment');var BPromise=require(_0x8efc('0x2'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x8efc('0x3'));var squel=require(_0x8efc('0x4'));var db=require(_0x8efc('0x5'))['db'];var utils=require(_0x8efc('0x6'));var logger=require('../../config/logger')(_0x8efc('0x7'));var config=require(_0x8efc('0x8'));var jayson=require(_0x8efc('0x9'));var client=jayson[_0x8efc('0xa')]['http']({'port':0x232a});config['redis']=_[_0x8efc('0xb')](config['redis'],{'host':_0x8efc('0xc'),'port':0x18eb});var socket=require(_0x8efc('0xd'))(new Redis(config[_0x8efc('0xe')]));require(_0x8efc('0xf'))[_0x8efc('0x10')](socket);function respondWithRpcPromise(_0x5458aa,_0x5e1b99,_0x301477){return new BPromise(function(_0x33b625,_0x28f469){return client[_0x8efc('0x11')](_0x5458aa,_0x301477)[_0x8efc('0x12')](function(_0x34e5f3){logger[_0x8efc('0x13')](_0x8efc('0x14'),_0x5e1b99,_0x8efc('0x15'));logger['debug']('CmContact,\x20%s,\x20%s,\x20%s',_0x5e1b99,_0x8efc('0x15'),JSON['stringify'](_0x34e5f3));if(_0x34e5f3[_0x8efc('0x16')]){if(_0x34e5f3['error'][_0x8efc('0x17')]===0x1f4){logger['error']('CmContact,\x20%s,\x20%s',_0x5e1b99,_0x34e5f3['error'][_0x8efc('0x18')]);return _0x28f469(_0x34e5f3[_0x8efc('0x16')]['message']);}logger['error'](_0x8efc('0x14'),_0x5e1b99,_0x34e5f3[_0x8efc('0x16')][_0x8efc('0x18')]);return _0x33b625(_0x34e5f3['error'][_0x8efc('0x18')]);}else{logger[_0x8efc('0x13')](_0x8efc('0x14'),_0x5e1b99,_0x8efc('0x15'));_0x33b625(_0x34e5f3['result']['message']);}})[_0x8efc('0x19')](function(_0x199a56){logger[_0x8efc('0x16')](_0x8efc('0x14'),_0x5e1b99,_0x199a56);_0x28f469(_0x199a56);});});}exports[_0x8efc('0x1a')]=function(_0x2b31a9){var _0x371a5d=this;return new Promise(function(_0x2e4e27,_0xda66e5){return db[_0x8efc('0x1b')]['findAll']({'raw':_0x2b31a9['options']?_0x2b31a9[_0x8efc('0x1c')][_0x8efc('0x1d')]===undefined?!![]:![]:!![],'where':_0x2b31a9[_0x8efc('0x1c')]?_0x2b31a9[_0x8efc('0x1c')][_0x8efc('0x1e')]||null:null,'attributes':_0x2b31a9[_0x8efc('0x1c')]?_0x2b31a9[_0x8efc('0x1c')]['attributes']||null:null,'limit':_0x2b31a9[_0x8efc('0x1c')]?_0x2b31a9[_0x8efc('0x1c')]['limit']||null:null,'include':_0x2b31a9[_0x8efc('0x1c')]?_0x2b31a9[_0x8efc('0x1c')][_0x8efc('0x1f')]?_[_0x8efc('0x20')](_0x2b31a9[_0x8efc('0x1c')]['include'],function(_0x45bf84){return{'model':db[_0x45bf84[_0x8efc('0x21')]],'as':_0x45bf84['as'],'attributes':_0x45bf84[_0x8efc('0x22')],'include':_0x45bf84[_0x8efc('0x1f')]?_[_0x8efc('0x20')](_0x45bf84[_0x8efc('0x1f')],function(_0x52ce84){return{'model':db[_0x52ce84['model']],'as':_0x52ce84['as'],'attributes':_0x52ce84[_0x8efc('0x22')],'include':_0x52ce84[_0x8efc('0x1f')]?_[_0x8efc('0x20')](_0x52ce84[_0x8efc('0x1f')],function(_0x216a20){return{'model':db[_0x216a20[_0x8efc('0x21')]],'as':_0x216a20['as'],'attributes':_0x216a20['attributes']};}):[]};}):[]};}):[]:[]})[_0x8efc('0x12')](function(_0xaacd19){logger[_0x8efc('0x13')](_0x8efc('0x1a'),_0x2b31a9);logger[_0x8efc('0x23')](_0x8efc('0x1a'),_0x2b31a9,JSON[_0x8efc('0x24')](_0xaacd19));_0x2e4e27(_0xaacd19);})['catch'](function(_0x34fddd){logger['error'](_0x8efc('0x1a'),_0x34fddd[_0x8efc('0x18')],_0x2b31a9);_0xda66e5(_0x371a5d['error'](0x1f4,_0x34fddd['message']));});});};exports[_0x8efc('0x25')]=function(_0x31aa88){var _0x8ab551=this;return new Promise(function(_0x5708e4,_0x2be0b4){return db[_0x8efc('0x1b')]['create'](_0x31aa88[_0x8efc('0x26')],{'raw':_0x31aa88[_0x8efc('0x1c')]?_0x31aa88['options']['raw']===undefined?!![]:![]:!![]})[_0x8efc('0x12')](function(_0xadda32){var _0x2b3268;for(var _0x441e50=0x0;_0x441e50<Object['keys'](_0x31aa88[_0x8efc('0x26')])[_0x8efc('0x27')];_0x441e50++){var _0x520c69=Object[_0x8efc('0x28')](_0x31aa88[_0x8efc('0x26')])[_0x441e50];if(_0x520c69[_0x8efc('0x29')]('cf_')){_0x2b3268=squel[_0x8efc('0x2a')]()[_0x8efc('0x2b')](_0x8efc('0x2c'))[_0x8efc('0x2d')](_0x520c69,_0x31aa88['body'][_0x520c69])[_0x8efc('0x1e')](_0x8efc('0x2e'),_0xadda32['id'])['toString']();break;}}if(!_0x2b3268)return _0xadda32;return db[_0x8efc('0x2f')][_0x8efc('0x30')](_0x2b3268)[_0x8efc('0x12')](function(){return _0xadda32;});})[_0x8efc('0x12')](function(_0x4b2634){logger[_0x8efc('0x13')](_0x8efc('0x25'),_0x31aa88);logger[_0x8efc('0x23')]('CreateCmContact',_0x31aa88,JSON[_0x8efc('0x24')](_0x4b2634));_0x5708e4(_0x4b2634);})[_0x8efc('0x19')](function(_0x5eb252){logger[_0x8efc('0x16')](_0x8efc('0x25'),_0x5eb252['message'],_0x31aa88);_0x2be0b4(_0x8ab551[_0x8efc('0x16')](0x1f4,_0x5eb252[_0x8efc('0x18')]));});});};
\ No newline at end of file
index 503f101..3187a74 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(_0x57b54c,_0x54ce0d){var _0x59cc19=function(_0xa33bc6){while(--_0xa33bc6){_0x57b54c['push'](_0x57b54c['shift']());}};_0x59cc19(++_0x54ce0d);}(_0xa9e0,0x123));var _0x0a9e=function(_0x24237f,_0x4cf32c){_0x24237f=_0x24237f-0x0;var _0x48298e=_0xa9e0[_0x24237f];return _0x48298e;};'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(_0x321bb2,_0x202794){var _0x9c12ed=function(_0x263dd3){while(--_0x263dd3){_0x321bb2['push'](_0x321bb2['shift']());}};_0x9c12ed(++_0x202794);}(_0xa9e0,0x123));var _0x0a9e=function(_0x2cfb58,_0x3d9412){_0x2cfb58=_0x2cfb58-0x0;var _0xd99951=_0xa9e0[_0x2cfb58];return _0xd99951;};'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 687ac28..ff85e3e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x75ef=['/:id','show','getTags','/:id/hoppers','getHoppers','/:id/hopper_histories','getHopperHistories','/:id/hopper_finals','getHopperFinals','getJourney','/merge','post','create','bulkCreate','/:id/tags','diskStorage','join','server/files/tmp','originalname','replace','%s-%s%s','basename','extname','now','file','uploadCsv','root','format','/upload','single','upload','/upload/:id','import','put','update','delete','destroy','exports','multer','util','connect-timeout','express','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./cmContact.controller','get','/describe','isAuthenticated','describe'];(function(_0x414b02,_0x246119){var _0x307a8f=function(_0x481202){while(--_0x481202){_0x414b02['push'](_0x414b02['shift']());}};_0x307a8f(++_0x246119);}(_0x75ef,0x1f1));var _0xf75e=function(_0x58b3b3,_0x5b62cb){_0x58b3b3=_0x58b3b3-0x0;var _0x22f5d7=_0x75ef[_0x58b3b3];return _0x22f5d7;};'use strict';var multer=require(_0xf75e('0x0'));var util=require(_0xf75e('0x1'));var path=require('path');var timeout=require(_0xf75e('0x2'));var express=require(_0xf75e('0x3'));var router=express['Router']();var fs_extra=require(_0xf75e('0x4'));var auth=require(_0xf75e('0x5'));var interaction=require(_0xf75e('0x6'));var config=require(_0xf75e('0x7'));var controller=require(_0xf75e('0x8'));router[_0xf75e('0x9')]('/',auth['isAuthenticated'](),controller['index']);router[_0xf75e('0x9')](_0xf75e('0xa'),auth[_0xf75e('0xb')](),controller[_0xf75e('0xc')]);router[_0xf75e('0x9')](_0xf75e('0xd'),auth[_0xf75e('0xb')](),controller[_0xf75e('0xe')]);router[_0xf75e('0x9')]('/:id/tags',auth[_0xf75e('0xb')](),controller[_0xf75e('0xf')]);router[_0xf75e('0x9')](_0xf75e('0x10'),auth[_0xf75e('0xb')](),controller[_0xf75e('0x11')]);router['get'](_0xf75e('0x12'),auth[_0xf75e('0xb')](),controller[_0xf75e('0x13')]);router['get'](_0xf75e('0x14'),auth[_0xf75e('0xb')](),controller[_0xf75e('0x15')]);router[_0xf75e('0x9')]('/:id/jscripty_sessions',auth[_0xf75e('0xb')](),controller['getJscriptySessions']);router[_0xf75e('0x9')]('/:id/journey',auth[_0xf75e('0xb')](),controller[_0xf75e('0x16')]);router['post'](_0xf75e('0x17'),auth[_0xf75e('0xb')](),controller['merge']);router[_0xf75e('0x18')]('/',auth[_0xf75e('0xb')](),controller[_0xf75e('0x19')]);router[_0xf75e('0x18')]('/create_many',auth[_0xf75e('0xb')](),controller[_0xf75e('0x1a')]);router[_0xf75e('0x18')](_0xf75e('0x1b'),auth[_0xf75e('0xb')](),controller['setTags']);var upload=multer({'storage':multer[_0xf75e('0x1c')]({'destination':function(_0x1469f3,_0x1ee312,_0x1a1d45){_0x1a1d45(null,path[_0xf75e('0x1d')](config['root'],_0xf75e('0x1e')));},'filename':function(_0x277790,_0x2ee529,_0xc67a7e){_0x2ee529[_0xf75e('0x1f')]=_0x2ee529[_0xf75e('0x1f')][_0xf75e('0x20')](/[+@&\/\\#,+()$~%'":*?<>{}\s\\|]/g,'-');_0xc67a7e(null,util['format'](_0xf75e('0x21'),path[_0xf75e('0x22')](_0x2ee529['originalname'],path[_0xf75e('0x23')](_0x2ee529['originalname'])),Date[_0xf75e('0x24')](),path['extname'](_0x2ee529['originalname'])));}})});router['post']('/csv',upload['single'](_0xf75e('0x25')),controller[_0xf75e('0x26')]);var upload=multer({'storage':multer[_0xf75e('0x1c')]({'destination':function(_0x27d605,_0x51d35a,_0x1bfb04){_0x1bfb04(null,path[_0xf75e('0x1d')](config[_0xf75e('0x27')],'server/files/tmp'));},'filename':function(_0x99854c,_0x5ddda4,_0x40126){_0x5ddda4[_0xf75e('0x1f')]=_0x5ddda4['originalname'][_0xf75e('0x20')](/[+@&\/\\#,+()$~%'":*?<>{}\s\\|]/g,'-');_0x40126(null,util[_0xf75e('0x28')](_0xf75e('0x21'),path[_0xf75e('0x22')](_0x5ddda4[_0xf75e('0x1f')],path[_0xf75e('0x23')](_0x5ddda4['originalname'])),Date[_0xf75e('0x24')](),path['extname'](_0x5ddda4[_0xf75e('0x1f')])));}})});router['post'](_0xf75e('0x29'),upload[_0xf75e('0x2a')]('file'),controller[_0xf75e('0x2b')]);router['post'](_0xf75e('0x2c'),auth[_0xf75e('0xb')](),controller[_0xf75e('0x2d')]);router[_0xf75e('0x2e')](_0xf75e('0xd'),auth['isAuthenticated'](),controller[_0xf75e('0x2f')]);router[_0xf75e('0x30')]('/:id',auth[_0xf75e('0xb')](),controller[_0xf75e('0x31')]);module[_0xf75e('0x32')]=router;
\ No newline at end of file
+var _0xe692=['isAuthenticated','index','describe','/:id','show','getTags','/:id/hoppers','/:id/hopper_histories','getHopperHistories','/:id/jscripty_sessions','getJscriptySessions','/:id/journey','/merge','post','create','/:id/tags','setTags','diskStorage','join','root','server/files/tmp','originalname','replace','%s-%s%s','basename','now','/csv','format','extname','file','upload','import','put','destroy','exports','multer','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','./cmContact.controller','get'];(function(_0x23f858,_0x3ac7e1){var _0x1219e9=function(_0xc459ad){while(--_0xc459ad){_0x23f858['push'](_0x23f858['shift']());}};_0x1219e9(++_0x3ac7e1);}(_0xe692,0x193));var _0x2e69=function(_0x2adbeb,_0x5581be){_0x2adbeb=_0x2adbeb-0x0;var _0x5e18a6=_0xe692[_0x2adbeb];return _0x5e18a6;};'use strict';var multer=require(_0x2e69('0x0'));var util=require(_0x2e69('0x1'));var path=require(_0x2e69('0x2'));var timeout=require(_0x2e69('0x3'));var express=require(_0x2e69('0x4'));var router=express[_0x2e69('0x5')]();var fs_extra=require(_0x2e69('0x6'));var auth=require(_0x2e69('0x7'));var interaction=require(_0x2e69('0x8'));var config=require('../../config/environment');var controller=require(_0x2e69('0x9'));router[_0x2e69('0xa')]('/',auth[_0x2e69('0xb')](),controller[_0x2e69('0xc')]);router[_0x2e69('0xa')]('/describe',auth[_0x2e69('0xb')](),controller[_0x2e69('0xd')]);router[_0x2e69('0xa')](_0x2e69('0xe'),auth['isAuthenticated'](),controller[_0x2e69('0xf')]);router['get']('/:id/tags',auth[_0x2e69('0xb')](),controller[_0x2e69('0x10')]);router['get'](_0x2e69('0x11'),auth['isAuthenticated'](),controller['getHoppers']);router[_0x2e69('0xa')](_0x2e69('0x12'),auth[_0x2e69('0xb')](),controller[_0x2e69('0x13')]);router[_0x2e69('0xa')]('/:id/hopper_finals',auth[_0x2e69('0xb')](),controller['getHopperFinals']);router[_0x2e69('0xa')](_0x2e69('0x14'),auth['isAuthenticated'](),controller[_0x2e69('0x15')]);router[_0x2e69('0xa')](_0x2e69('0x16'),auth['isAuthenticated'](),controller['getJourney']);router['post'](_0x2e69('0x17'),auth[_0x2e69('0xb')](),controller['merge']);router[_0x2e69('0x18')]('/',auth[_0x2e69('0xb')](),controller[_0x2e69('0x19')]);router[_0x2e69('0x18')]('/create_many',auth[_0x2e69('0xb')](),controller['bulkCreate']);router[_0x2e69('0x18')](_0x2e69('0x1a'),auth[_0x2e69('0xb')](),controller[_0x2e69('0x1b')]);var upload=multer({'storage':multer[_0x2e69('0x1c')]({'destination':function(_0x35c8d0,_0x239e55,_0x4d5f69){_0x4d5f69(null,path[_0x2e69('0x1d')](config[_0x2e69('0x1e')],_0x2e69('0x1f')));},'filename':function(_0xed9854,_0x1eab52,_0x581221){_0x1eab52[_0x2e69('0x20')]=_0x1eab52[_0x2e69('0x20')][_0x2e69('0x21')](/[+@&\/\\#,+()$~%'":*?<>{}\s\\|]/g,'-');_0x581221(null,util['format'](_0x2e69('0x22'),path[_0x2e69('0x23')](_0x1eab52[_0x2e69('0x20')],path['extname'](_0x1eab52[_0x2e69('0x20')])),Date[_0x2e69('0x24')](),path['extname'](_0x1eab52[_0x2e69('0x20')])));}})});router[_0x2e69('0x18')](_0x2e69('0x25'),upload['single']('file'),controller['uploadCsv']);var upload=multer({'storage':multer[_0x2e69('0x1c')]({'destination':function(_0x2415f4,_0x14b3d4,_0xdd43a5){_0xdd43a5(null,path['join'](config[_0x2e69('0x1e')],_0x2e69('0x1f')));},'filename':function(_0x58a89d,_0x13e61d,_0x2a8dfd){_0x13e61d[_0x2e69('0x20')]=_0x13e61d['originalname']['replace'](/[+@&\/\\#,+()$~%'":*?<>{}\s\\|]/g,'-');_0x2a8dfd(null,util[_0x2e69('0x26')]('%s-%s%s',path[_0x2e69('0x23')](_0x13e61d[_0x2e69('0x20')],path[_0x2e69('0x27')](_0x13e61d[_0x2e69('0x20')])),Date[_0x2e69('0x24')](),path[_0x2e69('0x27')](_0x13e61d[_0x2e69('0x20')])));}})});router[_0x2e69('0x18')]('/upload',upload['single'](_0x2e69('0x28')),controller[_0x2e69('0x29')]);router['post']('/upload/:id',auth['isAuthenticated'](),controller[_0x2e69('0x2a')]);router[_0x2e69('0x2b')](_0x2e69('0xe'),auth[_0x2e69('0xb')](),controller['update']);router['delete']('/:id',auth['isAuthenticated'](),controller[_0x2e69('0x2c')]);module[_0x2e69('0x2d')]=router;
\ No newline at end of file
index 8e22005..1b46254 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1f72=['values','isArray','BOOLEAN','voice','sequelize','lodash','exports','alias','STRING','setDataValue','getDataValue','name','TEXT'];(function(_0x509646,_0x4e19ab){var _0x225374=function(_0x1009a8){while(--_0x1009a8){_0x509646['push'](_0x509646['shift']());}};_0x225374(++_0x4e19ab);}(_0x1f72,0x79));var _0x21f7=function(_0x19b668,_0x677ded){_0x19b668=_0x19b668-0x0;var _0x3f8097=_0x1f72[_0x19b668];return _0x3f8097;};'use strict';var Sequelize=require(_0x21f7('0x0'));var _=require(_0x21f7('0x1'));module[_0x21f7('0x2')]={'name':{'type':Sequelize['VIRTUAL'],'get':function(_0x1c2688){return this['getDataValue'](_0x21f7('0x3'));}},'alias':{'type':Sequelize[_0x21f7('0x4')],'allowNull':![],'set':function(_0x5efd7f){this[_0x21f7('0x5')](_0x21f7('0x3'),_0x5efd7f?_0x5efd7f:this[_0x21f7('0x6')](_0x21f7('0x7')));}},'type':{'type':Sequelize[_0x21f7('0x4')],'allowNull':![]},'values':{'type':Sequelize[_0x21f7('0x8')]('long'),'get':function(){if(this[_0x21f7('0x6')]('type')==='select'){return JSON['parse'](this[_0x21f7('0x6')](_0x21f7('0x9')));}else{return this[_0x21f7('0x6')](_0x21f7('0x9'));}},'set':function(_0x235fbc){if(Array[_0x21f7('0xa')](_0x235fbc)){this['setDataValue']('values',JSON['stringify'](_0x235fbc));}else{this[_0x21f7('0x5')]('values',_0x235fbc);}}},'required':{'type':Sequelize[_0x21f7('0xb')],'defaultValue':![]},'clickToAction':{'type':Sequelize[_0x21f7('0xb')],'defaultValue':![]},'actionType':{'type':Sequelize['ENUM'](_0x21f7('0xc'))}};
\ No newline at end of file
+var _0x94be=['isArray','stringify','BOOLEAN','voice','sequelize','lodash','VIRTUAL','alias','STRING','setDataValue','getDataValue','name','TEXT','long','type','parse','values'];(function(_0xe5afb7,_0x37246d){var _0x24101c=function(_0x33f163){while(--_0x33f163){_0xe5afb7['push'](_0xe5afb7['shift']());}};_0x24101c(++_0x37246d);}(_0x94be,0xae));var _0xe94b=function(_0x1670e0,_0x5b241e){_0x1670e0=_0x1670e0-0x0;var _0x531650=_0x94be[_0x1670e0];return _0x531650;};'use strict';var Sequelize=require(_0xe94b('0x0'));var _=require(_0xe94b('0x1'));module['exports']={'name':{'type':Sequelize[_0xe94b('0x2')],'get':function(_0x2e7071){return this['getDataValue'](_0xe94b('0x3'));}},'alias':{'type':Sequelize[_0xe94b('0x4')],'allowNull':![],'set':function(_0x227e2c){this[_0xe94b('0x5')](_0xe94b('0x3'),_0x227e2c?_0x227e2c:this[_0xe94b('0x6')](_0xe94b('0x7')));}},'type':{'type':Sequelize['STRING'],'allowNull':![]},'values':{'type':Sequelize[_0xe94b('0x8')](_0xe94b('0x9')),'get':function(){if(this[_0xe94b('0x6')](_0xe94b('0xa'))==='select'){return JSON[_0xe94b('0xb')](this[_0xe94b('0x6')](_0xe94b('0xc')));}else{return this['getDataValue'](_0xe94b('0xc'));}},'set':function(_0x208228){if(Array[_0xe94b('0xd')](_0x208228)){this[_0xe94b('0x5')](_0xe94b('0xc'),JSON[_0xe94b('0xe')](_0x208228));}else{this['setDataValue'](_0xe94b('0xc'),_0x208228);}}},'required':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'clickToAction':{'type':Sequelize[_0xe94b('0xf')],'defaultValue':![]},'actionType':{'type':Sequelize['ENUM'](_0xe94b('0x10'))}};
\ No newline at end of file
index a233e5a..8d290af 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa65c=['INTEGER','BOOLEAN','queryInterface','addColumn','cm_contacts','format','cf_%d','eml-format','rimraf','fast-json-patch','bluebird','mustache','util','path','sox','ejs','fs-extra','lodash','squel','desk.js','to-csv','querystring','papaparse','ioredis','../../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','limit','undefined','count','offset','set','Content-Range','apply','reject','update','then','destroy','error','name','send','index','map','CmCustomField','rawAttributes','fieldName','type','key','model','query','attributes','fields','length','order','sort','where','filters','pick','filter','merge','VIRTUAL','options','include','rows','show','params','keys','intersection','includeAll','find','catch','body','create','sequelize','transaction','Sequelize','TEXT','text','number'];(function(_0x4398a2,_0x432a25){var _0x239463=function(_0x5e9ec8){while(--_0x5e9ec8){_0x4398a2['push'](_0x4398a2['shift']());}};_0x239463(++_0x432a25);}(_0xa65c,0x16b));var _0xca65=function(_0x4b385a,_0x30ef0f){_0x4b385a=_0x4b385a-0x0;var _0x2a4bb1=_0xa65c[_0x4b385a];return _0x2a4bb1;};'use strict';var emlformat=require(_0xca65('0x0'));var rimraf=require(_0xca65('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0xca65('0x2'));var rp=require('request-promise');var moment=require('moment');var BPromise=require(_0xca65('0x3'));var Mustache=require(_0xca65('0x4'));var util=require(_0xca65('0x5'));var path=require(_0xca65('0x6'));var sox=require(_0xca65('0x7'));var csv=require('to-csv');var ejs=require(_0xca65('0x8'));var fs=require('fs');var fs_extra=require(_0xca65('0x9'));var _=require(_0xca65('0xa'));var squel=require(_0xca65('0xb'));var crypto=require('crypto');var jsforce=require('jsforce');var deskjs=require(_0xca65('0xc'));var toCsv=require(_0xca65('0xd'));var querystring=require(_0xca65('0xe'));var Papa=require(_0xca65('0xf'));var Redis=require(_0xca65('0x10'));var authService=require(_0xca65('0x11'));var qs=require(_0xca65('0x12'));var as=require(_0xca65('0x13'));var hardwareService=require(_0xca65('0x14'));var logger=require('../../config/logger')(_0xca65('0x15'));var utils=require(_0xca65('0x16'));var config=require(_0xca65('0x17'));var licenseUtil=require(_0xca65('0x18'));var db=require(_0xca65('0x19'))['db'];function respondWithStatusCode(_0x3733fb,_0x5617e3){_0x5617e3=_0x5617e3||0xcc;return function(_0x56b06c){if(_0x56b06c){return _0x3733fb[_0xca65('0x1a')](_0x5617e3);}return _0x3733fb[_0xca65('0x1b')](_0x5617e3)[_0xca65('0x1c')]();};}function respondWithResult(_0x5dfa3a,_0x4e6fc7){_0x4e6fc7=_0x4e6fc7||0xc8;return function(_0x39f2f3){if(_0x39f2f3){return _0x5dfa3a[_0xca65('0x1b')](_0x4e6fc7)[_0xca65('0x1d')](_0x39f2f3);}};}function respondWithFilteredResult(_0x25e9d8,_0x35b4c8){return function(_0x5249d2){if(_0x5249d2){var _0x471d66=typeof _0x35b4c8['offset']==='undefined'&&typeof _0x35b4c8[_0xca65('0x1e')]===_0xca65('0x1f');var _0x3fe0d8=_0x5249d2[_0xca65('0x20')];var _0x18be58=_0x471d66?0x0:_0x35b4c8[_0xca65('0x21')];var _0x597483=_0x471d66?_0x5249d2[_0xca65('0x20')]:_0x35b4c8['offset']+_0x35b4c8[_0xca65('0x1e')];var _0x81e36b;if(_0x597483>=_0x3fe0d8){_0x597483=_0x3fe0d8;_0x81e36b=0xc8;}else{_0x81e36b=0xce;}_0x25e9d8[_0xca65('0x1b')](_0x81e36b);return _0x25e9d8[_0xca65('0x22')](_0xca65('0x23'),_0x18be58+'-'+_0x597483+'/'+_0x3fe0d8)['json'](_0x5249d2);}return null;};}function patchUpdates(_0x3ea0dd){return function(_0x522168){try{jsonpatch[_0xca65('0x24')](_0x522168,_0x3ea0dd,!![]);}catch(_0x4c5c27){return BPromise[_0xca65('0x25')](_0x4c5c27);}return _0x522168['save']();};}function saveUpdates(_0x546e03,_0x59329a){return function(_0x441ed4){if(_0x441ed4){return _0x441ed4[_0xca65('0x26')](_0x546e03)[_0xca65('0x27')](function(_0x1112bf){return _0x1112bf;});}return null;};}function removeEntity(_0x6b9271,_0x322a3f){return function(_0x587327){if(_0x587327){return _0x587327[_0xca65('0x28')]()[_0xca65('0x27')](function(){_0x6b9271[_0xca65('0x1b')](0xcc)[_0xca65('0x1c')]();});}};}function handleEntityNotFound(_0x3e5699,_0x3312a7){return function(_0x41625f){if(!_0x41625f){_0x3e5699['sendStatus'](0x194);}return _0x41625f;};}function handleError(_0x624134,_0x17c317){_0x17c317=_0x17c317||0x1f4;return function(_0x2cf431){logger[_0xca65('0x29')](_0x2cf431['stack']);if(_0x2cf431[_0xca65('0x2a')]){delete _0x2cf431[_0xca65('0x2a')];}_0x624134[_0xca65('0x1b')](_0x17c317)[_0xca65('0x2b')](_0x2cf431);};}exports[_0xca65('0x2c')]=function(_0x2fbb00,_0x5c6b35){var _0x163830={},_0x412428={},_0x3a1068={'count':0x0,'rows':[]};var _0x5e6722=_[_0xca65('0x2d')](db[_0xca65('0x2e')][_0xca65('0x2f')],function(_0x48784c){return{'name':_0x48784c[_0xca65('0x30')],'type':_0x48784c[_0xca65('0x31')][_0xca65('0x32')]};});_0x412428[_0xca65('0x33')]=_['differenceBy'](_[_0xca65('0x2d')](_0x5e6722,_0xca65('0x2a')),[_0xca65('0x2a')]);_0x412428[_0xca65('0x34')]=_['keys'](_0x2fbb00[_0xca65('0x34')]);_0x412428['filters']=_['intersection'](_0x412428[_0xca65('0x33')],_0x412428[_0xca65('0x34')]);_0x163830[_0xca65('0x35')]=_['intersection'](_0x412428[_0xca65('0x33')],qs[_0xca65('0x36')](_0x2fbb00[_0xca65('0x34')][_0xca65('0x36')]));_0x163830['attributes']=_0x163830[_0xca65('0x35')][_0xca65('0x37')]?_0x163830[_0xca65('0x35')]:_0x412428[_0xca65('0x33')];if(!_0x2fbb00['query']['hasOwnProperty']('nolimit')){_0x163830[_0xca65('0x1e')]=qs[_0xca65('0x1e')](_0x2fbb00[_0xca65('0x34')][_0xca65('0x1e')]);_0x163830[_0xca65('0x21')]=qs['offset'](_0x2fbb00[_0xca65('0x34')][_0xca65('0x21')]);}_0x163830[_0xca65('0x38')]=qs[_0xca65('0x39')](_0x2fbb00[_0xca65('0x34')][_0xca65('0x39')]);_0x163830[_0xca65('0x3a')]=qs[_0xca65('0x3b')](_[_0xca65('0x3c')](_0x2fbb00[_0xca65('0x34')],_0x412428[_0xca65('0x3b')]),_0x5e6722);if(_0x2fbb00[_0xca65('0x34')][_0xca65('0x3d')]){_0x163830[_0xca65('0x3a')]=_[_0xca65('0x3e')](_0x163830[_0xca65('0x3a')],{'$or':_[_0xca65('0x2d')](_0x5e6722,function(_0x2620ff){if(_0x2620ff[_0xca65('0x31')]!==_0xca65('0x3f')){var _0x1073e4={};_0x1073e4[_0x2620ff[_0xca65('0x2a')]]={'$like':'%'+_0x2fbb00[_0xca65('0x34')]['filter']+'%'};return _0x1073e4;}})});}_0x163830=_['merge']({},_0x163830,_0x2fbb00[_0xca65('0x40')]);var _0x476e03={'where':_0x163830['where']};return db[_0xca65('0x2e')][_0xca65('0x20')](_0x476e03)[_0xca65('0x27')](function(_0x4a2f22){_0x3a1068[_0xca65('0x20')]=_0x4a2f22;if(_0x2fbb00['query']['includeAll']){_0x163830[_0xca65('0x41')]=[{'all':!![]}];}return db[_0xca65('0x2e')]['findAll'](_0x163830);})['then'](function(_0x3c00ca){_0x3a1068[_0xca65('0x42')]=_0x3c00ca;return _0x3a1068;})[_0xca65('0x27')](respondWithFilteredResult(_0x5c6b35,_0x163830))['catch'](handleError(_0x5c6b35,null));};exports[_0xca65('0x43')]=function(_0x4edddd,_0x2cea30){var _0x507114={'raw':!![],'where':{'id':_0x4edddd[_0xca65('0x44')]['id']}},_0x3c1b59={};_0x3c1b59[_0xca65('0x33')]=_[_0xca65('0x45')](db[_0xca65('0x2e')][_0xca65('0x2f')]);_0x3c1b59[_0xca65('0x34')]=_[_0xca65('0x45')](_0x4edddd[_0xca65('0x34')]);_0x3c1b59[_0xca65('0x3b')]=_[_0xca65('0x46')](_0x3c1b59[_0xca65('0x33')],_0x3c1b59[_0xca65('0x34')]);_0x507114[_0xca65('0x35')]=_[_0xca65('0x46')](_0x3c1b59['model'],qs[_0xca65('0x36')](_0x4edddd[_0xca65('0x34')][_0xca65('0x36')]));_0x507114[_0xca65('0x35')]=_0x507114[_0xca65('0x35')][_0xca65('0x37')]?_0x507114[_0xca65('0x35')]:_0x3c1b59[_0xca65('0x33')];if(_0x4edddd['query'][_0xca65('0x47')]){_0x507114[_0xca65('0x41')]=[{'all':!![]}];}_0x507114=_[_0xca65('0x3e')]({},_0x507114,_0x4edddd['options']);return db[_0xca65('0x2e')][_0xca65('0x48')](_0x507114)[_0xca65('0x27')](handleEntityNotFound(_0x2cea30,null))[_0xca65('0x27')](respondWithResult(_0x2cea30,null))[_0xca65('0x49')](handleError(_0x2cea30,null));};exports[_0xca65('0x26')]=function(_0x49305f,_0x4127ba){if(_0x49305f[_0xca65('0x4a')]['id']){delete _0x49305f['body']['id'];}return db[_0xca65('0x2e')][_0xca65('0x48')]({'where':{'id':_0x49305f[_0xca65('0x44')]['id']}})['then'](handleEntityNotFound(_0x4127ba,null))[_0xca65('0x27')](saveUpdates(_0x49305f[_0xca65('0x4a')],null))[_0xca65('0x27')](respondWithResult(_0x4127ba,null))[_0xca65('0x49')](handleError(_0x4127ba,null));};exports['destroy']=function(_0x215197,_0x4014b8){return db[_0xca65('0x2e')][_0xca65('0x48')]({'where':{'id':_0x215197[_0xca65('0x44')]['id']}})['then'](handleEntityNotFound(_0x4014b8,null))[_0xca65('0x27')](removeEntity(_0x4014b8,null))[_0xca65('0x49')](handleError(_0x4014b8,null));};exports[_0xca65('0x4b')]=function(_0xa28ef2,_0x4f1795){var _0x2742c8;return db[_0xca65('0x4c')][_0xca65('0x4d')](function(_0x52bdd3){return db[_0xca65('0x2e')][_0xca65('0x4b')](_0xa28ef2[_0xca65('0x4a')],{'transaction':_0x52bdd3})[_0xca65('0x27')](function(_0x4bd1dc){_0x2742c8=_0x4bd1dc;var _0x2e3dff={'type':db[_0xca65('0x4e')][_0xca65('0x4f')],'transaction':_0x52bdd3};switch(_0xa28ef2['body']['type']){case _0xca65('0x50'):_0x2e3dff[_0xca65('0x31')]=db[_0xca65('0x4e')][_0xca65('0x4f')];break;case _0xca65('0x51'):_0x2e3dff['type']=db[_0xca65('0x4e')][_0xca65('0x52')];break;case'switch':_0x2e3dff[_0xca65('0x31')]=db[_0xca65('0x4e')][_0xca65('0x53')];_0x2e3dff['defaultValue']=![];break;default:}return db['sequelize'][_0xca65('0x54')][_0xca65('0x55')](_0xca65('0x56'),util[_0xca65('0x57')](_0xca65('0x58'),_0x2742c8['id']),_0x2e3dff);})[_0xca65('0x27')](function(){return _0x2742c8;});})[_0xca65('0x27')](respondWithResult(_0x4f1795,0xc9))['catch'](handleError(_0x4f1795,null));};
\ No newline at end of file
+var _0xfc11=['json','offset','undefined','limit','count','apply','reject','save','then','destroy','name','send','map','rawAttributes','fieldName','type','key','model','differenceBy','query','keys','filters','attributes','intersection','fields','length','hasOwnProperty','order','sort','where','pick','merge','CmCustomField','includeAll','include','findAll','rows','show','params','options','catch','update','body','find','transaction','create','Sequelize','TEXT','INTEGER','switch','BOOLEAN','defaultValue','sequelize','addColumn','format','cf_%d','rimraf','zip-dir','request-promise','moment','bluebird','mustache','util','sox','to-csv','ejs','lodash','squel','jsforce','querystring','ioredis','../../components/auth/service','../../config/license/hardware','../../config/logger','api','../../config/utils','../../mysqldb','sendStatus','status','end'];(function(_0xbdd2fa,_0x342b3c){var _0x11ea03=function(_0x1e6162){while(--_0x1e6162){_0xbdd2fa['push'](_0xbdd2fa['shift']());}};_0x11ea03(++_0x342b3c);}(_0xfc11,0x88));var _0x1fc1=function(_0x530be9,_0x31423c){_0x530be9=_0x530be9-0x0;var _0x3dbc5b=_0xfc11[_0x530be9];return _0x3dbc5b;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x1fc1('0x0'));var zipdir=require(_0x1fc1('0x1'));var jsonpatch=require('fast-json-patch');var rp=require(_0x1fc1('0x2'));var moment=require(_0x1fc1('0x3'));var BPromise=require(_0x1fc1('0x4'));var Mustache=require(_0x1fc1('0x5'));var util=require(_0x1fc1('0x6'));var path=require('path');var sox=require(_0x1fc1('0x7'));var csv=require(_0x1fc1('0x8'));var ejs=require(_0x1fc1('0x9'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x1fc1('0xa'));var squel=require(_0x1fc1('0xb'));var crypto=require('crypto');var jsforce=require(_0x1fc1('0xc'));var deskjs=require('desk.js');var toCsv=require(_0x1fc1('0x8'));var querystring=require(_0x1fc1('0xd'));var Papa=require('papaparse');var Redis=require(_0x1fc1('0xe'));var authService=require(_0x1fc1('0xf'));var qs=require('../../components/parsers/qs');var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x1fc1('0x10'));var logger=require(_0x1fc1('0x11'))(_0x1fc1('0x12'));var utils=require(_0x1fc1('0x13'));var config=require('../../config/environment');var licenseUtil=require('../../config/license/util');var db=require(_0x1fc1('0x14'))['db'];function respondWithStatusCode(_0x42e4e7,_0x461b99){_0x461b99=_0x461b99||0xcc;return function(_0x39e7b8){if(_0x39e7b8){return _0x42e4e7[_0x1fc1('0x15')](_0x461b99);}return _0x42e4e7[_0x1fc1('0x16')](_0x461b99)[_0x1fc1('0x17')]();};}function respondWithResult(_0x4d1e4e,_0x2f0830){_0x2f0830=_0x2f0830||0xc8;return function(_0x29a244){if(_0x29a244){return _0x4d1e4e[_0x1fc1('0x16')](_0x2f0830)[_0x1fc1('0x18')](_0x29a244);}};}function respondWithFilteredResult(_0xf15a13,_0x5a21ee){return function(_0x3526be){if(_0x3526be){var _0x19c499=typeof _0x5a21ee[_0x1fc1('0x19')]===_0x1fc1('0x1a')&&typeof _0x5a21ee[_0x1fc1('0x1b')]===_0x1fc1('0x1a');var _0x472d1e=_0x3526be[_0x1fc1('0x1c')];var _0x5728f8=_0x19c499?0x0:_0x5a21ee[_0x1fc1('0x19')];var _0xb632cf=_0x19c499?_0x3526be['count']:_0x5a21ee[_0x1fc1('0x19')]+_0x5a21ee[_0x1fc1('0x1b')];var _0x369827;if(_0xb632cf>=_0x472d1e){_0xb632cf=_0x472d1e;_0x369827=0xc8;}else{_0x369827=0xce;}_0xf15a13[_0x1fc1('0x16')](_0x369827);return _0xf15a13['set']('Content-Range',_0x5728f8+'-'+_0xb632cf+'/'+_0x472d1e)['json'](_0x3526be);}return null;};}function patchUpdates(_0x3750ba){return function(_0x184c2c){try{jsonpatch[_0x1fc1('0x1d')](_0x184c2c,_0x3750ba,!![]);}catch(_0x726a6b){return BPromise[_0x1fc1('0x1e')](_0x726a6b);}return _0x184c2c[_0x1fc1('0x1f')]();};}function saveUpdates(_0x1fc384,_0x89d01){return function(_0xce68c0){if(_0xce68c0){return _0xce68c0['update'](_0x1fc384)[_0x1fc1('0x20')](function(_0x39711b){return _0x39711b;});}return null;};}function removeEntity(_0x47888f,_0x50f4e9){return function(_0x5848b8){if(_0x5848b8){return _0x5848b8[_0x1fc1('0x21')]()[_0x1fc1('0x20')](function(){_0x47888f[_0x1fc1('0x16')](0xcc)[_0x1fc1('0x17')]();});}};}function handleEntityNotFound(_0x420360,_0xcc3c46){return function(_0x163e04){if(!_0x163e04){_0x420360['sendStatus'](0x194);}return _0x163e04;};}function handleError(_0x31893c,_0x2f85c7){_0x2f85c7=_0x2f85c7||0x1f4;return function(_0x1538e5){logger['error'](_0x1538e5['stack']);if(_0x1538e5['name']){delete _0x1538e5[_0x1fc1('0x22')];}_0x31893c['status'](_0x2f85c7)[_0x1fc1('0x23')](_0x1538e5);};}exports['index']=function(_0x2ea2c7,_0x2dc48f){var _0x299524={},_0x47b0cc={},_0x1fb988={'count':0x0,'rows':[]};var _0x22c369=_[_0x1fc1('0x24')](db['CmCustomField'][_0x1fc1('0x25')],function(_0x403606){return{'name':_0x403606[_0x1fc1('0x26')],'type':_0x403606[_0x1fc1('0x27')][_0x1fc1('0x28')]};});_0x47b0cc[_0x1fc1('0x29')]=_[_0x1fc1('0x2a')](_[_0x1fc1('0x24')](_0x22c369,_0x1fc1('0x22')),[_0x1fc1('0x22')]);_0x47b0cc[_0x1fc1('0x2b')]=_[_0x1fc1('0x2c')](_0x2ea2c7[_0x1fc1('0x2b')]);_0x47b0cc[_0x1fc1('0x2d')]=_['intersection'](_0x47b0cc[_0x1fc1('0x29')],_0x47b0cc['query']);_0x299524[_0x1fc1('0x2e')]=_[_0x1fc1('0x2f')](_0x47b0cc[_0x1fc1('0x29')],qs[_0x1fc1('0x30')](_0x2ea2c7[_0x1fc1('0x2b')][_0x1fc1('0x30')]));_0x299524['attributes']=_0x299524['attributes'][_0x1fc1('0x31')]?_0x299524[_0x1fc1('0x2e')]:_0x47b0cc[_0x1fc1('0x29')];if(!_0x2ea2c7[_0x1fc1('0x2b')][_0x1fc1('0x32')]('nolimit')){_0x299524[_0x1fc1('0x1b')]=qs['limit'](_0x2ea2c7['query'][_0x1fc1('0x1b')]);_0x299524[_0x1fc1('0x19')]=qs[_0x1fc1('0x19')](_0x2ea2c7['query'][_0x1fc1('0x19')]);}_0x299524[_0x1fc1('0x33')]=qs[_0x1fc1('0x34')](_0x2ea2c7[_0x1fc1('0x2b')]['sort']);_0x299524[_0x1fc1('0x35')]=qs[_0x1fc1('0x2d')](_[_0x1fc1('0x36')](_0x2ea2c7['query'],_0x47b0cc[_0x1fc1('0x2d')]),_0x22c369);if(_0x2ea2c7['query']['filter']){_0x299524[_0x1fc1('0x35')]=_['merge'](_0x299524[_0x1fc1('0x35')],{'$or':_[_0x1fc1('0x24')](_0x22c369,function(_0x277058){if(_0x277058[_0x1fc1('0x27')]!=='VIRTUAL'){var _0x38e066={};_0x38e066[_0x277058[_0x1fc1('0x22')]]={'$like':'%'+_0x2ea2c7[_0x1fc1('0x2b')]['filter']+'%'};return _0x38e066;}})});}_0x299524=_[_0x1fc1('0x37')]({},_0x299524,_0x2ea2c7['options']);var _0x3bade8={'where':_0x299524[_0x1fc1('0x35')]};return db[_0x1fc1('0x38')][_0x1fc1('0x1c')](_0x3bade8)['then'](function(_0xea9951){_0x1fb988[_0x1fc1('0x1c')]=_0xea9951;if(_0x2ea2c7[_0x1fc1('0x2b')][_0x1fc1('0x39')]){_0x299524[_0x1fc1('0x3a')]=[{'all':!![]}];}return db['CmCustomField'][_0x1fc1('0x3b')](_0x299524);})['then'](function(_0x1960b3){_0x1fb988[_0x1fc1('0x3c')]=_0x1960b3;return _0x1fb988;})[_0x1fc1('0x20')](respondWithFilteredResult(_0x2dc48f,_0x299524))['catch'](handleError(_0x2dc48f,null));};exports[_0x1fc1('0x3d')]=function(_0x7d2453,_0x2b5dbb){var _0x448e92={'raw':!![],'where':{'id':_0x7d2453[_0x1fc1('0x3e')]['id']}},_0x417a24={};_0x417a24['model']=_[_0x1fc1('0x2c')](db[_0x1fc1('0x38')][_0x1fc1('0x25')]);_0x417a24[_0x1fc1('0x2b')]=_[_0x1fc1('0x2c')](_0x7d2453[_0x1fc1('0x2b')]);_0x417a24[_0x1fc1('0x2d')]=_[_0x1fc1('0x2f')](_0x417a24['model'],_0x417a24[_0x1fc1('0x2b')]);_0x448e92[_0x1fc1('0x2e')]=_[_0x1fc1('0x2f')](_0x417a24[_0x1fc1('0x29')],qs[_0x1fc1('0x30')](_0x7d2453['query'][_0x1fc1('0x30')]));_0x448e92[_0x1fc1('0x2e')]=_0x448e92['attributes']['length']?_0x448e92[_0x1fc1('0x2e')]:_0x417a24['model'];if(_0x7d2453['query'][_0x1fc1('0x39')]){_0x448e92[_0x1fc1('0x3a')]=[{'all':!![]}];}_0x448e92=_['merge']({},_0x448e92,_0x7d2453[_0x1fc1('0x3f')]);return db[_0x1fc1('0x38')]['find'](_0x448e92)['then'](handleEntityNotFound(_0x2b5dbb,null))[_0x1fc1('0x20')](respondWithResult(_0x2b5dbb,null))[_0x1fc1('0x40')](handleError(_0x2b5dbb,null));};exports[_0x1fc1('0x41')]=function(_0x33266f,_0x48804a){if(_0x33266f[_0x1fc1('0x42')]['id']){delete _0x33266f[_0x1fc1('0x42')]['id'];}return db[_0x1fc1('0x38')][_0x1fc1('0x43')]({'where':{'id':_0x33266f[_0x1fc1('0x3e')]['id']}})['then'](handleEntityNotFound(_0x48804a,null))[_0x1fc1('0x20')](saveUpdates(_0x33266f['body'],null))[_0x1fc1('0x20')](respondWithResult(_0x48804a,null))[_0x1fc1('0x40')](handleError(_0x48804a,null));};exports[_0x1fc1('0x21')]=function(_0x5af349,_0x299b0b){return db[_0x1fc1('0x38')]['find']({'where':{'id':_0x5af349['params']['id']}})['then'](handleEntityNotFound(_0x299b0b,null))[_0x1fc1('0x20')](removeEntity(_0x299b0b,null))[_0x1fc1('0x40')](handleError(_0x299b0b,null));};exports['create']=function(_0x27746,_0x3c068c){var _0xd46c97;return db['sequelize'][_0x1fc1('0x44')](function(_0x5615bd){return db[_0x1fc1('0x38')][_0x1fc1('0x45')](_0x27746[_0x1fc1('0x42')],{'transaction':_0x5615bd})['then'](function(_0x56a7ae){_0xd46c97=_0x56a7ae;var _0x71aafe={'type':db[_0x1fc1('0x46')][_0x1fc1('0x47')],'transaction':_0x5615bd};switch(_0x27746[_0x1fc1('0x42')][_0x1fc1('0x27')]){case'text':_0x71aafe[_0x1fc1('0x27')]=db[_0x1fc1('0x46')][_0x1fc1('0x47')];break;case'number':_0x71aafe[_0x1fc1('0x27')]=db[_0x1fc1('0x46')][_0x1fc1('0x48')];break;case _0x1fc1('0x49'):_0x71aafe[_0x1fc1('0x27')]=db['Sequelize'][_0x1fc1('0x4a')];_0x71aafe[_0x1fc1('0x4b')]=![];break;default:}return db[_0x1fc1('0x4c')]['queryInterface'][_0x1fc1('0x4d')]('cm_contacts',util[_0x1fc1('0x4e')](_0x1fc1('0x4f'),_0xd46c97['id']),_0x71aafe);})[_0x1fc1('0x20')](function(){return _0xd46c97;});})['then'](respondWithResult(_0x3c068c,0xc9))[_0x1fc1('0x40')](handleError(_0x3c068c,null));};
\ No newline at end of file
index 77b0614..2cf92bc 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x25f8=['cm_custom_fields','lodash','util','../../config/logger','api','moment','bluebird','request-promise','path','rimraf','../../config/environment','./cmCustomField.attributes','define','CmCustomField'];(function(_0x4b7a9b,_0x4d850b){var _0x8ae321=function(_0x50a40d){while(--_0x50a40d){_0x4b7a9b['push'](_0x4b7a9b['shift']());}};_0x8ae321(++_0x4d850b);}(_0x25f8,0x127));var _0x825f=function(_0x57b54c,_0x54ce0d){_0x57b54c=_0x57b54c-0x0;var _0x59cc19=_0x25f8[_0x57b54c];return _0x59cc19;};'use strict';var _=require(_0x825f('0x0'));var util=require(_0x825f('0x1'));var logger=require(_0x825f('0x2'))(_0x825f('0x3'));var moment=require(_0x825f('0x4'));var BPromise=require(_0x825f('0x5'));var rp=require(_0x825f('0x6'));var fs=require('fs');var path=require(_0x825f('0x7'));var rimraf=require(_0x825f('0x8'));var config=require(_0x825f('0x9'));var attributes=require(_0x825f('0xa'));module['exports']=function(_0x1b5051,_0x5f4b49){return _0x1b5051[_0x825f('0xb')](_0x825f('0xc'),attributes,{'tableName':_0x825f('0xd'),'paranoid':!![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x9ff8=['exports','util','../../config/logger','moment','request-promise','path','rimraf','./cmCustomField.attributes'];(function(_0x4abee9,_0x2cfb5d){var _0x5bcf99=function(_0x2687bc){while(--_0x2687bc){_0x4abee9['push'](_0x4abee9['shift']());}};_0x5bcf99(++_0x2cfb5d);}(_0x9ff8,0x1f1));var _0x89ff=function(_0x158688,_0xf5160f){_0x158688=_0x158688-0x0;var _0xf71074=_0x9ff8[_0x158688];return _0xf71074;};'use strict';var _=require('lodash');var util=require(_0x89ff('0x0'));var logger=require(_0x89ff('0x1'))('api');var moment=require(_0x89ff('0x2'));var BPromise=require('bluebird');var rp=require(_0x89ff('0x3'));var fs=require('fs');var path=require(_0x89ff('0x4'));var rimraf=require(_0x89ff('0x5'));var config=require('../../config/environment');var attributes=require(_0x89ff('0x6'));module[_0x89ff('0x7')]=function(_0x289444,_0x38de23){return _0x289444['define']('CmCustomField',attributes,{'tableName':'cm_custom_fields','paranoid':!![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index eb9501a..7e5bb9b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x74ae=['client','http','request','info','CmCustomField,\x20%s,\x20%s','debug','CmCustomField,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','message','catch','lodash','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','jayson/promise'];(function(_0x36d57f,_0x2f9118){var _0x3f93fb=function(_0x567b58){while(--_0x567b58){_0x36d57f['push'](_0x36d57f['shift']());}};_0x3f93fb(++_0x2f9118);}(_0x74ae,0xfe));var _0xe74a=function(_0x93872e,_0x37f470){_0x93872e=_0x93872e-0x0;var _0x4a6ff1=_0x74ae[_0x93872e];return _0x4a6ff1;};'use strict';var _=require(_0xe74a('0x0'));var util=require('util');var moment=require(_0xe74a('0x1'));var BPromise=require(_0xe74a('0x2'));var rs=require(_0xe74a('0x3'));var fs=require('fs');var Redis=require(_0xe74a('0x4'));var db=require(_0xe74a('0x5'))['db'];var utils=require(_0xe74a('0x6'));var logger=require(_0xe74a('0x7'))(_0xe74a('0x8'));var config=require('../../config/environment');var jayson=require(_0xe74a('0x9'));var client=jayson[_0xe74a('0xa')][_0xe74a('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x4f1b4e,_0x107d98,_0x3b08d5){return new BPromise(function(_0x5f2968,_0x5c6e1){return client[_0xe74a('0xc')](_0x4f1b4e,_0x3b08d5)['then'](function(_0x347817){logger[_0xe74a('0xd')](_0xe74a('0xe'),_0x107d98,'request\x20sent');logger[_0xe74a('0xf')](_0xe74a('0x10'),_0x107d98,_0xe74a('0x11'),JSON[_0xe74a('0x12')](_0x347817));if(_0x347817[_0xe74a('0x13')]){if(_0x347817[_0xe74a('0x13')]['code']===0x1f4){logger[_0xe74a('0x13')](_0xe74a('0xe'),_0x107d98,_0x347817['error'][_0xe74a('0x14')]);return _0x5c6e1(_0x347817['error']['message']);}logger[_0xe74a('0x13')](_0xe74a('0xe'),_0x107d98,_0x347817[_0xe74a('0x13')][_0xe74a('0x14')]);return _0x5f2968(_0x347817[_0xe74a('0x13')][_0xe74a('0x14')]);}else{logger[_0xe74a('0xd')](_0xe74a('0xe'),_0x107d98,_0xe74a('0x11'));_0x5f2968(_0x347817['result'][_0xe74a('0x14')]);}})[_0xe74a('0x15')](function(_0x27e305){logger[_0xe74a('0x13')](_0xe74a('0xe'),_0x107d98,_0x27e305);_0x5c6e1(_0x27e305);});});}
\ No newline at end of file
+var _0x1a49=['ioredis','../../config/utils','rpc','../../config/environment','http','request','info','CmCustomField,\x20%s,\x20%s','request\x20sent','debug','CmCustomField,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','lodash','randomstring'];(function(_0x3a785b,_0xed26f9){var _0x54b2b8=function(_0x1e0b15){while(--_0x1e0b15){_0x3a785b['push'](_0x3a785b['shift']());}};_0x54b2b8(++_0xed26f9);}(_0x1a49,0x1c6));var _0x91a4=function(_0x1c477a,_0x24c0d1){_0x1c477a=_0x1c477a-0x0;var _0x4c56ac=_0x1a49[_0x1c477a];return _0x4c56ac;};'use strict';var _=require(_0x91a4('0x0'));var util=require('util');var moment=require('moment');var BPromise=require('bluebird');var rs=require(_0x91a4('0x1'));var fs=require('fs');var Redis=require(_0x91a4('0x2'));var db=require('../../mysqldb')['db'];var utils=require(_0x91a4('0x3'));var logger=require('../../config/logger')(_0x91a4('0x4'));var config=require(_0x91a4('0x5'));var jayson=require('jayson/promise');var client=jayson['client'][_0x91a4('0x6')]({'port':0x232a});function respondWithRpcPromise(_0xf91193,_0x38f575,_0x59955f){return new BPromise(function(_0x46f219,_0x3c30ae){return client[_0x91a4('0x7')](_0xf91193,_0x59955f)['then'](function(_0x443618){logger[_0x91a4('0x8')](_0x91a4('0x9'),_0x38f575,_0x91a4('0xa'));logger[_0x91a4('0xb')](_0x91a4('0xc'),_0x38f575,'request\x20sent',JSON[_0x91a4('0xd')](_0x443618));if(_0x443618['error']){if(_0x443618[_0x91a4('0xe')][_0x91a4('0xf')]===0x1f4){logger[_0x91a4('0xe')]('CmCustomField,\x20%s,\x20%s',_0x38f575,_0x443618[_0x91a4('0xe')][_0x91a4('0x10')]);return _0x3c30ae(_0x443618[_0x91a4('0xe')][_0x91a4('0x10')]);}logger[_0x91a4('0xe')]('CmCustomField,\x20%s,\x20%s',_0x38f575,_0x443618[_0x91a4('0xe')]['message']);return _0x46f219(_0x443618[_0x91a4('0xe')][_0x91a4('0x10')]);}else{logger['info'](_0x91a4('0x9'),_0x38f575,_0x91a4('0xa'));_0x46f219(_0x443618[_0x91a4('0x11')][_0x91a4('0x10')]);}})[_0x91a4('0x12')](function(_0x31b0b1){logger[_0x91a4('0xe')](_0x91a4('0x9'),_0x38f575,_0x31b0b1);_0x3c30ae(_0x31b0b1);});});}
\ No newline at end of file
index b1cb410..68f53dd 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9ab0=['show','post','create','update','delete','exports','multer','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','isAuthenticated','index','get','/:id'];(function(_0x5f5df5,_0x2f41c8){var _0x511d12=function(_0x33bbd6){while(--_0x33bbd6){_0x5f5df5['push'](_0x5f5df5['shift']());}};_0x511d12(++_0x2f41c8);}(_0x9ab0,0x195));var _0x09ab=function(_0x4a7ed2,_0x1411cd){_0x4a7ed2=_0x4a7ed2-0x0;var _0x14733d=_0x9ab0[_0x4a7ed2];return _0x14733d;};'use strict';var multer=require(_0x09ab('0x0'));var util=require(_0x09ab('0x1'));var path=require(_0x09ab('0x2'));var timeout=require(_0x09ab('0x3'));var express=require(_0x09ab('0x4'));var router=express[_0x09ab('0x5')]();var fs_extra=require(_0x09ab('0x6'));var auth=require(_0x09ab('0x7'));var interaction=require(_0x09ab('0x8'));var config=require('../../config/environment');var controller=require('./cmCustomField.controller');router['get']('/',auth[_0x09ab('0x9')](),controller[_0x09ab('0xa')]);router[_0x09ab('0xb')](_0x09ab('0xc'),auth[_0x09ab('0x9')](),controller[_0x09ab('0xd')]);router[_0x09ab('0xe')]('/',auth[_0x09ab('0x9')](),controller[_0x09ab('0xf')]);router['put'](_0x09ab('0xc'),auth['isAuthenticated'](),controller[_0x09ab('0x10')]);router[_0x09ab('0x11')](_0x09ab('0xc'),auth['isAuthenticated'](),controller['destroy']);module[_0x09ab('0x12')]=router;
\ No newline at end of file
+var _0x10eb=['../../components/interaction/service','../../config/environment','isAuthenticated','index','get','/:id','put','update','delete','destroy','exports','multer','path','connect-timeout','express','Router','fs-extra'];(function(_0xf24dba,_0x4b18e2){var _0x4cca5c=function(_0x302bd4){while(--_0x302bd4){_0xf24dba['push'](_0xf24dba['shift']());}};_0x4cca5c(++_0x4b18e2);}(_0x10eb,0x71));var _0xb10e=function(_0x441e3a,_0x4fd2b1){_0x441e3a=_0x441e3a-0x0;var _0x55b3b8=_0x10eb[_0x441e3a];return _0x55b3b8;};'use strict';var multer=require(_0xb10e('0x0'));var util=require('util');var path=require(_0xb10e('0x1'));var timeout=require(_0xb10e('0x2'));var express=require(_0xb10e('0x3'));var router=express[_0xb10e('0x4')]();var fs_extra=require(_0xb10e('0x5'));var auth=require('../../components/auth/service');var interaction=require(_0xb10e('0x6'));var config=require(_0xb10e('0x7'));var controller=require('./cmCustomField.controller');router['get']('/',auth[_0xb10e('0x8')](),controller[_0xb10e('0x9')]);router[_0xb10e('0xa')](_0xb10e('0xb'),auth['isAuthenticated'](),controller['show']);router['post']('/',auth['isAuthenticated'](),controller['create']);router[_0xb10e('0xc')](_0xb10e('0xb'),auth[_0xb10e('0x8')](),controller[_0xb10e('0xd')]);router[_0xb10e('0xe')](_0xb10e('0xb'),auth[_0xb10e('0x8')](),controller[_0xb10e('0xf')]);module[_0xb10e('0x10')]=router;
\ No newline at end of file
index b1cf76f..320122f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xad16=['BOOLEAN','contactListQueue','moment','sequelize','exports','STRING','DATE','format','YYYY-MM-DD\x20HH:mm:ss','INTEGER'];(function(_0x547cd6,_0x2fd0b7){var _0x1fdc62=function(_0x249458){while(--_0x249458){_0x547cd6['push'](_0x547cd6['shift']());}};_0x1fdc62(++_0x2fd0b7);}(_0xad16,0xb6));var _0x6ad1=function(_0x21d2e9,_0x1badc4){_0x21d2e9=_0x21d2e9-0x0;var _0x29ad80=_0xad16[_0x21d2e9];return _0x29ad80;};'use strict';var moment=require(_0x6ad1('0x0'));var Sequelize=require(_0x6ad1('0x1'));module[_0x6ad1('0x2')]={'phone':{'type':Sequelize[_0x6ad1('0x3')],'allowNull':![]},'active':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'scheduledat':{'type':Sequelize[_0x6ad1('0x4')],'defaultValue':moment()[_0x6ad1('0x5')](_0x6ad1('0x6'))},'countbusyretry':{'type':Sequelize[_0x6ad1('0x7')],'defaultValue':0x0},'countcongestionretry':{'type':Sequelize[_0x6ad1('0x7')],'defaultValue':0x0},'countnoanswerretry':{'type':Sequelize[_0x6ad1('0x7')],'defaultValue':0x0},'callback':{'type':Sequelize[_0x6ad1('0x8')],'defaultValue':![]},'callbackuniqueid':{'type':Sequelize[_0x6ad1('0x3')],'defaultValue':null},'callbackat':{'type':Sequelize[_0x6ad1('0x4')]},'priority':{'type':Sequelize[_0x6ad1('0x7')](0x2)['UNSIGNED'],'defaultValue':0x2,'validate':{'min':0x0,'max':0x4}},'recallme':{'type':Sequelize[_0x6ad1('0x8')],'defaultValue':![]},'ContactId':{'type':Sequelize['INTEGER'],'unique':_0x6ad1('0x9')},'ListId':{'type':Sequelize[_0x6ad1('0x7')],'unique':_0x6ad1('0x9')},'UserId':{'type':Sequelize[_0x6ad1('0x7')]},'VoiceQueueId':{'type':Sequelize[_0x6ad1('0x7')],'unique':_0x6ad1('0x9')},'CampaignId':{'type':Sequelize['INTEGER']},'countnosuchnumberretry':{'type':Sequelize[_0x6ad1('0x7')],'defaultValue':0x0},'countdropretry':{'type':Sequelize[_0x6ad1('0x7')],'defaultValue':0x0},'countabandonedretry':{'type':Sequelize[_0x6ad1('0x7')],'defaultValue':0x0},'countmachineretry':{'type':Sequelize[_0x6ad1('0x7')],'defaultValue':0x0},'countagentrejectretry':{'type':Sequelize[_0x6ad1('0x7')],'defaultValue':0x0}};
\ No newline at end of file
+var _0xcd80=['BOOLEAN','UNSIGNED','contactListQueue','moment','sequelize','exports','STRING','DATE','format','YYYY-MM-DD\x20HH:mm:ss','INTEGER'];(function(_0x29e608,_0x1a6ccc){var _0x5d1d75=function(_0x15a6e4){while(--_0x15a6e4){_0x29e608['push'](_0x29e608['shift']());}};_0x5d1d75(++_0x1a6ccc);}(_0xcd80,0xdf));var _0x0cd8=function(_0xb25c71,_0x184611){_0xb25c71=_0xb25c71-0x0;var _0x4ad3a4=_0xcd80[_0xb25c71];return _0x4ad3a4;};'use strict';var moment=require(_0x0cd8('0x0'));var Sequelize=require(_0x0cd8('0x1'));module[_0x0cd8('0x2')]={'phone':{'type':Sequelize[_0x0cd8('0x3')],'allowNull':![]},'active':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'scheduledat':{'type':Sequelize[_0x0cd8('0x4')],'defaultValue':moment()[_0x0cd8('0x5')](_0x0cd8('0x6'))},'countbusyretry':{'type':Sequelize[_0x0cd8('0x7')],'defaultValue':0x0},'countcongestionretry':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'countnoanswerretry':{'type':Sequelize[_0x0cd8('0x7')],'defaultValue':0x0},'callback':{'type':Sequelize[_0x0cd8('0x8')],'defaultValue':![]},'callbackuniqueid':{'type':Sequelize[_0x0cd8('0x3')],'defaultValue':null},'callbackat':{'type':Sequelize[_0x0cd8('0x4')]},'priority':{'type':Sequelize[_0x0cd8('0x7')](0x2)[_0x0cd8('0x9')],'defaultValue':0x2,'validate':{'min':0x0,'max':0x4}},'recallme':{'type':Sequelize[_0x0cd8('0x8')],'defaultValue':![]},'ContactId':{'type':Sequelize[_0x0cd8('0x7')],'unique':_0x0cd8('0xa')},'ListId':{'type':Sequelize[_0x0cd8('0x7')],'unique':_0x0cd8('0xa')},'UserId':{'type':Sequelize[_0x0cd8('0x7')]},'VoiceQueueId':{'type':Sequelize['INTEGER'],'unique':_0x0cd8('0xa')},'CampaignId':{'type':Sequelize[_0x0cd8('0x7')]},'countnosuchnumberretry':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'countdropretry':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'countabandonedretry':{'type':Sequelize[_0x0cd8('0x7')],'defaultValue':0x0},'countmachineretry':{'type':Sequelize[_0x0cd8('0x7')],'defaultValue':0x0},'countagentrejectretry':{'type':Sequelize[_0x0cd8('0x7')],'defaultValue':0x0}};
\ No newline at end of file
index b4ae39b..6c623cd 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x481d=['describe','VoiceQueueId','CampaignId','Campaign','omit','dataValues','updatedAt','state','statedesc','campaign','membername','user','UserId','deleted','YYYY-MM-DD\x20HH:mm:ss','campaigntype','queue','ivr','CmContact','firstName','isNil','calleridname','lastName','finally','CmHopperFinal','getPreview','outbound','preview','dialOrderByScheduledAt','sequelize','transaction','format','direction','isEmpty','hopperIds','priority','ASC','scheduledAt','DESC','literal','COALESCE(CmHopper.UserId,\x200)\x20ASC','findOne','scheduledat','LOCK','UPDATE','Contact','CmCompany','Company','CmList','List','VoiceQueue','Queue','dialActive','getVoiceQueues','isNumber','CmHopper,\x20%s,\x20%s,\x20%s','eml-format','rimraf','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','ejs','fs-extra','lodash','crypto','jsforce','desk.js','to-csv','querystring','papaparse','ioredis','../../components/parsers/qs','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','json','offset','undefined','limit','count','set','Content-Range','apply','save','update','then','destroy','error','name','map','CmHopper','fieldName','key','model','keys','query','filters','intersection','concat','$and','$or','$gt','$gte','$ne','$eq','$not','$between','$notBetween','$in','$like','$notLike','$notILike','$overlap','$contains','$contained','$any','fields','attributes','hasOwnProperty','order','sort','where','filter','merge','VIRTUAL','options','findAll','rows','show','length','include','find','catch','create','body','params'];(function(_0x4b2dea,_0x4b178d){var _0x859d76=function(_0x52acd0){while(--_0x52acd0){_0x4b2dea['push'](_0x4b2dea['shift']());}};_0x859d76(++_0x4b178d);}(_0x481d,0x158));var _0xd481=function(_0x14477e,_0x44d4da){_0x14477e=_0x14477e-0x0;var _0x5d4a05=_0x481d[_0x14477e];return _0x5d4a05;};'use strict';var emlformat=require(_0xd481('0x0'));var rimraf=require(_0xd481('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0xd481('0x2'));var rp=require(_0xd481('0x3'));var moment=require(_0xd481('0x4'));var BPromise=require(_0xd481('0x5'));var Mustache=require(_0xd481('0x6'));var util=require(_0xd481('0x7'));var path=require(_0xd481('0x8'));var sox=require('sox');var csv=require('to-csv');var ejs=require(_0xd481('0x9'));var fs=require('fs');var fs_extra=require(_0xd481('0xa'));var _=require(_0xd481('0xb'));var squel=require('squel');var crypto=require(_0xd481('0xc'));var jsforce=require(_0xd481('0xd'));var deskjs=require(_0xd481('0xe'));var toCsv=require(_0xd481('0xf'));var querystring=require(_0xd481('0x10'));var Papa=require(_0xd481('0x11'));var Redis=require(_0xd481('0x12'));var authService=require('../../components/auth/service');var qs=require(_0xd481('0x13'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require('../../config/license/hardware');var logger=require('../../config/logger')('api');var utils=require(_0xd481('0x14'));var config=require(_0xd481('0x15'));var licenseUtil=require(_0xd481('0x16'));var db=require(_0xd481('0x17'))['db'];function respondWithStatusCode(_0x56bb95,_0x19169d){_0x19169d=_0x19169d||0xcc;return function(_0x39692d){if(_0x39692d){return _0x56bb95[_0xd481('0x18')](_0x19169d);}return _0x56bb95[_0xd481('0x19')](_0x19169d)[_0xd481('0x1a')]();};}function respondWithResult(_0x515cb6,_0x35ce89){_0x35ce89=_0x35ce89||0xc8;return function(_0x57bd98){if(_0x57bd98){return _0x515cb6[_0xd481('0x19')](_0x35ce89)[_0xd481('0x1b')](_0x57bd98);}};}function respondWithFilteredResult(_0x16b2a9,_0x5b408b){return function(_0x29ae76){if(_0x29ae76){var _0x36c47d=typeof _0x5b408b[_0xd481('0x1c')]===_0xd481('0x1d')&&typeof _0x5b408b[_0xd481('0x1e')]==='undefined';var _0x5c64d0=_0x29ae76[_0xd481('0x1f')];var _0x1ab007=_0x36c47d?0x0:_0x5b408b[_0xd481('0x1c')];var _0x4f147f=_0x36c47d?_0x29ae76[_0xd481('0x1f')]:_0x5b408b[_0xd481('0x1c')]+_0x5b408b[_0xd481('0x1e')];var _0x10e182;if(_0x4f147f>=_0x5c64d0){_0x4f147f=_0x5c64d0;_0x10e182=0xc8;}else{_0x10e182=0xce;}_0x16b2a9[_0xd481('0x19')](_0x10e182);return _0x16b2a9[_0xd481('0x20')](_0xd481('0x21'),_0x1ab007+'-'+_0x4f147f+'/'+_0x5c64d0)[_0xd481('0x1b')](_0x29ae76);}return null;};}function patchUpdates(_0x1ab0a1){return function(_0x1e3927){try{jsonpatch[_0xd481('0x22')](_0x1e3927,_0x1ab0a1,!![]);}catch(_0x3180f8){return BPromise['reject'](_0x3180f8);}return _0x1e3927[_0xd481('0x23')]();};}function saveUpdates(_0x52c7f8,_0x31804a){return function(_0xbe5da){if(_0xbe5da){return _0xbe5da[_0xd481('0x24')](_0x52c7f8)[_0xd481('0x25')](function(_0xebbce1){return _0xebbce1;});}return null;};}function removeEntity(_0x18c8cc,_0x321385){return function(_0x570105){if(_0x570105){return _0x570105[_0xd481('0x26')]()[_0xd481('0x25')](function(){_0x18c8cc[_0xd481('0x19')](0xcc)[_0xd481('0x1a')]();});}};}function handleEntityNotFound(_0x1bb865,_0x333c5e){return function(_0x285b5c){if(!_0x285b5c){_0x1bb865['sendStatus'](0x194);}return _0x285b5c;};}function handleError(_0xadf546,_0x3a0880){_0x3a0880=_0x3a0880||0x1f4;return function(_0x95b187){logger[_0xd481('0x27')](_0x95b187['stack']);if(_0x95b187[_0xd481('0x28')]){delete _0x95b187[_0xd481('0x28')];}_0xadf546[_0xd481('0x19')](_0x3a0880)['send'](_0x95b187);};}exports['index']=function(_0x11243a,_0x17ca93){var _0x2b2372={},_0x2d8841={},_0x57de03={'count':0x0,'rows':[]};var _0x4c6946=_[_0xd481('0x29')](db[_0xd481('0x2a')]['rawAttributes'],function(_0x22288f){return{'name':_0x22288f[_0xd481('0x2b')],'type':_0x22288f['type'][_0xd481('0x2c')]};});_0x2d8841[_0xd481('0x2d')]=_[_0xd481('0x29')](_0x4c6946,_0xd481('0x28'));_0x2d8841['query']=_[_0xd481('0x2e')](_0x11243a[_0xd481('0x2f')]);_0x2d8841[_0xd481('0x30')]=_[_0xd481('0x31')](_0x2d8841[_0xd481('0x2d')],_0x2d8841[_0xd481('0x2f')]);_0x2d8841[_0xd481('0x30')]=_[_0xd481('0x32')](_0x2d8841[_0xd481('0x30')],[_0xd481('0x33'),_0xd481('0x34'),_0xd481('0x35'),_0xd481('0x36'),'$lt','$lte',_0xd481('0x37'),_0xd481('0x38'),_0xd481('0x39'),_0xd481('0x3a'),_0xd481('0x3b'),_0xd481('0x3c'),'$notIn',_0xd481('0x3d'),_0xd481('0x3e'),'$iLike',_0xd481('0x3f'),_0xd481('0x3d'),_0xd481('0x40'),_0xd481('0x41'),_0xd481('0x42'),_0xd481('0x43')]);_0x2b2372['attributes']=_['intersection'](_0x2d8841[_0xd481('0x2d')],qs[_0xd481('0x44')](_0x11243a[_0xd481('0x2f')]['fields']));_0x2b2372['attributes']=_0x2b2372[_0xd481('0x45')]['length']?_0x2b2372[_0xd481('0x45')]:_0x2d8841[_0xd481('0x2d')];if(!_0x11243a[_0xd481('0x2f')][_0xd481('0x46')]('nolimit')){_0x2b2372[_0xd481('0x1e')]=qs[_0xd481('0x1e')](_0x11243a[_0xd481('0x2f')][_0xd481('0x1e')]);_0x2b2372[_0xd481('0x1c')]=qs[_0xd481('0x1c')](_0x11243a[_0xd481('0x2f')][_0xd481('0x1c')]);}_0x2b2372[_0xd481('0x47')]=qs[_0xd481('0x48')](_0x11243a[_0xd481('0x2f')]['sort']);_0x2b2372[_0xd481('0x49')]=qs[_0xd481('0x30')](_['pick'](_0x11243a[_0xd481('0x2f')],_0x2d8841[_0xd481('0x30')]),_0x4c6946);if(_0x11243a['query'][_0xd481('0x4a')]){_0x2b2372[_0xd481('0x49')]=_[_0xd481('0x4b')](_0x2b2372[_0xd481('0x49')],{'$or':_[_0xd481('0x29')](_0x4c6946,function(_0x317c43){if(_0x317c43['type']!==_0xd481('0x4c')){var _0x2ba915={};_0x2ba915[_0x317c43['name']]={'$like':'%'+_0x11243a[_0xd481('0x2f')][_0xd481('0x4a')]+'%'};return _0x2ba915;}})});}_0x2b2372=_[_0xd481('0x4b')]({},_0x2b2372,_0x11243a[_0xd481('0x4d')]);var _0xfb74db={'where':_0x2b2372['where']};return db[_0xd481('0x2a')][_0xd481('0x1f')](_0xfb74db)[_0xd481('0x25')](function(_0x32eb7f){_0x57de03[_0xd481('0x1f')]=_0x32eb7f;if(_0x11243a[_0xd481('0x2f')]['includeAll']){_0x2b2372['include']=[{'all':!![]}];}return db[_0xd481('0x2a')][_0xd481('0x4e')](_0x2b2372);})['then'](function(_0x9de438){_0x57de03[_0xd481('0x4f')]=_0x9de438;return _0x57de03;})[_0xd481('0x25')](respondWithFilteredResult(_0x17ca93,_0x2b2372))['catch'](handleError(_0x17ca93,null));};exports[_0xd481('0x50')]=function(_0x1852a4,_0x14868e){var _0x4a7ca1={'raw':!![],'where':{'id':_0x1852a4['params']['id']}},_0x1ba151={};_0x1ba151[_0xd481('0x2d')]=_[_0xd481('0x2e')](db['CmHopper']['rawAttributes']);_0x1ba151['query']=_[_0xd481('0x2e')](_0x1852a4[_0xd481('0x2f')]);_0x1ba151[_0xd481('0x30')]=_[_0xd481('0x31')](_0x1ba151[_0xd481('0x2d')],_0x1ba151['query']);_0x4a7ca1[_0xd481('0x45')]=_[_0xd481('0x31')](_0x1ba151[_0xd481('0x2d')],qs[_0xd481('0x44')](_0x1852a4[_0xd481('0x2f')]['fields']));_0x4a7ca1['attributes']=_0x4a7ca1[_0xd481('0x45')][_0xd481('0x51')]?_0x4a7ca1[_0xd481('0x45')]:_0x1ba151[_0xd481('0x2d')];if(_0x1852a4[_0xd481('0x2f')]['includeAll']){_0x4a7ca1[_0xd481('0x52')]=[{'all':!![]}];}_0x4a7ca1=_[_0xd481('0x4b')]({},_0x4a7ca1,_0x1852a4[_0xd481('0x4d')]);return db['CmHopper'][_0xd481('0x53')](_0x4a7ca1)[_0xd481('0x25')](handleEntityNotFound(_0x14868e,null))['then'](respondWithResult(_0x14868e,null))[_0xd481('0x54')](handleError(_0x14868e,null));};exports[_0xd481('0x55')]=function(_0x219ec5,_0x254c13){return db['CmHopper'][_0xd481('0x55')](_0x219ec5['body'],{})[_0xd481('0x25')](respondWithResult(_0x254c13,0xc9))[_0xd481('0x54')](handleError(_0x254c13,null));};exports['update']=function(_0x1b0ea9,_0x31685f){if(_0x1b0ea9[_0xd481('0x56')]['id']){delete _0x1b0ea9['body']['id'];}return db[_0xd481('0x2a')][_0xd481('0x53')]({'where':{'id':_0x1b0ea9[_0xd481('0x57')]['id']}})[_0xd481('0x25')](handleEntityNotFound(_0x31685f,null))[_0xd481('0x25')](saveUpdates(_0x1b0ea9[_0xd481('0x56')],null))['then'](respondWithResult(_0x31685f,null))[_0xd481('0x54')](handleError(_0x31685f,null));};exports['describe']=function(_0x570908,_0x52931c){return db[_0xd481('0x2a')][_0xd481('0x58')]()[_0xd481('0x25')](respondWithResult(_0x52931c,null))['catch'](handleError(_0x52931c,null));};exports[_0xd481('0x26')]=function(_0x163cbf,_0x16e862){var _0x394e5a;return db[_0xd481('0x2a')][_0xd481('0x53')]({'where':{'id':_0x163cbf[_0xd481('0x57')]['id']}})[_0xd481('0x25')](handleEntityNotFound(_0x16e862,null))[_0xd481('0x25')](function(_0x3d2d2d){if(_0x3d2d2d){return _0x3d2d2d[_0xd481('0x26')]()[_0xd481('0x25')](function(_0x4021cb){return _0x4021cb;});}})['then'](function(_0x86b21c){_0x394e5a=_0x86b21c;if(_0x86b21c){if(_0x86b21c[_0xd481('0x59')]||_0x86b21c[_0xd481('0x5a')]){return db[_0x86b21c[_0xd481('0x59')]?'VoiceQueue':_0xd481('0x5b')][_0xd481('0x53')]({'where':{'id':_0x86b21c['VoiceQueueId']?_0x86b21c['VoiceQueueId']:_0x86b21c[_0xd481('0x5a')]},'attributes':['id',_0xd481('0x28')],'raw':!![]});}}})[_0xd481('0x25')](function(_0x260c0b){var _0xd33e86={};if(_0x260c0b){_[_0xd481('0x4b')](_0xd33e86,_[_0xd481('0x5c')](_0x394e5a[_0xd481('0x5d')],['createdAt',_0xd481('0x5e'),'id']));_0xd33e86[_0xd481('0x5f')]=0x15;_0xd33e86[_0xd481('0x60')]='deleted';_0xd33e86[_0xd481('0x61')]=_0x260c0b[_0xd481('0x28')];_0xd33e86[_0xd481('0x62')]=_0x163cbf[_0xd481('0x63')][_0xd481('0x28')];_0xd33e86[_0xd481('0x64')]=_0x163cbf[_0xd481('0x63')]['id'];_0xd33e86[_0xd481('0x65')]=!![];_0xd33e86['deletedat']=moment()['format'](_0xd481('0x66'));_0xd33e86['calleridnum']=_0x394e5a['phone'];_0xd33e86[_0xd481('0x67')]=_0x394e5a[_0xd481('0x59')]?_0xd481('0x68'):_0xd481('0x69');return db[_0xd481('0x6a')][_0xd481('0x53')]({'where':{'id':_0xd33e86['ContactId']},'attributes':[_0xd481('0x6b'),'lastName']})[_0xd481('0x25')](function(_0x1148e6){if(!_[_0xd481('0x6c')](_0x16e862)&&!_[_0xd481('0x6c')](_0x1148e6[_0xd481('0x6b')])){_0xd33e86[_0xd481('0x6d')]=_0x1148e6[_0xd481('0x6b')];if(!_[_0xd481('0x6c')](_0x1148e6[_0xd481('0x6e')])){_0xd33e86[_0xd481('0x6d')]+='\x20'+_0x1148e6['lastName'];}}})[_0xd481('0x6f')](function(){return db[_0xd481('0x70')][_0xd481('0x55')](_0xd33e86);});}})[_0xd481('0x25')](function(){return _0x16e862['status'](0xcc)['end']();})[_0xd481('0x54')](handleError(_0x16e862,null));};exports[_0xd481('0x71')]=function(_0x4e9a34,_0x540cde,_0x2637a0){var _0x4db11f=[];return db[_0xd481('0x6a')][_0xd481('0x58')]()['then'](function(_0x1b7e90){_0x4db11f=_[_0xd481('0x2e')](_0x1b7e90);return _0x4e9a34[_0xd481('0x63')]['getVoiceQueues']({'where':{'type':_0xd481('0x72'),'dialActive':!![],'dialMethod':_0xd481('0x73')},'attributes':['id',_0xd481('0x74')],'raw':!![]});})['then'](function(_0x4c5a3a){if(_0x4c5a3a&&_0x4c5a3a[_0xd481('0x51')]){return db[_0xd481('0x75')][_0xd481('0x76')](function(_0x28a9e8){var _0x3d9604={'active':![],'recallme':![],'scheduledAt':{'$lte':moment()[_0xd481('0x77')]('YYYY-MM-DD\x20HH:mm:ss')},'VoiceQueueId':{'$in':_['map'](_0x4c5a3a,'id')},'$or':[{'UserId':null},{'UserId':_0x4e9a34[_0xd481('0x63')]['id']}]};var _0x48fe72=[];if(_0x4e9a34[_0xd481('0x56')][_0xd481('0x78')]&&_0x4e9a34['body'][_0xd481('0x78')]==='prev'){if(!_[_0xd481('0x79')](_0x4e9a34[_0xd481('0x56')]['hopperIds'])){_0x3d9604['id']={'$in':_0x4e9a34['body'][_0xd481('0x7a')]};}_0x48fe72=[[_0xd481('0x7b'),_0xd481('0x7c')],[_0xd481('0x7d'),_0x4c5a3a[0x0][_0xd481('0x74')]===_0xd481('0x7c')?_0xd481('0x7e'):'ASC'],db[_0xd481('0x75')][_0xd481('0x7f')](_0xd481('0x80')),['id',_0xd481('0x7e')]];}else{if(!_[_0xd481('0x79')](_0x4e9a34[_0xd481('0x56')][_0xd481('0x7a')])){_0x3d9604['id']={'$notIn':_0x4e9a34[_0xd481('0x56')]['hopperIds']};}_0x48fe72=[['priority',_0xd481('0x7e')],[_0xd481('0x7d'),_0x4c5a3a[0x0][_0xd481('0x74')]],db[_0xd481('0x75')]['literal']('COALESCE(CmHopper.UserId,\x200)\x20DESC'),['id',_0xd481('0x7c')]];}return db[_0xd481('0x2a')][_0xd481('0x81')]({'attributes':['id',_0xd481('0x82')],'where':_0x3d9604,'order':_0x48fe72,'transaction':_0x28a9e8,'lock':_0x28a9e8[_0xd481('0x83')][_0xd481('0x84')],'include':[{'model':db[_0xd481('0x6a')],'as':_0xd481('0x85'),'attributes':_0x4db11f,'include':[{'model':db[_0xd481('0x86')],'as':_0xd481('0x87'),'attributes':['id','name']}]},{'model':db[_0xd481('0x88')],'as':_0xd481('0x89'),'attributes':['id','name']},{'model':db[_0xd481('0x8a')],'as':_0xd481('0x8b'),'attributes':['id',_0xd481('0x28'),_0xd481('0x8c')]}]})[_0xd481('0x25')](function(_0x8fddf1){if(_0x8fddf1){return _0x8fddf1[_0xd481('0x24')]({'UserId':_0x4e9a34[_0xd481('0x63')]['id']},{'transaction':_0x28a9e8});}});});}})[_0xd481('0x25')](handleEntityNotFound(_0x540cde,null))[_0xd481('0x25')](respondWithResult(_0x540cde,null))[_0xd481('0x54')](handleError(_0x540cde,null));};exports['getOpenContacts']=function(_0x5d4be2,_0x5498c0,_0x54c977){return _0x5d4be2[_0xd481('0x63')][_0xd481('0x8d')]({'where':{'type':_0xd481('0x72'),'dialActive':!![],'dialMethod':_0xd481('0x73')},'attributes':['id'],'raw':!![]})['then'](function(_0x2f1964){if(_0x2f1964&&_0x2f1964['length']){return db[_0xd481('0x2a')][_0xd481('0x1f')]({'where':{'active':![],'recallme':![],'scheduledAt':{'$lte':moment()[_0xd481('0x77')](_0xd481('0x66'))},'VoiceQueueId':{'$in':_['map'](_0x2f1964,'id')},'$or':[{'UserId':null},{'UserId':_0x5d4be2['user']['id']}]}});}return 0x0;})[_0xd481('0x25')](function(_0x1b48ff){if(!_[_0xd481('0x6c')](_0x1b48ff)&&_[_0xd481('0x8e')](_0x1b48ff)){return _0x5498c0['status'](0xc8)[_0xd481('0x1b')]({'contacts':_0x1b48ff});}else{logger[_0xd481('0x27')](_0xd481('0x8f'),'getOpenContacts',0x194,'entity\x20not\x20found');_0x5498c0[_0xd481('0x18')](0x194);}})[_0xd481('0x54')](handleError(_0x5498c0,null));};
\ No newline at end of file
+var _0x0cc8=['user','UserId','deletedat','YYYY-MM-DD\x20HH:mm:ss','calleridnum','phone','campaigntype','ivr','ContactId','firstName','lastName','isNil','calleridname','finally','CmHopperFinal','CmContact','getVoiceQueues','preview','sequelize','transaction','direction','prev','isEmpty','hopperIds','priority','ASC','scheduledAt','dialOrderByScheduledAt','literal','COALESCE(CmHopper.UserId,\x200)\x20ASC','DESC','COALESCE(CmHopper.UserId,\x200)\x20DESC','scheduledat','LOCK','UPDATE','Contact','CmCompany','CmList','List','Queue','outbound','format','error','CmHopper,\x20%s,\x20%s,\x20%s','entity\x20not\x20found','eml-format','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','../../config/utils','../../config/environment','sendStatus','end','status','json','offset','undefined','limit','count','set','destroy','then','stack','name','send','map','CmHopper','key','query','filters','intersection','model','concat','$and','$or','$gt','$gte','$lt','$ne','$not','$between','$notBetween','$in','$notIn','$like','$notLike','$iLike','$notILike','$overlap','$contains','fields','attributes','length','hasOwnProperty','sort','pick','filter','where','merge','type','VIRTUAL','options','include','findAll','rows','show','keys','rawAttributes','find','catch','create','update','body','params','describe','VoiceQueueId','CampaignId','VoiceQueue','Campaign','omit','dataValues','updatedAt','deleted','campaign','membername'];(function(_0x228a6b,_0x38f03f){var _0x11cfb9=function(_0x4f29e1){while(--_0x4f29e1){_0x228a6b['push'](_0x228a6b['shift']());}};_0x11cfb9(++_0x38f03f);}(_0x0cc8,0x1d7));var _0x80cc=function(_0x369289,_0xb779d8){_0x369289=_0x369289-0x0;var _0x1c8ba4=_0x0cc8[_0x369289];return _0x1c8ba4;};'use strict';var emlformat=require(_0x80cc('0x0'));var rimraf=require('rimraf');var zipdir=require(_0x80cc('0x1'));var jsonpatch=require('fast-json-patch');var rp=require('request-promise');var moment=require(_0x80cc('0x2'));var BPromise=require(_0x80cc('0x3'));var Mustache=require(_0x80cc('0x4'));var util=require('util');var path=require(_0x80cc('0x5'));var sox=require(_0x80cc('0x6'));var csv=require(_0x80cc('0x7'));var ejs=require(_0x80cc('0x8'));var fs=require('fs');var fs_extra=require(_0x80cc('0x9'));var _=require(_0x80cc('0xa'));var squel=require(_0x80cc('0xb'));var crypto=require(_0x80cc('0xc'));var jsforce=require(_0x80cc('0xd'));var deskjs=require(_0x80cc('0xe'));var toCsv=require(_0x80cc('0x7'));var querystring=require(_0x80cc('0xf'));var Papa=require('papaparse');var Redis=require(_0x80cc('0x10'));var authService=require('../../components/auth/service');var qs=require(_0x80cc('0x11'));var as=require(_0x80cc('0x12'));var hardwareService=require(_0x80cc('0x13'));var logger=require(_0x80cc('0x14'))('api');var utils=require(_0x80cc('0x15'));var config=require(_0x80cc('0x16'));var licenseUtil=require('../../config/license/util');var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x4bcb43,_0x35e361){_0x35e361=_0x35e361||0xcc;return function(_0x3e3e45){if(_0x3e3e45){return _0x4bcb43[_0x80cc('0x17')](_0x35e361);}return _0x4bcb43['status'](_0x35e361)[_0x80cc('0x18')]();};}function respondWithResult(_0x416392,_0x45643c){_0x45643c=_0x45643c||0xc8;return function(_0x1b079d){if(_0x1b079d){return _0x416392[_0x80cc('0x19')](_0x45643c)[_0x80cc('0x1a')](_0x1b079d);}};}function respondWithFilteredResult(_0x4cb9fa,_0x5f356e){return function(_0x1a5a5b){if(_0x1a5a5b){var _0x3d252e=typeof _0x5f356e[_0x80cc('0x1b')]===_0x80cc('0x1c')&&typeof _0x5f356e[_0x80cc('0x1d')]==='undefined';var _0x38f713=_0x1a5a5b[_0x80cc('0x1e')];var _0x4cf191=_0x3d252e?0x0:_0x5f356e[_0x80cc('0x1b')];var _0x15dd19=_0x3d252e?_0x1a5a5b[_0x80cc('0x1e')]:_0x5f356e[_0x80cc('0x1b')]+_0x5f356e[_0x80cc('0x1d')];var _0x5a0353;if(_0x15dd19>=_0x38f713){_0x15dd19=_0x38f713;_0x5a0353=0xc8;}else{_0x5a0353=0xce;}_0x4cb9fa[_0x80cc('0x19')](_0x5a0353);return _0x4cb9fa[_0x80cc('0x1f')]('Content-Range',_0x4cf191+'-'+_0x15dd19+'/'+_0x38f713)[_0x80cc('0x1a')](_0x1a5a5b);}return null;};}function patchUpdates(_0x497784){return function(_0x5a7757){try{jsonpatch['apply'](_0x5a7757,_0x497784,!![]);}catch(_0xca4df0){return BPromise['reject'](_0xca4df0);}return _0x5a7757['save']();};}function saveUpdates(_0x5c18e4,_0x116906){return function(_0x126b92){if(_0x126b92){return _0x126b92['update'](_0x5c18e4)['then'](function(_0xd1d511){return _0xd1d511;});}return null;};}function removeEntity(_0xc219ef,_0x55bae6){return function(_0x297058){if(_0x297058){return _0x297058[_0x80cc('0x20')]()[_0x80cc('0x21')](function(){_0xc219ef[_0x80cc('0x19')](0xcc)[_0x80cc('0x18')]();});}};}function handleEntityNotFound(_0x540b73,_0x315abd){return function(_0x233a4d){if(!_0x233a4d){_0x540b73[_0x80cc('0x17')](0x194);}return _0x233a4d;};}function handleError(_0x2ed409,_0x34b21a){_0x34b21a=_0x34b21a||0x1f4;return function(_0x2025b7){logger['error'](_0x2025b7[_0x80cc('0x22')]);if(_0x2025b7['name']){delete _0x2025b7[_0x80cc('0x23')];}_0x2ed409[_0x80cc('0x19')](_0x34b21a)[_0x80cc('0x24')](_0x2025b7);};}exports['index']=function(_0x6ee4ac,_0x435a11){var _0xc11292={},_0x319191={},_0x3ae7f7={'count':0x0,'rows':[]};var _0x21325f=_[_0x80cc('0x25')](db[_0x80cc('0x26')]['rawAttributes'],function(_0x43b844){return{'name':_0x43b844['fieldName'],'type':_0x43b844['type'][_0x80cc('0x27')]};});_0x319191['model']=_[_0x80cc('0x25')](_0x21325f,_0x80cc('0x23'));_0x319191[_0x80cc('0x28')]=_['keys'](_0x6ee4ac[_0x80cc('0x28')]);_0x319191[_0x80cc('0x29')]=_[_0x80cc('0x2a')](_0x319191[_0x80cc('0x2b')],_0x319191[_0x80cc('0x28')]);_0x319191[_0x80cc('0x29')]=_[_0x80cc('0x2c')](_0x319191[_0x80cc('0x29')],[_0x80cc('0x2d'),_0x80cc('0x2e'),_0x80cc('0x2f'),_0x80cc('0x30'),_0x80cc('0x31'),'$lte',_0x80cc('0x32'),'$eq',_0x80cc('0x33'),_0x80cc('0x34'),_0x80cc('0x35'),_0x80cc('0x36'),_0x80cc('0x37'),_0x80cc('0x38'),_0x80cc('0x39'),_0x80cc('0x3a'),_0x80cc('0x3b'),_0x80cc('0x38'),_0x80cc('0x3c'),_0x80cc('0x3d'),'$contained','$any']);_0xc11292['attributes']=_[_0x80cc('0x2a')](_0x319191[_0x80cc('0x2b')],qs[_0x80cc('0x3e')](_0x6ee4ac[_0x80cc('0x28')][_0x80cc('0x3e')]));_0xc11292[_0x80cc('0x3f')]=_0xc11292['attributes'][_0x80cc('0x40')]?_0xc11292[_0x80cc('0x3f')]:_0x319191[_0x80cc('0x2b')];if(!_0x6ee4ac[_0x80cc('0x28')][_0x80cc('0x41')]('nolimit')){_0xc11292[_0x80cc('0x1d')]=qs[_0x80cc('0x1d')](_0x6ee4ac[_0x80cc('0x28')][_0x80cc('0x1d')]);_0xc11292[_0x80cc('0x1b')]=qs[_0x80cc('0x1b')](_0x6ee4ac[_0x80cc('0x28')][_0x80cc('0x1b')]);}_0xc11292['order']=qs[_0x80cc('0x42')](_0x6ee4ac[_0x80cc('0x28')]['sort']);_0xc11292['where']=qs[_0x80cc('0x29')](_[_0x80cc('0x43')](_0x6ee4ac['query'],_0x319191[_0x80cc('0x29')]),_0x21325f);if(_0x6ee4ac['query'][_0x80cc('0x44')]){_0xc11292[_0x80cc('0x45')]=_[_0x80cc('0x46')](_0xc11292[_0x80cc('0x45')],{'$or':_[_0x80cc('0x25')](_0x21325f,function(_0x3e7df8){if(_0x3e7df8[_0x80cc('0x47')]!==_0x80cc('0x48')){var _0x5e9bd0={};_0x5e9bd0[_0x3e7df8[_0x80cc('0x23')]]={'$like':'%'+_0x6ee4ac[_0x80cc('0x28')][_0x80cc('0x44')]+'%'};return _0x5e9bd0;}})});}_0xc11292=_[_0x80cc('0x46')]({},_0xc11292,_0x6ee4ac[_0x80cc('0x49')]);var _0x40c0ba={'where':_0xc11292[_0x80cc('0x45')]};return db[_0x80cc('0x26')][_0x80cc('0x1e')](_0x40c0ba)[_0x80cc('0x21')](function(_0xfc7dc2){_0x3ae7f7[_0x80cc('0x1e')]=_0xfc7dc2;if(_0x6ee4ac[_0x80cc('0x28')]['includeAll']){_0xc11292[_0x80cc('0x4a')]=[{'all':!![]}];}return db['CmHopper'][_0x80cc('0x4b')](_0xc11292);})['then'](function(_0x10dcd0){_0x3ae7f7[_0x80cc('0x4c')]=_0x10dcd0;return _0x3ae7f7;})[_0x80cc('0x21')](respondWithFilteredResult(_0x435a11,_0xc11292))['catch'](handleError(_0x435a11,null));};exports[_0x80cc('0x4d')]=function(_0x4f83cd,_0x1e5243){var _0x3fbd5f={'raw':!![],'where':{'id':_0x4f83cd['params']['id']}},_0x45fb4f={};_0x45fb4f['model']=_[_0x80cc('0x4e')](db[_0x80cc('0x26')][_0x80cc('0x4f')]);_0x45fb4f[_0x80cc('0x28')]=_[_0x80cc('0x4e')](_0x4f83cd['query']);_0x45fb4f[_0x80cc('0x29')]=_[_0x80cc('0x2a')](_0x45fb4f[_0x80cc('0x2b')],_0x45fb4f[_0x80cc('0x28')]);_0x3fbd5f[_0x80cc('0x3f')]=_[_0x80cc('0x2a')](_0x45fb4f[_0x80cc('0x2b')],qs[_0x80cc('0x3e')](_0x4f83cd['query'][_0x80cc('0x3e')]));_0x3fbd5f['attributes']=_0x3fbd5f[_0x80cc('0x3f')][_0x80cc('0x40')]?_0x3fbd5f[_0x80cc('0x3f')]:_0x45fb4f[_0x80cc('0x2b')];if(_0x4f83cd[_0x80cc('0x28')]['includeAll']){_0x3fbd5f['include']=[{'all':!![]}];}_0x3fbd5f=_[_0x80cc('0x46')]({},_0x3fbd5f,_0x4f83cd['options']);return db[_0x80cc('0x26')][_0x80cc('0x50')](_0x3fbd5f)['then'](handleEntityNotFound(_0x1e5243,null))[_0x80cc('0x21')](respondWithResult(_0x1e5243,null))[_0x80cc('0x51')](handleError(_0x1e5243,null));};exports[_0x80cc('0x52')]=function(_0x12544f,_0x2e22db){return db['CmHopper'][_0x80cc('0x52')](_0x12544f['body'],{})['then'](respondWithResult(_0x2e22db,0xc9))[_0x80cc('0x51')](handleError(_0x2e22db,null));};exports[_0x80cc('0x53')]=function(_0x56f095,_0x3a955c){if(_0x56f095[_0x80cc('0x54')]['id']){delete _0x56f095[_0x80cc('0x54')]['id'];}return db[_0x80cc('0x26')]['find']({'where':{'id':_0x56f095[_0x80cc('0x55')]['id']}})[_0x80cc('0x21')](handleEntityNotFound(_0x3a955c,null))[_0x80cc('0x21')](saveUpdates(_0x56f095['body'],null))[_0x80cc('0x21')](respondWithResult(_0x3a955c,null))[_0x80cc('0x51')](handleError(_0x3a955c,null));};exports['describe']=function(_0x454ff1,_0x524730){return db[_0x80cc('0x26')][_0x80cc('0x56')]()['then'](respondWithResult(_0x524730,null))[_0x80cc('0x51')](handleError(_0x524730,null));};exports[_0x80cc('0x20')]=function(_0x3b8c6c,_0x2b53b4){var _0x245214;return db[_0x80cc('0x26')][_0x80cc('0x50')]({'where':{'id':_0x3b8c6c[_0x80cc('0x55')]['id']}})[_0x80cc('0x21')](handleEntityNotFound(_0x2b53b4,null))[_0x80cc('0x21')](function(_0x44ca3b){if(_0x44ca3b){return _0x44ca3b[_0x80cc('0x20')]()['then'](function(_0x3d60fa){return _0x3d60fa;});}})[_0x80cc('0x21')](function(_0x1b86f0){_0x245214=_0x1b86f0;if(_0x1b86f0){if(_0x1b86f0[_0x80cc('0x57')]||_0x1b86f0[_0x80cc('0x58')]){return db[_0x1b86f0[_0x80cc('0x57')]?_0x80cc('0x59'):_0x80cc('0x5a')][_0x80cc('0x50')]({'where':{'id':_0x1b86f0[_0x80cc('0x57')]?_0x1b86f0[_0x80cc('0x57')]:_0x1b86f0[_0x80cc('0x58')]},'attributes':['id','name'],'raw':!![]});}}})[_0x80cc('0x21')](function(_0x583258){var _0x4ded20={};if(_0x583258){_['merge'](_0x4ded20,_[_0x80cc('0x5b')](_0x245214[_0x80cc('0x5c')],['createdAt',_0x80cc('0x5d'),'id']));_0x4ded20['state']=0x15;_0x4ded20['statedesc']=_0x80cc('0x5e');_0x4ded20[_0x80cc('0x5f')]=_0x583258[_0x80cc('0x23')];_0x4ded20[_0x80cc('0x60')]=_0x3b8c6c[_0x80cc('0x61')][_0x80cc('0x23')];_0x4ded20[_0x80cc('0x62')]=_0x3b8c6c[_0x80cc('0x61')]['id'];_0x4ded20['deleted']=!![];_0x4ded20[_0x80cc('0x63')]=moment()['format'](_0x80cc('0x64'));_0x4ded20[_0x80cc('0x65')]=_0x245214[_0x80cc('0x66')];_0x4ded20[_0x80cc('0x67')]=_0x245214[_0x80cc('0x57')]?'queue':_0x80cc('0x68');return db['CmContact'][_0x80cc('0x50')]({'where':{'id':_0x4ded20[_0x80cc('0x69')]},'attributes':[_0x80cc('0x6a'),_0x80cc('0x6b')]})['then'](function(_0x2df2f8){if(!_[_0x80cc('0x6c')](_0x2b53b4)&&!_[_0x80cc('0x6c')](_0x2df2f8[_0x80cc('0x6a')])){_0x4ded20[_0x80cc('0x6d')]=_0x2df2f8[_0x80cc('0x6a')];if(!_['isNil'](_0x2df2f8[_0x80cc('0x6b')])){_0x4ded20[_0x80cc('0x6d')]+='\x20'+_0x2df2f8[_0x80cc('0x6b')];}}})[_0x80cc('0x6e')](function(){return db[_0x80cc('0x6f')][_0x80cc('0x52')](_0x4ded20);});}})[_0x80cc('0x21')](function(){return _0x2b53b4[_0x80cc('0x19')](0xcc)[_0x80cc('0x18')]();})[_0x80cc('0x51')](handleError(_0x2b53b4,null));};exports['getPreview']=function(_0xb45fd9,_0x39ae93,_0x5e7f65){var _0x2511c7=[];return db[_0x80cc('0x70')][_0x80cc('0x56')]()[_0x80cc('0x21')](function(_0x555436){_0x2511c7=_[_0x80cc('0x4e')](_0x555436);return _0xb45fd9['user'][_0x80cc('0x71')]({'where':{'type':'outbound','dialActive':!![],'dialMethod':_0x80cc('0x72')},'attributes':['id','dialOrderByScheduledAt'],'raw':!![]});})['then'](function(_0x1b4b48){if(_0x1b4b48&&_0x1b4b48[_0x80cc('0x40')]){return db[_0x80cc('0x73')][_0x80cc('0x74')](function(_0x541ac2){var _0x2b7e2f={'active':![],'recallme':![],'scheduledAt':{'$lte':moment()['format'](_0x80cc('0x64'))},'VoiceQueueId':{'$in':_[_0x80cc('0x25')](_0x1b4b48,'id')},'$or':[{'UserId':null},{'UserId':_0xb45fd9[_0x80cc('0x61')]['id']}]};var _0x576a23=[];if(_0xb45fd9[_0x80cc('0x54')][_0x80cc('0x75')]&&_0xb45fd9['body'][_0x80cc('0x75')]===_0x80cc('0x76')){if(!_[_0x80cc('0x77')](_0xb45fd9[_0x80cc('0x54')]['hopperIds'])){_0x2b7e2f['id']={'$in':_0xb45fd9[_0x80cc('0x54')][_0x80cc('0x78')]};}_0x576a23=[[_0x80cc('0x79'),_0x80cc('0x7a')],[_0x80cc('0x7b'),_0x1b4b48[0x0][_0x80cc('0x7c')]===_0x80cc('0x7a')?'DESC':_0x80cc('0x7a')],db[_0x80cc('0x73')][_0x80cc('0x7d')](_0x80cc('0x7e')),['id','DESC']];}else{if(!_[_0x80cc('0x77')](_0xb45fd9[_0x80cc('0x54')][_0x80cc('0x78')])){_0x2b7e2f['id']={'$notIn':_0xb45fd9[_0x80cc('0x54')][_0x80cc('0x78')]};}_0x576a23=[['priority',_0x80cc('0x7f')],[_0x80cc('0x7b'),_0x1b4b48[0x0][_0x80cc('0x7c')]],db[_0x80cc('0x73')][_0x80cc('0x7d')](_0x80cc('0x80')),['id',_0x80cc('0x7a')]];}return db['CmHopper']['findOne']({'attributes':['id',_0x80cc('0x81')],'where':_0x2b7e2f,'order':_0x576a23,'transaction':_0x541ac2,'lock':_0x541ac2[_0x80cc('0x82')][_0x80cc('0x83')],'include':[{'model':db[_0x80cc('0x70')],'as':_0x80cc('0x84'),'attributes':_0x2511c7,'include':[{'model':db[_0x80cc('0x85')],'as':'Company','attributes':['id',_0x80cc('0x23')]}]},{'model':db[_0x80cc('0x86')],'as':_0x80cc('0x87'),'attributes':['id',_0x80cc('0x23')]},{'model':db['VoiceQueue'],'as':_0x80cc('0x88'),'attributes':['id',_0x80cc('0x23'),'dialActive']}]})[_0x80cc('0x21')](function(_0x3b02d1){if(_0x3b02d1){return _0x3b02d1[_0x80cc('0x53')]({'UserId':_0xb45fd9['user']['id']},{'transaction':_0x541ac2});}});});}})[_0x80cc('0x21')](handleEntityNotFound(_0x39ae93,null))['then'](respondWithResult(_0x39ae93,null))[_0x80cc('0x51')](handleError(_0x39ae93,null));};exports['getOpenContacts']=function(_0x20e832,_0x508c00,_0x18bd26){return _0x20e832[_0x80cc('0x61')]['getVoiceQueues']({'where':{'type':_0x80cc('0x89'),'dialActive':!![],'dialMethod':_0x80cc('0x72')},'attributes':['id'],'raw':!![]})[_0x80cc('0x21')](function(_0x100d34){if(_0x100d34&&_0x100d34[_0x80cc('0x40')]){return db[_0x80cc('0x26')][_0x80cc('0x1e')]({'where':{'active':![],'recallme':![],'scheduledAt':{'$lte':moment()[_0x80cc('0x8a')](_0x80cc('0x64'))},'VoiceQueueId':{'$in':_[_0x80cc('0x25')](_0x100d34,'id')},'$or':[{'UserId':null},{'UserId':_0x20e832[_0x80cc('0x61')]['id']}]}});}return 0x0;})[_0x80cc('0x21')](function(_0x52143a){if(!_[_0x80cc('0x6c')](_0x52143a)&&_['isNumber'](_0x52143a)){return _0x508c00[_0x80cc('0x19')](0xc8)[_0x80cc('0x1a')]({'contacts':_0x52143a});}else{logger[_0x80cc('0x8b')](_0x80cc('0x8c'),'getOpenContacts',0x194,_0x80cc('0x8d'));_0x508c00[_0x80cc('0x17')](0x194);}})['catch'](handleError(_0x508c00,null));};
\ No newline at end of file
index 04939b9..a24c511 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x31f0=['priority','lodash','../../config/logger','moment','bluebird','request-promise','path','../../config/environment','./cmHopper.attributes','define','cm_hopper','scheduledat','phone'];(function(_0x3e6acb,_0x475209){var _0x2f2398=function(_0xae9f0c){while(--_0xae9f0c){_0x3e6acb['push'](_0x3e6acb['shift']());}};_0x2f2398(++_0x475209);}(_0x31f0,0xb7));var _0x031f=function(_0x57b536,_0x5afcd2){_0x57b536=_0x57b536-0x0;var _0x22b870=_0x31f0[_0x57b536];return _0x22b870;};'use strict';var _=require(_0x031f('0x0'));var util=require('util');var logger=require(_0x031f('0x1'))('api');var moment=require(_0x031f('0x2'));var BPromise=require(_0x031f('0x3'));var rp=require(_0x031f('0x4'));var fs=require('fs');var path=require(_0x031f('0x5'));var rimraf=require('rimraf');var config=require(_0x031f('0x6'));var attributes=require(_0x031f('0x7'));module['exports']=function(_0x4c0f94,_0x56328c){return _0x4c0f94[_0x031f('0x8')]('CmHopper',attributes,{'tableName':_0x031f('0x9'),'paranoid':![],'indexes':[{'name':_0x031f('0xa'),'fields':[_0x031f('0xa')]},{'name':_0x031f('0xb'),'fields':['phone']},{'name':_0x031f('0xc'),'fields':[_0x031f('0xc')]}],'timestamps':!![]});};
\ No newline at end of file
+var _0x326f=['api','moment','bluebird','request-promise','path','rimraf','../../config/environment','./cmHopper.attributes','exports','define','CmHopper','cm_hopper','scheduledat','priority','lodash'];(function(_0x17d9e3,_0x1f969c){var _0x14192d=function(_0x159745){while(--_0x159745){_0x17d9e3['push'](_0x17d9e3['shift']());}};_0x14192d(++_0x1f969c);}(_0x326f,0xd1));var _0xf326=function(_0x570c06,_0x7915c5){_0x570c06=_0x570c06-0x0;var _0x20c5e2=_0x326f[_0x570c06];return _0x20c5e2;};'use strict';var _=require(_0xf326('0x0'));var util=require('util');var logger=require('../../config/logger')(_0xf326('0x1'));var moment=require(_0xf326('0x2'));var BPromise=require(_0xf326('0x3'));var rp=require(_0xf326('0x4'));var fs=require('fs');var path=require(_0xf326('0x5'));var rimraf=require(_0xf326('0x6'));var config=require(_0xf326('0x7'));var attributes=require(_0xf326('0x8'));module[_0xf326('0x9')]=function(_0x3ace29,_0x4c2249){return _0x3ace29[_0xf326('0xa')](_0xf326('0xb'),attributes,{'tableName':_0xf326('0xc'),'paranoid':![],'indexes':[{'name':_0xf326('0xd'),'fields':['scheduledat']},{'name':'phone','fields':['phone']},{'name':_0xf326('0xe'),'fields':[_0xf326('0xe')]}],'timestamps':!![]});};
\ No newline at end of file
index 9de894c..f86458d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8ab9=['CmHopper','options','raw','where','attributes','include','map','model','debug','ShowCmHopper','find','CreateCmHopper','create','body','UpdateCmHopper','update','limit','DestroyCmHopper','GetContactDialer','CmContact','transaction','findAll','order','LOCK','Contact','Agent','name','voicePause','length','UserId','push','includes','all','MoveContactManagedDialer','sequelize','destroy','CountReScheduled','COUNT','`scheduledat`\x20>=\x20','format','YYYY-MM-DD\x20HH:mm:ss','\x20,\x201,\x20null','contactsRescheduled','GetContactRecallMe','describe','keys','lodash','bluebird','randomstring','ioredis','../../mysqldb','../../config/logger','rpc','../../config/environment','jayson/promise','http','request','then','CmHopper,\x20%s,\x20%s','request\x20sent','CmHopper,\x20%s,\x20%s,\x20%s','stringify','error','code','message','info','catch','GetCmHopper'];(function(_0x4f443f,_0x209c9b){var _0x4516e6=function(_0x24c313){while(--_0x24c313){_0x4f443f['push'](_0x4f443f['shift']());}};_0x4516e6(++_0x209c9b);}(_0x8ab9,0x72));var _0x98ab=function(_0x34a1b8,_0x3dcb36){_0x34a1b8=_0x34a1b8-0x0;var _0x1195c3=_0x8ab9[_0x34a1b8];return _0x1195c3;};'use strict';var _=require(_0x98ab('0x0'));var util=require('util');var moment=require('moment');var BPromise=require(_0x98ab('0x1'));var rs=require(_0x98ab('0x2'));var fs=require('fs');var Redis=require(_0x98ab('0x3'));var db=require(_0x98ab('0x4'))['db'];var utils=require('../../config/utils');var logger=require(_0x98ab('0x5'))(_0x98ab('0x6'));var config=require(_0x98ab('0x7'));var jayson=require(_0x98ab('0x8'));var client=jayson['client'][_0x98ab('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x56bc2b,_0x348f43,_0x2a6bc2){return new BPromise(function(_0x3eef47,_0x122352){return client[_0x98ab('0xa')](_0x56bc2b,_0x2a6bc2)[_0x98ab('0xb')](function(_0x14a0b5){logger['info'](_0x98ab('0xc'),_0x348f43,_0x98ab('0xd'));logger['debug'](_0x98ab('0xe'),_0x348f43,_0x98ab('0xd'),JSON[_0x98ab('0xf')](_0x14a0b5));if(_0x14a0b5[_0x98ab('0x10')]){if(_0x14a0b5[_0x98ab('0x10')][_0x98ab('0x11')]===0x1f4){logger[_0x98ab('0x10')](_0x98ab('0xc'),_0x348f43,_0x14a0b5['error'][_0x98ab('0x12')]);return _0x122352(_0x14a0b5['error'][_0x98ab('0x12')]);}logger[_0x98ab('0x10')]('CmHopper,\x20%s,\x20%s',_0x348f43,_0x14a0b5[_0x98ab('0x10')][_0x98ab('0x12')]);return _0x3eef47(_0x14a0b5[_0x98ab('0x10')][_0x98ab('0x12')]);}else{logger[_0x98ab('0x13')](_0x98ab('0xc'),_0x348f43,_0x98ab('0xd'));_0x3eef47(_0x14a0b5['result']['message']);}})[_0x98ab('0x14')](function(_0x5a6902){logger[_0x98ab('0x10')](_0x98ab('0xc'),_0x348f43,_0x5a6902);_0x122352(_0x5a6902);});});}exports[_0x98ab('0x15')]=function(_0x255477){var _0x312145=this;return new Promise(function(_0x4ac8b6,_0x36329a){return db[_0x98ab('0x16')]['findAll']({'raw':_0x255477[_0x98ab('0x17')]?_0x255477[_0x98ab('0x17')][_0x98ab('0x18')]===undefined?!![]:![]:!![],'where':_0x255477['options']?_0x255477[_0x98ab('0x17')][_0x98ab('0x19')]||null:null,'attributes':_0x255477[_0x98ab('0x17')]?_0x255477['options'][_0x98ab('0x1a')]||null:null,'limit':_0x255477['options']?_0x255477['options']['limit']||null:null,'include':_0x255477['options']?_0x255477['options'][_0x98ab('0x1b')]?_[_0x98ab('0x1c')](_0x255477['options']['include'],function(_0x2176e3){return{'model':db[_0x2176e3['model']],'as':_0x2176e3['as'],'attributes':_0x2176e3[_0x98ab('0x1a')],'include':_0x2176e3[_0x98ab('0x1b')]?_[_0x98ab('0x1c')](_0x2176e3[_0x98ab('0x1b')],function(_0x2b046a){return{'model':db[_0x2b046a[_0x98ab('0x1d')]],'as':_0x2b046a['as'],'attributes':_0x2b046a[_0x98ab('0x1a')],'include':_0x2b046a[_0x98ab('0x1b')]?_[_0x98ab('0x1c')](_0x2b046a[_0x98ab('0x1b')],function(_0x244ded){return{'model':db[_0x244ded['model']],'as':_0x244ded['as'],'attributes':_0x244ded[_0x98ab('0x1a')]};}):[]};}):[]};}):[]:[]})[_0x98ab('0xb')](function(_0x1c9407){logger['info'](_0x98ab('0x15'),_0x255477);logger[_0x98ab('0x1e')](_0x98ab('0x15'),_0x255477,JSON[_0x98ab('0xf')](_0x1c9407));_0x4ac8b6(_0x1c9407);})[_0x98ab('0x14')](function(_0x2e8476){logger[_0x98ab('0x10')](_0x98ab('0x15'),_0x2e8476[_0x98ab('0x12')],_0x255477);_0x36329a(_0x312145[_0x98ab('0x10')](0x1f4,_0x2e8476[_0x98ab('0x12')]));});});};exports[_0x98ab('0x1f')]=function(_0x4d4dff){var _0x3f7ef4=this;return new Promise(function(_0x2ee70b,_0x579fd0){return db['CmHopper'][_0x98ab('0x20')]({'raw':_0x4d4dff[_0x98ab('0x17')]?_0x4d4dff['options']['raw']===undefined?!![]:![]:!![],'where':_0x4d4dff[_0x98ab('0x17')]?_0x4d4dff[_0x98ab('0x17')][_0x98ab('0x19')]||null:null,'attributes':_0x4d4dff[_0x98ab('0x17')]?_0x4d4dff[_0x98ab('0x17')][_0x98ab('0x1a')]||null:null,'include':_0x4d4dff[_0x98ab('0x17')]?_0x4d4dff['options'][_0x98ab('0x1b')]?_[_0x98ab('0x1c')](_0x4d4dff[_0x98ab('0x17')][_0x98ab('0x1b')],function(_0x13d550){return{'model':db[_0x13d550[_0x98ab('0x1d')]],'as':_0x13d550['as'],'attributes':_0x13d550[_0x98ab('0x1a')],'include':_0x13d550[_0x98ab('0x1b')]?_['map'](_0x13d550[_0x98ab('0x1b')],function(_0x1af66c){return{'model':db[_0x1af66c['model']],'as':_0x1af66c['as'],'attributes':_0x1af66c[_0x98ab('0x1a')],'include':_0x1af66c[_0x98ab('0x1b')]?_[_0x98ab('0x1c')](_0x1af66c[_0x98ab('0x1b')],function(_0x4e914d){return{'model':db[_0x4e914d[_0x98ab('0x1d')]],'as':_0x4e914d['as'],'attributes':_0x4e914d[_0x98ab('0x1a')]};}):[]};}):[]};}):[]:[]})[_0x98ab('0xb')](function(_0x25dfdc){logger[_0x98ab('0x13')](_0x98ab('0x1f'),_0x4d4dff);logger[_0x98ab('0x1e')](_0x98ab('0x1f'),_0x4d4dff,JSON['stringify'](_0x25dfdc));_0x2ee70b(_0x25dfdc);})[_0x98ab('0x14')](function(_0x21ef25){logger[_0x98ab('0x10')](_0x98ab('0x1f'),_0x21ef25['message'],_0x4d4dff);_0x579fd0(_0x3f7ef4[_0x98ab('0x10')](0x1f4,_0x21ef25['message']));});});};exports[_0x98ab('0x21')]=function(_0x42f76f){var _0x38e08e=this;return new Promise(function(_0x1570c6,_0xfb24b7){return db[_0x98ab('0x16')][_0x98ab('0x22')](_0x42f76f[_0x98ab('0x23')],{'raw':_0x42f76f[_0x98ab('0x17')]?_0x42f76f[_0x98ab('0x17')][_0x98ab('0x18')]===undefined?!![]:![]:!![]})[_0x98ab('0xb')](function(_0x561de2){logger[_0x98ab('0x13')](_0x98ab('0x21'),_0x42f76f);logger['debug'](_0x98ab('0x21'),_0x42f76f,JSON[_0x98ab('0xf')](_0x561de2));_0x1570c6(_0x561de2);})[_0x98ab('0x14')](function(_0x9dca30){logger[_0x98ab('0x10')]('CreateCmHopper',_0x9dca30[_0x98ab('0x12')],_0x42f76f);_0xfb24b7(_0x38e08e[_0x98ab('0x10')](0x1f4,_0x9dca30[_0x98ab('0x12')]));});});};exports[_0x98ab('0x24')]=function(_0xce4ce2){var _0x1dc36b=this;return new Promise(function(_0x5aefed,_0x47ab85){return db[_0x98ab('0x16')][_0x98ab('0x25')](_0xce4ce2['body'],{'raw':_0xce4ce2[_0x98ab('0x17')]?_0xce4ce2[_0x98ab('0x17')][_0x98ab('0x18')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0xce4ce2[_0x98ab('0x17')]?_0xce4ce2['options'][_0x98ab('0x19')]||null:null,'attributes':_0xce4ce2[_0x98ab('0x17')]?_0xce4ce2[_0x98ab('0x17')]['attributes']||null:null,'limit':_0xce4ce2[_0x98ab('0x17')]?_0xce4ce2[_0x98ab('0x17')][_0x98ab('0x26')]||null:null})[_0x98ab('0xb')](function(_0x596029){logger[_0x98ab('0x13')](_0x98ab('0x24'),_0xce4ce2);logger[_0x98ab('0x1e')]('UpdateCmHopper',_0xce4ce2,JSON[_0x98ab('0xf')](_0x596029));_0x5aefed(_0x596029);})[_0x98ab('0x14')](function(_0x550dc6){logger['error'](_0x98ab('0x24'),_0x550dc6[_0x98ab('0x12')],_0xce4ce2);_0x47ab85(_0x1dc36b[_0x98ab('0x10')](0x1f4,_0x550dc6[_0x98ab('0x12')]));});});};exports[_0x98ab('0x27')]=function(_0x2ef82c){var _0x45df4f=this;return new Promise(function(_0x2223ba,_0x1a2ef1){return db['CmHopper']['destroy']({'where':_0x2ef82c[_0x98ab('0x17')]?_0x2ef82c[_0x98ab('0x17')][_0x98ab('0x19')]||null:null})[_0x98ab('0xb')](function(_0x3dbdd0){logger[_0x98ab('0x13')]('DestroyCmHopper',_0x2ef82c);logger[_0x98ab('0x1e')](_0x98ab('0x27'),_0x2ef82c,JSON['stringify'](_0x3dbdd0));_0x2223ba(_0x3dbdd0);})[_0x98ab('0x14')](function(_0x9cc18f){logger[_0x98ab('0x10')](_0x98ab('0x27'),_0x9cc18f[_0x98ab('0x12')],_0x2ef82c);_0x1a2ef1(_0x45df4f['error'](0x1f4,_0x9cc18f[_0x98ab('0x12')]));});});};exports[_0x98ab('0x28')]=function(_0x23d950){var _0x22286c=this;return new Promise(function(_0x1c7dd7,_0x4cb1){return db[_0x98ab('0x29')]['describe']()['then'](function(_0x5b0cf9){return db['sequelize'][_0x98ab('0x2a')](function(_0x44860a){return db[_0x98ab('0x16')][_0x98ab('0x2b')]({'where':_0x23d950[_0x98ab('0x17')]?_0x23d950[_0x98ab('0x17')][_0x98ab('0x19')]||null:null,'attributes':_0x23d950[_0x98ab('0x17')]?_0x23d950['options'][_0x98ab('0x1a')]||null:null,'limit':_0x23d950[_0x98ab('0x17')]?_0x23d950[_0x98ab('0x17')][_0x98ab('0x26')]||null:null,'order':_0x23d950['options']?_0x23d950[_0x98ab('0x17')][_0x98ab('0x2c')]||null:null,'transaction':_0x44860a,'lock':_0x44860a[_0x98ab('0x2d')]['UPDATE'],'include':[{'model':db[_0x98ab('0x29')],'as':_0x98ab('0x2e'),'attributes':_['keys'](_0x5b0cf9)},{'model':db['User'],'as':_0x98ab('0x2f'),'attributes':['id',_0x98ab('0x30'),_0x98ab('0x31')]}]})[_0x98ab('0xb')](function(_0x708e2c){var _0xab06a4=[];var _0x1bf4f3=[];for(var _0x20f891=0x0;_0x20f891<_0x708e2c[_0x98ab('0x32')];_0x20f891+=0x1){var _0x1f8095=_0x708e2c[_0x20f891][_0x98ab('0x33')];if(_0x1f8095===null){_0xab06a4[_0x98ab('0x34')](_0x708e2c[_0x20f891][_0x98ab('0x25')](_0x23d950[_0x98ab('0x23')],{'transaction':_0x44860a}));}else if(!_0x1bf4f3[_0x98ab('0x35')](_0x1f8095)){_0x1bf4f3[_0x98ab('0x34')](_0x1f8095);_0xab06a4['push'](_0x708e2c[_0x20f891][_0x98ab('0x25')](_0x23d950[_0x98ab('0x23')],{'transaction':_0x44860a}));}}return BPromise[_0x98ab('0x36')](_0xab06a4);});})[_0x98ab('0xb')](function(_0x3c17c7){logger[_0x98ab('0x13')](_0x98ab('0x28'),_0x23d950);logger[_0x98ab('0x1e')]('GetContactDialer',_0x23d950,JSON[_0x98ab('0xf')](_0x3c17c7));_0x1c7dd7(_0x3c17c7);})[_0x98ab('0x14')](function(_0x1e7f2c){logger[_0x98ab('0x10')](_0x98ab('0x28'),_0x1e7f2c[_0x98ab('0x12')],_0x23d950);_0x4cb1(_0x22286c['error'](0x1f4,_0x1e7f2c[_0x98ab('0x12')]));});});});};exports[_0x98ab('0x37')]=function(_0x222d42){var _0x510e3a=this;return new Promise(function(_0x5bb56a,_0x1d7630){return db[_0x98ab('0x38')][_0x98ab('0x2a')](function(_0x46f99a){return db['CmHopperFinal'][_0x98ab('0x22')](_0x222d42['body'],{'raw':_0x222d42[_0x98ab('0x17')]?_0x222d42[_0x98ab('0x17')][_0x98ab('0x18')]===undefined?!![]:![]:!![],'transaction':_0x46f99a})[_0x98ab('0xb')](function(){return db[_0x98ab('0x16')][_0x98ab('0x39')]({'where':_0x222d42[_0x98ab('0x17')]?_0x222d42[_0x98ab('0x17')]['where']||null:null,'transaction':_0x46f99a});});})[_0x98ab('0xb')](function(_0xfeb363){logger[_0x98ab('0x13')]('MoveContactManagedDialer',_0x222d42);logger['debug']('MoveContactManagedDialer',_0x222d42,JSON[_0x98ab('0xf')](_0xfeb363));_0x5bb56a(_0xfeb363);})[_0x98ab('0x14')](function(_0x4a6946){logger[_0x98ab('0x10')](_0x98ab('0x37'),_0x4a6946['message'],_0x222d42);_0x1d7630(_0x510e3a[_0x98ab('0x10')](0x1f4,_0x4a6946[_0x98ab('0x12')]));});});};exports[_0x98ab('0x3a')]=function(_0x599db1){var _0x290c61=this;return new Promise(function(_0x594dcd,_0x16b9f0){return db[_0x98ab('0x16')][_0x98ab('0x2b')]({'raw':_0x599db1[_0x98ab('0x17')]?_0x599db1['options'][_0x98ab('0x18')]===undefined?!![]:![]:!![],'where':_0x599db1[_0x98ab('0x17')]?_0x599db1[_0x98ab('0x17')][_0x98ab('0x19')]||null:null,'attributes':[[db[_0x98ab('0x38')]['fn'](_0x98ab('0x3b'),db[_0x98ab('0x38')]['fn']('IF',db[_0x98ab('0x38')]['literal'](_0x98ab('0x3c')+util[_0x98ab('0x3d')]('\x22%s\x22',moment()['format'](_0x98ab('0x3e')))+_0x98ab('0x3f')))),_0x98ab('0x40')]]})['then'](function(_0x989f5a){logger[_0x98ab('0x13')](_0x98ab('0x3a'),_0x599db1);logger[_0x98ab('0x1e')](_0x98ab('0x3a'),_0x599db1,JSON[_0x98ab('0xf')](_0x989f5a));_0x594dcd(_0x989f5a);})['catch'](function(_0x2a1100){logger[_0x98ab('0x10')](_0x98ab('0x3a'),_0x2a1100[_0x98ab('0x12')],_0x599db1);_0x16b9f0(_0x290c61[_0x98ab('0x10')](0x1f4,_0x2a1100[_0x98ab('0x12')]));});});};exports[_0x98ab('0x41')]=function(_0x3e8bdd){var _0x38a389=this;return new Promise(function(_0x486bc1,_0x33a7e4){return db[_0x98ab('0x29')]['describe']()[_0x98ab('0xb')](function(_0x4e2d4e){return db['sequelize'][_0x98ab('0x2a')](function(_0x1bac7a){return db['CmHopper'][_0x98ab('0x2b')]({'where':_0x3e8bdd['options']?_0x3e8bdd[_0x98ab('0x17')][_0x98ab('0x19')]||null:null,'attributes':_0x3e8bdd[_0x98ab('0x17')]?_0x3e8bdd['options'][_0x98ab('0x1a')]||null:null,'limit':0x1,'order':_0x3e8bdd['options']?_0x3e8bdd[_0x98ab('0x17')]['order']||null:null,'group':db[_0x98ab('0x16')][_0x98ab('0x33')],'transaction':_0x1bac7a,'lock':_0x1bac7a['LOCK']['UPDATE'],'include':_0x3e8bdd[_0x98ab('0x17')]?_0x3e8bdd[_0x98ab('0x17')][_0x98ab('0x1b')]?_[_0x98ab('0x1c')](_0x3e8bdd[_0x98ab('0x17')][_0x98ab('0x1b')],function(_0x15f82b){return{'model':db[_0x15f82b[_0x98ab('0x1d')]],'as':_0x15f82b['as'],'attributes':_0x15f82b[_0x98ab('0x1a')],'include':_0x15f82b['include']?_[_0x98ab('0x1c')](_0x15f82b[_0x98ab('0x1b')],function(_0x208226){return{'model':db[_0x208226[_0x98ab('0x1d')]],'as':_0x208226['as'],'attributes':_0x208226['attributes'],'include':_0x208226[_0x98ab('0x1b')]?_[_0x98ab('0x1c')](_0x208226[_0x98ab('0x1b')],function(_0x24c315){return{'model':db[_0x24c315[_0x98ab('0x1d')]],'as':_0x24c315['as'],'attributes':_0x24c315['attributes']};}):[]};}):[]};}):[]:[]})[_0x98ab('0xb')](function(_0x11f2c9){var _0x57ee4e=[];for(var _0x56362d=0x0;_0x56362d<_0x11f2c9[_0x98ab('0x32')];_0x56362d+=0x1){_0x57ee4e['push'](_0x11f2c9[_0x56362d][_0x98ab('0x25')](_0x3e8bdd[_0x98ab('0x23')],{'transaction':_0x1bac7a}));}return BPromise[_0x98ab('0x36')](_0x57ee4e);});})[_0x98ab('0xb')](function(_0x620b2c){logger[_0x98ab('0x13')](_0x98ab('0x41'),_0x3e8bdd);logger['debug']('GetContactRecallMe',_0x3e8bdd,JSON['stringify'](_0x620b2c));_0x486bc1(_0x620b2c);})['catch'](function(_0x810163){logger[_0x98ab('0x10')](_0x98ab('0x41'),_0x810163['message'],_0x3e8bdd);_0x33a7e4(_0x38a389[_0x98ab('0x10')](0x1f4,_0x810163[_0x98ab('0x12')]));});});});};exports['GetCmHopperPreview']=function(_0x54710b){var _0x4b800f=this;return new Promise(function(_0x451a7a,_0x18c472){db[_0x98ab('0x29')][_0x98ab('0x42')]()['then'](function(_0x42d8ca){return db[_0x98ab('0x16')][_0x98ab('0x2b')]({'raw':_0x54710b['options']?_0x54710b[_0x98ab('0x17')][_0x98ab('0x18')]===undefined?!![]:![]:!![],'where':_0x54710b[_0x98ab('0x17')]?_0x54710b[_0x98ab('0x17')][_0x98ab('0x19')]||null:null,'attributes':_0x54710b[_0x98ab('0x17')]?_0x54710b[_0x98ab('0x17')][_0x98ab('0x1a')]||null:null,'limit':_0x54710b[_0x98ab('0x17')]?_0x54710b[_0x98ab('0x17')][_0x98ab('0x26')]||null:null,'include':_0x54710b[_0x98ab('0x17')]?_0x54710b[_0x98ab('0x17')]['include']?_[_0x98ab('0x1c')](_0x54710b[_0x98ab('0x17')][_0x98ab('0x1b')],function(_0x2bed62){return{'model':db[_0x2bed62[_0x98ab('0x1d')]],'as':_0x2bed62['as'],'attributes':_0x2bed62['as']==='Contact'?_[_0x98ab('0x43')](_0x42d8ca):_0x2bed62['attributes'],'include':_0x2bed62[_0x98ab('0x1b')]?_[_0x98ab('0x1c')](_0x2bed62['include'],function(_0x1f8207){return{'model':db[_0x1f8207['model']],'as':_0x1f8207['as'],'attributes':_0x1f8207['attributes'],'include':_0x1f8207[_0x98ab('0x1b')]?_[_0x98ab('0x1c')](_0x1f8207[_0x98ab('0x1b')],function(_0x5f5d2b){return{'model':db[_0x5f5d2b[_0x98ab('0x1d')]],'as':_0x5f5d2b['as'],'attributes':_0x5f5d2b[_0x98ab('0x1a')]};}):[]};}):[]};}):[]:[]})['then'](function(_0x410534){logger[_0x98ab('0x13')](_0x98ab('0x15'),_0x54710b);logger[_0x98ab('0x1e')]('GetCmHopper',_0x54710b,JSON[_0x98ab('0xf')](_0x410534));_0x451a7a(_0x410534);})[_0x98ab('0x14')](function(_0x5d6d0f){logger[_0x98ab('0x10')](_0x98ab('0x15'),_0x5d6d0f[_0x98ab('0x12')],_0x54710b);_0x18c472(_0x4b800f[_0x98ab('0x10')](0x1f4,_0x5d6d0f[_0x98ab('0x12')]));});});});};
\ No newline at end of file
+var _0x85a6=['error','code','message','result','catch','GetCmHopper','CmHopper','findAll','options','raw','attributes','include','model','map','debug','ShowCmHopper','find','where','body','CreateCmHopper','UpdateCmHopper','limit','DestroyCmHopper','destroy','GetContactDialer','describe','transaction','order','LOCK','UPDATE','CmContact','Contact','keys','name','UserId','push','includes','update','all','MoveContactManagedDialer','sequelize','CmHopperFinal','create','CountReScheduled','COUNT','literal','format','\x22%s\x22','YYYY-MM-DD\x20HH:mm:ss','\x20,\x201,\x20null','contactsRescheduled','GetContactRecallMe','length','GetCmHopperPreview','lodash','util','moment','bluebird','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','jayson/promise','client','http','request','then','info','CmHopper,\x20%s,\x20%s','request\x20sent','CmHopper,\x20%s,\x20%s,\x20%s','stringify'];(function(_0x18d75b,_0x443dfd){var _0x249655=function(_0x66a29e){while(--_0x66a29e){_0x18d75b['push'](_0x18d75b['shift']());}};_0x249655(++_0x443dfd);}(_0x85a6,0x15a));var _0x685a=function(_0x285174,_0x1dad60){_0x285174=_0x285174-0x0;var _0xa40f1=_0x85a6[_0x285174];return _0xa40f1;};'use strict';var _=require(_0x685a('0x0'));var util=require(_0x685a('0x1'));var moment=require(_0x685a('0x2'));var BPromise=require(_0x685a('0x3'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x685a('0x4'));var db=require(_0x685a('0x5'))['db'];var utils=require(_0x685a('0x6'));var logger=require(_0x685a('0x7'))(_0x685a('0x8'));var config=require('../../config/environment');var jayson=require(_0x685a('0x9'));var client=jayson[_0x685a('0xa')][_0x685a('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x4b7bb2,_0x2b4a46,_0x1f2189){return new BPromise(function(_0x189ed5,_0x5b3125){return client[_0x685a('0xc')](_0x4b7bb2,_0x1f2189)[_0x685a('0xd')](function(_0x32714c){logger[_0x685a('0xe')](_0x685a('0xf'),_0x2b4a46,_0x685a('0x10'));logger['debug'](_0x685a('0x11'),_0x2b4a46,'request\x20sent',JSON[_0x685a('0x12')](_0x32714c));if(_0x32714c[_0x685a('0x13')]){if(_0x32714c[_0x685a('0x13')][_0x685a('0x14')]===0x1f4){logger[_0x685a('0x13')](_0x685a('0xf'),_0x2b4a46,_0x32714c[_0x685a('0x13')][_0x685a('0x15')]);return _0x5b3125(_0x32714c[_0x685a('0x13')][_0x685a('0x15')]);}logger[_0x685a('0x13')]('CmHopper,\x20%s,\x20%s',_0x2b4a46,_0x32714c[_0x685a('0x13')][_0x685a('0x15')]);return _0x189ed5(_0x32714c[_0x685a('0x13')][_0x685a('0x15')]);}else{logger[_0x685a('0xe')](_0x685a('0xf'),_0x2b4a46,_0x685a('0x10'));_0x189ed5(_0x32714c[_0x685a('0x16')]['message']);}})[_0x685a('0x17')](function(_0x344eec){logger[_0x685a('0x13')]('CmHopper,\x20%s,\x20%s',_0x2b4a46,_0x344eec);_0x5b3125(_0x344eec);});});}exports[_0x685a('0x18')]=function(_0xab6dcd){var _0x4f24cc=this;return new Promise(function(_0x48cb10,_0x1cf470){return db[_0x685a('0x19')][_0x685a('0x1a')]({'raw':_0xab6dcd[_0x685a('0x1b')]?_0xab6dcd['options'][_0x685a('0x1c')]===undefined?!![]:![]:!![],'where':_0xab6dcd['options']?_0xab6dcd['options']['where']||null:null,'attributes':_0xab6dcd[_0x685a('0x1b')]?_0xab6dcd['options'][_0x685a('0x1d')]||null:null,'limit':_0xab6dcd['options']?_0xab6dcd[_0x685a('0x1b')]['limit']||null:null,'include':_0xab6dcd[_0x685a('0x1b')]?_0xab6dcd[_0x685a('0x1b')][_0x685a('0x1e')]?_['map'](_0xab6dcd[_0x685a('0x1b')]['include'],function(_0x366407){return{'model':db[_0x366407[_0x685a('0x1f')]],'as':_0x366407['as'],'attributes':_0x366407[_0x685a('0x1d')],'include':_0x366407[_0x685a('0x1e')]?_[_0x685a('0x20')](_0x366407[_0x685a('0x1e')],function(_0x526750){return{'model':db[_0x526750[_0x685a('0x1f')]],'as':_0x526750['as'],'attributes':_0x526750['attributes'],'include':_0x526750[_0x685a('0x1e')]?_['map'](_0x526750['include'],function(_0x4e4fb0){return{'model':db[_0x4e4fb0[_0x685a('0x1f')]],'as':_0x4e4fb0['as'],'attributes':_0x4e4fb0[_0x685a('0x1d')]};}):[]};}):[]};}):[]:[]})['then'](function(_0x2f99a4){logger['info'](_0x685a('0x18'),_0xab6dcd);logger[_0x685a('0x21')](_0x685a('0x18'),_0xab6dcd,JSON[_0x685a('0x12')](_0x2f99a4));_0x48cb10(_0x2f99a4);})['catch'](function(_0x1b060d){logger['error']('GetCmHopper',_0x1b060d[_0x685a('0x15')],_0xab6dcd);_0x1cf470(_0x4f24cc['error'](0x1f4,_0x1b060d[_0x685a('0x15')]));});});};exports[_0x685a('0x22')]=function(_0x51a689){var _0x4cdb8c=this;return new Promise(function(_0x59310a,_0x2eb913){return db['CmHopper'][_0x685a('0x23')]({'raw':_0x51a689[_0x685a('0x1b')]?_0x51a689['options'][_0x685a('0x1c')]===undefined?!![]:![]:!![],'where':_0x51a689[_0x685a('0x1b')]?_0x51a689[_0x685a('0x1b')][_0x685a('0x24')]||null:null,'attributes':_0x51a689[_0x685a('0x1b')]?_0x51a689[_0x685a('0x1b')][_0x685a('0x1d')]||null:null,'include':_0x51a689[_0x685a('0x1b')]?_0x51a689[_0x685a('0x1b')][_0x685a('0x1e')]?_[_0x685a('0x20')](_0x51a689[_0x685a('0x1b')]['include'],function(_0x351834){return{'model':db[_0x351834[_0x685a('0x1f')]],'as':_0x351834['as'],'attributes':_0x351834[_0x685a('0x1d')],'include':_0x351834[_0x685a('0x1e')]?_[_0x685a('0x20')](_0x351834[_0x685a('0x1e')],function(_0x23e9eb){return{'model':db[_0x23e9eb['model']],'as':_0x23e9eb['as'],'attributes':_0x23e9eb[_0x685a('0x1d')],'include':_0x23e9eb[_0x685a('0x1e')]?_[_0x685a('0x20')](_0x23e9eb[_0x685a('0x1e')],function(_0x5939df){return{'model':db[_0x5939df['model']],'as':_0x5939df['as'],'attributes':_0x5939df[_0x685a('0x1d')]};}):[]};}):[]};}):[]:[]})['then'](function(_0x51b887){logger[_0x685a('0xe')](_0x685a('0x22'),_0x51a689);logger[_0x685a('0x21')](_0x685a('0x22'),_0x51a689,JSON['stringify'](_0x51b887));_0x59310a(_0x51b887);})[_0x685a('0x17')](function(_0x217032){logger[_0x685a('0x13')]('ShowCmHopper',_0x217032['message'],_0x51a689);_0x2eb913(_0x4cdb8c[_0x685a('0x13')](0x1f4,_0x217032[_0x685a('0x15')]));});});};exports['CreateCmHopper']=function(_0x13e5c5){var _0x310e4a=this;return new Promise(function(_0x294692,_0x3b9eef){return db[_0x685a('0x19')]['create'](_0x13e5c5[_0x685a('0x25')],{'raw':_0x13e5c5['options']?_0x13e5c5['options'][_0x685a('0x1c')]===undefined?!![]:![]:!![]})[_0x685a('0xd')](function(_0x2672d5){logger[_0x685a('0xe')](_0x685a('0x26'),_0x13e5c5);logger[_0x685a('0x21')]('CreateCmHopper',_0x13e5c5,JSON['stringify'](_0x2672d5));_0x294692(_0x2672d5);})[_0x685a('0x17')](function(_0x4792db){logger[_0x685a('0x13')](_0x685a('0x26'),_0x4792db[_0x685a('0x15')],_0x13e5c5);_0x3b9eef(_0x310e4a[_0x685a('0x13')](0x1f4,_0x4792db[_0x685a('0x15')]));});});};exports[_0x685a('0x27')]=function(_0x4551bd){var _0x35fd45=this;return new Promise(function(_0x555e78,_0x1ea204){return db[_0x685a('0x19')]['update'](_0x4551bd[_0x685a('0x25')],{'raw':_0x4551bd[_0x685a('0x1b')]?_0x4551bd[_0x685a('0x1b')][_0x685a('0x1c')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x4551bd[_0x685a('0x1b')]?_0x4551bd[_0x685a('0x1b')][_0x685a('0x24')]||null:null,'attributes':_0x4551bd['options']?_0x4551bd[_0x685a('0x1b')][_0x685a('0x1d')]||null:null,'limit':_0x4551bd[_0x685a('0x1b')]?_0x4551bd[_0x685a('0x1b')][_0x685a('0x28')]||null:null})[_0x685a('0xd')](function(_0x557681){logger[_0x685a('0xe')]('UpdateCmHopper',_0x4551bd);logger[_0x685a('0x21')](_0x685a('0x27'),_0x4551bd,JSON[_0x685a('0x12')](_0x557681));_0x555e78(_0x557681);})[_0x685a('0x17')](function(_0x39a697){logger[_0x685a('0x13')]('UpdateCmHopper',_0x39a697['message'],_0x4551bd);_0x1ea204(_0x35fd45[_0x685a('0x13')](0x1f4,_0x39a697[_0x685a('0x15')]));});});};exports[_0x685a('0x29')]=function(_0xb75970){var _0x4a056c=this;return new Promise(function(_0x531690,_0x40ff5){return db[_0x685a('0x19')][_0x685a('0x2a')]({'where':_0xb75970[_0x685a('0x1b')]?_0xb75970[_0x685a('0x1b')][_0x685a('0x24')]||null:null})[_0x685a('0xd')](function(_0x2befa3){logger['info'](_0x685a('0x29'),_0xb75970);logger[_0x685a('0x21')](_0x685a('0x29'),_0xb75970,JSON[_0x685a('0x12')](_0x2befa3));_0x531690(_0x2befa3);})[_0x685a('0x17')](function(_0x5c586b){logger[_0x685a('0x13')](_0x685a('0x29'),_0x5c586b[_0x685a('0x15')],_0xb75970);_0x40ff5(_0x4a056c[_0x685a('0x13')](0x1f4,_0x5c586b['message']));});});};exports[_0x685a('0x2b')]=function(_0x1896e1){var _0x3497de=this;return new Promise(function(_0x4cd538,_0xe4c342){return db['CmContact'][_0x685a('0x2c')]()[_0x685a('0xd')](function(_0x10437f){return db['sequelize'][_0x685a('0x2d')](function(_0x49d283){return db[_0x685a('0x19')][_0x685a('0x1a')]({'where':_0x1896e1[_0x685a('0x1b')]?_0x1896e1[_0x685a('0x1b')][_0x685a('0x24')]||null:null,'attributes':_0x1896e1['options']?_0x1896e1[_0x685a('0x1b')][_0x685a('0x1d')]||null:null,'limit':_0x1896e1[_0x685a('0x1b')]?_0x1896e1[_0x685a('0x1b')]['limit']||null:null,'order':_0x1896e1[_0x685a('0x1b')]?_0x1896e1[_0x685a('0x1b')][_0x685a('0x2e')]||null:null,'transaction':_0x49d283,'lock':_0x49d283[_0x685a('0x2f')][_0x685a('0x30')],'include':[{'model':db[_0x685a('0x31')],'as':_0x685a('0x32'),'attributes':_[_0x685a('0x33')](_0x10437f)},{'model':db['User'],'as':'Agent','attributes':['id',_0x685a('0x34'),'voicePause']}]})[_0x685a('0xd')](function(_0x1e00fb){var _0x123996=[];var _0x40868a=[];for(var _0x29454d=0x0;_0x29454d<_0x1e00fb['length'];_0x29454d+=0x1){var _0x58e64b=_0x1e00fb[_0x29454d][_0x685a('0x35')];if(_0x58e64b===null){_0x123996[_0x685a('0x36')](_0x1e00fb[_0x29454d]['update'](_0x1896e1[_0x685a('0x25')],{'transaction':_0x49d283}));}else if(!_0x40868a[_0x685a('0x37')](_0x58e64b)){_0x40868a[_0x685a('0x36')](_0x58e64b);_0x123996[_0x685a('0x36')](_0x1e00fb[_0x29454d][_0x685a('0x38')](_0x1896e1['body'],{'transaction':_0x49d283}));}}return BPromise[_0x685a('0x39')](_0x123996);});})[_0x685a('0xd')](function(_0x5444f1){logger[_0x685a('0xe')](_0x685a('0x2b'),_0x1896e1);logger[_0x685a('0x21')]('GetContactDialer',_0x1896e1,JSON[_0x685a('0x12')](_0x5444f1));_0x4cd538(_0x5444f1);})[_0x685a('0x17')](function(_0x2e56b5){logger['error'](_0x685a('0x2b'),_0x2e56b5[_0x685a('0x15')],_0x1896e1);_0xe4c342(_0x3497de[_0x685a('0x13')](0x1f4,_0x2e56b5['message']));});});});};exports[_0x685a('0x3a')]=function(_0x5cc31a){var _0x5a9fde=this;return new Promise(function(_0x19982b,_0x5b1f9d){return db[_0x685a('0x3b')][_0x685a('0x2d')](function(_0x2954d3){return db[_0x685a('0x3c')][_0x685a('0x3d')](_0x5cc31a[_0x685a('0x25')],{'raw':_0x5cc31a[_0x685a('0x1b')]?_0x5cc31a[_0x685a('0x1b')][_0x685a('0x1c')]===undefined?!![]:![]:!![],'transaction':_0x2954d3})[_0x685a('0xd')](function(){return db['CmHopper'][_0x685a('0x2a')]({'where':_0x5cc31a['options']?_0x5cc31a['options'][_0x685a('0x24')]||null:null,'transaction':_0x2954d3});});})[_0x685a('0xd')](function(_0x16bc30){logger[_0x685a('0xe')](_0x685a('0x3a'),_0x5cc31a);logger[_0x685a('0x21')]('MoveContactManagedDialer',_0x5cc31a,JSON[_0x685a('0x12')](_0x16bc30));_0x19982b(_0x16bc30);})[_0x685a('0x17')](function(_0x394711){logger[_0x685a('0x13')](_0x685a('0x3a'),_0x394711['message'],_0x5cc31a);_0x5b1f9d(_0x5a9fde[_0x685a('0x13')](0x1f4,_0x394711['message']));});});};exports[_0x685a('0x3e')]=function(_0x5b3b6d){var _0x419ec3=this;return new Promise(function(_0x5a8644,_0x438407){return db[_0x685a('0x19')][_0x685a('0x1a')]({'raw':_0x5b3b6d[_0x685a('0x1b')]?_0x5b3b6d[_0x685a('0x1b')]['raw']===undefined?!![]:![]:!![],'where':_0x5b3b6d[_0x685a('0x1b')]?_0x5b3b6d['options'][_0x685a('0x24')]||null:null,'attributes':[[db[_0x685a('0x3b')]['fn'](_0x685a('0x3f'),db[_0x685a('0x3b')]['fn']('IF',db[_0x685a('0x3b')][_0x685a('0x40')]('`scheduledat`\x20>=\x20'+util[_0x685a('0x41')](_0x685a('0x42'),moment()[_0x685a('0x41')](_0x685a('0x43')))+_0x685a('0x44')))),_0x685a('0x45')]]})[_0x685a('0xd')](function(_0x2f2061){logger[_0x685a('0xe')](_0x685a('0x3e'),_0x5b3b6d);logger['debug']('CountReScheduled',_0x5b3b6d,JSON[_0x685a('0x12')](_0x2f2061));_0x5a8644(_0x2f2061);})['catch'](function(_0x227818){logger[_0x685a('0x13')]('CountReScheduled',_0x227818[_0x685a('0x15')],_0x5b3b6d);_0x438407(_0x419ec3[_0x685a('0x13')](0x1f4,_0x227818[_0x685a('0x15')]));});});};exports[_0x685a('0x46')]=function(_0x5f2f0b){var _0x4029b9=this;return new Promise(function(_0x201d25,_0x2775ac){return db[_0x685a('0x31')][_0x685a('0x2c')]()[_0x685a('0xd')](function(_0x4d1205){return db['sequelize']['transaction'](function(_0x156fad){return db[_0x685a('0x19')][_0x685a('0x1a')]({'where':_0x5f2f0b[_0x685a('0x1b')]?_0x5f2f0b[_0x685a('0x1b')]['where']||null:null,'attributes':_0x5f2f0b['options']?_0x5f2f0b[_0x685a('0x1b')][_0x685a('0x1d')]||null:null,'limit':0x1,'order':_0x5f2f0b[_0x685a('0x1b')]?_0x5f2f0b['options']['order']||null:null,'group':db[_0x685a('0x19')][_0x685a('0x35')],'transaction':_0x156fad,'lock':_0x156fad[_0x685a('0x2f')][_0x685a('0x30')],'include':_0x5f2f0b['options']?_0x5f2f0b[_0x685a('0x1b')]['include']?_[_0x685a('0x20')](_0x5f2f0b['options'][_0x685a('0x1e')],function(_0x386ad2){return{'model':db[_0x386ad2[_0x685a('0x1f')]],'as':_0x386ad2['as'],'attributes':_0x386ad2['attributes'],'include':_0x386ad2['include']?_[_0x685a('0x20')](_0x386ad2[_0x685a('0x1e')],function(_0x2b8e64){return{'model':db[_0x2b8e64[_0x685a('0x1f')]],'as':_0x2b8e64['as'],'attributes':_0x2b8e64[_0x685a('0x1d')],'include':_0x2b8e64[_0x685a('0x1e')]?_[_0x685a('0x20')](_0x2b8e64[_0x685a('0x1e')],function(_0x489491){return{'model':db[_0x489491[_0x685a('0x1f')]],'as':_0x489491['as'],'attributes':_0x489491[_0x685a('0x1d')]};}):[]};}):[]};}):[]:[]})['then'](function(_0x357640){var _0x38fc7c=[];for(var _0x347914=0x0;_0x347914<_0x357640[_0x685a('0x47')];_0x347914+=0x1){_0x38fc7c[_0x685a('0x36')](_0x357640[_0x347914]['update'](_0x5f2f0b[_0x685a('0x25')],{'transaction':_0x156fad}));}return BPromise['all'](_0x38fc7c);});})[_0x685a('0xd')](function(_0x1d04d9){logger['info'](_0x685a('0x46'),_0x5f2f0b);logger[_0x685a('0x21')](_0x685a('0x46'),_0x5f2f0b,JSON[_0x685a('0x12')](_0x1d04d9));_0x201d25(_0x1d04d9);})[_0x685a('0x17')](function(_0x7819f){logger['error'](_0x685a('0x46'),_0x7819f[_0x685a('0x15')],_0x5f2f0b);_0x2775ac(_0x4029b9['error'](0x1f4,_0x7819f['message']));});});});};exports[_0x685a('0x48')]=function(_0x47adf7){var _0x42ca28=this;return new Promise(function(_0x151ae2,_0xe90fac){db[_0x685a('0x31')][_0x685a('0x2c')]()['then'](function(_0x5c1ee3){return db[_0x685a('0x19')]['findAll']({'raw':_0x47adf7[_0x685a('0x1b')]?_0x47adf7['options'][_0x685a('0x1c')]===undefined?!![]:![]:!![],'where':_0x47adf7[_0x685a('0x1b')]?_0x47adf7[_0x685a('0x1b')][_0x685a('0x24')]||null:null,'attributes':_0x47adf7['options']?_0x47adf7['options'][_0x685a('0x1d')]||null:null,'limit':_0x47adf7[_0x685a('0x1b')]?_0x47adf7[_0x685a('0x1b')][_0x685a('0x28')]||null:null,'include':_0x47adf7['options']?_0x47adf7['options'][_0x685a('0x1e')]?_[_0x685a('0x20')](_0x47adf7[_0x685a('0x1b')][_0x685a('0x1e')],function(_0x54fd2e){return{'model':db[_0x54fd2e['model']],'as':_0x54fd2e['as'],'attributes':_0x54fd2e['as']==='Contact'?_['keys'](_0x5c1ee3):_0x54fd2e['attributes'],'include':_0x54fd2e[_0x685a('0x1e')]?_['map'](_0x54fd2e[_0x685a('0x1e')],function(_0x34c14c){return{'model':db[_0x34c14c['model']],'as':_0x34c14c['as'],'attributes':_0x34c14c['attributes'],'include':_0x34c14c[_0x685a('0x1e')]?_['map'](_0x34c14c['include'],function(_0x1e666a){return{'model':db[_0x1e666a[_0x685a('0x1f')]],'as':_0x1e666a['as'],'attributes':_0x1e666a[_0x685a('0x1d')]};}):[]};}):[]};}):[]:[]})[_0x685a('0xd')](function(_0x3aba56){logger[_0x685a('0xe')](_0x685a('0x18'),_0x47adf7);logger[_0x685a('0x21')](_0x685a('0x18'),_0x47adf7,JSON[_0x685a('0x12')](_0x3aba56));_0x151ae2(_0x3aba56);})[_0x685a('0x17')](function(_0x4e4bde){logger[_0x685a('0x13')](_0x685a('0x18'),_0x4e4bde[_0x685a('0x15')],_0x47adf7);_0xe90fac(_0x42ca28['error'](0x1f4,_0x4e4bde[_0x685a('0x15')]));});});});};
\ No newline at end of file
index 02a85e4..b869b52 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6294=['../../components/auth/service','../../components/interaction/service','./cmHopper.controller','isAuthenticated','index','get','/describe','describe','/opencontacts','getOpenContacts','/:id','post','create','/preview','getPreview','put','update','delete','exports','multer','util','path','connect-timeout','express','Router','fs-extra'];(function(_0x5e15cd,_0x51c928){var _0x5469a8=function(_0xd97298){while(--_0xd97298){_0x5e15cd['push'](_0x5e15cd['shift']());}};_0x5469a8(++_0x51c928);}(_0x6294,0x1e7));var _0x4629=function(_0x6f1f88,_0x32a7e5){_0x6f1f88=_0x6f1f88-0x0;var _0x5d9dcd=_0x6294[_0x6f1f88];return _0x5d9dcd;};'use strict';var multer=require(_0x4629('0x0'));var util=require(_0x4629('0x1'));var path=require(_0x4629('0x2'));var timeout=require(_0x4629('0x3'));var express=require(_0x4629('0x4'));var router=express[_0x4629('0x5')]();var fs_extra=require(_0x4629('0x6'));var auth=require(_0x4629('0x7'));var interaction=require(_0x4629('0x8'));var config=require('../../config/environment');var controller=require(_0x4629('0x9'));router['get']('/',auth[_0x4629('0xa')](),controller[_0x4629('0xb')]);router[_0x4629('0xc')](_0x4629('0xd'),auth['isAuthenticated'](),controller[_0x4629('0xe')]);router[_0x4629('0xc')](_0x4629('0xf'),auth['isAuthenticated'](),controller[_0x4629('0x10')]);router['get'](_0x4629('0x11'),auth['isAuthenticated'](),controller['show']);router[_0x4629('0x12')]('/',auth[_0x4629('0xa')](),controller[_0x4629('0x13')]);router[_0x4629('0x12')](_0x4629('0x14'),auth[_0x4629('0xa')](),controller[_0x4629('0x15')]);router[_0x4629('0x16')](_0x4629('0x11'),auth[_0x4629('0xa')](),controller[_0x4629('0x17')]);router[_0x4629('0x18')](_0x4629('0x11'),auth[_0x4629('0xa')](),controller['destroy']);module[_0x4629('0x19')]=router;
\ No newline at end of file
+var _0x8c17=['exports','multer','util','path','connect-timeout','express','fs-extra','../../components/interaction/service','../../config/environment','./cmHopper.controller','get','index','isAuthenticated','describe','/opencontacts','getOpenContacts','/:id','show','create','post','/preview','put','delete'];(function(_0x3e2022,_0x29eab1){var _0x3541c4=function(_0x246d92){while(--_0x246d92){_0x3e2022['push'](_0x3e2022['shift']());}};_0x3541c4(++_0x29eab1);}(_0x8c17,0x1b6));var _0x78c1=function(_0x4e676e,_0x2a7c6d){_0x4e676e=_0x4e676e-0x0;var _0x336a3c=_0x8c17[_0x4e676e];return _0x336a3c;};'use strict';var multer=require(_0x78c1('0x0'));var util=require(_0x78c1('0x1'));var path=require(_0x78c1('0x2'));var timeout=require(_0x78c1('0x3'));var express=require(_0x78c1('0x4'));var router=express['Router']();var fs_extra=require(_0x78c1('0x5'));var auth=require('../../components/auth/service');var interaction=require(_0x78c1('0x6'));var config=require(_0x78c1('0x7'));var controller=require(_0x78c1('0x8'));router[_0x78c1('0x9')]('/',auth['isAuthenticated'](),controller[_0x78c1('0xa')]);router['get']('/describe',auth[_0x78c1('0xb')](),controller[_0x78c1('0xc')]);router[_0x78c1('0x9')](_0x78c1('0xd'),auth[_0x78c1('0xb')](),controller[_0x78c1('0xe')]);router[_0x78c1('0x9')](_0x78c1('0xf'),auth[_0x78c1('0xb')](),controller[_0x78c1('0x10')]);router['post']('/',auth[_0x78c1('0xb')](),controller[_0x78c1('0x11')]);router[_0x78c1('0x12')](_0x78c1('0x13'),auth[_0x78c1('0xb')](),controller['getPreview']);router[_0x78c1('0x14')]('/:id',auth[_0x78c1('0xb')](),controller['update']);router[_0x78c1('0x15')](_0x78c1('0xf'),auth[_0x78c1('0xb')](),controller['destroy']);module[_0x78c1('0x16')]=router;
\ No newline at end of file
index 2d481b3..e483d45 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8efc=['INTEGER','contactListQueue','exports'];(function(_0x5ebf8b,_0x43e753){var _0x3dfc6a=function(_0x2d98ef){while(--_0x2d98ef){_0x5ebf8b['push'](_0x5ebf8b['shift']());}};_0x3dfc6a(++_0x43e753);}(_0x8efc,0x8f));var _0xc8ef=function(_0x139ff6,_0xddca5){_0x139ff6=_0x139ff6-0x0;var _0x71b083=_0x8efc[_0x139ff6];return _0x71b083;};'use strict';var moment=require('moment');var Sequelize=require('sequelize');module[_0xc8ef('0x0')]={'phone':{'type':Sequelize['STRING'],'allowNull':![]},'ContactId':{'type':Sequelize[_0xc8ef('0x1')],'unique':'contactListQueue'},'ListId':{'type':Sequelize[_0xc8ef('0x1')],'unique':_0xc8ef('0x2')},'VoiceQueueId':{'type':Sequelize['INTEGER'],'unique':'contactListQueue'}};
\ No newline at end of file
+var _0xdba3=['moment','sequelize','STRING','INTEGER','contactListQueue'];(function(_0x49c3bd,_0x5eb9d5){var _0x26a65b=function(_0x2e2a98){while(--_0x2e2a98){_0x49c3bd['push'](_0x49c3bd['shift']());}};_0x26a65b(++_0x5eb9d5);}(_0xdba3,0x19f));var _0x3dba=function(_0x37adce,_0xe3e342){_0x37adce=_0x37adce-0x0;var _0x3cb7f9=_0xdba3[_0x37adce];return _0x3cb7f9;};'use strict';var moment=require(_0x3dba('0x0'));var Sequelize=require(_0x3dba('0x1'));module['exports']={'phone':{'type':Sequelize[_0x3dba('0x2')],'allowNull':![]},'ContactId':{'type':Sequelize[_0x3dba('0x3')],'unique':_0x3dba('0x4')},'ListId':{'type':Sequelize[_0x3dba('0x3')],'unique':_0x3dba('0x4')},'VoiceQueueId':{'type':Sequelize[_0x3dba('0x3')],'unique':_0x3dba('0x4')}};
\ No newline at end of file
index 22af845..fc7b810 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe58f=['sendStatus','status','json','offset','limit','undefined','count','set','apply','save','update','then','destroy','end','error','name','index','map','CmHopperBlack','rawAttributes','type','key','model','query','keys','filters','intersection','fields','attributes','length','order','sort','where','pick','merge','VIRTUAL','filter','options','includeAll','include','findAll','rows','catch','params','find','body','describe','eml-format','rimraf','zip-dir','fast-json-patch','moment','bluebird','util','path','sox','to-csv','ejs','fs-extra','lodash','squel','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'];(function(_0x2c00bd,_0x3391e8){var _0x58be6b=function(_0x3d2014){while(--_0x3d2014){_0x2c00bd['push'](_0x2c00bd['shift']());}};_0x58be6b(++_0x3391e8);}(_0xe58f,0x10d));var _0xfe58=function(_0x4c9c67,_0x4d7b9b){_0x4c9c67=_0x4c9c67-0x0;var _0x7bb6e7=_0xe58f[_0x4c9c67];return _0x7bb6e7;};'use strict';var emlformat=require(_0xfe58('0x0'));var rimraf=require(_0xfe58('0x1'));var zipdir=require(_0xfe58('0x2'));var jsonpatch=require(_0xfe58('0x3'));var rp=require('request-promise');var moment=require(_0xfe58('0x4'));var BPromise=require(_0xfe58('0x5'));var Mustache=require('mustache');var util=require(_0xfe58('0x6'));var path=require(_0xfe58('0x7'));var sox=require(_0xfe58('0x8'));var csv=require(_0xfe58('0x9'));var ejs=require(_0xfe58('0xa'));var fs=require('fs');var fs_extra=require(_0xfe58('0xb'));var _=require(_0xfe58('0xc'));var squel=require(_0xfe58('0xd'));var crypto=require('crypto');var jsforce=require('jsforce');var deskjs=require(_0xfe58('0xe'));var toCsv=require('to-csv');var querystring=require(_0xfe58('0xf'));var Papa=require(_0xfe58('0x10'));var Redis=require(_0xfe58('0x11'));var authService=require(_0xfe58('0x12'));var qs=require('../../components/parsers/qs');var as=require(_0xfe58('0x13'));var hardwareService=require(_0xfe58('0x14'));var logger=require(_0xfe58('0x15'))(_0xfe58('0x16'));var utils=require(_0xfe58('0x17'));var config=require(_0xfe58('0x18'));var licenseUtil=require(_0xfe58('0x19'));var db=require(_0xfe58('0x1a'))['db'];function respondWithStatusCode(_0x1eca2d,_0x436dc6){_0x436dc6=_0x436dc6||0xcc;return function(_0xaccc85){if(_0xaccc85){return _0x1eca2d[_0xfe58('0x1b')](_0x436dc6);}return _0x1eca2d[_0xfe58('0x1c')](_0x436dc6)['end']();};}function respondWithResult(_0x515468,_0x4426a4){_0x4426a4=_0x4426a4||0xc8;return function(_0x4ef1f2){if(_0x4ef1f2){return _0x515468[_0xfe58('0x1c')](_0x4426a4)[_0xfe58('0x1d')](_0x4ef1f2);}};}function respondWithFilteredResult(_0x344615,_0x39b0c7){return function(_0x28c694){if(_0x28c694){var _0x17d401=typeof _0x39b0c7[_0xfe58('0x1e')]==='undefined'&&typeof _0x39b0c7[_0xfe58('0x1f')]===_0xfe58('0x20');var _0x349190=_0x28c694[_0xfe58('0x21')];var _0x3fbcaf=_0x17d401?0x0:_0x39b0c7[_0xfe58('0x1e')];var _0x4cd9f7=_0x17d401?_0x28c694[_0xfe58('0x21')]:_0x39b0c7[_0xfe58('0x1e')]+_0x39b0c7[_0xfe58('0x1f')];var _0x1a916d;if(_0x4cd9f7>=_0x349190){_0x4cd9f7=_0x349190;_0x1a916d=0xc8;}else{_0x1a916d=0xce;}_0x344615[_0xfe58('0x1c')](_0x1a916d);return _0x344615[_0xfe58('0x22')]('Content-Range',_0x3fbcaf+'-'+_0x4cd9f7+'/'+_0x349190)[_0xfe58('0x1d')](_0x28c694);}return null;};}function patchUpdates(_0xa212a9){return function(_0x4c8af1){try{jsonpatch[_0xfe58('0x23')](_0x4c8af1,_0xa212a9,!![]);}catch(_0x300f07){return BPromise['reject'](_0x300f07);}return _0x4c8af1[_0xfe58('0x24')]();};}function saveUpdates(_0x569382,_0x55b97f){return function(_0x8a3f7c){if(_0x8a3f7c){return _0x8a3f7c[_0xfe58('0x25')](_0x569382)[_0xfe58('0x26')](function(_0x74a4d5){return _0x74a4d5;});}return null;};}function removeEntity(_0xb7a4e7,_0x8fe8d9){return function(_0x52f803){if(_0x52f803){return _0x52f803[_0xfe58('0x27')]()[_0xfe58('0x26')](function(){_0xb7a4e7['status'](0xcc)[_0xfe58('0x28')]();});}};}function handleEntityNotFound(_0xb6e646,_0x48050c){return function(_0x286629){if(!_0x286629){_0xb6e646[_0xfe58('0x1b')](0x194);}return _0x286629;};}function handleError(_0xdc7068,_0x431f25){_0x431f25=_0x431f25||0x1f4;return function(_0x55ebf7){logger[_0xfe58('0x29')](_0x55ebf7['stack']);if(_0x55ebf7[_0xfe58('0x2a')]){delete _0x55ebf7['name'];}_0xdc7068[_0xfe58('0x1c')](_0x431f25)['send'](_0x55ebf7);};}exports[_0xfe58('0x2b')]=function(_0xf751ed,_0x5d20b3){var _0x30e99c={},_0x5064c1={},_0x2a83ba={'count':0x0,'rows':[]};var _0x428f0c=_[_0xfe58('0x2c')](db[_0xfe58('0x2d')][_0xfe58('0x2e')],function(_0x5b4b7a){return{'name':_0x5b4b7a['fieldName'],'type':_0x5b4b7a[_0xfe58('0x2f')][_0xfe58('0x30')]};});_0x5064c1[_0xfe58('0x31')]=_['map'](_0x428f0c,_0xfe58('0x2a'));_0x5064c1[_0xfe58('0x32')]=_[_0xfe58('0x33')](_0xf751ed[_0xfe58('0x32')]);_0x5064c1[_0xfe58('0x34')]=_[_0xfe58('0x35')](_0x5064c1[_0xfe58('0x31')],_0x5064c1['query']);_0x30e99c['attributes']=_[_0xfe58('0x35')](_0x5064c1[_0xfe58('0x31')],qs[_0xfe58('0x36')](_0xf751ed[_0xfe58('0x32')]['fields']));_0x30e99c[_0xfe58('0x37')]=_0x30e99c['attributes'][_0xfe58('0x38')]?_0x30e99c[_0xfe58('0x37')]:_0x5064c1[_0xfe58('0x31')];if(!_0xf751ed[_0xfe58('0x32')]['hasOwnProperty']('nolimit')){_0x30e99c[_0xfe58('0x1f')]=qs[_0xfe58('0x1f')](_0xf751ed[_0xfe58('0x32')]['limit']);_0x30e99c[_0xfe58('0x1e')]=qs['offset'](_0xf751ed[_0xfe58('0x32')]['offset']);}_0x30e99c[_0xfe58('0x39')]=qs[_0xfe58('0x3a')](_0xf751ed[_0xfe58('0x32')]['sort']);_0x30e99c[_0xfe58('0x3b')]=qs['filters'](_[_0xfe58('0x3c')](_0xf751ed[_0xfe58('0x32')],_0x5064c1[_0xfe58('0x34')]),_0x428f0c);if(_0xf751ed[_0xfe58('0x32')]['filter']){_0x30e99c[_0xfe58('0x3b')]=_[_0xfe58('0x3d')](_0x30e99c[_0xfe58('0x3b')],{'$or':_[_0xfe58('0x2c')](_0x428f0c,function(_0x20d8b4){if(_0x20d8b4['type']!==_0xfe58('0x3e')){var _0xdc8851={};_0xdc8851[_0x20d8b4[_0xfe58('0x2a')]]={'$like':'%'+_0xf751ed['query'][_0xfe58('0x3f')]+'%'};return _0xdc8851;}})});}_0x30e99c=_[_0xfe58('0x3d')]({},_0x30e99c,_0xf751ed[_0xfe58('0x40')]);var _0x5d6e88={'where':_0x30e99c[_0xfe58('0x3b')]};return db['CmHopperBlack'][_0xfe58('0x21')](_0x5d6e88)[_0xfe58('0x26')](function(_0x5c034b){_0x2a83ba['count']=_0x5c034b;if(_0xf751ed[_0xfe58('0x32')][_0xfe58('0x41')]){_0x30e99c[_0xfe58('0x42')]=[{'all':!![]}];}return db[_0xfe58('0x2d')][_0xfe58('0x43')](_0x30e99c);})[_0xfe58('0x26')](function(_0x37cf1c){_0x2a83ba[_0xfe58('0x44')]=_0x37cf1c;return _0x2a83ba;})[_0xfe58('0x26')](respondWithFilteredResult(_0x5d20b3,_0x30e99c))[_0xfe58('0x45')](handleError(_0x5d20b3,null));};exports['show']=function(_0x489480,_0x32cd76){var _0x1d560b={'raw':!![],'where':{'id':_0x489480[_0xfe58('0x46')]['id']}},_0x46132b={};_0x46132b['model']=_[_0xfe58('0x33')](db['CmHopperBlack'][_0xfe58('0x2e')]);_0x46132b[_0xfe58('0x32')]=_[_0xfe58('0x33')](_0x489480[_0xfe58('0x32')]);_0x46132b[_0xfe58('0x34')]=_[_0xfe58('0x35')](_0x46132b[_0xfe58('0x31')],_0x46132b[_0xfe58('0x32')]);_0x1d560b[_0xfe58('0x37')]=_[_0xfe58('0x35')](_0x46132b['model'],qs['fields'](_0x489480[_0xfe58('0x32')][_0xfe58('0x36')]));_0x1d560b[_0xfe58('0x37')]=_0x1d560b[_0xfe58('0x37')][_0xfe58('0x38')]?_0x1d560b[_0xfe58('0x37')]:_0x46132b['model'];if(_0x489480['query']['includeAll']){_0x1d560b['include']=[{'all':!![]}];}_0x1d560b=_[_0xfe58('0x3d')]({},_0x1d560b,_0x489480[_0xfe58('0x40')]);return db[_0xfe58('0x2d')][_0xfe58('0x47')](_0x1d560b)[_0xfe58('0x26')](handleEntityNotFound(_0x32cd76,null))['then'](respondWithResult(_0x32cd76,null))[_0xfe58('0x45')](handleError(_0x32cd76,null));};exports[_0xfe58('0x25')]=function(_0x16679e,_0x376b86){if(_0x16679e[_0xfe58('0x48')]['id']){delete _0x16679e['body']['id'];}return db[_0xfe58('0x2d')][_0xfe58('0x47')]({'where':{'id':_0x16679e[_0xfe58('0x46')]['id']}})[_0xfe58('0x26')](handleEntityNotFound(_0x376b86,null))[_0xfe58('0x26')](saveUpdates(_0x16679e[_0xfe58('0x48')],null))[_0xfe58('0x26')](respondWithResult(_0x376b86,null))[_0xfe58('0x45')](handleError(_0x376b86,null));};exports[_0xfe58('0x27')]=function(_0x3fec35,_0x6a155e){return db['CmHopperBlack'][_0xfe58('0x47')]({'where':{'id':_0x3fec35['params']['id']}})[_0xfe58('0x26')](handleEntityNotFound(_0x6a155e,null))[_0xfe58('0x26')](removeEntity(_0x6a155e,null))[_0xfe58('0x45')](handleError(_0x6a155e,null));};exports[_0xfe58('0x49')]=function(_0x25001c,_0x1de1ab){return db[_0xfe58('0x2d')]['describe']()[_0xfe58('0x26')](respondWithResult(_0x1de1ab,null))['catch'](handleError(_0x1de1ab,null));};
\ No newline at end of file
+var _0x5ae9=['bluebird','mustache','path','to-csv','ejs','fs-extra','lodash','squel','desk.js','querystring','papaparse','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','../../config/environment','../../mysqldb','sendStatus','status','json','offset','undefined','limit','count','apply','save','then','destroy','end','error','stack','name','index','map','rawAttributes','key','model','query','filters','attributes','intersection','fields','length','hasOwnProperty','nolimit','order','sort','where','pick','filter','merge','VIRTUAL','options','CmHopperBlack','includeAll','include','findAll','rows','catch','show','keys','find','update','body','params','describe','eml-format','fast-json-patch','request-promise'];(function(_0x2ae2ad,_0xac5b0c){var _0x26dbd7=function(_0x5e685b){while(--_0x5e685b){_0x2ae2ad['push'](_0x2ae2ad['shift']());}};_0x26dbd7(++_0xac5b0c);}(_0x5ae9,0x19b));var _0x95ae=function(_0x1ce7cf,_0x1706be){_0x1ce7cf=_0x1ce7cf-0x0;var _0x38fe5a=_0x5ae9[_0x1ce7cf];return _0x38fe5a;};'use strict';var emlformat=require(_0x95ae('0x0'));var rimraf=require('rimraf');var zipdir=require('zip-dir');var jsonpatch=require(_0x95ae('0x1'));var rp=require(_0x95ae('0x2'));var moment=require('moment');var BPromise=require(_0x95ae('0x3'));var Mustache=require(_0x95ae('0x4'));var util=require('util');var path=require(_0x95ae('0x5'));var sox=require('sox');var csv=require(_0x95ae('0x6'));var ejs=require(_0x95ae('0x7'));var fs=require('fs');var fs_extra=require(_0x95ae('0x8'));var _=require(_0x95ae('0x9'));var squel=require(_0x95ae('0xa'));var crypto=require('crypto');var jsforce=require('jsforce');var deskjs=require(_0x95ae('0xb'));var toCsv=require(_0x95ae('0x6'));var querystring=require(_0x95ae('0xc'));var Papa=require(_0x95ae('0xd'));var Redis=require('ioredis');var authService=require('../../components/auth/service');var qs=require(_0x95ae('0xe'));var as=require(_0x95ae('0xf'));var hardwareService=require(_0x95ae('0x10'));var logger=require(_0x95ae('0x11'))('api');var utils=require('../../config/utils');var config=require(_0x95ae('0x12'));var licenseUtil=require('../../config/license/util');var db=require(_0x95ae('0x13'))['db'];function respondWithStatusCode(_0x2a9b87,_0x530bb8){_0x530bb8=_0x530bb8||0xcc;return function(_0xc1af8f){if(_0xc1af8f){return _0x2a9b87[_0x95ae('0x14')](_0x530bb8);}return _0x2a9b87[_0x95ae('0x15')](_0x530bb8)['end']();};}function respondWithResult(_0x4685a4,_0x3af218){_0x3af218=_0x3af218||0xc8;return function(_0x308b7a){if(_0x308b7a){return _0x4685a4['status'](_0x3af218)[_0x95ae('0x16')](_0x308b7a);}};}function respondWithFilteredResult(_0x5ebbb7,_0x210e00){return function(_0x57bd67){if(_0x57bd67){var _0x2594fe=typeof _0x210e00[_0x95ae('0x17')]===_0x95ae('0x18')&&typeof _0x210e00[_0x95ae('0x19')]===_0x95ae('0x18');var _0x38b457=_0x57bd67[_0x95ae('0x1a')];var _0x24d5d2=_0x2594fe?0x0:_0x210e00[_0x95ae('0x17')];var _0x47ed05=_0x2594fe?_0x57bd67[_0x95ae('0x1a')]:_0x210e00[_0x95ae('0x17')]+_0x210e00['limit'];var _0x14a11d;if(_0x47ed05>=_0x38b457){_0x47ed05=_0x38b457;_0x14a11d=0xc8;}else{_0x14a11d=0xce;}_0x5ebbb7[_0x95ae('0x15')](_0x14a11d);return _0x5ebbb7['set']('Content-Range',_0x24d5d2+'-'+_0x47ed05+'/'+_0x38b457)[_0x95ae('0x16')](_0x57bd67);}return null;};}function patchUpdates(_0x16aa0c){return function(_0x1359a8){try{jsonpatch[_0x95ae('0x1b')](_0x1359a8,_0x16aa0c,!![]);}catch(_0x8ed1b1){return BPromise['reject'](_0x8ed1b1);}return _0x1359a8[_0x95ae('0x1c')]();};}function saveUpdates(_0x457324,_0x1ecde4){return function(_0x2ad155){if(_0x2ad155){return _0x2ad155['update'](_0x457324)[_0x95ae('0x1d')](function(_0x5b0453){return _0x5b0453;});}return null;};}function removeEntity(_0x7fd81f,_0x59f88a){return function(_0x2b46c5){if(_0x2b46c5){return _0x2b46c5[_0x95ae('0x1e')]()[_0x95ae('0x1d')](function(){_0x7fd81f['status'](0xcc)[_0x95ae('0x1f')]();});}};}function handleEntityNotFound(_0x25d81c,_0x1b3dc5){return function(_0x1437e1){if(!_0x1437e1){_0x25d81c[_0x95ae('0x14')](0x194);}return _0x1437e1;};}function handleError(_0x4d24a6,_0x455eda){_0x455eda=_0x455eda||0x1f4;return function(_0x4e2436){logger[_0x95ae('0x20')](_0x4e2436[_0x95ae('0x21')]);if(_0x4e2436[_0x95ae('0x22')]){delete _0x4e2436['name'];}_0x4d24a6[_0x95ae('0x15')](_0x455eda)['send'](_0x4e2436);};}exports[_0x95ae('0x23')]=function(_0x5f4d16,_0x611fca){var _0x424e0f={},_0x4fa625={},_0x3df451={'count':0x0,'rows':[]};var _0x2751c9=_[_0x95ae('0x24')](db['CmHopperBlack'][_0x95ae('0x25')],function(_0x4c111d){return{'name':_0x4c111d['fieldName'],'type':_0x4c111d['type'][_0x95ae('0x26')]};});_0x4fa625[_0x95ae('0x27')]=_[_0x95ae('0x24')](_0x2751c9,'name');_0x4fa625[_0x95ae('0x28')]=_['keys'](_0x5f4d16[_0x95ae('0x28')]);_0x4fa625[_0x95ae('0x29')]=_['intersection'](_0x4fa625[_0x95ae('0x27')],_0x4fa625['query']);_0x424e0f[_0x95ae('0x2a')]=_[_0x95ae('0x2b')](_0x4fa625['model'],qs[_0x95ae('0x2c')](_0x5f4d16[_0x95ae('0x28')][_0x95ae('0x2c')]));_0x424e0f[_0x95ae('0x2a')]=_0x424e0f[_0x95ae('0x2a')][_0x95ae('0x2d')]?_0x424e0f[_0x95ae('0x2a')]:_0x4fa625['model'];if(!_0x5f4d16['query'][_0x95ae('0x2e')](_0x95ae('0x2f'))){_0x424e0f[_0x95ae('0x19')]=qs[_0x95ae('0x19')](_0x5f4d16[_0x95ae('0x28')]['limit']);_0x424e0f[_0x95ae('0x17')]=qs[_0x95ae('0x17')](_0x5f4d16[_0x95ae('0x28')][_0x95ae('0x17')]);}_0x424e0f[_0x95ae('0x30')]=qs[_0x95ae('0x31')](_0x5f4d16['query'][_0x95ae('0x31')]);_0x424e0f[_0x95ae('0x32')]=qs[_0x95ae('0x29')](_[_0x95ae('0x33')](_0x5f4d16['query'],_0x4fa625[_0x95ae('0x29')]),_0x2751c9);if(_0x5f4d16['query'][_0x95ae('0x34')]){_0x424e0f[_0x95ae('0x32')]=_[_0x95ae('0x35')](_0x424e0f[_0x95ae('0x32')],{'$or':_[_0x95ae('0x24')](_0x2751c9,function(_0x2222a2){if(_0x2222a2['type']!==_0x95ae('0x36')){var _0xf65b36={};_0xf65b36[_0x2222a2['name']]={'$like':'%'+_0x5f4d16['query'][_0x95ae('0x34')]+'%'};return _0xf65b36;}})});}_0x424e0f=_[_0x95ae('0x35')]({},_0x424e0f,_0x5f4d16[_0x95ae('0x37')]);var _0x53ca83={'where':_0x424e0f[_0x95ae('0x32')]};return db[_0x95ae('0x38')][_0x95ae('0x1a')](_0x53ca83)[_0x95ae('0x1d')](function(_0x1a3b58){_0x3df451[_0x95ae('0x1a')]=_0x1a3b58;if(_0x5f4d16['query'][_0x95ae('0x39')]){_0x424e0f[_0x95ae('0x3a')]=[{'all':!![]}];}return db[_0x95ae('0x38')][_0x95ae('0x3b')](_0x424e0f);})[_0x95ae('0x1d')](function(_0xf41d5b){_0x3df451[_0x95ae('0x3c')]=_0xf41d5b;return _0x3df451;})['then'](respondWithFilteredResult(_0x611fca,_0x424e0f))[_0x95ae('0x3d')](handleError(_0x611fca,null));};exports[_0x95ae('0x3e')]=function(_0x288d33,_0x36b11b){var _0x1ea78e={'raw':!![],'where':{'id':_0x288d33['params']['id']}},_0x4ec147={};_0x4ec147[_0x95ae('0x27')]=_[_0x95ae('0x3f')](db[_0x95ae('0x38')][_0x95ae('0x25')]);_0x4ec147['query']=_['keys'](_0x288d33['query']);_0x4ec147[_0x95ae('0x29')]=_['intersection'](_0x4ec147['model'],_0x4ec147[_0x95ae('0x28')]);_0x1ea78e[_0x95ae('0x2a')]=_['intersection'](_0x4ec147[_0x95ae('0x27')],qs[_0x95ae('0x2c')](_0x288d33[_0x95ae('0x28')][_0x95ae('0x2c')]));_0x1ea78e['attributes']=_0x1ea78e[_0x95ae('0x2a')][_0x95ae('0x2d')]?_0x1ea78e[_0x95ae('0x2a')]:_0x4ec147['model'];if(_0x288d33[_0x95ae('0x28')][_0x95ae('0x39')]){_0x1ea78e[_0x95ae('0x3a')]=[{'all':!![]}];}_0x1ea78e=_[_0x95ae('0x35')]({},_0x1ea78e,_0x288d33[_0x95ae('0x37')]);return db[_0x95ae('0x38')][_0x95ae('0x40')](_0x1ea78e)[_0x95ae('0x1d')](handleEntityNotFound(_0x36b11b,null))[_0x95ae('0x1d')](respondWithResult(_0x36b11b,null))['catch'](handleError(_0x36b11b,null));};exports[_0x95ae('0x41')]=function(_0x55e6e3,_0x41cec7){if(_0x55e6e3[_0x95ae('0x42')]['id']){delete _0x55e6e3[_0x95ae('0x42')]['id'];}return db['CmHopperBlack'][_0x95ae('0x40')]({'where':{'id':_0x55e6e3[_0x95ae('0x43')]['id']}})['then'](handleEntityNotFound(_0x41cec7,null))[_0x95ae('0x1d')](saveUpdates(_0x55e6e3[_0x95ae('0x42')],null))['then'](respondWithResult(_0x41cec7,null))[_0x95ae('0x3d')](handleError(_0x41cec7,null));};exports[_0x95ae('0x1e')]=function(_0x5bfdd1,_0xb6cbd0){return db['CmHopperBlack'][_0x95ae('0x40')]({'where':{'id':_0x5bfdd1[_0x95ae('0x43')]['id']}})[_0x95ae('0x1d')](handleEntityNotFound(_0xb6cbd0,null))['then'](removeEntity(_0xb6cbd0,null))[_0x95ae('0x3d')](handleError(_0xb6cbd0,null));};exports[_0x95ae('0x44')]=function(_0x5322b1,_0xcae893){return db[_0x95ae('0x38')]['describe']()['then'](respondWithResult(_0xcae893,null))[_0x95ae('0x3d')](handleError(_0xcae893,null));};
\ No newline at end of file
index 073df05..22a0a36 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2e96=['define','cm_hopper_black','util','../../config/logger','api','moment','bluebird','request-promise','rimraf','../../config/environment','./cmHopperBlack.attributes','exports'];(function(_0x20a584,_0xe384a5){var _0x4b41a8=function(_0x2127c6){while(--_0x2127c6){_0x20a584['push'](_0x20a584['shift']());}};_0x4b41a8(++_0xe384a5);}(_0x2e96,0x13a));var _0x62e9=function(_0x237cfd,_0x35c104){_0x237cfd=_0x237cfd-0x0;var _0x1f0577=_0x2e96[_0x237cfd];return _0x1f0577;};'use strict';var _=require('lodash');var util=require(_0x62e9('0x0'));var logger=require(_0x62e9('0x1'))(_0x62e9('0x2'));var moment=require(_0x62e9('0x3'));var BPromise=require(_0x62e9('0x4'));var rp=require(_0x62e9('0x5'));var fs=require('fs');var path=require('path');var rimraf=require(_0x62e9('0x6'));var config=require(_0x62e9('0x7'));var attributes=require(_0x62e9('0x8'));module[_0x62e9('0x9')]=function(_0x2eae64,_0x2fd42e){return _0x2eae64[_0x62e9('0xa')]('CmHopperBlack',attributes,{'tableName':_0x62e9('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x9ece=['path','rimraf','../../config/environment','exports','define','lodash','../../config/logger','api'];(function(_0x5d6839,_0x489e9d){var _0x319319=function(_0x814f86){while(--_0x814f86){_0x5d6839['push'](_0x5d6839['shift']());}};_0x319319(++_0x489e9d);}(_0x9ece,0x1b5));var _0xe9ec=function(_0x2ed20b,_0x219cd4){_0x2ed20b=_0x2ed20b-0x0;var _0x2ef910=_0x9ece[_0x2ed20b];return _0x2ef910;};'use strict';var _=require(_0xe9ec('0x0'));var util=require('util');var logger=require(_0xe9ec('0x1'))(_0xe9ec('0x2'));var moment=require('moment');var BPromise=require('bluebird');var rp=require('request-promise');var fs=require('fs');var path=require(_0xe9ec('0x3'));var rimraf=require(_0xe9ec('0x4'));var config=require(_0xe9ec('0x5'));var attributes=require('./cmHopperBlack.attributes');module[_0xe9ec('0x6')]=function(_0x38a849,_0x12bbd7){return _0x38a849[_0xe9ec('0x7')]('CmHopperBlack',attributes,{'tableName':'cm_hopper_black','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index deb2bad..c085651 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x655c=['options','raw','attributes','limit','include','map','model','then','GetCmHopperBlack','debug','UpdateCmHopperBlack','CmHopperBlack','destroy','where','DestroyCmHopperBlack','lodash','util','bluebird','randomstring','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','http','request','info','CmHopperBlack,\x20%s,\x20%s','request\x20sent','CmHopperBlack,\x20%s,\x20%s,\x20%s','stringify','error','message','catch','findAll'];(function(_0x36a560,_0x57378b){var _0x10923a=function(_0xd1fa18){while(--_0xd1fa18){_0x36a560['push'](_0x36a560['shift']());}};_0x10923a(++_0x57378b);}(_0x655c,0x9f));var _0xc655=function(_0x4aab3d,_0x13b94e){_0x4aab3d=_0x4aab3d-0x0;var _0x327294=_0x655c[_0x4aab3d];return _0x327294;};'use strict';var _=require(_0xc655('0x0'));var util=require(_0xc655('0x1'));var moment=require('moment');var BPromise=require(_0xc655('0x2'));var rs=require(_0xc655('0x3'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0xc655('0x4'))['db'];var utils=require(_0xc655('0x5'));var logger=require(_0xc655('0x6'))(_0xc655('0x7'));var config=require(_0xc655('0x8'));var jayson=require(_0xc655('0x9'));var client=jayson['client'][_0xc655('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x349258,_0x424a7b,_0x1a1edc){return new BPromise(function(_0x28e3cf,_0x571f0d){return client[_0xc655('0xb')](_0x349258,_0x1a1edc)['then'](function(_0x5e8ee5){logger[_0xc655('0xc')](_0xc655('0xd'),_0x424a7b,_0xc655('0xe'));logger['debug'](_0xc655('0xf'),_0x424a7b,_0xc655('0xe'),JSON[_0xc655('0x10')](_0x5e8ee5));if(_0x5e8ee5[_0xc655('0x11')]){if(_0x5e8ee5['error']['code']===0x1f4){logger['error'](_0xc655('0xd'),_0x424a7b,_0x5e8ee5[_0xc655('0x11')]['message']);return _0x571f0d(_0x5e8ee5[_0xc655('0x11')]['message']);}logger[_0xc655('0x11')](_0xc655('0xd'),_0x424a7b,_0x5e8ee5[_0xc655('0x11')][_0xc655('0x12')]);return _0x28e3cf(_0x5e8ee5['error'][_0xc655('0x12')]);}else{logger[_0xc655('0xc')](_0xc655('0xd'),_0x424a7b,_0xc655('0xe'));_0x28e3cf(_0x5e8ee5['result']['message']);}})[_0xc655('0x13')](function(_0x45b039){logger[_0xc655('0x11')](_0xc655('0xd'),_0x424a7b,_0x45b039);_0x571f0d(_0x45b039);});});}exports['GetCmHopperBlack']=function(_0x10b0f6){var _0x2ea047=this;return new Promise(function(_0x319f32,_0x5472e1){return db['CmHopperBlack'][_0xc655('0x14')]({'raw':_0x10b0f6[_0xc655('0x15')]?_0x10b0f6['options'][_0xc655('0x16')]===undefined?!![]:![]:!![],'where':_0x10b0f6['options']?_0x10b0f6[_0xc655('0x15')]['where']||null:null,'attributes':_0x10b0f6['options']?_0x10b0f6[_0xc655('0x15')][_0xc655('0x17')]||null:null,'limit':_0x10b0f6[_0xc655('0x15')]?_0x10b0f6[_0xc655('0x15')][_0xc655('0x18')]||null:null,'include':_0x10b0f6[_0xc655('0x15')]?_0x10b0f6[_0xc655('0x15')][_0xc655('0x19')]?_[_0xc655('0x1a')](_0x10b0f6[_0xc655('0x15')][_0xc655('0x19')],function(_0x3b26ca){return{'model':db[_0x3b26ca[_0xc655('0x1b')]],'as':_0x3b26ca['as'],'attributes':_0x3b26ca['attributes'],'include':_0x3b26ca['include']?_[_0xc655('0x1a')](_0x3b26ca['include'],function(_0xd38d8e){return{'model':db[_0xd38d8e[_0xc655('0x1b')]],'as':_0xd38d8e['as'],'attributes':_0xd38d8e[_0xc655('0x17')],'include':_0xd38d8e[_0xc655('0x19')]?_[_0xc655('0x1a')](_0xd38d8e['include'],function(_0x2a1be3){return{'model':db[_0x2a1be3['model']],'as':_0x2a1be3['as'],'attributes':_0x2a1be3[_0xc655('0x17')]};}):[]};}):[]};}):[]:[]})[_0xc655('0x1c')](function(_0x56ad2c){logger[_0xc655('0xc')](_0xc655('0x1d'),_0x10b0f6);logger[_0xc655('0x1e')](_0xc655('0x1d'),_0x10b0f6,JSON[_0xc655('0x10')](_0x56ad2c));_0x319f32(_0x56ad2c);})[_0xc655('0x13')](function(_0x1b5345){logger[_0xc655('0x11')](_0xc655('0x1d'),_0x1b5345['message'],_0x10b0f6);_0x5472e1(_0x2ea047[_0xc655('0x11')](0x1f4,_0x1b5345[_0xc655('0x12')]));});});};exports[_0xc655('0x1f')]=function(_0x26b366){var _0x3b444c=this;return new Promise(function(_0x5601fa,_0x34f28f){return db[_0xc655('0x20')]['update'](_0x26b366['body'],{'raw':_0x26b366[_0xc655('0x15')]?_0x26b366[_0xc655('0x15')][_0xc655('0x16')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x26b366[_0xc655('0x15')]?_0x26b366[_0xc655('0x15')]['where']||null:null,'attributes':_0x26b366['options']?_0x26b366[_0xc655('0x15')][_0xc655('0x17')]||null:null,'limit':_0x26b366[_0xc655('0x15')]?_0x26b366[_0xc655('0x15')][_0xc655('0x18')]||null:null})[_0xc655('0x1c')](function(_0x2b6394){logger[_0xc655('0xc')](_0xc655('0x1f'),_0x26b366);logger[_0xc655('0x1e')](_0xc655('0x1f'),_0x26b366,JSON[_0xc655('0x10')](_0x2b6394));_0x5601fa(_0x2b6394);})[_0xc655('0x13')](function(_0x53a787){logger[_0xc655('0x11')]('UpdateCmHopperBlack',_0x53a787[_0xc655('0x12')],_0x26b366);_0x34f28f(_0x3b444c[_0xc655('0x11')](0x1f4,_0x53a787['message']));});});};exports['DestroyCmHopperBlack']=function(_0x446dbe){var _0x1c7e76=this;return new Promise(function(_0x30b11c,_0x39b22a){return db[_0xc655('0x20')][_0xc655('0x21')]({'where':_0x446dbe[_0xc655('0x15')]?_0x446dbe[_0xc655('0x15')][_0xc655('0x22')]||null:null})['then'](function(_0x289899){logger['info'](_0xc655('0x23'),_0x446dbe);logger[_0xc655('0x1e')](_0xc655('0x23'),_0x446dbe,JSON[_0xc655('0x10')](_0x289899));_0x30b11c(_0x289899);})[_0xc655('0x13')](function(_0x161ed9){logger[_0xc655('0x11')]('DestroyCmHopperBlack',_0x161ed9[_0xc655('0x12')],_0x446dbe);_0x39b22a(_0x1c7e76[_0xc655('0x11')](0x1f4,_0x161ed9[_0xc655('0x12')]));});});};
\ No newline at end of file
+var _0x4ef4=['CmHopperBlack,\x20%s,\x20%s','request\x20sent','debug','CmHopperBlack,\x20%s,\x20%s,\x20%s','error','code','message','result','catch','GetCmHopperBlack','CmHopperBlack','options','raw','where','limit','include','map','model','attributes','stringify','update','body','info','UpdateCmHopperBlack','DestroyCmHopperBlack','lodash','util','moment','bluebird','ioredis','../../mysqldb','../../config/utils','rpc','jayson/promise','client','request','then'];(function(_0x4f0217,_0x29aa7e){var _0x4da152=function(_0x213af1){while(--_0x213af1){_0x4f0217['push'](_0x4f0217['shift']());}};_0x4da152(++_0x29aa7e);}(_0x4ef4,0x1b0));var _0x44ef=function(_0x3dfef8,_0x22f885){_0x3dfef8=_0x3dfef8-0x0;var _0x4ddee1=_0x4ef4[_0x3dfef8];return _0x4ddee1;};'use strict';var _=require(_0x44ef('0x0'));var util=require(_0x44ef('0x1'));var moment=require(_0x44ef('0x2'));var BPromise=require(_0x44ef('0x3'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x44ef('0x4'));var db=require(_0x44ef('0x5'))['db'];var utils=require(_0x44ef('0x6'));var logger=require('../../config/logger')(_0x44ef('0x7'));var config=require('../../config/environment');var jayson=require(_0x44ef('0x8'));var client=jayson[_0x44ef('0x9')]['http']({'port':0x232a});function respondWithRpcPromise(_0x5c4e6,_0x44853b,_0x1235ee){return new BPromise(function(_0x16394c,_0x3a19fb){return client[_0x44ef('0xa')](_0x5c4e6,_0x1235ee)[_0x44ef('0xb')](function(_0x2fda97){logger['info'](_0x44ef('0xc'),_0x44853b,_0x44ef('0xd'));logger[_0x44ef('0xe')](_0x44ef('0xf'),_0x44853b,_0x44ef('0xd'),JSON['stringify'](_0x2fda97));if(_0x2fda97[_0x44ef('0x10')]){if(_0x2fda97[_0x44ef('0x10')][_0x44ef('0x11')]===0x1f4){logger[_0x44ef('0x10')](_0x44ef('0xc'),_0x44853b,_0x2fda97['error'][_0x44ef('0x12')]);return _0x3a19fb(_0x2fda97[_0x44ef('0x10')][_0x44ef('0x12')]);}logger[_0x44ef('0x10')](_0x44ef('0xc'),_0x44853b,_0x2fda97[_0x44ef('0x10')][_0x44ef('0x12')]);return _0x16394c(_0x2fda97[_0x44ef('0x10')][_0x44ef('0x12')]);}else{logger['info'](_0x44ef('0xc'),_0x44853b,_0x44ef('0xd'));_0x16394c(_0x2fda97[_0x44ef('0x13')][_0x44ef('0x12')]);}})[_0x44ef('0x14')](function(_0x2d2d23){logger[_0x44ef('0x10')](_0x44ef('0xc'),_0x44853b,_0x2d2d23);_0x3a19fb(_0x2d2d23);});});}exports[_0x44ef('0x15')]=function(_0x118b96){var _0x16adea=this;return new Promise(function(_0x53e56e,_0x289e10){return db[_0x44ef('0x16')]['findAll']({'raw':_0x118b96[_0x44ef('0x17')]?_0x118b96[_0x44ef('0x17')][_0x44ef('0x18')]===undefined?!![]:![]:!![],'where':_0x118b96['options']?_0x118b96['options'][_0x44ef('0x19')]||null:null,'attributes':_0x118b96[_0x44ef('0x17')]?_0x118b96[_0x44ef('0x17')]['attributes']||null:null,'limit':_0x118b96[_0x44ef('0x17')]?_0x118b96[_0x44ef('0x17')][_0x44ef('0x1a')]||null:null,'include':_0x118b96[_0x44ef('0x17')]?_0x118b96[_0x44ef('0x17')][_0x44ef('0x1b')]?_[_0x44ef('0x1c')](_0x118b96[_0x44ef('0x17')][_0x44ef('0x1b')],function(_0x5c7024){return{'model':db[_0x5c7024[_0x44ef('0x1d')]],'as':_0x5c7024['as'],'attributes':_0x5c7024[_0x44ef('0x1e')],'include':_0x5c7024['include']?_[_0x44ef('0x1c')](_0x5c7024[_0x44ef('0x1b')],function(_0x2a8d5d){return{'model':db[_0x2a8d5d[_0x44ef('0x1d')]],'as':_0x2a8d5d['as'],'attributes':_0x2a8d5d['attributes'],'include':_0x2a8d5d[_0x44ef('0x1b')]?_['map'](_0x2a8d5d[_0x44ef('0x1b')],function(_0x3746fb){return{'model':db[_0x3746fb[_0x44ef('0x1d')]],'as':_0x3746fb['as'],'attributes':_0x3746fb[_0x44ef('0x1e')]};}):[]};}):[]};}):[]:[]})['then'](function(_0x5513f3){logger['info'](_0x44ef('0x15'),_0x118b96);logger[_0x44ef('0xe')](_0x44ef('0x15'),_0x118b96,JSON[_0x44ef('0x1f')](_0x5513f3));_0x53e56e(_0x5513f3);})[_0x44ef('0x14')](function(_0x398820){logger[_0x44ef('0x10')](_0x44ef('0x15'),_0x398820[_0x44ef('0x12')],_0x118b96);_0x289e10(_0x16adea['error'](0x1f4,_0x398820[_0x44ef('0x12')]));});});};exports['UpdateCmHopperBlack']=function(_0x5b9c49){var _0x40d71c=this;return new Promise(function(_0x32ce43,_0x2d8a10){return db[_0x44ef('0x16')][_0x44ef('0x20')](_0x5b9c49[_0x44ef('0x21')],{'raw':_0x5b9c49[_0x44ef('0x17')]?_0x5b9c49[_0x44ef('0x17')]['raw']===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x5b9c49['options']?_0x5b9c49['options'][_0x44ef('0x19')]||null:null,'attributes':_0x5b9c49[_0x44ef('0x17')]?_0x5b9c49[_0x44ef('0x17')][_0x44ef('0x1e')]||null:null,'limit':_0x5b9c49[_0x44ef('0x17')]?_0x5b9c49[_0x44ef('0x17')][_0x44ef('0x1a')]||null:null})[_0x44ef('0xb')](function(_0x58de92){logger[_0x44ef('0x22')](_0x44ef('0x23'),_0x5b9c49);logger[_0x44ef('0xe')](_0x44ef('0x23'),_0x5b9c49,JSON[_0x44ef('0x1f')](_0x58de92));_0x32ce43(_0x58de92);})[_0x44ef('0x14')](function(_0xf74c61){logger[_0x44ef('0x10')]('UpdateCmHopperBlack',_0xf74c61[_0x44ef('0x12')],_0x5b9c49);_0x2d8a10(_0x40d71c[_0x44ef('0x10')](0x1f4,_0xf74c61[_0x44ef('0x12')]));});});};exports['DestroyCmHopperBlack']=function(_0x1d2db8){var _0x3e4034=this;return new Promise(function(_0x1144a0,_0x2fbee0){return db[_0x44ef('0x16')]['destroy']({'where':_0x1d2db8[_0x44ef('0x17')]?_0x1d2db8['options'][_0x44ef('0x19')]||null:null})[_0x44ef('0xb')](function(_0x5a0e95){logger[_0x44ef('0x22')](_0x44ef('0x24'),_0x1d2db8);logger[_0x44ef('0xe')](_0x44ef('0x24'),_0x1d2db8,JSON[_0x44ef('0x1f')](_0x5a0e95));_0x1144a0(_0x5a0e95);})[_0x44ef('0x14')](function(_0x104b30){logger[_0x44ef('0x10')](_0x44ef('0x24'),_0x104b30[_0x44ef('0x12')],_0x1d2db8);_0x2fbee0(_0x3e4034[_0x44ef('0x10')](0x1f4,_0x104b30[_0x44ef('0x12')]));});});};
\ No newline at end of file
index 8c39ff8..0f36804 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5430=['path','connect-timeout','express','Router','../../components/interaction/service','get','isAuthenticated','index','/describe','describe','/:id','show','put','update','destroy','exports','multer','util'];(function(_0x17b0eb,_0x4f57c0){var _0x3d0248=function(_0x235182){while(--_0x235182){_0x17b0eb['push'](_0x17b0eb['shift']());}};_0x3d0248(++_0x4f57c0);}(_0x5430,0x10c));var _0x0543=function(_0x23dba6,_0x30ef92){_0x23dba6=_0x23dba6-0x0;var _0x47a2fb=_0x5430[_0x23dba6];return _0x47a2fb;};'use strict';var multer=require(_0x0543('0x0'));var util=require(_0x0543('0x1'));var path=require(_0x0543('0x2'));var timeout=require(_0x0543('0x3'));var express=require(_0x0543('0x4'));var router=express[_0x0543('0x5')]();var fs_extra=require('fs-extra');var auth=require('../../components/auth/service');var interaction=require(_0x0543('0x6'));var config=require('../../config/environment');var controller=require('./cmHopperBlack.controller');router[_0x0543('0x7')]('/',auth[_0x0543('0x8')](),controller[_0x0543('0x9')]);router[_0x0543('0x7')](_0x0543('0xa'),auth['isAuthenticated'](),controller[_0x0543('0xb')]);router[_0x0543('0x7')](_0x0543('0xc'),auth[_0x0543('0x8')](),controller[_0x0543('0xd')]);router[_0x0543('0xe')]('/:id',auth[_0x0543('0x8')](),controller[_0x0543('0xf')]);router['delete'](_0x0543('0xc'),auth[_0x0543('0x8')](),controller[_0x0543('0x10')]);module[_0x0543('0x11')]=router;
\ No newline at end of file
+var _0x6050=['/:id','isAuthenticated','show','update','delete','destroy','exports','multer','util','path','connect-timeout','express','Router','../../components/auth/service','../../components/interaction/service','../../config/environment','index','describe','get'];(function(_0x1c86dc,_0xaa7be7){var _0x2e0182=function(_0x2326e2){while(--_0x2326e2){_0x1c86dc['push'](_0x1c86dc['shift']());}};_0x2e0182(++_0xaa7be7);}(_0x6050,0x196));var _0x0605=function(_0x2319e7,_0x34adaa){_0x2319e7=_0x2319e7-0x0;var _0x1ad698=_0x6050[_0x2319e7];return _0x1ad698;};'use strict';var multer=require(_0x0605('0x0'));var util=require(_0x0605('0x1'));var path=require(_0x0605('0x2'));var timeout=require(_0x0605('0x3'));var express=require(_0x0605('0x4'));var router=express[_0x0605('0x5')]();var fs_extra=require('fs-extra');var auth=require(_0x0605('0x6'));var interaction=require(_0x0605('0x7'));var config=require(_0x0605('0x8'));var controller=require('./cmHopperBlack.controller');router['get']('/',auth['isAuthenticated'](),controller[_0x0605('0x9')]);router['get']('/describe',auth['isAuthenticated'](),controller[_0x0605('0xa')]);router[_0x0605('0xb')](_0x0605('0xc'),auth[_0x0605('0xd')](),controller[_0x0605('0xe')]);router['put'](_0x0605('0xc'),auth[_0x0605('0xd')](),controller[_0x0605('0xf')]);router[_0x0605('0x10')](_0x0605('0xc'),auth[_0x0605('0xd')](),controller[_0x0605('0x11')]);module[_0x0605('0x12')]=router;
\ No newline at end of file
index dc3642d..8f9c79e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc520=['seconds','dispositionat','BOOLEAN','sequelize','moment','INTEGER','DATE','STRING','getDataValue','endtime','setDataValue','followuptime'];(function(_0x47f567,_0x42978f){var _0x699b65=function(_0x478207){while(--_0x478207){_0x47f567['push'](_0x47f567['shift']());}};_0x699b65(++_0x42978f);}(_0xc520,0x183));var _0x0c52=function(_0x47ffcc,_0x57ad6b){_0x47ffcc=_0x47ffcc-0x0;var _0x2770b2=_0xc520[_0x47ffcc];return _0x2770b2;};'use strict';var Sequelize=require(_0x0c52('0x0'));var moment=require(_0x0c52('0x1'));module['exports']={'state':{'type':Sequelize[_0x0c52('0x2')](0x2)},'statedesc':{'type':Sequelize['STRING']},'scheduledat':{'type':Sequelize[_0x0c52('0x3')]},'countbusyretry':{'type':Sequelize[_0x0c52('0x2')],'defaultValue':0x0},'countcongestionretry':{'type':Sequelize[_0x0c52('0x2')],'defaultValue':0x0},'countnoanswerretry':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'countglobal':{'type':Sequelize[_0x0c52('0x2')],'defaultValue':0x0},'uniqueid':{'type':Sequelize[_0x0c52('0x4')]},'originatecalleridnum':{'type':Sequelize[_0x0c52('0x4')]},'originatecalleridname':{'type':Sequelize[_0x0c52('0x4')]},'calleridnum':{'type':Sequelize[_0x0c52('0x4')]},'calleridname':{'type':Sequelize[_0x0c52('0x4')]},'starttime':{'type':Sequelize[_0x0c52('0x3')]},'responsetime':{'type':Sequelize[_0x0c52('0x3')]},'answertime':{'type':Sequelize[_0x0c52('0x3')]},'droptime':{'type':Sequelize[_0x0c52('0x3')]},'endtime':{'type':Sequelize[_0x0c52('0x3')]},'ringtime':{'type':Sequelize[_0x0c52('0x2')],'defaultValue':0x0},'holdtime':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'talktime':{'type':Sequelize[_0x0c52('0x2')],'defaultValue':0x0},'followuptime':{'type':Sequelize[_0x0c52('0x2')],'defaultValue':0x0},'dropreason':{'type':Sequelize[_0x0c52('0x4')]},'campaign':{'type':Sequelize['STRING']},'campaigntype':{'type':Sequelize[_0x0c52('0x4')]},'membername':{'type':Sequelize[_0x0c52('0x4')]},'reason':{'type':Sequelize['STRING']},'disposition':{'type':Sequelize[_0x0c52('0x4')]},'secondDisposition':{'type':Sequelize[_0x0c52('0x4')]},'thirdDisposition':{'type':Sequelize[_0x0c52('0x4')]},'dispositionat':{'type':Sequelize[_0x0c52('0x3')],'set':function(_0xb411d3){var _0x25dd27=this[_0x0c52('0x5')](_0x0c52('0x6'));if(_0x25dd27&&_0xb411d3){this[_0x0c52('0x7')](_0x0c52('0x8'),moment(_0xb411d3)['diff'](moment(_0x25dd27),_0x0c52('0x9')));}return this[_0x0c52('0x7')](_0x0c52('0xa'),_0xb411d3);}},'amd':{'type':Sequelize[_0x0c52('0xb')],'defaultValue':![]},'fax':{'type':Sequelize[_0x0c52('0xb')],'defaultValue':![]},'blacklist':{'type':Sequelize[_0x0c52('0xb')],'defaultValue':![]},'rescheduled':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'rescheduledat':{'type':Sequelize[_0x0c52('0x3')]},'callback':{'type':Sequelize[_0x0c52('0xb')],'defaultValue':![]},'callbackuniqueid':{'type':Sequelize[_0x0c52('0x4')],'defaultValue':null},'callbackat':{'type':Sequelize[_0x0c52('0x3')]},'deleted':{'type':Sequelize[_0x0c52('0x4')],'defaultValue':null},'deletedat':{'type':Sequelize[_0x0c52('0x3')]},'recallme':{'type':Sequelize[_0x0c52('0xb')],'defaultValue':![]},'agiafterat':{'type':Sequelize['DATE']},'countnosuchnumberretry':{'type':Sequelize[_0x0c52('0x2')],'defaultValue':0x0},'countdropretry':{'type':Sequelize[_0x0c52('0x2')],'defaultValue':0x0},'countabandonedretry':{'type':Sequelize[_0x0c52('0x2')],'defaultValue':0x0},'countmachineretry':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'countagentrejectretry':{'type':Sequelize[_0x0c52('0x2')],'defaultValue':0x0}};
\ No newline at end of file
+var _0xf984=['STRING','DATE','INTEGER','getDataValue','endtime','setDataValue','followuptime','diff','seconds','dispositionat','BOOLEAN','sequelize','moment','exports'];(function(_0x2f9154,_0x36bc7a){var _0x203d20=function(_0x15b370){while(--_0x15b370){_0x2f9154['push'](_0x2f9154['shift']());}};_0x203d20(++_0x36bc7a);}(_0xf984,0x185));var _0x4f98=function(_0x37c054,_0x1cf983){_0x37c054=_0x37c054-0x0;var _0x20e5ef=_0xf984[_0x37c054];return _0x20e5ef;};'use strict';var Sequelize=require(_0x4f98('0x0'));var moment=require(_0x4f98('0x1'));module[_0x4f98('0x2')]={'state':{'type':Sequelize['INTEGER'](0x2)},'statedesc':{'type':Sequelize[_0x4f98('0x3')]},'scheduledat':{'type':Sequelize[_0x4f98('0x4')]},'countbusyretry':{'type':Sequelize[_0x4f98('0x5')],'defaultValue':0x0},'countcongestionretry':{'type':Sequelize[_0x4f98('0x5')],'defaultValue':0x0},'countnoanswerretry':{'type':Sequelize[_0x4f98('0x5')],'defaultValue':0x0},'countglobal':{'type':Sequelize[_0x4f98('0x5')],'defaultValue':0x0},'uniqueid':{'type':Sequelize[_0x4f98('0x3')]},'originatecalleridnum':{'type':Sequelize['STRING']},'originatecalleridname':{'type':Sequelize['STRING']},'calleridnum':{'type':Sequelize[_0x4f98('0x3')]},'calleridname':{'type':Sequelize[_0x4f98('0x3')]},'starttime':{'type':Sequelize[_0x4f98('0x4')]},'responsetime':{'type':Sequelize[_0x4f98('0x4')]},'answertime':{'type':Sequelize[_0x4f98('0x4')]},'droptime':{'type':Sequelize[_0x4f98('0x4')]},'endtime':{'type':Sequelize['DATE']},'ringtime':{'type':Sequelize[_0x4f98('0x5')],'defaultValue':0x0},'holdtime':{'type':Sequelize[_0x4f98('0x5')],'defaultValue':0x0},'talktime':{'type':Sequelize[_0x4f98('0x5')],'defaultValue':0x0},'followuptime':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'dropreason':{'type':Sequelize[_0x4f98('0x3')]},'campaign':{'type':Sequelize[_0x4f98('0x3')]},'campaigntype':{'type':Sequelize[_0x4f98('0x3')]},'membername':{'type':Sequelize[_0x4f98('0x3')]},'reason':{'type':Sequelize[_0x4f98('0x3')]},'disposition':{'type':Sequelize[_0x4f98('0x3')]},'secondDisposition':{'type':Sequelize[_0x4f98('0x3')]},'thirdDisposition':{'type':Sequelize['STRING']},'dispositionat':{'type':Sequelize[_0x4f98('0x4')],'set':function(_0x115fd1){var _0xda9aab=this[_0x4f98('0x6')](_0x4f98('0x7'));if(_0xda9aab&&_0x115fd1){this[_0x4f98('0x8')](_0x4f98('0x9'),moment(_0x115fd1)[_0x4f98('0xa')](moment(_0xda9aab),_0x4f98('0xb')));}return this[_0x4f98('0x8')](_0x4f98('0xc'),_0x115fd1);}},'amd':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'fax':{'type':Sequelize[_0x4f98('0xd')],'defaultValue':![]},'blacklist':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'rescheduled':{'type':Sequelize[_0x4f98('0xd')],'defaultValue':![]},'rescheduledat':{'type':Sequelize['DATE']},'callback':{'type':Sequelize[_0x4f98('0xd')],'defaultValue':![]},'callbackuniqueid':{'type':Sequelize[_0x4f98('0x3')],'defaultValue':null},'callbackat':{'type':Sequelize[_0x4f98('0x4')]},'deleted':{'type':Sequelize['STRING'],'defaultValue':null},'deletedat':{'type':Sequelize[_0x4f98('0x4')]},'recallme':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'agiafterat':{'type':Sequelize[_0x4f98('0x4')]},'countnosuchnumberretry':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'countdropretry':{'type':Sequelize[_0x4f98('0x5')],'defaultValue':0x0},'countabandonedretry':{'type':Sequelize[_0x4f98('0x5')],'defaultValue':0x0},'countmachineretry':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'countagentrejectretry':{'type':Sequelize[_0x4f98('0x5')],'defaultValue':0x0}};
\ No newline at end of file
index 9de81e2..330dbaa 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe2fe=['calleridnum\x20IS\x20NOT\x20NULL','calleridnum\x20NOT\x20IN\x20(?)','cm_hopper','select','calleridnum','state\x20=\x204','group','scheduledAt','CampaignId','ANY_VALUE(ContactId)','ANY_VALUE(ListId)','ANY_VALUE(CampaignId)','CampaignId\x20=\x20?','checkContactHopper','eml-format','fast-json-patch','moment','bluebird','mustache','util','path','to-csv','ejs','lodash','squel','jsforce','querystring','ioredis','../../components/auth/service','api','../../mysqldb','sendStatus','status','offset','limit','count','set','Content-Range','json','reject','save','update','then','destroy','end','name','send','index','map','CmHopperFinal','rawAttributes','type','key','keys','query','intersection','model','fields','attributes','length','hasOwnProperty','nolimit','order','sort','where','filters','pick','filter','merge','VIRTUAL','options','includeAll','include','catch','show','find','body','uniqueid','params','countContactsQueueCampaignHopperFinal','findAll','sequelize','COUNT','literal','`state`\x20=\x200,\x201,\x20null','noSuchContacts','`state`\x20=\x203,\x201,\x20null','noAnswerContacts','`state`\x20=\x205,\x201,\x20null','busyContacts','`state`\x20=\x208,\x201,\x20null','congestionContacts','`state`\x20=\x2010\x20,\x201,\x20null','dropContacts','`state`\x20=\x2011\x20,\x201,\x20null','abandonedContacts','`state`\x20=\x2022,\x201,\x20null','reCallContacts','`state`\x20=\x2019,\x201,\x20null','answeringMachine','moveContactsQueueCampaignHopperFinal','VoiceQueue','insert','into','fromQuery','phone','ContactId','ListId','VoiceQueueId','updatedAt','field','ANY_VALUE(calleridnum)','NOW()','createdAt','from','cm_hopper_final','VoiceQueueId\x20=\x20?','toString','state\x20=\x20?','state'];(function(_0x4c9081,_0x48923e){var _0x3106ec=function(_0xc1462e){while(--_0xc1462e){_0x4c9081['push'](_0x4c9081['shift']());}};_0x3106ec(++_0x48923e);}(_0xe2fe,0x86));var _0xee2f=function(_0x14add3,_0x13ce8d){_0x14add3=_0x14add3-0x0;var _0x4a174f=_0xe2fe[_0x14add3];return _0x4a174f;};'use strict';var emlformat=require(_0xee2f('0x0'));var rimraf=require('rimraf');var zipdir=require('zip-dir');var jsonpatch=require(_0xee2f('0x1'));var rp=require('request-promise');var moment=require(_0xee2f('0x2'));var BPromise=require(_0xee2f('0x3'));var Mustache=require(_0xee2f('0x4'));var util=require(_0xee2f('0x5'));var path=require(_0xee2f('0x6'));var sox=require('sox');var csv=require(_0xee2f('0x7'));var ejs=require(_0xee2f('0x8'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0xee2f('0x9'));var squel=require(_0xee2f('0xa'));var crypto=require('crypto');var jsforce=require(_0xee2f('0xb'));var deskjs=require('desk.js');var toCsv=require(_0xee2f('0x7'));var querystring=require(_0xee2f('0xc'));var Papa=require('papaparse');var Redis=require(_0xee2f('0xd'));var authService=require(_0xee2f('0xe'));var qs=require('../../components/parsers/qs');var as=require('../../components/parsers/advancedSearch');var hardwareService=require('../../config/license/hardware');var logger=require('../../config/logger')(_0xee2f('0xf'));var utils=require('../../config/utils');var config=require('../../config/environment');var licenseUtil=require('../../config/license/util');var db=require(_0xee2f('0x10'))['db'];function respondWithStatusCode(_0x346dbc,_0xa13e7b){_0xa13e7b=_0xa13e7b||0xcc;return function(_0x100449){if(_0x100449){return _0x346dbc[_0xee2f('0x11')](_0xa13e7b);}return _0x346dbc[_0xee2f('0x12')](_0xa13e7b)['end']();};}function respondWithResult(_0x3861e6,_0x531c3a){_0x531c3a=_0x531c3a||0xc8;return function(_0x36db10){if(_0x36db10){return _0x3861e6[_0xee2f('0x12')](_0x531c3a)['json'](_0x36db10);}};}function respondWithFilteredResult(_0x445ba8,_0x145241){return function(_0x28b614){if(_0x28b614){var _0x1bbf7d=typeof _0x145241[_0xee2f('0x13')]==='undefined'&&typeof _0x145241[_0xee2f('0x14')]==='undefined';var _0x17d288=_0x28b614[_0xee2f('0x15')];var _0x502eb6=_0x1bbf7d?0x0:_0x145241['offset'];var _0x40b5bc=_0x1bbf7d?_0x28b614['count']:_0x145241[_0xee2f('0x13')]+_0x145241[_0xee2f('0x14')];var _0x28549d;if(_0x40b5bc>=_0x17d288){_0x40b5bc=_0x17d288;_0x28549d=0xc8;}else{_0x28549d=0xce;}_0x445ba8['status'](_0x28549d);return _0x445ba8[_0xee2f('0x16')](_0xee2f('0x17'),_0x502eb6+'-'+_0x40b5bc+'/'+_0x17d288)[_0xee2f('0x18')](_0x28b614);}return null;};}function patchUpdates(_0x21fdf4){return function(_0x3d892d){try{jsonpatch['apply'](_0x3d892d,_0x21fdf4,!![]);}catch(_0x5e73ad){return BPromise[_0xee2f('0x19')](_0x5e73ad);}return _0x3d892d[_0xee2f('0x1a')]();};}function saveUpdates(_0x1ea808,_0x203b2f){return function(_0x472e3b){if(_0x472e3b){return _0x472e3b[_0xee2f('0x1b')](_0x1ea808)[_0xee2f('0x1c')](function(_0x4d68d3){return _0x4d68d3;});}return null;};}function removeEntity(_0x250399,_0x2c47c5){return function(_0x15ceda){if(_0x15ceda){return _0x15ceda[_0xee2f('0x1d')]()[_0xee2f('0x1c')](function(){_0x250399[_0xee2f('0x12')](0xcc)[_0xee2f('0x1e')]();});}};}function handleEntityNotFound(_0x13013f,_0x382174){return function(_0x1e394f){if(!_0x1e394f){_0x13013f[_0xee2f('0x11')](0x194);}return _0x1e394f;};}function handleError(_0x168adc,_0x1c8454){_0x1c8454=_0x1c8454||0x1f4;return function(_0x45c4a0){logger['error'](_0x45c4a0['stack']);if(_0x45c4a0['name']){delete _0x45c4a0[_0xee2f('0x1f')];}_0x168adc[_0xee2f('0x12')](_0x1c8454)[_0xee2f('0x20')](_0x45c4a0);};}exports[_0xee2f('0x21')]=function(_0x892a4e,_0x3737fd){var _0x4d8398={},_0x3d3806={},_0x52e1fa={'count':0x0,'rows':[]};var _0x235697=_[_0xee2f('0x22')](db[_0xee2f('0x23')][_0xee2f('0x24')],function(_0x3ddbe3){return{'name':_0x3ddbe3['fieldName'],'type':_0x3ddbe3[_0xee2f('0x25')][_0xee2f('0x26')]};});_0x3d3806['model']=_['map'](_0x235697,_0xee2f('0x1f'));_0x3d3806['query']=_[_0xee2f('0x27')](_0x892a4e[_0xee2f('0x28')]);_0x3d3806['filters']=_[_0xee2f('0x29')](_0x3d3806['model'],_0x3d3806['query']);_0x4d8398['attributes']=_[_0xee2f('0x29')](_0x3d3806[_0xee2f('0x2a')],qs['fields'](_0x892a4e[_0xee2f('0x28')][_0xee2f('0x2b')]));_0x4d8398[_0xee2f('0x2c')]=_0x4d8398[_0xee2f('0x2c')][_0xee2f('0x2d')]?_0x4d8398['attributes']:_0x3d3806[_0xee2f('0x2a')];if(!_0x892a4e['query'][_0xee2f('0x2e')](_0xee2f('0x2f'))){_0x4d8398[_0xee2f('0x14')]=qs['limit'](_0x892a4e[_0xee2f('0x28')]['limit']);_0x4d8398[_0xee2f('0x13')]=qs['offset'](_0x892a4e[_0xee2f('0x28')][_0xee2f('0x13')]);}_0x4d8398[_0xee2f('0x30')]=qs[_0xee2f('0x31')](_0x892a4e[_0xee2f('0x28')][_0xee2f('0x31')]);_0x4d8398[_0xee2f('0x32')]=qs[_0xee2f('0x33')](_[_0xee2f('0x34')](_0x892a4e[_0xee2f('0x28')],_0x3d3806[_0xee2f('0x33')]),_0x235697);if(_0x892a4e['query'][_0xee2f('0x35')]){_0x4d8398['where']=_[_0xee2f('0x36')](_0x4d8398[_0xee2f('0x32')],{'$or':_[_0xee2f('0x22')](_0x235697,function(_0x2cbb89){if(_0x2cbb89[_0xee2f('0x25')]!==_0xee2f('0x37')){var _0x694950={};_0x694950[_0x2cbb89[_0xee2f('0x1f')]]={'$like':'%'+_0x892a4e['query']['filter']+'%'};return _0x694950;}})});}_0x4d8398=_['merge']({},_0x4d8398,_0x892a4e[_0xee2f('0x38')]);var _0x5483ae={'where':_0x4d8398[_0xee2f('0x32')]};return db['CmHopperFinal']['count'](_0x5483ae)['then'](function(_0x58e361){_0x52e1fa[_0xee2f('0x15')]=_0x58e361;if(_0x892a4e[_0xee2f('0x28')][_0xee2f('0x39')]){_0x4d8398[_0xee2f('0x3a')]=[{'all':!![]}];}return db['CmHopperFinal']['findAll'](_0x4d8398);})[_0xee2f('0x1c')](function(_0x5e12b7){_0x52e1fa['rows']=_0x5e12b7;return _0x52e1fa;})[_0xee2f('0x1c')](respondWithFilteredResult(_0x3737fd,_0x4d8398))[_0xee2f('0x3b')](handleError(_0x3737fd,null));};exports[_0xee2f('0x3c')]=function(_0x54130b,_0x3bc173){var _0x27c447={'raw':!![],'where':{'id':_0x54130b['params']['id']}},_0x19bd4d={};_0x19bd4d['model']=_[_0xee2f('0x27')](db[_0xee2f('0x23')][_0xee2f('0x24')]);_0x19bd4d[_0xee2f('0x28')]=_['keys'](_0x54130b[_0xee2f('0x28')]);_0x19bd4d[_0xee2f('0x33')]=_[_0xee2f('0x29')](_0x19bd4d[_0xee2f('0x2a')],_0x19bd4d[_0xee2f('0x28')]);_0x27c447[_0xee2f('0x2c')]=_[_0xee2f('0x29')](_0x19bd4d[_0xee2f('0x2a')],qs[_0xee2f('0x2b')](_0x54130b[_0xee2f('0x28')]['fields']));_0x27c447['attributes']=_0x27c447['attributes']['length']?_0x27c447[_0xee2f('0x2c')]:_0x19bd4d[_0xee2f('0x2a')];if(_0x54130b[_0xee2f('0x28')][_0xee2f('0x39')]){_0x27c447[_0xee2f('0x3a')]=[{'all':!![]}];}_0x27c447=_['merge']({},_0x27c447,_0x54130b[_0xee2f('0x38')]);return db[_0xee2f('0x23')][_0xee2f('0x3d')](_0x27c447)[_0xee2f('0x1c')](handleEntityNotFound(_0x3bc173,null))['then'](respondWithResult(_0x3bc173,null))['catch'](handleError(_0x3bc173,null));};exports['describe']=function(_0x1609f0,_0x54cc44){return db['CmHopperFinal']['describe']()['then'](respondWithResult(_0x54cc44,null))[_0xee2f('0x3b')](handleError(_0x54cc44,null));};exports[_0xee2f('0x1b')]=function(_0x32da72,_0x584383){if(_0x32da72[_0xee2f('0x3e')]['uniqueid']){delete _0x32da72[_0xee2f('0x3e')][_0xee2f('0x3f')];}return db[_0xee2f('0x23')][_0xee2f('0x3d')]({'where':{'uniqueid':_0x32da72[_0xee2f('0x40')]['id']}})['then'](handleEntityNotFound(_0x584383,null))['then'](saveUpdates(_0x32da72[_0xee2f('0x3e')],null))['then'](respondWithResult(_0x584383,null))[_0xee2f('0x3b')](handleError(_0x584383,null));};exports[_0xee2f('0x41')]=function(_0x1928f8,_0x88e683,_0x4fb3a0){return db['CmHopperFinal'][_0xee2f('0x42')]({'raw':![],'where':{'VoiceQueueId':_0x1928f8[_0xee2f('0x40')]['id']},'attributes':[[db[_0xee2f('0x43')]['fn'](_0xee2f('0x44'),db[_0xee2f('0x43')]['fn']('IF',db[_0xee2f('0x43')][_0xee2f('0x45')](_0xee2f('0x46')))),_0xee2f('0x47')],[db[_0xee2f('0x43')]['fn'](_0xee2f('0x44'),db[_0xee2f('0x43')]['fn']('IF',db['sequelize'][_0xee2f('0x45')](_0xee2f('0x48')))),_0xee2f('0x49')],[db[_0xee2f('0x43')]['fn']('COUNT',db[_0xee2f('0x43')]['fn']('IF',db[_0xee2f('0x43')][_0xee2f('0x45')](_0xee2f('0x4a')))),_0xee2f('0x4b')],[db['sequelize']['fn'](_0xee2f('0x44'),db['sequelize']['fn']('IF',db['sequelize'][_0xee2f('0x45')](_0xee2f('0x4c')))),_0xee2f('0x4d')],[db[_0xee2f('0x43')]['fn'](_0xee2f('0x44'),db[_0xee2f('0x43')]['fn']('IF',db[_0xee2f('0x43')]['literal'](_0xee2f('0x4e')))),_0xee2f('0x4f')],[db[_0xee2f('0x43')]['fn'](_0xee2f('0x44'),db[_0xee2f('0x43')]['fn']('IF',db[_0xee2f('0x43')][_0xee2f('0x45')](_0xee2f('0x50')))),_0xee2f('0x51')],[db['sequelize']['fn'](_0xee2f('0x44'),db['sequelize']['fn']('IF',db[_0xee2f('0x43')][_0xee2f('0x45')](_0xee2f('0x52')))),_0xee2f('0x53')],[db[_0xee2f('0x43')]['fn']('COUNT',db[_0xee2f('0x43')]['fn']('IF',db[_0xee2f('0x43')][_0xee2f('0x45')](_0xee2f('0x54')))),'answeringMachine']]})['then'](handleEntityNotFound(_0x88e683,null))['then'](respondWithResult(_0x88e683,null))['catch'](handleError(_0x88e683,null));};exports['countContactsIvrCampaignHopperFinal']=function(_0x8f90e6,_0x511e54,_0x2891ed){return db[_0xee2f('0x23')][_0xee2f('0x42')]({'raw':![],'where':{'CampaignId':_0x8f90e6[_0xee2f('0x40')]['id']},'attributes':[[db[_0xee2f('0x43')]['fn'](_0xee2f('0x44'),db['sequelize']['fn']('IF',db['sequelize'][_0xee2f('0x45')]('`state`\x20=\x200,\x201,\x20null'))),_0xee2f('0x47')],[db['sequelize']['fn'](_0xee2f('0x44'),db['sequelize']['fn']('IF',db[_0xee2f('0x43')][_0xee2f('0x45')](_0xee2f('0x48')))),'noAnswerContacts'],[db[_0xee2f('0x43')]['fn'](_0xee2f('0x44'),db[_0xee2f('0x43')]['fn']('IF',db[_0xee2f('0x43')][_0xee2f('0x45')](_0xee2f('0x4a')))),_0xee2f('0x4b')],[db['sequelize']['fn'](_0xee2f('0x44'),db[_0xee2f('0x43')]['fn']('IF',db[_0xee2f('0x43')][_0xee2f('0x45')](_0xee2f('0x4c')))),_0xee2f('0x4d')],[db[_0xee2f('0x43')]['fn'](_0xee2f('0x44'),db[_0xee2f('0x43')]['fn']('IF',db[_0xee2f('0x43')][_0xee2f('0x45')]('`state`\x20=\x2010\x20,\x201,\x20null'))),_0xee2f('0x4f')],[db[_0xee2f('0x43')]['fn']('COUNT',db[_0xee2f('0x43')]['fn']('IF',db['sequelize'][_0xee2f('0x45')]('`state`\x20=\x2011\x20,\x201,\x20null'))),'abandonedContacts'],[db[_0xee2f('0x43')]['fn'](_0xee2f('0x44'),db[_0xee2f('0x43')]['fn']('IF',db[_0xee2f('0x43')][_0xee2f('0x45')]('`state`\x20=\x2022,\x201,\x20null'))),_0xee2f('0x53')],[db[_0xee2f('0x43')]['fn'](_0xee2f('0x44'),db['sequelize']['fn']('IF',db[_0xee2f('0x43')][_0xee2f('0x45')]('`state`\x20=\x2019,\x201,\x20null'))),_0xee2f('0x55')]]})[_0xee2f('0x1c')](handleEntityNotFound(_0x511e54,null))[_0xee2f('0x1c')](respondWithResult(_0x511e54,null))[_0xee2f('0x3b')](handleError(_0x511e54,null));};exports[_0xee2f('0x56')]=function(_0x2adcc6,_0x43b883,_0x97edb2){return db[_0xee2f('0x57')]['find']({'where':{'id':_0x2adcc6['params']['id']}})['then'](handleEntityNotFound(_0x43b883,null))[_0xee2f('0x1c')](function(_0x19ce25){var _0x4288eb;if(_0x19ce25){_0x4288eb=squel[_0xee2f('0x58')]()[_0xee2f('0x59')]('cm_hopper')[_0xee2f('0x5a')]([_0xee2f('0x5b'),'scheduledAt',_0xee2f('0x5c'),_0xee2f('0x5d'),_0xee2f('0x5e'),'createdAt',_0xee2f('0x5f')],squel['select']()[_0xee2f('0x60')](_0xee2f('0x61'),'phone')[_0xee2f('0x60')](_0xee2f('0x62'),'scheduledAt')['field']('ANY_VALUE(ContactId)',_0xee2f('0x5c'))['field']('ANY_VALUE(ListId)',_0xee2f('0x5d'))[_0xee2f('0x60')]('ANY_VALUE(VoiceQueueId)',_0xee2f('0x5e'))['field'](_0xee2f('0x62'),_0xee2f('0x63'))[_0xee2f('0x60')](_0xee2f('0x62'),_0xee2f('0x5f'))[_0xee2f('0x64')](_0xee2f('0x65'))['where'](_0xee2f('0x66'),_0x2adcc6[_0xee2f('0x40')]['id'][_0xee2f('0x67')]())[_0xee2f('0x32')](_0xee2f('0x68'),_0x2adcc6['body'][_0xee2f('0x69')][_0xee2f('0x67')]())[_0xee2f('0x32')](_0xee2f('0x6a'))[_0xee2f('0x32')](_0xee2f('0x6b'),squel['select']()['field'](_0xee2f('0x5b'))[_0xee2f('0x64')](_0xee2f('0x6c'))[_0xee2f('0x32')](_0xee2f('0x66'),_0x2adcc6[_0xee2f('0x40')]['id'][_0xee2f('0x67')]()))['where']('calleridnum\x20NOT\x20IN\x20(?)',squel[_0xee2f('0x6d')]()[_0xee2f('0x60')](_0xee2f('0x6e'))[_0xee2f('0x64')](_0xee2f('0x65'))[_0xee2f('0x32')](_0xee2f('0x66'),_0x2adcc6[_0xee2f('0x40')]['id'][_0xee2f('0x67')]())[_0xee2f('0x32')](_0xee2f('0x6f')))[_0xee2f('0x70')]('ContactId'))['toString']();return db[_0xee2f('0x43')]['query'](_0x4288eb);}return[];})['then'](respondWithResult(_0x43b883,null))['catch'](handleError(_0x43b883,null));};exports['moveContactsIvrCampaignHopperFinal']=function(_0x2ea31f,_0x277507,_0x500459){return db['Campaign'][_0xee2f('0x3d')]({'where':{'id':_0x2ea31f[_0xee2f('0x40')]['id']}})[_0xee2f('0x1c')](handleEntityNotFound(_0x277507,null))['then'](function(_0x4aeae5){var _0x2b6f0f;if(_0x4aeae5){_0x2b6f0f=squel[_0xee2f('0x58')]()[_0xee2f('0x59')]('cm_hopper')[_0xee2f('0x5a')](['phone',_0xee2f('0x71'),'ContactId',_0xee2f('0x5d'),_0xee2f('0x72'),_0xee2f('0x63'),'updatedAt'],squel['select']()[_0xee2f('0x60')](_0xee2f('0x61'),_0xee2f('0x5b'))['field'](_0xee2f('0x62'),_0xee2f('0x71'))[_0xee2f('0x60')](_0xee2f('0x73'),_0xee2f('0x5c'))[_0xee2f('0x60')](_0xee2f('0x74'),_0xee2f('0x5d'))[_0xee2f('0x60')](_0xee2f('0x75'),_0xee2f('0x72'))[_0xee2f('0x60')](_0xee2f('0x62'),_0xee2f('0x63'))['field'](_0xee2f('0x62'),_0xee2f('0x5f'))[_0xee2f('0x64')](_0xee2f('0x65'))[_0xee2f('0x32')](_0xee2f('0x76'),_0x2ea31f[_0xee2f('0x40')]['id'][_0xee2f('0x67')]())[_0xee2f('0x32')](_0xee2f('0x68'),_0x2ea31f[_0xee2f('0x3e')]['state'][_0xee2f('0x67')]())[_0xee2f('0x32')](_0xee2f('0x6a'))[_0xee2f('0x32')]('calleridnum\x20NOT\x20IN\x20(?)',squel[_0xee2f('0x6d')]()[_0xee2f('0x60')](_0xee2f('0x5b'))['from']('cm_hopper')[_0xee2f('0x32')]('CampaignId\x20=\x20?',_0x2ea31f['params']['id']['toString']()))[_0xee2f('0x32')](_0xee2f('0x6b'),squel[_0xee2f('0x6d')]()[_0xee2f('0x60')]('calleridnum')[_0xee2f('0x64')](_0xee2f('0x65'))[_0xee2f('0x32')]('CampaignId\x20=\x20?',_0x2ea31f[_0xee2f('0x40')]['id']['toString']())[_0xee2f('0x32')]('state\x20=\x204'))['group'](_0xee2f('0x5c')))['toString']();return db[_0xee2f('0x43')]['query'](_0x2b6f0f);}return[];})['then'](respondWithResult(_0x277507,null))[_0xee2f('0x3b')](handleError(_0x277507,null));};exports[_0xee2f('0x77')]=function(_0x4fed80,_0x2685ed,_0x34f882){return db['CmHopper']['findOne']({'where':{'VoiceQueueId':_0x4fed80[_0xee2f('0x3e')][_0xee2f('0x5e')],'CampaignId':_0x4fed80['body'][_0xee2f('0x72')],'ContactId':_0x4fed80[_0xee2f('0x3e')][_0xee2f('0x5c')]}})[_0xee2f('0x1c')](handleEntityNotFound(_0x2685ed,null))[_0xee2f('0x1c')](function(_0x4f20e9){if(_0x4f20e9){return _0x4f20e9;}return null;})['then'](respondWithResult(_0x2685ed,null))['catch'](handleError(_0x2685ed,null));};
\ No newline at end of file
+var _0x5496=['set','Content-Range','apply','reject','save','update','then','error','stack','name','index','CmHopperFinal','rawAttributes','fieldName','type','key','model','map','query','filters','intersection','attributes','length','hasOwnProperty','nolimit','offset','order','sort','pick','filter','where','merge','VIRTUAL','includeAll','rows','catch','show','params','keys','fields','include','options','find','describe','body','uniqueid','countContactsQueueCampaignHopperFinal','findAll','sequelize','literal','`state`\x20=\x200,\x201,\x20null','noSuchContacts','COUNT','`state`\x20=\x203,\x201,\x20null','noAnswerContacts','`state`\x20=\x205,\x201,\x20null','busyContacts','`state`\x20=\x208,\x201,\x20null','congestionContacts','`state`\x20=\x2010\x20,\x201,\x20null','`state`\x20=\x2011\x20,\x201,\x20null','`state`\x20=\x2022,\x201,\x20null','`state`\x20=\x2019,\x201,\x20null','countContactsIvrCampaignHopperFinal','dropContacts','abandonedContacts','reCallContacts','answeringMachine','into','cm_hopper','fromQuery','ListId','VoiceQueueId','createdAt','field','phone','NOW()','scheduledAt','ANY_VALUE(ContactId)','ContactId','ANY_VALUE(ListId)','updatedAt','cm_hopper_final','VoiceQueueId\x20=\x20?','toString','state\x20=\x20?','state','calleridnum\x20IS\x20NOT\x20NULL','calleridnum\x20NOT\x20IN\x20(?)','select','from','calleridnum','state\x20=\x204','group','moveContactsIvrCampaignHopperFinal','Campaign','insert','CampaignId','ANY_VALUE(calleridnum)','CampaignId\x20=\x20?','checkContactHopper','CmHopper','findOne','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','bluebird','util','path','sox','fs-extra','lodash','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','end','status','json','undefined','limit','count'];(function(_0x2e5d4e,_0x5af227){var _0x31ecd7=function(_0x138bc5){while(--_0x138bc5){_0x2e5d4e['push'](_0x2e5d4e['shift']());}};_0x31ecd7(++_0x5af227);}(_0x5496,0x175));var _0x6549=function(_0x2efe54,_0x2a4e0d){_0x2efe54=_0x2efe54-0x0;var _0x2901cd=_0x5496[_0x2efe54];return _0x2901cd;};'use strict';var emlformat=require(_0x6549('0x0'));var rimraf=require(_0x6549('0x1'));var zipdir=require(_0x6549('0x2'));var jsonpatch=require(_0x6549('0x3'));var rp=require(_0x6549('0x4'));var moment=require('moment');var BPromise=require(_0x6549('0x5'));var Mustache=require('mustache');var util=require(_0x6549('0x6'));var path=require(_0x6549('0x7'));var sox=require(_0x6549('0x8'));var csv=require('to-csv');var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x6549('0x9'));var _=require(_0x6549('0xa'));var squel=require('squel');var crypto=require(_0x6549('0xb'));var jsforce=require(_0x6549('0xc'));var deskjs=require(_0x6549('0xd'));var toCsv=require('to-csv');var querystring=require(_0x6549('0xe'));var Papa=require(_0x6549('0xf'));var Redis=require(_0x6549('0x10'));var authService=require(_0x6549('0x11'));var qs=require(_0x6549('0x12'));var as=require(_0x6549('0x13'));var hardwareService=require('../../config/license/hardware');var logger=require('../../config/logger')(_0x6549('0x14'));var utils=require(_0x6549('0x15'));var config=require(_0x6549('0x16'));var licenseUtil=require(_0x6549('0x17'));var db=require(_0x6549('0x18'))['db'];function respondWithStatusCode(_0x5bc018,_0x4dfb06){_0x4dfb06=_0x4dfb06||0xcc;return function(_0x3f844f){if(_0x3f844f){return _0x5bc018[_0x6549('0x19')](_0x4dfb06);}return _0x5bc018['status'](_0x4dfb06)[_0x6549('0x1a')]();};}function respondWithResult(_0x150fc8,_0x195d25){_0x195d25=_0x195d25||0xc8;return function(_0x12b068){if(_0x12b068){return _0x150fc8[_0x6549('0x1b')](_0x195d25)[_0x6549('0x1c')](_0x12b068);}};}function respondWithFilteredResult(_0x55c112,_0x5db86d){return function(_0x384f75){if(_0x384f75){var _0x25da29=typeof _0x5db86d['offset']===_0x6549('0x1d')&&typeof _0x5db86d[_0x6549('0x1e')]===_0x6549('0x1d');var _0x387e60=_0x384f75[_0x6549('0x1f')];var _0x53b12b=_0x25da29?0x0:_0x5db86d['offset'];var _0x26a212=_0x25da29?_0x384f75['count']:_0x5db86d['offset']+_0x5db86d[_0x6549('0x1e')];var _0x1e5079;if(_0x26a212>=_0x387e60){_0x26a212=_0x387e60;_0x1e5079=0xc8;}else{_0x1e5079=0xce;}_0x55c112[_0x6549('0x1b')](_0x1e5079);return _0x55c112[_0x6549('0x20')](_0x6549('0x21'),_0x53b12b+'-'+_0x26a212+'/'+_0x387e60)['json'](_0x384f75);}return null;};}function patchUpdates(_0x228117){return function(_0x4b40c1){try{jsonpatch[_0x6549('0x22')](_0x4b40c1,_0x228117,!![]);}catch(_0x72322b){return BPromise[_0x6549('0x23')](_0x72322b);}return _0x4b40c1[_0x6549('0x24')]();};}function saveUpdates(_0x22bcf8,_0x12d547){return function(_0x427b47){if(_0x427b47){return _0x427b47[_0x6549('0x25')](_0x22bcf8)[_0x6549('0x26')](function(_0x6ae00c){return _0x6ae00c;});}return null;};}function removeEntity(_0x40d3f9,_0x1fbfa4){return function(_0x23c0ba){if(_0x23c0ba){return _0x23c0ba['destroy']()[_0x6549('0x26')](function(){_0x40d3f9[_0x6549('0x1b')](0xcc)['end']();});}};}function handleEntityNotFound(_0x126967,_0x29f89e){return function(_0x3768cb){if(!_0x3768cb){_0x126967['sendStatus'](0x194);}return _0x3768cb;};}function handleError(_0x31a95,_0xfb51a1){_0xfb51a1=_0xfb51a1||0x1f4;return function(_0x14de1f){logger[_0x6549('0x27')](_0x14de1f[_0x6549('0x28')]);if(_0x14de1f[_0x6549('0x29')]){delete _0x14de1f[_0x6549('0x29')];}_0x31a95[_0x6549('0x1b')](_0xfb51a1)['send'](_0x14de1f);};}exports[_0x6549('0x2a')]=function(_0x136518,_0x17fdfb){var _0x4c605c={},_0x3f1502={},_0x4acaf5={'count':0x0,'rows':[]};var _0x4f0ad1=_['map'](db[_0x6549('0x2b')][_0x6549('0x2c')],function(_0x4f3069){return{'name':_0x4f3069[_0x6549('0x2d')],'type':_0x4f3069[_0x6549('0x2e')][_0x6549('0x2f')]};});_0x3f1502[_0x6549('0x30')]=_[_0x6549('0x31')](_0x4f0ad1,_0x6549('0x29'));_0x3f1502[_0x6549('0x32')]=_['keys'](_0x136518[_0x6549('0x32')]);_0x3f1502[_0x6549('0x33')]=_[_0x6549('0x34')](_0x3f1502[_0x6549('0x30')],_0x3f1502[_0x6549('0x32')]);_0x4c605c[_0x6549('0x35')]=_['intersection'](_0x3f1502[_0x6549('0x30')],qs['fields'](_0x136518[_0x6549('0x32')]['fields']));_0x4c605c[_0x6549('0x35')]=_0x4c605c[_0x6549('0x35')][_0x6549('0x36')]?_0x4c605c['attributes']:_0x3f1502[_0x6549('0x30')];if(!_0x136518[_0x6549('0x32')][_0x6549('0x37')](_0x6549('0x38'))){_0x4c605c['limit']=qs['limit'](_0x136518['query'][_0x6549('0x1e')]);_0x4c605c[_0x6549('0x39')]=qs['offset'](_0x136518[_0x6549('0x32')][_0x6549('0x39')]);}_0x4c605c[_0x6549('0x3a')]=qs[_0x6549('0x3b')](_0x136518[_0x6549('0x32')]['sort']);_0x4c605c['where']=qs[_0x6549('0x33')](_[_0x6549('0x3c')](_0x136518[_0x6549('0x32')],_0x3f1502[_0x6549('0x33')]),_0x4f0ad1);if(_0x136518[_0x6549('0x32')][_0x6549('0x3d')]){_0x4c605c[_0x6549('0x3e')]=_[_0x6549('0x3f')](_0x4c605c[_0x6549('0x3e')],{'$or':_[_0x6549('0x31')](_0x4f0ad1,function(_0x525f82){if(_0x525f82[_0x6549('0x2e')]!==_0x6549('0x40')){var _0x2ea977={};_0x2ea977[_0x525f82[_0x6549('0x29')]]={'$like':'%'+_0x136518[_0x6549('0x32')]['filter']+'%'};return _0x2ea977;}})});}_0x4c605c=_['merge']({},_0x4c605c,_0x136518['options']);var _0x22b919={'where':_0x4c605c[_0x6549('0x3e')]};return db[_0x6549('0x2b')][_0x6549('0x1f')](_0x22b919)['then'](function(_0x56ce9f){_0x4acaf5[_0x6549('0x1f')]=_0x56ce9f;if(_0x136518[_0x6549('0x32')][_0x6549('0x41')]){_0x4c605c['include']=[{'all':!![]}];}return db[_0x6549('0x2b')]['findAll'](_0x4c605c);})[_0x6549('0x26')](function(_0x2ec614){_0x4acaf5[_0x6549('0x42')]=_0x2ec614;return _0x4acaf5;})[_0x6549('0x26')](respondWithFilteredResult(_0x17fdfb,_0x4c605c))[_0x6549('0x43')](handleError(_0x17fdfb,null));};exports[_0x6549('0x44')]=function(_0xbbfdc9,_0x4deaab){var _0x132625={'raw':!![],'where':{'id':_0xbbfdc9[_0x6549('0x45')]['id']}},_0x309f45={};_0x309f45[_0x6549('0x30')]=_[_0x6549('0x46')](db[_0x6549('0x2b')][_0x6549('0x2c')]);_0x309f45[_0x6549('0x32')]=_[_0x6549('0x46')](_0xbbfdc9[_0x6549('0x32')]);_0x309f45[_0x6549('0x33')]=_[_0x6549('0x34')](_0x309f45[_0x6549('0x30')],_0x309f45[_0x6549('0x32')]);_0x132625[_0x6549('0x35')]=_[_0x6549('0x34')](_0x309f45['model'],qs[_0x6549('0x47')](_0xbbfdc9[_0x6549('0x32')][_0x6549('0x47')]));_0x132625[_0x6549('0x35')]=_0x132625['attributes'][_0x6549('0x36')]?_0x132625['attributes']:_0x309f45[_0x6549('0x30')];if(_0xbbfdc9[_0x6549('0x32')]['includeAll']){_0x132625[_0x6549('0x48')]=[{'all':!![]}];}_0x132625=_[_0x6549('0x3f')]({},_0x132625,_0xbbfdc9[_0x6549('0x49')]);return db[_0x6549('0x2b')][_0x6549('0x4a')](_0x132625)['then'](handleEntityNotFound(_0x4deaab,null))['then'](respondWithResult(_0x4deaab,null))[_0x6549('0x43')](handleError(_0x4deaab,null));};exports[_0x6549('0x4b')]=function(_0x41d675,_0x1712f3){return db[_0x6549('0x2b')]['describe']()[_0x6549('0x26')](respondWithResult(_0x1712f3,null))[_0x6549('0x43')](handleError(_0x1712f3,null));};exports[_0x6549('0x25')]=function(_0x6121af,_0xa4c650){if(_0x6121af[_0x6549('0x4c')][_0x6549('0x4d')]){delete _0x6121af[_0x6549('0x4c')]['uniqueid'];}return db[_0x6549('0x2b')]['find']({'where':{'uniqueid':_0x6121af[_0x6549('0x45')]['id']}})[_0x6549('0x26')](handleEntityNotFound(_0xa4c650,null))[_0x6549('0x26')](saveUpdates(_0x6121af['body'],null))[_0x6549('0x26')](respondWithResult(_0xa4c650,null))[_0x6549('0x43')](handleError(_0xa4c650,null));};exports[_0x6549('0x4e')]=function(_0x5300c8,_0x19ac50,_0x17d7ce){return db[_0x6549('0x2b')][_0x6549('0x4f')]({'raw':![],'where':{'VoiceQueueId':_0x5300c8[_0x6549('0x45')]['id']},'attributes':[[db[_0x6549('0x50')]['fn']('COUNT',db[_0x6549('0x50')]['fn']('IF',db['sequelize'][_0x6549('0x51')](_0x6549('0x52')))),_0x6549('0x53')],[db[_0x6549('0x50')]['fn'](_0x6549('0x54'),db[_0x6549('0x50')]['fn']('IF',db[_0x6549('0x50')][_0x6549('0x51')](_0x6549('0x55')))),_0x6549('0x56')],[db[_0x6549('0x50')]['fn'](_0x6549('0x54'),db['sequelize']['fn']('IF',db[_0x6549('0x50')][_0x6549('0x51')](_0x6549('0x57')))),_0x6549('0x58')],[db[_0x6549('0x50')]['fn'](_0x6549('0x54'),db[_0x6549('0x50')]['fn']('IF',db[_0x6549('0x50')]['literal'](_0x6549('0x59')))),_0x6549('0x5a')],[db[_0x6549('0x50')]['fn'](_0x6549('0x54'),db[_0x6549('0x50')]['fn']('IF',db[_0x6549('0x50')][_0x6549('0x51')](_0x6549('0x5b')))),'dropContacts'],[db[_0x6549('0x50')]['fn'](_0x6549('0x54'),db[_0x6549('0x50')]['fn']('IF',db[_0x6549('0x50')][_0x6549('0x51')](_0x6549('0x5c')))),'abandonedContacts'],[db[_0x6549('0x50')]['fn'](_0x6549('0x54'),db['sequelize']['fn']('IF',db[_0x6549('0x50')][_0x6549('0x51')](_0x6549('0x5d')))),'reCallContacts'],[db[_0x6549('0x50')]['fn'](_0x6549('0x54'),db['sequelize']['fn']('IF',db[_0x6549('0x50')]['literal'](_0x6549('0x5e')))),'answeringMachine']]})[_0x6549('0x26')](handleEntityNotFound(_0x19ac50,null))[_0x6549('0x26')](respondWithResult(_0x19ac50,null))[_0x6549('0x43')](handleError(_0x19ac50,null));};exports[_0x6549('0x5f')]=function(_0x2da535,_0x45eb28,_0x3b01d9){return db[_0x6549('0x2b')][_0x6549('0x4f')]({'raw':![],'where':{'CampaignId':_0x2da535[_0x6549('0x45')]['id']},'attributes':[[db[_0x6549('0x50')]['fn'](_0x6549('0x54'),db[_0x6549('0x50')]['fn']('IF',db[_0x6549('0x50')]['literal'](_0x6549('0x52')))),_0x6549('0x53')],[db['sequelize']['fn'](_0x6549('0x54'),db[_0x6549('0x50')]['fn']('IF',db[_0x6549('0x50')][_0x6549('0x51')]('`state`\x20=\x203,\x201,\x20null'))),_0x6549('0x56')],[db[_0x6549('0x50')]['fn'](_0x6549('0x54'),db[_0x6549('0x50')]['fn']('IF',db['sequelize'][_0x6549('0x51')]('`state`\x20=\x205,\x201,\x20null'))),_0x6549('0x58')],[db[_0x6549('0x50')]['fn'](_0x6549('0x54'),db[_0x6549('0x50')]['fn']('IF',db[_0x6549('0x50')][_0x6549('0x51')](_0x6549('0x59')))),_0x6549('0x5a')],[db[_0x6549('0x50')]['fn'](_0x6549('0x54'),db['sequelize']['fn']('IF',db[_0x6549('0x50')][_0x6549('0x51')](_0x6549('0x5b')))),_0x6549('0x60')],[db[_0x6549('0x50')]['fn'](_0x6549('0x54'),db['sequelize']['fn']('IF',db['sequelize'][_0x6549('0x51')](_0x6549('0x5c')))),_0x6549('0x61')],[db['sequelize']['fn'](_0x6549('0x54'),db[_0x6549('0x50')]['fn']('IF',db['sequelize'][_0x6549('0x51')](_0x6549('0x5d')))),_0x6549('0x62')],[db[_0x6549('0x50')]['fn'](_0x6549('0x54'),db[_0x6549('0x50')]['fn']('IF',db[_0x6549('0x50')][_0x6549('0x51')]('`state`\x20=\x2019,\x201,\x20null'))),_0x6549('0x63')]]})['then'](handleEntityNotFound(_0x45eb28,null))[_0x6549('0x26')](respondWithResult(_0x45eb28,null))[_0x6549('0x43')](handleError(_0x45eb28,null));};exports['moveContactsQueueCampaignHopperFinal']=function(_0x372b67,_0x2c00a1,_0x2e6b4b){return db['VoiceQueue'][_0x6549('0x4a')]({'where':{'id':_0x372b67[_0x6549('0x45')]['id']}})[_0x6549('0x26')](handleEntityNotFound(_0x2c00a1,null))[_0x6549('0x26')](function(_0x15b906){var _0x34c5f9;if(_0x15b906){_0x34c5f9=squel['insert']()[_0x6549('0x64')](_0x6549('0x65'))[_0x6549('0x66')](['phone','scheduledAt','ContactId',_0x6549('0x67'),_0x6549('0x68'),_0x6549('0x69'),'updatedAt'],squel['select']()[_0x6549('0x6a')]('ANY_VALUE(calleridnum)',_0x6549('0x6b'))[_0x6549('0x6a')](_0x6549('0x6c'),_0x6549('0x6d'))[_0x6549('0x6a')](_0x6549('0x6e'),_0x6549('0x6f'))['field'](_0x6549('0x70'),_0x6549('0x67'))[_0x6549('0x6a')]('ANY_VALUE(VoiceQueueId)',_0x6549('0x68'))[_0x6549('0x6a')](_0x6549('0x6c'),_0x6549('0x69'))[_0x6549('0x6a')](_0x6549('0x6c'),_0x6549('0x71'))['from'](_0x6549('0x72'))['where'](_0x6549('0x73'),_0x372b67[_0x6549('0x45')]['id'][_0x6549('0x74')]())[_0x6549('0x3e')](_0x6549('0x75'),_0x372b67[_0x6549('0x4c')][_0x6549('0x76')][_0x6549('0x74')]())['where'](_0x6549('0x77'))[_0x6549('0x3e')](_0x6549('0x78'),squel[_0x6549('0x79')]()[_0x6549('0x6a')](_0x6549('0x6b'))[_0x6549('0x7a')](_0x6549('0x65'))[_0x6549('0x3e')](_0x6549('0x73'),_0x372b67['params']['id'][_0x6549('0x74')]()))[_0x6549('0x3e')](_0x6549('0x78'),squel[_0x6549('0x79')]()[_0x6549('0x6a')](_0x6549('0x7b'))[_0x6549('0x7a')](_0x6549('0x72'))[_0x6549('0x3e')](_0x6549('0x73'),_0x372b67[_0x6549('0x45')]['id'][_0x6549('0x74')]())[_0x6549('0x3e')](_0x6549('0x7c')))[_0x6549('0x7d')](_0x6549('0x6f')))[_0x6549('0x74')]();return db[_0x6549('0x50')]['query'](_0x34c5f9);}return[];})[_0x6549('0x26')](respondWithResult(_0x2c00a1,null))[_0x6549('0x43')](handleError(_0x2c00a1,null));};exports[_0x6549('0x7e')]=function(_0x35bad6,_0x371d8a,_0xfde69e){return db[_0x6549('0x7f')][_0x6549('0x4a')]({'where':{'id':_0x35bad6[_0x6549('0x45')]['id']}})[_0x6549('0x26')](handleEntityNotFound(_0x371d8a,null))[_0x6549('0x26')](function(_0x1da2d7){var _0x348d55;if(_0x1da2d7){_0x348d55=squel[_0x6549('0x80')]()[_0x6549('0x64')](_0x6549('0x65'))[_0x6549('0x66')](['phone',_0x6549('0x6d'),_0x6549('0x6f'),_0x6549('0x67'),_0x6549('0x81'),_0x6549('0x69'),_0x6549('0x71')],squel[_0x6549('0x79')]()['field'](_0x6549('0x82'),'phone')['field'](_0x6549('0x6c'),'scheduledAt')[_0x6549('0x6a')](_0x6549('0x6e'),_0x6549('0x6f'))[_0x6549('0x6a')](_0x6549('0x70'),'ListId')[_0x6549('0x6a')]('ANY_VALUE(CampaignId)',_0x6549('0x81'))[_0x6549('0x6a')](_0x6549('0x6c'),'createdAt')[_0x6549('0x6a')](_0x6549('0x6c'),'updatedAt')['from'](_0x6549('0x72'))[_0x6549('0x3e')](_0x6549('0x83'),_0x35bad6[_0x6549('0x45')]['id'][_0x6549('0x74')]())[_0x6549('0x3e')](_0x6549('0x75'),_0x35bad6[_0x6549('0x4c')][_0x6549('0x76')][_0x6549('0x74')]())[_0x6549('0x3e')](_0x6549('0x77'))[_0x6549('0x3e')](_0x6549('0x78'),squel[_0x6549('0x79')]()[_0x6549('0x6a')](_0x6549('0x6b'))[_0x6549('0x7a')](_0x6549('0x65'))['where']('CampaignId\x20=\x20?',_0x35bad6[_0x6549('0x45')]['id'][_0x6549('0x74')]()))[_0x6549('0x3e')](_0x6549('0x78'),squel[_0x6549('0x79')]()[_0x6549('0x6a')](_0x6549('0x7b'))[_0x6549('0x7a')](_0x6549('0x72'))[_0x6549('0x3e')]('CampaignId\x20=\x20?',_0x35bad6['params']['id']['toString']())[_0x6549('0x3e')](_0x6549('0x7c')))[_0x6549('0x7d')](_0x6549('0x6f')))[_0x6549('0x74')]();return db['sequelize'][_0x6549('0x32')](_0x348d55);}return[];})[_0x6549('0x26')](respondWithResult(_0x371d8a,null))[_0x6549('0x43')](handleError(_0x371d8a,null));};exports[_0x6549('0x84')]=function(_0x230874,_0x3be369,_0xaf1a80){return db[_0x6549('0x85')][_0x6549('0x86')]({'where':{'VoiceQueueId':_0x230874[_0x6549('0x4c')][_0x6549('0x68')],'CampaignId':_0x230874['body'][_0x6549('0x81')],'ContactId':_0x230874[_0x6549('0x4c')][_0x6549('0x6f')]}})[_0x6549('0x26')](handleEntityNotFound(_0x3be369,null))['then'](function(_0x158c92){if(_0x158c92){return _0x158c92;}return null;})[_0x6549('0x26')](respondWithResult(_0x3be369,null))[_0x6549('0x43')](handleError(_0x3be369,null));};
\ No newline at end of file
index daffbac..d04c3a3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2105=['moment','bluebird','request-promise','path','rimraf','./cmHopperFinal.attributes','define','CmHopperFinal','cm_hopper_final','calleridnum','uniqueid','lodash','util','../../config/logger'];(function(_0x50bf5a,_0x807bba){var _0x4ddc1d=function(_0x349a61){while(--_0x349a61){_0x50bf5a['push'](_0x50bf5a['shift']());}};_0x4ddc1d(++_0x807bba);}(_0x2105,0xeb));var _0x5210=function(_0x5c2e3e,_0x26ecd3){_0x5c2e3e=_0x5c2e3e-0x0;var _0x53f64a=_0x2105[_0x5c2e3e];return _0x53f64a;};'use strict';var _=require(_0x5210('0x0'));var util=require(_0x5210('0x1'));var logger=require(_0x5210('0x2'))('api');var moment=require(_0x5210('0x3'));var BPromise=require(_0x5210('0x4'));var rp=require(_0x5210('0x5'));var fs=require('fs');var path=require(_0x5210('0x6'));var rimraf=require(_0x5210('0x7'));var config=require('../../config/environment');var attributes=require(_0x5210('0x8'));module['exports']=function(_0x27861f,_0x32c684){return _0x27861f[_0x5210('0x9')](_0x5210('0xa'),attributes,{'tableName':_0x5210('0xb'),'paranoid':![],'indexes':[{'name':_0x5210('0xc'),'fields':[_0x5210('0xc')]},{'name':_0x5210('0xd'),'fields':[_0x5210('0xd')]}],'timestamps':!![]});};
\ No newline at end of file
+var _0xfee1=['bluebird','request-promise','path','../../config/environment','./cmHopperFinal.attributes','exports','define','CmHopperFinal','cm_hopper_final','calleridnum','uniqueid','lodash','../../config/logger','api','moment'];(function(_0x570514,_0x591a89){var _0x1763dc=function(_0xd1e0e5){while(--_0xd1e0e5){_0x570514['push'](_0x570514['shift']());}};_0x1763dc(++_0x591a89);}(_0xfee1,0x164));var _0x1fee=function(_0x484e36,_0x4482d8){_0x484e36=_0x484e36-0x0;var _0xafc85d=_0xfee1[_0x484e36];return _0xafc85d;};'use strict';var _=require(_0x1fee('0x0'));var util=require('util');var logger=require(_0x1fee('0x1'))(_0x1fee('0x2'));var moment=require(_0x1fee('0x3'));var BPromise=require(_0x1fee('0x4'));var rp=require(_0x1fee('0x5'));var fs=require('fs');var path=require(_0x1fee('0x6'));var rimraf=require('rimraf');var config=require(_0x1fee('0x7'));var attributes=require(_0x1fee('0x8'));module[_0x1fee('0x9')]=function(_0x545fe7,_0x25099d){return _0x545fe7[_0x1fee('0xa')](_0x1fee('0xb'),attributes,{'tableName':_0x1fee('0xc'),'paranoid':![],'indexes':[{'name':_0x1fee('0xd'),'fields':[_0x1fee('0xd')]},{'name':_0x1fee('0xe'),'fields':[_0x1fee('0xe')]}],'timestamps':!![]});};
\ No newline at end of file
index 128b212..e8116e7 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(_0x108214,_0x1d7e2f){var _0x2a8127=function(_0x46db2f){while(--_0x46db2f){_0x108214['push'](_0x108214['shift']());}};_0x2a8127(++_0x1d7e2f);}(_0xb10b,0x12a));var _0xbb10=function(_0x3926ba,_0x237901){_0x3926ba=_0x3926ba-0x0;var _0x18756e=_0xb10b[_0x3926ba];return _0x18756e;};'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 _0x7a54=['../../config/environment','jayson/promise','http','info','CmHopperFinal,\x20%s,\x20%s','debug','stringify','error','code','message','request\x20sent','result','catch','CmHopperFinal','create','body','options','raw','CreateCmHopperFinal','lodash','util','moment','randomstring','ioredis','../../config/utils','../../config/logger','rpc'];(function(_0x2a358c,_0x274091){var _0x519406=function(_0x5a0f95){while(--_0x5a0f95){_0x2a358c['push'](_0x2a358c['shift']());}};_0x519406(++_0x274091);}(_0x7a54,0x106));var _0x47a5=function(_0x30688b,_0x26b9b4){_0x30688b=_0x30688b-0x0;var _0x16b201=_0x7a54[_0x30688b];return _0x16b201;};'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')]('CmHopperFinal,\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['CreateCmHopperFinal']=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')]('CreateCmHopperFinal',_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')]));});});};
\ No newline at end of file
index 2895ed0..9cbd23e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xbb92=['Router','fs-extra','../../components/interaction/service','../../config/environment','./cmHopperFinal.controller','isAuthenticated','index','get','/describe','/:id','show','countContactsIvrCampaignHopperFinal','post','/voice/queue/moveContacts/:id','moveContactsQueueCampaignHopperFinal','/voice/campaign/moveContacts/:id','moveContactsIvrCampaignHopperFinal','/checkContactHopper','checkContactHopper','put','update','exports','multer','path','connect-timeout','express'];(function(_0x43e597,_0x3d2f7d){var _0x29ebfa=function(_0x462dc9){while(--_0x462dc9){_0x43e597['push'](_0x43e597['shift']());}};_0x29ebfa(++_0x3d2f7d);}(_0xbb92,0xcc));var _0x2bb9=function(_0x3947c9,_0x4d6c97){_0x3947c9=_0x3947c9-0x0;var _0x2e7871=_0xbb92[_0x3947c9];return _0x2e7871;};'use strict';var multer=require(_0x2bb9('0x0'));var util=require('util');var path=require(_0x2bb9('0x1'));var timeout=require(_0x2bb9('0x2'));var express=require(_0x2bb9('0x3'));var router=express[_0x2bb9('0x4')]();var fs_extra=require(_0x2bb9('0x5'));var auth=require('../../components/auth/service');var interaction=require(_0x2bb9('0x6'));var config=require(_0x2bb9('0x7'));var controller=require(_0x2bb9('0x8'));router['get']('/',auth[_0x2bb9('0x9')](),controller[_0x2bb9('0xa')]);router[_0x2bb9('0xb')](_0x2bb9('0xc'),auth['isAuthenticated'](),controller['describe']);router[_0x2bb9('0xb')](_0x2bb9('0xd'),auth['isAuthenticated'](),controller[_0x2bb9('0xe')]);router[_0x2bb9('0xb')]('/voice/queue/countAttributes/:id',auth[_0x2bb9('0x9')](),controller['countContactsQueueCampaignHopperFinal']);router[_0x2bb9('0xb')]('/campaign/countAttributes/:id',auth[_0x2bb9('0x9')](),controller[_0x2bb9('0xf')]);router[_0x2bb9('0x10')](_0x2bb9('0x11'),auth[_0x2bb9('0x9')](),controller[_0x2bb9('0x12')]);router[_0x2bb9('0x10')](_0x2bb9('0x13'),auth[_0x2bb9('0x9')](),controller[_0x2bb9('0x14')]);router[_0x2bb9('0x10')](_0x2bb9('0x15'),auth[_0x2bb9('0x9')](),controller[_0x2bb9('0x16')]);router[_0x2bb9('0x17')](_0x2bb9('0xd'),auth[_0x2bb9('0x9')](),controller[_0x2bb9('0x18')]);module[_0x2bb9('0x19')]=router;
\ No newline at end of file
+var _0xb0ee=['../../components/interaction/service','../../config/environment','./cmHopperFinal.controller','isAuthenticated','index','get','/describe','describe','/:id','show','/voice/queue/countAttributes/:id','countContactsQueueCampaignHopperFinal','/campaign/countAttributes/:id','countContactsIvrCampaignHopperFinal','post','/voice/queue/moveContacts/:id','moveContactsQueueCampaignHopperFinal','moveContactsIvrCampaignHopperFinal','checkContactHopper','put','update','exports','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service'];(function(_0x52fcd3,_0x1ef880){var _0x13e2fb=function(_0x32832d){while(--_0x32832d){_0x52fcd3['push'](_0x52fcd3['shift']());}};_0x13e2fb(++_0x1ef880);}(_0xb0ee,0x18f));var _0xeb0e=function(_0x5627e1,_0x1b2dbf){_0x5627e1=_0x5627e1-0x0;var _0x2f013f=_0xb0ee[_0x5627e1];return _0x2f013f;};'use strict';var multer=require('multer');var util=require(_0xeb0e('0x0'));var path=require(_0xeb0e('0x1'));var timeout=require(_0xeb0e('0x2'));var express=require(_0xeb0e('0x3'));var router=express[_0xeb0e('0x4')]();var fs_extra=require(_0xeb0e('0x5'));var auth=require(_0xeb0e('0x6'));var interaction=require(_0xeb0e('0x7'));var config=require(_0xeb0e('0x8'));var controller=require(_0xeb0e('0x9'));router['get']('/',auth[_0xeb0e('0xa')](),controller[_0xeb0e('0xb')]);router[_0xeb0e('0xc')](_0xeb0e('0xd'),auth['isAuthenticated'](),controller[_0xeb0e('0xe')]);router[_0xeb0e('0xc')](_0xeb0e('0xf'),auth[_0xeb0e('0xa')](),controller[_0xeb0e('0x10')]);router[_0xeb0e('0xc')](_0xeb0e('0x11'),auth[_0xeb0e('0xa')](),controller[_0xeb0e('0x12')]);router[_0xeb0e('0xc')](_0xeb0e('0x13'),auth[_0xeb0e('0xa')](),controller[_0xeb0e('0x14')]);router[_0xeb0e('0x15')](_0xeb0e('0x16'),auth[_0xeb0e('0xa')](),controller[_0xeb0e('0x17')]);router[_0xeb0e('0x15')]('/voice/campaign/moveContacts/:id',auth['isAuthenticated'](),controller[_0xeb0e('0x18')]);router['post']('/checkContactHopper',auth[_0xeb0e('0xa')](),controller[_0xeb0e('0x19')]);router[_0xeb0e('0x1a')](_0xeb0e('0xf'),auth['isAuthenticated'](),controller[_0xeb0e('0x1b')]);module[_0xeb0e('0x1c')]=router;
\ No newline at end of file
index 984936d..1064188 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3e9e=['sequelize','exports','STRING','DATE','INTEGER','BOOLEAN'];(function(_0x432682,_0x253044){var _0x463d05=function(_0xa73403){while(--_0xa73403){_0x432682['push'](_0x432682['shift']());}};_0x463d05(++_0x253044);}(_0x3e9e,0x162));var _0xe3e9=function(_0x26e9fd,_0x1b425a){_0x26e9fd=_0x26e9fd-0x0;var _0x937e61=_0x3e9e[_0x26e9fd];return _0x937e61;};'use strict';var Sequelize=require(_0xe3e9('0x0'));module[_0xe3e9('0x1')]={'state':{'type':Sequelize['INTEGER'](0x2)},'statedesc':{'type':Sequelize[_0xe3e9('0x2')]},'scheduledat':{'type':Sequelize[_0xe3e9('0x3')]},'countbusyretry':{'type':Sequelize[_0xe3e9('0x4')],'defaultValue':0x0},'countcongestionretry':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'countnoanswerretry':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'countglobal':{'type':Sequelize[_0xe3e9('0x4')],'defaultValue':0x0},'uniqueid':{'type':Sequelize[_0xe3e9('0x2')]},'originatecalleridnum':{'type':Sequelize[_0xe3e9('0x2')]},'originatecalleridname':{'type':Sequelize['STRING']},'calleridnum':{'type':Sequelize['STRING']},'calleridname':{'type':Sequelize['STRING']},'starttime':{'type':Sequelize[_0xe3e9('0x3')]},'responsetime':{'type':Sequelize[_0xe3e9('0x3')]},'answertime':{'type':Sequelize[_0xe3e9('0x3')]},'droptime':{'type':Sequelize[_0xe3e9('0x3')]},'endtime':{'type':Sequelize[_0xe3e9('0x3')]},'ringtime':{'type':Sequelize[_0xe3e9('0x4')],'defaultValue':0x0},'holdtime':{'type':Sequelize[_0xe3e9('0x4')],'defaultValue':0x0},'talktime':{'type':Sequelize[_0xe3e9('0x4')],'defaultValue':0x0},'followuptime':{'type':Sequelize[_0xe3e9('0x4')],'defaultValue':0x0},'dropreason':{'type':Sequelize[_0xe3e9('0x2')]},'campaign':{'type':Sequelize[_0xe3e9('0x2')]},'campaigntype':{'type':Sequelize[_0xe3e9('0x2')]},'membername':{'type':Sequelize[_0xe3e9('0x2')]},'reason':{'type':Sequelize[_0xe3e9('0x2')]},'amd':{'type':Sequelize[_0xe3e9('0x5')],'defaultValue':![]},'fax':{'type':Sequelize[_0xe3e9('0x5')],'defaultValue':![]},'callback':{'type':Sequelize[_0xe3e9('0x5')],'defaultValue':![]},'callbackuniqueid':{'type':Sequelize[_0xe3e9('0x2')],'defaultValue':null},'callbackat':{'type':Sequelize['DATE']},'recallme':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'editedat':{'type':Sequelize['DATE']},'edited':{'type':Sequelize[_0xe3e9('0x5')],'defaultValue':![]},'countnosuchnumberretry':{'type':Sequelize[_0xe3e9('0x4')],'defaultValue':0x0},'countdropretry':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'countabandonedretry':{'type':Sequelize[_0xe3e9('0x4')],'defaultValue':0x0},'countmachineretry':{'type':Sequelize[_0xe3e9('0x4')],'defaultValue':0x0},'countagentrejectretry':{'type':Sequelize['INTEGER'],'defaultValue':0x0}};
\ No newline at end of file
+var _0x64a6=['DATE','BOOLEAN','sequelize','exports','INTEGER','STRING'];(function(_0x25aaa1,_0x8405a3){var _0x2fa2c1=function(_0x1d4efd){while(--_0x1d4efd){_0x25aaa1['push'](_0x25aaa1['shift']());}};_0x2fa2c1(++_0x8405a3);}(_0x64a6,0x1ee));var _0x664a=function(_0x46e363,_0x45d7e2){_0x46e363=_0x46e363-0x0;var _0x3fb059=_0x64a6[_0x46e363];return _0x3fb059;};'use strict';var Sequelize=require(_0x664a('0x0'));module[_0x664a('0x1')]={'state':{'type':Sequelize[_0x664a('0x2')](0x2)},'statedesc':{'type':Sequelize[_0x664a('0x3')]},'scheduledat':{'type':Sequelize['DATE']},'countbusyretry':{'type':Sequelize[_0x664a('0x2')],'defaultValue':0x0},'countcongestionretry':{'type':Sequelize[_0x664a('0x2')],'defaultValue':0x0},'countnoanswerretry':{'type':Sequelize[_0x664a('0x2')],'defaultValue':0x0},'countglobal':{'type':Sequelize[_0x664a('0x2')],'defaultValue':0x0},'uniqueid':{'type':Sequelize[_0x664a('0x3')]},'originatecalleridnum':{'type':Sequelize[_0x664a('0x3')]},'originatecalleridname':{'type':Sequelize[_0x664a('0x3')]},'calleridnum':{'type':Sequelize[_0x664a('0x3')]},'calleridname':{'type':Sequelize[_0x664a('0x3')]},'starttime':{'type':Sequelize[_0x664a('0x4')]},'responsetime':{'type':Sequelize[_0x664a('0x4')]},'answertime':{'type':Sequelize[_0x664a('0x4')]},'droptime':{'type':Sequelize[_0x664a('0x4')]},'endtime':{'type':Sequelize[_0x664a('0x4')]},'ringtime':{'type':Sequelize[_0x664a('0x2')],'defaultValue':0x0},'holdtime':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'talktime':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'followuptime':{'type':Sequelize[_0x664a('0x2')],'defaultValue':0x0},'dropreason':{'type':Sequelize['STRING']},'campaign':{'type':Sequelize['STRING']},'campaigntype':{'type':Sequelize[_0x664a('0x3')]},'membername':{'type':Sequelize[_0x664a('0x3')]},'reason':{'type':Sequelize['STRING']},'amd':{'type':Sequelize[_0x664a('0x5')],'defaultValue':![]},'fax':{'type':Sequelize[_0x664a('0x5')],'defaultValue':![]},'callback':{'type':Sequelize[_0x664a('0x5')],'defaultValue':![]},'callbackuniqueid':{'type':Sequelize[_0x664a('0x3')],'defaultValue':null},'callbackat':{'type':Sequelize[_0x664a('0x4')]},'recallme':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'editedat':{'type':Sequelize[_0x664a('0x4')]},'edited':{'type':Sequelize[_0x664a('0x5')],'defaultValue':![]},'countnosuchnumberretry':{'type':Sequelize[_0x664a('0x2')],'defaultValue':0x0},'countdropretry':{'type':Sequelize[_0x664a('0x2')],'defaultValue':0x0},'countabandonedretry':{'type':Sequelize[_0x664a('0x2')],'defaultValue':0x0},'countmachineretry':{'type':Sequelize[_0x664a('0x2')],'defaultValue':0x0},'countagentrejectretry':{'type':Sequelize['INTEGER'],'defaultValue':0x0}};
\ No newline at end of file
index 866867d..013c9ae 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6021=['status','end','json','undefined','count','offset','set','reject','save','update','then','error','stack','name','index','map','CmHopperHistory','rawAttributes','fieldName','key','model','query','keys','intersection','fields','attributes','hasOwnProperty','nolimit','limit','order','sort','where','filters','filter','merge','type','VIRTUAL','options','includeAll','include','findAll','catch','length','find','create','body','describe','uniqueid','params','eml-format','rimraf','zip-dir','request-promise','moment','bluebird','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','../../config/utils','../../config/environment','../../mysqldb'];(function(_0x50ad7b,_0x4f9139){var _0x444356=function(_0x565503){while(--_0x565503){_0x50ad7b['push'](_0x50ad7b['shift']());}};_0x444356(++_0x4f9139);}(_0x6021,0xc9));var _0x1602=function(_0x56cd28,_0x2446ad){_0x56cd28=_0x56cd28-0x0;var _0x19469c=_0x6021[_0x56cd28];return _0x19469c;};'use strict';var emlformat=require(_0x1602('0x0'));var rimraf=require(_0x1602('0x1'));var zipdir=require(_0x1602('0x2'));var jsonpatch=require('fast-json-patch');var rp=require(_0x1602('0x3'));var moment=require(_0x1602('0x4'));var BPromise=require(_0x1602('0x5'));var Mustache=require(_0x1602('0x6'));var util=require(_0x1602('0x7'));var path=require(_0x1602('0x8'));var sox=require(_0x1602('0x9'));var csv=require('to-csv');var ejs=require(_0x1602('0xa'));var fs=require('fs');var fs_extra=require(_0x1602('0xb'));var _=require(_0x1602('0xc'));var squel=require(_0x1602('0xd'));var crypto=require(_0x1602('0xe'));var jsforce=require(_0x1602('0xf'));var deskjs=require(_0x1602('0x10'));var toCsv=require(_0x1602('0x11'));var querystring=require(_0x1602('0x12'));var Papa=require(_0x1602('0x13'));var Redis=require(_0x1602('0x14'));var authService=require(_0x1602('0x15'));var qs=require(_0x1602('0x16'));var as=require(_0x1602('0x17'));var hardwareService=require('../../config/license/hardware');var logger=require('../../config/logger')('api');var utils=require(_0x1602('0x18'));var config=require(_0x1602('0x19'));var licenseUtil=require('../../config/license/util');var db=require(_0x1602('0x1a'))['db'];function respondWithStatusCode(_0x1bfd43,_0x5b5033){_0x5b5033=_0x5b5033||0xcc;return function(_0x16214f){if(_0x16214f){return _0x1bfd43['sendStatus'](_0x5b5033);}return _0x1bfd43[_0x1602('0x1b')](_0x5b5033)[_0x1602('0x1c')]();};}function respondWithResult(_0x49a361,_0x1e2136){_0x1e2136=_0x1e2136||0xc8;return function(_0x21f1ce){if(_0x21f1ce){return _0x49a361[_0x1602('0x1b')](_0x1e2136)[_0x1602('0x1d')](_0x21f1ce);}};}function respondWithFilteredResult(_0x5eff55,_0x21a9a1){return function(_0x31b0fb){if(_0x31b0fb){var _0x5106ed=typeof _0x21a9a1['offset']===_0x1602('0x1e')&&typeof _0x21a9a1['limit']===_0x1602('0x1e');var _0x1ed5c6=_0x31b0fb[_0x1602('0x1f')];var _0x29d8ab=_0x5106ed?0x0:_0x21a9a1[_0x1602('0x20')];var _0x2e47b8=_0x5106ed?_0x31b0fb[_0x1602('0x1f')]:_0x21a9a1[_0x1602('0x20')]+_0x21a9a1['limit'];var _0x4b93d5;if(_0x2e47b8>=_0x1ed5c6){_0x2e47b8=_0x1ed5c6;_0x4b93d5=0xc8;}else{_0x4b93d5=0xce;}_0x5eff55[_0x1602('0x1b')](_0x4b93d5);return _0x5eff55[_0x1602('0x21')]('Content-Range',_0x29d8ab+'-'+_0x2e47b8+'/'+_0x1ed5c6)[_0x1602('0x1d')](_0x31b0fb);}return null;};}function patchUpdates(_0x17270d){return function(_0x364d78){try{jsonpatch['apply'](_0x364d78,_0x17270d,!![]);}catch(_0x11d184){return BPromise[_0x1602('0x22')](_0x11d184);}return _0x364d78[_0x1602('0x23')]();};}function saveUpdates(_0x4fcb0c,_0x2f0d98){return function(_0x527c94){if(_0x527c94){return _0x527c94[_0x1602('0x24')](_0x4fcb0c)[_0x1602('0x25')](function(_0x43cde1){return _0x43cde1;});}return null;};}function removeEntity(_0xee83b0,_0x337d63){return function(_0x1565b0){if(_0x1565b0){return _0x1565b0['destroy']()['then'](function(){_0xee83b0[_0x1602('0x1b')](0xcc)[_0x1602('0x1c')]();});}};}function handleEntityNotFound(_0x3c7e62,_0x1e9974){return function(_0x501c42){if(!_0x501c42){_0x3c7e62['sendStatus'](0x194);}return _0x501c42;};}function handleError(_0x1ee530,_0x46af87){_0x46af87=_0x46af87||0x1f4;return function(_0xc619f8){logger[_0x1602('0x26')](_0xc619f8[_0x1602('0x27')]);if(_0xc619f8[_0x1602('0x28')]){delete _0xc619f8[_0x1602('0x28')];}_0x1ee530['status'](_0x46af87)['send'](_0xc619f8);};}exports[_0x1602('0x29')]=function(_0x27c1a2,_0x47aad2){var _0x28b3b2={},_0x4ed3e3={},_0x112200={'count':0x0,'rows':[]};var _0x2d6cd1=_[_0x1602('0x2a')](db[_0x1602('0x2b')][_0x1602('0x2c')],function(_0x434382){return{'name':_0x434382[_0x1602('0x2d')],'type':_0x434382['type'][_0x1602('0x2e')]};});_0x4ed3e3[_0x1602('0x2f')]=_['map'](_0x2d6cd1,'name');_0x4ed3e3[_0x1602('0x30')]=_[_0x1602('0x31')](_0x27c1a2[_0x1602('0x30')]);_0x4ed3e3['filters']=_[_0x1602('0x32')](_0x4ed3e3[_0x1602('0x2f')],_0x4ed3e3[_0x1602('0x30')]);_0x28b3b2['attributes']=_[_0x1602('0x32')](_0x4ed3e3[_0x1602('0x2f')],qs[_0x1602('0x33')](_0x27c1a2[_0x1602('0x30')]['fields']));_0x28b3b2['attributes']=_0x28b3b2[_0x1602('0x34')]['length']?_0x28b3b2[_0x1602('0x34')]:_0x4ed3e3['model'];if(!_0x27c1a2['query'][_0x1602('0x35')](_0x1602('0x36'))){_0x28b3b2['limit']=qs[_0x1602('0x37')](_0x27c1a2[_0x1602('0x30')]['limit']);_0x28b3b2['offset']=qs[_0x1602('0x20')](_0x27c1a2[_0x1602('0x30')]['offset']);}_0x28b3b2[_0x1602('0x38')]=qs[_0x1602('0x39')](_0x27c1a2[_0x1602('0x30')]['sort']);_0x28b3b2[_0x1602('0x3a')]=qs[_0x1602('0x3b')](_['pick'](_0x27c1a2[_0x1602('0x30')],_0x4ed3e3[_0x1602('0x3b')]),_0x2d6cd1);if(_0x27c1a2[_0x1602('0x30')][_0x1602('0x3c')]){_0x28b3b2[_0x1602('0x3a')]=_[_0x1602('0x3d')](_0x28b3b2[_0x1602('0x3a')],{'$or':_[_0x1602('0x2a')](_0x2d6cd1,function(_0x26f54f){if(_0x26f54f[_0x1602('0x3e')]!==_0x1602('0x3f')){var _0x2dd11c={};_0x2dd11c[_0x26f54f[_0x1602('0x28')]]={'$like':'%'+_0x27c1a2[_0x1602('0x30')]['filter']+'%'};return _0x2dd11c;}})});}_0x28b3b2=_[_0x1602('0x3d')]({},_0x28b3b2,_0x27c1a2[_0x1602('0x40')]);var _0x3bef86={'where':_0x28b3b2['where']};return db[_0x1602('0x2b')][_0x1602('0x1f')](_0x3bef86)[_0x1602('0x25')](function(_0x13dac1){_0x112200[_0x1602('0x1f')]=_0x13dac1;if(_0x27c1a2[_0x1602('0x30')][_0x1602('0x41')]){_0x28b3b2[_0x1602('0x42')]=[{'all':!![]}];}return db[_0x1602('0x2b')][_0x1602('0x43')](_0x28b3b2);})[_0x1602('0x25')](function(_0xd00429){_0x112200['rows']=_0xd00429;return _0x112200;})['then'](respondWithFilteredResult(_0x47aad2,_0x28b3b2))[_0x1602('0x44')](handleError(_0x47aad2,null));};exports['show']=function(_0xaa33b2,_0x15c363){var _0x1d1c2a={'raw':!![],'where':{'id':_0xaa33b2['params']['id']}},_0x5f1674={};_0x5f1674[_0x1602('0x2f')]=_['keys'](db['CmHopperHistory']['rawAttributes']);_0x5f1674[_0x1602('0x30')]=_[_0x1602('0x31')](_0xaa33b2['query']);_0x5f1674[_0x1602('0x3b')]=_[_0x1602('0x32')](_0x5f1674[_0x1602('0x2f')],_0x5f1674[_0x1602('0x30')]);_0x1d1c2a[_0x1602('0x34')]=_[_0x1602('0x32')](_0x5f1674[_0x1602('0x2f')],qs[_0x1602('0x33')](_0xaa33b2[_0x1602('0x30')][_0x1602('0x33')]));_0x1d1c2a['attributes']=_0x1d1c2a['attributes'][_0x1602('0x45')]?_0x1d1c2a['attributes']:_0x5f1674[_0x1602('0x2f')];if(_0xaa33b2[_0x1602('0x30')][_0x1602('0x41')]){_0x1d1c2a[_0x1602('0x42')]=[{'all':!![]}];}_0x1d1c2a=_[_0x1602('0x3d')]({},_0x1d1c2a,_0xaa33b2['options']);return db[_0x1602('0x2b')][_0x1602('0x46')](_0x1d1c2a)[_0x1602('0x25')](handleEntityNotFound(_0x15c363,null))[_0x1602('0x25')](respondWithResult(_0x15c363,null))[_0x1602('0x44')](handleError(_0x15c363,null));};exports[_0x1602('0x47')]=function(_0xd47b81,_0x59af8e){return db[_0x1602('0x2b')][_0x1602('0x47')](_0xd47b81[_0x1602('0x48')],{})[_0x1602('0x25')](respondWithResult(_0x59af8e,0xc9))[_0x1602('0x44')](handleError(_0x59af8e,null));};exports[_0x1602('0x49')]=function(_0x466523,_0x142851){return db[_0x1602('0x2b')]['describe']()[_0x1602('0x25')](respondWithResult(_0x142851,null))[_0x1602('0x44')](handleError(_0x142851,null));};exports[_0x1602('0x24')]=function(_0x344b4c,_0x24147b){if(_0x344b4c[_0x1602('0x48')][_0x1602('0x4a')]){delete _0x344b4c[_0x1602('0x48')][_0x1602('0x4a')];}return db[_0x1602('0x2b')]['find']({'where':{'uniqueid':_0x344b4c[_0x1602('0x4b')]['id']}})[_0x1602('0x25')](handleEntityNotFound(_0x24147b,null))[_0x1602('0x25')](saveUpdates(_0x344b4c[_0x1602('0x48')],null))['then'](respondWithResult(_0x24147b,null))['catch'](handleError(_0x24147b,null));};
\ No newline at end of file
+var _0x86a2=['rows','catch','keys','includeAll','include','options','find','create','body','describe','uniqueid','params','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','mustache','util','sox','ejs','fs-extra','lodash','jsforce','papaparse','ioredis','../../components/parsers/advancedSearch','../../config/logger','../../mysqldb','sendStatus','status','offset','undefined','count','limit','set','Content-Range','json','apply','reject','save','update','then','error','name','send','index','map','CmHopperHistory','rawAttributes','fieldName','key','model','query','filters','intersection','attributes','fields','length','nolimit','order','sort','where','pick','filter','type','VIRTUAL','merge','findAll'];(function(_0x3e5086,_0x48f4a2){var _0xfeb102=function(_0x5a945f){while(--_0x5a945f){_0x3e5086['push'](_0x3e5086['shift']());}};_0xfeb102(++_0x48f4a2);}(_0x86a2,0x1b0));var _0x286a=function(_0x236f12,_0x4c7faf){_0x236f12=_0x236f12-0x0;var _0x32969a=_0x86a2[_0x236f12];return _0x32969a;};'use strict';var emlformat=require(_0x286a('0x0'));var rimraf=require(_0x286a('0x1'));var zipdir=require(_0x286a('0x2'));var jsonpatch=require(_0x286a('0x3'));var rp=require(_0x286a('0x4'));var moment=require(_0x286a('0x5'));var BPromise=require('bluebird');var Mustache=require(_0x286a('0x6'));var util=require(_0x286a('0x7'));var path=require('path');var sox=require(_0x286a('0x8'));var csv=require('to-csv');var ejs=require(_0x286a('0x9'));var fs=require('fs');var fs_extra=require(_0x286a('0xa'));var _=require(_0x286a('0xb'));var squel=require('squel');var crypto=require('crypto');var jsforce=require(_0x286a('0xc'));var deskjs=require('desk.js');var toCsv=require('to-csv');var querystring=require('querystring');var Papa=require(_0x286a('0xd'));var Redis=require(_0x286a('0xe'));var authService=require('../../components/auth/service');var qs=require('../../components/parsers/qs');var as=require(_0x286a('0xf'));var hardwareService=require('../../config/license/hardware');var logger=require(_0x286a('0x10'))('api');var utils=require('../../config/utils');var config=require('../../config/environment');var licenseUtil=require('../../config/license/util');var db=require(_0x286a('0x11'))['db'];function respondWithStatusCode(_0x1ed638,_0x46a0d3){_0x46a0d3=_0x46a0d3||0xcc;return function(_0x25a9b4){if(_0x25a9b4){return _0x1ed638[_0x286a('0x12')](_0x46a0d3);}return _0x1ed638[_0x286a('0x13')](_0x46a0d3)['end']();};}function respondWithResult(_0x5295b7,_0x65e0d3){_0x65e0d3=_0x65e0d3||0xc8;return function(_0x407077){if(_0x407077){return _0x5295b7[_0x286a('0x13')](_0x65e0d3)['json'](_0x407077);}};}function respondWithFilteredResult(_0x1e2b6b,_0x1c623e){return function(_0x195f97){if(_0x195f97){var _0x5004f5=typeof _0x1c623e[_0x286a('0x14')]===_0x286a('0x15')&&typeof _0x1c623e['limit']===_0x286a('0x15');var _0x14b4be=_0x195f97[_0x286a('0x16')];var _0x403715=_0x5004f5?0x0:_0x1c623e['offset'];var _0x4db460=_0x5004f5?_0x195f97[_0x286a('0x16')]:_0x1c623e[_0x286a('0x14')]+_0x1c623e[_0x286a('0x17')];var _0x20fa21;if(_0x4db460>=_0x14b4be){_0x4db460=_0x14b4be;_0x20fa21=0xc8;}else{_0x20fa21=0xce;}_0x1e2b6b['status'](_0x20fa21);return _0x1e2b6b[_0x286a('0x18')](_0x286a('0x19'),_0x403715+'-'+_0x4db460+'/'+_0x14b4be)[_0x286a('0x1a')](_0x195f97);}return null;};}function patchUpdates(_0x13af5b){return function(_0x4eee41){try{jsonpatch[_0x286a('0x1b')](_0x4eee41,_0x13af5b,!![]);}catch(_0x435bb4){return BPromise[_0x286a('0x1c')](_0x435bb4);}return _0x4eee41[_0x286a('0x1d')]();};}function saveUpdates(_0x5300e1,_0x27fc43){return function(_0x389eef){if(_0x389eef){return _0x389eef[_0x286a('0x1e')](_0x5300e1)[_0x286a('0x1f')](function(_0x86ebe1){return _0x86ebe1;});}return null;};}function removeEntity(_0x4caffb,_0x291524){return function(_0x444a6b){if(_0x444a6b){return _0x444a6b['destroy']()[_0x286a('0x1f')](function(){_0x4caffb[_0x286a('0x13')](0xcc)['end']();});}};}function handleEntityNotFound(_0x179a72,_0x111a03){return function(_0x548d4a){if(!_0x548d4a){_0x179a72[_0x286a('0x12')](0x194);}return _0x548d4a;};}function handleError(_0xac2306,_0x1800d0){_0x1800d0=_0x1800d0||0x1f4;return function(_0x2559a9){logger[_0x286a('0x20')](_0x2559a9['stack']);if(_0x2559a9[_0x286a('0x21')]){delete _0x2559a9[_0x286a('0x21')];}_0xac2306[_0x286a('0x13')](_0x1800d0)[_0x286a('0x22')](_0x2559a9);};}exports[_0x286a('0x23')]=function(_0x63ceaa,_0xd43142){var _0x3fef6f={},_0x1bde43={},_0x46fb8b={'count':0x0,'rows':[]};var _0x3e54d9=_[_0x286a('0x24')](db[_0x286a('0x25')][_0x286a('0x26')],function(_0x1d6590){return{'name':_0x1d6590[_0x286a('0x27')],'type':_0x1d6590['type'][_0x286a('0x28')]};});_0x1bde43[_0x286a('0x29')]=_[_0x286a('0x24')](_0x3e54d9,_0x286a('0x21'));_0x1bde43['query']=_['keys'](_0x63ceaa[_0x286a('0x2a')]);_0x1bde43[_0x286a('0x2b')]=_[_0x286a('0x2c')](_0x1bde43[_0x286a('0x29')],_0x1bde43[_0x286a('0x2a')]);_0x3fef6f[_0x286a('0x2d')]=_[_0x286a('0x2c')](_0x1bde43['model'],qs[_0x286a('0x2e')](_0x63ceaa[_0x286a('0x2a')][_0x286a('0x2e')]));_0x3fef6f[_0x286a('0x2d')]=_0x3fef6f['attributes'][_0x286a('0x2f')]?_0x3fef6f['attributes']:_0x1bde43[_0x286a('0x29')];if(!_0x63ceaa[_0x286a('0x2a')]['hasOwnProperty'](_0x286a('0x30'))){_0x3fef6f[_0x286a('0x17')]=qs['limit'](_0x63ceaa[_0x286a('0x2a')][_0x286a('0x17')]);_0x3fef6f[_0x286a('0x14')]=qs[_0x286a('0x14')](_0x63ceaa[_0x286a('0x2a')][_0x286a('0x14')]);}_0x3fef6f[_0x286a('0x31')]=qs[_0x286a('0x32')](_0x63ceaa[_0x286a('0x2a')][_0x286a('0x32')]);_0x3fef6f[_0x286a('0x33')]=qs['filters'](_[_0x286a('0x34')](_0x63ceaa[_0x286a('0x2a')],_0x1bde43[_0x286a('0x2b')]),_0x3e54d9);if(_0x63ceaa[_0x286a('0x2a')][_0x286a('0x35')]){_0x3fef6f[_0x286a('0x33')]=_['merge'](_0x3fef6f['where'],{'$or':_[_0x286a('0x24')](_0x3e54d9,function(_0x33813f){if(_0x33813f[_0x286a('0x36')]!==_0x286a('0x37')){var _0x5cf750={};_0x5cf750[_0x33813f['name']]={'$like':'%'+_0x63ceaa[_0x286a('0x2a')][_0x286a('0x35')]+'%'};return _0x5cf750;}})});}_0x3fef6f=_[_0x286a('0x38')]({},_0x3fef6f,_0x63ceaa['options']);var _0x466c0a={'where':_0x3fef6f[_0x286a('0x33')]};return db[_0x286a('0x25')][_0x286a('0x16')](_0x466c0a)[_0x286a('0x1f')](function(_0x4e129f){_0x46fb8b[_0x286a('0x16')]=_0x4e129f;if(_0x63ceaa[_0x286a('0x2a')]['includeAll']){_0x3fef6f['include']=[{'all':!![]}];}return db[_0x286a('0x25')][_0x286a('0x39')](_0x3fef6f);})[_0x286a('0x1f')](function(_0x17dd68){_0x46fb8b[_0x286a('0x3a')]=_0x17dd68;return _0x46fb8b;})[_0x286a('0x1f')](respondWithFilteredResult(_0xd43142,_0x3fef6f))[_0x286a('0x3b')](handleError(_0xd43142,null));};exports['show']=function(_0x4c354c,_0x27ea3d){var _0x1091b1={'raw':!![],'where':{'id':_0x4c354c['params']['id']}},_0x2db722={};_0x2db722[_0x286a('0x29')]=_[_0x286a('0x3c')](db['CmHopperHistory'][_0x286a('0x26')]);_0x2db722[_0x286a('0x2a')]=_[_0x286a('0x3c')](_0x4c354c[_0x286a('0x2a')]);_0x2db722[_0x286a('0x2b')]=_[_0x286a('0x2c')](_0x2db722['model'],_0x2db722[_0x286a('0x2a')]);_0x1091b1[_0x286a('0x2d')]=_[_0x286a('0x2c')](_0x2db722['model'],qs['fields'](_0x4c354c['query'][_0x286a('0x2e')]));_0x1091b1[_0x286a('0x2d')]=_0x1091b1[_0x286a('0x2d')][_0x286a('0x2f')]?_0x1091b1['attributes']:_0x2db722['model'];if(_0x4c354c[_0x286a('0x2a')][_0x286a('0x3d')]){_0x1091b1[_0x286a('0x3e')]=[{'all':!![]}];}_0x1091b1=_[_0x286a('0x38')]({},_0x1091b1,_0x4c354c[_0x286a('0x3f')]);return db[_0x286a('0x25')][_0x286a('0x40')](_0x1091b1)['then'](handleEntityNotFound(_0x27ea3d,null))[_0x286a('0x1f')](respondWithResult(_0x27ea3d,null))[_0x286a('0x3b')](handleError(_0x27ea3d,null));};exports[_0x286a('0x41')]=function(_0x892def,_0x53e8f0){return db['CmHopperHistory'][_0x286a('0x41')](_0x892def[_0x286a('0x42')],{})[_0x286a('0x1f')](respondWithResult(_0x53e8f0,0xc9))['catch'](handleError(_0x53e8f0,null));};exports['describe']=function(_0xe4df4b,_0x1a9e79){return db[_0x286a('0x25')][_0x286a('0x43')]()[_0x286a('0x1f')](respondWithResult(_0x1a9e79,null))[_0x286a('0x3b')](handleError(_0x1a9e79,null));};exports[_0x286a('0x1e')]=function(_0x2a1b43,_0xbf0e43){if(_0x2a1b43['body'][_0x286a('0x44')]){delete _0x2a1b43[_0x286a('0x42')][_0x286a('0x44')];}return db['CmHopperHistory']['find']({'where':{'uniqueid':_0x2a1b43[_0x286a('0x45')]['id']}})['then'](handleEntityNotFound(_0xbf0e43,null))[_0x286a('0x1f')](saveUpdates(_0x2a1b43[_0x286a('0x42')],null))[_0x286a('0x1f')](respondWithResult(_0xbf0e43,null))[_0x286a('0x3b')](handleError(_0xbf0e43,null));};
\ No newline at end of file
index 66abf87..1fed4bd 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xad5f=['CmHopperHistory','cm_hopper_history','endtime','uniqueid','lodash','util','../../config/logger','api','moment','bluebird','path','rimraf','../../config/environment','./cmHopperHistory.attributes','exports'];(function(_0xd9dc36,_0x4f3d89){var _0xfe5f42=function(_0x2c397c){while(--_0x2c397c){_0xd9dc36['push'](_0xd9dc36['shift']());}};_0xfe5f42(++_0x4f3d89);}(_0xad5f,0x1a8));var _0xfad5=function(_0x54b062,_0x264bb5){_0x54b062=_0x54b062-0x0;var _0x255e41=_0xad5f[_0x54b062];return _0x255e41;};'use strict';var _=require(_0xfad5('0x0'));var util=require(_0xfad5('0x1'));var logger=require(_0xfad5('0x2'))(_0xfad5('0x3'));var moment=require(_0xfad5('0x4'));var BPromise=require(_0xfad5('0x5'));var rp=require('request-promise');var fs=require('fs');var path=require(_0xfad5('0x6'));var rimraf=require(_0xfad5('0x7'));var config=require(_0xfad5('0x8'));var attributes=require(_0xfad5('0x9'));module[_0xfad5('0xa')]=function(_0x180450,_0x43cae5){return _0x180450['define'](_0xfad5('0xb'),attributes,{'tableName':_0xfad5('0xc'),'paranoid':![],'indexes':[{'name':_0xfad5('0xd'),'fields':[_0xfad5('0xd')]},{'name':'uniqueid','fields':[_0xfad5('0xe')]}],'timestamps':!![]});};
\ No newline at end of file
+var _0x199d=['./cmHopperHistory.attributes','CmHopperHistory','cm_hopper_history','endtime','uniqueid','lodash','util','../../config/logger','api','moment','request-promise','rimraf','../../config/environment'];(function(_0x5a4ebb,_0x5459d6){var _0xbb2a27=function(_0x87ac82){while(--_0x87ac82){_0x5a4ebb['push'](_0x5a4ebb['shift']());}};_0xbb2a27(++_0x5459d6);}(_0x199d,0x13d));var _0xd199=function(_0x7791d5,_0xdab65f){_0x7791d5=_0x7791d5-0x0;var _0x5ce288=_0x199d[_0x7791d5];return _0x5ce288;};'use strict';var _=require(_0xd199('0x0'));var util=require(_0xd199('0x1'));var logger=require(_0xd199('0x2'))(_0xd199('0x3'));var moment=require(_0xd199('0x4'));var BPromise=require('bluebird');var rp=require(_0xd199('0x5'));var fs=require('fs');var path=require('path');var rimraf=require(_0xd199('0x6'));var config=require(_0xd199('0x7'));var attributes=require(_0xd199('0x8'));module['exports']=function(_0x44dc53,_0x16825f){return _0x44dc53['define'](_0xd199('0x9'),attributes,{'tableName':_0xd199('0xa'),'paranoid':![],'indexes':[{'name':_0xd199('0xb'),'fields':['endtime']},{'name':_0xd199('0xc'),'fields':[_0xd199('0xc')]}],'timestamps':!![]});};
\ No newline at end of file
index 1ceda90..5812dd8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x280d=['findAll','raw','campaign','name','`state`\x20=\x200,\x201,\x20null','outboundNoSuchCallsDay','`state`\x20=\x203,\x201,\x20null','outboundNoAnswerCallsDay','outboundAnswerCallsDay','`state`\x20=\x205,\x201,\x20null','outboundBusyCallsDay','`state`\x20=\x208,\x201,\x20null','outboundCongestionCallsDay','`state`\x20=\x2010\x20,\x201,\x20null','outboundDropCallsDayTimeout','outboundDropCallsDayCallersExit','`state`\x20=\x2012,\x201,\x20null','outboundUnknownCallsDay','`state`\x20=\x2013,\x201,\x20null','outboundBlacklistCallsDay','`state`\x20=\x2014,\x201,\x20null','`state`\x20=\x2018,\x201,\x20null','outboundRejectCallsDay','outboundAnswerAgiCallsDay','`state`\x20=\x2020,\x201,\x20null','`state`\x20=\x2022\x20or\x20`state`\x20=\x2023,\x201,\x20null','outboundReCallsDay','GetVoiceQueueHopperHistory','GetCampaignHopperHistory','where','ivrAnswerCallsDay','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/environment','jayson/promise','request','info','CmHopperHistory,\x20%s,\x20%s','request\x20sent','debug','CmHopperHistory,\x20%s,\x20%s,\x20%s','stringify','error','code','message','catch','CreateCmHopperHistory','CmHopperHistory','create','body','options','AvgHandleTime','sequelize','COUNT','col','predictiveIntervalTotalCalls','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','then'];(function(_0x1b25b0,_0x40708b){var _0x58a373=function(_0x2381e2){while(--_0x2381e2){_0x1b25b0['push'](_0x1b25b0['shift']());}};_0x58a373(++_0x40708b);}(_0x280d,0x69));var _0xd280=function(_0x356509,_0x3a7f72){_0x356509=_0x356509-0x0;var _0x17205c=_0x280d[_0x356509];return _0x17205c;};'use strict';var _=require(_0xd280('0x0'));var util=require(_0xd280('0x1'));var moment=require(_0xd280('0x2'));var BPromise=require(_0xd280('0x3'));var rs=require(_0xd280('0x4'));var fs=require('fs');var Redis=require(_0xd280('0x5'));var db=require(_0xd280('0x6'))['db'];var utils=require(_0xd280('0x7'));var logger=require('../../config/logger')('rpc');var config=require(_0xd280('0x8'));var jayson=require(_0xd280('0x9'));var client=jayson['client']['http']({'port':0x232a});function respondWithRpcPromise(_0xe183ad,_0x23e765,_0x1991e9){return new BPromise(function(_0x40bb14,_0x3092d5){return client[_0xd280('0xa')](_0xe183ad,_0x1991e9)['then'](function(_0x35e8c1){logger[_0xd280('0xb')](_0xd280('0xc'),_0x23e765,_0xd280('0xd'));logger[_0xd280('0xe')](_0xd280('0xf'),_0x23e765,_0xd280('0xd'),JSON[_0xd280('0x10')](_0x35e8c1));if(_0x35e8c1[_0xd280('0x11')]){if(_0x35e8c1[_0xd280('0x11')][_0xd280('0x12')]===0x1f4){logger['error'](_0xd280('0xc'),_0x23e765,_0x35e8c1[_0xd280('0x11')][_0xd280('0x13')]);return _0x3092d5(_0x35e8c1[_0xd280('0x11')]['message']);}logger[_0xd280('0x11')](_0xd280('0xc'),_0x23e765,_0x35e8c1[_0xd280('0x11')][_0xd280('0x13')]);return _0x40bb14(_0x35e8c1['error'][_0xd280('0x13')]);}else{logger[_0xd280('0xb')]('CmHopperHistory,\x20%s,\x20%s',_0x23e765,_0xd280('0xd'));_0x40bb14(_0x35e8c1['result']['message']);}})[_0xd280('0x14')](function(_0x184d44){logger[_0xd280('0x11')](_0xd280('0xc'),_0x23e765,_0x184d44);_0x3092d5(_0x184d44);});});}exports[_0xd280('0x15')]=function(_0xffc5c3){var _0xe8f917=this;return new Promise(function(_0x2e96eb,_0x1d4314){return db[_0xd280('0x16')][_0xd280('0x17')](_0xffc5c3[_0xd280('0x18')],{'raw':_0xffc5c3[_0xd280('0x19')]?_0xffc5c3[_0xd280('0x19')]['raw']===undefined?!![]:![]:!![]})['then'](function(_0xd12e16){logger[_0xd280('0xb')](_0xd280('0x15'),_0xffc5c3);logger[_0xd280('0xe')]('CreateCmHopperHistory',_0xffc5c3,JSON[_0xd280('0x10')](_0xd12e16));_0x2e96eb(_0xd12e16);})[_0xd280('0x14')](function(_0x1bf3ad){logger['error']('CreateCmHopperHistory',_0x1bf3ad['message'],_0xffc5c3);_0x1d4314(_0xe8f917[_0xd280('0x11')](0x1f4,_0x1bf3ad[_0xd280('0x13')]));});});};exports[_0xd280('0x1a')]=function(_0x4b9fff){var _0x12e8ac=this;return new Promise(function(_0x10d870,_0x445db8){return db['CmHopperHistory']['findAll']({'raw':_0x4b9fff[_0xd280('0x19')]?_0x4b9fff[_0xd280('0x19')]['raw']===undefined?!![]:![]:!![],'where':_0x4b9fff[_0xd280('0x19')]?_0x4b9fff[_0xd280('0x19')]['where']||null:null,'attributes':[[db[_0xd280('0x1b')]['fn'](_0xd280('0x1c'),db[_0xd280('0x1b')][_0xd280('0x1d')]('id')),_0xd280('0x1e')],[db[_0xd280('0x1b')]['fn']('COUNT',db['sequelize']['fn']('IF',db[_0xd280('0x1b')][_0xd280('0x1f')](_0xd280('0x20')))),_0xd280('0x21')],[db[_0xd280('0x1b')]['fn'](_0xd280('0x1c'),db[_0xd280('0x1b')]['fn']('IF',db[_0xd280('0x1b')][_0xd280('0x1f')](_0xd280('0x22')))),_0xd280('0x23')],[db[_0xd280('0x1b')]['fn']('COUNT',db['sequelize']['fn']('IF',db[_0xd280('0x1b')]['literal'](_0xd280('0x24')))),_0xd280('0x25')],[db[_0xd280('0x1b')]['fn'](_0xd280('0x26'),db['sequelize']['fn']('IF',db[_0xd280('0x1b')][_0xd280('0x1f')](_0xd280('0x27')))),_0xd280('0x28')],[db['sequelize']['fn']('AVG',db[_0xd280('0x1b')]['fn']('IF',db[_0xd280('0x1b')][_0xd280('0x1f')]('`state`\x20=\x204,\x20`talktime`,\x20null'))),_0xd280('0x29')]]})[_0xd280('0x2a')](function(_0x143559){logger[_0xd280('0xb')]('AvgHandleTime',_0x4b9fff);logger[_0xd280('0xe')](_0xd280('0x1a'),_0x4b9fff,JSON[_0xd280('0x10')](_0x143559));_0x10d870(_0x143559);})[_0xd280('0x14')](function(_0x11e1ab){logger['error'](_0xd280('0x1a'),_0x11e1ab[_0xd280('0x13')],_0x4b9fff);_0x445db8(_0x12e8ac[_0xd280('0x11')](0x1f4,_0x11e1ab['message']));});});};exports['GetVoiceQueueHopperHistory']=function(_0x1d7aa0){var _0xfe8391=this;return new Promise(function(_0x48e899,_0x19fd0c){return db[_0xd280('0x16')][_0xd280('0x2b')]({'raw':_0x1d7aa0[_0xd280('0x19')]?_0x1d7aa0['options'][_0xd280('0x2c')]===undefined?!![]:![]:!![],'where':_0x1d7aa0['options']?_0x1d7aa0['options']['where']||null:null,'attributes':[[_0xd280('0x2d'),_0xd280('0x2e')],[db[_0xd280('0x1b')]['fn'](_0xd280('0x1c'),db[_0xd280('0x1b')]['fn']('IF',db['sequelize'][_0xd280('0x1f')](_0xd280('0x2f')))),_0xd280('0x30')],[db[_0xd280('0x1b')]['fn'](_0xd280('0x1c'),db['sequelize']['fn']('IF',db[_0xd280('0x1b')]['literal'](_0xd280('0x31')))),_0xd280('0x32')],[db['sequelize']['fn'](_0xd280('0x1c'),db[_0xd280('0x1b')]['fn']('IF',db[_0xd280('0x1b')][_0xd280('0x1f')](_0xd280('0x20')))),_0xd280('0x33')],[db['sequelize']['fn'](_0xd280('0x1c'),db[_0xd280('0x1b')]['fn']('IF',db[_0xd280('0x1b')]['literal'](_0xd280('0x34')))),_0xd280('0x35')],[db['sequelize']['fn'](_0xd280('0x1c'),db[_0xd280('0x1b')]['fn']('IF',db[_0xd280('0x1b')][_0xd280('0x1f')](_0xd280('0x36')))),_0xd280('0x37')],[db[_0xd280('0x1b')]['fn'](_0xd280('0x1c'),db[_0xd280('0x1b')]['fn']('IF',db['sequelize'][_0xd280('0x1f')](_0xd280('0x38')))),_0xd280('0x39')],[db[_0xd280('0x1b')]['fn'](_0xd280('0x1c'),db[_0xd280('0x1b')]['fn']('IF',db[_0xd280('0x1b')][_0xd280('0x1f')]('`state`\x20=\x2011\x20,\x201,\x20null'))),_0xd280('0x3a')],[db[_0xd280('0x1b')]['fn'](_0xd280('0x1c'),db[_0xd280('0x1b')]['fn']('IF',db[_0xd280('0x1b')]['literal'](_0xd280('0x3b')))),_0xd280('0x3c')],[db[_0xd280('0x1b')]['fn'](_0xd280('0x1c'),db[_0xd280('0x1b')]['fn']('IF',db['sequelize'][_0xd280('0x1f')](_0xd280('0x3d')))),_0xd280('0x3e')],[db['sequelize']['fn'](_0xd280('0x1c'),db['sequelize']['fn']('IF',db['sequelize'][_0xd280('0x1f')](_0xd280('0x3f')))),'outboundOriginateFailureCallsDay'],[db[_0xd280('0x1b')]['fn']('COUNT',db['sequelize']['fn']('IF',db['sequelize']['literal'](_0xd280('0x40')))),_0xd280('0x41')],[db[_0xd280('0x1b')]['fn']('COUNT',db[_0xd280('0x1b')]['fn']('IF',db[_0xd280('0x1b')]['literal']('`state`\x20=\x2016,\x201,\x20null'))),_0xd280('0x42')],[db[_0xd280('0x1b')]['fn'](_0xd280('0x1c'),db[_0xd280('0x1b')]['fn']('IF',db[_0xd280('0x1b')][_0xd280('0x1f')](_0xd280('0x43')))),'outboundRejectCallsDay'],[db[_0xd280('0x1b')]['fn'](_0xd280('0x1c'),db['sequelize']['fn']('IF',db[_0xd280('0x1b')][_0xd280('0x1f')](_0xd280('0x44')))),_0xd280('0x45')]],'group':[_0xd280('0x2d')]})[_0xd280('0x2a')](function(_0x9cc2e7){logger[_0xd280('0xb')](_0xd280('0x46'),_0x1d7aa0);logger[_0xd280('0xe')](_0xd280('0x46'),_0x1d7aa0,JSON[_0xd280('0x10')](_0x9cc2e7));_0x48e899(_0x9cc2e7);})[_0xd280('0x14')](function(_0x2d4cf5){logger[_0xd280('0x11')](_0xd280('0x46'),_0x2d4cf5[_0xd280('0x13')],_0x1d7aa0);_0x19fd0c(_0xfe8391[_0xd280('0x11')](0x1f4,_0x2d4cf5['message']));});});};exports[_0xd280('0x47')]=function(_0x8614a1){var _0x184555=this;return new Promise(function(_0x1d5a66,_0xf4afa4){return db['CmHopperHistory'][_0xd280('0x2b')]({'raw':_0x8614a1[_0xd280('0x19')]?_0x8614a1[_0xd280('0x19')]['raw']===undefined?!![]:![]:!![],'where':_0x8614a1['options']?_0x8614a1[_0xd280('0x19')][_0xd280('0x48')]||null:null,'attributes':[[_0xd280('0x2d'),'name'],[db['sequelize']['fn'](_0xd280('0x1c'),db[_0xd280('0x1b')]['col']('id')),'ivrTotalCallsDays'],[db[_0xd280('0x1b')]['fn'](_0xd280('0x1c'),db[_0xd280('0x1b')]['fn']('IF',db[_0xd280('0x1b')]['literal'](_0xd280('0x20')))),_0xd280('0x49')]],'group':[_0xd280('0x2d')]})['then'](function(_0x3539cd){logger[_0xd280('0xb')](_0xd280('0x47'),_0x8614a1);logger[_0xd280('0xe')](_0xd280('0x47'),_0x8614a1,JSON['stringify'](_0x3539cd));_0x1d5a66(_0x3539cd);})[_0xd280('0x14')](function(_0x2501cf){logger[_0xd280('0x11')](_0xd280('0x47'),_0x2501cf[_0xd280('0x13')],_0x8614a1);_0xf4afa4(_0x184555[_0xd280('0x11')](0x1f4,_0x2501cf[_0xd280('0x13')]));});});};
\ No newline at end of file
+var _0x8868=['literal','`state`\x20=\x204,\x201,\x20null','`state`\x20=\x2010,\x201,\x20null','predictiveIntervalDroppedCallsTimeout','predictiveIntervalDroppedCallsCallersExit','AVG','`state`\x20=\x204,\x20`holdtime`,\x20null','predictiveIntervalAvgHoldtime','`state`\x20=\x204,\x20`talktime`,\x20null','predictiveIntervalAvgTalktime','AvgHandleTime','catch','GetVoiceQueueHopperHistory','findAll','campaign','name','`state`\x20=\x200,\x201,\x20null','outboundNoAnswerCallsDay','outboundAnswerCallsDay','`state`\x20=\x208,\x201,\x20null','outboundCongestionCallsDay','`state`\x20=\x2010\x20,\x201,\x20null','outboundDropCallsDayTimeout','`state`\x20=\x2011\x20,\x201,\x20null','outboundDropCallsDayCallersExit','`state`\x20=\x2013,\x201,\x20null','outboundBlacklistCallsDay','outboundOriginateFailureCallsDay','`state`\x20=\x2018,\x201,\x20null','outboundAnswerAgiCallsDay','`state`\x20=\x2020,\x201,\x20null','outboundRejectCallsDay','`state`\x20=\x2022\x20or\x20`state`\x20=\x2023,\x201,\x20null','outboundReCallsDay','GetCampaignHopperHistory','col','ivrTotalCallsDays','ivrAnswerCallsDay','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','http','request','then','info','CmHopperHistory,\x20%s,\x20%s','debug','stringify','error','code','message','request\x20sent','result','CreateCmHopperHistory','CmHopperHistory','create','body','options','raw','where','sequelize','COUNT'];(function(_0x5ef9fc,_0x481b7f){var _0x27f8fb=function(_0x3a413a){while(--_0x3a413a){_0x5ef9fc['push'](_0x5ef9fc['shift']());}};_0x27f8fb(++_0x481b7f);}(_0x8868,0x1ca));var _0x8886=function(_0x13bf8e,_0x5641f0){_0x13bf8e=_0x13bf8e-0x0;var _0x20343a=_0x8868[_0x13bf8e];return _0x20343a;};'use strict';var _=require(_0x8886('0x0'));var util=require(_0x8886('0x1'));var moment=require(_0x8886('0x2'));var BPromise=require(_0x8886('0x3'));var rs=require(_0x8886('0x4'));var fs=require('fs');var Redis=require(_0x8886('0x5'));var db=require(_0x8886('0x6'))['db'];var utils=require(_0x8886('0x7'));var logger=require(_0x8886('0x8'))(_0x8886('0x9'));var config=require(_0x8886('0xa'));var jayson=require('jayson/promise');var client=jayson['client'][_0x8886('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x26b94d,_0x5e2a73,_0x1a85e1){return new BPromise(function(_0x56b9fa,_0x147fc9){return client[_0x8886('0xc')](_0x26b94d,_0x1a85e1)[_0x8886('0xd')](function(_0x39036d){logger[_0x8886('0xe')](_0x8886('0xf'),_0x5e2a73,'request\x20sent');logger[_0x8886('0x10')]('CmHopperHistory,\x20%s,\x20%s,\x20%s',_0x5e2a73,'request\x20sent',JSON[_0x8886('0x11')](_0x39036d));if(_0x39036d['error']){if(_0x39036d[_0x8886('0x12')][_0x8886('0x13')]===0x1f4){logger[_0x8886('0x12')](_0x8886('0xf'),_0x5e2a73,_0x39036d['error'][_0x8886('0x14')]);return _0x147fc9(_0x39036d[_0x8886('0x12')]['message']);}logger[_0x8886('0x12')]('CmHopperHistory,\x20%s,\x20%s',_0x5e2a73,_0x39036d[_0x8886('0x12')][_0x8886('0x14')]);return _0x56b9fa(_0x39036d[_0x8886('0x12')][_0x8886('0x14')]);}else{logger['info']('CmHopperHistory,\x20%s,\x20%s',_0x5e2a73,_0x8886('0x15'));_0x56b9fa(_0x39036d[_0x8886('0x16')]['message']);}})['catch'](function(_0x563a82){logger['error'](_0x8886('0xf'),_0x5e2a73,_0x563a82);_0x147fc9(_0x563a82);});});}exports[_0x8886('0x17')]=function(_0x1d47a6){var _0x5504ab=this;return new Promise(function(_0xb13c62,_0x20072e){return db[_0x8886('0x18')][_0x8886('0x19')](_0x1d47a6[_0x8886('0x1a')],{'raw':_0x1d47a6[_0x8886('0x1b')]?_0x1d47a6[_0x8886('0x1b')][_0x8886('0x1c')]===undefined?!![]:![]:!![]})[_0x8886('0xd')](function(_0x19f0ef){logger['info'](_0x8886('0x17'),_0x1d47a6);logger['debug'](_0x8886('0x17'),_0x1d47a6,JSON[_0x8886('0x11')](_0x19f0ef));_0xb13c62(_0x19f0ef);})['catch'](function(_0x3894a0){logger[_0x8886('0x12')](_0x8886('0x17'),_0x3894a0[_0x8886('0x14')],_0x1d47a6);_0x20072e(_0x5504ab[_0x8886('0x12')](0x1f4,_0x3894a0[_0x8886('0x14')]));});});};exports['AvgHandleTime']=function(_0x3df299){var _0x5cf7d9=this;return new Promise(function(_0x25f350,_0x32e265){return db[_0x8886('0x18')]['findAll']({'raw':_0x3df299[_0x8886('0x1b')]?_0x3df299['options'][_0x8886('0x1c')]===undefined?!![]:![]:!![],'where':_0x3df299[_0x8886('0x1b')]?_0x3df299[_0x8886('0x1b')][_0x8886('0x1d')]||null:null,'attributes':[[db[_0x8886('0x1e')]['fn'](_0x8886('0x1f'),db[_0x8886('0x1e')]['col']('id')),'predictiveIntervalTotalCalls'],[db[_0x8886('0x1e')]['fn'](_0x8886('0x1f'),db['sequelize']['fn']('IF',db[_0x8886('0x1e')][_0x8886('0x20')](_0x8886('0x21')))),'predictiveIntervalAnsweredCalls'],[db['sequelize']['fn'](_0x8886('0x1f'),db[_0x8886('0x1e')]['fn']('IF',db[_0x8886('0x1e')][_0x8886('0x20')](_0x8886('0x22')))),_0x8886('0x23')],[db[_0x8886('0x1e')]['fn']('COUNT',db[_0x8886('0x1e')]['fn']('IF',db[_0x8886('0x1e')][_0x8886('0x20')]('`state`\x20=\x2011,\x201,\x20null'))),_0x8886('0x24')],[db['sequelize']['fn'](_0x8886('0x25'),db[_0x8886('0x1e')]['fn']('IF',db['sequelize'][_0x8886('0x20')](_0x8886('0x26')))),_0x8886('0x27')],[db[_0x8886('0x1e')]['fn'](_0x8886('0x25'),db[_0x8886('0x1e')]['fn']('IF',db[_0x8886('0x1e')]['literal'](_0x8886('0x28')))),_0x8886('0x29')]]})[_0x8886('0xd')](function(_0x3db25d){logger[_0x8886('0xe')](_0x8886('0x2a'),_0x3df299);logger['debug'](_0x8886('0x2a'),_0x3df299,JSON[_0x8886('0x11')](_0x3db25d));_0x25f350(_0x3db25d);})[_0x8886('0x2b')](function(_0x314cd2){logger[_0x8886('0x12')]('AvgHandleTime',_0x314cd2[_0x8886('0x14')],_0x3df299);_0x32e265(_0x5cf7d9[_0x8886('0x12')](0x1f4,_0x314cd2[_0x8886('0x14')]));});});};exports[_0x8886('0x2c')]=function(_0x105501){var _0x1f918a=this;return new Promise(function(_0x4724fe,_0x487f30){return db[_0x8886('0x18')][_0x8886('0x2d')]({'raw':_0x105501['options']?_0x105501['options'][_0x8886('0x1c')]===undefined?!![]:![]:!![],'where':_0x105501[_0x8886('0x1b')]?_0x105501['options']['where']||null:null,'attributes':[[_0x8886('0x2e'),_0x8886('0x2f')],[db[_0x8886('0x1e')]['fn'](_0x8886('0x1f'),db[_0x8886('0x1e')]['fn']('IF',db[_0x8886('0x1e')][_0x8886('0x20')](_0x8886('0x30')))),'outboundNoSuchCallsDay'],[db[_0x8886('0x1e')]['fn'](_0x8886('0x1f'),db['sequelize']['fn']('IF',db[_0x8886('0x1e')][_0x8886('0x20')]('`state`\x20=\x203,\x201,\x20null'))),_0x8886('0x31')],[db[_0x8886('0x1e')]['fn']('COUNT',db['sequelize']['fn']('IF',db['sequelize'][_0x8886('0x20')](_0x8886('0x21')))),_0x8886('0x32')],[db[_0x8886('0x1e')]['fn'](_0x8886('0x1f'),db[_0x8886('0x1e')]['fn']('IF',db[_0x8886('0x1e')]['literal']('`state`\x20=\x205,\x201,\x20null'))),'outboundBusyCallsDay'],[db['sequelize']['fn']('COUNT',db[_0x8886('0x1e')]['fn']('IF',db[_0x8886('0x1e')][_0x8886('0x20')](_0x8886('0x33')))),_0x8886('0x34')],[db[_0x8886('0x1e')]['fn'](_0x8886('0x1f'),db[_0x8886('0x1e')]['fn']('IF',db['sequelize'][_0x8886('0x20')](_0x8886('0x35')))),_0x8886('0x36')],[db[_0x8886('0x1e')]['fn'](_0x8886('0x1f'),db['sequelize']['fn']('IF',db[_0x8886('0x1e')]['literal'](_0x8886('0x37')))),_0x8886('0x38')],[db[_0x8886('0x1e')]['fn'](_0x8886('0x1f'),db[_0x8886('0x1e')]['fn']('IF',db[_0x8886('0x1e')][_0x8886('0x20')]('`state`\x20=\x2012,\x201,\x20null'))),'outboundUnknownCallsDay'],[db[_0x8886('0x1e')]['fn'](_0x8886('0x1f'),db[_0x8886('0x1e')]['fn']('IF',db[_0x8886('0x1e')][_0x8886('0x20')](_0x8886('0x39')))),_0x8886('0x3a')],[db[_0x8886('0x1e')]['fn'](_0x8886('0x1f'),db[_0x8886('0x1e')]['fn']('IF',db[_0x8886('0x1e')][_0x8886('0x20')]('`state`\x20=\x2014,\x201,\x20null'))),_0x8886('0x3b')],[db[_0x8886('0x1e')]['fn'](_0x8886('0x1f'),db['sequelize']['fn']('IF',db[_0x8886('0x1e')][_0x8886('0x20')](_0x8886('0x3c')))),'outboundRejectCallsDay'],[db[_0x8886('0x1e')]['fn'](_0x8886('0x1f'),db[_0x8886('0x1e')]['fn']('IF',db['sequelize'][_0x8886('0x20')]('`state`\x20=\x2016,\x201,\x20null'))),_0x8886('0x3d')],[db[_0x8886('0x1e')]['fn']('COUNT',db[_0x8886('0x1e')]['fn']('IF',db['sequelize']['literal'](_0x8886('0x3e')))),_0x8886('0x3f')],[db[_0x8886('0x1e')]['fn'](_0x8886('0x1f'),db[_0x8886('0x1e')]['fn']('IF',db[_0x8886('0x1e')]['literal'](_0x8886('0x40')))),_0x8886('0x41')]],'group':[_0x8886('0x2e')]})['then'](function(_0x2824b3){logger[_0x8886('0xe')](_0x8886('0x2c'),_0x105501);logger[_0x8886('0x10')](_0x8886('0x2c'),_0x105501,JSON[_0x8886('0x11')](_0x2824b3));_0x4724fe(_0x2824b3);})[_0x8886('0x2b')](function(_0x21db9d){logger[_0x8886('0x12')](_0x8886('0x2c'),_0x21db9d[_0x8886('0x14')],_0x105501);_0x487f30(_0x1f918a[_0x8886('0x12')](0x1f4,_0x21db9d[_0x8886('0x14')]));});});};exports[_0x8886('0x42')]=function(_0x52fdb3){var _0x508bb3=this;return new Promise(function(_0x4c699a,_0x4c251a){return db[_0x8886('0x18')]['findAll']({'raw':_0x52fdb3[_0x8886('0x1b')]?_0x52fdb3['options'][_0x8886('0x1c')]===undefined?!![]:![]:!![],'where':_0x52fdb3[_0x8886('0x1b')]?_0x52fdb3[_0x8886('0x1b')][_0x8886('0x1d')]||null:null,'attributes':[['campaign',_0x8886('0x2f')],[db[_0x8886('0x1e')]['fn'](_0x8886('0x1f'),db['sequelize'][_0x8886('0x43')]('id')),_0x8886('0x44')],[db[_0x8886('0x1e')]['fn']('COUNT',db[_0x8886('0x1e')]['fn']('IF',db[_0x8886('0x1e')]['literal'](_0x8886('0x21')))),_0x8886('0x45')]],'group':[_0x8886('0x2e')]})[_0x8886('0xd')](function(_0x2b0908){logger['info'](_0x8886('0x42'),_0x52fdb3);logger[_0x8886('0x10')]('GetCampaignHopperHistory',_0x52fdb3,JSON[_0x8886('0x11')](_0x2b0908));_0x4c699a(_0x2b0908);})[_0x8886('0x2b')](function(_0x1f9df0){logger[_0x8886('0x12')]('GetCampaignHopperHistory',_0x1f9df0[_0x8886('0x14')],_0x52fdb3);_0x4c251a(_0x508bb3['error'](0x1f4,_0x1f9df0[_0x8886('0x14')]));});});};
\ No newline at end of file
index 9381c2e..2d519a1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5763=['show','post','create','put','/:id','update','exports','multer','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','./cmHopperHistory.controller','isAuthenticated','index','get','/describe'];(function(_0xdd4f17,_0x7edfa1){var _0x1dfb9a=function(_0x66c489){while(--_0x66c489){_0xdd4f17['push'](_0xdd4f17['shift']());}};_0x1dfb9a(++_0x7edfa1);}(_0x5763,0x1ab));var _0x3576=function(_0x2be40e,_0x25003d){_0x2be40e=_0x2be40e-0x0;var _0x36c4be=_0x5763[_0x2be40e];return _0x36c4be;};'use strict';var multer=require(_0x3576('0x0'));var util=require(_0x3576('0x1'));var path=require(_0x3576('0x2'));var timeout=require(_0x3576('0x3'));var express=require(_0x3576('0x4'));var router=express[_0x3576('0x5')]();var fs_extra=require(_0x3576('0x6'));var auth=require(_0x3576('0x7'));var interaction=require(_0x3576('0x8'));var config=require('../../config/environment');var controller=require(_0x3576('0x9'));router['get']('/',auth[_0x3576('0xa')](),controller[_0x3576('0xb')]);router[_0x3576('0xc')](_0x3576('0xd'),auth['isAuthenticated'](),controller['describe']);router[_0x3576('0xc')]('/:id',auth[_0x3576('0xa')](),controller[_0x3576('0xe')]);router[_0x3576('0xf')]('/',auth[_0x3576('0xa')](),controller[_0x3576('0x10')]);router[_0x3576('0x11')](_0x3576('0x12'),auth[_0x3576('0xa')](),controller[_0x3576('0x13')]);module[_0x3576('0x14')]=router;
\ No newline at end of file
+var _0x5f23=['exports','multer','util','path','../../components/interaction/service','../../config/environment','./cmHopperHistory.controller','get','isAuthenticated','index','/describe','describe','/:id','post','put'];(function(_0x2931e6,_0x30a18d){var _0x214c89=function(_0x1591ec){while(--_0x1591ec){_0x2931e6['push'](_0x2931e6['shift']());}};_0x214c89(++_0x30a18d);}(_0x5f23,0x1d2));var _0x35f2=function(_0x445a3d,_0x4120ce){_0x445a3d=_0x445a3d-0x0;var _0x59ec30=_0x5f23[_0x445a3d];return _0x59ec30;};'use strict';var multer=require(_0x35f2('0x0'));var util=require(_0x35f2('0x1'));var path=require(_0x35f2('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(_0x35f2('0x3'));var config=require(_0x35f2('0x4'));var controller=require(_0x35f2('0x5'));router[_0x35f2('0x6')]('/',auth[_0x35f2('0x7')](),controller[_0x35f2('0x8')]);router['get'](_0x35f2('0x9'),auth[_0x35f2('0x7')](),controller[_0x35f2('0xa')]);router[_0x35f2('0x6')](_0x35f2('0xb'),auth[_0x35f2('0x7')](),controller['show']);router[_0x35f2('0xc')]('/',auth[_0x35f2('0x7')](),controller['create']);router[_0x35f2('0xd')](_0x35f2('0xb'),auth[_0x35f2('0x7')](),controller['update']);module[_0x35f2('0xe')]=router;
\ No newline at end of file
index 8e7eae9..ad53006 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x79a8=['STRING','name','sequelize'];(function(_0x3d3328,_0x550d1c){var _0x31dc46=function(_0x41eb51){while(--_0x41eb51){_0x3d3328['push'](_0x3d3328['shift']());}};_0x31dc46(++_0x550d1c);}(_0x79a8,0x1d0));var _0x879a=function(_0x3dc68d,_0x1c1951){_0x3dc68d=_0x3dc68d-0x0;var _0xdf7f94=_0x79a8[_0x3dc68d];return _0xdf7f94;};'use strict';var Sequelize=require(_0x879a('0x0'));module['exports']={'name':{'type':Sequelize[_0x879a('0x1')],'unique':_0x879a('0x2'),'allowNull':![],'validate':{'notEmpty':!![]}},'description':{'type':Sequelize[_0x879a('0x1')]},'dialPrefix':{'type':Sequelize['STRING']}};
\ No newline at end of file
+var _0x121d=['STRING','name','sequelize','exports'];(function(_0x26c5df,_0x7900e){var _0x1e4580=function(_0x14368f){while(--_0x14368f){_0x26c5df['push'](_0x26c5df['shift']());}};_0x1e4580(++_0x7900e);}(_0x121d,0xea));var _0xd121=function(_0x13cfc3,_0x3720e8){_0x13cfc3=_0x13cfc3-0x0;var _0x41a490=_0x121d[_0x13cfc3];return _0x41a490;};'use strict';var Sequelize=require(_0xd121('0x0'));module[_0xd121('0x1')]={'name':{'type':Sequelize[_0xd121('0x2')],'unique':_0xd121('0x3'),'allowNull':![],'validate':{'notEmpty':!![]}},'description':{'type':Sequelize[_0xd121('0x2')]},'dialPrefix':{'type':Sequelize[_0xd121('0x2')]}};
\ No newline at end of file
index ab07f83..e6998da 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x062e=['Content-disposition','attachment;\x20filename=','list_%d_%s.csv','text/csv','download','addCustomField','findOne','Sequelize','TEXT','text','number','INTEGER','switch','BOOLEAN','defaultValue','sequelize','queryInterface','addColumn','cm_contacts','cf_%s','findAndCountAll','addAgents','spread','emit','userCmList:save','removeAgents','userCmList:remove','getAgents','eml-format','rimraf','zip-dir','request-promise','moment','bluebird','mustache','util','path','to-csv','ejs','lodash','squel','jsforce','desk.js','papaparse','ioredis','../../config/license/hardware','../../config/logger','api','../../config/environment','../../config/license/util','defaults','redis','localhost','socket.io-emitter','./cmList.socket','register','status','end','json','undefined','count','offset','limit','set','apply','reject','save','then','destroy','Lists','sendStatus','error','stack','name','send','index','map','fieldName','type','key','model','keys','intersection','query','fields','attributes','hasOwnProperty','nolimit','order','sort','filters','pick','filter','merge','where','VIRTUAL','options','CmList','include','findAll','rows','show','params','length','includeAll','find','body','get','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','user','UserProfileSection','userProfileId','create','catch','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','update','describe','ListId','Disposition','removeDispositions','ids','addContacts','CmContact','tags','isArray','push','omit','success','dataValues','errors','getContacts','rawAttributes','concat','CustomFields','format','raw','getContactsCsv','CmCustomField','now','/tmp/list_%d_%s.csv','setHeader'];(function(_0x54d4a8,_0x585a59){var _0x3b321b=function(_0x245c6a){while(--_0x245c6a){_0x54d4a8['push'](_0x54d4a8['shift']());}};_0x3b321b(++_0x585a59);}(_0x062e,0x1c6));var _0xe062=function(_0x413608,_0x5906fd){_0x413608=_0x413608-0x0;var _0x306eab=_0x062e[_0x413608];return _0x306eab;};'use strict';var emlformat=require(_0xe062('0x0'));var rimraf=require(_0xe062('0x1'));var zipdir=require(_0xe062('0x2'));var jsonpatch=require('fast-json-patch');var rp=require(_0xe062('0x3'));var moment=require(_0xe062('0x4'));var BPromise=require(_0xe062('0x5'));var Mustache=require(_0xe062('0x6'));var util=require(_0xe062('0x7'));var path=require(_0xe062('0x8'));var sox=require('sox');var csv=require(_0xe062('0x9'));var ejs=require(_0xe062('0xa'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0xe062('0xb'));var squel=require(_0xe062('0xc'));var crypto=require('crypto');var jsforce=require(_0xe062('0xd'));var deskjs=require(_0xe062('0xe'));var toCsv=require(_0xe062('0x9'));var querystring=require('querystring');var Papa=require(_0xe062('0xf'));var Redis=require(_0xe062('0x10'));var authService=require('../../components/auth/service');var qs=require('../../components/parsers/qs');var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0xe062('0x11'));var logger=require(_0xe062('0x12'))(_0xe062('0x13'));var utils=require('../../config/utils');var config=require(_0xe062('0x14'));var licenseUtil=require(_0xe062('0x15'));var db=require('../../mysqldb')['db'];config['redis']=_[_0xe062('0x16')](config[_0xe062('0x17')],{'host':_0xe062('0x18'),'port':0x18eb});var socket=require(_0xe062('0x19'))(new Redis(config[_0xe062('0x17')]));require(_0xe062('0x1a'))[_0xe062('0x1b')](socket);function respondWithStatusCode(_0x4cc1b6,_0x16cc37){_0x16cc37=_0x16cc37||0xcc;return function(_0x225adb){if(_0x225adb){return _0x4cc1b6['sendStatus'](_0x16cc37);}return _0x4cc1b6[_0xe062('0x1c')](_0x16cc37)[_0xe062('0x1d')]();};}function respondWithResult(_0x1e306f,_0x32a5ef){_0x32a5ef=_0x32a5ef||0xc8;return function(_0x4480c3){if(_0x4480c3){return _0x1e306f[_0xe062('0x1c')](_0x32a5ef)[_0xe062('0x1e')](_0x4480c3);}};}function respondWithFilteredResult(_0x3c806e,_0x406387){return function(_0x33c21e){if(_0x33c21e){var _0x198583=typeof _0x406387['offset']===_0xe062('0x1f')&&typeof _0x406387['limit']==='undefined';var _0x31cee3=_0x33c21e[_0xe062('0x20')];var _0x409128=_0x198583?0x0:_0x406387[_0xe062('0x21')];var _0x4f2bc3=_0x198583?_0x33c21e[_0xe062('0x20')]:_0x406387[_0xe062('0x21')]+_0x406387[_0xe062('0x22')];var _0x23a5f8;if(_0x4f2bc3>=_0x31cee3){_0x4f2bc3=_0x31cee3;_0x23a5f8=0xc8;}else{_0x23a5f8=0xce;}_0x3c806e[_0xe062('0x1c')](_0x23a5f8);return _0x3c806e[_0xe062('0x23')]('Content-Range',_0x409128+'-'+_0x4f2bc3+'/'+_0x31cee3)[_0xe062('0x1e')](_0x33c21e);}return null;};}function patchUpdates(_0x67b34a){return function(_0x201243){try{jsonpatch[_0xe062('0x24')](_0x201243,_0x67b34a,!![]);}catch(_0x4e6be2){return BPromise[_0xe062('0x25')](_0x4e6be2);}return _0x201243[_0xe062('0x26')]();};}function saveUpdates(_0x2c84bd,_0x3a23a3){return function(_0x102863){if(_0x102863){return _0x102863['update'](_0x2c84bd)[_0xe062('0x27')](function(_0x3722cf){return _0x3722cf;});}return null;};}function removeEntity(_0x24fb70,_0xd94b58){return function(_0x120db8){if(_0x120db8){return _0x120db8[_0xe062('0x28')]()[_0xe062('0x27')](function(){var _0xc168ba=_0x120db8['get']({'plain':!![]});var _0x160a4c=_0xe062('0x29');return db['UserProfileResource']['destroy']({'where':{'type':_0x160a4c,'resourceId':_0xc168ba['id']}})[_0xe062('0x27')](function(){return _0x120db8;});})[_0xe062('0x27')](function(){_0x24fb70[_0xe062('0x1c')](0xcc)[_0xe062('0x1d')]();});}};}function handleEntityNotFound(_0xcc5699,_0x3ed3e7){return function(_0x2b4a8d){if(!_0x2b4a8d){_0xcc5699[_0xe062('0x2a')](0x194);}return _0x2b4a8d;};}function handleError(_0x9cb92d,_0x4ef340){_0x4ef340=_0x4ef340||0x1f4;return function(_0x24a6fe){logger[_0xe062('0x2b')](_0x24a6fe[_0xe062('0x2c')]);if(_0x24a6fe[_0xe062('0x2d')]){delete _0x24a6fe[_0xe062('0x2d')];}_0x9cb92d['status'](_0x4ef340)[_0xe062('0x2e')](_0x24a6fe);};}exports[_0xe062('0x2f')]=function(_0x398225,_0x2c167b){var _0x475204={},_0xf20f52={},_0x52705c={'count':0x0,'rows':[]};var _0xf608a1=_[_0xe062('0x30')](db['CmList']['rawAttributes'],function(_0x2104d1){return{'name':_0x2104d1[_0xe062('0x31')],'type':_0x2104d1[_0xe062('0x32')][_0xe062('0x33')]};});_0xf20f52[_0xe062('0x34')]=_[_0xe062('0x30')](_0xf608a1,_0xe062('0x2d'));_0xf20f52['query']=_[_0xe062('0x35')](_0x398225['query']);_0xf20f52['filters']=_[_0xe062('0x36')](_0xf20f52[_0xe062('0x34')],_0xf20f52[_0xe062('0x37')]);_0x475204['attributes']=_[_0xe062('0x36')](_0xf20f52['model'],qs[_0xe062('0x38')](_0x398225[_0xe062('0x37')][_0xe062('0x38')]));_0x475204[_0xe062('0x39')]=_0x475204['attributes']['length']?_0x475204[_0xe062('0x39')]:_0xf20f52[_0xe062('0x34')];if(!_0x398225[_0xe062('0x37')][_0xe062('0x3a')](_0xe062('0x3b'))){_0x475204[_0xe062('0x22')]=qs[_0xe062('0x22')](_0x398225[_0xe062('0x37')][_0xe062('0x22')]);_0x475204['offset']=qs[_0xe062('0x21')](_0x398225[_0xe062('0x37')][_0xe062('0x21')]);}_0x475204[_0xe062('0x3c')]=qs[_0xe062('0x3d')](_0x398225[_0xe062('0x37')]['sort']);_0x475204['where']=qs[_0xe062('0x3e')](_[_0xe062('0x3f')](_0x398225[_0xe062('0x37')],_0xf20f52[_0xe062('0x3e')]),_0xf608a1);if(_0x398225['query'][_0xe062('0x40')]){_0x475204['where']=_[_0xe062('0x41')](_0x475204[_0xe062('0x42')],{'$or':_[_0xe062('0x30')](_0xf608a1,function(_0x3daec0){if(_0x3daec0[_0xe062('0x32')]!==_0xe062('0x43')){var _0x234ab8={};_0x234ab8[_0x3daec0['name']]={'$like':'%'+_0x398225['query'][_0xe062('0x40')]+'%'};return _0x234ab8;}})});}_0x475204=_[_0xe062('0x41')]({},_0x475204,_0x398225[_0xe062('0x44')]);var _0x19e0e5={'where':_0x475204[_0xe062('0x42')]};return db[_0xe062('0x45')][_0xe062('0x20')](_0x19e0e5)[_0xe062('0x27')](function(_0x16e50a){_0x52705c[_0xe062('0x20')]=_0x16e50a;if(_0x398225[_0xe062('0x37')]['includeAll']){_0x475204[_0xe062('0x46')]=[{'all':!![]}];}return db[_0xe062('0x45')][_0xe062('0x47')](_0x475204);})[_0xe062('0x27')](function(_0x38fd18){_0x52705c[_0xe062('0x48')]=_0x38fd18;return _0x52705c;})['then'](respondWithFilteredResult(_0x2c167b,_0x475204))['catch'](handleError(_0x2c167b,null));};exports[_0xe062('0x49')]=function(_0x5eccdd,_0x6fa67b){var _0x43be47={'raw':![],'where':{'id':_0x5eccdd[_0xe062('0x4a')]['id']}},_0x20b041={};_0x20b041[_0xe062('0x34')]=_[_0xe062('0x35')](db[_0xe062('0x45')]['rawAttributes']);_0x20b041[_0xe062('0x37')]=_[_0xe062('0x35')](_0x5eccdd[_0xe062('0x37')]);_0x20b041['filters']=_['intersection'](_0x20b041[_0xe062('0x34')],_0x20b041[_0xe062('0x37')]);_0x43be47['attributes']=_[_0xe062('0x36')](_0x20b041['model'],qs[_0xe062('0x38')](_0x5eccdd[_0xe062('0x37')][_0xe062('0x38')]));_0x43be47[_0xe062('0x39')]=_0x43be47['attributes'][_0xe062('0x4b')]?_0x43be47[_0xe062('0x39')]:_0x20b041[_0xe062('0x34')];if(_0x5eccdd[_0xe062('0x37')][_0xe062('0x4c')]){_0x43be47['include']=[{'all':!![]}];}_0x43be47=_[_0xe062('0x41')]({},_0x43be47,_0x5eccdd[_0xe062('0x44')]);return db['CmList'][_0xe062('0x4d')](_0x43be47)[_0xe062('0x27')](handleEntityNotFound(_0x6fa67b,null))[_0xe062('0x27')](respondWithResult(_0x6fa67b,null))['catch'](handleError(_0x6fa67b,null));};exports['create']=function(_0x7d7f7c,_0x40a576){return db[_0xe062('0x45')]['create'](_0x7d7f7c[_0xe062('0x4e')],{})[_0xe062('0x27')](function(_0x24081f){var _0xaf43a4=_0x7d7f7c['user'][_0xe062('0x4f')]({'plain':!![]});if(!_0xaf43a4)throw new Error(_0xe062('0x50'));if(_0xaf43a4[_0xe062('0x51')]===_0xe062('0x52')){var _0x53a309=_0x24081f[_0xe062('0x4f')]({'plain':!![]});var _0xc5bda5=_0xe062('0x29');return db[_0xe062('0x53')][_0xe062('0x4d')]({'where':{'name':_0xc5bda5,'userProfileId':_0xaf43a4[_0xe062('0x54')]},'raw':!![]})['then'](function(_0x523637){if(_0x523637&&_0x523637['autoAssociation']===0x0){return db['UserProfileResource'][_0xe062('0x55')]({'name':_0x53a309[_0xe062('0x2d')],'resourceId':_0x53a309['id'],'type':_0x523637[_0xe062('0x2d')],'sectionId':_0x523637['id']},{})[_0xe062('0x27')](function(){return _0x24081f;});}else{return _0x24081f;}})[_0xe062('0x56')](function(_0x60d9a1){logger[_0xe062('0x2b')](_0xe062('0x57'),_0x60d9a1);throw _0x60d9a1;});}return _0x24081f;})[_0xe062('0x27')](respondWithResult(_0x40a576,0xc9))[_0xe062('0x56')](handleError(_0x40a576,null));};exports[_0xe062('0x58')]=function(_0x1b4d6b,_0x2e2a5a){if(_0x1b4d6b[_0xe062('0x4e')]['id']){delete _0x1b4d6b[_0xe062('0x4e')]['id'];}return db[_0xe062('0x45')]['find']({'where':{'id':_0x1b4d6b['params']['id']}})[_0xe062('0x27')](handleEntityNotFound(_0x2e2a5a,null))[_0xe062('0x27')](saveUpdates(_0x1b4d6b[_0xe062('0x4e')],null))[_0xe062('0x27')](respondWithResult(_0x2e2a5a,null))['catch'](handleError(_0x2e2a5a,null));};exports['destroy']=function(_0x17e96e,_0x4414d3){return db['CmList'][_0xe062('0x4d')]({'where':{'id':_0x17e96e[_0xe062('0x4a')]['id']}})[_0xe062('0x27')](handleEntityNotFound(_0x4414d3,null))['then'](removeEntity(_0x4414d3,null))[_0xe062('0x56')](handleError(_0x4414d3,null));};exports['describe']=function(_0x19ea09,_0x106dd1){return db[_0xe062('0x45')][_0xe062('0x59')]()[_0xe062('0x27')](respondWithResult(_0x106dd1,null))[_0xe062('0x56')](handleError(_0x106dd1,null));};exports['addDisposition']=function(_0x571f6a,_0x4a8614,_0x2df5b8){if(_0x571f6a[_0xe062('0x4e')]['id']){delete _0x571f6a['body']['id'];}return db[_0xe062('0x45')]['find']({'where':{'id':_0x571f6a[_0xe062('0x4a')]['id']}})[_0xe062('0x27')](handleEntityNotFound(_0x4a8614,null))[_0xe062('0x27')](function(_0x1bf04f){if(_0x1bf04f){_0x571f6a[_0xe062('0x4e')][_0xe062('0x5a')]=_0x1bf04f['id'];return db[_0xe062('0x5b')][_0xe062('0x55')](_0x571f6a[_0xe062('0x4e')]);}})['then'](respondWithResult(_0x4a8614,null))[_0xe062('0x56')](handleError(_0x4a8614,null));};exports['getDispositions']=function(_0x593da7,_0x31f64d,_0x29a156){var _0x574718={'raw':![],'where':{}};var _0x2ce5cf={};var _0x151bfe={'count':0x0,'rows':[]};return db[_0xe062('0x45')]['findOne']({'where':{'id':_0x593da7[_0xe062('0x4a')]['id']}})['then'](handleEntityNotFound(_0x31f64d,null))['then'](function(_0x32ba56){if(_0x32ba56){_0x2ce5cf[_0xe062('0x34')]=_['keys'](db[_0xe062('0x5b')]['rawAttributes']);_0x2ce5cf[_0xe062('0x37')]=_[_0xe062('0x35')](_0x593da7[_0xe062('0x37')]);_0x2ce5cf[_0xe062('0x3e')]=_[_0xe062('0x36')](_0x2ce5cf['model'],_0x2ce5cf[_0xe062('0x37')]);_0x574718[_0xe062('0x39')]=_[_0xe062('0x36')](_0x2ce5cf[_0xe062('0x34')],qs['fields'](_0x593da7[_0xe062('0x37')][_0xe062('0x38')]));_0x574718[_0xe062('0x39')]=_0x574718[_0xe062('0x39')][_0xe062('0x4b')]?_0x574718[_0xe062('0x39')]:_0x2ce5cf[_0xe062('0x34')];if(!_0x593da7[_0xe062('0x37')][_0xe062('0x3a')](_0xe062('0x3b'))){_0x574718[_0xe062('0x22')]=qs['limit'](_0x593da7[_0xe062('0x37')][_0xe062('0x22')]);_0x574718[_0xe062('0x21')]=qs[_0xe062('0x21')](_0x593da7[_0xe062('0x37')]['offset']);}_0x574718[_0xe062('0x3c')]=qs[_0xe062('0x3d')](_0x593da7[_0xe062('0x37')][_0xe062('0x3d')]);_0x574718[_0xe062('0x42')]=qs['filters'](_['pick'](_0x593da7[_0xe062('0x37')],_0x2ce5cf[_0xe062('0x3e')]));_0x574718['where']['ListId']=_0x32ba56['id'];if(_0x593da7[_0xe062('0x37')][_0xe062('0x40')]){_0x574718[_0xe062('0x42')]=_[_0xe062('0x41')](_0x574718[_0xe062('0x42')],{'$or':_[_0xe062('0x30')](_0x574718['attributes'],function(_0x131f48){var _0x52d445={};_0x52d445[_0x131f48]={'$like':'%'+_0x593da7[_0xe062('0x37')][_0xe062('0x40')]+'%'};return _0x52d445;})});}_0x574718=_[_0xe062('0x41')]({},_0x574718,_0x593da7[_0xe062('0x44')]);return db[_0xe062('0x5b')][_0xe062('0x20')]({'where':_0x574718[_0xe062('0x42')]})[_0xe062('0x27')](function(_0x2c35bf){_0x151bfe[_0xe062('0x20')]=_0x2c35bf;if(_0x593da7[_0xe062('0x37')][_0xe062('0x4c')]){_0x574718[_0xe062('0x46')]=[{'all':!![]}];}return db['Disposition'][_0xe062('0x47')](_0x574718);})[_0xe062('0x27')](function(_0x4965d5){_0x151bfe[_0xe062('0x48')]=_0x4965d5;return _0x151bfe;});}})[_0xe062('0x27')](respondWithFilteredResult(_0x31f64d,_0x574718))[_0xe062('0x56')](handleError(_0x31f64d,null));};exports[_0xe062('0x5c')]=function(_0x46bdae,_0x282553,_0x2e774f){return db[_0xe062('0x45')]['find']({'where':{'id':_0x46bdae['params']['id']}})[_0xe062('0x27')](handleEntityNotFound(_0x282553,null))['then'](function(_0x217d6d){if(_0x217d6d){return _0x217d6d[_0xe062('0x5c')](_0x46bdae[_0xe062('0x37')][_0xe062('0x5d')]);}})[_0xe062('0x27')](respondWithStatusCode(_0x282553,null))[_0xe062('0x56')](handleError(_0x282553,null));};exports[_0xe062('0x5e')]=function(_0x2f0150,_0x35e857,_0x3617a8){return db[_0xe062('0x45')][_0xe062('0x4d')]({'where':{'id':_0x2f0150[_0xe062('0x4a')]['id']}})['then'](handleEntityNotFound(_0x35e857,null))['then'](function(_0x42a1a0){if(_0x42a1a0){var _0x304902=[];var _0x3c816d={'success':[],'errors':[]};return db[_0xe062('0x5f')][_0xe062('0x59')]()[_0xe062('0x27')](function(_0x4ea096){if(_0x2f0150[_0xe062('0x4e')][_0xe062('0x60')]&&_['isArray'](_0x2f0150['body'][_0xe062('0x60')])){if(_0x2f0150[_0xe062('0x4e')][_0xe062('0x60')][_0xe062('0x4b')]){_0x2f0150[_0xe062('0x4e')][_0xe062('0x60')]=_0x2f0150[_0xe062('0x4e')][_0xe062('0x60')]['join'](';')+';';}else{_0x2f0150[_0xe062('0x4e')][_0xe062('0x60')]=null;}}else{_0x2f0150['body'][_0xe062('0x60')]=null;}if(_0x2f0150[_0xe062('0x4e')]&&_[_0xe062('0x61')](_0x2f0150['body'])){for(var _0x5ab26f=0x0;_0x5ab26f<_0x2f0150[_0xe062('0x4e')][_0xe062('0x4b')];_0x5ab26f+=0x1){_0x2f0150[_0xe062('0x4e')][_0x5ab26f][_0xe062('0x5a')]=_0x2f0150[_0xe062('0x4a')]['id'];_0x304902[_0xe062('0x62')](_0x2f0150[_0xe062('0x4e')][_0x5ab26f]);}return BPromise['each'](_0x304902,function(_0x26bbca){return db['CmContact']['create'](_[_0xe062('0x63')](_0x26bbca,[_0xe062('0x5d'),'id'])||{},{'fields':_[_0xe062('0x35')](_0x4ea096),'raw':!![]})[_0xe062('0x27')](function(_0x5234e9){_0x3c816d[_0xe062('0x64')]['push'](_0x5234e9[_0xe062('0x65')]);})[_0xe062('0x56')](function(_0x3437ae){_0x3c816d[_0xe062('0x66')][_0xe062('0x62')]({'data':_0x26bbca,'error':_0x3437ae['message']});});})[_0xe062('0x27')](function(_0x42106d){return _0x3c816d;})[_0xe062('0x56')](function(_0x745daf){return _0x745daf;});}else{_0x35e857[_0xe062('0x1c')](0x190)[_0xe062('0x1e')]({'message':'Malformed\x20request\x20syntax'});}});}})['then'](respondWithResult(_0x35e857,null))[_0xe062('0x56')](handleError(_0x35e857,null));};exports[_0xe062('0x67')]=function(_0x30b971,_0x45c74c,_0x590251){var _0x2fd221;return db['CmList'][_0xe062('0x4d')]({'where':{'id':_0x30b971['params']['id']},'include':[{'model':db['CmCustomField'],'as':'CustomFields'}]})[_0xe062('0x27')](handleEntityNotFound(_0x45c74c,null))['then'](function(_0x5a2776){if(_0x5a2776){_0x2fd221=_0x5a2776;return db['CmContact'][_0xe062('0x68')];}})[_0xe062('0x27')](function(_0x55a754){if(_0x55a754){var _0x2224d0={};var _0x40c35f={};_0x40c35f['model']=_[_0xe062('0x69')](_[_0xe062('0x35')](_0x55a754),_[_0xe062('0x30')](_0x2fd221[_0xe062('0x6a')],function(_0x2f208a){return util[_0xe062('0x6b')]('cf_%d',_0x2f208a['id']);}));_0x40c35f[_0xe062('0x37')]=_[_0xe062('0x35')](_0x30b971[_0xe062('0x37')]);_0x40c35f[_0xe062('0x3e')]=_['intersection'](_0x40c35f[_0xe062('0x34')],_0x40c35f[_0xe062('0x37')]);_0x2224d0[_0xe062('0x39')]=_[_0xe062('0x36')](_0x40c35f[_0xe062('0x34')],qs['fields'](_0x30b971[_0xe062('0x37')][_0xe062('0x38')]));_0x2224d0[_0xe062('0x39')]=_0x2224d0[_0xe062('0x39')][_0xe062('0x4b')]?_0x2224d0[_0xe062('0x39')]:_0x40c35f[_0xe062('0x34')];if(!_0x30b971[_0xe062('0x37')][_0xe062('0x3a')](_0xe062('0x3b'))){_0x2224d0['limit']=qs[_0xe062('0x22')](_0x30b971[_0xe062('0x37')][_0xe062('0x22')]);_0x2224d0[_0xe062('0x21')]=qs['offset'](_0x30b971[_0xe062('0x37')][_0xe062('0x21')]);}_0x2224d0['order']=qs[_0xe062('0x3d')](_0x30b971['query']['sort']);_0x2224d0[_0xe062('0x42')]=qs[_0xe062('0x3e')](_[_0xe062('0x3f')](_0x30b971['query'],_0x40c35f[_0xe062('0x3e')]));_0x2224d0[_0xe062('0x6c')]=!![];if(_0x30b971['query'][_0xe062('0x40')]){_0x2224d0[_0xe062('0x42')]=_[_0xe062('0x41')](_0x2224d0['where'],{'$or':_[_0xe062('0x30')](_0x2224d0['attributes'],function(_0x2df932){var _0x292367={};_0x292367[_0x2df932]={'$like':'%'+_0x30b971['query'][_0xe062('0x40')]+'%'};return _0x292367;})});}_0x2224d0=_['merge']({},_0x2224d0,_0x30b971[_0xe062('0x44')]);return _0x2fd221[_0xe062('0x67')](_0x2224d0);}})[_0xe062('0x27')](respondWithResult(_0x45c74c,null))[_0xe062('0x56')](handleError(_0x45c74c,null));};exports[_0xe062('0x6d')]=function(_0x3803c6,_0x298024,_0x24c162){var _0x4cdbe1;return db[_0xe062('0x45')][_0xe062('0x4d')]({'where':{'id':_0x3803c6[_0xe062('0x4a')]['id']},'include':[{'model':db[_0xe062('0x6e')],'as':'CustomFields'}]})[_0xe062('0x27')](handleEntityNotFound(_0x298024,null))[_0xe062('0x27')](function(_0x510c08){if(_0x510c08){_0x4cdbe1=_0x510c08;return db[_0xe062('0x5f')][_0xe062('0x68')];}})[_0xe062('0x27')](function(_0x217b96){if(_0x217b96){var _0xf1bb34={};var _0x3c6dd3={};_0x3c6dd3[_0xe062('0x34')]=_[_0xe062('0x69')](_[_0xe062('0x35')](_0x217b96),_[_0xe062('0x30')](_0x4cdbe1[_0xe062('0x6a')],function(_0xbdf30b){return util[_0xe062('0x6b')]('cf_%d',_0xbdf30b['id']);}));_0x3c6dd3[_0xe062('0x37')]=_[_0xe062('0x35')](_0x3803c6[_0xe062('0x37')]);_0x3c6dd3[_0xe062('0x3e')]=_['intersection'](_0x3c6dd3['model'],_0x3c6dd3[_0xe062('0x37')]);_0xf1bb34[_0xe062('0x39')]=_['intersection'](_0x3c6dd3['model'],qs[_0xe062('0x38')](_0x3803c6['query'][_0xe062('0x38')]));_0xf1bb34['attributes']=_0xf1bb34[_0xe062('0x39')][_0xe062('0x4b')]?_0xf1bb34[_0xe062('0x39')]:_0x3c6dd3['model'];if(!_0x3803c6[_0xe062('0x37')]['hasOwnProperty'](_0xe062('0x3b'))){_0xf1bb34[_0xe062('0x22')]=qs[_0xe062('0x22')](_0x3803c6['query'][_0xe062('0x22')]);_0xf1bb34[_0xe062('0x21')]=qs[_0xe062('0x21')](_0x3803c6[_0xe062('0x37')][_0xe062('0x21')]);}_0xf1bb34[_0xe062('0x3c')]=qs['sort'](_0x3803c6[_0xe062('0x37')]['sort']);_0xf1bb34[_0xe062('0x42')]=qs[_0xe062('0x3e')](_['pick'](_0x3803c6['query'],_0x3c6dd3[_0xe062('0x3e')]));_0xf1bb34[_0xe062('0x6c')]=!![];if(_0x3803c6[_0xe062('0x37')][_0xe062('0x40')]){_0xf1bb34['where']=_[_0xe062('0x41')](_0xf1bb34[_0xe062('0x42')],{'$or':_[_0xe062('0x30')](_0xf1bb34[_0xe062('0x39')],function(_0x57f2c7){var _0x35e2aa={};_0x35e2aa[_0x57f2c7]={'$like':'%'+_0x3803c6[_0xe062('0x37')]['filter']+'%'};return _0x35e2aa;})});}_0xf1bb34=_['merge']({},_0xf1bb34,_0x3803c6[_0xe062('0x44')]);return _0x4cdbe1[_0xe062('0x67')](_0xf1bb34);}})[_0xe062('0x27')](function(_0x195e2e){if(!_['isEmpty'](_0x195e2e)){var _0x166fc6=toCsv(_0x195e2e);var _0x4a87a6=Date[_0xe062('0x6f')]();fs['writeFileSync'](util['format'](_0xe062('0x70'),_0x4cdbe1['id'],_0x4a87a6),_0x166fc6);_0x298024[_0xe062('0x71')](_0xe062('0x72'),_0xe062('0x73')+util[_0xe062('0x6b')](_0xe062('0x74'),_0x4cdbe1['id'],_0x4a87a6));_0x298024[_0xe062('0x71')]('Content-type',_0xe062('0x75'));return _0x298024[_0xe062('0x76')](util[_0xe062('0x6b')](_0xe062('0x70'),_0x4cdbe1['id'],_0x4a87a6));}else{return _0x298024['sendStatus'](0xcc);}})[_0xe062('0x56')](handleError(_0x298024,null));};exports[_0xe062('0x77')]=function(_0x11059c,_0x121a3d,_0x2f7912){var _0x1023fc;delete _0x11059c[_0xe062('0x4e')]['id'];return db[_0xe062('0x45')][_0xe062('0x78')]({'where':{'id':_0x11059c[_0xe062('0x4a')]['id']}})[_0xe062('0x27')](handleEntityNotFound(_0x121a3d,null))[_0xe062('0x27')](function(_0xfcb9ee){if(_0xfcb9ee){return db['sequelize']['transaction'](function(_0x235dcd){return db[_0xe062('0x6e')][_0xe062('0x55')](_0x11059c['body'],{'transaction':_0x235dcd})[_0xe062('0x27')](function(_0x550718){_0x1023fc=_0x550718;return _0xfcb9ee['addCustomFields'](_0x550718,{'transaction':_0x235dcd});})[_0xe062('0x27')](function(){var _0x6c8bc2={'type':db[_0xe062('0x79')][_0xe062('0x7a')],'transaction':_0x235dcd};switch(_0x11059c['body']['type']){case _0xe062('0x7b'):_0x6c8bc2[_0xe062('0x32')]=db[_0xe062('0x79')][_0xe062('0x7a')];break;case _0xe062('0x7c'):_0x6c8bc2['type']=db[_0xe062('0x79')][_0xe062('0x7d')];break;case _0xe062('0x7e'):_0x6c8bc2['type']=db[_0xe062('0x79')][_0xe062('0x7f')];_0x6c8bc2[_0xe062('0x80')]=![];break;default:}return db[_0xe062('0x81')][_0xe062('0x82')][_0xe062('0x83')](_0xe062('0x84'),util[_0xe062('0x6b')](_0xe062('0x85'),_0x1023fc['id']),_0x6c8bc2);})[_0xe062('0x27')](function(){return _0x1023fc;});});}})['then'](respondWithResult(_0x121a3d,null))[_0xe062('0x56')](handleError(_0x121a3d,null));};exports['getCustomFields']=function(_0x5d1a7a,_0x34b410,_0x4af6ed){var _0xb9b02d={};var _0x113aa5={};var _0x42c6b6;var _0x74bc51;return db[_0xe062('0x45')][_0xe062('0x78')]({'where':{'id':_0x5d1a7a['params']['id']}})['then'](handleEntityNotFound(_0x34b410,null))[_0xe062('0x27')](function(_0xca5c14){if(_0xca5c14){_0x42c6b6=_0xca5c14;_0x113aa5[_0xe062('0x34')]=_[_0xe062('0x35')](db[_0xe062('0x6e')][_0xe062('0x68')]);_0x113aa5['query']=_[_0xe062('0x35')](_0x5d1a7a[_0xe062('0x37')]);_0x113aa5[_0xe062('0x3e')]=_[_0xe062('0x36')](_0x113aa5[_0xe062('0x34')],_0x113aa5[_0xe062('0x37')]);_0xb9b02d['attributes']=_[_0xe062('0x36')](_0x113aa5['model'],qs[_0xe062('0x38')](_0x5d1a7a['query'][_0xe062('0x38')]));_0xb9b02d['attributes']=_0xb9b02d['attributes'][_0xe062('0x4b')]?_0xb9b02d[_0xe062('0x39')]:_0x113aa5[_0xe062('0x34')];_0xb9b02d[_0xe062('0x3c')]=qs[_0xe062('0x3d')](_0x5d1a7a[_0xe062('0x37')][_0xe062('0x3d')]);_0xb9b02d[_0xe062('0x42')]=qs[_0xe062('0x3e')](_[_0xe062('0x3f')](_0x5d1a7a[_0xe062('0x37')],_0x113aa5[_0xe062('0x3e')]));_0xb9b02d['where']=_[_0xe062('0x41')](_0xb9b02d[_0xe062('0x42')],{'$or':[{'ListId':_0xca5c14['id']},{'ListId':null}]});if(_0x5d1a7a[_0xe062('0x37')]['filter']){_0xb9b02d[_0xe062('0x42')]=_['merge'](_0xb9b02d[_0xe062('0x42')],{'$or':_[_0xe062('0x30')](_0xb9b02d['attributes'],function(_0x78b3e2){var _0x2d2ee5={};_0x2d2ee5[_0x78b3e2]={'$like':'%'+_0x5d1a7a[_0xe062('0x37')][_0xe062('0x40')]+'%'};return _0x2d2ee5;})});}_0xb9b02d=_[_0xe062('0x41')]({},_0xb9b02d,_0x5d1a7a[_0xe062('0x44')]);return db[_0xe062('0x6e')][_0xe062('0x86')](_0xb9b02d);}})[_0xe062('0x27')](respondWithResult(_0x34b410,null))['catch'](handleError(_0x34b410,null));};exports['addAgents']=function(_0x4c92a7,_0x540ad7,_0x16987c){return db[_0xe062('0x45')][_0xe062('0x4d')]({'where':{'id':_0x4c92a7['params']['id']}})[_0xe062('0x27')](handleEntityNotFound(_0x540ad7,null))[_0xe062('0x27')](function(_0x183b81){if(_0x183b81){return _0x183b81[_0xe062('0x87')](_0x4c92a7[_0xe062('0x4e')][_0xe062('0x5d')],_[_0xe062('0x63')](_0x4c92a7[_0xe062('0x4e')],[_0xe062('0x5d'),'id'])||{})[_0xe062('0x88')](function(_0x32078d){for(var _0x54a88e=0x0;_0x54a88e<_0x4c92a7['body'][_0xe062('0x5d')][_0xe062('0x4b')];_0x54a88e+=0x1){socket[_0xe062('0x89')](_0xe062('0x8a'),{'UserId':Number(_0x4c92a7[_0xe062('0x4e')][_0xe062('0x5d')][_0x54a88e]),'CmListId':Number(_0x4c92a7[_0xe062('0x4a')]['id'])});}return _0x32078d;});}})[_0xe062('0x27')](respondWithResult(_0x540ad7,null))[_0xe062('0x56')](handleError(_0x540ad7,null));};exports[_0xe062('0x8b')]=function(_0x312cab,_0x1972d,_0x4b6644){return db[_0xe062('0x45')][_0xe062('0x4d')]({'where':{'id':_0x312cab[_0xe062('0x4a')]['id']}})[_0xe062('0x27')](handleEntityNotFound(_0x1972d,null))['then'](function(_0x44f488){if(_0x44f488){return _0x44f488[_0xe062('0x8b')](_0x312cab[_0xe062('0x37')]['ids'])[_0xe062('0x27')](function(){if(_['isArray'](_0x312cab[_0xe062('0x37')][_0xe062('0x5d')])){for(var _0x334340=0x0;_0x334340<_0x312cab[_0xe062('0x37')]['ids'][_0xe062('0x4b')];_0x334340+=0x1){socket['emit'](_0xe062('0x8c'),{'UserId':Number(_0x312cab['query'][_0xe062('0x5d')][_0x334340]),'CmListId':Number(_0x312cab[_0xe062('0x4a')]['id'])});}}else{socket[_0xe062('0x89')](_0xe062('0x8c'),{'UserId':Number(_0x312cab['query'][_0xe062('0x5d')]),'CmListId':Number(_0x312cab[_0xe062('0x4a')]['id'])});}});}})[_0xe062('0x27')](respondWithStatusCode(_0x1972d,null))[_0xe062('0x56')](handleError(_0x1972d,null));};exports['getAgents']=function(_0x2c5463,_0x2a2b50,_0xc45b7a){var _0x54bf78={};var _0x5838c7={};var _0x170ecd;var _0x37a3d4;return db[_0xe062('0x45')]['findOne']({'where':{'id':_0x2c5463[_0xe062('0x4a')]['id']}})['then'](handleEntityNotFound(_0x2a2b50,null))[_0xe062('0x27')](function(_0xa19128){if(_0xa19128){_0x170ecd=_0xa19128;_0x5838c7[_0xe062('0x34')]=_[_0xe062('0x35')](db['User'][_0xe062('0x68')]);_0x5838c7['query']=_[_0xe062('0x35')](_0x2c5463['query']);_0x5838c7[_0xe062('0x3e')]=_['intersection'](_0x5838c7[_0xe062('0x34')],_0x5838c7['query']);_0x54bf78['attributes']=_[_0xe062('0x36')](_0x5838c7[_0xe062('0x34')],qs['fields'](_0x2c5463[_0xe062('0x37')]['fields']));_0x54bf78[_0xe062('0x39')]=_0x54bf78[_0xe062('0x39')]['length']?_0x54bf78[_0xe062('0x39')]:_0x5838c7[_0xe062('0x34')];_0x54bf78[_0xe062('0x3c')]=qs[_0xe062('0x3d')](_0x2c5463[_0xe062('0x37')][_0xe062('0x3d')]);_0x54bf78['where']=qs[_0xe062('0x3e')](_[_0xe062('0x3f')](_0x2c5463[_0xe062('0x37')],_0x5838c7[_0xe062('0x3e')]));if(_0x2c5463['query'][_0xe062('0x40')]){_0x54bf78[_0xe062('0x42')]=_[_0xe062('0x41')](_0x54bf78[_0xe062('0x42')],{'$or':_['map'](_0x54bf78['attributes'],function(_0x4f49a5){var _0xf19d6f={};_0xf19d6f[_0x4f49a5]={'$like':'%'+_0x2c5463['query'][_0xe062('0x40')]+'%'};return _0xf19d6f;})});}_0x54bf78=_[_0xe062('0x41')]({},_0x54bf78,_0x2c5463['options']);return _0x170ecd[_0xe062('0x8d')](_0x54bf78);}})[_0xe062('0x27')](function(_0x681614){if(_0x681614){_0x37a3d4=_0x681614[_0xe062('0x4b')];if(!_0x2c5463[_0xe062('0x37')][_0xe062('0x3a')](_0xe062('0x3b'))){_0x54bf78[_0xe062('0x22')]=qs['limit'](_0x2c5463[_0xe062('0x37')][_0xe062('0x22')]);_0x54bf78[_0xe062('0x21')]=qs['offset'](_0x2c5463['query'][_0xe062('0x21')]);}return _0x170ecd[_0xe062('0x8d')](_0x54bf78);}})[_0xe062('0x27')](function(_0x20264b){if(_0x20264b){return _0x20264b?{'count':_0x37a3d4,'rows':_0x20264b}:null;}})['then'](respondWithResult(_0x2a2b50,null))['catch'](handleError(_0x2a2b50,null));};
\ No newline at end of file
+var _0x37fb=['reject','save','update','then','UserProfileResource','destroy','error','name','send','map','CmList','type','key','model','query','keys','intersection','attributes','fields','length','hasOwnProperty','sort','where','filters','pick','merge','filter','includeAll','findAll','rows','catch','params','rawAttributes','include','options','find','create','body','user','get','Unable\x20to\x20retrieve\x20the\x20current\x20user','Lists','UserProfileSection','userProfileId','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','describe','ListId','getDispositions','findOne','Disposition','nolimit','removeDispositions','ids','addContacts','tags','isArray','join','each','CmContact','omit','success','push','errors','message','getContacts','CustomFields','format','cf_%d','order','raw','getContactsCsv','CmCustomField','concat','isEmpty','now','writeFileSync','/tmp/list_%d_%s.csv','setHeader','attachment;\x20filename=','text/csv','download','addCustomField','sequelize','transaction','addCustomFields','Sequelize','TEXT','text','number','INTEGER','switch','BOOLEAN','defaultValue','addColumn','cm_contacts','cf_%s','getCustomFields','findAndCountAll','addAgents','emit','userCmList:save','removeAgents','userCmList:remove','getAgents','User','zip-dir','request-promise','bluebird','mustache','util','path','sox','ejs','fs-extra','lodash','squel','jsforce','desk.js','to-csv','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/license/util','../../mysqldb','redis','defaults','./cmList.socket','register','sendStatus','status','end','offset','undefined','limit','count','set','Content-Range','apply'];(function(_0xe0e176,_0x198335){var _0x453fcd=function(_0x205d65){while(--_0x205d65){_0xe0e176['push'](_0xe0e176['shift']());}};_0x453fcd(++_0x198335);}(_0x37fb,0xf9));var _0xb37f=function(_0xf7077d,_0x309ea1){_0xf7077d=_0xf7077d-0x0;var _0x19ff53=_0x37fb[_0xf7077d];return _0x19ff53;};'use strict';var emlformat=require('eml-format');var rimraf=require('rimraf');var zipdir=require(_0xb37f('0x0'));var jsonpatch=require('fast-json-patch');var rp=require(_0xb37f('0x1'));var moment=require('moment');var BPromise=require(_0xb37f('0x2'));var Mustache=require(_0xb37f('0x3'));var util=require(_0xb37f('0x4'));var path=require(_0xb37f('0x5'));var sox=require(_0xb37f('0x6'));var csv=require('to-csv');var ejs=require(_0xb37f('0x7'));var fs=require('fs');var fs_extra=require(_0xb37f('0x8'));var _=require(_0xb37f('0x9'));var squel=require(_0xb37f('0xa'));var crypto=require('crypto');var jsforce=require(_0xb37f('0xb'));var deskjs=require(_0xb37f('0xc'));var toCsv=require(_0xb37f('0xd'));var querystring=require(_0xb37f('0xe'));var Papa=require(_0xb37f('0xf'));var Redis=require(_0xb37f('0x10'));var authService=require(_0xb37f('0x11'));var qs=require(_0xb37f('0x12'));var as=require(_0xb37f('0x13'));var hardwareService=require(_0xb37f('0x14'));var logger=require(_0xb37f('0x15'))(_0xb37f('0x16'));var utils=require('../../config/utils');var config=require('../../config/environment');var licenseUtil=require(_0xb37f('0x17'));var db=require(_0xb37f('0x18'))['db'];config[_0xb37f('0x19')]=_[_0xb37f('0x1a')](config[_0xb37f('0x19')],{'host':'localhost','port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0xb37f('0x19')]));require(_0xb37f('0x1b'))[_0xb37f('0x1c')](socket);function respondWithStatusCode(_0x36b5ea,_0x3fefee){_0x3fefee=_0x3fefee||0xcc;return function(_0x3ef4bc){if(_0x3ef4bc){return _0x36b5ea[_0xb37f('0x1d')](_0x3fefee);}return _0x36b5ea[_0xb37f('0x1e')](_0x3fefee)[_0xb37f('0x1f')]();};}function respondWithResult(_0xaaea8d,_0x1e7175){_0x1e7175=_0x1e7175||0xc8;return function(_0x431c3e){if(_0x431c3e){return _0xaaea8d[_0xb37f('0x1e')](_0x1e7175)['json'](_0x431c3e);}};}function respondWithFilteredResult(_0x49c94f,_0x190431){return function(_0x1b84ac){if(_0x1b84ac){var _0x3c8f17=typeof _0x190431[_0xb37f('0x20')]===_0xb37f('0x21')&&typeof _0x190431[_0xb37f('0x22')]==='undefined';var _0x1cb4aa=_0x1b84ac[_0xb37f('0x23')];var _0x18617d=_0x3c8f17?0x0:_0x190431[_0xb37f('0x20')];var _0x3397bd=_0x3c8f17?_0x1b84ac[_0xb37f('0x23')]:_0x190431['offset']+_0x190431[_0xb37f('0x22')];var _0x546720;if(_0x3397bd>=_0x1cb4aa){_0x3397bd=_0x1cb4aa;_0x546720=0xc8;}else{_0x546720=0xce;}_0x49c94f[_0xb37f('0x1e')](_0x546720);return _0x49c94f[_0xb37f('0x24')](_0xb37f('0x25'),_0x18617d+'-'+_0x3397bd+'/'+_0x1cb4aa)['json'](_0x1b84ac);}return null;};}function patchUpdates(_0xbfb39b){return function(_0x2ac62b){try{jsonpatch[_0xb37f('0x26')](_0x2ac62b,_0xbfb39b,!![]);}catch(_0x4618a4){return BPromise[_0xb37f('0x27')](_0x4618a4);}return _0x2ac62b[_0xb37f('0x28')]();};}function saveUpdates(_0x4a1ca9,_0x56fcea){return function(_0x55a4db){if(_0x55a4db){return _0x55a4db[_0xb37f('0x29')](_0x4a1ca9)[_0xb37f('0x2a')](function(_0x3ad6cc){return _0x3ad6cc;});}return null;};}function removeEntity(_0x9d46e2,_0x4093d0){return function(_0x4329b3){if(_0x4329b3){return _0x4329b3['destroy']()[_0xb37f('0x2a')](function(){var _0x1b6222=_0x4329b3['get']({'plain':!![]});var _0xf7a072='Lists';return db[_0xb37f('0x2b')][_0xb37f('0x2c')]({'where':{'type':_0xf7a072,'resourceId':_0x1b6222['id']}})['then'](function(){return _0x4329b3;});})[_0xb37f('0x2a')](function(){_0x9d46e2[_0xb37f('0x1e')](0xcc)['end']();});}};}function handleEntityNotFound(_0x382d28,_0x455109){return function(_0x470619){if(!_0x470619){_0x382d28[_0xb37f('0x1d')](0x194);}return _0x470619;};}function handleError(_0x20a69b,_0x30d500){_0x30d500=_0x30d500||0x1f4;return function(_0x44881d){logger[_0xb37f('0x2d')](_0x44881d['stack']);if(_0x44881d[_0xb37f('0x2e')]){delete _0x44881d[_0xb37f('0x2e')];}_0x20a69b[_0xb37f('0x1e')](_0x30d500)[_0xb37f('0x2f')](_0x44881d);};}exports['index']=function(_0x12364f,_0x225d09){var _0x78fb17={},_0x21bc2d={},_0x12485={'count':0x0,'rows':[]};var _0x4cd0a5=_[_0xb37f('0x30')](db[_0xb37f('0x31')]['rawAttributes'],function(_0xc8d781){return{'name':_0xc8d781['fieldName'],'type':_0xc8d781[_0xb37f('0x32')][_0xb37f('0x33')]};});_0x21bc2d[_0xb37f('0x34')]=_[_0xb37f('0x30')](_0x4cd0a5,'name');_0x21bc2d[_0xb37f('0x35')]=_[_0xb37f('0x36')](_0x12364f[_0xb37f('0x35')]);_0x21bc2d['filters']=_[_0xb37f('0x37')](_0x21bc2d[_0xb37f('0x34')],_0x21bc2d[_0xb37f('0x35')]);_0x78fb17[_0xb37f('0x38')]=_[_0xb37f('0x37')](_0x21bc2d[_0xb37f('0x34')],qs['fields'](_0x12364f[_0xb37f('0x35')][_0xb37f('0x39')]));_0x78fb17[_0xb37f('0x38')]=_0x78fb17[_0xb37f('0x38')][_0xb37f('0x3a')]?_0x78fb17[_0xb37f('0x38')]:_0x21bc2d[_0xb37f('0x34')];if(!_0x12364f[_0xb37f('0x35')][_0xb37f('0x3b')]('nolimit')){_0x78fb17['limit']=qs['limit'](_0x12364f[_0xb37f('0x35')][_0xb37f('0x22')]);_0x78fb17[_0xb37f('0x20')]=qs['offset'](_0x12364f[_0xb37f('0x35')]['offset']);}_0x78fb17['order']=qs[_0xb37f('0x3c')](_0x12364f['query'][_0xb37f('0x3c')]);_0x78fb17[_0xb37f('0x3d')]=qs[_0xb37f('0x3e')](_[_0xb37f('0x3f')](_0x12364f['query'],_0x21bc2d[_0xb37f('0x3e')]),_0x4cd0a5);if(_0x12364f['query']['filter']){_0x78fb17[_0xb37f('0x3d')]=_[_0xb37f('0x40')](_0x78fb17[_0xb37f('0x3d')],{'$or':_['map'](_0x4cd0a5,function(_0x15c3b3){if(_0x15c3b3[_0xb37f('0x32')]!=='VIRTUAL'){var _0x5bb89e={};_0x5bb89e[_0x15c3b3[_0xb37f('0x2e')]]={'$like':'%'+_0x12364f[_0xb37f('0x35')][_0xb37f('0x41')]+'%'};return _0x5bb89e;}})});}_0x78fb17=_[_0xb37f('0x40')]({},_0x78fb17,_0x12364f['options']);var _0x21dd37={'where':_0x78fb17[_0xb37f('0x3d')]};return db['CmList'][_0xb37f('0x23')](_0x21dd37)[_0xb37f('0x2a')](function(_0x4ea98c){_0x12485[_0xb37f('0x23')]=_0x4ea98c;if(_0x12364f[_0xb37f('0x35')][_0xb37f('0x42')]){_0x78fb17['include']=[{'all':!![]}];}return db[_0xb37f('0x31')][_0xb37f('0x43')](_0x78fb17);})['then'](function(_0x584f52){_0x12485[_0xb37f('0x44')]=_0x584f52;return _0x12485;})[_0xb37f('0x2a')](respondWithFilteredResult(_0x225d09,_0x78fb17))[_0xb37f('0x45')](handleError(_0x225d09,null));};exports['show']=function(_0x4646ea,_0x36b27f){var _0x2f9cde={'raw':![],'where':{'id':_0x4646ea[_0xb37f('0x46')]['id']}},_0x1d5381={};_0x1d5381[_0xb37f('0x34')]=_[_0xb37f('0x36')](db[_0xb37f('0x31')][_0xb37f('0x47')]);_0x1d5381['query']=_['keys'](_0x4646ea[_0xb37f('0x35')]);_0x1d5381[_0xb37f('0x3e')]=_['intersection'](_0x1d5381[_0xb37f('0x34')],_0x1d5381[_0xb37f('0x35')]);_0x2f9cde[_0xb37f('0x38')]=_['intersection'](_0x1d5381[_0xb37f('0x34')],qs[_0xb37f('0x39')](_0x4646ea[_0xb37f('0x35')][_0xb37f('0x39')]));_0x2f9cde[_0xb37f('0x38')]=_0x2f9cde['attributes']['length']?_0x2f9cde[_0xb37f('0x38')]:_0x1d5381[_0xb37f('0x34')];if(_0x4646ea[_0xb37f('0x35')][_0xb37f('0x42')]){_0x2f9cde[_0xb37f('0x48')]=[{'all':!![]}];}_0x2f9cde=_[_0xb37f('0x40')]({},_0x2f9cde,_0x4646ea[_0xb37f('0x49')]);return db[_0xb37f('0x31')][_0xb37f('0x4a')](_0x2f9cde)[_0xb37f('0x2a')](handleEntityNotFound(_0x36b27f,null))[_0xb37f('0x2a')](respondWithResult(_0x36b27f,null))[_0xb37f('0x45')](handleError(_0x36b27f,null));};exports[_0xb37f('0x4b')]=function(_0x362f21,_0x261a6c){return db[_0xb37f('0x31')][_0xb37f('0x4b')](_0x362f21[_0xb37f('0x4c')],{})['then'](function(_0x27bae3){var _0x4e4756=_0x362f21[_0xb37f('0x4d')][_0xb37f('0x4e')]({'plain':!![]});if(!_0x4e4756)throw new Error(_0xb37f('0x4f'));if(_0x4e4756['role']===_0xb37f('0x4d')){var _0x4fc7d6=_0x27bae3['get']({'plain':!![]});var _0x3f7f2c=_0xb37f('0x50');return db[_0xb37f('0x51')][_0xb37f('0x4a')]({'where':{'name':_0x3f7f2c,'userProfileId':_0x4e4756[_0xb37f('0x52')]},'raw':!![]})[_0xb37f('0x2a')](function(_0x24d08f){if(_0x24d08f&&_0x24d08f['autoAssociation']===0x0){return db['UserProfileResource'][_0xb37f('0x4b')]({'name':_0x4fc7d6['name'],'resourceId':_0x4fc7d6['id'],'type':_0x24d08f[_0xb37f('0x2e')],'sectionId':_0x24d08f['id']},{})['then'](function(){return _0x27bae3;});}else{return _0x27bae3;}})[_0xb37f('0x45')](function(_0x141d88){logger['error'](_0xb37f('0x53'),_0x141d88);throw _0x141d88;});}return _0x27bae3;})[_0xb37f('0x2a')](respondWithResult(_0x261a6c,0xc9))[_0xb37f('0x45')](handleError(_0x261a6c,null));};exports['update']=function(_0x12b5e0,_0x23bbb2){if(_0x12b5e0[_0xb37f('0x4c')]['id']){delete _0x12b5e0[_0xb37f('0x4c')]['id'];}return db[_0xb37f('0x31')][_0xb37f('0x4a')]({'where':{'id':_0x12b5e0['params']['id']}})[_0xb37f('0x2a')](handleEntityNotFound(_0x23bbb2,null))[_0xb37f('0x2a')](saveUpdates(_0x12b5e0[_0xb37f('0x4c')],null))['then'](respondWithResult(_0x23bbb2,null))[_0xb37f('0x45')](handleError(_0x23bbb2,null));};exports['destroy']=function(_0x21884b,_0x9fde76){return db[_0xb37f('0x31')][_0xb37f('0x4a')]({'where':{'id':_0x21884b[_0xb37f('0x46')]['id']}})[_0xb37f('0x2a')](handleEntityNotFound(_0x9fde76,null))[_0xb37f('0x2a')](removeEntity(_0x9fde76,null))[_0xb37f('0x45')](handleError(_0x9fde76,null));};exports['describe']=function(_0x3a94ea,_0x191977){return db['CmList'][_0xb37f('0x54')]()[_0xb37f('0x2a')](respondWithResult(_0x191977,null))[_0xb37f('0x45')](handleError(_0x191977,null));};exports['addDisposition']=function(_0x4cce14,_0x5e6fc0,_0x389355){if(_0x4cce14[_0xb37f('0x4c')]['id']){delete _0x4cce14[_0xb37f('0x4c')]['id'];}return db[_0xb37f('0x31')]['find']({'where':{'id':_0x4cce14[_0xb37f('0x46')]['id']}})[_0xb37f('0x2a')](handleEntityNotFound(_0x5e6fc0,null))[_0xb37f('0x2a')](function(_0x58c6d1){if(_0x58c6d1){_0x4cce14[_0xb37f('0x4c')][_0xb37f('0x55')]=_0x58c6d1['id'];return db['Disposition'][_0xb37f('0x4b')](_0x4cce14['body']);}})[_0xb37f('0x2a')](respondWithResult(_0x5e6fc0,null))[_0xb37f('0x45')](handleError(_0x5e6fc0,null));};exports[_0xb37f('0x56')]=function(_0x152847,_0x47c970,_0xd22fcf){var _0x347dbc={'raw':![],'where':{}};var _0x4b3b9e={};var _0x9f3da6={'count':0x0,'rows':[]};return db['CmList'][_0xb37f('0x57')]({'where':{'id':_0x152847[_0xb37f('0x46')]['id']}})[_0xb37f('0x2a')](handleEntityNotFound(_0x47c970,null))[_0xb37f('0x2a')](function(_0x1ca76c){if(_0x1ca76c){_0x4b3b9e[_0xb37f('0x34')]=_[_0xb37f('0x36')](db[_0xb37f('0x58')]['rawAttributes']);_0x4b3b9e[_0xb37f('0x35')]=_[_0xb37f('0x36')](_0x152847['query']);_0x4b3b9e[_0xb37f('0x3e')]=_[_0xb37f('0x37')](_0x4b3b9e[_0xb37f('0x34')],_0x4b3b9e[_0xb37f('0x35')]);_0x347dbc[_0xb37f('0x38')]=_[_0xb37f('0x37')](_0x4b3b9e['model'],qs[_0xb37f('0x39')](_0x152847[_0xb37f('0x35')][_0xb37f('0x39')]));_0x347dbc['attributes']=_0x347dbc[_0xb37f('0x38')]['length']?_0x347dbc[_0xb37f('0x38')]:_0x4b3b9e[_0xb37f('0x34')];if(!_0x152847[_0xb37f('0x35')][_0xb37f('0x3b')](_0xb37f('0x59'))){_0x347dbc[_0xb37f('0x22')]=qs[_0xb37f('0x22')](_0x152847[_0xb37f('0x35')]['limit']);_0x347dbc[_0xb37f('0x20')]=qs[_0xb37f('0x20')](_0x152847[_0xb37f('0x35')][_0xb37f('0x20')]);}_0x347dbc['order']=qs[_0xb37f('0x3c')](_0x152847[_0xb37f('0x35')][_0xb37f('0x3c')]);_0x347dbc[_0xb37f('0x3d')]=qs[_0xb37f('0x3e')](_[_0xb37f('0x3f')](_0x152847[_0xb37f('0x35')],_0x4b3b9e[_0xb37f('0x3e')]));_0x347dbc[_0xb37f('0x3d')][_0xb37f('0x55')]=_0x1ca76c['id'];if(_0x152847[_0xb37f('0x35')][_0xb37f('0x41')]){_0x347dbc[_0xb37f('0x3d')]=_[_0xb37f('0x40')](_0x347dbc[_0xb37f('0x3d')],{'$or':_[_0xb37f('0x30')](_0x347dbc[_0xb37f('0x38')],function(_0x30a72c){var _0x42f099={};_0x42f099[_0x30a72c]={'$like':'%'+_0x152847[_0xb37f('0x35')][_0xb37f('0x41')]+'%'};return _0x42f099;})});}_0x347dbc=_[_0xb37f('0x40')]({},_0x347dbc,_0x152847[_0xb37f('0x49')]);return db[_0xb37f('0x58')][_0xb37f('0x23')]({'where':_0x347dbc[_0xb37f('0x3d')]})[_0xb37f('0x2a')](function(_0x4c174){_0x9f3da6[_0xb37f('0x23')]=_0x4c174;if(_0x152847[_0xb37f('0x35')][_0xb37f('0x42')]){_0x347dbc[_0xb37f('0x48')]=[{'all':!![]}];}return db['Disposition']['findAll'](_0x347dbc);})[_0xb37f('0x2a')](function(_0x3078d0){_0x9f3da6['rows']=_0x3078d0;return _0x9f3da6;});}})['then'](respondWithFilteredResult(_0x47c970,_0x347dbc))['catch'](handleError(_0x47c970,null));};exports[_0xb37f('0x5a')]=function(_0x41dbd0,_0x3036b0,_0x44343a){return db['CmList'][_0xb37f('0x4a')]({'where':{'id':_0x41dbd0['params']['id']}})['then'](handleEntityNotFound(_0x3036b0,null))['then'](function(_0x9f3ac0){if(_0x9f3ac0){return _0x9f3ac0[_0xb37f('0x5a')](_0x41dbd0[_0xb37f('0x35')][_0xb37f('0x5b')]);}})['then'](respondWithStatusCode(_0x3036b0,null))[_0xb37f('0x45')](handleError(_0x3036b0,null));};exports[_0xb37f('0x5c')]=function(_0x47646b,_0x574138,_0x40464f){return db[_0xb37f('0x31')][_0xb37f('0x4a')]({'where':{'id':_0x47646b[_0xb37f('0x46')]['id']}})['then'](handleEntityNotFound(_0x574138,null))['then'](function(_0x2b41a7){if(_0x2b41a7){var _0x4d93c6=[];var _0x3d5811={'success':[],'errors':[]};return db['CmContact']['describe']()[_0xb37f('0x2a')](function(_0x2b732e){if(_0x47646b[_0xb37f('0x4c')][_0xb37f('0x5d')]&&_[_0xb37f('0x5e')](_0x47646b[_0xb37f('0x4c')][_0xb37f('0x5d')])){if(_0x47646b[_0xb37f('0x4c')][_0xb37f('0x5d')][_0xb37f('0x3a')]){_0x47646b['body']['tags']=_0x47646b['body'][_0xb37f('0x5d')][_0xb37f('0x5f')](';')+';';}else{_0x47646b['body']['tags']=null;}}else{_0x47646b[_0xb37f('0x4c')][_0xb37f('0x5d')]=null;}if(_0x47646b[_0xb37f('0x4c')]&&_[_0xb37f('0x5e')](_0x47646b['body'])){for(var _0x4a8b01=0x0;_0x4a8b01<_0x47646b[_0xb37f('0x4c')][_0xb37f('0x3a')];_0x4a8b01+=0x1){_0x47646b[_0xb37f('0x4c')][_0x4a8b01]['ListId']=_0x47646b[_0xb37f('0x46')]['id'];_0x4d93c6['push'](_0x47646b[_0xb37f('0x4c')][_0x4a8b01]);}return BPromise[_0xb37f('0x60')](_0x4d93c6,function(_0x1aaad5){return db[_0xb37f('0x61')][_0xb37f('0x4b')](_[_0xb37f('0x62')](_0x1aaad5,[_0xb37f('0x5b'),'id'])||{},{'fields':_[_0xb37f('0x36')](_0x2b732e),'raw':!![]})['then'](function(_0x294d6c){_0x3d5811[_0xb37f('0x63')][_0xb37f('0x64')](_0x294d6c['dataValues']);})['catch'](function(_0x2095e2){_0x3d5811[_0xb37f('0x65')][_0xb37f('0x64')]({'data':_0x1aaad5,'error':_0x2095e2[_0xb37f('0x66')]});});})[_0xb37f('0x2a')](function(_0x4cdc97){return _0x3d5811;})['catch'](function(_0x16fafd){return _0x16fafd;});}else{_0x574138[_0xb37f('0x1e')](0x190)['json']({'message':'Malformed\x20request\x20syntax'});}});}})[_0xb37f('0x2a')](respondWithResult(_0x574138,null))[_0xb37f('0x45')](handleError(_0x574138,null));};exports[_0xb37f('0x67')]=function(_0xacfbc4,_0x5b7c55,_0x27df10){var _0x5a7334;return db[_0xb37f('0x31')][_0xb37f('0x4a')]({'where':{'id':_0xacfbc4[_0xb37f('0x46')]['id']},'include':[{'model':db['CmCustomField'],'as':_0xb37f('0x68')}]})[_0xb37f('0x2a')](handleEntityNotFound(_0x5b7c55,null))[_0xb37f('0x2a')](function(_0x401cf8){if(_0x401cf8){_0x5a7334=_0x401cf8;return db[_0xb37f('0x61')][_0xb37f('0x47')];}})[_0xb37f('0x2a')](function(_0x3f02d5){if(_0x3f02d5){var _0x41621f={};var _0x1eb3c2={};_0x1eb3c2[_0xb37f('0x34')]=_['concat'](_[_0xb37f('0x36')](_0x3f02d5),_[_0xb37f('0x30')](_0x5a7334[_0xb37f('0x68')],function(_0x398b66){return util[_0xb37f('0x69')](_0xb37f('0x6a'),_0x398b66['id']);}));_0x1eb3c2[_0xb37f('0x35')]=_[_0xb37f('0x36')](_0xacfbc4[_0xb37f('0x35')]);_0x1eb3c2[_0xb37f('0x3e')]=_[_0xb37f('0x37')](_0x1eb3c2[_0xb37f('0x34')],_0x1eb3c2['query']);_0x41621f['attributes']=_[_0xb37f('0x37')](_0x1eb3c2[_0xb37f('0x34')],qs[_0xb37f('0x39')](_0xacfbc4[_0xb37f('0x35')][_0xb37f('0x39')]));_0x41621f['attributes']=_0x41621f[_0xb37f('0x38')]['length']?_0x41621f[_0xb37f('0x38')]:_0x1eb3c2[_0xb37f('0x34')];if(!_0xacfbc4[_0xb37f('0x35')][_0xb37f('0x3b')]('nolimit')){_0x41621f['limit']=qs[_0xb37f('0x22')](_0xacfbc4[_0xb37f('0x35')][_0xb37f('0x22')]);_0x41621f[_0xb37f('0x20')]=qs[_0xb37f('0x20')](_0xacfbc4[_0xb37f('0x35')][_0xb37f('0x20')]);}_0x41621f[_0xb37f('0x6b')]=qs[_0xb37f('0x3c')](_0xacfbc4['query'][_0xb37f('0x3c')]);_0x41621f['where']=qs['filters'](_[_0xb37f('0x3f')](_0xacfbc4[_0xb37f('0x35')],_0x1eb3c2[_0xb37f('0x3e')]));_0x41621f[_0xb37f('0x6c')]=!![];if(_0xacfbc4[_0xb37f('0x35')][_0xb37f('0x41')]){_0x41621f[_0xb37f('0x3d')]=_[_0xb37f('0x40')](_0x41621f[_0xb37f('0x3d')],{'$or':_[_0xb37f('0x30')](_0x41621f[_0xb37f('0x38')],function(_0x308165){var _0x9fe21={};_0x9fe21[_0x308165]={'$like':'%'+_0xacfbc4['query'][_0xb37f('0x41')]+'%'};return _0x9fe21;})});}_0x41621f=_['merge']({},_0x41621f,_0xacfbc4[_0xb37f('0x49')]);return _0x5a7334['getContacts'](_0x41621f);}})[_0xb37f('0x2a')](respondWithResult(_0x5b7c55,null))[_0xb37f('0x45')](handleError(_0x5b7c55,null));};exports[_0xb37f('0x6d')]=function(_0x143f81,_0x2cfba5,_0x5aacc4){var _0x2e887e;return db[_0xb37f('0x31')]['find']({'where':{'id':_0x143f81['params']['id']},'include':[{'model':db[_0xb37f('0x6e')],'as':_0xb37f('0x68')}]})[_0xb37f('0x2a')](handleEntityNotFound(_0x2cfba5,null))['then'](function(_0x4b4557){if(_0x4b4557){_0x2e887e=_0x4b4557;return db[_0xb37f('0x61')][_0xb37f('0x47')];}})[_0xb37f('0x2a')](function(_0x2f5163){if(_0x2f5163){var _0x4f391d={};var _0x40aeac={};_0x40aeac[_0xb37f('0x34')]=_[_0xb37f('0x6f')](_[_0xb37f('0x36')](_0x2f5163),_[_0xb37f('0x30')](_0x2e887e[_0xb37f('0x68')],function(_0x36c87f){return util['format'](_0xb37f('0x6a'),_0x36c87f['id']);}));_0x40aeac[_0xb37f('0x35')]=_[_0xb37f('0x36')](_0x143f81[_0xb37f('0x35')]);_0x40aeac[_0xb37f('0x3e')]=_[_0xb37f('0x37')](_0x40aeac[_0xb37f('0x34')],_0x40aeac['query']);_0x4f391d[_0xb37f('0x38')]=_[_0xb37f('0x37')](_0x40aeac[_0xb37f('0x34')],qs[_0xb37f('0x39')](_0x143f81[_0xb37f('0x35')][_0xb37f('0x39')]));_0x4f391d[_0xb37f('0x38')]=_0x4f391d['attributes'][_0xb37f('0x3a')]?_0x4f391d[_0xb37f('0x38')]:_0x40aeac['model'];if(!_0x143f81[_0xb37f('0x35')]['hasOwnProperty'](_0xb37f('0x59'))){_0x4f391d[_0xb37f('0x22')]=qs['limit'](_0x143f81[_0xb37f('0x35')][_0xb37f('0x22')]);_0x4f391d[_0xb37f('0x20')]=qs[_0xb37f('0x20')](_0x143f81['query'][_0xb37f('0x20')]);}_0x4f391d[_0xb37f('0x6b')]=qs[_0xb37f('0x3c')](_0x143f81[_0xb37f('0x35')][_0xb37f('0x3c')]);_0x4f391d[_0xb37f('0x3d')]=qs[_0xb37f('0x3e')](_['pick'](_0x143f81[_0xb37f('0x35')],_0x40aeac[_0xb37f('0x3e')]));_0x4f391d['raw']=!![];if(_0x143f81[_0xb37f('0x35')]['filter']){_0x4f391d[_0xb37f('0x3d')]=_[_0xb37f('0x40')](_0x4f391d[_0xb37f('0x3d')],{'$or':_[_0xb37f('0x30')](_0x4f391d[_0xb37f('0x38')],function(_0x75e76a){var _0x55c64e={};_0x55c64e[_0x75e76a]={'$like':'%'+_0x143f81[_0xb37f('0x35')][_0xb37f('0x41')]+'%'};return _0x55c64e;})});}_0x4f391d=_['merge']({},_0x4f391d,_0x143f81['options']);return _0x2e887e['getContacts'](_0x4f391d);}})[_0xb37f('0x2a')](function(_0x273d27){if(!_[_0xb37f('0x70')](_0x273d27)){var _0x3a3800=toCsv(_0x273d27);var _0x7760c6=Date[_0xb37f('0x71')]();fs[_0xb37f('0x72')](util['format'](_0xb37f('0x73'),_0x2e887e['id'],_0x7760c6),_0x3a3800);_0x2cfba5[_0xb37f('0x74')]('Content-disposition',_0xb37f('0x75')+util[_0xb37f('0x69')]('list_%d_%s.csv',_0x2e887e['id'],_0x7760c6));_0x2cfba5[_0xb37f('0x74')]('Content-type',_0xb37f('0x76'));return _0x2cfba5[_0xb37f('0x77')](util[_0xb37f('0x69')](_0xb37f('0x73'),_0x2e887e['id'],_0x7760c6));}else{return _0x2cfba5['sendStatus'](0xcc);}})[_0xb37f('0x45')](handleError(_0x2cfba5,null));};exports[_0xb37f('0x78')]=function(_0x327145,_0x51e2cd,_0x21c0ab){var _0x9ff0c1;delete _0x327145[_0xb37f('0x4c')]['id'];return db['CmList']['findOne']({'where':{'id':_0x327145[_0xb37f('0x46')]['id']}})['then'](handleEntityNotFound(_0x51e2cd,null))['then'](function(_0x230518){if(_0x230518){return db[_0xb37f('0x79')][_0xb37f('0x7a')](function(_0x5eb0e9){return db[_0xb37f('0x6e')][_0xb37f('0x4b')](_0x327145[_0xb37f('0x4c')],{'transaction':_0x5eb0e9})[_0xb37f('0x2a')](function(_0x432647){_0x9ff0c1=_0x432647;return _0x230518[_0xb37f('0x7b')](_0x432647,{'transaction':_0x5eb0e9});})['then'](function(){var _0x95b1a5={'type':db[_0xb37f('0x7c')][_0xb37f('0x7d')],'transaction':_0x5eb0e9};switch(_0x327145['body'][_0xb37f('0x32')]){case _0xb37f('0x7e'):_0x95b1a5[_0xb37f('0x32')]=db[_0xb37f('0x7c')][_0xb37f('0x7d')];break;case _0xb37f('0x7f'):_0x95b1a5[_0xb37f('0x32')]=db['Sequelize'][_0xb37f('0x80')];break;case _0xb37f('0x81'):_0x95b1a5[_0xb37f('0x32')]=db[_0xb37f('0x7c')][_0xb37f('0x82')];_0x95b1a5[_0xb37f('0x83')]=![];break;default:}return db['sequelize']['queryInterface'][_0xb37f('0x84')](_0xb37f('0x85'),util[_0xb37f('0x69')](_0xb37f('0x86'),_0x9ff0c1['id']),_0x95b1a5);})[_0xb37f('0x2a')](function(){return _0x9ff0c1;});});}})[_0xb37f('0x2a')](respondWithResult(_0x51e2cd,null))[_0xb37f('0x45')](handleError(_0x51e2cd,null));};exports[_0xb37f('0x87')]=function(_0x53be82,_0x12cc2e,_0x59ee4b){var _0x4138ef={};var _0x3da13f={};var _0x754b56;var _0x593054;return db[_0xb37f('0x31')][_0xb37f('0x57')]({'where':{'id':_0x53be82[_0xb37f('0x46')]['id']}})[_0xb37f('0x2a')](handleEntityNotFound(_0x12cc2e,null))[_0xb37f('0x2a')](function(_0x4342ca){if(_0x4342ca){_0x754b56=_0x4342ca;_0x3da13f['model']=_[_0xb37f('0x36')](db[_0xb37f('0x6e')][_0xb37f('0x47')]);_0x3da13f['query']=_[_0xb37f('0x36')](_0x53be82[_0xb37f('0x35')]);_0x3da13f['filters']=_['intersection'](_0x3da13f[_0xb37f('0x34')],_0x3da13f[_0xb37f('0x35')]);_0x4138ef[_0xb37f('0x38')]=_[_0xb37f('0x37')](_0x3da13f[_0xb37f('0x34')],qs[_0xb37f('0x39')](_0x53be82[_0xb37f('0x35')][_0xb37f('0x39')]));_0x4138ef[_0xb37f('0x38')]=_0x4138ef[_0xb37f('0x38')][_0xb37f('0x3a')]?_0x4138ef[_0xb37f('0x38')]:_0x3da13f[_0xb37f('0x34')];_0x4138ef[_0xb37f('0x6b')]=qs['sort'](_0x53be82[_0xb37f('0x35')][_0xb37f('0x3c')]);_0x4138ef[_0xb37f('0x3d')]=qs['filters'](_[_0xb37f('0x3f')](_0x53be82[_0xb37f('0x35')],_0x3da13f['filters']));_0x4138ef[_0xb37f('0x3d')]=_[_0xb37f('0x40')](_0x4138ef[_0xb37f('0x3d')],{'$or':[{'ListId':_0x4342ca['id']},{'ListId':null}]});if(_0x53be82[_0xb37f('0x35')]['filter']){_0x4138ef[_0xb37f('0x3d')]=_[_0xb37f('0x40')](_0x4138ef[_0xb37f('0x3d')],{'$or':_[_0xb37f('0x30')](_0x4138ef[_0xb37f('0x38')],function(_0x4c93e4){var _0x44b383={};_0x44b383[_0x4c93e4]={'$like':'%'+_0x53be82['query']['filter']+'%'};return _0x44b383;})});}_0x4138ef=_[_0xb37f('0x40')]({},_0x4138ef,_0x53be82[_0xb37f('0x49')]);return db['CmCustomField'][_0xb37f('0x88')](_0x4138ef);}})['then'](respondWithResult(_0x12cc2e,null))['catch'](handleError(_0x12cc2e,null));};exports['addAgents']=function(_0xd3a255,_0x58430f,_0x44ff81){return db[_0xb37f('0x31')][_0xb37f('0x4a')]({'where':{'id':_0xd3a255[_0xb37f('0x46')]['id']}})[_0xb37f('0x2a')](handleEntityNotFound(_0x58430f,null))[_0xb37f('0x2a')](function(_0x23fbaa){if(_0x23fbaa){return _0x23fbaa[_0xb37f('0x89')](_0xd3a255[_0xb37f('0x4c')][_0xb37f('0x5b')],_[_0xb37f('0x62')](_0xd3a255[_0xb37f('0x4c')],[_0xb37f('0x5b'),'id'])||{})['spread'](function(_0x15e7d7){for(var _0x403b69=0x0;_0x403b69<_0xd3a255['body'][_0xb37f('0x5b')]['length'];_0x403b69+=0x1){socket[_0xb37f('0x8a')](_0xb37f('0x8b'),{'UserId':Number(_0xd3a255[_0xb37f('0x4c')]['ids'][_0x403b69]),'CmListId':Number(_0xd3a255[_0xb37f('0x46')]['id'])});}return _0x15e7d7;});}})[_0xb37f('0x2a')](respondWithResult(_0x58430f,null))[_0xb37f('0x45')](handleError(_0x58430f,null));};exports[_0xb37f('0x8c')]=function(_0x54b095,_0x232f0c,_0x4bcde6){return db[_0xb37f('0x31')][_0xb37f('0x4a')]({'where':{'id':_0x54b095[_0xb37f('0x46')]['id']}})[_0xb37f('0x2a')](handleEntityNotFound(_0x232f0c,null))[_0xb37f('0x2a')](function(_0x4721ec){if(_0x4721ec){return _0x4721ec[_0xb37f('0x8c')](_0x54b095['query'][_0xb37f('0x5b')])[_0xb37f('0x2a')](function(){if(_[_0xb37f('0x5e')](_0x54b095[_0xb37f('0x35')][_0xb37f('0x5b')])){for(var _0x5cc936=0x0;_0x5cc936<_0x54b095[_0xb37f('0x35')][_0xb37f('0x5b')][_0xb37f('0x3a')];_0x5cc936+=0x1){socket['emit']('userCmList:remove',{'UserId':Number(_0x54b095[_0xb37f('0x35')][_0xb37f('0x5b')][_0x5cc936]),'CmListId':Number(_0x54b095[_0xb37f('0x46')]['id'])});}}else{socket[_0xb37f('0x8a')](_0xb37f('0x8d'),{'UserId':Number(_0x54b095['query'][_0xb37f('0x5b')]),'CmListId':Number(_0x54b095[_0xb37f('0x46')]['id'])});}});}})['then'](respondWithStatusCode(_0x232f0c,null))[_0xb37f('0x45')](handleError(_0x232f0c,null));};exports[_0xb37f('0x8e')]=function(_0x558977,_0x1f570c,_0x5dc462){var _0x47ed42={};var _0x5df99a={};var _0x3af4ed;var _0x3accf0;return db['CmList'][_0xb37f('0x57')]({'where':{'id':_0x558977[_0xb37f('0x46')]['id']}})[_0xb37f('0x2a')](handleEntityNotFound(_0x1f570c,null))[_0xb37f('0x2a')](function(_0x1a0835){if(_0x1a0835){_0x3af4ed=_0x1a0835;_0x5df99a[_0xb37f('0x34')]=_['keys'](db[_0xb37f('0x8f')][_0xb37f('0x47')]);_0x5df99a[_0xb37f('0x35')]=_[_0xb37f('0x36')](_0x558977[_0xb37f('0x35')]);_0x5df99a[_0xb37f('0x3e')]=_['intersection'](_0x5df99a[_0xb37f('0x34')],_0x5df99a['query']);_0x47ed42[_0xb37f('0x38')]=_[_0xb37f('0x37')](_0x5df99a[_0xb37f('0x34')],qs['fields'](_0x558977[_0xb37f('0x35')][_0xb37f('0x39')]));_0x47ed42[_0xb37f('0x38')]=_0x47ed42['attributes'][_0xb37f('0x3a')]?_0x47ed42['attributes']:_0x5df99a[_0xb37f('0x34')];_0x47ed42[_0xb37f('0x6b')]=qs[_0xb37f('0x3c')](_0x558977[_0xb37f('0x35')][_0xb37f('0x3c')]);_0x47ed42['where']=qs[_0xb37f('0x3e')](_['pick'](_0x558977[_0xb37f('0x35')],_0x5df99a[_0xb37f('0x3e')]));if(_0x558977[_0xb37f('0x35')]['filter']){_0x47ed42[_0xb37f('0x3d')]=_[_0xb37f('0x40')](_0x47ed42[_0xb37f('0x3d')],{'$or':_[_0xb37f('0x30')](_0x47ed42[_0xb37f('0x38')],function(_0x26f853){var _0x3ddbf0={};_0x3ddbf0[_0x26f853]={'$like':'%'+_0x558977[_0xb37f('0x35')][_0xb37f('0x41')]+'%'};return _0x3ddbf0;})});}_0x47ed42=_[_0xb37f('0x40')]({},_0x47ed42,_0x558977[_0xb37f('0x49')]);return _0x3af4ed[_0xb37f('0x8e')](_0x47ed42);}})[_0xb37f('0x2a')](function(_0x5ee37f){if(_0x5ee37f){_0x3accf0=_0x5ee37f[_0xb37f('0x3a')];if(!_0x558977[_0xb37f('0x35')]['hasOwnProperty']('nolimit')){_0x47ed42[_0xb37f('0x22')]=qs['limit'](_0x558977[_0xb37f('0x35')][_0xb37f('0x22')]);_0x47ed42['offset']=qs[_0xb37f('0x20')](_0x558977['query']['offset']);}return _0x3af4ed[_0xb37f('0x8e')](_0x47ed42);}})['then'](function(_0xcd08eb){if(_0xcd08eb){return _0xcd08eb?{'count':_0x3accf0,'rows':_0xcd08eb}:null;}})[_0xb37f('0x2a')](respondWithResult(_0x1f570c,null))[_0xb37f('0x45')](handleError(_0x1f570c,null));};
\ No newline at end of file
index ef65965..8282613 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x326f=['exports','events','setMaxListeners','save','update','remove','emit','hook'];(function(_0x14add3,_0x13ce8d){var _0x4a174f=function(_0x2b3ed7){while(--_0x2b3ed7){_0x14add3['push'](_0x14add3['shift']());}};_0x4a174f(++_0x13ce8d);}(_0x326f,0xd1));var _0xf326=function(_0x2060f7,_0x31f0df){_0x2060f7=_0x2060f7-0x0;var _0xab60b2=_0x326f[_0x2060f7];return _0xab60b2;};'use strict';var EventEmitter=require(_0xf326('0x0'));var CmList=require('../../mysqldb')['db']['CmList'];var CmListEvents=new EventEmitter();CmListEvents[_0xf326('0x1')](0x0);var events={'afterCreate':_0xf326('0x2'),'afterUpdate':_0xf326('0x3'),'afterDestroy':_0xf326('0x4')};function emitEvent(_0x27e8d7){return function(_0x120a26,_0x9445c6,_0xf1c243){CmListEvents[_0xf326('0x5')](_0x27e8d7+':'+_0x120a26['id'],_0x120a26);CmListEvents[_0xf326('0x5')](_0x27e8d7,_0x120a26);_0xf1c243(null);};}for(var e in events){if(events['hasOwnProperty'](e)){var event=events[e];CmList[_0xf326('0x6')](e,emitEvent(event));}}module[_0xf326('0x7')]=CmListEvents;
\ No newline at end of file
+var _0x9957=['setMaxListeners','update','remove','emit','hasOwnProperty','hook','exports','events','../../mysqldb','CmList'];(function(_0x22e237,_0x4e94ff){var _0x3e48a9=function(_0x1c092a){while(--_0x1c092a){_0x22e237['push'](_0x22e237['shift']());}};_0x3e48a9(++_0x4e94ff);}(_0x9957,0x93));var _0x7995=function(_0x6131cd,_0x4c26a1){_0x6131cd=_0x6131cd-0x0;var _0x47e916=_0x9957[_0x6131cd];return _0x47e916;};'use strict';var EventEmitter=require(_0x7995('0x0'));var CmList=require(_0x7995('0x1'))['db'][_0x7995('0x2')];var CmListEvents=new EventEmitter();CmListEvents[_0x7995('0x3')](0x0);var events={'afterCreate':'save','afterUpdate':_0x7995('0x4'),'afterDestroy':_0x7995('0x5')};function emitEvent(_0x1902b4){return function(_0x462a03,_0x576d89,_0x744bea){CmListEvents[_0x7995('0x6')](_0x1902b4+':'+_0x462a03['id'],_0x462a03);CmListEvents[_0x7995('0x6')](_0x1902b4,_0x462a03);_0x744bea(null);};}for(var e in events){if(events[_0x7995('0x7')](e)){var event=events[e];CmList[_0x7995('0x8')](e,emitEvent(event));}}module[_0x7995('0x9')]=CmListEvents;
\ No newline at end of file
index d18689f..364963c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x55e0=['./cmList.attributes','exports','define','cm_lists','lodash','util','../../config/logger','api','request-promise','path','rimraf','../../config/environment'];(function(_0x4a53d,_0x58a95e){var _0x27410e=function(_0x38fc90){while(--_0x38fc90){_0x4a53d['push'](_0x4a53d['shift']());}};_0x27410e(++_0x58a95e);}(_0x55e0,0xdc));var _0x055e=function(_0x26a718,_0x80e326){_0x26a718=_0x26a718-0x0;var _0x19cb86=_0x55e0[_0x26a718];return _0x19cb86;};'use strict';var _=require(_0x055e('0x0'));var util=require(_0x055e('0x1'));var logger=require(_0x055e('0x2'))(_0x055e('0x3'));var moment=require('moment');var BPromise=require('bluebird');var rp=require(_0x055e('0x4'));var fs=require('fs');var path=require(_0x055e('0x5'));var rimraf=require(_0x055e('0x6'));var config=require(_0x055e('0x7'));var attributes=require(_0x055e('0x8'));module[_0x055e('0x9')]=function(_0x490ee1,_0x5239f6){return _0x490ee1[_0x055e('0xa')]('CmList',attributes,{'tableName':_0x055e('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xfd28=['rimraf','./cmList.attributes','exports','define','util','../../config/logger','moment','request-promise','path'];(function(_0x3f8197,_0x3544b2){var _0x428b9c=function(_0x3e9585){while(--_0x3e9585){_0x3f8197['push'](_0x3f8197['shift']());}};_0x428b9c(++_0x3544b2);}(_0xfd28,0x148));var _0x8fd2=function(_0xd1c39b,_0x16f0c6){_0xd1c39b=_0xd1c39b-0x0;var _0x58f5bc=_0xfd28[_0xd1c39b];return _0x58f5bc;};'use strict';var _=require('lodash');var util=require(_0x8fd2('0x0'));var logger=require(_0x8fd2('0x1'))('api');var moment=require(_0x8fd2('0x2'));var BPromise=require('bluebird');var rp=require(_0x8fd2('0x3'));var fs=require('fs');var path=require(_0x8fd2('0x4'));var rimraf=require(_0x8fd2('0x5'));var config=require('../../config/environment');var attributes=require(_0x8fd2('0x6'));module[_0x8fd2('0x7')]=function(_0x2ee87e,_0x36178a){return _0x2ee87e[_0x8fd2('0x8')]('CmList',attributes,{'tableName':'cm_lists','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 954f2dd..ebd57d6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x71f0=['then','info','CmList,\x20%s,\x20%s','CmList,\x20%s,\x20%s,\x20%s','request\x20sent','error','code','message','result','catch','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','redis','defaults','localhost','./cmList.socket','register','request'];(function(_0x311c35,_0x534915){var _0x5cc50c=function(_0x3ad680){while(--_0x3ad680){_0x311c35['push'](_0x311c35['shift']());}};_0x5cc50c(++_0x534915);}(_0x71f0,0xa0));var _0x071f=function(_0x123239,_0x23d35a){_0x123239=_0x123239-0x0;var _0x5a6042=_0x71f0[_0x123239];return _0x5a6042;};'use strict';var _=require(_0x071f('0x0'));var util=require(_0x071f('0x1'));var moment=require(_0x071f('0x2'));var BPromise=require(_0x071f('0x3'));var rs=require(_0x071f('0x4'));var fs=require('fs');var Redis=require(_0x071f('0x5'));var db=require(_0x071f('0x6'))['db'];var utils=require(_0x071f('0x7'));var logger=require(_0x071f('0x8'))(_0x071f('0x9'));var config=require(_0x071f('0xa'));var jayson=require(_0x071f('0xb'));var client=jayson[_0x071f('0xc')][_0x071f('0xd')]({'port':0x232a});config[_0x071f('0xe')]=_[_0x071f('0xf')](config['redis'],{'host':_0x071f('0x10'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0x071f('0xe')]));require(_0x071f('0x11'))[_0x071f('0x12')](socket);function respondWithRpcPromise(_0x374afd,_0x25c2c7,_0x308d9b){return new BPromise(function(_0x4279c9,_0x4e0815){return client[_0x071f('0x13')](_0x374afd,_0x308d9b)[_0x071f('0x14')](function(_0x5dcb05){logger[_0x071f('0x15')](_0x071f('0x16'),_0x25c2c7,'request\x20sent');logger['debug'](_0x071f('0x17'),_0x25c2c7,_0x071f('0x18'),JSON['stringify'](_0x5dcb05));if(_0x5dcb05[_0x071f('0x19')]){if(_0x5dcb05[_0x071f('0x19')][_0x071f('0x1a')]===0x1f4){logger[_0x071f('0x19')]('CmList,\x20%s,\x20%s',_0x25c2c7,_0x5dcb05[_0x071f('0x19')][_0x071f('0x1b')]);return _0x4e0815(_0x5dcb05[_0x071f('0x19')][_0x071f('0x1b')]);}logger[_0x071f('0x19')](_0x071f('0x16'),_0x25c2c7,_0x5dcb05['error'][_0x071f('0x1b')]);return _0x4279c9(_0x5dcb05[_0x071f('0x19')][_0x071f('0x1b')]);}else{logger['info']('CmList,\x20%s,\x20%s',_0x25c2c7,'request\x20sent');_0x4279c9(_0x5dcb05[_0x071f('0x1c')]['message']);}})[_0x071f('0x1d')](function(_0x35816d){logger['error'](_0x071f('0x16'),_0x25c2c7,_0x35816d);_0x4e0815(_0x35816d);});});}
\ No newline at end of file
+var _0x111b=['request','then','info','request\x20sent','debug','CmList,\x20%s,\x20%s,\x20%s','stringify','error','code','CmList,\x20%s,\x20%s','message','result','catch','lodash','util','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','defaults','localhost','socket.io-emitter','redis'];(function(_0xfbc824,_0x42853c){var _0x2d4191=function(_0x4305cc){while(--_0x4305cc){_0xfbc824['push'](_0xfbc824['shift']());}};_0x2d4191(++_0x42853c);}(_0x111b,0xbb));var _0xb111=function(_0x4a9281,_0x2d76d3){_0x4a9281=_0x4a9281-0x0;var _0x428de5=_0x111b[_0x4a9281];return _0x428de5;};'use strict';var _=require(_0xb111('0x0'));var util=require(_0xb111('0x1'));var moment=require('moment');var BPromise=require('bluebird');var rs=require(_0xb111('0x2'));var fs=require('fs');var Redis=require(_0xb111('0x3'));var db=require(_0xb111('0x4'))['db'];var utils=require(_0xb111('0x5'));var logger=require(_0xb111('0x6'))(_0xb111('0x7'));var config=require(_0xb111('0x8'));var jayson=require(_0xb111('0x9'));var client=jayson[_0xb111('0xa')][_0xb111('0xb')]({'port':0x232a});config['redis']=_[_0xb111('0xc')](config['redis'],{'host':_0xb111('0xd'),'port':0x18eb});var socket=require(_0xb111('0xe'))(new Redis(config[_0xb111('0xf')]));require('./cmList.socket')['register'](socket);function respondWithRpcPromise(_0x18c70e,_0x3cf98b,_0x153e2a){return new BPromise(function(_0x13a0e5,_0x3a036d){return client[_0xb111('0x10')](_0x18c70e,_0x153e2a)[_0xb111('0x11')](function(_0x1e0888){logger[_0xb111('0x12')]('CmList,\x20%s,\x20%s',_0x3cf98b,_0xb111('0x13'));logger[_0xb111('0x14')](_0xb111('0x15'),_0x3cf98b,_0xb111('0x13'),JSON[_0xb111('0x16')](_0x1e0888));if(_0x1e0888['error']){if(_0x1e0888[_0xb111('0x17')][_0xb111('0x18')]===0x1f4){logger[_0xb111('0x17')](_0xb111('0x19'),_0x3cf98b,_0x1e0888[_0xb111('0x17')][_0xb111('0x1a')]);return _0x3a036d(_0x1e0888[_0xb111('0x17')][_0xb111('0x1a')]);}logger['error'](_0xb111('0x19'),_0x3cf98b,_0x1e0888[_0xb111('0x17')][_0xb111('0x1a')]);return _0x13a0e5(_0x1e0888[_0xb111('0x17')]['message']);}else{logger[_0xb111('0x12')](_0xb111('0x19'),_0x3cf98b,_0xb111('0x13'));_0x13a0e5(_0x1e0888[_0xb111('0x1b')][_0xb111('0x1a')]);}})[_0xb111('0x1c')](function(_0x5ab823){logger[_0xb111('0x17')](_0xb111('0x19'),_0x3cf98b,_0x5ab823);_0x3a036d(_0x5ab823);});});}
\ No newline at end of file
index 1d57c37..a6c9de7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb1f7=['save','remove','update','emit','removeListener','register','length','cmList:','./cmList.events'];(function(_0x2f227c,_0x360c3a){var _0x5032bc=function(_0x824bb){while(--_0x824bb){_0x2f227c['push'](_0x2f227c['shift']());}};_0x5032bc(++_0x360c3a);}(_0xb1f7,0x19d));var _0x7b1f=function(_0x21da0f,_0x34a74e){_0x21da0f=_0x21da0f-0x0;var _0x2fd6c5=_0xb1f7[_0x21da0f];return _0x2fd6c5;};'use strict';var CmListEvents=require(_0x7b1f('0x0'));var events=[_0x7b1f('0x1'),_0x7b1f('0x2'),_0x7b1f('0x3')];function createListener(_0x334595,_0x46660d){return function(_0xa95364){_0x46660d[_0x7b1f('0x4')](_0x334595,_0xa95364);};}function removeListener(_0x2d1f14,_0x2941cc){return function(){CmListEvents[_0x7b1f('0x5')](_0x2d1f14,_0x2941cc);};}exports[_0x7b1f('0x6')]=function(_0x148787){for(var _0x380afe=0x0,_0x2c6da6=events[_0x7b1f('0x7')];_0x380afe<_0x2c6da6;_0x380afe++){var _0x3a060f=events[_0x380afe];var _0x1d4b1a=createListener(_0x7b1f('0x8')+_0x3a060f,_0x148787);CmListEvents['on'](_0x3a060f,_0x1d4b1a);}};
\ No newline at end of file
+var _0xa3c6=['emit','removeListener','register','length','./cmList.events','remove','update'];(function(_0x4259cd,_0x253958){var _0x263b9a=function(_0x3fe643){while(--_0x3fe643){_0x4259cd['push'](_0x4259cd['shift']());}};_0x263b9a(++_0x253958);}(_0xa3c6,0x97));var _0x6a3c=function(_0x543f28,_0x216cab){_0x543f28=_0x543f28-0x0;var _0x951f97=_0xa3c6[_0x543f28];return _0x951f97;};'use strict';var CmListEvents=require(_0x6a3c('0x0'));var events=['save',_0x6a3c('0x1'),_0x6a3c('0x2')];function createListener(_0x3d8f2d,_0x5adeb6){return function(_0x50b735){_0x5adeb6[_0x6a3c('0x3')](_0x3d8f2d,_0x50b735);};}function removeListener(_0x5a9489,_0x4922ff){return function(){CmListEvents[_0x6a3c('0x4')](_0x5a9489,_0x4922ff);};}exports[_0x6a3c('0x5')]=function(_0x6b60af){for(var _0x32b2b9=0x0,_0x53a74a=events[_0x6a3c('0x6')];_0x32b2b9<_0x53a74a;_0x32b2b9++){var _0x1a6cdc=events[_0x32b2b9];var _0xea4738=createListener('cmList:'+_0x1a6cdc,_0x6b60af);CmListEvents['on'](_0x1a6cdc,_0xea4738);}};
\ No newline at end of file
index 1040f66..87aa503 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2c81=['path','connect-timeout','express','Router','fs-extra','../../components/interaction/service','./cmList.controller','get','isAuthenticated','/describe','describe','/:id','show','/:id/dispositions','getDispositions','/:id/contacts','getContacts','getContactsCsv','/:id/fields','getCustomFields','getAgents','post','create','addDisposition','addContacts','/:id/users','put','update','destroy','delete','removeAgents','exports','multer','util'];(function(_0x39c734,_0x2f3e06){var _0xb2a2f9=function(_0x502f3f){while(--_0x502f3f){_0x39c734['push'](_0x39c734['shift']());}};_0xb2a2f9(++_0x2f3e06);}(_0x2c81,0x174));var _0x12c8=function(_0x2cb331,_0x46c371){_0x2cb331=_0x2cb331-0x0;var _0x338697=_0x2c81[_0x2cb331];return _0x338697;};'use strict';var multer=require(_0x12c8('0x0'));var util=require(_0x12c8('0x1'));var path=require(_0x12c8('0x2'));var timeout=require(_0x12c8('0x3'));var express=require(_0x12c8('0x4'));var router=express[_0x12c8('0x5')]();var fs_extra=require(_0x12c8('0x6'));var auth=require('../../components/auth/service');var interaction=require(_0x12c8('0x7'));var config=require('../../config/environment');var controller=require(_0x12c8('0x8'));router[_0x12c8('0x9')]('/',auth[_0x12c8('0xa')](),controller['index']);router['get'](_0x12c8('0xb'),auth[_0x12c8('0xa')](),controller[_0x12c8('0xc')]);router[_0x12c8('0x9')](_0x12c8('0xd'),auth[_0x12c8('0xa')](),controller[_0x12c8('0xe')]);router['get'](_0x12c8('0xf'),auth[_0x12c8('0xa')](),controller[_0x12c8('0x10')]);router[_0x12c8('0x9')](_0x12c8('0x11'),auth[_0x12c8('0xa')](),controller[_0x12c8('0x12')]);router[_0x12c8('0x9')]('/:id/contacts/csv',auth['isAuthenticated'](),controller[_0x12c8('0x13')]);router[_0x12c8('0x9')](_0x12c8('0x14'),auth[_0x12c8('0xa')](),controller[_0x12c8('0x15')]);router[_0x12c8('0x9')]('/:id/users',auth[_0x12c8('0xa')](),controller[_0x12c8('0x16')]);router[_0x12c8('0x17')]('/',auth[_0x12c8('0xa')](),controller[_0x12c8('0x18')]);router[_0x12c8('0x17')]('/:id/dispositions',auth[_0x12c8('0xa')](),controller[_0x12c8('0x19')]);router[_0x12c8('0x17')](_0x12c8('0x11'),auth[_0x12c8('0xa')](),controller[_0x12c8('0x1a')]);router[_0x12c8('0x17')]('/:id/fields',auth['isAuthenticated'](),controller['addCustomField']);router[_0x12c8('0x17')](_0x12c8('0x1b'),auth[_0x12c8('0xa')](),controller['addAgents']);router[_0x12c8('0x1c')](_0x12c8('0xd'),auth[_0x12c8('0xa')](),controller[_0x12c8('0x1d')]);router['delete']('/:id',auth[_0x12c8('0xa')](),controller[_0x12c8('0x1e')]);router['delete'](_0x12c8('0xf'),auth['isAuthenticated'](),controller['removeDispositions']);router[_0x12c8('0x1f')]('/:id/users',auth[_0x12c8('0xa')](),controller[_0x12c8('0x20')]);module[_0x12c8('0x21')]=router;
\ No newline at end of file
+var _0xecd6=['addCustomField','addAgents','put','update','delete','destroy','removeDispositions','removeAgents','exports','multer','util','Router','fs-extra','../../components/auth/service','../../config/environment','./cmList.controller','get','isAuthenticated','index','/describe','describe','/:id','getDispositions','/:id/contacts','getContacts','getContactsCsv','/:id/fields','getCustomFields','/:id/users','getAgents','post','/:id/dispositions','addDisposition','addContacts'];(function(_0x4b72ae,_0x3da576){var _0x4996be=function(_0x478815){while(--_0x478815){_0x4b72ae['push'](_0x4b72ae['shift']());}};_0x4996be(++_0x3da576);}(_0xecd6,0x13b));var _0x6ecd=function(_0xc6e0c4,_0xa681d8){_0xc6e0c4=_0xc6e0c4-0x0;var _0x11442c=_0xecd6[_0xc6e0c4];return _0x11442c;};'use strict';var multer=require(_0x6ecd('0x0'));var util=require(_0x6ecd('0x1'));var path=require('path');var timeout=require('connect-timeout');var express=require('express');var router=express[_0x6ecd('0x2')]();var fs_extra=require(_0x6ecd('0x3'));var auth=require(_0x6ecd('0x4'));var interaction=require('../../components/interaction/service');var config=require(_0x6ecd('0x5'));var controller=require(_0x6ecd('0x6'));router[_0x6ecd('0x7')]('/',auth[_0x6ecd('0x8')](),controller[_0x6ecd('0x9')]);router[_0x6ecd('0x7')](_0x6ecd('0xa'),auth[_0x6ecd('0x8')](),controller[_0x6ecd('0xb')]);router[_0x6ecd('0x7')](_0x6ecd('0xc'),auth['isAuthenticated'](),controller['show']);router[_0x6ecd('0x7')]('/:id/dispositions',auth['isAuthenticated'](),controller[_0x6ecd('0xd')]);router[_0x6ecd('0x7')](_0x6ecd('0xe'),auth[_0x6ecd('0x8')](),controller[_0x6ecd('0xf')]);router[_0x6ecd('0x7')]('/:id/contacts/csv',auth[_0x6ecd('0x8')](),controller[_0x6ecd('0x10')]);router[_0x6ecd('0x7')](_0x6ecd('0x11'),auth[_0x6ecd('0x8')](),controller[_0x6ecd('0x12')]);router[_0x6ecd('0x7')](_0x6ecd('0x13'),auth[_0x6ecd('0x8')](),controller[_0x6ecd('0x14')]);router[_0x6ecd('0x15')]('/',auth[_0x6ecd('0x8')](),controller['create']);router[_0x6ecd('0x15')](_0x6ecd('0x16'),auth[_0x6ecd('0x8')](),controller[_0x6ecd('0x17')]);router[_0x6ecd('0x15')](_0x6ecd('0xe'),auth[_0x6ecd('0x8')](),controller[_0x6ecd('0x18')]);router[_0x6ecd('0x15')]('/:id/fields',auth[_0x6ecd('0x8')](),controller[_0x6ecd('0x19')]);router[_0x6ecd('0x15')](_0x6ecd('0x13'),auth[_0x6ecd('0x8')](),controller[_0x6ecd('0x1a')]);router[_0x6ecd('0x1b')](_0x6ecd('0xc'),auth[_0x6ecd('0x8')](),controller[_0x6ecd('0x1c')]);router[_0x6ecd('0x1d')](_0x6ecd('0xc'),auth[_0x6ecd('0x8')](),controller[_0x6ecd('0x1e')]);router[_0x6ecd('0x1d')](_0x6ecd('0x16'),auth['isAuthenticated'](),controller[_0x6ecd('0x1f')]);router[_0x6ecd('0x1d')](_0x6ecd('0x13'),auth[_0x6ecd('0x8')](),controller[_0x6ecd('0x20')]);module[_0x6ecd('0x21')]=router;
\ No newline at end of file
index f8f9665..f595b07 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2c9f=['exports','getDataValue','STRING','sequelize'];(function(_0x2de7f0,_0x29dddd){var _0x5795d5=function(_0x414572){while(--_0x414572){_0x2de7f0['push'](_0x2de7f0['shift']());}};_0x5795d5(++_0x29dddd);}(_0x2c9f,0x1cf));var _0xf2c9=function(_0x2cd782,_0x19dd59){_0x2cd782=_0x2cd782-0x0;var _0x27e488=_0x2c9f[_0x2cd782];return _0x27e488;};'use strict';var Sequelize=require(_0xf2c9('0x0'));module[_0xf2c9('0x1')]={'name':{'type':Sequelize['VIRTUAL'],'get':function(_0x27d80c){return this[_0xf2c9('0x2')]('field');}},'field':{'type':Sequelize[_0xf2c9('0x3')],'allowNull':![]},'operator':{'type':Sequelize['STRING'],'allowNull':![]},'value':{'type':Sequelize['STRING'],'allowNull':![]}};
\ No newline at end of file
+var _0x7993=['getDataValue','field','STRING','sequelize','exports','VIRTUAL'];(function(_0x37d579,_0x436605){var _0x229044=function(_0x469d90){while(--_0x469d90){_0x37d579['push'](_0x37d579['shift']());}};_0x229044(++_0x436605);}(_0x7993,0x1d1));var _0x3799=function(_0x532c13,_0xd8d672){_0x532c13=_0x532c13-0x0;var _0x565290=_0x7993[_0x532c13];return _0x565290;};'use strict';var Sequelize=require(_0x3799('0x0'));module[_0x3799('0x1')]={'name':{'type':Sequelize[_0x3799('0x2')],'get':function(_0x560604){return this[_0x3799('0x3')](_0x3799('0x4'));}},'field':{'type':Sequelize[_0x3799('0x5')],'allowNull':![]},'operator':{'type':Sequelize[_0x3799('0x5')],'allowNull':![]},'value':{'type':Sequelize[_0x3799('0x5')],'allowNull':![]}};
\ No newline at end of file
index 0036260..efafdbf 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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(_0x1b0f39,_0x3a7665){var _0x2fd2c1=function(_0x43d0c9){while(--_0x43d0c9){_0x1b0f39['push'](_0x1b0f39['shift']());}};_0x2fd2c1(++_0x3a7665);}(_0x7a54,0x106));var _0x47a5=function(_0x805514,_0x20acac){_0x805514=_0x805514-0x0;var _0x3b3795=_0x7a54[_0x805514];return _0x3b3795;};'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
+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(_0x1f6582,_0x67dd80){var _0x1d5127=function(_0x3d8ca9){while(--_0x3d8ca9){_0x1f6582['push'](_0x1f6582['shift']());}};_0x1d5127(++_0x67dd80);}(_0x9957,0x93));var _0x7995=function(_0x3947c9,_0x4d6c97){_0x3947c9=_0x3947c9-0x0;var _0x2e7871=_0x9957[_0x3947c9];return _0x2e7871;};'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
index 8cb67be..e7d1314 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc7ca=['lodash','util','moment','bluebird','request-promise','path','define','tools_conditions'];(function(_0x22e9fe,_0x3d019f){var _0x47cd19=function(_0x8fd5fc){while(--_0x8fd5fc){_0x22e9fe['push'](_0x22e9fe['shift']());}};_0x47cd19(++_0x3d019f);}(_0xc7ca,0x170));var _0xac7c=function(_0x237bb7,_0x49d3f8){_0x237bb7=_0x237bb7-0x0;var _0x1f8200=_0xc7ca[_0x237bb7];return _0x1f8200;};'use strict';var _=require(_0xac7c('0x0'));var util=require(_0xac7c('0x1'));var logger=require('../../config/logger')('api');var moment=require(_0xac7c('0x2'));var BPromise=require(_0xac7c('0x3'));var rp=require(_0xac7c('0x4'));var fs=require('fs');var path=require(_0xac7c('0x5'));var rimraf=require('rimraf');var config=require('../../config/environment');var attributes=require('./condition.attributes');module['exports']=function(_0x40491a,_0x3b9a06){return _0x40491a[_0xac7c('0x6')]('Condition',attributes,{'tableName':_0xac7c('0x7'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x223b=['path','rimraf','../../config/environment','Condition','tools_conditions','../../config/logger','api','bluebird','request-promise'];(function(_0x3865d7,_0x3ba37b){var _0x321441=function(_0x3f32f2){while(--_0x3f32f2){_0x3865d7['push'](_0x3865d7['shift']());}};_0x321441(++_0x3ba37b);}(_0x223b,0x1d9));var _0xb223=function(_0x322d5f,_0x348a9d){_0x322d5f=_0x322d5f-0x0;var _0x4fec46=_0x223b[_0x322d5f];return _0x4fec46;};'use strict';var _=require('lodash');var util=require('util');var logger=require(_0xb223('0x0'))(_0xb223('0x1'));var moment=require('moment');var BPromise=require(_0xb223('0x2'));var rp=require(_0xb223('0x3'));var fs=require('fs');var path=require(_0xb223('0x4'));var rimraf=require(_0xb223('0x5'));var config=require(_0xb223('0x6'));var attributes=require('./condition.attributes');module['exports']=function(_0x431a30,_0x236049){return _0x431a30['define'](_0xb223('0x7'),attributes,{'tableName':_0xb223('0x8'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index f9b78f5..dd6032d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0ee4=['debug','Condition,\x20%s,\x20%s,\x20%s','error','code','Condition,\x20%s,\x20%s','message','info','result','catch','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','../../config/environment','jayson/promise','client','http','then','request\x20sent'];(function(_0x45bc2f,_0x485e7d){var _0x495567=function(_0x2f1885){while(--_0x2f1885){_0x45bc2f['push'](_0x45bc2f['shift']());}};_0x495567(++_0x485e7d);}(_0x0ee4,0xc9));var _0x40ee=function(_0x51466e,_0x53368f){_0x51466e=_0x51466e-0x0;var _0xcfbcea=_0x0ee4[_0x51466e];return _0xcfbcea;};'use strict';var _=require(_0x40ee('0x0'));var util=require(_0x40ee('0x1'));var moment=require(_0x40ee('0x2'));var BPromise=require(_0x40ee('0x3'));var rs=require(_0x40ee('0x4'));var fs=require('fs');var Redis=require(_0x40ee('0x5'));var db=require(_0x40ee('0x6'))['db'];var utils=require(_0x40ee('0x7'));var logger=require(_0x40ee('0x8'))('rpc');var config=require(_0x40ee('0x9'));var jayson=require(_0x40ee('0xa'));var client=jayson[_0x40ee('0xb')][_0x40ee('0xc')]({'port':0x232a});function respondWithRpcPromise(_0x29b8b5,_0x4dd276,_0x5cb87e){return new BPromise(function(_0xa821de,_0x217488){return client['request'](_0x29b8b5,_0x5cb87e)[_0x40ee('0xd')](function(_0x4c9c7c){logger['info']('Condition,\x20%s,\x20%s',_0x4dd276,_0x40ee('0xe'));logger[_0x40ee('0xf')](_0x40ee('0x10'),_0x4dd276,_0x40ee('0xe'),JSON['stringify'](_0x4c9c7c));if(_0x4c9c7c[_0x40ee('0x11')]){if(_0x4c9c7c['error'][_0x40ee('0x12')]===0x1f4){logger['error'](_0x40ee('0x13'),_0x4dd276,_0x4c9c7c[_0x40ee('0x11')][_0x40ee('0x14')]);return _0x217488(_0x4c9c7c[_0x40ee('0x11')]['message']);}logger[_0x40ee('0x11')](_0x40ee('0x13'),_0x4dd276,_0x4c9c7c[_0x40ee('0x11')][_0x40ee('0x14')]);return _0xa821de(_0x4c9c7c[_0x40ee('0x11')][_0x40ee('0x14')]);}else{logger[_0x40ee('0x15')](_0x40ee('0x13'),_0x4dd276,_0x40ee('0xe'));_0xa821de(_0x4c9c7c[_0x40ee('0x16')][_0x40ee('0x14')]);}})[_0x40ee('0x17')](function(_0x1e79aa){logger[_0x40ee('0x11')](_0x40ee('0x13'),_0x4dd276,_0x1e79aa);_0x217488(_0x1e79aa);});});}
\ No newline at end of file
+var _0xbecc=['../../config/utils','rpc','../../config/environment','jayson/promise','http','request','then','info','debug','Condition,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','code','Condition,\x20%s,\x20%s','message','result','catch','lodash','moment','bluebird','randomstring','ioredis','../../mysqldb'];(function(_0x15c795,_0x303f38){var _0x3bac6c=function(_0x33fc08){while(--_0x33fc08){_0x15c795['push'](_0x15c795['shift']());}};_0x3bac6c(++_0x303f38);}(_0xbecc,0x192));var _0xcbec=function(_0x40d0f3,_0xc9a74b){_0x40d0f3=_0x40d0f3-0x0;var _0x4f1029=_0xbecc[_0x40d0f3];return _0x4f1029;};'use strict';var _=require(_0xcbec('0x0'));var util=require('util');var moment=require(_0xcbec('0x1'));var BPromise=require(_0xcbec('0x2'));var rs=require(_0xcbec('0x3'));var fs=require('fs');var Redis=require(_0xcbec('0x4'));var db=require(_0xcbec('0x5'))['db'];var utils=require(_0xcbec('0x6'));var logger=require('../../config/logger')(_0xcbec('0x7'));var config=require(_0xcbec('0x8'));var jayson=require(_0xcbec('0x9'));var client=jayson['client'][_0xcbec('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x33fbf8,_0xa2ab8f,_0x582fe8){return new BPromise(function(_0x3fca6a,_0x11e015){return client[_0xcbec('0xb')](_0x33fbf8,_0x582fe8)[_0xcbec('0xc')](function(_0x294bbe){logger[_0xcbec('0xd')]('Condition,\x20%s,\x20%s',_0xa2ab8f,'request\x20sent');logger[_0xcbec('0xe')](_0xcbec('0xf'),_0xa2ab8f,_0xcbec('0x10'),JSON[_0xcbec('0x11')](_0x294bbe));if(_0x294bbe['error']){if(_0x294bbe[_0xcbec('0x12')][_0xcbec('0x13')]===0x1f4){logger['error'](_0xcbec('0x14'),_0xa2ab8f,_0x294bbe[_0xcbec('0x12')][_0xcbec('0x15')]);return _0x11e015(_0x294bbe[_0xcbec('0x12')][_0xcbec('0x15')]);}logger['error'](_0xcbec('0x14'),_0xa2ab8f,_0x294bbe[_0xcbec('0x12')][_0xcbec('0x15')]);return _0x3fca6a(_0x294bbe[_0xcbec('0x12')][_0xcbec('0x15')]);}else{logger[_0xcbec('0xd')](_0xcbec('0x14'),_0xa2ab8f,_0xcbec('0x10'));_0x3fca6a(_0x294bbe[_0xcbec('0x16')][_0xcbec('0x15')]);}})[_0xcbec('0x17')](function(_0x4d88c3){logger[_0xcbec('0x12')](_0xcbec('0x14'),_0xa2ab8f,_0x4d88c3);_0x11e015(_0x4d88c3);});});}
\ No newline at end of file
index a350b2b..5d24a2f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xaeb6=['update','/:id','exports','multer','util','connect-timeout','express','Router','../../components/auth/service','../../components/interaction/service','../../config/environment','put','isAuthenticated'];(function(_0x5f0e53,_0x2051f4){var _0x4ffa00=function(_0x10f43f){while(--_0x10f43f){_0x5f0e53['push'](_0x5f0e53['shift']());}};_0x4ffa00(++_0x2051f4);}(_0xaeb6,0x1b0));var _0x6aeb=function(_0x2c218d,_0x1eea90){_0x2c218d=_0x2c218d-0x0;var _0x2ef58a=_0xaeb6[_0x2c218d];return _0x2ef58a;};'use strict';var multer=require(_0x6aeb('0x0'));var util=require(_0x6aeb('0x1'));var path=require('path');var timeout=require(_0x6aeb('0x2'));var express=require(_0x6aeb('0x3'));var router=express[_0x6aeb('0x4')]();var fs_extra=require('fs-extra');var auth=require(_0x6aeb('0x5'));var interaction=require(_0x6aeb('0x6'));var config=require(_0x6aeb('0x7'));var controller=require('./condition.controller');router[_0x6aeb('0x8')]('/:id',auth[_0x6aeb('0x9')](),controller[_0x6aeb('0xa')]);router['delete'](_0x6aeb('0xb'),auth[_0x6aeb('0x9')](),controller['destroy']);module[_0x6aeb('0xc')]=router;
\ No newline at end of file
+var _0x9207=['fs-extra','../../components/auth/service','../../components/interaction/service','put','/:id','isAuthenticated','update','delete','destroy','exports','multer','util','path','express','Router'];(function(_0x520c8c,_0xc553f6){var _0x2408a4=function(_0x34d796){while(--_0x34d796){_0x520c8c['push'](_0x520c8c['shift']());}};_0x2408a4(++_0xc553f6);}(_0x9207,0x127));var _0x7920=function(_0x41ecfc,_0x54f670){_0x41ecfc=_0x41ecfc-0x0;var _0x4cdc47=_0x9207[_0x41ecfc];return _0x4cdc47;};'use strict';var multer=require(_0x7920('0x0'));var util=require(_0x7920('0x1'));var path=require(_0x7920('0x2'));var timeout=require('connect-timeout');var express=require(_0x7920('0x3'));var router=express[_0x7920('0x4')]();var fs_extra=require(_0x7920('0x5'));var auth=require(_0x7920('0x6'));var interaction=require(_0x7920('0x7'));var config=require('../../config/environment');var controller=require('./condition.controller');router[_0x7920('0x8')](_0x7920('0x9'),auth[_0x7920('0xa')](),controller[_0x7920('0xb')]);router[_0x7920('0xc')](_0x7920('0x9'),auth['isAuthenticated'](),controller[_0x7920('0xd')]);module[_0x7920('0xe')]=router;
\ No newline at end of file
index 13a72b2..3d8d1d4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2032=['name','exports','STRING'];(function(_0x3bbefc,_0x383dd4){var _0xdbf545=function(_0x4e6eb9){while(--_0x4e6eb9){_0x3bbefc['push'](_0x3bbefc['shift']());}};_0xdbf545(++_0x383dd4);}(_0x2032,0xd9));var _0x2203=function(_0x57031e,_0x3b3cb0){_0x57031e=_0x57031e-0x0;var _0x5b7574=_0x2032[_0x57031e];return _0x5b7574;};'use strict';var Sequelize=require('sequelize');module[_0x2203('0x0')]={'name':{'type':Sequelize[_0x2203('0x1')],'allowNull':![],'unique':_0x2203('0x2')},'description':{'type':Sequelize['STRING']}};
\ No newline at end of file
+var _0xb7e7=['STRING','sequelize'];(function(_0x5f09c5,_0x2bfca0){var _0x426ad9=function(_0x18fe5f){while(--_0x18fe5f){_0x5f09c5['push'](_0x5f09c5['shift']());}};_0x426ad9(++_0x2bfca0);}(_0xb7e7,0x121));var _0x7b7e=function(_0x3c4737,_0x2329ec){_0x3c4737=_0x3c4737-0x0;var _0x2bb926=_0xb7e7[_0x3c4737];return _0x2bb926;};'use strict';var Sequelize=require(_0x7b7e('0x0'));module['exports']={'name':{'type':Sequelize[_0x7b7e('0x1')],'allowNull':![],'unique':'name'},'description':{'type':Sequelize[_0x7b7e('0x1')]}};
\ No newline at end of file
index 89d71dc..585f0d7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5d20=['localhost','socket.io-emitter','./dashboard.socket','register','sendStatus','status','json','offset','undefined','limit','count','set','apply','reject','save','update','then','destroy','CustomDashboards','stack','name','index','map','Dashboard','fieldName','type','key','model','query','intersection','attributes','fields','hasOwnProperty','nolimit','sort','where','filters','pick','filter','merge','VIRTUAL','options','includeAll','include','findAll','rows','keys','length','catch','create','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','get','find','userProfileId','autoAssociation','UserProfileResource','error','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','clone','params','rawAttributes','createdAt','updatedAt','omit','body','UserProfileSection','iframe','attrUrl','attrs','value','https://','custom','attrPath','clock','attrHourFormat','attrTimezone','0.00','attrFontSize','counter','attrMetric','total','attrVoiceQueues','multibar-chart','pie-chart','attrSerie1','attrSerie2','attrSerie3','web-report','attrReport','reportType','attrRefresh','widgetAttributes:\x20%s','stringify','addItem','findOne','DashboardItem','order','getItems','eml-format','rimraf','fast-json-patch','moment','bluebird','mustache','sox','to-csv','ejs','fs-extra','lodash','squel','jsforce','desk.js','querystring','papaparse','ioredis','../../config/license/hardware','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','redis'];(function(_0x225063,_0x295f44){var _0x4013c6=function(_0x1024eb){while(--_0x1024eb){_0x225063['push'](_0x225063['shift']());}};_0x4013c6(++_0x295f44);}(_0x5d20,0x15c));var _0x05d2=function(_0x33e715,_0x791568){_0x33e715=_0x33e715-0x0;var _0x16facb=_0x5d20[_0x33e715];return _0x16facb;};'use strict';var emlformat=require(_0x05d2('0x0'));var rimraf=require(_0x05d2('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0x05d2('0x2'));var rp=require('request-promise');var moment=require(_0x05d2('0x3'));var BPromise=require(_0x05d2('0x4'));var Mustache=require(_0x05d2('0x5'));var util=require('util');var path=require('path');var sox=require(_0x05d2('0x6'));var csv=require(_0x05d2('0x7'));var ejs=require(_0x05d2('0x8'));var fs=require('fs');var fs_extra=require(_0x05d2('0x9'));var _=require(_0x05d2('0xa'));var squel=require(_0x05d2('0xb'));var crypto=require('crypto');var jsforce=require(_0x05d2('0xc'));var deskjs=require(_0x05d2('0xd'));var toCsv=require('to-csv');var querystring=require(_0x05d2('0xe'));var Papa=require(_0x05d2('0xf'));var Redis=require(_0x05d2('0x10'));var authService=require('../../components/auth/service');var qs=require('../../components/parsers/qs');var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x05d2('0x11'));var logger=require('../../config/logger')(_0x05d2('0x12'));var utils=require(_0x05d2('0x13'));var config=require(_0x05d2('0x14'));var licenseUtil=require(_0x05d2('0x15'));var db=require(_0x05d2('0x16'))['db'];config[_0x05d2('0x17')]=_['defaults'](config[_0x05d2('0x17')],{'host':_0x05d2('0x18'),'port':0x18eb});var socket=require(_0x05d2('0x19'))(new Redis(config[_0x05d2('0x17')]));require(_0x05d2('0x1a'))[_0x05d2('0x1b')](socket);function respondWithStatusCode(_0xaf318e,_0x52ac5d){_0x52ac5d=_0x52ac5d||0xcc;return function(_0xd9d6bd){if(_0xd9d6bd){return _0xaf318e[_0x05d2('0x1c')](_0x52ac5d);}return _0xaf318e[_0x05d2('0x1d')](_0x52ac5d)['end']();};}function respondWithResult(_0x3e928a,_0x592d4b){_0x592d4b=_0x592d4b||0xc8;return function(_0x2787f9){if(_0x2787f9){return _0x3e928a[_0x05d2('0x1d')](_0x592d4b)[_0x05d2('0x1e')](_0x2787f9);}};}function respondWithFilteredResult(_0x1950d8,_0x2b18f8){return function(_0x388773){if(_0x388773){var _0x1e5790=typeof _0x2b18f8[_0x05d2('0x1f')]===_0x05d2('0x20')&&typeof _0x2b18f8[_0x05d2('0x21')]===_0x05d2('0x20');var _0x95798f=_0x388773[_0x05d2('0x22')];var _0x429a5e=_0x1e5790?0x0:_0x2b18f8[_0x05d2('0x1f')];var _0x3e6fd4=_0x1e5790?_0x388773[_0x05d2('0x22')]:_0x2b18f8['offset']+_0x2b18f8[_0x05d2('0x21')];var _0x5af169;if(_0x3e6fd4>=_0x95798f){_0x3e6fd4=_0x95798f;_0x5af169=0xc8;}else{_0x5af169=0xce;}_0x1950d8[_0x05d2('0x1d')](_0x5af169);return _0x1950d8[_0x05d2('0x23')]('Content-Range',_0x429a5e+'-'+_0x3e6fd4+'/'+_0x95798f)[_0x05d2('0x1e')](_0x388773);}return null;};}function patchUpdates(_0xc9c435){return function(_0x19c4ca){try{jsonpatch[_0x05d2('0x24')](_0x19c4ca,_0xc9c435,!![]);}catch(_0x26af8d){return BPromise[_0x05d2('0x25')](_0x26af8d);}return _0x19c4ca[_0x05d2('0x26')]();};}function saveUpdates(_0x465c62,_0x372082){return function(_0x2ee135){if(_0x2ee135){return _0x2ee135[_0x05d2('0x27')](_0x465c62)[_0x05d2('0x28')](function(_0x2c5507){return _0x2c5507;});}return null;};}function removeEntity(_0x17c97f,_0x41d455){return function(_0x81e512){if(_0x81e512){return _0x81e512[_0x05d2('0x29')]()[_0x05d2('0x28')](function(){var _0x450699=_0x81e512['get']({'plain':!![]});var _0x36dbd9=_0x05d2('0x2a');return db['UserProfileResource'][_0x05d2('0x29')]({'where':{'type':_0x36dbd9,'resourceId':_0x450699['id']}})[_0x05d2('0x28')](function(){return _0x81e512;});})['then'](function(){_0x17c97f[_0x05d2('0x1d')](0xcc)['end']();});}};}function handleEntityNotFound(_0x4a4bef,_0xa61486){return function(_0x95c203){if(!_0x95c203){_0x4a4bef[_0x05d2('0x1c')](0x194);}return _0x95c203;};}function handleError(_0x3a196e,_0x15237e){_0x15237e=_0x15237e||0x1f4;return function(_0x5aeac4){logger['error'](_0x5aeac4[_0x05d2('0x2b')]);if(_0x5aeac4[_0x05d2('0x2c')]){delete _0x5aeac4[_0x05d2('0x2c')];}_0x3a196e['status'](_0x15237e)['send'](_0x5aeac4);};}exports[_0x05d2('0x2d')]=function(_0x488f4b,_0x205ffa){var _0x90d253={},_0x502cd7={},_0x14b5d9={'count':0x0,'rows':[]};var _0x15b8f3=_[_0x05d2('0x2e')](db[_0x05d2('0x2f')]['rawAttributes'],function(_0x1bd60d){return{'name':_0x1bd60d[_0x05d2('0x30')],'type':_0x1bd60d[_0x05d2('0x31')][_0x05d2('0x32')]};});_0x502cd7[_0x05d2('0x33')]=_['map'](_0x15b8f3,'name');_0x502cd7[_0x05d2('0x34')]=_['keys'](_0x488f4b[_0x05d2('0x34')]);_0x502cd7['filters']=_[_0x05d2('0x35')](_0x502cd7[_0x05d2('0x33')],_0x502cd7[_0x05d2('0x34')]);_0x90d253[_0x05d2('0x36')]=_[_0x05d2('0x35')](_0x502cd7[_0x05d2('0x33')],qs['fields'](_0x488f4b[_0x05d2('0x34')][_0x05d2('0x37')]));_0x90d253[_0x05d2('0x36')]=_0x90d253[_0x05d2('0x36')]['length']?_0x90d253['attributes']:_0x502cd7['model'];if(!_0x488f4b[_0x05d2('0x34')][_0x05d2('0x38')](_0x05d2('0x39'))){_0x90d253['limit']=qs[_0x05d2('0x21')](_0x488f4b['query'][_0x05d2('0x21')]);_0x90d253['offset']=qs[_0x05d2('0x1f')](_0x488f4b[_0x05d2('0x34')]['offset']);}_0x90d253['order']=qs['sort'](_0x488f4b[_0x05d2('0x34')][_0x05d2('0x3a')]);_0x90d253[_0x05d2('0x3b')]=qs[_0x05d2('0x3c')](_[_0x05d2('0x3d')](_0x488f4b[_0x05d2('0x34')],_0x502cd7[_0x05d2('0x3c')]),_0x15b8f3);if(_0x488f4b[_0x05d2('0x34')][_0x05d2('0x3e')]){_0x90d253[_0x05d2('0x3b')]=_[_0x05d2('0x3f')](_0x90d253[_0x05d2('0x3b')],{'$or':_[_0x05d2('0x2e')](_0x15b8f3,function(_0x417f27){if(_0x417f27[_0x05d2('0x31')]!==_0x05d2('0x40')){var _0x58e370={};_0x58e370[_0x417f27[_0x05d2('0x2c')]]={'$like':'%'+_0x488f4b[_0x05d2('0x34')]['filter']+'%'};return _0x58e370;}})});}_0x90d253=_['merge']({},_0x90d253,_0x488f4b[_0x05d2('0x41')]);var _0x3c02d3={'where':_0x90d253[_0x05d2('0x3b')]};return db[_0x05d2('0x2f')]['count'](_0x3c02d3)[_0x05d2('0x28')](function(_0x6126ba){_0x14b5d9['count']=_0x6126ba;if(_0x488f4b['query'][_0x05d2('0x42')]){_0x90d253[_0x05d2('0x43')]=[{'all':!![]}];}return db['Dashboard'][_0x05d2('0x44')](_0x90d253);})[_0x05d2('0x28')](function(_0x52ac38){_0x14b5d9[_0x05d2('0x45')]=_0x52ac38;return _0x14b5d9;})['then'](respondWithFilteredResult(_0x205ffa,_0x90d253))['catch'](handleError(_0x205ffa,null));};exports['show']=function(_0x28680d,_0x6faf41){var _0x41a5a9={'raw':![],'where':{'id':_0x28680d['params']['id']}},_0x2bb260={};_0x2bb260[_0x05d2('0x33')]=_[_0x05d2('0x46')](db[_0x05d2('0x2f')]['rawAttributes']);_0x2bb260[_0x05d2('0x34')]=_['keys'](_0x28680d[_0x05d2('0x34')]);_0x2bb260[_0x05d2('0x3c')]=_[_0x05d2('0x35')](_0x2bb260['model'],_0x2bb260[_0x05d2('0x34')]);_0x41a5a9['attributes']=_[_0x05d2('0x35')](_0x2bb260[_0x05d2('0x33')],qs[_0x05d2('0x37')](_0x28680d[_0x05d2('0x34')][_0x05d2('0x37')]));_0x41a5a9[_0x05d2('0x36')]=_0x41a5a9[_0x05d2('0x36')][_0x05d2('0x47')]?_0x41a5a9[_0x05d2('0x36')]:_0x2bb260[_0x05d2('0x33')];if(_0x28680d[_0x05d2('0x34')][_0x05d2('0x42')]){_0x41a5a9[_0x05d2('0x43')]=[{'all':!![]}];}_0x41a5a9=_[_0x05d2('0x3f')]({},_0x41a5a9,_0x28680d[_0x05d2('0x41')]);return db[_0x05d2('0x2f')]['find'](_0x41a5a9)[_0x05d2('0x28')](handleEntityNotFound(_0x6faf41,null))[_0x05d2('0x28')](respondWithResult(_0x6faf41,null))[_0x05d2('0x48')](handleError(_0x6faf41,null));};exports[_0x05d2('0x49')]=function(_0xe10ebe,_0x167bc4){return db[_0x05d2('0x2f')]['create'](_0xe10ebe['body'],{})[_0x05d2('0x28')](function(_0x36500b){var _0x1c46e9=_0xe10ebe[_0x05d2('0x4a')]['get']({'plain':!![]});if(!_0x1c46e9)throw new Error(_0x05d2('0x4b'));if(_0x1c46e9[_0x05d2('0x4c')]===_0x05d2('0x4a')){var _0x2180ec=_0x36500b[_0x05d2('0x4d')]({'plain':!![]});var _0x578b40=_0x05d2('0x2a');return db['UserProfileSection'][_0x05d2('0x4e')]({'where':{'name':_0x578b40,'userProfileId':_0x1c46e9[_0x05d2('0x4f')]},'raw':!![]})[_0x05d2('0x28')](function(_0x2483c4){if(_0x2483c4&&_0x2483c4[_0x05d2('0x50')]===0x0){return db[_0x05d2('0x51')][_0x05d2('0x49')]({'name':_0x2180ec[_0x05d2('0x2c')],'resourceId':_0x2180ec['id'],'type':_0x2483c4[_0x05d2('0x2c')],'sectionId':_0x2483c4['id']},{})[_0x05d2('0x28')](function(){return _0x36500b;});}else{return _0x36500b;}})[_0x05d2('0x48')](function(_0x1cb94f){logger[_0x05d2('0x52')](_0x05d2('0x53'),_0x1cb94f);throw _0x1cb94f;});}return _0x36500b;})['then'](respondWithResult(_0x167bc4,0xc9))['catch'](handleError(_0x167bc4,null));};exports[_0x05d2('0x54')]=function(_0x9b5471,_0x2a47a6){var _0x328d24={'where':{'id':_0x9b5471[_0x05d2('0x55')]['id']}},_0x2dc84b={};_0x2dc84b[_0x05d2('0x33')]=_[_0x05d2('0x46')](db[_0x05d2('0x2f')][_0x05d2('0x56')]);_0x328d24[_0x05d2('0x36')]=_[_0x05d2('0x35')](_0x2dc84b[_0x05d2('0x33')],qs[_0x05d2('0x37')](_0x9b5471[_0x05d2('0x34')][_0x05d2('0x37')]));_0x328d24[_0x05d2('0x36')]=_0x328d24[_0x05d2('0x36')]['length']?_0x328d24[_0x05d2('0x36')]:_0x2dc84b[_0x05d2('0x33')];if(_0x9b5471[_0x05d2('0x34')][_0x05d2('0x42')]){_0x328d24[_0x05d2('0x43')]=[{'all':!![]}];}_0x328d24=_['merge']({},_0x328d24,_0x9b5471[_0x05d2('0x41')]);return db[_0x05d2('0x2f')][_0x05d2('0x4e')](_0x328d24)['then'](handleEntityNotFound(_0x2a47a6,null))['then'](function(_0x1a6118){if(_0x1a6118){var _0x24f3a3=_0x1a6118[_0x05d2('0x4d')]({'plain':!![]});_0x24f3a3=qs['omit'](_0x24f3a3,['id',_0x05d2('0x57'),_0x05d2('0x58')]);_0x9b5471['body']=_[_0x05d2('0x59')](_0x9b5471[_0x05d2('0x5a')],['id','createdAt',_0x05d2('0x58')]);return db[_0x05d2('0x2f')][_0x05d2('0x49')](_['merge'](_0x24f3a3,_0x9b5471['body']),{'include':_0x9b5471[_0x05d2('0x34')]['includeAll']?[{'all':!![]}]:undefined})[_0x05d2('0x28')](function(_0x3bcfba){var _0x55e9c8=_0x9b5471['user']['get']({'plain':!![]});if(!_0x55e9c8)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0x55e9c8[_0x05d2('0x4c')]===_0x05d2('0x4a')){var _0xdcab90=_0x3bcfba[_0x05d2('0x4d')]({'plain':!![]});var _0x415192=_0x05d2('0x2a');return db[_0x05d2('0x5b')]['find']({'where':{'name':_0x415192,'userProfileId':_0x55e9c8[_0x05d2('0x4f')]},'raw':!![]})['then'](function(_0x4f7d20){if(_0x4f7d20&&_0x4f7d20['autoAssociation']===0x0){return db[_0x05d2('0x51')][_0x05d2('0x49')]({'name':_0xdcab90[_0x05d2('0x2c')],'resourceId':_0xdcab90['id'],'type':_0x4f7d20[_0x05d2('0x2c')],'sectionId':_0x4f7d20['id']},{})[_0x05d2('0x28')](function(){return _0x3bcfba;});}else{return _0x3bcfba;}})[_0x05d2('0x48')](function(_0x2b1722){logger[_0x05d2('0x52')](_0x05d2('0x53'),_0x2b1722);throw _0x2b1722;});}return _0x3bcfba;});}})[_0x05d2('0x28')](respondWithResult(_0x2a47a6,0xc9))[_0x05d2('0x48')](handleError(_0x2a47a6,null));};exports[_0x05d2('0x27')]=function(_0x323aed,_0x4aea4b){if(_0x323aed['body']['id']){delete _0x323aed[_0x05d2('0x5a')]['id'];}return db[_0x05d2('0x2f')][_0x05d2('0x4e')]({'where':{'id':_0x323aed[_0x05d2('0x55')]['id']}})[_0x05d2('0x28')](handleEntityNotFound(_0x4aea4b,null))[_0x05d2('0x28')](saveUpdates(_0x323aed[_0x05d2('0x5a')],null))[_0x05d2('0x28')](respondWithResult(_0x4aea4b,null))[_0x05d2('0x48')](handleError(_0x4aea4b,null));};exports[_0x05d2('0x29')]=function(_0x4c59a4,_0x14cb6d){return db['Dashboard'][_0x05d2('0x4e')]({'where':{'id':_0x4c59a4['params']['id']}})[_0x05d2('0x28')](handleEntityNotFound(_0x14cb6d,null))[_0x05d2('0x28')](removeEntity(_0x14cb6d,null))[_0x05d2('0x48')](handleError(_0x14cb6d,null));};function widgetAttributes(_0x36cef5){try{switch(_0x36cef5[_0x05d2('0x31')]){case _0x05d2('0x5c'):return[{'name':_0x05d2('0x5d'),'value':_0x36cef5[_0x05d2('0x5d')]||(_0x36cef5[_0x05d2('0x5e')]&&_0x36cef5[_0x05d2('0x5e')][0x0]?_0x36cef5['attrs'][0x0][_0x05d2('0x5f')]:undefined)||_0x05d2('0x60')}];case _0x05d2('0x61'):return[{'name':_0x05d2('0x62'),'value':_0x36cef5[_0x05d2('0x62')]||(_0x36cef5[_0x05d2('0x5e')]&&_0x36cef5['attrs'][0x0]?_0x36cef5[_0x05d2('0x5e')][0x0][_0x05d2('0x5f')]:undefined)||''}];case _0x05d2('0x63'):return[{'name':_0x05d2('0x64'),'value':_0x36cef5[_0x05d2('0x64')]||(_0x36cef5['attrs']&&_0x36cef5[_0x05d2('0x5e')][0x0]?_0x36cef5[_0x05d2('0x5e')][0x0][_0x05d2('0x5f')]:undefined)||'HH:mm:ss'},{'name':'attrTimezone','value':_0x36cef5[_0x05d2('0x65')]||(_0x36cef5[_0x05d2('0x5e')]&&_0x36cef5[_0x05d2('0x5e')][0x1]?_0x36cef5[_0x05d2('0x5e')][0x1][_0x05d2('0x5f')]:undefined)||_0x05d2('0x66')},{'name':_0x05d2('0x67'),'value':_0x36cef5[_0x05d2('0x67')]||(_0x36cef5['attrs']&&_0x36cef5[_0x05d2('0x5e')][0x2]?_0x36cef5[_0x05d2('0x5e')][0x2][_0x05d2('0x5f')]:undefined)||0xc}];case _0x05d2('0x68'):return[{'name':_0x05d2('0x69'),'value':_0x36cef5['attrMetric']||(_0x36cef5[_0x05d2('0x5e')]&&_0x36cef5[_0x05d2('0x5e')][0x0]?_0x36cef5[_0x05d2('0x5e')][0x0][_0x05d2('0x5f')]:undefined)||_0x05d2('0x6a')},{'name':_0x05d2('0x6b'),'value':_0x36cef5[_0x05d2('0x6b')]||(_0x36cef5['attrs']&&_0x36cef5['attrs'][0x1]?_0x36cef5[_0x05d2('0x5e')][0x1][_0x05d2('0x5f')]:undefined)||[]},{'name':_0x05d2('0x67'),'value':_0x36cef5[_0x05d2('0x67')]||(_0x36cef5['attrs']&&_0x36cef5[_0x05d2('0x5e')][0x2]?_0x36cef5[_0x05d2('0x5e')][0x2][_0x05d2('0x5f')]:undefined)||0x14}];case _0x05d2('0x6c'):case _0x05d2('0x6d'):return[{'name':_0x05d2('0x6e'),'value':_0x36cef5[_0x05d2('0x6e')]||(_0x36cef5[_0x05d2('0x5e')]&&_0x36cef5[_0x05d2('0x5e')][0x0]?_0x36cef5['attrs'][0x0]['value']:undefined)||'total'},{'name':_0x05d2('0x6f'),'value':_0x36cef5[_0x05d2('0x6f')]||(_0x36cef5[_0x05d2('0x5e')]&&_0x36cef5[_0x05d2('0x5e')][0x1]?_0x36cef5['attrs'][0x1][_0x05d2('0x5f')]:undefined)||null},{'name':_0x05d2('0x70'),'value':_0x36cef5[_0x05d2('0x70')]||(_0x36cef5[_0x05d2('0x5e')]&&_0x36cef5[_0x05d2('0x5e')][0x2]?_0x36cef5[_0x05d2('0x5e')][0x2][_0x05d2('0x5f')]:undefined)||null},{'name':'attrVoiceQueues','value':_0x36cef5[_0x05d2('0x6b')]||(_0x36cef5['attrs']&&_0x36cef5['attrs'][0x3]?_0x36cef5[_0x05d2('0x5e')][0x3][_0x05d2('0x5f')]:undefined)||[]}];case _0x05d2('0x71'):return[{'name':_0x05d2('0x72'),'type':_0x36cef5[_0x05d2('0x73')]||(_0x36cef5[_0x05d2('0x5e')]&&_0x36cef5['attrs'][0x0]?_0x36cef5[_0x05d2('0x5e')][0x0][_0x05d2('0x31')]:undefined)||null,'value':_0x36cef5[_0x05d2('0x72')]||(_0x36cef5['attrs']&&_0x36cef5['attrs'][0x0]?_0x36cef5[_0x05d2('0x5e')][0x0][_0x05d2('0x5f')]:undefined)||null},{'name':'attrRefresh','value':_0x36cef5[_0x05d2('0x74')]||(_0x36cef5[_0x05d2('0x5e')]&&_0x36cef5[_0x05d2('0x5e')][0x1]?_0x36cef5[_0x05d2('0x5e')][0x1][_0x05d2('0x5f')]:undefined)||0x0}];default:return[];}}catch(_0x43ae52){logger[_0x05d2('0x52')](_0x05d2('0x75'),JSON[_0x05d2('0x76')](_0x43ae52));return[];}}exports[_0x05d2('0x77')]=function(_0x504f8b,_0x190bcc,_0x4bb0b6){if(_0x504f8b['body']['id']){delete _0x504f8b[_0x05d2('0x5a')]['id'];}return db[_0x05d2('0x2f')][_0x05d2('0x4e')]({'where':{'id':_0x504f8b[_0x05d2('0x55')]['id']}})[_0x05d2('0x28')](handleEntityNotFound(_0x190bcc,null))[_0x05d2('0x28')](function(_0x379c4e){if(_0x379c4e){_0x504f8b[_0x05d2('0x5a')]['DashboardId']=_0x379c4e['id'];_0x504f8b['body'][_0x05d2('0x5e')]=widgetAttributes(_0x504f8b[_0x05d2('0x5a')]);return db['DashboardItem'][_0x05d2('0x49')](_0x504f8b[_0x05d2('0x5a')]);}})['then'](respondWithResult(_0x190bcc,null))[_0x05d2('0x48')](handleError(_0x190bcc,null));};exports['getItems']=function(_0x15bd63,_0x5e290f,_0x165a3e){var _0x4e70e8={};var _0x5d55e4={};var _0x504591;var _0x4753c0;return db[_0x05d2('0x2f')][_0x05d2('0x78')]({'where':{'id':_0x15bd63[_0x05d2('0x55')]['id']}})[_0x05d2('0x28')](handleEntityNotFound(_0x5e290f,null))[_0x05d2('0x28')](function(_0x3115ad){if(_0x3115ad){_0x504591=_0x3115ad;_0x5d55e4[_0x05d2('0x33')]=_[_0x05d2('0x46')](db[_0x05d2('0x79')][_0x05d2('0x56')]);_0x5d55e4[_0x05d2('0x34')]=_[_0x05d2('0x46')](_0x15bd63['query']);_0x5d55e4[_0x05d2('0x3c')]=_[_0x05d2('0x35')](_0x5d55e4[_0x05d2('0x33')],_0x5d55e4['query']);_0x4e70e8[_0x05d2('0x36')]=_[_0x05d2('0x35')](_0x5d55e4[_0x05d2('0x33')],qs[_0x05d2('0x37')](_0x15bd63['query'][_0x05d2('0x37')]));_0x4e70e8[_0x05d2('0x36')]=_0x4e70e8[_0x05d2('0x36')][_0x05d2('0x47')]?_0x4e70e8[_0x05d2('0x36')]:_0x5d55e4['model'];_0x4e70e8[_0x05d2('0x7a')]=qs[_0x05d2('0x3a')](_0x15bd63['query']['sort']);_0x4e70e8[_0x05d2('0x3b')]=qs['filters'](_[_0x05d2('0x3d')](_0x15bd63[_0x05d2('0x34')],_0x5d55e4[_0x05d2('0x3c')]));if(_0x15bd63['query'][_0x05d2('0x3e')]){_0x4e70e8[_0x05d2('0x3b')]=_['merge'](_0x4e70e8[_0x05d2('0x3b')],{'$or':_[_0x05d2('0x2e')](_0x4e70e8['attributes'],function(_0x1dd086){var _0x5a5dbe={};_0x5a5dbe[_0x1dd086]={'$like':'%'+_0x15bd63['query'][_0x05d2('0x3e')]+'%'};return _0x5a5dbe;})});}_0x4e70e8=_[_0x05d2('0x3f')]({},_0x4e70e8,_0x15bd63[_0x05d2('0x41')]);return _0x504591['getItems'](_0x4e70e8);}})[_0x05d2('0x28')](function(_0x5612e9){if(_0x5612e9){_0x4753c0=_0x5612e9[_0x05d2('0x47')];if(!_0x15bd63['query']['hasOwnProperty'](_0x05d2('0x39'))){_0x4e70e8[_0x05d2('0x21')]=qs[_0x05d2('0x21')](_0x15bd63[_0x05d2('0x34')][_0x05d2('0x21')]);_0x4e70e8[_0x05d2('0x1f')]=qs[_0x05d2('0x1f')](_0x15bd63['query'][_0x05d2('0x1f')]);}return _0x504591[_0x05d2('0x7b')](_0x4e70e8);}})[_0x05d2('0x28')](function(_0x79e3a3){if(_0x79e3a3){return _0x79e3a3?{'count':_0x4753c0,'rows':_0x79e3a3}:null;}})['then'](respondWithResult(_0x5e290f,null))['catch'](handleError(_0x5e290f,null));};
\ No newline at end of file
+var _0xfc5b=['bluebird','util','path','to-csv','ejs','fs-extra','lodash','squel','jsforce','desk.js','ioredis','../../components/auth/service','../../components/parsers/qs','../../config/logger','api','../../config/utils','../../config/environment','../../mysqldb','redis','defaults','localhost','socket.io-emitter','./dashboard.socket','register','sendStatus','end','offset','undefined','limit','count','status','set','Content-Range','apply','reject','save','update','then','destroy','get','CustomDashboards','UserProfileResource','error','stack','name','send','index','Dashboard','rawAttributes','fieldName','type','key','model','map','keys','query','filters','intersection','attributes','fields','order','sort','pick','filter','merge','where','VIRTUAL','options','includeAll','findAll','rows','catch','show','params','length','include','find','create','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','user','userProfileId','clone','body','omit','createdAt','UserProfileSection','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','iframe','attrUrl','attrs','value','https://','attrPath','clock','attrHourFormat','HH:mm:ss','attrTimezone','attrFontSize','counter','attrMetric','total','attrVoiceQueues','multibar-chart','attrSerie1','attrSerie2','attrSerie3','web-report','attrReport','reportType','attrRefresh','widgetAttributes:\x20%s','stringify','addItem','DashboardId','getItems','findOne','DashboardItem','hasOwnProperty','nolimit','eml-format','zip-dir','fast-json-patch','request-promise','moment'];(function(_0x3d75b6,_0x1363c7){var _0x312494=function(_0x179309){while(--_0x179309){_0x3d75b6['push'](_0x3d75b6['shift']());}};_0x312494(++_0x1363c7);}(_0xfc5b,0x79));var _0xbfc5=function(_0x6ac2b9,_0x37c01d){_0x6ac2b9=_0x6ac2b9-0x0;var _0x1b2628=_0xfc5b[_0x6ac2b9];return _0x1b2628;};'use strict';var emlformat=require(_0xbfc5('0x0'));var rimraf=require('rimraf');var zipdir=require(_0xbfc5('0x1'));var jsonpatch=require(_0xbfc5('0x2'));var rp=require(_0xbfc5('0x3'));var moment=require(_0xbfc5('0x4'));var BPromise=require(_0xbfc5('0x5'));var Mustache=require('mustache');var util=require(_0xbfc5('0x6'));var path=require(_0xbfc5('0x7'));var sox=require('sox');var csv=require(_0xbfc5('0x8'));var ejs=require(_0xbfc5('0x9'));var fs=require('fs');var fs_extra=require(_0xbfc5('0xa'));var _=require(_0xbfc5('0xb'));var squel=require(_0xbfc5('0xc'));var crypto=require('crypto');var jsforce=require(_0xbfc5('0xd'));var deskjs=require(_0xbfc5('0xe'));var toCsv=require(_0xbfc5('0x8'));var querystring=require('querystring');var Papa=require('papaparse');var Redis=require(_0xbfc5('0xf'));var authService=require(_0xbfc5('0x10'));var qs=require(_0xbfc5('0x11'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require('../../config/license/hardware');var logger=require(_0xbfc5('0x12'))(_0xbfc5('0x13'));var utils=require(_0xbfc5('0x14'));var config=require(_0xbfc5('0x15'));var licenseUtil=require('../../config/license/util');var db=require(_0xbfc5('0x16'))['db'];config[_0xbfc5('0x17')]=_[_0xbfc5('0x18')](config[_0xbfc5('0x17')],{'host':_0xbfc5('0x19'),'port':0x18eb});var socket=require(_0xbfc5('0x1a'))(new Redis(config['redis']));require(_0xbfc5('0x1b'))[_0xbfc5('0x1c')](socket);function respondWithStatusCode(_0x3d4465,_0x4a4eaf){_0x4a4eaf=_0x4a4eaf||0xcc;return function(_0x437bdf){if(_0x437bdf){return _0x3d4465[_0xbfc5('0x1d')](_0x4a4eaf);}return _0x3d4465['status'](_0x4a4eaf)[_0xbfc5('0x1e')]();};}function respondWithResult(_0x2f5dcf,_0x4fac81){_0x4fac81=_0x4fac81||0xc8;return function(_0x5ff5aa){if(_0x5ff5aa){return _0x2f5dcf['status'](_0x4fac81)['json'](_0x5ff5aa);}};}function respondWithFilteredResult(_0x113759,_0x4bb880){return function(_0x16fe85){if(_0x16fe85){var _0x4289cb=typeof _0x4bb880[_0xbfc5('0x1f')]===_0xbfc5('0x20')&&typeof _0x4bb880[_0xbfc5('0x21')]===_0xbfc5('0x20');var _0x3d7da8=_0x16fe85[_0xbfc5('0x22')];var _0xed601e=_0x4289cb?0x0:_0x4bb880[_0xbfc5('0x1f')];var _0x49c25e=_0x4289cb?_0x16fe85[_0xbfc5('0x22')]:_0x4bb880[_0xbfc5('0x1f')]+_0x4bb880[_0xbfc5('0x21')];var _0x3b59fa;if(_0x49c25e>=_0x3d7da8){_0x49c25e=_0x3d7da8;_0x3b59fa=0xc8;}else{_0x3b59fa=0xce;}_0x113759[_0xbfc5('0x23')](_0x3b59fa);return _0x113759[_0xbfc5('0x24')](_0xbfc5('0x25'),_0xed601e+'-'+_0x49c25e+'/'+_0x3d7da8)['json'](_0x16fe85);}return null;};}function patchUpdates(_0xa0c0bd){return function(_0x1437b9){try{jsonpatch[_0xbfc5('0x26')](_0x1437b9,_0xa0c0bd,!![]);}catch(_0x1c191b){return BPromise[_0xbfc5('0x27')](_0x1c191b);}return _0x1437b9[_0xbfc5('0x28')]();};}function saveUpdates(_0x147fb6,_0x47a069){return function(_0x22580a){if(_0x22580a){return _0x22580a[_0xbfc5('0x29')](_0x147fb6)[_0xbfc5('0x2a')](function(_0x465725){return _0x465725;});}return null;};}function removeEntity(_0x6a6ec0,_0x42a795){return function(_0x29aaf1){if(_0x29aaf1){return _0x29aaf1[_0xbfc5('0x2b')]()[_0xbfc5('0x2a')](function(){var _0x5c1fd1=_0x29aaf1[_0xbfc5('0x2c')]({'plain':!![]});var _0x2e4db7=_0xbfc5('0x2d');return db[_0xbfc5('0x2e')]['destroy']({'where':{'type':_0x2e4db7,'resourceId':_0x5c1fd1['id']}})['then'](function(){return _0x29aaf1;});})[_0xbfc5('0x2a')](function(){_0x6a6ec0[_0xbfc5('0x23')](0xcc)[_0xbfc5('0x1e')]();});}};}function handleEntityNotFound(_0x31705f,_0x2f3e43){return function(_0x1a752b){if(!_0x1a752b){_0x31705f['sendStatus'](0x194);}return _0x1a752b;};}function handleError(_0x14012a,_0x29e186){_0x29e186=_0x29e186||0x1f4;return function(_0x2a4500){logger[_0xbfc5('0x2f')](_0x2a4500[_0xbfc5('0x30')]);if(_0x2a4500['name']){delete _0x2a4500[_0xbfc5('0x31')];}_0x14012a[_0xbfc5('0x23')](_0x29e186)[_0xbfc5('0x32')](_0x2a4500);};}exports[_0xbfc5('0x33')]=function(_0x30fbe0,_0x178140){var _0x55fe79={},_0x37d10c={},_0x5d7c55={'count':0x0,'rows':[]};var _0x3d6bab=_['map'](db[_0xbfc5('0x34')][_0xbfc5('0x35')],function(_0x5eab94){return{'name':_0x5eab94[_0xbfc5('0x36')],'type':_0x5eab94[_0xbfc5('0x37')][_0xbfc5('0x38')]};});_0x37d10c[_0xbfc5('0x39')]=_[_0xbfc5('0x3a')](_0x3d6bab,_0xbfc5('0x31'));_0x37d10c['query']=_[_0xbfc5('0x3b')](_0x30fbe0[_0xbfc5('0x3c')]);_0x37d10c[_0xbfc5('0x3d')]=_[_0xbfc5('0x3e')](_0x37d10c['model'],_0x37d10c['query']);_0x55fe79[_0xbfc5('0x3f')]=_[_0xbfc5('0x3e')](_0x37d10c[_0xbfc5('0x39')],qs[_0xbfc5('0x40')](_0x30fbe0[_0xbfc5('0x3c')]['fields']));_0x55fe79[_0xbfc5('0x3f')]=_0x55fe79['attributes']['length']?_0x55fe79[_0xbfc5('0x3f')]:_0x37d10c[_0xbfc5('0x39')];if(!_0x30fbe0['query']['hasOwnProperty']('nolimit')){_0x55fe79[_0xbfc5('0x21')]=qs[_0xbfc5('0x21')](_0x30fbe0['query'][_0xbfc5('0x21')]);_0x55fe79[_0xbfc5('0x1f')]=qs['offset'](_0x30fbe0[_0xbfc5('0x3c')][_0xbfc5('0x1f')]);}_0x55fe79[_0xbfc5('0x41')]=qs[_0xbfc5('0x42')](_0x30fbe0[_0xbfc5('0x3c')]['sort']);_0x55fe79['where']=qs['filters'](_[_0xbfc5('0x43')](_0x30fbe0[_0xbfc5('0x3c')],_0x37d10c[_0xbfc5('0x3d')]),_0x3d6bab);if(_0x30fbe0['query'][_0xbfc5('0x44')]){_0x55fe79['where']=_[_0xbfc5('0x45')](_0x55fe79[_0xbfc5('0x46')],{'$or':_['map'](_0x3d6bab,function(_0x59dda7){if(_0x59dda7[_0xbfc5('0x37')]!==_0xbfc5('0x47')){var _0x33098a={};_0x33098a[_0x59dda7[_0xbfc5('0x31')]]={'$like':'%'+_0x30fbe0[_0xbfc5('0x3c')][_0xbfc5('0x44')]+'%'};return _0x33098a;}})});}_0x55fe79=_[_0xbfc5('0x45')]({},_0x55fe79,_0x30fbe0[_0xbfc5('0x48')]);var _0xc80bc7={'where':_0x55fe79[_0xbfc5('0x46')]};return db[_0xbfc5('0x34')]['count'](_0xc80bc7)[_0xbfc5('0x2a')](function(_0x40baec){_0x5d7c55[_0xbfc5('0x22')]=_0x40baec;if(_0x30fbe0[_0xbfc5('0x3c')][_0xbfc5('0x49')]){_0x55fe79['include']=[{'all':!![]}];}return db[_0xbfc5('0x34')][_0xbfc5('0x4a')](_0x55fe79);})[_0xbfc5('0x2a')](function(_0x41cc4c){_0x5d7c55[_0xbfc5('0x4b')]=_0x41cc4c;return _0x5d7c55;})[_0xbfc5('0x2a')](respondWithFilteredResult(_0x178140,_0x55fe79))[_0xbfc5('0x4c')](handleError(_0x178140,null));};exports[_0xbfc5('0x4d')]=function(_0x344f8e,_0x510c50){var _0x518e15={'raw':![],'where':{'id':_0x344f8e[_0xbfc5('0x4e')]['id']}},_0x18a93b={};_0x18a93b[_0xbfc5('0x39')]=_['keys'](db[_0xbfc5('0x34')][_0xbfc5('0x35')]);_0x18a93b[_0xbfc5('0x3c')]=_[_0xbfc5('0x3b')](_0x344f8e['query']);_0x18a93b['filters']=_['intersection'](_0x18a93b[_0xbfc5('0x39')],_0x18a93b[_0xbfc5('0x3c')]);_0x518e15[_0xbfc5('0x3f')]=_[_0xbfc5('0x3e')](_0x18a93b['model'],qs[_0xbfc5('0x40')](_0x344f8e[_0xbfc5('0x3c')][_0xbfc5('0x40')]));_0x518e15[_0xbfc5('0x3f')]=_0x518e15[_0xbfc5('0x3f')][_0xbfc5('0x4f')]?_0x518e15[_0xbfc5('0x3f')]:_0x18a93b[_0xbfc5('0x39')];if(_0x344f8e[_0xbfc5('0x3c')]['includeAll']){_0x518e15[_0xbfc5('0x50')]=[{'all':!![]}];}_0x518e15=_['merge']({},_0x518e15,_0x344f8e[_0xbfc5('0x48')]);return db[_0xbfc5('0x34')][_0xbfc5('0x51')](_0x518e15)[_0xbfc5('0x2a')](handleEntityNotFound(_0x510c50,null))[_0xbfc5('0x2a')](respondWithResult(_0x510c50,null))[_0xbfc5('0x4c')](handleError(_0x510c50,null));};exports[_0xbfc5('0x52')]=function(_0x1fd27e,_0x2c22da){return db['Dashboard'][_0xbfc5('0x52')](_0x1fd27e['body'],{})[_0xbfc5('0x2a')](function(_0xfeb96e){var _0x120dfe=_0x1fd27e['user'][_0xbfc5('0x2c')]({'plain':!![]});if(!_0x120dfe)throw new Error(_0xbfc5('0x53'));if(_0x120dfe[_0xbfc5('0x54')]===_0xbfc5('0x55')){var _0x3a9a2d=_0xfeb96e[_0xbfc5('0x2c')]({'plain':!![]});var _0x2f9554=_0xbfc5('0x2d');return db['UserProfileSection'][_0xbfc5('0x51')]({'where':{'name':_0x2f9554,'userProfileId':_0x120dfe[_0xbfc5('0x56')]},'raw':!![]})['then'](function(_0x25eae3){if(_0x25eae3&&_0x25eae3['autoAssociation']===0x0){return db[_0xbfc5('0x2e')][_0xbfc5('0x52')]({'name':_0x3a9a2d[_0xbfc5('0x31')],'resourceId':_0x3a9a2d['id'],'type':_0x25eae3['name'],'sectionId':_0x25eae3['id']},{})[_0xbfc5('0x2a')](function(){return _0xfeb96e;});}else{return _0xfeb96e;}})[_0xbfc5('0x4c')](function(_0x38950d){logger[_0xbfc5('0x2f')]('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0x38950d);throw _0x38950d;});}return _0xfeb96e;})[_0xbfc5('0x2a')](respondWithResult(_0x2c22da,0xc9))[_0xbfc5('0x4c')](handleError(_0x2c22da,null));};exports[_0xbfc5('0x57')]=function(_0xbd61c9,_0x139ec5){var _0x539b7b={'where':{'id':_0xbd61c9[_0xbfc5('0x4e')]['id']}},_0x28d66c={};_0x28d66c['model']=_['keys'](db['Dashboard'][_0xbfc5('0x35')]);_0x539b7b[_0xbfc5('0x3f')]=_[_0xbfc5('0x3e')](_0x28d66c[_0xbfc5('0x39')],qs['fields'](_0xbd61c9[_0xbfc5('0x3c')][_0xbfc5('0x40')]));_0x539b7b[_0xbfc5('0x3f')]=_0x539b7b[_0xbfc5('0x3f')][_0xbfc5('0x4f')]?_0x539b7b[_0xbfc5('0x3f')]:_0x28d66c[_0xbfc5('0x39')];if(_0xbd61c9[_0xbfc5('0x3c')][_0xbfc5('0x49')]){_0x539b7b[_0xbfc5('0x50')]=[{'all':!![]}];}_0x539b7b=_['merge']({},_0x539b7b,_0xbd61c9[_0xbfc5('0x48')]);return db['Dashboard'][_0xbfc5('0x51')](_0x539b7b)[_0xbfc5('0x2a')](handleEntityNotFound(_0x139ec5,null))[_0xbfc5('0x2a')](function(_0x2fa821){if(_0x2fa821){var _0x236623=_0x2fa821['get']({'plain':!![]});_0x236623=qs['omit'](_0x236623,['id','createdAt','updatedAt']);_0xbd61c9[_0xbfc5('0x58')]=_[_0xbfc5('0x59')](_0xbd61c9[_0xbfc5('0x58')],['id',_0xbfc5('0x5a'),'updatedAt']);return db[_0xbfc5('0x34')][_0xbfc5('0x52')](_[_0xbfc5('0x45')](_0x236623,_0xbd61c9[_0xbfc5('0x58')]),{'include':_0xbd61c9[_0xbfc5('0x3c')][_0xbfc5('0x49')]?[{'all':!![]}]:undefined})[_0xbfc5('0x2a')](function(_0x5514eb){var _0x5342d0=_0xbd61c9['user']['get']({'plain':!![]});if(!_0x5342d0)throw new Error(_0xbfc5('0x53'));if(_0x5342d0['role']===_0xbfc5('0x55')){var _0x2ff732=_0x5514eb[_0xbfc5('0x2c')]({'plain':!![]});var _0x479549=_0xbfc5('0x2d');return db[_0xbfc5('0x5b')][_0xbfc5('0x51')]({'where':{'name':_0x479549,'userProfileId':_0x5342d0[_0xbfc5('0x56')]},'raw':!![]})[_0xbfc5('0x2a')](function(_0x382c11){if(_0x382c11&&_0x382c11[_0xbfc5('0x5c')]===0x0){return db[_0xbfc5('0x2e')][_0xbfc5('0x52')]({'name':_0x2ff732[_0xbfc5('0x31')],'resourceId':_0x2ff732['id'],'type':_0x382c11['name'],'sectionId':_0x382c11['id']},{})['then'](function(){return _0x5514eb;});}else{return _0x5514eb;}})[_0xbfc5('0x4c')](function(_0x478da0){logger['error'](_0xbfc5('0x5d'),_0x478da0);throw _0x478da0;});}return _0x5514eb;});}})[_0xbfc5('0x2a')](respondWithResult(_0x139ec5,0xc9))[_0xbfc5('0x4c')](handleError(_0x139ec5,null));};exports[_0xbfc5('0x29')]=function(_0x3239de,_0x10136d){if(_0x3239de[_0xbfc5('0x58')]['id']){delete _0x3239de[_0xbfc5('0x58')]['id'];}return db[_0xbfc5('0x34')][_0xbfc5('0x51')]({'where':{'id':_0x3239de[_0xbfc5('0x4e')]['id']}})[_0xbfc5('0x2a')](handleEntityNotFound(_0x10136d,null))[_0xbfc5('0x2a')](saveUpdates(_0x3239de[_0xbfc5('0x58')],null))[_0xbfc5('0x2a')](respondWithResult(_0x10136d,null))[_0xbfc5('0x4c')](handleError(_0x10136d,null));};exports[_0xbfc5('0x2b')]=function(_0x5962c4,_0x37ef01){return db[_0xbfc5('0x34')]['find']({'where':{'id':_0x5962c4[_0xbfc5('0x4e')]['id']}})[_0xbfc5('0x2a')](handleEntityNotFound(_0x37ef01,null))[_0xbfc5('0x2a')](removeEntity(_0x37ef01,null))[_0xbfc5('0x4c')](handleError(_0x37ef01,null));};function widgetAttributes(_0x629ff0){try{switch(_0x629ff0[_0xbfc5('0x37')]){case _0xbfc5('0x5e'):return[{'name':_0xbfc5('0x5f'),'value':_0x629ff0['attrUrl']||(_0x629ff0[_0xbfc5('0x60')]&&_0x629ff0[_0xbfc5('0x60')][0x0]?_0x629ff0['attrs'][0x0][_0xbfc5('0x61')]:undefined)||_0xbfc5('0x62')}];case'custom':return[{'name':_0xbfc5('0x63'),'value':_0x629ff0['attrPath']||(_0x629ff0[_0xbfc5('0x60')]&&_0x629ff0[_0xbfc5('0x60')][0x0]?_0x629ff0['attrs'][0x0][_0xbfc5('0x61')]:undefined)||''}];case _0xbfc5('0x64'):return[{'name':_0xbfc5('0x65'),'value':_0x629ff0[_0xbfc5('0x65')]||(_0x629ff0[_0xbfc5('0x60')]&&_0x629ff0['attrs'][0x0]?_0x629ff0[_0xbfc5('0x60')][0x0][_0xbfc5('0x61')]:undefined)||_0xbfc5('0x66')},{'name':_0xbfc5('0x67'),'value':_0x629ff0['attrTimezone']||(_0x629ff0[_0xbfc5('0x60')]&&_0x629ff0[_0xbfc5('0x60')][0x1]?_0x629ff0[_0xbfc5('0x60')][0x1][_0xbfc5('0x61')]:undefined)||'0.00'},{'name':'attrFontSize','value':_0x629ff0[_0xbfc5('0x68')]||(_0x629ff0[_0xbfc5('0x60')]&&_0x629ff0[_0xbfc5('0x60')][0x2]?_0x629ff0[_0xbfc5('0x60')][0x2]['value']:undefined)||0xc}];case _0xbfc5('0x69'):return[{'name':_0xbfc5('0x6a'),'value':_0x629ff0['attrMetric']||(_0x629ff0[_0xbfc5('0x60')]&&_0x629ff0[_0xbfc5('0x60')][0x0]?_0x629ff0['attrs'][0x0]['value']:undefined)||_0xbfc5('0x6b')},{'name':'attrVoiceQueues','value':_0x629ff0[_0xbfc5('0x6c')]||(_0x629ff0['attrs']&&_0x629ff0['attrs'][0x1]?_0x629ff0[_0xbfc5('0x60')][0x1][_0xbfc5('0x61')]:undefined)||[]},{'name':'attrFontSize','value':_0x629ff0['attrFontSize']||(_0x629ff0[_0xbfc5('0x60')]&&_0x629ff0[_0xbfc5('0x60')][0x2]?_0x629ff0[_0xbfc5('0x60')][0x2]['value']:undefined)||0x14}];case _0xbfc5('0x6d'):case'pie-chart':return[{'name':_0xbfc5('0x6e'),'value':_0x629ff0[_0xbfc5('0x6e')]||(_0x629ff0[_0xbfc5('0x60')]&&_0x629ff0[_0xbfc5('0x60')][0x0]?_0x629ff0[_0xbfc5('0x60')][0x0][_0xbfc5('0x61')]:undefined)||'total'},{'name':_0xbfc5('0x6f'),'value':_0x629ff0['attrSerie2']||(_0x629ff0['attrs']&&_0x629ff0[_0xbfc5('0x60')][0x1]?_0x629ff0[_0xbfc5('0x60')][0x1][_0xbfc5('0x61')]:undefined)||null},{'name':_0xbfc5('0x70'),'value':_0x629ff0[_0xbfc5('0x70')]||(_0x629ff0[_0xbfc5('0x60')]&&_0x629ff0[_0xbfc5('0x60')][0x2]?_0x629ff0[_0xbfc5('0x60')][0x2]['value']:undefined)||null},{'name':_0xbfc5('0x6c'),'value':_0x629ff0[_0xbfc5('0x6c')]||(_0x629ff0[_0xbfc5('0x60')]&&_0x629ff0['attrs'][0x3]?_0x629ff0[_0xbfc5('0x60')][0x3][_0xbfc5('0x61')]:undefined)||[]}];case _0xbfc5('0x71'):return[{'name':_0xbfc5('0x72'),'type':_0x629ff0[_0xbfc5('0x73')]||(_0x629ff0[_0xbfc5('0x60')]&&_0x629ff0[_0xbfc5('0x60')][0x0]?_0x629ff0[_0xbfc5('0x60')][0x0][_0xbfc5('0x37')]:undefined)||null,'value':_0x629ff0[_0xbfc5('0x72')]||(_0x629ff0[_0xbfc5('0x60')]&&_0x629ff0[_0xbfc5('0x60')][0x0]?_0x629ff0[_0xbfc5('0x60')][0x0][_0xbfc5('0x61')]:undefined)||null},{'name':_0xbfc5('0x74'),'value':_0x629ff0[_0xbfc5('0x74')]||(_0x629ff0[_0xbfc5('0x60')]&&_0x629ff0['attrs'][0x1]?_0x629ff0[_0xbfc5('0x60')][0x1][_0xbfc5('0x61')]:undefined)||0x0}];default:return[];}}catch(_0x296058){logger[_0xbfc5('0x2f')](_0xbfc5('0x75'),JSON[_0xbfc5('0x76')](_0x296058));return[];}}exports[_0xbfc5('0x77')]=function(_0x34b417,_0x305607,_0x5d53b1){if(_0x34b417[_0xbfc5('0x58')]['id']){delete _0x34b417[_0xbfc5('0x58')]['id'];}return db[_0xbfc5('0x34')][_0xbfc5('0x51')]({'where':{'id':_0x34b417[_0xbfc5('0x4e')]['id']}})['then'](handleEntityNotFound(_0x305607,null))[_0xbfc5('0x2a')](function(_0x2e0340){if(_0x2e0340){_0x34b417[_0xbfc5('0x58')][_0xbfc5('0x78')]=_0x2e0340['id'];_0x34b417[_0xbfc5('0x58')][_0xbfc5('0x60')]=widgetAttributes(_0x34b417[_0xbfc5('0x58')]);return db['DashboardItem'][_0xbfc5('0x52')](_0x34b417[_0xbfc5('0x58')]);}})[_0xbfc5('0x2a')](respondWithResult(_0x305607,null))[_0xbfc5('0x4c')](handleError(_0x305607,null));};exports[_0xbfc5('0x79')]=function(_0xdd78ef,_0x27e982,_0x3abb3a){var _0x437599={};var _0x3bf1c7={};var _0x324bcb;var _0x5c638b;return db['Dashboard'][_0xbfc5('0x7a')]({'where':{'id':_0xdd78ef[_0xbfc5('0x4e')]['id']}})[_0xbfc5('0x2a')](handleEntityNotFound(_0x27e982,null))[_0xbfc5('0x2a')](function(_0x3e3d90){if(_0x3e3d90){_0x324bcb=_0x3e3d90;_0x3bf1c7['model']=_['keys'](db[_0xbfc5('0x7b')]['rawAttributes']);_0x3bf1c7[_0xbfc5('0x3c')]=_[_0xbfc5('0x3b')](_0xdd78ef[_0xbfc5('0x3c')]);_0x3bf1c7[_0xbfc5('0x3d')]=_[_0xbfc5('0x3e')](_0x3bf1c7['model'],_0x3bf1c7[_0xbfc5('0x3c')]);_0x437599['attributes']=_[_0xbfc5('0x3e')](_0x3bf1c7['model'],qs[_0xbfc5('0x40')](_0xdd78ef['query'][_0xbfc5('0x40')]));_0x437599[_0xbfc5('0x3f')]=_0x437599[_0xbfc5('0x3f')][_0xbfc5('0x4f')]?_0x437599['attributes']:_0x3bf1c7[_0xbfc5('0x39')];_0x437599['order']=qs[_0xbfc5('0x42')](_0xdd78ef['query']['sort']);_0x437599[_0xbfc5('0x46')]=qs[_0xbfc5('0x3d')](_[_0xbfc5('0x43')](_0xdd78ef[_0xbfc5('0x3c')],_0x3bf1c7[_0xbfc5('0x3d')]));if(_0xdd78ef[_0xbfc5('0x3c')][_0xbfc5('0x44')]){_0x437599[_0xbfc5('0x46')]=_[_0xbfc5('0x45')](_0x437599[_0xbfc5('0x46')],{'$or':_['map'](_0x437599[_0xbfc5('0x3f')],function(_0x429d7b){var _0x36d8ba={};_0x36d8ba[_0x429d7b]={'$like':'%'+_0xdd78ef[_0xbfc5('0x3c')][_0xbfc5('0x44')]+'%'};return _0x36d8ba;})});}_0x437599=_[_0xbfc5('0x45')]({},_0x437599,_0xdd78ef[_0xbfc5('0x48')]);return _0x324bcb[_0xbfc5('0x79')](_0x437599);}})[_0xbfc5('0x2a')](function(_0x30dac3){if(_0x30dac3){_0x5c638b=_0x30dac3[_0xbfc5('0x4f')];if(!_0xdd78ef[_0xbfc5('0x3c')][_0xbfc5('0x7c')](_0xbfc5('0x7d'))){_0x437599[_0xbfc5('0x21')]=qs[_0xbfc5('0x21')](_0xdd78ef[_0xbfc5('0x3c')][_0xbfc5('0x21')]);_0x437599[_0xbfc5('0x1f')]=qs[_0xbfc5('0x1f')](_0xdd78ef[_0xbfc5('0x3c')]['offset']);}return _0x324bcb[_0xbfc5('0x79')](_0x437599);}})['then'](function(_0x1ebe26){if(_0x1ebe26){return _0x1ebe26?{'count':_0x5c638b,'rows':_0x1ebe26}:null;}})['then'](respondWithResult(_0x27e982,null))['catch'](handleError(_0x27e982,null));};
\ No newline at end of file
index db30897..0d0c40c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7a35=['hook','events','../../mysqldb','Dashboard','update','remove','emit','hasOwnProperty'];(function(_0x3cc61e,_0x4dd594){var _0xa5b9f4=function(_0xf40d37){while(--_0xf40d37){_0x3cc61e['push'](_0x3cc61e['shift']());}};_0xa5b9f4(++_0x4dd594);}(_0x7a35,0x119));var _0x57a3=function(_0x132887,_0x8a429e){_0x132887=_0x132887-0x0;var _0x4edd79=_0x7a35[_0x132887];return _0x4edd79;};'use strict';var EventEmitter=require(_0x57a3('0x0'));var Dashboard=require(_0x57a3('0x1'))['db'][_0x57a3('0x2')];var DashboardEvents=new EventEmitter();DashboardEvents['setMaxListeners'](0x0);var events={'afterCreate':'save','afterUpdate':_0x57a3('0x3'),'afterDestroy':_0x57a3('0x4')};function emitEvent(_0x519ffc){return function(_0x2175bf,_0x1e9209,_0x1b095d){DashboardEvents[_0x57a3('0x5')](_0x519ffc+':'+_0x2175bf['id'],_0x2175bf);DashboardEvents[_0x57a3('0x5')](_0x519ffc,_0x2175bf);_0x1b095d(null);};}for(var e in events){if(events[_0x57a3('0x6')](e)){var event=events[e];Dashboard[_0x57a3('0x7')](e,emitEvent(event));}}module['exports']=DashboardEvents;
\ No newline at end of file
+var _0x8343=['exports','events','../../mysqldb','Dashboard','save','remove','emit','hook'];(function(_0x3fe042,_0x1106f7){var _0x7d4a1f=function(_0x2df987){while(--_0x2df987){_0x3fe042['push'](_0x3fe042['shift']());}};_0x7d4a1f(++_0x1106f7);}(_0x8343,0xa9));var _0x3834=function(_0x49ff68,_0x1463de){_0x49ff68=_0x49ff68-0x0;var _0x1e18e5=_0x8343[_0x49ff68];return _0x1e18e5;};'use strict';var EventEmitter=require(_0x3834('0x0'));var Dashboard=require(_0x3834('0x1'))['db'][_0x3834('0x2')];var DashboardEvents=new EventEmitter();DashboardEvents['setMaxListeners'](0x0);var events={'afterCreate':_0x3834('0x3'),'afterUpdate':'update','afterDestroy':_0x3834('0x4')};function emitEvent(_0x4f6fc4){return function(_0x4a4217,_0x599baf,_0x1ec3da){DashboardEvents[_0x3834('0x5')](_0x4f6fc4+':'+_0x4a4217['id'],_0x4a4217);DashboardEvents[_0x3834('0x5')](_0x4f6fc4,_0x4a4217);_0x1ec3da(null);};}for(var e in events){if(events['hasOwnProperty'](e)){var event=events[e];Dashboard[_0x3834('0x6')](e,emitEvent(event));}}module[_0x3834('0x7')]=DashboardEvents;
\ No newline at end of file
index d0865aa..ab02e68 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8978=['dashboards','../../config/logger','moment','request-promise','path','rimraf','../../config/environment','./dashboard.attributes','Dashboard'];(function(_0x153846,_0x1227ad){var _0x3ee557=function(_0x514e76){while(--_0x514e76){_0x153846['push'](_0x153846['shift']());}};_0x3ee557(++_0x1227ad);}(_0x8978,0x1cc));var _0x8897=function(_0x110c3d,_0x12ee06){_0x110c3d=_0x110c3d-0x0;var _0x226d67=_0x8978[_0x110c3d];return _0x226d67;};'use strict';var _=require('lodash');var util=require('util');var logger=require(_0x8897('0x0'))('api');var moment=require(_0x8897('0x1'));var BPromise=require('bluebird');var rp=require(_0x8897('0x2'));var fs=require('fs');var path=require(_0x8897('0x3'));var rimraf=require(_0x8897('0x4'));var config=require(_0x8897('0x5'));var attributes=require(_0x8897('0x6'));module['exports']=function(_0x11355e,_0x1191eb){return _0x11355e['define'](_0x8897('0x7'),attributes,{'tableName':_0x8897('0x8'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xb9d1=['util','api','moment','bluebird','request-promise','path','../../config/environment','Dashboard','dashboards','lodash'];(function(_0xe1784d,_0x2f8e7b){var _0x5a8ad3=function(_0x2416ba){while(--_0x2416ba){_0xe1784d['push'](_0xe1784d['shift']());}};_0x5a8ad3(++_0x2f8e7b);}(_0xb9d1,0x117));var _0x1b9d=function(_0x4dc3cc,_0x4129d8){_0x4dc3cc=_0x4dc3cc-0x0;var _0x666d37=_0xb9d1[_0x4dc3cc];return _0x666d37;};'use strict';var _=require(_0x1b9d('0x0'));var util=require(_0x1b9d('0x1'));var logger=require('../../config/logger')(_0x1b9d('0x2'));var moment=require(_0x1b9d('0x3'));var BPromise=require(_0x1b9d('0x4'));var rp=require(_0x1b9d('0x5'));var fs=require('fs');var path=require(_0x1b9d('0x6'));var rimraf=require('rimraf');var config=require(_0x1b9d('0x7'));var attributes=require('./dashboard.attributes');module['exports']=function(_0x18c799,_0x5c8269){return _0x18c799['define'](_0x1b9d('0x8'),attributes,{'tableName':_0x1b9d('0x9'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 809228a..d782173 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7442=['./dashboard.socket','register','request','info','request\x20sent','debug','Dashboard,\x20%s,\x20%s,\x20%s','stringify','error','code','Dashboard,\x20%s,\x20%s','message','result','catch','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','http','redis','localhost','socket.io-emitter'];(function(_0x467e9e,_0x4a6888){var _0x10376a=function(_0x5f3437){while(--_0x5f3437){_0x467e9e['push'](_0x467e9e['shift']());}};_0x10376a(++_0x4a6888);}(_0x7442,0x1a4));var _0x2744=function(_0x274584,_0x501942){_0x274584=_0x274584-0x0;var _0x3a068=_0x7442[_0x274584];return _0x3a068;};'use strict';var _=require('lodash');var util=require(_0x2744('0x0'));var moment=require(_0x2744('0x1'));var BPromise=require(_0x2744('0x2'));var rs=require(_0x2744('0x3'));var fs=require('fs');var Redis=require(_0x2744('0x4'));var db=require(_0x2744('0x5'))['db'];var utils=require(_0x2744('0x6'));var logger=require(_0x2744('0x7'))(_0x2744('0x8'));var config=require(_0x2744('0x9'));var jayson=require(_0x2744('0xa'));var client=jayson['client'][_0x2744('0xb')]({'port':0x232a});config[_0x2744('0xc')]=_['defaults'](config[_0x2744('0xc')],{'host':_0x2744('0xd'),'port':0x18eb});var socket=require(_0x2744('0xe'))(new Redis(config[_0x2744('0xc')]));require(_0x2744('0xf'))[_0x2744('0x10')](socket);function respondWithRpcPromise(_0x193002,_0x306ccb,_0x1d587a){return new BPromise(function(_0x16755c,_0x617575){return client[_0x2744('0x11')](_0x193002,_0x1d587a)['then'](function(_0x41e85c){logger[_0x2744('0x12')]('Dashboard,\x20%s,\x20%s',_0x306ccb,_0x2744('0x13'));logger[_0x2744('0x14')](_0x2744('0x15'),_0x306ccb,_0x2744('0x13'),JSON[_0x2744('0x16')](_0x41e85c));if(_0x41e85c[_0x2744('0x17')]){if(_0x41e85c['error'][_0x2744('0x18')]===0x1f4){logger['error'](_0x2744('0x19'),_0x306ccb,_0x41e85c['error'][_0x2744('0x1a')]);return _0x617575(_0x41e85c[_0x2744('0x17')][_0x2744('0x1a')]);}logger['error']('Dashboard,\x20%s,\x20%s',_0x306ccb,_0x41e85c[_0x2744('0x17')]['message']);return _0x16755c(_0x41e85c['error'][_0x2744('0x1a')]);}else{logger[_0x2744('0x12')](_0x2744('0x19'),_0x306ccb,_0x2744('0x13'));_0x16755c(_0x41e85c[_0x2744('0x1b')]['message']);}})[_0x2744('0x1c')](function(_0x59e01f){logger['error'](_0x2744('0x19'),_0x306ccb,_0x59e01f);_0x617575(_0x59e01f);});});}
\ No newline at end of file
+var _0x407b=['request','info','Dashboard,\x20%s,\x20%s','request\x20sent','debug','Dashboard,\x20%s,\x20%s,\x20%s','stringify','error','message','result','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','../../config/environment','jayson/promise','client','http','defaults','redis','socket.io-emitter','./dashboard.socket','register'];(function(_0x50bf5a,_0x807bba){var _0x4ddc1d=function(_0x349a61){while(--_0x349a61){_0x50bf5a['push'](_0x50bf5a['shift']());}};_0x4ddc1d(++_0x807bba);}(_0x407b,0x14e));var _0xb407=function(_0x4c6fcc,_0x484fb5){_0x4c6fcc=_0x4c6fcc-0x0;var _0x3d37a9=_0x407b[_0x4c6fcc];return _0x3d37a9;};'use strict';var _=require('lodash');var util=require(_0xb407('0x0'));var moment=require(_0xb407('0x1'));var BPromise=require(_0xb407('0x2'));var rs=require(_0xb407('0x3'));var fs=require('fs');var Redis=require(_0xb407('0x4'));var db=require(_0xb407('0x5'))['db'];var utils=require(_0xb407('0x6'));var logger=require(_0xb407('0x7'))('rpc');var config=require(_0xb407('0x8'));var jayson=require(_0xb407('0x9'));var client=jayson[_0xb407('0xa')][_0xb407('0xb')]({'port':0x232a});config['redis']=_[_0xb407('0xc')](config[_0xb407('0xd')],{'host':'localhost','port':0x18eb});var socket=require(_0xb407('0xe'))(new Redis(config[_0xb407('0xd')]));require(_0xb407('0xf'))[_0xb407('0x10')](socket);function respondWithRpcPromise(_0x4bc4f7,_0x42c56e,_0x4aec08){return new BPromise(function(_0x30e439,_0x13542e){return client[_0xb407('0x11')](_0x4bc4f7,_0x4aec08)['then'](function(_0x5aafa6){logger[_0xb407('0x12')](_0xb407('0x13'),_0x42c56e,_0xb407('0x14'));logger[_0xb407('0x15')](_0xb407('0x16'),_0x42c56e,_0xb407('0x14'),JSON[_0xb407('0x17')](_0x5aafa6));if(_0x5aafa6[_0xb407('0x18')]){if(_0x5aafa6[_0xb407('0x18')]['code']===0x1f4){logger['error'](_0xb407('0x13'),_0x42c56e,_0x5aafa6[_0xb407('0x18')][_0xb407('0x19')]);return _0x13542e(_0x5aafa6[_0xb407('0x18')][_0xb407('0x19')]);}logger[_0xb407('0x18')](_0xb407('0x13'),_0x42c56e,_0x5aafa6['error'][_0xb407('0x19')]);return _0x30e439(_0x5aafa6[_0xb407('0x18')][_0xb407('0x19')]);}else{logger['info'](_0xb407('0x13'),_0x42c56e,_0xb407('0x14'));_0x30e439(_0x5aafa6[_0xb407('0x1a')]['message']);}})['catch'](function(_0x41f6ed){logger[_0xb407('0x18')](_0xb407('0x13'),_0x42c56e,_0x41f6ed);_0x13542e(_0x41f6ed);});});}
\ No newline at end of file
index b6d2a1c..4cb3b72 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xfdc0=['removeListener','register','length','dashboard:','./dashboard.events','save','update','emit'];(function(_0x3f5807,_0x53a079){var _0x368430=function(_0x15f033){while(--_0x15f033){_0x3f5807['push'](_0x3f5807['shift']());}};_0x368430(++_0x53a079);}(_0xfdc0,0x1f4));var _0x0fdc=function(_0x4cfc1d,_0x2c0927){_0x4cfc1d=_0x4cfc1d-0x0;var _0x1c01a0=_0xfdc0[_0x4cfc1d];return _0x1c01a0;};'use strict';var DashboardEvents=require(_0x0fdc('0x0'));var events=[_0x0fdc('0x1'),'remove',_0x0fdc('0x2')];function createListener(_0x21fcc9,_0x4afbc8){return function(_0x46443a){_0x4afbc8[_0x0fdc('0x3')](_0x21fcc9,_0x46443a);};}function removeListener(_0x43190,_0x3c1415){return function(){DashboardEvents[_0x0fdc('0x4')](_0x43190,_0x3c1415);};}exports[_0x0fdc('0x5')]=function(_0x279353){for(var _0x532b2d=0x0,_0x2c7df4=events[_0x0fdc('0x6')];_0x532b2d<_0x2c7df4;_0x532b2d++){var _0x406dcc=events[_0x532b2d];var _0x4cf422=createListener(_0x0fdc('0x7')+_0x406dcc,_0x279353);DashboardEvents['on'](_0x406dcc,_0x4cf422);}};
\ No newline at end of file
+var _0xe65b=['save','remove','update','emit','removeListener','register','length','./dashboard.events'];(function(_0x23ac3a,_0x1e1890){var _0x36e268=function(_0x235a5a){while(--_0x235a5a){_0x23ac3a['push'](_0x23ac3a['shift']());}};_0x36e268(++_0x1e1890);}(_0xe65b,0x1e7));var _0xbe65=function(_0x2be8c2,_0x14a4b5){_0x2be8c2=_0x2be8c2-0x0;var _0x97f531=_0xe65b[_0x2be8c2];return _0x97f531;};'use strict';var DashboardEvents=require(_0xbe65('0x0'));var events=[_0xbe65('0x1'),_0xbe65('0x2'),_0xbe65('0x3')];function createListener(_0x256ebf,_0x2878fe){return function(_0x3e07fa){_0x2878fe[_0xbe65('0x4')](_0x256ebf,_0x3e07fa);};}function removeListener(_0x375d2a,_0x4bf871){return function(){DashboardEvents[_0xbe65('0x5')](_0x375d2a,_0x4bf871);};}exports[_0xbe65('0x6')]=function(_0x2ae846){for(var _0x1057cc=0x0,_0x21cfef=events[_0xbe65('0x7')];_0x1057cc<_0x21cfef;_0x1057cc++){var _0x42020e=events[_0x1057cc];var _0x3f9f39=createListener('dashboard:'+_0x42020e,_0x2ae846);DashboardEvents['on'](_0x42020e,_0x3f9f39);}};
\ No newline at end of file
index c107647..a4b55d1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xcfaa=['./dashboard.controller','get','isAuthenticated','index','/:id','show','/:id/items','getItems','post','/:id/clone','clone','addItem','update','delete','destroy','multer','util','path','connect-timeout','express','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment'];(function(_0x1c8c28,_0x3ee093){var _0x1f59b4=function(_0x29bcc0){while(--_0x29bcc0){_0x1c8c28['push'](_0x1c8c28['shift']());}};_0x1f59b4(++_0x3ee093);}(_0xcfaa,0xff));var _0xacfa=function(_0x33717d,_0x4e0626){_0x33717d=_0x33717d-0x0;var _0x3b1c0d=_0xcfaa[_0x33717d];return _0x3b1c0d;};'use strict';var multer=require(_0xacfa('0x0'));var util=require(_0xacfa('0x1'));var path=require(_0xacfa('0x2'));var timeout=require(_0xacfa('0x3'));var express=require(_0xacfa('0x4'));var router=express['Router']();var fs_extra=require(_0xacfa('0x5'));var auth=require(_0xacfa('0x6'));var interaction=require(_0xacfa('0x7'));var config=require(_0xacfa('0x8'));var controller=require(_0xacfa('0x9'));router[_0xacfa('0xa')]('/',auth[_0xacfa('0xb')](),controller[_0xacfa('0xc')]);router[_0xacfa('0xa')](_0xacfa('0xd'),auth[_0xacfa('0xb')](),controller[_0xacfa('0xe')]);router[_0xacfa('0xa')](_0xacfa('0xf'),auth[_0xacfa('0xb')](),controller[_0xacfa('0x10')]);router['post']('/',auth[_0xacfa('0xb')](),controller['create']);router[_0xacfa('0x11')](_0xacfa('0x12'),auth['isAuthenticated'](),controller[_0xacfa('0x13')]);router['post'](_0xacfa('0xf'),auth[_0xacfa('0xb')](),controller[_0xacfa('0x14')]);router['put']('/:id',auth[_0xacfa('0xb')](),controller[_0xacfa('0x15')]);router[_0xacfa('0x16')](_0xacfa('0xd'),auth[_0xacfa('0xb')](),controller[_0xacfa('0x17')]);module['exports']=router;
\ No newline at end of file
+var _0x772e=['/:id','show','post','/:id/clone','clone','/:id/items','addItem','put','update','delete','destroy','exports','multer','path','connect-timeout','express','Router','../../components/auth/service','../../components/interaction/service','../../config/environment','get','isAuthenticated','index'];(function(_0x4ae159,_0x471667){var _0x497017=function(_0x179d26){while(--_0x179d26){_0x4ae159['push'](_0x4ae159['shift']());}};_0x497017(++_0x471667);}(_0x772e,0xdb));var _0xe772=function(_0x230bbc,_0x5f40c0){_0x230bbc=_0x230bbc-0x0;var _0x595e24=_0x772e[_0x230bbc];return _0x595e24;};'use strict';var multer=require(_0xe772('0x0'));var util=require('util');var path=require(_0xe772('0x1'));var timeout=require(_0xe772('0x2'));var express=require(_0xe772('0x3'));var router=express[_0xe772('0x4')]();var fs_extra=require('fs-extra');var auth=require(_0xe772('0x5'));var interaction=require(_0xe772('0x6'));var config=require(_0xe772('0x7'));var controller=require('./dashboard.controller');router[_0xe772('0x8')]('/',auth[_0xe772('0x9')](),controller[_0xe772('0xa')]);router[_0xe772('0x8')](_0xe772('0xb'),auth[_0xe772('0x9')](),controller[_0xe772('0xc')]);router[_0xe772('0x8')]('/:id/items',auth[_0xe772('0x9')](),controller['getItems']);router[_0xe772('0xd')]('/',auth[_0xe772('0x9')](),controller['create']);router[_0xe772('0xd')](_0xe772('0xe'),auth[_0xe772('0x9')](),controller[_0xe772('0xf')]);router[_0xe772('0xd')](_0xe772('0x10'),auth[_0xe772('0x9')](),controller[_0xe772('0x11')]);router[_0xe772('0x12')](_0xe772('0xb'),auth['isAuthenticated'](),controller[_0xe772('0x13')]);router[_0xe772('0x14')]('/:id',auth['isAuthenticated'](),controller[_0xe772('0x15')]);module[_0xe772('0x16')]=router;
\ No newline at end of file
index b4e6558..b4dce73 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4819=['long','parse','getDataValue','attrs','stringify','setDataValue','INTEGER','#ffffff','#2196f3','squel','lodash','exports','STRING','TEXT'];(function(_0xa72b78,_0x30ca61){var _0x42ae5e=function(_0xf3af01){while(--_0xf3af01){_0xa72b78['push'](_0xa72b78['shift']());}};_0x42ae5e(++_0x30ca61);}(_0x4819,0xcd));var _0x9481=function(_0x10fd98,_0x5209db){_0x10fd98=_0x10fd98-0x0;var _0x5347d5=_0x4819[_0x10fd98];return _0x5347d5;};'use strict';var Sequelize=require('sequelize');var squel=require(_0x9481('0x0'));var _=require(_0x9481('0x1'));module[_0x9481('0x2')]={'title':{'type':Sequelize[_0x9481('0x3')],'allowNull':![]},'type':{'type':Sequelize[_0x9481('0x3')](0x14),'allowNull':![],'validate':{'len':[0x1,0x14]}},'attrs':{'type':Sequelize[_0x9481('0x4')](_0x9481('0x5')),'get':function(){try{return JSON[_0x9481('0x6')](this[_0x9481('0x7')](_0x9481('0x8')));}catch(_0x5ac51c){return[];}},'set':function(_0x4d9e3a){try{this['setDataValue']('attrs',JSON[_0x9481('0x9')](_0x4d9e3a));}catch(_0x6c6a08){this[_0x9481('0xa')](_0x9481('0x8'),JSON[_0x9481('0x9')]([]));}}},'sizeX':{'type':Sequelize['INTEGER'],'allowNull':![],'defaultValue':0x1},'sizeY':{'type':Sequelize[_0x9481('0xb')],'allowNull':![],'defaultValue':0x1},'row':{'type':Sequelize['INTEGER']},'col':{'type':Sequelize[_0x9481('0xb')]},'background':{'type':Sequelize['STRING'],'allowNull':![],'defaultValue':_0x9481('0xc'),'validate':{'notEmpty':!![]}},'foreground':{'type':Sequelize[_0x9481('0x3')],'allowNull':![],'defaultValue':_0x9481('0xd'),'validate':{'notEmpty':!![]}},'link':{'type':Sequelize[_0x9481('0x3')]},'titleFontSize':{'type':Sequelize[_0x9481('0xb')],'defaultValue':0xc}};
\ No newline at end of file
+var _0x7096=['setDataValue','stringify','INTEGER','#ffffff','squel','exports','STRING','TEXT','long','parse','getDataValue','attrs'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x7096,0x10c));var _0x6709=function(_0x5b644e,_0x2e5e07){_0x5b644e=_0x5b644e-0x0;var _0x49c6bf=_0x7096[_0x5b644e];return _0x49c6bf;};'use strict';var Sequelize=require('sequelize');var squel=require(_0x6709('0x0'));var _=require('lodash');module[_0x6709('0x1')]={'title':{'type':Sequelize['STRING'],'allowNull':![]},'type':{'type':Sequelize[_0x6709('0x2')](0x14),'allowNull':![],'validate':{'len':[0x1,0x14]}},'attrs':{'type':Sequelize[_0x6709('0x3')](_0x6709('0x4')),'get':function(){try{return JSON[_0x6709('0x5')](this[_0x6709('0x6')](_0x6709('0x7')));}catch(_0xb8fe6d){return[];}},'set':function(_0x9d630f){try{this[_0x6709('0x8')](_0x6709('0x7'),JSON[_0x6709('0x9')](_0x9d630f));}catch(_0x985814){this[_0x6709('0x8')]('attrs',JSON['stringify']([]));}}},'sizeX':{'type':Sequelize[_0x6709('0xa')],'allowNull':![],'defaultValue':0x1},'sizeY':{'type':Sequelize[_0x6709('0xa')],'allowNull':![],'defaultValue':0x1},'row':{'type':Sequelize[_0x6709('0xa')]},'col':{'type':Sequelize[_0x6709('0xa')]},'background':{'type':Sequelize[_0x6709('0x2')],'allowNull':![],'defaultValue':_0x6709('0xb'),'validate':{'notEmpty':!![]}},'foreground':{'type':Sequelize['STRING'],'allowNull':![],'defaultValue':'#2196f3','validate':{'notEmpty':!![]}},'link':{'type':Sequelize[_0x6709('0x2')]},'titleFontSize':{'type':Sequelize[_0x6709('0xa')],'defaultValue':0xc}};
\ No newline at end of file
index 31a67f2..a55a173 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd028=['set','apply','reject','save','update','then','destroy','end','sendStatus','error','stack','name','show','params','keys','DashboardItem','query','filters','intersection','model','attributes','fields','includeAll','include','merge','options','find','catch','type','attrUrl','attrs','value','https://','custom','attrPath','clock','attrHourFormat','HH:mm:ss','attrTimezone','attrFontSize','attrMetric','total','attrVoiceQueues','multibar-chart','pie-chart','attrSerie1','attrSerie2','attrSerie3','web-report','attrReport','reportType','attrRefresh','widgetAttributes:\x20%s','stringify','create','body','rimraf','zip-dir','fast-json-patch','moment','util','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','api','../../config/license/util','../../mysqldb','redis','defaults','socket.io-emitter','./dashboardItem.socket','register','status','json','offset','undefined','limit','count'];(function(_0x46698a,_0x8de1e4){var _0x356db0=function(_0x19e83c){while(--_0x19e83c){_0x46698a['push'](_0x46698a['shift']());}};_0x356db0(++_0x8de1e4);}(_0xd028,0x91));var _0x8d02=function(_0x2637e,_0x53dc05){_0x2637e=_0x2637e-0x0;var _0x785c35=_0xd028[_0x2637e];return _0x785c35;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x8d02('0x0'));var zipdir=require(_0x8d02('0x1'));var jsonpatch=require(_0x8d02('0x2'));var rp=require('request-promise');var moment=require(_0x8d02('0x3'));var BPromise=require('bluebird');var Mustache=require('mustache');var util=require(_0x8d02('0x4'));var path=require('path');var sox=require('sox');var csv=require(_0x8d02('0x5'));var ejs=require(_0x8d02('0x6'));var fs=require('fs');var fs_extra=require(_0x8d02('0x7'));var _=require(_0x8d02('0x8'));var squel=require(_0x8d02('0x9'));var crypto=require(_0x8d02('0xa'));var jsforce=require(_0x8d02('0xb'));var deskjs=require(_0x8d02('0xc'));var toCsv=require(_0x8d02('0x5'));var querystring=require(_0x8d02('0xd'));var Papa=require('papaparse');var Redis=require(_0x8d02('0xe'));var authService=require(_0x8d02('0xf'));var qs=require(_0x8d02('0x10'));var as=require(_0x8d02('0x11'));var hardwareService=require(_0x8d02('0x12'));var logger=require('../../config/logger')(_0x8d02('0x13'));var utils=require('../../config/utils');var config=require('../../config/environment');var licenseUtil=require(_0x8d02('0x14'));var db=require(_0x8d02('0x15'))['db'];config[_0x8d02('0x16')]=_[_0x8d02('0x17')](config[_0x8d02('0x16')],{'host':'localhost','port':0x18eb});var socket=require(_0x8d02('0x18'))(new Redis(config[_0x8d02('0x16')]));require(_0x8d02('0x19'))[_0x8d02('0x1a')](socket);function respondWithStatusCode(_0x405e7c,_0x502cae){_0x502cae=_0x502cae||0xcc;return function(_0x3d8d41){if(_0x3d8d41){return _0x405e7c['sendStatus'](_0x502cae);}return _0x405e7c[_0x8d02('0x1b')](_0x502cae)['end']();};}function respondWithResult(_0x3785ed,_0x283b23){_0x283b23=_0x283b23||0xc8;return function(_0x409dfd){if(_0x409dfd){return _0x3785ed[_0x8d02('0x1b')](_0x283b23)[_0x8d02('0x1c')](_0x409dfd);}};}function respondWithFilteredResult(_0x307946,_0x3ca7bf){return function(_0x341429){if(_0x341429){var _0x18c62f=typeof _0x3ca7bf[_0x8d02('0x1d')]===_0x8d02('0x1e')&&typeof _0x3ca7bf[_0x8d02('0x1f')]===_0x8d02('0x1e');var _0x2a152c=_0x341429[_0x8d02('0x20')];var _0x359b83=_0x18c62f?0x0:_0x3ca7bf[_0x8d02('0x1d')];var _0x3ff9a6=_0x18c62f?_0x341429[_0x8d02('0x20')]:_0x3ca7bf[_0x8d02('0x1d')]+_0x3ca7bf['limit'];var _0x146334;if(_0x3ff9a6>=_0x2a152c){_0x3ff9a6=_0x2a152c;_0x146334=0xc8;}else{_0x146334=0xce;}_0x307946['status'](_0x146334);return _0x307946[_0x8d02('0x21')]('Content-Range',_0x359b83+'-'+_0x3ff9a6+'/'+_0x2a152c)['json'](_0x341429);}return null;};}function patchUpdates(_0x1c7004){return function(_0x1cc773){try{jsonpatch[_0x8d02('0x22')](_0x1cc773,_0x1c7004,!![]);}catch(_0x27a3d1){return BPromise[_0x8d02('0x23')](_0x27a3d1);}return _0x1cc773[_0x8d02('0x24')]();};}function saveUpdates(_0x16a9f0,_0x1ed4ee){return function(_0x5843c9){if(_0x5843c9){return _0x5843c9[_0x8d02('0x25')](_0x16a9f0)[_0x8d02('0x26')](function(_0x38f37e){return _0x38f37e;});}return null;};}function removeEntity(_0x29426b,_0x3963ee){return function(_0x4ae113){if(_0x4ae113){return _0x4ae113[_0x8d02('0x27')]()[_0x8d02('0x26')](function(){_0x29426b[_0x8d02('0x1b')](0xcc)[_0x8d02('0x28')]();});}};}function handleEntityNotFound(_0x5498f9,_0xf79efe){return function(_0x1e1ba1){if(!_0x1e1ba1){_0x5498f9[_0x8d02('0x29')](0x194);}return _0x1e1ba1;};}function handleError(_0x4be49a,_0x5767c6){_0x5767c6=_0x5767c6||0x1f4;return function(_0x3ac018){logger[_0x8d02('0x2a')](_0x3ac018[_0x8d02('0x2b')]);if(_0x3ac018[_0x8d02('0x2c')]){delete _0x3ac018[_0x8d02('0x2c')];}_0x4be49a[_0x8d02('0x1b')](_0x5767c6)['send'](_0x3ac018);};}exports[_0x8d02('0x2d')]=function(_0xdccce5,_0x19dc0c){var _0xd479d4={'raw':![],'where':{'id':_0xdccce5[_0x8d02('0x2e')]['id']}},_0x319881={};_0x319881['model']=_[_0x8d02('0x2f')](db[_0x8d02('0x30')]['rawAttributes']);_0x319881[_0x8d02('0x31')]=_[_0x8d02('0x2f')](_0xdccce5[_0x8d02('0x31')]);_0x319881[_0x8d02('0x32')]=_[_0x8d02('0x33')](_0x319881[_0x8d02('0x34')],_0x319881[_0x8d02('0x31')]);_0xd479d4[_0x8d02('0x35')]=_[_0x8d02('0x33')](_0x319881[_0x8d02('0x34')],qs[_0x8d02('0x36')](_0xdccce5['query'][_0x8d02('0x36')]));_0xd479d4[_0x8d02('0x35')]=_0xd479d4[_0x8d02('0x35')]['length']?_0xd479d4[_0x8d02('0x35')]:_0x319881[_0x8d02('0x34')];if(_0xdccce5[_0x8d02('0x31')][_0x8d02('0x37')]){_0xd479d4[_0x8d02('0x38')]=[{'all':!![]}];}_0xd479d4=_[_0x8d02('0x39')]({},_0xd479d4,_0xdccce5[_0x8d02('0x3a')]);return db[_0x8d02('0x30')][_0x8d02('0x3b')](_0xd479d4)[_0x8d02('0x26')](handleEntityNotFound(_0x19dc0c,null))['then'](respondWithResult(_0x19dc0c,null))[_0x8d02('0x3c')](handleError(_0x19dc0c,null));};exports[_0x8d02('0x27')]=function(_0x97db7,_0x6bf0c){return db[_0x8d02('0x30')][_0x8d02('0x3b')]({'where':{'id':_0x97db7[_0x8d02('0x2e')]['id']}})[_0x8d02('0x26')](handleEntityNotFound(_0x6bf0c,null))[_0x8d02('0x26')](removeEntity(_0x6bf0c,null))[_0x8d02('0x3c')](handleError(_0x6bf0c,null));};function widgetAttributes(_0x5357ac){try{switch(_0x5357ac[_0x8d02('0x3d')]){case'iframe':return[{'name':_0x8d02('0x3e'),'value':_0x5357ac[_0x8d02('0x3e')]||(_0x5357ac[_0x8d02('0x3f')]&&_0x5357ac['attrs'][0x0]?_0x5357ac[_0x8d02('0x3f')][0x0][_0x8d02('0x40')]:undefined)||_0x8d02('0x41')}];case _0x8d02('0x42'):return[{'name':_0x8d02('0x43'),'value':_0x5357ac['attrPath']||(_0x5357ac['attrs']&&_0x5357ac[_0x8d02('0x3f')][0x0]?_0x5357ac['attrs'][0x0][_0x8d02('0x40')]:undefined)||''}];case _0x8d02('0x44'):return[{'name':_0x8d02('0x45'),'value':_0x5357ac[_0x8d02('0x45')]||(_0x5357ac[_0x8d02('0x3f')]&&_0x5357ac['attrs'][0x0]?_0x5357ac[_0x8d02('0x3f')][0x0][_0x8d02('0x40')]:undefined)||_0x8d02('0x46')},{'name':_0x8d02('0x47'),'value':_0x5357ac[_0x8d02('0x47')]||(_0x5357ac[_0x8d02('0x3f')]&&_0x5357ac[_0x8d02('0x3f')][0x1]?_0x5357ac[_0x8d02('0x3f')][0x1][_0x8d02('0x40')]:undefined)||'0.00'},{'name':'attrFontSize','value':_0x5357ac[_0x8d02('0x48')]||(_0x5357ac[_0x8d02('0x3f')]&&_0x5357ac[_0x8d02('0x3f')][0x2]?_0x5357ac[_0x8d02('0x3f')][0x2]['value']:undefined)||0xc}];case'counter':return[{'name':_0x8d02('0x49'),'value':_0x5357ac[_0x8d02('0x49')]||(_0x5357ac[_0x8d02('0x3f')]&&_0x5357ac[_0x8d02('0x3f')][0x0]?_0x5357ac[_0x8d02('0x3f')][0x0][_0x8d02('0x40')]:undefined)||_0x8d02('0x4a')},{'name':'attrVoiceQueues','value':_0x5357ac[_0x8d02('0x4b')]||(_0x5357ac['attrs']&&_0x5357ac[_0x8d02('0x3f')][0x1]?_0x5357ac[_0x8d02('0x3f')][0x1][_0x8d02('0x40')]:undefined)||[]},{'name':_0x8d02('0x48'),'value':_0x5357ac[_0x8d02('0x48')]||(_0x5357ac[_0x8d02('0x3f')]&&_0x5357ac[_0x8d02('0x3f')][0x2]?_0x5357ac[_0x8d02('0x3f')][0x2][_0x8d02('0x40')]:undefined)||0x14}];case _0x8d02('0x4c'):case _0x8d02('0x4d'):return[{'name':_0x8d02('0x4e'),'value':_0x5357ac[_0x8d02('0x4e')]||(_0x5357ac[_0x8d02('0x3f')]&&_0x5357ac['attrs'][0x0]?_0x5357ac['attrs'][0x0]['value']:undefined)||_0x8d02('0x4a')},{'name':_0x8d02('0x4f'),'value':_0x5357ac[_0x8d02('0x4f')]||(_0x5357ac[_0x8d02('0x3f')]&&_0x5357ac[_0x8d02('0x3f')][0x1]?_0x5357ac[_0x8d02('0x3f')][0x1][_0x8d02('0x40')]:undefined)||null},{'name':_0x8d02('0x50'),'value':_0x5357ac[_0x8d02('0x50')]||(_0x5357ac[_0x8d02('0x3f')]&&_0x5357ac[_0x8d02('0x3f')][0x2]?_0x5357ac[_0x8d02('0x3f')][0x2][_0x8d02('0x40')]:undefined)||null},{'name':_0x8d02('0x4b'),'value':_0x5357ac[_0x8d02('0x4b')]||(_0x5357ac['attrs']&&_0x5357ac[_0x8d02('0x3f')][0x3]?_0x5357ac[_0x8d02('0x3f')][0x3]['value']:undefined)||[]}];case _0x8d02('0x51'):return[{'name':_0x8d02('0x52'),'type':_0x5357ac[_0x8d02('0x53')]||(_0x5357ac[_0x8d02('0x3f')]&&_0x5357ac[_0x8d02('0x3f')][0x0]?_0x5357ac['attrs'][0x0][_0x8d02('0x3d')]:undefined)||null,'value':_0x5357ac[_0x8d02('0x52')]||(_0x5357ac['attrs']&&_0x5357ac[_0x8d02('0x3f')][0x0]?_0x5357ac[_0x8d02('0x3f')][0x0][_0x8d02('0x40')]:undefined)||null},{'name':_0x8d02('0x54'),'value':_0x5357ac['attrRefresh']||(_0x5357ac['attrs']&&_0x5357ac[_0x8d02('0x3f')][0x1]?_0x5357ac[_0x8d02('0x3f')][0x1][_0x8d02('0x40')]:undefined)||0x0}];default:return[];}}catch(_0x11df23){logger['error'](_0x8d02('0x55'),JSON[_0x8d02('0x56')](_0x11df23));return[];}}exports[_0x8d02('0x57')]=function(_0x1a42b1,_0x35c3a8){if(_0x1a42b1['body']){_0x1a42b1[_0x8d02('0x58')][_0x8d02('0x3f')]=widgetAttributes(_0x1a42b1['body']);}return db['DashboardItem'][_0x8d02('0x57')](_0x1a42b1['body'],{})[_0x8d02('0x26')](respondWithResult(_0x35c3a8,0xc9))[_0x8d02('0x3c')](handleError(_0x35c3a8,null));};exports[_0x8d02('0x25')]=function(_0x5bc970,_0x36bfb7){if(_0x5bc970[_0x8d02('0x58')]['id']){delete _0x5bc970[_0x8d02('0x58')]['id'];}_0x5bc970['body']['attrs']=widgetAttributes(_0x5bc970[_0x8d02('0x58')]);return db[_0x8d02('0x30')]['find']({'where':{'id':_0x5bc970[_0x8d02('0x2e')]['id']}})[_0x8d02('0x26')](handleEntityNotFound(_0x36bfb7,null))['then'](saveUpdates(_0x5bc970[_0x8d02('0x58')],null))[_0x8d02('0x26')](respondWithResult(_0x36bfb7,null))['catch'](handleError(_0x36bfb7,null));};
\ No newline at end of file
+var _0x01af=['https://','custom','attrPath','clock','attrHourFormat','value','HH:mm:ss','0.00','attrFontSize','counter','attrMetric','total','multibar-chart','pie-chart','attrSerie1','attrSerie2','attrSerie3','attrVoiceQueues','web-report','attrReport','reportType','attrRefresh','widgetAttributes:\x20%s','stringify','create','body','update','rimraf','zip-dir','request-promise','moment','bluebird','util','path','sox','to-csv','ejs','fs-extra','squel','crypto','querystring','papaparse','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/utils','../../config/environment','redis','defaults','localhost','socket.io-emitter','./dashboardItem.socket','register','sendStatus','status','json','offset','undefined','limit','count','set','Content-Range','apply','reject','save','then','end','error','stack','send','show','model','DashboardItem','rawAttributes','keys','query','filters','intersection','attributes','fields','length','includeAll','include','merge','find','catch','destroy','params','type','iframe','attrUrl','attrs'];(function(_0x3ee2b4,_0x5b5104){var _0x53bcbd=function(_0x43e60b){while(--_0x43e60b){_0x3ee2b4['push'](_0x3ee2b4['shift']());}};_0x53bcbd(++_0x5b5104);}(_0x01af,0x79));var _0xf01a=function(_0x174fcb,_0x51d223){_0x174fcb=_0x174fcb-0x0;var _0x871370=_0x01af[_0x174fcb];return _0x871370;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0xf01a('0x0'));var zipdir=require(_0xf01a('0x1'));var jsonpatch=require('fast-json-patch');var rp=require(_0xf01a('0x2'));var moment=require(_0xf01a('0x3'));var BPromise=require(_0xf01a('0x4'));var Mustache=require('mustache');var util=require(_0xf01a('0x5'));var path=require(_0xf01a('0x6'));var sox=require(_0xf01a('0x7'));var csv=require(_0xf01a('0x8'));var ejs=require(_0xf01a('0x9'));var fs=require('fs');var fs_extra=require(_0xf01a('0xa'));var _=require('lodash');var squel=require(_0xf01a('0xb'));var crypto=require(_0xf01a('0xc'));var jsforce=require('jsforce');var deskjs=require('desk.js');var toCsv=require(_0xf01a('0x8'));var querystring=require(_0xf01a('0xd'));var Papa=require(_0xf01a('0xe'));var Redis=require(_0xf01a('0xf'));var authService=require('../../components/auth/service');var qs=require(_0xf01a('0x10'));var as=require(_0xf01a('0x11'));var hardwareService=require(_0xf01a('0x12'));var logger=require('../../config/logger')(_0xf01a('0x13'));var utils=require(_0xf01a('0x14'));var config=require(_0xf01a('0x15'));var licenseUtil=require('../../config/license/util');var db=require('../../mysqldb')['db'];config[_0xf01a('0x16')]=_[_0xf01a('0x17')](config[_0xf01a('0x16')],{'host':_0xf01a('0x18'),'port':0x18eb});var socket=require(_0xf01a('0x19'))(new Redis(config[_0xf01a('0x16')]));require(_0xf01a('0x1a'))[_0xf01a('0x1b')](socket);function respondWithStatusCode(_0x257614,_0x4610e1){_0x4610e1=_0x4610e1||0xcc;return function(_0x4b1de9){if(_0x4b1de9){return _0x257614[_0xf01a('0x1c')](_0x4610e1);}return _0x257614[_0xf01a('0x1d')](_0x4610e1)['end']();};}function respondWithResult(_0x3c7019,_0x3d3d2d){_0x3d3d2d=_0x3d3d2d||0xc8;return function(_0x47feef){if(_0x47feef){return _0x3c7019[_0xf01a('0x1d')](_0x3d3d2d)[_0xf01a('0x1e')](_0x47feef);}};}function respondWithFilteredResult(_0x575685,_0x1df7f4){return function(_0x4497fb){if(_0x4497fb){var _0x3cc6ea=typeof _0x1df7f4[_0xf01a('0x1f')]===_0xf01a('0x20')&&typeof _0x1df7f4[_0xf01a('0x21')]===_0xf01a('0x20');var _0x487018=_0x4497fb[_0xf01a('0x22')];var _0x42605c=_0x3cc6ea?0x0:_0x1df7f4[_0xf01a('0x1f')];var _0x33a0b0=_0x3cc6ea?_0x4497fb['count']:_0x1df7f4[_0xf01a('0x1f')]+_0x1df7f4[_0xf01a('0x21')];var _0x2142c2;if(_0x33a0b0>=_0x487018){_0x33a0b0=_0x487018;_0x2142c2=0xc8;}else{_0x2142c2=0xce;}_0x575685[_0xf01a('0x1d')](_0x2142c2);return _0x575685[_0xf01a('0x23')](_0xf01a('0x24'),_0x42605c+'-'+_0x33a0b0+'/'+_0x487018)['json'](_0x4497fb);}return null;};}function patchUpdates(_0x3349b7){return function(_0x1e3a1b){try{jsonpatch[_0xf01a('0x25')](_0x1e3a1b,_0x3349b7,!![]);}catch(_0xf22db0){return BPromise[_0xf01a('0x26')](_0xf22db0);}return _0x1e3a1b[_0xf01a('0x27')]();};}function saveUpdates(_0x118a37,_0x50e0e5){return function(_0x241ed9){if(_0x241ed9){return _0x241ed9['update'](_0x118a37)[_0xf01a('0x28')](function(_0x2fc8e0){return _0x2fc8e0;});}return null;};}function removeEntity(_0x352b6c,_0x1d7525){return function(_0x1f4df1){if(_0x1f4df1){return _0x1f4df1['destroy']()['then'](function(){_0x352b6c[_0xf01a('0x1d')](0xcc)[_0xf01a('0x29')]();});}};}function handleEntityNotFound(_0x31de94,_0x4a00f0){return function(_0x4e668e){if(!_0x4e668e){_0x31de94['sendStatus'](0x194);}return _0x4e668e;};}function handleError(_0x1589e5,_0x19d5a4){_0x19d5a4=_0x19d5a4||0x1f4;return function(_0x3bfc70){logger[_0xf01a('0x2a')](_0x3bfc70[_0xf01a('0x2b')]);if(_0x3bfc70['name']){delete _0x3bfc70['name'];}_0x1589e5['status'](_0x19d5a4)[_0xf01a('0x2c')](_0x3bfc70);};}exports[_0xf01a('0x2d')]=function(_0x3e4617,_0x3e9cf3){var _0x2122d9={'raw':![],'where':{'id':_0x3e4617['params']['id']}},_0x2624b5={};_0x2624b5[_0xf01a('0x2e')]=_['keys'](db[_0xf01a('0x2f')][_0xf01a('0x30')]);_0x2624b5['query']=_[_0xf01a('0x31')](_0x3e4617[_0xf01a('0x32')]);_0x2624b5[_0xf01a('0x33')]=_[_0xf01a('0x34')](_0x2624b5['model'],_0x2624b5[_0xf01a('0x32')]);_0x2122d9[_0xf01a('0x35')]=_[_0xf01a('0x34')](_0x2624b5[_0xf01a('0x2e')],qs[_0xf01a('0x36')](_0x3e4617[_0xf01a('0x32')]['fields']));_0x2122d9[_0xf01a('0x35')]=_0x2122d9[_0xf01a('0x35')][_0xf01a('0x37')]?_0x2122d9[_0xf01a('0x35')]:_0x2624b5['model'];if(_0x3e4617[_0xf01a('0x32')][_0xf01a('0x38')]){_0x2122d9[_0xf01a('0x39')]=[{'all':!![]}];}_0x2122d9=_[_0xf01a('0x3a')]({},_0x2122d9,_0x3e4617['options']);return db[_0xf01a('0x2f')][_0xf01a('0x3b')](_0x2122d9)[_0xf01a('0x28')](handleEntityNotFound(_0x3e9cf3,null))['then'](respondWithResult(_0x3e9cf3,null))[_0xf01a('0x3c')](handleError(_0x3e9cf3,null));};exports[_0xf01a('0x3d')]=function(_0x52063b,_0x5d6b42){return db['DashboardItem'][_0xf01a('0x3b')]({'where':{'id':_0x52063b[_0xf01a('0x3e')]['id']}})['then'](handleEntityNotFound(_0x5d6b42,null))['then'](removeEntity(_0x5d6b42,null))['catch'](handleError(_0x5d6b42,null));};function widgetAttributes(_0x38cf03){try{switch(_0x38cf03[_0xf01a('0x3f')]){case _0xf01a('0x40'):return[{'name':_0xf01a('0x41'),'value':_0x38cf03[_0xf01a('0x41')]||(_0x38cf03[_0xf01a('0x42')]&&_0x38cf03[_0xf01a('0x42')][0x0]?_0x38cf03['attrs'][0x0]['value']:undefined)||_0xf01a('0x43')}];case _0xf01a('0x44'):return[{'name':_0xf01a('0x45'),'value':_0x38cf03[_0xf01a('0x45')]||(_0x38cf03[_0xf01a('0x42')]&&_0x38cf03['attrs'][0x0]?_0x38cf03[_0xf01a('0x42')][0x0]['value']:undefined)||''}];case _0xf01a('0x46'):return[{'name':_0xf01a('0x47'),'value':_0x38cf03['attrHourFormat']||(_0x38cf03[_0xf01a('0x42')]&&_0x38cf03[_0xf01a('0x42')][0x0]?_0x38cf03['attrs'][0x0][_0xf01a('0x48')]:undefined)||_0xf01a('0x49')},{'name':'attrTimezone','value':_0x38cf03['attrTimezone']||(_0x38cf03[_0xf01a('0x42')]&&_0x38cf03[_0xf01a('0x42')][0x1]?_0x38cf03[_0xf01a('0x42')][0x1]['value']:undefined)||_0xf01a('0x4a')},{'name':'attrFontSize','value':_0x38cf03[_0xf01a('0x4b')]||(_0x38cf03[_0xf01a('0x42')]&&_0x38cf03[_0xf01a('0x42')][0x2]?_0x38cf03[_0xf01a('0x42')][0x2][_0xf01a('0x48')]:undefined)||0xc}];case _0xf01a('0x4c'):return[{'name':'attrMetric','value':_0x38cf03[_0xf01a('0x4d')]||(_0x38cf03[_0xf01a('0x42')]&&_0x38cf03[_0xf01a('0x42')][0x0]?_0x38cf03[_0xf01a('0x42')][0x0][_0xf01a('0x48')]:undefined)||_0xf01a('0x4e')},{'name':'attrVoiceQueues','value':_0x38cf03['attrVoiceQueues']||(_0x38cf03['attrs']&&_0x38cf03['attrs'][0x1]?_0x38cf03['attrs'][0x1][_0xf01a('0x48')]:undefined)||[]},{'name':_0xf01a('0x4b'),'value':_0x38cf03[_0xf01a('0x4b')]||(_0x38cf03[_0xf01a('0x42')]&&_0x38cf03[_0xf01a('0x42')][0x2]?_0x38cf03[_0xf01a('0x42')][0x2]['value']:undefined)||0x14}];case _0xf01a('0x4f'):case _0xf01a('0x50'):return[{'name':_0xf01a('0x51'),'value':_0x38cf03[_0xf01a('0x51')]||(_0x38cf03['attrs']&&_0x38cf03[_0xf01a('0x42')][0x0]?_0x38cf03[_0xf01a('0x42')][0x0][_0xf01a('0x48')]:undefined)||_0xf01a('0x4e')},{'name':_0xf01a('0x52'),'value':_0x38cf03[_0xf01a('0x52')]||(_0x38cf03[_0xf01a('0x42')]&&_0x38cf03['attrs'][0x1]?_0x38cf03[_0xf01a('0x42')][0x1][_0xf01a('0x48')]:undefined)||null},{'name':'attrSerie3','value':_0x38cf03[_0xf01a('0x53')]||(_0x38cf03[_0xf01a('0x42')]&&_0x38cf03[_0xf01a('0x42')][0x2]?_0x38cf03[_0xf01a('0x42')][0x2][_0xf01a('0x48')]:undefined)||null},{'name':_0xf01a('0x54'),'value':_0x38cf03[_0xf01a('0x54')]||(_0x38cf03[_0xf01a('0x42')]&&_0x38cf03[_0xf01a('0x42')][0x3]?_0x38cf03[_0xf01a('0x42')][0x3][_0xf01a('0x48')]:undefined)||[]}];case _0xf01a('0x55'):return[{'name':_0xf01a('0x56'),'type':_0x38cf03[_0xf01a('0x57')]||(_0x38cf03['attrs']&&_0x38cf03[_0xf01a('0x42')][0x0]?_0x38cf03['attrs'][0x0][_0xf01a('0x3f')]:undefined)||null,'value':_0x38cf03[_0xf01a('0x56')]||(_0x38cf03[_0xf01a('0x42')]&&_0x38cf03['attrs'][0x0]?_0x38cf03[_0xf01a('0x42')][0x0][_0xf01a('0x48')]:undefined)||null},{'name':'attrRefresh','value':_0x38cf03[_0xf01a('0x58')]||(_0x38cf03[_0xf01a('0x42')]&&_0x38cf03['attrs'][0x1]?_0x38cf03[_0xf01a('0x42')][0x1]['value']:undefined)||0x0}];default:return[];}}catch(_0xd67712){logger[_0xf01a('0x2a')](_0xf01a('0x59'),JSON[_0xf01a('0x5a')](_0xd67712));return[];}}exports[_0xf01a('0x5b')]=function(_0x499473,_0x3ad304){if(_0x499473['body']){_0x499473[_0xf01a('0x5c')][_0xf01a('0x42')]=widgetAttributes(_0x499473['body']);}return db[_0xf01a('0x2f')][_0xf01a('0x5b')](_0x499473[_0xf01a('0x5c')],{})[_0xf01a('0x28')](respondWithResult(_0x3ad304,0xc9))[_0xf01a('0x3c')](handleError(_0x3ad304,null));};exports[_0xf01a('0x5d')]=function(_0x10eb33,_0xc4498f){if(_0x10eb33[_0xf01a('0x5c')]['id']){delete _0x10eb33[_0xf01a('0x5c')]['id'];}_0x10eb33['body'][_0xf01a('0x42')]=widgetAttributes(_0x10eb33[_0xf01a('0x5c')]);return db[_0xf01a('0x2f')][_0xf01a('0x3b')]({'where':{'id':_0x10eb33[_0xf01a('0x3e')]['id']}})[_0xf01a('0x28')](handleEntityNotFound(_0xc4498f,null))['then'](saveUpdates(_0x10eb33[_0xf01a('0x5c')],null))['then'](respondWithResult(_0xc4498f,null))[_0xf01a('0x3c')](handleError(_0xc4498f,null));};
\ No newline at end of file
index a0699fb..2819db6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x55aa=['save','update','remove','hasOwnProperty','../../mysqldb','DashboardItem','setMaxListeners'];(function(_0x1a72de,_0x427b56){var _0x34f762=function(_0x1bbf21){while(--_0x1bbf21){_0x1a72de['push'](_0x1a72de['shift']());}};_0x34f762(++_0x427b56);}(_0x55aa,0x146));var _0xa55a=function(_0xca50dc,_0x46ed4b){_0xca50dc=_0xca50dc-0x0;var _0x3ab7f0=_0x55aa[_0xca50dc];return _0x3ab7f0;};'use strict';var EventEmitter=require('events');var DashboardItem=require(_0xa55a('0x0'))['db'][_0xa55a('0x1')];var DashboardItemEvents=new EventEmitter();DashboardItemEvents[_0xa55a('0x2')](0x0);var events={'afterCreate':_0xa55a('0x3'),'afterUpdate':_0xa55a('0x4'),'afterDestroy':_0xa55a('0x5')};function emitEvent(_0x36a495){return function(_0x420990,_0x55a3a0,_0x42c1a3){DashboardItemEvents['emit'](_0x36a495+':'+_0x420990['id'],_0x420990);DashboardItemEvents['emit'](_0x36a495,_0x420990);_0x42c1a3(null);};}for(var e in events){if(events[_0xa55a('0x6')](e)){var event=events[e];DashboardItem['hook'](e,emitEvent(event));}}module['exports']=DashboardItemEvents;
\ No newline at end of file
+var _0x2fe5=['save','update','remove','emit','hasOwnProperty','hook','exports','events','../../mysqldb'];(function(_0x445d92,_0x22c321){var _0x2bac4d=function(_0xe6f1a1){while(--_0xe6f1a1){_0x445d92['push'](_0x445d92['shift']());}};_0x2bac4d(++_0x22c321);}(_0x2fe5,0x14b));var _0x52fe=function(_0x321bb2,_0x202794){_0x321bb2=_0x321bb2-0x0;var _0x9c12ed=_0x2fe5[_0x321bb2];return _0x9c12ed;};'use strict';var EventEmitter=require(_0x52fe('0x0'));var DashboardItem=require(_0x52fe('0x1'))['db']['DashboardItem'];var DashboardItemEvents=new EventEmitter();DashboardItemEvents['setMaxListeners'](0x0);var events={'afterCreate':_0x52fe('0x2'),'afterUpdate':_0x52fe('0x3'),'afterDestroy':_0x52fe('0x4')};function emitEvent(_0x39f0a7){return function(_0xd0dfd1,_0x48ef08,_0x445d6f){DashboardItemEvents[_0x52fe('0x5')](_0x39f0a7+':'+_0xd0dfd1['id'],_0xd0dfd1);DashboardItemEvents['emit'](_0x39f0a7,_0xd0dfd1);_0x445d6f(null);};}for(var e in events){if(events[_0x52fe('0x6')](e)){var event=events[e];DashboardItem[_0x52fe('0x7')](e,emitEvent(event));}}module[_0x52fe('0x8')]=DashboardItemEvents;
\ No newline at end of file
index f8b92b5..5bd7e0b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb79b=['path','rimraf','../../config/environment','./dashboardItem.attributes','define','DashboardItem','dashboard_items','util','../../config/logger','api','moment','bluebird','request-promise'];(function(_0x475735,_0x212148){var _0x45c151=function(_0x453b98){while(--_0x453b98){_0x475735['push'](_0x475735['shift']());}};_0x45c151(++_0x212148);}(_0xb79b,0x159));var _0xbb79=function(_0x282f4d,_0x5030c9){_0x282f4d=_0x282f4d-0x0;var _0x336645=_0xb79b[_0x282f4d];return _0x336645;};'use strict';var _=require('lodash');var util=require(_0xbb79('0x0'));var logger=require(_0xbb79('0x1'))(_0xbb79('0x2'));var moment=require(_0xbb79('0x3'));var BPromise=require(_0xbb79('0x4'));var rp=require(_0xbb79('0x5'));var fs=require('fs');var path=require(_0xbb79('0x6'));var rimraf=require(_0xbb79('0x7'));var config=require(_0xbb79('0x8'));var attributes=require(_0xbb79('0x9'));module['exports']=function(_0xb9d718,_0xd1f142){return _0xb9d718[_0xbb79('0xa')](_0xbb79('0xb'),attributes,{'tableName':_0xbb79('0xc'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xf5b7=['request-promise','rimraf','./dashboardItem.attributes','exports','define','DashboardItem','dashboard_items','util','../../config/logger','api','moment','bluebird'];(function(_0x5277df,_0x4f836e){var _0x34249e=function(_0x1222cf){while(--_0x1222cf){_0x5277df['push'](_0x5277df['shift']());}};_0x34249e(++_0x4f836e);}(_0xf5b7,0xf7));var _0x7f5b=function(_0x2bfc84,_0x14478a){_0x2bfc84=_0x2bfc84-0x0;var _0x2104ae=_0xf5b7[_0x2bfc84];return _0x2104ae;};'use strict';var _=require('lodash');var util=require(_0x7f5b('0x0'));var logger=require(_0x7f5b('0x1'))(_0x7f5b('0x2'));var moment=require(_0x7f5b('0x3'));var BPromise=require(_0x7f5b('0x4'));var rp=require(_0x7f5b('0x5'));var fs=require('fs');var path=require('path');var rimraf=require(_0x7f5b('0x6'));var config=require('../../config/environment');var attributes=require(_0x7f5b('0x7'));module[_0x7f5b('0x8')]=function(_0x481e5b,_0x295885){return _0x481e5b[_0x7f5b('0x9')](_0x7f5b('0xa'),attributes,{'tableName':_0x7f5b('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index eace885..00ca86c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6c7e=['request\x20sent','stringify','error','code','DashboardItem,\x20%s,\x20%s','message','info','catch','lodash','util','moment','bluebird','randomstring','../../mysqldb','../../config/logger','../../config/environment','jayson/promise','client','http','redis','socket.io-emitter','register','request','then','debug','DashboardItem,\x20%s,\x20%s,\x20%s'];(function(_0x5f09c5,_0x2bfca0){var _0x426ad9=function(_0x18fe5f){while(--_0x18fe5f){_0x5f09c5['push'](_0x5f09c5['shift']());}};_0x426ad9(++_0x2bfca0);}(_0x6c7e,0x1c2));var _0xe6c7=function(_0x43ddb5,_0x2eafc0){_0x43ddb5=_0x43ddb5-0x0;var _0x540961=_0x6c7e[_0x43ddb5];return _0x540961;};'use strict';var _=require(_0xe6c7('0x0'));var util=require(_0xe6c7('0x1'));var moment=require(_0xe6c7('0x2'));var BPromise=require(_0xe6c7('0x3'));var rs=require(_0xe6c7('0x4'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0xe6c7('0x5'))['db'];var utils=require('../../config/utils');var logger=require(_0xe6c7('0x6'))('rpc');var config=require(_0xe6c7('0x7'));var jayson=require(_0xe6c7('0x8'));var client=jayson[_0xe6c7('0x9')][_0xe6c7('0xa')]({'port':0x232a});config[_0xe6c7('0xb')]=_['defaults'](config[_0xe6c7('0xb')],{'host':'localhost','port':0x18eb});var socket=require(_0xe6c7('0xc'))(new Redis(config[_0xe6c7('0xb')]));require('./dashboardItem.socket')[_0xe6c7('0xd')](socket);function respondWithRpcPromise(_0x382929,_0x25ec9d,_0x48efb2){return new BPromise(function(_0x1f8571,_0x52198d){return client[_0xe6c7('0xe')](_0x382929,_0x48efb2)[_0xe6c7('0xf')](function(_0x2e4d5a){logger['info']('DashboardItem,\x20%s,\x20%s',_0x25ec9d,'request\x20sent');logger[_0xe6c7('0x10')](_0xe6c7('0x11'),_0x25ec9d,_0xe6c7('0x12'),JSON[_0xe6c7('0x13')](_0x2e4d5a));if(_0x2e4d5a['error']){if(_0x2e4d5a[_0xe6c7('0x14')][_0xe6c7('0x15')]===0x1f4){logger[_0xe6c7('0x14')](_0xe6c7('0x16'),_0x25ec9d,_0x2e4d5a[_0xe6c7('0x14')]['message']);return _0x52198d(_0x2e4d5a[_0xe6c7('0x14')][_0xe6c7('0x17')]);}logger[_0xe6c7('0x14')](_0xe6c7('0x16'),_0x25ec9d,_0x2e4d5a[_0xe6c7('0x14')][_0xe6c7('0x17')]);return _0x1f8571(_0x2e4d5a[_0xe6c7('0x14')][_0xe6c7('0x17')]);}else{logger[_0xe6c7('0x18')](_0xe6c7('0x16'),_0x25ec9d,_0xe6c7('0x12'));_0x1f8571(_0x2e4d5a['result']['message']);}})[_0xe6c7('0x19')](function(_0x1a69f2){logger[_0xe6c7('0x14')]('DashboardItem,\x20%s,\x20%s',_0x25ec9d,_0x1a69f2);_0x52198d(_0x1a69f2);});});}
\ No newline at end of file
+var _0xf311=['request','info','DashboardItem,\x20%s,\x20%s','request\x20sent','DashboardItem,\x20%s,\x20%s,\x20%s','code','error','message','result','moment','randomstring','ioredis','../../mysqldb','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','redis','localhost','socket.io-emitter','./dashboardItem.socket'];(function(_0x17b287,_0x4bed1c){var _0x177054=function(_0x380f78){while(--_0x380f78){_0x17b287['push'](_0x17b287['shift']());}};_0x177054(++_0x4bed1c);}(_0xf311,0xd8));var _0x1f31=function(_0x1cc8fe,_0x105328){_0x1cc8fe=_0x1cc8fe-0x0;var _0x230054=_0xf311[_0x1cc8fe];return _0x230054;};'use strict';var _=require('lodash');var util=require('util');var moment=require(_0x1f31('0x0'));var BPromise=require('bluebird');var rs=require(_0x1f31('0x1'));var fs=require('fs');var Redis=require(_0x1f31('0x2'));var db=require(_0x1f31('0x3'))['db'];var utils=require('../../config/utils');var logger=require(_0x1f31('0x4'))(_0x1f31('0x5'));var config=require(_0x1f31('0x6'));var jayson=require(_0x1f31('0x7'));var client=jayson[_0x1f31('0x8')][_0x1f31('0x9')]({'port':0x232a});config[_0x1f31('0xa')]=_['defaults'](config[_0x1f31('0xa')],{'host':_0x1f31('0xb'),'port':0x18eb});var socket=require(_0x1f31('0xc'))(new Redis(config['redis']));require(_0x1f31('0xd'))['register'](socket);function respondWithRpcPromise(_0x545e88,_0x117708,_0x2b942d){return new BPromise(function(_0x106bb1,_0x5ebf82){return client[_0x1f31('0xe')](_0x545e88,_0x2b942d)['then'](function(_0x28c217){logger[_0x1f31('0xf')](_0x1f31('0x10'),_0x117708,_0x1f31('0x11'));logger['debug'](_0x1f31('0x12'),_0x117708,_0x1f31('0x11'),JSON['stringify'](_0x28c217));if(_0x28c217['error']){if(_0x28c217['error'][_0x1f31('0x13')]===0x1f4){logger[_0x1f31('0x14')](_0x1f31('0x10'),_0x117708,_0x28c217['error'][_0x1f31('0x15')]);return _0x5ebf82(_0x28c217[_0x1f31('0x14')][_0x1f31('0x15')]);}logger[_0x1f31('0x14')]('DashboardItem,\x20%s,\x20%s',_0x117708,_0x28c217['error'][_0x1f31('0x15')]);return _0x106bb1(_0x28c217['error'][_0x1f31('0x15')]);}else{logger[_0x1f31('0xf')](_0x1f31('0x10'),_0x117708,_0x1f31('0x11'));_0x106bb1(_0x28c217[_0x1f31('0x16')][_0x1f31('0x15')]);}})['catch'](function(_0x2f3dd3){logger[_0x1f31('0x14')](_0x1f31('0x10'),_0x117708,_0x2f3dd3);_0x5ebf82(_0x2f3dd3);});});}
\ No newline at end of file
index a3128f4..88e7b7e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8c30=['length','dashboardItem:','./dashboardItem.events','save','remove','update','emit','removeListener','register'];(function(_0x2356ec,_0x515722){var _0x1862ab=function(_0x3db9af){while(--_0x3db9af){_0x2356ec['push'](_0x2356ec['shift']());}};_0x1862ab(++_0x515722);}(_0x8c30,0x1c4));var _0x08c3=function(_0x511ae3,_0xc2d11b){_0x511ae3=_0x511ae3-0x0;var _0x3b80c6=_0x8c30[_0x511ae3];return _0x3b80c6;};'use strict';var DashboardItemEvents=require(_0x08c3('0x0'));var events=[_0x08c3('0x1'),_0x08c3('0x2'),_0x08c3('0x3')];function createListener(_0x181e85,_0x14d9d8){return function(_0x3f40d1){_0x14d9d8[_0x08c3('0x4')](_0x181e85,_0x3f40d1);};}function removeListener(_0xbabaf9,_0x116638){return function(){DashboardItemEvents[_0x08c3('0x5')](_0xbabaf9,_0x116638);};}exports[_0x08c3('0x6')]=function(_0x389beb){for(var _0x5c561b=0x0,_0x3279b8=events[_0x08c3('0x7')];_0x5c561b<_0x3279b8;_0x5c561b++){var _0x24c33f=events[_0x5c561b];var _0xf908d8=createListener(_0x08c3('0x8')+_0x24c33f,_0x389beb);DashboardItemEvents['on'](_0x24c33f,_0xf908d8);}};
\ No newline at end of file
+var _0x76d2=['remove','update','emit','removeListener','register','length','dashboardItem:','save'];(function(_0x483882,_0xa3ee97){var _0x1ce74d=function(_0x3c1b31){while(--_0x3c1b31){_0x483882['push'](_0x483882['shift']());}};_0x1ce74d(++_0xa3ee97);}(_0x76d2,0x197));var _0x276d=function(_0x5eb404,_0x54980f){_0x5eb404=_0x5eb404-0x0;var _0xcd5a4d=_0x76d2[_0x5eb404];return _0xcd5a4d;};'use strict';var DashboardItemEvents=require('./dashboardItem.events');var events=[_0x276d('0x0'),_0x276d('0x1'),_0x276d('0x2')];function createListener(_0x1fa22c,_0x203683){return function(_0x22d2b8){_0x203683[_0x276d('0x3')](_0x1fa22c,_0x22d2b8);};}function removeListener(_0x12b0c5,_0x3268b0){return function(){DashboardItemEvents[_0x276d('0x4')](_0x12b0c5,_0x3268b0);};}exports[_0x276d('0x5')]=function(_0x4421bd){for(var _0x569c48=0x0,_0x5c1d96=events[_0x276d('0x6')];_0x569c48<_0x5c1d96;_0x569c48++){var _0x195ca4=events[_0x569c48];var _0x5ccaea=createListener(_0x276d('0x7')+_0x195ca4,_0x4421bd);DashboardItemEvents['on'](_0x195ca4,_0x5ccaea);}};
\ No newline at end of file
index b233cf7..558203a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6d7b=['fs-extra','../../components/auth/service','../../config/environment','./dashboardItem.controller','get','/:id','show','post','isAuthenticated','create','put','update','delete','destroy','path','connect-timeout','express','Router'];(function(_0x28f922,_0x1302f8){var _0x4eceac=function(_0x2ce5a0){while(--_0x2ce5a0){_0x28f922['push'](_0x28f922['shift']());}};_0x4eceac(++_0x1302f8);}(_0x6d7b,0x1be));var _0xb6d7=function(_0x35d294,_0x3a9b4){_0x35d294=_0x35d294-0x0;var _0xb9ae9a=_0x6d7b[_0x35d294];return _0xb9ae9a;};'use strict';var multer=require('multer');var util=require('util');var path=require(_0xb6d7('0x0'));var timeout=require(_0xb6d7('0x1'));var express=require(_0xb6d7('0x2'));var router=express[_0xb6d7('0x3')]();var fs_extra=require(_0xb6d7('0x4'));var auth=require(_0xb6d7('0x5'));var interaction=require('../../components/interaction/service');var config=require(_0xb6d7('0x6'));var controller=require(_0xb6d7('0x7'));router[_0xb6d7('0x8')](_0xb6d7('0x9'),auth['isAuthenticated'](),controller[_0xb6d7('0xa')]);router[_0xb6d7('0xb')]('/',auth[_0xb6d7('0xc')](),controller[_0xb6d7('0xd')]);router[_0xb6d7('0xe')](_0xb6d7('0x9'),auth['isAuthenticated'](),controller[_0xb6d7('0xf')]);router[_0xb6d7('0x10')](_0xb6d7('0x9'),auth[_0xb6d7('0xc')](),controller[_0xb6d7('0x11')]);module['exports']=router;
\ No newline at end of file
+var _0x23d1=['exports','multer','util','path','connect-timeout','express','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./dashboardItem.controller','get','/:id','post','isAuthenticated','put','update','delete'];(function(_0x146a85,_0x529b52){var _0x1b59bf=function(_0x4af0fd){while(--_0x4af0fd){_0x146a85['push'](_0x146a85['shift']());}};_0x1b59bf(++_0x529b52);}(_0x23d1,0x1d5));var _0x123d=function(_0x2b1d17,_0x13c88f){_0x2b1d17=_0x2b1d17-0x0;var _0x4c0b4b=_0x23d1[_0x2b1d17];return _0x4c0b4b;};'use strict';var multer=require(_0x123d('0x0'));var util=require(_0x123d('0x1'));var path=require(_0x123d('0x2'));var timeout=require(_0x123d('0x3'));var express=require(_0x123d('0x4'));var router=express['Router']();var fs_extra=require(_0x123d('0x5'));var auth=require(_0x123d('0x6'));var interaction=require(_0x123d('0x7'));var config=require(_0x123d('0x8'));var controller=require(_0x123d('0x9'));router[_0x123d('0xa')](_0x123d('0xb'),auth['isAuthenticated'](),controller['show']);router[_0x123d('0xc')]('/',auth[_0x123d('0xd')](),controller['create']);router[_0x123d('0xe')](_0x123d('0xb'),auth[_0x123d('0xd')](),controller[_0x123d('0xf')]);router[_0x123d('0x10')]('/:id',auth['isAuthenticated'](),controller['destroy']);module[_0x123d('0x11')]=router;
\ No newline at end of file
index ff75ad2..c8debeb 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa4c6=['sequelize','exports','STRING','first','second'];(function(_0x57fc3b,_0x5d9040){var _0x3b7653=function(_0x50041a){while(--_0x50041a){_0x57fc3b['push'](_0x57fc3b['shift']());}};_0x3b7653(++_0x5d9040);}(_0xa4c6,0x1ef));var _0x6a4c=function(_0x587212,_0x4c6787){_0x587212=_0x587212-0x0;var _0xc2316a=_0xa4c6[_0x587212];return _0xc2316a;};'use strict';var Sequelize=require(_0x6a4c('0x0'));module[_0x6a4c('0x1')]={'name':{'type':Sequelize[_0x6a4c('0x2')],'allowNull':![]},'level':{'type':Sequelize['ENUM'](_0x6a4c('0x3'),_0x6a4c('0x4'),'third'),'allowNull':![],'defaultValue':_0x6a4c('0x3')},'description':{'type':Sequelize[_0x6a4c('0x2')]}};
\ No newline at end of file
+var _0xe624=['ENUM','first','third','STRING'];(function(_0x144fea,_0x422c9a){var _0x21d993=function(_0x594692){while(--_0x594692){_0x144fea['push'](_0x144fea['shift']());}};_0x21d993(++_0x422c9a);}(_0xe624,0x193));var _0x4e62=function(_0x3eec42,_0x192ed2){_0x3eec42=_0x3eec42-0x0;var _0x110bf0=_0xe624[_0x3eec42];return _0x110bf0;};'use strict';var Sequelize=require('sequelize');module['exports']={'name':{'type':Sequelize[_0x4e62('0x0')],'allowNull':![]},'level':{'type':Sequelize[_0x4e62('0x1')](_0x4e62('0x2'),'second',_0x4e62('0x3')),'allowNull':![],'defaultValue':_0x4e62('0x2')},'description':{'type':Sequelize['STRING']}};
\ No newline at end of file
index 703f4bb..1165047 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6b4c=['status','end','json','offset','limit','undefined','count','set','reject','save','destroy','Dispositions','then','sendStatus','error','name','send','index','map','fieldName','type','key','model','filters','intersection','query','fields','attributes','length','nolimit','order','sort','where','pick','filter','merge','VIRTUAL','options','Disposition','includeAll','include','findAll','catch','show','rawAttributes','find','create','body','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','UserProfileSection','userProfileId','UserProfileResource','update','params','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','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','../../config/logger','api','../../config/environment','../../config/license/util','../../mysqldb'];(function(_0x1444dd,_0x4494de){var _0x37035d=function(_0x15c2ae){while(--_0x15c2ae){_0x1444dd['push'](_0x1444dd['shift']());}};_0x37035d(++_0x4494de);}(_0x6b4c,0x8c));var _0xc6b4=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x6b4c[_0x3dd15e];return _0x231fd0;};'use strict';var emlformat=require(_0xc6b4('0x0'));var rimraf=require(_0xc6b4('0x1'));var zipdir=require(_0xc6b4('0x2'));var jsonpatch=require(_0xc6b4('0x3'));var rp=require(_0xc6b4('0x4'));var moment=require(_0xc6b4('0x5'));var BPromise=require('bluebird');var Mustache=require('mustache');var util=require(_0xc6b4('0x6'));var path=require(_0xc6b4('0x7'));var sox=require(_0xc6b4('0x8'));var csv=require('to-csv');var ejs=require(_0xc6b4('0x9'));var fs=require('fs');var fs_extra=require(_0xc6b4('0xa'));var _=require(_0xc6b4('0xb'));var squel=require(_0xc6b4('0xc'));var crypto=require(_0xc6b4('0xd'));var jsforce=require(_0xc6b4('0xe'));var deskjs=require('desk.js');var toCsv=require(_0xc6b4('0xf'));var querystring=require(_0xc6b4('0x10'));var Papa=require(_0xc6b4('0x11'));var Redis=require(_0xc6b4('0x12'));var authService=require(_0xc6b4('0x13'));var qs=require(_0xc6b4('0x14'));var as=require(_0xc6b4('0x15'));var hardwareService=require(_0xc6b4('0x16'));var logger=require(_0xc6b4('0x17'))(_0xc6b4('0x18'));var utils=require('../../config/utils');var config=require(_0xc6b4('0x19'));var licenseUtil=require(_0xc6b4('0x1a'));var db=require(_0xc6b4('0x1b'))['db'];function respondWithStatusCode(_0x37a6fe,_0x3e9bdd){_0x3e9bdd=_0x3e9bdd||0xcc;return function(_0xc50e17){if(_0xc50e17){return _0x37a6fe['sendStatus'](_0x3e9bdd);}return _0x37a6fe[_0xc6b4('0x1c')](_0x3e9bdd)[_0xc6b4('0x1d')]();};}function respondWithResult(_0x106481,_0x178115){_0x178115=_0x178115||0xc8;return function(_0x3a34a8){if(_0x3a34a8){return _0x106481[_0xc6b4('0x1c')](_0x178115)[_0xc6b4('0x1e')](_0x3a34a8);}};}function respondWithFilteredResult(_0x4c9e58,_0x82a2ae){return function(_0x473f2d){if(_0x473f2d){var _0x60b8ef=typeof _0x82a2ae[_0xc6b4('0x1f')]==='undefined'&&typeof _0x82a2ae[_0xc6b4('0x20')]===_0xc6b4('0x21');var _0x369cbd=_0x473f2d[_0xc6b4('0x22')];var _0x167bb4=_0x60b8ef?0x0:_0x82a2ae[_0xc6b4('0x1f')];var _0x50b8f0=_0x60b8ef?_0x473f2d[_0xc6b4('0x22')]:_0x82a2ae['offset']+_0x82a2ae['limit'];var _0x2d5c21;if(_0x50b8f0>=_0x369cbd){_0x50b8f0=_0x369cbd;_0x2d5c21=0xc8;}else{_0x2d5c21=0xce;}_0x4c9e58[_0xc6b4('0x1c')](_0x2d5c21);return _0x4c9e58[_0xc6b4('0x23')]('Content-Range',_0x167bb4+'-'+_0x50b8f0+'/'+_0x369cbd)['json'](_0x473f2d);}return null;};}function patchUpdates(_0x164d34){return function(_0x4eff46){try{jsonpatch['apply'](_0x4eff46,_0x164d34,!![]);}catch(_0x29cb78){return BPromise[_0xc6b4('0x24')](_0x29cb78);}return _0x4eff46[_0xc6b4('0x25')]();};}function saveUpdates(_0x17291d,_0x43e70e){return function(_0x1e7007){if(_0x1e7007){return _0x1e7007['update'](_0x17291d)['then'](function(_0x281516){return _0x281516;});}return null;};}function removeEntity(_0x470549,_0x58272f){return function(_0x454e5b){if(_0x454e5b){return _0x454e5b[_0xc6b4('0x26')]()['then'](function(){var _0x196901=_0x454e5b['get']({'plain':!![]});var _0x25e5b7=_0xc6b4('0x27');return db['UserProfileResource'][_0xc6b4('0x26')]({'where':{'type':_0x25e5b7,'resourceId':_0x196901['id']}})[_0xc6b4('0x28')](function(){return _0x454e5b;});})['then'](function(){_0x470549['status'](0xcc)['end']();});}};}function handleEntityNotFound(_0x53ece5,_0x281611){return function(_0x46ed83){if(!_0x46ed83){_0x53ece5[_0xc6b4('0x29')](0x194);}return _0x46ed83;};}function handleError(_0x44b267,_0x3ac8bd){_0x3ac8bd=_0x3ac8bd||0x1f4;return function(_0x4c9569){logger[_0xc6b4('0x2a')](_0x4c9569['stack']);if(_0x4c9569[_0xc6b4('0x2b')]){delete _0x4c9569['name'];}_0x44b267[_0xc6b4('0x1c')](_0x3ac8bd)[_0xc6b4('0x2c')](_0x4c9569);};}exports[_0xc6b4('0x2d')]=function(_0x576fcd,_0x3d2521){var _0x429a89={},_0x24e7a7={},_0x54e826={'count':0x0,'rows':[]};var _0x19adbd=_[_0xc6b4('0x2e')](db['Disposition']['rawAttributes'],function(_0x55fcaf){return{'name':_0x55fcaf[_0xc6b4('0x2f')],'type':_0x55fcaf[_0xc6b4('0x30')][_0xc6b4('0x31')]};});_0x24e7a7[_0xc6b4('0x32')]=_[_0xc6b4('0x2e')](_0x19adbd,_0xc6b4('0x2b'));_0x24e7a7['query']=_['keys'](_0x576fcd['query']);_0x24e7a7[_0xc6b4('0x33')]=_[_0xc6b4('0x34')](_0x24e7a7[_0xc6b4('0x32')],_0x24e7a7[_0xc6b4('0x35')]);_0x429a89['attributes']=_[_0xc6b4('0x34')](_0x24e7a7['model'],qs['fields'](_0x576fcd[_0xc6b4('0x35')][_0xc6b4('0x36')]));_0x429a89[_0xc6b4('0x37')]=_0x429a89[_0xc6b4('0x37')][_0xc6b4('0x38')]?_0x429a89[_0xc6b4('0x37')]:_0x24e7a7[_0xc6b4('0x32')];if(!_0x576fcd[_0xc6b4('0x35')]['hasOwnProperty'](_0xc6b4('0x39'))){_0x429a89[_0xc6b4('0x20')]=qs[_0xc6b4('0x20')](_0x576fcd['query']['limit']);_0x429a89['offset']=qs['offset'](_0x576fcd[_0xc6b4('0x35')][_0xc6b4('0x1f')]);}_0x429a89[_0xc6b4('0x3a')]=qs[_0xc6b4('0x3b')](_0x576fcd[_0xc6b4('0x35')]['sort']);_0x429a89[_0xc6b4('0x3c')]=qs[_0xc6b4('0x33')](_[_0xc6b4('0x3d')](_0x576fcd[_0xc6b4('0x35')],_0x24e7a7['filters']),_0x19adbd);if(_0x576fcd[_0xc6b4('0x35')][_0xc6b4('0x3e')]){_0x429a89[_0xc6b4('0x3c')]=_[_0xc6b4('0x3f')](_0x429a89[_0xc6b4('0x3c')],{'$or':_[_0xc6b4('0x2e')](_0x19adbd,function(_0x5c6170){if(_0x5c6170[_0xc6b4('0x30')]!==_0xc6b4('0x40')){var _0xe6394e={};_0xe6394e[_0x5c6170[_0xc6b4('0x2b')]]={'$like':'%'+_0x576fcd[_0xc6b4('0x35')]['filter']+'%'};return _0xe6394e;}})});}_0x429a89=_[_0xc6b4('0x3f')]({},_0x429a89,_0x576fcd[_0xc6b4('0x41')]);var _0x3afb0c={'where':_0x429a89[_0xc6b4('0x3c')]};return db[_0xc6b4('0x42')]['count'](_0x3afb0c)[_0xc6b4('0x28')](function(_0x420821){_0x54e826[_0xc6b4('0x22')]=_0x420821;if(_0x576fcd[_0xc6b4('0x35')][_0xc6b4('0x43')]){_0x429a89[_0xc6b4('0x44')]=[{'all':!![]}];}return db[_0xc6b4('0x42')][_0xc6b4('0x45')](_0x429a89);})[_0xc6b4('0x28')](function(_0x234d91){_0x54e826['rows']=_0x234d91;return _0x54e826;})['then'](respondWithFilteredResult(_0x3d2521,_0x429a89))[_0xc6b4('0x46')](handleError(_0x3d2521,null));};exports[_0xc6b4('0x47')]=function(_0x540d78,_0x31927e){var _0x46fde9={'raw':!![],'where':{'id':_0x540d78['params']['id']}},_0x4935e6={};_0x4935e6[_0xc6b4('0x32')]=_['keys'](db[_0xc6b4('0x42')][_0xc6b4('0x48')]);_0x4935e6[_0xc6b4('0x35')]=_['keys'](_0x540d78[_0xc6b4('0x35')]);_0x4935e6['filters']=_[_0xc6b4('0x34')](_0x4935e6['model'],_0x4935e6[_0xc6b4('0x35')]);_0x46fde9[_0xc6b4('0x37')]=_['intersection'](_0x4935e6[_0xc6b4('0x32')],qs[_0xc6b4('0x36')](_0x540d78['query'][_0xc6b4('0x36')]));_0x46fde9[_0xc6b4('0x37')]=_0x46fde9[_0xc6b4('0x37')][_0xc6b4('0x38')]?_0x46fde9['attributes']:_0x4935e6[_0xc6b4('0x32')];if(_0x540d78[_0xc6b4('0x35')][_0xc6b4('0x43')]){_0x46fde9['include']=[{'all':!![]}];}_0x46fde9=_[_0xc6b4('0x3f')]({},_0x46fde9,_0x540d78[_0xc6b4('0x41')]);return db[_0xc6b4('0x42')][_0xc6b4('0x49')](_0x46fde9)['then'](handleEntityNotFound(_0x31927e,null))[_0xc6b4('0x28')](respondWithResult(_0x31927e,null))[_0xc6b4('0x46')](handleError(_0x31927e,null));};exports['create']=function(_0x36592c,_0xe775fa){return db[_0xc6b4('0x42')][_0xc6b4('0x4a')](_0x36592c[_0xc6b4('0x4b')],{})[_0xc6b4('0x28')](function(_0x71925){var _0x1d51b3=_0x36592c[_0xc6b4('0x4c')]['get']({'plain':!![]});if(!_0x1d51b3)throw new Error(_0xc6b4('0x4d'));if(_0x1d51b3[_0xc6b4('0x4e')]===_0xc6b4('0x4c')){var _0x386622=_0x71925['get']({'plain':!![]});var _0x566141=_0xc6b4('0x27');return db[_0xc6b4('0x4f')][_0xc6b4('0x49')]({'where':{'name':_0x566141,'userProfileId':_0x1d51b3[_0xc6b4('0x50')]},'raw':!![]})[_0xc6b4('0x28')](function(_0xc1cdc5){if(_0xc1cdc5&&_0xc1cdc5['autoAssociation']===0x0){return db[_0xc6b4('0x51')]['create']({'name':_0x386622[_0xc6b4('0x2b')],'resourceId':_0x386622['id'],'type':_0xc1cdc5[_0xc6b4('0x2b')],'sectionId':_0xc1cdc5['id']},{})[_0xc6b4('0x28')](function(){return _0x71925;});}else{return _0x71925;}})[_0xc6b4('0x46')](function(_0x4c1e66){logger[_0xc6b4('0x2a')]('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0x4c1e66);throw _0x4c1e66;});}return _0x71925;})[_0xc6b4('0x28')](respondWithResult(_0xe775fa,0xc9))['catch'](handleError(_0xe775fa,null));};exports[_0xc6b4('0x52')]=function(_0x276f00,_0x43c920){if(_0x276f00[_0xc6b4('0x4b')]['id']){delete _0x276f00[_0xc6b4('0x4b')]['id'];}return db[_0xc6b4('0x42')]['find']({'where':{'id':_0x276f00[_0xc6b4('0x53')]['id']}})[_0xc6b4('0x28')](handleEntityNotFound(_0x43c920,null))[_0xc6b4('0x28')](saveUpdates(_0x276f00['body'],null))['then'](respondWithResult(_0x43c920,null))['catch'](handleError(_0x43c920,null));};exports[_0xc6b4('0x26')]=function(_0x38858d,_0xf9ef21){return db[_0xc6b4('0x42')]['find']({'where':{'id':_0x38858d[_0xc6b4('0x53')]['id']}})[_0xc6b4('0x28')](handleEntityNotFound(_0xf9ef21,null))[_0xc6b4('0x28')](removeEntity(_0xf9ef21,null))[_0xc6b4('0x46')](handleError(_0xf9ef21,null));};
\ No newline at end of file
+var _0x84cd=['jsforce','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','api','../../config/utils','../../config/environment','../../mysqldb','sendStatus','status','end','json','undefined','limit','offset','Content-Range','apply','reject','save','update','then','Dispositions','UserProfileResource','destroy','error','stack','name','index','Disposition','rawAttributes','type','key','model','map','query','keys','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','sort','where','pick','filter','merge','count','include','findAll','catch','show','params','includeAll','options','find','body','user','get','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','autoAssociation','create','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox','to-csv','ejs','fs-extra','lodash','squel','crypto'];(function(_0x460696,_0x21b9df){var _0x41a233=function(_0x41bb1d){while(--_0x41bb1d){_0x460696['push'](_0x460696['shift']());}};_0x41a233(++_0x21b9df);}(_0x84cd,0x193));var _0xd84c=function(_0x56ef1a,_0x47bb44){_0x56ef1a=_0x56ef1a-0x0;var _0x88e4df=_0x84cd[_0x56ef1a];return _0x88e4df;};'use strict';var emlformat=require(_0xd84c('0x0'));var rimraf=require(_0xd84c('0x1'));var zipdir=require(_0xd84c('0x2'));var jsonpatch=require(_0xd84c('0x3'));var rp=require(_0xd84c('0x4'));var moment=require(_0xd84c('0x5'));var BPromise=require(_0xd84c('0x6'));var Mustache=require(_0xd84c('0x7'));var util=require(_0xd84c('0x8'));var path=require(_0xd84c('0x9'));var sox=require(_0xd84c('0xa'));var csv=require(_0xd84c('0xb'));var ejs=require(_0xd84c('0xc'));var fs=require('fs');var fs_extra=require(_0xd84c('0xd'));var _=require(_0xd84c('0xe'));var squel=require(_0xd84c('0xf'));var crypto=require(_0xd84c('0x10'));var jsforce=require(_0xd84c('0x11'));var deskjs=require('desk.js');var toCsv=require(_0xd84c('0xb'));var querystring=require('querystring');var Papa=require(_0xd84c('0x12'));var Redis=require(_0xd84c('0x13'));var authService=require(_0xd84c('0x14'));var qs=require(_0xd84c('0x15'));var as=require(_0xd84c('0x16'));var hardwareService=require('../../config/license/hardware');var logger=require(_0xd84c('0x17'))(_0xd84c('0x18'));var utils=require(_0xd84c('0x19'));var config=require(_0xd84c('0x1a'));var licenseUtil=require('../../config/license/util');var db=require(_0xd84c('0x1b'))['db'];function respondWithStatusCode(_0x17b58f,_0x316e46){_0x316e46=_0x316e46||0xcc;return function(_0xe8800b){if(_0xe8800b){return _0x17b58f[_0xd84c('0x1c')](_0x316e46);}return _0x17b58f[_0xd84c('0x1d')](_0x316e46)[_0xd84c('0x1e')]();};}function respondWithResult(_0x54e874,_0x147e7b){_0x147e7b=_0x147e7b||0xc8;return function(_0x4f4c58){if(_0x4f4c58){return _0x54e874[_0xd84c('0x1d')](_0x147e7b)[_0xd84c('0x1f')](_0x4f4c58);}};}function respondWithFilteredResult(_0x61b292,_0x28006e){return function(_0x3de7ab){if(_0x3de7ab){var _0x14f102=typeof _0x28006e['offset']===_0xd84c('0x20')&&typeof _0x28006e[_0xd84c('0x21')]==='undefined';var _0x48b782=_0x3de7ab['count'];var _0xac75d1=_0x14f102?0x0:_0x28006e[_0xd84c('0x22')];var _0x2e2754=_0x14f102?_0x3de7ab['count']:_0x28006e[_0xd84c('0x22')]+_0x28006e[_0xd84c('0x21')];var _0x29c82c;if(_0x2e2754>=_0x48b782){_0x2e2754=_0x48b782;_0x29c82c=0xc8;}else{_0x29c82c=0xce;}_0x61b292[_0xd84c('0x1d')](_0x29c82c);return _0x61b292['set'](_0xd84c('0x23'),_0xac75d1+'-'+_0x2e2754+'/'+_0x48b782)[_0xd84c('0x1f')](_0x3de7ab);}return null;};}function patchUpdates(_0x9dcdff){return function(_0xa555bf){try{jsonpatch[_0xd84c('0x24')](_0xa555bf,_0x9dcdff,!![]);}catch(_0x407c5c){return BPromise[_0xd84c('0x25')](_0x407c5c);}return _0xa555bf[_0xd84c('0x26')]();};}function saveUpdates(_0x4a6fe9,_0x4bf7a5){return function(_0x580b32){if(_0x580b32){return _0x580b32[_0xd84c('0x27')](_0x4a6fe9)[_0xd84c('0x28')](function(_0x3e1c8e){return _0x3e1c8e;});}return null;};}function removeEntity(_0x911f49,_0x106cac){return function(_0x47627c){if(_0x47627c){return _0x47627c['destroy']()[_0xd84c('0x28')](function(){var _0x48c6b6=_0x47627c['get']({'plain':!![]});var _0x42d846=_0xd84c('0x29');return db[_0xd84c('0x2a')][_0xd84c('0x2b')]({'where':{'type':_0x42d846,'resourceId':_0x48c6b6['id']}})[_0xd84c('0x28')](function(){return _0x47627c;});})[_0xd84c('0x28')](function(){_0x911f49['status'](0xcc)[_0xd84c('0x1e')]();});}};}function handleEntityNotFound(_0x276254,_0x15ce0c){return function(_0x57aca9){if(!_0x57aca9){_0x276254[_0xd84c('0x1c')](0x194);}return _0x57aca9;};}function handleError(_0x5b93ea,_0xdbf845){_0xdbf845=_0xdbf845||0x1f4;return function(_0x5adf26){logger[_0xd84c('0x2c')](_0x5adf26[_0xd84c('0x2d')]);if(_0x5adf26[_0xd84c('0x2e')]){delete _0x5adf26[_0xd84c('0x2e')];}_0x5b93ea[_0xd84c('0x1d')](_0xdbf845)['send'](_0x5adf26);};}exports[_0xd84c('0x2f')]=function(_0x17e171,_0x3419d6){var _0x487c8c={},_0x13e707={},_0x281ab2={'count':0x0,'rows':[]};var _0x17b020=_['map'](db[_0xd84c('0x30')][_0xd84c('0x31')],function(_0x34fb20){return{'name':_0x34fb20['fieldName'],'type':_0x34fb20[_0xd84c('0x32')][_0xd84c('0x33')]};});_0x13e707[_0xd84c('0x34')]=_[_0xd84c('0x35')](_0x17b020,_0xd84c('0x2e'));_0x13e707[_0xd84c('0x36')]=_[_0xd84c('0x37')](_0x17e171[_0xd84c('0x36')]);_0x13e707[_0xd84c('0x38')]=_[_0xd84c('0x39')](_0x13e707['model'],_0x13e707['query']);_0x487c8c[_0xd84c('0x3a')]=_['intersection'](_0x13e707[_0xd84c('0x34')],qs[_0xd84c('0x3b')](_0x17e171[_0xd84c('0x36')][_0xd84c('0x3b')]));_0x487c8c['attributes']=_0x487c8c['attributes'][_0xd84c('0x3c')]?_0x487c8c[_0xd84c('0x3a')]:_0x13e707[_0xd84c('0x34')];if(!_0x17e171[_0xd84c('0x36')][_0xd84c('0x3d')](_0xd84c('0x3e'))){_0x487c8c[_0xd84c('0x21')]=qs['limit'](_0x17e171['query'][_0xd84c('0x21')]);_0x487c8c['offset']=qs['offset'](_0x17e171[_0xd84c('0x36')][_0xd84c('0x22')]);}_0x487c8c['order']=qs[_0xd84c('0x3f')](_0x17e171[_0xd84c('0x36')][_0xd84c('0x3f')]);_0x487c8c[_0xd84c('0x40')]=qs[_0xd84c('0x38')](_[_0xd84c('0x41')](_0x17e171[_0xd84c('0x36')],_0x13e707[_0xd84c('0x38')]),_0x17b020);if(_0x17e171[_0xd84c('0x36')][_0xd84c('0x42')]){_0x487c8c[_0xd84c('0x40')]=_['merge'](_0x487c8c[_0xd84c('0x40')],{'$or':_[_0xd84c('0x35')](_0x17b020,function(_0x4cf4ce){if(_0x4cf4ce[_0xd84c('0x32')]!=='VIRTUAL'){var _0x286533={};_0x286533[_0x4cf4ce[_0xd84c('0x2e')]]={'$like':'%'+_0x17e171[_0xd84c('0x36')][_0xd84c('0x42')]+'%'};return _0x286533;}})});}_0x487c8c=_[_0xd84c('0x43')]({},_0x487c8c,_0x17e171['options']);var _0x233cee={'where':_0x487c8c[_0xd84c('0x40')]};return db[_0xd84c('0x30')][_0xd84c('0x44')](_0x233cee)[_0xd84c('0x28')](function(_0x47a318){_0x281ab2[_0xd84c('0x44')]=_0x47a318;if(_0x17e171['query']['includeAll']){_0x487c8c[_0xd84c('0x45')]=[{'all':!![]}];}return db[_0xd84c('0x30')][_0xd84c('0x46')](_0x487c8c);})['then'](function(_0x4dd3f2){_0x281ab2['rows']=_0x4dd3f2;return _0x281ab2;})[_0xd84c('0x28')](respondWithFilteredResult(_0x3419d6,_0x487c8c))[_0xd84c('0x47')](handleError(_0x3419d6,null));};exports[_0xd84c('0x48')]=function(_0x39fd0a,_0x215029){var _0x4566cf={'raw':!![],'where':{'id':_0x39fd0a[_0xd84c('0x49')]['id']}},_0x2b94b8={};_0x2b94b8[_0xd84c('0x34')]=_[_0xd84c('0x37')](db[_0xd84c('0x30')][_0xd84c('0x31')]);_0x2b94b8[_0xd84c('0x36')]=_[_0xd84c('0x37')](_0x39fd0a[_0xd84c('0x36')]);_0x2b94b8[_0xd84c('0x38')]=_[_0xd84c('0x39')](_0x2b94b8['model'],_0x2b94b8[_0xd84c('0x36')]);_0x4566cf['attributes']=_[_0xd84c('0x39')](_0x2b94b8[_0xd84c('0x34')],qs[_0xd84c('0x3b')](_0x39fd0a[_0xd84c('0x36')]['fields']));_0x4566cf[_0xd84c('0x3a')]=_0x4566cf[_0xd84c('0x3a')][_0xd84c('0x3c')]?_0x4566cf[_0xd84c('0x3a')]:_0x2b94b8[_0xd84c('0x34')];if(_0x39fd0a[_0xd84c('0x36')][_0xd84c('0x4a')]){_0x4566cf[_0xd84c('0x45')]=[{'all':!![]}];}_0x4566cf=_[_0xd84c('0x43')]({},_0x4566cf,_0x39fd0a[_0xd84c('0x4b')]);return db['Disposition'][_0xd84c('0x4c')](_0x4566cf)[_0xd84c('0x28')](handleEntityNotFound(_0x215029,null))[_0xd84c('0x28')](respondWithResult(_0x215029,null))[_0xd84c('0x47')](handleError(_0x215029,null));};exports['create']=function(_0x3dca89,_0x1b178b){return db[_0xd84c('0x30')]['create'](_0x3dca89[_0xd84c('0x4d')],{})[_0xd84c('0x28')](function(_0x1b591d){var _0x3e35d9=_0x3dca89[_0xd84c('0x4e')][_0xd84c('0x4f')]({'plain':!![]});if(!_0x3e35d9)throw new Error(_0xd84c('0x50'));if(_0x3e35d9[_0xd84c('0x51')]==='user'){var _0x3ab13f=_0x1b591d[_0xd84c('0x4f')]({'plain':!![]});var _0x14cb78='Dispositions';return db['UserProfileSection'][_0xd84c('0x4c')]({'where':{'name':_0x14cb78,'userProfileId':_0x3e35d9['userProfileId']},'raw':!![]})[_0xd84c('0x28')](function(_0x486c3f){if(_0x486c3f&&_0x486c3f[_0xd84c('0x52')]===0x0){return db[_0xd84c('0x2a')][_0xd84c('0x53')]({'name':_0x3ab13f[_0xd84c('0x2e')],'resourceId':_0x3ab13f['id'],'type':_0x486c3f[_0xd84c('0x2e')],'sectionId':_0x486c3f['id']},{})[_0xd84c('0x28')](function(){return _0x1b591d;});}else{return _0x1b591d;}})[_0xd84c('0x47')](function(_0x3cff19){logger[_0xd84c('0x2c')]('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0x3cff19);throw _0x3cff19;});}return _0x1b591d;})[_0xd84c('0x28')](respondWithResult(_0x1b178b,0xc9))[_0xd84c('0x47')](handleError(_0x1b178b,null));};exports[_0xd84c('0x27')]=function(_0xd15484,_0x4c4357){if(_0xd15484['body']['id']){delete _0xd15484['body']['id'];}return db[_0xd84c('0x30')][_0xd84c('0x4c')]({'where':{'id':_0xd15484['params']['id']}})['then'](handleEntityNotFound(_0x4c4357,null))[_0xd84c('0x28')](saveUpdates(_0xd15484[_0xd84c('0x4d')],null))['then'](respondWithResult(_0x4c4357,null))[_0xd84c('0x47')](handleError(_0x4c4357,null));};exports[_0xd84c('0x2b')]=function(_0x3ed29a,_0x89c0ec){return db[_0xd84c('0x30')][_0xd84c('0x4c')]({'where':{'id':_0x3ed29a[_0xd84c('0x49')]['id']}})[_0xd84c('0x28')](handleEntityNotFound(_0x89c0ec,null))[_0xd84c('0x28')](removeEntity(_0x89c0ec,null))[_0xd84c('0x47')](handleError(_0x89c0ec,null));};
\ No newline at end of file
index 6691459..c1bd45a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x696b=['name_sms','SmsAccountId','name_fax','FaxAccountId','name_openchannel','OpenchannelAccountId','name_whatsapp','WhatsappAccountId','lodash','util','api','moment','bluebird','request-promise','path','rimraf','../../config/environment','define','tools_dispositions','name_voice','name_chat','name','ChatWebsiteId','name_mail'];(function(_0x540dcb,_0x4eacb6){var _0x49353c=function(_0x449bb1){while(--_0x449bb1){_0x540dcb['push'](_0x540dcb['shift']());}};_0x49353c(++_0x4eacb6);}(_0x696b,0xc8));var _0xb696=function(_0xa1ab7b,_0x56320f){_0xa1ab7b=_0xa1ab7b-0x0;var _0x5ddbe0=_0x696b[_0xa1ab7b];return _0x5ddbe0;};'use strict';var _=require(_0xb696('0x0'));var util=require(_0xb696('0x1'));var logger=require('../../config/logger')(_0xb696('0x2'));var moment=require(_0xb696('0x3'));var BPromise=require(_0xb696('0x4'));var rp=require(_0xb696('0x5'));var fs=require('fs');var path=require(_0xb696('0x6'));var rimraf=require(_0xb696('0x7'));var config=require(_0xb696('0x8'));var attributes=require('./disposition.attributes');module['exports']=function(_0x55d7c8,_0x12212c){return _0x55d7c8[_0xb696('0x9')]('Disposition',attributes,{'tableName':_0xb696('0xa'),'paranoid':![],'indexes':[{'unique':!![],'name':_0xb696('0xb'),'fields':['name','ListId']},{'unique':!![],'name':_0xb696('0xc'),'fields':[_0xb696('0xd'),_0xb696('0xe')]},{'unique':!![],'name':_0xb696('0xf'),'fields':[_0xb696('0xd'),'MailAccountId']},{'unique':!![],'name':_0xb696('0x10'),'fields':[_0xb696('0xd'),_0xb696('0x11')]},{'unique':!![],'name':_0xb696('0x12'),'fields':[_0xb696('0xd'),_0xb696('0x13')]},{'unique':!![],'name':_0xb696('0x14'),'fields':[_0xb696('0xd'),_0xb696('0x15')]},{'unique':!![],'name':_0xb696('0x16'),'fields':[_0xb696('0xd'),_0xb696('0x17')]}],'timestamps':!![]});};
\ No newline at end of file
+var _0x11cb=['name_sms','name_fax','FaxAccountId','name_openchannel','OpenchannelAccountId','name_whatsapp','util','../../config/logger','api','moment','request-promise','path','../../config/environment','exports','define','Disposition','tools_dispositions','name','ListId','name_chat','name_mail','MailAccountId'];(function(_0x4cc579,_0x18a743){var _0x495123=function(_0xf88889){while(--_0xf88889){_0x4cc579['push'](_0x4cc579['shift']());}};_0x495123(++_0x18a743);}(_0x11cb,0x1d4));var _0xb11c=function(_0x4bf8b8,_0x427f75){_0x4bf8b8=_0x4bf8b8-0x0;var _0x293646=_0x11cb[_0x4bf8b8];return _0x293646;};'use strict';var _=require('lodash');var util=require(_0xb11c('0x0'));var logger=require(_0xb11c('0x1'))(_0xb11c('0x2'));var moment=require(_0xb11c('0x3'));var BPromise=require('bluebird');var rp=require(_0xb11c('0x4'));var fs=require('fs');var path=require(_0xb11c('0x5'));var rimraf=require('rimraf');var config=require(_0xb11c('0x6'));var attributes=require('./disposition.attributes');module[_0xb11c('0x7')]=function(_0x321083,_0x1323c9){return _0x321083[_0xb11c('0x8')](_0xb11c('0x9'),attributes,{'tableName':_0xb11c('0xa'),'paranoid':![],'indexes':[{'unique':!![],'name':'name_voice','fields':[_0xb11c('0xb'),_0xb11c('0xc')]},{'unique':!![],'name':_0xb11c('0xd'),'fields':['name','ChatWebsiteId']},{'unique':!![],'name':_0xb11c('0xe'),'fields':[_0xb11c('0xb'),_0xb11c('0xf')]},{'unique':!![],'name':_0xb11c('0x10'),'fields':[_0xb11c('0xb'),'SmsAccountId']},{'unique':!![],'name':_0xb11c('0x11'),'fields':[_0xb11c('0xb'),_0xb11c('0x12')]},{'unique':!![],'name':_0xb11c('0x13'),'fields':['name',_0xb11c('0x14')]},{'unique':!![],'name':_0xb11c('0x15'),'fields':[_0xb11c('0xb'),'WhatsappAccountId']}],'timestamps':!![]});};
\ No newline at end of file
index 0553a74..0fbff56 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(_0xf64c0,_0x42778e){var _0x3cd2ef=function(_0x226342){while(--_0x226342){_0xf64c0['push'](_0xf64c0['shift']());}};_0x3cd2ef(++_0x42778e);}(_0xa9e0,0x123));var _0x0a9e=function(_0x47b58b,_0x41a189){_0x47b58b=_0x47b58b-0x0;var _0x46bebe=_0xa9e0[_0x47b58b];return _0x46bebe;};'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(_0x56445a,_0x5965f2){var _0x5423b4=function(_0x5d447a){while(--_0x5d447a){_0x56445a['push'](_0x56445a['shift']());}};_0x5423b4(++_0x5965f2);}(_0xa9e0,0x123));var _0x0a9e=function(_0x4243a3,_0x447337){_0x4243a3=_0x4243a3-0x0;var _0x1b2a33=_0xa9e0[_0x4243a3];return _0x1b2a33;};'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 6dcf5a7..05d6a3d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7e41=['connect-timeout','express','../../components/auth/service','../../components/interaction/service','../../config/environment','./disposition.controller','get','isAuthenticated','index','/:id','show','post','update','delete','destroy','exports','util','path'];(function(_0x4617a8,_0x4ad7be){var _0x2c1f66=function(_0x3d8460){while(--_0x3d8460){_0x4617a8['push'](_0x4617a8['shift']());}};_0x2c1f66(++_0x4ad7be);}(_0x7e41,0x10c));var _0x17e4=function(_0x5dba4d,_0x3f092e){_0x5dba4d=_0x5dba4d-0x0;var _0x2f7614=_0x7e41[_0x5dba4d];return _0x2f7614;};'use strict';var multer=require('multer');var util=require(_0x17e4('0x0'));var path=require(_0x17e4('0x1'));var timeout=require(_0x17e4('0x2'));var express=require(_0x17e4('0x3'));var router=express['Router']();var fs_extra=require('fs-extra');var auth=require(_0x17e4('0x4'));var interaction=require(_0x17e4('0x5'));var config=require(_0x17e4('0x6'));var controller=require(_0x17e4('0x7'));router[_0x17e4('0x8')]('/',auth[_0x17e4('0x9')](),controller[_0x17e4('0xa')]);router[_0x17e4('0x8')](_0x17e4('0xb'),auth[_0x17e4('0x9')](),controller[_0x17e4('0xc')]);router[_0x17e4('0xd')]('/',auth[_0x17e4('0x9')](),controller['create']);router['put'](_0x17e4('0xb'),auth['isAuthenticated'](),controller[_0x17e4('0xe')]);router[_0x17e4('0xf')](_0x17e4('0xb'),auth[_0x17e4('0x9')](),controller[_0x17e4('0x10')]);module[_0x17e4('0x11')]=router;
\ No newline at end of file
+var _0x47a9=['post','create','update','destroy','multer','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','get','isAuthenticated','/:id','show'];(function(_0x302339,_0x315424){var _0x1b25a5=function(_0x18ae76){while(--_0x18ae76){_0x302339['push'](_0x302339['shift']());}};_0x1b25a5(++_0x315424);}(_0x47a9,0x190));var _0x947a=function(_0x3841a1,_0x2ee1cb){_0x3841a1=_0x3841a1-0x0;var _0x50ab75=_0x47a9[_0x3841a1];return _0x50ab75;};'use strict';var multer=require(_0x947a('0x0'));var util=require(_0x947a('0x1'));var path=require(_0x947a('0x2'));var timeout=require(_0x947a('0x3'));var express=require(_0x947a('0x4'));var router=express[_0x947a('0x5')]();var fs_extra=require(_0x947a('0x6'));var auth=require(_0x947a('0x7'));var interaction=require(_0x947a('0x8'));var config=require(_0x947a('0x9'));var controller=require('./disposition.controller');router[_0x947a('0xa')]('/',auth[_0x947a('0xb')](),controller['index']);router[_0x947a('0xa')](_0x947a('0xc'),auth[_0x947a('0xb')](),controller[_0x947a('0xd')]);router[_0x947a('0xe')]('/',auth[_0x947a('0xb')](),controller[_0x947a('0xf')]);router['put'](_0x947a('0xc'),auth['isAuthenticated'](),controller[_0x947a('0x10')]);router['delete'](_0x947a('0xc'),auth[_0x947a('0xb')](),controller[_0x947a('0x11')]);module['exports']=router;
\ No newline at end of file
index f907175..36e7241 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7b70=['v17,v27,v29','INTEGER','SIP','IAX','DADHI','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','mandatoryDispositionPauseId','mandatoryDisposition','exports','STRING','ENUM','yes','localstationid','2400','7200','9600','12000','14400','4800'];(function(_0x361755,_0x1bdd34){var _0x109adc=function(_0xc9e8e6){while(--_0xc9e8e6){_0x361755['push'](_0x361755['shift']());}};_0x109adc(++_0x1bdd34);}(_0x7b70,0x19e));var _0x07b7=function(_0xaa1b3e,_0x47d976){_0xaa1b3e=_0xaa1b3e-0x0;var _0x454d7d=_0x7b70[_0xaa1b3e];return _0x454d7d;};'use strict';var Sequelize=require('sequelize');module[_0x07b7('0x0')]={'name':{'type':Sequelize[_0x07b7('0x1')],'allowNull':![],'validate':{'notEmpty':!![]}},'description':{'type':Sequelize[_0x07b7('0x1')]},'ecm':{'type':Sequelize[_0x07b7('0x2')](_0x07b7('0x3'),'no'),'defaultValue':'yes'},'headerinfo':{'type':Sequelize[_0x07b7('0x1')],'defaultValue':'xCALLY\x20Motion\x20Fax'},'localstationid':{'type':Sequelize[_0x07b7('0x1')],'unique':_0x07b7('0x4')},'minrate':{'type':Sequelize[_0x07b7('0x2')](_0x07b7('0x5'),'4800',_0x07b7('0x6'),_0x07b7('0x7'),_0x07b7('0x8'),_0x07b7('0x9')),'defaultValue':'4800'},'maxrate':{'type':Sequelize['ENUM'](_0x07b7('0x5'),_0x07b7('0xa'),_0x07b7('0x6'),_0x07b7('0x7'),_0x07b7('0x8'),_0x07b7('0x9')),'defaultValue':_0x07b7('0x9')},'modem':{'type':Sequelize[_0x07b7('0x1')],'defaultValue':_0x07b7('0xb')},'gateway':{'type':Sequelize[_0x07b7('0x1')],'defaultValue':'no','validate':{'is':/^(?:yes|no|[0-9]+)$/}},'faxdetect':{'type':Sequelize[_0x07b7('0x1')],'defaultValue':'no','validate':{'is':/^(?:yes|no|t38|cng|[0-9]+)$/}},'t38timeout':{'type':Sequelize[_0x07b7('0xc')],'defaultValue':0x1388,'validate':{'min':0x3e8}},'tech':{'type':Sequelize['ENUM'](_0x07b7('0xd'),_0x07b7('0xe'),_0x07b7('0xf'),_0x07b7('0x10')),'defaultValue':_0x07b7('0xd')},'key':{'type':Sequelize['STRING'],'allowNull':![]},'notificationTemplate':{'type':Sequelize[_0x07b7('0x11')],'defaultValue':function(){return _0x07b7('0x12');}},'notificationSound':{'type':Sequelize[_0x07b7('0x13')],'defaultValue':!![]},'notificationShake':{'type':Sequelize[_0x07b7('0x13')],'defaultValue':![]},'waitForTheAssignedAgent':{'type':Sequelize[_0x07b7('0xc')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0xa},'queueTransfer':{'type':Sequelize[_0x07b7('0x13')],'defaultValue':![]},'queueTransferTimeout':{'type':Sequelize[_0x07b7('0xc')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0x12c},'agentTransfer':{'type':Sequelize[_0x07b7('0x13')],'defaultValue':![]},'agentTransferTimeout':{'type':Sequelize['INTEGER'],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0x12c},'mandatoryDispositionPauseId':{'type':Sequelize[_0x07b7('0xc')],'allowNull':!![],'defaultValue':null,'comment':_0x07b7('0x14')},'mandatoryDisposition':{'type':Sequelize[_0x07b7('0x13')],'defaultValue':![],'comment':_0x07b7('0x15'),'set':function(_0x272478){if(!_0x272478)this[_0x07b7('0x16')](_0x07b7('0x17'),null);this[_0x07b7('0x16')](_0x07b7('0x18'),_0x272478);}}};
\ No newline at end of file
+var _0x960b=['BOOLEAN','INTEGER','Status\x20to\x20put\x20when\x20mandatory\x20disposition\x20is\x20enabled','Enabled/disables\x20mandatory\x20dispo\x20on\x20a\x20queue','setDataValue','mandatoryDisposition','sequelize','exports','STRING','ENUM','yes','xCALLY\x20Motion\x20Fax','2400','4800','9600','12000','7200','14400','v17,v27,v29','SIP','IAX','KHOMP','Account:\x20{{account.name}}<br/>{{#queue}}Queue:\x20{{queue.name}}<br/>{{/queue}}From\x20:\x20{{from}}'];(function(_0x45bf86,_0x75586e){var _0x1f02b7=function(_0x1ea8a3){while(--_0x1ea8a3){_0x45bf86['push'](_0x45bf86['shift']());}};_0x1f02b7(++_0x75586e);}(_0x960b,0x1a4));var _0xb960=function(_0x1e6018,_0x3cff20){_0x1e6018=_0x1e6018-0x0;var _0x1b42b8=_0x960b[_0x1e6018];return _0x1b42b8;};'use strict';var Sequelize=require(_0xb960('0x0'));module[_0xb960('0x1')]={'name':{'type':Sequelize[_0xb960('0x2')],'allowNull':![],'validate':{'notEmpty':!![]}},'description':{'type':Sequelize[_0xb960('0x2')]},'ecm':{'type':Sequelize[_0xb960('0x3')](_0xb960('0x4'),'no'),'defaultValue':'yes'},'headerinfo':{'type':Sequelize[_0xb960('0x2')],'defaultValue':_0xb960('0x5')},'localstationid':{'type':Sequelize[_0xb960('0x2')],'unique':'localstationid'},'minrate':{'type':Sequelize[_0xb960('0x3')](_0xb960('0x6'),_0xb960('0x7'),'7200',_0xb960('0x8'),_0xb960('0x9'),'14400'),'defaultValue':_0xb960('0x7')},'maxrate':{'type':Sequelize[_0xb960('0x3')](_0xb960('0x6'),_0xb960('0x7'),_0xb960('0xa'),_0xb960('0x8'),_0xb960('0x9'),_0xb960('0xb')),'defaultValue':_0xb960('0xb')},'modem':{'type':Sequelize[_0xb960('0x2')],'defaultValue':_0xb960('0xc')},'gateway':{'type':Sequelize[_0xb960('0x2')],'defaultValue':'no','validate':{'is':/^(?:yes|no|[0-9]+)$/}},'faxdetect':{'type':Sequelize[_0xb960('0x2')],'defaultValue':'no','validate':{'is':/^(?:yes|no|t38|cng|[0-9]+)$/}},'t38timeout':{'type':Sequelize['INTEGER'],'defaultValue':0x1388,'validate':{'min':0x3e8}},'tech':{'type':Sequelize[_0xb960('0x3')](_0xb960('0xd'),_0xb960('0xe'),'DADHI',_0xb960('0xf')),'defaultValue':_0xb960('0xd')},'key':{'type':Sequelize[_0xb960('0x2')],'allowNull':![]},'notificationTemplate':{'type':Sequelize['TEXT'],'defaultValue':function(){return _0xb960('0x10');}},'notificationSound':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]},'notificationShake':{'type':Sequelize[_0xb960('0x11')],'defaultValue':![]},'waitForTheAssignedAgent':{'type':Sequelize[_0xb960('0x12')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0xa},'queueTransfer':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'queueTransferTimeout':{'type':Sequelize[_0xb960('0x12')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0x12c},'agentTransfer':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'agentTransferTimeout':{'type':Sequelize[_0xb960('0x12')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0x12c},'mandatoryDispositionPauseId':{'type':Sequelize[_0xb960('0x12')],'allowNull':!![],'defaultValue':null,'comment':_0xb960('0x13')},'mandatoryDisposition':{'type':Sequelize[_0xb960('0x11')],'defaultValue':![],'comment':_0xb960('0x14'),'set':function(_0x57fdfe){if(!_0x57fdfe)this[_0xb960('0x15')]('mandatoryDispositionPauseId',null);this[_0xb960('0x15')](_0xb960('0x16'),_0x57fdfe);}}};
\ No newline at end of file
index b6aaa1d..22f267d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5f86=['name','query','keys','filters','intersection','attributes','fields','length','nolimit','order','sort','where','filter','merge','VIRTUAL','options','includeAll','include','findAll','show','params','create','body','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','UserProfileSection','find','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','update','describe','FaxAccountId','Disposition','getDispositions','hasOwnProperty','pick','rows','removeDispositions','ids','addAnswer','CannedAnswer','getAnswers','removeAnswers','addInteraction','FaxInteraction','getInteractions','findOne','Contact','User','fullname','internal','Tag','Tags','color','tag','sequelize','transaction','FaxApplication','findAndCountAll','getApplications','context','exten','app','system','description','priority','appdata','push','Answer','CDR(type)=inbound-fax','ecm','localstationid','gateway','faxdetect','headerinfo','maxrate','minrate','modem','Set','Wait','/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','bulkCreate','omit','createdAt','updatedAt','TrunkId','ListId','findById','getMessages','FaxMessage','$gte','split','format','YYYY-MM-DD\x20HH:mm:ss','send','CmList','List','Contacts','attachments','join','root','server/files/attachments','basename','isNil','from','\x22%s\x22\x20<%s>','CmContact','defaults','List\x20not\x20found','out','filename','Contact\x20not\x20found','ContactId','dataValues','Messages','SendFax','SendFaxRpc,\x20%s','addAgents','spread','emit','userFaxAccount:save','removeAgents','isArray','userFaxAccount:remove','getAgents','eml-format','fast-json-patch','moment','bluebird','util','path','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','querystring','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/license/util','../../mysqldb','redis','localhost','socket.io-emitter','./faxAccount.socket','register','jayson/promise','client','http','then','info','FaxAccount,\x20%s,\x20%s','request\x20sent','debug','FaxAccount,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','status','end','json','offset','undefined','limit','count','set','Content-Range','reject','save','destroy','get','FaxAccounts','UserProfileResource','sendStatus','stack','index','Pause','mandatoryDispositionPause','map','FaxAccount','rawAttributes','type','key','model'];(function(_0xd553ab,_0x788918){var _0x215442=function(_0x5b32f8){while(--_0x5b32f8){_0xd553ab['push'](_0xd553ab['shift']());}};_0x215442(++_0x788918);}(_0x5f86,0x147));var _0x65f8=function(_0x4aa222,_0x103892){_0x4aa222=_0x4aa222-0x0;var _0x3e9fc0=_0x5f86[_0x4aa222];return _0x3e9fc0;};'use strict';var emlformat=require(_0x65f8('0x0'));var rimraf=require('rimraf');var zipdir=require('zip-dir');var jsonpatch=require(_0x65f8('0x1'));var rp=require('request-promise');var moment=require(_0x65f8('0x2'));var BPromise=require(_0x65f8('0x3'));var Mustache=require('mustache');var util=require(_0x65f8('0x4'));var path=require(_0x65f8('0x5'));var sox=require(_0x65f8('0x6'));var csv=require(_0x65f8('0x7'));var ejs=require(_0x65f8('0x8'));var fs=require('fs');var fs_extra=require(_0x65f8('0x9'));var _=require(_0x65f8('0xa'));var squel=require(_0x65f8('0xb'));var crypto=require(_0x65f8('0xc'));var jsforce=require('jsforce');var deskjs=require('desk.js');var toCsv=require(_0x65f8('0x7'));var querystring=require(_0x65f8('0xd'));var Papa=require('papaparse');var Redis=require(_0x65f8('0xe'));var authService=require(_0x65f8('0xf'));var qs=require('../../components/parsers/qs');var as=require(_0x65f8('0x10'));var hardwareService=require(_0x65f8('0x11'));var logger=require(_0x65f8('0x12'))(_0x65f8('0x13'));var utils=require(_0x65f8('0x14'));var config=require('../../config/environment');var licenseUtil=require(_0x65f8('0x15'));var db=require(_0x65f8('0x16'))['db'];config[_0x65f8('0x17')]=_['defaults'](config[_0x65f8('0x17')],{'host':_0x65f8('0x18'),'port':0x18eb});var socket=require(_0x65f8('0x19'))(new Redis(config[_0x65f8('0x17')]));require(_0x65f8('0x1a'))[_0x65f8('0x1b')](socket);var jayson=require(_0x65f8('0x1c'));var client=jayson[_0x65f8('0x1d')][_0x65f8('0x1e')]({'port':0x232c});var client9002=jayson[_0x65f8('0x1d')][_0x65f8('0x1e')]({'port':0x232a});function respondWithRpcPromise(_0x27423c,_0x15d2ba,_0x31c663,_0x599ef8){return new BPromise(function(_0x43cbf1,_0x5374d8){var _0x3ad42a=_0x599ef8||client;return _0x3ad42a['request'](_0x27423c,_0x31c663)[_0x65f8('0x1f')](function(_0x408a25){logger[_0x65f8('0x20')](_0x65f8('0x21'),_0x15d2ba,_0x65f8('0x22'));logger[_0x65f8('0x23')](_0x65f8('0x24'),_0x15d2ba,_0x65f8('0x22'),JSON[_0x65f8('0x25')](_0x408a25));if(_0x408a25[_0x65f8('0x26')]){if(_0x408a25[_0x65f8('0x26')][_0x65f8('0x27')]===0x1f4){logger[_0x65f8('0x26')](_0x65f8('0x21'),_0x15d2ba,_0x408a25['error'][_0x65f8('0x28')]);return _0x5374d8(_0x408a25[_0x65f8('0x26')][_0x65f8('0x28')]);}logger['error'](_0x65f8('0x21'),_0x15d2ba,_0x408a25[_0x65f8('0x26')][_0x65f8('0x28')]);return _0x43cbf1(_0x408a25[_0x65f8('0x26')][_0x65f8('0x28')]);}else{logger['info']('FaxAccount,\x20%s,\x20%s',_0x15d2ba,'request\x20sent');_0x43cbf1(_0x408a25[_0x65f8('0x29')][_0x65f8('0x28')]);}})[_0x65f8('0x2a')](function(_0x278d53){logger[_0x65f8('0x26')](_0x65f8('0x21'),_0x15d2ba,_0x278d53);_0x5374d8(_0x278d53);});});}function respondWithStatusCode(_0x46259a,_0x28eabb){_0x28eabb=_0x28eabb||0xcc;return function(_0xc1ab31){if(_0xc1ab31){return _0x46259a['sendStatus'](_0x28eabb);}return _0x46259a[_0x65f8('0x2b')](_0x28eabb)[_0x65f8('0x2c')]();};}function respondWithResult(_0x20a33a,_0x2b251b){_0x2b251b=_0x2b251b||0xc8;return function(_0x1c08bd){if(_0x1c08bd){return _0x20a33a[_0x65f8('0x2b')](_0x2b251b)[_0x65f8('0x2d')](_0x1c08bd);}};}function respondWithFilteredResult(_0x3dd6fe,_0xcbe5e9){return function(_0xac914f){if(_0xac914f){var _0x5156ad=typeof _0xcbe5e9[_0x65f8('0x2e')]===_0x65f8('0x2f')&&typeof _0xcbe5e9[_0x65f8('0x30')]===_0x65f8('0x2f');var _0x27345a=_0xac914f[_0x65f8('0x31')];var _0x5b582=_0x5156ad?0x0:_0xcbe5e9[_0x65f8('0x2e')];var _0x49fedd=_0x5156ad?_0xac914f['count']:_0xcbe5e9[_0x65f8('0x2e')]+_0xcbe5e9[_0x65f8('0x30')];var _0x4e0724;if(_0x49fedd>=_0x27345a){_0x49fedd=_0x27345a;_0x4e0724=0xc8;}else{_0x4e0724=0xce;}_0x3dd6fe[_0x65f8('0x2b')](_0x4e0724);return _0x3dd6fe[_0x65f8('0x32')](_0x65f8('0x33'),_0x5b582+'-'+_0x49fedd+'/'+_0x27345a)[_0x65f8('0x2d')](_0xac914f);}return null;};}function patchUpdates(_0x548558){return function(_0x3e6328){try{jsonpatch['apply'](_0x3e6328,_0x548558,!![]);}catch(_0x2656ad){return BPromise[_0x65f8('0x34')](_0x2656ad);}return _0x3e6328[_0x65f8('0x35')]();};}function saveUpdates(_0x56afd6,_0x341117){return function(_0x1a5957){if(_0x1a5957){return _0x1a5957['update'](_0x56afd6)[_0x65f8('0x1f')](function(_0x36cc16){return _0x36cc16;});}return null;};}function removeEntity(_0x4686b0,_0xc4720f){return function(_0x42eeec){if(_0x42eeec){return _0x42eeec[_0x65f8('0x36')]()[_0x65f8('0x1f')](function(){var _0x3cd9c6=_0x42eeec[_0x65f8('0x37')]({'plain':!![]});var _0x5cfb64=_0x65f8('0x38');return db[_0x65f8('0x39')][_0x65f8('0x36')]({'where':{'type':_0x5cfb64,'resourceId':_0x3cd9c6['id']}})['then'](function(){return _0x42eeec;});})[_0x65f8('0x1f')](function(){_0x4686b0['status'](0xcc)[_0x65f8('0x2c')]();});}};}function handleEntityNotFound(_0x554dc7,_0x1ccdd5){return function(_0x1fc9ba){if(!_0x1fc9ba){_0x554dc7[_0x65f8('0x3a')](0x194);}return _0x1fc9ba;};}function handleError(_0x595132,_0x2a46a5){_0x2a46a5=_0x2a46a5||0x1f4;return function(_0x465f44){logger[_0x65f8('0x26')](_0x465f44[_0x65f8('0x3b')]);if(_0x465f44['name']){delete _0x465f44['name'];}_0x595132[_0x65f8('0x2b')](_0x2a46a5)['send'](_0x465f44);};}exports[_0x65f8('0x3c')]=function(_0x4f6d7f,_0x4693f3){var _0x40bfb4={'include':[{'model':db[_0x65f8('0x3d')],'as':_0x65f8('0x3e')}]},_0xe73bb1={},_0x3a7593={'count':0x0,'rows':[]};var _0x3917d0=_[_0x65f8('0x3f')](db[_0x65f8('0x40')][_0x65f8('0x41')],function(_0x26d539){return{'name':_0x26d539['fieldName'],'type':_0x26d539[_0x65f8('0x42')][_0x65f8('0x43')]};});_0xe73bb1[_0x65f8('0x44')]=_[_0x65f8('0x3f')](_0x3917d0,_0x65f8('0x45'));_0xe73bb1[_0x65f8('0x46')]=_[_0x65f8('0x47')](_0x4f6d7f['query']);_0xe73bb1[_0x65f8('0x48')]=_[_0x65f8('0x49')](_0xe73bb1[_0x65f8('0x44')],_0xe73bb1[_0x65f8('0x46')]);_0x40bfb4[_0x65f8('0x4a')]=_[_0x65f8('0x49')](_0xe73bb1['model'],qs[_0x65f8('0x4b')](_0x4f6d7f[_0x65f8('0x46')]['fields']));_0x40bfb4[_0x65f8('0x4a')]=_0x40bfb4['attributes'][_0x65f8('0x4c')]?_0x40bfb4[_0x65f8('0x4a')]:_0xe73bb1[_0x65f8('0x44')];if(!_0x4f6d7f[_0x65f8('0x46')]['hasOwnProperty'](_0x65f8('0x4d'))){_0x40bfb4['limit']=qs[_0x65f8('0x30')](_0x4f6d7f[_0x65f8('0x46')][_0x65f8('0x30')]);_0x40bfb4[_0x65f8('0x2e')]=qs[_0x65f8('0x2e')](_0x4f6d7f[_0x65f8('0x46')][_0x65f8('0x2e')]);}_0x40bfb4[_0x65f8('0x4e')]=qs[_0x65f8('0x4f')](_0x4f6d7f['query'][_0x65f8('0x4f')]);_0x40bfb4[_0x65f8('0x50')]=qs[_0x65f8('0x48')](_['pick'](_0x4f6d7f['query'],_0xe73bb1[_0x65f8('0x48')]),_0x3917d0);if(_0x4f6d7f[_0x65f8('0x46')][_0x65f8('0x51')]){_0x40bfb4['where']=_[_0x65f8('0x52')](_0x40bfb4[_0x65f8('0x50')],{'$or':_[_0x65f8('0x3f')](_0x3917d0,function(_0x5987a1){if(_0x5987a1[_0x65f8('0x42')]!==_0x65f8('0x53')){var _0x462874={};_0x462874[_0x5987a1['name']]={'$like':'%'+_0x4f6d7f[_0x65f8('0x46')][_0x65f8('0x51')]+'%'};return _0x462874;}})});}_0x40bfb4=_['merge']({},_0x40bfb4,_0x4f6d7f[_0x65f8('0x54')]);var _0x490840={'where':_0x40bfb4[_0x65f8('0x50')]};return db[_0x65f8('0x40')][_0x65f8('0x31')](_0x490840)[_0x65f8('0x1f')](function(_0x2b41b7){_0x3a7593['count']=_0x2b41b7;if(_0x4f6d7f[_0x65f8('0x46')][_0x65f8('0x55')]){_0x40bfb4[_0x65f8('0x56')]=[{'all':!![]}];}return db[_0x65f8('0x40')][_0x65f8('0x57')](_0x40bfb4);})[_0x65f8('0x1f')](function(_0x525e27){_0x3a7593['rows']=_0x525e27;return _0x3a7593;})[_0x65f8('0x1f')](respondWithFilteredResult(_0x4693f3,_0x40bfb4))[_0x65f8('0x2a')](handleError(_0x4693f3,null));};exports[_0x65f8('0x58')]=function(_0x1c9f1a,_0x42795a){var _0x103975={'raw':![],'where':{'id':_0x1c9f1a[_0x65f8('0x59')]['id']},'include':[{'model':db[_0x65f8('0x3d')],'as':_0x65f8('0x3e')}]},_0x576400={};_0x576400[_0x65f8('0x44')]=_[_0x65f8('0x47')](db['FaxAccount'][_0x65f8('0x41')]);_0x576400[_0x65f8('0x46')]=_[_0x65f8('0x47')](_0x1c9f1a['query']);_0x576400['filters']=_[_0x65f8('0x49')](_0x576400[_0x65f8('0x44')],_0x576400['query']);_0x103975[_0x65f8('0x4a')]=_[_0x65f8('0x49')](_0x576400[_0x65f8('0x44')],qs[_0x65f8('0x4b')](_0x1c9f1a[_0x65f8('0x46')][_0x65f8('0x4b')]));_0x103975[_0x65f8('0x4a')]=_0x103975[_0x65f8('0x4a')][_0x65f8('0x4c')]?_0x103975[_0x65f8('0x4a')]:_0x576400[_0x65f8('0x44')];if(_0x1c9f1a[_0x65f8('0x46')][_0x65f8('0x55')]){_0x103975['include']=[{'all':!![]}];}_0x103975=_[_0x65f8('0x52')]({},_0x103975,_0x1c9f1a[_0x65f8('0x54')]);return db['FaxAccount']['find'](_0x103975)['then'](handleEntityNotFound(_0x42795a,null))[_0x65f8('0x1f')](respondWithResult(_0x42795a,null))[_0x65f8('0x2a')](handleError(_0x42795a,null));};exports[_0x65f8('0x5a')]=function(_0x2c6030,_0x14e61a){return db[_0x65f8('0x40')][_0x65f8('0x5a')](_0x2c6030[_0x65f8('0x5b')],{})[_0x65f8('0x1f')](function(_0x44a117){var _0x20d310=_0x2c6030[_0x65f8('0x5c')]['get']({'plain':!![]});if(!_0x20d310)throw new Error(_0x65f8('0x5d'));if(_0x20d310[_0x65f8('0x5e')]==='user'){var _0x8a49de=_0x44a117['get']({'plain':!![]});var _0x5f3d61='FaxAccounts';return db[_0x65f8('0x5f')][_0x65f8('0x60')]({'where':{'name':_0x5f3d61,'userProfileId':_0x20d310['userProfileId']},'raw':!![]})[_0x65f8('0x1f')](function(_0x292eb4){if(_0x292eb4&&_0x292eb4[_0x65f8('0x61')]===0x0){return db['UserProfileResource']['create']({'name':_0x8a49de[_0x65f8('0x45')],'resourceId':_0x8a49de['id'],'type':_0x292eb4[_0x65f8('0x45')],'sectionId':_0x292eb4['id']},{})['then'](function(){return _0x44a117;});}else{return _0x44a117;}})['catch'](function(_0x18e2e2){logger[_0x65f8('0x26')](_0x65f8('0x62'),_0x18e2e2);throw _0x18e2e2;});}return _0x44a117;})[_0x65f8('0x1f')](respondWithResult(_0x14e61a,0xc9))[_0x65f8('0x2a')](handleError(_0x14e61a,null));};exports[_0x65f8('0x63')]=function(_0x503ed2,_0x41f1cb){if(_0x503ed2[_0x65f8('0x5b')]['id']){delete _0x503ed2[_0x65f8('0x5b')]['id'];}return db[_0x65f8('0x40')][_0x65f8('0x60')]({'where':{'id':_0x503ed2['params']['id']},'include':[{'model':db['Pause'],'as':_0x65f8('0x3e')}]})[_0x65f8('0x1f')](handleEntityNotFound(_0x41f1cb,null))[_0x65f8('0x1f')](saveUpdates(_0x503ed2[_0x65f8('0x5b')],null))[_0x65f8('0x1f')](respondWithResult(_0x41f1cb,null))['catch'](handleError(_0x41f1cb,null));};exports[_0x65f8('0x36')]=function(_0x1cdcad,_0x49d04d){return db['FaxAccount'][_0x65f8('0x60')]({'where':{'id':_0x1cdcad[_0x65f8('0x59')]['id']}})[_0x65f8('0x1f')](handleEntityNotFound(_0x49d04d,null))[_0x65f8('0x1f')](removeEntity(_0x49d04d,null))[_0x65f8('0x2a')](handleError(_0x49d04d,null));};exports[_0x65f8('0x64')]=function(_0x20366,_0x34f5b0){return db[_0x65f8('0x40')][_0x65f8('0x64')]()[_0x65f8('0x1f')](respondWithResult(_0x34f5b0,null))[_0x65f8('0x2a')](handleError(_0x34f5b0,null));};exports['addDisposition']=function(_0x1f4903,_0x3cfb74,_0xcbe94e){if(_0x1f4903[_0x65f8('0x5b')]['id']){delete _0x1f4903['body']['id'];}return db[_0x65f8('0x40')][_0x65f8('0x60')]({'where':{'id':_0x1f4903[_0x65f8('0x59')]['id']}})[_0x65f8('0x1f')](handleEntityNotFound(_0x3cfb74,null))['then'](function(_0x5673d3){if(_0x5673d3){_0x1f4903[_0x65f8('0x5b')][_0x65f8('0x65')]=_0x5673d3['id'];return db[_0x65f8('0x66')][_0x65f8('0x5a')](_0x1f4903[_0x65f8('0x5b')]);}})[_0x65f8('0x1f')](respondWithResult(_0x3cfb74,null))[_0x65f8('0x2a')](handleError(_0x3cfb74,null));};exports[_0x65f8('0x67')]=function(_0x4a7b72,_0x4548fe,_0x482ca8){var _0x3e709c={'raw':![],'where':{}};var _0x2df832={};var _0x28da38={'count':0x0,'rows':[]};return db[_0x65f8('0x40')]['findOne']({'where':{'id':_0x4a7b72[_0x65f8('0x59')]['id']}})[_0x65f8('0x1f')](handleEntityNotFound(_0x4548fe,null))[_0x65f8('0x1f')](function(_0x13e50d){if(_0x13e50d){_0x2df832[_0x65f8('0x44')]=_[_0x65f8('0x47')](db[_0x65f8('0x66')][_0x65f8('0x41')]);_0x2df832['query']=_[_0x65f8('0x47')](_0x4a7b72[_0x65f8('0x46')]);_0x2df832['filters']=_['intersection'](_0x2df832[_0x65f8('0x44')],_0x2df832[_0x65f8('0x46')]);_0x3e709c[_0x65f8('0x4a')]=_['intersection'](_0x2df832[_0x65f8('0x44')],qs[_0x65f8('0x4b')](_0x4a7b72[_0x65f8('0x46')][_0x65f8('0x4b')]));_0x3e709c[_0x65f8('0x4a')]=_0x3e709c[_0x65f8('0x4a')][_0x65f8('0x4c')]?_0x3e709c[_0x65f8('0x4a')]:_0x2df832['model'];if(!_0x4a7b72[_0x65f8('0x46')][_0x65f8('0x68')](_0x65f8('0x4d'))){_0x3e709c[_0x65f8('0x30')]=qs[_0x65f8('0x30')](_0x4a7b72[_0x65f8('0x46')][_0x65f8('0x30')]);_0x3e709c[_0x65f8('0x2e')]=qs['offset'](_0x4a7b72[_0x65f8('0x46')][_0x65f8('0x2e')]);}_0x3e709c[_0x65f8('0x4e')]=qs[_0x65f8('0x4f')](_0x4a7b72['query'][_0x65f8('0x4f')]);_0x3e709c['where']=qs[_0x65f8('0x48')](_[_0x65f8('0x69')](_0x4a7b72[_0x65f8('0x46')],_0x2df832[_0x65f8('0x48')]));_0x3e709c[_0x65f8('0x50')][_0x65f8('0x65')]=_0x13e50d['id'];if(_0x4a7b72['query'][_0x65f8('0x51')]){_0x3e709c[_0x65f8('0x50')]=_['merge'](_0x3e709c[_0x65f8('0x50')],{'$or':_[_0x65f8('0x3f')](_0x3e709c['attributes'],function(_0x1d8fe2){var _0x31febf={};_0x31febf[_0x1d8fe2]={'$like':'%'+_0x4a7b72['query']['filter']+'%'};return _0x31febf;})});}_0x3e709c=_[_0x65f8('0x52')]({},_0x3e709c,_0x4a7b72[_0x65f8('0x54')]);return db[_0x65f8('0x66')][_0x65f8('0x31')]({'where':_0x3e709c[_0x65f8('0x50')]})[_0x65f8('0x1f')](function(_0x1bcc44){_0x28da38[_0x65f8('0x31')]=_0x1bcc44;if(_0x4a7b72[_0x65f8('0x46')]['includeAll']){_0x3e709c[_0x65f8('0x56')]=[{'all':!![]}];}return db[_0x65f8('0x66')][_0x65f8('0x57')](_0x3e709c);})[_0x65f8('0x1f')](function(_0x46d42d){_0x28da38[_0x65f8('0x6a')]=_0x46d42d;return _0x28da38;});}})[_0x65f8('0x1f')](respondWithFilteredResult(_0x4548fe,_0x3e709c))[_0x65f8('0x2a')](handleError(_0x4548fe,null));};exports['removeDispositions']=function(_0x4a8306,_0x1265a6,_0x19b237){return db[_0x65f8('0x40')][_0x65f8('0x60')]({'where':{'id':_0x4a8306[_0x65f8('0x59')]['id']}})['then'](handleEntityNotFound(_0x1265a6,null))['then'](function(_0x4718f9){if(_0x4718f9){return _0x4718f9[_0x65f8('0x6b')](_0x4a8306[_0x65f8('0x46')][_0x65f8('0x6c')]);}})[_0x65f8('0x1f')](respondWithStatusCode(_0x1265a6,null))[_0x65f8('0x2a')](handleError(_0x1265a6,null));};exports[_0x65f8('0x6d')]=function(_0x3752fb,_0x2e4e2c,_0x6f99fa){if(_0x3752fb['body']['id']){delete _0x3752fb[_0x65f8('0x5b')]['id'];}return db[_0x65f8('0x40')][_0x65f8('0x60')]({'where':{'id':_0x3752fb[_0x65f8('0x59')]['id']}})['then'](handleEntityNotFound(_0x2e4e2c,null))[_0x65f8('0x1f')](function(_0x2e0b2d){if(_0x2e0b2d){_0x3752fb[_0x65f8('0x5b')][_0x65f8('0x65')]=_0x2e0b2d['id'];return db[_0x65f8('0x6e')][_0x65f8('0x5a')](_0x3752fb[_0x65f8('0x5b')]);}})['then'](respondWithResult(_0x2e4e2c,null))['catch'](handleError(_0x2e4e2c,null));};exports[_0x65f8('0x6f')]=function(_0x1cd529,_0x504d33,_0x418d86){var _0x11492b={'raw':![],'where':{}};var _0x2a505e={};var _0xf1b6ab={'count':0x0,'rows':[]};return db[_0x65f8('0x40')]['findOne']({'where':{'id':_0x1cd529[_0x65f8('0x59')]['id']}})[_0x65f8('0x1f')](handleEntityNotFound(_0x504d33,null))[_0x65f8('0x1f')](function(_0x3bab20){if(_0x3bab20){_0x2a505e[_0x65f8('0x44')]=_[_0x65f8('0x47')](db['CannedAnswer'][_0x65f8('0x41')]);_0x2a505e[_0x65f8('0x46')]=_[_0x65f8('0x47')](_0x1cd529[_0x65f8('0x46')]);_0x2a505e['filters']=_[_0x65f8('0x49')](_0x2a505e[_0x65f8('0x44')],_0x2a505e['query']);_0x11492b[_0x65f8('0x4a')]=_[_0x65f8('0x49')](_0x2a505e[_0x65f8('0x44')],qs['fields'](_0x1cd529[_0x65f8('0x46')]['fields']));_0x11492b[_0x65f8('0x4a')]=_0x11492b[_0x65f8('0x4a')][_0x65f8('0x4c')]?_0x11492b[_0x65f8('0x4a')]:_0x2a505e[_0x65f8('0x44')];if(!_0x1cd529[_0x65f8('0x46')][_0x65f8('0x68')](_0x65f8('0x4d'))){_0x11492b[_0x65f8('0x30')]=qs[_0x65f8('0x30')](_0x1cd529[_0x65f8('0x46')][_0x65f8('0x30')]);_0x11492b[_0x65f8('0x2e')]=qs[_0x65f8('0x2e')](_0x1cd529['query'][_0x65f8('0x2e')]);}_0x11492b['order']=qs[_0x65f8('0x4f')](_0x1cd529['query']['sort']);_0x11492b['where']=qs[_0x65f8('0x48')](_[_0x65f8('0x69')](_0x1cd529[_0x65f8('0x46')],_0x2a505e[_0x65f8('0x48')]));_0x11492b[_0x65f8('0x50')][_0x65f8('0x65')]=_0x3bab20['id'];if(_0x1cd529['query'][_0x65f8('0x51')]){_0x11492b[_0x65f8('0x50')]=_['merge'](_0x11492b[_0x65f8('0x50')],{'$or':_['map'](_0x11492b[_0x65f8('0x4a')],function(_0x2c3107){var _0x5348c2={};_0x5348c2[_0x2c3107]={'$like':'%'+_0x1cd529[_0x65f8('0x46')][_0x65f8('0x51')]+'%'};return _0x5348c2;})});}_0x11492b=_['merge']({},_0x11492b,_0x1cd529['options']);return db[_0x65f8('0x6e')][_0x65f8('0x31')]({'where':_0x11492b[_0x65f8('0x50')]})[_0x65f8('0x1f')](function(_0x1555af){_0xf1b6ab[_0x65f8('0x31')]=_0x1555af;if(_0x1cd529[_0x65f8('0x46')]['includeAll']){_0x11492b[_0x65f8('0x56')]=[{'all':!![]}];}return db[_0x65f8('0x6e')][_0x65f8('0x57')](_0x11492b);})[_0x65f8('0x1f')](function(_0xb1845){_0xf1b6ab[_0x65f8('0x6a')]=_0xb1845;return _0xf1b6ab;});}})[_0x65f8('0x1f')](respondWithFilteredResult(_0x504d33,_0x11492b))[_0x65f8('0x2a')](handleError(_0x504d33,null));};exports[_0x65f8('0x70')]=function(_0x49b5d8,_0x5860ac,_0x53c486){return db[_0x65f8('0x40')]['find']({'where':{'id':_0x49b5d8[_0x65f8('0x59')]['id']}})[_0x65f8('0x1f')](handleEntityNotFound(_0x5860ac,null))[_0x65f8('0x1f')](function(_0x567a41){if(_0x567a41){return _0x567a41[_0x65f8('0x70')](_0x49b5d8[_0x65f8('0x46')][_0x65f8('0x6c')]);}})[_0x65f8('0x1f')](respondWithStatusCode(_0x5860ac,null))['catch'](handleError(_0x5860ac,null));};exports[_0x65f8('0x71')]=function(_0x137752,_0x1e8e1b,_0x5b23f8){return db[_0x65f8('0x72')][_0x65f8('0x60')]({'where':{'id':_0x137752[_0x65f8('0x59')]['id']}})[_0x65f8('0x1f')](handleEntityNotFound(_0x1e8e1b,null))[_0x65f8('0x1f')](function(_0x18f94e){if(_0x18f94e){return _0x18f94e[_0x65f8('0x71')](_0x137752[_0x65f8('0x5b')][_0x65f8('0x6c')],_['omit'](_0x137752['body'],[_0x65f8('0x6c'),'id'])||{});}})[_0x65f8('0x1f')](respondWithResult(_0x1e8e1b,null))[_0x65f8('0x2a')](handleError(_0x1e8e1b,null));};exports[_0x65f8('0x73')]=function(_0x368cb8,_0x3c2abb,_0x92f360){var _0x4f53b7={'raw':![],'where':{}};var _0x44e169={};var _0x31aff9={'count':0x0,'rows':[]};return db[_0x65f8('0x40')][_0x65f8('0x74')]({'where':{'id':_0x368cb8['params']['id']}})[_0x65f8('0x1f')](handleEntityNotFound(_0x3c2abb,null))[_0x65f8('0x1f')](function(_0x4cf698){if(_0x4cf698){_0x44e169['model']=_['keys'](db['FaxInteraction'][_0x65f8('0x41')]);_0x44e169['query']=_[_0x65f8('0x47')](_0x368cb8[_0x65f8('0x46')]);_0x44e169[_0x65f8('0x48')]=_['intersection'](_0x44e169[_0x65f8('0x44')],_0x44e169[_0x65f8('0x46')]);_0x4f53b7[_0x65f8('0x4a')]=_[_0x65f8('0x49')](_0x44e169[_0x65f8('0x44')],qs[_0x65f8('0x4b')](_0x368cb8['query'][_0x65f8('0x4b')]));_0x4f53b7[_0x65f8('0x4a')]=_0x4f53b7[_0x65f8('0x4a')][_0x65f8('0x4c')]?_0x4f53b7['attributes']:_0x44e169[_0x65f8('0x44')];if(!_0x368cb8['query'][_0x65f8('0x68')]('nolimit')){_0x4f53b7[_0x65f8('0x30')]=qs[_0x65f8('0x30')](_0x368cb8[_0x65f8('0x46')][_0x65f8('0x30')]);_0x4f53b7[_0x65f8('0x2e')]=qs['offset'](_0x368cb8[_0x65f8('0x46')]['offset']);}_0x4f53b7['order']=qs['sort'](_0x368cb8[_0x65f8('0x46')][_0x65f8('0x4f')]);_0x4f53b7[_0x65f8('0x50')]=qs['filters'](_['pick'](_0x368cb8[_0x65f8('0x46')],_0x44e169[_0x65f8('0x48')]));_0x4f53b7[_0x65f8('0x50')][_0x65f8('0x65')]=_0x4cf698['id'];if(_0x368cb8[_0x65f8('0x46')][_0x65f8('0x51')]){_0x4f53b7[_0x65f8('0x50')]=_[_0x65f8('0x52')](_0x4f53b7['where'],{'$or':_[_0x65f8('0x3f')](_0x4f53b7['attributes'],function(_0x3898c2){var _0x1a0571={};_0x1a0571[_0x3898c2]={'$like':'%'+_0x368cb8['query'][_0x65f8('0x51')]+'%'};return _0x1a0571;})});}_0x4f53b7=_[_0x65f8('0x52')]({},_0x4f53b7,_0x368cb8[_0x65f8('0x54')]);return db[_0x65f8('0x72')][_0x65f8('0x31')]({'where':_0x4f53b7[_0x65f8('0x50')]})['then'](function(_0x1db53b){_0x31aff9['count']=_0x1db53b;if(_0x368cb8[_0x65f8('0x46')][_0x65f8('0x55')]){_0x4f53b7[_0x65f8('0x56')]=[{'model':db['CmContact'],'as':_0x65f8('0x75'),'required':![]},{'model':db[_0x65f8('0x76')],'as':'Owner','attributes':[_0x65f8('0x45'),_0x65f8('0x77'),_0x65f8('0x78')],'required':![]},{'model':db[_0x65f8('0x79')],'as':_0x65f8('0x7a'),'attributes':['id','name',_0x65f8('0x7b')],'where':_0x368cb8[_0x65f8('0x46')][_0x65f8('0x7c')]?{'id':_0x368cb8[_0x65f8('0x46')][_0x65f8('0x7c')]}:undefined,'required':_0x368cb8['query'][_0x65f8('0x7c')]?!![]:![]}];}return db[_0x65f8('0x72')][_0x65f8('0x57')](_0x4f53b7);})[_0x65f8('0x1f')](function(_0x28d052){_0x31aff9[_0x65f8('0x6a')]=_0x28d052;return _0x31aff9;});}})[_0x65f8('0x1f')](respondWithFilteredResult(_0x3c2abb,_0x4f53b7))[_0x65f8('0x2a')](handleError(_0x3c2abb,null));};exports['addApplications']=function(_0x539bf8,_0x110bc0,_0x378774){return db[_0x65f8('0x40')][_0x65f8('0x74')]({'where':{'id':_0x539bf8[_0x65f8('0x59')]['id']}})[_0x65f8('0x1f')](handleEntityNotFound(_0x110bc0,null))[_0x65f8('0x1f')](function(_0x387d79){if(_0x387d79){return db[_0x65f8('0x7d')][_0x65f8('0x7e')](function(_0x59fdc4){return db[_0x65f8('0x7f')][_0x65f8('0x36')]({'where':{'FaxAccountId':_0x539bf8['params']['id']},'transaction':_0x59fdc4})[_0x65f8('0x1f')](function(_0x513cb8){var _0x22712a=_[_0x65f8('0x3f')](_0x539bf8[_0x65f8('0x5b')],function(_0x250491){_0x250491[_0x65f8('0x65')]=_0x539bf8['params']['id'];return _0x250491;});return db['FaxApplication']['bulkCreate'](_0x22712a,{'transaction':_0x59fdc4});});})[_0x65f8('0x1f')](function(){return db[_0x65f8('0x7f')][_0x65f8('0x80')]({'where':{'FaxAccountId':_0x539bf8['params']['id']},'order':'priority'});});}})[_0x65f8('0x1f')](respondWithResult(_0x110bc0,null))['catch'](handleError(_0x110bc0,null));};exports[_0x65f8('0x81')]=function(_0x2ae71a,_0x505489,_0x217ca5){var _0x566f5d={};var _0x5e5eca={};var _0x2e73a1;var _0x47e234;return db[_0x65f8('0x40')]['findOne']({'where':{'id':_0x2ae71a[_0x65f8('0x59')]['id']}})[_0x65f8('0x1f')](handleEntityNotFound(_0x505489,null))[_0x65f8('0x1f')](function(_0x533480){if(_0x533480){_0x2e73a1=_0x533480;_0x5e5eca['model']=_['keys'](db[_0x65f8('0x7f')][_0x65f8('0x41')]);_0x5e5eca['query']=_['keys'](_0x2ae71a[_0x65f8('0x46')]);_0x5e5eca[_0x65f8('0x48')]=_[_0x65f8('0x49')](_0x5e5eca['model'],_0x5e5eca['query']);_0x566f5d[_0x65f8('0x4a')]=_[_0x65f8('0x49')](_0x5e5eca[_0x65f8('0x44')],qs[_0x65f8('0x4b')](_0x2ae71a[_0x65f8('0x46')][_0x65f8('0x4b')]));_0x566f5d[_0x65f8('0x4a')]=_0x566f5d[_0x65f8('0x4a')][_0x65f8('0x4c')]?_0x566f5d[_0x65f8('0x4a')]:_0x5e5eca['model'];_0x566f5d[_0x65f8('0x4e')]=qs[_0x65f8('0x4f')](_0x2ae71a[_0x65f8('0x46')][_0x65f8('0x4f')]);_0x566f5d[_0x65f8('0x50')]=qs[_0x65f8('0x48')](_[_0x65f8('0x69')](_0x2ae71a[_0x65f8('0x46')],_0x5e5eca[_0x65f8('0x48')]));if(_0x2ae71a[_0x65f8('0x46')][_0x65f8('0x51')]){_0x566f5d[_0x65f8('0x50')]=_['merge'](_0x566f5d[_0x65f8('0x50')],{'$or':_[_0x65f8('0x3f')](_0x566f5d[_0x65f8('0x4a')],function(_0x4cd9d7){var _0x537b87={};_0x537b87[_0x4cd9d7]={'$like':'%'+_0x2ae71a['query'][_0x65f8('0x51')]+'%'};return _0x537b87;})});}_0x566f5d=_[_0x65f8('0x52')]({},_0x566f5d,_0x2ae71a['options']);return _0x2e73a1[_0x65f8('0x81')](_0x566f5d);}})['then'](function(_0x282e58){if(_0x282e58){_0x47e234=_0x282e58[_0x65f8('0x4c')];if(!_0x2ae71a[_0x65f8('0x46')][_0x65f8('0x68')](_0x65f8('0x4d'))){_0x566f5d[_0x65f8('0x30')]=qs[_0x65f8('0x30')](_0x2ae71a[_0x65f8('0x46')][_0x65f8('0x30')]);_0x566f5d[_0x65f8('0x2e')]=qs[_0x65f8('0x2e')](_0x2ae71a[_0x65f8('0x46')][_0x65f8('0x2e')]);}return _0x2e73a1[_0x65f8('0x81')](_0x566f5d);}})[_0x65f8('0x1f')](function(_0x22a6a2){if(_0x22a6a2){return _0x22a6a2?{'count':_0x47e234,'rows':_0x22a6a2}:null;}})['then'](respondWithResult(_0x505489,null))['catch'](handleError(_0x505489,null));};function Extension(_0x5242db,_0x46db20,_0x5042c1,_0x4203ba){this[_0x65f8('0x82')]='from-voip-provider';this[_0x65f8('0x83')]=_0x5242db['localstationid'];this[_0x65f8('0x84')]=_0x4203ba;this[_0x65f8('0x42')]=_0x65f8('0x85');this[_0x65f8('0x86')]='Fax\x20Extension';this[_0x65f8('0x65')]=_0x5242db['id'];this[_0x65f8('0x87')]=_0x46db20;this[_0x65f8('0x88')]=_0x5042c1;}function createExtensionsReciveFax(_0x4124d9){var _0x41ce6b=0x1;var _0x43c98f=[];_0x43c98f[_0x65f8('0x89')](new Extension(_0x4124d9,_0x41ce6b,'',_0x65f8('0x8a')));_0x41ce6b+=0x1;_0x43c98f[_0x65f8('0x89')](new Extension(_0x4124d9,_0x41ce6b,_0x65f8('0x8b'),'Set'));_0x41ce6b+=0x1;for(var _0x12a0bb in _0x4124d9){if(_0x4124d9['hasOwnProperty'](_0x12a0bb)&&(_0x12a0bb===_0x65f8('0x8c')||_0x12a0bb===_0x65f8('0x8d')||_0x12a0bb===_0x65f8('0x8e')||_0x12a0bb===_0x65f8('0x8f')||_0x12a0bb===_0x65f8('0x90')||_0x12a0bb===_0x65f8('0x91')||_0x12a0bb===_0x65f8('0x92')||_0x12a0bb===_0x65f8('0x93')||_0x12a0bb==='t38timeout')){_0x43c98f['push'](new Extension(_0x4124d9,_0x41ce6b,'FAXOPT('+_0x12a0bb+')='+_0x4124d9[_0x12a0bb],_0x65f8('0x94')));_0x41ce6b+=0x1;}}_0x43c98f[_0x65f8('0x89')](new Extension(_0x4124d9,_0x41ce6b,'6',_0x65f8('0x95')));_0x41ce6b+=0x1;_0x43c98f['push'](new Extension(_0x4124d9,_0x41ce6b,_0x65f8('0x96'),_0x65f8('0x97')));_0x41ce6b=0x0;return _0x43c98f;}exports[_0x65f8('0x98')]=function(_0x4e0ca7,_0x2fe4d7,_0x1191c7){var _0x2501dc;return db[_0x65f8('0x7d')][_0x65f8('0x7e')](function(_0x4ab401){return db[_0x65f8('0x40')][_0x65f8('0x5a')](_0x4e0ca7[_0x65f8('0x5b')],{'transaction':_0x4ab401})[_0x65f8('0x1f')](function(_0x5a80af){_0x2501dc=_0x5a80af[_0x65f8('0x37')]({'plain':!![]});return db[_0x65f8('0x99')][_0x65f8('0x9a')](createExtensionsReciveFax(_0x2501dc),{'transaction':_0x4ab401});});})[_0x65f8('0x1f')](function(){return _0x2501dc;})[_0x65f8('0x1f')](respondWithResult(_0x2fe4d7,null))[_0x65f8('0x2a')](handleError(_0x2fe4d7,null));};exports['updateAccountApplications']=function(_0x338aae,_0x326bf3,_0x4a9f43){var _0x56a964;return db[_0x65f8('0x7d')][_0x65f8('0x7e')](function(_0x1218c4){return db[_0x65f8('0x40')]['update'](_0x338aae['body'],{'where':{'id':_0x338aae['body']['id']},'transaction':_0x1218c4})[_0x65f8('0x1f')](function(_0x27ed77){return db[_0x65f8('0x99')][_0x65f8('0x36')]({'where':{'FaxAccountId':_0x338aae[_0x65f8('0x5b')]['id']},'transaction':_0x1218c4})[_0x65f8('0x1f')](function(_0x3c4d2a){return db[_0x65f8('0x99')][_0x65f8('0x9a')](createExtensionsReciveFax(_[_0x65f8('0x9b')](_0x338aae['body'],['tech','key',_0x65f8('0x9c'),_0x65f8('0x9d'),_0x65f8('0x9e'),_0x65f8('0x9f')])),{'transaction':_0x1218c4});});});})['then'](function(){return db['FaxAccount'][_0x65f8('0xa0')](_0x338aae[_0x65f8('0x5b')]['id']);})[_0x65f8('0x1f')](respondWithResult(_0x326bf3,null))[_0x65f8('0x2a')](handleError(_0x326bf3,null));};exports[_0x65f8('0xa1')]=function(_0x82b5bd,_0x465bd2,_0x27e4de){var _0x5e8640={'raw':!![],'where':{}};var _0x5a4c92={};var _0xed49cd={'count':0x0,'rows':[]};return db['FaxAccount']['findOne']({'where':{'id':_0x82b5bd[_0x65f8('0x59')]['id']}})[_0x65f8('0x1f')](handleEntityNotFound(_0x465bd2,null))[_0x65f8('0x1f')](function(_0x5965ef){if(_0x5965ef){_0x5a4c92[_0x65f8('0x44')]=_[_0x65f8('0x47')](db[_0x65f8('0xa2')][_0x65f8('0x41')]);_0x5a4c92[_0x65f8('0x46')]=_[_0x65f8('0x47')](_0x82b5bd['query']);_0x5a4c92[_0x65f8('0x48')]=_[_0x65f8('0x49')](_0x5a4c92[_0x65f8('0x44')],_0x5a4c92[_0x65f8('0x46')]);_0x5e8640[_0x65f8('0x4a')]=_[_0x65f8('0x49')](_0x5a4c92[_0x65f8('0x44')],qs[_0x65f8('0x4b')](_0x82b5bd['query']['fields']));_0x5e8640[_0x65f8('0x4a')]=_0x5e8640[_0x65f8('0x4a')][_0x65f8('0x4c')]?_0x5e8640[_0x65f8('0x4a')]:_0x5a4c92['model'];if(!_0x82b5bd[_0x65f8('0x46')][_0x65f8('0x68')](_0x65f8('0x4d'))){_0x5e8640[_0x65f8('0x30')]=qs['limit'](_0x82b5bd[_0x65f8('0x46')][_0x65f8('0x30')]);_0x5e8640['offset']=qs[_0x65f8('0x2e')](_0x82b5bd[_0x65f8('0x46')]['offset']);}_0x5e8640['order']=qs['sort'](_0x82b5bd[_0x65f8('0x46')][_0x65f8('0x4f')]);_0x5e8640['where']=qs['filters'](_['pick'](_0x82b5bd[_0x65f8('0x46')],_0x5a4c92[_0x65f8('0x48')]));_0x5e8640['where']['FaxAccountId']=_0x5965ef['id'];if(_0x82b5bd['query'][_0x65f8('0x51')]){_0x5e8640[_0x65f8('0x50')]=_['merge'](_0x5e8640[_0x65f8('0x50')],{'$or':_[_0x65f8('0x3f')](_0x5e8640['attributes'],function(_0x4c0b7d){var _0x2bc1c2={};_0x2bc1c2[_0x4c0b7d]={'$like':'%'+_0x82b5bd[_0x65f8('0x46')][_0x65f8('0x51')]+'%'};return _0x2bc1c2;})});}if(_0x82b5bd[_0x65f8('0x46')][_0x65f8('0xa3')]){var _0x522ea4=_0x82b5bd[_0x65f8('0x46')]['$gte'][_0x65f8('0xa4')](',');var _0x37cf55={};_0x37cf55[_0x522ea4[0x0]]={'$gte':moment(_0x522ea4[0x1])[_0x65f8('0xa5')](_0x65f8('0xa6'))};_0x5e8640[_0x65f8('0x50')]=_[_0x65f8('0x52')](_0x5e8640[_0x65f8('0x50')],_0x37cf55);}_0x5e8640=_[_0x65f8('0x52')]({},_0x5e8640,_0x82b5bd['options']);return db[_0x65f8('0xa2')][_0x65f8('0x31')]({'where':_0x5e8640[_0x65f8('0x50')]})[_0x65f8('0x1f')](function(_0x399d9d){_0xed49cd[_0x65f8('0x31')]=_0x399d9d;if(_0x82b5bd[_0x65f8('0x46')]['includeAll']){_0x5e8640[_0x65f8('0x56')]=[{'all':!![]}];}return db[_0x65f8('0xa2')][_0x65f8('0x57')](_0x5e8640);})['then'](function(_0x5cf5c7){_0xed49cd['rows']=_0x5cf5c7;return _0xed49cd;});}})[_0x65f8('0x1f')](respondWithFilteredResult(_0x465bd2,_0x5e8640))[_0x65f8('0x2a')](handleError(_0x465bd2,null));};exports[_0x65f8('0xa7')]=function(_0x1b4d8f,_0x543112,_0x827041){var _0x2f4989,_0x169ece={},_0x466413;if(_0x1b4d8f['body']['to']){_0x466413=_0x1b4d8f[_0x65f8('0x5b')]['to'][0x0];}return db[_0x65f8('0x40')][_0x65f8('0x60')]({'where':{'id':_0x1b4d8f['params']['id']},'include':[{'model':db[_0x65f8('0xa8')],'as':_0x65f8('0xa9'),'include':[{'model':db['CmContact'],'as':_0x65f8('0xaa'),'where':{'fax':_0x466413},'limit':0x1,'order':[['updatedAt','DESC']]}]}]})[_0x65f8('0x1f')](handleEntityNotFound(_0x543112,null))[_0x65f8('0x1f')](function(_0x3702f0){_0x2f4989=_0x3702f0;if(_0x1b4d8f[_0x65f8('0x5b')][_0x65f8('0xab')]&&_0x1b4d8f['body'][_0x65f8('0xab')]['length']){for(var _0x19e055=0x0;_0x19e055<_0x1b4d8f[_0x65f8('0x5b')][_0x65f8('0xab')][_0x65f8('0x4c')];_0x19e055+=0x1){_0x1b4d8f[_0x65f8('0x5b')][_0x65f8('0xab')][_0x19e055]={'filename':_0x1b4d8f['body'][_0x65f8('0xab')][_0x19e055]['name'],'id':_0x1b4d8f[_0x65f8('0x5b')][_0x65f8('0xab')][_0x19e055]['id'],'path':path[_0x65f8('0xac')](config[_0x65f8('0xad')],_0x65f8('0xae'),_0x1b4d8f['body'][_0x65f8('0xab')][_0x19e055][_0x65f8('0xaf')])};}}return respondWithRpcPromise('CheckAfterSend','CheckAfterSend',{'FaxAccountId':_['isNil'](_0x1b4d8f['params']['id'])?undefined:_0x1b4d8f['params']['id'],'path':_[_0x65f8('0xb0')](_0x1b4d8f[_0x65f8('0x5b')]['attachments'][0x0][_0x65f8('0x5')])?undefined:_0x1b4d8f[_0x65f8('0x5b')]['attachments'][0x0]['path'],'fax':_[_0x65f8('0xb0')](_0x1b4d8f[_0x65f8('0x5b')]['to'][0x0])?undefined:_0x1b4d8f[_0x65f8('0x5b')]['to'][0x0]},client9002);})['then'](function(){if(_0x2f4989){if(_['isNil'](_0x1b4d8f['body']['from'])){_0x1b4d8f[_0x65f8('0x5b')][_0x65f8('0xb1')]=util[_0x65f8('0xa5')](_0x65f8('0xb2'),_0x2f4989['name'],_0x2f4989['fax']);}if(_0x2f4989[_0x65f8('0xa9')]){if(_0x2f4989[_0x65f8('0xa9')][_0x65f8('0xaa')][_0x65f8('0x4c')]){return _0x2f4989[_0x65f8('0xa9')][_0x65f8('0xaa')][0x0];}else{return db[_0x65f8('0xb3')][_0x65f8('0x5a')](_[_0x65f8('0xb4')](_0x1b4d8f[_0x65f8('0x5b')],{'firstName':_0x1b4d8f[_0x65f8('0x5b')]['to'][0x0],'phone':_0x1b4d8f['body']['to'][0x0],'fax':_0x1b4d8f['body']['to'][0x0],'ListId':_0x2f4989[_0x65f8('0x9f')]}));}}else{throw new Error(_0x65f8('0xb5'));}}else{throw new Error('Send\x20Fax\x20failed');}})[_0x65f8('0x1f')](function(_0x42f991){if(_0x42f991){return db[_0x65f8('0x72')][_0x65f8('0x60')]({'where':{'ContactId':_0x42f991['id'],'closed':![],'FaxAccountId':_0x2f4989['id']}})[_0x65f8('0x1f')](function(_0x49754c){if(_0x49754c){return[_0x49754c,![]];}return db[_0x65f8('0x72')][_0x65f8('0x5a')]({'UserId':_0x1b4d8f[_0x65f8('0x5c')]['id'],'ContactId':_0x42f991['id'],'FaxAccountId':_0x2f4989['id'],'fax':_0x1b4d8f['body']['to'][0x0],'firstMsgDirection':_0x65f8('0xb6'),'Messages':[_[_0x65f8('0x52')](_0x1b4d8f[_0x65f8('0x5b')],{'read':![],'body':_0x1b4d8f[_0x65f8('0x5b')]['attachments'][0x0][_0x65f8('0xb7')],'FaxAccountId':_0x2f4989['id'],'UserId':_0x1b4d8f[_0x65f8('0x5c')]['id'],'ContactId':_0x42f991['id'],'AttachmentId':_0x1b4d8f[_0x65f8('0x5b')][_0x65f8('0xab')][0x0]['id']})]},{'include':[{'model':db[_0x65f8('0xa2')],'as':'Messages'}]})['then'](function(_0x2d412e){return[_0x2d412e,!![]];});});}else{throw new Error(_0x65f8('0xb8'));}})['spread'](function(_0x41d50f,_0x552a10){if(_0x552a10){return _0x41d50f;}return db[_0x65f8('0xa2')]['create']({'direction':'out','read':![],'body':_0x1b4d8f['body'][_0x65f8('0xab')][0x0][_0x65f8('0xb7')],'FaxAccountId':_0x2f4989['id'],'FaxInteractionId':_0x41d50f['id'],'UserId':_0x1b4d8f['user']['id'],'ContactId':_0x41d50f[_0x65f8('0xb9')],'AttachmentId':_0x1b4d8f['body']['attachments'][0x0]['id']})[_0x65f8('0x1f')](function(_0x149a49){_0x41d50f[_0x65f8('0xba')]['Messages']=[];_0x41d50f[_0x65f8('0xba')][_0x65f8('0xbb')][_0x65f8('0x89')](_0x149a49['dataValues']);return _0x41d50f;});})[_0x65f8('0x1f')](function(_0xdc828c){respondWithRpcPromise(_0x65f8('0xbc'),_0x65f8('0xbc'),{'FaxAccountId':_[_0x65f8('0xb0')](_0x1b4d8f[_0x65f8('0x59')]['id'])?undefined:_0x1b4d8f['params']['id'],'path':_[_0x65f8('0xb0')](_0x1b4d8f['body']['attachments'][0x0]['path'])?undefined:_0x1b4d8f[_0x65f8('0x5b')][_0x65f8('0xab')][0x0]['path'],'fax':_[_0x65f8('0xb0')](_0x1b4d8f[_0x65f8('0x5b')]['to'][0x0])?undefined:_0x1b4d8f['body']['to'][0x0],'AttachmentId':_0x1b4d8f[_0x65f8('0x5b')][_0x65f8('0xab')][0x0]['id']},client9002)['then'](function(_0x4998df){logger['info']('SendFaxRpc,\x20%s',_0x4998df);})[_0x65f8('0x2a')](function(_0x4c2ab1){logger[_0x65f8('0x20')](_0x65f8('0xbd'),_0x4c2ab1);});return _0xdc828c;})['then'](respondWithResult(_0x543112,null))[_0x65f8('0x2a')](handleError(_0x543112,null));};exports[_0x65f8('0xbe')]=function(_0x13236f,_0x3a44e8,_0x3a0fa2){return db[_0x65f8('0x40')][_0x65f8('0x60')]({'where':{'id':_0x13236f[_0x65f8('0x59')]['id']}})['then'](handleEntityNotFound(_0x3a44e8,null))['then'](function(_0x7dfd0b){if(_0x7dfd0b){return _0x7dfd0b[_0x65f8('0xbe')](_0x13236f[_0x65f8('0x5b')][_0x65f8('0x6c')],_[_0x65f8('0x9b')](_0x13236f[_0x65f8('0x5b')],[_0x65f8('0x6c'),'id'])||{})[_0x65f8('0xbf')](function(_0x527c10){for(var _0x2277c8=0x0;_0x2277c8<_0x13236f[_0x65f8('0x5b')][_0x65f8('0x6c')][_0x65f8('0x4c')];_0x2277c8+=0x1){socket[_0x65f8('0xc0')](_0x65f8('0xc1'),{'UserId':Number(_0x13236f[_0x65f8('0x5b')]['ids'][_0x2277c8]),'FaxAccountId':Number(_0x13236f[_0x65f8('0x59')]['id'])});}return _0x527c10;});}})[_0x65f8('0x1f')](respondWithResult(_0x3a44e8,null))[_0x65f8('0x2a')](handleError(_0x3a44e8,null));};exports['removeAgents']=function(_0x455825,_0x106fe2,_0x3d08c4){return db[_0x65f8('0x40')][_0x65f8('0x60')]({'where':{'id':_0x455825[_0x65f8('0x59')]['id']}})[_0x65f8('0x1f')](handleEntityNotFound(_0x106fe2,null))[_0x65f8('0x1f')](function(_0x4250a3){if(_0x4250a3){return _0x4250a3[_0x65f8('0xc2')](_0x455825[_0x65f8('0x46')][_0x65f8('0x6c')])[_0x65f8('0x1f')](function(){if(_[_0x65f8('0xc3')](_0x455825[_0x65f8('0x46')][_0x65f8('0x6c')])){for(var _0x234cc2=0x0;_0x234cc2<_0x455825['query'][_0x65f8('0x6c')][_0x65f8('0x4c')];_0x234cc2+=0x1){socket[_0x65f8('0xc0')]('userFaxAccount:remove',{'UserId':Number(_0x455825[_0x65f8('0x46')][_0x65f8('0x6c')][_0x234cc2]),'FaxAccountId':Number(_0x455825[_0x65f8('0x59')]['id'])});}}else{socket['emit'](_0x65f8('0xc4'),{'UserId':Number(_0x455825['query']['ids']),'FaxAccountId':Number(_0x455825[_0x65f8('0x59')]['id'])});}});}})[_0x65f8('0x1f')](respondWithStatusCode(_0x106fe2,null))[_0x65f8('0x2a')](handleError(_0x106fe2,null));};exports[_0x65f8('0xc5')]=function(_0x436e8f,_0x4375e9,_0xd15e8a){var _0x39b5d5={};var _0x3fa729={};var _0x18d1f0;var _0x285323;return db[_0x65f8('0x40')][_0x65f8('0x74')]({'where':{'id':_0x436e8f[_0x65f8('0x59')]['id']}})[_0x65f8('0x1f')](handleEntityNotFound(_0x4375e9,null))['then'](function(_0x3e9e4a){if(_0x3e9e4a){_0x18d1f0=_0x3e9e4a;_0x3fa729[_0x65f8('0x44')]=_[_0x65f8('0x47')](db[_0x65f8('0x76')][_0x65f8('0x41')]);_0x3fa729[_0x65f8('0x46')]=_[_0x65f8('0x47')](_0x436e8f[_0x65f8('0x46')]);_0x3fa729[_0x65f8('0x48')]=_[_0x65f8('0x49')](_0x3fa729[_0x65f8('0x44')],_0x3fa729['query']);_0x39b5d5['attributes']=_[_0x65f8('0x49')](_0x3fa729[_0x65f8('0x44')],qs[_0x65f8('0x4b')](_0x436e8f['query'][_0x65f8('0x4b')]));_0x39b5d5[_0x65f8('0x4a')]=_0x39b5d5[_0x65f8('0x4a')]['length']?_0x39b5d5['attributes']:_0x3fa729[_0x65f8('0x44')];_0x39b5d5[_0x65f8('0x4e')]=qs[_0x65f8('0x4f')](_0x436e8f[_0x65f8('0x46')][_0x65f8('0x4f')]);_0x39b5d5['where']=qs[_0x65f8('0x48')](_[_0x65f8('0x69')](_0x436e8f[_0x65f8('0x46')],_0x3fa729[_0x65f8('0x48')]));if(_0x436e8f[_0x65f8('0x46')]['filter']){_0x39b5d5[_0x65f8('0x50')]=_[_0x65f8('0x52')](_0x39b5d5[_0x65f8('0x50')],{'$or':_[_0x65f8('0x3f')](_0x39b5d5[_0x65f8('0x4a')],function(_0x155516){var _0x19c2ad={};_0x19c2ad[_0x155516]={'$like':'%'+_0x436e8f[_0x65f8('0x46')]['filter']+'%'};return _0x19c2ad;})});}_0x39b5d5=_[_0x65f8('0x52')]({},_0x39b5d5,_0x436e8f[_0x65f8('0x54')]);return _0x18d1f0[_0x65f8('0xc5')](_0x39b5d5);}})[_0x65f8('0x1f')](function(_0x152b98){if(_0x152b98){_0x285323=_0x152b98[_0x65f8('0x4c')];if(!_0x436e8f['query'][_0x65f8('0x68')](_0x65f8('0x4d'))){_0x39b5d5['limit']=qs[_0x65f8('0x30')](_0x436e8f[_0x65f8('0x46')][_0x65f8('0x30')]);_0x39b5d5[_0x65f8('0x2e')]=qs[_0x65f8('0x2e')](_0x436e8f[_0x65f8('0x46')][_0x65f8('0x2e')]);}return _0x18d1f0['getAgents'](_0x39b5d5);}})[_0x65f8('0x1f')](function(_0x4b2eaa){if(_0x4b2eaa){return _0x4b2eaa?{'count':_0x285323,'rows':_0x4b2eaa}:null;}})[_0x65f8('0x1f')](respondWithResult(_0x4375e9,null))[_0x65f8('0x2a')](handleError(_0x4375e9,null));};
\ No newline at end of file
+var _0xaf50=['keys','filters','intersection','model','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','pick','filter','merge','map','VIRTUAL','options','includeAll','include','findAll','rows','show','params','mandatoryDispositionPause','create','body','user','get','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','UserProfileSection','find','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','describe','Disposition','findOne','FaxAccountId','ids','addAnswer','CannedAnswer','removeAnswers','addInteraction','FaxInteraction','omit','CmContact','User','Owner','fullname','internal','Tags','tag','addApplications','transaction','FaxApplication','bulkCreate','findAndCountAll','priority','getApplications','from-voip-provider','exten','localstationid','app','system','Fax\x20Extension','appdata','push','Answer','CDR(type)=inbound-fax','faxdetect','headerinfo','maxrate','minrate','modem','t38timeout','Wait','/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','VoiceExtension','updateAccountApplications','sequelize','tech','createdAt','updatedAt','TrunkId','ListId','findById','getMessages','FaxMessage','$gte','split','format','CmList','List','Contacts','attachments','join','server/files/attachments','basename','CheckAfterSend','isNil','from','\x22%s\x22\x20<%s>','fax','defaults','Send\x20Fax\x20failed','out','filename','Messages','Contact\x20not\x20found','spread','dataValues','SendFax','SendFaxRpc,\x20%s','addAgents','emit','userFaxAccount:save','removeAgents','userFaxAccount:remove','getAgents','rimraf','zip-dir','fast-json-patch','request-promise','moment','path','sox','to-csv','ejs','lodash','squel','crypto','jsforce','desk.js','querystring','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','../../config/logger','api','../../config/environment','../../mysqldb','redis','localhost','socket.io-emitter','./faxAccount.socket','register','jayson/promise','client','http','request','then','info','FaxAccount,\x20%s,\x20%s','request\x20sent','debug','FaxAccount,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','sendStatus','status','end','json','undefined','limit','count','offset','set','Content-Range','apply','reject','save','update','FaxAccounts','UserProfileResource','destroy','stack','name','Pause','FaxAccount','rawAttributes','type','key','query'];(function(_0x8ba19a,_0x1d2b2b){var _0x2bd8b4=function(_0xee823f){while(--_0xee823f){_0x8ba19a['push'](_0x8ba19a['shift']());}};_0x2bd8b4(++_0x1d2b2b);}(_0xaf50,0x1f0));var _0x0af5=function(_0x194ef7,_0x348197){_0x194ef7=_0x194ef7-0x0;var _0x4a749d=_0xaf50[_0x194ef7];return _0x4a749d;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x0af5('0x0'));var zipdir=require(_0x0af5('0x1'));var jsonpatch=require(_0x0af5('0x2'));var rp=require(_0x0af5('0x3'));var moment=require(_0x0af5('0x4'));var BPromise=require('bluebird');var Mustache=require('mustache');var util=require('util');var path=require(_0x0af5('0x5'));var sox=require(_0x0af5('0x6'));var csv=require(_0x0af5('0x7'));var ejs=require(_0x0af5('0x8'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x0af5('0x9'));var squel=require(_0x0af5('0xa'));var crypto=require(_0x0af5('0xb'));var jsforce=require(_0x0af5('0xc'));var deskjs=require(_0x0af5('0xd'));var toCsv=require(_0x0af5('0x7'));var querystring=require(_0x0af5('0xe'));var Papa=require('papaparse');var Redis=require(_0x0af5('0xf'));var authService=require(_0x0af5('0x10'));var qs=require('../../components/parsers/qs');var as=require(_0x0af5('0x11'));var hardwareService=require('../../config/license/hardware');var logger=require(_0x0af5('0x12'))(_0x0af5('0x13'));var utils=require('../../config/utils');var config=require(_0x0af5('0x14'));var licenseUtil=require('../../config/license/util');var db=require(_0x0af5('0x15'))['db'];config[_0x0af5('0x16')]=_['defaults'](config['redis'],{'host':_0x0af5('0x17'),'port':0x18eb});var socket=require(_0x0af5('0x18'))(new Redis(config[_0x0af5('0x16')]));require(_0x0af5('0x19'))[_0x0af5('0x1a')](socket);var jayson=require(_0x0af5('0x1b'));var client=jayson['client']['http']({'port':0x232c});var client9002=jayson[_0x0af5('0x1c')][_0x0af5('0x1d')]({'port':0x232a});function respondWithRpcPromise(_0x4024ee,_0x3bab8d,_0xca4c,_0xed3328){return new BPromise(function(_0x55be5b,_0x2f1868){var _0xc417a1=_0xed3328||client;return _0xc417a1[_0x0af5('0x1e')](_0x4024ee,_0xca4c)[_0x0af5('0x1f')](function(_0x2e930c){logger[_0x0af5('0x20')](_0x0af5('0x21'),_0x3bab8d,_0x0af5('0x22'));logger[_0x0af5('0x23')](_0x0af5('0x24'),_0x3bab8d,_0x0af5('0x22'),JSON[_0x0af5('0x25')](_0x2e930c));if(_0x2e930c[_0x0af5('0x26')]){if(_0x2e930c[_0x0af5('0x26')][_0x0af5('0x27')]===0x1f4){logger['error'](_0x0af5('0x21'),_0x3bab8d,_0x2e930c[_0x0af5('0x26')]['message']);return _0x2f1868(_0x2e930c[_0x0af5('0x26')]['message']);}logger[_0x0af5('0x26')](_0x0af5('0x21'),_0x3bab8d,_0x2e930c[_0x0af5('0x26')][_0x0af5('0x28')]);return _0x55be5b(_0x2e930c[_0x0af5('0x26')][_0x0af5('0x28')]);}else{logger[_0x0af5('0x20')]('FaxAccount,\x20%s,\x20%s',_0x3bab8d,_0x0af5('0x22'));_0x55be5b(_0x2e930c[_0x0af5('0x29')][_0x0af5('0x28')]);}})[_0x0af5('0x2a')](function(_0x441037){logger[_0x0af5('0x26')](_0x0af5('0x21'),_0x3bab8d,_0x441037);_0x2f1868(_0x441037);});});}function respondWithStatusCode(_0x35c1a0,_0x156048){_0x156048=_0x156048||0xcc;return function(_0x32d4b3){if(_0x32d4b3){return _0x35c1a0[_0x0af5('0x2b')](_0x156048);}return _0x35c1a0[_0x0af5('0x2c')](_0x156048)[_0x0af5('0x2d')]();};}function respondWithResult(_0x40562b,_0x213ff2){_0x213ff2=_0x213ff2||0xc8;return function(_0xb60803){if(_0xb60803){return _0x40562b['status'](_0x213ff2)[_0x0af5('0x2e')](_0xb60803);}};}function respondWithFilteredResult(_0x75040f,_0x2989aa){return function(_0x94a2c8){if(_0x94a2c8){var _0x2a2c99=typeof _0x2989aa['offset']===_0x0af5('0x2f')&&typeof _0x2989aa[_0x0af5('0x30')]===_0x0af5('0x2f');var _0x289797=_0x94a2c8[_0x0af5('0x31')];var _0x4409ae=_0x2a2c99?0x0:_0x2989aa[_0x0af5('0x32')];var _0x4ab353=_0x2a2c99?_0x94a2c8[_0x0af5('0x31')]:_0x2989aa[_0x0af5('0x32')]+_0x2989aa[_0x0af5('0x30')];var _0x47dfde;if(_0x4ab353>=_0x289797){_0x4ab353=_0x289797;_0x47dfde=0xc8;}else{_0x47dfde=0xce;}_0x75040f['status'](_0x47dfde);return _0x75040f[_0x0af5('0x33')](_0x0af5('0x34'),_0x4409ae+'-'+_0x4ab353+'/'+_0x289797)['json'](_0x94a2c8);}return null;};}function patchUpdates(_0x5ba397){return function(_0x53c4e9){try{jsonpatch[_0x0af5('0x35')](_0x53c4e9,_0x5ba397,!![]);}catch(_0x12eabb){return BPromise[_0x0af5('0x36')](_0x12eabb);}return _0x53c4e9[_0x0af5('0x37')]();};}function saveUpdates(_0x290a41,_0x335b08){return function(_0xd1315b){if(_0xd1315b){return _0xd1315b[_0x0af5('0x38')](_0x290a41)[_0x0af5('0x1f')](function(_0x5bd611){return _0x5bd611;});}return null;};}function removeEntity(_0x4346bb,_0x22e013){return function(_0x531460){if(_0x531460){return _0x531460['destroy']()[_0x0af5('0x1f')](function(){var _0x385fd2=_0x531460['get']({'plain':!![]});var _0x109a6e=_0x0af5('0x39');return db[_0x0af5('0x3a')][_0x0af5('0x3b')]({'where':{'type':_0x109a6e,'resourceId':_0x385fd2['id']}})[_0x0af5('0x1f')](function(){return _0x531460;});})[_0x0af5('0x1f')](function(){_0x4346bb['status'](0xcc)['end']();});}};}function handleEntityNotFound(_0x405cb2,_0x2d69fb){return function(_0x58577d){if(!_0x58577d){_0x405cb2[_0x0af5('0x2b')](0x194);}return _0x58577d;};}function handleError(_0x2e179f,_0x25ed1b){_0x25ed1b=_0x25ed1b||0x1f4;return function(_0x4a2c61){logger[_0x0af5('0x26')](_0x4a2c61[_0x0af5('0x3c')]);if(_0x4a2c61[_0x0af5('0x3d')]){delete _0x4a2c61[_0x0af5('0x3d')];}_0x2e179f['status'](_0x25ed1b)['send'](_0x4a2c61);};}exports['index']=function(_0x5deb16,_0x36552e){var _0x17ee78={'include':[{'model':db[_0x0af5('0x3e')],'as':'mandatoryDispositionPause'}]},_0x2fae87={},_0x1d0aca={'count':0x0,'rows':[]};var _0x4e3f30=_['map'](db[_0x0af5('0x3f')][_0x0af5('0x40')],function(_0x137ce3){return{'name':_0x137ce3['fieldName'],'type':_0x137ce3[_0x0af5('0x41')][_0x0af5('0x42')]};});_0x2fae87['model']=_['map'](_0x4e3f30,_0x0af5('0x3d'));_0x2fae87[_0x0af5('0x43')]=_[_0x0af5('0x44')](_0x5deb16[_0x0af5('0x43')]);_0x2fae87[_0x0af5('0x45')]=_[_0x0af5('0x46')](_0x2fae87[_0x0af5('0x47')],_0x2fae87['query']);_0x17ee78[_0x0af5('0x48')]=_[_0x0af5('0x46')](_0x2fae87[_0x0af5('0x47')],qs[_0x0af5('0x49')](_0x5deb16[_0x0af5('0x43')][_0x0af5('0x49')]));_0x17ee78[_0x0af5('0x48')]=_0x17ee78[_0x0af5('0x48')][_0x0af5('0x4a')]?_0x17ee78[_0x0af5('0x48')]:_0x2fae87[_0x0af5('0x47')];if(!_0x5deb16[_0x0af5('0x43')][_0x0af5('0x4b')](_0x0af5('0x4c'))){_0x17ee78['limit']=qs['limit'](_0x5deb16[_0x0af5('0x43')][_0x0af5('0x30')]);_0x17ee78[_0x0af5('0x32')]=qs[_0x0af5('0x32')](_0x5deb16[_0x0af5('0x43')][_0x0af5('0x32')]);}_0x17ee78[_0x0af5('0x4d')]=qs[_0x0af5('0x4e')](_0x5deb16['query'][_0x0af5('0x4e')]);_0x17ee78[_0x0af5('0x4f')]=qs['filters'](_[_0x0af5('0x50')](_0x5deb16[_0x0af5('0x43')],_0x2fae87['filters']),_0x4e3f30);if(_0x5deb16[_0x0af5('0x43')][_0x0af5('0x51')]){_0x17ee78[_0x0af5('0x4f')]=_[_0x0af5('0x52')](_0x17ee78[_0x0af5('0x4f')],{'$or':_[_0x0af5('0x53')](_0x4e3f30,function(_0x5ad2f4){if(_0x5ad2f4[_0x0af5('0x41')]!==_0x0af5('0x54')){var _0x1e6717={};_0x1e6717[_0x5ad2f4[_0x0af5('0x3d')]]={'$like':'%'+_0x5deb16[_0x0af5('0x43')][_0x0af5('0x51')]+'%'};return _0x1e6717;}})});}_0x17ee78=_[_0x0af5('0x52')]({},_0x17ee78,_0x5deb16[_0x0af5('0x55')]);var _0x81d9e={'where':_0x17ee78['where']};return db[_0x0af5('0x3f')][_0x0af5('0x31')](_0x81d9e)['then'](function(_0x5c3787){_0x1d0aca['count']=_0x5c3787;if(_0x5deb16[_0x0af5('0x43')][_0x0af5('0x56')]){_0x17ee78[_0x0af5('0x57')]=[{'all':!![]}];}return db[_0x0af5('0x3f')][_0x0af5('0x58')](_0x17ee78);})[_0x0af5('0x1f')](function(_0x24f6b5){_0x1d0aca[_0x0af5('0x59')]=_0x24f6b5;return _0x1d0aca;})[_0x0af5('0x1f')](respondWithFilteredResult(_0x36552e,_0x17ee78))[_0x0af5('0x2a')](handleError(_0x36552e,null));};exports[_0x0af5('0x5a')]=function(_0x2a505b,_0x2c6703){var _0x342564={'raw':![],'where':{'id':_0x2a505b[_0x0af5('0x5b')]['id']},'include':[{'model':db[_0x0af5('0x3e')],'as':_0x0af5('0x5c')}]},_0x5b3828={};_0x5b3828[_0x0af5('0x47')]=_[_0x0af5('0x44')](db[_0x0af5('0x3f')][_0x0af5('0x40')]);_0x5b3828['query']=_[_0x0af5('0x44')](_0x2a505b[_0x0af5('0x43')]);_0x5b3828[_0x0af5('0x45')]=_[_0x0af5('0x46')](_0x5b3828[_0x0af5('0x47')],_0x5b3828[_0x0af5('0x43')]);_0x342564[_0x0af5('0x48')]=_[_0x0af5('0x46')](_0x5b3828[_0x0af5('0x47')],qs['fields'](_0x2a505b[_0x0af5('0x43')][_0x0af5('0x49')]));_0x342564['attributes']=_0x342564[_0x0af5('0x48')][_0x0af5('0x4a')]?_0x342564['attributes']:_0x5b3828[_0x0af5('0x47')];if(_0x2a505b[_0x0af5('0x43')]['includeAll']){_0x342564[_0x0af5('0x57')]=[{'all':!![]}];}_0x342564=_['merge']({},_0x342564,_0x2a505b[_0x0af5('0x55')]);return db[_0x0af5('0x3f')]['find'](_0x342564)[_0x0af5('0x1f')](handleEntityNotFound(_0x2c6703,null))['then'](respondWithResult(_0x2c6703,null))[_0x0af5('0x2a')](handleError(_0x2c6703,null));};exports[_0x0af5('0x5d')]=function(_0x5438c3,_0x277927){return db[_0x0af5('0x3f')][_0x0af5('0x5d')](_0x5438c3[_0x0af5('0x5e')],{})[_0x0af5('0x1f')](function(_0x35ae9c){var _0x319766=_0x5438c3[_0x0af5('0x5f')][_0x0af5('0x60')]({'plain':!![]});if(!_0x319766)throw new Error(_0x0af5('0x61'));if(_0x319766[_0x0af5('0x62')]===_0x0af5('0x5f')){var _0x1e1512=_0x35ae9c[_0x0af5('0x60')]({'plain':!![]});var _0x12e26c=_0x0af5('0x39');return db[_0x0af5('0x63')][_0x0af5('0x64')]({'where':{'name':_0x12e26c,'userProfileId':_0x319766['userProfileId']},'raw':!![]})[_0x0af5('0x1f')](function(_0x33e7f2){if(_0x33e7f2&&_0x33e7f2[_0x0af5('0x65')]===0x0){return db[_0x0af5('0x3a')][_0x0af5('0x5d')]({'name':_0x1e1512[_0x0af5('0x3d')],'resourceId':_0x1e1512['id'],'type':_0x33e7f2[_0x0af5('0x3d')],'sectionId':_0x33e7f2['id']},{})[_0x0af5('0x1f')](function(){return _0x35ae9c;});}else{return _0x35ae9c;}})[_0x0af5('0x2a')](function(_0x289035){logger['error'](_0x0af5('0x66'),_0x289035);throw _0x289035;});}return _0x35ae9c;})['then'](respondWithResult(_0x277927,0xc9))[_0x0af5('0x2a')](handleError(_0x277927,null));};exports['update']=function(_0x29ade9,_0x4271db){if(_0x29ade9[_0x0af5('0x5e')]['id']){delete _0x29ade9[_0x0af5('0x5e')]['id'];}return db[_0x0af5('0x3f')][_0x0af5('0x64')]({'where':{'id':_0x29ade9[_0x0af5('0x5b')]['id']},'include':[{'model':db['Pause'],'as':_0x0af5('0x5c')}]})[_0x0af5('0x1f')](handleEntityNotFound(_0x4271db,null))[_0x0af5('0x1f')](saveUpdates(_0x29ade9[_0x0af5('0x5e')],null))[_0x0af5('0x1f')](respondWithResult(_0x4271db,null))[_0x0af5('0x2a')](handleError(_0x4271db,null));};exports['destroy']=function(_0x58f826,_0x92df0f){return db[_0x0af5('0x3f')][_0x0af5('0x64')]({'where':{'id':_0x58f826[_0x0af5('0x5b')]['id']}})[_0x0af5('0x1f')](handleEntityNotFound(_0x92df0f,null))['then'](removeEntity(_0x92df0f,null))[_0x0af5('0x2a')](handleError(_0x92df0f,null));};exports[_0x0af5('0x67')]=function(_0x59f97e,_0x60db0c){return db[_0x0af5('0x3f')][_0x0af5('0x67')]()['then'](respondWithResult(_0x60db0c,null))[_0x0af5('0x2a')](handleError(_0x60db0c,null));};exports['addDisposition']=function(_0x150cb6,_0x163ef7,_0x55ecfb){if(_0x150cb6[_0x0af5('0x5e')]['id']){delete _0x150cb6[_0x0af5('0x5e')]['id'];}return db[_0x0af5('0x3f')][_0x0af5('0x64')]({'where':{'id':_0x150cb6[_0x0af5('0x5b')]['id']}})[_0x0af5('0x1f')](handleEntityNotFound(_0x163ef7,null))[_0x0af5('0x1f')](function(_0x3ad049){if(_0x3ad049){_0x150cb6[_0x0af5('0x5e')]['FaxAccountId']=_0x3ad049['id'];return db[_0x0af5('0x68')][_0x0af5('0x5d')](_0x150cb6['body']);}})[_0x0af5('0x1f')](respondWithResult(_0x163ef7,null))[_0x0af5('0x2a')](handleError(_0x163ef7,null));};exports['getDispositions']=function(_0x13a3d5,_0x33f832,_0x4514f0){var _0x41da7e={'raw':![],'where':{}};var _0x55d3a3={};var _0x11ac83={'count':0x0,'rows':[]};return db[_0x0af5('0x3f')][_0x0af5('0x69')]({'where':{'id':_0x13a3d5['params']['id']}})['then'](handleEntityNotFound(_0x33f832,null))[_0x0af5('0x1f')](function(_0x466da6){if(_0x466da6){_0x55d3a3[_0x0af5('0x47')]=_[_0x0af5('0x44')](db[_0x0af5('0x68')]['rawAttributes']);_0x55d3a3['query']=_['keys'](_0x13a3d5[_0x0af5('0x43')]);_0x55d3a3[_0x0af5('0x45')]=_[_0x0af5('0x46')](_0x55d3a3['model'],_0x55d3a3[_0x0af5('0x43')]);_0x41da7e[_0x0af5('0x48')]=_[_0x0af5('0x46')](_0x55d3a3['model'],qs['fields'](_0x13a3d5[_0x0af5('0x43')][_0x0af5('0x49')]));_0x41da7e[_0x0af5('0x48')]=_0x41da7e[_0x0af5('0x48')]['length']?_0x41da7e[_0x0af5('0x48')]:_0x55d3a3['model'];if(!_0x13a3d5[_0x0af5('0x43')]['hasOwnProperty'](_0x0af5('0x4c'))){_0x41da7e[_0x0af5('0x30')]=qs[_0x0af5('0x30')](_0x13a3d5[_0x0af5('0x43')][_0x0af5('0x30')]);_0x41da7e[_0x0af5('0x32')]=qs[_0x0af5('0x32')](_0x13a3d5[_0x0af5('0x43')][_0x0af5('0x32')]);}_0x41da7e['order']=qs['sort'](_0x13a3d5[_0x0af5('0x43')]['sort']);_0x41da7e[_0x0af5('0x4f')]=qs[_0x0af5('0x45')](_[_0x0af5('0x50')](_0x13a3d5[_0x0af5('0x43')],_0x55d3a3[_0x0af5('0x45')]));_0x41da7e[_0x0af5('0x4f')][_0x0af5('0x6a')]=_0x466da6['id'];if(_0x13a3d5['query']['filter']){_0x41da7e[_0x0af5('0x4f')]=_[_0x0af5('0x52')](_0x41da7e[_0x0af5('0x4f')],{'$or':_['map'](_0x41da7e[_0x0af5('0x48')],function(_0x5d6161){var _0xc4fcb6={};_0xc4fcb6[_0x5d6161]={'$like':'%'+_0x13a3d5[_0x0af5('0x43')][_0x0af5('0x51')]+'%'};return _0xc4fcb6;})});}_0x41da7e=_[_0x0af5('0x52')]({},_0x41da7e,_0x13a3d5[_0x0af5('0x55')]);return db[_0x0af5('0x68')]['count']({'where':_0x41da7e[_0x0af5('0x4f')]})[_0x0af5('0x1f')](function(_0x4d3e8e){_0x11ac83['count']=_0x4d3e8e;if(_0x13a3d5['query']['includeAll']){_0x41da7e[_0x0af5('0x57')]=[{'all':!![]}];}return db[_0x0af5('0x68')]['findAll'](_0x41da7e);})[_0x0af5('0x1f')](function(_0x4dbc55){_0x11ac83[_0x0af5('0x59')]=_0x4dbc55;return _0x11ac83;});}})[_0x0af5('0x1f')](respondWithFilteredResult(_0x33f832,_0x41da7e))[_0x0af5('0x2a')](handleError(_0x33f832,null));};exports['removeDispositions']=function(_0x327959,_0x4ce10c,_0x4fe462){return db['FaxAccount']['find']({'where':{'id':_0x327959[_0x0af5('0x5b')]['id']}})[_0x0af5('0x1f')](handleEntityNotFound(_0x4ce10c,null))['then'](function(_0x2da046){if(_0x2da046){return _0x2da046['removeDispositions'](_0x327959[_0x0af5('0x43')][_0x0af5('0x6b')]);}})[_0x0af5('0x1f')](respondWithStatusCode(_0x4ce10c,null))[_0x0af5('0x2a')](handleError(_0x4ce10c,null));};exports[_0x0af5('0x6c')]=function(_0x1eb771,_0x5bc981,_0x42a6bf){if(_0x1eb771['body']['id']){delete _0x1eb771[_0x0af5('0x5e')]['id'];}return db[_0x0af5('0x3f')]['find']({'where':{'id':_0x1eb771[_0x0af5('0x5b')]['id']}})['then'](handleEntityNotFound(_0x5bc981,null))[_0x0af5('0x1f')](function(_0x58b8f3){if(_0x58b8f3){_0x1eb771[_0x0af5('0x5e')][_0x0af5('0x6a')]=_0x58b8f3['id'];return db[_0x0af5('0x6d')]['create'](_0x1eb771[_0x0af5('0x5e')]);}})[_0x0af5('0x1f')](respondWithResult(_0x5bc981,null))['catch'](handleError(_0x5bc981,null));};exports['getAnswers']=function(_0x2188de,_0x3ee255,_0x47c9f1){var _0x1ac3c1={'raw':![],'where':{}};var _0x19c96a={};var _0x11dce0={'count':0x0,'rows':[]};return db[_0x0af5('0x3f')][_0x0af5('0x69')]({'where':{'id':_0x2188de['params']['id']}})['then'](handleEntityNotFound(_0x3ee255,null))[_0x0af5('0x1f')](function(_0x308a2d){if(_0x308a2d){_0x19c96a[_0x0af5('0x47')]=_[_0x0af5('0x44')](db[_0x0af5('0x6d')][_0x0af5('0x40')]);_0x19c96a[_0x0af5('0x43')]=_[_0x0af5('0x44')](_0x2188de[_0x0af5('0x43')]);_0x19c96a[_0x0af5('0x45')]=_[_0x0af5('0x46')](_0x19c96a[_0x0af5('0x47')],_0x19c96a[_0x0af5('0x43')]);_0x1ac3c1['attributes']=_[_0x0af5('0x46')](_0x19c96a[_0x0af5('0x47')],qs[_0x0af5('0x49')](_0x2188de['query'][_0x0af5('0x49')]));_0x1ac3c1[_0x0af5('0x48')]=_0x1ac3c1[_0x0af5('0x48')][_0x0af5('0x4a')]?_0x1ac3c1[_0x0af5('0x48')]:_0x19c96a[_0x0af5('0x47')];if(!_0x2188de['query']['hasOwnProperty']('nolimit')){_0x1ac3c1['limit']=qs[_0x0af5('0x30')](_0x2188de['query'][_0x0af5('0x30')]);_0x1ac3c1[_0x0af5('0x32')]=qs[_0x0af5('0x32')](_0x2188de[_0x0af5('0x43')][_0x0af5('0x32')]);}_0x1ac3c1[_0x0af5('0x4d')]=qs[_0x0af5('0x4e')](_0x2188de[_0x0af5('0x43')][_0x0af5('0x4e')]);_0x1ac3c1[_0x0af5('0x4f')]=qs['filters'](_[_0x0af5('0x50')](_0x2188de[_0x0af5('0x43')],_0x19c96a[_0x0af5('0x45')]));_0x1ac3c1['where'][_0x0af5('0x6a')]=_0x308a2d['id'];if(_0x2188de[_0x0af5('0x43')][_0x0af5('0x51')]){_0x1ac3c1[_0x0af5('0x4f')]=_[_0x0af5('0x52')](_0x1ac3c1[_0x0af5('0x4f')],{'$or':_['map'](_0x1ac3c1[_0x0af5('0x48')],function(_0x4d4e54){var _0x33a04a={};_0x33a04a[_0x4d4e54]={'$like':'%'+_0x2188de[_0x0af5('0x43')][_0x0af5('0x51')]+'%'};return _0x33a04a;})});}_0x1ac3c1=_[_0x0af5('0x52')]({},_0x1ac3c1,_0x2188de[_0x0af5('0x55')]);return db[_0x0af5('0x6d')][_0x0af5('0x31')]({'where':_0x1ac3c1[_0x0af5('0x4f')]})[_0x0af5('0x1f')](function(_0x480ea5){_0x11dce0[_0x0af5('0x31')]=_0x480ea5;if(_0x2188de['query'][_0x0af5('0x56')]){_0x1ac3c1['include']=[{'all':!![]}];}return db[_0x0af5('0x6d')]['findAll'](_0x1ac3c1);})[_0x0af5('0x1f')](function(_0x4e206b){_0x11dce0['rows']=_0x4e206b;return _0x11dce0;});}})['then'](respondWithFilteredResult(_0x3ee255,_0x1ac3c1))['catch'](handleError(_0x3ee255,null));};exports[_0x0af5('0x6e')]=function(_0x2c81fa,_0x1ba006,_0x42d39c){return db['FaxAccount'][_0x0af5('0x64')]({'where':{'id':_0x2c81fa['params']['id']}})[_0x0af5('0x1f')](handleEntityNotFound(_0x1ba006,null))['then'](function(_0x998ce3){if(_0x998ce3){return _0x998ce3[_0x0af5('0x6e')](_0x2c81fa['query'][_0x0af5('0x6b')]);}})[_0x0af5('0x1f')](respondWithStatusCode(_0x1ba006,null))[_0x0af5('0x2a')](handleError(_0x1ba006,null));};exports[_0x0af5('0x6f')]=function(_0x4c4c6a,_0x168afa,_0x3ddaaa){return db[_0x0af5('0x70')][_0x0af5('0x64')]({'where':{'id':_0x4c4c6a[_0x0af5('0x5b')]['id']}})[_0x0af5('0x1f')](handleEntityNotFound(_0x168afa,null))['then'](function(_0x579aa1){if(_0x579aa1){return _0x579aa1['addInteraction'](_0x4c4c6a[_0x0af5('0x5e')][_0x0af5('0x6b')],_[_0x0af5('0x71')](_0x4c4c6a[_0x0af5('0x5e')],[_0x0af5('0x6b'),'id'])||{});}})[_0x0af5('0x1f')](respondWithResult(_0x168afa,null))['catch'](handleError(_0x168afa,null));};exports['getInteractions']=function(_0x514c03,_0x1943bb,_0x4fecde){var _0x553e71={'raw':![],'where':{}};var _0x4db74c={};var _0x21bdf4={'count':0x0,'rows':[]};return db['FaxAccount'][_0x0af5('0x69')]({'where':{'id':_0x514c03['params']['id']}})[_0x0af5('0x1f')](handleEntityNotFound(_0x1943bb,null))[_0x0af5('0x1f')](function(_0x1d2b7e){if(_0x1d2b7e){_0x4db74c[_0x0af5('0x47')]=_[_0x0af5('0x44')](db[_0x0af5('0x70')][_0x0af5('0x40')]);_0x4db74c[_0x0af5('0x43')]=_[_0x0af5('0x44')](_0x514c03[_0x0af5('0x43')]);_0x4db74c[_0x0af5('0x45')]=_[_0x0af5('0x46')](_0x4db74c[_0x0af5('0x47')],_0x4db74c['query']);_0x553e71[_0x0af5('0x48')]=_[_0x0af5('0x46')](_0x4db74c[_0x0af5('0x47')],qs[_0x0af5('0x49')](_0x514c03['query'][_0x0af5('0x49')]));_0x553e71[_0x0af5('0x48')]=_0x553e71['attributes']['length']?_0x553e71['attributes']:_0x4db74c[_0x0af5('0x47')];if(!_0x514c03[_0x0af5('0x43')]['hasOwnProperty'](_0x0af5('0x4c'))){_0x553e71[_0x0af5('0x30')]=qs[_0x0af5('0x30')](_0x514c03[_0x0af5('0x43')]['limit']);_0x553e71['offset']=qs[_0x0af5('0x32')](_0x514c03['query'][_0x0af5('0x32')]);}_0x553e71[_0x0af5('0x4d')]=qs[_0x0af5('0x4e')](_0x514c03['query'][_0x0af5('0x4e')]);_0x553e71[_0x0af5('0x4f')]=qs[_0x0af5('0x45')](_[_0x0af5('0x50')](_0x514c03[_0x0af5('0x43')],_0x4db74c['filters']));_0x553e71[_0x0af5('0x4f')][_0x0af5('0x6a')]=_0x1d2b7e['id'];if(_0x514c03[_0x0af5('0x43')][_0x0af5('0x51')]){_0x553e71[_0x0af5('0x4f')]=_['merge'](_0x553e71[_0x0af5('0x4f')],{'$or':_[_0x0af5('0x53')](_0x553e71['attributes'],function(_0x533e75){var _0x2e3a10={};_0x2e3a10[_0x533e75]={'$like':'%'+_0x514c03[_0x0af5('0x43')]['filter']+'%'};return _0x2e3a10;})});}_0x553e71=_[_0x0af5('0x52')]({},_0x553e71,_0x514c03[_0x0af5('0x55')]);return db[_0x0af5('0x70')][_0x0af5('0x31')]({'where':_0x553e71[_0x0af5('0x4f')]})[_0x0af5('0x1f')](function(_0x2b8f96){_0x21bdf4[_0x0af5('0x31')]=_0x2b8f96;if(_0x514c03[_0x0af5('0x43')][_0x0af5('0x56')]){_0x553e71[_0x0af5('0x57')]=[{'model':db[_0x0af5('0x72')],'as':'Contact','required':![]},{'model':db[_0x0af5('0x73')],'as':_0x0af5('0x74'),'attributes':[_0x0af5('0x3d'),_0x0af5('0x75'),_0x0af5('0x76')],'required':![]},{'model':db['Tag'],'as':_0x0af5('0x77'),'attributes':['id',_0x0af5('0x3d'),'color'],'where':_0x514c03[_0x0af5('0x43')][_0x0af5('0x78')]?{'id':_0x514c03[_0x0af5('0x43')][_0x0af5('0x78')]}:undefined,'required':_0x514c03[_0x0af5('0x43')][_0x0af5('0x78')]?!![]:![]}];}return db[_0x0af5('0x70')][_0x0af5('0x58')](_0x553e71);})[_0x0af5('0x1f')](function(_0x305c69){_0x21bdf4[_0x0af5('0x59')]=_0x305c69;return _0x21bdf4;});}})[_0x0af5('0x1f')](respondWithFilteredResult(_0x1943bb,_0x553e71))[_0x0af5('0x2a')](handleError(_0x1943bb,null));};exports[_0x0af5('0x79')]=function(_0x446236,_0x4a3f03,_0x5f187d){return db['FaxAccount']['findOne']({'where':{'id':_0x446236[_0x0af5('0x5b')]['id']}})[_0x0af5('0x1f')](handleEntityNotFound(_0x4a3f03,null))[_0x0af5('0x1f')](function(_0x16df8d){if(_0x16df8d){return db['sequelize'][_0x0af5('0x7a')](function(_0x42f2c9){return db[_0x0af5('0x7b')][_0x0af5('0x3b')]({'where':{'FaxAccountId':_0x446236['params']['id']},'transaction':_0x42f2c9})[_0x0af5('0x1f')](function(_0x3684f7){var _0x3d4f8e=_[_0x0af5('0x53')](_0x446236[_0x0af5('0x5e')],function(_0x552557){_0x552557['FaxAccountId']=_0x446236['params']['id'];return _0x552557;});return db[_0x0af5('0x7b')][_0x0af5('0x7c')](_0x3d4f8e,{'transaction':_0x42f2c9});});})['then'](function(){return db[_0x0af5('0x7b')][_0x0af5('0x7d')]({'where':{'FaxAccountId':_0x446236[_0x0af5('0x5b')]['id']},'order':_0x0af5('0x7e')});});}})[_0x0af5('0x1f')](respondWithResult(_0x4a3f03,null))[_0x0af5('0x2a')](handleError(_0x4a3f03,null));};exports[_0x0af5('0x7f')]=function(_0x3e3d81,_0xd650f5,_0xf0ebf7){var _0x33bf70={};var _0x327ffe={};var _0x56f53a;var _0x2c5048;return db[_0x0af5('0x3f')][_0x0af5('0x69')]({'where':{'id':_0x3e3d81[_0x0af5('0x5b')]['id']}})[_0x0af5('0x1f')](handleEntityNotFound(_0xd650f5,null))[_0x0af5('0x1f')](function(_0x309e04){if(_0x309e04){_0x56f53a=_0x309e04;_0x327ffe[_0x0af5('0x47')]=_[_0x0af5('0x44')](db['FaxApplication'][_0x0af5('0x40')]);_0x327ffe['query']=_[_0x0af5('0x44')](_0x3e3d81['query']);_0x327ffe[_0x0af5('0x45')]=_[_0x0af5('0x46')](_0x327ffe['model'],_0x327ffe['query']);_0x33bf70[_0x0af5('0x48')]=_[_0x0af5('0x46')](_0x327ffe[_0x0af5('0x47')],qs[_0x0af5('0x49')](_0x3e3d81['query'][_0x0af5('0x49')]));_0x33bf70['attributes']=_0x33bf70['attributes'][_0x0af5('0x4a')]?_0x33bf70[_0x0af5('0x48')]:_0x327ffe[_0x0af5('0x47')];_0x33bf70[_0x0af5('0x4d')]=qs[_0x0af5('0x4e')](_0x3e3d81[_0x0af5('0x43')][_0x0af5('0x4e')]);_0x33bf70[_0x0af5('0x4f')]=qs[_0x0af5('0x45')](_[_0x0af5('0x50')](_0x3e3d81[_0x0af5('0x43')],_0x327ffe['filters']));if(_0x3e3d81[_0x0af5('0x43')]['filter']){_0x33bf70[_0x0af5('0x4f')]=_[_0x0af5('0x52')](_0x33bf70[_0x0af5('0x4f')],{'$or':_[_0x0af5('0x53')](_0x33bf70[_0x0af5('0x48')],function(_0x5cc366){var _0x358d1e={};_0x358d1e[_0x5cc366]={'$like':'%'+_0x3e3d81[_0x0af5('0x43')]['filter']+'%'};return _0x358d1e;})});}_0x33bf70=_[_0x0af5('0x52')]({},_0x33bf70,_0x3e3d81[_0x0af5('0x55')]);return _0x56f53a[_0x0af5('0x7f')](_0x33bf70);}})[_0x0af5('0x1f')](function(_0x451ae4){if(_0x451ae4){_0x2c5048=_0x451ae4[_0x0af5('0x4a')];if(!_0x3e3d81[_0x0af5('0x43')][_0x0af5('0x4b')]('nolimit')){_0x33bf70[_0x0af5('0x30')]=qs[_0x0af5('0x30')](_0x3e3d81[_0x0af5('0x43')][_0x0af5('0x30')]);_0x33bf70['offset']=qs[_0x0af5('0x32')](_0x3e3d81[_0x0af5('0x43')][_0x0af5('0x32')]);}return _0x56f53a[_0x0af5('0x7f')](_0x33bf70);}})[_0x0af5('0x1f')](function(_0x52964b){if(_0x52964b){return _0x52964b?{'count':_0x2c5048,'rows':_0x52964b}:null;}})[_0x0af5('0x1f')](respondWithResult(_0xd650f5,null))[_0x0af5('0x2a')](handleError(_0xd650f5,null));};function Extension(_0x44cd1c,_0x3f5b44,_0x37a514,_0x3b97f7){this['context']=_0x0af5('0x80');this[_0x0af5('0x81')]=_0x44cd1c[_0x0af5('0x82')];this[_0x0af5('0x83')]=_0x3b97f7;this[_0x0af5('0x41')]=_0x0af5('0x84');this['description']=_0x0af5('0x85');this['FaxAccountId']=_0x44cd1c['id'];this['priority']=_0x3f5b44;this[_0x0af5('0x86')]=_0x37a514;}function createExtensionsReciveFax(_0x1e350f){var _0xb3678c=0x1;var _0x36f126=[];_0x36f126[_0x0af5('0x87')](new Extension(_0x1e350f,_0xb3678c,'',_0x0af5('0x88')));_0xb3678c+=0x1;_0x36f126['push'](new Extension(_0x1e350f,_0xb3678c,_0x0af5('0x89'),'Set'));_0xb3678c+=0x1;for(var _0x514e1e in _0x1e350f){if(_0x1e350f[_0x0af5('0x4b')](_0x514e1e)&&(_0x514e1e==='ecm'||_0x514e1e===_0x0af5('0x82')||_0x514e1e==='gateway'||_0x514e1e===_0x0af5('0x8a')||_0x514e1e===_0x0af5('0x8b')||_0x514e1e===_0x0af5('0x8c')||_0x514e1e===_0x0af5('0x8d')||_0x514e1e===_0x0af5('0x8e')||_0x514e1e===_0x0af5('0x8f'))){_0x36f126[_0x0af5('0x87')](new Extension(_0x1e350f,_0xb3678c,'FAXOPT('+_0x514e1e+')='+_0x1e350f[_0x514e1e],'Set'));_0xb3678c+=0x1;}}_0x36f126[_0x0af5('0x87')](new Extension(_0x1e350f,_0xb3678c,'6',_0x0af5('0x90')));_0xb3678c+=0x1;_0x36f126['push'](new Extension(_0x1e350f,_0xb3678c,_0x0af5('0x91'),'ReceiveFax'));_0xb3678c=0x0;return _0x36f126;}exports['addAccountApplications']=function(_0x4eb805,_0x1639e9,_0x4875c1){var _0x1a8e32;return db['sequelize'][_0x0af5('0x7a')](function(_0x11f785){return db[_0x0af5('0x3f')][_0x0af5('0x5d')](_0x4eb805[_0x0af5('0x5e')],{'transaction':_0x11f785})[_0x0af5('0x1f')](function(_0x2c87d6){_0x1a8e32=_0x2c87d6['get']({'plain':!![]});return db[_0x0af5('0x92')]['bulkCreate'](createExtensionsReciveFax(_0x1a8e32),{'transaction':_0x11f785});});})[_0x0af5('0x1f')](function(){return _0x1a8e32;})[_0x0af5('0x1f')](respondWithResult(_0x1639e9,null))['catch'](handleError(_0x1639e9,null));};exports[_0x0af5('0x93')]=function(_0x44359,_0x532a45,_0x11d37a){var _0x442681;return db[_0x0af5('0x94')]['transaction'](function(_0x43e585){return db[_0x0af5('0x3f')]['update'](_0x44359[_0x0af5('0x5e')],{'where':{'id':_0x44359['body']['id']},'transaction':_0x43e585})['then'](function(_0x2e16bf){return db[_0x0af5('0x92')][_0x0af5('0x3b')]({'where':{'FaxAccountId':_0x44359[_0x0af5('0x5e')]['id']},'transaction':_0x43e585})[_0x0af5('0x1f')](function(_0x5191de){return db['VoiceExtension'][_0x0af5('0x7c')](createExtensionsReciveFax(_[_0x0af5('0x71')](_0x44359[_0x0af5('0x5e')],[_0x0af5('0x95'),_0x0af5('0x42'),_0x0af5('0x96'),_0x0af5('0x97'),_0x0af5('0x98'),_0x0af5('0x99')])),{'transaction':_0x43e585});});});})[_0x0af5('0x1f')](function(){return db['FaxAccount'][_0x0af5('0x9a')](_0x44359['body']['id']);})[_0x0af5('0x1f')](respondWithResult(_0x532a45,null))[_0x0af5('0x2a')](handleError(_0x532a45,null));};exports[_0x0af5('0x9b')]=function(_0x320282,_0x1f779b,_0x1e6961){var _0x1bd1a9={'raw':!![],'where':{}};var _0x16fd5f={};var _0x21ead8={'count':0x0,'rows':[]};return db[_0x0af5('0x3f')][_0x0af5('0x69')]({'where':{'id':_0x320282[_0x0af5('0x5b')]['id']}})['then'](handleEntityNotFound(_0x1f779b,null))[_0x0af5('0x1f')](function(_0x2f3c21){if(_0x2f3c21){_0x16fd5f['model']=_['keys'](db[_0x0af5('0x9c')][_0x0af5('0x40')]);_0x16fd5f[_0x0af5('0x43')]=_['keys'](_0x320282[_0x0af5('0x43')]);_0x16fd5f[_0x0af5('0x45')]=_[_0x0af5('0x46')](_0x16fd5f[_0x0af5('0x47')],_0x16fd5f[_0x0af5('0x43')]);_0x1bd1a9[_0x0af5('0x48')]=_[_0x0af5('0x46')](_0x16fd5f[_0x0af5('0x47')],qs[_0x0af5('0x49')](_0x320282[_0x0af5('0x43')][_0x0af5('0x49')]));_0x1bd1a9['attributes']=_0x1bd1a9['attributes']['length']?_0x1bd1a9[_0x0af5('0x48')]:_0x16fd5f[_0x0af5('0x47')];if(!_0x320282[_0x0af5('0x43')][_0x0af5('0x4b')]('nolimit')){_0x1bd1a9[_0x0af5('0x30')]=qs[_0x0af5('0x30')](_0x320282['query'][_0x0af5('0x30')]);_0x1bd1a9['offset']=qs['offset'](_0x320282['query'][_0x0af5('0x32')]);}_0x1bd1a9['order']=qs['sort'](_0x320282['query'][_0x0af5('0x4e')]);_0x1bd1a9[_0x0af5('0x4f')]=qs['filters'](_[_0x0af5('0x50')](_0x320282['query'],_0x16fd5f[_0x0af5('0x45')]));_0x1bd1a9[_0x0af5('0x4f')]['FaxAccountId']=_0x2f3c21['id'];if(_0x320282['query']['filter']){_0x1bd1a9[_0x0af5('0x4f')]=_[_0x0af5('0x52')](_0x1bd1a9[_0x0af5('0x4f')],{'$or':_[_0x0af5('0x53')](_0x1bd1a9['attributes'],function(_0x22968b){var _0x5cd6f8={};_0x5cd6f8[_0x22968b]={'$like':'%'+_0x320282[_0x0af5('0x43')][_0x0af5('0x51')]+'%'};return _0x5cd6f8;})});}if(_0x320282['query']['$gte']){var _0x105444=_0x320282[_0x0af5('0x43')][_0x0af5('0x9d')][_0x0af5('0x9e')](',');var _0x3ac28b={};_0x3ac28b[_0x105444[0x0]]={'$gte':moment(_0x105444[0x1])[_0x0af5('0x9f')]('YYYY-MM-DD\x20HH:mm:ss')};_0x1bd1a9[_0x0af5('0x4f')]=_['merge'](_0x1bd1a9[_0x0af5('0x4f')],_0x3ac28b);}_0x1bd1a9=_['merge']({},_0x1bd1a9,_0x320282['options']);return db['FaxMessage'][_0x0af5('0x31')]({'where':_0x1bd1a9[_0x0af5('0x4f')]})[_0x0af5('0x1f')](function(_0x210f79){_0x21ead8[_0x0af5('0x31')]=_0x210f79;if(_0x320282[_0x0af5('0x43')]['includeAll']){_0x1bd1a9[_0x0af5('0x57')]=[{'all':!![]}];}return db['FaxMessage'][_0x0af5('0x58')](_0x1bd1a9);})['then'](function(_0x5d2888){_0x21ead8[_0x0af5('0x59')]=_0x5d2888;return _0x21ead8;});}})[_0x0af5('0x1f')](respondWithFilteredResult(_0x1f779b,_0x1bd1a9))[_0x0af5('0x2a')](handleError(_0x1f779b,null));};exports['send']=function(_0x4bc546,_0x56edcf,_0x2d5448){var _0x494399,_0x460967={},_0x29653c;if(_0x4bc546[_0x0af5('0x5e')]['to']){_0x29653c=_0x4bc546['body']['to'][0x0];}return db['FaxAccount'][_0x0af5('0x64')]({'where':{'id':_0x4bc546[_0x0af5('0x5b')]['id']},'include':[{'model':db[_0x0af5('0xa0')],'as':_0x0af5('0xa1'),'include':[{'model':db[_0x0af5('0x72')],'as':_0x0af5('0xa2'),'where':{'fax':_0x29653c},'limit':0x1,'order':[['updatedAt','DESC']]}]}]})[_0x0af5('0x1f')](handleEntityNotFound(_0x56edcf,null))[_0x0af5('0x1f')](function(_0x55995f){_0x494399=_0x55995f;if(_0x4bc546['body'][_0x0af5('0xa3')]&&_0x4bc546[_0x0af5('0x5e')][_0x0af5('0xa3')][_0x0af5('0x4a')]){for(var _0x3168c8=0x0;_0x3168c8<_0x4bc546['body']['attachments'][_0x0af5('0x4a')];_0x3168c8+=0x1){_0x4bc546[_0x0af5('0x5e')][_0x0af5('0xa3')][_0x3168c8]={'filename':_0x4bc546[_0x0af5('0x5e')][_0x0af5('0xa3')][_0x3168c8][_0x0af5('0x3d')],'id':_0x4bc546[_0x0af5('0x5e')][_0x0af5('0xa3')][_0x3168c8]['id'],'path':path[_0x0af5('0xa4')](config['root'],_0x0af5('0xa5'),_0x4bc546[_0x0af5('0x5e')][_0x0af5('0xa3')][_0x3168c8][_0x0af5('0xa6')])};}}return respondWithRpcPromise(_0x0af5('0xa7'),_0x0af5('0xa7'),{'FaxAccountId':_[_0x0af5('0xa8')](_0x4bc546[_0x0af5('0x5b')]['id'])?undefined:_0x4bc546['params']['id'],'path':_[_0x0af5('0xa8')](_0x4bc546[_0x0af5('0x5e')][_0x0af5('0xa3')][0x0][_0x0af5('0x5')])?undefined:_0x4bc546[_0x0af5('0x5e')]['attachments'][0x0]['path'],'fax':_[_0x0af5('0xa8')](_0x4bc546[_0x0af5('0x5e')]['to'][0x0])?undefined:_0x4bc546['body']['to'][0x0]},client9002);})[_0x0af5('0x1f')](function(){if(_0x494399){if(_[_0x0af5('0xa8')](_0x4bc546[_0x0af5('0x5e')]['from'])){_0x4bc546[_0x0af5('0x5e')][_0x0af5('0xa9')]=util[_0x0af5('0x9f')](_0x0af5('0xaa'),_0x494399[_0x0af5('0x3d')],_0x494399[_0x0af5('0xab')]);}if(_0x494399[_0x0af5('0xa1')]){if(_0x494399['List'][_0x0af5('0xa2')][_0x0af5('0x4a')]){return _0x494399[_0x0af5('0xa1')][_0x0af5('0xa2')][0x0];}else{return db[_0x0af5('0x72')][_0x0af5('0x5d')](_[_0x0af5('0xac')](_0x4bc546[_0x0af5('0x5e')],{'firstName':_0x4bc546[_0x0af5('0x5e')]['to'][0x0],'phone':_0x4bc546[_0x0af5('0x5e')]['to'][0x0],'fax':_0x4bc546['body']['to'][0x0],'ListId':_0x494399[_0x0af5('0x99')]}));}}else{throw new Error('List\x20not\x20found');}}else{throw new Error(_0x0af5('0xad'));}})[_0x0af5('0x1f')](function(_0x5e5421){if(_0x5e5421){return db[_0x0af5('0x70')][_0x0af5('0x64')]({'where':{'ContactId':_0x5e5421['id'],'closed':![],'FaxAccountId':_0x494399['id']}})[_0x0af5('0x1f')](function(_0x1b0447){if(_0x1b0447){return[_0x1b0447,![]];}return db['FaxInteraction'][_0x0af5('0x5d')]({'UserId':_0x4bc546[_0x0af5('0x5f')]['id'],'ContactId':_0x5e5421['id'],'FaxAccountId':_0x494399['id'],'fax':_0x4bc546['body']['to'][0x0],'firstMsgDirection':_0x0af5('0xae'),'Messages':[_[_0x0af5('0x52')](_0x4bc546[_0x0af5('0x5e')],{'read':![],'body':_0x4bc546[_0x0af5('0x5e')][_0x0af5('0xa3')][0x0][_0x0af5('0xaf')],'FaxAccountId':_0x494399['id'],'UserId':_0x4bc546[_0x0af5('0x5f')]['id'],'ContactId':_0x5e5421['id'],'AttachmentId':_0x4bc546[_0x0af5('0x5e')][_0x0af5('0xa3')][0x0]['id']})]},{'include':[{'model':db[_0x0af5('0x9c')],'as':_0x0af5('0xb0')}]})[_0x0af5('0x1f')](function(_0x26d841){return[_0x26d841,!![]];});});}else{throw new Error(_0x0af5('0xb1'));}})[_0x0af5('0xb2')](function(_0x2fd47d,_0x2984fa){if(_0x2984fa){return _0x2fd47d;}return db[_0x0af5('0x9c')][_0x0af5('0x5d')]({'direction':_0x0af5('0xae'),'read':![],'body':_0x4bc546[_0x0af5('0x5e')][_0x0af5('0xa3')][0x0][_0x0af5('0xaf')],'FaxAccountId':_0x494399['id'],'FaxInteractionId':_0x2fd47d['id'],'UserId':_0x4bc546[_0x0af5('0x5f')]['id'],'ContactId':_0x2fd47d['ContactId'],'AttachmentId':_0x4bc546[_0x0af5('0x5e')][_0x0af5('0xa3')][0x0]['id']})['then'](function(_0x544b8d){_0x2fd47d[_0x0af5('0xb3')][_0x0af5('0xb0')]=[];_0x2fd47d[_0x0af5('0xb3')][_0x0af5('0xb0')]['push'](_0x544b8d[_0x0af5('0xb3')]);return _0x2fd47d;});})['then'](function(_0x328d56){respondWithRpcPromise(_0x0af5('0xb4'),_0x0af5('0xb4'),{'FaxAccountId':_[_0x0af5('0xa8')](_0x4bc546[_0x0af5('0x5b')]['id'])?undefined:_0x4bc546[_0x0af5('0x5b')]['id'],'path':_[_0x0af5('0xa8')](_0x4bc546['body'][_0x0af5('0xa3')][0x0]['path'])?undefined:_0x4bc546[_0x0af5('0x5e')]['attachments'][0x0][_0x0af5('0x5')],'fax':_[_0x0af5('0xa8')](_0x4bc546[_0x0af5('0x5e')]['to'][0x0])?undefined:_0x4bc546[_0x0af5('0x5e')]['to'][0x0],'AttachmentId':_0x4bc546[_0x0af5('0x5e')][_0x0af5('0xa3')][0x0]['id']},client9002)['then'](function(_0x296d09){logger[_0x0af5('0x20')](_0x0af5('0xb5'),_0x296d09);})[_0x0af5('0x2a')](function(_0x134664){logger[_0x0af5('0x20')](_0x0af5('0xb5'),_0x134664);});return _0x328d56;})[_0x0af5('0x1f')](respondWithResult(_0x56edcf,null))[_0x0af5('0x2a')](handleError(_0x56edcf,null));};exports[_0x0af5('0xb6')]=function(_0x1acc5d,_0x10de93,_0xc28be7){return db[_0x0af5('0x3f')][_0x0af5('0x64')]({'where':{'id':_0x1acc5d[_0x0af5('0x5b')]['id']}})[_0x0af5('0x1f')](handleEntityNotFound(_0x10de93,null))[_0x0af5('0x1f')](function(_0x37f451){if(_0x37f451){return _0x37f451[_0x0af5('0xb6')](_0x1acc5d['body'][_0x0af5('0x6b')],_['omit'](_0x1acc5d[_0x0af5('0x5e')],['ids','id'])||{})['spread'](function(_0x278adb){for(var _0x233e28=0x0;_0x233e28<_0x1acc5d[_0x0af5('0x5e')][_0x0af5('0x6b')][_0x0af5('0x4a')];_0x233e28+=0x1){socket[_0x0af5('0xb7')](_0x0af5('0xb8'),{'UserId':Number(_0x1acc5d[_0x0af5('0x5e')]['ids'][_0x233e28]),'FaxAccountId':Number(_0x1acc5d[_0x0af5('0x5b')]['id'])});}return _0x278adb;});}})[_0x0af5('0x1f')](respondWithResult(_0x10de93,null))[_0x0af5('0x2a')](handleError(_0x10de93,null));};exports[_0x0af5('0xb9')]=function(_0x2bf84a,_0x3e1bf7,_0x5aa472){return db[_0x0af5('0x3f')][_0x0af5('0x64')]({'where':{'id':_0x2bf84a[_0x0af5('0x5b')]['id']}})[_0x0af5('0x1f')](handleEntityNotFound(_0x3e1bf7,null))[_0x0af5('0x1f')](function(_0x2f812a){if(_0x2f812a){return _0x2f812a[_0x0af5('0xb9')](_0x2bf84a[_0x0af5('0x43')][_0x0af5('0x6b')])[_0x0af5('0x1f')](function(){if(_['isArray'](_0x2bf84a['query']['ids'])){for(var _0x22326a=0x0;_0x22326a<_0x2bf84a[_0x0af5('0x43')]['ids']['length'];_0x22326a+=0x1){socket[_0x0af5('0xb7')](_0x0af5('0xba'),{'UserId':Number(_0x2bf84a[_0x0af5('0x43')][_0x0af5('0x6b')][_0x22326a]),'FaxAccountId':Number(_0x2bf84a[_0x0af5('0x5b')]['id'])});}}else{socket[_0x0af5('0xb7')]('userFaxAccount:remove',{'UserId':Number(_0x2bf84a[_0x0af5('0x43')][_0x0af5('0x6b')]),'FaxAccountId':Number(_0x2bf84a[_0x0af5('0x5b')]['id'])});}});}})[_0x0af5('0x1f')](respondWithStatusCode(_0x3e1bf7,null))['catch'](handleError(_0x3e1bf7,null));};exports['getAgents']=function(_0xbab2f8,_0x5a235f,_0x10f9cc){var _0x10a099={};var _0x2583a9={};var _0x55682d;var _0x1f98fc;return db['FaxAccount'][_0x0af5('0x69')]({'where':{'id':_0xbab2f8['params']['id']}})[_0x0af5('0x1f')](handleEntityNotFound(_0x5a235f,null))[_0x0af5('0x1f')](function(_0x4a6ad8){if(_0x4a6ad8){_0x55682d=_0x4a6ad8;_0x2583a9[_0x0af5('0x47')]=_[_0x0af5('0x44')](db[_0x0af5('0x73')][_0x0af5('0x40')]);_0x2583a9[_0x0af5('0x43')]=_['keys'](_0xbab2f8[_0x0af5('0x43')]);_0x2583a9[_0x0af5('0x45')]=_[_0x0af5('0x46')](_0x2583a9[_0x0af5('0x47')],_0x2583a9[_0x0af5('0x43')]);_0x10a099['attributes']=_[_0x0af5('0x46')](_0x2583a9['model'],qs[_0x0af5('0x49')](_0xbab2f8[_0x0af5('0x43')][_0x0af5('0x49')]));_0x10a099[_0x0af5('0x48')]=_0x10a099['attributes']['length']?_0x10a099[_0x0af5('0x48')]:_0x2583a9[_0x0af5('0x47')];_0x10a099[_0x0af5('0x4d')]=qs[_0x0af5('0x4e')](_0xbab2f8['query'][_0x0af5('0x4e')]);_0x10a099[_0x0af5('0x4f')]=qs[_0x0af5('0x45')](_['pick'](_0xbab2f8[_0x0af5('0x43')],_0x2583a9[_0x0af5('0x45')]));if(_0xbab2f8[_0x0af5('0x43')]['filter']){_0x10a099[_0x0af5('0x4f')]=_['merge'](_0x10a099[_0x0af5('0x4f')],{'$or':_['map'](_0x10a099[_0x0af5('0x48')],function(_0x4a66bc){var _0x23b39c={};_0x23b39c[_0x4a66bc]={'$like':'%'+_0xbab2f8[_0x0af5('0x43')][_0x0af5('0x51')]+'%'};return _0x23b39c;})});}_0x10a099=_[_0x0af5('0x52')]({},_0x10a099,_0xbab2f8['options']);return _0x55682d[_0x0af5('0xbb')](_0x10a099);}})[_0x0af5('0x1f')](function(_0x52e18c){if(_0x52e18c){_0x1f98fc=_0x52e18c[_0x0af5('0x4a')];if(!_0xbab2f8[_0x0af5('0x43')][_0x0af5('0x4b')]('nolimit')){_0x10a099['limit']=qs[_0x0af5('0x30')](_0xbab2f8[_0x0af5('0x43')]['limit']);_0x10a099['offset']=qs[_0x0af5('0x32')](_0xbab2f8['query']['offset']);}return _0x55682d['getAgents'](_0x10a099);}})[_0x0af5('0x1f')](function(_0x25388f){if(_0x25388f){return _0x25388f?{'count':_0x1f98fc,'rows':_0x25388f}:null;}})[_0x0af5('0x1f')](respondWithResult(_0x5a235f,null))[_0x0af5('0x2a')](handleError(_0x5a235f,null));};
\ No newline at end of file
index 4906590..8a1dd03 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc7df=['../../mysqldb','FaxAccount','setMaxListeners','save','update','emit','hook','exports'];(function(_0x2d040d,_0x2e6dfb){var _0x377dec=function(_0x5bdf64){while(--_0x5bdf64){_0x2d040d['push'](_0x2d040d['shift']());}};_0x377dec(++_0x2e6dfb);}(_0xc7df,0xd0));var _0xfc7d=function(_0x30ae8b,_0xe46ef7){_0x30ae8b=_0x30ae8b-0x0;var _0x22886=_0xc7df[_0x30ae8b];return _0x22886;};'use strict';var EventEmitter=require('events');var FaxAccount=require(_0xfc7d('0x0'))['db'][_0xfc7d('0x1')];var FaxAccountEvents=new EventEmitter();FaxAccountEvents[_0xfc7d('0x2')](0x0);var events={'afterCreate':_0xfc7d('0x3'),'afterUpdate':_0xfc7d('0x4'),'afterDestroy':'remove'};function emitEvent(_0x42407){return function(_0x2ca4d8,_0x2509e6,_0x5206e0){FaxAccountEvents[_0xfc7d('0x5')](_0x42407+':'+_0x2ca4d8['id'],_0x2ca4d8);FaxAccountEvents[_0xfc7d('0x5')](_0x42407,_0x2ca4d8);_0x5206e0(null);};}for(var e in events){if(events['hasOwnProperty'](e)){var event=events[e];FaxAccount[_0xfc7d('0x6')](e,emitEvent(event));}}module[_0xfc7d('0x7')]=FaxAccountEvents;
\ No newline at end of file
+var _0xc359=['remove','hasOwnProperty','hook','events','FaxAccount','setMaxListeners','save','update'];(function(_0x17077b,_0x402caf){var _0x41c6fd=function(_0x344071){while(--_0x344071){_0x17077b['push'](_0x17077b['shift']());}};_0x41c6fd(++_0x402caf);}(_0xc359,0x93));var _0x9c35=function(_0x3c1b2d,_0x23b1b9){_0x3c1b2d=_0x3c1b2d-0x0;var _0x412475=_0xc359[_0x3c1b2d];return _0x412475;};'use strict';var EventEmitter=require(_0x9c35('0x0'));var FaxAccount=require('../../mysqldb')['db'][_0x9c35('0x1')];var FaxAccountEvents=new EventEmitter();FaxAccountEvents[_0x9c35('0x2')](0x0);var events={'afterCreate':_0x9c35('0x3'),'afterUpdate':_0x9c35('0x4'),'afterDestroy':_0x9c35('0x5')};function emitEvent(_0x2d26bc){return function(_0x4add6d,_0x3a9320,_0x5f601e){FaxAccountEvents['emit'](_0x2d26bc+':'+_0x4add6d['id'],_0x4add6d);FaxAccountEvents['emit'](_0x2d26bc,_0x4add6d);_0x5f601e(null);};}for(var e in events){if(events[_0x9c35('0x6')](e)){var event=events[e];FaxAccount[_0x9c35('0x7')](e,emitEvent(event));}}module['exports']=FaxAccountEvents;
\ No newline at end of file
index caa4c40..e775904 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb974=['path','rimraf','./faxAccount.attributes','exports','define','fax_accounts','lodash','util','../../config/logger','moment','bluebird','request-promise'];(function(_0x30fca0,_0x54bb73){var _0x1c3e98=function(_0xcc741e){while(--_0xcc741e){_0x30fca0['push'](_0x30fca0['shift']());}};_0x1c3e98(++_0x54bb73);}(_0xb974,0x7e));var _0x4b97=function(_0x5b644e,_0x2e5e07){_0x5b644e=_0x5b644e-0x0;var _0x49c6bf=_0xb974[_0x5b644e];return _0x49c6bf;};'use strict';var _=require(_0x4b97('0x0'));var util=require(_0x4b97('0x1'));var logger=require(_0x4b97('0x2'))('api');var moment=require(_0x4b97('0x3'));var BPromise=require(_0x4b97('0x4'));var rp=require(_0x4b97('0x5'));var fs=require('fs');var path=require(_0x4b97('0x6'));var rimraf=require(_0x4b97('0x7'));var config=require('../../config/environment');var attributes=require(_0x4b97('0x8'));module[_0x4b97('0x9')]=function(_0x1559f3,_0x38520d){return _0x1559f3[_0x4b97('0xa')]('FaxAccount',attributes,{'tableName':_0x4b97('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xd0ea=['request-promise','rimraf','../../config/environment','./faxAccount.attributes','exports','FaxAccount','fax_accounts','lodash','util','../../config/logger','bluebird'];(function(_0x377217,_0x26b013){var _0x26258d=function(_0x1e1894){while(--_0x1e1894){_0x377217['push'](_0x377217['shift']());}};_0x26258d(++_0x26b013);}(_0xd0ea,0x172));var _0xad0e=function(_0x187684,_0x131dd4){_0x187684=_0x187684-0x0;var _0x393c49=_0xd0ea[_0x187684];return _0x393c49;};'use strict';var _=require(_0xad0e('0x0'));var util=require(_0xad0e('0x1'));var logger=require(_0xad0e('0x2'))('api');var moment=require('moment');var BPromise=require(_0xad0e('0x3'));var rp=require(_0xad0e('0x4'));var fs=require('fs');var path=require('path');var rimraf=require(_0xad0e('0x5'));var config=require(_0xad0e('0x6'));var attributes=require(_0xad0e('0x7'));module[_0xad0e('0x8')]=function(_0x18eafd,_0x1c0909){return _0x18eafd['define'](_0xad0e('0x9'),attributes,{'tableName':_0xad0e('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 653fc70..fb79ccc 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x132b=['CmContact','describe','ValidationError','no\x20available\x20attributes','difference','createdAt','updatedAt','CompanyId','ListId','isNil','from','Sequelize','from\x20is\x20mandatory','body\x20is\x20mandatory\x20and\x20not\x20empty','mapKey','mapKey\x20is\x20mandatory,\x20please\x20use\x20one\x20of\x20these:\x20','includes','find','account','CmList','List','Contacts','DESC','FaxApplication','Applications','applications','list','orderBy','priority','asc','length','contact','FaxInteraction','create','Contact\x20not\x20found','get','close','unmanaged','*,*,*,*','created','interaction','ContactId','AttachmentId','User','name','UserId','unshift','agent','waitForTheAssignedAgent','Start','startRouting','lodash','util','bluebird','randomstring','ioredis','../../mysqldb','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','redis','defaults','localhost','./faxAccount.socket','register','request','then','FaxAccount,\x20%s,\x20%s','request\x20sent','debug','stringify','error','code','message','info','result','catch','FaxAccount','findAll','options','raw','attributes','map','include','model','GetFaxAccount','NotifyFaxAccount','body','fax'];(function(_0x4c0e31,_0xa79bf2){var _0x41707d=function(_0x5020d1){while(--_0x5020d1){_0x4c0e31['push'](_0x4c0e31['shift']());}};_0x41707d(++_0xa79bf2);}(_0x132b,0xeb));var _0xb132=function(_0x18ea0b,_0x5855a0){_0x18ea0b=_0x18ea0b-0x0;var _0x172b5e=_0x132b[_0x18ea0b];return _0x172b5e;};'use strict';var _=require(_0xb132('0x0'));var util=require(_0xb132('0x1'));var moment=require('moment');var BPromise=require(_0xb132('0x2'));var rs=require(_0xb132('0x3'));var fs=require('fs');var Redis=require(_0xb132('0x4'));var db=require(_0xb132('0x5'))['db'];var utils=require('../../config/utils');var logger=require(_0xb132('0x6'))(_0xb132('0x7'));var config=require(_0xb132('0x8'));var jayson=require(_0xb132('0x9'));var client=jayson[_0xb132('0xa')][_0xb132('0xb')]({'port':0x232c});config[_0xb132('0xc')]=_[_0xb132('0xd')](config[_0xb132('0xc')],{'host':_0xb132('0xe'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0xb132('0xc')]));require(_0xb132('0xf'))[_0xb132('0x10')](socket);function respondWithRpcPromise(_0x1bde9b,_0x2cf6cd,_0xc59a2b){return new BPromise(function(_0x5394bd,_0x2f0b00){return client[_0xb132('0x11')](_0x1bde9b,_0xc59a2b)[_0xb132('0x12')](function(_0x1545ad){logger['info'](_0xb132('0x13'),_0x2cf6cd,_0xb132('0x14'));logger[_0xb132('0x15')]('FaxAccount,\x20%s,\x20%s,\x20%s',_0x2cf6cd,_0xb132('0x14'),JSON[_0xb132('0x16')](_0x1545ad));if(_0x1545ad['error']){if(_0x1545ad[_0xb132('0x17')][_0xb132('0x18')]===0x1f4){logger[_0xb132('0x17')](_0xb132('0x13'),_0x2cf6cd,_0x1545ad[_0xb132('0x17')][_0xb132('0x19')]);return _0x2f0b00(_0x1545ad[_0xb132('0x17')][_0xb132('0x19')]);}logger[_0xb132('0x17')](_0xb132('0x13'),_0x2cf6cd,_0x1545ad[_0xb132('0x17')]['message']);return _0x5394bd(_0x1545ad[_0xb132('0x17')][_0xb132('0x19')]);}else{logger[_0xb132('0x1a')]('FaxAccount,\x20%s,\x20%s',_0x2cf6cd,'request\x20sent');_0x5394bd(_0x1545ad[_0xb132('0x1b')][_0xb132('0x19')]);}})[_0xb132('0x1c')](function(_0x1749b3){logger[_0xb132('0x17')](_0xb132('0x13'),_0x2cf6cd,_0x1749b3);_0x2f0b00(_0x1749b3);});});}exports['GetFaxAccount']=function(_0x4fc344){var _0x10f503=this;return new Promise(function(_0x12d756,_0x321486){return db[_0xb132('0x1d')][_0xb132('0x1e')]({'raw':_0x4fc344['options']?_0x4fc344[_0xb132('0x1f')][_0xb132('0x20')]===undefined?!![]:![]:!![],'where':_0x4fc344[_0xb132('0x1f')]?_0x4fc344[_0xb132('0x1f')]['where']||null:null,'attributes':_0x4fc344[_0xb132('0x1f')]?_0x4fc344[_0xb132('0x1f')][_0xb132('0x21')]||null:null,'limit':_0x4fc344[_0xb132('0x1f')]?_0x4fc344['options']['limit']||null:null,'include':_0x4fc344[_0xb132('0x1f')]?_0x4fc344[_0xb132('0x1f')]['include']?_[_0xb132('0x22')](_0x4fc344[_0xb132('0x1f')][_0xb132('0x23')],function(_0x3d8517){return{'model':db[_0x3d8517[_0xb132('0x24')]],'as':_0x3d8517['as'],'attributes':_0x3d8517['attributes'],'include':_0x3d8517[_0xb132('0x23')]?_[_0xb132('0x22')](_0x3d8517[_0xb132('0x23')],function(_0xe281a3){return{'model':db[_0xe281a3[_0xb132('0x24')]],'as':_0xe281a3['as'],'attributes':_0xe281a3[_0xb132('0x21')],'include':_0xe281a3['include']?_[_0xb132('0x22')](_0xe281a3[_0xb132('0x23')],function(_0x32d19d){return{'model':db[_0x32d19d[_0xb132('0x24')]],'as':_0x32d19d['as'],'attributes':_0x32d19d[_0xb132('0x21')]};}):[]};}):[]};}):[]:[]})[_0xb132('0x12')](function(_0x4dc680){logger[_0xb132('0x1a')](_0xb132('0x25'),_0x4fc344);logger[_0xb132('0x15')]('GetFaxAccount',_0x4fc344,JSON[_0xb132('0x16')](_0x4dc680));_0x12d756(_0x4dc680);})[_0xb132('0x1c')](function(_0x451b5e){logger[_0xb132('0x17')](_0xb132('0x25'),_0x451b5e[_0xb132('0x19')],_0x4fc344);_0x321486(_0x10f503['error'](0x1f4,_0x451b5e[_0xb132('0x19')]));});});};exports[_0xb132('0x26')]=function(_0x17ebe4,_0x32893b,_0x25355){var _0x2da33f=this;return new Promise(function(_0x19bdf5,_0x41b4ff){var _0xdb914={'body':_0x17ebe4[_0xb132('0x27')],'channel':_0xb132('0x28')};var _0x45945f=[];var _0x228921=[];var _0x3c185e={};return db[_0xb132('0x29')][_0xb132('0x2a')]()['then'](function(_0x57c7bb){if(!_0x57c7bb){throw new db['Sequelize'][(_0xb132('0x2b'))](_0xb132('0x2c'));}_0x45945f=_[_0xb132('0x2d')](_['keys'](_0x57c7bb),[_0xb132('0x2e'),_0xb132('0x2f')]);_0x228921=_[_0xb132('0x2d')](_['keys'](_0x57c7bb),[_0xb132('0x2e'),_0xb132('0x2f'),_0xb132('0x30'),_0xb132('0x31')]);if(_0x17ebe4[_0xb132('0x27')]['id']){delete _0x17ebe4['body']['id'];}if(_[_0xb132('0x32')](_0x17ebe4['body'][_0xb132('0x33')])){throw new db[(_0xb132('0x34'))]['ValidationError'](_0xb132('0x35'));}if(_[_0xb132('0x32')](_0x17ebe4[_0xb132('0x27')][_0xb132('0x27')])||_0x17ebe4[_0xb132('0x27')][_0xb132('0x27')]===''){throw new db[(_0xb132('0x34'))][(_0xb132('0x2b'))](_0xb132('0x36'));}if(_[_0xb132('0x32')](_0x17ebe4['body'][_0xb132('0x37')])){throw new db[(_0xb132('0x34'))][(_0xb132('0x2b'))](_0xb132('0x38')+_0x228921);}if(!_[_0xb132('0x39')](_0x228921,_0x17ebe4[_0xb132('0x27')][_0xb132('0x37')])){throw new db[(_0xb132('0x34'))][(_0xb132('0x2b'))]('mapKey\x20invalid,\x20please\x20use\x20one\x20of\x20these:\x20'+_0x228921);}_0x3c185e[_0x17ebe4[_0xb132('0x27')][_0xb132('0x37')]]=_0x17ebe4[_0xb132('0x27')][_0xb132('0x33')];})[_0xb132('0x12')](function(){return db[_0xb132('0x1d')][_0xb132('0x3a')]({'where':{'id':_0x17ebe4[_0xb132('0x3b')]['id']},'include':[{'model':db[_0xb132('0x3c')],'as':_0xb132('0x3d'),'include':[{'model':db['CmContact'],'as':_0xb132('0x3e'),'where':_0x3c185e,'limit':0x1,'order':[[_0xb132('0x2f'),_0xb132('0x3f')]]}]},{'model':db[_0xb132('0x40')],'as':_0xb132('0x41')}]});})[_0xb132('0x12')](function(_0xd2ea74){if(_0xd2ea74&&_0xd2ea74[_0xb132('0x3d')]){var _0x241a19=_0xd2ea74['get']({'plain':!![]});_0xdb914[_0xb132('0x3b')]=_0x241a19;_0xdb914[_0xb132('0x42')]=_0x241a19[_0xb132('0x41')];_0xdb914[_0xb132('0x43')]=_0x241a19[_0xb132('0x3d')];_0xdb914['applications']=_[_0xb132('0x44')](_0xdb914[_0xb132('0x42')],[_0xb132('0x45')],[_0xb132('0x46')]);if(_0xdb914[_0xb132('0x3b')][_0xb132('0x41')]){delete _0xdb914[_0xb132('0x3b')]['Applications'];}if(_0xdb914[_0xb132('0x3b')][_0xb132('0x3d')]&&_0xdb914[_0xb132('0x3b')][_0xb132('0x3d')][_0xb132('0x3e')][_0xb132('0x47')]){return _0xdb914[_0xb132('0x3b')][_0xb132('0x3d')][_0xb132('0x3e')][0x0];}var _0x5dd0b6=_[_0xb132('0xd')](_0x17ebe4[_0xb132('0x27')],{'firstName':_0x17ebe4['body'][_0xb132('0x33')],'ListId':_0x241a19[_0xb132('0x31')]});_0x5dd0b6[_0x17ebe4['body'][_0xb132('0x37')]]=_0x17ebe4[_0xb132('0x27')][_0xb132('0x33')];return db[_0xb132('0x29')]['create'](_0x5dd0b6,{'fields':_0x45945f,'raw':!![]});}})[_0xb132('0x12')](function(_0x243ff9){_0xdb914[_0xb132('0x48')]=_0x243ff9;if(_0x243ff9){var _0xa6fc3d={'ContactId':_0x243ff9['id'],'FaxAccountId':_0x17ebe4[_0xb132('0x3b')]['id'],'fax':_0x243ff9['fax']};return db[_0xb132('0x49')][_0xb132('0x3a')]({'where':{'ContactId':_0x243ff9['id'],'closed':![],'FaxAccountId':_0x17ebe4[_0xb132('0x3b')]['id']}})[_0xb132('0x12')](function(_0x22c43f){if(_0x22c43f){return[_0x22c43f,![]];}return db[_0xb132('0x49')][_0xb132('0x4a')](_0xa6fc3d)[_0xb132('0x12')](function(_0x332679){return[_0x332679,!![]];});});}else{throw new Error(_0xb132('0x4b'));}})['spread'](function(_0x159382,_0xb0684a){var _0x4bc8f2=_0x159382[_0xb132('0x4c')]({'plain':!![]});if(_0xb0684a){if(_0xdb914[_0xb132('0x3b')]['autoclose']){_0xdb914[_0xb132('0x42')]['push']({'id':0x0,'priority':_0xdb914[_0xb132('0x42')][_0xb132('0x47')]+0x1,'app':_0xb132('0x4d'),'appdata':_0xb132('0x4e'),'interval':_0xb132('0x4f')});}_0x4bc8f2['created']=!![];}else{_0x4bc8f2[_0xb132('0x50')]=![];}_0xdb914[_0xb132('0x51')]=_0x4bc8f2;return db['FaxMessage'][_0xb132('0x4a')]({'body':_0x17ebe4[_0xb132('0x27')]['body'],'FaxAccountId':_0x17ebe4['account']['id'],'FaxInteractionId':_0x159382['id'],'direction':'in','ContactId':_0x159382[_0xb132('0x52')],'AttachmentId':_0x17ebe4[_0xb132('0x27')][_0xb132('0x53')]});})[_0xb132('0x12')](function(_0x318c7b){_0xdb914[_0xb132('0x19')]=_0x318c7b;if(_0xdb914['interaction']['UserId']){return db[_0xb132('0x54')][_0xb132('0x3a')]({'attributes':['id',_0xb132('0x55')],'where':{'id':_0xdb914[_0xb132('0x51')][_0xb132('0x56')]}})[_0xb132('0x12')](function(_0x445dc7){if(_0x445dc7){_0xdb914[_0xb132('0x42')][_0xb132('0x57')]({'id':0x0,'priority':0x0,'app':_0xb132('0x58'),'appdata':_0x445dc7['name']+','+(_0xdb914[_0xb132('0x3b')][_0xb132('0x59')]||0xa),'interval':'*,*,*,*'});}return respondWithRpcPromise(_0xb132('0x5a'),_0xb132('0x5b'),_0xdb914);});}return respondWithRpcPromise(_0xb132('0x5a'),_0xb132('0x5b'),_0xdb914);})[_0xb132('0x12')](function(_0x36a3be){_0x19bdf5(_0x36a3be);})['catch'](function(_0x10efa9){_0x41b4ff(_0x2da33f['error'](0x1f4,_0x10efa9[_0xb132('0x19')]));});});};
\ No newline at end of file
+var _0x0212=['socket.io-emitter','register','then','info','FaxAccount,\x20%s,\x20%s','request\x20sent','debug','FaxAccount,\x20%s,\x20%s,\x20%s','error','code','message','result','catch','FaxAccount','findAll','options','raw','where','limit','include','map','model','attributes','GetFaxAccount','stringify','NotifyFaxAccount','fax','CmContact','describe','keys','createdAt','updatedAt','difference','CompanyId','ListId','body','isNil','from','Sequelize','from\x20is\x20mandatory','ValidationError','body\x20is\x20mandatory\x20and\x20not\x20empty','mapKey\x20is\x20mandatory,\x20please\x20use\x20one\x20of\x20these:\x20','includes','mapKey','find','account','CmList','Contacts','DESC','FaxApplication','Applications','List','get','applications','list','orderBy','priority','asc','length','contact','FaxInteraction','create','Contact\x20not\x20found','spread','autoclose','close','unmanaged','*,*,*,*','interaction','AttachmentId','User','name','unshift','agent','waitForTheAssignedAgent','Start','startRouting','lodash','util','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','client','http','redis','defaults'];(function(_0x1da289,_0x417651){var _0x41c889=function(_0x2cea8c){while(--_0x2cea8c){_0x1da289['push'](_0x1da289['shift']());}};_0x41c889(++_0x417651);}(_0x0212,0x106));var _0x2021=function(_0xaf29da,_0x117f5a){_0xaf29da=_0xaf29da-0x0;var _0x295c51=_0x0212[_0xaf29da];return _0x295c51;};'use strict';var _=require(_0x2021('0x0'));var util=require(_0x2021('0x1'));var moment=require('moment');var BPromise=require(_0x2021('0x2'));var rs=require(_0x2021('0x3'));var fs=require('fs');var Redis=require(_0x2021('0x4'));var db=require(_0x2021('0x5'))['db'];var utils=require(_0x2021('0x6'));var logger=require(_0x2021('0x7'))(_0x2021('0x8'));var config=require(_0x2021('0x9'));var jayson=require('jayson/promise');var client=jayson[_0x2021('0xa')][_0x2021('0xb')]({'port':0x232c});config[_0x2021('0xc')]=_[_0x2021('0xd')](config[_0x2021('0xc')],{'host':'localhost','port':0x18eb});var socket=require(_0x2021('0xe'))(new Redis(config[_0x2021('0xc')]));require('./faxAccount.socket')[_0x2021('0xf')](socket);function respondWithRpcPromise(_0xda743,_0x18aeee,_0x3a1660){return new BPromise(function(_0x1b3485,_0x2ed737){return client['request'](_0xda743,_0x3a1660)[_0x2021('0x10')](function(_0x34d77a){logger[_0x2021('0x11')](_0x2021('0x12'),_0x18aeee,_0x2021('0x13'));logger[_0x2021('0x14')](_0x2021('0x15'),_0x18aeee,_0x2021('0x13'),JSON['stringify'](_0x34d77a));if(_0x34d77a[_0x2021('0x16')]){if(_0x34d77a['error'][_0x2021('0x17')]===0x1f4){logger[_0x2021('0x16')](_0x2021('0x12'),_0x18aeee,_0x34d77a[_0x2021('0x16')]['message']);return _0x2ed737(_0x34d77a[_0x2021('0x16')][_0x2021('0x18')]);}logger[_0x2021('0x16')](_0x2021('0x12'),_0x18aeee,_0x34d77a[_0x2021('0x16')][_0x2021('0x18')]);return _0x1b3485(_0x34d77a[_0x2021('0x16')][_0x2021('0x18')]);}else{logger[_0x2021('0x11')](_0x2021('0x12'),_0x18aeee,_0x2021('0x13'));_0x1b3485(_0x34d77a[_0x2021('0x19')][_0x2021('0x18')]);}})[_0x2021('0x1a')](function(_0x158bd7){logger[_0x2021('0x16')](_0x2021('0x12'),_0x18aeee,_0x158bd7);_0x2ed737(_0x158bd7);});});}exports['GetFaxAccount']=function(_0x20abf1){var _0x32884c=this;return new Promise(function(_0x4a3d78,_0x1af14c){return db[_0x2021('0x1b')][_0x2021('0x1c')]({'raw':_0x20abf1['options']?_0x20abf1[_0x2021('0x1d')][_0x2021('0x1e')]===undefined?!![]:![]:!![],'where':_0x20abf1[_0x2021('0x1d')]?_0x20abf1['options'][_0x2021('0x1f')]||null:null,'attributes':_0x20abf1[_0x2021('0x1d')]?_0x20abf1[_0x2021('0x1d')]['attributes']||null:null,'limit':_0x20abf1['options']?_0x20abf1[_0x2021('0x1d')][_0x2021('0x20')]||null:null,'include':_0x20abf1[_0x2021('0x1d')]?_0x20abf1[_0x2021('0x1d')][_0x2021('0x21')]?_[_0x2021('0x22')](_0x20abf1[_0x2021('0x1d')]['include'],function(_0x5623fc){return{'model':db[_0x5623fc[_0x2021('0x23')]],'as':_0x5623fc['as'],'attributes':_0x5623fc[_0x2021('0x24')],'include':_0x5623fc[_0x2021('0x21')]?_[_0x2021('0x22')](_0x5623fc[_0x2021('0x21')],function(_0x6b1add){return{'model':db[_0x6b1add[_0x2021('0x23')]],'as':_0x6b1add['as'],'attributes':_0x6b1add[_0x2021('0x24')],'include':_0x6b1add[_0x2021('0x21')]?_[_0x2021('0x22')](_0x6b1add[_0x2021('0x21')],function(_0x1d88f7){return{'model':db[_0x1d88f7[_0x2021('0x23')]],'as':_0x1d88f7['as'],'attributes':_0x1d88f7[_0x2021('0x24')]};}):[]};}):[]};}):[]:[]})['then'](function(_0x2cd2d){logger[_0x2021('0x11')](_0x2021('0x25'),_0x20abf1);logger['debug']('GetFaxAccount',_0x20abf1,JSON[_0x2021('0x26')](_0x2cd2d));_0x4a3d78(_0x2cd2d);})['catch'](function(_0x4ef688){logger[_0x2021('0x16')](_0x2021('0x25'),_0x4ef688[_0x2021('0x18')],_0x20abf1);_0x1af14c(_0x32884c[_0x2021('0x16')](0x1f4,_0x4ef688[_0x2021('0x18')]));});});};exports[_0x2021('0x27')]=function(_0x319000,_0x29af30,_0xcb72e7){var _0x490cb8=this;return new Promise(function(_0x4cb000,_0x58589b){var _0x508588={'body':_0x319000['body'],'channel':_0x2021('0x28')};var _0x42495a=[];var _0x49877f=[];var _0x1f3223={};return db[_0x2021('0x29')][_0x2021('0x2a')]()[_0x2021('0x10')](function(_0x26e355){if(!_0x26e355){throw new db['Sequelize']['ValidationError']('no\x20available\x20attributes');}_0x42495a=_['difference'](_[_0x2021('0x2b')](_0x26e355),[_0x2021('0x2c'),_0x2021('0x2d')]);_0x49877f=_[_0x2021('0x2e')](_['keys'](_0x26e355),['createdAt',_0x2021('0x2d'),_0x2021('0x2f'),_0x2021('0x30')]);if(_0x319000[_0x2021('0x31')]['id']){delete _0x319000[_0x2021('0x31')]['id'];}if(_[_0x2021('0x32')](_0x319000[_0x2021('0x31')][_0x2021('0x33')])){throw new db[(_0x2021('0x34'))]['ValidationError'](_0x2021('0x35'));}if(_[_0x2021('0x32')](_0x319000['body'][_0x2021('0x31')])||_0x319000[_0x2021('0x31')][_0x2021('0x31')]===''){throw new db[(_0x2021('0x34'))][(_0x2021('0x36'))](_0x2021('0x37'));}if(_['isNil'](_0x319000[_0x2021('0x31')]['mapKey'])){throw new db[(_0x2021('0x34'))]['ValidationError'](_0x2021('0x38')+_0x49877f);}if(!_[_0x2021('0x39')](_0x49877f,_0x319000[_0x2021('0x31')]['mapKey'])){throw new db[(_0x2021('0x34'))][(_0x2021('0x36'))]('mapKey\x20invalid,\x20please\x20use\x20one\x20of\x20these:\x20'+_0x49877f);}_0x1f3223[_0x319000[_0x2021('0x31')][_0x2021('0x3a')]]=_0x319000[_0x2021('0x31')][_0x2021('0x33')];})[_0x2021('0x10')](function(){return db[_0x2021('0x1b')][_0x2021('0x3b')]({'where':{'id':_0x319000[_0x2021('0x3c')]['id']},'include':[{'model':db[_0x2021('0x3d')],'as':'List','include':[{'model':db[_0x2021('0x29')],'as':_0x2021('0x3e'),'where':_0x1f3223,'limit':0x1,'order':[[_0x2021('0x2d'),_0x2021('0x3f')]]}]},{'model':db[_0x2021('0x40')],'as':_0x2021('0x41')}]});})['then'](function(_0x596836){if(_0x596836&&_0x596836[_0x2021('0x42')]){var _0x2343e2=_0x596836[_0x2021('0x43')]({'plain':!![]});_0x508588[_0x2021('0x3c')]=_0x2343e2;_0x508588[_0x2021('0x44')]=_0x2343e2['Applications'];_0x508588[_0x2021('0x45')]=_0x2343e2[_0x2021('0x42')];_0x508588[_0x2021('0x44')]=_[_0x2021('0x46')](_0x508588['applications'],[_0x2021('0x47')],[_0x2021('0x48')]);if(_0x508588[_0x2021('0x3c')][_0x2021('0x41')]){delete _0x508588[_0x2021('0x3c')][_0x2021('0x41')];}if(_0x508588[_0x2021('0x3c')][_0x2021('0x42')]&&_0x508588[_0x2021('0x3c')][_0x2021('0x42')][_0x2021('0x3e')][_0x2021('0x49')]){return _0x508588[_0x2021('0x3c')][_0x2021('0x42')][_0x2021('0x3e')][0x0];}var _0x170057=_['defaults'](_0x319000[_0x2021('0x31')],{'firstName':_0x319000[_0x2021('0x31')][_0x2021('0x33')],'ListId':_0x2343e2[_0x2021('0x30')]});_0x170057[_0x319000[_0x2021('0x31')][_0x2021('0x3a')]]=_0x319000['body'][_0x2021('0x33')];return db[_0x2021('0x29')]['create'](_0x170057,{'fields':_0x42495a,'raw':!![]});}})[_0x2021('0x10')](function(_0x36a207){_0x508588[_0x2021('0x4a')]=_0x36a207;if(_0x36a207){var _0x3f1c7a={'ContactId':_0x36a207['id'],'FaxAccountId':_0x319000[_0x2021('0x3c')]['id'],'fax':_0x36a207[_0x2021('0x28')]};return db[_0x2021('0x4b')][_0x2021('0x3b')]({'where':{'ContactId':_0x36a207['id'],'closed':![],'FaxAccountId':_0x319000['account']['id']}})[_0x2021('0x10')](function(_0x355570){if(_0x355570){return[_0x355570,![]];}return db[_0x2021('0x4b')][_0x2021('0x4c')](_0x3f1c7a)[_0x2021('0x10')](function(_0x233246){return[_0x233246,!![]];});});}else{throw new Error(_0x2021('0x4d'));}})[_0x2021('0x4e')](function(_0x7e64d3,_0x30b2e1){var _0x2a899a=_0x7e64d3[_0x2021('0x43')]({'plain':!![]});if(_0x30b2e1){if(_0x508588[_0x2021('0x3c')][_0x2021('0x4f')]){_0x508588['applications']['push']({'id':0x0,'priority':_0x508588[_0x2021('0x44')]['length']+0x1,'app':_0x2021('0x50'),'appdata':_0x2021('0x51'),'interval':_0x2021('0x52')});}_0x2a899a['created']=!![];}else{_0x2a899a['created']=![];}_0x508588[_0x2021('0x53')]=_0x2a899a;return db['FaxMessage'][_0x2021('0x4c')]({'body':_0x319000[_0x2021('0x31')][_0x2021('0x31')],'FaxAccountId':_0x319000['account']['id'],'FaxInteractionId':_0x7e64d3['id'],'direction':'in','ContactId':_0x7e64d3['ContactId'],'AttachmentId':_0x319000['body'][_0x2021('0x54')]});})[_0x2021('0x10')](function(_0x399b3c){_0x508588[_0x2021('0x18')]=_0x399b3c;if(_0x508588[_0x2021('0x53')]['UserId']){return db[_0x2021('0x55')][_0x2021('0x3b')]({'attributes':['id',_0x2021('0x56')],'where':{'id':_0x508588['interaction']['UserId']}})['then'](function(_0x34d267){if(_0x34d267){_0x508588[_0x2021('0x44')][_0x2021('0x57')]({'id':0x0,'priority':0x0,'app':_0x2021('0x58'),'appdata':_0x34d267[_0x2021('0x56')]+','+(_0x508588[_0x2021('0x3c')][_0x2021('0x59')]||0xa),'interval':'*,*,*,*'});}return respondWithRpcPromise(_0x2021('0x5a'),_0x2021('0x5b'),_0x508588);});}return respondWithRpcPromise(_0x2021('0x5a'),_0x2021('0x5b'),_0x508588);})[_0x2021('0x10')](function(_0x56f9d8){_0x4cb000(_0x56f9d8);})[_0x2021('0x1a')](function(_0x165d2b){_0x58589b(_0x490cb8[_0x2021('0x16')](0x1f4,_0x165d2b[_0x2021('0x18')]));});});};
\ No newline at end of file
index addbbfd..7a2bb6e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5376=['removeListener','register','./faxAccount.events','save','remove','update','emit'];(function(_0x1c43e4,_0x5d2d0d){var _0x57dda4=function(_0x4a9185){while(--_0x4a9185){_0x1c43e4['push'](_0x1c43e4['shift']());}};_0x57dda4(++_0x5d2d0d);}(_0x5376,0xb8));var _0x6537=function(_0x4920f2,_0xa4bfbf){_0x4920f2=_0x4920f2-0x0;var _0x1f27cf=_0x5376[_0x4920f2];return _0x1f27cf;};'use strict';var FaxAccountEvents=require(_0x6537('0x0'));var events=[_0x6537('0x1'),_0x6537('0x2'),_0x6537('0x3')];function createListener(_0x8ce594,_0x5be65f){return function(_0x2d346c){_0x5be65f[_0x6537('0x4')](_0x8ce594,_0x2d346c);};}function removeListener(_0x12a97b,_0x5ed378){return function(){FaxAccountEvents[_0x6537('0x5')](_0x12a97b,_0x5ed378);};}exports[_0x6537('0x6')]=function(_0x156bd5){for(var _0x578d44=0x0,_0x4d1ff4=events['length'];_0x578d44<_0x4d1ff4;_0x578d44++){var _0x1b4786=events[_0x578d44];var _0x26a0ec=createListener('faxAccount:'+_0x1b4786,_0x156bd5);FaxAccountEvents['on'](_0x1b4786,_0x26a0ec);}};
\ No newline at end of file
+var _0xd6c8=['faxAccount:','./faxAccount.events','remove','update','emit','removeListener','register','length'];(function(_0x417320,_0x4839d3){var _0xe7a084=function(_0x8fbf4d){while(--_0x8fbf4d){_0x417320['push'](_0x417320['shift']());}};_0xe7a084(++_0x4839d3);}(_0xd6c8,0xb9));var _0x8d6c=function(_0x33fcbb,_0x291d0f){_0x33fcbb=_0x33fcbb-0x0;var _0x2efe40=_0xd6c8[_0x33fcbb];return _0x2efe40;};'use strict';var FaxAccountEvents=require(_0x8d6c('0x0'));var events=['save',_0x8d6c('0x1'),_0x8d6c('0x2')];function createListener(_0x553f76,_0x84923b){return function(_0x550cb6){_0x84923b[_0x8d6c('0x3')](_0x553f76,_0x550cb6);};}function removeListener(_0x26be58,_0x1fbbdc){return function(){FaxAccountEvents[_0x8d6c('0x4')](_0x26be58,_0x1fbbdc);};}exports[_0x8d6c('0x5')]=function(_0x370954){for(var _0x5a65f1=0x0,_0x2dd0dd=events[_0x8d6c('0x6')];_0x5a65f1<_0x2dd0dd;_0x5a65f1++){var _0xce069d=events[_0x5a65f1];var _0x421bc7=createListener(_0x8d6c('0x7')+_0xce069d,_0x370954);FaxAccountEvents['on'](_0xce069d,_0x421bc7);}};
\ No newline at end of file
index 9741b66..866225b 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(_0x56c399,_0x546107){var _0x44d504=function(_0x237adf){while(--_0x237adf){_0x56c399['push'](_0x56c399['shift']());}};_0x44d504(++_0x546107);}(_0xa9e0,0x123));var _0x0a9e=function(_0x29b609,_0x19d388){_0x29b609=_0x29b609-0x0;var _0x54c952=_0xa9e0[_0x29b609];return _0x54c952;};'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(_0x1762fd,_0x3774d1){var _0x1a1329=function(_0x142d7f){while(--_0x142d7f){_0x1762fd['push'](_0x1762fd['shift']());}};_0x1a1329(++_0x3774d1);}(_0xa9e0,0x123));var _0x0a9e=function(_0x1facfa,_0x1acf7d){_0x1facfa=_0x1facfa-0x0;var _0x9ec701=_0xa9e0[_0x1facfa];return _0x9ec701;};'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 9633757..0835641 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb85b=['TEXT','*,*,*,*','INTEGER','STRING','noop'];(function(_0x452543,_0x527a15){var _0x3f807a=function(_0x12be05){while(--_0x12be05){_0x452543['push'](_0x452543['shift']());}};_0x3f807a(++_0x527a15);}(_0xb85b,0x188));var _0xbb85=function(_0x2070da,_0x45e586){_0x2070da=_0x2070da-0x0;var _0x4f9fe1=_0xb85b[_0x2070da];return _0x4f9fe1;};'use strict';var Sequelize=require('sequelize');module['exports']={'priority':{'type':Sequelize[_0xbb85('0x0')],'allowNull':![]},'app':{'type':Sequelize[_0xbb85('0x1')],'allowNull':![],'defaultValue':_0xbb85('0x2')},'appdata':{'type':Sequelize[_0xbb85('0x3')]()},'description':{'type':Sequelize[_0xbb85('0x1')]},'interval':{'type':Sequelize['STRING'],'defaultValue':_0xbb85('0x4')}};
\ No newline at end of file
+var _0x4b11=['sequelize','exports','STRING','noop','TEXT','*,*,*,*'];(function(_0x4b2863,_0x494899){var _0x567d67=function(_0x751f03){while(--_0x751f03){_0x4b2863['push'](_0x4b2863['shift']());}};_0x567d67(++_0x494899);}(_0x4b11,0xae));var _0x14b1=function(_0x180352,_0x219a77){_0x180352=_0x180352-0x0;var _0x1ce147=_0x4b11[_0x180352];return _0x1ce147;};'use strict';var Sequelize=require(_0x14b1('0x0'));module[_0x14b1('0x1')]={'priority':{'type':Sequelize['INTEGER'],'allowNull':![]},'app':{'type':Sequelize[_0x14b1('0x2')],'allowNull':![],'defaultValue':_0x14b1('0x3')},'appdata':{'type':Sequelize[_0x14b1('0x4')]()},'description':{'type':Sequelize[_0x14b1('0x2')]},'interval':{'type':Sequelize['STRING'],'defaultValue':_0x14b1('0x5')}};
\ No newline at end of file
index 6d52f70..73d5f4a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4d75=['rows','show','params','intersection','catch','create','body','update','find','eml-format','zip-dir','request-promise','moment','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/license/hardware','../../config/logger','../../config/utils','../../config/environment','../../config/license/util','status','end','offset','undefined','limit','count','set','Content-Range','apply','reject','save','destroy','then','sendStatus','stack','name','send','index','map','FaxApplication','rawAttributes','fieldName','type','key','keys','filters','query','attributes','model','fields','length','hasOwnProperty','nolimit','order','sort','where','filter','VIRTUAL','merge','options','includeAll','include','findAll'];(function(_0x141ad6,_0xcb24c0){var _0x17475b=function(_0x472412){while(--_0x472412){_0x141ad6['push'](_0x141ad6['shift']());}};_0x17475b(++_0xcb24c0);}(_0x4d75,0xa3));var _0x54d7=function(_0x1bd819,_0x2f2b97){_0x1bd819=_0x1bd819-0x0;var _0xd1cda5=_0x4d75[_0x1bd819];return _0xd1cda5;};'use strict';var emlformat=require(_0x54d7('0x0'));var rimraf=require('rimraf');var zipdir=require(_0x54d7('0x1'));var jsonpatch=require('fast-json-patch');var rp=require(_0x54d7('0x2'));var moment=require(_0x54d7('0x3'));var BPromise=require('bluebird');var Mustache=require(_0x54d7('0x4'));var util=require(_0x54d7('0x5'));var path=require(_0x54d7('0x6'));var sox=require('sox');var csv=require(_0x54d7('0x7'));var ejs=require(_0x54d7('0x8'));var fs=require('fs');var fs_extra=require(_0x54d7('0x9'));var _=require(_0x54d7('0xa'));var squel=require(_0x54d7('0xb'));var crypto=require(_0x54d7('0xc'));var jsforce=require('jsforce');var deskjs=require(_0x54d7('0xd'));var toCsv=require(_0x54d7('0x7'));var querystring=require(_0x54d7('0xe'));var Papa=require(_0x54d7('0xf'));var Redis=require(_0x54d7('0x10'));var authService=require(_0x54d7('0x11'));var qs=require(_0x54d7('0x12'));var as=require(_0x54d7('0x13'));var hardwareService=require(_0x54d7('0x14'));var logger=require(_0x54d7('0x15'))('api');var utils=require(_0x54d7('0x16'));var config=require(_0x54d7('0x17'));var licenseUtil=require(_0x54d7('0x18'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x3f701a,_0x36bcdb){_0x36bcdb=_0x36bcdb||0xcc;return function(_0x4eb5ad){if(_0x4eb5ad){return _0x3f701a['sendStatus'](_0x36bcdb);}return _0x3f701a[_0x54d7('0x19')](_0x36bcdb)[_0x54d7('0x1a')]();};}function respondWithResult(_0x5e0652,_0x47d868){_0x47d868=_0x47d868||0xc8;return function(_0x273249){if(_0x273249){return _0x5e0652[_0x54d7('0x19')](_0x47d868)['json'](_0x273249);}};}function respondWithFilteredResult(_0x16eadf,_0x4c3288){return function(_0x3481c4){if(_0x3481c4){var _0x11d912=typeof _0x4c3288[_0x54d7('0x1b')]===_0x54d7('0x1c')&&typeof _0x4c3288[_0x54d7('0x1d')]===_0x54d7('0x1c');var _0x1343c8=_0x3481c4[_0x54d7('0x1e')];var _0x45eb43=_0x11d912?0x0:_0x4c3288['offset'];var _0x4fd752=_0x11d912?_0x3481c4[_0x54d7('0x1e')]:_0x4c3288[_0x54d7('0x1b')]+_0x4c3288[_0x54d7('0x1d')];var _0x56a6be;if(_0x4fd752>=_0x1343c8){_0x4fd752=_0x1343c8;_0x56a6be=0xc8;}else{_0x56a6be=0xce;}_0x16eadf[_0x54d7('0x19')](_0x56a6be);return _0x16eadf[_0x54d7('0x1f')](_0x54d7('0x20'),_0x45eb43+'-'+_0x4fd752+'/'+_0x1343c8)['json'](_0x3481c4);}return null;};}function patchUpdates(_0x172928){return function(_0x40db06){try{jsonpatch[_0x54d7('0x21')](_0x40db06,_0x172928,!![]);}catch(_0x4e609a){return BPromise[_0x54d7('0x22')](_0x4e609a);}return _0x40db06[_0x54d7('0x23')]();};}function saveUpdates(_0x2692df,_0x547a5d){return function(_0x380f51){if(_0x380f51){return _0x380f51['update'](_0x2692df)['then'](function(_0x3b51e5){return _0x3b51e5;});}return null;};}function removeEntity(_0x5778ed,_0xee561b){return function(_0x58d4df){if(_0x58d4df){return _0x58d4df[_0x54d7('0x24')]()[_0x54d7('0x25')](function(){_0x5778ed[_0x54d7('0x19')](0xcc)[_0x54d7('0x1a')]();});}};}function handleEntityNotFound(_0x3a7a57,_0x16a6d6){return function(_0x364838){if(!_0x364838){_0x3a7a57[_0x54d7('0x26')](0x194);}return _0x364838;};}function handleError(_0x1d098e,_0x1d065c){_0x1d065c=_0x1d065c||0x1f4;return function(_0x3eae94){logger['error'](_0x3eae94[_0x54d7('0x27')]);if(_0x3eae94[_0x54d7('0x28')]){delete _0x3eae94[_0x54d7('0x28')];}_0x1d098e[_0x54d7('0x19')](_0x1d065c)[_0x54d7('0x29')](_0x3eae94);};}exports[_0x54d7('0x2a')]=function(_0x74c1f4,_0x4407f3){var _0x2dd5a2={},_0x48572d={},_0x3b208c={'count':0x0,'rows':[]};var _0x5c7218=_[_0x54d7('0x2b')](db[_0x54d7('0x2c')][_0x54d7('0x2d')],function(_0x2ae1e0){return{'name':_0x2ae1e0[_0x54d7('0x2e')],'type':_0x2ae1e0[_0x54d7('0x2f')][_0x54d7('0x30')]};});_0x48572d['model']=_[_0x54d7('0x2b')](_0x5c7218,_0x54d7('0x28'));_0x48572d['query']=_[_0x54d7('0x31')](_0x74c1f4['query']);_0x48572d[_0x54d7('0x32')]=_['intersection'](_0x48572d['model'],_0x48572d[_0x54d7('0x33')]);_0x2dd5a2[_0x54d7('0x34')]=_['intersection'](_0x48572d[_0x54d7('0x35')],qs[_0x54d7('0x36')](_0x74c1f4[_0x54d7('0x33')]['fields']));_0x2dd5a2['attributes']=_0x2dd5a2[_0x54d7('0x34')][_0x54d7('0x37')]?_0x2dd5a2[_0x54d7('0x34')]:_0x48572d[_0x54d7('0x35')];if(!_0x74c1f4[_0x54d7('0x33')][_0x54d7('0x38')](_0x54d7('0x39'))){_0x2dd5a2[_0x54d7('0x1d')]=qs[_0x54d7('0x1d')](_0x74c1f4[_0x54d7('0x33')][_0x54d7('0x1d')]);_0x2dd5a2['offset']=qs[_0x54d7('0x1b')](_0x74c1f4[_0x54d7('0x33')]['offset']);}_0x2dd5a2[_0x54d7('0x3a')]=qs[_0x54d7('0x3b')](_0x74c1f4[_0x54d7('0x33')][_0x54d7('0x3b')]);_0x2dd5a2[_0x54d7('0x3c')]=qs[_0x54d7('0x32')](_['pick'](_0x74c1f4['query'],_0x48572d[_0x54d7('0x32')]),_0x5c7218);if(_0x74c1f4[_0x54d7('0x33')][_0x54d7('0x3d')]){_0x2dd5a2[_0x54d7('0x3c')]=_['merge'](_0x2dd5a2[_0x54d7('0x3c')],{'$or':_['map'](_0x5c7218,function(_0x48e4d7){if(_0x48e4d7[_0x54d7('0x2f')]!==_0x54d7('0x3e')){var _0x3ea73f={};_0x3ea73f[_0x48e4d7['name']]={'$like':'%'+_0x74c1f4['query']['filter']+'%'};return _0x3ea73f;}})});}_0x2dd5a2=_[_0x54d7('0x3f')]({},_0x2dd5a2,_0x74c1f4[_0x54d7('0x40')]);var _0x1c53a8={'where':_0x2dd5a2[_0x54d7('0x3c')]};return db[_0x54d7('0x2c')][_0x54d7('0x1e')](_0x1c53a8)[_0x54d7('0x25')](function(_0xca1b01){_0x3b208c[_0x54d7('0x1e')]=_0xca1b01;if(_0x74c1f4[_0x54d7('0x33')][_0x54d7('0x41')]){_0x2dd5a2[_0x54d7('0x42')]=[{'all':!![]}];}return db['FaxApplication'][_0x54d7('0x43')](_0x2dd5a2);})[_0x54d7('0x25')](function(_0x358ff8){_0x3b208c[_0x54d7('0x44')]=_0x358ff8;return _0x3b208c;})[_0x54d7('0x25')](respondWithFilteredResult(_0x4407f3,_0x2dd5a2))['catch'](handleError(_0x4407f3,null));};exports[_0x54d7('0x45')]=function(_0x3a4457,_0xbea548){var _0x3a9206={'raw':!![],'where':{'id':_0x3a4457[_0x54d7('0x46')]['id']}},_0x32548a={};_0x32548a[_0x54d7('0x35')]=_['keys'](db[_0x54d7('0x2c')]['rawAttributes']);_0x32548a[_0x54d7('0x33')]=_[_0x54d7('0x31')](_0x3a4457[_0x54d7('0x33')]);_0x32548a[_0x54d7('0x32')]=_[_0x54d7('0x47')](_0x32548a['model'],_0x32548a['query']);_0x3a9206[_0x54d7('0x34')]=_['intersection'](_0x32548a[_0x54d7('0x35')],qs[_0x54d7('0x36')](_0x3a4457['query'][_0x54d7('0x36')]));_0x3a9206[_0x54d7('0x34')]=_0x3a9206[_0x54d7('0x34')][_0x54d7('0x37')]?_0x3a9206[_0x54d7('0x34')]:_0x32548a[_0x54d7('0x35')];if(_0x3a4457[_0x54d7('0x33')][_0x54d7('0x41')]){_0x3a9206[_0x54d7('0x42')]=[{'all':!![]}];}_0x3a9206=_[_0x54d7('0x3f')]({},_0x3a9206,_0x3a4457[_0x54d7('0x40')]);return db[_0x54d7('0x2c')]['find'](_0x3a9206)['then'](handleEntityNotFound(_0xbea548,null))['then'](respondWithResult(_0xbea548,null))[_0x54d7('0x48')](handleError(_0xbea548,null));};exports['create']=function(_0x410013,_0x2d2951){return db[_0x54d7('0x2c')][_0x54d7('0x49')](_0x410013[_0x54d7('0x4a')],{})[_0x54d7('0x25')](respondWithResult(_0x2d2951,0xc9))['catch'](handleError(_0x2d2951,null));};exports[_0x54d7('0x4b')]=function(_0x386262,_0x1a149f){if(_0x386262[_0x54d7('0x4a')]['id']){delete _0x386262['body']['id'];}return db[_0x54d7('0x2c')][_0x54d7('0x4c')]({'where':{'id':_0x386262[_0x54d7('0x46')]['id']}})['then'](handleEntityNotFound(_0x1a149f,null))[_0x54d7('0x25')](saveUpdates(_0x386262[_0x54d7('0x4a')],null))[_0x54d7('0x25')](respondWithResult(_0x1a149f,null))[_0x54d7('0x48')](handleError(_0x1a149f,null));};exports[_0x54d7('0x24')]=function(_0x30e32,_0x134b8c){return db[_0x54d7('0x2c')]['find']({'where':{'id':_0x30e32[_0x54d7('0x46')]['id']}})[_0x54d7('0x25')](handleEntityNotFound(_0x134b8c,null))[_0x54d7('0x25')](removeEntity(_0x134b8c,null))[_0x54d7('0x48')](handleError(_0x134b8c,null));};
\ No newline at end of file
+var _0x64e4=['where','pick','filter','VIRTUAL','merge','options','rows','catch','show','params','length','includeAll','include','create','body','find','eml-format','zip-dir','request-promise','moment','bluebird','mustache','util','to-csv','ejs','fs-extra','squel','crypto','jsforce','papaparse','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/utils','../../config/environment','../../config/license/util','sendStatus','status','end','json','limit','undefined','count','Content-Range','reject','save','update','then','destroy','stack','name','send','index','map','FaxApplication','rawAttributes','fieldName','type','key','model','query','keys','filters','intersection','attributes','fields','hasOwnProperty','nolimit','offset','sort'];(function(_0x5dcff5,_0x2b41ce){var _0x883626=function(_0x5ea59f){while(--_0x5ea59f){_0x5dcff5['push'](_0x5dcff5['shift']());}};_0x883626(++_0x2b41ce);}(_0x64e4,0x173));var _0x464e=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x64e4[_0x3dd15e];return _0x231fd0;};'use strict';var emlformat=require(_0x464e('0x0'));var rimraf=require('rimraf');var zipdir=require(_0x464e('0x1'));var jsonpatch=require('fast-json-patch');var rp=require(_0x464e('0x2'));var moment=require(_0x464e('0x3'));var BPromise=require(_0x464e('0x4'));var Mustache=require(_0x464e('0x5'));var util=require(_0x464e('0x6'));var path=require('path');var sox=require('sox');var csv=require(_0x464e('0x7'));var ejs=require(_0x464e('0x8'));var fs=require('fs');var fs_extra=require(_0x464e('0x9'));var _=require('lodash');var squel=require(_0x464e('0xa'));var crypto=require(_0x464e('0xb'));var jsforce=require(_0x464e('0xc'));var deskjs=require('desk.js');var toCsv=require('to-csv');var querystring=require('querystring');var Papa=require(_0x464e('0xd'));var Redis=require(_0x464e('0xe'));var authService=require('../../components/auth/service');var qs=require(_0x464e('0xf'));var as=require(_0x464e('0x10'));var hardwareService=require(_0x464e('0x11'));var logger=require('../../config/logger')('api');var utils=require(_0x464e('0x12'));var config=require(_0x464e('0x13'));var licenseUtil=require(_0x464e('0x14'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x5565e4,_0x5c8d35){_0x5c8d35=_0x5c8d35||0xcc;return function(_0x465c4e){if(_0x465c4e){return _0x5565e4[_0x464e('0x15')](_0x5c8d35);}return _0x5565e4[_0x464e('0x16')](_0x5c8d35)[_0x464e('0x17')]();};}function respondWithResult(_0x1290f9,_0x489789){_0x489789=_0x489789||0xc8;return function(_0x2c2976){if(_0x2c2976){return _0x1290f9[_0x464e('0x16')](_0x489789)[_0x464e('0x18')](_0x2c2976);}};}function respondWithFilteredResult(_0x26371e,_0x217562){return function(_0x2d6ed5){if(_0x2d6ed5){var _0x1c0e3f=typeof _0x217562['offset']==='undefined'&&typeof _0x217562[_0x464e('0x19')]===_0x464e('0x1a');var _0xdcb7b7=_0x2d6ed5[_0x464e('0x1b')];var _0x2ad306=_0x1c0e3f?0x0:_0x217562['offset'];var _0x1b77a2=_0x1c0e3f?_0x2d6ed5[_0x464e('0x1b')]:_0x217562['offset']+_0x217562[_0x464e('0x19')];var _0x3abf88;if(_0x1b77a2>=_0xdcb7b7){_0x1b77a2=_0xdcb7b7;_0x3abf88=0xc8;}else{_0x3abf88=0xce;}_0x26371e[_0x464e('0x16')](_0x3abf88);return _0x26371e['set'](_0x464e('0x1c'),_0x2ad306+'-'+_0x1b77a2+'/'+_0xdcb7b7)[_0x464e('0x18')](_0x2d6ed5);}return null;};}function patchUpdates(_0x47a0f6){return function(_0xcbcdc4){try{jsonpatch['apply'](_0xcbcdc4,_0x47a0f6,!![]);}catch(_0xf2c10f){return BPromise[_0x464e('0x1d')](_0xf2c10f);}return _0xcbcdc4[_0x464e('0x1e')]();};}function saveUpdates(_0x43a428,_0x29ad2e){return function(_0x581b84){if(_0x581b84){return _0x581b84[_0x464e('0x1f')](_0x43a428)[_0x464e('0x20')](function(_0x4d220f){return _0x4d220f;});}return null;};}function removeEntity(_0xe0bdd,_0x3548e9){return function(_0x15d82d){if(_0x15d82d){return _0x15d82d[_0x464e('0x21')]()[_0x464e('0x20')](function(){_0xe0bdd[_0x464e('0x16')](0xcc)[_0x464e('0x17')]();});}};}function handleEntityNotFound(_0x543306,_0x3509ed){return function(_0xa9b145){if(!_0xa9b145){_0x543306[_0x464e('0x15')](0x194);}return _0xa9b145;};}function handleError(_0x23a062,_0x486e69){_0x486e69=_0x486e69||0x1f4;return function(_0x25add0){logger['error'](_0x25add0[_0x464e('0x22')]);if(_0x25add0[_0x464e('0x23')]){delete _0x25add0[_0x464e('0x23')];}_0x23a062['status'](_0x486e69)[_0x464e('0x24')](_0x25add0);};}exports[_0x464e('0x25')]=function(_0x3be87d,_0x58492c){var _0x20b5f6={},_0x42d7fe={},_0x340925={'count':0x0,'rows':[]};var _0xfa011c=_[_0x464e('0x26')](db[_0x464e('0x27')][_0x464e('0x28')],function(_0x47b68e){return{'name':_0x47b68e[_0x464e('0x29')],'type':_0x47b68e[_0x464e('0x2a')][_0x464e('0x2b')]};});_0x42d7fe[_0x464e('0x2c')]=_[_0x464e('0x26')](_0xfa011c,'name');_0x42d7fe[_0x464e('0x2d')]=_[_0x464e('0x2e')](_0x3be87d['query']);_0x42d7fe[_0x464e('0x2f')]=_[_0x464e('0x30')](_0x42d7fe[_0x464e('0x2c')],_0x42d7fe[_0x464e('0x2d')]);_0x20b5f6[_0x464e('0x31')]=_[_0x464e('0x30')](_0x42d7fe['model'],qs[_0x464e('0x32')](_0x3be87d[_0x464e('0x2d')][_0x464e('0x32')]));_0x20b5f6[_0x464e('0x31')]=_0x20b5f6['attributes']['length']?_0x20b5f6[_0x464e('0x31')]:_0x42d7fe[_0x464e('0x2c')];if(!_0x3be87d[_0x464e('0x2d')][_0x464e('0x33')](_0x464e('0x34'))){_0x20b5f6['limit']=qs[_0x464e('0x19')](_0x3be87d[_0x464e('0x2d')][_0x464e('0x19')]);_0x20b5f6[_0x464e('0x35')]=qs['offset'](_0x3be87d[_0x464e('0x2d')][_0x464e('0x35')]);}_0x20b5f6['order']=qs[_0x464e('0x36')](_0x3be87d[_0x464e('0x2d')][_0x464e('0x36')]);_0x20b5f6[_0x464e('0x37')]=qs['filters'](_[_0x464e('0x38')](_0x3be87d[_0x464e('0x2d')],_0x42d7fe['filters']),_0xfa011c);if(_0x3be87d['query'][_0x464e('0x39')]){_0x20b5f6['where']=_['merge'](_0x20b5f6['where'],{'$or':_[_0x464e('0x26')](_0xfa011c,function(_0x1a8916){if(_0x1a8916['type']!==_0x464e('0x3a')){var _0x40906b={};_0x40906b[_0x1a8916[_0x464e('0x23')]]={'$like':'%'+_0x3be87d['query'][_0x464e('0x39')]+'%'};return _0x40906b;}})});}_0x20b5f6=_[_0x464e('0x3b')]({},_0x20b5f6,_0x3be87d[_0x464e('0x3c')]);var _0x319875={'where':_0x20b5f6['where']};return db[_0x464e('0x27')][_0x464e('0x1b')](_0x319875)['then'](function(_0x206080){_0x340925['count']=_0x206080;if(_0x3be87d[_0x464e('0x2d')]['includeAll']){_0x20b5f6['include']=[{'all':!![]}];}return db[_0x464e('0x27')]['findAll'](_0x20b5f6);})[_0x464e('0x20')](function(_0x5d68a6){_0x340925[_0x464e('0x3d')]=_0x5d68a6;return _0x340925;})[_0x464e('0x20')](respondWithFilteredResult(_0x58492c,_0x20b5f6))[_0x464e('0x3e')](handleError(_0x58492c,null));};exports[_0x464e('0x3f')]=function(_0x158303,_0xf38e0){var _0x4c0c0d={'raw':!![],'where':{'id':_0x158303[_0x464e('0x40')]['id']}},_0x4d7326={};_0x4d7326[_0x464e('0x2c')]=_['keys'](db['FaxApplication'][_0x464e('0x28')]);_0x4d7326['query']=_[_0x464e('0x2e')](_0x158303['query']);_0x4d7326[_0x464e('0x2f')]=_['intersection'](_0x4d7326['model'],_0x4d7326[_0x464e('0x2d')]);_0x4c0c0d[_0x464e('0x31')]=_[_0x464e('0x30')](_0x4d7326[_0x464e('0x2c')],qs[_0x464e('0x32')](_0x158303[_0x464e('0x2d')][_0x464e('0x32')]));_0x4c0c0d[_0x464e('0x31')]=_0x4c0c0d[_0x464e('0x31')][_0x464e('0x41')]?_0x4c0c0d['attributes']:_0x4d7326[_0x464e('0x2c')];if(_0x158303[_0x464e('0x2d')][_0x464e('0x42')]){_0x4c0c0d[_0x464e('0x43')]=[{'all':!![]}];}_0x4c0c0d=_['merge']({},_0x4c0c0d,_0x158303[_0x464e('0x3c')]);return db[_0x464e('0x27')]['find'](_0x4c0c0d)['then'](handleEntityNotFound(_0xf38e0,null))[_0x464e('0x20')](respondWithResult(_0xf38e0,null))[_0x464e('0x3e')](handleError(_0xf38e0,null));};exports[_0x464e('0x44')]=function(_0x255444,_0x420ffe){return db[_0x464e('0x27')][_0x464e('0x44')](_0x255444[_0x464e('0x45')],{})[_0x464e('0x20')](respondWithResult(_0x420ffe,0xc9))['catch'](handleError(_0x420ffe,null));};exports[_0x464e('0x1f')]=function(_0x20687e,_0x1b87ae){if(_0x20687e[_0x464e('0x45')]['id']){delete _0x20687e['body']['id'];}return db[_0x464e('0x27')][_0x464e('0x46')]({'where':{'id':_0x20687e[_0x464e('0x40')]['id']}})['then'](handleEntityNotFound(_0x1b87ae,null))['then'](saveUpdates(_0x20687e[_0x464e('0x45')],null))[_0x464e('0x20')](respondWithResult(_0x1b87ae,null))[_0x464e('0x3e')](handleError(_0x1b87ae,null));};exports[_0x464e('0x21')]=function(_0x1db647,_0x1150a1){return db[_0x464e('0x27')][_0x464e('0x46')]({'where':{'id':_0x1db647[_0x464e('0x40')]['id']}})[_0x464e('0x20')](handleEntityNotFound(_0x1150a1,null))['then'](removeEntity(_0x1150a1,null))[_0x464e('0x3e')](handleError(_0x1150a1,null));};
\ No newline at end of file
index 4886fc2..f04d522 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x505f=['api','request-promise','path','define','FaxApplication','utf8mb4','utf8mb4_unicode_ci'];(function(_0xc6f792,_0x558bbd){var _0x5e2dfc=function(_0x5ddf34){while(--_0x5ddf34){_0xc6f792['push'](_0xc6f792['shift']());}};_0x5e2dfc(++_0x558bbd);}(_0x505f,0x18f));var _0xf505=function(_0x7c6e0a,_0x469db6){_0x7c6e0a=_0x7c6e0a-0x0;var _0x122189=_0x505f[_0x7c6e0a];return _0x122189;};'use strict';var _=require('lodash');var util=require('util');var logger=require('../../config/logger')(_0xf505('0x0'));var moment=require('moment');var BPromise=require('bluebird');var rp=require(_0xf505('0x1'));var fs=require('fs');var path=require(_0xf505('0x2'));var rimraf=require('rimraf');var config=require('../../config/environment');var attributes=require('./faxApplication.attributes');module['exports']=function(_0x5987f5,_0x214ca8){return _0x5987f5[_0xf505('0x3')](_0xf505('0x4'),attributes,{'tableName':'fax_applications','paranoid':![],'indexes':[],'timestamps':!![],'charset':_0xf505('0x5'),'collate':_0xf505('0x6')});};
\ No newline at end of file
+var _0x45a7=['moment','bluebird','request-promise','path','../../config/environment','exports','define','fax_applications','lodash','util','../../config/logger','api'];(function(_0x44b4c3,_0x3458f6){var _0xe9d45f=function(_0x2ef741){while(--_0x2ef741){_0x44b4c3['push'](_0x44b4c3['shift']());}};_0xe9d45f(++_0x3458f6);}(_0x45a7,0x140));var _0x745a=function(_0x224f65,_0x4750bf){_0x224f65=_0x224f65-0x0;var _0x3f921c=_0x45a7[_0x224f65];return _0x3f921c;};'use strict';var _=require(_0x745a('0x0'));var util=require(_0x745a('0x1'));var logger=require(_0x745a('0x2'))(_0x745a('0x3'));var moment=require(_0x745a('0x4'));var BPromise=require(_0x745a('0x5'));var rp=require(_0x745a('0x6'));var fs=require('fs');var path=require(_0x745a('0x7'));var rimraf=require('rimraf');var config=require(_0x745a('0x8'));var attributes=require('./faxApplication.attributes');module[_0x745a('0x9')]=function(_0x2e3ba2,_0x50fbb2){return _0x2e3ba2[_0x745a('0xa')]('FaxApplication',attributes,{'tableName':_0x745a('0xb'),'paranoid':![],'indexes':[],'timestamps':!![],'charset':'utf8mb4','collate':'utf8mb4_unicode_ci'});};
\ No newline at end of file
index 2e10682..adb134e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9c09=['update','body','options','where','debug','lodash','util','moment','bluebird','randomstring','../../mysqldb','../../config/utils','rpc','jayson/promise','client','request','then','info','FaxApplication,\x20%s,\x20%s','request\x20sent','FaxApplication,\x20%s,\x20%s,\x20%s','stringify','code','error','message','result','catch','UpdateFaxApplication','FaxApplication'];(function(_0x28e424,_0x4d6508){var _0x25ab59=function(_0x3ff7b4){while(--_0x3ff7b4){_0x28e424['push'](_0x28e424['shift']());}};_0x25ab59(++_0x4d6508);}(_0x9c09,0x1d5));var _0x99c0=function(_0x93a54b,_0x329631){_0x93a54b=_0x93a54b-0x0;var _0x5da7e8=_0x9c09[_0x93a54b];return _0x5da7e8;};'use strict';var _=require(_0x99c0('0x0'));var util=require(_0x99c0('0x1'));var moment=require(_0x99c0('0x2'));var BPromise=require(_0x99c0('0x3'));var rs=require(_0x99c0('0x4'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x99c0('0x5'))['db'];var utils=require(_0x99c0('0x6'));var logger=require('../../config/logger')(_0x99c0('0x7'));var config=require('../../config/environment');var jayson=require(_0x99c0('0x8'));var client=jayson[_0x99c0('0x9')]['http']({'port':0x232a});function respondWithRpcPromise(_0x5bb915,_0x3d5e37,_0x410f1b){return new BPromise(function(_0xd316e8,_0x254285){return client[_0x99c0('0xa')](_0x5bb915,_0x410f1b)[_0x99c0('0xb')](function(_0x3f04b6){logger[_0x99c0('0xc')](_0x99c0('0xd'),_0x3d5e37,_0x99c0('0xe'));logger['debug'](_0x99c0('0xf'),_0x3d5e37,'request\x20sent',JSON[_0x99c0('0x10')](_0x3f04b6));if(_0x3f04b6['error']){if(_0x3f04b6['error'][_0x99c0('0x11')]===0x1f4){logger[_0x99c0('0x12')](_0x99c0('0xd'),_0x3d5e37,_0x3f04b6[_0x99c0('0x12')][_0x99c0('0x13')]);return _0x254285(_0x3f04b6[_0x99c0('0x12')]['message']);}logger[_0x99c0('0x12')](_0x99c0('0xd'),_0x3d5e37,_0x3f04b6[_0x99c0('0x12')][_0x99c0('0x13')]);return _0xd316e8(_0x3f04b6['error']['message']);}else{logger[_0x99c0('0xc')](_0x99c0('0xd'),_0x3d5e37,_0x99c0('0xe'));_0xd316e8(_0x3f04b6[_0x99c0('0x14')][_0x99c0('0x13')]);}})[_0x99c0('0x15')](function(_0x3da696){logger[_0x99c0('0x12')](_0x99c0('0xd'),_0x3d5e37,_0x3da696);_0x254285(_0x3da696);});});}exports[_0x99c0('0x16')]=function(_0x51cad5){var _0x13cab7=this;return new Promise(function(_0x33117a,_0x3aa8bf){return db[_0x99c0('0x17')][_0x99c0('0x18')](_0x51cad5[_0x99c0('0x19')],{'raw':_0x51cad5[_0x99c0('0x1a')]?_0x51cad5[_0x99c0('0x1a')]['raw']===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x51cad5['options']?_0x51cad5[_0x99c0('0x1a')][_0x99c0('0x1b')]||null:null,'attributes':_0x51cad5[_0x99c0('0x1a')]?_0x51cad5['options']['attributes']||null:null,'limit':_0x51cad5['options']?_0x51cad5['options']['limit']||null:null})['then'](function(_0x57f5b9){logger[_0x99c0('0xc')](_0x99c0('0x16'),_0x51cad5);logger[_0x99c0('0x1c')](_0x99c0('0x16'),_0x51cad5,JSON[_0x99c0('0x10')](_0x57f5b9));_0x33117a(_0x57f5b9);})['catch'](function(_0x3ee32b){logger[_0x99c0('0x12')]('UpdateFaxApplication',_0x3ee32b[_0x99c0('0x13')],_0x51cad5);_0x3aa8bf(_0x13cab7[_0x99c0('0x12')](0x1f4,_0x3ee32b[_0x99c0('0x13')]));});});};
\ No newline at end of file
+var _0x4dd2=['attributes','limit','info','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','rpc','../../config/environment','jayson/promise','http','request','then','FaxApplication,\x20%s,\x20%s','request\x20sent','debug','FaxApplication,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','UpdateFaxApplication','update','body','options','raw','where'];(function(_0x2d9988,_0x486907){var _0x45f73e=function(_0x51d480){while(--_0x51d480){_0x2d9988['push'](_0x2d9988['shift']());}};_0x45f73e(++_0x486907);}(_0x4dd2,0x12c));var _0x24dd=function(_0x3fd275,_0xf0cd7){_0x3fd275=_0x3fd275-0x0;var _0xe4f14f=_0x4dd2[_0x3fd275];return _0xe4f14f;};'use strict';var _=require(_0x24dd('0x0'));var util=require(_0x24dd('0x1'));var moment=require(_0x24dd('0x2'));var BPromise=require(_0x24dd('0x3'));var rs=require(_0x24dd('0x4'));var fs=require('fs');var Redis=require(_0x24dd('0x5'));var db=require(_0x24dd('0x6'))['db'];var utils=require(_0x24dd('0x7'));var logger=require('../../config/logger')(_0x24dd('0x8'));var config=require(_0x24dd('0x9'));var jayson=require(_0x24dd('0xa'));var client=jayson['client'][_0x24dd('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x40e85d,_0x307277,_0x4a32f6){return new BPromise(function(_0x404017,_0x22e2a6){return client[_0x24dd('0xc')](_0x40e85d,_0x4a32f6)[_0x24dd('0xd')](function(_0xa034a9){logger['info'](_0x24dd('0xe'),_0x307277,_0x24dd('0xf'));logger[_0x24dd('0x10')](_0x24dd('0x11'),_0x307277,'request\x20sent',JSON[_0x24dd('0x12')](_0xa034a9));if(_0xa034a9['error']){if(_0xa034a9[_0x24dd('0x13')][_0x24dd('0x14')]===0x1f4){logger[_0x24dd('0x13')](_0x24dd('0xe'),_0x307277,_0xa034a9[_0x24dd('0x13')][_0x24dd('0x15')]);return _0x22e2a6(_0xa034a9[_0x24dd('0x13')][_0x24dd('0x15')]);}logger[_0x24dd('0x13')](_0x24dd('0xe'),_0x307277,_0xa034a9['error'][_0x24dd('0x15')]);return _0x404017(_0xa034a9[_0x24dd('0x13')][_0x24dd('0x15')]);}else{logger['info'](_0x24dd('0xe'),_0x307277,'request\x20sent');_0x404017(_0xa034a9[_0x24dd('0x16')]['message']);}})[_0x24dd('0x17')](function(_0x10484e){logger['error'](_0x24dd('0xe'),_0x307277,_0x10484e);_0x22e2a6(_0x10484e);});});}exports[_0x24dd('0x18')]=function(_0x4db4fd){var _0x5d225e=this;return new Promise(function(_0x5576a6,_0x1b5cb4){return db['FaxApplication'][_0x24dd('0x19')](_0x4db4fd[_0x24dd('0x1a')],{'raw':_0x4db4fd[_0x24dd('0x1b')]?_0x4db4fd[_0x24dd('0x1b')][_0x24dd('0x1c')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x4db4fd[_0x24dd('0x1b')]?_0x4db4fd[_0x24dd('0x1b')][_0x24dd('0x1d')]||null:null,'attributes':_0x4db4fd[_0x24dd('0x1b')]?_0x4db4fd[_0x24dd('0x1b')][_0x24dd('0x1e')]||null:null,'limit':_0x4db4fd['options']?_0x4db4fd[_0x24dd('0x1b')][_0x24dd('0x1f')]||null:null})[_0x24dd('0xd')](function(_0x26466c){logger[_0x24dd('0x20')](_0x24dd('0x18'),_0x4db4fd);logger[_0x24dd('0x10')](_0x24dd('0x18'),_0x4db4fd,JSON[_0x24dd('0x12')](_0x26466c));_0x5576a6(_0x26466c);})['catch'](function(_0x5f0318){logger[_0x24dd('0x13')](_0x24dd('0x18'),_0x5f0318[_0x24dd('0x15')],_0x4db4fd);_0x1b5cb4(_0x5d225e[_0x24dd('0x13')](0x1f4,_0x5f0318['message']));});});};
\ No newline at end of file
index 68a2ea9..d64018b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xed3c=['index','show','put','/:id','update','delete','destroy','exports','multer','util','path','connect-timeout','Router','fs-extra','../../components/auth/service','./faxApplication.controller','get','isAuthenticated'];(function(_0xbc90e0,_0x259db1){var _0xeea554=function(_0x489160){while(--_0x489160){_0xbc90e0['push'](_0xbc90e0['shift']());}};_0xeea554(++_0x259db1);}(_0xed3c,0x1a6));var _0xced3=function(_0x493bcc,_0x3e9066){_0x493bcc=_0x493bcc-0x0;var _0x51ddd9=_0xed3c[_0x493bcc];return _0x51ddd9;};'use strict';var multer=require(_0xced3('0x0'));var util=require(_0xced3('0x1'));var path=require(_0xced3('0x2'));var timeout=require(_0xced3('0x3'));var express=require('express');var router=express[_0xced3('0x4')]();var fs_extra=require(_0xced3('0x5'));var auth=require(_0xced3('0x6'));var interaction=require('../../components/interaction/service');var config=require('../../config/environment');var controller=require(_0xced3('0x7'));router[_0xced3('0x8')]('/',auth[_0xced3('0x9')](),controller[_0xced3('0xa')]);router['get']('/:id',auth['isAuthenticated'](),controller[_0xced3('0xb')]);router['post']('/',auth['isAuthenticated'](),controller['create']);router[_0xced3('0xc')](_0xced3('0xd'),auth[_0xced3('0x9')](),controller[_0xced3('0xe')]);router[_0xced3('0xf')]('/:id',auth[_0xced3('0x9')](),controller[_0xced3('0x10')]);module[_0xced3('0x11')]=router;
\ No newline at end of file
+var _0x4cf8=['show','create','/:id','update','delete','destroy','multer','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./faxApplication.controller','get','isAuthenticated'];(function(_0xae1a83,_0x1980d4){var _0xdb9da8=function(_0x36fc99){while(--_0x36fc99){_0xae1a83['push'](_0xae1a83['shift']());}};_0xdb9da8(++_0x1980d4);}(_0x4cf8,0x1e1));var _0x84cf=function(_0x208505,_0x241a77){_0x208505=_0x208505-0x0;var _0x1a985f=_0x4cf8[_0x208505];return _0x1a985f;};'use strict';var multer=require(_0x84cf('0x0'));var util=require(_0x84cf('0x1'));var path=require(_0x84cf('0x2'));var timeout=require(_0x84cf('0x3'));var express=require(_0x84cf('0x4'));var router=express[_0x84cf('0x5')]();var fs_extra=require(_0x84cf('0x6'));var auth=require(_0x84cf('0x7'));var interaction=require(_0x84cf('0x8'));var config=require(_0x84cf('0x9'));var controller=require(_0x84cf('0xa'));router[_0x84cf('0xb')]('/',auth['isAuthenticated'](),controller['index']);router[_0x84cf('0xb')]('/:id',auth[_0x84cf('0xc')](),controller[_0x84cf('0xd')]);router['post']('/',auth[_0x84cf('0xc')](),controller[_0x84cf('0xe')]);router['put'](_0x84cf('0xf'),auth[_0x84cf('0xc')](),controller[_0x84cf('0x10')]);router[_0x84cf('0x11')]('/:id',auth[_0x84cf('0xc')](),controller[_0x84cf('0x12')]);module['exports']=router;
\ No newline at end of file
index b40cfab..74013e4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5c1e=['out','sequelize','BOOLEAN','DATE','STRING','ENUM'];(function(_0x3ff085,_0x27c92e){var _0x2b68c3=function(_0x37811e){while(--_0x37811e){_0x3ff085['push'](_0x3ff085['shift']());}};_0x2b68c3(++_0x27c92e);}(_0x5c1e,0x1b1));var _0xe5c1=function(_0x39e806,_0x5269d7){_0x39e806=_0x39e806-0x0;var _0x1eb7a2=_0x5c1e[_0x39e806];return _0x1eb7a2;};'use strict';var Sequelize=require(_0xe5c1('0x0'));module['exports']={'closed':{'type':Sequelize[_0xe5c1('0x1')],'defaultValue':![]},'closedAt':{'type':Sequelize[_0xe5c1('0x2')]},'disposition':{'type':Sequelize[_0xe5c1('0x3')]},'secondDisposition':{'type':Sequelize['STRING']},'thirdDisposition':{'type':Sequelize[_0xe5c1('0x3')]},'note':{'type':Sequelize[_0xe5c1('0x3')]},'read1stAt':{'type':Sequelize[_0xe5c1('0x2')]},'fax':{'type':Sequelize['STRING']},'firstMsgDirection':{'type':Sequelize[_0xe5c1('0x4')]('in',_0xe5c1('0x5')),'defaultValue':'in','allowNull':![]},'lastMsgAt':{'type':Sequelize[_0xe5c1('0x2')]},'lastMsgDirection':{'type':Sequelize['ENUM']('in',_0xe5c1('0x5')),'defaultValue':'in','allowNull':![]}};
\ No newline at end of file
+var _0xcc6a=['STRING','ENUM','out','sequelize','exports','BOOLEAN','DATE'];(function(_0x5d3ef5,_0x3e6af0){var _0x1d0abb=function(_0x3ea37f){while(--_0x3ea37f){_0x5d3ef5['push'](_0x5d3ef5['shift']());}};_0x1d0abb(++_0x3e6af0);}(_0xcc6a,0x81));var _0xacc6=function(_0x1692cf,_0x58dfaa){_0x1692cf=_0x1692cf-0x0;var _0x475e63=_0xcc6a[_0x1692cf];return _0x475e63;};'use strict';var Sequelize=require(_0xacc6('0x0'));module[_0xacc6('0x1')]={'closed':{'type':Sequelize[_0xacc6('0x2')],'defaultValue':![]},'closedAt':{'type':Sequelize[_0xacc6('0x3')]},'disposition':{'type':Sequelize[_0xacc6('0x4')]},'secondDisposition':{'type':Sequelize['STRING']},'thirdDisposition':{'type':Sequelize['STRING']},'note':{'type':Sequelize['STRING']},'read1stAt':{'type':Sequelize[_0xacc6('0x3')]},'fax':{'type':Sequelize[_0xacc6('0x4')]},'firstMsgDirection':{'type':Sequelize[_0xacc6('0x5')]('in',_0xacc6('0x6')),'defaultValue':'in','allowNull':![]},'lastMsgAt':{'type':Sequelize[_0xacc6('0x3')]},'lastMsgDirection':{'type':Sequelize[_0xacc6('0x5')]('in','out'),'defaultValue':'in','allowNull':![]}};
\ No newline at end of file
index da20b35..9ae2b82 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe760=['isArray','CONCAT(\x27,\x27,\x20`TagIds`,\x20\x27,\x27)\x20LIKE\x20?','filter','replace','isNumeric','i.id\x20LIKE\x20?','CONCAT(c.firstName,\x20\x27\x20\x27,\x20c.lastName)\x20LIKE\x20?','group','i.id','Sequelize','QueryTypes','SELECT','clone','SUM(me.read\x20=\x200\x20AND\x20me.direction\x20=\x20\x27in\x27)','unreadMessages','DESC','t.id\x20IN\x20?','resolve','i.FaxAccountId\x20IS\x20NOT\x20NULL','user','role','getFaxAccounts','i.FaxAccountId\x20IS\x20NULL','i.FaxAccountId\x20IN\x20?','FaxAccountId','sequelize','toString','count','keyBy','merge','FaxInteraction','Account.mandatoryDisposition','contactName','i.*','c.firstName','c.lastName','Contact.lastName','c.email','Contact.phone','c.mobile','Contact.mobile','Contact.fax','o.fullname','Owner.fullname','o.internal','GROUP_CONCAT(DISTINCT\x20t.id)','ui.FaxInteractionId\x20IN\x20?','push','all','rows','catch','show','params','include','options','create','describe','addMessage','FaxMessage','ids','findOne','hasOwnProperty','FaxInteractionId','format','YYYY-MM-DD\x20HH:mm:ss','includeAll','addTags','omit','spread','Tag','findAll','emit','faxInteractionTags:save','removeTags','download','join','root','server','files','tmp','transcript-%d-%s.zip','Attachment','Messages','mkdirSync','basename','existsSync','createWriteStream','log','unlinkSync','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/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','redis','defaults','localhost','./faxInteraction.socket','sendStatus','status','offset','limit','undefined','Content-Range','json','apply','reject','update','destroy','then','end','error','stack','name','send','Users','map','fullname','TagIds','Tags','split','index','rawAttributes','fieldName','type','key','query','filters','intersection','model','fields','attributes','length','nolimit','order','sort','where','pick','field','color','from','tools_tags','select','u.id','u.fullname','ui.FaxInteractionId','user_has_fax_interactions','left_join','users','u.id\x20=\x20ui.UserId','fax_interactions','cm_contacts','c.id\x20=\x20i.ContactId\x20AND\x20c.deletedAt\x20IS\x20NULL','fax_accounts','a.id\x20=\x20i.FaxAccountId','fax_messages','me.FaxInteractionId\x20=\x20i.id','fax_interaction_has_tags','it.FaxInteractionId\x20=\x20i.id','t.id\x20=\x20it.TagId','expr','sqlOperator','conditions','find','value','having','`\x20=\x200','`\x20>\x200','Contact','operator','$substring','getFullTextValue','c.firstName\x20LIKE\x20?\x20OR\x20c.lastName\x20LIKE\x20?\x20OR\x20c.email\x20LIKE\x20?','ContactId','buildExpression','start','forEach','union','CONCAT_WS(\x27\x20\x27,\x20o.name,\x20o.fullname)\x20LIKE\x20?','UserId','text','body','keys','compact','isEmpty','concat','createdAt','parse','$gte','$lte','i.createdAt\x20BETWEEN\x20?\x20AND\x20?','null','\x20IS\x20NULL','\x20=\x20?','read','`unreadMessages`\x20=\x200','`unreadMessages`\x20>\x200','tag'];(function(_0x433bad,_0x1aa55a){var _0x500bd7=function(_0xfe92e6){while(--_0xfe92e6){_0x433bad['push'](_0x433bad['shift']());}};_0x500bd7(++_0x1aa55a);}(_0xe760,0x136));var _0x0e76=function(_0x5c0521,_0x20de75){_0x5c0521=_0x5c0521-0x0;var _0x559e2f=_0xe760[_0x5c0521];return _0x559e2f;};'use strict';var emlformat=require(_0x0e76('0x0'));var rimraf=require(_0x0e76('0x1'));var zipdir=require(_0x0e76('0x2'));var jsonpatch=require(_0x0e76('0x3'));var rp=require(_0x0e76('0x4'));var moment=require(_0x0e76('0x5'));var BPromise=require(_0x0e76('0x6'));var Mustache=require(_0x0e76('0x7'));var util=require(_0x0e76('0x8'));var path=require(_0x0e76('0x9'));var sox=require(_0x0e76('0xa'));var csv=require(_0x0e76('0xb'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x0e76('0xc'));var _=require(_0x0e76('0xd'));var squel=require(_0x0e76('0xe'));var crypto=require(_0x0e76('0xf'));var jsforce=require(_0x0e76('0x10'));var deskjs=require(_0x0e76('0x11'));var toCsv=require(_0x0e76('0xb'));var querystring=require(_0x0e76('0x12'));var Papa=require(_0x0e76('0x13'));var Redis=require(_0x0e76('0x14'));var authService=require('../../components/auth/service');var qs=require(_0x0e76('0x15'));var as=require(_0x0e76('0x16'));var hardwareService=require('../../config/license/hardware');var logger=require(_0x0e76('0x17'))('api');var utils=require(_0x0e76('0x18'));var config=require(_0x0e76('0x19'));var licenseUtil=require(_0x0e76('0x1a'));var db=require(_0x0e76('0x1b'))['db'];config[_0x0e76('0x1c')]=_[_0x0e76('0x1d')](config[_0x0e76('0x1c')],{'host':_0x0e76('0x1e'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0x0e76('0x1c')]));require(_0x0e76('0x1f'))['register'](socket);function respondWithStatusCode(_0x51b18a,_0x52010){_0x52010=_0x52010||0xcc;return function(_0x2f9253){if(_0x2f9253){return _0x51b18a[_0x0e76('0x20')](_0x52010);}return _0x51b18a[_0x0e76('0x21')](_0x52010)['end']();};}function respondWithResult(_0x3de5e1,_0x390192){_0x390192=_0x390192||0xc8;return function(_0x13e166){if(_0x13e166){return _0x3de5e1['status'](_0x390192)['json'](_0x13e166);}};}function respondWithFilteredResult(_0x4139b2,_0x2b28c3){return function(_0x14018f){if(_0x14018f){var _0x104329=typeof _0x2b28c3[_0x0e76('0x22')]==='undefined'&&typeof _0x2b28c3[_0x0e76('0x23')]===_0x0e76('0x24');var _0x583b5e=_0x14018f['count'];var _0x1729de=_0x104329?0x0:_0x2b28c3[_0x0e76('0x22')];var _0x36a1da=_0x104329?_0x14018f['count']:_0x2b28c3[_0x0e76('0x22')]+_0x2b28c3[_0x0e76('0x23')];var _0x430456;if(_0x36a1da>=_0x583b5e){_0x36a1da=_0x583b5e;_0x430456=0xc8;}else{_0x430456=0xce;}_0x4139b2[_0x0e76('0x21')](_0x430456);return _0x4139b2['set'](_0x0e76('0x25'),_0x1729de+'-'+_0x36a1da+'/'+_0x583b5e)[_0x0e76('0x26')](_0x14018f);}return null;};}function patchUpdates(_0x53ee14){return function(_0x553f91){try{jsonpatch[_0x0e76('0x27')](_0x553f91,_0x53ee14,!![]);}catch(_0x2737a2){return BPromise[_0x0e76('0x28')](_0x2737a2);}return _0x553f91['save']();};}function saveUpdates(_0x4a5b77,_0x16412d){return function(_0x406e26){if(_0x406e26){return _0x406e26[_0x0e76('0x29')](_0x4a5b77)['then'](function(_0x2f21f2){return _0x2f21f2;});}return null;};}function removeEntity(_0x3c3712,_0x3b2d59){return function(_0x3ffb30){if(_0x3ffb30){return _0x3ffb30[_0x0e76('0x2a')]()[_0x0e76('0x2b')](function(){_0x3c3712[_0x0e76('0x21')](0xcc)[_0x0e76('0x2c')]();});}};}function handleEntityNotFound(_0x1fb0e,_0x27d095){return function(_0x418e72){if(!_0x418e72){_0x1fb0e[_0x0e76('0x20')](0x194);}return _0x418e72;};}function handleError(_0x299494,_0x383479){_0x383479=_0x383479||0x1f4;return function(_0x440e22){logger[_0x0e76('0x2d')](_0x440e22[_0x0e76('0x2e')]);if(_0x440e22[_0x0e76('0x2f')]){delete _0x440e22['name'];}_0x299494[_0x0e76('0x21')](_0x383479)[_0x0e76('0x30')](_0x440e22);};}function getInteractionUsers(_0x4b71b3,_0x261205){return new BPromise(function(_0x305290,_0x131260){try{if(_0x261205[_0x4b71b3['id']]){_0x4b71b3[_0x0e76('0x31')]=_[_0x0e76('0x32')](_0x261205[_0x4b71b3['id']],function(_0x2a24d0){return{'id':_0x2a24d0['id'],'fullname':_0x2a24d0[_0x0e76('0x33')]};});}}catch(_0x4f8953){_0x131260(_0x4f8953);}_0x305290(_0x4b71b3);});}function getInteractionTags(_0x10791e,_0x506f82){return new BPromise(function(_0x423c80,_0x41c03d){try{if(_0x10791e[_0x0e76('0x34')]){_0x10791e[_0x0e76('0x35')]=[];_0x10791e['TagIds'][_0x0e76('0x36')](',')['forEach'](function(_0x44c921){_0x10791e[_0x0e76('0x35')]['push'](_0x506f82[_0x44c921]);});}delete _0x10791e['TagIds'];}catch(_0x15ede5){_0x41c03d(_0x15ede5);}_0x423c80(_0x10791e);});}function updateFaxInteraction(_0x5d3b47,_0x14c353,_0xce6ed0){return new BPromise(function(_0x153712,_0x4d354f){return getInteractionUsers(_0x5d3b47,_0xce6ed0)['then'](function(_0x1d888c){return getInteractionTags(_0x1d888c,_0x14c353);})['then'](function(_0x373f36){_0x153712(_0x373f36);})['catch'](function(_0x560b4a){_0x4d354f(_0x560b4a);});});}exports[_0x0e76('0x37')]=function(_0x3f5414,_0x108ff7){var _0x420088={},_0x575a17={},_0x180a61={'count':0x0,'rows':[]};var _0x424122=_[_0x0e76('0x32')](db['FaxInteraction'][_0x0e76('0x38')],function(_0x12902f){return{'name':_0x12902f[_0x0e76('0x39')],'type':_0x12902f[_0x0e76('0x3a')][_0x0e76('0x3b')]};});_0x575a17['model']=_['map'](_0x424122,_0x0e76('0x2f'));_0x575a17[_0x0e76('0x3c')]=_['keys'](_0x3f5414[_0x0e76('0x3c')]);_0x575a17[_0x0e76('0x3d')]=_[_0x0e76('0x3e')](_0x575a17[_0x0e76('0x3f')],_0x575a17[_0x0e76('0x3c')]);_0x420088['attributes']=_[_0x0e76('0x3e')](_0x575a17[_0x0e76('0x3f')],qs[_0x0e76('0x40')](_0x3f5414['query'][_0x0e76('0x40')]));_0x420088[_0x0e76('0x41')]=_0x420088[_0x0e76('0x41')][_0x0e76('0x42')]?_0x420088[_0x0e76('0x41')]:_0x575a17[_0x0e76('0x3f')];if(!_0x3f5414['query']['hasOwnProperty'](_0x0e76('0x43'))){_0x420088[_0x0e76('0x23')]=qs[_0x0e76('0x23')](_0x3f5414[_0x0e76('0x3c')]['limit']);_0x420088[_0x0e76('0x22')]=qs[_0x0e76('0x22')](_0x3f5414[_0x0e76('0x3c')]['offset']);}_0x420088[_0x0e76('0x44')]=qs[_0x0e76('0x45')](_0x3f5414[_0x0e76('0x3c')][_0x0e76('0x45')]);_0x420088[_0x0e76('0x46')]=qs[_0x0e76('0x3d')](_[_0x0e76('0x47')](_0x3f5414[_0x0e76('0x3c')],_0x575a17[_0x0e76('0x3d')]),_0x424122);var _0x58cb51=[];var _0x15c3eb=squel['select']()['field']('id')[_0x0e76('0x48')]('name')['field'](_0x0e76('0x49'))[_0x0e76('0x4a')](_0x0e76('0x4b'));var _0x26444c=squel[_0x0e76('0x4c')]()[_0x0e76('0x48')](_0x0e76('0x4d'))['field'](_0x0e76('0x4e'))[_0x0e76('0x48')](_0x0e76('0x4f'))[_0x0e76('0x4a')](_0x0e76('0x50'),'ui')[_0x0e76('0x51')](_0x0e76('0x52'),'u',_0x0e76('0x53'));var _0x7e328b=squel[_0x0e76('0x4c')]()[_0x0e76('0x4a')](_0x0e76('0x54'),'i')[_0x0e76('0x51')](_0x0e76('0x55'),'c',_0x0e76('0x56'))[_0x0e76('0x51')](_0x0e76('0x52'),'o','o.id\x20=\x20i.UserId')[_0x0e76('0x51')](_0x0e76('0x57'),'a',_0x0e76('0x58'))[_0x0e76('0x51')](_0x0e76('0x59'),'me',_0x0e76('0x5a'))[_0x0e76('0x51')](_0x0e76('0x5b'),'it',_0x0e76('0x5c'))[_0x0e76('0x51')](_0x0e76('0x4b'),'t',_0x0e76('0x5d'));var _0xf15c9d=squel[_0x0e76('0x5e')]();var _0x12f60d=[];var _0x219859=squel[_0x0e76('0x5e')]();var _0x17e05f;if(_0x3f5414['query']['search']){_0x17e05f=as['parseSearch'](_0x3f5414[_0x0e76('0x3c')]['search']);var _0x2f8f44=_0x17e05f[_0x0e76('0x5f')];for(var _0x2de0b3=0x0;_0x2de0b3<_0x17e05f[_0x0e76('0x60')]['length'];_0x2de0b3++){var _0x3a3ce2=_0x17e05f['conditions'][_0x2de0b3];var _0x13b955='i';var _0x2684f9=_[_0x0e76('0x61')](_0x424122,['name',_0x3a3ce2[_0x0e76('0x48')]]);if(!_0x2684f9){switch(_0x3a3ce2['field']){case'unreadMessages':if(_0x3a3ce2[_0x0e76('0x62')]==0x1){_0x7e328b[_0x0e76('0x63')]('`'+_0x3a3ce2[_0x0e76('0x48')]+_0x0e76('0x64'));}else{_0x7e328b[_0x0e76('0x63')]('`'+_0x3a3ce2[_0x0e76('0x48')]+_0x0e76('0x65'));}break;case _0x0e76('0x66'):if(_0x3a3ce2[_0x0e76('0x67')]===_0x0e76('0x68')){if(_0x3a3ce2[_0x0e76('0x62')]['split']('\x20')[_0x0e76('0x42')]>0x1){_0xf15c9d[_0x2f8f44]('MATCH\x20(c.firstName,\x20c.lastName,\x20c.phone,\x20c.mobile,\x20c.fax,\x20c.email)\x20AGAINST\x20(?\x20IN\x20BOOLEAN\x20MODE)',qs[_0x0e76('0x69')](_0x3a3ce2[_0x0e76('0x62')]),null);}else{var _0x54bd40='%'+_0x3a3ce2['value']+'%';_0xf15c9d[_0x2f8f44](_0x0e76('0x6a'),_0x54bd40,_0x54bd40,_0x54bd40);}}else{_0x2684f9=_[_0x0e76('0x61')](_0x424122,[_0x0e76('0x2f'),_0x0e76('0x6b')]);_0x3a3ce2['field']=_0x0e76('0x6b');_0x5b679e=as[_0x0e76('0x6c')](_0x13b955,_0x2684f9[_0x0e76('0x3a')],_0x3a3ce2);_0xf15c9d[_0x2f8f44](_0x5b679e['text'],_0x5b679e[_0x0e76('0x62')][_0x0e76('0x6d')],_0x5b679e['value'][_0x0e76('0x2c')]);}break;case'Tag':var _0x4124db=_0x3a3ce2[_0x0e76('0x62')]['split'](',')[_0x0e76('0x32')](function(_0x3a2b46){return Number(_0x3a2b46);});_0x4124db[_0x0e76('0x6e')](function(_0xe13528){_0x219859['or']('CONCAT(\x27,\x27,\x20`TagIds`,\x20\x27,\x27)\x20LIKE\x20?','%,'+_0xe13528+',%');});_0x12f60d=_[_0x0e76('0x6f')](_0x12f60d,_0x4124db);break;case'User':if(_0x3a3ce2[_0x0e76('0x67')]==='$substring'){_0xf15c9d[_0x2f8f44](_0x0e76('0x70'),'%'+_0x3a3ce2[_0x0e76('0x62')]+'%',null);}else{_0x2684f9=_[_0x0e76('0x61')](_0x424122,[_0x0e76('0x2f'),_0x0e76('0x71')]);_0x3a3ce2[_0x0e76('0x48')]='UserId';_0x5b679e=as[_0x0e76('0x6c')](_0x13b955,_0x2684f9[_0x0e76('0x3a')],_0x3a3ce2);_0xf15c9d[_0x2f8f44](_0x5b679e[_0x0e76('0x72')],_0x5b679e[_0x0e76('0x62')]['start'],_0x5b679e[_0x0e76('0x62')][_0x0e76('0x2c')]);}break;case _0x0e76('0x73'):_0x5b679e=as[_0x0e76('0x6c')]('me',null,_0x3a3ce2);_0xf15c9d[_0x2f8f44](_0x5b679e[_0x0e76('0x72')],_0x5b679e['value'][_0x0e76('0x6d')],_0x5b679e[_0x0e76('0x62')][_0x0e76('0x2c')]);break;}}else{var _0x5b679e=as[_0x0e76('0x6c')](_0x13b955,_0x2684f9['type'],_0x3a3ce2);_0xf15c9d[_0x2f8f44](_0x5b679e[_0x0e76('0x72')],_0x5b679e['value']['start'],_0x5b679e[_0x0e76('0x62')]['end']);}}}else{var _0x14e182=_(_0x3f5414[_0x0e76('0x3c')])[_0x0e76('0x74')]()[_0x0e76('0x32')](function(_0x52d221){return _['some'](_0x424122,['name',_0x52d221])?_0x52d221:undefined;})[_0x0e76('0x75')]()['value']();if(!_[_0x0e76('0x76')](_0x14e182)){_0x14e182[_0x0e76('0x6e')](function(_0x26f52b){if(_0x26f52b==='FaxAccountId'){_0x7e328b[_0x0e76('0x46')]('i.FaxAccountId\x20IN\x20?',[][_0x0e76('0x77')](_0x3f5414['query'][_0x26f52b]));}else if(_0x26f52b===_0x0e76('0x78')){var _0x233e59=JSON[_0x0e76('0x79')](_0x3f5414[_0x0e76('0x3c')][_0x26f52b])[_0x0e76('0x7a')];var _0x191315=JSON[_0x0e76('0x79')](_0x3f5414['query'][_0x26f52b])[_0x0e76('0x7b')];_0x7e328b['where'](_0x0e76('0x7c'),_0x233e59,_0x191315);}else{if(_0x3f5414['query'][_0x26f52b]===_0x0e76('0x7d')){_0x7e328b[_0x0e76('0x46')]('i.'+_0x26f52b+_0x0e76('0x7e'));}else{_0x7e328b[_0x0e76('0x46')]('i.'+_0x26f52b+_0x0e76('0x7f'),_0x3f5414['query'][_0x26f52b]);}}});}if(_0x3f5414[_0x0e76('0x3c')][_0x0e76('0x80')]){if(_0x3f5414[_0x0e76('0x3c')][_0x0e76('0x80')]==0x1){_0x7e328b[_0x0e76('0x63')](_0x0e76('0x81'));}else{_0x7e328b[_0x0e76('0x63')](_0x0e76('0x82'));}}if(_0x3f5414['query'][_0x0e76('0x83')]){_0x12f60d=_[_0x0e76('0x84')](_0x3f5414[_0x0e76('0x3c')]['tag'])?_0x3f5414[_0x0e76('0x3c')][_0x0e76('0x83')]:new Array(_0x3f5414['query']['tag']);_0x12f60d[_0x0e76('0x6e')](function(_0x38b717){_0x219859['or'](_0x0e76('0x85'),'%,'+_0x38b717+',%');});}if(_0x3f5414[_0x0e76('0x3c')][_0x0e76('0x86')]){var _0x424b85=_0x3f5414[_0x0e76('0x3c')][_0x0e76('0x86')][_0x0e76('0x87')]('\x5c','\x5c\x5c')['replace'](/'/g,'\x27\x27');if(qs[_0x0e76('0x88')](_0x424b85)){_0xf15c9d['or'](_0x0e76('0x89'),_0x424b85+'%')['or']('i.fax\x20LIKE\x20?',_0x424b85+'%');}_0xf15c9d['or'](_0x0e76('0x8a'),_0x424b85+'%');}}_0x7e328b['where'](_0xf15c9d);_0x7e328b[_0x0e76('0x8b')](_0x0e76('0x8c'));var _0x1fd069={'type':db[_0x0e76('0x8d')][_0x0e76('0x8e')][_0x0e76('0x8f')],'raw':!![]};var _0x4b72c2=_0x7e328b[_0x0e76('0x90')]();_0x4b72c2[_0x0e76('0x48')](_0x0e76('0x8c'));_0x4b72c2[_0x0e76('0x48')](_0x0e76('0x91'),_0x0e76('0x92'));if(_0x420088[_0x0e76('0x44')]){_0x420088[_0x0e76('0x44')][_0x0e76('0x6e')](function(_0x59b34f){var _0x2acf9f=_0x59b34f[0x0]==='contactName'?_0x59b34f[0x0]:'i.'+_0x59b34f[0x0];_0x7e328b[_0x0e76('0x44')](_0x2acf9f,_0x59b34f[0x1]===_0x0e76('0x93')?![]:!![]);});}if(!_[_0x0e76('0x76')](_0x12f60d)){_0x7e328b[_0x0e76('0x63')](_0x219859);_0x4b72c2[_0x0e76('0x46')](_0x0e76('0x94'),_0x12f60d);}BPromise[_0x0e76('0x95')]()[_0x0e76('0x2b')](function(){if(!_0x17e05f){if(_0x3f5414[_0x0e76('0x3c')]['FaxAccountId'])return;_0x4b72c2[_0x0e76('0x46')](_0x0e76('0x96'));_0x7e328b[_0x0e76('0x46')](_0x0e76('0x96'));return;}if(_0x3f5414[_0x0e76('0x97')][_0x0e76('0x98')]!=='agent')return;return _0x3f5414[_0x0e76('0x97')][_0x0e76('0x99')]({'attributes':['id'],'raw':!![]})[_0x0e76('0x2b')](function(_0x205203){if(_[_0x0e76('0x76')](_0x205203)){_0x4b72c2[_0x0e76('0x46')]('i.FaxAccountId\x20IS\x20NULL');_0x7e328b[_0x0e76('0x46')](_0x0e76('0x9a'));}else{_0x4b72c2[_0x0e76('0x46')](_0x0e76('0x9b'),_['map'](_0x205203,'id'));_0x7e328b['where'](_0x0e76('0x9b'),_[_0x0e76('0x32')](_0x205203,'id'));}});})['then'](function(){if(_0x3f5414[_0x0e76('0x97')][_0x0e76('0x98')]==='agent'&&!_0x17e05f&&!_0x3f5414[_0x0e76('0x3c')][_0x0e76('0x9c')])return[];return db[_0x0e76('0x9d')][_0x0e76('0x3c')](_0x4b72c2[_0x0e76('0x9e')](),_0x1fd069);})['then'](function(_0x58368b){_0x180a61[_0x0e76('0x9f')]=_0x58368b[_0x0e76('0x42')];if(_0x180a61['count']===0x0)return[];return db[_0x0e76('0x9d')]['query'](_0x15c3eb[_0x0e76('0x9e')](),_0x1fd069)['then'](function(_0x3a20cd){_0x58cb51=_[_0x0e76('0xa0')](_0x3a20cd,'id');_0x1fd069=_[_0x0e76('0xa1')](_0x1fd069,{'model':db[_0x0e76('0xa2')],'mapToModel':!![],'raw':!![],'nest':!![]});if(_0x3f5414['query'][_0x0e76('0x40')]){_0x420088[_0x0e76('0x41')][_0x0e76('0x6e')](function(_0x4adee6){_0x7e328b[_0x0e76('0x48')]('i.'+_0x4adee6);});}else{_0x7e328b['field'](_0x0e76('0x91'),'unreadMessages');_0x7e328b[_0x0e76('0x48')]('a.key','Account.key');_0x7e328b['field']('a.mandatoryDisposition',_0x0e76('0xa3'));_0x7e328b[_0x0e76('0x48')]('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',_0x0e76('0xa4'));_0x7e328b[_0x0e76('0x48')](_0x0e76('0xa5'));_0x7e328b['field'](_0x0e76('0xa6'),'Contact.firstName');_0x7e328b[_0x0e76('0x48')](_0x0e76('0xa7'),_0x0e76('0xa8'));_0x7e328b[_0x0e76('0x48')](_0x0e76('0xa9'),'Contact.email');_0x7e328b['field']('c.phone',_0x0e76('0xaa'));_0x7e328b['field'](_0x0e76('0xab'),_0x0e76('0xac'));_0x7e328b[_0x0e76('0x48')]('c.fax',_0x0e76('0xad'));_0x7e328b[_0x0e76('0x48')](_0x0e76('0xae'),_0x0e76('0xaf'));_0x7e328b['field'](_0x0e76('0xb0'),'Owner.internal');_0x7e328b[_0x0e76('0x48')](_0x0e76('0xb1'),_0x0e76('0x34'));}if(_0x420088[_0x0e76('0x23')])_0x7e328b['limit'](_0x420088[_0x0e76('0x23')]);if(_0x420088[_0x0e76('0x22')])_0x7e328b['offset'](_0x420088[_0x0e76('0x22')]);return db[_0x0e76('0x9d')][_0x0e76('0x3c')](_0x7e328b[_0x0e76('0x9e')](),_0x1fd069);})[_0x0e76('0x2b')](function(_0x234242){if(_0x234242[_0x0e76('0x42')]>0x0)_0x26444c[_0x0e76('0x46')](_0x0e76('0xb2'),_['map'](_0x234242,'id'));return db[_0x0e76('0x9d')][_0x0e76('0x3c')](_0x26444c['toString'](),_0x1fd069)[_0x0e76('0x2b')](function(_0x14cd6b){var _0xa3fa7=_['groupBy'](_0x14cd6b,'FaxInteractionId');var _0x49bc67=[];_0x234242[_0x0e76('0x6e')](function(_0x19176f){_0x49bc67[_0x0e76('0xb3')](updateFaxInteraction(_0x19176f,_0x58cb51,_0xa3fa7));});return BPromise[_0x0e76('0xb4')](_0x49bc67);});});})[_0x0e76('0x2b')](function(_0x2c9498){_0x180a61[_0x0e76('0xb5')]=_0x2c9498;return _0x180a61;})['then'](respondWithFilteredResult(_0x108ff7,_0x420088))[_0x0e76('0xb6')](handleError(_0x108ff7,null));};exports[_0x0e76('0xb7')]=function(_0x365866,_0x52a99b){var _0x28ea12={'raw':![],'where':{'id':_0x365866[_0x0e76('0xb8')]['id']}},_0x1ca689={};_0x1ca689[_0x0e76('0x3f')]=_[_0x0e76('0x74')](db[_0x0e76('0xa2')][_0x0e76('0x38')]);_0x1ca689['query']=_[_0x0e76('0x74')](_0x365866[_0x0e76('0x3c')]);_0x1ca689[_0x0e76('0x3d')]=_[_0x0e76('0x3e')](_0x1ca689[_0x0e76('0x3f')],_0x1ca689[_0x0e76('0x3c')]);_0x28ea12['attributes']=_[_0x0e76('0x3e')](_0x1ca689[_0x0e76('0x3f')],qs[_0x0e76('0x40')](_0x365866['query'][_0x0e76('0x40')]));_0x28ea12[_0x0e76('0x41')]=_0x28ea12['attributes']['length']?_0x28ea12[_0x0e76('0x41')]:_0x1ca689[_0x0e76('0x3f')];if(_0x365866[_0x0e76('0x3c')]['includeAll']){_0x28ea12[_0x0e76('0xb9')]=[{'all':!![]}];}_0x28ea12=_[_0x0e76('0xa1')]({},_0x28ea12,_0x365866[_0x0e76('0xba')]);return db[_0x0e76('0xa2')]['find'](_0x28ea12)[_0x0e76('0x2b')](handleEntityNotFound(_0x52a99b,null))[_0x0e76('0x2b')](respondWithResult(_0x52a99b,null))['catch'](handleError(_0x52a99b,null));};exports['create']=function(_0x2515d7,_0x1e4b6a){return db['FaxInteraction'][_0x0e76('0xbb')](_0x2515d7[_0x0e76('0x73')],{})[_0x0e76('0x2b')](respondWithResult(_0x1e4b6a,0xc9))[_0x0e76('0xb6')](handleError(_0x1e4b6a,null));};exports[_0x0e76('0x29')]=function(_0x2a2445,_0x36f4c0){if(_0x2a2445[_0x0e76('0x73')]['id']){delete _0x2a2445['body']['id'];}return db[_0x0e76('0xa2')][_0x0e76('0x61')]({'where':{'id':_0x2a2445[_0x0e76('0xb8')]['id']}})[_0x0e76('0x2b')](handleEntityNotFound(_0x36f4c0,null))[_0x0e76('0x2b')](saveUpdates(_0x2a2445['body'],null))[_0x0e76('0x2b')](respondWithResult(_0x36f4c0,null))[_0x0e76('0xb6')](handleError(_0x36f4c0,null));};exports[_0x0e76('0x2a')]=function(_0x402946,_0x432e5c){return db[_0x0e76('0xa2')]['find']({'where':{'id':_0x402946[_0x0e76('0xb8')]['id']}})['then'](handleEntityNotFound(_0x432e5c,null))[_0x0e76('0x2b')](removeEntity(_0x432e5c,null))[_0x0e76('0xb6')](handleError(_0x432e5c,null));};exports[_0x0e76('0xbc')]=function(_0x5c4a12,_0x1e1b31){return db[_0x0e76('0xa2')][_0x0e76('0xbc')]()[_0x0e76('0x2b')](respondWithResult(_0x1e1b31,null))[_0x0e76('0xb6')](handleError(_0x1e1b31,null));};exports[_0x0e76('0xbd')]=function(_0x4fa826,_0x1b44c7,_0x435c61){return db[_0x0e76('0xbe')][_0x0e76('0x61')]({'where':{'id':_0x4fa826['params']['id']}})[_0x0e76('0x2b')](handleEntityNotFound(_0x1b44c7,null))['then'](function(_0x2673a0){if(_0x2673a0){return _0x2673a0['addMessage'](_0x4fa826[_0x0e76('0x73')][_0x0e76('0xbf')],_['omit'](_0x4fa826[_0x0e76('0x73')],[_0x0e76('0xbf'),'id'])||{});}})['then'](respondWithResult(_0x1b44c7,null))[_0x0e76('0xb6')](handleError(_0x1b44c7,null));};exports['getMessages']=function(_0x361db4,_0x38e337,_0x4ae996){var _0xc6fb8a={'raw':![],'where':{}};var _0x33d321={};var _0x234dda={'count':0x0,'rows':[]};return db[_0x0e76('0xa2')][_0x0e76('0xc0')]({'where':{'id':_0x361db4[_0x0e76('0xb8')]['id']}})['then'](handleEntityNotFound(_0x38e337,null))[_0x0e76('0x2b')](function(_0x5759b9){if(_0x5759b9){_0x33d321['model']=_['keys'](db[_0x0e76('0xbe')][_0x0e76('0x38')]);_0x33d321['query']=_['keys'](_0x361db4[_0x0e76('0x3c')]);_0x33d321[_0x0e76('0x3d')]=_[_0x0e76('0x3e')](_0x33d321[_0x0e76('0x3f')],_0x33d321[_0x0e76('0x3c')]);_0xc6fb8a[_0x0e76('0x41')]=_[_0x0e76('0x3e')](_0x33d321[_0x0e76('0x3f')],qs[_0x0e76('0x40')](_0x361db4[_0x0e76('0x3c')][_0x0e76('0x40')]));_0xc6fb8a[_0x0e76('0x41')]=_0xc6fb8a[_0x0e76('0x41')]['length']?_0xc6fb8a[_0x0e76('0x41')]:_0x33d321['model'];if(!_0x361db4[_0x0e76('0x3c')][_0x0e76('0xc1')]('nolimit')){_0xc6fb8a['limit']=qs['limit'](_0x361db4[_0x0e76('0x3c')][_0x0e76('0x23')]);_0xc6fb8a[_0x0e76('0x22')]=qs['offset'](_0x361db4[_0x0e76('0x3c')][_0x0e76('0x22')]);}_0xc6fb8a[_0x0e76('0x44')]=qs[_0x0e76('0x45')](_0x361db4[_0x0e76('0x3c')]['sort']);_0xc6fb8a[_0x0e76('0x46')]=qs[_0x0e76('0x3d')](_[_0x0e76('0x47')](_0x361db4[_0x0e76('0x3c')],_0x33d321['filters']));_0xc6fb8a[_0x0e76('0x46')][_0x0e76('0xc2')]=_0x5759b9['id'];if(_0x361db4[_0x0e76('0x3c')][_0x0e76('0x86')]){_0xc6fb8a[_0x0e76('0x46')]=_[_0x0e76('0xa1')](_0xc6fb8a[_0x0e76('0x46')],{'$or':_[_0x0e76('0x32')](_0xc6fb8a[_0x0e76('0x41')],function(_0x29782c){var _0x57f905={};_0x57f905[_0x29782c]={'$like':'%'+_0x361db4[_0x0e76('0x3c')]['filter']+'%'};return _0x57f905;})});}if(_0x361db4[_0x0e76('0x3c')][_0x0e76('0x7a')]){var _0x417f6c=_0x361db4['query']['$gte']['split'](',');var _0x182e89={};_0x182e89[_0x417f6c[0x0]]={'$gte':moment(_0x417f6c[0x1])[_0x0e76('0xc3')](_0x0e76('0xc4'))};_0xc6fb8a[_0x0e76('0x46')]=_[_0x0e76('0xa1')](_0xc6fb8a['where'],_0x182e89);}_0xc6fb8a=_[_0x0e76('0xa1')]({},_0xc6fb8a,_0x361db4[_0x0e76('0xba')]);return db[_0x0e76('0xbe')][_0x0e76('0x9f')]({'where':_0xc6fb8a[_0x0e76('0x46')]})[_0x0e76('0x2b')](function(_0x2ed21b){_0x234dda['count']=_0x2ed21b;if(_0x361db4[_0x0e76('0x3c')][_0x0e76('0xc5')]){_0xc6fb8a[_0x0e76('0xb9')]=[{'all':!![]}];}return db[_0x0e76('0xbe')]['findAll'](_0xc6fb8a);})['then'](function(_0x5d075f){_0x234dda[_0x0e76('0xb5')]=_0x5d075f;return _0x234dda;});}})[_0x0e76('0x2b')](respondWithFilteredResult(_0x38e337,_0xc6fb8a))['catch'](handleError(_0x38e337,null));};exports[_0x0e76('0xc6')]=function(_0x46f2ee,_0x2c1775,_0x4c6d3f){return db['FaxInteraction'][_0x0e76('0x61')]({'where':{'id':_0x46f2ee[_0x0e76('0xb8')]['id']}})[_0x0e76('0x2b')](handleEntityNotFound(_0x2c1775,null))[_0x0e76('0x2b')](function(_0x23b46a){if(_0x23b46a){return _0x23b46a['setTags'](_0x46f2ee['body'][_0x0e76('0xbf')],_[_0x0e76('0xc7')](_0x46f2ee[_0x0e76('0x73')],[_0x0e76('0xbf'),'id'])||{})[_0x0e76('0xc8')](function(){return db[_0x0e76('0xc9')][_0x0e76('0xca')]({'attributes':['id',_0x0e76('0x2f'),_0x0e76('0x49')],'where':{'id':_0x46f2ee[_0x0e76('0x73')]['ids']}});})[_0x0e76('0x2b')](function(_0x509804){socket[_0x0e76('0xcb')](_0x0e76('0xcc'),{'id':Number(_0x46f2ee[_0x0e76('0xb8')]['id']),'tags':_0x509804||[]});return{'id':Number(_0x46f2ee[_0x0e76('0xb8')]['id']),'tags':_0x509804||[]};});}})[_0x0e76('0x2b')](respondWithResult(_0x2c1775,null))['catch'](handleError(_0x2c1775,null));};exports['removeTags']=function(_0x58b77a,_0x21d941,_0x95d70){return db[_0x0e76('0xa2')][_0x0e76('0x61')]({'where':{'id':_0x58b77a[_0x0e76('0xb8')]['id']}})[_0x0e76('0x2b')](handleEntityNotFound(_0x21d941,null))[_0x0e76('0x2b')](function(_0x2b1822){if(_0x2b1822){return _0x2b1822[_0x0e76('0xcd')](_0x58b77a[_0x0e76('0x3c')][_0x0e76('0xbf')]);}})[_0x0e76('0x2b')](respondWithStatusCode(_0x21d941,null))[_0x0e76('0xb6')](handleError(_0x21d941,null));};exports[_0x0e76('0xce')]=function(_0x360df1,_0x5ae668){var _0x2829e4=moment()['unix']()[_0x0e76('0x9e')]();var _0x3999fc=path[_0x0e76('0xcf')](config[_0x0e76('0xd0')],_0x0e76('0xd1'),_0x0e76('0xd2'),_0x0e76('0xd3'));var _0x537d3c=path[_0x0e76('0xcf')](config[_0x0e76('0xd0')],'server',_0x0e76('0xd2'),'attachments');var _0x2b300b=path[_0x0e76('0xcf')](_0x3999fc,_0x2829e4);var _0x2e6e99=util[_0x0e76('0xc3')](_0x0e76('0xd4'),_0x360df1[_0x0e76('0xb8')]['id'],_0x2829e4);var _0x447c7d=path[_0x0e76('0xcf')](_0x3999fc,_0x2e6e99);var _0x4d30c9=[];_0x4d30c9[_0x0e76('0xb3')]({'model':db['Attachment'],'as':_0x0e76('0xd5'),'raw':!![]});var _0xb3d82e=[{'model':db[_0x0e76('0xbe')],'as':_0x0e76('0xd6'),'attributes':['id',_0x0e76('0x73'),_0x0e76('0x78')],'include':_0x4d30c9}];return db['FaxInteraction'][_0x0e76('0x61')]({'where':{'id':_0x360df1['params']['id']},'include':_0xb3d82e})[_0x0e76('0x2b')](handleEntityNotFound(_0x5ae668,null))['then'](function(_0x451919){if(_0x451919&&_0x451919[_0x0e76('0xd6')]){var _0x2c8f03=_0x451919['get']({'plain':!![]});fs[_0x0e76('0xd7')](_0x2b300b);for(var _0x580ff7=0x0;_0x580ff7<_0x2c8f03[_0x0e76('0xd6')]['length'];_0x580ff7++){var _0x3b15b9=_0x2c8f03[_0x0e76('0xd6')][_0x580ff7]['Attachment'];if(_0x3b15b9){var _0x579a91=path[_0x0e76('0xcf')](_0x537d3c,_0x3b15b9[_0x0e76('0xd8')]);if(fs[_0x0e76('0xd9')](_0x579a91)){fs['createReadStream'](_0x579a91)['pipe'](fs[_0x0e76('0xda')](path[_0x0e76('0xcf')](_0x2b300b,_0x3b15b9['basename'])));}}}return BPromise['resolve']()[_0x0e76('0x2b')](function(){return new BPromise(function(_0x173139,_0x215ac0){zipdir(_0x2b300b,{'saveTo':_0x447c7d},function(_0x402f94,_0x4499b0){if(_0x402f94)return _0x215ac0(_0x402f94);return _0x173139(_0x4499b0);});})[_0x0e76('0x2b')](function(){return new BPromise(function(_0x5b804d,_0x3caab1){rimraf(_0x2b300b,function(_0x17af83){if(_0x17af83)_0x3caab1(_0x17af83);return _0x5b804d();});});})[_0x0e76('0x2b')](function(){return _0x5ae668['download'](_0x447c7d,_0x2e6e99,function(_0x436f61){if(_0x436f61){console[_0x0e76('0xdb')]('err',_0x436f61);}else{fs[_0x0e76('0xdc')](_0x447c7d);}});});});}else{return _0x5ae668[_0x0e76('0x20')](0xc8);}})['catch'](handleError(_0x5ae668,null));};
\ No newline at end of file
+var _0xeff0=['i.FaxAccountId\x20IS\x20NOT\x20NULL','user','agent','getFaxAccounts','i.FaxAccountId\x20IS\x20NULL','i.FaxAccountId\x20IN\x20?','role','sequelize','toString','merge','a.key','Account.key','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','i.*','c.firstName','Contact.lastName','c.email','Contact.email','c.phone','Contact.phone','Contact.mobile','Contact.fax','o.fullname','Owner.fullname','o.internal','Owner.internal','GROUP_CONCAT(DISTINCT\x20t.id)','ui.FaxInteractionId\x20IN\x20?','all','rows','catch','show','params','includeAll','include','options','create','update','body','destroy','describe','addMessage','ids','omit','findOne','FaxMessage','hasOwnProperty','pick','FaxInteractionId','format','YYYY-MM-DD\x20HH:mm:ss','findAll','setTags','emit','faxInteractionTags:save','removeTags','unix','server','files','join','root','attachments','transcript-%d-%s.zip','Attachment','Messages','get','mkdirSync','basename','existsSync','createReadStream','download','log','err','unlinkSync','eml-format','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/logger','api','../../config/utils','../../config/environment','../../config/license/util','redis','defaults','localhost','socket.io-emitter','./faxInteraction.socket','register','status','end','json','offset','undefined','limit','count','set','Content-Range','apply','reject','save','then','sendStatus','name','Users','map','fullname','TagIds','Tags','forEach','push','index','FaxInteraction','rawAttributes','type','key','model','keys','query','filters','intersection','attributes','fields','length','nolimit','order','sort','where','field','color','from','select','u.id','ui.FaxInteractionId','user_has_fax_interactions','left_join','users','fax_interactions','o.id\x20=\x20i.UserId','fax_accounts','a.id\x20=\x20i.FaxAccountId','fax_messages','fax_interaction_has_tags','it.FaxInteractionId\x20=\x20i.id','tools_tags','t.id\x20=\x20it.TagId','expr','parseSearch','search','sqlOperator','conditions','find','unreadMessages','value','having','`\x20=\x200','`\x20>\x200','$substring','split','MATCH\x20(c.firstName,\x20c.lastName,\x20c.phone,\x20c.mobile,\x20c.fax,\x20c.email)\x20AGAINST\x20(?\x20IN\x20BOOLEAN\x20MODE)','getFullTextValue','c.firstName\x20LIKE\x20?\x20OR\x20c.lastName\x20LIKE\x20?\x20OR\x20c.email\x20LIKE\x20?','ContactId','buildExpression','text','start','Tag','CONCAT(\x27,\x27,\x20`TagIds`,\x20\x27,\x27)\x20LIKE\x20?','union','User','CONCAT_WS(\x27\x20\x27,\x20o.name,\x20o.fullname)\x20LIKE\x20?','UserId','compact','isEmpty','concat','createdAt','parse','$gte','i.createdAt\x20BETWEEN\x20?\x20AND\x20?','null','read','`unreadMessages`\x20=\x200','tag','filter','replace','isNumeric','i.id\x20LIKE\x20?','i.fax\x20LIKE\x20?','CONCAT(c.firstName,\x20\x27\x20\x27,\x20c.lastName)\x20LIKE\x20?','group','i.id','Sequelize','QueryTypes','SELECT','SUM(me.read\x20=\x200\x20AND\x20me.direction\x20=\x20\x27in\x27)','contactName','DESC','t.id\x20IN\x20?','resolve','FaxAccountId'];(function(_0x4ef824,_0x340392){var _0x463187=function(_0x32a1df){while(--_0x32a1df){_0x4ef824['push'](_0x4ef824['shift']());}};_0x463187(++_0x340392);}(_0xeff0,0x125));var _0x0eff=function(_0x3ab51d,_0x2fa01d){_0x3ab51d=_0x3ab51d-0x0;var _0x29a04e=_0xeff0[_0x3ab51d];return _0x29a04e;};'use strict';var emlformat=require(_0x0eff('0x0'));var rimraf=require('rimraf');var zipdir=require(_0x0eff('0x1'));var jsonpatch=require('fast-json-patch');var rp=require(_0x0eff('0x2'));var moment=require(_0x0eff('0x3'));var BPromise=require(_0x0eff('0x4'));var Mustache=require(_0x0eff('0x5'));var util=require(_0x0eff('0x6'));var path=require(_0x0eff('0x7'));var sox=require(_0x0eff('0x8'));var csv=require(_0x0eff('0x9'));var ejs=require(_0x0eff('0xa'));var fs=require('fs');var fs_extra=require(_0x0eff('0xb'));var _=require(_0x0eff('0xc'));var squel=require(_0x0eff('0xd'));var crypto=require(_0x0eff('0xe'));var jsforce=require(_0x0eff('0xf'));var deskjs=require(_0x0eff('0x10'));var toCsv=require(_0x0eff('0x9'));var querystring=require(_0x0eff('0x11'));var Papa=require(_0x0eff('0x12'));var Redis=require(_0x0eff('0x13'));var authService=require(_0x0eff('0x14'));var qs=require(_0x0eff('0x15'));var as=require(_0x0eff('0x16'));var hardwareService=require('../../config/license/hardware');var logger=require(_0x0eff('0x17'))(_0x0eff('0x18'));var utils=require(_0x0eff('0x19'));var config=require(_0x0eff('0x1a'));var licenseUtil=require(_0x0eff('0x1b'));var db=require('../../mysqldb')['db'];config[_0x0eff('0x1c')]=_[_0x0eff('0x1d')](config['redis'],{'host':_0x0eff('0x1e'),'port':0x18eb});var socket=require(_0x0eff('0x1f'))(new Redis(config['redis']));require(_0x0eff('0x20'))[_0x0eff('0x21')](socket);function respondWithStatusCode(_0x2612ab,_0x3f25c7){_0x3f25c7=_0x3f25c7||0xcc;return function(_0x46042d){if(_0x46042d){return _0x2612ab['sendStatus'](_0x3f25c7);}return _0x2612ab[_0x0eff('0x22')](_0x3f25c7)[_0x0eff('0x23')]();};}function respondWithResult(_0x2e9558,_0x5c2888){_0x5c2888=_0x5c2888||0xc8;return function(_0x2cb044){if(_0x2cb044){return _0x2e9558[_0x0eff('0x22')](_0x5c2888)[_0x0eff('0x24')](_0x2cb044);}};}function respondWithFilteredResult(_0xb48e4b,_0x1db933){return function(_0x59b093){if(_0x59b093){var _0x262ded=typeof _0x1db933[_0x0eff('0x25')]===_0x0eff('0x26')&&typeof _0x1db933[_0x0eff('0x27')]==='undefined';var _0xd01c7e=_0x59b093['count'];var _0x5613fd=_0x262ded?0x0:_0x1db933[_0x0eff('0x25')];var _0x3abc99=_0x262ded?_0x59b093[_0x0eff('0x28')]:_0x1db933[_0x0eff('0x25')]+_0x1db933['limit'];var _0x26e5fc;if(_0x3abc99>=_0xd01c7e){_0x3abc99=_0xd01c7e;_0x26e5fc=0xc8;}else{_0x26e5fc=0xce;}_0xb48e4b[_0x0eff('0x22')](_0x26e5fc);return _0xb48e4b[_0x0eff('0x29')](_0x0eff('0x2a'),_0x5613fd+'-'+_0x3abc99+'/'+_0xd01c7e)['json'](_0x59b093);}return null;};}function patchUpdates(_0x36fe42){return function(_0x10918e){try{jsonpatch[_0x0eff('0x2b')](_0x10918e,_0x36fe42,!![]);}catch(_0x428b67){return BPromise[_0x0eff('0x2c')](_0x428b67);}return _0x10918e[_0x0eff('0x2d')]();};}function saveUpdates(_0x34149b,_0x476001){return function(_0x4b66e7){if(_0x4b66e7){return _0x4b66e7['update'](_0x34149b)[_0x0eff('0x2e')](function(_0x59b3d3){return _0x59b3d3;});}return null;};}function removeEntity(_0x658f49,_0x31ebaf){return function(_0x22ec68){if(_0x22ec68){return _0x22ec68['destroy']()[_0x0eff('0x2e')](function(){_0x658f49['status'](0xcc)[_0x0eff('0x23')]();});}};}function handleEntityNotFound(_0x35f6e2,_0x4d7ebe){return function(_0x4968bd){if(!_0x4968bd){_0x35f6e2[_0x0eff('0x2f')](0x194);}return _0x4968bd;};}function handleError(_0x4d4bbb,_0x1999c8){_0x1999c8=_0x1999c8||0x1f4;return function(_0x175f08){logger['error'](_0x175f08['stack']);if(_0x175f08[_0x0eff('0x30')]){delete _0x175f08[_0x0eff('0x30')];}_0x4d4bbb[_0x0eff('0x22')](_0x1999c8)['send'](_0x175f08);};}function getInteractionUsers(_0x5134de,_0x72297f){return new BPromise(function(_0x58ba27,_0x34efc7){try{if(_0x72297f[_0x5134de['id']]){_0x5134de[_0x0eff('0x31')]=_[_0x0eff('0x32')](_0x72297f[_0x5134de['id']],function(_0x5e0860){return{'id':_0x5e0860['id'],'fullname':_0x5e0860[_0x0eff('0x33')]};});}}catch(_0x4b5941){_0x34efc7(_0x4b5941);}_0x58ba27(_0x5134de);});}function getInteractionTags(_0x1cb80a,_0x238852){return new BPromise(function(_0x32f0e1,_0x4b4b30){try{if(_0x1cb80a[_0x0eff('0x34')]){_0x1cb80a[_0x0eff('0x35')]=[];_0x1cb80a[_0x0eff('0x34')]['split'](',')[_0x0eff('0x36')](function(_0x5bf632){_0x1cb80a[_0x0eff('0x35')][_0x0eff('0x37')](_0x238852[_0x5bf632]);});}delete _0x1cb80a[_0x0eff('0x34')];}catch(_0x4be3b6){_0x4b4b30(_0x4be3b6);}_0x32f0e1(_0x1cb80a);});}function updateFaxInteraction(_0x590607,_0x5c843c,_0xb64303){return new BPromise(function(_0x3714bc,_0x29efef){return getInteractionUsers(_0x590607,_0xb64303)[_0x0eff('0x2e')](function(_0x5a39e4){return getInteractionTags(_0x5a39e4,_0x5c843c);})[_0x0eff('0x2e')](function(_0x29675c){_0x3714bc(_0x29675c);})['catch'](function(_0x808181){_0x29efef(_0x808181);});});}exports[_0x0eff('0x38')]=function(_0x4e9e4d,_0xfe8cde){var _0x3e14ba={},_0x2ff30c={},_0x1bd0f1={'count':0x0,'rows':[]};var _0x1b452c=_[_0x0eff('0x32')](db[_0x0eff('0x39')][_0x0eff('0x3a')],function(_0x48ea78){return{'name':_0x48ea78['fieldName'],'type':_0x48ea78[_0x0eff('0x3b')][_0x0eff('0x3c')]};});_0x2ff30c[_0x0eff('0x3d')]=_[_0x0eff('0x32')](_0x1b452c,_0x0eff('0x30'));_0x2ff30c['query']=_[_0x0eff('0x3e')](_0x4e9e4d[_0x0eff('0x3f')]);_0x2ff30c[_0x0eff('0x40')]=_[_0x0eff('0x41')](_0x2ff30c[_0x0eff('0x3d')],_0x2ff30c[_0x0eff('0x3f')]);_0x3e14ba[_0x0eff('0x42')]=_[_0x0eff('0x41')](_0x2ff30c[_0x0eff('0x3d')],qs[_0x0eff('0x43')](_0x4e9e4d['query']['fields']));_0x3e14ba[_0x0eff('0x42')]=_0x3e14ba[_0x0eff('0x42')][_0x0eff('0x44')]?_0x3e14ba['attributes']:_0x2ff30c[_0x0eff('0x3d')];if(!_0x4e9e4d[_0x0eff('0x3f')]['hasOwnProperty'](_0x0eff('0x45'))){_0x3e14ba[_0x0eff('0x27')]=qs['limit'](_0x4e9e4d[_0x0eff('0x3f')][_0x0eff('0x27')]);_0x3e14ba[_0x0eff('0x25')]=qs['offset'](_0x4e9e4d[_0x0eff('0x3f')][_0x0eff('0x25')]);}_0x3e14ba[_0x0eff('0x46')]=qs[_0x0eff('0x47')](_0x4e9e4d[_0x0eff('0x3f')][_0x0eff('0x47')]);_0x3e14ba[_0x0eff('0x48')]=qs[_0x0eff('0x40')](_['pick'](_0x4e9e4d[_0x0eff('0x3f')],_0x2ff30c[_0x0eff('0x40')]),_0x1b452c);var _0x524e49=[];var _0x391ebc=squel['select']()[_0x0eff('0x49')]('id')['field']('name')['field'](_0x0eff('0x4a'))[_0x0eff('0x4b')]('tools_tags');var _0x455d10=squel[_0x0eff('0x4c')]()[_0x0eff('0x49')](_0x0eff('0x4d'))[_0x0eff('0x49')]('u.fullname')['field'](_0x0eff('0x4e'))[_0x0eff('0x4b')](_0x0eff('0x4f'),'ui')[_0x0eff('0x50')](_0x0eff('0x51'),'u','u.id\x20=\x20ui.UserId');var _0x12af56=squel[_0x0eff('0x4c')]()[_0x0eff('0x4b')](_0x0eff('0x52'),'i')['left_join']('cm_contacts','c','c.id\x20=\x20i.ContactId\x20AND\x20c.deletedAt\x20IS\x20NULL')[_0x0eff('0x50')](_0x0eff('0x51'),'o',_0x0eff('0x53'))[_0x0eff('0x50')](_0x0eff('0x54'),'a',_0x0eff('0x55'))[_0x0eff('0x50')](_0x0eff('0x56'),'me','me.FaxInteractionId\x20=\x20i.id')[_0x0eff('0x50')](_0x0eff('0x57'),'it',_0x0eff('0x58'))[_0x0eff('0x50')](_0x0eff('0x59'),'t',_0x0eff('0x5a'));var _0x299d3e=squel[_0x0eff('0x5b')]();var _0x30558f=[];var _0x597192=squel[_0x0eff('0x5b')]();var _0x2a6039;if(_0x4e9e4d[_0x0eff('0x3f')]['search']){_0x2a6039=as[_0x0eff('0x5c')](_0x4e9e4d[_0x0eff('0x3f')][_0x0eff('0x5d')]);var _0x5e2eb2=_0x2a6039[_0x0eff('0x5e')];for(var _0x4a0bd9=0x0;_0x4a0bd9<_0x2a6039[_0x0eff('0x5f')][_0x0eff('0x44')];_0x4a0bd9++){var _0x3b100f=_0x2a6039['conditions'][_0x4a0bd9];var _0x1c455c='i';var _0x3da985=_[_0x0eff('0x60')](_0x1b452c,[_0x0eff('0x30'),_0x3b100f[_0x0eff('0x49')]]);if(!_0x3da985){switch(_0x3b100f[_0x0eff('0x49')]){case _0x0eff('0x61'):if(_0x3b100f[_0x0eff('0x62')]==0x1){_0x12af56[_0x0eff('0x63')]('`'+_0x3b100f[_0x0eff('0x49')]+_0x0eff('0x64'));}else{_0x12af56[_0x0eff('0x63')]('`'+_0x3b100f[_0x0eff('0x49')]+_0x0eff('0x65'));}break;case'Contact':if(_0x3b100f['operator']===_0x0eff('0x66')){if(_0x3b100f[_0x0eff('0x62')][_0x0eff('0x67')]('\x20')[_0x0eff('0x44')]>0x1){_0x299d3e[_0x5e2eb2](_0x0eff('0x68'),qs[_0x0eff('0x69')](_0x3b100f['value']),null);}else{var _0x3e3196='%'+_0x3b100f[_0x0eff('0x62')]+'%';_0x299d3e[_0x5e2eb2](_0x0eff('0x6a'),_0x3e3196,_0x3e3196,_0x3e3196);}}else{_0x3da985=_[_0x0eff('0x60')](_0x1b452c,['name',_0x0eff('0x6b')]);_0x3b100f[_0x0eff('0x49')]=_0x0eff('0x6b');_0x360b82=as[_0x0eff('0x6c')](_0x1c455c,_0x3da985[_0x0eff('0x3b')],_0x3b100f);_0x299d3e[_0x5e2eb2](_0x360b82[_0x0eff('0x6d')],_0x360b82[_0x0eff('0x62')][_0x0eff('0x6e')],_0x360b82['value']['end']);}break;case _0x0eff('0x6f'):var _0x43dab8=_0x3b100f[_0x0eff('0x62')][_0x0eff('0x67')](',')[_0x0eff('0x32')](function(_0x1c7ece){return Number(_0x1c7ece);});_0x43dab8[_0x0eff('0x36')](function(_0x2bc778){_0x597192['or'](_0x0eff('0x70'),'%,'+_0x2bc778+',%');});_0x30558f=_[_0x0eff('0x71')](_0x30558f,_0x43dab8);break;case _0x0eff('0x72'):if(_0x3b100f['operator']===_0x0eff('0x66')){_0x299d3e[_0x5e2eb2](_0x0eff('0x73'),'%'+_0x3b100f[_0x0eff('0x62')]+'%',null);}else{_0x3da985=_[_0x0eff('0x60')](_0x1b452c,['name',_0x0eff('0x74')]);_0x3b100f[_0x0eff('0x49')]=_0x0eff('0x74');_0x360b82=as[_0x0eff('0x6c')](_0x1c455c,_0x3da985['type'],_0x3b100f);_0x299d3e[_0x5e2eb2](_0x360b82['text'],_0x360b82[_0x0eff('0x62')][_0x0eff('0x6e')],_0x360b82[_0x0eff('0x62')][_0x0eff('0x23')]);}break;case'body':_0x360b82=as[_0x0eff('0x6c')]('me',null,_0x3b100f);_0x299d3e[_0x5e2eb2](_0x360b82[_0x0eff('0x6d')],_0x360b82[_0x0eff('0x62')][_0x0eff('0x6e')],_0x360b82[_0x0eff('0x62')]['end']);break;}}else{var _0x360b82=as[_0x0eff('0x6c')](_0x1c455c,_0x3da985['type'],_0x3b100f);_0x299d3e[_0x5e2eb2](_0x360b82[_0x0eff('0x6d')],_0x360b82[_0x0eff('0x62')][_0x0eff('0x6e')],_0x360b82[_0x0eff('0x62')][_0x0eff('0x23')]);}}}else{var _0xbfa63f=_(_0x4e9e4d[_0x0eff('0x3f')])[_0x0eff('0x3e')]()[_0x0eff('0x32')](function(_0x32ab60){return _['some'](_0x1b452c,[_0x0eff('0x30'),_0x32ab60])?_0x32ab60:undefined;})[_0x0eff('0x75')]()[_0x0eff('0x62')]();if(!_[_0x0eff('0x76')](_0xbfa63f)){_0xbfa63f[_0x0eff('0x36')](function(_0x58c5a0){if(_0x58c5a0==='FaxAccountId'){_0x12af56[_0x0eff('0x48')]('i.FaxAccountId\x20IN\x20?',[][_0x0eff('0x77')](_0x4e9e4d['query'][_0x58c5a0]));}else if(_0x58c5a0===_0x0eff('0x78')){var _0x327865=JSON[_0x0eff('0x79')](_0x4e9e4d[_0x0eff('0x3f')][_0x58c5a0])[_0x0eff('0x7a')];var _0x3b1b34=JSON['parse'](_0x4e9e4d[_0x0eff('0x3f')][_0x58c5a0])['$lte'];_0x12af56[_0x0eff('0x48')](_0x0eff('0x7b'),_0x327865,_0x3b1b34);}else{if(_0x4e9e4d[_0x0eff('0x3f')][_0x58c5a0]===_0x0eff('0x7c')){_0x12af56[_0x0eff('0x48')]('i.'+_0x58c5a0+'\x20IS\x20NULL');}else{_0x12af56[_0x0eff('0x48')]('i.'+_0x58c5a0+'\x20=\x20?',_0x4e9e4d['query'][_0x58c5a0]);}}});}if(_0x4e9e4d[_0x0eff('0x3f')][_0x0eff('0x7d')]){if(_0x4e9e4d['query']['read']==0x1){_0x12af56[_0x0eff('0x63')](_0x0eff('0x7e'));}else{_0x12af56['having']('`unreadMessages`\x20>\x200');}}if(_0x4e9e4d[_0x0eff('0x3f')][_0x0eff('0x7f')]){_0x30558f=_['isArray'](_0x4e9e4d[_0x0eff('0x3f')][_0x0eff('0x7f')])?_0x4e9e4d['query'][_0x0eff('0x7f')]:new Array(_0x4e9e4d[_0x0eff('0x3f')]['tag']);_0x30558f[_0x0eff('0x36')](function(_0x4a28eb){_0x597192['or'](_0x0eff('0x70'),'%,'+_0x4a28eb+',%');});}if(_0x4e9e4d['query'][_0x0eff('0x80')]){var _0xb148e=_0x4e9e4d[_0x0eff('0x3f')]['filter'][_0x0eff('0x81')]('\x5c','\x5c\x5c')[_0x0eff('0x81')](/'/g,'\x27\x27');if(qs[_0x0eff('0x82')](_0xb148e)){_0x299d3e['or'](_0x0eff('0x83'),_0xb148e+'%')['or'](_0x0eff('0x84'),_0xb148e+'%');}_0x299d3e['or'](_0x0eff('0x85'),_0xb148e+'%');}}_0x12af56[_0x0eff('0x48')](_0x299d3e);_0x12af56[_0x0eff('0x86')](_0x0eff('0x87'));var _0x39ee87={'type':db[_0x0eff('0x88')][_0x0eff('0x89')][_0x0eff('0x8a')],'raw':!![]};var _0x4e566d=_0x12af56['clone']();_0x4e566d[_0x0eff('0x49')]('i.id');_0x4e566d[_0x0eff('0x49')](_0x0eff('0x8b'),_0x0eff('0x61'));if(_0x3e14ba[_0x0eff('0x46')]){_0x3e14ba[_0x0eff('0x46')][_0x0eff('0x36')](function(_0x296e83){var _0x4f9afc=_0x296e83[0x0]===_0x0eff('0x8c')?_0x296e83[0x0]:'i.'+_0x296e83[0x0];_0x12af56[_0x0eff('0x46')](_0x4f9afc,_0x296e83[0x1]===_0x0eff('0x8d')?![]:!![]);});}if(!_[_0x0eff('0x76')](_0x30558f)){_0x12af56[_0x0eff('0x63')](_0x597192);_0x4e566d['where'](_0x0eff('0x8e'),_0x30558f);}BPromise[_0x0eff('0x8f')]()[_0x0eff('0x2e')](function(){if(!_0x2a6039){if(_0x4e9e4d['query'][_0x0eff('0x90')])return;_0x4e566d[_0x0eff('0x48')]('i.FaxAccountId\x20IS\x20NOT\x20NULL');_0x12af56['where'](_0x0eff('0x91'));return;}if(_0x4e9e4d[_0x0eff('0x92')]['role']!==_0x0eff('0x93'))return;return _0x4e9e4d[_0x0eff('0x92')][_0x0eff('0x94')]({'attributes':['id'],'raw':!![]})[_0x0eff('0x2e')](function(_0x4563d8){if(_[_0x0eff('0x76')](_0x4563d8)){_0x4e566d[_0x0eff('0x48')](_0x0eff('0x95'));_0x12af56[_0x0eff('0x48')](_0x0eff('0x95'));}else{_0x4e566d[_0x0eff('0x48')](_0x0eff('0x96'),_['map'](_0x4563d8,'id'));_0x12af56['where'](_0x0eff('0x96'),_['map'](_0x4563d8,'id'));}});})['then'](function(){if(_0x4e9e4d['user'][_0x0eff('0x97')]===_0x0eff('0x93')&&!_0x2a6039&&!_0x4e9e4d[_0x0eff('0x3f')][_0x0eff('0x90')])return[];return db[_0x0eff('0x98')][_0x0eff('0x3f')](_0x4e566d[_0x0eff('0x99')](),_0x39ee87);})[_0x0eff('0x2e')](function(_0x25906f){_0x1bd0f1[_0x0eff('0x28')]=_0x25906f[_0x0eff('0x44')];if(_0x1bd0f1[_0x0eff('0x28')]===0x0)return[];return db['sequelize'][_0x0eff('0x3f')](_0x391ebc[_0x0eff('0x99')](),_0x39ee87)[_0x0eff('0x2e')](function(_0xb5ec01){_0x524e49=_['keyBy'](_0xb5ec01,'id');_0x39ee87=_[_0x0eff('0x9a')](_0x39ee87,{'model':db['FaxInteraction'],'mapToModel':!![],'raw':!![],'nest':!![]});if(_0x4e9e4d[_0x0eff('0x3f')]['fields']){_0x3e14ba[_0x0eff('0x42')][_0x0eff('0x36')](function(_0x47425e){_0x12af56['field']('i.'+_0x47425e);});}else{_0x12af56['field'](_0x0eff('0x8b'),'unreadMessages');_0x12af56['field'](_0x0eff('0x9b'),_0x0eff('0x9c'));_0x12af56['field']('a.mandatoryDisposition','Account.mandatoryDisposition');_0x12af56[_0x0eff('0x49')](_0x0eff('0x9d'),_0x0eff('0x8c'));_0x12af56[_0x0eff('0x49')](_0x0eff('0x9e'));_0x12af56[_0x0eff('0x49')](_0x0eff('0x9f'),'Contact.firstName');_0x12af56[_0x0eff('0x49')]('c.lastName',_0x0eff('0xa0'));_0x12af56[_0x0eff('0x49')](_0x0eff('0xa1'),_0x0eff('0xa2'));_0x12af56[_0x0eff('0x49')](_0x0eff('0xa3'),_0x0eff('0xa4'));_0x12af56['field']('c.mobile',_0x0eff('0xa5'));_0x12af56[_0x0eff('0x49')]('c.fax',_0x0eff('0xa6'));_0x12af56['field'](_0x0eff('0xa7'),_0x0eff('0xa8'));_0x12af56[_0x0eff('0x49')](_0x0eff('0xa9'),_0x0eff('0xaa'));_0x12af56[_0x0eff('0x49')](_0x0eff('0xab'),'TagIds');}if(_0x3e14ba['limit'])_0x12af56[_0x0eff('0x27')](_0x3e14ba[_0x0eff('0x27')]);if(_0x3e14ba['offset'])_0x12af56[_0x0eff('0x25')](_0x3e14ba['offset']);return db['sequelize']['query'](_0x12af56[_0x0eff('0x99')](),_0x39ee87);})[_0x0eff('0x2e')](function(_0x2aae00){if(_0x2aae00[_0x0eff('0x44')]>0x0)_0x455d10[_0x0eff('0x48')](_0x0eff('0xac'),_['map'](_0x2aae00,'id'));return db[_0x0eff('0x98')][_0x0eff('0x3f')](_0x455d10['toString'](),_0x39ee87)[_0x0eff('0x2e')](function(_0x5d696f){var _0x122272=_['groupBy'](_0x5d696f,'FaxInteractionId');var _0x58b888=[];_0x2aae00[_0x0eff('0x36')](function(_0x1efe62){_0x58b888[_0x0eff('0x37')](updateFaxInteraction(_0x1efe62,_0x524e49,_0x122272));});return BPromise[_0x0eff('0xad')](_0x58b888);});});})['then'](function(_0x31ab8c){_0x1bd0f1[_0x0eff('0xae')]=_0x31ab8c;return _0x1bd0f1;})['then'](respondWithFilteredResult(_0xfe8cde,_0x3e14ba))[_0x0eff('0xaf')](handleError(_0xfe8cde,null));};exports[_0x0eff('0xb0')]=function(_0x50f3e8,_0x32efb2){var _0x39c87e={'raw':![],'where':{'id':_0x50f3e8[_0x0eff('0xb1')]['id']}},_0x54e61f={};_0x54e61f['model']=_[_0x0eff('0x3e')](db[_0x0eff('0x39')][_0x0eff('0x3a')]);_0x54e61f[_0x0eff('0x3f')]=_[_0x0eff('0x3e')](_0x50f3e8[_0x0eff('0x3f')]);_0x54e61f[_0x0eff('0x40')]=_['intersection'](_0x54e61f[_0x0eff('0x3d')],_0x54e61f[_0x0eff('0x3f')]);_0x39c87e[_0x0eff('0x42')]=_['intersection'](_0x54e61f[_0x0eff('0x3d')],qs[_0x0eff('0x43')](_0x50f3e8[_0x0eff('0x3f')][_0x0eff('0x43')]));_0x39c87e['attributes']=_0x39c87e['attributes'][_0x0eff('0x44')]?_0x39c87e['attributes']:_0x54e61f[_0x0eff('0x3d')];if(_0x50f3e8[_0x0eff('0x3f')][_0x0eff('0xb2')]){_0x39c87e[_0x0eff('0xb3')]=[{'all':!![]}];}_0x39c87e=_[_0x0eff('0x9a')]({},_0x39c87e,_0x50f3e8[_0x0eff('0xb4')]);return db['FaxInteraction'][_0x0eff('0x60')](_0x39c87e)[_0x0eff('0x2e')](handleEntityNotFound(_0x32efb2,null))[_0x0eff('0x2e')](respondWithResult(_0x32efb2,null))[_0x0eff('0xaf')](handleError(_0x32efb2,null));};exports['create']=function(_0x7d7008,_0x43e118){return db['FaxInteraction'][_0x0eff('0xb5')](_0x7d7008['body'],{})['then'](respondWithResult(_0x43e118,0xc9))['catch'](handleError(_0x43e118,null));};exports[_0x0eff('0xb6')]=function(_0x52faf8,_0x5a7901){if(_0x52faf8[_0x0eff('0xb7')]['id']){delete _0x52faf8[_0x0eff('0xb7')]['id'];}return db[_0x0eff('0x39')][_0x0eff('0x60')]({'where':{'id':_0x52faf8[_0x0eff('0xb1')]['id']}})[_0x0eff('0x2e')](handleEntityNotFound(_0x5a7901,null))[_0x0eff('0x2e')](saveUpdates(_0x52faf8['body'],null))['then'](respondWithResult(_0x5a7901,null))['catch'](handleError(_0x5a7901,null));};exports[_0x0eff('0xb8')]=function(_0x366861,_0x59731d){return db[_0x0eff('0x39')][_0x0eff('0x60')]({'where':{'id':_0x366861[_0x0eff('0xb1')]['id']}})[_0x0eff('0x2e')](handleEntityNotFound(_0x59731d,null))[_0x0eff('0x2e')](removeEntity(_0x59731d,null))['catch'](handleError(_0x59731d,null));};exports['describe']=function(_0x2a2534,_0x2625e3){return db[_0x0eff('0x39')][_0x0eff('0xb9')]()[_0x0eff('0x2e')](respondWithResult(_0x2625e3,null))[_0x0eff('0xaf')](handleError(_0x2625e3,null));};exports[_0x0eff('0xba')]=function(_0x55cbd8,_0x529973,_0x383f07){return db['FaxMessage'][_0x0eff('0x60')]({'where':{'id':_0x55cbd8[_0x0eff('0xb1')]['id']}})[_0x0eff('0x2e')](handleEntityNotFound(_0x529973,null))[_0x0eff('0x2e')](function(_0x2d3d00){if(_0x2d3d00){return _0x2d3d00[_0x0eff('0xba')](_0x55cbd8[_0x0eff('0xb7')][_0x0eff('0xbb')],_[_0x0eff('0xbc')](_0x55cbd8[_0x0eff('0xb7')],[_0x0eff('0xbb'),'id'])||{});}})[_0x0eff('0x2e')](respondWithResult(_0x529973,null))['catch'](handleError(_0x529973,null));};exports['getMessages']=function(_0x57eac8,_0x394def,_0x380dbe){var _0x4dc006={'raw':![],'where':{}};var _0x586642={};var _0x20b53b={'count':0x0,'rows':[]};return db[_0x0eff('0x39')][_0x0eff('0xbd')]({'where':{'id':_0x57eac8[_0x0eff('0xb1')]['id']}})[_0x0eff('0x2e')](handleEntityNotFound(_0x394def,null))['then'](function(_0x575d13){if(_0x575d13){_0x586642[_0x0eff('0x3d')]=_[_0x0eff('0x3e')](db[_0x0eff('0xbe')][_0x0eff('0x3a')]);_0x586642['query']=_[_0x0eff('0x3e')](_0x57eac8[_0x0eff('0x3f')]);_0x586642[_0x0eff('0x40')]=_['intersection'](_0x586642[_0x0eff('0x3d')],_0x586642[_0x0eff('0x3f')]);_0x4dc006['attributes']=_['intersection'](_0x586642[_0x0eff('0x3d')],qs[_0x0eff('0x43')](_0x57eac8[_0x0eff('0x3f')]['fields']));_0x4dc006['attributes']=_0x4dc006['attributes'][_0x0eff('0x44')]?_0x4dc006[_0x0eff('0x42')]:_0x586642[_0x0eff('0x3d')];if(!_0x57eac8[_0x0eff('0x3f')][_0x0eff('0xbf')](_0x0eff('0x45'))){_0x4dc006['limit']=qs[_0x0eff('0x27')](_0x57eac8[_0x0eff('0x3f')]['limit']);_0x4dc006[_0x0eff('0x25')]=qs['offset'](_0x57eac8[_0x0eff('0x3f')]['offset']);}_0x4dc006[_0x0eff('0x46')]=qs[_0x0eff('0x47')](_0x57eac8[_0x0eff('0x3f')][_0x0eff('0x47')]);_0x4dc006['where']=qs[_0x0eff('0x40')](_[_0x0eff('0xc0')](_0x57eac8[_0x0eff('0x3f')],_0x586642[_0x0eff('0x40')]));_0x4dc006[_0x0eff('0x48')][_0x0eff('0xc1')]=_0x575d13['id'];if(_0x57eac8[_0x0eff('0x3f')][_0x0eff('0x80')]){_0x4dc006[_0x0eff('0x48')]=_[_0x0eff('0x9a')](_0x4dc006[_0x0eff('0x48')],{'$or':_[_0x0eff('0x32')](_0x4dc006[_0x0eff('0x42')],function(_0x2e7129){var _0x5569b8={};_0x5569b8[_0x2e7129]={'$like':'%'+_0x57eac8[_0x0eff('0x3f')][_0x0eff('0x80')]+'%'};return _0x5569b8;})});}if(_0x57eac8[_0x0eff('0x3f')]['$gte']){var _0x1976ae=_0x57eac8[_0x0eff('0x3f')][_0x0eff('0x7a')]['split'](',');var _0x28875c={};_0x28875c[_0x1976ae[0x0]]={'$gte':moment(_0x1976ae[0x1])[_0x0eff('0xc2')](_0x0eff('0xc3'))};_0x4dc006[_0x0eff('0x48')]=_[_0x0eff('0x9a')](_0x4dc006[_0x0eff('0x48')],_0x28875c);}_0x4dc006=_[_0x0eff('0x9a')]({},_0x4dc006,_0x57eac8['options']);return db['FaxMessage'][_0x0eff('0x28')]({'where':_0x4dc006[_0x0eff('0x48')]})[_0x0eff('0x2e')](function(_0x2cde6f){_0x20b53b[_0x0eff('0x28')]=_0x2cde6f;if(_0x57eac8[_0x0eff('0x3f')][_0x0eff('0xb2')]){_0x4dc006[_0x0eff('0xb3')]=[{'all':!![]}];}return db['FaxMessage'][_0x0eff('0xc4')](_0x4dc006);})[_0x0eff('0x2e')](function(_0x48bd36){_0x20b53b['rows']=_0x48bd36;return _0x20b53b;});}})['then'](respondWithFilteredResult(_0x394def,_0x4dc006))[_0x0eff('0xaf')](handleError(_0x394def,null));};exports['addTags']=function(_0xd63175,_0xb7568f,_0x45bddb){return db[_0x0eff('0x39')][_0x0eff('0x60')]({'where':{'id':_0xd63175[_0x0eff('0xb1')]['id']}})[_0x0eff('0x2e')](handleEntityNotFound(_0xb7568f,null))[_0x0eff('0x2e')](function(_0x24830e){if(_0x24830e){return _0x24830e[_0x0eff('0xc5')](_0xd63175[_0x0eff('0xb7')][_0x0eff('0xbb')],_[_0x0eff('0xbc')](_0xd63175[_0x0eff('0xb7')],['ids','id'])||{})['spread'](function(){return db[_0x0eff('0x6f')][_0x0eff('0xc4')]({'attributes':['id','name',_0x0eff('0x4a')],'where':{'id':_0xd63175[_0x0eff('0xb7')]['ids']}});})[_0x0eff('0x2e')](function(_0x409adc){socket[_0x0eff('0xc6')](_0x0eff('0xc7'),{'id':Number(_0xd63175[_0x0eff('0xb1')]['id']),'tags':_0x409adc||[]});return{'id':Number(_0xd63175[_0x0eff('0xb1')]['id']),'tags':_0x409adc||[]};});}})[_0x0eff('0x2e')](respondWithResult(_0xb7568f,null))[_0x0eff('0xaf')](handleError(_0xb7568f,null));};exports[_0x0eff('0xc8')]=function(_0x587b01,_0x3f10a3,_0x23729b){return db[_0x0eff('0x39')][_0x0eff('0x60')]({'where':{'id':_0x587b01[_0x0eff('0xb1')]['id']}})[_0x0eff('0x2e')](handleEntityNotFound(_0x3f10a3,null))[_0x0eff('0x2e')](function(_0x403f9c){if(_0x403f9c){return _0x403f9c[_0x0eff('0xc8')](_0x587b01[_0x0eff('0x3f')][_0x0eff('0xbb')]);}})[_0x0eff('0x2e')](respondWithStatusCode(_0x3f10a3,null))[_0x0eff('0xaf')](handleError(_0x3f10a3,null));};exports['download']=function(_0x21e8f8,_0x5e8735){var _0x2ccabb=moment()[_0x0eff('0xc9')]()[_0x0eff('0x99')]();var _0x439676=path['join'](config['root'],_0x0eff('0xca'),_0x0eff('0xcb'),'tmp');var _0x413dd9=path[_0x0eff('0xcc')](config[_0x0eff('0xcd')],_0x0eff('0xca'),_0x0eff('0xcb'),_0x0eff('0xce'));var _0x43ea0f=path[_0x0eff('0xcc')](_0x439676,_0x2ccabb);var _0x5b27a7=util[_0x0eff('0xc2')](_0x0eff('0xcf'),_0x21e8f8[_0x0eff('0xb1')]['id'],_0x2ccabb);var _0x32351e=path[_0x0eff('0xcc')](_0x439676,_0x5b27a7);var _0x1463d7=[];_0x1463d7[_0x0eff('0x37')]({'model':db[_0x0eff('0xd0')],'as':_0x0eff('0xd0'),'raw':!![]});var _0x5b8ac1=[{'model':db['FaxMessage'],'as':'Messages','attributes':['id',_0x0eff('0xb7'),_0x0eff('0x78')],'include':_0x1463d7}];return db[_0x0eff('0x39')][_0x0eff('0x60')]({'where':{'id':_0x21e8f8[_0x0eff('0xb1')]['id']},'include':_0x5b8ac1})['then'](handleEntityNotFound(_0x5e8735,null))[_0x0eff('0x2e')](function(_0x84370c){if(_0x84370c&&_0x84370c[_0x0eff('0xd1')]){var _0x4574a0=_0x84370c[_0x0eff('0xd2')]({'plain':!![]});fs[_0x0eff('0xd3')](_0x43ea0f);for(var _0xc5ebcc=0x0;_0xc5ebcc<_0x4574a0['Messages'][_0x0eff('0x44')];_0xc5ebcc++){var _0x576c78=_0x4574a0[_0x0eff('0xd1')][_0xc5ebcc][_0x0eff('0xd0')];if(_0x576c78){var _0x351243=path['join'](_0x413dd9,_0x576c78[_0x0eff('0xd4')]);if(fs[_0x0eff('0xd5')](_0x351243)){fs[_0x0eff('0xd6')](_0x351243)['pipe'](fs['createWriteStream'](path[_0x0eff('0xcc')](_0x43ea0f,_0x576c78[_0x0eff('0xd4')])));}}}return BPromise[_0x0eff('0x8f')]()[_0x0eff('0x2e')](function(){return new BPromise(function(_0x8efaad,_0x55463f){zipdir(_0x43ea0f,{'saveTo':_0x32351e},function(_0xb63bf6,_0x75eecd){if(_0xb63bf6)return _0x55463f(_0xb63bf6);return _0x8efaad(_0x75eecd);});})[_0x0eff('0x2e')](function(){return new BPromise(function(_0x360bc,_0x2b6bcd){rimraf(_0x43ea0f,function(_0x58731d){if(_0x58731d)_0x2b6bcd(_0x58731d);return _0x360bc();});});})[_0x0eff('0x2e')](function(){return _0x5e8735[_0x0eff('0xd7')](_0x32351e,_0x5b27a7,function(_0x629db7){if(_0x629db7){console[_0x0eff('0xd8')](_0x0eff('0xd9'),_0x629db7);}else{fs[_0x0eff('0xda')](_0x32351e);}});});});}else{return _0x5e8735[_0x0eff('0x2f')](0xc8);}})[_0x0eff('0xaf')](handleError(_0x5e8735,null));};
\ No newline at end of file
index f46b173..40533ed 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1a69=['setMaxListeners','save','update','remove','getUsers','then','setDataValue','Users','findAll','emit','catch','hasOwnProperty','exports','events','../../mysqldb','FaxInteraction','FaxMessage'];(function(_0xa6cc5c,_0x239c99){var _0x44803d=function(_0x515b6e){while(--_0x515b6e){_0xa6cc5c['push'](_0xa6cc5c['shift']());}};_0x44803d(++_0x239c99);}(_0x1a69,0x172));var _0x91a6=function(_0x2eb189,_0x1e112b){_0x2eb189=_0x2eb189-0x0;var _0x1dafd1=_0x1a69[_0x2eb189];return _0x1dafd1;};'use strict';var EventEmitter=require(_0x91a6('0x0'));var FaxInteraction=require(_0x91a6('0x1'))['db'][_0x91a6('0x2')];var FaxMessage=require(_0x91a6('0x1'))['db'][_0x91a6('0x3')];var FaxInteractionEvents=new EventEmitter();FaxInteractionEvents[_0x91a6('0x4')](0x0);var events={'afterCreate':_0x91a6('0x5'),'afterUpdate':_0x91a6('0x6'),'afterDestroy':_0x91a6('0x7')};function emitEvent(_0x2ac39f){return function(_0x58408c,_0x4eb283,_0x2b800e){_0x58408c[_0x91a6('0x8')]({'attributes':['id'],'raw':!![]})[_0x91a6('0x9')](function(_0x598f6a){_0x58408c[_0x91a6('0xa')](_0x91a6('0xb'),_0x598f6a['map'](function(_0x2d441c){return{'id':_0x2d441c['id']};}));return FaxMessage[_0x91a6('0xc')]({'where':{'FaxInteractionId':_0x58408c['id'],'direction':'in','read':![]},'raw':!![]});})[_0x91a6('0x9')](function(_0x52f06e){_0x58408c[_0x91a6('0xa')]('unreadMessages',_0x52f06e['length']);FaxInteractionEvents[_0x91a6('0xd')](_0x2ac39f+':'+_0x58408c['id'],_0x58408c);FaxInteractionEvents[_0x91a6('0xd')](_0x2ac39f,_0x58408c);_0x2b800e(null);})[_0x91a6('0xe')](_0x2b800e(null));};}for(var e in events){if(events[_0x91a6('0xf')](e)){var event=events[e];FaxInteraction['hook'](e,emitEvent(event));}}module[_0x91a6('0x10')]=FaxInteractionEvents;
\ No newline at end of file
+var _0x3d6e=['hasOwnProperty','exports','events','../../mysqldb','FaxInteraction','FaxMessage','update','remove','getUsers','then','setDataValue','Users','map','findAll','length','emit','catch'];(function(_0x1d1a1c,_0xba0aad){var _0x36f72b=function(_0x2cbb7f){while(--_0x2cbb7f){_0x1d1a1c['push'](_0x1d1a1c['shift']());}};_0x36f72b(++_0xba0aad);}(_0x3d6e,0x1ab));var _0xe3d6=function(_0x1ae5ab,_0xc5d441){_0x1ae5ab=_0x1ae5ab-0x0;var _0x1ce001=_0x3d6e[_0x1ae5ab];return _0x1ce001;};'use strict';var EventEmitter=require(_0xe3d6('0x0'));var FaxInteraction=require(_0xe3d6('0x1'))['db'][_0xe3d6('0x2')];var FaxMessage=require(_0xe3d6('0x1'))['db'][_0xe3d6('0x3')];var FaxInteractionEvents=new EventEmitter();FaxInteractionEvents['setMaxListeners'](0x0);var events={'afterCreate':'save','afterUpdate':_0xe3d6('0x4'),'afterDestroy':_0xe3d6('0x5')};function emitEvent(_0x44fb12){return function(_0xc4ff4b,_0x31570a,_0xface8e){_0xc4ff4b[_0xe3d6('0x6')]({'attributes':['id'],'raw':!![]})[_0xe3d6('0x7')](function(_0x549741){_0xc4ff4b[_0xe3d6('0x8')](_0xe3d6('0x9'),_0x549741[_0xe3d6('0xa')](function(_0x531ea7){return{'id':_0x531ea7['id']};}));return FaxMessage[_0xe3d6('0xb')]({'where':{'FaxInteractionId':_0xc4ff4b['id'],'direction':'in','read':![]},'raw':!![]});})['then'](function(_0x5c532b){_0xc4ff4b[_0xe3d6('0x8')]('unreadMessages',_0x5c532b[_0xe3d6('0xc')]);FaxInteractionEvents[_0xe3d6('0xd')](_0x44fb12+':'+_0xc4ff4b['id'],_0xc4ff4b);FaxInteractionEvents['emit'](_0x44fb12,_0xc4ff4b);_0xface8e(null);})[_0xe3d6('0xe')](_0xface8e(null));};}for(var e in events){if(events[_0xe3d6('0xf')](e)){var event=events[e];FaxInteraction['hook'](e,emitEvent(event));}}module[_0xe3d6('0x10')]=FaxInteractionEvents;
\ No newline at end of file
index 33e2b34..11e6abe 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0309=['fax_interactions','changed','closed','closedAt','format','YYYY-MM-DD\x20HH:mm:ss','lodash','util','../../config/logger','api','moment','request-promise','path','./faxInteraction.attributes','define'];(function(_0x311917,_0x5ac8ff){var _0x389b2f=function(_0xcbf456){while(--_0xcbf456){_0x311917['push'](_0x311917['shift']());}};_0x389b2f(++_0x5ac8ff);}(_0x0309,0x8d));var _0x9030=function(_0x400d36,_0x33916e){_0x400d36=_0x400d36-0x0;var _0x58dcf7=_0x0309[_0x400d36];return _0x58dcf7;};'use strict';var _=require(_0x9030('0x0'));var util=require(_0x9030('0x1'));var logger=require(_0x9030('0x2'))(_0x9030('0x3'));var moment=require(_0x9030('0x4'));var BPromise=require('bluebird');var rp=require(_0x9030('0x5'));var fs=require('fs');var path=require(_0x9030('0x6'));var rimraf=require('rimraf');var config=require('../../config/environment');var attributes=require(_0x9030('0x7'));module['exports']=function(_0x56913f,_0x58c3db){return _0x56913f[_0x9030('0x8')]('FaxInteraction',attributes,{'tableName':_0x9030('0x9'),'paranoid':![],'indexes':[],'timestamps':!![],'hooks':{'beforeUpdate':function(_0x16cfc4,_0x335d4a,_0x2eda72){if(_0x16cfc4[_0x9030('0xa')](_0x9030('0xb'))){_0x16cfc4[_0x9030('0xc')]=moment()[_0x9030('0xd')](_0x9030('0xe'));}_0x2eda72(null,_0x16cfc4);}}});};
\ No newline at end of file
+var _0xfead=['format','YYYY-MM-DD\x20HH:mm:ss','lodash','util','../../config/logger','moment','request-promise','path','rimraf','./faxInteraction.attributes','fax_interactions','changed'];(function(_0x3054be,_0x1bdc8b){var _0x3df150=function(_0x56cfbf){while(--_0x56cfbf){_0x3054be['push'](_0x3054be['shift']());}};_0x3df150(++_0x1bdc8b);}(_0xfead,0x152));var _0xdfea=function(_0x57ba2a,_0x1c911c){_0x57ba2a=_0x57ba2a-0x0;var _0x1b1fcf=_0xfead[_0x57ba2a];return _0x1b1fcf;};'use strict';var _=require(_0xdfea('0x0'));var util=require(_0xdfea('0x1'));var logger=require(_0xdfea('0x2'))('api');var moment=require(_0xdfea('0x3'));var BPromise=require('bluebird');var rp=require(_0xdfea('0x4'));var fs=require('fs');var path=require(_0xdfea('0x5'));var rimraf=require(_0xdfea('0x6'));var config=require('../../config/environment');var attributes=require(_0xdfea('0x7'));module['exports']=function(_0x39d6d4,_0x1d554c){return _0x39d6d4['define']('FaxInteraction',attributes,{'tableName':_0xdfea('0x8'),'paranoid':![],'indexes':[],'timestamps':!![],'hooks':{'beforeUpdate':function(_0x522b59,_0x264e16,_0x3fe3f8){if(_0x522b59[_0xdfea('0x9')]('closed')){_0x522b59['closedAt']=moment()[_0xdfea('0xa')](_0xdfea('0xb'));}_0x3fe3f8(null,_0x522b59);}}});};
\ No newline at end of file
index eee4ee8..88c76e9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd439=['AddTags','lodash','util','moment','bluebird','randomstring','ioredis','../../config/logger','rpc','../../config/environment','jayson/promise','client','redis','defaults','socket.io-emitter','./faxInteraction.socket','register','request','then','info','FaxInteraction,\x20%s,\x20%s','request\x20sent','debug','FaxInteraction,\x20%s,\x20%s,\x20%s','error','code','message','result','UpdateFaxInteraction','body','options','raw','stringify','catch','FaxInteraction','find','where','ids','omit','spread'];(function(_0xbaf9bf,_0x5d96b2){var _0x2987ea=function(_0x23dd10){while(--_0x23dd10){_0xbaf9bf['push'](_0xbaf9bf['shift']());}};_0x2987ea(++_0x5d96b2);}(_0xd439,0x141));var _0x9d43=function(_0x4d2699,_0x1c6504){_0x4d2699=_0x4d2699-0x0;var _0x137621=_0xd439[_0x4d2699];return _0x137621;};'use strict';var _=require(_0x9d43('0x0'));var util=require(_0x9d43('0x1'));var moment=require(_0x9d43('0x2'));var BPromise=require(_0x9d43('0x3'));var rs=require(_0x9d43('0x4'));var fs=require('fs');var Redis=require(_0x9d43('0x5'));var db=require('../../mysqldb')['db'];var utils=require('../../config/utils');var logger=require(_0x9d43('0x6'))(_0x9d43('0x7'));var config=require(_0x9d43('0x8'));var jayson=require(_0x9d43('0x9'));var client=jayson[_0x9d43('0xa')]['http']({'port':0x232a});config[_0x9d43('0xb')]=_[_0x9d43('0xc')](config[_0x9d43('0xb')],{'host':'localhost','port':0x18eb});var socket=require(_0x9d43('0xd'))(new Redis(config[_0x9d43('0xb')]));require(_0x9d43('0xe'))[_0x9d43('0xf')](socket);function respondWithRpcPromise(_0x2d15b2,_0x1c8581,_0x389acb){return new BPromise(function(_0x5b5980,_0x5a9cde){return client[_0x9d43('0x10')](_0x2d15b2,_0x389acb)[_0x9d43('0x11')](function(_0x10d160){logger[_0x9d43('0x12')](_0x9d43('0x13'),_0x1c8581,_0x9d43('0x14'));logger[_0x9d43('0x15')](_0x9d43('0x16'),_0x1c8581,_0x9d43('0x14'),JSON['stringify'](_0x10d160));if(_0x10d160[_0x9d43('0x17')]){if(_0x10d160[_0x9d43('0x17')][_0x9d43('0x18')]===0x1f4){logger[_0x9d43('0x17')]('FaxInteraction,\x20%s,\x20%s',_0x1c8581,_0x10d160[_0x9d43('0x17')][_0x9d43('0x19')]);return _0x5a9cde(_0x10d160[_0x9d43('0x17')][_0x9d43('0x19')]);}logger[_0x9d43('0x17')]('FaxInteraction,\x20%s,\x20%s',_0x1c8581,_0x10d160['error'][_0x9d43('0x19')]);return _0x5b5980(_0x10d160[_0x9d43('0x17')][_0x9d43('0x19')]);}else{logger[_0x9d43('0x12')](_0x9d43('0x13'),_0x1c8581,_0x9d43('0x14'));_0x5b5980(_0x10d160[_0x9d43('0x1a')]['message']);}})['catch'](function(_0x2d9b99){logger[_0x9d43('0x17')]('FaxInteraction,\x20%s,\x20%s',_0x1c8581,_0x2d9b99);_0x5a9cde(_0x2d9b99);});});}exports[_0x9d43('0x1b')]=function(_0x169ba1){var _0x1138e8=this;return new Promise(function(_0x5bc0fc,_0x5eb6f4){return db['FaxInteraction']['update'](_0x169ba1[_0x9d43('0x1c')],{'raw':_0x169ba1[_0x9d43('0x1d')]?_0x169ba1[_0x9d43('0x1d')][_0x9d43('0x1e')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x169ba1[_0x9d43('0x1d')]?_0x169ba1[_0x9d43('0x1d')]['where']||null:null,'attributes':_0x169ba1[_0x9d43('0x1d')]?_0x169ba1[_0x9d43('0x1d')]['attributes']||null:null,'limit':_0x169ba1[_0x9d43('0x1d')]?_0x169ba1[_0x9d43('0x1d')]['limit']||null:null})['then'](function(_0x296210){logger[_0x9d43('0x12')]('UpdateFaxInteraction',_0x169ba1);logger[_0x9d43('0x15')](_0x9d43('0x1b'),_0x169ba1,JSON[_0x9d43('0x1f')](_0x296210));_0x5bc0fc(_0x296210);})[_0x9d43('0x20')](function(_0x3072aa){logger[_0x9d43('0x17')](_0x9d43('0x1b'),_0x3072aa[_0x9d43('0x19')],_0x169ba1);_0x5eb6f4(_0x1138e8['error'](0x1f4,_0x3072aa['message']));});});};exports['AddTagsToFaxInteraction']=function(_0xbf558d){return new Promise(function(_0x1685b7,_0x36d46f){return db[_0x9d43('0x21')][_0x9d43('0x22')]({'where':_0xbf558d[_0x9d43('0x1d')]?_0xbf558d[_0x9d43('0x1d')][_0x9d43('0x23')]||null:null})['then'](function(_0x5388e8){if(_0x5388e8){return _0x5388e8['addTags'](_0xbf558d[_0x9d43('0x1c')][_0x9d43('0x24')],_[_0x9d43('0x25')](_0xbf558d['body'],[_0x9d43('0x24'),'id'])||{});}})[_0x9d43('0x26')](function(_0x379830){logger[_0x9d43('0x12')](_0x9d43('0x27'),_0xbf558d);logger[_0x9d43('0x15')](_0x9d43('0x27'),_0xbf558d,JSON['stringify'](_0x379830));_0x1685b7(_0x379830);})[_0x9d43('0x20')](function(_0x19055e){logger[_0x9d43('0x17')](_0x9d43('0x27'),_0x19055e[_0x9d43('0x19')],_0xbf558d);_0x36d46f(_this['error'](0x1f4,_0x19055e['message']));});});};
\ No newline at end of file
+var _0x9699=['spread','AddTags','lodash','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','jayson/promise','client','http','redis','socket.io-emitter','./faxInteraction.socket','register','request','then','info','FaxInteraction,\x20%s,\x20%s','request\x20sent','debug','FaxInteraction,\x20%s,\x20%s,\x20%s','stringify','error','code','message','catch','FaxInteraction','options','raw','where','attributes','limit','UpdateFaxInteraction','AddTagsToFaxInteraction','addTags','ids','body'];(function(_0x2dafbe,_0x5d04de){var _0x58a45a=function(_0x50ac96){while(--_0x50ac96){_0x2dafbe['push'](_0x2dafbe['shift']());}};_0x58a45a(++_0x5d04de);}(_0x9699,0x19c));var _0x9969=function(_0x4d4ada,_0x5eeee3){_0x4d4ada=_0x4d4ada-0x0;var _0x2428da=_0x9699[_0x4d4ada];return _0x2428da;};'use strict';var _=require(_0x9969('0x0'));var util=require('util');var moment=require(_0x9969('0x1'));var BPromise=require(_0x9969('0x2'));var rs=require(_0x9969('0x3'));var fs=require('fs');var Redis=require(_0x9969('0x4'));var db=require(_0x9969('0x5'))['db'];var utils=require(_0x9969('0x6'));var logger=require(_0x9969('0x7'))(_0x9969('0x8'));var config=require('../../config/environment');var jayson=require(_0x9969('0x9'));var client=jayson[_0x9969('0xa')][_0x9969('0xb')]({'port':0x232a});config[_0x9969('0xc')]=_['defaults'](config[_0x9969('0xc')],{'host':'localhost','port':0x18eb});var socket=require(_0x9969('0xd'))(new Redis(config[_0x9969('0xc')]));require(_0x9969('0xe'))[_0x9969('0xf')](socket);function respondWithRpcPromise(_0x103d22,_0x8c796,_0x48d234){return new BPromise(function(_0x25701,_0x317cc2){return client[_0x9969('0x10')](_0x103d22,_0x48d234)[_0x9969('0x11')](function(_0x4503e7){logger[_0x9969('0x12')](_0x9969('0x13'),_0x8c796,_0x9969('0x14'));logger[_0x9969('0x15')](_0x9969('0x16'),_0x8c796,_0x9969('0x14'),JSON[_0x9969('0x17')](_0x4503e7));if(_0x4503e7[_0x9969('0x18')]){if(_0x4503e7['error'][_0x9969('0x19')]===0x1f4){logger[_0x9969('0x18')](_0x9969('0x13'),_0x8c796,_0x4503e7[_0x9969('0x18')][_0x9969('0x1a')]);return _0x317cc2(_0x4503e7[_0x9969('0x18')][_0x9969('0x1a')]);}logger[_0x9969('0x18')](_0x9969('0x13'),_0x8c796,_0x4503e7[_0x9969('0x18')][_0x9969('0x1a')]);return _0x25701(_0x4503e7[_0x9969('0x18')][_0x9969('0x1a')]);}else{logger['info'](_0x9969('0x13'),_0x8c796,_0x9969('0x14'));_0x25701(_0x4503e7['result'][_0x9969('0x1a')]);}})[_0x9969('0x1b')](function(_0x4711dc){logger[_0x9969('0x18')]('FaxInteraction,\x20%s,\x20%s',_0x8c796,_0x4711dc);_0x317cc2(_0x4711dc);});});}exports['UpdateFaxInteraction']=function(_0x233893){var _0x4aaf62=this;return new Promise(function(_0x4ac917,_0x3b5165){return db[_0x9969('0x1c')]['update'](_0x233893['body'],{'raw':_0x233893[_0x9969('0x1d')]?_0x233893[_0x9969('0x1d')][_0x9969('0x1e')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x233893[_0x9969('0x1d')]?_0x233893['options'][_0x9969('0x1f')]||null:null,'attributes':_0x233893['options']?_0x233893[_0x9969('0x1d')][_0x9969('0x20')]||null:null,'limit':_0x233893[_0x9969('0x1d')]?_0x233893[_0x9969('0x1d')][_0x9969('0x21')]||null:null})[_0x9969('0x11')](function(_0x5e2dc0){logger[_0x9969('0x12')]('UpdateFaxInteraction',_0x233893);logger[_0x9969('0x15')](_0x9969('0x22'),_0x233893,JSON[_0x9969('0x17')](_0x5e2dc0));_0x4ac917(_0x5e2dc0);})[_0x9969('0x1b')](function(_0x295841){logger['error'](_0x9969('0x22'),_0x295841[_0x9969('0x1a')],_0x233893);_0x3b5165(_0x4aaf62[_0x9969('0x18')](0x1f4,_0x295841[_0x9969('0x1a')]));});});};exports[_0x9969('0x23')]=function(_0x1bdbfe){return new Promise(function(_0x2c6e62,_0x320b10){return db['FaxInteraction']['find']({'where':_0x1bdbfe['options']?_0x1bdbfe[_0x9969('0x1d')][_0x9969('0x1f')]||null:null})[_0x9969('0x11')](function(_0x350811){if(_0x350811){return _0x350811[_0x9969('0x24')](_0x1bdbfe['body'][_0x9969('0x25')],_['omit'](_0x1bdbfe[_0x9969('0x26')],['ids','id'])||{});}})[_0x9969('0x27')](function(_0x56a2c8){logger[_0x9969('0x12')](_0x9969('0x28'),_0x1bdbfe);logger[_0x9969('0x15')]('AddTags',_0x1bdbfe,JSON['stringify'](_0x56a2c8));_0x2c6e62(_0x56a2c8);})['catch'](function(_0x550462){logger[_0x9969('0x18')](_0x9969('0x28'),_0x550462[_0x9969('0x1a')],_0x1bdbfe);_0x320b10(_this[_0x9969('0x18')](0x1f4,_0x550462['message']));});});};
\ No newline at end of file
index 3e802b4..73c8c94 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf9dc=['./faxInteraction.events','save','update','register','length','faxInteraction:'];(function(_0x49ca18,_0x5e6d05){var _0x145d54=function(_0x30b9be){while(--_0x30b9be){_0x49ca18['push'](_0x49ca18['shift']());}};_0x145d54(++_0x5e6d05);}(_0xf9dc,0x1da));var _0xcf9d=function(_0x4c586e,_0x2571ae){_0x4c586e=_0x4c586e-0x0;var _0x40d9a5=_0xf9dc[_0x4c586e];return _0x40d9a5;};'use strict';var FaxInteractionEvents=require(_0xcf9d('0x0'));var events=[_0xcf9d('0x1'),'remove',_0xcf9d('0x2')];function createListener(_0x57ba3f,_0x12ab8c){return function(_0x35e34c){_0x12ab8c['emit'](_0x57ba3f,_0x35e34c);};}function removeListener(_0xd46e81,_0x386e22){return function(){FaxInteractionEvents['removeListener'](_0xd46e81,_0x386e22);};}exports[_0xcf9d('0x3')]=function(_0x2e9cf2){for(var _0xb9bd8e=0x0,_0x2e3d45=events[_0xcf9d('0x4')];_0xb9bd8e<_0x2e3d45;_0xb9bd8e++){var _0x581a03=events[_0xb9bd8e];var _0x1af770=createListener(_0xcf9d('0x5')+_0x581a03,_0x2e9cf2);FaxInteractionEvents['on'](_0x581a03,_0x1af770);}};
\ No newline at end of file
+var _0xf9b4=['remove','update','emit','removeListener','register','faxInteraction:','./faxInteraction.events','save'];(function(_0x338cc9,_0x412d42){var _0x277ee9=function(_0x3d2b2c){while(--_0x3d2b2c){_0x338cc9['push'](_0x338cc9['shift']());}};_0x277ee9(++_0x412d42);}(_0xf9b4,0x176));var _0x4f9b=function(_0x5e2f7b,_0x226498){_0x5e2f7b=_0x5e2f7b-0x0;var _0x3c386e=_0xf9b4[_0x5e2f7b];return _0x3c386e;};'use strict';var FaxInteractionEvents=require(_0x4f9b('0x0'));var events=[_0x4f9b('0x1'),_0x4f9b('0x2'),_0x4f9b('0x3')];function createListener(_0xfe7ecb,_0x401ca8){return function(_0x528fa1){_0x401ca8[_0x4f9b('0x4')](_0xfe7ecb,_0x528fa1);};}function removeListener(_0x420eed,_0x301d27){return function(){FaxInteractionEvents[_0x4f9b('0x5')](_0x420eed,_0x301d27);};}exports[_0x4f9b('0x6')]=function(_0x401a67){for(var _0x2e3498=0x0,_0x4589d2=events['length'];_0x2e3498<_0x4589d2;_0x2e3498++){var _0x1978e4=events[_0x2e3498];var _0x27413e=createListener(_0x4f9b('0x7')+_0x1978e4,_0x401a67);FaxInteractionEvents['on'](_0x1978e4,_0x27413e);}};
\ No newline at end of file
index 23a494d..7a80e5d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1b63=['../../components/auth/service','../../components/interaction/service','get','describe','/:id/messages','isAuthenticated','download','post','addMessage','tracked','fax','faxinteraction:addtags','addTags','/:id','faxinteraction:update','update','/:id/tags','removeTags','exports','util','path','connect-timeout','express','Router','fs-extra'];(function(_0x4a3898,_0x4c9853){var _0x25ceb0=function(_0x528b6d){while(--_0x528b6d){_0x4a3898['push'](_0x4a3898['shift']());}};_0x25ceb0(++_0x4c9853);}(_0x1b63,0x90));var _0x31b6=function(_0x47e93d,_0x26bbdd){_0x47e93d=_0x47e93d-0x0;var _0xe86c46=_0x1b63[_0x47e93d];return _0xe86c46;};'use strict';var multer=require('multer');var util=require(_0x31b6('0x0'));var path=require(_0x31b6('0x1'));var timeout=require(_0x31b6('0x2'));var express=require(_0x31b6('0x3'));var router=express[_0x31b6('0x4')]();var fs_extra=require(_0x31b6('0x5'));var auth=require(_0x31b6('0x6'));var interaction=require(_0x31b6('0x7'));var config=require('../../config/environment');var controller=require('./faxInteraction.controller');router[_0x31b6('0x8')]('/',auth['isAuthenticated'](),controller['index']);router[_0x31b6('0x8')]('/describe',auth['isAuthenticated'](),controller[_0x31b6('0x9')]);router[_0x31b6('0x8')]('/:id',auth['isAuthenticated'](),controller['show']);router[_0x31b6('0x8')](_0x31b6('0xa'),auth[_0x31b6('0xb')](),controller['getMessages']);router['get']('/:id/download',auth[_0x31b6('0xb')](),controller[_0x31b6('0xc')]);router[_0x31b6('0xd')]('/',auth['isAuthenticated'](),controller['create']);router[_0x31b6('0xd')](_0x31b6('0xa'),auth[_0x31b6('0xb')](),controller[_0x31b6('0xe')]);router[_0x31b6('0xd')]('/:id/tags',auth[_0x31b6('0xb')](),interaction[_0x31b6('0xf')](_0x31b6('0x10'),_0x31b6('0x11')),controller[_0x31b6('0x12')]);router['put'](_0x31b6('0x13'),auth[_0x31b6('0xb')](),interaction[_0x31b6('0xf')](_0x31b6('0x10'),_0x31b6('0x14')),controller[_0x31b6('0x15')]);router['delete'](_0x31b6('0x13'),auth[_0x31b6('0xb')](),interaction[_0x31b6('0xf')](_0x31b6('0x10'),'faxinteraction:destroy'),controller['destroy']);router['delete'](_0x31b6('0x16'),auth['isAuthenticated'](),controller[_0x31b6('0x17')]);module[_0x31b6('0x18')]=router;
\ No newline at end of file
+var _0x4eb6=['/:id/messages','/:id/tags','tracked','fax','faxinteraction:addtags','addTags','put','faxinteraction:update','update','delete','faxinteraction:destroy','destroy','removeTags','exports','multer','util','connect-timeout','express','fs-extra','../../components/auth/service','../../components/interaction/service','./faxInteraction.controller','get','/describe','describe','/:id','isAuthenticated','show','getMessages','/:id/download','download','post','create'];(function(_0x4287b6,_0x2d1db7){var _0x5a4f7e=function(_0x4da8cf){while(--_0x4da8cf){_0x4287b6['push'](_0x4287b6['shift']());}};_0x5a4f7e(++_0x2d1db7);}(_0x4eb6,0xf5));var _0x64eb=function(_0x536c58,_0xf1457e){_0x536c58=_0x536c58-0x0;var _0x54e418=_0x4eb6[_0x536c58];return _0x54e418;};'use strict';var multer=require(_0x64eb('0x0'));var util=require(_0x64eb('0x1'));var path=require('path');var timeout=require(_0x64eb('0x2'));var express=require(_0x64eb('0x3'));var router=express['Router']();var fs_extra=require(_0x64eb('0x4'));var auth=require(_0x64eb('0x5'));var interaction=require(_0x64eb('0x6'));var config=require('../../config/environment');var controller=require(_0x64eb('0x7'));router['get']('/',auth['isAuthenticated'](),controller['index']);router[_0x64eb('0x8')](_0x64eb('0x9'),auth['isAuthenticated'](),controller[_0x64eb('0xa')]);router[_0x64eb('0x8')](_0x64eb('0xb'),auth[_0x64eb('0xc')](),controller[_0x64eb('0xd')]);router['get']('/:id/messages',auth[_0x64eb('0xc')](),controller[_0x64eb('0xe')]);router['get'](_0x64eb('0xf'),auth['isAuthenticated'](),controller[_0x64eb('0x10')]);router[_0x64eb('0x11')]('/',auth[_0x64eb('0xc')](),controller[_0x64eb('0x12')]);router[_0x64eb('0x11')](_0x64eb('0x13'),auth['isAuthenticated'](),controller['addMessage']);router['post'](_0x64eb('0x14'),auth[_0x64eb('0xc')](),interaction[_0x64eb('0x15')](_0x64eb('0x16'),_0x64eb('0x17')),controller[_0x64eb('0x18')]);router[_0x64eb('0x19')](_0x64eb('0xb'),auth[_0x64eb('0xc')](),interaction[_0x64eb('0x15')](_0x64eb('0x16'),_0x64eb('0x1a')),controller[_0x64eb('0x1b')]);router[_0x64eb('0x1c')](_0x64eb('0xb'),auth[_0x64eb('0xc')](),interaction[_0x64eb('0x15')](_0x64eb('0x16'),_0x64eb('0x1d')),controller[_0x64eb('0x1e')]);router[_0x64eb('0x1c')](_0x64eb('0x14'),auth['isAuthenticated'](),controller[_0x64eb('0x1f')]);module[_0x64eb('0x20')]=router;
\ No newline at end of file
index 96ea910..ad6d62a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4ab0=['BOOLEAN','ENUM','DATE','exports','TEXT','medium'];(function(_0x52f89a,_0x524ef3){var _0x468c31=function(_0x24491c){while(--_0x24491c){_0x52f89a['push'](_0x52f89a['shift']());}};_0x468c31(++_0x524ef3);}(_0x4ab0,0xd5));var _0x04ab=function(_0xdb21b7,_0x1f1400){_0xdb21b7=_0xdb21b7-0x0;var _0x533a84=_0x4ab0[_0xdb21b7];return _0x533a84;};'use strict';var Sequelize=require('sequelize');module[_0x04ab('0x0')]={'body':{'type':Sequelize[_0x04ab('0x1')](_0x04ab('0x2')),'allowNull':![]},'read':{'type':Sequelize[_0x04ab('0x3')],'defaultValue':![]},'direction':{'type':Sequelize[_0x04ab('0x4')]('in','out'),'defaultValue':'out','allowNull':![]},'failMessage':{'type':Sequelize[_0x04ab('0x1')],'defaultValue':null},'readAt':{'type':Sequelize[_0x04ab('0x5')]}};
\ No newline at end of file
+var _0x9879=['out','DATE','sequelize','exports','TEXT','BOOLEAN'];(function(_0x321bb2,_0x202794){var _0x9c12ed=function(_0x263dd3){while(--_0x263dd3){_0x321bb2['push'](_0x321bb2['shift']());}};_0x9c12ed(++_0x202794);}(_0x9879,0x98));var _0x9987=function(_0x56b7a6,_0x2522e5){_0x56b7a6=_0x56b7a6-0x0;var _0x76753f=_0x9879[_0x56b7a6];return _0x76753f;};'use strict';var Sequelize=require(_0x9987('0x0'));module[_0x9987('0x1')]={'body':{'type':Sequelize[_0x9987('0x2')]('medium'),'allowNull':![]},'read':{'type':Sequelize[_0x9987('0x3')],'defaultValue':![]},'direction':{'type':Sequelize['ENUM']('in',_0x9987('0x4')),'defaultValue':_0x9987('0x4'),'allowNull':![]},'failMessage':{'type':Sequelize[_0x9987('0x2')],'defaultValue':null},'readAt':{'type':Sequelize[_0x9987('0x5')]}};
\ No newline at end of file
index ae0595a..b8e5bfa 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x99ca=['fullname','email','internal','manual','interface','SIP/%s','channel','event','accept','get','[FAXMESSAGE:REJECT]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s','sequelize','motionChannel','EventManager','rejectmessage','create','CmContact','findOne','ContactId','isNil','Attachment','AttachmentId','SendFax','basename','join','root','server','files','attachments','download','eml-format','rimraf','zip-dir','request-promise','moment','bluebird','mustache','path','sox','lodash','desk.js','querystring','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/license/util','../../mysqldb','redis','defaults','socket.io-emitter','./faxMessage.socket','jayson/promise','client','http','request','then','info','FaxMessage,\x20%s,\x20%s','request\x20sent','FaxMessage,\x20%s,\x20%s,\x20%s','stringify','error','message','catch','status','end','json','offset','undefined','limit','count','Content-Range','apply','reject','update','destroy','stack','name','index','map','FaxMessage','fieldName','type','key','query','keys','filters','model','attributes','intersection','nolimit','order','sort','where','VIRTUAL','filter','merge','options','include','findAll','fields','length','includeAll','find','body','params','describe','fax-interactions','fax','readAt','format','UserId','user','FaxInteraction','FaxInteractionId','read1stAt','YYYY-MM-DD\x20HH:mm:ss','interaction','role','null','AcceptMessage','acceptMessage','Sequelize','QueryTypes','SELECT','contact','User','agent'];(function(_0x4195d6,_0x4dd2f7){var _0x442173=function(_0x1736c4){while(--_0x1736c4){_0x4195d6['push'](_0x4195d6['shift']());}};_0x442173(++_0x4dd2f7);}(_0x99ca,0x124));var _0xa99c=function(_0x3b8417,_0x1a40b7){_0x3b8417=_0x3b8417-0x0;var _0x55f98d=_0x99ca[_0x3b8417];return _0x55f98d;};'use strict';var emlformat=require(_0xa99c('0x0'));var rimraf=require(_0xa99c('0x1'));var zipdir=require(_0xa99c('0x2'));var jsonpatch=require('fast-json-patch');var rp=require(_0xa99c('0x3'));var moment=require(_0xa99c('0x4'));var BPromise=require(_0xa99c('0x5'));var Mustache=require(_0xa99c('0x6'));var util=require('util');var path=require(_0xa99c('0x7'));var sox=require(_0xa99c('0x8'));var csv=require('to-csv');var ejs=require('ejs');var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0xa99c('0x9'));var squel=require('squel');var crypto=require('crypto');var jsforce=require('jsforce');var deskjs=require(_0xa99c('0xa'));var toCsv=require('to-csv');var querystring=require(_0xa99c('0xb'));var Papa=require('papaparse');var Redis=require(_0xa99c('0xc'));var authService=require(_0xa99c('0xd'));var qs=require('../../components/parsers/qs');var as=require(_0xa99c('0xe'));var hardwareService=require(_0xa99c('0xf'));var logger=require(_0xa99c('0x10'))(_0xa99c('0x11'));var utils=require('../../config/utils');var config=require('../../config/environment');var licenseUtil=require(_0xa99c('0x12'));var db=require(_0xa99c('0x13'))['db'];config[_0xa99c('0x14')]=_[_0xa99c('0x15')](config[_0xa99c('0x14')],{'host':'localhost','port':0x18eb});var socket=require(_0xa99c('0x16'))(new Redis(config[_0xa99c('0x14')]));require(_0xa99c('0x17'))['register'](socket);var jayson=require(_0xa99c('0x18'));var client=jayson[_0xa99c('0x19')][_0xa99c('0x1a')]({'port':0x232c});var client9002=jayson['client']['http']({'port':0x232a});function respondWithRpcPromise(_0x3fad92,_0xacdc24,_0x41a498,_0x376ffe){return new BPromise(function(_0x3fba96,_0x451450){var _0x2087ec=_0x376ffe||client;return _0x2087ec[_0xa99c('0x1b')](_0x3fad92,_0x41a498)[_0xa99c('0x1c')](function(_0x5c95ef){logger[_0xa99c('0x1d')](_0xa99c('0x1e'),_0xacdc24,_0xa99c('0x1f'));logger['debug'](_0xa99c('0x20'),_0xacdc24,_0xa99c('0x1f'),JSON[_0xa99c('0x21')](_0x5c95ef));if(_0x5c95ef[_0xa99c('0x22')]){if(_0x5c95ef[_0xa99c('0x22')]['code']===0x1f4){logger[_0xa99c('0x22')](_0xa99c('0x1e'),_0xacdc24,_0x5c95ef[_0xa99c('0x22')]['message']);return _0x451450(_0x5c95ef[_0xa99c('0x22')][_0xa99c('0x23')]);}logger[_0xa99c('0x22')](_0xa99c('0x1e'),_0xacdc24,_0x5c95ef[_0xa99c('0x22')][_0xa99c('0x23')]);return _0x3fba96(_0x5c95ef[_0xa99c('0x22')][_0xa99c('0x23')]);}else{logger[_0xa99c('0x1d')](_0xa99c('0x1e'),_0xacdc24,_0xa99c('0x1f'));_0x3fba96(_0x5c95ef['result']['message']);}})[_0xa99c('0x24')](function(_0x4ee766){logger[_0xa99c('0x22')](_0xa99c('0x1e'),_0xacdc24,_0x4ee766);_0x451450(_0x4ee766);});});}function respondWithStatusCode(_0xbb5c8,_0x461018){_0x461018=_0x461018||0xcc;return function(_0x4e19c8){if(_0x4e19c8){return _0xbb5c8['sendStatus'](_0x461018);}return _0xbb5c8[_0xa99c('0x25')](_0x461018)[_0xa99c('0x26')]();};}function respondWithResult(_0x5e871d,_0x31b16b){_0x31b16b=_0x31b16b||0xc8;return function(_0x208f89){if(_0x208f89){return _0x5e871d['status'](_0x31b16b)[_0xa99c('0x27')](_0x208f89);}};}function respondWithFilteredResult(_0x5bb48f,_0x1792fa){return function(_0x132279){if(_0x132279){var _0x65fc7=typeof _0x1792fa[_0xa99c('0x28')]===_0xa99c('0x29')&&typeof _0x1792fa[_0xa99c('0x2a')]===_0xa99c('0x29');var _0x4a5c99=_0x132279[_0xa99c('0x2b')];var _0x46a478=_0x65fc7?0x0:_0x1792fa[_0xa99c('0x28')];var _0x2447d9=_0x65fc7?_0x132279[_0xa99c('0x2b')]:_0x1792fa[_0xa99c('0x28')]+_0x1792fa[_0xa99c('0x2a')];var _0x13ebce;if(_0x2447d9>=_0x4a5c99){_0x2447d9=_0x4a5c99;_0x13ebce=0xc8;}else{_0x13ebce=0xce;}_0x5bb48f['status'](_0x13ebce);return _0x5bb48f['set'](_0xa99c('0x2c'),_0x46a478+'-'+_0x2447d9+'/'+_0x4a5c99)[_0xa99c('0x27')](_0x132279);}return null;};}function patchUpdates(_0x5352d4){return function(_0x4a727a){try{jsonpatch[_0xa99c('0x2d')](_0x4a727a,_0x5352d4,!![]);}catch(_0x5cf808){return BPromise[_0xa99c('0x2e')](_0x5cf808);}return _0x4a727a['save']();};}function saveUpdates(_0x53f527,_0x48aaa4){return function(_0xb82054){if(_0xb82054){return _0xb82054[_0xa99c('0x2f')](_0x53f527)['then'](function(_0xdbb157){return _0xdbb157;});}return null;};}function removeEntity(_0x508491,_0x371118){return function(_0x5d8f08){if(_0x5d8f08){return _0x5d8f08[_0xa99c('0x30')]()[_0xa99c('0x1c')](function(){_0x508491[_0xa99c('0x25')](0xcc)[_0xa99c('0x26')]();});}};}function handleEntityNotFound(_0x224667,_0x7d7fdf){return function(_0x42481b){if(!_0x42481b){_0x224667['sendStatus'](0x194);}return _0x42481b;};}function handleError(_0xa4f791,_0xf09c56){_0xf09c56=_0xf09c56||0x1f4;return function(_0x2724a3){logger[_0xa99c('0x22')](_0x2724a3[_0xa99c('0x31')]);if(_0x2724a3[_0xa99c('0x32')]){delete _0x2724a3[_0xa99c('0x32')];}_0xa4f791['status'](_0xf09c56)['send'](_0x2724a3);};}exports[_0xa99c('0x33')]=function(_0x1cfcae,_0x1d3dba){var _0x4e0eed={},_0x4589cf={},_0x26b9ee={'count':0x0,'rows':[]};var _0x3a4a34=_[_0xa99c('0x34')](db[_0xa99c('0x35')]['rawAttributes'],function(_0x390499){return{'name':_0x390499[_0xa99c('0x36')],'type':_0x390499[_0xa99c('0x37')][_0xa99c('0x38')]};});_0x4589cf['model']=_[_0xa99c('0x34')](_0x3a4a34,_0xa99c('0x32'));_0x4589cf[_0xa99c('0x39')]=_[_0xa99c('0x3a')](_0x1cfcae[_0xa99c('0x39')]);_0x4589cf[_0xa99c('0x3b')]=_['intersection'](_0x4589cf[_0xa99c('0x3c')],_0x4589cf[_0xa99c('0x39')]);_0x4e0eed[_0xa99c('0x3d')]=_[_0xa99c('0x3e')](_0x4589cf[_0xa99c('0x3c')],qs['fields'](_0x1cfcae[_0xa99c('0x39')]['fields']));_0x4e0eed[_0xa99c('0x3d')]=_0x4e0eed[_0xa99c('0x3d')]['length']?_0x4e0eed[_0xa99c('0x3d')]:_0x4589cf['model'];if(!_0x1cfcae[_0xa99c('0x39')]['hasOwnProperty'](_0xa99c('0x3f'))){_0x4e0eed[_0xa99c('0x2a')]=qs['limit'](_0x1cfcae['query'][_0xa99c('0x2a')]);_0x4e0eed[_0xa99c('0x28')]=qs[_0xa99c('0x28')](_0x1cfcae[_0xa99c('0x39')]['offset']);}_0x4e0eed[_0xa99c('0x40')]=qs[_0xa99c('0x41')](_0x1cfcae[_0xa99c('0x39')]['sort']);_0x4e0eed[_0xa99c('0x42')]=qs[_0xa99c('0x3b')](_['pick'](_0x1cfcae[_0xa99c('0x39')],_0x4589cf[_0xa99c('0x3b')]),_0x3a4a34);if(_0x1cfcae[_0xa99c('0x39')]['filter']){_0x4e0eed['where']=_['merge'](_0x4e0eed[_0xa99c('0x42')],{'$or':_[_0xa99c('0x34')](_0x3a4a34,function(_0x46bdd6){if(_0x46bdd6[_0xa99c('0x37')]!==_0xa99c('0x43')){var _0x29d36d={};_0x29d36d[_0x46bdd6[_0xa99c('0x32')]]={'$like':'%'+_0x1cfcae[_0xa99c('0x39')][_0xa99c('0x44')]+'%'};return _0x29d36d;}})});}_0x4e0eed=_[_0xa99c('0x45')]({},_0x4e0eed,_0x1cfcae[_0xa99c('0x46')]);var _0x12a7e7={'where':_0x4e0eed[_0xa99c('0x42')]};return db[_0xa99c('0x35')][_0xa99c('0x2b')](_0x12a7e7)[_0xa99c('0x1c')](function(_0x3d9d67){_0x26b9ee['count']=_0x3d9d67;if(_0x1cfcae[_0xa99c('0x39')]['includeAll']){_0x4e0eed[_0xa99c('0x47')]=[{'all':!![]}];}return db[_0xa99c('0x35')][_0xa99c('0x48')](_0x4e0eed);})['then'](function(_0x2b6e16){_0x26b9ee['rows']=_0x2b6e16;return _0x26b9ee;})[_0xa99c('0x1c')](respondWithFilteredResult(_0x1d3dba,_0x4e0eed))[_0xa99c('0x24')](handleError(_0x1d3dba,null));};exports['show']=function(_0xecfefa,_0x1b3a71){var _0x5a6810={'raw':!![],'where':{'id':_0xecfefa['params']['id']}},_0x441548={};_0x441548[_0xa99c('0x3c')]=_['keys'](db[_0xa99c('0x35')]['rawAttributes']);_0x441548[_0xa99c('0x39')]=_['keys'](_0xecfefa[_0xa99c('0x39')]);_0x441548[_0xa99c('0x3b')]=_['intersection'](_0x441548['model'],_0x441548[_0xa99c('0x39')]);_0x5a6810[_0xa99c('0x3d')]=_[_0xa99c('0x3e')](_0x441548[_0xa99c('0x3c')],qs[_0xa99c('0x49')](_0xecfefa[_0xa99c('0x39')][_0xa99c('0x49')]));_0x5a6810['attributes']=_0x5a6810['attributes'][_0xa99c('0x4a')]?_0x5a6810[_0xa99c('0x3d')]:_0x441548[_0xa99c('0x3c')];if(_0xecfefa[_0xa99c('0x39')][_0xa99c('0x4b')]){_0x5a6810[_0xa99c('0x47')]=[{'all':!![]}];}_0x5a6810=_[_0xa99c('0x45')]({},_0x5a6810,_0xecfefa['options']);return db[_0xa99c('0x35')][_0xa99c('0x4c')](_0x5a6810)[_0xa99c('0x1c')](handleEntityNotFound(_0x1b3a71,null))[_0xa99c('0x1c')](respondWithResult(_0x1b3a71,null))[_0xa99c('0x24')](handleError(_0x1b3a71,null));};exports[_0xa99c('0x2f')]=function(_0x3703b7,_0x32f034){if(_0x3703b7[_0xa99c('0x4d')]['id']){delete _0x3703b7[_0xa99c('0x4d')]['id'];}return db[_0xa99c('0x35')]['find']({'where':{'id':_0x3703b7[_0xa99c('0x4e')]['id']}})[_0xa99c('0x1c')](handleEntityNotFound(_0x32f034,null))[_0xa99c('0x1c')](saveUpdates(_0x3703b7['body'],null))[_0xa99c('0x1c')](respondWithResult(_0x32f034,null))[_0xa99c('0x24')](handleError(_0x32f034,null));};exports[_0xa99c('0x30')]=function(_0x4ed8bc,_0x5e2d99){return db['FaxMessage'][_0xa99c('0x4c')]({'where':{'id':_0x4ed8bc['params']['id']}})[_0xa99c('0x1c')](handleEntityNotFound(_0x5e2d99,null))[_0xa99c('0x1c')](removeEntity(_0x5e2d99,null))[_0xa99c('0x24')](handleError(_0x5e2d99,null));};exports[_0xa99c('0x4f')]=function(_0x112431,_0x491d88){return db[_0xa99c('0x35')][_0xa99c('0x4f')]()[_0xa99c('0x1c')](respondWithResult(_0x491d88,null))[_0xa99c('0x24')](handleError(_0x491d88,null));};var interaction_log=require(_0xa99c('0x10'))(_0xa99c('0x50'));exports['accept']=function(_0x1989cf,_0x352593,_0x507c2c){var _0x5a08e0={'agent':{},'channel':_0xa99c('0x51')};if(_0x1989cf['body']['id']){delete _0x1989cf[_0xa99c('0x4d')]['id'];}_0x1989cf[_0xa99c('0x4d')]['read']=!![];_0x1989cf['body'][_0xa99c('0x52')]=moment()[_0xa99c('0x53')]('YYYY-MM-DD\x20HH:mm:ss');_0x1989cf[_0xa99c('0x4d')][_0xa99c('0x54')]=_0x1989cf[_0xa99c('0x4d')][_0xa99c('0x54')]||_0x1989cf[_0xa99c('0x55')]['id'];_0x5a08e0['agent']['id']=_0x1989cf['body'][_0xa99c('0x54')];return db['FaxMessage'][_0xa99c('0x4c')]({'where':{'id':_0x1989cf[_0xa99c('0x4e')]['id'],'UserId':null}})[_0xa99c('0x1c')](handleEntityNotFound(_0x352593,null))['then'](saveUpdates(_0x1989cf[_0xa99c('0x4d')],null))['then'](function(_0x59c955){if(_0x59c955){_0x5a08e0[_0xa99c('0x23')]=_0x59c955['get']({'plain':!![]});return db[_0xa99c('0x56')][_0xa99c('0x4c')]({'where':{'id':_0x59c955[_0xa99c('0x57')]}});}return null;})[_0xa99c('0x1c')](handleEntityNotFound(_0x352593,null))['then'](function(_0x29b98c){if(_0x29b98c){return _0x29b98c['update']({'UserId':_0x1989cf[_0xa99c('0x4d')][_0xa99c('0x54')],'read1stAt':_['isNil'](_0x29b98c[_0xa99c('0x58')])?moment()['format'](_0xa99c('0x59')):undefined});}return null;})['then'](function(_0x6cf51a){if(_0x6cf51a){_0x5a08e0[_0xa99c('0x5a')]=_0x6cf51a['get']({'plain':!![]});interaction_log[_0xa99c('0x1d')]('[FAXMESSAGE:ACCEPT]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s',_0x1989cf[_0xa99c('0x55')]['id'],_0x1989cf[_0xa99c('0x55')][_0xa99c('0x32')],_0x1989cf[_0xa99c('0x55')][_0xa99c('0x5b')],_0x5a08e0['interaction']['id'],_0x1989cf[_0xa99c('0x4d')]?JSON[_0xa99c('0x21')](_0x1989cf[_0xa99c('0x4d')]):_0xa99c('0x5c'));return respondWithRpcPromise(_0xa99c('0x5d'),_0xa99c('0x5e'),_0x5a08e0);}return null;})[_0xa99c('0x1c')](function(_0x4bc740){var _0x41132e='SELECT\x20*\x20FROM\x20cm_contacts\x20WHERE\x20id\x20=\x20'+_0x4bc740[_0xa99c('0x23')]['ContactId'];return db['sequelize'][_0xa99c('0x39')](_0x41132e,{'type':db[_0xa99c('0x5f')][_0xa99c('0x60')][_0xa99c('0x61')],'raw':!![]})['then'](function(_0x1376ad){return _0x1376ad;});})[_0xa99c('0x1c')](function(_0x350016){if(_0x350016){_0x5a08e0[_0xa99c('0x23')][_0xa99c('0x62')]=_0x350016[0x0];if(!_0x1989cf[_0xa99c('0x4d')][_0xa99c('0x54')])return;return db[_0xa99c('0x63')][_0xa99c('0x4c')]({'where':{'id':_0x1989cf[_0xa99c('0x4d')]['UserId'],'role':_0xa99c('0x64')},'attributes':['id','name',_0xa99c('0x65'),_0xa99c('0x66'),_0xa99c('0x67')],'raw':!![]});}return null;})[_0xa99c('0x1c')](function(_0x225d81){if(!_0x225d81)return null;_0x5a08e0[_0xa99c('0x23')]['agent']=_0x225d81;return _0x5a08e0;})['then'](function(_0x29ecae){if(_0x29ecae){if(_0x1989cf[_0xa99c('0x4d')][_0xa99c('0x68')]){_0x5a08e0['message'][_0xa99c('0x69')]=util[_0xa99c('0x53')](_0xa99c('0x6a'),_0x1989cf[_0xa99c('0x55')][_0xa99c('0x32')]);_0x5a08e0['message']['channel']=_0x5a08e0[_0xa99c('0x6b')];_0x5a08e0[_0xa99c('0x23')]['motionChannel']=_0x5a08e0['channel'];_0x5a08e0[_0xa99c('0x23')][_0xa99c('0x6c')]=_0xa99c('0x6d');return respondWithRpcPromise('EventManager','EventManager',{'event':'acceptmessage','message':_0x5a08e0[_0xa99c('0x23')]},client9002)[_0xa99c('0x1c')](function(){return _0x5a08e0;});}return _0x5a08e0;}return null;})[_0xa99c('0x1c')](respondWithResult(_0x352593,null))[_0xa99c('0x24')](handleError(_0x352593,null));};var interaction_log=require(_0xa99c('0x10'))('fax-interactions');exports[_0xa99c('0x2e')]=function(_0x373f5f,_0x5710a8,_0x55dd50){var _0x56d2e6={'agent':{},'channel':_0xa99c('0x51')};if(_0x373f5f[_0xa99c('0x4d')]['id']){delete _0x373f5f[_0xa99c('0x4d')]['id'];}_0x373f5f[_0xa99c('0x4d')][_0xa99c('0x54')]=_0x373f5f[_0xa99c('0x4d')][_0xa99c('0x54')]||_0x373f5f[_0xa99c('0x55')]['id'];_0x56d2e6['agent']['id']=_0x373f5f['body'][_0xa99c('0x54')];return db[_0xa99c('0x35')][_0xa99c('0x4c')]({'where':{'id':_0x373f5f['params']['id'],'UserId':null}})['then'](handleEntityNotFound(_0x5710a8,null))[_0xa99c('0x1c')](function(_0x5b3f9f){if(_0x5b3f9f){_0x56d2e6['message']=_0x5b3f9f[_0xa99c('0x6e')]({'plain':!![]});return db['FaxInteraction'][_0xa99c('0x4c')]({'where':{'id':_0x5b3f9f[_0xa99c('0x57')]}});}return null;})['then'](handleEntityNotFound(_0x5710a8,null))['then'](function(_0x5a5ac8){if(_0x5a5ac8){_0x56d2e6[_0xa99c('0x5a')]=_0x5a5ac8[_0xa99c('0x6e')]({'plain':!![]});interaction_log[_0xa99c('0x1d')](_0xa99c('0x6f'),_0x373f5f[_0xa99c('0x55')]['id'],_0x373f5f[_0xa99c('0x55')][_0xa99c('0x32')],_0x373f5f[_0xa99c('0x55')][_0xa99c('0x5b')],_0x56d2e6[_0xa99c('0x5a')]['id'],_0x373f5f[_0xa99c('0x4d')]?JSON[_0xa99c('0x21')](_0x373f5f[_0xa99c('0x4d')]):_0xa99c('0x5c'));return respondWithRpcPromise('RejectMessage','rejectMessage',_0x56d2e6);}return null;})[_0xa99c('0x1c')](function(_0x515839){var _0x641ba2='SELECT\x20*\x20FROM\x20cm_contacts\x20WHERE\x20id\x20=\x20'+_0x515839[_0xa99c('0x23')]['ContactId'];return db[_0xa99c('0x70')]['query'](_0x641ba2,{'type':db[_0xa99c('0x5f')][_0xa99c('0x60')]['SELECT'],'raw':!![]})['then'](function(_0x8d791f){return _0x8d791f;});})[_0xa99c('0x1c')](function(_0x44b27a){if(_0x44b27a){_0x56d2e6[_0xa99c('0x23')][_0xa99c('0x62')]=_0x44b27a[0x0];if(!_0x373f5f['body'][_0xa99c('0x54')])return;return db['User'][_0xa99c('0x4c')]({'where':{'id':_0x373f5f[_0xa99c('0x4d')][_0xa99c('0x54')],'role':'agent'},'attributes':['id','name','fullname','email',_0xa99c('0x67')],'raw':!![]});}return null;})[_0xa99c('0x1c')](function(_0x1fd156){if(!_0x1fd156)return null;_0x56d2e6[_0xa99c('0x23')][_0xa99c('0x64')]=_0x1fd156;return _0x56d2e6;})[_0xa99c('0x1c')](function(_0x5f3bce){if(_0x5f3bce){_0x5f3bce[_0xa99c('0x23')][_0xa99c('0x69')]=util[_0xa99c('0x53')]('SIP/%s',_0x373f5f[_0xa99c('0x55')]['name']);_0x5f3bce[_0xa99c('0x23')][_0xa99c('0x6b')]=_0x56d2e6[_0xa99c('0x6b')];_0x5f3bce[_0xa99c('0x23')][_0xa99c('0x71')]=_0x56d2e6[_0xa99c('0x6b')];_0x5f3bce['message'][_0xa99c('0x6c')]=_0xa99c('0x2e');respondWithRpcPromise(_0xa99c('0x72'),'EventManager',{'event':_0xa99c('0x73'),'message':_0x5f3bce[_0xa99c('0x23')]},client9002);return _0x56d2e6;}return null;})[_0xa99c('0x1c')](respondWithResult(_0x5710a8,null))[_0xa99c('0x24')](handleError(_0x5710a8,null));};exports[_0xa99c('0x74')]=function(_0x587e60,_0x54076c){var _0x12ac6f;return db['FaxMessage'][_0xa99c('0x74')](_0x587e60[_0xa99c('0x4d')],{})[_0xa99c('0x1c')](function(_0x2d0c1b){_0x12ac6f=_0x2d0c1b;return db[_0xa99c('0x75')][_0xa99c('0x76')]({'where':{'id':_0x12ac6f[_0xa99c('0x77')]}});})['then'](function(_0x4818b5){if(_[_0xa99c('0x78')](_0x4818b5)){return;}else{_0x12ac6f[_0xa99c('0x51')]=_0x4818b5[_0xa99c('0x51')];return db[_0xa99c('0x79')]['findOne']({'where':{'id':_0x12ac6f[_0xa99c('0x7a')]}});}})[_0xa99c('0x1c')](function(_0x3e974e){return respondWithRpcPromise(_0xa99c('0x7b'),_0xa99c('0x7b'),{'FaxAccountId':_[_0xa99c('0x78')](_0x587e60[_0xa99c('0x4d')])?undefined:_0x587e60['body']['FaxAccountId'],'path':_['isNil'](_0x3e974e)?undefined:util[_0xa99c('0x53')]('/var/opt/motion2/server/files/attachments/%s',_0x3e974e[_0xa99c('0x7c')]),'fax':_[_0xa99c('0x78')](_0x12ac6f[_0xa99c('0x51')])?undefined:_0x12ac6f['fax'],'AttachmentId':_0x12ac6f[_0xa99c('0x7a')]},client9002);})['then'](respondWithResult(_0x54076c,0xc9))['catch'](handleError(_0x54076c,null));};exports['download']=function(_0x4f6a51,_0x463398){var _0x538981=path[_0xa99c('0x7d')](config[_0xa99c('0x7e')],_0xa99c('0x7f'),_0xa99c('0x80'),_0xa99c('0x81'));return db[_0xa99c('0x35')]['find']({'where':{'id':_0x4f6a51[_0xa99c('0x4e')]['id']},'include':[{'model':db[_0xa99c('0x79')],'as':_0xa99c('0x79')}]})['then'](handleEntityNotFound(_0x463398,null))[_0xa99c('0x1c')](function(_0x41f0d7){if(_0x41f0d7){return _0x463398[_0xa99c('0x82')](path[_0xa99c('0x7d')](_0x538981,_0x41f0d7[_0xa99c('0x79')]['basename']));}})['catch'](handleError(_0x463398,null));};
\ No newline at end of file
+var _0xfb97=['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','defaults','redis','localhost','socket.io-emitter','register','client','request','then','FaxMessage,\x20%s,\x20%s','request\x20sent','stringify','code','error','message','info','result','catch','sendStatus','status','json','offset','undefined','limit','count','set','Content-Range','apply','reject','save','update','destroy','end','stack','name','send','map','FaxMessage','rawAttributes','fieldName','type','key','model','query','keys','attributes','intersection','fields','length','hasOwnProperty','order','sort','where','filters','merge','VIRTUAL','filter','options','includeAll','include','rows','show','params','find','body','describe','fax-interactions','fax','read','readAt','format','YYYY-MM-DD\x20HH:mm:ss','UserId','FaxInteractionId','isNil','read1stAt','interaction','get','user','role','null','SELECT\x20*\x20FROM\x20cm_contacts\x20WHERE\x20id\x20=\x20','sequelize','Sequelize','SELECT','contact','User','agent','interface','channel','EventManager','acceptmessage','FaxInteraction','RejectMessage','ContactId','QueryTypes','fullname','email','SIP/%s','event','rejectmessage','create','CmContact','Attachment','findOne','AttachmentId','SendFax','basename','join','server','attachments','download','eml-format','zip-dir','fast-json-patch','request-promise','moment','bluebird','util','path','ejs','fs-extra','lodash','squel','crypto','jsforce'];(function(_0xc59aa9,_0x31dab9){var _0x50736c=function(_0x1efcfd){while(--_0x1efcfd){_0xc59aa9['push'](_0xc59aa9['shift']());}};_0x50736c(++_0x31dab9);}(_0xfb97,0x104));var _0x7fb9=function(_0x2d3a4d,_0x47561e){_0x2d3a4d=_0x2d3a4d-0x0;var _0x3a94a3=_0xfb97[_0x2d3a4d];return _0x3a94a3;};'use strict';var emlformat=require(_0x7fb9('0x0'));var rimraf=require('rimraf');var zipdir=require(_0x7fb9('0x1'));var jsonpatch=require(_0x7fb9('0x2'));var rp=require(_0x7fb9('0x3'));var moment=require(_0x7fb9('0x4'));var BPromise=require(_0x7fb9('0x5'));var Mustache=require('mustache');var util=require(_0x7fb9('0x6'));var path=require(_0x7fb9('0x7'));var sox=require('sox');var csv=require('to-csv');var ejs=require(_0x7fb9('0x8'));var fs=require('fs');var fs_extra=require(_0x7fb9('0x9'));var _=require(_0x7fb9('0xa'));var squel=require(_0x7fb9('0xb'));var crypto=require(_0x7fb9('0xc'));var jsforce=require(_0x7fb9('0xd'));var deskjs=require(_0x7fb9('0xe'));var toCsv=require('to-csv');var querystring=require('querystring');var Papa=require('papaparse');var Redis=require(_0x7fb9('0xf'));var authService=require(_0x7fb9('0x10'));var qs=require(_0x7fb9('0x11'));var as=require(_0x7fb9('0x12'));var hardwareService=require(_0x7fb9('0x13'));var logger=require(_0x7fb9('0x14'))(_0x7fb9('0x15'));var utils=require(_0x7fb9('0x16'));var config=require(_0x7fb9('0x17'));var licenseUtil=require(_0x7fb9('0x18'));var db=require(_0x7fb9('0x19'))['db'];config['redis']=_[_0x7fb9('0x1a')](config[_0x7fb9('0x1b')],{'host':_0x7fb9('0x1c'),'port':0x18eb});var socket=require(_0x7fb9('0x1d'))(new Redis(config[_0x7fb9('0x1b')]));require('./faxMessage.socket')[_0x7fb9('0x1e')](socket);var jayson=require('jayson/promise');var client=jayson[_0x7fb9('0x1f')]['http']({'port':0x232c});var client9002=jayson['client']['http']({'port':0x232a});function respondWithRpcPromise(_0x5ce9df,_0x2bded4,_0x3ea141,_0x2e1494){return new BPromise(function(_0x230966,_0x20fb8e){var _0x3195ac=_0x2e1494||client;return _0x3195ac[_0x7fb9('0x20')](_0x5ce9df,_0x3ea141)[_0x7fb9('0x21')](function(_0x101c4b){logger['info'](_0x7fb9('0x22'),_0x2bded4,_0x7fb9('0x23'));logger['debug']('FaxMessage,\x20%s,\x20%s,\x20%s',_0x2bded4,_0x7fb9('0x23'),JSON[_0x7fb9('0x24')](_0x101c4b));if(_0x101c4b['error']){if(_0x101c4b['error'][_0x7fb9('0x25')]===0x1f4){logger[_0x7fb9('0x26')](_0x7fb9('0x22'),_0x2bded4,_0x101c4b[_0x7fb9('0x26')][_0x7fb9('0x27')]);return _0x20fb8e(_0x101c4b[_0x7fb9('0x26')][_0x7fb9('0x27')]);}logger['error']('FaxMessage,\x20%s,\x20%s',_0x2bded4,_0x101c4b[_0x7fb9('0x26')][_0x7fb9('0x27')]);return _0x230966(_0x101c4b[_0x7fb9('0x26')][_0x7fb9('0x27')]);}else{logger[_0x7fb9('0x28')](_0x7fb9('0x22'),_0x2bded4,'request\x20sent');_0x230966(_0x101c4b[_0x7fb9('0x29')]['message']);}})[_0x7fb9('0x2a')](function(_0x302215){logger[_0x7fb9('0x26')](_0x7fb9('0x22'),_0x2bded4,_0x302215);_0x20fb8e(_0x302215);});});}function respondWithStatusCode(_0x23cb50,_0x1dcd77){_0x1dcd77=_0x1dcd77||0xcc;return function(_0x88d71a){if(_0x88d71a){return _0x23cb50[_0x7fb9('0x2b')](_0x1dcd77);}return _0x23cb50[_0x7fb9('0x2c')](_0x1dcd77)['end']();};}function respondWithResult(_0x536fd0,_0x5a6fc9){_0x5a6fc9=_0x5a6fc9||0xc8;return function(_0x47fc83){if(_0x47fc83){return _0x536fd0[_0x7fb9('0x2c')](_0x5a6fc9)[_0x7fb9('0x2d')](_0x47fc83);}};}function respondWithFilteredResult(_0xbe1d87,_0x121700){return function(_0x15a634){if(_0x15a634){var _0x353c0b=typeof _0x121700[_0x7fb9('0x2e')]===_0x7fb9('0x2f')&&typeof _0x121700[_0x7fb9('0x30')]===_0x7fb9('0x2f');var _0x5ccec4=_0x15a634[_0x7fb9('0x31')];var _0x5e3233=_0x353c0b?0x0:_0x121700[_0x7fb9('0x2e')];var _0x5cb100=_0x353c0b?_0x15a634[_0x7fb9('0x31')]:_0x121700[_0x7fb9('0x2e')]+_0x121700[_0x7fb9('0x30')];var _0x54f33a;if(_0x5cb100>=_0x5ccec4){_0x5cb100=_0x5ccec4;_0x54f33a=0xc8;}else{_0x54f33a=0xce;}_0xbe1d87[_0x7fb9('0x2c')](_0x54f33a);return _0xbe1d87[_0x7fb9('0x32')](_0x7fb9('0x33'),_0x5e3233+'-'+_0x5cb100+'/'+_0x5ccec4)[_0x7fb9('0x2d')](_0x15a634);}return null;};}function patchUpdates(_0x10ab5f){return function(_0x4c81aa){try{jsonpatch[_0x7fb9('0x34')](_0x4c81aa,_0x10ab5f,!![]);}catch(_0x3cd739){return BPromise[_0x7fb9('0x35')](_0x3cd739);}return _0x4c81aa[_0x7fb9('0x36')]();};}function saveUpdates(_0x11f3d7,_0x529704){return function(_0x4b4d8b){if(_0x4b4d8b){return _0x4b4d8b[_0x7fb9('0x37')](_0x11f3d7)[_0x7fb9('0x21')](function(_0x27e894){return _0x27e894;});}return null;};}function removeEntity(_0x42b7c7,_0xd03554){return function(_0x2bcdb5){if(_0x2bcdb5){return _0x2bcdb5[_0x7fb9('0x38')]()[_0x7fb9('0x21')](function(){_0x42b7c7[_0x7fb9('0x2c')](0xcc)[_0x7fb9('0x39')]();});}};}function handleEntityNotFound(_0x3d88b6,_0x5d5bc4){return function(_0x385a1f){if(!_0x385a1f){_0x3d88b6[_0x7fb9('0x2b')](0x194);}return _0x385a1f;};}function handleError(_0x3b926b,_0x418f27){_0x418f27=_0x418f27||0x1f4;return function(_0x48ddb3){logger['error'](_0x48ddb3[_0x7fb9('0x3a')]);if(_0x48ddb3[_0x7fb9('0x3b')]){delete _0x48ddb3['name'];}_0x3b926b[_0x7fb9('0x2c')](_0x418f27)[_0x7fb9('0x3c')](_0x48ddb3);};}exports['index']=function(_0x6c7242,_0x4e1663){var _0x31793a={},_0x35212d={},_0x210a00={'count':0x0,'rows':[]};var _0x20e3af=_[_0x7fb9('0x3d')](db[_0x7fb9('0x3e')][_0x7fb9('0x3f')],function(_0x10bbc8){return{'name':_0x10bbc8[_0x7fb9('0x40')],'type':_0x10bbc8[_0x7fb9('0x41')][_0x7fb9('0x42')]};});_0x35212d[_0x7fb9('0x43')]=_[_0x7fb9('0x3d')](_0x20e3af,_0x7fb9('0x3b'));_0x35212d[_0x7fb9('0x44')]=_[_0x7fb9('0x45')](_0x6c7242['query']);_0x35212d['filters']=_['intersection'](_0x35212d[_0x7fb9('0x43')],_0x35212d[_0x7fb9('0x44')]);_0x31793a[_0x7fb9('0x46')]=_[_0x7fb9('0x47')](_0x35212d[_0x7fb9('0x43')],qs[_0x7fb9('0x48')](_0x6c7242[_0x7fb9('0x44')][_0x7fb9('0x48')]));_0x31793a[_0x7fb9('0x46')]=_0x31793a[_0x7fb9('0x46')][_0x7fb9('0x49')]?_0x31793a[_0x7fb9('0x46')]:_0x35212d[_0x7fb9('0x43')];if(!_0x6c7242[_0x7fb9('0x44')][_0x7fb9('0x4a')]('nolimit')){_0x31793a[_0x7fb9('0x30')]=qs[_0x7fb9('0x30')](_0x6c7242[_0x7fb9('0x44')][_0x7fb9('0x30')]);_0x31793a['offset']=qs['offset'](_0x6c7242[_0x7fb9('0x44')]['offset']);}_0x31793a[_0x7fb9('0x4b')]=qs[_0x7fb9('0x4c')](_0x6c7242['query'][_0x7fb9('0x4c')]);_0x31793a[_0x7fb9('0x4d')]=qs[_0x7fb9('0x4e')](_['pick'](_0x6c7242[_0x7fb9('0x44')],_0x35212d[_0x7fb9('0x4e')]),_0x20e3af);if(_0x6c7242[_0x7fb9('0x44')]['filter']){_0x31793a[_0x7fb9('0x4d')]=_[_0x7fb9('0x4f')](_0x31793a[_0x7fb9('0x4d')],{'$or':_[_0x7fb9('0x3d')](_0x20e3af,function(_0x1cf756){if(_0x1cf756[_0x7fb9('0x41')]!==_0x7fb9('0x50')){var _0x2720f6={};_0x2720f6[_0x1cf756[_0x7fb9('0x3b')]]={'$like':'%'+_0x6c7242[_0x7fb9('0x44')][_0x7fb9('0x51')]+'%'};return _0x2720f6;}})});}_0x31793a=_[_0x7fb9('0x4f')]({},_0x31793a,_0x6c7242[_0x7fb9('0x52')]);var _0x5c014a={'where':_0x31793a[_0x7fb9('0x4d')]};return db[_0x7fb9('0x3e')]['count'](_0x5c014a)['then'](function(_0x10b169){_0x210a00[_0x7fb9('0x31')]=_0x10b169;if(_0x6c7242['query'][_0x7fb9('0x53')]){_0x31793a[_0x7fb9('0x54')]=[{'all':!![]}];}return db[_0x7fb9('0x3e')]['findAll'](_0x31793a);})['then'](function(_0x20e65){_0x210a00[_0x7fb9('0x55')]=_0x20e65;return _0x210a00;})[_0x7fb9('0x21')](respondWithFilteredResult(_0x4e1663,_0x31793a))['catch'](handleError(_0x4e1663,null));};exports[_0x7fb9('0x56')]=function(_0x4ac12e,_0x1b58f){var _0x3ccbe0={'raw':!![],'where':{'id':_0x4ac12e[_0x7fb9('0x57')]['id']}},_0x32dbf4={};_0x32dbf4[_0x7fb9('0x43')]=_[_0x7fb9('0x45')](db[_0x7fb9('0x3e')][_0x7fb9('0x3f')]);_0x32dbf4[_0x7fb9('0x44')]=_[_0x7fb9('0x45')](_0x4ac12e[_0x7fb9('0x44')]);_0x32dbf4['filters']=_[_0x7fb9('0x47')](_0x32dbf4[_0x7fb9('0x43')],_0x32dbf4[_0x7fb9('0x44')]);_0x3ccbe0[_0x7fb9('0x46')]=_['intersection'](_0x32dbf4[_0x7fb9('0x43')],qs[_0x7fb9('0x48')](_0x4ac12e[_0x7fb9('0x44')]['fields']));_0x3ccbe0[_0x7fb9('0x46')]=_0x3ccbe0[_0x7fb9('0x46')][_0x7fb9('0x49')]?_0x3ccbe0[_0x7fb9('0x46')]:_0x32dbf4[_0x7fb9('0x43')];if(_0x4ac12e[_0x7fb9('0x44')][_0x7fb9('0x53')]){_0x3ccbe0[_0x7fb9('0x54')]=[{'all':!![]}];}_0x3ccbe0=_[_0x7fb9('0x4f')]({},_0x3ccbe0,_0x4ac12e[_0x7fb9('0x52')]);return db['FaxMessage'][_0x7fb9('0x58')](_0x3ccbe0)[_0x7fb9('0x21')](handleEntityNotFound(_0x1b58f,null))[_0x7fb9('0x21')](respondWithResult(_0x1b58f,null))[_0x7fb9('0x2a')](handleError(_0x1b58f,null));};exports[_0x7fb9('0x37')]=function(_0x3e389f,_0x22eb09){if(_0x3e389f[_0x7fb9('0x59')]['id']){delete _0x3e389f[_0x7fb9('0x59')]['id'];}return db[_0x7fb9('0x3e')][_0x7fb9('0x58')]({'where':{'id':_0x3e389f['params']['id']}})[_0x7fb9('0x21')](handleEntityNotFound(_0x22eb09,null))['then'](saveUpdates(_0x3e389f['body'],null))[_0x7fb9('0x21')](respondWithResult(_0x22eb09,null))[_0x7fb9('0x2a')](handleError(_0x22eb09,null));};exports[_0x7fb9('0x38')]=function(_0x430d48,_0x46e2ae){return db[_0x7fb9('0x3e')][_0x7fb9('0x58')]({'where':{'id':_0x430d48[_0x7fb9('0x57')]['id']}})[_0x7fb9('0x21')](handleEntityNotFound(_0x46e2ae,null))[_0x7fb9('0x21')](removeEntity(_0x46e2ae,null))[_0x7fb9('0x2a')](handleError(_0x46e2ae,null));};exports['describe']=function(_0x531fdd,_0x2ad121){return db[_0x7fb9('0x3e')][_0x7fb9('0x5a')]()[_0x7fb9('0x21')](respondWithResult(_0x2ad121,null))[_0x7fb9('0x2a')](handleError(_0x2ad121,null));};var interaction_log=require('../../config/logger')(_0x7fb9('0x5b'));exports['accept']=function(_0x1214a5,_0x12a737,_0x4dce7f){var _0x517cc2={'agent':{},'channel':_0x7fb9('0x5c')};if(_0x1214a5[_0x7fb9('0x59')]['id']){delete _0x1214a5[_0x7fb9('0x59')]['id'];}_0x1214a5[_0x7fb9('0x59')][_0x7fb9('0x5d')]=!![];_0x1214a5[_0x7fb9('0x59')][_0x7fb9('0x5e')]=moment()[_0x7fb9('0x5f')](_0x7fb9('0x60'));_0x1214a5['body'][_0x7fb9('0x61')]=_0x1214a5['body'][_0x7fb9('0x61')]||_0x1214a5['user']['id'];_0x517cc2['agent']['id']=_0x1214a5[_0x7fb9('0x59')][_0x7fb9('0x61')];return db['FaxMessage'][_0x7fb9('0x58')]({'where':{'id':_0x1214a5[_0x7fb9('0x57')]['id'],'UserId':null}})[_0x7fb9('0x21')](handleEntityNotFound(_0x12a737,null))[_0x7fb9('0x21')](saveUpdates(_0x1214a5['body'],null))[_0x7fb9('0x21')](function(_0x5a241a){if(_0x5a241a){_0x517cc2['message']=_0x5a241a['get']({'plain':!![]});return db['FaxInteraction'][_0x7fb9('0x58')]({'where':{'id':_0x5a241a[_0x7fb9('0x62')]}});}return null;})['then'](handleEntityNotFound(_0x12a737,null))[_0x7fb9('0x21')](function(_0x589f88){if(_0x589f88){return _0x589f88['update']({'UserId':_0x1214a5[_0x7fb9('0x59')][_0x7fb9('0x61')],'read1stAt':_[_0x7fb9('0x63')](_0x589f88[_0x7fb9('0x64')])?moment()['format'](_0x7fb9('0x60')):undefined});}return null;})[_0x7fb9('0x21')](function(_0x33c3a2){if(_0x33c3a2){_0x517cc2[_0x7fb9('0x65')]=_0x33c3a2[_0x7fb9('0x66')]({'plain':!![]});interaction_log[_0x7fb9('0x28')]('[FAXMESSAGE:ACCEPT]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s',_0x1214a5[_0x7fb9('0x67')]['id'],_0x1214a5[_0x7fb9('0x67')][_0x7fb9('0x3b')],_0x1214a5[_0x7fb9('0x67')][_0x7fb9('0x68')],_0x517cc2['interaction']['id'],_0x1214a5['body']?JSON[_0x7fb9('0x24')](_0x1214a5[_0x7fb9('0x59')]):_0x7fb9('0x69'));return respondWithRpcPromise('AcceptMessage','acceptMessage',_0x517cc2);}return null;})[_0x7fb9('0x21')](function(_0x43cd9c){var _0x12c851=_0x7fb9('0x6a')+_0x43cd9c['message']['ContactId'];return db[_0x7fb9('0x6b')][_0x7fb9('0x44')](_0x12c851,{'type':db[_0x7fb9('0x6c')]['QueryTypes'][_0x7fb9('0x6d')],'raw':!![]})['then'](function(_0x1ff33a){return _0x1ff33a;});})[_0x7fb9('0x21')](function(_0x47896b){if(_0x47896b){_0x517cc2[_0x7fb9('0x27')][_0x7fb9('0x6e')]=_0x47896b[0x0];if(!_0x1214a5[_0x7fb9('0x59')][_0x7fb9('0x61')])return;return db[_0x7fb9('0x6f')][_0x7fb9('0x58')]({'where':{'id':_0x1214a5['body'][_0x7fb9('0x61')],'role':_0x7fb9('0x70')},'attributes':['id','name','fullname','email','internal'],'raw':!![]});}return null;})[_0x7fb9('0x21')](function(_0x64e5cd){if(!_0x64e5cd)return null;_0x517cc2['message'][_0x7fb9('0x70')]=_0x64e5cd;return _0x517cc2;})[_0x7fb9('0x21')](function(_0xb047f3){if(_0xb047f3){if(_0x1214a5['body']['manual']){_0x517cc2[_0x7fb9('0x27')][_0x7fb9('0x71')]=util[_0x7fb9('0x5f')]('SIP/%s',_0x1214a5[_0x7fb9('0x67')][_0x7fb9('0x3b')]);_0x517cc2[_0x7fb9('0x27')][_0x7fb9('0x72')]=_0x517cc2[_0x7fb9('0x72')];_0x517cc2[_0x7fb9('0x27')]['event']='accept';return respondWithRpcPromise(_0x7fb9('0x73'),_0x7fb9('0x73'),{'event':_0x7fb9('0x74'),'message':_0x517cc2[_0x7fb9('0x27')]},client9002)['then'](function(){return _0x517cc2;});}return _0x517cc2;}return null;})['then'](respondWithResult(_0x12a737,null))[_0x7fb9('0x2a')](handleError(_0x12a737,null));};var interaction_log=require(_0x7fb9('0x14'))(_0x7fb9('0x5b'));exports['reject']=function(_0x2ac223,_0x423d09,_0x4dca25){var _0x359841={'agent':{},'channel':'fax'};if(_0x2ac223[_0x7fb9('0x59')]['id']){delete _0x2ac223[_0x7fb9('0x59')]['id'];}_0x2ac223[_0x7fb9('0x59')][_0x7fb9('0x61')]=_0x2ac223[_0x7fb9('0x59')][_0x7fb9('0x61')]||_0x2ac223[_0x7fb9('0x67')]['id'];_0x359841[_0x7fb9('0x70')]['id']=_0x2ac223[_0x7fb9('0x59')]['UserId'];return db[_0x7fb9('0x3e')][_0x7fb9('0x58')]({'where':{'id':_0x2ac223[_0x7fb9('0x57')]['id'],'UserId':null}})[_0x7fb9('0x21')](handleEntityNotFound(_0x423d09,null))[_0x7fb9('0x21')](function(_0x27a6aa){if(_0x27a6aa){_0x359841[_0x7fb9('0x27')]=_0x27a6aa[_0x7fb9('0x66')]({'plain':!![]});return db[_0x7fb9('0x75')][_0x7fb9('0x58')]({'where':{'id':_0x27a6aa['FaxInteractionId']}});}return null;})[_0x7fb9('0x21')](handleEntityNotFound(_0x423d09,null))[_0x7fb9('0x21')](function(_0x534ea2){if(_0x534ea2){_0x359841[_0x7fb9('0x65')]=_0x534ea2['get']({'plain':!![]});interaction_log['info']('[FAXMESSAGE:REJECT]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s',_0x2ac223[_0x7fb9('0x67')]['id'],_0x2ac223[_0x7fb9('0x67')][_0x7fb9('0x3b')],_0x2ac223[_0x7fb9('0x67')]['role'],_0x359841[_0x7fb9('0x65')]['id'],_0x2ac223[_0x7fb9('0x59')]?JSON[_0x7fb9('0x24')](_0x2ac223[_0x7fb9('0x59')]):_0x7fb9('0x69'));return respondWithRpcPromise(_0x7fb9('0x76'),'rejectMessage',_0x359841);}return null;})[_0x7fb9('0x21')](function(_0x451a56){var _0x4bab44='SELECT\x20*\x20FROM\x20cm_contacts\x20WHERE\x20id\x20=\x20'+_0x451a56[_0x7fb9('0x27')][_0x7fb9('0x77')];return db[_0x7fb9('0x6b')][_0x7fb9('0x44')](_0x4bab44,{'type':db[_0x7fb9('0x6c')][_0x7fb9('0x78')][_0x7fb9('0x6d')],'raw':!![]})[_0x7fb9('0x21')](function(_0x34f0bd){return _0x34f0bd;});})['then'](function(_0x2d798d){if(_0x2d798d){_0x359841[_0x7fb9('0x27')][_0x7fb9('0x6e')]=_0x2d798d[0x0];if(!_0x2ac223[_0x7fb9('0x59')]['UserId'])return;return db['User']['find']({'where':{'id':_0x2ac223[_0x7fb9('0x59')][_0x7fb9('0x61')],'role':'agent'},'attributes':['id','name',_0x7fb9('0x79'),_0x7fb9('0x7a'),'internal'],'raw':!![]});}return null;})['then'](function(_0x299a7f){if(!_0x299a7f)return null;_0x359841[_0x7fb9('0x27')]['agent']=_0x299a7f;return _0x359841;})[_0x7fb9('0x21')](function(_0x5d4f1a){if(_0x5d4f1a){_0x5d4f1a[_0x7fb9('0x27')][_0x7fb9('0x71')]=util[_0x7fb9('0x5f')](_0x7fb9('0x7b'),_0x2ac223[_0x7fb9('0x67')][_0x7fb9('0x3b')]);_0x5d4f1a[_0x7fb9('0x27')][_0x7fb9('0x72')]=_0x359841['channel'];_0x5d4f1a[_0x7fb9('0x27')][_0x7fb9('0x7c')]=_0x7fb9('0x35');respondWithRpcPromise(_0x7fb9('0x73'),_0x7fb9('0x73'),{'event':_0x7fb9('0x7d'),'message':_0x5d4f1a[_0x7fb9('0x27')]},client9002);return _0x359841;}return null;})[_0x7fb9('0x21')](respondWithResult(_0x423d09,null))[_0x7fb9('0x2a')](handleError(_0x423d09,null));};exports[_0x7fb9('0x7e')]=function(_0x4ec798,_0x9f3d85){var _0x48be9c;return db['FaxMessage']['create'](_0x4ec798['body'],{})[_0x7fb9('0x21')](function(_0x17cead){_0x48be9c=_0x17cead;return db[_0x7fb9('0x7f')]['findOne']({'where':{'id':_0x48be9c[_0x7fb9('0x77')]}});})[_0x7fb9('0x21')](function(_0x59c1f2){if(_['isNil'](_0x59c1f2)){return;}else{_0x48be9c['fax']=_0x59c1f2[_0x7fb9('0x5c')];return db[_0x7fb9('0x80')][_0x7fb9('0x81')]({'where':{'id':_0x48be9c[_0x7fb9('0x82')]}});}})[_0x7fb9('0x21')](function(_0x4f25b5){return respondWithRpcPromise(_0x7fb9('0x83'),_0x7fb9('0x83'),{'FaxAccountId':_[_0x7fb9('0x63')](_0x4ec798['body'])?undefined:_0x4ec798[_0x7fb9('0x59')]['FaxAccountId'],'path':_[_0x7fb9('0x63')](_0x4f25b5)?undefined:util[_0x7fb9('0x5f')]('/var/opt/motion2/server/files/attachments/%s',_0x4f25b5[_0x7fb9('0x84')]),'fax':_[_0x7fb9('0x63')](_0x48be9c[_0x7fb9('0x5c')])?undefined:_0x48be9c[_0x7fb9('0x5c')],'AttachmentId':_0x48be9c[_0x7fb9('0x82')]},client9002);})['then'](respondWithResult(_0x9f3d85,0xc9))[_0x7fb9('0x2a')](handleError(_0x9f3d85,null));};exports['download']=function(_0x2a5a61,_0x4ed901){var _0x4ac462=path[_0x7fb9('0x85')](config['root'],_0x7fb9('0x86'),'files',_0x7fb9('0x87'));return db[_0x7fb9('0x3e')][_0x7fb9('0x58')]({'where':{'id':_0x2a5a61['params']['id']},'include':[{'model':db[_0x7fb9('0x80')],'as':_0x7fb9('0x80')}]})[_0x7fb9('0x21')](handleEntityNotFound(_0x4ed901,null))[_0x7fb9('0x21')](function(_0xcff7f2){if(_0xcff7f2){return _0x4ed901[_0x7fb9('0x88')](path['join'](_0x4ac462,_0xcff7f2[_0x7fb9('0x80')][_0x7fb9('0x84')]));}})['catch'](handleError(_0x4ed901,null));};
\ No newline at end of file
index 52dd081..5a4cb84 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb491=['save','update','emit','hook','events','../../mysqldb','FaxMessage','setMaxListeners'];(function(_0x2823ea,_0x20ab3b){var _0x134876=function(_0x5abb47){while(--_0x5abb47){_0x2823ea['push'](_0x2823ea['shift']());}};_0x134876(++_0x20ab3b);}(_0xb491,0x18c));var _0x1b49=function(_0x2d8f6c,_0x44db4c){_0x2d8f6c=_0x2d8f6c-0x0;var _0x3a00f6=_0xb491[_0x2d8f6c];return _0x3a00f6;};'use strict';var EventEmitter=require(_0x1b49('0x0'));var FaxMessage=require(_0x1b49('0x1'))['db'][_0x1b49('0x2')];var FaxMessageEvents=new EventEmitter();FaxMessageEvents[_0x1b49('0x3')](0x0);var events={'afterCreate':_0x1b49('0x4'),'afterUpdate':_0x1b49('0x5'),'afterDestroy':'remove'};function emitEvent(_0x3af677){return function(_0x807af7,_0x50201b,_0xa15129){FaxMessageEvents[_0x1b49('0x6')](_0x3af677+':'+_0x807af7['id'],_0x807af7);FaxMessageEvents[_0x1b49('0x6')](_0x3af677,_0x807af7);_0xa15129(null);};}for(var e in events){if(events['hasOwnProperty'](e)){var event=events[e];FaxMessage[_0x1b49('0x7')](e,emitEvent(event));}}module['exports']=FaxMessageEvents;
\ No newline at end of file
+var _0x869e=['update','remove','emit','hasOwnProperty','events','../../mysqldb','FaxMessage','save'];(function(_0x33ae49,_0x43972c){var _0x4b5d19=function(_0x4bda79){while(--_0x4bda79){_0x33ae49['push'](_0x33ae49['shift']());}};_0x4b5d19(++_0x43972c);}(_0x869e,0x15c));var _0xe869=function(_0x36319b,_0x3c5623){_0x36319b=_0x36319b-0x0;var _0x47f08a=_0x869e[_0x36319b];return _0x47f08a;};'use strict';var EventEmitter=require(_0xe869('0x0'));var FaxMessage=require(_0xe869('0x1'))['db'][_0xe869('0x2')];var FaxMessageEvents=new EventEmitter();FaxMessageEvents['setMaxListeners'](0x0);var events={'afterCreate':_0xe869('0x3'),'afterUpdate':_0xe869('0x4'),'afterDestroy':_0xe869('0x5')};function emitEvent(_0x34b325){return function(_0x39fee6,_0x597771,_0x21f626){FaxMessageEvents[_0xe869('0x6')](_0x34b325+':'+_0x39fee6['id'],_0x39fee6);FaxMessageEvents[_0xe869('0x6')](_0x34b325,_0x39fee6);_0x21f626(null);};}for(var e in events){if(events[_0xe869('0x7')](e)){var event=events[e];FaxMessage['hook'](e,emitEvent(event));}}module['exports']=FaxMessageEvents;
\ No newline at end of file
index 0879345..c5bf04a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2f63=['moment','bluebird','rimraf','../../config/environment','define','FaxMessage','fax_messages','FULLTEXT','get','direction','toLowerCase','out','secret','isNil','FaxInteraction','FaxInteractionId','then','update','catch','error','utf8mb4','utf8mb4_unicode_ci','lodash','util','../../config/logger','api'];(function(_0x1da527,_0x2dc953){var _0x40fc7c=function(_0x9949f5){while(--_0x9949f5){_0x1da527['push'](_0x1da527['shift']());}};_0x40fc7c(++_0x2dc953);}(_0x2f63,0x100));var _0x32f6=function(_0x583e98,_0x5534f5){_0x583e98=_0x583e98-0x0;var _0x84cc30=_0x2f63[_0x583e98];return _0x84cc30;};'use strict';var _=require(_0x32f6('0x0'));var util=require(_0x32f6('0x1'));var logger=require(_0x32f6('0x2'))(_0x32f6('0x3'));var moment=require(_0x32f6('0x4'));var BPromise=require(_0x32f6('0x5'));var rp=require('request-promise');var fs=require('fs');var path=require('path');var rimraf=require(_0x32f6('0x6'));var config=require(_0x32f6('0x7'));var attributes=require('./faxMessage.attributes');module['exports']=function(_0x40bece,_0x533fe4){return _0x40bece[_0x32f6('0x8')](_0x32f6('0x9'),attributes,{'tableName':_0x32f6('0xa'),'paranoid':![],'indexes':[{'name':'fti_fax_messages','fields':['body'],'type':_0x32f6('0xb')}],'timestamps':!![],'hooks':{'afterCreate':function(_0x57f0cd,_0x2622a0,_0xfd36be){var _0x4df272=_0x40bece['models'];var _0x599ae4=_0x57f0cd[_0x32f6('0xc')]({'plain':!![]});if(_0x599ae4[_0x32f6('0xd')][_0x32f6('0xe')]()==='in'||_0x599ae4[_0x32f6('0xd')]['toLowerCase']()===_0x32f6('0xf')&&!_0x599ae4[_0x32f6('0x10')]&&!_[_0x32f6('0x11')](_0x599ae4['UserId'])){_0x4df272[_0x32f6('0x12')]['findOne']({'where':{'id':_0x599ae4[_0x32f6('0x13')]}})[_0x32f6('0x14')](function(_0x292b5d){if(_0x292b5d){_0x292b5d[_0x32f6('0x15')]({'lastMsgAt':_0x599ae4['createdAt'],'lastMsgDirection':_0x599ae4[_0x32f6('0xd')][_0x32f6('0xe')]()});}})[_0x32f6('0x16')](function(_0x16c60f){console[_0x32f6('0x17')](_0x16c60f);});}_0xfd36be();}},'charset':_0x32f6('0x18'),'collate':_0x32f6('0x19')});};
\ No newline at end of file
+var _0xa820=['../../config/logger','api','moment','bluebird','request-promise','path','rimraf','../../config/environment','./faxMessage.attributes','exports','define','FaxMessage','fax_messages','direction','out','secret','findOne','update','catch','utf8mb4_unicode_ci','lodash','util'];(function(_0xa16cc0,_0x217e43){var _0x5b7c04=function(_0xb3e2eb){while(--_0xb3e2eb){_0xa16cc0['push'](_0xa16cc0['shift']());}};_0x5b7c04(++_0x217e43);}(_0xa820,0x132));var _0x0a82=function(_0x49aa7d,_0x5d46d8){_0x49aa7d=_0x49aa7d-0x0;var _0xdd0d26=_0xa820[_0x49aa7d];return _0xdd0d26;};'use strict';var _=require(_0x0a82('0x0'));var util=require(_0x0a82('0x1'));var logger=require(_0x0a82('0x2'))(_0x0a82('0x3'));var moment=require(_0x0a82('0x4'));var BPromise=require(_0x0a82('0x5'));var rp=require(_0x0a82('0x6'));var fs=require('fs');var path=require(_0x0a82('0x7'));var rimraf=require(_0x0a82('0x8'));var config=require(_0x0a82('0x9'));var attributes=require(_0x0a82('0xa'));module[_0x0a82('0xb')]=function(_0x552aa7,_0x28f7d3){return _0x552aa7[_0x0a82('0xc')](_0x0a82('0xd'),attributes,{'tableName':_0x0a82('0xe'),'paranoid':![],'indexes':[{'name':'fti_fax_messages','fields':['body'],'type':'FULLTEXT'}],'timestamps':!![],'hooks':{'afterCreate':function(_0x3b751c,_0x1eea78,_0x167a71){var _0x29d6cf=_0x552aa7['models'];var _0x1b5c9d=_0x3b751c['get']({'plain':!![]});if(_0x1b5c9d[_0x0a82('0xf')]['toLowerCase']()==='in'||_0x1b5c9d[_0x0a82('0xf')]['toLowerCase']()===_0x0a82('0x10')&&!_0x1b5c9d[_0x0a82('0x11')]&&!_['isNil'](_0x1b5c9d['UserId'])){_0x29d6cf['FaxInteraction'][_0x0a82('0x12')]({'where':{'id':_0x1b5c9d['FaxInteractionId']}})['then'](function(_0x19def2){if(_0x19def2){_0x19def2[_0x0a82('0x13')]({'lastMsgAt':_0x1b5c9d['createdAt'],'lastMsgDirection':_0x1b5c9d[_0x0a82('0xf')]['toLowerCase']()});}})[_0x0a82('0x14')](function(_0x13793e){console['error'](_0x13793e);});}_0x167a71();}},'charset':'utf8mb4','collate':_0x0a82('0x15')});};
\ No newline at end of file
index 851e8d2..3fc641f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x34e8=['request\x20sent','result','catch','CreateFaxMessage','FaxMessage','create','options','raw','update','body','attributes','limit','UpdateFaxMessage','lodash','util','moment','bluebird','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','http','defaults','redis','localhost','socket.io-emitter','./faxMessage.socket','register','request','then','info','FaxMessage,\x20%s,\x20%s','debug','FaxMessage,\x20%s,\x20%s,\x20%s','stringify','error','code','message'];(function(_0x3723a5,_0x22704b){var _0x2cd38e=function(_0x1701da){while(--_0x1701da){_0x3723a5['push'](_0x3723a5['shift']());}};_0x2cd38e(++_0x22704b);}(_0x34e8,0x12c));var _0x834e=function(_0x1ad6c7,_0x21bcfb){_0x1ad6c7=_0x1ad6c7-0x0;var _0x11d978=_0x34e8[_0x1ad6c7];return _0x11d978;};'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});config['redis']=_[_0x834e('0xc')](config[_0x834e('0xd')],{'host':_0x834e('0xe'),'port':0x18eb});var socket=require(_0x834e('0xf'))(new Redis(config[_0x834e('0xd')]));require(_0x834e('0x10'))[_0x834e('0x11')](socket);function respondWithRpcPromise(_0x1af45a,_0x3bdda9,_0x186b3b){return new BPromise(function(_0x1e41fe,_0x36e124){return client[_0x834e('0x12')](_0x1af45a,_0x186b3b)[_0x834e('0x13')](function(_0x293514){logger[_0x834e('0x14')](_0x834e('0x15'),_0x3bdda9,'request\x20sent');logger[_0x834e('0x16')](_0x834e('0x17'),_0x3bdda9,'request\x20sent',JSON[_0x834e('0x18')](_0x293514));if(_0x293514[_0x834e('0x19')]){if(_0x293514[_0x834e('0x19')][_0x834e('0x1a')]===0x1f4){logger['error'](_0x834e('0x15'),_0x3bdda9,_0x293514[_0x834e('0x19')]['message']);return _0x36e124(_0x293514[_0x834e('0x19')]['message']);}logger[_0x834e('0x19')](_0x834e('0x15'),_0x3bdda9,_0x293514['error'][_0x834e('0x1b')]);return _0x1e41fe(_0x293514[_0x834e('0x19')][_0x834e('0x1b')]);}else{logger['info'](_0x834e('0x15'),_0x3bdda9,_0x834e('0x1c'));_0x1e41fe(_0x293514[_0x834e('0x1d')][_0x834e('0x1b')]);}})[_0x834e('0x1e')](function(_0x254677){logger[_0x834e('0x19')]('FaxMessage,\x20%s,\x20%s',_0x3bdda9,_0x254677);_0x36e124(_0x254677);});});}exports[_0x834e('0x1f')]=function(_0x1fd2c6){var _0x113ff4=this;return new Promise(function(_0x325a99,_0x4ab05d){return db[_0x834e('0x20')][_0x834e('0x21')](_0x1fd2c6['body'],{'raw':_0x1fd2c6[_0x834e('0x22')]?_0x1fd2c6[_0x834e('0x22')][_0x834e('0x23')]===undefined?!![]:![]:!![]})['then'](function(_0x4e3f48){logger[_0x834e('0x14')](_0x834e('0x1f'),_0x1fd2c6);logger['debug'](_0x834e('0x1f'),_0x1fd2c6,JSON[_0x834e('0x18')](_0x4e3f48));_0x325a99(_0x4e3f48);})['catch'](function(_0x3bc4f7){logger[_0x834e('0x19')](_0x834e('0x1f'),_0x3bc4f7['message'],_0x1fd2c6);_0x4ab05d(_0x113ff4[_0x834e('0x19')](0x1f4,_0x3bc4f7[_0x834e('0x1b')]));});});};exports['UpdateFaxMessage']=function(_0x5bef62){var _0x1e713a=this;return new Promise(function(_0x508a1d,_0x2826ec){return db[_0x834e('0x20')][_0x834e('0x24')](_0x5bef62[_0x834e('0x25')],{'raw':_0x5bef62[_0x834e('0x22')]?_0x5bef62[_0x834e('0x22')]['raw']===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x5bef62['options']?_0x5bef62['options']['where']||null:null,'attributes':_0x5bef62[_0x834e('0x22')]?_0x5bef62[_0x834e('0x22')][_0x834e('0x26')]||null:null,'limit':_0x5bef62['options']?_0x5bef62[_0x834e('0x22')][_0x834e('0x27')]||null:null})[_0x834e('0x13')](function(_0x1e026a){logger[_0x834e('0x14')](_0x834e('0x28'),_0x5bef62);logger[_0x834e('0x16')](_0x834e('0x28'),_0x5bef62,JSON[_0x834e('0x18')](_0x1e026a));_0x508a1d(_0x1e026a);})['catch'](function(_0xef9ec2){logger['error'](_0x834e('0x28'),_0xef9ec2[_0x834e('0x1b')],_0x5bef62);_0x2826ec(_0x1e713a[_0x834e('0x19')](0x1f4,_0xef9ec2[_0x834e('0x1b')]));});});};
\ No newline at end of file
+var _0x6aa7=['redis','defaults','socket.io-emitter','./faxMessage.socket','request','then','info','FaxMessage,\x20%s,\x20%s','debug','request\x20sent','stringify','error','code','message','result','CreateFaxMessage','FaxMessage','create','options','raw','catch','update','body','attributes','limit','UpdateFaxMessage','lodash','moment','bluebird','randomstring','ioredis','../../config/utils','../../config/logger','rpc','client'];(function(_0x274821,_0x57435f){var _0x38c51f=function(_0x107f82){while(--_0x107f82){_0x274821['push'](_0x274821['shift']());}};_0x38c51f(++_0x57435f);}(_0x6aa7,0x178));var _0x76aa=function(_0x7aaa36,_0x13d02f){_0x7aaa36=_0x7aaa36-0x0;var _0x104c8a=_0x6aa7[_0x7aaa36];return _0x104c8a;};'use strict';var _=require(_0x76aa('0x0'));var util=require('util');var moment=require(_0x76aa('0x1'));var BPromise=require(_0x76aa('0x2'));var rs=require(_0x76aa('0x3'));var fs=require('fs');var Redis=require(_0x76aa('0x4'));var db=require('../../mysqldb')['db'];var utils=require(_0x76aa('0x5'));var logger=require(_0x76aa('0x6'))(_0x76aa('0x7'));var config=require('../../config/environment');var jayson=require('jayson/promise');var client=jayson[_0x76aa('0x8')]['http']({'port':0x232a});config[_0x76aa('0x9')]=_[_0x76aa('0xa')](config[_0x76aa('0x9')],{'host':'localhost','port':0x18eb});var socket=require(_0x76aa('0xb'))(new Redis(config[_0x76aa('0x9')]));require(_0x76aa('0xc'))['register'](socket);function respondWithRpcPromise(_0xcd99aa,_0x25856d,_0x41643a){return new BPromise(function(_0x16cb50,_0x37f1ab){return client[_0x76aa('0xd')](_0xcd99aa,_0x41643a)[_0x76aa('0xe')](function(_0x8dc35c){logger[_0x76aa('0xf')](_0x76aa('0x10'),_0x25856d,'request\x20sent');logger[_0x76aa('0x11')]('FaxMessage,\x20%s,\x20%s,\x20%s',_0x25856d,_0x76aa('0x12'),JSON[_0x76aa('0x13')](_0x8dc35c));if(_0x8dc35c[_0x76aa('0x14')]){if(_0x8dc35c[_0x76aa('0x14')][_0x76aa('0x15')]===0x1f4){logger['error']('FaxMessage,\x20%s,\x20%s',_0x25856d,_0x8dc35c[_0x76aa('0x14')]['message']);return _0x37f1ab(_0x8dc35c[_0x76aa('0x14')][_0x76aa('0x16')]);}logger['error'](_0x76aa('0x10'),_0x25856d,_0x8dc35c['error'][_0x76aa('0x16')]);return _0x16cb50(_0x8dc35c['error'][_0x76aa('0x16')]);}else{logger[_0x76aa('0xf')](_0x76aa('0x10'),_0x25856d,_0x76aa('0x12'));_0x16cb50(_0x8dc35c[_0x76aa('0x17')][_0x76aa('0x16')]);}})['catch'](function(_0x5d6202){logger[_0x76aa('0x14')](_0x76aa('0x10'),_0x25856d,_0x5d6202);_0x37f1ab(_0x5d6202);});});}exports[_0x76aa('0x18')]=function(_0x15b931){var _0x15109b=this;return new Promise(function(_0x191560,_0x19af92){return db[_0x76aa('0x19')][_0x76aa('0x1a')](_0x15b931['body'],{'raw':_0x15b931[_0x76aa('0x1b')]?_0x15b931[_0x76aa('0x1b')][_0x76aa('0x1c')]===undefined?!![]:![]:!![]})['then'](function(_0x41463a){logger[_0x76aa('0xf')](_0x76aa('0x18'),_0x15b931);logger[_0x76aa('0x11')](_0x76aa('0x18'),_0x15b931,JSON[_0x76aa('0x13')](_0x41463a));_0x191560(_0x41463a);})[_0x76aa('0x1d')](function(_0x3363b3){logger[_0x76aa('0x14')](_0x76aa('0x18'),_0x3363b3[_0x76aa('0x16')],_0x15b931);_0x19af92(_0x15109b[_0x76aa('0x14')](0x1f4,_0x3363b3[_0x76aa('0x16')]));});});};exports['UpdateFaxMessage']=function(_0xb5e8a9){var _0x1d6d15=this;return new Promise(function(_0x25c614,_0x2e7ab4){return db[_0x76aa('0x19')][_0x76aa('0x1e')](_0xb5e8a9[_0x76aa('0x1f')],{'raw':_0xb5e8a9[_0x76aa('0x1b')]?_0xb5e8a9[_0x76aa('0x1b')][_0x76aa('0x1c')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0xb5e8a9['options']?_0xb5e8a9[_0x76aa('0x1b')]['where']||null:null,'attributes':_0xb5e8a9[_0x76aa('0x1b')]?_0xb5e8a9[_0x76aa('0x1b')][_0x76aa('0x20')]||null:null,'limit':_0xb5e8a9[_0x76aa('0x1b')]?_0xb5e8a9[_0x76aa('0x1b')][_0x76aa('0x21')]||null:null})[_0x76aa('0xe')](function(_0x3827ec){logger[_0x76aa('0xf')](_0x76aa('0x22'),_0xb5e8a9);logger['debug'](_0x76aa('0x22'),_0xb5e8a9,JSON[_0x76aa('0x13')](_0x3827ec));_0x25c614(_0x3827ec);})[_0x76aa('0x1d')](function(_0x928ccf){logger[_0x76aa('0x14')](_0x76aa('0x22'),_0x928ccf[_0x76aa('0x16')],_0xb5e8a9);_0x2e7ab4(_0x1d6d15['error'](0x1f4,_0x928ccf[_0x76aa('0x16')]));});});};
\ No newline at end of file
index d55db92..f36a931 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x993c=['faxMessage:','./faxMessage.events','save','remove','removeListener'];(function(_0x514fef,_0x4f720c){var _0x47cc70=function(_0x64e566){while(--_0x64e566){_0x514fef['push'](_0x514fef['shift']());}};_0x47cc70(++_0x4f720c);}(_0x993c,0xe2));var _0xc993=function(_0x344e6b,_0x56814f){_0x344e6b=_0x344e6b-0x0;var _0x1f1e1e=_0x993c[_0x344e6b];return _0x1f1e1e;};'use strict';var FaxMessageEvents=require(_0xc993('0x0'));var events=[_0xc993('0x1'),_0xc993('0x2'),'update'];function createListener(_0x1a629b,_0xb535fa){return function(_0x2d903c){_0xb535fa['emit'](_0x1a629b,_0x2d903c);};}function removeListener(_0x5eaf77,_0x510a08){return function(){FaxMessageEvents[_0xc993('0x3')](_0x5eaf77,_0x510a08);};}exports['register']=function(_0x2f071b){for(var _0x3155e6=0x0,_0x426b8d=events['length'];_0x3155e6<_0x426b8d;_0x3155e6++){var _0x116a0d=events[_0x3155e6];var _0x3aa8dc=createListener(_0xc993('0x4')+_0x116a0d,_0x2f071b);FaxMessageEvents['on'](_0x116a0d,_0x3aa8dc);}};
\ No newline at end of file
+var _0x8500=['removeListener','register','length','faxMessage:','save','remove','update','emit'];(function(_0x5f0089,_0x227e2c){var _0x193892=function(_0x24051f){while(--_0x24051f){_0x5f0089['push'](_0x5f0089['shift']());}};_0x193892(++_0x227e2c);}(_0x8500,0x18c));var _0x0850=function(_0x4f4764,_0x1526b3){_0x4f4764=_0x4f4764-0x0;var _0x1a37c1=_0x8500[_0x4f4764];return _0x1a37c1;};'use strict';var FaxMessageEvents=require('./faxMessage.events');var events=[_0x0850('0x0'),_0x0850('0x1'),_0x0850('0x2')];function createListener(_0x5583e,_0xcaef42){return function(_0x36f180){_0xcaef42[_0x0850('0x3')](_0x5583e,_0x36f180);};}function removeListener(_0x40b82f,_0x5796f9){return function(){FaxMessageEvents[_0x0850('0x4')](_0x40b82f,_0x5796f9);};}exports[_0x0850('0x5')]=function(_0x23c81c){for(var _0x47d20f=0x0,_0x1685ba=events[_0x0850('0x6')];_0x47d20f<_0x1685ba;_0x47d20f++){var _0x40e651=events[_0x47d20f];var _0x586516=createListener(_0x0850('0x7')+_0x40e651,_0x23c81c);FaxMessageEvents['on'](_0x40e651,_0x586516);}};
\ No newline at end of file
index d628870..7f021c5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9c44=['exports','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','./faxMessage.controller','isAuthenticated','index','get','/describe','/:id','show','download','tracked','create','put','update','/:id/accept','accept','/:id/reject','reject','delete','destroy'];(function(_0x34843e,_0x4c4224){var _0x598f7f=function(_0x12a44c){while(--_0x12a44c){_0x34843e['push'](_0x34843e['shift']());}};_0x598f7f(++_0x4c4224);}(_0x9c44,0x178));var _0x49c4=function(_0x4b369d,_0x265eb8){_0x4b369d=_0x4b369d-0x0;var _0x571a98=_0x9c44[_0x4b369d];return _0x571a98;};'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['get']('/:id/download',auth[_0x49c4('0x7')](),controller[_0x49c4('0xd')]);router['post']('/',auth[_0x49c4('0x7')](),interaction[_0x49c4('0xe')]('fax','faxmessage:create'),controller[_0x49c4('0xf')]);router[_0x49c4('0x10')]('/:id',auth[_0x49c4('0x7')](),controller[_0x49c4('0x11')]);router['put'](_0x49c4('0x12'),auth[_0x49c4('0x7')](),controller[_0x49c4('0x13')]);router[_0x49c4('0x10')](_0x49c4('0x14'),auth[_0x49c4('0x7')](),controller[_0x49c4('0x15')]);router[_0x49c4('0x16')]('/:id',auth[_0x49c4('0x7')](),controller[_0x49c4('0x17')]);module[_0x49c4('0x18')]=router;
\ No newline at end of file
+var _0x0bb5=['express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./faxMessage.controller','get','/describe','isAuthenticated','describe','show','/:id/download','download','post','tracked','fax','faxmessage:create','create','/:id','update','put','/:id/accept','accept','/:id/reject','reject','destroy','exports','multer','util'];(function(_0x5e840c,_0xa66906){var _0x100020=function(_0x1ad645){while(--_0x1ad645){_0x5e840c['push'](_0x5e840c['shift']());}};_0x100020(++_0xa66906);}(_0x0bb5,0x148));var _0x50bb=function(_0x4442ef,_0x1a027d){_0x4442ef=_0x4442ef-0x0;var _0x4b30cb=_0x0bb5[_0x4442ef];return _0x4b30cb;};'use strict';var multer=require(_0x50bb('0x0'));var util=require(_0x50bb('0x1'));var path=require('path');var timeout=require('connect-timeout');var express=require(_0x50bb('0x2'));var router=express[_0x50bb('0x3')]();var fs_extra=require(_0x50bb('0x4'));var auth=require(_0x50bb('0x5'));var interaction=require(_0x50bb('0x6'));var config=require(_0x50bb('0x7'));var controller=require(_0x50bb('0x8'));router[_0x50bb('0x9')]('/',auth['isAuthenticated'](),controller['index']);router[_0x50bb('0x9')](_0x50bb('0xa'),auth[_0x50bb('0xb')](),controller[_0x50bb('0xc')]);router['get']('/:id',auth[_0x50bb('0xb')](),controller[_0x50bb('0xd')]);router[_0x50bb('0x9')](_0x50bb('0xe'),auth['isAuthenticated'](),controller[_0x50bb('0xf')]);router[_0x50bb('0x10')]('/',auth[_0x50bb('0xb')](),interaction[_0x50bb('0x11')](_0x50bb('0x12'),_0x50bb('0x13')),controller[_0x50bb('0x14')]);router['put'](_0x50bb('0x15'),auth['isAuthenticated'](),controller[_0x50bb('0x16')]);router[_0x50bb('0x17')](_0x50bb('0x18'),auth['isAuthenticated'](),controller[_0x50bb('0x19')]);router[_0x50bb('0x17')](_0x50bb('0x1a'),auth['isAuthenticated'](),controller[_0x50bb('0x1b')]);router['delete'](_0x50bb('0x15'),auth[_0x50bb('0xb')](),controller[_0x50bb('0x1c')]);module[_0x50bb('0x1d')]=router;
\ No newline at end of file
index e1176e5..d09e505 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6d3f=['STRING','name','INTEGER','rrmemory','beepall','roundrobin','sequelize','exports'];(function(_0x134c2e,_0x3573c4){var _0x2825db=function(_0x2a574d){while(--_0x2a574d){_0x134c2e['push'](_0x134c2e['shift']());}};_0x2825db(++_0x3573c4);}(_0x6d3f,0xe6));var _0xf6d3=function(_0x1fe2b5,_0x2c0d24){_0x1fe2b5=_0x1fe2b5-0x0;var _0x28c7f5=_0x6d3f[_0x1fe2b5];return _0x28c7f5;};'use strict';var Sequelize=require(_0xf6d3('0x0'));module[_0xf6d3('0x1')]={'name':{'type':Sequelize[_0xf6d3('0x2')],'unique':_0xf6d3('0x3'),'allowNull':![],'validate':{'notEmpty':!![],'is':/^[A-Za-z0-9\.\_]+$/i}},'description':{'type':Sequelize[_0xf6d3('0x2')]},'timeout':{'type':Sequelize[_0xf6d3('0x4')],'allowNull':![],'validate':{'min':0x1,'max':0x20c49b}},'strategy':{'type':Sequelize['ENUM'](_0xf6d3('0x5'),_0xf6d3('0x6'),_0xf6d3('0x7')),'allowNull':![]},'lastAgent':{'type':Sequelize[_0xf6d3('0x4')],'defaultValue':0x0}};
\ No newline at end of file
+var _0xe96f=['sequelize','exports','STRING','name','INTEGER','rrmemory','beepall','roundrobin'];(function(_0x20beae,_0x5eac6d){var _0xf5725=function(_0x926a3b){while(--_0x926a3b){_0x20beae['push'](_0x20beae['shift']());}};_0xf5725(++_0x5eac6d);}(_0xe96f,0x158));var _0xfe96=function(_0x23ef92,_0x26ae31){_0x23ef92=_0x23ef92-0x0;var _0x18dec6=_0xe96f[_0x23ef92];return _0x18dec6;};'use strict';var Sequelize=require(_0xfe96('0x0'));module[_0xfe96('0x1')]={'name':{'type':Sequelize[_0xfe96('0x2')],'unique':_0xfe96('0x3'),'allowNull':![],'validate':{'notEmpty':!![],'is':/^[A-Za-z0-9\.\_]+$/i}},'description':{'type':Sequelize[_0xfe96('0x2')]},'timeout':{'type':Sequelize[_0xfe96('0x4')],'allowNull':![],'validate':{'min':0x1,'max':0x20c49b}},'strategy':{'type':Sequelize['ENUM'](_0xfe96('0x5'),_0xfe96('0x6'),_0xfe96('0x7')),'allowNull':![]},'lastAgent':{'type':Sequelize[_0xfe96('0x4')],'defaultValue':0x0}};
\ No newline at end of file
index 4beb984..bc3686e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xad12=['SELECT','every','TeamId','includes','all','compact','value','transaction','isEmpty','removeAgents','addAgents','spread','emit','isArray','userFaxQueue:remove','getAgents','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','path','sox','to-csv','lodash','squel','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','defaults','localhost','redis','./faxQueue.socket','register','sendStatus','status','json','offset','undefined','count','limit','set','apply','update','destroy','then','get','FaxQueues','UserProfileResource','send','index','map','FaxQueue','rawAttributes','fieldName','key','model','name','query','filters','attributes','intersection','fields','length','nolimit','order','sort','where','pick','type','filter','merge','options','includeAll','findAll','rows','catch','keys','find','create','body','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','UserProfileSection','autoAssociation','error','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','params','describe','UserFaxQueue','hasOwnProperty','FaxQueueId','User','findAndCountAll','UserId','agent','faxPause','createdAt','format','%s/%s','SIP','updatedAt','Team','getTeams','addTeams','ids','online','voicePause','flatMap','Agents','sequelize','findOrCreate','forEach','userFaxQueue:save','removeTeams','select','user_has_teams','ut.TeamId\x20=\x20tq.TeamId','FaxQueueId\x20=\x20?','ut.UserId\x20=\x20?','QueryTypes'];(function(_0x53293b,_0x32d9f2){var _0x48ee8b=function(_0x570f05){while(--_0x570f05){_0x53293b['push'](_0x53293b['shift']());}};_0x48ee8b(++_0x32d9f2);}(_0xad12,0x1a5));var _0x2ad1=function(_0x36b3f2,_0x49499b){_0x36b3f2=_0x36b3f2-0x0;var _0x67eaeb=_0xad12[_0x36b3f2];return _0x67eaeb;};'use strict';var emlformat=require(_0x2ad1('0x0'));var rimraf=require(_0x2ad1('0x1'));var zipdir=require(_0x2ad1('0x2'));var jsonpatch=require(_0x2ad1('0x3'));var rp=require(_0x2ad1('0x4'));var moment=require(_0x2ad1('0x5'));var BPromise=require(_0x2ad1('0x6'));var Mustache=require(_0x2ad1('0x7'));var util=require('util');var path=require(_0x2ad1('0x8'));var sox=require(_0x2ad1('0x9'));var csv=require(_0x2ad1('0xa'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x2ad1('0xb'));var squel=require(_0x2ad1('0xc'));var crypto=require('crypto');var jsforce=require(_0x2ad1('0xd'));var deskjs=require(_0x2ad1('0xe'));var toCsv=require(_0x2ad1('0xa'));var querystring=require('querystring');var Papa=require(_0x2ad1('0xf'));var Redis=require(_0x2ad1('0x10'));var authService=require(_0x2ad1('0x11'));var qs=require(_0x2ad1('0x12'));var as=require(_0x2ad1('0x13'));var hardwareService=require(_0x2ad1('0x14'));var logger=require('../../config/logger')(_0x2ad1('0x15'));var utils=require(_0x2ad1('0x16'));var config=require(_0x2ad1('0x17'));var licenseUtil=require(_0x2ad1('0x18'));var db=require(_0x2ad1('0x19'))['db'];config['redis']=_[_0x2ad1('0x1a')](config['redis'],{'host':_0x2ad1('0x1b'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0x2ad1('0x1c')]));require(_0x2ad1('0x1d'))[_0x2ad1('0x1e')](socket);function respondWithStatusCode(_0x3418de,_0x47fefd){_0x47fefd=_0x47fefd||0xcc;return function(_0x53af14){if(_0x53af14){return _0x3418de[_0x2ad1('0x1f')](_0x47fefd);}return _0x3418de['status'](_0x47fefd)['end']();};}function respondWithResult(_0x59ad1a,_0x52f5d4){_0x52f5d4=_0x52f5d4||0xc8;return function(_0x1fdb97){if(_0x1fdb97){return _0x59ad1a[_0x2ad1('0x20')](_0x52f5d4)[_0x2ad1('0x21')](_0x1fdb97);}};}function respondWithFilteredResult(_0x22b182,_0x152eec){return function(_0x539494){if(_0x539494){var _0x458c82=typeof _0x152eec[_0x2ad1('0x22')]===_0x2ad1('0x23')&&typeof _0x152eec['limit']===_0x2ad1('0x23');var _0x2da17f=_0x539494[_0x2ad1('0x24')];var _0x596be1=_0x458c82?0x0:_0x152eec[_0x2ad1('0x22')];var _0x5dd544=_0x458c82?_0x539494[_0x2ad1('0x24')]:_0x152eec[_0x2ad1('0x22')]+_0x152eec[_0x2ad1('0x25')];var _0x113d2a;if(_0x5dd544>=_0x2da17f){_0x5dd544=_0x2da17f;_0x113d2a=0xc8;}else{_0x113d2a=0xce;}_0x22b182['status'](_0x113d2a);return _0x22b182[_0x2ad1('0x26')]('Content-Range',_0x596be1+'-'+_0x5dd544+'/'+_0x2da17f)[_0x2ad1('0x21')](_0x539494);}return null;};}function patchUpdates(_0xa91fcc){return function(_0x1c75e8){try{jsonpatch[_0x2ad1('0x27')](_0x1c75e8,_0xa91fcc,!![]);}catch(_0x1de0e8){return BPromise['reject'](_0x1de0e8);}return _0x1c75e8['save']();};}function saveUpdates(_0x47ec22,_0x5b0c94){return function(_0x396ba2){if(_0x396ba2){return _0x396ba2[_0x2ad1('0x28')](_0x47ec22)['then'](function(_0x3f6803){return _0x3f6803;});}return null;};}function removeEntity(_0x4b0a14,_0x4444fd){return function(_0x534197){if(_0x534197){return _0x534197[_0x2ad1('0x29')]()[_0x2ad1('0x2a')](function(){var _0x3509e1=_0x534197[_0x2ad1('0x2b')]({'plain':!![]});var _0x129a9c=_0x2ad1('0x2c');return db[_0x2ad1('0x2d')][_0x2ad1('0x29')]({'where':{'type':_0x129a9c,'resourceId':_0x3509e1['id']}})['then'](function(){return _0x534197;});})[_0x2ad1('0x2a')](function(){_0x4b0a14[_0x2ad1('0x20')](0xcc)['end']();});}};}function handleEntityNotFound(_0x445ae4,_0x31eeca){return function(_0x3657f6){if(!_0x3657f6){_0x445ae4[_0x2ad1('0x1f')](0x194);}return _0x3657f6;};}function handleError(_0x1f3a14,_0x4d3ec0){_0x4d3ec0=_0x4d3ec0||0x1f4;return function(_0x57fda2){logger['error'](_0x57fda2['stack']);if(_0x57fda2['name']){delete _0x57fda2['name'];}_0x1f3a14[_0x2ad1('0x20')](_0x4d3ec0)[_0x2ad1('0x2e')](_0x57fda2);};}exports[_0x2ad1('0x2f')]=function(_0x2924df,_0x4e6806){var _0x26d641={},_0x1954fe={},_0x344faa={'count':0x0,'rows':[]};var _0x1ca820=_[_0x2ad1('0x30')](db[_0x2ad1('0x31')][_0x2ad1('0x32')],function(_0x43c608){return{'name':_0x43c608[_0x2ad1('0x33')],'type':_0x43c608['type'][_0x2ad1('0x34')]};});_0x1954fe[_0x2ad1('0x35')]=_[_0x2ad1('0x30')](_0x1ca820,_0x2ad1('0x36'));_0x1954fe[_0x2ad1('0x37')]=_['keys'](_0x2924df[_0x2ad1('0x37')]);_0x1954fe[_0x2ad1('0x38')]=_['intersection'](_0x1954fe[_0x2ad1('0x35')],_0x1954fe[_0x2ad1('0x37')]);_0x26d641[_0x2ad1('0x39')]=_[_0x2ad1('0x3a')](_0x1954fe[_0x2ad1('0x35')],qs[_0x2ad1('0x3b')](_0x2924df[_0x2ad1('0x37')][_0x2ad1('0x3b')]));_0x26d641[_0x2ad1('0x39')]=_0x26d641[_0x2ad1('0x39')][_0x2ad1('0x3c')]?_0x26d641[_0x2ad1('0x39')]:_0x1954fe[_0x2ad1('0x35')];if(!_0x2924df[_0x2ad1('0x37')]['hasOwnProperty'](_0x2ad1('0x3d'))){_0x26d641[_0x2ad1('0x25')]=qs[_0x2ad1('0x25')](_0x2924df['query'][_0x2ad1('0x25')]);_0x26d641[_0x2ad1('0x22')]=qs[_0x2ad1('0x22')](_0x2924df[_0x2ad1('0x37')][_0x2ad1('0x22')]);}_0x26d641[_0x2ad1('0x3e')]=qs[_0x2ad1('0x3f')](_0x2924df[_0x2ad1('0x37')]['sort']);_0x26d641[_0x2ad1('0x40')]=qs[_0x2ad1('0x38')](_[_0x2ad1('0x41')](_0x2924df[_0x2ad1('0x37')],_0x1954fe['filters']),_0x1ca820);if(_0x2924df[_0x2ad1('0x37')]['filter']){_0x26d641[_0x2ad1('0x40')]=_['merge'](_0x26d641[_0x2ad1('0x40')],{'$or':_[_0x2ad1('0x30')](_0x1ca820,function(_0x552488){if(_0x552488[_0x2ad1('0x42')]!=='VIRTUAL'){var _0x59bf90={};_0x59bf90[_0x552488['name']]={'$like':'%'+_0x2924df['query'][_0x2ad1('0x43')]+'%'};return _0x59bf90;}})});}_0x26d641=_[_0x2ad1('0x44')]({},_0x26d641,_0x2924df[_0x2ad1('0x45')]);var _0x469175={'where':_0x26d641[_0x2ad1('0x40')]};return db['FaxQueue']['count'](_0x469175)[_0x2ad1('0x2a')](function(_0x246bda){_0x344faa[_0x2ad1('0x24')]=_0x246bda;if(_0x2924df['query'][_0x2ad1('0x46')]){_0x26d641['include']=[{'all':!![]}];}return db['FaxQueue'][_0x2ad1('0x47')](_0x26d641);})['then'](function(_0x269b76){_0x344faa[_0x2ad1('0x48')]=_0x269b76;return _0x344faa;})['then'](respondWithFilteredResult(_0x4e6806,_0x26d641))[_0x2ad1('0x49')](handleError(_0x4e6806,null));};exports['show']=function(_0x1c29e3,_0x5c0af5){var _0x1c7b51={'raw':!![],'where':{'id':_0x1c29e3['params']['id']}},_0x5e00fe={};_0x5e00fe[_0x2ad1('0x35')]=_[_0x2ad1('0x4a')](db[_0x2ad1('0x31')]['rawAttributes']);_0x5e00fe[_0x2ad1('0x37')]=_[_0x2ad1('0x4a')](_0x1c29e3['query']);_0x5e00fe['filters']=_[_0x2ad1('0x3a')](_0x5e00fe[_0x2ad1('0x35')],_0x5e00fe[_0x2ad1('0x37')]);_0x1c7b51[_0x2ad1('0x39')]=_[_0x2ad1('0x3a')](_0x5e00fe[_0x2ad1('0x35')],qs[_0x2ad1('0x3b')](_0x1c29e3[_0x2ad1('0x37')][_0x2ad1('0x3b')]));_0x1c7b51[_0x2ad1('0x39')]=_0x1c7b51['attributes'][_0x2ad1('0x3c')]?_0x1c7b51[_0x2ad1('0x39')]:_0x5e00fe['model'];if(_0x1c29e3[_0x2ad1('0x37')][_0x2ad1('0x46')]){_0x1c7b51['include']=[{'all':!![]}];}_0x1c7b51=_[_0x2ad1('0x44')]({},_0x1c7b51,_0x1c29e3[_0x2ad1('0x45')]);return db[_0x2ad1('0x31')][_0x2ad1('0x4b')](_0x1c7b51)[_0x2ad1('0x2a')](handleEntityNotFound(_0x5c0af5,null))[_0x2ad1('0x2a')](respondWithResult(_0x5c0af5,null))['catch'](handleError(_0x5c0af5,null));};exports[_0x2ad1('0x4c')]=function(_0x30ae9c,_0x43551a){return db[_0x2ad1('0x31')][_0x2ad1('0x4c')](_0x30ae9c[_0x2ad1('0x4d')],{})[_0x2ad1('0x2a')](function(_0x24e773){var _0x3fdd36=_0x30ae9c[_0x2ad1('0x4e')][_0x2ad1('0x2b')]({'plain':!![]});if(!_0x3fdd36)throw new Error(_0x2ad1('0x4f'));if(_0x3fdd36[_0x2ad1('0x50')]===_0x2ad1('0x4e')){var _0x320950=_0x24e773[_0x2ad1('0x2b')]({'plain':!![]});var _0x45a197=_0x2ad1('0x2c');return db[_0x2ad1('0x51')][_0x2ad1('0x4b')]({'where':{'name':_0x45a197,'userProfileId':_0x3fdd36['userProfileId']},'raw':!![]})[_0x2ad1('0x2a')](function(_0x17e791){if(_0x17e791&&_0x17e791[_0x2ad1('0x52')]===0x0){return db[_0x2ad1('0x2d')][_0x2ad1('0x4c')]({'name':_0x320950[_0x2ad1('0x36')],'resourceId':_0x320950['id'],'type':_0x17e791[_0x2ad1('0x36')],'sectionId':_0x17e791['id']},{})['then'](function(){return _0x24e773;});}else{return _0x24e773;}})[_0x2ad1('0x49')](function(_0xf80577){logger[_0x2ad1('0x53')](_0x2ad1('0x54'),_0xf80577);throw _0xf80577;});}return _0x24e773;})['then'](respondWithResult(_0x43551a,0xc9))[_0x2ad1('0x49')](handleError(_0x43551a,null));};exports[_0x2ad1('0x28')]=function(_0x5b9a64,_0x28adca){if(_0x5b9a64['body']['id']){delete _0x5b9a64[_0x2ad1('0x4d')]['id'];}return db[_0x2ad1('0x31')][_0x2ad1('0x4b')]({'where':{'id':_0x5b9a64[_0x2ad1('0x55')]['id']}})[_0x2ad1('0x2a')](handleEntityNotFound(_0x28adca,null))[_0x2ad1('0x2a')](saveUpdates(_0x5b9a64['body'],null))[_0x2ad1('0x2a')](respondWithResult(_0x28adca,null))[_0x2ad1('0x49')](handleError(_0x28adca,null));};exports['destroy']=function(_0x329931,_0x150ded){return db['FaxQueue'][_0x2ad1('0x4b')]({'where':{'id':_0x329931['params']['id']}})[_0x2ad1('0x2a')](handleEntityNotFound(_0x150ded,null))['then'](removeEntity(_0x150ded,null))[_0x2ad1('0x49')](handleError(_0x150ded,null));};exports[_0x2ad1('0x56')]=function(_0x5ccb82,_0x3397e7){return db['FaxQueue']['describe']()['then'](respondWithResult(_0x3397e7,null))[_0x2ad1('0x49')](handleError(_0x3397e7,null));};exports['getMembers']=function(_0x488b2f,_0x54de58,_0x5920cc){var _0x3975bd={'raw':!![],'where':{}},_0x3e9d36={},_0x500b72;return db[_0x2ad1('0x31')]['findOne']({'where':{'id':_0x488b2f[_0x2ad1('0x55')]['id']}})[_0x2ad1('0x2a')](handleEntityNotFound(_0x54de58,null))[_0x2ad1('0x2a')](function(_0x3173cd){if(_0x3173cd){_0x500b72=_0x3173cd[_0x2ad1('0x2b')]({'plain':!![]});_0x3e9d36['model']=_[_0x2ad1('0x4a')](db[_0x2ad1('0x57')][_0x2ad1('0x32')]);_0x3e9d36[_0x2ad1('0x37')]=_['keys'](_0x488b2f[_0x2ad1('0x37')]);_0x3e9d36[_0x2ad1('0x38')]=_['intersection'](_0x3e9d36['model'],_0x3e9d36[_0x2ad1('0x37')]);_0x3975bd[_0x2ad1('0x39')]=_[_0x2ad1('0x3a')](_0x3e9d36[_0x2ad1('0x35')],qs[_0x2ad1('0x3b')](_0x488b2f['query'][_0x2ad1('0x3b')]));_0x3975bd[_0x2ad1('0x39')]=_0x3975bd[_0x2ad1('0x39')][_0x2ad1('0x3c')]?_0x3975bd['attributes']:_0x3e9d36[_0x2ad1('0x35')];if(!_0x488b2f[_0x2ad1('0x37')][_0x2ad1('0x58')](_0x2ad1('0x3d'))){_0x3975bd[_0x2ad1('0x25')]=qs[_0x2ad1('0x25')](_0x488b2f['query'][_0x2ad1('0x25')]);_0x3975bd[_0x2ad1('0x22')]=qs[_0x2ad1('0x22')](_0x488b2f[_0x2ad1('0x37')][_0x2ad1('0x22')]);}_0x3975bd[_0x2ad1('0x3e')]=qs['sort'](_0x488b2f[_0x2ad1('0x37')][_0x2ad1('0x3f')]);_0x3975bd[_0x2ad1('0x40')]=qs[_0x2ad1('0x38')](_[_0x2ad1('0x41')](_0x488b2f['query'],_0x3e9d36[_0x2ad1('0x38')]));_0x3975bd[_0x2ad1('0x40')][_0x2ad1('0x59')]=_0x3173cd['id'];if(_0x488b2f[_0x2ad1('0x37')][_0x2ad1('0x43')]){_0x3975bd['where']=_[_0x2ad1('0x44')](_0x3975bd[_0x2ad1('0x40')],{'$or':_[_0x2ad1('0x30')](_0x3975bd['attributes'],function(_0x126e6b){var _0x29e5c6={};_0x29e5c6[_0x126e6b]={'$like':'%'+_0x488b2f['query'][_0x2ad1('0x43')]+'%'};return _0x29e5c6;})});}_0x3975bd=_[_0x2ad1('0x44')]({},_0x3975bd,_0x488b2f[_0x2ad1('0x45')]);return db[_0x2ad1('0x57')][_0x2ad1('0x47')](_0x3975bd);}})['then'](function(_0x6250fe){if(_0x6250fe){return db[_0x2ad1('0x5a')][_0x2ad1('0x5b')]({'where':{'id':_[_0x2ad1('0x30')](_0x6250fe,_0x2ad1('0x5c')),'role':_0x2ad1('0x5d')},'attributes':['id',_0x2ad1('0x36'),_0x2ad1('0x5e'),'updatedAt',_0x2ad1('0x5f')]});}})[_0x2ad1('0x2a')](function(_0x1d07a7){if(_0x1d07a7){return{'count':_0x1d07a7[_0x2ad1('0x24')],'rows':_[_0x2ad1('0x30')](_0x1d07a7['rows'],function(_0x2e864d){return{'membername':_0x2e864d[_0x2ad1('0x36')],'UserId':_0x2e864d['id'],'queue_name':_0x500b72['name'],'FaxQueueId':_0x500b72['id'],'interface':util[_0x2ad1('0x60')](_0x2ad1('0x61'),_0x2ad1('0x62'),_0x2e864d[_0x2ad1('0x36')]),'penalty':0x0,'paused':_0x2e864d[_0x2ad1('0x5e')],'createdAt':_0x2e864d['createdAt'],'updatedAt':_0x2e864d[_0x2ad1('0x63')]};})};}else{return{'count':0x0,'rows':[]};}})['then'](respondWithFilteredResult(_0x54de58,_0x3975bd))[_0x2ad1('0x49')](handleError(_0x54de58,null));};exports['getTeams']=function(_0x2ad641,_0x3abdf7,_0x224256){var _0x28f98e={};var _0x5ad343={};var _0x25a05f;var _0x2ec8f4;return db[_0x2ad1('0x31')]['findOne']({'where':{'id':_0x2ad641[_0x2ad1('0x55')]['id']}})['then'](handleEntityNotFound(_0x3abdf7,null))[_0x2ad1('0x2a')](function(_0x4dfa6d){if(_0x4dfa6d){_0x25a05f=_0x4dfa6d;_0x5ad343[_0x2ad1('0x35')]=_[_0x2ad1('0x4a')](db[_0x2ad1('0x64')]['rawAttributes']);_0x5ad343[_0x2ad1('0x37')]=_[_0x2ad1('0x4a')](_0x2ad641['query']);_0x5ad343['filters']=_[_0x2ad1('0x3a')](_0x5ad343[_0x2ad1('0x35')],_0x5ad343['query']);_0x28f98e['attributes']=_[_0x2ad1('0x3a')](_0x5ad343[_0x2ad1('0x35')],qs[_0x2ad1('0x3b')](_0x2ad641[_0x2ad1('0x37')][_0x2ad1('0x3b')]));_0x28f98e[_0x2ad1('0x39')]=_0x28f98e[_0x2ad1('0x39')][_0x2ad1('0x3c')]?_0x28f98e[_0x2ad1('0x39')]:_0x5ad343['model'];_0x28f98e[_0x2ad1('0x3e')]=qs[_0x2ad1('0x3f')](_0x2ad641[_0x2ad1('0x37')][_0x2ad1('0x3f')]);_0x28f98e[_0x2ad1('0x40')]=qs[_0x2ad1('0x38')](_['pick'](_0x2ad641[_0x2ad1('0x37')],_0x5ad343[_0x2ad1('0x38')]));if(_0x2ad641['query'][_0x2ad1('0x43')]){_0x28f98e['where']=_[_0x2ad1('0x44')](_0x28f98e[_0x2ad1('0x40')],{'$or':_[_0x2ad1('0x30')](_0x28f98e[_0x2ad1('0x39')],function(_0x14f4bb){var _0x3588e1={};_0x3588e1[_0x14f4bb]={'$like':'%'+_0x2ad641[_0x2ad1('0x37')][_0x2ad1('0x43')]+'%'};return _0x3588e1;})});}_0x28f98e=_['merge']({},_0x28f98e,_0x2ad641['options']);return _0x25a05f['getTeams'](_0x28f98e);}})[_0x2ad1('0x2a')](function(_0x12b656){if(_0x12b656){_0x2ec8f4=_0x12b656[_0x2ad1('0x3c')];if(!_0x2ad641[_0x2ad1('0x37')][_0x2ad1('0x58')](_0x2ad1('0x3d'))){_0x28f98e['limit']=qs['limit'](_0x2ad641[_0x2ad1('0x37')][_0x2ad1('0x25')]);_0x28f98e[_0x2ad1('0x22')]=qs['offset'](_0x2ad641[_0x2ad1('0x37')][_0x2ad1('0x22')]);}return _0x25a05f[_0x2ad1('0x65')](_0x28f98e);}})['then'](function(_0x559e0e){if(_0x559e0e){return _0x559e0e?{'count':_0x2ec8f4,'rows':_0x559e0e}:null;}})['then'](respondWithResult(_0x3abdf7,null))[_0x2ad1('0x49')](handleError(_0x3abdf7,null));};exports[_0x2ad1('0x66')]=function(_0x9a41e6,_0x3af605,_0x49f71b){var _0x4dd574=_0x9a41e6[_0x2ad1('0x4d')][_0x2ad1('0x67')];return db[_0x2ad1('0x64')][_0x2ad1('0x47')]({'where':{'id':_0x4dd574},'attributes':['id'],'include':[{'model':db[_0x2ad1('0x5a')],'as':'Agents','attributes':['id',_0x2ad1('0x36'),_0x2ad1('0x68'),_0x2ad1('0x69'),'interface'],'raw':!![]}]})[_0x2ad1('0x2a')](function(_0x2bbf18){if(_0x2bbf18){var _0x31697b=_[_0x2ad1('0x6a')](_0x2bbf18,function(_0x279b86){var _0x3aecb5=_0x279b86['get']({'plain':!![]});return _0x3aecb5[_0x2ad1('0x6b')];});return db[_0x2ad1('0x31')]['find']({'where':{'id':_0x9a41e6[_0x2ad1('0x55')]['id']}})[_0x2ad1('0x2a')](function(_0x306d32){return db[_0x2ad1('0x6c')]['transaction'](function(_0x2cafaf){return _0x306d32['addTeams'](_0x4dd574,{'transaction':_0x2cafaf})[_0x2ad1('0x2a')](function(){return BPromise['each'](_0x31697b,function(_0x425e22){return db[_0x2ad1('0x57')][_0x2ad1('0x6d')]({'where':{'UserId':_0x425e22['id'],'FaxQueueId':_0x9a41e6[_0x2ad1('0x55')]['id']},'transaction':_0x2cafaf});});})[_0x2ad1('0x2a')](function(){_0x31697b[_0x2ad1('0x6e')](function(_0xe068fe){socket['emit'](_0x2ad1('0x6f'),{'UserId':_0xe068fe['id'],'FaxQueueId':_0x306d32['id']});});});});});}})[_0x2ad1('0x2a')](respondWithStatusCode(_0x3af605,null))['catch'](handleError(_0x3af605,null));};exports[_0x2ad1('0x70')]=function(_0x41ec02,_0x2eacc7,_0x29ef84){return db[_0x2ad1('0x64')][_0x2ad1('0x47')]({'where':{'id':_0x41ec02[_0x2ad1('0x37')]['ids']},'attributes':['id'],'include':[{'model':db[_0x2ad1('0x5a')],'as':_0x2ad1('0x6b'),'attributes':['id'],'raw':!![]}]})[_0x2ad1('0x2a')](handleEntityNotFound(_0x2eacc7,null))[_0x2ad1('0x2a')](function(_0x3a7079){var _0x562ea9=_[_0x2ad1('0x30')](_0x3a7079,'id');var _0x4fb021=[];var _0x3c4160=[];var _0x2509c6=squel[_0x2ad1('0x71')]();_0x2509c6['field']('tq.TeamId')['from']('team_has_fax_queues','tq')['join'](_0x2ad1('0x72'),'ut',_0x2ad1('0x73'))['where'](_0x2ad1('0x74'),_0x41ec02[_0x2ad1('0x55')]['id']);for(var _0x4fe05c=0x0;_0x4fe05c<_0x3a7079[_0x2ad1('0x3c')];_0x4fe05c+=0x1){let _0x405a21=_0x3a7079[_0x4fe05c];for(var _0x31f046=0x0;_0x31f046<_0x405a21[_0x2ad1('0x6b')][_0x2ad1('0x3c')];_0x31f046+=0x1){let _0x5c9cfa=_0x405a21['Agents'][_0x31f046];var _0x97d13c=_0x2509c6['clone']();_0x97d13c[_0x2ad1('0x40')](_0x2ad1('0x75'),_0x5c9cfa['id']);_0x3c4160['push'](db[_0x2ad1('0x6c')][_0x2ad1('0x37')](_0x97d13c['toString'](),{'type':db[_0x2ad1('0x6c')][_0x2ad1('0x76')][_0x2ad1('0x77')]})['then'](function(_0x28e1f2){if(_0x28e1f2[_0x2ad1('0x3c')]===0x1){return _0x5c9cfa['id'];}else{var _0x15bbf1=_[_0x2ad1('0x78')](_['map'](_0x28e1f2,_0x2ad1('0x79')),function(_0x1a21da){return _[_0x2ad1('0x7a')](_0x562ea9,_0x1a21da);});if(_0x15bbf1){return _0x5c9cfa['id'];}}}));}}return BPromise[_0x2ad1('0x7b')](_0x3c4160)[_0x2ad1('0x2a')](function(_0x3f4403){_0x4fb021=_(_0x4fb021)['union'](_0x3f4403)[_0x2ad1('0x7c')]()[_0x2ad1('0x7d')]();return db[_0x2ad1('0x31')][_0x2ad1('0x4b')]({'where':{'id':_0x41ec02[_0x2ad1('0x55')]['id']}})[_0x2ad1('0x2a')](function(_0x31eee8){return db[_0x2ad1('0x6c')][_0x2ad1('0x7e')](function(_0x32cf22){return _0x31eee8[_0x2ad1('0x70')](_0x41ec02['query'][_0x2ad1('0x67')],{'transaction':_0x32cf22})[_0x2ad1('0x2a')](function(){if(!_[_0x2ad1('0x7f')](_0x4fb021)){return _0x31eee8[_0x2ad1('0x80')](_0x4fb021,{'transaction':_0x32cf22});}})[_0x2ad1('0x2a')](function(){_0x4fb021[_0x2ad1('0x6e')](function(_0x3f1800){socket['emit']('userFaxQueue:remove',{'UserId':_0x3f1800,'FaxQueueId':_0x31eee8['id']});});});});});});})[_0x2ad1('0x2a')](respondWithStatusCode(_0x2eacc7,null))[_0x2ad1('0x49')](handleError(_0x2eacc7,null));};exports[_0x2ad1('0x81')]=function(_0x290038,_0x181e7d,_0x5e2a73){return db[_0x2ad1('0x31')][_0x2ad1('0x4b')]({'where':{'id':_0x290038[_0x2ad1('0x55')]['id']}})['then'](handleEntityNotFound(_0x181e7d,null))[_0x2ad1('0x2a')](function(_0x416554){if(_0x416554){return _0x416554[_0x2ad1('0x81')](_0x290038[_0x2ad1('0x4d')][_0x2ad1('0x67')],_['omit'](_0x290038[_0x2ad1('0x4d')],[_0x2ad1('0x67'),'id'])||{})[_0x2ad1('0x82')](function(_0xb51712){for(var _0x2e72c8=0x0;_0x2e72c8<_0x290038['body']['ids']['length'];_0x2e72c8+=0x1){socket[_0x2ad1('0x83')]('userFaxQueue:save',{'UserId':Number(_0x290038[_0x2ad1('0x4d')][_0x2ad1('0x67')][_0x2e72c8]),'FaxQueueId':Number(_0x290038[_0x2ad1('0x55')]['id'])});}return _0xb51712;});}})[_0x2ad1('0x2a')](respondWithResult(_0x181e7d,null))[_0x2ad1('0x49')](handleError(_0x181e7d,null));};exports[_0x2ad1('0x80')]=function(_0x2d1ed9,_0x1daaf6,_0x22395d){return db[_0x2ad1('0x31')]['find']({'where':{'id':_0x2d1ed9[_0x2ad1('0x55')]['id']}})[_0x2ad1('0x2a')](handleEntityNotFound(_0x1daaf6,null))[_0x2ad1('0x2a')](function(_0x32be28){if(_0x32be28){return _0x32be28['removeAgents'](_0x2d1ed9[_0x2ad1('0x37')][_0x2ad1('0x67')])[_0x2ad1('0x2a')](function(){if(_[_0x2ad1('0x84')](_0x2d1ed9['query']['ids'])){for(var _0x3f032c=0x0;_0x3f032c<_0x2d1ed9[_0x2ad1('0x37')][_0x2ad1('0x67')][_0x2ad1('0x3c')];_0x3f032c+=0x1){socket[_0x2ad1('0x83')]('userFaxQueue:remove',{'UserId':Number(_0x2d1ed9[_0x2ad1('0x37')]['ids'][_0x3f032c]),'FaxQueueId':Number(_0x2d1ed9[_0x2ad1('0x55')]['id'])});}}else{socket['emit'](_0x2ad1('0x85'),{'UserId':Number(_0x2d1ed9[_0x2ad1('0x37')]['ids']),'FaxQueueId':Number(_0x2d1ed9['params']['id'])});}});}})['then'](respondWithStatusCode(_0x1daaf6,null))['catch'](handleError(_0x1daaf6,null));};exports[_0x2ad1('0x86')]=function(_0x328fd0,_0x262204,_0x230783){var _0x22bb86={};var _0x2f8f08={};var _0x5af622;var _0x6bbd8f;return db[_0x2ad1('0x31')]['findOne']({'where':{'id':_0x328fd0[_0x2ad1('0x55')]['id']}})['then'](handleEntityNotFound(_0x262204,null))['then'](function(_0x3c4475){if(_0x3c4475){_0x5af622=_0x3c4475;_0x2f8f08[_0x2ad1('0x35')]=_[_0x2ad1('0x4a')](db['User']['rawAttributes']);_0x2f8f08[_0x2ad1('0x37')]=_[_0x2ad1('0x4a')](_0x328fd0[_0x2ad1('0x37')]);_0x2f8f08[_0x2ad1('0x38')]=_[_0x2ad1('0x3a')](_0x2f8f08[_0x2ad1('0x35')],_0x2f8f08[_0x2ad1('0x37')]);_0x22bb86[_0x2ad1('0x39')]=_[_0x2ad1('0x3a')](_0x2f8f08[_0x2ad1('0x35')],qs[_0x2ad1('0x3b')](_0x328fd0[_0x2ad1('0x37')][_0x2ad1('0x3b')]));_0x22bb86[_0x2ad1('0x39')]=_0x22bb86[_0x2ad1('0x39')][_0x2ad1('0x3c')]?_0x22bb86[_0x2ad1('0x39')]:_0x2f8f08[_0x2ad1('0x35')];_0x22bb86['order']=qs[_0x2ad1('0x3f')](_0x328fd0[_0x2ad1('0x37')][_0x2ad1('0x3f')]);_0x22bb86[_0x2ad1('0x40')]=qs[_0x2ad1('0x38')](_['pick'](_0x328fd0[_0x2ad1('0x37')],_0x2f8f08['filters']));if(_0x328fd0[_0x2ad1('0x37')][_0x2ad1('0x43')]){_0x22bb86['where']=_[_0x2ad1('0x44')](_0x22bb86[_0x2ad1('0x40')],{'$or':_[_0x2ad1('0x30')](_0x22bb86[_0x2ad1('0x39')],function(_0x569261){var _0x2ca140={};_0x2ca140[_0x569261]={'$like':'%'+_0x328fd0[_0x2ad1('0x37')]['filter']+'%'};return _0x2ca140;})});}_0x22bb86=_[_0x2ad1('0x44')]({},_0x22bb86,_0x328fd0[_0x2ad1('0x45')]);return _0x5af622[_0x2ad1('0x86')](_0x22bb86);}})[_0x2ad1('0x2a')](function(_0x11bb9a){if(_0x11bb9a){_0x6bbd8f=_0x11bb9a[_0x2ad1('0x3c')];if(!_0x328fd0['query'][_0x2ad1('0x58')](_0x2ad1('0x3d'))){_0x22bb86[_0x2ad1('0x25')]=qs[_0x2ad1('0x25')](_0x328fd0[_0x2ad1('0x37')]['limit']);_0x22bb86[_0x2ad1('0x22')]=qs['offset'](_0x328fd0[_0x2ad1('0x37')]['offset']);}return _0x5af622[_0x2ad1('0x86')](_0x22bb86);}})[_0x2ad1('0x2a')](function(_0x3c687e){if(_0x3c687e){return _0x3c687e?{'count':_0x6bbd8f,'rows':_0x3c687e}:null;}})[_0x2ad1('0x2a')](respondWithResult(_0x262204,null))[_0x2ad1('0x49')](handleError(_0x262204,null));};
\ No newline at end of file
+var _0x0ed3=['query','attributes','fields','length','hasOwnProperty','order','sort','where','filter','merge','VIRTUAL','options','count','include','findAll','catch','show','params','includeAll','create','body','user','get','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','FaxQueues','UserProfileSection','find','userProfileId','describe','findOne','UserFaxQueue','nolimit','pick','FaxQueueId','User','findAndCountAll','UserId','agent','faxPause','updatedAt','createdAt','rows','format','%s/%s','SIP','getTeams','Team','addTeams','ids','online','voicePause','interface','flatMap','Agents','sequelize','transaction','findOrCreate','emit','userFaxQueue:save','removeTeams','field','tq.TeamId','join','ut.TeamId\x20=\x20tq.TeamId','FaxQueueId\x20=\x20?','clone','ut.UserId\x20=\x20?','toString','QueryTypes','SELECT','every','TeamId','includes','all','union','compact','value','isEmpty','removeAgents','forEach','addAgents','omit','isArray','userFaxQueue:remove','getAgents','zip-dir','fast-json-patch','request-promise','moment','mustache','util','to-csv','ejs','crypto','jsforce','querystring','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','redis','defaults','./faxQueue.socket','sendStatus','end','status','offset','limit','undefined','set','Content-Range','json','apply','reject','save','update','destroy','then','UserProfileResource','stack','name','send','map','FaxQueue','rawAttributes','key','model','keys','filters','intersection'];(function(_0x4a747d,_0x3b747f){var _0x3a5b5c=function(_0x4b3e81){while(--_0x4b3e81){_0x4a747d['push'](_0x4a747d['shift']());}};_0x3a5b5c(++_0x3b747f);}(_0x0ed3,0x168));var _0x30ed=function(_0x14add3,_0x13ce8d){_0x14add3=_0x14add3-0x0;var _0x4a174f=_0x0ed3[_0x14add3];return _0x4a174f;};'use strict';var emlformat=require('eml-format');var rimraf=require('rimraf');var zipdir=require(_0x30ed('0x0'));var jsonpatch=require(_0x30ed('0x1'));var rp=require(_0x30ed('0x2'));var moment=require(_0x30ed('0x3'));var BPromise=require('bluebird');var Mustache=require(_0x30ed('0x4'));var util=require(_0x30ed('0x5'));var path=require('path');var sox=require('sox');var csv=require(_0x30ed('0x6'));var ejs=require(_0x30ed('0x7'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require('lodash');var squel=require('squel');var crypto=require(_0x30ed('0x8'));var jsforce=require(_0x30ed('0x9'));var deskjs=require('desk.js');var toCsv=require(_0x30ed('0x6'));var querystring=require(_0x30ed('0xa'));var Papa=require('papaparse');var Redis=require(_0x30ed('0xb'));var authService=require(_0x30ed('0xc'));var qs=require(_0x30ed('0xd'));var as=require(_0x30ed('0xe'));var hardwareService=require(_0x30ed('0xf'));var logger=require('../../config/logger')(_0x30ed('0x10'));var utils=require(_0x30ed('0x11'));var config=require(_0x30ed('0x12'));var licenseUtil=require(_0x30ed('0x13'));var db=require(_0x30ed('0x14'))['db'];config[_0x30ed('0x15')]=_[_0x30ed('0x16')](config[_0x30ed('0x15')],{'host':'localhost','port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config['redis']));require(_0x30ed('0x17'))['register'](socket);function respondWithStatusCode(_0x3099f6,_0x328600){_0x328600=_0x328600||0xcc;return function(_0x2307cd){if(_0x2307cd){return _0x3099f6[_0x30ed('0x18')](_0x328600);}return _0x3099f6['status'](_0x328600)[_0x30ed('0x19')]();};}function respondWithResult(_0x34506c,_0x17d949){_0x17d949=_0x17d949||0xc8;return function(_0x15e86c){if(_0x15e86c){return _0x34506c[_0x30ed('0x1a')](_0x17d949)['json'](_0x15e86c);}};}function respondWithFilteredResult(_0x4a7292,_0x48e4a7){return function(_0x5713ce){if(_0x5713ce){var _0x1caa14=typeof _0x48e4a7[_0x30ed('0x1b')]==='undefined'&&typeof _0x48e4a7[_0x30ed('0x1c')]===_0x30ed('0x1d');var _0x1ca528=_0x5713ce['count'];var _0x3b470a=_0x1caa14?0x0:_0x48e4a7[_0x30ed('0x1b')];var _0x5f1f61=_0x1caa14?_0x5713ce['count']:_0x48e4a7[_0x30ed('0x1b')]+_0x48e4a7[_0x30ed('0x1c')];var _0x2ed819;if(_0x5f1f61>=_0x1ca528){_0x5f1f61=_0x1ca528;_0x2ed819=0xc8;}else{_0x2ed819=0xce;}_0x4a7292[_0x30ed('0x1a')](_0x2ed819);return _0x4a7292[_0x30ed('0x1e')](_0x30ed('0x1f'),_0x3b470a+'-'+_0x5f1f61+'/'+_0x1ca528)[_0x30ed('0x20')](_0x5713ce);}return null;};}function patchUpdates(_0x2b4916){return function(_0x33f614){try{jsonpatch[_0x30ed('0x21')](_0x33f614,_0x2b4916,!![]);}catch(_0x588cd1){return BPromise[_0x30ed('0x22')](_0x588cd1);}return _0x33f614[_0x30ed('0x23')]();};}function saveUpdates(_0x54b7af,_0x33f06b){return function(_0x3edfe8){if(_0x3edfe8){return _0x3edfe8[_0x30ed('0x24')](_0x54b7af)['then'](function(_0x4d602e){return _0x4d602e;});}return null;};}function removeEntity(_0x4f26a6,_0x395d2c){return function(_0x25a38f){if(_0x25a38f){return _0x25a38f[_0x30ed('0x25')]()[_0x30ed('0x26')](function(){var _0x50187f=_0x25a38f['get']({'plain':!![]});var _0x5267f5='FaxQueues';return db[_0x30ed('0x27')][_0x30ed('0x25')]({'where':{'type':_0x5267f5,'resourceId':_0x50187f['id']}})[_0x30ed('0x26')](function(){return _0x25a38f;});})[_0x30ed('0x26')](function(){_0x4f26a6['status'](0xcc)[_0x30ed('0x19')]();});}};}function handleEntityNotFound(_0x3bfd86,_0x1a4acb){return function(_0x21674f){if(!_0x21674f){_0x3bfd86[_0x30ed('0x18')](0x194);}return _0x21674f;};}function handleError(_0xd6004,_0x5c2d30){_0x5c2d30=_0x5c2d30||0x1f4;return function(_0x279904){logger['error'](_0x279904[_0x30ed('0x28')]);if(_0x279904[_0x30ed('0x29')]){delete _0x279904[_0x30ed('0x29')];}_0xd6004[_0x30ed('0x1a')](_0x5c2d30)[_0x30ed('0x2a')](_0x279904);};}exports['index']=function(_0x497820,_0x3f83c6){var _0x29cd1b={},_0xaaac38={},_0x304f4f={'count':0x0,'rows':[]};var _0x5d69e8=_[_0x30ed('0x2b')](db[_0x30ed('0x2c')][_0x30ed('0x2d')],function(_0x1fed2d){return{'name':_0x1fed2d['fieldName'],'type':_0x1fed2d['type'][_0x30ed('0x2e')]};});_0xaaac38[_0x30ed('0x2f')]=_[_0x30ed('0x2b')](_0x5d69e8,_0x30ed('0x29'));_0xaaac38['query']=_[_0x30ed('0x30')](_0x497820['query']);_0xaaac38[_0x30ed('0x31')]=_[_0x30ed('0x32')](_0xaaac38['model'],_0xaaac38[_0x30ed('0x33')]);_0x29cd1b[_0x30ed('0x34')]=_['intersection'](_0xaaac38['model'],qs[_0x30ed('0x35')](_0x497820[_0x30ed('0x33')][_0x30ed('0x35')]));_0x29cd1b[_0x30ed('0x34')]=_0x29cd1b[_0x30ed('0x34')][_0x30ed('0x36')]?_0x29cd1b[_0x30ed('0x34')]:_0xaaac38['model'];if(!_0x497820[_0x30ed('0x33')][_0x30ed('0x37')]('nolimit')){_0x29cd1b[_0x30ed('0x1c')]=qs['limit'](_0x497820[_0x30ed('0x33')][_0x30ed('0x1c')]);_0x29cd1b[_0x30ed('0x1b')]=qs[_0x30ed('0x1b')](_0x497820[_0x30ed('0x33')][_0x30ed('0x1b')]);}_0x29cd1b[_0x30ed('0x38')]=qs[_0x30ed('0x39')](_0x497820[_0x30ed('0x33')]['sort']);_0x29cd1b[_0x30ed('0x3a')]=qs['filters'](_['pick'](_0x497820[_0x30ed('0x33')],_0xaaac38[_0x30ed('0x31')]),_0x5d69e8);if(_0x497820['query'][_0x30ed('0x3b')]){_0x29cd1b[_0x30ed('0x3a')]=_[_0x30ed('0x3c')](_0x29cd1b[_0x30ed('0x3a')],{'$or':_[_0x30ed('0x2b')](_0x5d69e8,function(_0x118f77){if(_0x118f77['type']!==_0x30ed('0x3d')){var _0x356924={};_0x356924[_0x118f77[_0x30ed('0x29')]]={'$like':'%'+_0x497820[_0x30ed('0x33')]['filter']+'%'};return _0x356924;}})});}_0x29cd1b=_[_0x30ed('0x3c')]({},_0x29cd1b,_0x497820[_0x30ed('0x3e')]);var _0x2cd9ae={'where':_0x29cd1b['where']};return db[_0x30ed('0x2c')][_0x30ed('0x3f')](_0x2cd9ae)[_0x30ed('0x26')](function(_0x226224){_0x304f4f[_0x30ed('0x3f')]=_0x226224;if(_0x497820[_0x30ed('0x33')]['includeAll']){_0x29cd1b[_0x30ed('0x40')]=[{'all':!![]}];}return db[_0x30ed('0x2c')][_0x30ed('0x41')](_0x29cd1b);})[_0x30ed('0x26')](function(_0x5b00fa){_0x304f4f['rows']=_0x5b00fa;return _0x304f4f;})[_0x30ed('0x26')](respondWithFilteredResult(_0x3f83c6,_0x29cd1b))[_0x30ed('0x42')](handleError(_0x3f83c6,null));};exports[_0x30ed('0x43')]=function(_0x3c1cc9,_0x4f7ba3){var _0x599b50={'raw':!![],'where':{'id':_0x3c1cc9[_0x30ed('0x44')]['id']}},_0x40e4cd={};_0x40e4cd['model']=_[_0x30ed('0x30')](db['FaxQueue']['rawAttributes']);_0x40e4cd[_0x30ed('0x33')]=_[_0x30ed('0x30')](_0x3c1cc9[_0x30ed('0x33')]);_0x40e4cd[_0x30ed('0x31')]=_[_0x30ed('0x32')](_0x40e4cd['model'],_0x40e4cd[_0x30ed('0x33')]);_0x599b50[_0x30ed('0x34')]=_['intersection'](_0x40e4cd['model'],qs['fields'](_0x3c1cc9[_0x30ed('0x33')][_0x30ed('0x35')]));_0x599b50['attributes']=_0x599b50['attributes']['length']?_0x599b50['attributes']:_0x40e4cd['model'];if(_0x3c1cc9[_0x30ed('0x33')][_0x30ed('0x45')]){_0x599b50[_0x30ed('0x40')]=[{'all':!![]}];}_0x599b50=_['merge']({},_0x599b50,_0x3c1cc9[_0x30ed('0x3e')]);return db[_0x30ed('0x2c')]['find'](_0x599b50)[_0x30ed('0x26')](handleEntityNotFound(_0x4f7ba3,null))[_0x30ed('0x26')](respondWithResult(_0x4f7ba3,null))['catch'](handleError(_0x4f7ba3,null));};exports[_0x30ed('0x46')]=function(_0x3b1fd0,_0x2753e5){return db['FaxQueue'][_0x30ed('0x46')](_0x3b1fd0[_0x30ed('0x47')],{})['then'](function(_0x56f381){var _0x3e5fe8=_0x3b1fd0[_0x30ed('0x48')][_0x30ed('0x49')]({'plain':!![]});if(!_0x3e5fe8)throw new Error(_0x30ed('0x4a'));if(_0x3e5fe8[_0x30ed('0x4b')]===_0x30ed('0x48')){var _0x2ebcf0=_0x56f381['get']({'plain':!![]});var _0x351558=_0x30ed('0x4c');return db[_0x30ed('0x4d')][_0x30ed('0x4e')]({'where':{'name':_0x351558,'userProfileId':_0x3e5fe8[_0x30ed('0x4f')]},'raw':!![]})[_0x30ed('0x26')](function(_0x3d5ac0){if(_0x3d5ac0&&_0x3d5ac0['autoAssociation']===0x0){return db[_0x30ed('0x27')][_0x30ed('0x46')]({'name':_0x2ebcf0[_0x30ed('0x29')],'resourceId':_0x2ebcf0['id'],'type':_0x3d5ac0[_0x30ed('0x29')],'sectionId':_0x3d5ac0['id']},{})[_0x30ed('0x26')](function(){return _0x56f381;});}else{return _0x56f381;}})[_0x30ed('0x42')](function(_0xc9eea5){logger['error']('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0xc9eea5);throw _0xc9eea5;});}return _0x56f381;})[_0x30ed('0x26')](respondWithResult(_0x2753e5,0xc9))[_0x30ed('0x42')](handleError(_0x2753e5,null));};exports[_0x30ed('0x24')]=function(_0x42fb35,_0x24493e){if(_0x42fb35[_0x30ed('0x47')]['id']){delete _0x42fb35[_0x30ed('0x47')]['id'];}return db[_0x30ed('0x2c')][_0x30ed('0x4e')]({'where':{'id':_0x42fb35[_0x30ed('0x44')]['id']}})['then'](handleEntityNotFound(_0x24493e,null))[_0x30ed('0x26')](saveUpdates(_0x42fb35[_0x30ed('0x47')],null))['then'](respondWithResult(_0x24493e,null))['catch'](handleError(_0x24493e,null));};exports['destroy']=function(_0x1576dd,_0x46b27f){return db[_0x30ed('0x2c')]['find']({'where':{'id':_0x1576dd['params']['id']}})[_0x30ed('0x26')](handleEntityNotFound(_0x46b27f,null))['then'](removeEntity(_0x46b27f,null))['catch'](handleError(_0x46b27f,null));};exports[_0x30ed('0x50')]=function(_0x2151b2,_0xe265e3){return db['FaxQueue']['describe']()['then'](respondWithResult(_0xe265e3,null))['catch'](handleError(_0xe265e3,null));};exports['getMembers']=function(_0x44f161,_0x551b9e,_0x4f2452){var _0xc181db={'raw':!![],'where':{}},_0x379d65={},_0x1aa889;return db[_0x30ed('0x2c')][_0x30ed('0x51')]({'where':{'id':_0x44f161[_0x30ed('0x44')]['id']}})[_0x30ed('0x26')](handleEntityNotFound(_0x551b9e,null))[_0x30ed('0x26')](function(_0x3f09a8){if(_0x3f09a8){_0x1aa889=_0x3f09a8[_0x30ed('0x49')]({'plain':!![]});_0x379d65[_0x30ed('0x2f')]=_[_0x30ed('0x30')](db[_0x30ed('0x52')][_0x30ed('0x2d')]);_0x379d65['query']=_['keys'](_0x44f161['query']);_0x379d65[_0x30ed('0x31')]=_['intersection'](_0x379d65['model'],_0x379d65[_0x30ed('0x33')]);_0xc181db[_0x30ed('0x34')]=_[_0x30ed('0x32')](_0x379d65[_0x30ed('0x2f')],qs[_0x30ed('0x35')](_0x44f161['query'][_0x30ed('0x35')]));_0xc181db[_0x30ed('0x34')]=_0xc181db[_0x30ed('0x34')][_0x30ed('0x36')]?_0xc181db[_0x30ed('0x34')]:_0x379d65[_0x30ed('0x2f')];if(!_0x44f161[_0x30ed('0x33')][_0x30ed('0x37')](_0x30ed('0x53'))){_0xc181db[_0x30ed('0x1c')]=qs[_0x30ed('0x1c')](_0x44f161[_0x30ed('0x33')]['limit']);_0xc181db['offset']=qs[_0x30ed('0x1b')](_0x44f161[_0x30ed('0x33')]['offset']);}_0xc181db[_0x30ed('0x38')]=qs[_0x30ed('0x39')](_0x44f161[_0x30ed('0x33')][_0x30ed('0x39')]);_0xc181db[_0x30ed('0x3a')]=qs['filters'](_[_0x30ed('0x54')](_0x44f161[_0x30ed('0x33')],_0x379d65[_0x30ed('0x31')]));_0xc181db['where'][_0x30ed('0x55')]=_0x3f09a8['id'];if(_0x44f161[_0x30ed('0x33')]['filter']){_0xc181db[_0x30ed('0x3a')]=_[_0x30ed('0x3c')](_0xc181db[_0x30ed('0x3a')],{'$or':_[_0x30ed('0x2b')](_0xc181db[_0x30ed('0x34')],function(_0x16c6ea){var _0x360f89={};_0x360f89[_0x16c6ea]={'$like':'%'+_0x44f161[_0x30ed('0x33')][_0x30ed('0x3b')]+'%'};return _0x360f89;})});}_0xc181db=_[_0x30ed('0x3c')]({},_0xc181db,_0x44f161[_0x30ed('0x3e')]);return db[_0x30ed('0x52')][_0x30ed('0x41')](_0xc181db);}})[_0x30ed('0x26')](function(_0x4856cf){if(_0x4856cf){return db[_0x30ed('0x56')][_0x30ed('0x57')]({'where':{'id':_[_0x30ed('0x2b')](_0x4856cf,_0x30ed('0x58')),'role':_0x30ed('0x59')},'attributes':['id',_0x30ed('0x29'),_0x30ed('0x5a'),_0x30ed('0x5b'),_0x30ed('0x5c')]});}})['then'](function(_0x588dfc){if(_0x588dfc){return{'count':_0x588dfc[_0x30ed('0x3f')],'rows':_[_0x30ed('0x2b')](_0x588dfc[_0x30ed('0x5d')],function(_0xd82b19){return{'membername':_0xd82b19[_0x30ed('0x29')],'UserId':_0xd82b19['id'],'queue_name':_0x1aa889[_0x30ed('0x29')],'FaxQueueId':_0x1aa889['id'],'interface':util[_0x30ed('0x5e')](_0x30ed('0x5f'),_0x30ed('0x60'),_0xd82b19[_0x30ed('0x29')]),'penalty':0x0,'paused':_0xd82b19[_0x30ed('0x5a')],'createdAt':_0xd82b19[_0x30ed('0x5c')],'updatedAt':_0xd82b19[_0x30ed('0x5b')]};})};}else{return{'count':0x0,'rows':[]};}})['then'](respondWithFilteredResult(_0x551b9e,_0xc181db))['catch'](handleError(_0x551b9e,null));};exports[_0x30ed('0x61')]=function(_0x4e1149,_0x1e9cdd,_0x23b69c){var _0x2bd523={};var _0x10ce07={};var _0x504513;var _0x1d5314;return db[_0x30ed('0x2c')][_0x30ed('0x51')]({'where':{'id':_0x4e1149['params']['id']}})['then'](handleEntityNotFound(_0x1e9cdd,null))[_0x30ed('0x26')](function(_0x328017){if(_0x328017){_0x504513=_0x328017;_0x10ce07[_0x30ed('0x2f')]=_[_0x30ed('0x30')](db[_0x30ed('0x62')]['rawAttributes']);_0x10ce07['query']=_[_0x30ed('0x30')](_0x4e1149[_0x30ed('0x33')]);_0x10ce07[_0x30ed('0x31')]=_[_0x30ed('0x32')](_0x10ce07[_0x30ed('0x2f')],_0x10ce07['query']);_0x2bd523[_0x30ed('0x34')]=_[_0x30ed('0x32')](_0x10ce07[_0x30ed('0x2f')],qs[_0x30ed('0x35')](_0x4e1149[_0x30ed('0x33')][_0x30ed('0x35')]));_0x2bd523[_0x30ed('0x34')]=_0x2bd523[_0x30ed('0x34')][_0x30ed('0x36')]?_0x2bd523['attributes']:_0x10ce07[_0x30ed('0x2f')];_0x2bd523['order']=qs[_0x30ed('0x39')](_0x4e1149[_0x30ed('0x33')][_0x30ed('0x39')]);_0x2bd523['where']=qs[_0x30ed('0x31')](_[_0x30ed('0x54')](_0x4e1149['query'],_0x10ce07['filters']));if(_0x4e1149[_0x30ed('0x33')][_0x30ed('0x3b')]){_0x2bd523['where']=_[_0x30ed('0x3c')](_0x2bd523[_0x30ed('0x3a')],{'$or':_[_0x30ed('0x2b')](_0x2bd523[_0x30ed('0x34')],function(_0x46ba28){var _0x5be6be={};_0x5be6be[_0x46ba28]={'$like':'%'+_0x4e1149[_0x30ed('0x33')]['filter']+'%'};return _0x5be6be;})});}_0x2bd523=_[_0x30ed('0x3c')]({},_0x2bd523,_0x4e1149[_0x30ed('0x3e')]);return _0x504513['getTeams'](_0x2bd523);}})[_0x30ed('0x26')](function(_0x20d4cb){if(_0x20d4cb){_0x1d5314=_0x20d4cb[_0x30ed('0x36')];if(!_0x4e1149[_0x30ed('0x33')][_0x30ed('0x37')](_0x30ed('0x53'))){_0x2bd523[_0x30ed('0x1c')]=qs[_0x30ed('0x1c')](_0x4e1149[_0x30ed('0x33')]['limit']);_0x2bd523[_0x30ed('0x1b')]=qs[_0x30ed('0x1b')](_0x4e1149['query'][_0x30ed('0x1b')]);}return _0x504513['getTeams'](_0x2bd523);}})['then'](function(_0x5c8cea){if(_0x5c8cea){return _0x5c8cea?{'count':_0x1d5314,'rows':_0x5c8cea}:null;}})[_0x30ed('0x26')](respondWithResult(_0x1e9cdd,null))[_0x30ed('0x42')](handleError(_0x1e9cdd,null));};exports[_0x30ed('0x63')]=function(_0x7d9f66,_0x30aa58,_0x1de8b8){var _0x20836d=_0x7d9f66[_0x30ed('0x47')][_0x30ed('0x64')];return db['Team'][_0x30ed('0x41')]({'where':{'id':_0x20836d},'attributes':['id'],'include':[{'model':db[_0x30ed('0x56')],'as':'Agents','attributes':['id','name',_0x30ed('0x65'),_0x30ed('0x66'),_0x30ed('0x67')],'raw':!![]}]})['then'](function(_0x15c5b6){if(_0x15c5b6){var _0x183b13=_[_0x30ed('0x68')](_0x15c5b6,function(_0x3852b7){var _0x6d6a5d=_0x3852b7[_0x30ed('0x49')]({'plain':!![]});return _0x6d6a5d[_0x30ed('0x69')];});return db[_0x30ed('0x2c')][_0x30ed('0x4e')]({'where':{'id':_0x7d9f66['params']['id']}})[_0x30ed('0x26')](function(_0x11db17){return db[_0x30ed('0x6a')][_0x30ed('0x6b')](function(_0x11715e){return _0x11db17[_0x30ed('0x63')](_0x20836d,{'transaction':_0x11715e})[_0x30ed('0x26')](function(){return BPromise['each'](_0x183b13,function(_0x10ecc9){return db[_0x30ed('0x52')][_0x30ed('0x6c')]({'where':{'UserId':_0x10ecc9['id'],'FaxQueueId':_0x7d9f66[_0x30ed('0x44')]['id']},'transaction':_0x11715e});});})['then'](function(){_0x183b13['forEach'](function(_0x1c16e8){socket[_0x30ed('0x6d')](_0x30ed('0x6e'),{'UserId':_0x1c16e8['id'],'FaxQueueId':_0x11db17['id']});});});});});}})[_0x30ed('0x26')](respondWithStatusCode(_0x30aa58,null))['catch'](handleError(_0x30aa58,null));};exports[_0x30ed('0x6f')]=function(_0x2f43c2,_0x27bd1e,_0x322e48){return db[_0x30ed('0x62')][_0x30ed('0x41')]({'where':{'id':_0x2f43c2[_0x30ed('0x33')]['ids']},'attributes':['id'],'include':[{'model':db[_0x30ed('0x56')],'as':'Agents','attributes':['id'],'raw':!![]}]})['then'](handleEntityNotFound(_0x27bd1e,null))['then'](function(_0x221cbd){var _0x24f0df=_[_0x30ed('0x2b')](_0x221cbd,'id');var _0xd378bf=[];var _0x1679ab=[];var _0x42d37a=squel['select']();_0x42d37a[_0x30ed('0x70')](_0x30ed('0x71'))['from']('team_has_fax_queues','tq')[_0x30ed('0x72')]('user_has_teams','ut',_0x30ed('0x73'))[_0x30ed('0x3a')](_0x30ed('0x74'),_0x2f43c2[_0x30ed('0x44')]['id']);for(var _0x56dff9=0x0;_0x56dff9<_0x221cbd['length'];_0x56dff9+=0x1){let _0x1c585f=_0x221cbd[_0x56dff9];for(var _0x5df745=0x0;_0x5df745<_0x1c585f['Agents'][_0x30ed('0x36')];_0x5df745+=0x1){let _0x614436=_0x1c585f[_0x30ed('0x69')][_0x5df745];var _0x4c8396=_0x42d37a[_0x30ed('0x75')]();_0x4c8396[_0x30ed('0x3a')](_0x30ed('0x76'),_0x614436['id']);_0x1679ab['push'](db[_0x30ed('0x6a')][_0x30ed('0x33')](_0x4c8396[_0x30ed('0x77')](),{'type':db['sequelize'][_0x30ed('0x78')][_0x30ed('0x79')]})[_0x30ed('0x26')](function(_0xf05516){if(_0xf05516[_0x30ed('0x36')]===0x1){return _0x614436['id'];}else{var _0x2b61e3=_[_0x30ed('0x7a')](_[_0x30ed('0x2b')](_0xf05516,_0x30ed('0x7b')),function(_0x41aa6e){return _[_0x30ed('0x7c')](_0x24f0df,_0x41aa6e);});if(_0x2b61e3){return _0x614436['id'];}}}));}}return BPromise[_0x30ed('0x7d')](_0x1679ab)[_0x30ed('0x26')](function(_0x4037ea){_0xd378bf=_(_0xd378bf)[_0x30ed('0x7e')](_0x4037ea)[_0x30ed('0x7f')]()[_0x30ed('0x80')]();return db[_0x30ed('0x2c')]['find']({'where':{'id':_0x2f43c2[_0x30ed('0x44')]['id']}})[_0x30ed('0x26')](function(_0x196c4f){return db[_0x30ed('0x6a')][_0x30ed('0x6b')](function(_0x31df2b){return _0x196c4f[_0x30ed('0x6f')](_0x2f43c2['query'][_0x30ed('0x64')],{'transaction':_0x31df2b})[_0x30ed('0x26')](function(){if(!_[_0x30ed('0x81')](_0xd378bf)){return _0x196c4f[_0x30ed('0x82')](_0xd378bf,{'transaction':_0x31df2b});}})[_0x30ed('0x26')](function(){_0xd378bf[_0x30ed('0x83')](function(_0x29bff4){socket[_0x30ed('0x6d')]('userFaxQueue:remove',{'UserId':_0x29bff4,'FaxQueueId':_0x196c4f['id']});});});});});});})[_0x30ed('0x26')](respondWithStatusCode(_0x27bd1e,null))[_0x30ed('0x42')](handleError(_0x27bd1e,null));};exports[_0x30ed('0x84')]=function(_0x3b7339,_0x398fe2,_0x13b656){return db[_0x30ed('0x2c')][_0x30ed('0x4e')]({'where':{'id':_0x3b7339[_0x30ed('0x44')]['id']}})[_0x30ed('0x26')](handleEntityNotFound(_0x398fe2,null))[_0x30ed('0x26')](function(_0x139f06){if(_0x139f06){return _0x139f06[_0x30ed('0x84')](_0x3b7339[_0x30ed('0x47')][_0x30ed('0x64')],_[_0x30ed('0x85')](_0x3b7339[_0x30ed('0x47')],[_0x30ed('0x64'),'id'])||{})['spread'](function(_0x479c05){for(var _0x3ac796=0x0;_0x3ac796<_0x3b7339[_0x30ed('0x47')][_0x30ed('0x64')][_0x30ed('0x36')];_0x3ac796+=0x1){socket[_0x30ed('0x6d')](_0x30ed('0x6e'),{'UserId':Number(_0x3b7339['body'][_0x30ed('0x64')][_0x3ac796]),'FaxQueueId':Number(_0x3b7339[_0x30ed('0x44')]['id'])});}return _0x479c05;});}})[_0x30ed('0x26')](respondWithResult(_0x398fe2,null))[_0x30ed('0x42')](handleError(_0x398fe2,null));};exports[_0x30ed('0x82')]=function(_0x252949,_0x4e3e87,_0x345446){return db['FaxQueue'][_0x30ed('0x4e')]({'where':{'id':_0x252949[_0x30ed('0x44')]['id']}})[_0x30ed('0x26')](handleEntityNotFound(_0x4e3e87,null))['then'](function(_0xb44558){if(_0xb44558){return _0xb44558[_0x30ed('0x82')](_0x252949[_0x30ed('0x33')][_0x30ed('0x64')])[_0x30ed('0x26')](function(){if(_[_0x30ed('0x86')](_0x252949['query']['ids'])){for(var _0x39ad6b=0x0;_0x39ad6b<_0x252949[_0x30ed('0x33')][_0x30ed('0x64')][_0x30ed('0x36')];_0x39ad6b+=0x1){socket[_0x30ed('0x6d')]('userFaxQueue:remove',{'UserId':Number(_0x252949[_0x30ed('0x33')][_0x30ed('0x64')][_0x39ad6b]),'FaxQueueId':Number(_0x252949[_0x30ed('0x44')]['id'])});}}else{socket[_0x30ed('0x6d')](_0x30ed('0x87'),{'UserId':Number(_0x252949[_0x30ed('0x33')]['ids']),'FaxQueueId':Number(_0x252949['params']['id'])});}});}})[_0x30ed('0x26')](respondWithStatusCode(_0x4e3e87,null))[_0x30ed('0x42')](handleError(_0x4e3e87,null));};exports[_0x30ed('0x88')]=function(_0x1aed87,_0xd97a9c,_0x590f16){var _0x104bd5={};var _0x3c4dfd={};var _0x5d1c17;var _0x2123c3;return db['FaxQueue'][_0x30ed('0x51')]({'where':{'id':_0x1aed87[_0x30ed('0x44')]['id']}})[_0x30ed('0x26')](handleEntityNotFound(_0xd97a9c,null))['then'](function(_0x1e65ee){if(_0x1e65ee){_0x5d1c17=_0x1e65ee;_0x3c4dfd[_0x30ed('0x2f')]=_[_0x30ed('0x30')](db[_0x30ed('0x56')][_0x30ed('0x2d')]);_0x3c4dfd[_0x30ed('0x33')]=_[_0x30ed('0x30')](_0x1aed87['query']);_0x3c4dfd[_0x30ed('0x31')]=_[_0x30ed('0x32')](_0x3c4dfd[_0x30ed('0x2f')],_0x3c4dfd[_0x30ed('0x33')]);_0x104bd5[_0x30ed('0x34')]=_['intersection'](_0x3c4dfd[_0x30ed('0x2f')],qs[_0x30ed('0x35')](_0x1aed87[_0x30ed('0x33')][_0x30ed('0x35')]));_0x104bd5['attributes']=_0x104bd5['attributes'][_0x30ed('0x36')]?_0x104bd5['attributes']:_0x3c4dfd[_0x30ed('0x2f')];_0x104bd5[_0x30ed('0x38')]=qs[_0x30ed('0x39')](_0x1aed87[_0x30ed('0x33')][_0x30ed('0x39')]);_0x104bd5[_0x30ed('0x3a')]=qs[_0x30ed('0x31')](_[_0x30ed('0x54')](_0x1aed87[_0x30ed('0x33')],_0x3c4dfd['filters']));if(_0x1aed87[_0x30ed('0x33')][_0x30ed('0x3b')]){_0x104bd5[_0x30ed('0x3a')]=_[_0x30ed('0x3c')](_0x104bd5[_0x30ed('0x3a')],{'$or':_[_0x30ed('0x2b')](_0x104bd5[_0x30ed('0x34')],function(_0x55fc3c){var _0x26be40={};_0x26be40[_0x55fc3c]={'$like':'%'+_0x1aed87['query'][_0x30ed('0x3b')]+'%'};return _0x26be40;})});}_0x104bd5=_[_0x30ed('0x3c')]({},_0x104bd5,_0x1aed87['options']);return _0x5d1c17['getAgents'](_0x104bd5);}})[_0x30ed('0x26')](function(_0x357d3b){if(_0x357d3b){_0x2123c3=_0x357d3b[_0x30ed('0x36')];if(!_0x1aed87[_0x30ed('0x33')]['hasOwnProperty'](_0x30ed('0x53'))){_0x104bd5[_0x30ed('0x1c')]=qs[_0x30ed('0x1c')](_0x1aed87[_0x30ed('0x33')][_0x30ed('0x1c')]);_0x104bd5[_0x30ed('0x1b')]=qs[_0x30ed('0x1b')](_0x1aed87[_0x30ed('0x33')][_0x30ed('0x1b')]);}return _0x5d1c17['getAgents'](_0x104bd5);}})['then'](function(_0x7b855){if(_0x7b855){return _0x7b855?{'count':_0x2123c3,'rows':_0x7b855}:null;}})[_0x30ed('0x26')](respondWithResult(_0xd97a9c,null))[_0x30ed('0x42')](handleError(_0xd97a9c,null));};
\ No newline at end of file
index 1e3b13d..0d6f5d9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x59a5=['setMaxListeners','save','update','remove','emit','../../mysqldb','FaxQueue'];(function(_0x38e48c,_0x1537b3){var _0x472539=function(_0x4fbe6b){while(--_0x4fbe6b){_0x38e48c['push'](_0x38e48c['shift']());}};_0x472539(++_0x1537b3);}(_0x59a5,0x116));var _0x559a=function(_0x147a47,_0x459b6c){_0x147a47=_0x147a47-0x0;var _0x52d517=_0x59a5[_0x147a47];return _0x52d517;};'use strict';var EventEmitter=require('events');var FaxQueue=require(_0x559a('0x0'))['db'][_0x559a('0x1')];var FaxQueueEvents=new EventEmitter();FaxQueueEvents[_0x559a('0x2')](0x0);var events={'afterCreate':_0x559a('0x3'),'afterUpdate':_0x559a('0x4'),'afterDestroy':_0x559a('0x5')};function emitEvent(_0x5ebd3c){return function(_0xccf2ba,_0x4dc457,_0x3bca5e){FaxQueueEvents[_0x559a('0x6')](_0x5ebd3c+':'+_0xccf2ba['id'],_0xccf2ba);FaxQueueEvents['emit'](_0x5ebd3c,_0xccf2ba);_0x3bca5e(null);};}for(var e in events){if(events['hasOwnProperty'](e)){var event=events[e];FaxQueue['hook'](e,emitEvent(event));}}module['exports']=FaxQueueEvents;
\ No newline at end of file
+var _0x3771=['hook','exports','events','../../mysqldb','save','update','remove','emit','hasOwnProperty'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x3771,0x1bb));var _0x1377=function(_0x487b0c,_0x14ff74){_0x487b0c=_0x487b0c-0x0;var _0x1adbdc=_0x3771[_0x487b0c];return _0x1adbdc;};'use strict';var EventEmitter=require(_0x1377('0x0'));var FaxQueue=require(_0x1377('0x1'))['db']['FaxQueue'];var FaxQueueEvents=new EventEmitter();FaxQueueEvents['setMaxListeners'](0x0);var events={'afterCreate':_0x1377('0x2'),'afterUpdate':_0x1377('0x3'),'afterDestroy':_0x1377('0x4')};function emitEvent(_0x3eb3d2){return function(_0x7cfb2d,_0xfa66bf,_0x5023a4){FaxQueueEvents['emit'](_0x3eb3d2+':'+_0x7cfb2d['id'],_0x7cfb2d);FaxQueueEvents[_0x1377('0x5')](_0x3eb3d2,_0x7cfb2d);_0x5023a4(null);};}for(var e in events){if(events[_0x1377('0x6')](e)){var event=events[e];FaxQueue[_0x1377('0x7')](e,emitEvent(event));}}module[_0x1377('0x8')]=FaxQueueEvents;
\ No newline at end of file
index 0230488..f8ee1de 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa3ec=['api','moment','bluebird','path','rimraf','../../config/environment','./faxQueue.attributes','exports','FaxQueue','lodash','util','../../config/logger'];(function(_0x21babd,_0x3b453a){var _0x2d0dec=function(_0x415cfc){while(--_0x415cfc){_0x21babd['push'](_0x21babd['shift']());}};_0x2d0dec(++_0x3b453a);}(_0xa3ec,0xed));var _0xca3e=function(_0x5b2a71,_0x3da2f1){_0x5b2a71=_0x5b2a71-0x0;var _0x1ab2aa=_0xa3ec[_0x5b2a71];return _0x1ab2aa;};'use strict';var _=require(_0xca3e('0x0'));var util=require(_0xca3e('0x1'));var logger=require(_0xca3e('0x2'))(_0xca3e('0x3'));var moment=require(_0xca3e('0x4'));var BPromise=require(_0xca3e('0x5'));var rp=require('request-promise');var fs=require('fs');var path=require(_0xca3e('0x6'));var rimraf=require(_0xca3e('0x7'));var config=require(_0xca3e('0x8'));var attributes=require(_0xca3e('0x9'));module[_0xca3e('0xa')]=function(_0x43f067,_0x84a137){return _0x43f067['define'](_0xca3e('0xb'),attributes,{'tableName':'fax_queues','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x170d=['path','rimraf','./faxQueue.attributes','exports','FaxQueue','lodash','util','api','moment','bluebird','request-promise'];(function(_0x55c00d,_0x520cb6){var _0x254a8f=function(_0x2b3378){while(--_0x2b3378){_0x55c00d['push'](_0x55c00d['shift']());}};_0x254a8f(++_0x520cb6);}(_0x170d,0x1bd));var _0xd170=function(_0x19950b,_0x53d0d7){_0x19950b=_0x19950b-0x0;var _0x3c6b41=_0x170d[_0x19950b];return _0x3c6b41;};'use strict';var _=require(_0xd170('0x0'));var util=require(_0xd170('0x1'));var logger=require('../../config/logger')(_0xd170('0x2'));var moment=require(_0xd170('0x3'));var BPromise=require(_0xd170('0x4'));var rp=require(_0xd170('0x5'));var fs=require('fs');var path=require(_0xd170('0x6'));var rimraf=require(_0xd170('0x7'));var config=require('../../config/environment');var attributes=require(_0xd170('0x8'));module[_0xd170('0x9')]=function(_0x580d20,_0x593b05){return _0x580d20['define'](_0xd170('0xa'),attributes,{'tableName':'fax_queues','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index cc5dff9..e4fa1bf 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xdebd=['randomstring','ioredis','../../mysqldb','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','redis','defaults','socket.io-emitter','./faxQueue.socket','register','request','then','info','FaxQueue,\x20%s,\x20%s','request\x20sent','FaxQueue,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','GetFaxQueue','findAll','options','raw','where','attributes','limit','include','map','model','debug','ShowFaxQueue','FaxQueue','find','moment','bluebird'];(function(_0xb38fc4,_0x2c9ae3){var _0x1a0f64=function(_0x598962){while(--_0x598962){_0xb38fc4['push'](_0xb38fc4['shift']());}};_0x1a0f64(++_0x2c9ae3);}(_0xdebd,0x1cc));var _0xddeb=function(_0x1c68ac,_0x237209){_0x1c68ac=_0x1c68ac-0x0;var _0x5c225d=_0xdebd[_0x1c68ac];return _0x5c225d;};'use strict';var _=require('lodash');var util=require('util');var moment=require(_0xddeb('0x0'));var BPromise=require(_0xddeb('0x1'));var rs=require(_0xddeb('0x2'));var fs=require('fs');var Redis=require(_0xddeb('0x3'));var db=require(_0xddeb('0x4'))['db'];var utils=require('../../config/utils');var logger=require(_0xddeb('0x5'))(_0xddeb('0x6'));var config=require(_0xddeb('0x7'));var jayson=require(_0xddeb('0x8'));var client=jayson[_0xddeb('0x9')][_0xddeb('0xa')]({'port':0x232a});config[_0xddeb('0xb')]=_[_0xddeb('0xc')](config[_0xddeb('0xb')],{'host':'localhost','port':0x18eb});var socket=require(_0xddeb('0xd'))(new Redis(config[_0xddeb('0xb')]));require(_0xddeb('0xe'))[_0xddeb('0xf')](socket);function respondWithRpcPromise(_0x1ad34b,_0x49e048,_0x471d5f){return new BPromise(function(_0x391b61,_0x270df2){return client[_0xddeb('0x10')](_0x1ad34b,_0x471d5f)[_0xddeb('0x11')](function(_0x120713){logger[_0xddeb('0x12')](_0xddeb('0x13'),_0x49e048,_0xddeb('0x14'));logger['debug'](_0xddeb('0x15'),_0x49e048,_0xddeb('0x14'),JSON[_0xddeb('0x16')](_0x120713));if(_0x120713[_0xddeb('0x17')]){if(_0x120713[_0xddeb('0x17')][_0xddeb('0x18')]===0x1f4){logger[_0xddeb('0x17')](_0xddeb('0x13'),_0x49e048,_0x120713[_0xddeb('0x17')]['message']);return _0x270df2(_0x120713['error'][_0xddeb('0x19')]);}logger[_0xddeb('0x17')](_0xddeb('0x13'),_0x49e048,_0x120713[_0xddeb('0x17')][_0xddeb('0x19')]);return _0x391b61(_0x120713[_0xddeb('0x17')][_0xddeb('0x19')]);}else{logger['info'](_0xddeb('0x13'),_0x49e048,_0xddeb('0x14'));_0x391b61(_0x120713[_0xddeb('0x1a')][_0xddeb('0x19')]);}})[_0xddeb('0x1b')](function(_0x39cd6b){logger['error']('FaxQueue,\x20%s,\x20%s',_0x49e048,_0x39cd6b);_0x270df2(_0x39cd6b);});});}exports[_0xddeb('0x1c')]=function(_0x2129a8){var _0x1a8951=this;return new Promise(function(_0x3ec3f4,_0x42702d){return db['FaxQueue'][_0xddeb('0x1d')]({'raw':_0x2129a8[_0xddeb('0x1e')]?_0x2129a8[_0xddeb('0x1e')][_0xddeb('0x1f')]===undefined?!![]:![]:!![],'where':_0x2129a8[_0xddeb('0x1e')]?_0x2129a8[_0xddeb('0x1e')][_0xddeb('0x20')]||null:null,'attributes':_0x2129a8[_0xddeb('0x1e')]?_0x2129a8[_0xddeb('0x1e')][_0xddeb('0x21')]||null:null,'limit':_0x2129a8[_0xddeb('0x1e')]?_0x2129a8[_0xddeb('0x1e')][_0xddeb('0x22')]||null:null,'include':_0x2129a8[_0xddeb('0x1e')]?_0x2129a8[_0xddeb('0x1e')][_0xddeb('0x23')]?_[_0xddeb('0x24')](_0x2129a8[_0xddeb('0x1e')][_0xddeb('0x23')],function(_0x5abd22){return{'model':db[_0x5abd22[_0xddeb('0x25')]],'as':_0x5abd22['as'],'attributes':_0x5abd22['attributes'],'include':_0x5abd22[_0xddeb('0x23')]?_['map'](_0x5abd22[_0xddeb('0x23')],function(_0x1524f9){return{'model':db[_0x1524f9['model']],'as':_0x1524f9['as'],'attributes':_0x1524f9['attributes'],'include':_0x1524f9[_0xddeb('0x23')]?_[_0xddeb('0x24')](_0x1524f9[_0xddeb('0x23')],function(_0x2a2af9){return{'model':db[_0x2a2af9[_0xddeb('0x25')]],'as':_0x2a2af9['as'],'attributes':_0x2a2af9[_0xddeb('0x21')]};}):[]};}):[]};}):[]:[]})[_0xddeb('0x11')](function(_0x106f07){logger[_0xddeb('0x12')](_0xddeb('0x1c'),_0x2129a8);logger[_0xddeb('0x26')](_0xddeb('0x1c'),_0x2129a8,JSON[_0xddeb('0x16')](_0x106f07));_0x3ec3f4(_0x106f07);})[_0xddeb('0x1b')](function(_0x5eb544){logger[_0xddeb('0x17')](_0xddeb('0x1c'),_0x5eb544[_0xddeb('0x19')],_0x2129a8);_0x42702d(_0x1a8951['error'](0x1f4,_0x5eb544[_0xddeb('0x19')]));});});};exports[_0xddeb('0x27')]=function(_0x35a2da){var _0x11fe24=this;return new Promise(function(_0xf5bb25,_0x3d186b){return db[_0xddeb('0x28')][_0xddeb('0x29')]({'raw':_0x35a2da[_0xddeb('0x1e')]?_0x35a2da[_0xddeb('0x1e')][_0xddeb('0x1f')]===undefined?!![]:![]:!![],'where':_0x35a2da[_0xddeb('0x1e')]?_0x35a2da[_0xddeb('0x1e')]['where']||null:null,'attributes':_0x35a2da['options']?_0x35a2da[_0xddeb('0x1e')][_0xddeb('0x21')]||null:null,'include':_0x35a2da['options']?_0x35a2da[_0xddeb('0x1e')][_0xddeb('0x23')]?_['map'](_0x35a2da[_0xddeb('0x1e')][_0xddeb('0x23')],function(_0x2644e3){return{'model':db[_0x2644e3[_0xddeb('0x25')]],'as':_0x2644e3['as'],'attributes':_0x2644e3[_0xddeb('0x21')],'include':_0x2644e3[_0xddeb('0x23')]?_[_0xddeb('0x24')](_0x2644e3[_0xddeb('0x23')],function(_0x15ebc3){return{'model':db[_0x15ebc3[_0xddeb('0x25')]],'as':_0x15ebc3['as'],'attributes':_0x15ebc3[_0xddeb('0x21')],'include':_0x15ebc3['include']?_[_0xddeb('0x24')](_0x15ebc3[_0xddeb('0x23')],function(_0x4037df){return{'model':db[_0x4037df[_0xddeb('0x25')]],'as':_0x4037df['as'],'attributes':_0x4037df[_0xddeb('0x21')]};}):[]};}):[]};}):[]:[]})[_0xddeb('0x11')](function(_0x39bd65){logger['info'](_0xddeb('0x27'),_0x35a2da);logger[_0xddeb('0x26')](_0xddeb('0x27'),_0x35a2da,JSON[_0xddeb('0x16')](_0x39bd65));_0xf5bb25(_0x39bd65);})[_0xddeb('0x1b')](function(_0x4e2dcc){logger[_0xddeb('0x17')](_0xddeb('0x27'),_0x4e2dcc[_0xddeb('0x19')],_0x35a2da);_0x3d186b(_0x11fe24[_0xddeb('0x17')](0x1f4,_0x4e2dcc[_0xddeb('0x19')]));});});};
\ No newline at end of file
+var _0xadfb=['result','FaxQueue','findAll','options','where','attributes','limit','include','map','model','GetFaxQueue','stringify','catch','ShowFaxQueue','find','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','../../config/environment','jayson/promise','http','redis','defaults','localhost','socket.io-emitter','./faxQueue.socket','register','request','then','info','request\x20sent','debug','FaxQueue,\x20%s,\x20%s,\x20%s','error','code','FaxQueue,\x20%s,\x20%s','message'];(function(_0x19950b,_0x53d0d7){var _0x3c6b41=function(_0x3924ad){while(--_0x3924ad){_0x19950b['push'](_0x19950b['shift']());}};_0x3c6b41(++_0x53d0d7);}(_0xadfb,0xd7));var _0xbadf=function(_0x209e50,_0x4ddc6e){_0x209e50=_0x209e50-0x0;var _0x32349a=_0xadfb[_0x209e50];return _0x32349a;};'use strict';var _=require('lodash');var util=require('util');var moment=require('moment');var BPromise=require(_0xbadf('0x0'));var rs=require(_0xbadf('0x1'));var fs=require('fs');var Redis=require(_0xbadf('0x2'));var db=require(_0xbadf('0x3'))['db'];var utils=require(_0xbadf('0x4'));var logger=require(_0xbadf('0x5'))('rpc');var config=require(_0xbadf('0x6'));var jayson=require(_0xbadf('0x7'));var client=jayson['client'][_0xbadf('0x8')]({'port':0x232a});config[_0xbadf('0x9')]=_[_0xbadf('0xa')](config[_0xbadf('0x9')],{'host':_0xbadf('0xb'),'port':0x18eb});var socket=require(_0xbadf('0xc'))(new Redis(config[_0xbadf('0x9')]));require(_0xbadf('0xd'))[_0xbadf('0xe')](socket);function respondWithRpcPromise(_0x2f4573,_0xed7e29,_0x18c8a0){return new BPromise(function(_0x12fde1,_0x1f1bc7){return client[_0xbadf('0xf')](_0x2f4573,_0x18c8a0)[_0xbadf('0x10')](function(_0xe7e4f5){logger[_0xbadf('0x11')]('FaxQueue,\x20%s,\x20%s',_0xed7e29,_0xbadf('0x12'));logger[_0xbadf('0x13')](_0xbadf('0x14'),_0xed7e29,_0xbadf('0x12'),JSON['stringify'](_0xe7e4f5));if(_0xe7e4f5[_0xbadf('0x15')]){if(_0xe7e4f5[_0xbadf('0x15')][_0xbadf('0x16')]===0x1f4){logger[_0xbadf('0x15')](_0xbadf('0x17'),_0xed7e29,_0xe7e4f5[_0xbadf('0x15')][_0xbadf('0x18')]);return _0x1f1bc7(_0xe7e4f5[_0xbadf('0x15')][_0xbadf('0x18')]);}logger[_0xbadf('0x15')](_0xbadf('0x17'),_0xed7e29,_0xe7e4f5[_0xbadf('0x15')][_0xbadf('0x18')]);return _0x12fde1(_0xe7e4f5['error']['message']);}else{logger[_0xbadf('0x11')](_0xbadf('0x17'),_0xed7e29,'request\x20sent');_0x12fde1(_0xe7e4f5[_0xbadf('0x19')][_0xbadf('0x18')]);}})['catch'](function(_0x4a2f45){logger['error'](_0xbadf('0x17'),_0xed7e29,_0x4a2f45);_0x1f1bc7(_0x4a2f45);});});}exports['GetFaxQueue']=function(_0x1c7aea){var _0x4d3af9=this;return new Promise(function(_0x210972,_0x2ce060){return db[_0xbadf('0x1a')][_0xbadf('0x1b')]({'raw':_0x1c7aea[_0xbadf('0x1c')]?_0x1c7aea['options']['raw']===undefined?!![]:![]:!![],'where':_0x1c7aea[_0xbadf('0x1c')]?_0x1c7aea[_0xbadf('0x1c')][_0xbadf('0x1d')]||null:null,'attributes':_0x1c7aea[_0xbadf('0x1c')]?_0x1c7aea[_0xbadf('0x1c')][_0xbadf('0x1e')]||null:null,'limit':_0x1c7aea[_0xbadf('0x1c')]?_0x1c7aea['options'][_0xbadf('0x1f')]||null:null,'include':_0x1c7aea['options']?_0x1c7aea[_0xbadf('0x1c')][_0xbadf('0x20')]?_[_0xbadf('0x21')](_0x1c7aea[_0xbadf('0x1c')][_0xbadf('0x20')],function(_0x48aba5){return{'model':db[_0x48aba5['model']],'as':_0x48aba5['as'],'attributes':_0x48aba5[_0xbadf('0x1e')],'include':_0x48aba5['include']?_[_0xbadf('0x21')](_0x48aba5[_0xbadf('0x20')],function(_0x4f9eb7){return{'model':db[_0x4f9eb7[_0xbadf('0x22')]],'as':_0x4f9eb7['as'],'attributes':_0x4f9eb7[_0xbadf('0x1e')],'include':_0x4f9eb7[_0xbadf('0x20')]?_['map'](_0x4f9eb7[_0xbadf('0x20')],function(_0x3f8e2f){return{'model':db[_0x3f8e2f[_0xbadf('0x22')]],'as':_0x3f8e2f['as'],'attributes':_0x3f8e2f[_0xbadf('0x1e')]};}):[]};}):[]};}):[]:[]})[_0xbadf('0x10')](function(_0x11a8aa){logger[_0xbadf('0x11')](_0xbadf('0x23'),_0x1c7aea);logger['debug'](_0xbadf('0x23'),_0x1c7aea,JSON[_0xbadf('0x24')](_0x11a8aa));_0x210972(_0x11a8aa);})[_0xbadf('0x25')](function(_0x11cfc2){logger[_0xbadf('0x15')](_0xbadf('0x23'),_0x11cfc2[_0xbadf('0x18')],_0x1c7aea);_0x2ce060(_0x4d3af9[_0xbadf('0x15')](0x1f4,_0x11cfc2[_0xbadf('0x18')]));});});};exports[_0xbadf('0x26')]=function(_0x10fd8a){var _0x5a34d8=this;return new Promise(function(_0x166d57,_0x29d214){return db['FaxQueue'][_0xbadf('0x27')]({'raw':_0x10fd8a[_0xbadf('0x1c')]?_0x10fd8a[_0xbadf('0x1c')]['raw']===undefined?!![]:![]:!![],'where':_0x10fd8a[_0xbadf('0x1c')]?_0x10fd8a[_0xbadf('0x1c')][_0xbadf('0x1d')]||null:null,'attributes':_0x10fd8a[_0xbadf('0x1c')]?_0x10fd8a[_0xbadf('0x1c')]['attributes']||null:null,'include':_0x10fd8a[_0xbadf('0x1c')]?_0x10fd8a['options']['include']?_[_0xbadf('0x21')](_0x10fd8a[_0xbadf('0x1c')][_0xbadf('0x20')],function(_0x310b71){return{'model':db[_0x310b71[_0xbadf('0x22')]],'as':_0x310b71['as'],'attributes':_0x310b71[_0xbadf('0x1e')],'include':_0x310b71[_0xbadf('0x20')]?_[_0xbadf('0x21')](_0x310b71[_0xbadf('0x20')],function(_0x4cf5cd){return{'model':db[_0x4cf5cd['model']],'as':_0x4cf5cd['as'],'attributes':_0x4cf5cd[_0xbadf('0x1e')],'include':_0x4cf5cd[_0xbadf('0x20')]?_[_0xbadf('0x21')](_0x4cf5cd['include'],function(_0xaafcd0){return{'model':db[_0xaafcd0['model']],'as':_0xaafcd0['as'],'attributes':_0xaafcd0['attributes']};}):[]};}):[]};}):[]:[]})[_0xbadf('0x10')](function(_0xfbf1ff){logger['info'](_0xbadf('0x26'),_0x10fd8a);logger['debug'](_0xbadf('0x26'),_0x10fd8a,JSON[_0xbadf('0x24')](_0xfbf1ff));_0x166d57(_0xfbf1ff);})[_0xbadf('0x25')](function(_0x2f9762){logger[_0xbadf('0x15')](_0xbadf('0x26'),_0x2f9762[_0xbadf('0x18')],_0x10fd8a);_0x29d214(_0x5a34d8[_0xbadf('0x15')](0x1f4,_0x2f9762[_0xbadf('0x18')]));});});};
\ No newline at end of file
index 4afd83c..407665a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1964=['faxQueue:','./faxQueue.events','save','remove','update','emit','removeListener'];(function(_0x468370,_0x45bc25){var _0x500f53=function(_0x2b3e32){while(--_0x2b3e32){_0x468370['push'](_0x468370['shift']());}};_0x500f53(++_0x45bc25);}(_0x1964,0xe1));var _0x4196=function(_0x18b95d,_0x3bebca){_0x18b95d=_0x18b95d-0x0;var _0x5b29cd=_0x1964[_0x18b95d];return _0x5b29cd;};'use strict';var FaxQueueEvents=require(_0x4196('0x0'));var events=[_0x4196('0x1'),_0x4196('0x2'),_0x4196('0x3')];function createListener(_0x120464,_0x238ae3){return function(_0x2dea2c){_0x238ae3[_0x4196('0x4')](_0x120464,_0x2dea2c);};}function removeListener(_0x327c6a,_0x70d088){return function(){FaxQueueEvents[_0x4196('0x5')](_0x327c6a,_0x70d088);};}exports['register']=function(_0x44f89d){for(var _0x3aa0ce=0x0,_0x3437de=events['length'];_0x3aa0ce<_0x3437de;_0x3aa0ce++){var _0x2abdeb=events[_0x3aa0ce];var _0x22f618=createListener(_0x4196('0x6')+_0x2abdeb,_0x44f89d);FaxQueueEvents['on'](_0x2abdeb,_0x22f618);}};
\ No newline at end of file
+var _0x35e5=['./faxQueue.events','update','emit','removeListener','register','length','faxQueue:'];(function(_0x320908,_0x21dca3){var _0x3684fe=function(_0x1813e6){while(--_0x1813e6){_0x320908['push'](_0x320908['shift']());}};_0x3684fe(++_0x21dca3);}(_0x35e5,0xc4));var _0x535e=function(_0x87c02a,_0x5b81eb){_0x87c02a=_0x87c02a-0x0;var _0x206094=_0x35e5[_0x87c02a];return _0x206094;};'use strict';var FaxQueueEvents=require(_0x535e('0x0'));var events=['save','remove',_0x535e('0x1')];function createListener(_0x5d02b4,_0x21ded1){return function(_0x43753e){_0x21ded1[_0x535e('0x2')](_0x5d02b4,_0x43753e);};}function removeListener(_0x30997d,_0x458d94){return function(){FaxQueueEvents[_0x535e('0x3')](_0x30997d,_0x458d94);};}exports[_0x535e('0x4')]=function(_0x38328d){for(var _0x3fdc43=0x0,_0x1d5f08=events[_0x535e('0x5')];_0x3fdc43<_0x1d5f08;_0x3fdc43++){var _0x1904b8=events[_0x3fdc43];var _0x39ff17=createListener(_0x535e('0x6')+_0x1904b8,_0x38328d);FaxQueueEvents['on'](_0x1904b8,_0x39ff17);}};
\ No newline at end of file
index 21b897a..1d5f6f9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6d11=['destroy','removeTeams','multer','util','path','express','fs-extra','../../components/auth/service','./faxQueue.controller','get','isAuthenticated','index','/describe','show','/:id/members','getMembers','/:id/teams','getTeams','/:id/users','post','create','addTeams','addAgents','put','/:id','update','delete'];(function(_0x302244,_0x181f9c){var _0x18e34e=function(_0xe2df6a){while(--_0xe2df6a){_0x302244['push'](_0x302244['shift']());}};_0x18e34e(++_0x181f9c);}(_0x6d11,0xbf));var _0x16d1=function(_0x3616b3,_0x314c8d){_0x3616b3=_0x3616b3-0x0;var _0x58da83=_0x6d11[_0x3616b3];return _0x58da83;};'use strict';var multer=require(_0x16d1('0x0'));var util=require(_0x16d1('0x1'));var path=require(_0x16d1('0x2'));var timeout=require('connect-timeout');var express=require(_0x16d1('0x3'));var router=express['Router']();var fs_extra=require(_0x16d1('0x4'));var auth=require(_0x16d1('0x5'));var interaction=require('../../components/interaction/service');var config=require('../../config/environment');var controller=require(_0x16d1('0x6'));router[_0x16d1('0x7')]('/',auth[_0x16d1('0x8')](),controller[_0x16d1('0x9')]);router[_0x16d1('0x7')](_0x16d1('0xa'),auth[_0x16d1('0x8')](),controller['describe']);router['get']('/:id',auth[_0x16d1('0x8')](),controller[_0x16d1('0xb')]);router[_0x16d1('0x7')](_0x16d1('0xc'),auth['isAuthenticated'](),controller[_0x16d1('0xd')]);router[_0x16d1('0x7')](_0x16d1('0xe'),auth[_0x16d1('0x8')](),controller[_0x16d1('0xf')]);router[_0x16d1('0x7')](_0x16d1('0x10'),auth[_0x16d1('0x8')](),controller['getAgents']);router[_0x16d1('0x11')]('/',auth[_0x16d1('0x8')](),controller[_0x16d1('0x12')]);router[_0x16d1('0x11')](_0x16d1('0xe'),auth['isAuthenticated'](),controller[_0x16d1('0x13')]);router[_0x16d1('0x11')](_0x16d1('0x10'),auth[_0x16d1('0x8')](),controller[_0x16d1('0x14')]);router[_0x16d1('0x15')](_0x16d1('0x16'),auth['isAuthenticated'](),controller[_0x16d1('0x17')]);router[_0x16d1('0x18')]('/:id',auth['isAuthenticated'](),controller[_0x16d1('0x19')]);router['delete'](_0x16d1('0xe'),auth['isAuthenticated'](),controller[_0x16d1('0x1a')]);router['delete'](_0x16d1('0x10'),auth[_0x16d1('0x8')](),controller['removeAgents']);module['exports']=router;
\ No newline at end of file
+var _0xdb28=['../../config/environment','get','isAuthenticated','/describe','describe','/:id','show','/:id/members','getMembers','/:id/teams','/:id/users','getAgents','post','addTeams','addAgents','put','update','delete','destroy','removeTeams','removeAgents','exports','multer','util','path','connect-timeout','Router','fs-extra','../../components/auth/service','../../components/interaction/service'];(function(_0x122ef9,_0x451d2a){var _0x42fba0=function(_0x17c9d3){while(--_0x17c9d3){_0x122ef9['push'](_0x122ef9['shift']());}};_0x42fba0(++_0x451d2a);}(_0xdb28,0x106));var _0x8db2=function(_0x42225f,_0x4479e5){_0x42225f=_0x42225f-0x0;var _0x175895=_0xdb28[_0x42225f];return _0x175895;};'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('./faxQueue.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['getTeams']);router[_0x8db2('0x9')](_0x8db2('0x12'),auth[_0x8db2('0xa')](),controller[_0x8db2('0x13')]);router[_0x8db2('0x14')]('/',auth['isAuthenticated'](),controller['create']);router[_0x8db2('0x14')](_0x8db2('0x11'),auth[_0x8db2('0xa')](),controller[_0x8db2('0x15')]);router[_0x8db2('0x14')](_0x8db2('0x12'),auth[_0x8db2('0xa')](),controller[_0x8db2('0x16')]);router[_0x8db2('0x17')](_0x8db2('0xd'),auth['isAuthenticated'](),controller[_0x8db2('0x18')]);router[_0x8db2('0x19')]('/:id',auth[_0x8db2('0xa')](),controller[_0x8db2('0x1a')]);router[_0x8db2('0x19')](_0x8db2('0x11'),auth[_0x8db2('0xa')](),controller[_0x8db2('0x1b')]);router['delete']('/:id/users',auth[_0x8db2('0xa')](),controller[_0x8db2('0x1c')]);module[_0x8db2('0x1d')]=router;
\ No newline at end of file
index 4e9ef9f..1968db4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x25b4=['exports','STRING','DATE','moment'];(function(_0x48be2d,_0x53c7a2){var _0x427905=function(_0x5d32cc){while(--_0x5d32cc){_0x48be2d['push'](_0x48be2d['shift']());}};_0x427905(++_0x53c7a2);}(_0x25b4,0x1ab));var _0x425b=function(_0x543084,_0x4337f5){_0x543084=_0x543084-0x0;var _0x306a57=_0x25b4[_0x543084];return _0x306a57;};'use strict';var moment=require(_0x425b('0x0'));var Sequelize=require('sequelize');module[_0x425b('0x1')]={'uniqueid':{'type':Sequelize[_0x425b('0x2')],'allowNull':![]},'from':{'type':Sequelize[_0x425b('0x2')]},'joinAt':{'type':Sequelize[_0x425b('0x3')]},'leaveAt':{'type':Sequelize['DATE']},'acceptAt':{'type':Sequelize[_0x425b('0x3')]},'exitAt':{'type':Sequelize[_0x425b('0x3')]},'reason':{'type':Sequelize[_0x425b('0x2')]}};
\ No newline at end of file
+var _0x102c=['exports','STRING','DATE','moment','sequelize'];(function(_0x35e683,_0x128119){var _0x580795=function(_0x1facd4){while(--_0x1facd4){_0x35e683['push'](_0x35e683['shift']());}};_0x580795(++_0x128119);}(_0x102c,0x16b));var _0xc102=function(_0x5bd426,_0x4878e5){_0x5bd426=_0x5bd426-0x0;var _0x23a7eb=_0x102c[_0x5bd426];return _0x23a7eb;};'use strict';var moment=require(_0xc102('0x0'));var Sequelize=require(_0xc102('0x1'));module[_0xc102('0x2')]={'uniqueid':{'type':Sequelize[_0xc102('0x3')],'allowNull':![]},'from':{'type':Sequelize[_0xc102('0x3')]},'joinAt':{'type':Sequelize[_0xc102('0x4')]},'leaveAt':{'type':Sequelize[_0xc102('0x4')]},'acceptAt':{'type':Sequelize[_0xc102('0x4')]},'exitAt':{'type':Sequelize[_0xc102('0x4')]},'reason':{'type':Sequelize['STRING']}};
\ No newline at end of file
index e9b2c7f..07bbabe 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0487=['error','stack','name','send','FaxQueueReport','rawAttributes','fieldName','model','query','keys','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','filter','map','type','VIRTUAL','merge','includeAll','findAll','rows','show','params','include','find','catch','body','describe','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','mustache','path','sox','to-csv','ejs','lodash','squel','crypto','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/utils','../../config/environment','../../mysqldb','sendStatus','status','end','json','offset','limit','undefined','count','Content-Range','apply','reject','update','then','destroy'];(function(_0x289a67,_0x1e5a3c){var _0x572b49=function(_0x22e036){while(--_0x22e036){_0x289a67['push'](_0x289a67['shift']());}};_0x572b49(++_0x1e5a3c);}(_0x0487,0x14f));var _0x7048=function(_0x373dee,_0x1a8c45){_0x373dee=_0x373dee-0x0;var _0x46798f=_0x0487[_0x373dee];return _0x46798f;};'use strict';var emlformat=require(_0x7048('0x0'));var rimraf=require(_0x7048('0x1'));var zipdir=require(_0x7048('0x2'));var jsonpatch=require(_0x7048('0x3'));var rp=require(_0x7048('0x4'));var moment=require(_0x7048('0x5'));var BPromise=require('bluebird');var Mustache=require(_0x7048('0x6'));var util=require('util');var path=require(_0x7048('0x7'));var sox=require(_0x7048('0x8'));var csv=require(_0x7048('0x9'));var ejs=require(_0x7048('0xa'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x7048('0xb'));var squel=require(_0x7048('0xc'));var crypto=require(_0x7048('0xd'));var jsforce=require('jsforce');var deskjs=require(_0x7048('0xe'));var toCsv=require('to-csv');var querystring=require(_0x7048('0xf'));var Papa=require(_0x7048('0x10'));var Redis=require(_0x7048('0x11'));var authService=require(_0x7048('0x12'));var qs=require(_0x7048('0x13'));var as=require(_0x7048('0x14'));var hardwareService=require(_0x7048('0x15'));var logger=require('../../config/logger')(_0x7048('0x16'));var utils=require(_0x7048('0x17'));var config=require(_0x7048('0x18'));var licenseUtil=require('../../config/license/util');var db=require(_0x7048('0x19'))['db'];function respondWithStatusCode(_0x1ba215,_0x59542b){_0x59542b=_0x59542b||0xcc;return function(_0x116386){if(_0x116386){return _0x1ba215[_0x7048('0x1a')](_0x59542b);}return _0x1ba215[_0x7048('0x1b')](_0x59542b)[_0x7048('0x1c')]();};}function respondWithResult(_0xc9c508,_0x546c51){_0x546c51=_0x546c51||0xc8;return function(_0x1072d0){if(_0x1072d0){return _0xc9c508['status'](_0x546c51)[_0x7048('0x1d')](_0x1072d0);}};}function respondWithFilteredResult(_0x361cf8,_0x6a2a55){return function(_0x2b9800){if(_0x2b9800){var _0x4ec491=typeof _0x6a2a55[_0x7048('0x1e')]==='undefined'&&typeof _0x6a2a55[_0x7048('0x1f')]===_0x7048('0x20');var _0x4cff1c=_0x2b9800['count'];var _0x255d5d=_0x4ec491?0x0:_0x6a2a55[_0x7048('0x1e')];var _0x1db323=_0x4ec491?_0x2b9800[_0x7048('0x21')]:_0x6a2a55['offset']+_0x6a2a55[_0x7048('0x1f')];var _0x5b040b;if(_0x1db323>=_0x4cff1c){_0x1db323=_0x4cff1c;_0x5b040b=0xc8;}else{_0x5b040b=0xce;}_0x361cf8['status'](_0x5b040b);return _0x361cf8['set'](_0x7048('0x22'),_0x255d5d+'-'+_0x1db323+'/'+_0x4cff1c)[_0x7048('0x1d')](_0x2b9800);}return null;};}function patchUpdates(_0xa83230){return function(_0x4b9def){try{jsonpatch[_0x7048('0x23')](_0x4b9def,_0xa83230,!![]);}catch(_0x5de659){return BPromise[_0x7048('0x24')](_0x5de659);}return _0x4b9def['save']();};}function saveUpdates(_0x3d6ee7,_0x43a621){return function(_0x31c5dc){if(_0x31c5dc){return _0x31c5dc[_0x7048('0x25')](_0x3d6ee7)[_0x7048('0x26')](function(_0x171304){return _0x171304;});}return null;};}function removeEntity(_0x5a683d,_0x4c8709){return function(_0x519649){if(_0x519649){return _0x519649[_0x7048('0x27')]()['then'](function(){_0x5a683d[_0x7048('0x1b')](0xcc)[_0x7048('0x1c')]();});}};}function handleEntityNotFound(_0x3c7c96,_0x4fc143){return function(_0x1e0c61){if(!_0x1e0c61){_0x3c7c96['sendStatus'](0x194);}return _0x1e0c61;};}function handleError(_0x33a9f1,_0x4a0f3b){_0x4a0f3b=_0x4a0f3b||0x1f4;return function(_0xe3b552){logger[_0x7048('0x28')](_0xe3b552[_0x7048('0x29')]);if(_0xe3b552['name']){delete _0xe3b552[_0x7048('0x2a')];}_0x33a9f1['status'](_0x4a0f3b)[_0x7048('0x2b')](_0xe3b552);};}exports['index']=function(_0x228981,_0x5ee10a){var _0x30d90b={},_0x3ccc34={},_0x52e437={'count':0x0,'rows':[]};var _0x5f2459=_['map'](db[_0x7048('0x2c')][_0x7048('0x2d')],function(_0x575bd3){return{'name':_0x575bd3[_0x7048('0x2e')],'type':_0x575bd3['type']['key']};});_0x3ccc34[_0x7048('0x2f')]=_['map'](_0x5f2459,_0x7048('0x2a'));_0x3ccc34[_0x7048('0x30')]=_[_0x7048('0x31')](_0x228981[_0x7048('0x30')]);_0x3ccc34[_0x7048('0x32')]=_[_0x7048('0x33')](_0x3ccc34[_0x7048('0x2f')],_0x3ccc34[_0x7048('0x30')]);_0x30d90b[_0x7048('0x34')]=_['intersection'](_0x3ccc34['model'],qs[_0x7048('0x35')](_0x228981[_0x7048('0x30')][_0x7048('0x35')]));_0x30d90b['attributes']=_0x30d90b[_0x7048('0x34')][_0x7048('0x36')]?_0x30d90b[_0x7048('0x34')]:_0x3ccc34[_0x7048('0x2f')];if(!_0x228981[_0x7048('0x30')][_0x7048('0x37')](_0x7048('0x38'))){_0x30d90b[_0x7048('0x1f')]=qs[_0x7048('0x1f')](_0x228981[_0x7048('0x30')][_0x7048('0x1f')]);_0x30d90b['offset']=qs['offset'](_0x228981[_0x7048('0x30')]['offset']);}_0x30d90b[_0x7048('0x39')]=qs['sort'](_0x228981[_0x7048('0x30')][_0x7048('0x3a')]);_0x30d90b[_0x7048('0x3b')]=qs[_0x7048('0x32')](_['pick'](_0x228981[_0x7048('0x30')],_0x3ccc34[_0x7048('0x32')]),_0x5f2459);if(_0x228981[_0x7048('0x30')][_0x7048('0x3c')]){_0x30d90b['where']=_['merge'](_0x30d90b[_0x7048('0x3b')],{'$or':_[_0x7048('0x3d')](_0x5f2459,function(_0x3bd55e){if(_0x3bd55e[_0x7048('0x3e')]!==_0x7048('0x3f')){var _0xae5fce={};_0xae5fce[_0x3bd55e[_0x7048('0x2a')]]={'$like':'%'+_0x228981[_0x7048('0x30')]['filter']+'%'};return _0xae5fce;}})});}_0x30d90b=_[_0x7048('0x40')]({},_0x30d90b,_0x228981['options']);var _0x3f0561={'where':_0x30d90b[_0x7048('0x3b')]};return db['FaxQueueReport'][_0x7048('0x21')](_0x3f0561)[_0x7048('0x26')](function(_0x295bdf){_0x52e437['count']=_0x295bdf;if(_0x228981[_0x7048('0x30')][_0x7048('0x41')]){_0x30d90b['include']=[{'all':!![]}];}return db[_0x7048('0x2c')][_0x7048('0x42')](_0x30d90b);})[_0x7048('0x26')](function(_0x418249){_0x52e437[_0x7048('0x43')]=_0x418249;return _0x52e437;})[_0x7048('0x26')](respondWithFilteredResult(_0x5ee10a,_0x30d90b))['catch'](handleError(_0x5ee10a,null));};exports[_0x7048('0x44')]=function(_0x35a872,_0x52afa9){var _0x5b23d0={'raw':!![],'where':{'id':_0x35a872[_0x7048('0x45')]['id']}},_0x360bd9={};_0x360bd9[_0x7048('0x2f')]=_[_0x7048('0x31')](db[_0x7048('0x2c')][_0x7048('0x2d')]);_0x360bd9[_0x7048('0x30')]=_[_0x7048('0x31')](_0x35a872['query']);_0x360bd9[_0x7048('0x32')]=_[_0x7048('0x33')](_0x360bd9[_0x7048('0x2f')],_0x360bd9[_0x7048('0x30')]);_0x5b23d0[_0x7048('0x34')]=_['intersection'](_0x360bd9[_0x7048('0x2f')],qs[_0x7048('0x35')](_0x35a872[_0x7048('0x30')][_0x7048('0x35')]));_0x5b23d0['attributes']=_0x5b23d0[_0x7048('0x34')][_0x7048('0x36')]?_0x5b23d0[_0x7048('0x34')]:_0x360bd9['model'];if(_0x35a872[_0x7048('0x30')]['includeAll']){_0x5b23d0[_0x7048('0x46')]=[{'all':!![]}];}_0x5b23d0=_['merge']({},_0x5b23d0,_0x35a872['options']);return db[_0x7048('0x2c')][_0x7048('0x47')](_0x5b23d0)[_0x7048('0x26')](handleEntityNotFound(_0x52afa9,null))[_0x7048('0x26')](respondWithResult(_0x52afa9,null))[_0x7048('0x48')](handleError(_0x52afa9,null));};exports['create']=function(_0x2ddf45,_0x2c579a){return db[_0x7048('0x2c')]['create'](_0x2ddf45[_0x7048('0x49')],{})['then'](respondWithResult(_0x2c579a,0xc9))[_0x7048('0x48')](handleError(_0x2c579a,null));};exports['update']=function(_0x3b1e0d,_0x213d74){if(_0x3b1e0d[_0x7048('0x49')]['id']){delete _0x3b1e0d['body']['id'];}return db[_0x7048('0x2c')][_0x7048('0x47')]({'where':{'id':_0x3b1e0d['params']['id']}})['then'](handleEntityNotFound(_0x213d74,null))['then'](saveUpdates(_0x3b1e0d['body'],null))[_0x7048('0x26')](respondWithResult(_0x213d74,null))[_0x7048('0x48')](handleError(_0x213d74,null));};exports[_0x7048('0x27')]=function(_0x1832f1,_0x5799dc){return db[_0x7048('0x2c')][_0x7048('0x47')]({'where':{'id':_0x1832f1[_0x7048('0x45')]['id']}})[_0x7048('0x26')](handleEntityNotFound(_0x5799dc,null))[_0x7048('0x26')](removeEntity(_0x5799dc,null))['catch'](handleError(_0x5799dc,null));};exports[_0x7048('0x4a')]=function(_0x59f158,_0x38b0d9){return db[_0x7048('0x2c')]['describe']()['then'](respondWithResult(_0x38b0d9,null))[_0x7048('0x48')](handleError(_0x38b0d9,null));};
\ No newline at end of file
+var _0xcd31=['util','path','sox','ejs','fs-extra','lodash','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/utils','../../config/environment','../../config/license/util','sendStatus','status','offset','count','limit','set','Content-Range','reject','update','then','error','name','send','index','map','rawAttributes','fieldName','type','key','query','keys','filters','model','fields','attributes','length','hasOwnProperty','nolimit','where','pick','VIRTUAL','filter','merge','FaxQueueReport','includeAll','include','rows','catch','intersection','options','create','body','find','destroy','describe','rimraf','zip-dir','fast-json-patch','moment','bluebird','mustache'];(function(_0x2f5ac5,_0x1ee939){var _0x37c9a8=function(_0x15031f){while(--_0x15031f){_0x2f5ac5['push'](_0x2f5ac5['shift']());}};_0x37c9a8(++_0x1ee939);}(_0xcd31,0x15d));var _0x1cd3=function(_0x474ba7,_0x1d74c6){_0x474ba7=_0x474ba7-0x0;var _0x422657=_0xcd31[_0x474ba7];return _0x422657;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x1cd3('0x0'));var zipdir=require(_0x1cd3('0x1'));var jsonpatch=require(_0x1cd3('0x2'));var rp=require('request-promise');var moment=require(_0x1cd3('0x3'));var BPromise=require(_0x1cd3('0x4'));var Mustache=require(_0x1cd3('0x5'));var util=require(_0x1cd3('0x6'));var path=require(_0x1cd3('0x7'));var sox=require(_0x1cd3('0x8'));var csv=require('to-csv');var ejs=require(_0x1cd3('0x9'));var fs=require('fs');var fs_extra=require(_0x1cd3('0xa'));var _=require(_0x1cd3('0xb'));var squel=require('squel');var crypto=require(_0x1cd3('0xc'));var jsforce=require(_0x1cd3('0xd'));var deskjs=require(_0x1cd3('0xe'));var toCsv=require('to-csv');var querystring=require(_0x1cd3('0xf'));var Papa=require(_0x1cd3('0x10'));var Redis=require(_0x1cd3('0x11'));var authService=require(_0x1cd3('0x12'));var qs=require(_0x1cd3('0x13'));var as=require(_0x1cd3('0x14'));var hardwareService=require(_0x1cd3('0x15'));var logger=require('../../config/logger')(_0x1cd3('0x16'));var utils=require(_0x1cd3('0x17'));var config=require(_0x1cd3('0x18'));var licenseUtil=require(_0x1cd3('0x19'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0xfe288e,_0x4c9c6d){_0x4c9c6d=_0x4c9c6d||0xcc;return function(_0x41016f){if(_0x41016f){return _0xfe288e[_0x1cd3('0x1a')](_0x4c9c6d);}return _0xfe288e[_0x1cd3('0x1b')](_0x4c9c6d)['end']();};}function respondWithResult(_0x5b885f,_0x1a874c){_0x1a874c=_0x1a874c||0xc8;return function(_0x1def57){if(_0x1def57){return _0x5b885f[_0x1cd3('0x1b')](_0x1a874c)['json'](_0x1def57);}};}function respondWithFilteredResult(_0x2b28cf,_0x40cbbf){return function(_0x5a2b84){if(_0x5a2b84){var _0x418da3=typeof _0x40cbbf['offset']==='undefined'&&typeof _0x40cbbf['limit']==='undefined';var _0x5ca15c=_0x5a2b84['count'];var _0x14c491=_0x418da3?0x0:_0x40cbbf[_0x1cd3('0x1c')];var _0xf82a46=_0x418da3?_0x5a2b84[_0x1cd3('0x1d')]:_0x40cbbf[_0x1cd3('0x1c')]+_0x40cbbf[_0x1cd3('0x1e')];var _0x35870b;if(_0xf82a46>=_0x5ca15c){_0xf82a46=_0x5ca15c;_0x35870b=0xc8;}else{_0x35870b=0xce;}_0x2b28cf[_0x1cd3('0x1b')](_0x35870b);return _0x2b28cf[_0x1cd3('0x1f')](_0x1cd3('0x20'),_0x14c491+'-'+_0xf82a46+'/'+_0x5ca15c)['json'](_0x5a2b84);}return null;};}function patchUpdates(_0x33fc72){return function(_0x2368b3){try{jsonpatch['apply'](_0x2368b3,_0x33fc72,!![]);}catch(_0x26b59a){return BPromise[_0x1cd3('0x21')](_0x26b59a);}return _0x2368b3['save']();};}function saveUpdates(_0x20cda5,_0x159d22){return function(_0x330741){if(_0x330741){return _0x330741[_0x1cd3('0x22')](_0x20cda5)['then'](function(_0x4f6920){return _0x4f6920;});}return null;};}function removeEntity(_0x29ff8c,_0x1a6dad){return function(_0x49c7b1){if(_0x49c7b1){return _0x49c7b1['destroy']()[_0x1cd3('0x23')](function(){_0x29ff8c[_0x1cd3('0x1b')](0xcc)['end']();});}};}function handleEntityNotFound(_0x55aa9c,_0x34b15f){return function(_0x1589fa){if(!_0x1589fa){_0x55aa9c['sendStatus'](0x194);}return _0x1589fa;};}function handleError(_0x5635f9,_0x1c86f6){_0x1c86f6=_0x1c86f6||0x1f4;return function(_0xc311a9){logger[_0x1cd3('0x24')](_0xc311a9['stack']);if(_0xc311a9['name']){delete _0xc311a9[_0x1cd3('0x25')];}_0x5635f9['status'](_0x1c86f6)[_0x1cd3('0x26')](_0xc311a9);};}exports[_0x1cd3('0x27')]=function(_0x268501,_0x4b7c0b){var _0xae9d0c={},_0x53979a={},_0x47578c={'count':0x0,'rows':[]};var _0x3e3afb=_[_0x1cd3('0x28')](db['FaxQueueReport'][_0x1cd3('0x29')],function(_0x909bc6){return{'name':_0x909bc6[_0x1cd3('0x2a')],'type':_0x909bc6[_0x1cd3('0x2b')][_0x1cd3('0x2c')]};});_0x53979a['model']=_[_0x1cd3('0x28')](_0x3e3afb,_0x1cd3('0x25'));_0x53979a[_0x1cd3('0x2d')]=_[_0x1cd3('0x2e')](_0x268501[_0x1cd3('0x2d')]);_0x53979a[_0x1cd3('0x2f')]=_['intersection'](_0x53979a[_0x1cd3('0x30')],_0x53979a[_0x1cd3('0x2d')]);_0xae9d0c['attributes']=_['intersection'](_0x53979a[_0x1cd3('0x30')],qs[_0x1cd3('0x31')](_0x268501[_0x1cd3('0x2d')][_0x1cd3('0x31')]));_0xae9d0c[_0x1cd3('0x32')]=_0xae9d0c['attributes'][_0x1cd3('0x33')]?_0xae9d0c['attributes']:_0x53979a['model'];if(!_0x268501[_0x1cd3('0x2d')][_0x1cd3('0x34')](_0x1cd3('0x35'))){_0xae9d0c[_0x1cd3('0x1e')]=qs['limit'](_0x268501[_0x1cd3('0x2d')]['limit']);_0xae9d0c[_0x1cd3('0x1c')]=qs[_0x1cd3('0x1c')](_0x268501[_0x1cd3('0x2d')][_0x1cd3('0x1c')]);}_0xae9d0c['order']=qs['sort'](_0x268501[_0x1cd3('0x2d')]['sort']);_0xae9d0c[_0x1cd3('0x36')]=qs[_0x1cd3('0x2f')](_[_0x1cd3('0x37')](_0x268501[_0x1cd3('0x2d')],_0x53979a[_0x1cd3('0x2f')]),_0x3e3afb);if(_0x268501['query']['filter']){_0xae9d0c['where']=_['merge'](_0xae9d0c[_0x1cd3('0x36')],{'$or':_['map'](_0x3e3afb,function(_0x285845){if(_0x285845['type']!==_0x1cd3('0x38')){var _0x1af9a6={};_0x1af9a6[_0x285845['name']]={'$like':'%'+_0x268501[_0x1cd3('0x2d')][_0x1cd3('0x39')]+'%'};return _0x1af9a6;}})});}_0xae9d0c=_[_0x1cd3('0x3a')]({},_0xae9d0c,_0x268501['options']);var _0x53e2dd={'where':_0xae9d0c[_0x1cd3('0x36')]};return db[_0x1cd3('0x3b')][_0x1cd3('0x1d')](_0x53e2dd)[_0x1cd3('0x23')](function(_0x2cc3a3){_0x47578c[_0x1cd3('0x1d')]=_0x2cc3a3;if(_0x268501[_0x1cd3('0x2d')][_0x1cd3('0x3c')]){_0xae9d0c[_0x1cd3('0x3d')]=[{'all':!![]}];}return db['FaxQueueReport']['findAll'](_0xae9d0c);})['then'](function(_0x42a2ed){_0x47578c[_0x1cd3('0x3e')]=_0x42a2ed;return _0x47578c;})['then'](respondWithFilteredResult(_0x4b7c0b,_0xae9d0c))[_0x1cd3('0x3f')](handleError(_0x4b7c0b,null));};exports['show']=function(_0x40b662,_0x2f6a00){var _0x2109a2={'raw':!![],'where':{'id':_0x40b662['params']['id']}},_0x326f08={};_0x326f08['model']=_['keys'](db[_0x1cd3('0x3b')]['rawAttributes']);_0x326f08['query']=_[_0x1cd3('0x2e')](_0x40b662['query']);_0x326f08[_0x1cd3('0x2f')]=_[_0x1cd3('0x40')](_0x326f08[_0x1cd3('0x30')],_0x326f08[_0x1cd3('0x2d')]);_0x2109a2[_0x1cd3('0x32')]=_[_0x1cd3('0x40')](_0x326f08[_0x1cd3('0x30')],qs[_0x1cd3('0x31')](_0x40b662['query'][_0x1cd3('0x31')]));_0x2109a2[_0x1cd3('0x32')]=_0x2109a2[_0x1cd3('0x32')]['length']?_0x2109a2['attributes']:_0x326f08[_0x1cd3('0x30')];if(_0x40b662[_0x1cd3('0x2d')][_0x1cd3('0x3c')]){_0x2109a2[_0x1cd3('0x3d')]=[{'all':!![]}];}_0x2109a2=_[_0x1cd3('0x3a')]({},_0x2109a2,_0x40b662[_0x1cd3('0x41')]);return db[_0x1cd3('0x3b')]['find'](_0x2109a2)[_0x1cd3('0x23')](handleEntityNotFound(_0x2f6a00,null))[_0x1cd3('0x23')](respondWithResult(_0x2f6a00,null))[_0x1cd3('0x3f')](handleError(_0x2f6a00,null));};exports['create']=function(_0x57c84d,_0x2605c5){return db[_0x1cd3('0x3b')][_0x1cd3('0x42')](_0x57c84d[_0x1cd3('0x43')],{})[_0x1cd3('0x23')](respondWithResult(_0x2605c5,0xc9))['catch'](handleError(_0x2605c5,null));};exports['update']=function(_0x500fcf,_0x3cde0b){if(_0x500fcf[_0x1cd3('0x43')]['id']){delete _0x500fcf[_0x1cd3('0x43')]['id'];}return db[_0x1cd3('0x3b')][_0x1cd3('0x44')]({'where':{'id':_0x500fcf['params']['id']}})['then'](handleEntityNotFound(_0x3cde0b,null))[_0x1cd3('0x23')](saveUpdates(_0x500fcf[_0x1cd3('0x43')],null))['then'](respondWithResult(_0x3cde0b,null))[_0x1cd3('0x3f')](handleError(_0x3cde0b,null));};exports[_0x1cd3('0x45')]=function(_0x2542f6,_0x5c7d9c){return db['FaxQueueReport'][_0x1cd3('0x44')]({'where':{'id':_0x2542f6['params']['id']}})[_0x1cd3('0x23')](handleEntityNotFound(_0x5c7d9c,null))[_0x1cd3('0x23')](removeEntity(_0x5c7d9c,null))[_0x1cd3('0x3f')](handleError(_0x5c7d9c,null));};exports[_0x1cd3('0x46')]=function(_0x44037e,_0xfaecf0){return db[_0x1cd3('0x3b')][_0x1cd3('0x46')]()['then'](respondWithResult(_0xfaecf0,null))[_0x1cd3('0x3f')](handleError(_0xfaecf0,null));};
\ No newline at end of file
index 2d3d22a..71752a4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xabce=['path','rimraf','../../config/environment','define','report_fax_queue','uniqueid','lodash','util','../../config/logger','api','moment'];(function(_0x4cd15c,_0xe5ab2){var _0x168ddc=function(_0x42bdfe){while(--_0x42bdfe){_0x4cd15c['push'](_0x4cd15c['shift']());}};_0x168ddc(++_0xe5ab2);}(_0xabce,0x103));var _0xeabc=function(_0x18a79d,_0x57bd2c){_0x18a79d=_0x18a79d-0x0;var _0x4f8848=_0xabce[_0x18a79d];return _0x4f8848;};'use strict';var _=require(_0xeabc('0x0'));var util=require(_0xeabc('0x1'));var logger=require(_0xeabc('0x2'))(_0xeabc('0x3'));var moment=require(_0xeabc('0x4'));var BPromise=require('bluebird');var rp=require('request-promise');var fs=require('fs');var path=require(_0xeabc('0x5'));var rimraf=require(_0xeabc('0x6'));var config=require(_0xeabc('0x7'));var attributes=require('./faxQueueReport.attributes');module['exports']=function(_0x1b07a8,_0x52a4d7){return _0x1b07a8[_0xeabc('0x8')]('FaxQueueReport',attributes,{'tableName':_0xeabc('0x9'),'paranoid':![],'indexes':[{'name':_0xeabc('0xa'),'fields':[_0xeabc('0xa')]}],'timestamps':!![]});};
\ No newline at end of file
+var _0x814b=['../../config/logger','api','moment','bluebird','path','rimraf','../../config/environment','./faxQueueReport.attributes','exports','define','FaxQueueReport','uniqueid','lodash','util'];(function(_0x295314,_0x17b250){var _0x584b0c=function(_0x51cc84){while(--_0x51cc84){_0x295314['push'](_0x295314['shift']());}};_0x584b0c(++_0x17b250);}(_0x814b,0x1a2));var _0xb814=function(_0x1bc013,_0x7771c6){_0x1bc013=_0x1bc013-0x0;var _0x55df36=_0x814b[_0x1bc013];return _0x55df36;};'use strict';var _=require(_0xb814('0x0'));var util=require(_0xb814('0x1'));var logger=require(_0xb814('0x2'))(_0xb814('0x3'));var moment=require(_0xb814('0x4'));var BPromise=require(_0xb814('0x5'));var rp=require('request-promise');var fs=require('fs');var path=require(_0xb814('0x6'));var rimraf=require(_0xb814('0x7'));var config=require(_0xb814('0x8'));var attributes=require(_0xb814('0x9'));module[_0xb814('0xa')]=function(_0x322a70,_0x53e507){return _0x322a70[_0xb814('0xb')](_0xb814('0xc'),attributes,{'tableName':'report_fax_queue','paranoid':![],'indexes':[{'name':_0xb814('0xd'),'fields':[_0xb814('0xd')]}],'timestamps':!![]});};
\ No newline at end of file
index 53d35cd..0cb92c0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x896c=['create','body','options','raw','then','FaxQueueReport','update','attributes','limit','UpdateFaxQueueReport','util','ioredis','../../mysqldb','../../config/utils','../../config/logger','../../config/environment','jayson/promise','client','http','request','info','FaxQueueReport,\x20%s,\x20%s','request\x20sent','debug','FaxQueueReport,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','CreateFaxQueueReport'];(function(_0x51fe86,_0x422b66){var _0x3557d4=function(_0x524a6a){while(--_0x524a6a){_0x51fe86['push'](_0x51fe86['shift']());}};_0x3557d4(++_0x422b66);}(_0x896c,0x1db));var _0xc896=function(_0x455150,_0x274121){_0x455150=_0x455150-0x0;var _0x12ca9c=_0x896c[_0x455150];return _0x12ca9c;};'use strict';var _=require('lodash');var util=require(_0xc896('0x0'));var moment=require('moment');var BPromise=require('bluebird');var rs=require('randomstring');var fs=require('fs');var Redis=require(_0xc896('0x1'));var db=require(_0xc896('0x2'))['db'];var utils=require(_0xc896('0x3'));var logger=require(_0xc896('0x4'))('rpc');var config=require(_0xc896('0x5'));var jayson=require(_0xc896('0x6'));var client=jayson[_0xc896('0x7')][_0xc896('0x8')]({'port':0x232a});function respondWithRpcPromise(_0x3df677,_0x33d6b5,_0x317a96){return new BPromise(function(_0x2cc8df,_0x291945){return client[_0xc896('0x9')](_0x3df677,_0x317a96)['then'](function(_0x20c216){logger[_0xc896('0xa')](_0xc896('0xb'),_0x33d6b5,_0xc896('0xc'));logger[_0xc896('0xd')](_0xc896('0xe'),_0x33d6b5,_0xc896('0xc'),JSON[_0xc896('0xf')](_0x20c216));if(_0x20c216[_0xc896('0x10')]){if(_0x20c216[_0xc896('0x10')][_0xc896('0x11')]===0x1f4){logger[_0xc896('0x10')](_0xc896('0xb'),_0x33d6b5,_0x20c216['error'][_0xc896('0x12')]);return _0x291945(_0x20c216[_0xc896('0x10')][_0xc896('0x12')]);}logger[_0xc896('0x10')](_0xc896('0xb'),_0x33d6b5,_0x20c216['error']['message']);return _0x2cc8df(_0x20c216[_0xc896('0x10')]['message']);}else{logger[_0xc896('0xa')](_0xc896('0xb'),_0x33d6b5,_0xc896('0xc'));_0x2cc8df(_0x20c216[_0xc896('0x13')][_0xc896('0x12')]);}})['catch'](function(_0x645a47){logger[_0xc896('0x10')](_0xc896('0xb'),_0x33d6b5,_0x645a47);_0x291945(_0x645a47);});});}exports[_0xc896('0x14')]=function(_0xcd22b){var _0x509ba8=this;return new Promise(function(_0x42e828,_0x18abc2){return db['FaxQueueReport'][_0xc896('0x15')](_0xcd22b[_0xc896('0x16')],{'raw':_0xcd22b[_0xc896('0x17')]?_0xcd22b[_0xc896('0x17')][_0xc896('0x18')]===undefined?!![]:![]:!![]})[_0xc896('0x19')](function(_0x4af499){logger[_0xc896('0xa')](_0xc896('0x14'),_0xcd22b);logger[_0xc896('0xd')](_0xc896('0x14'),_0xcd22b,JSON[_0xc896('0xf')](_0x4af499));_0x42e828(_0x4af499);})['catch'](function(_0x589c36){logger['error'](_0xc896('0x14'),_0x589c36[_0xc896('0x12')],_0xcd22b);_0x18abc2(_0x509ba8[_0xc896('0x10')](0x1f4,_0x589c36['message']));});});};exports['UpdateFaxQueueReport']=function(_0x5302d5){var _0x27676f=this;return new Promise(function(_0x972262,_0x54ce45){return db[_0xc896('0x1a')][_0xc896('0x1b')](_0x5302d5[_0xc896('0x16')],{'raw':_0x5302d5[_0xc896('0x17')]?_0x5302d5['options'][_0xc896('0x18')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x5302d5[_0xc896('0x17')]?_0x5302d5[_0xc896('0x17')]['where']||null:null,'attributes':_0x5302d5[_0xc896('0x17')]?_0x5302d5[_0xc896('0x17')][_0xc896('0x1c')]||null:null,'limit':_0x5302d5[_0xc896('0x17')]?_0x5302d5['options'][_0xc896('0x1d')]||null:null})[_0xc896('0x19')](function(_0x49e4df){logger[_0xc896('0xa')](_0xc896('0x1e'),_0x5302d5);logger[_0xc896('0xd')](_0xc896('0x1e'),_0x5302d5,JSON['stringify'](_0x49e4df));_0x972262(_0x49e4df);})['catch'](function(_0x15ec66){logger['error'](_0xc896('0x1e'),_0x15ec66['message'],_0x5302d5);_0x54ce45(_0x27676f[_0xc896('0x10')](0x1f4,_0x15ec66[_0xc896('0x12')]));});});};
\ No newline at end of file
+var _0x9077=['request\x20sent','stringify','error','code','message','catch','CreateFaxQueueReport','create','options','UpdateFaxQueueReport','update','body','raw','where','attributes','limit','lodash','util','moment','bluebird','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','jayson/promise','client','http','request','then','info','FaxQueueReport,\x20%s,\x20%s','debug','FaxQueueReport,\x20%s,\x20%s,\x20%s'];(function(_0xbd0f32,_0x127abb){var _0x26f682=function(_0x54985b){while(--_0x54985b){_0xbd0f32['push'](_0xbd0f32['shift']());}};_0x26f682(++_0x127abb);}(_0x9077,0x76));var _0x7907=function(_0x78291f,_0x3bf6ef){_0x78291f=_0x78291f-0x0;var _0x197968=_0x9077[_0x78291f];return _0x197968;};'use strict';var _=require(_0x7907('0x0'));var util=require(_0x7907('0x1'));var moment=require(_0x7907('0x2'));var BPromise=require(_0x7907('0x3'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x7907('0x4'));var db=require(_0x7907('0x5'))['db'];var utils=require(_0x7907('0x6'));var logger=require(_0x7907('0x7'))(_0x7907('0x8'));var config=require('../../config/environment');var jayson=require(_0x7907('0x9'));var client=jayson[_0x7907('0xa')][_0x7907('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x5c84c5,_0x190b5b,_0xc22a90){return new BPromise(function(_0x3648d8,_0x37384b){return client[_0x7907('0xc')](_0x5c84c5,_0xc22a90)[_0x7907('0xd')](function(_0x2462c7){logger[_0x7907('0xe')](_0x7907('0xf'),_0x190b5b,'request\x20sent');logger[_0x7907('0x10')](_0x7907('0x11'),_0x190b5b,_0x7907('0x12'),JSON[_0x7907('0x13')](_0x2462c7));if(_0x2462c7[_0x7907('0x14')]){if(_0x2462c7['error'][_0x7907('0x15')]===0x1f4){logger[_0x7907('0x14')](_0x7907('0xf'),_0x190b5b,_0x2462c7['error'][_0x7907('0x16')]);return _0x37384b(_0x2462c7[_0x7907('0x14')][_0x7907('0x16')]);}logger[_0x7907('0x14')]('FaxQueueReport,\x20%s,\x20%s',_0x190b5b,_0x2462c7[_0x7907('0x14')][_0x7907('0x16')]);return _0x3648d8(_0x2462c7[_0x7907('0x14')][_0x7907('0x16')]);}else{logger[_0x7907('0xe')](_0x7907('0xf'),_0x190b5b,_0x7907('0x12'));_0x3648d8(_0x2462c7['result']['message']);}})[_0x7907('0x17')](function(_0x4339b9){logger[_0x7907('0x14')](_0x7907('0xf'),_0x190b5b,_0x4339b9);_0x37384b(_0x4339b9);});});}exports[_0x7907('0x18')]=function(_0x5303f1){var _0x579df7=this;return new Promise(function(_0x16e6fe,_0x4232ef){return db['FaxQueueReport'][_0x7907('0x19')](_0x5303f1['body'],{'raw':_0x5303f1[_0x7907('0x1a')]?_0x5303f1[_0x7907('0x1a')]['raw']===undefined?!![]:![]:!![]})[_0x7907('0xd')](function(_0x5cad04){logger[_0x7907('0xe')]('CreateFaxQueueReport',_0x5303f1);logger[_0x7907('0x10')](_0x7907('0x18'),_0x5303f1,JSON['stringify'](_0x5cad04));_0x16e6fe(_0x5cad04);})[_0x7907('0x17')](function(_0x14fc44){logger[_0x7907('0x14')]('CreateFaxQueueReport',_0x14fc44[_0x7907('0x16')],_0x5303f1);_0x4232ef(_0x579df7[_0x7907('0x14')](0x1f4,_0x14fc44[_0x7907('0x16')]));});});};exports[_0x7907('0x1b')]=function(_0x12bb1e){var _0x515287=this;return new Promise(function(_0x39611e,_0x4b3f99){return db['FaxQueueReport'][_0x7907('0x1c')](_0x12bb1e[_0x7907('0x1d')],{'raw':_0x12bb1e[_0x7907('0x1a')]?_0x12bb1e[_0x7907('0x1a')][_0x7907('0x1e')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x12bb1e['options']?_0x12bb1e[_0x7907('0x1a')][_0x7907('0x1f')]||null:null,'attributes':_0x12bb1e[_0x7907('0x1a')]?_0x12bb1e[_0x7907('0x1a')][_0x7907('0x20')]||null:null,'limit':_0x12bb1e['options']?_0x12bb1e['options'][_0x7907('0x21')]||null:null})[_0x7907('0xd')](function(_0x48b174){logger[_0x7907('0xe')](_0x7907('0x1b'),_0x12bb1e);logger[_0x7907('0x10')](_0x7907('0x1b'),_0x12bb1e,JSON[_0x7907('0x13')](_0x48b174));_0x39611e(_0x48b174);})['catch'](function(_0xaa09d){logger[_0x7907('0x14')](_0x7907('0x1b'),_0xaa09d[_0x7907('0x16')],_0x12bb1e);_0x4b3f99(_0x515287['error'](0x1f4,_0xaa09d[_0x7907('0x16')]));});});};
\ No newline at end of file
index e22aaf9..11aaabc 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x45d3=['index','get','/describe','isAuthenticated','describe','/:id','show','post','create','put','delete','destroy','exports','multer','path','connect-timeout','Router','../../components/auth/service','../../components/interaction/service','./faxQueueReport.controller'];(function(_0x121b1a,_0x42fdb7){var _0x2d89a6=function(_0x1b6027){while(--_0x1b6027){_0x121b1a['push'](_0x121b1a['shift']());}};_0x2d89a6(++_0x42fdb7);}(_0x45d3,0x161));var _0x345d=function(_0x55960b,_0x1b3438){_0x55960b=_0x55960b-0x0;var _0x3a7cd1=_0x45d3[_0x55960b];return _0x3a7cd1;};'use strict';var multer=require(_0x345d('0x0'));var util=require('util');var path=require(_0x345d('0x1'));var timeout=require(_0x345d('0x2'));var express=require('express');var router=express[_0x345d('0x3')]();var fs_extra=require('fs-extra');var auth=require(_0x345d('0x4'));var interaction=require(_0x345d('0x5'));var config=require('../../config/environment');var controller=require(_0x345d('0x6'));router['get']('/',auth['isAuthenticated'](),controller[_0x345d('0x7')]);router[_0x345d('0x8')](_0x345d('0x9'),auth[_0x345d('0xa')](),controller[_0x345d('0xb')]);router['get'](_0x345d('0xc'),auth[_0x345d('0xa')](),controller[_0x345d('0xd')]);router[_0x345d('0xe')]('/',auth['isAuthenticated'](),controller[_0x345d('0xf')]);router[_0x345d('0x10')](_0x345d('0xc'),auth['isAuthenticated'](),controller['update']);router[_0x345d('0x11')](_0x345d('0xc'),auth[_0x345d('0xa')](),controller[_0x345d('0x12')]);module[_0x345d('0x13')]=router;
\ No newline at end of file
+var _0x9c8d=['connect-timeout','Router','../../components/auth/service','../../components/interaction/service','../../config/environment','./faxQueueReport.controller','isAuthenticated','get','/:id','show','post','create','update','delete','path'];(function(_0x233600,_0x4c135c){var _0x59b9a0=function(_0xfa02e7){while(--_0xfa02e7){_0x233600['push'](_0x233600['shift']());}};_0x59b9a0(++_0x4c135c);}(_0x9c8d,0x1a3));var _0xd9c8=function(_0x19356f,_0x36afac){_0x19356f=_0x19356f-0x0;var _0xf5f59d=_0x9c8d[_0x19356f];return _0xf5f59d;};'use strict';var multer=require('multer');var util=require('util');var path=require(_0xd9c8('0x0'));var timeout=require(_0xd9c8('0x1'));var express=require('express');var router=express[_0xd9c8('0x2')]();var fs_extra=require('fs-extra');var auth=require(_0xd9c8('0x3'));var interaction=require(_0xd9c8('0x4'));var config=require(_0xd9c8('0x5'));var controller=require(_0xd9c8('0x6'));router['get']('/',auth[_0xd9c8('0x7')](),controller['index']);router['get']('/describe',auth[_0xd9c8('0x7')](),controller['describe']);router[_0xd9c8('0x8')](_0xd9c8('0x9'),auth[_0xd9c8('0x7')](),controller[_0xd9c8('0xa')]);router[_0xd9c8('0xb')]('/',auth[_0xd9c8('0x7')](),controller[_0xd9c8('0xc')]);router['put'](_0xd9c8('0x9'),auth[_0xd9c8('0x7')](),controller[_0xd9c8('0xd')]);router[_0xd9c8('0xe')](_0xd9c8('0x9'),auth[_0xd9c8('0x7')](),controller['destroy']);module['exports']=router;
\ No newline at end of file
index 5727aed..726493b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa9e0=['account','queue','DATE','NOW','moment','sequelize','exports'];(function(_0x309385,_0x3ab38f){var _0x45b0f5=function(_0x4fa7e0){while(--_0x4fa7e0){_0x309385['push'](_0x309385['shift']());}};_0x45b0f5(++_0x3ab38f);}(_0xa9e0,0x123));var _0x0a9e=function(_0x5c3c0b,_0x4ee35e){_0x5c3c0b=_0x5c3c0b-0x0;var _0x52ecd2=_0xa9e0[_0x5c3c0b];return _0x52ecd2;};'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
+var _0xa9e0=['account','queue','DATE','NOW','moment','sequelize','exports'];(function(_0x347097,_0x37a135){var _0x5dfd04=function(_0x131412){while(--_0x131412){_0x347097['push'](_0x347097['shift']());}};_0x5dfd04(++_0x37a135);}(_0xa9e0,0x123));var _0x0a9e=function(_0x31e29a,_0x349c9b){_0x31e29a=_0x31e29a-0x0;var _0x32d892=_0xa9e0[_0x31e29a];return _0x32d892;};'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 500a6f0..e4a08c9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xccec=['hasOwnProperty','nolimit','sort','where','pick','merge','VIRTUAL','filter','options','includeAll','include','findAll','rows','show','params','find','create','body','catch','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','sox','ejs','fs-extra','lodash','squel','jsforce','to-csv','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','api','../../config/utils','../../config/license/util','../../mysqldb','sendStatus','status','end','json','undefined','limit','count','offset','set','apply','reject','save','update','destroy','then','error','stack','name','send','index','map','FaxTransferReport','rawAttributes','fieldName','type','key','model','query','keys','filters','intersection','attributes','fields','length'];(function(_0x343613,_0x111fd1){var _0x5f052d=function(_0x404fa2){while(--_0x404fa2){_0x343613['push'](_0x343613['shift']());}};_0x5f052d(++_0x111fd1);}(_0xccec,0x1cf));var _0xccce=function(_0x4b9283,_0x75dee4){_0x4b9283=_0x4b9283-0x0;var _0x2b6050=_0xccec[_0x4b9283];return _0x2b6050;};'use strict';var emlformat=require('eml-format');var rimraf=require('rimraf');var zipdir=require(_0xccce('0x0'));var jsonpatch=require(_0xccce('0x1'));var rp=require(_0xccce('0x2'));var moment=require(_0xccce('0x3'));var BPromise=require(_0xccce('0x4'));var Mustache=require(_0xccce('0x5'));var util=require('util');var path=require('path');var sox=require(_0xccce('0x6'));var csv=require('to-csv');var ejs=require(_0xccce('0x7'));var fs=require('fs');var fs_extra=require(_0xccce('0x8'));var _=require(_0xccce('0x9'));var squel=require(_0xccce('0xa'));var crypto=require('crypto');var jsforce=require(_0xccce('0xb'));var deskjs=require('desk.js');var toCsv=require(_0xccce('0xc'));var querystring=require('querystring');var Papa=require(_0xccce('0xd'));var Redis=require(_0xccce('0xe'));var authService=require(_0xccce('0xf'));var qs=require(_0xccce('0x10'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require('../../config/license/hardware');var logger=require('../../config/logger')(_0xccce('0x11'));var utils=require(_0xccce('0x12'));var config=require('../../config/environment');var licenseUtil=require(_0xccce('0x13'));var db=require(_0xccce('0x14'))['db'];function respondWithStatusCode(_0x522b8c,_0x51df13){_0x51df13=_0x51df13||0xcc;return function(_0x666020){if(_0x666020){return _0x522b8c[_0xccce('0x15')](_0x51df13);}return _0x522b8c[_0xccce('0x16')](_0x51df13)[_0xccce('0x17')]();};}function respondWithResult(_0x405726,_0x1bd731){_0x1bd731=_0x1bd731||0xc8;return function(_0x3f5046){if(_0x3f5046){return _0x405726['status'](_0x1bd731)[_0xccce('0x18')](_0x3f5046);}};}function respondWithFilteredResult(_0x30aa29,_0x26bb68){return function(_0x4c98bd){if(_0x4c98bd){var _0x5cbcb9=typeof _0x26bb68['offset']===_0xccce('0x19')&&typeof _0x26bb68[_0xccce('0x1a')]===_0xccce('0x19');var _0x13122a=_0x4c98bd[_0xccce('0x1b')];var _0x378ec8=_0x5cbcb9?0x0:_0x26bb68[_0xccce('0x1c')];var _0x160bb3=_0x5cbcb9?_0x4c98bd[_0xccce('0x1b')]:_0x26bb68[_0xccce('0x1c')]+_0x26bb68[_0xccce('0x1a')];var _0x1f6e9c;if(_0x160bb3>=_0x13122a){_0x160bb3=_0x13122a;_0x1f6e9c=0xc8;}else{_0x1f6e9c=0xce;}_0x30aa29[_0xccce('0x16')](_0x1f6e9c);return _0x30aa29[_0xccce('0x1d')]('Content-Range',_0x378ec8+'-'+_0x160bb3+'/'+_0x13122a)[_0xccce('0x18')](_0x4c98bd);}return null;};}function patchUpdates(_0x508cc5){return function(_0x55c241){try{jsonpatch[_0xccce('0x1e')](_0x55c241,_0x508cc5,!![]);}catch(_0x1cd515){return BPromise[_0xccce('0x1f')](_0x1cd515);}return _0x55c241[_0xccce('0x20')]();};}function saveUpdates(_0x24767d,_0x177779){return function(_0x372659){if(_0x372659){return _0x372659[_0xccce('0x21')](_0x24767d)['then'](function(_0x75a266){return _0x75a266;});}return null;};}function removeEntity(_0x2368c5,_0x16ac15){return function(_0x2528b8){if(_0x2528b8){return _0x2528b8[_0xccce('0x22')]()[_0xccce('0x23')](function(){_0x2368c5[_0xccce('0x16')](0xcc)[_0xccce('0x17')]();});}};}function handleEntityNotFound(_0x51a6d5,_0x504b9a){return function(_0x151041){if(!_0x151041){_0x51a6d5[_0xccce('0x15')](0x194);}return _0x151041;};}function handleError(_0x2148b3,_0x181449){_0x181449=_0x181449||0x1f4;return function(_0x56454d){logger[_0xccce('0x24')](_0x56454d[_0xccce('0x25')]);if(_0x56454d[_0xccce('0x26')]){delete _0x56454d[_0xccce('0x26')];}_0x2148b3['status'](_0x181449)[_0xccce('0x27')](_0x56454d);};}exports[_0xccce('0x28')]=function(_0x3c5edd,_0x2b269c){var _0x539be5={},_0x39afb4={},_0x5a2bc1={'count':0x0,'rows':[]};var _0x107df6=_[_0xccce('0x29')](db[_0xccce('0x2a')][_0xccce('0x2b')],function(_0x26daab){return{'name':_0x26daab[_0xccce('0x2c')],'type':_0x26daab[_0xccce('0x2d')][_0xccce('0x2e')]};});_0x39afb4[_0xccce('0x2f')]=_['map'](_0x107df6,'name');_0x39afb4[_0xccce('0x30')]=_[_0xccce('0x31')](_0x3c5edd[_0xccce('0x30')]);_0x39afb4[_0xccce('0x32')]=_[_0xccce('0x33')](_0x39afb4[_0xccce('0x2f')],_0x39afb4[_0xccce('0x30')]);_0x539be5[_0xccce('0x34')]=_['intersection'](_0x39afb4[_0xccce('0x2f')],qs[_0xccce('0x35')](_0x3c5edd['query']['fields']));_0x539be5[_0xccce('0x34')]=_0x539be5[_0xccce('0x34')][_0xccce('0x36')]?_0x539be5[_0xccce('0x34')]:_0x39afb4['model'];if(!_0x3c5edd[_0xccce('0x30')][_0xccce('0x37')](_0xccce('0x38'))){_0x539be5[_0xccce('0x1a')]=qs[_0xccce('0x1a')](_0x3c5edd[_0xccce('0x30')]['limit']);_0x539be5[_0xccce('0x1c')]=qs[_0xccce('0x1c')](_0x3c5edd[_0xccce('0x30')][_0xccce('0x1c')]);}_0x539be5['order']=qs[_0xccce('0x39')](_0x3c5edd[_0xccce('0x30')][_0xccce('0x39')]);_0x539be5[_0xccce('0x3a')]=qs[_0xccce('0x32')](_[_0xccce('0x3b')](_0x3c5edd[_0xccce('0x30')],_0x39afb4[_0xccce('0x32')]),_0x107df6);if(_0x3c5edd[_0xccce('0x30')]['filter']){_0x539be5['where']=_[_0xccce('0x3c')](_0x539be5[_0xccce('0x3a')],{'$or':_[_0xccce('0x29')](_0x107df6,function(_0x958eb){if(_0x958eb[_0xccce('0x2d')]!==_0xccce('0x3d')){var _0x518753={};_0x518753[_0x958eb[_0xccce('0x26')]]={'$like':'%'+_0x3c5edd[_0xccce('0x30')][_0xccce('0x3e')]+'%'};return _0x518753;}})});}_0x539be5=_['merge']({},_0x539be5,_0x3c5edd[_0xccce('0x3f')]);var _0x26975d={'where':_0x539be5[_0xccce('0x3a')]};return db['FaxTransferReport'][_0xccce('0x1b')](_0x26975d)['then'](function(_0x30e0c8){_0x5a2bc1[_0xccce('0x1b')]=_0x30e0c8;if(_0x3c5edd['query'][_0xccce('0x40')]){_0x539be5[_0xccce('0x41')]=[{'all':!![]}];}return db[_0xccce('0x2a')][_0xccce('0x42')](_0x539be5);})[_0xccce('0x23')](function(_0x41924c){_0x5a2bc1[_0xccce('0x43')]=_0x41924c;return _0x5a2bc1;})[_0xccce('0x23')](respondWithFilteredResult(_0x2b269c,_0x539be5))['catch'](handleError(_0x2b269c,null));};exports[_0xccce('0x44')]=function(_0x22fd89,_0x489b77){var _0x49c9c9={'raw':!![],'where':{'id':_0x22fd89[_0xccce('0x45')]['id']}},_0x2f66b6={};_0x2f66b6[_0xccce('0x2f')]=_[_0xccce('0x31')](db[_0xccce('0x2a')][_0xccce('0x2b')]);_0x2f66b6[_0xccce('0x30')]=_['keys'](_0x22fd89[_0xccce('0x30')]);_0x2f66b6[_0xccce('0x32')]=_['intersection'](_0x2f66b6[_0xccce('0x2f')],_0x2f66b6[_0xccce('0x30')]);_0x49c9c9['attributes']=_[_0xccce('0x33')](_0x2f66b6[_0xccce('0x2f')],qs['fields'](_0x22fd89[_0xccce('0x30')][_0xccce('0x35')]));_0x49c9c9[_0xccce('0x34')]=_0x49c9c9[_0xccce('0x34')]['length']?_0x49c9c9[_0xccce('0x34')]:_0x2f66b6['model'];if(_0x22fd89[_0xccce('0x30')][_0xccce('0x40')]){_0x49c9c9[_0xccce('0x41')]=[{'all':!![]}];}_0x49c9c9=_[_0xccce('0x3c')]({},_0x49c9c9,_0x22fd89[_0xccce('0x3f')]);return db['FaxTransferReport'][_0xccce('0x46')](_0x49c9c9)[_0xccce('0x23')](handleEntityNotFound(_0x489b77,null))[_0xccce('0x23')](respondWithResult(_0x489b77,null))['catch'](handleError(_0x489b77,null));};exports[_0xccce('0x47')]=function(_0x368ce3,_0x4c4e13){return db[_0xccce('0x2a')][_0xccce('0x47')](_0x368ce3[_0xccce('0x48')],{})[_0xccce('0x23')](respondWithResult(_0x4c4e13,0xc9))[_0xccce('0x49')](handleError(_0x4c4e13,null));};exports['update']=function(_0x5436e4,_0x416687){if(_0x5436e4[_0xccce('0x48')]['id']){delete _0x5436e4[_0xccce('0x48')]['id'];}return db['FaxTransferReport']['find']({'where':{'id':_0x5436e4[_0xccce('0x45')]['id']}})[_0xccce('0x23')](handleEntityNotFound(_0x416687,null))[_0xccce('0x23')](saveUpdates(_0x5436e4[_0xccce('0x48')],null))[_0xccce('0x23')](respondWithResult(_0x416687,null))[_0xccce('0x49')](handleError(_0x416687,null));};exports[_0xccce('0x22')]=function(_0x24d879,_0x5a58c3){return db[_0xccce('0x2a')]['find']({'where':{'id':_0x24d879[_0xccce('0x45')]['id']}})[_0xccce('0x23')](handleEntityNotFound(_0x5a58c3,null))[_0xccce('0x23')](removeEntity(_0x5a58c3,null))[_0xccce('0x49')](handleError(_0x5a58c3,null));};exports['describe']=function(_0x12c786,_0x5e0773){return db['FaxTransferReport']['describe']()['then'](respondWithResult(_0x5e0773,null))[_0xccce('0x49')](handleError(_0x5e0773,null));};
\ No newline at end of file
+var _0xb2d5=['include','findAll','rows','catch','show','params','create','body','find','describe','eml-format','rimraf','fast-json-patch','request-promise','moment','bluebird','mustache','path','to-csv','ejs','fs-extra','crypto','jsforce','querystring','papaparse','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','offset','undefined','limit','count','apply','reject','save','update','then','destroy','stack','name','send','index','map','FaxTransferReport','fieldName','type','model','keys','filters','intersection','query','attributes','fields','length','hasOwnProperty','order','sort','where','pick','filter','merge','VIRTUAL','options','includeAll'];(function(_0x12c60a,_0xc2a818){var _0x25d0f6=function(_0x302bfb){while(--_0x302bfb){_0x12c60a['push'](_0x12c60a['shift']());}};_0x25d0f6(++_0xc2a818);}(_0xb2d5,0x1c0));var _0x5b2d=function(_0x2f2f70,_0x4d0a75){_0x2f2f70=_0x2f2f70-0x0;var _0x4c1c88=_0xb2d5[_0x2f2f70];return _0x4c1c88;};'use strict';var emlformat=require(_0x5b2d('0x0'));var rimraf=require(_0x5b2d('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0x5b2d('0x2'));var rp=require(_0x5b2d('0x3'));var moment=require(_0x5b2d('0x4'));var BPromise=require(_0x5b2d('0x5'));var Mustache=require(_0x5b2d('0x6'));var util=require('util');var path=require(_0x5b2d('0x7'));var sox=require('sox');var csv=require(_0x5b2d('0x8'));var ejs=require(_0x5b2d('0x9'));var fs=require('fs');var fs_extra=require(_0x5b2d('0xa'));var _=require('lodash');var squel=require('squel');var crypto=require(_0x5b2d('0xb'));var jsforce=require(_0x5b2d('0xc'));var deskjs=require('desk.js');var toCsv=require('to-csv');var querystring=require(_0x5b2d('0xd'));var Papa=require(_0x5b2d('0xe'));var Redis=require(_0x5b2d('0xf'));var authService=require('../../components/auth/service');var qs=require(_0x5b2d('0x10'));var as=require(_0x5b2d('0x11'));var hardwareService=require('../../config/license/hardware');var logger=require(_0x5b2d('0x12'))(_0x5b2d('0x13'));var utils=require(_0x5b2d('0x14'));var config=require(_0x5b2d('0x15'));var licenseUtil=require(_0x5b2d('0x16'));var db=require(_0x5b2d('0x17'))['db'];function respondWithStatusCode(_0x204c90,_0x180dd7){_0x180dd7=_0x180dd7||0xcc;return function(_0x423880){if(_0x423880){return _0x204c90[_0x5b2d('0x18')](_0x180dd7);}return _0x204c90[_0x5b2d('0x19')](_0x180dd7)[_0x5b2d('0x1a')]();};}function respondWithResult(_0x4eb006,_0x14f087){_0x14f087=_0x14f087||0xc8;return function(_0x3c2c99){if(_0x3c2c99){return _0x4eb006['status'](_0x14f087)['json'](_0x3c2c99);}};}function respondWithFilteredResult(_0x22d4e5,_0x6f4236){return function(_0x33e477){if(_0x33e477){var _0x3367bb=typeof _0x6f4236[_0x5b2d('0x1b')]===_0x5b2d('0x1c')&&typeof _0x6f4236[_0x5b2d('0x1d')]===_0x5b2d('0x1c');var _0xbe2226=_0x33e477[_0x5b2d('0x1e')];var _0x4a20f4=_0x3367bb?0x0:_0x6f4236['offset'];var _0x12e511=_0x3367bb?_0x33e477['count']:_0x6f4236['offset']+_0x6f4236['limit'];var _0x3afd00;if(_0x12e511>=_0xbe2226){_0x12e511=_0xbe2226;_0x3afd00=0xc8;}else{_0x3afd00=0xce;}_0x22d4e5[_0x5b2d('0x19')](_0x3afd00);return _0x22d4e5['set']('Content-Range',_0x4a20f4+'-'+_0x12e511+'/'+_0xbe2226)['json'](_0x33e477);}return null;};}function patchUpdates(_0x2be7fb){return function(_0xead66d){try{jsonpatch[_0x5b2d('0x1f')](_0xead66d,_0x2be7fb,!![]);}catch(_0x54e1e8){return BPromise[_0x5b2d('0x20')](_0x54e1e8);}return _0xead66d[_0x5b2d('0x21')]();};}function saveUpdates(_0x270506,_0x3dc237){return function(_0x59d9fb){if(_0x59d9fb){return _0x59d9fb[_0x5b2d('0x22')](_0x270506)[_0x5b2d('0x23')](function(_0x3d4e4c){return _0x3d4e4c;});}return null;};}function removeEntity(_0x4220af,_0x49f66c){return function(_0x3d7a9c){if(_0x3d7a9c){return _0x3d7a9c[_0x5b2d('0x24')]()[_0x5b2d('0x23')](function(){_0x4220af[_0x5b2d('0x19')](0xcc)[_0x5b2d('0x1a')]();});}};}function handleEntityNotFound(_0x101260,_0x16bf15){return function(_0x945223){if(!_0x945223){_0x101260[_0x5b2d('0x18')](0x194);}return _0x945223;};}function handleError(_0xc9533,_0x423972){_0x423972=_0x423972||0x1f4;return function(_0x33411a){logger['error'](_0x33411a[_0x5b2d('0x25')]);if(_0x33411a['name']){delete _0x33411a[_0x5b2d('0x26')];}_0xc9533[_0x5b2d('0x19')](_0x423972)[_0x5b2d('0x27')](_0x33411a);};}exports[_0x5b2d('0x28')]=function(_0xf504d3,_0x42801b){var _0x5b81eb={},_0x280d92={},_0x4562c5={'count':0x0,'rows':[]};var _0x60c58=_[_0x5b2d('0x29')](db[_0x5b2d('0x2a')]['rawAttributes'],function(_0x2c6473){return{'name':_0x2c6473[_0x5b2d('0x2b')],'type':_0x2c6473[_0x5b2d('0x2c')]['key']};});_0x280d92[_0x5b2d('0x2d')]=_[_0x5b2d('0x29')](_0x60c58,_0x5b2d('0x26'));_0x280d92['query']=_[_0x5b2d('0x2e')](_0xf504d3['query']);_0x280d92[_0x5b2d('0x2f')]=_[_0x5b2d('0x30')](_0x280d92['model'],_0x280d92[_0x5b2d('0x31')]);_0x5b81eb[_0x5b2d('0x32')]=_[_0x5b2d('0x30')](_0x280d92['model'],qs[_0x5b2d('0x33')](_0xf504d3[_0x5b2d('0x31')][_0x5b2d('0x33')]));_0x5b81eb['attributes']=_0x5b81eb['attributes'][_0x5b2d('0x34')]?_0x5b81eb[_0x5b2d('0x32')]:_0x280d92[_0x5b2d('0x2d')];if(!_0xf504d3[_0x5b2d('0x31')][_0x5b2d('0x35')]('nolimit')){_0x5b81eb[_0x5b2d('0x1d')]=qs['limit'](_0xf504d3[_0x5b2d('0x31')][_0x5b2d('0x1d')]);_0x5b81eb[_0x5b2d('0x1b')]=qs[_0x5b2d('0x1b')](_0xf504d3[_0x5b2d('0x31')][_0x5b2d('0x1b')]);}_0x5b81eb[_0x5b2d('0x36')]=qs[_0x5b2d('0x37')](_0xf504d3[_0x5b2d('0x31')][_0x5b2d('0x37')]);_0x5b81eb[_0x5b2d('0x38')]=qs[_0x5b2d('0x2f')](_[_0x5b2d('0x39')](_0xf504d3[_0x5b2d('0x31')],_0x280d92[_0x5b2d('0x2f')]),_0x60c58);if(_0xf504d3['query'][_0x5b2d('0x3a')]){_0x5b81eb['where']=_[_0x5b2d('0x3b')](_0x5b81eb[_0x5b2d('0x38')],{'$or':_[_0x5b2d('0x29')](_0x60c58,function(_0x24cf0f){if(_0x24cf0f['type']!==_0x5b2d('0x3c')){var _0x32a5de={};_0x32a5de[_0x24cf0f[_0x5b2d('0x26')]]={'$like':'%'+_0xf504d3[_0x5b2d('0x31')]['filter']+'%'};return _0x32a5de;}})});}_0x5b81eb=_['merge']({},_0x5b81eb,_0xf504d3[_0x5b2d('0x3d')]);var _0x2fd4f={'where':_0x5b81eb[_0x5b2d('0x38')]};return db['FaxTransferReport'][_0x5b2d('0x1e')](_0x2fd4f)[_0x5b2d('0x23')](function(_0x39bc5c){_0x4562c5[_0x5b2d('0x1e')]=_0x39bc5c;if(_0xf504d3[_0x5b2d('0x31')][_0x5b2d('0x3e')]){_0x5b81eb[_0x5b2d('0x3f')]=[{'all':!![]}];}return db[_0x5b2d('0x2a')][_0x5b2d('0x40')](_0x5b81eb);})[_0x5b2d('0x23')](function(_0x54caf1){_0x4562c5[_0x5b2d('0x41')]=_0x54caf1;return _0x4562c5;})[_0x5b2d('0x23')](respondWithFilteredResult(_0x42801b,_0x5b81eb))[_0x5b2d('0x42')](handleError(_0x42801b,null));};exports[_0x5b2d('0x43')]=function(_0x1501bc,_0x37dff7){var _0xfcd199={'raw':!![],'where':{'id':_0x1501bc[_0x5b2d('0x44')]['id']}},_0x3212b5={};_0x3212b5[_0x5b2d('0x2d')]=_[_0x5b2d('0x2e')](db[_0x5b2d('0x2a')]['rawAttributes']);_0x3212b5[_0x5b2d('0x31')]=_[_0x5b2d('0x2e')](_0x1501bc[_0x5b2d('0x31')]);_0x3212b5['filters']=_['intersection'](_0x3212b5[_0x5b2d('0x2d')],_0x3212b5[_0x5b2d('0x31')]);_0xfcd199[_0x5b2d('0x32')]=_[_0x5b2d('0x30')](_0x3212b5[_0x5b2d('0x2d')],qs[_0x5b2d('0x33')](_0x1501bc[_0x5b2d('0x31')]['fields']));_0xfcd199[_0x5b2d('0x32')]=_0xfcd199[_0x5b2d('0x32')][_0x5b2d('0x34')]?_0xfcd199[_0x5b2d('0x32')]:_0x3212b5[_0x5b2d('0x2d')];if(_0x1501bc[_0x5b2d('0x31')][_0x5b2d('0x3e')]){_0xfcd199[_0x5b2d('0x3f')]=[{'all':!![]}];}_0xfcd199=_['merge']({},_0xfcd199,_0x1501bc[_0x5b2d('0x3d')]);return db[_0x5b2d('0x2a')]['find'](_0xfcd199)[_0x5b2d('0x23')](handleEntityNotFound(_0x37dff7,null))[_0x5b2d('0x23')](respondWithResult(_0x37dff7,null))[_0x5b2d('0x42')](handleError(_0x37dff7,null));};exports[_0x5b2d('0x45')]=function(_0x197892,_0x5945c2){return db[_0x5b2d('0x2a')]['create'](_0x197892[_0x5b2d('0x46')],{})['then'](respondWithResult(_0x5945c2,0xc9))[_0x5b2d('0x42')](handleError(_0x5945c2,null));};exports[_0x5b2d('0x22')]=function(_0x351633,_0x3000da){if(_0x351633['body']['id']){delete _0x351633[_0x5b2d('0x46')]['id'];}return db[_0x5b2d('0x2a')][_0x5b2d('0x47')]({'where':{'id':_0x351633[_0x5b2d('0x44')]['id']}})[_0x5b2d('0x23')](handleEntityNotFound(_0x3000da,null))[_0x5b2d('0x23')](saveUpdates(_0x351633['body'],null))['then'](respondWithResult(_0x3000da,null))[_0x5b2d('0x42')](handleError(_0x3000da,null));};exports['destroy']=function(_0x16f125,_0x4ceb05){return db[_0x5b2d('0x2a')][_0x5b2d('0x47')]({'where':{'id':_0x16f125[_0x5b2d('0x44')]['id']}})['then'](handleEntityNotFound(_0x4ceb05,null))[_0x5b2d('0x23')](removeEntity(_0x4ceb05,null))[_0x5b2d('0x42')](handleError(_0x4ceb05,null));};exports[_0x5b2d('0x48')]=function(_0x3d2c68,_0x1325a6){return db[_0x5b2d('0x2a')][_0x5b2d('0x48')]()['then'](respondWithResult(_0x1325a6,null))[_0x5b2d('0x42')](handleError(_0x1325a6,null));};
\ No newline at end of file
index 2906ac7..477c778 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9140=['util','../../config/logger','api','moment','request-promise','path','rimraf','./faxTransferReport.attributes','exports','FaxTransferReport','report_fax_transfer','uniqueid','lodash'];(function(_0x3bf83f,_0x181cac){var _0x22c4a9=function(_0xb3ff0d){while(--_0xb3ff0d){_0x3bf83f['push'](_0x3bf83f['shift']());}};_0x22c4a9(++_0x181cac);}(_0x9140,0x185));var _0x0914=function(_0x1f4b5d,_0x5d0ba0){_0x1f4b5d=_0x1f4b5d-0x0;var _0x5079c2=_0x9140[_0x1f4b5d];return _0x5079c2;};'use strict';var _=require(_0x0914('0x0'));var util=require(_0x0914('0x1'));var logger=require(_0x0914('0x2'))(_0x0914('0x3'));var moment=require(_0x0914('0x4'));var BPromise=require('bluebird');var rp=require(_0x0914('0x5'));var fs=require('fs');var path=require(_0x0914('0x6'));var rimraf=require(_0x0914('0x7'));var config=require('../../config/environment');var attributes=require(_0x0914('0x8'));module[_0x0914('0x9')]=function(_0x102d16,_0x3e43aa){return _0x102d16['define'](_0x0914('0xa'),attributes,{'tableName':_0x0914('0xb'),'paranoid':![],'indexes':[{'name':_0x0914('0xc'),'fields':[_0x0914('0xc')]}],'timestamps':!![]});};
\ No newline at end of file
+var _0x5c57=['./faxTransferReport.attributes','report_fax_transfer','uniqueid','lodash','util','../../config/logger','api','moment','bluebird','request-promise','rimraf'];(function(_0x2591d0,_0x182200){var _0x56fd03=function(_0x2fdd7e){while(--_0x2fdd7e){_0x2591d0['push'](_0x2591d0['shift']());}};_0x56fd03(++_0x182200);}(_0x5c57,0x116));var _0x75c5=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x5c57[_0x3dd15e];return _0x231fd0;};'use strict';var _=require(_0x75c5('0x0'));var util=require(_0x75c5('0x1'));var logger=require(_0x75c5('0x2'))(_0x75c5('0x3'));var moment=require(_0x75c5('0x4'));var BPromise=require(_0x75c5('0x5'));var rp=require(_0x75c5('0x6'));var fs=require('fs');var path=require('path');var rimraf=require(_0x75c5('0x7'));var config=require('../../config/environment');var attributes=require(_0x75c5('0x8'));module['exports']=function(_0x342b3c,_0x4ec10d){return _0x342b3c['define']('FaxTransferReport',attributes,{'tableName':_0x75c5('0x9'),'paranoid':![],'indexes':[{'name':_0x75c5('0xa'),'fields':[_0x75c5('0xa')]}],'timestamps':!![]});};
\ No newline at end of file
index ca27d0b..9ac80ed 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x68b9=['bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','../../config/environment','client','http','request','then','info','FaxTransferReport,\x20%s,\x20%s','request\x20sent','debug','FaxTransferReport,\x20%s,\x20%s,\x20%s','error','code','message','result','catch','lodash','util','moment'];(function(_0x310d10,_0x3fe887){var _0x1fb8af=function(_0x42965b){while(--_0x42965b){_0x310d10['push'](_0x310d10['shift']());}};_0x1fb8af(++_0x3fe887);}(_0x68b9,0x195));var _0x968b=function(_0x1c208e,_0x2a0a5b){_0x1c208e=_0x1c208e-0x0;var _0x5104ff=_0x68b9[_0x1c208e];return _0x5104ff;};'use strict';var _=require(_0x968b('0x0'));var util=require(_0x968b('0x1'));var moment=require(_0x968b('0x2'));var BPromise=require(_0x968b('0x3'));var rs=require(_0x968b('0x4'));var fs=require('fs');var Redis=require(_0x968b('0x5'));var db=require(_0x968b('0x6'))['db'];var utils=require(_0x968b('0x7'));var logger=require(_0x968b('0x8'))('rpc');var config=require(_0x968b('0x9'));var jayson=require('jayson/promise');var client=jayson[_0x968b('0xa')][_0x968b('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x1f10ff,_0x2a2708,_0x49331a){return new BPromise(function(_0x22f459,_0x3ee6d8){return client[_0x968b('0xc')](_0x1f10ff,_0x49331a)[_0x968b('0xd')](function(_0xaeb79a){logger[_0x968b('0xe')](_0x968b('0xf'),_0x2a2708,_0x968b('0x10'));logger[_0x968b('0x11')](_0x968b('0x12'),_0x2a2708,_0x968b('0x10'),JSON['stringify'](_0xaeb79a));if(_0xaeb79a['error']){if(_0xaeb79a[_0x968b('0x13')][_0x968b('0x14')]===0x1f4){logger[_0x968b('0x13')](_0x968b('0xf'),_0x2a2708,_0xaeb79a[_0x968b('0x13')][_0x968b('0x15')]);return _0x3ee6d8(_0xaeb79a[_0x968b('0x13')][_0x968b('0x15')]);}logger[_0x968b('0x13')](_0x968b('0xf'),_0x2a2708,_0xaeb79a[_0x968b('0x13')][_0x968b('0x15')]);return _0x22f459(_0xaeb79a[_0x968b('0x13')][_0x968b('0x15')]);}else{logger[_0x968b('0xe')](_0x968b('0xf'),_0x2a2708,_0x968b('0x10'));_0x22f459(_0xaeb79a[_0x968b('0x16')]['message']);}})[_0x968b('0x17')](function(_0x522d6f){logger['error']('FaxTransferReport,\x20%s,\x20%s',_0x2a2708,_0x522d6f);_0x3ee6d8(_0x522d6f);});});}
\ No newline at end of file
+var _0xca82=['bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','request','info','FaxTransferReport,\x20%s,\x20%s','request\x20sent','debug','FaxTransferReport,\x20%s,\x20%s,\x20%s','error','code','message','result','catch','lodash','util','moment'];(function(_0x39d980,_0x15c127){var _0x33fcbc=function(_0x32548a){while(--_0x32548a){_0x39d980['push'](_0x39d980['shift']());}};_0x33fcbc(++_0x15c127);}(_0xca82,0x15b));var _0x2ca8=function(_0x5bf35e,_0x4ccc17){_0x5bf35e=_0x5bf35e-0x0;var _0x35b3d7=_0xca82[_0x5bf35e];return _0x35b3d7;};'use strict';var _=require(_0x2ca8('0x0'));var util=require(_0x2ca8('0x1'));var moment=require(_0x2ca8('0x2'));var BPromise=require(_0x2ca8('0x3'));var rs=require(_0x2ca8('0x4'));var fs=require('fs');var Redis=require(_0x2ca8('0x5'));var db=require(_0x2ca8('0x6'))['db'];var utils=require(_0x2ca8('0x7'));var logger=require(_0x2ca8('0x8'))(_0x2ca8('0x9'));var config=require(_0x2ca8('0xa'));var jayson=require(_0x2ca8('0xb'));var client=jayson[_0x2ca8('0xc')][_0x2ca8('0xd')]({'port':0x232a});function respondWithRpcPromise(_0x556d09,_0xcb3b17,_0x2407ce){return new BPromise(function(_0x28e936,_0x3d6583){return client[_0x2ca8('0xe')](_0x556d09,_0x2407ce)['then'](function(_0x1c052d){logger[_0x2ca8('0xf')](_0x2ca8('0x10'),_0xcb3b17,_0x2ca8('0x11'));logger[_0x2ca8('0x12')](_0x2ca8('0x13'),_0xcb3b17,'request\x20sent',JSON['stringify'](_0x1c052d));if(_0x1c052d[_0x2ca8('0x14')]){if(_0x1c052d[_0x2ca8('0x14')][_0x2ca8('0x15')]===0x1f4){logger[_0x2ca8('0x14')]('FaxTransferReport,\x20%s,\x20%s',_0xcb3b17,_0x1c052d[_0x2ca8('0x14')][_0x2ca8('0x16')]);return _0x3d6583(_0x1c052d[_0x2ca8('0x14')]['message']);}logger[_0x2ca8('0x14')](_0x2ca8('0x10'),_0xcb3b17,_0x1c052d[_0x2ca8('0x14')][_0x2ca8('0x16')]);return _0x28e936(_0x1c052d[_0x2ca8('0x14')][_0x2ca8('0x16')]);}else{logger['info'](_0x2ca8('0x10'),_0xcb3b17,'request\x20sent');_0x28e936(_0x1c052d[_0x2ca8('0x17')]['message']);}})[_0x2ca8('0x18')](function(_0x180dd2){logger[_0x2ca8('0x14')](_0x2ca8('0x10'),_0xcb3b17,_0x180dd2);_0x3d6583(_0x180dd2);});});}
\ No newline at end of file
index c4d83a1..773d943 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x17a5=['destroy','exports','multer','path','express','../../components/auth/service','../../components/interaction/service','../../config/environment','./faxTransferReport.controller','get','isAuthenticated','index','/describe','describe','/:id','show','post','create','put','update'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x17a5,0x142));var _0x517a=function(_0x3a2643,_0x3b7c7f){_0x3a2643=_0x3a2643-0x0;var _0x12ec10=_0x17a5[_0x3a2643];return _0x12ec10;};'use strict';var multer=require(_0x517a('0x0'));var util=require('util');var path=require(_0x517a('0x1'));var timeout=require('connect-timeout');var express=require(_0x517a('0x2'));var router=express['Router']();var fs_extra=require('fs-extra');var auth=require(_0x517a('0x3'));var interaction=require(_0x517a('0x4'));var config=require(_0x517a('0x5'));var controller=require(_0x517a('0x6'));router[_0x517a('0x7')]('/',auth[_0x517a('0x8')](),controller[_0x517a('0x9')]);router[_0x517a('0x7')](_0x517a('0xa'),auth[_0x517a('0x8')](),controller[_0x517a('0xb')]);router['get'](_0x517a('0xc'),auth['isAuthenticated'](),controller[_0x517a('0xd')]);router[_0x517a('0xe')]('/',auth[_0x517a('0x8')](),controller[_0x517a('0xf')]);router[_0x517a('0x10')](_0x517a('0xc'),auth[_0x517a('0x8')](),controller[_0x517a('0x11')]);router['delete'](_0x517a('0xc'),auth[_0x517a('0x8')](),controller[_0x517a('0x12')]);module[_0x517a('0x13')]=router;
\ No newline at end of file
+var _0xeba0=['Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./faxTransferReport.controller','isAuthenticated','index','get','/describe','describe','/:id','show','create','put','update','delete','destroy','path','connect-timeout'];(function(_0x1a3968,_0x2720b5){var _0x30f501=function(_0x497dd9){while(--_0x497dd9){_0x1a3968['push'](_0x1a3968['shift']());}};_0x30f501(++_0x2720b5);}(_0xeba0,0x17a));var _0x0eba=function(_0x56f972,_0x49b459){_0x56f972=_0x56f972-0x0;var _0xf415ef=_0xeba0[_0x56f972];return _0xf415ef;};'use strict';var multer=require('multer');var util=require('util');var path=require(_0x0eba('0x0'));var timeout=require(_0x0eba('0x1'));var express=require('express');var router=express[_0x0eba('0x2')]();var fs_extra=require(_0x0eba('0x3'));var auth=require(_0x0eba('0x4'));var interaction=require(_0x0eba('0x5'));var config=require(_0x0eba('0x6'));var controller=require(_0x0eba('0x7'));router['get']('/',auth[_0x0eba('0x8')](),controller[_0x0eba('0x9')]);router[_0x0eba('0xa')](_0x0eba('0xb'),auth['isAuthenticated'](),controller[_0x0eba('0xc')]);router[_0x0eba('0xa')](_0x0eba('0xd'),auth['isAuthenticated'](),controller[_0x0eba('0xe')]);router['post']('/',auth[_0x0eba('0x8')](),controller[_0x0eba('0xf')]);router[_0x0eba('0x10')](_0x0eba('0xd'),auth[_0x0eba('0x8')](),controller[_0x0eba('0x11')]);router[_0x0eba('0x12')]('/:id',auth[_0x0eba('0x8')](),controller[_0x0eba('0x13')]);module['exports']=router;
\ No newline at end of file
index 4e00472..6745073 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7552=['update','delete','destroy','exports','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','./intDeskAccount.controller','get','index','isAuthenticated','show','/:id/configurations','/:id/fields','getFields','post','create','addConfiguration','put','/:id'];(function(_0x22f75e,_0x4a9e06){var _0x1f6ab3=function(_0x1479d4){while(--_0x1479d4){_0x22f75e['push'](_0x22f75e['shift']());}};_0x1f6ab3(++_0x4a9e06);}(_0x7552,0xb3));var _0x2755=function(_0x1bd88f,_0x1944ef){_0x1bd88f=_0x1bd88f-0x0;var _0x595e64=_0x7552[_0x1bd88f];return _0x595e64;};'use strict';var multer=require('multer');var util=require(_0x2755('0x0'));var path=require(_0x2755('0x1'));var timeout=require(_0x2755('0x2'));var express=require(_0x2755('0x3'));var router=express[_0x2755('0x4')]();var fs_extra=require(_0x2755('0x5'));var auth=require(_0x2755('0x6'));var interaction=require(_0x2755('0x7'));var config=require('../../config/environment');var controller=require(_0x2755('0x8'));router[_0x2755('0x9')]('/',auth['isAuthenticated'](),controller[_0x2755('0xa')]);router[_0x2755('0x9')]('/:id',auth[_0x2755('0xb')](),controller[_0x2755('0xc')]);router[_0x2755('0x9')](_0x2755('0xd'),auth['isAuthenticated'](),controller['getConfigurations']);router[_0x2755('0x9')](_0x2755('0xe'),auth[_0x2755('0xb')](),controller[_0x2755('0xf')]);router[_0x2755('0x10')]('/',auth[_0x2755('0xb')](),controller[_0x2755('0x11')]);router[_0x2755('0x10')](_0x2755('0xd'),auth['isAuthenticated'](),controller[_0x2755('0x12')]);router[_0x2755('0x13')](_0x2755('0x14'),auth[_0x2755('0xb')](),controller[_0x2755('0x15')]);router[_0x2755('0x16')](_0x2755('0x14'),auth['isAuthenticated'](),controller[_0x2755('0x17')]);module[_0x2755('0x18')]=router;
\ No newline at end of file
+var _0x69fb=['./intDeskAccount.controller','get','isAuthenticated','index','/:id','show','/:id/configurations','/:id/fields','getFields','post','addConfiguration','put','delete','exports','path','connect-timeout','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment'];(function(_0x1cf04f,_0x392017){var _0x593b9e=function(_0x34a8ce){while(--_0x34a8ce){_0x1cf04f['push'](_0x1cf04f['shift']());}};_0x593b9e(++_0x392017);}(_0x69fb,0xcb));var _0xb69f=function(_0x4630f4,_0x4aa158){_0x4630f4=_0x4630f4-0x0;var _0x3e2187=_0x69fb[_0x4630f4];return _0x3e2187;};'use strict';var multer=require('multer');var util=require('util');var path=require(_0xb69f('0x0'));var timeout=require(_0xb69f('0x1'));var express=require('express');var router=express[_0xb69f('0x2')]();var fs_extra=require(_0xb69f('0x3'));var auth=require(_0xb69f('0x4'));var interaction=require(_0xb69f('0x5'));var config=require(_0xb69f('0x6'));var controller=require(_0xb69f('0x7'));router[_0xb69f('0x8')]('/',auth[_0xb69f('0x9')](),controller[_0xb69f('0xa')]);router[_0xb69f('0x8')](_0xb69f('0xb'),auth['isAuthenticated'](),controller[_0xb69f('0xc')]);router[_0xb69f('0x8')](_0xb69f('0xd'),auth[_0xb69f('0x9')](),controller['getConfigurations']);router[_0xb69f('0x8')](_0xb69f('0xe'),auth[_0xb69f('0x9')](),controller[_0xb69f('0xf')]);router[_0xb69f('0x10')]('/',auth[_0xb69f('0x9')](),controller['create']);router[_0xb69f('0x10')]('/:id/configurations',auth[_0xb69f('0x9')](),controller[_0xb69f('0x11')]);router[_0xb69f('0x12')](_0xb69f('0xb'),auth[_0xb69f('0x9')](),controller['update']);router[_0xb69f('0x13')](_0xb69f('0xb'),auth[_0xb69f('0x9')](),controller['destroy']);module[_0xb69f('0x14')]=router;
\ No newline at end of file
index cc7c476..47e0093 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3d55=['ENUM','basic','integrationTab','sequelize','STRING'];(function(_0x425e37,_0x55f2d4){var _0x15819f=function(_0x1a5b2c){while(--_0x1a5b2c){_0x425e37['push'](_0x425e37['shift']());}};_0x15819f(++_0x55f2d4);}(_0x3d55,0x170));var _0x53d5=function(_0x1280a1,_0x5967cd){_0x1280a1=_0x1280a1-0x0;var _0x240d6f=_0x3d55[_0x1280a1];return _0x240d6f;};'use strict';var Sequelize=require(_0x53d5('0x0'));module['exports']={'name':{'type':Sequelize['STRING']},'description':{'type':Sequelize[_0x53d5('0x1')]},'username':{'type':Sequelize[_0x53d5('0x1')]},'remoteUri':{'type':Sequelize['STRING']},'authType':{'type':Sequelize[_0x53d5('0x2')](_0x53d5('0x3')),'defaultValue':_0x53d5('0x3')},'password':{'type':Sequelize[_0x53d5('0x1')]},'consumerKey':{'type':Sequelize[_0x53d5('0x1')]},'consumerSecret':{'type':Sequelize[_0x53d5('0x1')]},'token':{'type':Sequelize[_0x53d5('0x1')]},'tokenSecret':{'type':Sequelize[_0x53d5('0x1')]},'serverUrl':{'type':Sequelize[_0x53d5('0x1')],'allowNull':![]},'type':{'type':Sequelize[_0x53d5('0x2')]('integrationTab','newTab'),'defaultValue':_0x53d5('0x4')}};
\ No newline at end of file
+var _0x3a0c=['integrationTab','newTab','exports','STRING','ENUM','basic'];(function(_0x7c3789,_0x4d4ef3){var _0x268881=function(_0x16ba7d){while(--_0x16ba7d){_0x7c3789['push'](_0x7c3789['shift']());}};_0x268881(++_0x4d4ef3);}(_0x3a0c,0x194));var _0xc3a0=function(_0x494118,_0x29077a){_0x494118=_0x494118-0x0;var _0x2ad03c=_0x3a0c[_0x494118];return _0x2ad03c;};'use strict';var Sequelize=require('sequelize');module[_0xc3a0('0x0')]={'name':{'type':Sequelize[_0xc3a0('0x1')]},'description':{'type':Sequelize['STRING']},'username':{'type':Sequelize['STRING']},'remoteUri':{'type':Sequelize[_0xc3a0('0x1')]},'authType':{'type':Sequelize[_0xc3a0('0x2')](_0xc3a0('0x3')),'defaultValue':'basic'},'password':{'type':Sequelize[_0xc3a0('0x1')]},'consumerKey':{'type':Sequelize[_0xc3a0('0x1')]},'consumerSecret':{'type':Sequelize['STRING']},'token':{'type':Sequelize['STRING']},'tokenSecret':{'type':Sequelize[_0xc3a0('0x1')]},'serverUrl':{'type':Sequelize[_0xc3a0('0x1')],'allowNull':![]},'type':{'type':Sequelize[_0xc3a0('0x2')](_0xc3a0('0x4'),_0xc3a0('0x5')),'defaultValue':_0xc3a0('0x4')}};
\ No newline at end of file
index a430e4c..d3ae118 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb6fd=['fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox','fs-extra','lodash','squel','jsforce','desk.js','to-csv','querystring','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/license/util','../../mysqldb','../../components/integrations/configuration','status','end','json','undefined','limit','offset','count','set','apply','reject','save','update','destroy','sendStatus','name','index','map','DeskAccount','rawAttributes','fieldName','type','key','model','query','keys','filters','attributes','fields','hasOwnProperty','sort','where','pick','filter','VIRTUAL','options','includeAll','include','findAll','then','catch','show','params','intersection','length','find','create','body','findOne','DeskConfiguration','order','merge','getConfigurations','AccountId','Subjects','channel','Descriptions','DeskField','getFields','priority','remoteUri','authType','username','password','consumerKey','consumerSecret','token','tokenSecret','slice','substring','lastIndexOf','GET','format','%s/custom_fields','application/json','basic','headers','Authorization','Basic\x20%s','%s:%s','toString','base64','concat','_embedded','entries','active','statusCode','error','stringify','send','Wrong\x20credentials','rimraf','zip-dir'];(function(_0x3c8e9a,_0x384306){var _0x2d4c57=function(_0x43d408){while(--_0x43d408){_0x3c8e9a['push'](_0x3c8e9a['shift']());}};_0x2d4c57(++_0x384306);}(_0xb6fd,0x72));var _0xdb6f=function(_0x409640,_0x15fbec){_0x409640=_0x409640-0x0;var _0x2dc61b=_0xb6fd[_0x409640];return _0x2dc61b;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0xdb6f('0x0'));var zipdir=require(_0xdb6f('0x1'));var jsonpatch=require(_0xdb6f('0x2'));var rp=require(_0xdb6f('0x3'));var moment=require(_0xdb6f('0x4'));var BPromise=require(_0xdb6f('0x5'));var Mustache=require(_0xdb6f('0x6'));var util=require(_0xdb6f('0x7'));var path=require(_0xdb6f('0x8'));var sox=require(_0xdb6f('0x9'));var csv=require('to-csv');var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0xdb6f('0xa'));var _=require(_0xdb6f('0xb'));var squel=require(_0xdb6f('0xc'));var crypto=require('crypto');var jsforce=require(_0xdb6f('0xd'));var deskjs=require(_0xdb6f('0xe'));var toCsv=require(_0xdb6f('0xf'));var querystring=require(_0xdb6f('0x10'));var Papa=require('papaparse');var Redis=require(_0xdb6f('0x11'));var authService=require('../../components/auth/service');var qs=require(_0xdb6f('0x12'));var as=require(_0xdb6f('0x13'));var hardwareService=require(_0xdb6f('0x14'));var logger=require(_0xdb6f('0x15'))(_0xdb6f('0x16'));var utils=require('../../config/utils');var config=require('../../config/environment');var licenseUtil=require(_0xdb6f('0x17'));var db=require(_0xdb6f('0x18'))['db'];var integrations=require(_0xdb6f('0x19'));function respondWithStatusCode(_0x199bb4,_0x32ab81){_0x32ab81=_0x32ab81||0xcc;return function(_0x5ae469){if(_0x5ae469){return _0x199bb4['sendStatus'](_0x32ab81);}return _0x199bb4[_0xdb6f('0x1a')](_0x32ab81)[_0xdb6f('0x1b')]();};}function respondWithResult(_0x151578,_0x43a34f){_0x43a34f=_0x43a34f||0xc8;return function(_0x54b329){if(_0x54b329){return _0x151578[_0xdb6f('0x1a')](_0x43a34f)[_0xdb6f('0x1c')](_0x54b329);}};}function respondWithFilteredResult(_0x48b2d8,_0x25956a){return function(_0x1ae852){if(_0x1ae852){var _0x30b618=typeof _0x25956a['offset']===_0xdb6f('0x1d')&&typeof _0x25956a[_0xdb6f('0x1e')]===_0xdb6f('0x1d');var _0x1ca955=_0x1ae852['count'];var _0x1aea20=_0x30b618?0x0:_0x25956a[_0xdb6f('0x1f')];var _0x5c3c89=_0x30b618?_0x1ae852[_0xdb6f('0x20')]:_0x25956a[_0xdb6f('0x1f')]+_0x25956a[_0xdb6f('0x1e')];var _0x15aa98;if(_0x5c3c89>=_0x1ca955){_0x5c3c89=_0x1ca955;_0x15aa98=0xc8;}else{_0x15aa98=0xce;}_0x48b2d8[_0xdb6f('0x1a')](_0x15aa98);return _0x48b2d8[_0xdb6f('0x21')]('Content-Range',_0x1aea20+'-'+_0x5c3c89+'/'+_0x1ca955)[_0xdb6f('0x1c')](_0x1ae852);}return null;};}function patchUpdates(_0x3fa9a9){return function(_0x54ae5c){try{jsonpatch[_0xdb6f('0x22')](_0x54ae5c,_0x3fa9a9,!![]);}catch(_0x41282e){return BPromise[_0xdb6f('0x23')](_0x41282e);}return _0x54ae5c[_0xdb6f('0x24')]();};}function saveUpdates(_0x5ac5d4,_0x3e312b){return function(_0x40333c){if(_0x40333c){return _0x40333c[_0xdb6f('0x25')](_0x5ac5d4)['then'](function(_0x1fd417){return _0x1fd417;});}return null;};}function removeEntity(_0x46ec8b,_0x421454){return function(_0x420a38){if(_0x420a38){return _0x420a38[_0xdb6f('0x26')]()['then'](function(){_0x46ec8b[_0xdb6f('0x1a')](0xcc)[_0xdb6f('0x1b')]();});}};}function handleEntityNotFound(_0x4a256a,_0x1e33e3){return function(_0x2eaaf7){if(!_0x2eaaf7){_0x4a256a[_0xdb6f('0x27')](0x194);}return _0x2eaaf7;};}function handleError(_0x334d80,_0x127285){_0x127285=_0x127285||0x1f4;return function(_0x588405){logger['error'](_0x588405['stack']);if(_0x588405[_0xdb6f('0x28')]){delete _0x588405[_0xdb6f('0x28')];}_0x334d80[_0xdb6f('0x1a')](_0x127285)['send'](_0x588405);};}exports[_0xdb6f('0x29')]=function(_0x10e671,_0x200129){var _0x1473de={},_0x13708b={},_0x1f1494={'count':0x0,'rows':[]};var _0x4096ee=_[_0xdb6f('0x2a')](db[_0xdb6f('0x2b')][_0xdb6f('0x2c')],function(_0x4531b1){return{'name':_0x4531b1[_0xdb6f('0x2d')],'type':_0x4531b1[_0xdb6f('0x2e')][_0xdb6f('0x2f')]};});_0x13708b[_0xdb6f('0x30')]=_[_0xdb6f('0x2a')](_0x4096ee,_0xdb6f('0x28'));_0x13708b[_0xdb6f('0x31')]=_[_0xdb6f('0x32')](_0x10e671[_0xdb6f('0x31')]);_0x13708b[_0xdb6f('0x33')]=_['intersection'](_0x13708b[_0xdb6f('0x30')],_0x13708b['query']);_0x1473de[_0xdb6f('0x34')]=_['intersection'](_0x13708b[_0xdb6f('0x30')],qs[_0xdb6f('0x35')](_0x10e671[_0xdb6f('0x31')][_0xdb6f('0x35')]));_0x1473de[_0xdb6f('0x34')]=_0x1473de['attributes']['length']?_0x1473de[_0xdb6f('0x34')]:_0x13708b[_0xdb6f('0x30')];if(!_0x10e671[_0xdb6f('0x31')][_0xdb6f('0x36')]('nolimit')){_0x1473de[_0xdb6f('0x1e')]=qs[_0xdb6f('0x1e')](_0x10e671[_0xdb6f('0x31')][_0xdb6f('0x1e')]);_0x1473de[_0xdb6f('0x1f')]=qs[_0xdb6f('0x1f')](_0x10e671[_0xdb6f('0x31')][_0xdb6f('0x1f')]);}_0x1473de['order']=qs[_0xdb6f('0x37')](_0x10e671[_0xdb6f('0x31')][_0xdb6f('0x37')]);_0x1473de[_0xdb6f('0x38')]=qs[_0xdb6f('0x33')](_[_0xdb6f('0x39')](_0x10e671[_0xdb6f('0x31')],_0x13708b[_0xdb6f('0x33')]),_0x4096ee);if(_0x10e671[_0xdb6f('0x31')][_0xdb6f('0x3a')]){_0x1473de['where']=_['merge'](_0x1473de[_0xdb6f('0x38')],{'$or':_['map'](_0x4096ee,function(_0x152dbe){if(_0x152dbe[_0xdb6f('0x2e')]!==_0xdb6f('0x3b')){var _0x285c4f={};_0x285c4f[_0x152dbe[_0xdb6f('0x28')]]={'$like':'%'+_0x10e671['query']['filter']+'%'};return _0x285c4f;}})});}_0x1473de=_['merge']({},_0x1473de,_0x10e671[_0xdb6f('0x3c')]);var _0x40f165={'where':_0x1473de[_0xdb6f('0x38')]};return db[_0xdb6f('0x2b')][_0xdb6f('0x20')](_0x40f165)['then'](function(_0x1af7ef){_0x1f1494['count']=_0x1af7ef;if(_0x10e671[_0xdb6f('0x31')][_0xdb6f('0x3d')]){_0x1473de[_0xdb6f('0x3e')]=[{'all':!![]}];}return db[_0xdb6f('0x2b')][_0xdb6f('0x3f')](_0x1473de);})[_0xdb6f('0x40')](function(_0x531ad8){_0x1f1494['rows']=_0x531ad8;return _0x1f1494;})[_0xdb6f('0x40')](respondWithFilteredResult(_0x200129,_0x1473de))[_0xdb6f('0x41')](handleError(_0x200129,null));};exports[_0xdb6f('0x42')]=function(_0xf27fc6,_0x136ca8){var _0x4f2468={'raw':![],'where':{'id':_0xf27fc6[_0xdb6f('0x43')]['id']}},_0x40d8bb={};_0x40d8bb[_0xdb6f('0x30')]=_[_0xdb6f('0x32')](db['DeskAccount'][_0xdb6f('0x2c')]);_0x40d8bb[_0xdb6f('0x31')]=_['keys'](_0xf27fc6[_0xdb6f('0x31')]);_0x40d8bb['filters']=_[_0xdb6f('0x44')](_0x40d8bb['model'],_0x40d8bb[_0xdb6f('0x31')]);_0x4f2468['attributes']=_[_0xdb6f('0x44')](_0x40d8bb[_0xdb6f('0x30')],qs[_0xdb6f('0x35')](_0xf27fc6[_0xdb6f('0x31')][_0xdb6f('0x35')]));_0x4f2468[_0xdb6f('0x34')]=_0x4f2468[_0xdb6f('0x34')][_0xdb6f('0x45')]?_0x4f2468[_0xdb6f('0x34')]:_0x40d8bb[_0xdb6f('0x30')];if(_0xf27fc6[_0xdb6f('0x31')][_0xdb6f('0x3d')]){_0x4f2468[_0xdb6f('0x3e')]=[{'all':!![]}];}_0x4f2468=_['merge']({},_0x4f2468,_0xf27fc6[_0xdb6f('0x3c')]);return db[_0xdb6f('0x2b')][_0xdb6f('0x46')](_0x4f2468)[_0xdb6f('0x40')](handleEntityNotFound(_0x136ca8,null))[_0xdb6f('0x40')](respondWithResult(_0x136ca8,null))['catch'](handleError(_0x136ca8,null));};exports[_0xdb6f('0x47')]=function(_0x49de2b,_0x126805){return db[_0xdb6f('0x2b')][_0xdb6f('0x47')](_0x49de2b[_0xdb6f('0x48')],{})['then'](respondWithResult(_0x126805,0xc9))[_0xdb6f('0x41')](handleError(_0x126805,null));};exports[_0xdb6f('0x25')]=function(_0x8d9368,_0x49e87e){if(_0x8d9368[_0xdb6f('0x48')]['id']){delete _0x8d9368['body']['id'];}return db[_0xdb6f('0x2b')][_0xdb6f('0x46')]({'where':{'id':_0x8d9368['params']['id']}})[_0xdb6f('0x40')](handleEntityNotFound(_0x49e87e,null))[_0xdb6f('0x40')](saveUpdates(_0x8d9368[_0xdb6f('0x48')],null))['then'](respondWithResult(_0x49e87e,null))['catch'](handleError(_0x49e87e,null));};exports[_0xdb6f('0x26')]=function(_0x271167,_0x31bb7d){return db[_0xdb6f('0x2b')][_0xdb6f('0x46')]({'where':{'id':_0x271167[_0xdb6f('0x43')]['id']}})['then'](handleEntityNotFound(_0x31bb7d,null))[_0xdb6f('0x40')](removeEntity(_0x31bb7d,null))[_0xdb6f('0x41')](handleError(_0x31bb7d,null));};exports['getConfigurations']=function(_0x2cf365,_0x1e078a,_0x445b1b){var _0x12ef8e={};var _0x573666={};var _0x2d4cd9;var _0x539d1d;return db[_0xdb6f('0x2b')][_0xdb6f('0x49')]({'where':{'id':_0x2cf365[_0xdb6f('0x43')]['id']}})[_0xdb6f('0x40')](handleEntityNotFound(_0x1e078a,null))[_0xdb6f('0x40')](function(_0x35c78e){if(_0x35c78e){_0x2d4cd9=_0x35c78e;_0x573666[_0xdb6f('0x30')]=_[_0xdb6f('0x32')](db[_0xdb6f('0x4a')][_0xdb6f('0x2c')]);_0x573666[_0xdb6f('0x31')]=_[_0xdb6f('0x32')](_0x2cf365[_0xdb6f('0x31')]);_0x573666['filters']=_[_0xdb6f('0x44')](_0x573666[_0xdb6f('0x30')],_0x573666['query']);_0x12ef8e[_0xdb6f('0x34')]=_['intersection'](_0x573666[_0xdb6f('0x30')],qs[_0xdb6f('0x35')](_0x2cf365['query'][_0xdb6f('0x35')]));_0x12ef8e[_0xdb6f('0x34')]=_0x12ef8e[_0xdb6f('0x34')]['length']?_0x12ef8e[_0xdb6f('0x34')]:_0x573666[_0xdb6f('0x30')];_0x12ef8e[_0xdb6f('0x4b')]=qs[_0xdb6f('0x37')](_0x2cf365[_0xdb6f('0x31')][_0xdb6f('0x37')]);_0x12ef8e[_0xdb6f('0x38')]=qs[_0xdb6f('0x33')](_[_0xdb6f('0x39')](_0x2cf365[_0xdb6f('0x31')],_0x573666[_0xdb6f('0x33')]));if(_0x2cf365['query'][_0xdb6f('0x3a')]){_0x12ef8e[_0xdb6f('0x38')]=_[_0xdb6f('0x4c')](_0x12ef8e['where'],{'$or':_[_0xdb6f('0x2a')](_0x12ef8e[_0xdb6f('0x34')],function(_0x1c1751){var _0x3e19da={};_0x3e19da[_0x1c1751]={'$like':'%'+_0x2cf365['query'][_0xdb6f('0x3a')]+'%'};return _0x3e19da;})});}_0x12ef8e=_[_0xdb6f('0x4c')]({},_0x12ef8e,_0x2cf365[_0xdb6f('0x3c')]);return _0x2d4cd9[_0xdb6f('0x4d')](_0x12ef8e);}})[_0xdb6f('0x40')](function(_0x17932d){if(_0x17932d){_0x539d1d=_0x17932d[_0xdb6f('0x45')];if(!_0x2cf365['query'][_0xdb6f('0x36')]('nolimit')){_0x12ef8e[_0xdb6f('0x1e')]=qs[_0xdb6f('0x1e')](_0x2cf365['query'][_0xdb6f('0x1e')]);_0x12ef8e[_0xdb6f('0x1f')]=qs['offset'](_0x2cf365[_0xdb6f('0x31')][_0xdb6f('0x1f')]);}return _0x2d4cd9[_0xdb6f('0x4d')](_0x12ef8e);}})[_0xdb6f('0x40')](function(_0x406e29){if(_0x406e29){return _0x406e29?{'count':_0x539d1d,'rows':_0x406e29}:null;}})[_0xdb6f('0x40')](respondWithResult(_0x1e078a,null))[_0xdb6f('0x41')](handleError(_0x1e078a,null));};exports['addConfiguration']=function(_0x14740e,_0x201ad5,_0x3a915d){if(_0x14740e[_0xdb6f('0x48')]['id']){delete _0x14740e[_0xdb6f('0x48')]['id'];}return db['DeskAccount'][_0xdb6f('0x49')]({'where':{'id':_0x14740e[_0xdb6f('0x43')]['id']}})[_0xdb6f('0x40')](handleEntityNotFound(_0x201ad5,null))[_0xdb6f('0x40')](function(_0x5ddc4f){if(_0x5ddc4f){_0x14740e['body'][_0xdb6f('0x4e')]=_0x5ddc4f['id'];_0x14740e[_0xdb6f('0x48')][_0xdb6f('0x4f')]=integrations['getSubjects'](_0x14740e[_0xdb6f('0x48')][_0xdb6f('0x50')],_0x14740e['body'][_0xdb6f('0x2e')]);_0x14740e['body'][_0xdb6f('0x51')]=integrations['getDescriptions'](_0x14740e[_0xdb6f('0x48')]['channel'],_0x14740e[_0xdb6f('0x48')][_0xdb6f('0x2e')]);return db['DeskConfiguration']['create'](_0x14740e[_0xdb6f('0x48')],{'include':[{'model':db[_0xdb6f('0x52')],'as':_0xdb6f('0x4f')},{'model':db[_0xdb6f('0x52')],'as':_0xdb6f('0x51')}]});}return null;})[_0xdb6f('0x40')](respondWithResult(_0x201ad5,null))[_0xdb6f('0x41')](handleError(_0x201ad5,null));};exports[_0xdb6f('0x53')]=function(_0x442dc6,_0x39363,_0x47c86a){var _0x71caca=[{'name':_0xdb6f('0x54'),'label':_0xdb6f('0x54'),'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 _0x240724='';return db[_0xdb6f('0x2b')]['findOne']({'where':{'id':_0x442dc6[_0xdb6f('0x43')]['id']},'attributes':['id',_0xdb6f('0x55'),_0xdb6f('0x56'),_0xdb6f('0x57'),_0xdb6f('0x58'),_0xdb6f('0x59'),_0xdb6f('0x5a'),_0xdb6f('0x5b'),_0xdb6f('0x5c')]})[_0xdb6f('0x40')](handleEntityNotFound(_0x39363,null))[_0xdb6f('0x40')](function(_0x44b57d){if(_0x44b57d){_0x240724=_0x44b57d[_0xdb6f('0x55')];var _0x2810a2=_0x240724[_0xdb6f('0x5d')](-0x1);if(_0x2810a2==='/'){_0x240724=_0x240724[_0xdb6f('0x5e')](0x0,_0x240724[_0xdb6f('0x5f')](_0x2810a2));}var _0x319c64={'method':_0xdb6f('0x60'),'uri':util[_0xdb6f('0x61')](_0xdb6f('0x62'),_0x240724),'headers':{'Content-Type':_0xdb6f('0x63'),'Accept':'application/json'},'json':!![]};if(_0x44b57d['authType']===_0xdb6f('0x64')){_0x319c64[_0xdb6f('0x65')][_0xdb6f('0x66')]=util[_0xdb6f('0x61')](_0xdb6f('0x67'),new Buffer(util[_0xdb6f('0x61')](_0xdb6f('0x68'),_0x44b57d['username'],_0x44b57d[_0xdb6f('0x58')]))[_0xdb6f('0x69')](_0xdb6f('0x6a')));}return rp(_0x319c64)[_0xdb6f('0x40')](function(_0x21bf20){return _0x71caca[_0xdb6f('0x6b')](_[_0xdb6f('0x2a')](_0x21bf20[_0xdb6f('0x6c')][_0xdb6f('0x6d')],function(_0x1bee47){return{'id':_0x1bee47[_0xdb6f('0x28')],'name':_0x1bee47[_0xdb6f('0x28')],'type':_0x1bee47[_0xdb6f('0x2e')],'active':_0x1bee47[_0xdb6f('0x6e')],'label':_0x1bee47['label'],'custom':!![]};}));});}})['then'](function(_0x45340d){return{'count':_0x45340d[_0xdb6f('0x45')],'rows':_0x45340d};})[_0xdb6f('0x40')](respondWithResult(_0x39363,null))[_0xdb6f('0x41')](function(_0x3afd80){var _0x4d3775=_0x442dc6[_0xdb6f('0x31')]['test']?0x1f4:_0x3afd80[_0xdb6f('0x6f')]||0x1f4;logger[_0xdb6f('0x70')]('getFields,\x20%s,\x20%s,\x20%s',_0xdb6f('0x53'),_0x4d3775,JSON[_0xdb6f('0x71')](_0x3afd80));delete _0x3afd80[_0xdb6f('0x28')];if(_0x4d3775===0x191){_0x4d3775=0x190;}_0x39363[_0xdb6f('0x1a')](_0x4d3775)[_0xdb6f('0x72')](_0x442dc6[_0xdb6f('0x31')]['test']?{'message':_0xdb6f('0x73'),'statusCode':_0x3afd80[_0xdb6f('0x6f')]}:_0x3afd80);});};
\ No newline at end of file
+var _0x3c91=['DeskField','getFields','priority','remoteUri','authType','username','tokenSecret','slice','substring','lastIndexOf','GET','format','%s/custom_fields','application/json','headers','Authorization','Basic\x20%s','%s:%s','password','toString','base64','concat','_embedded','entries','active','label','test','statusCode','getFields,\x20%s,\x20%s,\x20%s','Wrong\x20credentials','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','util','path','sox','to-csv','lodash','crypto','ioredis','../../components/parsers/qs','../../config/license/hardware','../../config/logger','api','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','json','offset','undefined','count','limit','set','Content-Range','apply','save','update','then','destroy','end','error','stack','name','map','DeskAccount','fieldName','type','key','query','keys','filters','intersection','model','attributes','length','hasOwnProperty','nolimit','sort','where','pick','filter','VIRTUAL','options','includeAll','include','findAll','catch','rawAttributes','fields','find','create','body','params','findOne','DeskConfiguration','order','merge','getConfigurations','addConfiguration','Subjects','getSubjects','channel','Descriptions','getDescriptions'];(function(_0xe83a86,_0x1a0f7d){var _0x55f841=function(_0x1fbfcb){while(--_0x1fbfcb){_0xe83a86['push'](_0xe83a86['shift']());}};_0x55f841(++_0x1a0f7d);}(_0x3c91,0xf6));var _0x13c9=function(_0x1d7fca,_0x14576a){_0x1d7fca=_0x1d7fca-0x0;var _0x1a223f=_0x3c91[_0x1d7fca];return _0x1a223f;};'use strict';var emlformat=require(_0x13c9('0x0'));var rimraf=require(_0x13c9('0x1'));var zipdir=require(_0x13c9('0x2'));var jsonpatch=require(_0x13c9('0x3'));var rp=require(_0x13c9('0x4'));var moment=require('moment');var BPromise=require('bluebird');var Mustache=require('mustache');var util=require(_0x13c9('0x5'));var path=require(_0x13c9('0x6'));var sox=require(_0x13c9('0x7'));var csv=require(_0x13c9('0x8'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x13c9('0x9'));var squel=require('squel');var crypto=require(_0x13c9('0xa'));var jsforce=require('jsforce');var deskjs=require('desk.js');var toCsv=require(_0x13c9('0x8'));var querystring=require('querystring');var Papa=require('papaparse');var Redis=require(_0x13c9('0xb'));var authService=require('../../components/auth/service');var qs=require(_0x13c9('0xc'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x13c9('0xd'));var logger=require(_0x13c9('0xe'))(_0x13c9('0xf'));var utils=require('../../config/utils');var config=require(_0x13c9('0x10'));var licenseUtil=require(_0x13c9('0x11'));var db=require(_0x13c9('0x12'))['db'];var integrations=require('../../components/integrations/configuration');function respondWithStatusCode(_0x46a298,_0x15de77){_0x15de77=_0x15de77||0xcc;return function(_0x4ecf7e){if(_0x4ecf7e){return _0x46a298[_0x13c9('0x13')](_0x15de77);}return _0x46a298[_0x13c9('0x14')](_0x15de77)['end']();};}function respondWithResult(_0x2745bd,_0x3474df){_0x3474df=_0x3474df||0xc8;return function(_0x302756){if(_0x302756){return _0x2745bd[_0x13c9('0x14')](_0x3474df)[_0x13c9('0x15')](_0x302756);}};}function respondWithFilteredResult(_0x3535fd,_0x5a6c22){return function(_0xcae763){if(_0xcae763){var _0x401485=typeof _0x5a6c22[_0x13c9('0x16')]===_0x13c9('0x17')&&typeof _0x5a6c22['limit']==='undefined';var _0xe17f4f=_0xcae763[_0x13c9('0x18')];var _0x148e90=_0x401485?0x0:_0x5a6c22['offset'];var _0x18be5c=_0x401485?_0xcae763[_0x13c9('0x18')]:_0x5a6c22['offset']+_0x5a6c22[_0x13c9('0x19')];var _0x536409;if(_0x18be5c>=_0xe17f4f){_0x18be5c=_0xe17f4f;_0x536409=0xc8;}else{_0x536409=0xce;}_0x3535fd['status'](_0x536409);return _0x3535fd[_0x13c9('0x1a')](_0x13c9('0x1b'),_0x148e90+'-'+_0x18be5c+'/'+_0xe17f4f)['json'](_0xcae763);}return null;};}function patchUpdates(_0x46598f){return function(_0xa638c3){try{jsonpatch[_0x13c9('0x1c')](_0xa638c3,_0x46598f,!![]);}catch(_0x14a59d){return BPromise['reject'](_0x14a59d);}return _0xa638c3[_0x13c9('0x1d')]();};}function saveUpdates(_0x5106fb,_0x199295){return function(_0x2db63d){if(_0x2db63d){return _0x2db63d[_0x13c9('0x1e')](_0x5106fb)[_0x13c9('0x1f')](function(_0x56fa8){return _0x56fa8;});}return null;};}function removeEntity(_0x2479c4,_0x58860d){return function(_0x25df0c){if(_0x25df0c){return _0x25df0c[_0x13c9('0x20')]()['then'](function(){_0x2479c4[_0x13c9('0x14')](0xcc)[_0x13c9('0x21')]();});}};}function handleEntityNotFound(_0x4cb2fb,_0x2442cf){return function(_0x181c8b){if(!_0x181c8b){_0x4cb2fb['sendStatus'](0x194);}return _0x181c8b;};}function handleError(_0x66f4ec,_0x926ccf){_0x926ccf=_0x926ccf||0x1f4;return function(_0x40e959){logger[_0x13c9('0x22')](_0x40e959[_0x13c9('0x23')]);if(_0x40e959[_0x13c9('0x24')]){delete _0x40e959[_0x13c9('0x24')];}_0x66f4ec[_0x13c9('0x14')](_0x926ccf)['send'](_0x40e959);};}exports['index']=function(_0x364914,_0x4875aa){var _0x4e376d={},_0x2cffa0={},_0x543321={'count':0x0,'rows':[]};var _0x2c4b24=_[_0x13c9('0x25')](db[_0x13c9('0x26')]['rawAttributes'],function(_0xbfc160){return{'name':_0xbfc160[_0x13c9('0x27')],'type':_0xbfc160[_0x13c9('0x28')][_0x13c9('0x29')]};});_0x2cffa0['model']=_[_0x13c9('0x25')](_0x2c4b24,_0x13c9('0x24'));_0x2cffa0[_0x13c9('0x2a')]=_[_0x13c9('0x2b')](_0x364914['query']);_0x2cffa0[_0x13c9('0x2c')]=_[_0x13c9('0x2d')](_0x2cffa0[_0x13c9('0x2e')],_0x2cffa0[_0x13c9('0x2a')]);_0x4e376d['attributes']=_['intersection'](_0x2cffa0['model'],qs['fields'](_0x364914['query']['fields']));_0x4e376d['attributes']=_0x4e376d[_0x13c9('0x2f')][_0x13c9('0x30')]?_0x4e376d[_0x13c9('0x2f')]:_0x2cffa0[_0x13c9('0x2e')];if(!_0x364914[_0x13c9('0x2a')][_0x13c9('0x31')](_0x13c9('0x32'))){_0x4e376d[_0x13c9('0x19')]=qs[_0x13c9('0x19')](_0x364914[_0x13c9('0x2a')]['limit']);_0x4e376d[_0x13c9('0x16')]=qs[_0x13c9('0x16')](_0x364914[_0x13c9('0x2a')]['offset']);}_0x4e376d['order']=qs[_0x13c9('0x33')](_0x364914[_0x13c9('0x2a')][_0x13c9('0x33')]);_0x4e376d[_0x13c9('0x34')]=qs[_0x13c9('0x2c')](_[_0x13c9('0x35')](_0x364914[_0x13c9('0x2a')],_0x2cffa0[_0x13c9('0x2c')]),_0x2c4b24);if(_0x364914[_0x13c9('0x2a')][_0x13c9('0x36')]){_0x4e376d[_0x13c9('0x34')]=_['merge'](_0x4e376d[_0x13c9('0x34')],{'$or':_[_0x13c9('0x25')](_0x2c4b24,function(_0x94d593){if(_0x94d593[_0x13c9('0x28')]!==_0x13c9('0x37')){var _0x472443={};_0x472443[_0x94d593[_0x13c9('0x24')]]={'$like':'%'+_0x364914[_0x13c9('0x2a')][_0x13c9('0x36')]+'%'};return _0x472443;}})});}_0x4e376d=_['merge']({},_0x4e376d,_0x364914[_0x13c9('0x38')]);var _0x46c1f0={'where':_0x4e376d[_0x13c9('0x34')]};return db[_0x13c9('0x26')][_0x13c9('0x18')](_0x46c1f0)[_0x13c9('0x1f')](function(_0x20e29d){_0x543321[_0x13c9('0x18')]=_0x20e29d;if(_0x364914[_0x13c9('0x2a')][_0x13c9('0x39')]){_0x4e376d[_0x13c9('0x3a')]=[{'all':!![]}];}return db[_0x13c9('0x26')][_0x13c9('0x3b')](_0x4e376d);})[_0x13c9('0x1f')](function(_0x3aee3b){_0x543321['rows']=_0x3aee3b;return _0x543321;})[_0x13c9('0x1f')](respondWithFilteredResult(_0x4875aa,_0x4e376d))[_0x13c9('0x3c')](handleError(_0x4875aa,null));};exports['show']=function(_0x182363,_0x3b9ba7){var _0x24db83={'raw':![],'where':{'id':_0x182363['params']['id']}},_0x118883={};_0x118883[_0x13c9('0x2e')]=_['keys'](db[_0x13c9('0x26')][_0x13c9('0x3d')]);_0x118883[_0x13c9('0x2a')]=_[_0x13c9('0x2b')](_0x182363[_0x13c9('0x2a')]);_0x118883['filters']=_['intersection'](_0x118883[_0x13c9('0x2e')],_0x118883[_0x13c9('0x2a')]);_0x24db83[_0x13c9('0x2f')]=_[_0x13c9('0x2d')](_0x118883[_0x13c9('0x2e')],qs['fields'](_0x182363[_0x13c9('0x2a')][_0x13c9('0x3e')]));_0x24db83['attributes']=_0x24db83[_0x13c9('0x2f')][_0x13c9('0x30')]?_0x24db83[_0x13c9('0x2f')]:_0x118883[_0x13c9('0x2e')];if(_0x182363['query'][_0x13c9('0x39')]){_0x24db83['include']=[{'all':!![]}];}_0x24db83=_['merge']({},_0x24db83,_0x182363[_0x13c9('0x38')]);return db[_0x13c9('0x26')][_0x13c9('0x3f')](_0x24db83)[_0x13c9('0x1f')](handleEntityNotFound(_0x3b9ba7,null))[_0x13c9('0x1f')](respondWithResult(_0x3b9ba7,null))[_0x13c9('0x3c')](handleError(_0x3b9ba7,null));};exports['create']=function(_0x4dbdb8,_0x90da1){return db[_0x13c9('0x26')][_0x13c9('0x40')](_0x4dbdb8['body'],{})[_0x13c9('0x1f')](respondWithResult(_0x90da1,0xc9))[_0x13c9('0x3c')](handleError(_0x90da1,null));};exports[_0x13c9('0x1e')]=function(_0x3b7e74,_0x10e500){if(_0x3b7e74[_0x13c9('0x41')]['id']){delete _0x3b7e74[_0x13c9('0x41')]['id'];}return db['DeskAccount'][_0x13c9('0x3f')]({'where':{'id':_0x3b7e74[_0x13c9('0x42')]['id']}})[_0x13c9('0x1f')](handleEntityNotFound(_0x10e500,null))[_0x13c9('0x1f')](saveUpdates(_0x3b7e74[_0x13c9('0x41')],null))['then'](respondWithResult(_0x10e500,null))[_0x13c9('0x3c')](handleError(_0x10e500,null));};exports['destroy']=function(_0x37e7b3,_0x4257f8){return db[_0x13c9('0x26')][_0x13c9('0x3f')]({'where':{'id':_0x37e7b3[_0x13c9('0x42')]['id']}})[_0x13c9('0x1f')](handleEntityNotFound(_0x4257f8,null))[_0x13c9('0x1f')](removeEntity(_0x4257f8,null))['catch'](handleError(_0x4257f8,null));};exports['getConfigurations']=function(_0xa8252f,_0x1f2a7e,_0x241e71){var _0x2fb2fa={};var _0xecf451={};var _0x325b8f;var _0x424daa;return db[_0x13c9('0x26')][_0x13c9('0x43')]({'where':{'id':_0xa8252f[_0x13c9('0x42')]['id']}})['then'](handleEntityNotFound(_0x1f2a7e,null))[_0x13c9('0x1f')](function(_0x4b73ec){if(_0x4b73ec){_0x325b8f=_0x4b73ec;_0xecf451[_0x13c9('0x2e')]=_[_0x13c9('0x2b')](db[_0x13c9('0x44')][_0x13c9('0x3d')]);_0xecf451[_0x13c9('0x2a')]=_[_0x13c9('0x2b')](_0xa8252f[_0x13c9('0x2a')]);_0xecf451[_0x13c9('0x2c')]=_[_0x13c9('0x2d')](_0xecf451[_0x13c9('0x2e')],_0xecf451[_0x13c9('0x2a')]);_0x2fb2fa[_0x13c9('0x2f')]=_[_0x13c9('0x2d')](_0xecf451[_0x13c9('0x2e')],qs[_0x13c9('0x3e')](_0xa8252f['query'][_0x13c9('0x3e')]));_0x2fb2fa[_0x13c9('0x2f')]=_0x2fb2fa[_0x13c9('0x2f')][_0x13c9('0x30')]?_0x2fb2fa[_0x13c9('0x2f')]:_0xecf451[_0x13c9('0x2e')];_0x2fb2fa[_0x13c9('0x45')]=qs[_0x13c9('0x33')](_0xa8252f[_0x13c9('0x2a')][_0x13c9('0x33')]);_0x2fb2fa[_0x13c9('0x34')]=qs[_0x13c9('0x2c')](_[_0x13c9('0x35')](_0xa8252f[_0x13c9('0x2a')],_0xecf451['filters']));if(_0xa8252f['query'][_0x13c9('0x36')]){_0x2fb2fa['where']=_[_0x13c9('0x46')](_0x2fb2fa[_0x13c9('0x34')],{'$or':_[_0x13c9('0x25')](_0x2fb2fa[_0x13c9('0x2f')],function(_0x495ef2){var _0x4f1958={};_0x4f1958[_0x495ef2]={'$like':'%'+_0xa8252f[_0x13c9('0x2a')][_0x13c9('0x36')]+'%'};return _0x4f1958;})});}_0x2fb2fa=_['merge']({},_0x2fb2fa,_0xa8252f[_0x13c9('0x38')]);return _0x325b8f[_0x13c9('0x47')](_0x2fb2fa);}})['then'](function(_0x252ec5){if(_0x252ec5){_0x424daa=_0x252ec5[_0x13c9('0x30')];if(!_0xa8252f[_0x13c9('0x2a')][_0x13c9('0x31')](_0x13c9('0x32'))){_0x2fb2fa['limit']=qs[_0x13c9('0x19')](_0xa8252f[_0x13c9('0x2a')][_0x13c9('0x19')]);_0x2fb2fa[_0x13c9('0x16')]=qs[_0x13c9('0x16')](_0xa8252f['query'][_0x13c9('0x16')]);}return _0x325b8f[_0x13c9('0x47')](_0x2fb2fa);}})[_0x13c9('0x1f')](function(_0x3b7b46){if(_0x3b7b46){return _0x3b7b46?{'count':_0x424daa,'rows':_0x3b7b46}:null;}})[_0x13c9('0x1f')](respondWithResult(_0x1f2a7e,null))[_0x13c9('0x3c')](handleError(_0x1f2a7e,null));};exports[_0x13c9('0x48')]=function(_0x24f12e,_0x2502f5,_0x3f9847){if(_0x24f12e['body']['id']){delete _0x24f12e['body']['id'];}return db[_0x13c9('0x26')]['findOne']({'where':{'id':_0x24f12e[_0x13c9('0x42')]['id']}})[_0x13c9('0x1f')](handleEntityNotFound(_0x2502f5,null))[_0x13c9('0x1f')](function(_0x2e2685){if(_0x2e2685){_0x24f12e[_0x13c9('0x41')]['AccountId']=_0x2e2685['id'];_0x24f12e['body'][_0x13c9('0x49')]=integrations[_0x13c9('0x4a')](_0x24f12e[_0x13c9('0x41')][_0x13c9('0x4b')],_0x24f12e['body']['type']);_0x24f12e[_0x13c9('0x41')][_0x13c9('0x4c')]=integrations[_0x13c9('0x4d')](_0x24f12e['body']['channel'],_0x24f12e[_0x13c9('0x41')][_0x13c9('0x28')]);return db['DeskConfiguration']['create'](_0x24f12e[_0x13c9('0x41')],{'include':[{'model':db[_0x13c9('0x4e')],'as':_0x13c9('0x49')},{'model':db[_0x13c9('0x4e')],'as':_0x13c9('0x4c')}]});}return null;})[_0x13c9('0x1f')](respondWithResult(_0x2502f5,null))[_0x13c9('0x3c')](handleError(_0x2502f5,null));};exports[_0x13c9('0x4f')]=function(_0x400b62,_0x2331bf,_0xb7f8e5){var _0x11cc66=[{'name':_0x13c9('0x50'),'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 _0x331dbd='';return db[_0x13c9('0x26')][_0x13c9('0x43')]({'where':{'id':_0x400b62[_0x13c9('0x42')]['id']},'attributes':['id',_0x13c9('0x51'),_0x13c9('0x52'),_0x13c9('0x53'),'password','consumerKey','consumerSecret','token',_0x13c9('0x54')]})[_0x13c9('0x1f')](handleEntityNotFound(_0x2331bf,null))[_0x13c9('0x1f')](function(_0x2431f7){if(_0x2431f7){_0x331dbd=_0x2431f7[_0x13c9('0x51')];var _0x243db1=_0x331dbd[_0x13c9('0x55')](-0x1);if(_0x243db1==='/'){_0x331dbd=_0x331dbd[_0x13c9('0x56')](0x0,_0x331dbd[_0x13c9('0x57')](_0x243db1));}var _0x495922={'method':_0x13c9('0x58'),'uri':util[_0x13c9('0x59')](_0x13c9('0x5a'),_0x331dbd),'headers':{'Content-Type':_0x13c9('0x5b'),'Accept':'application/json'},'json':!![]};if(_0x2431f7['authType']==='basic'){_0x495922[_0x13c9('0x5c')][_0x13c9('0x5d')]=util[_0x13c9('0x59')](_0x13c9('0x5e'),new Buffer(util[_0x13c9('0x59')](_0x13c9('0x5f'),_0x2431f7[_0x13c9('0x53')],_0x2431f7[_0x13c9('0x60')]))[_0x13c9('0x61')](_0x13c9('0x62')));}return rp(_0x495922)[_0x13c9('0x1f')](function(_0x147444){return _0x11cc66[_0x13c9('0x63')](_[_0x13c9('0x25')](_0x147444[_0x13c9('0x64')][_0x13c9('0x65')],function(_0x20c423){return{'id':_0x20c423[_0x13c9('0x24')],'name':_0x20c423['name'],'type':_0x20c423[_0x13c9('0x28')],'active':_0x20c423[_0x13c9('0x66')],'label':_0x20c423[_0x13c9('0x67')],'custom':!![]};}));});}})[_0x13c9('0x1f')](function(_0x29d5dd){return{'count':_0x29d5dd[_0x13c9('0x30')],'rows':_0x29d5dd};})[_0x13c9('0x1f')](respondWithResult(_0x2331bf,null))['catch'](function(_0x1774b1){var _0x3e5d4c=_0x400b62[_0x13c9('0x2a')][_0x13c9('0x68')]?0x1f4:_0x1774b1[_0x13c9('0x69')]||0x1f4;logger[_0x13c9('0x22')](_0x13c9('0x6a'),_0x13c9('0x4f'),_0x3e5d4c,JSON['stringify'](_0x1774b1));delete _0x1774b1[_0x13c9('0x24')];if(_0x3e5d4c===0x191){_0x3e5d4c=0x190;}_0x2331bf[_0x13c9('0x14')](_0x3e5d4c)['send'](_0x400b62[_0x13c9('0x2a')][_0x13c9('0x68')]?{'message':_0x13c9('0x6b'),'statusCode':_0x1774b1['statusCode']}:_0x1774b1);});};
\ No newline at end of file
index 409a418..f0ad0f1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9d01=['exports','define','DeskAccount','int_desk_accounts','lodash','util','../../config/logger','api','request-promise','path','rimraf','../../config/environment','./intDeskAccount.attributes'];(function(_0x448f77,_0x49e05a){var _0x3a7475=function(_0x33f762){while(--_0x33f762){_0x448f77['push'](_0x448f77['shift']());}};_0x3a7475(++_0x49e05a);}(_0x9d01,0x108));var _0x19d0=function(_0x4628a1,_0x55ff29){_0x4628a1=_0x4628a1-0x0;var _0x492347=_0x9d01[_0x4628a1];return _0x492347;};'use strict';var _=require(_0x19d0('0x0'));var util=require(_0x19d0('0x1'));var logger=require(_0x19d0('0x2'))(_0x19d0('0x3'));var moment=require('moment');var BPromise=require('bluebird');var rp=require(_0x19d0('0x4'));var fs=require('fs');var path=require(_0x19d0('0x5'));var rimraf=require(_0x19d0('0x6'));var config=require(_0x19d0('0x7'));var attributes=require(_0x19d0('0x8'));var integrations=require('../../components/integrations/configuration');module[_0x19d0('0x9')]=function(_0x105359,_0x37fe93){return _0x105359[_0x19d0('0xa')](_0x19d0('0xb'),attributes,{'tableName':_0x19d0('0xc'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xbe74=['rimraf','../../config/environment','./intDeskAccount.attributes','exports','define','DeskAccount','int_desk_accounts','lodash','util','../../config/logger','api','request-promise'];(function(_0x2df724,_0x411382){var _0x1b2504=function(_0x1d3cd1){while(--_0x1d3cd1){_0x2df724['push'](_0x2df724['shift']());}};_0x1b2504(++_0x411382);}(_0xbe74,0x1b7));var _0x4be7=function(_0x31abee,_0x11ff0c){_0x31abee=_0x31abee-0x0;var _0x3c1761=_0xbe74[_0x31abee];return _0x3c1761;};'use strict';var _=require(_0x4be7('0x0'));var util=require(_0x4be7('0x1'));var logger=require(_0x4be7('0x2'))(_0x4be7('0x3'));var moment=require('moment');var BPromise=require('bluebird');var rp=require(_0x4be7('0x4'));var fs=require('fs');var path=require('path');var rimraf=require(_0x4be7('0x5'));var config=require(_0x4be7('0x6'));var attributes=require(_0x4be7('0x7'));var integrations=require('../../components/integrations/configuration');module[_0x4be7('0x8')]=function(_0x32e23e,_0x275c89){return _0x32e23e[_0x4be7('0x9')](_0x4be7('0xa'),attributes,{'tableName':_0x4be7('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index ab5eb19..f516253 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x88b9=['jayson/promise','client','http','request','then','info','DeskAccount,\x20%s,\x20%s','request\x20sent','debug','DeskAccount,\x20%s,\x20%s,\x20%s','stringify','error','message','result','catch','GetDeskAccount','DeskAccount','findAll','options','where','limit','include','map','model','attributes','find','raw','ShowDeskAccount','util','moment','bluebird','ioredis','../../config/utils','../../config/logger','../../config/environment'];(function(_0x1d016f,_0x36b673){var _0x1d45c1=function(_0x45e36b){while(--_0x45e36b){_0x1d016f['push'](_0x1d016f['shift']());}};_0x1d45c1(++_0x36b673);}(_0x88b9,0x85));var _0x988b=function(_0x415287,_0x285934){_0x415287=_0x415287-0x0;var _0x287a25=_0x88b9[_0x415287];return _0x287a25;};'use strict';var _=require('lodash');var util=require(_0x988b('0x0'));var moment=require(_0x988b('0x1'));var BPromise=require(_0x988b('0x2'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x988b('0x3'));var db=require('../../mysqldb')['db'];var utils=require(_0x988b('0x4'));var logger=require(_0x988b('0x5'))('rpc');var config=require(_0x988b('0x6'));var jayson=require(_0x988b('0x7'));var client=jayson[_0x988b('0x8')][_0x988b('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x462441,_0x4153f6,_0x34821f){return new BPromise(function(_0x19958f,_0x21a223){return client[_0x988b('0xa')](_0x462441,_0x34821f)[_0x988b('0xb')](function(_0x5230c1){logger[_0x988b('0xc')](_0x988b('0xd'),_0x4153f6,_0x988b('0xe'));logger[_0x988b('0xf')](_0x988b('0x10'),_0x4153f6,_0x988b('0xe'),JSON[_0x988b('0x11')](_0x5230c1));if(_0x5230c1['error']){if(_0x5230c1[_0x988b('0x12')]['code']===0x1f4){logger[_0x988b('0x12')]('DeskAccount,\x20%s,\x20%s',_0x4153f6,_0x5230c1['error'][_0x988b('0x13')]);return _0x21a223(_0x5230c1[_0x988b('0x12')][_0x988b('0x13')]);}logger['error']('DeskAccount,\x20%s,\x20%s',_0x4153f6,_0x5230c1[_0x988b('0x12')][_0x988b('0x13')]);return _0x19958f(_0x5230c1[_0x988b('0x12')][_0x988b('0x13')]);}else{logger[_0x988b('0xc')]('DeskAccount,\x20%s,\x20%s',_0x4153f6,_0x988b('0xe'));_0x19958f(_0x5230c1[_0x988b('0x14')][_0x988b('0x13')]);}})[_0x988b('0x15')](function(_0x3773a9){logger['error']('DeskAccount,\x20%s,\x20%s',_0x4153f6,_0x3773a9);_0x21a223(_0x3773a9);});});}exports[_0x988b('0x16')]=function(_0x5746b3){var _0x1e5f98=this;return new Promise(function(_0x45dc34,_0x268f0d){return db[_0x988b('0x17')][_0x988b('0x18')]({'raw':_0x5746b3[_0x988b('0x19')]?_0x5746b3['options']['raw']===undefined?!![]:![]:!![],'where':_0x5746b3['options']?_0x5746b3[_0x988b('0x19')][_0x988b('0x1a')]||null:null,'attributes':_0x5746b3['options']?_0x5746b3[_0x988b('0x19')]['attributes']||null:null,'limit':_0x5746b3[_0x988b('0x19')]?_0x5746b3[_0x988b('0x19')][_0x988b('0x1b')]||null:null,'include':_0x5746b3['options']?_0x5746b3['options'][_0x988b('0x1c')]?_[_0x988b('0x1d')](_0x5746b3[_0x988b('0x19')][_0x988b('0x1c')],function(_0x51f582){return{'model':db[_0x51f582[_0x988b('0x1e')]],'as':_0x51f582['as'],'attributes':_0x51f582['attributes'],'include':_0x51f582[_0x988b('0x1c')]?_[_0x988b('0x1d')](_0x51f582[_0x988b('0x1c')],function(_0x4ad36a){return{'model':db[_0x4ad36a[_0x988b('0x1e')]],'as':_0x4ad36a['as'],'attributes':_0x4ad36a[_0x988b('0x1f')],'include':_0x4ad36a['include']?_[_0x988b('0x1d')](_0x4ad36a[_0x988b('0x1c')],function(_0x477610){return{'model':db[_0x477610['model']],'as':_0x477610['as'],'attributes':_0x477610[_0x988b('0x1f')]};}):[]};}):[]};}):[]:[]})[_0x988b('0xb')](function(_0x446090){logger[_0x988b('0xc')](_0x988b('0x16'),_0x5746b3);logger[_0x988b('0xf')](_0x988b('0x16'),_0x5746b3,JSON[_0x988b('0x11')](_0x446090));_0x45dc34(_0x446090);})[_0x988b('0x15')](function(_0x20dfbf){logger[_0x988b('0x12')]('GetDeskAccount',_0x20dfbf[_0x988b('0x13')],_0x5746b3);_0x268f0d(_0x1e5f98['error'](0x1f4,_0x20dfbf[_0x988b('0x13')]));});});};exports['ShowDeskAccount']=function(_0x12555a){var _0xd79667=this;return new Promise(function(_0x532b48,_0x10e38d){return db[_0x988b('0x17')][_0x988b('0x20')]({'raw':_0x12555a[_0x988b('0x19')]?_0x12555a['options'][_0x988b('0x21')]===undefined?!![]:![]:!![],'where':_0x12555a[_0x988b('0x19')]?_0x12555a[_0x988b('0x19')][_0x988b('0x1a')]||null:null,'attributes':_0x12555a[_0x988b('0x19')]?_0x12555a['options'][_0x988b('0x1f')]||null:null,'include':_0x12555a[_0x988b('0x19')]?_0x12555a[_0x988b('0x19')]['include']?_[_0x988b('0x1d')](_0x12555a[_0x988b('0x19')]['include'],function(_0x3b8d80){return{'model':db[_0x3b8d80[_0x988b('0x1e')]],'as':_0x3b8d80['as'],'attributes':_0x3b8d80[_0x988b('0x1f')],'include':_0x3b8d80[_0x988b('0x1c')]?_['map'](_0x3b8d80['include'],function(_0x401ef1){return{'model':db[_0x401ef1[_0x988b('0x1e')]],'as':_0x401ef1['as'],'attributes':_0x401ef1[_0x988b('0x1f')],'include':_0x401ef1[_0x988b('0x1c')]?_[_0x988b('0x1d')](_0x401ef1['include'],function(_0x4df878){return{'model':db[_0x4df878['model']],'as':_0x4df878['as'],'attributes':_0x4df878[_0x988b('0x1f')]};}):[]};}):[]};}):[]:[]})[_0x988b('0xb')](function(_0x17e1e3){logger[_0x988b('0xc')](_0x988b('0x22'),_0x12555a);logger[_0x988b('0xf')](_0x988b('0x22'),_0x12555a,JSON[_0x988b('0x11')](_0x17e1e3));_0x532b48(_0x17e1e3);})['catch'](function(_0x2abcbd){logger[_0x988b('0x12')](_0x988b('0x22'),_0x2abcbd[_0x988b('0x13')],_0x12555a);_0x10e38d(_0xd79667['error'](0x1f4,_0x2abcbd[_0x988b('0x13')]));});});};
\ No newline at end of file
+var _0xec09=['../../config/logger','rpc','../../config/environment','jayson/promise','client','request','info','DeskAccount,\x20%s,\x20%s','request\x20sent','stringify','error','code','message','catch','GetDeskAccount','findAll','options','where','attributes','limit','include','model','map','then','debug','ShowDeskAccount','find','lodash','moment','bluebird','ioredis','../../mysqldb'];(function(_0x7e2eb0,_0x17cd58){var _0xd92de4=function(_0x5d005b){while(--_0x5d005b){_0x7e2eb0['push'](_0x7e2eb0['shift']());}};_0xd92de4(++_0x17cd58);}(_0xec09,0x7b));var _0x9ec0=function(_0x3faf85,_0x272107){_0x3faf85=_0x3faf85-0x0;var _0x496c38=_0xec09[_0x3faf85];return _0x496c38;};'use strict';var _=require(_0x9ec0('0x0'));var util=require('util');var moment=require(_0x9ec0('0x1'));var BPromise=require(_0x9ec0('0x2'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x9ec0('0x3'));var db=require(_0x9ec0('0x4'))['db'];var utils=require('../../config/utils');var logger=require(_0x9ec0('0x5'))(_0x9ec0('0x6'));var config=require(_0x9ec0('0x7'));var jayson=require(_0x9ec0('0x8'));var client=jayson[_0x9ec0('0x9')]['http']({'port':0x232a});function respondWithRpcPromise(_0x1214d9,_0x292b44,_0x244dd9){return new BPromise(function(_0xfb0287,_0x3b3641){return client[_0x9ec0('0xa')](_0x1214d9,_0x244dd9)['then'](function(_0x5c4108){logger[_0x9ec0('0xb')](_0x9ec0('0xc'),_0x292b44,'request\x20sent');logger['debug']('DeskAccount,\x20%s,\x20%s,\x20%s',_0x292b44,_0x9ec0('0xd'),JSON[_0x9ec0('0xe')](_0x5c4108));if(_0x5c4108['error']){if(_0x5c4108[_0x9ec0('0xf')][_0x9ec0('0x10')]===0x1f4){logger['error'](_0x9ec0('0xc'),_0x292b44,_0x5c4108['error'][_0x9ec0('0x11')]);return _0x3b3641(_0x5c4108[_0x9ec0('0xf')][_0x9ec0('0x11')]);}logger[_0x9ec0('0xf')]('DeskAccount,\x20%s,\x20%s',_0x292b44,_0x5c4108[_0x9ec0('0xf')][_0x9ec0('0x11')]);return _0xfb0287(_0x5c4108[_0x9ec0('0xf')][_0x9ec0('0x11')]);}else{logger['info'](_0x9ec0('0xc'),_0x292b44,_0x9ec0('0xd'));_0xfb0287(_0x5c4108['result'][_0x9ec0('0x11')]);}})[_0x9ec0('0x12')](function(_0x338b77){logger['error'](_0x9ec0('0xc'),_0x292b44,_0x338b77);_0x3b3641(_0x338b77);});});}exports[_0x9ec0('0x13')]=function(_0x256013){var _0x126fa0=this;return new Promise(function(_0xd4e9b5,_0x4f79f5){return db['DeskAccount'][_0x9ec0('0x14')]({'raw':_0x256013[_0x9ec0('0x15')]?_0x256013[_0x9ec0('0x15')]['raw']===undefined?!![]:![]:!![],'where':_0x256013[_0x9ec0('0x15')]?_0x256013[_0x9ec0('0x15')][_0x9ec0('0x16')]||null:null,'attributes':_0x256013[_0x9ec0('0x15')]?_0x256013[_0x9ec0('0x15')][_0x9ec0('0x17')]||null:null,'limit':_0x256013['options']?_0x256013[_0x9ec0('0x15')][_0x9ec0('0x18')]||null:null,'include':_0x256013[_0x9ec0('0x15')]?_0x256013[_0x9ec0('0x15')][_0x9ec0('0x19')]?_['map'](_0x256013[_0x9ec0('0x15')][_0x9ec0('0x19')],function(_0x559804){return{'model':db[_0x559804[_0x9ec0('0x1a')]],'as':_0x559804['as'],'attributes':_0x559804[_0x9ec0('0x17')],'include':_0x559804[_0x9ec0('0x19')]?_[_0x9ec0('0x1b')](_0x559804[_0x9ec0('0x19')],function(_0x17acc4){return{'model':db[_0x17acc4[_0x9ec0('0x1a')]],'as':_0x17acc4['as'],'attributes':_0x17acc4[_0x9ec0('0x17')],'include':_0x17acc4['include']?_['map'](_0x17acc4[_0x9ec0('0x19')],function(_0x399871){return{'model':db[_0x399871[_0x9ec0('0x1a')]],'as':_0x399871['as'],'attributes':_0x399871[_0x9ec0('0x17')]};}):[]};}):[]};}):[]:[]})[_0x9ec0('0x1c')](function(_0x3309b7){logger[_0x9ec0('0xb')]('GetDeskAccount',_0x256013);logger[_0x9ec0('0x1d')]('GetDeskAccount',_0x256013,JSON[_0x9ec0('0xe')](_0x3309b7));_0xd4e9b5(_0x3309b7);})['catch'](function(_0x11edd6){logger[_0x9ec0('0xf')]('GetDeskAccount',_0x11edd6[_0x9ec0('0x11')],_0x256013);_0x4f79f5(_0x126fa0[_0x9ec0('0xf')](0x1f4,_0x11edd6[_0x9ec0('0x11')]));});});};exports[_0x9ec0('0x1e')]=function(_0x389e57){var _0x3fd7d7=this;return new Promise(function(_0x30dd6d,_0x48be98){return db['DeskAccount'][_0x9ec0('0x1f')]({'raw':_0x389e57['options']?_0x389e57[_0x9ec0('0x15')]['raw']===undefined?!![]:![]:!![],'where':_0x389e57['options']?_0x389e57[_0x9ec0('0x15')]['where']||null:null,'attributes':_0x389e57[_0x9ec0('0x15')]?_0x389e57[_0x9ec0('0x15')][_0x9ec0('0x17')]||null:null,'include':_0x389e57[_0x9ec0('0x15')]?_0x389e57[_0x9ec0('0x15')]['include']?_['map'](_0x389e57[_0x9ec0('0x15')][_0x9ec0('0x19')],function(_0x433791){return{'model':db[_0x433791[_0x9ec0('0x1a')]],'as':_0x433791['as'],'attributes':_0x433791[_0x9ec0('0x17')],'include':_0x433791['include']?_['map'](_0x433791['include'],function(_0x1dc801){return{'model':db[_0x1dc801[_0x9ec0('0x1a')]],'as':_0x1dc801['as'],'attributes':_0x1dc801[_0x9ec0('0x17')],'include':_0x1dc801[_0x9ec0('0x19')]?_[_0x9ec0('0x1b')](_0x1dc801[_0x9ec0('0x19')],function(_0x5569c7){return{'model':db[_0x5569c7[_0x9ec0('0x1a')]],'as':_0x5569c7['as'],'attributes':_0x5569c7['attributes']};}):[]};}):[]};}):[]:[]})[_0x9ec0('0x1c')](function(_0x79f8bf){logger[_0x9ec0('0xb')](_0x9ec0('0x1e'),_0x389e57);logger[_0x9ec0('0x1d')](_0x9ec0('0x1e'),_0x389e57,JSON[_0x9ec0('0xe')](_0x79f8bf));_0x30dd6d(_0x79f8bf);})[_0x9ec0('0x12')](function(_0x5ace25){logger['error']('ShowDeskAccount',_0x5ace25['message'],_0x389e57);_0x48be98(_0x3fd7d7['error'](0x1f4,_0x5ace25['message']));});});};
\ No newline at end of file
index be57889..b1745d1 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(_0x224a2a,_0x13c665){var _0x4c2386=function(_0x457caa){while(--_0x457caa){_0x224a2a['push'](_0x224a2a['shift']());}};_0x4c2386(++_0x13c665);}(_0xedd9,0xfc));var _0x9edd=function(_0x1a7a0d,_0x2d5bfa){_0x1a7a0d=_0x1a7a0d-0x0;var _0x14c390=_0xedd9[_0x1a7a0d];return _0x14c390;};'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(_0x42f3a5,_0x3a4470){var _0x1a7d74=function(_0x43cc36){while(--_0x43cc36){_0x42f3a5['push'](_0x42f3a5['shift']());}};_0x1a7d74(++_0x3a4470);}(_0x55ca,0x126));var _0xa55c=function(_0x47568e,_0x5ccdaf){_0x47568e=_0x47568e-0x0;var _0x33815b=_0x55ca[_0x47568e];return _0x33815b;};'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 57f2ddf..67ef1ea 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb14b=['sequelize','exports'];(function(_0x438d40,_0x54e013){var _0x5fe6fd=function(_0x17647b){while(--_0x17647b){_0x438d40['push'](_0x438d40['shift']());}};_0x5fe6fd(++_0x54e013);}(_0xb14b,0x1c0));var _0xbb14=function(_0x28ee4a,_0x2e50fb){_0x28ee4a=_0x28ee4a-0x0;var _0x3fa81e=_0xb14b[_0x28ee4a];return _0x3fa81e;};'use strict';var Sequelize=require(_0xbb14('0x0'));module[_0xbb14('0x1')]={'name':{'type':Sequelize['STRING']},'description':{'type':Sequelize['STRING']}};
\ No newline at end of file
+var _0x3ceb=['sequelize','exports','STRING'];(function(_0x534dc8,_0x17e26c){var _0x17e333=function(_0x37eb96){while(--_0x37eb96){_0x534dc8['push'](_0x534dc8['shift']());}};_0x17e333(++_0x17e26c);}(_0x3ceb,0x1e6));var _0xb3ce=function(_0x5cb135,_0x40c305){_0x5cb135=_0x5cb135-0x0;var _0x440662=_0x3ceb[_0x5cb135];return _0x440662;};'use strict';var Sequelize=require(_0xb3ce('0x0'));module[_0xb3ce('0x1')]={'name':{'type':Sequelize[_0xb3ce('0x2')]},'description':{'type':Sequelize[_0xb3ce('0x2')]}};
\ No newline at end of file
index a28306d..b8b71f9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x97d3=['getFields','findOne','keys','getSubjects','DeskField','getDescriptions','getTags','Tag','setTags','ids','eml-format','rimraf','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox','to-csv','fs-extra','lodash','squel','jsforce','desk.js','querystring','ioredis','../../components/auth/service','../../components/parsers/qs','../../config/license/hardware','api','../../config/utils','../../config/environment','../../config/license/util','sendStatus','status','end','json','undefined','count','offset','limit','set','Content-Range','apply','reject','save','update','then','error','stack','send','index','map','rawAttributes','fieldName','model','name','query','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','pick','filter','merge','type','VIRTUAL','options','DeskConfiguration','includeAll','include','findAll','catch','show','params','create','body','find','destroy'];(function(_0x419b40,_0x4bbbc5){var _0x5afe27=function(_0x15433a){while(--_0x15433a){_0x419b40['push'](_0x419b40['shift']());}};_0x5afe27(++_0x4bbbc5);}(_0x97d3,0x166));var _0x397d=function(_0x3fba9f,_0x3b7b9b){_0x3fba9f=_0x3fba9f-0x0;var _0x192cf1=_0x97d3[_0x3fba9f];return _0x192cf1;};'use strict';var emlformat=require(_0x397d('0x0'));var rimraf=require(_0x397d('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0x397d('0x2'));var rp=require(_0x397d('0x3'));var moment=require(_0x397d('0x4'));var BPromise=require(_0x397d('0x5'));var Mustache=require(_0x397d('0x6'));var util=require(_0x397d('0x7'));var path=require(_0x397d('0x8'));var sox=require(_0x397d('0x9'));var csv=require(_0x397d('0xa'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x397d('0xb'));var _=require(_0x397d('0xc'));var squel=require(_0x397d('0xd'));var crypto=require('crypto');var jsforce=require(_0x397d('0xe'));var deskjs=require(_0x397d('0xf'));var toCsv=require(_0x397d('0xa'));var querystring=require(_0x397d('0x10'));var Papa=require('papaparse');var Redis=require(_0x397d('0x11'));var authService=require(_0x397d('0x12'));var qs=require(_0x397d('0x13'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x397d('0x14'));var logger=require('../../config/logger')(_0x397d('0x15'));var utils=require(_0x397d('0x16'));var config=require(_0x397d('0x17'));var licenseUtil=require(_0x397d('0x18'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x1353e1,_0x513da2){_0x513da2=_0x513da2||0xcc;return function(_0x1c747b){if(_0x1c747b){return _0x1353e1[_0x397d('0x19')](_0x513da2);}return _0x1353e1[_0x397d('0x1a')](_0x513da2)[_0x397d('0x1b')]();};}function respondWithResult(_0x2568c0,_0x5a3744){_0x5a3744=_0x5a3744||0xc8;return function(_0x1a74a8){if(_0x1a74a8){return _0x2568c0[_0x397d('0x1a')](_0x5a3744)[_0x397d('0x1c')](_0x1a74a8);}};}function respondWithFilteredResult(_0x43ba98,_0x426579){return function(_0x20cbdf){if(_0x20cbdf){var _0x259452=typeof _0x426579['offset']===_0x397d('0x1d')&&typeof _0x426579['limit']===_0x397d('0x1d');var _0x421a5e=_0x20cbdf[_0x397d('0x1e')];var _0x42b393=_0x259452?0x0:_0x426579[_0x397d('0x1f')];var _0x76892c=_0x259452?_0x20cbdf[_0x397d('0x1e')]:_0x426579['offset']+_0x426579[_0x397d('0x20')];var _0x1edf16;if(_0x76892c>=_0x421a5e){_0x76892c=_0x421a5e;_0x1edf16=0xc8;}else{_0x1edf16=0xce;}_0x43ba98[_0x397d('0x1a')](_0x1edf16);return _0x43ba98[_0x397d('0x21')](_0x397d('0x22'),_0x42b393+'-'+_0x76892c+'/'+_0x421a5e)[_0x397d('0x1c')](_0x20cbdf);}return null;};}function patchUpdates(_0x53e606){return function(_0x3b530a){try{jsonpatch[_0x397d('0x23')](_0x3b530a,_0x53e606,!![]);}catch(_0x184be6){return BPromise[_0x397d('0x24')](_0x184be6);}return _0x3b530a[_0x397d('0x25')]();};}function saveUpdates(_0x47a76d,_0x500930){return function(_0x159aa3){if(_0x159aa3){return _0x159aa3[_0x397d('0x26')](_0x47a76d)['then'](function(_0x3de51a){return _0x3de51a;});}return null;};}function removeEntity(_0x39f726,_0x5de2c7){return function(_0x21767b){if(_0x21767b){return _0x21767b['destroy']()[_0x397d('0x27')](function(){_0x39f726[_0x397d('0x1a')](0xcc)[_0x397d('0x1b')]();});}};}function handleEntityNotFound(_0x47048b,_0x4c1c7e){return function(_0x422f8e){if(!_0x422f8e){_0x47048b[_0x397d('0x19')](0x194);}return _0x422f8e;};}function handleError(_0xcbd081,_0x574b9b){_0x574b9b=_0x574b9b||0x1f4;return function(_0x3aaf89){logger[_0x397d('0x28')](_0x3aaf89[_0x397d('0x29')]);if(_0x3aaf89['name']){delete _0x3aaf89['name'];}_0xcbd081[_0x397d('0x1a')](_0x574b9b)[_0x397d('0x2a')](_0x3aaf89);};}exports[_0x397d('0x2b')]=function(_0x286b8d,_0x2d38d9){var _0x34edff={},_0x2266ab={},_0x266987={'count':0x0,'rows':[]};var _0x3805a2=_[_0x397d('0x2c')](db['DeskConfiguration'][_0x397d('0x2d')],function(_0x5d5b03){return{'name':_0x5d5b03[_0x397d('0x2e')],'type':_0x5d5b03['type']['key']};});_0x2266ab[_0x397d('0x2f')]=_[_0x397d('0x2c')](_0x3805a2,_0x397d('0x30'));_0x2266ab['query']=_['keys'](_0x286b8d[_0x397d('0x31')]);_0x2266ab[_0x397d('0x32')]=_[_0x397d('0x33')](_0x2266ab[_0x397d('0x2f')],_0x2266ab['query']);_0x34edff[_0x397d('0x34')]=_['intersection'](_0x2266ab[_0x397d('0x2f')],qs[_0x397d('0x35')](_0x286b8d[_0x397d('0x31')][_0x397d('0x35')]));_0x34edff['attributes']=_0x34edff[_0x397d('0x34')][_0x397d('0x36')]?_0x34edff['attributes']:_0x2266ab[_0x397d('0x2f')];if(!_0x286b8d['query'][_0x397d('0x37')](_0x397d('0x38'))){_0x34edff[_0x397d('0x20')]=qs[_0x397d('0x20')](_0x286b8d[_0x397d('0x31')]['limit']);_0x34edff[_0x397d('0x1f')]=qs[_0x397d('0x1f')](_0x286b8d[_0x397d('0x31')]['offset']);}_0x34edff[_0x397d('0x39')]=qs[_0x397d('0x3a')](_0x286b8d[_0x397d('0x31')][_0x397d('0x3a')]);_0x34edff[_0x397d('0x3b')]=qs[_0x397d('0x32')](_[_0x397d('0x3c')](_0x286b8d[_0x397d('0x31')],_0x2266ab[_0x397d('0x32')]),_0x3805a2);if(_0x286b8d[_0x397d('0x31')][_0x397d('0x3d')]){_0x34edff[_0x397d('0x3b')]=_[_0x397d('0x3e')](_0x34edff[_0x397d('0x3b')],{'$or':_[_0x397d('0x2c')](_0x3805a2,function(_0x500389){if(_0x500389[_0x397d('0x3f')]!==_0x397d('0x40')){var _0x4b446f={};_0x4b446f[_0x500389[_0x397d('0x30')]]={'$like':'%'+_0x286b8d[_0x397d('0x31')][_0x397d('0x3d')]+'%'};return _0x4b446f;}})});}_0x34edff=_[_0x397d('0x3e')]({},_0x34edff,_0x286b8d[_0x397d('0x41')]);var _0x4a7fd7={'where':_0x34edff['where']};return db[_0x397d('0x42')][_0x397d('0x1e')](_0x4a7fd7)[_0x397d('0x27')](function(_0x426da5){_0x266987[_0x397d('0x1e')]=_0x426da5;if(_0x286b8d[_0x397d('0x31')][_0x397d('0x43')]){_0x34edff[_0x397d('0x44')]=[{'all':!![]}];}return db[_0x397d('0x42')][_0x397d('0x45')](_0x34edff);})[_0x397d('0x27')](function(_0x240c14){_0x266987['rows']=_0x240c14;return _0x266987;})['then'](respondWithFilteredResult(_0x2d38d9,_0x34edff))[_0x397d('0x46')](handleError(_0x2d38d9,null));};exports[_0x397d('0x47')]=function(_0x1c46a6,_0x83dfe6){var _0x158925={'raw':![],'where':{'id':_0x1c46a6[_0x397d('0x48')]['id']}},_0x51913a={};_0x51913a['model']=_['keys'](db[_0x397d('0x42')][_0x397d('0x2d')]);_0x51913a[_0x397d('0x31')]=_['keys'](_0x1c46a6[_0x397d('0x31')]);_0x51913a[_0x397d('0x32')]=_[_0x397d('0x33')](_0x51913a['model'],_0x51913a['query']);_0x158925[_0x397d('0x34')]=_['intersection'](_0x51913a[_0x397d('0x2f')],qs[_0x397d('0x35')](_0x1c46a6[_0x397d('0x31')]['fields']));_0x158925[_0x397d('0x34')]=_0x158925[_0x397d('0x34')][_0x397d('0x36')]?_0x158925[_0x397d('0x34')]:_0x51913a[_0x397d('0x2f')];if(_0x1c46a6[_0x397d('0x31')][_0x397d('0x43')]){_0x158925['include']=[{'all':!![]}];}_0x158925=_[_0x397d('0x3e')]({},_0x158925,_0x1c46a6[_0x397d('0x41')]);return db[_0x397d('0x42')]['find'](_0x158925)[_0x397d('0x27')](handleEntityNotFound(_0x83dfe6,null))[_0x397d('0x27')](respondWithResult(_0x83dfe6,null))[_0x397d('0x46')](handleError(_0x83dfe6,null));};exports[_0x397d('0x49')]=function(_0x18be83,_0x5ddba5){return db[_0x397d('0x42')][_0x397d('0x49')](_0x18be83[_0x397d('0x4a')],{})[_0x397d('0x27')](respondWithResult(_0x5ddba5,0xc9))[_0x397d('0x46')](handleError(_0x5ddba5,null));};exports['update']=function(_0x5c4d48,_0x252e3f){if(_0x5c4d48[_0x397d('0x4a')]['id']){delete _0x5c4d48[_0x397d('0x4a')]['id'];}return db[_0x397d('0x42')][_0x397d('0x4b')]({'where':{'id':_0x5c4d48[_0x397d('0x48')]['id']}})[_0x397d('0x27')](handleEntityNotFound(_0x252e3f,null))[_0x397d('0x27')](saveUpdates(_0x5c4d48[_0x397d('0x4a')],null))[_0x397d('0x27')](respondWithResult(_0x252e3f,null))[_0x397d('0x46')](handleError(_0x252e3f,null));};exports[_0x397d('0x4c')]=function(_0x16cbf0,_0x26b5b5){return db[_0x397d('0x42')][_0x397d('0x4b')]({'where':{'id':_0x16cbf0['params']['id']}})['then'](handleEntityNotFound(_0x26b5b5,null))[_0x397d('0x27')](removeEntity(_0x26b5b5,null))['catch'](handleError(_0x26b5b5,null));};exports[_0x397d('0x4d')]=function(_0x1fa8fd,_0x204e0c,_0x1bea67){var _0x5e44dd={};var _0x3b20e4={};var _0x45f9a1;var _0x2c539e;return db[_0x397d('0x42')][_0x397d('0x4e')]({'where':{'id':_0x1fa8fd[_0x397d('0x48')]['id']}})[_0x397d('0x27')](handleEntityNotFound(_0x204e0c,null))['then'](function(_0x1d2907){if(_0x1d2907){_0x45f9a1=_0x1d2907;_0x3b20e4[_0x397d('0x2f')]=_[_0x397d('0x4f')](db['DeskField'][_0x397d('0x2d')]);_0x3b20e4[_0x397d('0x31')]=_[_0x397d('0x4f')](_0x1fa8fd[_0x397d('0x31')]);_0x3b20e4[_0x397d('0x32')]=_[_0x397d('0x33')](_0x3b20e4[_0x397d('0x2f')],_0x3b20e4[_0x397d('0x31')]);_0x5e44dd['attributes']=_['intersection'](_0x3b20e4[_0x397d('0x2f')],qs[_0x397d('0x35')](_0x1fa8fd['query'][_0x397d('0x35')]));_0x5e44dd[_0x397d('0x34')]=_0x5e44dd[_0x397d('0x34')][_0x397d('0x36')]?_0x5e44dd[_0x397d('0x34')]:_0x3b20e4[_0x397d('0x2f')];_0x5e44dd['order']=qs['sort'](_0x1fa8fd[_0x397d('0x31')][_0x397d('0x3a')]);_0x5e44dd[_0x397d('0x3b')]=qs[_0x397d('0x32')](_[_0x397d('0x3c')](_0x1fa8fd[_0x397d('0x31')],_0x3b20e4[_0x397d('0x32')]));if(_0x1fa8fd[_0x397d('0x31')][_0x397d('0x3d')]){_0x5e44dd[_0x397d('0x3b')]=_[_0x397d('0x3e')](_0x5e44dd['where'],{'$or':_['map'](_0x5e44dd[_0x397d('0x34')],function(_0x40a49d){var _0x42a823={};_0x42a823[_0x40a49d]={'$like':'%'+_0x1fa8fd[_0x397d('0x31')][_0x397d('0x3d')]+'%'};return _0x42a823;})});}_0x5e44dd=_['merge']({},_0x5e44dd,_0x1fa8fd[_0x397d('0x41')]);return _0x45f9a1[_0x397d('0x4d')](_0x5e44dd);}})['then'](function(_0x48cb8d){if(_0x48cb8d){_0x2c539e=_0x48cb8d['length'];if(!_0x1fa8fd[_0x397d('0x31')][_0x397d('0x37')](_0x397d('0x38'))){_0x5e44dd[_0x397d('0x20')]=qs[_0x397d('0x20')](_0x1fa8fd[_0x397d('0x31')][_0x397d('0x20')]);_0x5e44dd[_0x397d('0x1f')]=qs[_0x397d('0x1f')](_0x1fa8fd['query'][_0x397d('0x1f')]);}return _0x45f9a1[_0x397d('0x4d')](_0x5e44dd);}})[_0x397d('0x27')](function(_0x289d48){if(_0x289d48){return _0x289d48?{'count':_0x2c539e,'rows':_0x289d48}:null;}})[_0x397d('0x27')](respondWithResult(_0x204e0c,null))[_0x397d('0x46')](handleError(_0x204e0c,null));};exports[_0x397d('0x50')]=function(_0x16734a,_0x19409c,_0x49b6b8){var _0x4d80c6={};var _0x7b2ab7={};var _0x22542a;var _0x30a3d9;return db[_0x397d('0x42')][_0x397d('0x4e')]({'where':{'id':_0x16734a[_0x397d('0x48')]['id']}})[_0x397d('0x27')](handleEntityNotFound(_0x19409c,null))[_0x397d('0x27')](function(_0x3bc8ea){if(_0x3bc8ea){_0x22542a=_0x3bc8ea;_0x7b2ab7['model']=_[_0x397d('0x4f')](db[_0x397d('0x51')][_0x397d('0x2d')]);_0x7b2ab7['query']=_[_0x397d('0x4f')](_0x16734a[_0x397d('0x31')]);_0x7b2ab7[_0x397d('0x32')]=_[_0x397d('0x33')](_0x7b2ab7[_0x397d('0x2f')],_0x7b2ab7[_0x397d('0x31')]);_0x4d80c6[_0x397d('0x34')]=_['intersection'](_0x7b2ab7['model'],qs[_0x397d('0x35')](_0x16734a[_0x397d('0x31')]['fields']));_0x4d80c6[_0x397d('0x34')]=_0x4d80c6[_0x397d('0x34')][_0x397d('0x36')]?_0x4d80c6[_0x397d('0x34')]:_0x7b2ab7[_0x397d('0x2f')];_0x4d80c6[_0x397d('0x39')]=qs[_0x397d('0x3a')](_0x16734a[_0x397d('0x31')][_0x397d('0x3a')]);_0x4d80c6[_0x397d('0x3b')]=qs[_0x397d('0x32')](_[_0x397d('0x3c')](_0x16734a[_0x397d('0x31')],_0x7b2ab7[_0x397d('0x32')]));if(_0x16734a[_0x397d('0x31')][_0x397d('0x3d')]){_0x4d80c6[_0x397d('0x3b')]=_[_0x397d('0x3e')](_0x4d80c6[_0x397d('0x3b')],{'$or':_[_0x397d('0x2c')](_0x4d80c6[_0x397d('0x34')],function(_0x2d6dba){var _0x5e245f={};_0x5e245f[_0x2d6dba]={'$like':'%'+_0x16734a[_0x397d('0x31')]['filter']+'%'};return _0x5e245f;})});}_0x4d80c6=_[_0x397d('0x3e')]({},_0x4d80c6,_0x16734a['options']);return _0x22542a['getSubjects'](_0x4d80c6);}})[_0x397d('0x27')](function(_0x90a0cc){if(_0x90a0cc){_0x30a3d9=_0x90a0cc[_0x397d('0x36')];if(!_0x16734a['query'][_0x397d('0x37')](_0x397d('0x38'))){_0x4d80c6[_0x397d('0x20')]=qs[_0x397d('0x20')](_0x16734a[_0x397d('0x31')][_0x397d('0x20')]);_0x4d80c6[_0x397d('0x1f')]=qs[_0x397d('0x1f')](_0x16734a[_0x397d('0x31')][_0x397d('0x1f')]);}return _0x22542a[_0x397d('0x50')](_0x4d80c6);}})[_0x397d('0x27')](function(_0x327761){if(_0x327761){return _0x327761?{'count':_0x30a3d9,'rows':_0x327761}:null;}})[_0x397d('0x27')](respondWithResult(_0x19409c,null))[_0x397d('0x46')](handleError(_0x19409c,null));};exports['getDescriptions']=function(_0x2d1cb6,_0x3e5e75,_0x1a9724){var _0x50ae2c={};var _0x509e62={};var _0x12b88b;var _0xe979f9;return db['DeskConfiguration'][_0x397d('0x4e')]({'where':{'id':_0x2d1cb6[_0x397d('0x48')]['id']}})[_0x397d('0x27')](handleEntityNotFound(_0x3e5e75,null))[_0x397d('0x27')](function(_0x773e3a){if(_0x773e3a){_0x12b88b=_0x773e3a;_0x509e62[_0x397d('0x2f')]=_[_0x397d('0x4f')](db[_0x397d('0x51')][_0x397d('0x2d')]);_0x509e62[_0x397d('0x31')]=_[_0x397d('0x4f')](_0x2d1cb6[_0x397d('0x31')]);_0x509e62[_0x397d('0x32')]=_['intersection'](_0x509e62['model'],_0x509e62[_0x397d('0x31')]);_0x50ae2c[_0x397d('0x34')]=_[_0x397d('0x33')](_0x509e62[_0x397d('0x2f')],qs[_0x397d('0x35')](_0x2d1cb6[_0x397d('0x31')][_0x397d('0x35')]));_0x50ae2c[_0x397d('0x34')]=_0x50ae2c[_0x397d('0x34')][_0x397d('0x36')]?_0x50ae2c[_0x397d('0x34')]:_0x509e62['model'];_0x50ae2c[_0x397d('0x39')]=qs[_0x397d('0x3a')](_0x2d1cb6['query'][_0x397d('0x3a')]);_0x50ae2c[_0x397d('0x3b')]=qs['filters'](_['pick'](_0x2d1cb6[_0x397d('0x31')],_0x509e62[_0x397d('0x32')]));if(_0x2d1cb6[_0x397d('0x31')][_0x397d('0x3d')]){_0x50ae2c['where']=_[_0x397d('0x3e')](_0x50ae2c['where'],{'$or':_[_0x397d('0x2c')](_0x50ae2c[_0x397d('0x34')],function(_0x10b8e9){var _0x5da944={};_0x5da944[_0x10b8e9]={'$like':'%'+_0x2d1cb6[_0x397d('0x31')][_0x397d('0x3d')]+'%'};return _0x5da944;})});}_0x50ae2c=_[_0x397d('0x3e')]({},_0x50ae2c,_0x2d1cb6[_0x397d('0x41')]);return _0x12b88b[_0x397d('0x52')](_0x50ae2c);}})[_0x397d('0x27')](function(_0x5bdec2){if(_0x5bdec2){_0xe979f9=_0x5bdec2['length'];if(!_0x2d1cb6['query'][_0x397d('0x37')](_0x397d('0x38'))){_0x50ae2c[_0x397d('0x20')]=qs['limit'](_0x2d1cb6[_0x397d('0x31')][_0x397d('0x20')]);_0x50ae2c[_0x397d('0x1f')]=qs[_0x397d('0x1f')](_0x2d1cb6['query'][_0x397d('0x1f')]);}return _0x12b88b[_0x397d('0x52')](_0x50ae2c);}})['then'](function(_0x336784){if(_0x336784){return _0x336784?{'count':_0xe979f9,'rows':_0x336784}:null;}})[_0x397d('0x27')](respondWithResult(_0x3e5e75,null))['catch'](handleError(_0x3e5e75,null));};exports[_0x397d('0x53')]=function(_0x6b10f9,_0x524c0b,_0x3ceae4){var _0x5431ec={};var _0xc8495b={};var _0x14f22f;var _0x4dc6ea;return db[_0x397d('0x42')]['findOne']({'where':{'id':_0x6b10f9['params']['id']}})[_0x397d('0x27')](handleEntityNotFound(_0x524c0b,null))[_0x397d('0x27')](function(_0x39a0fb){if(_0x39a0fb){_0x14f22f=_0x39a0fb;_0xc8495b['model']=_[_0x397d('0x4f')](db[_0x397d('0x54')][_0x397d('0x2d')]);_0xc8495b[_0x397d('0x31')]=_[_0x397d('0x4f')](_0x6b10f9[_0x397d('0x31')]);_0xc8495b[_0x397d('0x32')]=_[_0x397d('0x33')](_0xc8495b[_0x397d('0x2f')],_0xc8495b[_0x397d('0x31')]);_0x5431ec[_0x397d('0x34')]=_['intersection'](_0xc8495b[_0x397d('0x2f')],qs[_0x397d('0x35')](_0x6b10f9[_0x397d('0x31')][_0x397d('0x35')]));_0x5431ec['attributes']=_0x5431ec[_0x397d('0x34')][_0x397d('0x36')]?_0x5431ec[_0x397d('0x34')]:_0xc8495b[_0x397d('0x2f')];_0x5431ec[_0x397d('0x39')]=qs[_0x397d('0x3a')](_0x6b10f9['query'][_0x397d('0x3a')]);_0x5431ec[_0x397d('0x3b')]=qs['filters'](_[_0x397d('0x3c')](_0x6b10f9[_0x397d('0x31')],_0xc8495b[_0x397d('0x32')]));if(_0x6b10f9['query'][_0x397d('0x3d')]){_0x5431ec[_0x397d('0x3b')]=_[_0x397d('0x3e')](_0x5431ec[_0x397d('0x3b')],{'$or':_[_0x397d('0x2c')](_0x5431ec[_0x397d('0x34')],function(_0x576b52){var _0x36fca1={};_0x36fca1[_0x576b52]={'$like':'%'+_0x6b10f9[_0x397d('0x31')]['filter']+'%'};return _0x36fca1;})});}_0x5431ec=_[_0x397d('0x3e')]({},_0x5431ec,_0x6b10f9[_0x397d('0x41')]);return _0x14f22f[_0x397d('0x53')](_0x5431ec);}})[_0x397d('0x27')](function(_0x3047e0){if(_0x3047e0){_0x4dc6ea=_0x3047e0[_0x397d('0x36')];if(!_0x6b10f9[_0x397d('0x31')]['hasOwnProperty'](_0x397d('0x38'))){_0x5431ec['limit']=qs[_0x397d('0x20')](_0x6b10f9[_0x397d('0x31')][_0x397d('0x20')]);_0x5431ec[_0x397d('0x1f')]=qs[_0x397d('0x1f')](_0x6b10f9['query']['offset']);}return _0x14f22f['getTags'](_0x5431ec);}})[_0x397d('0x27')](function(_0x55cbb5){if(_0x55cbb5){return _0x55cbb5?{'count':_0x4dc6ea,'rows':_0x55cbb5}:null;}})[_0x397d('0x27')](respondWithResult(_0x524c0b,null))['catch'](handleError(_0x524c0b,null));};exports[_0x397d('0x55')]=function(_0x72f484,_0x3da4e1,_0x48283a){if(_0x72f484['body']['id']){delete _0x72f484[_0x397d('0x4a')]['id'];}return db['DeskConfiguration'][_0x397d('0x4e')]({'where':{'id':_0x72f484[_0x397d('0x48')]['id']}})['then'](handleEntityNotFound(_0x3da4e1,null))[_0x397d('0x27')](function(_0x230c5d){if(_0x230c5d){return _0x230c5d[_0x397d('0x55')](_0x72f484[_0x397d('0x4a')][_0x397d('0x56')]||[]);}return null;})[_0x397d('0x27')](respondWithResult(_0x3da4e1,null))['catch'](handleError(_0x3da4e1,null));};
\ No newline at end of file
+var _0x2947=['getDescriptions','getTags','Tag','rimraf','zip-dir','fast-json-patch','moment','bluebird','util','path','sox','ejs','fs-extra','lodash','crypto','desk.js','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','sendStatus','end','status','json','offset','limit','count','set','Content-Range','reject','save','update','then','destroy','name','send','rawAttributes','key','model','query','filters','intersection','attributes','fields','hasOwnProperty','nolimit','order','sort','where','pick','filter','map','VIRTUAL','DeskConfiguration','includeAll','include','findAll','rows','catch','show','keys','length','options','find','create','body','params','getFields','findOne','DeskField','merge','getSubjects'];(function(_0x11f55e,_0x3b8a78){var _0x275227=function(_0x77e8c9){while(--_0x77e8c9){_0x11f55e['push'](_0x11f55e['shift']());}};_0x275227(++_0x3b8a78);}(_0x2947,0xf9));var _0x7294=function(_0x5f4fa2,_0x32156a){_0x5f4fa2=_0x5f4fa2-0x0;var _0x21e1ee=_0x2947[_0x5f4fa2];return _0x21e1ee;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x7294('0x0'));var zipdir=require(_0x7294('0x1'));var jsonpatch=require(_0x7294('0x2'));var rp=require('request-promise');var moment=require(_0x7294('0x3'));var BPromise=require(_0x7294('0x4'));var Mustache=require('mustache');var util=require(_0x7294('0x5'));var path=require(_0x7294('0x6'));var sox=require(_0x7294('0x7'));var csv=require('to-csv');var ejs=require(_0x7294('0x8'));var fs=require('fs');var fs_extra=require(_0x7294('0x9'));var _=require(_0x7294('0xa'));var squel=require('squel');var crypto=require(_0x7294('0xb'));var jsforce=require('jsforce');var deskjs=require(_0x7294('0xc'));var toCsv=require(_0x7294('0xd'));var querystring=require(_0x7294('0xe'));var Papa=require(_0x7294('0xf'));var Redis=require(_0x7294('0x10'));var authService=require(_0x7294('0x11'));var qs=require(_0x7294('0x12'));var as=require(_0x7294('0x13'));var hardwareService=require(_0x7294('0x14'));var logger=require(_0x7294('0x15'))(_0x7294('0x16'));var utils=require(_0x7294('0x17'));var config=require(_0x7294('0x18'));var licenseUtil=require(_0x7294('0x19'));var db=require(_0x7294('0x1a'))['db'];function respondWithStatusCode(_0x534aa7,_0x49d685){_0x49d685=_0x49d685||0xcc;return function(_0x176fdb){if(_0x176fdb){return _0x534aa7[_0x7294('0x1b')](_0x49d685);}return _0x534aa7['status'](_0x49d685)[_0x7294('0x1c')]();};}function respondWithResult(_0x52f763,_0x508b43){_0x508b43=_0x508b43||0xc8;return function(_0x4459f6){if(_0x4459f6){return _0x52f763[_0x7294('0x1d')](_0x508b43)[_0x7294('0x1e')](_0x4459f6);}};}function respondWithFilteredResult(_0x5a925d,_0x404a2c){return function(_0x57dfc2){if(_0x57dfc2){var _0x3acf44=typeof _0x404a2c[_0x7294('0x1f')]==='undefined'&&typeof _0x404a2c[_0x7294('0x20')]==='undefined';var _0x5106d2=_0x57dfc2[_0x7294('0x21')];var _0x3ab120=_0x3acf44?0x0:_0x404a2c[_0x7294('0x1f')];var _0x2db13f=_0x3acf44?_0x57dfc2['count']:_0x404a2c[_0x7294('0x1f')]+_0x404a2c[_0x7294('0x20')];var _0x4f772f;if(_0x2db13f>=_0x5106d2){_0x2db13f=_0x5106d2;_0x4f772f=0xc8;}else{_0x4f772f=0xce;}_0x5a925d['status'](_0x4f772f);return _0x5a925d[_0x7294('0x22')](_0x7294('0x23'),_0x3ab120+'-'+_0x2db13f+'/'+_0x5106d2)[_0x7294('0x1e')](_0x57dfc2);}return null;};}function patchUpdates(_0x659257){return function(_0x1f3c9c){try{jsonpatch['apply'](_0x1f3c9c,_0x659257,!![]);}catch(_0x59cac1){return BPromise[_0x7294('0x24')](_0x59cac1);}return _0x1f3c9c[_0x7294('0x25')]();};}function saveUpdates(_0x149446,_0x5e74b9){return function(_0x594b77){if(_0x594b77){return _0x594b77[_0x7294('0x26')](_0x149446)[_0x7294('0x27')](function(_0x38ed3b){return _0x38ed3b;});}return null;};}function removeEntity(_0x2b2459,_0x3e85ca){return function(_0x306bb6){if(_0x306bb6){return _0x306bb6[_0x7294('0x28')]()[_0x7294('0x27')](function(){_0x2b2459[_0x7294('0x1d')](0xcc)[_0x7294('0x1c')]();});}};}function handleEntityNotFound(_0x22a59e,_0x31d9c8){return function(_0x117281){if(!_0x117281){_0x22a59e[_0x7294('0x1b')](0x194);}return _0x117281;};}function handleError(_0x3bcc23,_0x51750e){_0x51750e=_0x51750e||0x1f4;return function(_0x343f6a){logger['error'](_0x343f6a['stack']);if(_0x343f6a[_0x7294('0x29')]){delete _0x343f6a[_0x7294('0x29')];}_0x3bcc23['status'](_0x51750e)[_0x7294('0x2a')](_0x343f6a);};}exports['index']=function(_0x4eb546,_0x17e27b){var _0x1c2a8d={},_0x203c41={},_0xb5843b={'count':0x0,'rows':[]};var _0x338112=_['map'](db['DeskConfiguration'][_0x7294('0x2b')],function(_0x5c26c9){return{'name':_0x5c26c9['fieldName'],'type':_0x5c26c9['type'][_0x7294('0x2c')]};});_0x203c41[_0x7294('0x2d')]=_['map'](_0x338112,_0x7294('0x29'));_0x203c41[_0x7294('0x2e')]=_['keys'](_0x4eb546[_0x7294('0x2e')]);_0x203c41[_0x7294('0x2f')]=_[_0x7294('0x30')](_0x203c41[_0x7294('0x2d')],_0x203c41[_0x7294('0x2e')]);_0x1c2a8d[_0x7294('0x31')]=_[_0x7294('0x30')](_0x203c41['model'],qs[_0x7294('0x32')](_0x4eb546[_0x7294('0x2e')]['fields']));_0x1c2a8d[_0x7294('0x31')]=_0x1c2a8d[_0x7294('0x31')]['length']?_0x1c2a8d[_0x7294('0x31')]:_0x203c41[_0x7294('0x2d')];if(!_0x4eb546[_0x7294('0x2e')][_0x7294('0x33')](_0x7294('0x34'))){_0x1c2a8d[_0x7294('0x20')]=qs['limit'](_0x4eb546[_0x7294('0x2e')][_0x7294('0x20')]);_0x1c2a8d['offset']=qs[_0x7294('0x1f')](_0x4eb546[_0x7294('0x2e')][_0x7294('0x1f')]);}_0x1c2a8d[_0x7294('0x35')]=qs[_0x7294('0x36')](_0x4eb546[_0x7294('0x2e')][_0x7294('0x36')]);_0x1c2a8d[_0x7294('0x37')]=qs[_0x7294('0x2f')](_[_0x7294('0x38')](_0x4eb546[_0x7294('0x2e')],_0x203c41[_0x7294('0x2f')]),_0x338112);if(_0x4eb546[_0x7294('0x2e')][_0x7294('0x39')]){_0x1c2a8d[_0x7294('0x37')]=_['merge'](_0x1c2a8d[_0x7294('0x37')],{'$or':_[_0x7294('0x3a')](_0x338112,function(_0x6b3db2){if(_0x6b3db2['type']!==_0x7294('0x3b')){var _0x5b2089={};_0x5b2089[_0x6b3db2[_0x7294('0x29')]]={'$like':'%'+_0x4eb546[_0x7294('0x2e')][_0x7294('0x39')]+'%'};return _0x5b2089;}})});}_0x1c2a8d=_['merge']({},_0x1c2a8d,_0x4eb546['options']);var _0x4924f1={'where':_0x1c2a8d[_0x7294('0x37')]};return db[_0x7294('0x3c')][_0x7294('0x21')](_0x4924f1)[_0x7294('0x27')](function(_0xc35ad1){_0xb5843b[_0x7294('0x21')]=_0xc35ad1;if(_0x4eb546[_0x7294('0x2e')][_0x7294('0x3d')]){_0x1c2a8d[_0x7294('0x3e')]=[{'all':!![]}];}return db[_0x7294('0x3c')][_0x7294('0x3f')](_0x1c2a8d);})['then'](function(_0x22b219){_0xb5843b[_0x7294('0x40')]=_0x22b219;return _0xb5843b;})[_0x7294('0x27')](respondWithFilteredResult(_0x17e27b,_0x1c2a8d))[_0x7294('0x41')](handleError(_0x17e27b,null));};exports[_0x7294('0x42')]=function(_0x2b1c3b,_0x10876c){var _0x2bd1fd={'raw':![],'where':{'id':_0x2b1c3b['params']['id']}},_0x5f4f2f={};_0x5f4f2f[_0x7294('0x2d')]=_[_0x7294('0x43')](db['DeskConfiguration'][_0x7294('0x2b')]);_0x5f4f2f['query']=_[_0x7294('0x43')](_0x2b1c3b['query']);_0x5f4f2f['filters']=_['intersection'](_0x5f4f2f[_0x7294('0x2d')],_0x5f4f2f[_0x7294('0x2e')]);_0x2bd1fd[_0x7294('0x31')]=_['intersection'](_0x5f4f2f[_0x7294('0x2d')],qs[_0x7294('0x32')](_0x2b1c3b[_0x7294('0x2e')][_0x7294('0x32')]));_0x2bd1fd[_0x7294('0x31')]=_0x2bd1fd[_0x7294('0x31')][_0x7294('0x44')]?_0x2bd1fd[_0x7294('0x31')]:_0x5f4f2f[_0x7294('0x2d')];if(_0x2b1c3b[_0x7294('0x2e')][_0x7294('0x3d')]){_0x2bd1fd[_0x7294('0x3e')]=[{'all':!![]}];}_0x2bd1fd=_['merge']({},_0x2bd1fd,_0x2b1c3b[_0x7294('0x45')]);return db[_0x7294('0x3c')][_0x7294('0x46')](_0x2bd1fd)[_0x7294('0x27')](handleEntityNotFound(_0x10876c,null))[_0x7294('0x27')](respondWithResult(_0x10876c,null))[_0x7294('0x41')](handleError(_0x10876c,null));};exports['create']=function(_0x557ba5,_0x3a47a4){return db[_0x7294('0x3c')][_0x7294('0x47')](_0x557ba5[_0x7294('0x48')],{})[_0x7294('0x27')](respondWithResult(_0x3a47a4,0xc9))[_0x7294('0x41')](handleError(_0x3a47a4,null));};exports[_0x7294('0x26')]=function(_0x14033b,_0x592f08){if(_0x14033b[_0x7294('0x48')]['id']){delete _0x14033b[_0x7294('0x48')]['id'];}return db[_0x7294('0x3c')]['find']({'where':{'id':_0x14033b[_0x7294('0x49')]['id']}})[_0x7294('0x27')](handleEntityNotFound(_0x592f08,null))[_0x7294('0x27')](saveUpdates(_0x14033b['body'],null))[_0x7294('0x27')](respondWithResult(_0x592f08,null))[_0x7294('0x41')](handleError(_0x592f08,null));};exports[_0x7294('0x28')]=function(_0x2060ce,_0x1d7812){return db[_0x7294('0x3c')]['find']({'where':{'id':_0x2060ce[_0x7294('0x49')]['id']}})[_0x7294('0x27')](handleEntityNotFound(_0x1d7812,null))['then'](removeEntity(_0x1d7812,null))[_0x7294('0x41')](handleError(_0x1d7812,null));};exports[_0x7294('0x4a')]=function(_0x5b664b,_0x59e721,_0x3c4d30){var _0x449ea2={};var _0x58fffd={};var _0x5b2a31;var _0x23835d;return db['DeskConfiguration'][_0x7294('0x4b')]({'where':{'id':_0x5b664b[_0x7294('0x49')]['id']}})[_0x7294('0x27')](handleEntityNotFound(_0x59e721,null))[_0x7294('0x27')](function(_0x195c24){if(_0x195c24){_0x5b2a31=_0x195c24;_0x58fffd[_0x7294('0x2d')]=_[_0x7294('0x43')](db[_0x7294('0x4c')][_0x7294('0x2b')]);_0x58fffd[_0x7294('0x2e')]=_[_0x7294('0x43')](_0x5b664b['query']);_0x58fffd[_0x7294('0x2f')]=_[_0x7294('0x30')](_0x58fffd[_0x7294('0x2d')],_0x58fffd['query']);_0x449ea2[_0x7294('0x31')]=_['intersection'](_0x58fffd[_0x7294('0x2d')],qs[_0x7294('0x32')](_0x5b664b['query']['fields']));_0x449ea2[_0x7294('0x31')]=_0x449ea2[_0x7294('0x31')][_0x7294('0x44')]?_0x449ea2[_0x7294('0x31')]:_0x58fffd[_0x7294('0x2d')];_0x449ea2[_0x7294('0x35')]=qs[_0x7294('0x36')](_0x5b664b['query'][_0x7294('0x36')]);_0x449ea2[_0x7294('0x37')]=qs[_0x7294('0x2f')](_[_0x7294('0x38')](_0x5b664b['query'],_0x58fffd[_0x7294('0x2f')]));if(_0x5b664b[_0x7294('0x2e')]['filter']){_0x449ea2['where']=_[_0x7294('0x4d')](_0x449ea2[_0x7294('0x37')],{'$or':_[_0x7294('0x3a')](_0x449ea2[_0x7294('0x31')],function(_0x439d99){var _0x94e5c5={};_0x94e5c5[_0x439d99]={'$like':'%'+_0x5b664b['query']['filter']+'%'};return _0x94e5c5;})});}_0x449ea2=_[_0x7294('0x4d')]({},_0x449ea2,_0x5b664b[_0x7294('0x45')]);return _0x5b2a31[_0x7294('0x4a')](_0x449ea2);}})[_0x7294('0x27')](function(_0x30860e){if(_0x30860e){_0x23835d=_0x30860e[_0x7294('0x44')];if(!_0x5b664b[_0x7294('0x2e')][_0x7294('0x33')](_0x7294('0x34'))){_0x449ea2[_0x7294('0x20')]=qs[_0x7294('0x20')](_0x5b664b['query'][_0x7294('0x20')]);_0x449ea2['offset']=qs[_0x7294('0x1f')](_0x5b664b[_0x7294('0x2e')]['offset']);}return _0x5b2a31[_0x7294('0x4a')](_0x449ea2);}})[_0x7294('0x27')](function(_0x2a62be){if(_0x2a62be){return _0x2a62be?{'count':_0x23835d,'rows':_0x2a62be}:null;}})[_0x7294('0x27')](respondWithResult(_0x59e721,null))['catch'](handleError(_0x59e721,null));};exports[_0x7294('0x4e')]=function(_0x361693,_0x155e43,_0x9bba55){var _0x162ac4={};var _0x3b8ede={};var _0x2f8079;var _0x17d7e3;return db[_0x7294('0x3c')][_0x7294('0x4b')]({'where':{'id':_0x361693[_0x7294('0x49')]['id']}})[_0x7294('0x27')](handleEntityNotFound(_0x155e43,null))[_0x7294('0x27')](function(_0x5ca5d3){if(_0x5ca5d3){_0x2f8079=_0x5ca5d3;_0x3b8ede[_0x7294('0x2d')]=_[_0x7294('0x43')](db['DeskField']['rawAttributes']);_0x3b8ede[_0x7294('0x2e')]=_[_0x7294('0x43')](_0x361693[_0x7294('0x2e')]);_0x3b8ede[_0x7294('0x2f')]=_[_0x7294('0x30')](_0x3b8ede[_0x7294('0x2d')],_0x3b8ede[_0x7294('0x2e')]);_0x162ac4[_0x7294('0x31')]=_[_0x7294('0x30')](_0x3b8ede[_0x7294('0x2d')],qs[_0x7294('0x32')](_0x361693['query']['fields']));_0x162ac4[_0x7294('0x31')]=_0x162ac4[_0x7294('0x31')][_0x7294('0x44')]?_0x162ac4[_0x7294('0x31')]:_0x3b8ede[_0x7294('0x2d')];_0x162ac4[_0x7294('0x35')]=qs[_0x7294('0x36')](_0x361693[_0x7294('0x2e')][_0x7294('0x36')]);_0x162ac4[_0x7294('0x37')]=qs['filters'](_['pick'](_0x361693[_0x7294('0x2e')],_0x3b8ede['filters']));if(_0x361693[_0x7294('0x2e')][_0x7294('0x39')]){_0x162ac4[_0x7294('0x37')]=_[_0x7294('0x4d')](_0x162ac4[_0x7294('0x37')],{'$or':_[_0x7294('0x3a')](_0x162ac4[_0x7294('0x31')],function(_0x5d914f){var _0x58c2d3={};_0x58c2d3[_0x5d914f]={'$like':'%'+_0x361693[_0x7294('0x2e')]['filter']+'%'};return _0x58c2d3;})});}_0x162ac4=_['merge']({},_0x162ac4,_0x361693[_0x7294('0x45')]);return _0x2f8079[_0x7294('0x4e')](_0x162ac4);}})[_0x7294('0x27')](function(_0x14dbe3){if(_0x14dbe3){_0x17d7e3=_0x14dbe3['length'];if(!_0x361693[_0x7294('0x2e')][_0x7294('0x33')](_0x7294('0x34'))){_0x162ac4[_0x7294('0x20')]=qs[_0x7294('0x20')](_0x361693[_0x7294('0x2e')][_0x7294('0x20')]);_0x162ac4['offset']=qs[_0x7294('0x1f')](_0x361693[_0x7294('0x2e')]['offset']);}return _0x2f8079['getSubjects'](_0x162ac4);}})[_0x7294('0x27')](function(_0x374e0e){if(_0x374e0e){return _0x374e0e?{'count':_0x17d7e3,'rows':_0x374e0e}:null;}})[_0x7294('0x27')](respondWithResult(_0x155e43,null))[_0x7294('0x41')](handleError(_0x155e43,null));};exports[_0x7294('0x4f')]=function(_0x20b6cb,_0x113791,_0x5aa843){var _0x4f64be={};var _0x52da84={};var _0x2ec453;var _0x29a86a;return db[_0x7294('0x3c')][_0x7294('0x4b')]({'where':{'id':_0x20b6cb[_0x7294('0x49')]['id']}})['then'](handleEntityNotFound(_0x113791,null))[_0x7294('0x27')](function(_0x22d87a){if(_0x22d87a){_0x2ec453=_0x22d87a;_0x52da84[_0x7294('0x2d')]=_[_0x7294('0x43')](db['DeskField']['rawAttributes']);_0x52da84[_0x7294('0x2e')]=_[_0x7294('0x43')](_0x20b6cb[_0x7294('0x2e')]);_0x52da84[_0x7294('0x2f')]=_[_0x7294('0x30')](_0x52da84[_0x7294('0x2d')],_0x52da84[_0x7294('0x2e')]);_0x4f64be[_0x7294('0x31')]=_['intersection'](_0x52da84[_0x7294('0x2d')],qs[_0x7294('0x32')](_0x20b6cb[_0x7294('0x2e')][_0x7294('0x32')]));_0x4f64be[_0x7294('0x31')]=_0x4f64be['attributes'][_0x7294('0x44')]?_0x4f64be[_0x7294('0x31')]:_0x52da84[_0x7294('0x2d')];_0x4f64be[_0x7294('0x35')]=qs[_0x7294('0x36')](_0x20b6cb[_0x7294('0x2e')]['sort']);_0x4f64be['where']=qs[_0x7294('0x2f')](_['pick'](_0x20b6cb[_0x7294('0x2e')],_0x52da84['filters']));if(_0x20b6cb[_0x7294('0x2e')]['filter']){_0x4f64be[_0x7294('0x37')]=_['merge'](_0x4f64be[_0x7294('0x37')],{'$or':_[_0x7294('0x3a')](_0x4f64be[_0x7294('0x31')],function(_0x18b699){var _0x5ef543={};_0x5ef543[_0x18b699]={'$like':'%'+_0x20b6cb['query']['filter']+'%'};return _0x5ef543;})});}_0x4f64be=_[_0x7294('0x4d')]({},_0x4f64be,_0x20b6cb[_0x7294('0x45')]);return _0x2ec453['getDescriptions'](_0x4f64be);}})['then'](function(_0x339116){if(_0x339116){_0x29a86a=_0x339116['length'];if(!_0x20b6cb[_0x7294('0x2e')][_0x7294('0x33')](_0x7294('0x34'))){_0x4f64be[_0x7294('0x20')]=qs[_0x7294('0x20')](_0x20b6cb[_0x7294('0x2e')][_0x7294('0x20')]);_0x4f64be['offset']=qs['offset'](_0x20b6cb[_0x7294('0x2e')][_0x7294('0x1f')]);}return _0x2ec453[_0x7294('0x4f')](_0x4f64be);}})[_0x7294('0x27')](function(_0x27f423){if(_0x27f423){return _0x27f423?{'count':_0x29a86a,'rows':_0x27f423}:null;}})[_0x7294('0x27')](respondWithResult(_0x113791,null))[_0x7294('0x41')](handleError(_0x113791,null));};exports[_0x7294('0x50')]=function(_0x5a0853,_0x2d23be,_0x187071){var _0x4331b1={};var _0x58439b={};var _0x4b52f9;var _0x3a5947;return db[_0x7294('0x3c')]['findOne']({'where':{'id':_0x5a0853[_0x7294('0x49')]['id']}})[_0x7294('0x27')](handleEntityNotFound(_0x2d23be,null))[_0x7294('0x27')](function(_0x3f81b0){if(_0x3f81b0){_0x4b52f9=_0x3f81b0;_0x58439b['model']=_['keys'](db[_0x7294('0x51')]['rawAttributes']);_0x58439b[_0x7294('0x2e')]=_[_0x7294('0x43')](_0x5a0853[_0x7294('0x2e')]);_0x58439b[_0x7294('0x2f')]=_[_0x7294('0x30')](_0x58439b[_0x7294('0x2d')],_0x58439b[_0x7294('0x2e')]);_0x4331b1['attributes']=_[_0x7294('0x30')](_0x58439b['model'],qs['fields'](_0x5a0853[_0x7294('0x2e')][_0x7294('0x32')]));_0x4331b1[_0x7294('0x31')]=_0x4331b1[_0x7294('0x31')]['length']?_0x4331b1[_0x7294('0x31')]:_0x58439b[_0x7294('0x2d')];_0x4331b1[_0x7294('0x35')]=qs[_0x7294('0x36')](_0x5a0853[_0x7294('0x2e')][_0x7294('0x36')]);_0x4331b1['where']=qs[_0x7294('0x2f')](_[_0x7294('0x38')](_0x5a0853['query'],_0x58439b['filters']));if(_0x5a0853['query'][_0x7294('0x39')]){_0x4331b1[_0x7294('0x37')]=_[_0x7294('0x4d')](_0x4331b1[_0x7294('0x37')],{'$or':_['map'](_0x4331b1[_0x7294('0x31')],function(_0x4dbd48){var _0x5e7abe={};_0x5e7abe[_0x4dbd48]={'$like':'%'+_0x5a0853[_0x7294('0x2e')][_0x7294('0x39')]+'%'};return _0x5e7abe;})});}_0x4331b1=_[_0x7294('0x4d')]({},_0x4331b1,_0x5a0853['options']);return _0x4b52f9[_0x7294('0x50')](_0x4331b1);}})[_0x7294('0x27')](function(_0x22c694){if(_0x22c694){_0x3a5947=_0x22c694[_0x7294('0x44')];if(!_0x5a0853['query'][_0x7294('0x33')]('nolimit')){_0x4331b1['limit']=qs[_0x7294('0x20')](_0x5a0853[_0x7294('0x2e')][_0x7294('0x20')]);_0x4331b1[_0x7294('0x1f')]=qs[_0x7294('0x1f')](_0x5a0853[_0x7294('0x2e')][_0x7294('0x1f')]);}return _0x4b52f9['getTags'](_0x4331b1);}})[_0x7294('0x27')](function(_0x8c2e69){if(_0x8c2e69){return _0x8c2e69?{'count':_0x3a5947,'rows':_0x8c2e69}:null;}})['then'](respondWithResult(_0x2d23be,null))[_0x7294('0x41')](handleError(_0x2d23be,null));};exports['setTags']=function(_0x37b92d,_0xa18b3f,_0x82254f){if(_0x37b92d[_0x7294('0x48')]['id']){delete _0x37b92d['body']['id'];}return db[_0x7294('0x3c')][_0x7294('0x4b')]({'where':{'id':_0x37b92d[_0x7294('0x49')]['id']}})['then'](handleEntityNotFound(_0xa18b3f,null))[_0x7294('0x27')](function(_0x2a668c){if(_0x2a668c){return _0x2a668c['setTags'](_0x37b92d[_0x7294('0x48')]['ids']||[]);}return null;})[_0x7294('0x27')](respondWithResult(_0xa18b3f,null))[_0x7294('0x41')](handleError(_0xa18b3f,null));};
\ No newline at end of file
index fa8a074..5fc9344 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6224=['DeskConfiguration','lodash','util','api','moment','request-promise','rimraf','../../config/environment','./intDeskConfiguration.attributes','exports'];(function(_0x257518,_0x1f9f86){var _0x3cf771=function(_0x2cbcf7){while(--_0x2cbcf7){_0x257518['push'](_0x257518['shift']());}};_0x3cf771(++_0x1f9f86);}(_0x6224,0xd3));var _0x4622=function(_0x139a3c,_0x4fc883){_0x139a3c=_0x139a3c-0x0;var _0x2b375b=_0x6224[_0x139a3c];return _0x2b375b;};'use strict';var _=require(_0x4622('0x0'));var util=require(_0x4622('0x1'));var logger=require('../../config/logger')(_0x4622('0x2'));var moment=require(_0x4622('0x3'));var BPromise=require('bluebird');var rp=require(_0x4622('0x4'));var fs=require('fs');var path=require('path');var rimraf=require(_0x4622('0x5'));var config=require(_0x4622('0x6'));var attributes=require(_0x4622('0x7'));module[_0x4622('0x8')]=function(_0xc2f706,_0x4fa855){return _0xc2f706['define'](_0x4622('0x9'),attributes,{'tableName':'int_desk_configurations','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xe64f=['../../config/logger','api','request-promise','path','rimraf','./intDeskConfiguration.attributes','define','int_desk_configurations','lodash','util'];(function(_0x5335ea,_0x2a612d){var _0x40a7da=function(_0x28023c){while(--_0x28023c){_0x5335ea['push'](_0x5335ea['shift']());}};_0x40a7da(++_0x2a612d);}(_0xe64f,0x102));var _0xfe64=function(_0x669662,_0x27e510){_0x669662=_0x669662-0x0;var _0x352db5=_0xe64f[_0x669662];return _0x352db5;};'use strict';var _=require(_0xfe64('0x0'));var util=require(_0xfe64('0x1'));var logger=require(_0xfe64('0x2'))(_0xfe64('0x3'));var moment=require('moment');var BPromise=require('bluebird');var rp=require(_0xfe64('0x4'));var fs=require('fs');var path=require(_0xfe64('0x5'));var rimraf=require(_0xfe64('0x6'));var config=require('../../config/environment');var attributes=require(_0xfe64('0x7'));module['exports']=function(_0x515cf9,_0x574e2a){return _0x515cf9[_0xfe64('0x8')]('DeskConfiguration',attributes,{'tableName':_0xfe64('0x9'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index dc828ee..2b0d7c4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xcd30=['DeskConfiguration,\x20%s,\x20%s','message','result','catch','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/logger','rpc','../../config/environment','client','request','info','request\x20sent','DeskConfiguration,\x20%s,\x20%s,\x20%s','stringify','error','code'];(function(_0x18a01c,_0xd1a13a){var _0x2b0cd6=function(_0x563571){while(--_0x563571){_0x18a01c['push'](_0x18a01c['shift']());}};_0x2b0cd6(++_0xd1a13a);}(_0xcd30,0x1e8));var _0x0cd3=function(_0x298b27,_0x47ab26){_0x298b27=_0x298b27-0x0;var _0x2074bb=_0xcd30[_0x298b27];return _0x2074bb;};'use strict';var _=require(_0x0cd3('0x0'));var util=require(_0x0cd3('0x1'));var moment=require(_0x0cd3('0x2'));var BPromise=require(_0x0cd3('0x3'));var rs=require(_0x0cd3('0x4'));var fs=require('fs');var Redis=require(_0x0cd3('0x5'));var db=require(_0x0cd3('0x6'))['db'];var utils=require('../../config/utils');var logger=require(_0x0cd3('0x7'))(_0x0cd3('0x8'));var config=require(_0x0cd3('0x9'));var jayson=require('jayson/promise');var client=jayson[_0x0cd3('0xa')]['http']({'port':0x232a});function respondWithRpcPromise(_0xe1ece5,_0x5442ec,_0x15ff66){return new BPromise(function(_0x18d6f3,_0x111edb){return client[_0x0cd3('0xb')](_0xe1ece5,_0x15ff66)['then'](function(_0x1716b1){logger[_0x0cd3('0xc')]('DeskConfiguration,\x20%s,\x20%s',_0x5442ec,_0x0cd3('0xd'));logger['debug'](_0x0cd3('0xe'),_0x5442ec,_0x0cd3('0xd'),JSON[_0x0cd3('0xf')](_0x1716b1));if(_0x1716b1[_0x0cd3('0x10')]){if(_0x1716b1[_0x0cd3('0x10')][_0x0cd3('0x11')]===0x1f4){logger[_0x0cd3('0x10')](_0x0cd3('0x12'),_0x5442ec,_0x1716b1[_0x0cd3('0x10')][_0x0cd3('0x13')]);return _0x111edb(_0x1716b1[_0x0cd3('0x10')][_0x0cd3('0x13')]);}logger[_0x0cd3('0x10')](_0x0cd3('0x12'),_0x5442ec,_0x1716b1[_0x0cd3('0x10')][_0x0cd3('0x13')]);return _0x18d6f3(_0x1716b1['error'][_0x0cd3('0x13')]);}else{logger[_0x0cd3('0xc')]('DeskConfiguration,\x20%s,\x20%s',_0x5442ec,_0x0cd3('0xd'));_0x18d6f3(_0x1716b1[_0x0cd3('0x14')][_0x0cd3('0x13')]);}})[_0x0cd3('0x15')](function(_0x2e6f84){logger[_0x0cd3('0x10')](_0x0cd3('0x12'),_0x5442ec,_0x2e6f84);_0x111edb(_0x2e6f84);});});}
\ No newline at end of file
+var _0x6e9b=['DeskConfiguration,\x20%s,\x20%s','message','result','catch','lodash','util','moment','bluebird','randomstring','../../mysqldb','../../config/utils','../../config/logger','../../config/environment','jayson/promise','client','http','request','then','info','request\x20sent','stringify','error','code'];(function(_0x2ade6c,_0x2d42f2){var _0x2cb372=function(_0x477d8a){while(--_0x477d8a){_0x2ade6c['push'](_0x2ade6c['shift']());}};_0x2cb372(++_0x2d42f2);}(_0x6e9b,0xea));var _0xb6e9=function(_0x3b0f99,_0x2e58a0){_0x3b0f99=_0x3b0f99-0x0;var _0x49793e=_0x6e9b[_0x3b0f99];return _0x49793e;};'use strict';var _=require(_0xb6e9('0x0'));var util=require(_0xb6e9('0x1'));var moment=require(_0xb6e9('0x2'));var BPromise=require(_0xb6e9('0x3'));var rs=require(_0xb6e9('0x4'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0xb6e9('0x5'))['db'];var utils=require(_0xb6e9('0x6'));var logger=require(_0xb6e9('0x7'))('rpc');var config=require(_0xb6e9('0x8'));var jayson=require(_0xb6e9('0x9'));var client=jayson[_0xb6e9('0xa')][_0xb6e9('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x45f9f0,_0x122191,_0x174772){return new BPromise(function(_0x5967ba,_0x20ba2a){return client[_0xb6e9('0xc')](_0x45f9f0,_0x174772)[_0xb6e9('0xd')](function(_0x2b68b2){logger[_0xb6e9('0xe')]('DeskConfiguration,\x20%s,\x20%s',_0x122191,_0xb6e9('0xf'));logger['debug']('DeskConfiguration,\x20%s,\x20%s,\x20%s',_0x122191,'request\x20sent',JSON[_0xb6e9('0x10')](_0x2b68b2));if(_0x2b68b2[_0xb6e9('0x11')]){if(_0x2b68b2['error'][_0xb6e9('0x12')]===0x1f4){logger['error'](_0xb6e9('0x13'),_0x122191,_0x2b68b2[_0xb6e9('0x11')][_0xb6e9('0x14')]);return _0x20ba2a(_0x2b68b2[_0xb6e9('0x11')]['message']);}logger[_0xb6e9('0x11')]('DeskConfiguration,\x20%s,\x20%s',_0x122191,_0x2b68b2[_0xb6e9('0x11')][_0xb6e9('0x14')]);return _0x5967ba(_0x2b68b2[_0xb6e9('0x11')][_0xb6e9('0x14')]);}else{logger[_0xb6e9('0xe')](_0xb6e9('0x13'),_0x122191,_0xb6e9('0xf'));_0x5967ba(_0x2b68b2[_0xb6e9('0x15')][_0xb6e9('0x14')]);}})[_0xb6e9('0x16')](function(_0x3e6a34){logger[_0xb6e9('0x11')](_0xb6e9('0x13'),_0x122191,_0x3e6a34);_0x20ba2a(_0x3e6a34);});});}
\ No newline at end of file
index e5c943a..739d56e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc41b=['isAuthenticated','index','get','/:id','show','post','update','delete','destroy','exports','util','path','connect-timeout','Router','fs-extra','../../config/environment'];(function(_0x3b711c,_0x4b22dc){var _0x2685f0=function(_0x3b5ba6){while(--_0x3b5ba6){_0x3b711c['push'](_0x3b711c['shift']());}};_0x2685f0(++_0x4b22dc);}(_0xc41b,0x9a));var _0xbc41=function(_0x59ee6f,_0x450239){_0x59ee6f=_0x59ee6f-0x0;var _0x4c0979=_0xc41b[_0x59ee6f];return _0x4c0979;};'use strict';var multer=require('multer');var util=require(_0xbc41('0x0'));var path=require(_0xbc41('0x1'));var timeout=require(_0xbc41('0x2'));var express=require('express');var router=express[_0xbc41('0x3')]();var fs_extra=require(_0xbc41('0x4'));var auth=require('../../components/auth/service');var interaction=require('../../components/interaction/service');var config=require(_0xbc41('0x5'));var controller=require('./intDeskField.controller');router['get']('/',auth[_0xbc41('0x6')](),controller[_0xbc41('0x7')]);router[_0xbc41('0x8')](_0xbc41('0x9'),auth[_0xbc41('0x6')](),controller[_0xbc41('0xa')]);router[_0xbc41('0xb')]('/',auth[_0xbc41('0x6')](),controller['create']);router['put'](_0xbc41('0x9'),auth['isAuthenticated'](),controller[_0xbc41('0xc')]);router[_0xbc41('0xd')](_0xbc41('0x9'),auth['isAuthenticated'](),controller[_0xbc41('0xe')]);module[_0xbc41('0xf')]=router;
\ No newline at end of file
+var _0xdfa4=['./intDeskField.controller','get','isAuthenticated','index','/:id','show','create','put','update','multer','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment'];(function(_0x5be795,_0x1cb1b8){var _0x4e8a3b=function(_0x5584ef){while(--_0x5584ef){_0x5be795['push'](_0x5be795['shift']());}};_0x4e8a3b(++_0x1cb1b8);}(_0xdfa4,0x190));var _0x4dfa=function(_0x1400ba,_0x272b1e){_0x1400ba=_0x1400ba-0x0;var _0x2f25d3=_0xdfa4[_0x1400ba];return _0x2f25d3;};'use strict';var multer=require(_0x4dfa('0x0'));var util=require('util');var path=require('path');var timeout=require(_0x4dfa('0x1'));var express=require(_0x4dfa('0x2'));var router=express[_0x4dfa('0x3')]();var fs_extra=require(_0x4dfa('0x4'));var auth=require(_0x4dfa('0x5'));var interaction=require(_0x4dfa('0x6'));var config=require(_0x4dfa('0x7'));var controller=require(_0x4dfa('0x8'));router[_0x4dfa('0x9')]('/',auth[_0x4dfa('0xa')](),controller[_0x4dfa('0xb')]);router[_0x4dfa('0x9')](_0x4dfa('0xc'),auth[_0x4dfa('0xa')](),controller[_0x4dfa('0xd')]);router['post']('/',auth[_0x4dfa('0xa')](),controller[_0x4dfa('0xe')]);router[_0x4dfa('0xf')]('/:id',auth['isAuthenticated'](),controller[_0x4dfa('0x10')]);router['delete'](_0x4dfa('0xc'),auth['isAuthenticated'](),controller['destroy']);module['exports']=router;
\ No newline at end of file
index 44cbfb9..facf25c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1e02=['customVariable','sequelize','ENUM','string','variable','picklist','STRING'];(function(_0x2f5b27,_0x423ec8){var _0x535af5=function(_0x1e8c96){while(--_0x1e8c96){_0x2f5b27['push'](_0x2f5b27['shift']());}};_0x535af5(++_0x423ec8);}(_0x1e02,0x1eb));var _0x21e0=function(_0x374029,_0x5b9ff6){_0x374029=_0x374029-0x0;var _0x244545=_0x1e02[_0x374029];return _0x244545;};'use strict';var Sequelize=require(_0x21e0('0x0'));module['exports']={'type':{'type':Sequelize[_0x21e0('0x1')](_0x21e0('0x2'),_0x21e0('0x3'),'customVariable','keyValue',_0x21e0('0x4')),'defaultValue':_0x21e0('0x2')},'content':{'type':Sequelize[_0x21e0('0x5')]},'key':{'type':Sequelize['STRING']},'keyType':{'type':Sequelize[_0x21e0('0x1')](_0x21e0('0x2'),_0x21e0('0x3'),_0x21e0('0x6'))},'keyContent':{'type':Sequelize[_0x21e0('0x5')]},'idField':{'type':Sequelize[_0x21e0('0x5')]},'nameField':{'type':Sequelize['STRING']},'customField':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]},'variableName':{'type':Sequelize[_0x21e0('0x5')]}};
\ No newline at end of file
+var _0xccf9=['BOOLEAN','exports','ENUM','string','customVariable','keyValue','picklist','STRING'];(function(_0x4fa2b5,_0x48fa09){var _0x33342b=function(_0x4ca19a){while(--_0x4ca19a){_0x4fa2b5['push'](_0x4fa2b5['shift']());}};_0x33342b(++_0x48fa09);}(_0xccf9,0x121));var _0x9ccf=function(_0x2100b8,_0x205963){_0x2100b8=_0x2100b8-0x0;var _0x4f2732=_0xccf9[_0x2100b8];return _0x4f2732;};'use strict';var Sequelize=require('sequelize');module[_0x9ccf('0x0')]={'type':{'type':Sequelize[_0x9ccf('0x1')](_0x9ccf('0x2'),'variable',_0x9ccf('0x3'),_0x9ccf('0x4'),_0x9ccf('0x5')),'defaultValue':'string'},'content':{'type':Sequelize[_0x9ccf('0x6')]},'key':{'type':Sequelize[_0x9ccf('0x6')]},'keyType':{'type':Sequelize[_0x9ccf('0x1')](_0x9ccf('0x2'),'variable',_0x9ccf('0x3'))},'keyContent':{'type':Sequelize[_0x9ccf('0x6')]},'idField':{'type':Sequelize[_0x9ccf('0x6')]},'nameField':{'type':Sequelize[_0x9ccf('0x6')]},'customField':{'type':Sequelize[_0x9ccf('0x7')],'defaultValue':!![]},'variableName':{'type':Sequelize[_0x9ccf('0x6')]}};
\ No newline at end of file
index 506d81e..d049c8b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd9c8=['find','create','body','eml-format','rimraf','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','fs-extra','lodash','squel','jsforce','desk.js','to-csv','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../config/license/hardware','api','../../config/environment','sendStatus','status','end','json','offset','undefined','limit','count','Content-Range','reject','update','then','destroy','name','send','index','DeskField','rawAttributes','type','key','model','map','query','filters','intersection','fields','attributes','length','hasOwnProperty','nolimit','order','sort','where','pick','merge','filter','options','includeAll','catch','show','params','keys','include'];(function(_0x4e55a9,_0x241b22){var _0x4a9b67=function(_0x2a3bd1){while(--_0x2a3bd1){_0x4e55a9['push'](_0x4e55a9['shift']());}};_0x4a9b67(++_0x241b22);}(_0xd9c8,0x15c));var _0x8d9c=function(_0x40220a,_0x22feb1){_0x40220a=_0x40220a-0x0;var _0x3903cc=_0xd9c8[_0x40220a];return _0x3903cc;};'use strict';var emlformat=require(_0x8d9c('0x0'));var rimraf=require(_0x8d9c('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0x8d9c('0x2'));var rp=require(_0x8d9c('0x3'));var moment=require(_0x8d9c('0x4'));var BPromise=require(_0x8d9c('0x5'));var Mustache=require(_0x8d9c('0x6'));var util=require(_0x8d9c('0x7'));var path=require(_0x8d9c('0x8'));var sox=require('sox');var csv=require('to-csv');var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x8d9c('0x9'));var _=require(_0x8d9c('0xa'));var squel=require(_0x8d9c('0xb'));var crypto=require('crypto');var jsforce=require(_0x8d9c('0xc'));var deskjs=require(_0x8d9c('0xd'));var toCsv=require(_0x8d9c('0xe'));var querystring=require(_0x8d9c('0xf'));var Papa=require(_0x8d9c('0x10'));var Redis=require(_0x8d9c('0x11'));var authService=require(_0x8d9c('0x12'));var qs=require(_0x8d9c('0x13'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x8d9c('0x14'));var logger=require('../../config/logger')(_0x8d9c('0x15'));var utils=require('../../config/utils');var config=require(_0x8d9c('0x16'));var licenseUtil=require('../../config/license/util');var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x3b24df,_0x508e92){_0x508e92=_0x508e92||0xcc;return function(_0x3b7475){if(_0x3b7475){return _0x3b24df[_0x8d9c('0x17')](_0x508e92);}return _0x3b24df[_0x8d9c('0x18')](_0x508e92)[_0x8d9c('0x19')]();};}function respondWithResult(_0x133818,_0x28060e){_0x28060e=_0x28060e||0xc8;return function(_0x1110f9){if(_0x1110f9){return _0x133818[_0x8d9c('0x18')](_0x28060e)[_0x8d9c('0x1a')](_0x1110f9);}};}function respondWithFilteredResult(_0xea045b,_0x54fae5){return function(_0x39df23){if(_0x39df23){var _0x38ea38=typeof _0x54fae5[_0x8d9c('0x1b')]===_0x8d9c('0x1c')&&typeof _0x54fae5[_0x8d9c('0x1d')]===_0x8d9c('0x1c');var _0x304de9=_0x39df23[_0x8d9c('0x1e')];var _0x1ed27d=_0x38ea38?0x0:_0x54fae5[_0x8d9c('0x1b')];var _0x48fffd=_0x38ea38?_0x39df23[_0x8d9c('0x1e')]:_0x54fae5[_0x8d9c('0x1b')]+_0x54fae5['limit'];var _0x429dcf;if(_0x48fffd>=_0x304de9){_0x48fffd=_0x304de9;_0x429dcf=0xc8;}else{_0x429dcf=0xce;}_0xea045b[_0x8d9c('0x18')](_0x429dcf);return _0xea045b['set'](_0x8d9c('0x1f'),_0x1ed27d+'-'+_0x48fffd+'/'+_0x304de9)[_0x8d9c('0x1a')](_0x39df23);}return null;};}function patchUpdates(_0xa8391d){return function(_0x3531cb){try{jsonpatch['apply'](_0x3531cb,_0xa8391d,!![]);}catch(_0x4467b0){return BPromise[_0x8d9c('0x20')](_0x4467b0);}return _0x3531cb['save']();};}function saveUpdates(_0x49cca5,_0x13de89){return function(_0x2d2bf7){if(_0x2d2bf7){return _0x2d2bf7[_0x8d9c('0x21')](_0x49cca5)[_0x8d9c('0x22')](function(_0x38a32b){return _0x38a32b;});}return null;};}function removeEntity(_0x3fe4f1,_0x14dd83){return function(_0x47ae95){if(_0x47ae95){return _0x47ae95[_0x8d9c('0x23')]()['then'](function(){_0x3fe4f1[_0x8d9c('0x18')](0xcc)[_0x8d9c('0x19')]();});}};}function handleEntityNotFound(_0x416a80,_0x454bdb){return function(_0x171c96){if(!_0x171c96){_0x416a80[_0x8d9c('0x17')](0x194);}return _0x171c96;};}function handleError(_0x255439,_0x4e46c3){_0x4e46c3=_0x4e46c3||0x1f4;return function(_0x57be56){logger['error'](_0x57be56['stack']);if(_0x57be56['name']){delete _0x57be56[_0x8d9c('0x24')];}_0x255439[_0x8d9c('0x18')](_0x4e46c3)[_0x8d9c('0x25')](_0x57be56);};}exports[_0x8d9c('0x26')]=function(_0x5cb119,_0x2ec1bc){var _0x259104={},_0x59e24b={},_0x5548a7={'count':0x0,'rows':[]};var _0x3f2b44=_['map'](db[_0x8d9c('0x27')][_0x8d9c('0x28')],function(_0x140b94){return{'name':_0x140b94['fieldName'],'type':_0x140b94[_0x8d9c('0x29')][_0x8d9c('0x2a')]};});_0x59e24b[_0x8d9c('0x2b')]=_[_0x8d9c('0x2c')](_0x3f2b44,_0x8d9c('0x24'));_0x59e24b[_0x8d9c('0x2d')]=_['keys'](_0x5cb119['query']);_0x59e24b[_0x8d9c('0x2e')]=_['intersection'](_0x59e24b[_0x8d9c('0x2b')],_0x59e24b[_0x8d9c('0x2d')]);_0x259104['attributes']=_[_0x8d9c('0x2f')](_0x59e24b[_0x8d9c('0x2b')],qs[_0x8d9c('0x30')](_0x5cb119[_0x8d9c('0x2d')][_0x8d9c('0x30')]));_0x259104[_0x8d9c('0x31')]=_0x259104[_0x8d9c('0x31')][_0x8d9c('0x32')]?_0x259104[_0x8d9c('0x31')]:_0x59e24b[_0x8d9c('0x2b')];if(!_0x5cb119[_0x8d9c('0x2d')][_0x8d9c('0x33')](_0x8d9c('0x34'))){_0x259104['limit']=qs['limit'](_0x5cb119[_0x8d9c('0x2d')][_0x8d9c('0x1d')]);_0x259104[_0x8d9c('0x1b')]=qs['offset'](_0x5cb119[_0x8d9c('0x2d')][_0x8d9c('0x1b')]);}_0x259104[_0x8d9c('0x35')]=qs[_0x8d9c('0x36')](_0x5cb119[_0x8d9c('0x2d')][_0x8d9c('0x36')]);_0x259104[_0x8d9c('0x37')]=qs['filters'](_[_0x8d9c('0x38')](_0x5cb119['query'],_0x59e24b[_0x8d9c('0x2e')]),_0x3f2b44);if(_0x5cb119['query']['filter']){_0x259104[_0x8d9c('0x37')]=_[_0x8d9c('0x39')](_0x259104[_0x8d9c('0x37')],{'$or':_[_0x8d9c('0x2c')](_0x3f2b44,function(_0x1ed1e5){if(_0x1ed1e5['type']!=='VIRTUAL'){var _0x1ea8ce={};_0x1ea8ce[_0x1ed1e5[_0x8d9c('0x24')]]={'$like':'%'+_0x5cb119[_0x8d9c('0x2d')][_0x8d9c('0x3a')]+'%'};return _0x1ea8ce;}})});}_0x259104=_[_0x8d9c('0x39')]({},_0x259104,_0x5cb119[_0x8d9c('0x3b')]);var _0x175953={'where':_0x259104[_0x8d9c('0x37')]};return db['DeskField'][_0x8d9c('0x1e')](_0x175953)['then'](function(_0x5a0114){_0x5548a7[_0x8d9c('0x1e')]=_0x5a0114;if(_0x5cb119[_0x8d9c('0x2d')][_0x8d9c('0x3c')]){_0x259104['include']=[{'all':!![]}];}return db[_0x8d9c('0x27')]['findAll'](_0x259104);})[_0x8d9c('0x22')](function(_0x510330){_0x5548a7['rows']=_0x510330;return _0x5548a7;})[_0x8d9c('0x22')](respondWithFilteredResult(_0x2ec1bc,_0x259104))[_0x8d9c('0x3d')](handleError(_0x2ec1bc,null));};exports[_0x8d9c('0x3e')]=function(_0x57b4fe,_0x7a8ff0){var _0x10c450={'raw':!![],'where':{'id':_0x57b4fe[_0x8d9c('0x3f')]['id']}},_0x1317a3={};_0x1317a3[_0x8d9c('0x2b')]=_[_0x8d9c('0x40')](db[_0x8d9c('0x27')][_0x8d9c('0x28')]);_0x1317a3[_0x8d9c('0x2d')]=_[_0x8d9c('0x40')](_0x57b4fe['query']);_0x1317a3[_0x8d9c('0x2e')]=_[_0x8d9c('0x2f')](_0x1317a3['model'],_0x1317a3[_0x8d9c('0x2d')]);_0x10c450[_0x8d9c('0x31')]=_[_0x8d9c('0x2f')](_0x1317a3['model'],qs[_0x8d9c('0x30')](_0x57b4fe['query'][_0x8d9c('0x30')]));_0x10c450[_0x8d9c('0x31')]=_0x10c450[_0x8d9c('0x31')][_0x8d9c('0x32')]?_0x10c450['attributes']:_0x1317a3[_0x8d9c('0x2b')];if(_0x57b4fe['query'][_0x8d9c('0x3c')]){_0x10c450[_0x8d9c('0x41')]=[{'all':!![]}];}_0x10c450=_[_0x8d9c('0x39')]({},_0x10c450,_0x57b4fe[_0x8d9c('0x3b')]);return db[_0x8d9c('0x27')][_0x8d9c('0x42')](_0x10c450)[_0x8d9c('0x22')](handleEntityNotFound(_0x7a8ff0,null))['then'](respondWithResult(_0x7a8ff0,null))[_0x8d9c('0x3d')](handleError(_0x7a8ff0,null));};exports[_0x8d9c('0x43')]=function(_0xf317c0,_0x38cbdf){return db[_0x8d9c('0x27')][_0x8d9c('0x43')](_0xf317c0[_0x8d9c('0x44')],{})[_0x8d9c('0x22')](respondWithResult(_0x38cbdf,0xc9))['catch'](handleError(_0x38cbdf,null));};exports[_0x8d9c('0x21')]=function(_0x2bae1c,_0x258184){if(_0x2bae1c[_0x8d9c('0x44')]['id']){delete _0x2bae1c[_0x8d9c('0x44')]['id'];}return db[_0x8d9c('0x27')][_0x8d9c('0x42')]({'where':{'id':_0x2bae1c['params']['id']}})[_0x8d9c('0x22')](handleEntityNotFound(_0x258184,null))[_0x8d9c('0x22')](saveUpdates(_0x2bae1c[_0x8d9c('0x44')],null))['then'](respondWithResult(_0x258184,null))[_0x8d9c('0x3d')](handleError(_0x258184,null));};exports[_0x8d9c('0x23')]=function(_0x627d9,_0x128e82){return db[_0x8d9c('0x27')][_0x8d9c('0x42')]({'where':{'id':_0x627d9[_0x8d9c('0x3f')]['id']}})[_0x8d9c('0x22')](handleEntityNotFound(_0x128e82,null))[_0x8d9c('0x22')](removeEntity(_0x128e82,null))[_0x8d9c('0x3d')](handleError(_0x128e82,null));};
\ No newline at end of file
+var _0x53ec=['count','set','Content-Range','apply','reject','save','then','sendStatus','name','send','map','DeskField','rawAttributes','fieldName','key','model','query','filters','attributes','intersection','fields','length','hasOwnProperty','nolimit','sort','pick','filter','where','VIRTUAL','merge','options','includeAll','rows','show','params','include','find','catch','create','update','body','destroy','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','mustache','path','sox','ejs','lodash','squel','jsforce','desk.js','to-csv','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','api','../../config/license/util','../../mysqldb','status','end','json','offset','undefined','limit'];(function(_0x279d37,_0x14de3f){var _0x530173=function(_0x37fc79){while(--_0x37fc79){_0x279d37['push'](_0x279d37['shift']());}};_0x530173(++_0x14de3f);}(_0x53ec,0x192));var _0xc53e=function(_0x20237d,_0x506c3d){_0x20237d=_0x20237d-0x0;var _0x5a5b92=_0x53ec[_0x20237d];return _0x5a5b92;};'use strict';var emlformat=require(_0xc53e('0x0'));var rimraf=require(_0xc53e('0x1'));var zipdir=require(_0xc53e('0x2'));var jsonpatch=require(_0xc53e('0x3'));var rp=require(_0xc53e('0x4'));var moment=require(_0xc53e('0x5'));var BPromise=require('bluebird');var Mustache=require(_0xc53e('0x6'));var util=require('util');var path=require(_0xc53e('0x7'));var sox=require(_0xc53e('0x8'));var csv=require('to-csv');var ejs=require(_0xc53e('0x9'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0xc53e('0xa'));var squel=require(_0xc53e('0xb'));var crypto=require('crypto');var jsforce=require(_0xc53e('0xc'));var deskjs=require(_0xc53e('0xd'));var toCsv=require(_0xc53e('0xe'));var querystring=require(_0xc53e('0xf'));var Papa=require(_0xc53e('0x10'));var Redis=require(_0xc53e('0x11'));var authService=require(_0xc53e('0x12'));var qs=require(_0xc53e('0x13'));var as=require(_0xc53e('0x14'));var hardwareService=require('../../config/license/hardware');var logger=require('../../config/logger')(_0xc53e('0x15'));var utils=require('../../config/utils');var config=require('../../config/environment');var licenseUtil=require(_0xc53e('0x16'));var db=require(_0xc53e('0x17'))['db'];function respondWithStatusCode(_0x863fa,_0x4203aa){_0x4203aa=_0x4203aa||0xcc;return function(_0x56f0e5){if(_0x56f0e5){return _0x863fa['sendStatus'](_0x4203aa);}return _0x863fa[_0xc53e('0x18')](_0x4203aa)[_0xc53e('0x19')]();};}function respondWithResult(_0x7cd798,_0x3d2e17){_0x3d2e17=_0x3d2e17||0xc8;return function(_0x358ef3){if(_0x358ef3){return _0x7cd798[_0xc53e('0x18')](_0x3d2e17)[_0xc53e('0x1a')](_0x358ef3);}};}function respondWithFilteredResult(_0x19c0d1,_0x455e4d){return function(_0x2ad6eb){if(_0x2ad6eb){var _0x5b0a88=typeof _0x455e4d[_0xc53e('0x1b')]===_0xc53e('0x1c')&&typeof _0x455e4d[_0xc53e('0x1d')]===_0xc53e('0x1c');var _0x15333b=_0x2ad6eb[_0xc53e('0x1e')];var _0x164016=_0x5b0a88?0x0:_0x455e4d[_0xc53e('0x1b')];var _0x3b550e=_0x5b0a88?_0x2ad6eb['count']:_0x455e4d['offset']+_0x455e4d[_0xc53e('0x1d')];var _0x2a5bac;if(_0x3b550e>=_0x15333b){_0x3b550e=_0x15333b;_0x2a5bac=0xc8;}else{_0x2a5bac=0xce;}_0x19c0d1[_0xc53e('0x18')](_0x2a5bac);return _0x19c0d1[_0xc53e('0x1f')](_0xc53e('0x20'),_0x164016+'-'+_0x3b550e+'/'+_0x15333b)[_0xc53e('0x1a')](_0x2ad6eb);}return null;};}function patchUpdates(_0x15a015){return function(_0x25702b){try{jsonpatch[_0xc53e('0x21')](_0x25702b,_0x15a015,!![]);}catch(_0x401af6){return BPromise[_0xc53e('0x22')](_0x401af6);}return _0x25702b[_0xc53e('0x23')]();};}function saveUpdates(_0x426467,_0x4fb695){return function(_0x47cfdd){if(_0x47cfdd){return _0x47cfdd['update'](_0x426467)[_0xc53e('0x24')](function(_0x384218){return _0x384218;});}return null;};}function removeEntity(_0x7591c1,_0x4015c8){return function(_0x180811){if(_0x180811){return _0x180811['destroy']()['then'](function(){_0x7591c1[_0xc53e('0x18')](0xcc)['end']();});}};}function handleEntityNotFound(_0x1ae55e,_0x3a5ce8){return function(_0x443179){if(!_0x443179){_0x1ae55e[_0xc53e('0x25')](0x194);}return _0x443179;};}function handleError(_0x63c5dc,_0x4df8cf){_0x4df8cf=_0x4df8cf||0x1f4;return function(_0x398e7a){logger['error'](_0x398e7a['stack']);if(_0x398e7a['name']){delete _0x398e7a[_0xc53e('0x26')];}_0x63c5dc['status'](_0x4df8cf)[_0xc53e('0x27')](_0x398e7a);};}exports['index']=function(_0x24a77e,_0x5112d2){var _0x5ce216={},_0x8f0ee6={},_0x6a62b0={'count':0x0,'rows':[]};var _0x42dec1=_[_0xc53e('0x28')](db[_0xc53e('0x29')][_0xc53e('0x2a')],function(_0x3280fe){return{'name':_0x3280fe[_0xc53e('0x2b')],'type':_0x3280fe['type'][_0xc53e('0x2c')]};});_0x8f0ee6[_0xc53e('0x2d')]=_[_0xc53e('0x28')](_0x42dec1,'name');_0x8f0ee6[_0xc53e('0x2e')]=_['keys'](_0x24a77e[_0xc53e('0x2e')]);_0x8f0ee6[_0xc53e('0x2f')]=_['intersection'](_0x8f0ee6['model'],_0x8f0ee6[_0xc53e('0x2e')]);_0x5ce216[_0xc53e('0x30')]=_[_0xc53e('0x31')](_0x8f0ee6[_0xc53e('0x2d')],qs[_0xc53e('0x32')](_0x24a77e[_0xc53e('0x2e')][_0xc53e('0x32')]));_0x5ce216[_0xc53e('0x30')]=_0x5ce216['attributes'][_0xc53e('0x33')]?_0x5ce216[_0xc53e('0x30')]:_0x8f0ee6[_0xc53e('0x2d')];if(!_0x24a77e[_0xc53e('0x2e')][_0xc53e('0x34')](_0xc53e('0x35'))){_0x5ce216[_0xc53e('0x1d')]=qs[_0xc53e('0x1d')](_0x24a77e[_0xc53e('0x2e')]['limit']);_0x5ce216[_0xc53e('0x1b')]=qs['offset'](_0x24a77e[_0xc53e('0x2e')][_0xc53e('0x1b')]);}_0x5ce216['order']=qs[_0xc53e('0x36')](_0x24a77e[_0xc53e('0x2e')][_0xc53e('0x36')]);_0x5ce216['where']=qs[_0xc53e('0x2f')](_[_0xc53e('0x37')](_0x24a77e[_0xc53e('0x2e')],_0x8f0ee6[_0xc53e('0x2f')]),_0x42dec1);if(_0x24a77e[_0xc53e('0x2e')][_0xc53e('0x38')]){_0x5ce216[_0xc53e('0x39')]=_['merge'](_0x5ce216[_0xc53e('0x39')],{'$or':_[_0xc53e('0x28')](_0x42dec1,function(_0x2db711){if(_0x2db711['type']!==_0xc53e('0x3a')){var _0x5e8ab7={};_0x5e8ab7[_0x2db711[_0xc53e('0x26')]]={'$like':'%'+_0x24a77e[_0xc53e('0x2e')][_0xc53e('0x38')]+'%'};return _0x5e8ab7;}})});}_0x5ce216=_[_0xc53e('0x3b')]({},_0x5ce216,_0x24a77e[_0xc53e('0x3c')]);var _0x5507d0={'where':_0x5ce216[_0xc53e('0x39')]};return db[_0xc53e('0x29')]['count'](_0x5507d0)['then'](function(_0x5e9e15){_0x6a62b0['count']=_0x5e9e15;if(_0x24a77e[_0xc53e('0x2e')][_0xc53e('0x3d')]){_0x5ce216['include']=[{'all':!![]}];}return db[_0xc53e('0x29')]['findAll'](_0x5ce216);})['then'](function(_0x53447e){_0x6a62b0[_0xc53e('0x3e')]=_0x53447e;return _0x6a62b0;})['then'](respondWithFilteredResult(_0x5112d2,_0x5ce216))['catch'](handleError(_0x5112d2,null));};exports[_0xc53e('0x3f')]=function(_0x53a82f,_0x422088){var _0x360af9={'raw':!![],'where':{'id':_0x53a82f[_0xc53e('0x40')]['id']}},_0x49f204={};_0x49f204[_0xc53e('0x2d')]=_['keys'](db[_0xc53e('0x29')]['rawAttributes']);_0x49f204['query']=_['keys'](_0x53a82f['query']);_0x49f204[_0xc53e('0x2f')]=_[_0xc53e('0x31')](_0x49f204[_0xc53e('0x2d')],_0x49f204['query']);_0x360af9[_0xc53e('0x30')]=_[_0xc53e('0x31')](_0x49f204['model'],qs['fields'](_0x53a82f[_0xc53e('0x2e')][_0xc53e('0x32')]));_0x360af9[_0xc53e('0x30')]=_0x360af9['attributes'][_0xc53e('0x33')]?_0x360af9[_0xc53e('0x30')]:_0x49f204[_0xc53e('0x2d')];if(_0x53a82f[_0xc53e('0x2e')][_0xc53e('0x3d')]){_0x360af9[_0xc53e('0x41')]=[{'all':!![]}];}_0x360af9=_[_0xc53e('0x3b')]({},_0x360af9,_0x53a82f['options']);return db[_0xc53e('0x29')][_0xc53e('0x42')](_0x360af9)[_0xc53e('0x24')](handleEntityNotFound(_0x422088,null))['then'](respondWithResult(_0x422088,null))[_0xc53e('0x43')](handleError(_0x422088,null));};exports[_0xc53e('0x44')]=function(_0x4458c8,_0x15e744){return db[_0xc53e('0x29')][_0xc53e('0x44')](_0x4458c8['body'],{})[_0xc53e('0x24')](respondWithResult(_0x15e744,0xc9))[_0xc53e('0x43')](handleError(_0x15e744,null));};exports[_0xc53e('0x45')]=function(_0x5a6e41,_0x33d45c){if(_0x5a6e41[_0xc53e('0x46')]['id']){delete _0x5a6e41[_0xc53e('0x46')]['id'];}return db[_0xc53e('0x29')][_0xc53e('0x42')]({'where':{'id':_0x5a6e41[_0xc53e('0x40')]['id']}})[_0xc53e('0x24')](handleEntityNotFound(_0x33d45c,null))[_0xc53e('0x24')](saveUpdates(_0x5a6e41[_0xc53e('0x46')],null))[_0xc53e('0x24')](respondWithResult(_0x33d45c,null))['catch'](handleError(_0x33d45c,null));};exports[_0xc53e('0x47')]=function(_0x17cf13,_0x38520c){return db[_0xc53e('0x29')][_0xc53e('0x42')]({'where':{'id':_0x17cf13['params']['id']}})['then'](handleEntityNotFound(_0x38520c,null))[_0xc53e('0x24')](removeEntity(_0x38520c,null))['catch'](handleError(_0x38520c,null));};
\ No newline at end of file
index eb419cc..545f244 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc013=['bluebird','request-promise','path','rimraf','./intDeskField.attributes','exports','define','DeskField','int_desk_fields','desk_unique_index','idField','FieldId','lodash','util','../../config/logger','api','moment'];(function(_0x2a24dc,_0x531888){var _0x14f6e9=function(_0x599f80){while(--_0x599f80){_0x2a24dc['push'](_0x2a24dc['shift']());}};_0x14f6e9(++_0x531888);}(_0xc013,0x13e));var _0x3c01=function(_0x5b34c0,_0x3ad403){_0x5b34c0=_0x5b34c0-0x0;var _0x242bd3=_0xc013[_0x5b34c0];return _0x242bd3;};'use strict';var _=require(_0x3c01('0x0'));var util=require(_0x3c01('0x1'));var logger=require(_0x3c01('0x2'))(_0x3c01('0x3'));var moment=require(_0x3c01('0x4'));var BPromise=require(_0x3c01('0x5'));var rp=require(_0x3c01('0x6'));var fs=require('fs');var path=require(_0x3c01('0x7'));var rimraf=require(_0x3c01('0x8'));var config=require('../../config/environment');var attributes=require(_0x3c01('0x9'));module[_0x3c01('0xa')]=function(_0x319e35,_0x5e8ef2){return _0x319e35[_0x3c01('0xb')](_0x3c01('0xc'),attributes,{'tableName':_0x3c01('0xd'),'paranoid':![],'indexes':[{'name':_0x3c01('0xe'),'fields':[_0x3c01('0xf'),_0x3c01('0x10')],'unique':!![]}],'timestamps':!![]});};
\ No newline at end of file
+var _0xa726=['../../config/logger','api','request-promise','path','rimraf','exports','define','DeskField','desk_unique_index','idField','FieldId'];(function(_0x2a3e66,_0x1e004c){var _0x5c032e=function(_0xa39199){while(--_0xa39199){_0x2a3e66['push'](_0x2a3e66['shift']());}};_0x5c032e(++_0x1e004c);}(_0xa726,0x11e));var _0x6a72=function(_0x42f009,_0x5e27b1){_0x42f009=_0x42f009-0x0;var _0x22a1e0=_0xa726[_0x42f009];return _0x22a1e0;};'use strict';var _=require('lodash');var util=require('util');var logger=require(_0x6a72('0x0'))(_0x6a72('0x1'));var moment=require('moment');var BPromise=require('bluebird');var rp=require(_0x6a72('0x2'));var fs=require('fs');var path=require(_0x6a72('0x3'));var rimraf=require(_0x6a72('0x4'));var config=require('../../config/environment');var attributes=require('./intDeskField.attributes');module[_0x6a72('0x5')]=function(_0x249ce5,_0x1db765){return _0x249ce5[_0x6a72('0x6')](_0x6a72('0x7'),attributes,{'tableName':'int_desk_fields','paranoid':![],'indexes':[{'name':_0x6a72('0x8'),'fields':[_0x6a72('0x9'),_0x6a72('0xa')],'unique':!![]}],'timestamps':!![]});};
\ No newline at end of file
index 54202b9..0d097cc 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x286c=['info','debug','DeskField,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','code','message','DeskField,\x20%s,\x20%s','result','lodash','util','bluebird','randomstring','ioredis','../../config/utils','rpc','../../config/environment','jayson/promise','client','request'];(function(_0x357b43,_0x1f8eca){var _0x49590b=function(_0x41412a){while(--_0x41412a){_0x357b43['push'](_0x357b43['shift']());}};_0x49590b(++_0x1f8eca);}(_0x286c,0x1ae));var _0xc286=function(_0x1e760b,_0x569751){_0x1e760b=_0x1e760b-0x0;var _0x25cb11=_0x286c[_0x1e760b];return _0x25cb11;};'use strict';var _=require(_0xc286('0x0'));var util=require(_0xc286('0x1'));var moment=require('moment');var BPromise=require(_0xc286('0x2'));var rs=require(_0xc286('0x3'));var fs=require('fs');var Redis=require(_0xc286('0x4'));var db=require('../../mysqldb')['db'];var utils=require(_0xc286('0x5'));var logger=require('../../config/logger')(_0xc286('0x6'));var config=require(_0xc286('0x7'));var jayson=require(_0xc286('0x8'));var client=jayson[_0xc286('0x9')]['http']({'port':0x232a});function respondWithRpcPromise(_0x362940,_0x406244,_0x4cdd8d){return new BPromise(function(_0x111053,_0x4c0aa7){return client[_0xc286('0xa')](_0x362940,_0x4cdd8d)['then'](function(_0x499e28){logger[_0xc286('0xb')]('DeskField,\x20%s,\x20%s',_0x406244,'request\x20sent');logger[_0xc286('0xc')](_0xc286('0xd'),_0x406244,_0xc286('0xe'),JSON[_0xc286('0xf')](_0x499e28));if(_0x499e28[_0xc286('0x10')]){if(_0x499e28[_0xc286('0x10')][_0xc286('0x11')]===0x1f4){logger[_0xc286('0x10')]('DeskField,\x20%s,\x20%s',_0x406244,_0x499e28[_0xc286('0x10')][_0xc286('0x12')]);return _0x4c0aa7(_0x499e28['error'][_0xc286('0x12')]);}logger[_0xc286('0x10')](_0xc286('0x13'),_0x406244,_0x499e28[_0xc286('0x10')]['message']);return _0x111053(_0x499e28[_0xc286('0x10')][_0xc286('0x12')]);}else{logger[_0xc286('0xb')](_0xc286('0x13'),_0x406244,_0xc286('0xe'));_0x111053(_0x499e28[_0xc286('0x14')][_0xc286('0x12')]);}})['catch'](function(_0x1d8b9c){logger[_0xc286('0x10')](_0xc286('0x13'),_0x406244,_0x1d8b9c);_0x4c0aa7(_0x1d8b9c);});});}
\ No newline at end of file
+var _0x4e73=['catch','lodash','util','moment','ioredis','../../mysqldb','../../config/utils','rpc','../../config/environment','client','http','request','then','request\x20sent','debug','error','code','DeskField,\x20%s,\x20%s','message','result'];(function(_0x2c28f5,_0x2f7e56){var _0x137e10=function(_0x255011){while(--_0x255011){_0x2c28f5['push'](_0x2c28f5['shift']());}};_0x137e10(++_0x2f7e56);}(_0x4e73,0x65));var _0x34e7=function(_0x398586,_0x291df7){_0x398586=_0x398586-0x0;var _0x55cb6a=_0x4e73[_0x398586];return _0x55cb6a;};'use strict';var _=require(_0x34e7('0x0'));var util=require(_0x34e7('0x1'));var moment=require(_0x34e7('0x2'));var BPromise=require('bluebird');var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x34e7('0x3'));var db=require(_0x34e7('0x4'))['db'];var utils=require(_0x34e7('0x5'));var logger=require('../../config/logger')(_0x34e7('0x6'));var config=require(_0x34e7('0x7'));var jayson=require('jayson/promise');var client=jayson[_0x34e7('0x8')][_0x34e7('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x314a09,_0x3d1d42,_0x154df6){return new BPromise(function(_0xee9e5e,_0xa06c85){return client[_0x34e7('0xa')](_0x314a09,_0x154df6)[_0x34e7('0xb')](function(_0x4885fb){logger['info']('DeskField,\x20%s,\x20%s',_0x3d1d42,_0x34e7('0xc'));logger[_0x34e7('0xd')]('DeskField,\x20%s,\x20%s,\x20%s',_0x3d1d42,_0x34e7('0xc'),JSON['stringify'](_0x4885fb));if(_0x4885fb[_0x34e7('0xe')]){if(_0x4885fb['error'][_0x34e7('0xf')]===0x1f4){logger['error'](_0x34e7('0x10'),_0x3d1d42,_0x4885fb[_0x34e7('0xe')]['message']);return _0xa06c85(_0x4885fb[_0x34e7('0xe')][_0x34e7('0x11')]);}logger[_0x34e7('0xe')](_0x34e7('0x10'),_0x3d1d42,_0x4885fb[_0x34e7('0xe')]['message']);return _0xee9e5e(_0x4885fb[_0x34e7('0xe')][_0x34e7('0x11')]);}else{logger['info'](_0x34e7('0x10'),_0x3d1d42,'request\x20sent');_0xee9e5e(_0x4885fb[_0x34e7('0x12')]['message']);}})[_0x34e7('0x13')](function(_0x340c4c){logger[_0x34e7('0xe')]('DeskField,\x20%s,\x20%s',_0x3d1d42,_0x340c4c);_0xa06c85(_0x340c4c);});});}
\ No newline at end of file
index db3359f..4a9459a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7e93=['./intDynamics365Account.controller','get','isAuthenticated','index','/:id/configurations','getConfigurations','post','create','put','/:id','delete','destroy','multer','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../config/environment'];(function(_0x2638ac,_0x5c0462){var _0x5c4b93=function(_0x149c5f){while(--_0x149c5f){_0x2638ac['push'](_0x2638ac['shift']());}};_0x5c4b93(++_0x5c0462);}(_0x7e93,0x1c5));var _0x37e9=function(_0x2b745c,_0x538745){_0x2b745c=_0x2b745c-0x0;var _0x4d8a37=_0x7e93[_0x2b745c];return _0x4d8a37;};'use strict';var multer=require(_0x37e9('0x0'));var util=require(_0x37e9('0x1'));var path=require(_0x37e9('0x2'));var timeout=require(_0x37e9('0x3'));var express=require(_0x37e9('0x4'));var router=express[_0x37e9('0x5')]();var fs_extra=require(_0x37e9('0x6'));var auth=require(_0x37e9('0x7'));var interaction=require('../../components/interaction/service');var config=require(_0x37e9('0x8'));var controller=require(_0x37e9('0x9'));router[_0x37e9('0xa')]('/',auth[_0x37e9('0xb')](),controller[_0x37e9('0xc')]);router[_0x37e9('0xa')]('/:id',auth[_0x37e9('0xb')](),controller['show']);router['get'](_0x37e9('0xd'),auth[_0x37e9('0xb')](),controller[_0x37e9('0xe')]);router[_0x37e9('0xa')]('/:id/fields',auth[_0x37e9('0xb')](),controller['getFields']);router[_0x37e9('0xf')]('/',auth[_0x37e9('0xb')](),controller[_0x37e9('0x10')]);router[_0x37e9('0xf')](_0x37e9('0xd'),auth[_0x37e9('0xb')](),controller['addConfiguration']);router[_0x37e9('0x11')](_0x37e9('0x12'),auth[_0x37e9('0xb')](),controller['update']);router[_0x37e9('0x13')]('/:id',auth[_0x37e9('0xb')](),controller[_0x37e9('0x14')]);module['exports']=router;
\ No newline at end of file
+var _0x8a81=['../../components/auth/service','../../components/interaction/service','./intDynamics365Account.controller','get','isAuthenticated','index','/:id','show','/:id/configurations','getConfigurations','/:id/fields','getFields','post','create','addConfiguration','put','delete','destroy','util','path','connect-timeout','express'];(function(_0x14add3,_0x13ce8d){var _0x4a174f=function(_0x2b3ed7){while(--_0x2b3ed7){_0x14add3['push'](_0x14add3['shift']());}};_0x4a174f(++_0x13ce8d);}(_0x8a81,0xee));var _0x18a8=function(_0x53ccf2,_0x13cb67){_0x53ccf2=_0x53ccf2-0x0;var _0x5a2964=_0x8a81[_0x53ccf2];return _0x5a2964;};'use strict';var multer=require('multer');var util=require(_0x18a8('0x0'));var path=require(_0x18a8('0x1'));var timeout=require(_0x18a8('0x2'));var express=require(_0x18a8('0x3'));var router=express['Router']();var fs_extra=require('fs-extra');var auth=require(_0x18a8('0x4'));var interaction=require(_0x18a8('0x5'));var config=require('../../config/environment');var controller=require(_0x18a8('0x6'));router[_0x18a8('0x7')]('/',auth[_0x18a8('0x8')](),controller[_0x18a8('0x9')]);router[_0x18a8('0x7')](_0x18a8('0xa'),auth[_0x18a8('0x8')](),controller[_0x18a8('0xb')]);router[_0x18a8('0x7')](_0x18a8('0xc'),auth[_0x18a8('0x8')](),controller[_0x18a8('0xd')]);router[_0x18a8('0x7')](_0x18a8('0xe'),auth['isAuthenticated'](),controller[_0x18a8('0xf')]);router[_0x18a8('0x10')]('/',auth[_0x18a8('0x8')](),controller[_0x18a8('0x11')]);router['post'](_0x18a8('0xc'),auth[_0x18a8('0x8')](),controller[_0x18a8('0x12')]);router[_0x18a8('0x13')](_0x18a8('0xa'),auth[_0x18a8('0x8')](),controller['update']);router[_0x18a8('0x14')](_0x18a8('0xa'),auth[_0x18a8('0x8')](),controller[_0x18a8('0x15')]);module['exports']=router;
\ No newline at end of file
index 0106813..bb1f885 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x86ea=['STRING','sequelize','exports'];(function(_0x4babf9,_0x5a0c0a){var _0x29ef7e=function(_0x4f2977){while(--_0x4f2977){_0x4babf9['push'](_0x4babf9['shift']());}};_0x29ef7e(++_0x5a0c0a);}(_0x86ea,0x18d));var _0xa86e=function(_0xeb9bbc,_0x450164){_0xeb9bbc=_0xeb9bbc-0x0;var _0x29c696=_0x86ea[_0xeb9bbc];return _0x29c696;};'use strict';var Sequelize=require(_0xa86e('0x0'));module[_0xa86e('0x1')]={'name':{'type':Sequelize[_0xa86e('0x2')]},'username':{'type':Sequelize[_0xa86e('0x2')]},'password':{'type':Sequelize[_0xa86e('0x2')]},'remoteUri':{'type':Sequelize[_0xa86e('0x2')]},'tenantId':{'type':Sequelize[_0xa86e('0x2')]},'clientId':{'type':Sequelize[_0xa86e('0x2')]},'clientSecret':{'type':Sequelize[_0xa86e('0x2')]},'serverUrl':{'type':Sequelize[_0xa86e('0x2')],'allowNull':![]},'description':{'type':Sequelize['STRING']}};
\ No newline at end of file
+var _0xc397=['exports','STRING'];(function(_0x17d9e3,_0x1f969c){var _0x14192d=function(_0x159745){while(--_0x159745){_0x17d9e3['push'](_0x17d9e3['shift']());}};_0x14192d(++_0x1f969c);}(_0xc397,0x18a));var _0x7c39=function(_0x46540d,_0x38401c){_0x46540d=_0x46540d-0x0;var _0xdd0924=_0xc397[_0x46540d];return _0xdd0924;};'use strict';var Sequelize=require('sequelize');module[_0x7c39('0x0')]={'name':{'type':Sequelize[_0x7c39('0x1')]},'username':{'type':Sequelize[_0x7c39('0x1')]},'password':{'type':Sequelize[_0x7c39('0x1')]},'remoteUri':{'type':Sequelize[_0x7c39('0x1')]},'tenantId':{'type':Sequelize[_0x7c39('0x1')]},'clientId':{'type':Sequelize['STRING']},'clientSecret':{'type':Sequelize['STRING']},'serverUrl':{'type':Sequelize[_0x7c39('0x1')],'allowNull':![]},'description':{'type':Sequelize['STRING']}};
\ No newline at end of file
index c79a45c..03c25cf 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xbe48=['modifiedon','modifiedonbehalfbyyominame','msdyn_incidenttypename','msdyn_iotalertname','overriddencreatedon','owneridname','owneridyominame','parentcaseidname','primarycontactidname','primarycontactidyominame','prioritycodename','productidname','productserialnumber','resolveby','resolvebykpiidname','responsiblecontactidname','responsiblecontactidyominame','sentimentvalue','slainvokedidname','slaname','socialprofileidname','statecode','statuscode','subjectidname','ticketnumber','transactioncurrencyidname','utcconversiontimezonecode','versionnumber','concat','username','password','tenantId','clientId','clientSecret','remoteUri','slice','substring','lastIndexOf','%s/api/data/v9.0/','POST','https://login.microsoftonline.com/','/oauth2/token','access_token','GET','Bearer\x20','value','MetadataId',')?$select=LogicalName&$expand=Attributes($select=LogicalName)','4.0','Attributes','remove','includes','LogicalName','@odata.type','PicklistAttributeMetadata','push','forEach','isNil','DoubleAttributeMetadata','BigIntAttributeMetadata','IntegerAttributeMetadata','DateTimeAttributeMetadata','StatusAttributeMetadata','EntityNameAttributeMetadata','StateAttributeMetadata','DecimalAttributeMetadata','test','statusCode','EntityDefinitions(',')/Attributes(',')/Microsoft.Dynamics.CRM.PicklistAttributeMetadata?','$select=DisplayName,LogicalName&$expand=OptionSet($select=Options)','OptionSet','Options','Label','Value','UserLocalizedLabel',')/Microsoft.Dynamics.CRM.BooleanAttributeMetadata?$select=DisplayName,LogicalName&$expand=OptionSet($select=FalseOption,\x20TrueOption)','true','FalseOption','false','DisplayName','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','mustache','util','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','desk.js','ioredis','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','../../config/license/util','../../mysqldb','../../components/integrations/configuration','sendStatus','status','end','json','offset','undefined','limit','count','set','Content-Range','apply','reject','save','update','then','error','stack','name','send','index','map','type','model','query','filters','intersection','attributes','fields','hasOwnProperty','nolimit','order','sort','where','pick','filter','options','Dynamics365Account','includeAll','include','findAll','rows','catch','params','keys','rawAttributes','merge','find','create','body','destroy','getConfigurations','findOne','length','addConfiguration','AccountId','Subjects','getSubjects','Descriptions','getDescriptions','channel','Dynamics365Configuration','Dynamics365Field','getFields','ticketType','incident','PhoneCall','description','customerid','ownerid','phonenumber','regardingobjectid','directioncode','phonecall_activity_parties','accountidname','billedserviceunits','contactidname','contractdetailidname','contractidname','createdbyexternalpartyname','createdbyexternalpartyyominame','createdbyname','createdbyyominame','createdon','createdonbehalfbyname','createdonbehalfbyyominame','customeridname','customeridtype','customeridyominame','emailaddress','entitlementidname','entityimage_timestamp','entityimage_url','escalatedon','exchangerate','followupby','importsequencenumber','influencescore','kbarticleidname','lastonholdtime','masteridname','modifiedbyexternalpartyname','modifiedbyexternalpartyyominame','modifiedbyyominame'];(function(_0x485f53,_0x104081){var _0x480f1e=function(_0x2d61d2){while(--_0x2d61d2){_0x485f53['push'](_0x485f53['shift']());}};_0x480f1e(++_0x104081);}(_0xbe48,0x121));var _0x8be4=function(_0x3329e6,_0x6386e3){_0x3329e6=_0x3329e6-0x0;var _0x31b38e=_0xbe48[_0x3329e6];return _0x31b38e;};'use strict';var emlformat=require(_0x8be4('0x0'));var rimraf=require(_0x8be4('0x1'));var zipdir=require(_0x8be4('0x2'));var jsonpatch=require(_0x8be4('0x3'));var rp=require(_0x8be4('0x4'));var moment=require('moment');var BPromise=require('bluebird');var Mustache=require(_0x8be4('0x5'));var util=require(_0x8be4('0x6'));var path=require('path');var sox=require(_0x8be4('0x7'));var csv=require(_0x8be4('0x8'));var ejs=require(_0x8be4('0x9'));var fs=require('fs');var fs_extra=require(_0x8be4('0xa'));var _=require(_0x8be4('0xb'));var squel=require(_0x8be4('0xc'));var crypto=require(_0x8be4('0xd'));var jsforce=require('jsforce');var deskjs=require(_0x8be4('0xe'));var toCsv=require(_0x8be4('0x8'));var querystring=require('querystring');var Papa=require('papaparse');var Redis=require(_0x8be4('0xf'));var authService=require('../../components/auth/service');var qs=require('../../components/parsers/qs');var as=require(_0x8be4('0x10'));var hardwareService=require(_0x8be4('0x11'));var logger=require(_0x8be4('0x12'))('api');var utils=require('../../config/utils');var config=require('../../config/environment');var licenseUtil=require(_0x8be4('0x13'));var db=require(_0x8be4('0x14'))['db'];var integrations=require(_0x8be4('0x15'));function respondWithStatusCode(_0x230356,_0x53ae51){_0x53ae51=_0x53ae51||0xcc;return function(_0x51adbf){if(_0x51adbf){return _0x230356[_0x8be4('0x16')](_0x53ae51);}return _0x230356[_0x8be4('0x17')](_0x53ae51)[_0x8be4('0x18')]();};}function respondWithResult(_0x1236e6,_0x4c7e13){_0x4c7e13=_0x4c7e13||0xc8;return function(_0x332d5c){if(_0x332d5c){return _0x1236e6['status'](_0x4c7e13)[_0x8be4('0x19')](_0x332d5c);}};}function respondWithFilteredResult(_0xcc3d2c,_0x329b38){return function(_0xc67275){if(_0xc67275){var _0x3548e4=typeof _0x329b38[_0x8be4('0x1a')]===_0x8be4('0x1b')&&typeof _0x329b38[_0x8be4('0x1c')]===_0x8be4('0x1b');var _0x37c1e4=_0xc67275[_0x8be4('0x1d')];var _0x88eacf=_0x3548e4?0x0:_0x329b38[_0x8be4('0x1a')];var _0x270e50=_0x3548e4?_0xc67275[_0x8be4('0x1d')]:_0x329b38[_0x8be4('0x1a')]+_0x329b38[_0x8be4('0x1c')];var _0x15d1eb;if(_0x270e50>=_0x37c1e4){_0x270e50=_0x37c1e4;_0x15d1eb=0xc8;}else{_0x15d1eb=0xce;}_0xcc3d2c['status'](_0x15d1eb);return _0xcc3d2c[_0x8be4('0x1e')](_0x8be4('0x1f'),_0x88eacf+'-'+_0x270e50+'/'+_0x37c1e4)[_0x8be4('0x19')](_0xc67275);}return null;};}function patchUpdates(_0x369aa5){return function(_0x11cbe3){try{jsonpatch[_0x8be4('0x20')](_0x11cbe3,_0x369aa5,!![]);}catch(_0x509015){return BPromise[_0x8be4('0x21')](_0x509015);}return _0x11cbe3[_0x8be4('0x22')]();};}function saveUpdates(_0x55e474,_0x41938e){return function(_0x5c7286){if(_0x5c7286){return _0x5c7286[_0x8be4('0x23')](_0x55e474)[_0x8be4('0x24')](function(_0x4e4450){return _0x4e4450;});}return null;};}function removeEntity(_0xbb1710,_0x564bbd){return function(_0x2e5f73){if(_0x2e5f73){return _0x2e5f73['destroy']()[_0x8be4('0x24')](function(){_0xbb1710['status'](0xcc)[_0x8be4('0x18')]();});}};}function handleEntityNotFound(_0x136506,_0x319ea6){return function(_0x2f54c4){if(!_0x2f54c4){_0x136506['sendStatus'](0x194);}return _0x2f54c4;};}function handleError(_0x25fae6,_0x182c2e){_0x182c2e=_0x182c2e||0x1f4;return function(_0x32e86e){logger[_0x8be4('0x25')](_0x32e86e[_0x8be4('0x26')]);if(_0x32e86e[_0x8be4('0x27')]){delete _0x32e86e['name'];}_0x25fae6[_0x8be4('0x17')](_0x182c2e)[_0x8be4('0x28')](_0x32e86e);};}exports[_0x8be4('0x29')]=function(_0x54f1bc,_0xfadfe6){var _0x20165f={},_0x28cf07={},_0x40ecf2={'count':0x0,'rows':[]};var _0x8a3a4a=_[_0x8be4('0x2a')](db['Dynamics365Account']['rawAttributes'],function(_0x48b4a7){return{'name':_0x48b4a7['fieldName'],'type':_0x48b4a7[_0x8be4('0x2b')]['key']};});_0x28cf07[_0x8be4('0x2c')]=_[_0x8be4('0x2a')](_0x8a3a4a,_0x8be4('0x27'));_0x28cf07[_0x8be4('0x2d')]=_['keys'](_0x54f1bc[_0x8be4('0x2d')]);_0x28cf07[_0x8be4('0x2e')]=_[_0x8be4('0x2f')](_0x28cf07[_0x8be4('0x2c')],_0x28cf07['query']);_0x20165f[_0x8be4('0x30')]=_[_0x8be4('0x2f')](_0x28cf07['model'],qs['fields'](_0x54f1bc[_0x8be4('0x2d')][_0x8be4('0x31')]));_0x20165f['attributes']=_0x20165f[_0x8be4('0x30')]['length']?_0x20165f[_0x8be4('0x30')]:_0x28cf07[_0x8be4('0x2c')];if(!_0x54f1bc['query'][_0x8be4('0x32')](_0x8be4('0x33'))){_0x20165f['limit']=qs[_0x8be4('0x1c')](_0x54f1bc[_0x8be4('0x2d')][_0x8be4('0x1c')]);_0x20165f[_0x8be4('0x1a')]=qs[_0x8be4('0x1a')](_0x54f1bc['query'][_0x8be4('0x1a')]);}_0x20165f[_0x8be4('0x34')]=qs[_0x8be4('0x35')](_0x54f1bc[_0x8be4('0x2d')][_0x8be4('0x35')]);_0x20165f[_0x8be4('0x36')]=qs['filters'](_[_0x8be4('0x37')](_0x54f1bc[_0x8be4('0x2d')],_0x28cf07[_0x8be4('0x2e')]),_0x8a3a4a);if(_0x54f1bc[_0x8be4('0x2d')]['filter']){_0x20165f[_0x8be4('0x36')]=_['merge'](_0x20165f['where'],{'$or':_[_0x8be4('0x2a')](_0x8a3a4a,function(_0x12044c){if(_0x12044c[_0x8be4('0x2b')]!=='VIRTUAL'){var _0x566cad={};_0x566cad[_0x12044c[_0x8be4('0x27')]]={'$like':'%'+_0x54f1bc[_0x8be4('0x2d')][_0x8be4('0x38')]+'%'};return _0x566cad;}})});}_0x20165f=_['merge']({},_0x20165f,_0x54f1bc[_0x8be4('0x39')]);var _0x3620b1={'where':_0x20165f[_0x8be4('0x36')]};return db[_0x8be4('0x3a')][_0x8be4('0x1d')](_0x3620b1)[_0x8be4('0x24')](function(_0x50057c){_0x40ecf2[_0x8be4('0x1d')]=_0x50057c;if(_0x54f1bc[_0x8be4('0x2d')][_0x8be4('0x3b')]){_0x20165f[_0x8be4('0x3c')]=[{'all':!![]}];}return db[_0x8be4('0x3a')][_0x8be4('0x3d')](_0x20165f);})[_0x8be4('0x24')](function(_0x3f0f95){_0x40ecf2[_0x8be4('0x3e')]=_0x3f0f95;return _0x40ecf2;})[_0x8be4('0x24')](respondWithFilteredResult(_0xfadfe6,_0x20165f))[_0x8be4('0x3f')](handleError(_0xfadfe6,null));};exports['show']=function(_0x130c07,_0x398f04){var _0x22c297={'raw':![],'where':{'id':_0x130c07[_0x8be4('0x40')]['id']}},_0x33dc0a={};_0x33dc0a[_0x8be4('0x2c')]=_[_0x8be4('0x41')](db[_0x8be4('0x3a')][_0x8be4('0x42')]);_0x33dc0a[_0x8be4('0x2d')]=_[_0x8be4('0x41')](_0x130c07[_0x8be4('0x2d')]);_0x33dc0a['filters']=_['intersection'](_0x33dc0a[_0x8be4('0x2c')],_0x33dc0a[_0x8be4('0x2d')]);_0x22c297[_0x8be4('0x30')]=_['intersection'](_0x33dc0a[_0x8be4('0x2c')],qs[_0x8be4('0x31')](_0x130c07['query'][_0x8be4('0x31')]));_0x22c297[_0x8be4('0x30')]=_0x22c297[_0x8be4('0x30')]['length']?_0x22c297[_0x8be4('0x30')]:_0x33dc0a[_0x8be4('0x2c')];if(_0x130c07[_0x8be4('0x2d')]['includeAll']){_0x22c297[_0x8be4('0x3c')]=[{'all':!![]}];}_0x22c297=_[_0x8be4('0x43')]({},_0x22c297,_0x130c07[_0x8be4('0x39')]);return db[_0x8be4('0x3a')][_0x8be4('0x44')](_0x22c297)[_0x8be4('0x24')](handleEntityNotFound(_0x398f04,null))['then'](respondWithResult(_0x398f04,null))['catch'](handleError(_0x398f04,null));};exports[_0x8be4('0x45')]=function(_0x54225a,_0x4a6755){return db[_0x8be4('0x3a')][_0x8be4('0x45')](_0x54225a['body'],{})[_0x8be4('0x24')](respondWithResult(_0x4a6755,0xc9))[_0x8be4('0x3f')](handleError(_0x4a6755,null));};exports[_0x8be4('0x23')]=function(_0x55f875,_0x14f72f){if(_0x55f875[_0x8be4('0x46')]['id']){delete _0x55f875[_0x8be4('0x46')]['id'];}return db['Dynamics365Account'][_0x8be4('0x44')]({'where':{'id':_0x55f875[_0x8be4('0x40')]['id']}})[_0x8be4('0x24')](handleEntityNotFound(_0x14f72f,null))[_0x8be4('0x24')](saveUpdates(_0x55f875[_0x8be4('0x46')],null))[_0x8be4('0x24')](respondWithResult(_0x14f72f,null))[_0x8be4('0x3f')](handleError(_0x14f72f,null));};exports[_0x8be4('0x47')]=function(_0x125952,_0x52881a){return db[_0x8be4('0x3a')][_0x8be4('0x44')]({'where':{'id':_0x125952[_0x8be4('0x40')]['id']}})['then'](handleEntityNotFound(_0x52881a,null))[_0x8be4('0x24')](removeEntity(_0x52881a,null))[_0x8be4('0x3f')](handleError(_0x52881a,null));};exports[_0x8be4('0x48')]=function(_0x92e321,_0x2d7d42,_0x543c34){var _0x44737e={};var _0x4e567d={};var _0x130898;var _0x521428;return db['Dynamics365Account'][_0x8be4('0x49')]({'where':{'id':_0x92e321['params']['id']}})[_0x8be4('0x24')](handleEntityNotFound(_0x2d7d42,null))[_0x8be4('0x24')](function(_0x9cebe5){if(_0x9cebe5){_0x130898=_0x9cebe5;_0x4e567d['model']=_[_0x8be4('0x41')](db['Dynamics365Configuration'][_0x8be4('0x42')]);_0x4e567d[_0x8be4('0x2d')]=_[_0x8be4('0x41')](_0x92e321[_0x8be4('0x2d')]);_0x4e567d[_0x8be4('0x2e')]=_[_0x8be4('0x2f')](_0x4e567d['model'],_0x4e567d['query']);_0x44737e['attributes']=_[_0x8be4('0x2f')](_0x4e567d[_0x8be4('0x2c')],qs[_0x8be4('0x31')](_0x92e321[_0x8be4('0x2d')][_0x8be4('0x31')]));_0x44737e[_0x8be4('0x30')]=_0x44737e[_0x8be4('0x30')][_0x8be4('0x4a')]?_0x44737e[_0x8be4('0x30')]:_0x4e567d[_0x8be4('0x2c')];_0x44737e[_0x8be4('0x34')]=qs[_0x8be4('0x35')](_0x92e321[_0x8be4('0x2d')][_0x8be4('0x35')]);_0x44737e['where']=qs['filters'](_[_0x8be4('0x37')](_0x92e321['query'],_0x4e567d[_0x8be4('0x2e')]));if(_0x92e321[_0x8be4('0x2d')][_0x8be4('0x38')]){_0x44737e[_0x8be4('0x36')]=_['merge'](_0x44737e[_0x8be4('0x36')],{'$or':_[_0x8be4('0x2a')](_0x44737e[_0x8be4('0x30')],function(_0x812acd){var _0x1c0b33={};_0x1c0b33[_0x812acd]={'$like':'%'+_0x92e321['query'][_0x8be4('0x38')]+'%'};return _0x1c0b33;})});}_0x44737e=_[_0x8be4('0x43')]({},_0x44737e,_0x92e321[_0x8be4('0x39')]);return _0x130898[_0x8be4('0x48')](_0x44737e);}})[_0x8be4('0x24')](function(_0x32020a){if(_0x32020a){_0x521428=_0x32020a[_0x8be4('0x4a')];if(!_0x92e321[_0x8be4('0x2d')][_0x8be4('0x32')](_0x8be4('0x33'))){_0x44737e[_0x8be4('0x1c')]=qs['limit'](_0x92e321[_0x8be4('0x2d')][_0x8be4('0x1c')]);_0x44737e[_0x8be4('0x1a')]=qs['offset'](_0x92e321[_0x8be4('0x2d')][_0x8be4('0x1a')]);}return _0x130898[_0x8be4('0x48')](_0x44737e);}})[_0x8be4('0x24')](function(_0x19ce5c){if(_0x19ce5c){return _0x19ce5c?{'count':_0x521428,'rows':_0x19ce5c}:null;}})['then'](respondWithResult(_0x2d7d42,null))[_0x8be4('0x3f')](handleError(_0x2d7d42,null));};exports[_0x8be4('0x4b')]=function(_0x24ad17,_0x2c59ad,_0x34203f){if(_0x24ad17[_0x8be4('0x46')]['id']){delete _0x24ad17[_0x8be4('0x46')]['id'];}return db[_0x8be4('0x3a')][_0x8be4('0x49')]({'where':{'id':_0x24ad17['params']['id']}})[_0x8be4('0x24')](handleEntityNotFound(_0x2c59ad,null))[_0x8be4('0x24')](function(_0x550ee7){if(_0x550ee7){_0x24ad17[_0x8be4('0x46')][_0x8be4('0x4c')]=_0x550ee7['id'];_0x24ad17[_0x8be4('0x46')][_0x8be4('0x4d')]=integrations[_0x8be4('0x4e')](_0x24ad17[_0x8be4('0x46')]['channel'],_0x24ad17[_0x8be4('0x46')][_0x8be4('0x2b')]);_0x24ad17[_0x8be4('0x46')][_0x8be4('0x4f')]=integrations[_0x8be4('0x50')](_0x24ad17['body'][_0x8be4('0x51')],_0x24ad17['body']['type']);return db[_0x8be4('0x52')][_0x8be4('0x45')](_0x24ad17[_0x8be4('0x46')],{'include':[{'model':db[_0x8be4('0x53')],'as':_0x8be4('0x4d')},{'model':db[_0x8be4('0x53')],'as':_0x8be4('0x4f')}]});}return null;})[_0x8be4('0x24')](respondWithResult(_0x2c59ad,null))[_0x8be4('0x3f')](handleError(_0x2c59ad,null));};exports[_0x8be4('0x54')]=function(_0x1cca5f,_0x3cb978,_0x1f60b0){var _0xbe1dae=_0x1cca5f[_0x8be4('0x2d')][_0x8be4('0x55')];var _0x306ca2=_0xbe1dae===_0x8be4('0x56')?'Incident':_0x8be4('0x57');var _0x589514='';var _0x37645b='';var _0x4e3630='';var _0x5179cf='';var _0x462186='';var _0x479b67='';var _0x161c0b='';var _0xc91fba='';var _0x593e96=['title',_0x8be4('0x58'),_0x8be4('0x59'),_0x8be4('0x5a'),'caseorigincode','subject',_0x8be4('0x5b'),_0x8be4('0x5c'),_0x8be4('0x5d'),_0x8be4('0x5e')];var _0x4a84bd=[_0x8be4('0x5f'),'accountidyominame','actualserviceunits',_0x8be4('0x60'),_0x8be4('0x61'),'contactidyominame',_0x8be4('0x62'),_0x8be4('0x63'),_0x8be4('0x64'),_0x8be4('0x65'),_0x8be4('0x66'),_0x8be4('0x67'),_0x8be4('0x68'),_0x8be4('0x69'),_0x8be4('0x6a'),_0x8be4('0x6b'),_0x8be4('0x6c'),_0x8be4('0x6d'),_0x8be4('0x6e'),_0x8be4('0x6f'),_0x8be4('0x70'),_0x8be4('0x71'),_0x8be4('0x72'),_0x8be4('0x73'),'firstresponsebykpiidname',_0x8be4('0x74'),_0x8be4('0x75'),_0x8be4('0x76'),_0x8be4('0x77'),_0x8be4('0x78'),_0x8be4('0x79'),_0x8be4('0x7a'),_0x8be4('0x7b'),'modifiedbyname',_0x8be4('0x7c'),_0x8be4('0x7d'),'modifiedonbehalfbyname',_0x8be4('0x7e'),_0x8be4('0x7f'),_0x8be4('0x80'),'numberofchildincidents','onholdtime',_0x8be4('0x81'),_0x8be4('0x82'),'owneridtype',_0x8be4('0x83'),_0x8be4('0x84'),_0x8be4('0x85'),_0x8be4('0x86'),_0x8be4('0x87'),_0x8be4('0x88'),_0x8be4('0x89'),_0x8be4('0x8a'),_0x8be4('0x8b'),'responseby',_0x8be4('0x8c'),_0x8be4('0x8d'),_0x8be4('0x8e'),_0x8be4('0x8f'),_0x8be4('0x90'),_0x8be4('0x91'),_0x8be4('0x92'),_0x8be4('0x93'),_0x8be4('0x94'),_0x8be4('0x95'),'timezoneruleversionnumber',_0x8be4('0x96'),'traversedpath',_0x8be4('0x97'),_0x8be4('0x98')];var _0x130a98=_0x593e96[_0x8be4('0x99')](_0x4a84bd);return db[_0x8be4('0x3a')][_0x8be4('0x49')]({'where':{'id':_0x1cca5f[_0x8be4('0x40')]['id']},'attributes':['id',_0x8be4('0x9a'),_0x8be4('0x9b'),'remoteUri',_0x8be4('0x9c'),_0x8be4('0x9d'),_0x8be4('0x9e')]})[_0x8be4('0x24')](handleEntityNotFound(_0x3cb978,null))[_0x8be4('0x24')](function(_0x2fcec0){if(_0x2fcec0){_0xc91fba=_0x2fcec0[_0x8be4('0x9f')];var _0x2f9d95=_0xc91fba[_0x8be4('0xa0')](-0x1);if(_0x2f9d95==='/'){_0xc91fba=_0xc91fba[_0x8be4('0xa1')](0x0,_0xc91fba[_0x8be4('0xa2')](_0x2f9d95));}_0x161c0b=util['format'](_0x8be4('0xa3'),_0xc91fba);var _0x22cf58={'method':_0x8be4('0xa4'),'uri':_0x8be4('0xa5')+_0x2fcec0[_0x8be4('0x9c')]+_0x8be4('0xa6'),'form':{'client_id':_0x2fcec0[_0x8be4('0x9d')],'resource':_0xc91fba,'username':_0x2fcec0['username'],'password':_0x2fcec0[_0x8be4('0x9b')],'grant_type':'password','client_secret':_0x2fcec0[_0x8be4('0x9e')]},'json':!![]};return rp(_0x22cf58);}})[_0x8be4('0x24')](function(_0x43e1f2){_0x479b67=_0x43e1f2[_0x8be4('0xa7')];var _0x35a002={'method':_0x8be4('0xa8'),'uri':encodeURI(_0x161c0b+'EntityDefinitions?$select=DisplayName,EntitySetName&$filter=SchemaName\x20eq\x20\x27'+_0x306ca2+'\x27'),'headers':{'Authorization':_0x8be4('0xa9')+_0x479b67,'If-None-Match':null,'OData-Version':'4.0'},'json':!![]};return rp(_0x35a002);})['then'](function(_0x52016b){var _0x6070c2=_0x52016b[_0x8be4('0xaa')][0x0];var _0x32c765=_0x6070c2[_0x8be4('0xab')];var _0x569722={'method':_0x8be4('0xa8'),'uri':_0x161c0b+'EntityDefinitions('+_0x32c765+_0x8be4('0xac'),'headers':{'Authorization':'Bearer\x20'+_0x479b67,'If-None-Match':null,'OData-Version':_0x8be4('0xad')},'json':!![]};return rp(_0x569722);})[_0x8be4('0x24')](function(_0x3ff20f){_0x589514=_0x3ff20f;_0x37645b=_0x589514[_0x8be4('0xae')];_0x37645b=_[_0x8be4('0xaf')](_0x37645b,function(_0x2904f9){return!_0x130a98[_0x8be4('0xb0')](_0x2904f9[_0x8be4('0xb1')]);});var _0x356506=[];var _0x31d45b=[];_0x37645b['forEach'](function(_0x45069d){if(_0x45069d[_0x8be4('0xb2')]){var _0x2f8ada=_0x45069d[_0x8be4('0xb2')][_0x8be4('0xa1')](_0x45069d[_0x8be4('0xb2')][_0x8be4('0xa2')]('.')+0x1);if(_0x2f8ada===_0x8be4('0xb3')){_0x356506[_0x8be4('0xb4')](getSelectList(_0x161c0b,_0xbe1dae,_0x31d45b,_0x589514[_0x8be4('0xab')],_0x45069d['MetadataId'],_0x479b67));}}});return Promise['all'](_0x356506);})[_0x8be4('0x24')](function(_0x3723f6){_0x4e3630=_0x3723f6[0x0];var _0x199f4a=[];var _0x2df977=[];_0x37645b[_0x8be4('0xb5')](function(_0x46e73b){if(!_[_0x8be4('0xb6')](_0x46e73b[_0x8be4('0xb2')])){var _0x773ee9=_0x46e73b[_0x8be4('0xb2')][_0x8be4('0xa1')](_0x46e73b['@odata.type']['lastIndexOf']('.')+0x1);if(_0x773ee9==='BooleanAttributeMetadata'){_0x199f4a[_0x8be4('0xb4')](getBooleanList(_0x161c0b,_0xbe1dae,_0x2df977,_0x589514['MetadataId'],_0x46e73b[_0x8be4('0xab')],_0x479b67));}}});return Promise['all'](_0x199f4a);})[_0x8be4('0x24')](function(_0x2dce19){_0x5179cf=_0x2dce19[0x0];var _0x4b8197=[];var _0x1c5ff1=[];_0x37645b[_0x8be4('0xb5')](function(_0x12bb98){if(_0x12bb98[_0x8be4('0xb2')]){var _0x3af338=_0x12bb98[_0x8be4('0xb2')]['substring'](_0x12bb98[_0x8be4('0xb2')][_0x8be4('0xa2')]('.')+0x1);if(_0x3af338==='StringAttributeMetadata'||_0x3af338===_0x8be4('0xb7')||_0x3af338===_0x8be4('0xb8')||_0x3af338===_0x8be4('0xb9')||_0x3af338==='MemoAttributeMetadata'||_0x3af338===_0x8be4('0xba')||_0x3af338===_0x8be4('0xbb')||_0x3af338===_0x8be4('0xbc')||_0x3af338===_0x8be4('0xbd')||_0x3af338===_0x8be4('0xbe')){_0x4b8197[_0x8be4('0xb4')](getInputList(_0x161c0b,_0xbe1dae,_0x3af338,_0x1c5ff1,_0x589514[_0x8be4('0xab')],_0x12bb98['MetadataId'],_0x479b67));}}});return Promise['all'](_0x4b8197);})['then'](function(_0x5d425f){_0x462186=_0x5d425f[0x0];var _0x11b6fc=_0x4e3630[_0x8be4('0x99')](_0x5179cf)[_0x8be4('0x99')](_0x462186);var _0x52c4e7={'count':_0x11b6fc['length'],'rows':_0x11b6fc};return _0x52c4e7;})[_0x8be4('0x24')](respondWithResult(_0x3cb978,null))[_0x8be4('0x3f')](function(_0x8163){var _0x4dfe29=_0x1cca5f[_0x8be4('0x2d')][_0x8be4('0xbf')]?0x1f4:_0x8163[_0x8be4('0xc0')]||0x1f4;logger[_0x8be4('0x25')](_0x8163[_0x8be4('0x26')]);delete _0x8163[_0x8be4('0x27')];if(_0x4dfe29===0x191){_0x4dfe29=0x190;}_0x3cb978[_0x8be4('0x17')](_0x4dfe29)[_0x8be4('0x28')](_0x1cca5f[_0x8be4('0x2d')]['test']?{'message':'Wrong\x20credentials','statusCode':_0x8163[_0x8be4('0xc0')]}:_0x8163);});};function getSelectList(_0x4db030,_0x10d19a,_0x412272,_0x34481e,_0x5129c6,_0x19743e){var _0x1883d9={'method':_0x8be4('0xa8'),'uri':_0x4db030+_0x8be4('0xc1')+_0x34481e+_0x8be4('0xc2')+_0x5129c6+_0x8be4('0xc3')+_0x8be4('0xc4'),'headers':{'Authorization':'Bearer\x20'+_0x19743e,'If-None-Match':null,'OData-Version':'4.0'},'json':!![]};return rp(_0x1883d9)[_0x8be4('0x24')](function(_0x18a75d){var _0x42d347=[];var _0x12b2ba=_0x18a75d[_0x8be4('0xc5')][_0x8be4('0xc6')];_0x12b2ba[_0x8be4('0xb5')](function(_0x5b05e7){_0x42d347[_0x8be4('0xb4')]({'name':_0x5b05e7[_0x8be4('0xc7')]['UserLocalizedLabel']['Label'],'value':String(_0x5b05e7[_0x8be4('0xc8')])});});var _0x17b053={'id':_0x10d19a+'_'+_0x18a75d[_0x8be4('0xb1')],'name':_0x18a75d['DisplayName'][_0x8be4('0xc9')][_0x8be4('0xc7')],'custom':![],'options':_0x42d347};_0x412272[_0x8be4('0xb4')](_0x17b053);return _0x412272;});}function getBooleanList(_0xd91260,_0x315b3a,_0x5357f8,_0x387f6b,_0x348487,_0x1ca28b){var _0x4ee2ad={'method':_0x8be4('0xa8'),'uri':_0xd91260+'EntityDefinitions('+_0x387f6b+_0x8be4('0xc2')+_0x348487+_0x8be4('0xca'),'headers':{'Authorization':'Bearer\x20'+_0x1ca28b,'If-None-Match':null,'OData-Version':_0x8be4('0xad')},'json':!![]};return rp(_0x4ee2ad)[_0x8be4('0x24')](function(_0xb306fb){var _0x5de07a=[];_0x5de07a[_0x8be4('0xb4')]({'name':_0xb306fb[_0x8be4('0xc5')]['TrueOption'][_0x8be4('0xc7')][_0x8be4('0xc9')][_0x8be4('0xc7')],'value':_0x8be4('0xcb')},{'name':_0xb306fb[_0x8be4('0xc5')][_0x8be4('0xcc')][_0x8be4('0xc7')]['UserLocalizedLabel']['Label'],'value':_0x8be4('0xcd')});var _0x2bd446={'id':_0x315b3a+'_'+_0xb306fb[_0x8be4('0xb1')],'name':_0xb306fb[_0x8be4('0xce')][_0x8be4('0xc9')][_0x8be4('0xc7')],'custom':![],'options':_0x5de07a};_0x5357f8[_0x8be4('0xb4')](_0x2bd446);return _0x5357f8;});}function getInputList(_0x59adb6,_0x13d3d0,_0x331aeb,_0x3ae7ba,_0x38305c,_0x5da62d,_0x352dae){var _0x83c50d={'method':_0x8be4('0xa8'),'uri':_0x59adb6+'EntityDefinitions('+_0x38305c+')/Attributes('+_0x5da62d+')/Microsoft.Dynamics.CRM.'+_0x331aeb+'?$select=DisplayName,LogicalName','headers':{'Authorization':_0x8be4('0xa9')+_0x352dae,'If-None-Match':null,'OData-Version':'4.0'},'json':!![]};return rp(_0x83c50d)['then'](function(_0x37fe49){var _0x4b5ef9={'id':_0x13d3d0+'_'+_0x37fe49[_0x8be4('0xb1')],'name':_0x37fe49[_0x8be4('0xce')]['UserLocalizedLabel']?_0x37fe49[_0x8be4('0xce')]['UserLocalizedLabel']['Label']:_0x37fe49[_0x8be4('0xb1')],'custom':![],'options':[]};_0x3ae7ba[_0x8be4('0xb4')](_0x4b5ef9);return _0x3ae7ba;});}
\ No newline at end of file
+var _0xacfe=['POST','https://login.microsoftonline.com/','access_token','EntityDefinitions?$select=DisplayName,EntitySetName&$filter=SchemaName\x20eq\x20\x27','Bearer\x20','4.0','value','MetadataId',')?$select=LogicalName&$expand=Attributes($select=LogicalName)','Attributes','remove','includes','LogicalName','@odata.type','PicklistAttributeMetadata','forEach','BooleanAttributeMetadata','push','all','StringAttributeMetadata','DoubleAttributeMetadata','BigIntAttributeMetadata','IntegerAttributeMetadata','MemoAttributeMetadata','DateTimeAttributeMetadata','StatusAttributeMetadata','EntityNameAttributeMetadata','StateAttributeMetadata','test','Wrong\x20credentials','statusCode','GET',')/Attributes(','Label','UserLocalizedLabel','Value','DisplayName','EntityDefinitions(','OptionSet','TrueOption','true','FalseOption','false','?$select=DisplayName,LogicalName','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox','to-csv','ejs','fs-extra','lodash','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','../../mysqldb','sendStatus','end','json','offset','undefined','count','status','set','apply','reject','save','update','then','destroy','error','stack','name','send','index','Dynamics365Account','rawAttributes','fieldName','key','model','map','query','keys','filters','intersection','attributes','fields','length','hasOwnProperty','limit','sort','where','filter','merge','VIRTUAL','includeAll','findAll','rows','show','params','include','options','catch','create','body','find','getConfigurations','findOne','Dynamics365Configuration','order','pick','nolimit','addConfiguration','AccountId','Subjects','getSubjects','channel','type','getDescriptions','Descriptions','getFields','ticketType','incident','Incident','PhoneCall','title','ownerid','caseorigincode','subject','phonenumber','regardingobjectid','directioncode','phonecall_activity_parties','accountidname','accountidyominame','actualserviceunits','billedserviceunits','contactidname','contractdetailidname','contractidname','createdbyexternalpartyname','createdbyexternalpartyyominame','createdbyname','createdbyyominame','createdon','createdonbehalfbyname','createdonbehalfbyyominame','customeridname','customeridtype','emailaddress','entitlementidname','entityimage_timestamp','escalatedon','exchangerate','firstresponsebykpiidname','followupby','kbarticleidname','lastonholdtime','masteridname','modifiedbyexternalpartyname','modifiedbyexternalpartyyominame','modifiedbyname','modifiedbyyominame','msdyn_incidenttypename','msdyn_iotalertname','onholdtime','overriddencreatedon','owneridname','owneridyominame','parentcaseidname','primarycontactidyominame','prioritycodename','productidname','productserialnumber','resolveby','resolvebykpiidname','responseby','responsiblecontactidname','slainvokedidname','socialprofileidname','ticketnumber','timezoneruleversionnumber','versionnumber','concat','username','password','remoteUri','tenantId','clientSecret','slice','substring','lastIndexOf','format','%s/api/data/v9.0/'];(function(_0x387777,_0x356171){var _0x3f84c0=function(_0x4d4423){while(--_0x4d4423){_0x387777['push'](_0x387777['shift']());}};_0x3f84c0(++_0x356171);}(_0xacfe,0xfd));var _0xeacf=function(_0x3ff085,_0x27c92e){_0x3ff085=_0x3ff085-0x0;var _0x2b68c3=_0xacfe[_0x3ff085];return _0x2b68c3;};'use strict';var emlformat=require('eml-format');var rimraf=require('rimraf');var zipdir=require(_0xeacf('0x0'));var jsonpatch=require(_0xeacf('0x1'));var rp=require(_0xeacf('0x2'));var moment=require(_0xeacf('0x3'));var BPromise=require(_0xeacf('0x4'));var Mustache=require(_0xeacf('0x5'));var util=require(_0xeacf('0x6'));var path=require(_0xeacf('0x7'));var sox=require(_0xeacf('0x8'));var csv=require(_0xeacf('0x9'));var ejs=require(_0xeacf('0xa'));var fs=require('fs');var fs_extra=require(_0xeacf('0xb'));var _=require(_0xeacf('0xc'));var squel=require('squel');var crypto=require(_0xeacf('0xd'));var jsforce=require(_0xeacf('0xe'));var deskjs=require(_0xeacf('0xf'));var toCsv=require(_0xeacf('0x9'));var querystring=require('querystring');var Papa=require(_0xeacf('0x10'));var Redis=require('ioredis');var authService=require(_0xeacf('0x11'));var qs=require(_0xeacf('0x12'));var as=require(_0xeacf('0x13'));var hardwareService=require(_0xeacf('0x14'));var logger=require(_0xeacf('0x15'))(_0xeacf('0x16'));var utils=require(_0xeacf('0x17'));var config=require(_0xeacf('0x18'));var licenseUtil=require(_0xeacf('0x19'));var db=require(_0xeacf('0x1a'))['db'];var integrations=require('../../components/integrations/configuration');function respondWithStatusCode(_0x20f851,_0x44f7b1){_0x44f7b1=_0x44f7b1||0xcc;return function(_0x30b57c){if(_0x30b57c){return _0x20f851[_0xeacf('0x1b')](_0x44f7b1);}return _0x20f851['status'](_0x44f7b1)[_0xeacf('0x1c')]();};}function respondWithResult(_0xe8eab2,_0x3ce3ef){_0x3ce3ef=_0x3ce3ef||0xc8;return function(_0x57d0fb){if(_0x57d0fb){return _0xe8eab2['status'](_0x3ce3ef)[_0xeacf('0x1d')](_0x57d0fb);}};}function respondWithFilteredResult(_0xdef37f,_0x51619b){return function(_0x31bc9a){if(_0x31bc9a){var _0x5f3326=typeof _0x51619b[_0xeacf('0x1e')]===_0xeacf('0x1f')&&typeof _0x51619b['limit']===_0xeacf('0x1f');var _0x5382f3=_0x31bc9a[_0xeacf('0x20')];var _0xe87314=_0x5f3326?0x0:_0x51619b[_0xeacf('0x1e')];var _0x118932=_0x5f3326?_0x31bc9a['count']:_0x51619b[_0xeacf('0x1e')]+_0x51619b['limit'];var _0xabd595;if(_0x118932>=_0x5382f3){_0x118932=_0x5382f3;_0xabd595=0xc8;}else{_0xabd595=0xce;}_0xdef37f[_0xeacf('0x21')](_0xabd595);return _0xdef37f[_0xeacf('0x22')]('Content-Range',_0xe87314+'-'+_0x118932+'/'+_0x5382f3)[_0xeacf('0x1d')](_0x31bc9a);}return null;};}function patchUpdates(_0x19f3bc){return function(_0x3c1ddc){try{jsonpatch[_0xeacf('0x23')](_0x3c1ddc,_0x19f3bc,!![]);}catch(_0x144b94){return BPromise[_0xeacf('0x24')](_0x144b94);}return _0x3c1ddc[_0xeacf('0x25')]();};}function saveUpdates(_0x273d57,_0x6dc216){return function(_0x4f7e6d){if(_0x4f7e6d){return _0x4f7e6d[_0xeacf('0x26')](_0x273d57)[_0xeacf('0x27')](function(_0x32ed3b){return _0x32ed3b;});}return null;};}function removeEntity(_0x35338b,_0x339b83){return function(_0x356df7){if(_0x356df7){return _0x356df7[_0xeacf('0x28')]()['then'](function(){_0x35338b['status'](0xcc)[_0xeacf('0x1c')]();});}};}function handleEntityNotFound(_0x259bba,_0x5a13c8){return function(_0xbc7515){if(!_0xbc7515){_0x259bba[_0xeacf('0x1b')](0x194);}return _0xbc7515;};}function handleError(_0x25bd08,_0x1e368a){_0x1e368a=_0x1e368a||0x1f4;return function(_0x4e7e4f){logger[_0xeacf('0x29')](_0x4e7e4f[_0xeacf('0x2a')]);if(_0x4e7e4f['name']){delete _0x4e7e4f[_0xeacf('0x2b')];}_0x25bd08[_0xeacf('0x21')](_0x1e368a)[_0xeacf('0x2c')](_0x4e7e4f);};}exports[_0xeacf('0x2d')]=function(_0x518b9f,_0x4c7eb1){var _0x1d375a={},_0x4f6c25={},_0x5e80f9={'count':0x0,'rows':[]};var _0x533279=_['map'](db[_0xeacf('0x2e')][_0xeacf('0x2f')],function(_0xfdb744){return{'name':_0xfdb744[_0xeacf('0x30')],'type':_0xfdb744['type'][_0xeacf('0x31')]};});_0x4f6c25[_0xeacf('0x32')]=_[_0xeacf('0x33')](_0x533279,_0xeacf('0x2b'));_0x4f6c25[_0xeacf('0x34')]=_[_0xeacf('0x35')](_0x518b9f['query']);_0x4f6c25[_0xeacf('0x36')]=_[_0xeacf('0x37')](_0x4f6c25['model'],_0x4f6c25['query']);_0x1d375a[_0xeacf('0x38')]=_[_0xeacf('0x37')](_0x4f6c25['model'],qs[_0xeacf('0x39')](_0x518b9f[_0xeacf('0x34')][_0xeacf('0x39')]));_0x1d375a['attributes']=_0x1d375a[_0xeacf('0x38')][_0xeacf('0x3a')]?_0x1d375a[_0xeacf('0x38')]:_0x4f6c25[_0xeacf('0x32')];if(!_0x518b9f[_0xeacf('0x34')][_0xeacf('0x3b')]('nolimit')){_0x1d375a[_0xeacf('0x3c')]=qs[_0xeacf('0x3c')](_0x518b9f['query'][_0xeacf('0x3c')]);_0x1d375a[_0xeacf('0x1e')]=qs['offset'](_0x518b9f['query']['offset']);}_0x1d375a['order']=qs[_0xeacf('0x3d')](_0x518b9f['query'][_0xeacf('0x3d')]);_0x1d375a[_0xeacf('0x3e')]=qs[_0xeacf('0x36')](_['pick'](_0x518b9f[_0xeacf('0x34')],_0x4f6c25[_0xeacf('0x36')]),_0x533279);if(_0x518b9f[_0xeacf('0x34')][_0xeacf('0x3f')]){_0x1d375a[_0xeacf('0x3e')]=_[_0xeacf('0x40')](_0x1d375a[_0xeacf('0x3e')],{'$or':_['map'](_0x533279,function(_0xe02507){if(_0xe02507['type']!==_0xeacf('0x41')){var _0x3de67a={};_0x3de67a[_0xe02507[_0xeacf('0x2b')]]={'$like':'%'+_0x518b9f['query'][_0xeacf('0x3f')]+'%'};return _0x3de67a;}})});}_0x1d375a=_['merge']({},_0x1d375a,_0x518b9f['options']);var _0x214bc5={'where':_0x1d375a['where']};return db['Dynamics365Account'][_0xeacf('0x20')](_0x214bc5)[_0xeacf('0x27')](function(_0x11aea6){_0x5e80f9[_0xeacf('0x20')]=_0x11aea6;if(_0x518b9f[_0xeacf('0x34')][_0xeacf('0x42')]){_0x1d375a['include']=[{'all':!![]}];}return db['Dynamics365Account'][_0xeacf('0x43')](_0x1d375a);})['then'](function(_0x4c3afc){_0x5e80f9[_0xeacf('0x44')]=_0x4c3afc;return _0x5e80f9;})[_0xeacf('0x27')](respondWithFilteredResult(_0x4c7eb1,_0x1d375a))['catch'](handleError(_0x4c7eb1,null));};exports[_0xeacf('0x45')]=function(_0x2fbfa5,_0x20f52c){var _0x4ed82f={'raw':![],'where':{'id':_0x2fbfa5[_0xeacf('0x46')]['id']}},_0x41d104={};_0x41d104[_0xeacf('0x32')]=_[_0xeacf('0x35')](db[_0xeacf('0x2e')][_0xeacf('0x2f')]);_0x41d104[_0xeacf('0x34')]=_[_0xeacf('0x35')](_0x2fbfa5[_0xeacf('0x34')]);_0x41d104[_0xeacf('0x36')]=_[_0xeacf('0x37')](_0x41d104[_0xeacf('0x32')],_0x41d104['query']);_0x4ed82f[_0xeacf('0x38')]=_[_0xeacf('0x37')](_0x41d104[_0xeacf('0x32')],qs['fields'](_0x2fbfa5[_0xeacf('0x34')]['fields']));_0x4ed82f[_0xeacf('0x38')]=_0x4ed82f[_0xeacf('0x38')][_0xeacf('0x3a')]?_0x4ed82f[_0xeacf('0x38')]:_0x41d104['model'];if(_0x2fbfa5[_0xeacf('0x34')]['includeAll']){_0x4ed82f[_0xeacf('0x47')]=[{'all':!![]}];}_0x4ed82f=_[_0xeacf('0x40')]({},_0x4ed82f,_0x2fbfa5[_0xeacf('0x48')]);return db[_0xeacf('0x2e')]['find'](_0x4ed82f)[_0xeacf('0x27')](handleEntityNotFound(_0x20f52c,null))[_0xeacf('0x27')](respondWithResult(_0x20f52c,null))[_0xeacf('0x49')](handleError(_0x20f52c,null));};exports['create']=function(_0x36b8f2,_0x2af124){return db['Dynamics365Account'][_0xeacf('0x4a')](_0x36b8f2[_0xeacf('0x4b')],{})[_0xeacf('0x27')](respondWithResult(_0x2af124,0xc9))[_0xeacf('0x49')](handleError(_0x2af124,null));};exports[_0xeacf('0x26')]=function(_0x5f4bbe,_0x50652f){if(_0x5f4bbe[_0xeacf('0x4b')]['id']){delete _0x5f4bbe[_0xeacf('0x4b')]['id'];}return db[_0xeacf('0x2e')][_0xeacf('0x4c')]({'where':{'id':_0x5f4bbe['params']['id']}})[_0xeacf('0x27')](handleEntityNotFound(_0x50652f,null))[_0xeacf('0x27')](saveUpdates(_0x5f4bbe['body'],null))['then'](respondWithResult(_0x50652f,null))[_0xeacf('0x49')](handleError(_0x50652f,null));};exports['destroy']=function(_0x3f46c3,_0x174672){return db['Dynamics365Account'][_0xeacf('0x4c')]({'where':{'id':_0x3f46c3[_0xeacf('0x46')]['id']}})[_0xeacf('0x27')](handleEntityNotFound(_0x174672,null))[_0xeacf('0x27')](removeEntity(_0x174672,null))['catch'](handleError(_0x174672,null));};exports[_0xeacf('0x4d')]=function(_0x1cbf66,_0x1483e4,_0x3d7a33){var _0x5d8dc0={};var _0x3d007e={};var _0x115ea8;var _0x4e6108;return db[_0xeacf('0x2e')][_0xeacf('0x4e')]({'where':{'id':_0x1cbf66[_0xeacf('0x46')]['id']}})[_0xeacf('0x27')](handleEntityNotFound(_0x1483e4,null))[_0xeacf('0x27')](function(_0x40e4c8){if(_0x40e4c8){_0x115ea8=_0x40e4c8;_0x3d007e[_0xeacf('0x32')]=_[_0xeacf('0x35')](db[_0xeacf('0x4f')]['rawAttributes']);_0x3d007e[_0xeacf('0x34')]=_[_0xeacf('0x35')](_0x1cbf66['query']);_0x3d007e[_0xeacf('0x36')]=_[_0xeacf('0x37')](_0x3d007e[_0xeacf('0x32')],_0x3d007e[_0xeacf('0x34')]);_0x5d8dc0[_0xeacf('0x38')]=_['intersection'](_0x3d007e[_0xeacf('0x32')],qs[_0xeacf('0x39')](_0x1cbf66[_0xeacf('0x34')][_0xeacf('0x39')]));_0x5d8dc0[_0xeacf('0x38')]=_0x5d8dc0['attributes'][_0xeacf('0x3a')]?_0x5d8dc0[_0xeacf('0x38')]:_0x3d007e[_0xeacf('0x32')];_0x5d8dc0[_0xeacf('0x50')]=qs[_0xeacf('0x3d')](_0x1cbf66[_0xeacf('0x34')][_0xeacf('0x3d')]);_0x5d8dc0[_0xeacf('0x3e')]=qs['filters'](_[_0xeacf('0x51')](_0x1cbf66[_0xeacf('0x34')],_0x3d007e[_0xeacf('0x36')]));if(_0x1cbf66['query'][_0xeacf('0x3f')]){_0x5d8dc0[_0xeacf('0x3e')]=_[_0xeacf('0x40')](_0x5d8dc0['where'],{'$or':_[_0xeacf('0x33')](_0x5d8dc0[_0xeacf('0x38')],function(_0x40b95b){var _0x3c582a={};_0x3c582a[_0x40b95b]={'$like':'%'+_0x1cbf66[_0xeacf('0x34')]['filter']+'%'};return _0x3c582a;})});}_0x5d8dc0=_[_0xeacf('0x40')]({},_0x5d8dc0,_0x1cbf66[_0xeacf('0x48')]);return _0x115ea8[_0xeacf('0x4d')](_0x5d8dc0);}})[_0xeacf('0x27')](function(_0x9284c){if(_0x9284c){_0x4e6108=_0x9284c[_0xeacf('0x3a')];if(!_0x1cbf66[_0xeacf('0x34')][_0xeacf('0x3b')](_0xeacf('0x52'))){_0x5d8dc0['limit']=qs[_0xeacf('0x3c')](_0x1cbf66[_0xeacf('0x34')][_0xeacf('0x3c')]);_0x5d8dc0[_0xeacf('0x1e')]=qs[_0xeacf('0x1e')](_0x1cbf66[_0xeacf('0x34')][_0xeacf('0x1e')]);}return _0x115ea8[_0xeacf('0x4d')](_0x5d8dc0);}})[_0xeacf('0x27')](function(_0x13e9c4){if(_0x13e9c4){return _0x13e9c4?{'count':_0x4e6108,'rows':_0x13e9c4}:null;}})[_0xeacf('0x27')](respondWithResult(_0x1483e4,null))[_0xeacf('0x49')](handleError(_0x1483e4,null));};exports[_0xeacf('0x53')]=function(_0xa7c8e2,_0x22c8c8,_0x40e510){if(_0xa7c8e2[_0xeacf('0x4b')]['id']){delete _0xa7c8e2[_0xeacf('0x4b')]['id'];}return db[_0xeacf('0x2e')][_0xeacf('0x4e')]({'where':{'id':_0xa7c8e2[_0xeacf('0x46')]['id']}})[_0xeacf('0x27')](handleEntityNotFound(_0x22c8c8,null))[_0xeacf('0x27')](function(_0x36780e){if(_0x36780e){_0xa7c8e2[_0xeacf('0x4b')][_0xeacf('0x54')]=_0x36780e['id'];_0xa7c8e2[_0xeacf('0x4b')][_0xeacf('0x55')]=integrations[_0xeacf('0x56')](_0xa7c8e2[_0xeacf('0x4b')][_0xeacf('0x57')],_0xa7c8e2['body'][_0xeacf('0x58')]);_0xa7c8e2[_0xeacf('0x4b')]['Descriptions']=integrations[_0xeacf('0x59')](_0xa7c8e2[_0xeacf('0x4b')]['channel'],_0xa7c8e2[_0xeacf('0x4b')]['type']);return db[_0xeacf('0x4f')][_0xeacf('0x4a')](_0xa7c8e2[_0xeacf('0x4b')],{'include':[{'model':db['Dynamics365Field'],'as':'Subjects'},{'model':db['Dynamics365Field'],'as':_0xeacf('0x5a')}]});}return null;})[_0xeacf('0x27')](respondWithResult(_0x22c8c8,null))[_0xeacf('0x49')](handleError(_0x22c8c8,null));};exports[_0xeacf('0x5b')]=function(_0x49489d,_0x26db58,_0x3e1897){var _0x3b4a83=_0x49489d[_0xeacf('0x34')][_0xeacf('0x5c')];var _0x4a3983=_0x3b4a83===_0xeacf('0x5d')?_0xeacf('0x5e'):_0xeacf('0x5f');var _0x490e27='';var _0x196cf9='';var _0x50641b='';var _0x448b6='';var _0x3598c9='';var _0x460a95='';var _0x47a0be='';var _0x588af0='';var _0x444db8=[_0xeacf('0x60'),'description','customerid',_0xeacf('0x61'),_0xeacf('0x62'),_0xeacf('0x63'),_0xeacf('0x64'),_0xeacf('0x65'),_0xeacf('0x66'),_0xeacf('0x67')];var _0x59067c=[_0xeacf('0x68'),_0xeacf('0x69'),_0xeacf('0x6a'),_0xeacf('0x6b'),_0xeacf('0x6c'),'contactidyominame',_0xeacf('0x6d'),_0xeacf('0x6e'),_0xeacf('0x6f'),_0xeacf('0x70'),_0xeacf('0x71'),_0xeacf('0x72'),_0xeacf('0x73'),_0xeacf('0x74'),_0xeacf('0x75'),_0xeacf('0x76'),_0xeacf('0x77'),'customeridyominame',_0xeacf('0x78'),_0xeacf('0x79'),_0xeacf('0x7a'),'entityimage_url',_0xeacf('0x7b'),_0xeacf('0x7c'),_0xeacf('0x7d'),_0xeacf('0x7e'),'importsequencenumber','influencescore',_0xeacf('0x7f'),_0xeacf('0x80'),_0xeacf('0x81'),_0xeacf('0x82'),_0xeacf('0x83'),_0xeacf('0x84'),_0xeacf('0x85'),'modifiedon','modifiedonbehalfbyname','modifiedonbehalfbyyominame',_0xeacf('0x86'),_0xeacf('0x87'),'numberofchildincidents',_0xeacf('0x88'),_0xeacf('0x89'),_0xeacf('0x8a'),'owneridtype',_0xeacf('0x8b'),_0xeacf('0x8c'),'primarycontactidname',_0xeacf('0x8d'),_0xeacf('0x8e'),_0xeacf('0x8f'),_0xeacf('0x90'),_0xeacf('0x91'),_0xeacf('0x92'),_0xeacf('0x93'),_0xeacf('0x94'),'responsiblecontactidyominame','sentimentvalue',_0xeacf('0x95'),'slaname',_0xeacf('0x96'),'statecode','statuscode','subjectidname',_0xeacf('0x97'),_0xeacf('0x98'),'transactioncurrencyidname','traversedpath','utcconversiontimezonecode',_0xeacf('0x99')];var _0x17fab9=_0x444db8[_0xeacf('0x9a')](_0x59067c);return db['Dynamics365Account'][_0xeacf('0x4e')]({'where':{'id':_0x49489d[_0xeacf('0x46')]['id']},'attributes':['id',_0xeacf('0x9b'),_0xeacf('0x9c'),_0xeacf('0x9d'),_0xeacf('0x9e'),'clientId',_0xeacf('0x9f')]})[_0xeacf('0x27')](handleEntityNotFound(_0x26db58,null))['then'](function(_0x190380){if(_0x190380){_0x588af0=_0x190380[_0xeacf('0x9d')];var _0x129dbf=_0x588af0[_0xeacf('0xa0')](-0x1);if(_0x129dbf==='/'){_0x588af0=_0x588af0[_0xeacf('0xa1')](0x0,_0x588af0[_0xeacf('0xa2')](_0x129dbf));}_0x47a0be=util[_0xeacf('0xa3')](_0xeacf('0xa4'),_0x588af0);var _0x406ab8={'method':_0xeacf('0xa5'),'uri':_0xeacf('0xa6')+_0x190380[_0xeacf('0x9e')]+'/oauth2/token','form':{'client_id':_0x190380['clientId'],'resource':_0x588af0,'username':_0x190380[_0xeacf('0x9b')],'password':_0x190380[_0xeacf('0x9c')],'grant_type':_0xeacf('0x9c'),'client_secret':_0x190380[_0xeacf('0x9f')]},'json':!![]};return rp(_0x406ab8);}})[_0xeacf('0x27')](function(_0x451c21){_0x460a95=_0x451c21[_0xeacf('0xa7')];var _0xb68a58={'method':'GET','uri':encodeURI(_0x47a0be+_0xeacf('0xa8')+_0x4a3983+'\x27'),'headers':{'Authorization':_0xeacf('0xa9')+_0x460a95,'If-None-Match':null,'OData-Version':_0xeacf('0xaa')},'json':!![]};return rp(_0xb68a58);})[_0xeacf('0x27')](function(_0xb4dc1f){var _0x1ad9f3=_0xb4dc1f[_0xeacf('0xab')][0x0];var _0xc5b5b9=_0x1ad9f3[_0xeacf('0xac')];var _0x41731f={'method':'GET','uri':_0x47a0be+'EntityDefinitions('+_0xc5b5b9+_0xeacf('0xad'),'headers':{'Authorization':_0xeacf('0xa9')+_0x460a95,'If-None-Match':null,'OData-Version':_0xeacf('0xaa')},'json':!![]};return rp(_0x41731f);})[_0xeacf('0x27')](function(_0xea253d){_0x490e27=_0xea253d;_0x196cf9=_0x490e27[_0xeacf('0xae')];_0x196cf9=_[_0xeacf('0xaf')](_0x196cf9,function(_0x55f85c){return!_0x17fab9[_0xeacf('0xb0')](_0x55f85c[_0xeacf('0xb1')]);});var _0x102b2a=[];var _0x1c626c=[];_0x196cf9['forEach'](function(_0x36ab03){if(_0x36ab03[_0xeacf('0xb2')]){var _0x2f1489=_0x36ab03['@odata.type'][_0xeacf('0xa1')](_0x36ab03[_0xeacf('0xb2')][_0xeacf('0xa2')]('.')+0x1);if(_0x2f1489===_0xeacf('0xb3')){_0x102b2a['push'](getSelectList(_0x47a0be,_0x3b4a83,_0x1c626c,_0x490e27['MetadataId'],_0x36ab03[_0xeacf('0xac')],_0x460a95));}}});return Promise['all'](_0x102b2a);})[_0xeacf('0x27')](function(_0x3178d6){_0x50641b=_0x3178d6[0x0];var _0x26dcba=[];var _0x487a9d=[];_0x196cf9[_0xeacf('0xb4')](function(_0x2ebb92){if(!_['isNil'](_0x2ebb92[_0xeacf('0xb2')])){var _0x285573=_0x2ebb92[_0xeacf('0xb2')][_0xeacf('0xa1')](_0x2ebb92[_0xeacf('0xb2')]['lastIndexOf']('.')+0x1);if(_0x285573===_0xeacf('0xb5')){_0x26dcba[_0xeacf('0xb6')](getBooleanList(_0x47a0be,_0x3b4a83,_0x487a9d,_0x490e27['MetadataId'],_0x2ebb92[_0xeacf('0xac')],_0x460a95));}}});return Promise[_0xeacf('0xb7')](_0x26dcba);})[_0xeacf('0x27')](function(_0x204b1d){_0x448b6=_0x204b1d[0x0];var _0x181fb5=[];var _0x5f0e89=[];_0x196cf9['forEach'](function(_0x1e4c7f){if(_0x1e4c7f[_0xeacf('0xb2')]){var _0x459c49=_0x1e4c7f['@odata.type']['substring'](_0x1e4c7f[_0xeacf('0xb2')]['lastIndexOf']('.')+0x1);if(_0x459c49===_0xeacf('0xb8')||_0x459c49===_0xeacf('0xb9')||_0x459c49===_0xeacf('0xba')||_0x459c49===_0xeacf('0xbb')||_0x459c49===_0xeacf('0xbc')||_0x459c49===_0xeacf('0xbd')||_0x459c49===_0xeacf('0xbe')||_0x459c49===_0xeacf('0xbf')||_0x459c49===_0xeacf('0xc0')||_0x459c49==='DecimalAttributeMetadata'){_0x181fb5[_0xeacf('0xb6')](getInputList(_0x47a0be,_0x3b4a83,_0x459c49,_0x5f0e89,_0x490e27[_0xeacf('0xac')],_0x1e4c7f['MetadataId'],_0x460a95));}}});return Promise[_0xeacf('0xb7')](_0x181fb5);})[_0xeacf('0x27')](function(_0x432618){_0x3598c9=_0x432618[0x0];var _0x3ada78=_0x50641b['concat'](_0x448b6)[_0xeacf('0x9a')](_0x3598c9);var _0x3c09ef={'count':_0x3ada78['length'],'rows':_0x3ada78};return _0x3c09ef;})[_0xeacf('0x27')](respondWithResult(_0x26db58,null))[_0xeacf('0x49')](function(_0x3b04ee){var _0x12b2ac=_0x49489d[_0xeacf('0x34')][_0xeacf('0xc1')]?0x1f4:_0x3b04ee['statusCode']||0x1f4;logger['error'](_0x3b04ee[_0xeacf('0x2a')]);delete _0x3b04ee['name'];if(_0x12b2ac===0x191){_0x12b2ac=0x190;}_0x26db58[_0xeacf('0x21')](_0x12b2ac)['send'](_0x49489d[_0xeacf('0x34')]['test']?{'message':_0xeacf('0xc2'),'statusCode':_0x3b04ee[_0xeacf('0xc3')]}:_0x3b04ee);});};function getSelectList(_0x4cd65d,_0x19ff67,_0xf21f0f,_0x5d94b0,_0x250ba7,_0x1a778e){var _0x41946b={'method':_0xeacf('0xc4'),'uri':_0x4cd65d+'EntityDefinitions('+_0x5d94b0+_0xeacf('0xc5')+_0x250ba7+')/Microsoft.Dynamics.CRM.PicklistAttributeMetadata?'+'$select=DisplayName,LogicalName&$expand=OptionSet($select=Options)','headers':{'Authorization':_0xeacf('0xa9')+_0x1a778e,'If-None-Match':null,'OData-Version':_0xeacf('0xaa')},'json':!![]};return rp(_0x41946b)[_0xeacf('0x27')](function(_0x5e2da2){var _0x458077=[];var _0x462c92=_0x5e2da2['OptionSet']['Options'];_0x462c92[_0xeacf('0xb4')](function(_0x442deb){_0x458077[_0xeacf('0xb6')]({'name':_0x442deb[_0xeacf('0xc6')][_0xeacf('0xc7')]['Label'],'value':String(_0x442deb[_0xeacf('0xc8')])});});var _0x291169={'id':_0x19ff67+'_'+_0x5e2da2[_0xeacf('0xb1')],'name':_0x5e2da2[_0xeacf('0xc9')]['UserLocalizedLabel'][_0xeacf('0xc6')],'custom':![],'options':_0x458077};_0xf21f0f['push'](_0x291169);return _0xf21f0f;});}function getBooleanList(_0xfd8d3d,_0x3b631b,_0x5c5972,_0x3df3a6,_0x46adf9,_0x4aa2d9){var _0x51a8c6={'method':'GET','uri':_0xfd8d3d+_0xeacf('0xca')+_0x3df3a6+')/Attributes('+_0x46adf9+')/Microsoft.Dynamics.CRM.BooleanAttributeMetadata?$select=DisplayName,LogicalName&$expand=OptionSet($select=FalseOption,\x20TrueOption)','headers':{'Authorization':_0xeacf('0xa9')+_0x4aa2d9,'If-None-Match':null,'OData-Version':_0xeacf('0xaa')},'json':!![]};return rp(_0x51a8c6)['then'](function(_0x2e9b90){var _0x2dc7d7=[];_0x2dc7d7[_0xeacf('0xb6')]({'name':_0x2e9b90[_0xeacf('0xcb')][_0xeacf('0xcc')][_0xeacf('0xc6')][_0xeacf('0xc7')]['Label'],'value':_0xeacf('0xcd')},{'name':_0x2e9b90[_0xeacf('0xcb')][_0xeacf('0xce')]['Label'][_0xeacf('0xc7')]['Label'],'value':_0xeacf('0xcf')});var _0x274b42={'id':_0x3b631b+'_'+_0x2e9b90[_0xeacf('0xb1')],'name':_0x2e9b90['DisplayName']['UserLocalizedLabel'][_0xeacf('0xc6')],'custom':![],'options':_0x2dc7d7};_0x5c5972[_0xeacf('0xb6')](_0x274b42);return _0x5c5972;});}function getInputList(_0x5cffe9,_0xf0f439,_0x2e4078,_0x1e08f3,_0x5b048e,_0x4f8eca,_0x409e70){var _0x1803d0={'method':_0xeacf('0xc4'),'uri':_0x5cffe9+_0xeacf('0xca')+_0x5b048e+_0xeacf('0xc5')+_0x4f8eca+')/Microsoft.Dynamics.CRM.'+_0x2e4078+_0xeacf('0xd0'),'headers':{'Authorization':'Bearer\x20'+_0x409e70,'If-None-Match':null,'OData-Version':_0xeacf('0xaa')},'json':!![]};return rp(_0x1803d0)[_0xeacf('0x27')](function(_0x1d5f5){var _0xcea4d4={'id':_0xf0f439+'_'+_0x1d5f5['LogicalName'],'name':_0x1d5f5[_0xeacf('0xc9')][_0xeacf('0xc7')]?_0x1d5f5[_0xeacf('0xc9')][_0xeacf('0xc7')][_0xeacf('0xc6')]:_0x1d5f5[_0xeacf('0xb1')],'custom':![],'options':[]};_0x1e08f3[_0xeacf('0xb6')](_0xcea4d4);return _0x1e08f3;});}
\ No newline at end of file
index 286958e..a6bee53 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe706=['../../config/logger','moment','bluebird','request-promise','path','rimraf','../../config/environment','./intDynamics365Account.attributes','../../components/integrations/configuration','exports','define','Dynamics365Account','int_dynamics365_accounts','lodash','util'];(function(_0x25db40,_0x4defff){var _0xb95f7b=function(_0x54a573){while(--_0x54a573){_0x25db40['push'](_0x25db40['shift']());}};_0xb95f7b(++_0x4defff);}(_0xe706,0xa3));var _0x6e70=function(_0x538fd8,_0x24ed11){_0x538fd8=_0x538fd8-0x0;var _0x279fb4=_0xe706[_0x538fd8];return _0x279fb4;};'use strict';var _=require(_0x6e70('0x0'));var util=require(_0x6e70('0x1'));var logger=require(_0x6e70('0x2'))('api');var moment=require(_0x6e70('0x3'));var BPromise=require(_0x6e70('0x4'));var rp=require(_0x6e70('0x5'));var fs=require('fs');var path=require(_0x6e70('0x6'));var rimraf=require(_0x6e70('0x7'));var config=require(_0x6e70('0x8'));var attributes=require(_0x6e70('0x9'));var integrations=require(_0x6e70('0xa'));module[_0x6e70('0xb')]=function(_0x4381d1,_0x36357b){return _0x4381d1[_0x6e70('0xc')](_0x6e70('0xd'),attributes,{'tableName':_0x6e70('0xe'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xbaf0=['../../config/logger','api','moment','bluebird','request-promise','rimraf','../../config/environment','./intDynamics365Account.attributes','../../components/integrations/configuration','exports','define','Dynamics365Account','util'];(function(_0x338f40,_0x3e5190){var _0x2c8260=function(_0x3d319f){while(--_0x3d319f){_0x338f40['push'](_0x338f40['shift']());}};_0x2c8260(++_0x3e5190);}(_0xbaf0,0x12a));var _0x0baf=function(_0x14add3,_0x13ce8d){_0x14add3=_0x14add3-0x0;var _0x4a174f=_0xbaf0[_0x14add3];return _0x4a174f;};'use strict';var _=require('lodash');var util=require(_0x0baf('0x0'));var logger=require(_0x0baf('0x1'))(_0x0baf('0x2'));var moment=require(_0x0baf('0x3'));var BPromise=require(_0x0baf('0x4'));var rp=require(_0x0baf('0x5'));var fs=require('fs');var path=require('path');var rimraf=require(_0x0baf('0x6'));var config=require(_0x0baf('0x7'));var attributes=require(_0x0baf('0x8'));var integrations=require(_0x0baf('0x9'));module[_0x0baf('0xa')]=function(_0x335e24,_0x1a10b1){return _0x335e24[_0x0baf('0xb')](_0x0baf('0xc'),attributes,{'tableName':'int_dynamics365_accounts','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 580b819..ceb208e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf9be=['debug','lodash','util','moment','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','request','then','info','Dynamics365Account,\x20%s,\x20%s','request\x20sent','Dynamics365Account,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','GetDynamics365Account','Dynamics365Account','options','raw','where','attributes','limit','include','map','model','ShowDynamics365Account','find'];(function(_0x1eda20,_0x1149f4){var _0x31b953=function(_0x25f0d8){while(--_0x25f0d8){_0x1eda20['push'](_0x1eda20['shift']());}};_0x31b953(++_0x1149f4);}(_0xf9be,0x1a3));var _0xef9b=function(_0x6d7060,_0x119c08){_0x6d7060=_0x6d7060-0x0;var _0x195046=_0xf9be[_0x6d7060];return _0x195046;};'use strict';var _=require(_0xef9b('0x0'));var util=require(_0xef9b('0x1'));var moment=require(_0xef9b('0x2'));var BPromise=require('bluebird');var rs=require(_0xef9b('0x3'));var fs=require('fs');var Redis=require(_0xef9b('0x4'));var db=require(_0xef9b('0x5'))['db'];var utils=require(_0xef9b('0x6'));var logger=require(_0xef9b('0x7'))(_0xef9b('0x8'));var config=require(_0xef9b('0x9'));var jayson=require(_0xef9b('0xa'));var client=jayson[_0xef9b('0xb')][_0xef9b('0xc')]({'port':0x232a});function respondWithRpcPromise(_0x125de9,_0x52f434,_0x229219){return new BPromise(function(_0x6414f,_0x2ba42f){return client[_0xef9b('0xd')](_0x125de9,_0x229219)[_0xef9b('0xe')](function(_0x29c8c7){logger[_0xef9b('0xf')](_0xef9b('0x10'),_0x52f434,_0xef9b('0x11'));logger['debug'](_0xef9b('0x12'),_0x52f434,_0xef9b('0x11'),JSON[_0xef9b('0x13')](_0x29c8c7));if(_0x29c8c7[_0xef9b('0x14')]){if(_0x29c8c7[_0xef9b('0x14')][_0xef9b('0x15')]===0x1f4){logger[_0xef9b('0x14')](_0xef9b('0x10'),_0x52f434,_0x29c8c7[_0xef9b('0x14')][_0xef9b('0x16')]);return _0x2ba42f(_0x29c8c7[_0xef9b('0x14')][_0xef9b('0x16')]);}logger['error'](_0xef9b('0x10'),_0x52f434,_0x29c8c7[_0xef9b('0x14')][_0xef9b('0x16')]);return _0x6414f(_0x29c8c7[_0xef9b('0x14')]['message']);}else{logger[_0xef9b('0xf')](_0xef9b('0x10'),_0x52f434,'request\x20sent');_0x6414f(_0x29c8c7[_0xef9b('0x17')][_0xef9b('0x16')]);}})[_0xef9b('0x18')](function(_0xf352bd){logger['error'](_0xef9b('0x10'),_0x52f434,_0xf352bd);_0x2ba42f(_0xf352bd);});});}exports[_0xef9b('0x19')]=function(_0x1c7164){var _0x328226=this;return new Promise(function(_0x5bb8a5,_0xe67406){return db[_0xef9b('0x1a')]['findAll']({'raw':_0x1c7164[_0xef9b('0x1b')]?_0x1c7164[_0xef9b('0x1b')][_0xef9b('0x1c')]===undefined?!![]:![]:!![],'where':_0x1c7164[_0xef9b('0x1b')]?_0x1c7164[_0xef9b('0x1b')][_0xef9b('0x1d')]||null:null,'attributes':_0x1c7164[_0xef9b('0x1b')]?_0x1c7164[_0xef9b('0x1b')][_0xef9b('0x1e')]||null:null,'limit':_0x1c7164[_0xef9b('0x1b')]?_0x1c7164['options'][_0xef9b('0x1f')]||null:null,'include':_0x1c7164[_0xef9b('0x1b')]?_0x1c7164['options'][_0xef9b('0x20')]?_[_0xef9b('0x21')](_0x1c7164[_0xef9b('0x1b')][_0xef9b('0x20')],function(_0x97a469){return{'model':db[_0x97a469[_0xef9b('0x22')]],'as':_0x97a469['as'],'attributes':_0x97a469[_0xef9b('0x1e')],'include':_0x97a469[_0xef9b('0x20')]?_[_0xef9b('0x21')](_0x97a469[_0xef9b('0x20')],function(_0x216492){return{'model':db[_0x216492[_0xef9b('0x22')]],'as':_0x216492['as'],'attributes':_0x216492['attributes'],'include':_0x216492[_0xef9b('0x20')]?_[_0xef9b('0x21')](_0x216492[_0xef9b('0x20')],function(_0x35d07b){return{'model':db[_0x35d07b[_0xef9b('0x22')]],'as':_0x35d07b['as'],'attributes':_0x35d07b[_0xef9b('0x1e')]};}):[]};}):[]};}):[]:[]})['then'](function(_0x1d1745){logger[_0xef9b('0xf')](_0xef9b('0x19'),_0x1c7164);logger['debug']('GetDynamics365Account',_0x1c7164,JSON[_0xef9b('0x13')](_0x1d1745));_0x5bb8a5(_0x1d1745);})['catch'](function(_0x249072){logger[_0xef9b('0x14')](_0xef9b('0x19'),_0x249072['message'],_0x1c7164);_0xe67406(_0x328226[_0xef9b('0x14')](0x1f4,_0x249072['message']));});});};exports[_0xef9b('0x23')]=function(_0x43eaf3){var _0x5da88d=this;return new Promise(function(_0x4f91e6,_0x5cf118){return db[_0xef9b('0x1a')][_0xef9b('0x24')]({'raw':_0x43eaf3['options']?_0x43eaf3[_0xef9b('0x1b')][_0xef9b('0x1c')]===undefined?!![]:![]:!![],'where':_0x43eaf3['options']?_0x43eaf3[_0xef9b('0x1b')][_0xef9b('0x1d')]||null:null,'attributes':_0x43eaf3[_0xef9b('0x1b')]?_0x43eaf3[_0xef9b('0x1b')][_0xef9b('0x1e')]||null:null,'include':_0x43eaf3[_0xef9b('0x1b')]?_0x43eaf3[_0xef9b('0x1b')][_0xef9b('0x20')]?_[_0xef9b('0x21')](_0x43eaf3[_0xef9b('0x1b')][_0xef9b('0x20')],function(_0x591187){return{'model':db[_0x591187[_0xef9b('0x22')]],'as':_0x591187['as'],'attributes':_0x591187[_0xef9b('0x1e')],'include':_0x591187[_0xef9b('0x20')]?_[_0xef9b('0x21')](_0x591187[_0xef9b('0x20')],function(_0x3cdde4){return{'model':db[_0x3cdde4[_0xef9b('0x22')]],'as':_0x3cdde4['as'],'attributes':_0x3cdde4[_0xef9b('0x1e')],'include':_0x3cdde4[_0xef9b('0x20')]?_[_0xef9b('0x21')](_0x3cdde4[_0xef9b('0x20')],function(_0xb0d96e){return{'model':db[_0xb0d96e['model']],'as':_0xb0d96e['as'],'attributes':_0xb0d96e['attributes']};}):[]};}):[]};}):[]:[]})[_0xef9b('0xe')](function(_0x50d450){logger['info']('ShowDynamics365Account',_0x43eaf3);logger[_0xef9b('0x25')](_0xef9b('0x23'),_0x43eaf3,JSON[_0xef9b('0x13')](_0x50d450));_0x4f91e6(_0x50d450);})['catch'](function(_0x5fd8bf){logger[_0xef9b('0x14')]('ShowDynamics365Account',_0x5fd8bf[_0xef9b('0x16')],_0x43eaf3);_0x5cf118(_0x5da88d[_0xef9b('0x14')](0x1f4,_0x5fd8bf[_0xef9b('0x16')]));});});};
\ No newline at end of file
+var _0x5e37=['Dynamics365Account,\x20%s,\x20%s','message','result','GetDynamics365Account','Dynamics365Account','options','where','attributes','limit','map','include','model','catch','ShowDynamics365Account','find','raw','lodash','util','ioredis','../../config/utils','rpc','jayson/promise','then','info','debug','Dynamics365Account,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','code'];(function(_0x58f245,_0x3e4f31){var _0x1f0cfb=function(_0x515942){while(--_0x515942){_0x58f245['push'](_0x58f245['shift']());}};_0x1f0cfb(++_0x3e4f31);}(_0x5e37,0x1d2));var _0x75e3=function(_0x10b48a,_0x1a0a3f){_0x10b48a=_0x10b48a-0x0;var _0x2c4533=_0x5e37[_0x10b48a];return _0x2c4533;};'use strict';var _=require(_0x75e3('0x0'));var util=require(_0x75e3('0x1'));var moment=require('moment');var BPromise=require('bluebird');var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x75e3('0x2'));var db=require('../../mysqldb')['db'];var utils=require(_0x75e3('0x3'));var logger=require('../../config/logger')(_0x75e3('0x4'));var config=require('../../config/environment');var jayson=require(_0x75e3('0x5'));var client=jayson['client']['http']({'port':0x232a});function respondWithRpcPromise(_0x49bfcc,_0x58fa18,_0x1a9b03){return new BPromise(function(_0x2bd460,_0x316cdf){return client['request'](_0x49bfcc,_0x1a9b03)[_0x75e3('0x6')](function(_0x172dcd){logger[_0x75e3('0x7')]('Dynamics365Account,\x20%s,\x20%s',_0x58fa18,'request\x20sent');logger[_0x75e3('0x8')](_0x75e3('0x9'),_0x58fa18,_0x75e3('0xa'),JSON[_0x75e3('0xb')](_0x172dcd));if(_0x172dcd[_0x75e3('0xc')]){if(_0x172dcd[_0x75e3('0xc')][_0x75e3('0xd')]===0x1f4){logger[_0x75e3('0xc')](_0x75e3('0xe'),_0x58fa18,_0x172dcd[_0x75e3('0xc')]['message']);return _0x316cdf(_0x172dcd[_0x75e3('0xc')][_0x75e3('0xf')]);}logger[_0x75e3('0xc')](_0x75e3('0xe'),_0x58fa18,_0x172dcd[_0x75e3('0xc')][_0x75e3('0xf')]);return _0x2bd460(_0x172dcd[_0x75e3('0xc')][_0x75e3('0xf')]);}else{logger['info'](_0x75e3('0xe'),_0x58fa18,_0x75e3('0xa'));_0x2bd460(_0x172dcd[_0x75e3('0x10')]['message']);}})['catch'](function(_0x45fdb1){logger[_0x75e3('0xc')](_0x75e3('0xe'),_0x58fa18,_0x45fdb1);_0x316cdf(_0x45fdb1);});});}exports[_0x75e3('0x11')]=function(_0x1fcfe3){var _0x5f445a=this;return new Promise(function(_0x35451d,_0xf148){return db[_0x75e3('0x12')]['findAll']({'raw':_0x1fcfe3[_0x75e3('0x13')]?_0x1fcfe3[_0x75e3('0x13')]['raw']===undefined?!![]:![]:!![],'where':_0x1fcfe3[_0x75e3('0x13')]?_0x1fcfe3[_0x75e3('0x13')][_0x75e3('0x14')]||null:null,'attributes':_0x1fcfe3['options']?_0x1fcfe3[_0x75e3('0x13')][_0x75e3('0x15')]||null:null,'limit':_0x1fcfe3[_0x75e3('0x13')]?_0x1fcfe3[_0x75e3('0x13')][_0x75e3('0x16')]||null:null,'include':_0x1fcfe3[_0x75e3('0x13')]?_0x1fcfe3[_0x75e3('0x13')]['include']?_[_0x75e3('0x17')](_0x1fcfe3[_0x75e3('0x13')]['include'],function(_0x28bd06){return{'model':db[_0x28bd06['model']],'as':_0x28bd06['as'],'attributes':_0x28bd06['attributes'],'include':_0x28bd06[_0x75e3('0x18')]?_[_0x75e3('0x17')](_0x28bd06[_0x75e3('0x18')],function(_0x422f2f){return{'model':db[_0x422f2f['model']],'as':_0x422f2f['as'],'attributes':_0x422f2f[_0x75e3('0x15')],'include':_0x422f2f[_0x75e3('0x18')]?_['map'](_0x422f2f[_0x75e3('0x18')],function(_0x122c37){return{'model':db[_0x122c37[_0x75e3('0x19')]],'as':_0x122c37['as'],'attributes':_0x122c37[_0x75e3('0x15')]};}):[]};}):[]};}):[]:[]})['then'](function(_0x12960e){logger[_0x75e3('0x7')]('GetDynamics365Account',_0x1fcfe3);logger[_0x75e3('0x8')](_0x75e3('0x11'),_0x1fcfe3,JSON[_0x75e3('0xb')](_0x12960e));_0x35451d(_0x12960e);})[_0x75e3('0x1a')](function(_0x290c6f){logger['error'](_0x75e3('0x11'),_0x290c6f['message'],_0x1fcfe3);_0xf148(_0x5f445a[_0x75e3('0xc')](0x1f4,_0x290c6f[_0x75e3('0xf')]));});});};exports[_0x75e3('0x1b')]=function(_0x2b6385){var _0x3b9333=this;return new Promise(function(_0x4b034c,_0x4bf9e1){return db[_0x75e3('0x12')][_0x75e3('0x1c')]({'raw':_0x2b6385[_0x75e3('0x13')]?_0x2b6385['options'][_0x75e3('0x1d')]===undefined?!![]:![]:!![],'where':_0x2b6385['options']?_0x2b6385[_0x75e3('0x13')][_0x75e3('0x14')]||null:null,'attributes':_0x2b6385[_0x75e3('0x13')]?_0x2b6385[_0x75e3('0x13')][_0x75e3('0x15')]||null:null,'include':_0x2b6385[_0x75e3('0x13')]?_0x2b6385[_0x75e3('0x13')][_0x75e3('0x18')]?_[_0x75e3('0x17')](_0x2b6385['options'][_0x75e3('0x18')],function(_0xd16070){return{'model':db[_0xd16070[_0x75e3('0x19')]],'as':_0xd16070['as'],'attributes':_0xd16070[_0x75e3('0x15')],'include':_0xd16070[_0x75e3('0x18')]?_[_0x75e3('0x17')](_0xd16070[_0x75e3('0x18')],function(_0x934309){return{'model':db[_0x934309[_0x75e3('0x19')]],'as':_0x934309['as'],'attributes':_0x934309[_0x75e3('0x15')],'include':_0x934309[_0x75e3('0x18')]?_[_0x75e3('0x17')](_0x934309[_0x75e3('0x18')],function(_0x4b9488){return{'model':db[_0x4b9488[_0x75e3('0x19')]],'as':_0x4b9488['as'],'attributes':_0x4b9488[_0x75e3('0x15')]};}):[]};}):[]};}):[]:[]})[_0x75e3('0x6')](function(_0x42dcc3){logger['info']('ShowDynamics365Account',_0x2b6385);logger[_0x75e3('0x8')](_0x75e3('0x1b'),_0x2b6385,JSON[_0x75e3('0xb')](_0x42dcc3));_0x4b034c(_0x42dcc3);})['catch'](function(_0x555b4e){logger['error'](_0x75e3('0x1b'),_0x555b4e[_0x75e3('0xf')],_0x2b6385);_0x4bf9e1(_0x3b9333[_0x75e3('0xc')](0x1f4,_0x555b4e[_0x75e3('0xf')]));});});};
\ No newline at end of file
index f28dad1..5467065 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x19f6=['multer','util','path','connect-timeout','express','Router','fs-extra','../../components/interaction/service','../../config/environment','get','index','/:id','isAuthenticated','show','/:id/fields','/:id/subjects','/:id/descriptions','getDescriptions','create','update','exports'];(function(_0x3422c7,_0x1171eb){var _0x351a41=function(_0xb635c4){while(--_0xb635c4){_0x3422c7['push'](_0x3422c7['shift']());}};_0x351a41(++_0x1171eb);}(_0x19f6,0x1ce));var _0x619f=function(_0x495f3c,_0x592bbe){_0x495f3c=_0x495f3c-0x0;var _0x4b97ee=_0x19f6[_0x495f3c];return _0x4b97ee;};'use strict';var multer=require(_0x619f('0x0'));var util=require(_0x619f('0x1'));var path=require(_0x619f('0x2'));var timeout=require(_0x619f('0x3'));var express=require(_0x619f('0x4'));var router=express[_0x619f('0x5')]();var fs_extra=require(_0x619f('0x6'));var auth=require('../../components/auth/service');var interaction=require(_0x619f('0x7'));var config=require(_0x619f('0x8'));var controller=require('./intDynamics365Configuration.controller');router[_0x619f('0x9')]('/',auth['isAuthenticated'](),controller[_0x619f('0xa')]);router[_0x619f('0x9')](_0x619f('0xb'),auth[_0x619f('0xc')](),controller[_0x619f('0xd')]);router['get'](_0x619f('0xe'),auth[_0x619f('0xc')](),controller['getFields']);router[_0x619f('0x9')](_0x619f('0xf'),auth[_0x619f('0xc')](),controller['getSubjects']);router[_0x619f('0x9')](_0x619f('0x10'),auth[_0x619f('0xc')](),controller[_0x619f('0x11')]);router['post']('/',auth[_0x619f('0xc')](),controller[_0x619f('0x12')]);router['put']('/:id',auth['isAuthenticated'](),controller[_0x619f('0x13')]);router['delete'](_0x619f('0xb'),auth[_0x619f('0xc')](),controller['destroy']);module[_0x619f('0x14')]=router;
\ No newline at end of file
+var _0xd7a0=['connect-timeout','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','get','isAuthenticated','index','/:id','show','/:id/fields','getFields','getSubjects','/:id/descriptions','getDescriptions','post','update','exports','multer','util'];(function(_0x565ab0,_0x43a529){var _0x30de58=function(_0x5f5b98){while(--_0x5f5b98){_0x565ab0['push'](_0x565ab0['shift']());}};_0x30de58(++_0x43a529);}(_0xd7a0,0x163));var _0x0d7a=function(_0x5d072b,_0x7178){_0x5d072b=_0x5d072b-0x0;var _0x43a6aa=_0xd7a0[_0x5d072b];return _0x43a6aa;};'use strict';var multer=require(_0x0d7a('0x0'));var util=require(_0x0d7a('0x1'));var path=require('path');var timeout=require(_0x0d7a('0x2'));var express=require('express');var router=express[_0x0d7a('0x3')]();var fs_extra=require(_0x0d7a('0x4'));var auth=require(_0x0d7a('0x5'));var interaction=require(_0x0d7a('0x6'));var config=require(_0x0d7a('0x7'));var controller=require('./intDynamics365Configuration.controller');router[_0x0d7a('0x8')]('/',auth[_0x0d7a('0x9')](),controller[_0x0d7a('0xa')]);router[_0x0d7a('0x8')](_0x0d7a('0xb'),auth[_0x0d7a('0x9')](),controller[_0x0d7a('0xc')]);router['get'](_0x0d7a('0xd'),auth[_0x0d7a('0x9')](),controller[_0x0d7a('0xe')]);router[_0x0d7a('0x8')]('/:id/subjects',auth[_0x0d7a('0x9')](),controller[_0x0d7a('0xf')]);router['get'](_0x0d7a('0x10'),auth[_0x0d7a('0x9')](),controller[_0x0d7a('0x11')]);router[_0x0d7a('0x12')]('/',auth[_0x0d7a('0x9')](),controller['create']);router['put'](_0x0d7a('0xb'),auth[_0x0d7a('0x9')](),controller[_0x0d7a('0x13')]);router['delete'](_0x0d7a('0xb'),auth['isAuthenticated'](),controller['destroy']);module[_0x0d7a('0x14')]=router;
\ No newline at end of file
index f7a0253..46460e4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6f21=['ENUM','incident','sequelize','exports','STRING'];(function(_0x29782b,_0x33ff83){var _0x5c2c1f=function(_0x57e6b6){while(--_0x57e6b6){_0x29782b['push'](_0x29782b['shift']());}};_0x5c2c1f(++_0x33ff83);}(_0x6f21,0x9d));var _0x16f2=function(_0x5d7747,_0x55c074){_0x5d7747=_0x5d7747-0x0;var _0x291142=_0x6f21[_0x5d7747];return _0x291142;};'use strict';var Sequelize=require(_0x16f2('0x0'));module[_0x16f2('0x1')]={'name':{'type':Sequelize[_0x16f2('0x2')]},'description':{'type':Sequelize[_0x16f2('0x2')]},'ticketType':{'type':Sequelize[_0x16f2('0x3')](_0x16f2('0x4'),'phonecall'),'defaultValue':'incident'}};
\ No newline at end of file
+var _0x0254=['sequelize','STRING','ENUM','incident','phonecall'];(function(_0x5e34ad,_0x3fcdd2){var _0x215512=function(_0x289a8e){while(--_0x289a8e){_0x5e34ad['push'](_0x5e34ad['shift']());}};_0x215512(++_0x3fcdd2);}(_0x0254,0xeb));var _0x4025=function(_0x42e4ab,_0x2ad398){_0x42e4ab=_0x42e4ab-0x0;var _0x1b32c2=_0x0254[_0x42e4ab];return _0x1b32c2;};'use strict';var Sequelize=require(_0x4025('0x0'));module['exports']={'name':{'type':Sequelize[_0x4025('0x1')]},'description':{'type':Sequelize[_0x4025('0x1')]},'ticketType':{'type':Sequelize[_0x4025('0x2')](_0x4025('0x3'),_0x4025('0x4')),'defaultValue':_0x4025('0x3')}};
\ No newline at end of file
index ba44951..19175bd 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6dc2=['../../config/logger','api','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','offset','limit','count','set','Content-Range','json','apply','reject','save','update','error','stack','name','send','type','key','map','keys','query','filters','attributes','intersection','model','fields','length','hasOwnProperty','nolimit','order','sort','where','pick','merge','VIRTUAL','filter','options','then','includeAll','include','Dynamics365Configuration','rows','catch','params','find','create','body','destroy','getFields','findOne','Dynamics365Field','rawAttributes','getSubjects','getDescriptions','rimraf','zip-dir','request-promise','moment','bluebird','path','sox','to-csv','lodash','squel','crypto','jsforce','desk.js','querystring','papaparse','../../components/auth/service','../../components/parsers/advancedSearch'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x6dc2,0x1bd));var _0x26dc=function(_0x41ba39,_0x4d9b8c){_0x41ba39=_0x41ba39-0x0;var _0x1a700a=_0x6dc2[_0x41ba39];return _0x1a700a;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x26dc('0x0'));var zipdir=require(_0x26dc('0x1'));var jsonpatch=require('fast-json-patch');var rp=require(_0x26dc('0x2'));var moment=require(_0x26dc('0x3'));var BPromise=require(_0x26dc('0x4'));var Mustache=require('mustache');var util=require('util');var path=require(_0x26dc('0x5'));var sox=require(_0x26dc('0x6'));var csv=require(_0x26dc('0x7'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x26dc('0x8'));var squel=require(_0x26dc('0x9'));var crypto=require(_0x26dc('0xa'));var jsforce=require(_0x26dc('0xb'));var deskjs=require(_0x26dc('0xc'));var toCsv=require(_0x26dc('0x7'));var querystring=require(_0x26dc('0xd'));var Papa=require(_0x26dc('0xe'));var Redis=require('ioredis');var authService=require(_0x26dc('0xf'));var qs=require('../../components/parsers/qs');var as=require(_0x26dc('0x10'));var hardwareService=require('../../config/license/hardware');var logger=require(_0x26dc('0x11'))(_0x26dc('0x12'));var utils=require('../../config/utils');var config=require(_0x26dc('0x13'));var licenseUtil=require(_0x26dc('0x14'));var db=require(_0x26dc('0x15'))['db'];function respondWithStatusCode(_0x5628e6,_0x5db061){_0x5db061=_0x5db061||0xcc;return function(_0x16b55d){if(_0x16b55d){return _0x5628e6[_0x26dc('0x16')](_0x5db061);}return _0x5628e6[_0x26dc('0x17')](_0x5db061)[_0x26dc('0x18')]();};}function respondWithResult(_0x1ac8d1,_0x1b2c0a){_0x1b2c0a=_0x1b2c0a||0xc8;return function(_0x53b65b){if(_0x53b65b){return _0x1ac8d1[_0x26dc('0x17')](_0x1b2c0a)['json'](_0x53b65b);}};}function respondWithFilteredResult(_0x1e9e65,_0x17aa27){return function(_0x3bba77){if(_0x3bba77){var _0x53f771=typeof _0x17aa27[_0x26dc('0x19')]==='undefined'&&typeof _0x17aa27[_0x26dc('0x1a')]==='undefined';var _0x5dea23=_0x3bba77[_0x26dc('0x1b')];var _0x3a1f92=_0x53f771?0x0:_0x17aa27[_0x26dc('0x19')];var _0x3403f8=_0x53f771?_0x3bba77['count']:_0x17aa27[_0x26dc('0x19')]+_0x17aa27[_0x26dc('0x1a')];var _0xaa770d;if(_0x3403f8>=_0x5dea23){_0x3403f8=_0x5dea23;_0xaa770d=0xc8;}else{_0xaa770d=0xce;}_0x1e9e65['status'](_0xaa770d);return _0x1e9e65[_0x26dc('0x1c')](_0x26dc('0x1d'),_0x3a1f92+'-'+_0x3403f8+'/'+_0x5dea23)[_0x26dc('0x1e')](_0x3bba77);}return null;};}function patchUpdates(_0x51d3ad){return function(_0x402e0){try{jsonpatch[_0x26dc('0x1f')](_0x402e0,_0x51d3ad,!![]);}catch(_0x8c9fb8){return BPromise[_0x26dc('0x20')](_0x8c9fb8);}return _0x402e0[_0x26dc('0x21')]();};}function saveUpdates(_0x396c96,_0x209d94){return function(_0x70653f){if(_0x70653f){return _0x70653f[_0x26dc('0x22')](_0x396c96)['then'](function(_0x586907){return _0x586907;});}return null;};}function removeEntity(_0x2d0e4d,_0x2ddd4f){return function(_0x5a0066){if(_0x5a0066){return _0x5a0066['destroy']()['then'](function(){_0x2d0e4d[_0x26dc('0x17')](0xcc)[_0x26dc('0x18')]();});}};}function handleEntityNotFound(_0x59b60e,_0x43e1bc){return function(_0x5327f4){if(!_0x5327f4){_0x59b60e['sendStatus'](0x194);}return _0x5327f4;};}function handleError(_0x317e15,_0x510d71){_0x510d71=_0x510d71||0x1f4;return function(_0x465119){logger[_0x26dc('0x23')](_0x465119[_0x26dc('0x24')]);if(_0x465119['name']){delete _0x465119[_0x26dc('0x25')];}_0x317e15[_0x26dc('0x17')](_0x510d71)[_0x26dc('0x26')](_0x465119);};}exports['index']=function(_0x2a242a,_0x3fe1df){var _0x13d627={},_0x3a4acf={},_0x10aab6={'count':0x0,'rows':[]};var _0x5ace1f=_['map'](db['Dynamics365Configuration']['rawAttributes'],function(_0x2a9b50){return{'name':_0x2a9b50['fieldName'],'type':_0x2a9b50[_0x26dc('0x27')][_0x26dc('0x28')]};});_0x3a4acf['model']=_[_0x26dc('0x29')](_0x5ace1f,'name');_0x3a4acf['query']=_[_0x26dc('0x2a')](_0x2a242a[_0x26dc('0x2b')]);_0x3a4acf[_0x26dc('0x2c')]=_['intersection'](_0x3a4acf['model'],_0x3a4acf[_0x26dc('0x2b')]);_0x13d627[_0x26dc('0x2d')]=_[_0x26dc('0x2e')](_0x3a4acf[_0x26dc('0x2f')],qs['fields'](_0x2a242a[_0x26dc('0x2b')][_0x26dc('0x30')]));_0x13d627[_0x26dc('0x2d')]=_0x13d627[_0x26dc('0x2d')][_0x26dc('0x31')]?_0x13d627[_0x26dc('0x2d')]:_0x3a4acf[_0x26dc('0x2f')];if(!_0x2a242a[_0x26dc('0x2b')][_0x26dc('0x32')](_0x26dc('0x33'))){_0x13d627['limit']=qs[_0x26dc('0x1a')](_0x2a242a[_0x26dc('0x2b')][_0x26dc('0x1a')]);_0x13d627[_0x26dc('0x19')]=qs[_0x26dc('0x19')](_0x2a242a[_0x26dc('0x2b')][_0x26dc('0x19')]);}_0x13d627[_0x26dc('0x34')]=qs[_0x26dc('0x35')](_0x2a242a['query'][_0x26dc('0x35')]);_0x13d627[_0x26dc('0x36')]=qs['filters'](_[_0x26dc('0x37')](_0x2a242a[_0x26dc('0x2b')],_0x3a4acf['filters']),_0x5ace1f);if(_0x2a242a[_0x26dc('0x2b')]['filter']){_0x13d627['where']=_[_0x26dc('0x38')](_0x13d627[_0x26dc('0x36')],{'$or':_[_0x26dc('0x29')](_0x5ace1f,function(_0x2cbc7c){if(_0x2cbc7c[_0x26dc('0x27')]!==_0x26dc('0x39')){var _0x3d86e7={};_0x3d86e7[_0x2cbc7c[_0x26dc('0x25')]]={'$like':'%'+_0x2a242a[_0x26dc('0x2b')][_0x26dc('0x3a')]+'%'};return _0x3d86e7;}})});}_0x13d627=_[_0x26dc('0x38')]({},_0x13d627,_0x2a242a[_0x26dc('0x3b')]);var _0x4bd67c={'where':_0x13d627[_0x26dc('0x36')]};return db['Dynamics365Configuration'][_0x26dc('0x1b')](_0x4bd67c)[_0x26dc('0x3c')](function(_0x4b4c78){_0x10aab6[_0x26dc('0x1b')]=_0x4b4c78;if(_0x2a242a[_0x26dc('0x2b')][_0x26dc('0x3d')]){_0x13d627[_0x26dc('0x3e')]=[{'all':!![]}];}return db[_0x26dc('0x3f')]['findAll'](_0x13d627);})[_0x26dc('0x3c')](function(_0x8954e){_0x10aab6[_0x26dc('0x40')]=_0x8954e;return _0x10aab6;})['then'](respondWithFilteredResult(_0x3fe1df,_0x13d627))[_0x26dc('0x41')](handleError(_0x3fe1df,null));};exports['show']=function(_0x2d81b1,_0x21fd1c){var _0x290609={'raw':![],'where':{'id':_0x2d81b1[_0x26dc('0x42')]['id']}},_0x4a2cc2={};_0x4a2cc2['model']=_[_0x26dc('0x2a')](db[_0x26dc('0x3f')]['rawAttributes']);_0x4a2cc2[_0x26dc('0x2b')]=_['keys'](_0x2d81b1[_0x26dc('0x2b')]);_0x4a2cc2[_0x26dc('0x2c')]=_[_0x26dc('0x2e')](_0x4a2cc2[_0x26dc('0x2f')],_0x4a2cc2[_0x26dc('0x2b')]);_0x290609[_0x26dc('0x2d')]=_[_0x26dc('0x2e')](_0x4a2cc2[_0x26dc('0x2f')],qs[_0x26dc('0x30')](_0x2d81b1[_0x26dc('0x2b')]['fields']));_0x290609['attributes']=_0x290609[_0x26dc('0x2d')][_0x26dc('0x31')]?_0x290609[_0x26dc('0x2d')]:_0x4a2cc2[_0x26dc('0x2f')];if(_0x2d81b1[_0x26dc('0x2b')][_0x26dc('0x3d')]){_0x290609[_0x26dc('0x3e')]=[{'all':!![]}];}_0x290609=_[_0x26dc('0x38')]({},_0x290609,_0x2d81b1['options']);return db[_0x26dc('0x3f')][_0x26dc('0x43')](_0x290609)[_0x26dc('0x3c')](handleEntityNotFound(_0x21fd1c,null))[_0x26dc('0x3c')](respondWithResult(_0x21fd1c,null))[_0x26dc('0x41')](handleError(_0x21fd1c,null));};exports[_0x26dc('0x44')]=function(_0x55d32e,_0x4dca6d){return db[_0x26dc('0x3f')][_0x26dc('0x44')](_0x55d32e[_0x26dc('0x45')],{})['then'](respondWithResult(_0x4dca6d,0xc9))[_0x26dc('0x41')](handleError(_0x4dca6d,null));};exports['update']=function(_0x142026,_0x598848){if(_0x142026[_0x26dc('0x45')]['id']){delete _0x142026[_0x26dc('0x45')]['id'];}return db[_0x26dc('0x3f')][_0x26dc('0x43')]({'where':{'id':_0x142026[_0x26dc('0x42')]['id']}})['then'](handleEntityNotFound(_0x598848,null))['then'](saveUpdates(_0x142026[_0x26dc('0x45')],null))['then'](respondWithResult(_0x598848,null))[_0x26dc('0x41')](handleError(_0x598848,null));};exports[_0x26dc('0x46')]=function(_0x3dae35,_0x7ba0ef){return db[_0x26dc('0x3f')]['find']({'where':{'id':_0x3dae35['params']['id']}})[_0x26dc('0x3c')](handleEntityNotFound(_0x7ba0ef,null))['then'](removeEntity(_0x7ba0ef,null))['catch'](handleError(_0x7ba0ef,null));};exports[_0x26dc('0x47')]=function(_0x53a313,_0x4e918f,_0xd0cf02){var _0x2baf0c={};var _0x2c5ae1={};var _0x30354d;var _0x29cc3a;return db['Dynamics365Configuration'][_0x26dc('0x48')]({'where':{'id':_0x53a313['params']['id']}})[_0x26dc('0x3c')](handleEntityNotFound(_0x4e918f,null))[_0x26dc('0x3c')](function(_0x2cd297){if(_0x2cd297){_0x30354d=_0x2cd297;_0x2c5ae1[_0x26dc('0x2f')]=_[_0x26dc('0x2a')](db[_0x26dc('0x49')][_0x26dc('0x4a')]);_0x2c5ae1[_0x26dc('0x2b')]=_[_0x26dc('0x2a')](_0x53a313[_0x26dc('0x2b')]);_0x2c5ae1[_0x26dc('0x2c')]=_[_0x26dc('0x2e')](_0x2c5ae1[_0x26dc('0x2f')],_0x2c5ae1[_0x26dc('0x2b')]);_0x2baf0c['attributes']=_[_0x26dc('0x2e')](_0x2c5ae1[_0x26dc('0x2f')],qs['fields'](_0x53a313[_0x26dc('0x2b')][_0x26dc('0x30')]));_0x2baf0c[_0x26dc('0x2d')]=_0x2baf0c[_0x26dc('0x2d')]['length']?_0x2baf0c[_0x26dc('0x2d')]:_0x2c5ae1['model'];_0x2baf0c[_0x26dc('0x34')]=qs['sort'](_0x53a313['query'][_0x26dc('0x35')]);_0x2baf0c[_0x26dc('0x36')]=qs['filters'](_[_0x26dc('0x37')](_0x53a313[_0x26dc('0x2b')],_0x2c5ae1[_0x26dc('0x2c')]));if(_0x53a313[_0x26dc('0x2b')][_0x26dc('0x3a')]){_0x2baf0c[_0x26dc('0x36')]=_[_0x26dc('0x38')](_0x2baf0c[_0x26dc('0x36')],{'$or':_[_0x26dc('0x29')](_0x2baf0c[_0x26dc('0x2d')],function(_0x8643ad){var _0x33ae84={};_0x33ae84[_0x8643ad]={'$like':'%'+_0x53a313['query'][_0x26dc('0x3a')]+'%'};return _0x33ae84;})});}_0x2baf0c=_[_0x26dc('0x38')]({},_0x2baf0c,_0x53a313[_0x26dc('0x3b')]);return _0x30354d[_0x26dc('0x47')](_0x2baf0c);}})[_0x26dc('0x3c')](function(_0x8189ef){if(_0x8189ef){_0x29cc3a=_0x8189ef[_0x26dc('0x31')];if(!_0x53a313[_0x26dc('0x2b')][_0x26dc('0x32')](_0x26dc('0x33'))){_0x2baf0c[_0x26dc('0x1a')]=qs[_0x26dc('0x1a')](_0x53a313[_0x26dc('0x2b')]['limit']);_0x2baf0c[_0x26dc('0x19')]=qs[_0x26dc('0x19')](_0x53a313['query'][_0x26dc('0x19')]);}return _0x30354d[_0x26dc('0x47')](_0x2baf0c);}})['then'](function(_0x3aec6a){if(_0x3aec6a){return _0x3aec6a?{'count':_0x29cc3a,'rows':_0x3aec6a}:null;}})[_0x26dc('0x3c')](respondWithResult(_0x4e918f,null))['catch'](handleError(_0x4e918f,null));};exports[_0x26dc('0x4b')]=function(_0x34b059,_0x30976a,_0x465b4c){var _0x12fcbe={};var _0x48d69f={};var _0x62c449;var _0x233ace;return db[_0x26dc('0x3f')][_0x26dc('0x48')]({'where':{'id':_0x34b059[_0x26dc('0x42')]['id']}})[_0x26dc('0x3c')](handleEntityNotFound(_0x30976a,null))['then'](function(_0x4266a9){if(_0x4266a9){_0x62c449=_0x4266a9;_0x48d69f[_0x26dc('0x2f')]=_[_0x26dc('0x2a')](db['Dynamics365Field'][_0x26dc('0x4a')]);_0x48d69f[_0x26dc('0x2b')]=_['keys'](_0x34b059[_0x26dc('0x2b')]);_0x48d69f[_0x26dc('0x2c')]=_[_0x26dc('0x2e')](_0x48d69f[_0x26dc('0x2f')],_0x48d69f[_0x26dc('0x2b')]);_0x12fcbe[_0x26dc('0x2d')]=_[_0x26dc('0x2e')](_0x48d69f[_0x26dc('0x2f')],qs[_0x26dc('0x30')](_0x34b059[_0x26dc('0x2b')]['fields']));_0x12fcbe['attributes']=_0x12fcbe[_0x26dc('0x2d')][_0x26dc('0x31')]?_0x12fcbe[_0x26dc('0x2d')]:_0x48d69f[_0x26dc('0x2f')];_0x12fcbe[_0x26dc('0x34')]=qs['sort'](_0x34b059[_0x26dc('0x2b')][_0x26dc('0x35')]);_0x12fcbe[_0x26dc('0x36')]=qs[_0x26dc('0x2c')](_['pick'](_0x34b059[_0x26dc('0x2b')],_0x48d69f['filters']));if(_0x34b059[_0x26dc('0x2b')][_0x26dc('0x3a')]){_0x12fcbe['where']=_[_0x26dc('0x38')](_0x12fcbe[_0x26dc('0x36')],{'$or':_[_0x26dc('0x29')](_0x12fcbe[_0x26dc('0x2d')],function(_0x198000){var _0x38b223={};_0x38b223[_0x198000]={'$like':'%'+_0x34b059[_0x26dc('0x2b')][_0x26dc('0x3a')]+'%'};return _0x38b223;})});}_0x12fcbe=_[_0x26dc('0x38')]({},_0x12fcbe,_0x34b059[_0x26dc('0x3b')]);return _0x62c449[_0x26dc('0x4b')](_0x12fcbe);}})[_0x26dc('0x3c')](function(_0x21859d){if(_0x21859d){_0x233ace=_0x21859d[_0x26dc('0x31')];if(!_0x34b059[_0x26dc('0x2b')][_0x26dc('0x32')]('nolimit')){_0x12fcbe[_0x26dc('0x1a')]=qs['limit'](_0x34b059[_0x26dc('0x2b')][_0x26dc('0x1a')]);_0x12fcbe[_0x26dc('0x19')]=qs['offset'](_0x34b059[_0x26dc('0x2b')][_0x26dc('0x19')]);}return _0x62c449[_0x26dc('0x4b')](_0x12fcbe);}})[_0x26dc('0x3c')](function(_0x5bf374){if(_0x5bf374){return _0x5bf374?{'count':_0x233ace,'rows':_0x5bf374}:null;}})[_0x26dc('0x3c')](respondWithResult(_0x30976a,null))[_0x26dc('0x41')](handleError(_0x30976a,null));};exports[_0x26dc('0x4c')]=function(_0x5de22f,_0x3b1e2b,_0x4a1691){var _0xe9f5e8={};var _0x84a75={};var _0x4f2cd8;var _0x4ef385;return db[_0x26dc('0x3f')][_0x26dc('0x48')]({'where':{'id':_0x5de22f[_0x26dc('0x42')]['id']}})[_0x26dc('0x3c')](handleEntityNotFound(_0x3b1e2b,null))[_0x26dc('0x3c')](function(_0x426830){if(_0x426830){_0x4f2cd8=_0x426830;_0x84a75[_0x26dc('0x2f')]=_['keys'](db['Dynamics365Field'][_0x26dc('0x4a')]);_0x84a75['query']=_[_0x26dc('0x2a')](_0x5de22f[_0x26dc('0x2b')]);_0x84a75[_0x26dc('0x2c')]=_['intersection'](_0x84a75[_0x26dc('0x2f')],_0x84a75[_0x26dc('0x2b')]);_0xe9f5e8[_0x26dc('0x2d')]=_['intersection'](_0x84a75[_0x26dc('0x2f')],qs[_0x26dc('0x30')](_0x5de22f['query'][_0x26dc('0x30')]));_0xe9f5e8['attributes']=_0xe9f5e8[_0x26dc('0x2d')][_0x26dc('0x31')]?_0xe9f5e8['attributes']:_0x84a75[_0x26dc('0x2f')];_0xe9f5e8['order']=qs[_0x26dc('0x35')](_0x5de22f['query'][_0x26dc('0x35')]);_0xe9f5e8['where']=qs[_0x26dc('0x2c')](_['pick'](_0x5de22f['query'],_0x84a75[_0x26dc('0x2c')]));if(_0x5de22f[_0x26dc('0x2b')][_0x26dc('0x3a')]){_0xe9f5e8[_0x26dc('0x36')]=_[_0x26dc('0x38')](_0xe9f5e8['where'],{'$or':_[_0x26dc('0x29')](_0xe9f5e8[_0x26dc('0x2d')],function(_0x2b1416){var _0x2ea43f={};_0x2ea43f[_0x2b1416]={'$like':'%'+_0x5de22f['query'][_0x26dc('0x3a')]+'%'};return _0x2ea43f;})});}_0xe9f5e8=_[_0x26dc('0x38')]({},_0xe9f5e8,_0x5de22f[_0x26dc('0x3b')]);return _0x4f2cd8[_0x26dc('0x4c')](_0xe9f5e8);}})[_0x26dc('0x3c')](function(_0x260dc8){if(_0x260dc8){_0x4ef385=_0x260dc8[_0x26dc('0x31')];if(!_0x5de22f['query'][_0x26dc('0x32')](_0x26dc('0x33'))){_0xe9f5e8['limit']=qs[_0x26dc('0x1a')](_0x5de22f['query'][_0x26dc('0x1a')]);_0xe9f5e8['offset']=qs['offset'](_0x5de22f[_0x26dc('0x2b')]['offset']);}return _0x4f2cd8['getDescriptions'](_0xe9f5e8);}})['then'](function(_0x3c3a91){if(_0x3c3a91){return _0x3c3a91?{'count':_0x4ef385,'rows':_0x3c3a91}:null;}})['then'](respondWithResult(_0x3b1e2b,null))[_0x26dc('0x41')](handleError(_0x3b1e2b,null));};
\ No newline at end of file
+var _0x2826=['includeAll','find','create','body','findOne','Dynamics365Field','pick','filter','getFields','getSubjects','getDescriptions','rimraf','zip-dir','request-promise','moment','bluebird','mustache','util','path','sox','to-csv','fs-extra','squel','crypto','jsforce','desk.js','querystring','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','json','undefined','limit','count','offset','set','reject','save','update','then','destroy','name','send','index','Dynamics365Configuration','rawAttributes','fieldName','type','key','model','map','query','keys','filters','intersection','fields','attributes','length','hasOwnProperty','nolimit','order','sort','where','VIRTUAL','merge','options','include','findAll','rows','catch','params'];(function(_0x4ff8d7,_0x5c5690){var _0x1f9793=function(_0x132866){while(--_0x132866){_0x4ff8d7['push'](_0x4ff8d7['shift']());}};_0x1f9793(++_0x5c5690);}(_0x2826,0x196));var _0x6282=function(_0x11e53b,_0x1c9618){_0x11e53b=_0x11e53b-0x0;var _0x4c92ef=_0x2826[_0x11e53b];return _0x4c92ef;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x6282('0x0'));var zipdir=require(_0x6282('0x1'));var jsonpatch=require('fast-json-patch');var rp=require(_0x6282('0x2'));var moment=require(_0x6282('0x3'));var BPromise=require(_0x6282('0x4'));var Mustache=require(_0x6282('0x5'));var util=require(_0x6282('0x6'));var path=require(_0x6282('0x7'));var sox=require(_0x6282('0x8'));var csv=require(_0x6282('0x9'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x6282('0xa'));var _=require('lodash');var squel=require(_0x6282('0xb'));var crypto=require(_0x6282('0xc'));var jsforce=require(_0x6282('0xd'));var deskjs=require(_0x6282('0xe'));var toCsv=require('to-csv');var querystring=require(_0x6282('0xf'));var Papa=require('papaparse');var Redis=require(_0x6282('0x10'));var authService=require(_0x6282('0x11'));var qs=require(_0x6282('0x12'));var as=require(_0x6282('0x13'));var hardwareService=require('../../config/license/hardware');var logger=require('../../config/logger')('api');var utils=require(_0x6282('0x14'));var config=require(_0x6282('0x15'));var licenseUtil=require(_0x6282('0x16'));var db=require(_0x6282('0x17'))['db'];function respondWithStatusCode(_0x193d46,_0x190d4b){_0x190d4b=_0x190d4b||0xcc;return function(_0x59ad60){if(_0x59ad60){return _0x193d46[_0x6282('0x18')](_0x190d4b);}return _0x193d46[_0x6282('0x19')](_0x190d4b)[_0x6282('0x1a')]();};}function respondWithResult(_0x96cc5b,_0x486dea){_0x486dea=_0x486dea||0xc8;return function(_0x4d44fc){if(_0x4d44fc){return _0x96cc5b[_0x6282('0x19')](_0x486dea)[_0x6282('0x1b')](_0x4d44fc);}};}function respondWithFilteredResult(_0x13b1ef,_0x28e9a8){return function(_0x552560){if(_0x552560){var _0x5451b7=typeof _0x28e9a8['offset']===_0x6282('0x1c')&&typeof _0x28e9a8[_0x6282('0x1d')]===_0x6282('0x1c');var _0x291e34=_0x552560[_0x6282('0x1e')];var _0x447b18=_0x5451b7?0x0:_0x28e9a8[_0x6282('0x1f')];var _0x25f5cf=_0x5451b7?_0x552560['count']:_0x28e9a8[_0x6282('0x1f')]+_0x28e9a8[_0x6282('0x1d')];var _0x35ddde;if(_0x25f5cf>=_0x291e34){_0x25f5cf=_0x291e34;_0x35ddde=0xc8;}else{_0x35ddde=0xce;}_0x13b1ef['status'](_0x35ddde);return _0x13b1ef[_0x6282('0x20')]('Content-Range',_0x447b18+'-'+_0x25f5cf+'/'+_0x291e34)[_0x6282('0x1b')](_0x552560);}return null;};}function patchUpdates(_0x1cbf28){return function(_0x10958e){try{jsonpatch['apply'](_0x10958e,_0x1cbf28,!![]);}catch(_0x29b650){return BPromise[_0x6282('0x21')](_0x29b650);}return _0x10958e[_0x6282('0x22')]();};}function saveUpdates(_0x416f7d,_0x41dcac){return function(_0x3041d4){if(_0x3041d4){return _0x3041d4[_0x6282('0x23')](_0x416f7d)[_0x6282('0x24')](function(_0x5ad37b){return _0x5ad37b;});}return null;};}function removeEntity(_0x3d527a,_0x8eae55){return function(_0x266cff){if(_0x266cff){return _0x266cff[_0x6282('0x25')]()['then'](function(){_0x3d527a[_0x6282('0x19')](0xcc)[_0x6282('0x1a')]();});}};}function handleEntityNotFound(_0x2b0803,_0x21e63b){return function(_0x2f5d1f){if(!_0x2f5d1f){_0x2b0803[_0x6282('0x18')](0x194);}return _0x2f5d1f;};}function handleError(_0x54e2d7,_0x22a14c){_0x22a14c=_0x22a14c||0x1f4;return function(_0x1ed16e){logger['error'](_0x1ed16e['stack']);if(_0x1ed16e[_0x6282('0x26')]){delete _0x1ed16e[_0x6282('0x26')];}_0x54e2d7[_0x6282('0x19')](_0x22a14c)[_0x6282('0x27')](_0x1ed16e);};}exports[_0x6282('0x28')]=function(_0x538d67,_0x33bd07){var _0x5abb2e={},_0x4b418f={},_0x189c90={'count':0x0,'rows':[]};var _0x38bc35=_['map'](db[_0x6282('0x29')][_0x6282('0x2a')],function(_0x14a8c5){return{'name':_0x14a8c5[_0x6282('0x2b')],'type':_0x14a8c5[_0x6282('0x2c')][_0x6282('0x2d')]};});_0x4b418f[_0x6282('0x2e')]=_[_0x6282('0x2f')](_0x38bc35,_0x6282('0x26'));_0x4b418f[_0x6282('0x30')]=_[_0x6282('0x31')](_0x538d67[_0x6282('0x30')]);_0x4b418f[_0x6282('0x32')]=_[_0x6282('0x33')](_0x4b418f[_0x6282('0x2e')],_0x4b418f['query']);_0x5abb2e['attributes']=_[_0x6282('0x33')](_0x4b418f[_0x6282('0x2e')],qs['fields'](_0x538d67[_0x6282('0x30')][_0x6282('0x34')]));_0x5abb2e['attributes']=_0x5abb2e[_0x6282('0x35')][_0x6282('0x36')]?_0x5abb2e[_0x6282('0x35')]:_0x4b418f[_0x6282('0x2e')];if(!_0x538d67[_0x6282('0x30')][_0x6282('0x37')](_0x6282('0x38'))){_0x5abb2e[_0x6282('0x1d')]=qs[_0x6282('0x1d')](_0x538d67[_0x6282('0x30')][_0x6282('0x1d')]);_0x5abb2e['offset']=qs[_0x6282('0x1f')](_0x538d67[_0x6282('0x30')]['offset']);}_0x5abb2e[_0x6282('0x39')]=qs[_0x6282('0x3a')](_0x538d67[_0x6282('0x30')][_0x6282('0x3a')]);_0x5abb2e['where']=qs[_0x6282('0x32')](_['pick'](_0x538d67[_0x6282('0x30')],_0x4b418f[_0x6282('0x32')]),_0x38bc35);if(_0x538d67[_0x6282('0x30')]['filter']){_0x5abb2e[_0x6282('0x3b')]=_['merge'](_0x5abb2e[_0x6282('0x3b')],{'$or':_[_0x6282('0x2f')](_0x38bc35,function(_0x1f9da1){if(_0x1f9da1[_0x6282('0x2c')]!==_0x6282('0x3c')){var _0x48c0db={};_0x48c0db[_0x1f9da1[_0x6282('0x26')]]={'$like':'%'+_0x538d67[_0x6282('0x30')]['filter']+'%'};return _0x48c0db;}})});}_0x5abb2e=_[_0x6282('0x3d')]({},_0x5abb2e,_0x538d67[_0x6282('0x3e')]);var _0x530169={'where':_0x5abb2e[_0x6282('0x3b')]};return db['Dynamics365Configuration'][_0x6282('0x1e')](_0x530169)[_0x6282('0x24')](function(_0x837d21){_0x189c90[_0x6282('0x1e')]=_0x837d21;if(_0x538d67[_0x6282('0x30')]['includeAll']){_0x5abb2e[_0x6282('0x3f')]=[{'all':!![]}];}return db['Dynamics365Configuration'][_0x6282('0x40')](_0x5abb2e);})[_0x6282('0x24')](function(_0x40864c){_0x189c90[_0x6282('0x41')]=_0x40864c;return _0x189c90;})[_0x6282('0x24')](respondWithFilteredResult(_0x33bd07,_0x5abb2e))[_0x6282('0x42')](handleError(_0x33bd07,null));};exports['show']=function(_0x59ffc3,_0xb2353a){var _0x44034c={'raw':![],'where':{'id':_0x59ffc3[_0x6282('0x43')]['id']}},_0x3325e8={};_0x3325e8[_0x6282('0x2e')]=_[_0x6282('0x31')](db[_0x6282('0x29')][_0x6282('0x2a')]);_0x3325e8[_0x6282('0x30')]=_[_0x6282('0x31')](_0x59ffc3['query']);_0x3325e8[_0x6282('0x32')]=_[_0x6282('0x33')](_0x3325e8['model'],_0x3325e8[_0x6282('0x30')]);_0x44034c['attributes']=_[_0x6282('0x33')](_0x3325e8[_0x6282('0x2e')],qs['fields'](_0x59ffc3[_0x6282('0x30')][_0x6282('0x34')]));_0x44034c[_0x6282('0x35')]=_0x44034c[_0x6282('0x35')][_0x6282('0x36')]?_0x44034c[_0x6282('0x35')]:_0x3325e8[_0x6282('0x2e')];if(_0x59ffc3[_0x6282('0x30')][_0x6282('0x44')]){_0x44034c['include']=[{'all':!![]}];}_0x44034c=_[_0x6282('0x3d')]({},_0x44034c,_0x59ffc3[_0x6282('0x3e')]);return db[_0x6282('0x29')][_0x6282('0x45')](_0x44034c)[_0x6282('0x24')](handleEntityNotFound(_0xb2353a,null))['then'](respondWithResult(_0xb2353a,null))[_0x6282('0x42')](handleError(_0xb2353a,null));};exports[_0x6282('0x46')]=function(_0x4f8cf9,_0x1eb90d){return db[_0x6282('0x29')][_0x6282('0x46')](_0x4f8cf9[_0x6282('0x47')],{})[_0x6282('0x24')](respondWithResult(_0x1eb90d,0xc9))[_0x6282('0x42')](handleError(_0x1eb90d,null));};exports[_0x6282('0x23')]=function(_0xb17a89,_0x434c14){if(_0xb17a89['body']['id']){delete _0xb17a89[_0x6282('0x47')]['id'];}return db[_0x6282('0x29')][_0x6282('0x45')]({'where':{'id':_0xb17a89[_0x6282('0x43')]['id']}})[_0x6282('0x24')](handleEntityNotFound(_0x434c14,null))[_0x6282('0x24')](saveUpdates(_0xb17a89['body'],null))[_0x6282('0x24')](respondWithResult(_0x434c14,null))[_0x6282('0x42')](handleError(_0x434c14,null));};exports['destroy']=function(_0x1da9f6,_0x32d288){return db[_0x6282('0x29')][_0x6282('0x45')]({'where':{'id':_0x1da9f6[_0x6282('0x43')]['id']}})[_0x6282('0x24')](handleEntityNotFound(_0x32d288,null))[_0x6282('0x24')](removeEntity(_0x32d288,null))['catch'](handleError(_0x32d288,null));};exports['getFields']=function(_0xdfbbd4,_0x50cef9,_0x4cab99){var _0x5bf67d={};var _0xffbd39={};var _0x484e4d;var _0x8bb1ae;return db['Dynamics365Configuration'][_0x6282('0x48')]({'where':{'id':_0xdfbbd4['params']['id']}})[_0x6282('0x24')](handleEntityNotFound(_0x50cef9,null))[_0x6282('0x24')](function(_0x2b901a){if(_0x2b901a){_0x484e4d=_0x2b901a;_0xffbd39[_0x6282('0x2e')]=_[_0x6282('0x31')](db[_0x6282('0x49')][_0x6282('0x2a')]);_0xffbd39['query']=_[_0x6282('0x31')](_0xdfbbd4[_0x6282('0x30')]);_0xffbd39[_0x6282('0x32')]=_['intersection'](_0xffbd39[_0x6282('0x2e')],_0xffbd39[_0x6282('0x30')]);_0x5bf67d['attributes']=_['intersection'](_0xffbd39['model'],qs[_0x6282('0x34')](_0xdfbbd4[_0x6282('0x30')][_0x6282('0x34')]));_0x5bf67d[_0x6282('0x35')]=_0x5bf67d[_0x6282('0x35')][_0x6282('0x36')]?_0x5bf67d[_0x6282('0x35')]:_0xffbd39['model'];_0x5bf67d[_0x6282('0x39')]=qs[_0x6282('0x3a')](_0xdfbbd4['query']['sort']);_0x5bf67d[_0x6282('0x3b')]=qs[_0x6282('0x32')](_[_0x6282('0x4a')](_0xdfbbd4[_0x6282('0x30')],_0xffbd39['filters']));if(_0xdfbbd4['query'][_0x6282('0x4b')]){_0x5bf67d[_0x6282('0x3b')]=_[_0x6282('0x3d')](_0x5bf67d[_0x6282('0x3b')],{'$or':_['map'](_0x5bf67d['attributes'],function(_0xb6902a){var _0x26116c={};_0x26116c[_0xb6902a]={'$like':'%'+_0xdfbbd4[_0x6282('0x30')]['filter']+'%'};return _0x26116c;})});}_0x5bf67d=_[_0x6282('0x3d')]({},_0x5bf67d,_0xdfbbd4[_0x6282('0x3e')]);return _0x484e4d[_0x6282('0x4c')](_0x5bf67d);}})[_0x6282('0x24')](function(_0x46640c){if(_0x46640c){_0x8bb1ae=_0x46640c['length'];if(!_0xdfbbd4[_0x6282('0x30')][_0x6282('0x37')]('nolimit')){_0x5bf67d[_0x6282('0x1d')]=qs[_0x6282('0x1d')](_0xdfbbd4[_0x6282('0x30')][_0x6282('0x1d')]);_0x5bf67d[_0x6282('0x1f')]=qs['offset'](_0xdfbbd4[_0x6282('0x30')][_0x6282('0x1f')]);}return _0x484e4d[_0x6282('0x4c')](_0x5bf67d);}})[_0x6282('0x24')](function(_0x64fe22){if(_0x64fe22){return _0x64fe22?{'count':_0x8bb1ae,'rows':_0x64fe22}:null;}})[_0x6282('0x24')](respondWithResult(_0x50cef9,null))['catch'](handleError(_0x50cef9,null));};exports['getSubjects']=function(_0x2d0390,_0x1538ca,_0x243dfd){var _0x45a47c={};var _0x58a1c9={};var _0x428ccc;var _0xc3985d;return db['Dynamics365Configuration'][_0x6282('0x48')]({'where':{'id':_0x2d0390['params']['id']}})['then'](handleEntityNotFound(_0x1538ca,null))[_0x6282('0x24')](function(_0x31dc47){if(_0x31dc47){_0x428ccc=_0x31dc47;_0x58a1c9['model']=_[_0x6282('0x31')](db[_0x6282('0x49')][_0x6282('0x2a')]);_0x58a1c9[_0x6282('0x30')]=_[_0x6282('0x31')](_0x2d0390[_0x6282('0x30')]);_0x58a1c9[_0x6282('0x32')]=_[_0x6282('0x33')](_0x58a1c9[_0x6282('0x2e')],_0x58a1c9['query']);_0x45a47c[_0x6282('0x35')]=_[_0x6282('0x33')](_0x58a1c9[_0x6282('0x2e')],qs[_0x6282('0x34')](_0x2d0390[_0x6282('0x30')][_0x6282('0x34')]));_0x45a47c[_0x6282('0x35')]=_0x45a47c[_0x6282('0x35')][_0x6282('0x36')]?_0x45a47c['attributes']:_0x58a1c9[_0x6282('0x2e')];_0x45a47c['order']=qs[_0x6282('0x3a')](_0x2d0390[_0x6282('0x30')][_0x6282('0x3a')]);_0x45a47c['where']=qs[_0x6282('0x32')](_[_0x6282('0x4a')](_0x2d0390[_0x6282('0x30')],_0x58a1c9[_0x6282('0x32')]));if(_0x2d0390[_0x6282('0x30')]['filter']){_0x45a47c[_0x6282('0x3b')]=_[_0x6282('0x3d')](_0x45a47c[_0x6282('0x3b')],{'$or':_[_0x6282('0x2f')](_0x45a47c['attributes'],function(_0x3655d7){var _0x29c1a7={};_0x29c1a7[_0x3655d7]={'$like':'%'+_0x2d0390[_0x6282('0x30')][_0x6282('0x4b')]+'%'};return _0x29c1a7;})});}_0x45a47c=_[_0x6282('0x3d')]({},_0x45a47c,_0x2d0390['options']);return _0x428ccc[_0x6282('0x4d')](_0x45a47c);}})[_0x6282('0x24')](function(_0x1a385a){if(_0x1a385a){_0xc3985d=_0x1a385a[_0x6282('0x36')];if(!_0x2d0390[_0x6282('0x30')][_0x6282('0x37')]('nolimit')){_0x45a47c[_0x6282('0x1d')]=qs[_0x6282('0x1d')](_0x2d0390[_0x6282('0x30')]['limit']);_0x45a47c[_0x6282('0x1f')]=qs[_0x6282('0x1f')](_0x2d0390[_0x6282('0x30')][_0x6282('0x1f')]);}return _0x428ccc['getSubjects'](_0x45a47c);}})[_0x6282('0x24')](function(_0x175a75){if(_0x175a75){return _0x175a75?{'count':_0xc3985d,'rows':_0x175a75}:null;}})[_0x6282('0x24')](respondWithResult(_0x1538ca,null))[_0x6282('0x42')](handleError(_0x1538ca,null));};exports['getDescriptions']=function(_0x47b8ed,_0x2b0682,_0x3cbb23){var _0x37ea58={};var _0x3e2f23={};var _0x3faac5;var _0x4df5dd;return db[_0x6282('0x29')]['findOne']({'where':{'id':_0x47b8ed[_0x6282('0x43')]['id']}})[_0x6282('0x24')](handleEntityNotFound(_0x2b0682,null))[_0x6282('0x24')](function(_0x591c0e){if(_0x591c0e){_0x3faac5=_0x591c0e;_0x3e2f23[_0x6282('0x2e')]=_[_0x6282('0x31')](db[_0x6282('0x49')][_0x6282('0x2a')]);_0x3e2f23['query']=_[_0x6282('0x31')](_0x47b8ed[_0x6282('0x30')]);_0x3e2f23[_0x6282('0x32')]=_['intersection'](_0x3e2f23['model'],_0x3e2f23[_0x6282('0x30')]);_0x37ea58[_0x6282('0x35')]=_[_0x6282('0x33')](_0x3e2f23[_0x6282('0x2e')],qs[_0x6282('0x34')](_0x47b8ed[_0x6282('0x30')][_0x6282('0x34')]));_0x37ea58[_0x6282('0x35')]=_0x37ea58[_0x6282('0x35')][_0x6282('0x36')]?_0x37ea58['attributes']:_0x3e2f23[_0x6282('0x2e')];_0x37ea58[_0x6282('0x39')]=qs[_0x6282('0x3a')](_0x47b8ed[_0x6282('0x30')][_0x6282('0x3a')]);_0x37ea58[_0x6282('0x3b')]=qs[_0x6282('0x32')](_[_0x6282('0x4a')](_0x47b8ed[_0x6282('0x30')],_0x3e2f23[_0x6282('0x32')]));if(_0x47b8ed[_0x6282('0x30')][_0x6282('0x4b')]){_0x37ea58[_0x6282('0x3b')]=_[_0x6282('0x3d')](_0x37ea58[_0x6282('0x3b')],{'$or':_[_0x6282('0x2f')](_0x37ea58['attributes'],function(_0x501c7c){var _0x1ed2a0={};_0x1ed2a0[_0x501c7c]={'$like':'%'+_0x47b8ed['query'][_0x6282('0x4b')]+'%'};return _0x1ed2a0;})});}_0x37ea58=_[_0x6282('0x3d')]({},_0x37ea58,_0x47b8ed[_0x6282('0x3e')]);return _0x3faac5['getDescriptions'](_0x37ea58);}})[_0x6282('0x24')](function(_0x365a71){if(_0x365a71){_0x4df5dd=_0x365a71[_0x6282('0x36')];if(!_0x47b8ed[_0x6282('0x30')]['hasOwnProperty'](_0x6282('0x38'))){_0x37ea58[_0x6282('0x1d')]=qs[_0x6282('0x1d')](_0x47b8ed[_0x6282('0x30')][_0x6282('0x1d')]);_0x37ea58[_0x6282('0x1f')]=qs[_0x6282('0x1f')](_0x47b8ed[_0x6282('0x30')][_0x6282('0x1f')]);}return _0x3faac5[_0x6282('0x4e')](_0x37ea58);}})[_0x6282('0x24')](function(_0x1260bc){if(_0x1260bc){return _0x1260bc?{'count':_0x4df5dd,'rows':_0x1260bc}:null;}})[_0x6282('0x24')](respondWithResult(_0x2b0682,null))[_0x6282('0x42')](handleError(_0x2b0682,null));};
\ No newline at end of file
index 8c129f8..a17dcaa 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x84ab=['request-promise','path','../../config/environment','./intDynamics365Configuration.attributes','exports','Dynamics365Configuration','lodash','util','../../config/logger','api','moment'];(function(_0x15aa8b,_0x1e02b2){var _0x24dd4b=function(_0x14e6ad){while(--_0x14e6ad){_0x15aa8b['push'](_0x15aa8b['shift']());}};_0x24dd4b(++_0x1e02b2);}(_0x84ab,0x12f));var _0xb84a=function(_0x59eefb,_0x2151ce){_0x59eefb=_0x59eefb-0x0;var _0x1a49e8=_0x84ab[_0x59eefb];return _0x1a49e8;};'use strict';var _=require(_0xb84a('0x0'));var util=require(_0xb84a('0x1'));var logger=require(_0xb84a('0x2'))(_0xb84a('0x3'));var moment=require(_0xb84a('0x4'));var BPromise=require('bluebird');var rp=require(_0xb84a('0x5'));var fs=require('fs');var path=require(_0xb84a('0x6'));var rimraf=require('rimraf');var config=require(_0xb84a('0x7'));var attributes=require(_0xb84a('0x8'));module[_0xb84a('0x9')]=function(_0x5b9def,_0x521a64){return _0x5b9def['define'](_0xb84a('0xa'),attributes,{'tableName':'int_dynamics365_configurations','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xb43b=['rimraf','../../config/environment','./intDynamics365Configuration.attributes','Dynamics365Configuration','int_dynamics365_configurations','lodash','util','api','moment','bluebird','path'];(function(_0x457bec,_0x213f2b){var _0x2d8a8e=function(_0x4e819e){while(--_0x4e819e){_0x457bec['push'](_0x457bec['shift']());}};_0x2d8a8e(++_0x213f2b);}(_0xb43b,0x1b2));var _0xbb43=function(_0x2fc905,_0x22c8ca){_0x2fc905=_0x2fc905-0x0;var _0x4ac29d=_0xb43b[_0x2fc905];return _0x4ac29d;};'use strict';var _=require(_0xbb43('0x0'));var util=require(_0xbb43('0x1'));var logger=require('../../config/logger')(_0xbb43('0x2'));var moment=require(_0xbb43('0x3'));var BPromise=require(_0xbb43('0x4'));var rp=require('request-promise');var fs=require('fs');var path=require(_0xbb43('0x5'));var rimraf=require(_0xbb43('0x6'));var config=require(_0xbb43('0x7'));var attributes=require(_0xbb43('0x8'));module['exports']=function(_0x491fb9,_0x378df5){return _0x491fb9['define'](_0xbb43('0x9'),attributes,{'tableName':_0xbb43('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 0d3eeff..f847499 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9159=['catch','lodash','bluebird','randomstring','ioredis','../../config/utils','../../config/logger','../../config/environment','client','http','debug','error','code','Dynamics365Configuration,\x20%s,\x20%s','message','info','request\x20sent'];(function(_0x3897ad,_0x40663f){var _0x197bdd=function(_0x196146){while(--_0x196146){_0x3897ad['push'](_0x3897ad['shift']());}};_0x197bdd(++_0x40663f);}(_0x9159,0x100));var _0x9915=function(_0x2aaa60,_0x22258f){_0x2aaa60=_0x2aaa60-0x0;var _0x2e3fa5=_0x9159[_0x2aaa60];return _0x2e3fa5;};'use strict';var _=require(_0x9915('0x0'));var util=require('util');var moment=require('moment');var BPromise=require(_0x9915('0x1'));var rs=require(_0x9915('0x2'));var fs=require('fs');var Redis=require(_0x9915('0x3'));var db=require('../../mysqldb')['db'];var utils=require(_0x9915('0x4'));var logger=require(_0x9915('0x5'))('rpc');var config=require(_0x9915('0x6'));var jayson=require('jayson/promise');var client=jayson[_0x9915('0x7')][_0x9915('0x8')]({'port':0x232a});function respondWithRpcPromise(_0x5470cf,_0x13ce46,_0x1e89eb){return new BPromise(function(_0x4c61e8,_0x41c3d6){return client['request'](_0x5470cf,_0x1e89eb)['then'](function(_0x3781c9){logger['info']('Dynamics365Configuration,\x20%s,\x20%s',_0x13ce46,'request\x20sent');logger[_0x9915('0x9')]('Dynamics365Configuration,\x20%s,\x20%s,\x20%s',_0x13ce46,'request\x20sent',JSON['stringify'](_0x3781c9));if(_0x3781c9[_0x9915('0xa')]){if(_0x3781c9['error'][_0x9915('0xb')]===0x1f4){logger['error'](_0x9915('0xc'),_0x13ce46,_0x3781c9[_0x9915('0xa')][_0x9915('0xd')]);return _0x41c3d6(_0x3781c9[_0x9915('0xa')][_0x9915('0xd')]);}logger[_0x9915('0xa')](_0x9915('0xc'),_0x13ce46,_0x3781c9[_0x9915('0xa')]['message']);return _0x4c61e8(_0x3781c9['error']['message']);}else{logger[_0x9915('0xe')](_0x9915('0xc'),_0x13ce46,_0x9915('0xf'));_0x4c61e8(_0x3781c9['result']['message']);}})[_0x9915('0x10')](function(_0x2c8844){logger[_0x9915('0xa')](_0x9915('0xc'),_0x13ce46,_0x2c8844);_0x41c3d6(_0x2c8844);});});}
\ No newline at end of file
+var _0xb8ba=['error','code','message','result','catch','lodash','moment','bluebird','randomstring','../../mysqldb','../../config/utils','rpc','jayson/promise','then','info','Dynamics365Configuration,\x20%s,\x20%s','debug','request\x20sent'];(function(_0x3aaf0a,_0x450970){var _0x33e6bc=function(_0x1db54d){while(--_0x1db54d){_0x3aaf0a['push'](_0x3aaf0a['shift']());}};_0x33e6bc(++_0x450970);}(_0xb8ba,0x113));var _0xab8b=function(_0x23b0b1,_0x4ce415){_0x23b0b1=_0x23b0b1-0x0;var _0x39dc3c=_0xb8ba[_0x23b0b1];return _0x39dc3c;};'use strict';var _=require(_0xab8b('0x0'));var util=require('util');var moment=require(_0xab8b('0x1'));var BPromise=require(_0xab8b('0x2'));var rs=require(_0xab8b('0x3'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0xab8b('0x4'))['db'];var utils=require(_0xab8b('0x5'));var logger=require('../../config/logger')(_0xab8b('0x6'));var config=require('../../config/environment');var jayson=require(_0xab8b('0x7'));var client=jayson['client']['http']({'port':0x232a});function respondWithRpcPromise(_0x56ed7e,_0x213219,_0x126912){return new BPromise(function(_0x2efaf6,_0x1585e7){return client['request'](_0x56ed7e,_0x126912)[_0xab8b('0x8')](function(_0x4b2938){logger[_0xab8b('0x9')](_0xab8b('0xa'),_0x213219,'request\x20sent');logger[_0xab8b('0xb')]('Dynamics365Configuration,\x20%s,\x20%s,\x20%s',_0x213219,_0xab8b('0xc'),JSON['stringify'](_0x4b2938));if(_0x4b2938[_0xab8b('0xd')]){if(_0x4b2938[_0xab8b('0xd')][_0xab8b('0xe')]===0x1f4){logger[_0xab8b('0xd')](_0xab8b('0xa'),_0x213219,_0x4b2938[_0xab8b('0xd')][_0xab8b('0xf')]);return _0x1585e7(_0x4b2938[_0xab8b('0xd')]['message']);}logger[_0xab8b('0xd')]('Dynamics365Configuration,\x20%s,\x20%s',_0x213219,_0x4b2938['error'][_0xab8b('0xf')]);return _0x2efaf6(_0x4b2938[_0xab8b('0xd')][_0xab8b('0xf')]);}else{logger[_0xab8b('0x9')](_0xab8b('0xa'),_0x213219,_0xab8b('0xc'));_0x2efaf6(_0x4b2938[_0xab8b('0x10')][_0xab8b('0xf')]);}})[_0xab8b('0x11')](function(_0x54620f){logger[_0xab8b('0xd')](_0xab8b('0xa'),_0x213219,_0x54620f);_0x1585e7(_0x54620f);});});}
\ No newline at end of file
index 970e421..044b9b3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa9da=['util','path','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','isAuthenticated','index','get','/:id','show','post','put','update','delete','destroy','exports','multer'];(function(_0x13bb95,_0x5e079f){var _0x58a3f1=function(_0x3fe115){while(--_0x3fe115){_0x13bb95['push'](_0x13bb95['shift']());}};_0x58a3f1(++_0x5e079f);}(_0xa9da,0x1cb));var _0xaa9d=function(_0x342dda,_0x308087){_0x342dda=_0x342dda-0x0;var _0x45607c=_0xa9da[_0x342dda];return _0x45607c;};'use strict';var multer=require(_0xaa9d('0x0'));var util=require(_0xaa9d('0x1'));var path=require(_0xaa9d('0x2'));var timeout=require('connect-timeout');var express=require(_0xaa9d('0x3'));var router=express[_0xaa9d('0x4')]();var fs_extra=require(_0xaa9d('0x5'));var auth=require(_0xaa9d('0x6'));var interaction=require(_0xaa9d('0x7'));var config=require(_0xaa9d('0x8'));var controller=require('./intDynamics365Field.controller');router['get']('/',auth[_0xaa9d('0x9')](),controller[_0xaa9d('0xa')]);router[_0xaa9d('0xb')](_0xaa9d('0xc'),auth[_0xaa9d('0x9')](),controller[_0xaa9d('0xd')]);router[_0xaa9d('0xe')]('/',auth['isAuthenticated'](),controller['create']);router[_0xaa9d('0xf')](_0xaa9d('0xc'),auth[_0xaa9d('0x9')](),controller[_0xaa9d('0x10')]);router[_0xaa9d('0x11')]('/:id',auth[_0xaa9d('0x9')](),controller[_0xaa9d('0x12')]);module[_0xaa9d('0x13')]=router;
\ No newline at end of file
+var _0x64e6=['delete','destroy','multer','util','connect-timeout','Router','../../components/auth/service','../../components/interaction/service','../../config/environment','./intDynamics365Field.controller','get','isAuthenticated','post','create','put','/:id','update'];(function(_0x1a1601,_0x4567ea){var _0x566869=function(_0x46614e){while(--_0x46614e){_0x1a1601['push'](_0x1a1601['shift']());}};_0x566869(++_0x4567ea);}(_0x64e6,0x1ab));var _0x664e=function(_0x4854e7,_0x46fbb0){_0x4854e7=_0x4854e7-0x0;var _0x45a654=_0x64e6[_0x4854e7];return _0x45a654;};'use strict';var multer=require(_0x664e('0x0'));var util=require(_0x664e('0x1'));var path=require('path');var timeout=require(_0x664e('0x2'));var express=require('express');var router=express[_0x664e('0x3')]();var fs_extra=require('fs-extra');var auth=require(_0x664e('0x4'));var interaction=require(_0x664e('0x5'));var config=require(_0x664e('0x6'));var controller=require(_0x664e('0x7'));router[_0x664e('0x8')]('/',auth[_0x664e('0x9')](),controller['index']);router['get']('/:id',auth[_0x664e('0x9')](),controller['show']);router[_0x664e('0xa')]('/',auth['isAuthenticated'](),controller[_0x664e('0xb')]);router[_0x664e('0xc')](_0x664e('0xd'),auth[_0x664e('0x9')](),controller[_0x664e('0xe')]);router[_0x664e('0xf')](_0x664e('0xd'),auth['isAuthenticated'](),controller[_0x664e('0x10')]);module['exports']=router;
\ No newline at end of file
index 73fe195..2d64104 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf51c=['keyValue','picklist','string','STRING','BOOLEAN','sequelize','exports','ENUM','customVariable'];(function(_0x3dc4a5,_0x15544e){var _0x48b005=function(_0x15dd3a){while(--_0x15dd3a){_0x3dc4a5['push'](_0x3dc4a5['shift']());}};_0x48b005(++_0x15544e);}(_0xf51c,0xb0));var _0xcf51=function(_0x1e5cf8,_0x5f2535){_0x1e5cf8=_0x1e5cf8-0x0;var _0x56451a=_0xf51c[_0x1e5cf8];return _0x56451a;};'use strict';var Sequelize=require(_0xcf51('0x0'));module[_0xcf51('0x1')]={'type':{'type':Sequelize[_0xcf51('0x2')]('string','variable',_0xcf51('0x3'),_0xcf51('0x4'),_0xcf51('0x5')),'defaultValue':_0xcf51('0x6')},'content':{'type':Sequelize[_0xcf51('0x7')]},'key':{'type':Sequelize[_0xcf51('0x7')]},'keyType':{'type':Sequelize[_0xcf51('0x2')](_0xcf51('0x6'),'variable','customVariable')},'keyContent':{'type':Sequelize[_0xcf51('0x7')]},'idField':{'type':Sequelize['STRING']},'nameField':{'type':Sequelize['STRING']},'customField':{'type':Sequelize[_0xcf51('0x8')],'defaultValue':!![]},'variableName':{'type':Sequelize[_0xcf51('0x7')]}};
\ No newline at end of file
+var _0x4c67=['keyValue','picklist','STRING','BOOLEAN','exports','ENUM','string','customVariable'];(function(_0x336d4a,_0x1f1544){var _0x565506=function(_0x1e01b9){while(--_0x1e01b9){_0x336d4a['push'](_0x336d4a['shift']());}};_0x565506(++_0x1f1544);}(_0x4c67,0xd4));var _0x74c6=function(_0x563dd7,_0x4ad148){_0x563dd7=_0x563dd7-0x0;var _0x5e1bc3=_0x4c67[_0x563dd7];return _0x5e1bc3;};'use strict';var Sequelize=require('sequelize');module[_0x74c6('0x0')]={'type':{'type':Sequelize[_0x74c6('0x1')](_0x74c6('0x2'),'variable',_0x74c6('0x3'),_0x74c6('0x4'),_0x74c6('0x5')),'defaultValue':_0x74c6('0x2')},'content':{'type':Sequelize['STRING']},'key':{'type':Sequelize['STRING']},'keyType':{'type':Sequelize['ENUM'](_0x74c6('0x2'),'variable','customVariable')},'keyContent':{'type':Sequelize['STRING']},'idField':{'type':Sequelize[_0x74c6('0x6')]},'nameField':{'type':Sequelize[_0x74c6('0x6')]},'customField':{'type':Sequelize[_0x74c6('0x7')],'defaultValue':!![]},'variableName':{'type':Sequelize['STRING']}};
\ No newline at end of file
index 9fb0754..dd0b643 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xda3d=['desk.js','querystring','papaparse','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/license/util','../../mysqldb','status','json','offset','undefined','limit','count','set','Content-Range','apply','reject','save','update','then','destroy','end','sendStatus','stack','name','send','index','Dynamics365Field','rawAttributes','fieldName','key','model','map','keys','query','filters','intersection','attributes','fields','nolimit','order','sort','where','pick','filter','merge','VIRTUAL','options','includeAll','include','findAll','rows','catch','show','length','create','body','find','params','eml-format','fast-json-patch','request-promise','moment','mustache','util','sox','to-csv','fs-extra','lodash','crypto','jsforce'];(function(_0x2d2c16,_0x4e88b6){var _0x53f2fb=function(_0x6b6dac){while(--_0x6b6dac){_0x2d2c16['push'](_0x2d2c16['shift']());}};_0x53f2fb(++_0x4e88b6);}(_0xda3d,0x1bc));var _0xdda3=function(_0x57deaf,_0x178547){_0x57deaf=_0x57deaf-0x0;var _0x2ea7ce=_0xda3d[_0x57deaf];return _0x2ea7ce;};'use strict';var emlformat=require(_0xdda3('0x0'));var rimraf=require('rimraf');var zipdir=require('zip-dir');var jsonpatch=require(_0xdda3('0x1'));var rp=require(_0xdda3('0x2'));var moment=require(_0xdda3('0x3'));var BPromise=require('bluebird');var Mustache=require(_0xdda3('0x4'));var util=require(_0xdda3('0x5'));var path=require('path');var sox=require(_0xdda3('0x6'));var csv=require(_0xdda3('0x7'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0xdda3('0x8'));var _=require(_0xdda3('0x9'));var squel=require('squel');var crypto=require(_0xdda3('0xa'));var jsforce=require(_0xdda3('0xb'));var deskjs=require(_0xdda3('0xc'));var toCsv=require(_0xdda3('0x7'));var querystring=require(_0xdda3('0xd'));var Papa=require(_0xdda3('0xe'));var Redis=require('ioredis');var authService=require(_0xdda3('0xf'));var qs=require(_0xdda3('0x10'));var as=require(_0xdda3('0x11'));var hardwareService=require(_0xdda3('0x12'));var logger=require(_0xdda3('0x13'))(_0xdda3('0x14'));var utils=require(_0xdda3('0x15'));var config=require('../../config/environment');var licenseUtil=require(_0xdda3('0x16'));var db=require(_0xdda3('0x17'))['db'];function respondWithStatusCode(_0x4bccd6,_0x602485){_0x602485=_0x602485||0xcc;return function(_0x13387b){if(_0x13387b){return _0x4bccd6['sendStatus'](_0x602485);}return _0x4bccd6[_0xdda3('0x18')](_0x602485)['end']();};}function respondWithResult(_0x167e8d,_0x46d5cd){_0x46d5cd=_0x46d5cd||0xc8;return function(_0x4362a1){if(_0x4362a1){return _0x167e8d[_0xdda3('0x18')](_0x46d5cd)[_0xdda3('0x19')](_0x4362a1);}};}function respondWithFilteredResult(_0xf7663d,_0x593560){return function(_0x526c33){if(_0x526c33){var _0x5df5e6=typeof _0x593560[_0xdda3('0x1a')]===_0xdda3('0x1b')&&typeof _0x593560[_0xdda3('0x1c')]===_0xdda3('0x1b');var _0x44dddb=_0x526c33[_0xdda3('0x1d')];var _0x573828=_0x5df5e6?0x0:_0x593560[_0xdda3('0x1a')];var _0x15c6b3=_0x5df5e6?_0x526c33['count']:_0x593560[_0xdda3('0x1a')]+_0x593560[_0xdda3('0x1c')];var _0x29f1d9;if(_0x15c6b3>=_0x44dddb){_0x15c6b3=_0x44dddb;_0x29f1d9=0xc8;}else{_0x29f1d9=0xce;}_0xf7663d['status'](_0x29f1d9);return _0xf7663d[_0xdda3('0x1e')](_0xdda3('0x1f'),_0x573828+'-'+_0x15c6b3+'/'+_0x44dddb)[_0xdda3('0x19')](_0x526c33);}return null;};}function patchUpdates(_0x2ed113){return function(_0x130a0f){try{jsonpatch[_0xdda3('0x20')](_0x130a0f,_0x2ed113,!![]);}catch(_0x58b6e4){return BPromise[_0xdda3('0x21')](_0x58b6e4);}return _0x130a0f[_0xdda3('0x22')]();};}function saveUpdates(_0x141ca9,_0x6c8fa5){return function(_0x5041de){if(_0x5041de){return _0x5041de[_0xdda3('0x23')](_0x141ca9)[_0xdda3('0x24')](function(_0x5c2110){return _0x5c2110;});}return null;};}function removeEntity(_0x1923ed,_0x359b71){return function(_0xbf76b6){if(_0xbf76b6){return _0xbf76b6[_0xdda3('0x25')]()[_0xdda3('0x24')](function(){_0x1923ed['status'](0xcc)[_0xdda3('0x26')]();});}};}function handleEntityNotFound(_0x4fd413,_0x375e0){return function(_0x3a426c){if(!_0x3a426c){_0x4fd413[_0xdda3('0x27')](0x194);}return _0x3a426c;};}function handleError(_0x36be95,_0x333e99){_0x333e99=_0x333e99||0x1f4;return function(_0x79ace1){logger['error'](_0x79ace1[_0xdda3('0x28')]);if(_0x79ace1['name']){delete _0x79ace1[_0xdda3('0x29')];}_0x36be95[_0xdda3('0x18')](_0x333e99)[_0xdda3('0x2a')](_0x79ace1);};}exports[_0xdda3('0x2b')]=function(_0x24a4c2,_0x1d3d8a){var _0x18bc86={},_0x5f3994={},_0x1620ad={'count':0x0,'rows':[]};var _0x49a04d=_['map'](db[_0xdda3('0x2c')][_0xdda3('0x2d')],function(_0x33dcd7){return{'name':_0x33dcd7[_0xdda3('0x2e')],'type':_0x33dcd7['type'][_0xdda3('0x2f')]};});_0x5f3994[_0xdda3('0x30')]=_[_0xdda3('0x31')](_0x49a04d,'name');_0x5f3994['query']=_[_0xdda3('0x32')](_0x24a4c2[_0xdda3('0x33')]);_0x5f3994[_0xdda3('0x34')]=_[_0xdda3('0x35')](_0x5f3994[_0xdda3('0x30')],_0x5f3994[_0xdda3('0x33')]);_0x18bc86[_0xdda3('0x36')]=_[_0xdda3('0x35')](_0x5f3994[_0xdda3('0x30')],qs[_0xdda3('0x37')](_0x24a4c2['query'][_0xdda3('0x37')]));_0x18bc86[_0xdda3('0x36')]=_0x18bc86[_0xdda3('0x36')]['length']?_0x18bc86[_0xdda3('0x36')]:_0x5f3994['model'];if(!_0x24a4c2[_0xdda3('0x33')]['hasOwnProperty'](_0xdda3('0x38'))){_0x18bc86['limit']=qs['limit'](_0x24a4c2[_0xdda3('0x33')][_0xdda3('0x1c')]);_0x18bc86[_0xdda3('0x1a')]=qs[_0xdda3('0x1a')](_0x24a4c2[_0xdda3('0x33')][_0xdda3('0x1a')]);}_0x18bc86[_0xdda3('0x39')]=qs[_0xdda3('0x3a')](_0x24a4c2[_0xdda3('0x33')][_0xdda3('0x3a')]);_0x18bc86[_0xdda3('0x3b')]=qs[_0xdda3('0x34')](_[_0xdda3('0x3c')](_0x24a4c2['query'],_0x5f3994['filters']),_0x49a04d);if(_0x24a4c2[_0xdda3('0x33')][_0xdda3('0x3d')]){_0x18bc86['where']=_[_0xdda3('0x3e')](_0x18bc86[_0xdda3('0x3b')],{'$or':_[_0xdda3('0x31')](_0x49a04d,function(_0x58d15b){if(_0x58d15b['type']!==_0xdda3('0x3f')){var _0x37d630={};_0x37d630[_0x58d15b[_0xdda3('0x29')]]={'$like':'%'+_0x24a4c2[_0xdda3('0x33')][_0xdda3('0x3d')]+'%'};return _0x37d630;}})});}_0x18bc86=_[_0xdda3('0x3e')]({},_0x18bc86,_0x24a4c2[_0xdda3('0x40')]);var _0x45717d={'where':_0x18bc86[_0xdda3('0x3b')]};return db['Dynamics365Field']['count'](_0x45717d)[_0xdda3('0x24')](function(_0x31a85c){_0x1620ad['count']=_0x31a85c;if(_0x24a4c2[_0xdda3('0x33')][_0xdda3('0x41')]){_0x18bc86[_0xdda3('0x42')]=[{'all':!![]}];}return db['Dynamics365Field'][_0xdda3('0x43')](_0x18bc86);})[_0xdda3('0x24')](function(_0x4b1fba){_0x1620ad[_0xdda3('0x44')]=_0x4b1fba;return _0x1620ad;})['then'](respondWithFilteredResult(_0x1d3d8a,_0x18bc86))[_0xdda3('0x45')](handleError(_0x1d3d8a,null));};exports[_0xdda3('0x46')]=function(_0xf65d8c,_0x2850a5){var _0xce1da7={'raw':!![],'where':{'id':_0xf65d8c['params']['id']}},_0x38d1d8={};_0x38d1d8[_0xdda3('0x30')]=_[_0xdda3('0x32')](db['Dynamics365Field'][_0xdda3('0x2d')]);_0x38d1d8[_0xdda3('0x33')]=_[_0xdda3('0x32')](_0xf65d8c[_0xdda3('0x33')]);_0x38d1d8['filters']=_[_0xdda3('0x35')](_0x38d1d8[_0xdda3('0x30')],_0x38d1d8[_0xdda3('0x33')]);_0xce1da7[_0xdda3('0x36')]=_[_0xdda3('0x35')](_0x38d1d8[_0xdda3('0x30')],qs[_0xdda3('0x37')](_0xf65d8c[_0xdda3('0x33')][_0xdda3('0x37')]));_0xce1da7[_0xdda3('0x36')]=_0xce1da7[_0xdda3('0x36')][_0xdda3('0x47')]?_0xce1da7[_0xdda3('0x36')]:_0x38d1d8['model'];if(_0xf65d8c['query'][_0xdda3('0x41')]){_0xce1da7['include']=[{'all':!![]}];}_0xce1da7=_['merge']({},_0xce1da7,_0xf65d8c[_0xdda3('0x40')]);return db['Dynamics365Field']['find'](_0xce1da7)[_0xdda3('0x24')](handleEntityNotFound(_0x2850a5,null))[_0xdda3('0x24')](respondWithResult(_0x2850a5,null))[_0xdda3('0x45')](handleError(_0x2850a5,null));};exports[_0xdda3('0x48')]=function(_0x2fe35a,_0xd89ee8){return db[_0xdda3('0x2c')][_0xdda3('0x48')](_0x2fe35a[_0xdda3('0x49')],{})[_0xdda3('0x24')](respondWithResult(_0xd89ee8,0xc9))[_0xdda3('0x45')](handleError(_0xd89ee8,null));};exports[_0xdda3('0x23')]=function(_0x49c33c,_0x88511a){if(_0x49c33c['body']['id']){delete _0x49c33c[_0xdda3('0x49')]['id'];}return db[_0xdda3('0x2c')][_0xdda3('0x4a')]({'where':{'id':_0x49c33c[_0xdda3('0x4b')]['id']}})[_0xdda3('0x24')](handleEntityNotFound(_0x88511a,null))[_0xdda3('0x24')](saveUpdates(_0x49c33c[_0xdda3('0x49')],null))[_0xdda3('0x24')](respondWithResult(_0x88511a,null))[_0xdda3('0x45')](handleError(_0x88511a,null));};exports['destroy']=function(_0x5dce5a,_0x12b7aa){return db['Dynamics365Field'][_0xdda3('0x4a')]({'where':{'id':_0x5dce5a['params']['id']}})[_0xdda3('0x24')](handleEntityNotFound(_0x12b7aa,null))['then'](removeEntity(_0x12b7aa,null))['catch'](handleError(_0x12b7aa,null));};
\ No newline at end of file
+var _0xae8b=['count','offset','limit','set','Content-Range','apply','reject','save','update','destroy','sendStatus','error','stack','name','send','index','Dynamics365Field','fieldName','type','model','map','keys','query','filters','intersection','attributes','fields','hasOwnProperty','nolimit','order','sort','where','pick','filter','merge','VIRTUAL','options','then','includeAll','include','findAll','rows','rawAttributes','find','catch','create','body','params','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox','to-csv','ejs','fs-extra','lodash','jsforce','papaparse','ioredis','../../components/parsers/qs','../../config/license/hardware','../../config/utils','../../config/environment','../../config/license/util','status','end','json','undefined'];(function(_0x1589dd,_0x2b9d22){var _0x1bddd1=function(_0x3687f8){while(--_0x3687f8){_0x1589dd['push'](_0x1589dd['shift']());}};_0x1bddd1(++_0x2b9d22);}(_0xae8b,0x1a7));var _0xbae8=function(_0x3b380d,_0x4bf247){_0x3b380d=_0x3b380d-0x0;var _0x54502b=_0xae8b[_0x3b380d];return _0x54502b;};'use strict';var emlformat=require(_0xbae8('0x0'));var rimraf=require(_0xbae8('0x1'));var zipdir=require(_0xbae8('0x2'));var jsonpatch=require(_0xbae8('0x3'));var rp=require(_0xbae8('0x4'));var moment=require(_0xbae8('0x5'));var BPromise=require(_0xbae8('0x6'));var Mustache=require(_0xbae8('0x7'));var util=require(_0xbae8('0x8'));var path=require(_0xbae8('0x9'));var sox=require(_0xbae8('0xa'));var csv=require(_0xbae8('0xb'));var ejs=require(_0xbae8('0xc'));var fs=require('fs');var fs_extra=require(_0xbae8('0xd'));var _=require(_0xbae8('0xe'));var squel=require('squel');var crypto=require('crypto');var jsforce=require(_0xbae8('0xf'));var deskjs=require('desk.js');var toCsv=require(_0xbae8('0xb'));var querystring=require('querystring');var Papa=require(_0xbae8('0x10'));var Redis=require(_0xbae8('0x11'));var authService=require('../../components/auth/service');var qs=require(_0xbae8('0x12'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0xbae8('0x13'));var logger=require('../../config/logger')('api');var utils=require(_0xbae8('0x14'));var config=require(_0xbae8('0x15'));var licenseUtil=require(_0xbae8('0x16'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x5b908a,_0xdf4584){_0xdf4584=_0xdf4584||0xcc;return function(_0x1f11cf){if(_0x1f11cf){return _0x5b908a['sendStatus'](_0xdf4584);}return _0x5b908a[_0xbae8('0x17')](_0xdf4584)[_0xbae8('0x18')]();};}function respondWithResult(_0x145031,_0x38d998){_0x38d998=_0x38d998||0xc8;return function(_0x3b5d5c){if(_0x3b5d5c){return _0x145031['status'](_0x38d998)[_0xbae8('0x19')](_0x3b5d5c);}};}function respondWithFilteredResult(_0x1adaca,_0x31faf5){return function(_0x38bdbe){if(_0x38bdbe){var _0x178dfc=typeof _0x31faf5['offset']===_0xbae8('0x1a')&&typeof _0x31faf5['limit']===_0xbae8('0x1a');var _0x199298=_0x38bdbe[_0xbae8('0x1b')];var _0x19d470=_0x178dfc?0x0:_0x31faf5[_0xbae8('0x1c')];var _0x1757ed=_0x178dfc?_0x38bdbe['count']:_0x31faf5[_0xbae8('0x1c')]+_0x31faf5[_0xbae8('0x1d')];var _0x438160;if(_0x1757ed>=_0x199298){_0x1757ed=_0x199298;_0x438160=0xc8;}else{_0x438160=0xce;}_0x1adaca['status'](_0x438160);return _0x1adaca[_0xbae8('0x1e')](_0xbae8('0x1f'),_0x19d470+'-'+_0x1757ed+'/'+_0x199298)[_0xbae8('0x19')](_0x38bdbe);}return null;};}function patchUpdates(_0x2dc156){return function(_0x48dbb6){try{jsonpatch[_0xbae8('0x20')](_0x48dbb6,_0x2dc156,!![]);}catch(_0x173dd4){return BPromise[_0xbae8('0x21')](_0x173dd4);}return _0x48dbb6[_0xbae8('0x22')]();};}function saveUpdates(_0x3cb8ca,_0x145daa){return function(_0x37aa1d){if(_0x37aa1d){return _0x37aa1d[_0xbae8('0x23')](_0x3cb8ca)['then'](function(_0x29cfed){return _0x29cfed;});}return null;};}function removeEntity(_0xd2b14e,_0x5f04a9){return function(_0x57d77c){if(_0x57d77c){return _0x57d77c[_0xbae8('0x24')]()['then'](function(){_0xd2b14e[_0xbae8('0x17')](0xcc)[_0xbae8('0x18')]();});}};}function handleEntityNotFound(_0x2284ac,_0x194c49){return function(_0xc46e7f){if(!_0xc46e7f){_0x2284ac[_0xbae8('0x25')](0x194);}return _0xc46e7f;};}function handleError(_0x1d7219,_0x26cb63){_0x26cb63=_0x26cb63||0x1f4;return function(_0x1b9adb){logger[_0xbae8('0x26')](_0x1b9adb[_0xbae8('0x27')]);if(_0x1b9adb[_0xbae8('0x28')]){delete _0x1b9adb[_0xbae8('0x28')];}_0x1d7219[_0xbae8('0x17')](_0x26cb63)[_0xbae8('0x29')](_0x1b9adb);};}exports[_0xbae8('0x2a')]=function(_0x3e0d54,_0xd22cf5){var _0x2aa0d9={},_0x3752ba={},_0x557e43={'count':0x0,'rows':[]};var _0x5620f2=_['map'](db[_0xbae8('0x2b')]['rawAttributes'],function(_0x344a89){return{'name':_0x344a89[_0xbae8('0x2c')],'type':_0x344a89[_0xbae8('0x2d')]['key']};});_0x3752ba[_0xbae8('0x2e')]=_[_0xbae8('0x2f')](_0x5620f2,_0xbae8('0x28'));_0x3752ba['query']=_[_0xbae8('0x30')](_0x3e0d54[_0xbae8('0x31')]);_0x3752ba[_0xbae8('0x32')]=_[_0xbae8('0x33')](_0x3752ba[_0xbae8('0x2e')],_0x3752ba[_0xbae8('0x31')]);_0x2aa0d9[_0xbae8('0x34')]=_['intersection'](_0x3752ba[_0xbae8('0x2e')],qs[_0xbae8('0x35')](_0x3e0d54[_0xbae8('0x31')][_0xbae8('0x35')]));_0x2aa0d9[_0xbae8('0x34')]=_0x2aa0d9['attributes']['length']?_0x2aa0d9[_0xbae8('0x34')]:_0x3752ba[_0xbae8('0x2e')];if(!_0x3e0d54[_0xbae8('0x31')][_0xbae8('0x36')](_0xbae8('0x37'))){_0x2aa0d9[_0xbae8('0x1d')]=qs['limit'](_0x3e0d54['query']['limit']);_0x2aa0d9[_0xbae8('0x1c')]=qs[_0xbae8('0x1c')](_0x3e0d54['query']['offset']);}_0x2aa0d9[_0xbae8('0x38')]=qs[_0xbae8('0x39')](_0x3e0d54[_0xbae8('0x31')][_0xbae8('0x39')]);_0x2aa0d9[_0xbae8('0x3a')]=qs[_0xbae8('0x32')](_[_0xbae8('0x3b')](_0x3e0d54['query'],_0x3752ba[_0xbae8('0x32')]),_0x5620f2);if(_0x3e0d54[_0xbae8('0x31')][_0xbae8('0x3c')]){_0x2aa0d9[_0xbae8('0x3a')]=_[_0xbae8('0x3d')](_0x2aa0d9['where'],{'$or':_[_0xbae8('0x2f')](_0x5620f2,function(_0x28698e){if(_0x28698e[_0xbae8('0x2d')]!==_0xbae8('0x3e')){var _0x41932f={};_0x41932f[_0x28698e['name']]={'$like':'%'+_0x3e0d54[_0xbae8('0x31')][_0xbae8('0x3c')]+'%'};return _0x41932f;}})});}_0x2aa0d9=_[_0xbae8('0x3d')]({},_0x2aa0d9,_0x3e0d54[_0xbae8('0x3f')]);var _0x23a9b1={'where':_0x2aa0d9[_0xbae8('0x3a')]};return db[_0xbae8('0x2b')][_0xbae8('0x1b')](_0x23a9b1)[_0xbae8('0x40')](function(_0x4395df){_0x557e43['count']=_0x4395df;if(_0x3e0d54[_0xbae8('0x31')][_0xbae8('0x41')]){_0x2aa0d9[_0xbae8('0x42')]=[{'all':!![]}];}return db[_0xbae8('0x2b')][_0xbae8('0x43')](_0x2aa0d9);})[_0xbae8('0x40')](function(_0x3f11d0){_0x557e43[_0xbae8('0x44')]=_0x3f11d0;return _0x557e43;})[_0xbae8('0x40')](respondWithFilteredResult(_0xd22cf5,_0x2aa0d9))['catch'](handleError(_0xd22cf5,null));};exports['show']=function(_0x18b57c,_0x219f80){var _0xe5140e={'raw':!![],'where':{'id':_0x18b57c['params']['id']}},_0x24d557={};_0x24d557['model']=_[_0xbae8('0x30')](db[_0xbae8('0x2b')][_0xbae8('0x45')]);_0x24d557[_0xbae8('0x31')]=_[_0xbae8('0x30')](_0x18b57c[_0xbae8('0x31')]);_0x24d557[_0xbae8('0x32')]=_[_0xbae8('0x33')](_0x24d557[_0xbae8('0x2e')],_0x24d557['query']);_0xe5140e[_0xbae8('0x34')]=_[_0xbae8('0x33')](_0x24d557[_0xbae8('0x2e')],qs[_0xbae8('0x35')](_0x18b57c[_0xbae8('0x31')][_0xbae8('0x35')]));_0xe5140e[_0xbae8('0x34')]=_0xe5140e['attributes']['length']?_0xe5140e['attributes']:_0x24d557['model'];if(_0x18b57c['query']['includeAll']){_0xe5140e[_0xbae8('0x42')]=[{'all':!![]}];}_0xe5140e=_[_0xbae8('0x3d')]({},_0xe5140e,_0x18b57c[_0xbae8('0x3f')]);return db[_0xbae8('0x2b')][_0xbae8('0x46')](_0xe5140e)['then'](handleEntityNotFound(_0x219f80,null))['then'](respondWithResult(_0x219f80,null))[_0xbae8('0x47')](handleError(_0x219f80,null));};exports[_0xbae8('0x48')]=function(_0x4a4b52,_0x4ced9f){return db[_0xbae8('0x2b')][_0xbae8('0x48')](_0x4a4b52['body'],{})[_0xbae8('0x40')](respondWithResult(_0x4ced9f,0xc9))[_0xbae8('0x47')](handleError(_0x4ced9f,null));};exports[_0xbae8('0x23')]=function(_0x5a58f8,_0xabbd73){if(_0x5a58f8[_0xbae8('0x49')]['id']){delete _0x5a58f8['body']['id'];}return db[_0xbae8('0x2b')][_0xbae8('0x46')]({'where':{'id':_0x5a58f8[_0xbae8('0x4a')]['id']}})[_0xbae8('0x40')](handleEntityNotFound(_0xabbd73,null))['then'](saveUpdates(_0x5a58f8[_0xbae8('0x49')],null))['then'](respondWithResult(_0xabbd73,null))[_0xbae8('0x47')](handleError(_0xabbd73,null));};exports[_0xbae8('0x24')]=function(_0x3a78fd,_0x105190){return db[_0xbae8('0x2b')][_0xbae8('0x46')]({'where':{'id':_0x3a78fd[_0xbae8('0x4a')]['id']}})[_0xbae8('0x40')](handleEntityNotFound(_0x105190,null))[_0xbae8('0x40')](removeEntity(_0x105190,null))['catch'](handleError(_0x105190,null));};
\ No newline at end of file
index 586ad9a..dd9fc98 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8829=['Dynamics365Field','int_dynamics365_fields','idField','FieldId','lodash','util','moment','bluebird','request-promise','path','rimraf','../../config/environment','./intDynamics365Field.attributes','exports','define'];(function(_0x341e0f,_0x4a09d0){var _0x59555a=function(_0x4343a8){while(--_0x4343a8){_0x341e0f['push'](_0x341e0f['shift']());}};_0x59555a(++_0x4a09d0);}(_0x8829,0x1a8));var _0x9882=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x8829[_0x3dd15e];return _0x231fd0;};'use strict';var _=require(_0x9882('0x0'));var util=require(_0x9882('0x1'));var logger=require('../../config/logger')('api');var moment=require(_0x9882('0x2'));var BPromise=require(_0x9882('0x3'));var rp=require(_0x9882('0x4'));var fs=require('fs');var path=require(_0x9882('0x5'));var rimraf=require(_0x9882('0x6'));var config=require(_0x9882('0x7'));var attributes=require(_0x9882('0x8'));module[_0x9882('0x9')]=function(_0x2c1a59,_0x6ae795){return _0x2c1a59[_0x9882('0xa')](_0x9882('0xb'),attributes,{'tableName':_0x9882('0xc'),'paranoid':![],'indexes':[{'name':'dynamics365_unique_index','fields':[_0x9882('0xd'),_0x9882('0xe')],'unique':!![]}],'timestamps':!![]});};
\ No newline at end of file
+var _0xb9ee=['define','Dynamics365Field','int_dynamics365_fields','dynamics365_unique_index','idField','FieldId','../../config/logger','api','moment','bluebird','path','rimraf','../../config/environment','./intDynamics365Field.attributes','exports'];(function(_0x451d30,_0x442b74){var _0x38fd9c=function(_0x108285){while(--_0x108285){_0x451d30['push'](_0x451d30['shift']());}};_0x38fd9c(++_0x442b74);}(_0xb9ee,0x123));var _0xeb9e=function(_0x58f57f,_0x23028c){_0x58f57f=_0x58f57f-0x0;var _0x318b7f=_0xb9ee[_0x58f57f];return _0x318b7f;};'use strict';var _=require('lodash');var util=require('util');var logger=require(_0xeb9e('0x0'))(_0xeb9e('0x1'));var moment=require(_0xeb9e('0x2'));var BPromise=require(_0xeb9e('0x3'));var rp=require('request-promise');var fs=require('fs');var path=require(_0xeb9e('0x4'));var rimraf=require(_0xeb9e('0x5'));var config=require(_0xeb9e('0x6'));var attributes=require(_0xeb9e('0x7'));module[_0xeb9e('0x8')]=function(_0x46384a,_0x18460e){return _0x46384a[_0xeb9e('0x9')](_0xeb9e('0xa'),attributes,{'tableName':_0xeb9e('0xb'),'paranoid':![],'indexes':[{'name':_0xeb9e('0xc'),'fields':[_0xeb9e('0xd'),_0xeb9e('0xe')],'unique':!![]}],'timestamps':!![]});};
\ No newline at end of file
index fa811ad..c4e049e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x30f8=['moment','ioredis','../../mysqldb','../../config/utils','../../config/logger','jayson/promise','client','http','request','then','info','Dynamics365Field,\x20%s,\x20%s','request\x20sent','debug','Dynamics365Field,\x20%s,\x20%s,\x20%s','stringify','error','code','message','util'];(function(_0x35007a,_0x58a0d4){var _0x574f68=function(_0xd1c129){while(--_0xd1c129){_0x35007a['push'](_0x35007a['shift']());}};_0x574f68(++_0x58a0d4);}(_0x30f8,0x1df));var _0x830f=function(_0x3e5f39,_0x2f5455){_0x3e5f39=_0x3e5f39-0x0;var _0x34cd53=_0x30f8[_0x3e5f39];return _0x34cd53;};'use strict';var _=require('lodash');var util=require(_0x830f('0x0'));var moment=require(_0x830f('0x1'));var BPromise=require('bluebird');var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x830f('0x2'));var db=require(_0x830f('0x3'))['db'];var utils=require(_0x830f('0x4'));var logger=require(_0x830f('0x5'))('rpc');var config=require('../../config/environment');var jayson=require(_0x830f('0x6'));var client=jayson[_0x830f('0x7')][_0x830f('0x8')]({'port':0x232a});function respondWithRpcPromise(_0x287b69,_0x4190df,_0x5eaf6c){return new BPromise(function(_0x51a898,_0x35392a){return client[_0x830f('0x9')](_0x287b69,_0x5eaf6c)[_0x830f('0xa')](function(_0x3364aa){logger[_0x830f('0xb')](_0x830f('0xc'),_0x4190df,_0x830f('0xd'));logger[_0x830f('0xe')](_0x830f('0xf'),_0x4190df,_0x830f('0xd'),JSON[_0x830f('0x10')](_0x3364aa));if(_0x3364aa[_0x830f('0x11')]){if(_0x3364aa[_0x830f('0x11')][_0x830f('0x12')]===0x1f4){logger[_0x830f('0x11')](_0x830f('0xc'),_0x4190df,_0x3364aa['error'][_0x830f('0x13')]);return _0x35392a(_0x3364aa[_0x830f('0x11')][_0x830f('0x13')]);}logger[_0x830f('0x11')](_0x830f('0xc'),_0x4190df,_0x3364aa[_0x830f('0x11')]['message']);return _0x51a898(_0x3364aa[_0x830f('0x11')][_0x830f('0x13')]);}else{logger[_0x830f('0xb')](_0x830f('0xc'),_0x4190df,'request\x20sent');_0x51a898(_0x3364aa['result'][_0x830f('0x13')]);}})['catch'](function(_0x1d49b8){logger['error'](_0x830f('0xc'),_0x4190df,_0x1d49b8);_0x35392a(_0x1d49b8);});});}
\ No newline at end of file
+var _0x3f6a=['request','info','Dynamics365Field,\x20%s,\x20%s','request\x20sent','debug','Dynamics365Field,\x20%s,\x20%s,\x20%s','error','code','message','result','catch','lodash','util','bluebird','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http'];(function(_0x14647d,_0x20a244){var _0x3a0cae=function(_0x6f6909){while(--_0x6f6909){_0x14647d['push'](_0x14647d['shift']());}};_0x3a0cae(++_0x20a244);}(_0x3f6a,0x13f));var _0xa3f6=function(_0x39e37e,_0x3063db){_0x39e37e=_0x39e37e-0x0;var _0x18f9a8=_0x3f6a[_0x39e37e];return _0x18f9a8;};'use strict';var _=require(_0xa3f6('0x0'));var util=require(_0xa3f6('0x1'));var moment=require('moment');var BPromise=require(_0xa3f6('0x2'));var rs=require('randomstring');var fs=require('fs');var Redis=require('ioredis');var db=require(_0xa3f6('0x3'))['db'];var utils=require(_0xa3f6('0x4'));var logger=require(_0xa3f6('0x5'))(_0xa3f6('0x6'));var config=require(_0xa3f6('0x7'));var jayson=require(_0xa3f6('0x8'));var client=jayson[_0xa3f6('0x9')][_0xa3f6('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x538a88,_0x5c5eae,_0x5062ba){return new BPromise(function(_0x12fdf9,_0x54251d){return client[_0xa3f6('0xb')](_0x538a88,_0x5062ba)['then'](function(_0x3c0cbd){logger[_0xa3f6('0xc')](_0xa3f6('0xd'),_0x5c5eae,_0xa3f6('0xe'));logger[_0xa3f6('0xf')](_0xa3f6('0x10'),_0x5c5eae,'request\x20sent',JSON['stringify'](_0x3c0cbd));if(_0x3c0cbd[_0xa3f6('0x11')]){if(_0x3c0cbd[_0xa3f6('0x11')][_0xa3f6('0x12')]===0x1f4){logger[_0xa3f6('0x11')](_0xa3f6('0xd'),_0x5c5eae,_0x3c0cbd[_0xa3f6('0x11')][_0xa3f6('0x13')]);return _0x54251d(_0x3c0cbd[_0xa3f6('0x11')][_0xa3f6('0x13')]);}logger[_0xa3f6('0x11')]('Dynamics365Field,\x20%s,\x20%s',_0x5c5eae,_0x3c0cbd[_0xa3f6('0x11')][_0xa3f6('0x13')]);return _0x12fdf9(_0x3c0cbd[_0xa3f6('0x11')][_0xa3f6('0x13')]);}else{logger['info'](_0xa3f6('0xd'),_0x5c5eae,_0xa3f6('0xe'));_0x12fdf9(_0x3c0cbd[_0xa3f6('0x14')][_0xa3f6('0x13')]);}})[_0xa3f6('0x15')](function(_0x3c1e60){logger[_0xa3f6('0x11')](_0xa3f6('0xd'),_0x5c5eae,_0x3c1e60);_0x54251d(_0x3c1e60);});});}
\ No newline at end of file
index d163265..e24af7b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0e34=['post','create','/:id/configurations','put','update','delete','destroy','exports','multer','util','connect-timeout','express','Router','../../components/auth/service','../../components/interaction/service','../../config/environment','./intFreshdeskAccount.controller','get','isAuthenticated','index','/:id','show','getConfigurations','/:id/fields','getFields'];(function(_0x3412d5,_0xddcea6){var _0x506927=function(_0x4482f7){while(--_0x4482f7){_0x3412d5['push'](_0x3412d5['shift']());}};_0x506927(++_0xddcea6);}(_0x0e34,0x1b1));var _0x40e3=function(_0xad7093,_0x5518c2){_0xad7093=_0xad7093-0x0;var _0x2a3111=_0x0e34[_0xad7093];return _0x2a3111;};'use strict';var multer=require(_0x40e3('0x0'));var util=require(_0x40e3('0x1'));var path=require('path');var timeout=require(_0x40e3('0x2'));var express=require(_0x40e3('0x3'));var router=express[_0x40e3('0x4')]();var fs_extra=require('fs-extra');var auth=require(_0x40e3('0x5'));var interaction=require(_0x40e3('0x6'));var config=require(_0x40e3('0x7'));var controller=require(_0x40e3('0x8'));router[_0x40e3('0x9')]('/',auth[_0x40e3('0xa')](),controller[_0x40e3('0xb')]);router[_0x40e3('0x9')](_0x40e3('0xc'),auth['isAuthenticated'](),controller[_0x40e3('0xd')]);router[_0x40e3('0x9')]('/:id/configurations',auth[_0x40e3('0xa')](),controller[_0x40e3('0xe')]);router[_0x40e3('0x9')](_0x40e3('0xf'),auth['isAuthenticated'](),controller[_0x40e3('0x10')]);router[_0x40e3('0x11')]('/',auth[_0x40e3('0xa')](),controller[_0x40e3('0x12')]);router[_0x40e3('0x11')](_0x40e3('0x13'),auth['isAuthenticated'](),controller['addConfiguration']);router[_0x40e3('0x14')](_0x40e3('0xc'),auth[_0x40e3('0xa')](),controller[_0x40e3('0x15')]);router[_0x40e3('0x16')](_0x40e3('0xc'),auth[_0x40e3('0xa')](),controller[_0x40e3('0x17')]);module[_0x40e3('0x18')]=router;
\ No newline at end of file
+var _0x0da7=['/:id','multer','path','connect-timeout','express','Router','fs-extra','../../config/environment','./intFreshdeskAccount.controller','get','isAuthenticated','index','show','getConfigurations','/:id/fields','getFields','create','/:id/configurations','addConfiguration','put','delete'];(function(_0x3e834d,_0x57ea65){var _0x1ce3cc=function(_0x4a7a8c){while(--_0x4a7a8c){_0x3e834d['push'](_0x3e834d['shift']());}};_0x1ce3cc(++_0x57ea65);}(_0x0da7,0x112));var _0x70da=function(_0x1c6551,_0x3fbc2e){_0x1c6551=_0x1c6551-0x0;var _0x3f7434=_0x0da7[_0x1c6551];return _0x3f7434;};'use strict';var multer=require(_0x70da('0x0'));var util=require('util');var path=require(_0x70da('0x1'));var timeout=require(_0x70da('0x2'));var express=require(_0x70da('0x3'));var router=express[_0x70da('0x4')]();var fs_extra=require(_0x70da('0x5'));var auth=require('../../components/auth/service');var interaction=require('../../components/interaction/service');var config=require(_0x70da('0x6'));var controller=require(_0x70da('0x7'));router[_0x70da('0x8')]('/',auth[_0x70da('0x9')](),controller[_0x70da('0xa')]);router[_0x70da('0x8')]('/:id',auth[_0x70da('0x9')](),controller[_0x70da('0xb')]);router[_0x70da('0x8')]('/:id/configurations',auth[_0x70da('0x9')](),controller[_0x70da('0xc')]);router['get'](_0x70da('0xd'),auth[_0x70da('0x9')](),controller[_0x70da('0xe')]);router['post']('/',auth[_0x70da('0x9')](),controller[_0x70da('0xf')]);router['post'](_0x70da('0x10'),auth[_0x70da('0x9')](),controller[_0x70da('0x11')]);router[_0x70da('0x12')]('/:id',auth['isAuthenticated'](),controller['update']);router[_0x70da('0x13')](_0x70da('0x14'),auth[_0x70da('0x9')](),controller['destroy']);module['exports']=router;
\ No newline at end of file
index 7df3ebb..f205698 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x28f2=['exports','STRING','remoteUri','sequelize'];(function(_0x502285,_0x1b9c03){var _0xc4d4c2=function(_0x1c89f2){while(--_0x1c89f2){_0x502285['push'](_0x502285['shift']());}};_0xc4d4c2(++_0x1b9c03);}(_0x28f2,0x193));var _0x228f=function(_0x2d0055,_0x3e0aa2){_0x2d0055=_0x2d0055-0x0;var _0x5ce710=_0x28f2[_0x2d0055];return _0x5ce710;};'use strict';var Sequelize=require(_0x228f('0x0'));module[_0x228f('0x1')]={'name':{'type':Sequelize[_0x228f('0x2')]},'description':{'type':Sequelize[_0x228f('0x2')]},'username':{'type':Sequelize[_0x228f('0x2')],'unique':'username'},'apiKey':{'type':Sequelize[_0x228f('0x2')]},'remoteUri':{'type':Sequelize[_0x228f('0x2')],'unique':_0x228f('0x3')},'serverUrl':{'type':Sequelize[_0x228f('0x2')],'allowNull':![]}};
\ No newline at end of file
+var _0x93e9=['sequelize','exports','STRING','username'];(function(_0x47fd36,_0x41535d){var _0x21a0fc=function(_0x44c07c){while(--_0x44c07c){_0x47fd36['push'](_0x47fd36['shift']());}};_0x21a0fc(++_0x41535d);}(_0x93e9,0xcc));var _0x993e=function(_0x50113b,_0x5b95f6){_0x50113b=_0x50113b-0x0;var _0xbadb16=_0x93e9[_0x50113b];return _0xbadb16;};'use strict';var Sequelize=require(_0x993e('0x0'));module[_0x993e('0x1')]={'name':{'type':Sequelize[_0x993e('0x2')]},'description':{'type':Sequelize[_0x993e('0x2')]},'username':{'type':Sequelize[_0x993e('0x2')],'unique':_0x993e('0x3')},'apiKey':{'type':Sequelize[_0x993e('0x2')]},'remoteUri':{'type':Sequelize['STRING'],'unique':'remoteUri'},'serverUrl':{'type':Sequelize[_0x993e('0x2')],'allowNull':![]}};
\ No newline at end of file
index 4860fd0..7880bce 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x049e=['Descriptions','getDescriptions','FreshdeskField','getFields','remoteUri','apiKey','slice','lastIndexOf','GET','format','%s/%s','api/v2/ticket_fields','Basic\x20%s','%s:X','toString','base64','agent','description','status','group','ticket_type','company','remove','includes','default','custom_text','label','capitalize','statusCode','getFields,\x20%s,\x20%s,\x20%s','test','Wrong\x20credentials','eml-format','rimraf','fast-json-patch','moment','bluebird','mustache','util','path','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','querystring','papaparse','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/environment','../../config/license/util','../../mysqldb','../../components/integrations/configuration','sendStatus','end','json','undefined','limit','offset','set','Content-Range','reject','then','destroy','error','name','send','map','FreshdeskAccount','rawAttributes','fieldName','type','key','model','query','attributes','intersection','fields','length','hasOwnProperty','order','sort','where','filters','pick','filter','VIRTUAL','merge','include','findAll','catch','params','keys','includeAll','create','body','update','find','getConfigurations','findOne','FreshdeskConfiguration','options','nolimit','addConfiguration','Subjects','getSubjects','channel'];(function(_0x3b98fa,_0x12dece){var _0x5af26d=function(_0x578508){while(--_0x578508){_0x3b98fa['push'](_0x3b98fa['shift']());}};_0x5af26d(++_0x12dece);}(_0x049e,0x16a));var _0xe049=function(_0x2aee2f,_0xad9887){_0x2aee2f=_0x2aee2f-0x0;var _0x19337f=_0x049e[_0x2aee2f];return _0x19337f;};'use strict';var emlformat=require(_0xe049('0x0'));var rimraf=require(_0xe049('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0xe049('0x2'));var rp=require('request-promise');var moment=require(_0xe049('0x3'));var BPromise=require(_0xe049('0x4'));var Mustache=require(_0xe049('0x5'));var util=require(_0xe049('0x6'));var path=require(_0xe049('0x7'));var sox=require('sox');var csv=require(_0xe049('0x8'));var ejs=require(_0xe049('0x9'));var fs=require('fs');var fs_extra=require(_0xe049('0xa'));var _=require(_0xe049('0xb'));var squel=require(_0xe049('0xc'));var crypto=require(_0xe049('0xd'));var jsforce=require(_0xe049('0xe'));var deskjs=require('desk.js');var toCsv=require(_0xe049('0x8'));var querystring=require(_0xe049('0xf'));var Papa=require(_0xe049('0x10'));var Redis=require('ioredis');var authService=require('../../components/auth/service');var qs=require(_0xe049('0x11'));var as=require(_0xe049('0x12'));var hardwareService=require(_0xe049('0x13'));var logger=require('../../config/logger')('api');var utils=require('../../config/utils');var config=require(_0xe049('0x14'));var licenseUtil=require(_0xe049('0x15'));var db=require(_0xe049('0x16'))['db'];var integrations=require(_0xe049('0x17'));function respondWithStatusCode(_0x301c7e,_0x1021e7){_0x1021e7=_0x1021e7||0xcc;return function(_0xdd1814){if(_0xdd1814){return _0x301c7e[_0xe049('0x18')](_0x1021e7);}return _0x301c7e['status'](_0x1021e7)[_0xe049('0x19')]();};}function respondWithResult(_0x3f4a57,_0x3924a4){_0x3924a4=_0x3924a4||0xc8;return function(_0x35fd0d){if(_0x35fd0d){return _0x3f4a57['status'](_0x3924a4)[_0xe049('0x1a')](_0x35fd0d);}};}function respondWithFilteredResult(_0xcc35b6,_0x5c90fd){return function(_0x388be0){if(_0x388be0){var _0x26b40c=typeof _0x5c90fd['offset']===_0xe049('0x1b')&&typeof _0x5c90fd[_0xe049('0x1c')]==='undefined';var _0x400a88=_0x388be0['count'];var _0x520dd9=_0x26b40c?0x0:_0x5c90fd[_0xe049('0x1d')];var _0x5e617b=_0x26b40c?_0x388be0['count']:_0x5c90fd[_0xe049('0x1d')]+_0x5c90fd[_0xe049('0x1c')];var _0x5ae414;if(_0x5e617b>=_0x400a88){_0x5e617b=_0x400a88;_0x5ae414=0xc8;}else{_0x5ae414=0xce;}_0xcc35b6['status'](_0x5ae414);return _0xcc35b6[_0xe049('0x1e')](_0xe049('0x1f'),_0x520dd9+'-'+_0x5e617b+'/'+_0x400a88)[_0xe049('0x1a')](_0x388be0);}return null;};}function patchUpdates(_0x430421){return function(_0x517aea){try{jsonpatch['apply'](_0x517aea,_0x430421,!![]);}catch(_0x11ceaa){return BPromise[_0xe049('0x20')](_0x11ceaa);}return _0x517aea['save']();};}function saveUpdates(_0x36a03b,_0x3f14eb){return function(_0x10cb90){if(_0x10cb90){return _0x10cb90['update'](_0x36a03b)[_0xe049('0x21')](function(_0x3b0f54){return _0x3b0f54;});}return null;};}function removeEntity(_0x4c7492,_0x4848c9){return function(_0x5663ec){if(_0x5663ec){return _0x5663ec[_0xe049('0x22')]()['then'](function(){_0x4c7492['status'](0xcc)[_0xe049('0x19')]();});}};}function handleEntityNotFound(_0x1efbbe,_0x53620b){return function(_0x1f5233){if(!_0x1f5233){_0x1efbbe[_0xe049('0x18')](0x194);}return _0x1f5233;};}function handleError(_0x3e5c7f,_0x423ba4){_0x423ba4=_0x423ba4||0x1f4;return function(_0x293dd2){logger[_0xe049('0x23')](_0x293dd2['stack']);if(_0x293dd2['name']){delete _0x293dd2[_0xe049('0x24')];}_0x3e5c7f['status'](_0x423ba4)[_0xe049('0x25')](_0x293dd2);};}exports['index']=function(_0x3c50c3,_0x2b79dc){var _0x5adcd6={},_0x432a6e={},_0x364630={'count':0x0,'rows':[]};var _0xb64700=_[_0xe049('0x26')](db[_0xe049('0x27')][_0xe049('0x28')],function(_0x123d2e){return{'name':_0x123d2e[_0xe049('0x29')],'type':_0x123d2e[_0xe049('0x2a')][_0xe049('0x2b')]};});_0x432a6e[_0xe049('0x2c')]=_['map'](_0xb64700,_0xe049('0x24'));_0x432a6e[_0xe049('0x2d')]=_['keys'](_0x3c50c3['query']);_0x432a6e['filters']=_['intersection'](_0x432a6e[_0xe049('0x2c')],_0x432a6e[_0xe049('0x2d')]);_0x5adcd6[_0xe049('0x2e')]=_[_0xe049('0x2f')](_0x432a6e[_0xe049('0x2c')],qs['fields'](_0x3c50c3[_0xe049('0x2d')][_0xe049('0x30')]));_0x5adcd6[_0xe049('0x2e')]=_0x5adcd6[_0xe049('0x2e')][_0xe049('0x31')]?_0x5adcd6['attributes']:_0x432a6e[_0xe049('0x2c')];if(!_0x3c50c3['query'][_0xe049('0x32')]('nolimit')){_0x5adcd6[_0xe049('0x1c')]=qs[_0xe049('0x1c')](_0x3c50c3[_0xe049('0x2d')][_0xe049('0x1c')]);_0x5adcd6[_0xe049('0x1d')]=qs[_0xe049('0x1d')](_0x3c50c3[_0xe049('0x2d')][_0xe049('0x1d')]);}_0x5adcd6[_0xe049('0x33')]=qs[_0xe049('0x34')](_0x3c50c3[_0xe049('0x2d')]['sort']);_0x5adcd6[_0xe049('0x35')]=qs[_0xe049('0x36')](_[_0xe049('0x37')](_0x3c50c3[_0xe049('0x2d')],_0x432a6e[_0xe049('0x36')]),_0xb64700);if(_0x3c50c3[_0xe049('0x2d')][_0xe049('0x38')]){_0x5adcd6[_0xe049('0x35')]=_['merge'](_0x5adcd6[_0xe049('0x35')],{'$or':_[_0xe049('0x26')](_0xb64700,function(_0x3ba5e5){if(_0x3ba5e5[_0xe049('0x2a')]!==_0xe049('0x39')){var _0xe17673={};_0xe17673[_0x3ba5e5[_0xe049('0x24')]]={'$like':'%'+_0x3c50c3[_0xe049('0x2d')][_0xe049('0x38')]+'%'};return _0xe17673;}})});}_0x5adcd6=_[_0xe049('0x3a')]({},_0x5adcd6,_0x3c50c3['options']);var _0x245f86={'where':_0x5adcd6[_0xe049('0x35')]};return db[_0xe049('0x27')]['count'](_0x245f86)[_0xe049('0x21')](function(_0x4fb4e1){_0x364630['count']=_0x4fb4e1;if(_0x3c50c3[_0xe049('0x2d')]['includeAll']){_0x5adcd6[_0xe049('0x3b')]=[{'all':!![]}];}return db[_0xe049('0x27')][_0xe049('0x3c')](_0x5adcd6);})[_0xe049('0x21')](function(_0xa6e336){_0x364630['rows']=_0xa6e336;return _0x364630;})[_0xe049('0x21')](respondWithFilteredResult(_0x2b79dc,_0x5adcd6))[_0xe049('0x3d')](handleError(_0x2b79dc,null));};exports['show']=function(_0x546137,_0x29915f){var _0x20d264={'raw':![],'where':{'id':_0x546137[_0xe049('0x3e')]['id']}},_0x482072={};_0x482072[_0xe049('0x2c')]=_[_0xe049('0x3f')](db['FreshdeskAccount'][_0xe049('0x28')]);_0x482072[_0xe049('0x2d')]=_['keys'](_0x546137[_0xe049('0x2d')]);_0x482072[_0xe049('0x36')]=_[_0xe049('0x2f')](_0x482072[_0xe049('0x2c')],_0x482072[_0xe049('0x2d')]);_0x20d264['attributes']=_['intersection'](_0x482072[_0xe049('0x2c')],qs[_0xe049('0x30')](_0x546137[_0xe049('0x2d')][_0xe049('0x30')]));_0x20d264[_0xe049('0x2e')]=_0x20d264[_0xe049('0x2e')]['length']?_0x20d264[_0xe049('0x2e')]:_0x482072[_0xe049('0x2c')];if(_0x546137['query'][_0xe049('0x40')]){_0x20d264['include']=[{'all':!![]}];}_0x20d264=_[_0xe049('0x3a')]({},_0x20d264,_0x546137['options']);return db[_0xe049('0x27')]['find'](_0x20d264)[_0xe049('0x21')](handleEntityNotFound(_0x29915f,null))[_0xe049('0x21')](respondWithResult(_0x29915f,null))[_0xe049('0x3d')](handleError(_0x29915f,null));};exports[_0xe049('0x41')]=function(_0x22eeb1,_0x4e9761){return db[_0xe049('0x27')][_0xe049('0x41')](_0x22eeb1[_0xe049('0x42')],{})[_0xe049('0x21')](respondWithResult(_0x4e9761,0xc9))[_0xe049('0x3d')](handleError(_0x4e9761,null));};exports[_0xe049('0x43')]=function(_0x12f9b8,_0x1b94b5){if(_0x12f9b8[_0xe049('0x42')]['id']){delete _0x12f9b8['body']['id'];}return db['FreshdeskAccount'][_0xe049('0x44')]({'where':{'id':_0x12f9b8[_0xe049('0x3e')]['id']}})[_0xe049('0x21')](handleEntityNotFound(_0x1b94b5,null))[_0xe049('0x21')](saveUpdates(_0x12f9b8[_0xe049('0x42')],null))[_0xe049('0x21')](respondWithResult(_0x1b94b5,null))[_0xe049('0x3d')](handleError(_0x1b94b5,null));};exports[_0xe049('0x22')]=function(_0x23692f,_0x23da27){return db[_0xe049('0x27')]['find']({'where':{'id':_0x23692f[_0xe049('0x3e')]['id']}})[_0xe049('0x21')](handleEntityNotFound(_0x23da27,null))[_0xe049('0x21')](removeEntity(_0x23da27,null))[_0xe049('0x3d')](handleError(_0x23da27,null));};exports[_0xe049('0x45')]=function(_0x3779c6,_0x373a49,_0x4e5293){var _0x4e34da={};var _0x57b3ff={};var _0x147d90;var _0x2e508e;return db['FreshdeskAccount'][_0xe049('0x46')]({'where':{'id':_0x3779c6[_0xe049('0x3e')]['id']}})[_0xe049('0x21')](handleEntityNotFound(_0x373a49,null))[_0xe049('0x21')](function(_0x4c3ba3){if(_0x4c3ba3){_0x147d90=_0x4c3ba3;_0x57b3ff['model']=_[_0xe049('0x3f')](db[_0xe049('0x47')]['rawAttributes']);_0x57b3ff['query']=_[_0xe049('0x3f')](_0x3779c6['query']);_0x57b3ff[_0xe049('0x36')]=_[_0xe049('0x2f')](_0x57b3ff['model'],_0x57b3ff[_0xe049('0x2d')]);_0x4e34da['attributes']=_[_0xe049('0x2f')](_0x57b3ff[_0xe049('0x2c')],qs['fields'](_0x3779c6[_0xe049('0x2d')][_0xe049('0x30')]));_0x4e34da[_0xe049('0x2e')]=_0x4e34da[_0xe049('0x2e')][_0xe049('0x31')]?_0x4e34da[_0xe049('0x2e')]:_0x57b3ff[_0xe049('0x2c')];_0x4e34da[_0xe049('0x33')]=qs[_0xe049('0x34')](_0x3779c6[_0xe049('0x2d')]['sort']);_0x4e34da[_0xe049('0x35')]=qs[_0xe049('0x36')](_[_0xe049('0x37')](_0x3779c6['query'],_0x57b3ff[_0xe049('0x36')]));if(_0x3779c6[_0xe049('0x2d')][_0xe049('0x38')]){_0x4e34da[_0xe049('0x35')]=_[_0xe049('0x3a')](_0x4e34da[_0xe049('0x35')],{'$or':_[_0xe049('0x26')](_0x4e34da['attributes'],function(_0x33f971){var _0x56e942={};_0x56e942[_0x33f971]={'$like':'%'+_0x3779c6[_0xe049('0x2d')]['filter']+'%'};return _0x56e942;})});}_0x4e34da=_[_0xe049('0x3a')]({},_0x4e34da,_0x3779c6[_0xe049('0x48')]);return _0x147d90[_0xe049('0x45')](_0x4e34da);}})[_0xe049('0x21')](function(_0x23db25){if(_0x23db25){_0x2e508e=_0x23db25['length'];if(!_0x3779c6[_0xe049('0x2d')][_0xe049('0x32')](_0xe049('0x49'))){_0x4e34da[_0xe049('0x1c')]=qs[_0xe049('0x1c')](_0x3779c6[_0xe049('0x2d')][_0xe049('0x1c')]);_0x4e34da[_0xe049('0x1d')]=qs['offset'](_0x3779c6['query'][_0xe049('0x1d')]);}return _0x147d90[_0xe049('0x45')](_0x4e34da);}})['then'](function(_0x2db0c1){if(_0x2db0c1){return _0x2db0c1?{'count':_0x2e508e,'rows':_0x2db0c1}:null;}})[_0xe049('0x21')](respondWithResult(_0x373a49,null))[_0xe049('0x3d')](handleError(_0x373a49,null));};exports[_0xe049('0x4a')]=function(_0x503f09,_0x485b0b,_0x191b60){if(_0x503f09['body']['id']){delete _0x503f09[_0xe049('0x42')]['id'];}return db[_0xe049('0x27')][_0xe049('0x46')]({'where':{'id':_0x503f09[_0xe049('0x3e')]['id']}})[_0xe049('0x21')](handleEntityNotFound(_0x485b0b,null))[_0xe049('0x21')](function(_0x3f514f){if(_0x3f514f){_0x503f09[_0xe049('0x42')]['AccountId']=_0x3f514f['id'];_0x503f09[_0xe049('0x42')][_0xe049('0x4b')]=integrations[_0xe049('0x4c')](_0x503f09[_0xe049('0x42')][_0xe049('0x4d')],_0x503f09['body'][_0xe049('0x2a')]);_0x503f09[_0xe049('0x42')][_0xe049('0x4e')]=integrations[_0xe049('0x4f')](_0x503f09['body']['channel'],_0x503f09[_0xe049('0x42')][_0xe049('0x2a')]);return db[_0xe049('0x47')][_0xe049('0x41')](_0x503f09[_0xe049('0x42')],{'include':[{'model':db[_0xe049('0x50')],'as':_0xe049('0x4b')},{'model':db[_0xe049('0x50')],'as':_0xe049('0x4e')}]});}return null;})[_0xe049('0x21')](respondWithResult(_0x485b0b,null))[_0xe049('0x3d')](handleError(_0x485b0b,null));};exports[_0xe049('0x51')]=function(_0x41ca25,_0x4025e9,_0x11f2c2){var _0x73c789='';return db['FreshdeskAccount']['findOne']({'where':{'id':_0x41ca25[_0xe049('0x3e')]['id']},'attributes':['id',_0xe049('0x52'),_0xe049('0x53')]})['then'](handleEntityNotFound(_0x4025e9,null))[_0xe049('0x21')](function(_0x432c16){if(_0x432c16){_0x73c789=_0x432c16['remoteUri'];var _0x475cd2=_0x73c789[_0xe049('0x54')](-0x1);if(_0x475cd2==='/'){_0x73c789=_0x73c789['substring'](0x0,_0x73c789[_0xe049('0x55')](_0x475cd2));}return rp({'method':_0xe049('0x56'),'uri':util[_0xe049('0x57')](_0xe049('0x58'),_0x73c789,_0xe049('0x59')),'headers':{'Authorization':util[_0xe049('0x57')](_0xe049('0x5a'),new Buffer(util[_0xe049('0x57')](_0xe049('0x5b'),_0x432c16[_0xe049('0x53')]))[_0xe049('0x5c')](_0xe049('0x5d')))},'json':!![]});}})[_0xe049('0x21')](function(_0x53c951){if(_0x53c951){var _0x2725cf=['requester','subject',_0xe049('0x5e'),_0xe049('0x5f'),_0xe049('0x60'),'priority',_0xe049('0x61'),'source',_0xe049('0x62'),'group',_0xe049('0x63')];_[_0xe049('0x64')](_0x53c951,function(_0xabc652){return _0x2725cf[_0xe049('0x65')](_0xabc652[_0xe049('0x24')])||!_0xabc652[_0xe049('0x66')]&&_0xabc652[_0xe049('0x2a')]!==_0xe049('0x67')&&_0xabc652['type']!=='custom_dropdown';});return{'count':_0x53c951[_0xe049('0x31')],'rows':_[_0xe049('0x26')](_0x53c951,function(_0x23d253){return{'id':_0x23d253[_0xe049('0x24')],'name':_0x23d253[_0xe049('0x68')],'custom':!_0x23d253[_0xe049('0x66')],'options':_0x23d253['choices']?_[_0xe049('0x26')](_0x23d253['choices'],function(_0x584d9d){return{'name':_[_0xe049('0x69')](_0x584d9d),'value':_0x584d9d};}):[]};})};}})[_0xe049('0x21')](respondWithResult(_0x4025e9,null))[_0xe049('0x3d')](function(_0x4cfe63){var _0x1ce42c=_0x41ca25['query']['test']?0x1f4:_0x4cfe63[_0xe049('0x6a')]||0x1f4;logger[_0xe049('0x23')](_0xe049('0x6b'),'getFields',_0x1ce42c,JSON['stringify'](_0x4cfe63));delete _0x4cfe63[_0xe049('0x24')];if(_0x1ce42c===0x191){_0x1ce42c=0x190;}_0x4025e9[_0xe049('0x60')](_0x1ce42c)['send'](_0x41ca25[_0xe049('0x2d')][_0xe049('0x6c')]?{'message':_0xe049('0x6d'),'statusCode':_0x4cfe63[_0xe049('0x6a')]}:_0x4cfe63);});};
\ No newline at end of file
+var _0x21f8=['fs-extra','lodash','squel','crypto','jsforce','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','sendStatus','status','end','json','offset','limit','undefined','count','set','Content-Range','apply','save','update','then','destroy','error','stack','name','send','index','map','FreshdeskAccount','rawAttributes','fieldName','key','model','keys','query','filters','intersection','fields','attributes','length','order','sort','pick','merge','where','type','VIRTUAL','filter','options','includeAll','include','findAll','rows','catch','show','params','find','create','body','getConfigurations','findOne','FreshdeskConfiguration','hasOwnProperty','nolimit','addConfiguration','AccountId','Subjects','getSubjects','channel','Descriptions','getDescriptions','FreshdeskField','getFields','apiKey','remoteUri','substring','lastIndexOf','GET','format','%s/%s','api/v2/ticket_fields','Basic\x20%s','%s:X','toString','requester','subject','description','priority','source','ticket_type','company','remove','includes','default','custom_text','label','choices','test','statusCode','getFields,\x20%s,\x20%s,\x20%s','stringify','Wrong\x20credentials','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','sox','to-csv','ejs'];(function(_0x14add3,_0x13ce8d){var _0x4a174f=function(_0x2b3ed7){while(--_0x2b3ed7){_0x14add3['push'](_0x14add3['shift']());}};_0x4a174f(++_0x13ce8d);}(_0x21f8,0x71));var _0x821f=function(_0x5192de,_0x4e91cd){_0x5192de=_0x5192de-0x0;var _0x4e287e=_0x21f8[_0x5192de];return _0x4e287e;};'use strict';var emlformat=require(_0x821f('0x0'));var rimraf=require(_0x821f('0x1'));var zipdir=require(_0x821f('0x2'));var jsonpatch=require(_0x821f('0x3'));var rp=require(_0x821f('0x4'));var moment=require(_0x821f('0x5'));var BPromise=require(_0x821f('0x6'));var Mustache=require('mustache');var util=require('util');var path=require('path');var sox=require(_0x821f('0x7'));var csv=require(_0x821f('0x8'));var ejs=require(_0x821f('0x9'));var fs=require('fs');var fs_extra=require(_0x821f('0xa'));var _=require(_0x821f('0xb'));var squel=require(_0x821f('0xc'));var crypto=require(_0x821f('0xd'));var jsforce=require(_0x821f('0xe'));var deskjs=require('desk.js');var toCsv=require('to-csv');var querystring=require(_0x821f('0xf'));var Papa=require(_0x821f('0x10'));var Redis=require(_0x821f('0x11'));var authService=require('../../components/auth/service');var qs=require(_0x821f('0x12'));var as=require(_0x821f('0x13'));var hardwareService=require(_0x821f('0x14'));var logger=require(_0x821f('0x15'))(_0x821f('0x16'));var utils=require(_0x821f('0x17'));var config=require(_0x821f('0x18'));var licenseUtil=require(_0x821f('0x19'));var db=require(_0x821f('0x1a'))['db'];var integrations=require(_0x821f('0x1b'));function respondWithStatusCode(_0x4ba2e2,_0x4f9752){_0x4f9752=_0x4f9752||0xcc;return function(_0x22e1d5){if(_0x22e1d5){return _0x4ba2e2[_0x821f('0x1c')](_0x4f9752);}return _0x4ba2e2[_0x821f('0x1d')](_0x4f9752)[_0x821f('0x1e')]();};}function respondWithResult(_0x16145e,_0x42b2fa){_0x42b2fa=_0x42b2fa||0xc8;return function(_0x42f1a4){if(_0x42f1a4){return _0x16145e[_0x821f('0x1d')](_0x42b2fa)[_0x821f('0x1f')](_0x42f1a4);}};}function respondWithFilteredResult(_0x19d587,_0x4b746c){return function(_0x3419ab){if(_0x3419ab){var _0x594165=typeof _0x4b746c[_0x821f('0x20')]==='undefined'&&typeof _0x4b746c[_0x821f('0x21')]===_0x821f('0x22');var _0x2a5d72=_0x3419ab[_0x821f('0x23')];var _0x5e8c54=_0x594165?0x0:_0x4b746c[_0x821f('0x20')];var _0x34d89c=_0x594165?_0x3419ab['count']:_0x4b746c[_0x821f('0x20')]+_0x4b746c['limit'];var _0x4e0c99;if(_0x34d89c>=_0x2a5d72){_0x34d89c=_0x2a5d72;_0x4e0c99=0xc8;}else{_0x4e0c99=0xce;}_0x19d587['status'](_0x4e0c99);return _0x19d587[_0x821f('0x24')](_0x821f('0x25'),_0x5e8c54+'-'+_0x34d89c+'/'+_0x2a5d72)['json'](_0x3419ab);}return null;};}function patchUpdates(_0x4f3283){return function(_0x5caa12){try{jsonpatch[_0x821f('0x26')](_0x5caa12,_0x4f3283,!![]);}catch(_0x35103c){return BPromise['reject'](_0x35103c);}return _0x5caa12[_0x821f('0x27')]();};}function saveUpdates(_0xb5d07,_0x3dda74){return function(_0x5ca883){if(_0x5ca883){return _0x5ca883[_0x821f('0x28')](_0xb5d07)[_0x821f('0x29')](function(_0x4b2e35){return _0x4b2e35;});}return null;};}function removeEntity(_0x4ef246,_0x4ede29){return function(_0x59530c){if(_0x59530c){return _0x59530c[_0x821f('0x2a')]()['then'](function(){_0x4ef246['status'](0xcc)[_0x821f('0x1e')]();});}};}function handleEntityNotFound(_0x57f758,_0x57f5a2){return function(_0x3d7994){if(!_0x3d7994){_0x57f758[_0x821f('0x1c')](0x194);}return _0x3d7994;};}function handleError(_0x2a432c,_0x368a74){_0x368a74=_0x368a74||0x1f4;return function(_0x501374){logger[_0x821f('0x2b')](_0x501374[_0x821f('0x2c')]);if(_0x501374[_0x821f('0x2d')]){delete _0x501374[_0x821f('0x2d')];}_0x2a432c['status'](_0x368a74)[_0x821f('0x2e')](_0x501374);};}exports[_0x821f('0x2f')]=function(_0x130649,_0x31bb67){var _0x53d87e={},_0xceb073={},_0x48cd2a={'count':0x0,'rows':[]};var _0x51619e=_[_0x821f('0x30')](db[_0x821f('0x31')][_0x821f('0x32')],function(_0x41c12a){return{'name':_0x41c12a[_0x821f('0x33')],'type':_0x41c12a['type'][_0x821f('0x34')]};});_0xceb073[_0x821f('0x35')]=_[_0x821f('0x30')](_0x51619e,_0x821f('0x2d'));_0xceb073['query']=_[_0x821f('0x36')](_0x130649[_0x821f('0x37')]);_0xceb073[_0x821f('0x38')]=_[_0x821f('0x39')](_0xceb073[_0x821f('0x35')],_0xceb073[_0x821f('0x37')]);_0x53d87e['attributes']=_[_0x821f('0x39')](_0xceb073['model'],qs[_0x821f('0x3a')](_0x130649[_0x821f('0x37')]['fields']));_0x53d87e['attributes']=_0x53d87e[_0x821f('0x3b')][_0x821f('0x3c')]?_0x53d87e[_0x821f('0x3b')]:_0xceb073[_0x821f('0x35')];if(!_0x130649[_0x821f('0x37')]['hasOwnProperty']('nolimit')){_0x53d87e[_0x821f('0x21')]=qs[_0x821f('0x21')](_0x130649[_0x821f('0x37')]['limit']);_0x53d87e[_0x821f('0x20')]=qs[_0x821f('0x20')](_0x130649[_0x821f('0x37')][_0x821f('0x20')]);}_0x53d87e[_0x821f('0x3d')]=qs[_0x821f('0x3e')](_0x130649[_0x821f('0x37')]['sort']);_0x53d87e['where']=qs[_0x821f('0x38')](_[_0x821f('0x3f')](_0x130649[_0x821f('0x37')],_0xceb073[_0x821f('0x38')]),_0x51619e);if(_0x130649[_0x821f('0x37')]['filter']){_0x53d87e['where']=_[_0x821f('0x40')](_0x53d87e[_0x821f('0x41')],{'$or':_[_0x821f('0x30')](_0x51619e,function(_0x56df75){if(_0x56df75[_0x821f('0x42')]!==_0x821f('0x43')){var _0x3a6c84={};_0x3a6c84[_0x56df75['name']]={'$like':'%'+_0x130649[_0x821f('0x37')][_0x821f('0x44')]+'%'};return _0x3a6c84;}})});}_0x53d87e=_[_0x821f('0x40')]({},_0x53d87e,_0x130649[_0x821f('0x45')]);var _0x42162a={'where':_0x53d87e[_0x821f('0x41')]};return db['FreshdeskAccount'][_0x821f('0x23')](_0x42162a)['then'](function(_0x38c01b){_0x48cd2a[_0x821f('0x23')]=_0x38c01b;if(_0x130649[_0x821f('0x37')][_0x821f('0x46')]){_0x53d87e[_0x821f('0x47')]=[{'all':!![]}];}return db[_0x821f('0x31')][_0x821f('0x48')](_0x53d87e);})[_0x821f('0x29')](function(_0x5b2b6d){_0x48cd2a[_0x821f('0x49')]=_0x5b2b6d;return _0x48cd2a;})[_0x821f('0x29')](respondWithFilteredResult(_0x31bb67,_0x53d87e))[_0x821f('0x4a')](handleError(_0x31bb67,null));};exports[_0x821f('0x4b')]=function(_0x341a4f,_0x50d186){var _0x220e0b={'raw':![],'where':{'id':_0x341a4f[_0x821f('0x4c')]['id']}},_0x1e37a7={};_0x1e37a7[_0x821f('0x35')]=_[_0x821f('0x36')](db[_0x821f('0x31')][_0x821f('0x32')]);_0x1e37a7[_0x821f('0x37')]=_[_0x821f('0x36')](_0x341a4f['query']);_0x1e37a7[_0x821f('0x38')]=_['intersection'](_0x1e37a7[_0x821f('0x35')],_0x1e37a7['query']);_0x220e0b[_0x821f('0x3b')]=_['intersection'](_0x1e37a7[_0x821f('0x35')],qs[_0x821f('0x3a')](_0x341a4f['query'][_0x821f('0x3a')]));_0x220e0b['attributes']=_0x220e0b[_0x821f('0x3b')][_0x821f('0x3c')]?_0x220e0b['attributes']:_0x1e37a7[_0x821f('0x35')];if(_0x341a4f[_0x821f('0x37')]['includeAll']){_0x220e0b[_0x821f('0x47')]=[{'all':!![]}];}_0x220e0b=_['merge']({},_0x220e0b,_0x341a4f[_0x821f('0x45')]);return db[_0x821f('0x31')][_0x821f('0x4d')](_0x220e0b)['then'](handleEntityNotFound(_0x50d186,null))[_0x821f('0x29')](respondWithResult(_0x50d186,null))[_0x821f('0x4a')](handleError(_0x50d186,null));};exports['create']=function(_0x15497a,_0x4b8de4){return db[_0x821f('0x31')][_0x821f('0x4e')](_0x15497a[_0x821f('0x4f')],{})[_0x821f('0x29')](respondWithResult(_0x4b8de4,0xc9))[_0x821f('0x4a')](handleError(_0x4b8de4,null));};exports['update']=function(_0x314a47,_0xefb524){if(_0x314a47[_0x821f('0x4f')]['id']){delete _0x314a47[_0x821f('0x4f')]['id'];}return db['FreshdeskAccount']['find']({'where':{'id':_0x314a47[_0x821f('0x4c')]['id']}})['then'](handleEntityNotFound(_0xefb524,null))['then'](saveUpdates(_0x314a47[_0x821f('0x4f')],null))[_0x821f('0x29')](respondWithResult(_0xefb524,null))[_0x821f('0x4a')](handleError(_0xefb524,null));};exports[_0x821f('0x2a')]=function(_0x197dff,_0x4e9470){return db[_0x821f('0x31')]['find']({'where':{'id':_0x197dff[_0x821f('0x4c')]['id']}})['then'](handleEntityNotFound(_0x4e9470,null))[_0x821f('0x29')](removeEntity(_0x4e9470,null))[_0x821f('0x4a')](handleError(_0x4e9470,null));};exports[_0x821f('0x50')]=function(_0x57c3c9,_0x5f15ba,_0x43298d){var _0x347167={};var _0x2deb7d={};var _0x4e3da6;var _0x386093;return db[_0x821f('0x31')][_0x821f('0x51')]({'where':{'id':_0x57c3c9[_0x821f('0x4c')]['id']}})[_0x821f('0x29')](handleEntityNotFound(_0x5f15ba,null))['then'](function(_0x45fcbd){if(_0x45fcbd){_0x4e3da6=_0x45fcbd;_0x2deb7d[_0x821f('0x35')]=_[_0x821f('0x36')](db[_0x821f('0x52')]['rawAttributes']);_0x2deb7d[_0x821f('0x37')]=_[_0x821f('0x36')](_0x57c3c9[_0x821f('0x37')]);_0x2deb7d[_0x821f('0x38')]=_[_0x821f('0x39')](_0x2deb7d['model'],_0x2deb7d[_0x821f('0x37')]);_0x347167['attributes']=_['intersection'](_0x2deb7d['model'],qs['fields'](_0x57c3c9['query'][_0x821f('0x3a')]));_0x347167[_0x821f('0x3b')]=_0x347167[_0x821f('0x3b')][_0x821f('0x3c')]?_0x347167[_0x821f('0x3b')]:_0x2deb7d['model'];_0x347167[_0x821f('0x3d')]=qs[_0x821f('0x3e')](_0x57c3c9['query'][_0x821f('0x3e')]);_0x347167[_0x821f('0x41')]=qs[_0x821f('0x38')](_[_0x821f('0x3f')](_0x57c3c9['query'],_0x2deb7d[_0x821f('0x38')]));if(_0x57c3c9[_0x821f('0x37')]['filter']){_0x347167[_0x821f('0x41')]=_['merge'](_0x347167[_0x821f('0x41')],{'$or':_[_0x821f('0x30')](_0x347167[_0x821f('0x3b')],function(_0x20769d){var _0x30d8bd={};_0x30d8bd[_0x20769d]={'$like':'%'+_0x57c3c9[_0x821f('0x37')][_0x821f('0x44')]+'%'};return _0x30d8bd;})});}_0x347167=_[_0x821f('0x40')]({},_0x347167,_0x57c3c9[_0x821f('0x45')]);return _0x4e3da6['getConfigurations'](_0x347167);}})[_0x821f('0x29')](function(_0x29e6ff){if(_0x29e6ff){_0x386093=_0x29e6ff[_0x821f('0x3c')];if(!_0x57c3c9['query'][_0x821f('0x53')](_0x821f('0x54'))){_0x347167[_0x821f('0x21')]=qs[_0x821f('0x21')](_0x57c3c9['query'][_0x821f('0x21')]);_0x347167['offset']=qs[_0x821f('0x20')](_0x57c3c9[_0x821f('0x37')][_0x821f('0x20')]);}return _0x4e3da6[_0x821f('0x50')](_0x347167);}})[_0x821f('0x29')](function(_0x27df7c){if(_0x27df7c){return _0x27df7c?{'count':_0x386093,'rows':_0x27df7c}:null;}})[_0x821f('0x29')](respondWithResult(_0x5f15ba,null))['catch'](handleError(_0x5f15ba,null));};exports[_0x821f('0x55')]=function(_0x372e5c,_0x500ef9,_0xe71f4){if(_0x372e5c[_0x821f('0x4f')]['id']){delete _0x372e5c[_0x821f('0x4f')]['id'];}return db[_0x821f('0x31')]['findOne']({'where':{'id':_0x372e5c['params']['id']}})[_0x821f('0x29')](handleEntityNotFound(_0x500ef9,null))['then'](function(_0x1ccbc0){if(_0x1ccbc0){_0x372e5c[_0x821f('0x4f')][_0x821f('0x56')]=_0x1ccbc0['id'];_0x372e5c[_0x821f('0x4f')][_0x821f('0x57')]=integrations[_0x821f('0x58')](_0x372e5c[_0x821f('0x4f')][_0x821f('0x59')],_0x372e5c[_0x821f('0x4f')][_0x821f('0x42')]);_0x372e5c[_0x821f('0x4f')][_0x821f('0x5a')]=integrations[_0x821f('0x5b')](_0x372e5c[_0x821f('0x4f')][_0x821f('0x59')],_0x372e5c[_0x821f('0x4f')][_0x821f('0x42')]);return db[_0x821f('0x52')][_0x821f('0x4e')](_0x372e5c[_0x821f('0x4f')],{'include':[{'model':db[_0x821f('0x5c')],'as':_0x821f('0x57')},{'model':db[_0x821f('0x5c')],'as':_0x821f('0x5a')}]});}return null;})[_0x821f('0x29')](respondWithResult(_0x500ef9,null))[_0x821f('0x4a')](handleError(_0x500ef9,null));};exports[_0x821f('0x5d')]=function(_0x29dc0c,_0x5d5e5c,_0x17747d){var _0x19e3bd='';return db[_0x821f('0x31')][_0x821f('0x51')]({'where':{'id':_0x29dc0c[_0x821f('0x4c')]['id']},'attributes':['id','remoteUri',_0x821f('0x5e')]})[_0x821f('0x29')](handleEntityNotFound(_0x5d5e5c,null))[_0x821f('0x29')](function(_0x47fcab){if(_0x47fcab){_0x19e3bd=_0x47fcab[_0x821f('0x5f')];var _0x2794f0=_0x19e3bd['slice'](-0x1);if(_0x2794f0==='/'){_0x19e3bd=_0x19e3bd[_0x821f('0x60')](0x0,_0x19e3bd[_0x821f('0x61')](_0x2794f0));}return rp({'method':_0x821f('0x62'),'uri':util[_0x821f('0x63')](_0x821f('0x64'),_0x19e3bd,_0x821f('0x65')),'headers':{'Authorization':util[_0x821f('0x63')](_0x821f('0x66'),new Buffer(util[_0x821f('0x63')](_0x821f('0x67'),_0x47fcab[_0x821f('0x5e')]))[_0x821f('0x68')]('base64'))},'json':!![]});}})[_0x821f('0x29')](function(_0x1610fd){if(_0x1610fd){var _0x596bb9=[_0x821f('0x69'),_0x821f('0x6a'),'agent',_0x821f('0x6b'),_0x821f('0x1d'),_0x821f('0x6c'),'group',_0x821f('0x6d'),_0x821f('0x6e'),'group',_0x821f('0x6f')];_[_0x821f('0x70')](_0x1610fd,function(_0x1f50d4){return _0x596bb9[_0x821f('0x71')](_0x1f50d4[_0x821f('0x2d')])||!_0x1f50d4[_0x821f('0x72')]&&_0x1f50d4['type']!==_0x821f('0x73')&&_0x1f50d4['type']!=='custom_dropdown';});return{'count':_0x1610fd[_0x821f('0x3c')],'rows':_[_0x821f('0x30')](_0x1610fd,function(_0x59325f){return{'id':_0x59325f['name'],'name':_0x59325f[_0x821f('0x74')],'custom':!_0x59325f[_0x821f('0x72')],'options':_0x59325f[_0x821f('0x75')]?_[_0x821f('0x30')](_0x59325f['choices'],function(_0x1a7394){return{'name':_['capitalize'](_0x1a7394),'value':_0x1a7394};}):[]};})};}})['then'](respondWithResult(_0x5d5e5c,null))[_0x821f('0x4a')](function(_0x2ccae9){var _0xb8b31e=_0x29dc0c[_0x821f('0x37')][_0x821f('0x76')]?0x1f4:_0x2ccae9[_0x821f('0x77')]||0x1f4;logger[_0x821f('0x2b')](_0x821f('0x78'),_0x821f('0x5d'),_0xb8b31e,JSON[_0x821f('0x79')](_0x2ccae9));delete _0x2ccae9[_0x821f('0x2d')];if(_0xb8b31e===0x191){_0xb8b31e=0x190;}_0x5d5e5c[_0x821f('0x1d')](_0xb8b31e)['send'](_0x29dc0c[_0x821f('0x37')][_0x821f('0x76')]?{'message':_0x821f('0x7a'),'statusCode':_0x2ccae9[_0x821f('0x77')]}:_0x2ccae9);});};
\ No newline at end of file
index c58b4a6..87bb968 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb321=['int_freshdesk_accounts','util','../../config/logger','api','moment','bluebird','request-promise','path','rimraf','../../config/environment','./intFreshdeskAccount.attributes','../../components/integrations/configuration','exports','define','FreshdeskAccount'];(function(_0x3dec6a,_0xb291ea){var _0x152a15=function(_0x51173b){while(--_0x51173b){_0x3dec6a['push'](_0x3dec6a['shift']());}};_0x152a15(++_0xb291ea);}(_0xb321,0x10f));var _0x1b32=function(_0x325485,_0x4304af){_0x325485=_0x325485-0x0;var _0x1faa1d=_0xb321[_0x325485];return _0x1faa1d;};'use strict';var _=require('lodash');var util=require(_0x1b32('0x0'));var logger=require(_0x1b32('0x1'))(_0x1b32('0x2'));var moment=require(_0x1b32('0x3'));var BPromise=require(_0x1b32('0x4'));var rp=require(_0x1b32('0x5'));var fs=require('fs');var path=require(_0x1b32('0x6'));var rimraf=require(_0x1b32('0x7'));var config=require(_0x1b32('0x8'));var attributes=require(_0x1b32('0x9'));var integrations=require(_0x1b32('0xa'));module[_0x1b32('0xb')]=function(_0x1b3db9,_0x3807fd){return _0x1b3db9[_0x1b32('0xc')](_0x1b32('0xd'),attributes,{'tableName':_0x1b32('0xe'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xad3d=['util','api','moment','request-promise','path','../../config/environment','./intFreshdeskAccount.attributes','exports','define','FreshdeskAccount','lodash'];(function(_0x2aeab4,_0x40257d){var _0x8f07c4=function(_0x45aa49){while(--_0x45aa49){_0x2aeab4['push'](_0x2aeab4['shift']());}};_0x8f07c4(++_0x40257d);}(_0xad3d,0x149));var _0xdad3=function(_0xc42c7b,_0x58a57b){_0xc42c7b=_0xc42c7b-0x0;var _0x2f3aec=_0xad3d[_0xc42c7b];return _0x2f3aec;};'use strict';var _=require(_0xdad3('0x0'));var util=require(_0xdad3('0x1'));var logger=require('../../config/logger')(_0xdad3('0x2'));var moment=require(_0xdad3('0x3'));var BPromise=require('bluebird');var rp=require(_0xdad3('0x4'));var fs=require('fs');var path=require(_0xdad3('0x5'));var rimraf=require('rimraf');var config=require(_0xdad3('0x6'));var attributes=require(_0xdad3('0x7'));var integrations=require('../../components/integrations/configuration');module[_0xdad3('0x8')]=function(_0x2af9b7,_0x2a8a63){return _0x2af9b7[_0xdad3('0x9')](_0xdad3('0xa'),attributes,{'tableName':'int_freshdesk_accounts','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index ee52a8f..497c084 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4fb3=['catch','GetFreshdeskAccount','FreshdeskAccount','findAll','options','raw','where','attributes','limit','include','map','model','stringify','ShowFreshdeskAccount','find','util','../../config/utils','../../config/environment','jayson/promise','http','then','info','debug','request\x20sent','error','code','message','FreshdeskAccount,\x20%s,\x20%s','result'];(function(_0x256d1f,_0x1eda79){var _0x4c26d5=function(_0x2636cf){while(--_0x2636cf){_0x256d1f['push'](_0x256d1f['shift']());}};_0x4c26d5(++_0x1eda79);}(_0x4fb3,0xbd));var _0x34fb=function(_0x98223f,_0x1a8152){_0x98223f=_0x98223f-0x0;var _0x3566d2=_0x4fb3[_0x98223f];return _0x3566d2;};'use strict';var _=require('lodash');var util=require(_0x34fb('0x0'));var moment=require('moment');var BPromise=require('bluebird');var rs=require('randomstring');var fs=require('fs');var Redis=require('ioredis');var db=require('../../mysqldb')['db'];var utils=require(_0x34fb('0x1'));var logger=require('../../config/logger')('rpc');var config=require(_0x34fb('0x2'));var jayson=require(_0x34fb('0x3'));var client=jayson['client'][_0x34fb('0x4')]({'port':0x232a});function respondWithRpcPromise(_0x555ecd,_0x407150,_0x4ac14e){return new BPromise(function(_0x5a1766,_0x40b6b8){return client['request'](_0x555ecd,_0x4ac14e)[_0x34fb('0x5')](function(_0x2a9a7a){logger[_0x34fb('0x6')]('FreshdeskAccount,\x20%s,\x20%s',_0x407150,'request\x20sent');logger[_0x34fb('0x7')]('FreshdeskAccount,\x20%s,\x20%s,\x20%s',_0x407150,_0x34fb('0x8'),JSON['stringify'](_0x2a9a7a));if(_0x2a9a7a['error']){if(_0x2a9a7a[_0x34fb('0x9')][_0x34fb('0xa')]===0x1f4){logger[_0x34fb('0x9')]('FreshdeskAccount,\x20%s,\x20%s',_0x407150,_0x2a9a7a[_0x34fb('0x9')][_0x34fb('0xb')]);return _0x40b6b8(_0x2a9a7a[_0x34fb('0x9')][_0x34fb('0xb')]);}logger['error'](_0x34fb('0xc'),_0x407150,_0x2a9a7a[_0x34fb('0x9')]['message']);return _0x5a1766(_0x2a9a7a[_0x34fb('0x9')][_0x34fb('0xb')]);}else{logger[_0x34fb('0x6')]('FreshdeskAccount,\x20%s,\x20%s',_0x407150,_0x34fb('0x8'));_0x5a1766(_0x2a9a7a[_0x34fb('0xd')][_0x34fb('0xb')]);}})[_0x34fb('0xe')](function(_0x3c10c1){logger[_0x34fb('0x9')](_0x34fb('0xc'),_0x407150,_0x3c10c1);_0x40b6b8(_0x3c10c1);});});}exports[_0x34fb('0xf')]=function(_0x13dd9d){var _0x5f5034=this;return new Promise(function(_0x499abe,_0x5e58e){return db[_0x34fb('0x10')][_0x34fb('0x11')]({'raw':_0x13dd9d[_0x34fb('0x12')]?_0x13dd9d[_0x34fb('0x12')][_0x34fb('0x13')]===undefined?!![]:![]:!![],'where':_0x13dd9d[_0x34fb('0x12')]?_0x13dd9d['options'][_0x34fb('0x14')]||null:null,'attributes':_0x13dd9d[_0x34fb('0x12')]?_0x13dd9d['options'][_0x34fb('0x15')]||null:null,'limit':_0x13dd9d[_0x34fb('0x12')]?_0x13dd9d['options'][_0x34fb('0x16')]||null:null,'include':_0x13dd9d[_0x34fb('0x12')]?_0x13dd9d[_0x34fb('0x12')][_0x34fb('0x17')]?_[_0x34fb('0x18')](_0x13dd9d['options'][_0x34fb('0x17')],function(_0x2ba659){return{'model':db[_0x2ba659[_0x34fb('0x19')]],'as':_0x2ba659['as'],'attributes':_0x2ba659[_0x34fb('0x15')],'include':_0x2ba659[_0x34fb('0x17')]?_['map'](_0x2ba659[_0x34fb('0x17')],function(_0x2fbf72){return{'model':db[_0x2fbf72[_0x34fb('0x19')]],'as':_0x2fbf72['as'],'attributes':_0x2fbf72[_0x34fb('0x15')],'include':_0x2fbf72['include']?_['map'](_0x2fbf72['include'],function(_0x1ab513){return{'model':db[_0x1ab513['model']],'as':_0x1ab513['as'],'attributes':_0x1ab513[_0x34fb('0x15')]};}):[]};}):[]};}):[]:[]})['then'](function(_0x2896aa){logger['info'](_0x34fb('0xf'),_0x13dd9d);logger[_0x34fb('0x7')](_0x34fb('0xf'),_0x13dd9d,JSON[_0x34fb('0x1a')](_0x2896aa));_0x499abe(_0x2896aa);})[_0x34fb('0xe')](function(_0x5e3c76){logger[_0x34fb('0x9')]('GetFreshdeskAccount',_0x5e3c76[_0x34fb('0xb')],_0x13dd9d);_0x5e58e(_0x5f5034[_0x34fb('0x9')](0x1f4,_0x5e3c76[_0x34fb('0xb')]));});});};exports[_0x34fb('0x1b')]=function(_0x253bd8){var _0x441d53=this;return new Promise(function(_0x353ef3,_0x296b97){return db['FreshdeskAccount'][_0x34fb('0x1c')]({'raw':_0x253bd8[_0x34fb('0x12')]?_0x253bd8[_0x34fb('0x12')][_0x34fb('0x13')]===undefined?!![]:![]:!![],'where':_0x253bd8[_0x34fb('0x12')]?_0x253bd8[_0x34fb('0x12')]['where']||null:null,'attributes':_0x253bd8[_0x34fb('0x12')]?_0x253bd8[_0x34fb('0x12')][_0x34fb('0x15')]||null:null,'include':_0x253bd8[_0x34fb('0x12')]?_0x253bd8[_0x34fb('0x12')][_0x34fb('0x17')]?_[_0x34fb('0x18')](_0x253bd8['options'][_0x34fb('0x17')],function(_0x24ae4d){return{'model':db[_0x24ae4d['model']],'as':_0x24ae4d['as'],'attributes':_0x24ae4d[_0x34fb('0x15')],'include':_0x24ae4d['include']?_['map'](_0x24ae4d['include'],function(_0x45e670){return{'model':db[_0x45e670['model']],'as':_0x45e670['as'],'attributes':_0x45e670[_0x34fb('0x15')],'include':_0x45e670['include']?_[_0x34fb('0x18')](_0x45e670['include'],function(_0x1ac366){return{'model':db[_0x1ac366[_0x34fb('0x19')]],'as':_0x1ac366['as'],'attributes':_0x1ac366[_0x34fb('0x15')]};}):[]};}):[]};}):[]:[]})[_0x34fb('0x5')](function(_0x2e08dd){logger[_0x34fb('0x6')](_0x34fb('0x1b'),_0x253bd8);logger[_0x34fb('0x7')](_0x34fb('0x1b'),_0x253bd8,JSON[_0x34fb('0x1a')](_0x2e08dd));_0x353ef3(_0x2e08dd);})[_0x34fb('0xe')](function(_0x51f43b){logger['error'](_0x34fb('0x1b'),_0x51f43b['message'],_0x253bd8);_0x296b97(_0x441d53['error'](0x1f4,_0x51f43b[_0x34fb('0xb')]));});});};
\ No newline at end of file
+var _0x04f5=['map','model','catch','find','ShowFreshdeskAccount','lodash','util','moment','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','request','then','info','request\x20sent','debug','stringify','error','FreshdeskAccount,\x20%s,\x20%s','message','result','GetFreshdeskAccount','FreshdeskAccount','options','raw','where','attributes','limit','include'];(function(_0x40d800,_0x5c4a47){var _0x22fb2f=function(_0x558ef0){while(--_0x558ef0){_0x40d800['push'](_0x40d800['shift']());}};_0x22fb2f(++_0x5c4a47);}(_0x04f5,0x1a9));var _0x504f=function(_0x356e8d,_0x24c719){_0x356e8d=_0x356e8d-0x0;var _0x39e65a=_0x04f5[_0x356e8d];return _0x39e65a;};'use strict';var _=require(_0x504f('0x0'));var util=require(_0x504f('0x1'));var moment=require(_0x504f('0x2'));var BPromise=require('bluebird');var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x504f('0x3'));var db=require(_0x504f('0x4'))['db'];var utils=require(_0x504f('0x5'));var logger=require(_0x504f('0x6'))(_0x504f('0x7'));var config=require(_0x504f('0x8'));var jayson=require(_0x504f('0x9'));var client=jayson[_0x504f('0xa')][_0x504f('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x40ea1e,_0x5ddbf2,_0x46b5bd){return new BPromise(function(_0x37fbe6,_0x3c75d3){return client[_0x504f('0xc')](_0x40ea1e,_0x46b5bd)[_0x504f('0xd')](function(_0x38974e){logger[_0x504f('0xe')]('FreshdeskAccount,\x20%s,\x20%s',_0x5ddbf2,_0x504f('0xf'));logger[_0x504f('0x10')]('FreshdeskAccount,\x20%s,\x20%s,\x20%s',_0x5ddbf2,_0x504f('0xf'),JSON[_0x504f('0x11')](_0x38974e));if(_0x38974e['error']){if(_0x38974e[_0x504f('0x12')]['code']===0x1f4){logger['error'](_0x504f('0x13'),_0x5ddbf2,_0x38974e[_0x504f('0x12')]['message']);return _0x3c75d3(_0x38974e['error'][_0x504f('0x14')]);}logger[_0x504f('0x12')](_0x504f('0x13'),_0x5ddbf2,_0x38974e[_0x504f('0x12')]['message']);return _0x37fbe6(_0x38974e[_0x504f('0x12')][_0x504f('0x14')]);}else{logger[_0x504f('0xe')](_0x504f('0x13'),_0x5ddbf2,'request\x20sent');_0x37fbe6(_0x38974e[_0x504f('0x15')]['message']);}})['catch'](function(_0x573889){logger[_0x504f('0x12')](_0x504f('0x13'),_0x5ddbf2,_0x573889);_0x3c75d3(_0x573889);});});}exports[_0x504f('0x16')]=function(_0xbde590){var _0x56e2e4=this;return new Promise(function(_0x39740f,_0x4646fa){return db[_0x504f('0x17')]['findAll']({'raw':_0xbde590[_0x504f('0x18')]?_0xbde590[_0x504f('0x18')][_0x504f('0x19')]===undefined?!![]:![]:!![],'where':_0xbde590[_0x504f('0x18')]?_0xbde590[_0x504f('0x18')][_0x504f('0x1a')]||null:null,'attributes':_0xbde590[_0x504f('0x18')]?_0xbde590['options'][_0x504f('0x1b')]||null:null,'limit':_0xbde590['options']?_0xbde590[_0x504f('0x18')][_0x504f('0x1c')]||null:null,'include':_0xbde590[_0x504f('0x18')]?_0xbde590[_0x504f('0x18')][_0x504f('0x1d')]?_[_0x504f('0x1e')](_0xbde590[_0x504f('0x18')]['include'],function(_0x32c7ef){return{'model':db[_0x32c7ef['model']],'as':_0x32c7ef['as'],'attributes':_0x32c7ef[_0x504f('0x1b')],'include':_0x32c7ef['include']?_['map'](_0x32c7ef[_0x504f('0x1d')],function(_0x95ddf2){return{'model':db[_0x95ddf2[_0x504f('0x1f')]],'as':_0x95ddf2['as'],'attributes':_0x95ddf2[_0x504f('0x1b')],'include':_0x95ddf2[_0x504f('0x1d')]?_[_0x504f('0x1e')](_0x95ddf2[_0x504f('0x1d')],function(_0x599492){return{'model':db[_0x599492[_0x504f('0x1f')]],'as':_0x599492['as'],'attributes':_0x599492[_0x504f('0x1b')]};}):[]};}):[]};}):[]:[]})[_0x504f('0xd')](function(_0x56bd57){logger['info']('GetFreshdeskAccount',_0xbde590);logger[_0x504f('0x10')](_0x504f('0x16'),_0xbde590,JSON[_0x504f('0x11')](_0x56bd57));_0x39740f(_0x56bd57);})[_0x504f('0x20')](function(_0x21fe66){logger[_0x504f('0x12')](_0x504f('0x16'),_0x21fe66[_0x504f('0x14')],_0xbde590);_0x4646fa(_0x56e2e4[_0x504f('0x12')](0x1f4,_0x21fe66[_0x504f('0x14')]));});});};exports['ShowFreshdeskAccount']=function(_0x589f00){var _0xb71697=this;return new Promise(function(_0x4f883d,_0x30550a){return db['FreshdeskAccount'][_0x504f('0x21')]({'raw':_0x589f00[_0x504f('0x18')]?_0x589f00[_0x504f('0x18')][_0x504f('0x19')]===undefined?!![]:![]:!![],'where':_0x589f00['options']?_0x589f00[_0x504f('0x18')][_0x504f('0x1a')]||null:null,'attributes':_0x589f00[_0x504f('0x18')]?_0x589f00[_0x504f('0x18')]['attributes']||null:null,'include':_0x589f00[_0x504f('0x18')]?_0x589f00[_0x504f('0x18')][_0x504f('0x1d')]?_['map'](_0x589f00[_0x504f('0x18')][_0x504f('0x1d')],function(_0x2facd3){return{'model':db[_0x2facd3[_0x504f('0x1f')]],'as':_0x2facd3['as'],'attributes':_0x2facd3[_0x504f('0x1b')],'include':_0x2facd3[_0x504f('0x1d')]?_[_0x504f('0x1e')](_0x2facd3['include'],function(_0x5cd2cd){return{'model':db[_0x5cd2cd[_0x504f('0x1f')]],'as':_0x5cd2cd['as'],'attributes':_0x5cd2cd[_0x504f('0x1b')],'include':_0x5cd2cd[_0x504f('0x1d')]?_['map'](_0x5cd2cd[_0x504f('0x1d')],function(_0x323c98){return{'model':db[_0x323c98['model']],'as':_0x323c98['as'],'attributes':_0x323c98[_0x504f('0x1b')]};}):[]};}):[]};}):[]:[]})[_0x504f('0xd')](function(_0x1f3250){logger[_0x504f('0xe')](_0x504f('0x22'),_0x589f00);logger[_0x504f('0x10')](_0x504f('0x22'),_0x589f00,JSON[_0x504f('0x11')](_0x1f3250));_0x4f883d(_0x1f3250);})[_0x504f('0x20')](function(_0x4ce1a6){logger[_0x504f('0x12')](_0x504f('0x22'),_0x4ce1a6[_0x504f('0x14')],_0x589f00);_0x30550a(_0xb71697['error'](0x1f4,_0x4ce1a6[_0x504f('0x14')]));});});};
\ No newline at end of file
index 285f8d4..71809b3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xfd7e=['setTags','put','update','delete','/:id','destroy','exports','path','connect-timeout','Router','../../components/auth/service','../../components/interaction/service','../../config/environment','./intFreshdeskConfiguration.controller','get','isAuthenticated','index','show','/:id/fields','getFields','/:id/subjects','getSubjects','/:id/descriptions','getDescriptions','/:id/tags','post','create'];(function(_0x5185a9,_0x800c47){var _0x76d70e=function(_0x40e817){while(--_0x40e817){_0x5185a9['push'](_0x5185a9['shift']());}};_0x76d70e(++_0x800c47);}(_0xfd7e,0x130));var _0xefd7=function(_0x375cde,_0x2e8040){_0x375cde=_0x375cde-0x0;var _0x4a250d=_0xfd7e[_0x375cde];return _0x4a250d;};'use strict';var multer=require('multer');var util=require('util');var path=require(_0xefd7('0x0'));var timeout=require(_0xefd7('0x1'));var express=require('express');var router=express[_0xefd7('0x2')]();var fs_extra=require('fs-extra');var auth=require(_0xefd7('0x3'));var interaction=require(_0xefd7('0x4'));var config=require(_0xefd7('0x5'));var controller=require(_0xefd7('0x6'));router[_0xefd7('0x7')]('/',auth[_0xefd7('0x8')](),controller[_0xefd7('0x9')]);router[_0xefd7('0x7')]('/:id',auth['isAuthenticated'](),controller[_0xefd7('0xa')]);router[_0xefd7('0x7')](_0xefd7('0xb'),auth[_0xefd7('0x8')](),controller[_0xefd7('0xc')]);router['get'](_0xefd7('0xd'),auth[_0xefd7('0x8')](),controller[_0xefd7('0xe')]);router['get'](_0xefd7('0xf'),auth[_0xefd7('0x8')](),controller[_0xefd7('0x10')]);router['get'](_0xefd7('0x11'),auth[_0xefd7('0x8')](),controller['getTags']);router[_0xefd7('0x12')]('/',auth[_0xefd7('0x8')](),controller[_0xefd7('0x13')]);router['post'](_0xefd7('0x11'),auth[_0xefd7('0x8')](),controller[_0xefd7('0x14')]);router[_0xefd7('0x15')]('/:id',auth[_0xefd7('0x8')](),controller[_0xefd7('0x16')]);router[_0xefd7('0x17')](_0xefd7('0x18'),auth[_0xefd7('0x8')](),controller[_0xefd7('0x19')]);module[_0xefd7('0x1a')]=router;
\ No newline at end of file
+var _0xc35f=['destroy','exports','multer','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','./intFreshdeskConfiguration.controller','index','get','/:id','isAuthenticated','show','/:id/fields','/:id/subjects','getSubjects','getDescriptions','/:id/tags','getTags','post','create','setTags','put','update'];(function(_0xe033e7,_0x561a6d){var _0x63031f=function(_0x246e1f){while(--_0x246e1f){_0xe033e7['push'](_0xe033e7['shift']());}};_0x63031f(++_0x561a6d);}(_0xc35f,0x84));var _0xfc35=function(_0x4c649a,_0x3b5658){_0x4c649a=_0x4c649a-0x0;var _0x32970f=_0xc35f[_0x4c649a];return _0x32970f;};'use strict';var multer=require(_0xfc35('0x0'));var util=require('util');var path=require(_0xfc35('0x1'));var timeout=require(_0xfc35('0x2'));var express=require(_0xfc35('0x3'));var router=express[_0xfc35('0x4')]();var fs_extra=require(_0xfc35('0x5'));var auth=require(_0xfc35('0x6'));var interaction=require('../../components/interaction/service');var config=require('../../config/environment');var controller=require(_0xfc35('0x7'));router['get']('/',auth['isAuthenticated'](),controller[_0xfc35('0x8')]);router[_0xfc35('0x9')](_0xfc35('0xa'),auth[_0xfc35('0xb')](),controller[_0xfc35('0xc')]);router[_0xfc35('0x9')](_0xfc35('0xd'),auth[_0xfc35('0xb')](),controller['getFields']);router['get'](_0xfc35('0xe'),auth[_0xfc35('0xb')](),controller[_0xfc35('0xf')]);router[_0xfc35('0x9')]('/:id/descriptions',auth[_0xfc35('0xb')](),controller[_0xfc35('0x10')]);router[_0xfc35('0x9')](_0xfc35('0x11'),auth[_0xfc35('0xb')](),controller[_0xfc35('0x12')]);router[_0xfc35('0x13')]('/',auth[_0xfc35('0xb')](),controller[_0xfc35('0x14')]);router[_0xfc35('0x13')]('/:id/tags',auth[_0xfc35('0xb')](),controller[_0xfc35('0x15')]);router[_0xfc35('0x16')]('/:id',auth[_0xfc35('0xb')](),controller[_0xfc35('0x17')]);router['delete'](_0xfc35('0xa'),auth[_0xfc35('0xb')](),controller[_0xfc35('0x18')]);module[_0xfc35('0x19')]=router;
\ No newline at end of file
index dc3e3d2..d8c60e7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x966d=['sequelize','exports','STRING'];(function(_0x4d6fed,_0x3fd220){var _0xfbeb6b=function(_0x4758aa){while(--_0x4758aa){_0x4d6fed['push'](_0x4d6fed['shift']());}};_0xfbeb6b(++_0x3fd220);}(_0x966d,0x10e));var _0xd966=function(_0x3d14f3,_0x42ca33){_0x3d14f3=_0x3d14f3-0x0;var _0x39f303=_0x966d[_0x3d14f3];return _0x39f303;};'use strict';var Sequelize=require(_0xd966('0x0'));module[_0xd966('0x1')]={'name':{'type':Sequelize[_0xd966('0x2')]},'description':{'type':Sequelize[_0xd966('0x2')]}};
\ No newline at end of file
+var _0x63f2=['STRING'];(function(_0x411add,_0x1aed38){var _0x238242=function(_0x4a1cd5){while(--_0x4a1cd5){_0x411add['push'](_0x411add['shift']());}};_0x238242(++_0x1aed38);}(_0x63f2,0x179));var _0x263f=function(_0x3f7814,_0x1f3f4e){_0x3f7814=_0x3f7814-0x0;var _0x4b8e17=_0x63f2[_0x3f7814];return _0x4b8e17;};'use strict';var Sequelize=require('sequelize');module['exports']={'name':{'type':Sequelize[_0x263f('0x0')]},'description':{'type':Sequelize['STRING']}};
\ No newline at end of file
index 84a7fe1..b4980e1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa798=['limit','count','offset','set','apply','reject','update','destroy','error','stack','name','send','index','map','FreshdeskConfiguration','rawAttributes','type','key','model','query','attributes','intersection','fields','length','nolimit','sort','where','pick','filters','merge','VIRTUAL','options','includeAll','include','findAll','then','rows','catch','params','keys','find','create','body','getFields','FreshdeskField','order','filter','hasOwnProperty','getSubjects','findOne','getDescriptions','getTags','ids','zip-dir','fast-json-patch','moment','bluebird','mustache','path','to-csv','ejs','fs-extra','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../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'];(function(_0x3b3cc6,_0x1a6e24){var _0x1161e4=function(_0x19cc52){while(--_0x19cc52){_0x3b3cc6['push'](_0x3b3cc6['shift']());}};_0x1161e4(++_0x1a6e24);}(_0xa798,0x1cf));var _0x8a79=function(_0x2dafbe,_0x5d04de){_0x2dafbe=_0x2dafbe-0x0;var _0x58a45a=_0xa798[_0x2dafbe];return _0x58a45a;};'use strict';var emlformat=require('eml-format');var rimraf=require('rimraf');var zipdir=require(_0x8a79('0x0'));var jsonpatch=require(_0x8a79('0x1'));var rp=require('request-promise');var moment=require(_0x8a79('0x2'));var BPromise=require(_0x8a79('0x3'));var Mustache=require(_0x8a79('0x4'));var util=require('util');var path=require(_0x8a79('0x5'));var sox=require('sox');var csv=require(_0x8a79('0x6'));var ejs=require(_0x8a79('0x7'));var fs=require('fs');var fs_extra=require(_0x8a79('0x8'));var _=require('lodash');var squel=require('squel');var crypto=require(_0x8a79('0x9'));var jsforce=require(_0x8a79('0xa'));var deskjs=require(_0x8a79('0xb'));var toCsv=require(_0x8a79('0x6'));var querystring=require(_0x8a79('0xc'));var Papa=require(_0x8a79('0xd'));var Redis=require(_0x8a79('0xe'));var authService=require(_0x8a79('0xf'));var qs=require(_0x8a79('0x10'));var as=require(_0x8a79('0x11'));var hardwareService=require(_0x8a79('0x12'));var logger=require('../../config/logger')(_0x8a79('0x13'));var utils=require(_0x8a79('0x14'));var config=require(_0x8a79('0x15'));var licenseUtil=require(_0x8a79('0x16'));var db=require(_0x8a79('0x17'))['db'];function respondWithStatusCode(_0x41488b,_0x30c938){_0x30c938=_0x30c938||0xcc;return function(_0x16a58e){if(_0x16a58e){return _0x41488b[_0x8a79('0x18')](_0x30c938);}return _0x41488b[_0x8a79('0x19')](_0x30c938)[_0x8a79('0x1a')]();};}function respondWithResult(_0x4b018c,_0x398659){_0x398659=_0x398659||0xc8;return function(_0x2bb78a){if(_0x2bb78a){return _0x4b018c[_0x8a79('0x19')](_0x398659)[_0x8a79('0x1b')](_0x2bb78a);}};}function respondWithFilteredResult(_0x53ffe6,_0x490e64){return function(_0x1ec975){if(_0x1ec975){var _0x56cde9=typeof _0x490e64['offset']===_0x8a79('0x1c')&&typeof _0x490e64[_0x8a79('0x1d')]===_0x8a79('0x1c');var _0x106068=_0x1ec975[_0x8a79('0x1e')];var _0x4b73be=_0x56cde9?0x0:_0x490e64[_0x8a79('0x1f')];var _0x13ae1a=_0x56cde9?_0x1ec975[_0x8a79('0x1e')]:_0x490e64[_0x8a79('0x1f')]+_0x490e64['limit'];var _0x157281;if(_0x13ae1a>=_0x106068){_0x13ae1a=_0x106068;_0x157281=0xc8;}else{_0x157281=0xce;}_0x53ffe6[_0x8a79('0x19')](_0x157281);return _0x53ffe6[_0x8a79('0x20')]('Content-Range',_0x4b73be+'-'+_0x13ae1a+'/'+_0x106068)[_0x8a79('0x1b')](_0x1ec975);}return null;};}function patchUpdates(_0x4c77dc){return function(_0x19233b){try{jsonpatch[_0x8a79('0x21')](_0x19233b,_0x4c77dc,!![]);}catch(_0x567579){return BPromise[_0x8a79('0x22')](_0x567579);}return _0x19233b['save']();};}function saveUpdates(_0x2790b2,_0x371a9f){return function(_0x313f60){if(_0x313f60){return _0x313f60[_0x8a79('0x23')](_0x2790b2)['then'](function(_0x242fb1){return _0x242fb1;});}return null;};}function removeEntity(_0x2d730a,_0x2c74e3){return function(_0xb3efac){if(_0xb3efac){return _0xb3efac[_0x8a79('0x24')]()['then'](function(){_0x2d730a[_0x8a79('0x19')](0xcc)[_0x8a79('0x1a')]();});}};}function handleEntityNotFound(_0x40cac5,_0x540b61){return function(_0x343c93){if(!_0x343c93){_0x40cac5[_0x8a79('0x18')](0x194);}return _0x343c93;};}function handleError(_0x329fdd,_0xd77308){_0xd77308=_0xd77308||0x1f4;return function(_0x20fac6){logger[_0x8a79('0x25')](_0x20fac6[_0x8a79('0x26')]);if(_0x20fac6[_0x8a79('0x27')]){delete _0x20fac6['name'];}_0x329fdd['status'](_0xd77308)[_0x8a79('0x28')](_0x20fac6);};}exports[_0x8a79('0x29')]=function(_0x1f7664,_0x4020e3){var _0x234845={},_0x206e30={},_0x3f9b72={'count':0x0,'rows':[]};var _0x39f549=_[_0x8a79('0x2a')](db[_0x8a79('0x2b')][_0x8a79('0x2c')],function(_0x5d9e68){return{'name':_0x5d9e68['fieldName'],'type':_0x5d9e68[_0x8a79('0x2d')][_0x8a79('0x2e')]};});_0x206e30[_0x8a79('0x2f')]=_['map'](_0x39f549,_0x8a79('0x27'));_0x206e30[_0x8a79('0x30')]=_['keys'](_0x1f7664[_0x8a79('0x30')]);_0x206e30['filters']=_['intersection'](_0x206e30[_0x8a79('0x2f')],_0x206e30['query']);_0x234845[_0x8a79('0x31')]=_[_0x8a79('0x32')](_0x206e30[_0x8a79('0x2f')],qs[_0x8a79('0x33')](_0x1f7664[_0x8a79('0x30')][_0x8a79('0x33')]));_0x234845[_0x8a79('0x31')]=_0x234845[_0x8a79('0x31')][_0x8a79('0x34')]?_0x234845[_0x8a79('0x31')]:_0x206e30[_0x8a79('0x2f')];if(!_0x1f7664[_0x8a79('0x30')]['hasOwnProperty'](_0x8a79('0x35'))){_0x234845[_0x8a79('0x1d')]=qs['limit'](_0x1f7664['query'][_0x8a79('0x1d')]);_0x234845['offset']=qs['offset'](_0x1f7664[_0x8a79('0x30')][_0x8a79('0x1f')]);}_0x234845['order']=qs[_0x8a79('0x36')](_0x1f7664[_0x8a79('0x30')]['sort']);_0x234845[_0x8a79('0x37')]=qs['filters'](_[_0x8a79('0x38')](_0x1f7664[_0x8a79('0x30')],_0x206e30[_0x8a79('0x39')]),_0x39f549);if(_0x1f7664[_0x8a79('0x30')]['filter']){_0x234845['where']=_[_0x8a79('0x3a')](_0x234845[_0x8a79('0x37')],{'$or':_[_0x8a79('0x2a')](_0x39f549,function(_0x23999c){if(_0x23999c['type']!==_0x8a79('0x3b')){var _0x30d75a={};_0x30d75a[_0x23999c['name']]={'$like':'%'+_0x1f7664['query']['filter']+'%'};return _0x30d75a;}})});}_0x234845=_[_0x8a79('0x3a')]({},_0x234845,_0x1f7664[_0x8a79('0x3c')]);var _0x52d067={'where':_0x234845[_0x8a79('0x37')]};return db['FreshdeskConfiguration'][_0x8a79('0x1e')](_0x52d067)['then'](function(_0x5e74cc){_0x3f9b72[_0x8a79('0x1e')]=_0x5e74cc;if(_0x1f7664[_0x8a79('0x30')][_0x8a79('0x3d')]){_0x234845[_0x8a79('0x3e')]=[{'all':!![]}];}return db['FreshdeskConfiguration'][_0x8a79('0x3f')](_0x234845);})[_0x8a79('0x40')](function(_0x160b83){_0x3f9b72[_0x8a79('0x41')]=_0x160b83;return _0x3f9b72;})[_0x8a79('0x40')](respondWithFilteredResult(_0x4020e3,_0x234845))[_0x8a79('0x42')](handleError(_0x4020e3,null));};exports['show']=function(_0x271a6f,_0x56e250){var _0x30702c={'raw':![],'where':{'id':_0x271a6f[_0x8a79('0x43')]['id']}},_0x595765={};_0x595765['model']=_['keys'](db[_0x8a79('0x2b')][_0x8a79('0x2c')]);_0x595765[_0x8a79('0x30')]=_[_0x8a79('0x44')](_0x271a6f['query']);_0x595765[_0x8a79('0x39')]=_['intersection'](_0x595765[_0x8a79('0x2f')],_0x595765[_0x8a79('0x30')]);_0x30702c[_0x8a79('0x31')]=_[_0x8a79('0x32')](_0x595765[_0x8a79('0x2f')],qs[_0x8a79('0x33')](_0x271a6f[_0x8a79('0x30')][_0x8a79('0x33')]));_0x30702c[_0x8a79('0x31')]=_0x30702c[_0x8a79('0x31')]['length']?_0x30702c['attributes']:_0x595765[_0x8a79('0x2f')];if(_0x271a6f['query']['includeAll']){_0x30702c[_0x8a79('0x3e')]=[{'all':!![]}];}_0x30702c=_[_0x8a79('0x3a')]({},_0x30702c,_0x271a6f['options']);return db[_0x8a79('0x2b')][_0x8a79('0x45')](_0x30702c)[_0x8a79('0x40')](handleEntityNotFound(_0x56e250,null))[_0x8a79('0x40')](respondWithResult(_0x56e250,null))['catch'](handleError(_0x56e250,null));};exports['create']=function(_0xd840cf,_0x2f72e6){return db['FreshdeskConfiguration'][_0x8a79('0x46')](_0xd840cf[_0x8a79('0x47')],{})[_0x8a79('0x40')](respondWithResult(_0x2f72e6,0xc9))[_0x8a79('0x42')](handleError(_0x2f72e6,null));};exports['update']=function(_0x5b091f,_0xc7424d){if(_0x5b091f[_0x8a79('0x47')]['id']){delete _0x5b091f[_0x8a79('0x47')]['id'];}return db[_0x8a79('0x2b')][_0x8a79('0x45')]({'where':{'id':_0x5b091f[_0x8a79('0x43')]['id']}})['then'](handleEntityNotFound(_0xc7424d,null))[_0x8a79('0x40')](saveUpdates(_0x5b091f[_0x8a79('0x47')],null))[_0x8a79('0x40')](respondWithResult(_0xc7424d,null))['catch'](handleError(_0xc7424d,null));};exports['destroy']=function(_0x31081e,_0x175dcb){return db[_0x8a79('0x2b')][_0x8a79('0x45')]({'where':{'id':_0x31081e[_0x8a79('0x43')]['id']}})[_0x8a79('0x40')](handleEntityNotFound(_0x175dcb,null))['then'](removeEntity(_0x175dcb,null))[_0x8a79('0x42')](handleError(_0x175dcb,null));};exports[_0x8a79('0x48')]=function(_0x380da8,_0x1ce2a1,_0x31e91d){var _0x4cbc09={};var _0x574c77={};var _0x2fe6d3;var _0x9e1961;return db[_0x8a79('0x2b')]['findOne']({'where':{'id':_0x380da8[_0x8a79('0x43')]['id']}})[_0x8a79('0x40')](handleEntityNotFound(_0x1ce2a1,null))[_0x8a79('0x40')](function(_0x30d38f){if(_0x30d38f){_0x2fe6d3=_0x30d38f;_0x574c77[_0x8a79('0x2f')]=_[_0x8a79('0x44')](db[_0x8a79('0x49')][_0x8a79('0x2c')]);_0x574c77[_0x8a79('0x30')]=_[_0x8a79('0x44')](_0x380da8[_0x8a79('0x30')]);_0x574c77[_0x8a79('0x39')]=_[_0x8a79('0x32')](_0x574c77[_0x8a79('0x2f')],_0x574c77[_0x8a79('0x30')]);_0x4cbc09[_0x8a79('0x31')]=_[_0x8a79('0x32')](_0x574c77[_0x8a79('0x2f')],qs['fields'](_0x380da8[_0x8a79('0x30')]['fields']));_0x4cbc09[_0x8a79('0x31')]=_0x4cbc09[_0x8a79('0x31')][_0x8a79('0x34')]?_0x4cbc09['attributes']:_0x574c77['model'];_0x4cbc09[_0x8a79('0x4a')]=qs[_0x8a79('0x36')](_0x380da8[_0x8a79('0x30')][_0x8a79('0x36')]);_0x4cbc09[_0x8a79('0x37')]=qs[_0x8a79('0x39')](_[_0x8a79('0x38')](_0x380da8[_0x8a79('0x30')],_0x574c77[_0x8a79('0x39')]));if(_0x380da8[_0x8a79('0x30')][_0x8a79('0x4b')]){_0x4cbc09['where']=_[_0x8a79('0x3a')](_0x4cbc09[_0x8a79('0x37')],{'$or':_[_0x8a79('0x2a')](_0x4cbc09[_0x8a79('0x31')],function(_0x5c2f51){var _0x3c9857={};_0x3c9857[_0x5c2f51]={'$like':'%'+_0x380da8[_0x8a79('0x30')][_0x8a79('0x4b')]+'%'};return _0x3c9857;})});}_0x4cbc09=_[_0x8a79('0x3a')]({},_0x4cbc09,_0x380da8['options']);return _0x2fe6d3[_0x8a79('0x48')](_0x4cbc09);}})[_0x8a79('0x40')](function(_0x542961){if(_0x542961){_0x9e1961=_0x542961[_0x8a79('0x34')];if(!_0x380da8[_0x8a79('0x30')][_0x8a79('0x4c')](_0x8a79('0x35'))){_0x4cbc09['limit']=qs['limit'](_0x380da8[_0x8a79('0x30')]['limit']);_0x4cbc09['offset']=qs[_0x8a79('0x1f')](_0x380da8[_0x8a79('0x30')][_0x8a79('0x1f')]);}return _0x2fe6d3[_0x8a79('0x48')](_0x4cbc09);}})[_0x8a79('0x40')](function(_0x50e272){if(_0x50e272){return _0x50e272?{'count':_0x9e1961,'rows':_0x50e272}:null;}})[_0x8a79('0x40')](respondWithResult(_0x1ce2a1,null))[_0x8a79('0x42')](handleError(_0x1ce2a1,null));};exports[_0x8a79('0x4d')]=function(_0x108b7b,_0xcb8d4a,_0x4f63b6){var _0x12a88f={};var _0x41e9b5={};var _0x44d406;var _0x459fe2;return db[_0x8a79('0x2b')][_0x8a79('0x4e')]({'where':{'id':_0x108b7b[_0x8a79('0x43')]['id']}})[_0x8a79('0x40')](handleEntityNotFound(_0xcb8d4a,null))[_0x8a79('0x40')](function(_0x1c4215){if(_0x1c4215){_0x44d406=_0x1c4215;_0x41e9b5[_0x8a79('0x2f')]=_[_0x8a79('0x44')](db['FreshdeskField'][_0x8a79('0x2c')]);_0x41e9b5[_0x8a79('0x30')]=_['keys'](_0x108b7b[_0x8a79('0x30')]);_0x41e9b5[_0x8a79('0x39')]=_[_0x8a79('0x32')](_0x41e9b5[_0x8a79('0x2f')],_0x41e9b5[_0x8a79('0x30')]);_0x12a88f[_0x8a79('0x31')]=_[_0x8a79('0x32')](_0x41e9b5[_0x8a79('0x2f')],qs[_0x8a79('0x33')](_0x108b7b[_0x8a79('0x30')][_0x8a79('0x33')]));_0x12a88f[_0x8a79('0x31')]=_0x12a88f[_0x8a79('0x31')][_0x8a79('0x34')]?_0x12a88f['attributes']:_0x41e9b5[_0x8a79('0x2f')];_0x12a88f['order']=qs[_0x8a79('0x36')](_0x108b7b[_0x8a79('0x30')]['sort']);_0x12a88f[_0x8a79('0x37')]=qs[_0x8a79('0x39')](_[_0x8a79('0x38')](_0x108b7b['query'],_0x41e9b5[_0x8a79('0x39')]));if(_0x108b7b[_0x8a79('0x30')][_0x8a79('0x4b')]){_0x12a88f['where']=_[_0x8a79('0x3a')](_0x12a88f[_0x8a79('0x37')],{'$or':_['map'](_0x12a88f['attributes'],function(_0x21bf0a){var _0x5d1e20={};_0x5d1e20[_0x21bf0a]={'$like':'%'+_0x108b7b['query'][_0x8a79('0x4b')]+'%'};return _0x5d1e20;})});}_0x12a88f=_[_0x8a79('0x3a')]({},_0x12a88f,_0x108b7b[_0x8a79('0x3c')]);return _0x44d406[_0x8a79('0x4d')](_0x12a88f);}})[_0x8a79('0x40')](function(_0x201206){if(_0x201206){_0x459fe2=_0x201206[_0x8a79('0x34')];if(!_0x108b7b['query'][_0x8a79('0x4c')]('nolimit')){_0x12a88f[_0x8a79('0x1d')]=qs[_0x8a79('0x1d')](_0x108b7b[_0x8a79('0x30')]['limit']);_0x12a88f[_0x8a79('0x1f')]=qs['offset'](_0x108b7b[_0x8a79('0x30')][_0x8a79('0x1f')]);}return _0x44d406['getSubjects'](_0x12a88f);}})['then'](function(_0x15dfc2){if(_0x15dfc2){return _0x15dfc2?{'count':_0x459fe2,'rows':_0x15dfc2}:null;}})[_0x8a79('0x40')](respondWithResult(_0xcb8d4a,null))[_0x8a79('0x42')](handleError(_0xcb8d4a,null));};exports[_0x8a79('0x4f')]=function(_0x18e8cc,_0x57ca95,_0x415c0c){var _0x37d5e9={};var _0x11e156={};var _0x452181;var _0x5a126d;return db[_0x8a79('0x2b')]['findOne']({'where':{'id':_0x18e8cc[_0x8a79('0x43')]['id']}})[_0x8a79('0x40')](handleEntityNotFound(_0x57ca95,null))[_0x8a79('0x40')](function(_0x3d8697){if(_0x3d8697){_0x452181=_0x3d8697;_0x11e156[_0x8a79('0x2f')]=_[_0x8a79('0x44')](db[_0x8a79('0x49')][_0x8a79('0x2c')]);_0x11e156[_0x8a79('0x30')]=_[_0x8a79('0x44')](_0x18e8cc[_0x8a79('0x30')]);_0x11e156['filters']=_[_0x8a79('0x32')](_0x11e156[_0x8a79('0x2f')],_0x11e156[_0x8a79('0x30')]);_0x37d5e9[_0x8a79('0x31')]=_[_0x8a79('0x32')](_0x11e156[_0x8a79('0x2f')],qs[_0x8a79('0x33')](_0x18e8cc[_0x8a79('0x30')][_0x8a79('0x33')]));_0x37d5e9[_0x8a79('0x31')]=_0x37d5e9[_0x8a79('0x31')][_0x8a79('0x34')]?_0x37d5e9[_0x8a79('0x31')]:_0x11e156[_0x8a79('0x2f')];_0x37d5e9['order']=qs[_0x8a79('0x36')](_0x18e8cc['query'][_0x8a79('0x36')]);_0x37d5e9[_0x8a79('0x37')]=qs[_0x8a79('0x39')](_[_0x8a79('0x38')](_0x18e8cc[_0x8a79('0x30')],_0x11e156[_0x8a79('0x39')]));if(_0x18e8cc['query'][_0x8a79('0x4b')]){_0x37d5e9[_0x8a79('0x37')]=_[_0x8a79('0x3a')](_0x37d5e9[_0x8a79('0x37')],{'$or':_['map'](_0x37d5e9[_0x8a79('0x31')],function(_0x3dab17){var _0x2aa312={};_0x2aa312[_0x3dab17]={'$like':'%'+_0x18e8cc[_0x8a79('0x30')][_0x8a79('0x4b')]+'%'};return _0x2aa312;})});}_0x37d5e9=_[_0x8a79('0x3a')]({},_0x37d5e9,_0x18e8cc['options']);return _0x452181[_0x8a79('0x4f')](_0x37d5e9);}})[_0x8a79('0x40')](function(_0x45f857){if(_0x45f857){_0x5a126d=_0x45f857[_0x8a79('0x34')];if(!_0x18e8cc['query']['hasOwnProperty'](_0x8a79('0x35'))){_0x37d5e9[_0x8a79('0x1d')]=qs[_0x8a79('0x1d')](_0x18e8cc[_0x8a79('0x30')][_0x8a79('0x1d')]);_0x37d5e9[_0x8a79('0x1f')]=qs[_0x8a79('0x1f')](_0x18e8cc[_0x8a79('0x30')][_0x8a79('0x1f')]);}return _0x452181[_0x8a79('0x4f')](_0x37d5e9);}})['then'](function(_0x3bbf17){if(_0x3bbf17){return _0x3bbf17?{'count':_0x5a126d,'rows':_0x3bbf17}:null;}})[_0x8a79('0x40')](respondWithResult(_0x57ca95,null))['catch'](handleError(_0x57ca95,null));};exports[_0x8a79('0x50')]=function(_0x3f21af,_0x1212ec,_0x504127){var _0x5c0371={};var _0x228fb9={};var _0x3c66d5;var _0x144355;return db['FreshdeskConfiguration']['findOne']({'where':{'id':_0x3f21af['params']['id']}})[_0x8a79('0x40')](handleEntityNotFound(_0x1212ec,null))['then'](function(_0x8fa4c2){if(_0x8fa4c2){_0x3c66d5=_0x8fa4c2;_0x228fb9[_0x8a79('0x2f')]=_['keys'](db['Tag'][_0x8a79('0x2c')]);_0x228fb9[_0x8a79('0x30')]=_[_0x8a79('0x44')](_0x3f21af[_0x8a79('0x30')]);_0x228fb9[_0x8a79('0x39')]=_[_0x8a79('0x32')](_0x228fb9[_0x8a79('0x2f')],_0x228fb9[_0x8a79('0x30')]);_0x5c0371[_0x8a79('0x31')]=_[_0x8a79('0x32')](_0x228fb9[_0x8a79('0x2f')],qs[_0x8a79('0x33')](_0x3f21af[_0x8a79('0x30')][_0x8a79('0x33')]));_0x5c0371['attributes']=_0x5c0371['attributes']['length']?_0x5c0371[_0x8a79('0x31')]:_0x228fb9['model'];_0x5c0371['order']=qs[_0x8a79('0x36')](_0x3f21af[_0x8a79('0x30')]['sort']);_0x5c0371[_0x8a79('0x37')]=qs[_0x8a79('0x39')](_['pick'](_0x3f21af[_0x8a79('0x30')],_0x228fb9['filters']));if(_0x3f21af[_0x8a79('0x30')]['filter']){_0x5c0371[_0x8a79('0x37')]=_[_0x8a79('0x3a')](_0x5c0371[_0x8a79('0x37')],{'$or':_[_0x8a79('0x2a')](_0x5c0371[_0x8a79('0x31')],function(_0x1672af){var _0x3e6ff1={};_0x3e6ff1[_0x1672af]={'$like':'%'+_0x3f21af[_0x8a79('0x30')][_0x8a79('0x4b')]+'%'};return _0x3e6ff1;})});}_0x5c0371=_[_0x8a79('0x3a')]({},_0x5c0371,_0x3f21af['options']);return _0x3c66d5[_0x8a79('0x50')](_0x5c0371);}})[_0x8a79('0x40')](function(_0x254baa){if(_0x254baa){_0x144355=_0x254baa[_0x8a79('0x34')];if(!_0x3f21af['query'][_0x8a79('0x4c')](_0x8a79('0x35'))){_0x5c0371[_0x8a79('0x1d')]=qs[_0x8a79('0x1d')](_0x3f21af['query'][_0x8a79('0x1d')]);_0x5c0371[_0x8a79('0x1f')]=qs[_0x8a79('0x1f')](_0x3f21af[_0x8a79('0x30')]['offset']);}return _0x3c66d5[_0x8a79('0x50')](_0x5c0371);}})[_0x8a79('0x40')](function(_0x17071a){if(_0x17071a){return _0x17071a?{'count':_0x144355,'rows':_0x17071a}:null;}})[_0x8a79('0x40')](respondWithResult(_0x1212ec,null))[_0x8a79('0x42')](handleError(_0x1212ec,null));};exports['setTags']=function(_0x2fef72,_0x3a142c,_0x4fbc79){if(_0x2fef72['body']['id']){delete _0x2fef72[_0x8a79('0x47')]['id'];}return db[_0x8a79('0x2b')][_0x8a79('0x4e')]({'where':{'id':_0x2fef72[_0x8a79('0x43')]['id']}})[_0x8a79('0x40')](handleEntityNotFound(_0x3a142c,null))[_0x8a79('0x40')](function(_0x48fe4f){if(_0x48fe4f){return _0x48fe4f['setTags'](_0x2fef72[_0x8a79('0x47')][_0x8a79('0x51')]||[]);}return null;})['then'](respondWithResult(_0x3a142c,null))['catch'](handleError(_0x3a142c,null));};
\ No newline at end of file
+var _0x62a1=['rawAttributes','fieldName','type','key','model','query','keys','intersection','fields','attributes','length','hasOwnProperty','nolimit','order','sort','where','filters','pick','filter','merge','VIRTUAL','count','includeAll','include','rows','catch','show','params','options','find','create','body','getFields','findOne','FreshdeskField','getSubjects','getDescriptions','getTags','Tag','setTags','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','util','path','sox','to-csv','ejs','squel','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../mysqldb','sendStatus','end','offset','undefined','limit','status','set','Content-Range','json','apply','reject','save','update','then','destroy','error','stack','name','send','index','map','FreshdeskConfiguration'];(function(_0x49cd48,_0x65614b){var _0x3cc58f=function(_0x39c6d8){while(--_0x39c6d8){_0x49cd48['push'](_0x49cd48['shift']());}};_0x3cc58f(++_0x65614b);}(_0x62a1,0xda));var _0x162a=function(_0x14fd56,_0x24de51){_0x14fd56=_0x14fd56-0x0;var _0x168d7d=_0x62a1[_0x14fd56];return _0x168d7d;};'use strict';var emlformat=require(_0x162a('0x0'));var rimraf=require(_0x162a('0x1'));var zipdir=require(_0x162a('0x2'));var jsonpatch=require(_0x162a('0x3'));var rp=require(_0x162a('0x4'));var moment=require(_0x162a('0x5'));var BPromise=require(_0x162a('0x6'));var Mustache=require('mustache');var util=require(_0x162a('0x7'));var path=require(_0x162a('0x8'));var sox=require(_0x162a('0x9'));var csv=require(_0x162a('0xa'));var ejs=require(_0x162a('0xb'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require('lodash');var squel=require(_0x162a('0xc'));var crypto=require(_0x162a('0xd'));var jsforce=require(_0x162a('0xe'));var deskjs=require(_0x162a('0xf'));var toCsv=require(_0x162a('0xa'));var querystring=require(_0x162a('0x10'));var Papa=require(_0x162a('0x11'));var Redis=require(_0x162a('0x12'));var authService=require(_0x162a('0x13'));var qs=require(_0x162a('0x14'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x162a('0x15'));var logger=require(_0x162a('0x16'))(_0x162a('0x17'));var utils=require(_0x162a('0x18'));var config=require(_0x162a('0x19'));var licenseUtil=require('../../config/license/util');var db=require(_0x162a('0x1a'))['db'];function respondWithStatusCode(_0x3d24d8,_0x2b5ffe){_0x2b5ffe=_0x2b5ffe||0xcc;return function(_0x144eba){if(_0x144eba){return _0x3d24d8[_0x162a('0x1b')](_0x2b5ffe);}return _0x3d24d8['status'](_0x2b5ffe)[_0x162a('0x1c')]();};}function respondWithResult(_0x3a8989,_0x259b6b){_0x259b6b=_0x259b6b||0xc8;return function(_0x2efe0e){if(_0x2efe0e){return _0x3a8989['status'](_0x259b6b)['json'](_0x2efe0e);}};}function respondWithFilteredResult(_0x271314,_0x239065){return function(_0x14aa9c){if(_0x14aa9c){var _0x53fc91=typeof _0x239065[_0x162a('0x1d')]===_0x162a('0x1e')&&typeof _0x239065['limit']===_0x162a('0x1e');var _0x22830e=_0x14aa9c['count'];var _0xf6e640=_0x53fc91?0x0:_0x239065[_0x162a('0x1d')];var _0x2a7759=_0x53fc91?_0x14aa9c['count']:_0x239065[_0x162a('0x1d')]+_0x239065[_0x162a('0x1f')];var _0x33df1b;if(_0x2a7759>=_0x22830e){_0x2a7759=_0x22830e;_0x33df1b=0xc8;}else{_0x33df1b=0xce;}_0x271314[_0x162a('0x20')](_0x33df1b);return _0x271314[_0x162a('0x21')](_0x162a('0x22'),_0xf6e640+'-'+_0x2a7759+'/'+_0x22830e)[_0x162a('0x23')](_0x14aa9c);}return null;};}function patchUpdates(_0x3958ae){return function(_0x40a8b1){try{jsonpatch[_0x162a('0x24')](_0x40a8b1,_0x3958ae,!![]);}catch(_0x3e4317){return BPromise[_0x162a('0x25')](_0x3e4317);}return _0x40a8b1[_0x162a('0x26')]();};}function saveUpdates(_0x49b5ef,_0x2a6559){return function(_0x3040ce){if(_0x3040ce){return _0x3040ce[_0x162a('0x27')](_0x49b5ef)[_0x162a('0x28')](function(_0x3d04df){return _0x3d04df;});}return null;};}function removeEntity(_0x2be482,_0x5688e0){return function(_0x401eb4){if(_0x401eb4){return _0x401eb4[_0x162a('0x29')]()[_0x162a('0x28')](function(){_0x2be482['status'](0xcc)[_0x162a('0x1c')]();});}};}function handleEntityNotFound(_0xda636d,_0x568501){return function(_0x57d199){if(!_0x57d199){_0xda636d[_0x162a('0x1b')](0x194);}return _0x57d199;};}function handleError(_0x5c95a2,_0x80e590){_0x80e590=_0x80e590||0x1f4;return function(_0x3238c1){logger[_0x162a('0x2a')](_0x3238c1[_0x162a('0x2b')]);if(_0x3238c1[_0x162a('0x2c')]){delete _0x3238c1[_0x162a('0x2c')];}_0x5c95a2[_0x162a('0x20')](_0x80e590)[_0x162a('0x2d')](_0x3238c1);};}exports[_0x162a('0x2e')]=function(_0x25233c,_0x1884a6){var _0x86cc29={},_0x6357bb={},_0x522d83={'count':0x0,'rows':[]};var _0x4f59c3=_[_0x162a('0x2f')](db[_0x162a('0x30')][_0x162a('0x31')],function(_0x6d77b0){return{'name':_0x6d77b0[_0x162a('0x32')],'type':_0x6d77b0[_0x162a('0x33')][_0x162a('0x34')]};});_0x6357bb[_0x162a('0x35')]=_[_0x162a('0x2f')](_0x4f59c3,'name');_0x6357bb[_0x162a('0x36')]=_[_0x162a('0x37')](_0x25233c[_0x162a('0x36')]);_0x6357bb['filters']=_[_0x162a('0x38')](_0x6357bb[_0x162a('0x35')],_0x6357bb[_0x162a('0x36')]);_0x86cc29['attributes']=_[_0x162a('0x38')](_0x6357bb[_0x162a('0x35')],qs[_0x162a('0x39')](_0x25233c[_0x162a('0x36')][_0x162a('0x39')]));_0x86cc29['attributes']=_0x86cc29[_0x162a('0x3a')][_0x162a('0x3b')]?_0x86cc29[_0x162a('0x3a')]:_0x6357bb[_0x162a('0x35')];if(!_0x25233c['query'][_0x162a('0x3c')](_0x162a('0x3d'))){_0x86cc29[_0x162a('0x1f')]=qs[_0x162a('0x1f')](_0x25233c[_0x162a('0x36')][_0x162a('0x1f')]);_0x86cc29[_0x162a('0x1d')]=qs[_0x162a('0x1d')](_0x25233c['query']['offset']);}_0x86cc29[_0x162a('0x3e')]=qs[_0x162a('0x3f')](_0x25233c[_0x162a('0x36')][_0x162a('0x3f')]);_0x86cc29[_0x162a('0x40')]=qs[_0x162a('0x41')](_[_0x162a('0x42')](_0x25233c[_0x162a('0x36')],_0x6357bb[_0x162a('0x41')]),_0x4f59c3);if(_0x25233c[_0x162a('0x36')][_0x162a('0x43')]){_0x86cc29[_0x162a('0x40')]=_[_0x162a('0x44')](_0x86cc29[_0x162a('0x40')],{'$or':_[_0x162a('0x2f')](_0x4f59c3,function(_0x38b518){if(_0x38b518[_0x162a('0x33')]!==_0x162a('0x45')){var _0x2e4bcb={};_0x2e4bcb[_0x38b518[_0x162a('0x2c')]]={'$like':'%'+_0x25233c['query'][_0x162a('0x43')]+'%'};return _0x2e4bcb;}})});}_0x86cc29=_[_0x162a('0x44')]({},_0x86cc29,_0x25233c['options']);var _0x21d351={'where':_0x86cc29[_0x162a('0x40')]};return db[_0x162a('0x30')][_0x162a('0x46')](_0x21d351)[_0x162a('0x28')](function(_0x13442f){_0x522d83[_0x162a('0x46')]=_0x13442f;if(_0x25233c[_0x162a('0x36')][_0x162a('0x47')]){_0x86cc29[_0x162a('0x48')]=[{'all':!![]}];}return db[_0x162a('0x30')]['findAll'](_0x86cc29);})[_0x162a('0x28')](function(_0x3c1be4){_0x522d83[_0x162a('0x49')]=_0x3c1be4;return _0x522d83;})['then'](respondWithFilteredResult(_0x1884a6,_0x86cc29))[_0x162a('0x4a')](handleError(_0x1884a6,null));};exports[_0x162a('0x4b')]=function(_0xe512a1,_0x49ea35){var _0x413040={'raw':![],'where':{'id':_0xe512a1[_0x162a('0x4c')]['id']}},_0x2f611d={};_0x2f611d['model']=_[_0x162a('0x37')](db['FreshdeskConfiguration'][_0x162a('0x31')]);_0x2f611d[_0x162a('0x36')]=_[_0x162a('0x37')](_0xe512a1[_0x162a('0x36')]);_0x2f611d[_0x162a('0x41')]=_[_0x162a('0x38')](_0x2f611d['model'],_0x2f611d[_0x162a('0x36')]);_0x413040['attributes']=_[_0x162a('0x38')](_0x2f611d[_0x162a('0x35')],qs[_0x162a('0x39')](_0xe512a1['query'][_0x162a('0x39')]));_0x413040[_0x162a('0x3a')]=_0x413040[_0x162a('0x3a')][_0x162a('0x3b')]?_0x413040[_0x162a('0x3a')]:_0x2f611d['model'];if(_0xe512a1[_0x162a('0x36')][_0x162a('0x47')]){_0x413040[_0x162a('0x48')]=[{'all':!![]}];}_0x413040=_[_0x162a('0x44')]({},_0x413040,_0xe512a1[_0x162a('0x4d')]);return db[_0x162a('0x30')][_0x162a('0x4e')](_0x413040)[_0x162a('0x28')](handleEntityNotFound(_0x49ea35,null))[_0x162a('0x28')](respondWithResult(_0x49ea35,null))[_0x162a('0x4a')](handleError(_0x49ea35,null));};exports[_0x162a('0x4f')]=function(_0xf6a85b,_0x1f372e){return db[_0x162a('0x30')][_0x162a('0x4f')](_0xf6a85b[_0x162a('0x50')],{})['then'](respondWithResult(_0x1f372e,0xc9))[_0x162a('0x4a')](handleError(_0x1f372e,null));};exports[_0x162a('0x27')]=function(_0x5561d0,_0x2c05b6){if(_0x5561d0[_0x162a('0x50')]['id']){delete _0x5561d0['body']['id'];}return db[_0x162a('0x30')][_0x162a('0x4e')]({'where':{'id':_0x5561d0[_0x162a('0x4c')]['id']}})[_0x162a('0x28')](handleEntityNotFound(_0x2c05b6,null))[_0x162a('0x28')](saveUpdates(_0x5561d0[_0x162a('0x50')],null))['then'](respondWithResult(_0x2c05b6,null))['catch'](handleError(_0x2c05b6,null));};exports[_0x162a('0x29')]=function(_0x3310f7,_0x514a2d){return db['FreshdeskConfiguration'][_0x162a('0x4e')]({'where':{'id':_0x3310f7[_0x162a('0x4c')]['id']}})[_0x162a('0x28')](handleEntityNotFound(_0x514a2d,null))['then'](removeEntity(_0x514a2d,null))['catch'](handleError(_0x514a2d,null));};exports[_0x162a('0x51')]=function(_0x48c8b8,_0x4b904d,_0x45550e){var _0x1f5f78={};var _0x16b614={};var _0x2f615a;var _0x42dfea;return db[_0x162a('0x30')][_0x162a('0x52')]({'where':{'id':_0x48c8b8['params']['id']}})[_0x162a('0x28')](handleEntityNotFound(_0x4b904d,null))['then'](function(_0xacde78){if(_0xacde78){_0x2f615a=_0xacde78;_0x16b614['model']=_[_0x162a('0x37')](db[_0x162a('0x53')]['rawAttributes']);_0x16b614['query']=_[_0x162a('0x37')](_0x48c8b8[_0x162a('0x36')]);_0x16b614[_0x162a('0x41')]=_[_0x162a('0x38')](_0x16b614['model'],_0x16b614[_0x162a('0x36')]);_0x1f5f78[_0x162a('0x3a')]=_[_0x162a('0x38')](_0x16b614['model'],qs[_0x162a('0x39')](_0x48c8b8[_0x162a('0x36')][_0x162a('0x39')]));_0x1f5f78['attributes']=_0x1f5f78['attributes'][_0x162a('0x3b')]?_0x1f5f78[_0x162a('0x3a')]:_0x16b614[_0x162a('0x35')];_0x1f5f78[_0x162a('0x3e')]=qs[_0x162a('0x3f')](_0x48c8b8['query'][_0x162a('0x3f')]);_0x1f5f78[_0x162a('0x40')]=qs[_0x162a('0x41')](_[_0x162a('0x42')](_0x48c8b8[_0x162a('0x36')],_0x16b614[_0x162a('0x41')]));if(_0x48c8b8[_0x162a('0x36')][_0x162a('0x43')]){_0x1f5f78[_0x162a('0x40')]=_[_0x162a('0x44')](_0x1f5f78['where'],{'$or':_[_0x162a('0x2f')](_0x1f5f78[_0x162a('0x3a')],function(_0x3d70b5){var _0x1389bd={};_0x1389bd[_0x3d70b5]={'$like':'%'+_0x48c8b8['query'][_0x162a('0x43')]+'%'};return _0x1389bd;})});}_0x1f5f78=_[_0x162a('0x44')]({},_0x1f5f78,_0x48c8b8[_0x162a('0x4d')]);return _0x2f615a[_0x162a('0x51')](_0x1f5f78);}})['then'](function(_0x186e5d){if(_0x186e5d){_0x42dfea=_0x186e5d[_0x162a('0x3b')];if(!_0x48c8b8[_0x162a('0x36')][_0x162a('0x3c')](_0x162a('0x3d'))){_0x1f5f78[_0x162a('0x1f')]=qs[_0x162a('0x1f')](_0x48c8b8[_0x162a('0x36')][_0x162a('0x1f')]);_0x1f5f78['offset']=qs['offset'](_0x48c8b8['query'][_0x162a('0x1d')]);}return _0x2f615a['getFields'](_0x1f5f78);}})['then'](function(_0x2070d2){if(_0x2070d2){return _0x2070d2?{'count':_0x42dfea,'rows':_0x2070d2}:null;}})[_0x162a('0x28')](respondWithResult(_0x4b904d,null))['catch'](handleError(_0x4b904d,null));};exports[_0x162a('0x54')]=function(_0x3e83c6,_0x5d87c2,_0x16746b){var _0x4e2dbd={};var _0xfce6c5={};var _0x27ab09;var _0x4948d3;return db[_0x162a('0x30')][_0x162a('0x52')]({'where':{'id':_0x3e83c6['params']['id']}})[_0x162a('0x28')](handleEntityNotFound(_0x5d87c2,null))[_0x162a('0x28')](function(_0x10431b){if(_0x10431b){_0x27ab09=_0x10431b;_0xfce6c5[_0x162a('0x35')]=_['keys'](db[_0x162a('0x53')]['rawAttributes']);_0xfce6c5[_0x162a('0x36')]=_[_0x162a('0x37')](_0x3e83c6[_0x162a('0x36')]);_0xfce6c5[_0x162a('0x41')]=_['intersection'](_0xfce6c5['model'],_0xfce6c5[_0x162a('0x36')]);_0x4e2dbd['attributes']=_[_0x162a('0x38')](_0xfce6c5[_0x162a('0x35')],qs[_0x162a('0x39')](_0x3e83c6[_0x162a('0x36')][_0x162a('0x39')]));_0x4e2dbd['attributes']=_0x4e2dbd['attributes'][_0x162a('0x3b')]?_0x4e2dbd['attributes']:_0xfce6c5[_0x162a('0x35')];_0x4e2dbd[_0x162a('0x3e')]=qs[_0x162a('0x3f')](_0x3e83c6['query'][_0x162a('0x3f')]);_0x4e2dbd[_0x162a('0x40')]=qs[_0x162a('0x41')](_[_0x162a('0x42')](_0x3e83c6[_0x162a('0x36')],_0xfce6c5[_0x162a('0x41')]));if(_0x3e83c6['query'][_0x162a('0x43')]){_0x4e2dbd[_0x162a('0x40')]=_['merge'](_0x4e2dbd[_0x162a('0x40')],{'$or':_[_0x162a('0x2f')](_0x4e2dbd[_0x162a('0x3a')],function(_0x465c5e){var _0x4e0504={};_0x4e0504[_0x465c5e]={'$like':'%'+_0x3e83c6[_0x162a('0x36')]['filter']+'%'};return _0x4e0504;})});}_0x4e2dbd=_[_0x162a('0x44')]({},_0x4e2dbd,_0x3e83c6['options']);return _0x27ab09[_0x162a('0x54')](_0x4e2dbd);}})[_0x162a('0x28')](function(_0x2b01ee){if(_0x2b01ee){_0x4948d3=_0x2b01ee[_0x162a('0x3b')];if(!_0x3e83c6[_0x162a('0x36')]['hasOwnProperty'](_0x162a('0x3d'))){_0x4e2dbd['limit']=qs['limit'](_0x3e83c6[_0x162a('0x36')][_0x162a('0x1f')]);_0x4e2dbd[_0x162a('0x1d')]=qs[_0x162a('0x1d')](_0x3e83c6['query'][_0x162a('0x1d')]);}return _0x27ab09['getSubjects'](_0x4e2dbd);}})['then'](function(_0x2b9e04){if(_0x2b9e04){return _0x2b9e04?{'count':_0x4948d3,'rows':_0x2b9e04}:null;}})['then'](respondWithResult(_0x5d87c2,null))[_0x162a('0x4a')](handleError(_0x5d87c2,null));};exports[_0x162a('0x55')]=function(_0x409e0d,_0x220ee3,_0x39bb05){var _0x1ccc3e={};var _0x447757={};var _0x5b2499;var _0xfd6077;return db[_0x162a('0x30')][_0x162a('0x52')]({'where':{'id':_0x409e0d[_0x162a('0x4c')]['id']}})[_0x162a('0x28')](handleEntityNotFound(_0x220ee3,null))['then'](function(_0x3493e5){if(_0x3493e5){_0x5b2499=_0x3493e5;_0x447757[_0x162a('0x35')]=_[_0x162a('0x37')](db[_0x162a('0x53')]['rawAttributes']);_0x447757[_0x162a('0x36')]=_[_0x162a('0x37')](_0x409e0d[_0x162a('0x36')]);_0x447757[_0x162a('0x41')]=_['intersection'](_0x447757['model'],_0x447757[_0x162a('0x36')]);_0x1ccc3e[_0x162a('0x3a')]=_[_0x162a('0x38')](_0x447757[_0x162a('0x35')],qs[_0x162a('0x39')](_0x409e0d['query'][_0x162a('0x39')]));_0x1ccc3e[_0x162a('0x3a')]=_0x1ccc3e['attributes'][_0x162a('0x3b')]?_0x1ccc3e['attributes']:_0x447757[_0x162a('0x35')];_0x1ccc3e[_0x162a('0x3e')]=qs[_0x162a('0x3f')](_0x409e0d['query'][_0x162a('0x3f')]);_0x1ccc3e[_0x162a('0x40')]=qs['filters'](_[_0x162a('0x42')](_0x409e0d['query'],_0x447757[_0x162a('0x41')]));if(_0x409e0d[_0x162a('0x36')][_0x162a('0x43')]){_0x1ccc3e[_0x162a('0x40')]=_[_0x162a('0x44')](_0x1ccc3e['where'],{'$or':_[_0x162a('0x2f')](_0x1ccc3e[_0x162a('0x3a')],function(_0x2d2584){var _0x28dbf2={};_0x28dbf2[_0x2d2584]={'$like':'%'+_0x409e0d[_0x162a('0x36')][_0x162a('0x43')]+'%'};return _0x28dbf2;})});}_0x1ccc3e=_[_0x162a('0x44')]({},_0x1ccc3e,_0x409e0d['options']);return _0x5b2499[_0x162a('0x55')](_0x1ccc3e);}})[_0x162a('0x28')](function(_0x3de3c0){if(_0x3de3c0){_0xfd6077=_0x3de3c0[_0x162a('0x3b')];if(!_0x409e0d[_0x162a('0x36')]['hasOwnProperty'](_0x162a('0x3d'))){_0x1ccc3e[_0x162a('0x1f')]=qs[_0x162a('0x1f')](_0x409e0d[_0x162a('0x36')][_0x162a('0x1f')]);_0x1ccc3e[_0x162a('0x1d')]=qs[_0x162a('0x1d')](_0x409e0d[_0x162a('0x36')][_0x162a('0x1d')]);}return _0x5b2499['getDescriptions'](_0x1ccc3e);}})[_0x162a('0x28')](function(_0x22212b){if(_0x22212b){return _0x22212b?{'count':_0xfd6077,'rows':_0x22212b}:null;}})[_0x162a('0x28')](respondWithResult(_0x220ee3,null))['catch'](handleError(_0x220ee3,null));};exports[_0x162a('0x56')]=function(_0x15b60f,_0x2ca870,_0x5675fb){var _0x56f256={};var _0x5714b3={};var _0x4d19f6;var _0x318a83;return db[_0x162a('0x30')]['findOne']({'where':{'id':_0x15b60f[_0x162a('0x4c')]['id']}})[_0x162a('0x28')](handleEntityNotFound(_0x2ca870,null))[_0x162a('0x28')](function(_0x1d55f1){if(_0x1d55f1){_0x4d19f6=_0x1d55f1;_0x5714b3[_0x162a('0x35')]=_[_0x162a('0x37')](db[_0x162a('0x57')][_0x162a('0x31')]);_0x5714b3[_0x162a('0x36')]=_[_0x162a('0x37')](_0x15b60f['query']);_0x5714b3['filters']=_['intersection'](_0x5714b3[_0x162a('0x35')],_0x5714b3['query']);_0x56f256[_0x162a('0x3a')]=_['intersection'](_0x5714b3['model'],qs['fields'](_0x15b60f['query'][_0x162a('0x39')]));_0x56f256[_0x162a('0x3a')]=_0x56f256[_0x162a('0x3a')]['length']?_0x56f256['attributes']:_0x5714b3['model'];_0x56f256[_0x162a('0x3e')]=qs[_0x162a('0x3f')](_0x15b60f['query']['sort']);_0x56f256[_0x162a('0x40')]=qs['filters'](_['pick'](_0x15b60f[_0x162a('0x36')],_0x5714b3[_0x162a('0x41')]));if(_0x15b60f[_0x162a('0x36')][_0x162a('0x43')]){_0x56f256[_0x162a('0x40')]=_['merge'](_0x56f256[_0x162a('0x40')],{'$or':_[_0x162a('0x2f')](_0x56f256[_0x162a('0x3a')],function(_0x377679){var _0x165026={};_0x165026[_0x377679]={'$like':'%'+_0x15b60f[_0x162a('0x36')][_0x162a('0x43')]+'%'};return _0x165026;})});}_0x56f256=_[_0x162a('0x44')]({},_0x56f256,_0x15b60f[_0x162a('0x4d')]);return _0x4d19f6[_0x162a('0x56')](_0x56f256);}})[_0x162a('0x28')](function(_0x7f0d89){if(_0x7f0d89){_0x318a83=_0x7f0d89[_0x162a('0x3b')];if(!_0x15b60f[_0x162a('0x36')][_0x162a('0x3c')]('nolimit')){_0x56f256['limit']=qs[_0x162a('0x1f')](_0x15b60f[_0x162a('0x36')]['limit']);_0x56f256[_0x162a('0x1d')]=qs[_0x162a('0x1d')](_0x15b60f['query']['offset']);}return _0x4d19f6['getTags'](_0x56f256);}})[_0x162a('0x28')](function(_0xc7dfa7){if(_0xc7dfa7){return _0xc7dfa7?{'count':_0x318a83,'rows':_0xc7dfa7}:null;}})[_0x162a('0x28')](respondWithResult(_0x2ca870,null))[_0x162a('0x4a')](handleError(_0x2ca870,null));};exports['setTags']=function(_0x1872d4,_0x3594b3,_0x4735a3){if(_0x1872d4['body']['id']){delete _0x1872d4[_0x162a('0x50')]['id'];}return db['FreshdeskConfiguration']['findOne']({'where':{'id':_0x1872d4[_0x162a('0x4c')]['id']}})[_0x162a('0x28')](handleEntityNotFound(_0x3594b3,null))[_0x162a('0x28')](function(_0x2a6c77){if(_0x2a6c77){return _0x2a6c77[_0x162a('0x58')](_0x1872d4['body']['ids']||[]);}return null;})[_0x162a('0x28')](respondWithResult(_0x3594b3,null))[_0x162a('0x4a')](handleError(_0x3594b3,null));};
\ No newline at end of file
index e797df2..fe31f22 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf80b=['bluebird','request-promise','rimraf','../../config/environment','./intFreshdeskConfiguration.attributes','exports','define','FreshdeskConfiguration','lodash','util','../../config/logger','api','moment'];(function(_0x212c62,_0x140dc1){var _0x910b4d=function(_0x23d74a){while(--_0x23d74a){_0x212c62['push'](_0x212c62['shift']());}};_0x910b4d(++_0x140dc1);}(_0xf80b,0x181));var _0xbf80=function(_0x25da3f,_0x424773){_0x25da3f=_0x25da3f-0x0;var _0x1340b5=_0xf80b[_0x25da3f];return _0x1340b5;};'use strict';var _=require(_0xbf80('0x0'));var util=require(_0xbf80('0x1'));var logger=require(_0xbf80('0x2'))(_0xbf80('0x3'));var moment=require(_0xbf80('0x4'));var BPromise=require(_0xbf80('0x5'));var rp=require(_0xbf80('0x6'));var fs=require('fs');var path=require('path');var rimraf=require(_0xbf80('0x7'));var config=require(_0xbf80('0x8'));var attributes=require(_0xbf80('0x9'));module[_0xbf80('0xa')]=function(_0x3d16f0,_0x4b00a7){return _0x3d16f0[_0xbf80('0xb')](_0xbf80('0xc'),attributes,{'tableName':'int_freshdesk_configurations','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x068b=['api','moment','bluebird','request-promise','path','rimraf','./intFreshdeskConfiguration.attributes','exports','define','FreshdeskConfiguration','int_freshdesk_configurations','../../config/logger'];(function(_0x46b938,_0x585ae3){var _0x30cc2e=function(_0x584a57){while(--_0x584a57){_0x46b938['push'](_0x46b938['shift']());}};_0x30cc2e(++_0x585ae3);}(_0x068b,0x1bb));var _0xb068=function(_0x5456f0,_0x3919aa){_0x5456f0=_0x5456f0-0x0;var _0xefec2d=_0x068b[_0x5456f0];return _0xefec2d;};'use strict';var _=require('lodash');var util=require('util');var logger=require(_0xb068('0x0'))(_0xb068('0x1'));var moment=require(_0xb068('0x2'));var BPromise=require(_0xb068('0x3'));var rp=require(_0xb068('0x4'));var fs=require('fs');var path=require(_0xb068('0x5'));var rimraf=require(_0xb068('0x6'));var config=require('../../config/environment');var attributes=require(_0xb068('0x7'));module[_0xb068('0x8')]=function(_0x5994db,_0x3d936d){return _0x5994db[_0xb068('0x9')](_0xb068('0xa'),attributes,{'tableName':_0xb068('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 558fd90..b071219 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x71c1=['../../config/utils','../../config/logger','rpc','jayson/promise','client','http','request','then','debug','FreshdeskConfiguration,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','code','FreshdeskConfiguration,\x20%s,\x20%s','message','info','catch','lodash','util','moment','randomstring','ioredis','../../mysqldb'];(function(_0x5dfb47,_0x5b158c){var _0x48c85a=function(_0x5d9ccf){while(--_0x5d9ccf){_0x5dfb47['push'](_0x5dfb47['shift']());}};_0x48c85a(++_0x5b158c);}(_0x71c1,0x132));var _0x171c=function(_0x4e1f50,_0x59a9a6){_0x4e1f50=_0x4e1f50-0x0;var _0x49be89=_0x71c1[_0x4e1f50];return _0x49be89;};'use strict';var _=require(_0x171c('0x0'));var util=require(_0x171c('0x1'));var moment=require(_0x171c('0x2'));var BPromise=require('bluebird');var rs=require(_0x171c('0x3'));var fs=require('fs');var Redis=require(_0x171c('0x4'));var db=require(_0x171c('0x5'))['db'];var utils=require(_0x171c('0x6'));var logger=require(_0x171c('0x7'))(_0x171c('0x8'));var config=require('../../config/environment');var jayson=require(_0x171c('0x9'));var client=jayson[_0x171c('0xa')][_0x171c('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x4953d9,_0x50413c,_0x1de1f3){return new BPromise(function(_0x355653,_0x2b7c8b){return client[_0x171c('0xc')](_0x4953d9,_0x1de1f3)[_0x171c('0xd')](function(_0x3d7c3a){logger['info']('FreshdeskConfiguration,\x20%s,\x20%s',_0x50413c,'request\x20sent');logger[_0x171c('0xe')](_0x171c('0xf'),_0x50413c,_0x171c('0x10'),JSON[_0x171c('0x11')](_0x3d7c3a));if(_0x3d7c3a[_0x171c('0x12')]){if(_0x3d7c3a['error'][_0x171c('0x13')]===0x1f4){logger[_0x171c('0x12')](_0x171c('0x14'),_0x50413c,_0x3d7c3a[_0x171c('0x12')]['message']);return _0x2b7c8b(_0x3d7c3a[_0x171c('0x12')][_0x171c('0x15')]);}logger[_0x171c('0x12')](_0x171c('0x14'),_0x50413c,_0x3d7c3a[_0x171c('0x12')][_0x171c('0x15')]);return _0x355653(_0x3d7c3a[_0x171c('0x12')]['message']);}else{logger[_0x171c('0x16')](_0x171c('0x14'),_0x50413c,'request\x20sent');_0x355653(_0x3d7c3a['result'][_0x171c('0x15')]);}})[_0x171c('0x17')](function(_0x59ac52){logger[_0x171c('0x12')](_0x171c('0x14'),_0x50413c,_0x59ac52);_0x2b7c8b(_0x59ac52);});});}
\ No newline at end of file
+var _0xcc7f=['message','catch','lodash','bluebird','ioredis','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','request','then','info','request\x20sent','FreshdeskConfiguration,\x20%s,\x20%s,\x20%s','stringify','error','code','FreshdeskConfiguration,\x20%s,\x20%s'];(function(_0x1794b7,_0x2e85b3){var _0x3bb3d2=function(_0x40f80e){while(--_0x40f80e){_0x1794b7['push'](_0x1794b7['shift']());}};_0x3bb3d2(++_0x2e85b3);}(_0xcc7f,0x13d));var _0xfcc7=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0xcc7f[_0x3dd15e];return _0x231fd0;};'use strict';var _=require(_0xfcc7('0x0'));var util=require('util');var moment=require('moment');var BPromise=require(_0xfcc7('0x1'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0xfcc7('0x2'));var db=require('../../mysqldb')['db'];var utils=require(_0xfcc7('0x3'));var logger=require(_0xfcc7('0x4'))(_0xfcc7('0x5'));var config=require(_0xfcc7('0x6'));var jayson=require(_0xfcc7('0x7'));var client=jayson[_0xfcc7('0x8')][_0xfcc7('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x4e8d49,_0x1dc221,_0x342c08){return new BPromise(function(_0x5e0bb6,_0x12296c){return client[_0xfcc7('0xa')](_0x4e8d49,_0x342c08)[_0xfcc7('0xb')](function(_0x39f613){logger[_0xfcc7('0xc')]('FreshdeskConfiguration,\x20%s,\x20%s',_0x1dc221,_0xfcc7('0xd'));logger['debug'](_0xfcc7('0xe'),_0x1dc221,_0xfcc7('0xd'),JSON[_0xfcc7('0xf')](_0x39f613));if(_0x39f613[_0xfcc7('0x10')]){if(_0x39f613[_0xfcc7('0x10')][_0xfcc7('0x11')]===0x1f4){logger[_0xfcc7('0x10')](_0xfcc7('0x12'),_0x1dc221,_0x39f613['error'][_0xfcc7('0x13')]);return _0x12296c(_0x39f613[_0xfcc7('0x10')][_0xfcc7('0x13')]);}logger[_0xfcc7('0x10')](_0xfcc7('0x12'),_0x1dc221,_0x39f613[_0xfcc7('0x10')]['message']);return _0x5e0bb6(_0x39f613[_0xfcc7('0x10')][_0xfcc7('0x13')]);}else{logger[_0xfcc7('0xc')](_0xfcc7('0x12'),_0x1dc221,_0xfcc7('0xd'));_0x5e0bb6(_0x39f613['result'][_0xfcc7('0x13')]);}})[_0xfcc7('0x14')](function(_0x3f9a44){logger[_0xfcc7('0x10')](_0xfcc7('0x12'),_0x1dc221,_0x3f9a44);_0x12296c(_0x3f9a44);});});}
\ No newline at end of file
index f286d9d..5444c2b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0de5=['exports','util','path','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','./intFreshdeskField.controller','get','/:id','isAuthenticated','post','create','update','delete','destroy'];(function(_0x40220a,_0x22feb1){var _0x3903cc=function(_0x33a296){while(--_0x33a296){_0x40220a['push'](_0x40220a['shift']());}};_0x3903cc(++_0x22feb1);}(_0x0de5,0x188));var _0x50de=function(_0x5e5efc,_0x49a59f){_0x5e5efc=_0x5e5efc-0x0;var _0x1e9377=_0x0de5[_0x5e5efc];return _0x1e9377;};'use strict';var multer=require('multer');var util=require(_0x50de('0x0'));var path=require(_0x50de('0x1'));var timeout=require('connect-timeout');var express=require(_0x50de('0x2'));var router=express[_0x50de('0x3')]();var fs_extra=require(_0x50de('0x4'));var auth=require(_0x50de('0x5'));var interaction=require(_0x50de('0x6'));var config=require('../../config/environment');var controller=require(_0x50de('0x7'));router['get']('/',auth['isAuthenticated'](),controller['index']);router[_0x50de('0x8')](_0x50de('0x9'),auth[_0x50de('0xa')](),controller['show']);router[_0x50de('0xb')]('/',auth[_0x50de('0xa')](),controller[_0x50de('0xc')]);router['put'](_0x50de('0x9'),auth[_0x50de('0xa')](),controller[_0x50de('0xd')]);router[_0x50de('0xe')](_0x50de('0x9'),auth[_0x50de('0xa')](),controller[_0x50de('0xf')]);module[_0x50de('0x10')]=router;
\ No newline at end of file
+var _0x532a=['util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../config/environment','get','isAuthenticated','index','/:id','show','post','create','put','update','delete','destroy','exports','multer'];(function(_0x322ff3,_0x4c91bc){var _0x3e6830=function(_0x2786ac){while(--_0x2786ac){_0x322ff3['push'](_0x322ff3['shift']());}};_0x3e6830(++_0x4c91bc);}(_0x532a,0x7d));var _0xa532=function(_0x2db45e,_0x3c3b37){_0x2db45e=_0x2db45e-0x0;var _0x200a5=_0x532a[_0x2db45e];return _0x200a5;};'use strict';var multer=require(_0xa532('0x0'));var util=require(_0xa532('0x1'));var path=require(_0xa532('0x2'));var timeout=require(_0xa532('0x3'));var express=require(_0xa532('0x4'));var router=express[_0xa532('0x5')]();var fs_extra=require(_0xa532('0x6'));var auth=require(_0xa532('0x7'));var interaction=require('../../components/interaction/service');var config=require(_0xa532('0x8'));var controller=require('./intFreshdeskField.controller');router[_0xa532('0x9')]('/',auth[_0xa532('0xa')](),controller[_0xa532('0xb')]);router[_0xa532('0x9')](_0xa532('0xc'),auth[_0xa532('0xa')](),controller[_0xa532('0xd')]);router[_0xa532('0xe')]('/',auth['isAuthenticated'](),controller[_0xa532('0xf')]);router[_0xa532('0x10')](_0xa532('0xc'),auth[_0xa532('0xa')](),controller[_0xa532('0x11')]);router[_0xa532('0x12')](_0xa532('0xc'),auth[_0xa532('0xa')](),controller[_0xa532('0x13')]);module[_0xa532('0x14')]=router;
\ No newline at end of file
index 4c145cf..47f01ce 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf12f=['exports','ENUM','string','variable','customVariable','keyValue','picklist','STRING','BOOLEAN','sequelize'];(function(_0x287322,_0x146878){var _0x2b8e8b=function(_0x24b063){while(--_0x24b063){_0x287322['push'](_0x287322['shift']());}};_0x2b8e8b(++_0x146878);}(_0xf12f,0x1e9));var _0xff12=function(_0x19980f,_0x37638b){_0x19980f=_0x19980f-0x0;var _0x47131b=_0xf12f[_0x19980f];return _0x47131b;};'use strict';var Sequelize=require(_0xff12('0x0'));module[_0xff12('0x1')]={'type':{'type':Sequelize[_0xff12('0x2')](_0xff12('0x3'),_0xff12('0x4'),_0xff12('0x5'),_0xff12('0x6'),_0xff12('0x7')),'defaultValue':_0xff12('0x3')},'content':{'type':Sequelize[_0xff12('0x8')]},'key':{'type':Sequelize[_0xff12('0x8')]},'keyType':{'type':Sequelize[_0xff12('0x2')](_0xff12('0x3'),'variable',_0xff12('0x5'))},'keyContent':{'type':Sequelize[_0xff12('0x8')]},'idField':{'type':Sequelize['STRING']},'nameField':{'type':Sequelize[_0xff12('0x8')]},'customField':{'type':Sequelize[_0xff12('0x9')],'defaultValue':!![]},'variableName':{'type':Sequelize[_0xff12('0x8')]}};
\ No newline at end of file
+var _0xeefa=['sequelize','ENUM','string','variable','customVariable','keyValue','picklist','STRING','BOOLEAN'];(function(_0x5a0e1d,_0x261edc){var _0x320dc0=function(_0x2fef8a){while(--_0x2fef8a){_0x5a0e1d['push'](_0x5a0e1d['shift']());}};_0x320dc0(++_0x261edc);}(_0xeefa,0xfc));var _0xaeef=function(_0x1b2a7f,_0x5a4df3){_0x1b2a7f=_0x1b2a7f-0x0;var _0xd058f0=_0xeefa[_0x1b2a7f];return _0xd058f0;};'use strict';var Sequelize=require(_0xaeef('0x0'));module['exports']={'type':{'type':Sequelize[_0xaeef('0x1')](_0xaeef('0x2'),_0xaeef('0x3'),_0xaeef('0x4'),_0xaeef('0x5'),_0xaeef('0x6')),'defaultValue':_0xaeef('0x2')},'content':{'type':Sequelize[_0xaeef('0x7')]},'key':{'type':Sequelize[_0xaeef('0x7')]},'keyType':{'type':Sequelize['ENUM'](_0xaeef('0x2'),_0xaeef('0x3'),'customVariable')},'keyContent':{'type':Sequelize['STRING']},'idField':{'type':Sequelize['STRING']},'nameField':{'type':Sequelize['STRING']},'customField':{'type':Sequelize[_0xaeef('0x8')],'defaultValue':!![]},'variableName':{'type':Sequelize[_0xaeef('0x7')]}};
\ No newline at end of file
index 2d725c8..21838be 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xcecc=['end','offset','undefined','limit','set','Content-Range','json','apply','save','update','then','destroy','name','send','index','map','fieldName','key','model','keys','query','filters','intersection','attributes','fields','length','nolimit','sort','where','filter','merge','type','options','count','FreshdeskField','findAll','rows','catch','rawAttributes','includeAll','include','find','create','body','params','eml-format','zip-dir','moment','bluebird','mustache','util','to-csv','fs-extra','lodash','squel','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','../../config/logger','api','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status'];(function(_0x1fa6b3,_0x52459c){var _0x200e8c=function(_0x1e8c24){while(--_0x1e8c24){_0x1fa6b3['push'](_0x1fa6b3['shift']());}};_0x200e8c(++_0x52459c);}(_0xcecc,0x186));var _0xccec=function(_0x2dab7e,_0x630102){_0x2dab7e=_0x2dab7e-0x0;var _0x35a163=_0xcecc[_0x2dab7e];return _0x35a163;};'use strict';var emlformat=require(_0xccec('0x0'));var rimraf=require('rimraf');var zipdir=require(_0xccec('0x1'));var jsonpatch=require('fast-json-patch');var rp=require('request-promise');var moment=require(_0xccec('0x2'));var BPromise=require(_0xccec('0x3'));var Mustache=require(_0xccec('0x4'));var util=require(_0xccec('0x5'));var path=require('path');var sox=require('sox');var csv=require(_0xccec('0x6'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0xccec('0x7'));var _=require(_0xccec('0x8'));var squel=require(_0xccec('0x9'));var crypto=require('crypto');var jsforce=require(_0xccec('0xa'));var deskjs=require(_0xccec('0xb'));var toCsv=require('to-csv');var querystring=require(_0xccec('0xc'));var Papa=require(_0xccec('0xd'));var Redis=require(_0xccec('0xe'));var authService=require(_0xccec('0xf'));var qs=require('../../components/parsers/qs');var as=require(_0xccec('0x10'));var hardwareService=require('../../config/license/hardware');var logger=require(_0xccec('0x11'))(_0xccec('0x12'));var utils=require('../../config/utils');var config=require(_0xccec('0x13'));var licenseUtil=require(_0xccec('0x14'));var db=require(_0xccec('0x15'))['db'];function respondWithStatusCode(_0x5ad07a,_0x349054){_0x349054=_0x349054||0xcc;return function(_0x2ac888){if(_0x2ac888){return _0x5ad07a[_0xccec('0x16')](_0x349054);}return _0x5ad07a[_0xccec('0x17')](_0x349054)[_0xccec('0x18')]();};}function respondWithResult(_0x4b4c3d,_0x2882d9){_0x2882d9=_0x2882d9||0xc8;return function(_0x566a81){if(_0x566a81){return _0x4b4c3d['status'](_0x2882d9)['json'](_0x566a81);}};}function respondWithFilteredResult(_0x8ff6a6,_0x3482d4){return function(_0x18e7d0){if(_0x18e7d0){var _0x69a776=typeof _0x3482d4[_0xccec('0x19')]===_0xccec('0x1a')&&typeof _0x3482d4[_0xccec('0x1b')]===_0xccec('0x1a');var _0x199e52=_0x18e7d0['count'];var _0x518016=_0x69a776?0x0:_0x3482d4['offset'];var _0x970c66=_0x69a776?_0x18e7d0['count']:_0x3482d4[_0xccec('0x19')]+_0x3482d4[_0xccec('0x1b')];var _0x88741b;if(_0x970c66>=_0x199e52){_0x970c66=_0x199e52;_0x88741b=0xc8;}else{_0x88741b=0xce;}_0x8ff6a6['status'](_0x88741b);return _0x8ff6a6[_0xccec('0x1c')](_0xccec('0x1d'),_0x518016+'-'+_0x970c66+'/'+_0x199e52)[_0xccec('0x1e')](_0x18e7d0);}return null;};}function patchUpdates(_0x4a7f08){return function(_0x2fedff){try{jsonpatch[_0xccec('0x1f')](_0x2fedff,_0x4a7f08,!![]);}catch(_0x2163e7){return BPromise['reject'](_0x2163e7);}return _0x2fedff[_0xccec('0x20')]();};}function saveUpdates(_0x57c27c,_0x9065a3){return function(_0x4b2666){if(_0x4b2666){return _0x4b2666[_0xccec('0x21')](_0x57c27c)[_0xccec('0x22')](function(_0x312da0){return _0x312da0;});}return null;};}function removeEntity(_0x50794d,_0x3d83e1){return function(_0x6be7ac){if(_0x6be7ac){return _0x6be7ac[_0xccec('0x23')]()[_0xccec('0x22')](function(){_0x50794d[_0xccec('0x17')](0xcc)['end']();});}};}function handleEntityNotFound(_0x44bc44,_0xb0b0da){return function(_0x2d8fa0){if(!_0x2d8fa0){_0x44bc44[_0xccec('0x16')](0x194);}return _0x2d8fa0;};}function handleError(_0x4c8dbe,_0x27b541){_0x27b541=_0x27b541||0x1f4;return function(_0x52ddd7){logger['error'](_0x52ddd7['stack']);if(_0x52ddd7[_0xccec('0x24')]){delete _0x52ddd7[_0xccec('0x24')];}_0x4c8dbe[_0xccec('0x17')](_0x27b541)[_0xccec('0x25')](_0x52ddd7);};}exports[_0xccec('0x26')]=function(_0x3e8557,_0x3ca9c7){var _0x59bb66={},_0x11085d={},_0x5ee7c1={'count':0x0,'rows':[]};var _0x23e324=_[_0xccec('0x27')](db['FreshdeskField']['rawAttributes'],function(_0x1e93e3){return{'name':_0x1e93e3[_0xccec('0x28')],'type':_0x1e93e3['type'][_0xccec('0x29')]};});_0x11085d[_0xccec('0x2a')]=_[_0xccec('0x27')](_0x23e324,_0xccec('0x24'));_0x11085d['query']=_[_0xccec('0x2b')](_0x3e8557[_0xccec('0x2c')]);_0x11085d[_0xccec('0x2d')]=_[_0xccec('0x2e')](_0x11085d[_0xccec('0x2a')],_0x11085d[_0xccec('0x2c')]);_0x59bb66[_0xccec('0x2f')]=_[_0xccec('0x2e')](_0x11085d['model'],qs[_0xccec('0x30')](_0x3e8557[_0xccec('0x2c')][_0xccec('0x30')]));_0x59bb66['attributes']=_0x59bb66['attributes'][_0xccec('0x31')]?_0x59bb66[_0xccec('0x2f')]:_0x11085d[_0xccec('0x2a')];if(!_0x3e8557[_0xccec('0x2c')]['hasOwnProperty'](_0xccec('0x32'))){_0x59bb66['limit']=qs['limit'](_0x3e8557[_0xccec('0x2c')][_0xccec('0x1b')]);_0x59bb66[_0xccec('0x19')]=qs[_0xccec('0x19')](_0x3e8557[_0xccec('0x2c')][_0xccec('0x19')]);}_0x59bb66['order']=qs['sort'](_0x3e8557[_0xccec('0x2c')][_0xccec('0x33')]);_0x59bb66[_0xccec('0x34')]=qs[_0xccec('0x2d')](_['pick'](_0x3e8557[_0xccec('0x2c')],_0x11085d['filters']),_0x23e324);if(_0x3e8557[_0xccec('0x2c')][_0xccec('0x35')]){_0x59bb66[_0xccec('0x34')]=_[_0xccec('0x36')](_0x59bb66[_0xccec('0x34')],{'$or':_['map'](_0x23e324,function(_0x2a3a54){if(_0x2a3a54[_0xccec('0x37')]!=='VIRTUAL'){var _0x3ce4ee={};_0x3ce4ee[_0x2a3a54[_0xccec('0x24')]]={'$like':'%'+_0x3e8557[_0xccec('0x2c')][_0xccec('0x35')]+'%'};return _0x3ce4ee;}})});}_0x59bb66=_['merge']({},_0x59bb66,_0x3e8557[_0xccec('0x38')]);var _0x1526ca={'where':_0x59bb66[_0xccec('0x34')]};return db['FreshdeskField'][_0xccec('0x39')](_0x1526ca)['then'](function(_0x256e9b){_0x5ee7c1[_0xccec('0x39')]=_0x256e9b;if(_0x3e8557[_0xccec('0x2c')]['includeAll']){_0x59bb66['include']=[{'all':!![]}];}return db[_0xccec('0x3a')][_0xccec('0x3b')](_0x59bb66);})[_0xccec('0x22')](function(_0x4c0184){_0x5ee7c1[_0xccec('0x3c')]=_0x4c0184;return _0x5ee7c1;})[_0xccec('0x22')](respondWithFilteredResult(_0x3ca9c7,_0x59bb66))[_0xccec('0x3d')](handleError(_0x3ca9c7,null));};exports['show']=function(_0x720b56,_0x3b0472){var _0x262e25={'raw':!![],'where':{'id':_0x720b56['params']['id']}},_0x1dfd34={};_0x1dfd34['model']=_[_0xccec('0x2b')](db[_0xccec('0x3a')][_0xccec('0x3e')]);_0x1dfd34['query']=_[_0xccec('0x2b')](_0x720b56[_0xccec('0x2c')]);_0x1dfd34[_0xccec('0x2d')]=_[_0xccec('0x2e')](_0x1dfd34[_0xccec('0x2a')],_0x1dfd34[_0xccec('0x2c')]);_0x262e25['attributes']=_[_0xccec('0x2e')](_0x1dfd34[_0xccec('0x2a')],qs[_0xccec('0x30')](_0x720b56[_0xccec('0x2c')][_0xccec('0x30')]));_0x262e25[_0xccec('0x2f')]=_0x262e25[_0xccec('0x2f')][_0xccec('0x31')]?_0x262e25['attributes']:_0x1dfd34[_0xccec('0x2a')];if(_0x720b56[_0xccec('0x2c')][_0xccec('0x3f')]){_0x262e25[_0xccec('0x40')]=[{'all':!![]}];}_0x262e25=_['merge']({},_0x262e25,_0x720b56[_0xccec('0x38')]);return db[_0xccec('0x3a')][_0xccec('0x41')](_0x262e25)['then'](handleEntityNotFound(_0x3b0472,null))[_0xccec('0x22')](respondWithResult(_0x3b0472,null))['catch'](handleError(_0x3b0472,null));};exports[_0xccec('0x42')]=function(_0xa6ef39,_0x1f6de7){return db['FreshdeskField'][_0xccec('0x42')](_0xa6ef39[_0xccec('0x43')],{})[_0xccec('0x22')](respondWithResult(_0x1f6de7,0xc9))['catch'](handleError(_0x1f6de7,null));};exports[_0xccec('0x21')]=function(_0x28064b,_0x25c627){if(_0x28064b[_0xccec('0x43')]['id']){delete _0x28064b[_0xccec('0x43')]['id'];}return db['FreshdeskField']['find']({'where':{'id':_0x28064b['params']['id']}})[_0xccec('0x22')](handleEntityNotFound(_0x25c627,null))[_0xccec('0x22')](saveUpdates(_0x28064b[_0xccec('0x43')],null))[_0xccec('0x22')](respondWithResult(_0x25c627,null))[_0xccec('0x3d')](handleError(_0x25c627,null));};exports[_0xccec('0x23')]=function(_0x5b4826,_0x1ddc01){return db['FreshdeskField'][_0xccec('0x41')]({'where':{'id':_0x5b4826[_0xccec('0x44')]['id']}})['then'](handleEntityNotFound(_0x1ddc01,null))[_0xccec('0x22')](removeEntity(_0x1ddc01,null))[_0xccec('0x3d')](handleError(_0x1ddc01,null));};
\ No newline at end of file
+var _0x1d2d=['where','pick','filter','merge','options','FreshdeskField','includeAll','findAll','catch','show','params','include','find','create','body','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','bluebird','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/logger','api','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','json','offset','undefined','limit','count','set','apply','save','then','destroy','error','stack','name','send','index','map','rawAttributes','fieldName','key','model','query','keys','filters','intersection','attributes','fields','length','hasOwnProperty','order','sort'];(function(_0x2b3b71,_0x52ea8f){var _0x2539a4=function(_0x2901fa){while(--_0x2901fa){_0x2b3b71['push'](_0x2b3b71['shift']());}};_0x2539a4(++_0x52ea8f);}(_0x1d2d,0xf0));var _0xd1d2=function(_0x46956f,_0x2c07b1){_0x46956f=_0x46956f-0x0;var _0x56bece=_0x1d2d[_0x46956f];return _0x56bece;};'use strict';var emlformat=require(_0xd1d2('0x0'));var rimraf=require(_0xd1d2('0x1'));var zipdir=require(_0xd1d2('0x2'));var jsonpatch=require(_0xd1d2('0x3'));var rp=require(_0xd1d2('0x4'));var moment=require('moment');var BPromise=require(_0xd1d2('0x5'));var Mustache=require('mustache');var util=require('util');var path=require(_0xd1d2('0x6'));var sox=require(_0xd1d2('0x7'));var csv=require(_0xd1d2('0x8'));var ejs=require(_0xd1d2('0x9'));var fs=require('fs');var fs_extra=require(_0xd1d2('0xa'));var _=require(_0xd1d2('0xb'));var squel=require('squel');var crypto=require(_0xd1d2('0xc'));var jsforce=require(_0xd1d2('0xd'));var deskjs=require(_0xd1d2('0xe'));var toCsv=require(_0xd1d2('0x8'));var querystring=require(_0xd1d2('0xf'));var Papa=require(_0xd1d2('0x10'));var Redis=require(_0xd1d2('0x11'));var authService=require(_0xd1d2('0x12'));var qs=require(_0xd1d2('0x13'));var as=require(_0xd1d2('0x14'));var hardwareService=require(_0xd1d2('0x15'));var logger=require(_0xd1d2('0x16'))(_0xd1d2('0x17'));var utils=require('../../config/utils');var config=require(_0xd1d2('0x18'));var licenseUtil=require(_0xd1d2('0x19'));var db=require(_0xd1d2('0x1a'))['db'];function respondWithStatusCode(_0x33f088,_0x129d8f){_0x129d8f=_0x129d8f||0xcc;return function(_0xc3ee82){if(_0xc3ee82){return _0x33f088[_0xd1d2('0x1b')](_0x129d8f);}return _0x33f088[_0xd1d2('0x1c')](_0x129d8f)[_0xd1d2('0x1d')]();};}function respondWithResult(_0x3f670f,_0x4cf702){_0x4cf702=_0x4cf702||0xc8;return function(_0x2e7fec){if(_0x2e7fec){return _0x3f670f[_0xd1d2('0x1c')](_0x4cf702)[_0xd1d2('0x1e')](_0x2e7fec);}};}function respondWithFilteredResult(_0x56de25,_0x35381b){return function(_0xc36ce){if(_0xc36ce){var _0x208425=typeof _0x35381b[_0xd1d2('0x1f')]===_0xd1d2('0x20')&&typeof _0x35381b[_0xd1d2('0x21')]===_0xd1d2('0x20');var _0x57f2f9=_0xc36ce['count'];var _0x3be186=_0x208425?0x0:_0x35381b['offset'];var _0x247b3a=_0x208425?_0xc36ce[_0xd1d2('0x22')]:_0x35381b[_0xd1d2('0x1f')]+_0x35381b[_0xd1d2('0x21')];var _0x4ab386;if(_0x247b3a>=_0x57f2f9){_0x247b3a=_0x57f2f9;_0x4ab386=0xc8;}else{_0x4ab386=0xce;}_0x56de25['status'](_0x4ab386);return _0x56de25[_0xd1d2('0x23')]('Content-Range',_0x3be186+'-'+_0x247b3a+'/'+_0x57f2f9)['json'](_0xc36ce);}return null;};}function patchUpdates(_0x1ab67c){return function(_0x27e26b){try{jsonpatch[_0xd1d2('0x24')](_0x27e26b,_0x1ab67c,!![]);}catch(_0x40170b){return BPromise['reject'](_0x40170b);}return _0x27e26b[_0xd1d2('0x25')]();};}function saveUpdates(_0xbb4d27,_0x24b8db){return function(_0x4eb082){if(_0x4eb082){return _0x4eb082['update'](_0xbb4d27)[_0xd1d2('0x26')](function(_0x3a1078){return _0x3a1078;});}return null;};}function removeEntity(_0x19d535,_0x2f92ee){return function(_0x3f229c){if(_0x3f229c){return _0x3f229c[_0xd1d2('0x27')]()[_0xd1d2('0x26')](function(){_0x19d535['status'](0xcc)[_0xd1d2('0x1d')]();});}};}function handleEntityNotFound(_0x42da6d,_0x41330f){return function(_0x2e1709){if(!_0x2e1709){_0x42da6d[_0xd1d2('0x1b')](0x194);}return _0x2e1709;};}function handleError(_0x39e991,_0x28b8be){_0x28b8be=_0x28b8be||0x1f4;return function(_0x34faf7){logger[_0xd1d2('0x28')](_0x34faf7[_0xd1d2('0x29')]);if(_0x34faf7[_0xd1d2('0x2a')]){delete _0x34faf7['name'];}_0x39e991['status'](_0x28b8be)[_0xd1d2('0x2b')](_0x34faf7);};}exports[_0xd1d2('0x2c')]=function(_0x1e6072,_0x2b4c1f){var _0xc815ea={},_0x48ade1={},_0x39d694={'count':0x0,'rows':[]};var _0x41171c=_[_0xd1d2('0x2d')](db['FreshdeskField'][_0xd1d2('0x2e')],function(_0x1db17f){return{'name':_0x1db17f[_0xd1d2('0x2f')],'type':_0x1db17f['type'][_0xd1d2('0x30')]};});_0x48ade1[_0xd1d2('0x31')]=_[_0xd1d2('0x2d')](_0x41171c,_0xd1d2('0x2a'));_0x48ade1[_0xd1d2('0x32')]=_[_0xd1d2('0x33')](_0x1e6072[_0xd1d2('0x32')]);_0x48ade1[_0xd1d2('0x34')]=_[_0xd1d2('0x35')](_0x48ade1[_0xd1d2('0x31')],_0x48ade1[_0xd1d2('0x32')]);_0xc815ea[_0xd1d2('0x36')]=_[_0xd1d2('0x35')](_0x48ade1[_0xd1d2('0x31')],qs[_0xd1d2('0x37')](_0x1e6072[_0xd1d2('0x32')][_0xd1d2('0x37')]));_0xc815ea[_0xd1d2('0x36')]=_0xc815ea['attributes'][_0xd1d2('0x38')]?_0xc815ea[_0xd1d2('0x36')]:_0x48ade1[_0xd1d2('0x31')];if(!_0x1e6072['query'][_0xd1d2('0x39')]('nolimit')){_0xc815ea['limit']=qs[_0xd1d2('0x21')](_0x1e6072[_0xd1d2('0x32')][_0xd1d2('0x21')]);_0xc815ea[_0xd1d2('0x1f')]=qs[_0xd1d2('0x1f')](_0x1e6072[_0xd1d2('0x32')]['offset']);}_0xc815ea[_0xd1d2('0x3a')]=qs[_0xd1d2('0x3b')](_0x1e6072['query'][_0xd1d2('0x3b')]);_0xc815ea[_0xd1d2('0x3c')]=qs[_0xd1d2('0x34')](_[_0xd1d2('0x3d')](_0x1e6072['query'],_0x48ade1['filters']),_0x41171c);if(_0x1e6072[_0xd1d2('0x32')]['filter']){_0xc815ea['where']=_['merge'](_0xc815ea[_0xd1d2('0x3c')],{'$or':_['map'](_0x41171c,function(_0x3f4fd7){if(_0x3f4fd7['type']!=='VIRTUAL'){var _0x4bcea4={};_0x4bcea4[_0x3f4fd7[_0xd1d2('0x2a')]]={'$like':'%'+_0x1e6072[_0xd1d2('0x32')][_0xd1d2('0x3e')]+'%'};return _0x4bcea4;}})});}_0xc815ea=_[_0xd1d2('0x3f')]({},_0xc815ea,_0x1e6072[_0xd1d2('0x40')]);var _0xb5bec2={'where':_0xc815ea[_0xd1d2('0x3c')]};return db[_0xd1d2('0x41')][_0xd1d2('0x22')](_0xb5bec2)[_0xd1d2('0x26')](function(_0x2cedb4){_0x39d694[_0xd1d2('0x22')]=_0x2cedb4;if(_0x1e6072[_0xd1d2('0x32')][_0xd1d2('0x42')]){_0xc815ea['include']=[{'all':!![]}];}return db['FreshdeskField'][_0xd1d2('0x43')](_0xc815ea);})[_0xd1d2('0x26')](function(_0x24fc93){_0x39d694['rows']=_0x24fc93;return _0x39d694;})['then'](respondWithFilteredResult(_0x2b4c1f,_0xc815ea))[_0xd1d2('0x44')](handleError(_0x2b4c1f,null));};exports[_0xd1d2('0x45')]=function(_0x4dc730,_0x2fe92a){var _0x4c5d49={'raw':!![],'where':{'id':_0x4dc730[_0xd1d2('0x46')]['id']}},_0x5a3790={};_0x5a3790['model']=_['keys'](db[_0xd1d2('0x41')][_0xd1d2('0x2e')]);_0x5a3790[_0xd1d2('0x32')]=_['keys'](_0x4dc730[_0xd1d2('0x32')]);_0x5a3790[_0xd1d2('0x34')]=_[_0xd1d2('0x35')](_0x5a3790[_0xd1d2('0x31')],_0x5a3790['query']);_0x4c5d49[_0xd1d2('0x36')]=_[_0xd1d2('0x35')](_0x5a3790['model'],qs[_0xd1d2('0x37')](_0x4dc730['query'][_0xd1d2('0x37')]));_0x4c5d49[_0xd1d2('0x36')]=_0x4c5d49[_0xd1d2('0x36')][_0xd1d2('0x38')]?_0x4c5d49[_0xd1d2('0x36')]:_0x5a3790['model'];if(_0x4dc730['query'][_0xd1d2('0x42')]){_0x4c5d49[_0xd1d2('0x47')]=[{'all':!![]}];}_0x4c5d49=_['merge']({},_0x4c5d49,_0x4dc730[_0xd1d2('0x40')]);return db[_0xd1d2('0x41')][_0xd1d2('0x48')](_0x4c5d49)[_0xd1d2('0x26')](handleEntityNotFound(_0x2fe92a,null))[_0xd1d2('0x26')](respondWithResult(_0x2fe92a,null))[_0xd1d2('0x44')](handleError(_0x2fe92a,null));};exports[_0xd1d2('0x49')]=function(_0x57c668,_0xed9e9){return db[_0xd1d2('0x41')]['create'](_0x57c668[_0xd1d2('0x4a')],{})[_0xd1d2('0x26')](respondWithResult(_0xed9e9,0xc9))['catch'](handleError(_0xed9e9,null));};exports['update']=function(_0x3d4fe3,_0x182ea8){if(_0x3d4fe3['body']['id']){delete _0x3d4fe3[_0xd1d2('0x4a')]['id'];}return db[_0xd1d2('0x41')][_0xd1d2('0x48')]({'where':{'id':_0x3d4fe3[_0xd1d2('0x46')]['id']}})[_0xd1d2('0x26')](handleEntityNotFound(_0x182ea8,null))['then'](saveUpdates(_0x3d4fe3['body'],null))[_0xd1d2('0x26')](respondWithResult(_0x182ea8,null))['catch'](handleError(_0x182ea8,null));};exports[_0xd1d2('0x27')]=function(_0xcd4b70,_0x4f4cb9){return db[_0xd1d2('0x41')][_0xd1d2('0x48')]({'where':{'id':_0xcd4b70['params']['id']}})['then'](handleEntityNotFound(_0x4f4cb9,null))[_0xd1d2('0x26')](removeEntity(_0x4f4cb9,null))[_0xd1d2('0x44')](handleError(_0x4f4cb9,null));};
\ No newline at end of file
index ac778f9..844373b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xaa3f=['rimraf','./intFreshdeskField.attributes','define','FreshdeskField','int_freshdesk_fields','FieldId','lodash','util','api','moment','path'];(function(_0x5078df,_0x32d323){var _0x4b9ee2=function(_0x2e11c2){while(--_0x2e11c2){_0x5078df['push'](_0x5078df['shift']());}};_0x4b9ee2(++_0x32d323);}(_0xaa3f,0x95));var _0xfaa3=function(_0x532964,_0x514ec7){_0x532964=_0x532964-0x0;var _0x23762a=_0xaa3f[_0x532964];return _0x23762a;};'use strict';var _=require(_0xfaa3('0x0'));var util=require(_0xfaa3('0x1'));var logger=require('../../config/logger')(_0xfaa3('0x2'));var moment=require(_0xfaa3('0x3'));var BPromise=require('bluebird');var rp=require('request-promise');var fs=require('fs');var path=require(_0xfaa3('0x4'));var rimraf=require(_0xfaa3('0x5'));var config=require('../../config/environment');var attributes=require(_0xfaa3('0x6'));module['exports']=function(_0x3f85e4,_0x5760ee){return _0x3f85e4[_0xfaa3('0x7')](_0xfaa3('0x8'),attributes,{'tableName':_0xfaa3('0x9'),'paranoid':![],'indexes':[{'name':'freshdesk_unique_index','fields':['idField',_0xfaa3('0xa')],'unique':!![]}],'timestamps':!![]});};
\ No newline at end of file
+var _0x3d3e=['FreshdeskField','int_freshdesk_fields','freshdesk_unique_index','idField','FieldId','lodash','util','../../config/logger','moment','bluebird','request-promise','path','./intFreshdeskField.attributes','define'];(function(_0xc162f9,_0x5a739c){var _0x3c1941=function(_0x38e822){while(--_0x38e822){_0xc162f9['push'](_0xc162f9['shift']());}};_0x3c1941(++_0x5a739c);}(_0x3d3e,0x155));var _0xe3d3=function(_0x51eb85,_0x535fea){_0x51eb85=_0x51eb85-0x0;var _0x40dc48=_0x3d3e[_0x51eb85];return _0x40dc48;};'use strict';var _=require(_0xe3d3('0x0'));var util=require(_0xe3d3('0x1'));var logger=require(_0xe3d3('0x2'))('api');var moment=require(_0xe3d3('0x3'));var BPromise=require(_0xe3d3('0x4'));var rp=require(_0xe3d3('0x5'));var fs=require('fs');var path=require(_0xe3d3('0x6'));var rimraf=require('rimraf');var config=require('../../config/environment');var attributes=require(_0xe3d3('0x7'));module['exports']=function(_0x512389,_0x3a5d73){return _0x512389[_0xe3d3('0x8')](_0xe3d3('0x9'),attributes,{'tableName':_0xe3d3('0xa'),'paranoid':![],'indexes':[{'name':_0xe3d3('0xb'),'fields':[_0xe3d3('0xc'),_0xe3d3('0xd')],'unique':!![]}],'timestamps':!![]});};
\ No newline at end of file
index 7edca75..40a6d04 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x237c=['../../config/utils','../../config/logger','rpc','jayson/promise','request','then','FreshdeskField,\x20%s,\x20%s','request\x20sent','debug','stringify','error','code','message','result','util','moment','bluebird','ioredis','../../mysqldb'];(function(_0x2d6f7a,_0x44988d){var _0x335977=function(_0x27be84){while(--_0x27be84){_0x2d6f7a['push'](_0x2d6f7a['shift']());}};_0x335977(++_0x44988d);}(_0x237c,0x1d6));var _0xc237=function(_0x43ba6d,_0x55fc7f){_0x43ba6d=_0x43ba6d-0x0;var _0x2f9502=_0x237c[_0x43ba6d];return _0x2f9502;};'use strict';var _=require('lodash');var util=require(_0xc237('0x0'));var moment=require(_0xc237('0x1'));var BPromise=require(_0xc237('0x2'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0xc237('0x3'));var db=require(_0xc237('0x4'))['db'];var utils=require(_0xc237('0x5'));var logger=require(_0xc237('0x6'))(_0xc237('0x7'));var config=require('../../config/environment');var jayson=require(_0xc237('0x8'));var client=jayson['client']['http']({'port':0x232a});function respondWithRpcPromise(_0x2eb1e9,_0x261590,_0x56399c){return new BPromise(function(_0x5129b0,_0x31400c){return client[_0xc237('0x9')](_0x2eb1e9,_0x56399c)[_0xc237('0xa')](function(_0x36999c){logger['info'](_0xc237('0xb'),_0x261590,_0xc237('0xc'));logger[_0xc237('0xd')]('FreshdeskField,\x20%s,\x20%s,\x20%s',_0x261590,_0xc237('0xc'),JSON[_0xc237('0xe')](_0x36999c));if(_0x36999c[_0xc237('0xf')]){if(_0x36999c[_0xc237('0xf')][_0xc237('0x10')]===0x1f4){logger['error']('FreshdeskField,\x20%s,\x20%s',_0x261590,_0x36999c[_0xc237('0xf')]['message']);return _0x31400c(_0x36999c[_0xc237('0xf')]['message']);}logger[_0xc237('0xf')](_0xc237('0xb'),_0x261590,_0x36999c['error'][_0xc237('0x11')]);return _0x5129b0(_0x36999c[_0xc237('0xf')]['message']);}else{logger['info'](_0xc237('0xb'),_0x261590,_0xc237('0xc'));_0x5129b0(_0x36999c[_0xc237('0x12')][_0xc237('0x11')]);}})['catch'](function(_0x420d91){logger[_0xc237('0xf')]('FreshdeskField,\x20%s,\x20%s',_0x261590,_0x420d91);_0x31400c(_0x420d91);});});}
\ No newline at end of file
+var _0x1596=['then','info','FreshdeskField,\x20%s,\x20%s','debug','FreshdeskField,\x20%s,\x20%s,\x20%s','request\x20sent','error','code','message','result','lodash','util','moment','bluebird','ioredis','../../mysqldb','../../config/utils','rpc','../../config/environment','jayson/promise','http'];(function(_0x1505e5,_0x5cc291){var _0x5b1dcd=function(_0x18bfe5){while(--_0x18bfe5){_0x1505e5['push'](_0x1505e5['shift']());}};_0x5b1dcd(++_0x5cc291);}(_0x1596,0x16f));var _0x6159=function(_0x4e676e,_0x2a7c6d){_0x4e676e=_0x4e676e-0x0;var _0x336a3c=_0x1596[_0x4e676e];return _0x336a3c;};'use strict';var _=require(_0x6159('0x0'));var util=require(_0x6159('0x1'));var moment=require(_0x6159('0x2'));var BPromise=require(_0x6159('0x3'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x6159('0x4'));var db=require(_0x6159('0x5'))['db'];var utils=require(_0x6159('0x6'));var logger=require('../../config/logger')(_0x6159('0x7'));var config=require(_0x6159('0x8'));var jayson=require(_0x6159('0x9'));var client=jayson['client'][_0x6159('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x28f030,_0xa325fe,_0x2d530e){return new BPromise(function(_0x1784b6,_0x2bf835){return client['request'](_0x28f030,_0x2d530e)[_0x6159('0xb')](function(_0x4e6cf6){logger[_0x6159('0xc')](_0x6159('0xd'),_0xa325fe,'request\x20sent');logger[_0x6159('0xe')](_0x6159('0xf'),_0xa325fe,_0x6159('0x10'),JSON['stringify'](_0x4e6cf6));if(_0x4e6cf6['error']){if(_0x4e6cf6[_0x6159('0x11')][_0x6159('0x12')]===0x1f4){logger[_0x6159('0x11')](_0x6159('0xd'),_0xa325fe,_0x4e6cf6[_0x6159('0x11')][_0x6159('0x13')]);return _0x2bf835(_0x4e6cf6[_0x6159('0x11')][_0x6159('0x13')]);}logger[_0x6159('0x11')](_0x6159('0xd'),_0xa325fe,_0x4e6cf6[_0x6159('0x11')][_0x6159('0x13')]);return _0x1784b6(_0x4e6cf6[_0x6159('0x11')][_0x6159('0x13')]);}else{logger[_0x6159('0xc')](_0x6159('0xd'),_0xa325fe,_0x6159('0x10'));_0x1784b6(_0x4e6cf6[_0x6159('0x14')]['message']);}})['catch'](function(_0x316630){logger[_0x6159('0x11')](_0x6159('0xd'),_0xa325fe,_0x316630);_0x2bf835(_0x316630);});});}
\ No newline at end of file
index f5dbe7a..36d069a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4024=['express','fs-extra','../../components/interaction/service','../../config/environment','isAuthenticated','index','get','/:id/configurations','post','create','addConfiguration','put','update','delete','/:id','destroy','exports','multer','util','connect-timeout'];(function(_0x593447,_0x224a04){var _0x4fbaec=function(_0x42461d){while(--_0x42461d){_0x593447['push'](_0x593447['shift']());}};_0x4fbaec(++_0x224a04);}(_0x4024,0x89));var _0x4402=function(_0x3ea030,_0x155acb){_0x3ea030=_0x3ea030-0x0;var _0x5832b8=_0x4024[_0x3ea030];return _0x5832b8;};'use strict';var multer=require(_0x4402('0x0'));var util=require(_0x4402('0x1'));var path=require('path');var timeout=require(_0x4402('0x2'));var express=require(_0x4402('0x3'));var router=express['Router']();var fs_extra=require(_0x4402('0x4'));var auth=require('../../components/auth/service');var interaction=require(_0x4402('0x5'));var config=require(_0x4402('0x6'));var controller=require('./intFreshsalesAccount.controller');router['get']('/',auth[_0x4402('0x7')](),controller[_0x4402('0x8')]);router[_0x4402('0x9')]('/:id',auth[_0x4402('0x7')](),controller['show']);router['get'](_0x4402('0xa'),auth['isAuthenticated'](),controller['getConfigurations']);router[_0x4402('0x9')]('/:id/fields',auth[_0x4402('0x7')](),controller['getFields']);router[_0x4402('0xb')]('/',auth['isAuthenticated'](),controller[_0x4402('0xc')]);router[_0x4402('0xb')]('/:id/configurations',auth[_0x4402('0x7')](),controller[_0x4402('0xd')]);router[_0x4402('0xe')]('/:id',auth[_0x4402('0x7')](),controller[_0x4402('0xf')]);router[_0x4402('0x10')](_0x4402('0x11'),auth[_0x4402('0x7')](),controller[_0x4402('0x12')]);module[_0x4402('0x13')]=router;
\ No newline at end of file
+var _0xd404=['/:id/configurations','/:id/fields','getFields','post','create','addConfiguration','put','/:id','delete','destroy','exports','multer','util','connect-timeout','express','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./intFreshsalesAccount.controller','get','isAuthenticated','index','show'];(function(_0x57ac05,_0x555b58){var _0x4c6700=function(_0x122c78){while(--_0x122c78){_0x57ac05['push'](_0x57ac05['shift']());}};_0x4c6700(++_0x555b58);}(_0xd404,0x15b));var _0x4d40=function(_0x1b50bd,_0x2f0b88){_0x1b50bd=_0x1b50bd-0x0;var _0x34b08c=_0xd404[_0x1b50bd];return _0x34b08c;};'use strict';var multer=require(_0x4d40('0x0'));var util=require(_0x4d40('0x1'));var path=require('path');var timeout=require(_0x4d40('0x2'));var express=require(_0x4d40('0x3'));var router=express['Router']();var fs_extra=require(_0x4d40('0x4'));var auth=require(_0x4d40('0x5'));var interaction=require(_0x4d40('0x6'));var config=require(_0x4d40('0x7'));var controller=require(_0x4d40('0x8'));router[_0x4d40('0x9')]('/',auth[_0x4d40('0xa')](),controller[_0x4d40('0xb')]);router[_0x4d40('0x9')]('/:id',auth[_0x4d40('0xa')](),controller[_0x4d40('0xc')]);router['get'](_0x4d40('0xd'),auth['isAuthenticated'](),controller['getConfigurations']);router[_0x4d40('0x9')](_0x4d40('0xe'),auth[_0x4d40('0xa')](),controller[_0x4d40('0xf')]);router[_0x4d40('0x10')]('/',auth[_0x4d40('0xa')](),controller[_0x4d40('0x11')]);router[_0x4d40('0x10')](_0x4d40('0xd'),auth[_0x4d40('0xa')](),controller[_0x4d40('0x12')]);router[_0x4d40('0x13')](_0x4d40('0x14'),auth[_0x4d40('0xa')](),controller['update']);router[_0x4d40('0x15')](_0x4d40('0x14'),auth[_0x4d40('0xa')](),controller[_0x4d40('0x16')]);module[_0x4d40('0x17')]=router;
\ No newline at end of file
index 4f8dcb9..c6fac14 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3de3=['username','remoteUri','sequelize','STRING'];(function(_0x3f6bcf,_0x531e79){var _0x1c5350=function(_0x282fc5){while(--_0x282fc5){_0x3f6bcf['push'](_0x3f6bcf['shift']());}};_0x1c5350(++_0x531e79);}(_0x3de3,0x1ce));var _0x33de=function(_0x1b9420,_0x3a9478){_0x1b9420=_0x1b9420-0x0;var _0x2d0c6c=_0x3de3[_0x1b9420];return _0x2d0c6c;};'use strict';var Sequelize=require(_0x33de('0x0'));module['exports']={'name':{'type':Sequelize[_0x33de('0x1')]},'description':{'type':Sequelize[_0x33de('0x1')]},'username':{'type':Sequelize['STRING'],'unique':_0x33de('0x2')},'apiKey':{'type':Sequelize[_0x33de('0x1')]},'remoteUri':{'type':Sequelize[_0x33de('0x1')],'unique':_0x33de('0x3')},'serverUrl':{'type':Sequelize['STRING'],'allowNull':![]}};
\ No newline at end of file
+var _0x2032=['remoteUri','exports','STRING','username'];(function(_0x141adc,_0x34b5d1){var _0x118692=function(_0x43361b){while(--_0x43361b){_0x141adc['push'](_0x141adc['shift']());}};_0x118692(++_0x34b5d1);}(_0x2032,0xd9));var _0x2203=function(_0x22dd57,_0x59f5d8){_0x22dd57=_0x22dd57-0x0;var _0x64c609=_0x2032[_0x22dd57];return _0x64c609;};'use strict';var Sequelize=require('sequelize');module[_0x2203('0x0')]={'name':{'type':Sequelize[_0x2203('0x1')]},'description':{'type':Sequelize[_0x2203('0x1')]},'username':{'type':Sequelize['STRING'],'unique':_0x2203('0x2')},'apiKey':{'type':Sequelize[_0x2203('0x1')]},'remoteUri':{'type':Sequelize['STRING'],'unique':_0x2203('0x3')},'serverUrl':{'type':Sequelize[_0x2203('0x1')],'allowNull':![]}};
\ No newline at end of file
index 55626b7..db08f89 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1d81=['limit','Content-Range','reject','update','destroy','then','error','stack','name','index','fieldName','key','map','query','keys','filters','model','attributes','intersection','fields','length','hasOwnProperty','nolimit','order','sort','where','pick','filter','type','merge','options','FreshsalesAccount','count','include','findAll','show','params','rawAttributes','find','catch','create','body','getConfigurations','findOne','FreshsalesConfiguration','AccountId','Subjects','channel','Descriptions','getDescriptions','FreshsalesField','username','apiKey','remoteUri','slice','lastIndexOf','%s%s','Token\x20token=','email','test','statusCode','getFields','stringify','send','Wrong\x20credentials','eml-format','rimraf','zip-dir','fast-json-patch','bluebird','mustache','util','path','sox','to-csv','ejs','lodash','squel','crypto','jsforce','querystring','ioredis','../../components/parsers/advancedSearch','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','end','status','json','undefined','offset'];(function(_0x501510,_0x61caa9){var _0x1e6ee5=function(_0x32845b){while(--_0x32845b){_0x501510['push'](_0x501510['shift']());}};_0x1e6ee5(++_0x61caa9);}(_0x1d81,0xff));var _0x11d8=function(_0x38ed15,_0x2b12e8){_0x38ed15=_0x38ed15-0x0;var _0x29db8b=_0x1d81[_0x38ed15];return _0x29db8b;};'use strict';var emlformat=require(_0x11d8('0x0'));var rimraf=require(_0x11d8('0x1'));var zipdir=require(_0x11d8('0x2'));var jsonpatch=require(_0x11d8('0x3'));var rp=require('request-promise');var moment=require('moment');var BPromise=require(_0x11d8('0x4'));var Mustache=require(_0x11d8('0x5'));var util=require(_0x11d8('0x6'));var path=require(_0x11d8('0x7'));var sox=require(_0x11d8('0x8'));var csv=require(_0x11d8('0x9'));var ejs=require(_0x11d8('0xa'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x11d8('0xb'));var squel=require(_0x11d8('0xc'));var crypto=require(_0x11d8('0xd'));var jsforce=require(_0x11d8('0xe'));var deskjs=require('desk.js');var toCsv=require(_0x11d8('0x9'));var querystring=require(_0x11d8('0xf'));var Papa=require('papaparse');var Redis=require(_0x11d8('0x10'));var authService=require('../../components/auth/service');var qs=require('../../components/parsers/qs');var as=require(_0x11d8('0x11'));var hardwareService=require('../../config/license/hardware');var logger=require(_0x11d8('0x12'))(_0x11d8('0x13'));var utils=require(_0x11d8('0x14'));var config=require(_0x11d8('0x15'));var licenseUtil=require(_0x11d8('0x16'));var db=require(_0x11d8('0x17'))['db'];var integrations=require('../../components/integrations/configuration');function respondWithStatusCode(_0x58d11d,_0x52d254){_0x52d254=_0x52d254||0xcc;return function(_0x15cd3b){if(_0x15cd3b){return _0x58d11d[_0x11d8('0x18')](_0x52d254);}return _0x58d11d['status'](_0x52d254)[_0x11d8('0x19')]();};}function respondWithResult(_0x4ddb52,_0x498d87){_0x498d87=_0x498d87||0xc8;return function(_0x29d328){if(_0x29d328){return _0x4ddb52[_0x11d8('0x1a')](_0x498d87)[_0x11d8('0x1b')](_0x29d328);}};}function respondWithFilteredResult(_0x2da2c6,_0x289dde){return function(_0x47064a){if(_0x47064a){var _0x44af5b=typeof _0x289dde['offset']===_0x11d8('0x1c')&&typeof _0x289dde['limit']==='undefined';var _0x483c8e=_0x47064a['count'];var _0xa13f68=_0x44af5b?0x0:_0x289dde['offset'];var _0x37e47c=_0x44af5b?_0x47064a['count']:_0x289dde[_0x11d8('0x1d')]+_0x289dde[_0x11d8('0x1e')];var _0x4bc013;if(_0x37e47c>=_0x483c8e){_0x37e47c=_0x483c8e;_0x4bc013=0xc8;}else{_0x4bc013=0xce;}_0x2da2c6[_0x11d8('0x1a')](_0x4bc013);return _0x2da2c6['set'](_0x11d8('0x1f'),_0xa13f68+'-'+_0x37e47c+'/'+_0x483c8e)[_0x11d8('0x1b')](_0x47064a);}return null;};}function patchUpdates(_0xca39f8){return function(_0x5441a3){try{jsonpatch['apply'](_0x5441a3,_0xca39f8,!![]);}catch(_0x18213a){return BPromise[_0x11d8('0x20')](_0x18213a);}return _0x5441a3['save']();};}function saveUpdates(_0x1f6294,_0x2b5561){return function(_0x5288f4){if(_0x5288f4){return _0x5288f4[_0x11d8('0x21')](_0x1f6294)['then'](function(_0x77d9d5){return _0x77d9d5;});}return null;};}function removeEntity(_0x42e0fe,_0x334d18){return function(_0x2abed6){if(_0x2abed6){return _0x2abed6[_0x11d8('0x22')]()[_0x11d8('0x23')](function(){_0x42e0fe[_0x11d8('0x1a')](0xcc)[_0x11d8('0x19')]();});}};}function handleEntityNotFound(_0x48f01,_0x4a7e83){return function(_0x294e23){if(!_0x294e23){_0x48f01[_0x11d8('0x18')](0x194);}return _0x294e23;};}function handleError(_0x51806c,_0x5c03ac){_0x5c03ac=_0x5c03ac||0x1f4;return function(_0x28fb33){logger[_0x11d8('0x24')](_0x28fb33[_0x11d8('0x25')]);if(_0x28fb33['name']){delete _0x28fb33[_0x11d8('0x26')];}_0x51806c[_0x11d8('0x1a')](_0x5c03ac)['send'](_0x28fb33);};}exports[_0x11d8('0x27')]=function(_0x4d98f2,_0x41d759){var _0x48dea0={},_0x20f1d6={},_0x5ba691={'count':0x0,'rows':[]};var _0x31e486=_['map'](db['FreshsalesAccount']['rawAttributes'],function(_0x4a23df){return{'name':_0x4a23df[_0x11d8('0x28')],'type':_0x4a23df['type'][_0x11d8('0x29')]};});_0x20f1d6['model']=_[_0x11d8('0x2a')](_0x31e486,_0x11d8('0x26'));_0x20f1d6[_0x11d8('0x2b')]=_[_0x11d8('0x2c')](_0x4d98f2[_0x11d8('0x2b')]);_0x20f1d6[_0x11d8('0x2d')]=_['intersection'](_0x20f1d6[_0x11d8('0x2e')],_0x20f1d6[_0x11d8('0x2b')]);_0x48dea0[_0x11d8('0x2f')]=_[_0x11d8('0x30')](_0x20f1d6[_0x11d8('0x2e')],qs[_0x11d8('0x31')](_0x4d98f2['query'][_0x11d8('0x31')]));_0x48dea0[_0x11d8('0x2f')]=_0x48dea0[_0x11d8('0x2f')][_0x11d8('0x32')]?_0x48dea0[_0x11d8('0x2f')]:_0x20f1d6['model'];if(!_0x4d98f2[_0x11d8('0x2b')][_0x11d8('0x33')](_0x11d8('0x34'))){_0x48dea0['limit']=qs[_0x11d8('0x1e')](_0x4d98f2['query']['limit']);_0x48dea0[_0x11d8('0x1d')]=qs[_0x11d8('0x1d')](_0x4d98f2[_0x11d8('0x2b')]['offset']);}_0x48dea0[_0x11d8('0x35')]=qs['sort'](_0x4d98f2[_0x11d8('0x2b')][_0x11d8('0x36')]);_0x48dea0[_0x11d8('0x37')]=qs['filters'](_[_0x11d8('0x38')](_0x4d98f2[_0x11d8('0x2b')],_0x20f1d6['filters']),_0x31e486);if(_0x4d98f2[_0x11d8('0x2b')][_0x11d8('0x39')]){_0x48dea0[_0x11d8('0x37')]=_['merge'](_0x48dea0['where'],{'$or':_['map'](_0x31e486,function(_0x2c2a35){if(_0x2c2a35[_0x11d8('0x3a')]!=='VIRTUAL'){var _0x1cc2e3={};_0x1cc2e3[_0x2c2a35[_0x11d8('0x26')]]={'$like':'%'+_0x4d98f2[_0x11d8('0x2b')]['filter']+'%'};return _0x1cc2e3;}})});}_0x48dea0=_[_0x11d8('0x3b')]({},_0x48dea0,_0x4d98f2[_0x11d8('0x3c')]);var _0x1834d3={'where':_0x48dea0['where']};return db[_0x11d8('0x3d')][_0x11d8('0x3e')](_0x1834d3)[_0x11d8('0x23')](function(_0x1a7457){_0x5ba691[_0x11d8('0x3e')]=_0x1a7457;if(_0x4d98f2['query']['includeAll']){_0x48dea0[_0x11d8('0x3f')]=[{'all':!![]}];}return db[_0x11d8('0x3d')][_0x11d8('0x40')](_0x48dea0);})[_0x11d8('0x23')](function(_0x222554){_0x5ba691['rows']=_0x222554;return _0x5ba691;})[_0x11d8('0x23')](respondWithFilteredResult(_0x41d759,_0x48dea0))['catch'](handleError(_0x41d759,null));};exports[_0x11d8('0x41')]=function(_0x34b387,_0x6d086){var _0x523279={'raw':![],'where':{'id':_0x34b387[_0x11d8('0x42')]['id']}},_0xfd7898={};_0xfd7898[_0x11d8('0x2e')]=_['keys'](db[_0x11d8('0x3d')][_0x11d8('0x43')]);_0xfd7898[_0x11d8('0x2b')]=_[_0x11d8('0x2c')](_0x34b387[_0x11d8('0x2b')]);_0xfd7898['filters']=_['intersection'](_0xfd7898['model'],_0xfd7898['query']);_0x523279[_0x11d8('0x2f')]=_[_0x11d8('0x30')](_0xfd7898[_0x11d8('0x2e')],qs['fields'](_0x34b387[_0x11d8('0x2b')][_0x11d8('0x31')]));_0x523279[_0x11d8('0x2f')]=_0x523279[_0x11d8('0x2f')]['length']?_0x523279[_0x11d8('0x2f')]:_0xfd7898[_0x11d8('0x2e')];if(_0x34b387[_0x11d8('0x2b')]['includeAll']){_0x523279[_0x11d8('0x3f')]=[{'all':!![]}];}_0x523279=_[_0x11d8('0x3b')]({},_0x523279,_0x34b387[_0x11d8('0x3c')]);return db['FreshsalesAccount'][_0x11d8('0x44')](_0x523279)[_0x11d8('0x23')](handleEntityNotFound(_0x6d086,null))[_0x11d8('0x23')](respondWithResult(_0x6d086,null))[_0x11d8('0x45')](handleError(_0x6d086,null));};exports['create']=function(_0x124dbc,_0x5e154f){return db['FreshsalesAccount'][_0x11d8('0x46')](_0x124dbc[_0x11d8('0x47')],{})[_0x11d8('0x23')](respondWithResult(_0x5e154f,0xc9))[_0x11d8('0x45')](handleError(_0x5e154f,null));};exports[_0x11d8('0x21')]=function(_0xbc001c,_0x252477){if(_0xbc001c['body']['id']){delete _0xbc001c[_0x11d8('0x47')]['id'];}return db[_0x11d8('0x3d')]['find']({'where':{'id':_0xbc001c[_0x11d8('0x42')]['id']}})[_0x11d8('0x23')](handleEntityNotFound(_0x252477,null))['then'](saveUpdates(_0xbc001c[_0x11d8('0x47')],null))[_0x11d8('0x23')](respondWithResult(_0x252477,null))[_0x11d8('0x45')](handleError(_0x252477,null));};exports[_0x11d8('0x22')]=function(_0x1a5de5,_0x1e9eab){return db[_0x11d8('0x3d')][_0x11d8('0x44')]({'where':{'id':_0x1a5de5[_0x11d8('0x42')]['id']}})[_0x11d8('0x23')](handleEntityNotFound(_0x1e9eab,null))[_0x11d8('0x23')](removeEntity(_0x1e9eab,null))[_0x11d8('0x45')](handleError(_0x1e9eab,null));};exports[_0x11d8('0x48')]=function(_0x32a7f8,_0x27d984,_0xa63b8f){var _0x22cce7={};var _0x34a476={};var _0x1edb58;var _0x3bb80c;return db[_0x11d8('0x3d')][_0x11d8('0x49')]({'where':{'id':_0x32a7f8[_0x11d8('0x42')]['id']}})[_0x11d8('0x23')](handleEntityNotFound(_0x27d984,null))[_0x11d8('0x23')](function(_0x5ec13d){if(_0x5ec13d){_0x1edb58=_0x5ec13d;_0x34a476['model']=_[_0x11d8('0x2c')](db[_0x11d8('0x4a')][_0x11d8('0x43')]);_0x34a476[_0x11d8('0x2b')]=_[_0x11d8('0x2c')](_0x32a7f8['query']);_0x34a476[_0x11d8('0x2d')]=_[_0x11d8('0x30')](_0x34a476[_0x11d8('0x2e')],_0x34a476[_0x11d8('0x2b')]);_0x22cce7[_0x11d8('0x2f')]=_[_0x11d8('0x30')](_0x34a476[_0x11d8('0x2e')],qs[_0x11d8('0x31')](_0x32a7f8[_0x11d8('0x2b')][_0x11d8('0x31')]));_0x22cce7[_0x11d8('0x2f')]=_0x22cce7['attributes'][_0x11d8('0x32')]?_0x22cce7[_0x11d8('0x2f')]:_0x34a476[_0x11d8('0x2e')];_0x22cce7['order']=qs[_0x11d8('0x36')](_0x32a7f8[_0x11d8('0x2b')][_0x11d8('0x36')]);_0x22cce7[_0x11d8('0x37')]=qs[_0x11d8('0x2d')](_['pick'](_0x32a7f8[_0x11d8('0x2b')],_0x34a476[_0x11d8('0x2d')]));if(_0x32a7f8['query'][_0x11d8('0x39')]){_0x22cce7[_0x11d8('0x37')]=_['merge'](_0x22cce7[_0x11d8('0x37')],{'$or':_[_0x11d8('0x2a')](_0x22cce7[_0x11d8('0x2f')],function(_0x2bd996){var _0x52a20d={};_0x52a20d[_0x2bd996]={'$like':'%'+_0x32a7f8[_0x11d8('0x2b')][_0x11d8('0x39')]+'%'};return _0x52a20d;})});}_0x22cce7=_['merge']({},_0x22cce7,_0x32a7f8['options']);return _0x1edb58[_0x11d8('0x48')](_0x22cce7);}})[_0x11d8('0x23')](function(_0x1186b4){if(_0x1186b4){_0x3bb80c=_0x1186b4[_0x11d8('0x32')];if(!_0x32a7f8['query'][_0x11d8('0x33')]('nolimit')){_0x22cce7[_0x11d8('0x1e')]=qs['limit'](_0x32a7f8[_0x11d8('0x2b')][_0x11d8('0x1e')]);_0x22cce7[_0x11d8('0x1d')]=qs['offset'](_0x32a7f8[_0x11d8('0x2b')]['offset']);}return _0x1edb58[_0x11d8('0x48')](_0x22cce7);}})['then'](function(_0x4ec23f){if(_0x4ec23f){return _0x4ec23f?{'count':_0x3bb80c,'rows':_0x4ec23f}:null;}})[_0x11d8('0x23')](respondWithResult(_0x27d984,null))[_0x11d8('0x45')](handleError(_0x27d984,null));};exports['addConfiguration']=function(_0x3d8974,_0x5a0a84,_0x4ed00b){if(_0x3d8974[_0x11d8('0x47')]['id']){delete _0x3d8974[_0x11d8('0x47')]['id'];}return db[_0x11d8('0x3d')][_0x11d8('0x49')]({'where':{'id':_0x3d8974['params']['id']}})[_0x11d8('0x23')](handleEntityNotFound(_0x5a0a84,null))['then'](function(_0xb1bbdf){if(_0xb1bbdf){_0x3d8974['body'][_0x11d8('0x4b')]=_0xb1bbdf['id'];_0x3d8974[_0x11d8('0x47')][_0x11d8('0x4c')]=integrations['getSubjects'](_0x3d8974['body'][_0x11d8('0x4d')],_0x3d8974[_0x11d8('0x47')][_0x11d8('0x3a')]);_0x3d8974[_0x11d8('0x47')][_0x11d8('0x4e')]=integrations[_0x11d8('0x4f')](_0x3d8974[_0x11d8('0x47')][_0x11d8('0x4d')],_0x3d8974[_0x11d8('0x47')][_0x11d8('0x3a')]);return db[_0x11d8('0x4a')][_0x11d8('0x46')](_0x3d8974[_0x11d8('0x47')],{'include':[{'model':db[_0x11d8('0x50')],'as':_0x11d8('0x4c')},{'model':db[_0x11d8('0x50')],'as':_0x11d8('0x4e')}]});}return null;})[_0x11d8('0x23')](respondWithResult(_0x5a0a84,null))[_0x11d8('0x45')](handleError(_0x5a0a84,null));};exports['getFields']=function(_0x34b236,_0x3e8a5e,_0x51a4cb){var _0x15fb99='';var _0x24b6a2='';return db[_0x11d8('0x3d')][_0x11d8('0x49')]({'where':{'id':_0x34b236['params']['id']},'attributes':['id',_0x11d8('0x51'),'remoteUri',_0x11d8('0x52')]})['then'](handleEntityNotFound(_0x3e8a5e,null))[_0x11d8('0x23')](function(_0x1a459c){if(_0x1a459c){_0x24b6a2=_0x1a459c['username'];_0x15fb99=_0x1a459c[_0x11d8('0x53')];var _0x3ca70c=_0x1a459c['remoteUri'][_0x11d8('0x54')](-0x1);if(_0x3ca70c==='/'){_0x15fb99=_0x15fb99['substring'](0x0,_0x15fb99[_0x11d8('0x55')](_0x3ca70c));}return rp({'method':'GET','uri':util['format'](_0x11d8('0x56'),_0x15fb99,'/api/selector/owners'),'headers':{'Authorization':_0x11d8('0x57')+_0x1a459c[_0x11d8('0x52')]},'json':!![]});}})[_0x11d8('0x23')](function(_0x45c22b){if(_0x45c22b){var _0xc746cf=_0x45c22b['users'];var _0x4bf7ce=![];var _0x3cac17=null;for(_0x3cac17=0x0;_0x3cac17<_0xc746cf[_0x11d8('0x32')];_0x3cac17++){if(_0xc746cf[_0x3cac17][_0x11d8('0x58')]===_0x24b6a2){_0x4bf7ce=!![];}}if(_0x4bf7ce){return!![];}else{throw new Error({'statusCode':0x194,'message':'Requested\x20Resource\x20not\x20Found'});}}})['then'](respondWithResult(_0x3e8a5e,null))[_0x11d8('0x45')](function(_0x439a85){var _0x44ebf0=_0x34b236[_0x11d8('0x2b')][_0x11d8('0x59')]?0x1f4:_0x439a85[_0x11d8('0x5a')]||0x1f4;logger['error']('getFields,\x20%s,\x20%s,\x20%s',_0x11d8('0x5b'),_0x44ebf0,JSON[_0x11d8('0x5c')](_0x439a85));delete _0x439a85[_0x11d8('0x26')];if(_0x44ebf0===0x191){_0x44ebf0=0x190;}_0x3e8a5e[_0x11d8('0x1a')](_0x44ebf0)[_0x11d8('0x5d')](_0x34b236[_0x11d8('0x2b')][_0x11d8('0x59')]?{'message':_0x11d8('0x5e'),'statusCode':_0x439a85[_0x11d8('0x5a')]}:_0x439a85);});};
\ No newline at end of file
+var _0x42c7=['../../config/license/util','../../mysqldb','../../components/integrations/configuration','sendStatus','end','json','undefined','limit','count','offset','status','set','Content-Range','apply','reject','update','destroy','then','stack','name','send','index','map','FreshsalesAccount','rawAttributes','fieldName','type','key','model','keys','query','intersection','fields','attributes','hasOwnProperty','nolimit','order','sort','where','filters','pick','filter','merge','VIRTUAL','options','includeAll','include','findAll','rows','catch','length','find','create','body','params','getConfigurations','findOne','addConfiguration','AccountId','Subjects','getSubjects','channel','Descriptions','getDescriptions','FreshsalesConfiguration','FreshsalesField','getFields','username','apiKey','remoteUri','substring','GET','format','%s%s','/api/selector/owners','Token\x20token=','users','Requested\x20Resource\x20not\x20Found','error','getFields,\x20%s,\x20%s,\x20%s','stringify','Wrong\x20credentials','statusCode','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox','to-csv','ejs','fs-extra','lodash','crypto','desk.js','querystring','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment'];(function(_0xfe2393,_0x110ad5){var _0x3239bd=function(_0x186ba8){while(--_0x186ba8){_0xfe2393['push'](_0xfe2393['shift']());}};_0x3239bd(++_0x110ad5);}(_0x42c7,0x12d));var _0x742c=function(_0x269d4d,_0x455885){_0x269d4d=_0x269d4d-0x0;var _0x5c8a83=_0x42c7[_0x269d4d];return _0x5c8a83;};'use strict';var emlformat=require(_0x742c('0x0'));var rimraf=require(_0x742c('0x1'));var zipdir=require(_0x742c('0x2'));var jsonpatch=require(_0x742c('0x3'));var rp=require(_0x742c('0x4'));var moment=require(_0x742c('0x5'));var BPromise=require(_0x742c('0x6'));var Mustache=require(_0x742c('0x7'));var util=require(_0x742c('0x8'));var path=require(_0x742c('0x9'));var sox=require(_0x742c('0xa'));var csv=require(_0x742c('0xb'));var ejs=require(_0x742c('0xc'));var fs=require('fs');var fs_extra=require(_0x742c('0xd'));var _=require(_0x742c('0xe'));var squel=require('squel');var crypto=require(_0x742c('0xf'));var jsforce=require('jsforce');var deskjs=require(_0x742c('0x10'));var toCsv=require(_0x742c('0xb'));var querystring=require(_0x742c('0x11'));var Papa=require('papaparse');var Redis=require(_0x742c('0x12'));var authService=require(_0x742c('0x13'));var qs=require('../../components/parsers/qs');var as=require(_0x742c('0x14'));var hardwareService=require(_0x742c('0x15'));var logger=require(_0x742c('0x16'))(_0x742c('0x17'));var utils=require(_0x742c('0x18'));var config=require(_0x742c('0x19'));var licenseUtil=require(_0x742c('0x1a'));var db=require(_0x742c('0x1b'))['db'];var integrations=require(_0x742c('0x1c'));function respondWithStatusCode(_0x59b761,_0x9f6654){_0x9f6654=_0x9f6654||0xcc;return function(_0x29f012){if(_0x29f012){return _0x59b761[_0x742c('0x1d')](_0x9f6654);}return _0x59b761['status'](_0x9f6654)[_0x742c('0x1e')]();};}function respondWithResult(_0x128d77,_0x40c906){_0x40c906=_0x40c906||0xc8;return function(_0x2167b8){if(_0x2167b8){return _0x128d77['status'](_0x40c906)[_0x742c('0x1f')](_0x2167b8);}};}function respondWithFilteredResult(_0x3d5cd3,_0x34a567){return function(_0x557e32){if(_0x557e32){var _0x510270=typeof _0x34a567['offset']===_0x742c('0x20')&&typeof _0x34a567[_0x742c('0x21')]===_0x742c('0x20');var _0x3c903c=_0x557e32[_0x742c('0x22')];var _0xe5d683=_0x510270?0x0:_0x34a567[_0x742c('0x23')];var _0x35145e=_0x510270?_0x557e32[_0x742c('0x22')]:_0x34a567['offset']+_0x34a567[_0x742c('0x21')];var _0x593ecb;if(_0x35145e>=_0x3c903c){_0x35145e=_0x3c903c;_0x593ecb=0xc8;}else{_0x593ecb=0xce;}_0x3d5cd3[_0x742c('0x24')](_0x593ecb);return _0x3d5cd3[_0x742c('0x25')](_0x742c('0x26'),_0xe5d683+'-'+_0x35145e+'/'+_0x3c903c)[_0x742c('0x1f')](_0x557e32);}return null;};}function patchUpdates(_0x482668){return function(_0x25c7fd){try{jsonpatch[_0x742c('0x27')](_0x25c7fd,_0x482668,!![]);}catch(_0x11c341){return BPromise[_0x742c('0x28')](_0x11c341);}return _0x25c7fd['save']();};}function saveUpdates(_0x2cd509,_0x4d32b0){return function(_0x366400){if(_0x366400){return _0x366400[_0x742c('0x29')](_0x2cd509)['then'](function(_0x5a0599){return _0x5a0599;});}return null;};}function removeEntity(_0x1ae640,_0x2d9bd0){return function(_0xbc7bf5){if(_0xbc7bf5){return _0xbc7bf5[_0x742c('0x2a')]()[_0x742c('0x2b')](function(){_0x1ae640[_0x742c('0x24')](0xcc)[_0x742c('0x1e')]();});}};}function handleEntityNotFound(_0x3ac43a,_0x163a3f){return function(_0x451f06){if(!_0x451f06){_0x3ac43a['sendStatus'](0x194);}return _0x451f06;};}function handleError(_0x9635c8,_0x53f6d6){_0x53f6d6=_0x53f6d6||0x1f4;return function(_0x5d874){logger['error'](_0x5d874[_0x742c('0x2c')]);if(_0x5d874[_0x742c('0x2d')]){delete _0x5d874['name'];}_0x9635c8[_0x742c('0x24')](_0x53f6d6)[_0x742c('0x2e')](_0x5d874);};}exports[_0x742c('0x2f')]=function(_0x175702,_0x1825c3){var _0x48d230={},_0x1cb6b6={},_0x3b648f={'count':0x0,'rows':[]};var _0x1b2c51=_[_0x742c('0x30')](db[_0x742c('0x31')][_0x742c('0x32')],function(_0x2594bf){return{'name':_0x2594bf[_0x742c('0x33')],'type':_0x2594bf[_0x742c('0x34')][_0x742c('0x35')]};});_0x1cb6b6[_0x742c('0x36')]=_['map'](_0x1b2c51,'name');_0x1cb6b6['query']=_[_0x742c('0x37')](_0x175702[_0x742c('0x38')]);_0x1cb6b6['filters']=_[_0x742c('0x39')](_0x1cb6b6[_0x742c('0x36')],_0x1cb6b6['query']);_0x48d230['attributes']=_[_0x742c('0x39')](_0x1cb6b6[_0x742c('0x36')],qs[_0x742c('0x3a')](_0x175702['query'][_0x742c('0x3a')]));_0x48d230[_0x742c('0x3b')]=_0x48d230[_0x742c('0x3b')]['length']?_0x48d230[_0x742c('0x3b')]:_0x1cb6b6['model'];if(!_0x175702['query'][_0x742c('0x3c')](_0x742c('0x3d'))){_0x48d230[_0x742c('0x21')]=qs[_0x742c('0x21')](_0x175702[_0x742c('0x38')]['limit']);_0x48d230[_0x742c('0x23')]=qs['offset'](_0x175702['query'][_0x742c('0x23')]);}_0x48d230[_0x742c('0x3e')]=qs[_0x742c('0x3f')](_0x175702[_0x742c('0x38')][_0x742c('0x3f')]);_0x48d230[_0x742c('0x40')]=qs[_0x742c('0x41')](_[_0x742c('0x42')](_0x175702[_0x742c('0x38')],_0x1cb6b6[_0x742c('0x41')]),_0x1b2c51);if(_0x175702['query'][_0x742c('0x43')]){_0x48d230[_0x742c('0x40')]=_[_0x742c('0x44')](_0x48d230[_0x742c('0x40')],{'$or':_[_0x742c('0x30')](_0x1b2c51,function(_0x243ff2){if(_0x243ff2['type']!==_0x742c('0x45')){var _0x38f317={};_0x38f317[_0x243ff2[_0x742c('0x2d')]]={'$like':'%'+_0x175702[_0x742c('0x38')][_0x742c('0x43')]+'%'};return _0x38f317;}})});}_0x48d230=_[_0x742c('0x44')]({},_0x48d230,_0x175702[_0x742c('0x46')]);var _0x46534b={'where':_0x48d230[_0x742c('0x40')]};return db[_0x742c('0x31')][_0x742c('0x22')](_0x46534b)['then'](function(_0x4eca9e){_0x3b648f['count']=_0x4eca9e;if(_0x175702['query'][_0x742c('0x47')]){_0x48d230[_0x742c('0x48')]=[{'all':!![]}];}return db['FreshsalesAccount'][_0x742c('0x49')](_0x48d230);})['then'](function(_0x38950f){_0x3b648f[_0x742c('0x4a')]=_0x38950f;return _0x3b648f;})[_0x742c('0x2b')](respondWithFilteredResult(_0x1825c3,_0x48d230))[_0x742c('0x4b')](handleError(_0x1825c3,null));};exports['show']=function(_0x2c6ed2,_0x108fb9){var _0x2ac19f={'raw':![],'where':{'id':_0x2c6ed2['params']['id']}},_0x5c98fa={};_0x5c98fa['model']=_[_0x742c('0x37')](db[_0x742c('0x31')][_0x742c('0x32')]);_0x5c98fa[_0x742c('0x38')]=_[_0x742c('0x37')](_0x2c6ed2[_0x742c('0x38')]);_0x5c98fa[_0x742c('0x41')]=_['intersection'](_0x5c98fa['model'],_0x5c98fa[_0x742c('0x38')]);_0x2ac19f[_0x742c('0x3b')]=_[_0x742c('0x39')](_0x5c98fa[_0x742c('0x36')],qs[_0x742c('0x3a')](_0x2c6ed2[_0x742c('0x38')]['fields']));_0x2ac19f[_0x742c('0x3b')]=_0x2ac19f[_0x742c('0x3b')][_0x742c('0x4c')]?_0x2ac19f['attributes']:_0x5c98fa[_0x742c('0x36')];if(_0x2c6ed2[_0x742c('0x38')][_0x742c('0x47')]){_0x2ac19f[_0x742c('0x48')]=[{'all':!![]}];}_0x2ac19f=_[_0x742c('0x44')]({},_0x2ac19f,_0x2c6ed2[_0x742c('0x46')]);return db[_0x742c('0x31')][_0x742c('0x4d')](_0x2ac19f)[_0x742c('0x2b')](handleEntityNotFound(_0x108fb9,null))[_0x742c('0x2b')](respondWithResult(_0x108fb9,null))[_0x742c('0x4b')](handleError(_0x108fb9,null));};exports[_0x742c('0x4e')]=function(_0x36c85f,_0x437593){return db[_0x742c('0x31')][_0x742c('0x4e')](_0x36c85f['body'],{})[_0x742c('0x2b')](respondWithResult(_0x437593,0xc9))[_0x742c('0x4b')](handleError(_0x437593,null));};exports[_0x742c('0x29')]=function(_0x299cae,_0x78db91){if(_0x299cae['body']['id']){delete _0x299cae[_0x742c('0x4f')]['id'];}return db['FreshsalesAccount'][_0x742c('0x4d')]({'where':{'id':_0x299cae[_0x742c('0x50')]['id']}})[_0x742c('0x2b')](handleEntityNotFound(_0x78db91,null))[_0x742c('0x2b')](saveUpdates(_0x299cae[_0x742c('0x4f')],null))[_0x742c('0x2b')](respondWithResult(_0x78db91,null))['catch'](handleError(_0x78db91,null));};exports[_0x742c('0x2a')]=function(_0x4ece3e,_0x121255){return db[_0x742c('0x31')][_0x742c('0x4d')]({'where':{'id':_0x4ece3e[_0x742c('0x50')]['id']}})[_0x742c('0x2b')](handleEntityNotFound(_0x121255,null))[_0x742c('0x2b')](removeEntity(_0x121255,null))[_0x742c('0x4b')](handleError(_0x121255,null));};exports[_0x742c('0x51')]=function(_0x4f23d3,_0x5ee5d8,_0x4f6450){var _0x48a73d={};var _0x5ece75={};var _0x3553a1;var _0x5af297;return db['FreshsalesAccount'][_0x742c('0x52')]({'where':{'id':_0x4f23d3['params']['id']}})[_0x742c('0x2b')](handleEntityNotFound(_0x5ee5d8,null))[_0x742c('0x2b')](function(_0xa70f9){if(_0xa70f9){_0x3553a1=_0xa70f9;_0x5ece75[_0x742c('0x36')]=_['keys'](db['FreshsalesConfiguration'][_0x742c('0x32')]);_0x5ece75[_0x742c('0x38')]=_[_0x742c('0x37')](_0x4f23d3['query']);_0x5ece75[_0x742c('0x41')]=_[_0x742c('0x39')](_0x5ece75[_0x742c('0x36')],_0x5ece75[_0x742c('0x38')]);_0x48a73d['attributes']=_[_0x742c('0x39')](_0x5ece75['model'],qs[_0x742c('0x3a')](_0x4f23d3[_0x742c('0x38')][_0x742c('0x3a')]));_0x48a73d[_0x742c('0x3b')]=_0x48a73d[_0x742c('0x3b')][_0x742c('0x4c')]?_0x48a73d['attributes']:_0x5ece75['model'];_0x48a73d['order']=qs[_0x742c('0x3f')](_0x4f23d3['query'][_0x742c('0x3f')]);_0x48a73d[_0x742c('0x40')]=qs[_0x742c('0x41')](_['pick'](_0x4f23d3['query'],_0x5ece75['filters']));if(_0x4f23d3['query'][_0x742c('0x43')]){_0x48a73d[_0x742c('0x40')]=_['merge'](_0x48a73d[_0x742c('0x40')],{'$or':_[_0x742c('0x30')](_0x48a73d['attributes'],function(_0x38d637){var _0xf9a0e3={};_0xf9a0e3[_0x38d637]={'$like':'%'+_0x4f23d3[_0x742c('0x38')][_0x742c('0x43')]+'%'};return _0xf9a0e3;})});}_0x48a73d=_[_0x742c('0x44')]({},_0x48a73d,_0x4f23d3['options']);return _0x3553a1[_0x742c('0x51')](_0x48a73d);}})[_0x742c('0x2b')](function(_0x2be8bd){if(_0x2be8bd){_0x5af297=_0x2be8bd[_0x742c('0x4c')];if(!_0x4f23d3[_0x742c('0x38')]['hasOwnProperty'](_0x742c('0x3d'))){_0x48a73d[_0x742c('0x21')]=qs[_0x742c('0x21')](_0x4f23d3[_0x742c('0x38')]['limit']);_0x48a73d[_0x742c('0x23')]=qs[_0x742c('0x23')](_0x4f23d3[_0x742c('0x38')]['offset']);}return _0x3553a1[_0x742c('0x51')](_0x48a73d);}})[_0x742c('0x2b')](function(_0x40c78e){if(_0x40c78e){return _0x40c78e?{'count':_0x5af297,'rows':_0x40c78e}:null;}})[_0x742c('0x2b')](respondWithResult(_0x5ee5d8,null))[_0x742c('0x4b')](handleError(_0x5ee5d8,null));};exports[_0x742c('0x53')]=function(_0x5a9bb1,_0x3a6bd7,_0x91b777){if(_0x5a9bb1[_0x742c('0x4f')]['id']){delete _0x5a9bb1[_0x742c('0x4f')]['id'];}return db[_0x742c('0x31')]['findOne']({'where':{'id':_0x5a9bb1['params']['id']}})['then'](handleEntityNotFound(_0x3a6bd7,null))['then'](function(_0x17e009){if(_0x17e009){_0x5a9bb1[_0x742c('0x4f')][_0x742c('0x54')]=_0x17e009['id'];_0x5a9bb1['body'][_0x742c('0x55')]=integrations[_0x742c('0x56')](_0x5a9bb1[_0x742c('0x4f')][_0x742c('0x57')],_0x5a9bb1[_0x742c('0x4f')][_0x742c('0x34')]);_0x5a9bb1[_0x742c('0x4f')][_0x742c('0x58')]=integrations[_0x742c('0x59')](_0x5a9bb1[_0x742c('0x4f')][_0x742c('0x57')],_0x5a9bb1[_0x742c('0x4f')][_0x742c('0x34')]);return db[_0x742c('0x5a')][_0x742c('0x4e')](_0x5a9bb1['body'],{'include':[{'model':db['FreshsalesField'],'as':'Subjects'},{'model':db[_0x742c('0x5b')],'as':_0x742c('0x58')}]});}return null;})['then'](respondWithResult(_0x3a6bd7,null))[_0x742c('0x4b')](handleError(_0x3a6bd7,null));};exports[_0x742c('0x5c')]=function(_0x4a848c,_0x40bf43,_0x3b4407){var _0x2c7d08='';var _0x590bac='';return db[_0x742c('0x31')][_0x742c('0x52')]({'where':{'id':_0x4a848c[_0x742c('0x50')]['id']},'attributes':['id',_0x742c('0x5d'),'remoteUri',_0x742c('0x5e')]})[_0x742c('0x2b')](handleEntityNotFound(_0x40bf43,null))['then'](function(_0x3c1083){if(_0x3c1083){_0x590bac=_0x3c1083[_0x742c('0x5d')];_0x2c7d08=_0x3c1083[_0x742c('0x5f')];var _0x38855e=_0x3c1083['remoteUri']['slice'](-0x1);if(_0x38855e==='/'){_0x2c7d08=_0x2c7d08[_0x742c('0x60')](0x0,_0x2c7d08['lastIndexOf'](_0x38855e));}return rp({'method':_0x742c('0x61'),'uri':util[_0x742c('0x62')](_0x742c('0x63'),_0x2c7d08,_0x742c('0x64')),'headers':{'Authorization':_0x742c('0x65')+_0x3c1083['apiKey']},'json':!![]});}})['then'](function(_0x5c630e){if(_0x5c630e){var _0x183a41=_0x5c630e[_0x742c('0x66')];var _0x47dd32=![];var _0x4c1619=null;for(_0x4c1619=0x0;_0x4c1619<_0x183a41[_0x742c('0x4c')];_0x4c1619++){if(_0x183a41[_0x4c1619]['email']===_0x590bac){_0x47dd32=!![];}}if(_0x47dd32){return!![];}else{throw new Error({'statusCode':0x194,'message':_0x742c('0x67')});}}})[_0x742c('0x2b')](respondWithResult(_0x40bf43,null))[_0x742c('0x4b')](function(_0x225ce6){var _0x4c4ac0=_0x4a848c['query']['test']?0x1f4:_0x225ce6['statusCode']||0x1f4;logger[_0x742c('0x68')](_0x742c('0x69'),_0x742c('0x5c'),_0x4c4ac0,JSON[_0x742c('0x6a')](_0x225ce6));delete _0x225ce6['name'];if(_0x4c4ac0===0x191){_0x4c4ac0=0x190;}_0x40bf43[_0x742c('0x24')](_0x4c4ac0)[_0x742c('0x2e')](_0x4a848c['query']['test']?{'message':_0x742c('0x6b'),'statusCode':_0x225ce6[_0x742c('0x6c')]}:_0x225ce6);});};
\ No newline at end of file
index 3fdf696..0ffb726 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1967=['rimraf','../../config/environment','./intFreshsalesAccount.attributes','exports','define','FreshsalesAccount','int_freshsales_accounts','util','../../config/logger','api','moment','bluebird','request-promise','path'];(function(_0x631a3c,_0x1b61b6){var _0x2bdfa3=function(_0x21711b){while(--_0x21711b){_0x631a3c['push'](_0x631a3c['shift']());}};_0x2bdfa3(++_0x1b61b6);}(_0x1967,0x173));var _0x7196=function(_0x11ad9e,_0x17d75){_0x11ad9e=_0x11ad9e-0x0;var _0x4ba190=_0x1967[_0x11ad9e];return _0x4ba190;};'use strict';var _=require('lodash');var util=require(_0x7196('0x0'));var logger=require(_0x7196('0x1'))(_0x7196('0x2'));var moment=require(_0x7196('0x3'));var BPromise=require(_0x7196('0x4'));var rp=require(_0x7196('0x5'));var fs=require('fs');var path=require(_0x7196('0x6'));var rimraf=require(_0x7196('0x7'));var config=require(_0x7196('0x8'));var attributes=require(_0x7196('0x9'));var integrations=require('../../components/integrations/configuration');module[_0x7196('0xa')]=function(_0x186175,_0x194746){return _0x186175[_0x7196('0xb')](_0x7196('0xc'),attributes,{'tableName':_0x7196('0xd'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x2272=['request-promise','path','rimraf','../../components/integrations/configuration','exports','define','FreshsalesAccount','int_freshsales_accounts','lodash','util','../../config/logger','api','moment'];(function(_0xc80702,_0x18ef50){var _0x4c4c76=function(_0x24ee31){while(--_0x24ee31){_0xc80702['push'](_0xc80702['shift']());}};_0x4c4c76(++_0x18ef50);}(_0x2272,0xd8));var _0x2227=function(_0xa464c9,_0x7c86d8){_0xa464c9=_0xa464c9-0x0;var _0x3d73c4=_0x2272[_0xa464c9];return _0x3d73c4;};'use strict';var _=require(_0x2227('0x0'));var util=require(_0x2227('0x1'));var logger=require(_0x2227('0x2'))(_0x2227('0x3'));var moment=require(_0x2227('0x4'));var BPromise=require('bluebird');var rp=require(_0x2227('0x5'));var fs=require('fs');var path=require(_0x2227('0x6'));var rimraf=require(_0x2227('0x7'));var config=require('../../config/environment');var attributes=require('./intFreshsalesAccount.attributes');var integrations=require(_0x2227('0x8'));module[_0x2227('0x9')]=function(_0xb33647,_0x2591db){return _0xb33647[_0x2227('0xa')](_0x2227('0xb'),attributes,{'tableName':_0x2227('0xc'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index b960ddd..4e4cf3a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2272=['lodash','util','moment','bluebird','randomstring','../../mysqldb','../../config/utils','../../config/logger','jayson/promise','client','http','request','then','info','request\x20sent','debug','FreshsalesAccount,\x20%s,\x20%s,\x20%s','stringify','error','code','FreshsalesAccount,\x20%s,\x20%s','message','result','catch','GetFreshsalesAccount','FreshsalesAccount','findAll','options','where','attributes','limit','include','map','model','raw','ShowFreshsalesAccount'];(function(_0x2dafbe,_0x5d04de){var _0x58a45a=function(_0x50ac96){while(--_0x50ac96){_0x2dafbe['push'](_0x2dafbe['shift']());}};_0x58a45a(++_0x5d04de);}(_0x2272,0xd8));var _0x2227=function(_0x17d9e3,_0x1f969c){_0x17d9e3=_0x17d9e3-0x0;var _0x14192d=_0x2272[_0x17d9e3];return _0x14192d;};'use strict';var _=require(_0x2227('0x0'));var util=require(_0x2227('0x1'));var moment=require(_0x2227('0x2'));var BPromise=require(_0x2227('0x3'));var rs=require(_0x2227('0x4'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x2227('0x5'))['db'];var utils=require(_0x2227('0x6'));var logger=require(_0x2227('0x7'))('rpc');var config=require('../../config/environment');var jayson=require(_0x2227('0x8'));var client=jayson[_0x2227('0x9')][_0x2227('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x2591db,_0xaec623,_0x1413d2){return new BPromise(function(_0x41fc3f,_0x34bdd0){return client[_0x2227('0xb')](_0x2591db,_0x1413d2)[_0x2227('0xc')](function(_0x496bbd){logger[_0x2227('0xd')]('FreshsalesAccount,\x20%s,\x20%s',_0xaec623,_0x2227('0xe'));logger[_0x2227('0xf')](_0x2227('0x10'),_0xaec623,_0x2227('0xe'),JSON[_0x2227('0x11')](_0x496bbd));if(_0x496bbd['error']){if(_0x496bbd[_0x2227('0x12')][_0x2227('0x13')]===0x1f4){logger[_0x2227('0x12')](_0x2227('0x14'),_0xaec623,_0x496bbd[_0x2227('0x12')][_0x2227('0x15')]);return _0x34bdd0(_0x496bbd['error']['message']);}logger['error'](_0x2227('0x14'),_0xaec623,_0x496bbd['error'][_0x2227('0x15')]);return _0x41fc3f(_0x496bbd[_0x2227('0x12')]['message']);}else{logger[_0x2227('0xd')](_0x2227('0x14'),_0xaec623,_0x2227('0xe'));_0x41fc3f(_0x496bbd[_0x2227('0x16')][_0x2227('0x15')]);}})[_0x2227('0x17')](function(_0x508e92){logger[_0x2227('0x12')](_0x2227('0x14'),_0xaec623,_0x508e92);_0x34bdd0(_0x508e92);});});}exports[_0x2227('0x18')]=function(_0x531f75){var _0x11bf80=this;return new Promise(function(_0x620012,_0x65e3b6){return db[_0x2227('0x19')][_0x2227('0x1a')]({'raw':_0x531f75[_0x2227('0x1b')]?_0x531f75[_0x2227('0x1b')]['raw']===undefined?!![]:![]:!![],'where':_0x531f75[_0x2227('0x1b')]?_0x531f75['options'][_0x2227('0x1c')]||null:null,'attributes':_0x531f75[_0x2227('0x1b')]?_0x531f75[_0x2227('0x1b')][_0x2227('0x1d')]||null:null,'limit':_0x531f75[_0x2227('0x1b')]?_0x531f75[_0x2227('0x1b')][_0x2227('0x1e')]||null:null,'include':_0x531f75[_0x2227('0x1b')]?_0x531f75[_0x2227('0x1b')][_0x2227('0x1f')]?_[_0x2227('0x20')](_0x531f75['options'][_0x2227('0x1f')],function(_0x42d500){return{'model':db[_0x42d500['model']],'as':_0x42d500['as'],'attributes':_0x42d500[_0x2227('0x1d')],'include':_0x42d500[_0x2227('0x1f')]?_['map'](_0x42d500['include'],function(_0x17c7a4){return{'model':db[_0x17c7a4[_0x2227('0x21')]],'as':_0x17c7a4['as'],'attributes':_0x17c7a4[_0x2227('0x1d')],'include':_0x17c7a4[_0x2227('0x1f')]?_['map'](_0x17c7a4[_0x2227('0x1f')],function(_0x301304){return{'model':db[_0x301304[_0x2227('0x21')]],'as':_0x301304['as'],'attributes':_0x301304[_0x2227('0x1d')]};}):[]};}):[]};}):[]:[]})['then'](function(_0x204def){logger[_0x2227('0xd')](_0x2227('0x18'),_0x531f75);logger[_0x2227('0xf')](_0x2227('0x18'),_0x531f75,JSON['stringify'](_0x204def));_0x620012(_0x204def);})['catch'](function(_0x5d1d56){logger[_0x2227('0x12')]('GetFreshsalesAccount',_0x5d1d56[_0x2227('0x15')],_0x531f75);_0x65e3b6(_0x11bf80[_0x2227('0x12')](0x1f4,_0x5d1d56['message']));});});};exports['ShowFreshsalesAccount']=function(_0x1f1ba7){var _0x1818ba=this;return new Promise(function(_0x21838a,_0x4cc1e1){return db[_0x2227('0x19')]['find']({'raw':_0x1f1ba7[_0x2227('0x1b')]?_0x1f1ba7[_0x2227('0x1b')][_0x2227('0x22')]===undefined?!![]:![]:!![],'where':_0x1f1ba7[_0x2227('0x1b')]?_0x1f1ba7[_0x2227('0x1b')][_0x2227('0x1c')]||null:null,'attributes':_0x1f1ba7[_0x2227('0x1b')]?_0x1f1ba7[_0x2227('0x1b')][_0x2227('0x1d')]||null:null,'include':_0x1f1ba7[_0x2227('0x1b')]?_0x1f1ba7[_0x2227('0x1b')]['include']?_[_0x2227('0x20')](_0x1f1ba7[_0x2227('0x1b')][_0x2227('0x1f')],function(_0x6cd5d7){return{'model':db[_0x6cd5d7['model']],'as':_0x6cd5d7['as'],'attributes':_0x6cd5d7[_0x2227('0x1d')],'include':_0x6cd5d7[_0x2227('0x1f')]?_[_0x2227('0x20')](_0x6cd5d7[_0x2227('0x1f')],function(_0x5186a6){return{'model':db[_0x5186a6[_0x2227('0x21')]],'as':_0x5186a6['as'],'attributes':_0x5186a6[_0x2227('0x1d')],'include':_0x5186a6[_0x2227('0x1f')]?_['map'](_0x5186a6['include'],function(_0x35d9f1){return{'model':db[_0x35d9f1[_0x2227('0x21')]],'as':_0x35d9f1['as'],'attributes':_0x35d9f1['attributes']};}):[]};}):[]};}):[]:[]})[_0x2227('0xc')](function(_0x9a8cc3){logger['info'](_0x2227('0x23'),_0x1f1ba7);logger['debug'](_0x2227('0x23'),_0x1f1ba7,JSON[_0x2227('0x11')](_0x9a8cc3));_0x21838a(_0x9a8cc3);})[_0x2227('0x17')](function(_0x36db00){logger['error'](_0x2227('0x23'),_0x36db00['message'],_0x1f1ba7);_0x4cc1e1(_0x1818ba[_0x2227('0x12')](0x1f4,_0x36db00[_0x2227('0x15')]));});});};
\ No newline at end of file
+var _0x1967=['../../config/environment','client','http','request','then','info','FreshsalesAccount,\x20%s,\x20%s','FreshsalesAccount,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','code','message','result','catch','GetFreshsalesAccount','FreshsalesAccount','findAll','options','raw','where','limit','include','map','model','attributes','ShowFreshsalesAccount','find','debug','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc'];(function(_0xd4ed14,_0x29a39d){var _0x5aa3b6=function(_0x3e54c7){while(--_0x3e54c7){_0xd4ed14['push'](_0xd4ed14['shift']());}};_0x5aa3b6(++_0x29a39d);}(_0x1967,0x173));var _0x7196=function(_0x16e8f2,_0x3c4205){_0x16e8f2=_0x16e8f2-0x0;var _0x3defec=_0x1967[_0x16e8f2];return _0x3defec;};'use strict';var _=require('lodash');var util=require(_0x7196('0x0'));var moment=require(_0x7196('0x1'));var BPromise=require(_0x7196('0x2'));var rs=require(_0x7196('0x3'));var fs=require('fs');var Redis=require(_0x7196('0x4'));var db=require(_0x7196('0x5'))['db'];var utils=require(_0x7196('0x6'));var logger=require(_0x7196('0x7'))(_0x7196('0x8'));var config=require(_0x7196('0x9'));var jayson=require('jayson/promise');var client=jayson[_0x7196('0xa')][_0x7196('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x194746,_0x40e0af,_0x266a6e){return new BPromise(function(_0xad78a,_0x510c72){return client[_0x7196('0xc')](_0x194746,_0x266a6e)[_0x7196('0xd')](function(_0x3f846e){logger[_0x7196('0xe')](_0x7196('0xf'),_0x40e0af,'request\x20sent');logger['debug'](_0x7196('0x10'),_0x40e0af,_0x7196('0x11'),JSON[_0x7196('0x12')](_0x3f846e));if(_0x3f846e[_0x7196('0x13')]){if(_0x3f846e[_0x7196('0x13')][_0x7196('0x14')]===0x1f4){logger[_0x7196('0x13')](_0x7196('0xf'),_0x40e0af,_0x3f846e[_0x7196('0x13')][_0x7196('0x15')]);return _0x510c72(_0x3f846e[_0x7196('0x13')]['message']);}logger[_0x7196('0x13')](_0x7196('0xf'),_0x40e0af,_0x3f846e[_0x7196('0x13')][_0x7196('0x15')]);return _0xad78a(_0x3f846e['error'][_0x7196('0x15')]);}else{logger['info'](_0x7196('0xf'),_0x40e0af,_0x7196('0x11'));_0xad78a(_0x3f846e[_0x7196('0x16')][_0x7196('0x15')]);}})[_0x7196('0x17')](function(_0x2e3e0e){logger[_0x7196('0x13')](_0x7196('0xf'),_0x40e0af,_0x2e3e0e);_0x510c72(_0x2e3e0e);});});}exports[_0x7196('0x18')]=function(_0x32fe2b){var _0x385f2d=this;return new Promise(function(_0x5b716a,_0x4c4f91){return db[_0x7196('0x19')][_0x7196('0x1a')]({'raw':_0x32fe2b[_0x7196('0x1b')]?_0x32fe2b['options'][_0x7196('0x1c')]===undefined?!![]:![]:!![],'where':_0x32fe2b['options']?_0x32fe2b['options'][_0x7196('0x1d')]||null:null,'attributes':_0x32fe2b[_0x7196('0x1b')]?_0x32fe2b[_0x7196('0x1b')]['attributes']||null:null,'limit':_0x32fe2b['options']?_0x32fe2b[_0x7196('0x1b')][_0x7196('0x1e')]||null:null,'include':_0x32fe2b['options']?_0x32fe2b[_0x7196('0x1b')][_0x7196('0x1f')]?_[_0x7196('0x20')](_0x32fe2b[_0x7196('0x1b')][_0x7196('0x1f')],function(_0x549f34){return{'model':db[_0x549f34[_0x7196('0x21')]],'as':_0x549f34['as'],'attributes':_0x549f34['attributes'],'include':_0x549f34[_0x7196('0x1f')]?_[_0x7196('0x20')](_0x549f34[_0x7196('0x1f')],function(_0xa69810){return{'model':db[_0xa69810[_0x7196('0x21')]],'as':_0xa69810['as'],'attributes':_0xa69810[_0x7196('0x22')],'include':_0xa69810['include']?_['map'](_0xa69810[_0x7196('0x1f')],function(_0x2d284f){return{'model':db[_0x2d284f[_0x7196('0x21')]],'as':_0x2d284f['as'],'attributes':_0x2d284f['attributes']};}):[]};}):[]};}):[]:[]})['then'](function(_0x41cfd2){logger[_0x7196('0xe')](_0x7196('0x18'),_0x32fe2b);logger['debug'](_0x7196('0x18'),_0x32fe2b,JSON['stringify'](_0x41cfd2));_0x5b716a(_0x41cfd2);})[_0x7196('0x17')](function(_0x59d79d){logger[_0x7196('0x13')](_0x7196('0x18'),_0x59d79d[_0x7196('0x15')],_0x32fe2b);_0x4c4f91(_0x385f2d['error'](0x1f4,_0x59d79d[_0x7196('0x15')]));});});};exports[_0x7196('0x23')]=function(_0x2f9583){var _0xf999e9=this;return new Promise(function(_0x50c386,_0x39710d){return db[_0x7196('0x19')][_0x7196('0x24')]({'raw':_0x2f9583[_0x7196('0x1b')]?_0x2f9583[_0x7196('0x1b')][_0x7196('0x1c')]===undefined?!![]:![]:!![],'where':_0x2f9583[_0x7196('0x1b')]?_0x2f9583[_0x7196('0x1b')][_0x7196('0x1d')]||null:null,'attributes':_0x2f9583[_0x7196('0x1b')]?_0x2f9583[_0x7196('0x1b')]['attributes']||null:null,'include':_0x2f9583[_0x7196('0x1b')]?_0x2f9583['options'][_0x7196('0x1f')]?_['map'](_0x2f9583[_0x7196('0x1b')][_0x7196('0x1f')],function(_0x5616ed){return{'model':db[_0x5616ed[_0x7196('0x21')]],'as':_0x5616ed['as'],'attributes':_0x5616ed[_0x7196('0x22')],'include':_0x5616ed[_0x7196('0x1f')]?_[_0x7196('0x20')](_0x5616ed[_0x7196('0x1f')],function(_0x4a8580){return{'model':db[_0x4a8580[_0x7196('0x21')]],'as':_0x4a8580['as'],'attributes':_0x4a8580[_0x7196('0x22')],'include':_0x4a8580[_0x7196('0x1f')]?_[_0x7196('0x20')](_0x4a8580[_0x7196('0x1f')],function(_0x123cad){return{'model':db[_0x123cad['model']],'as':_0x123cad['as'],'attributes':_0x123cad[_0x7196('0x22')]};}):[]};}):[]};}):[]:[]})[_0x7196('0xd')](function(_0x191df2){logger['info'](_0x7196('0x23'),_0x2f9583);logger[_0x7196('0x25')](_0x7196('0x23'),_0x2f9583,JSON[_0x7196('0x12')](_0x191df2));_0x50c386(_0x191df2);})[_0x7196('0x17')](function(_0x31fca7){logger[_0x7196('0x13')](_0x7196('0x23'),_0x31fca7[_0x7196('0x15')],_0x2f9583);_0x39710d(_0xf999e9[_0x7196('0x13')](0x1f4,_0x31fca7['message']));});});};
\ No newline at end of file
index 88b749f..ef171cf 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x333d=['/:id/subjects','getSubjects','/:id/descriptions','getDescriptions','/:id/fields','getFields','post','create','put','/:id','update','destroy','exports','multer','path','connect-timeout','express','Router','../../components/auth/service','../../config/environment','./intFreshsalesConfiguration.controller','isAuthenticated','index','get','show'];(function(_0x13f210,_0x4367ea){var _0x498f22=function(_0x1ef94a){while(--_0x1ef94a){_0x13f210['push'](_0x13f210['shift']());}};_0x498f22(++_0x4367ea);}(_0x333d,0xbc));var _0xd333=function(_0x255b94,_0x352b45){_0x255b94=_0x255b94-0x0;var _0xc5806b=_0x333d[_0x255b94];return _0xc5806b;};'use strict';var multer=require(_0xd333('0x0'));var util=require('util');var path=require(_0xd333('0x1'));var timeout=require(_0xd333('0x2'));var express=require(_0xd333('0x3'));var router=express[_0xd333('0x4')]();var fs_extra=require('fs-extra');var auth=require(_0xd333('0x5'));var interaction=require('../../components/interaction/service');var config=require(_0xd333('0x6'));var controller=require(_0xd333('0x7'));router['get']('/',auth[_0xd333('0x8')](),controller[_0xd333('0x9')]);router[_0xd333('0xa')]('/:id',auth[_0xd333('0x8')](),controller[_0xd333('0xb')]);router['get'](_0xd333('0xc'),auth[_0xd333('0x8')](),controller[_0xd333('0xd')]);router['get'](_0xd333('0xe'),auth['isAuthenticated'](),controller[_0xd333('0xf')]);router[_0xd333('0xa')](_0xd333('0x10'),auth['isAuthenticated'](),controller[_0xd333('0x11')]);router[_0xd333('0x12')]('/',auth[_0xd333('0x8')](),controller[_0xd333('0x13')]);router[_0xd333('0x14')](_0xd333('0x15'),auth[_0xd333('0x8')](),controller[_0xd333('0x16')]);router['delete'](_0xd333('0x15'),auth[_0xd333('0x8')](),controller[_0xd333('0x17')]);module[_0xd333('0x18')]=router;
\ No newline at end of file
+var _0xb7cc=['isAuthenticated','index','show','/:id/subjects','getSubjects','getDescriptions','/:id/fields','getFields','create','/:id','delete','exports','multer','util','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../config/environment','get'];(function(_0x202c61,_0x3673e0){var _0x540691=function(_0x409610){while(--_0x409610){_0x202c61['push'](_0x202c61['shift']());}};_0x540691(++_0x3673e0);}(_0xb7cc,0x186));var _0xcb7c=function(_0xaa1b3e,_0x47d976){_0xaa1b3e=_0xaa1b3e-0x0;var _0x454d7d=_0xb7cc[_0xaa1b3e];return _0x454d7d;};'use strict';var multer=require(_0xcb7c('0x0'));var util=require(_0xcb7c('0x1'));var path=require('path');var timeout=require(_0xcb7c('0x2'));var express=require(_0xcb7c('0x3'));var router=express[_0xcb7c('0x4')]();var fs_extra=require(_0xcb7c('0x5'));var auth=require(_0xcb7c('0x6'));var interaction=require('../../components/interaction/service');var config=require(_0xcb7c('0x7'));var controller=require('./intFreshsalesConfiguration.controller');router[_0xcb7c('0x8')]('/',auth[_0xcb7c('0x9')](),controller[_0xcb7c('0xa')]);router[_0xcb7c('0x8')]('/:id',auth[_0xcb7c('0x9')](),controller[_0xcb7c('0xb')]);router[_0xcb7c('0x8')](_0xcb7c('0xc'),auth[_0xcb7c('0x9')](),controller[_0xcb7c('0xd')]);router['get']('/:id/descriptions',auth[_0xcb7c('0x9')](),controller[_0xcb7c('0xe')]);router[_0xcb7c('0x8')](_0xcb7c('0xf'),auth[_0xcb7c('0x9')](),controller[_0xcb7c('0x10')]);router['post']('/',auth[_0xcb7c('0x9')](),controller[_0xcb7c('0x11')]);router['put'](_0xcb7c('0x12'),auth[_0xcb7c('0x9')](),controller['update']);router[_0xcb7c('0x13')]('/:id',auth[_0xcb7c('0x9')](),controller['destroy']);module[_0xcb7c('0x14')]=router;
\ No newline at end of file
index a7a02ee..d09e862 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xcdc7=['exports','STRING','sequelize'];(function(_0x1edc74,_0x50b399){var _0x226e3c=function(_0x5ed2ab){while(--_0x5ed2ab){_0x1edc74['push'](_0x1edc74['shift']());}};_0x226e3c(++_0x50b399);}(_0xcdc7,0xda));var _0x7cdc=function(_0x1f5610,_0x1de60a){_0x1f5610=_0x1f5610-0x0;var _0x40e056=_0xcdc7[_0x1f5610];return _0x40e056;};'use strict';var Sequelize=require(_0x7cdc('0x0'));module[_0x7cdc('0x1')]={'name':{'type':Sequelize[_0x7cdc('0x2')]},'description':{'type':Sequelize[_0x7cdc('0x2')]}};
\ No newline at end of file
+var _0x588e=['exports','sequelize'];(function(_0x2d8691,_0x508608){var _0x18b596=function(_0x129934){while(--_0x129934){_0x2d8691['push'](_0x2d8691['shift']());}};_0x18b596(++_0x508608);}(_0x588e,0x107));var _0xe588=function(_0x5283d4,_0x134a3b){_0x5283d4=_0x5283d4-0x0;var _0x2d0300=_0x588e[_0x5283d4];return _0x2d0300;};'use strict';var Sequelize=require(_0xe588('0x0'));module[_0xe588('0x1')]={'name':{'type':Sequelize['STRING']},'description':{'type':Sequelize['STRING']}};
\ No newline at end of file
index f456aee..b8f8830 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x27a0=['FreshsalesConfiguration','fieldName','key','map','query','keys','filters','model','attributes','fields','length','hasOwnProperty','nolimit','limit','order','sort','where','pick','filter','merge','VIRTUAL','options','includeAll','include','findAll','rows','catch','show','params','intersection','find','create','body','getSubjects','FreshsalesField','rawAttributes','getDescriptions','findOne','getFields','rimraf','zip-dir','fast-json-patch','request-promise','moment','sox','to-csv','ejs','fs-extra','lodash','squel','jsforce','desk.js','papaparse','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','status','end','offset','count','Content-Range','reject','save','update','then','destroy','error','name','index'];(function(_0x1d2195,_0x4b8096){var _0x4962cd=function(_0x301f5a){while(--_0x301f5a){_0x1d2195['push'](_0x1d2195['shift']());}};_0x4962cd(++_0x4b8096);}(_0x27a0,0xbf));var _0x027a=function(_0x5b678d,_0x1c16cc){_0x5b678d=_0x5b678d-0x0;var _0x25dca5=_0x27a0[_0x5b678d];return _0x25dca5;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x027a('0x0'));var zipdir=require(_0x027a('0x1'));var jsonpatch=require(_0x027a('0x2'));var rp=require(_0x027a('0x3'));var moment=require(_0x027a('0x4'));var BPromise=require('bluebird');var Mustache=require('mustache');var util=require('util');var path=require('path');var sox=require(_0x027a('0x5'));var csv=require(_0x027a('0x6'));var ejs=require(_0x027a('0x7'));var fs=require('fs');var fs_extra=require(_0x027a('0x8'));var _=require(_0x027a('0x9'));var squel=require(_0x027a('0xa'));var crypto=require('crypto');var jsforce=require(_0x027a('0xb'));var deskjs=require(_0x027a('0xc'));var toCsv=require(_0x027a('0x6'));var querystring=require('querystring');var Papa=require(_0x027a('0xd'));var Redis=require(_0x027a('0xe'));var authService=require(_0x027a('0xf'));var qs=require('../../components/parsers/qs');var as=require(_0x027a('0x10'));var hardwareService=require(_0x027a('0x11'));var logger=require(_0x027a('0x12'))(_0x027a('0x13'));var utils=require(_0x027a('0x14'));var config=require(_0x027a('0x15'));var licenseUtil=require(_0x027a('0x16'));var db=require(_0x027a('0x17'))['db'];function respondWithStatusCode(_0x351d7e,_0x3e0c1e){_0x3e0c1e=_0x3e0c1e||0xcc;return function(_0x96a5c3){if(_0x96a5c3){return _0x351d7e['sendStatus'](_0x3e0c1e);}return _0x351d7e[_0x027a('0x18')](_0x3e0c1e)[_0x027a('0x19')]();};}function respondWithResult(_0x2d27f8,_0x21da53){_0x21da53=_0x21da53||0xc8;return function(_0x40fec0){if(_0x40fec0){return _0x2d27f8['status'](_0x21da53)['json'](_0x40fec0);}};}function respondWithFilteredResult(_0x1d680d,_0x5cfc6d){return function(_0x2b3870){if(_0x2b3870){var _0x559d13=typeof _0x5cfc6d[_0x027a('0x1a')]==='undefined'&&typeof _0x5cfc6d['limit']==='undefined';var _0x588f53=_0x2b3870[_0x027a('0x1b')];var _0x826d19=_0x559d13?0x0:_0x5cfc6d[_0x027a('0x1a')];var _0x52125e=_0x559d13?_0x2b3870[_0x027a('0x1b')]:_0x5cfc6d[_0x027a('0x1a')]+_0x5cfc6d['limit'];var _0x4f8c3d;if(_0x52125e>=_0x588f53){_0x52125e=_0x588f53;_0x4f8c3d=0xc8;}else{_0x4f8c3d=0xce;}_0x1d680d[_0x027a('0x18')](_0x4f8c3d);return _0x1d680d['set'](_0x027a('0x1c'),_0x826d19+'-'+_0x52125e+'/'+_0x588f53)['json'](_0x2b3870);}return null;};}function patchUpdates(_0x59511c){return function(_0x58b129){try{jsonpatch['apply'](_0x58b129,_0x59511c,!![]);}catch(_0x18efe7){return BPromise[_0x027a('0x1d')](_0x18efe7);}return _0x58b129[_0x027a('0x1e')]();};}function saveUpdates(_0xdf8756,_0x51b870){return function(_0x2fb1d0){if(_0x2fb1d0){return _0x2fb1d0[_0x027a('0x1f')](_0xdf8756)[_0x027a('0x20')](function(_0x3dee99){return _0x3dee99;});}return null;};}function removeEntity(_0x178ed8,_0x3bbd46){return function(_0x595f0e){if(_0x595f0e){return _0x595f0e[_0x027a('0x21')]()['then'](function(){_0x178ed8[_0x027a('0x18')](0xcc)[_0x027a('0x19')]();});}};}function handleEntityNotFound(_0x1b1a13,_0x83fe3e){return function(_0x582943){if(!_0x582943){_0x1b1a13['sendStatus'](0x194);}return _0x582943;};}function handleError(_0x18458f,_0xcc7562){_0xcc7562=_0xcc7562||0x1f4;return function(_0x338141){logger[_0x027a('0x22')](_0x338141['stack']);if(_0x338141[_0x027a('0x23')]){delete _0x338141['name'];}_0x18458f[_0x027a('0x18')](_0xcc7562)['send'](_0x338141);};}exports[_0x027a('0x24')]=function(_0x4d5a25,_0x578ea5){var _0x31385d={},_0x5782ac={},_0x47a365={'count':0x0,'rows':[]};var _0x448ba0=_['map'](db[_0x027a('0x25')]['rawAttributes'],function(_0x2640d8){return{'name':_0x2640d8[_0x027a('0x26')],'type':_0x2640d8['type'][_0x027a('0x27')]};});_0x5782ac['model']=_[_0x027a('0x28')](_0x448ba0,_0x027a('0x23'));_0x5782ac[_0x027a('0x29')]=_[_0x027a('0x2a')](_0x4d5a25[_0x027a('0x29')]);_0x5782ac[_0x027a('0x2b')]=_['intersection'](_0x5782ac[_0x027a('0x2c')],_0x5782ac['query']);_0x31385d[_0x027a('0x2d')]=_['intersection'](_0x5782ac[_0x027a('0x2c')],qs[_0x027a('0x2e')](_0x4d5a25[_0x027a('0x29')][_0x027a('0x2e')]));_0x31385d[_0x027a('0x2d')]=_0x31385d['attributes'][_0x027a('0x2f')]?_0x31385d[_0x027a('0x2d')]:_0x5782ac[_0x027a('0x2c')];if(!_0x4d5a25[_0x027a('0x29')][_0x027a('0x30')](_0x027a('0x31'))){_0x31385d[_0x027a('0x32')]=qs[_0x027a('0x32')](_0x4d5a25[_0x027a('0x29')][_0x027a('0x32')]);_0x31385d[_0x027a('0x1a')]=qs['offset'](_0x4d5a25[_0x027a('0x29')][_0x027a('0x1a')]);}_0x31385d[_0x027a('0x33')]=qs[_0x027a('0x34')](_0x4d5a25[_0x027a('0x29')][_0x027a('0x34')]);_0x31385d[_0x027a('0x35')]=qs['filters'](_[_0x027a('0x36')](_0x4d5a25[_0x027a('0x29')],_0x5782ac[_0x027a('0x2b')]),_0x448ba0);if(_0x4d5a25['query'][_0x027a('0x37')]){_0x31385d['where']=_[_0x027a('0x38')](_0x31385d[_0x027a('0x35')],{'$or':_[_0x027a('0x28')](_0x448ba0,function(_0x5a7650){if(_0x5a7650['type']!==_0x027a('0x39')){var _0x2eea3b={};_0x2eea3b[_0x5a7650['name']]={'$like':'%'+_0x4d5a25[_0x027a('0x29')][_0x027a('0x37')]+'%'};return _0x2eea3b;}})});}_0x31385d=_[_0x027a('0x38')]({},_0x31385d,_0x4d5a25[_0x027a('0x3a')]);var _0x30e5b2={'where':_0x31385d[_0x027a('0x35')]};return db[_0x027a('0x25')][_0x027a('0x1b')](_0x30e5b2)[_0x027a('0x20')](function(_0x37a0c7){_0x47a365[_0x027a('0x1b')]=_0x37a0c7;if(_0x4d5a25[_0x027a('0x29')][_0x027a('0x3b')]){_0x31385d[_0x027a('0x3c')]=[{'all':!![]}];}return db[_0x027a('0x25')][_0x027a('0x3d')](_0x31385d);})[_0x027a('0x20')](function(_0x5a3dee){_0x47a365[_0x027a('0x3e')]=_0x5a3dee;return _0x47a365;})[_0x027a('0x20')](respondWithFilteredResult(_0x578ea5,_0x31385d))[_0x027a('0x3f')](handleError(_0x578ea5,null));};exports[_0x027a('0x40')]=function(_0x17abbe,_0x24d370){var _0x4c8110={'raw':![],'where':{'id':_0x17abbe[_0x027a('0x41')]['id']}},_0x96d3aa={};_0x96d3aa['model']=_[_0x027a('0x2a')](db['FreshsalesConfiguration']['rawAttributes']);_0x96d3aa[_0x027a('0x29')]=_['keys'](_0x17abbe[_0x027a('0x29')]);_0x96d3aa[_0x027a('0x2b')]=_[_0x027a('0x42')](_0x96d3aa[_0x027a('0x2c')],_0x96d3aa[_0x027a('0x29')]);_0x4c8110['attributes']=_[_0x027a('0x42')](_0x96d3aa[_0x027a('0x2c')],qs[_0x027a('0x2e')](_0x17abbe['query']['fields']));_0x4c8110['attributes']=_0x4c8110['attributes'][_0x027a('0x2f')]?_0x4c8110[_0x027a('0x2d')]:_0x96d3aa[_0x027a('0x2c')];if(_0x17abbe[_0x027a('0x29')][_0x027a('0x3b')]){_0x4c8110[_0x027a('0x3c')]=[{'all':!![]}];}_0x4c8110=_['merge']({},_0x4c8110,_0x17abbe['options']);return db[_0x027a('0x25')][_0x027a('0x43')](_0x4c8110)[_0x027a('0x20')](handleEntityNotFound(_0x24d370,null))[_0x027a('0x20')](respondWithResult(_0x24d370,null))[_0x027a('0x3f')](handleError(_0x24d370,null));};exports[_0x027a('0x44')]=function(_0x235a38,_0x1bddc1){return db[_0x027a('0x25')]['create'](_0x235a38[_0x027a('0x45')],{})[_0x027a('0x20')](respondWithResult(_0x1bddc1,0xc9))[_0x027a('0x3f')](handleError(_0x1bddc1,null));};exports[_0x027a('0x1f')]=function(_0xa3a68d,_0x21c6f4){if(_0xa3a68d[_0x027a('0x45')]['id']){delete _0xa3a68d[_0x027a('0x45')]['id'];}return db['FreshsalesConfiguration'][_0x027a('0x43')]({'where':{'id':_0xa3a68d[_0x027a('0x41')]['id']}})['then'](handleEntityNotFound(_0x21c6f4,null))[_0x027a('0x20')](saveUpdates(_0xa3a68d[_0x027a('0x45')],null))['then'](respondWithResult(_0x21c6f4,null))['catch'](handleError(_0x21c6f4,null));};exports['destroy']=function(_0x37048b,_0x5bdd44){return db[_0x027a('0x25')]['find']({'where':{'id':_0x37048b['params']['id']}})['then'](handleEntityNotFound(_0x5bdd44,null))['then'](removeEntity(_0x5bdd44,null))[_0x027a('0x3f')](handleError(_0x5bdd44,null));};exports[_0x027a('0x46')]=function(_0x53e1d8,_0x4a188b,_0x435771){var _0x7083a5={};var _0x6e405e={};var _0x42bef1;var _0x493f5f;return db[_0x027a('0x25')]['findOne']({'where':{'id':_0x53e1d8[_0x027a('0x41')]['id']}})[_0x027a('0x20')](handleEntityNotFound(_0x4a188b,null))[_0x027a('0x20')](function(_0x30bfb9){if(_0x30bfb9){_0x42bef1=_0x30bfb9;_0x6e405e[_0x027a('0x2c')]=_[_0x027a('0x2a')](db[_0x027a('0x47')][_0x027a('0x48')]);_0x6e405e['query']=_[_0x027a('0x2a')](_0x53e1d8[_0x027a('0x29')]);_0x6e405e[_0x027a('0x2b')]=_[_0x027a('0x42')](_0x6e405e[_0x027a('0x2c')],_0x6e405e[_0x027a('0x29')]);_0x7083a5[_0x027a('0x2d')]=_['intersection'](_0x6e405e[_0x027a('0x2c')],qs[_0x027a('0x2e')](_0x53e1d8[_0x027a('0x29')][_0x027a('0x2e')]));_0x7083a5[_0x027a('0x2d')]=_0x7083a5[_0x027a('0x2d')][_0x027a('0x2f')]?_0x7083a5[_0x027a('0x2d')]:_0x6e405e[_0x027a('0x2c')];_0x7083a5[_0x027a('0x33')]=qs[_0x027a('0x34')](_0x53e1d8[_0x027a('0x29')][_0x027a('0x34')]);_0x7083a5[_0x027a('0x35')]=qs[_0x027a('0x2b')](_['pick'](_0x53e1d8[_0x027a('0x29')],_0x6e405e[_0x027a('0x2b')]));if(_0x53e1d8[_0x027a('0x29')][_0x027a('0x37')]){_0x7083a5[_0x027a('0x35')]=_[_0x027a('0x38')](_0x7083a5[_0x027a('0x35')],{'$or':_[_0x027a('0x28')](_0x7083a5[_0x027a('0x2d')],function(_0x514c34){var _0x553850={};_0x553850[_0x514c34]={'$like':'%'+_0x53e1d8['query']['filter']+'%'};return _0x553850;})});}_0x7083a5=_[_0x027a('0x38')]({},_0x7083a5,_0x53e1d8[_0x027a('0x3a')]);return _0x42bef1[_0x027a('0x46')](_0x7083a5);}})[_0x027a('0x20')](function(_0x16c089){if(_0x16c089){_0x493f5f=_0x16c089['length'];if(!_0x53e1d8['query'][_0x027a('0x30')]('nolimit')){_0x7083a5['limit']=qs[_0x027a('0x32')](_0x53e1d8[_0x027a('0x29')][_0x027a('0x32')]);_0x7083a5[_0x027a('0x1a')]=qs[_0x027a('0x1a')](_0x53e1d8[_0x027a('0x29')][_0x027a('0x1a')]);}return _0x42bef1[_0x027a('0x46')](_0x7083a5);}})[_0x027a('0x20')](function(_0x5ea7b0){if(_0x5ea7b0){return _0x5ea7b0?{'count':_0x493f5f,'rows':_0x5ea7b0}:null;}})[_0x027a('0x20')](respondWithResult(_0x4a188b,null))[_0x027a('0x3f')](handleError(_0x4a188b,null));};exports[_0x027a('0x49')]=function(_0x3d5313,_0x2aa773,_0x1b5d30){var _0x2d145f={};var _0x8c5980={};var _0x1292ec;var _0x22bd81;return db[_0x027a('0x25')][_0x027a('0x4a')]({'where':{'id':_0x3d5313[_0x027a('0x41')]['id']}})[_0x027a('0x20')](handleEntityNotFound(_0x2aa773,null))['then'](function(_0x1f4282){if(_0x1f4282){_0x1292ec=_0x1f4282;_0x8c5980[_0x027a('0x2c')]=_[_0x027a('0x2a')](db[_0x027a('0x47')]['rawAttributes']);_0x8c5980['query']=_[_0x027a('0x2a')](_0x3d5313[_0x027a('0x29')]);_0x8c5980[_0x027a('0x2b')]=_[_0x027a('0x42')](_0x8c5980[_0x027a('0x2c')],_0x8c5980[_0x027a('0x29')]);_0x2d145f[_0x027a('0x2d')]=_[_0x027a('0x42')](_0x8c5980[_0x027a('0x2c')],qs['fields'](_0x3d5313[_0x027a('0x29')][_0x027a('0x2e')]));_0x2d145f[_0x027a('0x2d')]=_0x2d145f['attributes'][_0x027a('0x2f')]?_0x2d145f[_0x027a('0x2d')]:_0x8c5980['model'];_0x2d145f[_0x027a('0x33')]=qs[_0x027a('0x34')](_0x3d5313['query']['sort']);_0x2d145f[_0x027a('0x35')]=qs[_0x027a('0x2b')](_[_0x027a('0x36')](_0x3d5313[_0x027a('0x29')],_0x8c5980['filters']));if(_0x3d5313[_0x027a('0x29')][_0x027a('0x37')]){_0x2d145f[_0x027a('0x35')]=_['merge'](_0x2d145f[_0x027a('0x35')],{'$or':_['map'](_0x2d145f[_0x027a('0x2d')],function(_0x5ac758){var _0x682fa4={};_0x682fa4[_0x5ac758]={'$like':'%'+_0x3d5313[_0x027a('0x29')][_0x027a('0x37')]+'%'};return _0x682fa4;})});}_0x2d145f=_[_0x027a('0x38')]({},_0x2d145f,_0x3d5313['options']);return _0x1292ec['getDescriptions'](_0x2d145f);}})['then'](function(_0x48456a){if(_0x48456a){_0x22bd81=_0x48456a['length'];if(!_0x3d5313['query']['hasOwnProperty'](_0x027a('0x31'))){_0x2d145f['limit']=qs[_0x027a('0x32')](_0x3d5313['query'][_0x027a('0x32')]);_0x2d145f['offset']=qs['offset'](_0x3d5313[_0x027a('0x29')][_0x027a('0x1a')]);}return _0x1292ec[_0x027a('0x49')](_0x2d145f);}})['then'](function(_0x39e534){if(_0x39e534){return _0x39e534?{'count':_0x22bd81,'rows':_0x39e534}:null;}})['then'](respondWithResult(_0x2aa773,null))[_0x027a('0x3f')](handleError(_0x2aa773,null));};exports[_0x027a('0x4b')]=function(_0x1773e1,_0x5938ba,_0x41bb53){var _0x27df3c={};var _0x43e3d0={};var _0x16b968;var _0x600a06;return db[_0x027a('0x25')]['findOne']({'where':{'id':_0x1773e1[_0x027a('0x41')]['id']}})['then'](handleEntityNotFound(_0x5938ba,null))[_0x027a('0x20')](function(_0xdc5a00){if(_0xdc5a00){_0x16b968=_0xdc5a00;_0x43e3d0[_0x027a('0x2c')]=_[_0x027a('0x2a')](db['FreshsalesField'][_0x027a('0x48')]);_0x43e3d0[_0x027a('0x29')]=_[_0x027a('0x2a')](_0x1773e1[_0x027a('0x29')]);_0x43e3d0['filters']=_[_0x027a('0x42')](_0x43e3d0[_0x027a('0x2c')],_0x43e3d0[_0x027a('0x29')]);_0x27df3c[_0x027a('0x2d')]=_['intersection'](_0x43e3d0[_0x027a('0x2c')],qs[_0x027a('0x2e')](_0x1773e1['query'][_0x027a('0x2e')]));_0x27df3c[_0x027a('0x2d')]=_0x27df3c['attributes'][_0x027a('0x2f')]?_0x27df3c[_0x027a('0x2d')]:_0x43e3d0[_0x027a('0x2c')];_0x27df3c[_0x027a('0x33')]=qs[_0x027a('0x34')](_0x1773e1[_0x027a('0x29')][_0x027a('0x34')]);_0x27df3c['where']=qs['filters'](_['pick'](_0x1773e1[_0x027a('0x29')],_0x43e3d0[_0x027a('0x2b')]));if(_0x1773e1[_0x027a('0x29')][_0x027a('0x37')]){_0x27df3c[_0x027a('0x35')]=_[_0x027a('0x38')](_0x27df3c['where'],{'$or':_[_0x027a('0x28')](_0x27df3c[_0x027a('0x2d')],function(_0x2c9d52){var _0x2b17e6={};_0x2b17e6[_0x2c9d52]={'$like':'%'+_0x1773e1['query']['filter']+'%'};return _0x2b17e6;})});}_0x27df3c=_[_0x027a('0x38')]({},_0x27df3c,_0x1773e1['options']);return _0x16b968[_0x027a('0x4b')](_0x27df3c);}})[_0x027a('0x20')](function(_0x5e67f0){if(_0x5e67f0){_0x600a06=_0x5e67f0[_0x027a('0x2f')];if(!_0x1773e1[_0x027a('0x29')][_0x027a('0x30')](_0x027a('0x31'))){_0x27df3c[_0x027a('0x32')]=qs[_0x027a('0x32')](_0x1773e1[_0x027a('0x29')][_0x027a('0x32')]);_0x27df3c[_0x027a('0x1a')]=qs[_0x027a('0x1a')](_0x1773e1[_0x027a('0x29')][_0x027a('0x1a')]);}return _0x16b968[_0x027a('0x4b')](_0x27df3c);}})[_0x027a('0x20')](function(_0x45ff44){if(_0x45ff44){return _0x45ff44?{'count':_0x600a06,'rows':_0x45ff44}:null;}})[_0x027a('0x20')](respondWithResult(_0x5938ba,null))[_0x027a('0x3f')](handleError(_0x5938ba,null));};
\ No newline at end of file
+var _0x76fe=['intersection','attributes','nolimit','order','sort','filters','pick','filter','where','merge','VIRTUAL','options','includeAll','include','findAll','catch','show','params','keys','fields','length','create','body','find','getSubjects','findOne','FreshsalesField','hasOwnProperty','getDescriptions','getFields','eml-format','zip-dir','fast-json-patch','request-promise','bluebird','mustache','util','path','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/environment','sendStatus','status','end','offset','limit','undefined','count','Content-Range','apply','save','update','destroy','then','error','stack','name','send','index','map','FreshsalesConfiguration','rawAttributes','fieldName','type','key','model','query'];(function(_0x59c56c,_0x53b742){var _0x704d0c=function(_0x36ba0a){while(--_0x36ba0a){_0x59c56c['push'](_0x59c56c['shift']());}};_0x704d0c(++_0x53b742);}(_0x76fe,0xc2));var _0xe76f=function(_0x2416b2,_0x134439){_0x2416b2=_0x2416b2-0x0;var _0x159c30=_0x76fe[_0x2416b2];return _0x159c30;};'use strict';var emlformat=require(_0xe76f('0x0'));var rimraf=require('rimraf');var zipdir=require(_0xe76f('0x1'));var jsonpatch=require(_0xe76f('0x2'));var rp=require(_0xe76f('0x3'));var moment=require('moment');var BPromise=require(_0xe76f('0x4'));var Mustache=require(_0xe76f('0x5'));var util=require(_0xe76f('0x6'));var path=require(_0xe76f('0x7'));var sox=require(_0xe76f('0x8'));var csv=require(_0xe76f('0x9'));var ejs=require(_0xe76f('0xa'));var fs=require('fs');var fs_extra=require(_0xe76f('0xb'));var _=require(_0xe76f('0xc'));var squel=require(_0xe76f('0xd'));var crypto=require(_0xe76f('0xe'));var jsforce=require(_0xe76f('0xf'));var deskjs=require(_0xe76f('0x10'));var toCsv=require('to-csv');var querystring=require(_0xe76f('0x11'));var Papa=require(_0xe76f('0x12'));var Redis=require(_0xe76f('0x13'));var authService=require(_0xe76f('0x14'));var qs=require('../../components/parsers/qs');var as=require(_0xe76f('0x15'));var hardwareService=require('../../config/license/hardware');var logger=require(_0xe76f('0x16'))(_0xe76f('0x17'));var utils=require(_0xe76f('0x18'));var config=require(_0xe76f('0x19'));var licenseUtil=require('../../config/license/util');var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x1016af,_0x1aad40){_0x1aad40=_0x1aad40||0xcc;return function(_0x13dee6){if(_0x13dee6){return _0x1016af[_0xe76f('0x1a')](_0x1aad40);}return _0x1016af[_0xe76f('0x1b')](_0x1aad40)[_0xe76f('0x1c')]();};}function respondWithResult(_0x3a988b,_0x39c4c9){_0x39c4c9=_0x39c4c9||0xc8;return function(_0xd4dd7){if(_0xd4dd7){return _0x3a988b['status'](_0x39c4c9)['json'](_0xd4dd7);}};}function respondWithFilteredResult(_0x261215,_0x478b22){return function(_0x281124){if(_0x281124){var _0x405e3b=typeof _0x478b22[_0xe76f('0x1d')]==='undefined'&&typeof _0x478b22[_0xe76f('0x1e')]===_0xe76f('0x1f');var _0x4bec46=_0x281124[_0xe76f('0x20')];var _0x26e934=_0x405e3b?0x0:_0x478b22[_0xe76f('0x1d')];var _0x540092=_0x405e3b?_0x281124['count']:_0x478b22[_0xe76f('0x1d')]+_0x478b22['limit'];var _0x1b7a8a;if(_0x540092>=_0x4bec46){_0x540092=_0x4bec46;_0x1b7a8a=0xc8;}else{_0x1b7a8a=0xce;}_0x261215[_0xe76f('0x1b')](_0x1b7a8a);return _0x261215['set'](_0xe76f('0x21'),_0x26e934+'-'+_0x540092+'/'+_0x4bec46)['json'](_0x281124);}return null;};}function patchUpdates(_0x35d8e5){return function(_0x23f1d0){try{jsonpatch[_0xe76f('0x22')](_0x23f1d0,_0x35d8e5,!![]);}catch(_0x206c4b){return BPromise['reject'](_0x206c4b);}return _0x23f1d0[_0xe76f('0x23')]();};}function saveUpdates(_0x1f8370,_0x721477){return function(_0x30a47c){if(_0x30a47c){return _0x30a47c[_0xe76f('0x24')](_0x1f8370)['then'](function(_0x2eed62){return _0x2eed62;});}return null;};}function removeEntity(_0x39213,_0x1915dc){return function(_0x5bf2a9){if(_0x5bf2a9){return _0x5bf2a9[_0xe76f('0x25')]()[_0xe76f('0x26')](function(){_0x39213[_0xe76f('0x1b')](0xcc)[_0xe76f('0x1c')]();});}};}function handleEntityNotFound(_0x39a3e9,_0x3f8b50){return function(_0x4afd67){if(!_0x4afd67){_0x39a3e9[_0xe76f('0x1a')](0x194);}return _0x4afd67;};}function handleError(_0x4ac959,_0x239b47){_0x239b47=_0x239b47||0x1f4;return function(_0x2e024a){logger[_0xe76f('0x27')](_0x2e024a[_0xe76f('0x28')]);if(_0x2e024a[_0xe76f('0x29')]){delete _0x2e024a[_0xe76f('0x29')];}_0x4ac959[_0xe76f('0x1b')](_0x239b47)[_0xe76f('0x2a')](_0x2e024a);};}exports[_0xe76f('0x2b')]=function(_0x2379d2,_0x249061){var _0x2e00f8={},_0x49ad1e={},_0xdb1d1a={'count':0x0,'rows':[]};var _0x3aea54=_[_0xe76f('0x2c')](db[_0xe76f('0x2d')][_0xe76f('0x2e')],function(_0xabf7b){return{'name':_0xabf7b[_0xe76f('0x2f')],'type':_0xabf7b[_0xe76f('0x30')][_0xe76f('0x31')]};});_0x49ad1e[_0xe76f('0x32')]=_[_0xe76f('0x2c')](_0x3aea54,_0xe76f('0x29'));_0x49ad1e[_0xe76f('0x33')]=_['keys'](_0x2379d2[_0xe76f('0x33')]);_0x49ad1e['filters']=_[_0xe76f('0x34')](_0x49ad1e['model'],_0x49ad1e[_0xe76f('0x33')]);_0x2e00f8['attributes']=_['intersection'](_0x49ad1e[_0xe76f('0x32')],qs['fields'](_0x2379d2[_0xe76f('0x33')]['fields']));_0x2e00f8[_0xe76f('0x35')]=_0x2e00f8[_0xe76f('0x35')]['length']?_0x2e00f8[_0xe76f('0x35')]:_0x49ad1e[_0xe76f('0x32')];if(!_0x2379d2[_0xe76f('0x33')]['hasOwnProperty'](_0xe76f('0x36'))){_0x2e00f8[_0xe76f('0x1e')]=qs['limit'](_0x2379d2[_0xe76f('0x33')][_0xe76f('0x1e')]);_0x2e00f8[_0xe76f('0x1d')]=qs[_0xe76f('0x1d')](_0x2379d2[_0xe76f('0x33')]['offset']);}_0x2e00f8[_0xe76f('0x37')]=qs['sort'](_0x2379d2[_0xe76f('0x33')][_0xe76f('0x38')]);_0x2e00f8['where']=qs[_0xe76f('0x39')](_[_0xe76f('0x3a')](_0x2379d2[_0xe76f('0x33')],_0x49ad1e[_0xe76f('0x39')]),_0x3aea54);if(_0x2379d2[_0xe76f('0x33')][_0xe76f('0x3b')]){_0x2e00f8[_0xe76f('0x3c')]=_[_0xe76f('0x3d')](_0x2e00f8[_0xe76f('0x3c')],{'$or':_[_0xe76f('0x2c')](_0x3aea54,function(_0xe78200){if(_0xe78200['type']!==_0xe76f('0x3e')){var _0x4d5f6a={};_0x4d5f6a[_0xe78200[_0xe76f('0x29')]]={'$like':'%'+_0x2379d2[_0xe76f('0x33')]['filter']+'%'};return _0x4d5f6a;}})});}_0x2e00f8=_[_0xe76f('0x3d')]({},_0x2e00f8,_0x2379d2[_0xe76f('0x3f')]);var _0x576ed2={'where':_0x2e00f8[_0xe76f('0x3c')]};return db['FreshsalesConfiguration']['count'](_0x576ed2)[_0xe76f('0x26')](function(_0x393604){_0xdb1d1a['count']=_0x393604;if(_0x2379d2[_0xe76f('0x33')][_0xe76f('0x40')]){_0x2e00f8[_0xe76f('0x41')]=[{'all':!![]}];}return db['FreshsalesConfiguration'][_0xe76f('0x42')](_0x2e00f8);})[_0xe76f('0x26')](function(_0x1faed4){_0xdb1d1a['rows']=_0x1faed4;return _0xdb1d1a;})[_0xe76f('0x26')](respondWithFilteredResult(_0x249061,_0x2e00f8))[_0xe76f('0x43')](handleError(_0x249061,null));};exports[_0xe76f('0x44')]=function(_0x265e7a,_0x2f2c72){var _0x5b5087={'raw':![],'where':{'id':_0x265e7a[_0xe76f('0x45')]['id']}},_0x184adb={};_0x184adb[_0xe76f('0x32')]=_['keys'](db[_0xe76f('0x2d')][_0xe76f('0x2e')]);_0x184adb[_0xe76f('0x33')]=_[_0xe76f('0x46')](_0x265e7a[_0xe76f('0x33')]);_0x184adb[_0xe76f('0x39')]=_['intersection'](_0x184adb['model'],_0x184adb[_0xe76f('0x33')]);_0x5b5087['attributes']=_['intersection'](_0x184adb[_0xe76f('0x32')],qs['fields'](_0x265e7a[_0xe76f('0x33')][_0xe76f('0x47')]));_0x5b5087[_0xe76f('0x35')]=_0x5b5087[_0xe76f('0x35')][_0xe76f('0x48')]?_0x5b5087[_0xe76f('0x35')]:_0x184adb['model'];if(_0x265e7a['query'][_0xe76f('0x40')]){_0x5b5087['include']=[{'all':!![]}];}_0x5b5087=_['merge']({},_0x5b5087,_0x265e7a['options']);return db[_0xe76f('0x2d')]['find'](_0x5b5087)[_0xe76f('0x26')](handleEntityNotFound(_0x2f2c72,null))[_0xe76f('0x26')](respondWithResult(_0x2f2c72,null))['catch'](handleError(_0x2f2c72,null));};exports[_0xe76f('0x49')]=function(_0x12416c,_0x4e72cb){return db[_0xe76f('0x2d')][_0xe76f('0x49')](_0x12416c[_0xe76f('0x4a')],{})[_0xe76f('0x26')](respondWithResult(_0x4e72cb,0xc9))[_0xe76f('0x43')](handleError(_0x4e72cb,null));};exports['update']=function(_0x3bd46b,_0x1fe689){if(_0x3bd46b[_0xe76f('0x4a')]['id']){delete _0x3bd46b[_0xe76f('0x4a')]['id'];}return db['FreshsalesConfiguration'][_0xe76f('0x4b')]({'where':{'id':_0x3bd46b[_0xe76f('0x45')]['id']}})['then'](handleEntityNotFound(_0x1fe689,null))[_0xe76f('0x26')](saveUpdates(_0x3bd46b['body'],null))[_0xe76f('0x26')](respondWithResult(_0x1fe689,null))[_0xe76f('0x43')](handleError(_0x1fe689,null));};exports[_0xe76f('0x25')]=function(_0xe467c2,_0x53e35a){return db[_0xe76f('0x2d')]['find']({'where':{'id':_0xe467c2[_0xe76f('0x45')]['id']}})['then'](handleEntityNotFound(_0x53e35a,null))[_0xe76f('0x26')](removeEntity(_0x53e35a,null))[_0xe76f('0x43')](handleError(_0x53e35a,null));};exports[_0xe76f('0x4c')]=function(_0x504239,_0x834c3e,_0x353842){var _0x55c69c={};var _0x4da782={};var _0x4dd3d0;var _0x23c2b9;return db[_0xe76f('0x2d')][_0xe76f('0x4d')]({'where':{'id':_0x504239['params']['id']}})[_0xe76f('0x26')](handleEntityNotFound(_0x834c3e,null))[_0xe76f('0x26')](function(_0x20d61c){if(_0x20d61c){_0x4dd3d0=_0x20d61c;_0x4da782['model']=_[_0xe76f('0x46')](db[_0xe76f('0x4e')]['rawAttributes']);_0x4da782[_0xe76f('0x33')]=_['keys'](_0x504239[_0xe76f('0x33')]);_0x4da782[_0xe76f('0x39')]=_[_0xe76f('0x34')](_0x4da782[_0xe76f('0x32')],_0x4da782[_0xe76f('0x33')]);_0x55c69c[_0xe76f('0x35')]=_['intersection'](_0x4da782[_0xe76f('0x32')],qs[_0xe76f('0x47')](_0x504239['query']['fields']));_0x55c69c[_0xe76f('0x35')]=_0x55c69c[_0xe76f('0x35')]['length']?_0x55c69c['attributes']:_0x4da782[_0xe76f('0x32')];_0x55c69c[_0xe76f('0x37')]=qs['sort'](_0x504239[_0xe76f('0x33')]['sort']);_0x55c69c[_0xe76f('0x3c')]=qs[_0xe76f('0x39')](_[_0xe76f('0x3a')](_0x504239[_0xe76f('0x33')],_0x4da782[_0xe76f('0x39')]));if(_0x504239['query'][_0xe76f('0x3b')]){_0x55c69c[_0xe76f('0x3c')]=_[_0xe76f('0x3d')](_0x55c69c['where'],{'$or':_[_0xe76f('0x2c')](_0x55c69c[_0xe76f('0x35')],function(_0x4fe7a2){var _0x5f317a={};_0x5f317a[_0x4fe7a2]={'$like':'%'+_0x504239[_0xe76f('0x33')][_0xe76f('0x3b')]+'%'};return _0x5f317a;})});}_0x55c69c=_['merge']({},_0x55c69c,_0x504239[_0xe76f('0x3f')]);return _0x4dd3d0['getSubjects'](_0x55c69c);}})['then'](function(_0x11b5cf){if(_0x11b5cf){_0x23c2b9=_0x11b5cf[_0xe76f('0x48')];if(!_0x504239['query'][_0xe76f('0x4f')](_0xe76f('0x36'))){_0x55c69c[_0xe76f('0x1e')]=qs[_0xe76f('0x1e')](_0x504239[_0xe76f('0x33')][_0xe76f('0x1e')]);_0x55c69c[_0xe76f('0x1d')]=qs['offset'](_0x504239[_0xe76f('0x33')][_0xe76f('0x1d')]);}return _0x4dd3d0[_0xe76f('0x4c')](_0x55c69c);}})['then'](function(_0x1e4e0e){if(_0x1e4e0e){return _0x1e4e0e?{'count':_0x23c2b9,'rows':_0x1e4e0e}:null;}})[_0xe76f('0x26')](respondWithResult(_0x834c3e,null))['catch'](handleError(_0x834c3e,null));};exports[_0xe76f('0x50')]=function(_0x384bd8,_0x466f18,_0x3650f3){var _0x30b708={};var _0x28a076={};var _0x41d747;var _0x5625c7;return db['FreshsalesConfiguration']['findOne']({'where':{'id':_0x384bd8[_0xe76f('0x45')]['id']}})[_0xe76f('0x26')](handleEntityNotFound(_0x466f18,null))[_0xe76f('0x26')](function(_0x1196f4){if(_0x1196f4){_0x41d747=_0x1196f4;_0x28a076[_0xe76f('0x32')]=_[_0xe76f('0x46')](db[_0xe76f('0x4e')][_0xe76f('0x2e')]);_0x28a076[_0xe76f('0x33')]=_['keys'](_0x384bd8[_0xe76f('0x33')]);_0x28a076[_0xe76f('0x39')]=_[_0xe76f('0x34')](_0x28a076['model'],_0x28a076[_0xe76f('0x33')]);_0x30b708[_0xe76f('0x35')]=_[_0xe76f('0x34')](_0x28a076['model'],qs[_0xe76f('0x47')](_0x384bd8[_0xe76f('0x33')]['fields']));_0x30b708[_0xe76f('0x35')]=_0x30b708[_0xe76f('0x35')][_0xe76f('0x48')]?_0x30b708['attributes']:_0x28a076[_0xe76f('0x32')];_0x30b708[_0xe76f('0x37')]=qs[_0xe76f('0x38')](_0x384bd8[_0xe76f('0x33')][_0xe76f('0x38')]);_0x30b708[_0xe76f('0x3c')]=qs['filters'](_[_0xe76f('0x3a')](_0x384bd8[_0xe76f('0x33')],_0x28a076['filters']));if(_0x384bd8[_0xe76f('0x33')]['filter']){_0x30b708['where']=_[_0xe76f('0x3d')](_0x30b708[_0xe76f('0x3c')],{'$or':_[_0xe76f('0x2c')](_0x30b708[_0xe76f('0x35')],function(_0x51ce38){var _0x2a2eb9={};_0x2a2eb9[_0x51ce38]={'$like':'%'+_0x384bd8[_0xe76f('0x33')][_0xe76f('0x3b')]+'%'};return _0x2a2eb9;})});}_0x30b708=_[_0xe76f('0x3d')]({},_0x30b708,_0x384bd8[_0xe76f('0x3f')]);return _0x41d747['getDescriptions'](_0x30b708);}})[_0xe76f('0x26')](function(_0x465214){if(_0x465214){_0x5625c7=_0x465214[_0xe76f('0x48')];if(!_0x384bd8[_0xe76f('0x33')][_0xe76f('0x4f')](_0xe76f('0x36'))){_0x30b708[_0xe76f('0x1e')]=qs[_0xe76f('0x1e')](_0x384bd8[_0xe76f('0x33')]['limit']);_0x30b708[_0xe76f('0x1d')]=qs[_0xe76f('0x1d')](_0x384bd8[_0xe76f('0x33')][_0xe76f('0x1d')]);}return _0x41d747[_0xe76f('0x50')](_0x30b708);}})[_0xe76f('0x26')](function(_0x6ec2cf){if(_0x6ec2cf){return _0x6ec2cf?{'count':_0x5625c7,'rows':_0x6ec2cf}:null;}})[_0xe76f('0x26')](respondWithResult(_0x466f18,null))[_0xe76f('0x43')](handleError(_0x466f18,null));};exports[_0xe76f('0x51')]=function(_0x15cc7f,_0x4eb8b8,_0x159a5c){var _0x3dca63={};var _0x26b829={};var _0x26900a;var _0x411865;return db[_0xe76f('0x2d')][_0xe76f('0x4d')]({'where':{'id':_0x15cc7f[_0xe76f('0x45')]['id']}})[_0xe76f('0x26')](handleEntityNotFound(_0x4eb8b8,null))[_0xe76f('0x26')](function(_0x4ef564){if(_0x4ef564){_0x26900a=_0x4ef564;_0x26b829[_0xe76f('0x32')]=_['keys'](db[_0xe76f('0x4e')][_0xe76f('0x2e')]);_0x26b829['query']=_['keys'](_0x15cc7f[_0xe76f('0x33')]);_0x26b829[_0xe76f('0x39')]=_[_0xe76f('0x34')](_0x26b829[_0xe76f('0x32')],_0x26b829[_0xe76f('0x33')]);_0x3dca63['attributes']=_[_0xe76f('0x34')](_0x26b829[_0xe76f('0x32')],qs[_0xe76f('0x47')](_0x15cc7f[_0xe76f('0x33')][_0xe76f('0x47')]));_0x3dca63['attributes']=_0x3dca63[_0xe76f('0x35')][_0xe76f('0x48')]?_0x3dca63[_0xe76f('0x35')]:_0x26b829[_0xe76f('0x32')];_0x3dca63['order']=qs[_0xe76f('0x38')](_0x15cc7f[_0xe76f('0x33')][_0xe76f('0x38')]);_0x3dca63[_0xe76f('0x3c')]=qs[_0xe76f('0x39')](_[_0xe76f('0x3a')](_0x15cc7f[_0xe76f('0x33')],_0x26b829[_0xe76f('0x39')]));if(_0x15cc7f[_0xe76f('0x33')][_0xe76f('0x3b')]){_0x3dca63[_0xe76f('0x3c')]=_[_0xe76f('0x3d')](_0x3dca63['where'],{'$or':_[_0xe76f('0x2c')](_0x3dca63[_0xe76f('0x35')],function(_0x3e5976){var _0x110414={};_0x110414[_0x3e5976]={'$like':'%'+_0x15cc7f[_0xe76f('0x33')][_0xe76f('0x3b')]+'%'};return _0x110414;})});}_0x3dca63=_[_0xe76f('0x3d')]({},_0x3dca63,_0x15cc7f[_0xe76f('0x3f')]);return _0x26900a['getFields'](_0x3dca63);}})[_0xe76f('0x26')](function(_0x2b5b94){if(_0x2b5b94){_0x411865=_0x2b5b94['length'];if(!_0x15cc7f['query'][_0xe76f('0x4f')](_0xe76f('0x36'))){_0x3dca63[_0xe76f('0x1e')]=qs[_0xe76f('0x1e')](_0x15cc7f['query']['limit']);_0x3dca63[_0xe76f('0x1d')]=qs[_0xe76f('0x1d')](_0x15cc7f[_0xe76f('0x33')]['offset']);}return _0x26900a[_0xe76f('0x51')](_0x3dca63);}})['then'](function(_0x456e22){if(_0x456e22){return _0x456e22?{'count':_0x411865,'rows':_0x456e22}:null;}})[_0xe76f('0x26')](respondWithResult(_0x4eb8b8,null))[_0xe76f('0x43')](handleError(_0x4eb8b8,null));};
\ No newline at end of file
index 551d8be..0570148 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8fe0=['define','FreshsalesConfiguration','int_freshsales_configurations','lodash','util','../../config/logger','api','moment','bluebird','request-promise','rimraf','../../config/environment','./intFreshsalesConfiguration.attributes','exports'];(function(_0x544768,_0x2fea6c){var _0x5b3068=function(_0x163d48){while(--_0x163d48){_0x544768['push'](_0x544768['shift']());}};_0x5b3068(++_0x2fea6c);}(_0x8fe0,0x8f));var _0x08fe=function(_0xa464c9,_0x7c86d8){_0xa464c9=_0xa464c9-0x0;var _0x3d73c4=_0x8fe0[_0xa464c9];return _0x3d73c4;};'use strict';var _=require(_0x08fe('0x0'));var util=require(_0x08fe('0x1'));var logger=require(_0x08fe('0x2'))(_0x08fe('0x3'));var moment=require(_0x08fe('0x4'));var BPromise=require(_0x08fe('0x5'));var rp=require(_0x08fe('0x6'));var fs=require('fs');var path=require('path');var rimraf=require(_0x08fe('0x7'));var config=require(_0x08fe('0x8'));var attributes=require(_0x08fe('0x9'));module[_0x08fe('0xa')]=function(_0x5f3045,_0x201574){return _0x5f3045[_0x08fe('0xb')](_0x08fe('0xc'),attributes,{'tableName':_0x08fe('0xd'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x3855=['int_freshsales_configurations','lodash','../../config/logger','api','moment','bluebird','request-promise','rimraf','./intFreshsalesConfiguration.attributes','exports','define','FreshsalesConfiguration'];(function(_0x43b584,_0x20a6bd){var _0x48f27b=function(_0x1eeb77){while(--_0x1eeb77){_0x43b584['push'](_0x43b584['shift']());}};_0x48f27b(++_0x20a6bd);}(_0x3855,0xf1));var _0x5385=function(_0x298ff7,_0x29ca12){_0x298ff7=_0x298ff7-0x0;var _0x295feb=_0x3855[_0x298ff7];return _0x295feb;};'use strict';var _=require(_0x5385('0x0'));var util=require('util');var logger=require(_0x5385('0x1'))(_0x5385('0x2'));var moment=require(_0x5385('0x3'));var BPromise=require(_0x5385('0x4'));var rp=require(_0x5385('0x5'));var fs=require('fs');var path=require('path');var rimraf=require(_0x5385('0x6'));var config=require('../../config/environment');var attributes=require(_0x5385('0x7'));module[_0x5385('0x8')]=function(_0x34d437,_0x2b7457){return _0x34d437[_0x5385('0x9')](_0x5385('0xa'),attributes,{'tableName':_0x5385('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 738b9ee..bb6d185 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x44c5=['../../mysqldb','../../config/utils','../../config/logger','rpc','client','http','request','then','info','FreshsalesConfiguration,\x20%s,\x20%s','request\x20sent','debug','stringify','error','message','catch','util'];(function(_0x11c92d,_0x346ce6){var _0x2a82d2=function(_0x154965){while(--_0x154965){_0x11c92d['push'](_0x11c92d['shift']());}};_0x2a82d2(++_0x346ce6);}(_0x44c5,0x98));var _0x544c=function(_0x34c027,_0x123688){_0x34c027=_0x34c027-0x0;var _0x47bff0=_0x44c5[_0x34c027];return _0x47bff0;};'use strict';var _=require('lodash');var util=require(_0x544c('0x0'));var moment=require('moment');var BPromise=require('bluebird');var rs=require('randomstring');var fs=require('fs');var Redis=require('ioredis');var db=require(_0x544c('0x1'))['db'];var utils=require(_0x544c('0x2'));var logger=require(_0x544c('0x3'))(_0x544c('0x4'));var config=require('../../config/environment');var jayson=require('jayson/promise');var client=jayson[_0x544c('0x5')][_0x544c('0x6')]({'port':0x232a});function respondWithRpcPromise(_0x5aec2f,_0x2ed4c0,_0x1f8567){return new BPromise(function(_0x21c404,_0x22fce3){return client[_0x544c('0x7')](_0x5aec2f,_0x1f8567)[_0x544c('0x8')](function(_0x49053f){logger[_0x544c('0x9')](_0x544c('0xa'),_0x2ed4c0,_0x544c('0xb'));logger[_0x544c('0xc')]('FreshsalesConfiguration,\x20%s,\x20%s,\x20%s',_0x2ed4c0,_0x544c('0xb'),JSON[_0x544c('0xd')](_0x49053f));if(_0x49053f['error']){if(_0x49053f[_0x544c('0xe')]['code']===0x1f4){logger[_0x544c('0xe')](_0x544c('0xa'),_0x2ed4c0,_0x49053f[_0x544c('0xe')][_0x544c('0xf')]);return _0x22fce3(_0x49053f[_0x544c('0xe')][_0x544c('0xf')]);}logger[_0x544c('0xe')](_0x544c('0xa'),_0x2ed4c0,_0x49053f[_0x544c('0xe')][_0x544c('0xf')]);return _0x21c404(_0x49053f['error']['message']);}else{logger[_0x544c('0x9')](_0x544c('0xa'),_0x2ed4c0,_0x544c('0xb'));_0x21c404(_0x49053f['result']['message']);}})[_0x544c('0x10')](function(_0x24f894){logger['error'](_0x544c('0xa'),_0x2ed4c0,_0x24f894);_0x22fce3(_0x24f894);});});}
\ No newline at end of file
+var _0xf8be=['../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','request','then','FreshsalesConfiguration,\x20%s,\x20%s','request\x20sent','FreshsalesConfiguration,\x20%s,\x20%s,\x20%s','stringify','error','code','message','info','result','catch','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb'];(function(_0x2d3264,_0x1eb1c1){var _0x282c50=function(_0x391713){while(--_0x391713){_0x2d3264['push'](_0x2d3264['shift']());}};_0x282c50(++_0x1eb1c1);}(_0xf8be,0x165));var _0xef8b=function(_0x36ac9c,_0x4db81d){_0x36ac9c=_0x36ac9c-0x0;var _0x199ab3=_0xf8be[_0x36ac9c];return _0x199ab3;};'use strict';var _=require(_0xef8b('0x0'));var util=require(_0xef8b('0x1'));var moment=require(_0xef8b('0x2'));var BPromise=require(_0xef8b('0x3'));var rs=require(_0xef8b('0x4'));var fs=require('fs');var Redis=require(_0xef8b('0x5'));var db=require(_0xef8b('0x6'))['db'];var utils=require(_0xef8b('0x7'));var logger=require(_0xef8b('0x8'))(_0xef8b('0x9'));var config=require(_0xef8b('0xa'));var jayson=require(_0xef8b('0xb'));var client=jayson[_0xef8b('0xc')][_0xef8b('0xd')]({'port':0x232a});function respondWithRpcPromise(_0x4d71c9,_0x514021,_0x48a7ff){return new BPromise(function(_0xfcddc0,_0x6389fc){return client[_0xef8b('0xe')](_0x4d71c9,_0x48a7ff)[_0xef8b('0xf')](function(_0x118eb7){logger['info'](_0xef8b('0x10'),_0x514021,_0xef8b('0x11'));logger['debug'](_0xef8b('0x12'),_0x514021,'request\x20sent',JSON[_0xef8b('0x13')](_0x118eb7));if(_0x118eb7[_0xef8b('0x14')]){if(_0x118eb7[_0xef8b('0x14')][_0xef8b('0x15')]===0x1f4){logger[_0xef8b('0x14')]('FreshsalesConfiguration,\x20%s,\x20%s',_0x514021,_0x118eb7[_0xef8b('0x14')][_0xef8b('0x16')]);return _0x6389fc(_0x118eb7['error']['message']);}logger[_0xef8b('0x14')]('FreshsalesConfiguration,\x20%s,\x20%s',_0x514021,_0x118eb7[_0xef8b('0x14')][_0xef8b('0x16')]);return _0xfcddc0(_0x118eb7[_0xef8b('0x14')][_0xef8b('0x16')]);}else{logger[_0xef8b('0x17')](_0xef8b('0x10'),_0x514021,'request\x20sent');_0xfcddc0(_0x118eb7[_0xef8b('0x18')][_0xef8b('0x16')]);}})[_0xef8b('0x19')](function(_0x4141ca){logger[_0xef8b('0x14')](_0xef8b('0x10'),_0x514021,_0x4141ca);_0x6389fc(_0x4141ca);});});}
\ No newline at end of file
index b30ab87..be31a2b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7eb9=['get','show','create','put','/:id','destroy','exports','multer','connect-timeout','Router','fs-extra','../../components/auth/service','../../components/interaction/service','./intFreshsalesField.controller','isAuthenticated'];(function(_0x481a24,_0x3b8945){var _0x38d627=function(_0x49b88a){while(--_0x49b88a){_0x481a24['push'](_0x481a24['shift']());}};_0x38d627(++_0x3b8945);}(_0x7eb9,0xd9));var _0x97eb=function(_0x4565bf,_0x5ad9d6){_0x4565bf=_0x4565bf-0x0;var _0x5610ba=_0x7eb9[_0x4565bf];return _0x5610ba;};'use strict';var multer=require(_0x97eb('0x0'));var util=require('util');var path=require('path');var timeout=require(_0x97eb('0x1'));var express=require('express');var router=express[_0x97eb('0x2')]();var fs_extra=require(_0x97eb('0x3'));var auth=require(_0x97eb('0x4'));var interaction=require(_0x97eb('0x5'));var config=require('../../config/environment');var controller=require(_0x97eb('0x6'));router['get']('/',auth[_0x97eb('0x7')](),controller['index']);router[_0x97eb('0x8')]('/:id',auth['isAuthenticated'](),controller[_0x97eb('0x9')]);router['post']('/',auth[_0x97eb('0x7')](),controller[_0x97eb('0xa')]);router[_0x97eb('0xb')](_0x97eb('0xc'),auth[_0x97eb('0x7')](),controller['update']);router['delete'](_0x97eb('0xc'),auth[_0x97eb('0x7')](),controller[_0x97eb('0xd')]);module[_0x97eb('0xe')]=router;
\ No newline at end of file
+var _0x7b05=['exports','multer','util','path','connect-timeout','Router','../../components/auth/service','../../components/interaction/service','../../config/environment','./intFreshsalesField.controller','get','index','/:id','isAuthenticated','put','destroy'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x7b05,0x91));var _0x57b0=function(_0x20cb20,_0x256051){_0x20cb20=_0x20cb20-0x0;var _0x2fcf4b=_0x7b05[_0x20cb20];return _0x2fcf4b;};'use strict';var multer=require(_0x57b0('0x0'));var util=require(_0x57b0('0x1'));var path=require(_0x57b0('0x2'));var timeout=require(_0x57b0('0x3'));var express=require('express');var router=express[_0x57b0('0x4')]();var fs_extra=require('fs-extra');var auth=require(_0x57b0('0x5'));var interaction=require(_0x57b0('0x6'));var config=require(_0x57b0('0x7'));var controller=require(_0x57b0('0x8'));router[_0x57b0('0x9')]('/',auth['isAuthenticated'](),controller[_0x57b0('0xa')]);router['get'](_0x57b0('0xb'),auth[_0x57b0('0xc')](),controller['show']);router['post']('/',auth['isAuthenticated'](),controller['create']);router[_0x57b0('0xd')](_0x57b0('0xb'),auth['isAuthenticated'](),controller['update']);router['delete'](_0x57b0('0xb'),auth[_0x57b0('0xc')](),controller[_0x57b0('0xe')]);module[_0x57b0('0xf')]=router;
\ No newline at end of file
index 647d241..15020d1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe906=['variable','BOOLEAN','sequelize','exports','customVariable','keyValue','picklist','string','STRING','ENUM'];(function(_0x1a1ec7,_0x2c9cc1){var _0x55650a=function(_0x469410){while(--_0x469410){_0x1a1ec7['push'](_0x1a1ec7['shift']());}};_0x55650a(++_0x2c9cc1);}(_0xe906,0x84));var _0x6e90=function(_0x1aec04,_0xd69ca1){_0x1aec04=_0x1aec04-0x0;var _0x5f1afa=_0xe906[_0x1aec04];return _0x5f1afa;};'use strict';var Sequelize=require(_0x6e90('0x0'));module[_0x6e90('0x1')]={'type':{'type':Sequelize['ENUM']('string','variable',_0x6e90('0x2'),_0x6e90('0x3'),_0x6e90('0x4')),'defaultValue':_0x6e90('0x5')},'content':{'type':Sequelize[_0x6e90('0x6')]},'key':{'type':Sequelize['STRING']},'keyType':{'type':Sequelize[_0x6e90('0x7')](_0x6e90('0x5'),_0x6e90('0x8'),_0x6e90('0x2'))},'keyContent':{'type':Sequelize[_0x6e90('0x6')]},'idField':{'type':Sequelize[_0x6e90('0x6')]},'nameField':{'type':Sequelize[_0x6e90('0x6')]},'customField':{'type':Sequelize[_0x6e90('0x9')],'defaultValue':!![]},'variableName':{'type':Sequelize[_0x6e90('0x6')]}};
\ No newline at end of file
+var _0x5c57=['variable','keyValue','picklist','STRING','customVariable','sequelize','ENUM','string'];(function(_0x4eaa18,_0x5d7dfa){var _0x5afbf3=function(_0x5d86cf){while(--_0x5d86cf){_0x4eaa18['push'](_0x4eaa18['shift']());}};_0x5afbf3(++_0x5d7dfa);}(_0x5c57,0xd5));var _0x75c5=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x5c57[_0x3dd15e];return _0x231fd0;};'use strict';var Sequelize=require(_0x75c5('0x0'));module['exports']={'type':{'type':Sequelize[_0x75c5('0x1')](_0x75c5('0x2'),_0x75c5('0x3'),'customVariable',_0x75c5('0x4'),_0x75c5('0x5')),'defaultValue':_0x75c5('0x2')},'content':{'type':Sequelize['STRING']},'key':{'type':Sequelize[_0x75c5('0x6')]},'keyType':{'type':Sequelize['ENUM']('string',_0x75c5('0x3'),_0x75c5('0x7'))},'keyContent':{'type':Sequelize[_0x75c5('0x6')]},'idField':{'type':Sequelize[_0x75c5('0x6')]},'nameField':{'type':Sequelize[_0x75c5('0x6')]},'customField':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]},'variableName':{'type':Sequelize['STRING']}};
\ No newline at end of file
index 7617087..34aa0e7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6b8c=['fieldName','type','key','model','query','keys','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','sort','where','filter','merge','VIRTUAL','options','includeAll','include','findAll','rows','catch','params','create','body','update','find','destroy','eml-format','rimraf','request-promise','moment','bluebird','mustache','util','path','to-csv','fs-extra','lodash','squel','crypto','jsforce','desk.js','querystring','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','json','offset','undefined','limit','count','set','Content-Range','save','then','error','stack','name','send','map','FreshsalesField','rawAttributes'];(function(_0x591cfd,_0x501204){var _0x4d0100=function(_0xb9ff0c){while(--_0xb9ff0c){_0x591cfd['push'](_0x591cfd['shift']());}};_0x4d0100(++_0x501204);}(_0x6b8c,0x13e));var _0xc6b8=function(_0x1f3fd8,_0x330562){_0x1f3fd8=_0x1f3fd8-0x0;var _0x2d9d33=_0x6b8c[_0x1f3fd8];return _0x2d9d33;};'use strict';var emlformat=require(_0xc6b8('0x0'));var rimraf=require(_0xc6b8('0x1'));var zipdir=require('zip-dir');var jsonpatch=require('fast-json-patch');var rp=require(_0xc6b8('0x2'));var moment=require(_0xc6b8('0x3'));var BPromise=require(_0xc6b8('0x4'));var Mustache=require(_0xc6b8('0x5'));var util=require(_0xc6b8('0x6'));var path=require(_0xc6b8('0x7'));var sox=require('sox');var csv=require(_0xc6b8('0x8'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0xc6b8('0x9'));var _=require(_0xc6b8('0xa'));var squel=require(_0xc6b8('0xb'));var crypto=require(_0xc6b8('0xc'));var jsforce=require(_0xc6b8('0xd'));var deskjs=require(_0xc6b8('0xe'));var toCsv=require(_0xc6b8('0x8'));var querystring=require(_0xc6b8('0xf'));var Papa=require('papaparse');var Redis=require('ioredis');var authService=require(_0xc6b8('0x10'));var qs=require(_0xc6b8('0x11'));var as=require(_0xc6b8('0x12'));var hardwareService=require('../../config/license/hardware');var logger=require('../../config/logger')('api');var utils=require(_0xc6b8('0x13'));var config=require(_0xc6b8('0x14'));var licenseUtil=require(_0xc6b8('0x15'));var db=require(_0xc6b8('0x16'))['db'];function respondWithStatusCode(_0x3f9894,_0x221246){_0x221246=_0x221246||0xcc;return function(_0x56a8b9){if(_0x56a8b9){return _0x3f9894[_0xc6b8('0x17')](_0x221246);}return _0x3f9894[_0xc6b8('0x18')](_0x221246)[_0xc6b8('0x19')]();};}function respondWithResult(_0x12e9b7,_0x12fc15){_0x12fc15=_0x12fc15||0xc8;return function(_0x383f75){if(_0x383f75){return _0x12e9b7[_0xc6b8('0x18')](_0x12fc15)[_0xc6b8('0x1a')](_0x383f75);}};}function respondWithFilteredResult(_0xf35b32,_0x507646){return function(_0x3f93e8){if(_0x3f93e8){var _0x59374f=typeof _0x507646[_0xc6b8('0x1b')]===_0xc6b8('0x1c')&&typeof _0x507646[_0xc6b8('0x1d')]===_0xc6b8('0x1c');var _0x9b48e6=_0x3f93e8[_0xc6b8('0x1e')];var _0x35ae4c=_0x59374f?0x0:_0x507646[_0xc6b8('0x1b')];var _0x4e1f57=_0x59374f?_0x3f93e8[_0xc6b8('0x1e')]:_0x507646[_0xc6b8('0x1b')]+_0x507646[_0xc6b8('0x1d')];var _0x59ee0f;if(_0x4e1f57>=_0x9b48e6){_0x4e1f57=_0x9b48e6;_0x59ee0f=0xc8;}else{_0x59ee0f=0xce;}_0xf35b32[_0xc6b8('0x18')](_0x59ee0f);return _0xf35b32[_0xc6b8('0x1f')](_0xc6b8('0x20'),_0x35ae4c+'-'+_0x4e1f57+'/'+_0x9b48e6)[_0xc6b8('0x1a')](_0x3f93e8);}return null;};}function patchUpdates(_0x5edd47){return function(_0x191016){try{jsonpatch['apply'](_0x191016,_0x5edd47,!![]);}catch(_0x347829){return BPromise['reject'](_0x347829);}return _0x191016[_0xc6b8('0x21')]();};}function saveUpdates(_0x34d50f,_0x53d696){return function(_0x147585){if(_0x147585){return _0x147585['update'](_0x34d50f)[_0xc6b8('0x22')](function(_0x2864e6){return _0x2864e6;});}return null;};}function removeEntity(_0x512ed6,_0x558ae9){return function(_0x437ba4){if(_0x437ba4){return _0x437ba4['destroy']()['then'](function(){_0x512ed6[_0xc6b8('0x18')](0xcc)[_0xc6b8('0x19')]();});}};}function handleEntityNotFound(_0x1bd65f,_0x5043b2){return function(_0x1002b9){if(!_0x1002b9){_0x1bd65f['sendStatus'](0x194);}return _0x1002b9;};}function handleError(_0x346323,_0x1d34e1){_0x1d34e1=_0x1d34e1||0x1f4;return function(_0x26c95e){logger[_0xc6b8('0x23')](_0x26c95e[_0xc6b8('0x24')]);if(_0x26c95e[_0xc6b8('0x25')]){delete _0x26c95e[_0xc6b8('0x25')];}_0x346323[_0xc6b8('0x18')](_0x1d34e1)[_0xc6b8('0x26')](_0x26c95e);};}exports['index']=function(_0x1d6871,_0x5c680f){var _0x4d6ed3={},_0x5c8855={},_0x200cde={'count':0x0,'rows':[]};var _0x5010c9=_[_0xc6b8('0x27')](db[_0xc6b8('0x28')][_0xc6b8('0x29')],function(_0x2ea1a3){return{'name':_0x2ea1a3[_0xc6b8('0x2a')],'type':_0x2ea1a3[_0xc6b8('0x2b')][_0xc6b8('0x2c')]};});_0x5c8855[_0xc6b8('0x2d')]=_[_0xc6b8('0x27')](_0x5010c9,_0xc6b8('0x25'));_0x5c8855[_0xc6b8('0x2e')]=_[_0xc6b8('0x2f')](_0x1d6871[_0xc6b8('0x2e')]);_0x5c8855[_0xc6b8('0x30')]=_[_0xc6b8('0x31')](_0x5c8855[_0xc6b8('0x2d')],_0x5c8855[_0xc6b8('0x2e')]);_0x4d6ed3[_0xc6b8('0x32')]=_['intersection'](_0x5c8855[_0xc6b8('0x2d')],qs[_0xc6b8('0x33')](_0x1d6871[_0xc6b8('0x2e')][_0xc6b8('0x33')]));_0x4d6ed3[_0xc6b8('0x32')]=_0x4d6ed3[_0xc6b8('0x32')][_0xc6b8('0x34')]?_0x4d6ed3['attributes']:_0x5c8855[_0xc6b8('0x2d')];if(!_0x1d6871[_0xc6b8('0x2e')][_0xc6b8('0x35')](_0xc6b8('0x36'))){_0x4d6ed3[_0xc6b8('0x1d')]=qs['limit'](_0x1d6871[_0xc6b8('0x2e')]['limit']);_0x4d6ed3[_0xc6b8('0x1b')]=qs[_0xc6b8('0x1b')](_0x1d6871['query'][_0xc6b8('0x1b')]);}_0x4d6ed3['order']=qs[_0xc6b8('0x37')](_0x1d6871[_0xc6b8('0x2e')]['sort']);_0x4d6ed3[_0xc6b8('0x38')]=qs['filters'](_['pick'](_0x1d6871[_0xc6b8('0x2e')],_0x5c8855['filters']),_0x5010c9);if(_0x1d6871[_0xc6b8('0x2e')][_0xc6b8('0x39')]){_0x4d6ed3[_0xc6b8('0x38')]=_[_0xc6b8('0x3a')](_0x4d6ed3[_0xc6b8('0x38')],{'$or':_[_0xc6b8('0x27')](_0x5010c9,function(_0x22c739){if(_0x22c739[_0xc6b8('0x2b')]!==_0xc6b8('0x3b')){var _0x4f2d00={};_0x4f2d00[_0x22c739['name']]={'$like':'%'+_0x1d6871[_0xc6b8('0x2e')][_0xc6b8('0x39')]+'%'};return _0x4f2d00;}})});}_0x4d6ed3=_[_0xc6b8('0x3a')]({},_0x4d6ed3,_0x1d6871[_0xc6b8('0x3c')]);var _0x481e4b={'where':_0x4d6ed3[_0xc6b8('0x38')]};return db[_0xc6b8('0x28')][_0xc6b8('0x1e')](_0x481e4b)[_0xc6b8('0x22')](function(_0x3c73ac){_0x200cde[_0xc6b8('0x1e')]=_0x3c73ac;if(_0x1d6871[_0xc6b8('0x2e')][_0xc6b8('0x3d')]){_0x4d6ed3[_0xc6b8('0x3e')]=[{'all':!![]}];}return db[_0xc6b8('0x28')][_0xc6b8('0x3f')](_0x4d6ed3);})['then'](function(_0x3a2649){_0x200cde[_0xc6b8('0x40')]=_0x3a2649;return _0x200cde;})[_0xc6b8('0x22')](respondWithFilteredResult(_0x5c680f,_0x4d6ed3))[_0xc6b8('0x41')](handleError(_0x5c680f,null));};exports['show']=function(_0x4e1190,_0x2a8d22){var _0x10adc6={'raw':!![],'where':{'id':_0x4e1190[_0xc6b8('0x42')]['id']}},_0x46ace0={};_0x46ace0[_0xc6b8('0x2d')]=_['keys'](db[_0xc6b8('0x28')][_0xc6b8('0x29')]);_0x46ace0[_0xc6b8('0x2e')]=_[_0xc6b8('0x2f')](_0x4e1190['query']);_0x46ace0[_0xc6b8('0x30')]=_[_0xc6b8('0x31')](_0x46ace0['model'],_0x46ace0[_0xc6b8('0x2e')]);_0x10adc6[_0xc6b8('0x32')]=_['intersection'](_0x46ace0['model'],qs['fields'](_0x4e1190[_0xc6b8('0x2e')]['fields']));_0x10adc6[_0xc6b8('0x32')]=_0x10adc6[_0xc6b8('0x32')][_0xc6b8('0x34')]?_0x10adc6[_0xc6b8('0x32')]:_0x46ace0[_0xc6b8('0x2d')];if(_0x4e1190[_0xc6b8('0x2e')][_0xc6b8('0x3d')]){_0x10adc6['include']=[{'all':!![]}];}_0x10adc6=_[_0xc6b8('0x3a')]({},_0x10adc6,_0x4e1190[_0xc6b8('0x3c')]);return db[_0xc6b8('0x28')]['find'](_0x10adc6)[_0xc6b8('0x22')](handleEntityNotFound(_0x2a8d22,null))[_0xc6b8('0x22')](respondWithResult(_0x2a8d22,null))['catch'](handleError(_0x2a8d22,null));};exports[_0xc6b8('0x43')]=function(_0x5b1411,_0x4b87cf){return db['FreshsalesField']['create'](_0x5b1411[_0xc6b8('0x44')],{})[_0xc6b8('0x22')](respondWithResult(_0x4b87cf,0xc9))[_0xc6b8('0x41')](handleError(_0x4b87cf,null));};exports[_0xc6b8('0x45')]=function(_0x521f5e,_0xb4758b){if(_0x521f5e['body']['id']){delete _0x521f5e[_0xc6b8('0x44')]['id'];}return db['FreshsalesField'][_0xc6b8('0x46')]({'where':{'id':_0x521f5e[_0xc6b8('0x42')]['id']}})[_0xc6b8('0x22')](handleEntityNotFound(_0xb4758b,null))['then'](saveUpdates(_0x521f5e[_0xc6b8('0x44')],null))[_0xc6b8('0x22')](respondWithResult(_0xb4758b,null))[_0xc6b8('0x41')](handleError(_0xb4758b,null));};exports[_0xc6b8('0x47')]=function(_0x2d1ae0,_0x4e1dfe){return db[_0xc6b8('0x28')][_0xc6b8('0x46')]({'where':{'id':_0x2d1ae0[_0xc6b8('0x42')]['id']}})[_0xc6b8('0x22')](handleEntityNotFound(_0x4e1dfe,null))['then'](removeEntity(_0x4e1dfe,null))['catch'](handleError(_0x4e1dfe,null));};
\ No newline at end of file
+var _0xd4d9=['desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../config/logger','api','../../config/utils','../../config/license/util','../../mysqldb','status','json','offset','undefined','limit','count','set','Content-Range','reject','save','update','then','destroy','end','sendStatus','stack','name','send','index','map','fieldName','key','query','keys','intersection','model','attributes','fields','length','nolimit','order','sort','where','filters','pick','filter','merge','options','includeAll','include','FreshsalesField','rows','catch','show','rawAttributes','find','create','params','body','eml-format','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox','to-csv','ejs','fs-extra','crypto'];(function(_0x4c6e4c,_0x186178){var _0x137012=function(_0x354fa8){while(--_0x354fa8){_0x4c6e4c['push'](_0x4c6e4c['shift']());}};_0x137012(++_0x186178);}(_0xd4d9,0xd0));var _0x9d4d=function(_0x5bca5f,_0x3ed435){_0x5bca5f=_0x5bca5f-0x0;var _0x22cd63=_0xd4d9[_0x5bca5f];return _0x22cd63;};'use strict';var emlformat=require(_0x9d4d('0x0'));var rimraf=require('rimraf');var zipdir=require(_0x9d4d('0x1'));var jsonpatch=require(_0x9d4d('0x2'));var rp=require(_0x9d4d('0x3'));var moment=require(_0x9d4d('0x4'));var BPromise=require(_0x9d4d('0x5'));var Mustache=require(_0x9d4d('0x6'));var util=require(_0x9d4d('0x7'));var path=require(_0x9d4d('0x8'));var sox=require(_0x9d4d('0x9'));var csv=require(_0x9d4d('0xa'));var ejs=require(_0x9d4d('0xb'));var fs=require('fs');var fs_extra=require(_0x9d4d('0xc'));var _=require('lodash');var squel=require('squel');var crypto=require(_0x9d4d('0xd'));var jsforce=require('jsforce');var deskjs=require(_0x9d4d('0xe'));var toCsv=require(_0x9d4d('0xa'));var querystring=require(_0x9d4d('0xf'));var Papa=require(_0x9d4d('0x10'));var Redis=require(_0x9d4d('0x11'));var authService=require(_0x9d4d('0x12'));var qs=require(_0x9d4d('0x13'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require('../../config/license/hardware');var logger=require(_0x9d4d('0x14'))(_0x9d4d('0x15'));var utils=require(_0x9d4d('0x16'));var config=require('../../config/environment');var licenseUtil=require(_0x9d4d('0x17'));var db=require(_0x9d4d('0x18'))['db'];function respondWithStatusCode(_0x1ceb18,_0x29e9cd){_0x29e9cd=_0x29e9cd||0xcc;return function(_0x2befb5){if(_0x2befb5){return _0x1ceb18['sendStatus'](_0x29e9cd);}return _0x1ceb18['status'](_0x29e9cd)['end']();};}function respondWithResult(_0x34d906,_0xec56cb){_0xec56cb=_0xec56cb||0xc8;return function(_0xdf4c0){if(_0xdf4c0){return _0x34d906[_0x9d4d('0x19')](_0xec56cb)[_0x9d4d('0x1a')](_0xdf4c0);}};}function respondWithFilteredResult(_0x409c88,_0x521cd0){return function(_0x90f837){if(_0x90f837){var _0x459bb8=typeof _0x521cd0[_0x9d4d('0x1b')]===_0x9d4d('0x1c')&&typeof _0x521cd0[_0x9d4d('0x1d')]===_0x9d4d('0x1c');var _0x2fe548=_0x90f837[_0x9d4d('0x1e')];var _0xc01b94=_0x459bb8?0x0:_0x521cd0['offset'];var _0x914006=_0x459bb8?_0x90f837['count']:_0x521cd0['offset']+_0x521cd0['limit'];var _0x4e7008;if(_0x914006>=_0x2fe548){_0x914006=_0x2fe548;_0x4e7008=0xc8;}else{_0x4e7008=0xce;}_0x409c88['status'](_0x4e7008);return _0x409c88[_0x9d4d('0x1f')](_0x9d4d('0x20'),_0xc01b94+'-'+_0x914006+'/'+_0x2fe548)['json'](_0x90f837);}return null;};}function patchUpdates(_0x3153fd){return function(_0x2cd266){try{jsonpatch['apply'](_0x2cd266,_0x3153fd,!![]);}catch(_0xdc5bf0){return BPromise[_0x9d4d('0x21')](_0xdc5bf0);}return _0x2cd266[_0x9d4d('0x22')]();};}function saveUpdates(_0x285cf1,_0x411dae){return function(_0x3060fa){if(_0x3060fa){return _0x3060fa[_0x9d4d('0x23')](_0x285cf1)[_0x9d4d('0x24')](function(_0x24421f){return _0x24421f;});}return null;};}function removeEntity(_0x4c9353,_0x43c14d){return function(_0x4767c2){if(_0x4767c2){return _0x4767c2[_0x9d4d('0x25')]()[_0x9d4d('0x24')](function(){_0x4c9353[_0x9d4d('0x19')](0xcc)[_0x9d4d('0x26')]();});}};}function handleEntityNotFound(_0x21f9fa,_0x5bf10e){return function(_0x5264b0){if(!_0x5264b0){_0x21f9fa[_0x9d4d('0x27')](0x194);}return _0x5264b0;};}function handleError(_0x1b32f0,_0x40701f){_0x40701f=_0x40701f||0x1f4;return function(_0x4a3a4a){logger['error'](_0x4a3a4a[_0x9d4d('0x28')]);if(_0x4a3a4a[_0x9d4d('0x29')]){delete _0x4a3a4a[_0x9d4d('0x29')];}_0x1b32f0['status'](_0x40701f)[_0x9d4d('0x2a')](_0x4a3a4a);};}exports[_0x9d4d('0x2b')]=function(_0x1e0adc,_0x775692){var _0x25015c={},_0x9baafd={},_0x2f65e6={'count':0x0,'rows':[]};var _0x29ff82=_[_0x9d4d('0x2c')](db['FreshsalesField']['rawAttributes'],function(_0x3e92d5){return{'name':_0x3e92d5[_0x9d4d('0x2d')],'type':_0x3e92d5['type'][_0x9d4d('0x2e')]};});_0x9baafd['model']=_['map'](_0x29ff82,_0x9d4d('0x29'));_0x9baafd[_0x9d4d('0x2f')]=_[_0x9d4d('0x30')](_0x1e0adc[_0x9d4d('0x2f')]);_0x9baafd['filters']=_[_0x9d4d('0x31')](_0x9baafd[_0x9d4d('0x32')],_0x9baafd[_0x9d4d('0x2f')]);_0x25015c[_0x9d4d('0x33')]=_['intersection'](_0x9baafd[_0x9d4d('0x32')],qs[_0x9d4d('0x34')](_0x1e0adc['query'][_0x9d4d('0x34')]));_0x25015c['attributes']=_0x25015c['attributes'][_0x9d4d('0x35')]?_0x25015c['attributes']:_0x9baafd[_0x9d4d('0x32')];if(!_0x1e0adc[_0x9d4d('0x2f')]['hasOwnProperty'](_0x9d4d('0x36'))){_0x25015c['limit']=qs[_0x9d4d('0x1d')](_0x1e0adc[_0x9d4d('0x2f')][_0x9d4d('0x1d')]);_0x25015c[_0x9d4d('0x1b')]=qs[_0x9d4d('0x1b')](_0x1e0adc[_0x9d4d('0x2f')][_0x9d4d('0x1b')]);}_0x25015c[_0x9d4d('0x37')]=qs['sort'](_0x1e0adc['query'][_0x9d4d('0x38')]);_0x25015c[_0x9d4d('0x39')]=qs[_0x9d4d('0x3a')](_[_0x9d4d('0x3b')](_0x1e0adc['query'],_0x9baafd['filters']),_0x29ff82);if(_0x1e0adc[_0x9d4d('0x2f')][_0x9d4d('0x3c')]){_0x25015c[_0x9d4d('0x39')]=_[_0x9d4d('0x3d')](_0x25015c['where'],{'$or':_[_0x9d4d('0x2c')](_0x29ff82,function(_0x4fe865){if(_0x4fe865['type']!=='VIRTUAL'){var _0x1f3a5d={};_0x1f3a5d[_0x4fe865[_0x9d4d('0x29')]]={'$like':'%'+_0x1e0adc['query'][_0x9d4d('0x3c')]+'%'};return _0x1f3a5d;}})});}_0x25015c=_[_0x9d4d('0x3d')]({},_0x25015c,_0x1e0adc[_0x9d4d('0x3e')]);var _0x177929={'where':_0x25015c['where']};return db['FreshsalesField']['count'](_0x177929)[_0x9d4d('0x24')](function(_0x4a1d4c){_0x2f65e6[_0x9d4d('0x1e')]=_0x4a1d4c;if(_0x1e0adc['query'][_0x9d4d('0x3f')]){_0x25015c[_0x9d4d('0x40')]=[{'all':!![]}];}return db[_0x9d4d('0x41')]['findAll'](_0x25015c);})[_0x9d4d('0x24')](function(_0x181622){_0x2f65e6[_0x9d4d('0x42')]=_0x181622;return _0x2f65e6;})['then'](respondWithFilteredResult(_0x775692,_0x25015c))[_0x9d4d('0x43')](handleError(_0x775692,null));};exports[_0x9d4d('0x44')]=function(_0xdcedda,_0x4d1062){var _0x54b0c2={'raw':!![],'where':{'id':_0xdcedda['params']['id']}},_0x548bb3={};_0x548bb3['model']=_['keys'](db[_0x9d4d('0x41')][_0x9d4d('0x45')]);_0x548bb3[_0x9d4d('0x2f')]=_[_0x9d4d('0x30')](_0xdcedda[_0x9d4d('0x2f')]);_0x548bb3[_0x9d4d('0x3a')]=_[_0x9d4d('0x31')](_0x548bb3[_0x9d4d('0x32')],_0x548bb3[_0x9d4d('0x2f')]);_0x54b0c2['attributes']=_[_0x9d4d('0x31')](_0x548bb3[_0x9d4d('0x32')],qs[_0x9d4d('0x34')](_0xdcedda[_0x9d4d('0x2f')][_0x9d4d('0x34')]));_0x54b0c2[_0x9d4d('0x33')]=_0x54b0c2[_0x9d4d('0x33')][_0x9d4d('0x35')]?_0x54b0c2[_0x9d4d('0x33')]:_0x548bb3[_0x9d4d('0x32')];if(_0xdcedda['query'][_0x9d4d('0x3f')]){_0x54b0c2['include']=[{'all':!![]}];}_0x54b0c2=_[_0x9d4d('0x3d')]({},_0x54b0c2,_0xdcedda['options']);return db[_0x9d4d('0x41')][_0x9d4d('0x46')](_0x54b0c2)[_0x9d4d('0x24')](handleEntityNotFound(_0x4d1062,null))[_0x9d4d('0x24')](respondWithResult(_0x4d1062,null))[_0x9d4d('0x43')](handleError(_0x4d1062,null));};exports[_0x9d4d('0x47')]=function(_0x2abccf,_0x1be80a){return db[_0x9d4d('0x41')][_0x9d4d('0x47')](_0x2abccf['body'],{})[_0x9d4d('0x24')](respondWithResult(_0x1be80a,0xc9))['catch'](handleError(_0x1be80a,null));};exports[_0x9d4d('0x23')]=function(_0x29bcfd,_0x52a7fa){if(_0x29bcfd['body']['id']){delete _0x29bcfd['body']['id'];}return db['FreshsalesField'][_0x9d4d('0x46')]({'where':{'id':_0x29bcfd[_0x9d4d('0x48')]['id']}})['then'](handleEntityNotFound(_0x52a7fa,null))[_0x9d4d('0x24')](saveUpdates(_0x29bcfd[_0x9d4d('0x49')],null))[_0x9d4d('0x24')](respondWithResult(_0x52a7fa,null))[_0x9d4d('0x43')](handleError(_0x52a7fa,null));};exports[_0x9d4d('0x25')]=function(_0x4d6750,_0x461906){return db[_0x9d4d('0x41')][_0x9d4d('0x46')]({'where':{'id':_0x4d6750[_0x9d4d('0x48')]['id']}})[_0x9d4d('0x24')](handleEntityNotFound(_0x461906,null))['then'](removeEntity(_0x461906,null))[_0x9d4d('0x43')](handleError(_0x461906,null));};
\ No newline at end of file
index d4d7ab8..836da93 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf970=['rimraf','./intFreshsalesField.attributes','exports','define','FreshsalesField','int_freshsales_fields','freshsales_unique_index','idField','lodash','../../config/logger','api','moment','bluebird','request-promise','path'];(function(_0xf15ca8,_0x4d9fee){var _0x596fe6=function(_0x1bf522){while(--_0x1bf522){_0xf15ca8['push'](_0xf15ca8['shift']());}};_0x596fe6(++_0x4d9fee);}(_0xf970,0x1d9));var _0x0f97=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0xf970[_0x3dd15e];return _0x231fd0;};'use strict';var _=require(_0x0f97('0x0'));var util=require('util');var logger=require(_0x0f97('0x1'))(_0x0f97('0x2'));var moment=require(_0x0f97('0x3'));var BPromise=require(_0x0f97('0x4'));var rp=require(_0x0f97('0x5'));var fs=require('fs');var path=require(_0x0f97('0x6'));var rimraf=require(_0x0f97('0x7'));var config=require('../../config/environment');var attributes=require(_0x0f97('0x8'));module[_0x0f97('0x9')]=function(_0x290200,_0xac501){return _0x290200[_0x0f97('0xa')](_0x0f97('0xb'),attributes,{'tableName':_0x0f97('0xc'),'paranoid':![],'indexes':[{'name':_0x0f97('0xd'),'fields':[_0x0f97('0xe'),'FieldId'],'unique':!![]}],'timestamps':!![]});};
\ No newline at end of file
+var _0x5f66=['util','api','moment','bluebird','request-promise','path','../../config/environment','exports','FreshsalesField','int_freshsales_fields','freshsales_unique_index','idField','FieldId'];(function(_0x5432a8,_0xb7e7c9){var _0x5cb923=function(_0x5d6e1f){while(--_0x5d6e1f){_0x5432a8['push'](_0x5432a8['shift']());}};_0x5cb923(++_0xb7e7c9);}(_0x5f66,0x1a0));var _0x65f6=function(_0x5f0089,_0x227e2c){_0x5f0089=_0x5f0089-0x0;var _0x193892=_0x5f66[_0x5f0089];return _0x193892;};'use strict';var _=require('lodash');var util=require(_0x65f6('0x0'));var logger=require('../../config/logger')(_0x65f6('0x1'));var moment=require(_0x65f6('0x2'));var BPromise=require(_0x65f6('0x3'));var rp=require(_0x65f6('0x4'));var fs=require('fs');var path=require(_0x65f6('0x5'));var rimraf=require('rimraf');var config=require(_0x65f6('0x6'));var attributes=require('./intFreshsalesField.attributes');module[_0x65f6('0x7')]=function(_0x22b017,_0x4ec221){return _0x22b017['define'](_0x65f6('0x8'),attributes,{'tableName':_0x65f6('0x9'),'paranoid':![],'indexes':[{'name':_0x65f6('0xa'),'fields':[_0x65f6('0xb'),_0x65f6('0xc')],'unique':!![]}],'timestamps':!![]});};
\ No newline at end of file
index e25eb4e..0fb76c5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xadb5=['error','code','message','result','catch','util','bluebird','randomstring','ioredis','../../config/utils','../../config/logger','rpc','jayson/promise','client','http','request','then','info','FreshsalesField,\x20%s,\x20%s','request\x20sent','stringify'];(function(_0x135d2a,_0x546cd1){var _0xae488=function(_0x3e8ba0){while(--_0x3e8ba0){_0x135d2a['push'](_0x135d2a['shift']());}};_0xae488(++_0x546cd1);}(_0xadb5,0xad));var _0x5adb=function(_0x1dcc7f,_0x28c642){_0x1dcc7f=_0x1dcc7f-0x0;var _0x4a894a=_0xadb5[_0x1dcc7f];return _0x4a894a;};'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']('FreshsalesField,\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
+var _0xb4c7=['client','http','request','then','info','FreshsalesField,\x20%s,\x20%s','request\x20sent','debug','FreshsalesField,\x20%s,\x20%s,\x20%s','stringify','code','error','message','result','catch','lodash','util','moment','bluebird','randomstring','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment'];(function(_0x374978,_0x4617a1){var _0x41fad8=function(_0x4cddf3){while(--_0x4cddf3){_0x374978['push'](_0x374978['shift']());}};_0x41fad8(++_0x4617a1);}(_0xb4c7,0x1ea));var _0x7b4c=function(_0x11606f,_0x536a7a){_0x11606f=_0x11606f-0x0;var _0x971fbd=_0xb4c7[_0x11606f];return _0x971fbd;};'use strict';var _=require(_0x7b4c('0x0'));var util=require(_0x7b4c('0x1'));var moment=require(_0x7b4c('0x2'));var BPromise=require(_0x7b4c('0x3'));var rs=require(_0x7b4c('0x4'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x7b4c('0x5'))['db'];var utils=require(_0x7b4c('0x6'));var logger=require(_0x7b4c('0x7'))(_0x7b4c('0x8'));var config=require(_0x7b4c('0x9'));var jayson=require('jayson/promise');var client=jayson[_0x7b4c('0xa')][_0x7b4c('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x2dd5c7,_0x4bf85d,_0x2d7b7e){return new BPromise(function(_0x21687f,_0x570daa){return client[_0x7b4c('0xc')](_0x2dd5c7,_0x2d7b7e)[_0x7b4c('0xd')](function(_0x28e902){logger[_0x7b4c('0xe')](_0x7b4c('0xf'),_0x4bf85d,_0x7b4c('0x10'));logger[_0x7b4c('0x11')](_0x7b4c('0x12'),_0x4bf85d,_0x7b4c('0x10'),JSON[_0x7b4c('0x13')](_0x28e902));if(_0x28e902['error']){if(_0x28e902['error'][_0x7b4c('0x14')]===0x1f4){logger[_0x7b4c('0x15')](_0x7b4c('0xf'),_0x4bf85d,_0x28e902[_0x7b4c('0x15')][_0x7b4c('0x16')]);return _0x570daa(_0x28e902[_0x7b4c('0x15')][_0x7b4c('0x16')]);}logger[_0x7b4c('0x15')](_0x7b4c('0xf'),_0x4bf85d,_0x28e902[_0x7b4c('0x15')]['message']);return _0x21687f(_0x28e902[_0x7b4c('0x15')][_0x7b4c('0x16')]);}else{logger[_0x7b4c('0xe')](_0x7b4c('0xf'),_0x4bf85d,_0x7b4c('0x10'));_0x21687f(_0x28e902[_0x7b4c('0x17')][_0x7b4c('0x16')]);}})[_0x7b4c('0x18')](function(_0x4d3f5e){logger[_0x7b4c('0x15')](_0x7b4c('0xf'),_0x4bf85d,_0x4d3f5e);_0x570daa(_0x4d3f5e);});});}
\ No newline at end of file
index 10e83ae..e4a73a9 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(_0x26a709,_0x5cd806){var _0x4259d8=function(_0x40f1c9){while(--_0x40f1c9){_0x26a709['push'](_0x26a709['shift']());}};_0x4259d8(++_0x5cd806);}(_0x9957,0x93));var _0x7995=function(_0x6c993a,_0x5ea3ab){_0x6c993a=_0x6c993a-0x0;var _0x27f547=_0x9957[_0x6c993a];return _0x27f547;};'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(_0x146faa,_0x114377){var _0x5b8f9e=function(_0x2c7602){while(--_0x2c7602){_0x146faa['push'](_0x146faa['shift']());}};_0x5b8f9e(++_0x114377);}(_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 4c69df0..6439faa 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf65d=['STRING','username','integrationTab','newTab','sequelize'];(function(_0x149c4e,_0x582231){var _0x1a3501=function(_0x4e00f9){while(--_0x4e00f9){_0x149c4e['push'](_0x149c4e['shift']());}};_0x1a3501(++_0x582231);}(_0xf65d,0x9f));var _0xdf65=function(_0x2447d7,_0x3466fe){_0x2447d7=_0x2447d7-0x0;var _0x262442=_0xf65d[_0x2447d7];return _0x262442;};'use strict';var Sequelize=require(_0xdf65('0x0'));module['exports']={'name':{'type':Sequelize[_0xdf65('0x1')]},'description':{'type':Sequelize[_0xdf65('0x1')]},'username':{'type':Sequelize[_0xdf65('0x1')],'unique':_0xdf65('0x2')},'remoteUri':{'type':Sequelize[_0xdf65('0x1')]},'password':{'type':Sequelize[_0xdf65('0x1')]},'clientId':{'type':Sequelize['STRING']},'clientSecret':{'type':Sequelize['STRING']},'securityToken':{'type':Sequelize['STRING']},'serverUrl':{'type':Sequelize[_0xdf65('0x1')],'allowNull':![]},'type':{'type':Sequelize['ENUM'](_0xdf65('0x3'),_0xdf65('0x4')),'defaultValue':'integrationTab'}};
\ No newline at end of file
+var _0xe3b3=['username','ENUM','integrationTab','sequelize','exports','STRING'];(function(_0x16ae9a,_0x474e98){var _0x40229e=function(_0x3eb4d6){while(--_0x3eb4d6){_0x16ae9a['push'](_0x16ae9a['shift']());}};_0x40229e(++_0x474e98);}(_0xe3b3,0x1b3));var _0x3e3b=function(_0x1a17f3,_0x27b161){_0x1a17f3=_0x1a17f3-0x0;var _0x2fbdb3=_0xe3b3[_0x1a17f3];return _0x2fbdb3;};'use strict';var Sequelize=require(_0x3e3b('0x0'));module[_0x3e3b('0x1')]={'name':{'type':Sequelize[_0x3e3b('0x2')]},'description':{'type':Sequelize[_0x3e3b('0x2')]},'username':{'type':Sequelize[_0x3e3b('0x2')],'unique':_0x3e3b('0x3')},'remoteUri':{'type':Sequelize[_0x3e3b('0x2')]},'password':{'type':Sequelize[_0x3e3b('0x2')]},'clientId':{'type':Sequelize[_0x3e3b('0x2')]},'clientSecret':{'type':Sequelize[_0x3e3b('0x2')]},'securityToken':{'type':Sequelize['STRING']},'serverUrl':{'type':Sequelize[_0x3e3b('0x2')],'allowNull':![]},'type':{'type':Sequelize[_0x3e3b('0x4')](_0x3e3b('0x5'),'newTab'),'defaultValue':_0x3e3b('0x5')}};
\ No newline at end of file
index 1a56674..ef85cbb 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xda15=['statusCode','getFields,\x20%s,\x20%s,\x20%s','stringify','Wrong\x20credentials','rimraf','fast-json-patch','request-promise','moment','bluebird','util','sox','to-csv','ejs','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','../../config/license/util','../../mysqldb','../../components/integrations/configuration','sendStatus','status','end','json','offset','undefined','limit','count','set','apply','reject','save','update','then','destroy','error','stack','name','send','map','SalesforceAccount','key','model','keys','query','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','pick','merge','VIRTUAL','options','includeAll','include','findAll','rows','catch','show','rawAttributes','create','body','params','getConfigurations','SalesforceConfiguration','addConfiguration','AccountId','Subjects','channel','type','getDescriptions','SalesforceField','getFields','Task','findOne','remoteUri','clientId','clientSecret','securityToken','Connection','login','username','concat','isNil','ticketType','sobject','describe','OwnerId','ActivityDate','IsReminderSet','IsRecurrence','Description','int','picklist','boolean','email','textarea','phone','remove','includes','label','custom','picklistValues','value','True','true','False','false','test'];(function(_0x589781,_0x4f1f95){var _0x56ed6e=function(_0x2c297f){while(--_0x2c297f){_0x589781['push'](_0x589781['shift']());}};_0x56ed6e(++_0x4f1f95);}(_0xda15,0x81));var _0x5da1=function(_0x54886b,_0x2c9cbc){_0x54886b=_0x54886b-0x0;var _0xb1e0ea=_0xda15[_0x54886b];return _0xb1e0ea;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x5da1('0x0'));var zipdir=require('zip-dir');var jsonpatch=require(_0x5da1('0x1'));var rp=require(_0x5da1('0x2'));var moment=require(_0x5da1('0x3'));var BPromise=require(_0x5da1('0x4'));var Mustache=require('mustache');var util=require(_0x5da1('0x5'));var path=require('path');var sox=require(_0x5da1('0x6'));var csv=require(_0x5da1('0x7'));var ejs=require(_0x5da1('0x8'));var fs=require('fs');var fs_extra=require(_0x5da1('0x9'));var _=require(_0x5da1('0xa'));var squel=require(_0x5da1('0xb'));var crypto=require(_0x5da1('0xc'));var jsforce=require(_0x5da1('0xd'));var deskjs=require('desk.js');var toCsv=require('to-csv');var querystring=require('querystring');var Papa=require(_0x5da1('0xe'));var Redis=require(_0x5da1('0xf'));var authService=require(_0x5da1('0x10'));var qs=require(_0x5da1('0x11'));var as=require(_0x5da1('0x12'));var hardwareService=require(_0x5da1('0x13'));var logger=require(_0x5da1('0x14'))(_0x5da1('0x15'));var utils=require('../../config/utils');var config=require(_0x5da1('0x16'));var licenseUtil=require(_0x5da1('0x17'));var db=require(_0x5da1('0x18'))['db'];var integrations=require(_0x5da1('0x19'));function respondWithStatusCode(_0x41a3d6,_0x5aefdf){_0x5aefdf=_0x5aefdf||0xcc;return function(_0x35f0c8){if(_0x35f0c8){return _0x41a3d6[_0x5da1('0x1a')](_0x5aefdf);}return _0x41a3d6[_0x5da1('0x1b')](_0x5aefdf)[_0x5da1('0x1c')]();};}function respondWithResult(_0x14c9be,_0x1c9cf3){_0x1c9cf3=_0x1c9cf3||0xc8;return function(_0x3ccb8c){if(_0x3ccb8c){return _0x14c9be[_0x5da1('0x1b')](_0x1c9cf3)[_0x5da1('0x1d')](_0x3ccb8c);}};}function respondWithFilteredResult(_0xe2436,_0xadae3d){return function(_0x1ba7f2){if(_0x1ba7f2){var _0x56a189=typeof _0xadae3d[_0x5da1('0x1e')]===_0x5da1('0x1f')&&typeof _0xadae3d[_0x5da1('0x20')]===_0x5da1('0x1f');var _0x563d39=_0x1ba7f2['count'];var _0x260008=_0x56a189?0x0:_0xadae3d[_0x5da1('0x1e')];var _0x47b2cb=_0x56a189?_0x1ba7f2[_0x5da1('0x21')]:_0xadae3d[_0x5da1('0x1e')]+_0xadae3d[_0x5da1('0x20')];var _0x4ba92f;if(_0x47b2cb>=_0x563d39){_0x47b2cb=_0x563d39;_0x4ba92f=0xc8;}else{_0x4ba92f=0xce;}_0xe2436[_0x5da1('0x1b')](_0x4ba92f);return _0xe2436[_0x5da1('0x22')]('Content-Range',_0x260008+'-'+_0x47b2cb+'/'+_0x563d39)[_0x5da1('0x1d')](_0x1ba7f2);}return null;};}function patchUpdates(_0x40bd6e){return function(_0x1785dc){try{jsonpatch[_0x5da1('0x23')](_0x1785dc,_0x40bd6e,!![]);}catch(_0x39c1fe){return BPromise[_0x5da1('0x24')](_0x39c1fe);}return _0x1785dc[_0x5da1('0x25')]();};}function saveUpdates(_0x396837,_0x1c289a){return function(_0x5d071e){if(_0x5d071e){return _0x5d071e[_0x5da1('0x26')](_0x396837)[_0x5da1('0x27')](function(_0x1b1a70){return _0x1b1a70;});}return null;};}function removeEntity(_0x3205be,_0x53b1b1){return function(_0x2b4b02){if(_0x2b4b02){return _0x2b4b02[_0x5da1('0x28')]()[_0x5da1('0x27')](function(){_0x3205be[_0x5da1('0x1b')](0xcc)[_0x5da1('0x1c')]();});}};}function handleEntityNotFound(_0x4b1d58,_0x1ef546){return function(_0x101dbf){if(!_0x101dbf){_0x4b1d58[_0x5da1('0x1a')](0x194);}return _0x101dbf;};}function handleError(_0x3c39e6,_0x100eef){_0x100eef=_0x100eef||0x1f4;return function(_0xc1a32f){logger[_0x5da1('0x29')](_0xc1a32f[_0x5da1('0x2a')]);if(_0xc1a32f[_0x5da1('0x2b')]){delete _0xc1a32f['name'];}_0x3c39e6[_0x5da1('0x1b')](_0x100eef)[_0x5da1('0x2c')](_0xc1a32f);};}exports['index']=function(_0x2dc9ef,_0x2a2e5e){var _0xd9372d={},_0x19315a={},_0x4a7d15={'count':0x0,'rows':[]};var _0x52fb87=_[_0x5da1('0x2d')](db[_0x5da1('0x2e')]['rawAttributes'],function(_0x523b2b){return{'name':_0x523b2b['fieldName'],'type':_0x523b2b['type'][_0x5da1('0x2f')]};});_0x19315a[_0x5da1('0x30')]=_['map'](_0x52fb87,_0x5da1('0x2b'));_0x19315a['query']=_[_0x5da1('0x31')](_0x2dc9ef[_0x5da1('0x32')]);_0x19315a[_0x5da1('0x33')]=_[_0x5da1('0x34')](_0x19315a[_0x5da1('0x30')],_0x19315a[_0x5da1('0x32')]);_0xd9372d[_0x5da1('0x35')]=_[_0x5da1('0x34')](_0x19315a[_0x5da1('0x30')],qs[_0x5da1('0x36')](_0x2dc9ef['query']['fields']));_0xd9372d[_0x5da1('0x35')]=_0xd9372d['attributes'][_0x5da1('0x37')]?_0xd9372d['attributes']:_0x19315a['model'];if(!_0x2dc9ef['query'][_0x5da1('0x38')](_0x5da1('0x39'))){_0xd9372d[_0x5da1('0x20')]=qs[_0x5da1('0x20')](_0x2dc9ef[_0x5da1('0x32')]['limit']);_0xd9372d[_0x5da1('0x1e')]=qs[_0x5da1('0x1e')](_0x2dc9ef[_0x5da1('0x32')][_0x5da1('0x1e')]);}_0xd9372d[_0x5da1('0x3a')]=qs[_0x5da1('0x3b')](_0x2dc9ef[_0x5da1('0x32')][_0x5da1('0x3b')]);_0xd9372d[_0x5da1('0x3c')]=qs[_0x5da1('0x33')](_[_0x5da1('0x3d')](_0x2dc9ef[_0x5da1('0x32')],_0x19315a[_0x5da1('0x33')]),_0x52fb87);if(_0x2dc9ef[_0x5da1('0x32')]['filter']){_0xd9372d[_0x5da1('0x3c')]=_[_0x5da1('0x3e')](_0xd9372d[_0x5da1('0x3c')],{'$or':_[_0x5da1('0x2d')](_0x52fb87,function(_0x3e6ac6){if(_0x3e6ac6['type']!==_0x5da1('0x3f')){var _0x21e9f8={};_0x21e9f8[_0x3e6ac6[_0x5da1('0x2b')]]={'$like':'%'+_0x2dc9ef[_0x5da1('0x32')]['filter']+'%'};return _0x21e9f8;}})});}_0xd9372d=_[_0x5da1('0x3e')]({},_0xd9372d,_0x2dc9ef[_0x5da1('0x40')]);var _0x1d69a7={'where':_0xd9372d[_0x5da1('0x3c')]};return db[_0x5da1('0x2e')][_0x5da1('0x21')](_0x1d69a7)[_0x5da1('0x27')](function(_0x87b91d){_0x4a7d15[_0x5da1('0x21')]=_0x87b91d;if(_0x2dc9ef[_0x5da1('0x32')][_0x5da1('0x41')]){_0xd9372d[_0x5da1('0x42')]=[{'all':!![]}];}return db[_0x5da1('0x2e')][_0x5da1('0x43')](_0xd9372d);})[_0x5da1('0x27')](function(_0x526304){_0x4a7d15[_0x5da1('0x44')]=_0x526304;return _0x4a7d15;})[_0x5da1('0x27')](respondWithFilteredResult(_0x2a2e5e,_0xd9372d))[_0x5da1('0x45')](handleError(_0x2a2e5e,null));};exports[_0x5da1('0x46')]=function(_0x2539e9,_0x540673){var _0x496056={'raw':![],'where':{'id':_0x2539e9['params']['id']}},_0x437e6a={};_0x437e6a[_0x5da1('0x30')]=_['keys'](db[_0x5da1('0x2e')][_0x5da1('0x47')]);_0x437e6a[_0x5da1('0x32')]=_['keys'](_0x2539e9['query']);_0x437e6a[_0x5da1('0x33')]=_[_0x5da1('0x34')](_0x437e6a[_0x5da1('0x30')],_0x437e6a['query']);_0x496056[_0x5da1('0x35')]=_[_0x5da1('0x34')](_0x437e6a[_0x5da1('0x30')],qs['fields'](_0x2539e9['query'][_0x5da1('0x36')]));_0x496056[_0x5da1('0x35')]=_0x496056[_0x5da1('0x35')]['length']?_0x496056['attributes']:_0x437e6a[_0x5da1('0x30')];if(_0x2539e9[_0x5da1('0x32')]['includeAll']){_0x496056[_0x5da1('0x42')]=[{'all':!![]}];}_0x496056=_['merge']({},_0x496056,_0x2539e9[_0x5da1('0x40')]);return db[_0x5da1('0x2e')]['find'](_0x496056)['then'](handleEntityNotFound(_0x540673,null))[_0x5da1('0x27')](respondWithResult(_0x540673,null))[_0x5da1('0x45')](handleError(_0x540673,null));};exports['create']=function(_0x3d4389,_0x2d7809){return db[_0x5da1('0x2e')][_0x5da1('0x48')](_0x3d4389[_0x5da1('0x49')],{})[_0x5da1('0x27')](respondWithResult(_0x2d7809,0xc9))[_0x5da1('0x45')](handleError(_0x2d7809,null));};exports[_0x5da1('0x26')]=function(_0x33e55f,_0x44d259){if(_0x33e55f['body']['id']){delete _0x33e55f[_0x5da1('0x49')]['id'];}return db['SalesforceAccount']['find']({'where':{'id':_0x33e55f[_0x5da1('0x4a')]['id']}})[_0x5da1('0x27')](handleEntityNotFound(_0x44d259,null))[_0x5da1('0x27')](saveUpdates(_0x33e55f[_0x5da1('0x49')],null))[_0x5da1('0x27')](respondWithResult(_0x44d259,null))[_0x5da1('0x45')](handleError(_0x44d259,null));};exports[_0x5da1('0x28')]=function(_0x2d8c7c,_0x18df25){return db[_0x5da1('0x2e')]['find']({'where':{'id':_0x2d8c7c[_0x5da1('0x4a')]['id']}})[_0x5da1('0x27')](handleEntityNotFound(_0x18df25,null))[_0x5da1('0x27')](removeEntity(_0x18df25,null))['catch'](handleError(_0x18df25,null));};exports[_0x5da1('0x4b')]=function(_0x4d4ceb,_0x34474d,_0x1c9875){var _0x412ed6={};var _0x2fe377={};var _0x109dbf;var _0x4d2fec;return db[_0x5da1('0x2e')]['findOne']({'where':{'id':_0x4d4ceb[_0x5da1('0x4a')]['id']}})[_0x5da1('0x27')](handleEntityNotFound(_0x34474d,null))['then'](function(_0x117f82){if(_0x117f82){_0x109dbf=_0x117f82;_0x2fe377[_0x5da1('0x30')]=_[_0x5da1('0x31')](db[_0x5da1('0x4c')][_0x5da1('0x47')]);_0x2fe377[_0x5da1('0x32')]=_[_0x5da1('0x31')](_0x4d4ceb[_0x5da1('0x32')]);_0x2fe377[_0x5da1('0x33')]=_['intersection'](_0x2fe377[_0x5da1('0x30')],_0x2fe377[_0x5da1('0x32')]);_0x412ed6['attributes']=_[_0x5da1('0x34')](_0x2fe377[_0x5da1('0x30')],qs['fields'](_0x4d4ceb[_0x5da1('0x32')][_0x5da1('0x36')]));_0x412ed6[_0x5da1('0x35')]=_0x412ed6[_0x5da1('0x35')]['length']?_0x412ed6[_0x5da1('0x35')]:_0x2fe377[_0x5da1('0x30')];_0x412ed6[_0x5da1('0x3a')]=qs[_0x5da1('0x3b')](_0x4d4ceb[_0x5da1('0x32')][_0x5da1('0x3b')]);_0x412ed6[_0x5da1('0x3c')]=qs[_0x5da1('0x33')](_[_0x5da1('0x3d')](_0x4d4ceb['query'],_0x2fe377['filters']));if(_0x4d4ceb['query']['filter']){_0x412ed6[_0x5da1('0x3c')]=_['merge'](_0x412ed6[_0x5da1('0x3c')],{'$or':_[_0x5da1('0x2d')](_0x412ed6[_0x5da1('0x35')],function(_0x250e54){var _0x1f80a6={};_0x1f80a6[_0x250e54]={'$like':'%'+_0x4d4ceb[_0x5da1('0x32')]['filter']+'%'};return _0x1f80a6;})});}_0x412ed6=_['merge']({},_0x412ed6,_0x4d4ceb['options']);return _0x109dbf[_0x5da1('0x4b')](_0x412ed6);}})[_0x5da1('0x27')](function(_0x56f845){if(_0x56f845){_0x4d2fec=_0x56f845[_0x5da1('0x37')];if(!_0x4d4ceb['query'][_0x5da1('0x38')](_0x5da1('0x39'))){_0x412ed6[_0x5da1('0x20')]=qs[_0x5da1('0x20')](_0x4d4ceb[_0x5da1('0x32')]['limit']);_0x412ed6[_0x5da1('0x1e')]=qs[_0x5da1('0x1e')](_0x4d4ceb[_0x5da1('0x32')][_0x5da1('0x1e')]);}return _0x109dbf[_0x5da1('0x4b')](_0x412ed6);}})[_0x5da1('0x27')](function(_0x4f8ae7){if(_0x4f8ae7){return _0x4f8ae7?{'count':_0x4d2fec,'rows':_0x4f8ae7}:null;}})[_0x5da1('0x27')](respondWithResult(_0x34474d,null))[_0x5da1('0x45')](handleError(_0x34474d,null));};exports[_0x5da1('0x4d')]=function(_0x5a0784,_0x5a3091,_0x40c28d){if(_0x5a0784[_0x5da1('0x49')]['id']){delete _0x5a0784[_0x5da1('0x49')]['id'];}return db[_0x5da1('0x2e')]['findOne']({'where':{'id':_0x5a0784[_0x5da1('0x4a')]['id']}})[_0x5da1('0x27')](handleEntityNotFound(_0x5a3091,null))['then'](function(_0x233e69){if(_0x233e69){_0x5a0784[_0x5da1('0x49')][_0x5da1('0x4e')]=_0x233e69['id'];_0x5a0784[_0x5da1('0x49')][_0x5da1('0x4f')]=integrations['getSubjects'](_0x5a0784['body'][_0x5da1('0x50')],_0x5a0784[_0x5da1('0x49')][_0x5da1('0x51')]);_0x5a0784['body']['Descriptions']=integrations[_0x5da1('0x52')](_0x5a0784[_0x5da1('0x49')]['channel'],_0x5a0784[_0x5da1('0x49')]['type']);return db[_0x5da1('0x4c')]['create'](_0x5a0784[_0x5da1('0x49')],{'include':[{'model':db[_0x5da1('0x53')],'as':_0x5da1('0x4f')},{'model':db['SalesforceField'],'as':'Descriptions'}]});}return null;})[_0x5da1('0x27')](respondWithResult(_0x5a3091,null))['catch'](handleError(_0x5a3091,null));};exports[_0x5da1('0x54')]=function(_0x29458f,_0x4cea8b,_0x2dca7f){var _0x2262bb;var _0x54ddd6='';var _0x2ac4ed=_0x5da1('0x55');return db[_0x5da1('0x2e')][_0x5da1('0x56')]({'where':{'id':_0x29458f[_0x5da1('0x4a')]['id']},'attributes':['id',_0x5da1('0x57'),_0x5da1('0x58'),_0x5da1('0x59'),'username','password',_0x5da1('0x5a')]})[_0x5da1('0x27')](handleEntityNotFound(_0x4cea8b,null))[_0x5da1('0x27')](function(_0x544ddd){if(_0x544ddd){_0x54ddd6=_0x544ddd[_0x5da1('0x57')];var _0x282732=_0x54ddd6['slice'](-0x1);if(_0x282732==='/'){_0x54ddd6=_0x54ddd6['substring'](0x0,_0x54ddd6['lastIndexOf'](_0x282732));}_0x2262bb=new jsforce[(_0x5da1('0x5b'))]({'oauth2':{'loginUrl':_0x54ddd6,'clientId':_0x544ddd[_0x5da1('0x58')],'clientSecret':_0x544ddd[_0x5da1('0x59')]}});return _0x2262bb[_0x5da1('0x5c')](_0x544ddd[_0x5da1('0x5d')],_0x544ddd['password'][_0x5da1('0x5e')](_0x544ddd[_0x5da1('0x5a')]));}})['then'](function(_0x2173b8){if(_0x2173b8){if(!_[_0x5da1('0x5f')](_0x29458f['query'][_0x5da1('0x60')])){_0x2ac4ed=_0x29458f[_0x5da1('0x32')][_0x5da1('0x60')];}return _0x2262bb[_0x5da1('0x61')](_0x2ac4ed)[_0x5da1('0x62')]();}})[_0x5da1('0x27')](function(_0x4fcfdd){var _0x4e037f=[_0x5da1('0x63'),_0x5da1('0x64'),_0x5da1('0x65'),_0x5da1('0x66'),'Subject',_0x5da1('0x67')];var _0x233d72=['string',_0x5da1('0x68'),_0x5da1('0x69'),_0x5da1('0x6a'),_0x5da1('0x6b'),_0x5da1('0x6c'),_0x5da1('0x6d')];if(_0x4fcfdd){_[_0x5da1('0x6e')](_0x4fcfdd['fields'],function(_0x474bff){return _0x4e037f['includes'](_0x474bff[_0x5da1('0x2b')])||!_0x233d72[_0x5da1('0x6f')](_0x474bff[_0x5da1('0x51')]);});return{'count':_0x4fcfdd[_0x5da1('0x36')][_0x5da1('0x37')],'rows':_[_0x5da1('0x2d')](_0x4fcfdd['fields'],function(_0xdeddd9){return{'id':_0xdeddd9[_0x5da1('0x2b')],'name':_0xdeddd9[_0x5da1('0x70')],'custom':_0xdeddd9[_0x5da1('0x71')],'options':_0xdeddd9[_0x5da1('0x72')]['length']>0x0?_['map'](_0xdeddd9['picklistValues'],function(_0x205a53){return{'name':_0x205a53['label'],'value':_0x205a53[_0x5da1('0x73')]};}):_0xdeddd9['type']==_0x5da1('0x6a')?[{'name':_0x5da1('0x74'),'value':_0x5da1('0x75')},{'name':_0x5da1('0x76'),'value':_0x5da1('0x77')}]:[]};})};}})[_0x5da1('0x27')](respondWithResult(_0x4cea8b,null))[_0x5da1('0x45')](function(_0x1cb51a){var _0x50e31f=_0x29458f[_0x5da1('0x32')][_0x5da1('0x78')]?0x1f4:_0x1cb51a[_0x5da1('0x79')]||0x1f4;logger[_0x5da1('0x29')](_0x5da1('0x7a'),_0x5da1('0x54'),_0x50e31f,JSON[_0x5da1('0x7b')](_0x1cb51a));delete _0x1cb51a[_0x5da1('0x2b')];if(_0x50e31f===0x191){_0x50e31f=0x190;}_0x4cea8b[_0x5da1('0x1b')](_0x50e31f)[_0x5da1('0x2c')](_0x29458f[_0x5da1('0x32')][_0x5da1('0x78')]?{'message':_0x5da1('0x7c'),'statusCode':_0x1cb51a[_0x5da1('0x79')]}:_0x1cb51a);});};
\ No newline at end of file
+var _0x6d5f=['json','save','then','destroy','error','stack','name','send','index','map','SalesforceAccount','rawAttributes','fieldName','type','key','query','keys','filters','intersection','attributes','model','fields','hasOwnProperty','sort','where','pick','filter','merge','options','include','catch','show','params','includeAll','find','create','body','getConfigurations','findOne','SalesforceConfiguration','length','order','nolimit','addConfiguration','Subjects','getSubjects','Descriptions','getDescriptions','SalesforceField','remoteUri','clientId','clientSecret','username','password','securityToken','slice','substring','lastIndexOf','concat','isNil','ticketType','sobject','describe','OwnerId','ActivityDate','IsReminderSet','IsRecurrence','Subject','Description','picklist','email','remove','includes','label','custom','picklistValues','boolean','True','true','False','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','ejs','lodash','squel','jsforce','desk.js','to-csv','querystring','papaparse','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','sendStatus','end','status','offset','undefined','limit','count','set','Content-Range'];(function(_0x8d0c67,_0x1c98ce){var _0x312d94=function(_0x2b070b){while(--_0x2b070b){_0x8d0c67['push'](_0x8d0c67['shift']());}};_0x312d94(++_0x1c98ce);}(_0x6d5f,0xcf));var _0xf6d5=function(_0x8afaa9,_0x4c3138){_0x8afaa9=_0x8afaa9-0x0;var _0x3c1ad0=_0x6d5f[_0x8afaa9];return _0x3c1ad0;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0xf6d5('0x0'));var zipdir=require(_0xf6d5('0x1'));var jsonpatch=require(_0xf6d5('0x2'));var rp=require('request-promise');var moment=require(_0xf6d5('0x3'));var BPromise=require(_0xf6d5('0x4'));var Mustache=require(_0xf6d5('0x5'));var util=require(_0xf6d5('0x6'));var path=require(_0xf6d5('0x7'));var sox=require(_0xf6d5('0x8'));var csv=require('to-csv');var ejs=require(_0xf6d5('0x9'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0xf6d5('0xa'));var squel=require(_0xf6d5('0xb'));var crypto=require('crypto');var jsforce=require(_0xf6d5('0xc'));var deskjs=require(_0xf6d5('0xd'));var toCsv=require(_0xf6d5('0xe'));var querystring=require(_0xf6d5('0xf'));var Papa=require(_0xf6d5('0x10'));var Redis=require('ioredis');var authService=require(_0xf6d5('0x11'));var qs=require(_0xf6d5('0x12'));var as=require(_0xf6d5('0x13'));var hardwareService=require(_0xf6d5('0x14'));var logger=require(_0xf6d5('0x15'))(_0xf6d5('0x16'));var utils=require(_0xf6d5('0x17'));var config=require(_0xf6d5('0x18'));var licenseUtil=require(_0xf6d5('0x19'));var db=require('../../mysqldb')['db'];var integrations=require('../../components/integrations/configuration');function respondWithStatusCode(_0x1f1ea5,_0x4f6ed4){_0x4f6ed4=_0x4f6ed4||0xcc;return function(_0x2fc26a){if(_0x2fc26a){return _0x1f1ea5[_0xf6d5('0x1a')](_0x4f6ed4);}return _0x1f1ea5['status'](_0x4f6ed4)[_0xf6d5('0x1b')]();};}function respondWithResult(_0x9525f6,_0x48ce8d){_0x48ce8d=_0x48ce8d||0xc8;return function(_0x5b7b51){if(_0x5b7b51){return _0x9525f6[_0xf6d5('0x1c')](_0x48ce8d)['json'](_0x5b7b51);}};}function respondWithFilteredResult(_0x250c89,_0x2af9c7){return function(_0x183a39){if(_0x183a39){var _0x15b08d=typeof _0x2af9c7[_0xf6d5('0x1d')]===_0xf6d5('0x1e')&&typeof _0x2af9c7[_0xf6d5('0x1f')]===_0xf6d5('0x1e');var _0x256e58=_0x183a39['count'];var _0x3536b5=_0x15b08d?0x0:_0x2af9c7[_0xf6d5('0x1d')];var _0x3ac2ca=_0x15b08d?_0x183a39[_0xf6d5('0x20')]:_0x2af9c7[_0xf6d5('0x1d')]+_0x2af9c7['limit'];var _0x33a114;if(_0x3ac2ca>=_0x256e58){_0x3ac2ca=_0x256e58;_0x33a114=0xc8;}else{_0x33a114=0xce;}_0x250c89['status'](_0x33a114);return _0x250c89[_0xf6d5('0x21')](_0xf6d5('0x22'),_0x3536b5+'-'+_0x3ac2ca+'/'+_0x256e58)[_0xf6d5('0x23')](_0x183a39);}return null;};}function patchUpdates(_0x4c877f){return function(_0x24d066){try{jsonpatch['apply'](_0x24d066,_0x4c877f,!![]);}catch(_0x173be3){return BPromise['reject'](_0x173be3);}return _0x24d066[_0xf6d5('0x24')]();};}function saveUpdates(_0x10d1df,_0x5c36f9){return function(_0x1999a0){if(_0x1999a0){return _0x1999a0['update'](_0x10d1df)[_0xf6d5('0x25')](function(_0xcf7388){return _0xcf7388;});}return null;};}function removeEntity(_0x493245,_0x20985b){return function(_0x31d290){if(_0x31d290){return _0x31d290[_0xf6d5('0x26')]()['then'](function(){_0x493245['status'](0xcc)[_0xf6d5('0x1b')]();});}};}function handleEntityNotFound(_0x251c7f,_0x2b1c88){return function(_0x3362fb){if(!_0x3362fb){_0x251c7f[_0xf6d5('0x1a')](0x194);}return _0x3362fb;};}function handleError(_0x37d321,_0x3597e3){_0x3597e3=_0x3597e3||0x1f4;return function(_0x372088){logger[_0xf6d5('0x27')](_0x372088[_0xf6d5('0x28')]);if(_0x372088[_0xf6d5('0x29')]){delete _0x372088[_0xf6d5('0x29')];}_0x37d321[_0xf6d5('0x1c')](_0x3597e3)[_0xf6d5('0x2a')](_0x372088);};}exports[_0xf6d5('0x2b')]=function(_0x3b68b4,_0x52617f){var _0x44b985={},_0x2961a1={},_0x32c48a={'count':0x0,'rows':[]};var _0xd806d=_[_0xf6d5('0x2c')](db[_0xf6d5('0x2d')][_0xf6d5('0x2e')],function(_0x26644a){return{'name':_0x26644a[_0xf6d5('0x2f')],'type':_0x26644a[_0xf6d5('0x30')][_0xf6d5('0x31')]};});_0x2961a1['model']=_[_0xf6d5('0x2c')](_0xd806d,_0xf6d5('0x29'));_0x2961a1[_0xf6d5('0x32')]=_[_0xf6d5('0x33')](_0x3b68b4['query']);_0x2961a1[_0xf6d5('0x34')]=_[_0xf6d5('0x35')](_0x2961a1['model'],_0x2961a1[_0xf6d5('0x32')]);_0x44b985[_0xf6d5('0x36')]=_[_0xf6d5('0x35')](_0x2961a1[_0xf6d5('0x37')],qs['fields'](_0x3b68b4[_0xf6d5('0x32')][_0xf6d5('0x38')]));_0x44b985[_0xf6d5('0x36')]=_0x44b985[_0xf6d5('0x36')]['length']?_0x44b985[_0xf6d5('0x36')]:_0x2961a1[_0xf6d5('0x37')];if(!_0x3b68b4['query'][_0xf6d5('0x39')]('nolimit')){_0x44b985['limit']=qs[_0xf6d5('0x1f')](_0x3b68b4[_0xf6d5('0x32')][_0xf6d5('0x1f')]);_0x44b985[_0xf6d5('0x1d')]=qs[_0xf6d5('0x1d')](_0x3b68b4[_0xf6d5('0x32')][_0xf6d5('0x1d')]);}_0x44b985['order']=qs[_0xf6d5('0x3a')](_0x3b68b4[_0xf6d5('0x32')][_0xf6d5('0x3a')]);_0x44b985[_0xf6d5('0x3b')]=qs[_0xf6d5('0x34')](_[_0xf6d5('0x3c')](_0x3b68b4['query'],_0x2961a1['filters']),_0xd806d);if(_0x3b68b4[_0xf6d5('0x32')][_0xf6d5('0x3d')]){_0x44b985['where']=_[_0xf6d5('0x3e')](_0x44b985[_0xf6d5('0x3b')],{'$or':_['map'](_0xd806d,function(_0x81dee5){if(_0x81dee5[_0xf6d5('0x30')]!=='VIRTUAL'){var _0x1f9812={};_0x1f9812[_0x81dee5[_0xf6d5('0x29')]]={'$like':'%'+_0x3b68b4[_0xf6d5('0x32')][_0xf6d5('0x3d')]+'%'};return _0x1f9812;}})});}_0x44b985=_[_0xf6d5('0x3e')]({},_0x44b985,_0x3b68b4[_0xf6d5('0x3f')]);var _0x38634c={'where':_0x44b985['where']};return db[_0xf6d5('0x2d')][_0xf6d5('0x20')](_0x38634c)[_0xf6d5('0x25')](function(_0x12126f){_0x32c48a[_0xf6d5('0x20')]=_0x12126f;if(_0x3b68b4[_0xf6d5('0x32')]['includeAll']){_0x44b985[_0xf6d5('0x40')]=[{'all':!![]}];}return db[_0xf6d5('0x2d')]['findAll'](_0x44b985);})['then'](function(_0x57d783){_0x32c48a['rows']=_0x57d783;return _0x32c48a;})['then'](respondWithFilteredResult(_0x52617f,_0x44b985))[_0xf6d5('0x41')](handleError(_0x52617f,null));};exports[_0xf6d5('0x42')]=function(_0x3112de,_0x13227e){var _0x126de3={'raw':![],'where':{'id':_0x3112de[_0xf6d5('0x43')]['id']}},_0x2f45e5={};_0x2f45e5['model']=_[_0xf6d5('0x33')](db[_0xf6d5('0x2d')][_0xf6d5('0x2e')]);_0x2f45e5[_0xf6d5('0x32')]=_[_0xf6d5('0x33')](_0x3112de['query']);_0x2f45e5['filters']=_[_0xf6d5('0x35')](_0x2f45e5[_0xf6d5('0x37')],_0x2f45e5[_0xf6d5('0x32')]);_0x126de3[_0xf6d5('0x36')]=_[_0xf6d5('0x35')](_0x2f45e5[_0xf6d5('0x37')],qs[_0xf6d5('0x38')](_0x3112de[_0xf6d5('0x32')]['fields']));_0x126de3['attributes']=_0x126de3[_0xf6d5('0x36')]['length']?_0x126de3[_0xf6d5('0x36')]:_0x2f45e5[_0xf6d5('0x37')];if(_0x3112de[_0xf6d5('0x32')][_0xf6d5('0x44')]){_0x126de3[_0xf6d5('0x40')]=[{'all':!![]}];}_0x126de3=_[_0xf6d5('0x3e')]({},_0x126de3,_0x3112de[_0xf6d5('0x3f')]);return db[_0xf6d5('0x2d')][_0xf6d5('0x45')](_0x126de3)[_0xf6d5('0x25')](handleEntityNotFound(_0x13227e,null))[_0xf6d5('0x25')](respondWithResult(_0x13227e,null))[_0xf6d5('0x41')](handleError(_0x13227e,null));};exports[_0xf6d5('0x46')]=function(_0x4e5fcd,_0x97f124){return db[_0xf6d5('0x2d')][_0xf6d5('0x46')](_0x4e5fcd[_0xf6d5('0x47')],{})[_0xf6d5('0x25')](respondWithResult(_0x97f124,0xc9))[_0xf6d5('0x41')](handleError(_0x97f124,null));};exports['update']=function(_0x1a0c5a,_0x2d8d0a){if(_0x1a0c5a[_0xf6d5('0x47')]['id']){delete _0x1a0c5a[_0xf6d5('0x47')]['id'];}return db['SalesforceAccount'][_0xf6d5('0x45')]({'where':{'id':_0x1a0c5a[_0xf6d5('0x43')]['id']}})[_0xf6d5('0x25')](handleEntityNotFound(_0x2d8d0a,null))[_0xf6d5('0x25')](saveUpdates(_0x1a0c5a[_0xf6d5('0x47')],null))[_0xf6d5('0x25')](respondWithResult(_0x2d8d0a,null))[_0xf6d5('0x41')](handleError(_0x2d8d0a,null));};exports[_0xf6d5('0x26')]=function(_0x267569,_0xe370a9){return db['SalesforceAccount']['find']({'where':{'id':_0x267569[_0xf6d5('0x43')]['id']}})[_0xf6d5('0x25')](handleEntityNotFound(_0xe370a9,null))[_0xf6d5('0x25')](removeEntity(_0xe370a9,null))['catch'](handleError(_0xe370a9,null));};exports[_0xf6d5('0x48')]=function(_0x5dceb4,_0xc2ce02,_0x1512e3){var _0x496910={};var _0xa70e8a={};var _0x4e921e;var _0x4c7bc2;return db[_0xf6d5('0x2d')][_0xf6d5('0x49')]({'where':{'id':_0x5dceb4[_0xf6d5('0x43')]['id']}})[_0xf6d5('0x25')](handleEntityNotFound(_0xc2ce02,null))[_0xf6d5('0x25')](function(_0x22c126){if(_0x22c126){_0x4e921e=_0x22c126;_0xa70e8a[_0xf6d5('0x37')]=_[_0xf6d5('0x33')](db[_0xf6d5('0x4a')][_0xf6d5('0x2e')]);_0xa70e8a[_0xf6d5('0x32')]=_[_0xf6d5('0x33')](_0x5dceb4['query']);_0xa70e8a[_0xf6d5('0x34')]=_['intersection'](_0xa70e8a[_0xf6d5('0x37')],_0xa70e8a[_0xf6d5('0x32')]);_0x496910[_0xf6d5('0x36')]=_[_0xf6d5('0x35')](_0xa70e8a[_0xf6d5('0x37')],qs[_0xf6d5('0x38')](_0x5dceb4[_0xf6d5('0x32')]['fields']));_0x496910[_0xf6d5('0x36')]=_0x496910[_0xf6d5('0x36')][_0xf6d5('0x4b')]?_0x496910[_0xf6d5('0x36')]:_0xa70e8a[_0xf6d5('0x37')];_0x496910[_0xf6d5('0x4c')]=qs[_0xf6d5('0x3a')](_0x5dceb4[_0xf6d5('0x32')][_0xf6d5('0x3a')]);_0x496910[_0xf6d5('0x3b')]=qs['filters'](_[_0xf6d5('0x3c')](_0x5dceb4[_0xf6d5('0x32')],_0xa70e8a[_0xf6d5('0x34')]));if(_0x5dceb4[_0xf6d5('0x32')]['filter']){_0x496910[_0xf6d5('0x3b')]=_[_0xf6d5('0x3e')](_0x496910[_0xf6d5('0x3b')],{'$or':_[_0xf6d5('0x2c')](_0x496910[_0xf6d5('0x36')],function(_0x41815d){var _0x46f944={};_0x46f944[_0x41815d]={'$like':'%'+_0x5dceb4[_0xf6d5('0x32')][_0xf6d5('0x3d')]+'%'};return _0x46f944;})});}_0x496910=_[_0xf6d5('0x3e')]({},_0x496910,_0x5dceb4[_0xf6d5('0x3f')]);return _0x4e921e[_0xf6d5('0x48')](_0x496910);}})[_0xf6d5('0x25')](function(_0x3e8020){if(_0x3e8020){_0x4c7bc2=_0x3e8020['length'];if(!_0x5dceb4[_0xf6d5('0x32')]['hasOwnProperty'](_0xf6d5('0x4d'))){_0x496910[_0xf6d5('0x1f')]=qs[_0xf6d5('0x1f')](_0x5dceb4[_0xf6d5('0x32')]['limit']);_0x496910[_0xf6d5('0x1d')]=qs[_0xf6d5('0x1d')](_0x5dceb4[_0xf6d5('0x32')][_0xf6d5('0x1d')]);}return _0x4e921e[_0xf6d5('0x48')](_0x496910);}})[_0xf6d5('0x25')](function(_0x24c2c2){if(_0x24c2c2){return _0x24c2c2?{'count':_0x4c7bc2,'rows':_0x24c2c2}:null;}})[_0xf6d5('0x25')](respondWithResult(_0xc2ce02,null))[_0xf6d5('0x41')](handleError(_0xc2ce02,null));};exports[_0xf6d5('0x4e')]=function(_0x1e0f34,_0x5da875,_0xb3641){if(_0x1e0f34[_0xf6d5('0x47')]['id']){delete _0x1e0f34['body']['id'];}return db['SalesforceAccount'][_0xf6d5('0x49')]({'where':{'id':_0x1e0f34[_0xf6d5('0x43')]['id']}})[_0xf6d5('0x25')](handleEntityNotFound(_0x5da875,null))[_0xf6d5('0x25')](function(_0x4a3fc3){if(_0x4a3fc3){_0x1e0f34['body']['AccountId']=_0x4a3fc3['id'];_0x1e0f34[_0xf6d5('0x47')][_0xf6d5('0x4f')]=integrations[_0xf6d5('0x50')](_0x1e0f34[_0xf6d5('0x47')]['channel'],_0x1e0f34[_0xf6d5('0x47')]['type']);_0x1e0f34[_0xf6d5('0x47')][_0xf6d5('0x51')]=integrations[_0xf6d5('0x52')](_0x1e0f34[_0xf6d5('0x47')]['channel'],_0x1e0f34['body']['type']);return db['SalesforceConfiguration'][_0xf6d5('0x46')](_0x1e0f34[_0xf6d5('0x47')],{'include':[{'model':db['SalesforceField'],'as':_0xf6d5('0x4f')},{'model':db[_0xf6d5('0x53')],'as':'Descriptions'}]});}return null;})[_0xf6d5('0x25')](respondWithResult(_0x5da875,null))[_0xf6d5('0x41')](handleError(_0x5da875,null));};exports['getFields']=function(_0x46e3e4,_0x5cc009,_0x1ffb35){var _0x4ac37d;var _0x5db4f2='';var _0x3f086e='Task';return db['SalesforceAccount'][_0xf6d5('0x49')]({'where':{'id':_0x46e3e4[_0xf6d5('0x43')]['id']},'attributes':['id',_0xf6d5('0x54'),_0xf6d5('0x55'),_0xf6d5('0x56'),_0xf6d5('0x57'),_0xf6d5('0x58'),_0xf6d5('0x59')]})[_0xf6d5('0x25')](handleEntityNotFound(_0x5cc009,null))['then'](function(_0x20a750){if(_0x20a750){_0x5db4f2=_0x20a750[_0xf6d5('0x54')];var _0x1b32be=_0x5db4f2[_0xf6d5('0x5a')](-0x1);if(_0x1b32be==='/'){_0x5db4f2=_0x5db4f2[_0xf6d5('0x5b')](0x0,_0x5db4f2[_0xf6d5('0x5c')](_0x1b32be));}_0x4ac37d=new jsforce['Connection']({'oauth2':{'loginUrl':_0x5db4f2,'clientId':_0x20a750[_0xf6d5('0x55')],'clientSecret':_0x20a750[_0xf6d5('0x56')]}});return _0x4ac37d['login'](_0x20a750['username'],_0x20a750['password'][_0xf6d5('0x5d')](_0x20a750[_0xf6d5('0x59')]));}})[_0xf6d5('0x25')](function(_0x480d9a){if(_0x480d9a){if(!_[_0xf6d5('0x5e')](_0x46e3e4['query'][_0xf6d5('0x5f')])){_0x3f086e=_0x46e3e4['query'][_0xf6d5('0x5f')];}return _0x4ac37d[_0xf6d5('0x60')](_0x3f086e)[_0xf6d5('0x61')]();}})[_0xf6d5('0x25')](function(_0x170300){var _0x111185=[_0xf6d5('0x62'),_0xf6d5('0x63'),_0xf6d5('0x64'),_0xf6d5('0x65'),_0xf6d5('0x66'),_0xf6d5('0x67')];var _0x517294=['string','int',_0xf6d5('0x68'),'boolean',_0xf6d5('0x69'),'textarea','phone'];if(_0x170300){_[_0xf6d5('0x6a')](_0x170300['fields'],function(_0x263e86){return _0x111185[_0xf6d5('0x6b')](_0x263e86['name'])||!_0x517294[_0xf6d5('0x6b')](_0x263e86[_0xf6d5('0x30')]);});return{'count':_0x170300[_0xf6d5('0x38')][_0xf6d5('0x4b')],'rows':_['map'](_0x170300[_0xf6d5('0x38')],function(_0x23bee9){return{'id':_0x23bee9[_0xf6d5('0x29')],'name':_0x23bee9[_0xf6d5('0x6c')],'custom':_0x23bee9[_0xf6d5('0x6d')],'options':_0x23bee9[_0xf6d5('0x6e')][_0xf6d5('0x4b')]>0x0?_['map'](_0x23bee9[_0xf6d5('0x6e')],function(_0xddce16){return{'name':_0xddce16['label'],'value':_0xddce16['value']};}):_0x23bee9[_0xf6d5('0x30')]==_0xf6d5('0x6f')?[{'name':_0xf6d5('0x70'),'value':_0xf6d5('0x71')},{'name':_0xf6d5('0x72'),'value':'false'}]:[]};})};}})['then'](respondWithResult(_0x5cc009,null))[_0xf6d5('0x41')](function(_0x4806a4){var _0x2c1716=_0x46e3e4[_0xf6d5('0x32')][_0xf6d5('0x73')]?0x1f4:_0x4806a4[_0xf6d5('0x74')]||0x1f4;logger[_0xf6d5('0x27')](_0xf6d5('0x75'),_0xf6d5('0x76'),_0x2c1716,JSON[_0xf6d5('0x77')](_0x4806a4));delete _0x4806a4[_0xf6d5('0x29')];if(_0x2c1716===0x191){_0x2c1716=0x190;}_0x5cc009['status'](_0x2c1716)[_0xf6d5('0x2a')](_0x46e3e4[_0xf6d5('0x32')][_0xf6d5('0x73')]?{'message':_0xf6d5('0x78'),'statusCode':_0x4806a4[_0xf6d5('0x74')]}:_0x4806a4);});};
\ No newline at end of file
index 1ac2f74..9ee2580 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3422=['lodash','util','../../config/logger','moment','bluebird','path','../../config/environment','exports','SalesforceAccount','int_salesforce_accounts'];(function(_0x400f2a,_0x52a559){var _0x3dd8d1=function(_0x12d129){while(--_0x12d129){_0x400f2a['push'](_0x400f2a['shift']());}};_0x3dd8d1(++_0x52a559);}(_0x3422,0x118));var _0x2342=function(_0x46fae8,_0x4f5cd3){_0x46fae8=_0x46fae8-0x0;var _0x5c80b5=_0x3422[_0x46fae8];return _0x5c80b5;};'use strict';var _=require(_0x2342('0x0'));var util=require(_0x2342('0x1'));var logger=require(_0x2342('0x2'))('api');var moment=require(_0x2342('0x3'));var BPromise=require(_0x2342('0x4'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x2342('0x5'));var rimraf=require('rimraf');var config=require(_0x2342('0x6'));var attributes=require('./intSalesforceAccount.attributes');var integrations=require('../../components/integrations/configuration');module[_0x2342('0x7')]=function(_0x2f7ebd,_0xca675a){return _0x2f7ebd['define'](_0x2342('0x8'),attributes,{'tableName':_0x2342('0x9'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xb786=['bluebird','request-promise','rimraf','../../config/environment','./intSalesforceAccount.attributes','../../components/integrations/configuration','exports','define','SalesforceAccount','int_salesforce_accounts','lodash','util','../../config/logger','moment'];(function(_0x8c3ede,_0x47192a){var _0x219373=function(_0x139085){while(--_0x139085){_0x8c3ede['push'](_0x8c3ede['shift']());}};_0x219373(++_0x47192a);}(_0xb786,0x1d8));var _0x6b78=function(_0x85d5a8,_0x1977be){_0x85d5a8=_0x85d5a8-0x0;var _0x20479b=_0xb786[_0x85d5a8];return _0x20479b;};'use strict';var _=require(_0x6b78('0x0'));var util=require(_0x6b78('0x1'));var logger=require(_0x6b78('0x2'))('api');var moment=require(_0x6b78('0x3'));var BPromise=require(_0x6b78('0x4'));var rp=require(_0x6b78('0x5'));var fs=require('fs');var path=require('path');var rimraf=require(_0x6b78('0x6'));var config=require(_0x6b78('0x7'));var attributes=require(_0x6b78('0x8'));var integrations=require(_0x6b78('0x9'));module[_0x6b78('0xa')]=function(_0x5e69f2,_0x3c4c19){return _0x5e69f2[_0x6b78('0xb')](_0x6b78('0xc'),attributes,{'tableName':_0x6b78('0xd'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 9339826..e2ec941 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6d4b=['findAll','raw','options','where','attributes','map','model','include','stringify','ShowSalesforceAccount','find','lodash','util','moment','randomstring','ioredis','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','request','then','info','SalesforceAccount,\x20%s,\x20%s','request\x20sent','debug','SalesforceAccount,\x20%s,\x20%s,\x20%s','code','error','message','result','catch','GetSalesforceAccount','SalesforceAccount'];(function(_0x3f5c7a,_0x28a535){var _0x33d8ed=function(_0x932d39){while(--_0x932d39){_0x3f5c7a['push'](_0x3f5c7a['shift']());}};_0x33d8ed(++_0x28a535);}(_0x6d4b,0xbf));var _0xb6d4=function(_0x1434e8,_0x55e0f5){_0x1434e8=_0x1434e8-0x0;var _0xefd96d=_0x6d4b[_0x1434e8];return _0xefd96d;};'use strict';var _=require(_0xb6d4('0x0'));var util=require(_0xb6d4('0x1'));var moment=require(_0xb6d4('0x2'));var BPromise=require('bluebird');var rs=require(_0xb6d4('0x3'));var fs=require('fs');var Redis=require(_0xb6d4('0x4'));var db=require('../../mysqldb')['db'];var utils=require('../../config/utils');var logger=require(_0xb6d4('0x5'))(_0xb6d4('0x6'));var config=require(_0xb6d4('0x7'));var jayson=require(_0xb6d4('0x8'));var client=jayson[_0xb6d4('0x9')][_0xb6d4('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x11498a,_0x78c489,_0x5f11b9){return new BPromise(function(_0x36d85f,_0xe82b85){return client[_0xb6d4('0xb')](_0x11498a,_0x5f11b9)[_0xb6d4('0xc')](function(_0x2effac){logger[_0xb6d4('0xd')](_0xb6d4('0xe'),_0x78c489,_0xb6d4('0xf'));logger[_0xb6d4('0x10')](_0xb6d4('0x11'),_0x78c489,'request\x20sent',JSON['stringify'](_0x2effac));if(_0x2effac['error']){if(_0x2effac['error'][_0xb6d4('0x12')]===0x1f4){logger['error'](_0xb6d4('0xe'),_0x78c489,_0x2effac[_0xb6d4('0x13')][_0xb6d4('0x14')]);return _0xe82b85(_0x2effac[_0xb6d4('0x13')]['message']);}logger[_0xb6d4('0x13')](_0xb6d4('0xe'),_0x78c489,_0x2effac['error'][_0xb6d4('0x14')]);return _0x36d85f(_0x2effac['error'][_0xb6d4('0x14')]);}else{logger[_0xb6d4('0xd')](_0xb6d4('0xe'),_0x78c489,_0xb6d4('0xf'));_0x36d85f(_0x2effac[_0xb6d4('0x15')][_0xb6d4('0x14')]);}})[_0xb6d4('0x16')](function(_0x5e3b0f){logger[_0xb6d4('0x13')](_0xb6d4('0xe'),_0x78c489,_0x5e3b0f);_0xe82b85(_0x5e3b0f);});});}exports[_0xb6d4('0x17')]=function(_0x431af2){var _0x43ba1f=this;return new Promise(function(_0x438053,_0x28bce9){return db[_0xb6d4('0x18')][_0xb6d4('0x19')]({'raw':_0x431af2['options']?_0x431af2['options'][_0xb6d4('0x1a')]===undefined?!![]:![]:!![],'where':_0x431af2[_0xb6d4('0x1b')]?_0x431af2[_0xb6d4('0x1b')][_0xb6d4('0x1c')]||null:null,'attributes':_0x431af2[_0xb6d4('0x1b')]?_0x431af2['options'][_0xb6d4('0x1d')]||null:null,'limit':_0x431af2[_0xb6d4('0x1b')]?_0x431af2[_0xb6d4('0x1b')]['limit']||null:null,'include':_0x431af2[_0xb6d4('0x1b')]?_0x431af2['options']['include']?_[_0xb6d4('0x1e')](_0x431af2[_0xb6d4('0x1b')]['include'],function(_0x56baa4){return{'model':db[_0x56baa4[_0xb6d4('0x1f')]],'as':_0x56baa4['as'],'attributes':_0x56baa4[_0xb6d4('0x1d')],'include':_0x56baa4[_0xb6d4('0x20')]?_[_0xb6d4('0x1e')](_0x56baa4[_0xb6d4('0x20')],function(_0x223ca0){return{'model':db[_0x223ca0[_0xb6d4('0x1f')]],'as':_0x223ca0['as'],'attributes':_0x223ca0[_0xb6d4('0x1d')],'include':_0x223ca0[_0xb6d4('0x20')]?_[_0xb6d4('0x1e')](_0x223ca0[_0xb6d4('0x20')],function(_0x18db34){return{'model':db[_0x18db34['model']],'as':_0x18db34['as'],'attributes':_0x18db34[_0xb6d4('0x1d')]};}):[]};}):[]};}):[]:[]})[_0xb6d4('0xc')](function(_0x54ddeb){logger[_0xb6d4('0xd')]('GetSalesforceAccount',_0x431af2);logger[_0xb6d4('0x10')](_0xb6d4('0x17'),_0x431af2,JSON[_0xb6d4('0x21')](_0x54ddeb));_0x438053(_0x54ddeb);})[_0xb6d4('0x16')](function(_0x1a311d){logger[_0xb6d4('0x13')](_0xb6d4('0x17'),_0x1a311d[_0xb6d4('0x14')],_0x431af2);_0x28bce9(_0x43ba1f['error'](0x1f4,_0x1a311d[_0xb6d4('0x14')]));});});};exports[_0xb6d4('0x22')]=function(_0x112d10){var _0x54e090=this;return new Promise(function(_0x417d70,_0x5bacec){return db['SalesforceAccount'][_0xb6d4('0x23')]({'raw':_0x112d10[_0xb6d4('0x1b')]?_0x112d10[_0xb6d4('0x1b')]['raw']===undefined?!![]:![]:!![],'where':_0x112d10['options']?_0x112d10['options'][_0xb6d4('0x1c')]||null:null,'attributes':_0x112d10[_0xb6d4('0x1b')]?_0x112d10[_0xb6d4('0x1b')][_0xb6d4('0x1d')]||null:null,'include':_0x112d10[_0xb6d4('0x1b')]?_0x112d10[_0xb6d4('0x1b')]['include']?_['map'](_0x112d10[_0xb6d4('0x1b')]['include'],function(_0x53fb87){return{'model':db[_0x53fb87['model']],'as':_0x53fb87['as'],'attributes':_0x53fb87['attributes'],'include':_0x53fb87[_0xb6d4('0x20')]?_[_0xb6d4('0x1e')](_0x53fb87['include'],function(_0x7c98be){return{'model':db[_0x7c98be['model']],'as':_0x7c98be['as'],'attributes':_0x7c98be[_0xb6d4('0x1d')],'include':_0x7c98be[_0xb6d4('0x20')]?_[_0xb6d4('0x1e')](_0x7c98be[_0xb6d4('0x20')],function(_0x274ebd){return{'model':db[_0x274ebd[_0xb6d4('0x1f')]],'as':_0x274ebd['as'],'attributes':_0x274ebd[_0xb6d4('0x1d')]};}):[]};}):[]};}):[]:[]})['then'](function(_0x410602){logger[_0xb6d4('0xd')](_0xb6d4('0x22'),_0x112d10);logger['debug']('ShowSalesforceAccount',_0x112d10,JSON[_0xb6d4('0x21')](_0x410602));_0x417d70(_0x410602);})[_0xb6d4('0x16')](function(_0x12a3dc){logger[_0xb6d4('0x13')](_0xb6d4('0x22'),_0x12a3dc['message'],_0x112d10);_0x5bacec(_0x54e090[_0xb6d4('0x13')](0x1f4,_0x12a3dc['message']));});});};
\ No newline at end of file
+var _0x9954=['debug','SalesforceAccount,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','GetSalesforceAccount','options','raw','attributes','limit','include','map','model','info','SalesforceAccount','where','ShowSalesforceAccount','lodash','util','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','rpc','../../config/environment','jayson/promise','client','http','then','SalesforceAccount,\x20%s,\x20%s','request\x20sent'];(function(_0x46e0f0,_0x43a770){var _0x1d4798=function(_0x1ad97d){while(--_0x1ad97d){_0x46e0f0['push'](_0x46e0f0['shift']());}};_0x1d4798(++_0x43a770);}(_0x9954,0xe6));var _0x4995=function(_0x454165,_0x1f3e74){_0x454165=_0x454165-0x0;var _0x56db53=_0x9954[_0x454165];return _0x56db53;};'use strict';var _=require(_0x4995('0x0'));var util=require(_0x4995('0x1'));var moment=require('moment');var BPromise=require(_0x4995('0x2'));var rs=require(_0x4995('0x3'));var fs=require('fs');var Redis=require(_0x4995('0x4'));var db=require(_0x4995('0x5'))['db'];var utils=require(_0x4995('0x6'));var logger=require('../../config/logger')(_0x4995('0x7'));var config=require(_0x4995('0x8'));var jayson=require(_0x4995('0x9'));var client=jayson[_0x4995('0xa')][_0x4995('0xb')]({'port':0x232a});function respondWithRpcPromise(_0xbd932,_0x319244,_0x4af2d9){return new BPromise(function(_0x18dac8,_0x282da4){return client['request'](_0xbd932,_0x4af2d9)[_0x4995('0xc')](function(_0x1c751c){logger['info'](_0x4995('0xd'),_0x319244,_0x4995('0xe'));logger[_0x4995('0xf')](_0x4995('0x10'),_0x319244,_0x4995('0xe'),JSON[_0x4995('0x11')](_0x1c751c));if(_0x1c751c[_0x4995('0x12')]){if(_0x1c751c['error'][_0x4995('0x13')]===0x1f4){logger[_0x4995('0x12')](_0x4995('0xd'),_0x319244,_0x1c751c[_0x4995('0x12')][_0x4995('0x14')]);return _0x282da4(_0x1c751c['error'][_0x4995('0x14')]);}logger[_0x4995('0x12')](_0x4995('0xd'),_0x319244,_0x1c751c[_0x4995('0x12')][_0x4995('0x14')]);return _0x18dac8(_0x1c751c[_0x4995('0x12')][_0x4995('0x14')]);}else{logger['info'](_0x4995('0xd'),_0x319244,_0x4995('0xe'));_0x18dac8(_0x1c751c[_0x4995('0x15')][_0x4995('0x14')]);}})[_0x4995('0x16')](function(_0x8dd0d1){logger[_0x4995('0x12')](_0x4995('0xd'),_0x319244,_0x8dd0d1);_0x282da4(_0x8dd0d1);});});}exports[_0x4995('0x17')]=function(_0x1e6fe5){var _0x296a75=this;return new Promise(function(_0x1aa5a8,_0x54275f){return db['SalesforceAccount']['findAll']({'raw':_0x1e6fe5['options']?_0x1e6fe5[_0x4995('0x18')][_0x4995('0x19')]===undefined?!![]:![]:!![],'where':_0x1e6fe5['options']?_0x1e6fe5[_0x4995('0x18')]['where']||null:null,'attributes':_0x1e6fe5['options']?_0x1e6fe5[_0x4995('0x18')][_0x4995('0x1a')]||null:null,'limit':_0x1e6fe5[_0x4995('0x18')]?_0x1e6fe5[_0x4995('0x18')][_0x4995('0x1b')]||null:null,'include':_0x1e6fe5['options']?_0x1e6fe5[_0x4995('0x18')][_0x4995('0x1c')]?_[_0x4995('0x1d')](_0x1e6fe5['options'][_0x4995('0x1c')],function(_0x4bac78){return{'model':db[_0x4bac78['model']],'as':_0x4bac78['as'],'attributes':_0x4bac78[_0x4995('0x1a')],'include':_0x4bac78[_0x4995('0x1c')]?_[_0x4995('0x1d')](_0x4bac78[_0x4995('0x1c')],function(_0x32de64){return{'model':db[_0x32de64[_0x4995('0x1e')]],'as':_0x32de64['as'],'attributes':_0x32de64[_0x4995('0x1a')],'include':_0x32de64['include']?_[_0x4995('0x1d')](_0x32de64[_0x4995('0x1c')],function(_0x25ad34){return{'model':db[_0x25ad34[_0x4995('0x1e')]],'as':_0x25ad34['as'],'attributes':_0x25ad34['attributes']};}):[]};}):[]};}):[]:[]})[_0x4995('0xc')](function(_0x4950c9){logger[_0x4995('0x1f')]('GetSalesforceAccount',_0x1e6fe5);logger['debug'](_0x4995('0x17'),_0x1e6fe5,JSON['stringify'](_0x4950c9));_0x1aa5a8(_0x4950c9);})['catch'](function(_0x2d51cc){logger['error'](_0x4995('0x17'),_0x2d51cc[_0x4995('0x14')],_0x1e6fe5);_0x54275f(_0x296a75[_0x4995('0x12')](0x1f4,_0x2d51cc[_0x4995('0x14')]));});});};exports['ShowSalesforceAccount']=function(_0x1b5853){var _0x15f452=this;return new Promise(function(_0x2a5a8b,_0x59b9e4){return db[_0x4995('0x20')]['find']({'raw':_0x1b5853[_0x4995('0x18')]?_0x1b5853[_0x4995('0x18')][_0x4995('0x19')]===undefined?!![]:![]:!![],'where':_0x1b5853[_0x4995('0x18')]?_0x1b5853[_0x4995('0x18')][_0x4995('0x21')]||null:null,'attributes':_0x1b5853['options']?_0x1b5853[_0x4995('0x18')][_0x4995('0x1a')]||null:null,'include':_0x1b5853[_0x4995('0x18')]?_0x1b5853[_0x4995('0x18')]['include']?_[_0x4995('0x1d')](_0x1b5853['options'][_0x4995('0x1c')],function(_0x362c79){return{'model':db[_0x362c79[_0x4995('0x1e')]],'as':_0x362c79['as'],'attributes':_0x362c79['attributes'],'include':_0x362c79[_0x4995('0x1c')]?_[_0x4995('0x1d')](_0x362c79[_0x4995('0x1c')],function(_0x3fdc70){return{'model':db[_0x3fdc70['model']],'as':_0x3fdc70['as'],'attributes':_0x3fdc70[_0x4995('0x1a')],'include':_0x3fdc70['include']?_[_0x4995('0x1d')](_0x3fdc70[_0x4995('0x1c')],function(_0x4569fe){return{'model':db[_0x4569fe[_0x4995('0x1e')]],'as':_0x4569fe['as'],'attributes':_0x4569fe[_0x4995('0x1a')]};}):[]};}):[]};}):[]:[]})[_0x4995('0xc')](function(_0x1c28c4){logger[_0x4995('0x1f')]('ShowSalesforceAccount',_0x1b5853);logger[_0x4995('0xf')](_0x4995('0x22'),_0x1b5853,JSON[_0x4995('0x11')](_0x1c28c4));_0x2a5a8b(_0x1c28c4);})['catch'](function(_0x46650f){logger['error'](_0x4995('0x22'),_0x46650f[_0x4995('0x14')],_0x1b5853);_0x59b9e4(_0x15f452[_0x4995('0x12')](0x1f4,_0x46650f[_0x4995('0x14')]));});});};
\ No newline at end of file
index 9910d0d..05c2fa9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xadb5=['Router','../../components/auth/service','../../components/interaction/service','../../config/environment','get','isAuthenticated','index','/:id','show','/:id/fields','getFields','/:id/subjects','/:id/descriptions','getDescriptions','put','update','delete','destroy','exports','util','connect-timeout','express'];(function(_0x34d88e,_0x4e5141){var _0x900ad2=function(_0x285bf4){while(--_0x285bf4){_0x34d88e['push'](_0x34d88e['shift']());}};_0x900ad2(++_0x4e5141);}(_0xadb5,0xad));var _0x5adb=function(_0x345c39,_0x593b2e){_0x345c39=_0x345c39-0x0;var _0x3c78c3=_0xadb5[_0x345c39];return _0x3c78c3;};'use strict';var multer=require('multer');var util=require(_0x5adb('0x0'));var path=require('path');var timeout=require(_0x5adb('0x1'));var express=require(_0x5adb('0x2'));var router=express[_0x5adb('0x3')]();var fs_extra=require('fs-extra');var auth=require(_0x5adb('0x4'));var interaction=require(_0x5adb('0x5'));var config=require(_0x5adb('0x6'));var controller=require('./intSalesforceConfiguration.controller');router[_0x5adb('0x7')]('/',auth[_0x5adb('0x8')](),controller[_0x5adb('0x9')]);router[_0x5adb('0x7')](_0x5adb('0xa'),auth[_0x5adb('0x8')](),controller[_0x5adb('0xb')]);router[_0x5adb('0x7')](_0x5adb('0xc'),auth[_0x5adb('0x8')](),controller[_0x5adb('0xd')]);router[_0x5adb('0x7')](_0x5adb('0xe'),auth[_0x5adb('0x8')](),controller['getSubjects']);router['get'](_0x5adb('0xf'),auth[_0x5adb('0x8')](),controller[_0x5adb('0x10')]);router['post']('/',auth[_0x5adb('0x8')](),controller['create']);router[_0x5adb('0x11')]('/:id',auth[_0x5adb('0x8')](),controller[_0x5adb('0x12')]);router[_0x5adb('0x13')]('/:id',auth[_0x5adb('0x8')](),controller[_0x5adb('0x14')]);module[_0x5adb('0x15')]=router;
\ No newline at end of file
+var _0x0b0e=['post','create','put','/:id','update','destroy','exports','multer','path','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./intSalesforceConfiguration.controller','get','isAuthenticated','index','show','/:id/fields','/:id/subjects','getSubjects','getDescriptions'];(function(_0x18a436,_0x1dbe06){var _0x5c2cf8=function(_0x4712d1){while(--_0x4712d1){_0x18a436['push'](_0x18a436['shift']());}};_0x5c2cf8(++_0x1dbe06);}(_0x0b0e,0x187));var _0xe0b0=function(_0x5a7fbc,_0xa081de){_0x5a7fbc=_0x5a7fbc-0x0;var _0xcba0fc=_0x0b0e[_0x5a7fbc];return _0xcba0fc;};'use strict';var multer=require(_0xe0b0('0x0'));var util=require('util');var path=require(_0xe0b0('0x1'));var timeout=require('connect-timeout');var express=require(_0xe0b0('0x2'));var router=express[_0xe0b0('0x3')]();var fs_extra=require(_0xe0b0('0x4'));var auth=require(_0xe0b0('0x5'));var interaction=require(_0xe0b0('0x6'));var config=require(_0xe0b0('0x7'));var controller=require(_0xe0b0('0x8'));router[_0xe0b0('0x9')]('/',auth[_0xe0b0('0xa')](),controller[_0xe0b0('0xb')]);router[_0xe0b0('0x9')]('/:id',auth['isAuthenticated'](),controller[_0xe0b0('0xc')]);router[_0xe0b0('0x9')](_0xe0b0('0xd'),auth[_0xe0b0('0xa')](),controller['getFields']);router[_0xe0b0('0x9')](_0xe0b0('0xe'),auth['isAuthenticated'](),controller[_0xe0b0('0xf')]);router[_0xe0b0('0x9')]('/:id/descriptions',auth[_0xe0b0('0xa')](),controller[_0xe0b0('0x10')]);router[_0xe0b0('0x11')]('/',auth['isAuthenticated'](),controller[_0xe0b0('0x12')]);router[_0xe0b0('0x13')](_0xe0b0('0x14'),auth[_0xe0b0('0xa')](),controller[_0xe0b0('0x15')]);router['delete'](_0xe0b0('0x14'),auth[_0xe0b0('0xa')](),controller[_0xe0b0('0x16')]);module[_0xe0b0('0x17')]=router;
\ No newline at end of file
index da74e2c..702ac6a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5693=['sequelize','exports','STRING','ENUM','Case','Task','contact_lead','contact','account_contact_lead','account','nothing','lead'];(function(_0x3fc11d,_0x5e0a10){var _0x2af3a5=function(_0x36b99f){while(--_0x36b99f){_0x3fc11d['push'](_0x3fc11d['shift']());}};_0x2af3a5(++_0x5e0a10);}(_0x5693,0x174));var _0x3569=function(_0x496333,_0x1c47d6){_0x496333=_0x496333-0x0;var _0x44256e=_0x5693[_0x496333];return _0x44256e;};'use strict';var Sequelize=require(_0x3569('0x0'));module[_0x3569('0x1')]={'name':{'type':Sequelize[_0x3569('0x2')]},'description':{'type':Sequelize[_0x3569('0x2')]},'ticketType':{'type':Sequelize[_0x3569('0x3')]('Task',_0x3569('0x4')),'defaultValue':_0x3569('0x5')},'moduleSearch':{'type':Sequelize['ENUM'](_0x3569('0x6'),_0x3569('0x7'),'lead',_0x3569('0x8'),_0x3569('0x9')),'defaultValue':_0x3569('0x6')},'moduleCreate':{'type':Sequelize[_0x3569('0x3')](_0x3569('0xa'),'contact','lead',_0x3569('0x9')),'defaultValue':_0x3569('0xb')},'leadId':{'type':Sequelize['STRING']},'additionalSearchAccount':{'type':Sequelize[_0x3569('0x2')]},'additionalSearchContact':{'type':Sequelize[_0x3569('0x2')]},'additionalSearchLead':{'type':Sequelize[_0x3569('0x2')]}};
\ No newline at end of file
+var _0xd2f0=['exports','STRING','ENUM','Case','Task','contact','lead','account','contact_lead','nothing','sequelize'];(function(_0x365d8e,_0x171a51){var _0x1ca50e=function(_0x2f5c45){while(--_0x2f5c45){_0x365d8e['push'](_0x365d8e['shift']());}};_0x1ca50e(++_0x171a51);}(_0xd2f0,0x18b));var _0x0d2f=function(_0x5f517e,_0x3b6dc4){_0x5f517e=_0x5f517e-0x0;var _0x23317e=_0xd2f0[_0x5f517e];return _0x23317e;};'use strict';var Sequelize=require(_0x0d2f('0x0'));module[_0x0d2f('0x1')]={'name':{'type':Sequelize['STRING']},'description':{'type':Sequelize[_0x0d2f('0x2')]},'ticketType':{'type':Sequelize[_0x0d2f('0x3')]('Task',_0x0d2f('0x4')),'defaultValue':_0x0d2f('0x5')},'moduleSearch':{'type':Sequelize['ENUM']('contact_lead',_0x0d2f('0x6'),_0x0d2f('0x7'),'account_contact_lead',_0x0d2f('0x8')),'defaultValue':_0x0d2f('0x9')},'moduleCreate':{'type':Sequelize[_0x0d2f('0x3')](_0x0d2f('0xa'),_0x0d2f('0x6'),_0x0d2f('0x7'),_0x0d2f('0x8')),'defaultValue':_0x0d2f('0x7')},'leadId':{'type':Sequelize[_0x0d2f('0x2')]},'additionalSearchAccount':{'type':Sequelize[_0x0d2f('0x2')]},'additionalSearchContact':{'type':Sequelize[_0x0d2f('0x2')]},'additionalSearchLead':{'type':Sequelize[_0x0d2f('0x2')]}};
\ No newline at end of file
index 4461c63..78e6db6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa83f=['nolimit','sort','where','pick','filters','merge','type','filter','options','includeAll','findAll','rows','catch','show','params','keys','rawAttributes','find','create','body','getFields','findOne','SalesforceField','order','getSubjects','getDescriptions','eml-format','zip-dir','fast-json-patch','request-promise','mustache','util','to-csv','ejs','lodash','crypto','jsforce','desk.js','papaparse','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','../../config/utils','../../config/environment','../../mysqldb','sendStatus','status','end','json','offset','undefined','limit','count','set','Content-Range','apply','reject','save','update','destroy','then','error','name','send','SalesforceConfiguration','model','map','intersection','query','attributes','fields','length','hasOwnProperty'];(function(_0x3fef72,_0x5798ec){var _0x300fc3=function(_0x17b86f){while(--_0x17b86f){_0x3fef72['push'](_0x3fef72['shift']());}};_0x300fc3(++_0x5798ec);}(_0xa83f,0xf8));var _0xfa83=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0xa83f[_0x3dd15e];return _0x231fd0;};'use strict';var emlformat=require(_0xfa83('0x0'));var rimraf=require('rimraf');var zipdir=require(_0xfa83('0x1'));var jsonpatch=require(_0xfa83('0x2'));var rp=require(_0xfa83('0x3'));var moment=require('moment');var BPromise=require('bluebird');var Mustache=require(_0xfa83('0x4'));var util=require(_0xfa83('0x5'));var path=require('path');var sox=require('sox');var csv=require(_0xfa83('0x6'));var ejs=require(_0xfa83('0x7'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0xfa83('0x8'));var squel=require('squel');var crypto=require(_0xfa83('0x9'));var jsforce=require(_0xfa83('0xa'));var deskjs=require(_0xfa83('0xb'));var toCsv=require('to-csv');var querystring=require('querystring');var Papa=require(_0xfa83('0xc'));var Redis=require(_0xfa83('0xd'));var authService=require('../../components/auth/service');var qs=require(_0xfa83('0xe'));var as=require(_0xfa83('0xf'));var hardwareService=require('../../config/license/hardware');var logger=require(_0xfa83('0x10'))('api');var utils=require(_0xfa83('0x11'));var config=require(_0xfa83('0x12'));var licenseUtil=require('../../config/license/util');var db=require(_0xfa83('0x13'))['db'];function respondWithStatusCode(_0x5afcd0,_0x1edd12){_0x1edd12=_0x1edd12||0xcc;return function(_0x4e39e6){if(_0x4e39e6){return _0x5afcd0[_0xfa83('0x14')](_0x1edd12);}return _0x5afcd0[_0xfa83('0x15')](_0x1edd12)[_0xfa83('0x16')]();};}function respondWithResult(_0x402a37,_0x3bd29e){_0x3bd29e=_0x3bd29e||0xc8;return function(_0x4b5170){if(_0x4b5170){return _0x402a37['status'](_0x3bd29e)[_0xfa83('0x17')](_0x4b5170);}};}function respondWithFilteredResult(_0x108209,_0x481218){return function(_0x50b0eb){if(_0x50b0eb){var _0x1db51b=typeof _0x481218[_0xfa83('0x18')]===_0xfa83('0x19')&&typeof _0x481218[_0xfa83('0x1a')]===_0xfa83('0x19');var _0x108878=_0x50b0eb[_0xfa83('0x1b')];var _0x480413=_0x1db51b?0x0:_0x481218[_0xfa83('0x18')];var _0x3a739f=_0x1db51b?_0x50b0eb[_0xfa83('0x1b')]:_0x481218[_0xfa83('0x18')]+_0x481218[_0xfa83('0x1a')];var _0x38db68;if(_0x3a739f>=_0x108878){_0x3a739f=_0x108878;_0x38db68=0xc8;}else{_0x38db68=0xce;}_0x108209[_0xfa83('0x15')](_0x38db68);return _0x108209[_0xfa83('0x1c')](_0xfa83('0x1d'),_0x480413+'-'+_0x3a739f+'/'+_0x108878)[_0xfa83('0x17')](_0x50b0eb);}return null;};}function patchUpdates(_0x2ba8a6){return function(_0x53a587){try{jsonpatch[_0xfa83('0x1e')](_0x53a587,_0x2ba8a6,!![]);}catch(_0x5ce7fc){return BPromise[_0xfa83('0x1f')](_0x5ce7fc);}return _0x53a587[_0xfa83('0x20')]();};}function saveUpdates(_0x201628,_0x5aae1c){return function(_0x627730){if(_0x627730){return _0x627730[_0xfa83('0x21')](_0x201628)['then'](function(_0x5b51c3){return _0x5b51c3;});}return null;};}function removeEntity(_0x39ea61,_0x252ada){return function(_0x11dde1){if(_0x11dde1){return _0x11dde1[_0xfa83('0x22')]()[_0xfa83('0x23')](function(){_0x39ea61[_0xfa83('0x15')](0xcc)[_0xfa83('0x16')]();});}};}function handleEntityNotFound(_0x186727,_0x5d1e1c){return function(_0x5472aa){if(!_0x5472aa){_0x186727[_0xfa83('0x14')](0x194);}return _0x5472aa;};}function handleError(_0x32e494,_0x54cd0f){_0x54cd0f=_0x54cd0f||0x1f4;return function(_0x2d50e9){logger[_0xfa83('0x24')](_0x2d50e9['stack']);if(_0x2d50e9['name']){delete _0x2d50e9[_0xfa83('0x25')];}_0x32e494[_0xfa83('0x15')](_0x54cd0f)[_0xfa83('0x26')](_0x2d50e9);};}exports['index']=function(_0x66e3e,_0x4e3eb7){var _0x1db0b5={},_0x157f46={},_0x147da4={'count':0x0,'rows':[]};var _0x1aa45e=_['map'](db[_0xfa83('0x27')]['rawAttributes'],function(_0x2e777d){return{'name':_0x2e777d['fieldName'],'type':_0x2e777d['type']['key']};});_0x157f46[_0xfa83('0x28')]=_[_0xfa83('0x29')](_0x1aa45e,_0xfa83('0x25'));_0x157f46['query']=_['keys'](_0x66e3e['query']);_0x157f46['filters']=_[_0xfa83('0x2a')](_0x157f46[_0xfa83('0x28')],_0x157f46[_0xfa83('0x2b')]);_0x1db0b5[_0xfa83('0x2c')]=_['intersection'](_0x157f46[_0xfa83('0x28')],qs['fields'](_0x66e3e[_0xfa83('0x2b')][_0xfa83('0x2d')]));_0x1db0b5[_0xfa83('0x2c')]=_0x1db0b5['attributes'][_0xfa83('0x2e')]?_0x1db0b5[_0xfa83('0x2c')]:_0x157f46['model'];if(!_0x66e3e[_0xfa83('0x2b')][_0xfa83('0x2f')](_0xfa83('0x30'))){_0x1db0b5[_0xfa83('0x1a')]=qs['limit'](_0x66e3e[_0xfa83('0x2b')]['limit']);_0x1db0b5[_0xfa83('0x18')]=qs[_0xfa83('0x18')](_0x66e3e['query'][_0xfa83('0x18')]);}_0x1db0b5['order']=qs['sort'](_0x66e3e[_0xfa83('0x2b')][_0xfa83('0x31')]);_0x1db0b5[_0xfa83('0x32')]=qs['filters'](_[_0xfa83('0x33')](_0x66e3e[_0xfa83('0x2b')],_0x157f46[_0xfa83('0x34')]),_0x1aa45e);if(_0x66e3e[_0xfa83('0x2b')]['filter']){_0x1db0b5[_0xfa83('0x32')]=_[_0xfa83('0x35')](_0x1db0b5[_0xfa83('0x32')],{'$or':_['map'](_0x1aa45e,function(_0x54059a){if(_0x54059a[_0xfa83('0x36')]!=='VIRTUAL'){var _0x2bda91={};_0x2bda91[_0x54059a[_0xfa83('0x25')]]={'$like':'%'+_0x66e3e[_0xfa83('0x2b')][_0xfa83('0x37')]+'%'};return _0x2bda91;}})});}_0x1db0b5=_[_0xfa83('0x35')]({},_0x1db0b5,_0x66e3e[_0xfa83('0x38')]);var _0x279f6b={'where':_0x1db0b5[_0xfa83('0x32')]};return db[_0xfa83('0x27')][_0xfa83('0x1b')](_0x279f6b)[_0xfa83('0x23')](function(_0x1e9c64){_0x147da4['count']=_0x1e9c64;if(_0x66e3e[_0xfa83('0x2b')][_0xfa83('0x39')]){_0x1db0b5['include']=[{'all':!![]}];}return db[_0xfa83('0x27')][_0xfa83('0x3a')](_0x1db0b5);})[_0xfa83('0x23')](function(_0x494823){_0x147da4[_0xfa83('0x3b')]=_0x494823;return _0x147da4;})[_0xfa83('0x23')](respondWithFilteredResult(_0x4e3eb7,_0x1db0b5))[_0xfa83('0x3c')](handleError(_0x4e3eb7,null));};exports[_0xfa83('0x3d')]=function(_0x3f89d9,_0x2d5202){var _0x25333b={'raw':![],'where':{'id':_0x3f89d9[_0xfa83('0x3e')]['id']}},_0x310c07={};_0x310c07[_0xfa83('0x28')]=_[_0xfa83('0x3f')](db[_0xfa83('0x27')][_0xfa83('0x40')]);_0x310c07[_0xfa83('0x2b')]=_[_0xfa83('0x3f')](_0x3f89d9[_0xfa83('0x2b')]);_0x310c07[_0xfa83('0x34')]=_[_0xfa83('0x2a')](_0x310c07['model'],_0x310c07['query']);_0x25333b[_0xfa83('0x2c')]=_[_0xfa83('0x2a')](_0x310c07[_0xfa83('0x28')],qs['fields'](_0x3f89d9['query']['fields']));_0x25333b[_0xfa83('0x2c')]=_0x25333b['attributes'][_0xfa83('0x2e')]?_0x25333b[_0xfa83('0x2c')]:_0x310c07[_0xfa83('0x28')];if(_0x3f89d9['query'][_0xfa83('0x39')]){_0x25333b['include']=[{'all':!![]}];}_0x25333b=_[_0xfa83('0x35')]({},_0x25333b,_0x3f89d9[_0xfa83('0x38')]);return db[_0xfa83('0x27')][_0xfa83('0x41')](_0x25333b)[_0xfa83('0x23')](handleEntityNotFound(_0x2d5202,null))[_0xfa83('0x23')](respondWithResult(_0x2d5202,null))[_0xfa83('0x3c')](handleError(_0x2d5202,null));};exports['create']=function(_0x3fd493,_0x33bd5e){return db[_0xfa83('0x27')][_0xfa83('0x42')](_0x3fd493[_0xfa83('0x43')],{})[_0xfa83('0x23')](respondWithResult(_0x33bd5e,0xc9))[_0xfa83('0x3c')](handleError(_0x33bd5e,null));};exports[_0xfa83('0x21')]=function(_0x1389f5,_0x308257){if(_0x1389f5['body']['id']){delete _0x1389f5[_0xfa83('0x43')]['id'];}return db[_0xfa83('0x27')][_0xfa83('0x41')]({'where':{'id':_0x1389f5[_0xfa83('0x3e')]['id']}})[_0xfa83('0x23')](handleEntityNotFound(_0x308257,null))[_0xfa83('0x23')](saveUpdates(_0x1389f5[_0xfa83('0x43')],null))[_0xfa83('0x23')](respondWithResult(_0x308257,null))['catch'](handleError(_0x308257,null));};exports[_0xfa83('0x22')]=function(_0x414206,_0x1c5a23){return db['SalesforceConfiguration'][_0xfa83('0x41')]({'where':{'id':_0x414206['params']['id']}})[_0xfa83('0x23')](handleEntityNotFound(_0x1c5a23,null))['then'](removeEntity(_0x1c5a23,null))[_0xfa83('0x3c')](handleError(_0x1c5a23,null));};exports[_0xfa83('0x44')]=function(_0x437500,_0x17eba7,_0x4f18d1){var _0x12ca40={};var _0xdad248={};var _0x2f0b26;var _0x5b8592;return db['SalesforceConfiguration'][_0xfa83('0x45')]({'where':{'id':_0x437500[_0xfa83('0x3e')]['id']}})[_0xfa83('0x23')](handleEntityNotFound(_0x17eba7,null))[_0xfa83('0x23')](function(_0x40ef26){if(_0x40ef26){_0x2f0b26=_0x40ef26;_0xdad248[_0xfa83('0x28')]=_[_0xfa83('0x3f')](db[_0xfa83('0x46')][_0xfa83('0x40')]);_0xdad248[_0xfa83('0x2b')]=_[_0xfa83('0x3f')](_0x437500[_0xfa83('0x2b')]);_0xdad248['filters']=_[_0xfa83('0x2a')](_0xdad248[_0xfa83('0x28')],_0xdad248['query']);_0x12ca40[_0xfa83('0x2c')]=_[_0xfa83('0x2a')](_0xdad248[_0xfa83('0x28')],qs[_0xfa83('0x2d')](_0x437500[_0xfa83('0x2b')][_0xfa83('0x2d')]));_0x12ca40['attributes']=_0x12ca40[_0xfa83('0x2c')][_0xfa83('0x2e')]?_0x12ca40[_0xfa83('0x2c')]:_0xdad248['model'];_0x12ca40[_0xfa83('0x47')]=qs[_0xfa83('0x31')](_0x437500['query'][_0xfa83('0x31')]);_0x12ca40[_0xfa83('0x32')]=qs['filters'](_['pick'](_0x437500[_0xfa83('0x2b')],_0xdad248[_0xfa83('0x34')]));if(_0x437500[_0xfa83('0x2b')]['filter']){_0x12ca40[_0xfa83('0x32')]=_['merge'](_0x12ca40[_0xfa83('0x32')],{'$or':_[_0xfa83('0x29')](_0x12ca40['attributes'],function(_0x81bb2){var _0x2bc51f={};_0x2bc51f[_0x81bb2]={'$like':'%'+_0x437500['query'][_0xfa83('0x37')]+'%'};return _0x2bc51f;})});}_0x12ca40=_['merge']({},_0x12ca40,_0x437500[_0xfa83('0x38')]);return _0x2f0b26['getFields'](_0x12ca40);}})['then'](function(_0x314dd7){if(_0x314dd7){_0x5b8592=_0x314dd7['length'];if(!_0x437500['query']['hasOwnProperty'](_0xfa83('0x30'))){_0x12ca40[_0xfa83('0x1a')]=qs[_0xfa83('0x1a')](_0x437500[_0xfa83('0x2b')][_0xfa83('0x1a')]);_0x12ca40[_0xfa83('0x18')]=qs[_0xfa83('0x18')](_0x437500[_0xfa83('0x2b')]['offset']);}return _0x2f0b26[_0xfa83('0x44')](_0x12ca40);}})['then'](function(_0x3e658d){if(_0x3e658d){return _0x3e658d?{'count':_0x5b8592,'rows':_0x3e658d}:null;}})[_0xfa83('0x23')](respondWithResult(_0x17eba7,null))[_0xfa83('0x3c')](handleError(_0x17eba7,null));};exports['getSubjects']=function(_0x1d97ad,_0x325a33,_0x5259f1){var _0xb04e7f={};var _0x5c702e={};var _0x29fd50;var _0x4b1d47;return db[_0xfa83('0x27')][_0xfa83('0x45')]({'where':{'id':_0x1d97ad[_0xfa83('0x3e')]['id']}})['then'](handleEntityNotFound(_0x325a33,null))[_0xfa83('0x23')](function(_0x5d151c){if(_0x5d151c){_0x29fd50=_0x5d151c;_0x5c702e['model']=_[_0xfa83('0x3f')](db[_0xfa83('0x46')][_0xfa83('0x40')]);_0x5c702e[_0xfa83('0x2b')]=_[_0xfa83('0x3f')](_0x1d97ad[_0xfa83('0x2b')]);_0x5c702e['filters']=_[_0xfa83('0x2a')](_0x5c702e['model'],_0x5c702e[_0xfa83('0x2b')]);_0xb04e7f[_0xfa83('0x2c')]=_[_0xfa83('0x2a')](_0x5c702e[_0xfa83('0x28')],qs[_0xfa83('0x2d')](_0x1d97ad[_0xfa83('0x2b')][_0xfa83('0x2d')]));_0xb04e7f[_0xfa83('0x2c')]=_0xb04e7f[_0xfa83('0x2c')][_0xfa83('0x2e')]?_0xb04e7f['attributes']:_0x5c702e[_0xfa83('0x28')];_0xb04e7f[_0xfa83('0x47')]=qs[_0xfa83('0x31')](_0x1d97ad[_0xfa83('0x2b')][_0xfa83('0x31')]);_0xb04e7f[_0xfa83('0x32')]=qs[_0xfa83('0x34')](_[_0xfa83('0x33')](_0x1d97ad['query'],_0x5c702e[_0xfa83('0x34')]));if(_0x1d97ad['query']['filter']){_0xb04e7f[_0xfa83('0x32')]=_[_0xfa83('0x35')](_0xb04e7f['where'],{'$or':_[_0xfa83('0x29')](_0xb04e7f['attributes'],function(_0x47dfe3){var _0x51f118={};_0x51f118[_0x47dfe3]={'$like':'%'+_0x1d97ad[_0xfa83('0x2b')][_0xfa83('0x37')]+'%'};return _0x51f118;})});}_0xb04e7f=_[_0xfa83('0x35')]({},_0xb04e7f,_0x1d97ad['options']);return _0x29fd50[_0xfa83('0x48')](_0xb04e7f);}})[_0xfa83('0x23')](function(_0x1855d5){if(_0x1855d5){_0x4b1d47=_0x1855d5[_0xfa83('0x2e')];if(!_0x1d97ad[_0xfa83('0x2b')][_0xfa83('0x2f')](_0xfa83('0x30'))){_0xb04e7f[_0xfa83('0x1a')]=qs[_0xfa83('0x1a')](_0x1d97ad[_0xfa83('0x2b')]['limit']);_0xb04e7f[_0xfa83('0x18')]=qs[_0xfa83('0x18')](_0x1d97ad[_0xfa83('0x2b')][_0xfa83('0x18')]);}return _0x29fd50[_0xfa83('0x48')](_0xb04e7f);}})[_0xfa83('0x23')](function(_0x1fadc9){if(_0x1fadc9){return _0x1fadc9?{'count':_0x4b1d47,'rows':_0x1fadc9}:null;}})['then'](respondWithResult(_0x325a33,null))[_0xfa83('0x3c')](handleError(_0x325a33,null));};exports[_0xfa83('0x49')]=function(_0x1a6c7a,_0x3e7f5e,_0xc97cc1){var _0x21da6b={};var _0x127f32={};var _0x1255aa;var _0x121570;return db[_0xfa83('0x27')]['findOne']({'where':{'id':_0x1a6c7a['params']['id']}})[_0xfa83('0x23')](handleEntityNotFound(_0x3e7f5e,null))['then'](function(_0x35f1fd){if(_0x35f1fd){_0x1255aa=_0x35f1fd;_0x127f32[_0xfa83('0x28')]=_[_0xfa83('0x3f')](db[_0xfa83('0x46')][_0xfa83('0x40')]);_0x127f32[_0xfa83('0x2b')]=_[_0xfa83('0x3f')](_0x1a6c7a[_0xfa83('0x2b')]);_0x127f32[_0xfa83('0x34')]=_[_0xfa83('0x2a')](_0x127f32[_0xfa83('0x28')],_0x127f32['query']);_0x21da6b[_0xfa83('0x2c')]=_[_0xfa83('0x2a')](_0x127f32['model'],qs[_0xfa83('0x2d')](_0x1a6c7a[_0xfa83('0x2b')][_0xfa83('0x2d')]));_0x21da6b['attributes']=_0x21da6b[_0xfa83('0x2c')][_0xfa83('0x2e')]?_0x21da6b[_0xfa83('0x2c')]:_0x127f32[_0xfa83('0x28')];_0x21da6b[_0xfa83('0x47')]=qs[_0xfa83('0x31')](_0x1a6c7a[_0xfa83('0x2b')]['sort']);_0x21da6b['where']=qs[_0xfa83('0x34')](_[_0xfa83('0x33')](_0x1a6c7a[_0xfa83('0x2b')],_0x127f32[_0xfa83('0x34')]));if(_0x1a6c7a['query'][_0xfa83('0x37')]){_0x21da6b[_0xfa83('0x32')]=_[_0xfa83('0x35')](_0x21da6b[_0xfa83('0x32')],{'$or':_[_0xfa83('0x29')](_0x21da6b[_0xfa83('0x2c')],function(_0x560595){var _0x152703={};_0x152703[_0x560595]={'$like':'%'+_0x1a6c7a[_0xfa83('0x2b')][_0xfa83('0x37')]+'%'};return _0x152703;})});}_0x21da6b=_[_0xfa83('0x35')]({},_0x21da6b,_0x1a6c7a[_0xfa83('0x38')]);return _0x1255aa['getDescriptions'](_0x21da6b);}})['then'](function(_0x3cfd9a){if(_0x3cfd9a){_0x121570=_0x3cfd9a[_0xfa83('0x2e')];if(!_0x1a6c7a[_0xfa83('0x2b')]['hasOwnProperty']('nolimit')){_0x21da6b[_0xfa83('0x1a')]=qs[_0xfa83('0x1a')](_0x1a6c7a[_0xfa83('0x2b')][_0xfa83('0x1a')]);_0x21da6b[_0xfa83('0x18')]=qs[_0xfa83('0x18')](_0x1a6c7a['query'][_0xfa83('0x18')]);}return _0x1255aa[_0xfa83('0x49')](_0x21da6b);}})[_0xfa83('0x23')](function(_0x177d6f){if(_0x177d6f){return _0x177d6f?{'count':_0x121570,'rows':_0x177d6f}:null;}})[_0xfa83('0x23')](respondWithResult(_0x3e7f5e,null))[_0xfa83('0x3c')](handleError(_0x3e7f5e,null));};
\ No newline at end of file
+var _0xbccb=['catch','keys','rawAttributes','includeAll','find','create','body','params','findOne','filter','getFields','SalesforceField','getSubjects','map','getDescriptions','eml-format','rimraf','zip-dir','fast-json-patch','moment','bluebird','mustache','util','path','sox','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','sendStatus','status','undefined','count','offset','Content-Range','json','reject','save','update','then','destroy','error','stack','name','send','SalesforceConfiguration','fieldName','type','model','query','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','limit','order','sort','where','pick','merge','VIRTUAL','options','findAll','rows'];(function(_0xf1ec6a,_0x3d7139){var _0x4392ba=function(_0x3d9845){while(--_0x3d9845){_0xf1ec6a['push'](_0xf1ec6a['shift']());}};_0x4392ba(++_0x3d7139);}(_0xbccb,0x157));var _0xbbcc=function(_0x3504a0,_0x3f770f){_0x3504a0=_0x3504a0-0x0;var _0x3dfca3=_0xbccb[_0x3504a0];return _0x3dfca3;};'use strict';var emlformat=require(_0xbbcc('0x0'));var rimraf=require(_0xbbcc('0x1'));var zipdir=require(_0xbbcc('0x2'));var jsonpatch=require(_0xbbcc('0x3'));var rp=require('request-promise');var moment=require(_0xbbcc('0x4'));var BPromise=require(_0xbbcc('0x5'));var Mustache=require(_0xbbcc('0x6'));var util=require(_0xbbcc('0x7'));var path=require(_0xbbcc('0x8'));var sox=require(_0xbbcc('0x9'));var csv=require(_0xbbcc('0xa'));var ejs=require(_0xbbcc('0xb'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0xbbcc('0xc'));var squel=require(_0xbbcc('0xd'));var crypto=require(_0xbbcc('0xe'));var jsforce=require(_0xbbcc('0xf'));var deskjs=require(_0xbbcc('0x10'));var toCsv=require(_0xbbcc('0xa'));var querystring=require(_0xbbcc('0x11'));var Papa=require(_0xbbcc('0x12'));var Redis=require(_0xbbcc('0x13'));var authService=require(_0xbbcc('0x14'));var qs=require(_0xbbcc('0x15'));var as=require(_0xbbcc('0x16'));var hardwareService=require('../../config/license/hardware');var logger=require(_0xbbcc('0x17'))(_0xbbcc('0x18'));var utils=require(_0xbbcc('0x19'));var config=require(_0xbbcc('0x1a'));var licenseUtil=require(_0xbbcc('0x1b'));var db=require(_0xbbcc('0x1c'))['db'];function respondWithStatusCode(_0x1558f3,_0x39de34){_0x39de34=_0x39de34||0xcc;return function(_0xcc65b9){if(_0xcc65b9){return _0x1558f3[_0xbbcc('0x1d')](_0x39de34);}return _0x1558f3[_0xbbcc('0x1e')](_0x39de34)['end']();};}function respondWithResult(_0x1166ba,_0x240ee7){_0x240ee7=_0x240ee7||0xc8;return function(_0x1d1b2f){if(_0x1d1b2f){return _0x1166ba[_0xbbcc('0x1e')](_0x240ee7)['json'](_0x1d1b2f);}};}function respondWithFilteredResult(_0x44761e,_0x5acb78){return function(_0x26dccc){if(_0x26dccc){var _0x45226a=typeof _0x5acb78['offset']===_0xbbcc('0x1f')&&typeof _0x5acb78['limit']==='undefined';var _0x5e5573=_0x26dccc[_0xbbcc('0x20')];var _0x1456ac=_0x45226a?0x0:_0x5acb78[_0xbbcc('0x21')];var _0x2e8f29=_0x45226a?_0x26dccc[_0xbbcc('0x20')]:_0x5acb78[_0xbbcc('0x21')]+_0x5acb78['limit'];var _0x56a5c8;if(_0x2e8f29>=_0x5e5573){_0x2e8f29=_0x5e5573;_0x56a5c8=0xc8;}else{_0x56a5c8=0xce;}_0x44761e['status'](_0x56a5c8);return _0x44761e['set'](_0xbbcc('0x22'),_0x1456ac+'-'+_0x2e8f29+'/'+_0x5e5573)[_0xbbcc('0x23')](_0x26dccc);}return null;};}function patchUpdates(_0x439fb5){return function(_0x478f9c){try{jsonpatch['apply'](_0x478f9c,_0x439fb5,!![]);}catch(_0x3a2a8d){return BPromise[_0xbbcc('0x24')](_0x3a2a8d);}return _0x478f9c[_0xbbcc('0x25')]();};}function saveUpdates(_0x5a2aaf,_0x534985){return function(_0x89004c){if(_0x89004c){return _0x89004c[_0xbbcc('0x26')](_0x5a2aaf)[_0xbbcc('0x27')](function(_0x3af889){return _0x3af889;});}return null;};}function removeEntity(_0x489299,_0x1d6342){return function(_0x1d5d0e){if(_0x1d5d0e){return _0x1d5d0e[_0xbbcc('0x28')]()['then'](function(){_0x489299[_0xbbcc('0x1e')](0xcc)['end']();});}};}function handleEntityNotFound(_0x5107c3,_0x4f5dd1){return function(_0x3213af){if(!_0x3213af){_0x5107c3[_0xbbcc('0x1d')](0x194);}return _0x3213af;};}function handleError(_0x4c2f77,_0x2e4ea1){_0x2e4ea1=_0x2e4ea1||0x1f4;return function(_0x49b7ed){logger[_0xbbcc('0x29')](_0x49b7ed[_0xbbcc('0x2a')]);if(_0x49b7ed[_0xbbcc('0x2b')]){delete _0x49b7ed['name'];}_0x4c2f77['status'](_0x2e4ea1)[_0xbbcc('0x2c')](_0x49b7ed);};}exports['index']=function(_0x9e8a83,_0x5a8d4c){var _0x45e50e={},_0x5203c5={},_0x392deb={'count':0x0,'rows':[]};var _0x43e2ff=_['map'](db[_0xbbcc('0x2d')]['rawAttributes'],function(_0x38be0a){return{'name':_0x38be0a[_0xbbcc('0x2e')],'type':_0x38be0a[_0xbbcc('0x2f')]['key']};});_0x5203c5[_0xbbcc('0x30')]=_['map'](_0x43e2ff,_0xbbcc('0x2b'));_0x5203c5[_0xbbcc('0x31')]=_['keys'](_0x9e8a83[_0xbbcc('0x31')]);_0x5203c5[_0xbbcc('0x32')]=_[_0xbbcc('0x33')](_0x5203c5['model'],_0x5203c5[_0xbbcc('0x31')]);_0x45e50e[_0xbbcc('0x34')]=_[_0xbbcc('0x33')](_0x5203c5[_0xbbcc('0x30')],qs[_0xbbcc('0x35')](_0x9e8a83[_0xbbcc('0x31')][_0xbbcc('0x35')]));_0x45e50e[_0xbbcc('0x34')]=_0x45e50e[_0xbbcc('0x34')][_0xbbcc('0x36')]?_0x45e50e[_0xbbcc('0x34')]:_0x5203c5[_0xbbcc('0x30')];if(!_0x9e8a83[_0xbbcc('0x31')][_0xbbcc('0x37')](_0xbbcc('0x38'))){_0x45e50e[_0xbbcc('0x39')]=qs['limit'](_0x9e8a83[_0xbbcc('0x31')][_0xbbcc('0x39')]);_0x45e50e[_0xbbcc('0x21')]=qs['offset'](_0x9e8a83[_0xbbcc('0x31')][_0xbbcc('0x21')]);}_0x45e50e[_0xbbcc('0x3a')]=qs[_0xbbcc('0x3b')](_0x9e8a83[_0xbbcc('0x31')][_0xbbcc('0x3b')]);_0x45e50e[_0xbbcc('0x3c')]=qs[_0xbbcc('0x32')](_[_0xbbcc('0x3d')](_0x9e8a83[_0xbbcc('0x31')],_0x5203c5[_0xbbcc('0x32')]),_0x43e2ff);if(_0x9e8a83['query']['filter']){_0x45e50e[_0xbbcc('0x3c')]=_[_0xbbcc('0x3e')](_0x45e50e[_0xbbcc('0x3c')],{'$or':_['map'](_0x43e2ff,function(_0x453324){if(_0x453324['type']!==_0xbbcc('0x3f')){var _0x2af399={};_0x2af399[_0x453324[_0xbbcc('0x2b')]]={'$like':'%'+_0x9e8a83['query']['filter']+'%'};return _0x2af399;}})});}_0x45e50e=_[_0xbbcc('0x3e')]({},_0x45e50e,_0x9e8a83[_0xbbcc('0x40')]);var _0x44b6ac={'where':_0x45e50e[_0xbbcc('0x3c')]};return db['SalesforceConfiguration'][_0xbbcc('0x20')](_0x44b6ac)[_0xbbcc('0x27')](function(_0xfd51f0){_0x392deb[_0xbbcc('0x20')]=_0xfd51f0;if(_0x9e8a83[_0xbbcc('0x31')]['includeAll']){_0x45e50e['include']=[{'all':!![]}];}return db['SalesforceConfiguration'][_0xbbcc('0x41')](_0x45e50e);})[_0xbbcc('0x27')](function(_0xa51757){_0x392deb[_0xbbcc('0x42')]=_0xa51757;return _0x392deb;})['then'](respondWithFilteredResult(_0x5a8d4c,_0x45e50e))[_0xbbcc('0x43')](handleError(_0x5a8d4c,null));};exports['show']=function(_0x7424c8,_0x2dc8f1){var _0x21e16c={'raw':![],'where':{'id':_0x7424c8['params']['id']}},_0xed0ad4={};_0xed0ad4[_0xbbcc('0x30')]=_[_0xbbcc('0x44')](db[_0xbbcc('0x2d')][_0xbbcc('0x45')]);_0xed0ad4[_0xbbcc('0x31')]=_[_0xbbcc('0x44')](_0x7424c8[_0xbbcc('0x31')]);_0xed0ad4[_0xbbcc('0x32')]=_['intersection'](_0xed0ad4[_0xbbcc('0x30')],_0xed0ad4[_0xbbcc('0x31')]);_0x21e16c[_0xbbcc('0x34')]=_[_0xbbcc('0x33')](_0xed0ad4['model'],qs[_0xbbcc('0x35')](_0x7424c8[_0xbbcc('0x31')]['fields']));_0x21e16c[_0xbbcc('0x34')]=_0x21e16c[_0xbbcc('0x34')][_0xbbcc('0x36')]?_0x21e16c['attributes']:_0xed0ad4[_0xbbcc('0x30')];if(_0x7424c8['query'][_0xbbcc('0x46')]){_0x21e16c['include']=[{'all':!![]}];}_0x21e16c=_[_0xbbcc('0x3e')]({},_0x21e16c,_0x7424c8[_0xbbcc('0x40')]);return db['SalesforceConfiguration'][_0xbbcc('0x47')](_0x21e16c)['then'](handleEntityNotFound(_0x2dc8f1,null))[_0xbbcc('0x27')](respondWithResult(_0x2dc8f1,null))[_0xbbcc('0x43')](handleError(_0x2dc8f1,null));};exports[_0xbbcc('0x48')]=function(_0x3b832b,_0x27ef0b){return db['SalesforceConfiguration'][_0xbbcc('0x48')](_0x3b832b['body'],{})['then'](respondWithResult(_0x27ef0b,0xc9))['catch'](handleError(_0x27ef0b,null));};exports['update']=function(_0x287cef,_0x4dc2de){if(_0x287cef['body']['id']){delete _0x287cef[_0xbbcc('0x49')]['id'];}return db[_0xbbcc('0x2d')][_0xbbcc('0x47')]({'where':{'id':_0x287cef[_0xbbcc('0x4a')]['id']}})[_0xbbcc('0x27')](handleEntityNotFound(_0x4dc2de,null))[_0xbbcc('0x27')](saveUpdates(_0x287cef[_0xbbcc('0x49')],null))['then'](respondWithResult(_0x4dc2de,null))['catch'](handleError(_0x4dc2de,null));};exports['destroy']=function(_0x5b1be1,_0x2c5d34){return db[_0xbbcc('0x2d')][_0xbbcc('0x47')]({'where':{'id':_0x5b1be1['params']['id']}})[_0xbbcc('0x27')](handleEntityNotFound(_0x2c5d34,null))[_0xbbcc('0x27')](removeEntity(_0x2c5d34,null))[_0xbbcc('0x43')](handleError(_0x2c5d34,null));};exports['getFields']=function(_0x498bf3,_0x4ed035,_0x534c41){var _0x49f623={};var _0x299307={};var _0x212a0c;var _0x47b412;return db[_0xbbcc('0x2d')][_0xbbcc('0x4b')]({'where':{'id':_0x498bf3[_0xbbcc('0x4a')]['id']}})[_0xbbcc('0x27')](handleEntityNotFound(_0x4ed035,null))['then'](function(_0x264435){if(_0x264435){_0x212a0c=_0x264435;_0x299307[_0xbbcc('0x30')]=_[_0xbbcc('0x44')](db['SalesforceField']['rawAttributes']);_0x299307[_0xbbcc('0x31')]=_[_0xbbcc('0x44')](_0x498bf3['query']);_0x299307['filters']=_[_0xbbcc('0x33')](_0x299307[_0xbbcc('0x30')],_0x299307[_0xbbcc('0x31')]);_0x49f623[_0xbbcc('0x34')]=_['intersection'](_0x299307[_0xbbcc('0x30')],qs['fields'](_0x498bf3['query'][_0xbbcc('0x35')]));_0x49f623['attributes']=_0x49f623[_0xbbcc('0x34')][_0xbbcc('0x36')]?_0x49f623[_0xbbcc('0x34')]:_0x299307[_0xbbcc('0x30')];_0x49f623['order']=qs[_0xbbcc('0x3b')](_0x498bf3['query'][_0xbbcc('0x3b')]);_0x49f623[_0xbbcc('0x3c')]=qs['filters'](_[_0xbbcc('0x3d')](_0x498bf3[_0xbbcc('0x31')],_0x299307[_0xbbcc('0x32')]));if(_0x498bf3['query'][_0xbbcc('0x4c')]){_0x49f623[_0xbbcc('0x3c')]=_[_0xbbcc('0x3e')](_0x49f623['where'],{'$or':_['map'](_0x49f623[_0xbbcc('0x34')],function(_0x5962c5){var _0x183918={};_0x183918[_0x5962c5]={'$like':'%'+_0x498bf3[_0xbbcc('0x31')][_0xbbcc('0x4c')]+'%'};return _0x183918;})});}_0x49f623=_['merge']({},_0x49f623,_0x498bf3[_0xbbcc('0x40')]);return _0x212a0c['getFields'](_0x49f623);}})[_0xbbcc('0x27')](function(_0x1ab37e){if(_0x1ab37e){_0x47b412=_0x1ab37e[_0xbbcc('0x36')];if(!_0x498bf3[_0xbbcc('0x31')][_0xbbcc('0x37')]('nolimit')){_0x49f623[_0xbbcc('0x39')]=qs['limit'](_0x498bf3[_0xbbcc('0x31')][_0xbbcc('0x39')]);_0x49f623[_0xbbcc('0x21')]=qs[_0xbbcc('0x21')](_0x498bf3[_0xbbcc('0x31')][_0xbbcc('0x21')]);}return _0x212a0c[_0xbbcc('0x4d')](_0x49f623);}})[_0xbbcc('0x27')](function(_0x2a7820){if(_0x2a7820){return _0x2a7820?{'count':_0x47b412,'rows':_0x2a7820}:null;}})[_0xbbcc('0x27')](respondWithResult(_0x4ed035,null))[_0xbbcc('0x43')](handleError(_0x4ed035,null));};exports['getSubjects']=function(_0x5c97ee,_0x274188,_0x1a9813){var _0x6c5f8e={};var _0xdfaff1={};var _0x1a95ff;var _0x19d7cc;return db[_0xbbcc('0x2d')][_0xbbcc('0x4b')]({'where':{'id':_0x5c97ee['params']['id']}})[_0xbbcc('0x27')](handleEntityNotFound(_0x274188,null))[_0xbbcc('0x27')](function(_0x4c3146){if(_0x4c3146){_0x1a95ff=_0x4c3146;_0xdfaff1['model']=_[_0xbbcc('0x44')](db[_0xbbcc('0x4e')][_0xbbcc('0x45')]);_0xdfaff1['query']=_[_0xbbcc('0x44')](_0x5c97ee['query']);_0xdfaff1['filters']=_[_0xbbcc('0x33')](_0xdfaff1[_0xbbcc('0x30')],_0xdfaff1[_0xbbcc('0x31')]);_0x6c5f8e[_0xbbcc('0x34')]=_['intersection'](_0xdfaff1[_0xbbcc('0x30')],qs[_0xbbcc('0x35')](_0x5c97ee['query'][_0xbbcc('0x35')]));_0x6c5f8e[_0xbbcc('0x34')]=_0x6c5f8e[_0xbbcc('0x34')][_0xbbcc('0x36')]?_0x6c5f8e[_0xbbcc('0x34')]:_0xdfaff1[_0xbbcc('0x30')];_0x6c5f8e[_0xbbcc('0x3a')]=qs[_0xbbcc('0x3b')](_0x5c97ee[_0xbbcc('0x31')][_0xbbcc('0x3b')]);_0x6c5f8e[_0xbbcc('0x3c')]=qs[_0xbbcc('0x32')](_['pick'](_0x5c97ee[_0xbbcc('0x31')],_0xdfaff1['filters']));if(_0x5c97ee[_0xbbcc('0x31')][_0xbbcc('0x4c')]){_0x6c5f8e['where']=_[_0xbbcc('0x3e')](_0x6c5f8e[_0xbbcc('0x3c')],{'$or':_['map'](_0x6c5f8e['attributes'],function(_0x1958c0){var _0x37b67e={};_0x37b67e[_0x1958c0]={'$like':'%'+_0x5c97ee[_0xbbcc('0x31')][_0xbbcc('0x4c')]+'%'};return _0x37b67e;})});}_0x6c5f8e=_['merge']({},_0x6c5f8e,_0x5c97ee[_0xbbcc('0x40')]);return _0x1a95ff[_0xbbcc('0x4f')](_0x6c5f8e);}})['then'](function(_0x2174c1){if(_0x2174c1){_0x19d7cc=_0x2174c1[_0xbbcc('0x36')];if(!_0x5c97ee[_0xbbcc('0x31')]['hasOwnProperty']('nolimit')){_0x6c5f8e[_0xbbcc('0x39')]=qs['limit'](_0x5c97ee[_0xbbcc('0x31')][_0xbbcc('0x39')]);_0x6c5f8e['offset']=qs[_0xbbcc('0x21')](_0x5c97ee[_0xbbcc('0x31')]['offset']);}return _0x1a95ff['getSubjects'](_0x6c5f8e);}})['then'](function(_0x6cb6ae){if(_0x6cb6ae){return _0x6cb6ae?{'count':_0x19d7cc,'rows':_0x6cb6ae}:null;}})[_0xbbcc('0x27')](respondWithResult(_0x274188,null))[_0xbbcc('0x43')](handleError(_0x274188,null));};exports['getDescriptions']=function(_0x14c8fb,_0x4f4686,_0x5107b2){var _0x18df7b={};var _0x3ecedd={};var _0x92fbb1;var _0x37f351;return db[_0xbbcc('0x2d')]['findOne']({'where':{'id':_0x14c8fb[_0xbbcc('0x4a')]['id']}})[_0xbbcc('0x27')](handleEntityNotFound(_0x4f4686,null))[_0xbbcc('0x27')](function(_0xf0e70a){if(_0xf0e70a){_0x92fbb1=_0xf0e70a;_0x3ecedd[_0xbbcc('0x30')]=_['keys'](db['SalesforceField'][_0xbbcc('0x45')]);_0x3ecedd['query']=_[_0xbbcc('0x44')](_0x14c8fb[_0xbbcc('0x31')]);_0x3ecedd[_0xbbcc('0x32')]=_[_0xbbcc('0x33')](_0x3ecedd[_0xbbcc('0x30')],_0x3ecedd[_0xbbcc('0x31')]);_0x18df7b[_0xbbcc('0x34')]=_[_0xbbcc('0x33')](_0x3ecedd[_0xbbcc('0x30')],qs['fields'](_0x14c8fb['query'][_0xbbcc('0x35')]));_0x18df7b[_0xbbcc('0x34')]=_0x18df7b[_0xbbcc('0x34')][_0xbbcc('0x36')]?_0x18df7b['attributes']:_0x3ecedd[_0xbbcc('0x30')];_0x18df7b[_0xbbcc('0x3a')]=qs[_0xbbcc('0x3b')](_0x14c8fb[_0xbbcc('0x31')][_0xbbcc('0x3b')]);_0x18df7b[_0xbbcc('0x3c')]=qs[_0xbbcc('0x32')](_[_0xbbcc('0x3d')](_0x14c8fb[_0xbbcc('0x31')],_0x3ecedd[_0xbbcc('0x32')]));if(_0x14c8fb[_0xbbcc('0x31')][_0xbbcc('0x4c')]){_0x18df7b[_0xbbcc('0x3c')]=_[_0xbbcc('0x3e')](_0x18df7b['where'],{'$or':_[_0xbbcc('0x50')](_0x18df7b[_0xbbcc('0x34')],function(_0x4c8193){var _0x2c8d28={};_0x2c8d28[_0x4c8193]={'$like':'%'+_0x14c8fb[_0xbbcc('0x31')][_0xbbcc('0x4c')]+'%'};return _0x2c8d28;})});}_0x18df7b=_['merge']({},_0x18df7b,_0x14c8fb[_0xbbcc('0x40')]);return _0x92fbb1['getDescriptions'](_0x18df7b);}})[_0xbbcc('0x27')](function(_0x462e5c){if(_0x462e5c){_0x37f351=_0x462e5c[_0xbbcc('0x36')];if(!_0x14c8fb['query']['hasOwnProperty'](_0xbbcc('0x38'))){_0x18df7b['limit']=qs[_0xbbcc('0x39')](_0x14c8fb[_0xbbcc('0x31')]['limit']);_0x18df7b[_0xbbcc('0x21')]=qs['offset'](_0x14c8fb[_0xbbcc('0x31')]['offset']);}return _0x92fbb1[_0xbbcc('0x51')](_0x18df7b);}})[_0xbbcc('0x27')](function(_0xf36739){if(_0xf36739){return _0xf36739?{'count':_0x37f351,'rows':_0xf36739}:null;}})[_0xbbcc('0x27')](respondWithResult(_0x4f4686,null))[_0xbbcc('0x43')](handleError(_0x4f4686,null));};
\ No newline at end of file
index 62e00b1..2d24ecc 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe0b9=['bluebird','request-promise','path','rimraf','../../config/environment','./intSalesforceConfiguration.attributes','exports','SalesforceConfiguration','int_salesforce_configurations','lodash','util','api'];(function(_0x3aca13,_0x58932a){var _0x4d7338=function(_0xa56b1a){while(--_0xa56b1a){_0x3aca13['push'](_0x3aca13['shift']());}};_0x4d7338(++_0x58932a);}(_0xe0b9,0x135));var _0x9e0b=function(_0x319e2e,_0x2f727f){_0x319e2e=_0x319e2e-0x0;var _0x302524=_0xe0b9[_0x319e2e];return _0x302524;};'use strict';var _=require(_0x9e0b('0x0'));var util=require(_0x9e0b('0x1'));var logger=require('../../config/logger')(_0x9e0b('0x2'));var moment=require('moment');var BPromise=require(_0x9e0b('0x3'));var rp=require(_0x9e0b('0x4'));var fs=require('fs');var path=require(_0x9e0b('0x5'));var rimraf=require(_0x9e0b('0x6'));var config=require(_0x9e0b('0x7'));var attributes=require(_0x9e0b('0x8'));module[_0x9e0b('0x9')]=function(_0x59e4a6,_0x435f73){return _0x59e4a6['define'](_0x9e0b('0xa'),attributes,{'tableName':_0x9e0b('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xbe46=['../../config/environment','./intSalesforceConfiguration.attributes','exports','define','int_salesforce_configurations','lodash','util','../../config/logger','moment','bluebird','path'];(function(_0x577737,_0x1880fe){var _0x3e5491=function(_0x32a673){while(--_0x32a673){_0x577737['push'](_0x577737['shift']());}};_0x3e5491(++_0x1880fe);}(_0xbe46,0xcb));var _0x6be4=function(_0x34bc30,_0x177cb0){_0x34bc30=_0x34bc30-0x0;var _0x5706de=_0xbe46[_0x34bc30];return _0x5706de;};'use strict';var _=require(_0x6be4('0x0'));var util=require(_0x6be4('0x1'));var logger=require(_0x6be4('0x2'))('api');var moment=require(_0x6be4('0x3'));var BPromise=require(_0x6be4('0x4'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x6be4('0x5'));var rimraf=require('rimraf');var config=require(_0x6be4('0x6'));var attributes=require(_0x6be4('0x7'));module[_0x6be4('0x8')]=function(_0x3b7fad,_0x561cb6){return _0x3b7fad[_0x6be4('0x9')]('SalesforceConfiguration',attributes,{'tableName':_0x6be4('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 5576f8b..b4ff441 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9630=['../../mysqldb','../../config/utils','../../config/logger','rpc','jayson/promise','client','http','request','then','SalesforceConfiguration,\x20%s,\x20%s','request\x20sent','debug','SalesforceConfiguration,\x20%s,\x20%s,\x20%s','stringify','error','code','message','catch','lodash','util','moment','bluebird','ioredis'];(function(_0x4f2787,_0x4989cf){var _0x2eeadf=function(_0x1eb8ff){while(--_0x1eb8ff){_0x4f2787['push'](_0x4f2787['shift']());}};_0x2eeadf(++_0x4989cf);}(_0x9630,0x9c));var _0x0963=function(_0x3e7c61,_0xb44529){_0x3e7c61=_0x3e7c61-0x0;var _0x41662f=_0x9630[_0x3e7c61];return _0x41662f;};'use strict';var _=require(_0x0963('0x0'));var util=require(_0x0963('0x1'));var moment=require(_0x0963('0x2'));var BPromise=require(_0x0963('0x3'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x0963('0x4'));var db=require(_0x0963('0x5'))['db'];var utils=require(_0x0963('0x6'));var logger=require(_0x0963('0x7'))(_0x0963('0x8'));var config=require('../../config/environment');var jayson=require(_0x0963('0x9'));var client=jayson[_0x0963('0xa')][_0x0963('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x48fd0e,_0x4d6387,_0x112dc7){return new BPromise(function(_0x5ae821,_0x31d4d6){return client[_0x0963('0xc')](_0x48fd0e,_0x112dc7)[_0x0963('0xd')](function(_0xb452b6){logger['info'](_0x0963('0xe'),_0x4d6387,_0x0963('0xf'));logger[_0x0963('0x10')](_0x0963('0x11'),_0x4d6387,_0x0963('0xf'),JSON[_0x0963('0x12')](_0xb452b6));if(_0xb452b6[_0x0963('0x13')]){if(_0xb452b6[_0x0963('0x13')][_0x0963('0x14')]===0x1f4){logger[_0x0963('0x13')]('SalesforceConfiguration,\x20%s,\x20%s',_0x4d6387,_0xb452b6['error'][_0x0963('0x15')]);return _0x31d4d6(_0xb452b6[_0x0963('0x13')]['message']);}logger[_0x0963('0x13')](_0x0963('0xe'),_0x4d6387,_0xb452b6[_0x0963('0x13')][_0x0963('0x15')]);return _0x5ae821(_0xb452b6[_0x0963('0x13')][_0x0963('0x15')]);}else{logger['info'](_0x0963('0xe'),_0x4d6387,_0x0963('0xf'));_0x5ae821(_0xb452b6['result'][_0x0963('0x15')]);}})[_0x0963('0x16')](function(_0x4a6730){logger[_0x0963('0x13')](_0x0963('0xe'),_0x4d6387,_0x4a6730);_0x31d4d6(_0x4a6730);});});}
\ No newline at end of file
+var _0x1da4=['message','result','catch','lodash','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','jayson/promise','then','info','SalesforceConfiguration,\x20%s,\x20%s','request\x20sent','debug','SalesforceConfiguration,\x20%s,\x20%s,\x20%s','stringify','error','code'];(function(_0x521929,_0x479be5){var _0x632436=function(_0x288290){while(--_0x288290){_0x521929['push'](_0x521929['shift']());}};_0x632436(++_0x479be5);}(_0x1da4,0x1bb));var _0x41da=function(_0x4db9a6,_0x3ce1d7){_0x4db9a6=_0x4db9a6-0x0;var _0x153851=_0x1da4[_0x4db9a6];return _0x153851;};'use strict';var _=require(_0x41da('0x0'));var util=require('util');var moment=require(_0x41da('0x1'));var BPromise=require(_0x41da('0x2'));var rs=require(_0x41da('0x3'));var fs=require('fs');var Redis=require(_0x41da('0x4'));var db=require(_0x41da('0x5'))['db'];var utils=require(_0x41da('0x6'));var logger=require(_0x41da('0x7'))(_0x41da('0x8'));var config=require('../../config/environment');var jayson=require(_0x41da('0x9'));var client=jayson['client']['http']({'port':0x232a});function respondWithRpcPromise(_0x18b404,_0x134070,_0x1e0053){return new BPromise(function(_0x3ab410,_0x4f8329){return client['request'](_0x18b404,_0x1e0053)[_0x41da('0xa')](function(_0x2e8f23){logger[_0x41da('0xb')](_0x41da('0xc'),_0x134070,_0x41da('0xd'));logger[_0x41da('0xe')](_0x41da('0xf'),_0x134070,_0x41da('0xd'),JSON[_0x41da('0x10')](_0x2e8f23));if(_0x2e8f23[_0x41da('0x11')]){if(_0x2e8f23[_0x41da('0x11')][_0x41da('0x12')]===0x1f4){logger[_0x41da('0x11')](_0x41da('0xc'),_0x134070,_0x2e8f23[_0x41da('0x11')][_0x41da('0x13')]);return _0x4f8329(_0x2e8f23[_0x41da('0x11')][_0x41da('0x13')]);}logger[_0x41da('0x11')](_0x41da('0xc'),_0x134070,_0x2e8f23['error'][_0x41da('0x13')]);return _0x3ab410(_0x2e8f23[_0x41da('0x11')][_0x41da('0x13')]);}else{logger[_0x41da('0xb')]('SalesforceConfiguration,\x20%s,\x20%s',_0x134070,_0x41da('0xd'));_0x3ab410(_0x2e8f23[_0x41da('0x14')]['message']);}})[_0x41da('0x15')](function(_0xd77dd4){logger[_0x41da('0x11')](_0x41da('0xc'),_0x134070,_0xd77dd4);_0x4f8329(_0xd77dd4);});});}
\ No newline at end of file
index 0f76ab0..741f8fe 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf56b=['get','isAuthenticated','/:id','show','post','create','update','delete','destroy','exports','util','path','express','Router','fs-extra','../../components/auth/service','../../config/environment','./intSalesforceField.controller'];(function(_0x7d0e6f,_0x391380){var _0x5a410b=function(_0x227df7){while(--_0x227df7){_0x7d0e6f['push'](_0x7d0e6f['shift']());}};_0x5a410b(++_0x391380);}(_0xf56b,0x1ba));var _0xbf56=function(_0x2ff21c,_0x537726){_0x2ff21c=_0x2ff21c-0x0;var _0x1d0ed8=_0xf56b[_0x2ff21c];return _0x1d0ed8;};'use strict';var multer=require('multer');var util=require(_0xbf56('0x0'));var path=require(_0xbf56('0x1'));var timeout=require('connect-timeout');var express=require(_0xbf56('0x2'));var router=express[_0xbf56('0x3')]();var fs_extra=require(_0xbf56('0x4'));var auth=require(_0xbf56('0x5'));var interaction=require('../../components/interaction/service');var config=require(_0xbf56('0x6'));var controller=require(_0xbf56('0x7'));router[_0xbf56('0x8')]('/',auth[_0xbf56('0x9')](),controller['index']);router[_0xbf56('0x8')](_0xbf56('0xa'),auth[_0xbf56('0x9')](),controller[_0xbf56('0xb')]);router[_0xbf56('0xc')]('/',auth[_0xbf56('0x9')](),controller[_0xbf56('0xd')]);router['put'](_0xbf56('0xa'),auth[_0xbf56('0x9')](),controller[_0xbf56('0xe')]);router[_0xbf56('0xf')](_0xbf56('0xa'),auth['isAuthenticated'](),controller[_0xbf56('0x10')]);module[_0xbf56('0x11')]=router;
\ No newline at end of file
+var _0xc29b=['delete','destroy','exports','multer','util','connect-timeout','express','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./intSalesforceField.controller','isAuthenticated','index','get','/:id','show','post','create','update'];(function(_0x291119,_0x3d08c9){var _0x20309f=function(_0x16f28d){while(--_0x16f28d){_0x291119['push'](_0x291119['shift']());}};_0x20309f(++_0x3d08c9);}(_0xc29b,0xa3));var _0xbc29=function(_0x5c9a5d,_0x345ea2){_0x5c9a5d=_0x5c9a5d-0x0;var _0x42881b=_0xc29b[_0x5c9a5d];return _0x42881b;};'use strict';var multer=require(_0xbc29('0x0'));var util=require(_0xbc29('0x1'));var path=require('path');var timeout=require(_0xbc29('0x2'));var express=require(_0xbc29('0x3'));var router=express['Router']();var fs_extra=require(_0xbc29('0x4'));var auth=require(_0xbc29('0x5'));var interaction=require(_0xbc29('0x6'));var config=require(_0xbc29('0x7'));var controller=require(_0xbc29('0x8'));router['get']('/',auth[_0xbc29('0x9')](),controller[_0xbc29('0xa')]);router[_0xbc29('0xb')](_0xbc29('0xc'),auth['isAuthenticated'](),controller[_0xbc29('0xd')]);router[_0xbc29('0xe')]('/',auth[_0xbc29('0x9')](),controller[_0xbc29('0xf')]);router['put'](_0xbc29('0xc'),auth[_0xbc29('0x9')](),controller[_0xbc29('0x10')]);router[_0xbc29('0x11')](_0xbc29('0xc'),auth[_0xbc29('0x9')](),controller[_0xbc29('0x12')]);module[_0xbc29('0x13')]=router;
\ No newline at end of file
index 0eee12f..4e5f4a0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4ee2=['customVariable','keyValue','picklist','string','STRING','exports','ENUM','variable'];(function(_0x5550b3,_0x2d0ee0){var _0x4b8fc4=function(_0x22393a){while(--_0x22393a){_0x5550b3['push'](_0x5550b3['shift']());}};_0x4b8fc4(++_0x2d0ee0);}(_0x4ee2,0x135));var _0x24ee=function(_0x21a9d9,_0x4d5ac8){_0x21a9d9=_0x21a9d9-0x0;var _0x46adce=_0x4ee2[_0x21a9d9];return _0x46adce;};'use strict';var Sequelize=require('sequelize');module[_0x24ee('0x0')]={'type':{'type':Sequelize[_0x24ee('0x1')]('string',_0x24ee('0x2'),_0x24ee('0x3'),_0x24ee('0x4'),_0x24ee('0x5')),'defaultValue':_0x24ee('0x6')},'content':{'type':Sequelize['STRING']},'key':{'type':Sequelize[_0x24ee('0x7')]},'keyType':{'type':Sequelize[_0x24ee('0x1')]('string','variable',_0x24ee('0x3'))},'keyContent':{'type':Sequelize[_0x24ee('0x7')]},'idField':{'type':Sequelize['STRING']},'variableName':{'type':Sequelize['STRING']}};
\ No newline at end of file
+var _0x1acd=['ENUM','string','variable','customVariable','keyValue','picklist','STRING','exports'];(function(_0x56c7f0,_0x297caf){var _0x4b27b5=function(_0x338d36){while(--_0x338d36){_0x56c7f0['push'](_0x56c7f0['shift']());}};_0x4b27b5(++_0x297caf);}(_0x1acd,0x15f));var _0xd1ac=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x1acd[_0x3dd15e];return _0x231fd0;};'use strict';var Sequelize=require('sequelize');module[_0xd1ac('0x0')]={'type':{'type':Sequelize[_0xd1ac('0x1')](_0xd1ac('0x2'),_0xd1ac('0x3'),_0xd1ac('0x4'),_0xd1ac('0x5'),_0xd1ac('0x6')),'defaultValue':'string'},'content':{'type':Sequelize[_0xd1ac('0x7')]},'key':{'type':Sequelize[_0xd1ac('0x7')]},'keyType':{'type':Sequelize[_0xd1ac('0x1')](_0xd1ac('0x2'),_0xd1ac('0x3'),_0xd1ac('0x4'))},'keyContent':{'type':Sequelize['STRING']},'idField':{'type':Sequelize['STRING']},'variableName':{'type':Sequelize[_0xd1ac('0x7')]}};
\ No newline at end of file
index 52dccac..cd6121d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x95c5=['rawAttributes','fieldName','type','query','keys','filters','model','attributes','intersection','fields','hasOwnProperty','nolimit','order','sort','where','filter','merge','VIRTUAL','SalesforceField','include','rows','catch','show','params','length','options','find','create','body','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','bluebird','util','path','sox','to-csv','fs-extra','squel','jsforce','desk.js','querystring','papaparse','../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','json','offset','undefined','count','limit','set','Content-Range','apply','update','then','end','name','send','map'];(function(_0x1ee0a1,_0x51058e){var _0x1d2d5b=function(_0x35cfb5){while(--_0x35cfb5){_0x1ee0a1['push'](_0x1ee0a1['shift']());}};_0x1d2d5b(++_0x51058e);}(_0x95c5,0x12d));var _0x595c=function(_0x233cb1,_0x8ca9a2){_0x233cb1=_0x233cb1-0x0;var _0x29ee7e=_0x95c5[_0x233cb1];return _0x29ee7e;};'use strict';var emlformat=require(_0x595c('0x0'));var rimraf=require(_0x595c('0x1'));var zipdir=require(_0x595c('0x2'));var jsonpatch=require(_0x595c('0x3'));var rp=require(_0x595c('0x4'));var moment=require('moment');var BPromise=require(_0x595c('0x5'));var Mustache=require('mustache');var util=require(_0x595c('0x6'));var path=require(_0x595c('0x7'));var sox=require(_0x595c('0x8'));var csv=require(_0x595c('0x9'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x595c('0xa'));var _=require('lodash');var squel=require(_0x595c('0xb'));var crypto=require('crypto');var jsforce=require(_0x595c('0xc'));var deskjs=require(_0x595c('0xd'));var toCsv=require('to-csv');var querystring=require(_0x595c('0xe'));var Papa=require(_0x595c('0xf'));var Redis=require('ioredis');var authService=require(_0x595c('0x10'));var qs=require('../../components/parsers/qs');var as=require(_0x595c('0x11'));var hardwareService=require(_0x595c('0x12'));var logger=require('../../config/logger')(_0x595c('0x13'));var utils=require('../../config/utils');var config=require(_0x595c('0x14'));var licenseUtil=require(_0x595c('0x15'));var db=require(_0x595c('0x16'))['db'];function respondWithStatusCode(_0x53cb57,_0x50f296){_0x50f296=_0x50f296||0xcc;return function(_0xa5708b){if(_0xa5708b){return _0x53cb57[_0x595c('0x17')](_0x50f296);}return _0x53cb57[_0x595c('0x18')](_0x50f296)['end']();};}function respondWithResult(_0x506446,_0x5c99ff){_0x5c99ff=_0x5c99ff||0xc8;return function(_0x132555){if(_0x132555){return _0x506446[_0x595c('0x18')](_0x5c99ff)[_0x595c('0x19')](_0x132555);}};}function respondWithFilteredResult(_0x30c392,_0x29403f){return function(_0xa57f3f){if(_0xa57f3f){var _0x376dbe=typeof _0x29403f[_0x595c('0x1a')]===_0x595c('0x1b')&&typeof _0x29403f['limit']===_0x595c('0x1b');var _0x5c0a60=_0xa57f3f['count'];var _0x5d1dca=_0x376dbe?0x0:_0x29403f['offset'];var _0x24378d=_0x376dbe?_0xa57f3f[_0x595c('0x1c')]:_0x29403f[_0x595c('0x1a')]+_0x29403f[_0x595c('0x1d')];var _0x1c35ac;if(_0x24378d>=_0x5c0a60){_0x24378d=_0x5c0a60;_0x1c35ac=0xc8;}else{_0x1c35ac=0xce;}_0x30c392[_0x595c('0x18')](_0x1c35ac);return _0x30c392[_0x595c('0x1e')](_0x595c('0x1f'),_0x5d1dca+'-'+_0x24378d+'/'+_0x5c0a60)[_0x595c('0x19')](_0xa57f3f);}return null;};}function patchUpdates(_0x3b5cbf){return function(_0x2259ce){try{jsonpatch[_0x595c('0x20')](_0x2259ce,_0x3b5cbf,!![]);}catch(_0x11718f){return BPromise['reject'](_0x11718f);}return _0x2259ce['save']();};}function saveUpdates(_0x1276bf,_0x2bf1b4){return function(_0x371141){if(_0x371141){return _0x371141[_0x595c('0x21')](_0x1276bf)[_0x595c('0x22')](function(_0xc8db48){return _0xc8db48;});}return null;};}function removeEntity(_0x42892c,_0x163a66){return function(_0x238b31){if(_0x238b31){return _0x238b31['destroy']()[_0x595c('0x22')](function(){_0x42892c[_0x595c('0x18')](0xcc)[_0x595c('0x23')]();});}};}function handleEntityNotFound(_0x5749e2,_0x54e519){return function(_0x482959){if(!_0x482959){_0x5749e2[_0x595c('0x17')](0x194);}return _0x482959;};}function handleError(_0x7d5eb9,_0x4621e1){_0x4621e1=_0x4621e1||0x1f4;return function(_0x255627){logger['error'](_0x255627['stack']);if(_0x255627[_0x595c('0x24')]){delete _0x255627[_0x595c('0x24')];}_0x7d5eb9['status'](_0x4621e1)[_0x595c('0x25')](_0x255627);};}exports['index']=function(_0x151634,_0x387e69){var _0x9b414c={},_0x59ee46={},_0x2f1fa5={'count':0x0,'rows':[]};var _0x1f3b2e=_[_0x595c('0x26')](db['SalesforceField'][_0x595c('0x27')],function(_0x476096){return{'name':_0x476096[_0x595c('0x28')],'type':_0x476096[_0x595c('0x29')]['key']};});_0x59ee46['model']=_[_0x595c('0x26')](_0x1f3b2e,'name');_0x59ee46[_0x595c('0x2a')]=_[_0x595c('0x2b')](_0x151634[_0x595c('0x2a')]);_0x59ee46[_0x595c('0x2c')]=_['intersection'](_0x59ee46[_0x595c('0x2d')],_0x59ee46[_0x595c('0x2a')]);_0x9b414c[_0x595c('0x2e')]=_[_0x595c('0x2f')](_0x59ee46['model'],qs[_0x595c('0x30')](_0x151634['query'][_0x595c('0x30')]));_0x9b414c['attributes']=_0x9b414c[_0x595c('0x2e')]['length']?_0x9b414c[_0x595c('0x2e')]:_0x59ee46[_0x595c('0x2d')];if(!_0x151634[_0x595c('0x2a')][_0x595c('0x31')](_0x595c('0x32'))){_0x9b414c[_0x595c('0x1d')]=qs[_0x595c('0x1d')](_0x151634[_0x595c('0x2a')][_0x595c('0x1d')]);_0x9b414c[_0x595c('0x1a')]=qs['offset'](_0x151634['query']['offset']);}_0x9b414c[_0x595c('0x33')]=qs['sort'](_0x151634['query'][_0x595c('0x34')]);_0x9b414c[_0x595c('0x35')]=qs[_0x595c('0x2c')](_['pick'](_0x151634[_0x595c('0x2a')],_0x59ee46[_0x595c('0x2c')]),_0x1f3b2e);if(_0x151634[_0x595c('0x2a')][_0x595c('0x36')]){_0x9b414c[_0x595c('0x35')]=_[_0x595c('0x37')](_0x9b414c[_0x595c('0x35')],{'$or':_[_0x595c('0x26')](_0x1f3b2e,function(_0x3b1fa7){if(_0x3b1fa7[_0x595c('0x29')]!==_0x595c('0x38')){var _0x4e2aef={};_0x4e2aef[_0x3b1fa7[_0x595c('0x24')]]={'$like':'%'+_0x151634[_0x595c('0x2a')]['filter']+'%'};return _0x4e2aef;}})});}_0x9b414c=_[_0x595c('0x37')]({},_0x9b414c,_0x151634['options']);var _0x58d5ad={'where':_0x9b414c['where']};return db[_0x595c('0x39')][_0x595c('0x1c')](_0x58d5ad)[_0x595c('0x22')](function(_0x820a08){_0x2f1fa5[_0x595c('0x1c')]=_0x820a08;if(_0x151634['query']['includeAll']){_0x9b414c[_0x595c('0x3a')]=[{'all':!![]}];}return db[_0x595c('0x39')]['findAll'](_0x9b414c);})['then'](function(_0x2ec77e){_0x2f1fa5[_0x595c('0x3b')]=_0x2ec77e;return _0x2f1fa5;})['then'](respondWithFilteredResult(_0x387e69,_0x9b414c))[_0x595c('0x3c')](handleError(_0x387e69,null));};exports[_0x595c('0x3d')]=function(_0x5f319f,_0x365202){var _0x14bb4c={'raw':!![],'where':{'id':_0x5f319f[_0x595c('0x3e')]['id']}},_0x1eaed4={};_0x1eaed4[_0x595c('0x2d')]=_[_0x595c('0x2b')](db['SalesforceField']['rawAttributes']);_0x1eaed4[_0x595c('0x2a')]=_['keys'](_0x5f319f[_0x595c('0x2a')]);_0x1eaed4[_0x595c('0x2c')]=_[_0x595c('0x2f')](_0x1eaed4[_0x595c('0x2d')],_0x1eaed4[_0x595c('0x2a')]);_0x14bb4c[_0x595c('0x2e')]=_['intersection'](_0x1eaed4[_0x595c('0x2d')],qs[_0x595c('0x30')](_0x5f319f[_0x595c('0x2a')][_0x595c('0x30')]));_0x14bb4c[_0x595c('0x2e')]=_0x14bb4c[_0x595c('0x2e')][_0x595c('0x3f')]?_0x14bb4c['attributes']:_0x1eaed4[_0x595c('0x2d')];if(_0x5f319f[_0x595c('0x2a')]['includeAll']){_0x14bb4c[_0x595c('0x3a')]=[{'all':!![]}];}_0x14bb4c=_['merge']({},_0x14bb4c,_0x5f319f[_0x595c('0x40')]);return db[_0x595c('0x39')][_0x595c('0x41')](_0x14bb4c)[_0x595c('0x22')](handleEntityNotFound(_0x365202,null))[_0x595c('0x22')](respondWithResult(_0x365202,null))[_0x595c('0x3c')](handleError(_0x365202,null));};exports['create']=function(_0xe09b4b,_0x4ff548){return db['SalesforceField'][_0x595c('0x42')](_0xe09b4b[_0x595c('0x43')],{})[_0x595c('0x22')](respondWithResult(_0x4ff548,0xc9))['catch'](handleError(_0x4ff548,null));};exports['update']=function(_0x4321cc,_0x5c0b2){if(_0x4321cc[_0x595c('0x43')]['id']){delete _0x4321cc[_0x595c('0x43')]['id'];}return db[_0x595c('0x39')][_0x595c('0x41')]({'where':{'id':_0x4321cc[_0x595c('0x3e')]['id']}})[_0x595c('0x22')](handleEntityNotFound(_0x5c0b2,null))[_0x595c('0x22')](saveUpdates(_0x4321cc['body'],null))['then'](respondWithResult(_0x5c0b2,null))[_0x595c('0x3c')](handleError(_0x5c0b2,null));};exports['destroy']=function(_0x5c6e97,_0x1266de){return db[_0x595c('0x39')][_0x595c('0x41')]({'where':{'id':_0x5c6e97[_0x595c('0x3e')]['id']}})['then'](handleEntityNotFound(_0x1266de,null))['then'](removeEntity(_0x1266de,null))[_0x595c('0x3c')](handleError(_0x1266de,null));};
\ No newline at end of file
+var _0x1ec5=['stack','name','send','index','map','SalesforceField','rawAttributes','model','query','keys','attributes','intersection','fields','hasOwnProperty','order','sort','where','filters','pick','merge','type','VIRTUAL','filter','includeAll','include','rows','catch','params','length','options','find','create','body','fast-json-patch','request-promise','moment','bluebird','mustache','path','sox','to-csv','ejs','squel','crypto','jsforce','querystring','ioredis','../../components/auth/service','../../components/parsers/qs','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/license/util','../../mysqldb','sendStatus','status','end','json','offset','undefined','limit','count','apply','reject','update','destroy','then','error'];(function(_0x3c0dcc,_0x18c419){var _0x1a224c=function(_0x238ae7){while(--_0x238ae7){_0x3c0dcc['push'](_0x3c0dcc['shift']());}};_0x1a224c(++_0x18c419);}(_0x1ec5,0x66));var _0x51ec=function(_0x108829,_0x115091){_0x108829=_0x108829-0x0;var _0x5ba665=_0x1ec5[_0x108829];return _0x5ba665;};'use strict';var emlformat=require('eml-format');var rimraf=require('rimraf');var zipdir=require('zip-dir');var jsonpatch=require(_0x51ec('0x0'));var rp=require(_0x51ec('0x1'));var moment=require(_0x51ec('0x2'));var BPromise=require(_0x51ec('0x3'));var Mustache=require(_0x51ec('0x4'));var util=require('util');var path=require(_0x51ec('0x5'));var sox=require(_0x51ec('0x6'));var csv=require(_0x51ec('0x7'));var ejs=require(_0x51ec('0x8'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require('lodash');var squel=require(_0x51ec('0x9'));var crypto=require(_0x51ec('0xa'));var jsforce=require(_0x51ec('0xb'));var deskjs=require('desk.js');var toCsv=require(_0x51ec('0x7'));var querystring=require(_0x51ec('0xc'));var Papa=require('papaparse');var Redis=require(_0x51ec('0xd'));var authService=require(_0x51ec('0xe'));var qs=require(_0x51ec('0xf'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x51ec('0x10'));var logger=require(_0x51ec('0x11'))(_0x51ec('0x12'));var utils=require(_0x51ec('0x13'));var config=require('../../config/environment');var licenseUtil=require(_0x51ec('0x14'));var db=require(_0x51ec('0x15'))['db'];function respondWithStatusCode(_0x398259,_0x399350){_0x399350=_0x399350||0xcc;return function(_0x3a5dc8){if(_0x3a5dc8){return _0x398259[_0x51ec('0x16')](_0x399350);}return _0x398259[_0x51ec('0x17')](_0x399350)[_0x51ec('0x18')]();};}function respondWithResult(_0x55cf0b,_0x3ec935){_0x3ec935=_0x3ec935||0xc8;return function(_0x298260){if(_0x298260){return _0x55cf0b['status'](_0x3ec935)[_0x51ec('0x19')](_0x298260);}};}function respondWithFilteredResult(_0x4b0681,_0x378940){return function(_0x2187e8){if(_0x2187e8){var _0x5977d9=typeof _0x378940[_0x51ec('0x1a')]===_0x51ec('0x1b')&&typeof _0x378940[_0x51ec('0x1c')]===_0x51ec('0x1b');var _0x508975=_0x2187e8[_0x51ec('0x1d')];var _0x174b11=_0x5977d9?0x0:_0x378940[_0x51ec('0x1a')];var _0xd5b64a=_0x5977d9?_0x2187e8[_0x51ec('0x1d')]:_0x378940[_0x51ec('0x1a')]+_0x378940['limit'];var _0x34cc1a;if(_0xd5b64a>=_0x508975){_0xd5b64a=_0x508975;_0x34cc1a=0xc8;}else{_0x34cc1a=0xce;}_0x4b0681['status'](_0x34cc1a);return _0x4b0681['set']('Content-Range',_0x174b11+'-'+_0xd5b64a+'/'+_0x508975)['json'](_0x2187e8);}return null;};}function patchUpdates(_0x8338f5){return function(_0x5779b7){try{jsonpatch[_0x51ec('0x1e')](_0x5779b7,_0x8338f5,!![]);}catch(_0x3dc122){return BPromise[_0x51ec('0x1f')](_0x3dc122);}return _0x5779b7['save']();};}function saveUpdates(_0x430a7e,_0x1de0fc){return function(_0x158cc1){if(_0x158cc1){return _0x158cc1[_0x51ec('0x20')](_0x430a7e)['then'](function(_0x1b1508){return _0x1b1508;});}return null;};}function removeEntity(_0x2eab8c,_0x1912ee){return function(_0x306294){if(_0x306294){return _0x306294[_0x51ec('0x21')]()[_0x51ec('0x22')](function(){_0x2eab8c[_0x51ec('0x17')](0xcc)['end']();});}};}function handleEntityNotFound(_0x383485,_0x38e060){return function(_0xa6a44a){if(!_0xa6a44a){_0x383485['sendStatus'](0x194);}return _0xa6a44a;};}function handleError(_0x29a773,_0x1c22cf){_0x1c22cf=_0x1c22cf||0x1f4;return function(_0xf56f37){logger[_0x51ec('0x23')](_0xf56f37[_0x51ec('0x24')]);if(_0xf56f37[_0x51ec('0x25')]){delete _0xf56f37[_0x51ec('0x25')];}_0x29a773[_0x51ec('0x17')](_0x1c22cf)[_0x51ec('0x26')](_0xf56f37);};}exports[_0x51ec('0x27')]=function(_0x4d796c,_0x4e9fa2){var _0x470578={},_0x110e10={},_0x139b57={'count':0x0,'rows':[]};var _0x405c6b=_[_0x51ec('0x28')](db[_0x51ec('0x29')][_0x51ec('0x2a')],function(_0x4cb951){return{'name':_0x4cb951['fieldName'],'type':_0x4cb951['type']['key']};});_0x110e10[_0x51ec('0x2b')]=_[_0x51ec('0x28')](_0x405c6b,'name');_0x110e10[_0x51ec('0x2c')]=_[_0x51ec('0x2d')](_0x4d796c['query']);_0x110e10['filters']=_['intersection'](_0x110e10[_0x51ec('0x2b')],_0x110e10[_0x51ec('0x2c')]);_0x470578[_0x51ec('0x2e')]=_[_0x51ec('0x2f')](_0x110e10[_0x51ec('0x2b')],qs[_0x51ec('0x30')](_0x4d796c[_0x51ec('0x2c')][_0x51ec('0x30')]));_0x470578[_0x51ec('0x2e')]=_0x470578[_0x51ec('0x2e')]['length']?_0x470578[_0x51ec('0x2e')]:_0x110e10[_0x51ec('0x2b')];if(!_0x4d796c[_0x51ec('0x2c')][_0x51ec('0x31')]('nolimit')){_0x470578['limit']=qs[_0x51ec('0x1c')](_0x4d796c[_0x51ec('0x2c')]['limit']);_0x470578[_0x51ec('0x1a')]=qs['offset'](_0x4d796c[_0x51ec('0x2c')][_0x51ec('0x1a')]);}_0x470578[_0x51ec('0x32')]=qs[_0x51ec('0x33')](_0x4d796c[_0x51ec('0x2c')]['sort']);_0x470578[_0x51ec('0x34')]=qs[_0x51ec('0x35')](_[_0x51ec('0x36')](_0x4d796c[_0x51ec('0x2c')],_0x110e10[_0x51ec('0x35')]),_0x405c6b);if(_0x4d796c[_0x51ec('0x2c')]['filter']){_0x470578['where']=_[_0x51ec('0x37')](_0x470578['where'],{'$or':_[_0x51ec('0x28')](_0x405c6b,function(_0x3b9af0){if(_0x3b9af0[_0x51ec('0x38')]!==_0x51ec('0x39')){var _0x544140={};_0x544140[_0x3b9af0[_0x51ec('0x25')]]={'$like':'%'+_0x4d796c[_0x51ec('0x2c')][_0x51ec('0x3a')]+'%'};return _0x544140;}})});}_0x470578=_['merge']({},_0x470578,_0x4d796c['options']);var _0xc88b9={'where':_0x470578['where']};return db[_0x51ec('0x29')][_0x51ec('0x1d')](_0xc88b9)[_0x51ec('0x22')](function(_0x5cff51){_0x139b57[_0x51ec('0x1d')]=_0x5cff51;if(_0x4d796c[_0x51ec('0x2c')][_0x51ec('0x3b')]){_0x470578[_0x51ec('0x3c')]=[{'all':!![]}];}return db[_0x51ec('0x29')]['findAll'](_0x470578);})[_0x51ec('0x22')](function(_0x1f5458){_0x139b57[_0x51ec('0x3d')]=_0x1f5458;return _0x139b57;})[_0x51ec('0x22')](respondWithFilteredResult(_0x4e9fa2,_0x470578))[_0x51ec('0x3e')](handleError(_0x4e9fa2,null));};exports['show']=function(_0x55f98d,_0x4baa53){var _0x1c8b1d={'raw':!![],'where':{'id':_0x55f98d[_0x51ec('0x3f')]['id']}},_0x1c120e={};_0x1c120e[_0x51ec('0x2b')]=_['keys'](db['SalesforceField'][_0x51ec('0x2a')]);_0x1c120e[_0x51ec('0x2c')]=_['keys'](_0x55f98d[_0x51ec('0x2c')]);_0x1c120e[_0x51ec('0x35')]=_[_0x51ec('0x2f')](_0x1c120e[_0x51ec('0x2b')],_0x1c120e[_0x51ec('0x2c')]);_0x1c8b1d['attributes']=_[_0x51ec('0x2f')](_0x1c120e[_0x51ec('0x2b')],qs[_0x51ec('0x30')](_0x55f98d[_0x51ec('0x2c')][_0x51ec('0x30')]));_0x1c8b1d[_0x51ec('0x2e')]=_0x1c8b1d[_0x51ec('0x2e')][_0x51ec('0x40')]?_0x1c8b1d['attributes']:_0x1c120e['model'];if(_0x55f98d[_0x51ec('0x2c')][_0x51ec('0x3b')]){_0x1c8b1d['include']=[{'all':!![]}];}_0x1c8b1d=_[_0x51ec('0x37')]({},_0x1c8b1d,_0x55f98d[_0x51ec('0x41')]);return db['SalesforceField'][_0x51ec('0x42')](_0x1c8b1d)[_0x51ec('0x22')](handleEntityNotFound(_0x4baa53,null))['then'](respondWithResult(_0x4baa53,null))[_0x51ec('0x3e')](handleError(_0x4baa53,null));};exports[_0x51ec('0x43')]=function(_0x355b5d,_0x43ad4a){return db['SalesforceField'][_0x51ec('0x43')](_0x355b5d[_0x51ec('0x44')],{})[_0x51ec('0x22')](respondWithResult(_0x43ad4a,0xc9))[_0x51ec('0x3e')](handleError(_0x43ad4a,null));};exports['update']=function(_0x2fd7c9,_0x3e5278){if(_0x2fd7c9[_0x51ec('0x44')]['id']){delete _0x2fd7c9[_0x51ec('0x44')]['id'];}return db['SalesforceField']['find']({'where':{'id':_0x2fd7c9[_0x51ec('0x3f')]['id']}})['then'](handleEntityNotFound(_0x3e5278,null))[_0x51ec('0x22')](saveUpdates(_0x2fd7c9[_0x51ec('0x44')],null))[_0x51ec('0x22')](respondWithResult(_0x3e5278,null))[_0x51ec('0x3e')](handleError(_0x3e5278,null));};exports[_0x51ec('0x21')]=function(_0x56c273,_0x28ba49){return db[_0x51ec('0x29')][_0x51ec('0x42')]({'where':{'id':_0x56c273[_0x51ec('0x3f')]['id']}})[_0x51ec('0x22')](handleEntityNotFound(_0x28ba49,null))[_0x51ec('0x22')](removeEntity(_0x28ba49,null))['catch'](handleError(_0x28ba49,null));};
\ No newline at end of file
index a8bfd24..90e4e2f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4d48=['moment','bluebird','request-promise','rimraf','exports','define','SalesforceField','salesforce_unique_index','lodash','../../config/logger','api'];(function(_0x9726cf,_0x4a8bfe){var _0x3510ef=function(_0x37d41d){while(--_0x37d41d){_0x9726cf['push'](_0x9726cf['shift']());}};_0x3510ef(++_0x4a8bfe);}(_0x4d48,0x17e));var _0x84d4=function(_0x85fbb2,_0x55d447){_0x85fbb2=_0x85fbb2-0x0;var _0x2c94e5=_0x4d48[_0x85fbb2];return _0x2c94e5;};'use strict';var _=require(_0x84d4('0x0'));var util=require('util');var logger=require(_0x84d4('0x1'))(_0x84d4('0x2'));var moment=require(_0x84d4('0x3'));var BPromise=require(_0x84d4('0x4'));var rp=require(_0x84d4('0x5'));var fs=require('fs');var path=require('path');var rimraf=require(_0x84d4('0x6'));var config=require('../../config/environment');var attributes=require('./intSalesforceField.attributes');module[_0x84d4('0x7')]=function(_0x5bc86c,_0x250f09){return _0x5bc86c[_0x84d4('0x8')](_0x84d4('0x9'),attributes,{'tableName':'int_salesforce_fields','paranoid':![],'indexes':[{'name':_0x84d4('0xa'),'fields':['idField','FieldId'],'unique':!![]}],'timestamps':!![]});};
\ No newline at end of file
+var _0xbb2c=['int_salesforce_fields','salesforce_unique_index','FieldId','util','moment','rimraf','./intSalesforceField.attributes','exports','SalesforceField'];(function(_0x432682,_0x253044){var _0x463d05=function(_0xa73403){while(--_0xa73403){_0x432682['push'](_0x432682['shift']());}};_0x463d05(++_0x253044);}(_0xbb2c,0x1a1));var _0xcbb2=function(_0x5e6ebe,_0x373752){_0x5e6ebe=_0x5e6ebe-0x0;var _0x5d80a0=_0xbb2c[_0x5e6ebe];return _0x5d80a0;};'use strict';var _=require('lodash');var util=require(_0xcbb2('0x0'));var logger=require('../../config/logger')('api');var moment=require(_0xcbb2('0x1'));var BPromise=require('bluebird');var rp=require('request-promise');var fs=require('fs');var path=require('path');var rimraf=require(_0xcbb2('0x2'));var config=require('../../config/environment');var attributes=require(_0xcbb2('0x3'));module[_0xcbb2('0x4')]=function(_0xf66da0,_0x5f4051){return _0xf66da0['define'](_0xcbb2('0x5'),attributes,{'tableName':_0xcbb2('0x6'),'paranoid':![],'indexes':[{'name':_0xcbb2('0x7'),'fields':['idField',_0xcbb2('0x8')],'unique':!![]}],'timestamps':!![]});};
\ No newline at end of file
index 2fc0b57..48ec288 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3b9c=['SalesforceField,\x20%s,\x20%s','request\x20sent','debug','stringify','error','code','message','result','catch','util','moment','bluebird','../../mysqldb','../../config/utils','rpc','jayson/promise','client','http','request','info'];(function(_0x290637,_0x69e55e){var _0x41bb60=function(_0x55e1b3){while(--_0x55e1b3){_0x290637['push'](_0x290637['shift']());}};_0x41bb60(++_0x69e55e);}(_0x3b9c,0x6d));var _0xc3b9=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x3b9c[_0x3dd15e];return _0x231fd0;};'use strict';var _=require('lodash');var util=require(_0xc3b9('0x0'));var moment=require(_0xc3b9('0x1'));var BPromise=require(_0xc3b9('0x2'));var rs=require('randomstring');var fs=require('fs');var Redis=require('ioredis');var db=require(_0xc3b9('0x3'))['db'];var utils=require(_0xc3b9('0x4'));var logger=require('../../config/logger')(_0xc3b9('0x5'));var config=require('../../config/environment');var jayson=require(_0xc3b9('0x6'));var client=jayson[_0xc3b9('0x7')][_0xc3b9('0x8')]({'port':0x232a});function respondWithRpcPromise(_0x13cb16,_0x5a23e7,_0x202cd1){return new BPromise(function(_0x5a454e,_0x454eca){return client[_0xc3b9('0x9')](_0x13cb16,_0x202cd1)['then'](function(_0xdaef6b){logger[_0xc3b9('0xa')](_0xc3b9('0xb'),_0x5a23e7,_0xc3b9('0xc'));logger[_0xc3b9('0xd')]('SalesforceField,\x20%s,\x20%s,\x20%s',_0x5a23e7,_0xc3b9('0xc'),JSON[_0xc3b9('0xe')](_0xdaef6b));if(_0xdaef6b[_0xc3b9('0xf')]){if(_0xdaef6b[_0xc3b9('0xf')][_0xc3b9('0x10')]===0x1f4){logger[_0xc3b9('0xf')](_0xc3b9('0xb'),_0x5a23e7,_0xdaef6b[_0xc3b9('0xf')][_0xc3b9('0x11')]);return _0x454eca(_0xdaef6b[_0xc3b9('0xf')][_0xc3b9('0x11')]);}logger[_0xc3b9('0xf')](_0xc3b9('0xb'),_0x5a23e7,_0xdaef6b[_0xc3b9('0xf')][_0xc3b9('0x11')]);return _0x5a454e(_0xdaef6b[_0xc3b9('0xf')]['message']);}else{logger[_0xc3b9('0xa')](_0xc3b9('0xb'),_0x5a23e7,'request\x20sent');_0x5a454e(_0xdaef6b[_0xc3b9('0x12')][_0xc3b9('0x11')]);}})[_0xc3b9('0x13')](function(_0x4aa5d7){logger[_0xc3b9('0xf')](_0xc3b9('0xb'),_0x5a23e7,_0x4aa5d7);_0x454eca(_0x4aa5d7);});});}
\ No newline at end of file
+var _0x2114=['result','catch','util','moment','bluebird','ioredis','../../mysqldb','../../config/utils','rpc','jayson/promise','http','then','info','SalesforceField,\x20%s,\x20%s','request\x20sent','SalesforceField,\x20%s,\x20%s,\x20%s','stringify','error','code','message'];(function(_0x3b4dfd,_0x46ea19){var _0x45d763=function(_0x1a472a){while(--_0x1a472a){_0x3b4dfd['push'](_0x3b4dfd['shift']());}};_0x45d763(++_0x46ea19);}(_0x2114,0xca));var _0x4211=function(_0x5ce8b9,_0x5cded8){_0x5ce8b9=_0x5ce8b9-0x0;var _0xe34be0=_0x2114[_0x5ce8b9];return _0xe34be0;};'use strict';var _=require('lodash');var util=require(_0x4211('0x0'));var moment=require(_0x4211('0x1'));var BPromise=require(_0x4211('0x2'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x4211('0x3'));var db=require(_0x4211('0x4'))['db'];var utils=require(_0x4211('0x5'));var logger=require('../../config/logger')(_0x4211('0x6'));var config=require('../../config/environment');var jayson=require(_0x4211('0x7'));var client=jayson['client'][_0x4211('0x8')]({'port':0x232a});function respondWithRpcPromise(_0xf790fb,_0x418934,_0x51443a){return new BPromise(function(_0x228e6d,_0x4ebe8f){return client['request'](_0xf790fb,_0x51443a)[_0x4211('0x9')](function(_0x437394){logger[_0x4211('0xa')](_0x4211('0xb'),_0x418934,_0x4211('0xc'));logger['debug'](_0x4211('0xd'),_0x418934,_0x4211('0xc'),JSON[_0x4211('0xe')](_0x437394));if(_0x437394[_0x4211('0xf')]){if(_0x437394[_0x4211('0xf')][_0x4211('0x10')]===0x1f4){logger['error'](_0x4211('0xb'),_0x418934,_0x437394[_0x4211('0xf')]['message']);return _0x4ebe8f(_0x437394[_0x4211('0xf')]['message']);}logger[_0x4211('0xf')]('SalesforceField,\x20%s,\x20%s',_0x418934,_0x437394[_0x4211('0xf')][_0x4211('0x11')]);return _0x228e6d(_0x437394[_0x4211('0xf')][_0x4211('0x11')]);}else{logger[_0x4211('0xa')](_0x4211('0xb'),_0x418934,_0x4211('0xc'));_0x228e6d(_0x437394[_0x4211('0x12')][_0x4211('0x11')]);}})[_0x4211('0x13')](function(_0x2a1706){logger[_0x4211('0xf')](_0x4211('0xb'),_0x418934,_0x2a1706);_0x4ebe8f(_0x2a1706);});});}
\ No newline at end of file
index a9a9e90..572dc10 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6865=['get','isAuthenticated','index','show','/:id/configurations','getConfigurations','getFields','post','put','/:id','update','delete','exports','util','path','connect-timeout','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./intServicenowAccount.controller'];(function(_0x746edb,_0x46b2a7){var _0x2f588b=function(_0x4db4af){while(--_0x4db4af){_0x746edb['push'](_0x746edb['shift']());}};_0x2f588b(++_0x46b2a7);}(_0x6865,0xa7));var _0x5686=function(_0x20a584,_0xe384a5){_0x20a584=_0x20a584-0x0;var _0x4b41a8=_0x6865[_0x20a584];return _0x4b41a8;};'use strict';var multer=require('multer');var util=require(_0x5686('0x0'));var path=require(_0x5686('0x1'));var timeout=require(_0x5686('0x2'));var express=require('express');var router=express[_0x5686('0x3')]();var fs_extra=require(_0x5686('0x4'));var auth=require(_0x5686('0x5'));var interaction=require(_0x5686('0x6'));var config=require(_0x5686('0x7'));var controller=require(_0x5686('0x8'));router[_0x5686('0x9')]('/',auth[_0x5686('0xa')](),controller[_0x5686('0xb')]);router['get']('/:id',auth[_0x5686('0xa')](),controller[_0x5686('0xc')]);router[_0x5686('0x9')](_0x5686('0xd'),auth[_0x5686('0xa')](),controller[_0x5686('0xe')]);router[_0x5686('0x9')]('/:id/fields',auth['isAuthenticated'](),controller[_0x5686('0xf')]);router[_0x5686('0x10')]('/',auth[_0x5686('0xa')](),controller['create']);router[_0x5686('0x10')](_0x5686('0xd'),auth[_0x5686('0xa')](),controller['addConfiguration']);router[_0x5686('0x11')](_0x5686('0x12'),auth[_0x5686('0xa')](),controller[_0x5686('0x13')]);router[_0x5686('0x14')]('/:id',auth[_0x5686('0xa')](),controller['destroy']);module[_0x5686('0x15')]=router;
\ No newline at end of file
+var _0xc16b=['update','delete','destroy','multer','util','path','connect-timeout','express','Router','../../config/environment','./intServicenowAccount.controller','get','isAuthenticated','index','show','/:id/configurations','getConfigurations','/:id/fields','getFields','post','create','addConfiguration','put'];(function(_0x1e17eb,_0x2e15c5){var _0x4de4c7=function(_0x52d003){while(--_0x52d003){_0x1e17eb['push'](_0x1e17eb['shift']());}};_0x4de4c7(++_0x2e15c5);}(_0xc16b,0x76));var _0xbc16=function(_0x3d2c27,_0x5d78fd){_0x3d2c27=_0x3d2c27-0x0;var _0x655271=_0xc16b[_0x3d2c27];return _0x655271;};'use strict';var multer=require(_0xbc16('0x0'));var util=require(_0xbc16('0x1'));var path=require(_0xbc16('0x2'));var timeout=require(_0xbc16('0x3'));var express=require(_0xbc16('0x4'));var router=express[_0xbc16('0x5')]();var fs_extra=require('fs-extra');var auth=require('../../components/auth/service');var interaction=require('../../components/interaction/service');var config=require(_0xbc16('0x6'));var controller=require(_0xbc16('0x7'));router[_0xbc16('0x8')]('/',auth[_0xbc16('0x9')](),controller[_0xbc16('0xa')]);router[_0xbc16('0x8')]('/:id',auth[_0xbc16('0x9')](),controller[_0xbc16('0xb')]);router[_0xbc16('0x8')](_0xbc16('0xc'),auth['isAuthenticated'](),controller[_0xbc16('0xd')]);router[_0xbc16('0x8')](_0xbc16('0xe'),auth['isAuthenticated'](),controller[_0xbc16('0xf')]);router[_0xbc16('0x10')]('/',auth[_0xbc16('0x9')](),controller[_0xbc16('0x11')]);router[_0xbc16('0x10')](_0xbc16('0xc'),auth['isAuthenticated'](),controller[_0xbc16('0x12')]);router[_0xbc16('0x13')]('/:id',auth['isAuthenticated'](),controller[_0xbc16('0x14')]);router[_0xbc16('0x15')]('/:id',auth['isAuthenticated'](),controller[_0xbc16('0x16')]);module['exports']=router;
\ No newline at end of file
index 61e00f1..460c188 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf677=['STRING','remoteUri','exports'];(function(_0x102f97,_0x5bda2f){var _0xd22058=function(_0x2ccc1f){while(--_0x2ccc1f){_0x102f97['push'](_0x102f97['shift']());}};_0xd22058(++_0x5bda2f);}(_0xf677,0xa1));var _0x7f67=function(_0x1627ec,_0x81809){_0x1627ec=_0x1627ec-0x0;var _0x5b4aa9=_0xf677[_0x1627ec];return _0x5b4aa9;};'use strict';var Sequelize=require('sequelize');module[_0x7f67('0x0')]={'name':{'type':Sequelize['STRING']},'description':{'type':Sequelize['STRING']},'username':{'type':Sequelize[_0x7f67('0x1')],'unique':'username'},'password':{'type':Sequelize[_0x7f67('0x1')]},'email':{'type':Sequelize[_0x7f67('0x1')]},'remoteUri':{'type':Sequelize[_0x7f67('0x1')],'unique':_0x7f67('0x2')},'serverUrl':{'type':Sequelize[_0x7f67('0x1')],'allowNull':![]}};
\ No newline at end of file
+var _0xcd75=['sequelize','exports','STRING','username'];(function(_0x44714c,_0x2ac454){var _0x57d4d5=function(_0x5aca44){while(--_0x5aca44){_0x44714c['push'](_0x44714c['shift']());}};_0x57d4d5(++_0x2ac454);}(_0xcd75,0x148));var _0x5cd7=function(_0x5c8cf3,_0x408978){_0x5c8cf3=_0x5c8cf3-0x0;var _0x374c0f=_0xcd75[_0x5c8cf3];return _0x374c0f;};'use strict';var Sequelize=require(_0x5cd7('0x0'));module[_0x5cd7('0x1')]={'name':{'type':Sequelize[_0x5cd7('0x2')]},'description':{'type':Sequelize[_0x5cd7('0x2')]},'username':{'type':Sequelize['STRING'],'unique':_0x5cd7('0x3')},'password':{'type':Sequelize[_0x5cd7('0x2')]},'email':{'type':Sequelize[_0x5cd7('0x2')]},'remoteUri':{'type':Sequelize[_0x5cd7('0x2')],'unique':'remoteUri'},'serverUrl':{'type':Sequelize['STRING'],'allowNull':![]}};
\ No newline at end of file
index 34cc2a6..45b02e4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x17d4=['close_code','correlation_display','delivery_task','assignment_group','business_stc','additional_assignee_list','description','calendar_duration','notify','sys_class_name','closed_by','parent_incident','sys_id','urgency','company','reassignment_count','activity_due','assigned_to','comments','sla_due','approval','comments_and_work_notes','due_date','sys_mod_count','reopen_count','sys_tags','escalation','upon_approval','location','category','username','password','email','remoteUri','serverUrl','slice','substring','lastIndexOf','format','%s/api/now/doc/table/schema/','%s/api/now/table/','GET','incident?sysparm_display_value=all','result','log','incident\x20table\x20objects','assign','remove','includes','internalType','label','all','TCL:\x20exports.getEntityFields\x20->\x20_objectsCustom','forEach','push','concat','test','statusCode','send','Wrong\x20credentials','boolean','true','False','false','sys_choice?sysparm_query=name=incident^element=','inactive','value','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','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','api','../../config/environment','../../config/license/util','../../mysqldb','../../components/integrations/configuration','status','offset','limit','undefined','count','set','Content-Range','json','apply','save','update','then','destroy','end','sendStatus','name','index','map','ServicenowAccount','rawAttributes','fieldName','type','key','model','keys','query','intersection','attributes','fields','hasOwnProperty','nolimit','sort','where','filters','filter','merge','VIRTUAL','include','rows','catch','show','length','includeAll','options','find','body','params','getConfigurations','ServicenowConfiguration','order','pick','addConfiguration','findOne','getSubjects','channel','Descriptions','getDescriptions','ServicenowField','Subjects','getFields','made_sla','hold_reason','knowledge','subcategory','incident_state','severity','parent','caused_by','watch_list','upon_reject','sys_updated_on','approval_history','number','sys_updated_by','opened_by','user_input','sys_domain','state','sys_created_by','calendar_stc','cmdb_ci','delivery_plan','impact','active','business_service','priority','sys_domain_path','time_worked','opened_at','business_duration','group_list','work_end','reopened_time','resolved_at','approval_set','work_notes'];(function(_0x2314ed,_0x2d95a5){var _0x5f4517=function(_0x2f8948){while(--_0x2f8948){_0x2314ed['push'](_0x2314ed['shift']());}};_0x5f4517(++_0x2d95a5);}(_0x17d4,0x103));var _0x417d=function(_0x3c0dcc,_0x18c419){_0x3c0dcc=_0x3c0dcc-0x0;var _0x1a224c=_0x17d4[_0x3c0dcc];return _0x1a224c;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x417d('0x0'));var zipdir=require(_0x417d('0x1'));var jsonpatch=require(_0x417d('0x2'));var rp=require(_0x417d('0x3'));var moment=require(_0x417d('0x4'));var BPromise=require(_0x417d('0x5'));var Mustache=require(_0x417d('0x6'));var util=require(_0x417d('0x7'));var path=require(_0x417d('0x8'));var sox=require(_0x417d('0x9'));var csv=require(_0x417d('0xa'));var ejs=require(_0x417d('0xb'));var fs=require('fs');var fs_extra=require(_0x417d('0xc'));var _=require(_0x417d('0xd'));var squel=require(_0x417d('0xe'));var crypto=require(_0x417d('0xf'));var jsforce=require(_0x417d('0x10'));var deskjs=require(_0x417d('0x11'));var toCsv=require('to-csv');var querystring=require(_0x417d('0x12'));var Papa=require('papaparse');var Redis=require(_0x417d('0x13'));var authService=require(_0x417d('0x14'));var qs=require(_0x417d('0x15'));var as=require(_0x417d('0x16'));var hardwareService=require('../../config/license/hardware');var logger=require(_0x417d('0x17'))(_0x417d('0x18'));var utils=require('../../config/utils');var config=require(_0x417d('0x19'));var licenseUtil=require(_0x417d('0x1a'));var db=require(_0x417d('0x1b'))['db'];var integrations=require(_0x417d('0x1c'));function respondWithStatusCode(_0x45465f,_0x49093a){_0x49093a=_0x49093a||0xcc;return function(_0x59ceb8){if(_0x59ceb8){return _0x45465f['sendStatus'](_0x49093a);}return _0x45465f['status'](_0x49093a)['end']();};}function respondWithResult(_0xeb1e6a,_0x53ff90){_0x53ff90=_0x53ff90||0xc8;return function(_0x1b7a1e){if(_0x1b7a1e){return _0xeb1e6a[_0x417d('0x1d')](_0x53ff90)['json'](_0x1b7a1e);}};}function respondWithFilteredResult(_0x5ab9e4,_0x168251){return function(_0x48d72d){if(_0x48d72d){var _0x534b87=typeof _0x168251[_0x417d('0x1e')]==='undefined'&&typeof _0x168251[_0x417d('0x1f')]===_0x417d('0x20');var _0x1ddf5a=_0x48d72d[_0x417d('0x21')];var _0x539dd7=_0x534b87?0x0:_0x168251[_0x417d('0x1e')];var _0x5a8716=_0x534b87?_0x48d72d[_0x417d('0x21')]:_0x168251[_0x417d('0x1e')]+_0x168251[_0x417d('0x1f')];var _0x27675c;if(_0x5a8716>=_0x1ddf5a){_0x5a8716=_0x1ddf5a;_0x27675c=0xc8;}else{_0x27675c=0xce;}_0x5ab9e4[_0x417d('0x1d')](_0x27675c);return _0x5ab9e4[_0x417d('0x22')](_0x417d('0x23'),_0x539dd7+'-'+_0x5a8716+'/'+_0x1ddf5a)[_0x417d('0x24')](_0x48d72d);}return null;};}function patchUpdates(_0x51efd9){return function(_0x57824a){try{jsonpatch[_0x417d('0x25')](_0x57824a,_0x51efd9,!![]);}catch(_0x3824c2){return BPromise['reject'](_0x3824c2);}return _0x57824a[_0x417d('0x26')]();};}function saveUpdates(_0x400e8c,_0x25ca8e){return function(_0xbdd787){if(_0xbdd787){return _0xbdd787[_0x417d('0x27')](_0x400e8c)[_0x417d('0x28')](function(_0x56273a){return _0x56273a;});}return null;};}function removeEntity(_0x35e697,_0x17258c){return function(_0x1f76a3){if(_0x1f76a3){return _0x1f76a3[_0x417d('0x29')]()['then'](function(){_0x35e697[_0x417d('0x1d')](0xcc)[_0x417d('0x2a')]();});}};}function handleEntityNotFound(_0x5192e8,_0x1c44f8){return function(_0x53a027){if(!_0x53a027){_0x5192e8[_0x417d('0x2b')](0x194);}return _0x53a027;};}function handleError(_0x4320d0,_0x1be497){_0x1be497=_0x1be497||0x1f4;return function(_0x250c86){logger['error'](_0x250c86['stack']);if(_0x250c86[_0x417d('0x2c')]){delete _0x250c86[_0x417d('0x2c')];}_0x4320d0[_0x417d('0x1d')](_0x1be497)['send'](_0x250c86);};}exports[_0x417d('0x2d')]=function(_0xf83303,_0x27d9d2){var _0x3c572d={},_0x300bfb={},_0x2028b5={'count':0x0,'rows':[]};var _0x3582cb=_[_0x417d('0x2e')](db[_0x417d('0x2f')][_0x417d('0x30')],function(_0x32b160){return{'name':_0x32b160[_0x417d('0x31')],'type':_0x32b160[_0x417d('0x32')][_0x417d('0x33')]};});_0x300bfb[_0x417d('0x34')]=_['map'](_0x3582cb,_0x417d('0x2c'));_0x300bfb['query']=_[_0x417d('0x35')](_0xf83303[_0x417d('0x36')]);_0x300bfb['filters']=_[_0x417d('0x37')](_0x300bfb[_0x417d('0x34')],_0x300bfb['query']);_0x3c572d[_0x417d('0x38')]=_[_0x417d('0x37')](_0x300bfb['model'],qs[_0x417d('0x39')](_0xf83303['query'][_0x417d('0x39')]));_0x3c572d['attributes']=_0x3c572d[_0x417d('0x38')]['length']?_0x3c572d[_0x417d('0x38')]:_0x300bfb['model'];if(!_0xf83303[_0x417d('0x36')][_0x417d('0x3a')](_0x417d('0x3b'))){_0x3c572d[_0x417d('0x1f')]=qs[_0x417d('0x1f')](_0xf83303['query'][_0x417d('0x1f')]);_0x3c572d['offset']=qs[_0x417d('0x1e')](_0xf83303['query'][_0x417d('0x1e')]);}_0x3c572d['order']=qs[_0x417d('0x3c')](_0xf83303['query'][_0x417d('0x3c')]);_0x3c572d[_0x417d('0x3d')]=qs[_0x417d('0x3e')](_['pick'](_0xf83303[_0x417d('0x36')],_0x300bfb[_0x417d('0x3e')]),_0x3582cb);if(_0xf83303[_0x417d('0x36')][_0x417d('0x3f')]){_0x3c572d['where']=_[_0x417d('0x40')](_0x3c572d[_0x417d('0x3d')],{'$or':_[_0x417d('0x2e')](_0x3582cb,function(_0xd2fc2a){if(_0xd2fc2a['type']!==_0x417d('0x41')){var _0x4e83f9={};_0x4e83f9[_0xd2fc2a['name']]={'$like':'%'+_0xf83303[_0x417d('0x36')]['filter']+'%'};return _0x4e83f9;}})});}_0x3c572d=_[_0x417d('0x40')]({},_0x3c572d,_0xf83303['options']);var _0x1c4f98={'where':_0x3c572d['where']};return db[_0x417d('0x2f')][_0x417d('0x21')](_0x1c4f98)[_0x417d('0x28')](function(_0x210efc){_0x2028b5[_0x417d('0x21')]=_0x210efc;if(_0xf83303[_0x417d('0x36')]['includeAll']){_0x3c572d[_0x417d('0x42')]=[{'all':!![]}];}return db[_0x417d('0x2f')]['findAll'](_0x3c572d);})[_0x417d('0x28')](function(_0x5a0b42){_0x2028b5[_0x417d('0x43')]=_0x5a0b42;return _0x2028b5;})[_0x417d('0x28')](respondWithFilteredResult(_0x27d9d2,_0x3c572d))[_0x417d('0x44')](handleError(_0x27d9d2,null));};exports[_0x417d('0x45')]=function(_0x5852b0,_0x5c668e){var _0x4968ab={'raw':![],'where':{'id':_0x5852b0['params']['id']}},_0x29c223={};_0x29c223[_0x417d('0x34')]=_['keys'](db[_0x417d('0x2f')][_0x417d('0x30')]);_0x29c223['query']=_[_0x417d('0x35')](_0x5852b0[_0x417d('0x36')]);_0x29c223['filters']=_['intersection'](_0x29c223[_0x417d('0x34')],_0x29c223[_0x417d('0x36')]);_0x4968ab[_0x417d('0x38')]=_[_0x417d('0x37')](_0x29c223[_0x417d('0x34')],qs[_0x417d('0x39')](_0x5852b0['query'][_0x417d('0x39')]));_0x4968ab[_0x417d('0x38')]=_0x4968ab[_0x417d('0x38')][_0x417d('0x46')]?_0x4968ab[_0x417d('0x38')]:_0x29c223[_0x417d('0x34')];if(_0x5852b0['query'][_0x417d('0x47')]){_0x4968ab[_0x417d('0x42')]=[{'all':!![]}];}_0x4968ab=_[_0x417d('0x40')]({},_0x4968ab,_0x5852b0[_0x417d('0x48')]);return db['ServicenowAccount'][_0x417d('0x49')](_0x4968ab)[_0x417d('0x28')](handleEntityNotFound(_0x5c668e,null))[_0x417d('0x28')](respondWithResult(_0x5c668e,null))['catch'](handleError(_0x5c668e,null));};exports['create']=function(_0x459702,_0x13650e){return db['ServicenowAccount']['create'](_0x459702[_0x417d('0x4a')],{})[_0x417d('0x28')](respondWithResult(_0x13650e,0xc9))[_0x417d('0x44')](handleError(_0x13650e,null));};exports['update']=function(_0x589ffb,_0x26685f){if(_0x589ffb['body']['id']){delete _0x589ffb[_0x417d('0x4a')]['id'];}return db[_0x417d('0x2f')][_0x417d('0x49')]({'where':{'id':_0x589ffb[_0x417d('0x4b')]['id']}})[_0x417d('0x28')](handleEntityNotFound(_0x26685f,null))[_0x417d('0x28')](saveUpdates(_0x589ffb[_0x417d('0x4a')],null))['then'](respondWithResult(_0x26685f,null))[_0x417d('0x44')](handleError(_0x26685f,null));};exports['destroy']=function(_0x12f9e2,_0x3f03a8){return db[_0x417d('0x2f')][_0x417d('0x49')]({'where':{'id':_0x12f9e2[_0x417d('0x4b')]['id']}})['then'](handleEntityNotFound(_0x3f03a8,null))[_0x417d('0x28')](removeEntity(_0x3f03a8,null))[_0x417d('0x44')](handleError(_0x3f03a8,null));};exports[_0x417d('0x4c')]=function(_0x5ddb8c,_0x33e9ec,_0xbb397f){var _0x1156c0={};var _0x378639={};var _0x320393;var _0x1bfe8d;return db[_0x417d('0x2f')]['findOne']({'where':{'id':_0x5ddb8c[_0x417d('0x4b')]['id']}})['then'](handleEntityNotFound(_0x33e9ec,null))[_0x417d('0x28')](function(_0x4c5cde){if(_0x4c5cde){_0x320393=_0x4c5cde;_0x378639[_0x417d('0x34')]=_['keys'](db[_0x417d('0x4d')][_0x417d('0x30')]);_0x378639['query']=_[_0x417d('0x35')](_0x5ddb8c['query']);_0x378639[_0x417d('0x3e')]=_[_0x417d('0x37')](_0x378639[_0x417d('0x34')],_0x378639[_0x417d('0x36')]);_0x1156c0[_0x417d('0x38')]=_['intersection'](_0x378639[_0x417d('0x34')],qs[_0x417d('0x39')](_0x5ddb8c['query'][_0x417d('0x39')]));_0x1156c0[_0x417d('0x38')]=_0x1156c0[_0x417d('0x38')][_0x417d('0x46')]?_0x1156c0[_0x417d('0x38')]:_0x378639[_0x417d('0x34')];_0x1156c0[_0x417d('0x4e')]=qs[_0x417d('0x3c')](_0x5ddb8c[_0x417d('0x36')]['sort']);_0x1156c0[_0x417d('0x3d')]=qs[_0x417d('0x3e')](_[_0x417d('0x4f')](_0x5ddb8c[_0x417d('0x36')],_0x378639[_0x417d('0x3e')]));if(_0x5ddb8c[_0x417d('0x36')]['filter']){_0x1156c0[_0x417d('0x3d')]=_[_0x417d('0x40')](_0x1156c0[_0x417d('0x3d')],{'$or':_[_0x417d('0x2e')](_0x1156c0['attributes'],function(_0x5e1bb7){var _0x256bfd={};_0x256bfd[_0x5e1bb7]={'$like':'%'+_0x5ddb8c[_0x417d('0x36')]['filter']+'%'};return _0x256bfd;})});}_0x1156c0=_[_0x417d('0x40')]({},_0x1156c0,_0x5ddb8c[_0x417d('0x48')]);return _0x320393[_0x417d('0x4c')](_0x1156c0);}})[_0x417d('0x28')](function(_0x539d77){if(_0x539d77){_0x1bfe8d=_0x539d77[_0x417d('0x46')];if(!_0x5ddb8c[_0x417d('0x36')][_0x417d('0x3a')]('nolimit')){_0x1156c0[_0x417d('0x1f')]=qs[_0x417d('0x1f')](_0x5ddb8c[_0x417d('0x36')][_0x417d('0x1f')]);_0x1156c0[_0x417d('0x1e')]=qs[_0x417d('0x1e')](_0x5ddb8c[_0x417d('0x36')][_0x417d('0x1e')]);}return _0x320393[_0x417d('0x4c')](_0x1156c0);}})['then'](function(_0x3ddb17){if(_0x3ddb17){return _0x3ddb17?{'count':_0x1bfe8d,'rows':_0x3ddb17}:null;}})['then'](respondWithResult(_0x33e9ec,null))[_0x417d('0x44')](handleError(_0x33e9ec,null));};exports[_0x417d('0x50')]=function(_0x80a6d0,_0x510eaa,_0xe81eea){if(_0x80a6d0[_0x417d('0x4a')]['id']){delete _0x80a6d0[_0x417d('0x4a')]['id'];}return db[_0x417d('0x2f')][_0x417d('0x51')]({'where':{'id':_0x80a6d0[_0x417d('0x4b')]['id']}})[_0x417d('0x28')](handleEntityNotFound(_0x510eaa,null))['then'](function(_0x702152){if(_0x702152){_0x80a6d0['body']['AccountId']=_0x702152['id'];_0x80a6d0['body']['Subjects']=integrations[_0x417d('0x52')](_0x80a6d0[_0x417d('0x4a')][_0x417d('0x53')],_0x80a6d0[_0x417d('0x4a')][_0x417d('0x32')]);_0x80a6d0[_0x417d('0x4a')][_0x417d('0x54')]=integrations[_0x417d('0x55')](_0x80a6d0['body'][_0x417d('0x53')],_0x80a6d0[_0x417d('0x4a')][_0x417d('0x32')]);return db[_0x417d('0x4d')]['create'](_0x80a6d0['body'],{'include':[{'model':db[_0x417d('0x56')],'as':_0x417d('0x57')},{'model':db[_0x417d('0x56')],'as':_0x417d('0x54')}]});}return null;})[_0x417d('0x28')](respondWithResult(_0x510eaa,null))[_0x417d('0x44')](handleError(_0x510eaa,null));};exports[_0x417d('0x58')]=function(_0x38dccf,_0x2754d0,_0x26df1d){var _0x240e06=[_0x417d('0x59'),_0x417d('0x5a'),_0x417d('0x5b'),_0x417d('0x5c'),'close_code','notify',_0x417d('0x5d'),_0x417d('0x5e'),'category'];var _0x45b198=[_0x417d('0x5f'),'made_sla',_0x417d('0x60'),_0x417d('0x61'),_0x417d('0x62'),_0x417d('0x63'),'child_incidents',_0x417d('0x5a'),_0x417d('0x64'),_0x417d('0x65'),'resolved_by',_0x417d('0x66'),_0x417d('0x67'),_0x417d('0x68'),'sys_created_on',_0x417d('0x69'),_0x417d('0x6a'),_0x417d('0x6b'),_0x417d('0x5b'),'order',_0x417d('0x6c'),'closed_at',_0x417d('0x6d'),_0x417d('0x6e'),_0x417d('0x6f'),_0x417d('0x70'),'work_notes_list',_0x417d('0x71'),_0x417d('0x72'),_0x417d('0x73'),'rfc',_0x417d('0x74'),'expected_start',_0x417d('0x75'),_0x417d('0x76'),_0x417d('0x77'),_0x417d('0x78'),_0x417d('0x79'),_0x417d('0x7a'),'caller_id',_0x417d('0x7b'),'subcategory',_0x417d('0x7c'),'short_description',_0x417d('0x7d'),_0x417d('0x7e'),_0x417d('0x7f'),'work_start',_0x417d('0x80'),_0x417d('0x81'),_0x417d('0x82'),_0x417d('0x83'),_0x417d('0x84'),_0x417d('0x85'),_0x417d('0x86'),'close_notes',_0x417d('0x87'),'follow_up',_0x417d('0x88'),_0x417d('0x89'),'contact_type','reopened_by','incident_state',_0x417d('0x8a'),'problem_id',_0x417d('0x8b'),_0x417d('0x8c'),_0x417d('0x8d'),_0x417d('0x8e'),_0x417d('0x5e'),_0x417d('0x8f'),_0x417d('0x90'),_0x417d('0x91'),_0x417d('0x92'),_0x417d('0x93'),_0x417d('0x94'),_0x417d('0x95'),_0x417d('0x96'),_0x417d('0x97'),_0x417d('0x98'),'correlation_id',_0x417d('0x99'),_0x417d('0x9a')];var _0x47283b='';var _0x1fe56d='';var _0x53bcda=[];var _0x1134d9='';var _0x274494='';var _0xe9b526=[];var _0x1c9d98='';var _0x120afb='';var _0x443ebb={};var _0x57228f='';return db[_0x417d('0x2f')][_0x417d('0x51')]({'where':{'id':_0x38dccf['params']['id']},'attributes':['id',_0x417d('0x9b'),_0x417d('0x9c'),_0x417d('0x9d'),_0x417d('0x9e'),_0x417d('0x9f')]})[_0x417d('0x28')](handleEntityNotFound(_0x2754d0,null))[_0x417d('0x28')](function(_0x41c095){if(_0x41c095){_0x57228f=_0x41c095[_0x417d('0x9e')];var _0x2f3a46=_0x57228f[_0x417d('0xa0')](-0x1);if(_0x2f3a46==='/'){_0x57228f=_0x57228f[_0x417d('0xa1')](0x0,_0x57228f[_0x417d('0xa2')](_0x2f3a46));}_0x120afb=util[_0x417d('0xa3')](_0x417d('0xa4'),_0x57228f);_0x1c9d98=util['format'](_0x417d('0xa5'),_0x57228f);_0x443ebb={'user':_0x41c095['username'],'pass':_0x41c095[_0x417d('0x9c')]};var _0x42c0b2={'method':_0x417d('0xa6'),'uri':_0x120afb+_0x417d('0xa7'),'auth':_0x443ebb,'json':!![]};return rp(_0x42c0b2);}})['then'](function(_0x355492){if(_0x355492['result'][_0x417d('0x46')]>0x0){_0x47283b=_0x355492[_0x417d('0xa8')];}console[_0x417d('0xa9')](_0x417d('0xaa'),_0x47283b);_0xe9b526=[];_0x1fe56d=Object[_0x417d('0xab')]([],_0x47283b);_[_0x417d('0xac')](_0x1fe56d,function(_0x58d0b8){return!_0x240e06[_0x417d('0xad')](_0x58d0b8[_0x417d('0x2c')]);});_0x1fe56d['forEach'](function(_0x5205f9){var _0x58e452=createFieldObject(_0x1c9d98,_0x443ebb,_0x5205f9[_0x417d('0xae')],_0x5205f9[_0x417d('0x2c')],_0x5205f9[_0x417d('0xaf')],![]);_0xe9b526['push'](_0x58e452);});return Promise[_0x417d('0xb0')](_0xe9b526);})[_0x417d('0x28')](function(_0xa227b0){_0x53bcda=_0xa227b0;_0x1134d9=Object[_0x417d('0xab')]([],_0x47283b);console['log']('TCL:\x20_object',_0x47283b);_[_0x417d('0xac')](_0x1134d9,function(_0x435797){return _0x45b198[_0x417d('0xad')](_0x435797[_0x417d('0x2c')]);});console[_0x417d('0xa9')](_0x417d('0xb1'),_0x1134d9);_0xe9b526=[];_0x1134d9[_0x417d('0xb2')](function(_0x4852fe){var _0x4c3870=createFieldObject(_0x1c9d98,_0x443ebb,_0x4852fe['internalType'],_0x4852fe['name'],_0x4852fe['label'],!![]);_0xe9b526[_0x417d('0xb3')](_0x4c3870);});return Promise[_0x417d('0xb0')](_0xe9b526);})[_0x417d('0x28')](function(_0x1d8ce8){_0x274494=_0x1d8ce8;var _0x3c0b56=_0x53bcda[_0x417d('0xb4')](_0x274494);return{'count':_0x3c0b56[_0x417d('0x46')],'rows':_0x3c0b56};})[_0x417d('0x28')](respondWithResult(_0x2754d0,null))[_0x417d('0x44')](function(_0x5c747f){console[_0x417d('0xa9')]('ServiceNow\x20error:\x20'+_0x5c747f);var _0x6fb417=_0x38dccf[_0x417d('0x36')][_0x417d('0xb5')]?0x1f4:_0x5c747f[_0x417d('0xb6')]||0x1f4;logger['error'](_0x5c747f['stack']);delete _0x5c747f[_0x417d('0x2c')];if(_0x6fb417===0x191){_0x6fb417=0x190;}_0x2754d0[_0x417d('0x1d')](_0x6fb417)[_0x417d('0xb7')](_0x38dccf[_0x417d('0x36')][_0x417d('0xb5')]?{'message':_0x417d('0xb8'),'statusCode':_0x5c747f[_0x417d('0xb6')]}:_0x5c747f);});};function createFieldObject(_0x2c59d4,_0x4fd9ec,_0x53addd,_0x4d9ecb,_0x1aa060,_0x1512f5){return new Promise(function(_0x2ff126,_0x476d9f){var _0x3a2243={'id':_0x4d9ecb,'name':_0x1aa060,'custom':_0x1512f5};if(_0x53addd===_0x417d('0xb9')){_0x3a2243[_0x417d('0x48')]=[{'name':'True','value':_0x417d('0xba')},{'name':_0x417d('0xbb'),'value':_0x417d('0xbc')}];_0x2ff126(_0x3a2243);}else{var _0x4b7e36={'method':_0x417d('0xa6'),'uri':_0x2c59d4+_0x417d('0xbd')+_0x4d9ecb,'auth':_0x4fd9ec,'json':!![]};return rp(_0x4b7e36)[_0x417d('0x28')](function(_0x3eea49){var _0x2182c8=[];if(_0x3eea49['result'][_0x417d('0x46')]>0x0){_0x3eea49[_0x417d('0xa8')][_0x417d('0xb2')](function(_0xbcbd0a){if(_0xbcbd0a[_0x417d('0xbe')]==='false'){var _0x4be27c={'name':_0xbcbd0a['label'],'value':_0xbcbd0a[_0x417d('0xbf')]};_0x2182c8[_0x417d('0xb3')](_0x4be27c);}});}_0x3a2243[_0x417d('0x48')]=_0x2182c8;if(_0x3a2243[_0x417d('0x48')]['length']>0x0){_0x2ff126(_0x3a2243);}else{if(_0x1512f5==![]){_0x2ff126();}else{_0x2ff126(_0x3a2243);}}});}});}
\ No newline at end of file
+var _0xb806=['sys_id','contact_type','problem_id','activity_due','assigned_to','sla_due','approval','sys_mod_count','reopen_count','sys_tags','escalation','upon_approval','correlation_id','username','email','remoteUri','substring','lastIndexOf','format','%s/api/now/doc/table/schema/','%s/api/now/table/','result','log','incident\x20table\x20objects','assign','remove','includes','forEach','internalType','label','push','all','TCL:\x20exports.getEntityFields\x20->\x20_objectsCustom','concat','ServiceNow\x20error:\x20','statusCode','error','test','Wrong\x20credentials','True','true','GET','value','rimraf','zip-dir','moment','bluebird','mustache','path','sox','ejs','fs-extra','squel','desk.js','to-csv','papaparse','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../mysqldb','../../components/integrations/configuration','sendStatus','status','end','json','offset','undefined','limit','count','set','Content-Range','apply','save','update','then','stack','name','index','map','type','key','model','query','keys','filters','intersection','attributes','hasOwnProperty','sort','where','filter','merge','VIRTUAL','options','ServicenowAccount','findAll','rows','show','params','rawAttributes','fields','length','includeAll','include','find','create','body','catch','destroy','getConfigurations','findOne','ServicenowConfiguration','order','pick','nolimit','AccountId','Subjects','getSubjects','getDescriptions','channel','ServicenowField','getFields','made_sla','knowledge','subcategory','notify','severity','category','caused_by','upon_reject','sys_updated_on','child_incidents','hold_reason','approval_history','number','resolved_by','sys_updated_by','opened_by','user_input','sys_created_by','calendar_stc','closed_at','delivery_plan','impact','active','business_service','priority','sys_domain_path','rfc','time_worked','expected_start','opened_at','business_duration','group_list','reopened_time','resolved_at','approval_set','short_description','close_code','correlation_display','delivery_task','assignment_group','business_stc','additional_assignee_list','description','calendar_duration','sys_class_name','close_notes','closed_by','follow_up','parent_incident'];(function(_0x390b15,_0x30a9f2){var _0x2fe580=function(_0x15dfe1){while(--_0x15dfe1){_0x390b15['push'](_0x390b15['shift']());}};_0x2fe580(++_0x30a9f2);}(_0xb806,0x18b));var _0x6b80=function(_0x49d41c,_0x2bdc35){_0x49d41c=_0x49d41c-0x0;var _0xb64c5f=_0xb806[_0x49d41c];return _0xb64c5f;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x6b80('0x0'));var zipdir=require(_0x6b80('0x1'));var jsonpatch=require('fast-json-patch');var rp=require('request-promise');var moment=require(_0x6b80('0x2'));var BPromise=require(_0x6b80('0x3'));var Mustache=require(_0x6b80('0x4'));var util=require('util');var path=require(_0x6b80('0x5'));var sox=require(_0x6b80('0x6'));var csv=require('to-csv');var ejs=require(_0x6b80('0x7'));var fs=require('fs');var fs_extra=require(_0x6b80('0x8'));var _=require('lodash');var squel=require(_0x6b80('0x9'));var crypto=require('crypto');var jsforce=require('jsforce');var deskjs=require(_0x6b80('0xa'));var toCsv=require(_0x6b80('0xb'));var querystring=require('querystring');var Papa=require(_0x6b80('0xc'));var Redis=require(_0x6b80('0xd'));var authService=require(_0x6b80('0xe'));var qs=require('../../components/parsers/qs');var as=require(_0x6b80('0xf'));var hardwareService=require(_0x6b80('0x10'));var logger=require(_0x6b80('0x11'))(_0x6b80('0x12'));var utils=require(_0x6b80('0x13'));var config=require(_0x6b80('0x14'));var licenseUtil=require('../../config/license/util');var db=require(_0x6b80('0x15'))['db'];var integrations=require(_0x6b80('0x16'));function respondWithStatusCode(_0x699b24,_0x1d319b){_0x1d319b=_0x1d319b||0xcc;return function(_0x47d1f5){if(_0x47d1f5){return _0x699b24[_0x6b80('0x17')](_0x1d319b);}return _0x699b24[_0x6b80('0x18')](_0x1d319b)[_0x6b80('0x19')]();};}function respondWithResult(_0x3bf5d9,_0x4fa89b){_0x4fa89b=_0x4fa89b||0xc8;return function(_0x376469){if(_0x376469){return _0x3bf5d9[_0x6b80('0x18')](_0x4fa89b)[_0x6b80('0x1a')](_0x376469);}};}function respondWithFilteredResult(_0x307ba7,_0x4c9f54){return function(_0x35110a){if(_0x35110a){var _0x58b964=typeof _0x4c9f54[_0x6b80('0x1b')]===_0x6b80('0x1c')&&typeof _0x4c9f54[_0x6b80('0x1d')]===_0x6b80('0x1c');var _0x72d637=_0x35110a[_0x6b80('0x1e')];var _0x40c567=_0x58b964?0x0:_0x4c9f54['offset'];var _0x560ff2=_0x58b964?_0x35110a[_0x6b80('0x1e')]:_0x4c9f54['offset']+_0x4c9f54['limit'];var _0xd6b71e;if(_0x560ff2>=_0x72d637){_0x560ff2=_0x72d637;_0xd6b71e=0xc8;}else{_0xd6b71e=0xce;}_0x307ba7[_0x6b80('0x18')](_0xd6b71e);return _0x307ba7[_0x6b80('0x1f')](_0x6b80('0x20'),_0x40c567+'-'+_0x560ff2+'/'+_0x72d637)['json'](_0x35110a);}return null;};}function patchUpdates(_0x1dfae5){return function(_0x6a9134){try{jsonpatch[_0x6b80('0x21')](_0x6a9134,_0x1dfae5,!![]);}catch(_0x453df0){return BPromise['reject'](_0x453df0);}return _0x6a9134[_0x6b80('0x22')]();};}function saveUpdates(_0x500563,_0x1d2bfe){return function(_0x57f594){if(_0x57f594){return _0x57f594[_0x6b80('0x23')](_0x500563)['then'](function(_0x2392c9){return _0x2392c9;});}return null;};}function removeEntity(_0x3bd8c9,_0x4776e9){return function(_0x54050e){if(_0x54050e){return _0x54050e['destroy']()[_0x6b80('0x24')](function(){_0x3bd8c9[_0x6b80('0x18')](0xcc)[_0x6b80('0x19')]();});}};}function handleEntityNotFound(_0x184865,_0x5d3c98){return function(_0x416076){if(!_0x416076){_0x184865[_0x6b80('0x17')](0x194);}return _0x416076;};}function handleError(_0x21168f,_0x1c7a3c){_0x1c7a3c=_0x1c7a3c||0x1f4;return function(_0x347fe1){logger['error'](_0x347fe1[_0x6b80('0x25')]);if(_0x347fe1['name']){delete _0x347fe1[_0x6b80('0x26')];}_0x21168f['status'](_0x1c7a3c)['send'](_0x347fe1);};}exports[_0x6b80('0x27')]=function(_0xb67220,_0x20831d){var _0x364f6e={},_0x299040={},_0x3e66cf={'count':0x0,'rows':[]};var _0x1d5fab=_[_0x6b80('0x28')](db['ServicenowAccount']['rawAttributes'],function(_0x1ecd9b){return{'name':_0x1ecd9b['fieldName'],'type':_0x1ecd9b[_0x6b80('0x29')][_0x6b80('0x2a')]};});_0x299040[_0x6b80('0x2b')]=_[_0x6b80('0x28')](_0x1d5fab,_0x6b80('0x26'));_0x299040[_0x6b80('0x2c')]=_[_0x6b80('0x2d')](_0xb67220[_0x6b80('0x2c')]);_0x299040[_0x6b80('0x2e')]=_['intersection'](_0x299040[_0x6b80('0x2b')],_0x299040[_0x6b80('0x2c')]);_0x364f6e['attributes']=_[_0x6b80('0x2f')](_0x299040['model'],qs['fields'](_0xb67220[_0x6b80('0x2c')]['fields']));_0x364f6e[_0x6b80('0x30')]=_0x364f6e[_0x6b80('0x30')]['length']?_0x364f6e[_0x6b80('0x30')]:_0x299040[_0x6b80('0x2b')];if(!_0xb67220[_0x6b80('0x2c')][_0x6b80('0x31')]('nolimit')){_0x364f6e[_0x6b80('0x1d')]=qs['limit'](_0xb67220[_0x6b80('0x2c')]['limit']);_0x364f6e[_0x6b80('0x1b')]=qs[_0x6b80('0x1b')](_0xb67220['query']['offset']);}_0x364f6e['order']=qs['sort'](_0xb67220['query'][_0x6b80('0x32')]);_0x364f6e[_0x6b80('0x33')]=qs[_0x6b80('0x2e')](_['pick'](_0xb67220[_0x6b80('0x2c')],_0x299040[_0x6b80('0x2e')]),_0x1d5fab);if(_0xb67220[_0x6b80('0x2c')][_0x6b80('0x34')]){_0x364f6e['where']=_[_0x6b80('0x35')](_0x364f6e['where'],{'$or':_[_0x6b80('0x28')](_0x1d5fab,function(_0x42a306){if(_0x42a306[_0x6b80('0x29')]!==_0x6b80('0x36')){var _0x2f3693={};_0x2f3693[_0x42a306[_0x6b80('0x26')]]={'$like':'%'+_0xb67220[_0x6b80('0x2c')][_0x6b80('0x34')]+'%'};return _0x2f3693;}})});}_0x364f6e=_[_0x6b80('0x35')]({},_0x364f6e,_0xb67220[_0x6b80('0x37')]);var _0x302f4e={'where':_0x364f6e[_0x6b80('0x33')]};return db[_0x6b80('0x38')][_0x6b80('0x1e')](_0x302f4e)[_0x6b80('0x24')](function(_0x4216e9){_0x3e66cf[_0x6b80('0x1e')]=_0x4216e9;if(_0xb67220[_0x6b80('0x2c')]['includeAll']){_0x364f6e['include']=[{'all':!![]}];}return db[_0x6b80('0x38')][_0x6b80('0x39')](_0x364f6e);})['then'](function(_0x336879){_0x3e66cf[_0x6b80('0x3a')]=_0x336879;return _0x3e66cf;})[_0x6b80('0x24')](respondWithFilteredResult(_0x20831d,_0x364f6e))['catch'](handleError(_0x20831d,null));};exports[_0x6b80('0x3b')]=function(_0xda06b0,_0x16c4bd){var _0x31e106={'raw':![],'where':{'id':_0xda06b0[_0x6b80('0x3c')]['id']}},_0x3c0481={};_0x3c0481[_0x6b80('0x2b')]=_[_0x6b80('0x2d')](db['ServicenowAccount'][_0x6b80('0x3d')]);_0x3c0481[_0x6b80('0x2c')]=_[_0x6b80('0x2d')](_0xda06b0['query']);_0x3c0481[_0x6b80('0x2e')]=_[_0x6b80('0x2f')](_0x3c0481['model'],_0x3c0481['query']);_0x31e106['attributes']=_['intersection'](_0x3c0481[_0x6b80('0x2b')],qs[_0x6b80('0x3e')](_0xda06b0['query']['fields']));_0x31e106[_0x6b80('0x30')]=_0x31e106[_0x6b80('0x30')][_0x6b80('0x3f')]?_0x31e106['attributes']:_0x3c0481[_0x6b80('0x2b')];if(_0xda06b0['query'][_0x6b80('0x40')]){_0x31e106[_0x6b80('0x41')]=[{'all':!![]}];}_0x31e106=_[_0x6b80('0x35')]({},_0x31e106,_0xda06b0[_0x6b80('0x37')]);return db[_0x6b80('0x38')][_0x6b80('0x42')](_0x31e106)[_0x6b80('0x24')](handleEntityNotFound(_0x16c4bd,null))[_0x6b80('0x24')](respondWithResult(_0x16c4bd,null))['catch'](handleError(_0x16c4bd,null));};exports[_0x6b80('0x43')]=function(_0x4ca583,_0x1d2053){return db['ServicenowAccount'][_0x6b80('0x43')](_0x4ca583[_0x6b80('0x44')],{})[_0x6b80('0x24')](respondWithResult(_0x1d2053,0xc9))[_0x6b80('0x45')](handleError(_0x1d2053,null));};exports[_0x6b80('0x23')]=function(_0x2e3ff7,_0x5c1b91){if(_0x2e3ff7[_0x6b80('0x44')]['id']){delete _0x2e3ff7[_0x6b80('0x44')]['id'];}return db[_0x6b80('0x38')][_0x6b80('0x42')]({'where':{'id':_0x2e3ff7[_0x6b80('0x3c')]['id']}})[_0x6b80('0x24')](handleEntityNotFound(_0x5c1b91,null))[_0x6b80('0x24')](saveUpdates(_0x2e3ff7[_0x6b80('0x44')],null))[_0x6b80('0x24')](respondWithResult(_0x5c1b91,null))['catch'](handleError(_0x5c1b91,null));};exports[_0x6b80('0x46')]=function(_0x166fe1,_0x4ff320){return db[_0x6b80('0x38')]['find']({'where':{'id':_0x166fe1[_0x6b80('0x3c')]['id']}})[_0x6b80('0x24')](handleEntityNotFound(_0x4ff320,null))[_0x6b80('0x24')](removeEntity(_0x4ff320,null))[_0x6b80('0x45')](handleError(_0x4ff320,null));};exports[_0x6b80('0x47')]=function(_0x378c66,_0x4af3c0,_0x21ce33){var _0x27719f={};var _0x40b653={};var _0x103f8d;var _0x5f3881;return db[_0x6b80('0x38')][_0x6b80('0x48')]({'where':{'id':_0x378c66['params']['id']}})[_0x6b80('0x24')](handleEntityNotFound(_0x4af3c0,null))[_0x6b80('0x24')](function(_0xe8ad21){if(_0xe8ad21){_0x103f8d=_0xe8ad21;_0x40b653[_0x6b80('0x2b')]=_['keys'](db[_0x6b80('0x49')][_0x6b80('0x3d')]);_0x40b653[_0x6b80('0x2c')]=_[_0x6b80('0x2d')](_0x378c66[_0x6b80('0x2c')]);_0x40b653[_0x6b80('0x2e')]=_['intersection'](_0x40b653['model'],_0x40b653[_0x6b80('0x2c')]);_0x27719f[_0x6b80('0x30')]=_['intersection'](_0x40b653['model'],qs[_0x6b80('0x3e')](_0x378c66[_0x6b80('0x2c')][_0x6b80('0x3e')]));_0x27719f[_0x6b80('0x30')]=_0x27719f[_0x6b80('0x30')]['length']?_0x27719f[_0x6b80('0x30')]:_0x40b653['model'];_0x27719f[_0x6b80('0x4a')]=qs[_0x6b80('0x32')](_0x378c66[_0x6b80('0x2c')][_0x6b80('0x32')]);_0x27719f[_0x6b80('0x33')]=qs['filters'](_[_0x6b80('0x4b')](_0x378c66['query'],_0x40b653[_0x6b80('0x2e')]));if(_0x378c66[_0x6b80('0x2c')][_0x6b80('0x34')]){_0x27719f[_0x6b80('0x33')]=_[_0x6b80('0x35')](_0x27719f[_0x6b80('0x33')],{'$or':_[_0x6b80('0x28')](_0x27719f[_0x6b80('0x30')],function(_0x13fee6){var _0x1d251b={};_0x1d251b[_0x13fee6]={'$like':'%'+_0x378c66[_0x6b80('0x2c')][_0x6b80('0x34')]+'%'};return _0x1d251b;})});}_0x27719f=_[_0x6b80('0x35')]({},_0x27719f,_0x378c66[_0x6b80('0x37')]);return _0x103f8d['getConfigurations'](_0x27719f);}})[_0x6b80('0x24')](function(_0x5e1cbd){if(_0x5e1cbd){_0x5f3881=_0x5e1cbd[_0x6b80('0x3f')];if(!_0x378c66[_0x6b80('0x2c')][_0x6b80('0x31')](_0x6b80('0x4c'))){_0x27719f[_0x6b80('0x1d')]=qs[_0x6b80('0x1d')](_0x378c66['query']['limit']);_0x27719f[_0x6b80('0x1b')]=qs[_0x6b80('0x1b')](_0x378c66['query'][_0x6b80('0x1b')]);}return _0x103f8d['getConfigurations'](_0x27719f);}})[_0x6b80('0x24')](function(_0x5c490f){if(_0x5c490f){return _0x5c490f?{'count':_0x5f3881,'rows':_0x5c490f}:null;}})[_0x6b80('0x24')](respondWithResult(_0x4af3c0,null))[_0x6b80('0x45')](handleError(_0x4af3c0,null));};exports['addConfiguration']=function(_0x51f27c,_0x2a8c5d,_0x1f244c){if(_0x51f27c[_0x6b80('0x44')]['id']){delete _0x51f27c[_0x6b80('0x44')]['id'];}return db[_0x6b80('0x38')]['findOne']({'where':{'id':_0x51f27c[_0x6b80('0x3c')]['id']}})[_0x6b80('0x24')](handleEntityNotFound(_0x2a8c5d,null))['then'](function(_0x2e7043){if(_0x2e7043){_0x51f27c[_0x6b80('0x44')][_0x6b80('0x4d')]=_0x2e7043['id'];_0x51f27c[_0x6b80('0x44')][_0x6b80('0x4e')]=integrations[_0x6b80('0x4f')](_0x51f27c[_0x6b80('0x44')]['channel'],_0x51f27c[_0x6b80('0x44')]['type']);_0x51f27c[_0x6b80('0x44')]['Descriptions']=integrations[_0x6b80('0x50')](_0x51f27c['body'][_0x6b80('0x51')],_0x51f27c[_0x6b80('0x44')][_0x6b80('0x29')]);return db['ServicenowConfiguration'][_0x6b80('0x43')](_0x51f27c[_0x6b80('0x44')],{'include':[{'model':db[_0x6b80('0x52')],'as':_0x6b80('0x4e')},{'model':db[_0x6b80('0x52')],'as':'Descriptions'}]});}return null;})['then'](respondWithResult(_0x2a8c5d,null))['catch'](handleError(_0x2a8c5d,null));};exports[_0x6b80('0x53')]=function(_0x4772c4,_0x236c67,_0x546900){var _0x26bea5=[_0x6b80('0x54'),'hold_reason',_0x6b80('0x55'),_0x6b80('0x56'),'close_code',_0x6b80('0x57'),'incident_state',_0x6b80('0x58'),_0x6b80('0x59')];var _0x43b763=['parent',_0x6b80('0x54'),_0x6b80('0x5a'),'watch_list',_0x6b80('0x5b'),_0x6b80('0x5c'),_0x6b80('0x5d'),_0x6b80('0x5e'),_0x6b80('0x5f'),_0x6b80('0x60'),_0x6b80('0x61'),_0x6b80('0x62'),_0x6b80('0x63'),_0x6b80('0x64'),'sys_created_on','sys_domain','state',_0x6b80('0x65'),_0x6b80('0x55'),'order',_0x6b80('0x66'),_0x6b80('0x67'),'cmdb_ci',_0x6b80('0x68'),_0x6b80('0x69'),_0x6b80('0x6a'),'work_notes_list',_0x6b80('0x6b'),_0x6b80('0x6c'),_0x6b80('0x6d'),_0x6b80('0x6e'),_0x6b80('0x6f'),_0x6b80('0x70'),_0x6b80('0x71'),_0x6b80('0x72'),_0x6b80('0x73'),'work_end',_0x6b80('0x74'),_0x6b80('0x75'),'caller_id',_0x6b80('0x76'),_0x6b80('0x56'),'work_notes',_0x6b80('0x77'),_0x6b80('0x78'),_0x6b80('0x79'),_0x6b80('0x7a'),'work_start',_0x6b80('0x7b'),_0x6b80('0x7c'),_0x6b80('0x7d'),_0x6b80('0x7e'),_0x6b80('0x7f'),_0x6b80('0x57'),_0x6b80('0x80'),_0x6b80('0x81'),_0x6b80('0x82'),_0x6b80('0x83'),_0x6b80('0x84'),_0x6b80('0x85'),_0x6b80('0x86'),'reopened_by','incident_state','urgency',_0x6b80('0x87'),'company','reassignment_count',_0x6b80('0x88'),_0x6b80('0x89'),_0x6b80('0x58'),'comments',_0x6b80('0x8a'),_0x6b80('0x8b'),'comments_and_work_notes','due_date',_0x6b80('0x8c'),_0x6b80('0x8d'),_0x6b80('0x8e'),_0x6b80('0x8f'),_0x6b80('0x90'),_0x6b80('0x91'),'location',_0x6b80('0x59')];var _0x5ddfa9='';var _0x77c5d0='';var _0x11eb6f=[];var _0x546dc6='';var _0x5b365c='';var _0x3a3678=[];var _0x49a561='';var _0x1b4c60='';var _0x40e079={};var _0x524504='';return db['ServicenowAccount'][_0x6b80('0x48')]({'where':{'id':_0x4772c4['params']['id']},'attributes':['id',_0x6b80('0x92'),'password',_0x6b80('0x93'),_0x6b80('0x94'),'serverUrl']})['then'](handleEntityNotFound(_0x236c67,null))[_0x6b80('0x24')](function(_0x2d9836){if(_0x2d9836){_0x524504=_0x2d9836[_0x6b80('0x94')];var _0x1068e0=_0x524504['slice'](-0x1);if(_0x1068e0==='/'){_0x524504=_0x524504[_0x6b80('0x95')](0x0,_0x524504[_0x6b80('0x96')](_0x1068e0));}_0x1b4c60=util[_0x6b80('0x97')](_0x6b80('0x98'),_0x524504);_0x49a561=util['format'](_0x6b80('0x99'),_0x524504);_0x40e079={'user':_0x2d9836[_0x6b80('0x92')],'pass':_0x2d9836['password']};var _0x52a7a6={'method':'GET','uri':_0x1b4c60+'incident?sysparm_display_value=all','auth':_0x40e079,'json':!![]};return rp(_0x52a7a6);}})[_0x6b80('0x24')](function(_0x8d8a78){if(_0x8d8a78[_0x6b80('0x9a')][_0x6b80('0x3f')]>0x0){_0x5ddfa9=_0x8d8a78[_0x6b80('0x9a')];}console[_0x6b80('0x9b')](_0x6b80('0x9c'),_0x5ddfa9);_0x3a3678=[];_0x77c5d0=Object[_0x6b80('0x9d')]([],_0x5ddfa9);_[_0x6b80('0x9e')](_0x77c5d0,function(_0x814757){return!_0x26bea5[_0x6b80('0x9f')](_0x814757[_0x6b80('0x26')]);});_0x77c5d0[_0x6b80('0xa0')](function(_0x55abca){var _0x1bc226=createFieldObject(_0x49a561,_0x40e079,_0x55abca[_0x6b80('0xa1')],_0x55abca[_0x6b80('0x26')],_0x55abca[_0x6b80('0xa2')],![]);_0x3a3678[_0x6b80('0xa3')](_0x1bc226);});return Promise[_0x6b80('0xa4')](_0x3a3678);})[_0x6b80('0x24')](function(_0x939132){_0x11eb6f=_0x939132;_0x546dc6=Object[_0x6b80('0x9d')]([],_0x5ddfa9);console[_0x6b80('0x9b')]('TCL:\x20_object',_0x5ddfa9);_['remove'](_0x546dc6,function(_0x15c6a1){return _0x43b763[_0x6b80('0x9f')](_0x15c6a1[_0x6b80('0x26')]);});console[_0x6b80('0x9b')](_0x6b80('0xa5'),_0x546dc6);_0x3a3678=[];_0x546dc6[_0x6b80('0xa0')](function(_0x40923c){var _0x10508c=createFieldObject(_0x49a561,_0x40e079,_0x40923c[_0x6b80('0xa1')],_0x40923c['name'],_0x40923c['label'],!![]);_0x3a3678['push'](_0x10508c);});return Promise[_0x6b80('0xa4')](_0x3a3678);})[_0x6b80('0x24')](function(_0x5dc7d1){_0x5b365c=_0x5dc7d1;var _0x331f7c=_0x11eb6f[_0x6b80('0xa6')](_0x5b365c);return{'count':_0x331f7c[_0x6b80('0x3f')],'rows':_0x331f7c};})[_0x6b80('0x24')](respondWithResult(_0x236c67,null))['catch'](function(_0x328f54){console[_0x6b80('0x9b')](_0x6b80('0xa7')+_0x328f54);var _0x451623=_0x4772c4[_0x6b80('0x2c')]['test']?0x1f4:_0x328f54[_0x6b80('0xa8')]||0x1f4;logger[_0x6b80('0xa9')](_0x328f54[_0x6b80('0x25')]);delete _0x328f54[_0x6b80('0x26')];if(_0x451623===0x191){_0x451623=0x190;}_0x236c67['status'](_0x451623)['send'](_0x4772c4['query'][_0x6b80('0xaa')]?{'message':_0x6b80('0xab'),'statusCode':_0x328f54[_0x6b80('0xa8')]}:_0x328f54);});};function createFieldObject(_0x3f0a5e,_0x1d84d5,_0x1ec1b4,_0x3a47c3,_0x162a4d,_0x59b0f2){return new Promise(function(_0x4a2ba5,_0x5a765f){var _0x8c31e7={'id':_0x3a47c3,'name':_0x162a4d,'custom':_0x59b0f2};if(_0x1ec1b4==='boolean'){_0x8c31e7[_0x6b80('0x37')]=[{'name':_0x6b80('0xac'),'value':_0x6b80('0xad')},{'name':'False','value':'false'}];_0x4a2ba5(_0x8c31e7);}else{var _0x3ccd15={'method':_0x6b80('0xae'),'uri':_0x3f0a5e+'sys_choice?sysparm_query=name=incident^element='+_0x3a47c3,'auth':_0x1d84d5,'json':!![]};return rp(_0x3ccd15)[_0x6b80('0x24')](function(_0x1aa276){var _0x4c0840=[];if(_0x1aa276[_0x6b80('0x9a')][_0x6b80('0x3f')]>0x0){_0x1aa276['result'][_0x6b80('0xa0')](function(_0xb82551){if(_0xb82551['inactive']==='false'){var _0x1ebb13={'name':_0xb82551[_0x6b80('0xa2')],'value':_0xb82551[_0x6b80('0xaf')]};_0x4c0840[_0x6b80('0xa3')](_0x1ebb13);}});}_0x8c31e7[_0x6b80('0x37')]=_0x4c0840;if(_0x8c31e7[_0x6b80('0x37')][_0x6b80('0x3f')]>0x0){_0x4a2ba5(_0x8c31e7);}else{if(_0x59b0f2==![]){_0x4a2ba5();}else{_0x4a2ba5(_0x8c31e7);}}});}});}
\ No newline at end of file
index 4964899..86466ee 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x687b=['./intServicenowAccount.attributes','../../components/integrations/configuration','exports','define','int_servicenow_accounts','lodash','util','../../config/logger','api','request-promise','path','rimraf','../../config/environment'];(function(_0x159eff,_0x5d5357){var _0x3fd91f=function(_0x10d3f5){while(--_0x10d3f5){_0x159eff['push'](_0x159eff['shift']());}};_0x3fd91f(++_0x5d5357);}(_0x687b,0x14a));var _0xb687=function(_0x32ed89,_0x11d953){_0x32ed89=_0x32ed89-0x0;var _0x262961=_0x687b[_0x32ed89];return _0x262961;};'use strict';var _=require(_0xb687('0x0'));var util=require(_0xb687('0x1'));var logger=require(_0xb687('0x2'))(_0xb687('0x3'));var moment=require('moment');var BPromise=require('bluebird');var rp=require(_0xb687('0x4'));var fs=require('fs');var path=require(_0xb687('0x5'));var rimraf=require(_0xb687('0x6'));var config=require(_0xb687('0x7'));var attributes=require(_0xb687('0x8'));var integrations=require(_0xb687('0x9'));module[_0xb687('0xa')]=function(_0xf43a1f,_0x47ffea){return _0xf43a1f[_0xb687('0xb')]('ServicenowAccount',attributes,{'tableName':_0xb687('0xc'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xbd51=['./intServicenowAccount.attributes','../../components/integrations/configuration','exports','define','ServicenowAccount','int_servicenow_accounts','lodash','../../config/logger','api','moment','bluebird'];(function(_0x3d77db,_0x53511){var _0x273a73=function(_0x8bf0c2){while(--_0x8bf0c2){_0x3d77db['push'](_0x3d77db['shift']());}};_0x273a73(++_0x53511);}(_0xbd51,0x1a8));var _0x1bd5=function(_0x2ea67e,_0x415c5b){_0x2ea67e=_0x2ea67e-0x0;var _0x23e254=_0xbd51[_0x2ea67e];return _0x23e254;};'use strict';var _=require(_0x1bd5('0x0'));var util=require('util');var logger=require(_0x1bd5('0x1'))(_0x1bd5('0x2'));var moment=require(_0x1bd5('0x3'));var BPromise=require(_0x1bd5('0x4'));var rp=require('request-promise');var fs=require('fs');var path=require('path');var rimraf=require('rimraf');var config=require('../../config/environment');var attributes=require(_0x1bd5('0x5'));var integrations=require(_0x1bd5('0x6'));module[_0x1bd5('0x7')]=function(_0x59ddfb,_0x29abea){return _0x59ddfb[_0x1bd5('0x8')](_0x1bd5('0x9'),attributes,{'tableName':_0x1bd5('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index cc1342e..90ee51a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x153b=['rpc','../../config/environment','jayson/promise','http','info','ServicenowAccount,\x20%s,\x20%s','request\x20sent','ServicenowAccount,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','GetServicenowAccount','findAll','options','attributes','map','include','model','then','debug','find','where','ShowServicenowAccount','lodash','util','bluebird','randomstring','../../mysqldb','../../config/utils'];(function(_0x312fb6,_0x49b5aa){var _0x5536f1=function(_0x3e2848){while(--_0x3e2848){_0x312fb6['push'](_0x312fb6['shift']());}};_0x5536f1(++_0x49b5aa);}(_0x153b,0x13a));var _0xb153=function(_0xa15b7,_0x70b2e1){_0xa15b7=_0xa15b7-0x0;var _0x2b9af5=_0x153b[_0xa15b7];return _0x2b9af5;};'use strict';var _=require(_0xb153('0x0'));var util=require(_0xb153('0x1'));var moment=require('moment');var BPromise=require(_0xb153('0x2'));var rs=require(_0xb153('0x3'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0xb153('0x4'))['db'];var utils=require(_0xb153('0x5'));var logger=require('../../config/logger')(_0xb153('0x6'));var config=require(_0xb153('0x7'));var jayson=require(_0xb153('0x8'));var client=jayson['client'][_0xb153('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x320ac9,_0x10495d,_0x2f5981){return new BPromise(function(_0x36c8f3,_0x71ed8d){return client['request'](_0x320ac9,_0x2f5981)['then'](function(_0x5c792c){logger[_0xb153('0xa')](_0xb153('0xb'),_0x10495d,_0xb153('0xc'));logger['debug'](_0xb153('0xd'),_0x10495d,_0xb153('0xc'),JSON[_0xb153('0xe')](_0x5c792c));if(_0x5c792c[_0xb153('0xf')]){if(_0x5c792c[_0xb153('0xf')][_0xb153('0x10')]===0x1f4){logger['error'](_0xb153('0xb'),_0x10495d,_0x5c792c[_0xb153('0xf')][_0xb153('0x11')]);return _0x71ed8d(_0x5c792c['error'][_0xb153('0x11')]);}logger[_0xb153('0xf')]('ServicenowAccount,\x20%s,\x20%s',_0x10495d,_0x5c792c[_0xb153('0xf')]['message']);return _0x36c8f3(_0x5c792c['error']['message']);}else{logger[_0xb153('0xa')](_0xb153('0xb'),_0x10495d,_0xb153('0xc'));_0x36c8f3(_0x5c792c[_0xb153('0x12')]['message']);}})[_0xb153('0x13')](function(_0x1a5af3){logger[_0xb153('0xf')](_0xb153('0xb'),_0x10495d,_0x1a5af3);_0x71ed8d(_0x1a5af3);});});}exports[_0xb153('0x14')]=function(_0x46de57){var _0x44f1d4=this;return new Promise(function(_0x3a74e2,_0x527033){return db['ServicenowAccount'][_0xb153('0x15')]({'raw':_0x46de57[_0xb153('0x16')]?_0x46de57['options']['raw']===undefined?!![]:![]:!![],'where':_0x46de57['options']?_0x46de57[_0xb153('0x16')]['where']||null:null,'attributes':_0x46de57[_0xb153('0x16')]?_0x46de57[_0xb153('0x16')][_0xb153('0x17')]||null:null,'limit':_0x46de57['options']?_0x46de57[_0xb153('0x16')]['limit']||null:null,'include':_0x46de57[_0xb153('0x16')]?_0x46de57[_0xb153('0x16')]['include']?_[_0xb153('0x18')](_0x46de57[_0xb153('0x16')][_0xb153('0x19')],function(_0x440671){return{'model':db[_0x440671[_0xb153('0x1a')]],'as':_0x440671['as'],'attributes':_0x440671[_0xb153('0x17')],'include':_0x440671[_0xb153('0x19')]?_[_0xb153('0x18')](_0x440671[_0xb153('0x19')],function(_0x2879db){return{'model':db[_0x2879db[_0xb153('0x1a')]],'as':_0x2879db['as'],'attributes':_0x2879db[_0xb153('0x17')],'include':_0x2879db['include']?_[_0xb153('0x18')](_0x2879db[_0xb153('0x19')],function(_0x4c131a){return{'model':db[_0x4c131a['model']],'as':_0x4c131a['as'],'attributes':_0x4c131a[_0xb153('0x17')]};}):[]};}):[]};}):[]:[]})[_0xb153('0x1b')](function(_0x2cfd98){logger[_0xb153('0xa')](_0xb153('0x14'),_0x46de57);logger[_0xb153('0x1c')](_0xb153('0x14'),_0x46de57,JSON['stringify'](_0x2cfd98));_0x3a74e2(_0x2cfd98);})[_0xb153('0x13')](function(_0x42e90c){logger[_0xb153('0xf')](_0xb153('0x14'),_0x42e90c[_0xb153('0x11')],_0x46de57);_0x527033(_0x44f1d4[_0xb153('0xf')](0x1f4,_0x42e90c[_0xb153('0x11')]));});});};exports['ShowServicenowAccount']=function(_0x606f0e){var _0x54be5c=this;return new Promise(function(_0x25ad8e,_0x2152d1){return db['ServicenowAccount'][_0xb153('0x1d')]({'raw':_0x606f0e[_0xb153('0x16')]?_0x606f0e[_0xb153('0x16')]['raw']===undefined?!![]:![]:!![],'where':_0x606f0e['options']?_0x606f0e['options'][_0xb153('0x1e')]||null:null,'attributes':_0x606f0e[_0xb153('0x16')]?_0x606f0e[_0xb153('0x16')]['attributes']||null:null,'include':_0x606f0e[_0xb153('0x16')]?_0x606f0e[_0xb153('0x16')][_0xb153('0x19')]?_['map'](_0x606f0e[_0xb153('0x16')]['include'],function(_0x466023){return{'model':db[_0x466023[_0xb153('0x1a')]],'as':_0x466023['as'],'attributes':_0x466023[_0xb153('0x17')],'include':_0x466023[_0xb153('0x19')]?_[_0xb153('0x18')](_0x466023[_0xb153('0x19')],function(_0x1c0ad8){return{'model':db[_0x1c0ad8[_0xb153('0x1a')]],'as':_0x1c0ad8['as'],'attributes':_0x1c0ad8[_0xb153('0x17')],'include':_0x1c0ad8[_0xb153('0x19')]?_[_0xb153('0x18')](_0x1c0ad8[_0xb153('0x19')],function(_0x1a423d){return{'model':db[_0x1a423d[_0xb153('0x1a')]],'as':_0x1a423d['as'],'attributes':_0x1a423d[_0xb153('0x17')]};}):[]};}):[]};}):[]:[]})[_0xb153('0x1b')](function(_0xbe9589){logger['info'](_0xb153('0x1f'),_0x606f0e);logger[_0xb153('0x1c')](_0xb153('0x1f'),_0x606f0e,JSON[_0xb153('0xe')](_0xbe9589));_0x25ad8e(_0xbe9589);})[_0xb153('0x13')](function(_0x316d98){logger[_0xb153('0xf')](_0xb153('0x1f'),_0x316d98[_0xb153('0x11')],_0x606f0e);_0x2152d1(_0x54be5c[_0xb153('0xf')](0x1f4,_0x316d98[_0xb153('0x11')]));});});};
\ No newline at end of file
+var _0x6e8f=['stringify','error','code','message','ServicenowAccount,\x20%s,\x20%s','result','catch','GetServicenowAccount','ServicenowAccount','findAll','options','raw','where','limit','include','model','attributes','map','debug','ShowServicenowAccount','find','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','client','http','request','then','info','ServicenowAccount,\x20%s,\x20%s,\x20%s','request\x20sent'];(function(_0x55e3d1,_0x5a8425){var _0x2ac29d=function(_0x21fbe2){while(--_0x21fbe2){_0x55e3d1['push'](_0x55e3d1['shift']());}};_0x2ac29d(++_0x5a8425);}(_0x6e8f,0x19b));var _0xf6e8=function(_0x205ade,_0x17ad97){_0x205ade=_0x205ade-0x0;var _0x2027a5=_0x6e8f[_0x205ade];return _0x2027a5;};'use strict';var _=require(_0xf6e8('0x0'));var util=require(_0xf6e8('0x1'));var moment=require(_0xf6e8('0x2'));var BPromise=require(_0xf6e8('0x3'));var rs=require(_0xf6e8('0x4'));var fs=require('fs');var Redis=require(_0xf6e8('0x5'));var db=require(_0xf6e8('0x6'))['db'];var utils=require(_0xf6e8('0x7'));var logger=require(_0xf6e8('0x8'))(_0xf6e8('0x9'));var config=require(_0xf6e8('0xa'));var jayson=require('jayson/promise');var client=jayson[_0xf6e8('0xb')][_0xf6e8('0xc')]({'port':0x232a});function respondWithRpcPromise(_0x25895e,_0x460d53,_0x3138d9){return new BPromise(function(_0x5624f4,_0x1ccc82){return client[_0xf6e8('0xd')](_0x25895e,_0x3138d9)[_0xf6e8('0xe')](function(_0x121803){logger[_0xf6e8('0xf')]('ServicenowAccount,\x20%s,\x20%s',_0x460d53,'request\x20sent');logger['debug'](_0xf6e8('0x10'),_0x460d53,_0xf6e8('0x11'),JSON[_0xf6e8('0x12')](_0x121803));if(_0x121803[_0xf6e8('0x13')]){if(_0x121803[_0xf6e8('0x13')][_0xf6e8('0x14')]===0x1f4){logger[_0xf6e8('0x13')]('ServicenowAccount,\x20%s,\x20%s',_0x460d53,_0x121803['error'][_0xf6e8('0x15')]);return _0x1ccc82(_0x121803[_0xf6e8('0x13')][_0xf6e8('0x15')]);}logger[_0xf6e8('0x13')](_0xf6e8('0x16'),_0x460d53,_0x121803['error'][_0xf6e8('0x15')]);return _0x5624f4(_0x121803['error'][_0xf6e8('0x15')]);}else{logger[_0xf6e8('0xf')](_0xf6e8('0x16'),_0x460d53,_0xf6e8('0x11'));_0x5624f4(_0x121803[_0xf6e8('0x17')][_0xf6e8('0x15')]);}})[_0xf6e8('0x18')](function(_0x2d19c3){logger[_0xf6e8('0x13')](_0xf6e8('0x16'),_0x460d53,_0x2d19c3);_0x1ccc82(_0x2d19c3);});});}exports[_0xf6e8('0x19')]=function(_0x32b41e){var _0x5a81b3=this;return new Promise(function(_0x491deb,_0x29949c){return db[_0xf6e8('0x1a')][_0xf6e8('0x1b')]({'raw':_0x32b41e[_0xf6e8('0x1c')]?_0x32b41e['options'][_0xf6e8('0x1d')]===undefined?!![]:![]:!![],'where':_0x32b41e['options']?_0x32b41e[_0xf6e8('0x1c')][_0xf6e8('0x1e')]||null:null,'attributes':_0x32b41e[_0xf6e8('0x1c')]?_0x32b41e[_0xf6e8('0x1c')]['attributes']||null:null,'limit':_0x32b41e[_0xf6e8('0x1c')]?_0x32b41e[_0xf6e8('0x1c')][_0xf6e8('0x1f')]||null:null,'include':_0x32b41e[_0xf6e8('0x1c')]?_0x32b41e[_0xf6e8('0x1c')][_0xf6e8('0x20')]?_['map'](_0x32b41e['options']['include'],function(_0x18a7dc){return{'model':db[_0x18a7dc[_0xf6e8('0x21')]],'as':_0x18a7dc['as'],'attributes':_0x18a7dc[_0xf6e8('0x22')],'include':_0x18a7dc[_0xf6e8('0x20')]?_[_0xf6e8('0x23')](_0x18a7dc[_0xf6e8('0x20')],function(_0x12a20d){return{'model':db[_0x12a20d['model']],'as':_0x12a20d['as'],'attributes':_0x12a20d[_0xf6e8('0x22')],'include':_0x12a20d['include']?_[_0xf6e8('0x23')](_0x12a20d[_0xf6e8('0x20')],function(_0x4b2871){return{'model':db[_0x4b2871['model']],'as':_0x4b2871['as'],'attributes':_0x4b2871[_0xf6e8('0x22')]};}):[]};}):[]};}):[]:[]})[_0xf6e8('0xe')](function(_0x242f41){logger['info'](_0xf6e8('0x19'),_0x32b41e);logger[_0xf6e8('0x24')]('GetServicenowAccount',_0x32b41e,JSON['stringify'](_0x242f41));_0x491deb(_0x242f41);})[_0xf6e8('0x18')](function(_0x4725eb){logger[_0xf6e8('0x13')](_0xf6e8('0x19'),_0x4725eb[_0xf6e8('0x15')],_0x32b41e);_0x29949c(_0x5a81b3[_0xf6e8('0x13')](0x1f4,_0x4725eb[_0xf6e8('0x15')]));});});};exports[_0xf6e8('0x25')]=function(_0x15d2c5){var _0x552253=this;return new Promise(function(_0x4611a4,_0x47e65f){return db['ServicenowAccount'][_0xf6e8('0x26')]({'raw':_0x15d2c5['options']?_0x15d2c5[_0xf6e8('0x1c')]['raw']===undefined?!![]:![]:!![],'where':_0x15d2c5['options']?_0x15d2c5['options'][_0xf6e8('0x1e')]||null:null,'attributes':_0x15d2c5['options']?_0x15d2c5['options'][_0xf6e8('0x22')]||null:null,'include':_0x15d2c5[_0xf6e8('0x1c')]?_0x15d2c5[_0xf6e8('0x1c')][_0xf6e8('0x20')]?_[_0xf6e8('0x23')](_0x15d2c5[_0xf6e8('0x1c')]['include'],function(_0x26a434){return{'model':db[_0x26a434[_0xf6e8('0x21')]],'as':_0x26a434['as'],'attributes':_0x26a434['attributes'],'include':_0x26a434['include']?_[_0xf6e8('0x23')](_0x26a434[_0xf6e8('0x20')],function(_0x265f00){return{'model':db[_0x265f00[_0xf6e8('0x21')]],'as':_0x265f00['as'],'attributes':_0x265f00[_0xf6e8('0x22')],'include':_0x265f00[_0xf6e8('0x20')]?_[_0xf6e8('0x23')](_0x265f00['include'],function(_0x5b5c33){return{'model':db[_0x5b5c33['model']],'as':_0x5b5c33['as'],'attributes':_0x5b5c33[_0xf6e8('0x22')]};}):[]};}):[]};}):[]:[]})['then'](function(_0x45be99){logger['info'](_0xf6e8('0x25'),_0x15d2c5);logger[_0xf6e8('0x24')](_0xf6e8('0x25'),_0x15d2c5,JSON[_0xf6e8('0x12')](_0x45be99));_0x4611a4(_0x45be99);})[_0xf6e8('0x18')](function(_0x30b3de){logger[_0xf6e8('0x13')]('ShowServicenowAccount',_0x30b3de[_0xf6e8('0x15')],_0x15d2c5);_0x47e65f(_0x552253[_0xf6e8('0x13')](0x1f4,_0x30b3de[_0xf6e8('0x15')]));});});};
\ No newline at end of file
index 0e7778e..1d6b16a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9099=['isAuthenticated','show','/:id/fields','getFields','/:id/subjects','getSubjects','/:id/descriptions','getDescriptions','post','put','exports','path','connect-timeout','express','Router','../../components/auth/service','../../components/interaction/service','index','get','/:id'];(function(_0x444f04,_0x16cfac){var _0x33c528=function(_0x33a893){while(--_0x33a893){_0x444f04['push'](_0x444f04['shift']());}};_0x33c528(++_0x16cfac);}(_0x9099,0x14b));var _0x9909=function(_0x39bc44,_0x1d4373){_0x39bc44=_0x39bc44-0x0;var _0x2916d8=_0x9099[_0x39bc44];return _0x2916d8;};'use strict';var multer=require('multer');var util=require('util');var path=require(_0x9909('0x0'));var timeout=require(_0x9909('0x1'));var express=require(_0x9909('0x2'));var router=express[_0x9909('0x3')]();var fs_extra=require('fs-extra');var auth=require(_0x9909('0x4'));var interaction=require(_0x9909('0x5'));var config=require('../../config/environment');var controller=require('./intServicenowConfiguration.controller');router['get']('/',auth['isAuthenticated'](),controller[_0x9909('0x6')]);router[_0x9909('0x7')](_0x9909('0x8'),auth[_0x9909('0x9')](),controller[_0x9909('0xa')]);router[_0x9909('0x7')](_0x9909('0xb'),auth[_0x9909('0x9')](),controller[_0x9909('0xc')]);router[_0x9909('0x7')](_0x9909('0xd'),auth[_0x9909('0x9')](),controller[_0x9909('0xe')]);router[_0x9909('0x7')](_0x9909('0xf'),auth[_0x9909('0x9')](),controller[_0x9909('0x10')]);router[_0x9909('0x11')]('/',auth[_0x9909('0x9')](),controller['create']);router[_0x9909('0x12')]('/:id',auth['isAuthenticated'](),controller['update']);router['delete']('/:id',auth[_0x9909('0x9')](),controller['destroy']);module[_0x9909('0x13')]=router;
\ No newline at end of file
+var _0x57f6=['/:id/fields','getSubjects','/:id/descriptions','post','put','update','delete','destroy','exports','multer','util','path','connect-timeout','fs-extra','../../components/interaction/service','../../config/environment','./intServicenowConfiguration.controller','get','index','/:id','isAuthenticated'];(function(_0x15ee41,_0x9275d8){var _0x2b2846=function(_0x88d0a4){while(--_0x88d0a4){_0x15ee41['push'](_0x15ee41['shift']());}};_0x2b2846(++_0x9275d8);}(_0x57f6,0x105));var _0x657f=function(_0x45dbe3,_0xd2bf96){_0x45dbe3=_0x45dbe3-0x0;var _0x1e71cf=_0x57f6[_0x45dbe3];return _0x1e71cf;};'use strict';var multer=require(_0x657f('0x0'));var util=require(_0x657f('0x1'));var path=require(_0x657f('0x2'));var timeout=require(_0x657f('0x3'));var express=require('express');var router=express['Router']();var fs_extra=require(_0x657f('0x4'));var auth=require('../../components/auth/service');var interaction=require(_0x657f('0x5'));var config=require(_0x657f('0x6'));var controller=require(_0x657f('0x7'));router[_0x657f('0x8')]('/',auth['isAuthenticated'](),controller[_0x657f('0x9')]);router[_0x657f('0x8')](_0x657f('0xa'),auth[_0x657f('0xb')](),controller['show']);router[_0x657f('0x8')](_0x657f('0xc'),auth[_0x657f('0xb')](),controller['getFields']);router[_0x657f('0x8')]('/:id/subjects',auth[_0x657f('0xb')](),controller[_0x657f('0xd')]);router[_0x657f('0x8')](_0x657f('0xe'),auth[_0x657f('0xb')](),controller['getDescriptions']);router[_0x657f('0xf')]('/',auth[_0x657f('0xb')](),controller['create']);router[_0x657f('0x10')](_0x657f('0xa'),auth[_0x657f('0xb')](),controller[_0x657f('0x11')]);router[_0x657f('0x12')]('/:id',auth[_0x657f('0xb')](),controller[_0x657f('0x13')]);module[_0x657f('0x14')]=router;
\ No newline at end of file
index 56edcfc..86bb9d4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x16b0=['exports','STRING','sequelize'];(function(_0x162438,_0x46c366){var _0x2ad874=function(_0x3e6cbd){while(--_0x3e6cbd){_0x162438['push'](_0x162438['shift']());}};_0x2ad874(++_0x46c366);}(_0x16b0,0x119));var _0x016b=function(_0x6315eb,_0x411cb8){_0x6315eb=_0x6315eb-0x0;var _0x1972a8=_0x16b0[_0x6315eb];return _0x1972a8;};'use strict';var Sequelize=require(_0x016b('0x0'));module[_0x016b('0x1')]={'name':{'type':Sequelize[_0x016b('0x2')]},'description':{'type':Sequelize['STRING']}};
\ No newline at end of file
+var _0x2f7f=['exports','STRING','sequelize'];(function(_0x121ae6,_0x592e59){var _0x5665dd=function(_0x2dae72){while(--_0x2dae72){_0x121ae6['push'](_0x121ae6['shift']());}};_0x5665dd(++_0x592e59);}(_0x2f7f,0x9b));var _0xf2f7=function(_0x174ef5,_0x256e8e){_0x174ef5=_0x174ef5-0x0;var _0x1cc379=_0x2f7f[_0x174ef5];return _0x1cc379;};'use strict';var Sequelize=require(_0xf2f7('0x0'));module[_0xf2f7('0x1')]={'name':{'type':Sequelize['STRING']},'description':{'type':Sequelize[_0xf2f7('0x2')]}};
\ No newline at end of file
index bb0bfa7..82e856b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb49f=['apply','reject','save','update','then','end','error','name','send','index','ServicenowConfiguration','rawAttributes','fieldName','key','model','map','query','keys','intersection','attributes','fields','length','hasOwnProperty','order','where','pick','filters','filter','merge','type','VIRTUAL','options','includeAll','catch','show','params','include','find','create','body','destroy','findOne','ServicenowField','sort','getFields','getSubjects','nolimit','getDescriptions','eml-format','zip-dir','request-promise','moment','mustache','to-csv','lodash','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../mysqldb','sendStatus','status','offset','undefined','count','limit','Content-Range','json'];(function(_0x4253e1,_0x27f618){var _0x101a44=function(_0xa2b3cb){while(--_0xa2b3cb){_0x4253e1['push'](_0x4253e1['shift']());}};_0x101a44(++_0x27f618);}(_0xb49f,0x160));var _0xfb49=function(_0x5eb031,_0x10796f){_0x5eb031=_0x5eb031-0x0;var _0x216dec=_0xb49f[_0x5eb031];return _0x216dec;};'use strict';var emlformat=require(_0xfb49('0x0'));var rimraf=require('rimraf');var zipdir=require(_0xfb49('0x1'));var jsonpatch=require('fast-json-patch');var rp=require(_0xfb49('0x2'));var moment=require(_0xfb49('0x3'));var BPromise=require('bluebird');var Mustache=require(_0xfb49('0x4'));var util=require('util');var path=require('path');var sox=require('sox');var csv=require(_0xfb49('0x5'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0xfb49('0x6'));var squel=require('squel');var crypto=require(_0xfb49('0x7'));var jsforce=require(_0xfb49('0x8'));var deskjs=require(_0xfb49('0x9'));var toCsv=require('to-csv');var querystring=require(_0xfb49('0xa'));var Papa=require(_0xfb49('0xb'));var Redis=require(_0xfb49('0xc'));var authService=require(_0xfb49('0xd'));var qs=require('../../components/parsers/qs');var as=require(_0xfb49('0xe'));var hardwareService=require(_0xfb49('0xf'));var logger=require(_0xfb49('0x10'))(_0xfb49('0x11'));var utils=require(_0xfb49('0x12'));var config=require('../../config/environment');var licenseUtil=require('../../config/license/util');var db=require(_0xfb49('0x13'))['db'];function respondWithStatusCode(_0x51ff80,_0x181fde){_0x181fde=_0x181fde||0xcc;return function(_0x259d98){if(_0x259d98){return _0x51ff80[_0xfb49('0x14')](_0x181fde);}return _0x51ff80[_0xfb49('0x15')](_0x181fde)['end']();};}function respondWithResult(_0xaff513,_0x4c4a88){_0x4c4a88=_0x4c4a88||0xc8;return function(_0x11c81f){if(_0x11c81f){return _0xaff513[_0xfb49('0x15')](_0x4c4a88)['json'](_0x11c81f);}};}function respondWithFilteredResult(_0x5de7cb,_0x186179){return function(_0x2465c2){if(_0x2465c2){var _0x381d53=typeof _0x186179[_0xfb49('0x16')]===_0xfb49('0x17')&&typeof _0x186179['limit']===_0xfb49('0x17');var _0x1d6262=_0x2465c2[_0xfb49('0x18')];var _0x1e5ff8=_0x381d53?0x0:_0x186179['offset'];var _0x47436a=_0x381d53?_0x2465c2[_0xfb49('0x18')]:_0x186179[_0xfb49('0x16')]+_0x186179[_0xfb49('0x19')];var _0x1662b9;if(_0x47436a>=_0x1d6262){_0x47436a=_0x1d6262;_0x1662b9=0xc8;}else{_0x1662b9=0xce;}_0x5de7cb[_0xfb49('0x15')](_0x1662b9);return _0x5de7cb['set'](_0xfb49('0x1a'),_0x1e5ff8+'-'+_0x47436a+'/'+_0x1d6262)[_0xfb49('0x1b')](_0x2465c2);}return null;};}function patchUpdates(_0x43b563){return function(_0x24216c){try{jsonpatch[_0xfb49('0x1c')](_0x24216c,_0x43b563,!![]);}catch(_0x1c56f2){return BPromise[_0xfb49('0x1d')](_0x1c56f2);}return _0x24216c[_0xfb49('0x1e')]();};}function saveUpdates(_0x4b73b7,_0x5e0a99){return function(_0x103eb0){if(_0x103eb0){return _0x103eb0[_0xfb49('0x1f')](_0x4b73b7)[_0xfb49('0x20')](function(_0x5831ef){return _0x5831ef;});}return null;};}function removeEntity(_0x155588,_0x2bae0d){return function(_0x370580){if(_0x370580){return _0x370580['destroy']()[_0xfb49('0x20')](function(){_0x155588[_0xfb49('0x15')](0xcc)[_0xfb49('0x21')]();});}};}function handleEntityNotFound(_0x2aa4ee,_0x3c061f){return function(_0x3e39ad){if(!_0x3e39ad){_0x2aa4ee[_0xfb49('0x14')](0x194);}return _0x3e39ad;};}function handleError(_0x36c9fb,_0x46c1c0){_0x46c1c0=_0x46c1c0||0x1f4;return function(_0x474897){logger[_0xfb49('0x22')](_0x474897['stack']);if(_0x474897[_0xfb49('0x23')]){delete _0x474897[_0xfb49('0x23')];}_0x36c9fb[_0xfb49('0x15')](_0x46c1c0)[_0xfb49('0x24')](_0x474897);};}exports[_0xfb49('0x25')]=function(_0x181c8b,_0x5a8470){var _0x256d4b={},_0x4a7f6a={},_0x1f2c61={'count':0x0,'rows':[]};var _0x42b4b4=_['map'](db[_0xfb49('0x26')][_0xfb49('0x27')],function(_0x4bcf08){return{'name':_0x4bcf08[_0xfb49('0x28')],'type':_0x4bcf08['type'][_0xfb49('0x29')]};});_0x4a7f6a[_0xfb49('0x2a')]=_[_0xfb49('0x2b')](_0x42b4b4,_0xfb49('0x23'));_0x4a7f6a[_0xfb49('0x2c')]=_[_0xfb49('0x2d')](_0x181c8b[_0xfb49('0x2c')]);_0x4a7f6a['filters']=_[_0xfb49('0x2e')](_0x4a7f6a[_0xfb49('0x2a')],_0x4a7f6a[_0xfb49('0x2c')]);_0x256d4b[_0xfb49('0x2f')]=_['intersection'](_0x4a7f6a['model'],qs[_0xfb49('0x30')](_0x181c8b[_0xfb49('0x2c')][_0xfb49('0x30')]));_0x256d4b[_0xfb49('0x2f')]=_0x256d4b['attributes'][_0xfb49('0x31')]?_0x256d4b[_0xfb49('0x2f')]:_0x4a7f6a[_0xfb49('0x2a')];if(!_0x181c8b[_0xfb49('0x2c')][_0xfb49('0x32')]('nolimit')){_0x256d4b[_0xfb49('0x19')]=qs[_0xfb49('0x19')](_0x181c8b[_0xfb49('0x2c')][_0xfb49('0x19')]);_0x256d4b[_0xfb49('0x16')]=qs[_0xfb49('0x16')](_0x181c8b['query'][_0xfb49('0x16')]);}_0x256d4b[_0xfb49('0x33')]=qs['sort'](_0x181c8b[_0xfb49('0x2c')]['sort']);_0x256d4b[_0xfb49('0x34')]=qs['filters'](_[_0xfb49('0x35')](_0x181c8b['query'],_0x4a7f6a[_0xfb49('0x36')]),_0x42b4b4);if(_0x181c8b[_0xfb49('0x2c')][_0xfb49('0x37')]){_0x256d4b['where']=_[_0xfb49('0x38')](_0x256d4b['where'],{'$or':_['map'](_0x42b4b4,function(_0x412f73){if(_0x412f73[_0xfb49('0x39')]!==_0xfb49('0x3a')){var _0x510d8f={};_0x510d8f[_0x412f73['name']]={'$like':'%'+_0x181c8b[_0xfb49('0x2c')][_0xfb49('0x37')]+'%'};return _0x510d8f;}})});}_0x256d4b=_[_0xfb49('0x38')]({},_0x256d4b,_0x181c8b[_0xfb49('0x3b')]);var _0x770796={'where':_0x256d4b[_0xfb49('0x34')]};return db['ServicenowConfiguration'][_0xfb49('0x18')](_0x770796)['then'](function(_0x3623c5){_0x1f2c61[_0xfb49('0x18')]=_0x3623c5;if(_0x181c8b[_0xfb49('0x2c')][_0xfb49('0x3c')]){_0x256d4b['include']=[{'all':!![]}];}return db['ServicenowConfiguration']['findAll'](_0x256d4b);})[_0xfb49('0x20')](function(_0x643d01){_0x1f2c61['rows']=_0x643d01;return _0x1f2c61;})['then'](respondWithFilteredResult(_0x5a8470,_0x256d4b))[_0xfb49('0x3d')](handleError(_0x5a8470,null));};exports[_0xfb49('0x3e')]=function(_0x60c33a,_0x803297){var _0x12c55a={'raw':![],'where':{'id':_0x60c33a[_0xfb49('0x3f')]['id']}},_0x58edca={};_0x58edca['model']=_[_0xfb49('0x2d')](db['ServicenowConfiguration'][_0xfb49('0x27')]);_0x58edca['query']=_[_0xfb49('0x2d')](_0x60c33a['query']);_0x58edca[_0xfb49('0x36')]=_['intersection'](_0x58edca[_0xfb49('0x2a')],_0x58edca[_0xfb49('0x2c')]);_0x12c55a[_0xfb49('0x2f')]=_[_0xfb49('0x2e')](_0x58edca[_0xfb49('0x2a')],qs[_0xfb49('0x30')](_0x60c33a['query'][_0xfb49('0x30')]));_0x12c55a[_0xfb49('0x2f')]=_0x12c55a[_0xfb49('0x2f')]['length']?_0x12c55a[_0xfb49('0x2f')]:_0x58edca[_0xfb49('0x2a')];if(_0x60c33a[_0xfb49('0x2c')][_0xfb49('0x3c')]){_0x12c55a[_0xfb49('0x40')]=[{'all':!![]}];}_0x12c55a=_[_0xfb49('0x38')]({},_0x12c55a,_0x60c33a[_0xfb49('0x3b')]);return db[_0xfb49('0x26')][_0xfb49('0x41')](_0x12c55a)[_0xfb49('0x20')](handleEntityNotFound(_0x803297,null))[_0xfb49('0x20')](respondWithResult(_0x803297,null))['catch'](handleError(_0x803297,null));};exports[_0xfb49('0x42')]=function(_0x44a501,_0x488e66){return db['ServicenowConfiguration'][_0xfb49('0x42')](_0x44a501[_0xfb49('0x43')],{})[_0xfb49('0x20')](respondWithResult(_0x488e66,0xc9))[_0xfb49('0x3d')](handleError(_0x488e66,null));};exports[_0xfb49('0x1f')]=function(_0x2c8786,_0x4c19dd){if(_0x2c8786[_0xfb49('0x43')]['id']){delete _0x2c8786['body']['id'];}return db[_0xfb49('0x26')][_0xfb49('0x41')]({'where':{'id':_0x2c8786['params']['id']}})[_0xfb49('0x20')](handleEntityNotFound(_0x4c19dd,null))[_0xfb49('0x20')](saveUpdates(_0x2c8786['body'],null))[_0xfb49('0x20')](respondWithResult(_0x4c19dd,null))[_0xfb49('0x3d')](handleError(_0x4c19dd,null));};exports[_0xfb49('0x44')]=function(_0x147c0e,_0x2a42b0){return db[_0xfb49('0x26')][_0xfb49('0x41')]({'where':{'id':_0x147c0e[_0xfb49('0x3f')]['id']}})[_0xfb49('0x20')](handleEntityNotFound(_0x2a42b0,null))[_0xfb49('0x20')](removeEntity(_0x2a42b0,null))[_0xfb49('0x3d')](handleError(_0x2a42b0,null));};exports['getFields']=function(_0x5daf9b,_0x54c0be,_0xc88ba7){var _0x11a491={};var _0x181bdb={};var _0x1c30d6;var _0x26982e;return db['ServicenowConfiguration'][_0xfb49('0x45')]({'where':{'id':_0x5daf9b[_0xfb49('0x3f')]['id']}})[_0xfb49('0x20')](handleEntityNotFound(_0x54c0be,null))[_0xfb49('0x20')](function(_0x2c17bf){if(_0x2c17bf){_0x1c30d6=_0x2c17bf;_0x181bdb[_0xfb49('0x2a')]=_[_0xfb49('0x2d')](db[_0xfb49('0x46')][_0xfb49('0x27')]);_0x181bdb[_0xfb49('0x2c')]=_['keys'](_0x5daf9b[_0xfb49('0x2c')]);_0x181bdb[_0xfb49('0x36')]=_[_0xfb49('0x2e')](_0x181bdb[_0xfb49('0x2a')],_0x181bdb[_0xfb49('0x2c')]);_0x11a491[_0xfb49('0x2f')]=_[_0xfb49('0x2e')](_0x181bdb['model'],qs[_0xfb49('0x30')](_0x5daf9b[_0xfb49('0x2c')]['fields']));_0x11a491[_0xfb49('0x2f')]=_0x11a491['attributes']['length']?_0x11a491[_0xfb49('0x2f')]:_0x181bdb[_0xfb49('0x2a')];_0x11a491[_0xfb49('0x33')]=qs[_0xfb49('0x47')](_0x5daf9b[_0xfb49('0x2c')]['sort']);_0x11a491['where']=qs[_0xfb49('0x36')](_[_0xfb49('0x35')](_0x5daf9b[_0xfb49('0x2c')],_0x181bdb['filters']));if(_0x5daf9b['query']['filter']){_0x11a491[_0xfb49('0x34')]=_[_0xfb49('0x38')](_0x11a491[_0xfb49('0x34')],{'$or':_[_0xfb49('0x2b')](_0x11a491['attributes'],function(_0x2de205){var _0x5909be={};_0x5909be[_0x2de205]={'$like':'%'+_0x5daf9b[_0xfb49('0x2c')][_0xfb49('0x37')]+'%'};return _0x5909be;})});}_0x11a491=_[_0xfb49('0x38')]({},_0x11a491,_0x5daf9b[_0xfb49('0x3b')]);return _0x1c30d6[_0xfb49('0x48')](_0x11a491);}})['then'](function(_0x6450b3){if(_0x6450b3){_0x26982e=_0x6450b3[_0xfb49('0x31')];if(!_0x5daf9b[_0xfb49('0x2c')][_0xfb49('0x32')]('nolimit')){_0x11a491[_0xfb49('0x19')]=qs[_0xfb49('0x19')](_0x5daf9b[_0xfb49('0x2c')][_0xfb49('0x19')]);_0x11a491[_0xfb49('0x16')]=qs['offset'](_0x5daf9b[_0xfb49('0x2c')][_0xfb49('0x16')]);}return _0x1c30d6['getFields'](_0x11a491);}})[_0xfb49('0x20')](function(_0x3ec2a7){if(_0x3ec2a7){return _0x3ec2a7?{'count':_0x26982e,'rows':_0x3ec2a7}:null;}})['then'](respondWithResult(_0x54c0be,null))[_0xfb49('0x3d')](handleError(_0x54c0be,null));};exports[_0xfb49('0x49')]=function(_0x7ede20,_0x237736,_0x58986a){var _0x185de8={};var _0x50b8b5={};var _0x49e5b5;var _0x368b49;return db[_0xfb49('0x26')][_0xfb49('0x45')]({'where':{'id':_0x7ede20[_0xfb49('0x3f')]['id']}})['then'](handleEntityNotFound(_0x237736,null))[_0xfb49('0x20')](function(_0x1cad25){if(_0x1cad25){_0x49e5b5=_0x1cad25;_0x50b8b5[_0xfb49('0x2a')]=_[_0xfb49('0x2d')](db[_0xfb49('0x46')][_0xfb49('0x27')]);_0x50b8b5[_0xfb49('0x2c')]=_[_0xfb49('0x2d')](_0x7ede20[_0xfb49('0x2c')]);_0x50b8b5[_0xfb49('0x36')]=_[_0xfb49('0x2e')](_0x50b8b5[_0xfb49('0x2a')],_0x50b8b5[_0xfb49('0x2c')]);_0x185de8['attributes']=_['intersection'](_0x50b8b5[_0xfb49('0x2a')],qs[_0xfb49('0x30')](_0x7ede20[_0xfb49('0x2c')][_0xfb49('0x30')]));_0x185de8[_0xfb49('0x2f')]=_0x185de8[_0xfb49('0x2f')][_0xfb49('0x31')]?_0x185de8[_0xfb49('0x2f')]:_0x50b8b5[_0xfb49('0x2a')];_0x185de8['order']=qs[_0xfb49('0x47')](_0x7ede20[_0xfb49('0x2c')][_0xfb49('0x47')]);_0x185de8['where']=qs[_0xfb49('0x36')](_[_0xfb49('0x35')](_0x7ede20[_0xfb49('0x2c')],_0x50b8b5['filters']));if(_0x7ede20[_0xfb49('0x2c')][_0xfb49('0x37')]){_0x185de8[_0xfb49('0x34')]=_[_0xfb49('0x38')](_0x185de8['where'],{'$or':_['map'](_0x185de8[_0xfb49('0x2f')],function(_0x31b47e){var _0x293e5c={};_0x293e5c[_0x31b47e]={'$like':'%'+_0x7ede20[_0xfb49('0x2c')]['filter']+'%'};return _0x293e5c;})});}_0x185de8=_[_0xfb49('0x38')]({},_0x185de8,_0x7ede20[_0xfb49('0x3b')]);return _0x49e5b5[_0xfb49('0x49')](_0x185de8);}})['then'](function(_0x2d59fc){if(_0x2d59fc){_0x368b49=_0x2d59fc[_0xfb49('0x31')];if(!_0x7ede20[_0xfb49('0x2c')]['hasOwnProperty'](_0xfb49('0x4a'))){_0x185de8[_0xfb49('0x19')]=qs[_0xfb49('0x19')](_0x7ede20[_0xfb49('0x2c')][_0xfb49('0x19')]);_0x185de8[_0xfb49('0x16')]=qs[_0xfb49('0x16')](_0x7ede20[_0xfb49('0x2c')][_0xfb49('0x16')]);}return _0x49e5b5[_0xfb49('0x49')](_0x185de8);}})['then'](function(_0x282b0d){if(_0x282b0d){return _0x282b0d?{'count':_0x368b49,'rows':_0x282b0d}:null;}})[_0xfb49('0x20')](respondWithResult(_0x237736,null))[_0xfb49('0x3d')](handleError(_0x237736,null));};exports[_0xfb49('0x4b')]=function(_0x4448cb,_0x2cd226,_0x3ed205){var _0x4e0d10={};var _0x1d704e={};var _0x54fb0c;var _0x5e9369;return db[_0xfb49('0x26')][_0xfb49('0x45')]({'where':{'id':_0x4448cb[_0xfb49('0x3f')]['id']}})[_0xfb49('0x20')](handleEntityNotFound(_0x2cd226,null))[_0xfb49('0x20')](function(_0x398e22){if(_0x398e22){_0x54fb0c=_0x398e22;_0x1d704e[_0xfb49('0x2a')]=_['keys'](db[_0xfb49('0x46')][_0xfb49('0x27')]);_0x1d704e[_0xfb49('0x2c')]=_[_0xfb49('0x2d')](_0x4448cb['query']);_0x1d704e['filters']=_['intersection'](_0x1d704e['model'],_0x1d704e['query']);_0x4e0d10[_0xfb49('0x2f')]=_['intersection'](_0x1d704e['model'],qs[_0xfb49('0x30')](_0x4448cb[_0xfb49('0x2c')]['fields']));_0x4e0d10[_0xfb49('0x2f')]=_0x4e0d10[_0xfb49('0x2f')]['length']?_0x4e0d10[_0xfb49('0x2f')]:_0x1d704e[_0xfb49('0x2a')];_0x4e0d10[_0xfb49('0x33')]=qs[_0xfb49('0x47')](_0x4448cb[_0xfb49('0x2c')][_0xfb49('0x47')]);_0x4e0d10[_0xfb49('0x34')]=qs[_0xfb49('0x36')](_[_0xfb49('0x35')](_0x4448cb[_0xfb49('0x2c')],_0x1d704e['filters']));if(_0x4448cb['query']['filter']){_0x4e0d10[_0xfb49('0x34')]=_[_0xfb49('0x38')](_0x4e0d10[_0xfb49('0x34')],{'$or':_[_0xfb49('0x2b')](_0x4e0d10[_0xfb49('0x2f')],function(_0x38b066){var _0x19d1d8={};_0x19d1d8[_0x38b066]={'$like':'%'+_0x4448cb[_0xfb49('0x2c')]['filter']+'%'};return _0x19d1d8;})});}_0x4e0d10=_[_0xfb49('0x38')]({},_0x4e0d10,_0x4448cb[_0xfb49('0x3b')]);return _0x54fb0c[_0xfb49('0x4b')](_0x4e0d10);}})[_0xfb49('0x20')](function(_0x8acf5c){if(_0x8acf5c){_0x5e9369=_0x8acf5c['length'];if(!_0x4448cb[_0xfb49('0x2c')][_0xfb49('0x32')]('nolimit')){_0x4e0d10[_0xfb49('0x19')]=qs[_0xfb49('0x19')](_0x4448cb[_0xfb49('0x2c')][_0xfb49('0x19')]);_0x4e0d10[_0xfb49('0x16')]=qs['offset'](_0x4448cb[_0xfb49('0x2c')][_0xfb49('0x16')]);}return _0x54fb0c['getDescriptions'](_0x4e0d10);}})[_0xfb49('0x20')](function(_0x7c657b){if(_0x7c657b){return _0x7c657b?{'count':_0x5e9369,'rows':_0x7c657b}:null;}})['then'](respondWithResult(_0x2cd226,null))[_0xfb49('0x3d')](handleError(_0x2cd226,null));};
\ No newline at end of file
+var _0xeb4b=['findOne','getDescriptions','eml-format','rimraf','fast-json-patch','request-promise','moment','mustache','util','path','sox','ejs','fs-extra','lodash','crypto','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','sendStatus','status','json','offset','undefined','limit','count','Content-Range','apply','save','destroy','then','end','stack','name','send','index','map','ServicenowConfiguration','fieldName','type','key','model','query','filters','intersection','attributes','fields','nolimit','sort','where','filter','VIRTUAL','includeAll','include','findAll','catch','show','params','keys','rawAttributes','length','merge','options','find','create','body','update','getFields','ServicenowField','order','pick','hasOwnProperty','getSubjects'];(function(_0xbf8ebe,_0x3b69a5){var _0x1e25e8=function(_0x40c390){while(--_0x40c390){_0xbf8ebe['push'](_0xbf8ebe['shift']());}};_0x1e25e8(++_0x3b69a5);}(_0xeb4b,0x9e));var _0xbeb4=function(_0x485835,_0x4a0708){_0x485835=_0x485835-0x0;var _0x3e079f=_0xeb4b[_0x485835];return _0x3e079f;};'use strict';var emlformat=require(_0xbeb4('0x0'));var rimraf=require(_0xbeb4('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0xbeb4('0x2'));var rp=require(_0xbeb4('0x3'));var moment=require(_0xbeb4('0x4'));var BPromise=require('bluebird');var Mustache=require(_0xbeb4('0x5'));var util=require(_0xbeb4('0x6'));var path=require(_0xbeb4('0x7'));var sox=require(_0xbeb4('0x8'));var csv=require('to-csv');var ejs=require(_0xbeb4('0x9'));var fs=require('fs');var fs_extra=require(_0xbeb4('0xa'));var _=require(_0xbeb4('0xb'));var squel=require('squel');var crypto=require(_0xbeb4('0xc'));var jsforce=require('jsforce');var deskjs=require('desk.js');var toCsv=require('to-csv');var querystring=require('querystring');var Papa=require('papaparse');var Redis=require(_0xbeb4('0xd'));var authService=require(_0xbeb4('0xe'));var qs=require('../../components/parsers/qs');var as=require(_0xbeb4('0xf'));var hardwareService=require(_0xbeb4('0x10'));var logger=require(_0xbeb4('0x11'))(_0xbeb4('0x12'));var utils=require(_0xbeb4('0x13'));var config=require(_0xbeb4('0x14'));var licenseUtil=require(_0xbeb4('0x15'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0xcb5451,_0x27372f){_0x27372f=_0x27372f||0xcc;return function(_0x148d5a){if(_0x148d5a){return _0xcb5451[_0xbeb4('0x16')](_0x27372f);}return _0xcb5451[_0xbeb4('0x17')](_0x27372f)['end']();};}function respondWithResult(_0x53778c,_0x4f6b46){_0x4f6b46=_0x4f6b46||0xc8;return function(_0x1b0d6b){if(_0x1b0d6b){return _0x53778c['status'](_0x4f6b46)[_0xbeb4('0x18')](_0x1b0d6b);}};}function respondWithFilteredResult(_0x385ecc,_0x3b9279){return function(_0x37f11b){if(_0x37f11b){var _0x4a973f=typeof _0x3b9279[_0xbeb4('0x19')]===_0xbeb4('0x1a')&&typeof _0x3b9279[_0xbeb4('0x1b')]===_0xbeb4('0x1a');var _0x1e3d34=_0x37f11b['count'];var _0x23fd45=_0x4a973f?0x0:_0x3b9279[_0xbeb4('0x19')];var _0xecce0a=_0x4a973f?_0x37f11b[_0xbeb4('0x1c')]:_0x3b9279[_0xbeb4('0x19')]+_0x3b9279[_0xbeb4('0x1b')];var _0x26ae3b;if(_0xecce0a>=_0x1e3d34){_0xecce0a=_0x1e3d34;_0x26ae3b=0xc8;}else{_0x26ae3b=0xce;}_0x385ecc['status'](_0x26ae3b);return _0x385ecc['set'](_0xbeb4('0x1d'),_0x23fd45+'-'+_0xecce0a+'/'+_0x1e3d34)[_0xbeb4('0x18')](_0x37f11b);}return null;};}function patchUpdates(_0x13cc46){return function(_0x262937){try{jsonpatch[_0xbeb4('0x1e')](_0x262937,_0x13cc46,!![]);}catch(_0x1a88b7){return BPromise['reject'](_0x1a88b7);}return _0x262937[_0xbeb4('0x1f')]();};}function saveUpdates(_0x52813d,_0x1d77df){return function(_0x5328e1){if(_0x5328e1){return _0x5328e1['update'](_0x52813d)['then'](function(_0x41c4ef){return _0x41c4ef;});}return null;};}function removeEntity(_0x5b36d8,_0xe6da3d){return function(_0x2d351b){if(_0x2d351b){return _0x2d351b[_0xbeb4('0x20')]()[_0xbeb4('0x21')](function(){_0x5b36d8[_0xbeb4('0x17')](0xcc)[_0xbeb4('0x22')]();});}};}function handleEntityNotFound(_0x244ec8,_0x358d72){return function(_0x49a493){if(!_0x49a493){_0x244ec8[_0xbeb4('0x16')](0x194);}return _0x49a493;};}function handleError(_0x3f3abd,_0x483c60){_0x483c60=_0x483c60||0x1f4;return function(_0x43f62e){logger['error'](_0x43f62e[_0xbeb4('0x23')]);if(_0x43f62e[_0xbeb4('0x24')]){delete _0x43f62e[_0xbeb4('0x24')];}_0x3f3abd['status'](_0x483c60)[_0xbeb4('0x25')](_0x43f62e);};}exports[_0xbeb4('0x26')]=function(_0x3976f9,_0x25530e){var _0x5d1a86={},_0x1b5524={},_0x1d8582={'count':0x0,'rows':[]};var _0x1969c6=_[_0xbeb4('0x27')](db[_0xbeb4('0x28')]['rawAttributes'],function(_0x457465){return{'name':_0x457465[_0xbeb4('0x29')],'type':_0x457465[_0xbeb4('0x2a')][_0xbeb4('0x2b')]};});_0x1b5524[_0xbeb4('0x2c')]=_[_0xbeb4('0x27')](_0x1969c6,'name');_0x1b5524[_0xbeb4('0x2d')]=_['keys'](_0x3976f9['query']);_0x1b5524[_0xbeb4('0x2e')]=_[_0xbeb4('0x2f')](_0x1b5524['model'],_0x1b5524[_0xbeb4('0x2d')]);_0x5d1a86[_0xbeb4('0x30')]=_[_0xbeb4('0x2f')](_0x1b5524[_0xbeb4('0x2c')],qs['fields'](_0x3976f9[_0xbeb4('0x2d')][_0xbeb4('0x31')]));_0x5d1a86[_0xbeb4('0x30')]=_0x5d1a86[_0xbeb4('0x30')]['length']?_0x5d1a86[_0xbeb4('0x30')]:_0x1b5524['model'];if(!_0x3976f9[_0xbeb4('0x2d')]['hasOwnProperty'](_0xbeb4('0x32'))){_0x5d1a86[_0xbeb4('0x1b')]=qs[_0xbeb4('0x1b')](_0x3976f9[_0xbeb4('0x2d')][_0xbeb4('0x1b')]);_0x5d1a86[_0xbeb4('0x19')]=qs[_0xbeb4('0x19')](_0x3976f9['query'][_0xbeb4('0x19')]);}_0x5d1a86['order']=qs[_0xbeb4('0x33')](_0x3976f9['query'][_0xbeb4('0x33')]);_0x5d1a86[_0xbeb4('0x34')]=qs[_0xbeb4('0x2e')](_['pick'](_0x3976f9[_0xbeb4('0x2d')],_0x1b5524[_0xbeb4('0x2e')]),_0x1969c6);if(_0x3976f9[_0xbeb4('0x2d')][_0xbeb4('0x35')]){_0x5d1a86[_0xbeb4('0x34')]=_['merge'](_0x5d1a86[_0xbeb4('0x34')],{'$or':_[_0xbeb4('0x27')](_0x1969c6,function(_0x4965e0){if(_0x4965e0[_0xbeb4('0x2a')]!==_0xbeb4('0x36')){var _0x38fd4e={};_0x38fd4e[_0x4965e0[_0xbeb4('0x24')]]={'$like':'%'+_0x3976f9[_0xbeb4('0x2d')][_0xbeb4('0x35')]+'%'};return _0x38fd4e;}})});}_0x5d1a86=_['merge']({},_0x5d1a86,_0x3976f9['options']);var _0x2149e6={'where':_0x5d1a86[_0xbeb4('0x34')]};return db[_0xbeb4('0x28')][_0xbeb4('0x1c')](_0x2149e6)[_0xbeb4('0x21')](function(_0x1bd1fd){_0x1d8582[_0xbeb4('0x1c')]=_0x1bd1fd;if(_0x3976f9[_0xbeb4('0x2d')][_0xbeb4('0x37')]){_0x5d1a86[_0xbeb4('0x38')]=[{'all':!![]}];}return db['ServicenowConfiguration'][_0xbeb4('0x39')](_0x5d1a86);})[_0xbeb4('0x21')](function(_0x36f123){_0x1d8582['rows']=_0x36f123;return _0x1d8582;})[_0xbeb4('0x21')](respondWithFilteredResult(_0x25530e,_0x5d1a86))[_0xbeb4('0x3a')](handleError(_0x25530e,null));};exports[_0xbeb4('0x3b')]=function(_0x324ba2,_0x5cd2fd){var _0x1dd5ce={'raw':![],'where':{'id':_0x324ba2[_0xbeb4('0x3c')]['id']}},_0x5e0835={};_0x5e0835[_0xbeb4('0x2c')]=_[_0xbeb4('0x3d')](db['ServicenowConfiguration'][_0xbeb4('0x3e')]);_0x5e0835['query']=_['keys'](_0x324ba2[_0xbeb4('0x2d')]);_0x5e0835[_0xbeb4('0x2e')]=_[_0xbeb4('0x2f')](_0x5e0835[_0xbeb4('0x2c')],_0x5e0835['query']);_0x1dd5ce[_0xbeb4('0x30')]=_[_0xbeb4('0x2f')](_0x5e0835['model'],qs['fields'](_0x324ba2['query'][_0xbeb4('0x31')]));_0x1dd5ce['attributes']=_0x1dd5ce[_0xbeb4('0x30')][_0xbeb4('0x3f')]?_0x1dd5ce[_0xbeb4('0x30')]:_0x5e0835[_0xbeb4('0x2c')];if(_0x324ba2[_0xbeb4('0x2d')]['includeAll']){_0x1dd5ce[_0xbeb4('0x38')]=[{'all':!![]}];}_0x1dd5ce=_[_0xbeb4('0x40')]({},_0x1dd5ce,_0x324ba2[_0xbeb4('0x41')]);return db[_0xbeb4('0x28')][_0xbeb4('0x42')](_0x1dd5ce)[_0xbeb4('0x21')](handleEntityNotFound(_0x5cd2fd,null))[_0xbeb4('0x21')](respondWithResult(_0x5cd2fd,null))[_0xbeb4('0x3a')](handleError(_0x5cd2fd,null));};exports['create']=function(_0x25fd7b,_0x191758){return db['ServicenowConfiguration'][_0xbeb4('0x43')](_0x25fd7b[_0xbeb4('0x44')],{})[_0xbeb4('0x21')](respondWithResult(_0x191758,0xc9))[_0xbeb4('0x3a')](handleError(_0x191758,null));};exports[_0xbeb4('0x45')]=function(_0x45d2c7,_0x527e9a){if(_0x45d2c7[_0xbeb4('0x44')]['id']){delete _0x45d2c7[_0xbeb4('0x44')]['id'];}return db[_0xbeb4('0x28')][_0xbeb4('0x42')]({'where':{'id':_0x45d2c7['params']['id']}})[_0xbeb4('0x21')](handleEntityNotFound(_0x527e9a,null))[_0xbeb4('0x21')](saveUpdates(_0x45d2c7[_0xbeb4('0x44')],null))[_0xbeb4('0x21')](respondWithResult(_0x527e9a,null))['catch'](handleError(_0x527e9a,null));};exports['destroy']=function(_0x7644cf,_0x4ec15d){return db[_0xbeb4('0x28')][_0xbeb4('0x42')]({'where':{'id':_0x7644cf[_0xbeb4('0x3c')]['id']}})[_0xbeb4('0x21')](handleEntityNotFound(_0x4ec15d,null))[_0xbeb4('0x21')](removeEntity(_0x4ec15d,null))[_0xbeb4('0x3a')](handleError(_0x4ec15d,null));};exports[_0xbeb4('0x46')]=function(_0x3ce0b0,_0x3046a0,_0xe3aa37){var _0x58495f={};var _0x17ac00={};var _0x2dd9c7;var _0x544acf;return db[_0xbeb4('0x28')]['findOne']({'where':{'id':_0x3ce0b0['params']['id']}})['then'](handleEntityNotFound(_0x3046a0,null))[_0xbeb4('0x21')](function(_0x11c120){if(_0x11c120){_0x2dd9c7=_0x11c120;_0x17ac00[_0xbeb4('0x2c')]=_[_0xbeb4('0x3d')](db[_0xbeb4('0x47')]['rawAttributes']);_0x17ac00['query']=_['keys'](_0x3ce0b0[_0xbeb4('0x2d')]);_0x17ac00['filters']=_[_0xbeb4('0x2f')](_0x17ac00[_0xbeb4('0x2c')],_0x17ac00[_0xbeb4('0x2d')]);_0x58495f[_0xbeb4('0x30')]=_[_0xbeb4('0x2f')](_0x17ac00[_0xbeb4('0x2c')],qs['fields'](_0x3ce0b0[_0xbeb4('0x2d')][_0xbeb4('0x31')]));_0x58495f[_0xbeb4('0x30')]=_0x58495f['attributes']['length']?_0x58495f[_0xbeb4('0x30')]:_0x17ac00[_0xbeb4('0x2c')];_0x58495f[_0xbeb4('0x48')]=qs['sort'](_0x3ce0b0[_0xbeb4('0x2d')][_0xbeb4('0x33')]);_0x58495f['where']=qs['filters'](_[_0xbeb4('0x49')](_0x3ce0b0[_0xbeb4('0x2d')],_0x17ac00[_0xbeb4('0x2e')]));if(_0x3ce0b0[_0xbeb4('0x2d')]['filter']){_0x58495f[_0xbeb4('0x34')]=_[_0xbeb4('0x40')](_0x58495f[_0xbeb4('0x34')],{'$or':_['map'](_0x58495f[_0xbeb4('0x30')],function(_0x26e1e7){var _0x4650fd={};_0x4650fd[_0x26e1e7]={'$like':'%'+_0x3ce0b0['query']['filter']+'%'};return _0x4650fd;})});}_0x58495f=_[_0xbeb4('0x40')]({},_0x58495f,_0x3ce0b0[_0xbeb4('0x41')]);return _0x2dd9c7[_0xbeb4('0x46')](_0x58495f);}})['then'](function(_0x1fe22e){if(_0x1fe22e){_0x544acf=_0x1fe22e[_0xbeb4('0x3f')];if(!_0x3ce0b0[_0xbeb4('0x2d')][_0xbeb4('0x4a')]('nolimit')){_0x58495f['limit']=qs[_0xbeb4('0x1b')](_0x3ce0b0[_0xbeb4('0x2d')][_0xbeb4('0x1b')]);_0x58495f[_0xbeb4('0x19')]=qs[_0xbeb4('0x19')](_0x3ce0b0[_0xbeb4('0x2d')][_0xbeb4('0x19')]);}return _0x2dd9c7[_0xbeb4('0x46')](_0x58495f);}})['then'](function(_0x53b377){if(_0x53b377){return _0x53b377?{'count':_0x544acf,'rows':_0x53b377}:null;}})['then'](respondWithResult(_0x3046a0,null))['catch'](handleError(_0x3046a0,null));};exports[_0xbeb4('0x4b')]=function(_0x192ce6,_0x15663d,_0x3ee7d3){var _0x1ec950={};var _0x5ba20b={};var _0x1fcdf7;var _0x1a88e0;return db[_0xbeb4('0x28')][_0xbeb4('0x4c')]({'where':{'id':_0x192ce6[_0xbeb4('0x3c')]['id']}})[_0xbeb4('0x21')](handleEntityNotFound(_0x15663d,null))[_0xbeb4('0x21')](function(_0x403dbf){if(_0x403dbf){_0x1fcdf7=_0x403dbf;_0x5ba20b[_0xbeb4('0x2c')]=_['keys'](db[_0xbeb4('0x47')][_0xbeb4('0x3e')]);_0x5ba20b[_0xbeb4('0x2d')]=_['keys'](_0x192ce6[_0xbeb4('0x2d')]);_0x5ba20b['filters']=_['intersection'](_0x5ba20b[_0xbeb4('0x2c')],_0x5ba20b['query']);_0x1ec950[_0xbeb4('0x30')]=_[_0xbeb4('0x2f')](_0x5ba20b[_0xbeb4('0x2c')],qs[_0xbeb4('0x31')](_0x192ce6[_0xbeb4('0x2d')][_0xbeb4('0x31')]));_0x1ec950[_0xbeb4('0x30')]=_0x1ec950[_0xbeb4('0x30')][_0xbeb4('0x3f')]?_0x1ec950[_0xbeb4('0x30')]:_0x5ba20b['model'];_0x1ec950['order']=qs['sort'](_0x192ce6[_0xbeb4('0x2d')]['sort']);_0x1ec950['where']=qs['filters'](_[_0xbeb4('0x49')](_0x192ce6[_0xbeb4('0x2d')],_0x5ba20b[_0xbeb4('0x2e')]));if(_0x192ce6[_0xbeb4('0x2d')][_0xbeb4('0x35')]){_0x1ec950['where']=_[_0xbeb4('0x40')](_0x1ec950[_0xbeb4('0x34')],{'$or':_['map'](_0x1ec950['attributes'],function(_0x4d90c0){var _0x568f84={};_0x568f84[_0x4d90c0]={'$like':'%'+_0x192ce6['query'][_0xbeb4('0x35')]+'%'};return _0x568f84;})});}_0x1ec950=_[_0xbeb4('0x40')]({},_0x1ec950,_0x192ce6[_0xbeb4('0x41')]);return _0x1fcdf7[_0xbeb4('0x4b')](_0x1ec950);}})['then'](function(_0x5d6da5){if(_0x5d6da5){_0x1a88e0=_0x5d6da5[_0xbeb4('0x3f')];if(!_0x192ce6['query'][_0xbeb4('0x4a')](_0xbeb4('0x32'))){_0x1ec950['limit']=qs[_0xbeb4('0x1b')](_0x192ce6[_0xbeb4('0x2d')][_0xbeb4('0x1b')]);_0x1ec950[_0xbeb4('0x19')]=qs[_0xbeb4('0x19')](_0x192ce6[_0xbeb4('0x2d')][_0xbeb4('0x19')]);}return _0x1fcdf7[_0xbeb4('0x4b')](_0x1ec950);}})[_0xbeb4('0x21')](function(_0x27d978){if(_0x27d978){return _0x27d978?{'count':_0x1a88e0,'rows':_0x27d978}:null;}})[_0xbeb4('0x21')](respondWithResult(_0x15663d,null))[_0xbeb4('0x3a')](handleError(_0x15663d,null));};exports['getDescriptions']=function(_0x3f632e,_0x6057cd,_0x115842){var _0x235730={};var _0x237320={};var _0x28ba57;var _0x5e9673;return db[_0xbeb4('0x28')][_0xbeb4('0x4c')]({'where':{'id':_0x3f632e['params']['id']}})['then'](handleEntityNotFound(_0x6057cd,null))[_0xbeb4('0x21')](function(_0x192bf9){if(_0x192bf9){_0x28ba57=_0x192bf9;_0x237320[_0xbeb4('0x2c')]=_[_0xbeb4('0x3d')](db[_0xbeb4('0x47')][_0xbeb4('0x3e')]);_0x237320[_0xbeb4('0x2d')]=_[_0xbeb4('0x3d')](_0x3f632e['query']);_0x237320[_0xbeb4('0x2e')]=_[_0xbeb4('0x2f')](_0x237320[_0xbeb4('0x2c')],_0x237320['query']);_0x235730['attributes']=_[_0xbeb4('0x2f')](_0x237320[_0xbeb4('0x2c')],qs[_0xbeb4('0x31')](_0x3f632e[_0xbeb4('0x2d')][_0xbeb4('0x31')]));_0x235730[_0xbeb4('0x30')]=_0x235730[_0xbeb4('0x30')][_0xbeb4('0x3f')]?_0x235730[_0xbeb4('0x30')]:_0x237320[_0xbeb4('0x2c')];_0x235730[_0xbeb4('0x48')]=qs['sort'](_0x3f632e[_0xbeb4('0x2d')]['sort']);_0x235730[_0xbeb4('0x34')]=qs['filters'](_['pick'](_0x3f632e['query'],_0x237320[_0xbeb4('0x2e')]));if(_0x3f632e[_0xbeb4('0x2d')]['filter']){_0x235730['where']=_[_0xbeb4('0x40')](_0x235730[_0xbeb4('0x34')],{'$or':_[_0xbeb4('0x27')](_0x235730['attributes'],function(_0x265c1e){var _0x460454={};_0x460454[_0x265c1e]={'$like':'%'+_0x3f632e[_0xbeb4('0x2d')][_0xbeb4('0x35')]+'%'};return _0x460454;})});}_0x235730=_[_0xbeb4('0x40')]({},_0x235730,_0x3f632e[_0xbeb4('0x41')]);return _0x28ba57[_0xbeb4('0x4d')](_0x235730);}})[_0xbeb4('0x21')](function(_0x966993){if(_0x966993){_0x5e9673=_0x966993[_0xbeb4('0x3f')];if(!_0x3f632e[_0xbeb4('0x2d')][_0xbeb4('0x4a')](_0xbeb4('0x32'))){_0x235730[_0xbeb4('0x1b')]=qs[_0xbeb4('0x1b')](_0x3f632e[_0xbeb4('0x2d')]['limit']);_0x235730[_0xbeb4('0x19')]=qs[_0xbeb4('0x19')](_0x3f632e[_0xbeb4('0x2d')][_0xbeb4('0x19')]);}return _0x28ba57[_0xbeb4('0x4d')](_0x235730);}})[_0xbeb4('0x21')](function(_0x101d27){if(_0x101d27){return _0x101d27?{'count':_0x5e9673,'rows':_0x101d27}:null;}})[_0xbeb4('0x21')](respondWithResult(_0x6057cd,null))[_0xbeb4('0x3a')](handleError(_0x6057cd,null));};
\ No newline at end of file
index 0ec8f29..d50e857 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x93e9=['moment','bluebird','request-promise','../../config/environment','./intServicenowConfiguration.attributes','exports','define','ServicenowConfiguration','int_servicenow_configurations','lodash','util','../../config/logger','api'];(function(_0x24da59,_0x3d2bfc){var _0x412753=function(_0x23330d){while(--_0x23330d){_0x24da59['push'](_0x24da59['shift']());}};_0x412753(++_0x3d2bfc);}(_0x93e9,0xcc));var _0x993e=function(_0x4d94db,_0x5a2d71){_0x4d94db=_0x4d94db-0x0;var _0x41d157=_0x93e9[_0x4d94db];return _0x41d157;};'use strict';var _=require(_0x993e('0x0'));var util=require(_0x993e('0x1'));var logger=require(_0x993e('0x2'))(_0x993e('0x3'));var moment=require(_0x993e('0x4'));var BPromise=require(_0x993e('0x5'));var rp=require(_0x993e('0x6'));var fs=require('fs');var path=require('path');var rimraf=require('rimraf');var config=require(_0x993e('0x7'));var attributes=require(_0x993e('0x8'));module[_0x993e('0x9')]=function(_0x45f52e,_0x1da414){return _0x45f52e[_0x993e('0xa')](_0x993e('0xb'),attributes,{'tableName':_0x993e('0xc'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x4e81=['lodash','util','../../config/logger','request-promise','path','rimraf','../../config/environment','./intServicenowConfiguration.attributes','exports','define','ServicenowConfiguration','int_servicenow_configurations'];(function(_0x533528,_0x409d05){var _0x3189f1=function(_0x5e63d2){while(--_0x5e63d2){_0x533528['push'](_0x533528['shift']());}};_0x3189f1(++_0x409d05);}(_0x4e81,0x1bc));var _0x14e8=function(_0x4fdc46,_0x2a3759){_0x4fdc46=_0x4fdc46-0x0;var _0x2c178a=_0x4e81[_0x4fdc46];return _0x2c178a;};'use strict';var _=require(_0x14e8('0x0'));var util=require(_0x14e8('0x1'));var logger=require(_0x14e8('0x2'))('api');var moment=require('moment');var BPromise=require('bluebird');var rp=require(_0x14e8('0x3'));var fs=require('fs');var path=require(_0x14e8('0x4'));var rimraf=require(_0x14e8('0x5'));var config=require(_0x14e8('0x6'));var attributes=require(_0x14e8('0x7'));module[_0x14e8('0x8')]=function(_0x56a266,_0x57c79b){return _0x56a266[_0x14e8('0x9')](_0x14e8('0xa'),attributes,{'tableName':_0x14e8('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index b385927..1c1b365 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0f42=['ServicenowConfiguration,\x20%s,\x20%s','request\x20sent','stringify','error','message','result','catch','lodash','bluebird','ioredis','../../mysqldb','../../config/utils','rpc','client','http','then','info'];(function(_0x107d7a,_0x2f39c9){var _0x5eb2e3=function(_0x299d5a){while(--_0x299d5a){_0x107d7a['push'](_0x107d7a['shift']());}};_0x5eb2e3(++_0x2f39c9);}(_0x0f42,0x1e3));var _0x20f4=function(_0x2b4411,_0x2625ed){_0x2b4411=_0x2b4411-0x0;var _0x8e41ef=_0x0f42[_0x2b4411];return _0x8e41ef;};'use strict';var _=require(_0x20f4('0x0'));var util=require('util');var moment=require('moment');var BPromise=require(_0x20f4('0x1'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x20f4('0x2'));var db=require(_0x20f4('0x3'))['db'];var utils=require(_0x20f4('0x4'));var logger=require('../../config/logger')(_0x20f4('0x5'));var config=require('../../config/environment');var jayson=require('jayson/promise');var client=jayson[_0x20f4('0x6')][_0x20f4('0x7')]({'port':0x232a});function respondWithRpcPromise(_0x2897c3,_0x36542b,_0xca442c){return new BPromise(function(_0x505756,_0x4d9052){return client['request'](_0x2897c3,_0xca442c)[_0x20f4('0x8')](function(_0x44ab05){logger[_0x20f4('0x9')](_0x20f4('0xa'),_0x36542b,_0x20f4('0xb'));logger['debug']('ServicenowConfiguration,\x20%s,\x20%s,\x20%s',_0x36542b,_0x20f4('0xb'),JSON[_0x20f4('0xc')](_0x44ab05));if(_0x44ab05[_0x20f4('0xd')]){if(_0x44ab05[_0x20f4('0xd')]['code']===0x1f4){logger[_0x20f4('0xd')](_0x20f4('0xa'),_0x36542b,_0x44ab05[_0x20f4('0xd')][_0x20f4('0xe')]);return _0x4d9052(_0x44ab05[_0x20f4('0xd')][_0x20f4('0xe')]);}logger['error']('ServicenowConfiguration,\x20%s,\x20%s',_0x36542b,_0x44ab05[_0x20f4('0xd')][_0x20f4('0xe')]);return _0x505756(_0x44ab05[_0x20f4('0xd')]['message']);}else{logger['info']('ServicenowConfiguration,\x20%s,\x20%s',_0x36542b,_0x20f4('0xb'));_0x505756(_0x44ab05[_0x20f4('0xf')]['message']);}})[_0x20f4('0x10')](function(_0x1b3da9){logger[_0x20f4('0xd')]('ServicenowConfiguration,\x20%s,\x20%s',_0x36542b,_0x1b3da9);_0x4d9052(_0x1b3da9);});});}
\ No newline at end of file
+var _0xb9f1=['../../config/logger','rpc','../../config/environment','jayson/promise','client','http','request','then','ServicenowConfiguration,\x20%s,\x20%s','request\x20sent','debug','ServicenowConfiguration,\x20%s,\x20%s,\x20%s','stringify','error','code','message','info','catch','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils'];(function(_0x32d356,_0x2b7ba3){var _0x373967=function(_0x3cf1bc){while(--_0x3cf1bc){_0x32d356['push'](_0x32d356['shift']());}};_0x373967(++_0x2b7ba3);}(_0xb9f1,0xfc));var _0x1b9f=function(_0x4d9752,_0x460422){_0x4d9752=_0x4d9752-0x0;var _0xae32cd=_0xb9f1[_0x4d9752];return _0xae32cd;};'use strict';var _=require(_0x1b9f('0x0'));var util=require(_0x1b9f('0x1'));var moment=require(_0x1b9f('0x2'));var BPromise=require(_0x1b9f('0x3'));var rs=require(_0x1b9f('0x4'));var fs=require('fs');var Redis=require(_0x1b9f('0x5'));var db=require(_0x1b9f('0x6'))['db'];var utils=require(_0x1b9f('0x7'));var logger=require(_0x1b9f('0x8'))(_0x1b9f('0x9'));var config=require(_0x1b9f('0xa'));var jayson=require(_0x1b9f('0xb'));var client=jayson[_0x1b9f('0xc')][_0x1b9f('0xd')]({'port':0x232a});function respondWithRpcPromise(_0x4303b6,_0x378f00,_0x223504){return new BPromise(function(_0xddc65c,_0x133a74){return client[_0x1b9f('0xe')](_0x4303b6,_0x223504)[_0x1b9f('0xf')](function(_0xdc7cdb){logger['info'](_0x1b9f('0x10'),_0x378f00,_0x1b9f('0x11'));logger[_0x1b9f('0x12')](_0x1b9f('0x13'),_0x378f00,_0x1b9f('0x11'),JSON[_0x1b9f('0x14')](_0xdc7cdb));if(_0xdc7cdb[_0x1b9f('0x15')]){if(_0xdc7cdb['error'][_0x1b9f('0x16')]===0x1f4){logger[_0x1b9f('0x15')](_0x1b9f('0x10'),_0x378f00,_0xdc7cdb[_0x1b9f('0x15')]['message']);return _0x133a74(_0xdc7cdb[_0x1b9f('0x15')][_0x1b9f('0x17')]);}logger[_0x1b9f('0x15')](_0x1b9f('0x10'),_0x378f00,_0xdc7cdb[_0x1b9f('0x15')]['message']);return _0xddc65c(_0xdc7cdb[_0x1b9f('0x15')]['message']);}else{logger[_0x1b9f('0x18')](_0x1b9f('0x10'),_0x378f00,_0x1b9f('0x11'));_0xddc65c(_0xdc7cdb['result'][_0x1b9f('0x17')]);}})[_0x1b9f('0x19')](function(_0x526959){logger[_0x1b9f('0x15')](_0x1b9f('0x10'),_0x378f00,_0x526959);_0x133a74(_0x526959);});});}
\ No newline at end of file
index 7cdb127..013766a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc2a6=['get','/:id','show','post','create','put','update','delete','destroy','exports','util','path','connect-timeout','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','isAuthenticated','index'];(function(_0x4abdbb,_0x58930c){var _0x80cb07=function(_0x450e2e){while(--_0x450e2e){_0x4abdbb['push'](_0x4abdbb['shift']());}};_0x80cb07(++_0x58930c);}(_0xc2a6,0x1ea));var _0x6c2a=function(_0x742263,_0x501053){_0x742263=_0x742263-0x0;var _0xc0e7fc=_0xc2a6[_0x742263];return _0xc0e7fc;};'use strict';var multer=require('multer');var util=require(_0x6c2a('0x0'));var path=require(_0x6c2a('0x1'));var timeout=require(_0x6c2a('0x2'));var express=require('express');var router=express[_0x6c2a('0x3')]();var fs_extra=require(_0x6c2a('0x4'));var auth=require(_0x6c2a('0x5'));var interaction=require(_0x6c2a('0x6'));var config=require(_0x6c2a('0x7'));var controller=require('./intServicenowField.controller');router['get']('/',auth[_0x6c2a('0x8')](),controller[_0x6c2a('0x9')]);router[_0x6c2a('0xa')](_0x6c2a('0xb'),auth[_0x6c2a('0x8')](),controller[_0x6c2a('0xc')]);router[_0x6c2a('0xd')]('/',auth['isAuthenticated'](),controller[_0x6c2a('0xe')]);router[_0x6c2a('0xf')](_0x6c2a('0xb'),auth[_0x6c2a('0x8')](),controller[_0x6c2a('0x10')]);router[_0x6c2a('0x11')](_0x6c2a('0xb'),auth[_0x6c2a('0x8')](),controller[_0x6c2a('0x12')]);module[_0x6c2a('0x13')]=router;
\ No newline at end of file
+var _0xba46=['delete','exports','multer','util','connect-timeout','express','fs-extra','../../components/interaction/service','./intServicenowField.controller','isAuthenticated','index','get','/:id','show','post'];(function(_0x411017,_0x4a8117){var _0x2adeea=function(_0x545222){while(--_0x545222){_0x411017['push'](_0x411017['shift']());}};_0x2adeea(++_0x4a8117);}(_0xba46,0x11f));var _0x6ba4=function(_0xfb0845,_0x4b5f29){_0xfb0845=_0xfb0845-0x0;var _0x1aaab8=_0xba46[_0xfb0845];return _0x1aaab8;};'use strict';var multer=require(_0x6ba4('0x0'));var util=require(_0x6ba4('0x1'));var path=require('path');var timeout=require(_0x6ba4('0x2'));var express=require(_0x6ba4('0x3'));var router=express['Router']();var fs_extra=require(_0x6ba4('0x4'));var auth=require('../../components/auth/service');var interaction=require(_0x6ba4('0x5'));var config=require('../../config/environment');var controller=require(_0x6ba4('0x6'));router['get']('/',auth[_0x6ba4('0x7')](),controller[_0x6ba4('0x8')]);router[_0x6ba4('0x9')](_0x6ba4('0xa'),auth[_0x6ba4('0x7')](),controller[_0x6ba4('0xb')]);router[_0x6ba4('0xc')]('/',auth['isAuthenticated'](),controller['create']);router['put'](_0x6ba4('0xa'),auth[_0x6ba4('0x7')](),controller['update']);router[_0x6ba4('0xd')](_0x6ba4('0xa'),auth[_0x6ba4('0x7')](),controller['destroy']);module[_0x6ba4('0xe')]=router;
\ No newline at end of file
index b492c37..a620acb 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe107=['customVariable','picklist','STRING','ENUM','string','variable'];(function(_0x257a81,_0x53eb49){var _0x24f735=function(_0x1f681c){while(--_0x1f681c){_0x257a81['push'](_0x257a81['shift']());}};_0x24f735(++_0x53eb49);}(_0xe107,0x1d1));var _0x7e10=function(_0x410141,_0x3a2346){_0x410141=_0x410141-0x0;var _0x11ce4c=_0xe107[_0x410141];return _0x11ce4c;};'use strict';var Sequelize=require('sequelize');module['exports']={'type':{'type':Sequelize[_0x7e10('0x0')](_0x7e10('0x1'),_0x7e10('0x2'),_0x7e10('0x3'),'keyValue',_0x7e10('0x4')),'defaultValue':_0x7e10('0x1')},'content':{'type':Sequelize[_0x7e10('0x5')]},'key':{'type':Sequelize[_0x7e10('0x5')]},'keyType':{'type':Sequelize[_0x7e10('0x0')](_0x7e10('0x1'),_0x7e10('0x2'),_0x7e10('0x3'))},'keyContent':{'type':Sequelize[_0x7e10('0x5')]},'idField':{'type':Sequelize[_0x7e10('0x5')]},'nameField':{'type':Sequelize['STRING']},'customField':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]},'variableName':{'type':Sequelize['STRING']}};
\ No newline at end of file
+var _0xd581=['string','customVariable','picklist','STRING','ENUM','BOOLEAN','exports'];(function(_0x321bb2,_0x202794){var _0x9c12ed=function(_0x263dd3){while(--_0x263dd3){_0x321bb2['push'](_0x321bb2['shift']());}};_0x9c12ed(++_0x202794);}(_0xd581,0x1cd));var _0x1d58=function(_0x46e363,_0x45d7e2){_0x46e363=_0x46e363-0x0;var _0x3fb059=_0xd581[_0x46e363];return _0x3fb059;};'use strict';var Sequelize=require('sequelize');module[_0x1d58('0x0')]={'type':{'type':Sequelize['ENUM'](_0x1d58('0x1'),'variable',_0x1d58('0x2'),'keyValue',_0x1d58('0x3')),'defaultValue':_0x1d58('0x1')},'content':{'type':Sequelize[_0x1d58('0x4')]},'key':{'type':Sequelize[_0x1d58('0x4')]},'keyType':{'type':Sequelize[_0x1d58('0x5')]('string','variable','customVariable')},'keyContent':{'type':Sequelize[_0x1d58('0x4')]},'idField':{'type':Sequelize['STRING']},'nameField':{'type':Sequelize['STRING']},'customField':{'type':Sequelize[_0x1d58('0x6')],'defaultValue':!![]},'variableName':{'type':Sequelize[_0x1d58('0x4')]}};
\ No newline at end of file
index 2f57bf9..c464a5b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xec89=['stack','name','send','index','map','rawAttributes','type','key','model','query','filters','intersection','attributes','fields','hasOwnProperty','nolimit','sort','where','filter','VIRTUAL','merge','include','ServicenowField','findAll','rows','catch','show','params','keys','length','options','find','create','body','update','eml-format','rimraf','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox','ejs','fs-extra','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','sendStatus','status','end','json','undefined','limit','count','offset','set','apply','save','then','destroy','error'];(function(_0x6942e0,_0x131e6d){var _0xb86490=function(_0x2fd5d7){while(--_0x2fd5d7){_0x6942e0['push'](_0x6942e0['shift']());}};_0xb86490(++_0x131e6d);}(_0xec89,0x70));var _0x9ec8=function(_0x5ec8c6,_0x2be024){_0x5ec8c6=_0x5ec8c6-0x0;var _0x120b6b=_0xec89[_0x5ec8c6];return _0x120b6b;};'use strict';var emlformat=require(_0x9ec8('0x0'));var rimraf=require(_0x9ec8('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0x9ec8('0x2'));var rp=require(_0x9ec8('0x3'));var moment=require(_0x9ec8('0x4'));var BPromise=require(_0x9ec8('0x5'));var Mustache=require(_0x9ec8('0x6'));var util=require(_0x9ec8('0x7'));var path=require(_0x9ec8('0x8'));var sox=require(_0x9ec8('0x9'));var csv=require('to-csv');var ejs=require(_0x9ec8('0xa'));var fs=require('fs');var fs_extra=require(_0x9ec8('0xb'));var _=require(_0x9ec8('0xc'));var squel=require(_0x9ec8('0xd'));var crypto=require(_0x9ec8('0xe'));var jsforce=require(_0x9ec8('0xf'));var deskjs=require(_0x9ec8('0x10'));var toCsv=require(_0x9ec8('0x11'));var querystring=require(_0x9ec8('0x12'));var Papa=require(_0x9ec8('0x13'));var Redis=require(_0x9ec8('0x14'));var authService=require(_0x9ec8('0x15'));var qs=require('../../components/parsers/qs');var as=require(_0x9ec8('0x16'));var hardwareService=require(_0x9ec8('0x17'));var logger=require(_0x9ec8('0x18'))('api');var utils=require(_0x9ec8('0x19'));var config=require(_0x9ec8('0x1a'));var licenseUtil=require(_0x9ec8('0x1b'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x313a26,_0x3a081b){_0x3a081b=_0x3a081b||0xcc;return function(_0x6325e2){if(_0x6325e2){return _0x313a26[_0x9ec8('0x1c')](_0x3a081b);}return _0x313a26[_0x9ec8('0x1d')](_0x3a081b)[_0x9ec8('0x1e')]();};}function respondWithResult(_0x5c60c5,_0x30cb43){_0x30cb43=_0x30cb43||0xc8;return function(_0x314a23){if(_0x314a23){return _0x5c60c5[_0x9ec8('0x1d')](_0x30cb43)[_0x9ec8('0x1f')](_0x314a23);}};}function respondWithFilteredResult(_0x363058,_0x1d31f1){return function(_0x351752){if(_0x351752){var _0x254705=typeof _0x1d31f1['offset']===_0x9ec8('0x20')&&typeof _0x1d31f1[_0x9ec8('0x21')]===_0x9ec8('0x20');var _0x1da128=_0x351752[_0x9ec8('0x22')];var _0x2a5afc=_0x254705?0x0:_0x1d31f1[_0x9ec8('0x23')];var _0x20e53e=_0x254705?_0x351752[_0x9ec8('0x22')]:_0x1d31f1[_0x9ec8('0x23')]+_0x1d31f1[_0x9ec8('0x21')];var _0x4fc803;if(_0x20e53e>=_0x1da128){_0x20e53e=_0x1da128;_0x4fc803=0xc8;}else{_0x4fc803=0xce;}_0x363058[_0x9ec8('0x1d')](_0x4fc803);return _0x363058[_0x9ec8('0x24')]('Content-Range',_0x2a5afc+'-'+_0x20e53e+'/'+_0x1da128)[_0x9ec8('0x1f')](_0x351752);}return null;};}function patchUpdates(_0x23efb3){return function(_0x25e7bd){try{jsonpatch[_0x9ec8('0x25')](_0x25e7bd,_0x23efb3,!![]);}catch(_0x210d2d){return BPromise['reject'](_0x210d2d);}return _0x25e7bd[_0x9ec8('0x26')]();};}function saveUpdates(_0x38f525,_0x143f27){return function(_0xd951f9){if(_0xd951f9){return _0xd951f9['update'](_0x38f525)[_0x9ec8('0x27')](function(_0x1cec18){return _0x1cec18;});}return null;};}function removeEntity(_0x40e05d,_0x15e9b3){return function(_0x2fc046){if(_0x2fc046){return _0x2fc046[_0x9ec8('0x28')]()[_0x9ec8('0x27')](function(){_0x40e05d['status'](0xcc)[_0x9ec8('0x1e')]();});}};}function handleEntityNotFound(_0x132afa,_0x146236){return function(_0x57f821){if(!_0x57f821){_0x132afa[_0x9ec8('0x1c')](0x194);}return _0x57f821;};}function handleError(_0xe06ea8,_0x2115a8){_0x2115a8=_0x2115a8||0x1f4;return function(_0x19496b){logger[_0x9ec8('0x29')](_0x19496b[_0x9ec8('0x2a')]);if(_0x19496b[_0x9ec8('0x2b')]){delete _0x19496b[_0x9ec8('0x2b')];}_0xe06ea8[_0x9ec8('0x1d')](_0x2115a8)[_0x9ec8('0x2c')](_0x19496b);};}exports[_0x9ec8('0x2d')]=function(_0x1da121,_0x27d857){var _0x57d634={},_0x1030e8={},_0x306baa={'count':0x0,'rows':[]};var _0x451e72=_[_0x9ec8('0x2e')](db['ServicenowField'][_0x9ec8('0x2f')],function(_0x23c72a){return{'name':_0x23c72a['fieldName'],'type':_0x23c72a[_0x9ec8('0x30')][_0x9ec8('0x31')]};});_0x1030e8[_0x9ec8('0x32')]=_[_0x9ec8('0x2e')](_0x451e72,_0x9ec8('0x2b'));_0x1030e8[_0x9ec8('0x33')]=_['keys'](_0x1da121[_0x9ec8('0x33')]);_0x1030e8[_0x9ec8('0x34')]=_[_0x9ec8('0x35')](_0x1030e8['model'],_0x1030e8[_0x9ec8('0x33')]);_0x57d634[_0x9ec8('0x36')]=_['intersection'](_0x1030e8[_0x9ec8('0x32')],qs[_0x9ec8('0x37')](_0x1da121[_0x9ec8('0x33')][_0x9ec8('0x37')]));_0x57d634['attributes']=_0x57d634['attributes']['length']?_0x57d634['attributes']:_0x1030e8[_0x9ec8('0x32')];if(!_0x1da121[_0x9ec8('0x33')][_0x9ec8('0x38')](_0x9ec8('0x39'))){_0x57d634[_0x9ec8('0x21')]=qs['limit'](_0x1da121[_0x9ec8('0x33')][_0x9ec8('0x21')]);_0x57d634[_0x9ec8('0x23')]=qs[_0x9ec8('0x23')](_0x1da121[_0x9ec8('0x33')][_0x9ec8('0x23')]);}_0x57d634['order']=qs[_0x9ec8('0x3a')](_0x1da121[_0x9ec8('0x33')][_0x9ec8('0x3a')]);_0x57d634[_0x9ec8('0x3b')]=qs['filters'](_['pick'](_0x1da121['query'],_0x1030e8[_0x9ec8('0x34')]),_0x451e72);if(_0x1da121[_0x9ec8('0x33')][_0x9ec8('0x3c')]){_0x57d634[_0x9ec8('0x3b')]=_['merge'](_0x57d634[_0x9ec8('0x3b')],{'$or':_[_0x9ec8('0x2e')](_0x451e72,function(_0x208512){if(_0x208512[_0x9ec8('0x30')]!==_0x9ec8('0x3d')){var _0x2a732e={};_0x2a732e[_0x208512['name']]={'$like':'%'+_0x1da121[_0x9ec8('0x33')][_0x9ec8('0x3c')]+'%'};return _0x2a732e;}})});}_0x57d634=_[_0x9ec8('0x3e')]({},_0x57d634,_0x1da121['options']);var _0x21fd5c={'where':_0x57d634[_0x9ec8('0x3b')]};return db['ServicenowField'][_0x9ec8('0x22')](_0x21fd5c)['then'](function(_0x1e89db){_0x306baa[_0x9ec8('0x22')]=_0x1e89db;if(_0x1da121[_0x9ec8('0x33')]['includeAll']){_0x57d634[_0x9ec8('0x3f')]=[{'all':!![]}];}return db[_0x9ec8('0x40')][_0x9ec8('0x41')](_0x57d634);})[_0x9ec8('0x27')](function(_0x5d0d5e){_0x306baa[_0x9ec8('0x42')]=_0x5d0d5e;return _0x306baa;})[_0x9ec8('0x27')](respondWithFilteredResult(_0x27d857,_0x57d634))[_0x9ec8('0x43')](handleError(_0x27d857,null));};exports[_0x9ec8('0x44')]=function(_0x22e50d,_0x327209){var _0x2e356c={'raw':!![],'where':{'id':_0x22e50d[_0x9ec8('0x45')]['id']}},_0x4d4a14={};_0x4d4a14[_0x9ec8('0x32')]=_[_0x9ec8('0x46')](db[_0x9ec8('0x40')][_0x9ec8('0x2f')]);_0x4d4a14[_0x9ec8('0x33')]=_[_0x9ec8('0x46')](_0x22e50d[_0x9ec8('0x33')]);_0x4d4a14[_0x9ec8('0x34')]=_[_0x9ec8('0x35')](_0x4d4a14[_0x9ec8('0x32')],_0x4d4a14[_0x9ec8('0x33')]);_0x2e356c[_0x9ec8('0x36')]=_[_0x9ec8('0x35')](_0x4d4a14[_0x9ec8('0x32')],qs['fields'](_0x22e50d['query']['fields']));_0x2e356c[_0x9ec8('0x36')]=_0x2e356c[_0x9ec8('0x36')][_0x9ec8('0x47')]?_0x2e356c[_0x9ec8('0x36')]:_0x4d4a14[_0x9ec8('0x32')];if(_0x22e50d['query']['includeAll']){_0x2e356c[_0x9ec8('0x3f')]=[{'all':!![]}];}_0x2e356c=_['merge']({},_0x2e356c,_0x22e50d[_0x9ec8('0x48')]);return db[_0x9ec8('0x40')][_0x9ec8('0x49')](_0x2e356c)[_0x9ec8('0x27')](handleEntityNotFound(_0x327209,null))[_0x9ec8('0x27')](respondWithResult(_0x327209,null))['catch'](handleError(_0x327209,null));};exports[_0x9ec8('0x4a')]=function(_0x114ebc,_0xabc3bc){return db[_0x9ec8('0x40')]['create'](_0x114ebc[_0x9ec8('0x4b')],{})[_0x9ec8('0x27')](respondWithResult(_0xabc3bc,0xc9))[_0x9ec8('0x43')](handleError(_0xabc3bc,null));};exports[_0x9ec8('0x4c')]=function(_0x3b243c,_0x28a717){if(_0x3b243c['body']['id']){delete _0x3b243c[_0x9ec8('0x4b')]['id'];}return db[_0x9ec8('0x40')]['find']({'where':{'id':_0x3b243c[_0x9ec8('0x45')]['id']}})[_0x9ec8('0x27')](handleEntityNotFound(_0x28a717,null))['then'](saveUpdates(_0x3b243c[_0x9ec8('0x4b')],null))[_0x9ec8('0x27')](respondWithResult(_0x28a717,null))[_0x9ec8('0x43')](handleError(_0x28a717,null));};exports[_0x9ec8('0x28')]=function(_0x18914b,_0x55f4b8){return db[_0x9ec8('0x40')]['find']({'where':{'id':_0x18914b[_0x9ec8('0x45')]['id']}})[_0x9ec8('0x27')](handleEntityNotFound(_0x55f4b8,null))[_0x9ec8('0x27')](removeEntity(_0x55f4b8,null))[_0x9ec8('0x43')](handleError(_0x55f4b8,null));};
\ No newline at end of file
+var _0x6f4c=['then','destroy','stack','name','send','index','ServicenowField','fieldName','key','model','map','query','keys','fields','attributes','hasOwnProperty','nolimit','order','sort','where','filters','pick','filter','merge','type','VIRTUAL','options','includeAll','rows','catch','params','rawAttributes','intersection','length','include','find','create','body','update','eml-format','rimraf','zip-dir','request-promise','bluebird','mustache','util','path','sox','to-csv','ejs','fs-extra','lodash','squel','jsforce','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','json','undefined','offset','count','limit','set','apply','reject'];(function(_0x22ba54,_0x3c105b){var _0x17af5b=function(_0x345a36){while(--_0x345a36){_0x22ba54['push'](_0x22ba54['shift']());}};_0x17af5b(++_0x3c105b);}(_0x6f4c,0x1ef));var _0xc6f4=function(_0x4132b8,_0x5bc281){_0x4132b8=_0x4132b8-0x0;var _0x235e1b=_0x6f4c[_0x4132b8];return _0x235e1b;};'use strict';var emlformat=require(_0xc6f4('0x0'));var rimraf=require(_0xc6f4('0x1'));var zipdir=require(_0xc6f4('0x2'));var jsonpatch=require('fast-json-patch');var rp=require(_0xc6f4('0x3'));var moment=require('moment');var BPromise=require(_0xc6f4('0x4'));var Mustache=require(_0xc6f4('0x5'));var util=require(_0xc6f4('0x6'));var path=require(_0xc6f4('0x7'));var sox=require(_0xc6f4('0x8'));var csv=require(_0xc6f4('0x9'));var ejs=require(_0xc6f4('0xa'));var fs=require('fs');var fs_extra=require(_0xc6f4('0xb'));var _=require(_0xc6f4('0xc'));var squel=require(_0xc6f4('0xd'));var crypto=require('crypto');var jsforce=require(_0xc6f4('0xe'));var deskjs=require('desk.js');var toCsv=require(_0xc6f4('0x9'));var querystring=require(_0xc6f4('0xf'));var Papa=require(_0xc6f4('0x10'));var Redis=require(_0xc6f4('0x11'));var authService=require(_0xc6f4('0x12'));var qs=require('../../components/parsers/qs');var as=require(_0xc6f4('0x13'));var hardwareService=require(_0xc6f4('0x14'));var logger=require(_0xc6f4('0x15'))('api');var utils=require(_0xc6f4('0x16'));var config=require(_0xc6f4('0x17'));var licenseUtil=require(_0xc6f4('0x18'));var db=require(_0xc6f4('0x19'))['db'];function respondWithStatusCode(_0x1579dc,_0x1d2fab){_0x1d2fab=_0x1d2fab||0xcc;return function(_0x340789){if(_0x340789){return _0x1579dc[_0xc6f4('0x1a')](_0x1d2fab);}return _0x1579dc[_0xc6f4('0x1b')](_0x1d2fab)[_0xc6f4('0x1c')]();};}function respondWithResult(_0x4cb8a2,_0x59e443){_0x59e443=_0x59e443||0xc8;return function(_0x1c897e){if(_0x1c897e){return _0x4cb8a2[_0xc6f4('0x1b')](_0x59e443)[_0xc6f4('0x1d')](_0x1c897e);}};}function respondWithFilteredResult(_0x2d1a63,_0x319f61){return function(_0x584438){if(_0x584438){var _0x4435d8=typeof _0x319f61['offset']===_0xc6f4('0x1e')&&typeof _0x319f61['limit']==='undefined';var _0xfdb536=_0x584438['count'];var _0x55dc5b=_0x4435d8?0x0:_0x319f61[_0xc6f4('0x1f')];var _0x1e1eb4=_0x4435d8?_0x584438[_0xc6f4('0x20')]:_0x319f61[_0xc6f4('0x1f')]+_0x319f61[_0xc6f4('0x21')];var _0xb93313;if(_0x1e1eb4>=_0xfdb536){_0x1e1eb4=_0xfdb536;_0xb93313=0xc8;}else{_0xb93313=0xce;}_0x2d1a63[_0xc6f4('0x1b')](_0xb93313);return _0x2d1a63[_0xc6f4('0x22')]('Content-Range',_0x55dc5b+'-'+_0x1e1eb4+'/'+_0xfdb536)[_0xc6f4('0x1d')](_0x584438);}return null;};}function patchUpdates(_0x61859){return function(_0x5deab0){try{jsonpatch[_0xc6f4('0x23')](_0x5deab0,_0x61859,!![]);}catch(_0x548383){return BPromise[_0xc6f4('0x24')](_0x548383);}return _0x5deab0['save']();};}function saveUpdates(_0x2310a7,_0x3aa797){return function(_0x1bf0ae){if(_0x1bf0ae){return _0x1bf0ae['update'](_0x2310a7)[_0xc6f4('0x25')](function(_0x4da32c){return _0x4da32c;});}return null;};}function removeEntity(_0x3f6858,_0x25a286){return function(_0x5204aa){if(_0x5204aa){return _0x5204aa[_0xc6f4('0x26')]()[_0xc6f4('0x25')](function(){_0x3f6858[_0xc6f4('0x1b')](0xcc)[_0xc6f4('0x1c')]();});}};}function handleEntityNotFound(_0x43ef23,_0xbefe44){return function(_0x773b58){if(!_0x773b58){_0x43ef23[_0xc6f4('0x1a')](0x194);}return _0x773b58;};}function handleError(_0x520c29,_0x35e5b2){_0x35e5b2=_0x35e5b2||0x1f4;return function(_0xb31932){logger['error'](_0xb31932[_0xc6f4('0x27')]);if(_0xb31932[_0xc6f4('0x28')]){delete _0xb31932['name'];}_0x520c29[_0xc6f4('0x1b')](_0x35e5b2)[_0xc6f4('0x29')](_0xb31932);};}exports[_0xc6f4('0x2a')]=function(_0x191758,_0xbb036d){var _0x2458e7={},_0x5e7b68={},_0x4b9b68={'count':0x0,'rows':[]};var _0x989a03=_['map'](db[_0xc6f4('0x2b')]['rawAttributes'],function(_0x4092ef){return{'name':_0x4092ef[_0xc6f4('0x2c')],'type':_0x4092ef['type'][_0xc6f4('0x2d')]};});_0x5e7b68[_0xc6f4('0x2e')]=_[_0xc6f4('0x2f')](_0x989a03,_0xc6f4('0x28'));_0x5e7b68[_0xc6f4('0x30')]=_[_0xc6f4('0x31')](_0x191758[_0xc6f4('0x30')]);_0x5e7b68['filters']=_['intersection'](_0x5e7b68[_0xc6f4('0x2e')],_0x5e7b68[_0xc6f4('0x30')]);_0x2458e7['attributes']=_['intersection'](_0x5e7b68[_0xc6f4('0x2e')],qs[_0xc6f4('0x32')](_0x191758['query'][_0xc6f4('0x32')]));_0x2458e7[_0xc6f4('0x33')]=_0x2458e7['attributes']['length']?_0x2458e7['attributes']:_0x5e7b68['model'];if(!_0x191758[_0xc6f4('0x30')][_0xc6f4('0x34')](_0xc6f4('0x35'))){_0x2458e7[_0xc6f4('0x21')]=qs[_0xc6f4('0x21')](_0x191758[_0xc6f4('0x30')][_0xc6f4('0x21')]);_0x2458e7[_0xc6f4('0x1f')]=qs[_0xc6f4('0x1f')](_0x191758['query'][_0xc6f4('0x1f')]);}_0x2458e7[_0xc6f4('0x36')]=qs[_0xc6f4('0x37')](_0x191758[_0xc6f4('0x30')][_0xc6f4('0x37')]);_0x2458e7[_0xc6f4('0x38')]=qs[_0xc6f4('0x39')](_[_0xc6f4('0x3a')](_0x191758[_0xc6f4('0x30')],_0x5e7b68[_0xc6f4('0x39')]),_0x989a03);if(_0x191758['query'][_0xc6f4('0x3b')]){_0x2458e7[_0xc6f4('0x38')]=_[_0xc6f4('0x3c')](_0x2458e7['where'],{'$or':_['map'](_0x989a03,function(_0x9cff7a){if(_0x9cff7a[_0xc6f4('0x3d')]!==_0xc6f4('0x3e')){var _0x5c46a3={};_0x5c46a3[_0x9cff7a[_0xc6f4('0x28')]]={'$like':'%'+_0x191758['query'][_0xc6f4('0x3b')]+'%'};return _0x5c46a3;}})});}_0x2458e7=_[_0xc6f4('0x3c')]({},_0x2458e7,_0x191758[_0xc6f4('0x3f')]);var _0x3322a9={'where':_0x2458e7['where']};return db[_0xc6f4('0x2b')][_0xc6f4('0x20')](_0x3322a9)[_0xc6f4('0x25')](function(_0x1c03ab){_0x4b9b68[_0xc6f4('0x20')]=_0x1c03ab;if(_0x191758[_0xc6f4('0x30')][_0xc6f4('0x40')]){_0x2458e7['include']=[{'all':!![]}];}return db[_0xc6f4('0x2b')]['findAll'](_0x2458e7);})['then'](function(_0x39deb4){_0x4b9b68[_0xc6f4('0x41')]=_0x39deb4;return _0x4b9b68;})[_0xc6f4('0x25')](respondWithFilteredResult(_0xbb036d,_0x2458e7))[_0xc6f4('0x42')](handleError(_0xbb036d,null));};exports['show']=function(_0x16cfcc,_0x1fa435){var _0x4203f6={'raw':!![],'where':{'id':_0x16cfcc[_0xc6f4('0x43')]['id']}},_0x58836f={};_0x58836f[_0xc6f4('0x2e')]=_['keys'](db[_0xc6f4('0x2b')][_0xc6f4('0x44')]);_0x58836f[_0xc6f4('0x30')]=_[_0xc6f4('0x31')](_0x16cfcc[_0xc6f4('0x30')]);_0x58836f['filters']=_[_0xc6f4('0x45')](_0x58836f[_0xc6f4('0x2e')],_0x58836f[_0xc6f4('0x30')]);_0x4203f6['attributes']=_[_0xc6f4('0x45')](_0x58836f['model'],qs[_0xc6f4('0x32')](_0x16cfcc[_0xc6f4('0x30')]['fields']));_0x4203f6['attributes']=_0x4203f6[_0xc6f4('0x33')][_0xc6f4('0x46')]?_0x4203f6[_0xc6f4('0x33')]:_0x58836f[_0xc6f4('0x2e')];if(_0x16cfcc[_0xc6f4('0x30')][_0xc6f4('0x40')]){_0x4203f6[_0xc6f4('0x47')]=[{'all':!![]}];}_0x4203f6=_['merge']({},_0x4203f6,_0x16cfcc[_0xc6f4('0x3f')]);return db[_0xc6f4('0x2b')][_0xc6f4('0x48')](_0x4203f6)[_0xc6f4('0x25')](handleEntityNotFound(_0x1fa435,null))[_0xc6f4('0x25')](respondWithResult(_0x1fa435,null))[_0xc6f4('0x42')](handleError(_0x1fa435,null));};exports[_0xc6f4('0x49')]=function(_0x443a19,_0x38e08f){return db['ServicenowField']['create'](_0x443a19[_0xc6f4('0x4a')],{})[_0xc6f4('0x25')](respondWithResult(_0x38e08f,0xc9))[_0xc6f4('0x42')](handleError(_0x38e08f,null));};exports[_0xc6f4('0x4b')]=function(_0x495a1e,_0x636de9){if(_0x495a1e[_0xc6f4('0x4a')]['id']){delete _0x495a1e[_0xc6f4('0x4a')]['id'];}return db[_0xc6f4('0x2b')][_0xc6f4('0x48')]({'where':{'id':_0x495a1e['params']['id']}})[_0xc6f4('0x25')](handleEntityNotFound(_0x636de9,null))[_0xc6f4('0x25')](saveUpdates(_0x495a1e['body'],null))[_0xc6f4('0x25')](respondWithResult(_0x636de9,null))[_0xc6f4('0x42')](handleError(_0x636de9,null));};exports[_0xc6f4('0x26')]=function(_0x37ebfb,_0x490295){return db[_0xc6f4('0x2b')]['find']({'where':{'id':_0x37ebfb[_0xc6f4('0x43')]['id']}})[_0xc6f4('0x25')](handleEntityNotFound(_0x490295,null))[_0xc6f4('0x25')](removeEntity(_0x490295,null))['catch'](handleError(_0x490295,null));};
\ No newline at end of file
index 0501b9b..7629c58 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe789=['../../config/environment','./intServicenowField.attributes','define','ServicenowField','servicenow_unique_index','idField','FieldId','lodash','util','../../config/logger','api','moment','bluebird','path','rimraf'];(function(_0x14d9db,_0x5ca659){var _0x347753=function(_0x5ab084){while(--_0x5ab084){_0x14d9db['push'](_0x14d9db['shift']());}};_0x347753(++_0x5ca659);}(_0xe789,0x7f));var _0x9e78=function(_0x5359b1,_0x244dc8){_0x5359b1=_0x5359b1-0x0;var _0x22aa54=_0xe789[_0x5359b1];return _0x22aa54;};'use strict';var _=require(_0x9e78('0x0'));var util=require(_0x9e78('0x1'));var logger=require(_0x9e78('0x2'))(_0x9e78('0x3'));var moment=require(_0x9e78('0x4'));var BPromise=require(_0x9e78('0x5'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x9e78('0x6'));var rimraf=require(_0x9e78('0x7'));var config=require(_0x9e78('0x8'));var attributes=require(_0x9e78('0x9'));module['exports']=function(_0x377db8,_0x31aecd){return _0x377db8[_0x9e78('0xa')](_0x9e78('0xb'),attributes,{'tableName':'int_servicenow_fields','paranoid':![],'indexes':[{'name':_0x9e78('0xc'),'fields':[_0x9e78('0xd'),_0x9e78('0xe')],'unique':!![]}],'timestamps':!![]});};
\ No newline at end of file
+var _0x6cf1=['FieldId','lodash','util','../../config/logger','moment','bluebird','request-promise','path','rimraf','../../config/environment','./intServicenowField.attributes','exports','define','ServicenowField','int_servicenow_fields','servicenow_unique_index'];(function(_0x1b5aea,_0x3f04b7){var _0x15cfc6=function(_0x204e92){while(--_0x204e92){_0x1b5aea['push'](_0x1b5aea['shift']());}};_0x15cfc6(++_0x3f04b7);}(_0x6cf1,0xd1));var _0x16cf=function(_0x1bb474,_0x4c993c){_0x1bb474=_0x1bb474-0x0;var _0x3eb834=_0x6cf1[_0x1bb474];return _0x3eb834;};'use strict';var _=require(_0x16cf('0x0'));var util=require(_0x16cf('0x1'));var logger=require(_0x16cf('0x2'))('api');var moment=require(_0x16cf('0x3'));var BPromise=require(_0x16cf('0x4'));var rp=require(_0x16cf('0x5'));var fs=require('fs');var path=require(_0x16cf('0x6'));var rimraf=require(_0x16cf('0x7'));var config=require(_0x16cf('0x8'));var attributes=require(_0x16cf('0x9'));module[_0x16cf('0xa')]=function(_0xb7a6ff,_0x5604f5){return _0xb7a6ff[_0x16cf('0xb')](_0x16cf('0xc'),attributes,{'tableName':_0x16cf('0xd'),'paranoid':![],'indexes':[{'name':_0x16cf('0xe'),'fields':['idField',_0x16cf('0xf')],'unique':!![]}],'timestamps':!![]});};
\ No newline at end of file
index fd2cfe3..9eb2604 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x70e0=['code','ServicenowField,\x20%s,\x20%s','message','result','catch','lodash','util','moment','ioredis','../../mysqldb','../../config/utils','../../config/logger','../../config/environment','client','request','then','info','debug','ServicenowField,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error'];(function(_0x55cce3,_0x1bcb58){var _0x180057=function(_0x436ae2){while(--_0x436ae2){_0x55cce3['push'](_0x55cce3['shift']());}};_0x180057(++_0x1bcb58);}(_0x70e0,0x17b));var _0x070e=function(_0x1392a1,_0x19fd73){_0x1392a1=_0x1392a1-0x0;var _0xd5abb0=_0x70e0[_0x1392a1];return _0xd5abb0;};'use strict';var _=require(_0x070e('0x0'));var util=require(_0x070e('0x1'));var moment=require(_0x070e('0x2'));var BPromise=require('bluebird');var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x070e('0x3'));var db=require(_0x070e('0x4'))['db'];var utils=require(_0x070e('0x5'));var logger=require(_0x070e('0x6'))('rpc');var config=require(_0x070e('0x7'));var jayson=require('jayson/promise');var client=jayson[_0x070e('0x8')]['http']({'port':0x232a});function respondWithRpcPromise(_0x56e420,_0x5032e5,_0x35ab0c){return new BPromise(function(_0x1e11f0,_0x604664){return client[_0x070e('0x9')](_0x56e420,_0x35ab0c)[_0x070e('0xa')](function(_0x68a09e){logger[_0x070e('0xb')]('ServicenowField,\x20%s,\x20%s',_0x5032e5,'request\x20sent');logger[_0x070e('0xc')](_0x070e('0xd'),_0x5032e5,_0x070e('0xe'),JSON[_0x070e('0xf')](_0x68a09e));if(_0x68a09e[_0x070e('0x10')]){if(_0x68a09e[_0x070e('0x10')][_0x070e('0x11')]===0x1f4){logger[_0x070e('0x10')](_0x070e('0x12'),_0x5032e5,_0x68a09e[_0x070e('0x10')][_0x070e('0x13')]);return _0x604664(_0x68a09e['error']['message']);}logger[_0x070e('0x10')]('ServicenowField,\x20%s,\x20%s',_0x5032e5,_0x68a09e['error']['message']);return _0x1e11f0(_0x68a09e[_0x070e('0x10')][_0x070e('0x13')]);}else{logger['info']('ServicenowField,\x20%s,\x20%s',_0x5032e5,_0x070e('0xe'));_0x1e11f0(_0x68a09e[_0x070e('0x14')][_0x070e('0x13')]);}})[_0x070e('0x15')](function(_0x5bc71e){logger['error'](_0x070e('0x12'),_0x5032e5,_0x5bc71e);_0x604664(_0x5bc71e);});});}
\ No newline at end of file
+var _0x70e0=['code','ServicenowField,\x20%s,\x20%s','message','result','catch','lodash','util','moment','ioredis','../../mysqldb','../../config/utils','../../config/logger','../../config/environment','client','request','then','info','debug','ServicenowField,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error'];(function(_0x1d9464,_0x43d7b8){var _0x5c222c=function(_0x11db03){while(--_0x11db03){_0x1d9464['push'](_0x1d9464['shift']());}};_0x5c222c(++_0x43d7b8);}(_0x70e0,0x17b));var _0x070e=function(_0xbe747b,_0x17e310){_0xbe747b=_0xbe747b-0x0;var _0x4c1608=_0x70e0[_0xbe747b];return _0x4c1608;};'use strict';var _=require(_0x070e('0x0'));var util=require(_0x070e('0x1'));var moment=require(_0x070e('0x2'));var BPromise=require('bluebird');var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x070e('0x3'));var db=require(_0x070e('0x4'))['db'];var utils=require(_0x070e('0x5'));var logger=require(_0x070e('0x6'))('rpc');var config=require(_0x070e('0x7'));var jayson=require('jayson/promise');var client=jayson[_0x070e('0x8')]['http']({'port':0x232a});function respondWithRpcPromise(_0x56e420,_0x5032e5,_0x35ab0c){return new BPromise(function(_0x1e11f0,_0x604664){return client[_0x070e('0x9')](_0x56e420,_0x35ab0c)[_0x070e('0xa')](function(_0x68a09e){logger[_0x070e('0xb')]('ServicenowField,\x20%s,\x20%s',_0x5032e5,'request\x20sent');logger[_0x070e('0xc')](_0x070e('0xd'),_0x5032e5,_0x070e('0xe'),JSON[_0x070e('0xf')](_0x68a09e));if(_0x68a09e[_0x070e('0x10')]){if(_0x68a09e[_0x070e('0x10')][_0x070e('0x11')]===0x1f4){logger[_0x070e('0x10')](_0x070e('0x12'),_0x5032e5,_0x68a09e[_0x070e('0x10')][_0x070e('0x13')]);return _0x604664(_0x68a09e['error']['message']);}logger[_0x070e('0x10')]('ServicenowField,\x20%s,\x20%s',_0x5032e5,_0x68a09e['error']['message']);return _0x1e11f0(_0x68a09e[_0x070e('0x10')][_0x070e('0x13')]);}else{logger['info']('ServicenowField,\x20%s,\x20%s',_0x5032e5,_0x070e('0xe'));_0x1e11f0(_0x68a09e[_0x070e('0x14')][_0x070e('0x13')]);}})[_0x070e('0x15')](function(_0x5bc71e){logger['error'](_0x070e('0x12'),_0x5032e5,_0x5bc71e);_0x604664(_0x5bc71e);});});}
\ No newline at end of file
index 146c486..3303d8a 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','./intSugarcrmAccount.controller','get','isAuthenticated','index','/:id','show','getConfigurations','/:id/fields','getFields','post','create','addConfiguration','put','update','delete','destroy','exports','multer','util','path'];(function(_0x5a4a00,_0x1e537c){var _0x510f6a=function(_0x18ae26){while(--_0x18ae26){_0x5a4a00['push'](_0x5a4a00['shift']());}};_0x510f6a(++_0x1e537c);}(_0x9957,0x93));var _0x7995=function(_0x6c993a,_0x5ea3ab){_0x6c993a=_0x6c993a-0x0;var _0x27f547=_0x9957[_0x6c993a];return _0x27f547;};'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','./intSugarcrmAccount.controller','get','isAuthenticated','index','/:id','show','getConfigurations','/:id/fields','getFields','post','create','addConfiguration','put','update','delete','destroy','exports','multer','util','path'];(function(_0x2175b2,_0x1d206c){var _0x254d7c=function(_0x5ca39b){while(--_0x5ca39b){_0x2175b2['push'](_0x2175b2['shift']());}};_0x254d7c(++_0x1d206c);}(_0x9957,0x93));var _0x7995=function(_0x6c993a,_0x5ea3ab){_0x6c993a=_0x6c993a-0x0;var _0x27f547=_0x9957[_0x6c993a];return _0x27f547;};'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 5529aa3..256636f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa9e0=['remoteUri','sequelize','exports','STRING','username'];(function(_0x52eeb0,_0x38efea){var _0x67c2f2=function(_0x4c56e0){while(--_0x4c56e0){_0x52eeb0['push'](_0x52eeb0['shift']());}};_0x67c2f2(++_0x38efea);}(_0xa9e0,0x123));var _0x0a9e=function(_0x1b349a,_0x22222c){_0x1b349a=_0x1b349a-0x0;var _0x5d1f7c=_0xa9e0[_0x1b349a];return _0x5d1f7c;};'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(_0xa421cc,_0x1e4732){var _0x287212=function(_0x41187c){while(--_0x41187c){_0xa421cc['push'](_0xa421cc['shift']());}};_0x287212(++_0x1e4732);}(_0xa9e0,0x123));var _0x0a9e=function(_0x19e35c,_0x29cd1e){_0x19e35c=_0x19e35c-0x0;var _0x3e1fe8=_0xa9e0[_0x19e35c];return _0x3e1fe8;};'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 8306a73..c56614b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2f72=['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','../../config/license/hardware','../../config/logger','../../config/utils','../../config/environment','../../mysqldb','sendStatus','status','end','json','offset','undefined','limit','count','set','Content-Range','apply','reject','save','update','destroy','then','error','name','send','map','fieldName','type','model','query','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort','pick','filter','where','VIRTUAL','merge','SugarcrmAccount','includeAll','include','findAll','rows','catch','show','params','keys','options','create','body','find','getConfigurations','findOne','SugarcrmConfiguration','rawAttributes','addConfiguration','AccountId','Subjects','getSubjects','channel','Descriptions','getDescriptions','assigned_user_id','created_by','duration_hours','duration_minutes','parent_id','parent_name','direction','username','password','remoteUri','slice','POST','format','%s%s','/service/v4_1/rest.php','JSON','PLAIN','Invalid\x20Login','get_module_fields','Calls','values','remove','includes','label','endsWith','value','test','statusCode','getFields,\x20%s,\x20%s,\x20%s','getFields','Wrong\x20credentials','eml-format','rimraf','zip-dir','fast-json-patch','request-promise'];(function(_0x321bb2,_0x202794){var _0x9c12ed=function(_0x263dd3){while(--_0x263dd3){_0x321bb2['push'](_0x321bb2['shift']());}};_0x9c12ed(++_0x202794);}(_0x2f72,0x166));var _0x22f7=function(_0x426c29,_0x1c672f){_0x426c29=_0x426c29-0x0;var _0x235970=_0x2f72[_0x426c29];return _0x235970;};'use strict';var emlformat=require(_0x22f7('0x0'));var rimraf=require(_0x22f7('0x1'));var zipdir=require(_0x22f7('0x2'));var jsonpatch=require(_0x22f7('0x3'));var rp=require(_0x22f7('0x4'));var moment=require(_0x22f7('0x5'));var BPromise=require(_0x22f7('0x6'));var Mustache=require(_0x22f7('0x7'));var util=require('util');var path=require(_0x22f7('0x8'));var sox=require(_0x22f7('0x9'));var csv=require(_0x22f7('0xa'));var ejs=require(_0x22f7('0xb'));var fs=require('fs');var fs_extra=require(_0x22f7('0xc'));var _=require(_0x22f7('0xd'));var squel=require(_0x22f7('0xe'));var crypto=require(_0x22f7('0xf'));var jsforce=require(_0x22f7('0x10'));var deskjs=require(_0x22f7('0x11'));var toCsv=require(_0x22f7('0xa'));var querystring=require(_0x22f7('0x12'));var Papa=require(_0x22f7('0x13'));var Redis=require(_0x22f7('0x14'));var authService=require(_0x22f7('0x15'));var qs=require(_0x22f7('0x16'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x22f7('0x17'));var logger=require(_0x22f7('0x18'))('api');var utils=require(_0x22f7('0x19'));var config=require(_0x22f7('0x1a'));var licenseUtil=require('../../config/license/util');var db=require(_0x22f7('0x1b'))['db'];var integrations=require('../../components/integrations/configuration');function respondWithStatusCode(_0x1d69c4,_0x2d87bc){_0x2d87bc=_0x2d87bc||0xcc;return function(_0x5ca4dc){if(_0x5ca4dc){return _0x1d69c4[_0x22f7('0x1c')](_0x2d87bc);}return _0x1d69c4[_0x22f7('0x1d')](_0x2d87bc)[_0x22f7('0x1e')]();};}function respondWithResult(_0x379b18,_0x3ddaed){_0x3ddaed=_0x3ddaed||0xc8;return function(_0x40ddf3){if(_0x40ddf3){return _0x379b18[_0x22f7('0x1d')](_0x3ddaed)[_0x22f7('0x1f')](_0x40ddf3);}};}function respondWithFilteredResult(_0x159f04,_0x2f0a74){return function(_0x36c213){if(_0x36c213){var _0x24a356=typeof _0x2f0a74[_0x22f7('0x20')]===_0x22f7('0x21')&&typeof _0x2f0a74[_0x22f7('0x22')]==='undefined';var _0x4e71f5=_0x36c213[_0x22f7('0x23')];var _0x1c3971=_0x24a356?0x0:_0x2f0a74[_0x22f7('0x20')];var _0xa62ab6=_0x24a356?_0x36c213[_0x22f7('0x23')]:_0x2f0a74[_0x22f7('0x20')]+_0x2f0a74[_0x22f7('0x22')];var _0xe025fa;if(_0xa62ab6>=_0x4e71f5){_0xa62ab6=_0x4e71f5;_0xe025fa=0xc8;}else{_0xe025fa=0xce;}_0x159f04['status'](_0xe025fa);return _0x159f04[_0x22f7('0x24')](_0x22f7('0x25'),_0x1c3971+'-'+_0xa62ab6+'/'+_0x4e71f5)[_0x22f7('0x1f')](_0x36c213);}return null;};}function patchUpdates(_0x435eb6){return function(_0x577abf){try{jsonpatch[_0x22f7('0x26')](_0x577abf,_0x435eb6,!![]);}catch(_0x3db7ed){return BPromise[_0x22f7('0x27')](_0x3db7ed);}return _0x577abf[_0x22f7('0x28')]();};}function saveUpdates(_0x352663,_0x5d79cc){return function(_0x48e352){if(_0x48e352){return _0x48e352[_0x22f7('0x29')](_0x352663)['then'](function(_0x320dc1){return _0x320dc1;});}return null;};}function removeEntity(_0x1545f5,_0xc53928){return function(_0x3bb24e){if(_0x3bb24e){return _0x3bb24e[_0x22f7('0x2a')]()[_0x22f7('0x2b')](function(){_0x1545f5['status'](0xcc)[_0x22f7('0x1e')]();});}};}function handleEntityNotFound(_0x48c489,_0x580245){return function(_0x18ad43){if(!_0x18ad43){_0x48c489[_0x22f7('0x1c')](0x194);}return _0x18ad43;};}function handleError(_0x3ad77d,_0x52995c){_0x52995c=_0x52995c||0x1f4;return function(_0xf3592d){logger[_0x22f7('0x2c')](_0xf3592d['stack']);if(_0xf3592d[_0x22f7('0x2d')]){delete _0xf3592d[_0x22f7('0x2d')];}_0x3ad77d['status'](_0x52995c)[_0x22f7('0x2e')](_0xf3592d);};}exports['index']=function(_0xa3346f,_0xbf4c5c){var _0x14c71e={},_0x4df1a2={},_0x2ab5aa={'count':0x0,'rows':[]};var _0x1816ac=_[_0x22f7('0x2f')](db['SugarcrmAccount']['rawAttributes'],function(_0x2c7d6c){return{'name':_0x2c7d6c[_0x22f7('0x30')],'type':_0x2c7d6c[_0x22f7('0x31')]['key']};});_0x4df1a2[_0x22f7('0x32')]=_[_0x22f7('0x2f')](_0x1816ac,_0x22f7('0x2d'));_0x4df1a2[_0x22f7('0x33')]=_['keys'](_0xa3346f[_0x22f7('0x33')]);_0x4df1a2[_0x22f7('0x34')]=_[_0x22f7('0x35')](_0x4df1a2['model'],_0x4df1a2[_0x22f7('0x33')]);_0x14c71e[_0x22f7('0x36')]=_[_0x22f7('0x35')](_0x4df1a2[_0x22f7('0x32')],qs[_0x22f7('0x37')](_0xa3346f[_0x22f7('0x33')][_0x22f7('0x37')]));_0x14c71e[_0x22f7('0x36')]=_0x14c71e[_0x22f7('0x36')][_0x22f7('0x38')]?_0x14c71e[_0x22f7('0x36')]:_0x4df1a2[_0x22f7('0x32')];if(!_0xa3346f[_0x22f7('0x33')][_0x22f7('0x39')](_0x22f7('0x3a'))){_0x14c71e[_0x22f7('0x22')]=qs[_0x22f7('0x22')](_0xa3346f[_0x22f7('0x33')][_0x22f7('0x22')]);_0x14c71e[_0x22f7('0x20')]=qs[_0x22f7('0x20')](_0xa3346f[_0x22f7('0x33')][_0x22f7('0x20')]);}_0x14c71e[_0x22f7('0x3b')]=qs[_0x22f7('0x3c')](_0xa3346f['query'][_0x22f7('0x3c')]);_0x14c71e['where']=qs[_0x22f7('0x34')](_[_0x22f7('0x3d')](_0xa3346f[_0x22f7('0x33')],_0x4df1a2[_0x22f7('0x34')]),_0x1816ac);if(_0xa3346f['query'][_0x22f7('0x3e')]){_0x14c71e[_0x22f7('0x3f')]=_['merge'](_0x14c71e[_0x22f7('0x3f')],{'$or':_[_0x22f7('0x2f')](_0x1816ac,function(_0x1a71b3){if(_0x1a71b3[_0x22f7('0x31')]!==_0x22f7('0x40')){var _0x22e77e={};_0x22e77e[_0x1a71b3[_0x22f7('0x2d')]]={'$like':'%'+_0xa3346f[_0x22f7('0x33')][_0x22f7('0x3e')]+'%'};return _0x22e77e;}})});}_0x14c71e=_[_0x22f7('0x41')]({},_0x14c71e,_0xa3346f['options']);var _0x452315={'where':_0x14c71e[_0x22f7('0x3f')]};return db[_0x22f7('0x42')]['count'](_0x452315)[_0x22f7('0x2b')](function(_0x5b86f2){_0x2ab5aa[_0x22f7('0x23')]=_0x5b86f2;if(_0xa3346f['query'][_0x22f7('0x43')]){_0x14c71e[_0x22f7('0x44')]=[{'all':!![]}];}return db[_0x22f7('0x42')][_0x22f7('0x45')](_0x14c71e);})[_0x22f7('0x2b')](function(_0x250f18){_0x2ab5aa[_0x22f7('0x46')]=_0x250f18;return _0x2ab5aa;})['then'](respondWithFilteredResult(_0xbf4c5c,_0x14c71e))[_0x22f7('0x47')](handleError(_0xbf4c5c,null));};exports[_0x22f7('0x48')]=function(_0x598cca,_0x419739){var _0x4b456a={'raw':![],'where':{'id':_0x598cca[_0x22f7('0x49')]['id']}},_0x326f98={};_0x326f98['model']=_[_0x22f7('0x4a')](db[_0x22f7('0x42')]['rawAttributes']);_0x326f98['query']=_[_0x22f7('0x4a')](_0x598cca[_0x22f7('0x33')]);_0x326f98[_0x22f7('0x34')]=_[_0x22f7('0x35')](_0x326f98['model'],_0x326f98[_0x22f7('0x33')]);_0x4b456a[_0x22f7('0x36')]=_[_0x22f7('0x35')](_0x326f98['model'],qs['fields'](_0x598cca['query'][_0x22f7('0x37')]));_0x4b456a[_0x22f7('0x36')]=_0x4b456a[_0x22f7('0x36')][_0x22f7('0x38')]?_0x4b456a[_0x22f7('0x36')]:_0x326f98['model'];if(_0x598cca[_0x22f7('0x33')][_0x22f7('0x43')]){_0x4b456a[_0x22f7('0x44')]=[{'all':!![]}];}_0x4b456a=_[_0x22f7('0x41')]({},_0x4b456a,_0x598cca[_0x22f7('0x4b')]);return db[_0x22f7('0x42')]['find'](_0x4b456a)[_0x22f7('0x2b')](handleEntityNotFound(_0x419739,null))[_0x22f7('0x2b')](respondWithResult(_0x419739,null))['catch'](handleError(_0x419739,null));};exports[_0x22f7('0x4c')]=function(_0xa124eb,_0x5d9f6d){return db[_0x22f7('0x42')][_0x22f7('0x4c')](_0xa124eb[_0x22f7('0x4d')],{})[_0x22f7('0x2b')](respondWithResult(_0x5d9f6d,0xc9))[_0x22f7('0x47')](handleError(_0x5d9f6d,null));};exports[_0x22f7('0x29')]=function(_0x2dc50d,_0x28ce18){if(_0x2dc50d[_0x22f7('0x4d')]['id']){delete _0x2dc50d['body']['id'];}return db[_0x22f7('0x42')][_0x22f7('0x4e')]({'where':{'id':_0x2dc50d[_0x22f7('0x49')]['id']}})[_0x22f7('0x2b')](handleEntityNotFound(_0x28ce18,null))[_0x22f7('0x2b')](saveUpdates(_0x2dc50d[_0x22f7('0x4d')],null))[_0x22f7('0x2b')](respondWithResult(_0x28ce18,null))['catch'](handleError(_0x28ce18,null));};exports[_0x22f7('0x2a')]=function(_0x11308a,_0x42d604){return db[_0x22f7('0x42')][_0x22f7('0x4e')]({'where':{'id':_0x11308a[_0x22f7('0x49')]['id']}})[_0x22f7('0x2b')](handleEntityNotFound(_0x42d604,null))[_0x22f7('0x2b')](removeEntity(_0x42d604,null))[_0x22f7('0x47')](handleError(_0x42d604,null));};exports[_0x22f7('0x4f')]=function(_0x530832,_0x351d4b,_0x2ca246){var _0x1fd39d={};var _0x52b3e6={};var _0x21b1b1;var _0x1df039;return db[_0x22f7('0x42')][_0x22f7('0x50')]({'where':{'id':_0x530832[_0x22f7('0x49')]['id']}})[_0x22f7('0x2b')](handleEntityNotFound(_0x351d4b,null))[_0x22f7('0x2b')](function(_0x52c21c){if(_0x52c21c){_0x21b1b1=_0x52c21c;_0x52b3e6[_0x22f7('0x32')]=_['keys'](db[_0x22f7('0x51')][_0x22f7('0x52')]);_0x52b3e6[_0x22f7('0x33')]=_[_0x22f7('0x4a')](_0x530832[_0x22f7('0x33')]);_0x52b3e6[_0x22f7('0x34')]=_[_0x22f7('0x35')](_0x52b3e6[_0x22f7('0x32')],_0x52b3e6[_0x22f7('0x33')]);_0x1fd39d[_0x22f7('0x36')]=_[_0x22f7('0x35')](_0x52b3e6[_0x22f7('0x32')],qs[_0x22f7('0x37')](_0x530832['query'][_0x22f7('0x37')]));_0x1fd39d[_0x22f7('0x36')]=_0x1fd39d[_0x22f7('0x36')][_0x22f7('0x38')]?_0x1fd39d[_0x22f7('0x36')]:_0x52b3e6[_0x22f7('0x32')];_0x1fd39d[_0x22f7('0x3b')]=qs['sort'](_0x530832[_0x22f7('0x33')]['sort']);_0x1fd39d[_0x22f7('0x3f')]=qs[_0x22f7('0x34')](_[_0x22f7('0x3d')](_0x530832[_0x22f7('0x33')],_0x52b3e6['filters']));if(_0x530832[_0x22f7('0x33')][_0x22f7('0x3e')]){_0x1fd39d[_0x22f7('0x3f')]=_['merge'](_0x1fd39d[_0x22f7('0x3f')],{'$or':_[_0x22f7('0x2f')](_0x1fd39d[_0x22f7('0x36')],function(_0x3f6de0){var _0x878f67={};_0x878f67[_0x3f6de0]={'$like':'%'+_0x530832[_0x22f7('0x33')][_0x22f7('0x3e')]+'%'};return _0x878f67;})});}_0x1fd39d=_[_0x22f7('0x41')]({},_0x1fd39d,_0x530832[_0x22f7('0x4b')]);return _0x21b1b1[_0x22f7('0x4f')](_0x1fd39d);}})[_0x22f7('0x2b')](function(_0x35bb4b){if(_0x35bb4b){_0x1df039=_0x35bb4b[_0x22f7('0x38')];if(!_0x530832['query']['hasOwnProperty'](_0x22f7('0x3a'))){_0x1fd39d[_0x22f7('0x22')]=qs[_0x22f7('0x22')](_0x530832['query'][_0x22f7('0x22')]);_0x1fd39d[_0x22f7('0x20')]=qs[_0x22f7('0x20')](_0x530832[_0x22f7('0x33')][_0x22f7('0x20')]);}return _0x21b1b1[_0x22f7('0x4f')](_0x1fd39d);}})[_0x22f7('0x2b')](function(_0x2d149e){if(_0x2d149e){return _0x2d149e?{'count':_0x1df039,'rows':_0x2d149e}:null;}})[_0x22f7('0x2b')](respondWithResult(_0x351d4b,null))[_0x22f7('0x47')](handleError(_0x351d4b,null));};exports[_0x22f7('0x53')]=function(_0x619f54,_0x204b02,_0xccb84f){if(_0x619f54[_0x22f7('0x4d')]['id']){delete _0x619f54['body']['id'];}return db[_0x22f7('0x42')][_0x22f7('0x50')]({'where':{'id':_0x619f54[_0x22f7('0x49')]['id']}})[_0x22f7('0x2b')](handleEntityNotFound(_0x204b02,null))[_0x22f7('0x2b')](function(_0x3edebf){if(_0x3edebf){_0x619f54[_0x22f7('0x4d')][_0x22f7('0x54')]=_0x3edebf['id'];_0x619f54[_0x22f7('0x4d')][_0x22f7('0x55')]=integrations[_0x22f7('0x56')](_0x619f54[_0x22f7('0x4d')][_0x22f7('0x57')],_0x619f54[_0x22f7('0x4d')][_0x22f7('0x31')]);_0x619f54[_0x22f7('0x4d')][_0x22f7('0x58')]=integrations[_0x22f7('0x59')](_0x619f54[_0x22f7('0x4d')]['channel'],_0x619f54['body']['type']);return db[_0x22f7('0x51')][_0x22f7('0x4c')](_0x619f54['body'],{'include':[{'model':db['SugarcrmField'],'as':_0x22f7('0x55')},{'model':db['SugarcrmField'],'as':_0x22f7('0x58')}]});}return null;})[_0x22f7('0x2b')](respondWithResult(_0x204b02,null))[_0x22f7('0x47')](handleError(_0x204b02,null));};exports['getFields']=function(_0x2cc2a4,_0x4c5820,_0x3b882d){var _0x4f203b='';var _0x46e937=['id',_0x22f7('0x2d'),_0x22f7('0x5a'),_0x22f7('0x5b'),'description','date_start',_0x22f7('0x5c'),_0x22f7('0x5d'),_0x22f7('0x5e'),'parent_type',_0x22f7('0x5f'),_0x22f7('0x60')];return db[_0x22f7('0x42')]['findOne']({'where':{'id':_0x2cc2a4['params']['id']},'attributes':['id',_0x22f7('0x61'),_0x22f7('0x62'),_0x22f7('0x63')]})[_0x22f7('0x2b')](handleEntityNotFound(_0x4c5820,null))[_0x22f7('0x2b')](function(_0x13b4f6){if(_0x13b4f6){_0x4f203b=_0x13b4f6[_0x22f7('0x63')];var _0x392395=_0x4f203b[_0x22f7('0x64')](-0x1);if(_0x392395==='/'){_0x4f203b=_0x4f203b['substring'](0x0,_0x4f203b['lastIndexOf'](_0x392395));}return rp({'method':_0x22f7('0x65'),'uri':util[_0x22f7('0x66')](_0x22f7('0x67'),_0x4f203b,_0x22f7('0x68')),'json':!![],'form':{'method':'login','input_type':'JSON','response_type':_0x22f7('0x69'),'rest_data':JSON['stringify']({'user_auth':{'user_name':_0x13b4f6[_0x22f7('0x61')],'password':_0x13b4f6['password'],'encryption':_0x22f7('0x6a')},'application':'xCALLY\x20Motion\x20Integration'})}});}})[_0x22f7('0x2b')](function(_0x10868d){if(_0x10868d&&_0x10868d[_0x22f7('0x2d')]!==_0x22f7('0x6b')&&_0x10868d[_0x22f7('0x2d')]!=='Password\x20Expired'){return rp({'method':_0x22f7('0x65'),'uri':util[_0x22f7('0x66')]('%s%s',_0x4f203b,_0x22f7('0x68')),'json':!![],'form':{'method':_0x22f7('0x6c'),'input_type':_0x22f7('0x69'),'response_type':'JSON','rest_data':JSON['stringify']({'session':_0x10868d['id'],'module_name':_0x22f7('0x6d')})}})[_0x22f7('0x2b')](function(_0x51b321){if(_0x51b321){var _0x3e4ab1=_[_0x22f7('0x6e')](_0x51b321['module_fields']);_[_0x22f7('0x6f')](_0x3e4ab1,function(_0x530c09){return _0x46e937[_0x22f7('0x70')](_0x530c09[_0x22f7('0x2d')]);});return{'count':_0x3e4ab1['length'],'rows':_[_0x22f7('0x2f')](_0x3e4ab1,function(_0x2047f8){return{'id':_0x2047f8['name'],'name':_0x2047f8[_0x22f7('0x71')],'custom':_[_0x22f7('0x72')](_0x2047f8[_0x22f7('0x2d')],'_c')?!![]:![],'options':_0x2047f8['options']?_[_0x22f7('0x2f')](_[_0x22f7('0x6e')](_0x2047f8[_0x22f7('0x4b')]),function(_0x443321){return{'name':_0x443321[_0x22f7('0x73')],'value':_0x443321[_0x22f7('0x2d')]};}):[]};})};}})['then'](respondWithResult(_0x4c5820,null))[_0x22f7('0x47')](function(_0x5548f6){var _0x1e27d3=_0x2cc2a4[_0x22f7('0x33')][_0x22f7('0x74')]?0x1f4:_0x5548f6[_0x22f7('0x75')]||0x1f4;logger[_0x22f7('0x2c')](_0x22f7('0x76'),_0x22f7('0x77'),_0x1e27d3,JSON['stringify'](_0x5548f6));delete _0x5548f6[_0x22f7('0x2d')];if(_0x1e27d3===0x191){_0x1e27d3=0x190;}_0x4c5820[_0x22f7('0x1d')](_0x1e27d3)[_0x22f7('0x2e')](_0x2cc2a4[_0x22f7('0x33')][_0x22f7('0x74')]?{'message':_0x22f7('0x78'),'statusCode':_0x5548f6[_0x22f7('0x75')]}:_0x5548f6);});}else{var _0x3f5361=0x1f4;_0x4c5820[_0x22f7('0x1d')](_0x3f5361)[_0x22f7('0x2e')]({'message':_0x22f7('0x78'),'statusCode':0x190});}});};
\ No newline at end of file
+var _0xebbb=['filters','intersection','attributes','fields','length','hasOwnProperty','order','sort','where','pick','filter','VIRTUAL','options','includeAll','include','findAll','rows','catch','show','merge','create','body','params','destroy','findOne','SugarcrmConfiguration','rawAttributes','getConfigurations','addConfiguration','AccountId','Subjects','getSubjects','channel','getDescriptions','SugarcrmField','Descriptions','getFields','date_start','duration_hours','duration_minutes','parent_id','parent_type','parent_name','direction','username','remoteUri','slice','format','%s%s','/service/v4_1/rest.php','JSON','stringify','password','PLAIN','xCALLY\x20Motion\x20Integration','Invalid\x20Login','POST','get_module_fields','Calls','values','module_fields','label','endsWith','statusCode','error','getFields,\x20%s,\x20%s,\x20%s','test','Wrong\x20credentials','rimraf','zip-dir','fast-json-patch','request-promise','moment','sox','to-csv','ejs','fs-extra','lodash','squel','jsforce','querystring','ioredis','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','status','json','offset','undefined','limit','count','set','Content-Range','apply','reject','save','update','then','end','stack','name','send','map','SugarcrmAccount','type','model','keys','query'];(function(_0x26d034,_0x2c22db){var _0x3015aa=function(_0x282e96){while(--_0x282e96){_0x26d034['push'](_0x26d034['shift']());}};_0x3015aa(++_0x2c22db);}(_0xebbb,0x120));var _0xbebb=function(_0x4da873,_0x29b6c4){_0x4da873=_0x4da873-0x0;var _0x31bcf7=_0xebbb[_0x4da873];return _0x31bcf7;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0xbebb('0x0'));var zipdir=require(_0xbebb('0x1'));var jsonpatch=require(_0xbebb('0x2'));var rp=require(_0xbebb('0x3'));var moment=require(_0xbebb('0x4'));var BPromise=require('bluebird');var Mustache=require('mustache');var util=require('util');var path=require('path');var sox=require(_0xbebb('0x5'));var csv=require(_0xbebb('0x6'));var ejs=require(_0xbebb('0x7'));var fs=require('fs');var fs_extra=require(_0xbebb('0x8'));var _=require(_0xbebb('0x9'));var squel=require(_0xbebb('0xa'));var crypto=require('crypto');var jsforce=require(_0xbebb('0xb'));var deskjs=require('desk.js');var toCsv=require('to-csv');var querystring=require(_0xbebb('0xc'));var Papa=require('papaparse');var Redis=require(_0xbebb('0xd'));var authService=require('../../components/auth/service');var qs=require('../../components/parsers/qs');var as=require(_0xbebb('0xe'));var hardwareService=require(_0xbebb('0xf'));var logger=require(_0xbebb('0x10'))(_0xbebb('0x11'));var utils=require(_0xbebb('0x12'));var config=require('../../config/environment');var licenseUtil=require('../../config/license/util');var db=require('../../mysqldb')['db'];var integrations=require('../../components/integrations/configuration');function respondWithStatusCode(_0x5b35ae,_0x20a07b){_0x20a07b=_0x20a07b||0xcc;return function(_0x6275d2){if(_0x6275d2){return _0x5b35ae['sendStatus'](_0x20a07b);}return _0x5b35ae[_0xbebb('0x13')](_0x20a07b)['end']();};}function respondWithResult(_0x222933,_0x4dc6e0){_0x4dc6e0=_0x4dc6e0||0xc8;return function(_0x5503f8){if(_0x5503f8){return _0x222933['status'](_0x4dc6e0)[_0xbebb('0x14')](_0x5503f8);}};}function respondWithFilteredResult(_0x137128,_0x1122b0){return function(_0x2a91f5){if(_0x2a91f5){var _0x393712=typeof _0x1122b0[_0xbebb('0x15')]===_0xbebb('0x16')&&typeof _0x1122b0[_0xbebb('0x17')]===_0xbebb('0x16');var _0x4b36eb=_0x2a91f5[_0xbebb('0x18')];var _0x54ce91=_0x393712?0x0:_0x1122b0[_0xbebb('0x15')];var _0x23bdf2=_0x393712?_0x2a91f5[_0xbebb('0x18')]:_0x1122b0[_0xbebb('0x15')]+_0x1122b0['limit'];var _0x356ca5;if(_0x23bdf2>=_0x4b36eb){_0x23bdf2=_0x4b36eb;_0x356ca5=0xc8;}else{_0x356ca5=0xce;}_0x137128[_0xbebb('0x13')](_0x356ca5);return _0x137128[_0xbebb('0x19')](_0xbebb('0x1a'),_0x54ce91+'-'+_0x23bdf2+'/'+_0x4b36eb)['json'](_0x2a91f5);}return null;};}function patchUpdates(_0x334e70){return function(_0x394049){try{jsonpatch[_0xbebb('0x1b')](_0x394049,_0x334e70,!![]);}catch(_0x3aa326){return BPromise[_0xbebb('0x1c')](_0x3aa326);}return _0x394049[_0xbebb('0x1d')]();};}function saveUpdates(_0x54422b,_0x1c7bc6){return function(_0x2a0118){if(_0x2a0118){return _0x2a0118[_0xbebb('0x1e')](_0x54422b)[_0xbebb('0x1f')](function(_0x57d761){return _0x57d761;});}return null;};}function removeEntity(_0x3749fd,_0xac3584){return function(_0x328247){if(_0x328247){return _0x328247['destroy']()['then'](function(){_0x3749fd['status'](0xcc)[_0xbebb('0x20')]();});}};}function handleEntityNotFound(_0xaba781,_0x117663){return function(_0x31799f){if(!_0x31799f){_0xaba781['sendStatus'](0x194);}return _0x31799f;};}function handleError(_0x2415cc,_0x2e05b6){_0x2e05b6=_0x2e05b6||0x1f4;return function(_0x6ee55e){logger['error'](_0x6ee55e[_0xbebb('0x21')]);if(_0x6ee55e[_0xbebb('0x22')]){delete _0x6ee55e[_0xbebb('0x22')];}_0x2415cc[_0xbebb('0x13')](_0x2e05b6)[_0xbebb('0x23')](_0x6ee55e);};}exports['index']=function(_0x6fcff3,_0xed0488){var _0x2047a4={},_0x30ba34={},_0x242c14={'count':0x0,'rows':[]};var _0x1e0ac3=_[_0xbebb('0x24')](db[_0xbebb('0x25')]['rawAttributes'],function(_0x553bfe){return{'name':_0x553bfe['fieldName'],'type':_0x553bfe[_0xbebb('0x26')]['key']};});_0x30ba34[_0xbebb('0x27')]=_[_0xbebb('0x24')](_0x1e0ac3,_0xbebb('0x22'));_0x30ba34['query']=_[_0xbebb('0x28')](_0x6fcff3[_0xbebb('0x29')]);_0x30ba34[_0xbebb('0x2a')]=_[_0xbebb('0x2b')](_0x30ba34[_0xbebb('0x27')],_0x30ba34[_0xbebb('0x29')]);_0x2047a4[_0xbebb('0x2c')]=_['intersection'](_0x30ba34[_0xbebb('0x27')],qs[_0xbebb('0x2d')](_0x6fcff3[_0xbebb('0x29')]['fields']));_0x2047a4[_0xbebb('0x2c')]=_0x2047a4[_0xbebb('0x2c')][_0xbebb('0x2e')]?_0x2047a4[_0xbebb('0x2c')]:_0x30ba34[_0xbebb('0x27')];if(!_0x6fcff3[_0xbebb('0x29')][_0xbebb('0x2f')]('nolimit')){_0x2047a4[_0xbebb('0x17')]=qs[_0xbebb('0x17')](_0x6fcff3[_0xbebb('0x29')][_0xbebb('0x17')]);_0x2047a4[_0xbebb('0x15')]=qs[_0xbebb('0x15')](_0x6fcff3[_0xbebb('0x29')][_0xbebb('0x15')]);}_0x2047a4[_0xbebb('0x30')]=qs['sort'](_0x6fcff3[_0xbebb('0x29')][_0xbebb('0x31')]);_0x2047a4[_0xbebb('0x32')]=qs[_0xbebb('0x2a')](_[_0xbebb('0x33')](_0x6fcff3[_0xbebb('0x29')],_0x30ba34[_0xbebb('0x2a')]),_0x1e0ac3);if(_0x6fcff3[_0xbebb('0x29')][_0xbebb('0x34')]){_0x2047a4[_0xbebb('0x32')]=_['merge'](_0x2047a4[_0xbebb('0x32')],{'$or':_['map'](_0x1e0ac3,function(_0x43551c){if(_0x43551c[_0xbebb('0x26')]!==_0xbebb('0x35')){var _0x316825={};_0x316825[_0x43551c[_0xbebb('0x22')]]={'$like':'%'+_0x6fcff3['query'][_0xbebb('0x34')]+'%'};return _0x316825;}})});}_0x2047a4=_['merge']({},_0x2047a4,_0x6fcff3[_0xbebb('0x36')]);var _0x4734b1={'where':_0x2047a4[_0xbebb('0x32')]};return db[_0xbebb('0x25')][_0xbebb('0x18')](_0x4734b1)['then'](function(_0xddcdfc){_0x242c14[_0xbebb('0x18')]=_0xddcdfc;if(_0x6fcff3['query'][_0xbebb('0x37')]){_0x2047a4[_0xbebb('0x38')]=[{'all':!![]}];}return db[_0xbebb('0x25')][_0xbebb('0x39')](_0x2047a4);})['then'](function(_0x1b70f8){_0x242c14[_0xbebb('0x3a')]=_0x1b70f8;return _0x242c14;})[_0xbebb('0x1f')](respondWithFilteredResult(_0xed0488,_0x2047a4))[_0xbebb('0x3b')](handleError(_0xed0488,null));};exports[_0xbebb('0x3c')]=function(_0x2f5511,_0x5735f1){var _0x1cfa26={'raw':![],'where':{'id':_0x2f5511['params']['id']}},_0x1cf752={};_0x1cf752['model']=_['keys'](db[_0xbebb('0x25')]['rawAttributes']);_0x1cf752[_0xbebb('0x29')]=_[_0xbebb('0x28')](_0x2f5511[_0xbebb('0x29')]);_0x1cf752[_0xbebb('0x2a')]=_[_0xbebb('0x2b')](_0x1cf752[_0xbebb('0x27')],_0x1cf752['query']);_0x1cfa26['attributes']=_[_0xbebb('0x2b')](_0x1cf752[_0xbebb('0x27')],qs['fields'](_0x2f5511[_0xbebb('0x29')][_0xbebb('0x2d')]));_0x1cfa26[_0xbebb('0x2c')]=_0x1cfa26[_0xbebb('0x2c')][_0xbebb('0x2e')]?_0x1cfa26[_0xbebb('0x2c')]:_0x1cf752['model'];if(_0x2f5511[_0xbebb('0x29')][_0xbebb('0x37')]){_0x1cfa26['include']=[{'all':!![]}];}_0x1cfa26=_[_0xbebb('0x3d')]({},_0x1cfa26,_0x2f5511['options']);return db[_0xbebb('0x25')]['find'](_0x1cfa26)['then'](handleEntityNotFound(_0x5735f1,null))[_0xbebb('0x1f')](respondWithResult(_0x5735f1,null))[_0xbebb('0x3b')](handleError(_0x5735f1,null));};exports[_0xbebb('0x3e')]=function(_0x107e20,_0x443b8d){return db[_0xbebb('0x25')]['create'](_0x107e20[_0xbebb('0x3f')],{})['then'](respondWithResult(_0x443b8d,0xc9))['catch'](handleError(_0x443b8d,null));};exports[_0xbebb('0x1e')]=function(_0x460635,_0x13be24){if(_0x460635[_0xbebb('0x3f')]['id']){delete _0x460635[_0xbebb('0x3f')]['id'];}return db[_0xbebb('0x25')]['find']({'where':{'id':_0x460635[_0xbebb('0x40')]['id']}})['then'](handleEntityNotFound(_0x13be24,null))[_0xbebb('0x1f')](saveUpdates(_0x460635[_0xbebb('0x3f')],null))['then'](respondWithResult(_0x13be24,null))[_0xbebb('0x3b')](handleError(_0x13be24,null));};exports[_0xbebb('0x41')]=function(_0x5a5bfb,_0x2db9b2){return db[_0xbebb('0x25')]['find']({'where':{'id':_0x5a5bfb['params']['id']}})[_0xbebb('0x1f')](handleEntityNotFound(_0x2db9b2,null))[_0xbebb('0x1f')](removeEntity(_0x2db9b2,null))['catch'](handleError(_0x2db9b2,null));};exports['getConfigurations']=function(_0x5e30c9,_0x5658a0,_0x472e3b){var _0x150890={};var _0x41cb5d={};var _0x38b0a8;var _0x430f9c;return db[_0xbebb('0x25')][_0xbebb('0x42')]({'where':{'id':_0x5e30c9[_0xbebb('0x40')]['id']}})['then'](handleEntityNotFound(_0x5658a0,null))[_0xbebb('0x1f')](function(_0x9689ef){if(_0x9689ef){_0x38b0a8=_0x9689ef;_0x41cb5d[_0xbebb('0x27')]=_[_0xbebb('0x28')](db[_0xbebb('0x43')][_0xbebb('0x44')]);_0x41cb5d['query']=_[_0xbebb('0x28')](_0x5e30c9['query']);_0x41cb5d[_0xbebb('0x2a')]=_[_0xbebb('0x2b')](_0x41cb5d['model'],_0x41cb5d[_0xbebb('0x29')]);_0x150890[_0xbebb('0x2c')]=_[_0xbebb('0x2b')](_0x41cb5d[_0xbebb('0x27')],qs[_0xbebb('0x2d')](_0x5e30c9[_0xbebb('0x29')][_0xbebb('0x2d')]));_0x150890[_0xbebb('0x2c')]=_0x150890[_0xbebb('0x2c')][_0xbebb('0x2e')]?_0x150890[_0xbebb('0x2c')]:_0x41cb5d[_0xbebb('0x27')];_0x150890['order']=qs[_0xbebb('0x31')](_0x5e30c9[_0xbebb('0x29')][_0xbebb('0x31')]);_0x150890['where']=qs['filters'](_['pick'](_0x5e30c9['query'],_0x41cb5d[_0xbebb('0x2a')]));if(_0x5e30c9['query']['filter']){_0x150890[_0xbebb('0x32')]=_[_0xbebb('0x3d')](_0x150890[_0xbebb('0x32')],{'$or':_[_0xbebb('0x24')](_0x150890[_0xbebb('0x2c')],function(_0x26b978){var _0x2357cc={};_0x2357cc[_0x26b978]={'$like':'%'+_0x5e30c9[_0xbebb('0x29')]['filter']+'%'};return _0x2357cc;})});}_0x150890=_[_0xbebb('0x3d')]({},_0x150890,_0x5e30c9['options']);return _0x38b0a8['getConfigurations'](_0x150890);}})[_0xbebb('0x1f')](function(_0x34e90e){if(_0x34e90e){_0x430f9c=_0x34e90e[_0xbebb('0x2e')];if(!_0x5e30c9[_0xbebb('0x29')]['hasOwnProperty']('nolimit')){_0x150890['limit']=qs[_0xbebb('0x17')](_0x5e30c9['query'][_0xbebb('0x17')]);_0x150890[_0xbebb('0x15')]=qs[_0xbebb('0x15')](_0x5e30c9[_0xbebb('0x29')][_0xbebb('0x15')]);}return _0x38b0a8[_0xbebb('0x45')](_0x150890);}})[_0xbebb('0x1f')](function(_0x250038){if(_0x250038){return _0x250038?{'count':_0x430f9c,'rows':_0x250038}:null;}})[_0xbebb('0x1f')](respondWithResult(_0x5658a0,null))[_0xbebb('0x3b')](handleError(_0x5658a0,null));};exports[_0xbebb('0x46')]=function(_0x1b9ed8,_0x32fee8,_0x149234){if(_0x1b9ed8[_0xbebb('0x3f')]['id']){delete _0x1b9ed8['body']['id'];}return db['SugarcrmAccount']['findOne']({'where':{'id':_0x1b9ed8[_0xbebb('0x40')]['id']}})[_0xbebb('0x1f')](handleEntityNotFound(_0x32fee8,null))[_0xbebb('0x1f')](function(_0x322c0b){if(_0x322c0b){_0x1b9ed8['body'][_0xbebb('0x47')]=_0x322c0b['id'];_0x1b9ed8[_0xbebb('0x3f')][_0xbebb('0x48')]=integrations[_0xbebb('0x49')](_0x1b9ed8[_0xbebb('0x3f')][_0xbebb('0x4a')],_0x1b9ed8[_0xbebb('0x3f')][_0xbebb('0x26')]);_0x1b9ed8['body']['Descriptions']=integrations[_0xbebb('0x4b')](_0x1b9ed8['body'][_0xbebb('0x4a')],_0x1b9ed8[_0xbebb('0x3f')][_0xbebb('0x26')]);return db[_0xbebb('0x43')][_0xbebb('0x3e')](_0x1b9ed8[_0xbebb('0x3f')],{'include':[{'model':db[_0xbebb('0x4c')],'as':_0xbebb('0x48')},{'model':db[_0xbebb('0x4c')],'as':_0xbebb('0x4d')}]});}return null;})[_0xbebb('0x1f')](respondWithResult(_0x32fee8,null))['catch'](handleError(_0x32fee8,null));};exports[_0xbebb('0x4e')]=function(_0x1cbd33,_0x4930c6,_0x448d6b){var _0x2333f1='';var _0x40f447=['id','name','assigned_user_id','created_by','description',_0xbebb('0x4f'),_0xbebb('0x50'),_0xbebb('0x51'),_0xbebb('0x52'),_0xbebb('0x53'),_0xbebb('0x54'),_0xbebb('0x55')];return db[_0xbebb('0x25')][_0xbebb('0x42')]({'where':{'id':_0x1cbd33['params']['id']},'attributes':['id',_0xbebb('0x56'),'password',_0xbebb('0x57')]})['then'](handleEntityNotFound(_0x4930c6,null))[_0xbebb('0x1f')](function(_0x245fb2){if(_0x245fb2){_0x2333f1=_0x245fb2[_0xbebb('0x57')];var _0x1589c3=_0x2333f1[_0xbebb('0x58')](-0x1);if(_0x1589c3==='/'){_0x2333f1=_0x2333f1['substring'](0x0,_0x2333f1['lastIndexOf'](_0x1589c3));}return rp({'method':'POST','uri':util[_0xbebb('0x59')](_0xbebb('0x5a'),_0x2333f1,_0xbebb('0x5b')),'json':!![],'form':{'method':'login','input_type':_0xbebb('0x5c'),'response_type':'JSON','rest_data':JSON[_0xbebb('0x5d')]({'user_auth':{'user_name':_0x245fb2['username'],'password':_0x245fb2[_0xbebb('0x5e')],'encryption':_0xbebb('0x5f')},'application':_0xbebb('0x60')})}});}})[_0xbebb('0x1f')](function(_0x404b6a){if(_0x404b6a&&_0x404b6a[_0xbebb('0x22')]!==_0xbebb('0x61')&&_0x404b6a['name']!=='Password\x20Expired'){return rp({'method':_0xbebb('0x62'),'uri':util[_0xbebb('0x59')](_0xbebb('0x5a'),_0x2333f1,'/service/v4_1/rest.php'),'json':!![],'form':{'method':_0xbebb('0x63'),'input_type':_0xbebb('0x5c'),'response_type':_0xbebb('0x5c'),'rest_data':JSON[_0xbebb('0x5d')]({'session':_0x404b6a['id'],'module_name':_0xbebb('0x64')})}})[_0xbebb('0x1f')](function(_0x17474c){if(_0x17474c){var _0x541fac=_[_0xbebb('0x65')](_0x17474c[_0xbebb('0x66')]);_['remove'](_0x541fac,function(_0x3abd94){return _0x40f447['includes'](_0x3abd94['name']);});return{'count':_0x541fac['length'],'rows':_[_0xbebb('0x24')](_0x541fac,function(_0x172f93){return{'id':_0x172f93['name'],'name':_0x172f93[_0xbebb('0x67')],'custom':_[_0xbebb('0x68')](_0x172f93['name'],'_c')?!![]:![],'options':_0x172f93[_0xbebb('0x36')]?_[_0xbebb('0x24')](_[_0xbebb('0x65')](_0x172f93['options']),function(_0x16da08){return{'name':_0x16da08['value'],'value':_0x16da08[_0xbebb('0x22')]};}):[]};})};}})[_0xbebb('0x1f')](respondWithResult(_0x4930c6,null))['catch'](function(_0x1d6fbc){var _0x2345de=_0x1cbd33['query']['test']?0x1f4:_0x1d6fbc[_0xbebb('0x69')]||0x1f4;logger[_0xbebb('0x6a')](_0xbebb('0x6b'),_0xbebb('0x4e'),_0x2345de,JSON[_0xbebb('0x5d')](_0x1d6fbc));delete _0x1d6fbc[_0xbebb('0x22')];if(_0x2345de===0x191){_0x2345de=0x190;}_0x4930c6[_0xbebb('0x13')](_0x2345de)[_0xbebb('0x23')](_0x1cbd33[_0xbebb('0x29')][_0xbebb('0x6c')]?{'message':_0xbebb('0x6d'),'statusCode':_0x1d6fbc[_0xbebb('0x69')]}:_0x1d6fbc);});}else{var _0x132911=0x1f4;_0x4930c6['status'](_0x132911)['send']({'message':'Wrong\x20credentials','statusCode':0x190});}});};
\ No newline at end of file
index a593b35..56b802b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xeabf=['SugarcrmAccount','int_sugarcrm_accounts','lodash','util','../../config/logger','moment','bluebird','path','rimraf','./intSugarcrmAccount.attributes','../../components/integrations/configuration'];(function(_0x56acd3,_0x52fcc5){var _0x920a32=function(_0x16dc60){while(--_0x16dc60){_0x56acd3['push'](_0x56acd3['shift']());}};_0x920a32(++_0x52fcc5);}(_0xeabf,0x1a4));var _0xfeab=function(_0x1b4598,_0x4b6e4f){_0x1b4598=_0x1b4598-0x0;var _0x4df0e0=_0xeabf[_0x1b4598];return _0x4df0e0;};'use strict';var _=require(_0xfeab('0x0'));var util=require(_0xfeab('0x1'));var logger=require(_0xfeab('0x2'))('api');var moment=require(_0xfeab('0x3'));var BPromise=require(_0xfeab('0x4'));var rp=require('request-promise');var fs=require('fs');var path=require(_0xfeab('0x5'));var rimraf=require(_0xfeab('0x6'));var config=require('../../config/environment');var attributes=require(_0xfeab('0x7'));var integrations=require(_0xfeab('0x8'));module['exports']=function(_0xdb2b4a,_0x4063f9){return _0xdb2b4a['define'](_0xfeab('0x9'),attributes,{'tableName':_0xfeab('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x5baf=['rimraf','./intSugarcrmAccount.attributes','../../components/integrations/configuration','exports','define','int_sugarcrm_accounts','lodash','api','moment','bluebird','request-promise','path'];(function(_0x47aa64,_0xfb8a07){var _0x549c7a=function(_0x266165){while(--_0x266165){_0x47aa64['push'](_0x47aa64['shift']());}};_0x549c7a(++_0xfb8a07);}(_0x5baf,0xae));var _0xf5ba=function(_0x31ee01,_0x5e7d83){_0x31ee01=_0x31ee01-0x0;var _0x233870=_0x5baf[_0x31ee01];return _0x233870;};'use strict';var _=require(_0xf5ba('0x0'));var util=require('util');var logger=require('../../config/logger')(_0xf5ba('0x1'));var moment=require(_0xf5ba('0x2'));var BPromise=require(_0xf5ba('0x3'));var rp=require(_0xf5ba('0x4'));var fs=require('fs');var path=require(_0xf5ba('0x5'));var rimraf=require(_0xf5ba('0x6'));var config=require('../../config/environment');var attributes=require(_0xf5ba('0x7'));var integrations=require(_0xf5ba('0x8'));module[_0xf5ba('0x9')]=function(_0x5ef84e,_0x1a4db8){return _0x5ef84e[_0xf5ba('0xa')]('SugarcrmAccount',attributes,{'tableName':_0xf5ba('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 450d8e9..8bf745c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7502=['request','then','request\x20sent','SugarcrmAccount,\x20%s,\x20%s,\x20%s','stringify','error','code','SugarcrmAccount,\x20%s,\x20%s','message','info','result','catch','GetSugarcrmAccount','SugarcrmAccount','options','attributes','limit','map','include','model','ShowSugarcrmAccount','find','raw','where','debug','lodash','util','moment','bluebird','randomstring','../../config/utils','../../config/logger','../../config/environment','jayson/promise','client','http'];(function(_0x3c3877,_0x58516f){var _0x1ac28b=function(_0x21881c){while(--_0x21881c){_0x3c3877['push'](_0x3c3877['shift']());}};_0x1ac28b(++_0x58516f);}(_0x7502,0x85));var _0x2750=function(_0xa26c9a,_0x51afe9){_0xa26c9a=_0xa26c9a-0x0;var _0x54eb78=_0x7502[_0xa26c9a];return _0x54eb78;};'use strict';var _=require(_0x2750('0x0'));var util=require(_0x2750('0x1'));var moment=require(_0x2750('0x2'));var BPromise=require(_0x2750('0x3'));var rs=require(_0x2750('0x4'));var fs=require('fs');var Redis=require('ioredis');var db=require('../../mysqldb')['db'];var utils=require(_0x2750('0x5'));var logger=require(_0x2750('0x6'))('rpc');var config=require(_0x2750('0x7'));var jayson=require(_0x2750('0x8'));var client=jayson[_0x2750('0x9')][_0x2750('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x1de7d0,_0xa9e53c,_0x408370){return new BPromise(function(_0x48671e,_0xa97de1){return client[_0x2750('0xb')](_0x1de7d0,_0x408370)[_0x2750('0xc')](function(_0x4ad930){logger['info']('SugarcrmAccount,\x20%s,\x20%s',_0xa9e53c,_0x2750('0xd'));logger['debug'](_0x2750('0xe'),_0xa9e53c,_0x2750('0xd'),JSON[_0x2750('0xf')](_0x4ad930));if(_0x4ad930[_0x2750('0x10')]){if(_0x4ad930[_0x2750('0x10')][_0x2750('0x11')]===0x1f4){logger[_0x2750('0x10')](_0x2750('0x12'),_0xa9e53c,_0x4ad930['error'][_0x2750('0x13')]);return _0xa97de1(_0x4ad930[_0x2750('0x10')]['message']);}logger[_0x2750('0x10')](_0x2750('0x12'),_0xa9e53c,_0x4ad930['error']['message']);return _0x48671e(_0x4ad930[_0x2750('0x10')][_0x2750('0x13')]);}else{logger[_0x2750('0x14')]('SugarcrmAccount,\x20%s,\x20%s',_0xa9e53c,_0x2750('0xd'));_0x48671e(_0x4ad930[_0x2750('0x15')][_0x2750('0x13')]);}})[_0x2750('0x16')](function(_0xb9084d){logger['error'](_0x2750('0x12'),_0xa9e53c,_0xb9084d);_0xa97de1(_0xb9084d);});});}exports[_0x2750('0x17')]=function(_0x49d86b){var _0x705423=this;return new Promise(function(_0x32a33b,_0x58105f){return db[_0x2750('0x18')]['findAll']({'raw':_0x49d86b['options']?_0x49d86b[_0x2750('0x19')]['raw']===undefined?!![]:![]:!![],'where':_0x49d86b[_0x2750('0x19')]?_0x49d86b[_0x2750('0x19')]['where']||null:null,'attributes':_0x49d86b['options']?_0x49d86b[_0x2750('0x19')][_0x2750('0x1a')]||null:null,'limit':_0x49d86b[_0x2750('0x19')]?_0x49d86b[_0x2750('0x19')][_0x2750('0x1b')]||null:null,'include':_0x49d86b[_0x2750('0x19')]?_0x49d86b['options']['include']?_[_0x2750('0x1c')](_0x49d86b[_0x2750('0x19')][_0x2750('0x1d')],function(_0x45a23f){return{'model':db[_0x45a23f[_0x2750('0x1e')]],'as':_0x45a23f['as'],'attributes':_0x45a23f['attributes'],'include':_0x45a23f[_0x2750('0x1d')]?_[_0x2750('0x1c')](_0x45a23f[_0x2750('0x1d')],function(_0x295237){return{'model':db[_0x295237['model']],'as':_0x295237['as'],'attributes':_0x295237[_0x2750('0x1a')],'include':_0x295237[_0x2750('0x1d')]?_['map'](_0x295237[_0x2750('0x1d')],function(_0x48f568){return{'model':db[_0x48f568[_0x2750('0x1e')]],'as':_0x48f568['as'],'attributes':_0x48f568[_0x2750('0x1a')]};}):[]};}):[]};}):[]:[]})[_0x2750('0xc')](function(_0x618f64){logger['info'](_0x2750('0x17'),_0x49d86b);logger['debug'](_0x2750('0x17'),_0x49d86b,JSON[_0x2750('0xf')](_0x618f64));_0x32a33b(_0x618f64);})['catch'](function(_0x483837){logger[_0x2750('0x10')]('GetSugarcrmAccount',_0x483837[_0x2750('0x13')],_0x49d86b);_0x58105f(_0x705423[_0x2750('0x10')](0x1f4,_0x483837['message']));});});};exports[_0x2750('0x1f')]=function(_0x4f6fcf){var _0x38c1bf=this;return new Promise(function(_0x1062c6,_0x5db45e){return db['SugarcrmAccount'][_0x2750('0x20')]({'raw':_0x4f6fcf[_0x2750('0x19')]?_0x4f6fcf[_0x2750('0x19')][_0x2750('0x21')]===undefined?!![]:![]:!![],'where':_0x4f6fcf[_0x2750('0x19')]?_0x4f6fcf['options'][_0x2750('0x22')]||null:null,'attributes':_0x4f6fcf['options']?_0x4f6fcf[_0x2750('0x19')][_0x2750('0x1a')]||null:null,'include':_0x4f6fcf[_0x2750('0x19')]?_0x4f6fcf[_0x2750('0x19')][_0x2750('0x1d')]?_[_0x2750('0x1c')](_0x4f6fcf[_0x2750('0x19')]['include'],function(_0x35448e){return{'model':db[_0x35448e['model']],'as':_0x35448e['as'],'attributes':_0x35448e[_0x2750('0x1a')],'include':_0x35448e[_0x2750('0x1d')]?_[_0x2750('0x1c')](_0x35448e[_0x2750('0x1d')],function(_0x2452a4){return{'model':db[_0x2452a4['model']],'as':_0x2452a4['as'],'attributes':_0x2452a4[_0x2750('0x1a')],'include':_0x2452a4[_0x2750('0x1d')]?_['map'](_0x2452a4[_0x2750('0x1d')],function(_0x377785){return{'model':db[_0x377785['model']],'as':_0x377785['as'],'attributes':_0x377785[_0x2750('0x1a')]};}):[]};}):[]};}):[]:[]})[_0x2750('0xc')](function(_0x4f957e){logger['info'](_0x2750('0x1f'),_0x4f6fcf);logger[_0x2750('0x23')](_0x2750('0x1f'),_0x4f6fcf,JSON[_0x2750('0xf')](_0x4f957e));_0x1062c6(_0x4f957e);})[_0x2750('0x16')](function(_0x280451){logger[_0x2750('0x10')](_0x2750('0x1f'),_0x280451[_0x2750('0x13')],_0x4f6fcf);_0x5db45e(_0x38c1bf['error'](0x1f4,_0x280451['message']));});});};
\ No newline at end of file
+var _0x95ea=['lodash','moment','bluebird','randomstring','ioredis','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','request','then','info','SugarcrmAccount,\x20%s,\x20%s','request\x20sent','debug','SugarcrmAccount,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','SugarcrmAccount','raw','options','where','attributes','include','map','model','GetSugarcrmAccount','ShowSugarcrmAccount','find','catch'];(function(_0x2c3255,_0x4e00ae){var _0x282aba=function(_0x5721d5){while(--_0x5721d5){_0x2c3255['push'](_0x2c3255['shift']());}};_0x282aba(++_0x4e00ae);}(_0x95ea,0xb4));var _0xa95e=function(_0x202c61,_0x3673e0){_0x202c61=_0x202c61-0x0;var _0x540691=_0x95ea[_0x202c61];return _0x540691;};'use strict';var _=require(_0xa95e('0x0'));var util=require('util');var moment=require(_0xa95e('0x1'));var BPromise=require(_0xa95e('0x2'));var rs=require(_0xa95e('0x3'));var fs=require('fs');var Redis=require(_0xa95e('0x4'));var db=require('../../mysqldb')['db'];var utils=require(_0xa95e('0x5'));var logger=require(_0xa95e('0x6'))(_0xa95e('0x7'));var config=require(_0xa95e('0x8'));var jayson=require(_0xa95e('0x9'));var client=jayson[_0xa95e('0xa')][_0xa95e('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x2166b5,_0x21ea9c,_0x1b1333){return new BPromise(function(_0x360100,_0x297d11){return client[_0xa95e('0xc')](_0x2166b5,_0x1b1333)[_0xa95e('0xd')](function(_0x1e6aae){logger[_0xa95e('0xe')](_0xa95e('0xf'),_0x21ea9c,_0xa95e('0x10'));logger[_0xa95e('0x11')](_0xa95e('0x12'),_0x21ea9c,'request\x20sent',JSON[_0xa95e('0x13')](_0x1e6aae));if(_0x1e6aae[_0xa95e('0x14')]){if(_0x1e6aae['error'][_0xa95e('0x15')]===0x1f4){logger['error']('SugarcrmAccount,\x20%s,\x20%s',_0x21ea9c,_0x1e6aae[_0xa95e('0x14')]['message']);return _0x297d11(_0x1e6aae[_0xa95e('0x14')]['message']);}logger[_0xa95e('0x14')]('SugarcrmAccount,\x20%s,\x20%s',_0x21ea9c,_0x1e6aae['error'][_0xa95e('0x16')]);return _0x360100(_0x1e6aae['error'][_0xa95e('0x16')]);}else{logger[_0xa95e('0xe')]('SugarcrmAccount,\x20%s,\x20%s',_0x21ea9c,_0xa95e('0x10'));_0x360100(_0x1e6aae[_0xa95e('0x17')][_0xa95e('0x16')]);}})['catch'](function(_0x48c10b){logger[_0xa95e('0x14')](_0xa95e('0xf'),_0x21ea9c,_0x48c10b);_0x297d11(_0x48c10b);});});}exports['GetSugarcrmAccount']=function(_0x5bdcb){var _0x2aafa5=this;return new Promise(function(_0x18dc25,_0x8098b2){return db[_0xa95e('0x18')]['findAll']({'raw':_0x5bdcb['options']?_0x5bdcb['options'][_0xa95e('0x19')]===undefined?!![]:![]:!![],'where':_0x5bdcb[_0xa95e('0x1a')]?_0x5bdcb[_0xa95e('0x1a')][_0xa95e('0x1b')]||null:null,'attributes':_0x5bdcb[_0xa95e('0x1a')]?_0x5bdcb[_0xa95e('0x1a')][_0xa95e('0x1c')]||null:null,'limit':_0x5bdcb[_0xa95e('0x1a')]?_0x5bdcb['options']['limit']||null:null,'include':_0x5bdcb[_0xa95e('0x1a')]?_0x5bdcb['options'][_0xa95e('0x1d')]?_[_0xa95e('0x1e')](_0x5bdcb['options'][_0xa95e('0x1d')],function(_0x1a9f65){return{'model':db[_0x1a9f65[_0xa95e('0x1f')]],'as':_0x1a9f65['as'],'attributes':_0x1a9f65[_0xa95e('0x1c')],'include':_0x1a9f65[_0xa95e('0x1d')]?_[_0xa95e('0x1e')](_0x1a9f65['include'],function(_0x2eaabd){return{'model':db[_0x2eaabd[_0xa95e('0x1f')]],'as':_0x2eaabd['as'],'attributes':_0x2eaabd[_0xa95e('0x1c')],'include':_0x2eaabd[_0xa95e('0x1d')]?_[_0xa95e('0x1e')](_0x2eaabd[_0xa95e('0x1d')],function(_0x1f4096){return{'model':db[_0x1f4096['model']],'as':_0x1f4096['as'],'attributes':_0x1f4096[_0xa95e('0x1c')]};}):[]};}):[]};}):[]:[]})[_0xa95e('0xd')](function(_0xa111f6){logger[_0xa95e('0xe')](_0xa95e('0x20'),_0x5bdcb);logger[_0xa95e('0x11')](_0xa95e('0x20'),_0x5bdcb,JSON[_0xa95e('0x13')](_0xa111f6));_0x18dc25(_0xa111f6);})['catch'](function(_0x52cf1c){logger[_0xa95e('0x14')](_0xa95e('0x20'),_0x52cf1c[_0xa95e('0x16')],_0x5bdcb);_0x8098b2(_0x2aafa5['error'](0x1f4,_0x52cf1c['message']));});});};exports[_0xa95e('0x21')]=function(_0x48effe){var _0x4170a7=this;return new Promise(function(_0x266554,_0x45a97a){return db[_0xa95e('0x18')][_0xa95e('0x22')]({'raw':_0x48effe[_0xa95e('0x1a')]?_0x48effe[_0xa95e('0x1a')]['raw']===undefined?!![]:![]:!![],'where':_0x48effe[_0xa95e('0x1a')]?_0x48effe[_0xa95e('0x1a')][_0xa95e('0x1b')]||null:null,'attributes':_0x48effe[_0xa95e('0x1a')]?_0x48effe[_0xa95e('0x1a')][_0xa95e('0x1c')]||null:null,'include':_0x48effe['options']?_0x48effe['options']['include']?_[_0xa95e('0x1e')](_0x48effe['options'][_0xa95e('0x1d')],function(_0x4789ce){return{'model':db[_0x4789ce[_0xa95e('0x1f')]],'as':_0x4789ce['as'],'attributes':_0x4789ce[_0xa95e('0x1c')],'include':_0x4789ce['include']?_['map'](_0x4789ce[_0xa95e('0x1d')],function(_0x4545e8){return{'model':db[_0x4545e8['model']],'as':_0x4545e8['as'],'attributes':_0x4545e8['attributes'],'include':_0x4545e8[_0xa95e('0x1d')]?_[_0xa95e('0x1e')](_0x4545e8[_0xa95e('0x1d')],function(_0x4e9bbf){return{'model':db[_0x4e9bbf[_0xa95e('0x1f')]],'as':_0x4e9bbf['as'],'attributes':_0x4e9bbf[_0xa95e('0x1c')]};}):[]};}):[]};}):[]:[]})[_0xa95e('0xd')](function(_0x52adba){logger[_0xa95e('0xe')](_0xa95e('0x21'),_0x48effe);logger['debug'](_0xa95e('0x21'),_0x48effe,JSON['stringify'](_0x52adba));_0x266554(_0x52adba);})[_0xa95e('0x23')](function(_0x2fece8){logger[_0xa95e('0x14')](_0xa95e('0x21'),_0x2fece8[_0xa95e('0x16')],_0x48effe);_0x45a97a(_0x4170a7[_0xa95e('0x14')](0x1f4,_0x2fece8['message']));});});};
\ No newline at end of file
index 8689445..60cb76f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xce72=['getSubjects','/:id/descriptions','getDescriptions','create','update','delete','destroy','express','fs-extra','../../components/auth/service','../../config/environment','get','isAuthenticated','index','/:id','/:id/fields','getFields','/:id/subjects'];(function(_0x3299aa,_0x1e780a){var _0x1349fa=function(_0x226db0){while(--_0x226db0){_0x3299aa['push'](_0x3299aa['shift']());}};_0x1349fa(++_0x1e780a);}(_0xce72,0x115));var _0x2ce7=function(_0xd7cdf2,_0x4aa052){_0xd7cdf2=_0xd7cdf2-0x0;var _0x48c5a1=_0xce72[_0xd7cdf2];return _0x48c5a1;};'use strict';var multer=require('multer');var util=require('util');var path=require('path');var timeout=require('connect-timeout');var express=require(_0x2ce7('0x0'));var router=express['Router']();var fs_extra=require(_0x2ce7('0x1'));var auth=require(_0x2ce7('0x2'));var interaction=require('../../components/interaction/service');var config=require(_0x2ce7('0x3'));var controller=require('./intSugarcrmConfiguration.controller');router[_0x2ce7('0x4')]('/',auth[_0x2ce7('0x5')](),controller[_0x2ce7('0x6')]);router[_0x2ce7('0x4')](_0x2ce7('0x7'),auth[_0x2ce7('0x5')](),controller['show']);router[_0x2ce7('0x4')](_0x2ce7('0x8'),auth[_0x2ce7('0x5')](),controller[_0x2ce7('0x9')]);router[_0x2ce7('0x4')](_0x2ce7('0xa'),auth[_0x2ce7('0x5')](),controller[_0x2ce7('0xb')]);router[_0x2ce7('0x4')](_0x2ce7('0xc'),auth[_0x2ce7('0x5')](),controller[_0x2ce7('0xd')]);router['post']('/',auth['isAuthenticated'](),controller[_0x2ce7('0xe')]);router['put'](_0x2ce7('0x7'),auth[_0x2ce7('0x5')](),controller[_0x2ce7('0xf')]);router[_0x2ce7('0x10')](_0x2ce7('0x7'),auth[_0x2ce7('0x5')](),controller[_0x2ce7('0x11')]);module['exports']=router;
\ No newline at end of file
+var _0x352c=['fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','isAuthenticated','index','get','/:id/fields','getFields','/:id/subjects','getSubjects','/:id/descriptions','getDescriptions','post','put','/:id','update','delete','destroy','exports','multer','util','connect-timeout','express'];(function(_0x4507bd,_0x6c3799){var _0x4c37ae=function(_0x26df70){while(--_0x26df70){_0x4507bd['push'](_0x4507bd['shift']());}};_0x4c37ae(++_0x6c3799);}(_0x352c,0x11c));var _0xc352=function(_0x1b51a1,_0x36e565){_0x1b51a1=_0x1b51a1-0x0;var _0x3e48c8=_0x352c[_0x1b51a1];return _0x3e48c8;};'use strict';var multer=require(_0xc352('0x0'));var util=require(_0xc352('0x1'));var path=require('path');var timeout=require(_0xc352('0x2'));var express=require(_0xc352('0x3'));var router=express['Router']();var fs_extra=require(_0xc352('0x4'));var auth=require(_0xc352('0x5'));var interaction=require(_0xc352('0x6'));var config=require(_0xc352('0x7'));var controller=require('./intSugarcrmConfiguration.controller');router['get']('/',auth[_0xc352('0x8')](),controller[_0xc352('0x9')]);router[_0xc352('0xa')]('/:id',auth[_0xc352('0x8')](),controller['show']);router['get'](_0xc352('0xb'),auth[_0xc352('0x8')](),controller[_0xc352('0xc')]);router[_0xc352('0xa')](_0xc352('0xd'),auth[_0xc352('0x8')](),controller[_0xc352('0xe')]);router['get'](_0xc352('0xf'),auth['isAuthenticated'](),controller[_0xc352('0x10')]);router[_0xc352('0x11')]('/',auth[_0xc352('0x8')](),controller['create']);router[_0xc352('0x12')](_0xc352('0x13'),auth[_0xc352('0x8')](),controller[_0xc352('0x14')]);router[_0xc352('0x15')](_0xc352('0x13'),auth[_0xc352('0x8')](),controller[_0xc352('0x16')]);module[_0xc352('0x17')]=router;
\ No newline at end of file
index a4777e4..0ae49cc 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4874=['STRING','sequelize'];(function(_0x134188,_0x4675fb){var _0x4a1c18=function(_0x10dbc0){while(--_0x10dbc0){_0x134188['push'](_0x134188['shift']());}};_0x4a1c18(++_0x4675fb);}(_0x4874,0x125));var _0x4487=function(_0x4a747d,_0x3b747f){_0x4a747d=_0x4a747d-0x0;var _0x3a5b5c=_0x4874[_0x4a747d];return _0x3a5b5c;};'use strict';var Sequelize=require(_0x4487('0x0'));module['exports']={'name':{'type':Sequelize['STRING']},'description':{'type':Sequelize[_0x4487('0x1')]}};
\ No newline at end of file
+var _0xbf62=['sequelize','STRING'];(function(_0x498334,_0x27b6fe){var _0x13bb70=function(_0x4087b1){while(--_0x4087b1){_0x498334['push'](_0x498334['shift']());}};_0x13bb70(++_0x27b6fe);}(_0xbf62,0x68));var _0x2bf6=function(_0x1fd84d,_0x386ebb){_0x1fd84d=_0x1fd84d-0x0;var _0xfe50df=_0xbf62[_0x1fd84d];return _0xfe50df;};'use strict';var Sequelize=require(_0x2bf6('0x0'));module['exports']={'name':{'type':Sequelize['STRING']},'description':{'type':Sequelize[_0x2bf6('0x1')]}};
\ No newline at end of file
index 7943b95..89459ff 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x04e9=['map','SugarcrmConfiguration','rawAttributes','fieldName','key','model','query','keys','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','pick','merge','VIRTUAL','filter','options','includeAll','include','rows','catch','params','find','create','body','getFields','getSubjects','getDescriptions','SugarcrmField','eml-format','zip-dir','fast-json-patch','moment','bluebird','util','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/parsers/qs','../../config/license/hardware','../../config/logger','../../config/license/util','../../mysqldb','sendStatus','status','end','json','offset','undefined','limit','count','Content-Range','apply','reject','save','update','then','destroy','name','index'];(function(_0x3be594,_0x293d83){var _0x3f4080=function(_0x4153b1){while(--_0x4153b1){_0x3be594['push'](_0x3be594['shift']());}};_0x3f4080(++_0x293d83);}(_0x04e9,0x104));var _0x904e=function(_0x17919c,_0x19084f){_0x17919c=_0x17919c-0x0;var _0xd671da=_0x04e9[_0x17919c];return _0xd671da;};'use strict';var emlformat=require(_0x904e('0x0'));var rimraf=require('rimraf');var zipdir=require(_0x904e('0x1'));var jsonpatch=require(_0x904e('0x2'));var rp=require('request-promise');var moment=require(_0x904e('0x3'));var BPromise=require(_0x904e('0x4'));var Mustache=require('mustache');var util=require(_0x904e('0x5'));var path=require('path');var sox=require(_0x904e('0x6'));var csv=require(_0x904e('0x7'));var ejs=require(_0x904e('0x8'));var fs=require('fs');var fs_extra=require(_0x904e('0x9'));var _=require(_0x904e('0xa'));var squel=require(_0x904e('0xb'));var crypto=require(_0x904e('0xc'));var jsforce=require(_0x904e('0xd'));var deskjs=require(_0x904e('0xe'));var toCsv=require(_0x904e('0x7'));var querystring=require(_0x904e('0xf'));var Papa=require(_0x904e('0x10'));var Redis=require(_0x904e('0x11'));var authService=require('../../components/auth/service');var qs=require(_0x904e('0x12'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x904e('0x13'));var logger=require(_0x904e('0x14'))('api');var utils=require('../../config/utils');var config=require('../../config/environment');var licenseUtil=require(_0x904e('0x15'));var db=require(_0x904e('0x16'))['db'];function respondWithStatusCode(_0x23704a,_0x2f8878){_0x2f8878=_0x2f8878||0xcc;return function(_0x2016fe){if(_0x2016fe){return _0x23704a[_0x904e('0x17')](_0x2f8878);}return _0x23704a[_0x904e('0x18')](_0x2f8878)[_0x904e('0x19')]();};}function respondWithResult(_0x34c7fd,_0x542fbf){_0x542fbf=_0x542fbf||0xc8;return function(_0x4ce084){if(_0x4ce084){return _0x34c7fd['status'](_0x542fbf)[_0x904e('0x1a')](_0x4ce084);}};}function respondWithFilteredResult(_0xde8bad,_0xee0553){return function(_0x1a1f0f){if(_0x1a1f0f){var _0x376291=typeof _0xee0553[_0x904e('0x1b')]===_0x904e('0x1c')&&typeof _0xee0553[_0x904e('0x1d')]===_0x904e('0x1c');var _0xfea5c5=_0x1a1f0f[_0x904e('0x1e')];var _0x5e0d9f=_0x376291?0x0:_0xee0553[_0x904e('0x1b')];var _0x6b037f=_0x376291?_0x1a1f0f[_0x904e('0x1e')]:_0xee0553[_0x904e('0x1b')]+_0xee0553[_0x904e('0x1d')];var _0x1a9b53;if(_0x6b037f>=_0xfea5c5){_0x6b037f=_0xfea5c5;_0x1a9b53=0xc8;}else{_0x1a9b53=0xce;}_0xde8bad[_0x904e('0x18')](_0x1a9b53);return _0xde8bad['set'](_0x904e('0x1f'),_0x5e0d9f+'-'+_0x6b037f+'/'+_0xfea5c5)[_0x904e('0x1a')](_0x1a1f0f);}return null;};}function patchUpdates(_0x2fc784){return function(_0x57ea6c){try{jsonpatch[_0x904e('0x20')](_0x57ea6c,_0x2fc784,!![]);}catch(_0x25b40e){return BPromise[_0x904e('0x21')](_0x25b40e);}return _0x57ea6c[_0x904e('0x22')]();};}function saveUpdates(_0x50206e,_0x1ac154){return function(_0x830199){if(_0x830199){return _0x830199[_0x904e('0x23')](_0x50206e)[_0x904e('0x24')](function(_0x148912){return _0x148912;});}return null;};}function removeEntity(_0x4523ca,_0x2d2143){return function(_0x397bd8){if(_0x397bd8){return _0x397bd8[_0x904e('0x25')]()[_0x904e('0x24')](function(){_0x4523ca['status'](0xcc)[_0x904e('0x19')]();});}};}function handleEntityNotFound(_0x4243d9,_0x2af857){return function(_0x354e26){if(!_0x354e26){_0x4243d9[_0x904e('0x17')](0x194);}return _0x354e26;};}function handleError(_0xbddaf0,_0x48ed3b){_0x48ed3b=_0x48ed3b||0x1f4;return function(_0x497532){logger['error'](_0x497532['stack']);if(_0x497532[_0x904e('0x26')]){delete _0x497532[_0x904e('0x26')];}_0xbddaf0[_0x904e('0x18')](_0x48ed3b)['send'](_0x497532);};}exports[_0x904e('0x27')]=function(_0x38cbcb,_0x1249d3){var _0x1c5165={},_0x1954ba={},_0x2a22cb={'count':0x0,'rows':[]};var _0x4cb24a=_[_0x904e('0x28')](db[_0x904e('0x29')][_0x904e('0x2a')],function(_0x48e99d){return{'name':_0x48e99d[_0x904e('0x2b')],'type':_0x48e99d['type'][_0x904e('0x2c')]};});_0x1954ba[_0x904e('0x2d')]=_['map'](_0x4cb24a,_0x904e('0x26'));_0x1954ba[_0x904e('0x2e')]=_[_0x904e('0x2f')](_0x38cbcb[_0x904e('0x2e')]);_0x1954ba[_0x904e('0x30')]=_[_0x904e('0x31')](_0x1954ba[_0x904e('0x2d')],_0x1954ba['query']);_0x1c5165[_0x904e('0x32')]=_[_0x904e('0x31')](_0x1954ba['model'],qs[_0x904e('0x33')](_0x38cbcb[_0x904e('0x2e')]['fields']));_0x1c5165[_0x904e('0x32')]=_0x1c5165[_0x904e('0x32')][_0x904e('0x34')]?_0x1c5165['attributes']:_0x1954ba[_0x904e('0x2d')];if(!_0x38cbcb[_0x904e('0x2e')][_0x904e('0x35')](_0x904e('0x36'))){_0x1c5165[_0x904e('0x1d')]=qs['limit'](_0x38cbcb[_0x904e('0x2e')][_0x904e('0x1d')]);_0x1c5165[_0x904e('0x1b')]=qs['offset'](_0x38cbcb[_0x904e('0x2e')][_0x904e('0x1b')]);}_0x1c5165[_0x904e('0x37')]=qs['sort'](_0x38cbcb['query'][_0x904e('0x38')]);_0x1c5165[_0x904e('0x39')]=qs['filters'](_[_0x904e('0x3a')](_0x38cbcb['query'],_0x1954ba[_0x904e('0x30')]),_0x4cb24a);if(_0x38cbcb[_0x904e('0x2e')]['filter']){_0x1c5165[_0x904e('0x39')]=_[_0x904e('0x3b')](_0x1c5165[_0x904e('0x39')],{'$or':_[_0x904e('0x28')](_0x4cb24a,function(_0x58d964){if(_0x58d964['type']!==_0x904e('0x3c')){var _0x77cafd={};_0x77cafd[_0x58d964['name']]={'$like':'%'+_0x38cbcb['query'][_0x904e('0x3d')]+'%'};return _0x77cafd;}})});}_0x1c5165=_['merge']({},_0x1c5165,_0x38cbcb[_0x904e('0x3e')]);var _0x505317={'where':_0x1c5165[_0x904e('0x39')]};return db['SugarcrmConfiguration'][_0x904e('0x1e')](_0x505317)['then'](function(_0x29a34a){_0x2a22cb[_0x904e('0x1e')]=_0x29a34a;if(_0x38cbcb[_0x904e('0x2e')][_0x904e('0x3f')]){_0x1c5165[_0x904e('0x40')]=[{'all':!![]}];}return db[_0x904e('0x29')]['findAll'](_0x1c5165);})[_0x904e('0x24')](function(_0xd86ca){_0x2a22cb[_0x904e('0x41')]=_0xd86ca;return _0x2a22cb;})['then'](respondWithFilteredResult(_0x1249d3,_0x1c5165))[_0x904e('0x42')](handleError(_0x1249d3,null));};exports['show']=function(_0x435073,_0x755c1d){var _0x951c1f={'raw':![],'where':{'id':_0x435073[_0x904e('0x43')]['id']}},_0x34e056={};_0x34e056['model']=_[_0x904e('0x2f')](db[_0x904e('0x29')][_0x904e('0x2a')]);_0x34e056[_0x904e('0x2e')]=_[_0x904e('0x2f')](_0x435073[_0x904e('0x2e')]);_0x34e056['filters']=_['intersection'](_0x34e056[_0x904e('0x2d')],_0x34e056[_0x904e('0x2e')]);_0x951c1f[_0x904e('0x32')]=_[_0x904e('0x31')](_0x34e056['model'],qs[_0x904e('0x33')](_0x435073[_0x904e('0x2e')]['fields']));_0x951c1f[_0x904e('0x32')]=_0x951c1f[_0x904e('0x32')][_0x904e('0x34')]?_0x951c1f['attributes']:_0x34e056[_0x904e('0x2d')];if(_0x435073[_0x904e('0x2e')]['includeAll']){_0x951c1f['include']=[{'all':!![]}];}_0x951c1f=_['merge']({},_0x951c1f,_0x435073['options']);return db[_0x904e('0x29')][_0x904e('0x44')](_0x951c1f)[_0x904e('0x24')](handleEntityNotFound(_0x755c1d,null))[_0x904e('0x24')](respondWithResult(_0x755c1d,null))[_0x904e('0x42')](handleError(_0x755c1d,null));};exports[_0x904e('0x45')]=function(_0x485057,_0x1b6cf6){return db['SugarcrmConfiguration']['create'](_0x485057[_0x904e('0x46')],{})[_0x904e('0x24')](respondWithResult(_0x1b6cf6,0xc9))[_0x904e('0x42')](handleError(_0x1b6cf6,null));};exports[_0x904e('0x23')]=function(_0x3f9c9f,_0x1b0c67){if(_0x3f9c9f[_0x904e('0x46')]['id']){delete _0x3f9c9f[_0x904e('0x46')]['id'];}return db[_0x904e('0x29')][_0x904e('0x44')]({'where':{'id':_0x3f9c9f[_0x904e('0x43')]['id']}})[_0x904e('0x24')](handleEntityNotFound(_0x1b0c67,null))[_0x904e('0x24')](saveUpdates(_0x3f9c9f['body'],null))[_0x904e('0x24')](respondWithResult(_0x1b0c67,null))[_0x904e('0x42')](handleError(_0x1b0c67,null));};exports[_0x904e('0x25')]=function(_0x496e3a,_0x5b0ce1){return db[_0x904e('0x29')]['find']({'where':{'id':_0x496e3a[_0x904e('0x43')]['id']}})[_0x904e('0x24')](handleEntityNotFound(_0x5b0ce1,null))[_0x904e('0x24')](removeEntity(_0x5b0ce1,null))[_0x904e('0x42')](handleError(_0x5b0ce1,null));};exports[_0x904e('0x47')]=function(_0x30a6da,_0x4f14f3,_0x356113){var _0x839b6f={};var _0xbc2866={};var _0x565717;var _0xb50db6;return db[_0x904e('0x29')]['findOne']({'where':{'id':_0x30a6da['params']['id']}})[_0x904e('0x24')](handleEntityNotFound(_0x4f14f3,null))[_0x904e('0x24')](function(_0x38f6f4){if(_0x38f6f4){_0x565717=_0x38f6f4;_0xbc2866[_0x904e('0x2d')]=_[_0x904e('0x2f')](db['SugarcrmField'][_0x904e('0x2a')]);_0xbc2866[_0x904e('0x2e')]=_[_0x904e('0x2f')](_0x30a6da[_0x904e('0x2e')]);_0xbc2866[_0x904e('0x30')]=_[_0x904e('0x31')](_0xbc2866[_0x904e('0x2d')],_0xbc2866[_0x904e('0x2e')]);_0x839b6f['attributes']=_[_0x904e('0x31')](_0xbc2866['model'],qs[_0x904e('0x33')](_0x30a6da[_0x904e('0x2e')][_0x904e('0x33')]));_0x839b6f['attributes']=_0x839b6f[_0x904e('0x32')]['length']?_0x839b6f['attributes']:_0xbc2866[_0x904e('0x2d')];_0x839b6f['order']=qs[_0x904e('0x38')](_0x30a6da[_0x904e('0x2e')][_0x904e('0x38')]);_0x839b6f[_0x904e('0x39')]=qs['filters'](_[_0x904e('0x3a')](_0x30a6da['query'],_0xbc2866['filters']));if(_0x30a6da[_0x904e('0x2e')]['filter']){_0x839b6f[_0x904e('0x39')]=_[_0x904e('0x3b')](_0x839b6f['where'],{'$or':_[_0x904e('0x28')](_0x839b6f['attributes'],function(_0x32277d){var _0x5dc6e3={};_0x5dc6e3[_0x32277d]={'$like':'%'+_0x30a6da[_0x904e('0x2e')][_0x904e('0x3d')]+'%'};return _0x5dc6e3;})});}_0x839b6f=_['merge']({},_0x839b6f,_0x30a6da[_0x904e('0x3e')]);return _0x565717[_0x904e('0x47')](_0x839b6f);}})[_0x904e('0x24')](function(_0x542dcc){if(_0x542dcc){_0xb50db6=_0x542dcc['length'];if(!_0x30a6da['query'][_0x904e('0x35')](_0x904e('0x36'))){_0x839b6f[_0x904e('0x1d')]=qs[_0x904e('0x1d')](_0x30a6da['query'][_0x904e('0x1d')]);_0x839b6f[_0x904e('0x1b')]=qs[_0x904e('0x1b')](_0x30a6da[_0x904e('0x2e')][_0x904e('0x1b')]);}return _0x565717[_0x904e('0x47')](_0x839b6f);}})[_0x904e('0x24')](function(_0x1a5eaf){if(_0x1a5eaf){return _0x1a5eaf?{'count':_0xb50db6,'rows':_0x1a5eaf}:null;}})[_0x904e('0x24')](respondWithResult(_0x4f14f3,null))[_0x904e('0x42')](handleError(_0x4f14f3,null));};exports[_0x904e('0x48')]=function(_0x4725cc,_0x462c9c,_0x56fff2){var _0x3e7bb5={};var _0x5d3aae={};var _0x566e2b;var _0x3be242;return db['SugarcrmConfiguration']['findOne']({'where':{'id':_0x4725cc[_0x904e('0x43')]['id']}})[_0x904e('0x24')](handleEntityNotFound(_0x462c9c,null))['then'](function(_0x4b6663){if(_0x4b6663){_0x566e2b=_0x4b6663;_0x5d3aae[_0x904e('0x2d')]=_[_0x904e('0x2f')](db['SugarcrmField'][_0x904e('0x2a')]);_0x5d3aae[_0x904e('0x2e')]=_[_0x904e('0x2f')](_0x4725cc[_0x904e('0x2e')]);_0x5d3aae[_0x904e('0x30')]=_[_0x904e('0x31')](_0x5d3aae[_0x904e('0x2d')],_0x5d3aae['query']);_0x3e7bb5[_0x904e('0x32')]=_[_0x904e('0x31')](_0x5d3aae['model'],qs[_0x904e('0x33')](_0x4725cc[_0x904e('0x2e')][_0x904e('0x33')]));_0x3e7bb5[_0x904e('0x32')]=_0x3e7bb5['attributes'][_0x904e('0x34')]?_0x3e7bb5['attributes']:_0x5d3aae[_0x904e('0x2d')];_0x3e7bb5[_0x904e('0x37')]=qs[_0x904e('0x38')](_0x4725cc['query'][_0x904e('0x38')]);_0x3e7bb5[_0x904e('0x39')]=qs[_0x904e('0x30')](_[_0x904e('0x3a')](_0x4725cc['query'],_0x5d3aae[_0x904e('0x30')]));if(_0x4725cc[_0x904e('0x2e')][_0x904e('0x3d')]){_0x3e7bb5[_0x904e('0x39')]=_['merge'](_0x3e7bb5['where'],{'$or':_[_0x904e('0x28')](_0x3e7bb5[_0x904e('0x32')],function(_0x5cd41d){var _0x1c91a5={};_0x1c91a5[_0x5cd41d]={'$like':'%'+_0x4725cc[_0x904e('0x2e')][_0x904e('0x3d')]+'%'};return _0x1c91a5;})});}_0x3e7bb5=_['merge']({},_0x3e7bb5,_0x4725cc[_0x904e('0x3e')]);return _0x566e2b[_0x904e('0x48')](_0x3e7bb5);}})[_0x904e('0x24')](function(_0x3e7ca2){if(_0x3e7ca2){_0x3be242=_0x3e7ca2['length'];if(!_0x4725cc[_0x904e('0x2e')][_0x904e('0x35')](_0x904e('0x36'))){_0x3e7bb5[_0x904e('0x1d')]=qs['limit'](_0x4725cc[_0x904e('0x2e')][_0x904e('0x1d')]);_0x3e7bb5[_0x904e('0x1b')]=qs['offset'](_0x4725cc[_0x904e('0x2e')][_0x904e('0x1b')]);}return _0x566e2b[_0x904e('0x48')](_0x3e7bb5);}})[_0x904e('0x24')](function(_0x110321){if(_0x110321){return _0x110321?{'count':_0x3be242,'rows':_0x110321}:null;}})[_0x904e('0x24')](respondWithResult(_0x462c9c,null))[_0x904e('0x42')](handleError(_0x462c9c,null));};exports[_0x904e('0x49')]=function(_0x16bed2,_0x30ea54,_0x124660){var _0x39d344={};var _0x2ebf78={};var _0x3d45f5;var _0x4d8623;return db[_0x904e('0x29')]['findOne']({'where':{'id':_0x16bed2['params']['id']}})[_0x904e('0x24')](handleEntityNotFound(_0x30ea54,null))['then'](function(_0x3b5ab3){if(_0x3b5ab3){_0x3d45f5=_0x3b5ab3;_0x2ebf78[_0x904e('0x2d')]=_[_0x904e('0x2f')](db[_0x904e('0x4a')][_0x904e('0x2a')]);_0x2ebf78[_0x904e('0x2e')]=_[_0x904e('0x2f')](_0x16bed2[_0x904e('0x2e')]);_0x2ebf78[_0x904e('0x30')]=_[_0x904e('0x31')](_0x2ebf78[_0x904e('0x2d')],_0x2ebf78['query']);_0x39d344[_0x904e('0x32')]=_[_0x904e('0x31')](_0x2ebf78[_0x904e('0x2d')],qs[_0x904e('0x33')](_0x16bed2[_0x904e('0x2e')][_0x904e('0x33')]));_0x39d344[_0x904e('0x32')]=_0x39d344[_0x904e('0x32')][_0x904e('0x34')]?_0x39d344['attributes']:_0x2ebf78[_0x904e('0x2d')];_0x39d344['order']=qs[_0x904e('0x38')](_0x16bed2[_0x904e('0x2e')][_0x904e('0x38')]);_0x39d344[_0x904e('0x39')]=qs[_0x904e('0x30')](_[_0x904e('0x3a')](_0x16bed2['query'],_0x2ebf78[_0x904e('0x30')]));if(_0x16bed2[_0x904e('0x2e')][_0x904e('0x3d')]){_0x39d344[_0x904e('0x39')]=_['merge'](_0x39d344[_0x904e('0x39')],{'$or':_[_0x904e('0x28')](_0x39d344[_0x904e('0x32')],function(_0x4cfc91){var _0x42ddb3={};_0x42ddb3[_0x4cfc91]={'$like':'%'+_0x16bed2[_0x904e('0x2e')][_0x904e('0x3d')]+'%'};return _0x42ddb3;})});}_0x39d344=_[_0x904e('0x3b')]({},_0x39d344,_0x16bed2['options']);return _0x3d45f5['getDescriptions'](_0x39d344);}})[_0x904e('0x24')](function(_0x204f2d){if(_0x204f2d){_0x4d8623=_0x204f2d[_0x904e('0x34')];if(!_0x16bed2[_0x904e('0x2e')]['hasOwnProperty'](_0x904e('0x36'))){_0x39d344[_0x904e('0x1d')]=qs[_0x904e('0x1d')](_0x16bed2[_0x904e('0x2e')][_0x904e('0x1d')]);_0x39d344[_0x904e('0x1b')]=qs[_0x904e('0x1b')](_0x16bed2[_0x904e('0x2e')][_0x904e('0x1b')]);}return _0x3d45f5['getDescriptions'](_0x39d344);}})[_0x904e('0x24')](function(_0x1655db){if(_0x1655db){return _0x1655db?{'count':_0x4d8623,'rows':_0x1655db}:null;}})[_0x904e('0x24')](respondWithResult(_0x30ea54,null))[_0x904e('0x42')](handleError(_0x30ea54,null));};
\ No newline at end of file
+var _0x01fb=['send','index','map','rawAttributes','fieldName','type','key','keys','query','intersection','model','attributes','fields','hasOwnProperty','order','sort','where','filters','pick','VIRTUAL','filter','options','SugarcrmConfiguration','includeAll','catch','show','params','length','include','merge','find','create','body','getFields','findOne','nolimit','SugarcrmField','getSubjects','getDescriptions','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','path','sox','to-csv','fs-extra','lodash','squel','crypto','jsforce','desk.js','papaparse','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../mysqldb','sendStatus','status','json','offset','undefined','limit','count','set','apply','save','update','then','destroy','end','error','name'];(function(_0x1facfa,_0x1acf7d){var _0x9ec701=function(_0x115e37){while(--_0x115e37){_0x1facfa['push'](_0x1facfa['shift']());}};_0x9ec701(++_0x1acf7d);}(_0x01fb,0x1c1));var _0xb01f=function(_0x29b8d6,_0x5976a7){_0x29b8d6=_0x29b8d6-0x0;var _0x22a503=_0x01fb[_0x29b8d6];return _0x22a503;};'use strict';var emlformat=require(_0xb01f('0x0'));var rimraf=require(_0xb01f('0x1'));var zipdir=require(_0xb01f('0x2'));var jsonpatch=require(_0xb01f('0x3'));var rp=require(_0xb01f('0x4'));var moment=require(_0xb01f('0x5'));var BPromise=require(_0xb01f('0x6'));var Mustache=require(_0xb01f('0x7'));var util=require('util');var path=require(_0xb01f('0x8'));var sox=require(_0xb01f('0x9'));var csv=require(_0xb01f('0xa'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0xb01f('0xb'));var _=require(_0xb01f('0xc'));var squel=require(_0xb01f('0xd'));var crypto=require(_0xb01f('0xe'));var jsforce=require(_0xb01f('0xf'));var deskjs=require(_0xb01f('0x10'));var toCsv=require(_0xb01f('0xa'));var querystring=require('querystring');var Papa=require(_0xb01f('0x11'));var Redis=require(_0xb01f('0x12'));var authService=require('../../components/auth/service');var qs=require(_0xb01f('0x13'));var as=require(_0xb01f('0x14'));var hardwareService=require(_0xb01f('0x15'));var logger=require(_0xb01f('0x16'))(_0xb01f('0x17'));var utils=require(_0xb01f('0x18'));var config=require(_0xb01f('0x19'));var licenseUtil=require('../../config/license/util');var db=require(_0xb01f('0x1a'))['db'];function respondWithStatusCode(_0x3601ce,_0x46d2f2){_0x46d2f2=_0x46d2f2||0xcc;return function(_0x4d5906){if(_0x4d5906){return _0x3601ce[_0xb01f('0x1b')](_0x46d2f2);}return _0x3601ce[_0xb01f('0x1c')](_0x46d2f2)['end']();};}function respondWithResult(_0x6da962,_0x5e486a){_0x5e486a=_0x5e486a||0xc8;return function(_0x33ed8a){if(_0x33ed8a){return _0x6da962[_0xb01f('0x1c')](_0x5e486a)[_0xb01f('0x1d')](_0x33ed8a);}};}function respondWithFilteredResult(_0x31d388,_0x18d113){return function(_0x3ee555){if(_0x3ee555){var _0x1510f6=typeof _0x18d113[_0xb01f('0x1e')]===_0xb01f('0x1f')&&typeof _0x18d113[_0xb01f('0x20')]===_0xb01f('0x1f');var _0x23c6c1=_0x3ee555[_0xb01f('0x21')];var _0x3c7b7c=_0x1510f6?0x0:_0x18d113[_0xb01f('0x1e')];var _0x455300=_0x1510f6?_0x3ee555['count']:_0x18d113[_0xb01f('0x1e')]+_0x18d113[_0xb01f('0x20')];var _0x4869ff;if(_0x455300>=_0x23c6c1){_0x455300=_0x23c6c1;_0x4869ff=0xc8;}else{_0x4869ff=0xce;}_0x31d388[_0xb01f('0x1c')](_0x4869ff);return _0x31d388[_0xb01f('0x22')]('Content-Range',_0x3c7b7c+'-'+_0x455300+'/'+_0x23c6c1)[_0xb01f('0x1d')](_0x3ee555);}return null;};}function patchUpdates(_0x3fbb8a){return function(_0xdb3992){try{jsonpatch[_0xb01f('0x23')](_0xdb3992,_0x3fbb8a,!![]);}catch(_0x2d3c57){return BPromise['reject'](_0x2d3c57);}return _0xdb3992[_0xb01f('0x24')]();};}function saveUpdates(_0x2ad310,_0x4f1cc4){return function(_0x14990a){if(_0x14990a){return _0x14990a[_0xb01f('0x25')](_0x2ad310)[_0xb01f('0x26')](function(_0x1e813a){return _0x1e813a;});}return null;};}function removeEntity(_0x3b743d,_0x4c8b99){return function(_0x1862e0){if(_0x1862e0){return _0x1862e0[_0xb01f('0x27')]()[_0xb01f('0x26')](function(){_0x3b743d[_0xb01f('0x1c')](0xcc)[_0xb01f('0x28')]();});}};}function handleEntityNotFound(_0x5929f2,_0x2a5881){return function(_0x26ef31){if(!_0x26ef31){_0x5929f2['sendStatus'](0x194);}return _0x26ef31;};}function handleError(_0x47d2b0,_0x5c60f2){_0x5c60f2=_0x5c60f2||0x1f4;return function(_0x1e6bc3){logger[_0xb01f('0x29')](_0x1e6bc3['stack']);if(_0x1e6bc3[_0xb01f('0x2a')]){delete _0x1e6bc3[_0xb01f('0x2a')];}_0x47d2b0[_0xb01f('0x1c')](_0x5c60f2)[_0xb01f('0x2b')](_0x1e6bc3);};}exports[_0xb01f('0x2c')]=function(_0x2f2229,_0x337304){var _0x3d24da={},_0x2c70f3={},_0x17f8ac={'count':0x0,'rows':[]};var _0x2c643a=_[_0xb01f('0x2d')](db['SugarcrmConfiguration'][_0xb01f('0x2e')],function(_0x23416d){return{'name':_0x23416d[_0xb01f('0x2f')],'type':_0x23416d[_0xb01f('0x30')][_0xb01f('0x31')]};});_0x2c70f3['model']=_[_0xb01f('0x2d')](_0x2c643a,_0xb01f('0x2a'));_0x2c70f3['query']=_[_0xb01f('0x32')](_0x2f2229[_0xb01f('0x33')]);_0x2c70f3['filters']=_[_0xb01f('0x34')](_0x2c70f3[_0xb01f('0x35')],_0x2c70f3[_0xb01f('0x33')]);_0x3d24da[_0xb01f('0x36')]=_[_0xb01f('0x34')](_0x2c70f3[_0xb01f('0x35')],qs[_0xb01f('0x37')](_0x2f2229[_0xb01f('0x33')]['fields']));_0x3d24da[_0xb01f('0x36')]=_0x3d24da[_0xb01f('0x36')]['length']?_0x3d24da['attributes']:_0x2c70f3['model'];if(!_0x2f2229[_0xb01f('0x33')][_0xb01f('0x38')]('nolimit')){_0x3d24da['limit']=qs[_0xb01f('0x20')](_0x2f2229['query'][_0xb01f('0x20')]);_0x3d24da['offset']=qs[_0xb01f('0x1e')](_0x2f2229['query'][_0xb01f('0x1e')]);}_0x3d24da[_0xb01f('0x39')]=qs[_0xb01f('0x3a')](_0x2f2229[_0xb01f('0x33')][_0xb01f('0x3a')]);_0x3d24da[_0xb01f('0x3b')]=qs[_0xb01f('0x3c')](_[_0xb01f('0x3d')](_0x2f2229[_0xb01f('0x33')],_0x2c70f3[_0xb01f('0x3c')]),_0x2c643a);if(_0x2f2229[_0xb01f('0x33')]['filter']){_0x3d24da[_0xb01f('0x3b')]=_['merge'](_0x3d24da['where'],{'$or':_[_0xb01f('0x2d')](_0x2c643a,function(_0x11b31e){if(_0x11b31e[_0xb01f('0x30')]!==_0xb01f('0x3e')){var _0x37c49b={};_0x37c49b[_0x11b31e[_0xb01f('0x2a')]]={'$like':'%'+_0x2f2229[_0xb01f('0x33')][_0xb01f('0x3f')]+'%'};return _0x37c49b;}})});}_0x3d24da=_['merge']({},_0x3d24da,_0x2f2229[_0xb01f('0x40')]);var _0x42eb9d={'where':_0x3d24da['where']};return db[_0xb01f('0x41')][_0xb01f('0x21')](_0x42eb9d)[_0xb01f('0x26')](function(_0x1e8ad2){_0x17f8ac['count']=_0x1e8ad2;if(_0x2f2229[_0xb01f('0x33')][_0xb01f('0x42')]){_0x3d24da['include']=[{'all':!![]}];}return db[_0xb01f('0x41')]['findAll'](_0x3d24da);})['then'](function(_0x1c080b){_0x17f8ac['rows']=_0x1c080b;return _0x17f8ac;})[_0xb01f('0x26')](respondWithFilteredResult(_0x337304,_0x3d24da))[_0xb01f('0x43')](handleError(_0x337304,null));};exports[_0xb01f('0x44')]=function(_0x1d864b,_0x2b251c){var _0x297648={'raw':![],'where':{'id':_0x1d864b[_0xb01f('0x45')]['id']}},_0x7198a3={};_0x7198a3['model']=_[_0xb01f('0x32')](db[_0xb01f('0x41')]['rawAttributes']);_0x7198a3[_0xb01f('0x33')]=_[_0xb01f('0x32')](_0x1d864b[_0xb01f('0x33')]);_0x7198a3[_0xb01f('0x3c')]=_[_0xb01f('0x34')](_0x7198a3[_0xb01f('0x35')],_0x7198a3[_0xb01f('0x33')]);_0x297648[_0xb01f('0x36')]=_['intersection'](_0x7198a3['model'],qs[_0xb01f('0x37')](_0x1d864b['query'][_0xb01f('0x37')]));_0x297648['attributes']=_0x297648['attributes'][_0xb01f('0x46')]?_0x297648['attributes']:_0x7198a3[_0xb01f('0x35')];if(_0x1d864b[_0xb01f('0x33')][_0xb01f('0x42')]){_0x297648[_0xb01f('0x47')]=[{'all':!![]}];}_0x297648=_[_0xb01f('0x48')]({},_0x297648,_0x1d864b[_0xb01f('0x40')]);return db[_0xb01f('0x41')][_0xb01f('0x49')](_0x297648)[_0xb01f('0x26')](handleEntityNotFound(_0x2b251c,null))[_0xb01f('0x26')](respondWithResult(_0x2b251c,null))[_0xb01f('0x43')](handleError(_0x2b251c,null));};exports[_0xb01f('0x4a')]=function(_0x1f50da,_0x11f32b){return db[_0xb01f('0x41')]['create'](_0x1f50da[_0xb01f('0x4b')],{})[_0xb01f('0x26')](respondWithResult(_0x11f32b,0xc9))[_0xb01f('0x43')](handleError(_0x11f32b,null));};exports[_0xb01f('0x25')]=function(_0x262add,_0x4b8c5b){if(_0x262add[_0xb01f('0x4b')]['id']){delete _0x262add[_0xb01f('0x4b')]['id'];}return db[_0xb01f('0x41')][_0xb01f('0x49')]({'where':{'id':_0x262add[_0xb01f('0x45')]['id']}})[_0xb01f('0x26')](handleEntityNotFound(_0x4b8c5b,null))[_0xb01f('0x26')](saveUpdates(_0x262add[_0xb01f('0x4b')],null))['then'](respondWithResult(_0x4b8c5b,null))[_0xb01f('0x43')](handleError(_0x4b8c5b,null));};exports[_0xb01f('0x27')]=function(_0x371b71,_0x379a43){return db[_0xb01f('0x41')]['find']({'where':{'id':_0x371b71['params']['id']}})['then'](handleEntityNotFound(_0x379a43,null))['then'](removeEntity(_0x379a43,null))['catch'](handleError(_0x379a43,null));};exports[_0xb01f('0x4c')]=function(_0x16304f,_0x1d5aa3,_0xd6e440){var _0x620b96={};var _0x10301e={};var _0x18a076;var _0x190f54;return db[_0xb01f('0x41')][_0xb01f('0x4d')]({'where':{'id':_0x16304f[_0xb01f('0x45')]['id']}})[_0xb01f('0x26')](handleEntityNotFound(_0x1d5aa3,null))[_0xb01f('0x26')](function(_0x538f1a){if(_0x538f1a){_0x18a076=_0x538f1a;_0x10301e[_0xb01f('0x35')]=_[_0xb01f('0x32')](db['SugarcrmField'][_0xb01f('0x2e')]);_0x10301e[_0xb01f('0x33')]=_[_0xb01f('0x32')](_0x16304f[_0xb01f('0x33')]);_0x10301e['filters']=_[_0xb01f('0x34')](_0x10301e['model'],_0x10301e[_0xb01f('0x33')]);_0x620b96['attributes']=_[_0xb01f('0x34')](_0x10301e['model'],qs[_0xb01f('0x37')](_0x16304f[_0xb01f('0x33')][_0xb01f('0x37')]));_0x620b96[_0xb01f('0x36')]=_0x620b96[_0xb01f('0x36')][_0xb01f('0x46')]?_0x620b96['attributes']:_0x10301e[_0xb01f('0x35')];_0x620b96[_0xb01f('0x39')]=qs[_0xb01f('0x3a')](_0x16304f['query'][_0xb01f('0x3a')]);_0x620b96['where']=qs[_0xb01f('0x3c')](_[_0xb01f('0x3d')](_0x16304f['query'],_0x10301e[_0xb01f('0x3c')]));if(_0x16304f['query'][_0xb01f('0x3f')]){_0x620b96[_0xb01f('0x3b')]=_[_0xb01f('0x48')](_0x620b96[_0xb01f('0x3b')],{'$or':_[_0xb01f('0x2d')](_0x620b96[_0xb01f('0x36')],function(_0x175540){var _0x47a60d={};_0x47a60d[_0x175540]={'$like':'%'+_0x16304f[_0xb01f('0x33')][_0xb01f('0x3f')]+'%'};return _0x47a60d;})});}_0x620b96=_[_0xb01f('0x48')]({},_0x620b96,_0x16304f[_0xb01f('0x40')]);return _0x18a076[_0xb01f('0x4c')](_0x620b96);}})[_0xb01f('0x26')](function(_0x52c3bc){if(_0x52c3bc){_0x190f54=_0x52c3bc[_0xb01f('0x46')];if(!_0x16304f['query'][_0xb01f('0x38')](_0xb01f('0x4e'))){_0x620b96[_0xb01f('0x20')]=qs[_0xb01f('0x20')](_0x16304f[_0xb01f('0x33')]['limit']);_0x620b96[_0xb01f('0x1e')]=qs['offset'](_0x16304f['query'][_0xb01f('0x1e')]);}return _0x18a076[_0xb01f('0x4c')](_0x620b96);}})[_0xb01f('0x26')](function(_0x789f88){if(_0x789f88){return _0x789f88?{'count':_0x190f54,'rows':_0x789f88}:null;}})[_0xb01f('0x26')](respondWithResult(_0x1d5aa3,null))[_0xb01f('0x43')](handleError(_0x1d5aa3,null));};exports['getSubjects']=function(_0x2dbe43,_0x7fc445,_0x1e57f8){var _0x371b41={};var _0x50fce4={};var _0x599f66;var _0x44d841;return db['SugarcrmConfiguration']['findOne']({'where':{'id':_0x2dbe43[_0xb01f('0x45')]['id']}})['then'](handleEntityNotFound(_0x7fc445,null))['then'](function(_0x5aca10){if(_0x5aca10){_0x599f66=_0x5aca10;_0x50fce4['model']=_[_0xb01f('0x32')](db[_0xb01f('0x4f')][_0xb01f('0x2e')]);_0x50fce4[_0xb01f('0x33')]=_[_0xb01f('0x32')](_0x2dbe43[_0xb01f('0x33')]);_0x50fce4['filters']=_[_0xb01f('0x34')](_0x50fce4['model'],_0x50fce4[_0xb01f('0x33')]);_0x371b41[_0xb01f('0x36')]=_['intersection'](_0x50fce4[_0xb01f('0x35')],qs['fields'](_0x2dbe43['query'][_0xb01f('0x37')]));_0x371b41['attributes']=_0x371b41['attributes'][_0xb01f('0x46')]?_0x371b41['attributes']:_0x50fce4[_0xb01f('0x35')];_0x371b41[_0xb01f('0x39')]=qs[_0xb01f('0x3a')](_0x2dbe43[_0xb01f('0x33')][_0xb01f('0x3a')]);_0x371b41[_0xb01f('0x3b')]=qs[_0xb01f('0x3c')](_[_0xb01f('0x3d')](_0x2dbe43[_0xb01f('0x33')],_0x50fce4[_0xb01f('0x3c')]));if(_0x2dbe43['query'][_0xb01f('0x3f')]){_0x371b41['where']=_[_0xb01f('0x48')](_0x371b41['where'],{'$or':_['map'](_0x371b41['attributes'],function(_0x2c4f99){var _0x4a16b7={};_0x4a16b7[_0x2c4f99]={'$like':'%'+_0x2dbe43[_0xb01f('0x33')][_0xb01f('0x3f')]+'%'};return _0x4a16b7;})});}_0x371b41=_[_0xb01f('0x48')]({},_0x371b41,_0x2dbe43[_0xb01f('0x40')]);return _0x599f66[_0xb01f('0x50')](_0x371b41);}})[_0xb01f('0x26')](function(_0x5020e6){if(_0x5020e6){_0x44d841=_0x5020e6['length'];if(!_0x2dbe43[_0xb01f('0x33')][_0xb01f('0x38')]('nolimit')){_0x371b41['limit']=qs['limit'](_0x2dbe43[_0xb01f('0x33')][_0xb01f('0x20')]);_0x371b41[_0xb01f('0x1e')]=qs[_0xb01f('0x1e')](_0x2dbe43[_0xb01f('0x33')][_0xb01f('0x1e')]);}return _0x599f66[_0xb01f('0x50')](_0x371b41);}})['then'](function(_0x55110e){if(_0x55110e){return _0x55110e?{'count':_0x44d841,'rows':_0x55110e}:null;}})[_0xb01f('0x26')](respondWithResult(_0x7fc445,null))['catch'](handleError(_0x7fc445,null));};exports['getDescriptions']=function(_0x38b68f,_0x36009a,_0x55f8d4){var _0xa1d4de={};var _0x4d38bd={};var _0x37faf2;var _0x2e628c;return db['SugarcrmConfiguration'][_0xb01f('0x4d')]({'where':{'id':_0x38b68f[_0xb01f('0x45')]['id']}})[_0xb01f('0x26')](handleEntityNotFound(_0x36009a,null))['then'](function(_0x2c4945){if(_0x2c4945){_0x37faf2=_0x2c4945;_0x4d38bd['model']=_[_0xb01f('0x32')](db[_0xb01f('0x4f')][_0xb01f('0x2e')]);_0x4d38bd[_0xb01f('0x33')]=_[_0xb01f('0x32')](_0x38b68f[_0xb01f('0x33')]);_0x4d38bd['filters']=_[_0xb01f('0x34')](_0x4d38bd[_0xb01f('0x35')],_0x4d38bd[_0xb01f('0x33')]);_0xa1d4de[_0xb01f('0x36')]=_[_0xb01f('0x34')](_0x4d38bd[_0xb01f('0x35')],qs['fields'](_0x38b68f[_0xb01f('0x33')][_0xb01f('0x37')]));_0xa1d4de[_0xb01f('0x36')]=_0xa1d4de[_0xb01f('0x36')]['length']?_0xa1d4de['attributes']:_0x4d38bd[_0xb01f('0x35')];_0xa1d4de[_0xb01f('0x39')]=qs[_0xb01f('0x3a')](_0x38b68f[_0xb01f('0x33')][_0xb01f('0x3a')]);_0xa1d4de['where']=qs[_0xb01f('0x3c')](_[_0xb01f('0x3d')](_0x38b68f['query'],_0x4d38bd['filters']));if(_0x38b68f[_0xb01f('0x33')][_0xb01f('0x3f')]){_0xa1d4de[_0xb01f('0x3b')]=_['merge'](_0xa1d4de[_0xb01f('0x3b')],{'$or':_[_0xb01f('0x2d')](_0xa1d4de[_0xb01f('0x36')],function(_0x119110){var _0x41d5ab={};_0x41d5ab[_0x119110]={'$like':'%'+_0x38b68f['query']['filter']+'%'};return _0x41d5ab;})});}_0xa1d4de=_[_0xb01f('0x48')]({},_0xa1d4de,_0x38b68f[_0xb01f('0x40')]);return _0x37faf2['getDescriptions'](_0xa1d4de);}})[_0xb01f('0x26')](function(_0x1b1bea){if(_0x1b1bea){_0x2e628c=_0x1b1bea[_0xb01f('0x46')];if(!_0x38b68f[_0xb01f('0x33')][_0xb01f('0x38')]('nolimit')){_0xa1d4de[_0xb01f('0x20')]=qs[_0xb01f('0x20')](_0x38b68f[_0xb01f('0x33')][_0xb01f('0x20')]);_0xa1d4de[_0xb01f('0x1e')]=qs[_0xb01f('0x1e')](_0x38b68f[_0xb01f('0x33')][_0xb01f('0x1e')]);}return _0x37faf2[_0xb01f('0x51')](_0xa1d4de);}})[_0xb01f('0x26')](function(_0x528666){if(_0x528666){return _0x528666?{'count':_0x2e628c,'rows':_0x528666}:null;}})[_0xb01f('0x26')](respondWithResult(_0x36009a,null))['catch'](handleError(_0x36009a,null));};
\ No newline at end of file
index c5b5f0f..1e4328f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6eba=['bluebird','request-promise','path','rimraf','exports','SugarcrmConfiguration','int_sugarcrm_configurations','lodash','../../config/logger','api','moment'];(function(_0x506b10,_0x2d4118){var _0x32aa9f=function(_0x4f7a9a){while(--_0x4f7a9a){_0x506b10['push'](_0x506b10['shift']());}};_0x32aa9f(++_0x2d4118);}(_0x6eba,0xc2));var _0xa6eb=function(_0x2f6d4a,_0x1ebc12){_0x2f6d4a=_0x2f6d4a-0x0;var _0x3d9d11=_0x6eba[_0x2f6d4a];return _0x3d9d11;};'use strict';var _=require(_0xa6eb('0x0'));var util=require('util');var logger=require(_0xa6eb('0x1'))(_0xa6eb('0x2'));var moment=require(_0xa6eb('0x3'));var BPromise=require(_0xa6eb('0x4'));var rp=require(_0xa6eb('0x5'));var fs=require('fs');var path=require(_0xa6eb('0x6'));var rimraf=require(_0xa6eb('0x7'));var config=require('../../config/environment');var attributes=require('./intSugarcrmConfiguration.attributes');module[_0xa6eb('0x8')]=function(_0x1dc15d,_0x5b866a){return _0x1dc15d['define'](_0xa6eb('0x9'),attributes,{'tableName':_0xa6eb('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x6061=['bluebird','path','rimraf','../../config/environment','./intSugarcrmConfiguration.attributes','exports','define','SugarcrmConfiguration','int_sugarcrm_configurations','lodash','util','api'];(function(_0x2fcf18,_0x10009a){var _0x4c68cc=function(_0x444002){while(--_0x444002){_0x2fcf18['push'](_0x2fcf18['shift']());}};_0x4c68cc(++_0x10009a);}(_0x6061,0x159));var _0x1606=function(_0x46e731,_0x48ef3a){_0x46e731=_0x46e731-0x0;var _0x1cd609=_0x6061[_0x46e731];return _0x1cd609;};'use strict';var _=require(_0x1606('0x0'));var util=require(_0x1606('0x1'));var logger=require('../../config/logger')(_0x1606('0x2'));var moment=require('moment');var BPromise=require(_0x1606('0x3'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x1606('0x4'));var rimraf=require(_0x1606('0x5'));var config=require(_0x1606('0x6'));var attributes=require(_0x1606('0x7'));module[_0x1606('0x8')]=function(_0x1aeb34,_0x48b025){return _0x1aeb34[_0x1606('0x9')](_0x1606('0xa'),attributes,{'tableName':_0x1606('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 0936cca..874cc43 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5fd5=['lodash','util','moment','randomstring','ioredis','../../config/utils','../../config/logger','../../config/environment','jayson/promise','client','http','request','info','SugarcrmConfiguration,\x20%s,\x20%s','debug','SugarcrmConfiguration,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','code','error','message','result','catch'];(function(_0x451e5f,_0x383219){var _0x27daea=function(_0x16bba9){while(--_0x16bba9){_0x451e5f['push'](_0x451e5f['shift']());}};_0x27daea(++_0x383219);}(_0x5fd5,0x159));var _0x55fd=function(_0x22fefb,_0x105065){_0x22fefb=_0x22fefb-0x0;var _0x49a5e0=_0x5fd5[_0x22fefb];return _0x49a5e0;};'use strict';var _=require(_0x55fd('0x0'));var util=require(_0x55fd('0x1'));var moment=require(_0x55fd('0x2'));var BPromise=require('bluebird');var rs=require(_0x55fd('0x3'));var fs=require('fs');var Redis=require(_0x55fd('0x4'));var db=require('../../mysqldb')['db'];var utils=require(_0x55fd('0x5'));var logger=require(_0x55fd('0x6'))('rpc');var config=require(_0x55fd('0x7'));var jayson=require(_0x55fd('0x8'));var client=jayson[_0x55fd('0x9')][_0x55fd('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x4e7336,_0x532123,_0x15b15f){return new BPromise(function(_0x33e255,_0x383bb5){return client[_0x55fd('0xb')](_0x4e7336,_0x15b15f)['then'](function(_0x202104){logger[_0x55fd('0xc')](_0x55fd('0xd'),_0x532123,'request\x20sent');logger[_0x55fd('0xe')](_0x55fd('0xf'),_0x532123,_0x55fd('0x10'),JSON[_0x55fd('0x11')](_0x202104));if(_0x202104['error']){if(_0x202104['error'][_0x55fd('0x12')]===0x1f4){logger[_0x55fd('0x13')](_0x55fd('0xd'),_0x532123,_0x202104['error']['message']);return _0x383bb5(_0x202104['error'][_0x55fd('0x14')]);}logger[_0x55fd('0x13')]('SugarcrmConfiguration,\x20%s,\x20%s',_0x532123,_0x202104[_0x55fd('0x13')][_0x55fd('0x14')]);return _0x33e255(_0x202104[_0x55fd('0x13')][_0x55fd('0x14')]);}else{logger[_0x55fd('0xc')](_0x55fd('0xd'),_0x532123,_0x55fd('0x10'));_0x33e255(_0x202104[_0x55fd('0x15')][_0x55fd('0x14')]);}})[_0x55fd('0x16')](function(_0x323a08){logger['error'](_0x55fd('0xd'),_0x532123,_0x323a08);_0x383bb5(_0x323a08);});});}
\ No newline at end of file
+var _0x5f14=['../../config/utils','../../config/logger','rpc','../../config/environment','client','http','request','SugarcrmConfiguration,\x20%s,\x20%s','debug','request\x20sent','stringify','error','message','info','result','catch','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb'];(function(_0x263a74,_0xc31414){var _0x2aa86c=function(_0x382896){while(--_0x382896){_0x263a74['push'](_0x263a74['shift']());}};_0x2aa86c(++_0xc31414);}(_0x5f14,0x13b));var _0x45f1=function(_0x4b7e4d,_0x82d2ab){_0x4b7e4d=_0x4b7e4d-0x0;var _0x38d6af=_0x5f14[_0x4b7e4d];return _0x38d6af;};'use strict';var _=require(_0x45f1('0x0'));var util=require(_0x45f1('0x1'));var moment=require(_0x45f1('0x2'));var BPromise=require(_0x45f1('0x3'));var rs=require(_0x45f1('0x4'));var fs=require('fs');var Redis=require(_0x45f1('0x5'));var db=require(_0x45f1('0x6'))['db'];var utils=require(_0x45f1('0x7'));var logger=require(_0x45f1('0x8'))(_0x45f1('0x9'));var config=require(_0x45f1('0xa'));var jayson=require('jayson/promise');var client=jayson[_0x45f1('0xb')][_0x45f1('0xc')]({'port':0x232a});function respondWithRpcPromise(_0x21be8e,_0x32e6da,_0x21257d){return new BPromise(function(_0x15e73f,_0x164ce3){return client[_0x45f1('0xd')](_0x21be8e,_0x21257d)['then'](function(_0x2ca9ac){logger['info'](_0x45f1('0xe'),_0x32e6da,'request\x20sent');logger[_0x45f1('0xf')]('SugarcrmConfiguration,\x20%s,\x20%s,\x20%s',_0x32e6da,_0x45f1('0x10'),JSON[_0x45f1('0x11')](_0x2ca9ac));if(_0x2ca9ac[_0x45f1('0x12')]){if(_0x2ca9ac[_0x45f1('0x12')]['code']===0x1f4){logger[_0x45f1('0x12')](_0x45f1('0xe'),_0x32e6da,_0x2ca9ac[_0x45f1('0x12')][_0x45f1('0x13')]);return _0x164ce3(_0x2ca9ac[_0x45f1('0x12')][_0x45f1('0x13')]);}logger['error'](_0x45f1('0xe'),_0x32e6da,_0x2ca9ac[_0x45f1('0x12')][_0x45f1('0x13')]);return _0x15e73f(_0x2ca9ac['error']['message']);}else{logger[_0x45f1('0x14')](_0x45f1('0xe'),_0x32e6da,_0x45f1('0x10'));_0x15e73f(_0x2ca9ac[_0x45f1('0x15')][_0x45f1('0x13')]);}})[_0x45f1('0x16')](function(_0x41b2eb){logger[_0x45f1('0x12')]('SugarcrmConfiguration,\x20%s,\x20%s',_0x32e6da,_0x41b2eb);_0x164ce3(_0x41b2eb);});});}
\ No newline at end of file
index 254f9b9..58569fe 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5208=['destroy','exports','multer','path','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','get','isAuthenticated','index','/:id','post','put','delete'];(function(_0x2621d9,_0xd5a81d){var _0x44cfd7=function(_0x4bc0de){while(--_0x4bc0de){_0x2621d9['push'](_0x2621d9['shift']());}};_0x44cfd7(++_0xd5a81d);}(_0x5208,0x12e));var _0x8520=function(_0x30c187,_0x1a4d55){_0x30c187=_0x30c187-0x0;var _0x4ba7bc=_0x5208[_0x30c187];return _0x4ba7bc;};'use strict';var multer=require(_0x8520('0x0'));var util=require('util');var path=require(_0x8520('0x1'));var timeout=require('connect-timeout');var express=require('express');var router=express['Router']();var fs_extra=require(_0x8520('0x2'));var auth=require(_0x8520('0x3'));var interaction=require(_0x8520('0x4'));var config=require(_0x8520('0x5'));var controller=require('./intSugarcrmField.controller');router[_0x8520('0x6')]('/',auth[_0x8520('0x7')](),controller[_0x8520('0x8')]);router[_0x8520('0x6')](_0x8520('0x9'),auth[_0x8520('0x7')](),controller['show']);router[_0x8520('0xa')]('/',auth[_0x8520('0x7')](),controller['create']);router[_0x8520('0xb')](_0x8520('0x9'),auth[_0x8520('0x7')](),controller['update']);router[_0x8520('0xc')](_0x8520('0x9'),auth[_0x8520('0x7')](),controller[_0x8520('0xd')]);module[_0x8520('0xe')]=router;
\ No newline at end of file
+var _0x21b9=['fs-extra','../../components/auth/service','../../components/interaction/service','./intSugarcrmField.controller','get','isAuthenticated','/:id','show','post','delete','exports','multer','util','path','connect-timeout','express'];(function(_0x2e884a,_0x36a798){var _0x3320e2=function(_0x1252fd){while(--_0x1252fd){_0x2e884a['push'](_0x2e884a['shift']());}};_0x3320e2(++_0x36a798);}(_0x21b9,0x1cb));var _0x921b=function(_0x13009f,_0x3dbed1){_0x13009f=_0x13009f-0x0;var _0x20f511=_0x21b9[_0x13009f];return _0x20f511;};'use strict';var multer=require(_0x921b('0x0'));var util=require(_0x921b('0x1'));var path=require(_0x921b('0x2'));var timeout=require(_0x921b('0x3'));var express=require(_0x921b('0x4'));var router=express['Router']();var fs_extra=require(_0x921b('0x5'));var auth=require(_0x921b('0x6'));var interaction=require(_0x921b('0x7'));var config=require('../../config/environment');var controller=require(_0x921b('0x8'));router[_0x921b('0x9')]('/',auth[_0x921b('0xa')](),controller['index']);router[_0x921b('0x9')](_0x921b('0xb'),auth['isAuthenticated'](),controller[_0x921b('0xc')]);router[_0x921b('0xd')]('/',auth[_0x921b('0xa')](),controller['create']);router['put'](_0x921b('0xb'),auth['isAuthenticated'](),controller['update']);router[_0x921b('0xe')](_0x921b('0xb'),auth[_0x921b('0xa')](),controller['destroy']);module[_0x921b('0xf')]=router;
\ No newline at end of file
index 9596167..e035db0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf43c=['exports','ENUM','variable','customVariable','keyValue','STRING','string','BOOLEAN'];(function(_0x40a825,_0x3bac79){var _0x273a54=function(_0x5628d8){while(--_0x5628d8){_0x40a825['push'](_0x40a825['shift']());}};_0x273a54(++_0x3bac79);}(_0xf43c,0x1a8));var _0xcf43=function(_0x193cea,_0x387e90){_0x193cea=_0x193cea-0x0;var _0x261a17=_0xf43c[_0x193cea];return _0x261a17;};'use strict';var Sequelize=require('sequelize');module[_0xcf43('0x0')]={'type':{'type':Sequelize[_0xcf43('0x1')]('string',_0xcf43('0x2'),_0xcf43('0x3'),_0xcf43('0x4'),'picklist'),'defaultValue':'string'},'content':{'type':Sequelize[_0xcf43('0x5')]},'key':{'type':Sequelize[_0xcf43('0x5')]},'keyType':{'type':Sequelize[_0xcf43('0x1')](_0xcf43('0x6'),_0xcf43('0x2'),_0xcf43('0x3'))},'keyContent':{'type':Sequelize[_0xcf43('0x5')]},'idField':{'type':Sequelize['STRING']},'nameField':{'type':Sequelize[_0xcf43('0x5')]},'customField':{'type':Sequelize[_0xcf43('0x7')],'defaultValue':!![]},'variableName':{'type':Sequelize[_0xcf43('0x5')]}};
\ No newline at end of file
+var _0x66fa=['variable','customVariable','keyValue','STRING','string','BOOLEAN','sequelize','exports','ENUM'];(function(_0x5973cc,_0x24e091){var _0x54452d=function(_0x30e8f0){while(--_0x30e8f0){_0x5973cc['push'](_0x5973cc['shift']());}};_0x54452d(++_0x24e091);}(_0x66fa,0x19b));var _0xa66f=function(_0x5bba39,_0x5599f7){_0x5bba39=_0x5bba39-0x0;var _0x1c3ec9=_0x66fa[_0x5bba39];return _0x1c3ec9;};'use strict';var Sequelize=require(_0xa66f('0x0'));module[_0xa66f('0x1')]={'type':{'type':Sequelize[_0xa66f('0x2')]('string',_0xa66f('0x3'),_0xa66f('0x4'),_0xa66f('0x5'),'picklist'),'defaultValue':'string'},'content':{'type':Sequelize[_0xa66f('0x6')]},'key':{'type':Sequelize[_0xa66f('0x6')]},'keyType':{'type':Sequelize[_0xa66f('0x2')](_0xa66f('0x7'),_0xa66f('0x3'),_0xa66f('0x4'))},'keyContent':{'type':Sequelize[_0xa66f('0x6')]},'idField':{'type':Sequelize[_0xa66f('0x6')]},'nameField':{'type':Sequelize['STRING']},'customField':{'type':Sequelize[_0xa66f('0x8')],'defaultValue':!![]},'variableName':{'type':Sequelize[_0xa66f('0x6')]}};
\ No newline at end of file
index a6ae4a3..68381a5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd0eb=['filter','type','VIRTUAL','name','merge','options','then','includeAll','include','findAll','rows','catch','show','params','rawAttributes','find','create','body','eml-format','rimraf','fast-json-patch','request-promise','bluebird','mustache','util','path','to-csv','ejs','lodash','squel','jsforce','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','offset','undefined','count','limit','json','apply','reject','update','destroy','end','stack','send','index','map','SugarcrmField','fieldName','key','model','query','keys','filters','intersection','fields','attributes','length','nolimit','order','sort','where','pick'];(function(_0x477fe9,_0xe311bd){var _0x58cfad=function(_0x40b1c5){while(--_0x40b1c5){_0x477fe9['push'](_0x477fe9['shift']());}};_0x58cfad(++_0xe311bd);}(_0xd0eb,0x13e));var _0xbd0e=function(_0x4d7f3f,_0x4d2803){_0x4d7f3f=_0x4d7f3f-0x0;var _0x5d67cc=_0xd0eb[_0x4d7f3f];return _0x5d67cc;};'use strict';var emlformat=require(_0xbd0e('0x0'));var rimraf=require(_0xbd0e('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0xbd0e('0x2'));var rp=require(_0xbd0e('0x3'));var moment=require('moment');var BPromise=require(_0xbd0e('0x4'));var Mustache=require(_0xbd0e('0x5'));var util=require(_0xbd0e('0x6'));var path=require(_0xbd0e('0x7'));var sox=require('sox');var csv=require(_0xbd0e('0x8'));var ejs=require(_0xbd0e('0x9'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0xbd0e('0xa'));var squel=require(_0xbd0e('0xb'));var crypto=require('crypto');var jsforce=require(_0xbd0e('0xc'));var deskjs=require('desk.js');var toCsv=require('to-csv');var querystring=require(_0xbd0e('0xd'));var Papa=require(_0xbd0e('0xe'));var Redis=require('ioredis');var authService=require(_0xbd0e('0xf'));var qs=require(_0xbd0e('0x10'));var as=require(_0xbd0e('0x11'));var hardwareService=require(_0xbd0e('0x12'));var logger=require(_0xbd0e('0x13'))(_0xbd0e('0x14'));var utils=require(_0xbd0e('0x15'));var config=require(_0xbd0e('0x16'));var licenseUtil=require(_0xbd0e('0x17'));var db=require(_0xbd0e('0x18'))['db'];function respondWithStatusCode(_0x3da320,_0x1c0688){_0x1c0688=_0x1c0688||0xcc;return function(_0x1d9372){if(_0x1d9372){return _0x3da320[_0xbd0e('0x19')](_0x1c0688);}return _0x3da320['status'](_0x1c0688)['end']();};}function respondWithResult(_0x1f66d9,_0x58ac76){_0x58ac76=_0x58ac76||0xc8;return function(_0x351eb6){if(_0x351eb6){return _0x1f66d9[_0xbd0e('0x1a')](_0x58ac76)['json'](_0x351eb6);}};}function respondWithFilteredResult(_0x382fc0,_0x10ff82){return function(_0x5212b7){if(_0x5212b7){var _0x434bd2=typeof _0x10ff82[_0xbd0e('0x1b')]===_0xbd0e('0x1c')&&typeof _0x10ff82['limit']===_0xbd0e('0x1c');var _0x351c1f=_0x5212b7[_0xbd0e('0x1d')];var _0x129cac=_0x434bd2?0x0:_0x10ff82[_0xbd0e('0x1b')];var _0x1a5343=_0x434bd2?_0x5212b7[_0xbd0e('0x1d')]:_0x10ff82['offset']+_0x10ff82[_0xbd0e('0x1e')];var _0x36336d;if(_0x1a5343>=_0x351c1f){_0x1a5343=_0x351c1f;_0x36336d=0xc8;}else{_0x36336d=0xce;}_0x382fc0[_0xbd0e('0x1a')](_0x36336d);return _0x382fc0['set']('Content-Range',_0x129cac+'-'+_0x1a5343+'/'+_0x351c1f)[_0xbd0e('0x1f')](_0x5212b7);}return null;};}function patchUpdates(_0x76ed70){return function(_0x386bd9){try{jsonpatch[_0xbd0e('0x20')](_0x386bd9,_0x76ed70,!![]);}catch(_0x621355){return BPromise[_0xbd0e('0x21')](_0x621355);}return _0x386bd9['save']();};}function saveUpdates(_0x58ee4f,_0xccf472){return function(_0x34ca30){if(_0x34ca30){return _0x34ca30[_0xbd0e('0x22')](_0x58ee4f)['then'](function(_0x3f7c0b){return _0x3f7c0b;});}return null;};}function removeEntity(_0x25e248,_0x2c0180){return function(_0x4c8196){if(_0x4c8196){return _0x4c8196[_0xbd0e('0x23')]()['then'](function(){_0x25e248[_0xbd0e('0x1a')](0xcc)[_0xbd0e('0x24')]();});}};}function handleEntityNotFound(_0x471949,_0x4ab771){return function(_0x12aad0){if(!_0x12aad0){_0x471949['sendStatus'](0x194);}return _0x12aad0;};}function handleError(_0x1bea38,_0x11527c){_0x11527c=_0x11527c||0x1f4;return function(_0x50e02f){logger['error'](_0x50e02f[_0xbd0e('0x25')]);if(_0x50e02f['name']){delete _0x50e02f['name'];}_0x1bea38[_0xbd0e('0x1a')](_0x11527c)[_0xbd0e('0x26')](_0x50e02f);};}exports[_0xbd0e('0x27')]=function(_0x25116f,_0xc95180){var _0x5379ee={},_0x5dd338={},_0x22ce13={'count':0x0,'rows':[]};var _0x27b7f4=_[_0xbd0e('0x28')](db[_0xbd0e('0x29')]['rawAttributes'],function(_0x2f5d79){return{'name':_0x2f5d79[_0xbd0e('0x2a')],'type':_0x2f5d79['type'][_0xbd0e('0x2b')]};});_0x5dd338[_0xbd0e('0x2c')]=_['map'](_0x27b7f4,'name');_0x5dd338[_0xbd0e('0x2d')]=_[_0xbd0e('0x2e')](_0x25116f['query']);_0x5dd338[_0xbd0e('0x2f')]=_[_0xbd0e('0x30')](_0x5dd338[_0xbd0e('0x2c')],_0x5dd338[_0xbd0e('0x2d')]);_0x5379ee['attributes']=_[_0xbd0e('0x30')](_0x5dd338['model'],qs[_0xbd0e('0x31')](_0x25116f[_0xbd0e('0x2d')][_0xbd0e('0x31')]));_0x5379ee[_0xbd0e('0x32')]=_0x5379ee[_0xbd0e('0x32')][_0xbd0e('0x33')]?_0x5379ee[_0xbd0e('0x32')]:_0x5dd338[_0xbd0e('0x2c')];if(!_0x25116f[_0xbd0e('0x2d')]['hasOwnProperty'](_0xbd0e('0x34'))){_0x5379ee[_0xbd0e('0x1e')]=qs['limit'](_0x25116f['query'][_0xbd0e('0x1e')]);_0x5379ee[_0xbd0e('0x1b')]=qs[_0xbd0e('0x1b')](_0x25116f['query'][_0xbd0e('0x1b')]);}_0x5379ee[_0xbd0e('0x35')]=qs[_0xbd0e('0x36')](_0x25116f[_0xbd0e('0x2d')][_0xbd0e('0x36')]);_0x5379ee[_0xbd0e('0x37')]=qs[_0xbd0e('0x2f')](_[_0xbd0e('0x38')](_0x25116f['query'],_0x5dd338[_0xbd0e('0x2f')]),_0x27b7f4);if(_0x25116f[_0xbd0e('0x2d')][_0xbd0e('0x39')]){_0x5379ee[_0xbd0e('0x37')]=_['merge'](_0x5379ee[_0xbd0e('0x37')],{'$or':_[_0xbd0e('0x28')](_0x27b7f4,function(_0x31e363){if(_0x31e363[_0xbd0e('0x3a')]!==_0xbd0e('0x3b')){var _0x51e13d={};_0x51e13d[_0x31e363[_0xbd0e('0x3c')]]={'$like':'%'+_0x25116f[_0xbd0e('0x2d')][_0xbd0e('0x39')]+'%'};return _0x51e13d;}})});}_0x5379ee=_[_0xbd0e('0x3d')]({},_0x5379ee,_0x25116f[_0xbd0e('0x3e')]);var _0x4743fd={'where':_0x5379ee[_0xbd0e('0x37')]};return db[_0xbd0e('0x29')]['count'](_0x4743fd)[_0xbd0e('0x3f')](function(_0x403d71){_0x22ce13[_0xbd0e('0x1d')]=_0x403d71;if(_0x25116f[_0xbd0e('0x2d')][_0xbd0e('0x40')]){_0x5379ee[_0xbd0e('0x41')]=[{'all':!![]}];}return db[_0xbd0e('0x29')][_0xbd0e('0x42')](_0x5379ee);})['then'](function(_0x1c2d93){_0x22ce13[_0xbd0e('0x43')]=_0x1c2d93;return _0x22ce13;})['then'](respondWithFilteredResult(_0xc95180,_0x5379ee))[_0xbd0e('0x44')](handleError(_0xc95180,null));};exports[_0xbd0e('0x45')]=function(_0x2b93ce,_0x1cfda5){var _0x5509ec={'raw':!![],'where':{'id':_0x2b93ce[_0xbd0e('0x46')]['id']}},_0x3fa96e={};_0x3fa96e[_0xbd0e('0x2c')]=_['keys'](db[_0xbd0e('0x29')][_0xbd0e('0x47')]);_0x3fa96e[_0xbd0e('0x2d')]=_[_0xbd0e('0x2e')](_0x2b93ce[_0xbd0e('0x2d')]);_0x3fa96e[_0xbd0e('0x2f')]=_[_0xbd0e('0x30')](_0x3fa96e[_0xbd0e('0x2c')],_0x3fa96e['query']);_0x5509ec[_0xbd0e('0x32')]=_[_0xbd0e('0x30')](_0x3fa96e[_0xbd0e('0x2c')],qs[_0xbd0e('0x31')](_0x2b93ce[_0xbd0e('0x2d')][_0xbd0e('0x31')]));_0x5509ec[_0xbd0e('0x32')]=_0x5509ec[_0xbd0e('0x32')][_0xbd0e('0x33')]?_0x5509ec[_0xbd0e('0x32')]:_0x3fa96e[_0xbd0e('0x2c')];if(_0x2b93ce[_0xbd0e('0x2d')][_0xbd0e('0x40')]){_0x5509ec[_0xbd0e('0x41')]=[{'all':!![]}];}_0x5509ec=_[_0xbd0e('0x3d')]({},_0x5509ec,_0x2b93ce[_0xbd0e('0x3e')]);return db[_0xbd0e('0x29')][_0xbd0e('0x48')](_0x5509ec)[_0xbd0e('0x3f')](handleEntityNotFound(_0x1cfda5,null))[_0xbd0e('0x3f')](respondWithResult(_0x1cfda5,null))[_0xbd0e('0x44')](handleError(_0x1cfda5,null));};exports['create']=function(_0x398cdf,_0x7f4db){return db['SugarcrmField'][_0xbd0e('0x49')](_0x398cdf[_0xbd0e('0x4a')],{})[_0xbd0e('0x3f')](respondWithResult(_0x7f4db,0xc9))[_0xbd0e('0x44')](handleError(_0x7f4db,null));};exports['update']=function(_0x4aa02f,_0x1689a7){if(_0x4aa02f['body']['id']){delete _0x4aa02f['body']['id'];}return db[_0xbd0e('0x29')][_0xbd0e('0x48')]({'where':{'id':_0x4aa02f[_0xbd0e('0x46')]['id']}})['then'](handleEntityNotFound(_0x1689a7,null))['then'](saveUpdates(_0x4aa02f[_0xbd0e('0x4a')],null))[_0xbd0e('0x3f')](respondWithResult(_0x1689a7,null))[_0xbd0e('0x44')](handleError(_0x1689a7,null));};exports[_0xbd0e('0x23')]=function(_0x469df8,_0x1fdaad){return db['SugarcrmField'][_0xbd0e('0x48')]({'where':{'id':_0x469df8[_0xbd0e('0x46')]['id']}})[_0xbd0e('0x3f')](handleEntityNotFound(_0x1fdaad,null))['then'](removeEntity(_0x1fdaad,null))[_0xbd0e('0x44')](handleError(_0x1fdaad,null));};
\ No newline at end of file
+var _0x02e3=['filters','intersection','attributes','fields','length','hasOwnProperty','order','sort','where','type','VIRTUAL','merge','options','SugarcrmField','includeAll','include','findAll','rows','catch','create','body','find','eml-format','zip-dir','fast-json-patch','request-promise','moment','mustache','path','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','sendStatus','end','status','json','offset','undefined','limit','count','Content-Range','apply','reject','save','update','then','destroy','error','stack','name','send','index','map','rawAttributes','fieldName','key','model','query','keys'];(function(_0xf5276f,_0x1387b7){var _0x4e7834=function(_0x25cb10){while(--_0x25cb10){_0xf5276f['push'](_0xf5276f['shift']());}};_0x4e7834(++_0x1387b7);}(_0x02e3,0x1d8));var _0x302e=function(_0x122ef9,_0x451d2a){_0x122ef9=_0x122ef9-0x0;var _0x42fba0=_0x02e3[_0x122ef9];return _0x42fba0;};'use strict';var emlformat=require(_0x302e('0x0'));var rimraf=require('rimraf');var zipdir=require(_0x302e('0x1'));var jsonpatch=require(_0x302e('0x2'));var rp=require(_0x302e('0x3'));var moment=require(_0x302e('0x4'));var BPromise=require('bluebird');var Mustache=require(_0x302e('0x5'));var util=require('util');var path=require(_0x302e('0x6'));var sox=require(_0x302e('0x7'));var csv=require(_0x302e('0x8'));var ejs=require(_0x302e('0x9'));var fs=require('fs');var fs_extra=require(_0x302e('0xa'));var _=require(_0x302e('0xb'));var squel=require(_0x302e('0xc'));var crypto=require(_0x302e('0xd'));var jsforce=require('jsforce');var deskjs=require(_0x302e('0xe'));var toCsv=require(_0x302e('0x8'));var querystring=require(_0x302e('0xf'));var Papa=require(_0x302e('0x10'));var Redis=require(_0x302e('0x11'));var authService=require(_0x302e('0x12'));var qs=require('../../components/parsers/qs');var as=require(_0x302e('0x13'));var hardwareService=require(_0x302e('0x14'));var logger=require(_0x302e('0x15'))(_0x302e('0x16'));var utils=require(_0x302e('0x17'));var config=require(_0x302e('0x18'));var licenseUtil=require(_0x302e('0x19'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x2ea6b0,_0x21df89){_0x21df89=_0x21df89||0xcc;return function(_0x3f26c8){if(_0x3f26c8){return _0x2ea6b0[_0x302e('0x1a')](_0x21df89);}return _0x2ea6b0['status'](_0x21df89)[_0x302e('0x1b')]();};}function respondWithResult(_0x1d3a77,_0x2e9a5c){_0x2e9a5c=_0x2e9a5c||0xc8;return function(_0x1f1d0e){if(_0x1f1d0e){return _0x1d3a77[_0x302e('0x1c')](_0x2e9a5c)[_0x302e('0x1d')](_0x1f1d0e);}};}function respondWithFilteredResult(_0x6512a3,_0xc695e4){return function(_0x3ec3a2){if(_0x3ec3a2){var _0x4023f3=typeof _0xc695e4[_0x302e('0x1e')]===_0x302e('0x1f')&&typeof _0xc695e4[_0x302e('0x20')]===_0x302e('0x1f');var _0x44ff71=_0x3ec3a2[_0x302e('0x21')];var _0x204f8c=_0x4023f3?0x0:_0xc695e4[_0x302e('0x1e')];var _0x9cb080=_0x4023f3?_0x3ec3a2[_0x302e('0x21')]:_0xc695e4[_0x302e('0x1e')]+_0xc695e4[_0x302e('0x20')];var _0x5c748c;if(_0x9cb080>=_0x44ff71){_0x9cb080=_0x44ff71;_0x5c748c=0xc8;}else{_0x5c748c=0xce;}_0x6512a3[_0x302e('0x1c')](_0x5c748c);return _0x6512a3['set'](_0x302e('0x22'),_0x204f8c+'-'+_0x9cb080+'/'+_0x44ff71)[_0x302e('0x1d')](_0x3ec3a2);}return null;};}function patchUpdates(_0x9a83a5){return function(_0x141171){try{jsonpatch[_0x302e('0x23')](_0x141171,_0x9a83a5,!![]);}catch(_0x514c3f){return BPromise[_0x302e('0x24')](_0x514c3f);}return _0x141171[_0x302e('0x25')]();};}function saveUpdates(_0x94972b,_0x1892a3){return function(_0x4cf5e1){if(_0x4cf5e1){return _0x4cf5e1[_0x302e('0x26')](_0x94972b)[_0x302e('0x27')](function(_0x363487){return _0x363487;});}return null;};}function removeEntity(_0x132307,_0x5b6f0e){return function(_0x158c75){if(_0x158c75){return _0x158c75[_0x302e('0x28')]()[_0x302e('0x27')](function(){_0x132307[_0x302e('0x1c')](0xcc)[_0x302e('0x1b')]();});}};}function handleEntityNotFound(_0x170be1,_0x5cb335){return function(_0x178a34){if(!_0x178a34){_0x170be1['sendStatus'](0x194);}return _0x178a34;};}function handleError(_0x131c91,_0x414859){_0x414859=_0x414859||0x1f4;return function(_0x4ac555){logger[_0x302e('0x29')](_0x4ac555[_0x302e('0x2a')]);if(_0x4ac555[_0x302e('0x2b')]){delete _0x4ac555[_0x302e('0x2b')];}_0x131c91[_0x302e('0x1c')](_0x414859)[_0x302e('0x2c')](_0x4ac555);};}exports[_0x302e('0x2d')]=function(_0x4c5acd,_0x49130e){var _0x4909fc={},_0x2227fe={},_0x76f6f0={'count':0x0,'rows':[]};var _0x4adbb8=_[_0x302e('0x2e')](db['SugarcrmField'][_0x302e('0x2f')],function(_0x41fe5b){return{'name':_0x41fe5b[_0x302e('0x30')],'type':_0x41fe5b['type'][_0x302e('0x31')]};});_0x2227fe[_0x302e('0x32')]=_[_0x302e('0x2e')](_0x4adbb8,'name');_0x2227fe[_0x302e('0x33')]=_[_0x302e('0x34')](_0x4c5acd[_0x302e('0x33')]);_0x2227fe[_0x302e('0x35')]=_[_0x302e('0x36')](_0x2227fe[_0x302e('0x32')],_0x2227fe[_0x302e('0x33')]);_0x4909fc[_0x302e('0x37')]=_['intersection'](_0x2227fe['model'],qs['fields'](_0x4c5acd['query'][_0x302e('0x38')]));_0x4909fc[_0x302e('0x37')]=_0x4909fc[_0x302e('0x37')][_0x302e('0x39')]?_0x4909fc[_0x302e('0x37')]:_0x2227fe[_0x302e('0x32')];if(!_0x4c5acd['query'][_0x302e('0x3a')]('nolimit')){_0x4909fc[_0x302e('0x20')]=qs['limit'](_0x4c5acd[_0x302e('0x33')]['limit']);_0x4909fc['offset']=qs[_0x302e('0x1e')](_0x4c5acd['query']['offset']);}_0x4909fc[_0x302e('0x3b')]=qs[_0x302e('0x3c')](_0x4c5acd[_0x302e('0x33')]['sort']);_0x4909fc[_0x302e('0x3d')]=qs[_0x302e('0x35')](_['pick'](_0x4c5acd[_0x302e('0x33')],_0x2227fe[_0x302e('0x35')]),_0x4adbb8);if(_0x4c5acd['query']['filter']){_0x4909fc[_0x302e('0x3d')]=_['merge'](_0x4909fc[_0x302e('0x3d')],{'$or':_[_0x302e('0x2e')](_0x4adbb8,function(_0x4e2b34){if(_0x4e2b34[_0x302e('0x3e')]!==_0x302e('0x3f')){var _0x3de17b={};_0x3de17b[_0x4e2b34[_0x302e('0x2b')]]={'$like':'%'+_0x4c5acd[_0x302e('0x33')]['filter']+'%'};return _0x3de17b;}})});}_0x4909fc=_[_0x302e('0x40')]({},_0x4909fc,_0x4c5acd[_0x302e('0x41')]);var _0x12bad6={'where':_0x4909fc[_0x302e('0x3d')]};return db[_0x302e('0x42')][_0x302e('0x21')](_0x12bad6)['then'](function(_0x29e4d6){_0x76f6f0[_0x302e('0x21')]=_0x29e4d6;if(_0x4c5acd[_0x302e('0x33')][_0x302e('0x43')]){_0x4909fc[_0x302e('0x44')]=[{'all':!![]}];}return db['SugarcrmField'][_0x302e('0x45')](_0x4909fc);})[_0x302e('0x27')](function(_0xb3d0eb){_0x76f6f0[_0x302e('0x46')]=_0xb3d0eb;return _0x76f6f0;})[_0x302e('0x27')](respondWithFilteredResult(_0x49130e,_0x4909fc))[_0x302e('0x47')](handleError(_0x49130e,null));};exports['show']=function(_0x438d86,_0x30d908){var _0x5cf58c={'raw':!![],'where':{'id':_0x438d86['params']['id']}},_0x47fbcb={};_0x47fbcb[_0x302e('0x32')]=_[_0x302e('0x34')](db[_0x302e('0x42')]['rawAttributes']);_0x47fbcb['query']=_[_0x302e('0x34')](_0x438d86[_0x302e('0x33')]);_0x47fbcb[_0x302e('0x35')]=_[_0x302e('0x36')](_0x47fbcb[_0x302e('0x32')],_0x47fbcb['query']);_0x5cf58c['attributes']=_[_0x302e('0x36')](_0x47fbcb[_0x302e('0x32')],qs[_0x302e('0x38')](_0x438d86[_0x302e('0x33')][_0x302e('0x38')]));_0x5cf58c[_0x302e('0x37')]=_0x5cf58c[_0x302e('0x37')][_0x302e('0x39')]?_0x5cf58c['attributes']:_0x47fbcb[_0x302e('0x32')];if(_0x438d86[_0x302e('0x33')][_0x302e('0x43')]){_0x5cf58c['include']=[{'all':!![]}];}_0x5cf58c=_['merge']({},_0x5cf58c,_0x438d86[_0x302e('0x41')]);return db[_0x302e('0x42')]['find'](_0x5cf58c)[_0x302e('0x27')](handleEntityNotFound(_0x30d908,null))['then'](respondWithResult(_0x30d908,null))[_0x302e('0x47')](handleError(_0x30d908,null));};exports[_0x302e('0x48')]=function(_0x59feed,_0x4a2725){return db[_0x302e('0x42')][_0x302e('0x48')](_0x59feed[_0x302e('0x49')],{})['then'](respondWithResult(_0x4a2725,0xc9))[_0x302e('0x47')](handleError(_0x4a2725,null));};exports[_0x302e('0x26')]=function(_0x5d26aa,_0x24235c){if(_0x5d26aa[_0x302e('0x49')]['id']){delete _0x5d26aa[_0x302e('0x49')]['id'];}return db[_0x302e('0x42')][_0x302e('0x4a')]({'where':{'id':_0x5d26aa['params']['id']}})[_0x302e('0x27')](handleEntityNotFound(_0x24235c,null))[_0x302e('0x27')](saveUpdates(_0x5d26aa['body'],null))[_0x302e('0x27')](respondWithResult(_0x24235c,null))[_0x302e('0x47')](handleError(_0x24235c,null));};exports[_0x302e('0x28')]=function(_0x27807d,_0x23e0d6){return db[_0x302e('0x42')][_0x302e('0x4a')]({'where':{'id':_0x27807d['params']['id']}})['then'](handleEntityNotFound(_0x23e0d6,null))[_0x302e('0x27')](removeEntity(_0x23e0d6,null))['catch'](handleError(_0x23e0d6,null));};
\ No newline at end of file
index 7f646e8..c15832c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf485=['moment','bluebird','request-promise','path','rimraf','../../config/environment','exports','define','SugarcrmField','sugarcrm_unique_index','idField','../../config/logger','api'];(function(_0x4cf8e6,_0x209aa6){var _0x3036a9=function(_0x55bce3){while(--_0x55bce3){_0x4cf8e6['push'](_0x4cf8e6['shift']());}};_0x3036a9(++_0x209aa6);}(_0xf485,0x19e));var _0x5f48=function(_0x1a7b7b,_0x38620f){_0x1a7b7b=_0x1a7b7b-0x0;var _0x2ebb8=_0xf485[_0x1a7b7b];return _0x2ebb8;};'use strict';var _=require('lodash');var util=require('util');var logger=require(_0x5f48('0x0'))(_0x5f48('0x1'));var moment=require(_0x5f48('0x2'));var BPromise=require(_0x5f48('0x3'));var rp=require(_0x5f48('0x4'));var fs=require('fs');var path=require(_0x5f48('0x5'));var rimraf=require(_0x5f48('0x6'));var config=require(_0x5f48('0x7'));var attributes=require('./intSugarcrmField.attributes');module[_0x5f48('0x8')]=function(_0x457a1b,_0x4326e3){return _0x457a1b[_0x5f48('0x9')](_0x5f48('0xa'),attributes,{'tableName':'int_sugarcrm_fields','paranoid':![],'indexes':[{'name':_0x5f48('0xb'),'fields':[_0x5f48('0xc'),'FieldId'],'unique':!![]}],'timestamps':!![]});};
\ No newline at end of file
+var _0x9f6f=['./intSugarcrmField.attributes','define','sugarcrm_unique_index','FieldId','lodash','util','../../config/logger','bluebird','request-promise','rimraf','../../config/environment'];(function(_0xf8da35,_0x4b0060){var _0x497c3a=function(_0x33bc40){while(--_0x33bc40){_0xf8da35['push'](_0xf8da35['shift']());}};_0x497c3a(++_0x4b0060);}(_0x9f6f,0x101));var _0xf9f6=function(_0x18fe83,_0x586018){_0x18fe83=_0x18fe83-0x0;var _0x350c0e=_0x9f6f[_0x18fe83];return _0x350c0e;};'use strict';var _=require(_0xf9f6('0x0'));var util=require(_0xf9f6('0x1'));var logger=require(_0xf9f6('0x2'))('api');var moment=require('moment');var BPromise=require(_0xf9f6('0x3'));var rp=require(_0xf9f6('0x4'));var fs=require('fs');var path=require('path');var rimraf=require(_0xf9f6('0x5'));var config=require(_0xf9f6('0x6'));var attributes=require(_0xf9f6('0x7'));module['exports']=function(_0x4be7ee,_0x36dbc1){return _0x4be7ee[_0xf9f6('0x8')]('SugarcrmField',attributes,{'tableName':'int_sugarcrm_fields','paranoid':![],'indexes':[{'name':_0xf9f6('0x9'),'fields':['idField',_0xf9f6('0xa')],'unique':!![]}],'timestamps':!![]});};
\ No newline at end of file
index f857494..7cf9429 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe51f=['moment','bluebird','randomstring','../../mysqldb','../../config/utils','../../config/logger','../../config/environment','jayson/promise','client','http','request','info','SugarcrmField,\x20%s,\x20%s','request\x20sent','debug','SugarcrmField,\x20%s,\x20%s,\x20%s','error','message','lodash','util'];(function(_0x46229a,_0x5b7fbc){var _0xd68564=function(_0x2bc901){while(--_0x2bc901){_0x46229a['push'](_0x46229a['shift']());}};_0xd68564(++_0x5b7fbc);}(_0xe51f,0x1de));var _0xfe51=function(_0x47d6af,_0x1d27d7){_0x47d6af=_0x47d6af-0x0;var _0x4b0645=_0xe51f[_0x47d6af];return _0x4b0645;};'use strict';var _=require(_0xfe51('0x0'));var util=require(_0xfe51('0x1'));var moment=require(_0xfe51('0x2'));var BPromise=require(_0xfe51('0x3'));var rs=require(_0xfe51('0x4'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0xfe51('0x5'))['db'];var utils=require(_0xfe51('0x6'));var logger=require(_0xfe51('0x7'))('rpc');var config=require(_0xfe51('0x8'));var jayson=require(_0xfe51('0x9'));var client=jayson[_0xfe51('0xa')][_0xfe51('0xb')]({'port':0x232a});function respondWithRpcPromise(_0xa25f8e,_0x2b9d12,_0x3ec783){return new BPromise(function(_0x10dc8d,_0x4e5b6d){return client[_0xfe51('0xc')](_0xa25f8e,_0x3ec783)['then'](function(_0xb8ed11){logger[_0xfe51('0xd')](_0xfe51('0xe'),_0x2b9d12,_0xfe51('0xf'));logger[_0xfe51('0x10')](_0xfe51('0x11'),_0x2b9d12,'request\x20sent',JSON['stringify'](_0xb8ed11));if(_0xb8ed11[_0xfe51('0x12')]){if(_0xb8ed11['error']['code']===0x1f4){logger[_0xfe51('0x12')](_0xfe51('0xe'),_0x2b9d12,_0xb8ed11[_0xfe51('0x12')]['message']);return _0x4e5b6d(_0xb8ed11[_0xfe51('0x12')]['message']);}logger[_0xfe51('0x12')](_0xfe51('0xe'),_0x2b9d12,_0xb8ed11[_0xfe51('0x12')][_0xfe51('0x13')]);return _0x10dc8d(_0xb8ed11[_0xfe51('0x12')]['message']);}else{logger[_0xfe51('0xd')]('SugarcrmField,\x20%s,\x20%s',_0x2b9d12,_0xfe51('0xf'));_0x10dc8d(_0xb8ed11['result'][_0xfe51('0x13')]);}})['catch'](function(_0x24c1ab){logger['error'](_0xfe51('0xe'),_0x2b9d12,_0x24c1ab);_0x4e5b6d(_0x24c1ab);});});}
\ No newline at end of file
+var _0x849c=['request','info','SugarcrmField,\x20%s,\x20%s','request\x20sent','debug','stringify','error','message','result','catch','lodash','moment','bluebird','randomstring','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','client','http'];(function(_0x31b31b,_0x5f044e){var _0x2c8fc2=function(_0x5438aa){while(--_0x5438aa){_0x31b31b['push'](_0x31b31b['shift']());}};_0x2c8fc2(++_0x5f044e);}(_0x849c,0xdc));var _0xc849=function(_0x40a3a7,_0x22f3fa){_0x40a3a7=_0x40a3a7-0x0;var _0x102fa1=_0x849c[_0x40a3a7];return _0x102fa1;};'use strict';var _=require(_0xc849('0x0'));var util=require('util');var moment=require(_0xc849('0x1'));var BPromise=require(_0xc849('0x2'));var rs=require(_0xc849('0x3'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0xc849('0x4'))['db'];var utils=require(_0xc849('0x5'));var logger=require(_0xc849('0x6'))(_0xc849('0x7'));var config=require(_0xc849('0x8'));var jayson=require('jayson/promise');var client=jayson[_0xc849('0x9')][_0xc849('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x3cd52c,_0x4e60f8,_0x4f7e03){return new BPromise(function(_0x670353,_0x3c8d84){return client[_0xc849('0xb')](_0x3cd52c,_0x4f7e03)['then'](function(_0x4aa175){logger[_0xc849('0xc')](_0xc849('0xd'),_0x4e60f8,_0xc849('0xe'));logger[_0xc849('0xf')]('SugarcrmField,\x20%s,\x20%s,\x20%s',_0x4e60f8,_0xc849('0xe'),JSON[_0xc849('0x10')](_0x4aa175));if(_0x4aa175[_0xc849('0x11')]){if(_0x4aa175['error']['code']===0x1f4){logger[_0xc849('0x11')](_0xc849('0xd'),_0x4e60f8,_0x4aa175['error'][_0xc849('0x12')]);return _0x3c8d84(_0x4aa175['error'][_0xc849('0x12')]);}logger['error'](_0xc849('0xd'),_0x4e60f8,_0x4aa175[_0xc849('0x11')][_0xc849('0x12')]);return _0x670353(_0x4aa175['error'][_0xc849('0x12')]);}else{logger[_0xc849('0xc')](_0xc849('0xd'),_0x4e60f8,_0xc849('0xe'));_0x670353(_0x4aa175[_0xc849('0x13')][_0xc849('0x12')]);}})[_0xc849('0x14')](function(_0x82d267){logger[_0xc849('0x11')](_0xc849('0xd'),_0x4e60f8,_0x82d267);_0x3c8d84(_0x82d267);});});}
\ No newline at end of file
index 8febc93..305f165 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa391=['index','/:id','show','/:id/configurations','/:id/fields','getFields','post','addConfiguration','update','delete','exports','util','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../config/environment','./intVtigerAccount.controller','get','isAuthenticated'];(function(_0x13be43,_0x1261e8){var _0x2b5d2f=function(_0x4a979f){while(--_0x4a979f){_0x13be43['push'](_0x13be43['shift']());}};_0x2b5d2f(++_0x1261e8);}(_0xa391,0x1ee));var _0x1a39=function(_0x4792c8,_0x5158a1){_0x4792c8=_0x4792c8-0x0;var _0x35edb1=_0xa391[_0x4792c8];return _0x35edb1;};'use strict';var multer=require('multer');var util=require(_0x1a39('0x0'));var path=require('path');var timeout=require(_0x1a39('0x1'));var express=require(_0x1a39('0x2'));var router=express[_0x1a39('0x3')]();var fs_extra=require(_0x1a39('0x4'));var auth=require(_0x1a39('0x5'));var interaction=require('../../components/interaction/service');var config=require(_0x1a39('0x6'));var controller=require(_0x1a39('0x7'));router[_0x1a39('0x8')]('/',auth[_0x1a39('0x9')](),controller[_0x1a39('0xa')]);router[_0x1a39('0x8')](_0x1a39('0xb'),auth['isAuthenticated'](),controller[_0x1a39('0xc')]);router['get'](_0x1a39('0xd'),auth[_0x1a39('0x9')](),controller['getConfigurations']);router[_0x1a39('0x8')](_0x1a39('0xe'),auth[_0x1a39('0x9')](),controller[_0x1a39('0xf')]);router[_0x1a39('0x10')]('/',auth['isAuthenticated'](),controller['create']);router[_0x1a39('0x10')](_0x1a39('0xd'),auth['isAuthenticated'](),controller[_0x1a39('0x11')]);router['put']('/:id',auth[_0x1a39('0x9')](),controller[_0x1a39('0x12')]);router[_0x1a39('0x13')](_0x1a39('0xb'),auth[_0x1a39('0x9')](),controller['destroy']);module[_0x1a39('0x14')]=router;
\ No newline at end of file
+var _0xa7d8=['getConfigurations','/:id/fields','getFields','create','post','addConfiguration','put','delete','destroy','exports','multer','path','express','Router','../../components/auth/service','../../components/interaction/service','../../config/environment','./intVtigerAccount.controller','get','isAuthenticated','/:id','show','/:id/configurations'];(function(_0x2bd805,_0x1112a1){var _0x11550c=function(_0x2b65ad){while(--_0x2b65ad){_0x2bd805['push'](_0x2bd805['shift']());}};_0x11550c(++_0x1112a1);}(_0xa7d8,0x94));var _0x8a7d=function(_0x699722,_0x196bb4){_0x699722=_0x699722-0x0;var _0x17705d=_0xa7d8[_0x699722];return _0x17705d;};'use strict';var multer=require(_0x8a7d('0x0'));var util=require('util');var path=require(_0x8a7d('0x1'));var timeout=require('connect-timeout');var express=require(_0x8a7d('0x2'));var router=express[_0x8a7d('0x3')]();var fs_extra=require('fs-extra');var auth=require(_0x8a7d('0x4'));var interaction=require(_0x8a7d('0x5'));var config=require(_0x8a7d('0x6'));var controller=require(_0x8a7d('0x7'));router[_0x8a7d('0x8')]('/',auth[_0x8a7d('0x9')](),controller['index']);router[_0x8a7d('0x8')](_0x8a7d('0xa'),auth['isAuthenticated'](),controller[_0x8a7d('0xb')]);router['get'](_0x8a7d('0xc'),auth[_0x8a7d('0x9')](),controller[_0x8a7d('0xd')]);router[_0x8a7d('0x8')](_0x8a7d('0xe'),auth['isAuthenticated'](),controller[_0x8a7d('0xf')]);router['post']('/',auth[_0x8a7d('0x9')](),controller[_0x8a7d('0x10')]);router[_0x8a7d('0x11')](_0x8a7d('0xc'),auth['isAuthenticated'](),controller[_0x8a7d('0x12')]);router[_0x8a7d('0x13')](_0x8a7d('0xa'),auth[_0x8a7d('0x9')](),controller['update']);router[_0x8a7d('0x14')](_0x8a7d('0xa'),auth[_0x8a7d('0x9')](),controller[_0x8a7d('0x15')]);module[_0x8a7d('0x16')]=router;
\ No newline at end of file
index 3497a39..76e3aeb 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc624=['STRING','HelpDesk','sequelize','exports'];(function(_0x59c301,_0x359c50){var _0x3866b9=function(_0x2d380e){while(--_0x2d380e){_0x59c301['push'](_0x59c301['shift']());}};_0x3866b9(++_0x359c50);}(_0xc624,0xca));var _0x4c62=function(_0x1188a8,_0xc1498d){_0x1188a8=_0x1188a8-0x0;var _0x50c1c1=_0xc624[_0x1188a8];return _0x50c1c1;};'use strict';var Sequelize=require(_0x4c62('0x0'));module[_0x4c62('0x1')]={'name':{'type':Sequelize[_0x4c62('0x2')],'allowNull':![]},'description':{'type':Sequelize['STRING']},'username':{'type':Sequelize[_0x4c62('0x2')],'allowNull':![]},'moduleName':{'type':Sequelize[_0x4c62('0x2')],'allowNull':![],'defaultValue':_0x4c62('0x3')},'remoteUri':{'type':Sequelize[_0x4c62('0x2')],'allowNull':![]},'serverUrl':{'type':Sequelize[_0x4c62('0x2')],'allowNull':![]},'accessKey':{'type':Sequelize[_0x4c62('0x2')],'allowNull':![]}};
\ No newline at end of file
+var _0xccab=['exports','STRING','sequelize'];(function(_0xa45395,_0x5579e6){var _0x3c83d2=function(_0x5d013c){while(--_0x5d013c){_0xa45395['push'](_0xa45395['shift']());}};_0x3c83d2(++_0x5579e6);}(_0xccab,0x125));var _0xbcca=function(_0x17770a,_0x5ccaed){_0x17770a=_0x17770a-0x0;var _0xaab088=_0xccab[_0x17770a];return _0xaab088;};'use strict';var Sequelize=require(_0xbcca('0x0'));module[_0xbcca('0x1')]={'name':{'type':Sequelize[_0xbcca('0x2')],'allowNull':![]},'description':{'type':Sequelize[_0xbcca('0x2')]},'username':{'type':Sequelize[_0xbcca('0x2')],'allowNull':![]},'moduleName':{'type':Sequelize[_0xbcca('0x2')],'allowNull':![],'defaultValue':'HelpDesk'},'remoteUri':{'type':Sequelize[_0xbcca('0x2')],'allowNull':![]},'serverUrl':{'type':Sequelize[_0xbcca('0x2')],'allowNull':![]},'accessKey':{'type':Sequelize['STRING'],'allowNull':![]}};
\ No newline at end of file
index 47f544c..aa61fcc 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x254e=['save','update','then','destroy','stack','name','index','map','VtigerAccount','fieldName','type','key','query','keys','filters','intersection','model','attributes','fields','hasOwnProperty','nolimit','order','sort','where','pick','filter','merge','VIRTUAL','includeAll','findAll','catch','show','params','rawAttributes','length','include','options','find','create','body','getConfigurations','findOne','VtigerConfiguration','addConfiguration','AccountId','getSubjects','channel','getDescriptions','VtigerField','Subjects','Descriptions','md5','username','description','moduleName','remoteUri','serverUrl','accessKey','slice','substring','format','%s/webservice.php','GET','success','POST','login','result','autogenerated','reference','owner','remove','editable','false','label','startsWith','cf_','picklist','picklistValues','value','log','test','statusCode','error','getFields','send','Wrong\x20credentials','eml-format','rimraf','bluebird','util','fs-extra','lodash','squel','crypto','jsforce','desk.js','to-csv','querystring','papaparse','../../components/auth/service','../../components/parsers/qs','../../config/license/hardware','../../config/logger','../../config/environment','../../mysqldb','../../components/integrations/configuration','sendStatus','status','end','json','offset','limit','undefined','count','Content-Range','apply'];(function(_0x5b644e,_0x2e5e07){var _0x49c6bf=function(_0x3032d9){while(--_0x3032d9){_0x5b644e['push'](_0x5b644e['shift']());}};_0x49c6bf(++_0x2e5e07);}(_0x254e,0xca));var _0xe254=function(_0x109244,_0x7fe26c){_0x109244=_0x109244-0x0;var _0x15f7d6=_0x254e[_0x109244];return _0x15f7d6;};'use strict';var emlformat=require(_0xe254('0x0'));var rimraf=require(_0xe254('0x1'));var zipdir=require('zip-dir');var jsonpatch=require('fast-json-patch');var rp=require('request-promise');var moment=require('moment');var BPromise=require(_0xe254('0x2'));var Mustache=require('mustache');var util=require(_0xe254('0x3'));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(_0xe254('0x4'));var _=require(_0xe254('0x5'));var squel=require(_0xe254('0x6'));var crypto=require(_0xe254('0x7'));var jsforce=require(_0xe254('0x8'));var deskjs=require(_0xe254('0x9'));var toCsv=require(_0xe254('0xa'));var querystring=require(_0xe254('0xb'));var Papa=require(_0xe254('0xc'));var Redis=require('ioredis');var authService=require(_0xe254('0xd'));var qs=require(_0xe254('0xe'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0xe254('0xf'));var logger=require(_0xe254('0x10'))('api');var utils=require('../../config/utils');var config=require(_0xe254('0x11'));var licenseUtil=require('../../config/license/util');var db=require(_0xe254('0x12'))['db'];var integrations=require(_0xe254('0x13'));function respondWithStatusCode(_0x3cfbcc,_0x2c0445){_0x2c0445=_0x2c0445||0xcc;return function(_0x4fad42){if(_0x4fad42){return _0x3cfbcc[_0xe254('0x14')](_0x2c0445);}return _0x3cfbcc[_0xe254('0x15')](_0x2c0445)[_0xe254('0x16')]();};}function respondWithResult(_0x166ed3,_0x5a756c){_0x5a756c=_0x5a756c||0xc8;return function(_0x263a47){if(_0x263a47){return _0x166ed3[_0xe254('0x15')](_0x5a756c)[_0xe254('0x17')](_0x263a47);}};}function respondWithFilteredResult(_0x452dee,_0x59478a){return function(_0x2f9d2b){if(_0x2f9d2b){var _0x34741a=typeof _0x59478a[_0xe254('0x18')]==='undefined'&&typeof _0x59478a[_0xe254('0x19')]===_0xe254('0x1a');var _0x43e753=_0x2f9d2b[_0xe254('0x1b')];var _0x3b383c=_0x34741a?0x0:_0x59478a[_0xe254('0x18')];var _0x41e552=_0x34741a?_0x2f9d2b[_0xe254('0x1b')]:_0x59478a['offset']+_0x59478a[_0xe254('0x19')];var _0x2c1d2a;if(_0x41e552>=_0x43e753){_0x41e552=_0x43e753;_0x2c1d2a=0xc8;}else{_0x2c1d2a=0xce;}_0x452dee['status'](_0x2c1d2a);return _0x452dee['set'](_0xe254('0x1c'),_0x3b383c+'-'+_0x41e552+'/'+_0x43e753)[_0xe254('0x17')](_0x2f9d2b);}return null;};}function patchUpdates(_0x308e42){return function(_0x20cb9){try{jsonpatch[_0xe254('0x1d')](_0x20cb9,_0x308e42,!![]);}catch(_0x2fa582){return BPromise['reject'](_0x2fa582);}return _0x20cb9[_0xe254('0x1e')]();};}function saveUpdates(_0x13b084,_0x2fc40c){return function(_0x17ea70){if(_0x17ea70){return _0x17ea70[_0xe254('0x1f')](_0x13b084)[_0xe254('0x20')](function(_0x1ed9ea){return _0x1ed9ea;});}return null;};}function removeEntity(_0x4f8e63,_0x20b403){return function(_0x488341){if(_0x488341){return _0x488341[_0xe254('0x21')]()['then'](function(){_0x4f8e63[_0xe254('0x15')](0xcc)[_0xe254('0x16')]();});}};}function handleEntityNotFound(_0x4cb33c,_0x49da93){return function(_0x348e00){if(!_0x348e00){_0x4cb33c[_0xe254('0x14')](0x194);}return _0x348e00;};}function handleError(_0x4eb980,_0x108be5){_0x108be5=_0x108be5||0x1f4;return function(_0x40c043){logger['error'](_0x40c043[_0xe254('0x22')]);if(_0x40c043[_0xe254('0x23')]){delete _0x40c043['name'];}_0x4eb980[_0xe254('0x15')](_0x108be5)['send'](_0x40c043);};}exports[_0xe254('0x24')]=function(_0x571598,_0x1ba99f){var _0x11b34b={},_0x4d5266={},_0xc6b2e1={'count':0x0,'rows':[]};var _0x120bf7=_[_0xe254('0x25')](db[_0xe254('0x26')]['rawAttributes'],function(_0x19919f){return{'name':_0x19919f[_0xe254('0x27')],'type':_0x19919f[_0xe254('0x28')][_0xe254('0x29')]};});_0x4d5266['model']=_[_0xe254('0x25')](_0x120bf7,'name');_0x4d5266[_0xe254('0x2a')]=_[_0xe254('0x2b')](_0x571598[_0xe254('0x2a')]);_0x4d5266[_0xe254('0x2c')]=_[_0xe254('0x2d')](_0x4d5266[_0xe254('0x2e')],_0x4d5266[_0xe254('0x2a')]);_0x11b34b[_0xe254('0x2f')]=_[_0xe254('0x2d')](_0x4d5266['model'],qs[_0xe254('0x30')](_0x571598['query']['fields']));_0x11b34b['attributes']=_0x11b34b[_0xe254('0x2f')]['length']?_0x11b34b[_0xe254('0x2f')]:_0x4d5266[_0xe254('0x2e')];if(!_0x571598[_0xe254('0x2a')][_0xe254('0x31')](_0xe254('0x32'))){_0x11b34b[_0xe254('0x19')]=qs[_0xe254('0x19')](_0x571598[_0xe254('0x2a')]['limit']);_0x11b34b['offset']=qs['offset'](_0x571598[_0xe254('0x2a')]['offset']);}_0x11b34b[_0xe254('0x33')]=qs[_0xe254('0x34')](_0x571598[_0xe254('0x2a')][_0xe254('0x34')]);_0x11b34b[_0xe254('0x35')]=qs['filters'](_[_0xe254('0x36')](_0x571598[_0xe254('0x2a')],_0x4d5266[_0xe254('0x2c')]),_0x120bf7);if(_0x571598[_0xe254('0x2a')][_0xe254('0x37')]){_0x11b34b[_0xe254('0x35')]=_[_0xe254('0x38')](_0x11b34b[_0xe254('0x35')],{'$or':_[_0xe254('0x25')](_0x120bf7,function(_0x38dd2d){if(_0x38dd2d[_0xe254('0x28')]!==_0xe254('0x39')){var _0x1733fc={};_0x1733fc[_0x38dd2d[_0xe254('0x23')]]={'$like':'%'+_0x571598['query']['filter']+'%'};return _0x1733fc;}})});}_0x11b34b=_[_0xe254('0x38')]({},_0x11b34b,_0x571598['options']);var _0x40762c={'where':_0x11b34b['where']};return db[_0xe254('0x26')][_0xe254('0x1b')](_0x40762c)[_0xe254('0x20')](function(_0x30a05c){_0xc6b2e1[_0xe254('0x1b')]=_0x30a05c;if(_0x571598[_0xe254('0x2a')][_0xe254('0x3a')]){_0x11b34b['include']=[{'all':!![]}];}return db[_0xe254('0x26')][_0xe254('0x3b')](_0x11b34b);})[_0xe254('0x20')](function(_0x8c851d){_0xc6b2e1['rows']=_0x8c851d;return _0xc6b2e1;})['then'](respondWithFilteredResult(_0x1ba99f,_0x11b34b))[_0xe254('0x3c')](handleError(_0x1ba99f,null));};exports[_0xe254('0x3d')]=function(_0x9fbd9f,_0x3c15a0){var _0x179641={'raw':![],'where':{'id':_0x9fbd9f[_0xe254('0x3e')]['id']}},_0x39bd6d={};_0x39bd6d[_0xe254('0x2e')]=_[_0xe254('0x2b')](db['VtigerAccount'][_0xe254('0x3f')]);_0x39bd6d[_0xe254('0x2a')]=_['keys'](_0x9fbd9f[_0xe254('0x2a')]);_0x39bd6d[_0xe254('0x2c')]=_['intersection'](_0x39bd6d[_0xe254('0x2e')],_0x39bd6d[_0xe254('0x2a')]);_0x179641[_0xe254('0x2f')]=_[_0xe254('0x2d')](_0x39bd6d[_0xe254('0x2e')],qs[_0xe254('0x30')](_0x9fbd9f[_0xe254('0x2a')][_0xe254('0x30')]));_0x179641[_0xe254('0x2f')]=_0x179641[_0xe254('0x2f')][_0xe254('0x40')]?_0x179641[_0xe254('0x2f')]:_0x39bd6d['model'];if(_0x9fbd9f[_0xe254('0x2a')][_0xe254('0x3a')]){_0x179641[_0xe254('0x41')]=[{'all':!![]}];}_0x179641=_[_0xe254('0x38')]({},_0x179641,_0x9fbd9f[_0xe254('0x42')]);return db[_0xe254('0x26')][_0xe254('0x43')](_0x179641)[_0xe254('0x20')](handleEntityNotFound(_0x3c15a0,null))['then'](respondWithResult(_0x3c15a0,null))[_0xe254('0x3c')](handleError(_0x3c15a0,null));};exports[_0xe254('0x44')]=function(_0x4e5ef9,_0x2648dd){return db[_0xe254('0x26')]['create'](_0x4e5ef9[_0xe254('0x45')],{})[_0xe254('0x20')](respondWithResult(_0x2648dd,0xc9))['catch'](handleError(_0x2648dd,null));};exports[_0xe254('0x1f')]=function(_0x49654d,_0x136af1){if(_0x49654d[_0xe254('0x45')]['id']){delete _0x49654d['body']['id'];}return db['VtigerAccount'][_0xe254('0x43')]({'where':{'id':_0x49654d['params']['id']}})[_0xe254('0x20')](handleEntityNotFound(_0x136af1,null))[_0xe254('0x20')](saveUpdates(_0x49654d[_0xe254('0x45')],null))[_0xe254('0x20')](respondWithResult(_0x136af1,null))[_0xe254('0x3c')](handleError(_0x136af1,null));};exports[_0xe254('0x21')]=function(_0x3d426d,_0x24b56a){return db[_0xe254('0x26')]['find']({'where':{'id':_0x3d426d[_0xe254('0x3e')]['id']}})['then'](handleEntityNotFound(_0x24b56a,null))[_0xe254('0x20')](removeEntity(_0x24b56a,null))[_0xe254('0x3c')](handleError(_0x24b56a,null));};exports[_0xe254('0x46')]=function(_0x59f47a,_0x4e8b4e,_0x319adc){var _0x3e7e87={};var _0x24ed02={};var _0x2a4592;var _0x3e4277;return db['VtigerAccount'][_0xe254('0x47')]({'where':{'id':_0x59f47a[_0xe254('0x3e')]['id']}})[_0xe254('0x20')](handleEntityNotFound(_0x4e8b4e,null))[_0xe254('0x20')](function(_0x1305cc){if(_0x1305cc){_0x2a4592=_0x1305cc;_0x24ed02[_0xe254('0x2e')]=_[_0xe254('0x2b')](db[_0xe254('0x48')]['rawAttributes']);_0x24ed02[_0xe254('0x2a')]=_[_0xe254('0x2b')](_0x59f47a[_0xe254('0x2a')]);_0x24ed02[_0xe254('0x2c')]=_[_0xe254('0x2d')](_0x24ed02['model'],_0x24ed02['query']);_0x3e7e87['attributes']=_[_0xe254('0x2d')](_0x24ed02[_0xe254('0x2e')],qs[_0xe254('0x30')](_0x59f47a[_0xe254('0x2a')][_0xe254('0x30')]));_0x3e7e87[_0xe254('0x2f')]=_0x3e7e87[_0xe254('0x2f')][_0xe254('0x40')]?_0x3e7e87[_0xe254('0x2f')]:_0x24ed02['model'];_0x3e7e87[_0xe254('0x33')]=qs['sort'](_0x59f47a['query'][_0xe254('0x34')]);_0x3e7e87[_0xe254('0x35')]=qs['filters'](_[_0xe254('0x36')](_0x59f47a[_0xe254('0x2a')],_0x24ed02[_0xe254('0x2c')]));if(_0x59f47a[_0xe254('0x2a')][_0xe254('0x37')]){_0x3e7e87['where']=_[_0xe254('0x38')](_0x3e7e87[_0xe254('0x35')],{'$or':_[_0xe254('0x25')](_0x3e7e87[_0xe254('0x2f')],function(_0x1f33ea){var _0x205654={};_0x205654[_0x1f33ea]={'$like':'%'+_0x59f47a['query'][_0xe254('0x37')]+'%'};return _0x205654;})});}_0x3e7e87=_[_0xe254('0x38')]({},_0x3e7e87,_0x59f47a[_0xe254('0x42')]);return _0x2a4592[_0xe254('0x46')](_0x3e7e87);}})[_0xe254('0x20')](function(_0x17ac24){if(_0x17ac24){_0x3e4277=_0x17ac24[_0xe254('0x40')];if(!_0x59f47a[_0xe254('0x2a')][_0xe254('0x31')](_0xe254('0x32'))){_0x3e7e87['limit']=qs[_0xe254('0x19')](_0x59f47a['query'][_0xe254('0x19')]);_0x3e7e87[_0xe254('0x18')]=qs[_0xe254('0x18')](_0x59f47a[_0xe254('0x2a')][_0xe254('0x18')]);}return _0x2a4592[_0xe254('0x46')](_0x3e7e87);}})[_0xe254('0x20')](function(_0x479797){if(_0x479797){return _0x479797?{'count':_0x3e4277,'rows':_0x479797}:null;}})[_0xe254('0x20')](respondWithResult(_0x4e8b4e,null))[_0xe254('0x3c')](handleError(_0x4e8b4e,null));};exports[_0xe254('0x49')]=function(_0x2e657e,_0x5e5b26,_0x5a4c1f){if(_0x2e657e[_0xe254('0x45')]['id']){delete _0x2e657e[_0xe254('0x45')]['id'];}return db[_0xe254('0x26')]['findOne']({'where':{'id':_0x2e657e['params']['id']}})[_0xe254('0x20')](handleEntityNotFound(_0x5e5b26,null))[_0xe254('0x20')](function(_0x3fc6b4){if(_0x3fc6b4){_0x2e657e[_0xe254('0x45')][_0xe254('0x4a')]=_0x3fc6b4['id'];_0x2e657e['body']['Subjects']=integrations[_0xe254('0x4b')](_0x2e657e[_0xe254('0x45')][_0xe254('0x4c')],_0x2e657e[_0xe254('0x45')]['type']);_0x2e657e[_0xe254('0x45')]['Descriptions']=integrations[_0xe254('0x4d')](_0x2e657e[_0xe254('0x45')][_0xe254('0x4c')],_0x2e657e[_0xe254('0x45')][_0xe254('0x28')]);return db[_0xe254('0x48')][_0xe254('0x44')](_0x2e657e[_0xe254('0x45')],{'include':[{'model':db[_0xe254('0x4e')],'as':_0xe254('0x4f')},{'model':db[_0xe254('0x4e')],'as':_0xe254('0x50')}]});}return null;})[_0xe254('0x20')](respondWithResult(_0x5e5b26,null))['catch'](handleError(_0x5e5b26,null));};var md5=require(_0xe254('0x51'));exports['getFields']=function(_0x35637e,_0x4a6304,_0xdad36c){var _0x648945=null;var _0x3d6b4e=null;var _0x12abbb=null;var _0x479919=null;var _0x2b3eb1='';return db['VtigerAccount'][_0xe254('0x47')]({'where':{'id':_0x35637e['params']['id']},'attributes':['id',_0xe254('0x23'),_0xe254('0x52'),_0xe254('0x53'),_0xe254('0x54'),_0xe254('0x55'),_0xe254('0x56'),_0xe254('0x57')]})[_0xe254('0x20')](handleEntityNotFound(_0x4a6304,null))[_0xe254('0x20')](function(_0x44ad56){if(_0x44ad56){_0x648945=_0x44ad56[_0xe254('0x52')];_0x3d6b4e=_0x44ad56[_0xe254('0x57')];_0x12abbb=_0x44ad56[_0xe254('0x54')];_0x2b3eb1=_0x44ad56['remoteUri'];var _0x2e71fc=_0x2b3eb1[_0xe254('0x58')](-0x1);if(_0x2e71fc==='/'){_0x2b3eb1=_0x2b3eb1[_0xe254('0x59')](0x0,_0x2b3eb1['lastIndexOf'](_0x2e71fc));}_0x479919=util[_0xe254('0x5a')](_0xe254('0x5b'),_0x2b3eb1);var _0x50b05f={'method':_0xe254('0x5c'),'uri':_0x479919,'qs':{'operation':'getchallenge','username':_0x44ad56[_0xe254('0x52')]},'json':!![]};return rp(_0x50b05f);}})[_0xe254('0x20')](function(_0x117a2a){if(_0x117a2a[_0xe254('0x5d')]){var _0x5b651e={'method':_0xe254('0x5e'),'uri':_0x479919,'form':{'operation':_0xe254('0x5f'),'username':_0x648945,'accessKey':md5(_0x117a2a[_0xe254('0x60')]['token']+_0x3d6b4e)},'json':!![]};return rp(_0x5b651e);}})['then'](function(_0x463051){if(_0x463051[_0xe254('0x5d')]){var _0xbd6c3c={'method':_0xe254('0x5c'),'uri':_0x479919,'qs':{'operation':'describe','username':_0x648945,'sessionName':_0x463051[_0xe254('0x60')]['sessionName'],'elementType':_0x12abbb},'json':!![]};return rp(_0xbd6c3c);}})[_0xe254('0x20')](function(_0x1485b8){if(_0x1485b8[_0xe254('0x5d')]){var _0x2d88d3=[_0xe254('0x61'),_0xe254('0x62'),_0xe254('0x63')];_[_0xe254('0x64')](_0x1485b8[_0xe254('0x60')][_0xe254('0x30')],function(_0x25cfbc){return _0x2d88d3['includes'](_0x25cfbc[_0xe254('0x28')][_0xe254('0x23')]);});_['remove'](_0x1485b8['result'][_0xe254('0x30')],function(_0x2b21f2){return _0x2b21f2[_0xe254('0x65')]===_0xe254('0x66');});return{'count':_0x1485b8[_0xe254('0x60')][_0xe254('0x30')][_0xe254('0x40')],'rows':_[_0xe254('0x25')](_0x1485b8['result'][_0xe254('0x30')],function(_0xf93f3f){return{'id':_0xf93f3f[_0xe254('0x23')],'name':_0xf93f3f[_0xe254('0x67')],'custom':_[_0xe254('0x68')](_0xf93f3f['name'],_0xe254('0x69'))?!![]:![],'options':_0xf93f3f[_0xe254('0x28')][_0xe254('0x23')]===_0xe254('0x6a')&&_0xf93f3f[_0xe254('0x28')][_0xe254('0x6b')][_0xe254('0x40')]>0x0?_[_0xe254('0x25')](_0xf93f3f[_0xe254('0x28')][_0xe254('0x6b')],function(_0x281441){return{'name':_0x281441['label'],'value':_0x281441[_0xe254('0x6c')]};}):[]};})};}})[_0xe254('0x20')](respondWithResult(_0x4a6304,null))[_0xe254('0x3c')](function(_0x3a73fd){console[_0xe254('0x6d')]('vTiger\x20error:\x20'+_0x3a73fd);var _0x57bcb2=_0x35637e['query'][_0xe254('0x6e')]?0x1f4:_0x3a73fd[_0xe254('0x6f')]||0x1f4;logger[_0xe254('0x70')]('getFields,\x20%s,\x20%s,\x20%s',_0xe254('0x71'),_0x57bcb2,JSON['stringify'](_0x3a73fd));delete _0x3a73fd['name'];if(_0x57bcb2===0x191){_0x57bcb2=0x190;}_0x4a6304['status'](_0x57bcb2)[_0xe254('0x72')](_0x35637e[_0xe254('0x2a')]['test']?{'message':_0xe254('0x73'),'statusCode':_0x3a73fd['statusCode']}:_0x3a73fd);});};
\ No newline at end of file
+var _0xf872=['../../config/license/util','status','end','undefined','limit','count','offset','Content-Range','json','apply','reject','save','update','then','sendStatus','error','stack','name','send','index','VtigerAccount','fieldName','type','model','map','query','keys','filters','intersection','attributes','fields','hasOwnProperty','nolimit','order','where','pick','filter','merge','VIRTUAL','options','findAll','show','params','rawAttributes','length','includeAll','include','create','body','catch','find','destroy','getConfigurations','VtigerConfiguration','sort','addConfiguration','findOne','Subjects','getSubjects','channel','getDescriptions','VtigerField','Descriptions','md5','getFields','username','description','moduleName','remoteUri','serverUrl','slice','substring','format','GET','getchallenge','success','result','token','sessionName','autogenerated','reference','remove','includes','editable','startsWith','cf_','picklist','label','log','vTiger\x20error:\x20','test','statusCode','getFields,\x20%s,\x20%s,\x20%s','stringify','Wrong\x20credentials','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','bluebird','mustache','util','sox','to-csv','fs-extra','lodash','jsforce','desk.js','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils'];(function(_0x45f85d,_0x4db7b6){var _0x2161b6=function(_0x2bf63b){while(--_0x2bf63b){_0x45f85d['push'](_0x45f85d['shift']());}};_0x2161b6(++_0x4db7b6);}(_0xf872,0x14b));var _0x2f87=function(_0x40ddc0,_0x41c082){_0x40ddc0=_0x40ddc0-0x0;var _0x1aebf1=_0xf872[_0x40ddc0];return _0x1aebf1;};'use strict';var emlformat=require(_0x2f87('0x0'));var rimraf=require(_0x2f87('0x1'));var zipdir=require(_0x2f87('0x2'));var jsonpatch=require(_0x2f87('0x3'));var rp=require(_0x2f87('0x4'));var moment=require('moment');var BPromise=require(_0x2f87('0x5'));var Mustache=require(_0x2f87('0x6'));var util=require(_0x2f87('0x7'));var path=require('path');var sox=require(_0x2f87('0x8'));var csv=require(_0x2f87('0x9'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x2f87('0xa'));var _=require(_0x2f87('0xb'));var squel=require('squel');var crypto=require('crypto');var jsforce=require(_0x2f87('0xc'));var deskjs=require(_0x2f87('0xd'));var toCsv=require('to-csv');var querystring=require('querystring');var Papa=require(_0x2f87('0xe'));var Redis=require(_0x2f87('0xf'));var authService=require(_0x2f87('0x10'));var qs=require(_0x2f87('0x11'));var as=require(_0x2f87('0x12'));var hardwareService=require(_0x2f87('0x13'));var logger=require(_0x2f87('0x14'))(_0x2f87('0x15'));var utils=require(_0x2f87('0x16'));var config=require('../../config/environment');var licenseUtil=require(_0x2f87('0x17'));var db=require('../../mysqldb')['db'];var integrations=require('../../components/integrations/configuration');function respondWithStatusCode(_0x2937b0,_0x109960){_0x109960=_0x109960||0xcc;return function(_0x4c050b){if(_0x4c050b){return _0x2937b0['sendStatus'](_0x109960);}return _0x2937b0[_0x2f87('0x18')](_0x109960)[_0x2f87('0x19')]();};}function respondWithResult(_0x1f1fe7,_0x37de7b){_0x37de7b=_0x37de7b||0xc8;return function(_0x4d7862){if(_0x4d7862){return _0x1f1fe7[_0x2f87('0x18')](_0x37de7b)['json'](_0x4d7862);}};}function respondWithFilteredResult(_0xafeae5,_0x29f464){return function(_0xc1935d){if(_0xc1935d){var _0x5b65ef=typeof _0x29f464['offset']===_0x2f87('0x1a')&&typeof _0x29f464[_0x2f87('0x1b')]===_0x2f87('0x1a');var _0x3fd2a2=_0xc1935d[_0x2f87('0x1c')];var _0x295e10=_0x5b65ef?0x0:_0x29f464[_0x2f87('0x1d')];var _0xd9f9e3=_0x5b65ef?_0xc1935d[_0x2f87('0x1c')]:_0x29f464[_0x2f87('0x1d')]+_0x29f464['limit'];var _0x56c326;if(_0xd9f9e3>=_0x3fd2a2){_0xd9f9e3=_0x3fd2a2;_0x56c326=0xc8;}else{_0x56c326=0xce;}_0xafeae5[_0x2f87('0x18')](_0x56c326);return _0xafeae5['set'](_0x2f87('0x1e'),_0x295e10+'-'+_0xd9f9e3+'/'+_0x3fd2a2)[_0x2f87('0x1f')](_0xc1935d);}return null;};}function patchUpdates(_0x2454f6){return function(_0x4dd40a){try{jsonpatch[_0x2f87('0x20')](_0x4dd40a,_0x2454f6,!![]);}catch(_0x235fca){return BPromise[_0x2f87('0x21')](_0x235fca);}return _0x4dd40a[_0x2f87('0x22')]();};}function saveUpdates(_0x4c5a13,_0x12ce41){return function(_0x1ff6ba){if(_0x1ff6ba){return _0x1ff6ba[_0x2f87('0x23')](_0x4c5a13)['then'](function(_0x8aa573){return _0x8aa573;});}return null;};}function removeEntity(_0x161211,_0x19fa8d){return function(_0x1cf8a2){if(_0x1cf8a2){return _0x1cf8a2['destroy']()[_0x2f87('0x24')](function(){_0x161211[_0x2f87('0x18')](0xcc)[_0x2f87('0x19')]();});}};}function handleEntityNotFound(_0x4a5885,_0x396997){return function(_0x2727b8){if(!_0x2727b8){_0x4a5885[_0x2f87('0x25')](0x194);}return _0x2727b8;};}function handleError(_0x206d2b,_0x1352b4){_0x1352b4=_0x1352b4||0x1f4;return function(_0x3b3213){logger[_0x2f87('0x26')](_0x3b3213[_0x2f87('0x27')]);if(_0x3b3213[_0x2f87('0x28')]){delete _0x3b3213[_0x2f87('0x28')];}_0x206d2b['status'](_0x1352b4)[_0x2f87('0x29')](_0x3b3213);};}exports[_0x2f87('0x2a')]=function(_0x280d52,_0x41df56){var _0x3caea6={},_0x4b1c57={},_0x1d940b={'count':0x0,'rows':[]};var _0x1d3d3d=_['map'](db[_0x2f87('0x2b')]['rawAttributes'],function(_0x22f6e6){return{'name':_0x22f6e6[_0x2f87('0x2c')],'type':_0x22f6e6[_0x2f87('0x2d')]['key']};});_0x4b1c57[_0x2f87('0x2e')]=_[_0x2f87('0x2f')](_0x1d3d3d,_0x2f87('0x28'));_0x4b1c57[_0x2f87('0x30')]=_[_0x2f87('0x31')](_0x280d52[_0x2f87('0x30')]);_0x4b1c57[_0x2f87('0x32')]=_[_0x2f87('0x33')](_0x4b1c57[_0x2f87('0x2e')],_0x4b1c57[_0x2f87('0x30')]);_0x3caea6[_0x2f87('0x34')]=_[_0x2f87('0x33')](_0x4b1c57[_0x2f87('0x2e')],qs[_0x2f87('0x35')](_0x280d52[_0x2f87('0x30')][_0x2f87('0x35')]));_0x3caea6[_0x2f87('0x34')]=_0x3caea6[_0x2f87('0x34')]['length']?_0x3caea6[_0x2f87('0x34')]:_0x4b1c57[_0x2f87('0x2e')];if(!_0x280d52[_0x2f87('0x30')][_0x2f87('0x36')](_0x2f87('0x37'))){_0x3caea6[_0x2f87('0x1b')]=qs[_0x2f87('0x1b')](_0x280d52['query'][_0x2f87('0x1b')]);_0x3caea6[_0x2f87('0x1d')]=qs[_0x2f87('0x1d')](_0x280d52[_0x2f87('0x30')][_0x2f87('0x1d')]);}_0x3caea6[_0x2f87('0x38')]=qs['sort'](_0x280d52[_0x2f87('0x30')]['sort']);_0x3caea6[_0x2f87('0x39')]=qs[_0x2f87('0x32')](_[_0x2f87('0x3a')](_0x280d52[_0x2f87('0x30')],_0x4b1c57['filters']),_0x1d3d3d);if(_0x280d52[_0x2f87('0x30')][_0x2f87('0x3b')]){_0x3caea6['where']=_[_0x2f87('0x3c')](_0x3caea6['where'],{'$or':_[_0x2f87('0x2f')](_0x1d3d3d,function(_0x1b0466){if(_0x1b0466[_0x2f87('0x2d')]!==_0x2f87('0x3d')){var _0x48f027={};_0x48f027[_0x1b0466['name']]={'$like':'%'+_0x280d52['query'][_0x2f87('0x3b')]+'%'};return _0x48f027;}})});}_0x3caea6=_['merge']({},_0x3caea6,_0x280d52[_0x2f87('0x3e')]);var _0x584df={'where':_0x3caea6[_0x2f87('0x39')]};return db[_0x2f87('0x2b')][_0x2f87('0x1c')](_0x584df)[_0x2f87('0x24')](function(_0xf66826){_0x1d940b[_0x2f87('0x1c')]=_0xf66826;if(_0x280d52[_0x2f87('0x30')]['includeAll']){_0x3caea6['include']=[{'all':!![]}];}return db[_0x2f87('0x2b')][_0x2f87('0x3f')](_0x3caea6);})[_0x2f87('0x24')](function(_0x49fe4b){_0x1d940b['rows']=_0x49fe4b;return _0x1d940b;})[_0x2f87('0x24')](respondWithFilteredResult(_0x41df56,_0x3caea6))['catch'](handleError(_0x41df56,null));};exports[_0x2f87('0x40')]=function(_0x1e5038,_0x37b2ec){var _0x2cca6d={'raw':![],'where':{'id':_0x1e5038[_0x2f87('0x41')]['id']}},_0x3d4ba5={};_0x3d4ba5[_0x2f87('0x2e')]=_[_0x2f87('0x31')](db[_0x2f87('0x2b')][_0x2f87('0x42')]);_0x3d4ba5[_0x2f87('0x30')]=_[_0x2f87('0x31')](_0x1e5038['query']);_0x3d4ba5[_0x2f87('0x32')]=_['intersection'](_0x3d4ba5['model'],_0x3d4ba5[_0x2f87('0x30')]);_0x2cca6d[_0x2f87('0x34')]=_['intersection'](_0x3d4ba5[_0x2f87('0x2e')],qs[_0x2f87('0x35')](_0x1e5038[_0x2f87('0x30')][_0x2f87('0x35')]));_0x2cca6d[_0x2f87('0x34')]=_0x2cca6d[_0x2f87('0x34')][_0x2f87('0x43')]?_0x2cca6d['attributes']:_0x3d4ba5[_0x2f87('0x2e')];if(_0x1e5038[_0x2f87('0x30')][_0x2f87('0x44')]){_0x2cca6d[_0x2f87('0x45')]=[{'all':!![]}];}_0x2cca6d=_[_0x2f87('0x3c')]({},_0x2cca6d,_0x1e5038['options']);return db[_0x2f87('0x2b')]['find'](_0x2cca6d)['then'](handleEntityNotFound(_0x37b2ec,null))[_0x2f87('0x24')](respondWithResult(_0x37b2ec,null))['catch'](handleError(_0x37b2ec,null));};exports['create']=function(_0x1bc8c3,_0xf03002){return db[_0x2f87('0x2b')][_0x2f87('0x46')](_0x1bc8c3[_0x2f87('0x47')],{})['then'](respondWithResult(_0xf03002,0xc9))[_0x2f87('0x48')](handleError(_0xf03002,null));};exports['update']=function(_0x2a8edb,_0x25f90f){if(_0x2a8edb[_0x2f87('0x47')]['id']){delete _0x2a8edb[_0x2f87('0x47')]['id'];}return db['VtigerAccount'][_0x2f87('0x49')]({'where':{'id':_0x2a8edb[_0x2f87('0x41')]['id']}})[_0x2f87('0x24')](handleEntityNotFound(_0x25f90f,null))[_0x2f87('0x24')](saveUpdates(_0x2a8edb[_0x2f87('0x47')],null))[_0x2f87('0x24')](respondWithResult(_0x25f90f,null))[_0x2f87('0x48')](handleError(_0x25f90f,null));};exports[_0x2f87('0x4a')]=function(_0x21a186,_0x76d262){return db[_0x2f87('0x2b')][_0x2f87('0x49')]({'where':{'id':_0x21a186[_0x2f87('0x41')]['id']}})['then'](handleEntityNotFound(_0x76d262,null))[_0x2f87('0x24')](removeEntity(_0x76d262,null))[_0x2f87('0x48')](handleError(_0x76d262,null));};exports[_0x2f87('0x4b')]=function(_0x24373d,_0x286aa7,_0x54f733){var _0x4ff656={};var _0x578165={};var _0x1e4529;var _0x18ef3d;return db[_0x2f87('0x2b')]['findOne']({'where':{'id':_0x24373d['params']['id']}})[_0x2f87('0x24')](handleEntityNotFound(_0x286aa7,null))[_0x2f87('0x24')](function(_0x187e8b){if(_0x187e8b){_0x1e4529=_0x187e8b;_0x578165[_0x2f87('0x2e')]=_['keys'](db[_0x2f87('0x4c')][_0x2f87('0x42')]);_0x578165['query']=_['keys'](_0x24373d[_0x2f87('0x30')]);_0x578165[_0x2f87('0x32')]=_[_0x2f87('0x33')](_0x578165[_0x2f87('0x2e')],_0x578165[_0x2f87('0x30')]);_0x4ff656[_0x2f87('0x34')]=_[_0x2f87('0x33')](_0x578165[_0x2f87('0x2e')],qs[_0x2f87('0x35')](_0x24373d['query'][_0x2f87('0x35')]));_0x4ff656['attributes']=_0x4ff656[_0x2f87('0x34')][_0x2f87('0x43')]?_0x4ff656[_0x2f87('0x34')]:_0x578165['model'];_0x4ff656[_0x2f87('0x38')]=qs[_0x2f87('0x4d')](_0x24373d['query'][_0x2f87('0x4d')]);_0x4ff656[_0x2f87('0x39')]=qs['filters'](_[_0x2f87('0x3a')](_0x24373d[_0x2f87('0x30')],_0x578165[_0x2f87('0x32')]));if(_0x24373d['query'][_0x2f87('0x3b')]){_0x4ff656[_0x2f87('0x39')]=_[_0x2f87('0x3c')](_0x4ff656['where'],{'$or':_[_0x2f87('0x2f')](_0x4ff656['attributes'],function(_0x2b5533){var _0x2f64a4={};_0x2f64a4[_0x2b5533]={'$like':'%'+_0x24373d['query'][_0x2f87('0x3b')]+'%'};return _0x2f64a4;})});}_0x4ff656=_['merge']({},_0x4ff656,_0x24373d['options']);return _0x1e4529['getConfigurations'](_0x4ff656);}})[_0x2f87('0x24')](function(_0x4284cc){if(_0x4284cc){_0x18ef3d=_0x4284cc[_0x2f87('0x43')];if(!_0x24373d[_0x2f87('0x30')]['hasOwnProperty'](_0x2f87('0x37'))){_0x4ff656[_0x2f87('0x1b')]=qs[_0x2f87('0x1b')](_0x24373d['query'][_0x2f87('0x1b')]);_0x4ff656[_0x2f87('0x1d')]=qs['offset'](_0x24373d[_0x2f87('0x30')][_0x2f87('0x1d')]);}return _0x1e4529[_0x2f87('0x4b')](_0x4ff656);}})[_0x2f87('0x24')](function(_0x26f8ce){if(_0x26f8ce){return _0x26f8ce?{'count':_0x18ef3d,'rows':_0x26f8ce}:null;}})['then'](respondWithResult(_0x286aa7,null))[_0x2f87('0x48')](handleError(_0x286aa7,null));};exports[_0x2f87('0x4e')]=function(_0x41468f,_0x426387,_0x2aec07){if(_0x41468f[_0x2f87('0x47')]['id']){delete _0x41468f['body']['id'];}return db[_0x2f87('0x2b')][_0x2f87('0x4f')]({'where':{'id':_0x41468f[_0x2f87('0x41')]['id']}})[_0x2f87('0x24')](handleEntityNotFound(_0x426387,null))['then'](function(_0x126b96){if(_0x126b96){_0x41468f[_0x2f87('0x47')]['AccountId']=_0x126b96['id'];_0x41468f[_0x2f87('0x47')][_0x2f87('0x50')]=integrations[_0x2f87('0x51')](_0x41468f['body'][_0x2f87('0x52')],_0x41468f[_0x2f87('0x47')][_0x2f87('0x2d')]);_0x41468f[_0x2f87('0x47')]['Descriptions']=integrations[_0x2f87('0x53')](_0x41468f[_0x2f87('0x47')][_0x2f87('0x52')],_0x41468f[_0x2f87('0x47')][_0x2f87('0x2d')]);return db[_0x2f87('0x4c')][_0x2f87('0x46')](_0x41468f['body'],{'include':[{'model':db['VtigerField'],'as':_0x2f87('0x50')},{'model':db[_0x2f87('0x54')],'as':_0x2f87('0x55')}]});}return null;})['then'](respondWithResult(_0x426387,null))[_0x2f87('0x48')](handleError(_0x426387,null));};var md5=require(_0x2f87('0x56'));exports[_0x2f87('0x57')]=function(_0x4a3d8a,_0x4cc1a1,_0x2577cb){var _0x3c5314=null;var _0x21fcdb=null;var _0x17e700=null;var _0x2bb5d9=null;var _0x495d89='';return db[_0x2f87('0x2b')]['findOne']({'where':{'id':_0x4a3d8a[_0x2f87('0x41')]['id']},'attributes':['id',_0x2f87('0x28'),_0x2f87('0x58'),_0x2f87('0x59'),_0x2f87('0x5a'),_0x2f87('0x5b'),_0x2f87('0x5c'),'accessKey']})['then'](handleEntityNotFound(_0x4cc1a1,null))['then'](function(_0x5e75b2){if(_0x5e75b2){_0x3c5314=_0x5e75b2[_0x2f87('0x58')];_0x21fcdb=_0x5e75b2['accessKey'];_0x17e700=_0x5e75b2['moduleName'];_0x495d89=_0x5e75b2[_0x2f87('0x5b')];var _0x39929f=_0x495d89[_0x2f87('0x5d')](-0x1);if(_0x39929f==='/'){_0x495d89=_0x495d89[_0x2f87('0x5e')](0x0,_0x495d89['lastIndexOf'](_0x39929f));}_0x2bb5d9=util[_0x2f87('0x5f')]('%s/webservice.php',_0x495d89);var _0x4e28b9={'method':_0x2f87('0x60'),'uri':_0x2bb5d9,'qs':{'operation':_0x2f87('0x61'),'username':_0x5e75b2['username']},'json':!![]};return rp(_0x4e28b9);}})[_0x2f87('0x24')](function(_0x487938){if(_0x487938[_0x2f87('0x62')]){var _0x4cc526={'method':'POST','uri':_0x2bb5d9,'form':{'operation':'login','username':_0x3c5314,'accessKey':md5(_0x487938[_0x2f87('0x63')][_0x2f87('0x64')]+_0x21fcdb)},'json':!![]};return rp(_0x4cc526);}})[_0x2f87('0x24')](function(_0x173d3d){if(_0x173d3d[_0x2f87('0x62')]){var _0x4ec5c4={'method':_0x2f87('0x60'),'uri':_0x2bb5d9,'qs':{'operation':'describe','username':_0x3c5314,'sessionName':_0x173d3d[_0x2f87('0x63')][_0x2f87('0x65')],'elementType':_0x17e700},'json':!![]};return rp(_0x4ec5c4);}})['then'](function(_0x1bcc99){if(_0x1bcc99[_0x2f87('0x62')]){var _0x53d610=[_0x2f87('0x66'),_0x2f87('0x67'),'owner'];_[_0x2f87('0x68')](_0x1bcc99[_0x2f87('0x63')][_0x2f87('0x35')],function(_0x1b003f){return _0x53d610[_0x2f87('0x69')](_0x1b003f[_0x2f87('0x2d')][_0x2f87('0x28')]);});_[_0x2f87('0x68')](_0x1bcc99[_0x2f87('0x63')]['fields'],function(_0x2e9d9c){return _0x2e9d9c[_0x2f87('0x6a')]==='false';});return{'count':_0x1bcc99['result']['fields'][_0x2f87('0x43')],'rows':_[_0x2f87('0x2f')](_0x1bcc99[_0x2f87('0x63')][_0x2f87('0x35')],function(_0x440dfd){return{'id':_0x440dfd[_0x2f87('0x28')],'name':_0x440dfd['label'],'custom':_[_0x2f87('0x6b')](_0x440dfd[_0x2f87('0x28')],_0x2f87('0x6c'))?!![]:![],'options':_0x440dfd[_0x2f87('0x2d')][_0x2f87('0x28')]===_0x2f87('0x6d')&&_0x440dfd[_0x2f87('0x2d')]['picklistValues'][_0x2f87('0x43')]>0x0?_[_0x2f87('0x2f')](_0x440dfd[_0x2f87('0x2d')]['picklistValues'],function(_0xbc03a7){return{'name':_0xbc03a7[_0x2f87('0x6e')],'value':_0xbc03a7['value']};}):[]};})};}})[_0x2f87('0x24')](respondWithResult(_0x4cc1a1,null))[_0x2f87('0x48')](function(_0x5e7e12){console[_0x2f87('0x6f')](_0x2f87('0x70')+_0x5e7e12);var _0x2cad25=_0x4a3d8a[_0x2f87('0x30')][_0x2f87('0x71')]?0x1f4:_0x5e7e12[_0x2f87('0x72')]||0x1f4;logger[_0x2f87('0x26')](_0x2f87('0x73'),_0x2f87('0x57'),_0x2cad25,JSON[_0x2f87('0x74')](_0x5e7e12));delete _0x5e7e12[_0x2f87('0x28')];if(_0x2cad25===0x191){_0x2cad25=0x190;}_0x4cc1a1[_0x2f87('0x18')](_0x2cad25)[_0x2f87('0x29')](_0x4a3d8a[_0x2f87('0x30')][_0x2f87('0x71')]?{'message':_0x2f87('0x75'),'statusCode':_0x5e7e12['statusCode']}:_0x5e7e12);});};
\ No newline at end of file
index 69d9ec6..4dbb3e3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xfbf2=['moment','bluebird','path','rimraf','../../config/environment','./intVtigerAccount.attributes','../../components/integrations/configuration','exports','define','VtigerAccount','lodash','util','../../config/logger','api'];(function(_0xea61e5,_0x1c86fd){var _0x28436c=function(_0x21aadb){while(--_0x21aadb){_0xea61e5['push'](_0xea61e5['shift']());}};_0x28436c(++_0x1c86fd);}(_0xfbf2,0xc0));var _0x2fbf=function(_0x14674d,_0x88c7ff){_0x14674d=_0x14674d-0x0;var _0x556c64=_0xfbf2[_0x14674d];return _0x556c64;};'use strict';var _=require(_0x2fbf('0x0'));var util=require(_0x2fbf('0x1'));var logger=require(_0x2fbf('0x2'))(_0x2fbf('0x3'));var moment=require(_0x2fbf('0x4'));var BPromise=require(_0x2fbf('0x5'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x2fbf('0x6'));var rimraf=require(_0x2fbf('0x7'));var config=require(_0x2fbf('0x8'));var attributes=require(_0x2fbf('0x9'));var integrations=require(_0x2fbf('0xa'));module[_0x2fbf('0xb')]=function(_0xa68ec9,_0x5a0a8a){return _0xa68ec9[_0x2fbf('0xc')](_0x2fbf('0xd'),attributes,{'tableName':'int_vtiger_accounts','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x9afe=['moment','bluebird','request-promise','../../config/environment','./intVtigerAccount.attributes','../../components/integrations/configuration','exports','define','VtigerAccount','int_vtiger_accounts','lodash','util','../../config/logger'];(function(_0x182593,_0x48b37f){var _0x50c9a8=function(_0x556af9){while(--_0x556af9){_0x182593['push'](_0x182593['shift']());}};_0x50c9a8(++_0x48b37f);}(_0x9afe,0x14f));var _0xe9af=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x9afe[_0x3dd15e];return _0x231fd0;};'use strict';var _=require(_0xe9af('0x0'));var util=require(_0xe9af('0x1'));var logger=require(_0xe9af('0x2'))('api');var moment=require(_0xe9af('0x3'));var BPromise=require(_0xe9af('0x4'));var rp=require(_0xe9af('0x5'));var fs=require('fs');var path=require('path');var rimraf=require('rimraf');var config=require(_0xe9af('0x6'));var attributes=require(_0xe9af('0x7'));var integrations=require(_0xe9af('0x8'));module[_0xe9af('0x9')]=function(_0xe6fd34,_0x44b70a){return _0xe6fd34[_0xe9af('0xa')](_0xe9af('0xb'),attributes,{'tableName':_0xe9af('0xc'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 2c1f3b2..a1bb7e7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa74f=['ioredis','../../mysqldb','../../config/utils','../../config/logger','../../config/environment','http','then','info','VtigerAccount,\x20%s,\x20%s','debug','VtigerAccount,\x20%s,\x20%s,\x20%s','stringify','error','code','message','request\x20sent','result','catch','GetVtigerAccount','VtigerAccount','options','raw','where','limit','attributes','include','map','model','ShowVtigerAccount','find','moment'];(function(_0xe17cea,_0x3eac1e){var _0x48bb15=function(_0x3bef11){while(--_0x3bef11){_0xe17cea['push'](_0xe17cea['shift']());}};_0x48bb15(++_0x3eac1e);}(_0xa74f,0x9a));var _0xfa74=function(_0x5db657,_0x2f40b3){_0x5db657=_0x5db657-0x0;var _0x2d6e70=_0xa74f[_0x5db657];return _0x2d6e70;};'use strict';var _=require('lodash');var util=require('util');var moment=require(_0xfa74('0x0'));var BPromise=require('bluebird');var rs=require('randomstring');var fs=require('fs');var Redis=require(_0xfa74('0x1'));var db=require(_0xfa74('0x2'))['db'];var utils=require(_0xfa74('0x3'));var logger=require(_0xfa74('0x4'))('rpc');var config=require(_0xfa74('0x5'));var jayson=require('jayson/promise');var client=jayson['client'][_0xfa74('0x6')]({'port':0x232a});function respondWithRpcPromise(_0x9ddbd2,_0x3ac32e,_0x2d9fa9){return new BPromise(function(_0x287921,_0x344e04){return client['request'](_0x9ddbd2,_0x2d9fa9)[_0xfa74('0x7')](function(_0x37d4d8){logger[_0xfa74('0x8')](_0xfa74('0x9'),_0x3ac32e,'request\x20sent');logger[_0xfa74('0xa')](_0xfa74('0xb'),_0x3ac32e,'request\x20sent',JSON[_0xfa74('0xc')](_0x37d4d8));if(_0x37d4d8[_0xfa74('0xd')]){if(_0x37d4d8[_0xfa74('0xd')][_0xfa74('0xe')]===0x1f4){logger['error'](_0xfa74('0x9'),_0x3ac32e,_0x37d4d8[_0xfa74('0xd')][_0xfa74('0xf')]);return _0x344e04(_0x37d4d8[_0xfa74('0xd')]['message']);}logger[_0xfa74('0xd')](_0xfa74('0x9'),_0x3ac32e,_0x37d4d8[_0xfa74('0xd')][_0xfa74('0xf')]);return _0x287921(_0x37d4d8[_0xfa74('0xd')]['message']);}else{logger[_0xfa74('0x8')](_0xfa74('0x9'),_0x3ac32e,_0xfa74('0x10'));_0x287921(_0x37d4d8[_0xfa74('0x11')][_0xfa74('0xf')]);}})[_0xfa74('0x12')](function(_0x3b9e32){logger['error'](_0xfa74('0x9'),_0x3ac32e,_0x3b9e32);_0x344e04(_0x3b9e32);});});}exports[_0xfa74('0x13')]=function(_0x51dda1){var _0x4928b6=this;return new Promise(function(_0x31d3c1,_0x25a36b){return db[_0xfa74('0x14')]['findAll']({'raw':_0x51dda1[_0xfa74('0x15')]?_0x51dda1[_0xfa74('0x15')][_0xfa74('0x16')]===undefined?!![]:![]:!![],'where':_0x51dda1['options']?_0x51dda1[_0xfa74('0x15')][_0xfa74('0x17')]||null:null,'attributes':_0x51dda1[_0xfa74('0x15')]?_0x51dda1['options']['attributes']||null:null,'limit':_0x51dda1[_0xfa74('0x15')]?_0x51dda1[_0xfa74('0x15')][_0xfa74('0x18')]||null:null,'include':_0x51dda1[_0xfa74('0x15')]?_0x51dda1[_0xfa74('0x15')]['include']?_['map'](_0x51dda1[_0xfa74('0x15')]['include'],function(_0x48cbd3){return{'model':db[_0x48cbd3['model']],'as':_0x48cbd3['as'],'attributes':_0x48cbd3[_0xfa74('0x19')],'include':_0x48cbd3[_0xfa74('0x1a')]?_[_0xfa74('0x1b')](_0x48cbd3['include'],function(_0x530f99){return{'model':db[_0x530f99[_0xfa74('0x1c')]],'as':_0x530f99['as'],'attributes':_0x530f99[_0xfa74('0x19')],'include':_0x530f99['include']?_[_0xfa74('0x1b')](_0x530f99['include'],function(_0x1a8cf7){return{'model':db[_0x1a8cf7[_0xfa74('0x1c')]],'as':_0x1a8cf7['as'],'attributes':_0x1a8cf7['attributes']};}):[]};}):[]};}):[]:[]})[_0xfa74('0x7')](function(_0x1130de){logger[_0xfa74('0x8')](_0xfa74('0x13'),_0x51dda1);logger['debug'](_0xfa74('0x13'),_0x51dda1,JSON[_0xfa74('0xc')](_0x1130de));_0x31d3c1(_0x1130de);})[_0xfa74('0x12')](function(_0x57d90e){logger['error'](_0xfa74('0x13'),_0x57d90e[_0xfa74('0xf')],_0x51dda1);_0x25a36b(_0x4928b6['error'](0x1f4,_0x57d90e['message']));});});};exports[_0xfa74('0x1d')]=function(_0x564060){var _0x2238d4=this;return new Promise(function(_0x4d6d0a,_0x363173){return db[_0xfa74('0x14')][_0xfa74('0x1e')]({'raw':_0x564060[_0xfa74('0x15')]?_0x564060['options'][_0xfa74('0x16')]===undefined?!![]:![]:!![],'where':_0x564060[_0xfa74('0x15')]?_0x564060[_0xfa74('0x15')][_0xfa74('0x17')]||null:null,'attributes':_0x564060[_0xfa74('0x15')]?_0x564060[_0xfa74('0x15')][_0xfa74('0x19')]||null:null,'include':_0x564060['options']?_0x564060[_0xfa74('0x15')]['include']?_[_0xfa74('0x1b')](_0x564060[_0xfa74('0x15')][_0xfa74('0x1a')],function(_0x1b5ff0){return{'model':db[_0x1b5ff0['model']],'as':_0x1b5ff0['as'],'attributes':_0x1b5ff0['attributes'],'include':_0x1b5ff0[_0xfa74('0x1a')]?_[_0xfa74('0x1b')](_0x1b5ff0[_0xfa74('0x1a')],function(_0x25863f){return{'model':db[_0x25863f['model']],'as':_0x25863f['as'],'attributes':_0x25863f[_0xfa74('0x19')],'include':_0x25863f[_0xfa74('0x1a')]?_['map'](_0x25863f['include'],function(_0x557510){return{'model':db[_0x557510['model']],'as':_0x557510['as'],'attributes':_0x557510['attributes']};}):[]};}):[]};}):[]:[]})[_0xfa74('0x7')](function(_0x1c3b44){logger[_0xfa74('0x8')](_0xfa74('0x1d'),_0x564060);logger[_0xfa74('0xa')](_0xfa74('0x1d'),_0x564060,JSON[_0xfa74('0xc')](_0x1c3b44));_0x4d6d0a(_0x1c3b44);})[_0xfa74('0x12')](function(_0x1a2d52){logger['error'](_0xfa74('0x1d'),_0x1a2d52[_0xfa74('0xf')],_0x564060);_0x363173(_0x2238d4[_0xfa74('0xd')](0x1f4,_0x1a2d52[_0xfa74('0xf')]));});});};
\ No newline at end of file
+var _0xb10b=['../../config/environment','jayson/promise','http','request','then','info','VtigerAccount,\x20%s,\x20%s','VtigerAccount,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','message','result','GetVtigerAccount','VtigerAccount','findAll','options','raw','where','attributes','include','map','model','debug','catch','ShowVtigerAccount','lodash','moment','bluebird','randomstring','../../mysqldb','../../config/utils','../../config/logger','rpc'];(function(_0x1b15d4,_0xdb8718){var _0x418e68=function(_0x277aa9){while(--_0x277aa9){_0x1b15d4['push'](_0x1b15d4['shift']());}};_0x418e68(++_0xdb8718);}(_0xb10b,0x12a));var _0xbb10=function(_0x3d7f0e,_0x104d69){_0x3d7f0e=_0x3d7f0e-0x0;var _0x3e45dd=_0xb10b[_0x3d7f0e];return _0x3e45dd;};'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')]({'raw':_0x378da8['options']?_0x378da8[_0xbb10('0x18')][_0xbb10('0x19')]===undefined?!![]:![]:!![],'where':_0x378da8[_0xbb10('0x18')]?_0x378da8[_0xbb10('0x18')][_0xbb10('0x1a')]||null:null,'attributes':_0x378da8[_0xbb10('0x18')]?_0x378da8['options'][_0xbb10('0x1b')]||null:null,'limit':_0x378da8[_0xbb10('0x18')]?_0x378da8['options']['limit']||null:null,'include':_0x378da8[_0xbb10('0x18')]?_0x378da8[_0xbb10('0x18')][_0xbb10('0x1c')]?_[_0xbb10('0x1d')](_0x378da8[_0xbb10('0x18')][_0xbb10('0x1c')],function(_0x407cb4){return{'model':db[_0x407cb4[_0xbb10('0x1e')]],'as':_0x407cb4['as'],'attributes':_0x407cb4[_0xbb10('0x1b')],'include':_0x407cb4[_0xbb10('0x1c')]?_[_0xbb10('0x1d')](_0x407cb4[_0xbb10('0x1c')],function(_0x537898){return{'model':db[_0x537898['model']],'as':_0x537898['as'],'attributes':_0x537898['attributes'],'include':_0x537898[_0xbb10('0x1c')]?_[_0xbb10('0x1d')](_0x537898[_0xbb10('0x1c')],function(_0x4e25ff){return{'model':db[_0x4e25ff[_0xbb10('0x1e')]],'as':_0x4e25ff['as'],'attributes':_0x4e25ff[_0xbb10('0x1b')]};}):[]};}):[]};}):[]:[]})[_0xbb10('0xc')](function(_0x1d5e95){logger[_0xbb10('0xd')](_0xbb10('0x15'),_0x378da8);logger[_0xbb10('0x1f')]('GetVtigerAccount',_0x378da8,JSON[_0xbb10('0x11')](_0x1d5e95));_0x575cca(_0x1d5e95);})[_0xbb10('0x20')](function(_0xfc3595){logger[_0xbb10('0x12')](_0xbb10('0x15'),_0xfc3595[_0xbb10('0x13')],_0x378da8);_0x30efc6(_0x1682a4['error'](0x1f4,_0xfc3595[_0xbb10('0x13')]));});});};exports['ShowVtigerAccount']=function(_0x448d5c){var _0x56f2da=this;return new Promise(function(_0x16ad2a,_0x1dcc9c){return db[_0xbb10('0x16')]['find']({'raw':_0x448d5c['options']?_0x448d5c[_0xbb10('0x18')][_0xbb10('0x19')]===undefined?!![]:![]:!![],'where':_0x448d5c['options']?_0x448d5c[_0xbb10('0x18')][_0xbb10('0x1a')]||null:null,'attributes':_0x448d5c[_0xbb10('0x18')]?_0x448d5c[_0xbb10('0x18')][_0xbb10('0x1b')]||null:null,'include':_0x448d5c[_0xbb10('0x18')]?_0x448d5c[_0xbb10('0x18')]['include']?_[_0xbb10('0x1d')](_0x448d5c[_0xbb10('0x18')][_0xbb10('0x1c')],function(_0x8c1ce6){return{'model':db[_0x8c1ce6[_0xbb10('0x1e')]],'as':_0x8c1ce6['as'],'attributes':_0x8c1ce6[_0xbb10('0x1b')],'include':_0x8c1ce6[_0xbb10('0x1c')]?_[_0xbb10('0x1d')](_0x8c1ce6[_0xbb10('0x1c')],function(_0x56943c){return{'model':db[_0x56943c[_0xbb10('0x1e')]],'as':_0x56943c['as'],'attributes':_0x56943c[_0xbb10('0x1b')],'include':_0x56943c[_0xbb10('0x1c')]?_[_0xbb10('0x1d')](_0x56943c['include'],function(_0x111762){return{'model':db[_0x111762['model']],'as':_0x111762['as'],'attributes':_0x111762['attributes']};}):[]};}):[]};}):[]:[]})[_0xbb10('0xc')](function(_0x40c164){logger[_0xbb10('0xd')](_0xbb10('0x21'),_0x448d5c);logger[_0xbb10('0x1f')](_0xbb10('0x21'),_0x448d5c,JSON['stringify'](_0x40c164));_0x16ad2a(_0x40c164);})[_0xbb10('0x20')](function(_0x25d72f){logger['error']('ShowVtigerAccount',_0x25d72f['message'],_0x448d5c);_0x1dcc9c(_0x56f2da[_0xbb10('0x12')](0x1f4,_0x25d72f[_0xbb10('0x13')]));});});};
\ No newline at end of file
index 72ad702..cfac9b3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x26b2=['delete','multer','util','path','express','Router','../../components/auth/service','../../components/interaction/service','../../config/environment','./intVtigerConfiguration.controller','get','isAuthenticated','/:id','show','getFields','/:id/subjects','post','create','put','update'];(function(_0x4d3835,_0x4f5f50){var _0x823439=function(_0x25a5c6){while(--_0x25a5c6){_0x4d3835['push'](_0x4d3835['shift']());}};_0x823439(++_0x4f5f50);}(_0x26b2,0x79));var _0x226b=function(_0xc7cde6,_0x5afade){_0xc7cde6=_0xc7cde6-0x0;var _0x49f862=_0x26b2[_0xc7cde6];return _0x49f862;};'use strict';var multer=require(_0x226b('0x0'));var util=require(_0x226b('0x1'));var path=require(_0x226b('0x2'));var timeout=require('connect-timeout');var express=require(_0x226b('0x3'));var router=express[_0x226b('0x4')]();var fs_extra=require('fs-extra');var auth=require(_0x226b('0x5'));var interaction=require(_0x226b('0x6'));var config=require(_0x226b('0x7'));var controller=require(_0x226b('0x8'));router[_0x226b('0x9')]('/',auth[_0x226b('0xa')](),controller['index']);router[_0x226b('0x9')](_0x226b('0xb'),auth[_0x226b('0xa')](),controller[_0x226b('0xc')]);router['get']('/:id/fields',auth[_0x226b('0xa')](),controller[_0x226b('0xd')]);router[_0x226b('0x9')](_0x226b('0xe'),auth[_0x226b('0xa')](),controller['getSubjects']);router[_0x226b('0x9')]('/:id/descriptions',auth[_0x226b('0xa')](),controller['getDescriptions']);router[_0x226b('0xf')]('/',auth[_0x226b('0xa')](),controller[_0x226b('0x10')]);router[_0x226b('0x11')](_0x226b('0xb'),auth[_0x226b('0xa')](),controller[_0x226b('0x12')]);router[_0x226b('0x13')](_0x226b('0xb'),auth[_0x226b('0xa')](),controller['destroy']);module['exports']=router;
\ No newline at end of file
+var _0xce07=['get','/:id','show','getFields','getSubjects','/:id/descriptions','getDescriptions','create','put','update','delete','destroy','exports','multer','util','path','connect-timeout','fs-extra','../../config/environment','./intVtigerConfiguration.controller','isAuthenticated','index'];(function(_0x413713,_0x43ea67){var _0x16f6a5=function(_0xc28228){while(--_0xc28228){_0x413713['push'](_0x413713['shift']());}};_0x16f6a5(++_0x43ea67);}(_0xce07,0xa7));var _0x7ce0=function(_0x5d6456,_0x58ecc7){_0x5d6456=_0x5d6456-0x0;var _0x4d66c1=_0xce07[_0x5d6456];return _0x4d66c1;};'use strict';var multer=require(_0x7ce0('0x0'));var util=require(_0x7ce0('0x1'));var path=require(_0x7ce0('0x2'));var timeout=require(_0x7ce0('0x3'));var express=require('express');var router=express['Router']();var fs_extra=require(_0x7ce0('0x4'));var auth=require('../../components/auth/service');var interaction=require('../../components/interaction/service');var config=require(_0x7ce0('0x5'));var controller=require(_0x7ce0('0x6'));router['get']('/',auth[_0x7ce0('0x7')](),controller[_0x7ce0('0x8')]);router[_0x7ce0('0x9')](_0x7ce0('0xa'),auth[_0x7ce0('0x7')](),controller[_0x7ce0('0xb')]);router[_0x7ce0('0x9')]('/:id/fields',auth[_0x7ce0('0x7')](),controller[_0x7ce0('0xc')]);router[_0x7ce0('0x9')]('/:id/subjects',auth[_0x7ce0('0x7')](),controller[_0x7ce0('0xd')]);router[_0x7ce0('0x9')](_0x7ce0('0xe'),auth['isAuthenticated'](),controller[_0x7ce0('0xf')]);router['post']('/',auth[_0x7ce0('0x7')](),controller[_0x7ce0('0x10')]);router[_0x7ce0('0x11')](_0x7ce0('0xa'),auth['isAuthenticated'](),controller[_0x7ce0('0x12')]);router[_0x7ce0('0x13')](_0x7ce0('0xa'),auth[_0x7ce0('0x7')](),controller[_0x7ce0('0x14')]);module[_0x7ce0('0x15')]=router;
\ No newline at end of file
index 701a6e2..248e54e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa1f4=['exports','STRING','sequelize'];(function(_0x22ae67,_0x1d3acc){var _0x5c83b3=function(_0x105f14){while(--_0x105f14){_0x22ae67['push'](_0x22ae67['shift']());}};_0x5c83b3(++_0x1d3acc);}(_0xa1f4,0x13d));var _0x4a1f=function(_0x59e754,_0x5dc770){_0x59e754=_0x59e754-0x0;var _0x322cd0=_0xa1f4[_0x59e754];return _0x322cd0;};'use strict';var Sequelize=require(_0x4a1f('0x0'));module[_0x4a1f('0x1')]={'name':{'type':Sequelize['STRING']},'description':{'type':Sequelize[_0x4a1f('0x2')]}};
\ No newline at end of file
+var _0x08b5=['sequelize','exports'];(function(_0x334fe5,_0xf96f3b){var _0x510cb4=function(_0xe98e08){while(--_0xe98e08){_0x334fe5['push'](_0x334fe5['shift']());}};_0x510cb4(++_0xf96f3b);}(_0x08b5,0x124));var _0x508b=function(_0x2b7764,_0x2606f1){_0x2b7764=_0x2b7764-0x0;var _0x848dcb=_0x08b5[_0x2b7764];return _0x848dcb;};'use strict';var Sequelize=require(_0x508b('0x0'));module[_0x508b('0x1')]={'name':{'type':Sequelize['STRING']},'description':{'type':Sequelize['STRING']}};
\ No newline at end of file
index 51e8b03..38ebeaa 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x13d4=['map','query','filters','intersection','attributes','fields','length','hasOwnProperty','order','sort','where','filter','merge','includeAll','include','findAll','rows','catch','show','params','keys','rawAttributes','find','create','body','VtigerField','pick','getFields','nolimit','findOne','options','getSubjects','getDescriptions','rimraf','zip-dir','fast-json-patch','mustache','util','path','sox','to-csv','fs-extra','squel','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','sendStatus','status','json','offset','limit','undefined','count','set','Content-Range','apply','reject','save','update','then','destroy','end','stack','name','send','index','VtigerConfiguration','fieldName','type','model'];(function(_0x1ba4a0,_0x5d58a9){var _0x2c7e22=function(_0x57369c){while(--_0x57369c){_0x1ba4a0['push'](_0x1ba4a0['shift']());}};_0x2c7e22(++_0x5d58a9);}(_0x13d4,0x15d));var _0x413d=function(_0x422653,_0x5d9dd4){_0x422653=_0x422653-0x0;var _0xa008de=_0x13d4[_0x422653];return _0xa008de;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x413d('0x0'));var zipdir=require(_0x413d('0x1'));var jsonpatch=require(_0x413d('0x2'));var rp=require('request-promise');var moment=require('moment');var BPromise=require('bluebird');var Mustache=require(_0x413d('0x3'));var util=require(_0x413d('0x4'));var path=require(_0x413d('0x5'));var sox=require(_0x413d('0x6'));var csv=require(_0x413d('0x7'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x413d('0x8'));var _=require('lodash');var squel=require(_0x413d('0x9'));var crypto=require('crypto');var jsforce=require(_0x413d('0xa'));var deskjs=require(_0x413d('0xb'));var toCsv=require(_0x413d('0x7'));var querystring=require('querystring');var Papa=require('papaparse');var Redis=require(_0x413d('0xc'));var authService=require(_0x413d('0xd'));var qs=require(_0x413d('0xe'));var as=require(_0x413d('0xf'));var hardwareService=require(_0x413d('0x10'));var logger=require(_0x413d('0x11'))(_0x413d('0x12'));var utils=require(_0x413d('0x13'));var config=require('../../config/environment');var licenseUtil=require(_0x413d('0x14'));var db=require(_0x413d('0x15'))['db'];function respondWithStatusCode(_0x39b152,_0x101147){_0x101147=_0x101147||0xcc;return function(_0x167a9c){if(_0x167a9c){return _0x39b152[_0x413d('0x16')](_0x101147);}return _0x39b152[_0x413d('0x17')](_0x101147)['end']();};}function respondWithResult(_0x118ab3,_0x214354){_0x214354=_0x214354||0xc8;return function(_0x34969c){if(_0x34969c){return _0x118ab3[_0x413d('0x17')](_0x214354)[_0x413d('0x18')](_0x34969c);}};}function respondWithFilteredResult(_0x5ece2d,_0x20c51d){return function(_0x2fc198){if(_0x2fc198){var _0x25a1b1=typeof _0x20c51d[_0x413d('0x19')]==='undefined'&&typeof _0x20c51d[_0x413d('0x1a')]===_0x413d('0x1b');var _0x25015d=_0x2fc198[_0x413d('0x1c')];var _0x3d318b=_0x25a1b1?0x0:_0x20c51d[_0x413d('0x19')];var _0xeef9dd=_0x25a1b1?_0x2fc198[_0x413d('0x1c')]:_0x20c51d[_0x413d('0x19')]+_0x20c51d['limit'];var _0x1725a1;if(_0xeef9dd>=_0x25015d){_0xeef9dd=_0x25015d;_0x1725a1=0xc8;}else{_0x1725a1=0xce;}_0x5ece2d[_0x413d('0x17')](_0x1725a1);return _0x5ece2d[_0x413d('0x1d')](_0x413d('0x1e'),_0x3d318b+'-'+_0xeef9dd+'/'+_0x25015d)[_0x413d('0x18')](_0x2fc198);}return null;};}function patchUpdates(_0x4b2e89){return function(_0x10df4f){try{jsonpatch[_0x413d('0x1f')](_0x10df4f,_0x4b2e89,!![]);}catch(_0x4bd11d){return BPromise[_0x413d('0x20')](_0x4bd11d);}return _0x10df4f[_0x413d('0x21')]();};}function saveUpdates(_0x4b686c,_0x40dd9d){return function(_0x50b537){if(_0x50b537){return _0x50b537[_0x413d('0x22')](_0x4b686c)[_0x413d('0x23')](function(_0x1b9366){return _0x1b9366;});}return null;};}function removeEntity(_0x3560d5,_0x5504f7){return function(_0x263a47){if(_0x263a47){return _0x263a47[_0x413d('0x24')]()[_0x413d('0x23')](function(){_0x3560d5[_0x413d('0x17')](0xcc)[_0x413d('0x25')]();});}};}function handleEntityNotFound(_0x1f1563,_0x476de0){return function(_0x3c55ee){if(!_0x3c55ee){_0x1f1563[_0x413d('0x16')](0x194);}return _0x3c55ee;};}function handleError(_0x3003cd,_0x42d10b){_0x42d10b=_0x42d10b||0x1f4;return function(_0x418256){logger['error'](_0x418256[_0x413d('0x26')]);if(_0x418256[_0x413d('0x27')]){delete _0x418256[_0x413d('0x27')];}_0x3003cd['status'](_0x42d10b)[_0x413d('0x28')](_0x418256);};}exports[_0x413d('0x29')]=function(_0x13bffb,_0x667a48){var _0x24d316={},_0x3b3e67={},_0x33e199={'count':0x0,'rows':[]};var _0x213451=_['map'](db[_0x413d('0x2a')]['rawAttributes'],function(_0x1bd4a6){return{'name':_0x1bd4a6[_0x413d('0x2b')],'type':_0x1bd4a6[_0x413d('0x2c')]['key']};});_0x3b3e67[_0x413d('0x2d')]=_[_0x413d('0x2e')](_0x213451,'name');_0x3b3e67[_0x413d('0x2f')]=_['keys'](_0x13bffb['query']);_0x3b3e67[_0x413d('0x30')]=_[_0x413d('0x31')](_0x3b3e67[_0x413d('0x2d')],_0x3b3e67['query']);_0x24d316[_0x413d('0x32')]=_['intersection'](_0x3b3e67[_0x413d('0x2d')],qs[_0x413d('0x33')](_0x13bffb[_0x413d('0x2f')]['fields']));_0x24d316['attributes']=_0x24d316[_0x413d('0x32')][_0x413d('0x34')]?_0x24d316[_0x413d('0x32')]:_0x3b3e67['model'];if(!_0x13bffb[_0x413d('0x2f')][_0x413d('0x35')]('nolimit')){_0x24d316[_0x413d('0x1a')]=qs[_0x413d('0x1a')](_0x13bffb[_0x413d('0x2f')][_0x413d('0x1a')]);_0x24d316[_0x413d('0x19')]=qs[_0x413d('0x19')](_0x13bffb[_0x413d('0x2f')][_0x413d('0x19')]);}_0x24d316[_0x413d('0x36')]=qs[_0x413d('0x37')](_0x13bffb[_0x413d('0x2f')][_0x413d('0x37')]);_0x24d316[_0x413d('0x38')]=qs['filters'](_['pick'](_0x13bffb[_0x413d('0x2f')],_0x3b3e67[_0x413d('0x30')]),_0x213451);if(_0x13bffb['query'][_0x413d('0x39')]){_0x24d316[_0x413d('0x38')]=_['merge'](_0x24d316['where'],{'$or':_[_0x413d('0x2e')](_0x213451,function(_0x467eb5){if(_0x467eb5[_0x413d('0x2c')]!=='VIRTUAL'){var _0x6f1881={};_0x6f1881[_0x467eb5[_0x413d('0x27')]]={'$like':'%'+_0x13bffb['query'][_0x413d('0x39')]+'%'};return _0x6f1881;}})});}_0x24d316=_[_0x413d('0x3a')]({},_0x24d316,_0x13bffb['options']);var _0x6fd5f0={'where':_0x24d316[_0x413d('0x38')]};return db[_0x413d('0x2a')]['count'](_0x6fd5f0)[_0x413d('0x23')](function(_0x56b329){_0x33e199[_0x413d('0x1c')]=_0x56b329;if(_0x13bffb['query'][_0x413d('0x3b')]){_0x24d316[_0x413d('0x3c')]=[{'all':!![]}];}return db[_0x413d('0x2a')][_0x413d('0x3d')](_0x24d316);})['then'](function(_0x27e3b7){_0x33e199[_0x413d('0x3e')]=_0x27e3b7;return _0x33e199;})[_0x413d('0x23')](respondWithFilteredResult(_0x667a48,_0x24d316))[_0x413d('0x3f')](handleError(_0x667a48,null));};exports[_0x413d('0x40')]=function(_0x404121,_0xfdc2aa){var _0x509d89={'raw':![],'where':{'id':_0x404121[_0x413d('0x41')]['id']}},_0x399bb6={};_0x399bb6[_0x413d('0x2d')]=_[_0x413d('0x42')](db[_0x413d('0x2a')][_0x413d('0x43')]);_0x399bb6[_0x413d('0x2f')]=_['keys'](_0x404121['query']);_0x399bb6[_0x413d('0x30')]=_[_0x413d('0x31')](_0x399bb6[_0x413d('0x2d')],_0x399bb6[_0x413d('0x2f')]);_0x509d89[_0x413d('0x32')]=_[_0x413d('0x31')](_0x399bb6[_0x413d('0x2d')],qs['fields'](_0x404121[_0x413d('0x2f')][_0x413d('0x33')]));_0x509d89['attributes']=_0x509d89[_0x413d('0x32')][_0x413d('0x34')]?_0x509d89[_0x413d('0x32')]:_0x399bb6[_0x413d('0x2d')];if(_0x404121[_0x413d('0x2f')][_0x413d('0x3b')]){_0x509d89[_0x413d('0x3c')]=[{'all':!![]}];}_0x509d89=_[_0x413d('0x3a')]({},_0x509d89,_0x404121['options']);return db[_0x413d('0x2a')][_0x413d('0x44')](_0x509d89)[_0x413d('0x23')](handleEntityNotFound(_0xfdc2aa,null))[_0x413d('0x23')](respondWithResult(_0xfdc2aa,null))[_0x413d('0x3f')](handleError(_0xfdc2aa,null));};exports[_0x413d('0x45')]=function(_0x41e956,_0x462c6d){return db[_0x413d('0x2a')][_0x413d('0x45')](_0x41e956[_0x413d('0x46')],{})[_0x413d('0x23')](respondWithResult(_0x462c6d,0xc9))[_0x413d('0x3f')](handleError(_0x462c6d,null));};exports[_0x413d('0x22')]=function(_0x59436c,_0x226fd2){if(_0x59436c[_0x413d('0x46')]['id']){delete _0x59436c['body']['id'];}return db[_0x413d('0x2a')][_0x413d('0x44')]({'where':{'id':_0x59436c[_0x413d('0x41')]['id']}})['then'](handleEntityNotFound(_0x226fd2,null))[_0x413d('0x23')](saveUpdates(_0x59436c[_0x413d('0x46')],null))[_0x413d('0x23')](respondWithResult(_0x226fd2,null))[_0x413d('0x3f')](handleError(_0x226fd2,null));};exports[_0x413d('0x24')]=function(_0x13e778,_0x11eda8){return db['VtigerConfiguration'][_0x413d('0x44')]({'where':{'id':_0x13e778[_0x413d('0x41')]['id']}})['then'](handleEntityNotFound(_0x11eda8,null))[_0x413d('0x23')](removeEntity(_0x11eda8,null))[_0x413d('0x3f')](handleError(_0x11eda8,null));};exports['getFields']=function(_0x1604e9,_0x46380e,_0x455e8f){var _0x4be651={};var _0xd97ba0={};var _0x2fcad1;var _0x37d54d;return db['VtigerConfiguration']['findOne']({'where':{'id':_0x1604e9['params']['id']}})[_0x413d('0x23')](handleEntityNotFound(_0x46380e,null))[_0x413d('0x23')](function(_0x2080d3){if(_0x2080d3){_0x2fcad1=_0x2080d3;_0xd97ba0[_0x413d('0x2d')]=_[_0x413d('0x42')](db[_0x413d('0x47')][_0x413d('0x43')]);_0xd97ba0['query']=_[_0x413d('0x42')](_0x1604e9[_0x413d('0x2f')]);_0xd97ba0[_0x413d('0x30')]=_[_0x413d('0x31')](_0xd97ba0[_0x413d('0x2d')],_0xd97ba0[_0x413d('0x2f')]);_0x4be651[_0x413d('0x32')]=_[_0x413d('0x31')](_0xd97ba0['model'],qs[_0x413d('0x33')](_0x1604e9[_0x413d('0x2f')][_0x413d('0x33')]));_0x4be651['attributes']=_0x4be651[_0x413d('0x32')]['length']?_0x4be651[_0x413d('0x32')]:_0xd97ba0[_0x413d('0x2d')];_0x4be651[_0x413d('0x36')]=qs[_0x413d('0x37')](_0x1604e9[_0x413d('0x2f')][_0x413d('0x37')]);_0x4be651[_0x413d('0x38')]=qs[_0x413d('0x30')](_[_0x413d('0x48')](_0x1604e9[_0x413d('0x2f')],_0xd97ba0[_0x413d('0x30')]));if(_0x1604e9[_0x413d('0x2f')][_0x413d('0x39')]){_0x4be651[_0x413d('0x38')]=_[_0x413d('0x3a')](_0x4be651[_0x413d('0x38')],{'$or':_[_0x413d('0x2e')](_0x4be651[_0x413d('0x32')],function(_0x1a2a67){var _0x34d814={};_0x34d814[_0x1a2a67]={'$like':'%'+_0x1604e9[_0x413d('0x2f')][_0x413d('0x39')]+'%'};return _0x34d814;})});}_0x4be651=_['merge']({},_0x4be651,_0x1604e9['options']);return _0x2fcad1[_0x413d('0x49')](_0x4be651);}})['then'](function(_0x3b6226){if(_0x3b6226){_0x37d54d=_0x3b6226[_0x413d('0x34')];if(!_0x1604e9['query'][_0x413d('0x35')](_0x413d('0x4a'))){_0x4be651[_0x413d('0x1a')]=qs[_0x413d('0x1a')](_0x1604e9[_0x413d('0x2f')][_0x413d('0x1a')]);_0x4be651[_0x413d('0x19')]=qs['offset'](_0x1604e9[_0x413d('0x2f')][_0x413d('0x19')]);}return _0x2fcad1[_0x413d('0x49')](_0x4be651);}})[_0x413d('0x23')](function(_0x4fb018){if(_0x4fb018){return _0x4fb018?{'count':_0x37d54d,'rows':_0x4fb018}:null;}})[_0x413d('0x23')](respondWithResult(_0x46380e,null))[_0x413d('0x3f')](handleError(_0x46380e,null));};exports['getSubjects']=function(_0x36571e,_0x21424b,_0x302b5c){var _0x3748ae={};var _0xff2f33={};var _0x2b473f;var _0x3b6a1e;return db['VtigerConfiguration'][_0x413d('0x4b')]({'where':{'id':_0x36571e['params']['id']}})[_0x413d('0x23')](handleEntityNotFound(_0x21424b,null))[_0x413d('0x23')](function(_0x4f0663){if(_0x4f0663){_0x2b473f=_0x4f0663;_0xff2f33[_0x413d('0x2d')]=_[_0x413d('0x42')](db[_0x413d('0x47')][_0x413d('0x43')]);_0xff2f33[_0x413d('0x2f')]=_[_0x413d('0x42')](_0x36571e[_0x413d('0x2f')]);_0xff2f33[_0x413d('0x30')]=_[_0x413d('0x31')](_0xff2f33['model'],_0xff2f33['query']);_0x3748ae[_0x413d('0x32')]=_[_0x413d('0x31')](_0xff2f33['model'],qs[_0x413d('0x33')](_0x36571e['query'][_0x413d('0x33')]));_0x3748ae['attributes']=_0x3748ae[_0x413d('0x32')]['length']?_0x3748ae[_0x413d('0x32')]:_0xff2f33[_0x413d('0x2d')];_0x3748ae[_0x413d('0x36')]=qs[_0x413d('0x37')](_0x36571e['query'][_0x413d('0x37')]);_0x3748ae[_0x413d('0x38')]=qs['filters'](_[_0x413d('0x48')](_0x36571e['query'],_0xff2f33[_0x413d('0x30')]));if(_0x36571e[_0x413d('0x2f')][_0x413d('0x39')]){_0x3748ae[_0x413d('0x38')]=_['merge'](_0x3748ae[_0x413d('0x38')],{'$or':_['map'](_0x3748ae[_0x413d('0x32')],function(_0x73ad0){var _0x1c51aa={};_0x1c51aa[_0x73ad0]={'$like':'%'+_0x36571e[_0x413d('0x2f')][_0x413d('0x39')]+'%'};return _0x1c51aa;})});}_0x3748ae=_[_0x413d('0x3a')]({},_0x3748ae,_0x36571e[_0x413d('0x4c')]);return _0x2b473f[_0x413d('0x4d')](_0x3748ae);}})[_0x413d('0x23')](function(_0x36b1ec){if(_0x36b1ec){_0x3b6a1e=_0x36b1ec[_0x413d('0x34')];if(!_0x36571e[_0x413d('0x2f')][_0x413d('0x35')](_0x413d('0x4a'))){_0x3748ae['limit']=qs['limit'](_0x36571e[_0x413d('0x2f')][_0x413d('0x1a')]);_0x3748ae['offset']=qs[_0x413d('0x19')](_0x36571e[_0x413d('0x2f')][_0x413d('0x19')]);}return _0x2b473f[_0x413d('0x4d')](_0x3748ae);}})[_0x413d('0x23')](function(_0x54e0b8){if(_0x54e0b8){return _0x54e0b8?{'count':_0x3b6a1e,'rows':_0x54e0b8}:null;}})[_0x413d('0x23')](respondWithResult(_0x21424b,null))[_0x413d('0x3f')](handleError(_0x21424b,null));};exports['getDescriptions']=function(_0x40e9f0,_0x2b7157,_0x39d590){var _0x49b6cc={};var _0x3316f5={};var _0x2ab636;var _0x4f4c62;return db['VtigerConfiguration'][_0x413d('0x4b')]({'where':{'id':_0x40e9f0['params']['id']}})[_0x413d('0x23')](handleEntityNotFound(_0x2b7157,null))[_0x413d('0x23')](function(_0x5a135a){if(_0x5a135a){_0x2ab636=_0x5a135a;_0x3316f5['model']=_[_0x413d('0x42')](db[_0x413d('0x47')][_0x413d('0x43')]);_0x3316f5[_0x413d('0x2f')]=_[_0x413d('0x42')](_0x40e9f0[_0x413d('0x2f')]);_0x3316f5['filters']=_[_0x413d('0x31')](_0x3316f5[_0x413d('0x2d')],_0x3316f5[_0x413d('0x2f')]);_0x49b6cc['attributes']=_[_0x413d('0x31')](_0x3316f5[_0x413d('0x2d')],qs[_0x413d('0x33')](_0x40e9f0[_0x413d('0x2f')][_0x413d('0x33')]));_0x49b6cc['attributes']=_0x49b6cc[_0x413d('0x32')][_0x413d('0x34')]?_0x49b6cc[_0x413d('0x32')]:_0x3316f5['model'];_0x49b6cc['order']=qs[_0x413d('0x37')](_0x40e9f0['query'][_0x413d('0x37')]);_0x49b6cc[_0x413d('0x38')]=qs['filters'](_[_0x413d('0x48')](_0x40e9f0['query'],_0x3316f5[_0x413d('0x30')]));if(_0x40e9f0[_0x413d('0x2f')][_0x413d('0x39')]){_0x49b6cc[_0x413d('0x38')]=_['merge'](_0x49b6cc[_0x413d('0x38')],{'$or':_['map'](_0x49b6cc['attributes'],function(_0xa83bca){var _0xdd1e38={};_0xdd1e38[_0xa83bca]={'$like':'%'+_0x40e9f0['query'][_0x413d('0x39')]+'%'};return _0xdd1e38;})});}_0x49b6cc=_['merge']({},_0x49b6cc,_0x40e9f0[_0x413d('0x4c')]);return _0x2ab636[_0x413d('0x4e')](_0x49b6cc);}})[_0x413d('0x23')](function(_0x3406d3){if(_0x3406d3){_0x4f4c62=_0x3406d3[_0x413d('0x34')];if(!_0x40e9f0[_0x413d('0x2f')][_0x413d('0x35')](_0x413d('0x4a'))){_0x49b6cc[_0x413d('0x1a')]=qs[_0x413d('0x1a')](_0x40e9f0[_0x413d('0x2f')][_0x413d('0x1a')]);_0x49b6cc[_0x413d('0x19')]=qs[_0x413d('0x19')](_0x40e9f0[_0x413d('0x2f')][_0x413d('0x19')]);}return _0x2ab636[_0x413d('0x4e')](_0x49b6cc);}})[_0x413d('0x23')](function(_0xef6cef){if(_0xef6cef){return _0xef6cef?{'count':_0x4f4c62,'rows':_0xef6cef}:null;}})['then'](respondWithResult(_0x2b7157,null))[_0x413d('0x3f')](handleError(_0x2b7157,null));};
\ No newline at end of file
+var _0x5c7e=['papaparse','ioredis','../../config/license/hardware','../../config/logger','api','../../config/license/util','../../mysqldb','sendStatus','status','json','offset','undefined','limit','count','set','Content-Range','apply','reject','save','update','then','destroy','end','stack','name','index','VtigerConfiguration','fieldName','type','model','map','query','keys','intersection','attributes','fields','length','hasOwnProperty','order','sort','where','filters','filter','merge','options','includeAll','findAll','rows','catch','show','params','rawAttributes','include','find','body','VtigerField','pick','getFields','nolimit','getSubjects','findOne','getDescriptions','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','bluebird','path','sox','to-csv','ejs','fs-extra','lodash','jsforce','querystring'];(function(_0x44774d,_0x27fe98){var _0x282b23=function(_0x3b05d4){while(--_0x3b05d4){_0x44774d['push'](_0x44774d['shift']());}};_0x282b23(++_0x27fe98);}(_0x5c7e,0x16e));var _0xe5c7=function(_0x39e283,_0x247e6b){_0x39e283=_0x39e283-0x0;var _0x7de89f=_0x5c7e[_0x39e283];return _0x7de89f;};'use strict';var emlformat=require(_0xe5c7('0x0'));var rimraf=require(_0xe5c7('0x1'));var zipdir=require(_0xe5c7('0x2'));var jsonpatch=require(_0xe5c7('0x3'));var rp=require(_0xe5c7('0x4'));var moment=require('moment');var BPromise=require(_0xe5c7('0x5'));var Mustache=require('mustache');var util=require('util');var path=require(_0xe5c7('0x6'));var sox=require(_0xe5c7('0x7'));var csv=require(_0xe5c7('0x8'));var ejs=require(_0xe5c7('0x9'));var fs=require('fs');var fs_extra=require(_0xe5c7('0xa'));var _=require(_0xe5c7('0xb'));var squel=require('squel');var crypto=require('crypto');var jsforce=require(_0xe5c7('0xc'));var deskjs=require('desk.js');var toCsv=require(_0xe5c7('0x8'));var querystring=require(_0xe5c7('0xd'));var Papa=require(_0xe5c7('0xe'));var Redis=require(_0xe5c7('0xf'));var authService=require('../../components/auth/service');var qs=require('../../components/parsers/qs');var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0xe5c7('0x10'));var logger=require(_0xe5c7('0x11'))(_0xe5c7('0x12'));var utils=require('../../config/utils');var config=require('../../config/environment');var licenseUtil=require(_0xe5c7('0x13'));var db=require(_0xe5c7('0x14'))['db'];function respondWithStatusCode(_0x429cf9,_0x3d510e){_0x3d510e=_0x3d510e||0xcc;return function(_0x3cd062){if(_0x3cd062){return _0x429cf9[_0xe5c7('0x15')](_0x3d510e);}return _0x429cf9[_0xe5c7('0x16')](_0x3d510e)['end']();};}function respondWithResult(_0x5a4c2b,_0x19fdc0){_0x19fdc0=_0x19fdc0||0xc8;return function(_0x314e80){if(_0x314e80){return _0x5a4c2b['status'](_0x19fdc0)[_0xe5c7('0x17')](_0x314e80);}};}function respondWithFilteredResult(_0xdec4b5,_0x11f6ed){return function(_0x5dbd1b){if(_0x5dbd1b){var _0x5e2020=typeof _0x11f6ed[_0xe5c7('0x18')]===_0xe5c7('0x19')&&typeof _0x11f6ed[_0xe5c7('0x1a')]===_0xe5c7('0x19');var _0x2157df=_0x5dbd1b[_0xe5c7('0x1b')];var _0x22aee7=_0x5e2020?0x0:_0x11f6ed[_0xe5c7('0x18')];var _0x2a4b04=_0x5e2020?_0x5dbd1b[_0xe5c7('0x1b')]:_0x11f6ed[_0xe5c7('0x18')]+_0x11f6ed[_0xe5c7('0x1a')];var _0x4936bf;if(_0x2a4b04>=_0x2157df){_0x2a4b04=_0x2157df;_0x4936bf=0xc8;}else{_0x4936bf=0xce;}_0xdec4b5[_0xe5c7('0x16')](_0x4936bf);return _0xdec4b5[_0xe5c7('0x1c')](_0xe5c7('0x1d'),_0x22aee7+'-'+_0x2a4b04+'/'+_0x2157df)['json'](_0x5dbd1b);}return null;};}function patchUpdates(_0x23e8b2){return function(_0x32bc4b){try{jsonpatch[_0xe5c7('0x1e')](_0x32bc4b,_0x23e8b2,!![]);}catch(_0x34cde1){return BPromise[_0xe5c7('0x1f')](_0x34cde1);}return _0x32bc4b[_0xe5c7('0x20')]();};}function saveUpdates(_0x1890b0,_0x4cac76){return function(_0x3239b5){if(_0x3239b5){return _0x3239b5[_0xe5c7('0x21')](_0x1890b0)[_0xe5c7('0x22')](function(_0x59513b){return _0x59513b;});}return null;};}function removeEntity(_0x2078ad,_0x53c412){return function(_0x47aed2){if(_0x47aed2){return _0x47aed2[_0xe5c7('0x23')]()['then'](function(){_0x2078ad[_0xe5c7('0x16')](0xcc)[_0xe5c7('0x24')]();});}};}function handleEntityNotFound(_0x4b979b,_0xde06e3){return function(_0x327c88){if(!_0x327c88){_0x4b979b[_0xe5c7('0x15')](0x194);}return _0x327c88;};}function handleError(_0x77f77c,_0x4dac3c){_0x4dac3c=_0x4dac3c||0x1f4;return function(_0x268e02){logger['error'](_0x268e02[_0xe5c7('0x25')]);if(_0x268e02['name']){delete _0x268e02[_0xe5c7('0x26')];}_0x77f77c['status'](_0x4dac3c)['send'](_0x268e02);};}exports[_0xe5c7('0x27')]=function(_0x2ac0f3,_0x543667){var _0x33d010={},_0x6c9375={},_0x18fda8={'count':0x0,'rows':[]};var _0x5cadd6=_['map'](db[_0xe5c7('0x28')]['rawAttributes'],function(_0x32eef9){return{'name':_0x32eef9[_0xe5c7('0x29')],'type':_0x32eef9[_0xe5c7('0x2a')]['key']};});_0x6c9375[_0xe5c7('0x2b')]=_[_0xe5c7('0x2c')](_0x5cadd6,_0xe5c7('0x26'));_0x6c9375[_0xe5c7('0x2d')]=_[_0xe5c7('0x2e')](_0x2ac0f3['query']);_0x6c9375['filters']=_[_0xe5c7('0x2f')](_0x6c9375[_0xe5c7('0x2b')],_0x6c9375[_0xe5c7('0x2d')]);_0x33d010[_0xe5c7('0x30')]=_['intersection'](_0x6c9375['model'],qs[_0xe5c7('0x31')](_0x2ac0f3[_0xe5c7('0x2d')][_0xe5c7('0x31')]));_0x33d010[_0xe5c7('0x30')]=_0x33d010[_0xe5c7('0x30')][_0xe5c7('0x32')]?_0x33d010[_0xe5c7('0x30')]:_0x6c9375[_0xe5c7('0x2b')];if(!_0x2ac0f3['query'][_0xe5c7('0x33')]('nolimit')){_0x33d010[_0xe5c7('0x1a')]=qs[_0xe5c7('0x1a')](_0x2ac0f3['query'][_0xe5c7('0x1a')]);_0x33d010[_0xe5c7('0x18')]=qs[_0xe5c7('0x18')](_0x2ac0f3[_0xe5c7('0x2d')]['offset']);}_0x33d010[_0xe5c7('0x34')]=qs['sort'](_0x2ac0f3['query'][_0xe5c7('0x35')]);_0x33d010[_0xe5c7('0x36')]=qs[_0xe5c7('0x37')](_['pick'](_0x2ac0f3['query'],_0x6c9375[_0xe5c7('0x37')]),_0x5cadd6);if(_0x2ac0f3[_0xe5c7('0x2d')][_0xe5c7('0x38')]){_0x33d010[_0xe5c7('0x36')]=_['merge'](_0x33d010[_0xe5c7('0x36')],{'$or':_[_0xe5c7('0x2c')](_0x5cadd6,function(_0x5a939f){if(_0x5a939f[_0xe5c7('0x2a')]!=='VIRTUAL'){var _0x125a0c={};_0x125a0c[_0x5a939f[_0xe5c7('0x26')]]={'$like':'%'+_0x2ac0f3[_0xe5c7('0x2d')][_0xe5c7('0x38')]+'%'};return _0x125a0c;}})});}_0x33d010=_[_0xe5c7('0x39')]({},_0x33d010,_0x2ac0f3[_0xe5c7('0x3a')]);var _0x5a7f22={'where':_0x33d010[_0xe5c7('0x36')]};return db[_0xe5c7('0x28')][_0xe5c7('0x1b')](_0x5a7f22)[_0xe5c7('0x22')](function(_0x406dd1){_0x18fda8[_0xe5c7('0x1b')]=_0x406dd1;if(_0x2ac0f3[_0xe5c7('0x2d')][_0xe5c7('0x3b')]){_0x33d010['include']=[{'all':!![]}];}return db['VtigerConfiguration'][_0xe5c7('0x3c')](_0x33d010);})[_0xe5c7('0x22')](function(_0x4d32c2){_0x18fda8[_0xe5c7('0x3d')]=_0x4d32c2;return _0x18fda8;})[_0xe5c7('0x22')](respondWithFilteredResult(_0x543667,_0x33d010))[_0xe5c7('0x3e')](handleError(_0x543667,null));};exports[_0xe5c7('0x3f')]=function(_0x2059c1,_0x5ad79c){var _0x4c881c={'raw':![],'where':{'id':_0x2059c1[_0xe5c7('0x40')]['id']}},_0x1e2605={};_0x1e2605[_0xe5c7('0x2b')]=_[_0xe5c7('0x2e')](db[_0xe5c7('0x28')][_0xe5c7('0x41')]);_0x1e2605['query']=_['keys'](_0x2059c1['query']);_0x1e2605[_0xe5c7('0x37')]=_['intersection'](_0x1e2605[_0xe5c7('0x2b')],_0x1e2605[_0xe5c7('0x2d')]);_0x4c881c[_0xe5c7('0x30')]=_[_0xe5c7('0x2f')](_0x1e2605[_0xe5c7('0x2b')],qs[_0xe5c7('0x31')](_0x2059c1[_0xe5c7('0x2d')]['fields']));_0x4c881c['attributes']=_0x4c881c[_0xe5c7('0x30')]['length']?_0x4c881c[_0xe5c7('0x30')]:_0x1e2605[_0xe5c7('0x2b')];if(_0x2059c1[_0xe5c7('0x2d')][_0xe5c7('0x3b')]){_0x4c881c[_0xe5c7('0x42')]=[{'all':!![]}];}_0x4c881c=_[_0xe5c7('0x39')]({},_0x4c881c,_0x2059c1['options']);return db[_0xe5c7('0x28')][_0xe5c7('0x43')](_0x4c881c)['then'](handleEntityNotFound(_0x5ad79c,null))[_0xe5c7('0x22')](respondWithResult(_0x5ad79c,null))[_0xe5c7('0x3e')](handleError(_0x5ad79c,null));};exports['create']=function(_0x17940d,_0x79ca7e){return db['VtigerConfiguration']['create'](_0x17940d[_0xe5c7('0x44')],{})['then'](respondWithResult(_0x79ca7e,0xc9))[_0xe5c7('0x3e')](handleError(_0x79ca7e,null));};exports['update']=function(_0x4f40bb,_0x3adc3d){if(_0x4f40bb['body']['id']){delete _0x4f40bb['body']['id'];}return db['VtigerConfiguration']['find']({'where':{'id':_0x4f40bb[_0xe5c7('0x40')]['id']}})[_0xe5c7('0x22')](handleEntityNotFound(_0x3adc3d,null))[_0xe5c7('0x22')](saveUpdates(_0x4f40bb[_0xe5c7('0x44')],null))[_0xe5c7('0x22')](respondWithResult(_0x3adc3d,null))[_0xe5c7('0x3e')](handleError(_0x3adc3d,null));};exports[_0xe5c7('0x23')]=function(_0x3f148f,_0x557347){return db[_0xe5c7('0x28')][_0xe5c7('0x43')]({'where':{'id':_0x3f148f[_0xe5c7('0x40')]['id']}})[_0xe5c7('0x22')](handleEntityNotFound(_0x557347,null))[_0xe5c7('0x22')](removeEntity(_0x557347,null))[_0xe5c7('0x3e')](handleError(_0x557347,null));};exports['getFields']=function(_0x2e057c,_0x1a2a26,_0x7cccd){var _0x204b81={};var _0x59f6e8={};var _0x17b903;var _0x2cfd1d;return db[_0xe5c7('0x28')]['findOne']({'where':{'id':_0x2e057c[_0xe5c7('0x40')]['id']}})[_0xe5c7('0x22')](handleEntityNotFound(_0x1a2a26,null))[_0xe5c7('0x22')](function(_0x144cae){if(_0x144cae){_0x17b903=_0x144cae;_0x59f6e8[_0xe5c7('0x2b')]=_[_0xe5c7('0x2e')](db[_0xe5c7('0x45')][_0xe5c7('0x41')]);_0x59f6e8['query']=_[_0xe5c7('0x2e')](_0x2e057c['query']);_0x59f6e8[_0xe5c7('0x37')]=_[_0xe5c7('0x2f')](_0x59f6e8[_0xe5c7('0x2b')],_0x59f6e8[_0xe5c7('0x2d')]);_0x204b81[_0xe5c7('0x30')]=_[_0xe5c7('0x2f')](_0x59f6e8[_0xe5c7('0x2b')],qs[_0xe5c7('0x31')](_0x2e057c[_0xe5c7('0x2d')][_0xe5c7('0x31')]));_0x204b81['attributes']=_0x204b81[_0xe5c7('0x30')]['length']?_0x204b81['attributes']:_0x59f6e8[_0xe5c7('0x2b')];_0x204b81[_0xe5c7('0x34')]=qs[_0xe5c7('0x35')](_0x2e057c[_0xe5c7('0x2d')][_0xe5c7('0x35')]);_0x204b81[_0xe5c7('0x36')]=qs[_0xe5c7('0x37')](_[_0xe5c7('0x46')](_0x2e057c['query'],_0x59f6e8[_0xe5c7('0x37')]));if(_0x2e057c[_0xe5c7('0x2d')][_0xe5c7('0x38')]){_0x204b81[_0xe5c7('0x36')]=_[_0xe5c7('0x39')](_0x204b81['where'],{'$or':_[_0xe5c7('0x2c')](_0x204b81[_0xe5c7('0x30')],function(_0x5702cd){var _0x1005aa={};_0x1005aa[_0x5702cd]={'$like':'%'+_0x2e057c[_0xe5c7('0x2d')][_0xe5c7('0x38')]+'%'};return _0x1005aa;})});}_0x204b81=_[_0xe5c7('0x39')]({},_0x204b81,_0x2e057c[_0xe5c7('0x3a')]);return _0x17b903[_0xe5c7('0x47')](_0x204b81);}})['then'](function(_0x44d899){if(_0x44d899){_0x2cfd1d=_0x44d899['length'];if(!_0x2e057c[_0xe5c7('0x2d')]['hasOwnProperty'](_0xe5c7('0x48'))){_0x204b81[_0xe5c7('0x1a')]=qs['limit'](_0x2e057c['query'][_0xe5c7('0x1a')]);_0x204b81[_0xe5c7('0x18')]=qs[_0xe5c7('0x18')](_0x2e057c['query'][_0xe5c7('0x18')]);}return _0x17b903[_0xe5c7('0x47')](_0x204b81);}})[_0xe5c7('0x22')](function(_0x637eca){if(_0x637eca){return _0x637eca?{'count':_0x2cfd1d,'rows':_0x637eca}:null;}})['then'](respondWithResult(_0x1a2a26,null))[_0xe5c7('0x3e')](handleError(_0x1a2a26,null));};exports[_0xe5c7('0x49')]=function(_0x12619a,_0x57cece,_0x2ef26a){var _0xbced15={};var _0x282745={};var _0x2edba2;var _0x4553ef;return db[_0xe5c7('0x28')][_0xe5c7('0x4a')]({'where':{'id':_0x12619a[_0xe5c7('0x40')]['id']}})['then'](handleEntityNotFound(_0x57cece,null))[_0xe5c7('0x22')](function(_0x5e66a2){if(_0x5e66a2){_0x2edba2=_0x5e66a2;_0x282745[_0xe5c7('0x2b')]=_[_0xe5c7('0x2e')](db[_0xe5c7('0x45')][_0xe5c7('0x41')]);_0x282745[_0xe5c7('0x2d')]=_[_0xe5c7('0x2e')](_0x12619a['query']);_0x282745[_0xe5c7('0x37')]=_[_0xe5c7('0x2f')](_0x282745[_0xe5c7('0x2b')],_0x282745['query']);_0xbced15['attributes']=_[_0xe5c7('0x2f')](_0x282745['model'],qs['fields'](_0x12619a[_0xe5c7('0x2d')][_0xe5c7('0x31')]));_0xbced15[_0xe5c7('0x30')]=_0xbced15['attributes'][_0xe5c7('0x32')]?_0xbced15['attributes']:_0x282745[_0xe5c7('0x2b')];_0xbced15[_0xe5c7('0x34')]=qs[_0xe5c7('0x35')](_0x12619a[_0xe5c7('0x2d')][_0xe5c7('0x35')]);_0xbced15[_0xe5c7('0x36')]=qs['filters'](_['pick'](_0x12619a[_0xe5c7('0x2d')],_0x282745['filters']));if(_0x12619a[_0xe5c7('0x2d')][_0xe5c7('0x38')]){_0xbced15[_0xe5c7('0x36')]=_[_0xe5c7('0x39')](_0xbced15[_0xe5c7('0x36')],{'$or':_[_0xe5c7('0x2c')](_0xbced15['attributes'],function(_0x42fcdf){var _0xfb7078={};_0xfb7078[_0x42fcdf]={'$like':'%'+_0x12619a[_0xe5c7('0x2d')]['filter']+'%'};return _0xfb7078;})});}_0xbced15=_[_0xe5c7('0x39')]({},_0xbced15,_0x12619a[_0xe5c7('0x3a')]);return _0x2edba2[_0xe5c7('0x49')](_0xbced15);}})[_0xe5c7('0x22')](function(_0x38fe5b){if(_0x38fe5b){_0x4553ef=_0x38fe5b['length'];if(!_0x12619a[_0xe5c7('0x2d')]['hasOwnProperty']('nolimit')){_0xbced15[_0xe5c7('0x1a')]=qs[_0xe5c7('0x1a')](_0x12619a['query']['limit']);_0xbced15[_0xe5c7('0x18')]=qs[_0xe5c7('0x18')](_0x12619a[_0xe5c7('0x2d')][_0xe5c7('0x18')]);}return _0x2edba2[_0xe5c7('0x49')](_0xbced15);}})[_0xe5c7('0x22')](function(_0x52ec93){if(_0x52ec93){return _0x52ec93?{'count':_0x4553ef,'rows':_0x52ec93}:null;}})['then'](respondWithResult(_0x57cece,null))[_0xe5c7('0x3e')](handleError(_0x57cece,null));};exports[_0xe5c7('0x4b')]=function(_0x5c597a,_0x41185a,_0xeebf04){var _0x14c1c7={};var _0x5dab3d={};var _0x539bfe;var _0x40c46d;return db[_0xe5c7('0x28')]['findOne']({'where':{'id':_0x5c597a[_0xe5c7('0x40')]['id']}})[_0xe5c7('0x22')](handleEntityNotFound(_0x41185a,null))[_0xe5c7('0x22')](function(_0x3b7155){if(_0x3b7155){_0x539bfe=_0x3b7155;_0x5dab3d['model']=_['keys'](db['VtigerField'][_0xe5c7('0x41')]);_0x5dab3d[_0xe5c7('0x2d')]=_[_0xe5c7('0x2e')](_0x5c597a[_0xe5c7('0x2d')]);_0x5dab3d[_0xe5c7('0x37')]=_[_0xe5c7('0x2f')](_0x5dab3d[_0xe5c7('0x2b')],_0x5dab3d[_0xe5c7('0x2d')]);_0x14c1c7['attributes']=_['intersection'](_0x5dab3d['model'],qs[_0xe5c7('0x31')](_0x5c597a[_0xe5c7('0x2d')][_0xe5c7('0x31')]));_0x14c1c7[_0xe5c7('0x30')]=_0x14c1c7[_0xe5c7('0x30')][_0xe5c7('0x32')]?_0x14c1c7[_0xe5c7('0x30')]:_0x5dab3d[_0xe5c7('0x2b')];_0x14c1c7[_0xe5c7('0x34')]=qs[_0xe5c7('0x35')](_0x5c597a[_0xe5c7('0x2d')][_0xe5c7('0x35')]);_0x14c1c7[_0xe5c7('0x36')]=qs[_0xe5c7('0x37')](_[_0xe5c7('0x46')](_0x5c597a['query'],_0x5dab3d[_0xe5c7('0x37')]));if(_0x5c597a[_0xe5c7('0x2d')]['filter']){_0x14c1c7[_0xe5c7('0x36')]=_['merge'](_0x14c1c7[_0xe5c7('0x36')],{'$or':_[_0xe5c7('0x2c')](_0x14c1c7[_0xe5c7('0x30')],function(_0x565e81){var _0x16a157={};_0x16a157[_0x565e81]={'$like':'%'+_0x5c597a['query'][_0xe5c7('0x38')]+'%'};return _0x16a157;})});}_0x14c1c7=_[_0xe5c7('0x39')]({},_0x14c1c7,_0x5c597a['options']);return _0x539bfe[_0xe5c7('0x4b')](_0x14c1c7);}})[_0xe5c7('0x22')](function(_0x9d6e95){if(_0x9d6e95){_0x40c46d=_0x9d6e95[_0xe5c7('0x32')];if(!_0x5c597a[_0xe5c7('0x2d')][_0xe5c7('0x33')]('nolimit')){_0x14c1c7[_0xe5c7('0x1a')]=qs['limit'](_0x5c597a[_0xe5c7('0x2d')][_0xe5c7('0x1a')]);_0x14c1c7['offset']=qs[_0xe5c7('0x18')](_0x5c597a[_0xe5c7('0x2d')][_0xe5c7('0x18')]);}return _0x539bfe[_0xe5c7('0x4b')](_0x14c1c7);}})[_0xe5c7('0x22')](function(_0x2f54ae){if(_0x2f54ae){return _0x2f54ae?{'count':_0x40c46d,'rows':_0x2f54ae}:null;}})[_0xe5c7('0x22')](respondWithResult(_0x41185a,null))[_0xe5c7('0x3e')](handleError(_0x41185a,null));};
\ No newline at end of file
index db797f0..774f339 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf9f2=['../../config/logger','api','moment','bluebird','request-promise','path','rimraf','./intVtigerConfiguration.attributes','exports','define','VtigerConfiguration','int_vtiger_configurations','lodash','util'];(function(_0x1c4a5e,_0x2a88d9){var _0x3a8ecb=function(_0x455dee){while(--_0x455dee){_0x1c4a5e['push'](_0x1c4a5e['shift']());}};_0x3a8ecb(++_0x2a88d9);}(_0xf9f2,0x1da));var _0x2f9f=function(_0x2c2390,_0x37ef1c){_0x2c2390=_0x2c2390-0x0;var _0x478b7e=_0xf9f2[_0x2c2390];return _0x478b7e;};'use strict';var _=require(_0x2f9f('0x0'));var util=require(_0x2f9f('0x1'));var logger=require(_0x2f9f('0x2'))(_0x2f9f('0x3'));var moment=require(_0x2f9f('0x4'));var BPromise=require(_0x2f9f('0x5'));var rp=require(_0x2f9f('0x6'));var fs=require('fs');var path=require(_0x2f9f('0x7'));var rimraf=require(_0x2f9f('0x8'));var config=require('../../config/environment');var attributes=require(_0x2f9f('0x9'));module[_0x2f9f('0xa')]=function(_0x2e176f,_0xc7c169){return _0x2e176f[_0x2f9f('0xb')](_0x2f9f('0xc'),attributes,{'tableName':_0x2f9f('0xd'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x6dd3=['VtigerConfiguration','int_vtiger_configurations','lodash','util','../../config/logger','moment','bluebird','path','rimraf','../../config/environment','./intVtigerConfiguration.attributes','exports','define'];(function(_0x40c78f,_0x3b45ee){var _0xa7ea25=function(_0x19ecda){while(--_0x19ecda){_0x40c78f['push'](_0x40c78f['shift']());}};_0xa7ea25(++_0x3b45ee);}(_0x6dd3,0x17b));var _0x36dd=function(_0x20432d,_0x162aef){_0x20432d=_0x20432d-0x0;var _0x3d47db=_0x6dd3[_0x20432d];return _0x3d47db;};'use strict';var _=require(_0x36dd('0x0'));var util=require(_0x36dd('0x1'));var logger=require(_0x36dd('0x2'))('api');var moment=require(_0x36dd('0x3'));var BPromise=require(_0x36dd('0x4'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x36dd('0x5'));var rimraf=require(_0x36dd('0x6'));var config=require(_0x36dd('0x7'));var attributes=require(_0x36dd('0x8'));module[_0x36dd('0x9')]=function(_0x115c53,_0x34bb10){return _0x115c53[_0x36dd('0xa')](_0x36dd('0xb'),attributes,{'tableName':_0x36dd('0xc'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 39502f9..2aad72e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xadc1=['VtigerConfiguration,\x20%s,\x20%s,\x20%s','error','code','message','catch','util','moment','bluebird','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','request','info','VtigerConfiguration,\x20%s,\x20%s','request\x20sent'];(function(_0x14add3,_0x13ce8d){var _0x4a174f=function(_0x2b3ed7){while(--_0x2b3ed7){_0x14add3['push'](_0x14add3['shift']());}};_0x4a174f(++_0x13ce8d);}(_0xadc1,0x6e));var _0x1adc=function(_0x4b03c9,_0x17ce03){_0x4b03c9=_0x4b03c9-0x0;var _0x161ba2=_0xadc1[_0x4b03c9];return _0x161ba2;};'use strict';var _=require('lodash');var util=require(_0x1adc('0x0'));var moment=require(_0x1adc('0x1'));var BPromise=require(_0x1adc('0x2'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x1adc('0x3'));var db=require(_0x1adc('0x4'))['db'];var utils=require(_0x1adc('0x5'));var logger=require(_0x1adc('0x6'))(_0x1adc('0x7'));var config=require(_0x1adc('0x8'));var jayson=require(_0x1adc('0x9'));var client=jayson[_0x1adc('0xa')][_0x1adc('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x5956a3,_0x50a5f9,_0x2b4bc8){return new BPromise(function(_0x5c546b,_0x5e7f2d){return client[_0x1adc('0xc')](_0x5956a3,_0x2b4bc8)['then'](function(_0x3e86ad){logger[_0x1adc('0xd')](_0x1adc('0xe'),_0x50a5f9,_0x1adc('0xf'));logger['debug'](_0x1adc('0x10'),_0x50a5f9,_0x1adc('0xf'),JSON['stringify'](_0x3e86ad));if(_0x3e86ad[_0x1adc('0x11')]){if(_0x3e86ad[_0x1adc('0x11')][_0x1adc('0x12')]===0x1f4){logger[_0x1adc('0x11')](_0x1adc('0xe'),_0x50a5f9,_0x3e86ad[_0x1adc('0x11')][_0x1adc('0x13')]);return _0x5e7f2d(_0x3e86ad[_0x1adc('0x11')][_0x1adc('0x13')]);}logger[_0x1adc('0x11')](_0x1adc('0xe'),_0x50a5f9,_0x3e86ad[_0x1adc('0x11')][_0x1adc('0x13')]);return _0x5c546b(_0x3e86ad[_0x1adc('0x11')][_0x1adc('0x13')]);}else{logger[_0x1adc('0xd')](_0x1adc('0xe'),_0x50a5f9,_0x1adc('0xf'));_0x5c546b(_0x3e86ad['result'][_0x1adc('0x13')]);}})[_0x1adc('0x14')](function(_0x5282ed){logger['error'](_0x1adc('0xe'),_0x50a5f9,_0x5282ed);_0x5e7f2d(_0x5282ed);});});}
\ No newline at end of file
+var _0x24e4=['../../config/environment','jayson/promise','client','http','request','then','info','VtigerConfiguration,\x20%s,\x20%s','request\x20sent','debug','error','code','message','result','catch','lodash','util','bluebird','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc'];(function(_0x2d00fb,_0x254cb5){var _0x188cec=function(_0x23c65f){while(--_0x23c65f){_0x2d00fb['push'](_0x2d00fb['shift']());}};_0x188cec(++_0x254cb5);}(_0x24e4,0x1db));var _0x424e=function(_0x3a2a3c,_0x37bd31){_0x3a2a3c=_0x3a2a3c-0x0;var _0x50ac9a=_0x24e4[_0x3a2a3c];return _0x50ac9a;};'use strict';var _=require(_0x424e('0x0'));var util=require(_0x424e('0x1'));var moment=require('moment');var BPromise=require(_0x424e('0x2'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x424e('0x3'));var db=require(_0x424e('0x4'))['db'];var utils=require(_0x424e('0x5'));var logger=require(_0x424e('0x6'))(_0x424e('0x7'));var config=require(_0x424e('0x8'));var jayson=require(_0x424e('0x9'));var client=jayson[_0x424e('0xa')][_0x424e('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x55b8f9,_0x293814,_0x5e03e1){return new BPromise(function(_0x502283,_0x1b1a05){return client[_0x424e('0xc')](_0x55b8f9,_0x5e03e1)[_0x424e('0xd')](function(_0x2423b7){logger[_0x424e('0xe')](_0x424e('0xf'),_0x293814,_0x424e('0x10'));logger[_0x424e('0x11')]('VtigerConfiguration,\x20%s,\x20%s,\x20%s',_0x293814,_0x424e('0x10'),JSON['stringify'](_0x2423b7));if(_0x2423b7[_0x424e('0x12')]){if(_0x2423b7[_0x424e('0x12')][_0x424e('0x13')]===0x1f4){logger['error'](_0x424e('0xf'),_0x293814,_0x2423b7[_0x424e('0x12')][_0x424e('0x14')]);return _0x1b1a05(_0x2423b7[_0x424e('0x12')][_0x424e('0x14')]);}logger[_0x424e('0x12')](_0x424e('0xf'),_0x293814,_0x2423b7[_0x424e('0x12')][_0x424e('0x14')]);return _0x502283(_0x2423b7['error']['message']);}else{logger['info'](_0x424e('0xf'),_0x293814,_0x424e('0x10'));_0x502283(_0x2423b7[_0x424e('0x15')][_0x424e('0x14')]);}})[_0x424e('0x16')](function(_0xbb5dd3){logger[_0x424e('0x12')](_0x424e('0xf'),_0x293814,_0xbb5dd3);_0x1b1a05(_0xbb5dd3);});});}
\ No newline at end of file
index 58c1dc9..ba0e71a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xefba=['post','create','put','/:id','update','delete','destroy','exports','util','path','connect-timeout','express','Router','../../components/auth/service','../../config/environment','./intVtigerField.controller','isAuthenticated','index','get','show'];(function(_0x598e0e,_0x5e59c8){var _0xec17cd=function(_0xa1bda){while(--_0xa1bda){_0x598e0e['push'](_0x598e0e['shift']());}};_0xec17cd(++_0x5e59c8);}(_0xefba,0x198));var _0xaefb=function(_0x4fe5b5,_0x41efab){_0x4fe5b5=_0x4fe5b5-0x0;var _0x221fbe=_0xefba[_0x4fe5b5];return _0x221fbe;};'use strict';var multer=require('multer');var util=require(_0xaefb('0x0'));var path=require(_0xaefb('0x1'));var timeout=require(_0xaefb('0x2'));var express=require(_0xaefb('0x3'));var router=express[_0xaefb('0x4')]();var fs_extra=require('fs-extra');var auth=require(_0xaefb('0x5'));var interaction=require('../../components/interaction/service');var config=require(_0xaefb('0x6'));var controller=require(_0xaefb('0x7'));router['get']('/',auth[_0xaefb('0x8')](),controller[_0xaefb('0x9')]);router[_0xaefb('0xa')]('/:id',auth[_0xaefb('0x8')](),controller[_0xaefb('0xb')]);router[_0xaefb('0xc')]('/',auth[_0xaefb('0x8')](),controller[_0xaefb('0xd')]);router[_0xaefb('0xe')](_0xaefb('0xf'),auth[_0xaefb('0x8')](),controller[_0xaefb('0x10')]);router[_0xaefb('0x11')](_0xaefb('0xf'),auth['isAuthenticated'](),controller[_0xaefb('0x12')]);module[_0xaefb('0x13')]=router;
\ No newline at end of file
+var _0xa1b5=['create','put','delete','exports','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./intVtigerField.controller','get','isAuthenticated','/:id','show','post'];(function(_0x46698a,_0x8de1e4){var _0x356db0=function(_0x19e83c){while(--_0x19e83c){_0x46698a['push'](_0x46698a['shift']());}};_0x356db0(++_0x8de1e4);}(_0xa1b5,0x18a));var _0x5a1b=function(_0x24cb87,_0x116e9){_0x24cb87=_0x24cb87-0x0;var _0x4424c1=_0xa1b5[_0x24cb87];return _0x4424c1;};'use strict';var multer=require('multer');var util=require('util');var path=require('path');var timeout=require('connect-timeout');var express=require('express');var router=express[_0x5a1b('0x0')]();var fs_extra=require(_0x5a1b('0x1'));var auth=require(_0x5a1b('0x2'));var interaction=require(_0x5a1b('0x3'));var config=require(_0x5a1b('0x4'));var controller=require(_0x5a1b('0x5'));router[_0x5a1b('0x6')]('/',auth[_0x5a1b('0x7')](),controller['index']);router[_0x5a1b('0x6')](_0x5a1b('0x8'),auth[_0x5a1b('0x7')](),controller[_0x5a1b('0x9')]);router[_0x5a1b('0xa')]('/',auth[_0x5a1b('0x7')](),controller[_0x5a1b('0xb')]);router[_0x5a1b('0xc')](_0x5a1b('0x8'),auth[_0x5a1b('0x7')](),controller['update']);router[_0x5a1b('0xd')]('/:id',auth[_0x5a1b('0x7')](),controller['destroy']);module[_0x5a1b('0xe')]=router;
\ No newline at end of file
index 16a2b25..eef20a3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xcf3d=['sequelize','ENUM','string','variable','customVariable','STRING','BOOLEAN'];(function(_0x2631bd,_0x2b49b7){var _0x172fbb=function(_0x3f44c4){while(--_0x3f44c4){_0x2631bd['push'](_0x2631bd['shift']());}};_0x172fbb(++_0x2b49b7);}(_0xcf3d,0x188));var _0xdcf3=function(_0x308bfe,_0x5e1f87){_0x308bfe=_0x308bfe-0x0;var _0xc8c04f=_0xcf3d[_0x308bfe];return _0xc8c04f;};'use strict';var Sequelize=require(_0xdcf3('0x0'));module['exports']={'type':{'type':Sequelize[_0xdcf3('0x1')](_0xdcf3('0x2'),_0xdcf3('0x3'),_0xdcf3('0x4'),'keyValue','picklist'),'defaultValue':_0xdcf3('0x2')},'content':{'type':Sequelize['STRING']},'key':{'type':Sequelize[_0xdcf3('0x5')]},'keyType':{'type':Sequelize[_0xdcf3('0x1')](_0xdcf3('0x2'),'variable','customVariable')},'keyContent':{'type':Sequelize['STRING']},'idField':{'type':Sequelize[_0xdcf3('0x5')]},'nameField':{'type':Sequelize[_0xdcf3('0x5')]},'customField':{'type':Sequelize[_0xdcf3('0x6')],'defaultValue':!![]},'variableName':{'type':Sequelize[_0xdcf3('0x5')]}};
\ No newline at end of file
+var _0x110d=['variable','customVariable','keyValue','picklist','STRING','BOOLEAN','sequelize','exports','ENUM','string'];(function(_0x50cd41,_0x4874a7){var _0x399475=function(_0x1946da){while(--_0x1946da){_0x50cd41['push'](_0x50cd41['shift']());}};_0x399475(++_0x4874a7);}(_0x110d,0xf6));var _0xd110=function(_0x505f51,_0x1a3e1d){_0x505f51=_0x505f51-0x0;var _0x5468b3=_0x110d[_0x505f51];return _0x5468b3;};'use strict';var Sequelize=require(_0xd110('0x0'));module[_0xd110('0x1')]={'type':{'type':Sequelize[_0xd110('0x2')](_0xd110('0x3'),_0xd110('0x4'),_0xd110('0x5'),_0xd110('0x6'),_0xd110('0x7')),'defaultValue':_0xd110('0x3')},'content':{'type':Sequelize['STRING']},'key':{'type':Sequelize[_0xd110('0x8')]},'keyType':{'type':Sequelize[_0xd110('0x2')]('string','variable',_0xd110('0x5'))},'keyContent':{'type':Sequelize[_0xd110('0x8')]},'idField':{'type':Sequelize['STRING']},'nameField':{'type':Sequelize[_0xd110('0x8')]},'customField':{'type':Sequelize[_0xd110('0x9')],'defaultValue':!![]},'variableName':{'type':Sequelize['STRING']}};
\ No newline at end of file
index b5f6b2d..f938c63 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6035=['find','create','body','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','path','sox','ejs','lodash','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','end','status','json','offset','undefined','limit','count','set','Content-Range','apply','reject','save','then','destroy','sendStatus','stack','name','send','map','VtigerField','rawAttributes','key','query','keys','filters','intersection','model','attributes','fields','hasOwnProperty','nolimit','order','sort','where','pick','filter','merge','type','options','includeAll','include','rows','catch','params','length'];(function(_0x63de62,_0xe5cc89){var _0x3daddf=function(_0x2a5d79){while(--_0x2a5d79){_0x63de62['push'](_0x63de62['shift']());}};_0x3daddf(++_0xe5cc89);}(_0x6035,0x93));var _0x5603=function(_0x5d0ea9,_0x39382f){_0x5d0ea9=_0x5d0ea9-0x0;var _0x4a01a0=_0x6035[_0x5d0ea9];return _0x4a01a0;};'use strict';var emlformat=require('eml-format');var rimraf=require('rimraf');var zipdir=require(_0x5603('0x0'));var jsonpatch=require(_0x5603('0x1'));var rp=require(_0x5603('0x2'));var moment=require(_0x5603('0x3'));var BPromise=require(_0x5603('0x4'));var Mustache=require(_0x5603('0x5'));var util=require('util');var path=require(_0x5603('0x6'));var sox=require(_0x5603('0x7'));var csv=require('to-csv');var ejs=require(_0x5603('0x8'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x5603('0x9'));var squel=require('squel');var crypto=require(_0x5603('0xa'));var jsforce=require(_0x5603('0xb'));var deskjs=require(_0x5603('0xc'));var toCsv=require('to-csv');var querystring=require(_0x5603('0xd'));var Papa=require('papaparse');var Redis=require(_0x5603('0xe'));var authService=require(_0x5603('0xf'));var qs=require(_0x5603('0x10'));var as=require(_0x5603('0x11'));var hardwareService=require(_0x5603('0x12'));var logger=require(_0x5603('0x13'))(_0x5603('0x14'));var utils=require('../../config/utils');var config=require(_0x5603('0x15'));var licenseUtil=require(_0x5603('0x16'));var db=require(_0x5603('0x17'))['db'];function respondWithStatusCode(_0x1814e3,_0x17ca16){_0x17ca16=_0x17ca16||0xcc;return function(_0x31bb1c){if(_0x31bb1c){return _0x1814e3['sendStatus'](_0x17ca16);}return _0x1814e3['status'](_0x17ca16)[_0x5603('0x18')]();};}function respondWithResult(_0xc0dabc,_0x2d1041){_0x2d1041=_0x2d1041||0xc8;return function(_0x57a5ba){if(_0x57a5ba){return _0xc0dabc[_0x5603('0x19')](_0x2d1041)[_0x5603('0x1a')](_0x57a5ba);}};}function respondWithFilteredResult(_0x2c4c75,_0x30e570){return function(_0x19190d){if(_0x19190d){var _0x217563=typeof _0x30e570[_0x5603('0x1b')]===_0x5603('0x1c')&&typeof _0x30e570[_0x5603('0x1d')]==='undefined';var _0x1aebb5=_0x19190d[_0x5603('0x1e')];var _0x31bb3d=_0x217563?0x0:_0x30e570['offset'];var _0xd852f2=_0x217563?_0x19190d['count']:_0x30e570[_0x5603('0x1b')]+_0x30e570[_0x5603('0x1d')];var _0x379ac4;if(_0xd852f2>=_0x1aebb5){_0xd852f2=_0x1aebb5;_0x379ac4=0xc8;}else{_0x379ac4=0xce;}_0x2c4c75[_0x5603('0x19')](_0x379ac4);return _0x2c4c75[_0x5603('0x1f')](_0x5603('0x20'),_0x31bb3d+'-'+_0xd852f2+'/'+_0x1aebb5)[_0x5603('0x1a')](_0x19190d);}return null;};}function patchUpdates(_0x1bd7bf){return function(_0x53b885){try{jsonpatch[_0x5603('0x21')](_0x53b885,_0x1bd7bf,!![]);}catch(_0x15d283){return BPromise[_0x5603('0x22')](_0x15d283);}return _0x53b885[_0x5603('0x23')]();};}function saveUpdates(_0x3fad27,_0x5179c4){return function(_0x4bf48d){if(_0x4bf48d){return _0x4bf48d['update'](_0x3fad27)[_0x5603('0x24')](function(_0x51e4a7){return _0x51e4a7;});}return null;};}function removeEntity(_0x1c398e,_0x1723f2){return function(_0x28f1ee){if(_0x28f1ee){return _0x28f1ee[_0x5603('0x25')]()['then'](function(){_0x1c398e[_0x5603('0x19')](0xcc)[_0x5603('0x18')]();});}};}function handleEntityNotFound(_0x210bc6,_0x42e4c9){return function(_0x5afc03){if(!_0x5afc03){_0x210bc6[_0x5603('0x26')](0x194);}return _0x5afc03;};}function handleError(_0x2e64d2,_0x1bfc86){_0x1bfc86=_0x1bfc86||0x1f4;return function(_0x58a1ca){logger['error'](_0x58a1ca[_0x5603('0x27')]);if(_0x58a1ca[_0x5603('0x28')]){delete _0x58a1ca[_0x5603('0x28')];}_0x2e64d2[_0x5603('0x19')](_0x1bfc86)[_0x5603('0x29')](_0x58a1ca);};}exports['index']=function(_0x599dfd,_0x936104){var _0x5900a9={},_0x35ee33={},_0x2defa0={'count':0x0,'rows':[]};var _0x4d9b2f=_[_0x5603('0x2a')](db[_0x5603('0x2b')][_0x5603('0x2c')],function(_0x3ae130){return{'name':_0x3ae130['fieldName'],'type':_0x3ae130['type'][_0x5603('0x2d')]};});_0x35ee33['model']=_[_0x5603('0x2a')](_0x4d9b2f,'name');_0x35ee33[_0x5603('0x2e')]=_[_0x5603('0x2f')](_0x599dfd['query']);_0x35ee33[_0x5603('0x30')]=_[_0x5603('0x31')](_0x35ee33[_0x5603('0x32')],_0x35ee33[_0x5603('0x2e')]);_0x5900a9[_0x5603('0x33')]=_[_0x5603('0x31')](_0x35ee33[_0x5603('0x32')],qs[_0x5603('0x34')](_0x599dfd[_0x5603('0x2e')][_0x5603('0x34')]));_0x5900a9['attributes']=_0x5900a9[_0x5603('0x33')]['length']?_0x5900a9['attributes']:_0x35ee33['model'];if(!_0x599dfd[_0x5603('0x2e')][_0x5603('0x35')](_0x5603('0x36'))){_0x5900a9[_0x5603('0x1d')]=qs[_0x5603('0x1d')](_0x599dfd[_0x5603('0x2e')][_0x5603('0x1d')]);_0x5900a9[_0x5603('0x1b')]=qs[_0x5603('0x1b')](_0x599dfd[_0x5603('0x2e')][_0x5603('0x1b')]);}_0x5900a9[_0x5603('0x37')]=qs[_0x5603('0x38')](_0x599dfd['query']['sort']);_0x5900a9[_0x5603('0x39')]=qs['filters'](_[_0x5603('0x3a')](_0x599dfd['query'],_0x35ee33[_0x5603('0x30')]),_0x4d9b2f);if(_0x599dfd['query'][_0x5603('0x3b')]){_0x5900a9[_0x5603('0x39')]=_[_0x5603('0x3c')](_0x5900a9[_0x5603('0x39')],{'$or':_[_0x5603('0x2a')](_0x4d9b2f,function(_0x495f5e){if(_0x495f5e[_0x5603('0x3d')]!=='VIRTUAL'){var _0x3728ed={};_0x3728ed[_0x495f5e[_0x5603('0x28')]]={'$like':'%'+_0x599dfd[_0x5603('0x2e')]['filter']+'%'};return _0x3728ed;}})});}_0x5900a9=_[_0x5603('0x3c')]({},_0x5900a9,_0x599dfd[_0x5603('0x3e')]);var _0x5116d3={'where':_0x5900a9[_0x5603('0x39')]};return db[_0x5603('0x2b')]['count'](_0x5116d3)[_0x5603('0x24')](function(_0x5c1303){_0x2defa0[_0x5603('0x1e')]=_0x5c1303;if(_0x599dfd[_0x5603('0x2e')][_0x5603('0x3f')]){_0x5900a9[_0x5603('0x40')]=[{'all':!![]}];}return db[_0x5603('0x2b')]['findAll'](_0x5900a9);})[_0x5603('0x24')](function(_0x288627){_0x2defa0[_0x5603('0x41')]=_0x288627;return _0x2defa0;})[_0x5603('0x24')](respondWithFilteredResult(_0x936104,_0x5900a9))[_0x5603('0x42')](handleError(_0x936104,null));};exports['show']=function(_0x4e4e92,_0xdd7464){var _0x1e2ac8={'raw':!![],'where':{'id':_0x4e4e92[_0x5603('0x43')]['id']}},_0x3446c5={};_0x3446c5['model']=_[_0x5603('0x2f')](db[_0x5603('0x2b')]['rawAttributes']);_0x3446c5['query']=_[_0x5603('0x2f')](_0x4e4e92[_0x5603('0x2e')]);_0x3446c5[_0x5603('0x30')]=_[_0x5603('0x31')](_0x3446c5[_0x5603('0x32')],_0x3446c5[_0x5603('0x2e')]);_0x1e2ac8[_0x5603('0x33')]=_[_0x5603('0x31')](_0x3446c5[_0x5603('0x32')],qs[_0x5603('0x34')](_0x4e4e92[_0x5603('0x2e')]['fields']));_0x1e2ac8[_0x5603('0x33')]=_0x1e2ac8[_0x5603('0x33')][_0x5603('0x44')]?_0x1e2ac8[_0x5603('0x33')]:_0x3446c5['model'];if(_0x4e4e92[_0x5603('0x2e')][_0x5603('0x3f')]){_0x1e2ac8[_0x5603('0x40')]=[{'all':!![]}];}_0x1e2ac8=_[_0x5603('0x3c')]({},_0x1e2ac8,_0x4e4e92['options']);return db[_0x5603('0x2b')][_0x5603('0x45')](_0x1e2ac8)[_0x5603('0x24')](handleEntityNotFound(_0xdd7464,null))[_0x5603('0x24')](respondWithResult(_0xdd7464,null))[_0x5603('0x42')](handleError(_0xdd7464,null));};exports[_0x5603('0x46')]=function(_0x87e936,_0x125880){return db[_0x5603('0x2b')][_0x5603('0x46')](_0x87e936['body'],{})[_0x5603('0x24')](respondWithResult(_0x125880,0xc9))['catch'](handleError(_0x125880,null));};exports['update']=function(_0x3d6299,_0x337cab){if(_0x3d6299['body']['id']){delete _0x3d6299[_0x5603('0x47')]['id'];}return db[_0x5603('0x2b')][_0x5603('0x45')]({'where':{'id':_0x3d6299['params']['id']}})[_0x5603('0x24')](handleEntityNotFound(_0x337cab,null))[_0x5603('0x24')](saveUpdates(_0x3d6299[_0x5603('0x47')],null))[_0x5603('0x24')](respondWithResult(_0x337cab,null))['catch'](handleError(_0x337cab,null));};exports['destroy']=function(_0x46823f,_0x256676){return db['VtigerField'][_0x5603('0x45')]({'where':{'id':_0x46823f[_0x5603('0x43')]['id']}})[_0x5603('0x24')](handleEntityNotFound(_0x256676,null))['then'](removeEntity(_0x256676,null))['catch'](handleError(_0x256676,null));};
\ No newline at end of file
+var _0x993a=['query','keys','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','sort','pick','filter','where','merge','then','includeAll','findAll','rows','catch','show','params','include','options','find','create','body','eml-format','zip-dir','fast-json-patch','request-promise','moment','mustache','util','path','sox','ejs','fs-extra','squel','crypto','jsforce','desk.js','to-csv','querystring','papaparse','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','json','limit','undefined','count','offset','set','apply','save','update','destroy','error','name','send','index','VtigerField','rawAttributes','fieldName','type','model','map'];(function(_0x167cc1,_0x56ef5a){var _0x10bc4b=function(_0xd6a255){while(--_0xd6a255){_0x167cc1['push'](_0x167cc1['shift']());}};_0x10bc4b(++_0x56ef5a);}(_0x993a,0xfe));var _0xa993=function(_0x2def89,_0x38f019){_0x2def89=_0x2def89-0x0;var _0x1376cf=_0x993a[_0x2def89];return _0x1376cf;};'use strict';var emlformat=require(_0xa993('0x0'));var rimraf=require('rimraf');var zipdir=require(_0xa993('0x1'));var jsonpatch=require(_0xa993('0x2'));var rp=require(_0xa993('0x3'));var moment=require(_0xa993('0x4'));var BPromise=require('bluebird');var Mustache=require(_0xa993('0x5'));var util=require(_0xa993('0x6'));var path=require(_0xa993('0x7'));var sox=require(_0xa993('0x8'));var csv=require('to-csv');var ejs=require(_0xa993('0x9'));var fs=require('fs');var fs_extra=require(_0xa993('0xa'));var _=require('lodash');var squel=require(_0xa993('0xb'));var crypto=require(_0xa993('0xc'));var jsforce=require(_0xa993('0xd'));var deskjs=require(_0xa993('0xe'));var toCsv=require(_0xa993('0xf'));var querystring=require(_0xa993('0x10'));var Papa=require(_0xa993('0x11'));var Redis=require(_0xa993('0x12'));var authService=require('../../components/auth/service');var qs=require(_0xa993('0x13'));var as=require(_0xa993('0x14'));var hardwareService=require(_0xa993('0x15'));var logger=require(_0xa993('0x16'))(_0xa993('0x17'));var utils=require(_0xa993('0x18'));var config=require(_0xa993('0x19'));var licenseUtil=require(_0xa993('0x1a'));var db=require(_0xa993('0x1b'))['db'];function respondWithStatusCode(_0x19a7a8,_0x5a5fe2){_0x5a5fe2=_0x5a5fe2||0xcc;return function(_0x5df15f){if(_0x5df15f){return _0x19a7a8[_0xa993('0x1c')](_0x5a5fe2);}return _0x19a7a8[_0xa993('0x1d')](_0x5a5fe2)['end']();};}function respondWithResult(_0x135e3e,_0x2c2b28){_0x2c2b28=_0x2c2b28||0xc8;return function(_0x199f97){if(_0x199f97){return _0x135e3e[_0xa993('0x1d')](_0x2c2b28)[_0xa993('0x1e')](_0x199f97);}};}function respondWithFilteredResult(_0x1524a6,_0x55a261){return function(_0x3d469f){if(_0x3d469f){var _0x3ff5a2=typeof _0x55a261['offset']==='undefined'&&typeof _0x55a261[_0xa993('0x1f')]===_0xa993('0x20');var _0x1408e5=_0x3d469f[_0xa993('0x21')];var _0x5ece70=_0x3ff5a2?0x0:_0x55a261[_0xa993('0x22')];var _0x578e0e=_0x3ff5a2?_0x3d469f[_0xa993('0x21')]:_0x55a261[_0xa993('0x22')]+_0x55a261['limit'];var _0x42ab1d;if(_0x578e0e>=_0x1408e5){_0x578e0e=_0x1408e5;_0x42ab1d=0xc8;}else{_0x42ab1d=0xce;}_0x1524a6[_0xa993('0x1d')](_0x42ab1d);return _0x1524a6[_0xa993('0x23')]('Content-Range',_0x5ece70+'-'+_0x578e0e+'/'+_0x1408e5)[_0xa993('0x1e')](_0x3d469f);}return null;};}function patchUpdates(_0x49ac69){return function(_0x2bb258){try{jsonpatch[_0xa993('0x24')](_0x2bb258,_0x49ac69,!![]);}catch(_0x2d8d25){return BPromise['reject'](_0x2d8d25);}return _0x2bb258[_0xa993('0x25')]();};}function saveUpdates(_0x3a1bfa,_0x9104de){return function(_0x206e57){if(_0x206e57){return _0x206e57[_0xa993('0x26')](_0x3a1bfa)['then'](function(_0x4db4b2){return _0x4db4b2;});}return null;};}function removeEntity(_0x1f006a,_0x5609e8){return function(_0x39f057){if(_0x39f057){return _0x39f057[_0xa993('0x27')]()['then'](function(){_0x1f006a[_0xa993('0x1d')](0xcc)['end']();});}};}function handleEntityNotFound(_0x41c3,_0x5242cb){return function(_0x48345e){if(!_0x48345e){_0x41c3['sendStatus'](0x194);}return _0x48345e;};}function handleError(_0x2b44f3,_0x4a925c){_0x4a925c=_0x4a925c||0x1f4;return function(_0x479d9d){logger[_0xa993('0x28')](_0x479d9d['stack']);if(_0x479d9d[_0xa993('0x29')]){delete _0x479d9d[_0xa993('0x29')];}_0x2b44f3['status'](_0x4a925c)[_0xa993('0x2a')](_0x479d9d);};}exports[_0xa993('0x2b')]=function(_0x419331,_0x3f9450){var _0x34c6d4={},_0x5d4936={},_0x1de27e={'count':0x0,'rows':[]};var _0x4daae2=_['map'](db[_0xa993('0x2c')][_0xa993('0x2d')],function(_0x5c7c98){return{'name':_0x5c7c98[_0xa993('0x2e')],'type':_0x5c7c98[_0xa993('0x2f')]['key']};});_0x5d4936[_0xa993('0x30')]=_[_0xa993('0x31')](_0x4daae2,'name');_0x5d4936[_0xa993('0x32')]=_[_0xa993('0x33')](_0x419331['query']);_0x5d4936[_0xa993('0x34')]=_[_0xa993('0x35')](_0x5d4936['model'],_0x5d4936['query']);_0x34c6d4[_0xa993('0x36')]=_[_0xa993('0x35')](_0x5d4936[_0xa993('0x30')],qs[_0xa993('0x37')](_0x419331[_0xa993('0x32')][_0xa993('0x37')]));_0x34c6d4[_0xa993('0x36')]=_0x34c6d4[_0xa993('0x36')][_0xa993('0x38')]?_0x34c6d4['attributes']:_0x5d4936[_0xa993('0x30')];if(!_0x419331[_0xa993('0x32')][_0xa993('0x39')](_0xa993('0x3a'))){_0x34c6d4[_0xa993('0x1f')]=qs[_0xa993('0x1f')](_0x419331[_0xa993('0x32')]['limit']);_0x34c6d4['offset']=qs[_0xa993('0x22')](_0x419331['query']['offset']);}_0x34c6d4['order']=qs[_0xa993('0x3b')](_0x419331[_0xa993('0x32')][_0xa993('0x3b')]);_0x34c6d4['where']=qs['filters'](_[_0xa993('0x3c')](_0x419331[_0xa993('0x32')],_0x5d4936[_0xa993('0x34')]),_0x4daae2);if(_0x419331[_0xa993('0x32')][_0xa993('0x3d')]){_0x34c6d4[_0xa993('0x3e')]=_[_0xa993('0x3f')](_0x34c6d4[_0xa993('0x3e')],{'$or':_[_0xa993('0x31')](_0x4daae2,function(_0x389ea8){if(_0x389ea8[_0xa993('0x2f')]!=='VIRTUAL'){var _0x30f0f5={};_0x30f0f5[_0x389ea8[_0xa993('0x29')]]={'$like':'%'+_0x419331['query'][_0xa993('0x3d')]+'%'};return _0x30f0f5;}})});}_0x34c6d4=_[_0xa993('0x3f')]({},_0x34c6d4,_0x419331['options']);var _0x21632b={'where':_0x34c6d4[_0xa993('0x3e')]};return db[_0xa993('0x2c')][_0xa993('0x21')](_0x21632b)[_0xa993('0x40')](function(_0x56024f){_0x1de27e['count']=_0x56024f;if(_0x419331['query'][_0xa993('0x41')]){_0x34c6d4['include']=[{'all':!![]}];}return db[_0xa993('0x2c')][_0xa993('0x42')](_0x34c6d4);})[_0xa993('0x40')](function(_0x215137){_0x1de27e[_0xa993('0x43')]=_0x215137;return _0x1de27e;})[_0xa993('0x40')](respondWithFilteredResult(_0x3f9450,_0x34c6d4))[_0xa993('0x44')](handleError(_0x3f9450,null));};exports[_0xa993('0x45')]=function(_0x261556,_0x37f7f9){var _0x535784={'raw':!![],'where':{'id':_0x261556[_0xa993('0x46')]['id']}},_0x501fce={};_0x501fce[_0xa993('0x30')]=_['keys'](db[_0xa993('0x2c')][_0xa993('0x2d')]);_0x501fce[_0xa993('0x32')]=_['keys'](_0x261556[_0xa993('0x32')]);_0x501fce[_0xa993('0x34')]=_[_0xa993('0x35')](_0x501fce[_0xa993('0x30')],_0x501fce[_0xa993('0x32')]);_0x535784[_0xa993('0x36')]=_[_0xa993('0x35')](_0x501fce['model'],qs['fields'](_0x261556[_0xa993('0x32')][_0xa993('0x37')]));_0x535784[_0xa993('0x36')]=_0x535784[_0xa993('0x36')][_0xa993('0x38')]?_0x535784[_0xa993('0x36')]:_0x501fce[_0xa993('0x30')];if(_0x261556[_0xa993('0x32')][_0xa993('0x41')]){_0x535784[_0xa993('0x47')]=[{'all':!![]}];}_0x535784=_[_0xa993('0x3f')]({},_0x535784,_0x261556[_0xa993('0x48')]);return db[_0xa993('0x2c')][_0xa993('0x49')](_0x535784)['then'](handleEntityNotFound(_0x37f7f9,null))[_0xa993('0x40')](respondWithResult(_0x37f7f9,null))['catch'](handleError(_0x37f7f9,null));};exports[_0xa993('0x4a')]=function(_0x489415,_0x5a823b){return db[_0xa993('0x2c')]['create'](_0x489415[_0xa993('0x4b')],{})['then'](respondWithResult(_0x5a823b,0xc9))[_0xa993('0x44')](handleError(_0x5a823b,null));};exports[_0xa993('0x26')]=function(_0x544261,_0xba8ab){if(_0x544261['body']['id']){delete _0x544261['body']['id'];}return db['VtigerField'][_0xa993('0x49')]({'where':{'id':_0x544261[_0xa993('0x46')]['id']}})[_0xa993('0x40')](handleEntityNotFound(_0xba8ab,null))[_0xa993('0x40')](saveUpdates(_0x544261[_0xa993('0x4b')],null))['then'](respondWithResult(_0xba8ab,null))['catch'](handleError(_0xba8ab,null));};exports[_0xa993('0x27')]=function(_0xa8f7a5,_0x14873d){return db['VtigerField']['find']({'where':{'id':_0xa8f7a5[_0xa993('0x46')]['id']}})[_0xa993('0x40')](handleEntityNotFound(_0x14873d,null))['then'](removeEntity(_0x14873d,null))[_0xa993('0x44')](handleError(_0x14873d,null));};
\ No newline at end of file
index 03ad235..f7131e5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9766=['define','VtigerField','lodash','util','moment','bluebird','path','rimraf','../../config/environment','exports'];(function(_0x418893,_0x557eb2){var _0x3b8cf0=function(_0x3eab98){while(--_0x3eab98){_0x418893['push'](_0x418893['shift']());}};_0x3b8cf0(++_0x557eb2);}(_0x9766,0x84));var _0x6976=function(_0x43d11d,_0xccff91){_0x43d11d=_0x43d11d-0x0;var _0x38cd08=_0x9766[_0x43d11d];return _0x38cd08;};'use strict';var _=require(_0x6976('0x0'));var util=require(_0x6976('0x1'));var logger=require('../../config/logger')('api');var moment=require(_0x6976('0x2'));var BPromise=require(_0x6976('0x3'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x6976('0x4'));var rimraf=require(_0x6976('0x5'));var config=require(_0x6976('0x6'));var attributes=require('./intVtigerField.attributes');module[_0x6976('0x7')]=function(_0x47ef4d,_0x317e39){return _0x47ef4d[_0x6976('0x8')](_0x6976('0x9'),attributes,{'tableName':'int_vtiger_fields','paranoid':![],'indexes':[{'name':'vtiger_unique_index','fields':['idField','FieldId'],'unique':!![]}],'timestamps':!![]});};
\ No newline at end of file
+var _0x25e0=['define','VtigerField','int_vtiger_fields','idField','lodash','util','moment','bluebird','request-promise','path','rimraf','../../config/environment','./intVtigerField.attributes','exports'];(function(_0x1a9c19,_0x164364){var _0x1970d3=function(_0x22d54d){while(--_0x22d54d){_0x1a9c19['push'](_0x1a9c19['shift']());}};_0x1970d3(++_0x164364);}(_0x25e0,0x74));var _0x025e=function(_0x2ecea0,_0x36a83d){_0x2ecea0=_0x2ecea0-0x0;var _0x17ab22=_0x25e0[_0x2ecea0];return _0x17ab22;};'use strict';var _=require(_0x025e('0x0'));var util=require(_0x025e('0x1'));var logger=require('../../config/logger')('api');var moment=require(_0x025e('0x2'));var BPromise=require(_0x025e('0x3'));var rp=require(_0x025e('0x4'));var fs=require('fs');var path=require(_0x025e('0x5'));var rimraf=require(_0x025e('0x6'));var config=require(_0x025e('0x7'));var attributes=require(_0x025e('0x8'));module[_0x025e('0x9')]=function(_0x1f8344,_0x37971e){return _0x1f8344[_0x025e('0xa')](_0x025e('0xb'),attributes,{'tableName':_0x025e('0xc'),'paranoid':![],'indexes':[{'name':'vtiger_unique_index','fields':[_0x025e('0xd'),'FieldId'],'unique':!![]}],'timestamps':!![]});};
\ No newline at end of file
index d9a6cd4..fbb9c0f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xac55=['ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','request','then','VtigerField,\x20%s,\x20%s','request\x20sent','VtigerField,\x20%s,\x20%s,\x20%s','error','message','result','catch','lodash','util','moment','bluebird'];(function(_0x1fddfd,_0x153a74){var _0x595b32=function(_0x2512d4){while(--_0x2512d4){_0x1fddfd['push'](_0x1fddfd['shift']());}};_0x595b32(++_0x153a74);}(_0xac55,0x1c8));var _0x5ac5=function(_0x525227,_0x2692a2){_0x525227=_0x525227-0x0;var _0x178078=_0xac55[_0x525227];return _0x178078;};'use strict';var _=require(_0x5ac5('0x0'));var util=require(_0x5ac5('0x1'));var moment=require(_0x5ac5('0x2'));var BPromise=require(_0x5ac5('0x3'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x5ac5('0x4'));var db=require(_0x5ac5('0x5'))['db'];var utils=require(_0x5ac5('0x6'));var logger=require(_0x5ac5('0x7'))(_0x5ac5('0x8'));var config=require(_0x5ac5('0x9'));var jayson=require(_0x5ac5('0xa'));var client=jayson['client']['http']({'port':0x232a});function respondWithRpcPromise(_0x34093b,_0x247752,_0x2bee03){return new BPromise(function(_0x42551a,_0x455a94){return client[_0x5ac5('0xb')](_0x34093b,_0x2bee03)[_0x5ac5('0xc')](function(_0x5b84a3){logger['info'](_0x5ac5('0xd'),_0x247752,_0x5ac5('0xe'));logger['debug'](_0x5ac5('0xf'),_0x247752,_0x5ac5('0xe'),JSON['stringify'](_0x5b84a3));if(_0x5b84a3[_0x5ac5('0x10')]){if(_0x5b84a3[_0x5ac5('0x10')]['code']===0x1f4){logger[_0x5ac5('0x10')](_0x5ac5('0xd'),_0x247752,_0x5b84a3[_0x5ac5('0x10')][_0x5ac5('0x11')]);return _0x455a94(_0x5b84a3[_0x5ac5('0x10')]['message']);}logger[_0x5ac5('0x10')]('VtigerField,\x20%s,\x20%s',_0x247752,_0x5b84a3[_0x5ac5('0x10')][_0x5ac5('0x11')]);return _0x42551a(_0x5b84a3['error'][_0x5ac5('0x11')]);}else{logger['info'](_0x5ac5('0xd'),_0x247752,_0x5ac5('0xe'));_0x42551a(_0x5b84a3[_0x5ac5('0x12')][_0x5ac5('0x11')]);}})[_0x5ac5('0x13')](function(_0x3e35e9){logger[_0x5ac5('0x10')]('VtigerField,\x20%s,\x20%s',_0x247752,_0x3e35e9);_0x455a94(_0x3e35e9);});});}
\ No newline at end of file
+var _0x324f=['catch','lodash','util','moment','ioredis','../../config/utils','../../config/logger','../../config/environment','jayson/promise','http','request','then','VtigerField,\x20%s,\x20%s','request\x20sent','debug','VtigerField,\x20%s,\x20%s,\x20%s','stringify','error','code','message','info'];(function(_0x2322a5,_0x46e265){var _0x54df42=function(_0x31694f){while(--_0x31694f){_0x2322a5['push'](_0x2322a5['shift']());}};_0x54df42(++_0x46e265);}(_0x324f,0x94));var _0xf324=function(_0x5d44d7,_0x1dcff5){_0x5d44d7=_0x5d44d7-0x0;var _0x4ac265=_0x324f[_0x5d44d7];return _0x4ac265;};'use strict';var _=require(_0xf324('0x0'));var util=require(_0xf324('0x1'));var moment=require(_0xf324('0x2'));var BPromise=require('bluebird');var rs=require('randomstring');var fs=require('fs');var Redis=require(_0xf324('0x3'));var db=require('../../mysqldb')['db'];var utils=require(_0xf324('0x4'));var logger=require(_0xf324('0x5'))('rpc');var config=require(_0xf324('0x6'));var jayson=require(_0xf324('0x7'));var client=jayson['client'][_0xf324('0x8')]({'port':0x232a});function respondWithRpcPromise(_0x390f7d,_0x1e3722,_0x2290b7){return new BPromise(function(_0x408b34,_0x3906da){return client[_0xf324('0x9')](_0x390f7d,_0x2290b7)[_0xf324('0xa')](function(_0x42fe29){logger['info'](_0xf324('0xb'),_0x1e3722,_0xf324('0xc'));logger[_0xf324('0xd')](_0xf324('0xe'),_0x1e3722,'request\x20sent',JSON[_0xf324('0xf')](_0x42fe29));if(_0x42fe29[_0xf324('0x10')]){if(_0x42fe29[_0xf324('0x10')][_0xf324('0x11')]===0x1f4){logger[_0xf324('0x10')](_0xf324('0xb'),_0x1e3722,_0x42fe29[_0xf324('0x10')][_0xf324('0x12')]);return _0x3906da(_0x42fe29[_0xf324('0x10')][_0xf324('0x12')]);}logger['error']('VtigerField,\x20%s,\x20%s',_0x1e3722,_0x42fe29['error']['message']);return _0x408b34(_0x42fe29[_0xf324('0x10')]['message']);}else{logger[_0xf324('0x13')]('VtigerField,\x20%s,\x20%s',_0x1e3722,_0xf324('0xc'));_0x408b34(_0x42fe29['result'][_0xf324('0x12')]);}})[_0xf324('0x14')](function(_0x1121bc){logger['error'](_0xf324('0xb'),_0x1e3722,_0x1121bc);_0x3906da(_0x1121bc);});});}
\ No newline at end of file
index 88a7321..0e9905d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0995=['create','addConfiguration','/:id','update','delete','destroy','exports','multer','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./intZendeskAccount.controller','isAuthenticated','index','get','/:id/configurations','getConfigurations','getFields'];(function(_0xa1b5fb,_0x41a2bd){var _0x123597=function(_0x1b3157){while(--_0x1b3157){_0xa1b5fb['push'](_0xa1b5fb['shift']());}};_0x123597(++_0x41a2bd);}(_0x0995,0xaf));var _0x5099=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x0995[_0x3dd15e];return _0x231fd0;};'use strict';var multer=require(_0x5099('0x0'));var util=require(_0x5099('0x1'));var path=require(_0x5099('0x2'));var timeout=require(_0x5099('0x3'));var express=require(_0x5099('0x4'));var router=express[_0x5099('0x5')]();var fs_extra=require(_0x5099('0x6'));var auth=require(_0x5099('0x7'));var interaction=require(_0x5099('0x8'));var config=require(_0x5099('0x9'));var controller=require(_0x5099('0xa'));router['get']('/',auth[_0x5099('0xb')](),controller[_0x5099('0xc')]);router[_0x5099('0xd')]('/:id',auth[_0x5099('0xb')](),controller['show']);router['get'](_0x5099('0xe'),auth[_0x5099('0xb')](),controller[_0x5099('0xf')]);router[_0x5099('0xd')]('/:id/fields',auth['isAuthenticated'](),controller[_0x5099('0x10')]);router['post']('/',auth['isAuthenticated'](),controller[_0x5099('0x11')]);router['post'](_0x5099('0xe'),auth[_0x5099('0xb')](),controller[_0x5099('0x12')]);router['put'](_0x5099('0x13'),auth[_0x5099('0xb')](),controller[_0x5099('0x14')]);router[_0x5099('0x15')](_0x5099('0x13'),auth[_0x5099('0xb')](),controller[_0x5099('0x16')]);module[_0x5099('0x17')]=router;
\ No newline at end of file
+var _0x0a21=['Router','fs-extra','../../components/auth/service','../../components/interaction/service','./intZendeskAccount.controller','get','isAuthenticated','/:id','show','/:id/configurations','/:id/fields','getFields','post','addConfiguration','update','exports','util','path','connect-timeout','express'];(function(_0x14426f,_0x15f439){var _0x50db69=function(_0x190b9d){while(--_0x190b9d){_0x14426f['push'](_0x14426f['shift']());}};_0x50db69(++_0x15f439);}(_0x0a21,0x1b4));var _0x10a2=function(_0x3301dc,_0x196f19){_0x3301dc=_0x3301dc-0x0;var _0x4a4d7d=_0x0a21[_0x3301dc];return _0x4a4d7d;};'use strict';var multer=require('multer');var util=require(_0x10a2('0x0'));var path=require(_0x10a2('0x1'));var timeout=require(_0x10a2('0x2'));var express=require(_0x10a2('0x3'));var router=express[_0x10a2('0x4')]();var fs_extra=require(_0x10a2('0x5'));var auth=require(_0x10a2('0x6'));var interaction=require(_0x10a2('0x7'));var config=require('../../config/environment');var controller=require(_0x10a2('0x8'));router[_0x10a2('0x9')]('/',auth[_0x10a2('0xa')](),controller['index']);router[_0x10a2('0x9')](_0x10a2('0xb'),auth[_0x10a2('0xa')](),controller[_0x10a2('0xc')]);router[_0x10a2('0x9')](_0x10a2('0xd'),auth[_0x10a2('0xa')](),controller['getConfigurations']);router['get'](_0x10a2('0xe'),auth['isAuthenticated'](),controller[_0x10a2('0xf')]);router[_0x10a2('0x10')]('/',auth[_0x10a2('0xa')](),controller['create']);router['post'](_0x10a2('0xd'),auth[_0x10a2('0xa')](),controller[_0x10a2('0x11')]);router['put'](_0x10a2('0xb'),auth['isAuthenticated'](),controller[_0x10a2('0x12')]);router['delete'](_0x10a2('0xb'),auth[_0x10a2('0xa')](),controller['destroy']);module[_0x10a2('0x13')]=router;
\ No newline at end of file
index 76dff0a..c141df1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x781d=['sequelize','exports','STRING','username','remoteUri','ENUM','password','token','integrationTab','newTab'];(function(_0x3f843d,_0x4a7188){var _0x55c440=function(_0x2f3c41){while(--_0x2f3c41){_0x3f843d['push'](_0x3f843d['shift']());}};_0x55c440(++_0x4a7188);}(_0x781d,0x14a));var _0xd781=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x781d[_0x3dd15e];return _0x231fd0;};'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')},'password':{'type':Sequelize[_0xd781('0x2')]},'token':{'type':Sequelize[_0xd781('0x2')]},'remoteUri':{'type':Sequelize[_0xd781('0x2')],'unique':_0xd781('0x4')},'authType':{'type':Sequelize[_0xd781('0x5')](_0xd781('0x6'),_0xd781('0x7')),'defaultValue':_0xd781('0x6')},'serverUrl':{'type':Sequelize['STRING'],'allowNull':![]},'type':{'type':Sequelize[_0xd781('0x5')](_0xd781('0x8'),_0xd781('0x9')),'defaultValue':_0xd781('0x8')}};
\ No newline at end of file
+var _0x9ab8=['token','integrationTab','newTab','sequelize','exports','STRING','username','ENUM','password'];(function(_0xfd7d4,_0x47da0f){var _0x471a59=function(_0xc94b6e){while(--_0xc94b6e){_0xfd7d4['push'](_0xfd7d4['shift']());}};_0x471a59(++_0x47da0f);}(_0x9ab8,0x81));var _0x89ab=function(_0x28e378,_0x33e25a){_0x28e378=_0x28e378-0x0;var _0x1a4d02=_0x9ab8[_0x28e378];return _0x1a4d02;};'use strict';var Sequelize=require(_0x89ab('0x0'));module[_0x89ab('0x1')]={'name':{'type':Sequelize[_0x89ab('0x2')]},'description':{'type':Sequelize['STRING']},'username':{'type':Sequelize['STRING'],'unique':_0x89ab('0x3')},'password':{'type':Sequelize['STRING']},'token':{'type':Sequelize[_0x89ab('0x2')]},'remoteUri':{'type':Sequelize[_0x89ab('0x2')],'unique':'remoteUri'},'authType':{'type':Sequelize[_0x89ab('0x4')](_0x89ab('0x5'),_0x89ab('0x6')),'defaultValue':_0x89ab('0x5')},'serverUrl':{'type':Sequelize[_0x89ab('0x2')],'allowNull':![]},'type':{'type':Sequelize[_0x89ab('0x4')](_0x89ab('0x7'),_0x89ab('0x8')),'defaultValue':_0x89ab('0x7')}};
\ No newline at end of file
index 90ec547..da2cdb4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1c7c=['moment','mustache','util','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','api','../../config/utils','../../config/environment','../../mysqldb','../../components/integrations/configuration','sendStatus','status','end','offset','undefined','limit','count','set','json','reject','save','update','then','destroy','name','send','index','map','ZendeskAccount','rawAttributes','key','model','query','keys','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','pick','type','VIRTUAL','filter','merge','options','includeAll','include','findAll','rows','catch','show','params','find','create','body','getConfigurations','findOne','addConfiguration','AccountId','Subjects','getSubjects','channel','Descriptions','getDescriptions','ZendeskConfiguration','ZendeskField','getFields','username','password','token','authType','remoteUri','slice','substring','lastIndexOf','GET','format','%s/%s','ticket_fields','Basic\x20%s','%s:%s','toString','base64','headers','Unknown\x20authentication\x20type','subject','remove','includes','title','position','system_field_options','custom_field_options','test','statusCode','error','stringify','Wrong\x20credentials','eml-format','rimraf','zip-dir','fast-json-patch'];(function(_0x26f434,_0x3eae7c){var _0x1544a8=function(_0x27f54b){while(--_0x27f54b){_0x26f434['push'](_0x26f434['shift']());}};_0x1544a8(++_0x3eae7c);}(_0x1c7c,0x164));var _0xc1c7=function(_0x1e882f,_0xfd94c9){_0x1e882f=_0x1e882f-0x0;var _0x5162a8=_0x1c7c[_0x1e882f];return _0x5162a8;};'use strict';var emlformat=require(_0xc1c7('0x0'));var rimraf=require(_0xc1c7('0x1'));var zipdir=require(_0xc1c7('0x2'));var jsonpatch=require(_0xc1c7('0x3'));var rp=require('request-promise');var moment=require(_0xc1c7('0x4'));var BPromise=require('bluebird');var Mustache=require(_0xc1c7('0x5'));var util=require(_0xc1c7('0x6'));var path=require(_0xc1c7('0x7'));var sox=require(_0xc1c7('0x8'));var csv=require(_0xc1c7('0x9'));var ejs=require(_0xc1c7('0xa'));var fs=require('fs');var fs_extra=require(_0xc1c7('0xb'));var _=require(_0xc1c7('0xc'));var squel=require(_0xc1c7('0xd'));var crypto=require(_0xc1c7('0xe'));var jsforce=require(_0xc1c7('0xf'));var deskjs=require(_0xc1c7('0x10'));var toCsv=require(_0xc1c7('0x9'));var querystring=require(_0xc1c7('0x11'));var Papa=require(_0xc1c7('0x12'));var Redis=require(_0xc1c7('0x13'));var authService=require(_0xc1c7('0x14'));var qs=require('../../components/parsers/qs');var as=require(_0xc1c7('0x15'));var hardwareService=require(_0xc1c7('0x16'));var logger=require('../../config/logger')(_0xc1c7('0x17'));var utils=require(_0xc1c7('0x18'));var config=require(_0xc1c7('0x19'));var licenseUtil=require('../../config/license/util');var db=require(_0xc1c7('0x1a'))['db'];var integrations=require(_0xc1c7('0x1b'));function respondWithStatusCode(_0x376cab,_0x35feaa){_0x35feaa=_0x35feaa||0xcc;return function(_0x2dad6e){if(_0x2dad6e){return _0x376cab[_0xc1c7('0x1c')](_0x35feaa);}return _0x376cab[_0xc1c7('0x1d')](_0x35feaa)[_0xc1c7('0x1e')]();};}function respondWithResult(_0xdfc7d9,_0x1b6905){_0x1b6905=_0x1b6905||0xc8;return function(_0x99b874){if(_0x99b874){return _0xdfc7d9[_0xc1c7('0x1d')](_0x1b6905)['json'](_0x99b874);}};}function respondWithFilteredResult(_0x3e1f0e,_0x335600){return function(_0x21911c){if(_0x21911c){var _0x555b59=typeof _0x335600[_0xc1c7('0x1f')]===_0xc1c7('0x20')&&typeof _0x335600[_0xc1c7('0x21')]===_0xc1c7('0x20');var _0x20439e=_0x21911c[_0xc1c7('0x22')];var _0x21758a=_0x555b59?0x0:_0x335600[_0xc1c7('0x1f')];var _0x5d44e9=_0x555b59?_0x21911c[_0xc1c7('0x22')]:_0x335600[_0xc1c7('0x1f')]+_0x335600[_0xc1c7('0x21')];var _0x1bc9d;if(_0x5d44e9>=_0x20439e){_0x5d44e9=_0x20439e;_0x1bc9d=0xc8;}else{_0x1bc9d=0xce;}_0x3e1f0e['status'](_0x1bc9d);return _0x3e1f0e[_0xc1c7('0x23')]('Content-Range',_0x21758a+'-'+_0x5d44e9+'/'+_0x20439e)[_0xc1c7('0x24')](_0x21911c);}return null;};}function patchUpdates(_0x195c5f){return function(_0x567cd4){try{jsonpatch['apply'](_0x567cd4,_0x195c5f,!![]);}catch(_0x2d006f){return BPromise[_0xc1c7('0x25')](_0x2d006f);}return _0x567cd4[_0xc1c7('0x26')]();};}function saveUpdates(_0x4c6b34,_0x813853){return function(_0x341b41){if(_0x341b41){return _0x341b41[_0xc1c7('0x27')](_0x4c6b34)[_0xc1c7('0x28')](function(_0x2e64c4){return _0x2e64c4;});}return null;};}function removeEntity(_0x3a2483,_0x3180fd){return function(_0x120168){if(_0x120168){return _0x120168[_0xc1c7('0x29')]()[_0xc1c7('0x28')](function(){_0x3a2483[_0xc1c7('0x1d')](0xcc)[_0xc1c7('0x1e')]();});}};}function handleEntityNotFound(_0x33aac7,_0x260a3f){return function(_0xf1c405){if(!_0xf1c405){_0x33aac7[_0xc1c7('0x1c')](0x194);}return _0xf1c405;};}function handleError(_0x5edb34,_0xf0ab9c){_0xf0ab9c=_0xf0ab9c||0x1f4;return function(_0x13a1f9){logger['error'](_0x13a1f9['stack']);if(_0x13a1f9[_0xc1c7('0x2a')]){delete _0x13a1f9['name'];}_0x5edb34['status'](_0xf0ab9c)[_0xc1c7('0x2b')](_0x13a1f9);};}exports[_0xc1c7('0x2c')]=function(_0x46d045,_0x243450){var _0x461360={},_0x4adb81={},_0x574e1c={'count':0x0,'rows':[]};var _0x1b6f97=_[_0xc1c7('0x2d')](db[_0xc1c7('0x2e')][_0xc1c7('0x2f')],function(_0x2e35f1){return{'name':_0x2e35f1['fieldName'],'type':_0x2e35f1['type'][_0xc1c7('0x30')]};});_0x4adb81[_0xc1c7('0x31')]=_['map'](_0x1b6f97,_0xc1c7('0x2a'));_0x4adb81[_0xc1c7('0x32')]=_[_0xc1c7('0x33')](_0x46d045[_0xc1c7('0x32')]);_0x4adb81[_0xc1c7('0x34')]=_[_0xc1c7('0x35')](_0x4adb81[_0xc1c7('0x31')],_0x4adb81['query']);_0x461360[_0xc1c7('0x36')]=_[_0xc1c7('0x35')](_0x4adb81[_0xc1c7('0x31')],qs[_0xc1c7('0x37')](_0x46d045[_0xc1c7('0x32')][_0xc1c7('0x37')]));_0x461360[_0xc1c7('0x36')]=_0x461360[_0xc1c7('0x36')][_0xc1c7('0x38')]?_0x461360['attributes']:_0x4adb81['model'];if(!_0x46d045[_0xc1c7('0x32')][_0xc1c7('0x39')](_0xc1c7('0x3a'))){_0x461360[_0xc1c7('0x21')]=qs[_0xc1c7('0x21')](_0x46d045[_0xc1c7('0x32')][_0xc1c7('0x21')]);_0x461360[_0xc1c7('0x1f')]=qs[_0xc1c7('0x1f')](_0x46d045[_0xc1c7('0x32')][_0xc1c7('0x1f')]);}_0x461360[_0xc1c7('0x3b')]=qs[_0xc1c7('0x3c')](_0x46d045[_0xc1c7('0x32')][_0xc1c7('0x3c')]);_0x461360[_0xc1c7('0x3d')]=qs[_0xc1c7('0x34')](_[_0xc1c7('0x3e')](_0x46d045[_0xc1c7('0x32')],_0x4adb81[_0xc1c7('0x34')]),_0x1b6f97);if(_0x46d045[_0xc1c7('0x32')]['filter']){_0x461360['where']=_['merge'](_0x461360[_0xc1c7('0x3d')],{'$or':_['map'](_0x1b6f97,function(_0x53bf70){if(_0x53bf70[_0xc1c7('0x3f')]!==_0xc1c7('0x40')){var _0x2cd728={};_0x2cd728[_0x53bf70[_0xc1c7('0x2a')]]={'$like':'%'+_0x46d045['query'][_0xc1c7('0x41')]+'%'};return _0x2cd728;}})});}_0x461360=_[_0xc1c7('0x42')]({},_0x461360,_0x46d045[_0xc1c7('0x43')]);var _0x3e5a61={'where':_0x461360[_0xc1c7('0x3d')]};return db[_0xc1c7('0x2e')][_0xc1c7('0x22')](_0x3e5a61)[_0xc1c7('0x28')](function(_0x1d4621){_0x574e1c[_0xc1c7('0x22')]=_0x1d4621;if(_0x46d045[_0xc1c7('0x32')][_0xc1c7('0x44')]){_0x461360[_0xc1c7('0x45')]=[{'all':!![]}];}return db['ZendeskAccount'][_0xc1c7('0x46')](_0x461360);})[_0xc1c7('0x28')](function(_0x508b32){_0x574e1c[_0xc1c7('0x47')]=_0x508b32;return _0x574e1c;})[_0xc1c7('0x28')](respondWithFilteredResult(_0x243450,_0x461360))[_0xc1c7('0x48')](handleError(_0x243450,null));};exports[_0xc1c7('0x49')]=function(_0x46a1b5,_0x2c09de){var _0xd5e06a={'raw':![],'where':{'id':_0x46a1b5[_0xc1c7('0x4a')]['id']}},_0x1e0248={};_0x1e0248[_0xc1c7('0x31')]=_['keys'](db[_0xc1c7('0x2e')][_0xc1c7('0x2f')]);_0x1e0248['query']=_['keys'](_0x46a1b5[_0xc1c7('0x32')]);_0x1e0248[_0xc1c7('0x34')]=_[_0xc1c7('0x35')](_0x1e0248[_0xc1c7('0x31')],_0x1e0248[_0xc1c7('0x32')]);_0xd5e06a['attributes']=_[_0xc1c7('0x35')](_0x1e0248[_0xc1c7('0x31')],qs['fields'](_0x46a1b5['query']['fields']));_0xd5e06a[_0xc1c7('0x36')]=_0xd5e06a[_0xc1c7('0x36')][_0xc1c7('0x38')]?_0xd5e06a['attributes']:_0x1e0248[_0xc1c7('0x31')];if(_0x46a1b5[_0xc1c7('0x32')]['includeAll']){_0xd5e06a[_0xc1c7('0x45')]=[{'all':!![]}];}_0xd5e06a=_[_0xc1c7('0x42')]({},_0xd5e06a,_0x46a1b5[_0xc1c7('0x43')]);return db[_0xc1c7('0x2e')][_0xc1c7('0x4b')](_0xd5e06a)[_0xc1c7('0x28')](handleEntityNotFound(_0x2c09de,null))[_0xc1c7('0x28')](respondWithResult(_0x2c09de,null))[_0xc1c7('0x48')](handleError(_0x2c09de,null));};exports[_0xc1c7('0x4c')]=function(_0x3ec5de,_0xa49f73){return db[_0xc1c7('0x2e')][_0xc1c7('0x4c')](_0x3ec5de[_0xc1c7('0x4d')],{})[_0xc1c7('0x28')](respondWithResult(_0xa49f73,0xc9))[_0xc1c7('0x48')](handleError(_0xa49f73,null));};exports[_0xc1c7('0x27')]=function(_0x1addc8,_0x5da115){if(_0x1addc8[_0xc1c7('0x4d')]['id']){delete _0x1addc8['body']['id'];}return db[_0xc1c7('0x2e')][_0xc1c7('0x4b')]({'where':{'id':_0x1addc8[_0xc1c7('0x4a')]['id']}})['then'](handleEntityNotFound(_0x5da115,null))[_0xc1c7('0x28')](saveUpdates(_0x1addc8[_0xc1c7('0x4d')],null))['then'](respondWithResult(_0x5da115,null))['catch'](handleError(_0x5da115,null));};exports['destroy']=function(_0x302185,_0x415416){return db['ZendeskAccount'][_0xc1c7('0x4b')]({'where':{'id':_0x302185[_0xc1c7('0x4a')]['id']}})[_0xc1c7('0x28')](handleEntityNotFound(_0x415416,null))[_0xc1c7('0x28')](removeEntity(_0x415416,null))[_0xc1c7('0x48')](handleError(_0x415416,null));};exports[_0xc1c7('0x4e')]=function(_0x4cad6a,_0x259e55,_0x568377){var _0x307b5e={};var _0x456ac1={};var _0x37dca9;var _0x557cb6;return db[_0xc1c7('0x2e')][_0xc1c7('0x4f')]({'where':{'id':_0x4cad6a[_0xc1c7('0x4a')]['id']}})[_0xc1c7('0x28')](handleEntityNotFound(_0x259e55,null))[_0xc1c7('0x28')](function(_0x45dfa2){if(_0x45dfa2){_0x37dca9=_0x45dfa2;_0x456ac1[_0xc1c7('0x31')]=_[_0xc1c7('0x33')](db['ZendeskConfiguration'][_0xc1c7('0x2f')]);_0x456ac1[_0xc1c7('0x32')]=_[_0xc1c7('0x33')](_0x4cad6a['query']);_0x456ac1['filters']=_[_0xc1c7('0x35')](_0x456ac1[_0xc1c7('0x31')],_0x456ac1[_0xc1c7('0x32')]);_0x307b5e['attributes']=_[_0xc1c7('0x35')](_0x456ac1['model'],qs[_0xc1c7('0x37')](_0x4cad6a[_0xc1c7('0x32')][_0xc1c7('0x37')]));_0x307b5e[_0xc1c7('0x36')]=_0x307b5e[_0xc1c7('0x36')][_0xc1c7('0x38')]?_0x307b5e[_0xc1c7('0x36')]:_0x456ac1['model'];_0x307b5e[_0xc1c7('0x3b')]=qs[_0xc1c7('0x3c')](_0x4cad6a[_0xc1c7('0x32')]['sort']);_0x307b5e[_0xc1c7('0x3d')]=qs['filters'](_[_0xc1c7('0x3e')](_0x4cad6a['query'],_0x456ac1[_0xc1c7('0x34')]));if(_0x4cad6a[_0xc1c7('0x32')][_0xc1c7('0x41')]){_0x307b5e[_0xc1c7('0x3d')]=_[_0xc1c7('0x42')](_0x307b5e['where'],{'$or':_['map'](_0x307b5e['attributes'],function(_0xbce766){var _0x28231b={};_0x28231b[_0xbce766]={'$like':'%'+_0x4cad6a[_0xc1c7('0x32')][_0xc1c7('0x41')]+'%'};return _0x28231b;})});}_0x307b5e=_[_0xc1c7('0x42')]({},_0x307b5e,_0x4cad6a[_0xc1c7('0x43')]);return _0x37dca9['getConfigurations'](_0x307b5e);}})[_0xc1c7('0x28')](function(_0xe5882){if(_0xe5882){_0x557cb6=_0xe5882[_0xc1c7('0x38')];if(!_0x4cad6a[_0xc1c7('0x32')]['hasOwnProperty'](_0xc1c7('0x3a'))){_0x307b5e[_0xc1c7('0x21')]=qs[_0xc1c7('0x21')](_0x4cad6a['query'][_0xc1c7('0x21')]);_0x307b5e[_0xc1c7('0x1f')]=qs[_0xc1c7('0x1f')](_0x4cad6a[_0xc1c7('0x32')]['offset']);}return _0x37dca9['getConfigurations'](_0x307b5e);}})[_0xc1c7('0x28')](function(_0x203790){if(_0x203790){return _0x203790?{'count':_0x557cb6,'rows':_0x203790}:null;}})['then'](respondWithResult(_0x259e55,null))[_0xc1c7('0x48')](handleError(_0x259e55,null));};exports[_0xc1c7('0x50')]=function(_0x4b27f5,_0x12aaac,_0x6eec68){if(_0x4b27f5['body']['id']){delete _0x4b27f5[_0xc1c7('0x4d')]['id'];}return db[_0xc1c7('0x2e')][_0xc1c7('0x4f')]({'where':{'id':_0x4b27f5[_0xc1c7('0x4a')]['id']}})[_0xc1c7('0x28')](handleEntityNotFound(_0x12aaac,null))[_0xc1c7('0x28')](function(_0x1ed9fc){if(_0x1ed9fc){_0x4b27f5[_0xc1c7('0x4d')][_0xc1c7('0x51')]=_0x1ed9fc['id'];_0x4b27f5[_0xc1c7('0x4d')][_0xc1c7('0x52')]=integrations[_0xc1c7('0x53')](_0x4b27f5[_0xc1c7('0x4d')][_0xc1c7('0x54')],_0x4b27f5[_0xc1c7('0x4d')][_0xc1c7('0x3f')]);_0x4b27f5[_0xc1c7('0x4d')][_0xc1c7('0x55')]=integrations[_0xc1c7('0x56')](_0x4b27f5[_0xc1c7('0x4d')][_0xc1c7('0x54')],_0x4b27f5[_0xc1c7('0x4d')][_0xc1c7('0x3f')]);return db[_0xc1c7('0x57')][_0xc1c7('0x4c')](_0x4b27f5[_0xc1c7('0x4d')],{'include':[{'model':db[_0xc1c7('0x58')],'as':_0xc1c7('0x52')},{'model':db['ZendeskField'],'as':_0xc1c7('0x55')}]});}return null;})[_0xc1c7('0x28')](respondWithResult(_0x12aaac,null))[_0xc1c7('0x48')](handleError(_0x12aaac,null));};exports[_0xc1c7('0x59')]=function(_0x268de7,_0x1cd622,_0x1ccd7d){var _0x29181f='';return db['ZendeskAccount'][_0xc1c7('0x4f')]({'where':{'id':_0x268de7[_0xc1c7('0x4a')]['id']},'attributes':['id',_0xc1c7('0x5a'),_0xc1c7('0x5b'),_0xc1c7('0x5c'),_0xc1c7('0x5d'),_0xc1c7('0x5e')]})[_0xc1c7('0x28')](handleEntityNotFound(_0x1cd622,null))['then'](function(_0x378f7f){if(_0x378f7f){_0x29181f=_0x378f7f[_0xc1c7('0x5e')];var _0x32ed03=_0x29181f[_0xc1c7('0x5f')](-0x1);if(_0x32ed03==='/'){_0x29181f=_0x29181f[_0xc1c7('0x60')](0x0,_0x29181f[_0xc1c7('0x61')](_0x32ed03));}var _0x426698={'method':_0xc1c7('0x62'),'uri':util[_0xc1c7('0x63')](_0xc1c7('0x64'),_0x29181f,_0xc1c7('0x65')),'json':!![]};switch(_0x378f7f[_0xc1c7('0x5d')]){case'password':_0x426698['headers']={'Authorization':util[_0xc1c7('0x63')](_0xc1c7('0x66'),new Buffer(util[_0xc1c7('0x63')](_0xc1c7('0x67'),_0x378f7f[_0xc1c7('0x5a')],_0x378f7f[_0xc1c7('0x5b')]))[_0xc1c7('0x68')](_0xc1c7('0x69')))};break;case _0xc1c7('0x5c'):_0x426698[_0xc1c7('0x6a')]={'Authorization':util[_0xc1c7('0x63')](_0xc1c7('0x66'),new Buffer(util[_0xc1c7('0x63')]('%s/token:%s',_0x378f7f[_0xc1c7('0x5a')],_0x378f7f[_0xc1c7('0x5c')]))[_0xc1c7('0x68')]('base64'))};break;default:throw new db['Sequelize']['ValidationError'](_0xc1c7('0x6b'));}return rp(_0x426698);}})[_0xc1c7('0x28')](function(_0x51dfb2){if(_0x51dfb2){var _0x1f2940=[_0xc1c7('0x6c'),'description','group','assignee'];_[_0xc1c7('0x6d')](_0x51dfb2['ticket_fields'],function(_0x219d44){return _0x1f2940[_0xc1c7('0x6e')](_0x219d44[_0xc1c7('0x3f')]);});return{'count':_0x51dfb2['ticket_fields'][_0xc1c7('0x38')],'rows':_['map'](_0x51dfb2[_0xc1c7('0x65')],function(_0x16832c){return{'id':_0x16832c['id'],'name':_0x16832c['position']>0x7?_0x16832c[_0xc1c7('0x6f')]:_0x16832c[_0xc1c7('0x3f')],'custom':_0x16832c[_0xc1c7('0x70')]>0x7?!![]:![],'options':_0x16832c[_0xc1c7('0x71')]?_0x16832c[_0xc1c7('0x71')]:_0x16832c[_0xc1c7('0x72')]?_0x16832c[_0xc1c7('0x72')]:[]};})};}})[_0xc1c7('0x28')](respondWithResult(_0x1cd622,null))[_0xc1c7('0x48')](function(_0x3eba33){var _0x4bb9bc=_0x268de7[_0xc1c7('0x32')][_0xc1c7('0x73')]?0x1f4:_0x3eba33[_0xc1c7('0x74')]||0x1f4;logger[_0xc1c7('0x75')]('getFields,\x20%s,\x20%s,\x20%s',_0xc1c7('0x59'),_0x4bb9bc,JSON[_0xc1c7('0x76')](_0x3eba33));delete _0x3eba33['name'];if(_0x4bb9bc===0x191){_0x4bb9bc=0x190;}_0x1cd622['status'](_0x4bb9bc)[_0xc1c7('0x2b')](_0x268de7[_0xc1c7('0x32')][_0xc1c7('0x73')]?{'message':_0xc1c7('0x77'),'statusCode':_0x3eba33[_0xc1c7('0x74')]}:_0x3eba33);});};
\ No newline at end of file
+var _0xbc9d=['merge','map','VIRTUAL','filter','options','includeAll','findAll','rows','catch','show','params','length','find','create','update','body','getConfigurations','findOne','ZendeskConfiguration','addConfiguration','AccountId','getSubjects','channel','ZendeskField','Subjects','Descriptions','getFields','username','password','token','authType','remoteUri','slice','substring','lastIndexOf','GET','format','%s/%s','ticket_fields','headers','%s:%s','toString','base64','Basic\x20%s','Sequelize','ValidationError','Unknown\x20authentication\x20type','subject','description','assignee','remove','includes','position','system_field_options','custom_field_options','test','statusCode','getFields,\x20%s,\x20%s,\x20%s','stringify','Wrong\x20credentials','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','util','path','sox','to-csv','ejs','fs-extra','lodash','crypto','jsforce','desk.js','querystring','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','../../components/integrations/configuration','sendStatus','status','end','json','offset','undefined','limit','count','set','reject','save','then','destroy','error','stack','send','index','ZendeskAccount','rawAttributes','type','key','name','query','keys','filters','intersection','model','attributes','fields','nolimit','order','sort','where','pick'];(function(_0x2688d5,_0x45db72){var _0x372637=function(_0x51c20d){while(--_0x51c20d){_0x2688d5['push'](_0x2688d5['shift']());}};_0x372637(++_0x45db72);}(_0xbc9d,0xb4));var _0xdbc9=function(_0x223a00,_0x1f1e9f){_0x223a00=_0x223a00-0x0;var _0x152f91=_0xbc9d[_0x223a00];return _0x152f91;};'use strict';var emlformat=require(_0xdbc9('0x0'));var rimraf=require(_0xdbc9('0x1'));var zipdir=require(_0xdbc9('0x2'));var jsonpatch=require(_0xdbc9('0x3'));var rp=require(_0xdbc9('0x4'));var moment=require('moment');var BPromise=require('bluebird');var Mustache=require('mustache');var util=require(_0xdbc9('0x5'));var path=require(_0xdbc9('0x6'));var sox=require(_0xdbc9('0x7'));var csv=require(_0xdbc9('0x8'));var ejs=require(_0xdbc9('0x9'));var fs=require('fs');var fs_extra=require(_0xdbc9('0xa'));var _=require(_0xdbc9('0xb'));var squel=require('squel');var crypto=require(_0xdbc9('0xc'));var jsforce=require(_0xdbc9('0xd'));var deskjs=require(_0xdbc9('0xe'));var toCsv=require('to-csv');var querystring=require(_0xdbc9('0xf'));var Papa=require('papaparse');var Redis=require('ioredis');var authService=require(_0xdbc9('0x10'));var qs=require(_0xdbc9('0x11'));var as=require(_0xdbc9('0x12'));var hardwareService=require(_0xdbc9('0x13'));var logger=require('../../config/logger')(_0xdbc9('0x14'));var utils=require(_0xdbc9('0x15'));var config=require(_0xdbc9('0x16'));var licenseUtil=require(_0xdbc9('0x17'));var db=require(_0xdbc9('0x18'))['db'];var integrations=require(_0xdbc9('0x19'));function respondWithStatusCode(_0x48bc83,_0x567e71){_0x567e71=_0x567e71||0xcc;return function(_0x3d0fdd){if(_0x3d0fdd){return _0x48bc83[_0xdbc9('0x1a')](_0x567e71);}return _0x48bc83[_0xdbc9('0x1b')](_0x567e71)[_0xdbc9('0x1c')]();};}function respondWithResult(_0x53495d,_0x4a9dcb){_0x4a9dcb=_0x4a9dcb||0xc8;return function(_0x2b7bd){if(_0x2b7bd){return _0x53495d[_0xdbc9('0x1b')](_0x4a9dcb)[_0xdbc9('0x1d')](_0x2b7bd);}};}function respondWithFilteredResult(_0x4c7b4f,_0x1b4616){return function(_0x1abee8){if(_0x1abee8){var _0x4fdb81=typeof _0x1b4616[_0xdbc9('0x1e')]===_0xdbc9('0x1f')&&typeof _0x1b4616[_0xdbc9('0x20')]===_0xdbc9('0x1f');var _0x1f22f4=_0x1abee8[_0xdbc9('0x21')];var _0x9f343d=_0x4fdb81?0x0:_0x1b4616[_0xdbc9('0x1e')];var _0x2ad952=_0x4fdb81?_0x1abee8[_0xdbc9('0x21')]:_0x1b4616['offset']+_0x1b4616[_0xdbc9('0x20')];var _0x497be2;if(_0x2ad952>=_0x1f22f4){_0x2ad952=_0x1f22f4;_0x497be2=0xc8;}else{_0x497be2=0xce;}_0x4c7b4f[_0xdbc9('0x1b')](_0x497be2);return _0x4c7b4f[_0xdbc9('0x22')]('Content-Range',_0x9f343d+'-'+_0x2ad952+'/'+_0x1f22f4)[_0xdbc9('0x1d')](_0x1abee8);}return null;};}function patchUpdates(_0x5367dc){return function(_0x569f32){try{jsonpatch['apply'](_0x569f32,_0x5367dc,!![]);}catch(_0x4f3b5d){return BPromise[_0xdbc9('0x23')](_0x4f3b5d);}return _0x569f32[_0xdbc9('0x24')]();};}function saveUpdates(_0x570ad9,_0x16dcf7){return function(_0x20563e){if(_0x20563e){return _0x20563e['update'](_0x570ad9)[_0xdbc9('0x25')](function(_0x6b788){return _0x6b788;});}return null;};}function removeEntity(_0x1b1c0d,_0x119230){return function(_0x3400e7){if(_0x3400e7){return _0x3400e7[_0xdbc9('0x26')]()[_0xdbc9('0x25')](function(){_0x1b1c0d[_0xdbc9('0x1b')](0xcc)[_0xdbc9('0x1c')]();});}};}function handleEntityNotFound(_0x4a868b,_0x550bef){return function(_0xe309ae){if(!_0xe309ae){_0x4a868b[_0xdbc9('0x1a')](0x194);}return _0xe309ae;};}function handleError(_0x1053ca,_0x24fdec){_0x24fdec=_0x24fdec||0x1f4;return function(_0x50c3ee){logger[_0xdbc9('0x27')](_0x50c3ee[_0xdbc9('0x28')]);if(_0x50c3ee['name']){delete _0x50c3ee['name'];}_0x1053ca[_0xdbc9('0x1b')](_0x24fdec)[_0xdbc9('0x29')](_0x50c3ee);};}exports[_0xdbc9('0x2a')]=function(_0x59bfd2,_0x13a432){var _0x539e57={},_0x561f8e={},_0x210a40={'count':0x0,'rows':[]};var _0x49da36=_['map'](db[_0xdbc9('0x2b')][_0xdbc9('0x2c')],function(_0x1cb557){return{'name':_0x1cb557['fieldName'],'type':_0x1cb557[_0xdbc9('0x2d')][_0xdbc9('0x2e')]};});_0x561f8e['model']=_['map'](_0x49da36,_0xdbc9('0x2f'));_0x561f8e[_0xdbc9('0x30')]=_[_0xdbc9('0x31')](_0x59bfd2[_0xdbc9('0x30')]);_0x561f8e[_0xdbc9('0x32')]=_[_0xdbc9('0x33')](_0x561f8e[_0xdbc9('0x34')],_0x561f8e['query']);_0x539e57[_0xdbc9('0x35')]=_[_0xdbc9('0x33')](_0x561f8e[_0xdbc9('0x34')],qs[_0xdbc9('0x36')](_0x59bfd2[_0xdbc9('0x30')][_0xdbc9('0x36')]));_0x539e57['attributes']=_0x539e57[_0xdbc9('0x35')]['length']?_0x539e57['attributes']:_0x561f8e['model'];if(!_0x59bfd2['query']['hasOwnProperty'](_0xdbc9('0x37'))){_0x539e57[_0xdbc9('0x20')]=qs[_0xdbc9('0x20')](_0x59bfd2['query'][_0xdbc9('0x20')]);_0x539e57[_0xdbc9('0x1e')]=qs[_0xdbc9('0x1e')](_0x59bfd2[_0xdbc9('0x30')][_0xdbc9('0x1e')]);}_0x539e57[_0xdbc9('0x38')]=qs['sort'](_0x59bfd2[_0xdbc9('0x30')][_0xdbc9('0x39')]);_0x539e57[_0xdbc9('0x3a')]=qs['filters'](_[_0xdbc9('0x3b')](_0x59bfd2[_0xdbc9('0x30')],_0x561f8e[_0xdbc9('0x32')]),_0x49da36);if(_0x59bfd2[_0xdbc9('0x30')]['filter']){_0x539e57['where']=_[_0xdbc9('0x3c')](_0x539e57[_0xdbc9('0x3a')],{'$or':_[_0xdbc9('0x3d')](_0x49da36,function(_0x1ef970){if(_0x1ef970['type']!==_0xdbc9('0x3e')){var _0x3827be={};_0x3827be[_0x1ef970[_0xdbc9('0x2f')]]={'$like':'%'+_0x59bfd2['query'][_0xdbc9('0x3f')]+'%'};return _0x3827be;}})});}_0x539e57=_[_0xdbc9('0x3c')]({},_0x539e57,_0x59bfd2[_0xdbc9('0x40')]);var _0x523c79={'where':_0x539e57[_0xdbc9('0x3a')]};return db[_0xdbc9('0x2b')]['count'](_0x523c79)['then'](function(_0xfc34d5){_0x210a40[_0xdbc9('0x21')]=_0xfc34d5;if(_0x59bfd2[_0xdbc9('0x30')][_0xdbc9('0x41')]){_0x539e57['include']=[{'all':!![]}];}return db[_0xdbc9('0x2b')][_0xdbc9('0x42')](_0x539e57);})['then'](function(_0x8445b8){_0x210a40[_0xdbc9('0x43')]=_0x8445b8;return _0x210a40;})['then'](respondWithFilteredResult(_0x13a432,_0x539e57))[_0xdbc9('0x44')](handleError(_0x13a432,null));};exports[_0xdbc9('0x45')]=function(_0x2adb23,_0x3415c3){var _0x3ed4de={'raw':![],'where':{'id':_0x2adb23[_0xdbc9('0x46')]['id']}},_0x1cd538={};_0x1cd538['model']=_['keys'](db[_0xdbc9('0x2b')][_0xdbc9('0x2c')]);_0x1cd538[_0xdbc9('0x30')]=_[_0xdbc9('0x31')](_0x2adb23[_0xdbc9('0x30')]);_0x1cd538[_0xdbc9('0x32')]=_[_0xdbc9('0x33')](_0x1cd538[_0xdbc9('0x34')],_0x1cd538[_0xdbc9('0x30')]);_0x3ed4de[_0xdbc9('0x35')]=_[_0xdbc9('0x33')](_0x1cd538['model'],qs['fields'](_0x2adb23[_0xdbc9('0x30')][_0xdbc9('0x36')]));_0x3ed4de[_0xdbc9('0x35')]=_0x3ed4de[_0xdbc9('0x35')][_0xdbc9('0x47')]?_0x3ed4de[_0xdbc9('0x35')]:_0x1cd538[_0xdbc9('0x34')];if(_0x2adb23[_0xdbc9('0x30')]['includeAll']){_0x3ed4de['include']=[{'all':!![]}];}_0x3ed4de=_[_0xdbc9('0x3c')]({},_0x3ed4de,_0x2adb23[_0xdbc9('0x40')]);return db[_0xdbc9('0x2b')][_0xdbc9('0x48')](_0x3ed4de)[_0xdbc9('0x25')](handleEntityNotFound(_0x3415c3,null))[_0xdbc9('0x25')](respondWithResult(_0x3415c3,null))[_0xdbc9('0x44')](handleError(_0x3415c3,null));};exports[_0xdbc9('0x49')]=function(_0x43e3ec,_0x589557){return db[_0xdbc9('0x2b')][_0xdbc9('0x49')](_0x43e3ec['body'],{})['then'](respondWithResult(_0x589557,0xc9))[_0xdbc9('0x44')](handleError(_0x589557,null));};exports[_0xdbc9('0x4a')]=function(_0x133a13,_0x49a55c){if(_0x133a13[_0xdbc9('0x4b')]['id']){delete _0x133a13[_0xdbc9('0x4b')]['id'];}return db[_0xdbc9('0x2b')][_0xdbc9('0x48')]({'where':{'id':_0x133a13['params']['id']}})[_0xdbc9('0x25')](handleEntityNotFound(_0x49a55c,null))[_0xdbc9('0x25')](saveUpdates(_0x133a13[_0xdbc9('0x4b')],null))[_0xdbc9('0x25')](respondWithResult(_0x49a55c,null))['catch'](handleError(_0x49a55c,null));};exports[_0xdbc9('0x26')]=function(_0x36c70e,_0x3f49b7){return db[_0xdbc9('0x2b')][_0xdbc9('0x48')]({'where':{'id':_0x36c70e[_0xdbc9('0x46')]['id']}})[_0xdbc9('0x25')](handleEntityNotFound(_0x3f49b7,null))[_0xdbc9('0x25')](removeEntity(_0x3f49b7,null))['catch'](handleError(_0x3f49b7,null));};exports[_0xdbc9('0x4c')]=function(_0x4d09e1,_0x3f493e,_0x4279bc){var _0x53771a={};var _0x561737={};var _0xc7335d;var _0x4b55df;return db[_0xdbc9('0x2b')][_0xdbc9('0x4d')]({'where':{'id':_0x4d09e1[_0xdbc9('0x46')]['id']}})['then'](handleEntityNotFound(_0x3f493e,null))[_0xdbc9('0x25')](function(_0x1c52e6){if(_0x1c52e6){_0xc7335d=_0x1c52e6;_0x561737[_0xdbc9('0x34')]=_[_0xdbc9('0x31')](db[_0xdbc9('0x4e')][_0xdbc9('0x2c')]);_0x561737[_0xdbc9('0x30')]=_[_0xdbc9('0x31')](_0x4d09e1['query']);_0x561737['filters']=_['intersection'](_0x561737[_0xdbc9('0x34')],_0x561737[_0xdbc9('0x30')]);_0x53771a[_0xdbc9('0x35')]=_['intersection'](_0x561737['model'],qs[_0xdbc9('0x36')](_0x4d09e1[_0xdbc9('0x30')]['fields']));_0x53771a['attributes']=_0x53771a[_0xdbc9('0x35')][_0xdbc9('0x47')]?_0x53771a[_0xdbc9('0x35')]:_0x561737[_0xdbc9('0x34')];_0x53771a[_0xdbc9('0x38')]=qs[_0xdbc9('0x39')](_0x4d09e1['query'][_0xdbc9('0x39')]);_0x53771a[_0xdbc9('0x3a')]=qs[_0xdbc9('0x32')](_['pick'](_0x4d09e1[_0xdbc9('0x30')],_0x561737[_0xdbc9('0x32')]));if(_0x4d09e1[_0xdbc9('0x30')]['filter']){_0x53771a[_0xdbc9('0x3a')]=_['merge'](_0x53771a[_0xdbc9('0x3a')],{'$or':_[_0xdbc9('0x3d')](_0x53771a[_0xdbc9('0x35')],function(_0x26ed1c){var _0x148061={};_0x148061[_0x26ed1c]={'$like':'%'+_0x4d09e1[_0xdbc9('0x30')]['filter']+'%'};return _0x148061;})});}_0x53771a=_[_0xdbc9('0x3c')]({},_0x53771a,_0x4d09e1['options']);return _0xc7335d[_0xdbc9('0x4c')](_0x53771a);}})[_0xdbc9('0x25')](function(_0x53fcd6){if(_0x53fcd6){_0x4b55df=_0x53fcd6[_0xdbc9('0x47')];if(!_0x4d09e1[_0xdbc9('0x30')]['hasOwnProperty']('nolimit')){_0x53771a[_0xdbc9('0x20')]=qs[_0xdbc9('0x20')](_0x4d09e1[_0xdbc9('0x30')]['limit']);_0x53771a[_0xdbc9('0x1e')]=qs[_0xdbc9('0x1e')](_0x4d09e1['query'][_0xdbc9('0x1e')]);}return _0xc7335d[_0xdbc9('0x4c')](_0x53771a);}})['then'](function(_0x4876f9){if(_0x4876f9){return _0x4876f9?{'count':_0x4b55df,'rows':_0x4876f9}:null;}})[_0xdbc9('0x25')](respondWithResult(_0x3f493e,null))[_0xdbc9('0x44')](handleError(_0x3f493e,null));};exports[_0xdbc9('0x4f')]=function(_0xa8b4d9,_0x3e93d3,_0x14cbf4){if(_0xa8b4d9[_0xdbc9('0x4b')]['id']){delete _0xa8b4d9[_0xdbc9('0x4b')]['id'];}return db['ZendeskAccount'][_0xdbc9('0x4d')]({'where':{'id':_0xa8b4d9[_0xdbc9('0x46')]['id']}})[_0xdbc9('0x25')](handleEntityNotFound(_0x3e93d3,null))[_0xdbc9('0x25')](function(_0x38f7da){if(_0x38f7da){_0xa8b4d9[_0xdbc9('0x4b')][_0xdbc9('0x50')]=_0x38f7da['id'];_0xa8b4d9[_0xdbc9('0x4b')]['Subjects']=integrations[_0xdbc9('0x51')](_0xa8b4d9['body'][_0xdbc9('0x52')],_0xa8b4d9['body'][_0xdbc9('0x2d')]);_0xa8b4d9[_0xdbc9('0x4b')]['Descriptions']=integrations['getDescriptions'](_0xa8b4d9['body'][_0xdbc9('0x52')],_0xa8b4d9[_0xdbc9('0x4b')][_0xdbc9('0x2d')]);return db['ZendeskConfiguration'][_0xdbc9('0x49')](_0xa8b4d9[_0xdbc9('0x4b')],{'include':[{'model':db[_0xdbc9('0x53')],'as':_0xdbc9('0x54')},{'model':db[_0xdbc9('0x53')],'as':_0xdbc9('0x55')}]});}return null;})[_0xdbc9('0x25')](respondWithResult(_0x3e93d3,null))[_0xdbc9('0x44')](handleError(_0x3e93d3,null));};exports[_0xdbc9('0x56')]=function(_0x5e6522,_0x2787d9,_0x2c3223){var _0x511778='';return db['ZendeskAccount'][_0xdbc9('0x4d')]({'where':{'id':_0x5e6522[_0xdbc9('0x46')]['id']},'attributes':['id',_0xdbc9('0x57'),_0xdbc9('0x58'),_0xdbc9('0x59'),_0xdbc9('0x5a'),_0xdbc9('0x5b')]})['then'](handleEntityNotFound(_0x2787d9,null))[_0xdbc9('0x25')](function(_0x19af46){if(_0x19af46){_0x511778=_0x19af46[_0xdbc9('0x5b')];var _0x4a412e=_0x511778[_0xdbc9('0x5c')](-0x1);if(_0x4a412e==='/'){_0x511778=_0x511778[_0xdbc9('0x5d')](0x0,_0x511778[_0xdbc9('0x5e')](_0x4a412e));}var _0x2b4905={'method':_0xdbc9('0x5f'),'uri':util[_0xdbc9('0x60')](_0xdbc9('0x61'),_0x511778,_0xdbc9('0x62')),'json':!![]};switch(_0x19af46[_0xdbc9('0x5a')]){case _0xdbc9('0x58'):_0x2b4905[_0xdbc9('0x63')]={'Authorization':util[_0xdbc9('0x60')]('Basic\x20%s',new Buffer(util['format'](_0xdbc9('0x64'),_0x19af46['username'],_0x19af46['password']))[_0xdbc9('0x65')](_0xdbc9('0x66')))};break;case _0xdbc9('0x59'):_0x2b4905['headers']={'Authorization':util[_0xdbc9('0x60')](_0xdbc9('0x67'),new Buffer(util[_0xdbc9('0x60')]('%s/token:%s',_0x19af46[_0xdbc9('0x57')],_0x19af46[_0xdbc9('0x59')]))['toString'](_0xdbc9('0x66')))};break;default:throw new db[(_0xdbc9('0x68'))][(_0xdbc9('0x69'))](_0xdbc9('0x6a'));}return rp(_0x2b4905);}})[_0xdbc9('0x25')](function(_0x501754){if(_0x501754){var _0x4f984b=[_0xdbc9('0x6b'),_0xdbc9('0x6c'),'group',_0xdbc9('0x6d')];_[_0xdbc9('0x6e')](_0x501754[_0xdbc9('0x62')],function(_0x5802fc){return _0x4f984b[_0xdbc9('0x6f')](_0x5802fc[_0xdbc9('0x2d')]);});return{'count':_0x501754[_0xdbc9('0x62')][_0xdbc9('0x47')],'rows':_[_0xdbc9('0x3d')](_0x501754[_0xdbc9('0x62')],function(_0x1b053a){return{'id':_0x1b053a['id'],'name':_0x1b053a[_0xdbc9('0x70')]>0x7?_0x1b053a['title']:_0x1b053a[_0xdbc9('0x2d')],'custom':_0x1b053a[_0xdbc9('0x70')]>0x7?!![]:![],'options':_0x1b053a[_0xdbc9('0x71')]?_0x1b053a[_0xdbc9('0x71')]:_0x1b053a['custom_field_options']?_0x1b053a[_0xdbc9('0x72')]:[]};})};}})['then'](respondWithResult(_0x2787d9,null))['catch'](function(_0x34ebeb){var _0x3400d0=_0x5e6522['query'][_0xdbc9('0x73')]?0x1f4:_0x34ebeb[_0xdbc9('0x74')]||0x1f4;logger[_0xdbc9('0x27')](_0xdbc9('0x75'),_0xdbc9('0x56'),_0x3400d0,JSON[_0xdbc9('0x76')](_0x34ebeb));delete _0x34ebeb[_0xdbc9('0x2f')];if(_0x3400d0===0x191){_0x3400d0=0x190;}_0x2787d9['status'](_0x3400d0)['send'](_0x5e6522[_0xdbc9('0x30')][_0xdbc9('0x73')]?{'message':_0xdbc9('0x77'),'statusCode':_0x34ebeb['statusCode']}:_0x34ebeb);});};
\ No newline at end of file
index 81571c9..1bb3039 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xfc7d=['../../config/logger','api','moment','bluebird','request-promise','path','rimraf','../../config/environment','./intZendeskAccount.attributes','../../components/integrations/configuration','exports','ZendeskAccount','int_zendesk_accounts','lodash','util'];(function(_0x2adb3a,_0x2ce77e){var _0x515aec=function(_0x36c432){while(--_0x36c432){_0x2adb3a['push'](_0x2adb3a['shift']());}};_0x515aec(++_0x2ce77e);}(_0xfc7d,0x184));var _0xdfc7=function(_0x3ab51d,_0x2fa01d){_0x3ab51d=_0x3ab51d-0x0;var _0x29a04e=_0xfc7d[_0x3ab51d];return _0x29a04e;};'use strict';var _=require(_0xdfc7('0x0'));var util=require(_0xdfc7('0x1'));var logger=require(_0xdfc7('0x2'))(_0xdfc7('0x3'));var moment=require(_0xdfc7('0x4'));var BPromise=require(_0xdfc7('0x5'));var rp=require(_0xdfc7('0x6'));var fs=require('fs');var path=require(_0xdfc7('0x7'));var rimraf=require(_0xdfc7('0x8'));var config=require(_0xdfc7('0x9'));var attributes=require(_0xdfc7('0xa'));var integrations=require(_0xdfc7('0xb'));module[_0xdfc7('0xc')]=function(_0x1c42f0,_0x5e56a9){return _0x1c42f0['define'](_0xdfc7('0xd'),attributes,{'tableName':_0xdfc7('0xe'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x3a39=['ZendeskAccount','int_zendesk_accounts','util','../../config/logger','api','moment','bluebird','request-promise','path','rimraf','../../config/environment','../../components/integrations/configuration','exports','define'];(function(_0x10f70d,_0x3c4f1f){var _0x4b62ea=function(_0x39a779){while(--_0x39a779){_0x10f70d['push'](_0x10f70d['shift']());}};_0x4b62ea(++_0x3c4f1f);}(_0x3a39,0x1ec));var _0x93a3=function(_0x3bf83f,_0x181cac){_0x3bf83f=_0x3bf83f-0x0;var _0x22c4a9=_0x3a39[_0x3bf83f];return _0x22c4a9;};'use strict';var _=require('lodash');var util=require(_0x93a3('0x0'));var logger=require(_0x93a3('0x1'))(_0x93a3('0x2'));var moment=require(_0x93a3('0x3'));var BPromise=require(_0x93a3('0x4'));var rp=require(_0x93a3('0x5'));var fs=require('fs');var path=require(_0x93a3('0x6'));var rimraf=require(_0x93a3('0x7'));var config=require(_0x93a3('0x8'));var attributes=require('./intZendeskAccount.attributes');var integrations=require(_0x93a3('0x9'));module[_0x93a3('0xa')]=function(_0x3b4b4c,_0x269df8){return _0x3b4b4c[_0x93a3('0xb')](_0x93a3('0xc'),attributes,{'tableName':_0x93a3('0xd'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index fff1106..0f4a6e5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x805c=['../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','request','ZendeskAccount,\x20%s,\x20%s','debug','request\x20sent','stringify','error','code','message','info','catch','ZendeskAccount','options','raw','where','attributes','include','map','model','then','GetZendeskAccount','ShowZendeskAccount','lodash','util','moment','bluebird','randomstring'];(function(_0x35c4cc,_0x37c19f){var _0x570580=function(_0x296dcc){while(--_0x296dcc){_0x35c4cc['push'](_0x35c4cc['shift']());}};_0x570580(++_0x37c19f);}(_0x805c,0x103));var _0xc805=function(_0x2c6ac6,_0x248811){_0x2c6ac6=_0x2c6ac6-0x0;var _0x1454e0=_0x805c[_0x2c6ac6];return _0x1454e0;};'use strict';var _=require(_0xc805('0x0'));var util=require(_0xc805('0x1'));var moment=require(_0xc805('0x2'));var BPromise=require(_0xc805('0x3'));var rs=require(_0xc805('0x4'));var fs=require('fs');var Redis=require('ioredis');var db=require('../../mysqldb')['db'];var utils=require(_0xc805('0x5'));var logger=require(_0xc805('0x6'))(_0xc805('0x7'));var config=require(_0xc805('0x8'));var jayson=require(_0xc805('0x9'));var client=jayson[_0xc805('0xa')][_0xc805('0xb')]({'port':0x232a});function respondWithRpcPromise(_0xe7c932,_0x53a738,_0xfb70d4){return new BPromise(function(_0x19150a,_0x408e6b){return client[_0xc805('0xc')](_0xe7c932,_0xfb70d4)['then'](function(_0xdf802d){logger['info'](_0xc805('0xd'),_0x53a738,'request\x20sent');logger[_0xc805('0xe')]('ZendeskAccount,\x20%s,\x20%s,\x20%s',_0x53a738,_0xc805('0xf'),JSON[_0xc805('0x10')](_0xdf802d));if(_0xdf802d[_0xc805('0x11')]){if(_0xdf802d[_0xc805('0x11')][_0xc805('0x12')]===0x1f4){logger[_0xc805('0x11')](_0xc805('0xd'),_0x53a738,_0xdf802d[_0xc805('0x11')][_0xc805('0x13')]);return _0x408e6b(_0xdf802d[_0xc805('0x11')][_0xc805('0x13')]);}logger['error'](_0xc805('0xd'),_0x53a738,_0xdf802d[_0xc805('0x11')]['message']);return _0x19150a(_0xdf802d[_0xc805('0x11')]['message']);}else{logger[_0xc805('0x14')](_0xc805('0xd'),_0x53a738,_0xc805('0xf'));_0x19150a(_0xdf802d['result']['message']);}})[_0xc805('0x15')](function(_0x4b91f6){logger[_0xc805('0x11')](_0xc805('0xd'),_0x53a738,_0x4b91f6);_0x408e6b(_0x4b91f6);});});}exports['GetZendeskAccount']=function(_0x9be034){var _0x232b9f=this;return new Promise(function(_0x3cb1ac,_0x4e0e2d){return db[_0xc805('0x16')]['findAll']({'raw':_0x9be034[_0xc805('0x17')]?_0x9be034[_0xc805('0x17')][_0xc805('0x18')]===undefined?!![]:![]:!![],'where':_0x9be034['options']?_0x9be034[_0xc805('0x17')][_0xc805('0x19')]||null:null,'attributes':_0x9be034[_0xc805('0x17')]?_0x9be034[_0xc805('0x17')][_0xc805('0x1a')]||null:null,'limit':_0x9be034[_0xc805('0x17')]?_0x9be034[_0xc805('0x17')]['limit']||null:null,'include':_0x9be034[_0xc805('0x17')]?_0x9be034['options'][_0xc805('0x1b')]?_[_0xc805('0x1c')](_0x9be034[_0xc805('0x17')][_0xc805('0x1b')],function(_0x352c2b){return{'model':db[_0x352c2b['model']],'as':_0x352c2b['as'],'attributes':_0x352c2b[_0xc805('0x1a')],'include':_0x352c2b[_0xc805('0x1b')]?_[_0xc805('0x1c')](_0x352c2b[_0xc805('0x1b')],function(_0x51c1d7){return{'model':db[_0x51c1d7[_0xc805('0x1d')]],'as':_0x51c1d7['as'],'attributes':_0x51c1d7[_0xc805('0x1a')],'include':_0x51c1d7['include']?_[_0xc805('0x1c')](_0x51c1d7[_0xc805('0x1b')],function(_0x20320e){return{'model':db[_0x20320e[_0xc805('0x1d')]],'as':_0x20320e['as'],'attributes':_0x20320e[_0xc805('0x1a')]};}):[]};}):[]};}):[]:[]})[_0xc805('0x1e')](function(_0x4fcc20){logger[_0xc805('0x14')](_0xc805('0x1f'),_0x9be034);logger['debug']('GetZendeskAccount',_0x9be034,JSON['stringify'](_0x4fcc20));_0x3cb1ac(_0x4fcc20);})[_0xc805('0x15')](function(_0x4be862){logger['error'](_0xc805('0x1f'),_0x4be862[_0xc805('0x13')],_0x9be034);_0x4e0e2d(_0x232b9f[_0xc805('0x11')](0x1f4,_0x4be862[_0xc805('0x13')]));});});};exports[_0xc805('0x20')]=function(_0x501b5c){var _0x415f52=this;return new Promise(function(_0x3a6e75,_0x24779d){return db[_0xc805('0x16')]['find']({'raw':_0x501b5c['options']?_0x501b5c[_0xc805('0x17')][_0xc805('0x18')]===undefined?!![]:![]:!![],'where':_0x501b5c[_0xc805('0x17')]?_0x501b5c['options']['where']||null:null,'attributes':_0x501b5c[_0xc805('0x17')]?_0x501b5c['options'][_0xc805('0x1a')]||null:null,'include':_0x501b5c[_0xc805('0x17')]?_0x501b5c[_0xc805('0x17')][_0xc805('0x1b')]?_[_0xc805('0x1c')](_0x501b5c[_0xc805('0x17')]['include'],function(_0x16f158){return{'model':db[_0x16f158[_0xc805('0x1d')]],'as':_0x16f158['as'],'attributes':_0x16f158[_0xc805('0x1a')],'include':_0x16f158[_0xc805('0x1b')]?_[_0xc805('0x1c')](_0x16f158[_0xc805('0x1b')],function(_0xd3ed06){return{'model':db[_0xd3ed06['model']],'as':_0xd3ed06['as'],'attributes':_0xd3ed06['attributes'],'include':_0xd3ed06[_0xc805('0x1b')]?_[_0xc805('0x1c')](_0xd3ed06['include'],function(_0x6bd27e){return{'model':db[_0x6bd27e['model']],'as':_0x6bd27e['as'],'attributes':_0x6bd27e[_0xc805('0x1a')]};}):[]};}):[]};}):[]:[]})[_0xc805('0x1e')](function(_0xb1fad3){logger[_0xc805('0x14')](_0xc805('0x20'),_0x501b5c);logger[_0xc805('0xe')](_0xc805('0x20'),_0x501b5c,JSON[_0xc805('0x10')](_0xb1fad3));_0x3a6e75(_0xb1fad3);})[_0xc805('0x15')](function(_0x5b0ba5){logger[_0xc805('0x11')](_0xc805('0x20'),_0x5b0ba5[_0xc805('0x13')],_0x501b5c);_0x24779d(_0x415f52['error'](0x1f4,_0x5b0ba5[_0xc805('0x13')]));});});};
\ No newline at end of file
+var _0x8631=['info','ZendeskAccount,\x20%s,\x20%s','request\x20sent','debug','ZendeskAccount,\x20%s,\x20%s,\x20%s','stringify','error','code','message','GetZendeskAccount','findAll','options','raw','attributes','include','map','model','then','ShowZendeskAccount','ZendeskAccount','find','util','moment','ioredis','../../config/utils','../../config/logger','rpc','jayson/promise','client','http'];(function(_0xefd992,_0x3aa307){var _0x3b11d6=function(_0x16e42f){while(--_0x16e42f){_0xefd992['push'](_0xefd992['shift']());}};_0x3b11d6(++_0x3aa307);}(_0x8631,0x15f));var _0x1863=function(_0x465028,_0x4570ac){_0x465028=_0x465028-0x0;var _0xb783d4=_0x8631[_0x465028];return _0xb783d4;};'use strict';var _=require('lodash');var util=require(_0x1863('0x0'));var moment=require(_0x1863('0x1'));var BPromise=require('bluebird');var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x1863('0x2'));var db=require('../../mysqldb')['db'];var utils=require(_0x1863('0x3'));var logger=require(_0x1863('0x4'))(_0x1863('0x5'));var config=require('../../config/environment');var jayson=require(_0x1863('0x6'));var client=jayson[_0x1863('0x7')][_0x1863('0x8')]({'port':0x232a});function respondWithRpcPromise(_0x57cdd0,_0x269a72,_0x357d50){return new BPromise(function(_0x346ec1,_0x538c8f){return client['request'](_0x57cdd0,_0x357d50)['then'](function(_0x7f1586){logger[_0x1863('0x9')](_0x1863('0xa'),_0x269a72,_0x1863('0xb'));logger[_0x1863('0xc')](_0x1863('0xd'),_0x269a72,_0x1863('0xb'),JSON[_0x1863('0xe')](_0x7f1586));if(_0x7f1586[_0x1863('0xf')]){if(_0x7f1586[_0x1863('0xf')][_0x1863('0x10')]===0x1f4){logger['error'](_0x1863('0xa'),_0x269a72,_0x7f1586['error'][_0x1863('0x11')]);return _0x538c8f(_0x7f1586['error'][_0x1863('0x11')]);}logger[_0x1863('0xf')](_0x1863('0xa'),_0x269a72,_0x7f1586[_0x1863('0xf')]['message']);return _0x346ec1(_0x7f1586[_0x1863('0xf')][_0x1863('0x11')]);}else{logger[_0x1863('0x9')](_0x1863('0xa'),_0x269a72,'request\x20sent');_0x346ec1(_0x7f1586['result'][_0x1863('0x11')]);}})['catch'](function(_0x553e67){logger[_0x1863('0xf')](_0x1863('0xa'),_0x269a72,_0x553e67);_0x538c8f(_0x553e67);});});}exports[_0x1863('0x12')]=function(_0x29579f){var _0x27995a=this;return new Promise(function(_0x3d1dfd,_0x2a2034){return db['ZendeskAccount'][_0x1863('0x13')]({'raw':_0x29579f[_0x1863('0x14')]?_0x29579f[_0x1863('0x14')][_0x1863('0x15')]===undefined?!![]:![]:!![],'where':_0x29579f['options']?_0x29579f[_0x1863('0x14')]['where']||null:null,'attributes':_0x29579f[_0x1863('0x14')]?_0x29579f[_0x1863('0x14')][_0x1863('0x16')]||null:null,'limit':_0x29579f['options']?_0x29579f[_0x1863('0x14')]['limit']||null:null,'include':_0x29579f['options']?_0x29579f['options'][_0x1863('0x17')]?_[_0x1863('0x18')](_0x29579f[_0x1863('0x14')][_0x1863('0x17')],function(_0x326a60){return{'model':db[_0x326a60[_0x1863('0x19')]],'as':_0x326a60['as'],'attributes':_0x326a60['attributes'],'include':_0x326a60[_0x1863('0x17')]?_[_0x1863('0x18')](_0x326a60[_0x1863('0x17')],function(_0x536ea0){return{'model':db[_0x536ea0[_0x1863('0x19')]],'as':_0x536ea0['as'],'attributes':_0x536ea0[_0x1863('0x16')],'include':_0x536ea0[_0x1863('0x17')]?_[_0x1863('0x18')](_0x536ea0['include'],function(_0xacd8d6){return{'model':db[_0xacd8d6[_0x1863('0x19')]],'as':_0xacd8d6['as'],'attributes':_0xacd8d6[_0x1863('0x16')]};}):[]};}):[]};}):[]:[]})[_0x1863('0x1a')](function(_0x5aea63){logger['info'](_0x1863('0x12'),_0x29579f);logger[_0x1863('0xc')](_0x1863('0x12'),_0x29579f,JSON[_0x1863('0xe')](_0x5aea63));_0x3d1dfd(_0x5aea63);})['catch'](function(_0x340303){logger[_0x1863('0xf')]('GetZendeskAccount',_0x340303[_0x1863('0x11')],_0x29579f);_0x2a2034(_0x27995a[_0x1863('0xf')](0x1f4,_0x340303[_0x1863('0x11')]));});});};exports[_0x1863('0x1b')]=function(_0x26b829){var _0x1932f0=this;return new Promise(function(_0x22b866,_0x124d0f){return db[_0x1863('0x1c')][_0x1863('0x1d')]({'raw':_0x26b829[_0x1863('0x14')]?_0x26b829[_0x1863('0x14')][_0x1863('0x15')]===undefined?!![]:![]:!![],'where':_0x26b829[_0x1863('0x14')]?_0x26b829[_0x1863('0x14')]['where']||null:null,'attributes':_0x26b829[_0x1863('0x14')]?_0x26b829['options']['attributes']||null:null,'include':_0x26b829[_0x1863('0x14')]?_0x26b829[_0x1863('0x14')][_0x1863('0x17')]?_[_0x1863('0x18')](_0x26b829['options'][_0x1863('0x17')],function(_0x1dd780){return{'model':db[_0x1dd780[_0x1863('0x19')]],'as':_0x1dd780['as'],'attributes':_0x1dd780['attributes'],'include':_0x1dd780[_0x1863('0x17')]?_[_0x1863('0x18')](_0x1dd780[_0x1863('0x17')],function(_0x11264e){return{'model':db[_0x11264e[_0x1863('0x19')]],'as':_0x11264e['as'],'attributes':_0x11264e[_0x1863('0x16')],'include':_0x11264e[_0x1863('0x17')]?_[_0x1863('0x18')](_0x11264e[_0x1863('0x17')],function(_0x4de77e){return{'model':db[_0x4de77e[_0x1863('0x19')]],'as':_0x4de77e['as'],'attributes':_0x4de77e['attributes']};}):[]};}):[]};}):[]:[]})[_0x1863('0x1a')](function(_0x5151ee){logger[_0x1863('0x9')]('ShowZendeskAccount',_0x26b829);logger[_0x1863('0xc')](_0x1863('0x1b'),_0x26b829,JSON['stringify'](_0x5151ee));_0x22b866(_0x5151ee);})['catch'](function(_0x5f1134){logger[_0x1863('0xf')](_0x1863('0x1b'),_0x5f1134[_0x1863('0x11')],_0x26b829);_0x124d0f(_0x1932f0[_0x1863('0xf')](0x1f4,_0x5f1134[_0x1863('0x11')]));});});};
\ No newline at end of file
index 49efe4f..93357a5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf4eb=['put','update','delete','/:id','destroy','exports','multer','Router','../../components/interaction/service','../../config/environment','./intZendeskConfiguration.controller','get','isAuthenticated','index','/:id/fields','getFields','/:id/subjects','getSubjects','/:id/tags','getTags','create','post','setTags'];(function(_0x1b156c,_0x4e2a93){var _0x1ce859=function(_0x4f4d98){while(--_0x4f4d98){_0x1b156c['push'](_0x1b156c['shift']());}};_0x1ce859(++_0x4e2a93);}(_0xf4eb,0xec));var _0xbf4e=function(_0x4ff49f,_0x513dca){_0x4ff49f=_0x4ff49f-0x0;var _0x47a48a=_0xf4eb[_0x4ff49f];return _0x47a48a;};'use strict';var multer=require(_0xbf4e('0x0'));var util=require('util');var path=require('path');var timeout=require('connect-timeout');var express=require('express');var router=express[_0xbf4e('0x1')]();var fs_extra=require('fs-extra');var auth=require('../../components/auth/service');var interaction=require(_0xbf4e('0x2'));var config=require(_0xbf4e('0x3'));var controller=require(_0xbf4e('0x4'));router[_0xbf4e('0x5')]('/',auth[_0xbf4e('0x6')](),controller[_0xbf4e('0x7')]);router[_0xbf4e('0x5')]('/:id',auth[_0xbf4e('0x6')](),controller['show']);router['get'](_0xbf4e('0x8'),auth[_0xbf4e('0x6')](),controller[_0xbf4e('0x9')]);router[_0xbf4e('0x5')](_0xbf4e('0xa'),auth[_0xbf4e('0x6')](),controller[_0xbf4e('0xb')]);router['get']('/:id/descriptions',auth[_0xbf4e('0x6')](),controller['getDescriptions']);router[_0xbf4e('0x5')](_0xbf4e('0xc'),auth['isAuthenticated'](),controller[_0xbf4e('0xd')]);router['post']('/',auth['isAuthenticated'](),controller[_0xbf4e('0xe')]);router[_0xbf4e('0xf')](_0xbf4e('0xc'),auth[_0xbf4e('0x6')](),controller[_0xbf4e('0x10')]);router[_0xbf4e('0x11')]('/:id',auth['isAuthenticated'](),controller[_0xbf4e('0x12')]);router[_0xbf4e('0x13')](_0xbf4e('0x14'),auth['isAuthenticated'](),controller[_0xbf4e('0x15')]);module[_0xbf4e('0x16')]=router;
\ No newline at end of file
+var _0x4fc2=['get','/:id/fields','/:id/subjects','getSubjects','/:id/descriptions','getDescriptions','/:id/tags','post','create','put','update','destroy','exports','multer','util','path','connect-timeout','Router','fs-extra','../../components/auth/service','../../config/environment','./intZendeskConfiguration.controller','isAuthenticated','index','/:id','show'];(function(_0x31de25,_0x3bcd63){var _0x276132=function(_0x53260a){while(--_0x53260a){_0x31de25['push'](_0x31de25['shift']());}};_0x276132(++_0x3bcd63);}(_0x4fc2,0x111));var _0x24fc=function(_0x3daf63,_0x25528a){_0x3daf63=_0x3daf63-0x0;var _0x558174=_0x4fc2[_0x3daf63];return _0x558174;};'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')](_0x24fc('0xe'),auth[_0x24fc('0x9')](),controller['getFields']);router[_0x24fc('0xd')](_0x24fc('0xf'),auth[_0x24fc('0x9')](),controller[_0x24fc('0x10')]);router[_0x24fc('0xd')](_0x24fc('0x11'),auth[_0x24fc('0x9')](),controller[_0x24fc('0x12')]);router['get'](_0x24fc('0x13'),auth[_0x24fc('0x9')](),controller['getTags']);router[_0x24fc('0x14')]('/',auth[_0x24fc('0x9')](),controller[_0x24fc('0x15')]);router[_0x24fc('0x14')](_0x24fc('0x13'),auth[_0x24fc('0x9')](),controller['setTags']);router[_0x24fc('0x16')](_0x24fc('0xb'),auth[_0x24fc('0x9')](),controller[_0x24fc('0x17')]);router['delete'](_0x24fc('0xb'),auth['isAuthenticated'](),controller[_0x24fc('0x18')]);module[_0x24fc('0x19')]=router;
\ No newline at end of file
index 25db3e9..ad603e5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x62f7=['exports','STRING','sequelize'];(function(_0x2b2513,_0x237f34){var _0x3dfa11=function(_0xcb39e3){while(--_0xcb39e3){_0x2b2513['push'](_0x2b2513['shift']());}};_0x3dfa11(++_0x237f34);}(_0x62f7,0xbc));var _0x762f=function(_0x10633a,_0x10c81e){_0x10633a=_0x10633a-0x0;var _0x149184=_0x62f7[_0x10633a];return _0x149184;};'use strict';var Sequelize=require(_0x762f('0x0'));module[_0x762f('0x1')]={'name':{'type':Sequelize[_0x762f('0x2')]},'description':{'type':Sequelize[_0x762f('0x2')]}};
\ No newline at end of file
+var _0x6078=['sequelize','exports','STRING'];(function(_0x21528d,_0x342d06){var _0x12adac=function(_0x438a57){while(--_0x438a57){_0x21528d['push'](_0x21528d['shift']());}};_0x12adac(++_0x342d06);}(_0x6078,0x72));var _0x8607=function(_0x559dbf,_0x249d39){_0x559dbf=_0x559dbf-0x0;var _0x578eb7=_0x6078[_0x559dbf];return _0x578eb7;};'use strict';var Sequelize=require(_0x8607('0x0'));module[_0x8607('0x1')]={'name':{'type':Sequelize[_0x8607('0x2')]},'description':{'type':Sequelize[_0x8607('0x2')]}};
\ No newline at end of file
index 879844f..fe08354 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x64c5=['nolimit','order','sort','where','pick','filter','merge','VIRTUAL','options','include','ZendeskConfiguration','findAll','rows','catch','show','params','includeAll','find','create','body','update','getFields','findOne','ZendeskField','hasOwnProperty','getSubjects','getDescriptions','getTags','Tag','setTags','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','to-csv','ejs','fs-extra','lodash','squel','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../config/license/hardware','api','../../config/utils','../../config/environment','../../config/license/util','sendStatus','status','json','offset','undefined','count','limit','set','Content-Range','reject','save','then','destroy','error','stack','name','map','rawAttributes','fieldName','type','key','keys','query','filters','intersection','model','attributes','fields','length'];(function(_0x3662e6,_0x1ad7a0){var _0x42fabe=function(_0x3a8c9a){while(--_0x3a8c9a){_0x3662e6['push'](_0x3662e6['shift']());}};_0x42fabe(++_0x1ad7a0);}(_0x64c5,0x1c7));var _0x564c=function(_0xe4ec85,_0x35fdda){_0xe4ec85=_0xe4ec85-0x0;var _0x245406=_0x64c5[_0xe4ec85];return _0x245406;};'use strict';var emlformat=require(_0x564c('0x0'));var rimraf=require(_0x564c('0x1'));var zipdir=require(_0x564c('0x2'));var jsonpatch=require(_0x564c('0x3'));var rp=require(_0x564c('0x4'));var moment=require(_0x564c('0x5'));var BPromise=require(_0x564c('0x6'));var Mustache=require(_0x564c('0x7'));var util=require(_0x564c('0x8'));var path=require(_0x564c('0x9'));var sox=require('sox');var csv=require(_0x564c('0xa'));var ejs=require(_0x564c('0xb'));var fs=require('fs');var fs_extra=require(_0x564c('0xc'));var _=require(_0x564c('0xd'));var squel=require(_0x564c('0xe'));var crypto=require('crypto');var jsforce=require('jsforce');var deskjs=require(_0x564c('0xf'));var toCsv=require('to-csv');var querystring=require(_0x564c('0x10'));var Papa=require(_0x564c('0x11'));var Redis=require(_0x564c('0x12'));var authService=require(_0x564c('0x13'));var qs=require(_0x564c('0x14'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x564c('0x15'));var logger=require('../../config/logger')(_0x564c('0x16'));var utils=require(_0x564c('0x17'));var config=require(_0x564c('0x18'));var licenseUtil=require(_0x564c('0x19'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x2a4ae1,_0x52d086){_0x52d086=_0x52d086||0xcc;return function(_0x1236c2){if(_0x1236c2){return _0x2a4ae1[_0x564c('0x1a')](_0x52d086);}return _0x2a4ae1['status'](_0x52d086)['end']();};}function respondWithResult(_0x482dc6,_0x5a5357){_0x5a5357=_0x5a5357||0xc8;return function(_0x21ccc6){if(_0x21ccc6){return _0x482dc6[_0x564c('0x1b')](_0x5a5357)[_0x564c('0x1c')](_0x21ccc6);}};}function respondWithFilteredResult(_0x17a9fc,_0x505bd9){return function(_0x2f1f5f){if(_0x2f1f5f){var _0x436b82=typeof _0x505bd9[_0x564c('0x1d')]===_0x564c('0x1e')&&typeof _0x505bd9['limit']==='undefined';var _0x4658dd=_0x2f1f5f[_0x564c('0x1f')];var _0x40d1cb=_0x436b82?0x0:_0x505bd9[_0x564c('0x1d')];var _0xc66240=_0x436b82?_0x2f1f5f[_0x564c('0x1f')]:_0x505bd9['offset']+_0x505bd9[_0x564c('0x20')];var _0xe0e6fe;if(_0xc66240>=_0x4658dd){_0xc66240=_0x4658dd;_0xe0e6fe=0xc8;}else{_0xe0e6fe=0xce;}_0x17a9fc['status'](_0xe0e6fe);return _0x17a9fc[_0x564c('0x21')](_0x564c('0x22'),_0x40d1cb+'-'+_0xc66240+'/'+_0x4658dd)['json'](_0x2f1f5f);}return null;};}function patchUpdates(_0xa8b877){return function(_0x5a4326){try{jsonpatch['apply'](_0x5a4326,_0xa8b877,!![]);}catch(_0x4af0f1){return BPromise[_0x564c('0x23')](_0x4af0f1);}return _0x5a4326[_0x564c('0x24')]();};}function saveUpdates(_0x53dcd4,_0x18a39e){return function(_0x307d7a){if(_0x307d7a){return _0x307d7a['update'](_0x53dcd4)[_0x564c('0x25')](function(_0x13ec5b){return _0x13ec5b;});}return null;};}function removeEntity(_0x295e35,_0x1eb9f2){return function(_0x5780bd){if(_0x5780bd){return _0x5780bd[_0x564c('0x26')]()[_0x564c('0x25')](function(){_0x295e35[_0x564c('0x1b')](0xcc)['end']();});}};}function handleEntityNotFound(_0x54ef9e,_0x545277){return function(_0xdeebfa){if(!_0xdeebfa){_0x54ef9e['sendStatus'](0x194);}return _0xdeebfa;};}function handleError(_0x247689,_0x3c0f26){_0x3c0f26=_0x3c0f26||0x1f4;return function(_0x57935f){logger[_0x564c('0x27')](_0x57935f[_0x564c('0x28')]);if(_0x57935f[_0x564c('0x29')]){delete _0x57935f[_0x564c('0x29')];}_0x247689['status'](_0x3c0f26)['send'](_0x57935f);};}exports['index']=function(_0x5e7d01,_0x150e53){var _0x4c35a6={},_0x415df9={},_0x4dd889={'count':0x0,'rows':[]};var _0xef6ca1=_[_0x564c('0x2a')](db['ZendeskConfiguration'][_0x564c('0x2b')],function(_0x4fdbc5){return{'name':_0x4fdbc5[_0x564c('0x2c')],'type':_0x4fdbc5[_0x564c('0x2d')][_0x564c('0x2e')]};});_0x415df9['model']=_[_0x564c('0x2a')](_0xef6ca1,'name');_0x415df9['query']=_[_0x564c('0x2f')](_0x5e7d01[_0x564c('0x30')]);_0x415df9[_0x564c('0x31')]=_[_0x564c('0x32')](_0x415df9[_0x564c('0x33')],_0x415df9[_0x564c('0x30')]);_0x4c35a6[_0x564c('0x34')]=_['intersection'](_0x415df9[_0x564c('0x33')],qs[_0x564c('0x35')](_0x5e7d01['query'][_0x564c('0x35')]));_0x4c35a6[_0x564c('0x34')]=_0x4c35a6[_0x564c('0x34')][_0x564c('0x36')]?_0x4c35a6[_0x564c('0x34')]:_0x415df9[_0x564c('0x33')];if(!_0x5e7d01[_0x564c('0x30')]['hasOwnProperty'](_0x564c('0x37'))){_0x4c35a6['limit']=qs['limit'](_0x5e7d01[_0x564c('0x30')]['limit']);_0x4c35a6[_0x564c('0x1d')]=qs[_0x564c('0x1d')](_0x5e7d01['query'][_0x564c('0x1d')]);}_0x4c35a6[_0x564c('0x38')]=qs[_0x564c('0x39')](_0x5e7d01[_0x564c('0x30')]['sort']);_0x4c35a6[_0x564c('0x3a')]=qs[_0x564c('0x31')](_[_0x564c('0x3b')](_0x5e7d01[_0x564c('0x30')],_0x415df9[_0x564c('0x31')]),_0xef6ca1);if(_0x5e7d01[_0x564c('0x30')][_0x564c('0x3c')]){_0x4c35a6[_0x564c('0x3a')]=_[_0x564c('0x3d')](_0x4c35a6[_0x564c('0x3a')],{'$or':_[_0x564c('0x2a')](_0xef6ca1,function(_0x407794){if(_0x407794[_0x564c('0x2d')]!==_0x564c('0x3e')){var _0xb2e8e3={};_0xb2e8e3[_0x407794['name']]={'$like':'%'+_0x5e7d01[_0x564c('0x30')][_0x564c('0x3c')]+'%'};return _0xb2e8e3;}})});}_0x4c35a6=_[_0x564c('0x3d')]({},_0x4c35a6,_0x5e7d01[_0x564c('0x3f')]);var _0x304a27={'where':_0x4c35a6[_0x564c('0x3a')]};return db['ZendeskConfiguration']['count'](_0x304a27)['then'](function(_0x4e9360){_0x4dd889[_0x564c('0x1f')]=_0x4e9360;if(_0x5e7d01[_0x564c('0x30')]['includeAll']){_0x4c35a6[_0x564c('0x40')]=[{'all':!![]}];}return db[_0x564c('0x41')][_0x564c('0x42')](_0x4c35a6);})['then'](function(_0x2b0f8f){_0x4dd889[_0x564c('0x43')]=_0x2b0f8f;return _0x4dd889;})[_0x564c('0x25')](respondWithFilteredResult(_0x150e53,_0x4c35a6))[_0x564c('0x44')](handleError(_0x150e53,null));};exports[_0x564c('0x45')]=function(_0x16c9a4,_0x3a191f){var _0x29a5ce={'raw':![],'where':{'id':_0x16c9a4[_0x564c('0x46')]['id']}},_0xbc9d1={};_0xbc9d1[_0x564c('0x33')]=_[_0x564c('0x2f')](db[_0x564c('0x41')][_0x564c('0x2b')]);_0xbc9d1['query']=_[_0x564c('0x2f')](_0x16c9a4[_0x564c('0x30')]);_0xbc9d1[_0x564c('0x31')]=_[_0x564c('0x32')](_0xbc9d1[_0x564c('0x33')],_0xbc9d1[_0x564c('0x30')]);_0x29a5ce['attributes']=_['intersection'](_0xbc9d1[_0x564c('0x33')],qs[_0x564c('0x35')](_0x16c9a4[_0x564c('0x30')][_0x564c('0x35')]));_0x29a5ce[_0x564c('0x34')]=_0x29a5ce['attributes'][_0x564c('0x36')]?_0x29a5ce[_0x564c('0x34')]:_0xbc9d1[_0x564c('0x33')];if(_0x16c9a4['query'][_0x564c('0x47')]){_0x29a5ce[_0x564c('0x40')]=[{'all':!![]}];}_0x29a5ce=_[_0x564c('0x3d')]({},_0x29a5ce,_0x16c9a4[_0x564c('0x3f')]);return db[_0x564c('0x41')][_0x564c('0x48')](_0x29a5ce)[_0x564c('0x25')](handleEntityNotFound(_0x3a191f,null))['then'](respondWithResult(_0x3a191f,null))[_0x564c('0x44')](handleError(_0x3a191f,null));};exports[_0x564c('0x49')]=function(_0x135670,_0x486d53){return db['ZendeskConfiguration'][_0x564c('0x49')](_0x135670[_0x564c('0x4a')],{})[_0x564c('0x25')](respondWithResult(_0x486d53,0xc9))[_0x564c('0x44')](handleError(_0x486d53,null));};exports[_0x564c('0x4b')]=function(_0x434b41,_0x50c32b){if(_0x434b41[_0x564c('0x4a')]['id']){delete _0x434b41['body']['id'];}return db['ZendeskConfiguration']['find']({'where':{'id':_0x434b41[_0x564c('0x46')]['id']}})[_0x564c('0x25')](handleEntityNotFound(_0x50c32b,null))[_0x564c('0x25')](saveUpdates(_0x434b41[_0x564c('0x4a')],null))[_0x564c('0x25')](respondWithResult(_0x50c32b,null))[_0x564c('0x44')](handleError(_0x50c32b,null));};exports[_0x564c('0x26')]=function(_0x5704ac,_0x4bc486){return db[_0x564c('0x41')]['find']({'where':{'id':_0x5704ac[_0x564c('0x46')]['id']}})[_0x564c('0x25')](handleEntityNotFound(_0x4bc486,null))['then'](removeEntity(_0x4bc486,null))[_0x564c('0x44')](handleError(_0x4bc486,null));};exports[_0x564c('0x4c')]=function(_0x3dd829,_0x293aa0,_0xb5f4f9){var _0x33006e={};var _0x8875b4={};var _0x35614b;var _0x500a0d;return db[_0x564c('0x41')][_0x564c('0x4d')]({'where':{'id':_0x3dd829['params']['id']}})[_0x564c('0x25')](handleEntityNotFound(_0x293aa0,null))[_0x564c('0x25')](function(_0x12eb89){if(_0x12eb89){_0x35614b=_0x12eb89;_0x8875b4[_0x564c('0x33')]=_[_0x564c('0x2f')](db[_0x564c('0x4e')][_0x564c('0x2b')]);_0x8875b4[_0x564c('0x30')]=_[_0x564c('0x2f')](_0x3dd829[_0x564c('0x30')]);_0x8875b4[_0x564c('0x31')]=_[_0x564c('0x32')](_0x8875b4['model'],_0x8875b4[_0x564c('0x30')]);_0x33006e[_0x564c('0x34')]=_[_0x564c('0x32')](_0x8875b4[_0x564c('0x33')],qs[_0x564c('0x35')](_0x3dd829[_0x564c('0x30')][_0x564c('0x35')]));_0x33006e[_0x564c('0x34')]=_0x33006e[_0x564c('0x34')][_0x564c('0x36')]?_0x33006e[_0x564c('0x34')]:_0x8875b4[_0x564c('0x33')];_0x33006e[_0x564c('0x38')]=qs[_0x564c('0x39')](_0x3dd829[_0x564c('0x30')]['sort']);_0x33006e[_0x564c('0x3a')]=qs[_0x564c('0x31')](_['pick'](_0x3dd829[_0x564c('0x30')],_0x8875b4[_0x564c('0x31')]));if(_0x3dd829['query'][_0x564c('0x3c')]){_0x33006e[_0x564c('0x3a')]=_[_0x564c('0x3d')](_0x33006e[_0x564c('0x3a')],{'$or':_['map'](_0x33006e[_0x564c('0x34')],function(_0x3316df){var _0x38e0ec={};_0x38e0ec[_0x3316df]={'$like':'%'+_0x3dd829['query'][_0x564c('0x3c')]+'%'};return _0x38e0ec;})});}_0x33006e=_['merge']({},_0x33006e,_0x3dd829[_0x564c('0x3f')]);return _0x35614b[_0x564c('0x4c')](_0x33006e);}})[_0x564c('0x25')](function(_0x1dde8e){if(_0x1dde8e){_0x500a0d=_0x1dde8e[_0x564c('0x36')];if(!_0x3dd829[_0x564c('0x30')][_0x564c('0x4f')](_0x564c('0x37'))){_0x33006e['limit']=qs['limit'](_0x3dd829[_0x564c('0x30')]['limit']);_0x33006e[_0x564c('0x1d')]=qs[_0x564c('0x1d')](_0x3dd829[_0x564c('0x30')][_0x564c('0x1d')]);}return _0x35614b['getFields'](_0x33006e);}})[_0x564c('0x25')](function(_0x1b9068){if(_0x1b9068){return _0x1b9068?{'count':_0x500a0d,'rows':_0x1b9068}:null;}})[_0x564c('0x25')](respondWithResult(_0x293aa0,null))['catch'](handleError(_0x293aa0,null));};exports[_0x564c('0x50')]=function(_0xafaa57,_0x10715b,_0x4d5dab){var _0xcc746f={};var _0x37a9d7={};var _0x30032b;var _0x244474;return db['ZendeskConfiguration'][_0x564c('0x4d')]({'where':{'id':_0xafaa57[_0x564c('0x46')]['id']}})[_0x564c('0x25')](handleEntityNotFound(_0x10715b,null))[_0x564c('0x25')](function(_0x53ab9d){if(_0x53ab9d){_0x30032b=_0x53ab9d;_0x37a9d7[_0x564c('0x33')]=_[_0x564c('0x2f')](db[_0x564c('0x4e')][_0x564c('0x2b')]);_0x37a9d7[_0x564c('0x30')]=_[_0x564c('0x2f')](_0xafaa57[_0x564c('0x30')]);_0x37a9d7['filters']=_['intersection'](_0x37a9d7[_0x564c('0x33')],_0x37a9d7[_0x564c('0x30')]);_0xcc746f[_0x564c('0x34')]=_[_0x564c('0x32')](_0x37a9d7[_0x564c('0x33')],qs[_0x564c('0x35')](_0xafaa57[_0x564c('0x30')][_0x564c('0x35')]));_0xcc746f[_0x564c('0x34')]=_0xcc746f[_0x564c('0x34')][_0x564c('0x36')]?_0xcc746f[_0x564c('0x34')]:_0x37a9d7[_0x564c('0x33')];_0xcc746f[_0x564c('0x38')]=qs[_0x564c('0x39')](_0xafaa57[_0x564c('0x30')][_0x564c('0x39')]);_0xcc746f[_0x564c('0x3a')]=qs[_0x564c('0x31')](_[_0x564c('0x3b')](_0xafaa57[_0x564c('0x30')],_0x37a9d7[_0x564c('0x31')]));if(_0xafaa57['query'][_0x564c('0x3c')]){_0xcc746f[_0x564c('0x3a')]=_['merge'](_0xcc746f[_0x564c('0x3a')],{'$or':_[_0x564c('0x2a')](_0xcc746f[_0x564c('0x34')],function(_0x2849dd){var _0x38558c={};_0x38558c[_0x2849dd]={'$like':'%'+_0xafaa57[_0x564c('0x30')][_0x564c('0x3c')]+'%'};return _0x38558c;})});}_0xcc746f=_[_0x564c('0x3d')]({},_0xcc746f,_0xafaa57[_0x564c('0x3f')]);return _0x30032b['getSubjects'](_0xcc746f);}})['then'](function(_0x261e12){if(_0x261e12){_0x244474=_0x261e12[_0x564c('0x36')];if(!_0xafaa57[_0x564c('0x30')][_0x564c('0x4f')](_0x564c('0x37'))){_0xcc746f['limit']=qs[_0x564c('0x20')](_0xafaa57[_0x564c('0x30')][_0x564c('0x20')]);_0xcc746f['offset']=qs['offset'](_0xafaa57['query'][_0x564c('0x1d')]);}return _0x30032b['getSubjects'](_0xcc746f);}})[_0x564c('0x25')](function(_0x26be85){if(_0x26be85){return _0x26be85?{'count':_0x244474,'rows':_0x26be85}:null;}})[_0x564c('0x25')](respondWithResult(_0x10715b,null))[_0x564c('0x44')](handleError(_0x10715b,null));};exports['getDescriptions']=function(_0x1a9424,_0x1a48e8,_0x4779e3){var _0x174812={};var _0x1db466={};var _0x5cda74;var _0x55c957;return db[_0x564c('0x41')][_0x564c('0x4d')]({'where':{'id':_0x1a9424['params']['id']}})[_0x564c('0x25')](handleEntityNotFound(_0x1a48e8,null))[_0x564c('0x25')](function(_0x3b0255){if(_0x3b0255){_0x5cda74=_0x3b0255;_0x1db466[_0x564c('0x33')]=_[_0x564c('0x2f')](db['ZendeskField'][_0x564c('0x2b')]);_0x1db466[_0x564c('0x30')]=_['keys'](_0x1a9424[_0x564c('0x30')]);_0x1db466['filters']=_[_0x564c('0x32')](_0x1db466[_0x564c('0x33')],_0x1db466['query']);_0x174812[_0x564c('0x34')]=_[_0x564c('0x32')](_0x1db466[_0x564c('0x33')],qs[_0x564c('0x35')](_0x1a9424['query'][_0x564c('0x35')]));_0x174812['attributes']=_0x174812[_0x564c('0x34')][_0x564c('0x36')]?_0x174812[_0x564c('0x34')]:_0x1db466[_0x564c('0x33')];_0x174812[_0x564c('0x38')]=qs[_0x564c('0x39')](_0x1a9424['query']['sort']);_0x174812[_0x564c('0x3a')]=qs[_0x564c('0x31')](_[_0x564c('0x3b')](_0x1a9424[_0x564c('0x30')],_0x1db466['filters']));if(_0x1a9424[_0x564c('0x30')][_0x564c('0x3c')]){_0x174812['where']=_[_0x564c('0x3d')](_0x174812[_0x564c('0x3a')],{'$or':_[_0x564c('0x2a')](_0x174812['attributes'],function(_0x5db33b){var _0x25d3ba={};_0x25d3ba[_0x5db33b]={'$like':'%'+_0x1a9424[_0x564c('0x30')][_0x564c('0x3c')]+'%'};return _0x25d3ba;})});}_0x174812=_[_0x564c('0x3d')]({},_0x174812,_0x1a9424['options']);return _0x5cda74[_0x564c('0x51')](_0x174812);}})[_0x564c('0x25')](function(_0x6dd1dd){if(_0x6dd1dd){_0x55c957=_0x6dd1dd['length'];if(!_0x1a9424[_0x564c('0x30')]['hasOwnProperty'](_0x564c('0x37'))){_0x174812[_0x564c('0x20')]=qs[_0x564c('0x20')](_0x1a9424[_0x564c('0x30')][_0x564c('0x20')]);_0x174812['offset']=qs[_0x564c('0x1d')](_0x1a9424[_0x564c('0x30')][_0x564c('0x1d')]);}return _0x5cda74[_0x564c('0x51')](_0x174812);}})['then'](function(_0x2e9a8c){if(_0x2e9a8c){return _0x2e9a8c?{'count':_0x55c957,'rows':_0x2e9a8c}:null;}})[_0x564c('0x25')](respondWithResult(_0x1a48e8,null))[_0x564c('0x44')](handleError(_0x1a48e8,null));};exports[_0x564c('0x52')]=function(_0x1f870e,_0x5049a0,_0x1becab){var _0x1abd96={};var _0x51b4d1={};var _0x4755c0;var _0x32c6b8;return db[_0x564c('0x41')][_0x564c('0x4d')]({'where':{'id':_0x1f870e['params']['id']}})[_0x564c('0x25')](handleEntityNotFound(_0x5049a0,null))[_0x564c('0x25')](function(_0x1e178b){if(_0x1e178b){_0x4755c0=_0x1e178b;_0x51b4d1['model']=_[_0x564c('0x2f')](db[_0x564c('0x53')][_0x564c('0x2b')]);_0x51b4d1[_0x564c('0x30')]=_[_0x564c('0x2f')](_0x1f870e[_0x564c('0x30')]);_0x51b4d1[_0x564c('0x31')]=_['intersection'](_0x51b4d1['model'],_0x51b4d1[_0x564c('0x30')]);_0x1abd96[_0x564c('0x34')]=_[_0x564c('0x32')](_0x51b4d1['model'],qs[_0x564c('0x35')](_0x1f870e[_0x564c('0x30')]['fields']));_0x1abd96[_0x564c('0x34')]=_0x1abd96[_0x564c('0x34')]['length']?_0x1abd96[_0x564c('0x34')]:_0x51b4d1[_0x564c('0x33')];_0x1abd96['order']=qs[_0x564c('0x39')](_0x1f870e[_0x564c('0x30')][_0x564c('0x39')]);_0x1abd96[_0x564c('0x3a')]=qs['filters'](_[_0x564c('0x3b')](_0x1f870e[_0x564c('0x30')],_0x51b4d1[_0x564c('0x31')]));if(_0x1f870e[_0x564c('0x30')]['filter']){_0x1abd96[_0x564c('0x3a')]=_[_0x564c('0x3d')](_0x1abd96['where'],{'$or':_[_0x564c('0x2a')](_0x1abd96['attributes'],function(_0x31bd33){var _0x57e293={};_0x57e293[_0x31bd33]={'$like':'%'+_0x1f870e[_0x564c('0x30')]['filter']+'%'};return _0x57e293;})});}_0x1abd96=_[_0x564c('0x3d')]({},_0x1abd96,_0x1f870e[_0x564c('0x3f')]);return _0x4755c0[_0x564c('0x52')](_0x1abd96);}})[_0x564c('0x25')](function(_0x190293){if(_0x190293){_0x32c6b8=_0x190293[_0x564c('0x36')];if(!_0x1f870e[_0x564c('0x30')][_0x564c('0x4f')](_0x564c('0x37'))){_0x1abd96[_0x564c('0x20')]=qs[_0x564c('0x20')](_0x1f870e['query'][_0x564c('0x20')]);_0x1abd96[_0x564c('0x1d')]=qs['offset'](_0x1f870e[_0x564c('0x30')][_0x564c('0x1d')]);}return _0x4755c0[_0x564c('0x52')](_0x1abd96);}})[_0x564c('0x25')](function(_0x3862f9){if(_0x3862f9){return _0x3862f9?{'count':_0x32c6b8,'rows':_0x3862f9}:null;}})['then'](respondWithResult(_0x5049a0,null))[_0x564c('0x44')](handleError(_0x5049a0,null));};exports[_0x564c('0x54')]=function(_0x3dae3c,_0x182073,_0x5784f6){if(_0x3dae3c[_0x564c('0x4a')]['id']){delete _0x3dae3c[_0x564c('0x4a')]['id'];}return db['ZendeskConfiguration'][_0x564c('0x4d')]({'where':{'id':_0x3dae3c[_0x564c('0x46')]['id']}})[_0x564c('0x25')](handleEntityNotFound(_0x182073,null))[_0x564c('0x25')](function(_0x251c49){if(_0x251c49){return _0x251c49[_0x564c('0x54')](_0x3dae3c[_0x564c('0x4a')]['ids']||[]);}return null;})['then'](respondWithResult(_0x182073,null))[_0x564c('0x44')](handleError(_0x182073,null));};
\ No newline at end of file
+var _0xf7c4=['destroy','getFields','ZendeskField','order','getSubjects','findOne','getDescriptions','getTags','Tag','setTags','ids','request-promise','moment','bluebird','mustache','util','sox','to-csv','ejs','lodash','squel','crypto','jsforce','papaparse','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','status','end','json','offset','limit','count','set','Content-Range','apply','reject','save','then','sendStatus','stack','name','index','map','ZendeskConfiguration','rawAttributes','fieldName','type','key','model','query','keys','filters','intersection','attributes','fields','hasOwnProperty','nolimit','sort','where','pick','filter','VIRTUAL','options','includeAll','findAll','rows','catch','show','params','length','include','merge','find','create','body','update'];(function(_0x3e315e,_0x30863b){var _0x4b5155=function(_0x131bd7){while(--_0x131bd7){_0x3e315e['push'](_0x3e315e['shift']());}};_0x4b5155(++_0x30863b);}(_0xf7c4,0xfe));var _0x4f7c=function(_0x2b5eae,_0x55010d){_0x2b5eae=_0x2b5eae-0x0;var _0x5f3ac9=_0xf7c4[_0x2b5eae];return _0x5f3ac9;};'use strict';var emlformat=require('eml-format');var rimraf=require('rimraf');var zipdir=require('zip-dir');var jsonpatch=require('fast-json-patch');var rp=require(_0x4f7c('0x0'));var moment=require(_0x4f7c('0x1'));var BPromise=require(_0x4f7c('0x2'));var Mustache=require(_0x4f7c('0x3'));var util=require(_0x4f7c('0x4'));var path=require('path');var sox=require(_0x4f7c('0x5'));var csv=require(_0x4f7c('0x6'));var ejs=require(_0x4f7c('0x7'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x4f7c('0x8'));var squel=require(_0x4f7c('0x9'));var crypto=require(_0x4f7c('0xa'));var jsforce=require(_0x4f7c('0xb'));var deskjs=require('desk.js');var toCsv=require(_0x4f7c('0x6'));var querystring=require('querystring');var Papa=require(_0x4f7c('0xc'));var Redis=require('ioredis');var authService=require(_0x4f7c('0xd'));var qs=require(_0x4f7c('0xe'));var as=require(_0x4f7c('0xf'));var hardwareService=require('../../config/license/hardware');var logger=require('../../config/logger')('api');var utils=require(_0x4f7c('0x10'));var config=require(_0x4f7c('0x11'));var licenseUtil=require(_0x4f7c('0x12'));var db=require(_0x4f7c('0x13'))['db'];function respondWithStatusCode(_0x5e482a,_0x5bca26){_0x5bca26=_0x5bca26||0xcc;return function(_0x586613){if(_0x586613){return _0x5e482a['sendStatus'](_0x5bca26);}return _0x5e482a[_0x4f7c('0x14')](_0x5bca26)[_0x4f7c('0x15')]();};}function respondWithResult(_0x3982fd,_0x1129cd){_0x1129cd=_0x1129cd||0xc8;return function(_0x56bf19){if(_0x56bf19){return _0x3982fd[_0x4f7c('0x14')](_0x1129cd)[_0x4f7c('0x16')](_0x56bf19);}};}function respondWithFilteredResult(_0xa6b8c,_0x3887a2){return function(_0x42e641){if(_0x42e641){var _0x5360be=typeof _0x3887a2[_0x4f7c('0x17')]==='undefined'&&typeof _0x3887a2[_0x4f7c('0x18')]==='undefined';var _0x3b1160=_0x42e641['count'];var _0x5417dd=_0x5360be?0x0:_0x3887a2[_0x4f7c('0x17')];var _0x18d21c=_0x5360be?_0x42e641[_0x4f7c('0x19')]:_0x3887a2[_0x4f7c('0x17')]+_0x3887a2[_0x4f7c('0x18')];var _0x345713;if(_0x18d21c>=_0x3b1160){_0x18d21c=_0x3b1160;_0x345713=0xc8;}else{_0x345713=0xce;}_0xa6b8c['status'](_0x345713);return _0xa6b8c[_0x4f7c('0x1a')](_0x4f7c('0x1b'),_0x5417dd+'-'+_0x18d21c+'/'+_0x3b1160)[_0x4f7c('0x16')](_0x42e641);}return null;};}function patchUpdates(_0x2cab8c){return function(_0x7f6f72){try{jsonpatch[_0x4f7c('0x1c')](_0x7f6f72,_0x2cab8c,!![]);}catch(_0x2344d1){return BPromise[_0x4f7c('0x1d')](_0x2344d1);}return _0x7f6f72[_0x4f7c('0x1e')]();};}function saveUpdates(_0x385eb8,_0x3fc963){return function(_0x5ec4fe){if(_0x5ec4fe){return _0x5ec4fe['update'](_0x385eb8)[_0x4f7c('0x1f')](function(_0x1e1d83){return _0x1e1d83;});}return null;};}function removeEntity(_0x57e3db,_0x19ea73){return function(_0x2cc3eb){if(_0x2cc3eb){return _0x2cc3eb['destroy']()[_0x4f7c('0x1f')](function(){_0x57e3db['status'](0xcc)[_0x4f7c('0x15')]();});}};}function handleEntityNotFound(_0x27c4f3,_0x30d8e6){return function(_0x2d6000){if(!_0x2d6000){_0x27c4f3[_0x4f7c('0x20')](0x194);}return _0x2d6000;};}function handleError(_0x148d80,_0x515de1){_0x515de1=_0x515de1||0x1f4;return function(_0x3150fa){logger['error'](_0x3150fa[_0x4f7c('0x21')]);if(_0x3150fa[_0x4f7c('0x22')]){delete _0x3150fa[_0x4f7c('0x22')];}_0x148d80[_0x4f7c('0x14')](_0x515de1)['send'](_0x3150fa);};}exports[_0x4f7c('0x23')]=function(_0x3d705c,_0x336992){var _0x20c521={},_0x5f25b2={},_0x4fe5c8={'count':0x0,'rows':[]};var _0x48d4a5=_[_0x4f7c('0x24')](db[_0x4f7c('0x25')][_0x4f7c('0x26')],function(_0x2f1759){return{'name':_0x2f1759[_0x4f7c('0x27')],'type':_0x2f1759[_0x4f7c('0x28')][_0x4f7c('0x29')]};});_0x5f25b2[_0x4f7c('0x2a')]=_[_0x4f7c('0x24')](_0x48d4a5,_0x4f7c('0x22'));_0x5f25b2[_0x4f7c('0x2b')]=_[_0x4f7c('0x2c')](_0x3d705c['query']);_0x5f25b2[_0x4f7c('0x2d')]=_[_0x4f7c('0x2e')](_0x5f25b2[_0x4f7c('0x2a')],_0x5f25b2['query']);_0x20c521[_0x4f7c('0x2f')]=_[_0x4f7c('0x2e')](_0x5f25b2[_0x4f7c('0x2a')],qs[_0x4f7c('0x30')](_0x3d705c[_0x4f7c('0x2b')][_0x4f7c('0x30')]));_0x20c521[_0x4f7c('0x2f')]=_0x20c521[_0x4f7c('0x2f')]['length']?_0x20c521[_0x4f7c('0x2f')]:_0x5f25b2['model'];if(!_0x3d705c[_0x4f7c('0x2b')][_0x4f7c('0x31')](_0x4f7c('0x32'))){_0x20c521[_0x4f7c('0x18')]=qs[_0x4f7c('0x18')](_0x3d705c[_0x4f7c('0x2b')][_0x4f7c('0x18')]);_0x20c521['offset']=qs[_0x4f7c('0x17')](_0x3d705c[_0x4f7c('0x2b')][_0x4f7c('0x17')]);}_0x20c521['order']=qs[_0x4f7c('0x33')](_0x3d705c[_0x4f7c('0x2b')][_0x4f7c('0x33')]);_0x20c521[_0x4f7c('0x34')]=qs[_0x4f7c('0x2d')](_[_0x4f7c('0x35')](_0x3d705c[_0x4f7c('0x2b')],_0x5f25b2[_0x4f7c('0x2d')]),_0x48d4a5);if(_0x3d705c['query'][_0x4f7c('0x36')]){_0x20c521[_0x4f7c('0x34')]=_['merge'](_0x20c521['where'],{'$or':_[_0x4f7c('0x24')](_0x48d4a5,function(_0x2632d3){if(_0x2632d3[_0x4f7c('0x28')]!==_0x4f7c('0x37')){var _0x2261e2={};_0x2261e2[_0x2632d3['name']]={'$like':'%'+_0x3d705c[_0x4f7c('0x2b')][_0x4f7c('0x36')]+'%'};return _0x2261e2;}})});}_0x20c521=_['merge']({},_0x20c521,_0x3d705c[_0x4f7c('0x38')]);var _0x412b7f={'where':_0x20c521[_0x4f7c('0x34')]};return db[_0x4f7c('0x25')][_0x4f7c('0x19')](_0x412b7f)[_0x4f7c('0x1f')](function(_0x47ac05){_0x4fe5c8[_0x4f7c('0x19')]=_0x47ac05;if(_0x3d705c[_0x4f7c('0x2b')][_0x4f7c('0x39')]){_0x20c521['include']=[{'all':!![]}];}return db[_0x4f7c('0x25')][_0x4f7c('0x3a')](_0x20c521);})[_0x4f7c('0x1f')](function(_0x5d0f77){_0x4fe5c8[_0x4f7c('0x3b')]=_0x5d0f77;return _0x4fe5c8;})[_0x4f7c('0x1f')](respondWithFilteredResult(_0x336992,_0x20c521))[_0x4f7c('0x3c')](handleError(_0x336992,null));};exports[_0x4f7c('0x3d')]=function(_0x3c0a32,_0x1271ab){var _0x58bda2={'raw':![],'where':{'id':_0x3c0a32[_0x4f7c('0x3e')]['id']}},_0x408bab={};_0x408bab[_0x4f7c('0x2a')]=_['keys'](db[_0x4f7c('0x25')][_0x4f7c('0x26')]);_0x408bab['query']=_['keys'](_0x3c0a32[_0x4f7c('0x2b')]);_0x408bab[_0x4f7c('0x2d')]=_[_0x4f7c('0x2e')](_0x408bab[_0x4f7c('0x2a')],_0x408bab[_0x4f7c('0x2b')]);_0x58bda2[_0x4f7c('0x2f')]=_[_0x4f7c('0x2e')](_0x408bab[_0x4f7c('0x2a')],qs[_0x4f7c('0x30')](_0x3c0a32[_0x4f7c('0x2b')][_0x4f7c('0x30')]));_0x58bda2[_0x4f7c('0x2f')]=_0x58bda2[_0x4f7c('0x2f')][_0x4f7c('0x3f')]?_0x58bda2[_0x4f7c('0x2f')]:_0x408bab['model'];if(_0x3c0a32[_0x4f7c('0x2b')][_0x4f7c('0x39')]){_0x58bda2[_0x4f7c('0x40')]=[{'all':!![]}];}_0x58bda2=_[_0x4f7c('0x41')]({},_0x58bda2,_0x3c0a32['options']);return db['ZendeskConfiguration'][_0x4f7c('0x42')](_0x58bda2)[_0x4f7c('0x1f')](handleEntityNotFound(_0x1271ab,null))[_0x4f7c('0x1f')](respondWithResult(_0x1271ab,null))['catch'](handleError(_0x1271ab,null));};exports[_0x4f7c('0x43')]=function(_0x55c74b,_0x1157c6){return db[_0x4f7c('0x25')][_0x4f7c('0x43')](_0x55c74b[_0x4f7c('0x44')],{})[_0x4f7c('0x1f')](respondWithResult(_0x1157c6,0xc9))['catch'](handleError(_0x1157c6,null));};exports[_0x4f7c('0x45')]=function(_0x4ce428,_0x4745b4){if(_0x4ce428['body']['id']){delete _0x4ce428[_0x4f7c('0x44')]['id'];}return db['ZendeskConfiguration'][_0x4f7c('0x42')]({'where':{'id':_0x4ce428[_0x4f7c('0x3e')]['id']}})[_0x4f7c('0x1f')](handleEntityNotFound(_0x4745b4,null))[_0x4f7c('0x1f')](saveUpdates(_0x4ce428[_0x4f7c('0x44')],null))[_0x4f7c('0x1f')](respondWithResult(_0x4745b4,null))[_0x4f7c('0x3c')](handleError(_0x4745b4,null));};exports[_0x4f7c('0x46')]=function(_0x22bcfa,_0x3a613f){return db['ZendeskConfiguration'][_0x4f7c('0x42')]({'where':{'id':_0x22bcfa['params']['id']}})[_0x4f7c('0x1f')](handleEntityNotFound(_0x3a613f,null))[_0x4f7c('0x1f')](removeEntity(_0x3a613f,null))[_0x4f7c('0x3c')](handleError(_0x3a613f,null));};exports[_0x4f7c('0x47')]=function(_0x6e2e5,_0x554151,_0x13b969){var _0x24962d={};var _0x3bed43={};var _0x17af9b;var _0x50f781;return db['ZendeskConfiguration']['findOne']({'where':{'id':_0x6e2e5[_0x4f7c('0x3e')]['id']}})[_0x4f7c('0x1f')](handleEntityNotFound(_0x554151,null))[_0x4f7c('0x1f')](function(_0x4cc5c4){if(_0x4cc5c4){_0x17af9b=_0x4cc5c4;_0x3bed43[_0x4f7c('0x2a')]=_[_0x4f7c('0x2c')](db[_0x4f7c('0x48')][_0x4f7c('0x26')]);_0x3bed43['query']=_[_0x4f7c('0x2c')](_0x6e2e5[_0x4f7c('0x2b')]);_0x3bed43[_0x4f7c('0x2d')]=_['intersection'](_0x3bed43[_0x4f7c('0x2a')],_0x3bed43[_0x4f7c('0x2b')]);_0x24962d['attributes']=_[_0x4f7c('0x2e')](_0x3bed43[_0x4f7c('0x2a')],qs[_0x4f7c('0x30')](_0x6e2e5[_0x4f7c('0x2b')][_0x4f7c('0x30')]));_0x24962d[_0x4f7c('0x2f')]=_0x24962d[_0x4f7c('0x2f')]['length']?_0x24962d[_0x4f7c('0x2f')]:_0x3bed43[_0x4f7c('0x2a')];_0x24962d[_0x4f7c('0x49')]=qs[_0x4f7c('0x33')](_0x6e2e5['query'][_0x4f7c('0x33')]);_0x24962d['where']=qs[_0x4f7c('0x2d')](_[_0x4f7c('0x35')](_0x6e2e5[_0x4f7c('0x2b')],_0x3bed43[_0x4f7c('0x2d')]));if(_0x6e2e5[_0x4f7c('0x2b')][_0x4f7c('0x36')]){_0x24962d[_0x4f7c('0x34')]=_[_0x4f7c('0x41')](_0x24962d[_0x4f7c('0x34')],{'$or':_[_0x4f7c('0x24')](_0x24962d['attributes'],function(_0x4be489){var _0x37bf82={};_0x37bf82[_0x4be489]={'$like':'%'+_0x6e2e5[_0x4f7c('0x2b')]['filter']+'%'};return _0x37bf82;})});}_0x24962d=_['merge']({},_0x24962d,_0x6e2e5[_0x4f7c('0x38')]);return _0x17af9b[_0x4f7c('0x47')](_0x24962d);}})[_0x4f7c('0x1f')](function(_0x5e8233){if(_0x5e8233){_0x50f781=_0x5e8233[_0x4f7c('0x3f')];if(!_0x6e2e5[_0x4f7c('0x2b')][_0x4f7c('0x31')](_0x4f7c('0x32'))){_0x24962d[_0x4f7c('0x18')]=qs['limit'](_0x6e2e5[_0x4f7c('0x2b')]['limit']);_0x24962d[_0x4f7c('0x17')]=qs[_0x4f7c('0x17')](_0x6e2e5[_0x4f7c('0x2b')][_0x4f7c('0x17')]);}return _0x17af9b[_0x4f7c('0x47')](_0x24962d);}})[_0x4f7c('0x1f')](function(_0xb09a14){if(_0xb09a14){return _0xb09a14?{'count':_0x50f781,'rows':_0xb09a14}:null;}})[_0x4f7c('0x1f')](respondWithResult(_0x554151,null))[_0x4f7c('0x3c')](handleError(_0x554151,null));};exports[_0x4f7c('0x4a')]=function(_0x2551c2,_0x493e69,_0x1e618e){var _0x154e7e={};var _0xff05fc={};var _0x5706b3;var _0x156b55;return db[_0x4f7c('0x25')][_0x4f7c('0x4b')]({'where':{'id':_0x2551c2[_0x4f7c('0x3e')]['id']}})[_0x4f7c('0x1f')](handleEntityNotFound(_0x493e69,null))[_0x4f7c('0x1f')](function(_0x16d218){if(_0x16d218){_0x5706b3=_0x16d218;_0xff05fc[_0x4f7c('0x2a')]=_[_0x4f7c('0x2c')](db[_0x4f7c('0x48')][_0x4f7c('0x26')]);_0xff05fc[_0x4f7c('0x2b')]=_[_0x4f7c('0x2c')](_0x2551c2[_0x4f7c('0x2b')]);_0xff05fc[_0x4f7c('0x2d')]=_[_0x4f7c('0x2e')](_0xff05fc[_0x4f7c('0x2a')],_0xff05fc['query']);_0x154e7e['attributes']=_[_0x4f7c('0x2e')](_0xff05fc['model'],qs['fields'](_0x2551c2[_0x4f7c('0x2b')][_0x4f7c('0x30')]));_0x154e7e[_0x4f7c('0x2f')]=_0x154e7e[_0x4f7c('0x2f')][_0x4f7c('0x3f')]?_0x154e7e[_0x4f7c('0x2f')]:_0xff05fc[_0x4f7c('0x2a')];_0x154e7e[_0x4f7c('0x49')]=qs['sort'](_0x2551c2[_0x4f7c('0x2b')][_0x4f7c('0x33')]);_0x154e7e[_0x4f7c('0x34')]=qs['filters'](_[_0x4f7c('0x35')](_0x2551c2['query'],_0xff05fc['filters']));if(_0x2551c2[_0x4f7c('0x2b')]['filter']){_0x154e7e[_0x4f7c('0x34')]=_[_0x4f7c('0x41')](_0x154e7e[_0x4f7c('0x34')],{'$or':_[_0x4f7c('0x24')](_0x154e7e[_0x4f7c('0x2f')],function(_0x3e7aa8){var _0x1cb4b6={};_0x1cb4b6[_0x3e7aa8]={'$like':'%'+_0x2551c2[_0x4f7c('0x2b')][_0x4f7c('0x36')]+'%'};return _0x1cb4b6;})});}_0x154e7e=_[_0x4f7c('0x41')]({},_0x154e7e,_0x2551c2[_0x4f7c('0x38')]);return _0x5706b3[_0x4f7c('0x4a')](_0x154e7e);}})[_0x4f7c('0x1f')](function(_0x98eb4e){if(_0x98eb4e){_0x156b55=_0x98eb4e['length'];if(!_0x2551c2['query'][_0x4f7c('0x31')](_0x4f7c('0x32'))){_0x154e7e[_0x4f7c('0x18')]=qs[_0x4f7c('0x18')](_0x2551c2[_0x4f7c('0x2b')][_0x4f7c('0x18')]);_0x154e7e[_0x4f7c('0x17')]=qs[_0x4f7c('0x17')](_0x2551c2[_0x4f7c('0x2b')][_0x4f7c('0x17')]);}return _0x5706b3[_0x4f7c('0x4a')](_0x154e7e);}})[_0x4f7c('0x1f')](function(_0x4777c6){if(_0x4777c6){return _0x4777c6?{'count':_0x156b55,'rows':_0x4777c6}:null;}})[_0x4f7c('0x1f')](respondWithResult(_0x493e69,null))[_0x4f7c('0x3c')](handleError(_0x493e69,null));};exports[_0x4f7c('0x4c')]=function(_0x20cb13,_0x32d131,_0xab26dd){var _0x492e69={};var _0xb0dd24={};var _0x2622e8;var _0x53d1bc;return db['ZendeskConfiguration'][_0x4f7c('0x4b')]({'where':{'id':_0x20cb13[_0x4f7c('0x3e')]['id']}})['then'](handleEntityNotFound(_0x32d131,null))[_0x4f7c('0x1f')](function(_0x439fa4){if(_0x439fa4){_0x2622e8=_0x439fa4;_0xb0dd24['model']=_['keys'](db['ZendeskField'][_0x4f7c('0x26')]);_0xb0dd24[_0x4f7c('0x2b')]=_[_0x4f7c('0x2c')](_0x20cb13[_0x4f7c('0x2b')]);_0xb0dd24[_0x4f7c('0x2d')]=_[_0x4f7c('0x2e')](_0xb0dd24[_0x4f7c('0x2a')],_0xb0dd24[_0x4f7c('0x2b')]);_0x492e69[_0x4f7c('0x2f')]=_['intersection'](_0xb0dd24[_0x4f7c('0x2a')],qs[_0x4f7c('0x30')](_0x20cb13[_0x4f7c('0x2b')][_0x4f7c('0x30')]));_0x492e69['attributes']=_0x492e69[_0x4f7c('0x2f')]['length']?_0x492e69[_0x4f7c('0x2f')]:_0xb0dd24[_0x4f7c('0x2a')];_0x492e69[_0x4f7c('0x49')]=qs['sort'](_0x20cb13[_0x4f7c('0x2b')][_0x4f7c('0x33')]);_0x492e69[_0x4f7c('0x34')]=qs[_0x4f7c('0x2d')](_[_0x4f7c('0x35')](_0x20cb13[_0x4f7c('0x2b')],_0xb0dd24[_0x4f7c('0x2d')]));if(_0x20cb13[_0x4f7c('0x2b')]['filter']){_0x492e69[_0x4f7c('0x34')]=_['merge'](_0x492e69[_0x4f7c('0x34')],{'$or':_[_0x4f7c('0x24')](_0x492e69['attributes'],function(_0x23e9e7){var _0x166ac8={};_0x166ac8[_0x23e9e7]={'$like':'%'+_0x20cb13[_0x4f7c('0x2b')][_0x4f7c('0x36')]+'%'};return _0x166ac8;})});}_0x492e69=_[_0x4f7c('0x41')]({},_0x492e69,_0x20cb13[_0x4f7c('0x38')]);return _0x2622e8[_0x4f7c('0x4c')](_0x492e69);}})['then'](function(_0x179f25){if(_0x179f25){_0x53d1bc=_0x179f25['length'];if(!_0x20cb13['query'][_0x4f7c('0x31')]('nolimit')){_0x492e69['limit']=qs[_0x4f7c('0x18')](_0x20cb13[_0x4f7c('0x2b')]['limit']);_0x492e69[_0x4f7c('0x17')]=qs[_0x4f7c('0x17')](_0x20cb13['query']['offset']);}return _0x2622e8['getDescriptions'](_0x492e69);}})[_0x4f7c('0x1f')](function(_0x2ad0cd){if(_0x2ad0cd){return _0x2ad0cd?{'count':_0x53d1bc,'rows':_0x2ad0cd}:null;}})[_0x4f7c('0x1f')](respondWithResult(_0x32d131,null))[_0x4f7c('0x3c')](handleError(_0x32d131,null));};exports[_0x4f7c('0x4d')]=function(_0x537ee3,_0x52c788,_0x42dbbd){var _0x41d822={};var _0x4d0552={};var _0x384cf3;var _0x46356e;return db[_0x4f7c('0x25')][_0x4f7c('0x4b')]({'where':{'id':_0x537ee3['params']['id']}})[_0x4f7c('0x1f')](handleEntityNotFound(_0x52c788,null))[_0x4f7c('0x1f')](function(_0x222228){if(_0x222228){_0x384cf3=_0x222228;_0x4d0552[_0x4f7c('0x2a')]=_[_0x4f7c('0x2c')](db[_0x4f7c('0x4e')][_0x4f7c('0x26')]);_0x4d0552[_0x4f7c('0x2b')]=_[_0x4f7c('0x2c')](_0x537ee3[_0x4f7c('0x2b')]);_0x4d0552[_0x4f7c('0x2d')]=_[_0x4f7c('0x2e')](_0x4d0552[_0x4f7c('0x2a')],_0x4d0552[_0x4f7c('0x2b')]);_0x41d822[_0x4f7c('0x2f')]=_[_0x4f7c('0x2e')](_0x4d0552[_0x4f7c('0x2a')],qs[_0x4f7c('0x30')](_0x537ee3[_0x4f7c('0x2b')][_0x4f7c('0x30')]));_0x41d822[_0x4f7c('0x2f')]=_0x41d822[_0x4f7c('0x2f')][_0x4f7c('0x3f')]?_0x41d822[_0x4f7c('0x2f')]:_0x4d0552[_0x4f7c('0x2a')];_0x41d822['order']=qs[_0x4f7c('0x33')](_0x537ee3[_0x4f7c('0x2b')]['sort']);_0x41d822[_0x4f7c('0x34')]=qs[_0x4f7c('0x2d')](_[_0x4f7c('0x35')](_0x537ee3[_0x4f7c('0x2b')],_0x4d0552[_0x4f7c('0x2d')]));if(_0x537ee3['query'][_0x4f7c('0x36')]){_0x41d822['where']=_[_0x4f7c('0x41')](_0x41d822[_0x4f7c('0x34')],{'$or':_[_0x4f7c('0x24')](_0x41d822[_0x4f7c('0x2f')],function(_0x3ae1dc){var _0x3a184f={};_0x3a184f[_0x3ae1dc]={'$like':'%'+_0x537ee3[_0x4f7c('0x2b')][_0x4f7c('0x36')]+'%'};return _0x3a184f;})});}_0x41d822=_['merge']({},_0x41d822,_0x537ee3[_0x4f7c('0x38')]);return _0x384cf3['getTags'](_0x41d822);}})[_0x4f7c('0x1f')](function(_0x5dff5b){if(_0x5dff5b){_0x46356e=_0x5dff5b[_0x4f7c('0x3f')];if(!_0x537ee3['query'][_0x4f7c('0x31')](_0x4f7c('0x32'))){_0x41d822['limit']=qs[_0x4f7c('0x18')](_0x537ee3[_0x4f7c('0x2b')][_0x4f7c('0x18')]);_0x41d822[_0x4f7c('0x17')]=qs[_0x4f7c('0x17')](_0x537ee3[_0x4f7c('0x2b')]['offset']);}return _0x384cf3[_0x4f7c('0x4d')](_0x41d822);}})['then'](function(_0x25b4ad){if(_0x25b4ad){return _0x25b4ad?{'count':_0x46356e,'rows':_0x25b4ad}:null;}})[_0x4f7c('0x1f')](respondWithResult(_0x52c788,null))[_0x4f7c('0x3c')](handleError(_0x52c788,null));};exports[_0x4f7c('0x4f')]=function(_0x33b412,_0x74111a,_0xd69820){if(_0x33b412[_0x4f7c('0x44')]['id']){delete _0x33b412[_0x4f7c('0x44')]['id'];}return db['ZendeskConfiguration'][_0x4f7c('0x4b')]({'where':{'id':_0x33b412['params']['id']}})[_0x4f7c('0x1f')](handleEntityNotFound(_0x74111a,null))[_0x4f7c('0x1f')](function(_0x469bf7){if(_0x469bf7){return _0x469bf7[_0x4f7c('0x4f')](_0x33b412[_0x4f7c('0x44')][_0x4f7c('0x50')]||[]);}return null;})[_0x4f7c('0x1f')](respondWithResult(_0x74111a,null))[_0x4f7c('0x3c')](handleError(_0x74111a,null));};
\ No newline at end of file
index debb84d..fde23a7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0102=['api','moment','./intZendeskConfiguration.attributes','exports','ZendeskConfiguration','util','../../config/logger'];(function(_0x817d9b,_0x3c37e3){var _0x2752e1=function(_0x2b434e){while(--_0x2b434e){_0x817d9b['push'](_0x817d9b['shift']());}};_0x2752e1(++_0x3c37e3);}(_0x0102,0x186));var _0x2010=function(_0x29e961,_0x2d821b){_0x29e961=_0x29e961-0x0;var _0x4bae32=_0x0102[_0x29e961];return _0x4bae32;};'use strict';var _=require('lodash');var util=require(_0x2010('0x0'));var logger=require(_0x2010('0x1'))(_0x2010('0x2'));var moment=require(_0x2010('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('../../config/environment');var attributes=require(_0x2010('0x4'));module[_0x2010('0x5')]=function(_0x130725,_0x304264){return _0x130725['define'](_0x2010('0x6'),attributes,{'tableName':'int_zendesk_configurations','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xcf2f=['util','../../config/logger','api','moment','request-promise','path','rimraf','../../config/environment','./intZendeskConfiguration.attributes','exports','define','ZendeskConfiguration','int_zendesk_configurations','lodash'];(function(_0x4eec2f,_0x2231bf){var _0x1b7af5=function(_0x1f8eb5){while(--_0x1f8eb5){_0x4eec2f['push'](_0x4eec2f['shift']());}};_0x1b7af5(++_0x2231bf);}(_0xcf2f,0xa7));var _0xfcf2=function(_0x53c8c8,_0xac50c6){_0x53c8c8=_0x53c8c8-0x0;var _0x4cedcb=_0xcf2f[_0x53c8c8];return _0x4cedcb;};'use strict';var _=require(_0xfcf2('0x0'));var util=require(_0xfcf2('0x1'));var logger=require(_0xfcf2('0x2'))(_0xfcf2('0x3'));var moment=require(_0xfcf2('0x4'));var BPromise=require('bluebird');var rp=require(_0xfcf2('0x5'));var fs=require('fs');var path=require(_0xfcf2('0x6'));var rimraf=require(_0xfcf2('0x7'));var config=require(_0xfcf2('0x8'));var attributes=require(_0xfcf2('0x9'));module[_0xfcf2('0xa')]=function(_0x1e6d99,_0x3a4950){return _0x1e6d99[_0xfcf2('0xb')](_0xfcf2('0xc'),attributes,{'tableName':_0xfcf2('0xd'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index cfb402a..f17b912 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7e9e=['ZendeskConfiguration,\x20%s,\x20%s','request\x20sent','debug','ZendeskConfiguration,\x20%s,\x20%s,\x20%s','stringify','error','message','result','catch','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','client','http','request','info'];(function(_0x216bb8,_0x103b3b){var _0x5756ad=function(_0x585f8f){while(--_0x585f8f){_0x216bb8['push'](_0x216bb8['shift']());}};_0x5756ad(++_0x103b3b);}(_0x7e9e,0x159));var _0xe7e9=function(_0x2bddf9,_0x22c873){_0x2bddf9=_0x2bddf9-0x0;var _0x3f3ae9=_0x7e9e[_0x2bddf9];return _0x3f3ae9;};'use strict';var _=require(_0xe7e9('0x0'));var util=require(_0xe7e9('0x1'));var moment=require(_0xe7e9('0x2'));var BPromise=require(_0xe7e9('0x3'));var rs=require(_0xe7e9('0x4'));var fs=require('fs');var Redis=require(_0xe7e9('0x5'));var db=require(_0xe7e9('0x6'))['db'];var utils=require(_0xe7e9('0x7'));var logger=require(_0xe7e9('0x8'))(_0xe7e9('0x9'));var config=require(_0xe7e9('0xa'));var jayson=require('jayson/promise');var client=jayson[_0xe7e9('0xb')][_0xe7e9('0xc')]({'port':0x232a});function respondWithRpcPromise(_0x46b23c,_0x3d5a9e,_0x3e665c){return new BPromise(function(_0x3e62c5,_0x520561){return client[_0xe7e9('0xd')](_0x46b23c,_0x3e665c)['then'](function(_0x3c67b9){logger[_0xe7e9('0xe')](_0xe7e9('0xf'),_0x3d5a9e,_0xe7e9('0x10'));logger[_0xe7e9('0x11')](_0xe7e9('0x12'),_0x3d5a9e,_0xe7e9('0x10'),JSON[_0xe7e9('0x13')](_0x3c67b9));if(_0x3c67b9[_0xe7e9('0x14')]){if(_0x3c67b9[_0xe7e9('0x14')]['code']===0x1f4){logger[_0xe7e9('0x14')](_0xe7e9('0xf'),_0x3d5a9e,_0x3c67b9[_0xe7e9('0x14')][_0xe7e9('0x15')]);return _0x520561(_0x3c67b9[_0xe7e9('0x14')][_0xe7e9('0x15')]);}logger[_0xe7e9('0x14')]('ZendeskConfiguration,\x20%s,\x20%s',_0x3d5a9e,_0x3c67b9[_0xe7e9('0x14')][_0xe7e9('0x15')]);return _0x3e62c5(_0x3c67b9[_0xe7e9('0x14')][_0xe7e9('0x15')]);}else{logger[_0xe7e9('0xe')]('ZendeskConfiguration,\x20%s,\x20%s',_0x3d5a9e,_0xe7e9('0x10'));_0x3e62c5(_0x3c67b9[_0xe7e9('0x16')]['message']);}})[_0xe7e9('0x17')](function(_0x9e48de){logger[_0xe7e9('0x14')](_0xe7e9('0xf'),_0x3d5a9e,_0x9e48de);_0x520561(_0x9e48de);});});}
\ No newline at end of file
+var _0x1efb=['then','info','ZendeskConfiguration,\x20%s,\x20%s','request\x20sent','debug','error','code','message','result','catch','lodash','util','bluebird','randomstring','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','request'];(function(_0x2053ea,_0x1ab2d4){var _0x2232c4=function(_0x4230df){while(--_0x4230df){_0x2053ea['push'](_0x2053ea['shift']());}};_0x2232c4(++_0x1ab2d4);}(_0x1efb,0xa4));var _0xb1ef=function(_0x2dea24,_0x2fc021){_0x2dea24=_0x2dea24-0x0;var _0x309d58=_0x1efb[_0x2dea24];return _0x309d58;};'use strict';var _=require(_0xb1ef('0x0'));var util=require(_0xb1ef('0x1'));var moment=require('moment');var BPromise=require(_0xb1ef('0x2'));var rs=require(_0xb1ef('0x3'));var fs=require('fs');var Redis=require('ioredis');var db=require('../../mysqldb')['db'];var utils=require(_0xb1ef('0x4'));var logger=require(_0xb1ef('0x5'))(_0xb1ef('0x6'));var config=require(_0xb1ef('0x7'));var jayson=require(_0xb1ef('0x8'));var client=jayson[_0xb1ef('0x9')][_0xb1ef('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x41bde9,_0x15e40e,_0x3be31d){return new BPromise(function(_0x58b250,_0x1691be){return client[_0xb1ef('0xb')](_0x41bde9,_0x3be31d)[_0xb1ef('0xc')](function(_0x4db56d){logger[_0xb1ef('0xd')](_0xb1ef('0xe'),_0x15e40e,_0xb1ef('0xf'));logger[_0xb1ef('0x10')]('ZendeskConfiguration,\x20%s,\x20%s,\x20%s',_0x15e40e,_0xb1ef('0xf'),JSON['stringify'](_0x4db56d));if(_0x4db56d[_0xb1ef('0x11')]){if(_0x4db56d['error'][_0xb1ef('0x12')]===0x1f4){logger[_0xb1ef('0x11')](_0xb1ef('0xe'),_0x15e40e,_0x4db56d['error'][_0xb1ef('0x13')]);return _0x1691be(_0x4db56d[_0xb1ef('0x11')]['message']);}logger[_0xb1ef('0x11')](_0xb1ef('0xe'),_0x15e40e,_0x4db56d[_0xb1ef('0x11')][_0xb1ef('0x13')]);return _0x58b250(_0x4db56d[_0xb1ef('0x11')][_0xb1ef('0x13')]);}else{logger[_0xb1ef('0xd')](_0xb1ef('0xe'),_0x15e40e,'request\x20sent');_0x58b250(_0x4db56d[_0xb1ef('0x14')][_0xb1ef('0x13')]);}})[_0xb1ef('0x15')](function(_0x4668dd){logger[_0xb1ef('0x11')](_0xb1ef('0xe'),_0x15e40e,_0x4668dd);_0x1691be(_0x4668dd);});});}
\ No newline at end of file
index c41de8b..673c68f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x96dc=['../../components/interaction/service','../../config/environment','./intZendeskField.controller','get','index','/:id','show','isAuthenticated','create','put','delete','destroy','multer','path','connect-timeout','express','Router','../../components/auth/service'];(function(_0x4a53d,_0x58a95e){var _0x27410e=function(_0x38fc90){while(--_0x38fc90){_0x4a53d['push'](_0x4a53d['shift']());}};_0x27410e(++_0x58a95e);}(_0x96dc,0xe4));var _0xc96d=function(_0xe6128f,_0x3c69d4){_0xe6128f=_0xe6128f-0x0;var _0xf74be0=_0x96dc[_0xe6128f];return _0xf74be0;};'use strict';var multer=require(_0xc96d('0x0'));var util=require('util');var path=require(_0xc96d('0x1'));var timeout=require(_0xc96d('0x2'));var express=require(_0xc96d('0x3'));var router=express[_0xc96d('0x4')]();var fs_extra=require('fs-extra');var auth=require(_0xc96d('0x5'));var interaction=require(_0xc96d('0x6'));var config=require(_0xc96d('0x7'));var controller=require(_0xc96d('0x8'));router[_0xc96d('0x9')]('/',auth['isAuthenticated'](),controller[_0xc96d('0xa')]);router[_0xc96d('0x9')](_0xc96d('0xb'),auth['isAuthenticated'](),controller[_0xc96d('0xc')]);router['post']('/',auth[_0xc96d('0xd')](),controller[_0xc96d('0xe')]);router[_0xc96d('0xf')]('/:id',auth[_0xc96d('0xd')](),controller['update']);router[_0xc96d('0x10')](_0xc96d('0xb'),auth[_0xc96d('0xd')](),controller[_0xc96d('0x11')]);module['exports']=router;
\ No newline at end of file
+var _0x73a4=['Router','fs-extra','../../components/auth/service','../../config/environment','isAuthenticated','get','/:id','show','create','put','update','delete','exports','multer','util','connect-timeout'];(function(_0x3f83e2,_0x126913){var _0xb79ecb=function(_0x4ce498){while(--_0x4ce498){_0x3f83e2['push'](_0x3f83e2['shift']());}};_0xb79ecb(++_0x126913);}(_0x73a4,0x1ed));var _0x473a=function(_0x1c971b,_0x382343){_0x1c971b=_0x1c971b-0x0;var _0x5966d0=_0x73a4[_0x1c971b];return _0x5966d0;};'use strict';var multer=require(_0x473a('0x0'));var util=require(_0x473a('0x1'));var path=require('path');var timeout=require(_0x473a('0x2'));var express=require('express');var router=express[_0x473a('0x3')]();var fs_extra=require(_0x473a('0x4'));var auth=require(_0x473a('0x5'));var interaction=require('../../components/interaction/service');var config=require(_0x473a('0x6'));var controller=require('./intZendeskField.controller');router['get']('/',auth[_0x473a('0x7')](),controller['index']);router[_0x473a('0x8')](_0x473a('0x9'),auth[_0x473a('0x7')](),controller[_0x473a('0xa')]);router['post']('/',auth[_0x473a('0x7')](),controller[_0x473a('0xb')]);router[_0x473a('0xc')](_0x473a('0x9'),auth['isAuthenticated'](),controller[_0x473a('0xd')]);router[_0x473a('0xe')](_0x473a('0x9'),auth['isAuthenticated'](),controller['destroy']);module[_0x473a('0xf')]=router;
\ No newline at end of file
index e262504..8322697 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xbb48=['exports','ENUM','string','variable','customVariable','keyValue','picklist','STRING','BOOLEAN','sequelize'];(function(_0x1b846a,_0x2894c8){var _0x44781d=function(_0x1df4a0){while(--_0x1df4a0){_0x1b846a['push'](_0x1b846a['shift']());}};_0x44781d(++_0x2894c8);}(_0xbb48,0x1ad));var _0x8bb4=function(_0x4565bf,_0x5ad9d6){_0x4565bf=_0x4565bf-0x0;var _0x5610ba=_0xbb48[_0x4565bf];return _0x5610ba;};'use strict';var Sequelize=require(_0x8bb4('0x0'));module[_0x8bb4('0x1')]={'type':{'type':Sequelize[_0x8bb4('0x2')](_0x8bb4('0x3'),_0x8bb4('0x4'),_0x8bb4('0x5'),_0x8bb4('0x6'),_0x8bb4('0x7')),'defaultValue':_0x8bb4('0x3')},'content':{'type':Sequelize[_0x8bb4('0x8')]},'key':{'type':Sequelize[_0x8bb4('0x8')]},'keyType':{'type':Sequelize['ENUM'](_0x8bb4('0x3'),_0x8bb4('0x4'),'customVariable')},'keyContent':{'type':Sequelize[_0x8bb4('0x8')]},'idField':{'type':Sequelize[_0x8bb4('0x8')]},'nameField':{'type':Sequelize[_0x8bb4('0x8')]},'customField':{'type':Sequelize[_0x8bb4('0x9')],'defaultValue':!![]},'variableName':{'type':Sequelize[_0x8bb4('0x8')]}};
\ No newline at end of file
+var _0xe00a=['sequelize','exports','string','variable','customVariable','picklist','STRING','ENUM'];(function(_0x36ce49,_0x4c03e1){var _0x1d4698=function(_0x27144d){while(--_0x27144d){_0x36ce49['push'](_0x36ce49['shift']());}};_0x1d4698(++_0x4c03e1);}(_0xe00a,0x108));var _0xae00=function(_0x36134a,_0x1a540f){_0x36134a=_0x36134a-0x0;var _0x5d7420=_0xe00a[_0x36134a];return _0x5d7420;};'use strict';var Sequelize=require(_0xae00('0x0'));module[_0xae00('0x1')]={'type':{'type':Sequelize['ENUM'](_0xae00('0x2'),_0xae00('0x3'),_0xae00('0x4'),'keyValue',_0xae00('0x5')),'defaultValue':_0xae00('0x2')},'content':{'type':Sequelize[_0xae00('0x6')]},'key':{'type':Sequelize[_0xae00('0x6')]},'keyType':{'type':Sequelize[_0xae00('0x7')](_0xae00('0x2'),_0xae00('0x3'),'customVariable')},'keyContent':{'type':Sequelize[_0xae00('0x6')]},'idField':{'type':Sequelize[_0xae00('0x6')]},'nameField':{'type':Sequelize[_0xae00('0x6')]},'customField':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]},'variableName':{'type':Sequelize['STRING']}};
\ No newline at end of file
index dc2d03d..c0f2d7a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7a2c=['merge','include','findAll','rows','params','intersection','fields','includeAll','options','find','catch','create','body','destroy','eml-format','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','to-csv','ejs','crypto','jsforce','desk.js','papaparse','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','../../config/logger','api','../../config/utils','../../config/license/util','../../mysqldb','sendStatus','status','end','json','offset','undefined','count','limit','apply','reject','save','update','then','stack','name','send','index','map','ZendeskField','rawAttributes','fieldName','type','model','keys','filters','query','attributes','length','hasOwnProperty','nolimit','order','sort','where','pick','filter','VIRTUAL'];(function(_0x4afac5,_0x1ab4ed){var _0x2404b3=function(_0x5c700b){while(--_0x5c700b){_0x4afac5['push'](_0x4afac5['shift']());}};_0x2404b3(++_0x1ab4ed);}(_0x7a2c,0x17b));var _0xc7a2=function(_0xd28393,_0x34f277){_0xd28393=_0xd28393-0x0;var _0x3ccd78=_0x7a2c[_0xd28393];return _0x3ccd78;};'use strict';var emlformat=require(_0xc7a2('0x0'));var rimraf=require('rimraf');var zipdir=require(_0xc7a2('0x1'));var jsonpatch=require(_0xc7a2('0x2'));var rp=require(_0xc7a2('0x3'));var moment=require(_0xc7a2('0x4'));var BPromise=require(_0xc7a2('0x5'));var Mustache=require(_0xc7a2('0x6'));var util=require(_0xc7a2('0x7'));var path=require(_0xc7a2('0x8'));var sox=require('sox');var csv=require(_0xc7a2('0x9'));var ejs=require(_0xc7a2('0xa'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require('lodash');var squel=require('squel');var crypto=require(_0xc7a2('0xb'));var jsforce=require(_0xc7a2('0xc'));var deskjs=require(_0xc7a2('0xd'));var toCsv=require(_0xc7a2('0x9'));var querystring=require('querystring');var Papa=require(_0xc7a2('0xe'));var Redis=require(_0xc7a2('0xf'));var authService=require(_0xc7a2('0x10'));var qs=require('../../components/parsers/qs');var as=require(_0xc7a2('0x11'));var hardwareService=require('../../config/license/hardware');var logger=require(_0xc7a2('0x12'))(_0xc7a2('0x13'));var utils=require(_0xc7a2('0x14'));var config=require('../../config/environment');var licenseUtil=require(_0xc7a2('0x15'));var db=require(_0xc7a2('0x16'))['db'];function respondWithStatusCode(_0x2df81a,_0x5871c3){_0x5871c3=_0x5871c3||0xcc;return function(_0x111946){if(_0x111946){return _0x2df81a[_0xc7a2('0x17')](_0x5871c3);}return _0x2df81a[_0xc7a2('0x18')](_0x5871c3)[_0xc7a2('0x19')]();};}function respondWithResult(_0x39929c,_0x2af363){_0x2af363=_0x2af363||0xc8;return function(_0x15d4cf){if(_0x15d4cf){return _0x39929c[_0xc7a2('0x18')](_0x2af363)[_0xc7a2('0x1a')](_0x15d4cf);}};}function respondWithFilteredResult(_0xcc0d1f,_0x3814d6){return function(_0x278afb){if(_0x278afb){var _0x26d678=typeof _0x3814d6[_0xc7a2('0x1b')]===_0xc7a2('0x1c')&&typeof _0x3814d6['limit']===_0xc7a2('0x1c');var _0x59e8ad=_0x278afb[_0xc7a2('0x1d')];var _0x302d54=_0x26d678?0x0:_0x3814d6[_0xc7a2('0x1b')];var _0x3da373=_0x26d678?_0x278afb['count']:_0x3814d6['offset']+_0x3814d6[_0xc7a2('0x1e')];var _0x22e80a;if(_0x3da373>=_0x59e8ad){_0x3da373=_0x59e8ad;_0x22e80a=0xc8;}else{_0x22e80a=0xce;}_0xcc0d1f['status'](_0x22e80a);return _0xcc0d1f['set']('Content-Range',_0x302d54+'-'+_0x3da373+'/'+_0x59e8ad)[_0xc7a2('0x1a')](_0x278afb);}return null;};}function patchUpdates(_0x5a2f40){return function(_0x155c42){try{jsonpatch[_0xc7a2('0x1f')](_0x155c42,_0x5a2f40,!![]);}catch(_0x56313b){return BPromise[_0xc7a2('0x20')](_0x56313b);}return _0x155c42[_0xc7a2('0x21')]();};}function saveUpdates(_0x1b51a1,_0x35e0f6){return function(_0x337bdb){if(_0x337bdb){return _0x337bdb[_0xc7a2('0x22')](_0x1b51a1)[_0xc7a2('0x23')](function(_0x4a05e1){return _0x4a05e1;});}return null;};}function removeEntity(_0x51243c,_0x194ca4){return function(_0x1c3fb8){if(_0x1c3fb8){return _0x1c3fb8['destroy']()[_0xc7a2('0x23')](function(){_0x51243c[_0xc7a2('0x18')](0xcc)[_0xc7a2('0x19')]();});}};}function handleEntityNotFound(_0x2c2281,_0x1a14cb){return function(_0x35584a){if(!_0x35584a){_0x2c2281[_0xc7a2('0x17')](0x194);}return _0x35584a;};}function handleError(_0x429b05,_0x591860){_0x591860=_0x591860||0x1f4;return function(_0x35a6e0){logger['error'](_0x35a6e0[_0xc7a2('0x24')]);if(_0x35a6e0['name']){delete _0x35a6e0[_0xc7a2('0x25')];}_0x429b05[_0xc7a2('0x18')](_0x591860)[_0xc7a2('0x26')](_0x35a6e0);};}exports[_0xc7a2('0x27')]=function(_0x4977f0,_0x5a4fc2){var _0x320c20={},_0x2f3097={},_0x272c6b={'count':0x0,'rows':[]};var _0x305efb=_[_0xc7a2('0x28')](db[_0xc7a2('0x29')][_0xc7a2('0x2a')],function(_0x5e970e){return{'name':_0x5e970e[_0xc7a2('0x2b')],'type':_0x5e970e[_0xc7a2('0x2c')]['key']};});_0x2f3097[_0xc7a2('0x2d')]=_[_0xc7a2('0x28')](_0x305efb,_0xc7a2('0x25'));_0x2f3097['query']=_[_0xc7a2('0x2e')](_0x4977f0['query']);_0x2f3097[_0xc7a2('0x2f')]=_['intersection'](_0x2f3097['model'],_0x2f3097[_0xc7a2('0x30')]);_0x320c20['attributes']=_['intersection'](_0x2f3097[_0xc7a2('0x2d')],qs['fields'](_0x4977f0[_0xc7a2('0x30')]['fields']));_0x320c20[_0xc7a2('0x31')]=_0x320c20[_0xc7a2('0x31')][_0xc7a2('0x32')]?_0x320c20[_0xc7a2('0x31')]:_0x2f3097[_0xc7a2('0x2d')];if(!_0x4977f0[_0xc7a2('0x30')][_0xc7a2('0x33')](_0xc7a2('0x34'))){_0x320c20[_0xc7a2('0x1e')]=qs[_0xc7a2('0x1e')](_0x4977f0['query'][_0xc7a2('0x1e')]);_0x320c20[_0xc7a2('0x1b')]=qs['offset'](_0x4977f0[_0xc7a2('0x30')][_0xc7a2('0x1b')]);}_0x320c20[_0xc7a2('0x35')]=qs[_0xc7a2('0x36')](_0x4977f0[_0xc7a2('0x30')][_0xc7a2('0x36')]);_0x320c20[_0xc7a2('0x37')]=qs['filters'](_[_0xc7a2('0x38')](_0x4977f0[_0xc7a2('0x30')],_0x2f3097[_0xc7a2('0x2f')]),_0x305efb);if(_0x4977f0['query'][_0xc7a2('0x39')]){_0x320c20[_0xc7a2('0x37')]=_['merge'](_0x320c20[_0xc7a2('0x37')],{'$or':_[_0xc7a2('0x28')](_0x305efb,function(_0x41a42f){if(_0x41a42f[_0xc7a2('0x2c')]!==_0xc7a2('0x3a')){var _0x2aad57={};_0x2aad57[_0x41a42f[_0xc7a2('0x25')]]={'$like':'%'+_0x4977f0[_0xc7a2('0x30')]['filter']+'%'};return _0x2aad57;}})});}_0x320c20=_[_0xc7a2('0x3b')]({},_0x320c20,_0x4977f0['options']);var _0x2f0e42={'where':_0x320c20[_0xc7a2('0x37')]};return db[_0xc7a2('0x29')][_0xc7a2('0x1d')](_0x2f0e42)[_0xc7a2('0x23')](function(_0xe470f7){_0x272c6b[_0xc7a2('0x1d')]=_0xe470f7;if(_0x4977f0[_0xc7a2('0x30')]['includeAll']){_0x320c20[_0xc7a2('0x3c')]=[{'all':!![]}];}return db[_0xc7a2('0x29')][_0xc7a2('0x3d')](_0x320c20);})[_0xc7a2('0x23')](function(_0x54e6b1){_0x272c6b[_0xc7a2('0x3e')]=_0x54e6b1;return _0x272c6b;})['then'](respondWithFilteredResult(_0x5a4fc2,_0x320c20))['catch'](handleError(_0x5a4fc2,null));};exports['show']=function(_0x203147,_0x2eea2f){var _0x28ed1c={'raw':!![],'where':{'id':_0x203147[_0xc7a2('0x3f')]['id']}},_0x2c3cb1={};_0x2c3cb1[_0xc7a2('0x2d')]=_[_0xc7a2('0x2e')](db[_0xc7a2('0x29')][_0xc7a2('0x2a')]);_0x2c3cb1['query']=_['keys'](_0x203147['query']);_0x2c3cb1[_0xc7a2('0x2f')]=_[_0xc7a2('0x40')](_0x2c3cb1['model'],_0x2c3cb1[_0xc7a2('0x30')]);_0x28ed1c[_0xc7a2('0x31')]=_[_0xc7a2('0x40')](_0x2c3cb1['model'],qs[_0xc7a2('0x41')](_0x203147['query'][_0xc7a2('0x41')]));_0x28ed1c[_0xc7a2('0x31')]=_0x28ed1c['attributes']['length']?_0x28ed1c[_0xc7a2('0x31')]:_0x2c3cb1[_0xc7a2('0x2d')];if(_0x203147['query'][_0xc7a2('0x42')]){_0x28ed1c[_0xc7a2('0x3c')]=[{'all':!![]}];}_0x28ed1c=_[_0xc7a2('0x3b')]({},_0x28ed1c,_0x203147[_0xc7a2('0x43')]);return db[_0xc7a2('0x29')][_0xc7a2('0x44')](_0x28ed1c)['then'](handleEntityNotFound(_0x2eea2f,null))[_0xc7a2('0x23')](respondWithResult(_0x2eea2f,null))[_0xc7a2('0x45')](handleError(_0x2eea2f,null));};exports[_0xc7a2('0x46')]=function(_0x4596f9,_0x54fc41){return db[_0xc7a2('0x29')][_0xc7a2('0x46')](_0x4596f9[_0xc7a2('0x47')],{})[_0xc7a2('0x23')](respondWithResult(_0x54fc41,0xc9))[_0xc7a2('0x45')](handleError(_0x54fc41,null));};exports[_0xc7a2('0x22')]=function(_0x7378ed,_0xdc4644){if(_0x7378ed['body']['id']){delete _0x7378ed[_0xc7a2('0x47')]['id'];}return db[_0xc7a2('0x29')][_0xc7a2('0x44')]({'where':{'id':_0x7378ed[_0xc7a2('0x3f')]['id']}})['then'](handleEntityNotFound(_0xdc4644,null))[_0xc7a2('0x23')](saveUpdates(_0x7378ed[_0xc7a2('0x47')],null))['then'](respondWithResult(_0xdc4644,null))[_0xc7a2('0x45')](handleError(_0xdc4644,null));};exports[_0xc7a2('0x48')]=function(_0xb09c6f,_0x457318){return db[_0xc7a2('0x29')]['find']({'where':{'id':_0xb09c6f[_0xc7a2('0x3f')]['id']}})[_0xc7a2('0x23')](handleEntityNotFound(_0x457318,null))[_0xc7a2('0x23')](removeEntity(_0x457318,null))['catch'](handleError(_0x457318,null));};
\ No newline at end of file
+var _0xf9b6=['sendStatus','end','json','offset','undefined','limit','count','status','set','Content-Range','apply','reject','save','then','error','stack','name','send','index','map','ZendeskField','fieldName','type','key','query','keys','filters','intersection','model','attributes','fields','length','hasOwnProperty','order','sort','where','pick','filter','VIRTUAL','merge','options','includeAll','include','findAll','rows','catch','show','params','rawAttributes','find','create','body','update','destroy','rimraf','zip-dir','request-promise','bluebird','mustache','util','path','squel','jsforce','desk.js','to-csv','querystring','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/utils','../../config/environment','../../mysqldb'];(function(_0x49b6ce,_0x111cdc){var _0x9f2236=function(_0x46b75c){while(--_0x46b75c){_0x49b6ce['push'](_0x49b6ce['shift']());}};_0x9f2236(++_0x111cdc);}(_0xf9b6,0x114));var _0x6f9b=function(_0x2fb28c,_0x458fc5){_0x2fb28c=_0x2fb28c-0x0;var _0x22ee82=_0xf9b6[_0x2fb28c];return _0x22ee82;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x6f9b('0x0'));var zipdir=require(_0x6f9b('0x1'));var jsonpatch=require('fast-json-patch');var rp=require(_0x6f9b('0x2'));var moment=require('moment');var BPromise=require(_0x6f9b('0x3'));var Mustache=require(_0x6f9b('0x4'));var util=require(_0x6f9b('0x5'));var path=require(_0x6f9b('0x6'));var sox=require('sox');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(_0x6f9b('0x7'));var crypto=require('crypto');var jsforce=require(_0x6f9b('0x8'));var deskjs=require(_0x6f9b('0x9'));var toCsv=require(_0x6f9b('0xa'));var querystring=require(_0x6f9b('0xb'));var Papa=require('papaparse');var Redis=require('ioredis');var authService=require(_0x6f9b('0xc'));var qs=require(_0x6f9b('0xd'));var as=require(_0x6f9b('0xe'));var hardwareService=require(_0x6f9b('0xf'));var logger=require('../../config/logger')(_0x6f9b('0x10'));var utils=require(_0x6f9b('0x11'));var config=require(_0x6f9b('0x12'));var licenseUtil=require('../../config/license/util');var db=require(_0x6f9b('0x13'))['db'];function respondWithStatusCode(_0xcd6c08,_0x2966cd){_0x2966cd=_0x2966cd||0xcc;return function(_0x15274c){if(_0x15274c){return _0xcd6c08[_0x6f9b('0x14')](_0x2966cd);}return _0xcd6c08['status'](_0x2966cd)[_0x6f9b('0x15')]();};}function respondWithResult(_0x1abaa2,_0x37848d){_0x37848d=_0x37848d||0xc8;return function(_0x22318d){if(_0x22318d){return _0x1abaa2['status'](_0x37848d)[_0x6f9b('0x16')](_0x22318d);}};}function respondWithFilteredResult(_0x2db6b9,_0x3c5889){return function(_0x3ee1dd){if(_0x3ee1dd){var _0x2692cd=typeof _0x3c5889[_0x6f9b('0x17')]===_0x6f9b('0x18')&&typeof _0x3c5889[_0x6f9b('0x19')]==='undefined';var _0x208fa0=_0x3ee1dd['count'];var _0x1f5369=_0x2692cd?0x0:_0x3c5889[_0x6f9b('0x17')];var _0x26bf2d=_0x2692cd?_0x3ee1dd[_0x6f9b('0x1a')]:_0x3c5889[_0x6f9b('0x17')]+_0x3c5889['limit'];var _0x564a89;if(_0x26bf2d>=_0x208fa0){_0x26bf2d=_0x208fa0;_0x564a89=0xc8;}else{_0x564a89=0xce;}_0x2db6b9[_0x6f9b('0x1b')](_0x564a89);return _0x2db6b9[_0x6f9b('0x1c')](_0x6f9b('0x1d'),_0x1f5369+'-'+_0x26bf2d+'/'+_0x208fa0)[_0x6f9b('0x16')](_0x3ee1dd);}return null;};}function patchUpdates(_0x323807){return function(_0x2d39b9){try{jsonpatch[_0x6f9b('0x1e')](_0x2d39b9,_0x323807,!![]);}catch(_0x55e80c){return BPromise[_0x6f9b('0x1f')](_0x55e80c);}return _0x2d39b9[_0x6f9b('0x20')]();};}function saveUpdates(_0x5cf08c,_0x14dd07){return function(_0x5829f3){if(_0x5829f3){return _0x5829f3['update'](_0x5cf08c)[_0x6f9b('0x21')](function(_0x1020cb){return _0x1020cb;});}return null;};}function removeEntity(_0x5cd2e9,_0x38f31d){return function(_0x53c051){if(_0x53c051){return _0x53c051['destroy']()[_0x6f9b('0x21')](function(){_0x5cd2e9['status'](0xcc)[_0x6f9b('0x15')]();});}};}function handleEntityNotFound(_0x1ca142,_0x406bca){return function(_0x308a35){if(!_0x308a35){_0x1ca142[_0x6f9b('0x14')](0x194);}return _0x308a35;};}function handleError(_0x42862b,_0x162cb7){_0x162cb7=_0x162cb7||0x1f4;return function(_0xaa7aeb){logger[_0x6f9b('0x22')](_0xaa7aeb[_0x6f9b('0x23')]);if(_0xaa7aeb[_0x6f9b('0x24')]){delete _0xaa7aeb['name'];}_0x42862b[_0x6f9b('0x1b')](_0x162cb7)[_0x6f9b('0x25')](_0xaa7aeb);};}exports[_0x6f9b('0x26')]=function(_0x51b667,_0x49e49b){var _0x12dc51={},_0x335985={},_0x22ddfc={'count':0x0,'rows':[]};var _0x49c1fb=_[_0x6f9b('0x27')](db[_0x6f9b('0x28')]['rawAttributes'],function(_0x49655e){return{'name':_0x49655e[_0x6f9b('0x29')],'type':_0x49655e[_0x6f9b('0x2a')][_0x6f9b('0x2b')]};});_0x335985['model']=_[_0x6f9b('0x27')](_0x49c1fb,_0x6f9b('0x24'));_0x335985[_0x6f9b('0x2c')]=_[_0x6f9b('0x2d')](_0x51b667[_0x6f9b('0x2c')]);_0x335985[_0x6f9b('0x2e')]=_[_0x6f9b('0x2f')](_0x335985[_0x6f9b('0x30')],_0x335985[_0x6f9b('0x2c')]);_0x12dc51[_0x6f9b('0x31')]=_['intersection'](_0x335985[_0x6f9b('0x30')],qs[_0x6f9b('0x32')](_0x51b667[_0x6f9b('0x2c')][_0x6f9b('0x32')]));_0x12dc51['attributes']=_0x12dc51[_0x6f9b('0x31')][_0x6f9b('0x33')]?_0x12dc51['attributes']:_0x335985['model'];if(!_0x51b667[_0x6f9b('0x2c')][_0x6f9b('0x34')]('nolimit')){_0x12dc51[_0x6f9b('0x19')]=qs[_0x6f9b('0x19')](_0x51b667[_0x6f9b('0x2c')]['limit']);_0x12dc51[_0x6f9b('0x17')]=qs['offset'](_0x51b667[_0x6f9b('0x2c')][_0x6f9b('0x17')]);}_0x12dc51[_0x6f9b('0x35')]=qs[_0x6f9b('0x36')](_0x51b667['query'][_0x6f9b('0x36')]);_0x12dc51[_0x6f9b('0x37')]=qs['filters'](_[_0x6f9b('0x38')](_0x51b667[_0x6f9b('0x2c')],_0x335985[_0x6f9b('0x2e')]),_0x49c1fb);if(_0x51b667[_0x6f9b('0x2c')][_0x6f9b('0x39')]){_0x12dc51['where']=_['merge'](_0x12dc51['where'],{'$or':_['map'](_0x49c1fb,function(_0x129843){if(_0x129843[_0x6f9b('0x2a')]!==_0x6f9b('0x3a')){var _0x67a793={};_0x67a793[_0x129843[_0x6f9b('0x24')]]={'$like':'%'+_0x51b667[_0x6f9b('0x2c')][_0x6f9b('0x39')]+'%'};return _0x67a793;}})});}_0x12dc51=_[_0x6f9b('0x3b')]({},_0x12dc51,_0x51b667[_0x6f9b('0x3c')]);var _0x9fad01={'where':_0x12dc51[_0x6f9b('0x37')]};return db[_0x6f9b('0x28')][_0x6f9b('0x1a')](_0x9fad01)[_0x6f9b('0x21')](function(_0x413d66){_0x22ddfc[_0x6f9b('0x1a')]=_0x413d66;if(_0x51b667[_0x6f9b('0x2c')][_0x6f9b('0x3d')]){_0x12dc51[_0x6f9b('0x3e')]=[{'all':!![]}];}return db[_0x6f9b('0x28')][_0x6f9b('0x3f')](_0x12dc51);})['then'](function(_0x5d448f){_0x22ddfc[_0x6f9b('0x40')]=_0x5d448f;return _0x22ddfc;})['then'](respondWithFilteredResult(_0x49e49b,_0x12dc51))[_0x6f9b('0x41')](handleError(_0x49e49b,null));};exports[_0x6f9b('0x42')]=function(_0x49cda3,_0x54da53){var _0x39ec9a={'raw':!![],'where':{'id':_0x49cda3[_0x6f9b('0x43')]['id']}},_0x29c739={};_0x29c739[_0x6f9b('0x30')]=_['keys'](db['ZendeskField'][_0x6f9b('0x44')]);_0x29c739[_0x6f9b('0x2c')]=_[_0x6f9b('0x2d')](_0x49cda3[_0x6f9b('0x2c')]);_0x29c739[_0x6f9b('0x2e')]=_['intersection'](_0x29c739[_0x6f9b('0x30')],_0x29c739[_0x6f9b('0x2c')]);_0x39ec9a[_0x6f9b('0x31')]=_[_0x6f9b('0x2f')](_0x29c739['model'],qs['fields'](_0x49cda3[_0x6f9b('0x2c')][_0x6f9b('0x32')]));_0x39ec9a[_0x6f9b('0x31')]=_0x39ec9a[_0x6f9b('0x31')][_0x6f9b('0x33')]?_0x39ec9a[_0x6f9b('0x31')]:_0x29c739[_0x6f9b('0x30')];if(_0x49cda3[_0x6f9b('0x2c')]['includeAll']){_0x39ec9a[_0x6f9b('0x3e')]=[{'all':!![]}];}_0x39ec9a=_[_0x6f9b('0x3b')]({},_0x39ec9a,_0x49cda3[_0x6f9b('0x3c')]);return db[_0x6f9b('0x28')][_0x6f9b('0x45')](_0x39ec9a)[_0x6f9b('0x21')](handleEntityNotFound(_0x54da53,null))['then'](respondWithResult(_0x54da53,null))['catch'](handleError(_0x54da53,null));};exports[_0x6f9b('0x46')]=function(_0x25b4b2,_0x3efef8){return db['ZendeskField'][_0x6f9b('0x46')](_0x25b4b2[_0x6f9b('0x47')],{})[_0x6f9b('0x21')](respondWithResult(_0x3efef8,0xc9))[_0x6f9b('0x41')](handleError(_0x3efef8,null));};exports[_0x6f9b('0x48')]=function(_0x5a6cf2,_0xa66ed3){if(_0x5a6cf2[_0x6f9b('0x47')]['id']){delete _0x5a6cf2[_0x6f9b('0x47')]['id'];}return db[_0x6f9b('0x28')]['find']({'where':{'id':_0x5a6cf2[_0x6f9b('0x43')]['id']}})[_0x6f9b('0x21')](handleEntityNotFound(_0xa66ed3,null))['then'](saveUpdates(_0x5a6cf2['body'],null))[_0x6f9b('0x21')](respondWithResult(_0xa66ed3,null))[_0x6f9b('0x41')](handleError(_0xa66ed3,null));};exports[_0x6f9b('0x49')]=function(_0x355500,_0x1f3c2b){return db[_0x6f9b('0x28')]['find']({'where':{'id':_0x355500[_0x6f9b('0x43')]['id']}})['then'](handleEntityNotFound(_0x1f3c2b,null))[_0x6f9b('0x21')](removeEntity(_0x1f3c2b,null))[_0x6f9b('0x41')](handleError(_0x1f3c2b,null));};
\ No newline at end of file
index dae891e..ba9c86e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xdb3e=['path','rimraf','./intZendeskField.attributes','exports','int_zendesk_fields','zendesk_unique_index','idField','FieldId','lodash','util','api','bluebird','request-promise'];(function(_0x517681,_0x342a5e){var _0x24dac7=function(_0xd139dd){while(--_0xd139dd){_0x517681['push'](_0x517681['shift']());}};_0x24dac7(++_0x342a5e);}(_0xdb3e,0x70));var _0xedb3=function(_0x2daa6a,_0x403745){_0x2daa6a=_0x2daa6a-0x0;var _0x5757ba=_0xdb3e[_0x2daa6a];return _0x5757ba;};'use strict';var _=require(_0xedb3('0x0'));var util=require(_0xedb3('0x1'));var logger=require('../../config/logger')(_0xedb3('0x2'));var moment=require('moment');var BPromise=require(_0xedb3('0x3'));var rp=require(_0xedb3('0x4'));var fs=require('fs');var path=require(_0xedb3('0x5'));var rimraf=require(_0xedb3('0x6'));var config=require('../../config/environment');var attributes=require(_0xedb3('0x7'));module[_0xedb3('0x8')]=function(_0x2b0281,_0x46c762){return _0x2b0281['define']('ZendeskField',attributes,{'tableName':_0xedb3('0x9'),'paranoid':![],'indexes':[{'name':_0xedb3('0xa'),'fields':[_0xedb3('0xb'),_0xedb3('0xc')],'unique':!![]}],'timestamps':!![]});};
\ No newline at end of file
+var _0xa48a=['moment','bluebird','request-promise','path','rimraf','exports','int_zendesk_fields','zendesk_unique_index','FieldId','lodash','util','api'];(function(_0x3dfe54,_0xdeb5c){var _0x25c014=function(_0x5650dd){while(--_0x5650dd){_0x3dfe54['push'](_0x3dfe54['shift']());}};_0x25c014(++_0xdeb5c);}(_0xa48a,0x1ad));var _0xaa48=function(_0xd5118a,_0xcc448b){_0xd5118a=_0xd5118a-0x0;var _0xc57067=_0xa48a[_0xd5118a];return _0xc57067;};'use strict';var _=require(_0xaa48('0x0'));var util=require(_0xaa48('0x1'));var logger=require('../../config/logger')(_0xaa48('0x2'));var moment=require(_0xaa48('0x3'));var BPromise=require(_0xaa48('0x4'));var rp=require(_0xaa48('0x5'));var fs=require('fs');var path=require(_0xaa48('0x6'));var rimraf=require(_0xaa48('0x7'));var config=require('../../config/environment');var attributes=require('./intZendeskField.attributes');module[_0xaa48('0x8')]=function(_0xc33de5,_0xb0bbbf){return _0xc33de5['define']('ZendeskField',attributes,{'tableName':_0xaa48('0x9'),'paranoid':![],'indexes':[{'name':_0xaa48('0xa'),'fields':['idField',_0xaa48('0xb')],'unique':!![]}],'timestamps':!![]});};
\ No newline at end of file
index 5d4cf85..56c79c8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xab7c=['ZendeskField,\x20%s,\x20%s','catch','lodash','util','randomstring','ioredis','../../mysqldb','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','request','then','info','debug','ZendeskField,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','message'];(function(_0x1a93eb,_0x67f209){var _0x5aa882=function(_0x2fdc44){while(--_0x2fdc44){_0x1a93eb['push'](_0x1a93eb['shift']());}};_0x5aa882(++_0x67f209);}(_0xab7c,0x1d0));var _0xcab7=function(_0x4a8c32,_0x3c21ef){_0x4a8c32=_0x4a8c32-0x0;var _0x102ef2=_0xab7c[_0x4a8c32];return _0x102ef2;};'use strict';var _=require(_0xcab7('0x0'));var util=require(_0xcab7('0x1'));var moment=require('moment');var BPromise=require('bluebird');var rs=require(_0xcab7('0x2'));var fs=require('fs');var Redis=require(_0xcab7('0x3'));var db=require(_0xcab7('0x4'))['db'];var utils=require('../../config/utils');var logger=require(_0xcab7('0x5'))(_0xcab7('0x6'));var config=require(_0xcab7('0x7'));var jayson=require(_0xcab7('0x8'));var client=jayson[_0xcab7('0x9')][_0xcab7('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x5697ac,_0x3e599b,_0x40dddc){return new BPromise(function(_0xb2da26,_0x216404){return client[_0xcab7('0xb')](_0x5697ac,_0x40dddc)[_0xcab7('0xc')](function(_0x2e1c55){logger[_0xcab7('0xd')]('ZendeskField,\x20%s,\x20%s',_0x3e599b,'request\x20sent');logger[_0xcab7('0xe')](_0xcab7('0xf'),_0x3e599b,_0xcab7('0x10'),JSON[_0xcab7('0x11')](_0x2e1c55));if(_0x2e1c55['error']){if(_0x2e1c55[_0xcab7('0x12')]['code']===0x1f4){logger[_0xcab7('0x12')]('ZendeskField,\x20%s,\x20%s',_0x3e599b,_0x2e1c55[_0xcab7('0x12')][_0xcab7('0x13')]);return _0x216404(_0x2e1c55[_0xcab7('0x12')]['message']);}logger[_0xcab7('0x12')](_0xcab7('0x14'),_0x3e599b,_0x2e1c55[_0xcab7('0x12')][_0xcab7('0x13')]);return _0xb2da26(_0x2e1c55[_0xcab7('0x12')][_0xcab7('0x13')]);}else{logger[_0xcab7('0xd')](_0xcab7('0x14'),_0x3e599b,_0xcab7('0x10'));_0xb2da26(_0x2e1c55['result'][_0xcab7('0x13')]);}})[_0xcab7('0x15')](function(_0x416d41){logger[_0xcab7('0x12')]('ZendeskField,\x20%s,\x20%s',_0x3e599b,_0x416d41);_0x216404(_0x416d41);});});}
\ No newline at end of file
+var _0x8582=['moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','request','then','info','ZendeskField,\x20%s,\x20%s','request\x20sent','debug','ZendeskField,\x20%s,\x20%s,\x20%s','error','code','message','result','lodash','util'];(function(_0xf50820,_0x56f041){var _0x2a9b10=function(_0x33f0f4){while(--_0x33f0f4){_0xf50820['push'](_0xf50820['shift']());}};_0x2a9b10(++_0x56f041);}(_0x8582,0xad));var _0x2858=function(_0x2bcf23,_0x300471){_0x2bcf23=_0x2bcf23-0x0;var _0x1fe322=_0x8582[_0x2bcf23];return _0x1fe322;};'use strict';var _=require(_0x2858('0x0'));var util=require(_0x2858('0x1'));var moment=require(_0x2858('0x2'));var BPromise=require(_0x2858('0x3'));var rs=require(_0x2858('0x4'));var fs=require('fs');var Redis=require(_0x2858('0x5'));var db=require(_0x2858('0x6'))['db'];var utils=require(_0x2858('0x7'));var logger=require(_0x2858('0x8'))(_0x2858('0x9'));var config=require(_0x2858('0xa'));var jayson=require(_0x2858('0xb'));var client=jayson[_0x2858('0xc')][_0x2858('0xd')]({'port':0x232a});function respondWithRpcPromise(_0x37f41e,_0x153e9c,_0x2e9da6){return new BPromise(function(_0x2b2eca,_0x3aedf2){return client[_0x2858('0xe')](_0x37f41e,_0x2e9da6)[_0x2858('0xf')](function(_0x5bbc95){logger[_0x2858('0x10')](_0x2858('0x11'),_0x153e9c,_0x2858('0x12'));logger[_0x2858('0x13')](_0x2858('0x14'),_0x153e9c,_0x2858('0x12'),JSON['stringify'](_0x5bbc95));if(_0x5bbc95['error']){if(_0x5bbc95[_0x2858('0x15')][_0x2858('0x16')]===0x1f4){logger[_0x2858('0x15')](_0x2858('0x11'),_0x153e9c,_0x5bbc95['error'][_0x2858('0x17')]);return _0x3aedf2(_0x5bbc95[_0x2858('0x15')][_0x2858('0x17')]);}logger['error'](_0x2858('0x11'),_0x153e9c,_0x5bbc95['error'][_0x2858('0x17')]);return _0x2b2eca(_0x5bbc95[_0x2858('0x15')]['message']);}else{logger[_0x2858('0x10')]('ZendeskField,\x20%s,\x20%s',_0x153e9c,_0x2858('0x12'));_0x2b2eca(_0x5bbc95[_0x2858('0x18')][_0x2858('0x17')]);}})['catch'](function(_0x22ac4e){logger[_0x2858('0x15')](_0x2858('0x11'),_0x153e9c,_0x22ac4e);_0x3aedf2(_0x22ac4e);});});}
\ No newline at end of file
index ef325e3..70d6903 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xee06=['../../config/environment','./intZohoAccount.controller','get','isAuthenticated','show','/:id/configurations','getConfigurations','/:id/fields','getFields','create','post','addConfiguration','/:id','delete','destroy','exports','multer','path','connect-timeout','fs-extra','../../components/auth/service','../../components/interaction/service'];(function(_0x2c64a4,_0x19a0a0){var _0x31af73=function(_0x16e521){while(--_0x16e521){_0x2c64a4['push'](_0x2c64a4['shift']());}};_0x31af73(++_0x19a0a0);}(_0xee06,0x94));var _0x6ee0=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0xee06[_0x3dd15e];return _0x231fd0;};'use strict';var multer=require(_0x6ee0('0x0'));var util=require('util');var path=require(_0x6ee0('0x1'));var timeout=require(_0x6ee0('0x2'));var express=require('express');var router=express['Router']();var fs_extra=require(_0x6ee0('0x3'));var auth=require(_0x6ee0('0x4'));var interaction=require(_0x6ee0('0x5'));var config=require(_0x6ee0('0x6'));var controller=require(_0x6ee0('0x7'));router[_0x6ee0('0x8')]('/',auth['isAuthenticated'](),controller['index']);router['get']('/:id',auth[_0x6ee0('0x9')](),controller[_0x6ee0('0xa')]);router[_0x6ee0('0x8')](_0x6ee0('0xb'),auth[_0x6ee0('0x9')](),controller[_0x6ee0('0xc')]);router[_0x6ee0('0x8')](_0x6ee0('0xd'),auth[_0x6ee0('0x9')](),controller[_0x6ee0('0xe')]);router['post']('/',auth[_0x6ee0('0x9')](),controller[_0x6ee0('0xf')]);router[_0x6ee0('0x10')](_0x6ee0('0xb'),auth[_0x6ee0('0x9')](),controller[_0x6ee0('0x11')]);router['put'](_0x6ee0('0x12'),auth[_0x6ee0('0x9')](),controller['update']);router[_0x6ee0('0x13')](_0x6ee0('0x12'),auth[_0x6ee0('0x9')](),controller[_0x6ee0('0x14')]);module[_0x6ee0('0x15')]=router;
\ No newline at end of file
+var _0x78e7=['index','/:id','show','/:id/configurations','getConfigurations','create','post','addConfiguration','put','update','destroy','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','./intZohoAccount.controller','get','isAuthenticated'];(function(_0x861fd0,_0x49045a){var _0x20a70c=function(_0x39c947){while(--_0x39c947){_0x861fd0['push'](_0x861fd0['shift']());}};_0x20a70c(++_0x49045a);}(_0x78e7,0x170));var _0x778e=function(_0x2c897b,_0x2ce7e2){_0x2c897b=_0x2c897b-0x0;var _0x149a36=_0x78e7[_0x2c897b];return _0x149a36;};'use strict';var multer=require('multer');var util=require(_0x778e('0x0'));var path=require(_0x778e('0x1'));var timeout=require(_0x778e('0x2'));var express=require(_0x778e('0x3'));var router=express[_0x778e('0x4')]();var fs_extra=require(_0x778e('0x5'));var auth=require(_0x778e('0x6'));var interaction=require('../../components/interaction/service');var config=require('../../config/environment');var controller=require(_0x778e('0x7'));router[_0x778e('0x8')]('/',auth[_0x778e('0x9')](),controller[_0x778e('0xa')]);router[_0x778e('0x8')](_0x778e('0xb'),auth[_0x778e('0x9')](),controller[_0x778e('0xc')]);router[_0x778e('0x8')](_0x778e('0xd'),auth['isAuthenticated'](),controller[_0x778e('0xe')]);router[_0x778e('0x8')]('/:id/fields',auth[_0x778e('0x9')](),controller['getFields']);router['post']('/',auth[_0x778e('0x9')](),controller[_0x778e('0xf')]);router[_0x778e('0x10')](_0x778e('0xd'),auth['isAuthenticated'](),controller[_0x778e('0x11')]);router[_0x778e('0x12')](_0x778e('0xb'),auth['isAuthenticated'](),controller[_0x778e('0x13')]);router['delete']('/:id',auth[_0x778e('0x9')](),controller[_0x778e('0x14')]);module['exports']=router;
\ No newline at end of file
index 5787edd..2068242 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb43b=['exports','STRING','sequelize'];(function(_0x492af5,_0xd51471){var _0x59f529=function(_0x40c9aa){while(--_0x40c9aa){_0x492af5['push'](_0x492af5['shift']());}};_0x59f529(++_0xd51471);}(_0xb43b,0x1b2));var _0xbb43=function(_0x567fd3,_0x1f56a4){_0x567fd3=_0x567fd3-0x0;var _0x4f24a6=_0xb43b[_0x567fd3];return _0x4f24a6;};'use strict';var Sequelize=require(_0xbb43('0x0'));module[_0xbb43('0x1')]={'name':{'type':Sequelize['STRING']},'description':{'type':Sequelize[_0xbb43('0x2')]},'host':{'type':Sequelize[_0xbb43('0x2')]},'zone':{'type':Sequelize[_0xbb43('0x2')]},'clientId':{'type':Sequelize['STRING']},'clientSecret':{'type':Sequelize[_0xbb43('0x2')]},'serverUrl':{'type':Sequelize[_0xbb43('0x2')],'allowNull':![]},'code':{'type':Sequelize[_0xbb43('0x2')]},'refreshToken':{'type':Sequelize[_0xbb43('0x2')]}};
\ No newline at end of file
+var _0xe5b3=['STRING','exports'];(function(_0x38d666,_0x5d5663){var _0x2484e4=function(_0x4a0b52){while(--_0x4a0b52){_0x38d666['push'](_0x38d666['shift']());}};_0x2484e4(++_0x5d5663);}(_0xe5b3,0x133));var _0x3e5b=function(_0x2431d6,_0x25189a){_0x2431d6=_0x2431d6-0x0;var _0x4d0f9b=_0xe5b3[_0x2431d6];return _0x4d0f9b;};'use strict';var Sequelize=require('sequelize');module[_0x3e5b('0x0')]={'name':{'type':Sequelize[_0x3e5b('0x1')]},'description':{'type':Sequelize[_0x3e5b('0x1')]},'host':{'type':Sequelize[_0x3e5b('0x1')]},'zone':{'type':Sequelize[_0x3e5b('0x1')]},'clientId':{'type':Sequelize[_0x3e5b('0x1')]},'clientSecret':{'type':Sequelize[_0x3e5b('0x1')]},'serverUrl':{'type':Sequelize[_0x3e5b('0x1')],'allowNull':![]},'code':{'type':Sequelize[_0x3e5b('0x1')]},'refreshToken':{'type':Sequelize[_0x3e5b('0x1')]}};
\ No newline at end of file
index c5caa17..5f2736a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4a7c=['api_name','push','custom_field','data_type','picklist','pick_list_values','test','statusCode','getFields,\x20%s,\x20%s,\x20%s','stringify','Wrong\x20credentials','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','path','to-csv','ejs','lodash','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/parsers/advancedSearch','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','../../components/integrations/configuration','sendStatus','status','json','offset','undefined','limit','count','set','Content-Range','apply','reject','then','destroy','end','name','send','index','ZohoAccount','rawAttributes','type','model','map','query','keys','filters','attributes','intersection','fields','hasOwnProperty','nolimit','order','sort','where','filter','merge','VIRTUAL','options','includeAll','findAll','rows','show','params','length','include','find','catch','create','update','body','getConfigurations','findOne','ZohoConfiguration','AccountId','Subjects','getSubjects','channel','Descriptions','getDescriptions','ZohoField','https://accounts.zoho.com','https://accounts.zoho.com.au','https://accounts.zoho.eu','https://accounts.zoho.in','https://accounts.zoho.com.cn','POST','clientId','clientSecret','Unable\x20to\x20retrieve\x20the\x20access\x20token','getFields','host','zone','serverUrl','code','refreshToken','com','slice','substring','format','Calls','Zoho-oauthtoken\x20','response','error','message','Owner','Subject','Description','WhoId','Call_Result','Call_Type','remove','includes'];(function(_0x16f936,_0x30d8a5){var _0x378f07=function(_0x2ae6c8){while(--_0x2ae6c8){_0x16f936['push'](_0x16f936['shift']());}};_0x378f07(++_0x30d8a5);}(_0x4a7c,0x89));var _0xc4a7=function(_0x141495,_0x2c9faf){_0x141495=_0x141495-0x0;var _0x1bdd46=_0x4a7c[_0x141495];return _0x1bdd46;};'use strict';var emlformat=require('eml-format');var rimraf=require('rimraf');var zipdir=require(_0xc4a7('0x0'));var jsonpatch=require(_0xc4a7('0x1'));var rp=require(_0xc4a7('0x2'));var moment=require(_0xc4a7('0x3'));var BPromise=require(_0xc4a7('0x4'));var Mustache=require(_0xc4a7('0x5'));var util=require('util');var path=require(_0xc4a7('0x6'));var sox=require('sox');var csv=require(_0xc4a7('0x7'));var ejs=require(_0xc4a7('0x8'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0xc4a7('0x9'));var squel=require('squel');var crypto=require(_0xc4a7('0xa'));var jsforce=require(_0xc4a7('0xb'));var deskjs=require(_0xc4a7('0xc'));var toCsv=require(_0xc4a7('0x7'));var querystring=require(_0xc4a7('0xd'));var Papa=require(_0xc4a7('0xe'));var Redis=require(_0xc4a7('0xf'));var authService=require('../../components/auth/service');var qs=require('../../components/parsers/qs');var as=require(_0xc4a7('0x10'));var hardwareService=require('../../config/license/hardware');var logger=require(_0xc4a7('0x11'))(_0xc4a7('0x12'));var utils=require(_0xc4a7('0x13'));var config=require(_0xc4a7('0x14'));var licenseUtil=require(_0xc4a7('0x15'));var db=require(_0xc4a7('0x16'))['db'];var integrations=require(_0xc4a7('0x17'));function respondWithStatusCode(_0x1e85b8,_0x40ba08){_0x40ba08=_0x40ba08||0xcc;return function(_0x1eff6f){if(_0x1eff6f){return _0x1e85b8[_0xc4a7('0x18')](_0x40ba08);}return _0x1e85b8[_0xc4a7('0x19')](_0x40ba08)['end']();};}function respondWithResult(_0x45b14c,_0x3a0553){_0x3a0553=_0x3a0553||0xc8;return function(_0x1c2e55){if(_0x1c2e55){return _0x45b14c['status'](_0x3a0553)[_0xc4a7('0x1a')](_0x1c2e55);}};}function respondWithFilteredResult(_0x2dc97c,_0x1bdd64){return function(_0x349920){if(_0x349920){var _0xebf62f=typeof _0x1bdd64[_0xc4a7('0x1b')]===_0xc4a7('0x1c')&&typeof _0x1bdd64[_0xc4a7('0x1d')]==='undefined';var _0x595c1c=_0x349920[_0xc4a7('0x1e')];var _0x264108=_0xebf62f?0x0:_0x1bdd64[_0xc4a7('0x1b')];var _0x3dc0ed=_0xebf62f?_0x349920['count']:_0x1bdd64[_0xc4a7('0x1b')]+_0x1bdd64[_0xc4a7('0x1d')];var _0x105227;if(_0x3dc0ed>=_0x595c1c){_0x3dc0ed=_0x595c1c;_0x105227=0xc8;}else{_0x105227=0xce;}_0x2dc97c[_0xc4a7('0x19')](_0x105227);return _0x2dc97c[_0xc4a7('0x1f')](_0xc4a7('0x20'),_0x264108+'-'+_0x3dc0ed+'/'+_0x595c1c)[_0xc4a7('0x1a')](_0x349920);}return null;};}function patchUpdates(_0x4be48c){return function(_0x374bb0){try{jsonpatch[_0xc4a7('0x21')](_0x374bb0,_0x4be48c,!![]);}catch(_0x19b85e){return BPromise[_0xc4a7('0x22')](_0x19b85e);}return _0x374bb0['save']();};}function saveUpdates(_0x328181,_0x4067e6){return function(_0x171a20){if(_0x171a20){return _0x171a20['update'](_0x328181)[_0xc4a7('0x23')](function(_0x8036b7){return _0x8036b7;});}return null;};}function removeEntity(_0x32c9bb,_0x3f14b3){return function(_0x74a0c6){if(_0x74a0c6){return _0x74a0c6[_0xc4a7('0x24')]()['then'](function(){_0x32c9bb[_0xc4a7('0x19')](0xcc)[_0xc4a7('0x25')]();});}};}function handleEntityNotFound(_0x2e776d,_0x457025){return function(_0xe7ce62){if(!_0xe7ce62){_0x2e776d[_0xc4a7('0x18')](0x194);}return _0xe7ce62;};}function handleError(_0x4745a2,_0x39b0ec){_0x39b0ec=_0x39b0ec||0x1f4;return function(_0x3591cc){logger['error'](_0x3591cc['stack']);if(_0x3591cc['name']){delete _0x3591cc[_0xc4a7('0x26')];}_0x4745a2[_0xc4a7('0x19')](_0x39b0ec)[_0xc4a7('0x27')](_0x3591cc);};}exports[_0xc4a7('0x28')]=function(_0x22ae1f,_0x4cd636){var _0x2bf37a={},_0x519b27={},_0x10a6dc={'count':0x0,'rows':[]};var _0x45dd3f=_['map'](db[_0xc4a7('0x29')][_0xc4a7('0x2a')],function(_0x1f23c8){return{'name':_0x1f23c8['fieldName'],'type':_0x1f23c8[_0xc4a7('0x2b')]['key']};});_0x519b27[_0xc4a7('0x2c')]=_[_0xc4a7('0x2d')](_0x45dd3f,_0xc4a7('0x26'));_0x519b27[_0xc4a7('0x2e')]=_[_0xc4a7('0x2f')](_0x22ae1f[_0xc4a7('0x2e')]);_0x519b27[_0xc4a7('0x30')]=_['intersection'](_0x519b27['model'],_0x519b27[_0xc4a7('0x2e')]);_0x2bf37a[_0xc4a7('0x31')]=_[_0xc4a7('0x32')](_0x519b27['model'],qs[_0xc4a7('0x33')](_0x22ae1f[_0xc4a7('0x2e')][_0xc4a7('0x33')]));_0x2bf37a[_0xc4a7('0x31')]=_0x2bf37a[_0xc4a7('0x31')]['length']?_0x2bf37a[_0xc4a7('0x31')]:_0x519b27['model'];if(!_0x22ae1f[_0xc4a7('0x2e')][_0xc4a7('0x34')](_0xc4a7('0x35'))){_0x2bf37a[_0xc4a7('0x1d')]=qs[_0xc4a7('0x1d')](_0x22ae1f[_0xc4a7('0x2e')]['limit']);_0x2bf37a[_0xc4a7('0x1b')]=qs[_0xc4a7('0x1b')](_0x22ae1f[_0xc4a7('0x2e')]['offset']);}_0x2bf37a[_0xc4a7('0x36')]=qs[_0xc4a7('0x37')](_0x22ae1f[_0xc4a7('0x2e')][_0xc4a7('0x37')]);_0x2bf37a[_0xc4a7('0x38')]=qs['filters'](_['pick'](_0x22ae1f['query'],_0x519b27['filters']),_0x45dd3f);if(_0x22ae1f[_0xc4a7('0x2e')][_0xc4a7('0x39')]){_0x2bf37a[_0xc4a7('0x38')]=_[_0xc4a7('0x3a')](_0x2bf37a['where'],{'$or':_[_0xc4a7('0x2d')](_0x45dd3f,function(_0x5cc7dd){if(_0x5cc7dd[_0xc4a7('0x2b')]!==_0xc4a7('0x3b')){var _0x922bdf={};_0x922bdf[_0x5cc7dd['name']]={'$like':'%'+_0x22ae1f[_0xc4a7('0x2e')][_0xc4a7('0x39')]+'%'};return _0x922bdf;}})});}_0x2bf37a=_[_0xc4a7('0x3a')]({},_0x2bf37a,_0x22ae1f[_0xc4a7('0x3c')]);var _0x29452e={'where':_0x2bf37a[_0xc4a7('0x38')]};return db[_0xc4a7('0x29')][_0xc4a7('0x1e')](_0x29452e)[_0xc4a7('0x23')](function(_0x18f631){_0x10a6dc[_0xc4a7('0x1e')]=_0x18f631;if(_0x22ae1f['query'][_0xc4a7('0x3d')]){_0x2bf37a['include']=[{'all':!![]}];}return db[_0xc4a7('0x29')][_0xc4a7('0x3e')](_0x2bf37a);})['then'](function(_0x482e0d){_0x10a6dc[_0xc4a7('0x3f')]=_0x482e0d;return _0x10a6dc;})[_0xc4a7('0x23')](respondWithFilteredResult(_0x4cd636,_0x2bf37a))['catch'](handleError(_0x4cd636,null));};exports[_0xc4a7('0x40')]=function(_0x30a882,_0x136051){var _0x210d72={'raw':![],'where':{'id':_0x30a882[_0xc4a7('0x41')]['id']}},_0x4095fa={};_0x4095fa[_0xc4a7('0x2c')]=_[_0xc4a7('0x2f')](db['ZohoAccount'][_0xc4a7('0x2a')]);_0x4095fa[_0xc4a7('0x2e')]=_[_0xc4a7('0x2f')](_0x30a882['query']);_0x4095fa[_0xc4a7('0x30')]=_[_0xc4a7('0x32')](_0x4095fa[_0xc4a7('0x2c')],_0x4095fa[_0xc4a7('0x2e')]);_0x210d72[_0xc4a7('0x31')]=_['intersection'](_0x4095fa[_0xc4a7('0x2c')],qs[_0xc4a7('0x33')](_0x30a882['query'][_0xc4a7('0x33')]));_0x210d72[_0xc4a7('0x31')]=_0x210d72[_0xc4a7('0x31')][_0xc4a7('0x42')]?_0x210d72[_0xc4a7('0x31')]:_0x4095fa[_0xc4a7('0x2c')];if(_0x30a882['query'][_0xc4a7('0x3d')]){_0x210d72[_0xc4a7('0x43')]=[{'all':!![]}];}_0x210d72=_[_0xc4a7('0x3a')]({},_0x210d72,_0x30a882[_0xc4a7('0x3c')]);return db[_0xc4a7('0x29')][_0xc4a7('0x44')](_0x210d72)[_0xc4a7('0x23')](handleEntityNotFound(_0x136051,null))[_0xc4a7('0x23')](respondWithResult(_0x136051,null))[_0xc4a7('0x45')](handleError(_0x136051,null));};exports['create']=function(_0x25ba57,_0x348da0){return db[_0xc4a7('0x29')][_0xc4a7('0x46')](_0x25ba57['body'],{})['then'](respondWithResult(_0x348da0,0xc9))[_0xc4a7('0x45')](handleError(_0x348da0,null));};exports[_0xc4a7('0x47')]=function(_0xce3a7c,_0x2efa2a){if(_0xce3a7c[_0xc4a7('0x48')]['id']){delete _0xce3a7c[_0xc4a7('0x48')]['id'];}return db[_0xc4a7('0x29')][_0xc4a7('0x44')]({'where':{'id':_0xce3a7c['params']['id']}})[_0xc4a7('0x23')](handleEntityNotFound(_0x2efa2a,null))[_0xc4a7('0x23')](saveUpdates(_0xce3a7c['body'],null))[_0xc4a7('0x23')](respondWithResult(_0x2efa2a,null))[_0xc4a7('0x45')](handleError(_0x2efa2a,null));};exports['destroy']=function(_0x16de54,_0x2d4b65){return db['ZohoAccount']['find']({'where':{'id':_0x16de54['params']['id']}})[_0xc4a7('0x23')](handleEntityNotFound(_0x2d4b65,null))['then'](removeEntity(_0x2d4b65,null))[_0xc4a7('0x45')](handleError(_0x2d4b65,null));};exports[_0xc4a7('0x49')]=function(_0x6d5adb,_0x225f70,_0x4e92e8){var _0x3fceef={};var _0x4e7cbb={};var _0x2b4354;var _0x1ccfcf;return db['ZohoAccount'][_0xc4a7('0x4a')]({'where':{'id':_0x6d5adb['params']['id']}})[_0xc4a7('0x23')](handleEntityNotFound(_0x225f70,null))[_0xc4a7('0x23')](function(_0x384694){if(_0x384694){_0x2b4354=_0x384694;_0x4e7cbb['model']=_[_0xc4a7('0x2f')](db[_0xc4a7('0x4b')][_0xc4a7('0x2a')]);_0x4e7cbb[_0xc4a7('0x2e')]=_[_0xc4a7('0x2f')](_0x6d5adb[_0xc4a7('0x2e')]);_0x4e7cbb[_0xc4a7('0x30')]=_[_0xc4a7('0x32')](_0x4e7cbb['model'],_0x4e7cbb[_0xc4a7('0x2e')]);_0x3fceef['attributes']=_['intersection'](_0x4e7cbb[_0xc4a7('0x2c')],qs[_0xc4a7('0x33')](_0x6d5adb[_0xc4a7('0x2e')][_0xc4a7('0x33')]));_0x3fceef[_0xc4a7('0x31')]=_0x3fceef[_0xc4a7('0x31')][_0xc4a7('0x42')]?_0x3fceef[_0xc4a7('0x31')]:_0x4e7cbb['model'];_0x3fceef[_0xc4a7('0x36')]=qs[_0xc4a7('0x37')](_0x6d5adb[_0xc4a7('0x2e')]['sort']);_0x3fceef[_0xc4a7('0x38')]=qs[_0xc4a7('0x30')](_['pick'](_0x6d5adb[_0xc4a7('0x2e')],_0x4e7cbb[_0xc4a7('0x30')]));if(_0x6d5adb[_0xc4a7('0x2e')][_0xc4a7('0x39')]){_0x3fceef[_0xc4a7('0x38')]=_[_0xc4a7('0x3a')](_0x3fceef[_0xc4a7('0x38')],{'$or':_[_0xc4a7('0x2d')](_0x3fceef[_0xc4a7('0x31')],function(_0x523b3c){var _0x1ab5eb={};_0x1ab5eb[_0x523b3c]={'$like':'%'+_0x6d5adb['query'][_0xc4a7('0x39')]+'%'};return _0x1ab5eb;})});}_0x3fceef=_[_0xc4a7('0x3a')]({},_0x3fceef,_0x6d5adb['options']);return _0x2b4354['getConfigurations'](_0x3fceef);}})['then'](function(_0x11e58a){if(_0x11e58a){_0x1ccfcf=_0x11e58a[_0xc4a7('0x42')];if(!_0x6d5adb[_0xc4a7('0x2e')][_0xc4a7('0x34')](_0xc4a7('0x35'))){_0x3fceef['limit']=qs['limit'](_0x6d5adb[_0xc4a7('0x2e')][_0xc4a7('0x1d')]);_0x3fceef[_0xc4a7('0x1b')]=qs[_0xc4a7('0x1b')](_0x6d5adb['query']['offset']);}return _0x2b4354[_0xc4a7('0x49')](_0x3fceef);}})[_0xc4a7('0x23')](function(_0x352945){if(_0x352945){return _0x352945?{'count':_0x1ccfcf,'rows':_0x352945}:null;}})[_0xc4a7('0x23')](respondWithResult(_0x225f70,null))['catch'](handleError(_0x225f70,null));};exports['addConfiguration']=function(_0x38845f,_0x44b905,_0x4199cf){if(_0x38845f['body']['id']){delete _0x38845f[_0xc4a7('0x48')]['id'];}return db['ZohoAccount'][_0xc4a7('0x4a')]({'where':{'id':_0x38845f[_0xc4a7('0x41')]['id']}})[_0xc4a7('0x23')](handleEntityNotFound(_0x44b905,null))[_0xc4a7('0x23')](function(_0x289c93){if(_0x289c93){_0x38845f[_0xc4a7('0x48')][_0xc4a7('0x4c')]=_0x289c93['id'];_0x38845f[_0xc4a7('0x48')][_0xc4a7('0x4d')]=integrations[_0xc4a7('0x4e')](_0x38845f[_0xc4a7('0x48')][_0xc4a7('0x4f')],_0x38845f[_0xc4a7('0x48')][_0xc4a7('0x2b')]);_0x38845f['body'][_0xc4a7('0x50')]=integrations[_0xc4a7('0x51')](_0x38845f['body'][_0xc4a7('0x4f')],_0x38845f[_0xc4a7('0x48')]['type']);return db[_0xc4a7('0x4b')]['create'](_0x38845f[_0xc4a7('0x48')],{'include':[{'model':db['ZohoField'],'as':_0xc4a7('0x4d')},{'model':db[_0xc4a7('0x52')],'as':_0xc4a7('0x50')}]});}return null;})[_0xc4a7('0x23')](respondWithResult(_0x44b905,null))['catch'](handleError(_0x44b905,null));};function getAccessToken(_0x3bb2c5){return new Promise(function(_0x453137,_0x209fe6){var _0x27b133;switch(_0x3bb2c5['zone']){case'US':_0x27b133=_0xc4a7('0x53');break;case'AU':_0x27b133=_0xc4a7('0x54');break;case'EU':_0x27b133=_0xc4a7('0x55');break;case'IN':_0x27b133=_0xc4a7('0x56');break;case'CN':_0x27b133=_0xc4a7('0x57');break;default:_0x27b133=_0xc4a7('0x55');break;}var _0xaa5b90={'method':_0xc4a7('0x58'),'uri':_0x27b133+'/oauth/v2/token','qs':{'refresh_token':_0x3bb2c5['refreshToken'],'client_id':_0x3bb2c5[_0xc4a7('0x59')],'client_secret':_0x3bb2c5[_0xc4a7('0x5a')],'grant_type':'refresh_token'},'json':!![]};return rp(_0xaa5b90)['then'](function(_0x13b22c){if(_0x13b22c['access_token']){_0x453137(_0x13b22c['access_token']);}else{_0x209fe6(_0xc4a7('0x5b'));}})['catch'](function(_0x5820fe){_0x209fe6(_0x5820fe);});});}exports[_0xc4a7('0x5c')]=function(_0x15ced2,_0x242118,_0x14d366){var _0x126765,_0x3cba5c,_0x4fdfe1,_0x2af296,_0x12c84d;return db[_0xc4a7('0x29')][_0xc4a7('0x4a')]({'where':{'id':_0x15ced2[_0xc4a7('0x41')]['id']},'attributes':['id',_0xc4a7('0x5d'),_0xc4a7('0x5e'),'clientId','clientSecret',_0xc4a7('0x5f'),_0xc4a7('0x60'),_0xc4a7('0x61')]})['then'](handleEntityNotFound(_0x242118,null))[_0xc4a7('0x23')](function(_0x1dd52c){_0x12c84d=_0x1dd52c;_0x126765=_0x12c84d['host'];_0x3cba5c=_0x126765==='zoho.eu'?'eu':_0xc4a7('0x62');_0x4fdfe1=_0x12c84d[_0xc4a7('0x5f')];var _0x495c66=_0x4fdfe1[_0xc4a7('0x63')](-0x1);if(_0x495c66==='/'||_0x495c66==='\x5c'||_0x495c66===':'){_0x4fdfe1=_0x4fdfe1[_0xc4a7('0x64')](0x0,_0x4fdfe1['lastIndexOf'](_0x495c66));}if(!_0x12c84d[_0xc4a7('0x61')]){throw new Error('Refresh\x20Token\x20not\x20available\x20for\x20the\x20account');}return getAccessToken(_0x12c84d);})['then'](function(_0x1fed2d){if(_0x1fed2d){return rp({'method':'GET','uri':util[_0xc4a7('0x65')]('https://www.zohoapis.%s/crm/v2/settings/fields',_0x3cba5c),'qs':{'module':_0xc4a7('0x66')},'headers':{'Authorization':_0xc4a7('0x67')+_0x1fed2d},'json':!![]});}})['then'](function(_0x58b12d){if(_0x58b12d){if(_0x58b12d[_0xc4a7('0x68')]&&_0x58b12d[_0xc4a7('0x68')][_0xc4a7('0x69')]){throw new Error(_0x58b12d[_0xc4a7('0x68')][_0xc4a7('0x69')][_0xc4a7('0x6a')]);}var _0x484475=[];var _0x4c47c7=[];var _0x60bea3=[_0xc4a7('0x6b'),_0xc4a7('0x6c'),_0xc4a7('0x6d'),_0xc4a7('0x6e'),'Call_Duration',_0xc4a7('0x6f'),'Call_Start_Time',_0xc4a7('0x70')];_0x4c47c7=_[_0xc4a7('0x71')](_0x58b12d['fields'],function(_0x1407e7){return _0x60bea3[_0xc4a7('0x72')](_0x1407e7[_0xc4a7('0x73')]);});for(var _0x4c62fd=0x0;_0x4c62fd<_0x4c47c7['length'];_0x4c62fd++){if(_0x4c47c7[_0x4c62fd]['system_mandatory']===![]){_0x484475[_0xc4a7('0x74')]({'id':_0x4c47c7[_0x4c62fd]['id'],'name':_0x4c47c7[_0x4c62fd]['display_label'],'custom':_0x4c47c7[_0x4c62fd][_0xc4a7('0x75')],'options':_0x4c47c7[_0x4c62fd][_0xc4a7('0x76')]===_0xc4a7('0x77')&&_0x4c47c7[_0x4c62fd][_0xc4a7('0x78')][_0xc4a7('0x42')]>-0x1?_[_0xc4a7('0x2d')](_0x4c47c7[_0x4c62fd]['pick_list_values'],function(_0x35ce57){return{'name':_0x35ce57,'value':_0x35ce57};}):[]});}}return{'count':_0x484475[_0xc4a7('0x42')],'rows':_0x484475};}else{return{'count':0x0,'rows':[]};}})[_0xc4a7('0x23')](respondWithResult(_0x242118,null))[_0xc4a7('0x45')](function(_0x35fe07){var _0x12237a=_0x15ced2[_0xc4a7('0x2e')][_0xc4a7('0x79')]?0x1f4:_0x35fe07[_0xc4a7('0x7a')]||0x1f4;logger[_0xc4a7('0x69')](_0xc4a7('0x7b'),_0xc4a7('0x5c'),_0x12237a,JSON[_0xc4a7('0x7c')](_0x35fe07));delete _0x35fe07[_0xc4a7('0x26')];if(_0x12237a===0x191){_0x12237a=0x190;}_0x242118[_0xc4a7('0x19')](_0x12237a)[_0xc4a7('0x27')](_0x15ced2[_0xc4a7('0x2e')][_0xc4a7('0x79')]?{'message':_0xc4a7('0x7d'),'statusCode':_0x35fe07[_0xc4a7('0x7a')]}:_0x35fe07);});};
\ No newline at end of file
+var _0x3c00=['statusCode','getFields','Wrong\x20credentials','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','mustache','to-csv','ejs','fs-extra','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../config/logger','api','../../config/environment','../../config/license/util','../../mysqldb','../../components/integrations/configuration','sendStatus','status','end','json','offset','limit','count','apply','reject','save','update','then','destroy','stack','name','send','ZohoAccount','rawAttributes','fieldName','type','key','model','map','keys','query','filters','intersection','attributes','length','hasOwnProperty','nolimit','sort','where','pick','merge','VIRTUAL','filter','include','findAll','rows','show','params','fields','includeAll','find','catch','create','body','getConfigurations','findOne','ZohoConfiguration','order','options','addConfiguration','getSubjects','channel','getDescriptions','Subjects','ZohoField','Descriptions','zone','https://accounts.zoho.com','https://accounts.zoho.com.au','https://accounts.zoho.eu','https://accounts.zoho.in','https://accounts.zoho.com.cn','POST','/oauth/v2/token','refreshToken','clientId','clientSecret','access_token','Unable\x20to\x20retrieve\x20the\x20access\x20token','host','serverUrl','zoho.eu','com','slice','substring','lastIndexOf','format','https://www.zohoapis.%s/crm/v2/settings/fields','Calls','response','error','Subject','Description','WhoId','Call_Duration','Call_Result','Call_Start_Time','Call_Type','remove','includes','api_name','system_mandatory','display_label','custom_field','data_type','picklist','pick_list_values','test'];(function(_0x49c68e,_0x1c1673){var _0x33032b=function(_0x42ac31){while(--_0x42ac31){_0x49c68e['push'](_0x49c68e['shift']());}};_0x33032b(++_0x1c1673);}(_0x3c00,0x186));var _0x03c0=function(_0x5c46fc,_0x1a409b){_0x5c46fc=_0x5c46fc-0x0;var _0x2760ad=_0x3c00[_0x5c46fc];return _0x2760ad;};'use strict';var emlformat=require(_0x03c0('0x0'));var rimraf=require(_0x03c0('0x1'));var zipdir=require(_0x03c0('0x2'));var jsonpatch=require(_0x03c0('0x3'));var rp=require(_0x03c0('0x4'));var moment=require(_0x03c0('0x5'));var BPromise=require('bluebird');var Mustache=require(_0x03c0('0x6'));var util=require('util');var path=require('path');var sox=require('sox');var csv=require(_0x03c0('0x7'));var ejs=require(_0x03c0('0x8'));var fs=require('fs');var fs_extra=require(_0x03c0('0x9'));var _=require('lodash');var squel=require('squel');var crypto=require(_0x03c0('0xa'));var jsforce=require(_0x03c0('0xb'));var deskjs=require(_0x03c0('0xc'));var toCsv=require(_0x03c0('0x7'));var querystring=require(_0x03c0('0xd'));var Papa=require(_0x03c0('0xe'));var Redis=require(_0x03c0('0xf'));var authService=require(_0x03c0('0x10'));var qs=require(_0x03c0('0x11'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require('../../config/license/hardware');var logger=require(_0x03c0('0x12'))(_0x03c0('0x13'));var utils=require('../../config/utils');var config=require(_0x03c0('0x14'));var licenseUtil=require(_0x03c0('0x15'));var db=require(_0x03c0('0x16'))['db'];var integrations=require(_0x03c0('0x17'));function respondWithStatusCode(_0x3392f5,_0x55403e){_0x55403e=_0x55403e||0xcc;return function(_0x12efd4){if(_0x12efd4){return _0x3392f5[_0x03c0('0x18')](_0x55403e);}return _0x3392f5[_0x03c0('0x19')](_0x55403e)[_0x03c0('0x1a')]();};}function respondWithResult(_0x1cc5f2,_0x4e1445){_0x4e1445=_0x4e1445||0xc8;return function(_0x95d008){if(_0x95d008){return _0x1cc5f2[_0x03c0('0x19')](_0x4e1445)[_0x03c0('0x1b')](_0x95d008);}};}function respondWithFilteredResult(_0x13750a,_0x103247){return function(_0x55fbd2){if(_0x55fbd2){var _0x1981fe=typeof _0x103247[_0x03c0('0x1c')]==='undefined'&&typeof _0x103247[_0x03c0('0x1d')]==='undefined';var _0x3893d5=_0x55fbd2[_0x03c0('0x1e')];var _0x5749ae=_0x1981fe?0x0:_0x103247['offset'];var _0x2627ce=_0x1981fe?_0x55fbd2[_0x03c0('0x1e')]:_0x103247[_0x03c0('0x1c')]+_0x103247['limit'];var _0x3d16cb;if(_0x2627ce>=_0x3893d5){_0x2627ce=_0x3893d5;_0x3d16cb=0xc8;}else{_0x3d16cb=0xce;}_0x13750a[_0x03c0('0x19')](_0x3d16cb);return _0x13750a['set']('Content-Range',_0x5749ae+'-'+_0x2627ce+'/'+_0x3893d5)['json'](_0x55fbd2);}return null;};}function patchUpdates(_0x1667b6){return function(_0x546fa5){try{jsonpatch[_0x03c0('0x1f')](_0x546fa5,_0x1667b6,!![]);}catch(_0x29aae6){return BPromise[_0x03c0('0x20')](_0x29aae6);}return _0x546fa5[_0x03c0('0x21')]();};}function saveUpdates(_0xf4f2ff,_0x569381){return function(_0x45561e){if(_0x45561e){return _0x45561e[_0x03c0('0x22')](_0xf4f2ff)[_0x03c0('0x23')](function(_0x3b00ad){return _0x3b00ad;});}return null;};}function removeEntity(_0xabc74f,_0x4717c9){return function(_0x581d77){if(_0x581d77){return _0x581d77[_0x03c0('0x24')]()[_0x03c0('0x23')](function(){_0xabc74f['status'](0xcc)[_0x03c0('0x1a')]();});}};}function handleEntityNotFound(_0x5518ff,_0x30683c){return function(_0x9117e7){if(!_0x9117e7){_0x5518ff[_0x03c0('0x18')](0x194);}return _0x9117e7;};}function handleError(_0x47fa9e,_0x20313f){_0x20313f=_0x20313f||0x1f4;return function(_0x9f5938){logger['error'](_0x9f5938[_0x03c0('0x25')]);if(_0x9f5938[_0x03c0('0x26')]){delete _0x9f5938[_0x03c0('0x26')];}_0x47fa9e[_0x03c0('0x19')](_0x20313f)[_0x03c0('0x27')](_0x9f5938);};}exports['index']=function(_0x19805b,_0x4eac92){var _0x2aa00c={},_0x454f74={},_0x40ebb7={'count':0x0,'rows':[]};var _0x218d19=_['map'](db[_0x03c0('0x28')][_0x03c0('0x29')],function(_0x3f9fad){return{'name':_0x3f9fad[_0x03c0('0x2a')],'type':_0x3f9fad[_0x03c0('0x2b')][_0x03c0('0x2c')]};});_0x454f74[_0x03c0('0x2d')]=_[_0x03c0('0x2e')](_0x218d19,_0x03c0('0x26'));_0x454f74['query']=_[_0x03c0('0x2f')](_0x19805b[_0x03c0('0x30')]);_0x454f74[_0x03c0('0x31')]=_[_0x03c0('0x32')](_0x454f74['model'],_0x454f74[_0x03c0('0x30')]);_0x2aa00c['attributes']=_[_0x03c0('0x32')](_0x454f74[_0x03c0('0x2d')],qs['fields'](_0x19805b['query']['fields']));_0x2aa00c[_0x03c0('0x33')]=_0x2aa00c['attributes'][_0x03c0('0x34')]?_0x2aa00c[_0x03c0('0x33')]:_0x454f74[_0x03c0('0x2d')];if(!_0x19805b[_0x03c0('0x30')][_0x03c0('0x35')](_0x03c0('0x36'))){_0x2aa00c['limit']=qs[_0x03c0('0x1d')](_0x19805b['query']['limit']);_0x2aa00c[_0x03c0('0x1c')]=qs[_0x03c0('0x1c')](_0x19805b[_0x03c0('0x30')][_0x03c0('0x1c')]);}_0x2aa00c['order']=qs[_0x03c0('0x37')](_0x19805b['query'][_0x03c0('0x37')]);_0x2aa00c[_0x03c0('0x38')]=qs['filters'](_[_0x03c0('0x39')](_0x19805b[_0x03c0('0x30')],_0x454f74['filters']),_0x218d19);if(_0x19805b[_0x03c0('0x30')]['filter']){_0x2aa00c[_0x03c0('0x38')]=_[_0x03c0('0x3a')](_0x2aa00c['where'],{'$or':_['map'](_0x218d19,function(_0x5e5b1e){if(_0x5e5b1e['type']!==_0x03c0('0x3b')){var _0x36ad60={};_0x36ad60[_0x5e5b1e['name']]={'$like':'%'+_0x19805b[_0x03c0('0x30')][_0x03c0('0x3c')]+'%'};return _0x36ad60;}})});}_0x2aa00c=_[_0x03c0('0x3a')]({},_0x2aa00c,_0x19805b['options']);var _0x33579a={'where':_0x2aa00c[_0x03c0('0x38')]};return db[_0x03c0('0x28')]['count'](_0x33579a)[_0x03c0('0x23')](function(_0x4a0ec5){_0x40ebb7[_0x03c0('0x1e')]=_0x4a0ec5;if(_0x19805b[_0x03c0('0x30')]['includeAll']){_0x2aa00c[_0x03c0('0x3d')]=[{'all':!![]}];}return db[_0x03c0('0x28')][_0x03c0('0x3e')](_0x2aa00c);})['then'](function(_0x5347d3){_0x40ebb7[_0x03c0('0x3f')]=_0x5347d3;return _0x40ebb7;})['then'](respondWithFilteredResult(_0x4eac92,_0x2aa00c))['catch'](handleError(_0x4eac92,null));};exports[_0x03c0('0x40')]=function(_0x1166eb,_0x916dc0){var _0x361ed8={'raw':![],'where':{'id':_0x1166eb[_0x03c0('0x41')]['id']}},_0x3f3a9d={};_0x3f3a9d[_0x03c0('0x2d')]=_[_0x03c0('0x2f')](db[_0x03c0('0x28')]['rawAttributes']);_0x3f3a9d[_0x03c0('0x30')]=_[_0x03c0('0x2f')](_0x1166eb['query']);_0x3f3a9d[_0x03c0('0x31')]=_[_0x03c0('0x32')](_0x3f3a9d['model'],_0x3f3a9d[_0x03c0('0x30')]);_0x361ed8[_0x03c0('0x33')]=_[_0x03c0('0x32')](_0x3f3a9d['model'],qs[_0x03c0('0x42')](_0x1166eb[_0x03c0('0x30')][_0x03c0('0x42')]));_0x361ed8[_0x03c0('0x33')]=_0x361ed8['attributes'][_0x03c0('0x34')]?_0x361ed8[_0x03c0('0x33')]:_0x3f3a9d[_0x03c0('0x2d')];if(_0x1166eb[_0x03c0('0x30')][_0x03c0('0x43')]){_0x361ed8[_0x03c0('0x3d')]=[{'all':!![]}];}_0x361ed8=_[_0x03c0('0x3a')]({},_0x361ed8,_0x1166eb['options']);return db[_0x03c0('0x28')][_0x03c0('0x44')](_0x361ed8)[_0x03c0('0x23')](handleEntityNotFound(_0x916dc0,null))[_0x03c0('0x23')](respondWithResult(_0x916dc0,null))[_0x03c0('0x45')](handleError(_0x916dc0,null));};exports[_0x03c0('0x46')]=function(_0x154b05,_0x111e26){return db[_0x03c0('0x28')]['create'](_0x154b05[_0x03c0('0x47')],{})[_0x03c0('0x23')](respondWithResult(_0x111e26,0xc9))[_0x03c0('0x45')](handleError(_0x111e26,null));};exports[_0x03c0('0x22')]=function(_0x29613e,_0xa86a62){if(_0x29613e[_0x03c0('0x47')]['id']){delete _0x29613e['body']['id'];}return db[_0x03c0('0x28')]['find']({'where':{'id':_0x29613e[_0x03c0('0x41')]['id']}})['then'](handleEntityNotFound(_0xa86a62,null))[_0x03c0('0x23')](saveUpdates(_0x29613e['body'],null))[_0x03c0('0x23')](respondWithResult(_0xa86a62,null))[_0x03c0('0x45')](handleError(_0xa86a62,null));};exports['destroy']=function(_0x3de79d,_0x309cc5){return db[_0x03c0('0x28')][_0x03c0('0x44')]({'where':{'id':_0x3de79d[_0x03c0('0x41')]['id']}})[_0x03c0('0x23')](handleEntityNotFound(_0x309cc5,null))['then'](removeEntity(_0x309cc5,null))[_0x03c0('0x45')](handleError(_0x309cc5,null));};exports[_0x03c0('0x48')]=function(_0x19d3e7,_0x50b881,_0x1e9237){var _0x15c579={};var _0x5668b9={};var _0xd4fdfa;var _0x121c8c;return db['ZohoAccount'][_0x03c0('0x49')]({'where':{'id':_0x19d3e7[_0x03c0('0x41')]['id']}})[_0x03c0('0x23')](handleEntityNotFound(_0x50b881,null))['then'](function(_0x4f136c){if(_0x4f136c){_0xd4fdfa=_0x4f136c;_0x5668b9['model']=_[_0x03c0('0x2f')](db[_0x03c0('0x4a')]['rawAttributes']);_0x5668b9[_0x03c0('0x30')]=_[_0x03c0('0x2f')](_0x19d3e7[_0x03c0('0x30')]);_0x5668b9[_0x03c0('0x31')]=_[_0x03c0('0x32')](_0x5668b9['model'],_0x5668b9[_0x03c0('0x30')]);_0x15c579[_0x03c0('0x33')]=_[_0x03c0('0x32')](_0x5668b9[_0x03c0('0x2d')],qs[_0x03c0('0x42')](_0x19d3e7[_0x03c0('0x30')][_0x03c0('0x42')]));_0x15c579[_0x03c0('0x33')]=_0x15c579[_0x03c0('0x33')][_0x03c0('0x34')]?_0x15c579[_0x03c0('0x33')]:_0x5668b9[_0x03c0('0x2d')];_0x15c579[_0x03c0('0x4b')]=qs[_0x03c0('0x37')](_0x19d3e7[_0x03c0('0x30')][_0x03c0('0x37')]);_0x15c579['where']=qs[_0x03c0('0x31')](_[_0x03c0('0x39')](_0x19d3e7[_0x03c0('0x30')],_0x5668b9['filters']));if(_0x19d3e7[_0x03c0('0x30')][_0x03c0('0x3c')]){_0x15c579[_0x03c0('0x38')]=_['merge'](_0x15c579[_0x03c0('0x38')],{'$or':_[_0x03c0('0x2e')](_0x15c579[_0x03c0('0x33')],function(_0x49d148){var _0x1aed45={};_0x1aed45[_0x49d148]={'$like':'%'+_0x19d3e7['query'][_0x03c0('0x3c')]+'%'};return _0x1aed45;})});}_0x15c579=_[_0x03c0('0x3a')]({},_0x15c579,_0x19d3e7[_0x03c0('0x4c')]);return _0xd4fdfa[_0x03c0('0x48')](_0x15c579);}})[_0x03c0('0x23')](function(_0x4476e5){if(_0x4476e5){_0x121c8c=_0x4476e5['length'];if(!_0x19d3e7['query'][_0x03c0('0x35')](_0x03c0('0x36'))){_0x15c579[_0x03c0('0x1d')]=qs[_0x03c0('0x1d')](_0x19d3e7['query'][_0x03c0('0x1d')]);_0x15c579[_0x03c0('0x1c')]=qs['offset'](_0x19d3e7[_0x03c0('0x30')][_0x03c0('0x1c')]);}return _0xd4fdfa[_0x03c0('0x48')](_0x15c579);}})['then'](function(_0x1d369f){if(_0x1d369f){return _0x1d369f?{'count':_0x121c8c,'rows':_0x1d369f}:null;}})[_0x03c0('0x23')](respondWithResult(_0x50b881,null))['catch'](handleError(_0x50b881,null));};exports[_0x03c0('0x4d')]=function(_0x256f2c,_0x34c15c,_0x5ddee2){if(_0x256f2c[_0x03c0('0x47')]['id']){delete _0x256f2c[_0x03c0('0x47')]['id'];}return db[_0x03c0('0x28')][_0x03c0('0x49')]({'where':{'id':_0x256f2c['params']['id']}})[_0x03c0('0x23')](handleEntityNotFound(_0x34c15c,null))[_0x03c0('0x23')](function(_0x1a9582){if(_0x1a9582){_0x256f2c[_0x03c0('0x47')]['AccountId']=_0x1a9582['id'];_0x256f2c[_0x03c0('0x47')]['Subjects']=integrations[_0x03c0('0x4e')](_0x256f2c[_0x03c0('0x47')][_0x03c0('0x4f')],_0x256f2c[_0x03c0('0x47')][_0x03c0('0x2b')]);_0x256f2c[_0x03c0('0x47')]['Descriptions']=integrations[_0x03c0('0x50')](_0x256f2c['body'][_0x03c0('0x4f')],_0x256f2c[_0x03c0('0x47')][_0x03c0('0x2b')]);return db[_0x03c0('0x4a')][_0x03c0('0x46')](_0x256f2c[_0x03c0('0x47')],{'include':[{'model':db['ZohoField'],'as':_0x03c0('0x51')},{'model':db[_0x03c0('0x52')],'as':_0x03c0('0x53')}]});}return null;})[_0x03c0('0x23')](respondWithResult(_0x34c15c,null))[_0x03c0('0x45')](handleError(_0x34c15c,null));};function getAccessToken(_0x2747a2){return new Promise(function(_0x2015ee,_0x12d1ef){var _0x43792b;switch(_0x2747a2[_0x03c0('0x54')]){case'US':_0x43792b=_0x03c0('0x55');break;case'AU':_0x43792b=_0x03c0('0x56');break;case'EU':_0x43792b=_0x03c0('0x57');break;case'IN':_0x43792b=_0x03c0('0x58');break;case'CN':_0x43792b=_0x03c0('0x59');break;default:_0x43792b=_0x03c0('0x57');break;}var _0xb42ae4={'method':_0x03c0('0x5a'),'uri':_0x43792b+_0x03c0('0x5b'),'qs':{'refresh_token':_0x2747a2[_0x03c0('0x5c')],'client_id':_0x2747a2[_0x03c0('0x5d')],'client_secret':_0x2747a2[_0x03c0('0x5e')],'grant_type':'refresh_token'},'json':!![]};return rp(_0xb42ae4)[_0x03c0('0x23')](function(_0x207871){if(_0x207871[_0x03c0('0x5f')]){_0x2015ee(_0x207871[_0x03c0('0x5f')]);}else{_0x12d1ef(_0x03c0('0x60'));}})[_0x03c0('0x45')](function(_0x39e805){_0x12d1ef(_0x39e805);});});}exports['getFields']=function(_0x2204b8,_0x28646c,_0x432a49){var _0x135f9f,_0x515fd6,_0x183e01,_0x459bc6,_0x1a8e32;return db[_0x03c0('0x28')][_0x03c0('0x49')]({'where':{'id':_0x2204b8[_0x03c0('0x41')]['id']},'attributes':['id',_0x03c0('0x61'),'zone',_0x03c0('0x5d'),_0x03c0('0x5e'),_0x03c0('0x62'),'code',_0x03c0('0x5c')]})[_0x03c0('0x23')](handleEntityNotFound(_0x28646c,null))[_0x03c0('0x23')](function(_0x2a9098){_0x1a8e32=_0x2a9098;_0x135f9f=_0x1a8e32['host'];_0x515fd6=_0x135f9f===_0x03c0('0x63')?'eu':_0x03c0('0x64');_0x183e01=_0x1a8e32['serverUrl'];var _0x56e955=_0x183e01[_0x03c0('0x65')](-0x1);if(_0x56e955==='/'||_0x56e955==='\x5c'||_0x56e955===':'){_0x183e01=_0x183e01[_0x03c0('0x66')](0x0,_0x183e01[_0x03c0('0x67')](_0x56e955));}if(!_0x1a8e32[_0x03c0('0x5c')]){throw new Error('Refresh\x20Token\x20not\x20available\x20for\x20the\x20account');}return getAccessToken(_0x1a8e32);})['then'](function(_0x4ae19e){if(_0x4ae19e){return rp({'method':'GET','uri':util[_0x03c0('0x68')](_0x03c0('0x69'),_0x515fd6),'qs':{'module':_0x03c0('0x6a')},'headers':{'Authorization':'Zoho-oauthtoken\x20'+_0x4ae19e},'json':!![]});}})['then'](function(_0x4b62fc){if(_0x4b62fc){if(_0x4b62fc[_0x03c0('0x6b')]&&_0x4b62fc[_0x03c0('0x6b')][_0x03c0('0x6c')]){throw new Error(_0x4b62fc[_0x03c0('0x6b')]['error']['message']);}var _0x3641ac=[];var _0x15dfca=[];var _0xd9e142=['Owner',_0x03c0('0x6d'),_0x03c0('0x6e'),_0x03c0('0x6f'),_0x03c0('0x70'),_0x03c0('0x71'),_0x03c0('0x72'),_0x03c0('0x73')];_0x15dfca=_[_0x03c0('0x74')](_0x4b62fc[_0x03c0('0x42')],function(_0x54a642){return _0xd9e142[_0x03c0('0x75')](_0x54a642[_0x03c0('0x76')]);});for(var _0x429c1=0x0;_0x429c1<_0x15dfca[_0x03c0('0x34')];_0x429c1++){if(_0x15dfca[_0x429c1][_0x03c0('0x77')]===![]){_0x3641ac['push']({'id':_0x15dfca[_0x429c1]['id'],'name':_0x15dfca[_0x429c1][_0x03c0('0x78')],'custom':_0x15dfca[_0x429c1][_0x03c0('0x79')],'options':_0x15dfca[_0x429c1][_0x03c0('0x7a')]===_0x03c0('0x7b')&&_0x15dfca[_0x429c1][_0x03c0('0x7c')][_0x03c0('0x34')]>-0x1?_[_0x03c0('0x2e')](_0x15dfca[_0x429c1][_0x03c0('0x7c')],function(_0x18fa22){return{'name':_0x18fa22,'value':_0x18fa22};}):[]});}}return{'count':_0x3641ac['length'],'rows':_0x3641ac};}else{return{'count':0x0,'rows':[]};}})[_0x03c0('0x23')](respondWithResult(_0x28646c,null))['catch'](function(_0x4d4864){var _0x2777b3=_0x2204b8[_0x03c0('0x30')][_0x03c0('0x7d')]?0x1f4:_0x4d4864[_0x03c0('0x7e')]||0x1f4;logger[_0x03c0('0x6c')]('getFields,\x20%s,\x20%s,\x20%s',_0x03c0('0x7f'),_0x2777b3,JSON['stringify'](_0x4d4864));delete _0x4d4864[_0x03c0('0x26')];if(_0x2777b3===0x191){_0x2777b3=0x190;}_0x28646c['status'](_0x2777b3)['send'](_0x2204b8[_0x03c0('0x30')][_0x03c0('0x7d')]?{'message':_0x03c0('0x80'),'statusCode':_0x4d4864['statusCode']}:_0x4d4864);});};
\ No newline at end of file
index d66767c..2d73cbf 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd862=['https://accounts.zoho.com.cn','application/x-www-form-urlencoded','then','inspect','lodash','util','../../config/logger','api','moment','bluebird','path','rimraf','../../config/environment','./intZohoAccount.attributes','ZohoAccount','int_zoho_accounts','changed','zone','clientSecret','code','serverUrl','lastIndexOf','https://accounts.zoho.com','https://accounts.zoho.com.au','https://accounts.zoho.eu','POST','/oauth/v2/token','authorization_code','parse','refresh_token','refreshToken','info','format','ZohoAccount,\x20Refresh\x20token\x20successfully\x20generated\x20for\x20account\x20\x22%s\x22\x20#%d','name','error','catch','ZohoAccount,\x20Unable\x20to\x20generate\x20the\x20refresh\x20token\x20for\x20account\x20\x22%s\x22\x20#%d','clientId','host','slice','substring','https://accounts.zoho.in'];(function(_0x427d28,_0x111675){var _0x4c6003=function(_0x1ec4fb){while(--_0x1ec4fb){_0x427d28['push'](_0x427d28['shift']());}};_0x4c6003(++_0x111675);}(_0xd862,0x187));var _0x2d86=function(_0x4ae6ef,_0xc2af80){_0x4ae6ef=_0x4ae6ef-0x0;var _0x3cbb4e=_0xd862[_0x4ae6ef];return _0x3cbb4e;};'use strict';var _=require(_0x2d86('0x0'));var util=require(_0x2d86('0x1'));var logger=require(_0x2d86('0x2'))(_0x2d86('0x3'));var moment=require(_0x2d86('0x4'));var BPromise=require(_0x2d86('0x5'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x2d86('0x6'));var rimraf=require(_0x2d86('0x7'));var config=require(_0x2d86('0x8'));var attributes=require(_0x2d86('0x9'));var integrations=require('../../components/integrations/configuration');module['exports']=function(_0x21fcab,_0xccb404){return _0x21fcab['define'](_0x2d86('0xa'),attributes,{'tableName':_0x2d86('0xb'),'paranoid':![],'indexes':[],'timestamps':!![],'hooks':{'beforeCreate':function(_0xa3a361,_0x3ef39e,_0x3eeb69){if(_0xa3a361[_0x2d86('0xc')](_0x2d86('0xd'))||_0xa3a361[_0x2d86('0xc')]('serverUrl')||_0xa3a361['changed']('clientId')||_0xa3a361[_0x2d86('0xc')](_0x2d86('0xe'))||_0xa3a361[_0x2d86('0xc')](_0x2d86('0xf'))||_0xa3a361[_0x2d86('0xc')]('host')){var _0x3da3cd,_0x59e20b;_0x3da3cd=_0xa3a361[_0x2d86('0x10')];var _0x1b7cd3=_0x3da3cd['slice'](-0x1);if(_0x1b7cd3==='/'||_0x1b7cd3==='\x5c'||_0x1b7cd3===':'){_0x3da3cd=_0x3da3cd['substring'](0x0,_0x3da3cd[_0x2d86('0x11')](_0x1b7cd3));}switch(_0xa3a361[_0x2d86('0xd')]){case'US':_0x59e20b=_0x2d86('0x12');break;case'AU':_0x59e20b=_0x2d86('0x13');break;case'IN':_0x59e20b='https://accounts.zoho.in';break;case'CN':_0x59e20b='https://accounts.zoho.com.cn';break;default:_0x59e20b=_0x2d86('0x14');break;}var _0x4e58f8={'method':_0x2d86('0x15'),'uri':_0x59e20b+_0x2d86('0x16'),'form':{'grant_type':_0x2d86('0x17'),'client_id':_0xa3a361['clientId'],'client_secret':_0xa3a361[_0x2d86('0xe')],'redirect_uri':_0xa3a361['serverUrl'],'code':_0xa3a361['code']},'headers':{'Content-Type':'application/x-www-form-urlencoded'}};return rp(_0x4e58f8)['then'](function(_0x33c6a4){var _0x2b2342=JSON[_0x2d86('0x18')](_0x33c6a4);if(_0x2b2342[_0x2d86('0x19')]){_0xa3a361[_0x2d86('0x1a')]=_0x2b2342[_0x2d86('0x19')];logger[_0x2d86('0x1b')](util[_0x2d86('0x1c')](_0x2d86('0x1d'),_0xa3a361[_0x2d86('0x1e')],_0xa3a361['id']));}else{logger[_0x2d86('0x1f')](util[_0x2d86('0x1c')]('ZohoAccount,\x20Unable\x20to\x20generate\x20the\x20refresh\x20token\x20for\x20account\x20\x22%s\x22\x20#%d',_0xa3a361[_0x2d86('0x1e')],_0xa3a361['id']),util['inspect'](_0x2b2342,{'showHidden':![],'depth':null}));}return _0x3eeb69(null,_0x3ef39e);})[_0x2d86('0x20')](function(_0x23f86f){logger[_0x2d86('0x1f')](util[_0x2d86('0x1c')](_0x2d86('0x21'),_0xa3a361['name'],_0xa3a361['id']),util['inspect'](parsedResult,{'showHidden':![],'depth':null}));return _0x3eeb69(_0x23f86f);});}else{return _0x3eeb69(null,_0x3ef39e);}},'beforeUpdate':function(_0x3d9a8b,_0x2bd5ae,_0x570f97){if(_0x3d9a8b['changed'](_0x2d86('0xd'))||_0x3d9a8b[_0x2d86('0xc')]('serverUrl')||_0x3d9a8b[_0x2d86('0xc')](_0x2d86('0x22'))||_0x3d9a8b['changed'](_0x2d86('0xe'))||_0x3d9a8b[_0x2d86('0xc')](_0x2d86('0xf'))||_0x3d9a8b[_0x2d86('0xc')](_0x2d86('0x23'))){var _0x52c6d6,_0x2c104c;_0x52c6d6=_0x3d9a8b[_0x2d86('0x10')];var _0x47f007=_0x52c6d6[_0x2d86('0x24')](-0x1);if(_0x47f007==='/'||_0x47f007==='\x5c'||_0x47f007===':'){_0x52c6d6=_0x52c6d6[_0x2d86('0x25')](0x0,_0x52c6d6['lastIndexOf'](_0x47f007));}switch(_0x3d9a8b[_0x2d86('0xd')]){case'US':_0x2c104c=_0x2d86('0x12');break;case'AU':_0x2c104c=_0x2d86('0x13');break;case'IN':_0x2c104c=_0x2d86('0x26');break;case'CN':_0x2c104c=_0x2d86('0x27');break;default:_0x2c104c=_0x2d86('0x14');break;}var _0xbb1749={'method':_0x2d86('0x15'),'uri':_0x2c104c+_0x2d86('0x16'),'form':{'grant_type':_0x2d86('0x17'),'client_id':_0x3d9a8b['clientId'],'client_secret':_0x3d9a8b[_0x2d86('0xe')],'redirect_uri':_0x3d9a8b[_0x2d86('0x10')],'code':_0x3d9a8b[_0x2d86('0xf')]},'headers':{'Content-Type':_0x2d86('0x28')}};return rp(_0xbb1749)[_0x2d86('0x29')](function(_0x3a0f29){var _0x5ebd56=JSON[_0x2d86('0x18')](_0x3a0f29);if(_0x5ebd56['refresh_token']){_0x3d9a8b[_0x2d86('0x1a')]=_0x5ebd56[_0x2d86('0x19')];logger['info'](util[_0x2d86('0x1c')](_0x2d86('0x1d'),_0x3d9a8b[_0x2d86('0x1e')],_0x3d9a8b['id']));}else{logger[_0x2d86('0x1f')](util[_0x2d86('0x1c')](_0x2d86('0x21'),_0x3d9a8b[_0x2d86('0x1e')],_0x3d9a8b['id']),util[_0x2d86('0x2a')](_0x5ebd56,{'showHidden':![],'depth':null}));}return _0x570f97(null,_0x2bd5ae);})[_0x2d86('0x20')](function(_0x17bc5f){logger[_0x2d86('0x1f')](util[_0x2d86('0x1c')]('ZohoAccount,\x20Unable\x20to\x20generate\x20the\x20refresh\x20token\x20for\x20account\x20\x22%s\x22\x20#%d',_0x3d9a8b[_0x2d86('0x1e')],_0x3d9a8b['id']),util[_0x2d86('0x2a')](parsedResult,{'showHidden':![],'depth':null}));return _0x570f97(_0x17bc5f);});}else{return _0x570f97(null,_0x2bd5ae);}}}});};
\ No newline at end of file
+var _0x2895=['catch','error','info','name','lodash','util','../../config/logger','moment','bluebird','request-promise','path','../../config/environment','../../components/integrations/configuration','exports','define','ZohoAccount','changed','zone','serverUrl','clientId','host','slice','substring','lastIndexOf','https://accounts.zoho.com','https://accounts.zoho.com.au','https://accounts.zoho.in','https://accounts.zoho.com.cn','POST','/oauth/v2/token','authorization_code','clientSecret','code','application/x-www-form-urlencoded','then','parse','refresh_token','refreshToken','format','ZohoAccount,\x20Refresh\x20token\x20successfully\x20generated\x20for\x20account\x20\x22%s\x22\x20#%d','ZohoAccount,\x20Unable\x20to\x20generate\x20the\x20refresh\x20token\x20for\x20account\x20\x22%s\x22\x20#%d','inspect'];(function(_0x49ca18,_0x5e6d05){var _0x145d54=function(_0x30b9be){while(--_0x30b9be){_0x49ca18['push'](_0x49ca18['shift']());}};_0x145d54(++_0x5e6d05);}(_0x2895,0x82));var _0x5289=function(_0x59c108,_0x441d0a){_0x59c108=_0x59c108-0x0;var _0x3a2a09=_0x2895[_0x59c108];return _0x3a2a09;};'use strict';var _=require(_0x5289('0x0'));var util=require(_0x5289('0x1'));var logger=require(_0x5289('0x2'))('api');var moment=require(_0x5289('0x3'));var BPromise=require(_0x5289('0x4'));var rp=require(_0x5289('0x5'));var fs=require('fs');var path=require(_0x5289('0x6'));var rimraf=require('rimraf');var config=require(_0x5289('0x7'));var attributes=require('./intZohoAccount.attributes');var integrations=require(_0x5289('0x8'));module[_0x5289('0x9')]=function(_0x172b41,_0x38bcf2){return _0x172b41[_0x5289('0xa')](_0x5289('0xb'),attributes,{'tableName':'int_zoho_accounts','paranoid':![],'indexes':[],'timestamps':!![],'hooks':{'beforeCreate':function(_0x2b8af6,_0x201e29,_0x1dc585){if(_0x2b8af6[_0x5289('0xc')](_0x5289('0xd'))||_0x2b8af6[_0x5289('0xc')](_0x5289('0xe'))||_0x2b8af6['changed'](_0x5289('0xf'))||_0x2b8af6[_0x5289('0xc')]('clientSecret')||_0x2b8af6[_0x5289('0xc')]('code')||_0x2b8af6['changed'](_0x5289('0x10'))){var _0x5c71e3,_0x4c2b68;_0x5c71e3=_0x2b8af6[_0x5289('0xe')];var _0x343191=_0x5c71e3[_0x5289('0x11')](-0x1);if(_0x343191==='/'||_0x343191==='\x5c'||_0x343191===':'){_0x5c71e3=_0x5c71e3[_0x5289('0x12')](0x0,_0x5c71e3[_0x5289('0x13')](_0x343191));}switch(_0x2b8af6['zone']){case'US':_0x4c2b68=_0x5289('0x14');break;case'AU':_0x4c2b68=_0x5289('0x15');break;case'IN':_0x4c2b68=_0x5289('0x16');break;case'CN':_0x4c2b68=_0x5289('0x17');break;default:_0x4c2b68='https://accounts.zoho.eu';break;}var _0x11ec93={'method':_0x5289('0x18'),'uri':_0x4c2b68+_0x5289('0x19'),'form':{'grant_type':_0x5289('0x1a'),'client_id':_0x2b8af6[_0x5289('0xf')],'client_secret':_0x2b8af6[_0x5289('0x1b')],'redirect_uri':_0x2b8af6['serverUrl'],'code':_0x2b8af6[_0x5289('0x1c')]},'headers':{'Content-Type':_0x5289('0x1d')}};return rp(_0x11ec93)[_0x5289('0x1e')](function(_0xb64ea4){var _0x1a213e=JSON[_0x5289('0x1f')](_0xb64ea4);if(_0x1a213e[_0x5289('0x20')]){_0x2b8af6[_0x5289('0x21')]=_0x1a213e[_0x5289('0x20')];logger['info'](util[_0x5289('0x22')](_0x5289('0x23'),_0x2b8af6['name'],_0x2b8af6['id']));}else{logger['error'](util[_0x5289('0x22')](_0x5289('0x24'),_0x2b8af6['name'],_0x2b8af6['id']),util[_0x5289('0x25')](_0x1a213e,{'showHidden':![],'depth':null}));}return _0x1dc585(null,_0x201e29);})[_0x5289('0x26')](function(_0x459828){logger[_0x5289('0x27')](util[_0x5289('0x22')](_0x5289('0x24'),_0x2b8af6['name'],_0x2b8af6['id']),util['inspect'](parsedResult,{'showHidden':![],'depth':null}));return _0x1dc585(_0x459828);});}else{return _0x1dc585(null,_0x201e29);}},'beforeUpdate':function(_0x2215a8,_0x2b0b33,_0x15cae1){if(_0x2215a8['changed'](_0x5289('0xd'))||_0x2215a8['changed'](_0x5289('0xe'))||_0x2215a8[_0x5289('0xc')]('clientId')||_0x2215a8[_0x5289('0xc')]('clientSecret')||_0x2215a8[_0x5289('0xc')](_0x5289('0x1c'))||_0x2215a8[_0x5289('0xc')](_0x5289('0x10'))){var _0xd65dc1,_0x21a210;_0xd65dc1=_0x2215a8[_0x5289('0xe')];var _0x425312=_0xd65dc1[_0x5289('0x11')](-0x1);if(_0x425312==='/'||_0x425312==='\x5c'||_0x425312===':'){_0xd65dc1=_0xd65dc1[_0x5289('0x12')](0x0,_0xd65dc1['lastIndexOf'](_0x425312));}switch(_0x2215a8[_0x5289('0xd')]){case'US':_0x21a210=_0x5289('0x14');break;case'AU':_0x21a210='https://accounts.zoho.com.au';break;case'IN':_0x21a210=_0x5289('0x16');break;case'CN':_0x21a210='https://accounts.zoho.com.cn';break;default:_0x21a210='https://accounts.zoho.eu';break;}var _0x1cd200={'method':'POST','uri':_0x21a210+_0x5289('0x19'),'form':{'grant_type':_0x5289('0x1a'),'client_id':_0x2215a8['clientId'],'client_secret':_0x2215a8[_0x5289('0x1b')],'redirect_uri':_0x2215a8[_0x5289('0xe')],'code':_0x2215a8[_0x5289('0x1c')]},'headers':{'Content-Type':'application/x-www-form-urlencoded'}};return rp(_0x1cd200)[_0x5289('0x1e')](function(_0x253d9a){var _0x165efd=JSON['parse'](_0x253d9a);if(_0x165efd[_0x5289('0x20')]){_0x2215a8[_0x5289('0x21')]=_0x165efd[_0x5289('0x20')];logger[_0x5289('0x28')](util[_0x5289('0x22')](_0x5289('0x23'),_0x2215a8[_0x5289('0x29')],_0x2215a8['id']));}else{logger[_0x5289('0x27')](util['format']('ZohoAccount,\x20Unable\x20to\x20generate\x20the\x20refresh\x20token\x20for\x20account\x20\x22%s\x22\x20#%d',_0x2215a8[_0x5289('0x29')],_0x2215a8['id']),util[_0x5289('0x25')](_0x165efd,{'showHidden':![],'depth':null}));}return _0x15cae1(null,_0x2b0b33);})[_0x5289('0x26')](function(_0x23b1e6){logger[_0x5289('0x27')](util[_0x5289('0x22')]('ZohoAccount,\x20Unable\x20to\x20generate\x20the\x20refresh\x20token\x20for\x20account\x20\x22%s\x22\x20#%d',_0x2215a8['name'],_0x2215a8['id']),util[_0x5289('0x25')](parsedResult,{'showHidden':![],'depth':null}));return _0x15cae1(_0x23b1e6);});}else{return _0x15cae1(null,_0x2b0b33);}}}});};
\ No newline at end of file
index 7dfe69b..74959d5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf567=['../../config/environment','client','http','request','then','info','ZohoAccount,\x20%s,\x20%s','request\x20sent','debug','ZohoAccount,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','GetZohoAccount','ZohoAccount','findAll','options','raw','attributes','limit','include','map','model','catch','ShowZohoAccount','find','lodash','util','moment','randomstring','ioredis','../../config/utils','../../config/logger','rpc'];(function(_0x596125,_0x503f21){var _0x451cdd=function(_0x3acfde){while(--_0x3acfde){_0x596125['push'](_0x596125['shift']());}};_0x451cdd(++_0x503f21);}(_0xf567,0x118));var _0x7f56=function(_0x4565bf,_0x5ad9d6){_0x4565bf=_0x4565bf-0x0;var _0x5610ba=_0xf567[_0x4565bf];return _0x5610ba;};'use strict';var _=require(_0x7f56('0x0'));var util=require(_0x7f56('0x1'));var moment=require(_0x7f56('0x2'));var BPromise=require('bluebird');var rs=require(_0x7f56('0x3'));var fs=require('fs');var Redis=require(_0x7f56('0x4'));var db=require('../../mysqldb')['db'];var utils=require(_0x7f56('0x5'));var logger=require(_0x7f56('0x6'))(_0x7f56('0x7'));var config=require(_0x7f56('0x8'));var jayson=require('jayson/promise');var client=jayson[_0x7f56('0x9')][_0x7f56('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x1215e3,_0x52959a,_0x3f7ad5){return new BPromise(function(_0x2eaed8,_0x22d94e){return client[_0x7f56('0xb')](_0x1215e3,_0x3f7ad5)[_0x7f56('0xc')](function(_0x3ad7d5){logger[_0x7f56('0xd')](_0x7f56('0xe'),_0x52959a,_0x7f56('0xf'));logger[_0x7f56('0x10')](_0x7f56('0x11'),_0x52959a,_0x7f56('0xf'),JSON[_0x7f56('0x12')](_0x3ad7d5));if(_0x3ad7d5[_0x7f56('0x13')]){if(_0x3ad7d5[_0x7f56('0x13')][_0x7f56('0x14')]===0x1f4){logger[_0x7f56('0x13')](_0x7f56('0xe'),_0x52959a,_0x3ad7d5[_0x7f56('0x13')][_0x7f56('0x15')]);return _0x22d94e(_0x3ad7d5[_0x7f56('0x13')][_0x7f56('0x15')]);}logger['error'](_0x7f56('0xe'),_0x52959a,_0x3ad7d5[_0x7f56('0x13')][_0x7f56('0x15')]);return _0x2eaed8(_0x3ad7d5['error'][_0x7f56('0x15')]);}else{logger[_0x7f56('0xd')]('ZohoAccount,\x20%s,\x20%s',_0x52959a,_0x7f56('0xf'));_0x2eaed8(_0x3ad7d5[_0x7f56('0x16')]['message']);}})['catch'](function(_0x1dee75){logger['error'](_0x7f56('0xe'),_0x52959a,_0x1dee75);_0x22d94e(_0x1dee75);});});}exports[_0x7f56('0x17')]=function(_0x5201eb){var _0xc4d664=this;return new Promise(function(_0x3779a9,_0x350c7a){return db[_0x7f56('0x18')][_0x7f56('0x19')]({'raw':_0x5201eb[_0x7f56('0x1a')]?_0x5201eb['options'][_0x7f56('0x1b')]===undefined?!![]:![]:!![],'where':_0x5201eb['options']?_0x5201eb[_0x7f56('0x1a')]['where']||null:null,'attributes':_0x5201eb[_0x7f56('0x1a')]?_0x5201eb[_0x7f56('0x1a')][_0x7f56('0x1c')]||null:null,'limit':_0x5201eb[_0x7f56('0x1a')]?_0x5201eb[_0x7f56('0x1a')][_0x7f56('0x1d')]||null:null,'include':_0x5201eb[_0x7f56('0x1a')]?_0x5201eb[_0x7f56('0x1a')][_0x7f56('0x1e')]?_[_0x7f56('0x1f')](_0x5201eb['options'][_0x7f56('0x1e')],function(_0xe8f270){return{'model':db[_0xe8f270[_0x7f56('0x20')]],'as':_0xe8f270['as'],'attributes':_0xe8f270[_0x7f56('0x1c')],'include':_0xe8f270[_0x7f56('0x1e')]?_[_0x7f56('0x1f')](_0xe8f270[_0x7f56('0x1e')],function(_0x5da9ce){return{'model':db[_0x5da9ce['model']],'as':_0x5da9ce['as'],'attributes':_0x5da9ce['attributes'],'include':_0x5da9ce[_0x7f56('0x1e')]?_['map'](_0x5da9ce[_0x7f56('0x1e')],function(_0xc53c00){return{'model':db[_0xc53c00[_0x7f56('0x20')]],'as':_0xc53c00['as'],'attributes':_0xc53c00['attributes']};}):[]};}):[]};}):[]:[]})[_0x7f56('0xc')](function(_0x3d0faa){logger[_0x7f56('0xd')](_0x7f56('0x17'),_0x5201eb);logger['debug'](_0x7f56('0x17'),_0x5201eb,JSON[_0x7f56('0x12')](_0x3d0faa));_0x3779a9(_0x3d0faa);})[_0x7f56('0x21')](function(_0x57d1db){logger[_0x7f56('0x13')](_0x7f56('0x17'),_0x57d1db['message'],_0x5201eb);_0x350c7a(_0xc4d664['error'](0x1f4,_0x57d1db['message']));});});};exports[_0x7f56('0x22')]=function(_0x47e4ce){var _0x4d92c0=this;return new Promise(function(_0x25bd28,_0x56a70b){return db[_0x7f56('0x18')][_0x7f56('0x23')]({'raw':_0x47e4ce[_0x7f56('0x1a')]?_0x47e4ce['options'][_0x7f56('0x1b')]===undefined?!![]:![]:!![],'where':_0x47e4ce[_0x7f56('0x1a')]?_0x47e4ce[_0x7f56('0x1a')]['where']||null:null,'attributes':_0x47e4ce[_0x7f56('0x1a')]?_0x47e4ce[_0x7f56('0x1a')][_0x7f56('0x1c')]||null:null,'include':_0x47e4ce[_0x7f56('0x1a')]?_0x47e4ce[_0x7f56('0x1a')][_0x7f56('0x1e')]?_[_0x7f56('0x1f')](_0x47e4ce[_0x7f56('0x1a')][_0x7f56('0x1e')],function(_0x44a34e){return{'model':db[_0x44a34e[_0x7f56('0x20')]],'as':_0x44a34e['as'],'attributes':_0x44a34e[_0x7f56('0x1c')],'include':_0x44a34e['include']?_['map'](_0x44a34e[_0x7f56('0x1e')],function(_0x5f22b2){return{'model':db[_0x5f22b2[_0x7f56('0x20')]],'as':_0x5f22b2['as'],'attributes':_0x5f22b2[_0x7f56('0x1c')],'include':_0x5f22b2['include']?_[_0x7f56('0x1f')](_0x5f22b2[_0x7f56('0x1e')],function(_0x585a43){return{'model':db[_0x585a43[_0x7f56('0x20')]],'as':_0x585a43['as'],'attributes':_0x585a43[_0x7f56('0x1c')]};}):[]};}):[]};}):[]:[]})['then'](function(_0x189d62){logger[_0x7f56('0xd')](_0x7f56('0x22'),_0x47e4ce);logger['debug'](_0x7f56('0x22'),_0x47e4ce,JSON['stringify'](_0x189d62));_0x25bd28(_0x189d62);})[_0x7f56('0x21')](function(_0x53f6ff){logger[_0x7f56('0x13')](_0x7f56('0x22'),_0x53f6ff['message'],_0x47e4ce);_0x56a70b(_0x4d92c0['error'](0x1f4,_0x53f6ff['message']));});});};
\ No newline at end of file
+var _0xd070=['bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','request','then','info','ZohoAccount,\x20%s,\x20%s','request\x20sent','debug','stringify','error','code','message','result','catch','findAll','raw','options','limit','include','model','map','attributes','GetZohoAccount','ShowZohoAccount','ZohoAccount','find','lodash','moment'];(function(_0x334651,_0x6e99f6){var _0x29657c=function(_0x420a94){while(--_0x420a94){_0x334651['push'](_0x334651['shift']());}};_0x29657c(++_0x6e99f6);}(_0xd070,0x8e));var _0x0d07=function(_0x13b659,_0x34ff84){_0x13b659=_0x13b659-0x0;var _0x3f6364=_0xd070[_0x13b659];return _0x3f6364;};'use strict';var _=require(_0x0d07('0x0'));var util=require('util');var moment=require(_0x0d07('0x1'));var BPromise=require(_0x0d07('0x2'));var rs=require(_0x0d07('0x3'));var fs=require('fs');var Redis=require(_0x0d07('0x4'));var db=require(_0x0d07('0x5'))['db'];var utils=require(_0x0d07('0x6'));var logger=require(_0x0d07('0x7'))(_0x0d07('0x8'));var config=require(_0x0d07('0x9'));var jayson=require(_0x0d07('0xa'));var client=jayson[_0x0d07('0xb')]['http']({'port':0x232a});function respondWithRpcPromise(_0x13d75a,_0x5a4366,_0x20fd56){return new BPromise(function(_0x8c16d8,_0x1f989e){return client[_0x0d07('0xc')](_0x13d75a,_0x20fd56)[_0x0d07('0xd')](function(_0xc5b04d){logger[_0x0d07('0xe')](_0x0d07('0xf'),_0x5a4366,_0x0d07('0x10'));logger[_0x0d07('0x11')]('ZohoAccount,\x20%s,\x20%s,\x20%s',_0x5a4366,'request\x20sent',JSON[_0x0d07('0x12')](_0xc5b04d));if(_0xc5b04d[_0x0d07('0x13')]){if(_0xc5b04d['error'][_0x0d07('0x14')]===0x1f4){logger['error'](_0x0d07('0xf'),_0x5a4366,_0xc5b04d[_0x0d07('0x13')]['message']);return _0x1f989e(_0xc5b04d[_0x0d07('0x13')][_0x0d07('0x15')]);}logger[_0x0d07('0x13')](_0x0d07('0xf'),_0x5a4366,_0xc5b04d[_0x0d07('0x13')][_0x0d07('0x15')]);return _0x8c16d8(_0xc5b04d['error'][_0x0d07('0x15')]);}else{logger['info']('ZohoAccount,\x20%s,\x20%s',_0x5a4366,_0x0d07('0x10'));_0x8c16d8(_0xc5b04d[_0x0d07('0x16')][_0x0d07('0x15')]);}})[_0x0d07('0x17')](function(_0x220203){logger['error']('ZohoAccount,\x20%s,\x20%s',_0x5a4366,_0x220203);_0x1f989e(_0x220203);});});}exports['GetZohoAccount']=function(_0x187df2){var _0x312015=this;return new Promise(function(_0x52cb4b,_0x410ad2){return db['ZohoAccount'][_0x0d07('0x18')]({'raw':_0x187df2['options']?_0x187df2['options'][_0x0d07('0x19')]===undefined?!![]:![]:!![],'where':_0x187df2['options']?_0x187df2[_0x0d07('0x1a')]['where']||null:null,'attributes':_0x187df2[_0x0d07('0x1a')]?_0x187df2['options']['attributes']||null:null,'limit':_0x187df2[_0x0d07('0x1a')]?_0x187df2[_0x0d07('0x1a')][_0x0d07('0x1b')]||null:null,'include':_0x187df2['options']?_0x187df2[_0x0d07('0x1a')]['include']?_['map'](_0x187df2[_0x0d07('0x1a')][_0x0d07('0x1c')],function(_0xd42245){return{'model':db[_0xd42245[_0x0d07('0x1d')]],'as':_0xd42245['as'],'attributes':_0xd42245['attributes'],'include':_0xd42245['include']?_[_0x0d07('0x1e')](_0xd42245['include'],function(_0x43c7ac){return{'model':db[_0x43c7ac[_0x0d07('0x1d')]],'as':_0x43c7ac['as'],'attributes':_0x43c7ac['attributes'],'include':_0x43c7ac[_0x0d07('0x1c')]?_['map'](_0x43c7ac['include'],function(_0x5da34f){return{'model':db[_0x5da34f[_0x0d07('0x1d')]],'as':_0x5da34f['as'],'attributes':_0x5da34f[_0x0d07('0x1f')]};}):[]};}):[]};}):[]:[]})[_0x0d07('0xd')](function(_0x25633b){logger[_0x0d07('0xe')](_0x0d07('0x20'),_0x187df2);logger[_0x0d07('0x11')](_0x0d07('0x20'),_0x187df2,JSON['stringify'](_0x25633b));_0x52cb4b(_0x25633b);})['catch'](function(_0x282468){logger[_0x0d07('0x13')](_0x0d07('0x20'),_0x282468[_0x0d07('0x15')],_0x187df2);_0x410ad2(_0x312015[_0x0d07('0x13')](0x1f4,_0x282468[_0x0d07('0x15')]));});});};exports[_0x0d07('0x21')]=function(_0x314916){var _0x240dc0=this;return new Promise(function(_0xa0c281,_0x3d0663){return db[_0x0d07('0x22')][_0x0d07('0x23')]({'raw':_0x314916[_0x0d07('0x1a')]?_0x314916[_0x0d07('0x1a')][_0x0d07('0x19')]===undefined?!![]:![]:!![],'where':_0x314916[_0x0d07('0x1a')]?_0x314916[_0x0d07('0x1a')]['where']||null:null,'attributes':_0x314916['options']?_0x314916['options'][_0x0d07('0x1f')]||null:null,'include':_0x314916[_0x0d07('0x1a')]?_0x314916['options'][_0x0d07('0x1c')]?_[_0x0d07('0x1e')](_0x314916[_0x0d07('0x1a')][_0x0d07('0x1c')],function(_0x5e847a){return{'model':db[_0x5e847a[_0x0d07('0x1d')]],'as':_0x5e847a['as'],'attributes':_0x5e847a['attributes'],'include':_0x5e847a[_0x0d07('0x1c')]?_['map'](_0x5e847a['include'],function(_0x63f32c){return{'model':db[_0x63f32c['model']],'as':_0x63f32c['as'],'attributes':_0x63f32c['attributes'],'include':_0x63f32c[_0x0d07('0x1c')]?_[_0x0d07('0x1e')](_0x63f32c[_0x0d07('0x1c')],function(_0x3b6af9){return{'model':db[_0x3b6af9[_0x0d07('0x1d')]],'as':_0x3b6af9['as'],'attributes':_0x3b6af9['attributes']};}):[]};}):[]};}):[]:[]})['then'](function(_0x5547bb){logger[_0x0d07('0xe')](_0x0d07('0x21'),_0x314916);logger[_0x0d07('0x11')](_0x0d07('0x21'),_0x314916,JSON[_0x0d07('0x12')](_0x5547bb));_0xa0c281(_0x5547bb);})[_0x0d07('0x17')](function(_0x3ab9d6){logger[_0x0d07('0x13')](_0x0d07('0x21'),_0x3ab9d6['message'],_0x314916);_0x3d0663(_0x240dc0['error'](0x1f4,_0x3ab9d6[_0x0d07('0x15')]));});});};
\ No newline at end of file
index 628a823..7998e51 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x39e4=['/:id/fields','getFields','/:id/subjects','getSubjects','/:id/descriptions','getDescriptions','put','update','delete','destroy','exports','multer','util','path','Router','../../components/auth/service','../../components/interaction/service','../../config/environment','./intZohoConfiguration.controller','get','isAuthenticated','/:id','show'];(function(_0x65797,_0x4abfc9){var _0xccd930=function(_0x439711){while(--_0x439711){_0x65797['push'](_0x65797['shift']());}};_0xccd930(++_0x4abfc9);}(_0x39e4,0x1a9));var _0x439e=function(_0x4f875d,_0x575cd3){_0x4f875d=_0x4f875d-0x0;var _0x573a3c=_0x39e4[_0x4f875d];return _0x573a3c;};'use strict';var multer=require(_0x439e('0x0'));var util=require(_0x439e('0x1'));var path=require(_0x439e('0x2'));var timeout=require('connect-timeout');var express=require('express');var router=express[_0x439e('0x3')]();var fs_extra=require('fs-extra');var auth=require(_0x439e('0x4'));var interaction=require(_0x439e('0x5'));var config=require(_0x439e('0x6'));var controller=require(_0x439e('0x7'));router[_0x439e('0x8')]('/',auth[_0x439e('0x9')](),controller['index']);router[_0x439e('0x8')](_0x439e('0xa'),auth[_0x439e('0x9')](),controller[_0x439e('0xb')]);router[_0x439e('0x8')](_0x439e('0xc'),auth[_0x439e('0x9')](),controller[_0x439e('0xd')]);router[_0x439e('0x8')](_0x439e('0xe'),auth[_0x439e('0x9')](),controller[_0x439e('0xf')]);router[_0x439e('0x8')](_0x439e('0x10'),auth[_0x439e('0x9')](),controller[_0x439e('0x11')]);router['post']('/',auth[_0x439e('0x9')](),controller['create']);router[_0x439e('0x12')](_0x439e('0xa'),auth['isAuthenticated'](),controller[_0x439e('0x13')]);router[_0x439e('0x14')](_0x439e('0xa'),auth[_0x439e('0x9')](),controller[_0x439e('0x15')]);module[_0x439e('0x16')]=router;
\ No newline at end of file
+var _0x7066=['/:id','show','/:id/fields','/:id/subjects','/:id/descriptions','getDescriptions','create','put','update','delete','destroy','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../config/environment','./intZohoConfiguration.controller','get','isAuthenticated'];(function(_0x687ddc,_0x2092fa){var _0x441991=function(_0x49c6a6){while(--_0x49c6a6){_0x687ddc['push'](_0x687ddc['shift']());}};_0x441991(++_0x2092fa);}(_0x7066,0x1ad));var _0x6706=function(_0x5b9e87,_0x29ba74){_0x5b9e87=_0x5b9e87-0x0;var _0x7a30c5=_0x7066[_0x5b9e87];return _0x7a30c5;};'use strict';var multer=require('multer');var util=require(_0x6706('0x0'));var path=require(_0x6706('0x1'));var timeout=require(_0x6706('0x2'));var express=require(_0x6706('0x3'));var router=express[_0x6706('0x4')]();var fs_extra=require(_0x6706('0x5'));var auth=require(_0x6706('0x6'));var interaction=require('../../components/interaction/service');var config=require(_0x6706('0x7'));var controller=require(_0x6706('0x8'));router[_0x6706('0x9')]('/',auth[_0x6706('0xa')](),controller['index']);router[_0x6706('0x9')](_0x6706('0xb'),auth[_0x6706('0xa')](),controller[_0x6706('0xc')]);router['get'](_0x6706('0xd'),auth[_0x6706('0xa')](),controller['getFields']);router[_0x6706('0x9')](_0x6706('0xe'),auth['isAuthenticated'](),controller['getSubjects']);router['get'](_0x6706('0xf'),auth[_0x6706('0xa')](),controller[_0x6706('0x10')]);router['post']('/',auth[_0x6706('0xa')](),controller[_0x6706('0x11')]);router[_0x6706('0x12')](_0x6706('0xb'),auth[_0x6706('0xa')](),controller[_0x6706('0x13')]);router[_0x6706('0x14')](_0x6706('0xb'),auth[_0x6706('0xa')](),controller[_0x6706('0x15')]);module['exports']=router;
\ No newline at end of file
index ee7b9c3..160708d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7564=['lead','sequelize','exports','STRING','ENUM','contact','nothing'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x7564,0x1e4));var _0x4756=function(_0x59c301,_0x359c50){_0x59c301=_0x59c301-0x0;var _0x3866b9=_0x7564[_0x59c301];return _0x3866b9;};'use strict';var Sequelize=require(_0x4756('0x0'));module[_0x4756('0x1')]={'name':{'type':Sequelize[_0x4756('0x2')]},'moduleCreate':{'type':Sequelize[_0x4756('0x3')]('lead',_0x4756('0x4'),_0x4756('0x5')),'defaultValue':_0x4756('0x6')},'moduleSearch':{'type':Sequelize[_0x4756('0x3')]('contact_lead',_0x4756('0x4'),_0x4756('0x6')),'defaultValue':'contact_lead'},'description':{'type':Sequelize[_0x4756('0x2')]}};
\ No newline at end of file
+var _0x5d8c=['ENUM','contact_lead','contact','sequelize','exports','lead'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x5d8c,0x87));var _0xc5d8=function(_0xe5cb9a,_0x5c4772){_0xe5cb9a=_0xe5cb9a-0x0;var _0x4c67c6=_0x5d8c[_0xe5cb9a];return _0x4c67c6;};'use strict';var Sequelize=require(_0xc5d8('0x0'));module[_0xc5d8('0x1')]={'name':{'type':Sequelize['STRING']},'moduleCreate':{'type':Sequelize['ENUM'](_0xc5d8('0x2'),'contact','nothing'),'defaultValue':'lead'},'moduleSearch':{'type':Sequelize[_0xc5d8('0x3')](_0xc5d8('0x4'),_0xc5d8('0x5'),'lead'),'defaultValue':_0xc5d8('0x4')},'description':{'type':Sequelize['STRING']}};
\ No newline at end of file
index 3f6ab52..2942001 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb110=['map','rawAttributes','key','model','query','keys','attributes','intersection','fields','length','nolimit','sort','where','filters','pick','filter','merge','type','VIRTUAL','options','ZohoConfiguration','includeAll','rows','catch','show','params','include','find','create','body','getFields','findOne','order','hasOwnProperty','ZohoField','getSubjects','getDescriptions','rimraf','zip-dir','fast-json-patch','mustache','util','sox','to-csv','ejs','fs-extra','lodash','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','../../config/logger','api','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','offset','undefined','limit','count','set','json','apply','reject','save','update','then','destroy','error','stack','name','send','index'];(function(_0x257c58,_0x2bbde0){var _0x3af172=function(_0x591c91){while(--_0x591c91){_0x257c58['push'](_0x257c58['shift']());}};_0x3af172(++_0x2bbde0);}(_0xb110,0x112));var _0x0b11=function(_0x443b8a,_0x5ea65c){_0x443b8a=_0x443b8a-0x0;var _0x339009=_0xb110[_0x443b8a];return _0x339009;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x0b11('0x0'));var zipdir=require(_0x0b11('0x1'));var jsonpatch=require(_0x0b11('0x2'));var rp=require('request-promise');var moment=require('moment');var BPromise=require('bluebird');var Mustache=require(_0x0b11('0x3'));var util=require(_0x0b11('0x4'));var path=require('path');var sox=require(_0x0b11('0x5'));var csv=require(_0x0b11('0x6'));var ejs=require(_0x0b11('0x7'));var fs=require('fs');var fs_extra=require(_0x0b11('0x8'));var _=require(_0x0b11('0x9'));var squel=require('squel');var crypto=require('crypto');var jsforce=require(_0x0b11('0xa'));var deskjs=require(_0x0b11('0xb'));var toCsv=require(_0x0b11('0x6'));var querystring=require(_0x0b11('0xc'));var Papa=require(_0x0b11('0xd'));var Redis=require(_0x0b11('0xe'));var authService=require(_0x0b11('0xf'));var qs=require('../../components/parsers/qs');var as=require(_0x0b11('0x10'));var hardwareService=require('../../config/license/hardware');var logger=require(_0x0b11('0x11'))(_0x0b11('0x12'));var utils=require('../../config/utils');var config=require(_0x0b11('0x13'));var licenseUtil=require(_0x0b11('0x14'));var db=require(_0x0b11('0x15'))['db'];function respondWithStatusCode(_0x551e08,_0x2ef43c){_0x2ef43c=_0x2ef43c||0xcc;return function(_0x5adcaa){if(_0x5adcaa){return _0x551e08[_0x0b11('0x16')](_0x2ef43c);}return _0x551e08[_0x0b11('0x17')](_0x2ef43c)[_0x0b11('0x18')]();};}function respondWithResult(_0x48a4d8,_0xccf153){_0xccf153=_0xccf153||0xc8;return function(_0x37e083){if(_0x37e083){return _0x48a4d8[_0x0b11('0x17')](_0xccf153)['json'](_0x37e083);}};}function respondWithFilteredResult(_0x577953,_0x547e89){return function(_0x2ce12e){if(_0x2ce12e){var _0x23f871=typeof _0x547e89[_0x0b11('0x19')]===_0x0b11('0x1a')&&typeof _0x547e89[_0x0b11('0x1b')]===_0x0b11('0x1a');var _0x437333=_0x2ce12e['count'];var _0x85716c=_0x23f871?0x0:_0x547e89['offset'];var _0x426295=_0x23f871?_0x2ce12e[_0x0b11('0x1c')]:_0x547e89['offset']+_0x547e89[_0x0b11('0x1b')];var _0x2018ab;if(_0x426295>=_0x437333){_0x426295=_0x437333;_0x2018ab=0xc8;}else{_0x2018ab=0xce;}_0x577953[_0x0b11('0x17')](_0x2018ab);return _0x577953[_0x0b11('0x1d')]('Content-Range',_0x85716c+'-'+_0x426295+'/'+_0x437333)[_0x0b11('0x1e')](_0x2ce12e);}return null;};}function patchUpdates(_0x2c0fba){return function(_0x3473bf){try{jsonpatch[_0x0b11('0x1f')](_0x3473bf,_0x2c0fba,!![]);}catch(_0x1c91ae){return BPromise[_0x0b11('0x20')](_0x1c91ae);}return _0x3473bf[_0x0b11('0x21')]();};}function saveUpdates(_0x3b8567,_0x5daac3){return function(_0x574c87){if(_0x574c87){return _0x574c87[_0x0b11('0x22')](_0x3b8567)[_0x0b11('0x23')](function(_0x2688f5){return _0x2688f5;});}return null;};}function removeEntity(_0x4490c8,_0x9ac8fc){return function(_0x49b908){if(_0x49b908){return _0x49b908[_0x0b11('0x24')]()['then'](function(){_0x4490c8[_0x0b11('0x17')](0xcc)[_0x0b11('0x18')]();});}};}function handleEntityNotFound(_0x5ac528,_0x30e79f){return function(_0xf1efd){if(!_0xf1efd){_0x5ac528[_0x0b11('0x16')](0x194);}return _0xf1efd;};}function handleError(_0x212e35,_0x37d14d){_0x37d14d=_0x37d14d||0x1f4;return function(_0x349b88){logger[_0x0b11('0x25')](_0x349b88[_0x0b11('0x26')]);if(_0x349b88[_0x0b11('0x27')]){delete _0x349b88[_0x0b11('0x27')];}_0x212e35[_0x0b11('0x17')](_0x37d14d)[_0x0b11('0x28')](_0x349b88);};}exports[_0x0b11('0x29')]=function(_0x245cb4,_0x189219){var _0x19ea32={},_0x5d97dc={},_0x30a604={'count':0x0,'rows':[]};var _0x1524a2=_[_0x0b11('0x2a')](db['ZohoConfiguration'][_0x0b11('0x2b')],function(_0x15a638){return{'name':_0x15a638['fieldName'],'type':_0x15a638['type'][_0x0b11('0x2c')]};});_0x5d97dc[_0x0b11('0x2d')]=_[_0x0b11('0x2a')](_0x1524a2,'name');_0x5d97dc[_0x0b11('0x2e')]=_[_0x0b11('0x2f')](_0x245cb4[_0x0b11('0x2e')]);_0x5d97dc['filters']=_['intersection'](_0x5d97dc[_0x0b11('0x2d')],_0x5d97dc[_0x0b11('0x2e')]);_0x19ea32[_0x0b11('0x30')]=_[_0x0b11('0x31')](_0x5d97dc[_0x0b11('0x2d')],qs['fields'](_0x245cb4[_0x0b11('0x2e')][_0x0b11('0x32')]));_0x19ea32[_0x0b11('0x30')]=_0x19ea32[_0x0b11('0x30')][_0x0b11('0x33')]?_0x19ea32[_0x0b11('0x30')]:_0x5d97dc['model'];if(!_0x245cb4[_0x0b11('0x2e')]['hasOwnProperty'](_0x0b11('0x34'))){_0x19ea32[_0x0b11('0x1b')]=qs[_0x0b11('0x1b')](_0x245cb4[_0x0b11('0x2e')][_0x0b11('0x1b')]);_0x19ea32[_0x0b11('0x19')]=qs[_0x0b11('0x19')](_0x245cb4[_0x0b11('0x2e')][_0x0b11('0x19')]);}_0x19ea32['order']=qs[_0x0b11('0x35')](_0x245cb4[_0x0b11('0x2e')][_0x0b11('0x35')]);_0x19ea32[_0x0b11('0x36')]=qs[_0x0b11('0x37')](_[_0x0b11('0x38')](_0x245cb4[_0x0b11('0x2e')],_0x5d97dc[_0x0b11('0x37')]),_0x1524a2);if(_0x245cb4[_0x0b11('0x2e')][_0x0b11('0x39')]){_0x19ea32['where']=_[_0x0b11('0x3a')](_0x19ea32['where'],{'$or':_[_0x0b11('0x2a')](_0x1524a2,function(_0x285fb9){if(_0x285fb9[_0x0b11('0x3b')]!==_0x0b11('0x3c')){var _0x5dd254={};_0x5dd254[_0x285fb9['name']]={'$like':'%'+_0x245cb4[_0x0b11('0x2e')]['filter']+'%'};return _0x5dd254;}})});}_0x19ea32=_[_0x0b11('0x3a')]({},_0x19ea32,_0x245cb4[_0x0b11('0x3d')]);var _0x96897f={'where':_0x19ea32[_0x0b11('0x36')]};return db[_0x0b11('0x3e')][_0x0b11('0x1c')](_0x96897f)[_0x0b11('0x23')](function(_0x54014f){_0x30a604[_0x0b11('0x1c')]=_0x54014f;if(_0x245cb4[_0x0b11('0x2e')][_0x0b11('0x3f')]){_0x19ea32['include']=[{'all':!![]}];}return db[_0x0b11('0x3e')]['findAll'](_0x19ea32);})[_0x0b11('0x23')](function(_0x3ac172){_0x30a604[_0x0b11('0x40')]=_0x3ac172;return _0x30a604;})[_0x0b11('0x23')](respondWithFilteredResult(_0x189219,_0x19ea32))[_0x0b11('0x41')](handleError(_0x189219,null));};exports[_0x0b11('0x42')]=function(_0x13e3b9,_0x4f991c){var _0x5d7775={'raw':![],'where':{'id':_0x13e3b9[_0x0b11('0x43')]['id']}},_0xcd76ae={};_0xcd76ae[_0x0b11('0x2d')]=_[_0x0b11('0x2f')](db['ZohoConfiguration'][_0x0b11('0x2b')]);_0xcd76ae[_0x0b11('0x2e')]=_[_0x0b11('0x2f')](_0x13e3b9[_0x0b11('0x2e')]);_0xcd76ae[_0x0b11('0x37')]=_[_0x0b11('0x31')](_0xcd76ae[_0x0b11('0x2d')],_0xcd76ae[_0x0b11('0x2e')]);_0x5d7775[_0x0b11('0x30')]=_[_0x0b11('0x31')](_0xcd76ae[_0x0b11('0x2d')],qs[_0x0b11('0x32')](_0x13e3b9[_0x0b11('0x2e')][_0x0b11('0x32')]));_0x5d7775[_0x0b11('0x30')]=_0x5d7775[_0x0b11('0x30')]['length']?_0x5d7775['attributes']:_0xcd76ae[_0x0b11('0x2d')];if(_0x13e3b9[_0x0b11('0x2e')][_0x0b11('0x3f')]){_0x5d7775[_0x0b11('0x44')]=[{'all':!![]}];}_0x5d7775=_[_0x0b11('0x3a')]({},_0x5d7775,_0x13e3b9[_0x0b11('0x3d')]);return db[_0x0b11('0x3e')][_0x0b11('0x45')](_0x5d7775)[_0x0b11('0x23')](handleEntityNotFound(_0x4f991c,null))[_0x0b11('0x23')](respondWithResult(_0x4f991c,null))[_0x0b11('0x41')](handleError(_0x4f991c,null));};exports[_0x0b11('0x46')]=function(_0x26bc74,_0x3b3045){return db[_0x0b11('0x3e')][_0x0b11('0x46')](_0x26bc74['body'],{})[_0x0b11('0x23')](respondWithResult(_0x3b3045,0xc9))['catch'](handleError(_0x3b3045,null));};exports['update']=function(_0x574579,_0x44e749){if(_0x574579[_0x0b11('0x47')]['id']){delete _0x574579[_0x0b11('0x47')]['id'];}return db[_0x0b11('0x3e')][_0x0b11('0x45')]({'where':{'id':_0x574579[_0x0b11('0x43')]['id']}})['then'](handleEntityNotFound(_0x44e749,null))['then'](saveUpdates(_0x574579['body'],null))[_0x0b11('0x23')](respondWithResult(_0x44e749,null))[_0x0b11('0x41')](handleError(_0x44e749,null));};exports['destroy']=function(_0x2cec71,_0x4226d){return db['ZohoConfiguration'][_0x0b11('0x45')]({'where':{'id':_0x2cec71['params']['id']}})[_0x0b11('0x23')](handleEntityNotFound(_0x4226d,null))[_0x0b11('0x23')](removeEntity(_0x4226d,null))[_0x0b11('0x41')](handleError(_0x4226d,null));};exports[_0x0b11('0x48')]=function(_0x179d44,_0x5dd77f,_0x4debc3){var _0x52ae0c={};var _0x56c92e={};var _0x1a80fd;var _0x42911a;return db[_0x0b11('0x3e')][_0x0b11('0x49')]({'where':{'id':_0x179d44[_0x0b11('0x43')]['id']}})['then'](handleEntityNotFound(_0x5dd77f,null))[_0x0b11('0x23')](function(_0x1477ff){if(_0x1477ff){_0x1a80fd=_0x1477ff;_0x56c92e['model']=_[_0x0b11('0x2f')](db['ZohoField'][_0x0b11('0x2b')]);_0x56c92e[_0x0b11('0x2e')]=_['keys'](_0x179d44[_0x0b11('0x2e')]);_0x56c92e[_0x0b11('0x37')]=_[_0x0b11('0x31')](_0x56c92e[_0x0b11('0x2d')],_0x56c92e[_0x0b11('0x2e')]);_0x52ae0c[_0x0b11('0x30')]=_[_0x0b11('0x31')](_0x56c92e[_0x0b11('0x2d')],qs['fields'](_0x179d44[_0x0b11('0x2e')]['fields']));_0x52ae0c[_0x0b11('0x30')]=_0x52ae0c[_0x0b11('0x30')]['length']?_0x52ae0c[_0x0b11('0x30')]:_0x56c92e[_0x0b11('0x2d')];_0x52ae0c[_0x0b11('0x4a')]=qs['sort'](_0x179d44['query'][_0x0b11('0x35')]);_0x52ae0c[_0x0b11('0x36')]=qs[_0x0b11('0x37')](_[_0x0b11('0x38')](_0x179d44['query'],_0x56c92e[_0x0b11('0x37')]));if(_0x179d44[_0x0b11('0x2e')]['filter']){_0x52ae0c[_0x0b11('0x36')]=_[_0x0b11('0x3a')](_0x52ae0c[_0x0b11('0x36')],{'$or':_[_0x0b11('0x2a')](_0x52ae0c[_0x0b11('0x30')],function(_0x1f1c7c){var _0x5db171={};_0x5db171[_0x1f1c7c]={'$like':'%'+_0x179d44[_0x0b11('0x2e')]['filter']+'%'};return _0x5db171;})});}_0x52ae0c=_[_0x0b11('0x3a')]({},_0x52ae0c,_0x179d44['options']);return _0x1a80fd['getFields'](_0x52ae0c);}})[_0x0b11('0x23')](function(_0x54ebb1){if(_0x54ebb1){_0x42911a=_0x54ebb1[_0x0b11('0x33')];if(!_0x179d44[_0x0b11('0x2e')][_0x0b11('0x4b')](_0x0b11('0x34'))){_0x52ae0c['limit']=qs[_0x0b11('0x1b')](_0x179d44[_0x0b11('0x2e')][_0x0b11('0x1b')]);_0x52ae0c[_0x0b11('0x19')]=qs['offset'](_0x179d44['query'][_0x0b11('0x19')]);}return _0x1a80fd[_0x0b11('0x48')](_0x52ae0c);}})[_0x0b11('0x23')](function(_0x22a907){if(_0x22a907){return _0x22a907?{'count':_0x42911a,'rows':_0x22a907}:null;}})['then'](respondWithResult(_0x5dd77f,null))['catch'](handleError(_0x5dd77f,null));};exports['getSubjects']=function(_0xd11294,_0x2c2976,_0x54e78f){var _0x1e8efc={};var _0x4d4fb5={};var _0x31baab;var _0x4c3325;return db['ZohoConfiguration'][_0x0b11('0x49')]({'where':{'id':_0xd11294[_0x0b11('0x43')]['id']}})['then'](handleEntityNotFound(_0x2c2976,null))['then'](function(_0x597ae2){if(_0x597ae2){_0x31baab=_0x597ae2;_0x4d4fb5['model']=_[_0x0b11('0x2f')](db[_0x0b11('0x4c')]['rawAttributes']);_0x4d4fb5[_0x0b11('0x2e')]=_[_0x0b11('0x2f')](_0xd11294[_0x0b11('0x2e')]);_0x4d4fb5[_0x0b11('0x37')]=_[_0x0b11('0x31')](_0x4d4fb5[_0x0b11('0x2d')],_0x4d4fb5[_0x0b11('0x2e')]);_0x1e8efc[_0x0b11('0x30')]=_['intersection'](_0x4d4fb5[_0x0b11('0x2d')],qs[_0x0b11('0x32')](_0xd11294[_0x0b11('0x2e')][_0x0b11('0x32')]));_0x1e8efc[_0x0b11('0x30')]=_0x1e8efc[_0x0b11('0x30')][_0x0b11('0x33')]?_0x1e8efc[_0x0b11('0x30')]:_0x4d4fb5[_0x0b11('0x2d')];_0x1e8efc[_0x0b11('0x4a')]=qs['sort'](_0xd11294[_0x0b11('0x2e')][_0x0b11('0x35')]);_0x1e8efc['where']=qs[_0x0b11('0x37')](_[_0x0b11('0x38')](_0xd11294[_0x0b11('0x2e')],_0x4d4fb5[_0x0b11('0x37')]));if(_0xd11294[_0x0b11('0x2e')][_0x0b11('0x39')]){_0x1e8efc[_0x0b11('0x36')]=_[_0x0b11('0x3a')](_0x1e8efc[_0x0b11('0x36')],{'$or':_[_0x0b11('0x2a')](_0x1e8efc[_0x0b11('0x30')],function(_0x49e034){var _0x894de9={};_0x894de9[_0x49e034]={'$like':'%'+_0xd11294[_0x0b11('0x2e')][_0x0b11('0x39')]+'%'};return _0x894de9;})});}_0x1e8efc=_[_0x0b11('0x3a')]({},_0x1e8efc,_0xd11294[_0x0b11('0x3d')]);return _0x31baab[_0x0b11('0x4d')](_0x1e8efc);}})['then'](function(_0x498281){if(_0x498281){_0x4c3325=_0x498281['length'];if(!_0xd11294[_0x0b11('0x2e')]['hasOwnProperty'](_0x0b11('0x34'))){_0x1e8efc[_0x0b11('0x1b')]=qs['limit'](_0xd11294[_0x0b11('0x2e')][_0x0b11('0x1b')]);_0x1e8efc[_0x0b11('0x19')]=qs['offset'](_0xd11294[_0x0b11('0x2e')][_0x0b11('0x19')]);}return _0x31baab['getSubjects'](_0x1e8efc);}})[_0x0b11('0x23')](function(_0x1ea725){if(_0x1ea725){return _0x1ea725?{'count':_0x4c3325,'rows':_0x1ea725}:null;}})[_0x0b11('0x23')](respondWithResult(_0x2c2976,null))[_0x0b11('0x41')](handleError(_0x2c2976,null));};exports['getDescriptions']=function(_0x22d091,_0x2b1c2b,_0x3b503c){var _0x3a319c={};var _0x2822a2={};var _0x5671d2;var _0x36a9ac;return db[_0x0b11('0x3e')][_0x0b11('0x49')]({'where':{'id':_0x22d091[_0x0b11('0x43')]['id']}})[_0x0b11('0x23')](handleEntityNotFound(_0x2b1c2b,null))[_0x0b11('0x23')](function(_0x13f17e){if(_0x13f17e){_0x5671d2=_0x13f17e;_0x2822a2[_0x0b11('0x2d')]=_[_0x0b11('0x2f')](db[_0x0b11('0x4c')][_0x0b11('0x2b')]);_0x2822a2[_0x0b11('0x2e')]=_[_0x0b11('0x2f')](_0x22d091[_0x0b11('0x2e')]);_0x2822a2[_0x0b11('0x37')]=_['intersection'](_0x2822a2[_0x0b11('0x2d')],_0x2822a2[_0x0b11('0x2e')]);_0x3a319c[_0x0b11('0x30')]=_[_0x0b11('0x31')](_0x2822a2[_0x0b11('0x2d')],qs['fields'](_0x22d091[_0x0b11('0x2e')]['fields']));_0x3a319c[_0x0b11('0x30')]=_0x3a319c[_0x0b11('0x30')][_0x0b11('0x33')]?_0x3a319c[_0x0b11('0x30')]:_0x2822a2[_0x0b11('0x2d')];_0x3a319c[_0x0b11('0x4a')]=qs['sort'](_0x22d091[_0x0b11('0x2e')]['sort']);_0x3a319c[_0x0b11('0x36')]=qs[_0x0b11('0x37')](_[_0x0b11('0x38')](_0x22d091['query'],_0x2822a2[_0x0b11('0x37')]));if(_0x22d091[_0x0b11('0x2e')]['filter']){_0x3a319c['where']=_[_0x0b11('0x3a')](_0x3a319c['where'],{'$or':_[_0x0b11('0x2a')](_0x3a319c[_0x0b11('0x30')],function(_0x280446){var _0x4c0700={};_0x4c0700[_0x280446]={'$like':'%'+_0x22d091[_0x0b11('0x2e')]['filter']+'%'};return _0x4c0700;})});}_0x3a319c=_[_0x0b11('0x3a')]({},_0x3a319c,_0x22d091[_0x0b11('0x3d')]);return _0x5671d2[_0x0b11('0x4e')](_0x3a319c);}})[_0x0b11('0x23')](function(_0x9b4280){if(_0x9b4280){_0x36a9ac=_0x9b4280[_0x0b11('0x33')];if(!_0x22d091[_0x0b11('0x2e')][_0x0b11('0x4b')](_0x0b11('0x34'))){_0x3a319c[_0x0b11('0x1b')]=qs[_0x0b11('0x1b')](_0x22d091[_0x0b11('0x2e')][_0x0b11('0x1b')]);_0x3a319c[_0x0b11('0x19')]=qs['offset'](_0x22d091['query']['offset']);}return _0x5671d2[_0x0b11('0x4e')](_0x3a319c);}})[_0x0b11('0x23')](function(_0x2563cb){if(_0x2563cb){return _0x2563cb?{'count':_0x36a9ac,'rows':_0x2563cb}:null;}})['then'](respondWithResult(_0x2b1c2b,null))['catch'](handleError(_0x2b1c2b,null));};
\ No newline at end of file
+var _0xd37e=['sort','where','pick','filter','type','VIRTUAL','merge','options','include','findAll','rows','catch','show','params','includeAll','body','getFields','ZohoField','nolimit','getSubjects','findOne','getDescriptions','rimraf','fast-json-patch','moment','bluebird','mustache','util','path','to-csv','fs-extra','lodash','squel','jsforce','querystring','papaparse','../../components/auth/service','../../components/parsers/qs','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../mysqldb','sendStatus','end','status','json','offset','undefined','limit','count','set','reject','update','then','destroy','error','stack','name','send','index','map','ZohoConfiguration','rawAttributes','fieldName','model','keys','query','filters','attributes','intersection','fields','length','hasOwnProperty','order'];(function(_0x46261b,_0xd68542){var _0x31e36f=function(_0xf5ed2b){while(--_0xf5ed2b){_0x46261b['push'](_0x46261b['shift']());}};_0x31e36f(++_0xd68542);}(_0xd37e,0x1de));var _0xed37=function(_0x56857c,_0x4868cb){_0x56857c=_0x56857c-0x0;var _0x4027e7=_0xd37e[_0x56857c];return _0x4027e7;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0xed37('0x0'));var zipdir=require('zip-dir');var jsonpatch=require(_0xed37('0x1'));var rp=require('request-promise');var moment=require(_0xed37('0x2'));var BPromise=require(_0xed37('0x3'));var Mustache=require(_0xed37('0x4'));var util=require(_0xed37('0x5'));var path=require(_0xed37('0x6'));var sox=require('sox');var csv=require(_0xed37('0x7'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0xed37('0x8'));var _=require(_0xed37('0x9'));var squel=require(_0xed37('0xa'));var crypto=require('crypto');var jsforce=require(_0xed37('0xb'));var deskjs=require('desk.js');var toCsv=require(_0xed37('0x7'));var querystring=require(_0xed37('0xc'));var Papa=require(_0xed37('0xd'));var Redis=require('ioredis');var authService=require(_0xed37('0xe'));var qs=require(_0xed37('0xf'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0xed37('0x10'));var logger=require(_0xed37('0x11'))(_0xed37('0x12'));var utils=require(_0xed37('0x13'));var config=require(_0xed37('0x14'));var licenseUtil=require('../../config/license/util');var db=require(_0xed37('0x15'))['db'];function respondWithStatusCode(_0x5bae6b,_0x116160){_0x116160=_0x116160||0xcc;return function(_0xf6eb1e){if(_0xf6eb1e){return _0x5bae6b[_0xed37('0x16')](_0x116160);}return _0x5bae6b['status'](_0x116160)[_0xed37('0x17')]();};}function respondWithResult(_0x250dca,_0x322d5e){_0x322d5e=_0x322d5e||0xc8;return function(_0x497bfc){if(_0x497bfc){return _0x250dca[_0xed37('0x18')](_0x322d5e)[_0xed37('0x19')](_0x497bfc);}};}function respondWithFilteredResult(_0x514646,_0x74fa54){return function(_0x471f04){if(_0x471f04){var _0x18cfef=typeof _0x74fa54[_0xed37('0x1a')]===_0xed37('0x1b')&&typeof _0x74fa54[_0xed37('0x1c')]===_0xed37('0x1b');var _0x22a0fb=_0x471f04[_0xed37('0x1d')];var _0x3b8998=_0x18cfef?0x0:_0x74fa54[_0xed37('0x1a')];var _0x5b01a4=_0x18cfef?_0x471f04[_0xed37('0x1d')]:_0x74fa54['offset']+_0x74fa54[_0xed37('0x1c')];var _0x483546;if(_0x5b01a4>=_0x22a0fb){_0x5b01a4=_0x22a0fb;_0x483546=0xc8;}else{_0x483546=0xce;}_0x514646[_0xed37('0x18')](_0x483546);return _0x514646[_0xed37('0x1e')]('Content-Range',_0x3b8998+'-'+_0x5b01a4+'/'+_0x22a0fb)['json'](_0x471f04);}return null;};}function patchUpdates(_0xb26045){return function(_0x2bd033){try{jsonpatch['apply'](_0x2bd033,_0xb26045,!![]);}catch(_0x290a9b){return BPromise[_0xed37('0x1f')](_0x290a9b);}return _0x2bd033['save']();};}function saveUpdates(_0x531d6a,_0x3b3ef0){return function(_0x120887){if(_0x120887){return _0x120887[_0xed37('0x20')](_0x531d6a)[_0xed37('0x21')](function(_0x254c71){return _0x254c71;});}return null;};}function removeEntity(_0x527c13,_0x549a99){return function(_0x322a55){if(_0x322a55){return _0x322a55[_0xed37('0x22')]()[_0xed37('0x21')](function(){_0x527c13['status'](0xcc)[_0xed37('0x17')]();});}};}function handleEntityNotFound(_0x59b9f3,_0x1d81cb){return function(_0x2e9d49){if(!_0x2e9d49){_0x59b9f3[_0xed37('0x16')](0x194);}return _0x2e9d49;};}function handleError(_0x4d4929,_0x542be9){_0x542be9=_0x542be9||0x1f4;return function(_0x71af4e){logger[_0xed37('0x23')](_0x71af4e[_0xed37('0x24')]);if(_0x71af4e[_0xed37('0x25')]){delete _0x71af4e[_0xed37('0x25')];}_0x4d4929[_0xed37('0x18')](_0x542be9)[_0xed37('0x26')](_0x71af4e);};}exports[_0xed37('0x27')]=function(_0x2a3974,_0x5df17e){var _0x32a166={},_0x50dac1={},_0x4f9d0a={'count':0x0,'rows':[]};var _0x27be80=_[_0xed37('0x28')](db[_0xed37('0x29')][_0xed37('0x2a')],function(_0x231329){return{'name':_0x231329[_0xed37('0x2b')],'type':_0x231329['type']['key']};});_0x50dac1[_0xed37('0x2c')]=_['map'](_0x27be80,'name');_0x50dac1['query']=_[_0xed37('0x2d')](_0x2a3974[_0xed37('0x2e')]);_0x50dac1[_0xed37('0x2f')]=_['intersection'](_0x50dac1[_0xed37('0x2c')],_0x50dac1[_0xed37('0x2e')]);_0x32a166[_0xed37('0x30')]=_[_0xed37('0x31')](_0x50dac1[_0xed37('0x2c')],qs[_0xed37('0x32')](_0x2a3974[_0xed37('0x2e')][_0xed37('0x32')]));_0x32a166[_0xed37('0x30')]=_0x32a166[_0xed37('0x30')][_0xed37('0x33')]?_0x32a166['attributes']:_0x50dac1[_0xed37('0x2c')];if(!_0x2a3974[_0xed37('0x2e')][_0xed37('0x34')]('nolimit')){_0x32a166[_0xed37('0x1c')]=qs[_0xed37('0x1c')](_0x2a3974[_0xed37('0x2e')]['limit']);_0x32a166[_0xed37('0x1a')]=qs[_0xed37('0x1a')](_0x2a3974[_0xed37('0x2e')][_0xed37('0x1a')]);}_0x32a166[_0xed37('0x35')]=qs[_0xed37('0x36')](_0x2a3974[_0xed37('0x2e')]['sort']);_0x32a166[_0xed37('0x37')]=qs[_0xed37('0x2f')](_[_0xed37('0x38')](_0x2a3974[_0xed37('0x2e')],_0x50dac1[_0xed37('0x2f')]),_0x27be80);if(_0x2a3974[_0xed37('0x2e')][_0xed37('0x39')]){_0x32a166['where']=_['merge'](_0x32a166[_0xed37('0x37')],{'$or':_[_0xed37('0x28')](_0x27be80,function(_0x5bedfe){if(_0x5bedfe[_0xed37('0x3a')]!==_0xed37('0x3b')){var _0x108090={};_0x108090[_0x5bedfe[_0xed37('0x25')]]={'$like':'%'+_0x2a3974[_0xed37('0x2e')][_0xed37('0x39')]+'%'};return _0x108090;}})});}_0x32a166=_[_0xed37('0x3c')]({},_0x32a166,_0x2a3974[_0xed37('0x3d')]);var _0x2ab65a={'where':_0x32a166[_0xed37('0x37')]};return db[_0xed37('0x29')][_0xed37('0x1d')](_0x2ab65a)[_0xed37('0x21')](function(_0x5bac09){_0x4f9d0a[_0xed37('0x1d')]=_0x5bac09;if(_0x2a3974[_0xed37('0x2e')]['includeAll']){_0x32a166[_0xed37('0x3e')]=[{'all':!![]}];}return db[_0xed37('0x29')][_0xed37('0x3f')](_0x32a166);})[_0xed37('0x21')](function(_0x2789f4){_0x4f9d0a[_0xed37('0x40')]=_0x2789f4;return _0x4f9d0a;})[_0xed37('0x21')](respondWithFilteredResult(_0x5df17e,_0x32a166))[_0xed37('0x41')](handleError(_0x5df17e,null));};exports[_0xed37('0x42')]=function(_0x47710c,_0x4fdbfc){var _0x2b7b13={'raw':![],'where':{'id':_0x47710c[_0xed37('0x43')]['id']}},_0xe152ad={};_0xe152ad['model']=_[_0xed37('0x2d')](db['ZohoConfiguration']['rawAttributes']);_0xe152ad[_0xed37('0x2e')]=_[_0xed37('0x2d')](_0x47710c[_0xed37('0x2e')]);_0xe152ad['filters']=_[_0xed37('0x31')](_0xe152ad['model'],_0xe152ad['query']);_0x2b7b13[_0xed37('0x30')]=_[_0xed37('0x31')](_0xe152ad[_0xed37('0x2c')],qs[_0xed37('0x32')](_0x47710c[_0xed37('0x2e')][_0xed37('0x32')]));_0x2b7b13['attributes']=_0x2b7b13[_0xed37('0x30')][_0xed37('0x33')]?_0x2b7b13[_0xed37('0x30')]:_0xe152ad['model'];if(_0x47710c[_0xed37('0x2e')][_0xed37('0x44')]){_0x2b7b13[_0xed37('0x3e')]=[{'all':!![]}];}_0x2b7b13=_[_0xed37('0x3c')]({},_0x2b7b13,_0x47710c[_0xed37('0x3d')]);return db[_0xed37('0x29')]['find'](_0x2b7b13)[_0xed37('0x21')](handleEntityNotFound(_0x4fdbfc,null))[_0xed37('0x21')](respondWithResult(_0x4fdbfc,null))[_0xed37('0x41')](handleError(_0x4fdbfc,null));};exports['create']=function(_0x132532,_0x52d73b){return db['ZohoConfiguration']['create'](_0x132532[_0xed37('0x45')],{})['then'](respondWithResult(_0x52d73b,0xc9))[_0xed37('0x41')](handleError(_0x52d73b,null));};exports[_0xed37('0x20')]=function(_0x350134,_0x16a1a8){if(_0x350134['body']['id']){delete _0x350134[_0xed37('0x45')]['id'];}return db[_0xed37('0x29')]['find']({'where':{'id':_0x350134[_0xed37('0x43')]['id']}})[_0xed37('0x21')](handleEntityNotFound(_0x16a1a8,null))[_0xed37('0x21')](saveUpdates(_0x350134[_0xed37('0x45')],null))['then'](respondWithResult(_0x16a1a8,null))[_0xed37('0x41')](handleError(_0x16a1a8,null));};exports[_0xed37('0x22')]=function(_0xbe0166,_0x38b644){return db[_0xed37('0x29')]['find']({'where':{'id':_0xbe0166[_0xed37('0x43')]['id']}})[_0xed37('0x21')](handleEntityNotFound(_0x38b644,null))[_0xed37('0x21')](removeEntity(_0x38b644,null))[_0xed37('0x41')](handleError(_0x38b644,null));};exports[_0xed37('0x46')]=function(_0x1bcf51,_0x17bd75,_0x2d0307){var _0xfcbd94={};var _0x5a970f={};var _0x4901f4;var _0x32db17;return db[_0xed37('0x29')]['findOne']({'where':{'id':_0x1bcf51[_0xed37('0x43')]['id']}})[_0xed37('0x21')](handleEntityNotFound(_0x17bd75,null))['then'](function(_0x36dcf5){if(_0x36dcf5){_0x4901f4=_0x36dcf5;_0x5a970f[_0xed37('0x2c')]=_[_0xed37('0x2d')](db[_0xed37('0x47')][_0xed37('0x2a')]);_0x5a970f['query']=_[_0xed37('0x2d')](_0x1bcf51[_0xed37('0x2e')]);_0x5a970f['filters']=_[_0xed37('0x31')](_0x5a970f[_0xed37('0x2c')],_0x5a970f[_0xed37('0x2e')]);_0xfcbd94['attributes']=_[_0xed37('0x31')](_0x5a970f[_0xed37('0x2c')],qs[_0xed37('0x32')](_0x1bcf51[_0xed37('0x2e')][_0xed37('0x32')]));_0xfcbd94[_0xed37('0x30')]=_0xfcbd94['attributes'][_0xed37('0x33')]?_0xfcbd94[_0xed37('0x30')]:_0x5a970f['model'];_0xfcbd94[_0xed37('0x35')]=qs[_0xed37('0x36')](_0x1bcf51[_0xed37('0x2e')]['sort']);_0xfcbd94[_0xed37('0x37')]=qs['filters'](_[_0xed37('0x38')](_0x1bcf51[_0xed37('0x2e')],_0x5a970f[_0xed37('0x2f')]));if(_0x1bcf51[_0xed37('0x2e')][_0xed37('0x39')]){_0xfcbd94['where']=_['merge'](_0xfcbd94['where'],{'$or':_['map'](_0xfcbd94[_0xed37('0x30')],function(_0x403697){var _0x759370={};_0x759370[_0x403697]={'$like':'%'+_0x1bcf51[_0xed37('0x2e')][_0xed37('0x39')]+'%'};return _0x759370;})});}_0xfcbd94=_[_0xed37('0x3c')]({},_0xfcbd94,_0x1bcf51[_0xed37('0x3d')]);return _0x4901f4[_0xed37('0x46')](_0xfcbd94);}})[_0xed37('0x21')](function(_0x45c18e){if(_0x45c18e){_0x32db17=_0x45c18e[_0xed37('0x33')];if(!_0x1bcf51['query'][_0xed37('0x34')](_0xed37('0x48'))){_0xfcbd94[_0xed37('0x1c')]=qs[_0xed37('0x1c')](_0x1bcf51[_0xed37('0x2e')]['limit']);_0xfcbd94['offset']=qs[_0xed37('0x1a')](_0x1bcf51['query'][_0xed37('0x1a')]);}return _0x4901f4['getFields'](_0xfcbd94);}})[_0xed37('0x21')](function(_0x59e8ba){if(_0x59e8ba){return _0x59e8ba?{'count':_0x32db17,'rows':_0x59e8ba}:null;}})[_0xed37('0x21')](respondWithResult(_0x17bd75,null))[_0xed37('0x41')](handleError(_0x17bd75,null));};exports[_0xed37('0x49')]=function(_0x3a5f3c,_0x12f75e,_0x3cf857){var _0x428038={};var _0x585f78={};var _0x573286;var _0x46c016;return db[_0xed37('0x29')][_0xed37('0x4a')]({'where':{'id':_0x3a5f3c[_0xed37('0x43')]['id']}})[_0xed37('0x21')](handleEntityNotFound(_0x12f75e,null))[_0xed37('0x21')](function(_0x15f456){if(_0x15f456){_0x573286=_0x15f456;_0x585f78['model']=_[_0xed37('0x2d')](db[_0xed37('0x47')]['rawAttributes']);_0x585f78[_0xed37('0x2e')]=_[_0xed37('0x2d')](_0x3a5f3c[_0xed37('0x2e')]);_0x585f78[_0xed37('0x2f')]=_[_0xed37('0x31')](_0x585f78[_0xed37('0x2c')],_0x585f78[_0xed37('0x2e')]);_0x428038[_0xed37('0x30')]=_['intersection'](_0x585f78[_0xed37('0x2c')],qs[_0xed37('0x32')](_0x3a5f3c[_0xed37('0x2e')]['fields']));_0x428038[_0xed37('0x30')]=_0x428038[_0xed37('0x30')]['length']?_0x428038[_0xed37('0x30')]:_0x585f78[_0xed37('0x2c')];_0x428038[_0xed37('0x35')]=qs[_0xed37('0x36')](_0x3a5f3c[_0xed37('0x2e')][_0xed37('0x36')]);_0x428038['where']=qs[_0xed37('0x2f')](_['pick'](_0x3a5f3c[_0xed37('0x2e')],_0x585f78[_0xed37('0x2f')]));if(_0x3a5f3c['query'][_0xed37('0x39')]){_0x428038['where']=_[_0xed37('0x3c')](_0x428038[_0xed37('0x37')],{'$or':_[_0xed37('0x28')](_0x428038[_0xed37('0x30')],function(_0x244ec4){var _0x96d817={};_0x96d817[_0x244ec4]={'$like':'%'+_0x3a5f3c[_0xed37('0x2e')][_0xed37('0x39')]+'%'};return _0x96d817;})});}_0x428038=_[_0xed37('0x3c')]({},_0x428038,_0x3a5f3c[_0xed37('0x3d')]);return _0x573286['getSubjects'](_0x428038);}})['then'](function(_0x23f920){if(_0x23f920){_0x46c016=_0x23f920['length'];if(!_0x3a5f3c[_0xed37('0x2e')][_0xed37('0x34')](_0xed37('0x48'))){_0x428038['limit']=qs[_0xed37('0x1c')](_0x3a5f3c[_0xed37('0x2e')][_0xed37('0x1c')]);_0x428038['offset']=qs[_0xed37('0x1a')](_0x3a5f3c[_0xed37('0x2e')][_0xed37('0x1a')]);}return _0x573286['getSubjects'](_0x428038);}})[_0xed37('0x21')](function(_0x275f7d){if(_0x275f7d){return _0x275f7d?{'count':_0x46c016,'rows':_0x275f7d}:null;}})[_0xed37('0x21')](respondWithResult(_0x12f75e,null))[_0xed37('0x41')](handleError(_0x12f75e,null));};exports[_0xed37('0x4b')]=function(_0x25d11d,_0x4c9ebc,_0x1d652d){var _0x203f29={};var _0x1714b4={};var _0x272c46;var _0x412558;return db[_0xed37('0x29')]['findOne']({'where':{'id':_0x25d11d[_0xed37('0x43')]['id']}})[_0xed37('0x21')](handleEntityNotFound(_0x4c9ebc,null))['then'](function(_0x593fc4){if(_0x593fc4){_0x272c46=_0x593fc4;_0x1714b4['model']=_[_0xed37('0x2d')](db[_0xed37('0x47')][_0xed37('0x2a')]);_0x1714b4['query']=_['keys'](_0x25d11d['query']);_0x1714b4['filters']=_[_0xed37('0x31')](_0x1714b4[_0xed37('0x2c')],_0x1714b4[_0xed37('0x2e')]);_0x203f29['attributes']=_[_0xed37('0x31')](_0x1714b4['model'],qs['fields'](_0x25d11d[_0xed37('0x2e')][_0xed37('0x32')]));_0x203f29['attributes']=_0x203f29[_0xed37('0x30')][_0xed37('0x33')]?_0x203f29[_0xed37('0x30')]:_0x1714b4[_0xed37('0x2c')];_0x203f29[_0xed37('0x35')]=qs[_0xed37('0x36')](_0x25d11d['query']['sort']);_0x203f29['where']=qs[_0xed37('0x2f')](_[_0xed37('0x38')](_0x25d11d['query'],_0x1714b4[_0xed37('0x2f')]));if(_0x25d11d[_0xed37('0x2e')][_0xed37('0x39')]){_0x203f29['where']=_[_0xed37('0x3c')](_0x203f29[_0xed37('0x37')],{'$or':_[_0xed37('0x28')](_0x203f29[_0xed37('0x30')],function(_0x55b2f3){var _0x156fe6={};_0x156fe6[_0x55b2f3]={'$like':'%'+_0x25d11d[_0xed37('0x2e')]['filter']+'%'};return _0x156fe6;})});}_0x203f29=_[_0xed37('0x3c')]({},_0x203f29,_0x25d11d[_0xed37('0x3d')]);return _0x272c46['getDescriptions'](_0x203f29);}})['then'](function(_0x1652ec){if(_0x1652ec){_0x412558=_0x1652ec[_0xed37('0x33')];if(!_0x25d11d['query'][_0xed37('0x34')](_0xed37('0x48'))){_0x203f29[_0xed37('0x1c')]=qs[_0xed37('0x1c')](_0x25d11d[_0xed37('0x2e')][_0xed37('0x1c')]);_0x203f29[_0xed37('0x1a')]=qs[_0xed37('0x1a')](_0x25d11d[_0xed37('0x2e')]['offset']);}return _0x272c46['getDescriptions'](_0x203f29);}})[_0xed37('0x21')](function(_0x520174){if(_0x520174){return _0x520174?{'count':_0x412558,'rows':_0x520174}:null;}})['then'](respondWithResult(_0x4c9ebc,null))['catch'](handleError(_0x4c9ebc,null));};
\ No newline at end of file
index 7d06a4b..bd4ab6a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x587f=['bluebird','path','rimraf','./intZohoConfiguration.attributes','exports','ZohoConfiguration','int_zoho_configurations','lodash','util','../../config/logger','api','moment'];(function(_0x5a039f,_0x2c6ee6){var _0x304d1d=function(_0x43e9a0){while(--_0x43e9a0){_0x5a039f['push'](_0x5a039f['shift']());}};_0x304d1d(++_0x2c6ee6);}(_0x587f,0xeb));var _0xf587=function(_0xc6be3a,_0x540e05){_0xc6be3a=_0xc6be3a-0x0;var _0x56a310=_0x587f[_0xc6be3a];return _0x56a310;};'use strict';var _=require(_0xf587('0x0'));var util=require(_0xf587('0x1'));var logger=require(_0xf587('0x2'))(_0xf587('0x3'));var moment=require(_0xf587('0x4'));var BPromise=require(_0xf587('0x5'));var rp=require('request-promise');var fs=require('fs');var path=require(_0xf587('0x6'));var rimraf=require(_0xf587('0x7'));var config=require('../../config/environment');var attributes=require(_0xf587('0x8'));module[_0xf587('0x9')]=function(_0x74b701,_0x51a0dc){return _0x74b701['define'](_0xf587('0xa'),attributes,{'tableName':_0xf587('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x3c73=['lodash','util','../../config/logger','api','path','rimraf','./intZohoConfiguration.attributes','exports','int_zoho_configurations'];(function(_0xccc25a,_0x38733b){var _0xade983=function(_0x21954d){while(--_0x21954d){_0xccc25a['push'](_0xccc25a['shift']());}};_0xade983(++_0x38733b);}(_0x3c73,0xab));var _0x33c7=function(_0x17ed68,_0x54bce9){_0x17ed68=_0x17ed68-0x0;var _0xa289a5=_0x3c73[_0x17ed68];return _0xa289a5;};'use strict';var _=require(_0x33c7('0x0'));var util=require(_0x33c7('0x1'));var logger=require(_0x33c7('0x2'))(_0x33c7('0x3'));var moment=require('moment');var BPromise=require('bluebird');var rp=require('request-promise');var fs=require('fs');var path=require(_0x33c7('0x4'));var rimraf=require(_0x33c7('0x5'));var config=require('../../config/environment');var attributes=require(_0x33c7('0x6'));module[_0x33c7('0x7')]=function(_0x4f8793,_0x3a5014){return _0x4f8793['define']('ZohoConfiguration',attributes,{'tableName':_0x33c7('0x8'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index e0d53ec..b6a1414 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6fca=['ZohoConfiguration,\x20%s,\x20%s','request\x20sent','stringify','error','code','message','result','lodash','util','moment','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','client','http','request','then','info'];(function(_0x880617,_0x34815c){var _0x4193e1=function(_0x2819d2){while(--_0x2819d2){_0x880617['push'](_0x880617['shift']());}};_0x4193e1(++_0x34815c);}(_0x6fca,0x193));var _0xa6fc=function(_0x434f3e,_0x3a83b0){_0x434f3e=_0x434f3e-0x0;var _0x155998=_0x6fca[_0x434f3e];return _0x155998;};'use strict';var _=require(_0xa6fc('0x0'));var util=require(_0xa6fc('0x1'));var moment=require(_0xa6fc('0x2'));var BPromise=require('bluebird');var rs=require(_0xa6fc('0x3'));var fs=require('fs');var Redis=require(_0xa6fc('0x4'));var db=require(_0xa6fc('0x5'))['db'];var utils=require(_0xa6fc('0x6'));var logger=require(_0xa6fc('0x7'))(_0xa6fc('0x8'));var config=require(_0xa6fc('0x9'));var jayson=require('jayson/promise');var client=jayson[_0xa6fc('0xa')][_0xa6fc('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x2d72ed,_0x3737f3,_0x314e7b){return new BPromise(function(_0x1e9c1d,_0x34f168){return client[_0xa6fc('0xc')](_0x2d72ed,_0x314e7b)[_0xa6fc('0xd')](function(_0x3524cc){logger[_0xa6fc('0xe')](_0xa6fc('0xf'),_0x3737f3,_0xa6fc('0x10'));logger['debug']('ZohoConfiguration,\x20%s,\x20%s,\x20%s',_0x3737f3,_0xa6fc('0x10'),JSON[_0xa6fc('0x11')](_0x3524cc));if(_0x3524cc['error']){if(_0x3524cc[_0xa6fc('0x12')][_0xa6fc('0x13')]===0x1f4){logger['error'](_0xa6fc('0xf'),_0x3737f3,_0x3524cc[_0xa6fc('0x12')][_0xa6fc('0x14')]);return _0x34f168(_0x3524cc[_0xa6fc('0x12')][_0xa6fc('0x14')]);}logger[_0xa6fc('0x12')]('ZohoConfiguration,\x20%s,\x20%s',_0x3737f3,_0x3524cc[_0xa6fc('0x12')][_0xa6fc('0x14')]);return _0x1e9c1d(_0x3524cc[_0xa6fc('0x12')][_0xa6fc('0x14')]);}else{logger['info'](_0xa6fc('0xf'),_0x3737f3,_0xa6fc('0x10'));_0x1e9c1d(_0x3524cc[_0xa6fc('0x15')]['message']);}})['catch'](function(_0x28f2b1){logger[_0xa6fc('0x12')](_0xa6fc('0xf'),_0x3737f3,_0x28f2b1);_0x34f168(_0x28f2b1);});});}
\ No newline at end of file
+var _0xd344=['rpc','../../config/environment','jayson/promise','client','then','info','request\x20sent','debug','ZohoConfiguration,\x20%s,\x20%s,\x20%s','stringify','error','code','ZohoConfiguration,\x20%s,\x20%s','message','result','lodash','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/logger'];(function(_0x20a3e8,_0x26d368){var _0x4890dc=function(_0x330409){while(--_0x330409){_0x20a3e8['push'](_0x20a3e8['shift']());}};_0x4890dc(++_0x26d368);}(_0xd344,0x93));var _0x4d34=function(_0x3c6e48,_0x666a08){_0x3c6e48=_0x3c6e48-0x0;var _0x4ce8ba=_0xd344[_0x3c6e48];return _0x4ce8ba;};'use strict';var _=require(_0x4d34('0x0'));var util=require('util');var moment=require(_0x4d34('0x1'));var BPromise=require(_0x4d34('0x2'));var rs=require(_0x4d34('0x3'));var fs=require('fs');var Redis=require(_0x4d34('0x4'));var db=require(_0x4d34('0x5'))['db'];var utils=require('../../config/utils');var logger=require(_0x4d34('0x6'))(_0x4d34('0x7'));var config=require(_0x4d34('0x8'));var jayson=require(_0x4d34('0x9'));var client=jayson[_0x4d34('0xa')]['http']({'port':0x232a});function respondWithRpcPromise(_0x121ffd,_0x1e64b6,_0xc030b0){return new BPromise(function(_0xa8de8e,_0x120074){return client['request'](_0x121ffd,_0xc030b0)[_0x4d34('0xb')](function(_0x40ec13){logger[_0x4d34('0xc')]('ZohoConfiguration,\x20%s,\x20%s',_0x1e64b6,_0x4d34('0xd'));logger[_0x4d34('0xe')](_0x4d34('0xf'),_0x1e64b6,'request\x20sent',JSON[_0x4d34('0x10')](_0x40ec13));if(_0x40ec13[_0x4d34('0x11')]){if(_0x40ec13[_0x4d34('0x11')][_0x4d34('0x12')]===0x1f4){logger[_0x4d34('0x11')](_0x4d34('0x13'),_0x1e64b6,_0x40ec13[_0x4d34('0x11')][_0x4d34('0x14')]);return _0x120074(_0x40ec13[_0x4d34('0x11')][_0x4d34('0x14')]);}logger[_0x4d34('0x11')](_0x4d34('0x13'),_0x1e64b6,_0x40ec13[_0x4d34('0x11')][_0x4d34('0x14')]);return _0xa8de8e(_0x40ec13[_0x4d34('0x11')][_0x4d34('0x14')]);}else{logger[_0x4d34('0xc')](_0x4d34('0x13'),_0x1e64b6,_0x4d34('0xd'));_0xa8de8e(_0x40ec13[_0x4d34('0x15')][_0x4d34('0x14')]);}})['catch'](function(_0x300305){logger[_0x4d34('0x11')](_0x4d34('0x13'),_0x1e64b6,_0x300305);_0x120074(_0x300305);});});}
\ No newline at end of file
index 86c36a6..eec061d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc532=['put','update','delete','destroy','multer','path','express','Router','fs-extra','../../config/environment','./intZohoField.controller','get','/:id','isAuthenticated','show','post','create'];(function(_0x28b2c2,_0x54ccf6){var _0x393717=function(_0x57cf3c){while(--_0x57cf3c){_0x28b2c2['push'](_0x28b2c2['shift']());}};_0x393717(++_0x54ccf6);}(_0xc532,0x19c));var _0x2c53=function(_0x307458,_0x5d1d8e){_0x307458=_0x307458-0x0;var _0x5dc7d0=_0xc532[_0x307458];return _0x5dc7d0;};'use strict';var multer=require(_0x2c53('0x0'));var util=require('util');var path=require(_0x2c53('0x1'));var timeout=require('connect-timeout');var express=require(_0x2c53('0x2'));var router=express[_0x2c53('0x3')]();var fs_extra=require(_0x2c53('0x4'));var auth=require('../../components/auth/service');var interaction=require('../../components/interaction/service');var config=require(_0x2c53('0x5'));var controller=require(_0x2c53('0x6'));router[_0x2c53('0x7')]('/',auth['isAuthenticated'](),controller['index']);router[_0x2c53('0x7')](_0x2c53('0x8'),auth[_0x2c53('0x9')](),controller[_0x2c53('0xa')]);router[_0x2c53('0xb')]('/',auth[_0x2c53('0x9')](),controller[_0x2c53('0xc')]);router[_0x2c53('0xd')](_0x2c53('0x8'),auth['isAuthenticated'](),controller[_0x2c53('0xe')]);router[_0x2c53('0xf')](_0x2c53('0x8'),auth[_0x2c53('0x9')](),controller[_0x2c53('0x10')]);module['exports']=router;
\ No newline at end of file
+var _0x3fd7=['../../components/interaction/service','./intZohoField.controller','isAuthenticated','index','get','/:id','post','create','put','update','destroy','exports','multer','path','express','Router','fs-extra','../../components/auth/service'];(function(_0x199d4f,_0x49ede1){var _0x202d75=function(_0x3e56d9){while(--_0x3e56d9){_0x199d4f['push'](_0x199d4f['shift']());}};_0x202d75(++_0x49ede1);}(_0x3fd7,0x1e0));var _0x73fd=function(_0x126a46,_0x2fcfcd){_0x126a46=_0x126a46-0x0;var _0xbe5786=_0x3fd7[_0x126a46];return _0xbe5786;};'use strict';var multer=require(_0x73fd('0x0'));var util=require('util');var path=require(_0x73fd('0x1'));var timeout=require('connect-timeout');var express=require(_0x73fd('0x2'));var router=express[_0x73fd('0x3')]();var fs_extra=require(_0x73fd('0x4'));var auth=require(_0x73fd('0x5'));var interaction=require(_0x73fd('0x6'));var config=require('../../config/environment');var controller=require(_0x73fd('0x7'));router['get']('/',auth[_0x73fd('0x8')](),controller[_0x73fd('0x9')]);router[_0x73fd('0xa')](_0x73fd('0xb'),auth['isAuthenticated'](),controller['show']);router[_0x73fd('0xc')]('/',auth[_0x73fd('0x8')](),controller[_0x73fd('0xd')]);router[_0x73fd('0xe')]('/:id',auth[_0x73fd('0x8')](),controller[_0x73fd('0xf')]);router['delete']('/:id',auth[_0x73fd('0x8')](),controller[_0x73fd('0x10')]);module[_0x73fd('0x11')]=router;
\ No newline at end of file
index f8ef8f7..8bea105 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xbabe=['picklist','STRING','BOOLEAN','sequelize','ENUM','string','variable','customVariable'];(function(_0x56d1b5,_0x289333){var _0x4ad91e=function(_0x15f467){while(--_0x15f467){_0x56d1b5['push'](_0x56d1b5['shift']());}};_0x4ad91e(++_0x289333);}(_0xbabe,0x9b));var _0xebab=function(_0x2c0424,_0x48a06b){_0x2c0424=_0x2c0424-0x0;var _0x25e938=_0xbabe[_0x2c0424];return _0x25e938;};'use strict';var Sequelize=require(_0xebab('0x0'));module['exports']={'type':{'type':Sequelize[_0xebab('0x1')](_0xebab('0x2'),_0xebab('0x3'),_0xebab('0x4'),'keyValue',_0xebab('0x5')),'defaultValue':_0xebab('0x2')},'content':{'type':Sequelize[_0xebab('0x6')]},'key':{'type':Sequelize[_0xebab('0x6')]},'keyType':{'type':Sequelize[_0xebab('0x1')]('string',_0xebab('0x3'),_0xebab('0x4'))},'keyContent':{'type':Sequelize[_0xebab('0x6')]},'idField':{'type':Sequelize[_0xebab('0x6')]},'nameField':{'type':Sequelize['STRING']},'customField':{'type':Sequelize[_0xebab('0x7')],'defaultValue':!![]},'variableName':{'type':Sequelize[_0xebab('0x6')]}};
\ No newline at end of file
+var _0x946b=['exports','ENUM','string','keyValue','picklist','STRING','customVariable','BOOLEAN','sequelize'];(function(_0x14090e,_0x30c2f7){var _0x554da7=function(_0x165d16){while(--_0x165d16){_0x14090e['push'](_0x14090e['shift']());}};_0x554da7(++_0x30c2f7);}(_0x946b,0x1ee));var _0xb946=function(_0x336bf1,_0x12e1b3){_0x336bf1=_0x336bf1-0x0;var _0x56811d=_0x946b[_0x336bf1];return _0x56811d;};'use strict';var Sequelize=require(_0xb946('0x0'));module[_0xb946('0x1')]={'type':{'type':Sequelize[_0xb946('0x2')](_0xb946('0x3'),'variable','customVariable',_0xb946('0x4'),_0xb946('0x5')),'defaultValue':'string'},'content':{'type':Sequelize[_0xb946('0x6')]},'key':{'type':Sequelize[_0xb946('0x6')]},'keyType':{'type':Sequelize[_0xb946('0x2')]('string','variable',_0xb946('0x7'))},'keyContent':{'type':Sequelize[_0xb946('0x6')]},'idField':{'type':Sequelize[_0xb946('0x6')]},'nameField':{'type':Sequelize['STRING']},'customField':{'type':Sequelize[_0xb946('0x8')],'defaultValue':!![]},'variableName':{'type':Sequelize[_0xb946('0x6')]}};
\ No newline at end of file
index 439f23a..aadf1a9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1e34=['filters','pick','filter','merge','VIRTUAL','ZohoField','includeAll','include','findAll','rows','show','params','rawAttributes','length','options','create','body','catch','update','find','destroy','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox','to-csv','ejs','fs-extra','squel','jsforce','desk.js','querystring','papaparse','ioredis','../../components/parsers/qs','../../config/license/hardware','../../config/logger','../../config/utils','../../config/license/util','../../mysqldb','sendStatus','end','status','json','limit','undefined','count','offset','set','Content-Range','reject','save','then','error','stack','name','send','index','map','fieldName','type','key','model','query','keys','intersection','attributes','fields','hasOwnProperty','order','sort','where'];(function(_0x52aba5,_0x575dbe){var _0x49e7ad=function(_0x435fbc){while(--_0x435fbc){_0x52aba5['push'](_0x52aba5['shift']());}};_0x49e7ad(++_0x575dbe);}(_0x1e34,0x151));var _0x41e3=function(_0x249ab0,_0x5cd95f){_0x249ab0=_0x249ab0-0x0;var _0x48413d=_0x1e34[_0x249ab0];return _0x48413d;};'use strict';var emlformat=require(_0x41e3('0x0'));var rimraf=require(_0x41e3('0x1'));var zipdir=require(_0x41e3('0x2'));var jsonpatch=require(_0x41e3('0x3'));var rp=require(_0x41e3('0x4'));var moment=require(_0x41e3('0x5'));var BPromise=require(_0x41e3('0x6'));var Mustache=require(_0x41e3('0x7'));var util=require(_0x41e3('0x8'));var path=require(_0x41e3('0x9'));var sox=require(_0x41e3('0xa'));var csv=require(_0x41e3('0xb'));var ejs=require(_0x41e3('0xc'));var fs=require('fs');var fs_extra=require(_0x41e3('0xd'));var _=require('lodash');var squel=require(_0x41e3('0xe'));var crypto=require('crypto');var jsforce=require(_0x41e3('0xf'));var deskjs=require(_0x41e3('0x10'));var toCsv=require(_0x41e3('0xb'));var querystring=require(_0x41e3('0x11'));var Papa=require(_0x41e3('0x12'));var Redis=require(_0x41e3('0x13'));var authService=require('../../components/auth/service');var qs=require(_0x41e3('0x14'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x41e3('0x15'));var logger=require(_0x41e3('0x16'))('api');var utils=require(_0x41e3('0x17'));var config=require('../../config/environment');var licenseUtil=require(_0x41e3('0x18'));var db=require(_0x41e3('0x19'))['db'];function respondWithStatusCode(_0x23524c,_0x21a9cf){_0x21a9cf=_0x21a9cf||0xcc;return function(_0x5d2ada){if(_0x5d2ada){return _0x23524c[_0x41e3('0x1a')](_0x21a9cf);}return _0x23524c['status'](_0x21a9cf)[_0x41e3('0x1b')]();};}function respondWithResult(_0x349892,_0x20dcb2){_0x20dcb2=_0x20dcb2||0xc8;return function(_0x13ba2c){if(_0x13ba2c){return _0x349892[_0x41e3('0x1c')](_0x20dcb2)[_0x41e3('0x1d')](_0x13ba2c);}};}function respondWithFilteredResult(_0x11f546,_0x92a441){return function(_0x1ee519){if(_0x1ee519){var _0xae4f77=typeof _0x92a441['offset']==='undefined'&&typeof _0x92a441[_0x41e3('0x1e')]===_0x41e3('0x1f');var _0x3dedd9=_0x1ee519[_0x41e3('0x20')];var _0x14841f=_0xae4f77?0x0:_0x92a441[_0x41e3('0x21')];var _0x5360d6=_0xae4f77?_0x1ee519['count']:_0x92a441[_0x41e3('0x21')]+_0x92a441['limit'];var _0x237311;if(_0x5360d6>=_0x3dedd9){_0x5360d6=_0x3dedd9;_0x237311=0xc8;}else{_0x237311=0xce;}_0x11f546[_0x41e3('0x1c')](_0x237311);return _0x11f546[_0x41e3('0x22')](_0x41e3('0x23'),_0x14841f+'-'+_0x5360d6+'/'+_0x3dedd9)['json'](_0x1ee519);}return null;};}function patchUpdates(_0xd49fc1){return function(_0x24e164){try{jsonpatch['apply'](_0x24e164,_0xd49fc1,!![]);}catch(_0x1a0605){return BPromise[_0x41e3('0x24')](_0x1a0605);}return _0x24e164[_0x41e3('0x25')]();};}function saveUpdates(_0x56fc29,_0x1f0c58){return function(_0x3d2a38){if(_0x3d2a38){return _0x3d2a38['update'](_0x56fc29)['then'](function(_0x49fe4f){return _0x49fe4f;});}return null;};}function removeEntity(_0x4072f1,_0x500f22){return function(_0x235047){if(_0x235047){return _0x235047['destroy']()[_0x41e3('0x26')](function(){_0x4072f1['status'](0xcc)[_0x41e3('0x1b')]();});}};}function handleEntityNotFound(_0x12f7ac,_0x1c1890){return function(_0x4119ee){if(!_0x4119ee){_0x12f7ac[_0x41e3('0x1a')](0x194);}return _0x4119ee;};}function handleError(_0x51d823,_0x3fb0ec){_0x3fb0ec=_0x3fb0ec||0x1f4;return function(_0x23cde1){logger[_0x41e3('0x27')](_0x23cde1[_0x41e3('0x28')]);if(_0x23cde1[_0x41e3('0x29')]){delete _0x23cde1[_0x41e3('0x29')];}_0x51d823[_0x41e3('0x1c')](_0x3fb0ec)[_0x41e3('0x2a')](_0x23cde1);};}exports[_0x41e3('0x2b')]=function(_0x3351ac,_0x3eff1a){var _0x4a6b95={},_0x38fbf4={},_0x1d6bbc={'count':0x0,'rows':[]};var _0x33f714=_[_0x41e3('0x2c')](db['ZohoField']['rawAttributes'],function(_0x5afc2d){return{'name':_0x5afc2d[_0x41e3('0x2d')],'type':_0x5afc2d[_0x41e3('0x2e')][_0x41e3('0x2f')]};});_0x38fbf4[_0x41e3('0x30')]=_[_0x41e3('0x2c')](_0x33f714,'name');_0x38fbf4[_0x41e3('0x31')]=_[_0x41e3('0x32')](_0x3351ac[_0x41e3('0x31')]);_0x38fbf4['filters']=_[_0x41e3('0x33')](_0x38fbf4[_0x41e3('0x30')],_0x38fbf4[_0x41e3('0x31')]);_0x4a6b95[_0x41e3('0x34')]=_['intersection'](_0x38fbf4['model'],qs[_0x41e3('0x35')](_0x3351ac[_0x41e3('0x31')][_0x41e3('0x35')]));_0x4a6b95[_0x41e3('0x34')]=_0x4a6b95[_0x41e3('0x34')]['length']?_0x4a6b95[_0x41e3('0x34')]:_0x38fbf4[_0x41e3('0x30')];if(!_0x3351ac['query'][_0x41e3('0x36')]('nolimit')){_0x4a6b95[_0x41e3('0x1e')]=qs[_0x41e3('0x1e')](_0x3351ac[_0x41e3('0x31')][_0x41e3('0x1e')]);_0x4a6b95[_0x41e3('0x21')]=qs[_0x41e3('0x21')](_0x3351ac['query']['offset']);}_0x4a6b95[_0x41e3('0x37')]=qs[_0x41e3('0x38')](_0x3351ac[_0x41e3('0x31')][_0x41e3('0x38')]);_0x4a6b95[_0x41e3('0x39')]=qs[_0x41e3('0x3a')](_[_0x41e3('0x3b')](_0x3351ac[_0x41e3('0x31')],_0x38fbf4[_0x41e3('0x3a')]),_0x33f714);if(_0x3351ac[_0x41e3('0x31')][_0x41e3('0x3c')]){_0x4a6b95[_0x41e3('0x39')]=_[_0x41e3('0x3d')](_0x4a6b95[_0x41e3('0x39')],{'$or':_['map'](_0x33f714,function(_0x3c9594){if(_0x3c9594[_0x41e3('0x2e')]!==_0x41e3('0x3e')){var _0x4a75df={};_0x4a75df[_0x3c9594[_0x41e3('0x29')]]={'$like':'%'+_0x3351ac[_0x41e3('0x31')]['filter']+'%'};return _0x4a75df;}})});}_0x4a6b95=_[_0x41e3('0x3d')]({},_0x4a6b95,_0x3351ac['options']);var _0x4c4b4f={'where':_0x4a6b95[_0x41e3('0x39')]};return db[_0x41e3('0x3f')]['count'](_0x4c4b4f)[_0x41e3('0x26')](function(_0xcd2b7b){_0x1d6bbc[_0x41e3('0x20')]=_0xcd2b7b;if(_0x3351ac[_0x41e3('0x31')][_0x41e3('0x40')]){_0x4a6b95[_0x41e3('0x41')]=[{'all':!![]}];}return db['ZohoField'][_0x41e3('0x42')](_0x4a6b95);})[_0x41e3('0x26')](function(_0x5e2c8f){_0x1d6bbc[_0x41e3('0x43')]=_0x5e2c8f;return _0x1d6bbc;})[_0x41e3('0x26')](respondWithFilteredResult(_0x3eff1a,_0x4a6b95))['catch'](handleError(_0x3eff1a,null));};exports[_0x41e3('0x44')]=function(_0x15b225,_0x352e03){var _0x479513={'raw':!![],'where':{'id':_0x15b225[_0x41e3('0x45')]['id']}},_0x4a2edc={};_0x4a2edc[_0x41e3('0x30')]=_[_0x41e3('0x32')](db[_0x41e3('0x3f')][_0x41e3('0x46')]);_0x4a2edc[_0x41e3('0x31')]=_[_0x41e3('0x32')](_0x15b225[_0x41e3('0x31')]);_0x4a2edc[_0x41e3('0x3a')]=_[_0x41e3('0x33')](_0x4a2edc[_0x41e3('0x30')],_0x4a2edc[_0x41e3('0x31')]);_0x479513[_0x41e3('0x34')]=_[_0x41e3('0x33')](_0x4a2edc['model'],qs[_0x41e3('0x35')](_0x15b225[_0x41e3('0x31')][_0x41e3('0x35')]));_0x479513[_0x41e3('0x34')]=_0x479513[_0x41e3('0x34')][_0x41e3('0x47')]?_0x479513[_0x41e3('0x34')]:_0x4a2edc['model'];if(_0x15b225['query']['includeAll']){_0x479513['include']=[{'all':!![]}];}_0x479513=_[_0x41e3('0x3d')]({},_0x479513,_0x15b225[_0x41e3('0x48')]);return db[_0x41e3('0x3f')]['find'](_0x479513)[_0x41e3('0x26')](handleEntityNotFound(_0x352e03,null))['then'](respondWithResult(_0x352e03,null))['catch'](handleError(_0x352e03,null));};exports[_0x41e3('0x49')]=function(_0x319386,_0x24c370){return db[_0x41e3('0x3f')][_0x41e3('0x49')](_0x319386[_0x41e3('0x4a')],{})['then'](respondWithResult(_0x24c370,0xc9))[_0x41e3('0x4b')](handleError(_0x24c370,null));};exports[_0x41e3('0x4c')]=function(_0x2a485f,_0x43d368){if(_0x2a485f['body']['id']){delete _0x2a485f[_0x41e3('0x4a')]['id'];}return db[_0x41e3('0x3f')][_0x41e3('0x4d')]({'where':{'id':_0x2a485f[_0x41e3('0x45')]['id']}})['then'](handleEntityNotFound(_0x43d368,null))[_0x41e3('0x26')](saveUpdates(_0x2a485f[_0x41e3('0x4a')],null))[_0x41e3('0x26')](respondWithResult(_0x43d368,null))[_0x41e3('0x4b')](handleError(_0x43d368,null));};exports[_0x41e3('0x4e')]=function(_0x354013,_0x10a7ec){return db['ZohoField']['find']({'where':{'id':_0x354013[_0x41e3('0x45')]['id']}})['then'](handleEntityNotFound(_0x10a7ec,null))['then'](removeEntity(_0x10a7ec,null))[_0x41e3('0x4b')](handleError(_0x10a7ec,null));};
\ No newline at end of file
+var _0x19b7=['util','sox','to-csv','crypto','desk.js','querystring','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','api','../../config/utils','../../config/license/util','../../mysqldb','sendStatus','status','end','json','undefined','offset','count','set','Content-Range','apply','reject','update','then','destroy','name','index','map','ZohoField','rawAttributes','fieldName','key','model','keys','query','filters','attributes','fields','length','hasOwnProperty','nolimit','limit','sort','where','pick','merge','VIRTUAL','filter','options','includeAll','include','findAll','rows','catch','intersection','find','create','body','params','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache'];(function(_0x16bb0e,_0x343132){var _0x102b8b=function(_0x17a62b){while(--_0x17a62b){_0x16bb0e['push'](_0x16bb0e['shift']());}};_0x102b8b(++_0x343132);}(_0x19b7,0x157));var _0x719b=function(_0x4c9f7f,_0x191da9){_0x4c9f7f=_0x4c9f7f-0x0;var _0x1a3fea=_0x19b7[_0x4c9f7f];return _0x1a3fea;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x719b('0x0'));var zipdir=require(_0x719b('0x1'));var jsonpatch=require(_0x719b('0x2'));var rp=require(_0x719b('0x3'));var moment=require(_0x719b('0x4'));var BPromise=require(_0x719b('0x5'));var Mustache=require(_0x719b('0x6'));var util=require(_0x719b('0x7'));var path=require('path');var sox=require(_0x719b('0x8'));var csv=require(_0x719b('0x9'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require('fs-extra');var _=require('lodash');var squel=require('squel');var crypto=require(_0x719b('0xa'));var jsforce=require('jsforce');var deskjs=require(_0x719b('0xb'));var toCsv=require(_0x719b('0x9'));var querystring=require(_0x719b('0xc'));var Papa=require('papaparse');var Redis=require(_0x719b('0xd'));var authService=require(_0x719b('0xe'));var qs=require(_0x719b('0xf'));var as=require(_0x719b('0x10'));var hardwareService=require('../../config/license/hardware');var logger=require(_0x719b('0x11'))(_0x719b('0x12'));var utils=require(_0x719b('0x13'));var config=require('../../config/environment');var licenseUtil=require(_0x719b('0x14'));var db=require(_0x719b('0x15'))['db'];function respondWithStatusCode(_0x4aa65a,_0x4067df){_0x4067df=_0x4067df||0xcc;return function(_0x2f69d0){if(_0x2f69d0){return _0x4aa65a[_0x719b('0x16')](_0x4067df);}return _0x4aa65a[_0x719b('0x17')](_0x4067df)[_0x719b('0x18')]();};}function respondWithResult(_0x597cbf,_0x3f6277){_0x3f6277=_0x3f6277||0xc8;return function(_0x118517){if(_0x118517){return _0x597cbf[_0x719b('0x17')](_0x3f6277)[_0x719b('0x19')](_0x118517);}};}function respondWithFilteredResult(_0x3f1b45,_0x13ce8a){return function(_0xee962){if(_0xee962){var _0x21017c=typeof _0x13ce8a['offset']===_0x719b('0x1a')&&typeof _0x13ce8a['limit']==='undefined';var _0x380a86=_0xee962['count'];var _0x4940f6=_0x21017c?0x0:_0x13ce8a[_0x719b('0x1b')];var _0x1af0ba=_0x21017c?_0xee962[_0x719b('0x1c')]:_0x13ce8a['offset']+_0x13ce8a['limit'];var _0x296c80;if(_0x1af0ba>=_0x380a86){_0x1af0ba=_0x380a86;_0x296c80=0xc8;}else{_0x296c80=0xce;}_0x3f1b45[_0x719b('0x17')](_0x296c80);return _0x3f1b45[_0x719b('0x1d')](_0x719b('0x1e'),_0x4940f6+'-'+_0x1af0ba+'/'+_0x380a86)[_0x719b('0x19')](_0xee962);}return null;};}function patchUpdates(_0x3a8fd3){return function(_0x2da8e3){try{jsonpatch[_0x719b('0x1f')](_0x2da8e3,_0x3a8fd3,!![]);}catch(_0xcae0a0){return BPromise[_0x719b('0x20')](_0xcae0a0);}return _0x2da8e3['save']();};}function saveUpdates(_0x1f239f,_0x232f27){return function(_0x5e2a41){if(_0x5e2a41){return _0x5e2a41[_0x719b('0x21')](_0x1f239f)[_0x719b('0x22')](function(_0x556185){return _0x556185;});}return null;};}function removeEntity(_0x18c0ae,_0x33f3d1){return function(_0x1b6082){if(_0x1b6082){return _0x1b6082[_0x719b('0x23')]()[_0x719b('0x22')](function(){_0x18c0ae['status'](0xcc)[_0x719b('0x18')]();});}};}function handleEntityNotFound(_0x629486,_0x14968a){return function(_0x4059d2){if(!_0x4059d2){_0x629486[_0x719b('0x16')](0x194);}return _0x4059d2;};}function handleError(_0x399f89,_0x18ee62){_0x18ee62=_0x18ee62||0x1f4;return function(_0x545301){logger['error'](_0x545301['stack']);if(_0x545301[_0x719b('0x24')]){delete _0x545301[_0x719b('0x24')];}_0x399f89[_0x719b('0x17')](_0x18ee62)['send'](_0x545301);};}exports[_0x719b('0x25')]=function(_0x3d7a25,_0x3aad95){var _0x4686be={},_0x277362={},_0x1e9736={'count':0x0,'rows':[]};var _0x4fd5c3=_[_0x719b('0x26')](db[_0x719b('0x27')][_0x719b('0x28')],function(_0x12dcca){return{'name':_0x12dcca[_0x719b('0x29')],'type':_0x12dcca['type'][_0x719b('0x2a')]};});_0x277362[_0x719b('0x2b')]=_[_0x719b('0x26')](_0x4fd5c3,'name');_0x277362['query']=_[_0x719b('0x2c')](_0x3d7a25[_0x719b('0x2d')]);_0x277362[_0x719b('0x2e')]=_['intersection'](_0x277362['model'],_0x277362[_0x719b('0x2d')]);_0x4686be[_0x719b('0x2f')]=_['intersection'](_0x277362[_0x719b('0x2b')],qs[_0x719b('0x30')](_0x3d7a25[_0x719b('0x2d')][_0x719b('0x30')]));_0x4686be[_0x719b('0x2f')]=_0x4686be[_0x719b('0x2f')][_0x719b('0x31')]?_0x4686be[_0x719b('0x2f')]:_0x277362['model'];if(!_0x3d7a25[_0x719b('0x2d')][_0x719b('0x32')](_0x719b('0x33'))){_0x4686be[_0x719b('0x34')]=qs['limit'](_0x3d7a25['query'][_0x719b('0x34')]);_0x4686be[_0x719b('0x1b')]=qs[_0x719b('0x1b')](_0x3d7a25[_0x719b('0x2d')][_0x719b('0x1b')]);}_0x4686be['order']=qs[_0x719b('0x35')](_0x3d7a25[_0x719b('0x2d')][_0x719b('0x35')]);_0x4686be[_0x719b('0x36')]=qs[_0x719b('0x2e')](_[_0x719b('0x37')](_0x3d7a25[_0x719b('0x2d')],_0x277362[_0x719b('0x2e')]),_0x4fd5c3);if(_0x3d7a25[_0x719b('0x2d')]['filter']){_0x4686be[_0x719b('0x36')]=_[_0x719b('0x38')](_0x4686be[_0x719b('0x36')],{'$or':_[_0x719b('0x26')](_0x4fd5c3,function(_0x440c88){if(_0x440c88['type']!==_0x719b('0x39')){var _0x5837ec={};_0x5837ec[_0x440c88[_0x719b('0x24')]]={'$like':'%'+_0x3d7a25[_0x719b('0x2d')][_0x719b('0x3a')]+'%'};return _0x5837ec;}})});}_0x4686be=_[_0x719b('0x38')]({},_0x4686be,_0x3d7a25[_0x719b('0x3b')]);var _0x3c5456={'where':_0x4686be[_0x719b('0x36')]};return db[_0x719b('0x27')][_0x719b('0x1c')](_0x3c5456)['then'](function(_0x576c9b){_0x1e9736[_0x719b('0x1c')]=_0x576c9b;if(_0x3d7a25[_0x719b('0x2d')][_0x719b('0x3c')]){_0x4686be[_0x719b('0x3d')]=[{'all':!![]}];}return db[_0x719b('0x27')][_0x719b('0x3e')](_0x4686be);})[_0x719b('0x22')](function(_0x2670b8){_0x1e9736[_0x719b('0x3f')]=_0x2670b8;return _0x1e9736;})[_0x719b('0x22')](respondWithFilteredResult(_0x3aad95,_0x4686be))[_0x719b('0x40')](handleError(_0x3aad95,null));};exports['show']=function(_0x43e753,_0x2eabc7){var _0x45acb8={'raw':!![],'where':{'id':_0x43e753['params']['id']}},_0x292b27={};_0x292b27[_0x719b('0x2b')]=_[_0x719b('0x2c')](db['ZohoField'][_0x719b('0x28')]);_0x292b27[_0x719b('0x2d')]=_[_0x719b('0x2c')](_0x43e753[_0x719b('0x2d')]);_0x292b27['filters']=_[_0x719b('0x41')](_0x292b27[_0x719b('0x2b')],_0x292b27['query']);_0x45acb8[_0x719b('0x2f')]=_[_0x719b('0x41')](_0x292b27['model'],qs[_0x719b('0x30')](_0x43e753[_0x719b('0x2d')][_0x719b('0x30')]));_0x45acb8[_0x719b('0x2f')]=_0x45acb8[_0x719b('0x2f')][_0x719b('0x31')]?_0x45acb8[_0x719b('0x2f')]:_0x292b27[_0x719b('0x2b')];if(_0x43e753['query']['includeAll']){_0x45acb8['include']=[{'all':!![]}];}_0x45acb8=_[_0x719b('0x38')]({},_0x45acb8,_0x43e753[_0x719b('0x3b')]);return db[_0x719b('0x27')][_0x719b('0x42')](_0x45acb8)[_0x719b('0x22')](handleEntityNotFound(_0x2eabc7,null))[_0x719b('0x22')](respondWithResult(_0x2eabc7,null))['catch'](handleError(_0x2eabc7,null));};exports[_0x719b('0x43')]=function(_0x548481,_0x119061){return db['ZohoField'][_0x719b('0x43')](_0x548481[_0x719b('0x44')],{})[_0x719b('0x22')](respondWithResult(_0x119061,0xc9))[_0x719b('0x40')](handleError(_0x119061,null));};exports[_0x719b('0x21')]=function(_0x360d4c,_0x4d444d){if(_0x360d4c[_0x719b('0x44')]['id']){delete _0x360d4c[_0x719b('0x44')]['id'];}return db[_0x719b('0x27')][_0x719b('0x42')]({'where':{'id':_0x360d4c[_0x719b('0x45')]['id']}})[_0x719b('0x22')](handleEntityNotFound(_0x4d444d,null))['then'](saveUpdates(_0x360d4c[_0x719b('0x44')],null))[_0x719b('0x22')](respondWithResult(_0x4d444d,null))[_0x719b('0x40')](handleError(_0x4d444d,null));};exports['destroy']=function(_0x1e2b6f,_0x3557a3){return db[_0x719b('0x27')][_0x719b('0x42')]({'where':{'id':_0x1e2b6f[_0x719b('0x45')]['id']}})[_0x719b('0x22')](handleEntityNotFound(_0x3557a3,null))[_0x719b('0x22')](removeEntity(_0x3557a3,null))[_0x719b('0x40')](handleError(_0x3557a3,null));};
\ No newline at end of file
index 7b0d3cd..67714ef 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6d38=['util','../../config/logger','api','request-promise','rimraf','../../config/environment','./intZohoField.attributes','define','ZohoField','idField','FieldId'];(function(_0xbb091,_0x3fe7ee){var _0x467a04=function(_0x3a978d){while(--_0x3a978d){_0xbb091['push'](_0xbb091['shift']());}};_0x467a04(++_0x3fe7ee);}(_0x6d38,0x1ef));var _0x86d3=function(_0x2f5ac5,_0x1ee939){_0x2f5ac5=_0x2f5ac5-0x0;var _0x37c9a8=_0x6d38[_0x2f5ac5];return _0x37c9a8;};'use strict';var _=require('lodash');var util=require(_0x86d3('0x0'));var logger=require(_0x86d3('0x1'))(_0x86d3('0x2'));var moment=require('moment');var BPromise=require('bluebird');var rp=require(_0x86d3('0x3'));var fs=require('fs');var path=require('path');var rimraf=require(_0x86d3('0x4'));var config=require(_0x86d3('0x5'));var attributes=require(_0x86d3('0x6'));module['exports']=function(_0x2d8272,_0xfbbc15){return _0x2d8272[_0x86d3('0x7')](_0x86d3('0x8'),attributes,{'tableName':'int_zoho_fields','paranoid':![],'indexes':[{'name':'zoho_unique_index','fields':[_0x86d3('0x9'),_0x86d3('0xa')],'unique':!![]}],'timestamps':!![]});};
\ No newline at end of file
+var _0x57ca=['moment','bluebird','request-promise','path','rimraf','./intZohoField.attributes','exports','define','ZohoField','int_zoho_fields','zoho_unique_index','FieldId','util','../../config/logger'];(function(_0x20a40a,_0x5967cd){var _0x9ac362=function(_0x212639){while(--_0x212639){_0x20a40a['push'](_0x20a40a['shift']());}};_0x9ac362(++_0x5967cd);}(_0x57ca,0x108));var _0xa57c=function(_0x857289,_0x4db9d7){_0x857289=_0x857289-0x0;var _0x65d330=_0x57ca[_0x857289];return _0x65d330;};'use strict';var _=require('lodash');var util=require(_0xa57c('0x0'));var logger=require(_0xa57c('0x1'))('api');var moment=require(_0xa57c('0x2'));var BPromise=require(_0xa57c('0x3'));var rp=require(_0xa57c('0x4'));var fs=require('fs');var path=require(_0xa57c('0x5'));var rimraf=require(_0xa57c('0x6'));var config=require('../../config/environment');var attributes=require(_0xa57c('0x7'));module[_0xa57c('0x8')]=function(_0x113dcf,_0x19473f){return _0x113dcf[_0xa57c('0x9')](_0xa57c('0xa'),attributes,{'tableName':_0xa57c('0xb'),'paranoid':![],'indexes':[{'name':_0xa57c('0xc'),'fields':['idField',_0xa57c('0xd')],'unique':!![]}],'timestamps':!![]});};
\ No newline at end of file
index 1ceea5c..cbe8458 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0a18=['error','code','message','result','catch','lodash','util','randomstring','ioredis','../../config/utils','jayson/promise','client','http','info','ZohoField,\x20%s,\x20%s','request\x20sent','debug','ZohoField,\x20%s,\x20%s,\x20%s'];(function(_0x1224eb,_0x3deb68){var _0xb9c8fb=function(_0xd49fa4){while(--_0xd49fa4){_0x1224eb['push'](_0x1224eb['shift']());}};_0xb9c8fb(++_0x3deb68);}(_0x0a18,0x1eb));var _0x80a1=function(_0x59d89e,_0x55edf5){_0x59d89e=_0x59d89e-0x0;var _0x554e93=_0x0a18[_0x59d89e];return _0x554e93;};'use strict';var _=require(_0x80a1('0x0'));var util=require(_0x80a1('0x1'));var moment=require('moment');var BPromise=require('bluebird');var rs=require(_0x80a1('0x2'));var fs=require('fs');var Redis=require(_0x80a1('0x3'));var db=require('../../mysqldb')['db'];var utils=require(_0x80a1('0x4'));var logger=require('../../config/logger')('rpc');var config=require('../../config/environment');var jayson=require(_0x80a1('0x5'));var client=jayson[_0x80a1('0x6')][_0x80a1('0x7')]({'port':0x232a});function respondWithRpcPromise(_0xae15e3,_0x1ae1eb,_0x399084){return new BPromise(function(_0x449868,_0x4f126b){return client['request'](_0xae15e3,_0x399084)['then'](function(_0x4b6d80){logger[_0x80a1('0x8')](_0x80a1('0x9'),_0x1ae1eb,_0x80a1('0xa'));logger[_0x80a1('0xb')](_0x80a1('0xc'),_0x1ae1eb,_0x80a1('0xa'),JSON['stringify'](_0x4b6d80));if(_0x4b6d80[_0x80a1('0xd')]){if(_0x4b6d80[_0x80a1('0xd')][_0x80a1('0xe')]===0x1f4){logger[_0x80a1('0xd')](_0x80a1('0x9'),_0x1ae1eb,_0x4b6d80[_0x80a1('0xd')][_0x80a1('0xf')]);return _0x4f126b(_0x4b6d80[_0x80a1('0xd')][_0x80a1('0xf')]);}logger[_0x80a1('0xd')](_0x80a1('0x9'),_0x1ae1eb,_0x4b6d80[_0x80a1('0xd')][_0x80a1('0xf')]);return _0x449868(_0x4b6d80['error'][_0x80a1('0xf')]);}else{logger['info'](_0x80a1('0x9'),_0x1ae1eb,_0x80a1('0xa'));_0x449868(_0x4b6d80[_0x80a1('0x10')][_0x80a1('0xf')]);}})[_0x80a1('0x11')](function(_0x2bea55){logger[_0x80a1('0xd')]('ZohoField,\x20%s,\x20%s',_0x1ae1eb,_0x2bea55);_0x4f126b(_0x2bea55);});});}
\ No newline at end of file
+var _0xeae3=['catch','lodash','util','moment','bluebird','randomstring','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','client','http','request','info','ZohoField,\x20%s,\x20%s','request\x20sent','stringify','error','code','message','result'];(function(_0x22bf34,_0x39b747){var _0x284714=function(_0x14dd96){while(--_0x14dd96){_0x22bf34['push'](_0x22bf34['shift']());}};_0x284714(++_0x39b747);}(_0xeae3,0x6f));var _0x3eae=function(_0x34ab65,_0x356d84){_0x34ab65=_0x34ab65-0x0;var _0x31532c=_0xeae3[_0x34ab65];return _0x31532c;};'use strict';var _=require(_0x3eae('0x0'));var util=require(_0x3eae('0x1'));var moment=require(_0x3eae('0x2'));var BPromise=require(_0x3eae('0x3'));var rs=require(_0x3eae('0x4'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x3eae('0x5'))['db'];var utils=require(_0x3eae('0x6'));var logger=require(_0x3eae('0x7'))(_0x3eae('0x8'));var config=require(_0x3eae('0x9'));var jayson=require('jayson/promise');var client=jayson[_0x3eae('0xa')][_0x3eae('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x2e36b3,_0x3c1caa,_0x34c6eb){return new BPromise(function(_0x5a0e9f,_0xbe017d){return client[_0x3eae('0xc')](_0x2e36b3,_0x34c6eb)['then'](function(_0x34c87d){logger[_0x3eae('0xd')](_0x3eae('0xe'),_0x3c1caa,_0x3eae('0xf'));logger['debug']('ZohoField,\x20%s,\x20%s,\x20%s',_0x3c1caa,'request\x20sent',JSON[_0x3eae('0x10')](_0x34c87d));if(_0x34c87d[_0x3eae('0x11')]){if(_0x34c87d[_0x3eae('0x11')][_0x3eae('0x12')]===0x1f4){logger[_0x3eae('0x11')](_0x3eae('0xe'),_0x3c1caa,_0x34c87d['error']['message']);return _0xbe017d(_0x34c87d[_0x3eae('0x11')][_0x3eae('0x13')]);}logger['error']('ZohoField,\x20%s,\x20%s',_0x3c1caa,_0x34c87d[_0x3eae('0x11')][_0x3eae('0x13')]);return _0x5a0e9f(_0x34c87d[_0x3eae('0x11')]['message']);}else{logger[_0x3eae('0xd')]('ZohoField,\x20%s,\x20%s',_0x3c1caa,'request\x20sent');_0x5a0e9f(_0x34c87d[_0x3eae('0x14')][_0x3eae('0x13')]);}})[_0x3eae('0x15')](function(_0x4ed6f3){logger[_0x3eae('0x11')](_0x3eae('0xe'),_0x3c1caa,_0x4ed6f3);_0xbe017d(_0x4ed6f3);});});}
\ No newline at end of file
index da515cf..63bad24 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xcb91=['express','Router','../../components/auth/service','../../components/interaction/service','exports','path','connect-timeout'];(function(_0xde5943,_0x2a701b){var _0x22d1cd=function(_0x2ae619){while(--_0x2ae619){_0xde5943['push'](_0xde5943['shift']());}};_0x22d1cd(++_0x2a701b);}(_0xcb91,0x1a9));var _0x1cb9=function(_0xf55e73,_0x3fecc5){_0xf55e73=_0xf55e73-0x0;var _0x116b99=_0xcb91[_0xf55e73];return _0x116b99;};'use strict';var multer=require('multer');var util=require('util');var path=require(_0x1cb9('0x0'));var timeout=require(_0x1cb9('0x1'));var express=require(_0x1cb9('0x2'));var router=express[_0x1cb9('0x3')]();var fs_extra=require('fs-extra');var auth=require(_0x1cb9('0x4'));var interaction=require(_0x1cb9('0x5'));var config=require('../../config/environment');module[_0x1cb9('0x6')]=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(_0x475d06,_0x11d6e0){var _0xff53a7=function(_0x56ed80){while(--_0x56ed80){_0x475d06['push'](_0x475d06['shift']());}};_0xff53a7(++_0x11d6e0);}(_0xedd9,0xfc));var _0x9edd=function(_0x7ab269,_0x2dbdfa){_0x7ab269=_0x7ab269-0x0;var _0x30decb=_0xedd9[_0x7ab269];return _0x30decb;};'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 7abcb6f..90bccaf 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xfaca=['app.js','BOOLEAN','state','sequelize','exports','unique_name_and_version','STRING'];(function(_0x2e3545,_0x20a6ec){var _0xcf18f=function(_0x3c85dd){while(--_0x3c85dd){_0x2e3545['push'](_0x2e3545['shift']());}};_0xcf18f(++_0x20a6ec);}(_0xfaca,0x114));var _0xafac=function(_0x36d11c,_0x6dffa7){_0x36d11c=_0x36d11c-0x0;var _0xd95b50=_0xfaca[_0x36d11c];return _0xd95b50;};'use strict';var Sequelize=require(_0xafac('0x0'));module[_0xafac('0x1')]={'name':{'type':Sequelize['STRING'],'allowNull':![],'unique':_0xafac('0x2')},'version':{'type':Sequelize[_0xafac('0x3')],'allowNull':![],'unique':_0xafac('0x2')},'main':{'type':Sequelize[_0xafac('0x3')],'defaultValue':_0xafac('0x4')},'filename':{'type':Sequelize[_0xafac('0x3')]},'path':{'type':Sequelize[_0xafac('0x3')]},'type':{'type':Sequelize['STRING']},'size':{'type':Sequelize['INTEGER']},'active':{'type':Sequelize[_0xafac('0x5')],'defaultValue':![]},'author':{'type':Sequelize[_0xafac('0x3')]},'logo':{'type':Sequelize[_0xafac('0x3')]},'state':{'type':Sequelize[_0xafac('0x3')],'unique':_0xafac('0x6')},'description':{'type':Sequelize['STRING']},'title':{'type':Sequelize[_0xafac('0x3')]},'remoteUri':{'type':Sequelize[_0xafac('0x3')]},'link':{'type':Sequelize[_0xafac('0x3')],'defaultValue':'#'}};
\ No newline at end of file
+var _0x27e8=['INTEGER','BOOLEAN','state','exports','STRING','unique_name_and_version','app.js'];(function(_0xd299c3,_0x4ba0f1){var _0x376574=function(_0xc585f){while(--_0xc585f){_0xd299c3['push'](_0xd299c3['shift']());}};_0x376574(++_0x4ba0f1);}(_0x27e8,0x1a7));var _0x827e=function(_0x395b84,_0x550bbe){_0x395b84=_0x395b84-0x0;var _0x533163=_0x27e8[_0x395b84];return _0x533163;};'use strict';var Sequelize=require('sequelize');module[_0x827e('0x0')]={'name':{'type':Sequelize[_0x827e('0x1')],'allowNull':![],'unique':_0x827e('0x2')},'version':{'type':Sequelize[_0x827e('0x1')],'allowNull':![],'unique':_0x827e('0x2')},'main':{'type':Sequelize[_0x827e('0x1')],'defaultValue':_0x827e('0x3')},'filename':{'type':Sequelize['STRING']},'path':{'type':Sequelize['STRING']},'type':{'type':Sequelize[_0x827e('0x1')]},'size':{'type':Sequelize[_0x827e('0x4')]},'active':{'type':Sequelize[_0x827e('0x5')],'defaultValue':![]},'author':{'type':Sequelize[_0x827e('0x1')]},'logo':{'type':Sequelize[_0x827e('0x1')]},'state':{'type':Sequelize[_0x827e('0x1')],'unique':_0x827e('0x6')},'description':{'type':Sequelize[_0x827e('0x1')]},'title':{'type':Sequelize['STRING']},'remoteUri':{'type':Sequelize['STRING']},'link':{'type':Sequelize[_0x827e('0x1')],'defaultValue':'#'}};
\ No newline at end of file
index 89e7a26..90d9ca2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x57ca=['bluebird','mustache','util','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','papaparse','ioredis','../../components/parsers/qs','../../config/license/hardware','../../config/logger','../../config/utils','../../config/license/util','../../mysqldb','status','json','offset','undefined','count','limit','set','apply','save','update','then','destroy','end','sendStatus','error','stack','name','index','map','Integration','type','model','keys','query','filters','intersection','attributes','fields','length','hasOwnProperty','order','sort','where','filter','merge','options','includeAll','include','findAll','params','find','catch','create','body','rimraf','zip-dir','request-promise','moment'];(function(_0xadaba9,_0x3e5fe7){var _0x214c7e=function(_0x402611){while(--_0x402611){_0xadaba9['push'](_0xadaba9['shift']());}};_0x214c7e(++_0x3e5fe7);}(_0x57ca,0x108));var _0xa57c=function(_0x4836ab,_0x1daade){_0x4836ab=_0x4836ab-0x0;var _0xfb8bbd=_0x57ca[_0x4836ab];return _0xfb8bbd;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0xa57c('0x0'));var zipdir=require(_0xa57c('0x1'));var jsonpatch=require('fast-json-patch');var rp=require(_0xa57c('0x2'));var moment=require(_0xa57c('0x3'));var BPromise=require(_0xa57c('0x4'));var Mustache=require(_0xa57c('0x5'));var util=require(_0xa57c('0x6'));var path=require('path');var sox=require(_0xa57c('0x7'));var csv=require(_0xa57c('0x8'));var ejs=require(_0xa57c('0x9'));var fs=require('fs');var fs_extra=require(_0xa57c('0xa'));var _=require(_0xa57c('0xb'));var squel=require(_0xa57c('0xc'));var crypto=require(_0xa57c('0xd'));var jsforce=require(_0xa57c('0xe'));var deskjs=require('desk.js');var toCsv=require(_0xa57c('0x8'));var querystring=require('querystring');var Papa=require(_0xa57c('0xf'));var Redis=require(_0xa57c('0x10'));var authService=require('../../components/auth/service');var qs=require(_0xa57c('0x11'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0xa57c('0x12'));var logger=require(_0xa57c('0x13'))('api');var utils=require(_0xa57c('0x14'));var config=require('../../config/environment');var licenseUtil=require(_0xa57c('0x15'));var db=require(_0xa57c('0x16'))['db'];function respondWithStatusCode(_0x1f2bb5,_0x9e25bf){_0x9e25bf=_0x9e25bf||0xcc;return function(_0x205e72){if(_0x205e72){return _0x1f2bb5['sendStatus'](_0x9e25bf);}return _0x1f2bb5[_0xa57c('0x17')](_0x9e25bf)['end']();};}function respondWithResult(_0x30d23d,_0x3d5995){_0x3d5995=_0x3d5995||0xc8;return function(_0x30940d){if(_0x30940d){return _0x30d23d[_0xa57c('0x17')](_0x3d5995)[_0xa57c('0x18')](_0x30940d);}};}function respondWithFilteredResult(_0x37a323,_0x3f900a){return function(_0x4b4bdb){if(_0x4b4bdb){var _0x26607a=typeof _0x3f900a[_0xa57c('0x19')]===_0xa57c('0x1a')&&typeof _0x3f900a['limit']===_0xa57c('0x1a');var _0x5f33f1=_0x4b4bdb[_0xa57c('0x1b')];var _0x3d781d=_0x26607a?0x0:_0x3f900a[_0xa57c('0x19')];var _0xe3d505=_0x26607a?_0x4b4bdb[_0xa57c('0x1b')]:_0x3f900a[_0xa57c('0x19')]+_0x3f900a[_0xa57c('0x1c')];var _0x595c7a;if(_0xe3d505>=_0x5f33f1){_0xe3d505=_0x5f33f1;_0x595c7a=0xc8;}else{_0x595c7a=0xce;}_0x37a323['status'](_0x595c7a);return _0x37a323[_0xa57c('0x1d')]('Content-Range',_0x3d781d+'-'+_0xe3d505+'/'+_0x5f33f1)['json'](_0x4b4bdb);}return null;};}function patchUpdates(_0x418415){return function(_0xa5b314){try{jsonpatch[_0xa57c('0x1e')](_0xa5b314,_0x418415,!![]);}catch(_0x23bec0){return BPromise['reject'](_0x23bec0);}return _0xa5b314[_0xa57c('0x1f')]();};}function saveUpdates(_0x25715f,_0x34d1bc){return function(_0x2213b2){if(_0x2213b2){return _0x2213b2[_0xa57c('0x20')](_0x25715f)[_0xa57c('0x21')](function(_0x1e0192){return _0x1e0192;});}return null;};}function removeEntity(_0x42038e,_0x2e99ed){return function(_0xdf65dd){if(_0xdf65dd){return _0xdf65dd[_0xa57c('0x22')]()[_0xa57c('0x21')](function(){_0x42038e[_0xa57c('0x17')](0xcc)[_0xa57c('0x23')]();});}};}function handleEntityNotFound(_0x431bec,_0x511a26){return function(_0x2db443){if(!_0x2db443){_0x431bec[_0xa57c('0x24')](0x194);}return _0x2db443;};}function handleError(_0x27884d,_0x5228b9){_0x5228b9=_0x5228b9||0x1f4;return function(_0x315ad7){logger[_0xa57c('0x25')](_0x315ad7[_0xa57c('0x26')]);if(_0x315ad7[_0xa57c('0x27')]){delete _0x315ad7[_0xa57c('0x27')];}_0x27884d[_0xa57c('0x17')](_0x5228b9)['send'](_0x315ad7);};}exports[_0xa57c('0x28')]=function(_0x4c1478,_0x54a18b){var _0x257661={},_0x7d10ec={},_0x5a3e03={'count':0x0,'rows':[]};var _0x12898b=_[_0xa57c('0x29')](db[_0xa57c('0x2a')]['rawAttributes'],function(_0xd779f1){return{'name':_0xd779f1['fieldName'],'type':_0xd779f1[_0xa57c('0x2b')]['key']};});_0x7d10ec[_0xa57c('0x2c')]=_['map'](_0x12898b,_0xa57c('0x27'));_0x7d10ec['query']=_[_0xa57c('0x2d')](_0x4c1478[_0xa57c('0x2e')]);_0x7d10ec[_0xa57c('0x2f')]=_[_0xa57c('0x30')](_0x7d10ec[_0xa57c('0x2c')],_0x7d10ec[_0xa57c('0x2e')]);_0x257661[_0xa57c('0x31')]=_['intersection'](_0x7d10ec[_0xa57c('0x2c')],qs['fields'](_0x4c1478[_0xa57c('0x2e')][_0xa57c('0x32')]));_0x257661[_0xa57c('0x31')]=_0x257661['attributes'][_0xa57c('0x33')]?_0x257661['attributes']:_0x7d10ec[_0xa57c('0x2c')];if(!_0x4c1478['query'][_0xa57c('0x34')]('nolimit')){_0x257661[_0xa57c('0x1c')]=qs[_0xa57c('0x1c')](_0x4c1478['query'][_0xa57c('0x1c')]);_0x257661['offset']=qs[_0xa57c('0x19')](_0x4c1478['query'][_0xa57c('0x19')]);}_0x257661[_0xa57c('0x35')]=qs[_0xa57c('0x36')](_0x4c1478[_0xa57c('0x2e')][_0xa57c('0x36')]);_0x257661[_0xa57c('0x37')]=qs['filters'](_['pick'](_0x4c1478[_0xa57c('0x2e')],_0x7d10ec[_0xa57c('0x2f')]),_0x12898b);if(_0x4c1478[_0xa57c('0x2e')]['filter']){_0x257661[_0xa57c('0x37')]=_['merge'](_0x257661[_0xa57c('0x37')],{'$or':_[_0xa57c('0x29')](_0x12898b,function(_0x5c8256){if(_0x5c8256['type']!=='VIRTUAL'){var _0x3be888={};_0x3be888[_0x5c8256[_0xa57c('0x27')]]={'$like':'%'+_0x4c1478[_0xa57c('0x2e')][_0xa57c('0x38')]+'%'};return _0x3be888;}})});}_0x257661=_[_0xa57c('0x39')]({},_0x257661,_0x4c1478[_0xa57c('0x3a')]);var _0x5a444a={'where':_0x257661[_0xa57c('0x37')]};return db[_0xa57c('0x2a')]['count'](_0x5a444a)['then'](function(_0x5e10b){_0x5a3e03[_0xa57c('0x1b')]=_0x5e10b;if(_0x4c1478['query'][_0xa57c('0x3b')]){_0x257661[_0xa57c('0x3c')]=[{'all':!![]}];}return db[_0xa57c('0x2a')][_0xa57c('0x3d')](_0x257661);})[_0xa57c('0x21')](function(_0x43c1d7){_0x5a3e03['rows']=_0x43c1d7;return _0x5a3e03;})[_0xa57c('0x21')](respondWithFilteredResult(_0x54a18b,_0x257661))['catch'](handleError(_0x54a18b,null));};exports['show']=function(_0x5b3300,_0x520383){var _0x588199={'raw':![],'where':{'id':_0x5b3300[_0xa57c('0x3e')]['id']}},_0x39b20f={};_0x39b20f[_0xa57c('0x2c')]=_['keys'](db['Integration']['rawAttributes']);_0x39b20f[_0xa57c('0x2e')]=_[_0xa57c('0x2d')](_0x5b3300[_0xa57c('0x2e')]);_0x39b20f[_0xa57c('0x2f')]=_[_0xa57c('0x30')](_0x39b20f[_0xa57c('0x2c')],_0x39b20f['query']);_0x588199[_0xa57c('0x31')]=_[_0xa57c('0x30')](_0x39b20f[_0xa57c('0x2c')],qs[_0xa57c('0x32')](_0x5b3300[_0xa57c('0x2e')][_0xa57c('0x32')]));_0x588199['attributes']=_0x588199[_0xa57c('0x31')][_0xa57c('0x33')]?_0x588199[_0xa57c('0x31')]:_0x39b20f[_0xa57c('0x2c')];if(_0x5b3300[_0xa57c('0x2e')]['includeAll']){_0x588199[_0xa57c('0x3c')]=[{'all':!![]}];}_0x588199=_[_0xa57c('0x39')]({},_0x588199,_0x5b3300[_0xa57c('0x3a')]);return db[_0xa57c('0x2a')][_0xa57c('0x3f')](_0x588199)[_0xa57c('0x21')](handleEntityNotFound(_0x520383,null))['then'](respondWithResult(_0x520383,null))[_0xa57c('0x40')](handleError(_0x520383,null));};exports[_0xa57c('0x41')]=function(_0x247906,_0x44ea0a){return db[_0xa57c('0x2a')][_0xa57c('0x41')](_0x247906['body'],{})['then'](respondWithResult(_0x44ea0a,0xc9))['catch'](handleError(_0x44ea0a,null));};exports['update']=function(_0x232675,_0x49492f){if(_0x232675[_0xa57c('0x42')]['id']){delete _0x232675[_0xa57c('0x42')]['id'];}return db['Integration'][_0xa57c('0x3f')]({'where':{'id':_0x232675[_0xa57c('0x3e')]['id']}})[_0xa57c('0x21')](handleEntityNotFound(_0x49492f,null))[_0xa57c('0x21')](saveUpdates(_0x232675[_0xa57c('0x42')],null))['then'](respondWithResult(_0x49492f,null))[_0xa57c('0x40')](handleError(_0x49492f,null));};exports[_0xa57c('0x22')]=function(_0x4584e8,_0xd57bac){return db[_0xa57c('0x2a')]['find']({'where':{'id':_0x4584e8[_0xa57c('0x3e')]['id']}})['then'](handleEntityNotFound(_0xd57bac,null))['then'](removeEntity(_0xd57bac,null))[_0xa57c('0x40')](handleError(_0xd57bac,null));};
\ No newline at end of file
+var _0xf61e=['intersection','fields','attributes','length','hasOwnProperty','order','where','filter','VIRTUAL','merge','options','includeAll','include','findAll','catch','show','find','create','update','body','params','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox','to-csv','fs-extra','lodash','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','sendStatus','end','json','offset','undefined','count','limit','set','Content-Range','apply','destroy','then','status','error','stack','name','send','index','map','Integration','rawAttributes','key','model','query','keys','filters'];(function(_0x489c95,_0x53159c){var _0x10e7a7=function(_0xcb4342){while(--_0xcb4342){_0x489c95['push'](_0x489c95['shift']());}};_0x10e7a7(++_0x53159c);}(_0xf61e,0x191));var _0xef61=function(_0x102085,_0x41b474){_0x102085=_0x102085-0x0;var _0x52ce0b=_0xf61e[_0x102085];return _0x52ce0b;};'use strict';var emlformat=require(_0xef61('0x0'));var rimraf=require(_0xef61('0x1'));var zipdir=require(_0xef61('0x2'));var jsonpatch=require(_0xef61('0x3'));var rp=require(_0xef61('0x4'));var moment=require(_0xef61('0x5'));var BPromise=require(_0xef61('0x6'));var Mustache=require(_0xef61('0x7'));var util=require(_0xef61('0x8'));var path=require(_0xef61('0x9'));var sox=require(_0xef61('0xa'));var csv=require(_0xef61('0xb'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0xef61('0xc'));var _=require(_0xef61('0xd'));var squel=require('squel');var crypto=require(_0xef61('0xe'));var jsforce=require(_0xef61('0xf'));var deskjs=require(_0xef61('0x10'));var toCsv=require('to-csv');var querystring=require('querystring');var Papa=require(_0xef61('0x11'));var Redis=require(_0xef61('0x12'));var authService=require(_0xef61('0x13'));var qs=require(_0xef61('0x14'));var as=require(_0xef61('0x15'));var hardwareService=require(_0xef61('0x16'));var logger=require(_0xef61('0x17'))(_0xef61('0x18'));var utils=require(_0xef61('0x19'));var config=require(_0xef61('0x1a'));var licenseUtil=require(_0xef61('0x1b'));var db=require(_0xef61('0x1c'))['db'];function respondWithStatusCode(_0x114e1f,_0x318f1c){_0x318f1c=_0x318f1c||0xcc;return function(_0x5de159){if(_0x5de159){return _0x114e1f[_0xef61('0x1d')](_0x318f1c);}return _0x114e1f['status'](_0x318f1c)[_0xef61('0x1e')]();};}function respondWithResult(_0x1db2a9,_0x370ee0){_0x370ee0=_0x370ee0||0xc8;return function(_0x76ef9b){if(_0x76ef9b){return _0x1db2a9['status'](_0x370ee0)[_0xef61('0x1f')](_0x76ef9b);}};}function respondWithFilteredResult(_0x435beb,_0x1224c2){return function(_0x78ff22){if(_0x78ff22){var _0x588a61=typeof _0x1224c2[_0xef61('0x20')]===_0xef61('0x21')&&typeof _0x1224c2['limit']===_0xef61('0x21');var _0x408541=_0x78ff22[_0xef61('0x22')];var _0x22dc1b=_0x588a61?0x0:_0x1224c2[_0xef61('0x20')];var _0x28315a=_0x588a61?_0x78ff22[_0xef61('0x22')]:_0x1224c2['offset']+_0x1224c2[_0xef61('0x23')];var _0x2c8dad;if(_0x28315a>=_0x408541){_0x28315a=_0x408541;_0x2c8dad=0xc8;}else{_0x2c8dad=0xce;}_0x435beb['status'](_0x2c8dad);return _0x435beb[_0xef61('0x24')](_0xef61('0x25'),_0x22dc1b+'-'+_0x28315a+'/'+_0x408541)[_0xef61('0x1f')](_0x78ff22);}return null;};}function patchUpdates(_0x26cf42){return function(_0xb0d7a4){try{jsonpatch[_0xef61('0x26')](_0xb0d7a4,_0x26cf42,!![]);}catch(_0x92ea33){return BPromise['reject'](_0x92ea33);}return _0xb0d7a4['save']();};}function saveUpdates(_0x3d31c1,_0x58bd7d){return function(_0x389d6d){if(_0x389d6d){return _0x389d6d['update'](_0x3d31c1)['then'](function(_0x2f0569){return _0x2f0569;});}return null;};}function removeEntity(_0x5ce99d,_0x53181b){return function(_0xfbee94){if(_0xfbee94){return _0xfbee94[_0xef61('0x27')]()[_0xef61('0x28')](function(){_0x5ce99d[_0xef61('0x29')](0xcc)['end']();});}};}function handleEntityNotFound(_0x16b144,_0x4e738f){return function(_0x2a6832){if(!_0x2a6832){_0x16b144[_0xef61('0x1d')](0x194);}return _0x2a6832;};}function handleError(_0x2419a9,_0xf4c7c9){_0xf4c7c9=_0xf4c7c9||0x1f4;return function(_0x2155f1){logger[_0xef61('0x2a')](_0x2155f1[_0xef61('0x2b')]);if(_0x2155f1[_0xef61('0x2c')]){delete _0x2155f1[_0xef61('0x2c')];}_0x2419a9[_0xef61('0x29')](_0xf4c7c9)[_0xef61('0x2d')](_0x2155f1);};}exports[_0xef61('0x2e')]=function(_0xeb9a62,_0x63edd4){var _0x1f3572={},_0x85978={},_0x39c15e={'count':0x0,'rows':[]};var _0x393ea9=_[_0xef61('0x2f')](db[_0xef61('0x30')][_0xef61('0x31')],function(_0x53fa3b){return{'name':_0x53fa3b['fieldName'],'type':_0x53fa3b['type'][_0xef61('0x32')]};});_0x85978[_0xef61('0x33')]=_[_0xef61('0x2f')](_0x393ea9,'name');_0x85978[_0xef61('0x34')]=_[_0xef61('0x35')](_0xeb9a62['query']);_0x85978[_0xef61('0x36')]=_['intersection'](_0x85978['model'],_0x85978[_0xef61('0x34')]);_0x1f3572['attributes']=_[_0xef61('0x37')](_0x85978['model'],qs[_0xef61('0x38')](_0xeb9a62[_0xef61('0x34')][_0xef61('0x38')]));_0x1f3572[_0xef61('0x39')]=_0x1f3572[_0xef61('0x39')][_0xef61('0x3a')]?_0x1f3572[_0xef61('0x39')]:_0x85978[_0xef61('0x33')];if(!_0xeb9a62[_0xef61('0x34')][_0xef61('0x3b')]('nolimit')){_0x1f3572[_0xef61('0x23')]=qs[_0xef61('0x23')](_0xeb9a62[_0xef61('0x34')][_0xef61('0x23')]);_0x1f3572[_0xef61('0x20')]=qs['offset'](_0xeb9a62[_0xef61('0x34')][_0xef61('0x20')]);}_0x1f3572[_0xef61('0x3c')]=qs['sort'](_0xeb9a62['query']['sort']);_0x1f3572[_0xef61('0x3d')]=qs['filters'](_['pick'](_0xeb9a62['query'],_0x85978[_0xef61('0x36')]),_0x393ea9);if(_0xeb9a62[_0xef61('0x34')][_0xef61('0x3e')]){_0x1f3572['where']=_['merge'](_0x1f3572['where'],{'$or':_[_0xef61('0x2f')](_0x393ea9,function(_0x32ad44){if(_0x32ad44['type']!==_0xef61('0x3f')){var _0x12f442={};_0x12f442[_0x32ad44[_0xef61('0x2c')]]={'$like':'%'+_0xeb9a62[_0xef61('0x34')]['filter']+'%'};return _0x12f442;}})});}_0x1f3572=_[_0xef61('0x40')]({},_0x1f3572,_0xeb9a62[_0xef61('0x41')]);var _0x3103d4={'where':_0x1f3572[_0xef61('0x3d')]};return db['Integration']['count'](_0x3103d4)[_0xef61('0x28')](function(_0x462972){_0x39c15e[_0xef61('0x22')]=_0x462972;if(_0xeb9a62['query'][_0xef61('0x42')]){_0x1f3572[_0xef61('0x43')]=[{'all':!![]}];}return db[_0xef61('0x30')][_0xef61('0x44')](_0x1f3572);})['then'](function(_0x545597){_0x39c15e['rows']=_0x545597;return _0x39c15e;})[_0xef61('0x28')](respondWithFilteredResult(_0x63edd4,_0x1f3572))[_0xef61('0x45')](handleError(_0x63edd4,null));};exports[_0xef61('0x46')]=function(_0xe40d,_0x3f81a1){var _0x272143={'raw':![],'where':{'id':_0xe40d['params']['id']}},_0xc9b467={};_0xc9b467[_0xef61('0x33')]=_[_0xef61('0x35')](db[_0xef61('0x30')][_0xef61('0x31')]);_0xc9b467['query']=_[_0xef61('0x35')](_0xe40d[_0xef61('0x34')]);_0xc9b467[_0xef61('0x36')]=_[_0xef61('0x37')](_0xc9b467[_0xef61('0x33')],_0xc9b467[_0xef61('0x34')]);_0x272143['attributes']=_[_0xef61('0x37')](_0xc9b467[_0xef61('0x33')],qs[_0xef61('0x38')](_0xe40d['query'][_0xef61('0x38')]));_0x272143[_0xef61('0x39')]=_0x272143[_0xef61('0x39')][_0xef61('0x3a')]?_0x272143[_0xef61('0x39')]:_0xc9b467[_0xef61('0x33')];if(_0xe40d['query'][_0xef61('0x42')]){_0x272143[_0xef61('0x43')]=[{'all':!![]}];}_0x272143=_['merge']({},_0x272143,_0xe40d[_0xef61('0x41')]);return db[_0xef61('0x30')][_0xef61('0x47')](_0x272143)[_0xef61('0x28')](handleEntityNotFound(_0x3f81a1,null))['then'](respondWithResult(_0x3f81a1,null))[_0xef61('0x45')](handleError(_0x3f81a1,null));};exports[_0xef61('0x48')]=function(_0x5e614b,_0x47b09d){return db[_0xef61('0x30')][_0xef61('0x48')](_0x5e614b['body'],{})[_0xef61('0x28')](respondWithResult(_0x47b09d,0xc9))[_0xef61('0x45')](handleError(_0x47b09d,null));};exports[_0xef61('0x49')]=function(_0x2904e0,_0x13bb20){if(_0x2904e0[_0xef61('0x4a')]['id']){delete _0x2904e0[_0xef61('0x4a')]['id'];}return db['Integration'][_0xef61('0x47')]({'where':{'id':_0x2904e0['params']['id']}})[_0xef61('0x28')](handleEntityNotFound(_0x13bb20,null))[_0xef61('0x28')](saveUpdates(_0x2904e0[_0xef61('0x4a')],null))[_0xef61('0x28')](respondWithResult(_0x13bb20,null))[_0xef61('0x45')](handleError(_0x13bb20,null));};exports[_0xef61('0x27')]=function(_0x3e23eb,_0x1565c7){return db[_0xef61('0x30')]['find']({'where':{'id':_0x3e23eb[_0xef61('0x4b')]['id']}})[_0xef61('0x28')](handleEntityNotFound(_0x1565c7,null))['then'](removeEntity(_0x1565c7,null))['catch'](handleError(_0x1565c7,null));};
\ No newline at end of file
index 69ff26a..eeda26c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe1a8=['Integration','lodash','util','../../config/logger','moment','bluebird','request-promise','path','rimraf','./integration.attributes'];(function(_0x5e4dab,_0x1dde48){var _0x42f901=function(_0x15c49a){while(--_0x15c49a){_0x5e4dab['push'](_0x5e4dab['shift']());}};_0x42f901(++_0x1dde48);}(_0xe1a8,0xfb));var _0x8e1a=function(_0x17a22a,_0x4d1ba7){_0x17a22a=_0x17a22a-0x0;var _0x1c1735=_0xe1a8[_0x17a22a];return _0x1c1735;};'use strict';var _=require(_0x8e1a('0x0'));var util=require(_0x8e1a('0x1'));var logger=require(_0x8e1a('0x2'))('api');var moment=require(_0x8e1a('0x3'));var BPromise=require(_0x8e1a('0x4'));var rp=require(_0x8e1a('0x5'));var fs=require('fs');var path=require(_0x8e1a('0x6'));var rimraf=require(_0x8e1a('0x7'));var config=require('../../config/environment');var attributes=require(_0x8e1a('0x8'));module['exports']=function(_0x134678,_0x47d2c7){return _0x134678['define'](_0x8e1a('0x9'),attributes,{'tableName':'integrations','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xa941=['moment','request-promise','path','../../config/environment','exports','define','integrations','util','../../config/logger','api'];(function(_0x5cf59f,_0x3ef736){var _0x21a3ad=function(_0x302524){while(--_0x302524){_0x5cf59f['push'](_0x5cf59f['shift']());}};_0x21a3ad(++_0x3ef736);}(_0xa941,0x10b));var _0x1a94=function(_0x122ef9,_0x451d2a){_0x122ef9=_0x122ef9-0x0;var _0x42fba0=_0xa941[_0x122ef9];return _0x42fba0;};'use strict';var _=require('lodash');var util=require(_0x1a94('0x0'));var logger=require(_0x1a94('0x1'))(_0x1a94('0x2'));var moment=require(_0x1a94('0x3'));var BPromise=require('bluebird');var rp=require(_0x1a94('0x4'));var fs=require('fs');var path=require(_0x1a94('0x5'));var rimraf=require('rimraf');var config=require(_0x1a94('0x6'));var attributes=require('./integration.attributes');module[_0x1a94('0x7')]=function(_0x242450,_0x1b20a3){return _0x242450[_0x1a94('0x8')]('Integration',attributes,{'tableName':_0x1a94('0x9'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 62baf90..22e89aa 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe2fe=['then','info','Integration,\x20%s,\x20%s','stringify','error','message','request\x20sent','result','lodash','bluebird','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','jayson/promise','client','request'];(function(_0x46bfae,_0x1b2610){var _0x5ebf78=function(_0x4fa77b){while(--_0x4fa77b){_0x46bfae['push'](_0x46bfae['shift']());}};_0x5ebf78(++_0x1b2610);}(_0xe2fe,0x86));var _0xee2f=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0xe2fe[_0x3dd15e];return _0x231fd0;};'use strict';var _=require(_0xee2f('0x0'));var util=require('util');var moment=require('moment');var BPromise=require(_0xee2f('0x1'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0xee2f('0x2'));var db=require(_0xee2f('0x3'))['db'];var utils=require(_0xee2f('0x4'));var logger=require(_0xee2f('0x5'))(_0xee2f('0x6'));var config=require('../../config/environment');var jayson=require(_0xee2f('0x7'));var client=jayson[_0xee2f('0x8')]['http']({'port':0x232a});function respondWithRpcPromise(_0x1533a0,_0x2e1c8c,_0x5a7975){return new BPromise(function(_0x3c4095,_0x5ea796){return client[_0xee2f('0x9')](_0x1533a0,_0x5a7975)[_0xee2f('0xa')](function(_0x53f7dd){logger[_0xee2f('0xb')](_0xee2f('0xc'),_0x2e1c8c,'request\x20sent');logger['debug']('Integration,\x20%s,\x20%s,\x20%s',_0x2e1c8c,'request\x20sent',JSON[_0xee2f('0xd')](_0x53f7dd));if(_0x53f7dd['error']){if(_0x53f7dd['error']['code']===0x1f4){logger[_0xee2f('0xe')](_0xee2f('0xc'),_0x2e1c8c,_0x53f7dd[_0xee2f('0xe')][_0xee2f('0xf')]);return _0x5ea796(_0x53f7dd[_0xee2f('0xe')][_0xee2f('0xf')]);}logger['error'](_0xee2f('0xc'),_0x2e1c8c,_0x53f7dd['error'][_0xee2f('0xf')]);return _0x3c4095(_0x53f7dd[_0xee2f('0xe')]['message']);}else{logger[_0xee2f('0xb')](_0xee2f('0xc'),_0x2e1c8c,_0xee2f('0x10'));_0x3c4095(_0x53f7dd[_0xee2f('0x11')][_0xee2f('0xf')]);}})['catch'](function(_0x3f6372){logger['error'](_0xee2f('0xc'),_0x2e1c8c,_0x3f6372);_0x5ea796(_0x3f6372);});});}
\ No newline at end of file
+var _0x7a54=['info','Integration,\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(_0x9403d,_0xfeb1ad){_0x9403d=_0x9403d-0x0;var _0x4cfe51=_0x7a54[_0x9403d];return _0x4cfe51;};'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')]('Integration,\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 a27141a..a53eb6d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0295=['isAuthenticated','index','post','create','put','/:id','update','delete','destroy','exports','multer','connect-timeout','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./integrationReport.controller','get'];(function(_0x58e469,_0x95ee3e){var _0x4c01c5=function(_0x1ef7ae){while(--_0x1ef7ae){_0x58e469['push'](_0x58e469['shift']());}};_0x4c01c5(++_0x95ee3e);}(_0x0295,0x1f0));var _0x5029=function(_0x2ba9ac,_0xa1fdc4){_0x2ba9ac=_0x2ba9ac-0x0;var _0x1b0fc9=_0x0295[_0x2ba9ac];return _0x1b0fc9;};'use strict';var multer=require(_0x5029('0x0'));var util=require('util');var path=require('path');var timeout=require(_0x5029('0x1'));var express=require('express');var router=express['Router']();var fs_extra=require(_0x5029('0x2'));var auth=require(_0x5029('0x3'));var interaction=require(_0x5029('0x4'));var config=require(_0x5029('0x5'));var controller=require(_0x5029('0x6'));router[_0x5029('0x7')]('/',auth[_0x5029('0x8')](),controller[_0x5029('0x9')]);router[_0x5029('0x7')]('/describe',auth['isAuthenticated'](),controller['describe']);router[_0x5029('0x7')]('/:id',auth[_0x5029('0x8')](),controller['show']);router[_0x5029('0xa')]('/',auth['isAuthenticated'](),controller[_0x5029('0xb')]);router[_0x5029('0xc')](_0x5029('0xd'),auth['isAuthenticated'](),controller[_0x5029('0xe')]);router[_0x5029('0xf')](_0x5029('0xd'),auth['isAuthenticated'](),controller[_0x5029('0x10')]);module[_0x5029('0x11')]=router;
\ No newline at end of file
+var _0x66fa=['index','get','/describe','post','/:id','delete','exports','multer','util','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','isAuthenticated'];(function(_0x77b525,_0xd4dc1e){var _0xa83673=function(_0x133b1f){while(--_0x133b1f){_0x77b525['push'](_0x77b525['shift']());}};_0xa83673(++_0xd4dc1e);}(_0x66fa,0x117));var _0xa66f=function(_0x1b5ff7,_0x1705dd){_0x1b5ff7=_0x1b5ff7-0x0;var _0x14096a=_0x66fa[_0x1b5ff7];return _0x14096a;};'use strict';var multer=require(_0xa66f('0x0'));var util=require(_0xa66f('0x1'));var path=require('path');var timeout=require(_0xa66f('0x2'));var express=require(_0xa66f('0x3'));var router=express[_0xa66f('0x4')]();var fs_extra=require(_0xa66f('0x5'));var auth=require(_0xa66f('0x6'));var interaction=require(_0xa66f('0x7'));var config=require(_0xa66f('0x8'));var controller=require('./integrationReport.controller');router['get']('/',auth[_0xa66f('0x9')](),controller[_0xa66f('0xa')]);router[_0xa66f('0xb')](_0xa66f('0xc'),auth[_0xa66f('0x9')](),controller['describe']);router[_0xa66f('0xb')]('/:id',auth[_0xa66f('0x9')](),controller['show']);router[_0xa66f('0xd')]('/',auth['isAuthenticated'](),controller['create']);router['put'](_0xa66f('0xe'),auth[_0xa66f('0x9')](),controller['update']);router[_0xa66f('0xf')]('/:id',auth[_0xa66f('0x9')](),controller['destroy']);module[_0xa66f('0x10')]=router;
\ No newline at end of file
index ae8eac2..3cbc730 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x54e6=['ENUM','SENT','SENDING','RECEIVED','FAILED','sequelize','exports','STRING','INTEGER','DATE','BOOLEAN','TEXT'];(function(_0xcbd766,_0x5bdfda){var _0x37796c=function(_0x270dc8){while(--_0x270dc8){_0xcbd766['push'](_0xcbd766['shift']());}};_0x37796c(++_0x5bdfda);}(_0x54e6,0xf5));var _0x654e=function(_0x20a584,_0xe384a5){_0x20a584=_0x20a584-0x0;var _0x4b41a8=_0x54e6[_0x20a584];return _0x4b41a8;};'use strict';var Sequelize=require(_0x654e('0x0'));module[_0x654e('0x1')]={'integration':{'type':Sequelize[_0x654e('0x2')]},'eventChannel':{'type':Sequelize[_0x654e('0x2')]},'exitStatus':{'type':Sequelize[_0x654e('0x2')]},'ticketId':{'type':Sequelize['STRING']},'integrationId':{'type':Sequelize[_0x654e('0x3')]},'contacts':{'type':Sequelize[_0x654e('0x2')]},'uniqueid':{'type':Sequelize[_0x654e('0x2')]},'calleridnum':{'type':Sequelize[_0x654e('0x2')]},'calleridname':{'type':Sequelize['STRING']},'queue':{'type':Sequelize[_0x654e('0x2')]},'interface':{'type':Sequelize[_0x654e('0x2')]},'membername':{'type':Sequelize[_0x654e('0x2')]},'agentcalledAt':{'type':Sequelize[_0x654e('0x4')]},'agentconnectAt':{'type':Sequelize['DATE']},'holdtime':{'type':Sequelize['INTEGER']},'agentcomplete':{'type':Sequelize[_0x654e('0x5')],'defaultValue':![]},'agentcompleteAt':{'type':Sequelize[_0x654e('0x4')]},'talktime':{'type':Sequelize[_0x654e('0x3')]},'agentacw':{'type':Sequelize[_0x654e('0x5')],'defaultValue':![]},'acwtime':{'type':Sequelize['INTEGER']},'reason':{'type':Sequelize[_0x654e('0x2')]},'agentringnoanswer':{'type':Sequelize[_0x654e('0x5')],'defaultValue':![]},'agentringnoanswerAt':{'type':Sequelize['DATE']},'agentdump':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'agentdumpAt':{'type':Sequelize['DATE']},'lastevent':{'type':Sequelize['STRING']},'channel':{'type':Sequelize[_0x654e('0x2')]},'channelstate':{'type':Sequelize['INTEGER']},'channelstatedesc':{'type':Sequelize[_0x654e('0x2')]},'connectedlinenum':{'type':Sequelize[_0x654e('0x2')]},'connectedlinename':{'type':Sequelize[_0x654e('0x2')]},'language':{'type':Sequelize[_0x654e('0x2')]},'accountcode':{'type':Sequelize['STRING']},'context':{'type':Sequelize['STRING']},'exten':{'type':Sequelize[_0x654e('0x2')]},'priority':{'type':Sequelize[_0x654e('0x2')]},'destchannel':{'type':Sequelize[_0x654e('0x2')]},'destchannelstate':{'type':Sequelize[_0x654e('0x3')]},'destchannelstatedesc':{'type':Sequelize[_0x654e('0x2')]},'destcalleridnum':{'type':Sequelize[_0x654e('0x2')]},'destcalleridname':{'type':Sequelize[_0x654e('0x2')]},'destconnectedlinenum':{'type':Sequelize[_0x654e('0x2')]},'destconnectedlinename':{'type':Sequelize['STRING']},'destlanguage':{'type':Sequelize[_0x654e('0x2')]},'destaccountcode':{'type':Sequelize['STRING']},'destcontext':{'type':Sequelize[_0x654e('0x2')]},'destexten':{'type':Sequelize[_0x654e('0x2')]},'destpriority':{'type':Sequelize[_0x654e('0x2')]},'destuniqueid':{'type':Sequelize['STRING']},'messageId':{'type':Sequelize[_0x654e('0x2')]},'inReplyTo':{'type':Sequelize[_0x654e('0x2')]},'subject':{'type':Sequelize['STRING']},'from':{'type':Sequelize[_0x654e('0x2')]},'to':{'type':Sequelize[_0x654e('0x2')]},'cc':{'type':Sequelize[_0x654e('0x2')]},'attachment':{'type':Sequelize[_0x654e('0x6')]},'html':{'type':Sequelize[_0x654e('0x6')]},'text':{'type':Sequelize[_0x654e('0x6')]},'status':{'type':Sequelize[_0x654e('0x7')](_0x654e('0x8'),_0x654e('0x9'),_0x654e('0xa'),_0x654e('0xb'))},'url':{'type':Sequelize[_0x654e('0x2')]},'app':{'type':Sequelize[_0x654e('0x2')]},'appdata':{'type':Sequelize['STRING']},'projectId':{'type':Sequelize['INTEGER']}};
\ No newline at end of file
+var _0x718d=['sequelize','exports','STRING','DATE','INTEGER','BOOLEAN','TEXT','ENUM','SENT','SENDING','RECEIVED','FAILED'];(function(_0x36f8c5,_0x173213){var _0x3dee1a=function(_0x575953){while(--_0x575953){_0x36f8c5['push'](_0x36f8c5['shift']());}};_0x3dee1a(++_0x173213);}(_0x718d,0x9c));var _0xd718=function(_0x13a49b,_0x55d918){_0x13a49b=_0x13a49b-0x0;var _0x76ec7e=_0x718d[_0x13a49b];return _0x76ec7e;};'use strict';var Sequelize=require(_0xd718('0x0'));module[_0xd718('0x1')]={'integration':{'type':Sequelize['STRING']},'eventChannel':{'type':Sequelize['STRING']},'exitStatus':{'type':Sequelize[_0xd718('0x2')]},'ticketId':{'type':Sequelize[_0xd718('0x2')]},'integrationId':{'type':Sequelize['INTEGER']},'contacts':{'type':Sequelize[_0xd718('0x2')]},'uniqueid':{'type':Sequelize[_0xd718('0x2')]},'calleridnum':{'type':Sequelize[_0xd718('0x2')]},'calleridname':{'type':Sequelize[_0xd718('0x2')]},'queue':{'type':Sequelize[_0xd718('0x2')]},'interface':{'type':Sequelize[_0xd718('0x2')]},'membername':{'type':Sequelize['STRING']},'agentcalledAt':{'type':Sequelize[_0xd718('0x3')]},'agentconnectAt':{'type':Sequelize['DATE']},'holdtime':{'type':Sequelize[_0xd718('0x4')]},'agentcomplete':{'type':Sequelize[_0xd718('0x5')],'defaultValue':![]},'agentcompleteAt':{'type':Sequelize['DATE']},'talktime':{'type':Sequelize[_0xd718('0x4')]},'agentacw':{'type':Sequelize[_0xd718('0x5')],'defaultValue':![]},'acwtime':{'type':Sequelize[_0xd718('0x4')]},'reason':{'type':Sequelize[_0xd718('0x2')]},'agentringnoanswer':{'type':Sequelize[_0xd718('0x5')],'defaultValue':![]},'agentringnoanswerAt':{'type':Sequelize[_0xd718('0x3')]},'agentdump':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'agentdumpAt':{'type':Sequelize[_0xd718('0x3')]},'lastevent':{'type':Sequelize[_0xd718('0x2')]},'channel':{'type':Sequelize[_0xd718('0x2')]},'channelstate':{'type':Sequelize[_0xd718('0x4')]},'channelstatedesc':{'type':Sequelize['STRING']},'connectedlinenum':{'type':Sequelize[_0xd718('0x2')]},'connectedlinename':{'type':Sequelize[_0xd718('0x2')]},'language':{'type':Sequelize[_0xd718('0x2')]},'accountcode':{'type':Sequelize[_0xd718('0x2')]},'context':{'type':Sequelize[_0xd718('0x2')]},'exten':{'type':Sequelize[_0xd718('0x2')]},'priority':{'type':Sequelize[_0xd718('0x2')]},'destchannel':{'type':Sequelize[_0xd718('0x2')]},'destchannelstate':{'type':Sequelize[_0xd718('0x4')]},'destchannelstatedesc':{'type':Sequelize[_0xd718('0x2')]},'destcalleridnum':{'type':Sequelize['STRING']},'destcalleridname':{'type':Sequelize[_0xd718('0x2')]},'destconnectedlinenum':{'type':Sequelize[_0xd718('0x2')]},'destconnectedlinename':{'type':Sequelize[_0xd718('0x2')]},'destlanguage':{'type':Sequelize['STRING']},'destaccountcode':{'type':Sequelize[_0xd718('0x2')]},'destcontext':{'type':Sequelize[_0xd718('0x2')]},'destexten':{'type':Sequelize[_0xd718('0x2')]},'destpriority':{'type':Sequelize['STRING']},'destuniqueid':{'type':Sequelize[_0xd718('0x2')]},'messageId':{'type':Sequelize[_0xd718('0x2')]},'inReplyTo':{'type':Sequelize[_0xd718('0x2')]},'subject':{'type':Sequelize[_0xd718('0x2')]},'from':{'type':Sequelize[_0xd718('0x2')]},'to':{'type':Sequelize['STRING']},'cc':{'type':Sequelize['STRING']},'attachment':{'type':Sequelize[_0xd718('0x6')]},'html':{'type':Sequelize[_0xd718('0x6')]},'text':{'type':Sequelize['TEXT']},'status':{'type':Sequelize[_0xd718('0x7')](_0xd718('0x8'),_0xd718('0x9'),_0xd718('0xa'),_0xd718('0xb'))},'url':{'type':Sequelize[_0xd718('0x2')]},'app':{'type':Sequelize['STRING']},'appdata':{'type':Sequelize[_0xd718('0x2')]},'projectId':{'type':Sequelize[_0xd718('0x4')]}};
\ No newline at end of file
index 53cda7f..f0c100d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1538=['undefined','count','offset','set','Content-Range','apply','save','then','stack','name','send','IntegrationReport','rawAttributes','fieldName','type','key','model','map','query','keys','filters','intersection','attributes','fields','nolimit','order','sort','where','pick','filter','merge','options','includeAll','include','findAll','rows','params','length','find','create','body','catch','destroy','describe','eml-format','rimraf','fast-json-patch','moment','bluebird','mustache','util','path','sox','to-csv','fs-extra','lodash','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','limit'];(function(_0x21a9d9,_0x4d5ac8){var _0x46adce=function(_0xfdd336){while(--_0xfdd336){_0x21a9d9['push'](_0x21a9d9['shift']());}};_0x46adce(++_0x4d5ac8);}(_0x1538,0xc0));var _0x8153=function(_0x15c421,_0x6366f7){_0x15c421=_0x15c421-0x0;var _0x5e5ed5=_0x1538[_0x15c421];return _0x5e5ed5;};'use strict';var emlformat=require(_0x8153('0x0'));var rimraf=require(_0x8153('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0x8153('0x2'));var rp=require('request-promise');var moment=require(_0x8153('0x3'));var BPromise=require(_0x8153('0x4'));var Mustache=require(_0x8153('0x5'));var util=require(_0x8153('0x6'));var path=require(_0x8153('0x7'));var sox=require(_0x8153('0x8'));var csv=require(_0x8153('0x9'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x8153('0xa'));var _=require(_0x8153('0xb'));var squel=require('squel');var crypto=require('crypto');var jsforce=require(_0x8153('0xc'));var deskjs=require(_0x8153('0xd'));var toCsv=require('to-csv');var querystring=require(_0x8153('0xe'));var Papa=require('papaparse');var Redis=require(_0x8153('0xf'));var authService=require(_0x8153('0x10'));var qs=require(_0x8153('0x11'));var as=require(_0x8153('0x12'));var hardwareService=require(_0x8153('0x13'));var logger=require(_0x8153('0x14'))(_0x8153('0x15'));var utils=require('../../config/utils');var config=require(_0x8153('0x16'));var licenseUtil=require(_0x8153('0x17'));var db=require(_0x8153('0x18'))['db'];function respondWithStatusCode(_0x59ff44,_0xd0f8e4){_0xd0f8e4=_0xd0f8e4||0xcc;return function(_0x20dbb4){if(_0x20dbb4){return _0x59ff44[_0x8153('0x19')](_0xd0f8e4);}return _0x59ff44[_0x8153('0x1a')](_0xd0f8e4)[_0x8153('0x1b')]();};}function respondWithResult(_0x343b4a,_0x5431cb){_0x5431cb=_0x5431cb||0xc8;return function(_0x1459fc){if(_0x1459fc){return _0x343b4a[_0x8153('0x1a')](_0x5431cb)[_0x8153('0x1c')](_0x1459fc);}};}function respondWithFilteredResult(_0x1f01ba,_0x3bd856){return function(_0x14f9e8){if(_0x14f9e8){var _0x5951e5=typeof _0x3bd856['offset']==='undefined'&&typeof _0x3bd856[_0x8153('0x1d')]===_0x8153('0x1e');var _0x3770cf=_0x14f9e8[_0x8153('0x1f')];var _0xe13005=_0x5951e5?0x0:_0x3bd856[_0x8153('0x20')];var _0x11c47a=_0x5951e5?_0x14f9e8[_0x8153('0x1f')]:_0x3bd856[_0x8153('0x20')]+_0x3bd856[_0x8153('0x1d')];var _0x38b6a7;if(_0x11c47a>=_0x3770cf){_0x11c47a=_0x3770cf;_0x38b6a7=0xc8;}else{_0x38b6a7=0xce;}_0x1f01ba[_0x8153('0x1a')](_0x38b6a7);return _0x1f01ba[_0x8153('0x21')](_0x8153('0x22'),_0xe13005+'-'+_0x11c47a+'/'+_0x3770cf)[_0x8153('0x1c')](_0x14f9e8);}return null;};}function patchUpdates(_0x36ccaa){return function(_0x3f1d59){try{jsonpatch[_0x8153('0x23')](_0x3f1d59,_0x36ccaa,!![]);}catch(_0x548300){return BPromise['reject'](_0x548300);}return _0x3f1d59[_0x8153('0x24')]();};}function saveUpdates(_0x190fbe,_0x17c660){return function(_0x45bd5b){if(_0x45bd5b){return _0x45bd5b['update'](_0x190fbe)[_0x8153('0x25')](function(_0x29411d){return _0x29411d;});}return null;};}function removeEntity(_0x16f8c6,_0x4f3c8e){return function(_0x4e8a47){if(_0x4e8a47){return _0x4e8a47['destroy']()['then'](function(){_0x16f8c6[_0x8153('0x1a')](0xcc)['end']();});}};}function handleEntityNotFound(_0x3ce093,_0x25559c){return function(_0x4d419c){if(!_0x4d419c){_0x3ce093[_0x8153('0x19')](0x194);}return _0x4d419c;};}function handleError(_0x58f8f1,_0x55041f){_0x55041f=_0x55041f||0x1f4;return function(_0x308631){logger['error'](_0x308631[_0x8153('0x26')]);if(_0x308631[_0x8153('0x27')]){delete _0x308631['name'];}_0x58f8f1[_0x8153('0x1a')](_0x55041f)[_0x8153('0x28')](_0x308631);};}exports['index']=function(_0xe49f43,_0x1a964c){var _0x45c4d9={},_0x54f992={},_0x77eab3={'count':0x0,'rows':[]};var _0x913ee4=_['map'](db[_0x8153('0x29')][_0x8153('0x2a')],function(_0x139e7e){return{'name':_0x139e7e[_0x8153('0x2b')],'type':_0x139e7e[_0x8153('0x2c')][_0x8153('0x2d')]};});_0x54f992[_0x8153('0x2e')]=_[_0x8153('0x2f')](_0x913ee4,_0x8153('0x27'));_0x54f992[_0x8153('0x30')]=_[_0x8153('0x31')](_0xe49f43['query']);_0x54f992[_0x8153('0x32')]=_[_0x8153('0x33')](_0x54f992[_0x8153('0x2e')],_0x54f992[_0x8153('0x30')]);_0x45c4d9[_0x8153('0x34')]=_[_0x8153('0x33')](_0x54f992[_0x8153('0x2e')],qs[_0x8153('0x35')](_0xe49f43[_0x8153('0x30')]['fields']));_0x45c4d9[_0x8153('0x34')]=_0x45c4d9[_0x8153('0x34')]['length']?_0x45c4d9[_0x8153('0x34')]:_0x54f992[_0x8153('0x2e')];if(!_0xe49f43[_0x8153('0x30')]['hasOwnProperty'](_0x8153('0x36'))){_0x45c4d9[_0x8153('0x1d')]=qs[_0x8153('0x1d')](_0xe49f43[_0x8153('0x30')][_0x8153('0x1d')]);_0x45c4d9[_0x8153('0x20')]=qs[_0x8153('0x20')](_0xe49f43[_0x8153('0x30')]['offset']);}_0x45c4d9[_0x8153('0x37')]=qs['sort'](_0xe49f43[_0x8153('0x30')][_0x8153('0x38')]);_0x45c4d9[_0x8153('0x39')]=qs[_0x8153('0x32')](_[_0x8153('0x3a')](_0xe49f43[_0x8153('0x30')],_0x54f992['filters']),_0x913ee4);if(_0xe49f43[_0x8153('0x30')][_0x8153('0x3b')]){_0x45c4d9['where']=_[_0x8153('0x3c')](_0x45c4d9[_0x8153('0x39')],{'$or':_[_0x8153('0x2f')](_0x913ee4,function(_0x286150){if(_0x286150[_0x8153('0x2c')]!=='VIRTUAL'){var _0xed0bc7={};_0xed0bc7[_0x286150['name']]={'$like':'%'+_0xe49f43[_0x8153('0x30')][_0x8153('0x3b')]+'%'};return _0xed0bc7;}})});}_0x45c4d9=_[_0x8153('0x3c')]({},_0x45c4d9,_0xe49f43[_0x8153('0x3d')]);var _0x423cc4={'where':_0x45c4d9['where']};return db[_0x8153('0x29')][_0x8153('0x1f')](_0x423cc4)[_0x8153('0x25')](function(_0x7afb6a){_0x77eab3[_0x8153('0x1f')]=_0x7afb6a;if(_0xe49f43[_0x8153('0x30')][_0x8153('0x3e')]){_0x45c4d9[_0x8153('0x3f')]=[{'all':!![]}];}return db[_0x8153('0x29')][_0x8153('0x40')](_0x45c4d9);})['then'](function(_0x21e8cb){_0x77eab3[_0x8153('0x41')]=_0x21e8cb;return _0x77eab3;})[_0x8153('0x25')](respondWithFilteredResult(_0x1a964c,_0x45c4d9))['catch'](handleError(_0x1a964c,null));};exports['show']=function(_0x4cc459,_0x129cf7){var _0x524c4a={'raw':![],'where':{'id':_0x4cc459[_0x8153('0x42')]['id']}},_0x2fc9c3={};_0x2fc9c3[_0x8153('0x2e')]=_['keys'](db[_0x8153('0x29')][_0x8153('0x2a')]);_0x2fc9c3[_0x8153('0x30')]=_[_0x8153('0x31')](_0x4cc459[_0x8153('0x30')]);_0x2fc9c3[_0x8153('0x32')]=_[_0x8153('0x33')](_0x2fc9c3[_0x8153('0x2e')],_0x2fc9c3[_0x8153('0x30')]);_0x524c4a['attributes']=_[_0x8153('0x33')](_0x2fc9c3['model'],qs[_0x8153('0x35')](_0x4cc459['query'][_0x8153('0x35')]));_0x524c4a[_0x8153('0x34')]=_0x524c4a['attributes'][_0x8153('0x43')]?_0x524c4a[_0x8153('0x34')]:_0x2fc9c3[_0x8153('0x2e')];if(_0x4cc459[_0x8153('0x30')][_0x8153('0x3e')]){_0x524c4a[_0x8153('0x3f')]=[{'all':!![]}];}_0x524c4a=_['merge']({},_0x524c4a,_0x4cc459[_0x8153('0x3d')]);return db['IntegrationReport'][_0x8153('0x44')](_0x524c4a)[_0x8153('0x25')](handleEntityNotFound(_0x129cf7,null))[_0x8153('0x25')](respondWithResult(_0x129cf7,null))['catch'](handleError(_0x129cf7,null));};exports[_0x8153('0x45')]=function(_0x307d2b,_0x4e6773){return db['IntegrationReport'][_0x8153('0x45')](_0x307d2b['body'],{})[_0x8153('0x25')](respondWithResult(_0x4e6773,0xc9))['catch'](handleError(_0x4e6773,null));};exports['update']=function(_0x252c53,_0x1eaa8b){if(_0x252c53[_0x8153('0x46')]['id']){delete _0x252c53['body']['id'];}return db[_0x8153('0x29')][_0x8153('0x44')]({'where':{'id':_0x252c53['params']['id']}})['then'](handleEntityNotFound(_0x1eaa8b,null))[_0x8153('0x25')](saveUpdates(_0x252c53['body'],null))[_0x8153('0x25')](respondWithResult(_0x1eaa8b,null))[_0x8153('0x47')](handleError(_0x1eaa8b,null));};exports[_0x8153('0x48')]=function(_0x3f3b17,_0x4d5928){return db[_0x8153('0x29')]['find']({'where':{'id':_0x3f3b17[_0x8153('0x42')]['id']}})['then'](handleEntityNotFound(_0x4d5928,null))['then'](removeEntity(_0x4d5928,null))[_0x8153('0x47')](handleError(_0x4d5928,null));};exports[_0x8153('0x49')]=function(_0x5161d8,_0x364ff6){return db[_0x8153('0x29')]['describe']()[_0x8153('0x25')](respondWithResult(_0x364ff6,null))[_0x8153('0x47')](handleError(_0x364ff6,null));};
\ No newline at end of file
+var _0x9054=['show','params','include','find','create','update','body','describe','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','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','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','end','json','limit','undefined','count','offset','status','set','apply','then','destroy','sendStatus','error','name','send','IntegrationReport','rawAttributes','fieldName','type','key','query','keys','filters','intersection','attributes','fields','length','model','hasOwnProperty','nolimit','sort','where','merge','map','options','includeAll','findAll','rows','catch'];(function(_0x432682,_0x253044){var _0x463d05=function(_0xa73403){while(--_0xa73403){_0x432682['push'](_0x432682['shift']());}};_0x463d05(++_0x253044);}(_0x9054,0x9e));var _0x4905=function(_0x517ae4,_0x413e18){_0x517ae4=_0x517ae4-0x0;var _0x54569e=_0x9054[_0x517ae4];return _0x54569e;};'use strict';var emlformat=require(_0x4905('0x0'));var rimraf=require(_0x4905('0x1'));var zipdir=require(_0x4905('0x2'));var jsonpatch=require(_0x4905('0x3'));var rp=require(_0x4905('0x4'));var moment=require('moment');var BPromise=require('bluebird');var Mustache=require(_0x4905('0x5'));var util=require(_0x4905('0x6'));var path=require(_0x4905('0x7'));var sox=require('sox');var csv=require(_0x4905('0x8'));var ejs=require(_0x4905('0x9'));var fs=require('fs');var fs_extra=require(_0x4905('0xa'));var _=require(_0x4905('0xb'));var squel=require(_0x4905('0xc'));var crypto=require(_0x4905('0xd'));var jsforce=require(_0x4905('0xe'));var deskjs=require(_0x4905('0xf'));var toCsv=require(_0x4905('0x8'));var querystring=require(_0x4905('0x10'));var Papa=require('papaparse');var Redis=require(_0x4905('0x11'));var authService=require(_0x4905('0x12'));var qs=require(_0x4905('0x13'));var as=require(_0x4905('0x14'));var hardwareService=require(_0x4905('0x15'));var logger=require(_0x4905('0x16'))(_0x4905('0x17'));var utils=require(_0x4905('0x18'));var config=require(_0x4905('0x19'));var licenseUtil=require(_0x4905('0x1a'));var db=require(_0x4905('0x1b'))['db'];function respondWithStatusCode(_0x20df69,_0x30f529){_0x30f529=_0x30f529||0xcc;return function(_0x28835e){if(_0x28835e){return _0x20df69['sendStatus'](_0x30f529);}return _0x20df69['status'](_0x30f529)[_0x4905('0x1c')]();};}function respondWithResult(_0x303400,_0x861434){_0x861434=_0x861434||0xc8;return function(_0x59751f){if(_0x59751f){return _0x303400['status'](_0x861434)[_0x4905('0x1d')](_0x59751f);}};}function respondWithFilteredResult(_0x3dea66,_0x410bd6){return function(_0x1bd176){if(_0x1bd176){var _0x4e0b0e=typeof _0x410bd6['offset']==='undefined'&&typeof _0x410bd6[_0x4905('0x1e')]===_0x4905('0x1f');var _0x5c6b28=_0x1bd176[_0x4905('0x20')];var _0x568eee=_0x4e0b0e?0x0:_0x410bd6[_0x4905('0x21')];var _0x2384f5=_0x4e0b0e?_0x1bd176[_0x4905('0x20')]:_0x410bd6[_0x4905('0x21')]+_0x410bd6['limit'];var _0x599fea;if(_0x2384f5>=_0x5c6b28){_0x2384f5=_0x5c6b28;_0x599fea=0xc8;}else{_0x599fea=0xce;}_0x3dea66[_0x4905('0x22')](_0x599fea);return _0x3dea66[_0x4905('0x23')]('Content-Range',_0x568eee+'-'+_0x2384f5+'/'+_0x5c6b28)[_0x4905('0x1d')](_0x1bd176);}return null;};}function patchUpdates(_0x234a0d){return function(_0x480b00){try{jsonpatch[_0x4905('0x24')](_0x480b00,_0x234a0d,!![]);}catch(_0x30cb41){return BPromise['reject'](_0x30cb41);}return _0x480b00['save']();};}function saveUpdates(_0x3925d8,_0x43be14){return function(_0x5d43c0){if(_0x5d43c0){return _0x5d43c0['update'](_0x3925d8)[_0x4905('0x25')](function(_0x4240ba){return _0x4240ba;});}return null;};}function removeEntity(_0x19c37b,_0x184e03){return function(_0x2b7b82){if(_0x2b7b82){return _0x2b7b82[_0x4905('0x26')]()[_0x4905('0x25')](function(){_0x19c37b['status'](0xcc)[_0x4905('0x1c')]();});}};}function handleEntityNotFound(_0x4f241f,_0x455888){return function(_0x45a654){if(!_0x45a654){_0x4f241f[_0x4905('0x27')](0x194);}return _0x45a654;};}function handleError(_0xaf1b15,_0x3a4686){_0x3a4686=_0x3a4686||0x1f4;return function(_0x465d00){logger[_0x4905('0x28')](_0x465d00['stack']);if(_0x465d00[_0x4905('0x29')]){delete _0x465d00[_0x4905('0x29')];}_0xaf1b15['status'](_0x3a4686)[_0x4905('0x2a')](_0x465d00);};}exports['index']=function(_0x37a257,_0x34c5f4){var _0xf48fae={},_0x1344cd={},_0x4f64c9={'count':0x0,'rows':[]};var _0x2debf3=_['map'](db[_0x4905('0x2b')][_0x4905('0x2c')],function(_0x36bc27){return{'name':_0x36bc27[_0x4905('0x2d')],'type':_0x36bc27[_0x4905('0x2e')][_0x4905('0x2f')]};});_0x1344cd['model']=_['map'](_0x2debf3,_0x4905('0x29'));_0x1344cd[_0x4905('0x30')]=_[_0x4905('0x31')](_0x37a257['query']);_0x1344cd[_0x4905('0x32')]=_[_0x4905('0x33')](_0x1344cd['model'],_0x1344cd['query']);_0xf48fae[_0x4905('0x34')]=_['intersection'](_0x1344cd['model'],qs[_0x4905('0x35')](_0x37a257[_0x4905('0x30')][_0x4905('0x35')]));_0xf48fae[_0x4905('0x34')]=_0xf48fae['attributes'][_0x4905('0x36')]?_0xf48fae[_0x4905('0x34')]:_0x1344cd[_0x4905('0x37')];if(!_0x37a257[_0x4905('0x30')][_0x4905('0x38')](_0x4905('0x39'))){_0xf48fae[_0x4905('0x1e')]=qs[_0x4905('0x1e')](_0x37a257[_0x4905('0x30')][_0x4905('0x1e')]);_0xf48fae['offset']=qs[_0x4905('0x21')](_0x37a257[_0x4905('0x30')][_0x4905('0x21')]);}_0xf48fae['order']=qs[_0x4905('0x3a')](_0x37a257[_0x4905('0x30')]['sort']);_0xf48fae[_0x4905('0x3b')]=qs[_0x4905('0x32')](_['pick'](_0x37a257['query'],_0x1344cd['filters']),_0x2debf3);if(_0x37a257[_0x4905('0x30')]['filter']){_0xf48fae[_0x4905('0x3b')]=_[_0x4905('0x3c')](_0xf48fae[_0x4905('0x3b')],{'$or':_[_0x4905('0x3d')](_0x2debf3,function(_0x1e29a5){if(_0x1e29a5[_0x4905('0x2e')]!=='VIRTUAL'){var _0x3eb8ee={};_0x3eb8ee[_0x1e29a5[_0x4905('0x29')]]={'$like':'%'+_0x37a257[_0x4905('0x30')]['filter']+'%'};return _0x3eb8ee;}})});}_0xf48fae=_[_0x4905('0x3c')]({},_0xf48fae,_0x37a257[_0x4905('0x3e')]);var _0x4e6609={'where':_0xf48fae['where']};return db[_0x4905('0x2b')]['count'](_0x4e6609)['then'](function(_0x128961){_0x4f64c9['count']=_0x128961;if(_0x37a257['query'][_0x4905('0x3f')]){_0xf48fae['include']=[{'all':!![]}];}return db['IntegrationReport'][_0x4905('0x40')](_0xf48fae);})[_0x4905('0x25')](function(_0x5e04f8){_0x4f64c9[_0x4905('0x41')]=_0x5e04f8;return _0x4f64c9;})[_0x4905('0x25')](respondWithFilteredResult(_0x34c5f4,_0xf48fae))[_0x4905('0x42')](handleError(_0x34c5f4,null));};exports[_0x4905('0x43')]=function(_0x4444e9,_0x305050){var _0x31bad8={'raw':![],'where':{'id':_0x4444e9[_0x4905('0x44')]['id']}},_0x1ae346={};_0x1ae346[_0x4905('0x37')]=_[_0x4905('0x31')](db[_0x4905('0x2b')][_0x4905('0x2c')]);_0x1ae346[_0x4905('0x30')]=_[_0x4905('0x31')](_0x4444e9[_0x4905('0x30')]);_0x1ae346[_0x4905('0x32')]=_[_0x4905('0x33')](_0x1ae346[_0x4905('0x37')],_0x1ae346['query']);_0x31bad8['attributes']=_[_0x4905('0x33')](_0x1ae346[_0x4905('0x37')],qs[_0x4905('0x35')](_0x4444e9['query'][_0x4905('0x35')]));_0x31bad8[_0x4905('0x34')]=_0x31bad8['attributes'][_0x4905('0x36')]?_0x31bad8['attributes']:_0x1ae346[_0x4905('0x37')];if(_0x4444e9[_0x4905('0x30')][_0x4905('0x3f')]){_0x31bad8[_0x4905('0x45')]=[{'all':!![]}];}_0x31bad8=_['merge']({},_0x31bad8,_0x4444e9[_0x4905('0x3e')]);return db['IntegrationReport'][_0x4905('0x46')](_0x31bad8)[_0x4905('0x25')](handleEntityNotFound(_0x305050,null))[_0x4905('0x25')](respondWithResult(_0x305050,null))['catch'](handleError(_0x305050,null));};exports[_0x4905('0x47')]=function(_0x4f66c3,_0x13a1d9){return db[_0x4905('0x2b')][_0x4905('0x47')](_0x4f66c3['body'],{})[_0x4905('0x25')](respondWithResult(_0x13a1d9,0xc9))[_0x4905('0x42')](handleError(_0x13a1d9,null));};exports[_0x4905('0x48')]=function(_0x597227,_0x8b23ec){if(_0x597227[_0x4905('0x49')]['id']){delete _0x597227[_0x4905('0x49')]['id'];}return db[_0x4905('0x2b')][_0x4905('0x46')]({'where':{'id':_0x597227[_0x4905('0x44')]['id']}})['then'](handleEntityNotFound(_0x8b23ec,null))[_0x4905('0x25')](saveUpdates(_0x597227[_0x4905('0x49')],null))[_0x4905('0x25')](respondWithResult(_0x8b23ec,null))[_0x4905('0x42')](handleError(_0x8b23ec,null));};exports[_0x4905('0x26')]=function(_0x2094be,_0x2fdf7c){return db['IntegrationReport'][_0x4905('0x46')]({'where':{'id':_0x2094be[_0x4905('0x44')]['id']}})['then'](handleEntityNotFound(_0x2fdf7c,null))[_0x4905('0x25')](removeEntity(_0x2fdf7c,null))[_0x4905('0x42')](handleError(_0x2fdf7c,null));};exports[_0x4905('0x4a')]=function(_0x3b93c2,_0x56d90e){return db[_0x4905('0x2b')]['describe']()[_0x4905('0x25')](respondWithResult(_0x56d90e,null))[_0x4905('0x42')](handleError(_0x56d90e,null));};
\ No newline at end of file
index c50aa9d..ff36ce2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xdff7=['exports','IntegrationReport','report_integration','lodash','util','../../config/logger','api','moment','bluebird','request-promise','path','rimraf','./integrationReport.attributes'];(function(_0x526323,_0xf627e3){var _0x373a60=function(_0xd92b4f){while(--_0xd92b4f){_0x526323['push'](_0x526323['shift']());}};_0x373a60(++_0xf627e3);}(_0xdff7,0x92));var _0x7dff=function(_0x48fe1d,_0x4adac6){_0x48fe1d=_0x48fe1d-0x0;var _0x507827=_0xdff7[_0x48fe1d];return _0x507827;};'use strict';var _=require(_0x7dff('0x0'));var util=require(_0x7dff('0x1'));var logger=require(_0x7dff('0x2'))(_0x7dff('0x3'));var moment=require(_0x7dff('0x4'));var BPromise=require(_0x7dff('0x5'));var rp=require(_0x7dff('0x6'));var fs=require('fs');var path=require(_0x7dff('0x7'));var rimraf=require(_0x7dff('0x8'));var config=require('../../config/environment');var attributes=require(_0x7dff('0x9'));module[_0x7dff('0xa')]=function(_0x45680e,_0x1727a2){return _0x45680e['define'](_0x7dff('0xb'),attributes,{'tableName':_0x7dff('0xc'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x4aef=['lodash','../../config/logger','api','moment','request-promise','path','./integrationReport.attributes','exports','define','IntegrationReport','report_integration'];(function(_0x278e67,_0x4029e9){var _0x34e665=function(_0x4eeaa3){while(--_0x4eeaa3){_0x278e67['push'](_0x278e67['shift']());}};_0x34e665(++_0x4029e9);}(_0x4aef,0x1b8));var _0xf4ae=function(_0x5b74ef,_0x351870){_0x5b74ef=_0x5b74ef-0x0;var _0x295416=_0x4aef[_0x5b74ef];return _0x295416;};'use strict';var _=require(_0xf4ae('0x0'));var util=require('util');var logger=require(_0xf4ae('0x1'))(_0xf4ae('0x2'));var moment=require(_0xf4ae('0x3'));var BPromise=require('bluebird');var rp=require(_0xf4ae('0x4'));var fs=require('fs');var path=require(_0xf4ae('0x5'));var rimraf=require('rimraf');var config=require('../../config/environment');var attributes=require(_0xf4ae('0x6'));module[_0xf4ae('0x7')]=function(_0x53d978,_0x7408ee){return _0x53d978[_0xf4ae('0x8')](_0xf4ae('0x9'),attributes,{'tableName':_0xf4ae('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 9eea274..d4087d3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2675=['../../config/utils','../../config/logger','../../config/environment','jayson/promise','client','http','then','info','IntegrationReport,\x20%s,\x20%s','request\x20sent','IntegrationReport,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','lodash','randomstring','ioredis'];(function(_0x2a16b6,_0x24a004){var _0xb2be49=function(_0x3c1035){while(--_0x3c1035){_0x2a16b6['push'](_0x2a16b6['shift']());}};_0xb2be49(++_0x24a004);}(_0x2675,0x75));var _0x5267=function(_0x545a1d,_0x473a70){_0x545a1d=_0x545a1d-0x0;var _0x370e7d=_0x2675[_0x545a1d];return _0x370e7d;};'use strict';var _=require(_0x5267('0x0'));var util=require('util');var moment=require('moment');var BPromise=require('bluebird');var rs=require(_0x5267('0x1'));var fs=require('fs');var Redis=require(_0x5267('0x2'));var db=require('../../mysqldb')['db'];var utils=require(_0x5267('0x3'));var logger=require(_0x5267('0x4'))('rpc');var config=require(_0x5267('0x5'));var jayson=require(_0x5267('0x6'));var client=jayson[_0x5267('0x7')][_0x5267('0x8')]({'port':0x232a});function respondWithRpcPromise(_0x20f065,_0xc56cd5,_0x527c16){return new BPromise(function(_0x9e0a27,_0x46bfdf){return client['request'](_0x20f065,_0x527c16)[_0x5267('0x9')](function(_0x5d6645){logger[_0x5267('0xa')](_0x5267('0xb'),_0xc56cd5,_0x5267('0xc'));logger['debug'](_0x5267('0xd'),_0xc56cd5,'request\x20sent',JSON[_0x5267('0xe')](_0x5d6645));if(_0x5d6645['error']){if(_0x5d6645[_0x5267('0xf')][_0x5267('0x10')]===0x1f4){logger[_0x5267('0xf')](_0x5267('0xb'),_0xc56cd5,_0x5d6645[_0x5267('0xf')][_0x5267('0x11')]);return _0x46bfdf(_0x5d6645[_0x5267('0xf')][_0x5267('0x11')]);}logger[_0x5267('0xf')](_0x5267('0xb'),_0xc56cd5,_0x5d6645[_0x5267('0xf')][_0x5267('0x11')]);return _0x9e0a27(_0x5d6645[_0x5267('0xf')]['message']);}else{logger['info'](_0x5267('0xb'),_0xc56cd5,_0x5267('0xc'));_0x9e0a27(_0x5d6645[_0x5267('0x12')][_0x5267('0x11')]);}})[_0x5267('0x13')](function(_0x27e5c6){logger[_0x5267('0xf')](_0x5267('0xb'),_0xc56cd5,_0x27e5c6);_0x46bfdf(_0x27e5c6);});});}
\ No newline at end of file
+var _0x57ca=['client','http','request','info','request\x20sent','IntegrationReport,\x20%s,\x20%s,\x20%s','error','code','IntegrationReport,\x20%s,\x20%s','message','result','catch','util','moment','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','../../config/environment','jayson/promise'];(function(_0x4b2059,_0x376d62){var _0x8c62fa=function(_0x4d735c){while(--_0x4d735c){_0x4b2059['push'](_0x4b2059['shift']());}};_0x8c62fa(++_0x376d62);}(_0x57ca,0x108));var _0xa57c=function(_0x18ad86,_0x47263c){_0x18ad86=_0x18ad86-0x0;var _0x4bf220=_0x57ca[_0x18ad86];return _0x4bf220;};'use strict';var _=require('lodash');var util=require(_0xa57c('0x0'));var moment=require(_0xa57c('0x1'));var BPromise=require('bluebird');var rs=require(_0xa57c('0x2'));var fs=require('fs');var Redis=require(_0xa57c('0x3'));var db=require(_0xa57c('0x4'))['db'];var utils=require(_0xa57c('0x5'));var logger=require(_0xa57c('0x6'))('rpc');var config=require(_0xa57c('0x7'));var jayson=require(_0xa57c('0x8'));var client=jayson[_0xa57c('0x9')][_0xa57c('0xa')]({'port':0x232a});function respondWithRpcPromise(_0xbdfffb,_0x314574,_0x19e28e){return new BPromise(function(_0x271ccc,_0x5e3962){return client[_0xa57c('0xb')](_0xbdfffb,_0x19e28e)['then'](function(_0x46ba92){logger[_0xa57c('0xc')]('IntegrationReport,\x20%s,\x20%s',_0x314574,_0xa57c('0xd'));logger['debug'](_0xa57c('0xe'),_0x314574,_0xa57c('0xd'),JSON['stringify'](_0x46ba92));if(_0x46ba92[_0xa57c('0xf')]){if(_0x46ba92['error'][_0xa57c('0x10')]===0x1f4){logger[_0xa57c('0xf')](_0xa57c('0x11'),_0x314574,_0x46ba92[_0xa57c('0xf')][_0xa57c('0x12')]);return _0x5e3962(_0x46ba92['error'][_0xa57c('0x12')]);}logger['error'](_0xa57c('0x11'),_0x314574,_0x46ba92[_0xa57c('0xf')][_0xa57c('0x12')]);return _0x271ccc(_0x46ba92[_0xa57c('0xf')][_0xa57c('0x12')]);}else{logger[_0xa57c('0xc')](_0xa57c('0x11'),_0x314574,'request\x20sent');_0x271ccc(_0x46ba92[_0xa57c('0x13')][_0xa57c('0x12')]);}})[_0xa57c('0x14')](function(_0x5a6024){logger[_0xa57c('0xf')]('IntegrationReport,\x20%s,\x20%s',_0x314574,_0x5a6024);_0x5e3962(_0x5a6024);});});}
\ No newline at end of file
index b453b76..19c6c3b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xef3f=['addInterval','/:id/sub_intervals/create_many','put','/:id','delete','destroy','multer','util','connect-timeout','express','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','get','isAuthenticated','show','/:id/sub_intervals','post','create'];(function(_0x5f0c49,_0x2c7831){var _0x102518=function(_0x52b53f){while(--_0x52b53f){_0x5f0c49['push'](_0x5f0c49['shift']());}};_0x102518(++_0x2c7831);}(_0xef3f,0xe2));var _0xfef3=function(_0x1e5571,_0x31cc2e){_0x1e5571=_0x1e5571-0x0;var _0x34b5b9=_0xef3f[_0x1e5571];return _0x34b5b9;};'use strict';var multer=require(_0xfef3('0x0'));var util=require(_0xfef3('0x1'));var path=require('path');var timeout=require(_0xfef3('0x2'));var express=require(_0xfef3('0x3'));var router=express['Router']();var fs_extra=require(_0xfef3('0x4'));var auth=require(_0xfef3('0x5'));var interaction=require(_0xfef3('0x6'));var config=require(_0xfef3('0x7'));var controller=require('./interval.controller');router[_0xfef3('0x8')]('/',auth[_0xfef3('0x9')](),controller['index']);router['get']('/:id',auth['isAuthenticated'](),controller[_0xfef3('0xa')]);router[_0xfef3('0x8')](_0xfef3('0xb'),auth['isAuthenticated'](),controller['getIntervals']);router[_0xfef3('0xc')]('/',auth['isAuthenticated'](),controller[_0xfef3('0xd')]);router[_0xfef3('0xc')](_0xfef3('0xb'),auth[_0xfef3('0x9')](),controller[_0xfef3('0xe')]);router[_0xfef3('0xc')](_0xfef3('0xf'),auth['isAuthenticated'](),controller['addIntervals']);router[_0xfef3('0x10')](_0xfef3('0x11'),auth[_0xfef3('0x9')](),controller['update']);router[_0xfef3('0x12')]('/:id',auth['isAuthenticated'](),controller[_0xfef3('0x13')]);module['exports']=router;
\ No newline at end of file
+var _0x744c=['addInterval','/:id/sub_intervals/create_many','addIntervals','put','delete','/:id','multer','util','path','connect-timeout','Router','fs-extra','../../components/auth/service','../../components/interaction/service','get','isAuthenticated','index','show','getIntervals','post','create','/:id/sub_intervals'];(function(_0x338f73,_0x1945c8){var _0x163fdf=function(_0x4cd033){while(--_0x4cd033){_0x338f73['push'](_0x338f73['shift']());}};_0x163fdf(++_0x1945c8);}(_0x744c,0xa0));var _0xc744=function(_0x143ea6,_0x3c9999){_0x143ea6=_0x143ea6-0x0;var _0xfb14d=_0x744c[_0x143ea6];return _0xfb14d;};'use strict';var multer=require(_0xc744('0x0'));var util=require(_0xc744('0x1'));var path=require(_0xc744('0x2'));var timeout=require(_0xc744('0x3'));var express=require('express');var router=express[_0xc744('0x4')]();var fs_extra=require(_0xc744('0x5'));var auth=require(_0xc744('0x6'));var interaction=require(_0xc744('0x7'));var config=require('../../config/environment');var controller=require('./interval.controller');router[_0xc744('0x8')]('/',auth[_0xc744('0x9')](),controller[_0xc744('0xa')]);router[_0xc744('0x8')]('/:id',auth['isAuthenticated'](),controller[_0xc744('0xb')]);router[_0xc744('0x8')]('/:id/sub_intervals',auth[_0xc744('0x9')](),controller[_0xc744('0xc')]);router[_0xc744('0xd')]('/',auth[_0xc744('0x9')](),controller[_0xc744('0xe')]);router[_0xc744('0xd')](_0xc744('0xf'),auth['isAuthenticated'](),controller[_0xc744('0x10')]);router[_0xc744('0xd')](_0xc744('0x11'),auth[_0xc744('0x9')](),controller[_0xc744('0x12')]);router[_0xc744('0x13')]('/:id',auth[_0xc744('0x9')](),controller['update']);router[_0xc744('0x14')](_0xc744('0x15'),auth[_0xc744('0x9')](),controller['destroy']);module['exports']=router;
\ No newline at end of file
index 6dd96cd..43fa368 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xec4e=['sequelize','STRING'];(function(_0x45fe9c,_0x55e0d7){var _0x233d48=function(_0xa2ba2e){while(--_0xa2ba2e){_0x45fe9c['push'](_0x45fe9c['shift']());}};_0x233d48(++_0x55e0d7);}(_0xec4e,0xbc));var _0xeec4=function(_0x2cd670,_0x226f03){_0x2cd670=_0x2cd670-0x0;var _0x5ac021=_0xec4e[_0x2cd670];return _0x5ac021;};'use strict';var Sequelize=require(_0xeec4('0x0'));module['exports']={'name':{'type':Sequelize['STRING']},'description':{'type':Sequelize[_0xeec4('0x1')]},'interval':{'type':Sequelize['STRING'],'allowNull':!![]}};
\ No newline at end of file
+var _0xee43=['STRING','exports'];(function(_0x3a483c,_0x182dde){var _0x5ce622=function(_0x4b6240){while(--_0x4b6240){_0x3a483c['push'](_0x3a483c['shift']());}};_0x5ce622(++_0x182dde);}(_0xee43,0x179));var _0x3ee4=function(_0x14add3,_0x13ce8d){_0x14add3=_0x14add3-0x0;var _0x4a174f=_0xee43[_0x14add3];return _0x4a174f;};'use strict';var Sequelize=require('sequelize');module[_0x3ee4('0x0')]={'name':{'type':Sequelize[_0x3ee4('0x1')]},'description':{'type':Sequelize[_0x3ee4('0x1')]},'interval':{'type':Sequelize['STRING'],'allowNull':!![]}};
\ No newline at end of file
index 4ab27b6..a81a37a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x19c4=['fieldName','type','model','map','query','filters','intersection','attributes','fields','hasOwnProperty','nolimit','sort','pick','filter','where','merge','VIRTUAL','options','include','findAll','catch','keys','find','create','body','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','UserProfileSection','userProfileId','autoAssociation','params','addInterval','IntervalId','findOne','length','order','getIntervals','addIntervals','sequelize','transaction','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','util','path','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/utils','../../config/environment','../../mysqldb','../../components/extensions/rewrite','sendStatus','status','end','json','undefined','count','offset','limit','Content-Range','apply','reject','save','update','then','destroy','get','Intervals','UserProfileResource','error','stack','name','send','index','Interval','rawAttributes'];(function(_0x53b8e0,_0x55d46e){var _0x10630c=function(_0x3189aa){while(--_0x3189aa){_0x53b8e0['push'](_0x53b8e0['shift']());}};_0x10630c(++_0x55d46e);}(_0x19c4,0x140));var _0x419c=function(_0x305b20,_0x5e57e9){_0x305b20=_0x305b20-0x0;var _0x26d64a=_0x19c4[_0x305b20];return _0x26d64a;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x419c('0x0'));var zipdir=require(_0x419c('0x1'));var jsonpatch=require(_0x419c('0x2'));var rp=require(_0x419c('0x3'));var moment=require(_0x419c('0x4'));var BPromise=require(_0x419c('0x5'));var Mustache=require('mustache');var util=require(_0x419c('0x6'));var path=require(_0x419c('0x7'));var sox=require('sox');var csv=require(_0x419c('0x8'));var ejs=require(_0x419c('0x9'));var fs=require('fs');var fs_extra=require(_0x419c('0xa'));var _=require(_0x419c('0xb'));var squel=require(_0x419c('0xc'));var crypto=require(_0x419c('0xd'));var jsforce=require(_0x419c('0xe'));var deskjs=require('desk.js');var toCsv=require(_0x419c('0x8'));var querystring=require(_0x419c('0xf'));var Papa=require(_0x419c('0x10'));var Redis=require(_0x419c('0x11'));var authService=require(_0x419c('0x12'));var qs=require(_0x419c('0x13'));var as=require(_0x419c('0x14'));var hardwareService=require(_0x419c('0x15'));var logger=require('../../config/logger')(_0x419c('0x16'));var utils=require(_0x419c('0x17'));var config=require(_0x419c('0x18'));var licenseUtil=require('../../config/license/util');var db=require(_0x419c('0x19'))['db'];var extensions=require(_0x419c('0x1a'));function respondWithStatusCode(_0x1b45bf,_0x4decaf){_0x4decaf=_0x4decaf||0xcc;return function(_0x4cee9a){if(_0x4cee9a){return _0x1b45bf[_0x419c('0x1b')](_0x4decaf);}return _0x1b45bf[_0x419c('0x1c')](_0x4decaf)[_0x419c('0x1d')]();};}function respondWithResult(_0x2a7922,_0x25aac4){_0x25aac4=_0x25aac4||0xc8;return function(_0x207c92){if(_0x207c92){return _0x2a7922[_0x419c('0x1c')](_0x25aac4)[_0x419c('0x1e')](_0x207c92);}};}function respondWithFilteredResult(_0x5d2955,_0x151b92){return function(_0x7905dd){if(_0x7905dd){var _0x4a23de=typeof _0x151b92['offset']===_0x419c('0x1f')&&typeof _0x151b92['limit']===_0x419c('0x1f');var _0x53a501=_0x7905dd['count'];var _0x3b2b9c=_0x4a23de?0x0:_0x151b92['offset'];var _0x4db57c=_0x4a23de?_0x7905dd[_0x419c('0x20')]:_0x151b92[_0x419c('0x21')]+_0x151b92[_0x419c('0x22')];var _0x25652b;if(_0x4db57c>=_0x53a501){_0x4db57c=_0x53a501;_0x25652b=0xc8;}else{_0x25652b=0xce;}_0x5d2955[_0x419c('0x1c')](_0x25652b);return _0x5d2955['set'](_0x419c('0x23'),_0x3b2b9c+'-'+_0x4db57c+'/'+_0x53a501)['json'](_0x7905dd);}return null;};}function patchUpdates(_0x56ccb6){return function(_0x185910){try{jsonpatch[_0x419c('0x24')](_0x185910,_0x56ccb6,!![]);}catch(_0x482c33){return BPromise[_0x419c('0x25')](_0x482c33);}return _0x185910[_0x419c('0x26')]();};}function saveUpdates(_0xf60817,_0x1aac3a){return function(_0xc0c5cd){if(_0xc0c5cd){return _0xc0c5cd[_0x419c('0x27')](_0xf60817)[_0x419c('0x28')](function(_0x204b5d){return _0x204b5d;});}return null;};}function removeEntity(_0x22d492,_0x354c7e){return function(_0x3b9e0e){if(_0x3b9e0e){return _0x3b9e0e[_0x419c('0x29')]()[_0x419c('0x28')](function(){var _0x239b01=_0x3b9e0e[_0x419c('0x2a')]({'plain':!![]});var _0x5bd41e=_0x419c('0x2b');return db[_0x419c('0x2c')][_0x419c('0x29')]({'where':{'type':_0x5bd41e,'resourceId':_0x239b01['id']}})[_0x419c('0x28')](function(){return _0x3b9e0e;});})[_0x419c('0x28')](function(){_0x22d492[_0x419c('0x1c')](0xcc)[_0x419c('0x1d')]();});}};}function handleEntityNotFound(_0x213c04,_0x5746cf){return function(_0x50496a){if(!_0x50496a){_0x213c04['sendStatus'](0x194);}return _0x50496a;};}function handleError(_0x5da17e,_0x57bc30){_0x57bc30=_0x57bc30||0x1f4;return function(_0x3b990d){logger[_0x419c('0x2d')](_0x3b990d[_0x419c('0x2e')]);if(_0x3b990d[_0x419c('0x2f')]){delete _0x3b990d['name'];}_0x5da17e['status'](_0x57bc30)[_0x419c('0x30')](_0x3b990d);};}exports[_0x419c('0x31')]=function(_0x768a0d,_0x423ce1){var _0x35c39e={},_0x4d70e9={},_0x597575={'count':0x0,'rows':[]};var _0x33f627=_['map'](db[_0x419c('0x32')][_0x419c('0x33')],function(_0xc7f70d){return{'name':_0xc7f70d[_0x419c('0x34')],'type':_0xc7f70d[_0x419c('0x35')]['key']};});_0x4d70e9[_0x419c('0x36')]=_[_0x419c('0x37')](_0x33f627,_0x419c('0x2f'));_0x4d70e9[_0x419c('0x38')]=_['keys'](_0x768a0d[_0x419c('0x38')]);_0x4d70e9[_0x419c('0x39')]=_[_0x419c('0x3a')](_0x4d70e9[_0x419c('0x36')],_0x4d70e9['query']);_0x35c39e[_0x419c('0x3b')]=_[_0x419c('0x3a')](_0x4d70e9[_0x419c('0x36')],qs['fields'](_0x768a0d[_0x419c('0x38')][_0x419c('0x3c')]));_0x35c39e[_0x419c('0x3b')]=_0x35c39e['attributes']['length']?_0x35c39e[_0x419c('0x3b')]:_0x4d70e9[_0x419c('0x36')];if(!_0x768a0d[_0x419c('0x38')][_0x419c('0x3d')](_0x419c('0x3e'))){_0x35c39e[_0x419c('0x22')]=qs[_0x419c('0x22')](_0x768a0d[_0x419c('0x38')][_0x419c('0x22')]);_0x35c39e['offset']=qs[_0x419c('0x21')](_0x768a0d[_0x419c('0x38')][_0x419c('0x21')]);}_0x35c39e['order']=qs[_0x419c('0x3f')](_0x768a0d['query'][_0x419c('0x3f')]);_0x35c39e['where']=qs[_0x419c('0x39')](_[_0x419c('0x40')](_0x768a0d[_0x419c('0x38')],_0x4d70e9[_0x419c('0x39')]),_0x33f627);if(_0x768a0d[_0x419c('0x38')][_0x419c('0x41')]){_0x35c39e[_0x419c('0x42')]=_[_0x419c('0x43')](_0x35c39e[_0x419c('0x42')],{'$or':_[_0x419c('0x37')](_0x33f627,function(_0xbe0183){if(_0xbe0183[_0x419c('0x35')]!==_0x419c('0x44')){var _0xfaa82b={};_0xfaa82b[_0xbe0183[_0x419c('0x2f')]]={'$like':'%'+_0x768a0d[_0x419c('0x38')][_0x419c('0x41')]+'%'};return _0xfaa82b;}})});}_0x35c39e=_[_0x419c('0x43')]({},_0x35c39e,_0x768a0d[_0x419c('0x45')]);var _0x31f3fc={'where':_0x35c39e[_0x419c('0x42')]};return db[_0x419c('0x32')]['count'](_0x31f3fc)[_0x419c('0x28')](function(_0x16703b){_0x597575['count']=_0x16703b;if(_0x768a0d[_0x419c('0x38')]['includeAll']){_0x35c39e[_0x419c('0x46')]=[{'all':!![]}];}return db[_0x419c('0x32')][_0x419c('0x47')](_0x35c39e);})['then'](function(_0x2adfa5){_0x597575['rows']=_0x2adfa5;return _0x597575;})[_0x419c('0x28')](respondWithFilteredResult(_0x423ce1,_0x35c39e))[_0x419c('0x48')](handleError(_0x423ce1,null));};exports['show']=function(_0x36822b,_0x4f9b90){var _0x211073={'raw':!![],'where':{'id':_0x36822b['params']['id']}},_0x3e70c1={};_0x3e70c1[_0x419c('0x36')]=_['keys'](db[_0x419c('0x32')]['rawAttributes']);_0x3e70c1['query']=_[_0x419c('0x49')](_0x36822b[_0x419c('0x38')]);_0x3e70c1[_0x419c('0x39')]=_[_0x419c('0x3a')](_0x3e70c1[_0x419c('0x36')],_0x3e70c1[_0x419c('0x38')]);_0x211073[_0x419c('0x3b')]=_['intersection'](_0x3e70c1[_0x419c('0x36')],qs[_0x419c('0x3c')](_0x36822b['query'][_0x419c('0x3c')]));_0x211073[_0x419c('0x3b')]=_0x211073[_0x419c('0x3b')]['length']?_0x211073[_0x419c('0x3b')]:_0x3e70c1[_0x419c('0x36')];if(_0x36822b[_0x419c('0x38')]['includeAll']){_0x211073[_0x419c('0x46')]=[{'all':!![]}];}_0x211073=_[_0x419c('0x43')]({},_0x211073,_0x36822b[_0x419c('0x45')]);return db[_0x419c('0x32')][_0x419c('0x4a')](_0x211073)[_0x419c('0x28')](handleEntityNotFound(_0x4f9b90,null))[_0x419c('0x28')](respondWithResult(_0x4f9b90,null))['catch'](handleError(_0x4f9b90,null));};exports[_0x419c('0x4b')]=function(_0x57d62f,_0x2f3c33){return db['Interval'][_0x419c('0x4b')](_0x57d62f[_0x419c('0x4c')],{})[_0x419c('0x28')](function(_0x1d0043){var _0x215716=_0x57d62f[_0x419c('0x4d')][_0x419c('0x2a')]({'plain':!![]});if(!_0x215716)throw new Error(_0x419c('0x4e'));if(_0x215716[_0x419c('0x4f')]===_0x419c('0x4d')){var _0xbdf09f=_0x1d0043[_0x419c('0x2a')]({'plain':!![]});var _0x45e372=_0x419c('0x2b');return db[_0x419c('0x50')][_0x419c('0x4a')]({'where':{'name':_0x45e372,'userProfileId':_0x215716[_0x419c('0x51')]},'raw':!![]})[_0x419c('0x28')](function(_0x1255e7){if(_0x1255e7&&_0x1255e7[_0x419c('0x52')]===0x0){return db[_0x419c('0x2c')]['create']({'name':_0xbdf09f[_0x419c('0x2f')],'resourceId':_0xbdf09f['id'],'type':_0x1255e7[_0x419c('0x2f')],'sectionId':_0x1255e7['id']},{})[_0x419c('0x28')](function(){return _0x1d0043;});}else{return _0x1d0043;}})[_0x419c('0x48')](function(_0x2da134){logger[_0x419c('0x2d')]('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0x2da134);throw _0x2da134;});}return _0x1d0043;})['then'](respondWithResult(_0x2f3c33,0xc9))[_0x419c('0x48')](handleError(_0x2f3c33,null));};exports[_0x419c('0x27')]=function(_0x17fadd,_0x350c00){if(_0x17fadd['body']['id']){delete _0x17fadd[_0x419c('0x4c')]['id'];}return db['Interval'][_0x419c('0x4a')]({'where':{'id':_0x17fadd['params']['id']}})[_0x419c('0x28')](handleEntityNotFound(_0x350c00,null))[_0x419c('0x28')](saveUpdates(_0x17fadd[_0x419c('0x4c')],null))['then'](respondWithResult(_0x350c00,null))['catch'](handleError(_0x350c00,null));};exports[_0x419c('0x29')]=function(_0x54a2e6,_0x83b13){return db[_0x419c('0x32')][_0x419c('0x4a')]({'where':{'id':_0x54a2e6[_0x419c('0x53')]['id']}})['then'](handleEntityNotFound(_0x83b13,null))['then'](removeEntity(_0x83b13,null))[_0x419c('0x48')](handleError(_0x83b13,null));};exports[_0x419c('0x54')]=function(_0x4a5c65,_0x5d1fd9,_0x315ff0){if(_0x4a5c65[_0x419c('0x4c')]['id']){delete _0x4a5c65[_0x419c('0x4c')]['id'];}return db[_0x419c('0x32')][_0x419c('0x4a')]({'where':{'id':_0x4a5c65[_0x419c('0x53')]['id']}})['then'](handleEntityNotFound(_0x5d1fd9,null))[_0x419c('0x28')](function(_0x3a0399){if(_0x3a0399){_0x4a5c65[_0x419c('0x4c')][_0x419c('0x55')]=_0x3a0399['id'];return db[_0x419c('0x32')][_0x419c('0x4b')](_0x4a5c65['body']);}})['then'](respondWithResult(_0x5d1fd9,null))[_0x419c('0x48')](handleError(_0x5d1fd9,null));};exports['getIntervals']=function(_0x3c1c45,_0x1a7491,_0x2cacfb){var _0x18184a={};var _0x3e9999={};var _0x16c763;var _0x2ffab1;return db[_0x419c('0x32')][_0x419c('0x56')]({'where':{'id':_0x3c1c45[_0x419c('0x53')]['id']}})[_0x419c('0x28')](handleEntityNotFound(_0x1a7491,null))['then'](function(_0x3cf692){if(_0x3cf692){_0x16c763=_0x3cf692;_0x3e9999[_0x419c('0x36')]=_[_0x419c('0x49')](db[_0x419c('0x32')][_0x419c('0x33')]);_0x3e9999[_0x419c('0x38')]=_[_0x419c('0x49')](_0x3c1c45[_0x419c('0x38')]);_0x3e9999['filters']=_[_0x419c('0x3a')](_0x3e9999['model'],_0x3e9999['query']);_0x18184a[_0x419c('0x3b')]=_[_0x419c('0x3a')](_0x3e9999[_0x419c('0x36')],qs[_0x419c('0x3c')](_0x3c1c45['query']['fields']));_0x18184a['attributes']=_0x18184a['attributes'][_0x419c('0x57')]?_0x18184a['attributes']:_0x3e9999[_0x419c('0x36')];_0x18184a[_0x419c('0x58')]=qs[_0x419c('0x3f')](_0x3c1c45[_0x419c('0x38')][_0x419c('0x3f')]);_0x18184a['where']=qs['filters'](_[_0x419c('0x40')](_0x3c1c45['query'],_0x3e9999['filters']));if(_0x3c1c45[_0x419c('0x38')]['filter']){_0x18184a[_0x419c('0x42')]=_['merge'](_0x18184a[_0x419c('0x42')],{'$or':_['map'](_0x18184a['attributes'],function(_0x4d24a1){var _0x2eb19f={};_0x2eb19f[_0x4d24a1]={'$like':'%'+_0x3c1c45[_0x419c('0x38')][_0x419c('0x41')]+'%'};return _0x2eb19f;})});}_0x18184a=_[_0x419c('0x43')]({},_0x18184a,_0x3c1c45[_0x419c('0x45')]);return _0x16c763[_0x419c('0x59')](_0x18184a);}})[_0x419c('0x28')](function(_0x231c79){if(_0x231c79){_0x2ffab1=_0x231c79[_0x419c('0x57')];if(!_0x3c1c45[_0x419c('0x38')]['hasOwnProperty'](_0x419c('0x3e'))){_0x18184a[_0x419c('0x22')]=qs[_0x419c('0x22')](_0x3c1c45[_0x419c('0x38')][_0x419c('0x22')]);_0x18184a[_0x419c('0x21')]=qs[_0x419c('0x21')](_0x3c1c45[_0x419c('0x38')][_0x419c('0x21')]);}return _0x16c763[_0x419c('0x59')](_0x18184a);}})[_0x419c('0x28')](function(_0x34b4d9){if(_0x34b4d9){return _0x34b4d9?{'count':_0x2ffab1,'rows':_0x34b4d9}:null;}})[_0x419c('0x28')](respondWithResult(_0x1a7491,null))[_0x419c('0x48')](handleError(_0x1a7491,null));};exports[_0x419c('0x5a')]=function(_0x13a852,_0x505a37,_0x40ae83){return db[_0x419c('0x32')][_0x419c('0x56')]({'where':{'id':_0x13a852[_0x419c('0x53')]['id']}})[_0x419c('0x28')](handleEntityNotFound(_0x505a37,null))[_0x419c('0x28')](function(_0x4bef4e){if(_0x4bef4e){return db[_0x419c('0x5b')][_0x419c('0x5c')](function(_0x725b5){return db[_0x419c('0x32')]['destroy']({'where':{'IntervalId':_0x13a852[_0x419c('0x53')]['id']},'transaction':_0x725b5})['then'](function(_0x17c468){var _0x4b7240=_[_0x419c('0x37')](_0x13a852[_0x419c('0x4c')],function(_0xd5c33d){delete _0xd5c33d['id'];_0xd5c33d[_0x419c('0x55')]=_0x13a852[_0x419c('0x53')]['id'];return _0xd5c33d;});return db[_0x419c('0x32')]['bulkCreate'](_0x4b7240,{'transaction':_0x725b5});});})['then'](function(){return db[_0x419c('0x32')][_0x419c('0x47')]({'where':{'IntervalId':_0x13a852['params']['id']}});});}})[_0x419c('0x28')](respondWithResult(_0x505a37,null))[_0x419c('0x48')](handleError(_0x505a37,null));};
\ No newline at end of file
+var _0xb420=['limit','count','set','Content-Range','apply','reject','save','update','then','destroy','get','Intervals','UserProfileResource','sendStatus','error','name','send','map','rawAttributes','fieldName','type','key','model','query','filters','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','pick','filter','merge','VIRTUAL','options','includeAll','include','Interval','findAll','rows','catch','params','keys','intersection','find','create','body','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','UserProfileSection','userProfileId','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','addInterval','getIntervals','findOne','addIntervals','sequelize','transaction','IntervalId','bulkCreate','rimraf','zip-dir','fast-json-patch','request-promise','bluebird','mustache','util','path','ejs','fs-extra','squel','crypto','jsforce','desk.js','papaparse','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','api','../../config/utils','../../config/license/util','../../mysqldb','status','end','json','offset','undefined'];(function(_0xa3e0f7,_0x1b06db){var _0x4ce604=function(_0x29df1e){while(--_0x29df1e){_0xa3e0f7['push'](_0xa3e0f7['shift']());}};_0x4ce604(++_0x1b06db);}(_0xb420,0x1b0));var _0x0b42=function(_0x14add3,_0x13ce8d){_0x14add3=_0x14add3-0x0;var _0x4a174f=_0xb420[_0x14add3];return _0x4a174f;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x0b42('0x0'));var zipdir=require(_0x0b42('0x1'));var jsonpatch=require(_0x0b42('0x2'));var rp=require(_0x0b42('0x3'));var moment=require('moment');var BPromise=require(_0x0b42('0x4'));var Mustache=require(_0x0b42('0x5'));var util=require(_0x0b42('0x6'));var path=require(_0x0b42('0x7'));var sox=require('sox');var csv=require('to-csv');var ejs=require(_0x0b42('0x8'));var fs=require('fs');var fs_extra=require(_0x0b42('0x9'));var _=require('lodash');var squel=require(_0x0b42('0xa'));var crypto=require(_0x0b42('0xb'));var jsforce=require(_0x0b42('0xc'));var deskjs=require(_0x0b42('0xd'));var toCsv=require('to-csv');var querystring=require('querystring');var Papa=require(_0x0b42('0xe'));var Redis=require('ioredis');var authService=require(_0x0b42('0xf'));var qs=require(_0x0b42('0x10'));var as=require(_0x0b42('0x11'));var hardwareService=require('../../config/license/hardware');var logger=require(_0x0b42('0x12'))(_0x0b42('0x13'));var utils=require(_0x0b42('0x14'));var config=require('../../config/environment');var licenseUtil=require(_0x0b42('0x15'));var db=require(_0x0b42('0x16'))['db'];var extensions=require('../../components/extensions/rewrite');function respondWithStatusCode(_0x5e3f0c,_0x3efd71){_0x3efd71=_0x3efd71||0xcc;return function(_0x537d0f){if(_0x537d0f){return _0x5e3f0c['sendStatus'](_0x3efd71);}return _0x5e3f0c[_0x0b42('0x17')](_0x3efd71)[_0x0b42('0x18')]();};}function respondWithResult(_0x16d69c,_0x1ea665){_0x1ea665=_0x1ea665||0xc8;return function(_0x17f3a8){if(_0x17f3a8){return _0x16d69c[_0x0b42('0x17')](_0x1ea665)[_0x0b42('0x19')](_0x17f3a8);}};}function respondWithFilteredResult(_0x43b03c,_0x1052df){return function(_0xb762df){if(_0xb762df){var _0x3a2876=typeof _0x1052df[_0x0b42('0x1a')]===_0x0b42('0x1b')&&typeof _0x1052df[_0x0b42('0x1c')]===_0x0b42('0x1b');var _0x5598cb=_0xb762df[_0x0b42('0x1d')];var _0x25e0e0=_0x3a2876?0x0:_0x1052df[_0x0b42('0x1a')];var _0x36c95c=_0x3a2876?_0xb762df['count']:_0x1052df[_0x0b42('0x1a')]+_0x1052df[_0x0b42('0x1c')];var _0x3f4f10;if(_0x36c95c>=_0x5598cb){_0x36c95c=_0x5598cb;_0x3f4f10=0xc8;}else{_0x3f4f10=0xce;}_0x43b03c[_0x0b42('0x17')](_0x3f4f10);return _0x43b03c[_0x0b42('0x1e')](_0x0b42('0x1f'),_0x25e0e0+'-'+_0x36c95c+'/'+_0x5598cb)['json'](_0xb762df);}return null;};}function patchUpdates(_0x468762){return function(_0x5d2b99){try{jsonpatch[_0x0b42('0x20')](_0x5d2b99,_0x468762,!![]);}catch(_0x19034f){return BPromise[_0x0b42('0x21')](_0x19034f);}return _0x5d2b99[_0x0b42('0x22')]();};}function saveUpdates(_0x527944,_0x340ff3){return function(_0x4f1e77){if(_0x4f1e77){return _0x4f1e77[_0x0b42('0x23')](_0x527944)[_0x0b42('0x24')](function(_0x2c1f0f){return _0x2c1f0f;});}return null;};}function removeEntity(_0x15700a,_0x16974d){return function(_0x1def8a){if(_0x1def8a){return _0x1def8a[_0x0b42('0x25')]()[_0x0b42('0x24')](function(){var _0x1953d2=_0x1def8a[_0x0b42('0x26')]({'plain':!![]});var _0x2bff0e=_0x0b42('0x27');return db[_0x0b42('0x28')]['destroy']({'where':{'type':_0x2bff0e,'resourceId':_0x1953d2['id']}})[_0x0b42('0x24')](function(){return _0x1def8a;});})['then'](function(){_0x15700a[_0x0b42('0x17')](0xcc)['end']();});}};}function handleEntityNotFound(_0x5643e3,_0x4cbe05){return function(_0x3b0c3e){if(!_0x3b0c3e){_0x5643e3[_0x0b42('0x29')](0x194);}return _0x3b0c3e;};}function handleError(_0x3372ee,_0x19a804){_0x19a804=_0x19a804||0x1f4;return function(_0x172fd3){logger[_0x0b42('0x2a')](_0x172fd3['stack']);if(_0x172fd3[_0x0b42('0x2b')]){delete _0x172fd3[_0x0b42('0x2b')];}_0x3372ee[_0x0b42('0x17')](_0x19a804)[_0x0b42('0x2c')](_0x172fd3);};}exports['index']=function(_0x3b5013,_0x5e2260){var _0x581626={},_0x56536b={},_0x188493={'count':0x0,'rows':[]};var _0x2bd2f1=_[_0x0b42('0x2d')](db['Interval'][_0x0b42('0x2e')],function(_0x13718){return{'name':_0x13718[_0x0b42('0x2f')],'type':_0x13718[_0x0b42('0x30')][_0x0b42('0x31')]};});_0x56536b[_0x0b42('0x32')]=_['map'](_0x2bd2f1,'name');_0x56536b['query']=_['keys'](_0x3b5013[_0x0b42('0x33')]);_0x56536b[_0x0b42('0x34')]=_['intersection'](_0x56536b[_0x0b42('0x32')],_0x56536b[_0x0b42('0x33')]);_0x581626[_0x0b42('0x35')]=_['intersection'](_0x56536b[_0x0b42('0x32')],qs[_0x0b42('0x36')](_0x3b5013['query'][_0x0b42('0x36')]));_0x581626['attributes']=_0x581626[_0x0b42('0x35')][_0x0b42('0x37')]?_0x581626['attributes']:_0x56536b[_0x0b42('0x32')];if(!_0x3b5013[_0x0b42('0x33')][_0x0b42('0x38')](_0x0b42('0x39'))){_0x581626[_0x0b42('0x1c')]=qs[_0x0b42('0x1c')](_0x3b5013[_0x0b42('0x33')][_0x0b42('0x1c')]);_0x581626[_0x0b42('0x1a')]=qs[_0x0b42('0x1a')](_0x3b5013[_0x0b42('0x33')][_0x0b42('0x1a')]);}_0x581626[_0x0b42('0x3a')]=qs[_0x0b42('0x3b')](_0x3b5013[_0x0b42('0x33')][_0x0b42('0x3b')]);_0x581626[_0x0b42('0x3c')]=qs[_0x0b42('0x34')](_[_0x0b42('0x3d')](_0x3b5013[_0x0b42('0x33')],_0x56536b[_0x0b42('0x34')]),_0x2bd2f1);if(_0x3b5013[_0x0b42('0x33')][_0x0b42('0x3e')]){_0x581626[_0x0b42('0x3c')]=_[_0x0b42('0x3f')](_0x581626[_0x0b42('0x3c')],{'$or':_[_0x0b42('0x2d')](_0x2bd2f1,function(_0x31636){if(_0x31636[_0x0b42('0x30')]!==_0x0b42('0x40')){var _0x11ef51={};_0x11ef51[_0x31636['name']]={'$like':'%'+_0x3b5013[_0x0b42('0x33')][_0x0b42('0x3e')]+'%'};return _0x11ef51;}})});}_0x581626=_[_0x0b42('0x3f')]({},_0x581626,_0x3b5013[_0x0b42('0x41')]);var _0x69671d={'where':_0x581626[_0x0b42('0x3c')]};return db['Interval'][_0x0b42('0x1d')](_0x69671d)[_0x0b42('0x24')](function(_0x46c9f6){_0x188493[_0x0b42('0x1d')]=_0x46c9f6;if(_0x3b5013['query'][_0x0b42('0x42')]){_0x581626[_0x0b42('0x43')]=[{'all':!![]}];}return db[_0x0b42('0x44')][_0x0b42('0x45')](_0x581626);})[_0x0b42('0x24')](function(_0x20b84d){_0x188493[_0x0b42('0x46')]=_0x20b84d;return _0x188493;})['then'](respondWithFilteredResult(_0x5e2260,_0x581626))[_0x0b42('0x47')](handleError(_0x5e2260,null));};exports['show']=function(_0x56e5ad,_0x4d507d){var _0x2ac6b5={'raw':!![],'where':{'id':_0x56e5ad[_0x0b42('0x48')]['id']}},_0x26633a={};_0x26633a[_0x0b42('0x32')]=_[_0x0b42('0x49')](db[_0x0b42('0x44')][_0x0b42('0x2e')]);_0x26633a['query']=_[_0x0b42('0x49')](_0x56e5ad[_0x0b42('0x33')]);_0x26633a[_0x0b42('0x34')]=_[_0x0b42('0x4a')](_0x26633a[_0x0b42('0x32')],_0x26633a['query']);_0x2ac6b5[_0x0b42('0x35')]=_[_0x0b42('0x4a')](_0x26633a['model'],qs[_0x0b42('0x36')](_0x56e5ad[_0x0b42('0x33')][_0x0b42('0x36')]));_0x2ac6b5[_0x0b42('0x35')]=_0x2ac6b5[_0x0b42('0x35')][_0x0b42('0x37')]?_0x2ac6b5[_0x0b42('0x35')]:_0x26633a['model'];if(_0x56e5ad[_0x0b42('0x33')][_0x0b42('0x42')]){_0x2ac6b5[_0x0b42('0x43')]=[{'all':!![]}];}_0x2ac6b5=_['merge']({},_0x2ac6b5,_0x56e5ad['options']);return db[_0x0b42('0x44')][_0x0b42('0x4b')](_0x2ac6b5)[_0x0b42('0x24')](handleEntityNotFound(_0x4d507d,null))[_0x0b42('0x24')](respondWithResult(_0x4d507d,null))[_0x0b42('0x47')](handleError(_0x4d507d,null));};exports[_0x0b42('0x4c')]=function(_0x438a5e,_0xd433de){return db['Interval'][_0x0b42('0x4c')](_0x438a5e[_0x0b42('0x4d')],{})[_0x0b42('0x24')](function(_0x125a9c){var _0x14aa24=_0x438a5e[_0x0b42('0x4e')][_0x0b42('0x26')]({'plain':!![]});if(!_0x14aa24)throw new Error(_0x0b42('0x4f'));if(_0x14aa24[_0x0b42('0x50')]==='user'){var _0x162c2c=_0x125a9c[_0x0b42('0x26')]({'plain':!![]});var _0x25de1c=_0x0b42('0x27');return db[_0x0b42('0x51')][_0x0b42('0x4b')]({'where':{'name':_0x25de1c,'userProfileId':_0x14aa24[_0x0b42('0x52')]},'raw':!![]})[_0x0b42('0x24')](function(_0x3f1b4d){if(_0x3f1b4d&&_0x3f1b4d['autoAssociation']===0x0){return db[_0x0b42('0x28')][_0x0b42('0x4c')]({'name':_0x162c2c[_0x0b42('0x2b')],'resourceId':_0x162c2c['id'],'type':_0x3f1b4d[_0x0b42('0x2b')],'sectionId':_0x3f1b4d['id']},{})[_0x0b42('0x24')](function(){return _0x125a9c;});}else{return _0x125a9c;}})[_0x0b42('0x47')](function(_0x12e7f0){logger['error'](_0x0b42('0x53'),_0x12e7f0);throw _0x12e7f0;});}return _0x125a9c;})[_0x0b42('0x24')](respondWithResult(_0xd433de,0xc9))[_0x0b42('0x47')](handleError(_0xd433de,null));};exports['update']=function(_0x2c003d,_0x4d4c4c){if(_0x2c003d[_0x0b42('0x4d')]['id']){delete _0x2c003d[_0x0b42('0x4d')]['id'];}return db[_0x0b42('0x44')][_0x0b42('0x4b')]({'where':{'id':_0x2c003d[_0x0b42('0x48')]['id']}})['then'](handleEntityNotFound(_0x4d4c4c,null))[_0x0b42('0x24')](saveUpdates(_0x2c003d['body'],null))[_0x0b42('0x24')](respondWithResult(_0x4d4c4c,null))['catch'](handleError(_0x4d4c4c,null));};exports['destroy']=function(_0x2ccd5a,_0x5acbdd){return db[_0x0b42('0x44')]['find']({'where':{'id':_0x2ccd5a[_0x0b42('0x48')]['id']}})[_0x0b42('0x24')](handleEntityNotFound(_0x5acbdd,null))[_0x0b42('0x24')](removeEntity(_0x5acbdd,null))[_0x0b42('0x47')](handleError(_0x5acbdd,null));};exports[_0x0b42('0x54')]=function(_0x30aba0,_0x1f287e,_0x3ebf89){if(_0x30aba0[_0x0b42('0x4d')]['id']){delete _0x30aba0[_0x0b42('0x4d')]['id'];}return db[_0x0b42('0x44')][_0x0b42('0x4b')]({'where':{'id':_0x30aba0['params']['id']}})[_0x0b42('0x24')](handleEntityNotFound(_0x1f287e,null))[_0x0b42('0x24')](function(_0xd6a7fa){if(_0xd6a7fa){_0x30aba0[_0x0b42('0x4d')]['IntervalId']=_0xd6a7fa['id'];return db[_0x0b42('0x44')][_0x0b42('0x4c')](_0x30aba0['body']);}})['then'](respondWithResult(_0x1f287e,null))['catch'](handleError(_0x1f287e,null));};exports[_0x0b42('0x55')]=function(_0x488c46,_0x5fddd2,_0x271091){var _0x407ab6={};var _0x15fafa={};var _0x213966;var _0x11d439;return db['Interval'][_0x0b42('0x56')]({'where':{'id':_0x488c46['params']['id']}})['then'](handleEntityNotFound(_0x5fddd2,null))[_0x0b42('0x24')](function(_0x4c5b25){if(_0x4c5b25){_0x213966=_0x4c5b25;_0x15fafa['model']=_[_0x0b42('0x49')](db[_0x0b42('0x44')][_0x0b42('0x2e')]);_0x15fafa['query']=_[_0x0b42('0x49')](_0x488c46['query']);_0x15fafa['filters']=_['intersection'](_0x15fafa['model'],_0x15fafa[_0x0b42('0x33')]);_0x407ab6['attributes']=_[_0x0b42('0x4a')](_0x15fafa[_0x0b42('0x32')],qs[_0x0b42('0x36')](_0x488c46[_0x0b42('0x33')][_0x0b42('0x36')]));_0x407ab6[_0x0b42('0x35')]=_0x407ab6[_0x0b42('0x35')][_0x0b42('0x37')]?_0x407ab6[_0x0b42('0x35')]:_0x15fafa['model'];_0x407ab6[_0x0b42('0x3a')]=qs[_0x0b42('0x3b')](_0x488c46[_0x0b42('0x33')][_0x0b42('0x3b')]);_0x407ab6['where']=qs[_0x0b42('0x34')](_[_0x0b42('0x3d')](_0x488c46[_0x0b42('0x33')],_0x15fafa['filters']));if(_0x488c46[_0x0b42('0x33')]['filter']){_0x407ab6[_0x0b42('0x3c')]=_[_0x0b42('0x3f')](_0x407ab6[_0x0b42('0x3c')],{'$or':_[_0x0b42('0x2d')](_0x407ab6[_0x0b42('0x35')],function(_0x3b5808){var _0x30e4df={};_0x30e4df[_0x3b5808]={'$like':'%'+_0x488c46[_0x0b42('0x33')]['filter']+'%'};return _0x30e4df;})});}_0x407ab6=_['merge']({},_0x407ab6,_0x488c46['options']);return _0x213966[_0x0b42('0x55')](_0x407ab6);}})[_0x0b42('0x24')](function(_0x515e5e){if(_0x515e5e){_0x11d439=_0x515e5e[_0x0b42('0x37')];if(!_0x488c46[_0x0b42('0x33')][_0x0b42('0x38')](_0x0b42('0x39'))){_0x407ab6[_0x0b42('0x1c')]=qs[_0x0b42('0x1c')](_0x488c46['query'][_0x0b42('0x1c')]);_0x407ab6[_0x0b42('0x1a')]=qs['offset'](_0x488c46[_0x0b42('0x33')][_0x0b42('0x1a')]);}return _0x213966[_0x0b42('0x55')](_0x407ab6);}})[_0x0b42('0x24')](function(_0x1812fb){if(_0x1812fb){return _0x1812fb?{'count':_0x11d439,'rows':_0x1812fb}:null;}})[_0x0b42('0x24')](respondWithResult(_0x5fddd2,null))['catch'](handleError(_0x5fddd2,null));};exports[_0x0b42('0x57')]=function(_0x59e236,_0x1f43fa,_0x19e3a2){return db[_0x0b42('0x44')]['findOne']({'where':{'id':_0x59e236[_0x0b42('0x48')]['id']}})[_0x0b42('0x24')](handleEntityNotFound(_0x1f43fa,null))[_0x0b42('0x24')](function(_0x45dd8d){if(_0x45dd8d){return db[_0x0b42('0x58')][_0x0b42('0x59')](function(_0x23f31e){return db[_0x0b42('0x44')][_0x0b42('0x25')]({'where':{'IntervalId':_0x59e236[_0x0b42('0x48')]['id']},'transaction':_0x23f31e})['then'](function(_0x411437){var _0x31dd9c=_[_0x0b42('0x2d')](_0x59e236[_0x0b42('0x4d')],function(_0xae7c7c){delete _0xae7c7c['id'];_0xae7c7c[_0x0b42('0x5a')]=_0x59e236['params']['id'];return _0xae7c7c;});return db[_0x0b42('0x44')][_0x0b42('0x5b')](_0x31dd9c,{'transaction':_0x23f31e});});})['then'](function(){return db[_0x0b42('0x44')][_0x0b42('0x45')]({'where':{'IntervalId':_0x59e236[_0x0b42('0x48')]['id']}});});}})[_0x0b42('0x24')](respondWithResult(_0x1f43fa,null))[_0x0b42('0x47')](handleError(_0x1f43fa,null));};
\ No newline at end of file
index 0c02588..11e771c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0c61=['tools_intervals','rewrite','util','moment','bluebird','path','./interval.attributes','../../components/extensions/rewrite','exports','define'];(function(_0x133fe4,_0x1f473b){var _0x4c4017=function(_0x3c1fb1){while(--_0x3c1fb1){_0x133fe4['push'](_0x133fe4['shift']());}};_0x4c4017(++_0x1f473b);}(_0x0c61,0x70));var _0x10c6=function(_0x166e96,_0x55191d){_0x166e96=_0x166e96-0x0;var _0x553d73=_0x0c61[_0x166e96];return _0x553d73;};'use strict';var _=require('lodash');var util=require(_0x10c6('0x0'));var logger=require('../../config/logger')('api');var moment=require(_0x10c6('0x1'));var BPromise=require(_0x10c6('0x2'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x10c6('0x3'));var rimraf=require('rimraf');var config=require('../../config/environment');var attributes=require(_0x10c6('0x4'));var extensions=require(_0x10c6('0x5'));module[_0x10c6('0x6')]=function(_0x6e4d60,_0x416b44){return _0x6e4d60[_0x10c6('0x7')]('Interval',attributes,{'tableName':_0x10c6('0x8'),'paranoid':![],'indexes':[],'timestamps':!![],'hooks':{'afterCreate':function(_0x3c48af,_0x3e2ff8){extensions['rewrite'](_0x6e4d60,_0x3c48af);},'afterBulkCreate':function(_0x6cc704,_0x43e63a,_0x13b185){_0x13b185();extensions[_0x10c6('0x9')](_0x6e4d60,_0x6cc704[0x0]);},'afterUpdate':function(_0x2d3b6a,_0x41f12d){extensions['rewrite'](_0x6e4d60,_0x2d3b6a);},'afterDestroy':function(_0x4752cf,_0x38cece){extensions[_0x10c6('0x9')](_0x6e4d60,_0x4752cf);}}});};
\ No newline at end of file
+var _0x4a49=['tools_intervals','rewrite','util','../../config/logger','api','moment','path','rimraf','../../config/environment','exports','define'];(function(_0x352651,_0x172d3c){var _0x1cdde2=function(_0x18229e){while(--_0x18229e){_0x352651['push'](_0x352651['shift']());}};_0x1cdde2(++_0x172d3c);}(_0x4a49,0x18e));var _0x94a4=function(_0x5b0821,_0x2f135f){_0x5b0821=_0x5b0821-0x0;var _0x14b236=_0x4a49[_0x5b0821];return _0x14b236;};'use strict';var _=require('lodash');var util=require(_0x94a4('0x0'));var logger=require(_0x94a4('0x1'))(_0x94a4('0x2'));var moment=require(_0x94a4('0x3'));var BPromise=require('bluebird');var rp=require('request-promise');var fs=require('fs');var path=require(_0x94a4('0x4'));var rimraf=require(_0x94a4('0x5'));var config=require(_0x94a4('0x6'));var attributes=require('./interval.attributes');var extensions=require('../../components/extensions/rewrite');module[_0x94a4('0x7')]=function(_0x1d314b,_0x1c6a0b){return _0x1d314b[_0x94a4('0x8')]('Interval',attributes,{'tableName':_0x94a4('0x9'),'paranoid':![],'indexes':[],'timestamps':!![],'hooks':{'afterCreate':function(_0x755d8f,_0x14b46d){extensions['rewrite'](_0x1d314b,_0x755d8f);},'afterBulkCreate':function(_0x425e04,_0x1cc226,_0x526314){_0x526314();extensions[_0x94a4('0xa')](_0x1d314b,_0x425e04[0x0]);},'afterUpdate':function(_0x57844e,_0xba2b33){extensions[_0x94a4('0xa')](_0x1d314b,_0x57844e);},'afterDestroy':function(_0x53ddea,_0x314eaa){extensions[_0x94a4('0xa')](_0x1d314b,_0x53ddea);}}});};
\ No newline at end of file
index eb1c209..77dcccd 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(_0x1d128e,_0x2c87de){var _0x3d5236=function(_0x2374ff){while(--_0x2374ff){_0x1d128e['push'](_0x1d128e['shift']());}};_0x3d5236(++_0x2c87de);}(_0xa9e0,0x123));var _0x0a9e=function(_0x3c2a69,_0x4c8b41){_0x3c2a69=_0x3c2a69-0x0;var _0x596bc8=_0xa9e0[_0x3c2a69];return _0x596bc8;};'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(_0x3e531a,_0x28a82a){var _0x3c2574=function(_0x4a0c98){while(--_0x4a0c98){_0x3e531a['push'](_0x3e531a['shift']());}};_0x3c2574(++_0x28a82a);}(_0xa9e0,0x123));var _0x0a9e=function(_0x2160a9,_0x3cbd9e){_0x2160a9=_0x2160a9-0x0;var _0xa88cf7=_0xa9e0[_0x2160a9];return _0xa88cf7;};'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 99ad718..b1ddcd3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5f66=['send','exports','Router','./jira.controller','post','isAuthenticated'];(function(_0x5e6cb8,_0x16cf56){var _0x3faeb3=function(_0x1a7355){while(--_0x1a7355){_0x5e6cb8['push'](_0x5e6cb8['shift']());}};_0x3faeb3(++_0x16cf56);}(_0x5f66,0x1a0));var _0x65f6=function(_0x126558,_0x143c9a){_0x126558=_0x126558-0x0;var _0x1f6d14=_0x5f66[_0x126558];return _0x1f6d14;};'use strict';var express=require('express');var router=express[_0x65f6('0x0')]();var auth=require('../../components/auth/service');var controller=require(_0x65f6('0x1'));router[_0x65f6('0x2')]('/',auth[_0x65f6('0x3')](),controller[_0x65f6('0x4')]);module[_0x65f6('0x5')]=router;
\ No newline at end of file
+var _0x2ef3=['./jira.controller','post','isAuthenticated','exports','express','Router','../../components/auth/service'];(function(_0x2c65dd,_0x292324){var _0x49533e=function(_0x21404f){while(--_0x21404f){_0x2c65dd['push'](_0x2c65dd['shift']());}};_0x49533e(++_0x292324);}(_0x2ef3,0xba));var _0x32ef=function(_0x24f79a,_0x12e81e){_0x24f79a=_0x24f79a-0x0;var _0x505eef=_0x2ef3[_0x24f79a];return _0x505eef;};'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 854a9a2..e819da6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6eb8=['MOTGUI','summary','Report','stringify','issuetype','Bug','customfield_11500','email','fields','customfield_11501','oldToken','customfield_11502','newToken','customfield_11503','name','reason','customfield_10102','track.xcallymotion.com','/rest/api/2/issue','POST','Basic\x20','toString','base64','request','setEncoding','utf8','status','statusCode','json','parse','Error\x20during\x20license\x20request.\x20Please\x20contact\x20our\x20license\x20team\x20at\x20license@xcally.com\x20with\x20your\x20request','write','end','openIssue','send','headers','x-forwarded-for','connection','remoteAddress','body','bluebird','../../config/logger','support','3eAmWpBVP0','key'];(function(_0x41d432,_0x20e878){var _0x1650f9=function(_0x27f177){while(--_0x27f177){_0x41d432['push'](_0x41d432['shift']());}};_0x1650f9(++_0x20e878);}(_0x6eb8,0xdc));var _0x86eb=function(_0x25ec60,_0x3a1695){_0x25ec60=_0x25ec60-0x0;var _0x1a7427=_0x6eb8[_0x25ec60];return _0x1a7427;};'use strict';var BPromise=require(_0x86eb('0x0'));var https=require('https');var logger=require(_0x86eb('0x1'))('api');var USERNAME=_0x86eb('0x2');var PASSWORD=_0x86eb('0x3');function openIssue(_0x4f8742,_0x1afefb){var _0xe9bf5c={'fields':{'project':{'key':_0x4f8742[_0x86eb('0x4')]||_0x86eb('0x5')},'summary':(_0x4f8742[_0x86eb('0x6')]||_0x86eb('0x7'))+'\x20from\x20'+_0x4f8742['ip'],'description':_0x4f8742['description']||JSON[_0x86eb('0x8')](_0x4f8742),'issuetype':{'name':_0x4f8742[_0x86eb('0x9')]||_0x86eb('0xa')}}};_0xe9bf5c['fields'][_0x86eb('0xb')]=_0x4f8742[_0x86eb('0xc')];_0xe9bf5c[_0x86eb('0xd')][_0x86eb('0xe')]=_0x4f8742[_0x86eb('0xf')];_0xe9bf5c[_0x86eb('0xd')][_0x86eb('0x10')]=_0x4f8742[_0x86eb('0x11')];_0xe9bf5c[_0x86eb('0xd')][_0x86eb('0x12')]=_0x4f8742[_0x86eb('0x13')];_0xe9bf5c[_0x86eb('0xd')]['customfield_11504']=_0x4f8742[_0x86eb('0x14')];_0xe9bf5c[_0x86eb('0xd')][_0x86eb('0x15')]=_0x4f8742['ip'];var _0x4e2a2c={'host':_0x86eb('0x16'),'port':0x1bb,'path':_0x86eb('0x17'),'method':_0x86eb('0x18'),'timeout':0x4e20,'headers':{'Content-Type':'application/json','Authorization':_0x86eb('0x19')+new Buffer(USERNAME+':'+PASSWORD)[_0x86eb('0x1a')](_0x86eb('0x1b'))}};var _0x2ffcf3=JSON['stringify'](_0xe9bf5c);var _0x5baded=https[_0x86eb('0x1c')](_0x4e2a2c,function(_0x7b36fe){_0x7b36fe[_0x86eb('0x1d')](_0x86eb('0x1e'));var _0x2d2c7c='';_0x7b36fe['on']('data',function(_0x30c55a){_0x2d2c7c+=_0x30c55a;});_0x7b36fe['on']('end',function(){if(_0x1afefb){return _0x1afefb[_0x86eb('0x1f')](_0x7b36fe[_0x86eb('0x20')])[_0x86eb('0x21')](JSON[_0x86eb('0x22')](_0x2d2c7c));}});});_0x5baded['on']('error',function(_0x1d2889){if(_0x1afefb){return _0x1afefb['status'](0x1f4)[_0x86eb('0x21')]({'errors':[{'message':_0x86eb('0x23'),'type':'api.jira'}]});}});_0x5baded[_0x86eb('0x24')](_0x2ffcf3);_0x5baded[_0x86eb('0x25')]();}exports[_0x86eb('0x26')]=openIssue;exports[_0x86eb('0x27')]=function(_0x5a27e2,_0x51554e){_0x5a27e2['body']['ip']=_0x5a27e2[_0x86eb('0x28')][_0x86eb('0x29')]||_0x5a27e2[_0x86eb('0x2a')][_0x86eb('0x2b')]||_0x5a27e2['socket'][_0x86eb('0x2b')]||_0x5a27e2['connection']['socket']['remoteAddress'];return openIssue(_0x5a27e2[_0x86eb('0x2c')],_0x51554e);};
\ No newline at end of file
+var _0xb4ec=['parse','error','Error\x20during\x20license\x20request.\x20Please\x20contact\x20our\x20license\x20team\x20at\x20license@xcally.com\x20with\x20your\x20request','api.jira','write','end','send','body','x-forwarded-for','connection','remoteAddress','socket','bluebird','https','../../config/logger','api','support','3eAmWpBVP0','key','summary','Report','\x20from\x20','description','stringify','issuetype','fields','oldToken','customfield_11502','name','customfield_11504','reason','track.xcallymotion.com','POST','application/json','Basic\x20','toString','base64','request','setEncoding','utf8','data','status','json'];(function(_0x2bee75,_0x1b1b36){var _0x3b9b12=function(_0x3bb699){while(--_0x3bb699){_0x2bee75['push'](_0x2bee75['shift']());}};_0x3b9b12(++_0x1b1b36);}(_0xb4ec,0x8d));var _0xcb4e=function(_0x217cf1,_0x310905){_0x217cf1=_0x217cf1-0x0;var _0x46dd12=_0xb4ec[_0x217cf1];return _0x46dd12;};'use strict';var BPromise=require(_0xcb4e('0x0'));var https=require(_0xcb4e('0x1'));var logger=require(_0xcb4e('0x2'))(_0xcb4e('0x3'));var USERNAME=_0xcb4e('0x4');var PASSWORD=_0xcb4e('0x5');function openIssue(_0x5d662d,_0x1f34dc){var _0x2fc050={'fields':{'project':{'key':_0x5d662d[_0xcb4e('0x6')]||'MOTGUI'},'summary':(_0x5d662d[_0xcb4e('0x7')]||_0xcb4e('0x8'))+_0xcb4e('0x9')+_0x5d662d['ip'],'description':_0x5d662d[_0xcb4e('0xa')]||JSON[_0xcb4e('0xb')](_0x5d662d),'issuetype':{'name':_0x5d662d[_0xcb4e('0xc')]||'Bug'}}};_0x2fc050['fields']['customfield_11500']=_0x5d662d['email'];_0x2fc050[_0xcb4e('0xd')]['customfield_11501']=_0x5d662d[_0xcb4e('0xe')];_0x2fc050[_0xcb4e('0xd')][_0xcb4e('0xf')]=_0x5d662d['newToken'];_0x2fc050['fields']['customfield_11503']=_0x5d662d[_0xcb4e('0x10')];_0x2fc050[_0xcb4e('0xd')][_0xcb4e('0x11')]=_0x5d662d[_0xcb4e('0x12')];_0x2fc050[_0xcb4e('0xd')]['customfield_10102']=_0x5d662d['ip'];var _0x2957e5={'host':_0xcb4e('0x13'),'port':0x1bb,'path':'/rest/api/2/issue','method':_0xcb4e('0x14'),'timeout':0x4e20,'headers':{'Content-Type':_0xcb4e('0x15'),'Authorization':_0xcb4e('0x16')+new Buffer(USERNAME+':'+PASSWORD)[_0xcb4e('0x17')](_0xcb4e('0x18'))}};var _0x3f8b13=JSON['stringify'](_0x2fc050);var _0x5c0c4a=https[_0xcb4e('0x19')](_0x2957e5,function(_0x1ea0dc){_0x1ea0dc[_0xcb4e('0x1a')](_0xcb4e('0x1b'));var _0x161ca0='';_0x1ea0dc['on'](_0xcb4e('0x1c'),function(_0x11c18f){_0x161ca0+=_0x11c18f;});_0x1ea0dc['on']('end',function(){if(_0x1f34dc){return _0x1f34dc[_0xcb4e('0x1d')](_0x1ea0dc['statusCode'])[_0xcb4e('0x1e')](JSON[_0xcb4e('0x1f')](_0x161ca0));}});});_0x5c0c4a['on'](_0xcb4e('0x20'),function(_0x21630d){if(_0x1f34dc){return _0x1f34dc[_0xcb4e('0x1d')](0x1f4)['json']({'errors':[{'message':_0xcb4e('0x21'),'type':_0xcb4e('0x22')}]});}});_0x5c0c4a[_0xcb4e('0x23')](_0x3f8b13);_0x5c0c4a[_0xcb4e('0x24')]();}exports['openIssue']=openIssue;exports[_0xcb4e('0x25')]=function(_0x5a8ea6,_0x5420cc){_0x5a8ea6[_0xcb4e('0x26')]['ip']=_0x5a8ea6['headers'][_0xcb4e('0x27')]||_0x5a8ea6[_0xcb4e('0x28')][_0xcb4e('0x29')]||_0x5a8ea6[_0xcb4e('0x2a')][_0xcb4e('0x29')]||_0x5a8ea6['connection']['socket'][_0xcb4e('0x29')];return openIssue(_0x5a8ea6[_0xcb4e('0x26')],_0x5420cc);};
\ No newline at end of file
index ae52815..71496e1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2750=['fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./jscriptyAnswerReport.controller','get','index','/describe','isAuthenticated','/:id','put','update','delete','destroy','exports','multer','path','connect-timeout','express','Router'];(function(_0x1e6db3,_0x5643ac){var _0x1de886=function(_0x351318){while(--_0x351318){_0x1e6db3['push'](_0x1e6db3['shift']());}};_0x1de886(++_0x5643ac);}(_0x2750,0x13b));var _0x0275=function(_0x5ee660,_0x596009){_0x5ee660=_0x5ee660-0x0;var _0x5e5bf6=_0x2750[_0x5ee660];return _0x5e5bf6;};'use strict';var multer=require(_0x0275('0x0'));var util=require('util');var path=require(_0x0275('0x1'));var timeout=require(_0x0275('0x2'));var express=require(_0x0275('0x3'));var router=express[_0x0275('0x4')]();var fs_extra=require(_0x0275('0x5'));var auth=require(_0x0275('0x6'));var interaction=require(_0x0275('0x7'));var config=require(_0x0275('0x8'));var controller=require(_0x0275('0x9'));router[_0x0275('0xa')]('/',auth['isAuthenticated'](),controller[_0x0275('0xb')]);router[_0x0275('0xa')](_0x0275('0xc'),auth[_0x0275('0xd')](),controller['describe']);router[_0x0275('0xa')](_0x0275('0xe'),auth[_0x0275('0xd')](),controller['show']);router['post']('/',auth[_0x0275('0xd')](),controller['create']);router[_0x0275('0xf')](_0x0275('0xe'),auth[_0x0275('0xd')](),controller[_0x0275('0x10')]);router[_0x0275('0x11')]('/:id',auth[_0x0275('0xd')](),controller[_0x0275('0x12')]);module[_0x0275('0x13')]=router;
\ No newline at end of file
+var _0xbec5=['describe','/:id','post','create','put','update','delete','destroy','exports','multer','util','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../config/environment','./jscriptyAnswerReport.controller','get','index','/describe','isAuthenticated'];(function(_0x4d3dfe,_0xb5c2b3){var _0x22206e=function(_0x7d4c19){while(--_0x7d4c19){_0x4d3dfe['push'](_0x4d3dfe['shift']());}};_0x22206e(++_0xb5c2b3);}(_0xbec5,0xe5));var _0x5bec=function(_0x4991d6,_0x348deb){_0x4991d6=_0x4991d6-0x0;var _0x50faf7=_0xbec5[_0x4991d6];return _0x50faf7;};'use strict';var multer=require(_0x5bec('0x0'));var util=require(_0x5bec('0x1'));var path=require('path');var timeout=require(_0x5bec('0x2'));var express=require(_0x5bec('0x3'));var router=express[_0x5bec('0x4')]();var fs_extra=require(_0x5bec('0x5'));var auth=require(_0x5bec('0x6'));var interaction=require('../../components/interaction/service');var config=require(_0x5bec('0x7'));var controller=require(_0x5bec('0x8'));router[_0x5bec('0x9')]('/',auth['isAuthenticated'](),controller[_0x5bec('0xa')]);router[_0x5bec('0x9')](_0x5bec('0xb'),auth[_0x5bec('0xc')](),controller[_0x5bec('0xd')]);router[_0x5bec('0x9')](_0x5bec('0xe'),auth[_0x5bec('0xc')](),controller['show']);router[_0x5bec('0xf')]('/',auth['isAuthenticated'](),controller[_0x5bec('0x10')]);router[_0x5bec('0x11')](_0x5bec('0xe'),auth['isAuthenticated'](),controller[_0x5bec('0x12')]);router[_0x5bec('0x13')](_0x5bec('0xe'),auth['isAuthenticated'](),controller[_0x5bec('0x14')]);module[_0x5bec('0x15')]=router;
\ No newline at end of file
index f1eaf37..b161f8e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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(_0x509072,_0x9ccd90){_0x509072=_0x509072-0x0;var _0x5630f3=_0x7a54[_0x509072];return _0x5630f3;};'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(_0x16b9ed,_0x56517a){var _0x66b1f8=function(_0x1c883){while(--_0x1c883){_0x16b9ed['push'](_0x16b9ed['shift']());}};_0x66b1f8(++_0x56517a);}(_0x7a54,0x106));var _0x47a5=function(_0x2af5b5,_0x578c58){_0x2af5b5=_0x2af5b5-0x0;var _0x3be819=_0x7a54[_0x2af5b5];return _0x3be819;};'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 1cbe1bc..00933bd 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5a93=['VIRTUAL','filter','options','where','includeAll','include','findAll','rows','catch','show','params','find','create','body','describe','rimraf','fast-json-patch','request-promise','mustache','util','path','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/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','offset','undefined','limit','count','Content-Range','json','apply','reject','save','update','destroy','then','end','error','name','send','map','JscriptyAnswerReport','rawAttributes','fieldName','type','model','query','keys','intersection','fields','attributes','length','hasOwnProperty','order','sort','filters','pick','merge'];(function(_0x360484,_0x2d14e5){var _0x461a10=function(_0x4c47c3){while(--_0x4c47c3){_0x360484['push'](_0x360484['shift']());}};_0x461a10(++_0x2d14e5);}(_0x5a93,0xf6));var _0x35a9=function(_0x657ced,_0x3b3d0){_0x657ced=_0x657ced-0x0;var _0x53d24a=_0x5a93[_0x657ced];return _0x53d24a;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x35a9('0x0'));var zipdir=require('zip-dir');var jsonpatch=require(_0x35a9('0x1'));var rp=require(_0x35a9('0x2'));var moment=require('moment');var BPromise=require('bluebird');var Mustache=require(_0x35a9('0x3'));var util=require(_0x35a9('0x4'));var path=require(_0x35a9('0x5'));var sox=require('sox');var csv=require(_0x35a9('0x6'));var ejs=require(_0x35a9('0x7'));var fs=require('fs');var fs_extra=require(_0x35a9('0x8'));var _=require(_0x35a9('0x9'));var squel=require(_0x35a9('0xa'));var crypto=require(_0x35a9('0xb'));var jsforce=require(_0x35a9('0xc'));var deskjs=require(_0x35a9('0xd'));var toCsv=require(_0x35a9('0x6'));var querystring=require(_0x35a9('0xe'));var Papa=require(_0x35a9('0xf'));var Redis=require(_0x35a9('0x10'));var authService=require(_0x35a9('0x11'));var qs=require(_0x35a9('0x12'));var as=require(_0x35a9('0x13'));var hardwareService=require(_0x35a9('0x14'));var logger=require(_0x35a9('0x15'))('api');var utils=require(_0x35a9('0x16'));var config=require(_0x35a9('0x17'));var licenseUtil=require(_0x35a9('0x18'));var db=require(_0x35a9('0x19'))['db'];function respondWithStatusCode(_0x49fe9f,_0x18322c){_0x18322c=_0x18322c||0xcc;return function(_0x1bd345){if(_0x1bd345){return _0x49fe9f[_0x35a9('0x1a')](_0x18322c);}return _0x49fe9f[_0x35a9('0x1b')](_0x18322c)['end']();};}function respondWithResult(_0x112b5e,_0x2e3faa){_0x2e3faa=_0x2e3faa||0xc8;return function(_0x76f27c){if(_0x76f27c){return _0x112b5e[_0x35a9('0x1b')](_0x2e3faa)['json'](_0x76f27c);}};}function respondWithFilteredResult(_0xb4c847,_0x47f65b){return function(_0x21b9f1){if(_0x21b9f1){var _0x5b0f9b=typeof _0x47f65b[_0x35a9('0x1c')]===_0x35a9('0x1d')&&typeof _0x47f65b[_0x35a9('0x1e')]===_0x35a9('0x1d');var _0x2a4786=_0x21b9f1[_0x35a9('0x1f')];var _0x56f31f=_0x5b0f9b?0x0:_0x47f65b[_0x35a9('0x1c')];var _0x4490d5=_0x5b0f9b?_0x21b9f1[_0x35a9('0x1f')]:_0x47f65b[_0x35a9('0x1c')]+_0x47f65b[_0x35a9('0x1e')];var _0x545462;if(_0x4490d5>=_0x2a4786){_0x4490d5=_0x2a4786;_0x545462=0xc8;}else{_0x545462=0xce;}_0xb4c847[_0x35a9('0x1b')](_0x545462);return _0xb4c847['set'](_0x35a9('0x20'),_0x56f31f+'-'+_0x4490d5+'/'+_0x2a4786)[_0x35a9('0x21')](_0x21b9f1);}return null;};}function patchUpdates(_0xb11616){return function(_0x2905a2){try{jsonpatch[_0x35a9('0x22')](_0x2905a2,_0xb11616,!![]);}catch(_0x6a7a9f){return BPromise[_0x35a9('0x23')](_0x6a7a9f);}return _0x2905a2[_0x35a9('0x24')]();};}function saveUpdates(_0x27032e,_0x5eb97d){return function(_0x32e07c){if(_0x32e07c){return _0x32e07c[_0x35a9('0x25')](_0x27032e)['then'](function(_0x59222a){return _0x59222a;});}return null;};}function removeEntity(_0x133bdf,_0x1dd1ab){return function(_0x1f9935){if(_0x1f9935){return _0x1f9935[_0x35a9('0x26')]()[_0x35a9('0x27')](function(){_0x133bdf['status'](0xcc)[_0x35a9('0x28')]();});}};}function handleEntityNotFound(_0xc31cd1,_0x98a89b){return function(_0x180472){if(!_0x180472){_0xc31cd1[_0x35a9('0x1a')](0x194);}return _0x180472;};}function handleError(_0x5ba62a,_0x484212){_0x484212=_0x484212||0x1f4;return function(_0x5dfc9f){logger[_0x35a9('0x29')](_0x5dfc9f['stack']);if(_0x5dfc9f[_0x35a9('0x2a')]){delete _0x5dfc9f[_0x35a9('0x2a')];}_0x5ba62a['status'](_0x484212)[_0x35a9('0x2b')](_0x5dfc9f);};}exports['index']=function(_0x1fc384,_0x42b5bd){var _0x59ae09={},_0x534455={},_0x16ee46={'count':0x0,'rows':[]};var _0x207444=_[_0x35a9('0x2c')](db[_0x35a9('0x2d')][_0x35a9('0x2e')],function(_0x15ac13){return{'name':_0x15ac13[_0x35a9('0x2f')],'type':_0x15ac13[_0x35a9('0x30')]['key']};});_0x534455[_0x35a9('0x31')]=_[_0x35a9('0x2c')](_0x207444,_0x35a9('0x2a'));_0x534455[_0x35a9('0x32')]=_[_0x35a9('0x33')](_0x1fc384[_0x35a9('0x32')]);_0x534455['filters']=_[_0x35a9('0x34')](_0x534455[_0x35a9('0x31')],_0x534455[_0x35a9('0x32')]);_0x59ae09['attributes']=_[_0x35a9('0x34')](_0x534455['model'],qs[_0x35a9('0x35')](_0x1fc384[_0x35a9('0x32')][_0x35a9('0x35')]));_0x59ae09[_0x35a9('0x36')]=_0x59ae09[_0x35a9('0x36')][_0x35a9('0x37')]?_0x59ae09['attributes']:_0x534455['model'];if(!_0x1fc384[_0x35a9('0x32')][_0x35a9('0x38')]('nolimit')){_0x59ae09['limit']=qs[_0x35a9('0x1e')](_0x1fc384['query']['limit']);_0x59ae09['offset']=qs[_0x35a9('0x1c')](_0x1fc384[_0x35a9('0x32')]['offset']);}_0x59ae09[_0x35a9('0x39')]=qs[_0x35a9('0x3a')](_0x1fc384[_0x35a9('0x32')][_0x35a9('0x3a')]);_0x59ae09['where']=qs[_0x35a9('0x3b')](_[_0x35a9('0x3c')](_0x1fc384[_0x35a9('0x32')],_0x534455[_0x35a9('0x3b')]),_0x207444);if(_0x1fc384[_0x35a9('0x32')]['filter']){_0x59ae09['where']=_[_0x35a9('0x3d')](_0x59ae09['where'],{'$or':_[_0x35a9('0x2c')](_0x207444,function(_0x22cef6){if(_0x22cef6[_0x35a9('0x30')]!==_0x35a9('0x3e')){var _0x2ef6b7={};_0x2ef6b7[_0x22cef6['name']]={'$like':'%'+_0x1fc384[_0x35a9('0x32')][_0x35a9('0x3f')]+'%'};return _0x2ef6b7;}})});}_0x59ae09=_['merge']({},_0x59ae09,_0x1fc384[_0x35a9('0x40')]);var _0x43a401={'where':_0x59ae09[_0x35a9('0x41')]};return db['JscriptyAnswerReport'][_0x35a9('0x1f')](_0x43a401)[_0x35a9('0x27')](function(_0x5c11ec){_0x16ee46[_0x35a9('0x1f')]=_0x5c11ec;if(_0x1fc384[_0x35a9('0x32')][_0x35a9('0x42')]){_0x59ae09[_0x35a9('0x43')]=[{'all':!![]}];}return db['JscriptyAnswerReport'][_0x35a9('0x44')](_0x59ae09);})['then'](function(_0x64c900){_0x16ee46[_0x35a9('0x45')]=_0x64c900;return _0x16ee46;})[_0x35a9('0x27')](respondWithFilteredResult(_0x42b5bd,_0x59ae09))[_0x35a9('0x46')](handleError(_0x42b5bd,null));};exports[_0x35a9('0x47')]=function(_0x12a376,_0x3f721f){var _0x34a560={'raw':!![],'where':{'id':_0x12a376[_0x35a9('0x48')]['id']}},_0x57f10d={};_0x57f10d[_0x35a9('0x31')]=_['keys'](db[_0x35a9('0x2d')][_0x35a9('0x2e')]);_0x57f10d[_0x35a9('0x32')]=_[_0x35a9('0x33')](_0x12a376[_0x35a9('0x32')]);_0x57f10d[_0x35a9('0x3b')]=_[_0x35a9('0x34')](_0x57f10d[_0x35a9('0x31')],_0x57f10d[_0x35a9('0x32')]);_0x34a560[_0x35a9('0x36')]=_[_0x35a9('0x34')](_0x57f10d[_0x35a9('0x31')],qs[_0x35a9('0x35')](_0x12a376[_0x35a9('0x32')][_0x35a9('0x35')]));_0x34a560[_0x35a9('0x36')]=_0x34a560[_0x35a9('0x36')][_0x35a9('0x37')]?_0x34a560[_0x35a9('0x36')]:_0x57f10d[_0x35a9('0x31')];if(_0x12a376[_0x35a9('0x32')]['includeAll']){_0x34a560[_0x35a9('0x43')]=[{'all':!![]}];}_0x34a560=_[_0x35a9('0x3d')]({},_0x34a560,_0x12a376['options']);return db[_0x35a9('0x2d')][_0x35a9('0x49')](_0x34a560)[_0x35a9('0x27')](handleEntityNotFound(_0x3f721f,null))[_0x35a9('0x27')](respondWithResult(_0x3f721f,null))[_0x35a9('0x46')](handleError(_0x3f721f,null));};exports[_0x35a9('0x4a')]=function(_0xa7dd8c,_0x278928){return db[_0x35a9('0x2d')][_0x35a9('0x4a')](_0xa7dd8c['body'],{})[_0x35a9('0x27')](respondWithResult(_0x278928,0xc9))[_0x35a9('0x46')](handleError(_0x278928,null));};exports[_0x35a9('0x25')]=function(_0x36e412,_0x484f8e){if(_0x36e412['body']['id']){delete _0x36e412[_0x35a9('0x4b')]['id'];}return db[_0x35a9('0x2d')][_0x35a9('0x49')]({'where':{'id':_0x36e412[_0x35a9('0x48')]['id']}})['then'](handleEntityNotFound(_0x484f8e,null))[_0x35a9('0x27')](saveUpdates(_0x36e412[_0x35a9('0x4b')],null))['then'](respondWithResult(_0x484f8e,null))[_0x35a9('0x46')](handleError(_0x484f8e,null));};exports[_0x35a9('0x26')]=function(_0x1ddcfb,_0xc6db73){return db[_0x35a9('0x2d')]['find']({'where':{'id':_0x1ddcfb[_0x35a9('0x48')]['id']}})[_0x35a9('0x27')](handleEntityNotFound(_0xc6db73,null))['then'](removeEntity(_0xc6db73,null))[_0x35a9('0x46')](handleError(_0xc6db73,null));};exports[_0x35a9('0x4c')]=function(_0x2cb891,_0x301a8c){return db[_0x35a9('0x2d')][_0x35a9('0x4c')]()[_0x35a9('0x27')](respondWithResult(_0x301a8c,null))[_0x35a9('0x46')](handleError(_0x301a8c,null));};
\ No newline at end of file
+var _0x41ec=['merge','VIRTUAL','options','includeAll','rows','catch','show','params','keys','JscriptyAnswerReport','include','create','body','find','describe','rimraf','fast-json-patch','request-promise','bluebird','mustache','util','path','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','api','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','undefined','limit','count','offset','set','Content-Range','json','apply','save','update','then','destroy','error','stack','name','send','map','fieldName','type','key','model','query','filters','intersection','fields','attributes','length','hasOwnProperty','order','sort','pick','filter','where'];(function(_0x43cc24,_0x40ee48){var _0xfc2ffc=function(_0x4f21f1){while(--_0x4f21f1){_0x43cc24['push'](_0x43cc24['shift']());}};_0xfc2ffc(++_0x40ee48);}(_0x41ec,0x143));var _0xc41e=function(_0x1c570f,_0x25e9b9){_0x1c570f=_0x1c570f-0x0;var _0xc3a9fc=_0x41ec[_0x1c570f];return _0xc3a9fc;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0xc41e('0x0'));var zipdir=require('zip-dir');var jsonpatch=require(_0xc41e('0x1'));var rp=require(_0xc41e('0x2'));var moment=require('moment');var BPromise=require(_0xc41e('0x3'));var Mustache=require(_0xc41e('0x4'));var util=require(_0xc41e('0x5'));var path=require(_0xc41e('0x6'));var sox=require(_0xc41e('0x7'));var csv=require(_0xc41e('0x8'));var ejs=require(_0xc41e('0x9'));var fs=require('fs');var fs_extra=require(_0xc41e('0xa'));var _=require(_0xc41e('0xb'));var squel=require(_0xc41e('0xc'));var crypto=require(_0xc41e('0xd'));var jsforce=require('jsforce');var deskjs=require(_0xc41e('0xe'));var toCsv=require(_0xc41e('0x8'));var querystring=require(_0xc41e('0xf'));var Papa=require(_0xc41e('0x10'));var Redis=require(_0xc41e('0x11'));var authService=require(_0xc41e('0x12'));var qs=require(_0xc41e('0x13'));var as=require(_0xc41e('0x14'));var hardwareService=require(_0xc41e('0x15'));var logger=require(_0xc41e('0x16'))(_0xc41e('0x17'));var utils=require('../../config/utils');var config=require(_0xc41e('0x18'));var licenseUtil=require(_0xc41e('0x19'));var db=require(_0xc41e('0x1a'))['db'];function respondWithStatusCode(_0x3d7280,_0x11a117){_0x11a117=_0x11a117||0xcc;return function(_0x433ca9){if(_0x433ca9){return _0x3d7280[_0xc41e('0x1b')](_0x11a117);}return _0x3d7280[_0xc41e('0x1c')](_0x11a117)['end']();};}function respondWithResult(_0x3b3900,_0x6b614a){_0x6b614a=_0x6b614a||0xc8;return function(_0xcd58a0){if(_0xcd58a0){return _0x3b3900[_0xc41e('0x1c')](_0x6b614a)['json'](_0xcd58a0);}};}function respondWithFilteredResult(_0x5c705e,_0x4f960d){return function(_0x28eb53){if(_0x28eb53){var _0x4293a5=typeof _0x4f960d['offset']===_0xc41e('0x1d')&&typeof _0x4f960d[_0xc41e('0x1e')]==='undefined';var _0x4e7aa3=_0x28eb53[_0xc41e('0x1f')];var _0x5c0517=_0x4293a5?0x0:_0x4f960d[_0xc41e('0x20')];var _0x23c9b6=_0x4293a5?_0x28eb53['count']:_0x4f960d[_0xc41e('0x20')]+_0x4f960d[_0xc41e('0x1e')];var _0xee0f01;if(_0x23c9b6>=_0x4e7aa3){_0x23c9b6=_0x4e7aa3;_0xee0f01=0xc8;}else{_0xee0f01=0xce;}_0x5c705e[_0xc41e('0x1c')](_0xee0f01);return _0x5c705e[_0xc41e('0x21')](_0xc41e('0x22'),_0x5c0517+'-'+_0x23c9b6+'/'+_0x4e7aa3)[_0xc41e('0x23')](_0x28eb53);}return null;};}function patchUpdates(_0x57e0c4){return function(_0x239c25){try{jsonpatch[_0xc41e('0x24')](_0x239c25,_0x57e0c4,!![]);}catch(_0x3f26d5){return BPromise['reject'](_0x3f26d5);}return _0x239c25[_0xc41e('0x25')]();};}function saveUpdates(_0x408d27,_0x814a72){return function(_0x490cc3){if(_0x490cc3){return _0x490cc3[_0xc41e('0x26')](_0x408d27)[_0xc41e('0x27')](function(_0x602bd7){return _0x602bd7;});}return null;};}function removeEntity(_0x4adaad,_0x5a06dd){return function(_0x4c20b1){if(_0x4c20b1){return _0x4c20b1[_0xc41e('0x28')]()[_0xc41e('0x27')](function(){_0x4adaad['status'](0xcc)['end']();});}};}function handleEntityNotFound(_0x5a3e0d,_0x1c33a6){return function(_0x1ad4c7){if(!_0x1ad4c7){_0x5a3e0d[_0xc41e('0x1b')](0x194);}return _0x1ad4c7;};}function handleError(_0x467672,_0x1c6a2a){_0x1c6a2a=_0x1c6a2a||0x1f4;return function(_0x580b9e){logger[_0xc41e('0x29')](_0x580b9e[_0xc41e('0x2a')]);if(_0x580b9e[_0xc41e('0x2b')]){delete _0x580b9e['name'];}_0x467672[_0xc41e('0x1c')](_0x1c6a2a)[_0xc41e('0x2c')](_0x580b9e);};}exports['index']=function(_0x25b319,_0x12536e){var _0x5c2c62={},_0xcb3a15={},_0x2fa98a={'count':0x0,'rows':[]};var _0x17246e=_[_0xc41e('0x2d')](db['JscriptyAnswerReport']['rawAttributes'],function(_0x541ac4){return{'name':_0x541ac4[_0xc41e('0x2e')],'type':_0x541ac4[_0xc41e('0x2f')][_0xc41e('0x30')]};});_0xcb3a15[_0xc41e('0x31')]=_[_0xc41e('0x2d')](_0x17246e,_0xc41e('0x2b'));_0xcb3a15[_0xc41e('0x32')]=_['keys'](_0x25b319[_0xc41e('0x32')]);_0xcb3a15[_0xc41e('0x33')]=_[_0xc41e('0x34')](_0xcb3a15['model'],_0xcb3a15[_0xc41e('0x32')]);_0x5c2c62['attributes']=_[_0xc41e('0x34')](_0xcb3a15[_0xc41e('0x31')],qs[_0xc41e('0x35')](_0x25b319[_0xc41e('0x32')]['fields']));_0x5c2c62['attributes']=_0x5c2c62[_0xc41e('0x36')][_0xc41e('0x37')]?_0x5c2c62[_0xc41e('0x36')]:_0xcb3a15[_0xc41e('0x31')];if(!_0x25b319[_0xc41e('0x32')][_0xc41e('0x38')]('nolimit')){_0x5c2c62[_0xc41e('0x1e')]=qs[_0xc41e('0x1e')](_0x25b319[_0xc41e('0x32')]['limit']);_0x5c2c62[_0xc41e('0x20')]=qs[_0xc41e('0x20')](_0x25b319['query'][_0xc41e('0x20')]);}_0x5c2c62[_0xc41e('0x39')]=qs[_0xc41e('0x3a')](_0x25b319[_0xc41e('0x32')][_0xc41e('0x3a')]);_0x5c2c62['where']=qs['filters'](_[_0xc41e('0x3b')](_0x25b319[_0xc41e('0x32')],_0xcb3a15[_0xc41e('0x33')]),_0x17246e);if(_0x25b319[_0xc41e('0x32')][_0xc41e('0x3c')]){_0x5c2c62[_0xc41e('0x3d')]=_[_0xc41e('0x3e')](_0x5c2c62[_0xc41e('0x3d')],{'$or':_[_0xc41e('0x2d')](_0x17246e,function(_0x4de59a){if(_0x4de59a['type']!==_0xc41e('0x3f')){var _0xfd6ff6={};_0xfd6ff6[_0x4de59a[_0xc41e('0x2b')]]={'$like':'%'+_0x25b319[_0xc41e('0x32')][_0xc41e('0x3c')]+'%'};return _0xfd6ff6;}})});}_0x5c2c62=_[_0xc41e('0x3e')]({},_0x5c2c62,_0x25b319[_0xc41e('0x40')]);var _0x150f30={'where':_0x5c2c62['where']};return db['JscriptyAnswerReport'][_0xc41e('0x1f')](_0x150f30)[_0xc41e('0x27')](function(_0x10cfed){_0x2fa98a['count']=_0x10cfed;if(_0x25b319['query'][_0xc41e('0x41')]){_0x5c2c62['include']=[{'all':!![]}];}return db['JscriptyAnswerReport']['findAll'](_0x5c2c62);})['then'](function(_0x3c30e2){_0x2fa98a[_0xc41e('0x42')]=_0x3c30e2;return _0x2fa98a;})[_0xc41e('0x27')](respondWithFilteredResult(_0x12536e,_0x5c2c62))[_0xc41e('0x43')](handleError(_0x12536e,null));};exports[_0xc41e('0x44')]=function(_0x206aa1,_0x4bb1f6){var _0x28d15d={'raw':!![],'where':{'id':_0x206aa1[_0xc41e('0x45')]['id']}},_0x1a3e67={};_0x1a3e67[_0xc41e('0x31')]=_[_0xc41e('0x46')](db[_0xc41e('0x47')]['rawAttributes']);_0x1a3e67[_0xc41e('0x32')]=_[_0xc41e('0x46')](_0x206aa1['query']);_0x1a3e67[_0xc41e('0x33')]=_[_0xc41e('0x34')](_0x1a3e67['model'],_0x1a3e67[_0xc41e('0x32')]);_0x28d15d['attributes']=_[_0xc41e('0x34')](_0x1a3e67[_0xc41e('0x31')],qs[_0xc41e('0x35')](_0x206aa1['query'][_0xc41e('0x35')]));_0x28d15d[_0xc41e('0x36')]=_0x28d15d['attributes']['length']?_0x28d15d['attributes']:_0x1a3e67['model'];if(_0x206aa1[_0xc41e('0x32')]['includeAll']){_0x28d15d[_0xc41e('0x48')]=[{'all':!![]}];}_0x28d15d=_['merge']({},_0x28d15d,_0x206aa1['options']);return db[_0xc41e('0x47')]['find'](_0x28d15d)[_0xc41e('0x27')](handleEntityNotFound(_0x4bb1f6,null))[_0xc41e('0x27')](respondWithResult(_0x4bb1f6,null))[_0xc41e('0x43')](handleError(_0x4bb1f6,null));};exports[_0xc41e('0x49')]=function(_0x46aef6,_0x31b393){return db[_0xc41e('0x47')][_0xc41e('0x49')](_0x46aef6[_0xc41e('0x4a')],{})[_0xc41e('0x27')](respondWithResult(_0x31b393,0xc9))[_0xc41e('0x43')](handleError(_0x31b393,null));};exports['update']=function(_0x4b67d4,_0x1cdf49){if(_0x4b67d4[_0xc41e('0x4a')]['id']){delete _0x4b67d4[_0xc41e('0x4a')]['id'];}return db['JscriptyAnswerReport'][_0xc41e('0x4b')]({'where':{'id':_0x4b67d4[_0xc41e('0x45')]['id']}})[_0xc41e('0x27')](handleEntityNotFound(_0x1cdf49,null))[_0xc41e('0x27')](saveUpdates(_0x4b67d4[_0xc41e('0x4a')],null))[_0xc41e('0x27')](respondWithResult(_0x1cdf49,null))[_0xc41e('0x43')](handleError(_0x1cdf49,null));};exports['destroy']=function(_0x3c867a,_0x317eba){return db['JscriptyAnswerReport']['find']({'where':{'id':_0x3c867a[_0xc41e('0x45')]['id']}})[_0xc41e('0x27')](handleEntityNotFound(_0x317eba,null))[_0xc41e('0x27')](removeEntity(_0x317eba,null))[_0xc41e('0x43')](handleError(_0x317eba,null));};exports[_0xc41e('0x4c')]=function(_0x53a799,_0x576831){return db[_0xc41e('0x47')]['describe']()[_0xc41e('0x27')](respondWithResult(_0x576831,null))['catch'](handleError(_0x576831,null));};
\ No newline at end of file
index f10b378..a2c72c8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd7ae=['rimraf','./jscriptyAnswerReport.attributes','JscriptyAnswerReport','report_jscripty_answers','lodash','../../config/logger','api','bluebird'];(function(_0x57cc40,_0x3bacf8){var _0x43c6fa=function(_0x244187){while(--_0x244187){_0x57cc40['push'](_0x57cc40['shift']());}};_0x43c6fa(++_0x3bacf8);}(_0xd7ae,0xa4));var _0xed7a=function(_0x57b54c,_0x54ce0d){_0x57b54c=_0x57b54c-0x0;var _0x59cc19=_0xd7ae[_0x57b54c];return _0x59cc19;};'use strict';var _=require(_0xed7a('0x0'));var util=require('util');var logger=require(_0xed7a('0x1'))(_0xed7a('0x2'));var moment=require('moment');var BPromise=require(_0xed7a('0x3'));var rp=require('request-promise');var fs=require('fs');var path=require('path');var rimraf=require(_0xed7a('0x4'));var config=require('../../config/environment');var attributes=require(_0xed7a('0x5'));module['exports']=function(_0x5cb851,_0x37d6f1){return _0x5cb851['define'](_0xed7a('0x6'),attributes,{'tableName':_0xed7a('0x7'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x223b=['bluebird','request-promise','path','../../config/environment','exports','define','JscriptyAnswerReport','report_jscripty_answers','lodash','../../config/logger'];(function(_0x29bc4a,_0x9a63f1){var _0x251386=function(_0x5f0521){while(--_0x5f0521){_0x29bc4a['push'](_0x29bc4a['shift']());}};_0x251386(++_0x9a63f1);}(_0x223b,0x94));var _0xb223=function(_0x178c13,_0xfa0dc5){_0x178c13=_0x178c13-0x0;var _0x45fd90=_0x223b[_0x178c13];return _0x45fd90;};'use strict';var _=require(_0xb223('0x0'));var util=require('util');var logger=require(_0xb223('0x1'))('api');var moment=require('moment');var BPromise=require(_0xb223('0x2'));var rp=require(_0xb223('0x3'));var fs=require('fs');var path=require(_0xb223('0x4'));var rimraf=require('rimraf');var config=require(_0xb223('0x5'));var attributes=require('./jscriptyAnswerReport.attributes');module[_0xb223('0x6')]=function(_0x59733e,_0x133957){return _0x59733e[_0xb223('0x7')](_0xb223('0x8'),attributes,{'tableName':_0xb223('0x9'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index b599f2a..58db251 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x78a5=['JscriptyAnswerReport,\x20%s,\x20%s,\x20%s','error','code','message','result','catch','util','moment','bluebird','ioredis','../../mysqldb','../../config/logger','../../config/environment','jayson/promise','http','request','then','info','JscriptyAnswerReport,\x20%s,\x20%s','request\x20sent','debug'];(function(_0x279b5f,_0x24b28a){var _0xa96077=function(_0xb7f3d9){while(--_0xb7f3d9){_0x279b5f['push'](_0x279b5f['shift']());}};_0xa96077(++_0x24b28a);}(_0x78a5,0x16b));var _0x578a=function(_0x237546,_0xa81b26){_0x237546=_0x237546-0x0;var _0x233e29=_0x78a5[_0x237546];return _0x233e29;};'use strict';var _=require('lodash');var util=require(_0x578a('0x0'));var moment=require(_0x578a('0x1'));var BPromise=require(_0x578a('0x2'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x578a('0x3'));var db=require(_0x578a('0x4'))['db'];var utils=require('../../config/utils');var logger=require(_0x578a('0x5'))('rpc');var config=require(_0x578a('0x6'));var jayson=require(_0x578a('0x7'));var client=jayson['client'][_0x578a('0x8')]({'port':0x232a});function respondWithRpcPromise(_0x5b63c3,_0x405af8,_0x1fee8a){return new BPromise(function(_0xae73c0,_0x33e3b8){return client[_0x578a('0x9')](_0x5b63c3,_0x1fee8a)[_0x578a('0xa')](function(_0x7cb564){logger[_0x578a('0xb')](_0x578a('0xc'),_0x405af8,_0x578a('0xd'));logger[_0x578a('0xe')](_0x578a('0xf'),_0x405af8,_0x578a('0xd'),JSON['stringify'](_0x7cb564));if(_0x7cb564[_0x578a('0x10')]){if(_0x7cb564[_0x578a('0x10')][_0x578a('0x11')]===0x1f4){logger['error'](_0x578a('0xc'),_0x405af8,_0x7cb564[_0x578a('0x10')][_0x578a('0x12')]);return _0x33e3b8(_0x7cb564[_0x578a('0x10')]['message']);}logger[_0x578a('0x10')](_0x578a('0xc'),_0x405af8,_0x7cb564[_0x578a('0x10')][_0x578a('0x12')]);return _0xae73c0(_0x7cb564[_0x578a('0x10')][_0x578a('0x12')]);}else{logger[_0x578a('0xb')](_0x578a('0xc'),_0x405af8,_0x578a('0xd'));_0xae73c0(_0x7cb564[_0x578a('0x13')][_0x578a('0x12')]);}})[_0x578a('0x14')](function(_0x38d160){logger[_0x578a('0x10')]('JscriptyAnswerReport,\x20%s,\x20%s',_0x405af8,_0x38d160);_0x33e3b8(_0x38d160);});});}
\ No newline at end of file
+var _0xc20c=['info','JscriptyAnswerReport,\x20%s,\x20%s','request\x20sent','JscriptyAnswerReport,\x20%s,\x20%s,\x20%s','stringify','error','message','result','catch','util','moment','bluebird','randomstring','../../mysqldb','../../config/utils','../../config/logger','rpc','jayson/promise','client','http','request','then'];(function(_0x259613,_0x21a6a5){var _0x381af3=function(_0x1e3860){while(--_0x1e3860){_0x259613['push'](_0x259613['shift']());}};_0x381af3(++_0x21a6a5);}(_0xc20c,0xa3));var _0xcc20=function(_0x40a825,_0x3bac79){_0x40a825=_0x40a825-0x0;var _0x273a54=_0xc20c[_0x40a825];return _0x273a54;};'use strict';var _=require('lodash');var util=require(_0xcc20('0x0'));var moment=require(_0xcc20('0x1'));var BPromise=require(_0xcc20('0x2'));var rs=require(_0xcc20('0x3'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0xcc20('0x4'))['db'];var utils=require(_0xcc20('0x5'));var logger=require(_0xcc20('0x6'))(_0xcc20('0x7'));var config=require('../../config/environment');var jayson=require(_0xcc20('0x8'));var client=jayson[_0xcc20('0x9')][_0xcc20('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x4db63c,_0x4b5dcb,_0xc80515){return new BPromise(function(_0x170db1,_0x1f5df5){return client[_0xcc20('0xb')](_0x4db63c,_0xc80515)[_0xcc20('0xc')](function(_0x41477e){logger[_0xcc20('0xd')](_0xcc20('0xe'),_0x4b5dcb,_0xcc20('0xf'));logger['debug'](_0xcc20('0x10'),_0x4b5dcb,_0xcc20('0xf'),JSON[_0xcc20('0x11')](_0x41477e));if(_0x41477e[_0xcc20('0x12')]){if(_0x41477e[_0xcc20('0x12')]['code']===0x1f4){logger[_0xcc20('0x12')](_0xcc20('0xe'),_0x4b5dcb,_0x41477e[_0xcc20('0x12')][_0xcc20('0x13')]);return _0x1f5df5(_0x41477e['error'][_0xcc20('0x13')]);}logger[_0xcc20('0x12')](_0xcc20('0xe'),_0x4b5dcb,_0x41477e[_0xcc20('0x12')][_0xcc20('0x13')]);return _0x170db1(_0x41477e['error'][_0xcc20('0x13')]);}else{logger[_0xcc20('0xd')](_0xcc20('0xe'),_0x4b5dcb,'request\x20sent');_0x170db1(_0x41477e[_0xcc20('0x14')][_0xcc20('0x13')]);}})[_0xcc20('0x15')](function(_0x11bc2f){logger[_0xcc20('0x12')]('JscriptyAnswerReport,\x20%s,\x20%s',_0x4b5dcb,_0x11bc2f);_0x1f5df5(_0x11bc2f);});});}
\ No newline at end of file
index 9376a4b..8dbf3a8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5091=['../../config/environment','./jscriptyProject.controller','get','isAuthenticated','index','show','getSessions','getAnswers','/:id/summary','30s','getSummary','create','post','/:id/clone','put','/:id','update','delete','exports','multer','util','path','connect-timeout','express','fs-extra','../../components/auth/service','../../components/interaction/service'];(function(_0x34473f,_0x2b9c5c){var _0x25cf6f=function(_0x4214a2){while(--_0x4214a2){_0x34473f['push'](_0x34473f['shift']());}};_0x25cf6f(++_0x2b9c5c);}(_0x5091,0xeb));var _0x1509=function(_0x20a584,_0xe384a5){_0x20a584=_0x20a584-0x0;var _0x4b41a8=_0x5091[_0x20a584];return _0x4b41a8;};'use strict';var multer=require(_0x1509('0x0'));var util=require(_0x1509('0x1'));var path=require(_0x1509('0x2'));var timeout=require(_0x1509('0x3'));var express=require(_0x1509('0x4'));var router=express['Router']();var fs_extra=require(_0x1509('0x5'));var auth=require(_0x1509('0x6'));var interaction=require(_0x1509('0x7'));var config=require(_0x1509('0x8'));var controller=require(_0x1509('0x9'));router[_0x1509('0xa')]('/',auth[_0x1509('0xb')](),controller[_0x1509('0xc')]);router[_0x1509('0xa')]('/:id',auth['isAuthenticated'](),controller[_0x1509('0xd')]);router[_0x1509('0xa')]('/:id/sessions',auth['isAuthenticated'](),controller[_0x1509('0xe')]);router[_0x1509('0xa')]('/:id/answers',auth[_0x1509('0xb')](),controller[_0x1509('0xf')]);router[_0x1509('0xa')](_0x1509('0x10'),auth[_0x1509('0xb')](),timeout(_0x1509('0x11')),controller[_0x1509('0x12')]);router['post']('/',auth[_0x1509('0xb')](),controller[_0x1509('0x13')]);router[_0x1509('0x14')](_0x1509('0x15'),auth[_0x1509('0xb')](),controller['clone']);router[_0x1509('0x16')](_0x1509('0x17'),auth['isAuthenticated'](),controller[_0x1509('0x18')]);router[_0x1509('0x19')](_0x1509('0x17'),auth[_0x1509('0xb')](),controller['destroy']);module[_0x1509('0x1a')]=router;
\ No newline at end of file
+var _0x7276=['isAuthenticated','index','/:id','/:id/sessions','getSessions','/:id/answers','getAnswers','30s','getSummary','post','create','clone','put','update','delete','destroy','exports','multer','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','get'];(function(_0x678e33,_0x3dda98){var _0x133cdb=function(_0x430700){while(--_0x430700){_0x678e33['push'](_0x678e33['shift']());}};_0x133cdb(++_0x3dda98);}(_0x7276,0x10d));var _0x6727=function(_0x1886d0,_0x36d4b4){_0x1886d0=_0x1886d0-0x0;var _0x152689=_0x7276[_0x1886d0];return _0x152689;};'use strict';var multer=require(_0x6727('0x0'));var util=require(_0x6727('0x1'));var path=require(_0x6727('0x2'));var timeout=require(_0x6727('0x3'));var express=require(_0x6727('0x4'));var router=express[_0x6727('0x5')]();var fs_extra=require(_0x6727('0x6'));var auth=require(_0x6727('0x7'));var interaction=require(_0x6727('0x8'));var config=require(_0x6727('0x9'));var controller=require('./jscriptyProject.controller');router[_0x6727('0xa')]('/',auth[_0x6727('0xb')](),controller[_0x6727('0xc')]);router[_0x6727('0xa')](_0x6727('0xd'),auth['isAuthenticated'](),controller['show']);router[_0x6727('0xa')](_0x6727('0xe'),auth['isAuthenticated'](),controller[_0x6727('0xf')]);router[_0x6727('0xa')](_0x6727('0x10'),auth[_0x6727('0xb')](),controller[_0x6727('0x11')]);router['get']('/:id/summary',auth[_0x6727('0xb')](),timeout(_0x6727('0x12')),controller[_0x6727('0x13')]);router[_0x6727('0x14')]('/',auth[_0x6727('0xb')](),controller[_0x6727('0x15')]);router[_0x6727('0x14')]('/:id/clone',auth[_0x6727('0xb')](),controller[_0x6727('0x16')]);router[_0x6727('0x17')]('/:id',auth['isAuthenticated'](),controller[_0x6727('0x18')]);router[_0x6727('0x19')](_0x6727('0xd'),auth[_0x6727('0xb')](),controller[_0x6727('0x1a')]);module[_0x6727('0x1b')]=router;
\ No newline at end of file
index 121c3ce..07ca6bd 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xead5=['setDataValue','isString','{\x22name\x22:\x22%s\x22,\x22description\x22:\x22%s\x22,\x22pages\x22:[]}','getDataValue','description','BOOLEAN','sequelize','lodash','exports','STRING','name','TEXT','long','isObjectLike'];(function(_0x4caf4f,_0x1f9d37){var _0xf64dd9=function(_0x37507){while(--_0x37507){_0x4caf4f['push'](_0x4caf4f['shift']());}};_0xf64dd9(++_0x1f9d37);}(_0xead5,0x68));var _0x5ead=function(_0x48326a,_0x8cfa0c){_0x48326a=_0x48326a-0x0;var _0x466709=_0xead5[_0x48326a];return _0x466709;};'use strict';var Sequelize=require(_0x5ead('0x0'));var _=require(_0x5ead('0x1'));var util=require('util');module[_0x5ead('0x2')]={'name':{'type':Sequelize[_0x5ead('0x3')],'unique':_0x5ead('0x4')},'description':{'type':Sequelize[_0x5ead('0x3')]},'formData':{'type':Sequelize[_0x5ead('0x5')](_0x5ead('0x6')),'set':function(_0x53045e){if(_[_0x5ead('0x7')](_0x53045e)){this[_0x5ead('0x8')]('formData',JSON['stringify'](_0x53045e));}else if(_[_0x5ead('0x9')](_0x53045e)){this['setDataValue']('formData',_0x53045e);}else{this[_0x5ead('0x8')]('formData',util['format'](_0x5ead('0xa'),this[_0x5ead('0xb')](_0x5ead('0x4'))||'',this[_0x5ead('0xb')](_0x5ead('0xc'))||''));}}},'enableUncompleteSave':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]},'sendUnpauseOnSubmit':{'type':Sequelize[_0x5ead('0xd')],'defaultValue':![]}};
\ No newline at end of file
+var _0xe83b=['long','isObjectLike','formData','stringify','isString','setDataValue','format','{\x22name\x22:\x22%s\x22,\x22description\x22:\x22%s\x22,\x22pages\x22:[]}','getDataValue','BOOLEAN','sequelize','lodash','exports','STRING','name','TEXT'];(function(_0x2dc8af,_0x4fbf03){var _0x3eed5f=function(_0x31b0b8){while(--_0x31b0b8){_0x2dc8af['push'](_0x2dc8af['shift']());}};_0x3eed5f(++_0x4fbf03);}(_0xe83b,0x15a));var _0xbe83=function(_0x82536f,_0x34d356){_0x82536f=_0x82536f-0x0;var _0x246861=_0xe83b[_0x82536f];return _0x246861;};'use strict';var Sequelize=require(_0xbe83('0x0'));var _=require(_0xbe83('0x1'));var util=require('util');module[_0xbe83('0x2')]={'name':{'type':Sequelize[_0xbe83('0x3')],'unique':_0xbe83('0x4')},'description':{'type':Sequelize[_0xbe83('0x3')]},'formData':{'type':Sequelize[_0xbe83('0x5')](_0xbe83('0x6')),'set':function(_0x148662){if(_[_0xbe83('0x7')](_0x148662)){this['setDataValue'](_0xbe83('0x8'),JSON[_0xbe83('0x9')](_0x148662));}else if(_[_0xbe83('0xa')](_0x148662)){this['setDataValue'](_0xbe83('0x8'),_0x148662);}else{this[_0xbe83('0xb')](_0xbe83('0x8'),util[_0xbe83('0xc')](_0xbe83('0xd'),this[_0xbe83('0xe')]('name')||'',this[_0xbe83('0xe')]('description')||''));}}},'enableUncompleteSave':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]},'sendUnpauseOnSubmit':{'type':Sequelize[_0xbe83('0xf')],'defaultValue':![]}};
\ No newline at end of file
index 2bc079a..741db3c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa062=['startTime','JscriptyQuestionReport','questionId','question','format','YYYY-MM-DD\x20HH:mm:ss','SessionId','push','isEmpty','now','writeFileSync','/tmp/Jscripty_Project_%d_Summary_%s.csv','setHeader','Content-disposition','attachment;\x20filename=','Jscripty_Project_%d_Summary_%s.csv','Content-type','text/csv','download','eml-format','rimraf','zip-dir','request-promise','moment','bluebird','mustache','path','ejs','fs-extra','lodash','squel','crypto','jsforce','to-csv','querystring','ioredis','../../components/auth/service','../../components/parsers/qs','../../config/utils','../../config/environment','../../mysqldb','sendStatus','status','end','offset','undefined','limit','count','set','Content-Range','json','reject','save','destroy','then','get','error','stack','name','send','index','key','model','map','query','keys','filters','intersection','attributes','fields','hasOwnProperty','order','sort','pick','filter','where','type','VIRTUAL','merge','options','JscriptyProject','include','findAll','rows','catch','show','params','rawAttributes','length','includeAll','find','create','body','user','role','Projects','userProfileId','autoAssociation','UserProfileResource','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','clone','omit','createdAt','updatedAt','Unable\x20to\x20retrieve\x20the\x20current\x20user','update','getSessions','JscriptySessionReport','nolimit','ProjectId','getAnswers','findOne','JscriptyAnswerReport','number','toString','indexOf','getSummary','starttime','parse'];(function(_0x25d386,_0x108d0d){var _0x857f4a=function(_0x3eb98d){while(--_0x3eb98d){_0x25d386['push'](_0x25d386['shift']());}};_0x857f4a(++_0x108d0d);}(_0xa062,0x101));var _0x2a06=function(_0x1c019b,_0x5f048d){_0x1c019b=_0x1c019b-0x0;var _0x4031fe=_0xa062[_0x1c019b];return _0x4031fe;};'use strict';var emlformat=require(_0x2a06('0x0'));var rimraf=require(_0x2a06('0x1'));var zipdir=require(_0x2a06('0x2'));var jsonpatch=require('fast-json-patch');var rp=require(_0x2a06('0x3'));var moment=require(_0x2a06('0x4'));var BPromise=require(_0x2a06('0x5'));var Mustache=require(_0x2a06('0x6'));var util=require('util');var path=require(_0x2a06('0x7'));var sox=require('sox');var csv=require('to-csv');var ejs=require(_0x2a06('0x8'));var fs=require('fs');var fs_extra=require(_0x2a06('0x9'));var _=require(_0x2a06('0xa'));var squel=require(_0x2a06('0xb'));var crypto=require(_0x2a06('0xc'));var jsforce=require(_0x2a06('0xd'));var deskjs=require('desk.js');var toCsv=require(_0x2a06('0xe'));var querystring=require(_0x2a06('0xf'));var Papa=require('papaparse');var Redis=require(_0x2a06('0x10'));var authService=require(_0x2a06('0x11'));var qs=require(_0x2a06('0x12'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require('../../config/license/hardware');var logger=require('../../config/logger')('api');var utils=require(_0x2a06('0x13'));var config=require(_0x2a06('0x14'));var licenseUtil=require('../../config/license/util');var db=require(_0x2a06('0x15'))['db'];function respondWithStatusCode(_0x1ae9bb,_0x329cdf){_0x329cdf=_0x329cdf||0xcc;return function(_0x179b0e){if(_0x179b0e){return _0x1ae9bb[_0x2a06('0x16')](_0x329cdf);}return _0x1ae9bb[_0x2a06('0x17')](_0x329cdf)[_0x2a06('0x18')]();};}function respondWithResult(_0x490755,_0x4c0dc1){_0x4c0dc1=_0x4c0dc1||0xc8;return function(_0x43fa64){if(_0x43fa64){return _0x490755[_0x2a06('0x17')](_0x4c0dc1)['json'](_0x43fa64);}};}function respondWithFilteredResult(_0x40ac43,_0x15e63c){return function(_0xfc68b7){if(_0xfc68b7){var _0x1ba819=typeof _0x15e63c[_0x2a06('0x19')]===_0x2a06('0x1a')&&typeof _0x15e63c[_0x2a06('0x1b')]===_0x2a06('0x1a');var _0xb5011f=_0xfc68b7[_0x2a06('0x1c')];var _0x593762=_0x1ba819?0x0:_0x15e63c[_0x2a06('0x19')];var _0x23b665=_0x1ba819?_0xfc68b7[_0x2a06('0x1c')]:_0x15e63c[_0x2a06('0x19')]+_0x15e63c[_0x2a06('0x1b')];var _0x3779ac;if(_0x23b665>=_0xb5011f){_0x23b665=_0xb5011f;_0x3779ac=0xc8;}else{_0x3779ac=0xce;}_0x40ac43[_0x2a06('0x17')](_0x3779ac);return _0x40ac43[_0x2a06('0x1d')](_0x2a06('0x1e'),_0x593762+'-'+_0x23b665+'/'+_0xb5011f)[_0x2a06('0x1f')](_0xfc68b7);}return null;};}function patchUpdates(_0x249d42){return function(_0x38c6fd){try{jsonpatch['apply'](_0x38c6fd,_0x249d42,!![]);}catch(_0x304625){return BPromise[_0x2a06('0x20')](_0x304625);}return _0x38c6fd[_0x2a06('0x21')]();};}function saveUpdates(_0x393cc4,_0x1c7e4e){return function(_0x382b4a){if(_0x382b4a){return _0x382b4a['update'](_0x393cc4)['then'](function(_0x12c0cd){return _0x12c0cd;});}return null;};}function removeEntity(_0x4dbb0d,_0x58a096){return function(_0x3eef6f){if(_0x3eef6f){return _0x3eef6f[_0x2a06('0x22')]()[_0x2a06('0x23')](function(){var _0x1d61dc=_0x3eef6f[_0x2a06('0x24')]({'plain':!![]});var _0x1b377a='Projects';return db['UserProfileResource'][_0x2a06('0x22')]({'where':{'type':_0x1b377a,'resourceId':_0x1d61dc['id']}})[_0x2a06('0x23')](function(){return _0x3eef6f;});})[_0x2a06('0x23')](function(){_0x4dbb0d[_0x2a06('0x17')](0xcc)[_0x2a06('0x18')]();});}};}function handleEntityNotFound(_0x5edc18,_0xa72125){return function(_0x39f3c4){if(!_0x39f3c4){_0x5edc18['sendStatus'](0x194);}return _0x39f3c4;};}function handleError(_0xfd1407,_0xc7b773){_0xc7b773=_0xc7b773||0x1f4;return function(_0x404631){logger[_0x2a06('0x25')](_0x404631[_0x2a06('0x26')]);if(_0x404631['name']){delete _0x404631[_0x2a06('0x27')];}_0xfd1407['status'](_0xc7b773)[_0x2a06('0x28')](_0x404631);};}exports[_0x2a06('0x29')]=function(_0x40dbc2,_0xe3dd1e){var _0x3d7a9f={},_0x5e6f5f={},_0x214067={'count':0x0,'rows':[]};var _0x22a9f5=_['map'](db['JscriptyProject']['rawAttributes'],function(_0x3db6a3){return{'name':_0x3db6a3['fieldName'],'type':_0x3db6a3['type'][_0x2a06('0x2a')]};});_0x5e6f5f[_0x2a06('0x2b')]=_[_0x2a06('0x2c')](_0x22a9f5,_0x2a06('0x27'));_0x5e6f5f[_0x2a06('0x2d')]=_[_0x2a06('0x2e')](_0x40dbc2[_0x2a06('0x2d')]);_0x5e6f5f[_0x2a06('0x2f')]=_[_0x2a06('0x30')](_0x5e6f5f['model'],_0x5e6f5f[_0x2a06('0x2d')]);_0x3d7a9f[_0x2a06('0x31')]=_[_0x2a06('0x30')](_0x5e6f5f['model'],qs['fields'](_0x40dbc2[_0x2a06('0x2d')][_0x2a06('0x32')]));_0x3d7a9f[_0x2a06('0x31')]=_0x3d7a9f['attributes']['length']?_0x3d7a9f[_0x2a06('0x31')]:_0x5e6f5f[_0x2a06('0x2b')];if(!_0x40dbc2[_0x2a06('0x2d')][_0x2a06('0x33')]('nolimit')){_0x3d7a9f[_0x2a06('0x1b')]=qs['limit'](_0x40dbc2[_0x2a06('0x2d')][_0x2a06('0x1b')]);_0x3d7a9f['offset']=qs['offset'](_0x40dbc2[_0x2a06('0x2d')][_0x2a06('0x19')]);}_0x3d7a9f[_0x2a06('0x34')]=qs[_0x2a06('0x35')](_0x40dbc2['query']['sort']);_0x3d7a9f['where']=qs[_0x2a06('0x2f')](_[_0x2a06('0x36')](_0x40dbc2[_0x2a06('0x2d')],_0x5e6f5f[_0x2a06('0x2f')]),_0x22a9f5);if(_0x40dbc2[_0x2a06('0x2d')][_0x2a06('0x37')]){_0x3d7a9f[_0x2a06('0x38')]=_['merge'](_0x3d7a9f['where'],{'$or':_[_0x2a06('0x2c')](_0x22a9f5,function(_0x4235e8){if(_0x4235e8[_0x2a06('0x39')]!==_0x2a06('0x3a')){var _0x19d1e5={};_0x19d1e5[_0x4235e8[_0x2a06('0x27')]]={'$like':'%'+_0x40dbc2[_0x2a06('0x2d')][_0x2a06('0x37')]+'%'};return _0x19d1e5;}})});}_0x3d7a9f=_[_0x2a06('0x3b')]({},_0x3d7a9f,_0x40dbc2[_0x2a06('0x3c')]);var _0x107218={'where':_0x3d7a9f[_0x2a06('0x38')]};return db[_0x2a06('0x3d')][_0x2a06('0x1c')](_0x107218)[_0x2a06('0x23')](function(_0x349685){_0x214067[_0x2a06('0x1c')]=_0x349685;if(_0x40dbc2[_0x2a06('0x2d')]['includeAll']){_0x3d7a9f[_0x2a06('0x3e')]=[{'all':!![]}];}return db[_0x2a06('0x3d')][_0x2a06('0x3f')](_0x3d7a9f);})[_0x2a06('0x23')](function(_0x1f5c2e){_0x214067[_0x2a06('0x40')]=_0x1f5c2e;return _0x214067;})[_0x2a06('0x23')](respondWithFilteredResult(_0xe3dd1e,_0x3d7a9f))[_0x2a06('0x41')](handleError(_0xe3dd1e,null));};exports[_0x2a06('0x42')]=function(_0x3ba14f,_0x5fe992){var _0xcff7aa={'raw':![],'where':{'id':_0x3ba14f[_0x2a06('0x43')]['id']}},_0x19ae71={};_0x19ae71[_0x2a06('0x2b')]=_[_0x2a06('0x2e')](db[_0x2a06('0x3d')][_0x2a06('0x44')]);_0x19ae71[_0x2a06('0x2d')]=_[_0x2a06('0x2e')](_0x3ba14f[_0x2a06('0x2d')]);_0x19ae71['filters']=_[_0x2a06('0x30')](_0x19ae71['model'],_0x19ae71['query']);_0xcff7aa[_0x2a06('0x31')]=_['intersection'](_0x19ae71[_0x2a06('0x2b')],qs['fields'](_0x3ba14f['query'][_0x2a06('0x32')]));_0xcff7aa[_0x2a06('0x31')]=_0xcff7aa[_0x2a06('0x31')][_0x2a06('0x45')]?_0xcff7aa['attributes']:_0x19ae71[_0x2a06('0x2b')];if(_0x3ba14f[_0x2a06('0x2d')][_0x2a06('0x46')]){_0xcff7aa[_0x2a06('0x3e')]=[{'all':!![]}];}_0xcff7aa=_['merge']({},_0xcff7aa,_0x3ba14f[_0x2a06('0x3c')]);return db[_0x2a06('0x3d')][_0x2a06('0x47')](_0xcff7aa)[_0x2a06('0x23')](handleEntityNotFound(_0x5fe992,null))['then'](respondWithResult(_0x5fe992,null))[_0x2a06('0x41')](handleError(_0x5fe992,null));};exports[_0x2a06('0x48')]=function(_0x55b004,_0xcebf33){return db[_0x2a06('0x3d')]['create'](_0x55b004[_0x2a06('0x49')],{})[_0x2a06('0x23')](function(_0x2505fd){var _0x1c8007=_0x55b004[_0x2a06('0x4a')]['get']({'plain':!![]});if(!_0x1c8007)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0x1c8007[_0x2a06('0x4b')]==='user'){var _0x123061=_0x2505fd['get']({'plain':!![]});var _0x4ce4db=_0x2a06('0x4c');return db['UserProfileSection'][_0x2a06('0x47')]({'where':{'name':_0x4ce4db,'userProfileId':_0x1c8007[_0x2a06('0x4d')]},'raw':!![]})['then'](function(_0xb0dc53){if(_0xb0dc53&&_0xb0dc53[_0x2a06('0x4e')]===0x0){return db[_0x2a06('0x4f')][_0x2a06('0x48')]({'name':_0x123061[_0x2a06('0x27')],'resourceId':_0x123061['id'],'type':_0xb0dc53[_0x2a06('0x27')],'sectionId':_0xb0dc53['id']},{})['then'](function(){return _0x2505fd;});}else{return _0x2505fd;}})[_0x2a06('0x41')](function(_0x4e7e73){logger[_0x2a06('0x25')](_0x2a06('0x50'),_0x4e7e73);throw _0x4e7e73;});}return _0x2505fd;})[_0x2a06('0x23')](respondWithResult(_0xcebf33,0xc9))[_0x2a06('0x41')](handleError(_0xcebf33,null));};exports[_0x2a06('0x51')]=function(_0x15c646,_0x588ec7){var _0x452c22={'where':{'id':_0x15c646[_0x2a06('0x43')]['id']}},_0x153a06={};_0x153a06[_0x2a06('0x2b')]=_[_0x2a06('0x2e')](db[_0x2a06('0x3d')][_0x2a06('0x44')]);_0x452c22[_0x2a06('0x31')]=_[_0x2a06('0x30')](_0x153a06['model'],qs['fields'](_0x15c646['query'][_0x2a06('0x32')]));_0x452c22[_0x2a06('0x31')]=_0x452c22['attributes']['length']?_0x452c22[_0x2a06('0x31')]:_0x153a06[_0x2a06('0x2b')];if(_0x15c646['query'][_0x2a06('0x46')]){_0x452c22[_0x2a06('0x3e')]=[{'all':!![]}];}_0x452c22=_[_0x2a06('0x3b')]({},_0x452c22,_0x15c646[_0x2a06('0x3c')]);return db[_0x2a06('0x3d')]['find'](_0x452c22)['then'](handleEntityNotFound(_0x588ec7,null))['then'](function(_0x30e529){if(_0x30e529){var _0x28c2fd=_0x30e529[_0x2a06('0x24')]({'plain':!![]});_0x28c2fd=qs[_0x2a06('0x52')](_0x28c2fd,['id',_0x2a06('0x53'),_0x2a06('0x54')]);_0x15c646[_0x2a06('0x49')]=_[_0x2a06('0x52')](_0x15c646[_0x2a06('0x49')],['id',_0x2a06('0x53'),_0x2a06('0x54')]);return db[_0x2a06('0x3d')][_0x2a06('0x48')](_[_0x2a06('0x3b')](_0x28c2fd,_0x15c646[_0x2a06('0x49')]),{'include':_0x15c646['query']['includeAll']?[{'all':!![]}]:undefined})[_0x2a06('0x23')](function(_0x569a60){var _0xb80b56=_0x15c646[_0x2a06('0x4a')][_0x2a06('0x24')]({'plain':!![]});if(!_0xb80b56)throw new Error(_0x2a06('0x55'));if(_0xb80b56[_0x2a06('0x4b')]===_0x2a06('0x4a')){var _0x524629=_0x569a60[_0x2a06('0x24')]({'plain':!![]});var _0x5156f4=_0x2a06('0x4c');return db['UserProfileSection'][_0x2a06('0x47')]({'where':{'name':_0x5156f4,'userProfileId':_0xb80b56['userProfileId']},'raw':!![]})['then'](function(_0x547b4b){if(_0x547b4b&&_0x547b4b['autoAssociation']===0x0){return db[_0x2a06('0x4f')][_0x2a06('0x48')]({'name':_0x524629['name'],'resourceId':_0x524629['id'],'type':_0x547b4b[_0x2a06('0x27')],'sectionId':_0x547b4b['id']},{})[_0x2a06('0x23')](function(){return _0x569a60;});}else{return _0x569a60;}})[_0x2a06('0x41')](function(_0x5f3d1e){logger[_0x2a06('0x25')](_0x2a06('0x50'),_0x5f3d1e);throw _0x5f3d1e;});}return _0x569a60;});}})[_0x2a06('0x23')](respondWithResult(_0x588ec7,0xc9))[_0x2a06('0x41')](handleError(_0x588ec7,null));};exports[_0x2a06('0x56')]=function(_0x19a59a,_0x4646bb){if(_0x19a59a['body']['id']){delete _0x19a59a[_0x2a06('0x49')]['id'];}return db[_0x2a06('0x3d')]['find']({'where':{'id':_0x19a59a[_0x2a06('0x43')]['id']}})['then'](handleEntityNotFound(_0x4646bb,null))['then'](saveUpdates(_0x19a59a['body'],null))[_0x2a06('0x23')](respondWithResult(_0x4646bb,null))['catch'](handleError(_0x4646bb,null));};exports[_0x2a06('0x22')]=function(_0x203e11,_0x518536){return db['JscriptyProject'][_0x2a06('0x47')]({'where':{'id':_0x203e11[_0x2a06('0x43')]['id']}})[_0x2a06('0x23')](handleEntityNotFound(_0x518536,null))[_0x2a06('0x23')](removeEntity(_0x518536,null))[_0x2a06('0x41')](handleError(_0x518536,null));};exports[_0x2a06('0x57')]=function(_0x2fdd41,_0x9135c3,_0x5966a4){var _0x40d316={'raw':!![],'where':{}};var _0x1899c4={};var _0x505c94={'count':0x0,'rows':[]};return db['JscriptyProject']['findOne']({'where':{'id':_0x2fdd41[_0x2a06('0x43')]['id']}})['then'](handleEntityNotFound(_0x9135c3,null))[_0x2a06('0x23')](function(_0x481f42){if(_0x481f42){_0x1899c4['model']=_[_0x2a06('0x2e')](db[_0x2a06('0x58')][_0x2a06('0x44')]);_0x1899c4[_0x2a06('0x2d')]=_[_0x2a06('0x2e')](_0x2fdd41[_0x2a06('0x2d')]);_0x1899c4[_0x2a06('0x2f')]=_['intersection'](_0x1899c4[_0x2a06('0x2b')],_0x1899c4[_0x2a06('0x2d')]);_0x40d316['attributes']=_['intersection'](_0x1899c4[_0x2a06('0x2b')],qs[_0x2a06('0x32')](_0x2fdd41[_0x2a06('0x2d')][_0x2a06('0x32')]));_0x40d316[_0x2a06('0x31')]=_0x40d316['attributes'][_0x2a06('0x45')]?_0x40d316[_0x2a06('0x31')]:_0x1899c4[_0x2a06('0x2b')];if(!_0x2fdd41[_0x2a06('0x2d')][_0x2a06('0x33')](_0x2a06('0x59'))){_0x40d316[_0x2a06('0x1b')]=qs['limit'](_0x2fdd41['query'][_0x2a06('0x1b')]);_0x40d316['offset']=qs[_0x2a06('0x19')](_0x2fdd41[_0x2a06('0x2d')][_0x2a06('0x19')]);}_0x40d316[_0x2a06('0x34')]=qs['sort'](_0x2fdd41['query'][_0x2a06('0x35')]);_0x40d316['where']=qs[_0x2a06('0x2f')](_[_0x2a06('0x36')](_0x2fdd41[_0x2a06('0x2d')],_0x1899c4[_0x2a06('0x2f')]));_0x40d316[_0x2a06('0x38')][_0x2a06('0x5a')]=_0x481f42['id'];if(_0x2fdd41[_0x2a06('0x2d')][_0x2a06('0x37')]){_0x40d316[_0x2a06('0x38')]=_[_0x2a06('0x3b')](_0x40d316[_0x2a06('0x38')],{'$or':_[_0x2a06('0x2c')](_0x40d316[_0x2a06('0x31')],function(_0x3b4236){var _0x3f2555={};_0x3f2555[_0x3b4236]={'$like':'%'+_0x2fdd41[_0x2a06('0x2d')][_0x2a06('0x37')]+'%'};return _0x3f2555;})});}_0x40d316=_[_0x2a06('0x3b')]({},_0x40d316,_0x2fdd41[_0x2a06('0x3c')]);return db[_0x2a06('0x58')][_0x2a06('0x1c')]({'where':_0x40d316[_0x2a06('0x38')]})['then'](function(_0x27b2ed){_0x505c94[_0x2a06('0x1c')]=_0x27b2ed;if(_0x2fdd41[_0x2a06('0x2d')][_0x2a06('0x46')]){_0x40d316[_0x2a06('0x3e')]=[{'all':!![]}];}return db[_0x2a06('0x58')]['findAll'](_0x40d316);})[_0x2a06('0x23')](function(_0x1944f8){_0x505c94[_0x2a06('0x40')]=_0x1944f8;return _0x505c94;});}})['then'](respondWithFilteredResult(_0x9135c3,_0x40d316))['catch'](handleError(_0x9135c3,null));};exports[_0x2a06('0x5b')]=function(_0x514d46,_0x225f54,_0x411f80){var _0x3091e2={'raw':!![],'where':{}};var _0x13944a={};var _0x1550a9={'count':0x0,'rows':[]};return db[_0x2a06('0x3d')][_0x2a06('0x5c')]({'where':{'id':_0x514d46['params']['id']}})['then'](handleEntityNotFound(_0x225f54,null))[_0x2a06('0x23')](function(_0x6940f1){if(_0x6940f1){_0x13944a[_0x2a06('0x2b')]=_[_0x2a06('0x2e')](db['JscriptyAnswerReport'][_0x2a06('0x44')]);_0x13944a['query']=_['keys'](_0x514d46[_0x2a06('0x2d')]);_0x13944a[_0x2a06('0x2f')]=_[_0x2a06('0x30')](_0x13944a['model'],_0x13944a['query']);_0x3091e2[_0x2a06('0x31')]=_[_0x2a06('0x30')](_0x13944a[_0x2a06('0x2b')],qs['fields'](_0x514d46[_0x2a06('0x2d')][_0x2a06('0x32')]));_0x3091e2[_0x2a06('0x31')]=_0x3091e2['attributes'][_0x2a06('0x45')]?_0x3091e2[_0x2a06('0x31')]:_0x13944a[_0x2a06('0x2b')];if(!_0x514d46[_0x2a06('0x2d')][_0x2a06('0x33')](_0x2a06('0x59'))){_0x3091e2[_0x2a06('0x1b')]=qs['limit'](_0x514d46[_0x2a06('0x2d')][_0x2a06('0x1b')]);_0x3091e2[_0x2a06('0x19')]=qs['offset'](_0x514d46[_0x2a06('0x2d')][_0x2a06('0x19')]);}_0x3091e2['order']=qs[_0x2a06('0x35')](_0x514d46[_0x2a06('0x2d')][_0x2a06('0x35')]);_0x3091e2['where']=qs['filters'](_[_0x2a06('0x36')](_0x514d46[_0x2a06('0x2d')],_0x13944a[_0x2a06('0x2f')]));_0x3091e2[_0x2a06('0x38')]['ProjectId']=_0x6940f1['id'];if(_0x514d46[_0x2a06('0x2d')][_0x2a06('0x37')]){_0x3091e2['where']=_[_0x2a06('0x3b')](_0x3091e2['where'],{'$or':_[_0x2a06('0x2c')](_0x3091e2[_0x2a06('0x31')],function(_0x41727e){var _0x12fb70={};_0x12fb70[_0x41727e]={'$like':'%'+_0x514d46[_0x2a06('0x2d')][_0x2a06('0x37')]+'%'};return _0x12fb70;})});}_0x3091e2=_[_0x2a06('0x3b')]({},_0x3091e2,_0x514d46[_0x2a06('0x3c')]);return db[_0x2a06('0x5d')]['count']({'where':_0x3091e2[_0x2a06('0x38')]})['then'](function(_0xfc212b){_0x1550a9[_0x2a06('0x1c')]=_0xfc212b;if(_0x514d46[_0x2a06('0x2d')][_0x2a06('0x46')]){_0x3091e2['include']=[{'all':!![]}];}return db[_0x2a06('0x5d')][_0x2a06('0x3f')](_0x3091e2);})[_0x2a06('0x23')](function(_0x1403d4){_0x1550a9['rows']=_0x1403d4;return _0x1550a9;});}})['then'](respondWithFilteredResult(_0x225f54,_0x3091e2))[_0x2a06('0x41')](handleError(_0x225f54,null));};function char(_0x5d022d){return _0x2a06('0x5e')===typeof _0x5d022d?String['fromCharCode']['apply'](null,arguments):_0x5d022d;}function needsEncapsulation(_0x452e0d){return!!_0x452e0d&&(_0x452e0d[_0x2a06('0x5f')]()['indexOf'](char(0xd))>=0x0||_0x452e0d[_0x2a06('0x5f')]()[_0x2a06('0x60')](char(0xa))>=0x0||_0x452e0d['toString']()[_0x2a06('0x60')](char(0x2c))>=0x0||_0x452e0d[_0x2a06('0x5f')]()[_0x2a06('0x60')](char(0x22))>=0x0);}function encapsulate(_0x217a83){var _0x399e4f=char(0x22),_0x16f195='\x5c'+char(0x22),_0x4ee281=_0x217a83[_0x2a06('0x5f')]()['replace'](new RegExp(_0x399e4f,'g'),_0x16f195);return _0x399e4f+_0x4ee281+_0x399e4f;}exports[_0x2a06('0x61')]=function(_0x31b013,_0x231a69,_0x27f384){var _0x1783b3,_0x133e22;var _0x323cf4={'where':{'ProjectId':_0x31b013[_0x2a06('0x43')]['id']}};if(_0x31b013[_0x2a06('0x2d')]['startTime']){_0x323cf4[_0x2a06('0x38')][_0x2a06('0x62')]=JSON[_0x2a06('0x63')](_0x31b013[_0x2a06('0x2d')][_0x2a06('0x64')]);}return db[_0x2a06('0x58')]['findAll'](_0x323cf4)['then'](handleEntityNotFound(_0x231a69,null))['then'](function(_0x166d66){if(_0x166d66){_0x1783b3=_0x166d66;return db[_0x2a06('0x65')][_0x2a06('0x3f')]({'where':{'SessionId':{'$in':_[_0x2a06('0x2c')](_0x1783b3,'id')},'ProjectId':_0x31b013['params']['id']},'order':'-createdAt'});}})['then'](handleEntityNotFound(_0x231a69,null))[_0x2a06('0x23')](function(_0x5264ca){if(_0x5264ca){_0x133e22=_0x5264ca;var _0x5f1383={};for(var _0x104b85=0x0,_0x17692c=_0x133e22[_0x2a06('0x45')];_0x104b85<_0x17692c;_0x104b85++){if(!_0x5f1383[_0x2a06('0x33')](_0x133e22[_0x104b85][_0x2a06('0x66')])){_0x5f1383[_0x133e22[_0x104b85]['questionId']]=needsEncapsulation(_0x133e22[_0x104b85][_0x2a06('0x67')])?encapsulate(_0x133e22[_0x104b85][_0x2a06('0x67')]):_0x133e22[_0x104b85][_0x2a06('0x67')];}}var _0x4f11cc=[],_0x268e1f={};for(var _0xb81725=0x0,_0x46a736=_0x1783b3[_0x2a06('0x45')];_0xb81725<_0x46a736;_0xb81725++){_0x268e1f={'ProjectId':_0x31b013[_0x2a06('0x43')]['id'],'SessionId':_0x1783b3[_0xb81725]['id'],'StartTime':moment(_0x1783b3[_0xb81725][_0x2a06('0x62')])[_0x2a06('0x68')](_0x2a06('0x69'))};for(var _0x36a307=0x0,_0x17f816=_0x133e22[_0x2a06('0x45')];_0x36a307<_0x17f816;_0x36a307++){if(_0x133e22[_0x36a307][_0x2a06('0x6a')]==_0x1783b3[_0xb81725]['id']&&_0x5f1383[_0x2a06('0x33')](_0x133e22[_0x36a307][_0x2a06('0x66')])){_0x268e1f[_0x5f1383[_0x133e22[_0x36a307][_0x2a06('0x66')]]]=_0x133e22[_0x36a307]['answer'];}}for(var _0x56aa46 in _0x5f1383){if(!_0x268e1f['hasOwnProperty'](_0x5f1383[_0x56aa46])){_0x268e1f[_0x5f1383[_0x56aa46]]=null;}}_0x4f11cc[_0x2a06('0x6b')](_0x268e1f);}return _0x4f11cc;}})['then'](function(_0x2f173a){if(!_[_0x2a06('0x6c')](_0x2f173a)){var _0x196e64=toCsv(_0x2f173a);var _0x1de724=Date[_0x2a06('0x6d')]();fs[_0x2a06('0x6e')](util[_0x2a06('0x68')](_0x2a06('0x6f'),_0x31b013[_0x2a06('0x43')]['id'],_0x1de724),_0x196e64);_0x231a69[_0x2a06('0x70')](_0x2a06('0x71'),_0x2a06('0x72')+util[_0x2a06('0x68')](_0x2a06('0x73'),_0x31b013['params']['id'],_0x1de724));_0x231a69[_0x2a06('0x70')](_0x2a06('0x74'),_0x2a06('0x75'));return _0x231a69[_0x2a06('0x76')](util[_0x2a06('0x68')]('/tmp/Jscripty_Project_%d_Summary_%s.csv',_0x31b013[_0x2a06('0x43')]['id'],_0x1de724));}else{return _0x231a69[_0x2a06('0x16')](0xcc);}})[_0x2a06('0x41')](handleError(_0x231a69,null));};
\ No newline at end of file
+var _0x4e2e=['findAll','number','fromCharCode','toString','indexOf','replace','startTime','starttime','parse','JscriptyQuestionReport','-createdAt','hasOwnProperty','questionId','question','YYYY-MM-DD\x20HH:mm:ss','answer','push','isEmpty','writeFileSync','format','/tmp/Jscripty_Project_%d_Summary_%s.csv','Content-disposition','attachment;\x20filename=','setHeader','Content-type','download','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','util','path','sox','to-csv','fs-extra','lodash','squel','crypto','jsforce','desk.js','querystring','ioredis','../../components/auth/service','../../components/parsers/qs','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../mysqldb','status','end','offset','limit','undefined','count','set','Content-Range','json','apply','reject','save','then','destroy','get','Projects','UserProfileResource','error','name','send','index','map','JscriptyProject','rawAttributes','fieldName','type','key','model','query','keys','filters','intersection','attributes','fields','length','nolimit','sort','where','filter','merge','VIRTUAL','options','includeAll','include','rows','params','create','body','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','find','userProfileId','catch','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','clone','omit','createdAt','updatedAt','getSessions','findOne','JscriptySessionReport','order','pick','ProjectId','getAnswers','JscriptyAnswerReport'];(function(_0x499cb8,_0x1d97f4){var _0x436de9=function(_0x44c06e){while(--_0x44c06e){_0x499cb8['push'](_0x499cb8['shift']());}};_0x436de9(++_0x1d97f4);}(_0x4e2e,0x1f2));var _0xe4e2=function(_0x2c99d0,_0x25ea43){_0x2c99d0=_0x2c99d0-0x0;var _0x38e98c=_0x4e2e[_0x2c99d0];return _0x38e98c;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0xe4e2('0x0'));var zipdir=require(_0xe4e2('0x1'));var jsonpatch=require(_0xe4e2('0x2'));var rp=require(_0xe4e2('0x3'));var moment=require(_0xe4e2('0x4'));var BPromise=require(_0xe4e2('0x5'));var Mustache=require('mustache');var util=require(_0xe4e2('0x6'));var path=require(_0xe4e2('0x7'));var sox=require(_0xe4e2('0x8'));var csv=require(_0xe4e2('0x9'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0xe4e2('0xa'));var _=require(_0xe4e2('0xb'));var squel=require(_0xe4e2('0xc'));var crypto=require(_0xe4e2('0xd'));var jsforce=require(_0xe4e2('0xe'));var deskjs=require(_0xe4e2('0xf'));var toCsv=require(_0xe4e2('0x9'));var querystring=require(_0xe4e2('0x10'));var Papa=require('papaparse');var Redis=require(_0xe4e2('0x11'));var authService=require(_0xe4e2('0x12'));var qs=require(_0xe4e2('0x13'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0xe4e2('0x14'));var logger=require(_0xe4e2('0x15'))(_0xe4e2('0x16'));var utils=require(_0xe4e2('0x17'));var config=require(_0xe4e2('0x18'));var licenseUtil=require('../../config/license/util');var db=require(_0xe4e2('0x19'))['db'];function respondWithStatusCode(_0x20d34e,_0x19c6ef){_0x19c6ef=_0x19c6ef||0xcc;return function(_0x13657c){if(_0x13657c){return _0x20d34e['sendStatus'](_0x19c6ef);}return _0x20d34e[_0xe4e2('0x1a')](_0x19c6ef)[_0xe4e2('0x1b')]();};}function respondWithResult(_0xb45217,_0x4e0bc2){_0x4e0bc2=_0x4e0bc2||0xc8;return function(_0x202486){if(_0x202486){return _0xb45217['status'](_0x4e0bc2)['json'](_0x202486);}};}function respondWithFilteredResult(_0x117a2a,_0x2d2018){return function(_0x1f9b2d){if(_0x1f9b2d){var _0x28ee12=typeof _0x2d2018[_0xe4e2('0x1c')]==='undefined'&&typeof _0x2d2018[_0xe4e2('0x1d')]===_0xe4e2('0x1e');var _0x340935=_0x1f9b2d['count'];var _0x196f16=_0x28ee12?0x0:_0x2d2018['offset'];var _0x1d5e9d=_0x28ee12?_0x1f9b2d[_0xe4e2('0x1f')]:_0x2d2018[_0xe4e2('0x1c')]+_0x2d2018[_0xe4e2('0x1d')];var _0x3dfbdf;if(_0x1d5e9d>=_0x340935){_0x1d5e9d=_0x340935;_0x3dfbdf=0xc8;}else{_0x3dfbdf=0xce;}_0x117a2a[_0xe4e2('0x1a')](_0x3dfbdf);return _0x117a2a[_0xe4e2('0x20')](_0xe4e2('0x21'),_0x196f16+'-'+_0x1d5e9d+'/'+_0x340935)[_0xe4e2('0x22')](_0x1f9b2d);}return null;};}function patchUpdates(_0x362741){return function(_0x5a84c5){try{jsonpatch[_0xe4e2('0x23')](_0x5a84c5,_0x362741,!![]);}catch(_0x2e7ecd){return BPromise[_0xe4e2('0x24')](_0x2e7ecd);}return _0x5a84c5[_0xe4e2('0x25')]();};}function saveUpdates(_0xbdf1ad,_0x23b466){return function(_0x16f14b){if(_0x16f14b){return _0x16f14b['update'](_0xbdf1ad)[_0xe4e2('0x26')](function(_0x2ab435){return _0x2ab435;});}return null;};}function removeEntity(_0x2088b9,_0x5373c0){return function(_0x353030){if(_0x353030){return _0x353030[_0xe4e2('0x27')]()['then'](function(){var _0xcba85a=_0x353030[_0xe4e2('0x28')]({'plain':!![]});var _0x29143c=_0xe4e2('0x29');return db[_0xe4e2('0x2a')]['destroy']({'where':{'type':_0x29143c,'resourceId':_0xcba85a['id']}})[_0xe4e2('0x26')](function(){return _0x353030;});})[_0xe4e2('0x26')](function(){_0x2088b9[_0xe4e2('0x1a')](0xcc)['end']();});}};}function handleEntityNotFound(_0x3a31b8,_0x41cfd9){return function(_0x31f651){if(!_0x31f651){_0x3a31b8['sendStatus'](0x194);}return _0x31f651;};}function handleError(_0x2e5a65,_0x50b4d9){_0x50b4d9=_0x50b4d9||0x1f4;return function(_0x477b5c){logger[_0xe4e2('0x2b')](_0x477b5c['stack']);if(_0x477b5c[_0xe4e2('0x2c')]){delete _0x477b5c[_0xe4e2('0x2c')];}_0x2e5a65[_0xe4e2('0x1a')](_0x50b4d9)[_0xe4e2('0x2d')](_0x477b5c);};}exports[_0xe4e2('0x2e')]=function(_0x4d33de,_0x5f30dc){var _0x2cb235={},_0x2fe075={},_0x12848d={'count':0x0,'rows':[]};var _0x26fb97=_[_0xe4e2('0x2f')](db[_0xe4e2('0x30')][_0xe4e2('0x31')],function(_0x40569e){return{'name':_0x40569e[_0xe4e2('0x32')],'type':_0x40569e[_0xe4e2('0x33')][_0xe4e2('0x34')]};});_0x2fe075[_0xe4e2('0x35')]=_['map'](_0x26fb97,_0xe4e2('0x2c'));_0x2fe075[_0xe4e2('0x36')]=_[_0xe4e2('0x37')](_0x4d33de[_0xe4e2('0x36')]);_0x2fe075[_0xe4e2('0x38')]=_[_0xe4e2('0x39')](_0x2fe075['model'],_0x2fe075[_0xe4e2('0x36')]);_0x2cb235[_0xe4e2('0x3a')]=_[_0xe4e2('0x39')](_0x2fe075[_0xe4e2('0x35')],qs[_0xe4e2('0x3b')](_0x4d33de[_0xe4e2('0x36')][_0xe4e2('0x3b')]));_0x2cb235[_0xe4e2('0x3a')]=_0x2cb235[_0xe4e2('0x3a')][_0xe4e2('0x3c')]?_0x2cb235[_0xe4e2('0x3a')]:_0x2fe075['model'];if(!_0x4d33de[_0xe4e2('0x36')]['hasOwnProperty'](_0xe4e2('0x3d'))){_0x2cb235[_0xe4e2('0x1d')]=qs['limit'](_0x4d33de[_0xe4e2('0x36')][_0xe4e2('0x1d')]);_0x2cb235[_0xe4e2('0x1c')]=qs[_0xe4e2('0x1c')](_0x4d33de['query'][_0xe4e2('0x1c')]);}_0x2cb235['order']=qs[_0xe4e2('0x3e')](_0x4d33de['query'][_0xe4e2('0x3e')]);_0x2cb235[_0xe4e2('0x3f')]=qs[_0xe4e2('0x38')](_['pick'](_0x4d33de[_0xe4e2('0x36')],_0x2fe075[_0xe4e2('0x38')]),_0x26fb97);if(_0x4d33de['query'][_0xe4e2('0x40')]){_0x2cb235[_0xe4e2('0x3f')]=_[_0xe4e2('0x41')](_0x2cb235[_0xe4e2('0x3f')],{'$or':_[_0xe4e2('0x2f')](_0x26fb97,function(_0x242435){if(_0x242435[_0xe4e2('0x33')]!==_0xe4e2('0x42')){var _0xc07ff5={};_0xc07ff5[_0x242435['name']]={'$like':'%'+_0x4d33de['query'][_0xe4e2('0x40')]+'%'};return _0xc07ff5;}})});}_0x2cb235=_[_0xe4e2('0x41')]({},_0x2cb235,_0x4d33de[_0xe4e2('0x43')]);var _0x3e1ae5={'where':_0x2cb235['where']};return db['JscriptyProject'][_0xe4e2('0x1f')](_0x3e1ae5)[_0xe4e2('0x26')](function(_0x3080d5){_0x12848d[_0xe4e2('0x1f')]=_0x3080d5;if(_0x4d33de['query'][_0xe4e2('0x44')]){_0x2cb235[_0xe4e2('0x45')]=[{'all':!![]}];}return db[_0xe4e2('0x30')]['findAll'](_0x2cb235);})[_0xe4e2('0x26')](function(_0x4789cf){_0x12848d[_0xe4e2('0x46')]=_0x4789cf;return _0x12848d;})[_0xe4e2('0x26')](respondWithFilteredResult(_0x5f30dc,_0x2cb235))['catch'](handleError(_0x5f30dc,null));};exports['show']=function(_0x41f16c,_0x87eb2d){var _0x39fff5={'raw':![],'where':{'id':_0x41f16c[_0xe4e2('0x47')]['id']}},_0x5c29c3={};_0x5c29c3[_0xe4e2('0x35')]=_['keys'](db[_0xe4e2('0x30')][_0xe4e2('0x31')]);_0x5c29c3[_0xe4e2('0x36')]=_[_0xe4e2('0x37')](_0x41f16c[_0xe4e2('0x36')]);_0x5c29c3[_0xe4e2('0x38')]=_[_0xe4e2('0x39')](_0x5c29c3[_0xe4e2('0x35')],_0x5c29c3['query']);_0x39fff5[_0xe4e2('0x3a')]=_[_0xe4e2('0x39')](_0x5c29c3['model'],qs['fields'](_0x41f16c[_0xe4e2('0x36')][_0xe4e2('0x3b')]));_0x39fff5[_0xe4e2('0x3a')]=_0x39fff5['attributes'][_0xe4e2('0x3c')]?_0x39fff5[_0xe4e2('0x3a')]:_0x5c29c3[_0xe4e2('0x35')];if(_0x41f16c[_0xe4e2('0x36')]['includeAll']){_0x39fff5[_0xe4e2('0x45')]=[{'all':!![]}];}_0x39fff5=_[_0xe4e2('0x41')]({},_0x39fff5,_0x41f16c[_0xe4e2('0x43')]);return db[_0xe4e2('0x30')]['find'](_0x39fff5)[_0xe4e2('0x26')](handleEntityNotFound(_0x87eb2d,null))[_0xe4e2('0x26')](respondWithResult(_0x87eb2d,null))['catch'](handleError(_0x87eb2d,null));};exports[_0xe4e2('0x48')]=function(_0xedcd86,_0x21e5d7){return db['JscriptyProject'][_0xe4e2('0x48')](_0xedcd86[_0xe4e2('0x49')],{})[_0xe4e2('0x26')](function(_0x599978){var _0x5edd7e=_0xedcd86[_0xe4e2('0x4a')]['get']({'plain':!![]});if(!_0x5edd7e)throw new Error(_0xe4e2('0x4b'));if(_0x5edd7e['role']===_0xe4e2('0x4a')){var _0x2125df=_0x599978[_0xe4e2('0x28')]({'plain':!![]});var _0x553817=_0xe4e2('0x29');return db['UserProfileSection'][_0xe4e2('0x4c')]({'where':{'name':_0x553817,'userProfileId':_0x5edd7e[_0xe4e2('0x4d')]},'raw':!![]})['then'](function(_0x9d00fb){if(_0x9d00fb&&_0x9d00fb['autoAssociation']===0x0){return db[_0xe4e2('0x2a')][_0xe4e2('0x48')]({'name':_0x2125df['name'],'resourceId':_0x2125df['id'],'type':_0x9d00fb[_0xe4e2('0x2c')],'sectionId':_0x9d00fb['id']},{})[_0xe4e2('0x26')](function(){return _0x599978;});}else{return _0x599978;}})[_0xe4e2('0x4e')](function(_0x3e540d){logger[_0xe4e2('0x2b')](_0xe4e2('0x4f'),_0x3e540d);throw _0x3e540d;});}return _0x599978;})[_0xe4e2('0x26')](respondWithResult(_0x21e5d7,0xc9))[_0xe4e2('0x4e')](handleError(_0x21e5d7,null));};exports[_0xe4e2('0x50')]=function(_0x503b77,_0x3e65df){var _0x172747={'where':{'id':_0x503b77[_0xe4e2('0x47')]['id']}},_0x2c1b83={};_0x2c1b83[_0xe4e2('0x35')]=_[_0xe4e2('0x37')](db[_0xe4e2('0x30')][_0xe4e2('0x31')]);_0x172747[_0xe4e2('0x3a')]=_[_0xe4e2('0x39')](_0x2c1b83[_0xe4e2('0x35')],qs['fields'](_0x503b77[_0xe4e2('0x36')][_0xe4e2('0x3b')]));_0x172747[_0xe4e2('0x3a')]=_0x172747[_0xe4e2('0x3a')]['length']?_0x172747[_0xe4e2('0x3a')]:_0x2c1b83[_0xe4e2('0x35')];if(_0x503b77['query'][_0xe4e2('0x44')]){_0x172747[_0xe4e2('0x45')]=[{'all':!![]}];}_0x172747=_[_0xe4e2('0x41')]({},_0x172747,_0x503b77[_0xe4e2('0x43')]);return db['JscriptyProject'][_0xe4e2('0x4c')](_0x172747)['then'](handleEntityNotFound(_0x3e65df,null))[_0xe4e2('0x26')](function(_0x26847){if(_0x26847){var _0x1f22fb=_0x26847[_0xe4e2('0x28')]({'plain':!![]});_0x1f22fb=qs[_0xe4e2('0x51')](_0x1f22fb,['id',_0xe4e2('0x52'),_0xe4e2('0x53')]);_0x503b77[_0xe4e2('0x49')]=_[_0xe4e2('0x51')](_0x503b77[_0xe4e2('0x49')],['id',_0xe4e2('0x52'),_0xe4e2('0x53')]);return db['JscriptyProject'][_0xe4e2('0x48')](_['merge'](_0x1f22fb,_0x503b77['body']),{'include':_0x503b77[_0xe4e2('0x36')][_0xe4e2('0x44')]?[{'all':!![]}]:undefined})[_0xe4e2('0x26')](function(_0x5e4e16){var _0x477acd=_0x503b77['user'][_0xe4e2('0x28')]({'plain':!![]});if(!_0x477acd)throw new Error(_0xe4e2('0x4b'));if(_0x477acd['role']===_0xe4e2('0x4a')){var _0x14f7da=_0x5e4e16['get']({'plain':!![]});var _0x3f2b39=_0xe4e2('0x29');return db['UserProfileSection'][_0xe4e2('0x4c')]({'where':{'name':_0x3f2b39,'userProfileId':_0x477acd[_0xe4e2('0x4d')]},'raw':!![]})[_0xe4e2('0x26')](function(_0x3f7be9){if(_0x3f7be9&&_0x3f7be9['autoAssociation']===0x0){return db[_0xe4e2('0x2a')][_0xe4e2('0x48')]({'name':_0x14f7da[_0xe4e2('0x2c')],'resourceId':_0x14f7da['id'],'type':_0x3f7be9[_0xe4e2('0x2c')],'sectionId':_0x3f7be9['id']},{})[_0xe4e2('0x26')](function(){return _0x5e4e16;});}else{return _0x5e4e16;}})[_0xe4e2('0x4e')](function(_0x1ef7f8){logger[_0xe4e2('0x2b')](_0xe4e2('0x4f'),_0x1ef7f8);throw _0x1ef7f8;});}return _0x5e4e16;});}})['then'](respondWithResult(_0x3e65df,0xc9))['catch'](handleError(_0x3e65df,null));};exports['update']=function(_0x39f59c,_0x17d904){if(_0x39f59c[_0xe4e2('0x49')]['id']){delete _0x39f59c[_0xe4e2('0x49')]['id'];}return db[_0xe4e2('0x30')][_0xe4e2('0x4c')]({'where':{'id':_0x39f59c[_0xe4e2('0x47')]['id']}})['then'](handleEntityNotFound(_0x17d904,null))[_0xe4e2('0x26')](saveUpdates(_0x39f59c[_0xe4e2('0x49')],null))[_0xe4e2('0x26')](respondWithResult(_0x17d904,null))[_0xe4e2('0x4e')](handleError(_0x17d904,null));};exports[_0xe4e2('0x27')]=function(_0x3ec540,_0x272d13){return db[_0xe4e2('0x30')][_0xe4e2('0x4c')]({'where':{'id':_0x3ec540[_0xe4e2('0x47')]['id']}})[_0xe4e2('0x26')](handleEntityNotFound(_0x272d13,null))[_0xe4e2('0x26')](removeEntity(_0x272d13,null))[_0xe4e2('0x4e')](handleError(_0x272d13,null));};exports[_0xe4e2('0x54')]=function(_0x3dde87,_0x51d58d,_0x4434c9){var _0xdeb76a={'raw':!![],'where':{}};var _0x32185b={};var _0x46d17a={'count':0x0,'rows':[]};return db[_0xe4e2('0x30')][_0xe4e2('0x55')]({'where':{'id':_0x3dde87[_0xe4e2('0x47')]['id']}})[_0xe4e2('0x26')](handleEntityNotFound(_0x51d58d,null))[_0xe4e2('0x26')](function(_0x23e014){if(_0x23e014){_0x32185b['model']=_[_0xe4e2('0x37')](db[_0xe4e2('0x56')][_0xe4e2('0x31')]);_0x32185b[_0xe4e2('0x36')]=_[_0xe4e2('0x37')](_0x3dde87[_0xe4e2('0x36')]);_0x32185b[_0xe4e2('0x38')]=_[_0xe4e2('0x39')](_0x32185b['model'],_0x32185b[_0xe4e2('0x36')]);_0xdeb76a[_0xe4e2('0x3a')]=_[_0xe4e2('0x39')](_0x32185b[_0xe4e2('0x35')],qs[_0xe4e2('0x3b')](_0x3dde87[_0xe4e2('0x36')][_0xe4e2('0x3b')]));_0xdeb76a[_0xe4e2('0x3a')]=_0xdeb76a[_0xe4e2('0x3a')][_0xe4e2('0x3c')]?_0xdeb76a['attributes']:_0x32185b[_0xe4e2('0x35')];if(!_0x3dde87[_0xe4e2('0x36')]['hasOwnProperty'](_0xe4e2('0x3d'))){_0xdeb76a[_0xe4e2('0x1d')]=qs[_0xe4e2('0x1d')](_0x3dde87[_0xe4e2('0x36')][_0xe4e2('0x1d')]);_0xdeb76a['offset']=qs[_0xe4e2('0x1c')](_0x3dde87[_0xe4e2('0x36')][_0xe4e2('0x1c')]);}_0xdeb76a[_0xe4e2('0x57')]=qs[_0xe4e2('0x3e')](_0x3dde87[_0xe4e2('0x36')][_0xe4e2('0x3e')]);_0xdeb76a[_0xe4e2('0x3f')]=qs['filters'](_[_0xe4e2('0x58')](_0x3dde87[_0xe4e2('0x36')],_0x32185b[_0xe4e2('0x38')]));_0xdeb76a[_0xe4e2('0x3f')][_0xe4e2('0x59')]=_0x23e014['id'];if(_0x3dde87[_0xe4e2('0x36')][_0xe4e2('0x40')]){_0xdeb76a[_0xe4e2('0x3f')]=_[_0xe4e2('0x41')](_0xdeb76a['where'],{'$or':_[_0xe4e2('0x2f')](_0xdeb76a[_0xe4e2('0x3a')],function(_0x3244d6){var _0x40fa3c={};_0x40fa3c[_0x3244d6]={'$like':'%'+_0x3dde87[_0xe4e2('0x36')][_0xe4e2('0x40')]+'%'};return _0x40fa3c;})});}_0xdeb76a=_[_0xe4e2('0x41')]({},_0xdeb76a,_0x3dde87[_0xe4e2('0x43')]);return db[_0xe4e2('0x56')][_0xe4e2('0x1f')]({'where':_0xdeb76a[_0xe4e2('0x3f')]})[_0xe4e2('0x26')](function(_0x3fe76c){_0x46d17a['count']=_0x3fe76c;if(_0x3dde87[_0xe4e2('0x36')]['includeAll']){_0xdeb76a[_0xe4e2('0x45')]=[{'all':!![]}];}return db[_0xe4e2('0x56')]['findAll'](_0xdeb76a);})[_0xe4e2('0x26')](function(_0xd829a8){_0x46d17a[_0xe4e2('0x46')]=_0xd829a8;return _0x46d17a;});}})[_0xe4e2('0x26')](respondWithFilteredResult(_0x51d58d,_0xdeb76a))[_0xe4e2('0x4e')](handleError(_0x51d58d,null));};exports[_0xe4e2('0x5a')]=function(_0x20d12,_0x536057,_0x181d9e){var _0x355953={'raw':!![],'where':{}};var _0x5b0168={};var _0x4a8f87={'count':0x0,'rows':[]};return db[_0xe4e2('0x30')][_0xe4e2('0x55')]({'where':{'id':_0x20d12[_0xe4e2('0x47')]['id']}})['then'](handleEntityNotFound(_0x536057,null))[_0xe4e2('0x26')](function(_0x5b0948){if(_0x5b0948){_0x5b0168[_0xe4e2('0x35')]=_[_0xe4e2('0x37')](db['JscriptyAnswerReport'][_0xe4e2('0x31')]);_0x5b0168[_0xe4e2('0x36')]=_[_0xe4e2('0x37')](_0x20d12[_0xe4e2('0x36')]);_0x5b0168[_0xe4e2('0x38')]=_[_0xe4e2('0x39')](_0x5b0168[_0xe4e2('0x35')],_0x5b0168[_0xe4e2('0x36')]);_0x355953[_0xe4e2('0x3a')]=_[_0xe4e2('0x39')](_0x5b0168['model'],qs[_0xe4e2('0x3b')](_0x20d12[_0xe4e2('0x36')]['fields']));_0x355953[_0xe4e2('0x3a')]=_0x355953['attributes'][_0xe4e2('0x3c')]?_0x355953[_0xe4e2('0x3a')]:_0x5b0168[_0xe4e2('0x35')];if(!_0x20d12[_0xe4e2('0x36')]['hasOwnProperty'](_0xe4e2('0x3d'))){_0x355953[_0xe4e2('0x1d')]=qs[_0xe4e2('0x1d')](_0x20d12[_0xe4e2('0x36')][_0xe4e2('0x1d')]);_0x355953[_0xe4e2('0x1c')]=qs[_0xe4e2('0x1c')](_0x20d12['query']['offset']);}_0x355953[_0xe4e2('0x57')]=qs[_0xe4e2('0x3e')](_0x20d12[_0xe4e2('0x36')][_0xe4e2('0x3e')]);_0x355953[_0xe4e2('0x3f')]=qs[_0xe4e2('0x38')](_[_0xe4e2('0x58')](_0x20d12[_0xe4e2('0x36')],_0x5b0168[_0xe4e2('0x38')]));_0x355953[_0xe4e2('0x3f')][_0xe4e2('0x59')]=_0x5b0948['id'];if(_0x20d12[_0xe4e2('0x36')][_0xe4e2('0x40')]){_0x355953[_0xe4e2('0x3f')]=_[_0xe4e2('0x41')](_0x355953[_0xe4e2('0x3f')],{'$or':_[_0xe4e2('0x2f')](_0x355953[_0xe4e2('0x3a')],function(_0x1930b9){var _0x536922={};_0x536922[_0x1930b9]={'$like':'%'+_0x20d12[_0xe4e2('0x36')][_0xe4e2('0x40')]+'%'};return _0x536922;})});}_0x355953=_[_0xe4e2('0x41')]({},_0x355953,_0x20d12['options']);return db['JscriptyAnswerReport'][_0xe4e2('0x1f')]({'where':_0x355953['where']})[_0xe4e2('0x26')](function(_0x30bbb5){_0x4a8f87[_0xe4e2('0x1f')]=_0x30bbb5;if(_0x20d12[_0xe4e2('0x36')][_0xe4e2('0x44')]){_0x355953[_0xe4e2('0x45')]=[{'all':!![]}];}return db[_0xe4e2('0x5b')][_0xe4e2('0x5c')](_0x355953);})[_0xe4e2('0x26')](function(_0x4a53fb){_0x4a8f87[_0xe4e2('0x46')]=_0x4a53fb;return _0x4a8f87;});}})[_0xe4e2('0x26')](respondWithFilteredResult(_0x536057,_0x355953))['catch'](handleError(_0x536057,null));};function char(_0x4ab01e){return _0xe4e2('0x5d')===typeof _0x4ab01e?String[_0xe4e2('0x5e')][_0xe4e2('0x23')](null,arguments):_0x4ab01e;}function needsEncapsulation(_0x10c166){return!!_0x10c166&&(_0x10c166[_0xe4e2('0x5f')]()[_0xe4e2('0x60')](char(0xd))>=0x0||_0x10c166[_0xe4e2('0x5f')]()[_0xe4e2('0x60')](char(0xa))>=0x0||_0x10c166[_0xe4e2('0x5f')]()[_0xe4e2('0x60')](char(0x2c))>=0x0||_0x10c166['toString']()[_0xe4e2('0x60')](char(0x22))>=0x0);}function encapsulate(_0x466aa2){var _0x174994=char(0x22),_0xb4355d='\x5c'+char(0x22),_0x46d566=_0x466aa2[_0xe4e2('0x5f')]()[_0xe4e2('0x61')](new RegExp(_0x174994,'g'),_0xb4355d);return _0x174994+_0x46d566+_0x174994;}exports['getSummary']=function(_0xceeaed,_0x3f329e,_0x256b6d){var _0x7d7592,_0x2a6e25;var _0x108f5a={'where':{'ProjectId':_0xceeaed[_0xe4e2('0x47')]['id']}};if(_0xceeaed[_0xe4e2('0x36')][_0xe4e2('0x62')]){_0x108f5a['where'][_0xe4e2('0x63')]=JSON[_0xe4e2('0x64')](_0xceeaed[_0xe4e2('0x36')]['startTime']);}return db[_0xe4e2('0x56')][_0xe4e2('0x5c')](_0x108f5a)[_0xe4e2('0x26')](handleEntityNotFound(_0x3f329e,null))[_0xe4e2('0x26')](function(_0x12d8e5){if(_0x12d8e5){_0x7d7592=_0x12d8e5;return db[_0xe4e2('0x65')]['findAll']({'where':{'SessionId':{'$in':_[_0xe4e2('0x2f')](_0x7d7592,'id')},'ProjectId':_0xceeaed[_0xe4e2('0x47')]['id']},'order':_0xe4e2('0x66')});}})['then'](handleEntityNotFound(_0x3f329e,null))[_0xe4e2('0x26')](function(_0x2b0b25){if(_0x2b0b25){_0x2a6e25=_0x2b0b25;var _0xeed072={};for(var _0x2c0751=0x0,_0x39c8f4=_0x2a6e25[_0xe4e2('0x3c')];_0x2c0751<_0x39c8f4;_0x2c0751++){if(!_0xeed072[_0xe4e2('0x67')](_0x2a6e25[_0x2c0751][_0xe4e2('0x68')])){_0xeed072[_0x2a6e25[_0x2c0751][_0xe4e2('0x68')]]=needsEncapsulation(_0x2a6e25[_0x2c0751][_0xe4e2('0x69')])?encapsulate(_0x2a6e25[_0x2c0751][_0xe4e2('0x69')]):_0x2a6e25[_0x2c0751][_0xe4e2('0x69')];}}var _0x321658=[],_0x46437f={};for(var _0x31bd18=0x0,_0x52cb24=_0x7d7592['length'];_0x31bd18<_0x52cb24;_0x31bd18++){_0x46437f={'ProjectId':_0xceeaed[_0xe4e2('0x47')]['id'],'SessionId':_0x7d7592[_0x31bd18]['id'],'StartTime':moment(_0x7d7592[_0x31bd18]['starttime'])['format'](_0xe4e2('0x6a'))};for(var _0x203fbc=0x0,_0x41c3a1=_0x2a6e25[_0xe4e2('0x3c')];_0x203fbc<_0x41c3a1;_0x203fbc++){if(_0x2a6e25[_0x203fbc]['SessionId']==_0x7d7592[_0x31bd18]['id']&&_0xeed072[_0xe4e2('0x67')](_0x2a6e25[_0x203fbc]['questionId'])){_0x46437f[_0xeed072[_0x2a6e25[_0x203fbc]['questionId']]]=_0x2a6e25[_0x203fbc][_0xe4e2('0x6b')];}}for(var _0x527d24 in _0xeed072){if(!_0x46437f[_0xe4e2('0x67')](_0xeed072[_0x527d24])){_0x46437f[_0xeed072[_0x527d24]]=null;}}_0x321658[_0xe4e2('0x6c')](_0x46437f);}return _0x321658;}})[_0xe4e2('0x26')](function(_0x4e6552){if(!_[_0xe4e2('0x6d')](_0x4e6552)){var _0x3c5048=toCsv(_0x4e6552);var _0x305988=Date['now']();fs[_0xe4e2('0x6e')](util[_0xe4e2('0x6f')](_0xe4e2('0x70'),_0xceeaed[_0xe4e2('0x47')]['id'],_0x305988),_0x3c5048);_0x3f329e['setHeader'](_0xe4e2('0x71'),_0xe4e2('0x72')+util[_0xe4e2('0x6f')]('Jscripty_Project_%d_Summary_%s.csv',_0xceeaed['params']['id'],_0x305988));_0x3f329e[_0xe4e2('0x73')](_0xe4e2('0x74'),'text/csv');return _0x3f329e[_0xe4e2('0x75')](util['format'](_0xe4e2('0x70'),_0xceeaed[_0xe4e2('0x47')]['id'],_0x305988));}else{return _0x3f329e['sendStatus'](0xcc);}})[_0xe4e2('0x4e')](handleError(_0x3f329e,null));};
\ No newline at end of file
index 6789804..b7928e2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0c2b=['lodash','util','moment','request-promise','path','rimraf','../../config/environment','./jscriptyProject.attributes','define','JscriptyProject','jscripty_projects'];(function(_0x5597a4,_0x161921){var _0x26ed19=function(_0x245cf7){while(--_0x245cf7){_0x5597a4['push'](_0x5597a4['shift']());}};_0x26ed19(++_0x161921);}(_0x0c2b,0x134));var _0xb0c2=function(_0x51bd42,_0x1bd44e){_0x51bd42=_0x51bd42-0x0;var _0x1f97ae=_0x0c2b[_0x51bd42];return _0x1f97ae;};'use strict';var _=require(_0xb0c2('0x0'));var util=require(_0xb0c2('0x1'));var logger=require('../../config/logger')('api');var moment=require(_0xb0c2('0x2'));var BPromise=require('bluebird');var rp=require(_0xb0c2('0x3'));var fs=require('fs');var path=require(_0xb0c2('0x4'));var rimraf=require(_0xb0c2('0x5'));var config=require(_0xb0c2('0x6'));var attributes=require(_0xb0c2('0x7'));module['exports']=function(_0x514b10,_0x1f0b7e){return _0x514b10[_0xb0c2('0x8')](_0xb0c2('0x9'),attributes,{'tableName':_0xb0c2('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x1b20=['../../config/environment','./jscriptyProject.attributes','exports','define','JscriptyProject','jscripty_projects','util','../../config/logger','bluebird','request-promise','path','rimraf'];(function(_0x4ded97,_0x327411){var _0x1e6b1c=function(_0x4458b6){while(--_0x4458b6){_0x4ded97['push'](_0x4ded97['shift']());}};_0x1e6b1c(++_0x327411);}(_0x1b20,0x66));var _0x01b2=function(_0x502c7d,_0x2f1285){_0x502c7d=_0x502c7d-0x0;var _0x30b7ed=_0x1b20[_0x502c7d];return _0x30b7ed;};'use strict';var _=require('lodash');var util=require(_0x01b2('0x0'));var logger=require(_0x01b2('0x1'))('api');var moment=require('moment');var BPromise=require(_0x01b2('0x2'));var rp=require(_0x01b2('0x3'));var fs=require('fs');var path=require(_0x01b2('0x4'));var rimraf=require(_0x01b2('0x5'));var config=require(_0x01b2('0x6'));var attributes=require(_0x01b2('0x7'));module[_0x01b2('0x8')]=function(_0x28de4a,_0x46e745){return _0x28de4a[_0x01b2('0x9')](_0x01b2('0xa'),attributes,{'tableName':_0x01b2('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 1e39182..dc064d1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xac4a=['JscriptyProject,\x20%s,\x20%s','message','result','catch','lodash','util','moment','bluebird','randomstring','ioredis','../../config/logger','rpc','../../config/environment','client','then','info','debug','JscriptyProject,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0xac4a,0x13f));var _0xaac4=function(_0x39111b,_0x28b606){_0x39111b=_0x39111b-0x0;var _0x14c287=_0xac4a[_0x39111b];return _0x14c287;};'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')]('JscriptyProject,\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')]('JscriptyProject,\x20%s,\x20%s',_0x5870e8,_0x1766c2);_0x567295(_0x1766c2);});});}
\ No newline at end of file
+var _0xcb91=['stringify','error','code','message','catch','moment','bluebird','randomstring','ioredis','../../config/utils','../../config/logger','../../config/environment','jayson/promise','http','request','info','JscriptyProject,\x20%s,\x20%s','request\x20sent','debug','JscriptyProject,\x20%s,\x20%s,\x20%s'];(function(_0xa9baf0,_0x326446){var _0xa42da1=function(_0x211615){while(--_0x211615){_0xa9baf0['push'](_0xa9baf0['shift']());}};_0xa42da1(++_0x326446);}(_0xcb91,0x1a9));var _0x1cb9=function(_0x21af3a,_0x386e1d){_0x21af3a=_0x21af3a-0x0;var _0x268a49=_0xcb91[_0x21af3a];return _0x268a49;};'use strict';var _=require('lodash');var util=require('util');var moment=require(_0x1cb9('0x0'));var BPromise=require(_0x1cb9('0x1'));var rs=require(_0x1cb9('0x2'));var fs=require('fs');var Redis=require(_0x1cb9('0x3'));var db=require('../../mysqldb')['db'];var utils=require(_0x1cb9('0x4'));var logger=require(_0x1cb9('0x5'))('rpc');var config=require(_0x1cb9('0x6'));var jayson=require(_0x1cb9('0x7'));var client=jayson['client'][_0x1cb9('0x8')]({'port':0x232a});function respondWithRpcPromise(_0x3f7deb,_0x4ffe20,_0x38737d){return new BPromise(function(_0x12567c,_0x59d1be){return client[_0x1cb9('0x9')](_0x3f7deb,_0x38737d)['then'](function(_0x567139){logger[_0x1cb9('0xa')](_0x1cb9('0xb'),_0x4ffe20,_0x1cb9('0xc'));logger[_0x1cb9('0xd')](_0x1cb9('0xe'),_0x4ffe20,'request\x20sent',JSON[_0x1cb9('0xf')](_0x567139));if(_0x567139[_0x1cb9('0x10')]){if(_0x567139[_0x1cb9('0x10')][_0x1cb9('0x11')]===0x1f4){logger[_0x1cb9('0x10')]('JscriptyProject,\x20%s,\x20%s',_0x4ffe20,_0x567139['error']['message']);return _0x59d1be(_0x567139[_0x1cb9('0x10')][_0x1cb9('0x12')]);}logger[_0x1cb9('0x10')](_0x1cb9('0xb'),_0x4ffe20,_0x567139['error'][_0x1cb9('0x12')]);return _0x12567c(_0x567139[_0x1cb9('0x10')][_0x1cb9('0x12')]);}else{logger[_0x1cb9('0xa')](_0x1cb9('0xb'),_0x4ffe20,'request\x20sent');_0x12567c(_0x567139['result'][_0x1cb9('0x12')]);}})[_0x1cb9('0x13')](function(_0x3904b7){logger[_0x1cb9('0x10')](_0x1cb9('0xb'),_0x4ffe20,_0x3904b7);_0x59d1be(_0x3904b7);});});}
\ No newline at end of file
index d9f3221..c643bdd 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2f56=['/:id','post','create','put','update','delete','exports','util','path','connect-timeout','express','Router','../../components/auth/service','../../components/interaction/service','../../config/environment','./jscriptyQuestionReport.controller','get','isAuthenticated','index','/describe','describe'];(function(_0x20a584,_0xe384a5){var _0x4b41a8=function(_0x2127c6){while(--_0x2127c6){_0x20a584['push'](_0x20a584['shift']());}};_0x4b41a8(++_0xe384a5);}(_0x2f56,0x70));var _0x62f5=function(_0x1bd26d,_0x3cbbb3){_0x1bd26d=_0x1bd26d-0x0;var _0x562ada=_0x2f56[_0x1bd26d];return _0x562ada;};'use strict';var multer=require('multer');var util=require(_0x62f5('0x0'));var path=require(_0x62f5('0x1'));var timeout=require(_0x62f5('0x2'));var express=require(_0x62f5('0x3'));var router=express[_0x62f5('0x4')]();var fs_extra=require('fs-extra');var auth=require(_0x62f5('0x5'));var interaction=require(_0x62f5('0x6'));var config=require(_0x62f5('0x7'));var controller=require(_0x62f5('0x8'));router[_0x62f5('0x9')]('/',auth[_0x62f5('0xa')](),controller[_0x62f5('0xb')]);router[_0x62f5('0x9')](_0x62f5('0xc'),auth[_0x62f5('0xa')](),controller[_0x62f5('0xd')]);router[_0x62f5('0x9')](_0x62f5('0xe'),auth[_0x62f5('0xa')](),controller['show']);router[_0x62f5('0xf')]('/',auth[_0x62f5('0xa')](),controller[_0x62f5('0x10')]);router[_0x62f5('0x11')]('/:id',auth[_0x62f5('0xa')](),controller[_0x62f5('0x12')]);router[_0x62f5('0x13')](_0x62f5('0xe'),auth[_0x62f5('0xa')](),controller['destroy']);module[_0x62f5('0x14')]=router;
\ No newline at end of file
+var _0x7ee5=['fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./jscriptyQuestionReport.controller','isAuthenticated','index','get','/describe','describe','/:id','show','put','delete','destroy','exports','multer','util','path','connect-timeout','express'];(function(_0x10e699,_0x1f9d3d){var _0x8eb28c=function(_0x2f9e4f){while(--_0x2f9e4f){_0x10e699['push'](_0x10e699['shift']());}};_0x8eb28c(++_0x1f9d3d);}(_0x7ee5,0x121));var _0x57ee=function(_0x57b38f,_0xc26f33){_0x57b38f=_0x57b38f-0x0;var _0x6aa12c=_0x7ee5[_0x57b38f];return _0x6aa12c;};'use strict';var multer=require(_0x57ee('0x0'));var util=require(_0x57ee('0x1'));var path=require(_0x57ee('0x2'));var timeout=require(_0x57ee('0x3'));var express=require(_0x57ee('0x4'));var router=express['Router']();var fs_extra=require(_0x57ee('0x5'));var auth=require(_0x57ee('0x6'));var interaction=require(_0x57ee('0x7'));var config=require(_0x57ee('0x8'));var controller=require(_0x57ee('0x9'));router['get']('/',auth[_0x57ee('0xa')](),controller[_0x57ee('0xb')]);router[_0x57ee('0xc')](_0x57ee('0xd'),auth['isAuthenticated'](),controller[_0x57ee('0xe')]);router['get'](_0x57ee('0xf'),auth[_0x57ee('0xa')](),controller[_0x57ee('0x10')]);router['post']('/',auth['isAuthenticated'](),controller['create']);router[_0x57ee('0x11')]('/:id',auth['isAuthenticated'](),controller['update']);router[_0x57ee('0x12')](_0x57ee('0xf'),auth[_0x57ee('0xa')](),controller[_0x57ee('0x13')]);module[_0x57ee('0x14')]=router;
\ No newline at end of file
index e40afeb..6de97c0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7a54=['long','STRING','sequelize','exports','TEXT'];(function(_0x1694f5,_0x49b7c3){var _0x5b4321=function(_0x58c183){while(--_0x58c183){_0x1694f5['push'](_0x1694f5['shift']());}};_0x5b4321(++_0x49b7c3);}(_0x7a54,0x106));var _0x47a5=function(_0x407df2,_0x1ae14c){_0x407df2=_0x407df2-0x0;var _0xd2174b=_0x7a54[_0x407df2];return _0xd2174b;};'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(_0x36884e,_0x48008f){var _0x1cc367=function(_0x388a78){while(--_0x388a78){_0x36884e['push'](_0x36884e['shift']());}};_0x1cc367(++_0x48008f);}(_0x7a54,0x106));var _0x47a5=function(_0x1ad47a,_0x11c060){_0x1ad47a=_0x1ad47a-0x0;var _0x2bc912=_0x7a54[_0x1ad47a];return _0x2bc912;};'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 93ff02f..d77a2f5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf4bb=['include','find','body','describe','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','sox','to-csv','ejs','squel','crypto','jsforce','querystring','papaparse','../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','json','offset','undefined','limit','count','set','Content-Range','apply','reject','save','update','then','destroy','error','name','send','index','map','rawAttributes','fieldName','type','model','query','keys','attributes','intersection','fields','length','hasOwnProperty','nolimit','order','sort','where','filters','pick','filter','merge','options','includeAll','catch','show','params','JscriptyQuestionReport'];(function(_0x2353fe,_0x4b0bca){var _0x4d43f6=function(_0x5d0bd9){while(--_0x5d0bd9){_0x2353fe['push'](_0x2353fe['shift']());}};_0x4d43f6(++_0x4b0bca);}(_0xf4bb,0x9a));var _0xbf4b=function(_0x2b5eae,_0x55010d){_0x2b5eae=_0x2b5eae-0x0;var _0x5f3ac9=_0xf4bb[_0x2b5eae];return _0x5f3ac9;};'use strict';var emlformat=require(_0xbf4b('0x0'));var rimraf=require(_0xbf4b('0x1'));var zipdir=require(_0xbf4b('0x2'));var jsonpatch=require(_0xbf4b('0x3'));var rp=require(_0xbf4b('0x4'));var moment=require(_0xbf4b('0x5'));var BPromise=require(_0xbf4b('0x6'));var Mustache=require(_0xbf4b('0x7'));var util=require(_0xbf4b('0x8'));var path=require('path');var sox=require(_0xbf4b('0x9'));var csv=require(_0xbf4b('0xa'));var ejs=require(_0xbf4b('0xb'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require('lodash');var squel=require(_0xbf4b('0xc'));var crypto=require(_0xbf4b('0xd'));var jsforce=require(_0xbf4b('0xe'));var deskjs=require('desk.js');var toCsv=require(_0xbf4b('0xa'));var querystring=require(_0xbf4b('0xf'));var Papa=require(_0xbf4b('0x10'));var Redis=require('ioredis');var authService=require(_0xbf4b('0x11'));var qs=require('../../components/parsers/qs');var as=require(_0xbf4b('0x12'));var hardwareService=require(_0xbf4b('0x13'));var logger=require(_0xbf4b('0x14'))(_0xbf4b('0x15'));var utils=require('../../config/utils');var config=require(_0xbf4b('0x16'));var licenseUtil=require(_0xbf4b('0x17'));var db=require(_0xbf4b('0x18'))['db'];function respondWithStatusCode(_0x1edd6e,_0x2e2ba5){_0x2e2ba5=_0x2e2ba5||0xcc;return function(_0x26e3c4){if(_0x26e3c4){return _0x1edd6e[_0xbf4b('0x19')](_0x2e2ba5);}return _0x1edd6e[_0xbf4b('0x1a')](_0x2e2ba5)[_0xbf4b('0x1b')]();};}function respondWithResult(_0x99048f,_0x46fbeb){_0x46fbeb=_0x46fbeb||0xc8;return function(_0x376aa8){if(_0x376aa8){return _0x99048f['status'](_0x46fbeb)[_0xbf4b('0x1c')](_0x376aa8);}};}function respondWithFilteredResult(_0x4c9e89,_0x18b818){return function(_0x38bf31){if(_0x38bf31){var _0x184697=typeof _0x18b818[_0xbf4b('0x1d')]===_0xbf4b('0x1e')&&typeof _0x18b818[_0xbf4b('0x1f')]===_0xbf4b('0x1e');var _0x54255a=_0x38bf31[_0xbf4b('0x20')];var _0x4d2539=_0x184697?0x0:_0x18b818[_0xbf4b('0x1d')];var _0x3b4ec6=_0x184697?_0x38bf31[_0xbf4b('0x20')]:_0x18b818['offset']+_0x18b818[_0xbf4b('0x1f')];var _0x565c42;if(_0x3b4ec6>=_0x54255a){_0x3b4ec6=_0x54255a;_0x565c42=0xc8;}else{_0x565c42=0xce;}_0x4c9e89[_0xbf4b('0x1a')](_0x565c42);return _0x4c9e89[_0xbf4b('0x21')](_0xbf4b('0x22'),_0x4d2539+'-'+_0x3b4ec6+'/'+_0x54255a)['json'](_0x38bf31);}return null;};}function patchUpdates(_0x25f951){return function(_0x2feeca){try{jsonpatch[_0xbf4b('0x23')](_0x2feeca,_0x25f951,!![]);}catch(_0x2175ab){return BPromise[_0xbf4b('0x24')](_0x2175ab);}return _0x2feeca[_0xbf4b('0x25')]();};}function saveUpdates(_0x50cfe2,_0x2ff966){return function(_0x123257){if(_0x123257){return _0x123257[_0xbf4b('0x26')](_0x50cfe2)[_0xbf4b('0x27')](function(_0x4fd5ea){return _0x4fd5ea;});}return null;};}function removeEntity(_0x4e5259,_0x442ce9){return function(_0x324388){if(_0x324388){return _0x324388[_0xbf4b('0x28')]()[_0xbf4b('0x27')](function(){_0x4e5259[_0xbf4b('0x1a')](0xcc)[_0xbf4b('0x1b')]();});}};}function handleEntityNotFound(_0x21d324,_0x36b4ba){return function(_0x2317be){if(!_0x2317be){_0x21d324[_0xbf4b('0x19')](0x194);}return _0x2317be;};}function handleError(_0x7ced7f,_0x1155d6){_0x1155d6=_0x1155d6||0x1f4;return function(_0x24e0ff){logger[_0xbf4b('0x29')](_0x24e0ff['stack']);if(_0x24e0ff[_0xbf4b('0x2a')]){delete _0x24e0ff[_0xbf4b('0x2a')];}_0x7ced7f[_0xbf4b('0x1a')](_0x1155d6)[_0xbf4b('0x2b')](_0x24e0ff);};}exports[_0xbf4b('0x2c')]=function(_0x208e8f,_0x4abca4){var _0x3c0972={},_0x17dd6b={},_0x3fcbe9={'count':0x0,'rows':[]};var _0x44f811=_[_0xbf4b('0x2d')](db['JscriptyQuestionReport'][_0xbf4b('0x2e')],function(_0x4acfbd){return{'name':_0x4acfbd[_0xbf4b('0x2f')],'type':_0x4acfbd[_0xbf4b('0x30')]['key']};});_0x17dd6b[_0xbf4b('0x31')]=_[_0xbf4b('0x2d')](_0x44f811,'name');_0x17dd6b[_0xbf4b('0x32')]=_[_0xbf4b('0x33')](_0x208e8f[_0xbf4b('0x32')]);_0x17dd6b['filters']=_['intersection'](_0x17dd6b[_0xbf4b('0x31')],_0x17dd6b[_0xbf4b('0x32')]);_0x3c0972[_0xbf4b('0x34')]=_[_0xbf4b('0x35')](_0x17dd6b[_0xbf4b('0x31')],qs['fields'](_0x208e8f['query'][_0xbf4b('0x36')]));_0x3c0972[_0xbf4b('0x34')]=_0x3c0972[_0xbf4b('0x34')][_0xbf4b('0x37')]?_0x3c0972[_0xbf4b('0x34')]:_0x17dd6b[_0xbf4b('0x31')];if(!_0x208e8f[_0xbf4b('0x32')][_0xbf4b('0x38')](_0xbf4b('0x39'))){_0x3c0972[_0xbf4b('0x1f')]=qs[_0xbf4b('0x1f')](_0x208e8f['query'][_0xbf4b('0x1f')]);_0x3c0972[_0xbf4b('0x1d')]=qs[_0xbf4b('0x1d')](_0x208e8f[_0xbf4b('0x32')][_0xbf4b('0x1d')]);}_0x3c0972[_0xbf4b('0x3a')]=qs[_0xbf4b('0x3b')](_0x208e8f['query'][_0xbf4b('0x3b')]);_0x3c0972[_0xbf4b('0x3c')]=qs[_0xbf4b('0x3d')](_[_0xbf4b('0x3e')](_0x208e8f[_0xbf4b('0x32')],_0x17dd6b[_0xbf4b('0x3d')]),_0x44f811);if(_0x208e8f[_0xbf4b('0x32')]['filter']){_0x3c0972[_0xbf4b('0x3c')]=_['merge'](_0x3c0972[_0xbf4b('0x3c')],{'$or':_[_0xbf4b('0x2d')](_0x44f811,function(_0x2f1617){if(_0x2f1617[_0xbf4b('0x30')]!=='VIRTUAL'){var _0x49585f={};_0x49585f[_0x2f1617[_0xbf4b('0x2a')]]={'$like':'%'+_0x208e8f['query'][_0xbf4b('0x3f')]+'%'};return _0x49585f;}})});}_0x3c0972=_[_0xbf4b('0x40')]({},_0x3c0972,_0x208e8f[_0xbf4b('0x41')]);var _0x503360={'where':_0x3c0972[_0xbf4b('0x3c')]};return db['JscriptyQuestionReport'][_0xbf4b('0x20')](_0x503360)['then'](function(_0x491a39){_0x3fcbe9['count']=_0x491a39;if(_0x208e8f[_0xbf4b('0x32')][_0xbf4b('0x42')]){_0x3c0972['include']=[{'all':!![]}];}return db['JscriptyQuestionReport']['findAll'](_0x3c0972);})['then'](function(_0x193e68){_0x3fcbe9['rows']=_0x193e68;return _0x3fcbe9;})[_0xbf4b('0x27')](respondWithFilteredResult(_0x4abca4,_0x3c0972))[_0xbf4b('0x43')](handleError(_0x4abca4,null));};exports[_0xbf4b('0x44')]=function(_0x4e5073,_0x33e0ee){var _0x365858={'raw':!![],'where':{'id':_0x4e5073[_0xbf4b('0x45')]['id']}},_0x559ac0={};_0x559ac0[_0xbf4b('0x31')]=_[_0xbf4b('0x33')](db[_0xbf4b('0x46')][_0xbf4b('0x2e')]);_0x559ac0[_0xbf4b('0x32')]=_[_0xbf4b('0x33')](_0x4e5073[_0xbf4b('0x32')]);_0x559ac0[_0xbf4b('0x3d')]=_[_0xbf4b('0x35')](_0x559ac0[_0xbf4b('0x31')],_0x559ac0['query']);_0x365858[_0xbf4b('0x34')]=_[_0xbf4b('0x35')](_0x559ac0[_0xbf4b('0x31')],qs['fields'](_0x4e5073[_0xbf4b('0x32')][_0xbf4b('0x36')]));_0x365858['attributes']=_0x365858[_0xbf4b('0x34')][_0xbf4b('0x37')]?_0x365858[_0xbf4b('0x34')]:_0x559ac0['model'];if(_0x4e5073['query'][_0xbf4b('0x42')]){_0x365858[_0xbf4b('0x47')]=[{'all':!![]}];}_0x365858=_['merge']({},_0x365858,_0x4e5073[_0xbf4b('0x41')]);return db[_0xbf4b('0x46')][_0xbf4b('0x48')](_0x365858)['then'](handleEntityNotFound(_0x33e0ee,null))[_0xbf4b('0x27')](respondWithResult(_0x33e0ee,null))[_0xbf4b('0x43')](handleError(_0x33e0ee,null));};exports['create']=function(_0x37a4f1,_0x16f2e4){return db['JscriptyQuestionReport']['create'](_0x37a4f1[_0xbf4b('0x49')],{})[_0xbf4b('0x27')](respondWithResult(_0x16f2e4,0xc9))[_0xbf4b('0x43')](handleError(_0x16f2e4,null));};exports[_0xbf4b('0x26')]=function(_0x45a380,_0x33787a){if(_0x45a380['body']['id']){delete _0x45a380[_0xbf4b('0x49')]['id'];}return db[_0xbf4b('0x46')][_0xbf4b('0x48')]({'where':{'id':_0x45a380[_0xbf4b('0x45')]['id']}})['then'](handleEntityNotFound(_0x33787a,null))[_0xbf4b('0x27')](saveUpdates(_0x45a380[_0xbf4b('0x49')],null))[_0xbf4b('0x27')](respondWithResult(_0x33787a,null))[_0xbf4b('0x43')](handleError(_0x33787a,null));};exports['destroy']=function(_0x41b340,_0x1e3c02){return db[_0xbf4b('0x46')]['find']({'where':{'id':_0x41b340[_0xbf4b('0x45')]['id']}})['then'](handleEntityNotFound(_0x1e3c02,null))[_0xbf4b('0x27')](removeEntity(_0x1e3c02,null))[_0xbf4b('0x43')](handleError(_0x1e3c02,null));};exports['describe']=function(_0x54c2a6,_0xe5430f){return db['JscriptyQuestionReport'][_0xbf4b('0x4a')]()['then'](respondWithResult(_0xe5430f,null))[_0xbf4b('0x43')](handleError(_0xe5430f,null));};
\ No newline at end of file
+var _0xafaf=['../../config/license/hardware','../../config/logger','api','../../config/environment','../../mysqldb','sendStatus','status','end','json','offset','undefined','limit','count','Content-Range','reject','save','update','then','error','stack','name','send','index','JscriptyQuestionReport','fieldName','type','key','model','map','query','intersection','fields','attributes','length','hasOwnProperty','nolimit','sort','filters','pick','filter','where','VIRTUAL','merge','includeAll','include','findAll','catch','params','keys','options','find','body','describe','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','sox','to-csv','ejs','fs-extra','crypto','jsforce','desk.js','querystring','../../components/parsers/qs','../../components/parsers/advancedSearch'];(function(_0x502c7d,_0x2f1285){var _0x30b7ed=function(_0x2d92f3){while(--_0x2d92f3){_0x502c7d['push'](_0x502c7d['shift']());}};_0x30b7ed(++_0x2f1285);}(_0xafaf,0x198));var _0xfafa=function(_0x27c4cb,_0x46a69c){_0x27c4cb=_0x27c4cb-0x0;var _0x180a12=_0xafaf[_0x27c4cb];return _0x180a12;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0xfafa('0x0'));var zipdir=require(_0xfafa('0x1'));var jsonpatch=require(_0xfafa('0x2'));var rp=require(_0xfafa('0x3'));var moment=require(_0xfafa('0x4'));var BPromise=require(_0xfafa('0x5'));var Mustache=require(_0xfafa('0x6'));var util=require(_0xfafa('0x7'));var path=require('path');var sox=require(_0xfafa('0x8'));var csv=require(_0xfafa('0x9'));var ejs=require(_0xfafa('0xa'));var fs=require('fs');var fs_extra=require(_0xfafa('0xb'));var _=require('lodash');var squel=require('squel');var crypto=require(_0xfafa('0xc'));var jsforce=require(_0xfafa('0xd'));var deskjs=require(_0xfafa('0xe'));var toCsv=require('to-csv');var querystring=require(_0xfafa('0xf'));var Papa=require('papaparse');var Redis=require('ioredis');var authService=require('../../components/auth/service');var qs=require(_0xfafa('0x10'));var as=require(_0xfafa('0x11'));var hardwareService=require(_0xfafa('0x12'));var logger=require(_0xfafa('0x13'))(_0xfafa('0x14'));var utils=require('../../config/utils');var config=require(_0xfafa('0x15'));var licenseUtil=require('../../config/license/util');var db=require(_0xfafa('0x16'))['db'];function respondWithStatusCode(_0x5b9ff4,_0xf991ff){_0xf991ff=_0xf991ff||0xcc;return function(_0x39a963){if(_0x39a963){return _0x5b9ff4[_0xfafa('0x17')](_0xf991ff);}return _0x5b9ff4[_0xfafa('0x18')](_0xf991ff)[_0xfafa('0x19')]();};}function respondWithResult(_0xb80670,_0x481861){_0x481861=_0x481861||0xc8;return function(_0x151668){if(_0x151668){return _0xb80670['status'](_0x481861)[_0xfafa('0x1a')](_0x151668);}};}function respondWithFilteredResult(_0x5eaf73,_0x596ea1){return function(_0x1ef199){if(_0x1ef199){var _0x5068e3=typeof _0x596ea1[_0xfafa('0x1b')]===_0xfafa('0x1c')&&typeof _0x596ea1[_0xfafa('0x1d')]===_0xfafa('0x1c');var _0x1b136b=_0x1ef199[_0xfafa('0x1e')];var _0x56b294=_0x5068e3?0x0:_0x596ea1[_0xfafa('0x1b')];var _0x2d0906=_0x5068e3?_0x1ef199['count']:_0x596ea1[_0xfafa('0x1b')]+_0x596ea1[_0xfafa('0x1d')];var _0x5669c5;if(_0x2d0906>=_0x1b136b){_0x2d0906=_0x1b136b;_0x5669c5=0xc8;}else{_0x5669c5=0xce;}_0x5eaf73['status'](_0x5669c5);return _0x5eaf73['set'](_0xfafa('0x1f'),_0x56b294+'-'+_0x2d0906+'/'+_0x1b136b)[_0xfafa('0x1a')](_0x1ef199);}return null;};}function patchUpdates(_0x123758){return function(_0x3fa536){try{jsonpatch['apply'](_0x3fa536,_0x123758,!![]);}catch(_0x2b5ca7){return BPromise[_0xfafa('0x20')](_0x2b5ca7);}return _0x3fa536[_0xfafa('0x21')]();};}function saveUpdates(_0x3e522a,_0x5c8f6f){return function(_0x2c6ff7){if(_0x2c6ff7){return _0x2c6ff7[_0xfafa('0x22')](_0x3e522a)[_0xfafa('0x23')](function(_0x6d673a){return _0x6d673a;});}return null;};}function removeEntity(_0x4b110e,_0xf3f3d1){return function(_0x1d21a9){if(_0x1d21a9){return _0x1d21a9['destroy']()['then'](function(){_0x4b110e[_0xfafa('0x18')](0xcc)['end']();});}};}function handleEntityNotFound(_0x14203d,_0x5482ef){return function(_0x44d399){if(!_0x44d399){_0x14203d['sendStatus'](0x194);}return _0x44d399;};}function handleError(_0x3dab2e,_0x77a77a){_0x77a77a=_0x77a77a||0x1f4;return function(_0x42f157){logger[_0xfafa('0x24')](_0x42f157[_0xfafa('0x25')]);if(_0x42f157['name']){delete _0x42f157[_0xfafa('0x26')];}_0x3dab2e[_0xfafa('0x18')](_0x77a77a)[_0xfafa('0x27')](_0x42f157);};}exports[_0xfafa('0x28')]=function(_0x4c6f68,_0x12b562){var _0x465c14={},_0x4cb919={},_0x42d1e8={'count':0x0,'rows':[]};var _0x1761b3=_['map'](db[_0xfafa('0x29')]['rawAttributes'],function(_0x23e81d){return{'name':_0x23e81d[_0xfafa('0x2a')],'type':_0x23e81d[_0xfafa('0x2b')][_0xfafa('0x2c')]};});_0x4cb919[_0xfafa('0x2d')]=_[_0xfafa('0x2e')](_0x1761b3,'name');_0x4cb919[_0xfafa('0x2f')]=_['keys'](_0x4c6f68['query']);_0x4cb919['filters']=_[_0xfafa('0x30')](_0x4cb919[_0xfafa('0x2d')],_0x4cb919[_0xfafa('0x2f')]);_0x465c14['attributes']=_[_0xfafa('0x30')](_0x4cb919[_0xfafa('0x2d')],qs['fields'](_0x4c6f68[_0xfafa('0x2f')][_0xfafa('0x31')]));_0x465c14['attributes']=_0x465c14[_0xfafa('0x32')][_0xfafa('0x33')]?_0x465c14['attributes']:_0x4cb919['model'];if(!_0x4c6f68[_0xfafa('0x2f')][_0xfafa('0x34')](_0xfafa('0x35'))){_0x465c14['limit']=qs[_0xfafa('0x1d')](_0x4c6f68[_0xfafa('0x2f')][_0xfafa('0x1d')]);_0x465c14[_0xfafa('0x1b')]=qs[_0xfafa('0x1b')](_0x4c6f68[_0xfafa('0x2f')]['offset']);}_0x465c14['order']=qs[_0xfafa('0x36')](_0x4c6f68[_0xfafa('0x2f')][_0xfafa('0x36')]);_0x465c14['where']=qs[_0xfafa('0x37')](_[_0xfafa('0x38')](_0x4c6f68['query'],_0x4cb919[_0xfafa('0x37')]),_0x1761b3);if(_0x4c6f68[_0xfafa('0x2f')][_0xfafa('0x39')]){_0x465c14[_0xfafa('0x3a')]=_['merge'](_0x465c14[_0xfafa('0x3a')],{'$or':_[_0xfafa('0x2e')](_0x1761b3,function(_0x19fd64){if(_0x19fd64[_0xfafa('0x2b')]!==_0xfafa('0x3b')){var _0x59798e={};_0x59798e[_0x19fd64[_0xfafa('0x26')]]={'$like':'%'+_0x4c6f68[_0xfafa('0x2f')][_0xfafa('0x39')]+'%'};return _0x59798e;}})});}_0x465c14=_[_0xfafa('0x3c')]({},_0x465c14,_0x4c6f68['options']);var _0x3b0c9e={'where':_0x465c14['where']};return db['JscriptyQuestionReport'][_0xfafa('0x1e')](_0x3b0c9e)[_0xfafa('0x23')](function(_0x3d5913){_0x42d1e8[_0xfafa('0x1e')]=_0x3d5913;if(_0x4c6f68[_0xfafa('0x2f')][_0xfafa('0x3d')]){_0x465c14[_0xfafa('0x3e')]=[{'all':!![]}];}return db[_0xfafa('0x29')][_0xfafa('0x3f')](_0x465c14);})[_0xfafa('0x23')](function(_0x10e298){_0x42d1e8['rows']=_0x10e298;return _0x42d1e8;})[_0xfafa('0x23')](respondWithFilteredResult(_0x12b562,_0x465c14))[_0xfafa('0x40')](handleError(_0x12b562,null));};exports['show']=function(_0x200d0b,_0x43e28a){var _0x29cb99={'raw':!![],'where':{'id':_0x200d0b[_0xfafa('0x41')]['id']}},_0x10359b={};_0x10359b['model']=_[_0xfafa('0x42')](db['JscriptyQuestionReport']['rawAttributes']);_0x10359b[_0xfafa('0x2f')]=_[_0xfafa('0x42')](_0x200d0b[_0xfafa('0x2f')]);_0x10359b['filters']=_[_0xfafa('0x30')](_0x10359b[_0xfafa('0x2d')],_0x10359b[_0xfafa('0x2f')]);_0x29cb99[_0xfafa('0x32')]=_[_0xfafa('0x30')](_0x10359b[_0xfafa('0x2d')],qs['fields'](_0x200d0b['query'][_0xfafa('0x31')]));_0x29cb99[_0xfafa('0x32')]=_0x29cb99['attributes']['length']?_0x29cb99[_0xfafa('0x32')]:_0x10359b[_0xfafa('0x2d')];if(_0x200d0b[_0xfafa('0x2f')][_0xfafa('0x3d')]){_0x29cb99[_0xfafa('0x3e')]=[{'all':!![]}];}_0x29cb99=_[_0xfafa('0x3c')]({},_0x29cb99,_0x200d0b[_0xfafa('0x43')]);return db[_0xfafa('0x29')][_0xfafa('0x44')](_0x29cb99)[_0xfafa('0x23')](handleEntityNotFound(_0x43e28a,null))[_0xfafa('0x23')](respondWithResult(_0x43e28a,null))[_0xfafa('0x40')](handleError(_0x43e28a,null));};exports['create']=function(_0x17bac8,_0x3b87ce){return db[_0xfafa('0x29')]['create'](_0x17bac8[_0xfafa('0x45')],{})[_0xfafa('0x23')](respondWithResult(_0x3b87ce,0xc9))[_0xfafa('0x40')](handleError(_0x3b87ce,null));};exports[_0xfafa('0x22')]=function(_0x17c365,_0x51ea0b){if(_0x17c365[_0xfafa('0x45')]['id']){delete _0x17c365[_0xfafa('0x45')]['id'];}return db[_0xfafa('0x29')][_0xfafa('0x44')]({'where':{'id':_0x17c365[_0xfafa('0x41')]['id']}})[_0xfafa('0x23')](handleEntityNotFound(_0x51ea0b,null))[_0xfafa('0x23')](saveUpdates(_0x17c365[_0xfafa('0x45')],null))[_0xfafa('0x23')](respondWithResult(_0x51ea0b,null))[_0xfafa('0x40')](handleError(_0x51ea0b,null));};exports['destroy']=function(_0x85578c,_0xc41da3){return db[_0xfafa('0x29')]['find']({'where':{'id':_0x85578c[_0xfafa('0x41')]['id']}})[_0xfafa('0x23')](handleEntityNotFound(_0xc41da3,null))[_0xfafa('0x23')](removeEntity(_0xc41da3,null))['catch'](handleError(_0xc41da3,null));};exports['describe']=function(_0xeb4caf,_0x46a245){return db['JscriptyQuestionReport'][_0xfafa('0x46')]()['then'](respondWithResult(_0x46a245,null))[_0xfafa('0x40')](handleError(_0x46a245,null));};
\ No newline at end of file
index 5f5f877..3080d5d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x61ca=['util','../../config/logger','moment','request-promise','path','../../config/environment','./jscriptyQuestionReport.attributes','exports','JscriptyQuestionReport','report_jscripty_questions','lodash'];(function(_0x35f179,_0xd2f766){var _0x79343e=function(_0x83a88){while(--_0x83a88){_0x35f179['push'](_0x35f179['shift']());}};_0x79343e(++_0xd2f766);}(_0x61ca,0x83));var _0xa61c=function(_0x39b9da,_0x3e4e00){_0x39b9da=_0x39b9da-0x0;var _0x2e5eb3=_0x61ca[_0x39b9da];return _0x2e5eb3;};'use strict';var _=require(_0xa61c('0x0'));var util=require(_0xa61c('0x1'));var logger=require(_0xa61c('0x2'))('api');var moment=require(_0xa61c('0x3'));var BPromise=require('bluebird');var rp=require(_0xa61c('0x4'));var fs=require('fs');var path=require(_0xa61c('0x5'));var rimraf=require('rimraf');var config=require(_0xa61c('0x6'));var attributes=require(_0xa61c('0x7'));module[_0xa61c('0x8')]=function(_0x55738d,_0x245668){return _0x55738d['define'](_0xa61c('0x9'),attributes,{'tableName':_0xa61c('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x281c=['request-promise','rimraf','../../config/environment','./jscriptyQuestionReport.attributes','exports','define','JscriptyQuestionReport','lodash','util','api','moment','bluebird'];(function(_0x38c0b2,_0x6a67a5){var _0x283c00=function(_0x259f03){while(--_0x259f03){_0x38c0b2['push'](_0x38c0b2['shift']());}};_0x283c00(++_0x6a67a5);}(_0x281c,0x97));var _0xc281=function(_0x126558,_0x143c9a){_0x126558=_0x126558-0x0;var _0x1f6d14=_0x281c[_0x126558];return _0x1f6d14;};'use strict';var _=require(_0xc281('0x0'));var util=require(_0xc281('0x1'));var logger=require('../../config/logger')(_0xc281('0x2'));var moment=require(_0xc281('0x3'));var BPromise=require(_0xc281('0x4'));var rp=require(_0xc281('0x5'));var fs=require('fs');var path=require('path');var rimraf=require(_0xc281('0x6'));var config=require(_0xc281('0x7'));var attributes=require(_0xc281('0x8'));module[_0xc281('0x9')]=function(_0x104c9b,_0x334f7b){return _0x104c9b[_0xc281('0xa')](_0xc281('0xb'),attributes,{'tableName':'report_jscripty_questions','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 5e2a8f2..25a6d5f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x35d9=['info','request\x20sent','debug','JscriptyQuestionReport,\x20%s,\x20%s,\x20%s','stringify','error','code','JscriptyQuestionReport,\x20%s,\x20%s','message','result','lodash','util','moment','bluebird','../../mysqldb','../../config/utils','../../config/logger','then'];(function(_0x50bb31,_0x1c8cb4){var _0x4f59ce=function(_0x156d35){while(--_0x156d35){_0x50bb31['push'](_0x50bb31['shift']());}};_0x4f59ce(++_0x1c8cb4);}(_0x35d9,0xf4));var _0x935d=function(_0x3a7322,_0x489628){_0x3a7322=_0x3a7322-0x0;var _0x54edda=_0x35d9[_0x3a7322];return _0x54edda;};'use strict';var _=require(_0x935d('0x0'));var util=require(_0x935d('0x1'));var moment=require(_0x935d('0x2'));var BPromise=require(_0x935d('0x3'));var rs=require('randomstring');var fs=require('fs');var Redis=require('ioredis');var db=require(_0x935d('0x4'))['db'];var utils=require(_0x935d('0x5'));var logger=require(_0x935d('0x6'))('rpc');var config=require('../../config/environment');var jayson=require('jayson/promise');var client=jayson['client']['http']({'port':0x232a});function respondWithRpcPromise(_0x2cd5c1,_0x2f2bda,_0x363d85){return new BPromise(function(_0x317a64,_0x2d38bc){return client['request'](_0x2cd5c1,_0x363d85)[_0x935d('0x7')](function(_0x4b264b){logger[_0x935d('0x8')]('JscriptyQuestionReport,\x20%s,\x20%s',_0x2f2bda,_0x935d('0x9'));logger[_0x935d('0xa')](_0x935d('0xb'),_0x2f2bda,_0x935d('0x9'),JSON[_0x935d('0xc')](_0x4b264b));if(_0x4b264b['error']){if(_0x4b264b[_0x935d('0xd')][_0x935d('0xe')]===0x1f4){logger[_0x935d('0xd')](_0x935d('0xf'),_0x2f2bda,_0x4b264b[_0x935d('0xd')][_0x935d('0x10')]);return _0x2d38bc(_0x4b264b[_0x935d('0xd')]['message']);}logger['error']('JscriptyQuestionReport,\x20%s,\x20%s',_0x2f2bda,_0x4b264b[_0x935d('0xd')][_0x935d('0x10')]);return _0x317a64(_0x4b264b[_0x935d('0xd')][_0x935d('0x10')]);}else{logger['info'](_0x935d('0xf'),_0x2f2bda,_0x935d('0x9'));_0x317a64(_0x4b264b[_0x935d('0x11')]['message']);}})['catch'](function(_0x10e2b4){logger[_0x935d('0xd')]('JscriptyQuestionReport,\x20%s,\x20%s',_0x2f2bda,_0x10e2b4);_0x2d38bc(_0x10e2b4);});});}
\ No newline at end of file
+var _0x1c4c=['request','then','info','JscriptyQuestionReport,\x20%s,\x20%s','debug','JscriptyQuestionReport,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','message','catch','lodash','util','moment','randomstring','../../mysqldb','../../config/utils','rpc','../../config/environment','client'];(function(_0x5ee0ee,_0x3ce413){var _0x198093=function(_0x29dcc9){while(--_0x29dcc9){_0x5ee0ee['push'](_0x5ee0ee['shift']());}};_0x198093(++_0x3ce413);}(_0x1c4c,0x19b));var _0xc1c4=function(_0x810025,_0x34bb04){_0x810025=_0x810025-0x0;var _0x4dbc81=_0x1c4c[_0x810025];return _0x4dbc81;};'use strict';var _=require(_0xc1c4('0x0'));var util=require(_0xc1c4('0x1'));var moment=require(_0xc1c4('0x2'));var BPromise=require('bluebird');var rs=require(_0xc1c4('0x3'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0xc1c4('0x4'))['db'];var utils=require(_0xc1c4('0x5'));var logger=require('../../config/logger')(_0xc1c4('0x6'));var config=require(_0xc1c4('0x7'));var jayson=require('jayson/promise');var client=jayson[_0xc1c4('0x8')]['http']({'port':0x232a});function respondWithRpcPromise(_0x78d38d,_0x22749d,_0x4518c9){return new BPromise(function(_0x5021b6,_0x294988){return client[_0xc1c4('0x9')](_0x78d38d,_0x4518c9)[_0xc1c4('0xa')](function(_0x18f11b){logger[_0xc1c4('0xb')](_0xc1c4('0xc'),_0x22749d,'request\x20sent');logger[_0xc1c4('0xd')](_0xc1c4('0xe'),_0x22749d,_0xc1c4('0xf'),JSON[_0xc1c4('0x10')](_0x18f11b));if(_0x18f11b[_0xc1c4('0x11')]){if(_0x18f11b['error']['code']===0x1f4){logger[_0xc1c4('0x11')](_0xc1c4('0xc'),_0x22749d,_0x18f11b[_0xc1c4('0x11')][_0xc1c4('0x12')]);return _0x294988(_0x18f11b[_0xc1c4('0x11')][_0xc1c4('0x12')]);}logger[_0xc1c4('0x11')]('JscriptyQuestionReport,\x20%s,\x20%s',_0x22749d,_0x18f11b['error'][_0xc1c4('0x12')]);return _0x5021b6(_0x18f11b[_0xc1c4('0x11')][_0xc1c4('0x12')]);}else{logger['info'](_0xc1c4('0xc'),_0x22749d,'request\x20sent');_0x5021b6(_0x18f11b['result'][_0xc1c4('0x12')]);}})[_0xc1c4('0x13')](function(_0x49ee06){logger[_0xc1c4('0x11')](_0xc1c4('0xc'),_0x22749d,_0x49ee06);_0x294988(_0x49ee06);});});}
\ No newline at end of file
index 7b6349a..a9478b1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3c90=['delete','destroy','exports','multer','util','path','connect-timeout','express','Router','../../components/interaction/service','../../config/environment','./jscriptySessionReport.controller','get','isAuthenticated','index','/describe','describe','/:id','show','/:id/questions','getQuestions','create','update'];(function(_0x464061,_0xdbfa32){var _0x32a70a=function(_0x24baeb){while(--_0x24baeb){_0x464061['push'](_0x464061['shift']());}};_0x32a70a(++_0xdbfa32);}(_0x3c90,0x100));var _0x03c9=function(_0x3263ed,_0x1cdacd){_0x3263ed=_0x3263ed-0x0;var _0x5ca601=_0x3c90[_0x3263ed];return _0x5ca601;};'use strict';var multer=require(_0x03c9('0x0'));var util=require(_0x03c9('0x1'));var path=require(_0x03c9('0x2'));var timeout=require(_0x03c9('0x3'));var express=require(_0x03c9('0x4'));var router=express[_0x03c9('0x5')]();var fs_extra=require('fs-extra');var auth=require('../../components/auth/service');var interaction=require(_0x03c9('0x6'));var config=require(_0x03c9('0x7'));var controller=require(_0x03c9('0x8'));router[_0x03c9('0x9')]('/',auth[_0x03c9('0xa')](),controller[_0x03c9('0xb')]);router['get'](_0x03c9('0xc'),auth['isAuthenticated'](),controller[_0x03c9('0xd')]);router[_0x03c9('0x9')](_0x03c9('0xe'),auth[_0x03c9('0xa')](),controller[_0x03c9('0xf')]);router[_0x03c9('0x9')](_0x03c9('0x10'),auth[_0x03c9('0xa')](),controller[_0x03c9('0x11')]);router['post']('/',auth[_0x03c9('0xa')](),controller[_0x03c9('0x12')]);router['put']('/:id',auth['isAuthenticated'](),controller[_0x03c9('0x13')]);router[_0x03c9('0x14')](_0x03c9('0xe'),auth[_0x03c9('0xa')](),controller[_0x03c9('0x15')]);module[_0x03c9('0x16')]=router;
\ No newline at end of file
+var _0xfb39=['./jscriptySessionReport.controller','get','describe','isAuthenticated','/:id/questions','getQuestions','post','create','/:id','update','delete','destroy','exports','multer','util','connect-timeout','express','Router','fs-extra','../../config/environment'];(function(_0x17b4c1,_0x2377a5){var _0xf38f21=function(_0x4b1f4d){while(--_0x4b1f4d){_0x17b4c1['push'](_0x17b4c1['shift']());}};_0xf38f21(++_0x2377a5);}(_0xfb39,0x1d9));var _0x9fb3=function(_0x5ddb1c,_0x5ea4df){_0x5ddb1c=_0x5ddb1c-0x0;var _0x354adc=_0xfb39[_0x5ddb1c];return _0x354adc;};'use strict';var multer=require(_0x9fb3('0x0'));var util=require(_0x9fb3('0x1'));var path=require('path');var timeout=require(_0x9fb3('0x2'));var express=require(_0x9fb3('0x3'));var router=express[_0x9fb3('0x4')]();var fs_extra=require(_0x9fb3('0x5'));var auth=require('../../components/auth/service');var interaction=require('../../components/interaction/service');var config=require(_0x9fb3('0x6'));var controller=require(_0x9fb3('0x7'));router['get']('/',auth['isAuthenticated'](),controller['index']);router[_0x9fb3('0x8')]('/describe',auth['isAuthenticated'](),controller[_0x9fb3('0x9')]);router[_0x9fb3('0x8')]('/:id',auth[_0x9fb3('0xa')](),controller['show']);router[_0x9fb3('0x8')](_0x9fb3('0xb'),auth[_0x9fb3('0xa')](),controller[_0x9fb3('0xc')]);router[_0x9fb3('0xd')]('/',auth['isAuthenticated'](),controller[_0x9fb3('0xe')]);router['put'](_0x9fb3('0xf'),auth[_0x9fb3('0xa')](),controller[_0x9fb3('0x10')]);router[_0x9fb3('0x11')](_0x9fb3('0xf'),auth[_0x9fb3('0xa')](),controller[_0x9fb3('0x12')]);module[_0x9fb3('0x13')]=router;
\ No newline at end of file
index d61e00c..763e1a6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe4b0=['setDataValue','endtime','format','STRING','BOOLEAN','moment','sequelize','exports','DATE'];(function(_0x15876a,_0x15383d){var _0xbd900f=function(_0x103e59){while(--_0x103e59){_0x15876a['push'](_0x15876a['shift']());}};_0xbd900f(++_0x15383d);}(_0xe4b0,0x9e));var _0x0e4b=function(_0x552cf8,_0x493a58){_0x552cf8=_0x552cf8-0x0;var _0x5b0eca=_0xe4b0[_0x552cf8];return _0x5b0eca;};'use strict';var moment=require(_0x0e4b('0x0'));var Sequelize=require(_0x0e4b('0x1'));module[_0x0e4b('0x2')]={'starttime':{'type':Sequelize[_0x0e4b('0x3')],'set':function(_0x6ddbed){this['setDataValue']('starttime',_0x6ddbed);this[_0x0e4b('0x4')](_0x0e4b('0x5'),moment()[_0x0e4b('0x6')]('YYYY-MM-DD\x20HH:mm:ss'));}},'endtime':{'type':Sequelize[_0x0e4b('0x3')]},'membername':{'type':Sequelize[_0x0e4b('0x7')]},'projectname':{'type':Sequelize[_0x0e4b('0x7')]},'queue':{'type':Sequelize[_0x0e4b('0x7')]},'uniqueid':{'type':Sequelize['STRING']},'calleridname':{'type':Sequelize[_0x0e4b('0x7')]},'calleridnum':{'type':Sequelize['STRING']},'completed':{'type':Sequelize[_0x0e4b('0x8')],'defaultValue':![]}};
\ No newline at end of file
+var _0xf13d=['exports','DATE','setDataValue','starttime','endtime','format','YYYY-MM-DD\x20HH:mm:ss','STRING','BOOLEAN','moment','sequelize'];(function(_0x115cdc,_0x2533b9){var _0x43259f=function(_0x3a621b){while(--_0x3a621b){_0x115cdc['push'](_0x115cdc['shift']());}};_0x43259f(++_0x2533b9);}(_0xf13d,0x174));var _0xdf13=function(_0x57b54c,_0x54ce0d){_0x57b54c=_0x57b54c-0x0;var _0x59cc19=_0xf13d[_0x57b54c];return _0x59cc19;};'use strict';var moment=require(_0xdf13('0x0'));var Sequelize=require(_0xdf13('0x1'));module[_0xdf13('0x2')]={'starttime':{'type':Sequelize[_0xdf13('0x3')],'set':function(_0x785372){this[_0xdf13('0x4')](_0xdf13('0x5'),_0x785372);this[_0xdf13('0x4')](_0xdf13('0x6'),moment()[_0xdf13('0x7')](_0xdf13('0x8')));}},'endtime':{'type':Sequelize[_0xdf13('0x3')]},'membername':{'type':Sequelize[_0xdf13('0x9')]},'projectname':{'type':Sequelize['STRING']},'queue':{'type':Sequelize[_0xdf13('0x9')]},'uniqueid':{'type':Sequelize[_0xdf13('0x9')]},'calleridname':{'type':Sequelize[_0xdf13('0x9')]},'calleridnum':{'type':Sequelize['STRING']},'completed':{'type':Sequelize[_0xdf13('0xa')],'defaultValue':![]}};
\ No newline at end of file
index 37e16cc..a52ed20 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd228=['../../mysqldb','status','json','offset','undefined','limit','count','set','Content-Range','apply','reject','update','then','end','error','stack','name','send','index','JscriptySessionReport','rawAttributes','fieldName','model','query','keys','filters','attributes','fields','length','nolimit','sort','where','filter','merge','map','type','VIRTUAL','options','includeAll','findAll','rows','show','params','intersection','include','find','create','catch','body','destroy','describe','getQuestions','findOne','JscriptyQuestionReport','hasOwnProperty','order','pick','SessionId','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','path','to-csv','fs-extra','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/license/util'];(function(_0x2a8f46,_0x538fec){var _0x5889f0=function(_0x4d35ba){while(--_0x4d35ba){_0x2a8f46['push'](_0x2a8f46['shift']());}};_0x5889f0(++_0x538fec);}(_0xd228,0x8d));var _0x8d22=function(_0x1440ce,_0x136aee){_0x1440ce=_0x1440ce-0x0;var _0x389c35=_0xd228[_0x1440ce];return _0x389c35;};'use strict';var emlformat=require(_0x8d22('0x0'));var rimraf=require(_0x8d22('0x1'));var zipdir=require(_0x8d22('0x2'));var jsonpatch=require(_0x8d22('0x3'));var rp=require(_0x8d22('0x4'));var moment=require(_0x8d22('0x5'));var BPromise=require(_0x8d22('0x6'));var Mustache=require('mustache');var util=require('util');var path=require(_0x8d22('0x7'));var sox=require('sox');var csv=require(_0x8d22('0x8'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x8d22('0x9'));var _=require(_0x8d22('0xa'));var squel=require('squel');var crypto=require(_0x8d22('0xb'));var jsforce=require(_0x8d22('0xc'));var deskjs=require(_0x8d22('0xd'));var toCsv=require(_0x8d22('0x8'));var querystring=require(_0x8d22('0xe'));var Papa=require(_0x8d22('0xf'));var Redis=require(_0x8d22('0x10'));var authService=require(_0x8d22('0x11'));var qs=require(_0x8d22('0x12'));var as=require(_0x8d22('0x13'));var hardwareService=require(_0x8d22('0x14'));var logger=require(_0x8d22('0x15'))(_0x8d22('0x16'));var utils=require(_0x8d22('0x17'));var config=require('../../config/environment');var licenseUtil=require(_0x8d22('0x18'));var db=require(_0x8d22('0x19'))['db'];function respondWithStatusCode(_0x48dbbc,_0xe81981){_0xe81981=_0xe81981||0xcc;return function(_0x1817e8){if(_0x1817e8){return _0x48dbbc['sendStatus'](_0xe81981);}return _0x48dbbc[_0x8d22('0x1a')](_0xe81981)['end']();};}function respondWithResult(_0x5d539e,_0x5c43cb){_0x5c43cb=_0x5c43cb||0xc8;return function(_0x25a77d){if(_0x25a77d){return _0x5d539e[_0x8d22('0x1a')](_0x5c43cb)[_0x8d22('0x1b')](_0x25a77d);}};}function respondWithFilteredResult(_0x333020,_0xa8f80a){return function(_0x4a5132){if(_0x4a5132){var _0x11665f=typeof _0xa8f80a[_0x8d22('0x1c')]===_0x8d22('0x1d')&&typeof _0xa8f80a[_0x8d22('0x1e')]===_0x8d22('0x1d');var _0x25ba5b=_0x4a5132[_0x8d22('0x1f')];var _0x3c2126=_0x11665f?0x0:_0xa8f80a[_0x8d22('0x1c')];var _0x34de97=_0x11665f?_0x4a5132[_0x8d22('0x1f')]:_0xa8f80a[_0x8d22('0x1c')]+_0xa8f80a[_0x8d22('0x1e')];var _0x50fee1;if(_0x34de97>=_0x25ba5b){_0x34de97=_0x25ba5b;_0x50fee1=0xc8;}else{_0x50fee1=0xce;}_0x333020['status'](_0x50fee1);return _0x333020[_0x8d22('0x20')](_0x8d22('0x21'),_0x3c2126+'-'+_0x34de97+'/'+_0x25ba5b)[_0x8d22('0x1b')](_0x4a5132);}return null;};}function patchUpdates(_0x452e7f){return function(_0x15b08c){try{jsonpatch[_0x8d22('0x22')](_0x15b08c,_0x452e7f,!![]);}catch(_0x97484d){return BPromise[_0x8d22('0x23')](_0x97484d);}return _0x15b08c['save']();};}function saveUpdates(_0x1ad9bc,_0x1f8bb5){return function(_0x592aee){if(_0x592aee){return _0x592aee[_0x8d22('0x24')](_0x1ad9bc)['then'](function(_0x252c1c){return _0x252c1c;});}return null;};}function removeEntity(_0x4f95d4,_0x4c746f){return function(_0x5560fc){if(_0x5560fc){return _0x5560fc['destroy']()[_0x8d22('0x25')](function(){_0x4f95d4[_0x8d22('0x1a')](0xcc)[_0x8d22('0x26')]();});}};}function handleEntityNotFound(_0x20cf4b,_0x118a37){return function(_0x11718b){if(!_0x11718b){_0x20cf4b['sendStatus'](0x194);}return _0x11718b;};}function handleError(_0xd33c5d,_0x597219){_0x597219=_0x597219||0x1f4;return function(_0x582aaa){logger[_0x8d22('0x27')](_0x582aaa[_0x8d22('0x28')]);if(_0x582aaa[_0x8d22('0x29')]){delete _0x582aaa['name'];}_0xd33c5d[_0x8d22('0x1a')](_0x597219)[_0x8d22('0x2a')](_0x582aaa);};}exports[_0x8d22('0x2b')]=function(_0x318df0,_0x4e66a4){var _0x53207c={},_0x91523b={},_0x91bd60={'count':0x0,'rows':[]};var _0xf455ee=_['map'](db[_0x8d22('0x2c')][_0x8d22('0x2d')],function(_0x2c8011){return{'name':_0x2c8011[_0x8d22('0x2e')],'type':_0x2c8011['type']['key']};});_0x91523b[_0x8d22('0x2f')]=_['map'](_0xf455ee,_0x8d22('0x29'));_0x91523b[_0x8d22('0x30')]=_[_0x8d22('0x31')](_0x318df0[_0x8d22('0x30')]);_0x91523b[_0x8d22('0x32')]=_['intersection'](_0x91523b[_0x8d22('0x2f')],_0x91523b[_0x8d22('0x30')]);_0x53207c[_0x8d22('0x33')]=_['intersection'](_0x91523b[_0x8d22('0x2f')],qs['fields'](_0x318df0['query'][_0x8d22('0x34')]));_0x53207c[_0x8d22('0x33')]=_0x53207c[_0x8d22('0x33')][_0x8d22('0x35')]?_0x53207c['attributes']:_0x91523b[_0x8d22('0x2f')];if(!_0x318df0['query']['hasOwnProperty'](_0x8d22('0x36'))){_0x53207c[_0x8d22('0x1e')]=qs[_0x8d22('0x1e')](_0x318df0[_0x8d22('0x30')][_0x8d22('0x1e')]);_0x53207c[_0x8d22('0x1c')]=qs[_0x8d22('0x1c')](_0x318df0[_0x8d22('0x30')]['offset']);}_0x53207c['order']=qs[_0x8d22('0x37')](_0x318df0[_0x8d22('0x30')][_0x8d22('0x37')]);_0x53207c[_0x8d22('0x38')]=qs[_0x8d22('0x32')](_['pick'](_0x318df0['query'],_0x91523b[_0x8d22('0x32')]),_0xf455ee);if(_0x318df0['query'][_0x8d22('0x39')]){_0x53207c['where']=_[_0x8d22('0x3a')](_0x53207c['where'],{'$or':_[_0x8d22('0x3b')](_0xf455ee,function(_0x382250){if(_0x382250[_0x8d22('0x3c')]!==_0x8d22('0x3d')){var _0x10456c={};_0x10456c[_0x382250[_0x8d22('0x29')]]={'$like':'%'+_0x318df0[_0x8d22('0x30')][_0x8d22('0x39')]+'%'};return _0x10456c;}})});}_0x53207c=_['merge']({},_0x53207c,_0x318df0[_0x8d22('0x3e')]);var _0x1997aa={'where':_0x53207c[_0x8d22('0x38')]};return db['JscriptySessionReport']['count'](_0x1997aa)[_0x8d22('0x25')](function(_0x5454dd){_0x91bd60[_0x8d22('0x1f')]=_0x5454dd;if(_0x318df0[_0x8d22('0x30')][_0x8d22('0x3f')]){_0x53207c['include']=[{'all':!![]}];}return db[_0x8d22('0x2c')][_0x8d22('0x40')](_0x53207c);})[_0x8d22('0x25')](function(_0x162a7a){_0x91bd60[_0x8d22('0x41')]=_0x162a7a;return _0x91bd60;})[_0x8d22('0x25')](respondWithFilteredResult(_0x4e66a4,_0x53207c))['catch'](handleError(_0x4e66a4,null));};exports[_0x8d22('0x42')]=function(_0x3a8453,_0x3ea27e){var _0x48f418={'raw':!![],'where':{'id':_0x3a8453[_0x8d22('0x43')]['id']}},_0xa9ff45={};_0xa9ff45[_0x8d22('0x2f')]=_[_0x8d22('0x31')](db['JscriptySessionReport']['rawAttributes']);_0xa9ff45['query']=_[_0x8d22('0x31')](_0x3a8453[_0x8d22('0x30')]);_0xa9ff45['filters']=_[_0x8d22('0x44')](_0xa9ff45[_0x8d22('0x2f')],_0xa9ff45[_0x8d22('0x30')]);_0x48f418[_0x8d22('0x33')]=_[_0x8d22('0x44')](_0xa9ff45['model'],qs[_0x8d22('0x34')](_0x3a8453[_0x8d22('0x30')][_0x8d22('0x34')]));_0x48f418[_0x8d22('0x33')]=_0x48f418[_0x8d22('0x33')][_0x8d22('0x35')]?_0x48f418[_0x8d22('0x33')]:_0xa9ff45[_0x8d22('0x2f')];if(_0x3a8453[_0x8d22('0x30')][_0x8d22('0x3f')]){_0x48f418[_0x8d22('0x45')]=[{'all':!![]}];}_0x48f418=_[_0x8d22('0x3a')]({},_0x48f418,_0x3a8453[_0x8d22('0x3e')]);return db['JscriptySessionReport'][_0x8d22('0x46')](_0x48f418)[_0x8d22('0x25')](handleEntityNotFound(_0x3ea27e,null))[_0x8d22('0x25')](respondWithResult(_0x3ea27e,null))['catch'](handleError(_0x3ea27e,null));};exports[_0x8d22('0x47')]=function(_0x4d65f4,_0x56d71f){return db[_0x8d22('0x2c')][_0x8d22('0x47')](_0x4d65f4['body'],{})[_0x8d22('0x25')](respondWithResult(_0x56d71f,0xc9))[_0x8d22('0x48')](handleError(_0x56d71f,null));};exports[_0x8d22('0x24')]=function(_0x1a55bd,_0x13b0a1){if(_0x1a55bd['body']['id']){delete _0x1a55bd['body']['id'];}return db[_0x8d22('0x2c')]['find']({'where':{'id':_0x1a55bd[_0x8d22('0x43')]['id']}})[_0x8d22('0x25')](handleEntityNotFound(_0x13b0a1,null))[_0x8d22('0x25')](saveUpdates(_0x1a55bd[_0x8d22('0x49')],null))[_0x8d22('0x25')](respondWithResult(_0x13b0a1,null))['catch'](handleError(_0x13b0a1,null));};exports[_0x8d22('0x4a')]=function(_0x1c6f99,_0xe6d6d6){return db[_0x8d22('0x2c')][_0x8d22('0x46')]({'where':{'id':_0x1c6f99[_0x8d22('0x43')]['id']}})[_0x8d22('0x25')](handleEntityNotFound(_0xe6d6d6,null))['then'](removeEntity(_0xe6d6d6,null))[_0x8d22('0x48')](handleError(_0xe6d6d6,null));};exports[_0x8d22('0x4b')]=function(_0x9c333,_0x202e19){return db[_0x8d22('0x2c')]['describe']()['then'](respondWithResult(_0x202e19,null))[_0x8d22('0x48')](handleError(_0x202e19,null));};exports[_0x8d22('0x4c')]=function(_0x22c3ed,_0x1a9e8b,_0xdb7027){var _0x171b3f={'raw':!![],'where':{}};var _0x379aa={};var _0x3da640={'count':0x0,'rows':[]};return db[_0x8d22('0x2c')][_0x8d22('0x4d')]({'where':{'id':_0x22c3ed[_0x8d22('0x43')]['id']}})[_0x8d22('0x25')](handleEntityNotFound(_0x1a9e8b,null))['then'](function(_0x9f7565){if(_0x9f7565){_0x379aa['model']=_['keys'](db[_0x8d22('0x4e')][_0x8d22('0x2d')]);_0x379aa[_0x8d22('0x30')]=_[_0x8d22('0x31')](_0x22c3ed[_0x8d22('0x30')]);_0x379aa['filters']=_['intersection'](_0x379aa[_0x8d22('0x2f')],_0x379aa[_0x8d22('0x30')]);_0x171b3f[_0x8d22('0x33')]=_[_0x8d22('0x44')](_0x379aa[_0x8d22('0x2f')],qs[_0x8d22('0x34')](_0x22c3ed[_0x8d22('0x30')][_0x8d22('0x34')]));_0x171b3f[_0x8d22('0x33')]=_0x171b3f['attributes'][_0x8d22('0x35')]?_0x171b3f['attributes']:_0x379aa[_0x8d22('0x2f')];if(!_0x22c3ed[_0x8d22('0x30')][_0x8d22('0x4f')](_0x8d22('0x36'))){_0x171b3f[_0x8d22('0x1e')]=qs[_0x8d22('0x1e')](_0x22c3ed[_0x8d22('0x30')][_0x8d22('0x1e')]);_0x171b3f[_0x8d22('0x1c')]=qs['offset'](_0x22c3ed[_0x8d22('0x30')][_0x8d22('0x1c')]);}_0x171b3f[_0x8d22('0x50')]=qs[_0x8d22('0x37')](_0x22c3ed['query']['sort']);_0x171b3f[_0x8d22('0x38')]=qs['filters'](_[_0x8d22('0x51')](_0x22c3ed['query'],_0x379aa[_0x8d22('0x32')]));_0x171b3f[_0x8d22('0x38')][_0x8d22('0x52')]=_0x9f7565['id'];if(_0x22c3ed[_0x8d22('0x30')][_0x8d22('0x39')]){_0x171b3f[_0x8d22('0x38')]=_[_0x8d22('0x3a')](_0x171b3f[_0x8d22('0x38')],{'$or':_[_0x8d22('0x3b')](_0x171b3f[_0x8d22('0x33')],function(_0x2b910b){var _0xed47f4={};_0xed47f4[_0x2b910b]={'$like':'%'+_0x22c3ed[_0x8d22('0x30')][_0x8d22('0x39')]+'%'};return _0xed47f4;})});}_0x171b3f=_['merge']({},_0x171b3f,_0x22c3ed[_0x8d22('0x3e')]);return db['JscriptyQuestionReport'][_0x8d22('0x1f')]({'where':_0x171b3f[_0x8d22('0x38')]})[_0x8d22('0x25')](function(_0x93061a){_0x3da640['count']=_0x93061a;if(_0x22c3ed[_0x8d22('0x30')]['includeAll']){_0x171b3f['include']=[{'all':!![]}];}return db[_0x8d22('0x4e')][_0x8d22('0x40')](_0x171b3f);})[_0x8d22('0x25')](function(_0x439b5b){_0x3da640[_0x8d22('0x41')]=_0x439b5b;return _0x3da640;});}})['then'](respondWithFilteredResult(_0x1a9e8b,_0x171b3f))['catch'](handleError(_0x1a9e8b,null));};
\ No newline at end of file
+var _0xcf3c=['destroy','describe','getQuestions','findOne','JscriptyQuestionReport','keys','order','SessionId','count','rows','eml-format','zip-dir','request-promise','moment','bluebird','mustache','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','../../config/logger','api','../../config/license/util','status','end','json','undefined','limit','offset','set','apply','then','sendStatus','error','name','index','fieldName','type','key','model','map','query','filters','attributes','intersection','fields','length','hasOwnProperty','nolimit','sort','where','pick','filter','VIRTUAL','merge','options','includeAll','include','JscriptySessionReport','findAll','catch','show','params','rawAttributes','find','create','body','update'];(function(_0x3ae218,_0xf3addd){var _0x127e5e=function(_0x2457f9){while(--_0x2457f9){_0x3ae218['push'](_0x3ae218['shift']());}};_0x127e5e(++_0xf3addd);}(_0xcf3c,0x1e4));var _0xccf3=function(_0x2b835c,_0x60bf44){_0x2b835c=_0x2b835c-0x0;var _0x3e9bbd=_0xcf3c[_0x2b835c];return _0x3e9bbd;};'use strict';var emlformat=require(_0xccf3('0x0'));var rimraf=require('rimraf');var zipdir=require(_0xccf3('0x1'));var jsonpatch=require('fast-json-patch');var rp=require(_0xccf3('0x2'));var moment=require(_0xccf3('0x3'));var BPromise=require(_0xccf3('0x4'));var Mustache=require(_0xccf3('0x5'));var util=require('util');var path=require(_0xccf3('0x6'));var sox=require(_0xccf3('0x7'));var csv=require(_0xccf3('0x8'));var ejs=require(_0xccf3('0x9'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0xccf3('0xa'));var squel=require(_0xccf3('0xb'));var crypto=require(_0xccf3('0xc'));var jsforce=require(_0xccf3('0xd'));var deskjs=require(_0xccf3('0xe'));var toCsv=require(_0xccf3('0x8'));var querystring=require(_0xccf3('0xf'));var Papa=require('papaparse');var Redis=require(_0xccf3('0x10'));var authService=require(_0xccf3('0x11'));var qs=require(_0xccf3('0x12'));var as=require(_0xccf3('0x13'));var hardwareService=require(_0xccf3('0x14'));var logger=require(_0xccf3('0x15'))(_0xccf3('0x16'));var utils=require('../../config/utils');var config=require('../../config/environment');var licenseUtil=require(_0xccf3('0x17'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x49afb9,_0x407a34){_0x407a34=_0x407a34||0xcc;return function(_0x4c7f69){if(_0x4c7f69){return _0x49afb9['sendStatus'](_0x407a34);}return _0x49afb9[_0xccf3('0x18')](_0x407a34)[_0xccf3('0x19')]();};}function respondWithResult(_0x18ff98,_0x505e90){_0x505e90=_0x505e90||0xc8;return function(_0xf81469){if(_0xf81469){return _0x18ff98[_0xccf3('0x18')](_0x505e90)[_0xccf3('0x1a')](_0xf81469);}};}function respondWithFilteredResult(_0x4911ae,_0x3c00f3){return function(_0x3559d3){if(_0x3559d3){var _0xfaa48c=typeof _0x3c00f3['offset']===_0xccf3('0x1b')&&typeof _0x3c00f3[_0xccf3('0x1c')]==='undefined';var _0x331e9a=_0x3559d3['count'];var _0xbdfe8b=_0xfaa48c?0x0:_0x3c00f3[_0xccf3('0x1d')];var _0x340728=_0xfaa48c?_0x3559d3['count']:_0x3c00f3['offset']+_0x3c00f3[_0xccf3('0x1c')];var _0x384671;if(_0x340728>=_0x331e9a){_0x340728=_0x331e9a;_0x384671=0xc8;}else{_0x384671=0xce;}_0x4911ae[_0xccf3('0x18')](_0x384671);return _0x4911ae[_0xccf3('0x1e')]('Content-Range',_0xbdfe8b+'-'+_0x340728+'/'+_0x331e9a)['json'](_0x3559d3);}return null;};}function patchUpdates(_0x59a0a3){return function(_0x335772){try{jsonpatch[_0xccf3('0x1f')](_0x335772,_0x59a0a3,!![]);}catch(_0xb821ed){return BPromise['reject'](_0xb821ed);}return _0x335772['save']();};}function saveUpdates(_0x514e52,_0x3a1f17){return function(_0x3cd947){if(_0x3cd947){return _0x3cd947['update'](_0x514e52)['then'](function(_0x3f2da2){return _0x3f2da2;});}return null;};}function removeEntity(_0x2b5ddf,_0x4c9495){return function(_0x4cfc37){if(_0x4cfc37){return _0x4cfc37['destroy']()[_0xccf3('0x20')](function(){_0x2b5ddf['status'](0xcc)[_0xccf3('0x19')]();});}};}function handleEntityNotFound(_0x5de29b,_0x1af1c0){return function(_0x41c11e){if(!_0x41c11e){_0x5de29b[_0xccf3('0x21')](0x194);}return _0x41c11e;};}function handleError(_0xc537a2,_0x4b8a41){_0x4b8a41=_0x4b8a41||0x1f4;return function(_0x2cb103){logger[_0xccf3('0x22')](_0x2cb103['stack']);if(_0x2cb103[_0xccf3('0x23')]){delete _0x2cb103[_0xccf3('0x23')];}_0xc537a2[_0xccf3('0x18')](_0x4b8a41)['send'](_0x2cb103);};}exports[_0xccf3('0x24')]=function(_0x468a39,_0x2ee583){var _0x100cbc={},_0x5a9294={},_0x5f5add={'count':0x0,'rows':[]};var _0x3ddeb3=_['map'](db['JscriptySessionReport']['rawAttributes'],function(_0x46d1d5){return{'name':_0x46d1d5[_0xccf3('0x25')],'type':_0x46d1d5[_0xccf3('0x26')][_0xccf3('0x27')]};});_0x5a9294[_0xccf3('0x28')]=_[_0xccf3('0x29')](_0x3ddeb3,_0xccf3('0x23'));_0x5a9294[_0xccf3('0x2a')]=_['keys'](_0x468a39[_0xccf3('0x2a')]);_0x5a9294[_0xccf3('0x2b')]=_['intersection'](_0x5a9294[_0xccf3('0x28')],_0x5a9294[_0xccf3('0x2a')]);_0x100cbc[_0xccf3('0x2c')]=_[_0xccf3('0x2d')](_0x5a9294['model'],qs['fields'](_0x468a39[_0xccf3('0x2a')][_0xccf3('0x2e')]));_0x100cbc[_0xccf3('0x2c')]=_0x100cbc[_0xccf3('0x2c')][_0xccf3('0x2f')]?_0x100cbc[_0xccf3('0x2c')]:_0x5a9294[_0xccf3('0x28')];if(!_0x468a39['query'][_0xccf3('0x30')](_0xccf3('0x31'))){_0x100cbc[_0xccf3('0x1c')]=qs[_0xccf3('0x1c')](_0x468a39[_0xccf3('0x2a')][_0xccf3('0x1c')]);_0x100cbc[_0xccf3('0x1d')]=qs[_0xccf3('0x1d')](_0x468a39[_0xccf3('0x2a')][_0xccf3('0x1d')]);}_0x100cbc['order']=qs[_0xccf3('0x32')](_0x468a39['query'][_0xccf3('0x32')]);_0x100cbc[_0xccf3('0x33')]=qs[_0xccf3('0x2b')](_[_0xccf3('0x34')](_0x468a39[_0xccf3('0x2a')],_0x5a9294[_0xccf3('0x2b')]),_0x3ddeb3);if(_0x468a39['query'][_0xccf3('0x35')]){_0x100cbc[_0xccf3('0x33')]=_['merge'](_0x100cbc[_0xccf3('0x33')],{'$or':_[_0xccf3('0x29')](_0x3ddeb3,function(_0x1c8341){if(_0x1c8341[_0xccf3('0x26')]!==_0xccf3('0x36')){var _0xa03b4a={};_0xa03b4a[_0x1c8341[_0xccf3('0x23')]]={'$like':'%'+_0x468a39[_0xccf3('0x2a')][_0xccf3('0x35')]+'%'};return _0xa03b4a;}})});}_0x100cbc=_[_0xccf3('0x37')]({},_0x100cbc,_0x468a39[_0xccf3('0x38')]);var _0xaf128b={'where':_0x100cbc[_0xccf3('0x33')]};return db['JscriptySessionReport']['count'](_0xaf128b)[_0xccf3('0x20')](function(_0x3b3fc1){_0x5f5add['count']=_0x3b3fc1;if(_0x468a39[_0xccf3('0x2a')][_0xccf3('0x39')]){_0x100cbc[_0xccf3('0x3a')]=[{'all':!![]}];}return db[_0xccf3('0x3b')][_0xccf3('0x3c')](_0x100cbc);})[_0xccf3('0x20')](function(_0x2eddb2){_0x5f5add['rows']=_0x2eddb2;return _0x5f5add;})[_0xccf3('0x20')](respondWithFilteredResult(_0x2ee583,_0x100cbc))[_0xccf3('0x3d')](handleError(_0x2ee583,null));};exports[_0xccf3('0x3e')]=function(_0x16cf49,_0x50ea76){var _0x57031c={'raw':!![],'where':{'id':_0x16cf49[_0xccf3('0x3f')]['id']}},_0x5630b8={};_0x5630b8[_0xccf3('0x28')]=_['keys'](db['JscriptySessionReport'][_0xccf3('0x40')]);_0x5630b8[_0xccf3('0x2a')]=_['keys'](_0x16cf49['query']);_0x5630b8['filters']=_[_0xccf3('0x2d')](_0x5630b8[_0xccf3('0x28')],_0x5630b8['query']);_0x57031c[_0xccf3('0x2c')]=_[_0xccf3('0x2d')](_0x5630b8[_0xccf3('0x28')],qs[_0xccf3('0x2e')](_0x16cf49['query'][_0xccf3('0x2e')]));_0x57031c['attributes']=_0x57031c['attributes'][_0xccf3('0x2f')]?_0x57031c[_0xccf3('0x2c')]:_0x5630b8[_0xccf3('0x28')];if(_0x16cf49[_0xccf3('0x2a')]['includeAll']){_0x57031c[_0xccf3('0x3a')]=[{'all':!![]}];}_0x57031c=_[_0xccf3('0x37')]({},_0x57031c,_0x16cf49[_0xccf3('0x38')]);return db[_0xccf3('0x3b')][_0xccf3('0x41')](_0x57031c)[_0xccf3('0x20')](handleEntityNotFound(_0x50ea76,null))[_0xccf3('0x20')](respondWithResult(_0x50ea76,null))[_0xccf3('0x3d')](handleError(_0x50ea76,null));};exports[_0xccf3('0x42')]=function(_0xe55f2c,_0x514d24){return db[_0xccf3('0x3b')][_0xccf3('0x42')](_0xe55f2c[_0xccf3('0x43')],{})['then'](respondWithResult(_0x514d24,0xc9))[_0xccf3('0x3d')](handleError(_0x514d24,null));};exports[_0xccf3('0x44')]=function(_0x555483,_0x3013ef){if(_0x555483[_0xccf3('0x43')]['id']){delete _0x555483[_0xccf3('0x43')]['id'];}return db[_0xccf3('0x3b')][_0xccf3('0x41')]({'where':{'id':_0x555483['params']['id']}})[_0xccf3('0x20')](handleEntityNotFound(_0x3013ef,null))[_0xccf3('0x20')](saveUpdates(_0x555483['body'],null))['then'](respondWithResult(_0x3013ef,null))['catch'](handleError(_0x3013ef,null));};exports[_0xccf3('0x45')]=function(_0x587140,_0x497ed6){return db[_0xccf3('0x3b')]['find']({'where':{'id':_0x587140[_0xccf3('0x3f')]['id']}})[_0xccf3('0x20')](handleEntityNotFound(_0x497ed6,null))[_0xccf3('0x20')](removeEntity(_0x497ed6,null))['catch'](handleError(_0x497ed6,null));};exports[_0xccf3('0x46')]=function(_0xa4ddcd,_0x2cd095){return db[_0xccf3('0x3b')][_0xccf3('0x46')]()[_0xccf3('0x20')](respondWithResult(_0x2cd095,null))[_0xccf3('0x3d')](handleError(_0x2cd095,null));};exports[_0xccf3('0x47')]=function(_0xe56662,_0xb51e9a,_0x8b4f43){var _0x57d69f={'raw':!![],'where':{}};var _0x5dd7ca={};var _0x5482eb={'count':0x0,'rows':[]};return db['JscriptySessionReport'][_0xccf3('0x48')]({'where':{'id':_0xe56662[_0xccf3('0x3f')]['id']}})[_0xccf3('0x20')](handleEntityNotFound(_0xb51e9a,null))[_0xccf3('0x20')](function(_0x50ac24){if(_0x50ac24){_0x5dd7ca[_0xccf3('0x28')]=_['keys'](db[_0xccf3('0x49')]['rawAttributes']);_0x5dd7ca[_0xccf3('0x2a')]=_[_0xccf3('0x4a')](_0xe56662[_0xccf3('0x2a')]);_0x5dd7ca[_0xccf3('0x2b')]=_[_0xccf3('0x2d')](_0x5dd7ca['model'],_0x5dd7ca[_0xccf3('0x2a')]);_0x57d69f['attributes']=_[_0xccf3('0x2d')](_0x5dd7ca['model'],qs[_0xccf3('0x2e')](_0xe56662['query'][_0xccf3('0x2e')]));_0x57d69f['attributes']=_0x57d69f[_0xccf3('0x2c')][_0xccf3('0x2f')]?_0x57d69f['attributes']:_0x5dd7ca[_0xccf3('0x28')];if(!_0xe56662[_0xccf3('0x2a')]['hasOwnProperty'](_0xccf3('0x31'))){_0x57d69f[_0xccf3('0x1c')]=qs[_0xccf3('0x1c')](_0xe56662[_0xccf3('0x2a')]['limit']);_0x57d69f[_0xccf3('0x1d')]=qs['offset'](_0xe56662[_0xccf3('0x2a')][_0xccf3('0x1d')]);}_0x57d69f[_0xccf3('0x4b')]=qs[_0xccf3('0x32')](_0xe56662[_0xccf3('0x2a')][_0xccf3('0x32')]);_0x57d69f['where']=qs[_0xccf3('0x2b')](_[_0xccf3('0x34')](_0xe56662['query'],_0x5dd7ca[_0xccf3('0x2b')]));_0x57d69f[_0xccf3('0x33')][_0xccf3('0x4c')]=_0x50ac24['id'];if(_0xe56662['query']['filter']){_0x57d69f['where']=_[_0xccf3('0x37')](_0x57d69f['where'],{'$or':_['map'](_0x57d69f[_0xccf3('0x2c')],function(_0x1e45f9){var _0x3f81b7={};_0x3f81b7[_0x1e45f9]={'$like':'%'+_0xe56662[_0xccf3('0x2a')]['filter']+'%'};return _0x3f81b7;})});}_0x57d69f=_[_0xccf3('0x37')]({},_0x57d69f,_0xe56662['options']);return db[_0xccf3('0x49')][_0xccf3('0x4d')]({'where':_0x57d69f[_0xccf3('0x33')]})[_0xccf3('0x20')](function(_0x2432a8){_0x5482eb[_0xccf3('0x4d')]=_0x2432a8;if(_0xe56662['query'][_0xccf3('0x39')]){_0x57d69f[_0xccf3('0x3a')]=[{'all':!![]}];}return db[_0xccf3('0x49')][_0xccf3('0x3c')](_0x57d69f);})['then'](function(_0x2a969a){_0x5482eb[_0xccf3('0x4e')]=_0x2a969a;return _0x5482eb;});}})[_0xccf3('0x20')](respondWithFilteredResult(_0xb51e9a,_0x57d69f))[_0xccf3('0x3d')](handleError(_0xb51e9a,null));};
\ No newline at end of file
index c53ea65..dfd63cf 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe14b=['bluebird','path','./jscriptySessionReport.attributes','exports','define','JscriptySessionReport','report_jscripty_sessions','lodash','util','moment'];(function(_0x2d1bc4,_0xb52cad){var _0x567e07=function(_0x57f31a){while(--_0x57f31a){_0x2d1bc4['push'](_0x2d1bc4['shift']());}};_0x567e07(++_0xb52cad);}(_0xe14b,0x93));var _0xbe14=function(_0x3cbe6e,_0x296e03){_0x3cbe6e=_0x3cbe6e-0x0;var _0x44615f=_0xe14b[_0x3cbe6e];return _0x44615f;};'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 _0x326f=['report_jscripty_sessions','lodash','api','moment','bluebird','request-promise','path','rimraf','../../config/environment','./jscriptySessionReport.attributes','exports','define','JscriptySessionReport'];(function(_0x41015c,_0x5aa973){var _0x44bb9f=function(_0x1e28c5){while(--_0x1e28c5){_0x41015c['push'](_0x41015c['shift']());}};_0x44bb9f(++_0x5aa973);}(_0x326f,0xd1));var _0xf326=function(_0x2caf5e,_0x3a91db){_0x2caf5e=_0x2caf5e-0x0;var _0x37afbe=_0x326f[_0x2caf5e];return _0x37afbe;};'use strict';var _=require(_0xf326('0x0'));var util=require('util');var logger=require('../../config/logger')(_0xf326('0x1'));var moment=require(_0xf326('0x2'));var BPromise=require(_0xf326('0x3'));var rp=require(_0xf326('0x4'));var fs=require('fs');var path=require(_0xf326('0x5'));var rimraf=require(_0xf326('0x6'));var config=require(_0xf326('0x7'));var attributes=require(_0xf326('0x8'));module[_0xf326('0x9')]=function(_0x3ace29,_0x4c2249){return _0x3ace29[_0xf326('0xa')](_0xf326('0xb'),attributes,{'tableName':_0xf326('0xc'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index a28121d..9b6cf96 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9582=['error','code','message','info','result','lodash','util','moment','bluebird','randomstring','ioredis','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','request','JscriptySessionReport,\x20%s,\x20%s','debug','JscriptySessionReport,\x20%s,\x20%s,\x20%s','request\x20sent','stringify'];(function(_0x5a9bae,_0x172dc){var _0x289027=function(_0x8ff5cb){while(--_0x8ff5cb){_0x5a9bae['push'](_0x5a9bae['shift']());}};_0x289027(++_0x172dc);}(_0x9582,0x95));var _0x2958=function(_0x50e424,_0x38dca3){_0x50e424=_0x50e424-0x0;var _0x216b93=_0x9582[_0x50e424];return _0x216b93;};'use strict';var _=require(_0x2958('0x0'));var util=require(_0x2958('0x1'));var moment=require(_0x2958('0x2'));var BPromise=require(_0x2958('0x3'));var rs=require(_0x2958('0x4'));var fs=require('fs');var Redis=require(_0x2958('0x5'));var db=require('../../mysqldb')['db'];var utils=require(_0x2958('0x6'));var logger=require(_0x2958('0x7'))(_0x2958('0x8'));var config=require(_0x2958('0x9'));var jayson=require(_0x2958('0xa'));var client=jayson[_0x2958('0xb')][_0x2958('0xc')]({'port':0x232a});function respondWithRpcPromise(_0x309525,_0xa385ec,_0x2e571b){return new BPromise(function(_0x56ca85,_0x5ec1b3){return client[_0x2958('0xd')](_0x309525,_0x2e571b)['then'](function(_0x10db1e){logger['info'](_0x2958('0xe'),_0xa385ec,'request\x20sent');logger[_0x2958('0xf')](_0x2958('0x10'),_0xa385ec,_0x2958('0x11'),JSON[_0x2958('0x12')](_0x10db1e));if(_0x10db1e[_0x2958('0x13')]){if(_0x10db1e['error'][_0x2958('0x14')]===0x1f4){logger[_0x2958('0x13')](_0x2958('0xe'),_0xa385ec,_0x10db1e[_0x2958('0x13')][_0x2958('0x15')]);return _0x5ec1b3(_0x10db1e[_0x2958('0x13')][_0x2958('0x15')]);}logger[_0x2958('0x13')]('JscriptySessionReport,\x20%s,\x20%s',_0xa385ec,_0x10db1e[_0x2958('0x13')][_0x2958('0x15')]);return _0x56ca85(_0x10db1e['error']['message']);}else{logger[_0x2958('0x16')](_0x2958('0xe'),_0xa385ec,'request\x20sent');_0x56ca85(_0x10db1e[_0x2958('0x17')]['message']);}})['catch'](function(_0x429d42){logger[_0x2958('0x13')]('JscriptySessionReport,\x20%s,\x20%s',_0xa385ec,_0x429d42);_0x5ec1b3(_0x429d42);});});}
\ No newline at end of file
+var _0xbbbc=['../../mysqldb','../../config/logger','rpc','../../config/environment','jayson/promise','client','request','then','info','debug','request\x20sent','error','message','result','catch','lodash','util','moment','bluebird','randomstring','ioredis'];(function(_0x461b52,_0x20b9ed){var _0x2c3811=function(_0xba555c){while(--_0xba555c){_0x461b52['push'](_0x461b52['shift']());}};_0x2c3811(++_0x20b9ed);}(_0xbbbc,0xf6));var _0xcbbb=function(_0x4d3e97,_0x749913){_0x4d3e97=_0x4d3e97-0x0;var _0x3147d7=_0xbbbc[_0x4d3e97];return _0x3147d7;};'use strict';var _=require(_0xcbbb('0x0'));var util=require(_0xcbbb('0x1'));var moment=require(_0xcbbb('0x2'));var BPromise=require(_0xcbbb('0x3'));var rs=require(_0xcbbb('0x4'));var fs=require('fs');var Redis=require(_0xcbbb('0x5'));var db=require(_0xcbbb('0x6'))['db'];var utils=require('../../config/utils');var logger=require(_0xcbbb('0x7'))(_0xcbbb('0x8'));var config=require(_0xcbbb('0x9'));var jayson=require(_0xcbbb('0xa'));var client=jayson[_0xcbbb('0xb')]['http']({'port':0x232a});function respondWithRpcPromise(_0x388197,_0x1796b4,_0x32ec9c){return new BPromise(function(_0x6f4fd8,_0x356249){return client[_0xcbbb('0xc')](_0x388197,_0x32ec9c)[_0xcbbb('0xd')](function(_0x4ec90a){logger[_0xcbbb('0xe')]('JscriptySessionReport,\x20%s,\x20%s',_0x1796b4,'request\x20sent');logger[_0xcbbb('0xf')]('JscriptySessionReport,\x20%s,\x20%s,\x20%s',_0x1796b4,_0xcbbb('0x10'),JSON['stringify'](_0x4ec90a));if(_0x4ec90a[_0xcbbb('0x11')]){if(_0x4ec90a[_0xcbbb('0x11')]['code']===0x1f4){logger[_0xcbbb('0x11')]('JscriptySessionReport,\x20%s,\x20%s',_0x1796b4,_0x4ec90a[_0xcbbb('0x11')]['message']);return _0x356249(_0x4ec90a[_0xcbbb('0x11')][_0xcbbb('0x12')]);}logger[_0xcbbb('0x11')]('JscriptySessionReport,\x20%s,\x20%s',_0x1796b4,_0x4ec90a[_0xcbbb('0x11')][_0xcbbb('0x12')]);return _0x6f4fd8(_0x4ec90a[_0xcbbb('0x11')][_0xcbbb('0x12')]);}else{logger['info']('JscriptySessionReport,\x20%s,\x20%s',_0x1796b4,_0xcbbb('0x10'));_0x6f4fd8(_0x4ec90a[_0xcbbb('0x13')][_0xcbbb('0x12')]);}})[_0xcbbb('0x14')](function(_0x5e25ca){logger[_0xcbbb('0x11')]('JscriptySessionReport,\x20%s,\x20%s',_0x1796b4,_0x5e25ca);_0x356249(_0x5e25ca);});});}
\ No newline at end of file
index 0985a4e..7ce44a8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2234=['/:id','isAuthenticated','multer','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','get','put'];(function(_0x25fa25,_0x26b171){var _0x1a9bbd=function(_0x1b4d2f){while(--_0x1b4d2f){_0x25fa25['push'](_0x25fa25['shift']());}};_0x1a9bbd(++_0x26b171);}(_0x2234,0x16e));var _0x4223=function(_0x4513e8,_0x16f480){_0x4513e8=_0x4513e8-0x0;var _0x1e8758=_0x2234[_0x4513e8];return _0x1e8758;};'use strict';var multer=require(_0x4223('0x0'));var util=require(_0x4223('0x1'));var path=require(_0x4223('0x2'));var timeout=require(_0x4223('0x3'));var express=require(_0x4223('0x4'));var router=express[_0x4223('0x5')]();var fs_extra=require(_0x4223('0x6'));var auth=require(_0x4223('0x7'));var interaction=require(_0x4223('0x8'));var config=require(_0x4223('0x9'));var controller=require('./license.controller');router[_0x4223('0xa')]('/',controller['index']);router[_0x4223('0xb')](_0x4223('0xc'),auth[_0x4223('0xd')](),controller['update']);module['exports']=router;
\ No newline at end of file
+var _0xa74a=['put','/:id','isAuthenticated','update','multer','util','path','connect-timeout','express','Router','../../components/auth/service','../../components/interaction/service','../../config/environment','index'];(function(_0x1e4063,_0x1dee7f){var _0x5e9ddb=function(_0x35569e){while(--_0x35569e){_0x1e4063['push'](_0x1e4063['shift']());}};_0x5e9ddb(++_0x1dee7f);}(_0xa74a,0x66));var _0xaa74=function(_0x33f993,_0x12556a){_0x33f993=_0x33f993-0x0;var _0x4a87e5=_0xa74a[_0x33f993];return _0x4a87e5;};'use strict';var multer=require(_0xaa74('0x0'));var util=require(_0xaa74('0x1'));var path=require(_0xaa74('0x2'));var timeout=require(_0xaa74('0x3'));var express=require(_0xaa74('0x4'));var router=express[_0xaa74('0x5')]();var fs_extra=require('fs-extra');var auth=require(_0xaa74('0x6'));var interaction=require(_0xaa74('0x7'));var config=require(_0xaa74('0x8'));var controller=require('./license.controller');router['get']('/',controller[_0xaa74('0x9')]);router[_0xaa74('0xa')](_0xaa74('0xb'),auth[_0xaa74('0xc')](),controller[_0xaa74('0xd')]);module['exports']=router;
\ No newline at end of file
index bbd5c44..87822bd 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7a53=['exports','TEXT','STRING','sequelize'];(function(_0x41347e,_0x3964df){var _0x560f31=function(_0x4e02f5){while(--_0x4e02f5){_0x41347e['push'](_0x41347e['shift']());}};_0x560f31(++_0x3964df);}(_0x7a53,0x137));var _0x37a5=function(_0x3f3b20,_0x302875){_0x3f3b20=_0x3f3b20-0x0;var _0x45088d=_0x7a53[_0x3f3b20];return _0x45088d;};'use strict';var Sequelize=require(_0x37a5('0x0'));module[_0x37a5('0x1')]={'license':{'type':Sequelize[_0x37a5('0x2')]},'data1':{'type':Sequelize[_0x37a5('0x3')]},'data2':{'type':Sequelize['STRING']},'chatLicenseExceeded':{'type':Sequelize['INTEGER'],'defaultValue':0x0}};
\ No newline at end of file
+var _0x5cef=['STRING','INTEGER','sequelize','exports'];(function(_0x55471c,_0x2b33fa){var _0x202a6f=function(_0x14ac48){while(--_0x14ac48){_0x55471c['push'](_0x55471c['shift']());}};_0x202a6f(++_0x2b33fa);}(_0x5cef,0x1ee));var _0xf5ce=function(_0x1eefb6,_0x5143f7){_0x1eefb6=_0x1eefb6-0x0;var _0x43c4c0=_0x5cef[_0x1eefb6];return _0x43c4c0;};'use strict';var Sequelize=require(_0xf5ce('0x0'));module[_0xf5ce('0x1')]={'license':{'type':Sequelize['TEXT']},'data1':{'type':Sequelize[_0xf5ce('0x2')]},'data2':{'type':Sequelize['STRING']},'chatLicenseExceeded':{'type':Sequelize[_0xf5ce('0x3')],'defaultValue':0x0}};
\ No newline at end of file
index c51bb74..8bd7df5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xabce=['status','end','json','limit','count','offset','Content-Range','apply','reject','save','update','then','sendStatus','error','name','send','model','keys','License','rawAttributes','query','intersection','attributes','fields','merge','getLicense','catch','find','get','body','demo','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','../../mysqldb'];(function(_0x1b4397,_0x365c12){var _0x2536c6=function(_0x115f15){while(--_0x115f15){_0x1b4397['push'](_0x1b4397['shift']());}};_0x2536c6(++_0x365c12);}(_0xabce,0x103));var _0xeabc=function(_0x2d8fc2,_0x1c461d){_0x2d8fc2=_0x2d8fc2-0x0;var _0x3a9e53=_0xabce[_0x2d8fc2];return _0x3a9e53;};'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);};}var utilLicense=require(_0xeabc('0x18'));exports['index']=function(_0x2163e6,_0x38572d){var _0x2b568f={'raw':!![],'where':{'id':0x1}},_0x2f8633={};_0x2f8633[_0xeabc('0x2a')]=_[_0xeabc('0x2b')](db[_0xeabc('0x2c')][_0xeabc('0x2d')]);_0x2f8633[_0xeabc('0x2e')]=_['keys'](_0x2163e6[_0xeabc('0x2e')]);_0x2f8633['filters']=_[_0xeabc('0x2f')](_0x2f8633[_0xeabc('0x2a')],_0x2f8633[_0xeabc('0x2e')]);_0x2b568f[_0xeabc('0x30')]=_[_0xeabc('0x2f')](_0x2f8633[_0xeabc('0x2a')],qs[_0xeabc('0x31')](_0x2163e6['query'][_0xeabc('0x31')]));_0x2b568f[_0xeabc('0x30')]=_0x2b568f[_0xeabc('0x30')]['length']?_0x2b568f[_0xeabc('0x30')]:_0x2f8633[_0xeabc('0x2a')];_0x2b568f=_[_0xeabc('0x32')]({},_0x2b568f,_0x2163e6['options']);return utilLicense[_0xeabc('0x33')](_0x2b568f)[_0xeabc('0x25')](respondWithResult(_0x38572d,null))[_0xeabc('0x34')](handleError(_0x38572d,null));};exports['update']=function(_0xf98c7c,_0x286203){if(_0xf98c7c['body']['id']){delete _0xf98c7c['body']['id'];}return db[_0xeabc('0x2c')][_0xeabc('0x35')]({'where':{'id':_0xf98c7c['params']['id']}})[_0xeabc('0x25')](handleEntityNotFound(_0x286203,null))[_0xeabc('0x25')](function(_0x3edee7){var _0x10434e=_0x3edee7[_0xeabc('0x36')]({'plain':!![]});return utilLicense['checkLicense'](_0x10434e,_0xf98c7c[_0xeabc('0x37')]['key']);})[_0xeabc('0x25')](function(_0x2bda29){if(!_0x2bda29[_0xeabc('0x38')]){return saveUpdates(_0xf98c7c['body'],null);}return _0x2bda29;})['then'](respondWithResult(_0x286203,null))[_0xeabc('0x34')](handleError(_0x286203,null));};
\ No newline at end of file
+var _0x7a54=['count','limit','set','Content-Range','reject','save','update','then','destroy','error','stack','name','send','index','model','License','query','keys','intersection','attributes','fields','length','options','getLicense','body','find','checkLicense','key','demo','catch','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'];(function(_0x5cfa6a,_0x4d69e8){var _0x204e10=function(_0x364f3a){while(--_0x364f3a){_0x5cfa6a['push'](_0x5cfa6a['shift']());}};_0x204e10(++_0x4d69e8);}(_0x7a54,0x106));var _0x47a5=function(_0x10a631,_0x9a24ef){_0x10a631=_0x10a631-0x0;var _0x207a1e=_0x7a54[_0x10a631];return _0x207a1e;};'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);};}var utilLicense=require(_0x47a5('0x14'));exports[_0x47a5('0x29')]=function(_0x16631f,_0x361bfa){var _0x1127f8={'raw':!![],'where':{'id':0x1}},_0x11a4fa={};_0x11a4fa[_0x47a5('0x2a')]=_['keys'](db[_0x47a5('0x2b')]['rawAttributes']);_0x11a4fa[_0x47a5('0x2c')]=_[_0x47a5('0x2d')](_0x16631f[_0x47a5('0x2c')]);_0x11a4fa['filters']=_[_0x47a5('0x2e')](_0x11a4fa[_0x47a5('0x2a')],_0x11a4fa[_0x47a5('0x2c')]);_0x1127f8[_0x47a5('0x2f')]=_['intersection'](_0x11a4fa['model'],qs[_0x47a5('0x30')](_0x16631f[_0x47a5('0x2c')]['fields']));_0x1127f8['attributes']=_0x1127f8[_0x47a5('0x2f')][_0x47a5('0x31')]?_0x1127f8['attributes']:_0x11a4fa[_0x47a5('0x2a')];_0x1127f8=_['merge']({},_0x1127f8,_0x16631f[_0x47a5('0x32')]);return utilLicense[_0x47a5('0x33')](_0x1127f8)['then'](respondWithResult(_0x361bfa,null))['catch'](handleError(_0x361bfa,null));};exports[_0x47a5('0x22')]=function(_0x5910bb,_0x403028){if(_0x5910bb[_0x47a5('0x34')]['id']){delete _0x5910bb[_0x47a5('0x34')]['id'];}return db['License'][_0x47a5('0x35')]({'where':{'id':_0x5910bb['params']['id']}})['then'](handleEntityNotFound(_0x403028,null))[_0x47a5('0x23')](function(_0x5a8a7c){var _0x25cce0=_0x5a8a7c['get']({'plain':!![]});return utilLicense[_0x47a5('0x36')](_0x25cce0,_0x5910bb[_0x47a5('0x34')][_0x47a5('0x37')]);})[_0x47a5('0x23')](function(_0x36add5){if(!_0x36add5[_0x47a5('0x38')]){return saveUpdates(_0x5910bb[_0x47a5('0x34')],null);}return _0x36add5;})[_0x47a5('0x23')](respondWithResult(_0x403028,null))[_0x47a5('0x39')](handleError(_0x403028,null));};
\ No newline at end of file
index b545bea..93af0fe 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x79e1=['path','rimraf','../../config/environment','./license.attributes','exports','define','License','lodash','util','../../config/logger','bluebird'];(function(_0x59aaec,_0x2f907e){var _0xa4a9f3=function(_0x117e56){while(--_0x117e56){_0x59aaec['push'](_0x59aaec['shift']());}};_0xa4a9f3(++_0x2f907e);}(_0x79e1,0x1b4));var _0x179e=function(_0x4b1032,_0x36952e){_0x4b1032=_0x4b1032-0x0;var _0x5a1d55=_0x79e1[_0x4b1032];return _0x5a1d55;};'use strict';var _=require(_0x179e('0x0'));var util=require(_0x179e('0x1'));var logger=require(_0x179e('0x2'))('api');var moment=require('moment');var BPromise=require(_0x179e('0x3'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x179e('0x4'));var rimraf=require(_0x179e('0x5'));var config=require(_0x179e('0x6'));var attributes=require(_0x179e('0x7'));module[_0x179e('0x8')]=function(_0x39952c,_0x31125d){return _0x39952c[_0x179e('0x9')](_0x179e('0xa'),attributes,{'tableName':'license','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x88f5=['rimraf','./license.attributes','exports','define','License','license','util','api','moment','bluebird','path'];(function(_0x5ceb6f,_0x1bbcaa){var _0x52850a=function(_0xf41f2){while(--_0xf41f2){_0x5ceb6f['push'](_0x5ceb6f['shift']());}};_0x52850a(++_0x1bbcaa);}(_0x88f5,0xa0));var _0x588f=function(_0x1f55ed,_0x5d0748){_0x1f55ed=_0x1f55ed-0x0;var _0x251467=_0x88f5[_0x1f55ed];return _0x251467;};'use strict';var _=require('lodash');var util=require(_0x588f('0x0'));var logger=require('../../config/logger')(_0x588f('0x1'));var moment=require(_0x588f('0x2'));var BPromise=require(_0x588f('0x3'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x588f('0x4'));var rimraf=require(_0x588f('0x5'));var config=require('../../config/environment');var attributes=require(_0x588f('0x6'));module[_0x588f('0x7')]=function(_0x5dd132,_0x780e6a){return _0x5dd132[_0x588f('0x8')](_0x588f('0x9'),attributes,{'tableName':_0x588f('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 2c9f413..f9ba2a5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x382c=['../../config/environment','http','request','then','info','License,\x20%s,\x20%s','request\x20sent','stringify','error','code','message','lodash','util','moment','bluebird','randomstring','../../mysqldb','../../config/utils','../../config/logger'];(function(_0x4b8ae0,_0x26d691){var _0x5e3737=function(_0x17363b){while(--_0x17363b){_0x4b8ae0['push'](_0x4b8ae0['shift']());}};_0x5e3737(++_0x26d691);}(_0x382c,0x1c0));var _0xc382=function(_0x28e71a,_0x4405bd){_0x28e71a=_0x28e71a-0x0;var _0x268fed=_0x382c[_0x28e71a];return _0x268fed;};'use strict';var _=require(_0xc382('0x0'));var util=require(_0xc382('0x1'));var moment=require(_0xc382('0x2'));var BPromise=require(_0xc382('0x3'));var rs=require(_0xc382('0x4'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0xc382('0x5'))['db'];var utils=require(_0xc382('0x6'));var logger=require(_0xc382('0x7'))('rpc');var config=require(_0xc382('0x8'));var jayson=require('jayson/promise');var client=jayson['client'][_0xc382('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x2c2270,_0x158c17,_0x48ee44){return new BPromise(function(_0x1ba772,_0x53a72d){return client[_0xc382('0xa')](_0x2c2270,_0x48ee44)[_0xc382('0xb')](function(_0x1af66a){logger[_0xc382('0xc')](_0xc382('0xd'),_0x158c17,_0xc382('0xe'));logger['debug']('License,\x20%s,\x20%s,\x20%s',_0x158c17,'request\x20sent',JSON[_0xc382('0xf')](_0x1af66a));if(_0x1af66a[_0xc382('0x10')]){if(_0x1af66a[_0xc382('0x10')][_0xc382('0x11')]===0x1f4){logger['error'](_0xc382('0xd'),_0x158c17,_0x1af66a[_0xc382('0x10')][_0xc382('0x12')]);return _0x53a72d(_0x1af66a[_0xc382('0x10')][_0xc382('0x12')]);}logger[_0xc382('0x10')](_0xc382('0xd'),_0x158c17,_0x1af66a[_0xc382('0x10')]['message']);return _0x1ba772(_0x1af66a[_0xc382('0x10')][_0xc382('0x12')]);}else{logger['info']('License,\x20%s,\x20%s',_0x158c17,_0xc382('0xe'));_0x1ba772(_0x1af66a['result'][_0xc382('0x12')]);}})['catch'](function(_0x3c5e1f){logger[_0xc382('0x10')](_0xc382('0xd'),_0x158c17,_0x3c5e1f);_0x53a72d(_0x3c5e1f);});});}
\ No newline at end of file
+var _0x74bf=['catch','lodash','bluebird','randomstring','../../mysqldb','../../config/logger','rpc','jayson/promise','http','request','then','info','License,\x20%s,\x20%s','request\x20sent','debug','License,\x20%s,\x20%s,\x20%s','error','result'];(function(_0x33c61f,_0x3c2c7a){var _0x387396=function(_0x545c34){while(--_0x545c34){_0x33c61f['push'](_0x33c61f['shift']());}};_0x387396(++_0x3c2c7a);}(_0x74bf,0xeb));var _0xf74b=function(_0x12faa4,_0x180e3f){_0x12faa4=_0x12faa4-0x0;var _0x57de5f=_0x74bf[_0x12faa4];return _0x57de5f;};'use strict';var _=require(_0xf74b('0x0'));var util=require('util');var moment=require('moment');var BPromise=require(_0xf74b('0x1'));var rs=require(_0xf74b('0x2'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0xf74b('0x3'))['db'];var utils=require('../../config/utils');var logger=require(_0xf74b('0x4'))(_0xf74b('0x5'));var config=require('../../config/environment');var jayson=require(_0xf74b('0x6'));var client=jayson['client'][_0xf74b('0x7')]({'port':0x232a});function respondWithRpcPromise(_0x1a1d42,_0x4fa31c,_0x56e4c0){return new BPromise(function(_0x7ced6d,_0xb50028){return client[_0xf74b('0x8')](_0x1a1d42,_0x56e4c0)[_0xf74b('0x9')](function(_0x353564){logger[_0xf74b('0xa')](_0xf74b('0xb'),_0x4fa31c,_0xf74b('0xc'));logger[_0xf74b('0xd')](_0xf74b('0xe'),_0x4fa31c,'request\x20sent',JSON['stringify'](_0x353564));if(_0x353564[_0xf74b('0xf')]){if(_0x353564[_0xf74b('0xf')]['code']===0x1f4){logger[_0xf74b('0xf')](_0xf74b('0xb'),_0x4fa31c,_0x353564[_0xf74b('0xf')]['message']);return _0xb50028(_0x353564[_0xf74b('0xf')]['message']);}logger[_0xf74b('0xf')]('License,\x20%s,\x20%s',_0x4fa31c,_0x353564[_0xf74b('0xf')]['message']);return _0x7ced6d(_0x353564[_0xf74b('0xf')]['message']);}else{logger[_0xf74b('0xa')](_0xf74b('0xb'),_0x4fa31c,'request\x20sent');_0x7ced6d(_0x353564[_0xf74b('0x10')]['message']);}})[_0xf74b('0x11')](function(_0x3def19){logger[_0xf74b('0xf')]('License,\x20%s,\x20%s',_0x4fa31c,_0x3def19);_0xb50028(_0x3def19);});});}
\ No newline at end of file
index ce8d11d..e8f423c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4198=['update','delete','removeDispositions','removeImap','removeAgents','exports','multer','util','path','express','Router','fs-extra','../../components/interaction/service','../../config/environment','get','index','describe','/:id','isAuthenticated','/:id/dispositions','getDispositions','/:id/canned_answers','/:id/in_servers','/:id/out_servers','getSmtp','/:id/applications','getApplications','/:id/messages','getMessages','/:id/verify','/:id/users','getAgents','post','addDisposition','addAnswer','create','addImap','addSmtp','/:id/interactions','addInteraction','addApplications','send','addAgents','put'];(function(_0xa01acb,_0x2cf834){var _0x5b02a9=function(_0xd4c21){while(--_0xd4c21){_0xa01acb['push'](_0xa01acb['shift']());}};_0x5b02a9(++_0x2cf834);}(_0x4198,0x192));var _0x8419=function(_0x4caf1a,_0x4fe92d){_0x4caf1a=_0x4caf1a-0x0;var _0x5c5936=_0x4198[_0x4caf1a];return _0x5c5936;};'use strict';var multer=require(_0x8419('0x0'));var util=require(_0x8419('0x1'));var path=require(_0x8419('0x2'));var timeout=require('connect-timeout');var express=require(_0x8419('0x3'));var router=express[_0x8419('0x4')]();var fs_extra=require(_0x8419('0x5'));var auth=require('../../components/auth/service');var interaction=require(_0x8419('0x6'));var config=require(_0x8419('0x7'));var controller=require('./mailAccount.controller');router[_0x8419('0x8')]('/',auth['isAuthenticated'](),controller[_0x8419('0x9')]);router[_0x8419('0x8')]('/describe',auth['isAuthenticated'](),controller[_0x8419('0xa')]);router['get'](_0x8419('0xb'),auth[_0x8419('0xc')](),controller['show']);router[_0x8419('0x8')](_0x8419('0xd'),auth[_0x8419('0xc')](),controller[_0x8419('0xe')]);router[_0x8419('0x8')](_0x8419('0xf'),auth[_0x8419('0xc')](),controller['getAnswers']);router[_0x8419('0x8')](_0x8419('0x10'),auth[_0x8419('0xc')](),controller['getImap']);router[_0x8419('0x8')](_0x8419('0x11'),auth[_0x8419('0xc')](),controller[_0x8419('0x12')]);router['get']('/:id/interactions',auth[_0x8419('0xc')](),controller['getInteractions']);router['get'](_0x8419('0x13'),auth[_0x8419('0xc')](),controller[_0x8419('0x14')]);router[_0x8419('0x8')](_0x8419('0x15'),auth[_0x8419('0xc')](),controller[_0x8419('0x16')]);router[_0x8419('0x8')](_0x8419('0x17'),auth[_0x8419('0xc')](),controller['verifySmtp']);router[_0x8419('0x8')](_0x8419('0x18'),auth[_0x8419('0xc')](),controller[_0x8419('0x19')]);router[_0x8419('0x1a')](_0x8419('0xd'),auth['isAuthenticated'](),controller[_0x8419('0x1b')]);router[_0x8419('0x1a')](_0x8419('0xf'),auth[_0x8419('0xc')](),controller[_0x8419('0x1c')]);router[_0x8419('0x1a')]('/',auth['isAuthenticated'](),controller[_0x8419('0x1d')]);router[_0x8419('0x1a')](_0x8419('0x10'),auth[_0x8419('0xc')](),controller[_0x8419('0x1e')]);router[_0x8419('0x1a')](_0x8419('0x11'),auth[_0x8419('0xc')](),controller[_0x8419('0x1f')]);router['post'](_0x8419('0x20'),auth['isAuthenticated'](),controller[_0x8419('0x21')]);router['post'](_0x8419('0x13'),auth['isAuthenticated'](),controller[_0x8419('0x22')]);router[_0x8419('0x1a')]('/:id/send',auth[_0x8419('0xc')](),controller[_0x8419('0x23')]);router[_0x8419('0x1a')](_0x8419('0x18'),auth['isAuthenticated'](),controller[_0x8419('0x24')]);router[_0x8419('0x25')](_0x8419('0xb'),auth['isAuthenticated'](),controller[_0x8419('0x26')]);router[_0x8419('0x27')]('/:id/dispositions',auth[_0x8419('0xc')](),controller[_0x8419('0x28')]);router[_0x8419('0x27')](_0x8419('0xf'),auth[_0x8419('0xc')](),controller['removeAnswers']);router[_0x8419('0x27')](_0x8419('0x10'),auth[_0x8419('0xc')](),controller[_0x8419('0x29')]);router['delete']('/:id/out_servers',auth['isAuthenticated'](),controller['removeSmtp']);router[_0x8419('0x27')](_0x8419('0xb'),auth['isAuthenticated'](),controller['destroy']);router[_0x8419('0x27')]('/:id/users',auth['isAuthenticated'](),controller[_0x8419('0x2a')]);module[_0x8419('0x2b')]=router;
\ No newline at end of file
+var _0x9c07=['getInteractions','/:id/applications','/:id/messages','getMessages','/:id/verify','/:id/users','post','addAnswer','create','addImap','/:id/out_servers','addSmtp','/:id/send','send','addAgents','put','removeDispositions','delete','removeImap','destroy','removeAgents','exports','multer','util','connect-timeout','express','Router','fs-extra','../../components/interaction/service','./mailAccount.controller','get','isAuthenticated','index','describe','/:id','show','/:id/dispositions','getDispositions','/:id/canned_answers','/:id/in_servers','getImap','getSmtp','/:id/interactions'];(function(_0x468809,_0x323975){var _0x52abcf=function(_0x27693d){while(--_0x27693d){_0x468809['push'](_0x468809['shift']());}};_0x52abcf(++_0x323975);}(_0x9c07,0x1ef));var _0x79c0=function(_0x17ced7,_0x4e7908){_0x17ced7=_0x17ced7-0x0;var _0xa6f3c=_0x9c07[_0x17ced7];return _0xa6f3c;};'use strict';var multer=require(_0x79c0('0x0'));var util=require(_0x79c0('0x1'));var path=require('path');var timeout=require(_0x79c0('0x2'));var express=require(_0x79c0('0x3'));var router=express[_0x79c0('0x4')]();var fs_extra=require(_0x79c0('0x5'));var auth=require('../../components/auth/service');var interaction=require(_0x79c0('0x6'));var config=require('../../config/environment');var controller=require(_0x79c0('0x7'));router[_0x79c0('0x8')]('/',auth[_0x79c0('0x9')](),controller[_0x79c0('0xa')]);router[_0x79c0('0x8')]('/describe',auth['isAuthenticated'](),controller[_0x79c0('0xb')]);router['get'](_0x79c0('0xc'),auth[_0x79c0('0x9')](),controller[_0x79c0('0xd')]);router[_0x79c0('0x8')](_0x79c0('0xe'),auth[_0x79c0('0x9')](),controller[_0x79c0('0xf')]);router[_0x79c0('0x8')](_0x79c0('0x10'),auth[_0x79c0('0x9')](),controller['getAnswers']);router[_0x79c0('0x8')](_0x79c0('0x11'),auth[_0x79c0('0x9')](),controller[_0x79c0('0x12')]);router[_0x79c0('0x8')]('/:id/out_servers',auth[_0x79c0('0x9')](),controller[_0x79c0('0x13')]);router[_0x79c0('0x8')](_0x79c0('0x14'),auth[_0x79c0('0x9')](),controller[_0x79c0('0x15')]);router[_0x79c0('0x8')](_0x79c0('0x16'),auth[_0x79c0('0x9')](),controller['getApplications']);router[_0x79c0('0x8')](_0x79c0('0x17'),auth[_0x79c0('0x9')](),controller[_0x79c0('0x18')]);router[_0x79c0('0x8')](_0x79c0('0x19'),auth[_0x79c0('0x9')](),controller['verifySmtp']);router[_0x79c0('0x8')](_0x79c0('0x1a'),auth[_0x79c0('0x9')](),controller['getAgents']);router[_0x79c0('0x1b')](_0x79c0('0xe'),auth['isAuthenticated'](),controller['addDisposition']);router['post'](_0x79c0('0x10'),auth[_0x79c0('0x9')](),controller[_0x79c0('0x1c')]);router[_0x79c0('0x1b')]('/',auth[_0x79c0('0x9')](),controller[_0x79c0('0x1d')]);router[_0x79c0('0x1b')](_0x79c0('0x11'),auth['isAuthenticated'](),controller[_0x79c0('0x1e')]);router[_0x79c0('0x1b')](_0x79c0('0x1f'),auth[_0x79c0('0x9')](),controller[_0x79c0('0x20')]);router[_0x79c0('0x1b')]('/:id/interactions',auth[_0x79c0('0x9')](),controller['addInteraction']);router[_0x79c0('0x1b')](_0x79c0('0x16'),auth[_0x79c0('0x9')](),controller['addApplications']);router[_0x79c0('0x1b')](_0x79c0('0x21'),auth['isAuthenticated'](),controller[_0x79c0('0x22')]);router[_0x79c0('0x1b')](_0x79c0('0x1a'),auth[_0x79c0('0x9')](),controller[_0x79c0('0x23')]);router[_0x79c0('0x24')](_0x79c0('0xc'),auth[_0x79c0('0x9')](),controller['update']);router['delete'](_0x79c0('0xe'),auth[_0x79c0('0x9')](),controller[_0x79c0('0x25')]);router[_0x79c0('0x26')](_0x79c0('0x10'),auth['isAuthenticated'](),controller['removeAnswers']);router[_0x79c0('0x26')](_0x79c0('0x11'),auth[_0x79c0('0x9')](),controller[_0x79c0('0x27')]);router['delete'](_0x79c0('0x1f'),auth[_0x79c0('0x9')](),controller['removeSmtp']);router[_0x79c0('0x26')](_0x79c0('0xc'),auth[_0x79c0('0x9')](),controller[_0x79c0('0x28')]);router[_0x79c0('0x26')]('/:id/users',auth[_0x79c0('0x9')](),controller[_0x79c0('0x29')]);module[_0x79c0('0x2a')]=router;
\ No newline at end of file
index ded0245..424009d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc73e=['BOOLEAN','TEXT','Arial,Helvetica,sans-serif','INTEGER','UNSIGNED','Status\x20to\x20put\x20when\x20mandatory\x20disposition\x20is\x20enabled','setDataValue','mandatoryDispositionPauseId','mandatoryDisposition','sequelize','exports','STRING'];(function(_0x51aa62,_0x80b45a){var _0x56955e=function(_0x51f487){while(--_0x51f487){_0x51aa62['push'](_0x51aa62['shift']());}};_0x56955e(++_0x80b45a);}(_0xc73e,0x1e9));var _0xec73=function(_0x4c0d34,_0xf126df){_0x4c0d34=_0x4c0d34-0x0;var _0x5e8ea3=_0xc73e[_0x4c0d34];return _0x5e8ea3;};'use strict';var Sequelize=require(_0xec73('0x0'));module[_0xec73('0x1')]={'description':{'type':Sequelize['STRING']},'name':{'type':Sequelize[_0xec73('0x2')],'allowNull':![]},'service':{'type':Sequelize[_0xec73('0x3')],'defaultValue':![]},'email':{'type':Sequelize['STRING'],'validate':{'isEmail':!![]}},'active':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]},'key':{'type':Sequelize['STRING'],'allowNull':![]},'template':{'type':Sequelize[_0xec73('0x4')]},'markAsUnread':{'type':Sequelize[_0xec73('0x3')],'defaultValue':![]},'fontFamily':{'type':Sequelize['STRING'],'allowNull':![],'defaultValue':_0xec73('0x5')},'fontSize':{'type':Sequelize[_0xec73('0x6')](0x2)[_0xec73('0x7')],'defaultValue':0xd,'validate':{'min':0x8,'max':0x48}},'notificationTemplate':{'type':Sequelize[_0xec73('0x4')],'defaultValue':function(){return'Account:\x20{{account.name}}<br/>{{#queue}}Queue:\x20{{queue.name}}<br/>{{/queue}}From\x20:\x20{{from}}<br/>Subject\x20:\x20{{message.subject}}';}},'notificationSound':{'type':Sequelize[_0xec73('0x3')],'defaultValue':!![]},'notificationShake':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'waitForTheAssignedAgent':{'type':Sequelize[_0xec73('0x6')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0xa},'queueTransfer':{'type':Sequelize[_0xec73('0x3')],'defaultValue':![]},'queueTransferTimeout':{'type':Sequelize[_0xec73('0x6')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0x12c},'agentTransfer':{'type':Sequelize[_0xec73('0x3')],'defaultValue':![]},'agentTransferTimeout':{'type':Sequelize['INTEGER'],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0x12c},'mandatoryDispositionPauseId':{'type':Sequelize['INTEGER'],'allowNull':!![],'defaultValue':null,'comment':_0xec73('0x8')},'mandatoryDisposition':{'type':Sequelize[_0xec73('0x3')],'defaultValue':![],'comment':'Enabled/disables\x20mandatory\x20dispo\x20on\x20a\x20queue','set':function(_0x559935){if(!_0x559935)this[_0xec73('0x9')](_0xec73('0xa'),null);this[_0xec73('0x9')](_0xec73('0xb'),_0x559935);}}};
\ No newline at end of file
+var _0x37f8=['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','mandatoryDispositionPauseId','mandatoryDisposition','exports','STRING','BOOLEAN','INTEGER','UNSIGNED','TEXT'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x37f8,0xd2));var _0x837f=function(_0x2d0259,_0x4f6259){_0x2d0259=_0x2d0259-0x0;var _0x18a31c=_0x37f8[_0x2d0259];return _0x18a31c;};'use strict';var Sequelize=require('sequelize');module[_0x837f('0x0')]={'description':{'type':Sequelize[_0x837f('0x1')]},'name':{'type':Sequelize[_0x837f('0x1')],'allowNull':![]},'service':{'type':Sequelize[_0x837f('0x2')],'defaultValue':![]},'email':{'type':Sequelize['STRING'],'validate':{'isEmail':!![]}},'active':{'type':Sequelize[_0x837f('0x2')],'defaultValue':!![]},'key':{'type':Sequelize['STRING'],'allowNull':![]},'template':{'type':Sequelize['TEXT']},'markAsUnread':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'fontFamily':{'type':Sequelize['STRING'],'allowNull':![],'defaultValue':'Arial,Helvetica,sans-serif'},'fontSize':{'type':Sequelize[_0x837f('0x3')](0x2)[_0x837f('0x4')],'defaultValue':0xd,'validate':{'min':0x8,'max':0x48}},'notificationTemplate':{'type':Sequelize[_0x837f('0x5')],'defaultValue':function(){return _0x837f('0x6');}},'notificationSound':{'type':Sequelize[_0x837f('0x2')],'defaultValue':!![]},'notificationShake':{'type':Sequelize[_0x837f('0x2')],'defaultValue':![]},'waitForTheAssignedAgent':{'type':Sequelize[_0x837f('0x3')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0xa},'queueTransfer':{'type':Sequelize[_0x837f('0x2')],'defaultValue':![]},'queueTransferTimeout':{'type':Sequelize[_0x837f('0x3')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0x12c},'agentTransfer':{'type':Sequelize[_0x837f('0x2')],'defaultValue':![]},'agentTransferTimeout':{'type':Sequelize[_0x837f('0x3')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0x12c},'mandatoryDispositionPauseId':{'type':Sequelize[_0x837f('0x3')],'allowNull':!![],'defaultValue':null,'comment':_0x837f('0x7')},'mandatoryDisposition':{'type':Sequelize[_0x837f('0x2')],'defaultValue':![],'comment':_0x837f('0x8'),'set':function(_0x50b133){if(!_0x50b133)this[_0x837f('0x9')](_0x837f('0xa'),null);this[_0x837f('0x9')](_0x837f('0xb'),_0x50b133);}}};
\ No newline at end of file
index 4158b0f..2c15181 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8921=['tag','addApplications','sequelize','transaction','MailApplication','bulkCreate','priority','getApplications','$gte','split','format','MailMessage','inlineCss','true','CmList','List','Contacts','updatedAt','from','attachments','root','server/files/attachments','basename','auth','secure','List\x20not\x20found','ListId','subject','attach','out','messageId','Interaction','Messages','verifySmtp','Sequelize','ValidationError','You\x20can\x27t\x20remove\x20the\x20mail\x20service\x20account','addAgents','spread','emit','userMailAccount:save','removeAgents','isArray','userMailAccount:remove','getAgents','eml-format','rimraf','zip-dir','moment','bluebird','mustache','util','path','sox','to-csv','fs-extra','lodash','squel','crypto','desk.js','querystring','html-to-text','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/utils','../../config/environment','../../mysqldb','redis','defaults','localhost','./mailAccount.socket','register','client','then','info','MailAccount,\x20%s,\x20%s','request\x20sent','MailAccount,\x20%s,\x20%s,\x20%s','stringify','error','code','message','catch','sendStatus','status','end','offset','undefined','limit','count','set','Content-Range','json','apply','update','destroy','get','UserProfileResource','stack','name','send','index','MailServerIn','MailServerOut','Pause','map','MailAccount','fieldName','type','key','model','query','intersection','attributes','fields','length','hasOwnProperty','nolimit','sort','where','filters','pick','filter','VIRTUAL','merge','options','include','findAll','rows','show','params','Imap','Smtp','keys','rawAttributes','find','body','mandatoryDispositionPause','describe','addDisposition','MailAccountId','Disposition','create','getDispositions','order','includeAll','removeDispositions','ids','addAnswer','CannedAnswer','getAnswers','findOne','removeAnswers','email','isNil','active','description','cservice','cauthentication','user','cuser','password','cpassword','authentication','host','port','service','pass','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','UserProfileSection','autoAssociation','addImap','removeImap','setImap','getSmtp','addSmtp','removeSmtp','MailInteraction','addInteraction','omit','getInteractions','CmContact','Contact','User','Owner','fullname','internal','Tag','Tags','color'];(function(_0x37083f,_0x5bd982){var _0x14e6e2=function(_0x9c96a7){while(--_0x9c96a7){_0x37083f['push'](_0x37083f['shift']());}};_0x14e6e2(++_0x5bd982);}(_0x8921,0x1b1));var _0x1892=function(_0x3d27fa,_0x364e0a){_0x3d27fa=_0x3d27fa-0x0;var _0x2e4e47=_0x8921[_0x3d27fa];return _0x2e4e47;};'use strict';var emlformat=require(_0x1892('0x0'));var rimraf=require(_0x1892('0x1'));var zipdir=require(_0x1892('0x2'));var jsonpatch=require('fast-json-patch');var rp=require('request-promise');var moment=require(_0x1892('0x3'));var BPromise=require(_0x1892('0x4'));var Mustache=require(_0x1892('0x5'));var util=require(_0x1892('0x6'));var path=require(_0x1892('0x7'));var sox=require(_0x1892('0x8'));var csv=require(_0x1892('0x9'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x1892('0xa'));var _=require(_0x1892('0xb'));var squel=require(_0x1892('0xc'));var crypto=require(_0x1892('0xd'));var jsforce=require('jsforce');var deskjs=require(_0x1892('0xe'));var toCsv=require(_0x1892('0x9'));var querystring=require(_0x1892('0xf'));var Papa=require('papaparse');var htmlToText=require(_0x1892('0x10'));var juice=require('juice');var Redis=require('ioredis');var authService=require(_0x1892('0x11'));var qs=require(_0x1892('0x12'));var as=require(_0x1892('0x13'));var hardwareService=require(_0x1892('0x14'));var logger=require('../../config/logger')(_0x1892('0x15'));var utils=require(_0x1892('0x16'));var config=require(_0x1892('0x17'));var licenseUtil=require('../../config/license/util');var db=require(_0x1892('0x18'))['db'];config[_0x1892('0x19')]=_[_0x1892('0x1a')](config['redis'],{'host':_0x1892('0x1b'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config['redis']));require(_0x1892('0x1c'))[_0x1892('0x1d')](socket);var jayson=require('jayson/promise');var client=jayson[_0x1892('0x1e')]['http']({'port':0x232b});function respondWithRpcPromise(_0x4593b9,_0x48159b,_0x40c601,_0x37f207){return new BPromise(function(_0x4ebc12,_0x5da306){var _0x1d508a=_0x37f207||client;return _0x1d508a['request'](_0x4593b9,_0x40c601)[_0x1892('0x1f')](function(_0xf61ec7){logger[_0x1892('0x20')](_0x1892('0x21'),_0x48159b,_0x1892('0x22'));logger['debug'](_0x1892('0x23'),_0x48159b,_0x1892('0x22'),JSON[_0x1892('0x24')](_0xf61ec7));if(_0xf61ec7[_0x1892('0x25')]){if(_0xf61ec7[_0x1892('0x25')][_0x1892('0x26')]===0x1f4){logger[_0x1892('0x25')](_0x1892('0x21'),_0x48159b,_0xf61ec7[_0x1892('0x25')][_0x1892('0x27')]);return _0x5da306(_0xf61ec7['error'][_0x1892('0x27')]);}logger[_0x1892('0x25')]('MailAccount,\x20%s,\x20%s',_0x48159b,_0xf61ec7[_0x1892('0x25')][_0x1892('0x27')]);return _0x4ebc12(_0xf61ec7[_0x1892('0x25')]['message']);}else{logger['info'](_0x1892('0x21'),_0x48159b,_0x1892('0x22'));_0x4ebc12(_0xf61ec7['result'][_0x1892('0x27')]);}})[_0x1892('0x28')](function(_0x4f68b3){logger['error'](_0x1892('0x21'),_0x48159b,_0x4f68b3);_0x5da306(_0x4f68b3);});});}function respondWithStatusCode(_0x4bbfac,_0xc44718){_0xc44718=_0xc44718||0xcc;return function(_0x2d2540){if(_0x2d2540){return _0x4bbfac[_0x1892('0x29')](_0xc44718);}return _0x4bbfac[_0x1892('0x2a')](_0xc44718)[_0x1892('0x2b')]();};}function respondWithResult(_0x37d90f,_0x1ff645){_0x1ff645=_0x1ff645||0xc8;return function(_0x1907a5){if(_0x1907a5){return _0x37d90f[_0x1892('0x2a')](_0x1ff645)['json'](_0x1907a5);}};}function respondWithFilteredResult(_0xc090c1,_0x3de1c8){return function(_0x39175e){if(_0x39175e){var _0x4e3f3f=typeof _0x3de1c8[_0x1892('0x2c')]===_0x1892('0x2d')&&typeof _0x3de1c8[_0x1892('0x2e')]===_0x1892('0x2d');var _0x363341=_0x39175e[_0x1892('0x2f')];var _0x42d6f9=_0x4e3f3f?0x0:_0x3de1c8[_0x1892('0x2c')];var _0xbbf2e4=_0x4e3f3f?_0x39175e[_0x1892('0x2f')]:_0x3de1c8['offset']+_0x3de1c8[_0x1892('0x2e')];var _0x52ae81;if(_0xbbf2e4>=_0x363341){_0xbbf2e4=_0x363341;_0x52ae81=0xc8;}else{_0x52ae81=0xce;}_0xc090c1[_0x1892('0x2a')](_0x52ae81);return _0xc090c1[_0x1892('0x30')](_0x1892('0x31'),_0x42d6f9+'-'+_0xbbf2e4+'/'+_0x363341)[_0x1892('0x32')](_0x39175e);}return null;};}function patchUpdates(_0x26ec81){return function(_0x13b098){try{jsonpatch[_0x1892('0x33')](_0x13b098,_0x26ec81,!![]);}catch(_0x1e26aa){return BPromise['reject'](_0x1e26aa);}return _0x13b098['save']();};}function saveUpdates(_0x277732,_0x5ef97d){return function(_0x5a48e8){if(_0x5a48e8){return _0x5a48e8[_0x1892('0x34')](_0x277732)[_0x1892('0x1f')](function(_0x116aec){return _0x116aec;});}return null;};}function removeEntity(_0x535c60,_0x5d97db){return function(_0xbce36d){if(_0xbce36d){return _0xbce36d[_0x1892('0x35')]()[_0x1892('0x1f')](function(){var _0xd8ccea=_0xbce36d[_0x1892('0x36')]({'plain':!![]});var _0xde5779='MailAccounts';return db[_0x1892('0x37')][_0x1892('0x35')]({'where':{'type':_0xde5779,'resourceId':_0xd8ccea['id']}})[_0x1892('0x1f')](function(){return _0xbce36d;});})[_0x1892('0x1f')](function(){_0x535c60[_0x1892('0x2a')](0xcc)[_0x1892('0x2b')]();});}};}function handleEntityNotFound(_0x3ed409,_0x4ba7f5){return function(_0x4fedab){if(!_0x4fedab){_0x3ed409[_0x1892('0x29')](0x194);}return _0x4fedab;};}function handleError(_0x653127,_0x126e7e){_0x126e7e=_0x126e7e||0x1f4;return function(_0x3971e2){logger[_0x1892('0x25')](_0x3971e2[_0x1892('0x38')]);if(_0x3971e2[_0x1892('0x39')]){delete _0x3971e2['name'];}_0x653127['status'](_0x126e7e)[_0x1892('0x3a')](_0x3971e2);};}exports[_0x1892('0x3b')]=function(_0xdc3256,_0x469815){var _0x2e0c1a={'include':[{'model':db[_0x1892('0x3c')],'as':'Imap'},{'model':db[_0x1892('0x3d')],'as':'Smtp'},{'model':db[_0x1892('0x3e')],'as':'mandatoryDispositionPause'}]},_0x20a4dd={},_0x3c42a2={'count':0x0,'rows':[]};var _0x5daefa=_[_0x1892('0x3f')](db[_0x1892('0x40')]['rawAttributes'],function(_0x4528e4){return{'name':_0x4528e4[_0x1892('0x41')],'type':_0x4528e4[_0x1892('0x42')][_0x1892('0x43')]};});_0x20a4dd[_0x1892('0x44')]=_['map'](_0x5daefa,'name');_0x20a4dd[_0x1892('0x45')]=_['keys'](_0xdc3256[_0x1892('0x45')]);_0x20a4dd['filters']=_[_0x1892('0x46')](_0x20a4dd[_0x1892('0x44')],_0x20a4dd['query']);_0x2e0c1a[_0x1892('0x47')]=_[_0x1892('0x46')](_0x20a4dd[_0x1892('0x44')],qs[_0x1892('0x48')](_0xdc3256['query']['fields']));_0x2e0c1a['attributes']=_0x2e0c1a[_0x1892('0x47')][_0x1892('0x49')]?_0x2e0c1a[_0x1892('0x47')]:_0x20a4dd['model'];if(!_0xdc3256['query'][_0x1892('0x4a')](_0x1892('0x4b'))){_0x2e0c1a['limit']=qs[_0x1892('0x2e')](_0xdc3256['query']['limit']);_0x2e0c1a[_0x1892('0x2c')]=qs[_0x1892('0x2c')](_0xdc3256[_0x1892('0x45')][_0x1892('0x2c')]);}_0x2e0c1a['order']=qs[_0x1892('0x4c')](_0xdc3256['query'][_0x1892('0x4c')]);_0x2e0c1a[_0x1892('0x4d')]=qs[_0x1892('0x4e')](_[_0x1892('0x4f')](_0xdc3256['query'],_0x20a4dd[_0x1892('0x4e')]),_0x5daefa);if(_0xdc3256[_0x1892('0x45')][_0x1892('0x50')]){_0x2e0c1a[_0x1892('0x4d')]=_['merge'](_0x2e0c1a[_0x1892('0x4d')],{'$or':_['map'](_0x5daefa,function(_0x49daa2){if(_0x49daa2[_0x1892('0x42')]!==_0x1892('0x51')){var _0x525c02={};_0x525c02[_0x49daa2[_0x1892('0x39')]]={'$like':'%'+_0xdc3256[_0x1892('0x45')][_0x1892('0x50')]+'%'};return _0x525c02;}})});}_0x2e0c1a=_[_0x1892('0x52')]({},_0x2e0c1a,_0xdc3256[_0x1892('0x53')]);var _0x437963={'where':_0x2e0c1a[_0x1892('0x4d')]};return db[_0x1892('0x40')][_0x1892('0x2f')](_0x437963)[_0x1892('0x1f')](function(_0x2efcf1){_0x3c42a2[_0x1892('0x2f')]=_0x2efcf1;if(_0xdc3256[_0x1892('0x45')]['includeAll']){_0x2e0c1a[_0x1892('0x54')]=[{'all':!![]}];}return db[_0x1892('0x40')][_0x1892('0x55')](_0x2e0c1a);})[_0x1892('0x1f')](function(_0x17e800){_0x3c42a2[_0x1892('0x56')]=_0x17e800;return _0x3c42a2;})[_0x1892('0x1f')](respondWithFilteredResult(_0x469815,_0x2e0c1a))['catch'](handleError(_0x469815,null));};exports[_0x1892('0x57')]=function(_0x5ebe1b,_0x99a43f){var _0x1fccc1={'raw':![],'where':{'id':_0x5ebe1b[_0x1892('0x58')]['id']},'include':[{'model':db['MailServerIn'],'as':_0x1892('0x59')},{'model':db[_0x1892('0x3d')],'as':_0x1892('0x5a')},{'model':db[_0x1892('0x3e')],'as':'mandatoryDispositionPause'}]},_0x3aaf27={};_0x3aaf27[_0x1892('0x44')]=_[_0x1892('0x5b')](db[_0x1892('0x40')][_0x1892('0x5c')]);_0x3aaf27[_0x1892('0x45')]=_[_0x1892('0x5b')](_0x5ebe1b[_0x1892('0x45')]);_0x3aaf27[_0x1892('0x4e')]=_[_0x1892('0x46')](_0x3aaf27['model'],_0x3aaf27[_0x1892('0x45')]);_0x1fccc1['attributes']=_[_0x1892('0x46')](_0x3aaf27[_0x1892('0x44')],qs[_0x1892('0x48')](_0x5ebe1b[_0x1892('0x45')][_0x1892('0x48')]));_0x1fccc1[_0x1892('0x47')]=_0x1fccc1[_0x1892('0x47')][_0x1892('0x49')]?_0x1fccc1[_0x1892('0x47')]:_0x3aaf27[_0x1892('0x44')];if(_0x5ebe1b[_0x1892('0x45')]['includeAll']){_0x1fccc1[_0x1892('0x54')]=[{'all':!![]}];}_0x1fccc1=_[_0x1892('0x52')]({},_0x1fccc1,_0x5ebe1b[_0x1892('0x53')]);return db[_0x1892('0x40')][_0x1892('0x5d')](_0x1fccc1)[_0x1892('0x1f')](handleEntityNotFound(_0x99a43f,null))[_0x1892('0x1f')](respondWithResult(_0x99a43f,null))[_0x1892('0x28')](handleError(_0x99a43f,null));};exports[_0x1892('0x34')]=function(_0x429299,_0xe0610d){if(_0x429299[_0x1892('0x5e')]['id']){delete _0x429299[_0x1892('0x5e')]['id'];}return db[_0x1892('0x40')][_0x1892('0x5d')]({'where':{'id':_0x429299[_0x1892('0x58')]['id']},'include':[{'model':db[_0x1892('0x3c')],'as':'Imap'},{'model':db['MailServerOut'],'as':_0x1892('0x5a')},{'model':db[_0x1892('0x3e')],'as':_0x1892('0x5f')}]})[_0x1892('0x1f')](handleEntityNotFound(_0xe0610d,null))[_0x1892('0x1f')](saveUpdates(_0x429299[_0x1892('0x5e')],null))['then'](function(_0x44ea53){if(_0x44ea53&&_0x429299[_0x1892('0x5e')][_0x1892('0x59')]){return db[_0x1892('0x3c')][_0x1892('0x34')](_0x429299[_0x1892('0x5e')][_0x1892('0x59')],{'where':{'MailAccountId':_0x44ea53['id']}})['then'](function(){return _0x44ea53;});}return _0x44ea53;})[_0x1892('0x1f')](function(_0x420c31){if(_0x420c31&&_0x429299[_0x1892('0x5e')][_0x1892('0x5a')]){return db[_0x1892('0x3d')][_0x1892('0x34')](_0x429299['body'][_0x1892('0x5a')],{'where':{'MailAccountId':_0x420c31['id']}})[_0x1892('0x1f')](function(){return _0x420c31;});}return _0x420c31;})[_0x1892('0x1f')](respondWithResult(_0xe0610d,null))[_0x1892('0x28')](handleError(_0xe0610d,null));};exports[_0x1892('0x60')]=function(_0x3dc904,_0xc53c23){return db[_0x1892('0x40')]['describe']()[_0x1892('0x1f')](respondWithResult(_0xc53c23,null))[_0x1892('0x28')](handleError(_0xc53c23,null));};exports[_0x1892('0x61')]=function(_0x54f3c9,_0x125b95,_0x241148){if(_0x54f3c9[_0x1892('0x5e')]['id']){delete _0x54f3c9[_0x1892('0x5e')]['id'];}return db[_0x1892('0x40')][_0x1892('0x5d')]({'where':{'id':_0x54f3c9[_0x1892('0x58')]['id']}})['then'](handleEntityNotFound(_0x125b95,null))[_0x1892('0x1f')](function(_0x3387fe){if(_0x3387fe){_0x54f3c9[_0x1892('0x5e')][_0x1892('0x62')]=_0x3387fe['id'];return db[_0x1892('0x63')][_0x1892('0x64')](_0x54f3c9[_0x1892('0x5e')]);}})[_0x1892('0x1f')](respondWithResult(_0x125b95,null))[_0x1892('0x28')](handleError(_0x125b95,null));};exports[_0x1892('0x65')]=function(_0x25654c,_0x27cc5b,_0x32fe85){var _0x3a4f18={'raw':![],'where':{}};var _0x375aa1={};var _0x54de6a={'count':0x0,'rows':[]};return db[_0x1892('0x40')]['findOne']({'where':{'id':_0x25654c[_0x1892('0x58')]['id']}})[_0x1892('0x1f')](handleEntityNotFound(_0x27cc5b,null))[_0x1892('0x1f')](function(_0x55b861){if(_0x55b861){_0x375aa1[_0x1892('0x44')]=_[_0x1892('0x5b')](db[_0x1892('0x63')][_0x1892('0x5c')]);_0x375aa1[_0x1892('0x45')]=_[_0x1892('0x5b')](_0x25654c[_0x1892('0x45')]);_0x375aa1[_0x1892('0x4e')]=_[_0x1892('0x46')](_0x375aa1[_0x1892('0x44')],_0x375aa1[_0x1892('0x45')]);_0x3a4f18[_0x1892('0x47')]=_[_0x1892('0x46')](_0x375aa1[_0x1892('0x44')],qs['fields'](_0x25654c[_0x1892('0x45')]['fields']));_0x3a4f18['attributes']=_0x3a4f18[_0x1892('0x47')][_0x1892('0x49')]?_0x3a4f18[_0x1892('0x47')]:_0x375aa1[_0x1892('0x44')];if(!_0x25654c[_0x1892('0x45')]['hasOwnProperty'](_0x1892('0x4b'))){_0x3a4f18[_0x1892('0x2e')]=qs[_0x1892('0x2e')](_0x25654c[_0x1892('0x45')][_0x1892('0x2e')]);_0x3a4f18[_0x1892('0x2c')]=qs['offset'](_0x25654c[_0x1892('0x45')][_0x1892('0x2c')]);}_0x3a4f18[_0x1892('0x66')]=qs['sort'](_0x25654c[_0x1892('0x45')][_0x1892('0x4c')]);_0x3a4f18[_0x1892('0x4d')]=qs[_0x1892('0x4e')](_[_0x1892('0x4f')](_0x25654c['query'],_0x375aa1[_0x1892('0x4e')]));_0x3a4f18[_0x1892('0x4d')][_0x1892('0x62')]=_0x55b861['id'];if(_0x25654c[_0x1892('0x45')][_0x1892('0x50')]){_0x3a4f18['where']=_[_0x1892('0x52')](_0x3a4f18[_0x1892('0x4d')],{'$or':_[_0x1892('0x3f')](_0x3a4f18[_0x1892('0x47')],function(_0x5dcd13){var _0x388279={};_0x388279[_0x5dcd13]={'$like':'%'+_0x25654c['query'][_0x1892('0x50')]+'%'};return _0x388279;})});}_0x3a4f18=_[_0x1892('0x52')]({},_0x3a4f18,_0x25654c['options']);return db[_0x1892('0x63')][_0x1892('0x2f')]({'where':_0x3a4f18[_0x1892('0x4d')]})['then'](function(_0x35f1e1){_0x54de6a[_0x1892('0x2f')]=_0x35f1e1;if(_0x25654c[_0x1892('0x45')][_0x1892('0x67')]){_0x3a4f18['include']=[{'all':!![]}];}return db[_0x1892('0x63')][_0x1892('0x55')](_0x3a4f18);})[_0x1892('0x1f')](function(_0x477fa4){_0x54de6a[_0x1892('0x56')]=_0x477fa4;return _0x54de6a;});}})[_0x1892('0x1f')](respondWithFilteredResult(_0x27cc5b,_0x3a4f18))['catch'](handleError(_0x27cc5b,null));};exports[_0x1892('0x68')]=function(_0x3f8a7a,_0x357ef0,_0x127118){return db['MailAccount'][_0x1892('0x5d')]({'where':{'id':_0x3f8a7a['params']['id']}})[_0x1892('0x1f')](handleEntityNotFound(_0x357ef0,null))['then'](function(_0x5489dd){if(_0x5489dd){return _0x5489dd[_0x1892('0x68')](_0x3f8a7a[_0x1892('0x45')][_0x1892('0x69')]);}})[_0x1892('0x1f')](respondWithStatusCode(_0x357ef0,null))[_0x1892('0x28')](handleError(_0x357ef0,null));};exports[_0x1892('0x6a')]=function(_0x26b243,_0x2333a5,_0x2e75b){if(_0x26b243[_0x1892('0x5e')]['id']){delete _0x26b243[_0x1892('0x5e')]['id'];}return db['MailAccount'][_0x1892('0x5d')]({'where':{'id':_0x26b243[_0x1892('0x58')]['id']}})[_0x1892('0x1f')](handleEntityNotFound(_0x2333a5,null))[_0x1892('0x1f')](function(_0x18ada2){if(_0x18ada2){_0x26b243[_0x1892('0x5e')]['MailAccountId']=_0x18ada2['id'];return db[_0x1892('0x6b')][_0x1892('0x64')](_0x26b243['body']);}})['then'](respondWithResult(_0x2333a5,null))[_0x1892('0x28')](handleError(_0x2333a5,null));};exports[_0x1892('0x6c')]=function(_0x22552d,_0x365fff,_0x52dc3c){var _0x2eaad1={'raw':![],'where':{}};var _0x558444={};var _0x15413a={'count':0x0,'rows':[]};return db[_0x1892('0x40')][_0x1892('0x6d')]({'where':{'id':_0x22552d['params']['id']}})[_0x1892('0x1f')](handleEntityNotFound(_0x365fff,null))[_0x1892('0x1f')](function(_0x178443){if(_0x178443){_0x558444[_0x1892('0x44')]=_[_0x1892('0x5b')](db['CannedAnswer'][_0x1892('0x5c')]);_0x558444[_0x1892('0x45')]=_[_0x1892('0x5b')](_0x22552d[_0x1892('0x45')]);_0x558444[_0x1892('0x4e')]=_[_0x1892('0x46')](_0x558444[_0x1892('0x44')],_0x558444[_0x1892('0x45')]);_0x2eaad1[_0x1892('0x47')]=_['intersection'](_0x558444[_0x1892('0x44')],qs[_0x1892('0x48')](_0x22552d[_0x1892('0x45')]['fields']));_0x2eaad1[_0x1892('0x47')]=_0x2eaad1[_0x1892('0x47')][_0x1892('0x49')]?_0x2eaad1['attributes']:_0x558444['model'];if(!_0x22552d['query'][_0x1892('0x4a')]('nolimit')){_0x2eaad1['limit']=qs[_0x1892('0x2e')](_0x22552d[_0x1892('0x45')][_0x1892('0x2e')]);_0x2eaad1[_0x1892('0x2c')]=qs['offset'](_0x22552d['query'][_0x1892('0x2c')]);}_0x2eaad1[_0x1892('0x66')]=qs['sort'](_0x22552d[_0x1892('0x45')][_0x1892('0x4c')]);_0x2eaad1[_0x1892('0x4d')]=qs[_0x1892('0x4e')](_[_0x1892('0x4f')](_0x22552d['query'],_0x558444['filters']));_0x2eaad1[_0x1892('0x4d')][_0x1892('0x62')]=_0x178443['id'];if(_0x22552d['query']['filter']){_0x2eaad1[_0x1892('0x4d')]=_[_0x1892('0x52')](_0x2eaad1[_0x1892('0x4d')],{'$or':_[_0x1892('0x3f')](_0x2eaad1[_0x1892('0x47')],function(_0x2a39aa){var _0x180aa2={};_0x180aa2[_0x2a39aa]={'$like':'%'+_0x22552d['query'][_0x1892('0x50')]+'%'};return _0x180aa2;})});}_0x2eaad1=_[_0x1892('0x52')]({},_0x2eaad1,_0x22552d[_0x1892('0x53')]);return db[_0x1892('0x6b')][_0x1892('0x2f')]({'where':_0x2eaad1[_0x1892('0x4d')]})[_0x1892('0x1f')](function(_0x9c2f5b){_0x15413a[_0x1892('0x2f')]=_0x9c2f5b;if(_0x22552d['query'][_0x1892('0x67')]){_0x2eaad1[_0x1892('0x54')]=[{'all':!![]}];}return db[_0x1892('0x6b')][_0x1892('0x55')](_0x2eaad1);})[_0x1892('0x1f')](function(_0x5846f1){_0x15413a[_0x1892('0x56')]=_0x5846f1;return _0x15413a;});}})[_0x1892('0x1f')](respondWithFilteredResult(_0x365fff,_0x2eaad1))[_0x1892('0x28')](handleError(_0x365fff,null));};exports[_0x1892('0x6e')]=function(_0x14729c,_0x4c94dc,_0x1ccc5f){return db[_0x1892('0x40')][_0x1892('0x5d')]({'where':{'id':_0x14729c[_0x1892('0x58')]['id']}})[_0x1892('0x1f')](handleEntityNotFound(_0x4c94dc,null))[_0x1892('0x1f')](function(_0x47ae48){if(_0x47ae48){return _0x47ae48['removeAnswers'](_0x14729c[_0x1892('0x45')][_0x1892('0x69')]);}})[_0x1892('0x1f')](respondWithStatusCode(_0x4c94dc,null))[_0x1892('0x28')](handleError(_0x4c94dc,null));};exports[_0x1892('0x64')]=function(_0x169d2f,_0x29ad57){var _0x310236={'name':_0x169d2f[_0x1892('0x5e')][_0x1892('0x39')],'key':_0x169d2f[_0x1892('0x5e')]['key'],'email':_0x169d2f[_0x1892('0x5e')][_0x1892('0x6f')],'ListId':_0x169d2f[_0x1892('0x5e')]['ListId'],'active':!_[_0x1892('0x70')](_0x169d2f[_0x1892('0x5e')][_0x1892('0x71')])?_0x169d2f['body'][_0x1892('0x71')]:!![],'description':_0x169d2f[_0x1892('0x5e')][_0x1892('0x72')]||null,'Imap':{},'Smtp':{}};if(_['isNil'](_0x169d2f[_0x1892('0x5e')][_0x1892('0x73')])){if(_0x169d2f[_0x1892('0x5e')][_0x1892('0x74')]){_0x310236['Imap'][_0x1892('0x75')]=_0x310236[_0x1892('0x5a')]['user']=_0x169d2f[_0x1892('0x5e')][_0x1892('0x76')];_0x310236[_0x1892('0x59')][_0x1892('0x77')]=_0x310236[_0x1892('0x5a')]['pass']=_0x169d2f[_0x1892('0x5e')][_0x1892('0x78')];}else{_0x310236['Imap'][_0x1892('0x79')]=_0x310236[_0x1892('0x5a')]['authentication']=![];}_0x310236[_0x1892('0x59')][_0x1892('0x7a')]=_0x169d2f['body'][_0x1892('0x59')][_0x1892('0x7a')];_0x310236[_0x1892('0x59')][_0x1892('0x7b')]=_0x169d2f[_0x1892('0x5e')][_0x1892('0x59')]['port'];_0x310236['Smtp']['host']=_0x169d2f[_0x1892('0x5e')][_0x1892('0x5a')][_0x1892('0x7a')];_0x310236[_0x1892('0x5a')][_0x1892('0x7b')]=_0x169d2f['body']['Smtp'][_0x1892('0x7b')];}else{_0x310236[_0x1892('0x59')][_0x1892('0x7c')]=_0x310236[_0x1892('0x5a')][_0x1892('0x7c')]=_0x169d2f[_0x1892('0x5e')][_0x1892('0x73')];_0x310236['Imap'][_0x1892('0x75')]=_0x310236[_0x1892('0x5a')][_0x1892('0x75')]=_0x169d2f[_0x1892('0x5e')][_0x1892('0x76')];_0x310236[_0x1892('0x59')][_0x1892('0x77')]=_0x310236['Smtp'][_0x1892('0x7d')]=_0x169d2f[_0x1892('0x5e')][_0x1892('0x78')];}return db['MailAccount']['create'](_0x310236,{'include':[{'model':db[_0x1892('0x3d')],'as':'Smtp'},{'model':db['MailServerIn'],'as':_0x1892('0x59')}]})['then'](function(_0x10e930){var _0x16de2a=_0x169d2f[_0x1892('0x75')][_0x1892('0x36')]({'plain':!![]});if(!_0x16de2a)throw new Error(_0x1892('0x7e'));if(_0x16de2a[_0x1892('0x7f')]===_0x1892('0x75')){var _0x50160c=_0x10e930[_0x1892('0x36')]({'plain':!![]});return db[_0x1892('0x80')][_0x1892('0x5d')]({'where':{'name':'MailAccounts','userProfileId':_0x16de2a['userProfileId']},'raw':!![]})[_0x1892('0x1f')](function(_0xe291de){if(_0xe291de&&_0xe291de[_0x1892('0x81')]===0x0){return db[_0x1892('0x37')]['create']({'name':_0x50160c[_0x1892('0x39')],'resourceId':_0x50160c['id'],'type':_0xe291de[_0x1892('0x39')],'sectionId':_0xe291de['id']},{})['then'](function(){return _0x10e930;});}else{return _0x10e930;}})['catch'](function(_0x50020f){logger[_0x1892('0x25')]('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0x50020f);throw _0x50020f;});}return _0x10e930;})['then'](respondWithResult(_0x29ad57,0xc9))[_0x1892('0x28')](handleError(_0x29ad57,null));};exports['getImap']=function(_0x3d942c,_0x1165e9,_0x2e038d){return db[_0x1892('0x40')]['findOne']({'where':{'id':_0x3d942c['params']['id']}})[_0x1892('0x1f')](handleEntityNotFound(_0x1165e9,null))[_0x1892('0x1f')](function(_0x1232b1){if(_0x1232b1){return _0x1232b1['getImap']();}return null;})[_0x1892('0x1f')](respondWithResult(_0x1165e9,null))[_0x1892('0x28')](handleError(_0x1165e9,null));};exports[_0x1892('0x82')]=function(_0x48bd17,_0x4c6087,_0x57a5ea){if(_0x48bd17[_0x1892('0x5e')]['id']){delete _0x48bd17[_0x1892('0x5e')]['id'];}return db[_0x1892('0x40')]['find']({'where':{'id':_0x48bd17[_0x1892('0x58')]['id']}})[_0x1892('0x1f')](handleEntityNotFound(_0x4c6087,null))['then'](function(_0x37451b){if(_0x37451b){_0x48bd17['body'][_0x1892('0x62')]=_0x37451b['id'];return db[_0x1892('0x3c')][_0x1892('0x64')](_0x48bd17[_0x1892('0x5e')]);}})[_0x1892('0x1f')](respondWithResult(_0x4c6087,null))[_0x1892('0x28')](handleError(_0x4c6087,null));};exports[_0x1892('0x83')]=function(_0x58f846,_0x31435e,_0x2209bf){return db['MailAccount']['findOne']({'where':{'id':_0x58f846[_0x1892('0x58')]['id']}})[_0x1892('0x1f')](handleEntityNotFound(_0x31435e,null))[_0x1892('0x1f')](function(_0x4b6d3b){if(_0x4b6d3b){return _0x4b6d3b[_0x1892('0x84')](null);}return null;})[_0x1892('0x1f')](respondWithStatusCode(_0x31435e,null))['catch'](handleError(_0x31435e,null));};exports[_0x1892('0x85')]=function(_0x429e60,_0xe38164,_0x44c082){return db[_0x1892('0x40')][_0x1892('0x6d')]({'where':{'id':_0x429e60[_0x1892('0x58')]['id']}})[_0x1892('0x1f')](handleEntityNotFound(_0xe38164,null))[_0x1892('0x1f')](function(_0x380d0c){if(_0x380d0c){return _0x380d0c['getSmtp']();}return null;})[_0x1892('0x1f')](respondWithResult(_0xe38164,null))[_0x1892('0x28')](handleError(_0xe38164,null));};exports[_0x1892('0x86')]=function(_0xb3c1b0,_0x2ea95d,_0x23269b){if(_0xb3c1b0[_0x1892('0x5e')]['id']){delete _0xb3c1b0['body']['id'];}return db[_0x1892('0x40')][_0x1892('0x5d')]({'where':{'id':_0xb3c1b0[_0x1892('0x58')]['id']}})[_0x1892('0x1f')](handleEntityNotFound(_0x2ea95d,null))[_0x1892('0x1f')](function(_0x571fb6){if(_0x571fb6){_0xb3c1b0[_0x1892('0x5e')][_0x1892('0x62')]=_0x571fb6['id'];return db[_0x1892('0x3d')]['create'](_0xb3c1b0[_0x1892('0x5e')]);}})[_0x1892('0x1f')](respondWithResult(_0x2ea95d,null))[_0x1892('0x28')](handleError(_0x2ea95d,null));};exports[_0x1892('0x87')]=function(_0x341fee,_0x5ab070,_0x44a240){return db[_0x1892('0x40')][_0x1892('0x6d')]({'where':{'id':_0x341fee['params']['id']}})[_0x1892('0x1f')](handleEntityNotFound(_0x5ab070,null))[_0x1892('0x1f')](function(_0x310b01){if(_0x310b01){return _0x310b01['setSmtp'](null);}return null;})[_0x1892('0x1f')](respondWithStatusCode(_0x5ab070,null))[_0x1892('0x28')](handleError(_0x5ab070,null));};exports['addInteraction']=function(_0x202493,_0x272c03,_0x3fb315){return db[_0x1892('0x88')][_0x1892('0x5d')]({'where':{'id':_0x202493['params']['id']}})[_0x1892('0x1f')](handleEntityNotFound(_0x272c03,null))[_0x1892('0x1f')](function(_0x90f13){if(_0x90f13){return _0x90f13[_0x1892('0x89')](_0x202493[_0x1892('0x5e')][_0x1892('0x69')],_[_0x1892('0x8a')](_0x202493[_0x1892('0x5e')],[_0x1892('0x69'),'id'])||{});}})[_0x1892('0x1f')](respondWithResult(_0x272c03,null))[_0x1892('0x28')](handleError(_0x272c03,null));};exports[_0x1892('0x8b')]=function(_0x53af2c,_0xc1b458,_0xfc463e){var _0x39ed39={'raw':![],'where':{}};var _0x291490={};var _0x3506ae={'count':0x0,'rows':[]};return db[_0x1892('0x40')][_0x1892('0x6d')]({'where':{'id':_0x53af2c[_0x1892('0x58')]['id']}})[_0x1892('0x1f')](handleEntityNotFound(_0xc1b458,null))[_0x1892('0x1f')](function(_0x469a88){if(_0x469a88){_0x291490[_0x1892('0x44')]=_[_0x1892('0x5b')](db[_0x1892('0x88')][_0x1892('0x5c')]);_0x291490['query']=_[_0x1892('0x5b')](_0x53af2c[_0x1892('0x45')]);_0x291490[_0x1892('0x4e')]=_[_0x1892('0x46')](_0x291490[_0x1892('0x44')],_0x291490[_0x1892('0x45')]);_0x39ed39[_0x1892('0x47')]=_[_0x1892('0x46')](_0x291490[_0x1892('0x44')],qs['fields'](_0x53af2c[_0x1892('0x45')][_0x1892('0x48')]));_0x39ed39[_0x1892('0x47')]=_0x39ed39[_0x1892('0x47')][_0x1892('0x49')]?_0x39ed39[_0x1892('0x47')]:_0x291490[_0x1892('0x44')];if(!_0x53af2c[_0x1892('0x45')][_0x1892('0x4a')](_0x1892('0x4b'))){_0x39ed39['limit']=qs['limit'](_0x53af2c['query'][_0x1892('0x2e')]);_0x39ed39[_0x1892('0x2c')]=qs[_0x1892('0x2c')](_0x53af2c[_0x1892('0x45')][_0x1892('0x2c')]);}_0x39ed39[_0x1892('0x66')]=qs['sort'](_0x53af2c[_0x1892('0x45')][_0x1892('0x4c')]);_0x39ed39[_0x1892('0x4d')]=qs[_0x1892('0x4e')](_[_0x1892('0x4f')](_0x53af2c[_0x1892('0x45')],_0x291490[_0x1892('0x4e')]));_0x39ed39[_0x1892('0x4d')]['MailAccountId']=_0x469a88['id'];if(_0x53af2c[_0x1892('0x45')]['filter']){_0x39ed39[_0x1892('0x4d')]=_[_0x1892('0x52')](_0x39ed39[_0x1892('0x4d')],{'$or':_[_0x1892('0x3f')](_0x39ed39[_0x1892('0x47')],function(_0x4e4f04){var _0x1b2441={};_0x1b2441[_0x4e4f04]={'$like':'%'+_0x53af2c[_0x1892('0x45')][_0x1892('0x50')]+'%'};return _0x1b2441;})});}_0x39ed39=_['merge']({},_0x39ed39,_0x53af2c['options']);return db[_0x1892('0x88')][_0x1892('0x2f')]({'where':_0x39ed39[_0x1892('0x4d')]})[_0x1892('0x1f')](function(_0x3706d8){_0x3506ae[_0x1892('0x2f')]=_0x3706d8;if(_0x53af2c[_0x1892('0x45')][_0x1892('0x67')]){_0x39ed39[_0x1892('0x54')]=[{'model':db[_0x1892('0x8c')],'as':_0x1892('0x8d'),'required':![]},{'model':db[_0x1892('0x8e')],'as':_0x1892('0x8f'),'attributes':[_0x1892('0x39'),_0x1892('0x90'),_0x1892('0x91')],'required':![]},{'model':db[_0x1892('0x92')],'as':_0x1892('0x93'),'attributes':['id','name',_0x1892('0x94')],'where':_0x53af2c[_0x1892('0x45')]['tag']?{'id':_0x53af2c[_0x1892('0x45')][_0x1892('0x95')]}:undefined,'required':_0x53af2c[_0x1892('0x45')][_0x1892('0x95')]?!![]:![]}];}return db[_0x1892('0x88')][_0x1892('0x55')](_0x39ed39);})[_0x1892('0x1f')](function(_0x38a47a){_0x3506ae[_0x1892('0x56')]=_0x38a47a;return _0x3506ae;});}})['then'](respondWithFilteredResult(_0xc1b458,_0x39ed39))[_0x1892('0x28')](handleError(_0xc1b458,null));};exports[_0x1892('0x96')]=function(_0xb8c225,_0x25150a,_0x19997b){return db[_0x1892('0x40')][_0x1892('0x6d')]({'where':{'id':_0xb8c225[_0x1892('0x58')]['id']}})[_0x1892('0x1f')](handleEntityNotFound(_0x25150a,null))['then'](function(_0x2e4af5){if(_0x2e4af5){return db[_0x1892('0x97')][_0x1892('0x98')](function(_0x532a02){return db[_0x1892('0x99')][_0x1892('0x35')]({'where':{'MailAccountId':_0xb8c225[_0x1892('0x58')]['id']},'transaction':_0x532a02})[_0x1892('0x1f')](function(_0x4978b0){var _0xb5e663=_[_0x1892('0x3f')](_0xb8c225[_0x1892('0x5e')],function(_0x50172f){_0x50172f['MailAccountId']=_0xb8c225[_0x1892('0x58')]['id'];return _0x50172f;});return db[_0x1892('0x99')][_0x1892('0x9a')](_0xb5e663,{'transaction':_0x532a02});});})[_0x1892('0x1f')](function(){return db['MailApplication']['findAndCountAll']({'where':{'MailAccountId':_0xb8c225['params']['id']},'order':_0x1892('0x9b')});});}})[_0x1892('0x1f')](respondWithResult(_0x25150a,null))[_0x1892('0x28')](handleError(_0x25150a,null));};exports[_0x1892('0x9c')]=function(_0x47df37,_0xeb8d9e,_0xd33b67){var _0x13f998={};var _0x23257e={};var _0x47dac7;var _0x1b14cb;return db[_0x1892('0x40')][_0x1892('0x6d')]({'where':{'id':_0x47df37[_0x1892('0x58')]['id']}})[_0x1892('0x1f')](handleEntityNotFound(_0xeb8d9e,null))[_0x1892('0x1f')](function(_0x3bce42){if(_0x3bce42){_0x47dac7=_0x3bce42;_0x23257e[_0x1892('0x44')]=_['keys'](db[_0x1892('0x99')][_0x1892('0x5c')]);_0x23257e[_0x1892('0x45')]=_[_0x1892('0x5b')](_0x47df37[_0x1892('0x45')]);_0x23257e[_0x1892('0x4e')]=_[_0x1892('0x46')](_0x23257e[_0x1892('0x44')],_0x23257e[_0x1892('0x45')]);_0x13f998[_0x1892('0x47')]=_[_0x1892('0x46')](_0x23257e[_0x1892('0x44')],qs[_0x1892('0x48')](_0x47df37[_0x1892('0x45')][_0x1892('0x48')]));_0x13f998[_0x1892('0x47')]=_0x13f998[_0x1892('0x47')][_0x1892('0x49')]?_0x13f998['attributes']:_0x23257e[_0x1892('0x44')];_0x13f998[_0x1892('0x66')]=qs[_0x1892('0x4c')](_0x47df37[_0x1892('0x45')][_0x1892('0x4c')]);_0x13f998[_0x1892('0x4d')]=qs[_0x1892('0x4e')](_[_0x1892('0x4f')](_0x47df37['query'],_0x23257e['filters']));if(_0x47df37[_0x1892('0x45')]['filter']){_0x13f998[_0x1892('0x4d')]=_[_0x1892('0x52')](_0x13f998[_0x1892('0x4d')],{'$or':_[_0x1892('0x3f')](_0x13f998[_0x1892('0x47')],function(_0x6feed7){var _0x555728={};_0x555728[_0x6feed7]={'$like':'%'+_0x47df37['query']['filter']+'%'};return _0x555728;})});}_0x13f998=_[_0x1892('0x52')]({},_0x13f998,_0x47df37[_0x1892('0x53')]);return _0x47dac7['getApplications'](_0x13f998);}})[_0x1892('0x1f')](function(_0x39a542){if(_0x39a542){_0x1b14cb=_0x39a542[_0x1892('0x49')];if(!_0x47df37['query']['hasOwnProperty'](_0x1892('0x4b'))){_0x13f998[_0x1892('0x2e')]=qs[_0x1892('0x2e')](_0x47df37[_0x1892('0x45')][_0x1892('0x2e')]);_0x13f998[_0x1892('0x2c')]=qs['offset'](_0x47df37[_0x1892('0x45')][_0x1892('0x2c')]);}return _0x47dac7[_0x1892('0x9c')](_0x13f998);}})[_0x1892('0x1f')](function(_0x26e3f6){if(_0x26e3f6){return _0x26e3f6?{'count':_0x1b14cb,'rows':_0x26e3f6}:null;}})[_0x1892('0x1f')](respondWithResult(_0xeb8d9e,null))['catch'](handleError(_0xeb8d9e,null));};exports['getMessages']=function(_0x16e170,_0x2a248f,_0x1fc88e){var _0x3c238d={'raw':!![],'where':{}};var _0x29416b={};var _0x5536cd={'count':0x0,'rows':[]};return db[_0x1892('0x40')][_0x1892('0x6d')]({'where':{'id':_0x16e170[_0x1892('0x58')]['id']}})['then'](handleEntityNotFound(_0x2a248f,null))[_0x1892('0x1f')](function(_0x51cce3){if(_0x51cce3){_0x29416b[_0x1892('0x44')]=_[_0x1892('0x5b')](db['MailMessage'][_0x1892('0x5c')]);_0x29416b['query']=_[_0x1892('0x5b')](_0x16e170[_0x1892('0x45')]);_0x29416b[_0x1892('0x4e')]=_[_0x1892('0x46')](_0x29416b[_0x1892('0x44')],_0x29416b[_0x1892('0x45')]);_0x3c238d[_0x1892('0x47')]=_['intersection'](_0x29416b[_0x1892('0x44')],qs[_0x1892('0x48')](_0x16e170[_0x1892('0x45')][_0x1892('0x48')]));_0x3c238d['attributes']=_0x3c238d['attributes']['length']?_0x3c238d['attributes']:_0x29416b['model'];if(!_0x16e170[_0x1892('0x45')][_0x1892('0x4a')](_0x1892('0x4b'))){_0x3c238d[_0x1892('0x2e')]=qs[_0x1892('0x2e')](_0x16e170[_0x1892('0x45')][_0x1892('0x2e')]);_0x3c238d[_0x1892('0x2c')]=qs[_0x1892('0x2c')](_0x16e170['query'][_0x1892('0x2c')]);}_0x3c238d[_0x1892('0x66')]=qs[_0x1892('0x4c')](_0x16e170[_0x1892('0x45')][_0x1892('0x4c')]);_0x3c238d[_0x1892('0x4d')]=qs[_0x1892('0x4e')](_[_0x1892('0x4f')](_0x16e170[_0x1892('0x45')],_0x29416b['filters']));_0x3c238d[_0x1892('0x4d')][_0x1892('0x62')]=_0x51cce3['id'];if(_0x16e170[_0x1892('0x45')]['filter']){_0x3c238d[_0x1892('0x4d')]=_[_0x1892('0x52')](_0x3c238d['where'],{'$or':_['map'](_0x3c238d[_0x1892('0x47')],function(_0x36900a){var _0x1fd839={};_0x1fd839[_0x36900a]={'$like':'%'+_0x16e170['query'][_0x1892('0x50')]+'%'};return _0x1fd839;})});}if(_0x16e170['query'][_0x1892('0x9d')]){var _0x2d6886=_0x16e170['query'][_0x1892('0x9d')][_0x1892('0x9e')](',');var _0x213c17={};_0x213c17[_0x2d6886[0x0]]={'$gte':moment(_0x2d6886[0x1])[_0x1892('0x9f')]('YYYY-MM-DD\x20HH:mm:ss')};_0x3c238d[_0x1892('0x4d')]=_[_0x1892('0x52')](_0x3c238d[_0x1892('0x4d')],_0x213c17);}_0x3c238d=_['merge']({},_0x3c238d,_0x16e170['options']);return db[_0x1892('0xa0')][_0x1892('0x2f')]({'where':_0x3c238d['where']})[_0x1892('0x1f')](function(_0x32c199){_0x5536cd[_0x1892('0x2f')]=_0x32c199;if(_0x16e170[_0x1892('0x45')][_0x1892('0x67')]){_0x3c238d[_0x1892('0x54')]=[{'all':!![]}];}return db[_0x1892('0xa0')][_0x1892('0x55')](_0x3c238d);})[_0x1892('0x1f')](function(_0xe7b4ca){if(_0x16e170[_0x1892('0x45')][_0x1892('0xa1')]===_0x1892('0xa2')){for(var _0x46de3f=0x0;_0x46de3f<_0xe7b4ca[_0x1892('0x49')];_0x46de3f++){_0xe7b4ca[_0x46de3f]['body']=juice(_0xe7b4ca[_0x46de3f][_0x1892('0x5e')]);}}_0x5536cd[_0x1892('0x56')]=_0xe7b4ca;return _0x5536cd;});}})['then'](respondWithFilteredResult(_0x2a248f,_0x3c238d))[_0x1892('0x28')](handleError(_0x2a248f,null));};exports['send']=function(_0xecd4e2,_0x27d948,_0x501ede){var _0x298101,_0x2324fa={},_0x3c73cf;if(_0xecd4e2[_0x1892('0x5e')]['to']){_0x3c73cf=_0xecd4e2['body']['to'][_0x1892('0x9e')](',')[0x0];}return db[_0x1892('0x40')][_0x1892('0x5d')]({'where':{'id':_0xecd4e2[_0x1892('0x58')]['id']},'include':[{'model':db[_0x1892('0xa3')],'as':_0x1892('0xa4'),'include':[{'model':db['CmContact'],'as':_0x1892('0xa5'),'where':{'email':_0x3c73cf},'limit':0x1,'order':[[_0x1892('0xa6'),'DESC']]}]},{'model':db['MailServerOut'],'as':_0x1892('0x5a'),'raw':!![]}]})['then'](handleEntityNotFound(_0x27d948,null))['then'](function(_0x335536){if(_0x335536){_0x298101=_0x335536;if(_0x335536['Smtp']){if(_[_0x1892('0x70')](_0xecd4e2[_0x1892('0x5e')][_0x1892('0xa7')])){_0xecd4e2[_0x1892('0x5e')][_0x1892('0xa7')]=util[_0x1892('0x9f')]('%s\x20<%s>',_0x335536[_0x1892('0x39')],_0x335536[_0x1892('0x6f')]||_0x335536[_0x1892('0x5a')][_0x1892('0x75')]);}if(_0xecd4e2[_0x1892('0x5e')][_0x1892('0xa8')]&&_0xecd4e2[_0x1892('0x5e')][_0x1892('0xa8')]['length']){for(var _0x1c7e2e=0x0;_0x1c7e2e<_0xecd4e2[_0x1892('0x5e')][_0x1892('0xa8')][_0x1892('0x49')];_0x1c7e2e+=0x1){_0xecd4e2['body'][_0x1892('0xa8')][_0x1c7e2e]={'filename':_0xecd4e2[_0x1892('0x5e')][_0x1892('0xa8')][_0x1c7e2e][_0x1892('0x39')],'path':path['join'](config[_0x1892('0xa9')],_0x1892('0xaa'),_0xecd4e2[_0x1892('0x5e')]['attachments'][_0x1c7e2e][_0x1892('0xab')])};}}var _0x132a16={'tls':{'rejectUnauthorized':![]}};if(_[_0x1892('0x70')](_0x335536[_0x1892('0x5a')][_0x1892('0x7c')])){if(_0x335536[_0x1892('0x5a')][_0x1892('0x79')]){_0x132a16[_0x1892('0xac')]={'user':_0x335536[_0x1892('0x5a')][_0x1892('0x75')],'pass':_0x335536[_0x1892('0x5a')][_0x1892('0x7d')]};}_0x132a16[_0x1892('0x7a')]=_0x335536[_0x1892('0x5a')][_0x1892('0x7a')];_0x132a16['port']=_0x335536[_0x1892('0x5a')][_0x1892('0x7b')];_0x132a16[_0x1892('0xad')]=_0x335536[_0x1892('0x5a')][_0x1892('0xad')];}else{_0x132a16['service']=_0x335536['Smtp']['service'];_0x132a16['auth']={'user':_0x335536[_0x1892('0x5a')][_0x1892('0x75')],'pass':_0x335536[_0x1892('0x5a')]['pass']};}return respondWithRpcPromise('SendMail','sendMail',{'account':_0x132a16,'message':_0xecd4e2[_0x1892('0x5e')]});}else{throw new Error(_0x1892('0xae'));}}})['then'](function(_0x527ad0){if(_0x527ad0){_0x2324fa=_0x527ad0;if(_0x298101[_0x1892('0xa4')]){if(_0x298101[_0x1892('0xa4')][_0x1892('0xa5')][_0x1892('0x49')]){return _0x298101[_0x1892('0xa4')]['Contacts'][0x0];}else{return db[_0x1892('0x8c')][_0x1892('0x64')](_['defaults'](_0xecd4e2['body'],{'firstName':_0xecd4e2[_0x1892('0x5e')]['to'],'email':_0xecd4e2['body']['to'],'phone':_0xecd4e2['body']['to'],'ListId':_0x298101[_0x1892('0xaf')]}));}}else{throw new Error(_0x1892('0xae'));}}})['then'](function(_0x5db226){if(_0x5db226){var _0x1e6e1a={'UserId':_0xecd4e2['user']['id'],'ContactId':_0x5db226['id'],'MailAccountId':_0x298101['id'],'inReplyTo':_0x2324fa['messageId'],'to':_0xecd4e2[_0x1892('0x5e')]['from'],'cc':_0xecd4e2[_0x1892('0x5e')]['cc'],'subject':_0xecd4e2[_0x1892('0x5e')][_0x1892('0xb0')],'attach':_0xecd4e2['body'][_0x1892('0xb1')],'firstMsgDirection':'out','lastMsgAt':moment()[_0x1892('0x9f')]('YYYY-MM-DD\x20HH:mm:ss'),'lastMsgDirection':_0x1892('0xb2'),'Messages':[_[_0x1892('0x52')](_0xecd4e2[_0x1892('0x5e')],{'messageId':_0x2324fa[_0x1892('0xb3')],'sentAt':moment()['format']('YYYY-MM-DD\x20HH:mm:ss'),'read':!![],'MailAccountId':_0x298101['id'],'UserId':_0xecd4e2['user']['id'],'ContactId':_0x5db226['id']})]};if(_0xecd4e2[_0x1892('0x5e')][_0x1892('0xb4')]){_0x1e6e1a=_[_0x1892('0x52')](_0x1e6e1a,_0xecd4e2[_0x1892('0x5e')][_0x1892('0xb4')]);}return db[_0x1892('0x88')]['create'](_0x1e6e1a,{'include':[{'model':db[_0x1892('0xa0')],'as':_0x1892('0xb5')}]});}})[_0x1892('0x1f')](respondWithResult(_0x27d948,null))['catch'](handleError(_0x27d948,null));};exports[_0x1892('0xb6')]=function(_0x214210,_0x46ce88,_0x4db227){return db['MailAccount'][_0x1892('0x5d')]({'where':{'id':_0x214210[_0x1892('0x58')]['id']},'include':[{'model':db[_0x1892('0x3d')],'as':_0x1892('0x5a'),'raw':!![]}]})['then'](handleEntityNotFound(_0x46ce88,null))[_0x1892('0x1f')](function(_0x563bb5){if(_0x563bb5&&_0x563bb5[_0x1892('0x5a')]){var _0x491a0d={'id':_0x563bb5['id'],'tls':{'rejectUnauthorized':![]}};if(_0x563bb5[_0x1892('0x5a')][_0x1892('0x7c')]){_0x491a0d[_0x1892('0x7c')]=_0x563bb5[_0x1892('0x5a')][_0x1892('0x7c')];}else{_0x491a0d['host']=_0x563bb5['Smtp']['host'];_0x491a0d[_0x1892('0x7b')]=_0x563bb5[_0x1892('0x5a')]['port'];_0x491a0d['secure']=_0x563bb5[_0x1892('0x5a')][_0x1892('0xad')];}if(_0x563bb5[_0x1892('0x5a')]['authentication']){_0x491a0d['auth']={'user':_0x563bb5['Smtp']['user'],'pass':_0x563bb5['Smtp'][_0x1892('0x7d')]};}return respondWithRpcPromise('VerifySmtp',_0x1892('0xb6'),{'account':_0x491a0d});}})['then'](respondWithResult(_0x46ce88,null))[_0x1892('0x28')](handleError(_0x46ce88,null));};exports['destroy']=function(_0x1bc212,_0x1eb168){return db[_0x1892('0x40')]['find']({'where':{'id':_0x1bc212[_0x1892('0x58')]['id']}})[_0x1892('0x1f')](handleEntityNotFound(_0x1eb168,null))['then'](function(_0x4d0075){if(_0x4d0075&&_0x4d0075['service']){throw new db[(_0x1892('0xb7'))][(_0x1892('0xb8'))](_0x1892('0xb9'));}return _0x4d0075;})['then'](removeEntity(_0x1eb168,null))[_0x1892('0x28')](handleError(_0x1eb168,null));};exports[_0x1892('0xba')]=function(_0x50c620,_0x4402e6,_0x41b1a5){return db[_0x1892('0x40')][_0x1892('0x5d')]({'where':{'id':_0x50c620[_0x1892('0x58')]['id']}})[_0x1892('0x1f')](handleEntityNotFound(_0x4402e6,null))[_0x1892('0x1f')](function(_0x4f9b99){if(_0x4f9b99){return _0x4f9b99[_0x1892('0xba')](_0x50c620['body']['ids'],_[_0x1892('0x8a')](_0x50c620['body'],[_0x1892('0x69'),'id'])||{})[_0x1892('0xbb')](function(_0x2ce02a){for(var _0x189e52=0x0;_0x189e52<_0x50c620[_0x1892('0x5e')][_0x1892('0x69')][_0x1892('0x49')];_0x189e52+=0x1){socket[_0x1892('0xbc')](_0x1892('0xbd'),{'UserId':Number(_0x50c620[_0x1892('0x5e')]['ids'][_0x189e52]),'MailAccountId':Number(_0x50c620['params']['id'])});}return _0x2ce02a;});}})[_0x1892('0x1f')](respondWithResult(_0x4402e6,null))[_0x1892('0x28')](handleError(_0x4402e6,null));};exports['removeAgents']=function(_0x4b91b1,_0x415a07,_0x37bd0b){return db[_0x1892('0x40')][_0x1892('0x5d')]({'where':{'id':_0x4b91b1[_0x1892('0x58')]['id']}})[_0x1892('0x1f')](handleEntityNotFound(_0x415a07,null))[_0x1892('0x1f')](function(_0x53ce9f){if(_0x53ce9f){return _0x53ce9f[_0x1892('0xbe')](_0x4b91b1['query'][_0x1892('0x69')])[_0x1892('0x1f')](function(){if(_[_0x1892('0xbf')](_0x4b91b1[_0x1892('0x45')][_0x1892('0x69')])){for(var _0x3bbdcb=0x0;_0x3bbdcb<_0x4b91b1[_0x1892('0x45')][_0x1892('0x69')]['length'];_0x3bbdcb+=0x1){socket[_0x1892('0xbc')](_0x1892('0xc0'),{'UserId':Number(_0x4b91b1[_0x1892('0x45')][_0x1892('0x69')][_0x3bbdcb]),'MailAccountId':Number(_0x4b91b1['params']['id'])});}}else{socket['emit'](_0x1892('0xc0'),{'UserId':Number(_0x4b91b1[_0x1892('0x45')]['ids']),'MailAccountId':Number(_0x4b91b1['params']['id'])});}});}})[_0x1892('0x1f')](respondWithStatusCode(_0x415a07,null))[_0x1892('0x28')](handleError(_0x415a07,null));};exports['getAgents']=function(_0x4b0171,_0x1fd13c,_0x1370b8){var _0x2b1f59={};var _0x3066a2={};var _0x5cc05c;var _0xe97159;return db[_0x1892('0x40')][_0x1892('0x6d')]({'where':{'id':_0x4b0171[_0x1892('0x58')]['id']}})[_0x1892('0x1f')](handleEntityNotFound(_0x1fd13c,null))[_0x1892('0x1f')](function(_0x2cd629){if(_0x2cd629){_0x5cc05c=_0x2cd629;_0x3066a2[_0x1892('0x44')]=_['keys'](db[_0x1892('0x8e')][_0x1892('0x5c')]);_0x3066a2[_0x1892('0x45')]=_[_0x1892('0x5b')](_0x4b0171[_0x1892('0x45')]);_0x3066a2[_0x1892('0x4e')]=_[_0x1892('0x46')](_0x3066a2[_0x1892('0x44')],_0x3066a2[_0x1892('0x45')]);_0x2b1f59[_0x1892('0x47')]=_[_0x1892('0x46')](_0x3066a2['model'],qs[_0x1892('0x48')](_0x4b0171[_0x1892('0x45')]['fields']));_0x2b1f59[_0x1892('0x47')]=_0x2b1f59[_0x1892('0x47')][_0x1892('0x49')]?_0x2b1f59[_0x1892('0x47')]:_0x3066a2[_0x1892('0x44')];_0x2b1f59[_0x1892('0x66')]=qs[_0x1892('0x4c')](_0x4b0171[_0x1892('0x45')]['sort']);_0x2b1f59[_0x1892('0x4d')]=qs[_0x1892('0x4e')](_[_0x1892('0x4f')](_0x4b0171['query'],_0x3066a2[_0x1892('0x4e')]));if(_0x4b0171['query'][_0x1892('0x50')]){_0x2b1f59['where']=_[_0x1892('0x52')](_0x2b1f59[_0x1892('0x4d')],{'$or':_[_0x1892('0x3f')](_0x2b1f59[_0x1892('0x47')],function(_0x4ce2ea){var _0x278554={};_0x278554[_0x4ce2ea]={'$like':'%'+_0x4b0171[_0x1892('0x45')][_0x1892('0x50')]+'%'};return _0x278554;})});}_0x2b1f59=_[_0x1892('0x52')]({},_0x2b1f59,_0x4b0171['options']);return _0x5cc05c[_0x1892('0xc1')](_0x2b1f59);}})[_0x1892('0x1f')](function(_0x1cf25c){if(_0x1cf25c){_0xe97159=_0x1cf25c[_0x1892('0x49')];if(!_0x4b0171[_0x1892('0x45')]['hasOwnProperty'](_0x1892('0x4b'))){_0x2b1f59[_0x1892('0x2e')]=qs[_0x1892('0x2e')](_0x4b0171[_0x1892('0x45')][_0x1892('0x2e')]);_0x2b1f59[_0x1892('0x2c')]=qs['offset'](_0x4b0171['query'][_0x1892('0x2c')]);}return _0x5cc05c[_0x1892('0xc1')](_0x2b1f59);}})[_0x1892('0x1f')](function(_0x12bb88){if(_0x12bb88){return _0x12bb88?{'count':_0xe97159,'rows':_0x12bb88}:null;}})['then'](respondWithResult(_0x1fd13c,null))[_0x1892('0x28')](handleError(_0x1fd13c,null));};
\ No newline at end of file
+var _0x89ba=['Tag','Tags','color','tag','transaction','MailApplication','priority','getApplications','MailMessage','$gte','split','format','YYYY-MM-DD\x20HH:mm:ss','inlineCss','true','CmList','Contacts','DESC','from','%s\x20<%s>','attachments','join','root','server/files/attachments','basename','auth','secure','SendMail','sendMail','List\x20not\x20found','List','defaults','out','Interaction','verifySmtp','VerifySmtp','Sequelize','ValidationError','You\x20can\x27t\x20remove\x20the\x20mail\x20service\x20account','addAgents','spread','emit','userMailAccount:save','removeAgents','userMailAccount:remove','getAgents','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','path','to-csv','fs-extra','lodash','squel','crypto','jsforce','desk.js','querystring','papaparse','html-to-text','../../components/parsers/qs','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','redis','socket.io-emitter','register','jayson/promise','client','http','request','info','MailAccount,\x20%s,\x20%s','request\x20sent','debug','MailAccount,\x20%s,\x20%s,\x20%s','stringify','error','code','message','catch','sendStatus','status','offset','undefined','count','apply','reject','save','update','then','destroy','get','UserProfileResource','end','stack','name','send','index','MailServerIn','Imap','MailServerOut','Pause','map','rawAttributes','fieldName','type','key','model','keys','query','intersection','attributes','fields','length','hasOwnProperty','nolimit','limit','order','sort','where','pick','filters','filter','VIRTUAL','merge','options','MailAccount','includeAll','include','findAll','rows','show','params','mandatoryDispositionPause','find','body','Smtp','describe','addDisposition','MailAccountId','create','getDispositions','Disposition','removeDispositions','addAnswer','CannedAnswer','getAnswers','findOne','ids','email','ListId','active','description','isNil','cservice','cauthentication','user','cuser','password','pass','cpassword','authentication','host','port','service','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','UserProfileSection','MailAccounts','userProfileId','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','getImap','removeImap','setImap','getSmtp','addSmtp','removeSmtp','setSmtp','addInteraction','MailInteraction','omit','getInteractions','CmContact','Contact','User','Owner','internal'];(function(_0x517921,_0x3c7a4d){var _0x4172fc=function(_0x388b7e){while(--_0x388b7e){_0x517921['push'](_0x517921['shift']());}};_0x4172fc(++_0x3c7a4d);}(_0x89ba,0x1b8));var _0xa89b=function(_0x369e54,_0x17530a){_0x369e54=_0x369e54-0x0;var _0x3b5b5b=_0x89ba[_0x369e54];return _0x3b5b5b;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0xa89b('0x0'));var zipdir=require(_0xa89b('0x1'));var jsonpatch=require(_0xa89b('0x2'));var rp=require(_0xa89b('0x3'));var moment=require(_0xa89b('0x4'));var BPromise=require(_0xa89b('0x5'));var Mustache=require(_0xa89b('0x6'));var util=require('util');var path=require(_0xa89b('0x7'));var sox=require('sox');var csv=require(_0xa89b('0x8'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0xa89b('0x9'));var _=require(_0xa89b('0xa'));var squel=require(_0xa89b('0xb'));var crypto=require(_0xa89b('0xc'));var jsforce=require(_0xa89b('0xd'));var deskjs=require(_0xa89b('0xe'));var toCsv=require(_0xa89b('0x8'));var querystring=require(_0xa89b('0xf'));var Papa=require(_0xa89b('0x10'));var htmlToText=require(_0xa89b('0x11'));var juice=require('juice');var Redis=require('ioredis');var authService=require('../../components/auth/service');var qs=require(_0xa89b('0x12'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0xa89b('0x13'));var logger=require(_0xa89b('0x14'))(_0xa89b('0x15'));var utils=require(_0xa89b('0x16'));var config=require(_0xa89b('0x17'));var licenseUtil=require(_0xa89b('0x18'));var db=require(_0xa89b('0x19'))['db'];config[_0xa89b('0x1a')]=_['defaults'](config[_0xa89b('0x1a')],{'host':'localhost','port':0x18eb});var socket=require(_0xa89b('0x1b'))(new Redis(config[_0xa89b('0x1a')]));require('./mailAccount.socket')[_0xa89b('0x1c')](socket);var jayson=require(_0xa89b('0x1d'));var client=jayson[_0xa89b('0x1e')][_0xa89b('0x1f')]({'port':0x232b});function respondWithRpcPromise(_0x540868,_0x130209,_0x263ccb,_0xb3baff){return new BPromise(function(_0x2804c5,_0x25caed){var _0x5ce5eb=_0xb3baff||client;return _0x5ce5eb[_0xa89b('0x20')](_0x540868,_0x263ccb)['then'](function(_0x28417e){logger[_0xa89b('0x21')](_0xa89b('0x22'),_0x130209,_0xa89b('0x23'));logger[_0xa89b('0x24')](_0xa89b('0x25'),_0x130209,_0xa89b('0x23'),JSON[_0xa89b('0x26')](_0x28417e));if(_0x28417e[_0xa89b('0x27')]){if(_0x28417e['error'][_0xa89b('0x28')]===0x1f4){logger[_0xa89b('0x27')](_0xa89b('0x22'),_0x130209,_0x28417e[_0xa89b('0x27')][_0xa89b('0x29')]);return _0x25caed(_0x28417e[_0xa89b('0x27')]['message']);}logger['error'](_0xa89b('0x22'),_0x130209,_0x28417e[_0xa89b('0x27')][_0xa89b('0x29')]);return _0x2804c5(_0x28417e['error'][_0xa89b('0x29')]);}else{logger['info'](_0xa89b('0x22'),_0x130209,_0xa89b('0x23'));_0x2804c5(_0x28417e['result'][_0xa89b('0x29')]);}})[_0xa89b('0x2a')](function(_0x99221c){logger['error'](_0xa89b('0x22'),_0x130209,_0x99221c);_0x25caed(_0x99221c);});});}function respondWithStatusCode(_0x4796d5,_0x2bf425){_0x2bf425=_0x2bf425||0xcc;return function(_0x27acd3){if(_0x27acd3){return _0x4796d5[_0xa89b('0x2b')](_0x2bf425);}return _0x4796d5['status'](_0x2bf425)['end']();};}function respondWithResult(_0x3b7aa3,_0x5d14fd){_0x5d14fd=_0x5d14fd||0xc8;return function(_0x1892ab){if(_0x1892ab){return _0x3b7aa3[_0xa89b('0x2c')](_0x5d14fd)['json'](_0x1892ab);}};}function respondWithFilteredResult(_0x45559a,_0x55a0e9){return function(_0x595b5c){if(_0x595b5c){var _0x2dd10c=typeof _0x55a0e9[_0xa89b('0x2d')]===_0xa89b('0x2e')&&typeof _0x55a0e9['limit']==='undefined';var _0x2af565=_0x595b5c[_0xa89b('0x2f')];var _0x253023=_0x2dd10c?0x0:_0x55a0e9[_0xa89b('0x2d')];var _0x286a3a=_0x2dd10c?_0x595b5c[_0xa89b('0x2f')]:_0x55a0e9[_0xa89b('0x2d')]+_0x55a0e9['limit'];var _0x2ecd25;if(_0x286a3a>=_0x2af565){_0x286a3a=_0x2af565;_0x2ecd25=0xc8;}else{_0x2ecd25=0xce;}_0x45559a[_0xa89b('0x2c')](_0x2ecd25);return _0x45559a['set']('Content-Range',_0x253023+'-'+_0x286a3a+'/'+_0x2af565)['json'](_0x595b5c);}return null;};}function patchUpdates(_0x3547d9){return function(_0x4a0e6c){try{jsonpatch[_0xa89b('0x30')](_0x4a0e6c,_0x3547d9,!![]);}catch(_0x167845){return BPromise[_0xa89b('0x31')](_0x167845);}return _0x4a0e6c[_0xa89b('0x32')]();};}function saveUpdates(_0x2b2e8e,_0x34dde9){return function(_0x44f6da){if(_0x44f6da){return _0x44f6da[_0xa89b('0x33')](_0x2b2e8e)[_0xa89b('0x34')](function(_0x31c097){return _0x31c097;});}return null;};}function removeEntity(_0x311712,_0x1a0375){return function(_0x35f4b2){if(_0x35f4b2){return _0x35f4b2[_0xa89b('0x35')]()[_0xa89b('0x34')](function(){var _0xfd596d=_0x35f4b2[_0xa89b('0x36')]({'plain':!![]});var _0x218e94='MailAccounts';return db[_0xa89b('0x37')][_0xa89b('0x35')]({'where':{'type':_0x218e94,'resourceId':_0xfd596d['id']}})[_0xa89b('0x34')](function(){return _0x35f4b2;});})[_0xa89b('0x34')](function(){_0x311712[_0xa89b('0x2c')](0xcc)[_0xa89b('0x38')]();});}};}function handleEntityNotFound(_0x144d2a,_0x3a10ce){return function(_0x548441){if(!_0x548441){_0x144d2a[_0xa89b('0x2b')](0x194);}return _0x548441;};}function handleError(_0x1863d5,_0x1aee64){_0x1aee64=_0x1aee64||0x1f4;return function(_0x59ee94){logger['error'](_0x59ee94[_0xa89b('0x39')]);if(_0x59ee94[_0xa89b('0x3a')]){delete _0x59ee94[_0xa89b('0x3a')];}_0x1863d5[_0xa89b('0x2c')](_0x1aee64)[_0xa89b('0x3b')](_0x59ee94);};}exports[_0xa89b('0x3c')]=function(_0x54529a,_0x11caf9){var _0x104f2e={'include':[{'model':db[_0xa89b('0x3d')],'as':_0xa89b('0x3e')},{'model':db[_0xa89b('0x3f')],'as':'Smtp'},{'model':db[_0xa89b('0x40')],'as':'mandatoryDispositionPause'}]},_0x231743={},_0x65611d={'count':0x0,'rows':[]};var _0xbba5=_[_0xa89b('0x41')](db['MailAccount'][_0xa89b('0x42')],function(_0xa2a0bd){return{'name':_0xa2a0bd[_0xa89b('0x43')],'type':_0xa2a0bd[_0xa89b('0x44')][_0xa89b('0x45')]};});_0x231743[_0xa89b('0x46')]=_[_0xa89b('0x41')](_0xbba5,'name');_0x231743['query']=_[_0xa89b('0x47')](_0x54529a[_0xa89b('0x48')]);_0x231743['filters']=_[_0xa89b('0x49')](_0x231743[_0xa89b('0x46')],_0x231743[_0xa89b('0x48')]);_0x104f2e[_0xa89b('0x4a')]=_[_0xa89b('0x49')](_0x231743[_0xa89b('0x46')],qs[_0xa89b('0x4b')](_0x54529a[_0xa89b('0x48')][_0xa89b('0x4b')]));_0x104f2e[_0xa89b('0x4a')]=_0x104f2e[_0xa89b('0x4a')][_0xa89b('0x4c')]?_0x104f2e['attributes']:_0x231743[_0xa89b('0x46')];if(!_0x54529a['query'][_0xa89b('0x4d')](_0xa89b('0x4e'))){_0x104f2e[_0xa89b('0x4f')]=qs['limit'](_0x54529a[_0xa89b('0x48')][_0xa89b('0x4f')]);_0x104f2e[_0xa89b('0x2d')]=qs['offset'](_0x54529a[_0xa89b('0x48')][_0xa89b('0x2d')]);}_0x104f2e[_0xa89b('0x50')]=qs['sort'](_0x54529a['query'][_0xa89b('0x51')]);_0x104f2e[_0xa89b('0x52')]=qs['filters'](_[_0xa89b('0x53')](_0x54529a['query'],_0x231743[_0xa89b('0x54')]),_0xbba5);if(_0x54529a[_0xa89b('0x48')][_0xa89b('0x55')]){_0x104f2e['where']=_['merge'](_0x104f2e[_0xa89b('0x52')],{'$or':_[_0xa89b('0x41')](_0xbba5,function(_0x30e71e){if(_0x30e71e[_0xa89b('0x44')]!==_0xa89b('0x56')){var _0x6cd4ba={};_0x6cd4ba[_0x30e71e[_0xa89b('0x3a')]]={'$like':'%'+_0x54529a[_0xa89b('0x48')][_0xa89b('0x55')]+'%'};return _0x6cd4ba;}})});}_0x104f2e=_[_0xa89b('0x57')]({},_0x104f2e,_0x54529a[_0xa89b('0x58')]);var _0x4aa1a4={'where':_0x104f2e['where']};return db[_0xa89b('0x59')][_0xa89b('0x2f')](_0x4aa1a4)['then'](function(_0x1e9d62){_0x65611d[_0xa89b('0x2f')]=_0x1e9d62;if(_0x54529a['query'][_0xa89b('0x5a')]){_0x104f2e[_0xa89b('0x5b')]=[{'all':!![]}];}return db[_0xa89b('0x59')][_0xa89b('0x5c')](_0x104f2e);})['then'](function(_0x3a0d05){_0x65611d[_0xa89b('0x5d')]=_0x3a0d05;return _0x65611d;})['then'](respondWithFilteredResult(_0x11caf9,_0x104f2e))['catch'](handleError(_0x11caf9,null));};exports[_0xa89b('0x5e')]=function(_0x27ecc2,_0x56daca){var _0xced475={'raw':![],'where':{'id':_0x27ecc2[_0xa89b('0x5f')]['id']},'include':[{'model':db[_0xa89b('0x3d')],'as':_0xa89b('0x3e')},{'model':db['MailServerOut'],'as':'Smtp'},{'model':db[_0xa89b('0x40')],'as':_0xa89b('0x60')}]},_0x1dbf1b={};_0x1dbf1b[_0xa89b('0x46')]=_[_0xa89b('0x47')](db[_0xa89b('0x59')][_0xa89b('0x42')]);_0x1dbf1b['query']=_[_0xa89b('0x47')](_0x27ecc2[_0xa89b('0x48')]);_0x1dbf1b['filters']=_[_0xa89b('0x49')](_0x1dbf1b[_0xa89b('0x46')],_0x1dbf1b[_0xa89b('0x48')]);_0xced475['attributes']=_[_0xa89b('0x49')](_0x1dbf1b[_0xa89b('0x46')],qs[_0xa89b('0x4b')](_0x27ecc2['query']['fields']));_0xced475[_0xa89b('0x4a')]=_0xced475[_0xa89b('0x4a')]['length']?_0xced475[_0xa89b('0x4a')]:_0x1dbf1b['model'];if(_0x27ecc2[_0xa89b('0x48')]['includeAll']){_0xced475['include']=[{'all':!![]}];}_0xced475=_[_0xa89b('0x57')]({},_0xced475,_0x27ecc2[_0xa89b('0x58')]);return db[_0xa89b('0x59')][_0xa89b('0x61')](_0xced475)[_0xa89b('0x34')](handleEntityNotFound(_0x56daca,null))[_0xa89b('0x34')](respondWithResult(_0x56daca,null))[_0xa89b('0x2a')](handleError(_0x56daca,null));};exports[_0xa89b('0x33')]=function(_0x539e97,_0x267357){if(_0x539e97[_0xa89b('0x62')]['id']){delete _0x539e97[_0xa89b('0x62')]['id'];}return db[_0xa89b('0x59')][_0xa89b('0x61')]({'where':{'id':_0x539e97[_0xa89b('0x5f')]['id']},'include':[{'model':db[_0xa89b('0x3d')],'as':'Imap'},{'model':db[_0xa89b('0x3f')],'as':'Smtp'},{'model':db[_0xa89b('0x40')],'as':_0xa89b('0x60')}]})[_0xa89b('0x34')](handleEntityNotFound(_0x267357,null))['then'](saveUpdates(_0x539e97['body'],null))[_0xa89b('0x34')](function(_0x501c98){if(_0x501c98&&_0x539e97['body'][_0xa89b('0x3e')]){return db[_0xa89b('0x3d')][_0xa89b('0x33')](_0x539e97[_0xa89b('0x62')][_0xa89b('0x3e')],{'where':{'MailAccountId':_0x501c98['id']}})[_0xa89b('0x34')](function(){return _0x501c98;});}return _0x501c98;})[_0xa89b('0x34')](function(_0x57e86c){if(_0x57e86c&&_0x539e97['body'][_0xa89b('0x63')]){return db[_0xa89b('0x3f')][_0xa89b('0x33')](_0x539e97[_0xa89b('0x62')][_0xa89b('0x63')],{'where':{'MailAccountId':_0x57e86c['id']}})['then'](function(){return _0x57e86c;});}return _0x57e86c;})[_0xa89b('0x34')](respondWithResult(_0x267357,null))[_0xa89b('0x2a')](handleError(_0x267357,null));};exports[_0xa89b('0x64')]=function(_0x5a1642,_0x5461d8){return db[_0xa89b('0x59')][_0xa89b('0x64')]()[_0xa89b('0x34')](respondWithResult(_0x5461d8,null))[_0xa89b('0x2a')](handleError(_0x5461d8,null));};exports[_0xa89b('0x65')]=function(_0x2cc9ea,_0x390c1f,_0x56c579){if(_0x2cc9ea[_0xa89b('0x62')]['id']){delete _0x2cc9ea[_0xa89b('0x62')]['id'];}return db[_0xa89b('0x59')][_0xa89b('0x61')]({'where':{'id':_0x2cc9ea[_0xa89b('0x5f')]['id']}})[_0xa89b('0x34')](handleEntityNotFound(_0x390c1f,null))['then'](function(_0x382101){if(_0x382101){_0x2cc9ea[_0xa89b('0x62')][_0xa89b('0x66')]=_0x382101['id'];return db['Disposition'][_0xa89b('0x67')](_0x2cc9ea['body']);}})[_0xa89b('0x34')](respondWithResult(_0x390c1f,null))['catch'](handleError(_0x390c1f,null));};exports[_0xa89b('0x68')]=function(_0xb0b6f1,_0x3d0341,_0x327430){var _0x178573={'raw':![],'where':{}};var _0x2b970a={};var _0x232cfd={'count':0x0,'rows':[]};return db[_0xa89b('0x59')]['findOne']({'where':{'id':_0xb0b6f1[_0xa89b('0x5f')]['id']}})[_0xa89b('0x34')](handleEntityNotFound(_0x3d0341,null))[_0xa89b('0x34')](function(_0x404181){if(_0x404181){_0x2b970a[_0xa89b('0x46')]=_[_0xa89b('0x47')](db['Disposition'][_0xa89b('0x42')]);_0x2b970a[_0xa89b('0x48')]=_[_0xa89b('0x47')](_0xb0b6f1['query']);_0x2b970a[_0xa89b('0x54')]=_[_0xa89b('0x49')](_0x2b970a['model'],_0x2b970a['query']);_0x178573[_0xa89b('0x4a')]=_['intersection'](_0x2b970a['model'],qs[_0xa89b('0x4b')](_0xb0b6f1[_0xa89b('0x48')][_0xa89b('0x4b')]));_0x178573[_0xa89b('0x4a')]=_0x178573[_0xa89b('0x4a')][_0xa89b('0x4c')]?_0x178573[_0xa89b('0x4a')]:_0x2b970a['model'];if(!_0xb0b6f1[_0xa89b('0x48')][_0xa89b('0x4d')](_0xa89b('0x4e'))){_0x178573[_0xa89b('0x4f')]=qs[_0xa89b('0x4f')](_0xb0b6f1[_0xa89b('0x48')]['limit']);_0x178573[_0xa89b('0x2d')]=qs[_0xa89b('0x2d')](_0xb0b6f1['query'][_0xa89b('0x2d')]);}_0x178573[_0xa89b('0x50')]=qs[_0xa89b('0x51')](_0xb0b6f1[_0xa89b('0x48')][_0xa89b('0x51')]);_0x178573[_0xa89b('0x52')]=qs[_0xa89b('0x54')](_[_0xa89b('0x53')](_0xb0b6f1[_0xa89b('0x48')],_0x2b970a[_0xa89b('0x54')]));_0x178573[_0xa89b('0x52')][_0xa89b('0x66')]=_0x404181['id'];if(_0xb0b6f1['query']['filter']){_0x178573['where']=_[_0xa89b('0x57')](_0x178573['where'],{'$or':_[_0xa89b('0x41')](_0x178573[_0xa89b('0x4a')],function(_0x1983d8){var _0x516408={};_0x516408[_0x1983d8]={'$like':'%'+_0xb0b6f1['query'][_0xa89b('0x55')]+'%'};return _0x516408;})});}_0x178573=_[_0xa89b('0x57')]({},_0x178573,_0xb0b6f1['options']);return db[_0xa89b('0x69')][_0xa89b('0x2f')]({'where':_0x178573[_0xa89b('0x52')]})[_0xa89b('0x34')](function(_0x183e32){_0x232cfd[_0xa89b('0x2f')]=_0x183e32;if(_0xb0b6f1[_0xa89b('0x48')][_0xa89b('0x5a')]){_0x178573['include']=[{'all':!![]}];}return db[_0xa89b('0x69')]['findAll'](_0x178573);})[_0xa89b('0x34')](function(_0x318558){_0x232cfd[_0xa89b('0x5d')]=_0x318558;return _0x232cfd;});}})[_0xa89b('0x34')](respondWithFilteredResult(_0x3d0341,_0x178573))[_0xa89b('0x2a')](handleError(_0x3d0341,null));};exports[_0xa89b('0x6a')]=function(_0x55a979,_0x34a54b,_0x27cd5f){return db[_0xa89b('0x59')]['find']({'where':{'id':_0x55a979[_0xa89b('0x5f')]['id']}})[_0xa89b('0x34')](handleEntityNotFound(_0x34a54b,null))['then'](function(_0x4e2b44){if(_0x4e2b44){return _0x4e2b44['removeDispositions'](_0x55a979[_0xa89b('0x48')]['ids']);}})[_0xa89b('0x34')](respondWithStatusCode(_0x34a54b,null))[_0xa89b('0x2a')](handleError(_0x34a54b,null));};exports[_0xa89b('0x6b')]=function(_0x21c3c,_0x5c2f28,_0xe09d6b){if(_0x21c3c['body']['id']){delete _0x21c3c[_0xa89b('0x62')]['id'];}return db[_0xa89b('0x59')]['find']({'where':{'id':_0x21c3c[_0xa89b('0x5f')]['id']}})['then'](handleEntityNotFound(_0x5c2f28,null))['then'](function(_0x176c9b){if(_0x176c9b){_0x21c3c[_0xa89b('0x62')][_0xa89b('0x66')]=_0x176c9b['id'];return db[_0xa89b('0x6c')][_0xa89b('0x67')](_0x21c3c[_0xa89b('0x62')]);}})['then'](respondWithResult(_0x5c2f28,null))['catch'](handleError(_0x5c2f28,null));};exports[_0xa89b('0x6d')]=function(_0x12c2d8,_0x3ad525,_0xb3eea0){var _0x359ed3={'raw':![],'where':{}};var _0x1f49aa={};var _0x17d5e5={'count':0x0,'rows':[]};return db[_0xa89b('0x59')][_0xa89b('0x6e')]({'where':{'id':_0x12c2d8[_0xa89b('0x5f')]['id']}})[_0xa89b('0x34')](handleEntityNotFound(_0x3ad525,null))[_0xa89b('0x34')](function(_0x541352){if(_0x541352){_0x1f49aa[_0xa89b('0x46')]=_[_0xa89b('0x47')](db['CannedAnswer'][_0xa89b('0x42')]);_0x1f49aa['query']=_[_0xa89b('0x47')](_0x12c2d8[_0xa89b('0x48')]);_0x1f49aa[_0xa89b('0x54')]=_[_0xa89b('0x49')](_0x1f49aa[_0xa89b('0x46')],_0x1f49aa[_0xa89b('0x48')]);_0x359ed3[_0xa89b('0x4a')]=_[_0xa89b('0x49')](_0x1f49aa[_0xa89b('0x46')],qs['fields'](_0x12c2d8[_0xa89b('0x48')][_0xa89b('0x4b')]));_0x359ed3[_0xa89b('0x4a')]=_0x359ed3[_0xa89b('0x4a')]['length']?_0x359ed3[_0xa89b('0x4a')]:_0x1f49aa[_0xa89b('0x46')];if(!_0x12c2d8[_0xa89b('0x48')][_0xa89b('0x4d')]('nolimit')){_0x359ed3[_0xa89b('0x4f')]=qs[_0xa89b('0x4f')](_0x12c2d8[_0xa89b('0x48')][_0xa89b('0x4f')]);_0x359ed3['offset']=qs['offset'](_0x12c2d8[_0xa89b('0x48')]['offset']);}_0x359ed3['order']=qs['sort'](_0x12c2d8[_0xa89b('0x48')][_0xa89b('0x51')]);_0x359ed3[_0xa89b('0x52')]=qs[_0xa89b('0x54')](_[_0xa89b('0x53')](_0x12c2d8[_0xa89b('0x48')],_0x1f49aa[_0xa89b('0x54')]));_0x359ed3[_0xa89b('0x52')][_0xa89b('0x66')]=_0x541352['id'];if(_0x12c2d8['query'][_0xa89b('0x55')]){_0x359ed3[_0xa89b('0x52')]=_['merge'](_0x359ed3['where'],{'$or':_[_0xa89b('0x41')](_0x359ed3[_0xa89b('0x4a')],function(_0x23711b){var _0x27d93b={};_0x27d93b[_0x23711b]={'$like':'%'+_0x12c2d8[_0xa89b('0x48')][_0xa89b('0x55')]+'%'};return _0x27d93b;})});}_0x359ed3=_[_0xa89b('0x57')]({},_0x359ed3,_0x12c2d8[_0xa89b('0x58')]);return db[_0xa89b('0x6c')][_0xa89b('0x2f')]({'where':_0x359ed3[_0xa89b('0x52')]})['then'](function(_0x541a1f){_0x17d5e5[_0xa89b('0x2f')]=_0x541a1f;if(_0x12c2d8[_0xa89b('0x48')][_0xa89b('0x5a')]){_0x359ed3['include']=[{'all':!![]}];}return db[_0xa89b('0x6c')]['findAll'](_0x359ed3);})[_0xa89b('0x34')](function(_0x42e32d){_0x17d5e5[_0xa89b('0x5d')]=_0x42e32d;return _0x17d5e5;});}})[_0xa89b('0x34')](respondWithFilteredResult(_0x3ad525,_0x359ed3))[_0xa89b('0x2a')](handleError(_0x3ad525,null));};exports['removeAnswers']=function(_0xb26b73,_0x371218,_0x1249b6){return db[_0xa89b('0x59')][_0xa89b('0x61')]({'where':{'id':_0xb26b73[_0xa89b('0x5f')]['id']}})[_0xa89b('0x34')](handleEntityNotFound(_0x371218,null))['then'](function(_0x15065b){if(_0x15065b){return _0x15065b['removeAnswers'](_0xb26b73['query'][_0xa89b('0x6f')]);}})['then'](respondWithStatusCode(_0x371218,null))[_0xa89b('0x2a')](handleError(_0x371218,null));};exports[_0xa89b('0x67')]=function(_0x4d7100,_0x2afee0){var _0x298875={'name':_0x4d7100['body'][_0xa89b('0x3a')],'key':_0x4d7100[_0xa89b('0x62')]['key'],'email':_0x4d7100[_0xa89b('0x62')][_0xa89b('0x70')],'ListId':_0x4d7100[_0xa89b('0x62')][_0xa89b('0x71')],'active':!_['isNil'](_0x4d7100[_0xa89b('0x62')][_0xa89b('0x72')])?_0x4d7100['body'][_0xa89b('0x72')]:!![],'description':_0x4d7100[_0xa89b('0x62')][_0xa89b('0x73')]||null,'Imap':{},'Smtp':{}};if(_[_0xa89b('0x74')](_0x4d7100['body'][_0xa89b('0x75')])){if(_0x4d7100[_0xa89b('0x62')][_0xa89b('0x76')]){_0x298875['Imap']['user']=_0x298875[_0xa89b('0x63')][_0xa89b('0x77')]=_0x4d7100['body'][_0xa89b('0x78')];_0x298875[_0xa89b('0x3e')][_0xa89b('0x79')]=_0x298875[_0xa89b('0x63')][_0xa89b('0x7a')]=_0x4d7100[_0xa89b('0x62')][_0xa89b('0x7b')];}else{_0x298875['Imap'][_0xa89b('0x7c')]=_0x298875[_0xa89b('0x63')][_0xa89b('0x7c')]=![];}_0x298875[_0xa89b('0x3e')][_0xa89b('0x7d')]=_0x4d7100[_0xa89b('0x62')][_0xa89b('0x3e')]['host'];_0x298875[_0xa89b('0x3e')][_0xa89b('0x7e')]=_0x4d7100[_0xa89b('0x62')][_0xa89b('0x3e')][_0xa89b('0x7e')];_0x298875[_0xa89b('0x63')][_0xa89b('0x7d')]=_0x4d7100['body'][_0xa89b('0x63')][_0xa89b('0x7d')];_0x298875[_0xa89b('0x63')]['port']=_0x4d7100['body'][_0xa89b('0x63')][_0xa89b('0x7e')];}else{_0x298875[_0xa89b('0x3e')][_0xa89b('0x7f')]=_0x298875[_0xa89b('0x63')][_0xa89b('0x7f')]=_0x4d7100[_0xa89b('0x62')][_0xa89b('0x75')];_0x298875[_0xa89b('0x3e')][_0xa89b('0x77')]=_0x298875[_0xa89b('0x63')][_0xa89b('0x77')]=_0x4d7100[_0xa89b('0x62')][_0xa89b('0x78')];_0x298875['Imap'][_0xa89b('0x79')]=_0x298875['Smtp'][_0xa89b('0x7a')]=_0x4d7100['body'][_0xa89b('0x7b')];}return db['MailAccount'][_0xa89b('0x67')](_0x298875,{'include':[{'model':db['MailServerOut'],'as':'Smtp'},{'model':db[_0xa89b('0x3d')],'as':_0xa89b('0x3e')}]})[_0xa89b('0x34')](function(_0x39ebaa){var _0x403cfa=_0x4d7100[_0xa89b('0x77')][_0xa89b('0x36')]({'plain':!![]});if(!_0x403cfa)throw new Error(_0xa89b('0x80'));if(_0x403cfa[_0xa89b('0x81')]===_0xa89b('0x77')){var _0x581136=_0x39ebaa[_0xa89b('0x36')]({'plain':!![]});return db[_0xa89b('0x82')]['find']({'where':{'name':_0xa89b('0x83'),'userProfileId':_0x403cfa[_0xa89b('0x84')]},'raw':!![]})[_0xa89b('0x34')](function(_0x49f7a2){if(_0x49f7a2&&_0x49f7a2[_0xa89b('0x85')]===0x0){return db[_0xa89b('0x37')][_0xa89b('0x67')]({'name':_0x581136[_0xa89b('0x3a')],'resourceId':_0x581136['id'],'type':_0x49f7a2[_0xa89b('0x3a')],'sectionId':_0x49f7a2['id']},{})['then'](function(){return _0x39ebaa;});}else{return _0x39ebaa;}})['catch'](function(_0x47c7c2){logger[_0xa89b('0x27')](_0xa89b('0x86'),_0x47c7c2);throw _0x47c7c2;});}return _0x39ebaa;})[_0xa89b('0x34')](respondWithResult(_0x2afee0,0xc9))['catch'](handleError(_0x2afee0,null));};exports['getImap']=function(_0x4ba1d4,_0x1f3d7f,_0x35737a){return db[_0xa89b('0x59')]['findOne']({'where':{'id':_0x4ba1d4[_0xa89b('0x5f')]['id']}})['then'](handleEntityNotFound(_0x1f3d7f,null))[_0xa89b('0x34')](function(_0x2023b9){if(_0x2023b9){return _0x2023b9[_0xa89b('0x87')]();}return null;})[_0xa89b('0x34')](respondWithResult(_0x1f3d7f,null))[_0xa89b('0x2a')](handleError(_0x1f3d7f,null));};exports['addImap']=function(_0x16dd04,_0x2a1f64,_0x78c246){if(_0x16dd04[_0xa89b('0x62')]['id']){delete _0x16dd04[_0xa89b('0x62')]['id'];}return db[_0xa89b('0x59')]['find']({'where':{'id':_0x16dd04['params']['id']}})[_0xa89b('0x34')](handleEntityNotFound(_0x2a1f64,null))['then'](function(_0x57c976){if(_0x57c976){_0x16dd04[_0xa89b('0x62')][_0xa89b('0x66')]=_0x57c976['id'];return db[_0xa89b('0x3d')][_0xa89b('0x67')](_0x16dd04[_0xa89b('0x62')]);}})[_0xa89b('0x34')](respondWithResult(_0x2a1f64,null))['catch'](handleError(_0x2a1f64,null));};exports[_0xa89b('0x88')]=function(_0x2587f7,_0x49502a,_0x1c1ff1){return db[_0xa89b('0x59')][_0xa89b('0x6e')]({'where':{'id':_0x2587f7[_0xa89b('0x5f')]['id']}})[_0xa89b('0x34')](handleEntityNotFound(_0x49502a,null))[_0xa89b('0x34')](function(_0x26fc7a){if(_0x26fc7a){return _0x26fc7a[_0xa89b('0x89')](null);}return null;})[_0xa89b('0x34')](respondWithStatusCode(_0x49502a,null))[_0xa89b('0x2a')](handleError(_0x49502a,null));};exports[_0xa89b('0x8a')]=function(_0x5437e3,_0x3bf7fb,_0x193a00){return db[_0xa89b('0x59')][_0xa89b('0x6e')]({'where':{'id':_0x5437e3['params']['id']}})[_0xa89b('0x34')](handleEntityNotFound(_0x3bf7fb,null))['then'](function(_0x5520c3){if(_0x5520c3){return _0x5520c3['getSmtp']();}return null;})[_0xa89b('0x34')](respondWithResult(_0x3bf7fb,null))[_0xa89b('0x2a')](handleError(_0x3bf7fb,null));};exports[_0xa89b('0x8b')]=function(_0x47683f,_0x43c921,_0x1d9816){if(_0x47683f['body']['id']){delete _0x47683f[_0xa89b('0x62')]['id'];}return db['MailAccount'][_0xa89b('0x61')]({'where':{'id':_0x47683f['params']['id']}})[_0xa89b('0x34')](handleEntityNotFound(_0x43c921,null))[_0xa89b('0x34')](function(_0x119ed6){if(_0x119ed6){_0x47683f[_0xa89b('0x62')][_0xa89b('0x66')]=_0x119ed6['id'];return db[_0xa89b('0x3f')][_0xa89b('0x67')](_0x47683f[_0xa89b('0x62')]);}})[_0xa89b('0x34')](respondWithResult(_0x43c921,null))[_0xa89b('0x2a')](handleError(_0x43c921,null));};exports[_0xa89b('0x8c')]=function(_0x13dbf2,_0x2e39db,_0x802d9c){return db['MailAccount'][_0xa89b('0x6e')]({'where':{'id':_0x13dbf2[_0xa89b('0x5f')]['id']}})[_0xa89b('0x34')](handleEntityNotFound(_0x2e39db,null))['then'](function(_0x579dcc){if(_0x579dcc){return _0x579dcc[_0xa89b('0x8d')](null);}return null;})[_0xa89b('0x34')](respondWithStatusCode(_0x2e39db,null))[_0xa89b('0x2a')](handleError(_0x2e39db,null));};exports[_0xa89b('0x8e')]=function(_0x3d5892,_0x4a9af2,_0x51a3dd){return db[_0xa89b('0x8f')][_0xa89b('0x61')]({'where':{'id':_0x3d5892[_0xa89b('0x5f')]['id']}})[_0xa89b('0x34')](handleEntityNotFound(_0x4a9af2,null))[_0xa89b('0x34')](function(_0x2a75d1){if(_0x2a75d1){return _0x2a75d1[_0xa89b('0x8e')](_0x3d5892[_0xa89b('0x62')][_0xa89b('0x6f')],_[_0xa89b('0x90')](_0x3d5892[_0xa89b('0x62')],[_0xa89b('0x6f'),'id'])||{});}})[_0xa89b('0x34')](respondWithResult(_0x4a9af2,null))['catch'](handleError(_0x4a9af2,null));};exports[_0xa89b('0x91')]=function(_0xe70550,_0x430231,_0x2d917e){var _0x36385d={'raw':![],'where':{}};var _0x39d4d2={};var _0x15b314={'count':0x0,'rows':[]};return db['MailAccount'][_0xa89b('0x6e')]({'where':{'id':_0xe70550['params']['id']}})['then'](handleEntityNotFound(_0x430231,null))[_0xa89b('0x34')](function(_0x28a784){if(_0x28a784){_0x39d4d2[_0xa89b('0x46')]=_[_0xa89b('0x47')](db['MailInteraction'][_0xa89b('0x42')]);_0x39d4d2[_0xa89b('0x48')]=_[_0xa89b('0x47')](_0xe70550['query']);_0x39d4d2[_0xa89b('0x54')]=_[_0xa89b('0x49')](_0x39d4d2[_0xa89b('0x46')],_0x39d4d2['query']);_0x36385d[_0xa89b('0x4a')]=_[_0xa89b('0x49')](_0x39d4d2[_0xa89b('0x46')],qs[_0xa89b('0x4b')](_0xe70550[_0xa89b('0x48')][_0xa89b('0x4b')]));_0x36385d['attributes']=_0x36385d[_0xa89b('0x4a')]['length']?_0x36385d[_0xa89b('0x4a')]:_0x39d4d2[_0xa89b('0x46')];if(!_0xe70550[_0xa89b('0x48')][_0xa89b('0x4d')](_0xa89b('0x4e'))){_0x36385d[_0xa89b('0x4f')]=qs[_0xa89b('0x4f')](_0xe70550[_0xa89b('0x48')][_0xa89b('0x4f')]);_0x36385d[_0xa89b('0x2d')]=qs['offset'](_0xe70550[_0xa89b('0x48')]['offset']);}_0x36385d[_0xa89b('0x50')]=qs['sort'](_0xe70550['query'][_0xa89b('0x51')]);_0x36385d[_0xa89b('0x52')]=qs['filters'](_[_0xa89b('0x53')](_0xe70550[_0xa89b('0x48')],_0x39d4d2['filters']));_0x36385d[_0xa89b('0x52')]['MailAccountId']=_0x28a784['id'];if(_0xe70550[_0xa89b('0x48')][_0xa89b('0x55')]){_0x36385d[_0xa89b('0x52')]=_[_0xa89b('0x57')](_0x36385d['where'],{'$or':_[_0xa89b('0x41')](_0x36385d[_0xa89b('0x4a')],function(_0x31a2a9){var _0x5638ed={};_0x5638ed[_0x31a2a9]={'$like':'%'+_0xe70550[_0xa89b('0x48')]['filter']+'%'};return _0x5638ed;})});}_0x36385d=_[_0xa89b('0x57')]({},_0x36385d,_0xe70550[_0xa89b('0x58')]);return db[_0xa89b('0x8f')][_0xa89b('0x2f')]({'where':_0x36385d[_0xa89b('0x52')]})['then'](function(_0x43d6af){_0x15b314['count']=_0x43d6af;if(_0xe70550[_0xa89b('0x48')][_0xa89b('0x5a')]){_0x36385d[_0xa89b('0x5b')]=[{'model':db[_0xa89b('0x92')],'as':_0xa89b('0x93'),'required':![]},{'model':db[_0xa89b('0x94')],'as':_0xa89b('0x95'),'attributes':['name','fullname',_0xa89b('0x96')],'required':![]},{'model':db[_0xa89b('0x97')],'as':_0xa89b('0x98'),'attributes':['id',_0xa89b('0x3a'),_0xa89b('0x99')],'where':_0xe70550[_0xa89b('0x48')][_0xa89b('0x9a')]?{'id':_0xe70550[_0xa89b('0x48')][_0xa89b('0x9a')]}:undefined,'required':_0xe70550['query']['tag']?!![]:![]}];}return db[_0xa89b('0x8f')][_0xa89b('0x5c')](_0x36385d);})[_0xa89b('0x34')](function(_0x4819d2){_0x15b314['rows']=_0x4819d2;return _0x15b314;});}})[_0xa89b('0x34')](respondWithFilteredResult(_0x430231,_0x36385d))[_0xa89b('0x2a')](handleError(_0x430231,null));};exports['addApplications']=function(_0x3e01de,_0x33274f,_0x2647e8){return db[_0xa89b('0x59')]['findOne']({'where':{'id':_0x3e01de[_0xa89b('0x5f')]['id']}})[_0xa89b('0x34')](handleEntityNotFound(_0x33274f,null))[_0xa89b('0x34')](function(_0x3d372b){if(_0x3d372b){return db['sequelize'][_0xa89b('0x9b')](function(_0x282290){return db[_0xa89b('0x9c')][_0xa89b('0x35')]({'where':{'MailAccountId':_0x3e01de[_0xa89b('0x5f')]['id']},'transaction':_0x282290})[_0xa89b('0x34')](function(_0x421fd1){var _0x14bffe=_[_0xa89b('0x41')](_0x3e01de[_0xa89b('0x62')],function(_0x367b05){_0x367b05[_0xa89b('0x66')]=_0x3e01de[_0xa89b('0x5f')]['id'];return _0x367b05;});return db['MailApplication']['bulkCreate'](_0x14bffe,{'transaction':_0x282290});});})['then'](function(){return db[_0xa89b('0x9c')]['findAndCountAll']({'where':{'MailAccountId':_0x3e01de[_0xa89b('0x5f')]['id']},'order':_0xa89b('0x9d')});});}})[_0xa89b('0x34')](respondWithResult(_0x33274f,null))[_0xa89b('0x2a')](handleError(_0x33274f,null));};exports[_0xa89b('0x9e')]=function(_0x578633,_0x53c9e8,_0x5e27c4){var _0x17ece2={};var _0x1f9982={};var _0xdee2b3;var _0x592aca;return db[_0xa89b('0x59')][_0xa89b('0x6e')]({'where':{'id':_0x578633['params']['id']}})[_0xa89b('0x34')](handleEntityNotFound(_0x53c9e8,null))['then'](function(_0x47368){if(_0x47368){_0xdee2b3=_0x47368;_0x1f9982[_0xa89b('0x46')]=_[_0xa89b('0x47')](db['MailApplication'][_0xa89b('0x42')]);_0x1f9982[_0xa89b('0x48')]=_[_0xa89b('0x47')](_0x578633['query']);_0x1f9982[_0xa89b('0x54')]=_[_0xa89b('0x49')](_0x1f9982[_0xa89b('0x46')],_0x1f9982[_0xa89b('0x48')]);_0x17ece2[_0xa89b('0x4a')]=_[_0xa89b('0x49')](_0x1f9982[_0xa89b('0x46')],qs[_0xa89b('0x4b')](_0x578633[_0xa89b('0x48')][_0xa89b('0x4b')]));_0x17ece2[_0xa89b('0x4a')]=_0x17ece2[_0xa89b('0x4a')][_0xa89b('0x4c')]?_0x17ece2[_0xa89b('0x4a')]:_0x1f9982[_0xa89b('0x46')];_0x17ece2[_0xa89b('0x50')]=qs['sort'](_0x578633[_0xa89b('0x48')]['sort']);_0x17ece2[_0xa89b('0x52')]=qs[_0xa89b('0x54')](_[_0xa89b('0x53')](_0x578633[_0xa89b('0x48')],_0x1f9982['filters']));if(_0x578633['query']['filter']){_0x17ece2[_0xa89b('0x52')]=_[_0xa89b('0x57')](_0x17ece2[_0xa89b('0x52')],{'$or':_[_0xa89b('0x41')](_0x17ece2[_0xa89b('0x4a')],function(_0x1c9f7a){var _0x2d2be8={};_0x2d2be8[_0x1c9f7a]={'$like':'%'+_0x578633['query']['filter']+'%'};return _0x2d2be8;})});}_0x17ece2=_['merge']({},_0x17ece2,_0x578633[_0xa89b('0x58')]);return _0xdee2b3['getApplications'](_0x17ece2);}})[_0xa89b('0x34')](function(_0x4b3a31){if(_0x4b3a31){_0x592aca=_0x4b3a31[_0xa89b('0x4c')];if(!_0x578633['query'][_0xa89b('0x4d')](_0xa89b('0x4e'))){_0x17ece2[_0xa89b('0x4f')]=qs[_0xa89b('0x4f')](_0x578633[_0xa89b('0x48')][_0xa89b('0x4f')]);_0x17ece2[_0xa89b('0x2d')]=qs[_0xa89b('0x2d')](_0x578633['query'][_0xa89b('0x2d')]);}return _0xdee2b3[_0xa89b('0x9e')](_0x17ece2);}})[_0xa89b('0x34')](function(_0x1c6ee3){if(_0x1c6ee3){return _0x1c6ee3?{'count':_0x592aca,'rows':_0x1c6ee3}:null;}})[_0xa89b('0x34')](respondWithResult(_0x53c9e8,null))['catch'](handleError(_0x53c9e8,null));};exports['getMessages']=function(_0x241bf6,_0x229114,_0x3af430){var _0x3fab3f={'raw':!![],'where':{}};var _0x42ac24={};var _0xaab886={'count':0x0,'rows':[]};return db['MailAccount'][_0xa89b('0x6e')]({'where':{'id':_0x241bf6['params']['id']}})[_0xa89b('0x34')](handleEntityNotFound(_0x229114,null))[_0xa89b('0x34')](function(_0x2a471c){if(_0x2a471c){_0x42ac24[_0xa89b('0x46')]=_['keys'](db[_0xa89b('0x9f')][_0xa89b('0x42')]);_0x42ac24[_0xa89b('0x48')]=_['keys'](_0x241bf6[_0xa89b('0x48')]);_0x42ac24[_0xa89b('0x54')]=_[_0xa89b('0x49')](_0x42ac24['model'],_0x42ac24[_0xa89b('0x48')]);_0x3fab3f['attributes']=_['intersection'](_0x42ac24['model'],qs[_0xa89b('0x4b')](_0x241bf6['query'][_0xa89b('0x4b')]));_0x3fab3f[_0xa89b('0x4a')]=_0x3fab3f[_0xa89b('0x4a')][_0xa89b('0x4c')]?_0x3fab3f[_0xa89b('0x4a')]:_0x42ac24[_0xa89b('0x46')];if(!_0x241bf6[_0xa89b('0x48')]['hasOwnProperty'](_0xa89b('0x4e'))){_0x3fab3f[_0xa89b('0x4f')]=qs[_0xa89b('0x4f')](_0x241bf6[_0xa89b('0x48')][_0xa89b('0x4f')]);_0x3fab3f[_0xa89b('0x2d')]=qs[_0xa89b('0x2d')](_0x241bf6[_0xa89b('0x48')][_0xa89b('0x2d')]);}_0x3fab3f['order']=qs[_0xa89b('0x51')](_0x241bf6[_0xa89b('0x48')]['sort']);_0x3fab3f[_0xa89b('0x52')]=qs[_0xa89b('0x54')](_['pick'](_0x241bf6[_0xa89b('0x48')],_0x42ac24[_0xa89b('0x54')]));_0x3fab3f[_0xa89b('0x52')][_0xa89b('0x66')]=_0x2a471c['id'];if(_0x241bf6[_0xa89b('0x48')][_0xa89b('0x55')]){_0x3fab3f[_0xa89b('0x52')]=_[_0xa89b('0x57')](_0x3fab3f[_0xa89b('0x52')],{'$or':_[_0xa89b('0x41')](_0x3fab3f[_0xa89b('0x4a')],function(_0x4a87fc){var _0x20d5fd={};_0x20d5fd[_0x4a87fc]={'$like':'%'+_0x241bf6[_0xa89b('0x48')][_0xa89b('0x55')]+'%'};return _0x20d5fd;})});}if(_0x241bf6['query'][_0xa89b('0xa0')]){var _0x3e25f4=_0x241bf6[_0xa89b('0x48')][_0xa89b('0xa0')][_0xa89b('0xa1')](',');var _0x11497e={};_0x11497e[_0x3e25f4[0x0]]={'$gte':moment(_0x3e25f4[0x1])[_0xa89b('0xa2')](_0xa89b('0xa3'))};_0x3fab3f['where']=_['merge'](_0x3fab3f[_0xa89b('0x52')],_0x11497e);}_0x3fab3f=_[_0xa89b('0x57')]({},_0x3fab3f,_0x241bf6[_0xa89b('0x58')]);return db['MailMessage']['count']({'where':_0x3fab3f['where']})[_0xa89b('0x34')](function(_0x41b207){_0xaab886['count']=_0x41b207;if(_0x241bf6[_0xa89b('0x48')]['includeAll']){_0x3fab3f[_0xa89b('0x5b')]=[{'all':!![]}];}return db[_0xa89b('0x9f')]['findAll'](_0x3fab3f);})[_0xa89b('0x34')](function(_0x2b9ece){if(_0x241bf6['query'][_0xa89b('0xa4')]===_0xa89b('0xa5')){for(var _0x1f154f=0x0;_0x1f154f<_0x2b9ece[_0xa89b('0x4c')];_0x1f154f++){_0x2b9ece[_0x1f154f][_0xa89b('0x62')]=juice(_0x2b9ece[_0x1f154f][_0xa89b('0x62')]);}}_0xaab886[_0xa89b('0x5d')]=_0x2b9ece;return _0xaab886;});}})[_0xa89b('0x34')](respondWithFilteredResult(_0x229114,_0x3fab3f))[_0xa89b('0x2a')](handleError(_0x229114,null));};exports['send']=function(_0x3147b6,_0x33bee2,_0x30dfca){var _0x955722,_0x29a37a={},_0x8aa45a;if(_0x3147b6['body']['to']){_0x8aa45a=_0x3147b6[_0xa89b('0x62')]['to'][_0xa89b('0xa1')](',')[0x0];}return db[_0xa89b('0x59')][_0xa89b('0x61')]({'where':{'id':_0x3147b6[_0xa89b('0x5f')]['id']},'include':[{'model':db[_0xa89b('0xa6')],'as':'List','include':[{'model':db[_0xa89b('0x92')],'as':_0xa89b('0xa7'),'where':{'email':_0x8aa45a},'limit':0x1,'order':[['updatedAt',_0xa89b('0xa8')]]}]},{'model':db[_0xa89b('0x3f')],'as':_0xa89b('0x63'),'raw':!![]}]})[_0xa89b('0x34')](handleEntityNotFound(_0x33bee2,null))['then'](function(_0x295b01){if(_0x295b01){_0x955722=_0x295b01;if(_0x295b01[_0xa89b('0x63')]){if(_[_0xa89b('0x74')](_0x3147b6[_0xa89b('0x62')][_0xa89b('0xa9')])){_0x3147b6[_0xa89b('0x62')][_0xa89b('0xa9')]=util[_0xa89b('0xa2')](_0xa89b('0xaa'),_0x295b01['name'],_0x295b01['email']||_0x295b01[_0xa89b('0x63')]['user']);}if(_0x3147b6[_0xa89b('0x62')]['attachments']&&_0x3147b6['body']['attachments']['length']){for(var _0x69cda5=0x0;_0x69cda5<_0x3147b6[_0xa89b('0x62')][_0xa89b('0xab')][_0xa89b('0x4c')];_0x69cda5+=0x1){_0x3147b6['body'][_0xa89b('0xab')][_0x69cda5]={'filename':_0x3147b6[_0xa89b('0x62')][_0xa89b('0xab')][_0x69cda5][_0xa89b('0x3a')],'path':path[_0xa89b('0xac')](config[_0xa89b('0xad')],_0xa89b('0xae'),_0x3147b6['body']['attachments'][_0x69cda5][_0xa89b('0xaf')])};}}var _0x321cd4={'tls':{'rejectUnauthorized':![]}};if(_['isNil'](_0x295b01['Smtp']['service'])){if(_0x295b01[_0xa89b('0x63')]['authentication']){_0x321cd4[_0xa89b('0xb0')]={'user':_0x295b01[_0xa89b('0x63')][_0xa89b('0x77')],'pass':_0x295b01[_0xa89b('0x63')][_0xa89b('0x7a')]};}_0x321cd4[_0xa89b('0x7d')]=_0x295b01[_0xa89b('0x63')][_0xa89b('0x7d')];_0x321cd4[_0xa89b('0x7e')]=_0x295b01[_0xa89b('0x63')][_0xa89b('0x7e')];_0x321cd4[_0xa89b('0xb1')]=_0x295b01['Smtp'][_0xa89b('0xb1')];}else{_0x321cd4[_0xa89b('0x7f')]=_0x295b01['Smtp'][_0xa89b('0x7f')];_0x321cd4[_0xa89b('0xb0')]={'user':_0x295b01[_0xa89b('0x63')][_0xa89b('0x77')],'pass':_0x295b01[_0xa89b('0x63')][_0xa89b('0x7a')]};}return respondWithRpcPromise(_0xa89b('0xb2'),_0xa89b('0xb3'),{'account':_0x321cd4,'message':_0x3147b6[_0xa89b('0x62')]});}else{throw new Error(_0xa89b('0xb4'));}}})[_0xa89b('0x34')](function(_0x1f5e2e){if(_0x1f5e2e){_0x29a37a=_0x1f5e2e;if(_0x955722['List']){if(_0x955722[_0xa89b('0xb5')][_0xa89b('0xa7')][_0xa89b('0x4c')]){return _0x955722[_0xa89b('0xb5')][_0xa89b('0xa7')][0x0];}else{return db[_0xa89b('0x92')][_0xa89b('0x67')](_[_0xa89b('0xb6')](_0x3147b6[_0xa89b('0x62')],{'firstName':_0x3147b6[_0xa89b('0x62')]['to'],'email':_0x3147b6[_0xa89b('0x62')]['to'],'phone':_0x3147b6[_0xa89b('0x62')]['to'],'ListId':_0x955722[_0xa89b('0x71')]}));}}else{throw new Error(_0xa89b('0xb4'));}}})[_0xa89b('0x34')](function(_0x4315ed){if(_0x4315ed){var _0x3281bb={'UserId':_0x3147b6['user']['id'],'ContactId':_0x4315ed['id'],'MailAccountId':_0x955722['id'],'inReplyTo':_0x29a37a['messageId'],'to':_0x3147b6[_0xa89b('0x62')][_0xa89b('0xa9')],'cc':_0x3147b6[_0xa89b('0x62')]['cc'],'subject':_0x3147b6[_0xa89b('0x62')]['subject'],'attach':_0x3147b6[_0xa89b('0x62')]['attach'],'firstMsgDirection':_0xa89b('0xb7'),'lastMsgAt':moment()[_0xa89b('0xa2')](_0xa89b('0xa3')),'lastMsgDirection':'out','Messages':[_[_0xa89b('0x57')](_0x3147b6[_0xa89b('0x62')],{'messageId':_0x29a37a['messageId'],'sentAt':moment()['format'](_0xa89b('0xa3')),'read':!![],'MailAccountId':_0x955722['id'],'UserId':_0x3147b6['user']['id'],'ContactId':_0x4315ed['id']})]};if(_0x3147b6['body'][_0xa89b('0xb8')]){_0x3281bb=_[_0xa89b('0x57')](_0x3281bb,_0x3147b6[_0xa89b('0x62')][_0xa89b('0xb8')]);}return db['MailInteraction'][_0xa89b('0x67')](_0x3281bb,{'include':[{'model':db[_0xa89b('0x9f')],'as':'Messages'}]});}})[_0xa89b('0x34')](respondWithResult(_0x33bee2,null))[_0xa89b('0x2a')](handleError(_0x33bee2,null));};exports[_0xa89b('0xb9')]=function(_0x49b921,_0x1cd702,_0x3a6d0c){return db[_0xa89b('0x59')][_0xa89b('0x61')]({'where':{'id':_0x49b921[_0xa89b('0x5f')]['id']},'include':[{'model':db[_0xa89b('0x3f')],'as':'Smtp','raw':!![]}]})['then'](handleEntityNotFound(_0x1cd702,null))[_0xa89b('0x34')](function(_0x48dc7e){if(_0x48dc7e&&_0x48dc7e[_0xa89b('0x63')]){var _0x2c46ae={'id':_0x48dc7e['id'],'tls':{'rejectUnauthorized':![]}};if(_0x48dc7e['Smtp'][_0xa89b('0x7f')]){_0x2c46ae[_0xa89b('0x7f')]=_0x48dc7e[_0xa89b('0x63')][_0xa89b('0x7f')];}else{_0x2c46ae[_0xa89b('0x7d')]=_0x48dc7e[_0xa89b('0x63')][_0xa89b('0x7d')];_0x2c46ae[_0xa89b('0x7e')]=_0x48dc7e[_0xa89b('0x63')][_0xa89b('0x7e')];_0x2c46ae[_0xa89b('0xb1')]=_0x48dc7e[_0xa89b('0x63')][_0xa89b('0xb1')];}if(_0x48dc7e[_0xa89b('0x63')][_0xa89b('0x7c')]){_0x2c46ae[_0xa89b('0xb0')]={'user':_0x48dc7e[_0xa89b('0x63')][_0xa89b('0x77')],'pass':_0x48dc7e[_0xa89b('0x63')][_0xa89b('0x7a')]};}return respondWithRpcPromise(_0xa89b('0xba'),_0xa89b('0xb9'),{'account':_0x2c46ae});}})['then'](respondWithResult(_0x1cd702,null))['catch'](handleError(_0x1cd702,null));};exports['destroy']=function(_0xf2e3bf,_0x48bf44){return db['MailAccount'][_0xa89b('0x61')]({'where':{'id':_0xf2e3bf[_0xa89b('0x5f')]['id']}})[_0xa89b('0x34')](handleEntityNotFound(_0x48bf44,null))['then'](function(_0x3072e2){if(_0x3072e2&&_0x3072e2[_0xa89b('0x7f')]){throw new db[(_0xa89b('0xbb'))][(_0xa89b('0xbc'))](_0xa89b('0xbd'));}return _0x3072e2;})[_0xa89b('0x34')](removeEntity(_0x48bf44,null))[_0xa89b('0x2a')](handleError(_0x48bf44,null));};exports[_0xa89b('0xbe')]=function(_0x5c50e4,_0x4802ee,_0x4069e0){return db[_0xa89b('0x59')][_0xa89b('0x61')]({'where':{'id':_0x5c50e4[_0xa89b('0x5f')]['id']}})[_0xa89b('0x34')](handleEntityNotFound(_0x4802ee,null))['then'](function(_0x14f569){if(_0x14f569){return _0x14f569[_0xa89b('0xbe')](_0x5c50e4[_0xa89b('0x62')][_0xa89b('0x6f')],_[_0xa89b('0x90')](_0x5c50e4[_0xa89b('0x62')],[_0xa89b('0x6f'),'id'])||{})[_0xa89b('0xbf')](function(_0x7b0daa){for(var _0x5ea2c7=0x0;_0x5ea2c7<_0x5c50e4[_0xa89b('0x62')][_0xa89b('0x6f')][_0xa89b('0x4c')];_0x5ea2c7+=0x1){socket[_0xa89b('0xc0')](_0xa89b('0xc1'),{'UserId':Number(_0x5c50e4[_0xa89b('0x62')][_0xa89b('0x6f')][_0x5ea2c7]),'MailAccountId':Number(_0x5c50e4[_0xa89b('0x5f')]['id'])});}return _0x7b0daa;});}})['then'](respondWithResult(_0x4802ee,null))['catch'](handleError(_0x4802ee,null));};exports[_0xa89b('0xc2')]=function(_0x88c520,_0xa3db14,_0x14fcf7){return db[_0xa89b('0x59')]['find']({'where':{'id':_0x88c520[_0xa89b('0x5f')]['id']}})['then'](handleEntityNotFound(_0xa3db14,null))[_0xa89b('0x34')](function(_0x4d148d){if(_0x4d148d){return _0x4d148d[_0xa89b('0xc2')](_0x88c520[_0xa89b('0x48')][_0xa89b('0x6f')])['then'](function(){if(_['isArray'](_0x88c520[_0xa89b('0x48')]['ids'])){for(var _0x9afdc3=0x0;_0x9afdc3<_0x88c520[_0xa89b('0x48')][_0xa89b('0x6f')][_0xa89b('0x4c')];_0x9afdc3+=0x1){socket[_0xa89b('0xc0')]('userMailAccount:remove',{'UserId':Number(_0x88c520[_0xa89b('0x48')]['ids'][_0x9afdc3]),'MailAccountId':Number(_0x88c520[_0xa89b('0x5f')]['id'])});}}else{socket[_0xa89b('0xc0')](_0xa89b('0xc3'),{'UserId':Number(_0x88c520['query'][_0xa89b('0x6f')]),'MailAccountId':Number(_0x88c520[_0xa89b('0x5f')]['id'])});}});}})['then'](respondWithStatusCode(_0xa3db14,null))[_0xa89b('0x2a')](handleError(_0xa3db14,null));};exports[_0xa89b('0xc4')]=function(_0x331cf6,_0x1696c7,_0x36498a){var _0x2d8977={};var _0x1f0228={};var _0xc5e8c7;var _0x163b76;return db[_0xa89b('0x59')][_0xa89b('0x6e')]({'where':{'id':_0x331cf6[_0xa89b('0x5f')]['id']}})[_0xa89b('0x34')](handleEntityNotFound(_0x1696c7,null))[_0xa89b('0x34')](function(_0x3afc1f){if(_0x3afc1f){_0xc5e8c7=_0x3afc1f;_0x1f0228[_0xa89b('0x46')]=_['keys'](db[_0xa89b('0x94')][_0xa89b('0x42')]);_0x1f0228[_0xa89b('0x48')]=_[_0xa89b('0x47')](_0x331cf6[_0xa89b('0x48')]);_0x1f0228['filters']=_[_0xa89b('0x49')](_0x1f0228['model'],_0x1f0228[_0xa89b('0x48')]);_0x2d8977['attributes']=_['intersection'](_0x1f0228[_0xa89b('0x46')],qs[_0xa89b('0x4b')](_0x331cf6[_0xa89b('0x48')]['fields']));_0x2d8977[_0xa89b('0x4a')]=_0x2d8977[_0xa89b('0x4a')][_0xa89b('0x4c')]?_0x2d8977['attributes']:_0x1f0228[_0xa89b('0x46')];_0x2d8977[_0xa89b('0x50')]=qs[_0xa89b('0x51')](_0x331cf6[_0xa89b('0x48')][_0xa89b('0x51')]);_0x2d8977[_0xa89b('0x52')]=qs[_0xa89b('0x54')](_['pick'](_0x331cf6[_0xa89b('0x48')],_0x1f0228['filters']));if(_0x331cf6[_0xa89b('0x48')]['filter']){_0x2d8977['where']=_[_0xa89b('0x57')](_0x2d8977[_0xa89b('0x52')],{'$or':_[_0xa89b('0x41')](_0x2d8977[_0xa89b('0x4a')],function(_0x42ec8c){var _0x8cd946={};_0x8cd946[_0x42ec8c]={'$like':'%'+_0x331cf6['query']['filter']+'%'};return _0x8cd946;})});}_0x2d8977=_[_0xa89b('0x57')]({},_0x2d8977,_0x331cf6[_0xa89b('0x58')]);return _0xc5e8c7['getAgents'](_0x2d8977);}})[_0xa89b('0x34')](function(_0x319af1){if(_0x319af1){_0x163b76=_0x319af1[_0xa89b('0x4c')];if(!_0x331cf6[_0xa89b('0x48')]['hasOwnProperty'](_0xa89b('0x4e'))){_0x2d8977[_0xa89b('0x4f')]=qs[_0xa89b('0x4f')](_0x331cf6[_0xa89b('0x48')][_0xa89b('0x4f')]);_0x2d8977[_0xa89b('0x2d')]=qs[_0xa89b('0x2d')](_0x331cf6[_0xa89b('0x48')][_0xa89b('0x2d')]);}return _0xc5e8c7[_0xa89b('0xc4')](_0x2d8977);}})['then'](function(_0x222926){if(_0x222926){return _0x222926?{'count':_0x163b76,'rows':_0x222926}:null;}})[_0xa89b('0x34')](respondWithResult(_0x1696c7,null))[_0xa89b('0x2a')](handleError(_0x1696c7,null));};
\ No newline at end of file
index 9189654..d8651ec 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0958=['MailAccount','save','update','emit','hasOwnProperty','hook','exports','events','../../mysqldb'];(function(_0x3070dc,_0x40cf11){var _0x431489=function(_0x49bc2a){while(--_0x49bc2a){_0x3070dc['push'](_0x3070dc['shift']());}};_0x431489(++_0x40cf11);}(_0x0958,0x7c));var _0x8095=function(_0x122ef9,_0x451d2a){_0x122ef9=_0x122ef9-0x0;var _0x42fba0=_0x0958[_0x122ef9];return _0x42fba0;};'use strict';var EventEmitter=require(_0x8095('0x0'));var MailAccount=require(_0x8095('0x1'))['db'][_0x8095('0x2')];var MailAccountEvents=new EventEmitter();MailAccountEvents['setMaxListeners'](0x0);var events={'afterCreate':_0x8095('0x3'),'afterUpdate':_0x8095('0x4'),'afterDestroy':'remove'};function emitEvent(_0x56d986){return function(_0x4625ee,_0x3da09b,_0x58bdb8){MailAccountEvents['emit'](_0x56d986+':'+_0x4625ee['id'],_0x4625ee);MailAccountEvents[_0x8095('0x5')](_0x56d986,_0x4625ee);_0x58bdb8(null);};}for(var e in events){if(events[_0x8095('0x6')](e)){var event=events[e];MailAccount[_0x8095('0x7')](e,emitEvent(event));}}module[_0x8095('0x8')]=MailAccountEvents;
\ No newline at end of file
+var _0x2431=['hasOwnProperty','hook','exports','events','../../mysqldb','setMaxListeners','save','remove','emit'];(function(_0x303bdb,_0x263efa){var _0x1ecc6c=function(_0x2d4b44){while(--_0x2d4b44){_0x303bdb['push'](_0x303bdb['shift']());}};_0x1ecc6c(++_0x263efa);}(_0x2431,0xc9));var _0x1243=function(_0x4e676e,_0x2a7c6d){_0x4e676e=_0x4e676e-0x0;var _0x336a3c=_0x2431[_0x4e676e];return _0x336a3c;};'use strict';var EventEmitter=require(_0x1243('0x0'));var MailAccount=require(_0x1243('0x1'))['db']['MailAccount'];var MailAccountEvents=new EventEmitter();MailAccountEvents[_0x1243('0x2')](0x0);var events={'afterCreate':_0x1243('0x3'),'afterUpdate':'update','afterDestroy':_0x1243('0x4')};function emitEvent(_0x309b51){return function(_0x3d5f6b,_0x1ce471,_0x4007fd){MailAccountEvents[_0x1243('0x5')](_0x309b51+':'+_0x3d5f6b['id'],_0x3d5f6b);MailAccountEvents[_0x1243('0x5')](_0x309b51,_0x3d5f6b);_0x4007fd(null);};}for(var e in events){if(events[_0x1243('0x6')](e)){var event=events[e];MailAccount[_0x1243('0x7')](e,emitEvent(event));}}module[_0x1243('0x8')]=MailAccountEvents;
\ No newline at end of file
index fe45cc9..e7fed91 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x53d5=['api','moment','bluebird','request-promise','path','rimraf','../../config/environment','exports','lodash'];(function(_0x43dc7e,_0x49a390){var _0x21e12d=function(_0x15cc1a){while(--_0x15cc1a){_0x43dc7e['push'](_0x43dc7e['shift']());}};_0x21e12d(++_0x49a390);}(_0x53d5,0x1a6));var _0x553d=function(_0xcce6b4,_0xbb6e1c){_0xcce6b4=_0xcce6b4-0x0;var _0xba54ca=_0x53d5[_0xcce6b4];return _0xba54ca;};'use strict';var _=require(_0x553d('0x0'));var util=require('util');var logger=require('../../config/logger')(_0x553d('0x1'));var moment=require(_0x553d('0x2'));var BPromise=require(_0x553d('0x3'));var rp=require(_0x553d('0x4'));var fs=require('fs');var path=require(_0x553d('0x5'));var rimraf=require(_0x553d('0x6'));var config=require(_0x553d('0x7'));var attributes=require('./mailAccount.attributes');module[_0x553d('0x8')]=function(_0x432544,_0xb5cd75){return _0x432544['define']('MailAccount',attributes,{'tableName':'mail_accounts','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xbcc3=['MailAccount','lodash','util','../../config/logger','api','moment','bluebird','path','rimraf','./mailAccount.attributes','exports','define'];(function(_0x43d96f,_0x2d28eb){var _0x1a1b4e=function(_0x35cf62){while(--_0x35cf62){_0x43d96f['push'](_0x43d96f['shift']());}};_0x1a1b4e(++_0x2d28eb);}(_0xbcc3,0x199));var _0x3bcc=function(_0x335e20,_0x3b998c){_0x335e20=_0x335e20-0x0;var _0x410b0f=_0xbcc3[_0x335e20];return _0x410b0f;};'use strict';var _=require(_0x3bcc('0x0'));var util=require(_0x3bcc('0x1'));var logger=require(_0x3bcc('0x2'))(_0x3bcc('0x3'));var moment=require(_0x3bcc('0x4'));var BPromise=require(_0x3bcc('0x5'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x3bcc('0x6'));var rimraf=require(_0x3bcc('0x7'));var config=require('../../config/environment');var attributes=require(_0x3bcc('0x8'));module[_0x3bcc('0x9')]=function(_0x28d83e,_0x1ee644){return _0x28d83e[_0x3bcc('0xa')](_0x3bcc('0xb'),attributes,{'tableName':'mail_accounts','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 909e5e7..7330b86 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9b96=['waitForTheAssignedAgent','startRouting','Start','lodash','util','bluebird','randomstring','ioredis','../../config/utils','rpc','../../config/environment','jayson/promise','redis','localhost','socket.io-emitter','register','info','MailAccount,\x20%s,\x20%s','request\x20sent','debug','MailAccount,\x20%s,\x20%s,\x20%s','stringify','error','message','result','catch','GetMailAccount','MailAccount','findAll','options','raw','where','include','attributes','map','model','ShowMailAccount','find','then','NotifyMailAccount','body','difference','keys','CmContact','rawAttributes','createdAt','updatedAt','CompanyId','ListId','isNil','from\x20is\x20mandatory','body\x20is\x20mandatory\x20and\x20not\x20empty','mapKey','includes','from','account','CmList','List','Contacts','DESC','MailApplication','MailServerOut','Smtp','Applications','applications','orderBy','priority','autoclose','push','length','close','create','List\x20not\x20found','contact','messageId','generate','subject','attach','format','YYYY-MM-DD\x20HH:mm:ss','MailInteraction','MailMessage','Messages','inReplyTo','Contact\x20not\x20found','spread','update','interaction','created','attachments','originTo','bcc','ChatWebsiteId','Email','ChatOfflineMessageId','Attachment','Attachments','UserId','User','name','unshift','agent'];(function(_0x31d1ad,_0x9cd29d){var _0x5e61cb=function(_0x5908dc){while(--_0x5908dc){_0x31d1ad['push'](_0x31d1ad['shift']());}};_0x5e61cb(++_0x9cd29d);}(_0x9b96,0xcf));var _0x69b9=function(_0x6131cd,_0x4c26a1){_0x6131cd=_0x6131cd-0x0;var _0x47e916=_0x9b96[_0x6131cd];return _0x47e916;};'use strict';var _=require(_0x69b9('0x0'));var util=require(_0x69b9('0x1'));var moment=require('moment');var BPromise=require(_0x69b9('0x2'));var rs=require(_0x69b9('0x3'));var fs=require('fs');var Redis=require(_0x69b9('0x4'));var db=require('../../mysqldb')['db'];var utils=require(_0x69b9('0x5'));var logger=require('../../config/logger')(_0x69b9('0x6'));var config=require(_0x69b9('0x7'));var jayson=require(_0x69b9('0x8'));var client=jayson['client']['http']({'port':0x232c});config[_0x69b9('0x9')]=_['defaults'](config[_0x69b9('0x9')],{'host':_0x69b9('0xa'),'port':0x18eb});var socket=require(_0x69b9('0xb'))(new Redis(config[_0x69b9('0x9')]));require('./mailAccount.socket')[_0x69b9('0xc')](socket);function respondWithRpcPromise(_0x37fd3a,_0x4f3fc7,_0x41f4e8){return new BPromise(function(_0x48dfb6,_0x1a0a47){return client['request'](_0x37fd3a,_0x41f4e8)['then'](function(_0x24d2fa){logger[_0x69b9('0xd')](_0x69b9('0xe'),_0x4f3fc7,_0x69b9('0xf'));logger[_0x69b9('0x10')](_0x69b9('0x11'),_0x4f3fc7,_0x69b9('0xf'),JSON[_0x69b9('0x12')](_0x24d2fa));if(_0x24d2fa[_0x69b9('0x13')]){if(_0x24d2fa[_0x69b9('0x13')]['code']===0x1f4){logger[_0x69b9('0x13')]('MailAccount,\x20%s,\x20%s',_0x4f3fc7,_0x24d2fa[_0x69b9('0x13')][_0x69b9('0x14')]);return _0x1a0a47(_0x24d2fa[_0x69b9('0x13')][_0x69b9('0x14')]);}logger[_0x69b9('0x13')]('MailAccount,\x20%s,\x20%s',_0x4f3fc7,_0x24d2fa[_0x69b9('0x13')]['message']);return _0x48dfb6(_0x24d2fa[_0x69b9('0x13')][_0x69b9('0x14')]);}else{logger[_0x69b9('0xd')](_0x69b9('0xe'),_0x4f3fc7,_0x69b9('0xf'));_0x48dfb6(_0x24d2fa[_0x69b9('0x15')][_0x69b9('0x14')]);}})[_0x69b9('0x16')](function(_0x3d7bc8){logger['error'](_0x69b9('0xe'),_0x4f3fc7,_0x3d7bc8);_0x1a0a47(_0x3d7bc8);});});}exports[_0x69b9('0x17')]=function(_0x33c4bc){var _0x4862e9=this;return new Promise(function(_0x26334e,_0x1bd6c3){return db[_0x69b9('0x18')][_0x69b9('0x19')]({'raw':_0x33c4bc['options']?_0x33c4bc[_0x69b9('0x1a')][_0x69b9('0x1b')]===undefined?!![]:![]:!![],'where':_0x33c4bc[_0x69b9('0x1a')]?_0x33c4bc[_0x69b9('0x1a')][_0x69b9('0x1c')]||null:null,'attributes':_0x33c4bc[_0x69b9('0x1a')]?_0x33c4bc['options']['attributes']||null:null,'limit':_0x33c4bc[_0x69b9('0x1a')]?_0x33c4bc['options']['limit']||null:null,'include':_0x33c4bc[_0x69b9('0x1a')]?_0x33c4bc[_0x69b9('0x1a')][_0x69b9('0x1d')]?_['map'](_0x33c4bc[_0x69b9('0x1a')]['include'],function(_0x193bc1){return{'model':db[_0x193bc1['model']],'as':_0x193bc1['as'],'attributes':_0x193bc1[_0x69b9('0x1e')],'include':_0x193bc1['include']?_[_0x69b9('0x1f')](_0x193bc1[_0x69b9('0x1d')],function(_0x165b20){return{'model':db[_0x165b20[_0x69b9('0x20')]],'as':_0x165b20['as'],'attributes':_0x165b20[_0x69b9('0x1e')],'include':_0x165b20[_0x69b9('0x1d')]?_[_0x69b9('0x1f')](_0x165b20[_0x69b9('0x1d')],function(_0x4dfed8){return{'model':db[_0x4dfed8['model']],'as':_0x4dfed8['as'],'attributes':_0x4dfed8[_0x69b9('0x1e')]};}):[]};}):[]};}):[]:[]})['then'](function(_0x2aa762){logger[_0x69b9('0xd')](_0x69b9('0x17'),_0x33c4bc);logger[_0x69b9('0x10')](_0x69b9('0x17'),_0x33c4bc,JSON[_0x69b9('0x12')](_0x2aa762));_0x26334e(_0x2aa762);})[_0x69b9('0x16')](function(_0xf49a08){logger['error'](_0x69b9('0x17'),_0xf49a08['message'],_0x33c4bc);_0x1bd6c3(_0x4862e9['error'](0x1f4,_0xf49a08[_0x69b9('0x14')]));});});};exports[_0x69b9('0x21')]=function(_0xa02cc6){var _0x424536=this;return new Promise(function(_0x2ce23e,_0x24873){return db[_0x69b9('0x18')][_0x69b9('0x22')]({'raw':_0xa02cc6[_0x69b9('0x1a')]?_0xa02cc6[_0x69b9('0x1a')]['raw']===undefined?!![]:![]:!![],'where':_0xa02cc6[_0x69b9('0x1a')]?_0xa02cc6[_0x69b9('0x1a')][_0x69b9('0x1c')]||null:null,'attributes':_0xa02cc6[_0x69b9('0x1a')]?_0xa02cc6[_0x69b9('0x1a')][_0x69b9('0x1e')]||null:null,'include':_0xa02cc6[_0x69b9('0x1a')]?_0xa02cc6[_0x69b9('0x1a')]['include']?_[_0x69b9('0x1f')](_0xa02cc6[_0x69b9('0x1a')]['include'],function(_0x4368ed){return{'model':db[_0x4368ed[_0x69b9('0x20')]],'as':_0x4368ed['as'],'attributes':_0x4368ed[_0x69b9('0x1e')],'include':_0x4368ed[_0x69b9('0x1d')]?_[_0x69b9('0x1f')](_0x4368ed[_0x69b9('0x1d')],function(_0x1047cb){return{'model':db[_0x1047cb['model']],'as':_0x1047cb['as'],'attributes':_0x1047cb['attributes'],'include':_0x1047cb[_0x69b9('0x1d')]?_[_0x69b9('0x1f')](_0x1047cb[_0x69b9('0x1d')],function(_0xbbde68){return{'model':db[_0xbbde68[_0x69b9('0x20')]],'as':_0xbbde68['as'],'attributes':_0xbbde68['attributes']};}):[]};}):[]};}):[]:[]})[_0x69b9('0x23')](function(_0x3b6b49){logger[_0x69b9('0xd')](_0x69b9('0x21'),_0xa02cc6);logger[_0x69b9('0x10')](_0x69b9('0x21'),_0xa02cc6,JSON[_0x69b9('0x12')](_0x3b6b49));_0x2ce23e(_0x3b6b49);})[_0x69b9('0x16')](function(_0x289ccc){logger[_0x69b9('0x13')](_0x69b9('0x21'),_0x289ccc['message'],_0xa02cc6);_0x24873(_0x424536[_0x69b9('0x13')](0x1f4,_0x289ccc[_0x69b9('0x14')]));});});};exports[_0x69b9('0x24')]=function(_0x311437){var _0x1249c6=this;return new Promise(function(_0x279a90,_0x48d972){var _0xcd528d={'body':_0x311437[_0x69b9('0x25')],'channel':'mail'};var _0x5cf1a5=_[_0x69b9('0x26')](_[_0x69b9('0x27')](db[_0x69b9('0x28')][_0x69b9('0x29')]),[_0x69b9('0x2a'),_0x69b9('0x2b'),_0x69b9('0x2c'),_0x69b9('0x2d')]);var _0x28fa26=![];if(_0x311437[_0x69b9('0x25')]['id']){delete _0x311437[_0x69b9('0x25')]['id'];}if(_[_0x69b9('0x2e')](_0x311437[_0x69b9('0x25')]['from'])){return _0x48d972(_0x1249c6['error'](0x1f4,_0x69b9('0x2f')));}if(_[_0x69b9('0x2e')](_0x311437[_0x69b9('0x25')][_0x69b9('0x25')])||_0x311437['body'][_0x69b9('0x25')]===''){return _0x48d972(_0x1249c6[_0x69b9('0x13')](0x1f4,_0x69b9('0x30')));}if(_[_0x69b9('0x2e')](_0x311437['body'][_0x69b9('0x31')])){return _0x48d972(_0x1249c6[_0x69b9('0x13')](0x1f4,'mapKey\x20is\x20mandatory,\x20please\x20use\x20one\x20of\x20these:\x20'+_0x5cf1a5));}if(!_[_0x69b9('0x32')](_0x5cf1a5,_0x311437[_0x69b9('0x25')][_0x69b9('0x31')])){return _0x48d972(_0x1249c6[_0x69b9('0x13')](0x1f4,'mapKey\x20invalid,\x20please\x20use\x20one\x20of\x20these:\x20'+_0x5cf1a5));}var _0x27fcac={};_0x27fcac[_0x311437[_0x69b9('0x25')][_0x69b9('0x31')]]=_0x311437['body'][_0x69b9('0x33')];return db[_0x69b9('0x18')][_0x69b9('0x22')]({'where':{'id':_0x311437[_0x69b9('0x34')]['id']},'include':[{'model':db[_0x69b9('0x35')],'as':_0x69b9('0x36'),'include':[{'model':db[_0x69b9('0x28')],'as':_0x69b9('0x37'),'where':_0x27fcac,'limit':0x1,'order':[[_0x69b9('0x2b'),_0x69b9('0x38')]]}]},{'model':db[_0x69b9('0x39')],'as':'Applications'},{'model':db[_0x69b9('0x3a')],'as':_0x69b9('0x3b')}]})[_0x69b9('0x23')](function(_0x33af2a){if(_0x33af2a&&_0x33af2a['List']){var _0x203fed=_0x33af2a['get']({'plain':!![]});_0xcd528d[_0x69b9('0x34')]=_['omit'](_0x203fed,[_0x69b9('0x3c'),_0x69b9('0x36')]);_0xcd528d[_0x69b9('0x3d')]=_0x203fed[_0x69b9('0x3c')];_0xcd528d['list']=_0x203fed['List'];_0xcd528d[_0x69b9('0x3d')]=_[_0x69b9('0x3e')](_0xcd528d[_0x69b9('0x3d')],[_0x69b9('0x3f')],['asc']);if(_0xcd528d[_0x69b9('0x34')]&&_0xcd528d[_0x69b9('0x34')][_0x69b9('0x40')]){_0xcd528d['applications'][_0x69b9('0x41')]({'id':0x0,'priority':_0xcd528d[_0x69b9('0x3d')][_0x69b9('0x42')]+0x1,'app':_0x69b9('0x43'),'appdata':_0x69b9('0x40'),'interval':'*,*,*,*'});}if(_0xcd528d[_0x69b9('0x34')][_0x69b9('0x3c')]){delete _0xcd528d[_0x69b9('0x34')][_0x69b9('0x3c')];}if(_0xcd528d[_0x69b9('0x34')][_0x69b9('0x36')]){delete _0xcd528d[_0x69b9('0x34')][_0x69b9('0x36')];}if(_0x203fed[_0x69b9('0x36')]['Contacts'][_0x69b9('0x42')]){return _0x203fed[_0x69b9('0x36')]['Contacts'][0x0];}var _0x2ecd35=_['defaults'](_0x311437[_0x69b9('0x25')],{'firstName':_0x311437[_0x69b9('0x25')]['from'],'ListId':_0x203fed['ListId']});_0x2ecd35[_0x311437['body'][_0x69b9('0x31')]]=_0x311437[_0x69b9('0x25')][_0x69b9('0x33')];return db[_0x69b9('0x28')][_0x69b9('0x44')](_0x2ecd35);}else{throw new Error(_0x69b9('0x45'));}})['then'](function(_0x42e9c8){_0xcd528d[_0x69b9('0x46')]=_0x42e9c8;if(_0x42e9c8){if(!_0x311437[_0x69b9('0x25')][_0x69b9('0x14')][_0x69b9('0x47')]){_0x311437[_0x69b9('0x25')]['message']['messageId']=rs[_0x69b9('0x48')]()+'\x20'+_0x311437['body'][_0x69b9('0x14')][_0x69b9('0x33')];}var _0x576d1a={'ContactId':_0x42e9c8['id'],'MailAccountId':_0x311437[_0x69b9('0x34')]['id'],'inReplyTo':_0x311437[_0x69b9('0x25')][_0x69b9('0x14')][_0x69b9('0x47')],'to':_0x311437[_0x69b9('0x25')][_0x69b9('0x14')][_0x69b9('0x33')],'cc':_0x311437[_0x69b9('0x25')][_0x69b9('0x14')]['cc'],'subject':_0x311437[_0x69b9('0x25')][_0x69b9('0x14')][_0x69b9('0x49')],'attach':_0x311437[_0x69b9('0x25')][_0x69b9('0x14')][_0x69b9('0x4a')],'lastMsgAt':moment()[_0x69b9('0x4b')](_0x69b9('0x4c')),'lastMsgDirection':'in'};return db[_0x69b9('0x4d')][_0x69b9('0x22')]({'where':{'closed':![],'MailAccountId':_0x311437[_0x69b9('0x34')]['id']},'include':[{'model':db[_0x69b9('0x4e')],'as':_0x69b9('0x4f'),'attributes':[_0x69b9('0x47')],'where':{'messageId':_0x311437[_0x69b9('0x25')][_0x69b9('0x14')][_0x69b9('0x50')]}}]})[_0x69b9('0x23')](function(_0x2d588c){if(_0x2d588c){return[_0x2d588c,![]];}return db[_0x69b9('0x4d')][_0x69b9('0x44')](_0x576d1a)['then'](function(_0x5548f6){return[_0x5548f6,!![]];});});}else{throw new Error(_0x69b9('0x51'));}})[_0x69b9('0x52')](function(_0x30dca2,_0x3cb9ce){if(_0x30dca2){_0x28fa26=_0x3cb9ce;if(!_0x3cb9ce){return _0x30dca2[_0x69b9('0x53')]({'inReplyTo':_0x311437[_0x69b9('0x25')][_0x69b9('0x14')][_0x69b9('0x47')],'to':_0x311437[_0x69b9('0x25')][_0x69b9('0x14')]['from'],'cc':_0x311437[_0x69b9('0x25')][_0x69b9('0x14')]['cc'],'subject':_0x311437['body'][_0x69b9('0x14')][_0x69b9('0x49')],'attach':_0x30dca2[_0x69b9('0x4a')]?_0x30dca2[_0x69b9('0x4a')]:_0x311437['body'][_0x69b9('0x14')][_0x69b9('0x4a')],'substatus':null,'substatusAt':moment()['format']('YYYY-MM-DD\x20HH:mm:ss'),'lastMsgAt':moment()[_0x69b9('0x4b')]('YYYY-MM-DD\x20HH:mm:ss'),'lastMsgDirection':'in'});}else{return _0x30dca2;}}})[_0x69b9('0x23')](function(_0x4c2e5f){_0xcd528d['interaction']=_0x4c2e5f['get']({'plain':!![]});_0xcd528d[_0x69b9('0x54')][_0x69b9('0x55')]=_0x28fa26;return db['MailMessage'][_0x69b9('0x44')]({'body':_0x311437[_0x69b9('0x25')][_0x69b9('0x25')],'MailAccountId':_0x311437['account']['id'],'MailInteractionId':_0x4c2e5f['id'],'direction':'in','ContactId':_0xcd528d['contact']['id'],'messageId':_0x311437[_0x69b9('0x25')][_0x69b9('0x14')][_0x69b9('0x47')],'from':_0x311437[_0x69b9('0x25')][_0x69b9('0x14')]['from'],'to':_0x311437[_0x69b9('0x25')][_0x69b9('0x14')]['to'],'cc':_0x311437[_0x69b9('0x25')][_0x69b9('0x14')]['cc'],'subject':_0x311437[_0x69b9('0x25')]['message']['subject'],'attach':_0x311437['body']['message']['attach'],'Attachments':_0x311437[_0x69b9('0x25')][_0x69b9('0x14')][_0x69b9('0x56')],'originTo':_0x311437[_0x69b9('0x25')]['message'][_0x69b9('0x57')],'originCc':_0x311437[_0x69b9('0x25')][_0x69b9('0x14')]['originCc'],'bcc':_0x311437[_0x69b9('0x25')][_0x69b9('0x14')][_0x69b9('0x58')],'ChatWebsiteId':_0x311437[_0x69b9('0x25')][_0x69b9('0x14')][_0x69b9('0x59')]||null,'originChannel':_0x311437[_0x69b9('0x25')][_0x69b9('0x14')]['originChannel']||_0x69b9('0x5a'),'ChatOfflineMessageId':_0x311437['body'][_0x69b9('0x14')][_0x69b9('0x5b')]||null},{'include':[{'model':db[_0x69b9('0x5c')],'as':_0x69b9('0x5d')}]});})[_0x69b9('0x23')](function(_0x12621f){_0xcd528d[_0x69b9('0x14')]=_0x12621f;if(_0xcd528d[_0x69b9('0x54')][_0x69b9('0x5e')]){return db[_0x69b9('0x5f')][_0x69b9('0x22')]({'attributes':['id',_0x69b9('0x60')],'where':{'id':_0xcd528d[_0x69b9('0x54')]['UserId']}})[_0x69b9('0x23')](function(_0x3a33fe){if(_0x3a33fe){_0xcd528d[_0x69b9('0x3d')][_0x69b9('0x61')]({'id':0x0,'priority':0x0,'app':_0x69b9('0x62'),'appdata':_0x3a33fe['name']+','+(_0xcd528d[_0x69b9('0x34')][_0x69b9('0x63')]||0xa),'interval':'*,*,*,*'});}return respondWithRpcPromise('Start',_0x69b9('0x64'),_0xcd528d);});}return respondWithRpcPromise(_0x69b9('0x65'),'startRouting',_0xcd528d);})['then'](function(_0x3e3da4){_0x279a90(_0x3e3da4);})[_0x69b9('0x16')](function(_0x4e777){_0x48d972(_0x1249c6[_0x69b9('0x13')](0x1f4,_0x4e777[_0x69b9('0x14')]));});});};
\ No newline at end of file
+var _0xcef6=['where','attributes','limit','map','include','model','GetMailAccount','catch','ShowMailAccount','find','raw','NotifyMailAccount','body','difference','keys','CmContact','rawAttributes','createdAt','updatedAt','CompanyId','isNil','from','from\x20is\x20mandatory','body\x20is\x20mandatory\x20and\x20not\x20empty','mapKey','mapKey\x20invalid,\x20please\x20use\x20one\x20of\x20these:\x20','List','DESC','MailApplication','MailServerOut','get','account','Applications','applications','list','orderBy','priority','autoclose','push','length','close','*,*,*,*','Contacts','defaults','create','messageId','generate','subject','attach','format','MailInteraction','Messages','inReplyTo','Contact\x20not\x20found','spread','YYYY-MM-DD\x20HH:mm:ss','interaction','created','MailMessage','contact','originTo','originCc','bcc','ChatWebsiteId','Email','ChatOfflineMessageId','Attachment','Attachments','UserId','name','agent','waitForTheAssignedAgent','Start','startRouting','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','redis','localhost','socket.io-emitter','register','request','then','debug','MailAccount,\x20%s,\x20%s,\x20%s','request\x20sent','error','code','MailAccount,\x20%s,\x20%s','message','info','result','MailAccount','options'];(function(_0xcf5436,_0x4632c3){var _0xc4f5c8=function(_0x567528){while(--_0x567528){_0xcf5436['push'](_0xcf5436['shift']());}};_0xc4f5c8(++_0x4632c3);}(_0xcef6,0x116));var _0x6cef=function(_0x3e3064,_0x3dd6f5){_0x3e3064=_0x3e3064-0x0;var _0x4547e1=_0xcef6[_0x3e3064];return _0x4547e1;};'use strict';var _=require('lodash');var util=require('util');var moment=require(_0x6cef('0x0'));var BPromise=require(_0x6cef('0x1'));var rs=require(_0x6cef('0x2'));var fs=require('fs');var Redis=require(_0x6cef('0x3'));var db=require(_0x6cef('0x4'))['db'];var utils=require(_0x6cef('0x5'));var logger=require(_0x6cef('0x6'))(_0x6cef('0x7'));var config=require(_0x6cef('0x8'));var jayson=require(_0x6cef('0x9'));var client=jayson[_0x6cef('0xa')]['http']({'port':0x232c});config[_0x6cef('0xb')]=_['defaults'](config['redis'],{'host':_0x6cef('0xc'),'port':0x18eb});var socket=require(_0x6cef('0xd'))(new Redis(config[_0x6cef('0xb')]));require('./mailAccount.socket')[_0x6cef('0xe')](socket);function respondWithRpcPromise(_0x34812e,_0x3de115,_0x9d17d){return new BPromise(function(_0x4f110c,_0x195225){return client[_0x6cef('0xf')](_0x34812e,_0x9d17d)[_0x6cef('0x10')](function(_0x20b953){logger['info']('MailAccount,\x20%s,\x20%s',_0x3de115,'request\x20sent');logger[_0x6cef('0x11')](_0x6cef('0x12'),_0x3de115,_0x6cef('0x13'),JSON['stringify'](_0x20b953));if(_0x20b953[_0x6cef('0x14')]){if(_0x20b953[_0x6cef('0x14')][_0x6cef('0x15')]===0x1f4){logger['error'](_0x6cef('0x16'),_0x3de115,_0x20b953[_0x6cef('0x14')][_0x6cef('0x17')]);return _0x195225(_0x20b953[_0x6cef('0x14')][_0x6cef('0x17')]);}logger[_0x6cef('0x14')]('MailAccount,\x20%s,\x20%s',_0x3de115,_0x20b953['error'][_0x6cef('0x17')]);return _0x4f110c(_0x20b953[_0x6cef('0x14')][_0x6cef('0x17')]);}else{logger[_0x6cef('0x18')](_0x6cef('0x16'),_0x3de115,_0x6cef('0x13'));_0x4f110c(_0x20b953[_0x6cef('0x19')][_0x6cef('0x17')]);}})['catch'](function(_0x288cb6){logger[_0x6cef('0x14')](_0x6cef('0x16'),_0x3de115,_0x288cb6);_0x195225(_0x288cb6);});});}exports['GetMailAccount']=function(_0x3b6b04){var _0x267ca9=this;return new Promise(function(_0x78868a,_0x4e3cbc){return db[_0x6cef('0x1a')]['findAll']({'raw':_0x3b6b04[_0x6cef('0x1b')]?_0x3b6b04[_0x6cef('0x1b')]['raw']===undefined?!![]:![]:!![],'where':_0x3b6b04[_0x6cef('0x1b')]?_0x3b6b04['options'][_0x6cef('0x1c')]||null:null,'attributes':_0x3b6b04[_0x6cef('0x1b')]?_0x3b6b04[_0x6cef('0x1b')][_0x6cef('0x1d')]||null:null,'limit':_0x3b6b04[_0x6cef('0x1b')]?_0x3b6b04['options'][_0x6cef('0x1e')]||null:null,'include':_0x3b6b04['options']?_0x3b6b04['options']['include']?_[_0x6cef('0x1f')](_0x3b6b04[_0x6cef('0x1b')][_0x6cef('0x20')],function(_0x3e160b){return{'model':db[_0x3e160b['model']],'as':_0x3e160b['as'],'attributes':_0x3e160b['attributes'],'include':_0x3e160b['include']?_[_0x6cef('0x1f')](_0x3e160b[_0x6cef('0x20')],function(_0x5d31e6){return{'model':db[_0x5d31e6[_0x6cef('0x21')]],'as':_0x5d31e6['as'],'attributes':_0x5d31e6[_0x6cef('0x1d')],'include':_0x5d31e6[_0x6cef('0x20')]?_['map'](_0x5d31e6[_0x6cef('0x20')],function(_0x2552b4){return{'model':db[_0x2552b4[_0x6cef('0x21')]],'as':_0x2552b4['as'],'attributes':_0x2552b4[_0x6cef('0x1d')]};}):[]};}):[]};}):[]:[]})[_0x6cef('0x10')](function(_0x2f84d9){logger['info'](_0x6cef('0x22'),_0x3b6b04);logger[_0x6cef('0x11')](_0x6cef('0x22'),_0x3b6b04,JSON['stringify'](_0x2f84d9));_0x78868a(_0x2f84d9);})[_0x6cef('0x23')](function(_0x5819ff){logger[_0x6cef('0x14')](_0x6cef('0x22'),_0x5819ff[_0x6cef('0x17')],_0x3b6b04);_0x4e3cbc(_0x267ca9[_0x6cef('0x14')](0x1f4,_0x5819ff['message']));});});};exports[_0x6cef('0x24')]=function(_0x4b1335){var _0x5f3dd2=this;return new Promise(function(_0x10b3b0,_0x2a7568){return db[_0x6cef('0x1a')][_0x6cef('0x25')]({'raw':_0x4b1335[_0x6cef('0x1b')]?_0x4b1335[_0x6cef('0x1b')][_0x6cef('0x26')]===undefined?!![]:![]:!![],'where':_0x4b1335[_0x6cef('0x1b')]?_0x4b1335['options'][_0x6cef('0x1c')]||null:null,'attributes':_0x4b1335['options']?_0x4b1335[_0x6cef('0x1b')][_0x6cef('0x1d')]||null:null,'include':_0x4b1335[_0x6cef('0x1b')]?_0x4b1335[_0x6cef('0x1b')][_0x6cef('0x20')]?_[_0x6cef('0x1f')](_0x4b1335[_0x6cef('0x1b')][_0x6cef('0x20')],function(_0xdb97ef){return{'model':db[_0xdb97ef[_0x6cef('0x21')]],'as':_0xdb97ef['as'],'attributes':_0xdb97ef['attributes'],'include':_0xdb97ef[_0x6cef('0x20')]?_['map'](_0xdb97ef[_0x6cef('0x20')],function(_0x26e418){return{'model':db[_0x26e418[_0x6cef('0x21')]],'as':_0x26e418['as'],'attributes':_0x26e418[_0x6cef('0x1d')],'include':_0x26e418[_0x6cef('0x20')]?_[_0x6cef('0x1f')](_0x26e418[_0x6cef('0x20')],function(_0x2f7884){return{'model':db[_0x2f7884[_0x6cef('0x21')]],'as':_0x2f7884['as'],'attributes':_0x2f7884[_0x6cef('0x1d')]};}):[]};}):[]};}):[]:[]})[_0x6cef('0x10')](function(_0x3b333f){logger[_0x6cef('0x18')](_0x6cef('0x24'),_0x4b1335);logger[_0x6cef('0x11')]('ShowMailAccount',_0x4b1335,JSON['stringify'](_0x3b333f));_0x10b3b0(_0x3b333f);})[_0x6cef('0x23')](function(_0xeb2dca){logger[_0x6cef('0x14')](_0x6cef('0x24'),_0xeb2dca['message'],_0x4b1335);_0x2a7568(_0x5f3dd2[_0x6cef('0x14')](0x1f4,_0xeb2dca[_0x6cef('0x17')]));});});};exports[_0x6cef('0x27')]=function(_0x2cebc9){var _0x4100e8=this;return new Promise(function(_0x5222bd,_0x2bd018){var _0x2586fe={'body':_0x2cebc9[_0x6cef('0x28')],'channel':'mail'};var _0x4cf99a=_[_0x6cef('0x29')](_[_0x6cef('0x2a')](db[_0x6cef('0x2b')][_0x6cef('0x2c')]),[_0x6cef('0x2d'),_0x6cef('0x2e'),_0x6cef('0x2f'),'ListId']);var _0x181a1d=![];if(_0x2cebc9['body']['id']){delete _0x2cebc9['body']['id'];}if(_[_0x6cef('0x30')](_0x2cebc9[_0x6cef('0x28')][_0x6cef('0x31')])){return _0x2bd018(_0x4100e8[_0x6cef('0x14')](0x1f4,_0x6cef('0x32')));}if(_[_0x6cef('0x30')](_0x2cebc9[_0x6cef('0x28')][_0x6cef('0x28')])||_0x2cebc9[_0x6cef('0x28')][_0x6cef('0x28')]===''){return _0x2bd018(_0x4100e8[_0x6cef('0x14')](0x1f4,_0x6cef('0x33')));}if(_[_0x6cef('0x30')](_0x2cebc9[_0x6cef('0x28')][_0x6cef('0x34')])){return _0x2bd018(_0x4100e8['error'](0x1f4,'mapKey\x20is\x20mandatory,\x20please\x20use\x20one\x20of\x20these:\x20'+_0x4cf99a));}if(!_['includes'](_0x4cf99a,_0x2cebc9[_0x6cef('0x28')][_0x6cef('0x34')])){return _0x2bd018(_0x4100e8[_0x6cef('0x14')](0x1f4,_0x6cef('0x35')+_0x4cf99a));}var _0x348233={};_0x348233[_0x2cebc9['body'][_0x6cef('0x34')]]=_0x2cebc9[_0x6cef('0x28')][_0x6cef('0x31')];return db['MailAccount']['find']({'where':{'id':_0x2cebc9['account']['id']},'include':[{'model':db['CmList'],'as':_0x6cef('0x36'),'include':[{'model':db[_0x6cef('0x2b')],'as':'Contacts','where':_0x348233,'limit':0x1,'order':[[_0x6cef('0x2e'),_0x6cef('0x37')]]}]},{'model':db[_0x6cef('0x38')],'as':'Applications'},{'model':db[_0x6cef('0x39')],'as':'Smtp'}]})[_0x6cef('0x10')](function(_0x37c3d7){if(_0x37c3d7&&_0x37c3d7[_0x6cef('0x36')]){var _0x18f4a=_0x37c3d7[_0x6cef('0x3a')]({'plain':!![]});_0x2586fe[_0x6cef('0x3b')]=_['omit'](_0x18f4a,[_0x6cef('0x3c'),_0x6cef('0x36')]);_0x2586fe[_0x6cef('0x3d')]=_0x18f4a[_0x6cef('0x3c')];_0x2586fe[_0x6cef('0x3e')]=_0x18f4a[_0x6cef('0x36')];_0x2586fe[_0x6cef('0x3d')]=_[_0x6cef('0x3f')](_0x2586fe[_0x6cef('0x3d')],[_0x6cef('0x40')],['asc']);if(_0x2586fe[_0x6cef('0x3b')]&&_0x2586fe[_0x6cef('0x3b')][_0x6cef('0x41')]){_0x2586fe['applications'][_0x6cef('0x42')]({'id':0x0,'priority':_0x2586fe[_0x6cef('0x3d')][_0x6cef('0x43')]+0x1,'app':_0x6cef('0x44'),'appdata':_0x6cef('0x41'),'interval':_0x6cef('0x45')});}if(_0x2586fe['account']['Applications']){delete _0x2586fe['account'][_0x6cef('0x3c')];}if(_0x2586fe[_0x6cef('0x3b')][_0x6cef('0x36')]){delete _0x2586fe['account'][_0x6cef('0x36')];}if(_0x18f4a[_0x6cef('0x36')][_0x6cef('0x46')][_0x6cef('0x43')]){return _0x18f4a['List'][_0x6cef('0x46')][0x0];}var _0x37835e=_[_0x6cef('0x47')](_0x2cebc9['body'],{'firstName':_0x2cebc9['body']['from'],'ListId':_0x18f4a['ListId']});_0x37835e[_0x2cebc9[_0x6cef('0x28')][_0x6cef('0x34')]]=_0x2cebc9[_0x6cef('0x28')][_0x6cef('0x31')];return db[_0x6cef('0x2b')][_0x6cef('0x48')](_0x37835e);}else{throw new Error('List\x20not\x20found');}})[_0x6cef('0x10')](function(_0xb7802e){_0x2586fe['contact']=_0xb7802e;if(_0xb7802e){if(!_0x2cebc9['body'][_0x6cef('0x17')][_0x6cef('0x49')]){_0x2cebc9[_0x6cef('0x28')][_0x6cef('0x17')][_0x6cef('0x49')]=rs[_0x6cef('0x4a')]()+'\x20'+_0x2cebc9['body'][_0x6cef('0x17')][_0x6cef('0x31')];}var _0x5c6aae={'ContactId':_0xb7802e['id'],'MailAccountId':_0x2cebc9[_0x6cef('0x3b')]['id'],'inReplyTo':_0x2cebc9[_0x6cef('0x28')][_0x6cef('0x17')][_0x6cef('0x49')],'to':_0x2cebc9[_0x6cef('0x28')][_0x6cef('0x17')][_0x6cef('0x31')],'cc':_0x2cebc9['body'][_0x6cef('0x17')]['cc'],'subject':_0x2cebc9[_0x6cef('0x28')][_0x6cef('0x17')][_0x6cef('0x4b')],'attach':_0x2cebc9[_0x6cef('0x28')]['message'][_0x6cef('0x4c')],'lastMsgAt':moment()[_0x6cef('0x4d')]('YYYY-MM-DD\x20HH:mm:ss'),'lastMsgDirection':'in'};return db[_0x6cef('0x4e')][_0x6cef('0x25')]({'where':{'closed':![],'MailAccountId':_0x2cebc9[_0x6cef('0x3b')]['id']},'include':[{'model':db['MailMessage'],'as':_0x6cef('0x4f'),'attributes':['messageId'],'where':{'messageId':_0x2cebc9[_0x6cef('0x28')]['message'][_0x6cef('0x50')]}}]})[_0x6cef('0x10')](function(_0x5494ed){if(_0x5494ed){return[_0x5494ed,![]];}return db['MailInteraction'][_0x6cef('0x48')](_0x5c6aae)['then'](function(_0x12e5ea){return[_0x12e5ea,!![]];});});}else{throw new Error(_0x6cef('0x51'));}})[_0x6cef('0x52')](function(_0x511cfe,_0x39b411){if(_0x511cfe){_0x181a1d=_0x39b411;if(!_0x39b411){return _0x511cfe['update']({'inReplyTo':_0x2cebc9[_0x6cef('0x28')][_0x6cef('0x17')][_0x6cef('0x49')],'to':_0x2cebc9[_0x6cef('0x28')][_0x6cef('0x17')][_0x6cef('0x31')],'cc':_0x2cebc9[_0x6cef('0x28')][_0x6cef('0x17')]['cc'],'subject':_0x2cebc9[_0x6cef('0x28')][_0x6cef('0x17')][_0x6cef('0x4b')],'attach':_0x511cfe['attach']?_0x511cfe[_0x6cef('0x4c')]:_0x2cebc9[_0x6cef('0x28')]['message'][_0x6cef('0x4c')],'substatus':null,'substatusAt':moment()[_0x6cef('0x4d')]('YYYY-MM-DD\x20HH:mm:ss'),'lastMsgAt':moment()[_0x6cef('0x4d')](_0x6cef('0x53')),'lastMsgDirection':'in'});}else{return _0x511cfe;}}})[_0x6cef('0x10')](function(_0x13152c){_0x2586fe[_0x6cef('0x54')]=_0x13152c[_0x6cef('0x3a')]({'plain':!![]});_0x2586fe[_0x6cef('0x54')][_0x6cef('0x55')]=_0x181a1d;return db[_0x6cef('0x56')]['create']({'body':_0x2cebc9[_0x6cef('0x28')][_0x6cef('0x28')],'MailAccountId':_0x2cebc9[_0x6cef('0x3b')]['id'],'MailInteractionId':_0x13152c['id'],'direction':'in','ContactId':_0x2586fe[_0x6cef('0x57')]['id'],'messageId':_0x2cebc9[_0x6cef('0x28')]['message'][_0x6cef('0x49')],'from':_0x2cebc9[_0x6cef('0x28')]['message'][_0x6cef('0x31')],'to':_0x2cebc9[_0x6cef('0x28')][_0x6cef('0x17')]['to'],'cc':_0x2cebc9[_0x6cef('0x28')]['message']['cc'],'subject':_0x2cebc9['body'][_0x6cef('0x17')][_0x6cef('0x4b')],'attach':_0x2cebc9[_0x6cef('0x28')][_0x6cef('0x17')][_0x6cef('0x4c')],'Attachments':_0x2cebc9[_0x6cef('0x28')][_0x6cef('0x17')]['attachments'],'originTo':_0x2cebc9[_0x6cef('0x28')][_0x6cef('0x17')][_0x6cef('0x58')],'originCc':_0x2cebc9[_0x6cef('0x28')][_0x6cef('0x17')][_0x6cef('0x59')],'bcc':_0x2cebc9[_0x6cef('0x28')][_0x6cef('0x17')][_0x6cef('0x5a')],'ChatWebsiteId':_0x2cebc9[_0x6cef('0x28')][_0x6cef('0x17')][_0x6cef('0x5b')]||null,'originChannel':_0x2cebc9['body']['message']['originChannel']||_0x6cef('0x5c'),'ChatOfflineMessageId':_0x2cebc9[_0x6cef('0x28')][_0x6cef('0x17')][_0x6cef('0x5d')]||null},{'include':[{'model':db[_0x6cef('0x5e')],'as':_0x6cef('0x5f')}]});})[_0x6cef('0x10')](function(_0x38f664){_0x2586fe[_0x6cef('0x17')]=_0x38f664;if(_0x2586fe[_0x6cef('0x54')][_0x6cef('0x60')]){return db['User']['find']({'attributes':['id',_0x6cef('0x61')],'where':{'id':_0x2586fe[_0x6cef('0x54')][_0x6cef('0x60')]}})['then'](function(_0x227264){if(_0x227264){_0x2586fe[_0x6cef('0x3d')]['unshift']({'id':0x0,'priority':0x0,'app':_0x6cef('0x62'),'appdata':_0x227264[_0x6cef('0x61')]+','+(_0x2586fe[_0x6cef('0x3b')][_0x6cef('0x63')]||0xa),'interval':'*,*,*,*'});}return respondWithRpcPromise(_0x6cef('0x64'),_0x6cef('0x65'),_0x2586fe);});}return respondWithRpcPromise(_0x6cef('0x64'),'startRouting',_0x2586fe);})[_0x6cef('0x10')](function(_0x16d552){_0x5222bd(_0x16d552);})[_0x6cef('0x23')](function(_0x5c2337){_0x2bd018(_0x4100e8[_0x6cef('0x14')](0x1f4,_0x5c2337[_0x6cef('0x17')]));});});};
\ No newline at end of file
index 74a8001..c6671c2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x26b2=['mailAccount:','./mailAccount.events','save','remove','emit','removeListener','register'];(function(_0x5999ee,_0x13337b){var _0x2638d2=function(_0x3d1fd8){while(--_0x3d1fd8){_0x5999ee['push'](_0x5999ee['shift']());}};_0x2638d2(++_0x13337b);}(_0x26b2,0xc5));var _0x226b=function(_0xba94cd,_0x473e97){_0xba94cd=_0xba94cd-0x0;var _0x3c3a8c=_0x26b2[_0xba94cd];return _0x3c3a8c;};'use strict';var MailAccountEvents=require(_0x226b('0x0'));var events=[_0x226b('0x1'),_0x226b('0x2'),'update'];function createListener(_0x1c868f,_0x2e2ce9){return function(_0x26e06e){_0x2e2ce9[_0x226b('0x3')](_0x1c868f,_0x26e06e);};}function removeListener(_0xf9ba41,_0xbd5e13){return function(){MailAccountEvents[_0x226b('0x4')](_0xf9ba41,_0xbd5e13);};}exports[_0x226b('0x5')]=function(_0x36bf2b){for(var _0x4a9348=0x0,_0x7997dc=events['length'];_0x4a9348<_0x7997dc;_0x4a9348++){var _0x15b465=events[_0x4a9348];var _0x28d0f8=createListener(_0x226b('0x6')+_0x15b465,_0x36bf2b);MailAccountEvents['on'](_0x15b465,_0x28d0f8);}};
\ No newline at end of file
+var _0x38d1=['length','mailAccount:','./mailAccount.events','save','remove','update'];(function(_0x3eec6e,_0x2b2f56){var _0x4b4b28=function(_0x6055d1){while(--_0x6055d1){_0x3eec6e['push'](_0x3eec6e['shift']());}};_0x4b4b28(++_0x2b2f56);}(_0x38d1,0xf2));var _0x138d=function(_0x42494c,_0x1b2e83){_0x42494c=_0x42494c-0x0;var _0x2a6a9c=_0x38d1[_0x42494c];return _0x2a6a9c;};'use strict';var MailAccountEvents=require(_0x138d('0x0'));var events=[_0x138d('0x1'),_0x138d('0x2'),_0x138d('0x3')];function createListener(_0x501cbd,_0x38ebf2){return function(_0x9caebb){_0x38ebf2['emit'](_0x501cbd,_0x9caebb);};}function removeListener(_0x343281,_0x538364){return function(){MailAccountEvents['removeListener'](_0x343281,_0x538364);};}exports['register']=function(_0x4af869){for(var _0x2d1942=0x0,_0x1008ee=events[_0x138d('0x4')];_0x2d1942<_0x1008ee;_0x2d1942++){var _0xda5e7b=events[_0x2d1942];var _0x249cad=createListener(_0x138d('0x5')+_0xda5e7b,_0x4af869);MailAccountEvents['on'](_0xda5e7b,_0x249cad);}};
\ No newline at end of file
index 65df873..dc21d1d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb6ff=['update','delete','destroy','exports','multer','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../config/environment','./mailApplication.controller','get','/:id','isAuthenticated','put'];(function(_0xc2e61d,_0x302138){var _0x165db2=function(_0x3a4f81){while(--_0x3a4f81){_0xc2e61d['push'](_0xc2e61d['shift']());}};_0x165db2(++_0x302138);}(_0xb6ff,0xa6));var _0xfb6f=function(_0x4b1665,_0xb0c095){_0x4b1665=_0x4b1665-0x0;var _0x5850c0=_0xb6ff[_0x4b1665];return _0x5850c0;};'use strict';var multer=require(_0xfb6f('0x0'));var util=require(_0xfb6f('0x1'));var path=require(_0xfb6f('0x2'));var timeout=require(_0xfb6f('0x3'));var express=require(_0xfb6f('0x4'));var router=express[_0xfb6f('0x5')]();var fs_extra=require(_0xfb6f('0x6'));var auth=require(_0xfb6f('0x7'));var interaction=require('../../components/interaction/service');var config=require(_0xfb6f('0x8'));var controller=require(_0xfb6f('0x9'));router[_0xfb6f('0xa')](_0xfb6f('0xb'),auth[_0xfb6f('0xc')](),controller['show']);router[_0xfb6f('0xd')]('/:id',auth['isAuthenticated'](),controller[_0xfb6f('0xe')]);router[_0xfb6f('0xf')](_0xfb6f('0xb'),auth[_0xfb6f('0xc')](),controller[_0xfb6f('0x10')]);module[_0xfb6f('0x11')]=router;
\ No newline at end of file
+var _0xabdc=['path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./mailApplication.controller','/:id','isAuthenticated','show','put','update','destroy','exports','util'];(function(_0x42509b,_0x5e36e5){var _0x549670=function(_0x199458){while(--_0x199458){_0x42509b['push'](_0x42509b['shift']());}};_0x549670(++_0x5e36e5);}(_0xabdc,0x1db));var _0xcabd=function(_0x453dad,_0x375ca9){_0x453dad=_0x453dad-0x0;var _0x57197b=_0xabdc[_0x453dad];return _0x57197b;};'use strict';var multer=require('multer');var util=require(_0xcabd('0x0'));var path=require(_0xcabd('0x1'));var timeout=require(_0xcabd('0x2'));var express=require(_0xcabd('0x3'));var router=express[_0xcabd('0x4')]();var fs_extra=require(_0xcabd('0x5'));var auth=require(_0xcabd('0x6'));var interaction=require(_0xcabd('0x7'));var config=require(_0xcabd('0x8'));var controller=require(_0xcabd('0x9'));router['get'](_0xcabd('0xa'),auth[_0xcabd('0xb')](),controller[_0xcabd('0xc')]);router[_0xcabd('0xd')](_0xcabd('0xa'),auth['isAuthenticated'](),controller[_0xcabd('0xe')]);router['delete'](_0xcabd('0xa'),auth[_0xcabd('0xb')](),controller[_0xcabd('0xf')]);module[_0xcabd('0x10')]=router;
\ No newline at end of file
index 01a6e25..f7f001f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2def=['sequelize','exports','INTEGER','STRING','noop','TEXT','*,*,*,*'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x2def,0xaf));var _0xf2de=function(_0x2dafbe,_0x5d04de){_0x2dafbe=_0x2dafbe-0x0;var _0x58a45a=_0x2def[_0x2dafbe];return _0x58a45a;};'use strict';var Sequelize=require(_0xf2de('0x0'));module[_0xf2de('0x1')]={'priority':{'type':Sequelize[_0xf2de('0x2')],'allowNull':![]},'app':{'type':Sequelize[_0xf2de('0x3')],'allowNull':![],'defaultValue':_0xf2de('0x4')},'appdata':{'type':Sequelize[_0xf2de('0x5')]()},'description':{'type':Sequelize['STRING']},'interval':{'type':Sequelize[_0xf2de('0x3')],'defaultValue':_0xf2de('0x6')}};
\ No newline at end of file
+var _0x63c5=['noop','TEXT','STRING','*,*,*,*','sequelize','INTEGER'];(function(_0xc1a7d3,_0x6ac180){var _0x576e8d=function(_0x46d9cb){while(--_0x46d9cb){_0xc1a7d3['push'](_0xc1a7d3['shift']());}};_0x576e8d(++_0x6ac180);}(_0x63c5,0x8e));var _0x563c=function(_0x15bc81,_0x4d4f77){_0x15bc81=_0x15bc81-0x0;var _0x59440e=_0x63c5[_0x15bc81];return _0x59440e;};'use strict';var Sequelize=require(_0x563c('0x0'));module['exports']={'priority':{'type':Sequelize[_0x563c('0x1')],'allowNull':![]},'app':{'type':Sequelize['STRING'],'allowNull':![],'defaultValue':_0x563c('0x2')},'appdata':{'type':Sequelize[_0x563c('0x3')]()},'description':{'type':Sequelize['STRING']},'interval':{'type':Sequelize[_0x563c('0x4')],'defaultValue':_0x563c('0x5')}};
\ No newline at end of file
index 416a9b1..ffa4bdd 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xaa88=['limit','count','set','apply','reject','then','stack','name','send','params','model','keys','MailApplication','query','filters','intersection','attributes','fields','length','include','merge','options','find','update','body','catch','eml-format','rimraf','zip-dir','fast-json-patch','moment','bluebird','mustache','util','path','sox','fs-extra','squel','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','../../config/utils','../../config/environment','../../mysqldb','sendStatus','status','end','json','offset','undefined'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0xaa88,0x137));var _0x8aa8=function(_0x1fc122,_0x5e2c17){_0x1fc122=_0x1fc122-0x0;var _0xa2cb13=_0xaa88[_0x1fc122];return _0xa2cb13;};'use strict';var emlformat=require(_0x8aa8('0x0'));var rimraf=require(_0x8aa8('0x1'));var zipdir=require(_0x8aa8('0x2'));var jsonpatch=require(_0x8aa8('0x3'));var rp=require('request-promise');var moment=require(_0x8aa8('0x4'));var BPromise=require(_0x8aa8('0x5'));var Mustache=require(_0x8aa8('0x6'));var util=require(_0x8aa8('0x7'));var path=require(_0x8aa8('0x8'));var sox=require(_0x8aa8('0x9'));var csv=require('to-csv');var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x8aa8('0xa'));var _=require('lodash');var squel=require(_0x8aa8('0xb'));var crypto=require(_0x8aa8('0xc'));var jsforce=require(_0x8aa8('0xd'));var deskjs=require(_0x8aa8('0xe'));var toCsv=require('to-csv');var querystring=require(_0x8aa8('0xf'));var Papa=require(_0x8aa8('0x10'));var Redis=require(_0x8aa8('0x11'));var authService=require('../../components/auth/service');var qs=require(_0x8aa8('0x12'));var as=require(_0x8aa8('0x13'));var hardwareService=require(_0x8aa8('0x14'));var logger=require(_0x8aa8('0x15'))('api');var utils=require(_0x8aa8('0x16'));var config=require(_0x8aa8('0x17'));var licenseUtil=require('../../config/license/util');var db=require(_0x8aa8('0x18'))['db'];function respondWithStatusCode(_0xa691d6,_0x28132f){_0x28132f=_0x28132f||0xcc;return function(_0x535aa0){if(_0x535aa0){return _0xa691d6[_0x8aa8('0x19')](_0x28132f);}return _0xa691d6[_0x8aa8('0x1a')](_0x28132f)[_0x8aa8('0x1b')]();};}function respondWithResult(_0x4b686e,_0x391642){_0x391642=_0x391642||0xc8;return function(_0x4af534){if(_0x4af534){return _0x4b686e['status'](_0x391642)[_0x8aa8('0x1c')](_0x4af534);}};}function respondWithFilteredResult(_0x200662,_0xae81a0){return function(_0xa6c2af){if(_0xa6c2af){var _0x42a6a4=typeof _0xae81a0[_0x8aa8('0x1d')]===_0x8aa8('0x1e')&&typeof _0xae81a0[_0x8aa8('0x1f')]===_0x8aa8('0x1e');var _0x4e8ce3=_0xa6c2af['count'];var _0x2c1b9a=_0x42a6a4?0x0:_0xae81a0['offset'];var _0x557adc=_0x42a6a4?_0xa6c2af[_0x8aa8('0x20')]:_0xae81a0['offset']+_0xae81a0[_0x8aa8('0x1f')];var _0x41092b;if(_0x557adc>=_0x4e8ce3){_0x557adc=_0x4e8ce3;_0x41092b=0xc8;}else{_0x41092b=0xce;}_0x200662[_0x8aa8('0x1a')](_0x41092b);return _0x200662[_0x8aa8('0x21')]('Content-Range',_0x2c1b9a+'-'+_0x557adc+'/'+_0x4e8ce3)[_0x8aa8('0x1c')](_0xa6c2af);}return null;};}function patchUpdates(_0x36c445){return function(_0x2825fd){try{jsonpatch[_0x8aa8('0x22')](_0x2825fd,_0x36c445,!![]);}catch(_0x4c754e){return BPromise[_0x8aa8('0x23')](_0x4c754e);}return _0x2825fd['save']();};}function saveUpdates(_0x26cf63,_0x4cc455){return function(_0x1fdadd){if(_0x1fdadd){return _0x1fdadd['update'](_0x26cf63)[_0x8aa8('0x24')](function(_0x557e4e){return _0x557e4e;});}return null;};}function removeEntity(_0x65945b,_0x40adb5){return function(_0x3ca7dc){if(_0x3ca7dc){return _0x3ca7dc['destroy']()[_0x8aa8('0x24')](function(){_0x65945b[_0x8aa8('0x1a')](0xcc)[_0x8aa8('0x1b')]();});}};}function handleEntityNotFound(_0x547a7b,_0x57acd2){return function(_0x2d1508){if(!_0x2d1508){_0x547a7b[_0x8aa8('0x19')](0x194);}return _0x2d1508;};}function handleError(_0x2f91f3,_0x3a3c7a){_0x3a3c7a=_0x3a3c7a||0x1f4;return function(_0x24143e){logger['error'](_0x24143e[_0x8aa8('0x25')]);if(_0x24143e['name']){delete _0x24143e[_0x8aa8('0x26')];}_0x2f91f3[_0x8aa8('0x1a')](_0x3a3c7a)[_0x8aa8('0x27')](_0x24143e);};}exports['show']=function(_0x4c5c5c,_0x10810d){var _0x5e96c9={'raw':!![],'where':{'id':_0x4c5c5c[_0x8aa8('0x28')]['id']}},_0x385208={};_0x385208[_0x8aa8('0x29')]=_[_0x8aa8('0x2a')](db[_0x8aa8('0x2b')]['rawAttributes']);_0x385208[_0x8aa8('0x2c')]=_[_0x8aa8('0x2a')](_0x4c5c5c['query']);_0x385208[_0x8aa8('0x2d')]=_[_0x8aa8('0x2e')](_0x385208[_0x8aa8('0x29')],_0x385208['query']);_0x5e96c9[_0x8aa8('0x2f')]=_[_0x8aa8('0x2e')](_0x385208[_0x8aa8('0x29')],qs[_0x8aa8('0x30')](_0x4c5c5c[_0x8aa8('0x2c')][_0x8aa8('0x30')]));_0x5e96c9[_0x8aa8('0x2f')]=_0x5e96c9[_0x8aa8('0x2f')][_0x8aa8('0x31')]?_0x5e96c9[_0x8aa8('0x2f')]:_0x385208[_0x8aa8('0x29')];if(_0x4c5c5c['query']['includeAll']){_0x5e96c9[_0x8aa8('0x32')]=[{'all':!![]}];}_0x5e96c9=_[_0x8aa8('0x33')]({},_0x5e96c9,_0x4c5c5c[_0x8aa8('0x34')]);return db[_0x8aa8('0x2b')][_0x8aa8('0x35')](_0x5e96c9)[_0x8aa8('0x24')](handleEntityNotFound(_0x10810d,null))['then'](respondWithResult(_0x10810d,null))['catch'](handleError(_0x10810d,null));};exports[_0x8aa8('0x36')]=function(_0x5755b5,_0x24997c){if(_0x5755b5[_0x8aa8('0x37')]['id']){delete _0x5755b5[_0x8aa8('0x37')]['id'];}return db['MailApplication'][_0x8aa8('0x35')]({'where':{'id':_0x5755b5[_0x8aa8('0x28')]['id']}})[_0x8aa8('0x24')](handleEntityNotFound(_0x24997c,null))['then'](saveUpdates(_0x5755b5['body'],null))[_0x8aa8('0x24')](respondWithResult(_0x24997c,null))[_0x8aa8('0x38')](handleError(_0x24997c,null));};exports['destroy']=function(_0x24eb18,_0x2e1f52){return db['MailApplication'][_0x8aa8('0x35')]({'where':{'id':_0x24eb18['params']['id']}})['then'](handleEntityNotFound(_0x2e1f52,null))[_0x8aa8('0x24')](removeEntity(_0x2e1f52,null))['catch'](handleError(_0x2e1f52,null));};
\ No newline at end of file
+var _0xd8b0=['attributes','length','include','merge','find','catch','body','params','eml-format','rimraf','moment','bluebird','mustache','util','path','ejs','fs-extra','lodash','crypto','jsforce','to-csv','querystring','papaparse','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','count','set','Content-Range','apply','save','update','then','destroy','error','name','show','model','MailApplication','query','keys','intersection','fields'];(function(_0x268916,_0x1c27e1){var _0x38f8a4=function(_0x5e9ea6){while(--_0x5e9ea6){_0x268916['push'](_0x268916['shift']());}};_0x38f8a4(++_0x1c27e1);}(_0xd8b0,0xad));var _0x0d8b=function(_0x122ef9,_0x451d2a){_0x122ef9=_0x122ef9-0x0;var _0x42fba0=_0xd8b0[_0x122ef9];return _0x42fba0;};'use strict';var emlformat=require(_0x0d8b('0x0'));var rimraf=require(_0x0d8b('0x1'));var zipdir=require('zip-dir');var jsonpatch=require('fast-json-patch');var rp=require('request-promise');var moment=require(_0x0d8b('0x2'));var BPromise=require(_0x0d8b('0x3'));var Mustache=require(_0x0d8b('0x4'));var util=require(_0x0d8b('0x5'));var path=require(_0x0d8b('0x6'));var sox=require('sox');var csv=require('to-csv');var ejs=require(_0x0d8b('0x7'));var fs=require('fs');var fs_extra=require(_0x0d8b('0x8'));var _=require(_0x0d8b('0x9'));var squel=require('squel');var crypto=require(_0x0d8b('0xa'));var jsforce=require(_0x0d8b('0xb'));var deskjs=require('desk.js');var toCsv=require(_0x0d8b('0xc'));var querystring=require(_0x0d8b('0xd'));var Papa=require(_0x0d8b('0xe'));var Redis=require(_0x0d8b('0xf'));var authService=require(_0x0d8b('0x10'));var qs=require(_0x0d8b('0x11'));var as=require(_0x0d8b('0x12'));var hardwareService=require(_0x0d8b('0x13'));var logger=require('../../config/logger')(_0x0d8b('0x14'));var utils=require('../../config/utils');var config=require(_0x0d8b('0x15'));var licenseUtil=require(_0x0d8b('0x16'));var db=require(_0x0d8b('0x17'))['db'];function respondWithStatusCode(_0x92cdd8,_0x35a07b){_0x35a07b=_0x35a07b||0xcc;return function(_0x32bb1a){if(_0x32bb1a){return _0x92cdd8[_0x0d8b('0x18')](_0x35a07b);}return _0x92cdd8[_0x0d8b('0x19')](_0x35a07b)[_0x0d8b('0x1a')]();};}function respondWithResult(_0x2ce75e,_0x5ad086){_0x5ad086=_0x5ad086||0xc8;return function(_0xe65334){if(_0xe65334){return _0x2ce75e[_0x0d8b('0x19')](_0x5ad086)[_0x0d8b('0x1b')](_0xe65334);}};}function respondWithFilteredResult(_0x4f6f21,_0x23eb7b){return function(_0xa86349){if(_0xa86349){var _0x17f7df=typeof _0x23eb7b[_0x0d8b('0x1c')]===_0x0d8b('0x1d')&&typeof _0x23eb7b['limit']===_0x0d8b('0x1d');var _0x4586c2=_0xa86349[_0x0d8b('0x1e')];var _0x5fecbd=_0x17f7df?0x0:_0x23eb7b[_0x0d8b('0x1c')];var _0x18dd2d=_0x17f7df?_0xa86349[_0x0d8b('0x1e')]:_0x23eb7b[_0x0d8b('0x1c')]+_0x23eb7b['limit'];var _0x27512e;if(_0x18dd2d>=_0x4586c2){_0x18dd2d=_0x4586c2;_0x27512e=0xc8;}else{_0x27512e=0xce;}_0x4f6f21[_0x0d8b('0x19')](_0x27512e);return _0x4f6f21[_0x0d8b('0x1f')](_0x0d8b('0x20'),_0x5fecbd+'-'+_0x18dd2d+'/'+_0x4586c2)[_0x0d8b('0x1b')](_0xa86349);}return null;};}function patchUpdates(_0x5b709c){return function(_0x393beb){try{jsonpatch[_0x0d8b('0x21')](_0x393beb,_0x5b709c,!![]);}catch(_0x50ec1e){return BPromise['reject'](_0x50ec1e);}return _0x393beb[_0x0d8b('0x22')]();};}function saveUpdates(_0x54a9a7,_0x56c729){return function(_0x5527d8){if(_0x5527d8){return _0x5527d8[_0x0d8b('0x23')](_0x54a9a7)[_0x0d8b('0x24')](function(_0x214778){return _0x214778;});}return null;};}function removeEntity(_0x38efc8,_0x221071){return function(_0x2c64e2){if(_0x2c64e2){return _0x2c64e2[_0x0d8b('0x25')]()[_0x0d8b('0x24')](function(){_0x38efc8[_0x0d8b('0x19')](0xcc)['end']();});}};}function handleEntityNotFound(_0xe8bbee,_0x4463ee){return function(_0x5363e3){if(!_0x5363e3){_0xe8bbee[_0x0d8b('0x18')](0x194);}return _0x5363e3;};}function handleError(_0x4a0ae4,_0x3dd149){_0x3dd149=_0x3dd149||0x1f4;return function(_0x234bdd){logger[_0x0d8b('0x26')](_0x234bdd['stack']);if(_0x234bdd['name']){delete _0x234bdd[_0x0d8b('0x27')];}_0x4a0ae4[_0x0d8b('0x19')](_0x3dd149)['send'](_0x234bdd);};}exports[_0x0d8b('0x28')]=function(_0x59aa83,_0x1b2b59){var _0x4b59e5={'raw':!![],'where':{'id':_0x59aa83['params']['id']}},_0x97050a={};_0x97050a[_0x0d8b('0x29')]=_['keys'](db[_0x0d8b('0x2a')]['rawAttributes']);_0x97050a[_0x0d8b('0x2b')]=_[_0x0d8b('0x2c')](_0x59aa83[_0x0d8b('0x2b')]);_0x97050a['filters']=_['intersection'](_0x97050a['model'],_0x97050a[_0x0d8b('0x2b')]);_0x4b59e5['attributes']=_[_0x0d8b('0x2d')](_0x97050a['model'],qs['fields'](_0x59aa83[_0x0d8b('0x2b')][_0x0d8b('0x2e')]));_0x4b59e5[_0x0d8b('0x2f')]=_0x4b59e5[_0x0d8b('0x2f')][_0x0d8b('0x30')]?_0x4b59e5[_0x0d8b('0x2f')]:_0x97050a[_0x0d8b('0x29')];if(_0x59aa83[_0x0d8b('0x2b')]['includeAll']){_0x4b59e5[_0x0d8b('0x31')]=[{'all':!![]}];}_0x4b59e5=_[_0x0d8b('0x32')]({},_0x4b59e5,_0x59aa83['options']);return db[_0x0d8b('0x2a')][_0x0d8b('0x33')](_0x4b59e5)[_0x0d8b('0x24')](handleEntityNotFound(_0x1b2b59,null))['then'](respondWithResult(_0x1b2b59,null))[_0x0d8b('0x34')](handleError(_0x1b2b59,null));};exports[_0x0d8b('0x23')]=function(_0x206157,_0x31ceba){if(_0x206157[_0x0d8b('0x35')]['id']){delete _0x206157['body']['id'];}return db[_0x0d8b('0x2a')][_0x0d8b('0x33')]({'where':{'id':_0x206157['params']['id']}})[_0x0d8b('0x24')](handleEntityNotFound(_0x31ceba,null))[_0x0d8b('0x24')](saveUpdates(_0x206157[_0x0d8b('0x35')],null))[_0x0d8b('0x24')](respondWithResult(_0x31ceba,null))[_0x0d8b('0x34')](handleError(_0x31ceba,null));};exports['destroy']=function(_0x497a71,_0x41b4f9){return db['MailApplication']['find']({'where':{'id':_0x497a71[_0x0d8b('0x36')]['id']}})[_0x0d8b('0x24')](handleEntityNotFound(_0x41b4f9,null))[_0x0d8b('0x24')](removeEntity(_0x41b4f9,null))[_0x0d8b('0x34')](handleError(_0x41b4f9,null));};
\ No newline at end of file
index 5224c96..b17dcb6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9fb8=['utf8mb4','utf8mb4_unicode_ci','lodash','../../config/logger','api','moment','bluebird','request-promise','path','rimraf','../../config/environment','./mailApplication.attributes','define','mail_applications'];(function(_0x4b80e7,_0x41679c){var _0x320361=function(_0x3d8f2d){while(--_0x3d8f2d){_0x4b80e7['push'](_0x4b80e7['shift']());}};_0x320361(++_0x41679c);}(_0x9fb8,0x80));var _0x89fb=function(_0x2a3ca4,_0x39a7e8){_0x2a3ca4=_0x2a3ca4-0x0;var _0x374c52=_0x9fb8[_0x2a3ca4];return _0x374c52;};'use strict';var _=require(_0x89fb('0x0'));var util=require('util');var logger=require(_0x89fb('0x1'))(_0x89fb('0x2'));var moment=require(_0x89fb('0x3'));var BPromise=require(_0x89fb('0x4'));var rp=require(_0x89fb('0x5'));var fs=require('fs');var path=require(_0x89fb('0x6'));var rimraf=require(_0x89fb('0x7'));var config=require(_0x89fb('0x8'));var attributes=require(_0x89fb('0x9'));module['exports']=function(_0x32340b,_0x5cf993){return _0x32340b[_0x89fb('0xa')]('MailApplication',attributes,{'tableName':_0x89fb('0xb'),'paranoid':![],'indexes':[],'timestamps':!![],'charset':_0x89fb('0xc'),'collate':_0x89fb('0xd')});};
\ No newline at end of file
+var _0x1e14=['request-promise','path','rimraf','../../config/environment','exports','define','MailApplication','mail_applications','lodash','util','api','moment','bluebird'];(function(_0x2dff24,_0x2c18ef){var _0x597ec0=function(_0x482c63){while(--_0x482c63){_0x2dff24['push'](_0x2dff24['shift']());}};_0x597ec0(++_0x2c18ef);}(_0x1e14,0x14d));var _0x41e1=function(_0x19d11d,_0x8fa4ab){_0x19d11d=_0x19d11d-0x0;var _0x4806a7=_0x1e14[_0x19d11d];return _0x4806a7;};'use strict';var _=require(_0x41e1('0x0'));var util=require(_0x41e1('0x1'));var logger=require('../../config/logger')(_0x41e1('0x2'));var moment=require(_0x41e1('0x3'));var BPromise=require(_0x41e1('0x4'));var rp=require(_0x41e1('0x5'));var fs=require('fs');var path=require(_0x41e1('0x6'));var rimraf=require(_0x41e1('0x7'));var config=require(_0x41e1('0x8'));var attributes=require('./mailApplication.attributes');module[_0x41e1('0x9')]=function(_0x2608eb,_0x2270b6){return _0x2608eb[_0x41e1('0xa')](_0x41e1('0xb'),attributes,{'tableName':_0x41e1('0xc'),'paranoid':![],'indexes':[],'timestamps':!![],'charset':'utf8mb4','collate':'utf8mb4_unicode_ci'});};
\ No newline at end of file
index bd75ef6..bf4b6b7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x60cb=['http','request','then','info','MailApplication,\x20%s,\x20%s','request\x20sent','debug','error','code','message','catch','UpdateMailApplication','MailApplication','update','options','where','attributes','limit','stringify','lodash','util','moment','bluebird','../../config/utils','../../config/logger','rpc','client'];(function(_0x269ee8,_0x477226){var _0x4d98bd=function(_0x20d4c4){while(--_0x20d4c4){_0x269ee8['push'](_0x269ee8['shift']());}};_0x4d98bd(++_0x477226);}(_0x60cb,0x9a));var _0xb60c=function(_0x21956a,_0xdaa45a){_0x21956a=_0x21956a-0x0;var _0x2beb23=_0x60cb[_0x21956a];return _0x2beb23;};'use strict';var _=require(_0xb60c('0x0'));var util=require(_0xb60c('0x1'));var moment=require(_0xb60c('0x2'));var BPromise=require(_0xb60c('0x3'));var rs=require('randomstring');var fs=require('fs');var Redis=require('ioredis');var db=require('../../mysqldb')['db'];var utils=require(_0xb60c('0x4'));var logger=require(_0xb60c('0x5'))(_0xb60c('0x6'));var config=require('../../config/environment');var jayson=require('jayson/promise');var client=jayson[_0xb60c('0x7')][_0xb60c('0x8')]({'port':0x232a});function respondWithRpcPromise(_0x1379cd,_0x3377d5,_0x414162){return new BPromise(function(_0x139822,_0x3abb4b){return client[_0xb60c('0x9')](_0x1379cd,_0x414162)[_0xb60c('0xa')](function(_0x5716f0){logger[_0xb60c('0xb')](_0xb60c('0xc'),_0x3377d5,_0xb60c('0xd'));logger[_0xb60c('0xe')]('MailApplication,\x20%s,\x20%s,\x20%s',_0x3377d5,_0xb60c('0xd'),JSON['stringify'](_0x5716f0));if(_0x5716f0[_0xb60c('0xf')]){if(_0x5716f0[_0xb60c('0xf')][_0xb60c('0x10')]===0x1f4){logger[_0xb60c('0xf')]('MailApplication,\x20%s,\x20%s',_0x3377d5,_0x5716f0['error'][_0xb60c('0x11')]);return _0x3abb4b(_0x5716f0['error'][_0xb60c('0x11')]);}logger[_0xb60c('0xf')](_0xb60c('0xc'),_0x3377d5,_0x5716f0['error'][_0xb60c('0x11')]);return _0x139822(_0x5716f0[_0xb60c('0xf')][_0xb60c('0x11')]);}else{logger[_0xb60c('0xb')]('MailApplication,\x20%s,\x20%s',_0x3377d5,_0xb60c('0xd'));_0x139822(_0x5716f0['result'][_0xb60c('0x11')]);}})[_0xb60c('0x12')](function(_0x3851){logger[_0xb60c('0xf')](_0xb60c('0xc'),_0x3377d5,_0x3851);_0x3abb4b(_0x3851);});});}exports[_0xb60c('0x13')]=function(_0x2deb3c){var _0x2cb938=this;return new Promise(function(_0x172ad3,_0x44f432){return db[_0xb60c('0x14')][_0xb60c('0x15')](_0x2deb3c['body'],{'raw':_0x2deb3c[_0xb60c('0x16')]?_0x2deb3c[_0xb60c('0x16')]['raw']===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x2deb3c[_0xb60c('0x16')]?_0x2deb3c['options'][_0xb60c('0x17')]||null:null,'attributes':_0x2deb3c[_0xb60c('0x16')]?_0x2deb3c[_0xb60c('0x16')][_0xb60c('0x18')]||null:null,'limit':_0x2deb3c['options']?_0x2deb3c[_0xb60c('0x16')][_0xb60c('0x19')]||null:null})[_0xb60c('0xa')](function(_0x56d2db){logger[_0xb60c('0xb')](_0xb60c('0x13'),_0x2deb3c);logger['debug'](_0xb60c('0x13'),_0x2deb3c,JSON[_0xb60c('0x1a')](_0x56d2db));_0x172ad3(_0x56d2db);})[_0xb60c('0x12')](function(_0x17e94a){logger['error'](_0xb60c('0x13'),_0x17e94a[_0xb60c('0x11')],_0x2deb3c);_0x44f432(_0x2cb938[_0xb60c('0xf')](0x1f4,_0x17e94a[_0xb60c('0x11')]));});});};
\ No newline at end of file
+var _0x3ee0=['MailApplication,\x20%s,\x20%s,\x20%s','error','code','message','info','result','MailApplication','update','options','raw','where','attributes','limit','then','UpdateMailApplication','stringify','lodash','util','bluebird','randomstring','ioredis','../../mysqldb','../../config/logger','rpc','jayson/promise','client','http','MailApplication,\x20%s,\x20%s','request\x20sent','debug'];(function(_0x2b5eae,_0x55010d){var _0x5f3ac9=function(_0x397bfc){while(--_0x397bfc){_0x2b5eae['push'](_0x2b5eae['shift']());}};_0x5f3ac9(++_0x55010d);}(_0x3ee0,0x196));var _0x03ee=function(_0x2dafbe,_0x5d04de){_0x2dafbe=_0x2dafbe-0x0;var _0x58a45a=_0x3ee0[_0x2dafbe];return _0x58a45a;};'use strict';var _=require(_0x03ee('0x0'));var util=require(_0x03ee('0x1'));var moment=require('moment');var BPromise=require(_0x03ee('0x2'));var rs=require(_0x03ee('0x3'));var fs=require('fs');var Redis=require(_0x03ee('0x4'));var db=require(_0x03ee('0x5'))['db'];var utils=require('../../config/utils');var logger=require(_0x03ee('0x6'))(_0x03ee('0x7'));var config=require('../../config/environment');var jayson=require(_0x03ee('0x8'));var client=jayson[_0x03ee('0x9')][_0x03ee('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x269d90,_0x356cd2,_0x14f601){return new BPromise(function(_0x627f1c,_0x53ff55){return client['request'](_0x269d90,_0x14f601)['then'](function(_0x74f726){logger['info'](_0x03ee('0xb'),_0x356cd2,_0x03ee('0xc'));logger[_0x03ee('0xd')](_0x03ee('0xe'),_0x356cd2,_0x03ee('0xc'),JSON['stringify'](_0x74f726));if(_0x74f726[_0x03ee('0xf')]){if(_0x74f726[_0x03ee('0xf')][_0x03ee('0x10')]===0x1f4){logger['error'](_0x03ee('0xb'),_0x356cd2,_0x74f726[_0x03ee('0xf')][_0x03ee('0x11')]);return _0x53ff55(_0x74f726['error'][_0x03ee('0x11')]);}logger[_0x03ee('0xf')](_0x03ee('0xb'),_0x356cd2,_0x74f726['error'][_0x03ee('0x11')]);return _0x627f1c(_0x74f726[_0x03ee('0xf')][_0x03ee('0x11')]);}else{logger[_0x03ee('0x12')](_0x03ee('0xb'),_0x356cd2,_0x03ee('0xc'));_0x627f1c(_0x74f726[_0x03ee('0x13')][_0x03ee('0x11')]);}})['catch'](function(_0x54ead0){logger[_0x03ee('0xf')](_0x03ee('0xb'),_0x356cd2,_0x54ead0);_0x53ff55(_0x54ead0);});});}exports['UpdateMailApplication']=function(_0x483935){var _0x2cb698=this;return new Promise(function(_0x2da621,_0x4945e7){return db[_0x03ee('0x14')][_0x03ee('0x15')](_0x483935['body'],{'raw':_0x483935[_0x03ee('0x16')]?_0x483935['options'][_0x03ee('0x17')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x483935[_0x03ee('0x16')]?_0x483935[_0x03ee('0x16')][_0x03ee('0x18')]||null:null,'attributes':_0x483935[_0x03ee('0x16')]?_0x483935[_0x03ee('0x16')][_0x03ee('0x19')]||null:null,'limit':_0x483935[_0x03ee('0x16')]?_0x483935['options'][_0x03ee('0x1a')]||null:null})[_0x03ee('0x1b')](function(_0x1eb700){logger['info'](_0x03ee('0x1c'),_0x483935);logger[_0x03ee('0xd')](_0x03ee('0x1c'),_0x483935,JSON[_0x03ee('0x1d')](_0x1eb700));_0x2da621(_0x1eb700);})['catch'](function(_0x46c1f7){logger[_0x03ee('0xf')](_0x03ee('0x1c'),_0x46c1f7[_0x03ee('0x11')],_0x483935);_0x4945e7(_0x2cb698[_0x03ee('0xf')](0x1f4,_0x46c1f7['message']));});});};
\ No newline at end of file
index e6ca28c..a9cdcc0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2d14=['mailinteraction:destroy','destroy','delete','/:id/tags','removeTags','express','../../components/interaction/service','./mailInteraction.controller','isAuthenticated','index','get','/describe','describe','show','/:id/messages','getMessages','download','post','create','addMessage','mailinteraction:addtags','addTags','/:id','mail','mailinteraction:update','update'];(function(_0x2b66d1,_0x3cdaee){var _0x6be9d3=function(_0x35d0ac){while(--_0x35d0ac){_0x2b66d1['push'](_0x2b66d1['shift']());}};_0x6be9d3(++_0x3cdaee);}(_0x2d14,0x109));var _0x42d1=function(_0x1576dc,_0x18cd3d){_0x1576dc=_0x1576dc-0x0;var _0x198515=_0x2d14[_0x1576dc];return _0x198515;};'use strict';var express=require(_0x42d1('0x0'));var router=express['Router']();var auth=require('../../components/auth/service');var interaction=require(_0x42d1('0x1'));var controller=require(_0x42d1('0x2'));router['get']('/',auth[_0x42d1('0x3')](),controller[_0x42d1('0x4')]);router[_0x42d1('0x5')](_0x42d1('0x6'),auth['isAuthenticated'](),controller[_0x42d1('0x7')]);router['get']('/:id',auth[_0x42d1('0x3')](),controller[_0x42d1('0x8')]);router[_0x42d1('0x5')](_0x42d1('0x9'),auth[_0x42d1('0x3')](),controller[_0x42d1('0xa')]);router[_0x42d1('0x5')]('/:id/download',auth[_0x42d1('0x3')](),controller[_0x42d1('0xb')]);router[_0x42d1('0xc')]('/',auth[_0x42d1('0x3')](),controller[_0x42d1('0xd')]);router[_0x42d1('0xc')](_0x42d1('0x9'),auth[_0x42d1('0x3')](),controller[_0x42d1('0xe')]);router['post']('/:id/tags',auth['isAuthenticated'](),interaction['tracked']('mail',_0x42d1('0xf')),controller[_0x42d1('0x10')]);router['put'](_0x42d1('0x11'),auth['isAuthenticated'](),interaction['tracked'](_0x42d1('0x12'),_0x42d1('0x13')),controller[_0x42d1('0x14')]);router['delete'](_0x42d1('0x11'),auth[_0x42d1('0x3')](),interaction['tracked']('mail',_0x42d1('0x15')),controller[_0x42d1('0x16')]);router[_0x42d1('0x17')](_0x42d1('0x18'),auth['isAuthenticated'](),controller[_0x42d1('0x19')]);module['exports']=router;
\ No newline at end of file
+var _0xbd7a=['create','/:id/messages','addMessage','/:id/tags','tracked','mail','mailinteraction:addtags','addTags','put','/:id','update','mailinteraction:destroy','delete','removeTags','exports','express','Router','../../components/interaction/service','./mailInteraction.controller','get','isAuthenticated','index','describe','show','getMessages','/:id/download','download','post'];(function(_0x226ee0,_0x27f43b){var _0x4d8f67=function(_0x649db9){while(--_0x649db9){_0x226ee0['push'](_0x226ee0['shift']());}};_0x4d8f67(++_0x27f43b);}(_0xbd7a,0x10b));var _0xabd7=function(_0x1da04e,_0x31024b){_0x1da04e=_0x1da04e-0x0;var _0xdd8c41=_0xbd7a[_0x1da04e];return _0xdd8c41;};'use strict';var express=require(_0xabd7('0x0'));var router=express[_0xabd7('0x1')]();var auth=require('../../components/auth/service');var interaction=require(_0xabd7('0x2'));var controller=require(_0xabd7('0x3'));router[_0xabd7('0x4')]('/',auth[_0xabd7('0x5')](),controller[_0xabd7('0x6')]);router[_0xabd7('0x4')]('/describe',auth['isAuthenticated'](),controller[_0xabd7('0x7')]);router[_0xabd7('0x4')]('/:id',auth[_0xabd7('0x5')](),controller[_0xabd7('0x8')]);router['get']('/:id/messages',auth[_0xabd7('0x5')](),controller[_0xabd7('0x9')]);router[_0xabd7('0x4')](_0xabd7('0xa'),auth[_0xabd7('0x5')](),controller[_0xabd7('0xb')]);router[_0xabd7('0xc')]('/',auth['isAuthenticated'](),controller[_0xabd7('0xd')]);router[_0xabd7('0xc')](_0xabd7('0xe'),auth[_0xabd7('0x5')](),controller[_0xabd7('0xf')]);router['post'](_0xabd7('0x10'),auth[_0xabd7('0x5')](),interaction[_0xabd7('0x11')](_0xabd7('0x12'),_0xabd7('0x13')),controller[_0xabd7('0x14')]);router[_0xabd7('0x15')](_0xabd7('0x16'),auth[_0xabd7('0x5')](),interaction[_0xabd7('0x11')](_0xabd7('0x12'),'mailinteraction:update'),controller[_0xabd7('0x17')]);router['delete'](_0xabd7('0x16'),auth[_0xabd7('0x5')](),interaction[_0xabd7('0x11')](_0xabd7('0x12'),_0xabd7('0x18')),controller['destroy']);router[_0xabd7('0x19')](_0xabd7('0x10'),auth[_0xabd7('0x5')](),controller[_0xabd7('0x1a')]);module[_0xabd7('0x1b')]=router;
\ No newline at end of file
index f606168..d3c7d7c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1a4c=['BOOLEAN','DATE','STRING','TEXT','long','ENUM','out','sequelize','iconv','exports'];(function(_0x31c053,_0x3d0362){var _0x14b4c3=function(_0x2b840f){while(--_0x2b840f){_0x31c053['push'](_0x31c053['shift']());}};_0x14b4c3(++_0x3d0362);}(_0x1a4c,0x15b));var _0xc1a4=function(_0x59ee6f,_0x450239){_0x59ee6f=_0x59ee6f-0x0;var _0x4c0979=_0x1a4c[_0x59ee6f];return _0x4c0979;};'use strict';var Sequelize=require(_0xc1a4('0x0'));var iconv=require(_0xc1a4('0x1'));module[_0xc1a4('0x2')]={'closed':{'type':Sequelize[_0xc1a4('0x3')],'defaultValue':![]},'closedAt':{'type':Sequelize[_0xc1a4('0x4')]},'disposition':{'type':Sequelize[_0xc1a4('0x5')]},'secondDisposition':{'type':Sequelize[_0xc1a4('0x5')]},'thirdDisposition':{'type':Sequelize['STRING']},'note':{'type':Sequelize[_0xc1a4('0x5')]},'inReplyTo':{'type':Sequelize['STRING'](0x1fe)},'to':{'type':Sequelize[_0xc1a4('0x5')]},'cc':{'type':Sequelize[_0xc1a4('0x6')](_0xc1a4('0x7'))},'subject':{'type':Sequelize['TEXT']()},'attach':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'read1stAt':{'type':Sequelize[_0xc1a4('0x4')]},'substatus':{'type':Sequelize[_0xc1a4('0x5')](0x3c)},'substatusAt':{'type':Sequelize['DATE']},'firstMsgDirection':{'type':Sequelize[_0xc1a4('0x8')]('in',_0xc1a4('0x9')),'defaultValue':'in','allowNull':![]},'lastMsgAt':{'type':Sequelize[_0xc1a4('0x4')]},'lastMsgDirection':{'type':Sequelize[_0xc1a4('0x8')]('in',_0xc1a4('0x9')),'defaultValue':'in','allowNull':![]},'autoreplyExecuted':{'type':Sequelize[_0xc1a4('0x3')],'defaultValue':![]}};
\ No newline at end of file
+var _0x06f5=['BOOLEAN','STRING','long','TEXT','DATE','out','ENUM','sequelize','iconv','exports'];(function(_0x1d84c9,_0x38ca68){var _0x1312c5=function(_0x3de15a){while(--_0x3de15a){_0x1d84c9['push'](_0x1d84c9['shift']());}};_0x1312c5(++_0x38ca68);}(_0x06f5,0x1a1));var _0x506f=function(_0x1420ce,_0x437d99){_0x1420ce=_0x1420ce-0x0;var _0x3637ff=_0x06f5[_0x1420ce];return _0x3637ff;};'use strict';var Sequelize=require(_0x506f('0x0'));var iconv=require(_0x506f('0x1'));module[_0x506f('0x2')]={'closed':{'type':Sequelize[_0x506f('0x3')],'defaultValue':![]},'closedAt':{'type':Sequelize['DATE']},'disposition':{'type':Sequelize[_0x506f('0x4')]},'secondDisposition':{'type':Sequelize[_0x506f('0x4')]},'thirdDisposition':{'type':Sequelize[_0x506f('0x4')]},'note':{'type':Sequelize[_0x506f('0x4')]},'inReplyTo':{'type':Sequelize[_0x506f('0x4')](0x1fe)},'to':{'type':Sequelize[_0x506f('0x4')]},'cc':{'type':Sequelize['TEXT'](_0x506f('0x5'))},'subject':{'type':Sequelize[_0x506f('0x6')]()},'attach':{'type':Sequelize[_0x506f('0x3')],'defaultValue':![]},'read1stAt':{'type':Sequelize[_0x506f('0x7')]},'substatus':{'type':Sequelize[_0x506f('0x4')](0x3c)},'substatusAt':{'type':Sequelize[_0x506f('0x7')]},'firstMsgDirection':{'type':Sequelize['ENUM']('in',_0x506f('0x8')),'defaultValue':'in','allowNull':![]},'lastMsgAt':{'type':Sequelize[_0x506f('0x7')]},'lastMsgDirection':{'type':Sequelize[_0x506f('0x9')]('in',_0x506f('0x8')),'defaultValue':'in','allowNull':![]},'autoreplyExecuted':{'type':Sequelize[_0x506f('0x3')],'defaultValue':![]}};
\ No newline at end of file
index 82e46d8..d976995 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb10b=['Contact.email','c.phone','Contact.phone','c.mobile','Contact.mobile','c.fax','o.fullname','Owner.fullname','o.internal','Owner.internal','GROUP_CONCAT(DISTINCT\x20t.id)','ui.MailInteractionId\x20IN\x20?','groupBy','MailInteractionId','Setting','findOne','enableEmailPreview','show','params','rawAttributes','includeAll','include','merge','options','create','body','describe','addMessage','ids','omit','getMessages','nolimit','pick','$gte','format','YYYY-MM-DD\x20HH:mm:ss','findAll','inlineCss','rows','spread','emit','mailInteractionTags:save','removeTags','download','unix','join','server','tmp','root','files','attachments','transcript-%d-%s.zip','Attachment','Attachments','Messages','subject','get','each','ddd,\x20DD\x20MMM\x20YYYY\x20HH:mm:ss\x20ZZ','headers','bcc','Bcc','basename','existsSync','build','message%d.eml','unlinkSync','eml-format','zip-dir','moment','bluebird','path','lodash','squel','juice','ioredis','../../components/parsers/qs','../../config/logger','api','../../mysqldb','redis','defaults','localhost','socket.io-emitter','./mailInteraction.socket','sendStatus','end','status','json','offset','undefined','limit','count','set','Content-Range','update','destroy','then','error','stack','name','send','fullname','TagIds','Tags','split','forEach','push','MailMessage','out','-id','trimStart','plainBody','catch','index','map','MailInteraction','key','model','query','keys','filters','intersection','fields','attributes','hasOwnProperty','order','sort','where','field','color','tools_tags','u.id','ui.MailInteractionId','from','user_has_mail_interactions','left_join','users','u.id\x20=\x20ui.UserId','select','mail_interactions','c.id\x20=\x20i.ContactId\x20AND\x20c.deletedAt\x20IS\x20NULL','o.id\x20=\x20i.UserId','mail_accounts','a.id\x20=\x20i.MailAccountId','mail_messages','me.MailInteractionId\x20=\x20i.id','it.MailInteractionId\x20=\x20i.id','expr','search','parseSearch','conditions','length','find','unreadMessages','value','having','`\x20>\x200','Contact','operator','$substring','MATCH\x20(c.firstName,\x20c.lastName,\x20c.phone,\x20c.mobile,\x20c.fax,\x20c.email)\x20AGAINST\x20(?\x20IN\x20BOOLEAN\x20MODE)','getFullTextValue','c.firstName\x20LIKE\x20?\x20OR\x20c.lastName\x20LIKE\x20?\x20OR\x20c.email\x20LIKE\x20?','ContactId','buildExpression','type','text','Tag','CONCAT(\x27,\x27,\x20`TagIds`,\x20\x27,\x27)\x20LIKE\x20?','union','User','CONCAT_WS(\x27\x20\x27,\x20o.name,\x20o.fullname)\x20LIKE\x20?','UserId','start','some','compact','isEmpty','i.MailAccountId\x20IN\x20?','concat','createdAt','parse','$lte','i.createdAt\x20BETWEEN\x20?\x20AND\x20?','null','\x20IS\x20NULL','\x20=\x20?','read','`unreadMessages`\x20>\x200','tag','isArray','filter','replace','isNumeric','isEmail','MATCH\x20(me.plainBody,\x20me.subject)\x20AGAINST\x20(?\x20IN\x20BOOLEAN\x20MODE)','group','SELECT','clone','i.id','SUM(me.read\x20=\x200\x20AND\x20me.direction\x20=\x20\x27in\x27)','DESC','t.id\x20IN\x20?','resolve','MailAccountId','i.MailAccountId\x20IS\x20NOT\x20NULL','role','getMailAccounts','i.MailAccountId\x20IS\x20NULL','agent','toString','sequelize','keyBy','a.key','Account.key','Account.mandatoryDisposition','CASE\x20WHEN\x20i.to\x20IS\x20NOT\x20NULL\x20AND\x20i.to\x20<>\x20\x27\x27\x20AND\x20i.to\x20NOT\x20LIKE\x20(\x27%\x27\x20+\x20a.email\x20+\x20\x27%\x27)\x20THEN\x20SUBSTRING_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.attach','i.lastMsgAt','i.subject','i.disposition','i.secondDisposition','i.thirdDisposition','i.ContactId','i.MailAccountId','Contact.firstName','c.email'];(function(_0x2bf141,_0x31eac7){var _0x48277b=function(_0x9fe560){while(--_0x9fe560){_0x2bf141['push'](_0x2bf141['shift']());}};_0x48277b(++_0x31eac7);}(_0xb10b,0x12a));var _0xbb10=function(_0x577f24,_0x415e8c){_0x577f24=_0x577f24-0x0;var _0x4b82f7=_0xb10b[_0x577f24];return _0x4b82f7;};'use strict';var emlformat=require(_0xbb10('0x0'));var rimraf=require('rimraf');var zipdir=require(_0xbb10('0x1'));var moment=require(_0xbb10('0x2'));var BPromise=require(_0xbb10('0x3'));var util=require('util');var path=require(_0xbb10('0x4'));var fs=require('fs');var _=require(_0xbb10('0x5'));var squel=require(_0xbb10('0x6'));var juice=require(_0xbb10('0x7'));var Redis=require(_0xbb10('0x8'));var qs=require(_0xbb10('0x9'));var as=require('../../components/parsers/advancedSearch');var logger=require(_0xbb10('0xa'))(_0xbb10('0xb'));var config=require('../../config/environment');var db=require(_0xbb10('0xc'))['db'];config[_0xbb10('0xd')]=_[_0xbb10('0xe')](config[_0xbb10('0xd')],{'host':_0xbb10('0xf'),'port':0x18eb});var socket=require(_0xbb10('0x10'))(new Redis(config[_0xbb10('0xd')]));require(_0xbb10('0x11'))['register'](socket);function respondWithStatusCode(_0x4e47f8,_0x20bd61){_0x20bd61=_0x20bd61||0xcc;return function(_0x118a74){if(_0x118a74){return _0x4e47f8[_0xbb10('0x12')](_0x20bd61);}return _0x4e47f8['status'](_0x20bd61)[_0xbb10('0x13')]();};}function respondWithResult(_0x5be7e0,_0x44fb19){_0x44fb19=_0x44fb19||0xc8;return function(_0x916a32){if(_0x916a32){return _0x5be7e0[_0xbb10('0x14')](_0x44fb19)[_0xbb10('0x15')](_0x916a32);}};}function respondWithFilteredResult(_0x442548,_0x147230){return function(_0x58a612){if(_0x58a612){var _0x26e021=typeof _0x147230[_0xbb10('0x16')]===_0xbb10('0x17')&&typeof _0x147230[_0xbb10('0x18')]===_0xbb10('0x17');var _0x2f2ebf=_0x58a612[_0xbb10('0x19')];var _0x36b5e8=_0x26e021?0x0:_0x147230[_0xbb10('0x16')];var _0x2b184e=_0x26e021?_0x58a612['count']:_0x147230[_0xbb10('0x16')]+_0x147230[_0xbb10('0x18')];var _0x133ac2;if(_0x2b184e>=_0x2f2ebf){_0x2b184e=_0x2f2ebf;_0x133ac2=0xc8;}else{_0x133ac2=0xce;}_0x442548[_0xbb10('0x14')](_0x133ac2);return _0x442548[_0xbb10('0x1a')](_0xbb10('0x1b'),_0x36b5e8+'-'+_0x2b184e+'/'+_0x2f2ebf)[_0xbb10('0x15')](_0x58a612);}return null;};}function saveUpdates(_0x30efc6){return function(_0xbf2906){if(_0xbf2906){return _0xbf2906[_0xbb10('0x1c')](_0x30efc6)['then'](function(_0x5ff0cf){return _0x5ff0cf;});}return null;};}function removeEntity(_0x19f48d){return function(_0x388fab){if(_0x388fab){return _0x388fab[_0xbb10('0x1d')]()[_0xbb10('0x1e')](function(){_0x19f48d[_0xbb10('0x14')](0xcc)['end']();});}};}function handleEntityNotFound(_0x12f888){return function(_0x12ef77){if(!_0x12ef77){_0x12f888['sendStatus'](0x194);}return _0x12ef77;};}function handleError(_0x4c4b0d,_0x8e2b97){_0x8e2b97=_0x8e2b97||0x1f4;return function(_0x311abe){logger[_0xbb10('0x1f')](_0x311abe[_0xbb10('0x20')]);if(_0x311abe[_0xbb10('0x21')]){delete _0x311abe[_0xbb10('0x21')];}_0x4c4b0d[_0xbb10('0x14')](_0x8e2b97)[_0xbb10('0x22')](_0x311abe);};}function getInteractionUsers(_0x7f2377,_0x395404){return new BPromise(function(_0x3ba6cd,_0x26ad93){try{if(_0x395404[_0x7f2377['id']]){_0x7f2377['Users']=_['map'](_0x395404[_0x7f2377['id']],function(_0x4fb5e0){return{'id':_0x4fb5e0['id'],'fullname':_0x4fb5e0[_0xbb10('0x23')]};});}}catch(_0x3c5ae7){_0x26ad93(_0x3c5ae7);}_0x3ba6cd(_0x7f2377);});}function getInteractionTags(_0x2c89b9,_0x4e25ff){return new BPromise(function(_0x2fdde9,_0x24d586){try{if(_0x2c89b9[_0xbb10('0x24')]){_0x2c89b9[_0xbb10('0x25')]=[];_0x2c89b9[_0xbb10('0x24')][_0xbb10('0x26')](',')[_0xbb10('0x27')](function(_0x4aabb9){_0x2c89b9[_0xbb10('0x25')][_0xbb10('0x28')](_0x4e25ff[_0x4aabb9]);});}delete _0x2c89b9[_0xbb10('0x24')];}catch(_0x2e0249){_0x24d586(_0x2e0249);}_0x2fdde9(_0x2c89b9);});}function getLastMessageText(_0x1d30aa){return new BPromise(function(_0x2ff4c1,_0x5d5c80){return db[_0xbb10('0x29')]['findOne']({'where':{'$and':[{'MailInteractionId':_0x1d30aa['id']},{'$or':[{'direction':'in'},{'$and':[{'direction':_0xbb10('0x2a')},{'secret':![]},{'UserId':{'$ne':null}}]}]}]},'attributes':['plainBody'],'order':_0xbb10('0x2b'),'raw':!![]})[_0xbb10('0x1e')](function(_0x1b59f9){if(_0x1b59f9&&_0x1b59f9['plainBody']){_0x1d30aa['lastMsgText']=_[_0xbb10('0x2c')](_0x1b59f9[_0xbb10('0x2d')]);}_0x2ff4c1(_0x1d30aa);})['catch'](function(_0x359ad4){_0x5d5c80(_0x359ad4);});});}function updateMailInteraction(_0x37dde7,_0x2f653f,_0x1c0b57,_0x37a83f){return new BPromise(function(_0x138bc6,_0xf85197){return getInteractionUsers(_0x37dde7,_0x1c0b57)['then'](function(_0x25acb3){return getInteractionTags(_0x25acb3,_0x2f653f);})[_0xbb10('0x1e')](function(_0x441d15){if(_0x37a83f){_0x138bc6(getLastMessageText(_0x441d15));}else{_0x138bc6(_0x441d15);}})[_0xbb10('0x2e')](function(_0xfb2c5e){_0xf85197(_0xfb2c5e);});});}exports[_0xbb10('0x2f')]=function(_0x188cbd,_0x10202c){var _0x3c8d7d={},_0x56943c={},_0x2b5352={'count':0x0,'rows':[]};var _0x150107=_[_0xbb10('0x30')](db[_0xbb10('0x31')]['rawAttributes'],function(_0x111762){return{'name':_0x111762['fieldName'],'type':_0x111762['type'][_0xbb10('0x32')]};});_0x56943c[_0xbb10('0x33')]=_[_0xbb10('0x30')](_0x150107,_0xbb10('0x21'));_0x56943c[_0xbb10('0x34')]=_[_0xbb10('0x35')](_0x188cbd['query']);_0x56943c[_0xbb10('0x36')]=_[_0xbb10('0x37')](_0x56943c['model'],_0x56943c['query']);_0x3c8d7d['attributes']=_[_0xbb10('0x37')](_0x56943c[_0xbb10('0x33')],qs[_0xbb10('0x38')](_0x188cbd['query'][_0xbb10('0x38')]));_0x3c8d7d[_0xbb10('0x39')]=_0x3c8d7d[_0xbb10('0x39')]['length']?_0x3c8d7d[_0xbb10('0x39')]:_0x56943c[_0xbb10('0x33')];if(!_0x188cbd[_0xbb10('0x34')][_0xbb10('0x3a')]('nolimit')){_0x3c8d7d[_0xbb10('0x18')]=qs[_0xbb10('0x18')](_0x188cbd['query'][_0xbb10('0x18')]);_0x3c8d7d[_0xbb10('0x16')]=qs[_0xbb10('0x16')](_0x188cbd[_0xbb10('0x34')][_0xbb10('0x16')]);}_0x3c8d7d[_0xbb10('0x3b')]=qs['sort'](_0x188cbd[_0xbb10('0x34')][_0xbb10('0x3c')]);_0x3c8d7d[_0xbb10('0x3d')]=qs[_0xbb10('0x36')](_['pick'](_0x188cbd[_0xbb10('0x34')],_0x56943c[_0xbb10('0x36')]),_0x150107);var _0x23dc18=[];var _0x403beb=squel['select']()[_0xbb10('0x3e')]('id')[_0xbb10('0x3e')]('name')['field'](_0xbb10('0x3f'))['from'](_0xbb10('0x40'));var _0x180933=squel['select']()[_0xbb10('0x3e')](_0xbb10('0x41'))[_0xbb10('0x3e')]('u.fullname')[_0xbb10('0x3e')](_0xbb10('0x42'))[_0xbb10('0x43')](_0xbb10('0x44'),'ui')[_0xbb10('0x45')](_0xbb10('0x46'),'u',_0xbb10('0x47'));var _0x3efa96=squel[_0xbb10('0x48')]()[_0xbb10('0x43')](_0xbb10('0x49'),'i')[_0xbb10('0x45')]('cm_contacts','c',_0xbb10('0x4a'))[_0xbb10('0x45')]('users','o',_0xbb10('0x4b'))[_0xbb10('0x45')](_0xbb10('0x4c'),'a',_0xbb10('0x4d'))[_0xbb10('0x45')](_0xbb10('0x4e'),'me',_0xbb10('0x4f'))['left_join']('mail_interaction_has_tags','it',_0xbb10('0x50'))[_0xbb10('0x45')](_0xbb10('0x40'),'t','t.id\x20=\x20it.TagId');var _0x5f0c12=squel[_0xbb10('0x51')]();var _0x34cf4e=[];var _0x1bd054=squel[_0xbb10('0x51')]();var _0x10159b;if(_0x188cbd[_0xbb10('0x34')][_0xbb10('0x52')]){_0x10159b=as[_0xbb10('0x53')](_0x188cbd[_0xbb10('0x34')][_0xbb10('0x52')]);var _0x550111=_0x10159b['sqlOperator'];for(var _0x412e13=0x0;_0x412e13<_0x10159b[_0xbb10('0x54')][_0xbb10('0x55')];_0x412e13++){var _0xb014b0=_0x10159b[_0xbb10('0x54')][_0x412e13];var _0x440f9e='i';var _0x358e7e=_[_0xbb10('0x56')](_0x150107,[_0xbb10('0x21'),_0xb014b0[_0xbb10('0x3e')]]);if(!_0x358e7e){switch(_0xb014b0[_0xbb10('0x3e')]){case _0xbb10('0x57'):if(_0xb014b0[_0xbb10('0x58')]==0x1){_0x3efa96[_0xbb10('0x59')]('`'+_0xb014b0[_0xbb10('0x3e')]+'`\x20=\x200');}else{_0x3efa96[_0xbb10('0x59')]('`'+_0xb014b0['field']+_0xbb10('0x5a'));}break;case _0xbb10('0x5b'):if(_0xb014b0[_0xbb10('0x5c')]===_0xbb10('0x5d')){if(_0xb014b0[_0xbb10('0x58')][_0xbb10('0x26')]('\x20')[_0xbb10('0x55')]>0x1){_0x5f0c12[_0x550111](_0xbb10('0x5e'),qs[_0xbb10('0x5f')](_0xb014b0[_0xbb10('0x58')]),null);}else{var _0x44a056='%'+_0xb014b0[_0xbb10('0x58')]+'%';_0x5f0c12[_0x550111](_0xbb10('0x60'),_0x44a056,_0x44a056,_0x44a056);}}else{_0x358e7e=_[_0xbb10('0x56')](_0x150107,[_0xbb10('0x21'),'ContactId']);_0xb014b0[_0xbb10('0x3e')]=_0xbb10('0x61');_0x155dc5=as[_0xbb10('0x62')](_0x440f9e,_0x358e7e[_0xbb10('0x63')],_0xb014b0);_0x5f0c12[_0x550111](_0x155dc5[_0xbb10('0x64')],_0x155dc5[_0xbb10('0x58')]['start'],_0x155dc5[_0xbb10('0x58')][_0xbb10('0x13')]);}break;case _0xbb10('0x65'):var _0x14fed3=_0xb014b0[_0xbb10('0x58')][_0xbb10('0x26')](',')[_0xbb10('0x30')](function(_0x12ec18){return Number(_0x12ec18);});_0x14fed3[_0xbb10('0x27')](function(_0x40c4fb){_0x1bd054['or'](_0xbb10('0x66'),'%,'+_0x40c4fb+',%');});_0x34cf4e=_[_0xbb10('0x67')](_0x34cf4e,_0x14fed3);break;case _0xbb10('0x68'):if(_0xb014b0['operator']==='$substring'){_0x5f0c12[_0x550111](_0xbb10('0x69'),'%'+_0xb014b0[_0xbb10('0x58')]+'%',null);}else{_0x358e7e=_[_0xbb10('0x56')](_0x150107,[_0xbb10('0x21'),'UserId']);_0xb014b0['field']=_0xbb10('0x6a');_0x155dc5=as[_0xbb10('0x62')](_0x440f9e,_0x358e7e[_0xbb10('0x63')],_0xb014b0);_0x5f0c12[_0x550111](_0x155dc5[_0xbb10('0x64')],_0x155dc5[_0xbb10('0x58')][_0xbb10('0x6b')],_0x155dc5[_0xbb10('0x58')]['end']);}break;case _0xbb10('0x2d'):_0x155dc5=as[_0xbb10('0x62')]('me',null,_0xb014b0);_0x5f0c12[_0x550111](_0x155dc5['text'],_0x155dc5['value']['start'],_0x155dc5[_0xbb10('0x58')][_0xbb10('0x13')]);break;}}else{var _0x155dc5=as['buildExpression'](_0x440f9e,_0x358e7e['type'],_0xb014b0);_0x5f0c12[_0x550111](_0x155dc5['text'],_0x155dc5[_0xbb10('0x58')][_0xbb10('0x6b')],_0x155dc5[_0xbb10('0x58')]['end']);}}}else{var _0xa1bbd9=_(_0x188cbd[_0xbb10('0x34')])['keys']()['map'](function(_0x27d7b9){return _[_0xbb10('0x6c')](_0x150107,[_0xbb10('0x21'),_0x27d7b9])?_0x27d7b9:undefined;})[_0xbb10('0x6d')]()['value']();if(!_[_0xbb10('0x6e')](_0xa1bbd9)){_0xa1bbd9[_0xbb10('0x27')](function(_0xa7179d){if(_0xa7179d==='MailAccountId'){_0x3efa96[_0xbb10('0x3d')](_0xbb10('0x6f'),[][_0xbb10('0x70')](_0x188cbd['query'][_0xa7179d]));}else if(_0xa7179d===_0xbb10('0x71')){var _0x31e85e=JSON[_0xbb10('0x72')](_0x188cbd[_0xbb10('0x34')][_0xa7179d])['$gte'];var _0x251417=JSON[_0xbb10('0x72')](_0x188cbd[_0xbb10('0x34')][_0xa7179d])[_0xbb10('0x73')];_0x3efa96['where'](_0xbb10('0x74'),_0x31e85e,_0x251417);}else{if(_0x188cbd[_0xbb10('0x34')][_0xa7179d]===_0xbb10('0x75')){_0x3efa96[_0xbb10('0x3d')]('i.'+_0xa7179d+_0xbb10('0x76'));}else{_0x3efa96[_0xbb10('0x3d')]('i.'+_0xa7179d+_0xbb10('0x77'),_0x188cbd['query'][_0xa7179d]);}}});}if(_0x188cbd['query']['read']){if(_0x188cbd[_0xbb10('0x34')][_0xbb10('0x78')]==0x1){_0x3efa96[_0xbb10('0x59')]('`unreadMessages`\x20=\x200');}else{_0x3efa96['having'](_0xbb10('0x79'));}}if(_0x188cbd[_0xbb10('0x34')][_0xbb10('0x7a')]){_0x34cf4e=_[_0xbb10('0x7b')](_0x188cbd[_0xbb10('0x34')][_0xbb10('0x7a')])?_0x188cbd['query'][_0xbb10('0x7a')]:new Array(_0x188cbd[_0xbb10('0x34')][_0xbb10('0x7a')]);_0x34cf4e[_0xbb10('0x27')](function(_0x2aaaa6){_0x1bd054['or']('CONCAT(\x27,\x27,\x20`TagIds`,\x20\x27,\x27)\x20LIKE\x20?','%,'+_0x2aaaa6+',%');});}if(_0x188cbd['query']['filter']){var _0x329da7=_0x188cbd[_0xbb10('0x34')][_0xbb10('0x7c')][_0xbb10('0x7d')]('\x5c','\x5c\x5c')[_0xbb10('0x7d')](/'/g,'\x27\x27');if(qs[_0xbb10('0x7e')](_0x329da7)){_0x5f0c12['or']('i.id\x20LIKE\x20?',_0x329da7+'%');}else if(qs[_0xbb10('0x7f')](_0x329da7)){_0x5f0c12['or']('c.email\x20LIKE\x20?',_0x329da7+'%');}else{_0x5f0c12['or']('MATCH\x20(i.to,\x20i.subject)\x20AGAINST\x20(?\x20IN\x20BOOLEAN\x20MODE)',qs['getFullTextValue'](_0x329da7))['or'](_0xbb10('0x80'),qs[_0xbb10('0x5f')](_0x329da7));}}}_0x3efa96[_0xbb10('0x3d')](_0x5f0c12);_0x3efa96[_0xbb10('0x81')]('i.id');var _0x122d38={'type':db['Sequelize']['QueryTypes'][_0xbb10('0x82')],'raw':!![]};var _0xfe3db0=_0x3efa96[_0xbb10('0x83')]();_0xfe3db0[_0xbb10('0x3e')](_0xbb10('0x84'));_0xfe3db0['field'](_0xbb10('0x85'),_0xbb10('0x57'));if(_0x3c8d7d[_0xbb10('0x3b')]){_0x3c8d7d[_0xbb10('0x3b')][_0xbb10('0x27')](function(_0x27f42f){var _0x174395=_0x27f42f[0x0]==='contactName'?_0x27f42f[0x0]:'i.'+_0x27f42f[0x0];_0x3efa96[_0xbb10('0x3b')](_0x174395,_0x27f42f[0x1]===_0xbb10('0x86')?![]:!![]);});}if(!_[_0xbb10('0x6e')](_0x34cf4e)){_0x3efa96[_0xbb10('0x59')](_0x1bd054);_0xfe3db0[_0xbb10('0x3d')](_0xbb10('0x87'),_0x34cf4e);}BPromise[_0xbb10('0x88')]()[_0xbb10('0x1e')](function(){if(!_0x10159b){if(_0x188cbd['query'][_0xbb10('0x89')])return;_0xfe3db0[_0xbb10('0x3d')](_0xbb10('0x8a'));_0x3efa96['where']('i.MailAccountId\x20IS\x20NOT\x20NULL');return;}if(_0x188cbd['user'][_0xbb10('0x8b')]!=='agent')return;return _0x188cbd['user'][_0xbb10('0x8c')]({'attributes':['id'],'raw':!![]})[_0xbb10('0x1e')](function(_0x33ff06){if(_[_0xbb10('0x6e')](_0x33ff06)){_0xfe3db0[_0xbb10('0x3d')](_0xbb10('0x8d'));_0x3efa96[_0xbb10('0x3d')](_0xbb10('0x8d'));}else{_0xfe3db0[_0xbb10('0x3d')]('i.MailAccountId\x20IN\x20?',_[_0xbb10('0x30')](_0x33ff06,'id'));_0x3efa96[_0xbb10('0x3d')](_0xbb10('0x6f'),_[_0xbb10('0x30')](_0x33ff06,'id'));}});})['then'](function(){if(_0x188cbd['user'][_0xbb10('0x8b')]===_0xbb10('0x8e')&&!_0x10159b&&!_0x188cbd[_0xbb10('0x34')][_0xbb10('0x89')])return[];return db['sequelize'][_0xbb10('0x34')](_0xfe3db0[_0xbb10('0x8f')](),_0x122d38);})[_0xbb10('0x1e')](function(_0xf7b3e1){_0x2b5352[_0xbb10('0x19')]=_0xf7b3e1['length'];if(_0x2b5352['count']===0x0)return[];return db[_0xbb10('0x90')][_0xbb10('0x34')](_0x403beb[_0xbb10('0x8f')](),_0x122d38)['then'](function(_0x256b35){_0x23dc18=_[_0xbb10('0x91')](_0x256b35,'id');_0x122d38=_['merge'](_0x122d38,{'model':db['MailInteraction'],'mapToModel':!![],'raw':!![],'nest':!![]});if(_0x188cbd[_0xbb10('0x34')][_0xbb10('0x38')]){_0x3c8d7d[_0xbb10('0x39')]['forEach'](function(_0x32d5a5){_0x3efa96[_0xbb10('0x3e')]('i.'+_0x32d5a5);});}else{_0x3efa96[_0xbb10('0x3e')](_0xbb10('0x85'),_0xbb10('0x57'));_0x3efa96[_0xbb10('0x3e')](_0xbb10('0x92'),_0xbb10('0x93'));_0x3efa96[_0xbb10('0x3e')]('a.mandatoryDisposition',_0xbb10('0x94'));_0x3efa96[_0xbb10('0x3e')](_0xbb10('0x95'),_0xbb10('0x96'));_0x3efa96[_0xbb10('0x3e')](_0xbb10('0x84'));_0x3efa96[_0xbb10('0x3e')](_0xbb10('0x97'));_0x3efa96[_0xbb10('0x3e')](_0xbb10('0x98'));_0x3efa96[_0xbb10('0x3e')](_0xbb10('0x99'));_0x3efa96['field']('i.closedAt');_0x3efa96[_0xbb10('0x3e')](_0xbb10('0x9a'));_0x3efa96[_0xbb10('0x3e')](_0xbb10('0x9b'));_0x3efa96[_0xbb10('0x3e')]('i.lastMsgDirection');_0x3efa96[_0xbb10('0x3e')](_0xbb10('0x9c'));_0x3efa96[_0xbb10('0x3e')](_0xbb10('0x9d'));_0x3efa96[_0xbb10('0x3e')](_0xbb10('0x9e'));_0x3efa96['field'](_0xbb10('0x9f'));_0x3efa96[_0xbb10('0x3e')]('i.substatus');_0x3efa96[_0xbb10('0x3e')]('i.to');_0x3efa96[_0xbb10('0x3e')](_0xbb10('0xa0'));_0x3efa96[_0xbb10('0x3e')](_0xbb10('0xa1'));_0x3efa96[_0xbb10('0x3e')]('i.UserId');_0x3efa96[_0xbb10('0x3e')]('c.firstName',_0xbb10('0xa2'));_0x3efa96[_0xbb10('0x3e')]('c.lastName','Contact.lastName');_0x3efa96[_0xbb10('0x3e')](_0xbb10('0xa3'),_0xbb10('0xa4'));_0x3efa96[_0xbb10('0x3e')](_0xbb10('0xa5'),_0xbb10('0xa6'));_0x3efa96[_0xbb10('0x3e')](_0xbb10('0xa7'),_0xbb10('0xa8'));_0x3efa96[_0xbb10('0x3e')](_0xbb10('0xa9'),'Contact.fax');_0x3efa96[_0xbb10('0x3e')](_0xbb10('0xaa'),_0xbb10('0xab'));_0x3efa96[_0xbb10('0x3e')](_0xbb10('0xac'),_0xbb10('0xad'));_0x3efa96[_0xbb10('0x3e')](_0xbb10('0xae'),_0xbb10('0x24'));}if(_0x3c8d7d[_0xbb10('0x18')])_0x3efa96[_0xbb10('0x18')](_0x3c8d7d[_0xbb10('0x18')]);if(_0x3c8d7d['offset'])_0x3efa96[_0xbb10('0x16')](_0x3c8d7d['offset']);return db[_0xbb10('0x90')][_0xbb10('0x34')](_0x3efa96[_0xbb10('0x8f')](),_0x122d38);})[_0xbb10('0x1e')](function(_0x38d369){if(_0x38d369['length']>0x0)_0x180933[_0xbb10('0x3d')](_0xbb10('0xaf'),_[_0xbb10('0x30')](_0x38d369,'id'));return db[_0xbb10('0x90')][_0xbb10('0x34')](_0x180933[_0xbb10('0x8f')](),_0x122d38)['then'](function(_0x4bd470){var _0x5cc9d7=_[_0xbb10('0xb0')](_0x4bd470,_0xbb10('0xb1'));var _0x57d5a1=[];return db[_0xbb10('0xb2')][_0xbb10('0xb3')]({'attributes':['enableEmailPreview'],'raw':!![]})[_0xbb10('0x1e')](function(_0xaede56){var _0x5642c3=_0xaede56[_0xbb10('0xb4')];_0x38d369['forEach'](function(_0x34cec7){_0x57d5a1[_0xbb10('0x28')](updateMailInteraction(_0x34cec7,_0x23dc18,_0x5cc9d7,_0x5642c3));});return BPromise['all'](_0x57d5a1);});});});})[_0xbb10('0x1e')](function(_0x28cc74){_0x2b5352['rows']=_0x28cc74;return _0x2b5352;})['then'](respondWithFilteredResult(_0x10202c,_0x3c8d7d))[_0xbb10('0x2e')](handleError(_0x10202c,null));};exports[_0xbb10('0xb5')]=function(_0x3e0e34,_0x3299bc){var _0x3ceb77={'raw':![],'where':{'id':_0x3e0e34[_0xbb10('0xb6')]['id']}},_0x4c3bdc={};_0x4c3bdc[_0xbb10('0x33')]=_[_0xbb10('0x35')](db['MailInteraction'][_0xbb10('0xb7')]);_0x4c3bdc[_0xbb10('0x34')]=_[_0xbb10('0x35')](_0x3e0e34[_0xbb10('0x34')]);_0x4c3bdc[_0xbb10('0x36')]=_[_0xbb10('0x37')](_0x4c3bdc[_0xbb10('0x33')],_0x4c3bdc[_0xbb10('0x34')]);_0x3ceb77[_0xbb10('0x39')]=_['intersection'](_0x4c3bdc['model'],qs[_0xbb10('0x38')](_0x3e0e34[_0xbb10('0x34')][_0xbb10('0x38')]));_0x3ceb77[_0xbb10('0x39')]=_0x3ceb77[_0xbb10('0x39')][_0xbb10('0x55')]?_0x3ceb77[_0xbb10('0x39')]:_0x4c3bdc[_0xbb10('0x33')];if(_0x3e0e34[_0xbb10('0x34')][_0xbb10('0xb8')]){_0x3ceb77[_0xbb10('0xb9')]=[{'all':!![]}];}_0x3ceb77=_[_0xbb10('0xba')]({},_0x3ceb77,_0x3e0e34[_0xbb10('0xbb')]);return db['MailInteraction'][_0xbb10('0x56')](_0x3ceb77)[_0xbb10('0x1e')](handleEntityNotFound(_0x3299bc,null))[_0xbb10('0x1e')](respondWithResult(_0x3299bc,null))[_0xbb10('0x2e')](handleError(_0x3299bc,null));};exports[_0xbb10('0xbc')]=function(_0xd9284e,_0x4258fc){return db[_0xbb10('0x31')][_0xbb10('0xbc')](_0xd9284e[_0xbb10('0xbd')],{})[_0xbb10('0x1e')](respondWithResult(_0x4258fc,0xc9))['catch'](handleError(_0x4258fc,null));};exports[_0xbb10('0x1c')]=function(_0x5e1ac5,_0x3faaca){if(_0x5e1ac5[_0xbb10('0xbd')]['id']){delete _0x5e1ac5[_0xbb10('0xbd')]['id'];}return db[_0xbb10('0x31')][_0xbb10('0x56')]({'where':{'id':_0x5e1ac5[_0xbb10('0xb6')]['id']}})['then'](handleEntityNotFound(_0x3faaca,null))[_0xbb10('0x1e')](saveUpdates(_0x5e1ac5['body'],null))[_0xbb10('0x1e')](respondWithResult(_0x3faaca,null))[_0xbb10('0x2e')](handleError(_0x3faaca,null));};exports[_0xbb10('0x1d')]=function(_0x576bb6,_0x2b652c){return db[_0xbb10('0x31')][_0xbb10('0x56')]({'where':{'id':_0x576bb6[_0xbb10('0xb6')]['id']}})[_0xbb10('0x1e')](handleEntityNotFound(_0x2b652c,null))[_0xbb10('0x1e')](removeEntity(_0x2b652c,null))[_0xbb10('0x2e')](handleError(_0x2b652c,null));};exports[_0xbb10('0xbe')]=function(_0x589565,_0x3696b3){return db['MailInteraction'][_0xbb10('0xbe')]()[_0xbb10('0x1e')](respondWithResult(_0x3696b3,null))[_0xbb10('0x2e')](handleError(_0x3696b3,null));};exports[_0xbb10('0xbf')]=function(_0x44c229,_0x40271f){return db[_0xbb10('0x29')]['find']({'where':{'id':_0x44c229[_0xbb10('0xb6')]['id']}})['then'](handleEntityNotFound(_0x40271f,null))['then'](function(_0x1513e0){if(_0x1513e0){return _0x1513e0[_0xbb10('0xbf')](_0x44c229[_0xbb10('0xbd')][_0xbb10('0xc0')],_[_0xbb10('0xc1')](_0x44c229[_0xbb10('0xbd')],['ids','id'])||{});}})[_0xbb10('0x1e')](respondWithResult(_0x40271f,null))[_0xbb10('0x2e')](handleError(_0x40271f,null));};exports[_0xbb10('0xc2')]=function(_0xb1b7c8,_0x136520){var _0x28127c={'raw':![],'where':{}};var _0x528aff={};var _0xdfdc42={'count':0x0,'rows':[]};return db[_0xbb10('0x31')][_0xbb10('0xb3')]({'where':{'id':_0xb1b7c8[_0xbb10('0xb6')]['id']}})[_0xbb10('0x1e')](handleEntityNotFound(_0x136520,null))[_0xbb10('0x1e')](function(_0x2764e1){if(_0x2764e1){_0x528aff['model']=_[_0xbb10('0x35')](db['MailMessage'][_0xbb10('0xb7')]);_0x528aff['query']=_['keys'](_0xb1b7c8[_0xbb10('0x34')]);_0x528aff[_0xbb10('0x36')]=_[_0xbb10('0x37')](_0x528aff[_0xbb10('0x33')],_0x528aff[_0xbb10('0x34')]);_0x28127c['attributes']=_[_0xbb10('0x37')](_0x528aff['model'],qs['fields'](_0xb1b7c8['query'][_0xbb10('0x38')]));_0x28127c[_0xbb10('0x39')]=_0x28127c[_0xbb10('0x39')][_0xbb10('0x55')]?_0x28127c[_0xbb10('0x39')]:_0x528aff['model'];if(!_0xb1b7c8[_0xbb10('0x34')][_0xbb10('0x3a')](_0xbb10('0xc3'))){_0x28127c[_0xbb10('0x18')]=qs[_0xbb10('0x18')](_0xb1b7c8[_0xbb10('0x34')][_0xbb10('0x18')]);_0x28127c['offset']=qs['offset'](_0xb1b7c8['query'][_0xbb10('0x16')]);}_0x28127c[_0xbb10('0x3b')]=qs[_0xbb10('0x3c')](_0xb1b7c8[_0xbb10('0x34')][_0xbb10('0x3c')]);_0x28127c[_0xbb10('0x3d')]=qs[_0xbb10('0x36')](_[_0xbb10('0xc4')](_0xb1b7c8[_0xbb10('0x34')],_0x528aff[_0xbb10('0x36')]));_0x28127c['where']['MailInteractionId']=_0x2764e1['id'];if(_0xb1b7c8['query'][_0xbb10('0x7c')]){_0x28127c[_0xbb10('0x3d')]=_[_0xbb10('0xba')](_0x28127c['where'],{'$or':_[_0xbb10('0x30')](_0x28127c[_0xbb10('0x39')],function(_0x2c638d){var _0x290280={};_0x290280[_0x2c638d]={'$like':'%'+_0xb1b7c8[_0xbb10('0x34')][_0xbb10('0x7c')]+'%'};return _0x290280;})});}if(_0xb1b7c8['query']['$gte']){var _0x356660=_0xb1b7c8['query'][_0xbb10('0xc5')][_0xbb10('0x26')](',');var _0x152ca9={};_0x152ca9[_0x356660[0x0]]={'$gte':moment(_0x356660[0x1])[_0xbb10('0xc6')](_0xbb10('0xc7'))};_0x28127c[_0xbb10('0x3d')]=_[_0xbb10('0xba')](_0x28127c[_0xbb10('0x3d')],_0x152ca9);}_0x28127c=_[_0xbb10('0xba')]({},_0x28127c,_0xb1b7c8[_0xbb10('0xbb')]);return db['MailMessage'][_0xbb10('0x19')]({'where':_0x28127c['where']})[_0xbb10('0x1e')](function(_0x5547fa){_0xdfdc42[_0xbb10('0x19')]=_0x5547fa;if(_0xb1b7c8[_0xbb10('0x34')][_0xbb10('0xb8')]){_0x28127c[_0xbb10('0xb9')]=[{'all':!![]}];}return db['MailMessage'][_0xbb10('0xc8')](_0x28127c);})['then'](function(_0xfe1154){if(_0xb1b7c8[_0xbb10('0x34')][_0xbb10('0xc9')]==='true'){for(var _0x298167=0x0;_0x298167<_0xfe1154[_0xbb10('0x55')];_0x298167++){_0xfe1154[_0x298167][_0xbb10('0xbd')]=juice(_0xfe1154[_0x298167][_0xbb10('0xbd')]);}}_0xdfdc42[_0xbb10('0xca')]=_0xfe1154;return _0xdfdc42;});}})[_0xbb10('0x1e')](respondWithFilteredResult(_0x136520,_0x28127c))['catch'](handleError(_0x136520,null));};exports['addTags']=function(_0x522a88,_0x26a752){return db['MailInteraction'][_0xbb10('0x56')]({'where':{'id':_0x522a88['params']['id']}})[_0xbb10('0x1e')](handleEntityNotFound(_0x26a752,null))[_0xbb10('0x1e')](function(_0x385ad3){if(_0x385ad3){return _0x385ad3['setTags'](_0x522a88['body'][_0xbb10('0xc0')],_[_0xbb10('0xc1')](_0x522a88[_0xbb10('0xbd')],['ids','id'])||{})[_0xbb10('0xcb')](function(){return db[_0xbb10('0x65')][_0xbb10('0xc8')]({'attributes':['id','name','color'],'where':{'id':_0x522a88['body'][_0xbb10('0xc0')]}});})['then'](function(_0x3dfbcd){socket[_0xbb10('0xcc')](_0xbb10('0xcd'),{'id':Number(_0x522a88[_0xbb10('0xb6')]['id']),'tags':_0x3dfbcd||[]});return{'id':Number(_0x522a88[_0xbb10('0xb6')]['id']),'tags':_0x3dfbcd||[]};});}})[_0xbb10('0x1e')](respondWithResult(_0x26a752,null))[_0xbb10('0x2e')](handleError(_0x26a752,null));};exports[_0xbb10('0xce')]=function(_0x2746eb,_0x431792){return db[_0xbb10('0x31')]['find']({'where':{'id':_0x2746eb[_0xbb10('0xb6')]['id']}})[_0xbb10('0x1e')](handleEntityNotFound(_0x431792,null))['then'](function(_0x14ef50){if(_0x14ef50){return _0x14ef50['removeTags'](_0x2746eb['query'][_0xbb10('0xc0')]);}})[_0xbb10('0x1e')](respondWithStatusCode(_0x431792,null))[_0xbb10('0x2e')](handleError(_0x431792,null));};exports[_0xbb10('0xcf')]=function(_0x99c4,_0x4ca4ce){var _0x161171=moment()[_0xbb10('0xd0')]()['toString']();var _0xa45726=path[_0xbb10('0xd1')](config['root'],_0xbb10('0xd2'),'files',_0xbb10('0xd3'));var _0x8e8049=path[_0xbb10('0xd1')](config[_0xbb10('0xd4')],_0xbb10('0xd2'),_0xbb10('0xd5'),_0xbb10('0xd6'));var _0x56f902=path[_0xbb10('0xd1')](_0xa45726,_0x161171);var _0x4720a1=util[_0xbb10('0xc6')](_0xbb10('0xd7'),_0x99c4[_0xbb10('0xb6')]['id'],_0x161171);var _0x1301e3=path['join'](_0xa45726,_0x4720a1);var _0x550301=[];if(_0x99c4['query'][_0xbb10('0xd6')]){_0x550301[_0xbb10('0x28')]({'model':db[_0xbb10('0xd8')],'as':_0xbb10('0xd9'),'raw':!![]});}var _0x57700b=[{'model':db[_0xbb10('0x29')],'as':_0xbb10('0xda'),'attributes':['id',_0xbb10('0xbd'),'from','to','cc','bcc',_0xbb10('0xdb'),'createdAt'],'where':{'secret':![]},'order':qs[_0xbb10('0x3c')]('id'),'include':_0x550301}];return db[_0xbb10('0x31')][_0xbb10('0x56')]({'where':{'id':_0x99c4[_0xbb10('0xb6')]['id']},'include':_0x57700b})[_0xbb10('0x1e')](handleEntityNotFound(_0x4ca4ce,null))[_0xbb10('0x1e')](function(_0x1fe250){if(_0x1fe250&&_0x1fe250['Messages']){var _0x424371=_0x1fe250[_0xbb10('0xdc')]({'plain':!![]});fs['mkdirSync'](_0x56f902);return BPromise[_0xbb10('0xdd')](_0x424371[_0xbb10('0xda')],function(_0x32f261,_0x5b11a2){var _0x4b490a={'from':_0x32f261['from'],'to':_0x32f261['to'],'subject':_0x32f261[_0xbb10('0xdb')],'html':_0x32f261[_0xbb10('0xbd')],'headers':{'Date':moment(_0x32f261['createdAt'])[_0xbb10('0xc6')](_0xbb10('0xde'))},'attachments':[]};if(_0x32f261['cc']){_0x4b490a[_0xbb10('0xdf')]['Cc']=_0x32f261['cc'];}if(_0x32f261[_0xbb10('0xe0')]){_0x4b490a[_0xbb10('0xdf')][_0xbb10('0xe1')]=_0x32f261[_0xbb10('0xe0')];}return new BPromise(function(_0x48f0eb,_0x304603){if(_0x32f261['Attachments']){for(var _0x5a7c4e=0x0;_0x5a7c4e<_0x32f261['Attachments'][_0xbb10('0x55')];_0x5a7c4e++){var _0x572d73=_0x32f261['Attachments'][_0x5a7c4e];var _0x1f09f1=path['join'](_0x8e8049,_0x572d73[_0xbb10('0xe2')]);if(fs[_0xbb10('0xe3')](_0x1f09f1)){_0x4b490a[_0xbb10('0xd6')]['push']({'name':_0x572d73['name'],'contentType':_0x572d73[_0xbb10('0x63')],'data':fs['readFileSync'](_0x1f09f1)});}}}emlformat[_0xbb10('0xe4')](_0x4b490a,function(_0x211172,_0x589ecb){if(_0x211172)return _0x304603(_0x211172);fs['writeFileSync'](path[_0xbb10('0xd1')](_0x56f902,util[_0xbb10('0xc6')](_0xbb10('0xe5'),_0x5b11a2)),_0x589ecb);return _0x48f0eb(_0x589ecb);});});})['then'](function(){return new BPromise(function(_0x4f4aa8,_0x426a4f){zipdir(_0x56f902,{'saveTo':_0x1301e3},function(_0x22f153,_0x4d47cc){if(_0x22f153)return _0x426a4f(_0x22f153);return _0x4f4aa8(_0x4d47cc);});})[_0xbb10('0x1e')](function(){return new BPromise(function(_0x203e5a,_0xe88e90){rimraf(_0x56f902,function(_0x4845b5){if(_0x4845b5)_0xe88e90(_0x4845b5);return _0x203e5a();});});})[_0xbb10('0x1e')](function(){return _0x4ca4ce[_0xbb10('0xcf')](_0x1301e3,_0x4720a1,function(_0x166f4f){if(!_0x166f4f)fs[_0xbb10('0xe6')](_0x1301e3);});});});}else{return _0x4ca4ce[_0xbb10('0x12')](0xc8);}})[_0xbb10('0x2e')](handleError(_0x4ca4ce,null));};
\ No newline at end of file
+var _0xa9e0=['o.internal','Owner.internal','GROUP_CONCAT(DISTINCT\x20t.id)','groupBy','Setting','enableEmailPreview','all','rows','show','params','includeAll','include','options','create','body','addMessage','ids','omit','getMessages','nolimit','MailInteractionId','format','YYYY-MM-DD\x20HH:mm:ss','findAll','inlineCss','true','addTags','setTags','Tag','mailInteractionTags:save','download','join','root','server','tmp','attachments','Attachment','Attachments','subject','Messages','get','mkdirSync','each','ddd,\x20DD\x20MMM\x20YYYY\x20HH:mm:ss\x20ZZ','headers','bcc','Bcc','basename','existsSync','readFileSync','writeFileSync','message%d.eml','unlinkSync','eml-format','rimraf','zip-dir','util','lodash','squel','juice','ioredis','../../components/parsers/qs','../../config/logger','api','../../config/environment','defaults','socket.io-emitter','redis','./mailInteraction.socket','register','status','json','offset','undefined','limit','count','set','Content-Range','update','then','destroy','end','sendStatus','error','stack','name','send','Users','fullname','Tags','split','forEach','push','TagIds','MailMessage','findOne','out','-id','plainBody','lastMsgText','trimStart','catch','index','MailInteraction','rawAttributes','fieldName','key','model','map','query','intersection','attributes','fields','length','hasOwnProperty','sort','filters','pick','select','field','color','from','tools_tags','u.id','u.fullname','ui.MailInteractionId','user_has_mail_interactions','left_join','users','u.id\x20=\x20ui.UserId','mail_interactions','cm_contacts','c.id\x20=\x20i.ContactId\x20AND\x20c.deletedAt\x20IS\x20NULL','o.id\x20=\x20i.UserId','a.id\x20=\x20i.MailAccountId','mail_messages','me.MailInteractionId\x20=\x20i.id','it.MailInteractionId\x20=\x20i.id','t.id\x20=\x20it.TagId','expr','search','parseSearch','sqlOperator','conditions','find','unreadMessages','value','having','`\x20>\x200','Contact','$substring','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','type','text','start','CONCAT(\x27,\x27,\x20`TagIds`,\x20\x27,\x27)\x20LIKE\x20?','union','User','operator','CONCAT_WS(\x27\x20\x27,\x20o.name,\x20o.fullname)\x20LIKE\x20?','UserId','buildExpression','keys','some','compact','where','i.MailAccountId\x20IN\x20?','concat','createdAt','parse','$gte','i.createdAt\x20BETWEEN\x20?\x20AND\x20?','null','\x20IS\x20NULL','\x20=\x20?','read','`unreadMessages`\x20=\x200','`unreadMessages`\x20>\x200','isArray','tag','filter','replace','isNumeric','i.id\x20LIKE\x20?','isEmail','c.email\x20LIKE\x20?','MATCH\x20(i.to,\x20i.subject)\x20AGAINST\x20(?\x20IN\x20BOOLEAN\x20MODE)','getFullTextValue','group','QueryTypes','SELECT','clone','i.id','order','contactName','DESC','t.id\x20IN\x20?','resolve','MailAccountId','i.MailAccountId\x20IS\x20NOT\x20NULL','user','role','agent','getMailAccounts','i.MailAccountId\x20IS\x20NULL','sequelize','toString','merge','SUM(me.read\x20=\x200\x20AND\x20me.direction\x20=\x20\x27in\x27)','a.key','Account.key','Account.mandatoryDisposition','i.createdAt','i.updatedAt','i.closed','i.closedAt','i.attach','i.lastMsgDirection','i.disposition','i.secondDisposition','i.thirdDisposition','i.substatus','i.to','i.MailAccountId','Contact.firstName','c.lastName','Contact.lastName','c.email','Contact.email','Contact.phone','c.mobile','Contact.mobile','c.fax','Contact.fax','o.fullname','Owner.fullname'];(function(_0xdc06ca,_0x3950c5){var _0x4fea82=function(_0x40b470){while(--_0x40b470){_0xdc06ca['push'](_0xdc06ca['shift']());}};_0x4fea82(++_0x3950c5);}(_0xa9e0,0x123));var _0x0a9e=function(_0x2f5ac5,_0x1ee939){_0x2f5ac5=_0x2f5ac5-0x0;var _0x37c9a8=_0xa9e0[_0x2f5ac5];return _0x37c9a8;};'use strict';var emlformat=require(_0x0a9e('0x0'));var rimraf=require(_0x0a9e('0x1'));var zipdir=require(_0x0a9e('0x2'));var moment=require('moment');var BPromise=require('bluebird');var util=require(_0x0a9e('0x3'));var path=require('path');var fs=require('fs');var _=require(_0x0a9e('0x4'));var squel=require(_0x0a9e('0x5'));var juice=require(_0x0a9e('0x6'));var Redis=require(_0x0a9e('0x7'));var qs=require(_0x0a9e('0x8'));var as=require('../../components/parsers/advancedSearch');var logger=require(_0x0a9e('0x9'))(_0x0a9e('0xa'));var config=require(_0x0a9e('0xb'));var db=require('../../mysqldb')['db'];config['redis']=_[_0x0a9e('0xc')](config['redis'],{'host':'localhost','port':0x18eb});var socket=require(_0x0a9e('0xd'))(new Redis(config[_0x0a9e('0xe')]));require(_0x0a9e('0xf'))[_0x0a9e('0x10')](socket);function respondWithStatusCode(_0xfeb75b,_0xbd1168){_0xbd1168=_0xbd1168||0xcc;return function(_0x4a4c56){if(_0x4a4c56){return _0xfeb75b['sendStatus'](_0xbd1168);}return _0xfeb75b['status'](_0xbd1168)['end']();};}function respondWithResult(_0x273d4d,_0x36471c){_0x36471c=_0x36471c||0xc8;return function(_0xd5b662){if(_0xd5b662){return _0x273d4d[_0x0a9e('0x11')](_0x36471c)[_0x0a9e('0x12')](_0xd5b662);}};}function respondWithFilteredResult(_0x69aeb7,_0x5db4b0){return function(_0x4283ce){if(_0x4283ce){var _0x239b12=typeof _0x5db4b0[_0x0a9e('0x13')]===_0x0a9e('0x14')&&typeof _0x5db4b0[_0x0a9e('0x15')]===_0x0a9e('0x14');var _0x52a03d=_0x4283ce[_0x0a9e('0x16')];var _0x5d0880=_0x239b12?0x0:_0x5db4b0[_0x0a9e('0x13')];var _0x519dfd=_0x239b12?_0x4283ce[_0x0a9e('0x16')]:_0x5db4b0[_0x0a9e('0x13')]+_0x5db4b0['limit'];var _0x225616;if(_0x519dfd>=_0x52a03d){_0x519dfd=_0x52a03d;_0x225616=0xc8;}else{_0x225616=0xce;}_0x69aeb7['status'](_0x225616);return _0x69aeb7[_0x0a9e('0x17')](_0x0a9e('0x18'),_0x5d0880+'-'+_0x519dfd+'/'+_0x52a03d)[_0x0a9e('0x12')](_0x4283ce);}return null;};}function saveUpdates(_0x205fd6){return function(_0x31b1ca){if(_0x31b1ca){return _0x31b1ca[_0x0a9e('0x19')](_0x205fd6)[_0x0a9e('0x1a')](function(_0x20559e){return _0x20559e;});}return null;};}function removeEntity(_0x1314ae){return function(_0x112016){if(_0x112016){return _0x112016[_0x0a9e('0x1b')]()[_0x0a9e('0x1a')](function(){_0x1314ae['status'](0xcc)[_0x0a9e('0x1c')]();});}};}function handleEntityNotFound(_0x155cce){return function(_0x53682f){if(!_0x53682f){_0x155cce[_0x0a9e('0x1d')](0x194);}return _0x53682f;};}function handleError(_0x5a09ef,_0x588269){_0x588269=_0x588269||0x1f4;return function(_0x3a02e1){logger[_0x0a9e('0x1e')](_0x3a02e1[_0x0a9e('0x1f')]);if(_0x3a02e1[_0x0a9e('0x20')]){delete _0x3a02e1['name'];}_0x5a09ef[_0x0a9e('0x11')](_0x588269)[_0x0a9e('0x21')](_0x3a02e1);};}function getInteractionUsers(_0x3b45bc,_0x4d00e6){return new BPromise(function(_0x370d86,_0x42ac8f){try{if(_0x4d00e6[_0x3b45bc['id']]){_0x3b45bc[_0x0a9e('0x22')]=_['map'](_0x4d00e6[_0x3b45bc['id']],function(_0x59181e){return{'id':_0x59181e['id'],'fullname':_0x59181e[_0x0a9e('0x23')]};});}}catch(_0x3a8e58){_0x42ac8f(_0x3a8e58);}_0x370d86(_0x3b45bc);});}function getInteractionTags(_0x40c424,_0x33161b){return new BPromise(function(_0x526cf3,_0x384319){try{if(_0x40c424['TagIds']){_0x40c424[_0x0a9e('0x24')]=[];_0x40c424['TagIds'][_0x0a9e('0x25')](',')[_0x0a9e('0x26')](function(_0x25fba9){_0x40c424[_0x0a9e('0x24')][_0x0a9e('0x27')](_0x33161b[_0x25fba9]);});}delete _0x40c424[_0x0a9e('0x28')];}catch(_0x11c3b6){_0x384319(_0x11c3b6);}_0x526cf3(_0x40c424);});}function getLastMessageText(_0x14de77){return new BPromise(function(_0x5a101a,_0x3652a7){return db[_0x0a9e('0x29')][_0x0a9e('0x2a')]({'where':{'$and':[{'MailInteractionId':_0x14de77['id']},{'$or':[{'direction':'in'},{'$and':[{'direction':_0x0a9e('0x2b')},{'secret':![]},{'UserId':{'$ne':null}}]}]}]},'attributes':['plainBody'],'order':_0x0a9e('0x2c'),'raw':!![]})[_0x0a9e('0x1a')](function(_0x1843b2){if(_0x1843b2&&_0x1843b2[_0x0a9e('0x2d')]){_0x14de77[_0x0a9e('0x2e')]=_[_0x0a9e('0x2f')](_0x1843b2[_0x0a9e('0x2d')]);}_0x5a101a(_0x14de77);})[_0x0a9e('0x30')](function(_0x1dbde2){_0x3652a7(_0x1dbde2);});});}function updateMailInteraction(_0x540530,_0x426950,_0x5d1e0e,_0x2407f9){return new BPromise(function(_0x3ae878,_0x1122db){return getInteractionUsers(_0x540530,_0x5d1e0e)[_0x0a9e('0x1a')](function(_0x25ce3a){return getInteractionTags(_0x25ce3a,_0x426950);})['then'](function(_0x66c1d2){if(_0x2407f9){_0x3ae878(getLastMessageText(_0x66c1d2));}else{_0x3ae878(_0x66c1d2);}})[_0x0a9e('0x30')](function(_0x40cb85){_0x1122db(_0x40cb85);});});}exports[_0x0a9e('0x31')]=function(_0x2b45ea,_0x409319){var _0x332d35={},_0x39e565={},_0x5583a4={'count':0x0,'rows':[]};var _0x44295a=_['map'](db[_0x0a9e('0x32')][_0x0a9e('0x33')],function(_0x2b7e7f){return{'name':_0x2b7e7f[_0x0a9e('0x34')],'type':_0x2b7e7f['type'][_0x0a9e('0x35')]};});_0x39e565[_0x0a9e('0x36')]=_[_0x0a9e('0x37')](_0x44295a,_0x0a9e('0x20'));_0x39e565['query']=_['keys'](_0x2b45ea[_0x0a9e('0x38')]);_0x39e565['filters']=_[_0x0a9e('0x39')](_0x39e565[_0x0a9e('0x36')],_0x39e565[_0x0a9e('0x38')]);_0x332d35[_0x0a9e('0x3a')]=_['intersection'](_0x39e565[_0x0a9e('0x36')],qs[_0x0a9e('0x3b')](_0x2b45ea[_0x0a9e('0x38')]['fields']));_0x332d35[_0x0a9e('0x3a')]=_0x332d35[_0x0a9e('0x3a')][_0x0a9e('0x3c')]?_0x332d35['attributes']:_0x39e565['model'];if(!_0x2b45ea[_0x0a9e('0x38')][_0x0a9e('0x3d')]('nolimit')){_0x332d35[_0x0a9e('0x15')]=qs[_0x0a9e('0x15')](_0x2b45ea[_0x0a9e('0x38')][_0x0a9e('0x15')]);_0x332d35['offset']=qs['offset'](_0x2b45ea[_0x0a9e('0x38')][_0x0a9e('0x13')]);}_0x332d35['order']=qs[_0x0a9e('0x3e')](_0x2b45ea[_0x0a9e('0x38')][_0x0a9e('0x3e')]);_0x332d35['where']=qs[_0x0a9e('0x3f')](_[_0x0a9e('0x40')](_0x2b45ea[_0x0a9e('0x38')],_0x39e565[_0x0a9e('0x3f')]),_0x44295a);var _0x13cb1f=[];var _0xeaa5e5=squel[_0x0a9e('0x41')]()[_0x0a9e('0x42')]('id')[_0x0a9e('0x42')](_0x0a9e('0x20'))[_0x0a9e('0x42')](_0x0a9e('0x43'))[_0x0a9e('0x44')](_0x0a9e('0x45'));var _0x37f6cc=squel['select']()['field'](_0x0a9e('0x46'))[_0x0a9e('0x42')](_0x0a9e('0x47'))[_0x0a9e('0x42')](_0x0a9e('0x48'))[_0x0a9e('0x44')](_0x0a9e('0x49'),'ui')[_0x0a9e('0x4a')](_0x0a9e('0x4b'),'u',_0x0a9e('0x4c'));var _0x2c2cb0=squel[_0x0a9e('0x41')]()['from'](_0x0a9e('0x4d'),'i')[_0x0a9e('0x4a')](_0x0a9e('0x4e'),'c',_0x0a9e('0x4f'))[_0x0a9e('0x4a')](_0x0a9e('0x4b'),'o',_0x0a9e('0x50'))[_0x0a9e('0x4a')]('mail_accounts','a',_0x0a9e('0x51'))['left_join'](_0x0a9e('0x52'),'me',_0x0a9e('0x53'))[_0x0a9e('0x4a')]('mail_interaction_has_tags','it',_0x0a9e('0x54'))[_0x0a9e('0x4a')](_0x0a9e('0x45'),'t',_0x0a9e('0x55'));var _0x45c845=squel[_0x0a9e('0x56')]();var _0x45bf7f=[];var _0x5bbcde=squel[_0x0a9e('0x56')]();var _0x1bde3c;if(_0x2b45ea[_0x0a9e('0x38')][_0x0a9e('0x57')]){_0x1bde3c=as[_0x0a9e('0x58')](_0x2b45ea[_0x0a9e('0x38')][_0x0a9e('0x57')]);var _0x19383e=_0x1bde3c[_0x0a9e('0x59')];for(var _0x58a5c2=0x0;_0x58a5c2<_0x1bde3c[_0x0a9e('0x5a')][_0x0a9e('0x3c')];_0x58a5c2++){var _0x4f7240=_0x1bde3c['conditions'][_0x58a5c2];var _0x5ddf84='i';var _0x1adfee=_[_0x0a9e('0x5b')](_0x44295a,[_0x0a9e('0x20'),_0x4f7240[_0x0a9e('0x42')]]);if(!_0x1adfee){switch(_0x4f7240[_0x0a9e('0x42')]){case _0x0a9e('0x5c'):if(_0x4f7240[_0x0a9e('0x5d')]==0x1){_0x2c2cb0[_0x0a9e('0x5e')]('`'+_0x4f7240['field']+'`\x20=\x200');}else{_0x2c2cb0['having']('`'+_0x4f7240[_0x0a9e('0x42')]+_0x0a9e('0x5f'));}break;case _0x0a9e('0x60'):if(_0x4f7240['operator']===_0x0a9e('0x61')){if(_0x4f7240[_0x0a9e('0x5d')]['split']('\x20')['length']>0x1){_0x45c845[_0x19383e](_0x0a9e('0x62'),qs['getFullTextValue'](_0x4f7240[_0x0a9e('0x5d')]),null);}else{var _0x4c3845='%'+_0x4f7240[_0x0a9e('0x5d')]+'%';_0x45c845[_0x19383e](_0x0a9e('0x63'),_0x4c3845,_0x4c3845,_0x4c3845);}}else{_0x1adfee=_[_0x0a9e('0x5b')](_0x44295a,['name',_0x0a9e('0x64')]);_0x4f7240[_0x0a9e('0x42')]='ContactId';_0x2244d6=as['buildExpression'](_0x5ddf84,_0x1adfee[_0x0a9e('0x65')],_0x4f7240);_0x45c845[_0x19383e](_0x2244d6[_0x0a9e('0x66')],_0x2244d6['value'][_0x0a9e('0x67')],_0x2244d6['value'][_0x0a9e('0x1c')]);}break;case'Tag':var _0xe22ccc=_0x4f7240['value']['split'](',')['map'](function(_0x2da03c){return Number(_0x2da03c);});_0xe22ccc['forEach'](function(_0x2f7092){_0x5bbcde['or'](_0x0a9e('0x68'),'%,'+_0x2f7092+',%');});_0x45bf7f=_[_0x0a9e('0x69')](_0x45bf7f,_0xe22ccc);break;case _0x0a9e('0x6a'):if(_0x4f7240[_0x0a9e('0x6b')]===_0x0a9e('0x61')){_0x45c845[_0x19383e](_0x0a9e('0x6c'),'%'+_0x4f7240[_0x0a9e('0x5d')]+'%',null);}else{_0x1adfee=_['find'](_0x44295a,[_0x0a9e('0x20'),_0x0a9e('0x6d')]);_0x4f7240[_0x0a9e('0x42')]=_0x0a9e('0x6d');_0x2244d6=as[_0x0a9e('0x6e')](_0x5ddf84,_0x1adfee[_0x0a9e('0x65')],_0x4f7240);_0x45c845[_0x19383e](_0x2244d6['text'],_0x2244d6[_0x0a9e('0x5d')][_0x0a9e('0x67')],_0x2244d6['value'][_0x0a9e('0x1c')]);}break;case'plainBody':_0x2244d6=as[_0x0a9e('0x6e')]('me',null,_0x4f7240);_0x45c845[_0x19383e](_0x2244d6['text'],_0x2244d6['value']['start'],_0x2244d6[_0x0a9e('0x5d')]['end']);break;}}else{var _0x2244d6=as[_0x0a9e('0x6e')](_0x5ddf84,_0x1adfee[_0x0a9e('0x65')],_0x4f7240);_0x45c845[_0x19383e](_0x2244d6[_0x0a9e('0x66')],_0x2244d6[_0x0a9e('0x5d')][_0x0a9e('0x67')],_0x2244d6['value'][_0x0a9e('0x1c')]);}}}else{var _0x5854cc=_(_0x2b45ea[_0x0a9e('0x38')])[_0x0a9e('0x6f')]()[_0x0a9e('0x37')](function(_0x5adf8f){return _[_0x0a9e('0x70')](_0x44295a,[_0x0a9e('0x20'),_0x5adf8f])?_0x5adf8f:undefined;})[_0x0a9e('0x71')]()[_0x0a9e('0x5d')]();if(!_['isEmpty'](_0x5854cc)){_0x5854cc[_0x0a9e('0x26')](function(_0xe05a5a){if(_0xe05a5a==='MailAccountId'){_0x2c2cb0[_0x0a9e('0x72')](_0x0a9e('0x73'),[][_0x0a9e('0x74')](_0x2b45ea[_0x0a9e('0x38')][_0xe05a5a]));}else if(_0xe05a5a===_0x0a9e('0x75')){var _0x4d4a35=JSON[_0x0a9e('0x76')](_0x2b45ea[_0x0a9e('0x38')][_0xe05a5a])[_0x0a9e('0x77')];var _0x47bb43=JSON[_0x0a9e('0x76')](_0x2b45ea['query'][_0xe05a5a])['$lte'];_0x2c2cb0[_0x0a9e('0x72')](_0x0a9e('0x78'),_0x4d4a35,_0x47bb43);}else{if(_0x2b45ea[_0x0a9e('0x38')][_0xe05a5a]===_0x0a9e('0x79')){_0x2c2cb0[_0x0a9e('0x72')]('i.'+_0xe05a5a+_0x0a9e('0x7a'));}else{_0x2c2cb0[_0x0a9e('0x72')]('i.'+_0xe05a5a+_0x0a9e('0x7b'),_0x2b45ea[_0x0a9e('0x38')][_0xe05a5a]);}}});}if(_0x2b45ea[_0x0a9e('0x38')][_0x0a9e('0x7c')]){if(_0x2b45ea[_0x0a9e('0x38')][_0x0a9e('0x7c')]==0x1){_0x2c2cb0[_0x0a9e('0x5e')](_0x0a9e('0x7d'));}else{_0x2c2cb0[_0x0a9e('0x5e')](_0x0a9e('0x7e'));}}if(_0x2b45ea[_0x0a9e('0x38')]['tag']){_0x45bf7f=_[_0x0a9e('0x7f')](_0x2b45ea[_0x0a9e('0x38')][_0x0a9e('0x80')])?_0x2b45ea['query'][_0x0a9e('0x80')]:new Array(_0x2b45ea[_0x0a9e('0x38')]['tag']);_0x45bf7f[_0x0a9e('0x26')](function(_0x56e31e){_0x5bbcde['or'](_0x0a9e('0x68'),'%,'+_0x56e31e+',%');});}if(_0x2b45ea[_0x0a9e('0x38')][_0x0a9e('0x81')]){var _0x4a43a8=_0x2b45ea['query']['filter'][_0x0a9e('0x82')]('\x5c','\x5c\x5c')[_0x0a9e('0x82')](/'/g,'\x27\x27');if(qs[_0x0a9e('0x83')](_0x4a43a8)){_0x45c845['or'](_0x0a9e('0x84'),_0x4a43a8+'%');}else if(qs[_0x0a9e('0x85')](_0x4a43a8)){_0x45c845['or'](_0x0a9e('0x86'),_0x4a43a8+'%');}else{_0x45c845['or'](_0x0a9e('0x87'),qs[_0x0a9e('0x88')](_0x4a43a8))['or']('MATCH\x20(me.plainBody,\x20me.subject)\x20AGAINST\x20(?\x20IN\x20BOOLEAN\x20MODE)',qs[_0x0a9e('0x88')](_0x4a43a8));}}}_0x2c2cb0[_0x0a9e('0x72')](_0x45c845);_0x2c2cb0[_0x0a9e('0x89')]('i.id');var _0x2bdc44={'type':db['Sequelize'][_0x0a9e('0x8a')][_0x0a9e('0x8b')],'raw':!![]};var _0x4c46c1=_0x2c2cb0[_0x0a9e('0x8c')]();_0x4c46c1[_0x0a9e('0x42')](_0x0a9e('0x8d'));_0x4c46c1[_0x0a9e('0x42')]('SUM(me.read\x20=\x200\x20AND\x20me.direction\x20=\x20\x27in\x27)',_0x0a9e('0x5c'));if(_0x332d35[_0x0a9e('0x8e')]){_0x332d35[_0x0a9e('0x8e')][_0x0a9e('0x26')](function(_0x5b7fc3){var _0x109ccb=_0x5b7fc3[0x0]===_0x0a9e('0x8f')?_0x5b7fc3[0x0]:'i.'+_0x5b7fc3[0x0];_0x2c2cb0[_0x0a9e('0x8e')](_0x109ccb,_0x5b7fc3[0x1]===_0x0a9e('0x90')?![]:!![]);});}if(!_['isEmpty'](_0x45bf7f)){_0x2c2cb0[_0x0a9e('0x5e')](_0x5bbcde);_0x4c46c1[_0x0a9e('0x72')](_0x0a9e('0x91'),_0x45bf7f);}BPromise[_0x0a9e('0x92')]()[_0x0a9e('0x1a')](function(){if(!_0x1bde3c){if(_0x2b45ea[_0x0a9e('0x38')][_0x0a9e('0x93')])return;_0x4c46c1[_0x0a9e('0x72')](_0x0a9e('0x94'));_0x2c2cb0[_0x0a9e('0x72')](_0x0a9e('0x94'));return;}if(_0x2b45ea[_0x0a9e('0x95')][_0x0a9e('0x96')]!==_0x0a9e('0x97'))return;return _0x2b45ea['user'][_0x0a9e('0x98')]({'attributes':['id'],'raw':!![]})[_0x0a9e('0x1a')](function(_0xc599b3){if(_['isEmpty'](_0xc599b3)){_0x4c46c1[_0x0a9e('0x72')](_0x0a9e('0x99'));_0x2c2cb0[_0x0a9e('0x72')](_0x0a9e('0x99'));}else{_0x4c46c1['where']('i.MailAccountId\x20IN\x20?',_[_0x0a9e('0x37')](_0xc599b3,'id'));_0x2c2cb0[_0x0a9e('0x72')]('i.MailAccountId\x20IN\x20?',_[_0x0a9e('0x37')](_0xc599b3,'id'));}});})['then'](function(){if(_0x2b45ea[_0x0a9e('0x95')][_0x0a9e('0x96')]==='agent'&&!_0x1bde3c&&!_0x2b45ea[_0x0a9e('0x38')][_0x0a9e('0x93')])return[];return db[_0x0a9e('0x9a')][_0x0a9e('0x38')](_0x4c46c1[_0x0a9e('0x9b')](),_0x2bdc44);})[_0x0a9e('0x1a')](function(_0x444f1f){_0x5583a4['count']=_0x444f1f[_0x0a9e('0x3c')];if(_0x5583a4[_0x0a9e('0x16')]===0x0)return[];return db[_0x0a9e('0x9a')][_0x0a9e('0x38')](_0xeaa5e5['toString'](),_0x2bdc44)[_0x0a9e('0x1a')](function(_0xf0db1){_0x13cb1f=_['keyBy'](_0xf0db1,'id');_0x2bdc44=_[_0x0a9e('0x9c')](_0x2bdc44,{'model':db['MailInteraction'],'mapToModel':!![],'raw':!![],'nest':!![]});if(_0x2b45ea[_0x0a9e('0x38')][_0x0a9e('0x3b')]){_0x332d35[_0x0a9e('0x3a')][_0x0a9e('0x26')](function(_0x5af453){_0x2c2cb0['field']('i.'+_0x5af453);});}else{_0x2c2cb0[_0x0a9e('0x42')](_0x0a9e('0x9d'),_0x0a9e('0x5c'));_0x2c2cb0['field'](_0x0a9e('0x9e'),_0x0a9e('0x9f'));_0x2c2cb0['field']('a.mandatoryDisposition',_0x0a9e('0xa0'));_0x2c2cb0['field']('CASE\x20WHEN\x20i.to\x20IS\x20NOT\x20NULL\x20AND\x20i.to\x20<>\x20\x27\x27\x20AND\x20i.to\x20NOT\x20LIKE\x20(\x27%\x27\x20+\x20a.email\x20+\x20\x27%\x27)\x20THEN\x20SUBSTRING_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');_0x2c2cb0[_0x0a9e('0x42')](_0x0a9e('0x8d'));_0x2c2cb0[_0x0a9e('0x42')](_0x0a9e('0xa1'));_0x2c2cb0[_0x0a9e('0x42')](_0x0a9e('0xa2'));_0x2c2cb0['field'](_0x0a9e('0xa3'));_0x2c2cb0['field'](_0x0a9e('0xa4'));_0x2c2cb0[_0x0a9e('0x42')](_0x0a9e('0xa5'));_0x2c2cb0[_0x0a9e('0x42')]('i.lastMsgAt');_0x2c2cb0[_0x0a9e('0x42')](_0x0a9e('0xa6'));_0x2c2cb0[_0x0a9e('0x42')]('i.subject');_0x2c2cb0[_0x0a9e('0x42')](_0x0a9e('0xa7'));_0x2c2cb0[_0x0a9e('0x42')](_0x0a9e('0xa8'));_0x2c2cb0[_0x0a9e('0x42')](_0x0a9e('0xa9'));_0x2c2cb0[_0x0a9e('0x42')](_0x0a9e('0xaa'));_0x2c2cb0['field'](_0x0a9e('0xab'));_0x2c2cb0[_0x0a9e('0x42')]('i.ContactId');_0x2c2cb0[_0x0a9e('0x42')](_0x0a9e('0xac'));_0x2c2cb0[_0x0a9e('0x42')]('i.UserId');_0x2c2cb0[_0x0a9e('0x42')]('c.firstName',_0x0a9e('0xad'));_0x2c2cb0[_0x0a9e('0x42')](_0x0a9e('0xae'),_0x0a9e('0xaf'));_0x2c2cb0[_0x0a9e('0x42')](_0x0a9e('0xb0'),_0x0a9e('0xb1'));_0x2c2cb0[_0x0a9e('0x42')]('c.phone',_0x0a9e('0xb2'));_0x2c2cb0[_0x0a9e('0x42')](_0x0a9e('0xb3'),_0x0a9e('0xb4'));_0x2c2cb0[_0x0a9e('0x42')](_0x0a9e('0xb5'),_0x0a9e('0xb6'));_0x2c2cb0[_0x0a9e('0x42')](_0x0a9e('0xb7'),_0x0a9e('0xb8'));_0x2c2cb0[_0x0a9e('0x42')](_0x0a9e('0xb9'),_0x0a9e('0xba'));_0x2c2cb0['field'](_0x0a9e('0xbb'),_0x0a9e('0x28'));}if(_0x332d35[_0x0a9e('0x15')])_0x2c2cb0[_0x0a9e('0x15')](_0x332d35[_0x0a9e('0x15')]);if(_0x332d35['offset'])_0x2c2cb0[_0x0a9e('0x13')](_0x332d35[_0x0a9e('0x13')]);return db['sequelize'][_0x0a9e('0x38')](_0x2c2cb0['toString'](),_0x2bdc44);})[_0x0a9e('0x1a')](function(_0x27041d){if(_0x27041d[_0x0a9e('0x3c')]>0x0)_0x37f6cc[_0x0a9e('0x72')]('ui.MailInteractionId\x20IN\x20?',_[_0x0a9e('0x37')](_0x27041d,'id'));return db['sequelize'][_0x0a9e('0x38')](_0x37f6cc[_0x0a9e('0x9b')](),_0x2bdc44)['then'](function(_0x231c6a){var _0x63c9f7=_[_0x0a9e('0xbc')](_0x231c6a,'MailInteractionId');var _0x4c788f=[];return db[_0x0a9e('0xbd')][_0x0a9e('0x2a')]({'attributes':[_0x0a9e('0xbe')],'raw':!![]})[_0x0a9e('0x1a')](function(_0x3f2f40){var _0x2450a8=_0x3f2f40[_0x0a9e('0xbe')];_0x27041d[_0x0a9e('0x26')](function(_0x3f8124){_0x4c788f['push'](updateMailInteraction(_0x3f8124,_0x13cb1f,_0x63c9f7,_0x2450a8));});return BPromise[_0x0a9e('0xbf')](_0x4c788f);});});});})['then'](function(_0x287324){_0x5583a4[_0x0a9e('0xc0')]=_0x287324;return _0x5583a4;})[_0x0a9e('0x1a')](respondWithFilteredResult(_0x409319,_0x332d35))[_0x0a9e('0x30')](handleError(_0x409319,null));};exports[_0x0a9e('0xc1')]=function(_0x4e7273,_0x436313){var _0x4667bf={'raw':![],'where':{'id':_0x4e7273[_0x0a9e('0xc2')]['id']}},_0x2791c5={};_0x2791c5[_0x0a9e('0x36')]=_['keys'](db['MailInteraction'][_0x0a9e('0x33')]);_0x2791c5['query']=_[_0x0a9e('0x6f')](_0x4e7273[_0x0a9e('0x38')]);_0x2791c5[_0x0a9e('0x3f')]=_[_0x0a9e('0x39')](_0x2791c5[_0x0a9e('0x36')],_0x2791c5[_0x0a9e('0x38')]);_0x4667bf['attributes']=_['intersection'](_0x2791c5[_0x0a9e('0x36')],qs['fields'](_0x4e7273[_0x0a9e('0x38')]['fields']));_0x4667bf[_0x0a9e('0x3a')]=_0x4667bf['attributes']['length']?_0x4667bf[_0x0a9e('0x3a')]:_0x2791c5[_0x0a9e('0x36')];if(_0x4e7273['query'][_0x0a9e('0xc3')]){_0x4667bf[_0x0a9e('0xc4')]=[{'all':!![]}];}_0x4667bf=_[_0x0a9e('0x9c')]({},_0x4667bf,_0x4e7273[_0x0a9e('0xc5')]);return db[_0x0a9e('0x32')]['find'](_0x4667bf)['then'](handleEntityNotFound(_0x436313,null))[_0x0a9e('0x1a')](respondWithResult(_0x436313,null))[_0x0a9e('0x30')](handleError(_0x436313,null));};exports[_0x0a9e('0xc6')]=function(_0x24beb6,_0x59303b){return db['MailInteraction'][_0x0a9e('0xc6')](_0x24beb6[_0x0a9e('0xc7')],{})['then'](respondWithResult(_0x59303b,0xc9))[_0x0a9e('0x30')](handleError(_0x59303b,null));};exports[_0x0a9e('0x19')]=function(_0xcacabb,_0x2427d5){if(_0xcacabb[_0x0a9e('0xc7')]['id']){delete _0xcacabb[_0x0a9e('0xc7')]['id'];}return db[_0x0a9e('0x32')][_0x0a9e('0x5b')]({'where':{'id':_0xcacabb[_0x0a9e('0xc2')]['id']}})[_0x0a9e('0x1a')](handleEntityNotFound(_0x2427d5,null))['then'](saveUpdates(_0xcacabb[_0x0a9e('0xc7')],null))[_0x0a9e('0x1a')](respondWithResult(_0x2427d5,null))[_0x0a9e('0x30')](handleError(_0x2427d5,null));};exports[_0x0a9e('0x1b')]=function(_0x1d0b02,_0x547e37){return db['MailInteraction'][_0x0a9e('0x5b')]({'where':{'id':_0x1d0b02[_0x0a9e('0xc2')]['id']}})[_0x0a9e('0x1a')](handleEntityNotFound(_0x547e37,null))[_0x0a9e('0x1a')](removeEntity(_0x547e37,null))[_0x0a9e('0x30')](handleError(_0x547e37,null));};exports['describe']=function(_0x1339d0,_0x3c775a){return db[_0x0a9e('0x32')]['describe']()[_0x0a9e('0x1a')](respondWithResult(_0x3c775a,null))['catch'](handleError(_0x3c775a,null));};exports[_0x0a9e('0xc8')]=function(_0x4799d4,_0x25b745){return db[_0x0a9e('0x29')][_0x0a9e('0x5b')]({'where':{'id':_0x4799d4['params']['id']}})[_0x0a9e('0x1a')](handleEntityNotFound(_0x25b745,null))['then'](function(_0x4383da){if(_0x4383da){return _0x4383da[_0x0a9e('0xc8')](_0x4799d4[_0x0a9e('0xc7')][_0x0a9e('0xc9')],_[_0x0a9e('0xca')](_0x4799d4[_0x0a9e('0xc7')],[_0x0a9e('0xc9'),'id'])||{});}})[_0x0a9e('0x1a')](respondWithResult(_0x25b745,null))[_0x0a9e('0x30')](handleError(_0x25b745,null));};exports[_0x0a9e('0xcb')]=function(_0x4262d0,_0xc876d4){var _0x2415fe={'raw':![],'where':{}};var _0x399def={};var _0x98c62c={'count':0x0,'rows':[]};return db[_0x0a9e('0x32')]['findOne']({'where':{'id':_0x4262d0['params']['id']}})[_0x0a9e('0x1a')](handleEntityNotFound(_0xc876d4,null))['then'](function(_0x1d999b){if(_0x1d999b){_0x399def[_0x0a9e('0x36')]=_['keys'](db[_0x0a9e('0x29')][_0x0a9e('0x33')]);_0x399def[_0x0a9e('0x38')]=_[_0x0a9e('0x6f')](_0x4262d0['query']);_0x399def[_0x0a9e('0x3f')]=_[_0x0a9e('0x39')](_0x399def[_0x0a9e('0x36')],_0x399def[_0x0a9e('0x38')]);_0x2415fe['attributes']=_[_0x0a9e('0x39')](_0x399def[_0x0a9e('0x36')],qs[_0x0a9e('0x3b')](_0x4262d0['query'][_0x0a9e('0x3b')]));_0x2415fe[_0x0a9e('0x3a')]=_0x2415fe[_0x0a9e('0x3a')]['length']?_0x2415fe[_0x0a9e('0x3a')]:_0x399def[_0x0a9e('0x36')];if(!_0x4262d0[_0x0a9e('0x38')][_0x0a9e('0x3d')](_0x0a9e('0xcc'))){_0x2415fe['limit']=qs[_0x0a9e('0x15')](_0x4262d0[_0x0a9e('0x38')]['limit']);_0x2415fe[_0x0a9e('0x13')]=qs[_0x0a9e('0x13')](_0x4262d0[_0x0a9e('0x38')]['offset']);}_0x2415fe['order']=qs['sort'](_0x4262d0[_0x0a9e('0x38')][_0x0a9e('0x3e')]);_0x2415fe['where']=qs[_0x0a9e('0x3f')](_[_0x0a9e('0x40')](_0x4262d0[_0x0a9e('0x38')],_0x399def['filters']));_0x2415fe[_0x0a9e('0x72')][_0x0a9e('0xcd')]=_0x1d999b['id'];if(_0x4262d0[_0x0a9e('0x38')][_0x0a9e('0x81')]){_0x2415fe[_0x0a9e('0x72')]=_[_0x0a9e('0x9c')](_0x2415fe[_0x0a9e('0x72')],{'$or':_[_0x0a9e('0x37')](_0x2415fe[_0x0a9e('0x3a')],function(_0x5a1848){var _0x43c397={};_0x43c397[_0x5a1848]={'$like':'%'+_0x4262d0['query'][_0x0a9e('0x81')]+'%'};return _0x43c397;})});}if(_0x4262d0[_0x0a9e('0x38')][_0x0a9e('0x77')]){var _0x3cf222=_0x4262d0[_0x0a9e('0x38')][_0x0a9e('0x77')]['split'](',');var _0x1a0314={};_0x1a0314[_0x3cf222[0x0]]={'$gte':moment(_0x3cf222[0x1])[_0x0a9e('0xce')](_0x0a9e('0xcf'))};_0x2415fe[_0x0a9e('0x72')]=_['merge'](_0x2415fe[_0x0a9e('0x72')],_0x1a0314);}_0x2415fe=_[_0x0a9e('0x9c')]({},_0x2415fe,_0x4262d0[_0x0a9e('0xc5')]);return db[_0x0a9e('0x29')][_0x0a9e('0x16')]({'where':_0x2415fe[_0x0a9e('0x72')]})[_0x0a9e('0x1a')](function(_0x25931e){_0x98c62c[_0x0a9e('0x16')]=_0x25931e;if(_0x4262d0[_0x0a9e('0x38')]['includeAll']){_0x2415fe[_0x0a9e('0xc4')]=[{'all':!![]}];}return db[_0x0a9e('0x29')][_0x0a9e('0xd0')](_0x2415fe);})[_0x0a9e('0x1a')](function(_0xea8bd1){if(_0x4262d0[_0x0a9e('0x38')][_0x0a9e('0xd1')]===_0x0a9e('0xd2')){for(var _0x566b90=0x0;_0x566b90<_0xea8bd1[_0x0a9e('0x3c')];_0x566b90++){_0xea8bd1[_0x566b90][_0x0a9e('0xc7')]=juice(_0xea8bd1[_0x566b90][_0x0a9e('0xc7')]);}}_0x98c62c['rows']=_0xea8bd1;return _0x98c62c;});}})[_0x0a9e('0x1a')](respondWithFilteredResult(_0xc876d4,_0x2415fe))[_0x0a9e('0x30')](handleError(_0xc876d4,null));};exports[_0x0a9e('0xd3')]=function(_0x97d5b5,_0x370b5e){return db[_0x0a9e('0x32')][_0x0a9e('0x5b')]({'where':{'id':_0x97d5b5[_0x0a9e('0xc2')]['id']}})[_0x0a9e('0x1a')](handleEntityNotFound(_0x370b5e,null))[_0x0a9e('0x1a')](function(_0x5a7dad){if(_0x5a7dad){return _0x5a7dad[_0x0a9e('0xd4')](_0x97d5b5[_0x0a9e('0xc7')][_0x0a9e('0xc9')],_[_0x0a9e('0xca')](_0x97d5b5[_0x0a9e('0xc7')],[_0x0a9e('0xc9'),'id'])||{})['spread'](function(){return db[_0x0a9e('0xd5')]['findAll']({'attributes':['id','name','color'],'where':{'id':_0x97d5b5[_0x0a9e('0xc7')][_0x0a9e('0xc9')]}});})[_0x0a9e('0x1a')](function(_0x2a07d0){socket['emit'](_0x0a9e('0xd6'),{'id':Number(_0x97d5b5[_0x0a9e('0xc2')]['id']),'tags':_0x2a07d0||[]});return{'id':Number(_0x97d5b5[_0x0a9e('0xc2')]['id']),'tags':_0x2a07d0||[]};});}})[_0x0a9e('0x1a')](respondWithResult(_0x370b5e,null))[_0x0a9e('0x30')](handleError(_0x370b5e,null));};exports['removeTags']=function(_0x57b1b1,_0x9484c8){return db[_0x0a9e('0x32')][_0x0a9e('0x5b')]({'where':{'id':_0x57b1b1['params']['id']}})[_0x0a9e('0x1a')](handleEntityNotFound(_0x9484c8,null))[_0x0a9e('0x1a')](function(_0x422f0a){if(_0x422f0a){return _0x422f0a['removeTags'](_0x57b1b1[_0x0a9e('0x38')][_0x0a9e('0xc9')]);}})[_0x0a9e('0x1a')](respondWithStatusCode(_0x9484c8,null))['catch'](handleError(_0x9484c8,null));};exports[_0x0a9e('0xd7')]=function(_0x336b30,_0x3b7213){var _0x549e03=moment()['unix']()['toString']();var _0x3b04fd=path[_0x0a9e('0xd8')](config[_0x0a9e('0xd9')],_0x0a9e('0xda'),'files',_0x0a9e('0xdb'));var _0x532424=path[_0x0a9e('0xd8')](config[_0x0a9e('0xd9')],_0x0a9e('0xda'),'files',_0x0a9e('0xdc'));var _0x33a26c=path[_0x0a9e('0xd8')](_0x3b04fd,_0x549e03);var _0x580dd6=util[_0x0a9e('0xce')]('transcript-%d-%s.zip',_0x336b30[_0x0a9e('0xc2')]['id'],_0x549e03);var _0x5c57e1=path[_0x0a9e('0xd8')](_0x3b04fd,_0x580dd6);var _0x57b7d4=[];if(_0x336b30[_0x0a9e('0x38')][_0x0a9e('0xdc')]){_0x57b7d4[_0x0a9e('0x27')]({'model':db[_0x0a9e('0xdd')],'as':_0x0a9e('0xde'),'raw':!![]});}var _0x251dd9=[{'model':db[_0x0a9e('0x29')],'as':'Messages','attributes':['id',_0x0a9e('0xc7'),_0x0a9e('0x44'),'to','cc','bcc',_0x0a9e('0xdf'),_0x0a9e('0x75')],'where':{'secret':![]},'order':qs['sort']('id'),'include':_0x57b7d4}];return db[_0x0a9e('0x32')][_0x0a9e('0x5b')]({'where':{'id':_0x336b30[_0x0a9e('0xc2')]['id']},'include':_0x251dd9})['then'](handleEntityNotFound(_0x3b7213,null))[_0x0a9e('0x1a')](function(_0xf49ed4){if(_0xf49ed4&&_0xf49ed4[_0x0a9e('0xe0')]){var _0x3f0d64=_0xf49ed4[_0x0a9e('0xe1')]({'plain':!![]});fs[_0x0a9e('0xe2')](_0x33a26c);return BPromise[_0x0a9e('0xe3')](_0x3f0d64[_0x0a9e('0xe0')],function(_0x22767f,_0x426c3c){var _0x56e148={'from':_0x22767f[_0x0a9e('0x44')],'to':_0x22767f['to'],'subject':_0x22767f['subject'],'html':_0x22767f[_0x0a9e('0xc7')],'headers':{'Date':moment(_0x22767f[_0x0a9e('0x75')])[_0x0a9e('0xce')](_0x0a9e('0xe4'))},'attachments':[]};if(_0x22767f['cc']){_0x56e148[_0x0a9e('0xe5')]['Cc']=_0x22767f['cc'];}if(_0x22767f[_0x0a9e('0xe6')]){_0x56e148['headers'][_0x0a9e('0xe7')]=_0x22767f[_0x0a9e('0xe6')];}return new BPromise(function(_0x2977a7,_0x55a599){if(_0x22767f[_0x0a9e('0xde')]){for(var _0x402544=0x0;_0x402544<_0x22767f[_0x0a9e('0xde')][_0x0a9e('0x3c')];_0x402544++){var _0x31e1e0=_0x22767f[_0x0a9e('0xde')][_0x402544];var _0x1e93f5=path['join'](_0x532424,_0x31e1e0[_0x0a9e('0xe8')]);if(fs[_0x0a9e('0xe9')](_0x1e93f5)){_0x56e148[_0x0a9e('0xdc')][_0x0a9e('0x27')]({'name':_0x31e1e0[_0x0a9e('0x20')],'contentType':_0x31e1e0[_0x0a9e('0x65')],'data':fs[_0x0a9e('0xea')](_0x1e93f5)});}}}emlformat['build'](_0x56e148,function(_0x5c8720,_0x10aa22){if(_0x5c8720)return _0x55a599(_0x5c8720);fs[_0x0a9e('0xeb')](path[_0x0a9e('0xd8')](_0x33a26c,util[_0x0a9e('0xce')](_0x0a9e('0xec'),_0x426c3c)),_0x10aa22);return _0x2977a7(_0x10aa22);});});})[_0x0a9e('0x1a')](function(){return new BPromise(function(_0x609711,_0x584854){zipdir(_0x33a26c,{'saveTo':_0x5c57e1},function(_0x39ea62,_0x1d7fc4){if(_0x39ea62)return _0x584854(_0x39ea62);return _0x609711(_0x1d7fc4);});})[_0x0a9e('0x1a')](function(){return new BPromise(function(_0x2675a5,_0x1b1757){rimraf(_0x33a26c,function(_0x3c6082){if(_0x3c6082)_0x1b1757(_0x3c6082);return _0x2675a5();});});})[_0x0a9e('0x1a')](function(){return _0x3b7213['download'](_0x5c57e1,_0x580dd6,function(_0x311288){if(!_0x311288)fs[_0x0a9e('0xed')](_0x5c57e1);});});});}else{return _0x3b7213[_0x0a9e('0x1d')](0xc8);}})['catch'](handleError(_0x3b7213,null));};
\ No newline at end of file
index 1832a70..280212c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9c59=['setDataValue','unreadMessages','length','emit','catch','hook','exports','../../mysqldb','setMaxListeners','remove','then','Users','findAll'];(function(_0xf9417e,_0x577989){var _0x3faffb=function(_0x29ba4a){while(--_0x29ba4a){_0xf9417e['push'](_0xf9417e['shift']());}};_0x3faffb(++_0x577989);}(_0x9c59,0x1a7));var _0x99c5=function(_0x1805b3,_0xdf1f2c){_0x1805b3=_0x1805b3-0x0;var _0xc0dbdb=_0x9c59[_0x1805b3];return _0xc0dbdb;};'use strict';var EventEmitter=require('events');var MailInteraction=require('../../mysqldb')['db']['MailInteraction'];var MailMessage=require(_0x99c5('0x0'))['db']['MailMessage'];var MailInteractionEvents=new EventEmitter();MailInteractionEvents[_0x99c5('0x1')](0x0);var events={'afterCreate':'save','afterUpdate':'update','afterDestroy':_0x99c5('0x2')};function emitEvent(_0x39735e){return function(_0x270d82,_0x56434c,_0x74cbac){_0x270d82['getUsers']({'attributes':['id'],'raw':!![]})[_0x99c5('0x3')](function(_0x187a85){_0x270d82['setDataValue'](_0x99c5('0x4'),_0x187a85['map'](function(_0x2a7be2){return{'id':_0x2a7be2['id']};}));return MailMessage[_0x99c5('0x5')]({'where':{'MailInteractionId':_0x270d82['id'],'direction':'in','read':![]},'raw':!![]});})['then'](function(_0x25d4d7){_0x270d82[_0x99c5('0x6')](_0x99c5('0x7'),_0x25d4d7[_0x99c5('0x8')]);MailInteractionEvents[_0x99c5('0x9')](_0x39735e+':'+_0x270d82['id'],_0x270d82);MailInteractionEvents[_0x99c5('0x9')](_0x39735e,_0x270d82);_0x74cbac(null);})[_0x99c5('0xa')](_0x74cbac(null));};}for(var e in events){if(events['hasOwnProperty'](e)){var event=events[e];MailInteraction[_0x99c5('0xb')](e,emitEvent(event));}}module[_0x99c5('0xc')]=MailInteractionEvents;
\ No newline at end of file
+var _0x7fe4=['hasOwnProperty','hook','MailInteraction','../../mysqldb','setMaxListeners','save','remove','getUsers','Users','then','setDataValue','emit','catch'];(function(_0x173113,_0x316a7c){var _0x3bea89=function(_0xd33ac1){while(--_0xd33ac1){_0x173113['push'](_0x173113['shift']());}};_0x3bea89(++_0x316a7c);}(_0x7fe4,0x188));var _0x47fe=function(_0x525c7b,_0x488fcc){_0x525c7b=_0x525c7b-0x0;var _0x27b33e=_0x7fe4[_0x525c7b];return _0x27b33e;};'use strict';var EventEmitter=require('events');var MailInteraction=require('../../mysqldb')['db'][_0x47fe('0x0')];var MailMessage=require(_0x47fe('0x1'))['db']['MailMessage'];var MailInteractionEvents=new EventEmitter();MailInteractionEvents[_0x47fe('0x2')](0x0);var events={'afterCreate':_0x47fe('0x3'),'afterUpdate':'update','afterDestroy':_0x47fe('0x4')};function emitEvent(_0x3c1b22){return function(_0x4c0bf9,_0xb0854d,_0x30a72b){_0x4c0bf9[_0x47fe('0x5')]({'attributes':['id'],'raw':!![]})['then'](function(_0x46e0a1){_0x4c0bf9['setDataValue'](_0x47fe('0x6'),_0x46e0a1['map'](function(_0x8abdf5){return{'id':_0x8abdf5['id']};}));return MailMessage['findAll']({'where':{'MailInteractionId':_0x4c0bf9['id'],'direction':'in','read':![]},'raw':!![]});})[_0x47fe('0x7')](function(_0x2017b1){_0x4c0bf9[_0x47fe('0x8')]('unreadMessages',_0x2017b1['length']);MailInteractionEvents[_0x47fe('0x9')](_0x3c1b22+':'+_0x4c0bf9['id'],_0x4c0bf9);MailInteractionEvents[_0x47fe('0x9')](_0x3c1b22,_0x4c0bf9);_0x30a72b(null);})[_0x47fe('0xa')](_0x30a72b(null));};}for(var e in events){if(events[_0x47fe('0xb')](e)){var event=events[e];MailInteraction[_0x47fe('0xc')](e,emitEvent(event));}}module['exports']=MailInteractionEvents;
\ No newline at end of file
index 85a57ab..3440d3c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4309=['bluebird','rimraf','../../config/environment','./mailInteraction.attributes','exports','define','mail_interactions','fti_mail_interactions','subject','substatus','substatusAt','YYYY-MM-DD\x20HH:mm:ss','closed','closedAt','format','changed','models','MailMessage','then','catch','utf8mb4','util','api'];(function(_0xcbd622,_0x4fd845){var _0x578663=function(_0x2fea21){while(--_0x2fea21){_0xcbd622['push'](_0xcbd622['shift']());}};_0x578663(++_0x4fd845);}(_0x4309,0x1ca));var _0x9430=function(_0x1eaa06,_0x309d10){_0x1eaa06=_0x1eaa06-0x0;var _0x7def2b=_0x4309[_0x1eaa06];return _0x7def2b;};'use strict';var _=require('lodash');var util=require(_0x9430('0x0'));var logger=require('../../config/logger')(_0x9430('0x1'));var moment=require('moment');var BPromise=require(_0x9430('0x2'));var rp=require('request-promise');var fs=require('fs');var path=require('path');var rimraf=require(_0x9430('0x3'));var config=require(_0x9430('0x4'));var attributes=require(_0x9430('0x5'));module[_0x9430('0x6')]=function(_0xc94f1e,_0x131426){return _0xc94f1e[_0x9430('0x7')]('MailInteraction',attributes,{'tableName':_0x9430('0x8'),'paranoid':![],'indexes':[{'name':_0x9430('0x9'),'fields':[_0x9430('0xa'),'to'],'type':'FULLTEXT'}],'timestamps':!![],'hooks':{'beforeCreate':function(_0x451b50,_0x2d3c45,_0x2d8889){if(_0x451b50[_0x9430('0xb')]){_0x451b50[_0x9430('0xc')]=moment()['format'](_0x9430('0xd'));}if(_0x451b50[_0x9430('0xe')]){_0x451b50[_0x9430('0xf')]=moment()[_0x9430('0x10')]('YYYY-MM-DD\x20HH:mm:ss');}_0x2d8889(null,_0x2d3c45);},'beforeUpdate':function(_0x15679a,_0x123e87,_0x130e49){if(_0x15679a[_0x9430('0x11')]('substatus')){_0x15679a[_0x9430('0xc')]=_0x15679a[_0x9430('0xb')]?moment()[_0x9430('0x10')]('YYYY-MM-DD\x20HH:mm:ss'):null;}if(_0x15679a[_0x9430('0x11')](_0x9430('0xe'))){_0x15679a[_0x9430('0xf')]=moment()[_0x9430('0x10')](_0x9430('0xd'));_0x15679a[_0x9430('0xb')]=null;_0x15679a[_0x9430('0xc')]=null;}_0x130e49(null,_0x15679a);},'afterUpdate':function(_0x415770,_0x1a6bb3,_0x235c70){var _0x51d583=_0xc94f1e[_0x9430('0x12')];var _0x2ae6b5=_0x415770['get']({'plain':!![]});if(_0x2ae6b5[_0x9430('0xe')]){return _0x51d583[_0x9430('0x13')]['update']({'read':!![]},{'where':{'MailInteractionId':_0x2ae6b5['id']}})[_0x9430('0x14')](function(){_0x235c70();})[_0x9430('0x15')](function(_0x14d539){_0x235c70(_0x14d539);});}else{_0x235c70();}}},'charset':_0x9430('0x16'),'collate':'utf8mb4_unicode_ci'});};
\ No newline at end of file
+var _0x27e8=['format','changed','models','get','MailMessage','then','utf8mb4','lodash','util','../../config/logger','moment','bluebird','request-promise','path','rimraf','../../config/environment','./mailInteraction.attributes','exports','define','mail_interactions','fti_mail_interactions','subject','FULLTEXT','substatus','substatusAt','YYYY-MM-DD\x20HH:mm:ss','closed','closedAt'];(function(_0x2641f9,_0x26715f){var _0x585741=function(_0x2d1462){while(--_0x2d1462){_0x2641f9['push'](_0x2641f9['shift']());}};_0x585741(++_0x26715f);}(_0x27e8,0x173));var _0x827e=function(_0x11a4cf,_0xba423){_0x11a4cf=_0x11a4cf-0x0;var _0x1be912=_0x27e8[_0x11a4cf];return _0x1be912;};'use strict';var _=require(_0x827e('0x0'));var util=require(_0x827e('0x1'));var logger=require(_0x827e('0x2'))('api');var moment=require(_0x827e('0x3'));var BPromise=require(_0x827e('0x4'));var rp=require(_0x827e('0x5'));var fs=require('fs');var path=require(_0x827e('0x6'));var rimraf=require(_0x827e('0x7'));var config=require(_0x827e('0x8'));var attributes=require(_0x827e('0x9'));module[_0x827e('0xa')]=function(_0x5d2d34,_0x199073){return _0x5d2d34[_0x827e('0xb')]('MailInteraction',attributes,{'tableName':_0x827e('0xc'),'paranoid':![],'indexes':[{'name':_0x827e('0xd'),'fields':[_0x827e('0xe'),'to'],'type':_0x827e('0xf')}],'timestamps':!![],'hooks':{'beforeCreate':function(_0x5498fc,_0x19505b,_0x45eb9d){if(_0x5498fc[_0x827e('0x10')]){_0x5498fc[_0x827e('0x11')]=moment()['format'](_0x827e('0x12'));}if(_0x5498fc[_0x827e('0x13')]){_0x5498fc[_0x827e('0x14')]=moment()[_0x827e('0x15')](_0x827e('0x12'));}_0x45eb9d(null,_0x19505b);},'beforeUpdate':function(_0x326d2b,_0xee2bfb,_0xb9480e){if(_0x326d2b[_0x827e('0x16')]('substatus')){_0x326d2b['substatusAt']=_0x326d2b[_0x827e('0x10')]?moment()[_0x827e('0x15')](_0x827e('0x12')):null;}if(_0x326d2b[_0x827e('0x16')](_0x827e('0x13'))){_0x326d2b[_0x827e('0x14')]=moment()['format']('YYYY-MM-DD\x20HH:mm:ss');_0x326d2b[_0x827e('0x10')]=null;_0x326d2b[_0x827e('0x11')]=null;}_0xb9480e(null,_0x326d2b);},'afterUpdate':function(_0xc60fd8,_0x325646,_0x44c2d0){var _0x37643a=_0x5d2d34[_0x827e('0x17')];var _0x4753d7=_0xc60fd8[_0x827e('0x18')]({'plain':!![]});if(_0x4753d7[_0x827e('0x13')]){return _0x37643a[_0x827e('0x19')]['update']({'read':!![]},{'where':{'MailInteractionId':_0x4753d7['id']}})[_0x827e('0x1a')](function(){_0x44c2d0();})['catch'](function(_0xe26860){_0x44c2d0(_0xe26860);});}else{_0x44c2d0();}}},'charset':_0x827e('0x1b'),'collate':'utf8mb4_unicode_ci'});};
\ No newline at end of file
index 57c887f..5bcb9a1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xcc20=['MailInteraction,\x20%s,\x20%s,\x20%s','stringify','error','message','catch','UpdateMailInteraction','MailInteraction','update','body','options','attributes','limit','where','addTags','ids','spread','AddTags','lodash','util','bluebird','randomstring','../../mysqldb','rpc','../../config/environment','jayson/promise','http','redis','localhost','socket.io-emitter','./mailInteraction.socket','register','request','then','info','MailInteraction,\x20%s,\x20%s','request\x20sent','debug'];(function(_0x58b6a8,_0x307021){var _0xc566dc=function(_0x59bd76){while(--_0x59bd76){_0x58b6a8['push'](_0x58b6a8['shift']());}};_0xc566dc(++_0x307021);}(_0xcc20,0x114));var _0x0cc2=function(_0x2a4cec,_0x417449){_0x2a4cec=_0x2a4cec-0x0;var _0x18b24c=_0xcc20[_0x2a4cec];return _0x18b24c;};'use strict';var _=require(_0x0cc2('0x0'));var util=require(_0x0cc2('0x1'));var moment=require('moment');var BPromise=require(_0x0cc2('0x2'));var rs=require(_0x0cc2('0x3'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x0cc2('0x4'))['db'];var utils=require('../../config/utils');var logger=require('../../config/logger')(_0x0cc2('0x5'));var config=require(_0x0cc2('0x6'));var jayson=require(_0x0cc2('0x7'));var client=jayson['client'][_0x0cc2('0x8')]({'port':0x232a});config[_0x0cc2('0x9')]=_['defaults'](config[_0x0cc2('0x9')],{'host':_0x0cc2('0xa'),'port':0x18eb});var socket=require(_0x0cc2('0xb'))(new Redis(config[_0x0cc2('0x9')]));require(_0x0cc2('0xc'))[_0x0cc2('0xd')](socket);function respondWithRpcPromise(_0x5085e3,_0x30a25c,_0x2d91c8){return new BPromise(function(_0x4977eb,_0x3d705c){return client[_0x0cc2('0xe')](_0x5085e3,_0x2d91c8)[_0x0cc2('0xf')](function(_0x3b9801){logger[_0x0cc2('0x10')](_0x0cc2('0x11'),_0x30a25c,_0x0cc2('0x12'));logger[_0x0cc2('0x13')](_0x0cc2('0x14'),_0x30a25c,_0x0cc2('0x12'),JSON[_0x0cc2('0x15')](_0x3b9801));if(_0x3b9801['error']){if(_0x3b9801['error']['code']===0x1f4){logger[_0x0cc2('0x16')](_0x0cc2('0x11'),_0x30a25c,_0x3b9801[_0x0cc2('0x16')]['message']);return _0x3d705c(_0x3b9801[_0x0cc2('0x16')][_0x0cc2('0x17')]);}logger[_0x0cc2('0x16')](_0x0cc2('0x11'),_0x30a25c,_0x3b9801['error'][_0x0cc2('0x17')]);return _0x4977eb(_0x3b9801['error'][_0x0cc2('0x17')]);}else{logger[_0x0cc2('0x10')](_0x0cc2('0x11'),_0x30a25c,'request\x20sent');_0x4977eb(_0x3b9801['result'][_0x0cc2('0x17')]);}})[_0x0cc2('0x18')](function(_0xc469e){logger[_0x0cc2('0x16')](_0x0cc2('0x11'),_0x30a25c,_0xc469e);_0x3d705c(_0xc469e);});});}exports[_0x0cc2('0x19')]=function(_0x29b746){var _0x2e7dbe=this;return new Promise(function(_0x347786,_0x102cb2){return db[_0x0cc2('0x1a')][_0x0cc2('0x1b')](_0x29b746[_0x0cc2('0x1c')],{'raw':_0x29b746[_0x0cc2('0x1d')]?_0x29b746[_0x0cc2('0x1d')]['raw']===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x29b746[_0x0cc2('0x1d')]?_0x29b746[_0x0cc2('0x1d')]['where']||null:null,'attributes':_0x29b746[_0x0cc2('0x1d')]?_0x29b746[_0x0cc2('0x1d')][_0x0cc2('0x1e')]||null:null,'limit':_0x29b746['options']?_0x29b746['options'][_0x0cc2('0x1f')]||null:null})['then'](function(_0x2f55c4){logger[_0x0cc2('0x10')]('UpdateMailInteraction',_0x29b746);logger[_0x0cc2('0x13')]('UpdateMailInteraction',_0x29b746,JSON['stringify'](_0x2f55c4));_0x347786(_0x2f55c4);})[_0x0cc2('0x18')](function(_0xc58d9c){logger[_0x0cc2('0x16')](_0x0cc2('0x19'),_0xc58d9c[_0x0cc2('0x17')],_0x29b746);_0x102cb2(_0x2e7dbe[_0x0cc2('0x16')](0x1f4,_0xc58d9c[_0x0cc2('0x17')]));});});};exports['AddTagsToMailInteraction']=function(_0x4239ae){return new Promise(function(_0x41c89a,_0x5c7fb1){return db[_0x0cc2('0x1a')]['find']({'where':_0x4239ae[_0x0cc2('0x1d')]?_0x4239ae[_0x0cc2('0x1d')][_0x0cc2('0x20')]||null:null})[_0x0cc2('0xf')](function(_0x5f42e5){if(_0x5f42e5){return _0x5f42e5[_0x0cc2('0x21')](_0x4239ae[_0x0cc2('0x1c')]['ids'],_['omit'](_0x4239ae['body'],[_0x0cc2('0x22'),'id'])||{});}})[_0x0cc2('0x23')](function(_0x204490){logger['info'](_0x0cc2('0x24'),_0x4239ae);logger['debug']('AddTags',_0x4239ae,JSON[_0x0cc2('0x15')](_0x204490));_0x41c89a(_0x204490);})[_0x0cc2('0x18')](function(_0x515063){logger['error'](_0x0cc2('0x24'),_0x515063[_0x0cc2('0x17')],_0x4239ae);_0x5c7fb1(_this[_0x0cc2('0x16')](0x1f4,_0x515063['message']));});});};
\ No newline at end of file
+var _0x347a=['util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','redis','localhost','socket.io-emitter','then','info','MailInteraction,\x20%s,\x20%s','request\x20sent','debug','MailInteraction,\x20%s,\x20%s,\x20%s','stringify','error','message','catch','UpdateMailInteraction','MailInteraction','update','options','raw','where','attributes','AddTagsToMailInteraction','addTags','body','omit','ids','spread','AddTags','lodash'];(function(_0x3ff5ee,_0x48d6ef){var _0xc41683=function(_0x4ee0ff){while(--_0x4ee0ff){_0x3ff5ee['push'](_0x3ff5ee['shift']());}};_0xc41683(++_0x48d6ef);}(_0x347a,0x12f));var _0xa347=function(_0x1ccb95,_0x1b3be8){_0x1ccb95=_0x1ccb95-0x0;var _0x1a9725=_0x347a[_0x1ccb95];return _0x1a9725;};'use strict';var _=require(_0xa347('0x0'));var util=require(_0xa347('0x1'));var moment=require(_0xa347('0x2'));var BPromise=require(_0xa347('0x3'));var rs=require(_0xa347('0x4'));var fs=require('fs');var Redis=require(_0xa347('0x5'));var db=require(_0xa347('0x6'))['db'];var utils=require(_0xa347('0x7'));var logger=require(_0xa347('0x8'))(_0xa347('0x9'));var config=require(_0xa347('0xa'));var jayson=require('jayson/promise');var client=jayson['client']['http']({'port':0x232a});config[_0xa347('0xb')]=_['defaults'](config[_0xa347('0xb')],{'host':_0xa347('0xc'),'port':0x18eb});var socket=require(_0xa347('0xd'))(new Redis(config[_0xa347('0xb')]));require('./mailInteraction.socket')['register'](socket);function respondWithRpcPromise(_0x4a1c11,_0x5d8cbf,_0x159dbc){return new BPromise(function(_0xd29acd,_0x581e3d){return client['request'](_0x4a1c11,_0x159dbc)[_0xa347('0xe')](function(_0x3549e3){logger[_0xa347('0xf')](_0xa347('0x10'),_0x5d8cbf,_0xa347('0x11'));logger[_0xa347('0x12')](_0xa347('0x13'),_0x5d8cbf,'request\x20sent',JSON[_0xa347('0x14')](_0x3549e3));if(_0x3549e3[_0xa347('0x15')]){if(_0x3549e3[_0xa347('0x15')]['code']===0x1f4){logger[_0xa347('0x15')](_0xa347('0x10'),_0x5d8cbf,_0x3549e3['error'][_0xa347('0x16')]);return _0x581e3d(_0x3549e3[_0xa347('0x15')][_0xa347('0x16')]);}logger[_0xa347('0x15')](_0xa347('0x10'),_0x5d8cbf,_0x3549e3['error']['message']);return _0xd29acd(_0x3549e3[_0xa347('0x15')][_0xa347('0x16')]);}else{logger[_0xa347('0xf')](_0xa347('0x10'),_0x5d8cbf,'request\x20sent');_0xd29acd(_0x3549e3['result'][_0xa347('0x16')]);}})[_0xa347('0x17')](function(_0x146eff){logger[_0xa347('0x15')](_0xa347('0x10'),_0x5d8cbf,_0x146eff);_0x581e3d(_0x146eff);});});}exports[_0xa347('0x18')]=function(_0x3854c6){var _0x13a635=this;return new Promise(function(_0x2da51a,_0x2d6e2a){return db[_0xa347('0x19')][_0xa347('0x1a')](_0x3854c6['body'],{'raw':_0x3854c6[_0xa347('0x1b')]?_0x3854c6[_0xa347('0x1b')][_0xa347('0x1c')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x3854c6[_0xa347('0x1b')]?_0x3854c6[_0xa347('0x1b')][_0xa347('0x1d')]||null:null,'attributes':_0x3854c6['options']?_0x3854c6[_0xa347('0x1b')][_0xa347('0x1e')]||null:null,'limit':_0x3854c6['options']?_0x3854c6['options']['limit']||null:null})['then'](function(_0x48588e){logger[_0xa347('0xf')](_0xa347('0x18'),_0x3854c6);logger['debug'](_0xa347('0x18'),_0x3854c6,JSON['stringify'](_0x48588e));_0x2da51a(_0x48588e);})[_0xa347('0x17')](function(_0x496358){logger[_0xa347('0x15')](_0xa347('0x18'),_0x496358[_0xa347('0x16')],_0x3854c6);_0x2d6e2a(_0x13a635['error'](0x1f4,_0x496358['message']));});});};exports[_0xa347('0x1f')]=function(_0x1186e7){return new Promise(function(_0x473168,_0x83f097){return db['MailInteraction']['find']({'where':_0x1186e7[_0xa347('0x1b')]?_0x1186e7[_0xa347('0x1b')][_0xa347('0x1d')]||null:null})[_0xa347('0xe')](function(_0x2778a7){if(_0x2778a7){return _0x2778a7[_0xa347('0x20')](_0x1186e7[_0xa347('0x21')]['ids'],_[_0xa347('0x22')](_0x1186e7[_0xa347('0x21')],[_0xa347('0x23'),'id'])||{});}})[_0xa347('0x24')](function(_0x2270ed){logger[_0xa347('0xf')](_0xa347('0x25'),_0x1186e7);logger[_0xa347('0x12')](_0xa347('0x25'),_0x1186e7,JSON['stringify'](_0x2270ed));_0x473168(_0x2270ed);})['catch'](function(_0x9ae78a){logger[_0xa347('0x15')]('AddTags',_0x9ae78a[_0xa347('0x16')],_0x1186e7);_0x83f097(_this[_0xa347('0x15')](0x1f4,_0x9ae78a[_0xa347('0x16')]));});});};
\ No newline at end of file
index 1f289b9..16d7be2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8703=['update','emit','register','length','mailInteraction:','./mailInteraction.events','save'];(function(_0x29bd56,_0x1cfcb9){var _0x11acca=function(_0x2ac384){while(--_0x2ac384){_0x29bd56['push'](_0x29bd56['shift']());}};_0x11acca(++_0x1cfcb9);}(_0x8703,0xe5));var _0x3870=function(_0x55649a,_0x26cf3f){_0x55649a=_0x55649a-0x0;var _0xba3036=_0x8703[_0x55649a];return _0xba3036;};'use strict';var MailInteractionEvents=require(_0x3870('0x0'));var events=[_0x3870('0x1'),'remove',_0x3870('0x2')];function createListener(_0xfd2790,_0x489d7b){return function(_0x4583e){_0x489d7b[_0x3870('0x3')](_0xfd2790,_0x4583e);};}function removeListener(_0x3c1150,_0x4ddc50){return function(){MailInteractionEvents['removeListener'](_0x3c1150,_0x4ddc50);};}exports[_0x3870('0x4')]=function(_0x5e5fc5){for(var _0x3bd186=0x0,_0x5d3809=events[_0x3870('0x5')];_0x3bd186<_0x5d3809;_0x3bd186++){var _0x516f09=events[_0x3bd186];var _0x5eb9b2=createListener(_0x3870('0x6')+_0x516f09,_0x5e5fc5);MailInteractionEvents['on'](_0x516f09,_0x5eb9b2);}};
\ No newline at end of file
+var _0x1d20=['length','./mailInteraction.events','save','remove','emit','register'];(function(_0xcedaf5,_0x20e447){var _0x17456f=function(_0x399268){while(--_0x399268){_0xcedaf5['push'](_0xcedaf5['shift']());}};_0x17456f(++_0x20e447);}(_0x1d20,0x133));var _0x01d2=function(_0x23efe3,_0x4fbb00){_0x23efe3=_0x23efe3-0x0;var _0x34b03f=_0x1d20[_0x23efe3];return _0x34b03f;};'use strict';var MailInteractionEvents=require(_0x01d2('0x0'));var events=[_0x01d2('0x1'),_0x01d2('0x2'),'update'];function createListener(_0x340668,_0x113c0e){return function(_0x4c5c00){_0x113c0e[_0x01d2('0x3')](_0x340668,_0x4c5c00);};}function removeListener(_0x1550b1,_0x3fea96){return function(){MailInteractionEvents['removeListener'](_0x1550b1,_0x3fea96);};}exports[_0x01d2('0x4')]=function(_0x504e23){for(var _0x6d7651=0x0,_0x505601=events[_0x01d2('0x5')];_0x6d7651<_0x505601;_0x6d7651++){var _0x152883=events[_0x6d7651];var _0x4beab4=createListener('mailInteraction:'+_0x152883,_0x504e23);MailInteractionEvents['on'](_0x152883,_0x4beab4);}};
\ No newline at end of file
index 2153da2..33b43cc 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3308=['destroy','exports','multer','util','path','connect-timeout','express','Router','fs-extra','../../config/environment','get','isAuthenticated','index','/describe','describe','/:id','/:id/download','create','update','put','/:id/accept','accept','/:id/reject','reject','delete'];(function(_0x416a38,_0x5004e0){var _0xec6c28=function(_0xf771cd){while(--_0xf771cd){_0x416a38['push'](_0x416a38['shift']());}};_0xec6c28(++_0x5004e0);}(_0x3308,0x160));var _0x8330=function(_0x15f075,_0x210c25){_0x15f075=_0x15f075-0x0;var _0x4c33cd=_0x3308[_0x15f075];return _0x4c33cd;};'use strict';var multer=require(_0x8330('0x0'));var util=require(_0x8330('0x1'));var path=require(_0x8330('0x2'));var timeout=require(_0x8330('0x3'));var express=require(_0x8330('0x4'));var router=express[_0x8330('0x5')]();var fs_extra=require(_0x8330('0x6'));var auth=require('../../components/auth/service');var interaction=require('../../components/interaction/service');var config=require(_0x8330('0x7'));var controller=require('./mailMessage.controller');router[_0x8330('0x8')]('/',auth[_0x8330('0x9')](),controller[_0x8330('0xa')]);router['get'](_0x8330('0xb'),auth[_0x8330('0x9')](),controller[_0x8330('0xc')]);router[_0x8330('0x8')](_0x8330('0xd'),auth[_0x8330('0x9')](),controller['show']);router[_0x8330('0x8')](_0x8330('0xe'),auth[_0x8330('0x9')](),controller['download']);router['post']('/',auth['isAuthenticated'](),interaction['tracked']('mail','mailmessage:create'),controller[_0x8330('0xf')]);router['put'](_0x8330('0xd'),auth[_0x8330('0x9')](),controller[_0x8330('0x10')]);router[_0x8330('0x11')](_0x8330('0x12'),auth['isAuthenticated'](),controller[_0x8330('0x13')]);router['put'](_0x8330('0x14'),auth[_0x8330('0x9')](),controller[_0x8330('0x15')]);router[_0x8330('0x16')](_0x8330('0xd'),auth[_0x8330('0x9')](),controller[_0x8330('0x17')]);module[_0x8330('0x18')]=router;
\ No newline at end of file
+var _0xb5fd=['get','/describe','describe','/:id','show','/:id/download','download','post','tracked','mail','mailmessage:create','create','update','put','/:id/reject','reject','delete','destroy','multer','connect-timeout','express','Router','fs-extra','../../components/interaction/service','../../config/environment','./mailMessage.controller','isAuthenticated','index'];(function(_0x8014d8,_0x134a36){var _0x581b7b=function(_0x45c7ce){while(--_0x45c7ce){_0x8014d8['push'](_0x8014d8['shift']());}};_0x581b7b(++_0x134a36);}(_0xb5fd,0x82));var _0xdb5f=function(_0x10c52d,_0x508e20){_0x10c52d=_0x10c52d-0x0;var _0x4df380=_0xb5fd[_0x10c52d];return _0x4df380;};'use strict';var multer=require(_0xdb5f('0x0'));var util=require('util');var path=require('path');var timeout=require(_0xdb5f('0x1'));var express=require(_0xdb5f('0x2'));var router=express[_0xdb5f('0x3')]();var fs_extra=require(_0xdb5f('0x4'));var auth=require('../../components/auth/service');var interaction=require(_0xdb5f('0x5'));var config=require(_0xdb5f('0x6'));var controller=require(_0xdb5f('0x7'));router['get']('/',auth[_0xdb5f('0x8')](),controller[_0xdb5f('0x9')]);router[_0xdb5f('0xa')](_0xdb5f('0xb'),auth[_0xdb5f('0x8')](),controller[_0xdb5f('0xc')]);router[_0xdb5f('0xa')](_0xdb5f('0xd'),auth[_0xdb5f('0x8')](),controller[_0xdb5f('0xe')]);router[_0xdb5f('0xa')](_0xdb5f('0xf'),auth[_0xdb5f('0x8')](),controller[_0xdb5f('0x10')]);router[_0xdb5f('0x11')]('/',auth['isAuthenticated'](),interaction[_0xdb5f('0x12')](_0xdb5f('0x13'),_0xdb5f('0x14')),controller[_0xdb5f('0x15')]);router['put']('/:id',auth[_0xdb5f('0x8')](),controller[_0xdb5f('0x16')]);router[_0xdb5f('0x17')]('/:id/accept',auth['isAuthenticated'](),controller['accept']);router['put'](_0xdb5f('0x18'),auth[_0xdb5f('0x8')](),controller[_0xdb5f('0x19')]);router[_0xdb5f('0x1a')](_0xdb5f('0xd'),auth['isAuthenticated'](),controller[_0xdb5f('0x1b')]);module['exports']=router;
\ No newline at end of file
index 0882620..3e34b62 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x07a4=['INTEGER','Email','Chat','sequelize','lodash','exports','TEXT','long','medium','BOOLEAN','ENUM','out','STRING','DATE'];(function(_0xad3f02,_0x1e83b5){var _0x119711=function(_0x187db5){while(--_0x187db5){_0xad3f02['push'](_0xad3f02['shift']());}};_0x119711(++_0x1e83b5);}(_0x07a4,0xff));var _0x407a=function(_0x1f2376,_0x599e0f){_0x1f2376=_0x1f2376-0x0;var _0x320454=_0x07a4[_0x1f2376];return _0x320454;};'use strict';var Sequelize=require(_0x407a('0x0'));var _=require(_0x407a('0x1'));module[_0x407a('0x2')]={'body':{'type':Sequelize[_0x407a('0x3')](_0x407a('0x4')),'allowNull':![]},'plainBody':{'type':Sequelize[_0x407a('0x3')](_0x407a('0x5'))},'read':{'type':Sequelize[_0x407a('0x6')],'defaultValue':![]},'direction':{'type':Sequelize[_0x407a('0x7')]('in',_0x407a('0x8')),'defaultValue':_0x407a('0x8'),'allowNull':![]},'messageId':{'type':Sequelize['STRING'](0x1fe)},'from':{'type':Sequelize[_0x407a('0x9')]},'to':{'type':Sequelize['TEXT'](_0x407a('0x4'))},'cc':{'type':Sequelize[_0x407a('0x3')](_0x407a('0x4'))},'bcc':{'type':Sequelize[_0x407a('0x3')](_0x407a('0x4'))},'subject':{'type':Sequelize[_0x407a('0x3')]},'sentAt':{'type':Sequelize[_0x407a('0xa')]},'attach':{'type':Sequelize[_0x407a('0xb')],'defaultValue':0x0},'secret':{'type':Sequelize[_0x407a('0x6')],'defaultValue':![]},'readAt':{'type':Sequelize['DATE']},'originTo':{'type':Sequelize[_0x407a('0x3')](_0x407a('0x4'))},'originCc':{'type':Sequelize[_0x407a('0x3')](_0x407a('0x4'))},'originChannel':{'type':Sequelize[_0x407a('0x7')](_0x407a('0xc'),_0x407a('0xd')),'defaultValue':'Email','allowNull':![]}};
\ No newline at end of file
+var _0x86dc=['TEXT','long','medium','ENUM','out','STRING','BOOLEAN','DATE','Email','Chat','sequelize'];(function(_0x2e65c8,_0x7a63cd){var _0x4b52e2=function(_0x3a5bd1){while(--_0x3a5bd1){_0x2e65c8['push'](_0x2e65c8['shift']());}};_0x4b52e2(++_0x7a63cd);}(_0x86dc,0x13e));var _0xc86d=function(_0x530e17,_0x3308bd){_0x530e17=_0x530e17-0x0;var _0xda04da=_0x86dc[_0x530e17];return _0xda04da;};'use strict';var Sequelize=require(_0xc86d('0x0'));var _=require('lodash');module['exports']={'body':{'type':Sequelize[_0xc86d('0x1')](_0xc86d('0x2')),'allowNull':![]},'plainBody':{'type':Sequelize[_0xc86d('0x1')](_0xc86d('0x3'))},'read':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'direction':{'type':Sequelize[_0xc86d('0x4')]('in','out'),'defaultValue':_0xc86d('0x5'),'allowNull':![]},'messageId':{'type':Sequelize['STRING'](0x1fe)},'from':{'type':Sequelize[_0xc86d('0x6')]},'to':{'type':Sequelize[_0xc86d('0x1')](_0xc86d('0x2'))},'cc':{'type':Sequelize['TEXT'](_0xc86d('0x2'))},'bcc':{'type':Sequelize['TEXT'](_0xc86d('0x2'))},'subject':{'type':Sequelize[_0xc86d('0x1')]},'sentAt':{'type':Sequelize['DATE']},'attach':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'secret':{'type':Sequelize[_0xc86d('0x7')],'defaultValue':![]},'readAt':{'type':Sequelize[_0xc86d('0x8')]},'originTo':{'type':Sequelize['TEXT'](_0xc86d('0x2'))},'originCc':{'type':Sequelize[_0xc86d('0x1')](_0xc86d('0x2'))},'originChannel':{'type':Sequelize[_0xc86d('0x4')](_0xc86d('0x9'),_0xc86d('0xa')),'defaultValue':_0xc86d('0x9'),'allowNull':![]}};
\ No newline at end of file
index f7479e5..d829b4e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xcc6f=['type','model','map','query','keys','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort','pick','filter','merge','where','MailMessage','includeAll','include','findAll','rows','show','params','options','body','find','describe','create','direction','out','secret','split','MailAccount','MailAccountId','CmList','List','CmContact','DESC','Smtp','service','host','port','secure','authentication','auth','pass','user','attachments','root','server/files/attachments','basename','Contacts','defaults','ListId','List\x20not\x20found','SendMail','sendMail','messageId','format','YYYY-MM-DD\x20HH:mm:ss','mail','read','readAt','UserId','get','MailInteraction','MailInteractionId','isNil','read1stAt','[MAILMESSAGE:ACCEPT]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s','role','interaction','AcceptMessage','acceptMessage','sequelize','Sequelize','QueryTypes','SELECT','contact','User','agent','fullname','email','internal','interface','SIP/%s','channel','motionChannel','event','accept','EventManager','acceptmessage','reject','[MAILMESSAGE:REJECT]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s','RejectMessage','rejectMessage','SELECT\x20*\x20FROM\x20cm_contacts\x20WHERE\x20id\x20=\x20','fromString','rejectmessage','download','toString','join','server','tmp','files','from','bcc','subject','createdAt','Attachment','Attachments','ddd,\x20DD\x20MMM\x20YYYY\x20HH:mm:ss\x20ZZ','headers','existsSync','push','readFileSync','build','writeFileSync','unlinkSync','eml-format','bluebird','util','lodash','ioredis','html-to-text','../../config/logger','api','mail-interactions','../../config/environment','../../mysqldb','redis','localhost','./mailMessage.socket','register','jayson/promise','client','http','request\x20sent','MailMessage,\x20%s,\x20%s,\x20%s','stringify','error','code','message','MailMessage,\x20%s,\x20%s','info','catch','status','offset','undefined','limit','count','set','Content-Range','json','update','then','destroy','end','sendStatus','stack','name','index','rawAttributes','fieldName'];(function(_0x447b93,_0x2670ae){var _0x1fd738=function(_0x52dab5){while(--_0x52dab5){_0x447b93['push'](_0x447b93['shift']());}};_0x1fd738(++_0x2670ae);}(_0xcc6f,0x1c5));var _0xfcc6=function(_0x465a0c,_0x19d4d5){_0x465a0c=_0x465a0c-0x0;var _0x1e202e=_0xcc6f[_0x465a0c];return _0x1e202e;};'use strict';var emlformat=require(_0xfcc6('0x0'));var moment=require('moment');var BPromise=require(_0xfcc6('0x1'));var util=require(_0xfcc6('0x2'));var path=require('path');var fs=require('fs');var _=require(_0xfcc6('0x3'));var Redis=require(_0xfcc6('0x4'));var htmlToText=require(_0xfcc6('0x5'));var qs=require('../../components/parsers/qs');var logger=require(_0xfcc6('0x6'))(_0xfcc6('0x7'));var interaction_log=require('../../config/logger')(_0xfcc6('0x8'));var config=require(_0xfcc6('0x9'));var db=require(_0xfcc6('0xa'))['db'];config[_0xfcc6('0xb')]=_['defaults'](config[_0xfcc6('0xb')],{'host':_0xfcc6('0xc'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config['redis']));require(_0xfcc6('0xd'))[_0xfcc6('0xe')](socket);var jayson=require(_0xfcc6('0xf'));var client=jayson[_0xfcc6('0x10')][_0xfcc6('0x11')]({'port':0x232c});var client9003=jayson[_0xfcc6('0x10')][_0xfcc6('0x11')]({'port':0x232b});var client9002=jayson[_0xfcc6('0x10')]['http']({'port':0x232a});function respondWithRpcPromise(_0x2a45cb,_0x426ad4,_0x4b91c8,_0xc08dc7){return new BPromise(function(_0x2a4c94,_0x6cf0cb){var _0x60c54b=_0xc08dc7||client;return _0x60c54b['request'](_0x2a45cb,_0x4b91c8)['then'](function(_0x2ee76a){logger['info']('MailMessage,\x20%s,\x20%s',_0x426ad4,_0xfcc6('0x12'));logger['debug'](_0xfcc6('0x13'),_0x426ad4,_0xfcc6('0x12'),JSON[_0xfcc6('0x14')](_0x2ee76a));if(_0x2ee76a[_0xfcc6('0x15')]){if(_0x2ee76a[_0xfcc6('0x15')][_0xfcc6('0x16')]===0x1f4){logger[_0xfcc6('0x15')]('MailMessage,\x20%s,\x20%s',_0x426ad4,_0x2ee76a[_0xfcc6('0x15')]['message']);return _0x6cf0cb(_0x2ee76a[_0xfcc6('0x15')][_0xfcc6('0x17')]);}logger['error'](_0xfcc6('0x18'),_0x426ad4,_0x2ee76a[_0xfcc6('0x15')][_0xfcc6('0x17')]);return _0x2a4c94(_0x2ee76a[_0xfcc6('0x15')][_0xfcc6('0x17')]);}else{logger[_0xfcc6('0x19')](_0xfcc6('0x18'),_0x426ad4,'request\x20sent');_0x2a4c94(_0x2ee76a['result'][_0xfcc6('0x17')]);}})[_0xfcc6('0x1a')](function(_0x53baff){logger[_0xfcc6('0x15')](_0xfcc6('0x18'),_0x426ad4,_0x53baff);_0x6cf0cb(_0x53baff);});});}function respondWithResult(_0x1c4121,_0x156bb1){_0x156bb1=_0x156bb1||0xc8;return function(_0x5bcaa7){if(_0x5bcaa7){return _0x1c4121[_0xfcc6('0x1b')](_0x156bb1)['json'](_0x5bcaa7);}};}function respondWithFilteredResult(_0x126878,_0xd142ab){return function(_0x250c6e){if(_0x250c6e){var _0x2ef46d=typeof _0xd142ab[_0xfcc6('0x1c')]===_0xfcc6('0x1d')&&typeof _0xd142ab[_0xfcc6('0x1e')]===_0xfcc6('0x1d');var _0x148b5f=_0x250c6e[_0xfcc6('0x1f')];var _0x29c214=_0x2ef46d?0x0:_0xd142ab[_0xfcc6('0x1c')];var _0x44a906=_0x2ef46d?_0x250c6e[_0xfcc6('0x1f')]:_0xd142ab['offset']+_0xd142ab['limit'];var _0x499d85;if(_0x44a906>=_0x148b5f){_0x44a906=_0x148b5f;_0x499d85=0xc8;}else{_0x499d85=0xce;}_0x126878[_0xfcc6('0x1b')](_0x499d85);return _0x126878[_0xfcc6('0x20')](_0xfcc6('0x21'),_0x29c214+'-'+_0x44a906+'/'+_0x148b5f)[_0xfcc6('0x22')](_0x250c6e);}return null;};}function saveUpdates(_0x24fdc2){return function(_0x33e876){if(_0x33e876){return _0x33e876[_0xfcc6('0x23')](_0x24fdc2)[_0xfcc6('0x24')](function(_0x50f0a5){return _0x50f0a5;});}return null;};}function removeEntity(_0xa85b02){return function(_0x51fc09){if(_0x51fc09){return _0x51fc09[_0xfcc6('0x25')]()['then'](function(){_0xa85b02[_0xfcc6('0x1b')](0xcc)[_0xfcc6('0x26')]();});}};}function handleEntityNotFound(_0x63ece7){return function(_0x308dae){if(!_0x308dae){_0x63ece7[_0xfcc6('0x27')](0x194);}return _0x308dae;};}function handleError(_0x653dcd,_0x593723){_0x593723=_0x593723||0x1f4;return function(_0x379313){logger['error'](_0x379313[_0xfcc6('0x28')]);if(_0x379313[_0xfcc6('0x29')]){delete _0x379313[_0xfcc6('0x29')];}_0x653dcd[_0xfcc6('0x1b')](_0x593723)['send'](_0x379313);};}exports[_0xfcc6('0x2a')]=function(_0x27d2d9,_0x365ae5){var _0x52dfa2={},_0x308abe={},_0xb2b929={'count':0x0,'rows':[]};var _0x239df0=_['map'](db['MailMessage'][_0xfcc6('0x2b')],function(_0x4d719b){return{'name':_0x4d719b[_0xfcc6('0x2c')],'type':_0x4d719b[_0xfcc6('0x2d')]['key']};});_0x308abe[_0xfcc6('0x2e')]=_[_0xfcc6('0x2f')](_0x239df0,_0xfcc6('0x29'));_0x308abe[_0xfcc6('0x30')]=_[_0xfcc6('0x31')](_0x27d2d9[_0xfcc6('0x30')]);_0x308abe[_0xfcc6('0x32')]=_[_0xfcc6('0x33')](_0x308abe[_0xfcc6('0x2e')],_0x308abe[_0xfcc6('0x30')]);_0x52dfa2[_0xfcc6('0x34')]=_[_0xfcc6('0x33')](_0x308abe[_0xfcc6('0x2e')],qs[_0xfcc6('0x35')](_0x27d2d9[_0xfcc6('0x30')][_0xfcc6('0x35')]));_0x52dfa2[_0xfcc6('0x34')]=_0x52dfa2['attributes'][_0xfcc6('0x36')]?_0x52dfa2[_0xfcc6('0x34')]:_0x308abe[_0xfcc6('0x2e')];if(!_0x27d2d9[_0xfcc6('0x30')][_0xfcc6('0x37')](_0xfcc6('0x38'))){_0x52dfa2[_0xfcc6('0x1e')]=qs[_0xfcc6('0x1e')](_0x27d2d9[_0xfcc6('0x30')][_0xfcc6('0x1e')]);_0x52dfa2[_0xfcc6('0x1c')]=qs[_0xfcc6('0x1c')](_0x27d2d9[_0xfcc6('0x30')][_0xfcc6('0x1c')]);}_0x52dfa2[_0xfcc6('0x39')]=qs[_0xfcc6('0x3a')](_0x27d2d9[_0xfcc6('0x30')]['sort']);_0x52dfa2['where']=qs[_0xfcc6('0x32')](_[_0xfcc6('0x3b')](_0x27d2d9[_0xfcc6('0x30')],_0x308abe[_0xfcc6('0x32')]),_0x239df0);if(_0x27d2d9[_0xfcc6('0x30')][_0xfcc6('0x3c')]){_0x52dfa2['where']=_['merge'](_0x52dfa2['where'],{'$or':_[_0xfcc6('0x2f')](_0x239df0,function(_0x370188){if(_0x370188['type']!=='VIRTUAL'){var _0x14f58a={};_0x14f58a[_0x370188[_0xfcc6('0x29')]]={'$like':'%'+_0x27d2d9[_0xfcc6('0x30')][_0xfcc6('0x3c')]+'%'};return _0x14f58a;}})});}_0x52dfa2=_[_0xfcc6('0x3d')]({},_0x52dfa2,_0x27d2d9['options']);var _0x10d29e={'where':_0x52dfa2[_0xfcc6('0x3e')]};return db[_0xfcc6('0x3f')][_0xfcc6('0x1f')](_0x10d29e)[_0xfcc6('0x24')](function(_0x3cb9ca){_0xb2b929[_0xfcc6('0x1f')]=_0x3cb9ca;if(_0x27d2d9['query'][_0xfcc6('0x40')]){_0x52dfa2[_0xfcc6('0x41')]=[{'all':!![]}];}return db[_0xfcc6('0x3f')][_0xfcc6('0x42')](_0x52dfa2);})[_0xfcc6('0x24')](function(_0x4a5d51){_0xb2b929[_0xfcc6('0x43')]=_0x4a5d51;return _0xb2b929;})[_0xfcc6('0x24')](respondWithFilteredResult(_0x365ae5,_0x52dfa2))[_0xfcc6('0x1a')](handleError(_0x365ae5,null));};exports[_0xfcc6('0x44')]=function(_0x3da417,_0x1a3748){var _0x50b40d={'raw':!![],'where':{'id':_0x3da417[_0xfcc6('0x45')]['id']}},_0x34db84={};_0x34db84[_0xfcc6('0x2e')]=_[_0xfcc6('0x31')](db[_0xfcc6('0x3f')]['rawAttributes']);_0x34db84[_0xfcc6('0x30')]=_[_0xfcc6('0x31')](_0x3da417[_0xfcc6('0x30')]);_0x34db84[_0xfcc6('0x32')]=_[_0xfcc6('0x33')](_0x34db84[_0xfcc6('0x2e')],_0x34db84[_0xfcc6('0x30')]);_0x50b40d[_0xfcc6('0x34')]=_[_0xfcc6('0x33')](_0x34db84[_0xfcc6('0x2e')],qs[_0xfcc6('0x35')](_0x3da417[_0xfcc6('0x30')][_0xfcc6('0x35')]));_0x50b40d[_0xfcc6('0x34')]=_0x50b40d[_0xfcc6('0x34')][_0xfcc6('0x36')]?_0x50b40d[_0xfcc6('0x34')]:_0x34db84[_0xfcc6('0x2e')];if(_0x3da417['query'][_0xfcc6('0x40')]){_0x50b40d['include']=[{'all':!![]}];}_0x50b40d=_['merge']({},_0x50b40d,_0x3da417[_0xfcc6('0x46')]);return db['MailMessage']['find'](_0x50b40d)[_0xfcc6('0x24')](handleEntityNotFound(_0x1a3748,null))['then'](respondWithResult(_0x1a3748,null))[_0xfcc6('0x1a')](handleError(_0x1a3748,null));};exports[_0xfcc6('0x23')]=function(_0x3b45f5,_0x5c192f){if(_0x3b45f5[_0xfcc6('0x47')]['id']){delete _0x3b45f5[_0xfcc6('0x47')]['id'];}return db['MailMessage']['find']({'where':{'id':_0x3b45f5['params']['id']}})[_0xfcc6('0x24')](handleEntityNotFound(_0x5c192f,null))[_0xfcc6('0x24')](saveUpdates(_0x3b45f5[_0xfcc6('0x47')],null))[_0xfcc6('0x24')](respondWithResult(_0x5c192f,null))[_0xfcc6('0x1a')](handleError(_0x5c192f,null));};exports[_0xfcc6('0x25')]=function(_0x2196c1,_0x1bf125){return db[_0xfcc6('0x3f')][_0xfcc6('0x48')]({'where':{'id':_0x2196c1[_0xfcc6('0x45')]['id']}})[_0xfcc6('0x24')](handleEntityNotFound(_0x1bf125,null))[_0xfcc6('0x24')](removeEntity(_0x1bf125,null))['catch'](handleError(_0x1bf125,null));};exports[_0xfcc6('0x49')]=function(_0x575d69,_0x2ca28a){return db['MailMessage'][_0xfcc6('0x49')]()[_0xfcc6('0x24')](respondWithResult(_0x2ca28a,null))[_0xfcc6('0x1a')](handleError(_0x2ca28a,null));};exports['create']=function(_0x484516,_0x18219f){return db[_0xfcc6('0x3f')][_0xfcc6('0x4a')](_0x484516[_0xfcc6('0x47')])[_0xfcc6('0x24')](function(_0x344a74){if(_0x344a74){if(_0x344a74[_0xfcc6('0x4b')]===_0xfcc6('0x4c')&&!_0x344a74[_0xfcc6('0x4d')]){var _0x1932e9,_0x2abd38,_0x4797b7;if(_0x484516[_0xfcc6('0x47')]['to']){_0x2abd38=_0x484516[_0xfcc6('0x47')]['to'][_0xfcc6('0x4e')](',')[0x0];}return db[_0xfcc6('0x4f')]['findOne']({'where':{'id':_0x344a74[_0xfcc6('0x50')]},'include':[{'model':db[_0xfcc6('0x51')],'as':_0xfcc6('0x52'),'include':[{'model':db[_0xfcc6('0x53')],'as':'Contacts','where':{'email':_0x2abd38},'limit':0x1,'order':[['updatedAt',_0xfcc6('0x54')]]}]},{'model':db['MailServerOut'],'as':'Smtp','raw':!![]}]})[_0xfcc6('0x24')](function(_0x5af2e2){_0x1932e9=_0x5af2e2;if(_0x1932e9&&_0x1932e9[_0xfcc6('0x55')]){var _0x2725ea={'tls':{'rejectUnauthorized':![]}};if(_['isNil'](_0x1932e9['Smtp'][_0xfcc6('0x56')])){_0x2725ea[_0xfcc6('0x57')]=_0x1932e9['Smtp'][_0xfcc6('0x57')];_0x2725ea[_0xfcc6('0x58')]=_0x1932e9['Smtp'][_0xfcc6('0x58')];_0x2725ea[_0xfcc6('0x59')]=_0x1932e9[_0xfcc6('0x55')][_0xfcc6('0x59')];if(_0x1932e9['Smtp'][_0xfcc6('0x5a')]){_0x2725ea[_0xfcc6('0x5b')]={'user':_0x1932e9[_0xfcc6('0x55')]['user'],'pass':_0x1932e9[_0xfcc6('0x55')][_0xfcc6('0x5c')]};}}else{_0x2725ea[_0xfcc6('0x56')]=_0x1932e9[_0xfcc6('0x55')]['service'];_0x2725ea[_0xfcc6('0x5b')]={'user':_0x1932e9[_0xfcc6('0x55')][_0xfcc6('0x5d')],'pass':_0x1932e9[_0xfcc6('0x55')][_0xfcc6('0x5c')]};_0x2725ea[_0xfcc6('0x59')]=_0x1932e9['Smtp'][_0xfcc6('0x59')];}if(_0x484516['body'][_0xfcc6('0x5e')]&&_0x484516[_0xfcc6('0x47')][_0xfcc6('0x5e')][_0xfcc6('0x36')]){for(var _0x22155c=0x0;_0x22155c<_0x484516['body'][_0xfcc6('0x5e')][_0xfcc6('0x36')];_0x22155c+=0x1){_0x484516[_0xfcc6('0x47')][_0xfcc6('0x5e')][_0x22155c]={'filename':_0x484516[_0xfcc6('0x47')][_0xfcc6('0x5e')][_0x22155c][_0xfcc6('0x29')],'path':path['join'](config[_0xfcc6('0x5f')],_0xfcc6('0x60'),_0x484516[_0xfcc6('0x47')][_0xfcc6('0x5e')][_0x22155c][_0xfcc6('0x61')])};}}_0x4797b7={'account':_0x2725ea,'message':_0x484516[_0xfcc6('0x47')]};return;}})['then'](function(){if(_0x1932e9['List']){if(_0x1932e9['List'][_0xfcc6('0x62')][_0xfcc6('0x36')]){return _0x1932e9[_0xfcc6('0x52')][_0xfcc6('0x62')][0x0];}else{return db[_0xfcc6('0x53')][_0xfcc6('0x4a')](_[_0xfcc6('0x63')](_0x484516[_0xfcc6('0x47')],{'firstName':_0x484516[_0xfcc6('0x47')]['to'],'email':_0x484516['body']['to'],'phone':_0x484516[_0xfcc6('0x47')]['to'],'ListId':_0x1932e9[_0xfcc6('0x64')]}));}}else{throw new Error(_0xfcc6('0x65'));}})['then'](function(){if(_0x4797b7){return respondWithRpcPromise(_0xfcc6('0x66'),_0xfcc6('0x67'),_0x4797b7,client9003)['then'](function(_0xd3aee4){return _0x344a74['update']({'read':!![],'messageId':_0xd3aee4[_0xfcc6('0x68')],'sentAt':moment()[_0xfcc6('0x69')](_0xfcc6('0x6a'))});})[_0xfcc6('0x1a')](function(_0xf532bb){logger[_0xfcc6('0x15')]('%s',JSON['stringify'](_0xf532bb));return _0x344a74;});}return _0x344a74;});}return _0x344a74;}})[_0xfcc6('0x24')](respondWithResult(_0x18219f,0xc9))[_0xfcc6('0x1a')](handleError(_0x18219f,null));};exports['accept']=function(_0x4f14eb,_0x2beb9c){var _0x248029={'agent':{},'channel':_0xfcc6('0x6b')};if(_0x4f14eb[_0xfcc6('0x47')]['id']){delete _0x4f14eb['body']['id'];}_0x4f14eb[_0xfcc6('0x47')][_0xfcc6('0x6c')]=!![];_0x4f14eb[_0xfcc6('0x47')][_0xfcc6('0x6d')]=moment()[_0xfcc6('0x69')]('YYYY-MM-DD\x20HH:mm:ss');_0x4f14eb[_0xfcc6('0x47')][_0xfcc6('0x6e')]=_0x4f14eb['body'][_0xfcc6('0x6e')]||_0x4f14eb[_0xfcc6('0x5d')]['id'];_0x248029['agent']['id']=_0x4f14eb[_0xfcc6('0x47')][_0xfcc6('0x6e')];return db['MailMessage']['find']({'where':{'id':_0x4f14eb['params']['id'],'UserId':null}})[_0xfcc6('0x24')](handleEntityNotFound(_0x2beb9c,null))[_0xfcc6('0x24')](saveUpdates(_0x4f14eb[_0xfcc6('0x47')],null))[_0xfcc6('0x24')](function(_0x5d653a){if(_0x5d653a){_0x248029[_0xfcc6('0x17')]=_0x5d653a[_0xfcc6('0x6f')]({'plain':!![]});return db[_0xfcc6('0x70')][_0xfcc6('0x48')]({'where':{'id':_0x5d653a[_0xfcc6('0x71')]}});}return null;})[_0xfcc6('0x24')](handleEntityNotFound(_0x2beb9c,null))[_0xfcc6('0x24')](function(_0xc0d096){if(_0xc0d096){return _0xc0d096[_0xfcc6('0x23')]({'UserId':_0x4f14eb[_0xfcc6('0x47')]['UserId'],'read1stAt':_[_0xfcc6('0x72')](_0xc0d096[_0xfcc6('0x73')])?moment()[_0xfcc6('0x69')](_0xfcc6('0x6a')):undefined});}return null;})['then'](function(_0x1381ce){if(_0x1381ce){_0x248029['interaction']=_0x1381ce['get']({'plain':!![]});interaction_log[_0xfcc6('0x19')](_0xfcc6('0x74'),_0x4f14eb[_0xfcc6('0x5d')]['id'],_0x4f14eb['user'][_0xfcc6('0x29')],_0x4f14eb[_0xfcc6('0x5d')][_0xfcc6('0x75')],_0x248029[_0xfcc6('0x76')]['id'],_0x4f14eb['body']?JSON[_0xfcc6('0x14')](_0x4f14eb[_0xfcc6('0x47')]):'null');return respondWithRpcPromise(_0xfcc6('0x77'),_0xfcc6('0x78'),_0x248029);}return null;})[_0xfcc6('0x24')](function(_0x3327e6){var _0x502fe4='SELECT\x20*\x20FROM\x20cm_contacts\x20WHERE\x20id\x20=\x20'+_0x3327e6[_0xfcc6('0x17')]['ContactId'];return db[_0xfcc6('0x79')]['query'](_0x502fe4,{'type':db[_0xfcc6('0x7a')][_0xfcc6('0x7b')][_0xfcc6('0x7c')],'raw':!![]})[_0xfcc6('0x24')](function(_0x2d6f0c){return _0x2d6f0c;});})['then'](function(_0x54ff32){if(_0x54ff32){_0x248029[_0xfcc6('0x17')][_0xfcc6('0x7d')]=_0x54ff32[0x0];if(!_0x4f14eb['body'][_0xfcc6('0x6e')])return;return db[_0xfcc6('0x7e')][_0xfcc6('0x48')]({'where':{'id':_0x4f14eb[_0xfcc6('0x47')][_0xfcc6('0x6e')],'role':_0xfcc6('0x7f')},'attributes':['id','name',_0xfcc6('0x80'),_0xfcc6('0x81'),_0xfcc6('0x82')],'raw':!![]});}return null;})[_0xfcc6('0x24')](function(_0x473007){if(!_0x473007)return null;_0x248029[_0xfcc6('0x17')][_0xfcc6('0x7f')]=_0x473007;return _0x248029;})[_0xfcc6('0x24')](function(_0x3662e3){if(_0x3662e3){if(_0x4f14eb[_0xfcc6('0x47')]['manual']){_0x248029[_0xfcc6('0x17')][_0xfcc6('0x83')]=util['format'](_0xfcc6('0x84'),_0x4f14eb[_0xfcc6('0x5d')][_0xfcc6('0x29')]);_0x248029[_0xfcc6('0x17')][_0xfcc6('0x85')]=_0x248029['channel'];_0x248029['message'][_0xfcc6('0x86')]=_0x248029[_0xfcc6('0x85')];_0x248029[_0xfcc6('0x17')][_0xfcc6('0x87')]=_0xfcc6('0x88');_0x248029[_0xfcc6('0x17')]['body']=htmlToText['fromString'](_0x248029['message'][_0xfcc6('0x47')]);return respondWithRpcPromise(_0xfcc6('0x89'),_0xfcc6('0x89'),{'event':_0xfcc6('0x8a'),'message':_0x248029[_0xfcc6('0x17')]},client9002)[_0xfcc6('0x24')](function(){return _0x248029;});}return _0x248029;}return null;})[_0xfcc6('0x24')](respondWithResult(_0x2beb9c,null))[_0xfcc6('0x1a')](handleError(_0x2beb9c,null));};exports[_0xfcc6('0x8b')]=function(_0x534f17,_0x24292b){var _0x2ee1df={'agent':{},'channel':'mail'};if(_0x534f17[_0xfcc6('0x47')]['id']){delete _0x534f17[_0xfcc6('0x47')]['id'];}_0x534f17[_0xfcc6('0x47')][_0xfcc6('0x6e')]=_0x534f17['body'][_0xfcc6('0x6e')]||_0x534f17[_0xfcc6('0x5d')]['id'];_0x2ee1df[_0xfcc6('0x7f')]['id']=_0x534f17['body'][_0xfcc6('0x6e')];return db[_0xfcc6('0x3f')][_0xfcc6('0x48')]({'where':{'id':_0x534f17[_0xfcc6('0x45')]['id'],'UserId':null}})[_0xfcc6('0x24')](handleEntityNotFound(_0x24292b,null))[_0xfcc6('0x24')](function(_0x3d0bfd){if(_0x3d0bfd){_0x2ee1df[_0xfcc6('0x17')]=_0x3d0bfd[_0xfcc6('0x6f')]({'plain':!![]});return db[_0xfcc6('0x70')][_0xfcc6('0x48')]({'where':{'id':_0x3d0bfd[_0xfcc6('0x71')]}});}return null;})[_0xfcc6('0x24')](handleEntityNotFound(_0x24292b,null))[_0xfcc6('0x24')](function(_0x33b388){if(_0x33b388){_0x2ee1df[_0xfcc6('0x76')]=_0x33b388[_0xfcc6('0x6f')]({'plain':!![]});interaction_log[_0xfcc6('0x19')](_0xfcc6('0x8c'),_0x534f17[_0xfcc6('0x5d')]['id'],_0x534f17[_0xfcc6('0x5d')][_0xfcc6('0x29')],_0x534f17[_0xfcc6('0x5d')][_0xfcc6('0x75')],_0x2ee1df[_0xfcc6('0x76')]['id'],_0x534f17['body']?JSON[_0xfcc6('0x14')](_0x534f17[_0xfcc6('0x47')]):'null');return respondWithRpcPromise(_0xfcc6('0x8d'),_0xfcc6('0x8e'),_0x2ee1df);}return null;})[_0xfcc6('0x24')](function(_0x3eea3b){var _0xbaf2d7=_0xfcc6('0x8f')+_0x3eea3b[_0xfcc6('0x17')]['ContactId'];return db[_0xfcc6('0x79')][_0xfcc6('0x30')](_0xbaf2d7,{'type':db['Sequelize'][_0xfcc6('0x7b')][_0xfcc6('0x7c')],'raw':!![]})[_0xfcc6('0x24')](function(_0x400c26){return _0x400c26;});})['then'](function(_0x2574e9){if(_0x2574e9){_0x2ee1df['message'][_0xfcc6('0x7d')]=_0x2574e9[0x0];if(!_0x534f17[_0xfcc6('0x47')][_0xfcc6('0x6e')])return;return db[_0xfcc6('0x7e')][_0xfcc6('0x48')]({'where':{'id':_0x534f17[_0xfcc6('0x47')][_0xfcc6('0x6e')],'role':'agent'},'attributes':['id',_0xfcc6('0x29'),'fullname','email',_0xfcc6('0x82')],'raw':!![]});}return null;})[_0xfcc6('0x24')](function(_0xf7da81){if(!_0xf7da81)return null;_0x2ee1df[_0xfcc6('0x17')][_0xfcc6('0x7f')]=_0xf7da81;return _0x2ee1df;})[_0xfcc6('0x24')](function(_0x2bd4ea){if(_0x2bd4ea){_0x2bd4ea[_0xfcc6('0x17')][_0xfcc6('0x83')]=util[_0xfcc6('0x69')](_0xfcc6('0x84'),_0x534f17[_0xfcc6('0x5d')][_0xfcc6('0x29')]);_0x2bd4ea['message'][_0xfcc6('0x85')]=_0x2ee1df['channel'];_0x2bd4ea[_0xfcc6('0x17')]['motionChannel']=_0x2ee1df[_0xfcc6('0x85')];_0x2bd4ea[_0xfcc6('0x17')]['event']='reject';_0x2bd4ea[_0xfcc6('0x17')][_0xfcc6('0x47')]=htmlToText[_0xfcc6('0x90')](_0x2ee1df[_0xfcc6('0x17')][_0xfcc6('0x47')]);respondWithRpcPromise(_0xfcc6('0x89'),'EventManager',{'event':_0xfcc6('0x91'),'message':_0x2bd4ea[_0xfcc6('0x17')]},client9002);return _0x2ee1df;}return null;})[_0xfcc6('0x24')](respondWithResult(_0x24292b,null))[_0xfcc6('0x1a')](handleError(_0x24292b,null));};exports[_0xfcc6('0x92')]=function(_0x5b9593,_0x2f7a5b){var _0x5eaa65=moment()['unix']()[_0xfcc6('0x93')]();var _0x181694=path[_0xfcc6('0x94')](config[_0xfcc6('0x5f')],_0xfcc6('0x95'),'files',_0xfcc6('0x96'));var _0x56cf55=path[_0xfcc6('0x94')](config[_0xfcc6('0x5f')],'server',_0xfcc6('0x97'),_0xfcc6('0x5e'));var _0x44cd06=util[_0xfcc6('0x69')]('message-%s.eml',_0x5eaa65);return db[_0xfcc6('0x3f')][_0xfcc6('0x48')]({'where':{'id':_0x5b9593['params']['id']},'attributes':['id','body',_0xfcc6('0x98'),'to','cc',_0xfcc6('0x99'),_0xfcc6('0x9a'),_0xfcc6('0x9b')],'include':_0x5b9593[_0xfcc6('0x30')][_0xfcc6('0x5e')]?[{'model':db[_0xfcc6('0x9c')],'as':_0xfcc6('0x9d')}]:undefined})[_0xfcc6('0x24')](handleEntityNotFound(_0x2f7a5b,null))[_0xfcc6('0x24')](function(_0x4e80db){if(_0x4e80db){var _0x554403=_0x4e80db;var _0x1dfd15={'from':_0x554403[_0xfcc6('0x98')],'to':_0x554403['to'],'subject':_0x554403[_0xfcc6('0x9a')],'html':_0x554403[_0xfcc6('0x47')],'headers':{'Date':moment(_0x554403[_0xfcc6('0x9b')])[_0xfcc6('0x69')](_0xfcc6('0x9e'))},'attachments':[]};if(_0x4e80db['cc']){_0x1dfd15[_0xfcc6('0x9f')]['Cc']=_0x4e80db['cc'];}if(_0x4e80db[_0xfcc6('0x99')]){_0x1dfd15[_0xfcc6('0x9f')]['Bcc']=_0x4e80db[_0xfcc6('0x99')];}return new BPromise(function(_0x3f051d,_0x1aab4b){if(_0x4e80db[_0xfcc6('0x9d')]){for(var _0x52d7c6=0x0;_0x52d7c6<_0x4e80db[_0xfcc6('0x9d')]['length'];_0x52d7c6++){var _0x4527ca=_0x4e80db[_0xfcc6('0x9d')][_0x52d7c6];var _0x306ad2=path[_0xfcc6('0x94')](_0x56cf55,_0x4527ca[_0xfcc6('0x61')]);if(fs[_0xfcc6('0xa0')](_0x306ad2)){_0x1dfd15[_0xfcc6('0x5e')][_0xfcc6('0xa1')]({'name':_0x4527ca[_0xfcc6('0x29')],'contentType':_0x4527ca[_0xfcc6('0x2d')],'data':fs[_0xfcc6('0xa2')](_0x306ad2)});}}}emlformat[_0xfcc6('0xa3')](_0x1dfd15,function(_0x2c9750,_0x35bb60){if(_0x2c9750)return _0x1aab4b(_0x2c9750);fs[_0xfcc6('0xa4')](path[_0xfcc6('0x94')](_0x181694,_0x44cd06),_0x35bb60);return _0x3f051d(_0x35bb60);});});}})[_0xfcc6('0x24')](function(_0x489993){if(_0x489993){return _0x2f7a5b[_0xfcc6('0x92')](path[_0xfcc6('0x94')](_0x181694,_0x44cd06),_0x44cd06,function(_0x1f010e){if(!_0x1f010e)fs[_0xfcc6('0xa5')](path[_0xfcc6('0x94')](_0x181694,_0x44cd06));});}})['catch'](handleError(_0x2f7a5b,null));};
\ No newline at end of file
+var _0xedd9=['params','describe','create','secret','split','MailAccount','MailAccountId','List','CmContact','updatedAt','DESC','MailServerOut','Smtp','isNil','port','secure','authentication','auth','service','user','pass','attachments','join','server/files/attachments','defaults','ListId','List\x20not\x20found','sendMail','messageId','format','YYYY-MM-DD\x20HH:mm:ss','accept','mail','readAt','agent','UserId','MailInteraction','MailInteractionId','read1stAt','interaction','get','[MAILMESSAGE:ACCEPT]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s','role','null','acceptMessage','sequelize','Sequelize','contact','User','fullname','email','internal','manual','interface','SIP/%s','channel','event','EventManager','acceptmessage','[MAILMESSAGE:REJECT]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s','RejectMessage','rejectMessage','SELECT\x20*\x20FROM\x20cm_contacts\x20WHERE\x20id\x20=\x20','ContactId','QueryTypes','SELECT','reject','fromString','rejectmessage','unix','toString','root','server','files','tmp','message-%s.eml','from','subject','createdAt','headers','bcc','Bcc','Attachments','basename','existsSync','readFileSync','build','download','unlinkSync','moment','bluebird','util','path','lodash','ioredis','html-to-text','../../components/parsers/qs','api','../../config/logger','mail-interactions','../../config/environment','redis','localhost','socket.io-emitter','register','client','http','request','info','MailMessage,\x20%s,\x20%s','request\x20sent','debug','MailMessage,\x20%s,\x20%s,\x20%s','stringify','error','code','message','catch','json','undefined','limit','count','offset','Content-Range','update','then','destroy','status','end','sendStatus','stack','name','index','map','MailMessage','rawAttributes','fieldName','type','key','model','query','intersection','attributes','fields','length','hasOwnProperty','order','sort','where','pick','filter','merge','VIRTUAL','options','includeAll','include','findAll','rows','show','keys','filters','find','body'];(function(_0x1931a3,_0x475f06){var _0x418ed4=function(_0x1c4db1){while(--_0x1c4db1){_0x1931a3['push'](_0x1931a3['shift']());}};_0x418ed4(++_0x475f06);}(_0xedd9,0xfc));var _0x9edd=function(_0x2ba760,_0x5eaceb){_0x2ba760=_0x2ba760-0x0;var _0x32438a=_0xedd9[_0x2ba760];return _0x32438a;};'use strict';var emlformat=require('eml-format');var moment=require(_0x9edd('0x0'));var BPromise=require(_0x9edd('0x1'));var util=require(_0x9edd('0x2'));var path=require(_0x9edd('0x3'));var fs=require('fs');var _=require(_0x9edd('0x4'));var Redis=require(_0x9edd('0x5'));var htmlToText=require(_0x9edd('0x6'));var qs=require(_0x9edd('0x7'));var logger=require('../../config/logger')(_0x9edd('0x8'));var interaction_log=require(_0x9edd('0x9'))(_0x9edd('0xa'));var config=require(_0x9edd('0xb'));var db=require('../../mysqldb')['db'];config[_0x9edd('0xc')]=_['defaults'](config[_0x9edd('0xc')],{'host':_0x9edd('0xd'),'port':0x18eb});var socket=require(_0x9edd('0xe'))(new Redis(config[_0x9edd('0xc')]));require('./mailMessage.socket')[_0x9edd('0xf')](socket);var jayson=require('jayson/promise');var client=jayson[_0x9edd('0x10')][_0x9edd('0x11')]({'port':0x232c});var client9003=jayson['client'][_0x9edd('0x11')]({'port':0x232b});var client9002=jayson[_0x9edd('0x10')]['http']({'port':0x232a});function respondWithRpcPromise(_0x30c0d7,_0x1b73d1,_0x25e64c,_0xfd544a){return new BPromise(function(_0x287ddd,_0x3a7b84){var _0xfca576=_0xfd544a||client;return _0xfca576[_0x9edd('0x12')](_0x30c0d7,_0x25e64c)['then'](function(_0x176bfa){logger[_0x9edd('0x13')](_0x9edd('0x14'),_0x1b73d1,_0x9edd('0x15'));logger[_0x9edd('0x16')](_0x9edd('0x17'),_0x1b73d1,_0x9edd('0x15'),JSON[_0x9edd('0x18')](_0x176bfa));if(_0x176bfa['error']){if(_0x176bfa[_0x9edd('0x19')][_0x9edd('0x1a')]===0x1f4){logger[_0x9edd('0x19')]('MailMessage,\x20%s,\x20%s',_0x1b73d1,_0x176bfa[_0x9edd('0x19')][_0x9edd('0x1b')]);return _0x3a7b84(_0x176bfa[_0x9edd('0x19')]['message']);}logger[_0x9edd('0x19')]('MailMessage,\x20%s,\x20%s',_0x1b73d1,_0x176bfa[_0x9edd('0x19')][_0x9edd('0x1b')]);return _0x287ddd(_0x176bfa['error']['message']);}else{logger[_0x9edd('0x13')]('MailMessage,\x20%s,\x20%s',_0x1b73d1,_0x9edd('0x15'));_0x287ddd(_0x176bfa['result']['message']);}})[_0x9edd('0x1c')](function(_0x1c46a8){logger['error']('MailMessage,\x20%s,\x20%s',_0x1b73d1,_0x1c46a8);_0x3a7b84(_0x1c46a8);});});}function respondWithResult(_0x341d67,_0x186186){_0x186186=_0x186186||0xc8;return function(_0x477878){if(_0x477878){return _0x341d67['status'](_0x186186)[_0x9edd('0x1d')](_0x477878);}};}function respondWithFilteredResult(_0x1dca43,_0x44a6c1){return function(_0x2ca65f){if(_0x2ca65f){var _0x339a0d=typeof _0x44a6c1['offset']===_0x9edd('0x1e')&&typeof _0x44a6c1[_0x9edd('0x1f')]===_0x9edd('0x1e');var _0x2f9f86=_0x2ca65f[_0x9edd('0x20')];var _0x4d507f=_0x339a0d?0x0:_0x44a6c1['offset'];var _0x3276ee=_0x339a0d?_0x2ca65f[_0x9edd('0x20')]:_0x44a6c1[_0x9edd('0x21')]+_0x44a6c1[_0x9edd('0x1f')];var _0x3c2227;if(_0x3276ee>=_0x2f9f86){_0x3276ee=_0x2f9f86;_0x3c2227=0xc8;}else{_0x3c2227=0xce;}_0x1dca43['status'](_0x3c2227);return _0x1dca43['set'](_0x9edd('0x22'),_0x4d507f+'-'+_0x3276ee+'/'+_0x2f9f86)[_0x9edd('0x1d')](_0x2ca65f);}return null;};}function saveUpdates(_0x1c762c){return function(_0x52746a){if(_0x52746a){return _0x52746a[_0x9edd('0x23')](_0x1c762c)[_0x9edd('0x24')](function(_0x2ae8dd){return _0x2ae8dd;});}return null;};}function removeEntity(_0x41af53){return function(_0x5eccfb){if(_0x5eccfb){return _0x5eccfb[_0x9edd('0x25')]()[_0x9edd('0x24')](function(){_0x41af53[_0x9edd('0x26')](0xcc)[_0x9edd('0x27')]();});}};}function handleEntityNotFound(_0xbbf08f){return function(_0x42e664){if(!_0x42e664){_0xbbf08f[_0x9edd('0x28')](0x194);}return _0x42e664;};}function handleError(_0x1fba7b,_0x19b6c1){_0x19b6c1=_0x19b6c1||0x1f4;return function(_0x1c2e2b){logger[_0x9edd('0x19')](_0x1c2e2b[_0x9edd('0x29')]);if(_0x1c2e2b[_0x9edd('0x2a')]){delete _0x1c2e2b[_0x9edd('0x2a')];}_0x1fba7b[_0x9edd('0x26')](_0x19b6c1)['send'](_0x1c2e2b);};}exports[_0x9edd('0x2b')]=function(_0x259259,_0x267c74){var _0x5d1707={},_0x2d2f88={},_0x3990fb={'count':0x0,'rows':[]};var _0xde9b13=_[_0x9edd('0x2c')](db[_0x9edd('0x2d')][_0x9edd('0x2e')],function(_0x473068){return{'name':_0x473068[_0x9edd('0x2f')],'type':_0x473068[_0x9edd('0x30')][_0x9edd('0x31')]};});_0x2d2f88[_0x9edd('0x32')]=_[_0x9edd('0x2c')](_0xde9b13,_0x9edd('0x2a'));_0x2d2f88[_0x9edd('0x33')]=_['keys'](_0x259259[_0x9edd('0x33')]);_0x2d2f88['filters']=_[_0x9edd('0x34')](_0x2d2f88[_0x9edd('0x32')],_0x2d2f88[_0x9edd('0x33')]);_0x5d1707[_0x9edd('0x35')]=_[_0x9edd('0x34')](_0x2d2f88['model'],qs[_0x9edd('0x36')](_0x259259[_0x9edd('0x33')][_0x9edd('0x36')]));_0x5d1707[_0x9edd('0x35')]=_0x5d1707[_0x9edd('0x35')][_0x9edd('0x37')]?_0x5d1707[_0x9edd('0x35')]:_0x2d2f88[_0x9edd('0x32')];if(!_0x259259[_0x9edd('0x33')][_0x9edd('0x38')]('nolimit')){_0x5d1707[_0x9edd('0x1f')]=qs['limit'](_0x259259[_0x9edd('0x33')]['limit']);_0x5d1707[_0x9edd('0x21')]=qs[_0x9edd('0x21')](_0x259259[_0x9edd('0x33')]['offset']);}_0x5d1707[_0x9edd('0x39')]=qs[_0x9edd('0x3a')](_0x259259[_0x9edd('0x33')]['sort']);_0x5d1707[_0x9edd('0x3b')]=qs['filters'](_[_0x9edd('0x3c')](_0x259259[_0x9edd('0x33')],_0x2d2f88['filters']),_0xde9b13);if(_0x259259[_0x9edd('0x33')][_0x9edd('0x3d')]){_0x5d1707[_0x9edd('0x3b')]=_[_0x9edd('0x3e')](_0x5d1707['where'],{'$or':_[_0x9edd('0x2c')](_0xde9b13,function(_0x5bbdf8){if(_0x5bbdf8[_0x9edd('0x30')]!==_0x9edd('0x3f')){var _0x587d74={};_0x587d74[_0x5bbdf8[_0x9edd('0x2a')]]={'$like':'%'+_0x259259['query']['filter']+'%'};return _0x587d74;}})});}_0x5d1707=_[_0x9edd('0x3e')]({},_0x5d1707,_0x259259[_0x9edd('0x40')]);var _0x1f276b={'where':_0x5d1707[_0x9edd('0x3b')]};return db[_0x9edd('0x2d')][_0x9edd('0x20')](_0x1f276b)[_0x9edd('0x24')](function(_0x75efbe){_0x3990fb[_0x9edd('0x20')]=_0x75efbe;if(_0x259259[_0x9edd('0x33')][_0x9edd('0x41')]){_0x5d1707[_0x9edd('0x42')]=[{'all':!![]}];}return db[_0x9edd('0x2d')][_0x9edd('0x43')](_0x5d1707);})[_0x9edd('0x24')](function(_0x5416f8){_0x3990fb[_0x9edd('0x44')]=_0x5416f8;return _0x3990fb;})[_0x9edd('0x24')](respondWithFilteredResult(_0x267c74,_0x5d1707))[_0x9edd('0x1c')](handleError(_0x267c74,null));};exports[_0x9edd('0x45')]=function(_0x241929,_0x3ecdfd){var _0x10d41e={'raw':!![],'where':{'id':_0x241929['params']['id']}},_0x4e9ad1={};_0x4e9ad1['model']=_[_0x9edd('0x46')](db['MailMessage'][_0x9edd('0x2e')]);_0x4e9ad1[_0x9edd('0x33')]=_[_0x9edd('0x46')](_0x241929[_0x9edd('0x33')]);_0x4e9ad1[_0x9edd('0x47')]=_['intersection'](_0x4e9ad1[_0x9edd('0x32')],_0x4e9ad1[_0x9edd('0x33')]);_0x10d41e[_0x9edd('0x35')]=_['intersection'](_0x4e9ad1[_0x9edd('0x32')],qs[_0x9edd('0x36')](_0x241929[_0x9edd('0x33')][_0x9edd('0x36')]));_0x10d41e[_0x9edd('0x35')]=_0x10d41e[_0x9edd('0x35')]['length']?_0x10d41e[_0x9edd('0x35')]:_0x4e9ad1[_0x9edd('0x32')];if(_0x241929['query'][_0x9edd('0x41')]){_0x10d41e[_0x9edd('0x42')]=[{'all':!![]}];}_0x10d41e=_['merge']({},_0x10d41e,_0x241929[_0x9edd('0x40')]);return db[_0x9edd('0x2d')][_0x9edd('0x48')](_0x10d41e)['then'](handleEntityNotFound(_0x3ecdfd,null))[_0x9edd('0x24')](respondWithResult(_0x3ecdfd,null))[_0x9edd('0x1c')](handleError(_0x3ecdfd,null));};exports[_0x9edd('0x23')]=function(_0x28c7bd,_0x53f6e3){if(_0x28c7bd[_0x9edd('0x49')]['id']){delete _0x28c7bd[_0x9edd('0x49')]['id'];}return db[_0x9edd('0x2d')]['find']({'where':{'id':_0x28c7bd[_0x9edd('0x4a')]['id']}})[_0x9edd('0x24')](handleEntityNotFound(_0x53f6e3,null))['then'](saveUpdates(_0x28c7bd[_0x9edd('0x49')],null))['then'](respondWithResult(_0x53f6e3,null))[_0x9edd('0x1c')](handleError(_0x53f6e3,null));};exports[_0x9edd('0x25')]=function(_0x24245f,_0x3fcdf5){return db[_0x9edd('0x2d')][_0x9edd('0x48')]({'where':{'id':_0x24245f[_0x9edd('0x4a')]['id']}})[_0x9edd('0x24')](handleEntityNotFound(_0x3fcdf5,null))[_0x9edd('0x24')](removeEntity(_0x3fcdf5,null))[_0x9edd('0x1c')](handleError(_0x3fcdf5,null));};exports[_0x9edd('0x4b')]=function(_0x5a3b1d,_0x161bea){return db[_0x9edd('0x2d')][_0x9edd('0x4b')]()['then'](respondWithResult(_0x161bea,null))[_0x9edd('0x1c')](handleError(_0x161bea,null));};exports['create']=function(_0x54d83d,_0x54ecfa){return db[_0x9edd('0x2d')][_0x9edd('0x4c')](_0x54d83d[_0x9edd('0x49')])[_0x9edd('0x24')](function(_0x48a900){if(_0x48a900){if(_0x48a900['direction']==='out'&&!_0x48a900[_0x9edd('0x4d')]){var _0x5f666b,_0xd5090a,_0x1091ff;if(_0x54d83d[_0x9edd('0x49')]['to']){_0xd5090a=_0x54d83d[_0x9edd('0x49')]['to'][_0x9edd('0x4e')](',')[0x0];}return db[_0x9edd('0x4f')]['findOne']({'where':{'id':_0x48a900[_0x9edd('0x50')]},'include':[{'model':db['CmList'],'as':_0x9edd('0x51'),'include':[{'model':db[_0x9edd('0x52')],'as':'Contacts','where':{'email':_0xd5090a},'limit':0x1,'order':[[_0x9edd('0x53'),_0x9edd('0x54')]]}]},{'model':db[_0x9edd('0x55')],'as':'Smtp','raw':!![]}]})[_0x9edd('0x24')](function(_0x2e1ce3){_0x5f666b=_0x2e1ce3;if(_0x5f666b&&_0x5f666b[_0x9edd('0x56')]){var _0x15ebfa={'tls':{'rejectUnauthorized':![]}};if(_[_0x9edd('0x57')](_0x5f666b[_0x9edd('0x56')]['service'])){_0x15ebfa['host']=_0x5f666b[_0x9edd('0x56')]['host'];_0x15ebfa[_0x9edd('0x58')]=_0x5f666b[_0x9edd('0x56')][_0x9edd('0x58')];_0x15ebfa[_0x9edd('0x59')]=_0x5f666b['Smtp'][_0x9edd('0x59')];if(_0x5f666b['Smtp'][_0x9edd('0x5a')]){_0x15ebfa[_0x9edd('0x5b')]={'user':_0x5f666b[_0x9edd('0x56')]['user'],'pass':_0x5f666b[_0x9edd('0x56')]['pass']};}}else{_0x15ebfa[_0x9edd('0x5c')]=_0x5f666b[_0x9edd('0x56')]['service'];_0x15ebfa[_0x9edd('0x5b')]={'user':_0x5f666b['Smtp'][_0x9edd('0x5d')],'pass':_0x5f666b[_0x9edd('0x56')][_0x9edd('0x5e')]};_0x15ebfa['secure']=_0x5f666b[_0x9edd('0x56')][_0x9edd('0x59')];}if(_0x54d83d[_0x9edd('0x49')][_0x9edd('0x5f')]&&_0x54d83d[_0x9edd('0x49')]['attachments']['length']){for(var _0x2e1a96=0x0;_0x2e1a96<_0x54d83d[_0x9edd('0x49')]['attachments']['length'];_0x2e1a96+=0x1){_0x54d83d['body'][_0x9edd('0x5f')][_0x2e1a96]={'filename':_0x54d83d['body']['attachments'][_0x2e1a96][_0x9edd('0x2a')],'path':path[_0x9edd('0x60')](config['root'],_0x9edd('0x61'),_0x54d83d[_0x9edd('0x49')][_0x9edd('0x5f')][_0x2e1a96]['basename'])};}}_0x1091ff={'account':_0x15ebfa,'message':_0x54d83d[_0x9edd('0x49')]};return;}})['then'](function(){if(_0x5f666b[_0x9edd('0x51')]){if(_0x5f666b[_0x9edd('0x51')]['Contacts'][_0x9edd('0x37')]){return _0x5f666b[_0x9edd('0x51')]['Contacts'][0x0];}else{return db[_0x9edd('0x52')][_0x9edd('0x4c')](_[_0x9edd('0x62')](_0x54d83d[_0x9edd('0x49')],{'firstName':_0x54d83d['body']['to'],'email':_0x54d83d[_0x9edd('0x49')]['to'],'phone':_0x54d83d['body']['to'],'ListId':_0x5f666b[_0x9edd('0x63')]}));}}else{throw new Error(_0x9edd('0x64'));}})[_0x9edd('0x24')](function(){if(_0x1091ff){return respondWithRpcPromise('SendMail',_0x9edd('0x65'),_0x1091ff,client9003)[_0x9edd('0x24')](function(_0x130dba){return _0x48a900[_0x9edd('0x23')]({'read':!![],'messageId':_0x130dba[_0x9edd('0x66')],'sentAt':moment()[_0x9edd('0x67')](_0x9edd('0x68'))});})['catch'](function(_0x5e29d0){logger[_0x9edd('0x19')]('%s',JSON[_0x9edd('0x18')](_0x5e29d0));return _0x48a900;});}return _0x48a900;});}return _0x48a900;}})[_0x9edd('0x24')](respondWithResult(_0x54ecfa,0xc9))[_0x9edd('0x1c')](handleError(_0x54ecfa,null));};exports[_0x9edd('0x69')]=function(_0x52f6f3,_0x2e40c8){var _0x5d56a={'agent':{},'channel':_0x9edd('0x6a')};if(_0x52f6f3['body']['id']){delete _0x52f6f3[_0x9edd('0x49')]['id'];}_0x52f6f3[_0x9edd('0x49')]['read']=!![];_0x52f6f3[_0x9edd('0x49')][_0x9edd('0x6b')]=moment()['format'](_0x9edd('0x68'));_0x52f6f3[_0x9edd('0x49')]['UserId']=_0x52f6f3[_0x9edd('0x49')]['UserId']||_0x52f6f3['user']['id'];_0x5d56a[_0x9edd('0x6c')]['id']=_0x52f6f3[_0x9edd('0x49')][_0x9edd('0x6d')];return db['MailMessage'][_0x9edd('0x48')]({'where':{'id':_0x52f6f3[_0x9edd('0x4a')]['id'],'UserId':null}})['then'](handleEntityNotFound(_0x2e40c8,null))[_0x9edd('0x24')](saveUpdates(_0x52f6f3[_0x9edd('0x49')],null))[_0x9edd('0x24')](function(_0x1ad198){if(_0x1ad198){_0x5d56a['message']=_0x1ad198['get']({'plain':!![]});return db[_0x9edd('0x6e')]['find']({'where':{'id':_0x1ad198[_0x9edd('0x6f')]}});}return null;})[_0x9edd('0x24')](handleEntityNotFound(_0x2e40c8,null))[_0x9edd('0x24')](function(_0x3cfd35){if(_0x3cfd35){return _0x3cfd35[_0x9edd('0x23')]({'UserId':_0x52f6f3[_0x9edd('0x49')][_0x9edd('0x6d')],'read1stAt':_[_0x9edd('0x57')](_0x3cfd35[_0x9edd('0x70')])?moment()['format'](_0x9edd('0x68')):undefined});}return null;})[_0x9edd('0x24')](function(_0x2c7562){if(_0x2c7562){_0x5d56a[_0x9edd('0x71')]=_0x2c7562[_0x9edd('0x72')]({'plain':!![]});interaction_log[_0x9edd('0x13')](_0x9edd('0x73'),_0x52f6f3['user']['id'],_0x52f6f3[_0x9edd('0x5d')][_0x9edd('0x2a')],_0x52f6f3['user'][_0x9edd('0x74')],_0x5d56a[_0x9edd('0x71')]['id'],_0x52f6f3['body']?JSON[_0x9edd('0x18')](_0x52f6f3[_0x9edd('0x49')]):_0x9edd('0x75'));return respondWithRpcPromise('AcceptMessage',_0x9edd('0x76'),_0x5d56a);}return null;})[_0x9edd('0x24')](function(_0x3f04d3){var _0x5a7de3='SELECT\x20*\x20FROM\x20cm_contacts\x20WHERE\x20id\x20=\x20'+_0x3f04d3['message']['ContactId'];return db[_0x9edd('0x77')][_0x9edd('0x33')](_0x5a7de3,{'type':db[_0x9edd('0x78')]['QueryTypes']['SELECT'],'raw':!![]})['then'](function(_0x56d794){return _0x56d794;});})[_0x9edd('0x24')](function(_0x20762d){if(_0x20762d){_0x5d56a[_0x9edd('0x1b')][_0x9edd('0x79')]=_0x20762d[0x0];if(!_0x52f6f3[_0x9edd('0x49')][_0x9edd('0x6d')])return;return db[_0x9edd('0x7a')][_0x9edd('0x48')]({'where':{'id':_0x52f6f3[_0x9edd('0x49')][_0x9edd('0x6d')],'role':_0x9edd('0x6c')},'attributes':['id','name',_0x9edd('0x7b'),_0x9edd('0x7c'),_0x9edd('0x7d')],'raw':!![]});}return null;})[_0x9edd('0x24')](function(_0x104afc){if(!_0x104afc)return null;_0x5d56a[_0x9edd('0x1b')][_0x9edd('0x6c')]=_0x104afc;return _0x5d56a;})[_0x9edd('0x24')](function(_0x4a7889){if(_0x4a7889){if(_0x52f6f3['body'][_0x9edd('0x7e')]){_0x5d56a['message'][_0x9edd('0x7f')]=util['format'](_0x9edd('0x80'),_0x52f6f3[_0x9edd('0x5d')]['name']);_0x5d56a[_0x9edd('0x1b')][_0x9edd('0x81')]=_0x5d56a['channel'];_0x5d56a[_0x9edd('0x1b')][_0x9edd('0x82')]=_0x9edd('0x69');_0x5d56a[_0x9edd('0x1b')][_0x9edd('0x49')]=htmlToText['fromString'](_0x5d56a[_0x9edd('0x1b')][_0x9edd('0x49')]);return respondWithRpcPromise(_0x9edd('0x83'),_0x9edd('0x83'),{'event':_0x9edd('0x84'),'message':_0x5d56a['message']},client9002)['then'](function(){return _0x5d56a;});}return _0x5d56a;}return null;})['then'](respondWithResult(_0x2e40c8,null))['catch'](handleError(_0x2e40c8,null));};exports['reject']=function(_0x2da088,_0x5d566e){var _0x58cb3f={'agent':{},'channel':_0x9edd('0x6a')};if(_0x2da088[_0x9edd('0x49')]['id']){delete _0x2da088[_0x9edd('0x49')]['id'];}_0x2da088[_0x9edd('0x49')][_0x9edd('0x6d')]=_0x2da088[_0x9edd('0x49')][_0x9edd('0x6d')]||_0x2da088[_0x9edd('0x5d')]['id'];_0x58cb3f[_0x9edd('0x6c')]['id']=_0x2da088[_0x9edd('0x49')]['UserId'];return db[_0x9edd('0x2d')][_0x9edd('0x48')]({'where':{'id':_0x2da088[_0x9edd('0x4a')]['id'],'UserId':null}})[_0x9edd('0x24')](handleEntityNotFound(_0x5d566e,null))[_0x9edd('0x24')](function(_0x23e925){if(_0x23e925){_0x58cb3f[_0x9edd('0x1b')]=_0x23e925[_0x9edd('0x72')]({'plain':!![]});return db['MailInteraction']['find']({'where':{'id':_0x23e925[_0x9edd('0x6f')]}});}return null;})[_0x9edd('0x24')](handleEntityNotFound(_0x5d566e,null))[_0x9edd('0x24')](function(_0x120d0f){if(_0x120d0f){_0x58cb3f[_0x9edd('0x71')]=_0x120d0f[_0x9edd('0x72')]({'plain':!![]});interaction_log[_0x9edd('0x13')](_0x9edd('0x85'),_0x2da088[_0x9edd('0x5d')]['id'],_0x2da088[_0x9edd('0x5d')][_0x9edd('0x2a')],_0x2da088[_0x9edd('0x5d')][_0x9edd('0x74')],_0x58cb3f[_0x9edd('0x71')]['id'],_0x2da088['body']?JSON[_0x9edd('0x18')](_0x2da088[_0x9edd('0x49')]):'null');return respondWithRpcPromise(_0x9edd('0x86'),_0x9edd('0x87'),_0x58cb3f);}return null;})[_0x9edd('0x24')](function(_0x2b4d4c){var _0x559503=_0x9edd('0x88')+_0x2b4d4c[_0x9edd('0x1b')][_0x9edd('0x89')];return db[_0x9edd('0x77')][_0x9edd('0x33')](_0x559503,{'type':db['Sequelize'][_0x9edd('0x8a')][_0x9edd('0x8b')],'raw':!![]})[_0x9edd('0x24')](function(_0x4633eb){return _0x4633eb;});})[_0x9edd('0x24')](function(_0x59927d){if(_0x59927d){_0x58cb3f['message'][_0x9edd('0x79')]=_0x59927d[0x0];if(!_0x2da088['body'][_0x9edd('0x6d')])return;return db['User'][_0x9edd('0x48')]({'where':{'id':_0x2da088[_0x9edd('0x49')][_0x9edd('0x6d')],'role':_0x9edd('0x6c')},'attributes':['id',_0x9edd('0x2a'),_0x9edd('0x7b'),'email',_0x9edd('0x7d')],'raw':!![]});}return null;})[_0x9edd('0x24')](function(_0x3aae72){if(!_0x3aae72)return null;_0x58cb3f[_0x9edd('0x1b')][_0x9edd('0x6c')]=_0x3aae72;return _0x58cb3f;})[_0x9edd('0x24')](function(_0x2f8fb6){if(_0x2f8fb6){_0x2f8fb6[_0x9edd('0x1b')]['interface']=util[_0x9edd('0x67')](_0x9edd('0x80'),_0x2da088[_0x9edd('0x5d')][_0x9edd('0x2a')]);_0x2f8fb6[_0x9edd('0x1b')][_0x9edd('0x81')]=_0x58cb3f[_0x9edd('0x81')];_0x2f8fb6[_0x9edd('0x1b')][_0x9edd('0x82')]=_0x9edd('0x8c');_0x2f8fb6[_0x9edd('0x1b')][_0x9edd('0x49')]=htmlToText[_0x9edd('0x8d')](_0x58cb3f[_0x9edd('0x1b')][_0x9edd('0x49')]);respondWithRpcPromise(_0x9edd('0x83'),_0x9edd('0x83'),{'event':_0x9edd('0x8e'),'message':_0x2f8fb6[_0x9edd('0x1b')]},client9002);return _0x58cb3f;}return null;})[_0x9edd('0x24')](respondWithResult(_0x5d566e,null))[_0x9edd('0x1c')](handleError(_0x5d566e,null));};exports['download']=function(_0xa704eb,_0x553018){var _0x4ca7e4=moment()[_0x9edd('0x8f')]()[_0x9edd('0x90')]();var _0x220c00=path[_0x9edd('0x60')](config[_0x9edd('0x91')],_0x9edd('0x92'),_0x9edd('0x93'),_0x9edd('0x94'));var _0x3e5a45=path[_0x9edd('0x60')](config['root'],_0x9edd('0x92'),_0x9edd('0x93'),'attachments');var _0x568067=util[_0x9edd('0x67')](_0x9edd('0x95'),_0x4ca7e4);return db[_0x9edd('0x2d')][_0x9edd('0x48')]({'where':{'id':_0xa704eb['params']['id']},'attributes':['id','body',_0x9edd('0x96'),'to','cc','bcc',_0x9edd('0x97'),_0x9edd('0x98')],'include':_0xa704eb[_0x9edd('0x33')]['attachments']?[{'model':db['Attachment'],'as':'Attachments'}]:undefined})[_0x9edd('0x24')](handleEntityNotFound(_0x553018,null))[_0x9edd('0x24')](function(_0x7b0fc8){if(_0x7b0fc8){var _0x5bfbfd=_0x7b0fc8;var _0xb2e72={'from':_0x5bfbfd[_0x9edd('0x96')],'to':_0x5bfbfd['to'],'subject':_0x5bfbfd['subject'],'html':_0x5bfbfd[_0x9edd('0x49')],'headers':{'Date':moment(_0x5bfbfd[_0x9edd('0x98')])['format']('ddd,\x20DD\x20MMM\x20YYYY\x20HH:mm:ss\x20ZZ')},'attachments':[]};if(_0x7b0fc8['cc']){_0xb2e72[_0x9edd('0x99')]['Cc']=_0x7b0fc8['cc'];}if(_0x7b0fc8[_0x9edd('0x9a')]){_0xb2e72['headers'][_0x9edd('0x9b')]=_0x7b0fc8[_0x9edd('0x9a')];}return new BPromise(function(_0x54c6a0,_0x201d76){if(_0x7b0fc8['Attachments']){for(var _0x308a0f=0x0;_0x308a0f<_0x7b0fc8[_0x9edd('0x9c')][_0x9edd('0x37')];_0x308a0f++){var _0x742e13=_0x7b0fc8[_0x9edd('0x9c')][_0x308a0f];var _0x3e6426=path['join'](_0x3e5a45,_0x742e13[_0x9edd('0x9d')]);if(fs[_0x9edd('0x9e')](_0x3e6426)){_0xb2e72[_0x9edd('0x5f')]['push']({'name':_0x742e13[_0x9edd('0x2a')],'contentType':_0x742e13['type'],'data':fs[_0x9edd('0x9f')](_0x3e6426)});}}}emlformat[_0x9edd('0xa0')](_0xb2e72,function(_0x25da04,_0x41b0ea){if(_0x25da04)return _0x201d76(_0x25da04);fs['writeFileSync'](path['join'](_0x220c00,_0x568067),_0x41b0ea);return _0x54c6a0(_0x41b0ea);});});}})['then'](function(_0x12dcfa){if(_0x12dcfa){return _0x553018[_0x9edd('0xa1')](path[_0x9edd('0x60')](_0x220c00,_0x568067),_0x568067,function(_0x50af78){if(!_0x50af78)fs[_0x9edd('0xa2')](path[_0x9edd('0x60')](_0x220c00,_0x568067));});}})[_0x9edd('0x1c')](handleError(_0x553018,null));};
\ No newline at end of file
index fa3992f..996815d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xcea6=['hasOwnProperty','hook','exports','events','../../mysqldb','update','emit'];(function(_0xe43c9c,_0x339a6e){var _0x37e019=function(_0x3eef3c){while(--_0x3eef3c){_0xe43c9c['push'](_0xe43c9c['shift']());}};_0x37e019(++_0x339a6e);}(_0xcea6,0xf1));var _0x6cea=function(_0x204a08,_0x50583a){_0x204a08=_0x204a08-0x0;var _0xfc55d9=_0xcea6[_0x204a08];return _0xfc55d9;};'use strict';var EventEmitter=require(_0x6cea('0x0'));var MailMessage=require(_0x6cea('0x1'))['db']['MailMessage'];var MailMessageEvents=new EventEmitter();MailMessageEvents['setMaxListeners'](0x0);var events={'afterCreate':'save','afterUpdate':_0x6cea('0x2'),'afterDestroy':'remove'};function emitEvent(_0x524eaf){return function(_0x2a6acc,_0x1cb19d,_0x5b83f8){MailMessageEvents[_0x6cea('0x3')](_0x524eaf+':'+_0x2a6acc['id'],_0x2a6acc);MailMessageEvents[_0x6cea('0x3')](_0x524eaf,_0x2a6acc);_0x5b83f8(null);};}for(var e in events){if(events[_0x6cea('0x4')](e)){var event=events[e];MailMessage[_0x6cea('0x5')](e,emitEvent(event));}}module[_0x6cea('0x6')]=MailMessageEvents;
\ No newline at end of file
+var _0x23d0=['remove','emit','hasOwnProperty','exports','setMaxListeners','save'];(function(_0xbf2586,_0x5dd118){var _0xec3b0b=function(_0x39f7eb){while(--_0x39f7eb){_0xbf2586['push'](_0xbf2586['shift']());}};_0xec3b0b(++_0x5dd118);}(_0x23d0,0xbe));var _0x023d=function(_0x4ba964,_0x525a2b){_0x4ba964=_0x4ba964-0x0;var _0x428196=_0x23d0[_0x4ba964];return _0x428196;};'use strict';var EventEmitter=require('events');var MailMessage=require('../../mysqldb')['db']['MailMessage'];var MailMessageEvents=new EventEmitter();MailMessageEvents[_0x023d('0x0')](0x0);var events={'afterCreate':_0x023d('0x1'),'afterUpdate':'update','afterDestroy':_0x023d('0x2')};function emitEvent(_0x5ab36a){return function(_0x15bc83,_0x37a51e,_0x2ab90){MailMessageEvents[_0x023d('0x3')](_0x5ab36a+':'+_0x15bc83['id'],_0x15bc83);MailMessageEvents[_0x023d('0x3')](_0x5ab36a,_0x15bc83);_0x2ab90(null);};}for(var e in events){if(events[_0x023d('0x4')](e)){var event=events[e];MailMessage['hook'](e,emitEvent(event));}}module[_0x023d('0x5')]=MailMessageEvents;
\ No newline at end of file
index 3547332..15b1034 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8695=['../../config/environment','exports','define','messageId','plainBody','subject','FULLTEXT','body','fromString','models','get','direction','out','MailInteraction','then','update','createdAt','toLowerCase','error','utf8mb4','utf8mb4_unicode_ci','lodash','util','../../config/logger','api','moment','bluebird','request-promise','path','rimraf'];(function(_0x23dbe2,_0x1cd0c4){var _0x4ae458=function(_0xb967b4){while(--_0xb967b4){_0x23dbe2['push'](_0x23dbe2['shift']());}};_0x4ae458(++_0x1cd0c4);}(_0x8695,0x8d));var _0x5869=function(_0x88ffd4,_0x25f7e6){_0x88ffd4=_0x88ffd4-0x0;var _0x528f9c=_0x8695[_0x88ffd4];return _0x528f9c;};'use strict';var _=require(_0x5869('0x0'));var util=require(_0x5869('0x1'));var logger=require(_0x5869('0x2'))(_0x5869('0x3'));var moment=require(_0x5869('0x4'));var BPromise=require(_0x5869('0x5'));var rp=require(_0x5869('0x6'));var htmlToText=require('html-to-text');var fs=require('fs');var path=require(_0x5869('0x7'));var rimraf=require(_0x5869('0x8'));var config=require(_0x5869('0x9'));var attributes=require('./mailMessage.attributes');module[_0x5869('0xa')]=function(_0x548842,_0x7afe55){return _0x548842[_0x5869('0xb')]('MailMessage',attributes,{'tableName':'mail_messages','paranoid':![],'indexes':[{'name':_0x5869('0xc'),'fields':['messageId']},{'name':'fti_mail_messages','fields':[_0x5869('0xd'),_0x5869('0xe')],'type':_0x5869('0xf')}],'timestamps':!![],'hooks':{'beforeCreate':function(_0x5a253c,_0x3eabc4,_0x1de1af){if(_0x5a253c[_0x5869('0x10')]){_0x5a253c[_0x5869('0xd')]=htmlToText[_0x5869('0x11')](_0x5a253c[_0x5869('0x10')],{'preserveNewlines':!![],'singleNewLineParagraphs':!![],'uppercaseHeadings':![],'noLinkBrackets':!![],'ignoreImage':!![]});}_0x1de1af(null,_0x3eabc4);},'afterCreate':function(_0x1e483f,_0x4fa810,_0x364923){var _0x5ec8fc=_0x548842[_0x5869('0x12')];var _0x235e0b=_0x1e483f[_0x5869('0x13')]({'plain':!![]});if(_0x235e0b[_0x5869('0x14')]['toLowerCase']()==='in'||_0x235e0b[_0x5869('0x14')]['toLowerCase']()===_0x5869('0x15')&&!_0x235e0b['secret']&&!_['isNil'](_0x235e0b['UserId'])){_0x5ec8fc[_0x5869('0x16')]['findOne']({'where':{'id':_0x235e0b['MailInteractionId']}})[_0x5869('0x17')](function(_0x3e48b4){if(_0x3e48b4){_0x3e48b4[_0x5869('0x18')]({'lastMsgAt':_0x235e0b[_0x5869('0x19')],'lastMsgDirection':_0x235e0b[_0x5869('0x14')][_0x5869('0x1a')]()});}})['catch'](function(_0x5ba410){console[_0x5869('0x1b')](_0x5ba410);});}_0x364923();}},'charset':_0x5869('0x1c'),'collate':_0x5869('0x1d')});};
\ No newline at end of file
+var _0xa92f=['lodash','util','../../config/logger','api','moment','bluebird','request-promise','html-to-text','path','rimraf','../../config/environment','exports','define','MailMessage','messageId','fti_mail_messages','subject','body','plainBody','fromString','models','get','direction','toLowerCase','out','MailInteraction','findOne','then','createdAt','catch','error','utf8mb4_unicode_ci'];(function(_0x2b9db9,_0xe912f8){var _0x291402=function(_0x10aaee){while(--_0x10aaee){_0x2b9db9['push'](_0x2b9db9['shift']());}};_0x291402(++_0xe912f8);}(_0xa92f,0x1e0));var _0xfa92=function(_0x317d8c,_0x172a05){_0x317d8c=_0x317d8c-0x0;var _0xb9bcf=_0xa92f[_0x317d8c];return _0xb9bcf;};'use strict';var _=require(_0xfa92('0x0'));var util=require(_0xfa92('0x1'));var logger=require(_0xfa92('0x2'))(_0xfa92('0x3'));var moment=require(_0xfa92('0x4'));var BPromise=require(_0xfa92('0x5'));var rp=require(_0xfa92('0x6'));var htmlToText=require(_0xfa92('0x7'));var fs=require('fs');var path=require(_0xfa92('0x8'));var rimraf=require(_0xfa92('0x9'));var config=require(_0xfa92('0xa'));var attributes=require('./mailMessage.attributes');module[_0xfa92('0xb')]=function(_0x5f2f5a,_0x2af94b){return _0x5f2f5a[_0xfa92('0xc')](_0xfa92('0xd'),attributes,{'tableName':'mail_messages','paranoid':![],'indexes':[{'name':_0xfa92('0xe'),'fields':[_0xfa92('0xe')]},{'name':_0xfa92('0xf'),'fields':['plainBody',_0xfa92('0x10')],'type':'FULLTEXT'}],'timestamps':!![],'hooks':{'beforeCreate':function(_0x1b3060,_0x184896,_0x10d4f4){if(_0x1b3060[_0xfa92('0x11')]){_0x1b3060[_0xfa92('0x12')]=htmlToText[_0xfa92('0x13')](_0x1b3060[_0xfa92('0x11')],{'preserveNewlines':!![],'singleNewLineParagraphs':!![],'uppercaseHeadings':![],'noLinkBrackets':!![],'ignoreImage':!![]});}_0x10d4f4(null,_0x184896);},'afterCreate':function(_0x54ed5b,_0x18a69e,_0x501e0d){var _0x132928=_0x5f2f5a[_0xfa92('0x14')];var _0x54e566=_0x54ed5b[_0xfa92('0x15')]({'plain':!![]});if(_0x54e566[_0xfa92('0x16')][_0xfa92('0x17')]()==='in'||_0x54e566[_0xfa92('0x16')][_0xfa92('0x17')]()===_0xfa92('0x18')&&!_0x54e566['secret']&&!_['isNil'](_0x54e566['UserId'])){_0x132928[_0xfa92('0x19')][_0xfa92('0x1a')]({'where':{'id':_0x54e566['MailInteractionId']}})[_0xfa92('0x1b')](function(_0x49acf2){if(_0x49acf2){_0x49acf2['update']({'lastMsgAt':_0x54e566[_0xfa92('0x1c')],'lastMsgDirection':_0x54e566[_0xfa92('0x16')][_0xfa92('0x17')]()});}})[_0xfa92('0x1d')](function(_0x186070){console[_0xfa92('0x1e')](_0x186070);});}_0x501e0d();}},'charset':'utf8mb4','collate':_0xfa92('0x1f')});};
\ No newline at end of file
index 226723c..7e24bf4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4325=['bluebird','randomstring','ioredis','../../config/logger','rpc','../../config/environment','client','http','defaults','localhost','socket.io-emitter','redis','./mailMessage.socket','register','request','then','MailMessage,\x20%s,\x20%s','request\x20sent','MailMessage,\x20%s,\x20%s,\x20%s','stringify','error','code','message','info','result','catch','CreateMailMessage','MailMessage','create','body','options','debug','lodash','util'];(function(_0x51674a,_0x77ccff){var _0x13fca6=function(_0x3d6c27){while(--_0x3d6c27){_0x51674a['push'](_0x51674a['shift']());}};_0x13fca6(++_0x77ccff);}(_0x4325,0x1da));var _0x5432=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x4325[_0x3dd15e];return _0x231fd0;};'use strict';var _=require(_0x5432('0x0'));var util=require(_0x5432('0x1'));var moment=require('moment');var BPromise=require(_0x5432('0x2'));var rs=require(_0x5432('0x3'));var fs=require('fs');var Redis=require(_0x5432('0x4'));var db=require('../../mysqldb')['db'];var utils=require('../../config/utils');var logger=require(_0x5432('0x5'))(_0x5432('0x6'));var config=require(_0x5432('0x7'));var jayson=require('jayson/promise');var client=jayson[_0x5432('0x8')][_0x5432('0x9')]({'port':0x232a});config['redis']=_[_0x5432('0xa')](config['redis'],{'host':_0x5432('0xb'),'port':0x18eb});var socket=require(_0x5432('0xc'))(new Redis(config[_0x5432('0xd')]));require(_0x5432('0xe'))[_0x5432('0xf')](socket);function respondWithRpcPromise(_0x4a9a51,_0xcc52a,_0x58348a){return new BPromise(function(_0x28ff19,_0x35faac){return client[_0x5432('0x10')](_0x4a9a51,_0x58348a)[_0x5432('0x11')](function(_0x4ac11f){logger['info'](_0x5432('0x12'),_0xcc52a,_0x5432('0x13'));logger['debug'](_0x5432('0x14'),_0xcc52a,_0x5432('0x13'),JSON[_0x5432('0x15')](_0x4ac11f));if(_0x4ac11f[_0x5432('0x16')]){if(_0x4ac11f[_0x5432('0x16')][_0x5432('0x17')]===0x1f4){logger['error']('MailMessage,\x20%s,\x20%s',_0xcc52a,_0x4ac11f[_0x5432('0x16')][_0x5432('0x18')]);return _0x35faac(_0x4ac11f[_0x5432('0x16')][_0x5432('0x18')]);}logger[_0x5432('0x16')](_0x5432('0x12'),_0xcc52a,_0x4ac11f['error'][_0x5432('0x18')]);return _0x28ff19(_0x4ac11f['error'][_0x5432('0x18')]);}else{logger[_0x5432('0x19')](_0x5432('0x12'),_0xcc52a,_0x5432('0x13'));_0x28ff19(_0x4ac11f[_0x5432('0x1a')]['message']);}})[_0x5432('0x1b')](function(_0x22f030){logger[_0x5432('0x16')](_0x5432('0x12'),_0xcc52a,_0x22f030);_0x35faac(_0x22f030);});});}exports[_0x5432('0x1c')]=function(_0x451de4){var _0x29e699=this;return new Promise(function(_0x5da6ea,_0x66911a){return db[_0x5432('0x1d')][_0x5432('0x1e')](_0x451de4[_0x5432('0x1f')],{'raw':_0x451de4[_0x5432('0x20')]?_0x451de4['options']['raw']===undefined?!![]:![]:!![]})['then'](function(_0x61827e){logger[_0x5432('0x19')](_0x5432('0x1c'),_0x451de4);logger[_0x5432('0x21')]('CreateMailMessage',_0x451de4,JSON['stringify'](_0x61827e));_0x5da6ea(_0x61827e);})[_0x5432('0x1b')](function(_0x8ed74b){logger['error'](_0x5432('0x1c'),_0x8ed74b[_0x5432('0x18')],_0x451de4);_0x66911a(_0x29e699[_0x5432('0x16')](0x1f4,_0x8ed74b['message']));});});};
\ No newline at end of file
+var _0xcf66=['redis','localhost','socket.io-emitter','./mailMessage.socket','request','then','debug','MailMessage,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','message','MailMessage,\x20%s,\x20%s','info','catch','CreateMailMessage','MailMessage','body','options','raw','lodash','util','moment','randomstring','ioredis','../../config/logger','rpc','jayson/promise','client','http','defaults'];(function(_0x1ddbe9,_0x2e99b0){var _0x11aeb7=function(_0x4bc253){while(--_0x4bc253){_0x1ddbe9['push'](_0x1ddbe9['shift']());}};_0x11aeb7(++_0x2e99b0);}(_0xcf66,0x71));var _0x6cf6=function(_0x2ba1b2,_0x284f79){_0x2ba1b2=_0x2ba1b2-0x0;var _0x7ec07f=_0xcf66[_0x2ba1b2];return _0x7ec07f;};'use strict';var _=require(_0x6cf6('0x0'));var util=require(_0x6cf6('0x1'));var moment=require(_0x6cf6('0x2'));var BPromise=require('bluebird');var rs=require(_0x6cf6('0x3'));var fs=require('fs');var Redis=require(_0x6cf6('0x4'));var db=require('../../mysqldb')['db'];var utils=require('../../config/utils');var logger=require(_0x6cf6('0x5'))(_0x6cf6('0x6'));var config=require('../../config/environment');var jayson=require(_0x6cf6('0x7'));var client=jayson[_0x6cf6('0x8')][_0x6cf6('0x9')]({'port':0x232a});config['redis']=_[_0x6cf6('0xa')](config[_0x6cf6('0xb')],{'host':_0x6cf6('0xc'),'port':0x18eb});var socket=require(_0x6cf6('0xd'))(new Redis(config[_0x6cf6('0xb')]));require(_0x6cf6('0xe'))['register'](socket);function respondWithRpcPromise(_0x58378c,_0x5b7f4e,_0x8e90e){return new BPromise(function(_0x504c98,_0x1fdf80){return client[_0x6cf6('0xf')](_0x58378c,_0x8e90e)[_0x6cf6('0x10')](function(_0x3f7fc1){logger['info']('MailMessage,\x20%s,\x20%s',_0x5b7f4e,'request\x20sent');logger[_0x6cf6('0x11')](_0x6cf6('0x12'),_0x5b7f4e,_0x6cf6('0x13'),JSON[_0x6cf6('0x14')](_0x3f7fc1));if(_0x3f7fc1[_0x6cf6('0x15')]){if(_0x3f7fc1[_0x6cf6('0x15')]['code']===0x1f4){logger[_0x6cf6('0x15')]('MailMessage,\x20%s,\x20%s',_0x5b7f4e,_0x3f7fc1[_0x6cf6('0x15')][_0x6cf6('0x16')]);return _0x1fdf80(_0x3f7fc1['error'][_0x6cf6('0x16')]);}logger[_0x6cf6('0x15')](_0x6cf6('0x17'),_0x5b7f4e,_0x3f7fc1[_0x6cf6('0x15')][_0x6cf6('0x16')]);return _0x504c98(_0x3f7fc1[_0x6cf6('0x15')][_0x6cf6('0x16')]);}else{logger[_0x6cf6('0x18')](_0x6cf6('0x17'),_0x5b7f4e,_0x6cf6('0x13'));_0x504c98(_0x3f7fc1['result'][_0x6cf6('0x16')]);}})[_0x6cf6('0x19')](function(_0x22ab0){logger['error'](_0x6cf6('0x17'),_0x5b7f4e,_0x22ab0);_0x1fdf80(_0x22ab0);});});}exports[_0x6cf6('0x1a')]=function(_0x101e39){var _0x2995b3=this;return new Promise(function(_0x440634,_0x21e903){return db[_0x6cf6('0x1b')]['create'](_0x101e39[_0x6cf6('0x1c')],{'raw':_0x101e39[_0x6cf6('0x1d')]?_0x101e39[_0x6cf6('0x1d')][_0x6cf6('0x1e')]===undefined?!![]:![]:!![]})[_0x6cf6('0x10')](function(_0x470ea4){logger[_0x6cf6('0x18')](_0x6cf6('0x1a'),_0x101e39);logger['debug']('CreateMailMessage',_0x101e39,JSON[_0x6cf6('0x14')](_0x470ea4));_0x440634(_0x470ea4);})['catch'](function(_0x45ce6e){logger[_0x6cf6('0x15')](_0x6cf6('0x1a'),_0x45ce6e[_0x6cf6('0x16')],_0x101e39);_0x21e903(_0x2995b3[_0x6cf6('0x15')](0x1f4,_0x45ce6e[_0x6cf6('0x16')]));});});};
\ No newline at end of file
index ad176bf..c611770 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd6e1=['length','mailMessage:','./mailMessage.events','remove','update','emit','removeListener','register'];(function(_0x122ef9,_0x451d2a){var _0x42fba0=function(_0x17c9d3){while(--_0x17c9d3){_0x122ef9['push'](_0x122ef9['shift']());}};_0x42fba0(++_0x451d2a);}(_0xd6e1,0x17a));var _0x1d6e=function(_0xa464c9,_0x7c86d8){_0xa464c9=_0xa464c9-0x0;var _0x3d73c4=_0xd6e1[_0xa464c9];return _0x3d73c4;};'use strict';var MailMessageEvents=require(_0x1d6e('0x0'));var events=['save',_0x1d6e('0x1'),_0x1d6e('0x2')];function createListener(_0x50a3bf,_0x592c52){return function(_0x1837e1){_0x592c52[_0x1d6e('0x3')](_0x50a3bf,_0x1837e1);};}function removeListener(_0xd2920,_0xc29b20){return function(){MailMessageEvents[_0x1d6e('0x4')](_0xd2920,_0xc29b20);};}exports[_0x1d6e('0x5')]=function(_0x47e3e9){for(var _0x23ef67=0x0,_0x568f32=events[_0x1d6e('0x6')];_0x23ef67<_0x568f32;_0x23ef67++){var _0x5e0987=events[_0x23ef67];var _0x35ee30=createListener(_0x1d6e('0x7')+_0x5e0987,_0x47e3e9);MailMessageEvents['on'](_0x5e0987,_0x35ee30);}};
\ No newline at end of file
+var _0xf474=['removeListener','length','mailMessage:','./mailMessage.events','remove','update','emit'];(function(_0x140f2b,_0x1c8ba9){var _0x37eb18=function(_0x1f1f43){while(--_0x1f1f43){_0x140f2b['push'](_0x140f2b['shift']());}};_0x37eb18(++_0x1c8ba9);}(_0xf474,0x13e));var _0x4f47=function(_0x1203f,_0x554bbc){_0x1203f=_0x1203f-0x0;var _0x365f0a=_0xf474[_0x1203f];return _0x365f0a;};'use strict';var MailMessageEvents=require(_0x4f47('0x0'));var events=['save',_0x4f47('0x1'),_0x4f47('0x2')];function createListener(_0x21dbfa,_0x1d3580){return function(_0x481f29){_0x1d3580[_0x4f47('0x3')](_0x21dbfa,_0x481f29);};}function removeListener(_0x3e557d,_0x394d6a){return function(){MailMessageEvents[_0x4f47('0x4')](_0x3e557d,_0x394d6a);};}exports['register']=function(_0x1d2896){for(var _0x59b844=0x0,_0x35d270=events[_0x4f47('0x5')];_0x59b844<_0x35d270;_0x59b844++){var _0x278ce2=events[_0x59b844];var _0x194360=createListener(_0x4f47('0x6')+_0x278ce2,_0x1d2896);MailMessageEvents['on'](_0x278ce2,_0x194360);}};
\ No newline at end of file
index a34e5ef..12e8bc2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4a08=['update','delete','destroy','removeTeams','removeAgents','multer','path','express','Router','fs-extra','../../components/auth/service','../../config/environment','./mailQueue.controller','get','index','isAuthenticated','show','getMembers','getTeams','/:id/users','post','/:id/teams','addTeams','addAgents','put','/:id'];(function(_0x1ed46f,_0x7691d7){var _0x43b931=function(_0x5f2454){while(--_0x5f2454){_0x1ed46f['push'](_0x1ed46f['shift']());}};_0x43b931(++_0x7691d7);}(_0x4a08,0x1f3));var _0x84a0=function(_0x444e38,_0xf74ba3){_0x444e38=_0x444e38-0x0;var _0x688ab9=_0x4a08[_0x444e38];return _0x688ab9;};'use strict';var multer=require(_0x84a0('0x0'));var util=require('util');var path=require(_0x84a0('0x1'));var timeout=require('connect-timeout');var express=require(_0x84a0('0x2'));var router=express[_0x84a0('0x3')]();var fs_extra=require(_0x84a0('0x4'));var auth=require(_0x84a0('0x5'));var interaction=require('../../components/interaction/service');var config=require(_0x84a0('0x6'));var controller=require(_0x84a0('0x7'));router[_0x84a0('0x8')]('/',auth['isAuthenticated'](),controller[_0x84a0('0x9')]);router[_0x84a0('0x8')]('/describe',auth['isAuthenticated'](),controller['describe']);router[_0x84a0('0x8')]('/:id',auth[_0x84a0('0xa')](),controller[_0x84a0('0xb')]);router[_0x84a0('0x8')]('/:id/members',auth['isAuthenticated'](),controller[_0x84a0('0xc')]);router[_0x84a0('0x8')]('/:id/teams',auth['isAuthenticated'](),controller[_0x84a0('0xd')]);router[_0x84a0('0x8')](_0x84a0('0xe'),auth['isAuthenticated'](),controller['getAgents']);router[_0x84a0('0xf')]('/',auth[_0x84a0('0xa')](),controller['create']);router['post'](_0x84a0('0x10'),auth[_0x84a0('0xa')](),controller[_0x84a0('0x11')]);router['post']('/:id/users',auth[_0x84a0('0xa')](),controller[_0x84a0('0x12')]);router[_0x84a0('0x13')](_0x84a0('0x14'),auth[_0x84a0('0xa')](),controller[_0x84a0('0x15')]);router[_0x84a0('0x16')]('/:id',auth[_0x84a0('0xa')](),controller[_0x84a0('0x17')]);router[_0x84a0('0x16')](_0x84a0('0x10'),auth[_0x84a0('0xa')](),controller[_0x84a0('0x18')]);router[_0x84a0('0x16')]('/:id/users',auth[_0x84a0('0xa')](),controller[_0x84a0('0x19')]);module['exports']=router;
\ No newline at end of file
+var _0xf049=['util','path','express','Router','fs-extra','../../components/interaction/service','../../config/environment','get','isAuthenticated','index','/:id','show','/:id/members','getMembers','/:id/teams','getAgents','post','create','addAgents','put','update','delete','/:id/users','removeAgents','exports'];(function(_0x121b8e,_0x60d065){var _0x2822a6=function(_0x3653a6){while(--_0x3653a6){_0x121b8e['push'](_0x121b8e['shift']());}};_0x2822a6(++_0x60d065);}(_0xf049,0x1c2));var _0x9f04=function(_0x2bc67e,_0x37364f){_0x2bc67e=_0x2bc67e-0x0;var _0x1cfa13=_0xf049[_0x2bc67e];return _0x1cfa13;};'use strict';var multer=require('multer');var util=require(_0x9f04('0x0'));var path=require(_0x9f04('0x1'));var timeout=require('connect-timeout');var express=require(_0x9f04('0x2'));var router=express[_0x9f04('0x3')]();var fs_extra=require(_0x9f04('0x4'));var auth=require('../../components/auth/service');var interaction=require(_0x9f04('0x5'));var config=require(_0x9f04('0x6'));var controller=require('./mailQueue.controller');router[_0x9f04('0x7')]('/',auth[_0x9f04('0x8')](),controller[_0x9f04('0x9')]);router[_0x9f04('0x7')]('/describe',auth[_0x9f04('0x8')](),controller['describe']);router[_0x9f04('0x7')](_0x9f04('0xa'),auth[_0x9f04('0x8')](),controller[_0x9f04('0xb')]);router[_0x9f04('0x7')](_0x9f04('0xc'),auth[_0x9f04('0x8')](),controller[_0x9f04('0xd')]);router[_0x9f04('0x7')](_0x9f04('0xe'),auth[_0x9f04('0x8')](),controller['getTeams']);router[_0x9f04('0x7')]('/:id/users',auth['isAuthenticated'](),controller[_0x9f04('0xf')]);router[_0x9f04('0x10')]('/',auth[_0x9f04('0x8')](),controller[_0x9f04('0x11')]);router[_0x9f04('0x10')](_0x9f04('0xe'),auth[_0x9f04('0x8')](),controller['addTeams']);router[_0x9f04('0x10')]('/:id/users',auth[_0x9f04('0x8')](),controller[_0x9f04('0x12')]);router[_0x9f04('0x13')](_0x9f04('0xa'),auth[_0x9f04('0x8')](),controller[_0x9f04('0x14')]);router[_0x9f04('0x15')](_0x9f04('0xa'),auth[_0x9f04('0x8')](),controller['destroy']);router[_0x9f04('0x15')](_0x9f04('0xe'),auth['isAuthenticated'](),controller['removeTeams']);router['delete'](_0x9f04('0x16'),auth[_0x9f04('0x8')](),controller[_0x9f04('0x17')]);module[_0x9f04('0x18')]=router;
\ No newline at end of file
index 9de3261..c4da748 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc80a=['sequelize','exports','STRING','name','INTEGER','ENUM','rrmemory'];(function(_0x351b46,_0x26b265){var _0x1515df=function(_0x22896a){while(--_0x22896a){_0x351b46['push'](_0x351b46['shift']());}};_0x1515df(++_0x26b265);}(_0xc80a,0x1b2));var _0xac80=function(_0x41edd8,_0x1501ad){_0x41edd8=_0x41edd8-0x0;var _0x15262c=_0xc80a[_0x41edd8];return _0x15262c;};'use strict';var Sequelize=require(_0xac80('0x0'));module[_0xac80('0x1')]={'name':{'type':Sequelize[_0xac80('0x2')],'unique':_0xac80('0x3'),'validate':{'notEmpty':!![],'is':/^[A-Za-z0-9\.\_]+$/i}},'description':{'type':Sequelize['STRING']},'timeout':{'type':Sequelize[_0xac80('0x4')],'validate':{'min':0x1,'max':0x20c49b}},'strategy':{'type':Sequelize[_0xac80('0x5')](_0xac80('0x6'),'beepall','roundrobin')}};
\ No newline at end of file
+var _0x085d=['beepall','roundrobin','sequelize','STRING','INTEGER','ENUM','rrmemory'];(function(_0x2d1a89,_0x519cc5){var _0x47c3fd=function(_0x1e3477){while(--_0x1e3477){_0x2d1a89['push'](_0x2d1a89['shift']());}};_0x47c3fd(++_0x519cc5);}(_0x085d,0x1ad));var _0xd085=function(_0x318256,_0xa773f3){_0x318256=_0x318256-0x0;var _0xb1e352=_0x085d[_0x318256];return _0xb1e352;};'use strict';var Sequelize=require(_0xd085('0x0'));module['exports']={'name':{'type':Sequelize[_0xd085('0x1')],'unique':'name','validate':{'notEmpty':!![],'is':/^[A-Za-z0-9\.\_]+$/i}},'description':{'type':Sequelize[_0xd085('0x1')]},'timeout':{'type':Sequelize[_0xd085('0x2')],'validate':{'min':0x1,'max':0x20c49b}},'strategy':{'type':Sequelize[_0xd085('0x3')](_0xd085('0x4'),_0xd085('0x5'),_0xd085('0x6'))}};
\ No newline at end of file
index 486e0e5..ef40930 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5c68=['body','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','UserProfileSection','userProfileId','autoAssociation','UserProfileResource','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','describe','getMembers','findOne','hasOwnProperty','MailQueueId','UserMailQueue','findAll','User','findAndCountAll','UserId','agent','mailPause','updatedAt','createdAt','format','%s/%s','SIP','getTeams','Team','ids','Agents','online','voicePause','interface','flatMap','sequelize','transaction','addTeams','each','forEach','emit','userMailQueue:save','removeTeams','select','field','from','team_has_mail_queues','ut.TeamId\x20=\x20tq.TeamId','clone','ut.UserId\x20=\x20?','toString','SELECT','TeamId','includes','all','union','value','isEmpty','removeAgents','userMailQueue:remove','addAgents','omit','spread','isArray','getAgents','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','path','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','desk.js','querystring','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/environment','redis','defaults','localhost','./mailQueue.socket','register','sendStatus','status','end','undefined','count','offset','limit','Content-Range','apply','save','update','then','destroy','get','MailQueues','error','name','send','index','map','rawAttributes','type','key','keys','intersection','model','query','attributes','fields','length','nolimit','order','sort','where','filters','pick','filter','merge','VIRTUAL','MailQueue','includeAll','include','rows','catch','show','params','options','find','create'];(function(_0x22bcef,_0x5c41b3){var _0x527683=function(_0x436377){while(--_0x436377){_0x22bcef['push'](_0x22bcef['shift']());}};_0x527683(++_0x5c41b3);}(_0x5c68,0x1e9));var _0x85c6=function(_0x5bba1b,_0x225b29){_0x5bba1b=_0x5bba1b-0x0;var _0x58cf27=_0x5c68[_0x5bba1b];return _0x58cf27;};'use strict';var emlformat=require(_0x85c6('0x0'));var rimraf=require(_0x85c6('0x1'));var zipdir=require(_0x85c6('0x2'));var jsonpatch=require(_0x85c6('0x3'));var rp=require(_0x85c6('0x4'));var moment=require(_0x85c6('0x5'));var BPromise=require(_0x85c6('0x6'));var Mustache=require(_0x85c6('0x7'));var util=require('util');var path=require(_0x85c6('0x8'));var sox=require(_0x85c6('0x9'));var csv=require(_0x85c6('0xa'));var ejs=require(_0x85c6('0xb'));var fs=require('fs');var fs_extra=require(_0x85c6('0xc'));var _=require(_0x85c6('0xd'));var squel=require(_0x85c6('0xe'));var crypto=require(_0x85c6('0xf'));var jsforce=require('jsforce');var deskjs=require(_0x85c6('0x10'));var toCsv=require(_0x85c6('0xa'));var querystring=require(_0x85c6('0x11'));var Papa=require('papaparse');var Redis=require(_0x85c6('0x12'));var authService=require('../../components/auth/service');var qs=require(_0x85c6('0x13'));var as=require(_0x85c6('0x14'));var hardwareService=require(_0x85c6('0x15'));var logger=require(_0x85c6('0x16'))(_0x85c6('0x17'));var utils=require('../../config/utils');var config=require(_0x85c6('0x18'));var licenseUtil=require('../../config/license/util');var db=require('../../mysqldb')['db'];config[_0x85c6('0x19')]=_[_0x85c6('0x1a')](config[_0x85c6('0x19')],{'host':_0x85c6('0x1b'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0x85c6('0x19')]));require(_0x85c6('0x1c'))[_0x85c6('0x1d')](socket);function respondWithStatusCode(_0x1e13d4,_0x62e7d1){_0x62e7d1=_0x62e7d1||0xcc;return function(_0x59fa21){if(_0x59fa21){return _0x1e13d4[_0x85c6('0x1e')](_0x62e7d1);}return _0x1e13d4[_0x85c6('0x1f')](_0x62e7d1)[_0x85c6('0x20')]();};}function respondWithResult(_0x52b5c9,_0x216151){_0x216151=_0x216151||0xc8;return function(_0x2c8bdb){if(_0x2c8bdb){return _0x52b5c9[_0x85c6('0x1f')](_0x216151)['json'](_0x2c8bdb);}};}function respondWithFilteredResult(_0x67c126,_0x3d47a3){return function(_0x5bb74c){if(_0x5bb74c){var _0x2f8532=typeof _0x3d47a3['offset']===_0x85c6('0x21')&&typeof _0x3d47a3['limit']===_0x85c6('0x21');var _0xdf99f4=_0x5bb74c[_0x85c6('0x22')];var _0x10f249=_0x2f8532?0x0:_0x3d47a3['offset'];var _0x352e48=_0x2f8532?_0x5bb74c[_0x85c6('0x22')]:_0x3d47a3[_0x85c6('0x23')]+_0x3d47a3[_0x85c6('0x24')];var _0x44c081;if(_0x352e48>=_0xdf99f4){_0x352e48=_0xdf99f4;_0x44c081=0xc8;}else{_0x44c081=0xce;}_0x67c126[_0x85c6('0x1f')](_0x44c081);return _0x67c126['set'](_0x85c6('0x25'),_0x10f249+'-'+_0x352e48+'/'+_0xdf99f4)['json'](_0x5bb74c);}return null;};}function patchUpdates(_0x81034e){return function(_0xbbf84){try{jsonpatch[_0x85c6('0x26')](_0xbbf84,_0x81034e,!![]);}catch(_0xa107f2){return BPromise['reject'](_0xa107f2);}return _0xbbf84[_0x85c6('0x27')]();};}function saveUpdates(_0x5c624b,_0x1207a7){return function(_0x75918){if(_0x75918){return _0x75918[_0x85c6('0x28')](_0x5c624b)[_0x85c6('0x29')](function(_0x366065){return _0x366065;});}return null;};}function removeEntity(_0x564a0f,_0x42dc4c){return function(_0x5249d7){if(_0x5249d7){return _0x5249d7[_0x85c6('0x2a')]()['then'](function(){var _0x4d8dfb=_0x5249d7[_0x85c6('0x2b')]({'plain':!![]});var _0x2332dd=_0x85c6('0x2c');return db['UserProfileResource'][_0x85c6('0x2a')]({'where':{'type':_0x2332dd,'resourceId':_0x4d8dfb['id']}})[_0x85c6('0x29')](function(){return _0x5249d7;});})[_0x85c6('0x29')](function(){_0x564a0f['status'](0xcc)[_0x85c6('0x20')]();});}};}function handleEntityNotFound(_0x485839,_0x2d4907){return function(_0x396c5f){if(!_0x396c5f){_0x485839['sendStatus'](0x194);}return _0x396c5f;};}function handleError(_0x2be868,_0xecfe92){_0xecfe92=_0xecfe92||0x1f4;return function(_0x2bfced){logger[_0x85c6('0x2d')](_0x2bfced['stack']);if(_0x2bfced[_0x85c6('0x2e')]){delete _0x2bfced[_0x85c6('0x2e')];}_0x2be868[_0x85c6('0x1f')](_0xecfe92)[_0x85c6('0x2f')](_0x2bfced);};}exports[_0x85c6('0x30')]=function(_0x2b3e04,_0x3c0582){var _0x4b83b3={},_0x140758={},_0xfc5412={'count':0x0,'rows':[]};var _0x51b266=_[_0x85c6('0x31')](db['MailQueue'][_0x85c6('0x32')],function(_0x1fb4bd){return{'name':_0x1fb4bd['fieldName'],'type':_0x1fb4bd[_0x85c6('0x33')][_0x85c6('0x34')]};});_0x140758['model']=_[_0x85c6('0x31')](_0x51b266,_0x85c6('0x2e'));_0x140758['query']=_[_0x85c6('0x35')](_0x2b3e04['query']);_0x140758['filters']=_[_0x85c6('0x36')](_0x140758[_0x85c6('0x37')],_0x140758[_0x85c6('0x38')]);_0x4b83b3[_0x85c6('0x39')]=_[_0x85c6('0x36')](_0x140758[_0x85c6('0x37')],qs[_0x85c6('0x3a')](_0x2b3e04[_0x85c6('0x38')][_0x85c6('0x3a')]));_0x4b83b3[_0x85c6('0x39')]=_0x4b83b3[_0x85c6('0x39')][_0x85c6('0x3b')]?_0x4b83b3[_0x85c6('0x39')]:_0x140758[_0x85c6('0x37')];if(!_0x2b3e04['query']['hasOwnProperty'](_0x85c6('0x3c'))){_0x4b83b3[_0x85c6('0x24')]=qs[_0x85c6('0x24')](_0x2b3e04[_0x85c6('0x38')][_0x85c6('0x24')]);_0x4b83b3[_0x85c6('0x23')]=qs[_0x85c6('0x23')](_0x2b3e04['query'][_0x85c6('0x23')]);}_0x4b83b3[_0x85c6('0x3d')]=qs[_0x85c6('0x3e')](_0x2b3e04[_0x85c6('0x38')]['sort']);_0x4b83b3[_0x85c6('0x3f')]=qs[_0x85c6('0x40')](_[_0x85c6('0x41')](_0x2b3e04['query'],_0x140758[_0x85c6('0x40')]),_0x51b266);if(_0x2b3e04[_0x85c6('0x38')][_0x85c6('0x42')]){_0x4b83b3[_0x85c6('0x3f')]=_[_0x85c6('0x43')](_0x4b83b3[_0x85c6('0x3f')],{'$or':_['map'](_0x51b266,function(_0x392948){if(_0x392948[_0x85c6('0x33')]!==_0x85c6('0x44')){var _0x29d8d5={};_0x29d8d5[_0x392948[_0x85c6('0x2e')]]={'$like':'%'+_0x2b3e04['query'][_0x85c6('0x42')]+'%'};return _0x29d8d5;}})});}_0x4b83b3=_[_0x85c6('0x43')]({},_0x4b83b3,_0x2b3e04['options']);var _0x566ec9={'where':_0x4b83b3[_0x85c6('0x3f')]};return db[_0x85c6('0x45')][_0x85c6('0x22')](_0x566ec9)[_0x85c6('0x29')](function(_0x4b80f2){_0xfc5412[_0x85c6('0x22')]=_0x4b80f2;if(_0x2b3e04['query'][_0x85c6('0x46')]){_0x4b83b3[_0x85c6('0x47')]=[{'all':!![]}];}return db[_0x85c6('0x45')]['findAll'](_0x4b83b3);})['then'](function(_0x4a3668){_0xfc5412[_0x85c6('0x48')]=_0x4a3668;return _0xfc5412;})[_0x85c6('0x29')](respondWithFilteredResult(_0x3c0582,_0x4b83b3))[_0x85c6('0x49')](handleError(_0x3c0582,null));};exports[_0x85c6('0x4a')]=function(_0x20d623,_0x8cef66){var _0x59fd0d={'raw':!![],'where':{'id':_0x20d623[_0x85c6('0x4b')]['id']}},_0xf9babe={};_0xf9babe[_0x85c6('0x37')]=_[_0x85c6('0x35')](db[_0x85c6('0x45')][_0x85c6('0x32')]);_0xf9babe[_0x85c6('0x38')]=_[_0x85c6('0x35')](_0x20d623[_0x85c6('0x38')]);_0xf9babe['filters']=_[_0x85c6('0x36')](_0xf9babe[_0x85c6('0x37')],_0xf9babe[_0x85c6('0x38')]);_0x59fd0d['attributes']=_[_0x85c6('0x36')](_0xf9babe[_0x85c6('0x37')],qs[_0x85c6('0x3a')](_0x20d623[_0x85c6('0x38')][_0x85c6('0x3a')]));_0x59fd0d[_0x85c6('0x39')]=_0x59fd0d['attributes']['length']?_0x59fd0d[_0x85c6('0x39')]:_0xf9babe[_0x85c6('0x37')];if(_0x20d623[_0x85c6('0x38')][_0x85c6('0x46')]){_0x59fd0d['include']=[{'all':!![]}];}_0x59fd0d=_[_0x85c6('0x43')]({},_0x59fd0d,_0x20d623[_0x85c6('0x4c')]);return db[_0x85c6('0x45')][_0x85c6('0x4d')](_0x59fd0d)[_0x85c6('0x29')](handleEntityNotFound(_0x8cef66,null))[_0x85c6('0x29')](respondWithResult(_0x8cef66,null))['catch'](handleError(_0x8cef66,null));};exports[_0x85c6('0x4e')]=function(_0x11f7d0,_0x1abeb3){return db['MailQueue'][_0x85c6('0x4e')](_0x11f7d0[_0x85c6('0x4f')],{})[_0x85c6('0x29')](function(_0x5730fb){var _0x27aa76=_0x11f7d0[_0x85c6('0x50')][_0x85c6('0x2b')]({'plain':!![]});if(!_0x27aa76)throw new Error(_0x85c6('0x51'));if(_0x27aa76['role']===_0x85c6('0x50')){var _0x1a83a8=_0x5730fb[_0x85c6('0x2b')]({'plain':!![]});var _0x1a12d3=_0x85c6('0x2c');return db[_0x85c6('0x52')][_0x85c6('0x4d')]({'where':{'name':_0x1a12d3,'userProfileId':_0x27aa76[_0x85c6('0x53')]},'raw':!![]})[_0x85c6('0x29')](function(_0x34b86c){if(_0x34b86c&&_0x34b86c[_0x85c6('0x54')]===0x0){return db[_0x85c6('0x55')][_0x85c6('0x4e')]({'name':_0x1a83a8[_0x85c6('0x2e')],'resourceId':_0x1a83a8['id'],'type':_0x34b86c[_0x85c6('0x2e')],'sectionId':_0x34b86c['id']},{})[_0x85c6('0x29')](function(){return _0x5730fb;});}else{return _0x5730fb;}})[_0x85c6('0x49')](function(_0x10406e){logger['error'](_0x85c6('0x56'),_0x10406e);throw _0x10406e;});}return _0x5730fb;})[_0x85c6('0x29')](respondWithResult(_0x1abeb3,0xc9))[_0x85c6('0x49')](handleError(_0x1abeb3,null));};exports[_0x85c6('0x28')]=function(_0x44f352,_0x12a36d){if(_0x44f352[_0x85c6('0x4f')]['id']){delete _0x44f352[_0x85c6('0x4f')]['id'];}return db[_0x85c6('0x45')]['find']({'where':{'id':_0x44f352[_0x85c6('0x4b')]['id']}})['then'](handleEntityNotFound(_0x12a36d,null))['then'](saveUpdates(_0x44f352[_0x85c6('0x4f')],null))[_0x85c6('0x29')](respondWithResult(_0x12a36d,null))[_0x85c6('0x49')](handleError(_0x12a36d,null));};exports[_0x85c6('0x2a')]=function(_0x56a00d,_0x490fcf){return db['MailQueue'][_0x85c6('0x4d')]({'where':{'id':_0x56a00d[_0x85c6('0x4b')]['id']}})[_0x85c6('0x29')](handleEntityNotFound(_0x490fcf,null))[_0x85c6('0x29')](removeEntity(_0x490fcf,null))[_0x85c6('0x49')](handleError(_0x490fcf,null));};exports[_0x85c6('0x57')]=function(_0x95f939,_0x4c400c){return db[_0x85c6('0x45')]['describe']()[_0x85c6('0x29')](respondWithResult(_0x4c400c,null))['catch'](handleError(_0x4c400c,null));};exports[_0x85c6('0x58')]=function(_0xef89c8,_0x4184b9,_0x4ebfb8){var _0x187879={'raw':!![],'where':{}},_0x200f00={},_0x20ed91;return db[_0x85c6('0x45')][_0x85c6('0x59')]({'where':{'id':_0xef89c8[_0x85c6('0x4b')]['id']}})[_0x85c6('0x29')](handleEntityNotFound(_0x4184b9,null))[_0x85c6('0x29')](function(_0x4f2f96){if(_0x4f2f96){_0x20ed91=_0x4f2f96['get']({'plain':!![]});_0x200f00[_0x85c6('0x37')]=_[_0x85c6('0x35')](db['UserMailQueue']['rawAttributes']);_0x200f00[_0x85c6('0x38')]=_['keys'](_0xef89c8['query']);_0x200f00[_0x85c6('0x40')]=_[_0x85c6('0x36')](_0x200f00['model'],_0x200f00[_0x85c6('0x38')]);_0x187879[_0x85c6('0x39')]=_[_0x85c6('0x36')](_0x200f00[_0x85c6('0x37')],qs[_0x85c6('0x3a')](_0xef89c8['query'][_0x85c6('0x3a')]));_0x187879[_0x85c6('0x39')]=_0x187879[_0x85c6('0x39')][_0x85c6('0x3b')]?_0x187879[_0x85c6('0x39')]:_0x200f00[_0x85c6('0x37')];if(!_0xef89c8[_0x85c6('0x38')][_0x85c6('0x5a')]('nolimit')){_0x187879['limit']=qs[_0x85c6('0x24')](_0xef89c8['query'][_0x85c6('0x24')]);_0x187879['offset']=qs[_0x85c6('0x23')](_0xef89c8['query'][_0x85c6('0x23')]);}_0x187879['order']=qs[_0x85c6('0x3e')](_0xef89c8[_0x85c6('0x38')]['sort']);_0x187879['where']=qs['filters'](_[_0x85c6('0x41')](_0xef89c8[_0x85c6('0x38')],_0x200f00[_0x85c6('0x40')]));_0x187879[_0x85c6('0x3f')][_0x85c6('0x5b')]=_0x4f2f96['id'];if(_0xef89c8[_0x85c6('0x38')][_0x85c6('0x42')]){_0x187879[_0x85c6('0x3f')]=_['merge'](_0x187879['where'],{'$or':_[_0x85c6('0x31')](_0x187879[_0x85c6('0x39')],function(_0x285f15){var _0x1319fc={};_0x1319fc[_0x285f15]={'$like':'%'+_0xef89c8[_0x85c6('0x38')][_0x85c6('0x42')]+'%'};return _0x1319fc;})});}_0x187879=_[_0x85c6('0x43')]({},_0x187879,_0xef89c8[_0x85c6('0x4c')]);return db[_0x85c6('0x5c')][_0x85c6('0x5d')](_0x187879);}})[_0x85c6('0x29')](function(_0x508dd3){if(_0x508dd3){return db[_0x85c6('0x5e')][_0x85c6('0x5f')]({'where':{'id':_[_0x85c6('0x31')](_0x508dd3,_0x85c6('0x60')),'role':_0x85c6('0x61')},'attributes':['id','name',_0x85c6('0x62'),_0x85c6('0x63'),_0x85c6('0x64')]});}})['then'](function(_0x3802f5){if(_0x3802f5){return{'count':_0x3802f5[_0x85c6('0x22')],'rows':_['map'](_0x3802f5[_0x85c6('0x48')],function(_0x5f3277){return{'membername':_0x5f3277['name'],'UserId':_0x5f3277['id'],'queue_name':_0x20ed91[_0x85c6('0x2e')],'MailQueueId':_0x20ed91['id'],'interface':util[_0x85c6('0x65')](_0x85c6('0x66'),_0x85c6('0x67'),_0x5f3277['name']),'penalty':0x0,'paused':_0x5f3277['mailPause'],'createdAt':_0x5f3277[_0x85c6('0x64')],'updatedAt':_0x5f3277['updatedAt']};})};}else{return{'count':0x0,'rows':[]};}})['then'](respondWithFilteredResult(_0x4184b9,_0x187879))[_0x85c6('0x49')](handleError(_0x4184b9,null));};exports[_0x85c6('0x68')]=function(_0x51bb6a,_0x2278aa,_0x2f1e29){var _0x5fdc0f={};var _0x102301={};var _0x11753e;var _0x1639bd;return db['MailQueue'][_0x85c6('0x59')]({'where':{'id':_0x51bb6a[_0x85c6('0x4b')]['id']}})[_0x85c6('0x29')](handleEntityNotFound(_0x2278aa,null))[_0x85c6('0x29')](function(_0x24ab37){if(_0x24ab37){_0x11753e=_0x24ab37;_0x102301[_0x85c6('0x37')]=_['keys'](db[_0x85c6('0x69')]['rawAttributes']);_0x102301[_0x85c6('0x38')]=_[_0x85c6('0x35')](_0x51bb6a[_0x85c6('0x38')]);_0x102301['filters']=_[_0x85c6('0x36')](_0x102301[_0x85c6('0x37')],_0x102301[_0x85c6('0x38')]);_0x5fdc0f[_0x85c6('0x39')]=_[_0x85c6('0x36')](_0x102301[_0x85c6('0x37')],qs['fields'](_0x51bb6a[_0x85c6('0x38')][_0x85c6('0x3a')]));_0x5fdc0f[_0x85c6('0x39')]=_0x5fdc0f[_0x85c6('0x39')]['length']?_0x5fdc0f[_0x85c6('0x39')]:_0x102301[_0x85c6('0x37')];_0x5fdc0f[_0x85c6('0x3d')]=qs[_0x85c6('0x3e')](_0x51bb6a[_0x85c6('0x38')]['sort']);_0x5fdc0f[_0x85c6('0x3f')]=qs[_0x85c6('0x40')](_['pick'](_0x51bb6a['query'],_0x102301[_0x85c6('0x40')]));if(_0x51bb6a[_0x85c6('0x38')][_0x85c6('0x42')]){_0x5fdc0f['where']=_[_0x85c6('0x43')](_0x5fdc0f['where'],{'$or':_['map'](_0x5fdc0f['attributes'],function(_0x45b118){var _0x16420e={};_0x16420e[_0x45b118]={'$like':'%'+_0x51bb6a[_0x85c6('0x38')]['filter']+'%'};return _0x16420e;})});}_0x5fdc0f=_['merge']({},_0x5fdc0f,_0x51bb6a[_0x85c6('0x4c')]);return _0x11753e['getTeams'](_0x5fdc0f);}})['then'](function(_0x230059){if(_0x230059){_0x1639bd=_0x230059['length'];if(!_0x51bb6a[_0x85c6('0x38')][_0x85c6('0x5a')](_0x85c6('0x3c'))){_0x5fdc0f[_0x85c6('0x24')]=qs[_0x85c6('0x24')](_0x51bb6a[_0x85c6('0x38')][_0x85c6('0x24')]);_0x5fdc0f[_0x85c6('0x23')]=qs[_0x85c6('0x23')](_0x51bb6a[_0x85c6('0x38')][_0x85c6('0x23')]);}return _0x11753e[_0x85c6('0x68')](_0x5fdc0f);}})[_0x85c6('0x29')](function(_0x51a5e6){if(_0x51a5e6){return _0x51a5e6?{'count':_0x1639bd,'rows':_0x51a5e6}:null;}})[_0x85c6('0x29')](respondWithResult(_0x2278aa,null))['catch'](handleError(_0x2278aa,null));};exports['addTeams']=function(_0x54d519,_0x3da226,_0x2dfa50){var _0x44ae44=_0x54d519['body'][_0x85c6('0x6a')];return db['Team'][_0x85c6('0x5d')]({'where':{'id':_0x44ae44},'attributes':['id'],'include':[{'model':db[_0x85c6('0x5e')],'as':_0x85c6('0x6b'),'attributes':['id',_0x85c6('0x2e'),_0x85c6('0x6c'),_0x85c6('0x6d'),_0x85c6('0x6e')],'raw':!![]}]})[_0x85c6('0x29')](function(_0x45e996){if(_0x45e996){var _0x4305f9=_[_0x85c6('0x6f')](_0x45e996,function(_0x33579e){var _0x271525=_0x33579e[_0x85c6('0x2b')]({'plain':!![]});return _0x271525[_0x85c6('0x6b')];});return db['MailQueue'][_0x85c6('0x4d')]({'where':{'id':_0x54d519[_0x85c6('0x4b')]['id']}})[_0x85c6('0x29')](function(_0x54849c){return db[_0x85c6('0x70')][_0x85c6('0x71')](function(_0x312306){return _0x54849c[_0x85c6('0x72')](_0x44ae44,{'transaction':_0x312306})['then'](function(){return BPromise[_0x85c6('0x73')](_0x4305f9,function(_0x24c7b7){return db[_0x85c6('0x5c')]['findOrCreate']({'where':{'UserId':_0x24c7b7['id'],'MailQueueId':_0x54d519[_0x85c6('0x4b')]['id']},'transaction':_0x312306});});})[_0x85c6('0x29')](function(){_0x4305f9[_0x85c6('0x74')](function(_0x23e446){socket[_0x85c6('0x75')](_0x85c6('0x76'),{'UserId':_0x23e446['id'],'MailQueueId':_0x54849c['id']});});});});});}})[_0x85c6('0x29')](respondWithStatusCode(_0x3da226,null))[_0x85c6('0x49')](handleError(_0x3da226,null));};exports[_0x85c6('0x77')]=function(_0x48beeb,_0x1fc620,_0x5c1a6b){return db['Team'][_0x85c6('0x5d')]({'where':{'id':_0x48beeb[_0x85c6('0x38')][_0x85c6('0x6a')]},'attributes':['id'],'include':[{'model':db[_0x85c6('0x5e')],'as':_0x85c6('0x6b'),'attributes':['id'],'raw':!![]}]})[_0x85c6('0x29')](handleEntityNotFound(_0x1fc620,null))[_0x85c6('0x29')](function(_0x46bac6){var _0x4c07fe=_[_0x85c6('0x31')](_0x46bac6,'id');var _0x3b0c20=[];var _0x1bbdfb=[];var _0x2e4f67=squel[_0x85c6('0x78')]();_0x2e4f67[_0x85c6('0x79')]('tq.TeamId')[_0x85c6('0x7a')](_0x85c6('0x7b'),'tq')['join']('user_has_teams','ut',_0x85c6('0x7c'))[_0x85c6('0x3f')]('MailQueueId\x20=\x20?',_0x48beeb[_0x85c6('0x4b')]['id']);for(var _0x1ec17e=0x0;_0x1ec17e<_0x46bac6[_0x85c6('0x3b')];_0x1ec17e+=0x1){let _0x485033=_0x46bac6[_0x1ec17e];for(var _0x30ed38=0x0;_0x30ed38<_0x485033[_0x85c6('0x6b')][_0x85c6('0x3b')];_0x30ed38+=0x1){let _0x207b83=_0x485033[_0x85c6('0x6b')][_0x30ed38];var _0x3fc80c=_0x2e4f67[_0x85c6('0x7d')]();_0x3fc80c['where'](_0x85c6('0x7e'),_0x207b83['id']);_0x1bbdfb['push'](db[_0x85c6('0x70')][_0x85c6('0x38')](_0x3fc80c[_0x85c6('0x7f')](),{'type':db[_0x85c6('0x70')]['QueryTypes'][_0x85c6('0x80')]})[_0x85c6('0x29')](function(_0xee2c8a){if(_0xee2c8a['length']===0x1){return _0x207b83['id'];}else{var _0x3e2fee=_['every'](_[_0x85c6('0x31')](_0xee2c8a,_0x85c6('0x81')),function(_0x23cba7){return _[_0x85c6('0x82')](_0x4c07fe,_0x23cba7);});if(_0x3e2fee){return _0x207b83['id'];}}}));}}return BPromise[_0x85c6('0x83')](_0x1bbdfb)[_0x85c6('0x29')](function(_0x5db8fa){_0x3b0c20=_(_0x3b0c20)[_0x85c6('0x84')](_0x5db8fa)['compact']()[_0x85c6('0x85')]();return db['MailQueue']['find']({'where':{'id':_0x48beeb['params']['id']}})[_0x85c6('0x29')](function(_0x58e8f5){return db[_0x85c6('0x70')][_0x85c6('0x71')](function(_0x323218){return _0x58e8f5[_0x85c6('0x77')](_0x48beeb['query']['ids'],{'transaction':_0x323218})[_0x85c6('0x29')](function(){if(!_[_0x85c6('0x86')](_0x3b0c20)){return _0x58e8f5[_0x85c6('0x87')](_0x3b0c20,{'transaction':_0x323218});}})[_0x85c6('0x29')](function(){_0x3b0c20['forEach'](function(_0x25ab85){socket[_0x85c6('0x75')](_0x85c6('0x88'),{'UserId':_0x25ab85,'MailQueueId':_0x58e8f5['id']});});});});});});})[_0x85c6('0x29')](respondWithStatusCode(_0x1fc620,null))[_0x85c6('0x49')](handleError(_0x1fc620,null));};exports[_0x85c6('0x89')]=function(_0x5e5925,_0x421f72,_0xdf4f95){return db['MailQueue'][_0x85c6('0x4d')]({'where':{'id':_0x5e5925[_0x85c6('0x4b')]['id']}})[_0x85c6('0x29')](handleEntityNotFound(_0x421f72,null))[_0x85c6('0x29')](function(_0x3240af){if(_0x3240af){return _0x3240af['addAgents'](_0x5e5925[_0x85c6('0x4f')][_0x85c6('0x6a')],_[_0x85c6('0x8a')](_0x5e5925[_0x85c6('0x4f')],[_0x85c6('0x6a'),'id'])||{})[_0x85c6('0x8b')](function(_0x4a8d43){for(var _0xa27fa0=0x0;_0xa27fa0<_0x5e5925[_0x85c6('0x4f')][_0x85c6('0x6a')]['length'];_0xa27fa0+=0x1){socket[_0x85c6('0x75')](_0x85c6('0x76'),{'UserId':Number(_0x5e5925[_0x85c6('0x4f')][_0x85c6('0x6a')][_0xa27fa0]),'MailQueueId':Number(_0x5e5925[_0x85c6('0x4b')]['id'])});}return _0x4a8d43;});}})[_0x85c6('0x29')](respondWithResult(_0x421f72,null))[_0x85c6('0x49')](handleError(_0x421f72,null));};exports[_0x85c6('0x87')]=function(_0x95d8f6,_0x27ae36,_0xf7a654){return db[_0x85c6('0x45')][_0x85c6('0x4d')]({'where':{'id':_0x95d8f6['params']['id']}})[_0x85c6('0x29')](handleEntityNotFound(_0x27ae36,null))[_0x85c6('0x29')](function(_0x3ed933){if(_0x3ed933){return _0x3ed933[_0x85c6('0x87')](_0x95d8f6[_0x85c6('0x38')][_0x85c6('0x6a')])[_0x85c6('0x29')](function(){if(_[_0x85c6('0x8c')](_0x95d8f6['query'][_0x85c6('0x6a')])){for(var _0x954077=0x0;_0x954077<_0x95d8f6[_0x85c6('0x38')][_0x85c6('0x6a')][_0x85c6('0x3b')];_0x954077+=0x1){socket[_0x85c6('0x75')](_0x85c6('0x88'),{'UserId':Number(_0x95d8f6[_0x85c6('0x38')][_0x85c6('0x6a')][_0x954077]),'MailQueueId':Number(_0x95d8f6[_0x85c6('0x4b')]['id'])});}}else{socket[_0x85c6('0x75')]('userMailQueue:remove',{'UserId':Number(_0x95d8f6[_0x85c6('0x38')][_0x85c6('0x6a')]),'MailQueueId':Number(_0x95d8f6[_0x85c6('0x4b')]['id'])});}});}})['then'](respondWithStatusCode(_0x27ae36,null))[_0x85c6('0x49')](handleError(_0x27ae36,null));};exports[_0x85c6('0x8d')]=function(_0x1749a5,_0x12ffed,_0x5ee886){var _0xcd2960={};var _0x1b22da={};var _0x2ac99e;var _0x22e198;return db[_0x85c6('0x45')][_0x85c6('0x59')]({'where':{'id':_0x1749a5['params']['id']}})['then'](handleEntityNotFound(_0x12ffed,null))[_0x85c6('0x29')](function(_0x105df5){if(_0x105df5){_0x2ac99e=_0x105df5;_0x1b22da[_0x85c6('0x37')]=_[_0x85c6('0x35')](db[_0x85c6('0x5e')][_0x85c6('0x32')]);_0x1b22da[_0x85c6('0x38')]=_[_0x85c6('0x35')](_0x1749a5['query']);_0x1b22da[_0x85c6('0x40')]=_[_0x85c6('0x36')](_0x1b22da[_0x85c6('0x37')],_0x1b22da['query']);_0xcd2960['attributes']=_[_0x85c6('0x36')](_0x1b22da[_0x85c6('0x37')],qs[_0x85c6('0x3a')](_0x1749a5[_0x85c6('0x38')][_0x85c6('0x3a')]));_0xcd2960['attributes']=_0xcd2960['attributes'][_0x85c6('0x3b')]?_0xcd2960[_0x85c6('0x39')]:_0x1b22da[_0x85c6('0x37')];_0xcd2960['order']=qs[_0x85c6('0x3e')](_0x1749a5[_0x85c6('0x38')]['sort']);_0xcd2960['where']=qs[_0x85c6('0x40')](_[_0x85c6('0x41')](_0x1749a5[_0x85c6('0x38')],_0x1b22da['filters']));if(_0x1749a5['query'][_0x85c6('0x42')]){_0xcd2960[_0x85c6('0x3f')]=_[_0x85c6('0x43')](_0xcd2960[_0x85c6('0x3f')],{'$or':_[_0x85c6('0x31')](_0xcd2960['attributes'],function(_0x26e1e9){var _0x36a98d={};_0x36a98d[_0x26e1e9]={'$like':'%'+_0x1749a5[_0x85c6('0x38')]['filter']+'%'};return _0x36a98d;})});}_0xcd2960=_[_0x85c6('0x43')]({},_0xcd2960,_0x1749a5[_0x85c6('0x4c')]);return _0x2ac99e['getAgents'](_0xcd2960);}})[_0x85c6('0x29')](function(_0x418b33){if(_0x418b33){_0x22e198=_0x418b33[_0x85c6('0x3b')];if(!_0x1749a5[_0x85c6('0x38')][_0x85c6('0x5a')](_0x85c6('0x3c'))){_0xcd2960[_0x85c6('0x24')]=qs[_0x85c6('0x24')](_0x1749a5[_0x85c6('0x38')][_0x85c6('0x24')]);_0xcd2960['offset']=qs[_0x85c6('0x23')](_0x1749a5[_0x85c6('0x38')][_0x85c6('0x23')]);}return _0x2ac99e['getAgents'](_0xcd2960);}})[_0x85c6('0x29')](function(_0x5b7bfc){if(_0x5b7bfc){return _0x5b7bfc?{'count':_0x22e198,'rows':_0x5b7bfc}:null;}})[_0x85c6('0x29')](respondWithResult(_0x12ffed,null))[_0x85c6('0x49')](handleError(_0x12ffed,null));};
\ No newline at end of file
+var _0x524a=['Content-Range','apply','reject','save','update','destroy','then','MailQueues','UserProfileResource','error','stack','name','send','index','map','MailQueue','rawAttributes','type','query','keys','filters','intersection','model','attributes','hasOwnProperty','order','sort','pick','filter','where','merge','VIRTUAL','options','include','catch','show','params','fields','includeAll','find','create','body','user','get','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','UserProfileSection','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','describe','getMembers','findOne','UserMailQueue','length','nolimit','MailQueueId','findAndCountAll','UserId','agent','mailPause','updatedAt','createdAt','rows','format','%s/%s','getTeams','Team','addTeams','ids','findAll','User','Agents','online','flatMap','sequelize','transaction','each','findOrCreate','forEach','emit','userMailQueue:save','removeTeams','field','tq.TeamId','from','team_has_mail_queues','join','ut.TeamId\x20=\x20tq.TeamId','clone','ut.UserId\x20=\x20?','push','toString','SELECT','every','all','compact','value','isEmpty','userMailQueue:remove','addAgents','omit','spread','removeAgents','isArray','getAgents','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/advancedSearch','../../config/license/hardware','../../config/utils','../../config/environment','../../config/license/util','defaults','localhost','redis','register','sendStatus','status','end','json','offset','undefined','limit','count','set'];(function(_0x532af7,_0x34f52a){var _0x15fa83=function(_0xdf3fbc){while(--_0xdf3fbc){_0x532af7['push'](_0x532af7['shift']());}};_0x15fa83(++_0x34f52a);}(_0x524a,0xf5));var _0xa524=function(_0x270e2e,_0x5ca53e){_0x270e2e=_0x270e2e-0x0;var _0x5582a1=_0x524a[_0x270e2e];return _0x5582a1;};'use strict';var emlformat=require(_0xa524('0x0'));var rimraf=require(_0xa524('0x1'));var zipdir=require(_0xa524('0x2'));var jsonpatch=require(_0xa524('0x3'));var rp=require('request-promise');var moment=require(_0xa524('0x4'));var BPromise=require(_0xa524('0x5'));var Mustache=require(_0xa524('0x6'));var util=require('util');var path=require('path');var sox=require(_0xa524('0x7'));var csv=require(_0xa524('0x8'));var ejs=require(_0xa524('0x9'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0xa524('0xa'));var squel=require('squel');var crypto=require(_0xa524('0xb'));var jsforce=require(_0xa524('0xc'));var deskjs=require('desk.js');var toCsv=require(_0xa524('0x8'));var querystring=require(_0xa524('0xd'));var Papa=require(_0xa524('0xe'));var Redis=require(_0xa524('0xf'));var authService=require(_0xa524('0x10'));var qs=require('../../components/parsers/qs');var as=require(_0xa524('0x11'));var hardwareService=require(_0xa524('0x12'));var logger=require('../../config/logger')('api');var utils=require(_0xa524('0x13'));var config=require(_0xa524('0x14'));var licenseUtil=require(_0xa524('0x15'));var db=require('../../mysqldb')['db'];config['redis']=_[_0xa524('0x16')](config['redis'],{'host':_0xa524('0x17'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0xa524('0x18')]));require('./mailQueue.socket')[_0xa524('0x19')](socket);function respondWithStatusCode(_0x281137,_0x59620d){_0x59620d=_0x59620d||0xcc;return function(_0x2d8bdb){if(_0x2d8bdb){return _0x281137[_0xa524('0x1a')](_0x59620d);}return _0x281137[_0xa524('0x1b')](_0x59620d)[_0xa524('0x1c')]();};}function respondWithResult(_0x45347f,_0x433c8a){_0x433c8a=_0x433c8a||0xc8;return function(_0x371385){if(_0x371385){return _0x45347f['status'](_0x433c8a)[_0xa524('0x1d')](_0x371385);}};}function respondWithFilteredResult(_0x3d8494,_0x1fd8f5){return function(_0x3d6a0d){if(_0x3d6a0d){var _0x375277=typeof _0x1fd8f5[_0xa524('0x1e')]===_0xa524('0x1f')&&typeof _0x1fd8f5[_0xa524('0x20')]==='undefined';var _0x304dea=_0x3d6a0d[_0xa524('0x21')];var _0xb31e2d=_0x375277?0x0:_0x1fd8f5[_0xa524('0x1e')];var _0x5f4cd1=_0x375277?_0x3d6a0d['count']:_0x1fd8f5[_0xa524('0x1e')]+_0x1fd8f5[_0xa524('0x20')];var _0x21e114;if(_0x5f4cd1>=_0x304dea){_0x5f4cd1=_0x304dea;_0x21e114=0xc8;}else{_0x21e114=0xce;}_0x3d8494[_0xa524('0x1b')](_0x21e114);return _0x3d8494[_0xa524('0x22')](_0xa524('0x23'),_0xb31e2d+'-'+_0x5f4cd1+'/'+_0x304dea)['json'](_0x3d6a0d);}return null;};}function patchUpdates(_0x262eac){return function(_0x18c2bb){try{jsonpatch[_0xa524('0x24')](_0x18c2bb,_0x262eac,!![]);}catch(_0x40fb4b){return BPromise[_0xa524('0x25')](_0x40fb4b);}return _0x18c2bb[_0xa524('0x26')]();};}function saveUpdates(_0x26e931,_0x4babac){return function(_0x1c65fa){if(_0x1c65fa){return _0x1c65fa[_0xa524('0x27')](_0x26e931)['then'](function(_0x47efb3){return _0x47efb3;});}return null;};}function removeEntity(_0x24d1bc,_0x2ed3b0){return function(_0x156b8b){if(_0x156b8b){return _0x156b8b[_0xa524('0x28')]()[_0xa524('0x29')](function(){var _0x546060=_0x156b8b['get']({'plain':!![]});var _0x1aeabc=_0xa524('0x2a');return db[_0xa524('0x2b')][_0xa524('0x28')]({'where':{'type':_0x1aeabc,'resourceId':_0x546060['id']}})['then'](function(){return _0x156b8b;});})[_0xa524('0x29')](function(){_0x24d1bc[_0xa524('0x1b')](0xcc)['end']();});}};}function handleEntityNotFound(_0x27f53a,_0x147094){return function(_0x4c587b){if(!_0x4c587b){_0x27f53a[_0xa524('0x1a')](0x194);}return _0x4c587b;};}function handleError(_0x5f03ad,_0x24005e){_0x24005e=_0x24005e||0x1f4;return function(_0x38e051){logger[_0xa524('0x2c')](_0x38e051[_0xa524('0x2d')]);if(_0x38e051[_0xa524('0x2e')]){delete _0x38e051[_0xa524('0x2e')];}_0x5f03ad[_0xa524('0x1b')](_0x24005e)[_0xa524('0x2f')](_0x38e051);};}exports[_0xa524('0x30')]=function(_0x5b6a54,_0x535e41){var _0x1b39f1={},_0x52dd9f={},_0x4a9e32={'count':0x0,'rows':[]};var _0x46af1b=_[_0xa524('0x31')](db[_0xa524('0x32')][_0xa524('0x33')],function(_0x541ad2){return{'name':_0x541ad2['fieldName'],'type':_0x541ad2[_0xa524('0x34')]['key']};});_0x52dd9f['model']=_[_0xa524('0x31')](_0x46af1b,_0xa524('0x2e'));_0x52dd9f[_0xa524('0x35')]=_[_0xa524('0x36')](_0x5b6a54[_0xa524('0x35')]);_0x52dd9f[_0xa524('0x37')]=_[_0xa524('0x38')](_0x52dd9f[_0xa524('0x39')],_0x52dd9f[_0xa524('0x35')]);_0x1b39f1[_0xa524('0x3a')]=_[_0xa524('0x38')](_0x52dd9f[_0xa524('0x39')],qs['fields'](_0x5b6a54['query']['fields']));_0x1b39f1[_0xa524('0x3a')]=_0x1b39f1[_0xa524('0x3a')]['length']?_0x1b39f1[_0xa524('0x3a')]:_0x52dd9f['model'];if(!_0x5b6a54[_0xa524('0x35')][_0xa524('0x3b')]('nolimit')){_0x1b39f1[_0xa524('0x20')]=qs[_0xa524('0x20')](_0x5b6a54[_0xa524('0x35')]['limit']);_0x1b39f1[_0xa524('0x1e')]=qs[_0xa524('0x1e')](_0x5b6a54['query'][_0xa524('0x1e')]);}_0x1b39f1[_0xa524('0x3c')]=qs['sort'](_0x5b6a54[_0xa524('0x35')][_0xa524('0x3d')]);_0x1b39f1['where']=qs[_0xa524('0x37')](_[_0xa524('0x3e')](_0x5b6a54[_0xa524('0x35')],_0x52dd9f[_0xa524('0x37')]),_0x46af1b);if(_0x5b6a54[_0xa524('0x35')][_0xa524('0x3f')]){_0x1b39f1[_0xa524('0x40')]=_[_0xa524('0x41')](_0x1b39f1[_0xa524('0x40')],{'$or':_[_0xa524('0x31')](_0x46af1b,function(_0x38e745){if(_0x38e745['type']!==_0xa524('0x42')){var _0x52d281={};_0x52d281[_0x38e745[_0xa524('0x2e')]]={'$like':'%'+_0x5b6a54[_0xa524('0x35')][_0xa524('0x3f')]+'%'};return _0x52d281;}})});}_0x1b39f1=_[_0xa524('0x41')]({},_0x1b39f1,_0x5b6a54[_0xa524('0x43')]);var _0x3ba597={'where':_0x1b39f1[_0xa524('0x40')]};return db[_0xa524('0x32')][_0xa524('0x21')](_0x3ba597)[_0xa524('0x29')](function(_0x4a87d4){_0x4a9e32[_0xa524('0x21')]=_0x4a87d4;if(_0x5b6a54[_0xa524('0x35')]['includeAll']){_0x1b39f1[_0xa524('0x44')]=[{'all':!![]}];}return db[_0xa524('0x32')]['findAll'](_0x1b39f1);})['then'](function(_0x4dff4b){_0x4a9e32['rows']=_0x4dff4b;return _0x4a9e32;})['then'](respondWithFilteredResult(_0x535e41,_0x1b39f1))[_0xa524('0x45')](handleError(_0x535e41,null));};exports[_0xa524('0x46')]=function(_0x381f23,_0x16c6db){var _0x479aee={'raw':!![],'where':{'id':_0x381f23[_0xa524('0x47')]['id']}},_0x382232={};_0x382232[_0xa524('0x39')]=_[_0xa524('0x36')](db['MailQueue'][_0xa524('0x33')]);_0x382232[_0xa524('0x35')]=_[_0xa524('0x36')](_0x381f23[_0xa524('0x35')]);_0x382232[_0xa524('0x37')]=_['intersection'](_0x382232[_0xa524('0x39')],_0x382232[_0xa524('0x35')]);_0x479aee[_0xa524('0x3a')]=_[_0xa524('0x38')](_0x382232[_0xa524('0x39')],qs[_0xa524('0x48')](_0x381f23[_0xa524('0x35')][_0xa524('0x48')]));_0x479aee[_0xa524('0x3a')]=_0x479aee['attributes']['length']?_0x479aee[_0xa524('0x3a')]:_0x382232[_0xa524('0x39')];if(_0x381f23[_0xa524('0x35')][_0xa524('0x49')]){_0x479aee[_0xa524('0x44')]=[{'all':!![]}];}_0x479aee=_[_0xa524('0x41')]({},_0x479aee,_0x381f23['options']);return db[_0xa524('0x32')][_0xa524('0x4a')](_0x479aee)[_0xa524('0x29')](handleEntityNotFound(_0x16c6db,null))[_0xa524('0x29')](respondWithResult(_0x16c6db,null))[_0xa524('0x45')](handleError(_0x16c6db,null));};exports[_0xa524('0x4b')]=function(_0x550415,_0x39ba9c){return db[_0xa524('0x32')][_0xa524('0x4b')](_0x550415[_0xa524('0x4c')],{})[_0xa524('0x29')](function(_0x244efa){var _0xef18b7=_0x550415[_0xa524('0x4d')][_0xa524('0x4e')]({'plain':!![]});if(!_0xef18b7)throw new Error(_0xa524('0x4f'));if(_0xef18b7[_0xa524('0x50')]===_0xa524('0x4d')){var _0x3a374f=_0x244efa[_0xa524('0x4e')]({'plain':!![]});var _0x25e04b='MailQueues';return db[_0xa524('0x51')][_0xa524('0x4a')]({'where':{'name':_0x25e04b,'userProfileId':_0xef18b7['userProfileId']},'raw':!![]})['then'](function(_0x32844c){if(_0x32844c&&_0x32844c[_0xa524('0x52')]===0x0){return db[_0xa524('0x2b')][_0xa524('0x4b')]({'name':_0x3a374f[_0xa524('0x2e')],'resourceId':_0x3a374f['id'],'type':_0x32844c[_0xa524('0x2e')],'sectionId':_0x32844c['id']},{})[_0xa524('0x29')](function(){return _0x244efa;});}else{return _0x244efa;}})['catch'](function(_0x1d9552){logger[_0xa524('0x2c')](_0xa524('0x53'),_0x1d9552);throw _0x1d9552;});}return _0x244efa;})[_0xa524('0x29')](respondWithResult(_0x39ba9c,0xc9))[_0xa524('0x45')](handleError(_0x39ba9c,null));};exports['update']=function(_0x1c017d,_0x4f7531){if(_0x1c017d[_0xa524('0x4c')]['id']){delete _0x1c017d[_0xa524('0x4c')]['id'];}return db[_0xa524('0x32')][_0xa524('0x4a')]({'where':{'id':_0x1c017d[_0xa524('0x47')]['id']}})[_0xa524('0x29')](handleEntityNotFound(_0x4f7531,null))[_0xa524('0x29')](saveUpdates(_0x1c017d['body'],null))['then'](respondWithResult(_0x4f7531,null))[_0xa524('0x45')](handleError(_0x4f7531,null));};exports[_0xa524('0x28')]=function(_0x322feb,_0x4f354d){return db[_0xa524('0x32')][_0xa524('0x4a')]({'where':{'id':_0x322feb['params']['id']}})[_0xa524('0x29')](handleEntityNotFound(_0x4f354d,null))[_0xa524('0x29')](removeEntity(_0x4f354d,null))[_0xa524('0x45')](handleError(_0x4f354d,null));};exports[_0xa524('0x54')]=function(_0x6aad5c,_0x248ba2){return db[_0xa524('0x32')]['describe']()[_0xa524('0x29')](respondWithResult(_0x248ba2,null))[_0xa524('0x45')](handleError(_0x248ba2,null));};exports[_0xa524('0x55')]=function(_0x1ef1aa,_0x5f2de3,_0x4fdca0){var _0x25e68f={'raw':!![],'where':{}},_0x5cd707={},_0x1d5df2;return db[_0xa524('0x32')][_0xa524('0x56')]({'where':{'id':_0x1ef1aa[_0xa524('0x47')]['id']}})['then'](handleEntityNotFound(_0x5f2de3,null))['then'](function(_0x1f19f6){if(_0x1f19f6){_0x1d5df2=_0x1f19f6['get']({'plain':!![]});_0x5cd707['model']=_['keys'](db[_0xa524('0x57')]['rawAttributes']);_0x5cd707['query']=_[_0xa524('0x36')](_0x1ef1aa[_0xa524('0x35')]);_0x5cd707[_0xa524('0x37')]=_[_0xa524('0x38')](_0x5cd707['model'],_0x5cd707[_0xa524('0x35')]);_0x25e68f[_0xa524('0x3a')]=_[_0xa524('0x38')](_0x5cd707['model'],qs[_0xa524('0x48')](_0x1ef1aa[_0xa524('0x35')]['fields']));_0x25e68f['attributes']=_0x25e68f[_0xa524('0x3a')][_0xa524('0x58')]?_0x25e68f[_0xa524('0x3a')]:_0x5cd707[_0xa524('0x39')];if(!_0x1ef1aa['query']['hasOwnProperty'](_0xa524('0x59'))){_0x25e68f[_0xa524('0x20')]=qs[_0xa524('0x20')](_0x1ef1aa['query']['limit']);_0x25e68f[_0xa524('0x1e')]=qs['offset'](_0x1ef1aa['query']['offset']);}_0x25e68f['order']=qs[_0xa524('0x3d')](_0x1ef1aa[_0xa524('0x35')]['sort']);_0x25e68f['where']=qs[_0xa524('0x37')](_[_0xa524('0x3e')](_0x1ef1aa['query'],_0x5cd707[_0xa524('0x37')]));_0x25e68f[_0xa524('0x40')][_0xa524('0x5a')]=_0x1f19f6['id'];if(_0x1ef1aa[_0xa524('0x35')][_0xa524('0x3f')]){_0x25e68f[_0xa524('0x40')]=_[_0xa524('0x41')](_0x25e68f[_0xa524('0x40')],{'$or':_[_0xa524('0x31')](_0x25e68f[_0xa524('0x3a')],function(_0x57e7d8){var _0x2695e0={};_0x2695e0[_0x57e7d8]={'$like':'%'+_0x1ef1aa[_0xa524('0x35')][_0xa524('0x3f')]+'%'};return _0x2695e0;})});}_0x25e68f=_[_0xa524('0x41')]({},_0x25e68f,_0x1ef1aa[_0xa524('0x43')]);return db[_0xa524('0x57')]['findAll'](_0x25e68f);}})['then'](function(_0x1e25e7){if(_0x1e25e7){return db['User'][_0xa524('0x5b')]({'where':{'id':_[_0xa524('0x31')](_0x1e25e7,_0xa524('0x5c')),'role':_0xa524('0x5d')},'attributes':['id',_0xa524('0x2e'),_0xa524('0x5e'),_0xa524('0x5f'),_0xa524('0x60')]});}})[_0xa524('0x29')](function(_0x106168){if(_0x106168){return{'count':_0x106168[_0xa524('0x21')],'rows':_['map'](_0x106168[_0xa524('0x61')],function(_0x2c52fa){return{'membername':_0x2c52fa[_0xa524('0x2e')],'UserId':_0x2c52fa['id'],'queue_name':_0x1d5df2[_0xa524('0x2e')],'MailQueueId':_0x1d5df2['id'],'interface':util[_0xa524('0x62')](_0xa524('0x63'),'SIP',_0x2c52fa[_0xa524('0x2e')]),'penalty':0x0,'paused':_0x2c52fa[_0xa524('0x5e')],'createdAt':_0x2c52fa[_0xa524('0x60')],'updatedAt':_0x2c52fa['updatedAt']};})};}else{return{'count':0x0,'rows':[]};}})['then'](respondWithFilteredResult(_0x5f2de3,_0x25e68f))[_0xa524('0x45')](handleError(_0x5f2de3,null));};exports[_0xa524('0x64')]=function(_0x162254,_0x1a8887,_0x25d559){var _0xf934dc={};var _0x780cf7={};var _0x21c9e0;var _0x1da85f;return db['MailQueue'][_0xa524('0x56')]({'where':{'id':_0x162254[_0xa524('0x47')]['id']}})['then'](handleEntityNotFound(_0x1a8887,null))[_0xa524('0x29')](function(_0x2f06cb){if(_0x2f06cb){_0x21c9e0=_0x2f06cb;_0x780cf7[_0xa524('0x39')]=_[_0xa524('0x36')](db[_0xa524('0x65')][_0xa524('0x33')]);_0x780cf7['query']=_['keys'](_0x162254['query']);_0x780cf7[_0xa524('0x37')]=_['intersection'](_0x780cf7['model'],_0x780cf7[_0xa524('0x35')]);_0xf934dc[_0xa524('0x3a')]=_[_0xa524('0x38')](_0x780cf7[_0xa524('0x39')],qs[_0xa524('0x48')](_0x162254[_0xa524('0x35')]['fields']));_0xf934dc[_0xa524('0x3a')]=_0xf934dc[_0xa524('0x3a')]['length']?_0xf934dc[_0xa524('0x3a')]:_0x780cf7['model'];_0xf934dc[_0xa524('0x3c')]=qs[_0xa524('0x3d')](_0x162254['query'][_0xa524('0x3d')]);_0xf934dc['where']=qs['filters'](_[_0xa524('0x3e')](_0x162254[_0xa524('0x35')],_0x780cf7[_0xa524('0x37')]));if(_0x162254[_0xa524('0x35')][_0xa524('0x3f')]){_0xf934dc[_0xa524('0x40')]=_[_0xa524('0x41')](_0xf934dc[_0xa524('0x40')],{'$or':_[_0xa524('0x31')](_0xf934dc[_0xa524('0x3a')],function(_0x50d6d4){var _0x38d878={};_0x38d878[_0x50d6d4]={'$like':'%'+_0x162254[_0xa524('0x35')][_0xa524('0x3f')]+'%'};return _0x38d878;})});}_0xf934dc=_[_0xa524('0x41')]({},_0xf934dc,_0x162254[_0xa524('0x43')]);return _0x21c9e0[_0xa524('0x64')](_0xf934dc);}})[_0xa524('0x29')](function(_0x44eb67){if(_0x44eb67){_0x1da85f=_0x44eb67[_0xa524('0x58')];if(!_0x162254['query'][_0xa524('0x3b')]('nolimit')){_0xf934dc[_0xa524('0x20')]=qs[_0xa524('0x20')](_0x162254[_0xa524('0x35')][_0xa524('0x20')]);_0xf934dc[_0xa524('0x1e')]=qs['offset'](_0x162254['query']['offset']);}return _0x21c9e0['getTeams'](_0xf934dc);}})[_0xa524('0x29')](function(_0x2c9fda){if(_0x2c9fda){return _0x2c9fda?{'count':_0x1da85f,'rows':_0x2c9fda}:null;}})[_0xa524('0x29')](respondWithResult(_0x1a8887,null))[_0xa524('0x45')](handleError(_0x1a8887,null));};exports[_0xa524('0x66')]=function(_0x15ec5b,_0x552ef8,_0x5c5f36){var _0x39b3bf=_0x15ec5b[_0xa524('0x4c')][_0xa524('0x67')];return db[_0xa524('0x65')][_0xa524('0x68')]({'where':{'id':_0x39b3bf},'attributes':['id'],'include':[{'model':db[_0xa524('0x69')],'as':_0xa524('0x6a'),'attributes':['id',_0xa524('0x2e'),_0xa524('0x6b'),'voicePause','interface'],'raw':!![]}]})[_0xa524('0x29')](function(_0x1d0d43){if(_0x1d0d43){var _0x46b7ba=_[_0xa524('0x6c')](_0x1d0d43,function(_0x20c5e4){var _0x4a660a=_0x20c5e4['get']({'plain':!![]});return _0x4a660a[_0xa524('0x6a')];});return db['MailQueue'][_0xa524('0x4a')]({'where':{'id':_0x15ec5b[_0xa524('0x47')]['id']}})[_0xa524('0x29')](function(_0x4eb4a4){return db[_0xa524('0x6d')][_0xa524('0x6e')](function(_0x49d607){return _0x4eb4a4[_0xa524('0x66')](_0x39b3bf,{'transaction':_0x49d607})[_0xa524('0x29')](function(){return BPromise[_0xa524('0x6f')](_0x46b7ba,function(_0x51dcd0){return db['UserMailQueue'][_0xa524('0x70')]({'where':{'UserId':_0x51dcd0['id'],'MailQueueId':_0x15ec5b['params']['id']},'transaction':_0x49d607});});})[_0xa524('0x29')](function(){_0x46b7ba[_0xa524('0x71')](function(_0x3bd8fc){socket[_0xa524('0x72')](_0xa524('0x73'),{'UserId':_0x3bd8fc['id'],'MailQueueId':_0x4eb4a4['id']});});});});});}})[_0xa524('0x29')](respondWithStatusCode(_0x552ef8,null))[_0xa524('0x45')](handleError(_0x552ef8,null));};exports[_0xa524('0x74')]=function(_0xd9b867,_0x977047,_0x443363){return db['Team'][_0xa524('0x68')]({'where':{'id':_0xd9b867[_0xa524('0x35')][_0xa524('0x67')]},'attributes':['id'],'include':[{'model':db[_0xa524('0x69')],'as':'Agents','attributes':['id'],'raw':!![]}]})['then'](handleEntityNotFound(_0x977047,null))['then'](function(_0xbcd1b9){var _0x1c411d=_[_0xa524('0x31')](_0xbcd1b9,'id');var _0x22f7f7=[];var _0x3d6905=[];var _0x2d7d2d=squel['select']();_0x2d7d2d[_0xa524('0x75')](_0xa524('0x76'))[_0xa524('0x77')](_0xa524('0x78'),'tq')[_0xa524('0x79')]('user_has_teams','ut',_0xa524('0x7a'))[_0xa524('0x40')]('MailQueueId\x20=\x20?',_0xd9b867[_0xa524('0x47')]['id']);for(var _0x527622=0x0;_0x527622<_0xbcd1b9[_0xa524('0x58')];_0x527622+=0x1){let _0x3e9e09=_0xbcd1b9[_0x527622];for(var _0x15e4e5=0x0;_0x15e4e5<_0x3e9e09[_0xa524('0x6a')][_0xa524('0x58')];_0x15e4e5+=0x1){let _0x56b0a4=_0x3e9e09[_0xa524('0x6a')][_0x15e4e5];var _0x2d47c5=_0x2d7d2d[_0xa524('0x7b')]();_0x2d47c5['where'](_0xa524('0x7c'),_0x56b0a4['id']);_0x3d6905[_0xa524('0x7d')](db[_0xa524('0x6d')][_0xa524('0x35')](_0x2d47c5[_0xa524('0x7e')](),{'type':db[_0xa524('0x6d')]['QueryTypes'][_0xa524('0x7f')]})[_0xa524('0x29')](function(_0x4f1240){if(_0x4f1240[_0xa524('0x58')]===0x1){return _0x56b0a4['id'];}else{var _0x3231c3=_[_0xa524('0x80')](_[_0xa524('0x31')](_0x4f1240,'TeamId'),function(_0x4cb373){return _['includes'](_0x1c411d,_0x4cb373);});if(_0x3231c3){return _0x56b0a4['id'];}}}));}}return BPromise[_0xa524('0x81')](_0x3d6905)[_0xa524('0x29')](function(_0x144cdb){_0x22f7f7=_(_0x22f7f7)['union'](_0x144cdb)[_0xa524('0x82')]()[_0xa524('0x83')]();return db[_0xa524('0x32')][_0xa524('0x4a')]({'where':{'id':_0xd9b867[_0xa524('0x47')]['id']}})[_0xa524('0x29')](function(_0x31ad4c){return db[_0xa524('0x6d')]['transaction'](function(_0x2d7d79){return _0x31ad4c[_0xa524('0x74')](_0xd9b867[_0xa524('0x35')][_0xa524('0x67')],{'transaction':_0x2d7d79})['then'](function(){if(!_[_0xa524('0x84')](_0x22f7f7)){return _0x31ad4c['removeAgents'](_0x22f7f7,{'transaction':_0x2d7d79});}})[_0xa524('0x29')](function(){_0x22f7f7['forEach'](function(_0x54423a){socket[_0xa524('0x72')](_0xa524('0x85'),{'UserId':_0x54423a,'MailQueueId':_0x31ad4c['id']});});});});});});})[_0xa524('0x29')](respondWithStatusCode(_0x977047,null))[_0xa524('0x45')](handleError(_0x977047,null));};exports['addAgents']=function(_0x20a1bd,_0x8bea9a,_0x463cdb){return db['MailQueue'][_0xa524('0x4a')]({'where':{'id':_0x20a1bd[_0xa524('0x47')]['id']}})[_0xa524('0x29')](handleEntityNotFound(_0x8bea9a,null))[_0xa524('0x29')](function(_0x2aff6d){if(_0x2aff6d){return _0x2aff6d[_0xa524('0x86')](_0x20a1bd[_0xa524('0x4c')][_0xa524('0x67')],_[_0xa524('0x87')](_0x20a1bd[_0xa524('0x4c')],[_0xa524('0x67'),'id'])||{})[_0xa524('0x88')](function(_0x143402){for(var _0x4eecd7=0x0;_0x4eecd7<_0x20a1bd[_0xa524('0x4c')]['ids']['length'];_0x4eecd7+=0x1){socket[_0xa524('0x72')](_0xa524('0x73'),{'UserId':Number(_0x20a1bd[_0xa524('0x4c')][_0xa524('0x67')][_0x4eecd7]),'MailQueueId':Number(_0x20a1bd[_0xa524('0x47')]['id'])});}return _0x143402;});}})['then'](respondWithResult(_0x8bea9a,null))[_0xa524('0x45')](handleError(_0x8bea9a,null));};exports[_0xa524('0x89')]=function(_0x3e4068,_0x131679,_0x13a6e1){return db[_0xa524('0x32')][_0xa524('0x4a')]({'where':{'id':_0x3e4068[_0xa524('0x47')]['id']}})[_0xa524('0x29')](handleEntityNotFound(_0x131679,null))['then'](function(_0x48ee70){if(_0x48ee70){return _0x48ee70[_0xa524('0x89')](_0x3e4068[_0xa524('0x35')]['ids'])[_0xa524('0x29')](function(){if(_[_0xa524('0x8a')](_0x3e4068['query']['ids'])){for(var _0x73e29b=0x0;_0x73e29b<_0x3e4068[_0xa524('0x35')][_0xa524('0x67')][_0xa524('0x58')];_0x73e29b+=0x1){socket[_0xa524('0x72')](_0xa524('0x85'),{'UserId':Number(_0x3e4068['query']['ids'][_0x73e29b]),'MailQueueId':Number(_0x3e4068[_0xa524('0x47')]['id'])});}}else{socket['emit'](_0xa524('0x85'),{'UserId':Number(_0x3e4068[_0xa524('0x35')]['ids']),'MailQueueId':Number(_0x3e4068[_0xa524('0x47')]['id'])});}});}})[_0xa524('0x29')](respondWithStatusCode(_0x131679,null))[_0xa524('0x45')](handleError(_0x131679,null));};exports[_0xa524('0x8b')]=function(_0x1a0663,_0x1244dc,_0x181f56){var _0x1ad7e7={};var _0x1f1954={};var _0x5b0206;var _0x49652b;return db['MailQueue'][_0xa524('0x56')]({'where':{'id':_0x1a0663[_0xa524('0x47')]['id']}})[_0xa524('0x29')](handleEntityNotFound(_0x1244dc,null))['then'](function(_0xa41296){if(_0xa41296){_0x5b0206=_0xa41296;_0x1f1954['model']=_[_0xa524('0x36')](db[_0xa524('0x69')][_0xa524('0x33')]);_0x1f1954['query']=_[_0xa524('0x36')](_0x1a0663[_0xa524('0x35')]);_0x1f1954['filters']=_[_0xa524('0x38')](_0x1f1954['model'],_0x1f1954[_0xa524('0x35')]);_0x1ad7e7[_0xa524('0x3a')]=_[_0xa524('0x38')](_0x1f1954[_0xa524('0x39')],qs[_0xa524('0x48')](_0x1a0663[_0xa524('0x35')][_0xa524('0x48')]));_0x1ad7e7[_0xa524('0x3a')]=_0x1ad7e7['attributes'][_0xa524('0x58')]?_0x1ad7e7['attributes']:_0x1f1954['model'];_0x1ad7e7[_0xa524('0x3c')]=qs[_0xa524('0x3d')](_0x1a0663[_0xa524('0x35')][_0xa524('0x3d')]);_0x1ad7e7[_0xa524('0x40')]=qs[_0xa524('0x37')](_[_0xa524('0x3e')](_0x1a0663[_0xa524('0x35')],_0x1f1954[_0xa524('0x37')]));if(_0x1a0663[_0xa524('0x35')][_0xa524('0x3f')]){_0x1ad7e7[_0xa524('0x40')]=_[_0xa524('0x41')](_0x1ad7e7[_0xa524('0x40')],{'$or':_[_0xa524('0x31')](_0x1ad7e7[_0xa524('0x3a')],function(_0x5be057){var _0x27909b={};_0x27909b[_0x5be057]={'$like':'%'+_0x1a0663[_0xa524('0x35')][_0xa524('0x3f')]+'%'};return _0x27909b;})});}_0x1ad7e7=_[_0xa524('0x41')]({},_0x1ad7e7,_0x1a0663['options']);return _0x5b0206['getAgents'](_0x1ad7e7);}})[_0xa524('0x29')](function(_0x10203f){if(_0x10203f){_0x49652b=_0x10203f['length'];if(!_0x1a0663[_0xa524('0x35')][_0xa524('0x3b')](_0xa524('0x59'))){_0x1ad7e7[_0xa524('0x20')]=qs['limit'](_0x1a0663[_0xa524('0x35')][_0xa524('0x20')]);_0x1ad7e7[_0xa524('0x1e')]=qs['offset'](_0x1a0663[_0xa524('0x35')][_0xa524('0x1e')]);}return _0x5b0206[_0xa524('0x8b')](_0x1ad7e7);}})['then'](function(_0x312482){if(_0x312482){return _0x312482?{'count':_0x49652b,'rows':_0x312482}:null;}})[_0xa524('0x29')](respondWithResult(_0x1244dc,null))[_0xa524('0x45')](handleError(_0x1244dc,null));};
\ No newline at end of file
index ba1b796..c60623c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x425a=['emit','hasOwnProperty','hook','exports','events','../../mysqldb','MailQueue','setMaxListeners','save','remove'];(function(_0x1fd675,_0x165dfe){var _0x16b554=function(_0x5761ff){while(--_0x5761ff){_0x1fd675['push'](_0x1fd675['shift']());}};_0x16b554(++_0x165dfe);}(_0x425a,0x1e4));var _0xa425=function(_0x4cee17,_0xda2b5){_0x4cee17=_0x4cee17-0x0;var _0x1d3b07=_0x425a[_0x4cee17];return _0x1d3b07;};'use strict';var EventEmitter=require(_0xa425('0x0'));var MailQueue=require(_0xa425('0x1'))['db'][_0xa425('0x2')];var MailQueueEvents=new EventEmitter();MailQueueEvents[_0xa425('0x3')](0x0);var events={'afterCreate':_0xa425('0x4'),'afterUpdate':'update','afterDestroy':_0xa425('0x5')};function emitEvent(_0x305ab5){return function(_0x5216ef,_0x1b389e,_0x311cfe){MailQueueEvents[_0xa425('0x6')](_0x305ab5+':'+_0x5216ef['id'],_0x5216ef);MailQueueEvents[_0xa425('0x6')](_0x305ab5,_0x5216ef);_0x311cfe(null);};}for(var e in events){if(events[_0xa425('0x7')](e)){var event=events[e];MailQueue[_0xa425('0x8')](e,emitEvent(event));}}module[_0xa425('0x9')]=MailQueueEvents;
\ No newline at end of file
+var _0x10ea=['emit','hasOwnProperty','hook','events','MailQueue','setMaxListeners','save','update','remove'];(function(_0x9175cf,_0x320237){var _0x5cb757=function(_0x4c8ca4){while(--_0x4c8ca4){_0x9175cf['push'](_0x9175cf['shift']());}};_0x5cb757(++_0x320237);}(_0x10ea,0x1d7));var _0xa10e=function(_0x5f309e,_0x66e31){_0x5f309e=_0x5f309e-0x0;var _0x487b5e=_0x10ea[_0x5f309e];return _0x487b5e;};'use strict';var EventEmitter=require(_0xa10e('0x0'));var MailQueue=require('../../mysqldb')['db'][_0xa10e('0x1')];var MailQueueEvents=new EventEmitter();MailQueueEvents[_0xa10e('0x2')](0x0);var events={'afterCreate':_0xa10e('0x3'),'afterUpdate':_0xa10e('0x4'),'afterDestroy':_0xa10e('0x5')};function emitEvent(_0x8f6b5b){return function(_0x129ea7,_0x116d35,_0x3c93f6){MailQueueEvents[_0xa10e('0x6')](_0x8f6b5b+':'+_0x129ea7['id'],_0x129ea7);MailQueueEvents[_0xa10e('0x6')](_0x8f6b5b,_0x129ea7);_0x3c93f6(null);};}for(var e in events){if(events[_0xa10e('0x7')](e)){var event=events[e];MailQueue[_0xa10e('0x8')](e,emitEvent(event));}}module['exports']=MailQueueEvents;
\ No newline at end of file
index 770201f..a39c822 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x94e2=['bluebird','request-promise','path','../../config/environment','./mailQueue.attributes','exports','mail_queues','util','../../config/logger','api','moment'];(function(_0x1c60d1,_0x1f8e91){var _0x398cef=function(_0x4679e6){while(--_0x4679e6){_0x1c60d1['push'](_0x1c60d1['shift']());}};_0x398cef(++_0x1f8e91);}(_0x94e2,0x13b));var _0x294e=function(_0x3871d7,_0x3cfcc5){_0x3871d7=_0x3871d7-0x0;var _0x28ec09=_0x94e2[_0x3871d7];return _0x28ec09;};'use strict';var _=require('lodash');var util=require(_0x294e('0x0'));var logger=require(_0x294e('0x1'))(_0x294e('0x2'));var moment=require(_0x294e('0x3'));var BPromise=require(_0x294e('0x4'));var rp=require(_0x294e('0x5'));var fs=require('fs');var path=require(_0x294e('0x6'));var rimraf=require('rimraf');var config=require(_0x294e('0x7'));var attributes=require(_0x294e('0x8'));module[_0x294e('0x9')]=function(_0x146bcf,_0x1d46a4){return _0x146bcf['define']('MailQueue',attributes,{'tableName':_0x294e('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xc5d5=['../../config/logger','moment','bluebird','request-promise','rimraf','./mailQueue.attributes','exports','define','mail_queues','lodash','util'];(function(_0x321bb2,_0x202794){var _0x9c12ed=function(_0x263dd3){while(--_0x263dd3){_0x321bb2['push'](_0x321bb2['shift']());}};_0x9c12ed(++_0x202794);}(_0xc5d5,0x6c));var _0x5c5d=function(_0x52ff6b,_0x4e8414){_0x52ff6b=_0x52ff6b-0x0;var _0x2a273f=_0xc5d5[_0x52ff6b];return _0x2a273f;};'use strict';var _=require(_0x5c5d('0x0'));var util=require(_0x5c5d('0x1'));var logger=require(_0x5c5d('0x2'))('api');var moment=require(_0x5c5d('0x3'));var BPromise=require(_0x5c5d('0x4'));var rp=require(_0x5c5d('0x5'));var fs=require('fs');var path=require('path');var rimraf=require(_0x5c5d('0x6'));var config=require('../../config/environment');var attributes=require(_0x5c5d('0x7'));module[_0x5c5d('0x8')]=function(_0xfbdf9d,_0x2eb536){return _0xfbdf9d[_0x5c5d('0x9')]('MailQueue',attributes,{'tableName':_0x5c5d('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 9d93690..cbce628 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4357=['where','attributes','stringify','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','rpc','../../config/environment','jayson/promise','client','http','redis','defaults','localhost','socket.io-emitter','./mailQueue.socket','register','request','then','info','MailQueue,\x20%s,\x20%s','request\x20sent','error','message','result','GetMailQueue','MailQueue','findAll','options','raw','limit','include','model','map','debug','catch','ShowMailQueue','find'];(function(_0x2d0dc8,_0x29756f){var _0x1a015c=function(_0x4f7315){while(--_0x4f7315){_0x2d0dc8['push'](_0x2d0dc8['shift']());}};_0x1a015c(++_0x29756f);}(_0x4357,0xa7));var _0x7435=function(_0x42bda2,_0x4106ca){_0x42bda2=_0x42bda2-0x0;var _0x625d2d=_0x4357[_0x42bda2];return _0x625d2d;};'use strict';var _=require('lodash');var util=require('util');var moment=require(_0x7435('0x0'));var BPromise=require(_0x7435('0x1'));var rs=require(_0x7435('0x2'));var fs=require('fs');var Redis=require(_0x7435('0x3'));var db=require(_0x7435('0x4'))['db'];var utils=require(_0x7435('0x5'));var logger=require('../../config/logger')(_0x7435('0x6'));var config=require(_0x7435('0x7'));var jayson=require(_0x7435('0x8'));var client=jayson[_0x7435('0x9')][_0x7435('0xa')]({'port':0x232a});config[_0x7435('0xb')]=_[_0x7435('0xc')](config[_0x7435('0xb')],{'host':_0x7435('0xd'),'port':0x18eb});var socket=require(_0x7435('0xe'))(new Redis(config[_0x7435('0xb')]));require(_0x7435('0xf'))[_0x7435('0x10')](socket);function respondWithRpcPromise(_0x30b933,_0xccba4a,_0x30faca){return new BPromise(function(_0x42c55e,_0x435ead){return client[_0x7435('0x11')](_0x30b933,_0x30faca)[_0x7435('0x12')](function(_0x502c3b){logger[_0x7435('0x13')](_0x7435('0x14'),_0xccba4a,_0x7435('0x15'));logger['debug']('MailQueue,\x20%s,\x20%s,\x20%s',_0xccba4a,_0x7435('0x15'),JSON['stringify'](_0x502c3b));if(_0x502c3b[_0x7435('0x16')]){if(_0x502c3b[_0x7435('0x16')]['code']===0x1f4){logger['error']('MailQueue,\x20%s,\x20%s',_0xccba4a,_0x502c3b[_0x7435('0x16')][_0x7435('0x17')]);return _0x435ead(_0x502c3b[_0x7435('0x16')][_0x7435('0x17')]);}logger['error'](_0x7435('0x14'),_0xccba4a,_0x502c3b[_0x7435('0x16')][_0x7435('0x17')]);return _0x42c55e(_0x502c3b[_0x7435('0x16')][_0x7435('0x17')]);}else{logger[_0x7435('0x13')](_0x7435('0x14'),_0xccba4a,'request\x20sent');_0x42c55e(_0x502c3b[_0x7435('0x18')][_0x7435('0x17')]);}})['catch'](function(_0x5eeff7){logger[_0x7435('0x16')](_0x7435('0x14'),_0xccba4a,_0x5eeff7);_0x435ead(_0x5eeff7);});});}exports[_0x7435('0x19')]=function(_0x476218){var _0x268c6c=this;return new Promise(function(_0x4771ba,_0x14b801){return db[_0x7435('0x1a')][_0x7435('0x1b')]({'raw':_0x476218[_0x7435('0x1c')]?_0x476218[_0x7435('0x1c')][_0x7435('0x1d')]===undefined?!![]:![]:!![],'where':_0x476218[_0x7435('0x1c')]?_0x476218[_0x7435('0x1c')]['where']||null:null,'attributes':_0x476218[_0x7435('0x1c')]?_0x476218['options']['attributes']||null:null,'limit':_0x476218['options']?_0x476218[_0x7435('0x1c')][_0x7435('0x1e')]||null:null,'include':_0x476218[_0x7435('0x1c')]?_0x476218['options'][_0x7435('0x1f')]?_['map'](_0x476218[_0x7435('0x1c')]['include'],function(_0x45c776){return{'model':db[_0x45c776[_0x7435('0x20')]],'as':_0x45c776['as'],'attributes':_0x45c776['attributes'],'include':_0x45c776['include']?_['map'](_0x45c776[_0x7435('0x1f')],function(_0x5cf433){return{'model':db[_0x5cf433[_0x7435('0x20')]],'as':_0x5cf433['as'],'attributes':_0x5cf433['attributes'],'include':_0x5cf433[_0x7435('0x1f')]?_[_0x7435('0x21')](_0x5cf433[_0x7435('0x1f')],function(_0x12f13b){return{'model':db[_0x12f13b[_0x7435('0x20')]],'as':_0x12f13b['as'],'attributes':_0x12f13b['attributes']};}):[]};}):[]};}):[]:[]})[_0x7435('0x12')](function(_0x142c1b){logger[_0x7435('0x13')](_0x7435('0x19'),_0x476218);logger[_0x7435('0x22')]('GetMailQueue',_0x476218,JSON['stringify'](_0x142c1b));_0x4771ba(_0x142c1b);})[_0x7435('0x23')](function(_0x38af6b){logger[_0x7435('0x16')]('GetMailQueue',_0x38af6b['message'],_0x476218);_0x14b801(_0x268c6c['error'](0x1f4,_0x38af6b['message']));});});};exports[_0x7435('0x24')]=function(_0x27c55c){var _0x3c23c5=this;return new Promise(function(_0xa374de,_0x58289a){return db['MailQueue'][_0x7435('0x25')]({'raw':_0x27c55c[_0x7435('0x1c')]?_0x27c55c[_0x7435('0x1c')]['raw']===undefined?!![]:![]:!![],'where':_0x27c55c[_0x7435('0x1c')]?_0x27c55c[_0x7435('0x1c')][_0x7435('0x26')]||null:null,'attributes':_0x27c55c[_0x7435('0x1c')]?_0x27c55c[_0x7435('0x1c')][_0x7435('0x27')]||null:null,'include':_0x27c55c[_0x7435('0x1c')]?_0x27c55c[_0x7435('0x1c')]['include']?_[_0x7435('0x21')](_0x27c55c[_0x7435('0x1c')][_0x7435('0x1f')],function(_0x443e8b){return{'model':db[_0x443e8b[_0x7435('0x20')]],'as':_0x443e8b['as'],'attributes':_0x443e8b[_0x7435('0x27')],'include':_0x443e8b[_0x7435('0x1f')]?_[_0x7435('0x21')](_0x443e8b[_0x7435('0x1f')],function(_0x3d8c03){return{'model':db[_0x3d8c03[_0x7435('0x20')]],'as':_0x3d8c03['as'],'attributes':_0x3d8c03[_0x7435('0x27')],'include':_0x3d8c03['include']?_[_0x7435('0x21')](_0x3d8c03[_0x7435('0x1f')],function(_0x37f61a){return{'model':db[_0x37f61a[_0x7435('0x20')]],'as':_0x37f61a['as'],'attributes':_0x37f61a[_0x7435('0x27')]};}):[]};}):[]};}):[]:[]})['then'](function(_0x4a0fd6){logger[_0x7435('0x13')](_0x7435('0x24'),_0x27c55c);logger['debug'](_0x7435('0x24'),_0x27c55c,JSON[_0x7435('0x28')](_0x4a0fd6));_0xa374de(_0x4a0fd6);})[_0x7435('0x23')](function(_0x21d2d5){logger[_0x7435('0x16')]('ShowMailQueue',_0x21d2d5[_0x7435('0x17')],_0x27c55c);_0x58289a(_0x3c23c5[_0x7435('0x16')](0x1f4,_0x21d2d5[_0x7435('0x17')]));});});};
\ No newline at end of file
+var _0x9a77=['request\x20sent','debug','MailQueue,\x20%s,\x20%s,\x20%s','stringify','error','code','MailQueue,\x20%s,\x20%s','message','info','result','catch','GetMailQueue','MailQueue','options','raw','where','attributes','include','map','model','ShowMailQueue','find','lodash','util','moment','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','../../config/environment','client','http','redis','defaults','localhost','socket.io-emitter','request','then'];(function(_0x3e1b2c,_0x271716){var _0x6a2001=function(_0x793917){while(--_0x793917){_0x3e1b2c['push'](_0x3e1b2c['shift']());}};_0x6a2001(++_0x271716);}(_0x9a77,0x100));var _0x79a7=function(_0x2e3203,_0x192a4e){_0x2e3203=_0x2e3203-0x0;var _0x155971=_0x9a77[_0x2e3203];return _0x155971;};'use strict';var _=require(_0x79a7('0x0'));var util=require(_0x79a7('0x1'));var moment=require(_0x79a7('0x2'));var BPromise=require('bluebird');var rs=require(_0x79a7('0x3'));var fs=require('fs');var Redis=require(_0x79a7('0x4'));var db=require(_0x79a7('0x5'))['db'];var utils=require(_0x79a7('0x6'));var logger=require(_0x79a7('0x7'))('rpc');var config=require(_0x79a7('0x8'));var jayson=require('jayson/promise');var client=jayson[_0x79a7('0x9')][_0x79a7('0xa')]({'port':0x232a});config[_0x79a7('0xb')]=_[_0x79a7('0xc')](config[_0x79a7('0xb')],{'host':_0x79a7('0xd'),'port':0x18eb});var socket=require(_0x79a7('0xe'))(new Redis(config[_0x79a7('0xb')]));require('./mailQueue.socket')['register'](socket);function respondWithRpcPromise(_0x5d0be1,_0x219c03,_0x529c){return new BPromise(function(_0x1815b2,_0x254138){return client[_0x79a7('0xf')](_0x5d0be1,_0x529c)[_0x79a7('0x10')](function(_0x73cf89){logger['info']('MailQueue,\x20%s,\x20%s',_0x219c03,_0x79a7('0x11'));logger[_0x79a7('0x12')](_0x79a7('0x13'),_0x219c03,_0x79a7('0x11'),JSON[_0x79a7('0x14')](_0x73cf89));if(_0x73cf89['error']){if(_0x73cf89[_0x79a7('0x15')][_0x79a7('0x16')]===0x1f4){logger['error'](_0x79a7('0x17'),_0x219c03,_0x73cf89[_0x79a7('0x15')][_0x79a7('0x18')]);return _0x254138(_0x73cf89[_0x79a7('0x15')][_0x79a7('0x18')]);}logger['error'](_0x79a7('0x17'),_0x219c03,_0x73cf89[_0x79a7('0x15')]['message']);return _0x1815b2(_0x73cf89['error']['message']);}else{logger[_0x79a7('0x19')](_0x79a7('0x17'),_0x219c03,_0x79a7('0x11'));_0x1815b2(_0x73cf89[_0x79a7('0x1a')][_0x79a7('0x18')]);}})[_0x79a7('0x1b')](function(_0x225f65){logger['error'](_0x79a7('0x17'),_0x219c03,_0x225f65);_0x254138(_0x225f65);});});}exports[_0x79a7('0x1c')]=function(_0x2ffbbd){var _0x5cb8ac=this;return new Promise(function(_0x2a1586,_0xbbea6c){return db[_0x79a7('0x1d')]['findAll']({'raw':_0x2ffbbd[_0x79a7('0x1e')]?_0x2ffbbd['options'][_0x79a7('0x1f')]===undefined?!![]:![]:!![],'where':_0x2ffbbd[_0x79a7('0x1e')]?_0x2ffbbd[_0x79a7('0x1e')][_0x79a7('0x20')]||null:null,'attributes':_0x2ffbbd[_0x79a7('0x1e')]?_0x2ffbbd[_0x79a7('0x1e')][_0x79a7('0x21')]||null:null,'limit':_0x2ffbbd[_0x79a7('0x1e')]?_0x2ffbbd[_0x79a7('0x1e')]['limit']||null:null,'include':_0x2ffbbd[_0x79a7('0x1e')]?_0x2ffbbd[_0x79a7('0x1e')][_0x79a7('0x22')]?_[_0x79a7('0x23')](_0x2ffbbd[_0x79a7('0x1e')][_0x79a7('0x22')],function(_0x2f6bc2){return{'model':db[_0x2f6bc2[_0x79a7('0x24')]],'as':_0x2f6bc2['as'],'attributes':_0x2f6bc2[_0x79a7('0x21')],'include':_0x2f6bc2['include']?_['map'](_0x2f6bc2[_0x79a7('0x22')],function(_0x4e39ef){return{'model':db[_0x4e39ef[_0x79a7('0x24')]],'as':_0x4e39ef['as'],'attributes':_0x4e39ef[_0x79a7('0x21')],'include':_0x4e39ef[_0x79a7('0x22')]?_[_0x79a7('0x23')](_0x4e39ef[_0x79a7('0x22')],function(_0x1e5b7c){return{'model':db[_0x1e5b7c[_0x79a7('0x24')]],'as':_0x1e5b7c['as'],'attributes':_0x1e5b7c['attributes']};}):[]};}):[]};}):[]:[]})[_0x79a7('0x10')](function(_0x6e3815){logger['info'](_0x79a7('0x1c'),_0x2ffbbd);logger[_0x79a7('0x12')](_0x79a7('0x1c'),_0x2ffbbd,JSON['stringify'](_0x6e3815));_0x2a1586(_0x6e3815);})[_0x79a7('0x1b')](function(_0x25a7d1){logger[_0x79a7('0x15')](_0x79a7('0x1c'),_0x25a7d1[_0x79a7('0x18')],_0x2ffbbd);_0xbbea6c(_0x5cb8ac[_0x79a7('0x15')](0x1f4,_0x25a7d1[_0x79a7('0x18')]));});});};exports[_0x79a7('0x25')]=function(_0x17b9ca){var _0x1d3748=this;return new Promise(function(_0x175bfa,_0xc30f82){return db[_0x79a7('0x1d')][_0x79a7('0x26')]({'raw':_0x17b9ca[_0x79a7('0x1e')]?_0x17b9ca['options'][_0x79a7('0x1f')]===undefined?!![]:![]:!![],'where':_0x17b9ca['options']?_0x17b9ca[_0x79a7('0x1e')][_0x79a7('0x20')]||null:null,'attributes':_0x17b9ca[_0x79a7('0x1e')]?_0x17b9ca[_0x79a7('0x1e')][_0x79a7('0x21')]||null:null,'include':_0x17b9ca[_0x79a7('0x1e')]?_0x17b9ca['options'][_0x79a7('0x22')]?_[_0x79a7('0x23')](_0x17b9ca[_0x79a7('0x1e')][_0x79a7('0x22')],function(_0x108ebc){return{'model':db[_0x108ebc[_0x79a7('0x24')]],'as':_0x108ebc['as'],'attributes':_0x108ebc[_0x79a7('0x21')],'include':_0x108ebc[_0x79a7('0x22')]?_[_0x79a7('0x23')](_0x108ebc['include'],function(_0x2e0a34){return{'model':db[_0x2e0a34[_0x79a7('0x24')]],'as':_0x2e0a34['as'],'attributes':_0x2e0a34[_0x79a7('0x21')],'include':_0x2e0a34[_0x79a7('0x22')]?_[_0x79a7('0x23')](_0x2e0a34[_0x79a7('0x22')],function(_0x33d579){return{'model':db[_0x33d579[_0x79a7('0x24')]],'as':_0x33d579['as'],'attributes':_0x33d579['attributes']};}):[]};}):[]};}):[]:[]})['then'](function(_0x34b379){logger[_0x79a7('0x19')](_0x79a7('0x25'),_0x17b9ca);logger[_0x79a7('0x12')](_0x79a7('0x25'),_0x17b9ca,JSON['stringify'](_0x34b379));_0x175bfa(_0x34b379);})[_0x79a7('0x1b')](function(_0x3424de){logger[_0x79a7('0x15')](_0x79a7('0x25'),_0x3424de[_0x79a7('0x18')],_0x17b9ca);_0xc30f82(_0x1d3748[_0x79a7('0x15')](0x1f4,_0x3424de[_0x79a7('0x18')]));});});};
\ No newline at end of file
index 92f9b1d..e489ddd 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x531a=['update','emit','register','length','./mailQueue.events','save','remove'];(function(_0x1ddb17,_0x2b11db){var _0x46b76d=function(_0xca92fb){while(--_0xca92fb){_0x1ddb17['push'](_0x1ddb17['shift']());}};_0x46b76d(++_0x2b11db);}(_0x531a,0x100));var _0xa531=function(_0x5b2e3f,_0x42141d){_0x5b2e3f=_0x5b2e3f-0x0;var _0x579b5e=_0x531a[_0x5b2e3f];return _0x579b5e;};'use strict';var MailQueueEvents=require(_0xa531('0x0'));var events=[_0xa531('0x1'),_0xa531('0x2'),_0xa531('0x3')];function createListener(_0x2a5348,_0x3ccd8f){return function(_0x3e8e4b){_0x3ccd8f[_0xa531('0x4')](_0x2a5348,_0x3e8e4b);};}function removeListener(_0x28af07,_0x27609d){return function(){MailQueueEvents['removeListener'](_0x28af07,_0x27609d);};}exports[_0xa531('0x5')]=function(_0x4ec419){for(var _0x266b43=0x0,_0x4446b9=events[_0xa531('0x6')];_0x266b43<_0x4446b9;_0x266b43++){var _0x286dc7=events[_0x266b43];var _0x3b68a7=createListener('mailQueue:'+_0x286dc7,_0x4ec419);MailQueueEvents['on'](_0x286dc7,_0x3b68a7);}};
\ No newline at end of file
+var _0x2b79=['save','remove','update','emit','removeListener','register','length','mailQueue:'];(function(_0x4e4061,_0x26503b){var _0x371dbd=function(_0x31a31f){while(--_0x31a31f){_0x4e4061['push'](_0x4e4061['shift']());}};_0x371dbd(++_0x26503b);}(_0x2b79,0x138));var _0x92b7=function(_0x56500a,_0x5953c7){_0x56500a=_0x56500a-0x0;var _0x333977=_0x2b79[_0x56500a];return _0x333977;};'use strict';var MailQueueEvents=require('./mailQueue.events');var events=[_0x92b7('0x0'),_0x92b7('0x1'),_0x92b7('0x2')];function createListener(_0x810cd1,_0x31072b){return function(_0x45bfae){_0x31072b[_0x92b7('0x3')](_0x810cd1,_0x45bfae);};}function removeListener(_0x36fe,_0xfed1){return function(){MailQueueEvents[_0x92b7('0x4')](_0x36fe,_0xfed1);};}exports[_0x92b7('0x5')]=function(_0x510a54){for(var _0x2c1628=0x0,_0x55817e=events[_0x92b7('0x6')];_0x2c1628<_0x55817e;_0x2c1628++){var _0x321707=events[_0x2c1628];var _0x5969b3=createListener(_0x92b7('0x7')+_0x321707,_0x510a54);MailQueueEvents['on'](_0x321707,_0x5969b3);}};
\ No newline at end of file
index 42178f5..629db13 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x312e=['describe','get','/:id','post','create','put','update','delete','destroy','multer','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','isAuthenticated','index','/describe'];(function(_0x1cb18a,_0x33167a){var _0x22442e=function(_0x46c611){while(--_0x46c611){_0x1cb18a['push'](_0x1cb18a['shift']());}};_0x22442e(++_0x33167a);}(_0x312e,0x1ad));var _0xe312=function(_0x48182a,_0x28cafd){_0x48182a=_0x48182a-0x0;var _0x3670b2=_0x312e[_0x48182a];return _0x3670b2;};'use strict';var multer=require(_0xe312('0x0'));var util=require(_0xe312('0x1'));var path=require(_0xe312('0x2'));var timeout=require(_0xe312('0x3'));var express=require(_0xe312('0x4'));var router=express[_0xe312('0x5')]();var fs_extra=require(_0xe312('0x6'));var auth=require(_0xe312('0x7'));var interaction=require(_0xe312('0x8'));var config=require('../../config/environment');var controller=require('./mailQueueReport.controller');router['get']('/',auth[_0xe312('0x9')](),controller[_0xe312('0xa')]);router['get'](_0xe312('0xb'),auth[_0xe312('0x9')](),controller[_0xe312('0xc')]);router[_0xe312('0xd')](_0xe312('0xe'),auth[_0xe312('0x9')](),controller['show']);router[_0xe312('0xf')]('/',auth[_0xe312('0x9')](),controller[_0xe312('0x10')]);router[_0xe312('0x11')]('/:id',auth['isAuthenticated'](),controller[_0xe312('0x12')]);router[_0xe312('0x13')](_0xe312('0xe'),auth[_0xe312('0x9')](),controller[_0xe312('0x14')]);module['exports']=router;
\ No newline at end of file
+var _0xd300=['../../components/interaction/service','../../config/environment','./mailQueueReport.controller','get','isAuthenticated','index','/describe','/:id','show','post','create','put','delete','multer','util','path','connect-timeout','Router','fs-extra'];(function(_0x21b359,_0x4dc80e){var _0x57b8e7=function(_0x135adb){while(--_0x135adb){_0x21b359['push'](_0x21b359['shift']());}};_0x57b8e7(++_0x4dc80e);}(_0xd300,0xb8));var _0x0d30=function(_0x48881c,_0x2e5317){_0x48881c=_0x48881c-0x0;var _0x443406=_0xd300[_0x48881c];return _0x443406;};'use strict';var multer=require(_0x0d30('0x0'));var util=require(_0x0d30('0x1'));var path=require(_0x0d30('0x2'));var timeout=require(_0x0d30('0x3'));var express=require('express');var router=express[_0x0d30('0x4')]();var fs_extra=require(_0x0d30('0x5'));var auth=require('../../components/auth/service');var interaction=require(_0x0d30('0x6'));var config=require(_0x0d30('0x7'));var controller=require(_0x0d30('0x8'));router[_0x0d30('0x9')]('/',auth[_0x0d30('0xa')](),controller[_0x0d30('0xb')]);router[_0x0d30('0x9')](_0x0d30('0xc'),auth[_0x0d30('0xa')](),controller['describe']);router[_0x0d30('0x9')](_0x0d30('0xd'),auth['isAuthenticated'](),controller[_0x0d30('0xe')]);router[_0x0d30('0xf')]('/',auth[_0x0d30('0xa')](),controller[_0x0d30('0x10')]);router[_0x0d30('0x11')](_0x0d30('0xd'),auth[_0x0d30('0xa')](),controller['update']);router[_0x0d30('0x12')](_0x0d30('0xd'),auth[_0x0d30('0xa')](),controller['destroy']);module['exports']=router;
\ No newline at end of file
index 7a21060..62f7f71 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf3d2=['sequelize','exports','STRING','DATE','moment'];(function(_0x4825f4,_0x5114ae){var _0x537585=function(_0x3da92b){while(--_0x3da92b){_0x4825f4['push'](_0x4825f4['shift']());}};_0x537585(++_0x5114ae);}(_0xf3d2,0x180));var _0x2f3d=function(_0x5d4607,_0x6b5e7b){_0x5d4607=_0x5d4607-0x0;var _0x5e4a86=_0xf3d2[_0x5d4607];return _0x5e4a86;};'use strict';var moment=require(_0x2f3d('0x0'));var Sequelize=require(_0x2f3d('0x1'));module[_0x2f3d('0x2')]={'uniqueid':{'type':Sequelize[_0x2f3d('0x3')],'allowNull':![]},'from':{'type':Sequelize[_0x2f3d('0x3')]},'joinAt':{'type':Sequelize[_0x2f3d('0x4')]},'leaveAt':{'type':Sequelize[_0x2f3d('0x4')]},'acceptAt':{'type':Sequelize[_0x2f3d('0x4')]},'exitAt':{'type':Sequelize[_0x2f3d('0x4')]},'reason':{'type':Sequelize[_0x2f3d('0x3')]}};
\ No newline at end of file
+var _0xec96=['DATE','moment','sequelize','exports','STRING'];(function(_0x5a1987,_0x140afa){var _0x5c5a82=function(_0x3290a0){while(--_0x3290a0){_0x5a1987['push'](_0x5a1987['shift']());}};_0x5c5a82(++_0x140afa);}(_0xec96,0x119));var _0x6ec9=function(_0x5e1893,_0x5395dd){_0x5e1893=_0x5e1893-0x0;var _0x3eb998=_0xec96[_0x5e1893];return _0x3eb998;};'use strict';var moment=require(_0x6ec9('0x0'));var Sequelize=require(_0x6ec9('0x1'));module[_0x6ec9('0x2')]={'uniqueid':{'type':Sequelize[_0x6ec9('0x3')],'allowNull':![]},'from':{'type':Sequelize[_0x6ec9('0x3')]},'joinAt':{'type':Sequelize[_0x6ec9('0x4')]},'leaveAt':{'type':Sequelize[_0x6ec9('0x4')]},'acceptAt':{'type':Sequelize[_0x6ec9('0x4')]},'exitAt':{'type':Sequelize['DATE']},'reason':{'type':Sequelize[_0x6ec9('0x3')]}};
\ No newline at end of file
index 3a4d45e..b869eb0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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(_0x53ca42,_0x29201d){var _0x43a90c=function(_0x25ecc8){while(--_0x25ecc8){_0x53ca42['push'](_0x53ca42['shift']());}};_0x43a90c(++_0x29201d);}(_0x68b3,0x1d8));var _0x368b=function(_0x426d60,_0x72f21f){_0x426d60=_0x426d60-0x0;var _0x5428ca=_0x68b3[_0x426d60];return _0x5428ca;};'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
+var _0x6050=['filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','filter','merge','VIRTUAL','options','includeAll','findAll','rows','catch','show','params','include','find','create','body','update','describe','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','mustache','util','path','fs-extra','jsforce','desk.js','to-csv','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','json','offset','undefined','limit','count','Content-Range','apply','reject','save','then','destroy','name','send','index','map','MailQueueReport','rawAttributes','type','key','model','query','keys'];(function(_0x4ca8a3,_0xa834be){var _0x27d6c2=function(_0xc60844){while(--_0xc60844){_0x4ca8a3['push'](_0x4ca8a3['shift']());}};_0x27d6c2(++_0xa834be);}(_0x6050,0x196));var _0x0605=function(_0x5d5871,_0x1275d0){_0x5d5871=_0x5d5871-0x0;var _0x40f7c8=_0x6050[_0x5d5871];return _0x40f7c8;};'use strict';var emlformat=require(_0x0605('0x0'));var rimraf=require(_0x0605('0x1'));var zipdir=require(_0x0605('0x2'));var jsonpatch=require(_0x0605('0x3'));var rp=require(_0x0605('0x4'));var moment=require(_0x0605('0x5'));var BPromise=require('bluebird');var Mustache=require(_0x0605('0x6'));var util=require(_0x0605('0x7'));var path=require(_0x0605('0x8'));var sox=require('sox');var csv=require('to-csv');var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x0605('0x9'));var _=require('lodash');var squel=require('squel');var crypto=require('crypto');var jsforce=require(_0x0605('0xa'));var deskjs=require(_0x0605('0xb'));var toCsv=require(_0x0605('0xc'));var querystring=require(_0x0605('0xd'));var Papa=require(_0x0605('0xe'));var Redis=require('ioredis');var authService=require(_0x0605('0xf'));var qs=require(_0x0605('0x10'));var as=require(_0x0605('0x11'));var hardwareService=require(_0x0605('0x12'));var logger=require(_0x0605('0x13'))(_0x0605('0x14'));var utils=require(_0x0605('0x15'));var config=require(_0x0605('0x16'));var licenseUtil=require(_0x0605('0x17'));var db=require(_0x0605('0x18'))['db'];function respondWithStatusCode(_0xd22e35,_0x39e288){_0x39e288=_0x39e288||0xcc;return function(_0x34c9e6){if(_0x34c9e6){return _0xd22e35[_0x0605('0x19')](_0x39e288);}return _0xd22e35[_0x0605('0x1a')](_0x39e288)[_0x0605('0x1b')]();};}function respondWithResult(_0x169a70,_0x65a20b){_0x65a20b=_0x65a20b||0xc8;return function(_0x1b944f){if(_0x1b944f){return _0x169a70['status'](_0x65a20b)[_0x0605('0x1c')](_0x1b944f);}};}function respondWithFilteredResult(_0x1a802b,_0x4993ab){return function(_0x5ce56a){if(_0x5ce56a){var _0x4eefe9=typeof _0x4993ab[_0x0605('0x1d')]===_0x0605('0x1e')&&typeof _0x4993ab[_0x0605('0x1f')]===_0x0605('0x1e');var _0xefc557=_0x5ce56a[_0x0605('0x20')];var _0x2b7b5a=_0x4eefe9?0x0:_0x4993ab[_0x0605('0x1d')];var _0x193520=_0x4eefe9?_0x5ce56a[_0x0605('0x20')]:_0x4993ab[_0x0605('0x1d')]+_0x4993ab[_0x0605('0x1f')];var _0x2e2204;if(_0x193520>=_0xefc557){_0x193520=_0xefc557;_0x2e2204=0xc8;}else{_0x2e2204=0xce;}_0x1a802b[_0x0605('0x1a')](_0x2e2204);return _0x1a802b['set'](_0x0605('0x21'),_0x2b7b5a+'-'+_0x193520+'/'+_0xefc557)[_0x0605('0x1c')](_0x5ce56a);}return null;};}function patchUpdates(_0x430f28){return function(_0x443326){try{jsonpatch[_0x0605('0x22')](_0x443326,_0x430f28,!![]);}catch(_0x90b2e1){return BPromise[_0x0605('0x23')](_0x90b2e1);}return _0x443326[_0x0605('0x24')]();};}function saveUpdates(_0x226ef5,_0x5b0d44){return function(_0xc334b8){if(_0xc334b8){return _0xc334b8['update'](_0x226ef5)[_0x0605('0x25')](function(_0x118e9c){return _0x118e9c;});}return null;};}function removeEntity(_0x110098,_0xf182c4){return function(_0x10c575){if(_0x10c575){return _0x10c575[_0x0605('0x26')]()[_0x0605('0x25')](function(){_0x110098[_0x0605('0x1a')](0xcc)[_0x0605('0x1b')]();});}};}function handleEntityNotFound(_0x2896d7,_0x9f2833){return function(_0x1c3722){if(!_0x1c3722){_0x2896d7['sendStatus'](0x194);}return _0x1c3722;};}function handleError(_0x6bc204,_0x3c8e36){_0x3c8e36=_0x3c8e36||0x1f4;return function(_0x4b1e0c){logger['error'](_0x4b1e0c['stack']);if(_0x4b1e0c[_0x0605('0x27')]){delete _0x4b1e0c[_0x0605('0x27')];}_0x6bc204[_0x0605('0x1a')](_0x3c8e36)[_0x0605('0x28')](_0x4b1e0c);};}exports[_0x0605('0x29')]=function(_0x4554df,_0x4e32ef){var _0x34f25d={},_0x5daef6={},_0xa836f2={'count':0x0,'rows':[]};var _0x3640b9=_[_0x0605('0x2a')](db[_0x0605('0x2b')][_0x0605('0x2c')],function(_0x352dd6){return{'name':_0x352dd6['fieldName'],'type':_0x352dd6[_0x0605('0x2d')][_0x0605('0x2e')]};});_0x5daef6[_0x0605('0x2f')]=_[_0x0605('0x2a')](_0x3640b9,_0x0605('0x27'));_0x5daef6[_0x0605('0x30')]=_[_0x0605('0x31')](_0x4554df[_0x0605('0x30')]);_0x5daef6[_0x0605('0x32')]=_[_0x0605('0x33')](_0x5daef6[_0x0605('0x2f')],_0x5daef6[_0x0605('0x30')]);_0x34f25d[_0x0605('0x34')]=_[_0x0605('0x33')](_0x5daef6[_0x0605('0x2f')],qs[_0x0605('0x35')](_0x4554df[_0x0605('0x30')][_0x0605('0x35')]));_0x34f25d[_0x0605('0x34')]=_0x34f25d[_0x0605('0x34')][_0x0605('0x36')]?_0x34f25d[_0x0605('0x34')]:_0x5daef6[_0x0605('0x2f')];if(!_0x4554df[_0x0605('0x30')][_0x0605('0x37')](_0x0605('0x38'))){_0x34f25d[_0x0605('0x1f')]=qs['limit'](_0x4554df[_0x0605('0x30')][_0x0605('0x1f')]);_0x34f25d['offset']=qs[_0x0605('0x1d')](_0x4554df[_0x0605('0x30')]['offset']);}_0x34f25d[_0x0605('0x39')]=qs[_0x0605('0x3a')](_0x4554df[_0x0605('0x30')][_0x0605('0x3a')]);_0x34f25d[_0x0605('0x3b')]=qs[_0x0605('0x32')](_['pick'](_0x4554df['query'],_0x5daef6[_0x0605('0x32')]),_0x3640b9);if(_0x4554df[_0x0605('0x30')][_0x0605('0x3c')]){_0x34f25d['where']=_[_0x0605('0x3d')](_0x34f25d['where'],{'$or':_[_0x0605('0x2a')](_0x3640b9,function(_0x1e98f6){if(_0x1e98f6[_0x0605('0x2d')]!==_0x0605('0x3e')){var _0x42f7ce={};_0x42f7ce[_0x1e98f6[_0x0605('0x27')]]={'$like':'%'+_0x4554df[_0x0605('0x30')][_0x0605('0x3c')]+'%'};return _0x42f7ce;}})});}_0x34f25d=_[_0x0605('0x3d')]({},_0x34f25d,_0x4554df[_0x0605('0x3f')]);var _0x57aa15={'where':_0x34f25d[_0x0605('0x3b')]};return db['MailQueueReport'][_0x0605('0x20')](_0x57aa15)[_0x0605('0x25')](function(_0x45787e){_0xa836f2['count']=_0x45787e;if(_0x4554df['query'][_0x0605('0x40')]){_0x34f25d['include']=[{'all':!![]}];}return db[_0x0605('0x2b')][_0x0605('0x41')](_0x34f25d);})[_0x0605('0x25')](function(_0x3de34a){_0xa836f2[_0x0605('0x42')]=_0x3de34a;return _0xa836f2;})[_0x0605('0x25')](respondWithFilteredResult(_0x4e32ef,_0x34f25d))[_0x0605('0x43')](handleError(_0x4e32ef,null));};exports[_0x0605('0x44')]=function(_0x3fa553,_0x10bb36){var _0x18d3ce={'raw':!![],'where':{'id':_0x3fa553[_0x0605('0x45')]['id']}},_0x3616a3={};_0x3616a3['model']=_['keys'](db[_0x0605('0x2b')]['rawAttributes']);_0x3616a3[_0x0605('0x30')]=_[_0x0605('0x31')](_0x3fa553['query']);_0x3616a3[_0x0605('0x32')]=_[_0x0605('0x33')](_0x3616a3['model'],_0x3616a3[_0x0605('0x30')]);_0x18d3ce[_0x0605('0x34')]=_['intersection'](_0x3616a3[_0x0605('0x2f')],qs[_0x0605('0x35')](_0x3fa553['query'][_0x0605('0x35')]));_0x18d3ce['attributes']=_0x18d3ce['attributes'][_0x0605('0x36')]?_0x18d3ce[_0x0605('0x34')]:_0x3616a3[_0x0605('0x2f')];if(_0x3fa553[_0x0605('0x30')][_0x0605('0x40')]){_0x18d3ce[_0x0605('0x46')]=[{'all':!![]}];}_0x18d3ce=_[_0x0605('0x3d')]({},_0x18d3ce,_0x3fa553[_0x0605('0x3f')]);return db['MailQueueReport'][_0x0605('0x47')](_0x18d3ce)[_0x0605('0x25')](handleEntityNotFound(_0x10bb36,null))[_0x0605('0x25')](respondWithResult(_0x10bb36,null))['catch'](handleError(_0x10bb36,null));};exports[_0x0605('0x48')]=function(_0x1fb70b,_0x45cc1a){return db[_0x0605('0x2b')][_0x0605('0x48')](_0x1fb70b[_0x0605('0x49')],{})[_0x0605('0x25')](respondWithResult(_0x45cc1a,0xc9))[_0x0605('0x43')](handleError(_0x45cc1a,null));};exports[_0x0605('0x4a')]=function(_0x4bc55e,_0x3c597c){if(_0x4bc55e[_0x0605('0x49')]['id']){delete _0x4bc55e[_0x0605('0x49')]['id'];}return db[_0x0605('0x2b')][_0x0605('0x47')]({'where':{'id':_0x4bc55e[_0x0605('0x45')]['id']}})[_0x0605('0x25')](handleEntityNotFound(_0x3c597c,null))[_0x0605('0x25')](saveUpdates(_0x4bc55e[_0x0605('0x49')],null))[_0x0605('0x25')](respondWithResult(_0x3c597c,null))['catch'](handleError(_0x3c597c,null));};exports['destroy']=function(_0x4876c7,_0x2687a8){return db[_0x0605('0x2b')][_0x0605('0x47')]({'where':{'id':_0x4876c7[_0x0605('0x45')]['id']}})[_0x0605('0x25')](handleEntityNotFound(_0x2687a8,null))[_0x0605('0x25')](removeEntity(_0x2687a8,null))['catch'](handleError(_0x2687a8,null));};exports[_0x0605('0x4b')]=function(_0x286485,_0x184232){return db[_0x0605('0x2b')]['describe']()[_0x0605('0x25')](respondWithResult(_0x184232,null))[_0x0605('0x43')](handleError(_0x184232,null));};
\ No newline at end of file
index 6d65699..b443e48 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9ac0=['api','moment','bluebird','request-promise','path','../../config/environment','./mailQueueReport.attributes','exports','define','MailQueueReport','report_mail_queue','uniqueid','util','../../config/logger'];(function(_0x1e50f4,_0x30b695){var _0xd5d60b=function(_0x20215b){while(--_0x20215b){_0x1e50f4['push'](_0x1e50f4['shift']());}};_0xd5d60b(++_0x30b695);}(_0x9ac0,0x116));var _0x09ac=function(_0x19922d,_0x4aef41){_0x19922d=_0x19922d-0x0;var _0x1dafd8=_0x9ac0[_0x19922d];return _0x1dafd8;};'use strict';var _=require('lodash');var util=require(_0x09ac('0x0'));var logger=require(_0x09ac('0x1'))(_0x09ac('0x2'));var moment=require(_0x09ac('0x3'));var BPromise=require(_0x09ac('0x4'));var rp=require(_0x09ac('0x5'));var fs=require('fs');var path=require(_0x09ac('0x6'));var rimraf=require('rimraf');var config=require(_0x09ac('0x7'));var attributes=require(_0x09ac('0x8'));module[_0x09ac('0x9')]=function(_0x353ae8,_0x398c31){return _0x353ae8[_0x09ac('0xa')](_0x09ac('0xb'),attributes,{'tableName':_0x09ac('0xc'),'paranoid':![],'indexes':[{'name':_0x09ac('0xd'),'fields':[_0x09ac('0xd')]}],'timestamps':!![]});};
\ No newline at end of file
+var _0xddbb=['../../config/environment','define','MailQueueReport','report_mail_queue','uniqueid','../../config/logger','api','moment','bluebird','request-promise','path'];(function(_0xca1e29,_0x342ade){var _0x20f476=function(_0x329272){while(--_0x329272){_0xca1e29['push'](_0xca1e29['shift']());}};_0x20f476(++_0x342ade);}(_0xddbb,0x9f));var _0xbddb=function(_0x5a86e1,_0x21bc27){_0x5a86e1=_0x5a86e1-0x0;var _0x207c6a=_0xddbb[_0x5a86e1];return _0x207c6a;};'use strict';var _=require('lodash');var util=require('util');var logger=require(_0xbddb('0x0'))(_0xbddb('0x1'));var moment=require(_0xbddb('0x2'));var BPromise=require(_0xbddb('0x3'));var rp=require(_0xbddb('0x4'));var fs=require('fs');var path=require(_0xbddb('0x5'));var rimraf=require('rimraf');var config=require(_0xbddb('0x6'));var attributes=require('./mailQueueReport.attributes');module['exports']=function(_0x8fc4b3,_0xbe8dda){return _0x8fc4b3[_0xbddb('0x7')](_0xbddb('0x8'),attributes,{'tableName':_0xbddb('0x9'),'paranoid':![],'indexes':[{'name':_0xbddb('0xa'),'fields':[_0xbddb('0xa')]}],'timestamps':!![]});};
\ No newline at end of file
index e75601c..5ad61cb 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc4aa=['create','body','options','raw','update','where','attributes','limit','UpdateMailQueueReport','stringify','lodash','util','moment','bluebird','randomstring','ioredis','rpc','../../config/environment','jayson/promise','client','http','request','then','MailQueueReport,\x20%s,\x20%s','request\x20sent','debug','error','code','message','info','catch','CreateMailQueueReport','MailQueueReport'];(function(_0xf7a983,_0xaeb750){var _0x2d47a3=function(_0x2f578c){while(--_0x2f578c){_0xf7a983['push'](_0xf7a983['shift']());}};_0x2d47a3(++_0xaeb750);}(_0xc4aa,0x1b7));var _0xac4a=function(_0x2064e5,_0x4f6fa2){_0x2064e5=_0x2064e5-0x0;var _0x21a233=_0xc4aa[_0x2064e5];return _0x21a233;};'use strict';var _=require(_0xac4a('0x0'));var util=require(_0xac4a('0x1'));var moment=require(_0xac4a('0x2'));var BPromise=require(_0xac4a('0x3'));var rs=require(_0xac4a('0x4'));var fs=require('fs');var Redis=require(_0xac4a('0x5'));var db=require('../../mysqldb')['db'];var utils=require('../../config/utils');var logger=require('../../config/logger')(_0xac4a('0x6'));var config=require(_0xac4a('0x7'));var jayson=require(_0xac4a('0x8'));var client=jayson[_0xac4a('0x9')][_0xac4a('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x15cd34,_0x3ef77c,_0x10525b){return new BPromise(function(_0x5c6179,_0x5b8339){return client[_0xac4a('0xb')](_0x15cd34,_0x10525b)[_0xac4a('0xc')](function(_0x26ec84){logger['info'](_0xac4a('0xd'),_0x3ef77c,_0xac4a('0xe'));logger[_0xac4a('0xf')]('MailQueueReport,\x20%s,\x20%s,\x20%s',_0x3ef77c,_0xac4a('0xe'),JSON['stringify'](_0x26ec84));if(_0x26ec84[_0xac4a('0x10')]){if(_0x26ec84['error'][_0xac4a('0x11')]===0x1f4){logger[_0xac4a('0x10')](_0xac4a('0xd'),_0x3ef77c,_0x26ec84['error'][_0xac4a('0x12')]);return _0x5b8339(_0x26ec84[_0xac4a('0x10')][_0xac4a('0x12')]);}logger[_0xac4a('0x10')](_0xac4a('0xd'),_0x3ef77c,_0x26ec84[_0xac4a('0x10')][_0xac4a('0x12')]);return _0x5c6179(_0x26ec84[_0xac4a('0x10')][_0xac4a('0x12')]);}else{logger[_0xac4a('0x13')](_0xac4a('0xd'),_0x3ef77c,_0xac4a('0xe'));_0x5c6179(_0x26ec84['result'][_0xac4a('0x12')]);}})[_0xac4a('0x14')](function(_0x23eb66){logger[_0xac4a('0x10')](_0xac4a('0xd'),_0x3ef77c,_0x23eb66);_0x5b8339(_0x23eb66);});});}exports[_0xac4a('0x15')]=function(_0x28e304){var _0x44ec59=this;return new Promise(function(_0x546c5d,_0x5ac21e){return db[_0xac4a('0x16')][_0xac4a('0x17')](_0x28e304[_0xac4a('0x18')],{'raw':_0x28e304['options']?_0x28e304[_0xac4a('0x19')][_0xac4a('0x1a')]===undefined?!![]:![]:!![]})[_0xac4a('0xc')](function(_0x3a3cdb){logger[_0xac4a('0x13')](_0xac4a('0x15'),_0x28e304);logger[_0xac4a('0xf')](_0xac4a('0x15'),_0x28e304,JSON['stringify'](_0x3a3cdb));_0x546c5d(_0x3a3cdb);})[_0xac4a('0x14')](function(_0x3204ad){logger['error'](_0xac4a('0x15'),_0x3204ad[_0xac4a('0x12')],_0x28e304);_0x5ac21e(_0x44ec59[_0xac4a('0x10')](0x1f4,_0x3204ad[_0xac4a('0x12')]));});});};exports['UpdateMailQueueReport']=function(_0x1b7998){var _0x2503d8=this;return new Promise(function(_0x15435c,_0x412494){return db[_0xac4a('0x16')][_0xac4a('0x1b')](_0x1b7998[_0xac4a('0x18')],{'raw':_0x1b7998[_0xac4a('0x19')]?_0x1b7998[_0xac4a('0x19')][_0xac4a('0x1a')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x1b7998[_0xac4a('0x19')]?_0x1b7998[_0xac4a('0x19')][_0xac4a('0x1c')]||null:null,'attributes':_0x1b7998[_0xac4a('0x19')]?_0x1b7998[_0xac4a('0x19')][_0xac4a('0x1d')]||null:null,'limit':_0x1b7998['options']?_0x1b7998[_0xac4a('0x19')][_0xac4a('0x1e')]||null:null})[_0xac4a('0xc')](function(_0x2772fe){logger[_0xac4a('0x13')]('UpdateMailQueueReport',_0x1b7998);logger['debug'](_0xac4a('0x1f'),_0x1b7998,JSON[_0xac4a('0x20')](_0x2772fe));_0x15435c(_0x2772fe);})[_0xac4a('0x14')](function(_0x546b65){logger['error'](_0xac4a('0x1f'),_0x546b65[_0xac4a('0x12')],_0x1b7998);_0x412494(_0x2503d8[_0xac4a('0x10')](0x1f4,_0x546b65[_0xac4a('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(_0x359fa6,_0x5deaec){var _0xaee281=function(_0x2f7db6){while(--_0x2f7db6){_0x359fa6['push'](_0x359fa6['shift']());}};_0xaee281(++_0x5deaec);}(_0x7a54,0x106));var _0x47a5=function(_0x6981f2,_0x2eb232){_0x6981f2=_0x6981f2-0x0;var _0x4887ba=_0x7a54[_0x6981f2];return _0x4887ba;};'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 cf20a28..555a025 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xcb91=['express','Router','../../components/auth/service','../../components/interaction/service','exports','path','connect-timeout'];(function(_0x4a87b5,_0x453784){var _0x226c15=function(_0x31840f){while(--_0x31840f){_0x4a87b5['push'](_0x4a87b5['shift']());}};_0x226c15(++_0x453784);}(_0xcb91,0x1a9));var _0x1cb9=function(_0x236c89,_0xd76ba9){_0x236c89=_0x236c89-0x0;var _0x3b2a15=_0xcb91[_0x236c89];return _0x3b2a15;};'use strict';var multer=require('multer');var util=require('util');var path=require(_0x1cb9('0x0'));var timeout=require(_0x1cb9('0x1'));var express=require(_0x1cb9('0x2'));var router=express[_0x1cb9('0x3')]();var fs_extra=require('fs-extra');var auth=require(_0x1cb9('0x4'));var interaction=require(_0x1cb9('0x5'));var config=require('../../config/environment');module[_0x1cb9('0x6')]=router;
\ No newline at end of file
+var _0xa9e0=['../../components/interaction/service','../../config/environment','exports','multer','util','path','Router','../../components/auth/service'];(function(_0x190ff6,_0x515cfd){var _0x5356d2=function(_0x2cf77c){while(--_0x2cf77c){_0x190ff6['push'](_0x190ff6['shift']());}};_0x5356d2(++_0x515cfd);}(_0xa9e0,0x123));var _0x0a9e=function(_0x2d8fc2,_0x1c461d){_0x2d8fc2=_0x2d8fc2-0x0;var _0x3a9e53=_0xa9e0[_0x2d8fc2];return _0x3a9e53;};'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 64c2d03..5db6bf1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe812=['BOOLEAN','INTEGER','exports','STRING'];(function(_0x11a7eb,_0x264f32){var _0x16ab09=function(_0x581826){while(--_0x581826){_0x11a7eb['push'](_0x11a7eb['shift']());}};_0x16ab09(++_0x264f32);}(_0xe812,0x1f2));var _0x2e81=function(_0x3bf83f,_0x181cac){_0x3bf83f=_0x3bf83f-0x0;var _0x22c4a9=_0xe812[_0x3bf83f];return _0x22c4a9;};'use strict';var Sequelize=require('sequelize');module[_0x2e81('0x0')]={'description':{'type':Sequelize[_0x2e81('0x1')]},'host':{'type':Sequelize['STRING']},'authentication':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]},'user':{'type':Sequelize[_0x2e81('0x1')]},'password':{'type':Sequelize[_0x2e81('0x1')]},'port':{'type':Sequelize['INTEGER']},'tls':{'type':Sequelize[_0x2e81('0x2')],'defaultValue':!![]},'mailbox':{'type':Sequelize[_0x2e81('0x1')],'defaultValue':'INBOX'},'connTimeout':{'type':Sequelize[_0x2e81('0x3')],'defaultValue':0xa},'authTimeout':{'type':Sequelize[_0x2e81('0x3')],'defaultValue':0x5},'service':{'type':Sequelize['STRING']}};
\ No newline at end of file
+var _0xbee3=['INTEGER','exports','BOOLEAN','STRING'];(function(_0x150999,_0x5f357b){var _0x2cdc8c=function(_0x392240){while(--_0x392240){_0x150999['push'](_0x150999['shift']());}};_0x2cdc8c(++_0x5f357b);}(_0xbee3,0xd5));var _0x3bee=function(_0x744fd2,_0x393b40){_0x744fd2=_0x744fd2-0x0;var _0x742cc5=_0xbee3[_0x744fd2];return _0x742cc5;};'use strict';var Sequelize=require('sequelize');module[_0x3bee('0x0')]={'description':{'type':Sequelize['STRING']},'host':{'type':Sequelize['STRING']},'authentication':{'type':Sequelize[_0x3bee('0x1')],'defaultValue':!![]},'user':{'type':Sequelize[_0x3bee('0x2')]},'password':{'type':Sequelize['STRING']},'port':{'type':Sequelize[_0x3bee('0x3')]},'tls':{'type':Sequelize[_0x3bee('0x1')],'defaultValue':!![]},'mailbox':{'type':Sequelize[_0x3bee('0x2')],'defaultValue':'INBOX'},'connTimeout':{'type':Sequelize[_0x3bee('0x3')],'defaultValue':0xa},'authTimeout':{'type':Sequelize[_0x3bee('0x3')],'defaultValue':0x5},'service':{'type':Sequelize['STRING']}};
\ No newline at end of file
index b73bb77..7862441 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x39a0=['./mailServerIn.attributes','exports','MailServerIn','mail_servers_in','util','moment','bluebird','rimraf','../../config/environment'];(function(_0x3ab51d,_0x2fa01d){var _0x29a04e=function(_0x7807b0){while(--_0x7807b0){_0x3ab51d['push'](_0x3ab51d['shift']());}};_0x29a04e(++_0x2fa01d);}(_0x39a0,0x187));var _0x039a=function(_0x2c10c0,_0x383ab1){_0x2c10c0=_0x2c10c0-0x0;var _0x183915=_0x39a0[_0x2c10c0];return _0x183915;};'use strict';var _=require('lodash');var util=require(_0x039a('0x0'));var logger=require('../../config/logger')('api');var moment=require(_0x039a('0x1'));var BPromise=require(_0x039a('0x2'));var rp=require('request-promise');var fs=require('fs');var path=require('path');var rimraf=require(_0x039a('0x3'));var config=require(_0x039a('0x4'));var attributes=require(_0x039a('0x5'));module[_0x039a('0x6')]=function(_0x48563f,_0x8bbcd1){return _0x48563f['define'](_0x039a('0x7'),attributes,{'tableName':_0x039a('0x8'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xbd2a=['exports','define','MailServerIn','mail_servers_in','lodash','moment','../../config/environment','./mailServerIn.attributes'];(function(_0x284256,_0x521e47){var _0x280df5=function(_0x441ed5){while(--_0x441ed5){_0x284256['push'](_0x284256['shift']());}};_0x280df5(++_0x521e47);}(_0xbd2a,0x7c));var _0xabd2=function(_0x55e101,_0x11d2c2){_0x55e101=_0x55e101-0x0;var _0x1f4e27=_0xbd2a[_0x55e101];return _0x1f4e27;};'use strict';var _=require(_0xabd2('0x0'));var util=require('util');var logger=require('../../config/logger')('api');var moment=require(_0xabd2('0x1'));var BPromise=require('bluebird');var rp=require('request-promise');var fs=require('fs');var path=require('path');var rimraf=require('rimraf');var config=require(_0xabd2('0x2'));var attributes=require(_0xabd2('0x3'));module[_0xabd2('0x4')]=function(_0x532c6e,_0x1d3cb7){return _0x532c6e[_0xabd2('0x5')](_0xabd2('0x6'),attributes,{'tableName':_0xabd2('0x7'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index a8b938a..b047f8b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6de9=['../../config/environment','client','http','request','info','MailServerIn,\x20%s,\x20%s','MailServerIn,\x20%s,\x20%s,\x20%s','request\x20sent','error','message','result','catch','GetMailServerIn','MailServerIn','findAll','options','raw','where','attributes','limit','include','map','model','then','debug','stringify','lodash','util','moment','bluebird','randomstring','../../mysqldb','../../config/utils','rpc'];(function(_0x89e27f,_0x19ff50){var _0x6559f=function(_0x35a5ee){while(--_0x35a5ee){_0x89e27f['push'](_0x89e27f['shift']());}};_0x6559f(++_0x19ff50);}(_0x6de9,0xe6));var _0x96de=function(_0x160c73,_0x2ee678){_0x160c73=_0x160c73-0x0;var _0xd9302=_0x6de9[_0x160c73];return _0xd9302;};'use strict';var _=require(_0x96de('0x0'));var util=require(_0x96de('0x1'));var moment=require(_0x96de('0x2'));var BPromise=require(_0x96de('0x3'));var rs=require(_0x96de('0x4'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x96de('0x5'))['db'];var utils=require(_0x96de('0x6'));var logger=require('../../config/logger')(_0x96de('0x7'));var config=require(_0x96de('0x8'));var jayson=require('jayson/promise');var client=jayson[_0x96de('0x9')][_0x96de('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x20ed57,_0x46afa4,_0x48e213){return new BPromise(function(_0x8624be,_0x14fad5){return client[_0x96de('0xb')](_0x20ed57,_0x48e213)['then'](function(_0x415b5f){logger[_0x96de('0xc')](_0x96de('0xd'),_0x46afa4,'request\x20sent');logger['debug'](_0x96de('0xe'),_0x46afa4,_0x96de('0xf'),JSON['stringify'](_0x415b5f));if(_0x415b5f[_0x96de('0x10')]){if(_0x415b5f[_0x96de('0x10')]['code']===0x1f4){logger['error'](_0x96de('0xd'),_0x46afa4,_0x415b5f[_0x96de('0x10')]['message']);return _0x14fad5(_0x415b5f[_0x96de('0x10')]['message']);}logger['error'](_0x96de('0xd'),_0x46afa4,_0x415b5f[_0x96de('0x10')][_0x96de('0x11')]);return _0x8624be(_0x415b5f[_0x96de('0x10')][_0x96de('0x11')]);}else{logger['info'](_0x96de('0xd'),_0x46afa4,_0x96de('0xf'));_0x8624be(_0x415b5f[_0x96de('0x12')][_0x96de('0x11')]);}})[_0x96de('0x13')](function(_0x198663){logger[_0x96de('0x10')](_0x96de('0xd'),_0x46afa4,_0x198663);_0x14fad5(_0x198663);});});}exports[_0x96de('0x14')]=function(_0x9701bb){var _0x321bf4=this;return new Promise(function(_0x389a4d,_0xe0878b){return db[_0x96de('0x15')][_0x96de('0x16')]({'raw':_0x9701bb[_0x96de('0x17')]?_0x9701bb[_0x96de('0x17')][_0x96de('0x18')]===undefined?!![]:![]:!![],'where':_0x9701bb['options']?_0x9701bb[_0x96de('0x17')][_0x96de('0x19')]||null:null,'attributes':_0x9701bb[_0x96de('0x17')]?_0x9701bb['options'][_0x96de('0x1a')]||null:null,'limit':_0x9701bb['options']?_0x9701bb[_0x96de('0x17')][_0x96de('0x1b')]||null:null,'include':_0x9701bb[_0x96de('0x17')]?_0x9701bb[_0x96de('0x17')][_0x96de('0x1c')]?_[_0x96de('0x1d')](_0x9701bb[_0x96de('0x17')][_0x96de('0x1c')],function(_0x37b616){return{'model':db[_0x37b616['model']],'as':_0x37b616['as'],'attributes':_0x37b616[_0x96de('0x1a')],'include':_0x37b616['include']?_[_0x96de('0x1d')](_0x37b616[_0x96de('0x1c')],function(_0x2e0b75){return{'model':db[_0x2e0b75[_0x96de('0x1e')]],'as':_0x2e0b75['as'],'attributes':_0x2e0b75[_0x96de('0x1a')],'include':_0x2e0b75[_0x96de('0x1c')]?_[_0x96de('0x1d')](_0x2e0b75[_0x96de('0x1c')],function(_0x1f8f97){return{'model':db[_0x1f8f97[_0x96de('0x1e')]],'as':_0x1f8f97['as'],'attributes':_0x1f8f97[_0x96de('0x1a')]};}):[]};}):[]};}):[]:[]})[_0x96de('0x1f')](function(_0xe590fc){logger[_0x96de('0xc')]('GetMailServerIn',_0x9701bb);logger[_0x96de('0x20')](_0x96de('0x14'),_0x9701bb,JSON[_0x96de('0x21')](_0xe590fc));_0x389a4d(_0xe590fc);})[_0x96de('0x13')](function(_0x9d324f){logger['error']('GetMailServerIn',_0x9d324f[_0x96de('0x11')],_0x9701bb);_0xe0878b(_0x321bf4[_0x96de('0x10')](0x1f4,_0x9d324f[_0x96de('0x11')]));});});};
\ No newline at end of file
+var _0x9532=['model','map','then','debug','lodash','util','moment','bluebird','randomstring','ioredis','../../config/utils','../../config/logger','../../config/environment','client','http','request','info','MailServerIn,\x20%s,\x20%s','request\x20sent','MailServerIn,\x20%s,\x20%s,\x20%s','stringify','error','code','message','catch','GetMailServerIn','MailServerIn','findAll','options','raw','where','attributes','limit','include'];(function(_0x2dd628,_0x3c22e4){var _0x2e138c=function(_0x12c4d){while(--_0x12c4d){_0x2dd628['push'](_0x2dd628['shift']());}};_0x2e138c(++_0x3c22e4);}(_0x9532,0x8c));var _0x2953=function(_0xf25177,_0x31c860){_0xf25177=_0xf25177-0x0;var _0x5525e1=_0x9532[_0xf25177];return _0x5525e1;};'use strict';var _=require(_0x2953('0x0'));var util=require(_0x2953('0x1'));var moment=require(_0x2953('0x2'));var BPromise=require(_0x2953('0x3'));var rs=require(_0x2953('0x4'));var fs=require('fs');var Redis=require(_0x2953('0x5'));var db=require('../../mysqldb')['db'];var utils=require(_0x2953('0x6'));var logger=require(_0x2953('0x7'))('rpc');var config=require(_0x2953('0x8'));var jayson=require('jayson/promise');var client=jayson[_0x2953('0x9')][_0x2953('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x5b2aea,_0x53566f,_0x21a76a){return new BPromise(function(_0x5cbdaa,_0x49f180){return client[_0x2953('0xb')](_0x5b2aea,_0x21a76a)['then'](function(_0xc5c60f){logger[_0x2953('0xc')](_0x2953('0xd'),_0x53566f,_0x2953('0xe'));logger['debug'](_0x2953('0xf'),_0x53566f,_0x2953('0xe'),JSON[_0x2953('0x10')](_0xc5c60f));if(_0xc5c60f[_0x2953('0x11')]){if(_0xc5c60f[_0x2953('0x11')][_0x2953('0x12')]===0x1f4){logger['error']('MailServerIn,\x20%s,\x20%s',_0x53566f,_0xc5c60f[_0x2953('0x11')][_0x2953('0x13')]);return _0x49f180(_0xc5c60f['error'][_0x2953('0x13')]);}logger['error']('MailServerIn,\x20%s,\x20%s',_0x53566f,_0xc5c60f['error']['message']);return _0x5cbdaa(_0xc5c60f[_0x2953('0x11')][_0x2953('0x13')]);}else{logger[_0x2953('0xc')](_0x2953('0xd'),_0x53566f,_0x2953('0xe'));_0x5cbdaa(_0xc5c60f['result'][_0x2953('0x13')]);}})[_0x2953('0x14')](function(_0x341e73){logger[_0x2953('0x11')](_0x2953('0xd'),_0x53566f,_0x341e73);_0x49f180(_0x341e73);});});}exports[_0x2953('0x15')]=function(_0x359e81){var _0x4253e0=this;return new Promise(function(_0x52e292,_0x2b9c97){return db[_0x2953('0x16')][_0x2953('0x17')]({'raw':_0x359e81[_0x2953('0x18')]?_0x359e81[_0x2953('0x18')][_0x2953('0x19')]===undefined?!![]:![]:!![],'where':_0x359e81[_0x2953('0x18')]?_0x359e81[_0x2953('0x18')][_0x2953('0x1a')]||null:null,'attributes':_0x359e81[_0x2953('0x18')]?_0x359e81[_0x2953('0x18')][_0x2953('0x1b')]||null:null,'limit':_0x359e81[_0x2953('0x18')]?_0x359e81[_0x2953('0x18')][_0x2953('0x1c')]||null:null,'include':_0x359e81['options']?_0x359e81[_0x2953('0x18')][_0x2953('0x1d')]?_['map'](_0x359e81[_0x2953('0x18')][_0x2953('0x1d')],function(_0x236694){return{'model':db[_0x236694[_0x2953('0x1e')]],'as':_0x236694['as'],'attributes':_0x236694[_0x2953('0x1b')],'include':_0x236694[_0x2953('0x1d')]?_[_0x2953('0x1f')](_0x236694[_0x2953('0x1d')],function(_0x3a7ae5){return{'model':db[_0x3a7ae5[_0x2953('0x1e')]],'as':_0x3a7ae5['as'],'attributes':_0x3a7ae5[_0x2953('0x1b')],'include':_0x3a7ae5['include']?_[_0x2953('0x1f')](_0x3a7ae5['include'],function(_0x21e221){return{'model':db[_0x21e221[_0x2953('0x1e')]],'as':_0x21e221['as'],'attributes':_0x21e221[_0x2953('0x1b')]};}):[]};}):[]};}):[]:[]})[_0x2953('0x20')](function(_0x5100c3){logger['info'](_0x2953('0x15'),_0x359e81);logger[_0x2953('0x21')](_0x2953('0x15'),_0x359e81,JSON[_0x2953('0x10')](_0x5100c3));_0x52e292(_0x5100c3);})[_0x2953('0x14')](function(_0xbbcead){logger[_0x2953('0x11')]('GetMailServerIn',_0xbbcead['message'],_0x359e81);_0x2b9c97(_0x4253e0['error'](0x1f4,_0xbbcead[_0x2953('0x13')]));});});};
\ No newline at end of file
index fa21f38..40c1588 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(_0x3947c9,_0x4d6c97){var _0x2e7871=function(_0x1236cc){while(--_0x1236cc){_0x3947c9['push'](_0x3947c9['shift']());}};_0x2e7871(++_0x4d6c97);}(_0x7a54,0x106));var _0x47a5=function(_0x3b287e,_0x338702){_0x3b287e=_0x3b287e-0x0;var _0xc2df5a=_0x7a54[_0x3b287e];return _0xc2df5a;};'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 _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(_0x110c3d,_0x12ee06){var _0x226d67=function(_0x1fb6e1){while(--_0x1fb6e1){_0x110c3d['push'](_0x110c3d['shift']());}};_0x226d67(++_0x12ee06);}(_0x7a54,0x106));var _0x47a5=function(_0x136d9d,_0x52d270){_0x136d9d=_0x136d9d-0x0;var _0x1040c9=_0x7a54[_0x136d9d];return _0x1040c9;};'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
index 20d8d03..7cfc4ff 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0afd=['BOOLEAN','exports','STRING','INTEGER'];(function(_0x30f07a,_0x98341){var _0xb38461=function(_0x7b287a){while(--_0x7b287a){_0x30f07a['push'](_0x30f07a['shift']());}};_0xb38461(++_0x98341);}(_0x0afd,0x89));var _0xd0af=function(_0x52ce8e,_0x129bd6){_0x52ce8e=_0x52ce8e-0x0;var _0x32402e=_0x0afd[_0x52ce8e];return _0x32402e;};'use strict';var Sequelize=require('sequelize');module[_0xd0af('0x0')]={'description':{'type':Sequelize[_0xd0af('0x1')]},'host':{'type':Sequelize[_0xd0af('0x1')]},'user':{'type':Sequelize[_0xd0af('0x1')]},'pass':{'type':Sequelize['STRING']},'port':{'type':Sequelize[_0xd0af('0x2')]},'secure':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'service':{'type':Sequelize[_0xd0af('0x1')]},'authentication':{'type':Sequelize[_0xd0af('0x3')],'defaultValue':!![]}};
\ No newline at end of file
+var _0x6403=['exports','STRING','INTEGER','BOOLEAN'];(function(_0x53924b,_0x131f1d){var _0x5d33f8=function(_0x53b662){while(--_0x53b662){_0x53924b['push'](_0x53924b['shift']());}};_0x5d33f8(++_0x131f1d);}(_0x6403,0xf0));var _0x3640=function(_0x8aefa8,_0x496a23){_0x8aefa8=_0x8aefa8-0x0;var _0x1ba137=_0x6403[_0x8aefa8];return _0x1ba137;};'use strict';var Sequelize=require('sequelize');module[_0x3640('0x0')]={'description':{'type':Sequelize[_0x3640('0x1')]},'host':{'type':Sequelize[_0x3640('0x1')]},'user':{'type':Sequelize['STRING']},'pass':{'type':Sequelize[_0x3640('0x1')]},'port':{'type':Sequelize[_0x3640('0x2')]},'secure':{'type':Sequelize[_0x3640('0x3')],'defaultValue':![]},'service':{'type':Sequelize[_0x3640('0x1')]},'authentication':{'type':Sequelize[_0x3640('0x3')],'defaultValue':!![]}};
\ No newline at end of file
index 2a7c8df..4aa8979 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc35e=['rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox','to-csv','ejs','fs-extra','lodash','crypto','jsforce','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../config/license/hardware','../../config/logger','../../config/utils','../../config/environment','../../mysqldb','sendStatus','status','end','json','offset','undefined','count','limit','set','apply','save','update','then','destroy','error','stack','send','index','map','MailServerOut','type','key','name','query','keys','model','attributes','intersection','fields','length','hasOwnProperty','order','sort','where','filters','pick','filter','merge','VIRTUAL','options','includeAll','include','rows','catch','show','rawAttributes','find','create','body','params','eml-format'];(function(_0x403f5f,_0x283f67){var _0x15b1cd=function(_0x238cab){while(--_0x238cab){_0x403f5f['push'](_0x403f5f['shift']());}};_0x15b1cd(++_0x283f67);}(_0xc35e,0x12f));var _0xec35=function(_0x263047,_0x4227cd){_0x263047=_0x263047-0x0;var _0x2f5b09=_0xc35e[_0x263047];return _0x2f5b09;};'use strict';var emlformat=require(_0xec35('0x0'));var rimraf=require(_0xec35('0x1'));var zipdir=require(_0xec35('0x2'));var jsonpatch=require(_0xec35('0x3'));var rp=require(_0xec35('0x4'));var moment=require(_0xec35('0x5'));var BPromise=require(_0xec35('0x6'));var Mustache=require(_0xec35('0x7'));var util=require(_0xec35('0x8'));var path=require(_0xec35('0x9'));var sox=require(_0xec35('0xa'));var csv=require(_0xec35('0xb'));var ejs=require(_0xec35('0xc'));var fs=require('fs');var fs_extra=require(_0xec35('0xd'));var _=require(_0xec35('0xe'));var squel=require('squel');var crypto=require(_0xec35('0xf'));var jsforce=require(_0xec35('0x10'));var deskjs=require('desk.js');var toCsv=require(_0xec35('0xb'));var querystring=require('querystring');var Papa=require(_0xec35('0x11'));var Redis=require(_0xec35('0x12'));var authService=require(_0xec35('0x13'));var qs=require(_0xec35('0x14'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0xec35('0x15'));var logger=require(_0xec35('0x16'))('api');var utils=require(_0xec35('0x17'));var config=require(_0xec35('0x18'));var licenseUtil=require('../../config/license/util');var db=require(_0xec35('0x19'))['db'];function respondWithStatusCode(_0x3430d0,_0x41e862){_0x41e862=_0x41e862||0xcc;return function(_0x9221c2){if(_0x9221c2){return _0x3430d0[_0xec35('0x1a')](_0x41e862);}return _0x3430d0[_0xec35('0x1b')](_0x41e862)[_0xec35('0x1c')]();};}function respondWithResult(_0x48720,_0x13195b){_0x13195b=_0x13195b||0xc8;return function(_0x2c912f){if(_0x2c912f){return _0x48720['status'](_0x13195b)[_0xec35('0x1d')](_0x2c912f);}};}function respondWithFilteredResult(_0x542404,_0x3b240d){return function(_0x5182bc){if(_0x5182bc){var _0x398046=typeof _0x3b240d[_0xec35('0x1e')]===_0xec35('0x1f')&&typeof _0x3b240d['limit']===_0xec35('0x1f');var _0x45514c=_0x5182bc['count'];var _0xf327a6=_0x398046?0x0:_0x3b240d[_0xec35('0x1e')];var _0x26d844=_0x398046?_0x5182bc[_0xec35('0x20')]:_0x3b240d[_0xec35('0x1e')]+_0x3b240d[_0xec35('0x21')];var _0x4d3d60;if(_0x26d844>=_0x45514c){_0x26d844=_0x45514c;_0x4d3d60=0xc8;}else{_0x4d3d60=0xce;}_0x542404[_0xec35('0x1b')](_0x4d3d60);return _0x542404[_0xec35('0x22')]('Content-Range',_0xf327a6+'-'+_0x26d844+'/'+_0x45514c)[_0xec35('0x1d')](_0x5182bc);}return null;};}function patchUpdates(_0x4d449a){return function(_0x3d9e3e){try{jsonpatch[_0xec35('0x23')](_0x3d9e3e,_0x4d449a,!![]);}catch(_0x31134d){return BPromise['reject'](_0x31134d);}return _0x3d9e3e[_0xec35('0x24')]();};}function saveUpdates(_0x4e25c6,_0x3a2cc2){return function(_0x4b7635){if(_0x4b7635){return _0x4b7635[_0xec35('0x25')](_0x4e25c6)[_0xec35('0x26')](function(_0x52e9ef){return _0x52e9ef;});}return null;};}function removeEntity(_0x151fa5,_0x43aec3){return function(_0x28769c){if(_0x28769c){return _0x28769c[_0xec35('0x27')]()[_0xec35('0x26')](function(){_0x151fa5['status'](0xcc)[_0xec35('0x1c')]();});}};}function handleEntityNotFound(_0xd31d51,_0x2a221d){return function(_0x16f11c){if(!_0x16f11c){_0xd31d51[_0xec35('0x1a')](0x194);}return _0x16f11c;};}function handleError(_0x5e61fe,_0x16d992){_0x16d992=_0x16d992||0x1f4;return function(_0x56f8f0){logger[_0xec35('0x28')](_0x56f8f0[_0xec35('0x29')]);if(_0x56f8f0['name']){delete _0x56f8f0['name'];}_0x5e61fe[_0xec35('0x1b')](_0x16d992)[_0xec35('0x2a')](_0x56f8f0);};}exports[_0xec35('0x2b')]=function(_0x1f0584,_0x37a917){var _0x597c8c={},_0x2f19a9={},_0x301d88={'count':0x0,'rows':[]};var _0x384aff=_[_0xec35('0x2c')](db[_0xec35('0x2d')]['rawAttributes'],function(_0x3281c4){return{'name':_0x3281c4['fieldName'],'type':_0x3281c4[_0xec35('0x2e')][_0xec35('0x2f')]};});_0x2f19a9['model']=_[_0xec35('0x2c')](_0x384aff,_0xec35('0x30'));_0x2f19a9[_0xec35('0x31')]=_[_0xec35('0x32')](_0x1f0584[_0xec35('0x31')]);_0x2f19a9['filters']=_['intersection'](_0x2f19a9[_0xec35('0x33')],_0x2f19a9[_0xec35('0x31')]);_0x597c8c[_0xec35('0x34')]=_[_0xec35('0x35')](_0x2f19a9[_0xec35('0x33')],qs[_0xec35('0x36')](_0x1f0584[_0xec35('0x31')]['fields']));_0x597c8c[_0xec35('0x34')]=_0x597c8c['attributes'][_0xec35('0x37')]?_0x597c8c['attributes']:_0x2f19a9[_0xec35('0x33')];if(!_0x1f0584[_0xec35('0x31')][_0xec35('0x38')]('nolimit')){_0x597c8c[_0xec35('0x21')]=qs['limit'](_0x1f0584[_0xec35('0x31')][_0xec35('0x21')]);_0x597c8c['offset']=qs[_0xec35('0x1e')](_0x1f0584[_0xec35('0x31')][_0xec35('0x1e')]);}_0x597c8c[_0xec35('0x39')]=qs['sort'](_0x1f0584[_0xec35('0x31')][_0xec35('0x3a')]);_0x597c8c[_0xec35('0x3b')]=qs[_0xec35('0x3c')](_[_0xec35('0x3d')](_0x1f0584[_0xec35('0x31')],_0x2f19a9[_0xec35('0x3c')]),_0x384aff);if(_0x1f0584[_0xec35('0x31')][_0xec35('0x3e')]){_0x597c8c['where']=_[_0xec35('0x3f')](_0x597c8c[_0xec35('0x3b')],{'$or':_['map'](_0x384aff,function(_0x29d09c){if(_0x29d09c[_0xec35('0x2e')]!==_0xec35('0x40')){var _0x35790c={};_0x35790c[_0x29d09c['name']]={'$like':'%'+_0x1f0584[_0xec35('0x31')][_0xec35('0x3e')]+'%'};return _0x35790c;}})});}_0x597c8c=_[_0xec35('0x3f')]({},_0x597c8c,_0x1f0584[_0xec35('0x41')]);var _0x5bc1c4={'where':_0x597c8c[_0xec35('0x3b')]};return db[_0xec35('0x2d')][_0xec35('0x20')](_0x5bc1c4)['then'](function(_0x1c9d12){_0x301d88[_0xec35('0x20')]=_0x1c9d12;if(_0x1f0584[_0xec35('0x31')][_0xec35('0x42')]){_0x597c8c[_0xec35('0x43')]=[{'all':!![]}];}return db[_0xec35('0x2d')]['findAll'](_0x597c8c);})[_0xec35('0x26')](function(_0x39fbf6){_0x301d88[_0xec35('0x44')]=_0x39fbf6;return _0x301d88;})[_0xec35('0x26')](respondWithFilteredResult(_0x37a917,_0x597c8c))[_0xec35('0x45')](handleError(_0x37a917,null));};exports[_0xec35('0x46')]=function(_0x2aa1d9,_0x279741){var _0x4dad78={'raw':!![],'where':{'id':_0x2aa1d9['params']['id']}},_0x5e772a={};_0x5e772a['model']=_['keys'](db['MailServerOut'][_0xec35('0x47')]);_0x5e772a['query']=_[_0xec35('0x32')](_0x2aa1d9[_0xec35('0x31')]);_0x5e772a[_0xec35('0x3c')]=_[_0xec35('0x35')](_0x5e772a[_0xec35('0x33')],_0x5e772a[_0xec35('0x31')]);_0x4dad78['attributes']=_[_0xec35('0x35')](_0x5e772a[_0xec35('0x33')],qs[_0xec35('0x36')](_0x2aa1d9[_0xec35('0x31')][_0xec35('0x36')]));_0x4dad78[_0xec35('0x34')]=_0x4dad78[_0xec35('0x34')]['length']?_0x4dad78[_0xec35('0x34')]:_0x5e772a['model'];if(_0x2aa1d9[_0xec35('0x31')][_0xec35('0x42')]){_0x4dad78[_0xec35('0x43')]=[{'all':!![]}];}_0x4dad78=_[_0xec35('0x3f')]({},_0x4dad78,_0x2aa1d9[_0xec35('0x41')]);return db[_0xec35('0x2d')][_0xec35('0x48')](_0x4dad78)['then'](handleEntityNotFound(_0x279741,null))[_0xec35('0x26')](respondWithResult(_0x279741,null))[_0xec35('0x45')](handleError(_0x279741,null));};exports['create']=function(_0x5e00eb,_0x4267ec){return db['MailServerOut'][_0xec35('0x49')](_0x5e00eb[_0xec35('0x4a')],{})['then'](respondWithResult(_0x4267ec,0xc9))['catch'](handleError(_0x4267ec,null));};exports['update']=function(_0x5d4de6,_0x40387b){if(_0x5d4de6['body']['id']){delete _0x5d4de6[_0xec35('0x4a')]['id'];}return db[_0xec35('0x2d')][_0xec35('0x48')]({'where':{'id':_0x5d4de6[_0xec35('0x4b')]['id']}})['then'](handleEntityNotFound(_0x40387b,null))[_0xec35('0x26')](saveUpdates(_0x5d4de6[_0xec35('0x4a')],null))['then'](respondWithResult(_0x40387b,null))['catch'](handleError(_0x40387b,null));};exports['destroy']=function(_0x3bb032,_0x5df0eb){return db[_0xec35('0x2d')][_0xec35('0x48')]({'where':{'id':_0x3bb032['params']['id']}})[_0xec35('0x26')](handleEntityNotFound(_0x5df0eb,null))['then'](removeEntity(_0x5df0eb,null))[_0xec35('0x45')](handleError(_0x5df0eb,null));};
\ No newline at end of file
+var _0x29ea=['MailServerOut','rawAttributes','fieldName','type','key','query','keys','filters','intersection','attributes','model','length','nolimit','order','sort','where','filter','merge','VIRTUAL','then','includeAll','catch','params','fields','options','find','create','update','body','rimraf','zip-dir','fast-json-patch','request-promise','util','fs-extra','lodash','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/parsers/qs','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','undefined','limit','count','offset','set','json','apply','reject','save','destroy','name','index','map'];(function(_0x4bb2b9,_0x459c78){var _0x40e2a2=function(_0x19a26c){while(--_0x19a26c){_0x4bb2b9['push'](_0x4bb2b9['shift']());}};_0x40e2a2(++_0x459c78);}(_0x29ea,0x162));var _0xa29e=function(_0x20a584,_0xe384a5){_0x20a584=_0x20a584-0x0;var _0x4b41a8=_0x29ea[_0x20a584];return _0x4b41a8;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0xa29e('0x0'));var zipdir=require(_0xa29e('0x1'));var jsonpatch=require(_0xa29e('0x2'));var rp=require(_0xa29e('0x3'));var moment=require('moment');var BPromise=require('bluebird');var Mustache=require('mustache');var util=require(_0xa29e('0x4'));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(_0xa29e('0x5'));var _=require(_0xa29e('0x6'));var squel=require('squel');var crypto=require(_0xa29e('0x7'));var jsforce=require(_0xa29e('0x8'));var deskjs=require(_0xa29e('0x9'));var toCsv=require('to-csv');var querystring=require(_0xa29e('0xa'));var Papa=require(_0xa29e('0xb'));var Redis=require(_0xa29e('0xc'));var authService=require('../../components/auth/service');var qs=require(_0xa29e('0xd'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require('../../config/license/hardware');var logger=require(_0xa29e('0xe'))(_0xa29e('0xf'));var utils=require(_0xa29e('0x10'));var config=require(_0xa29e('0x11'));var licenseUtil=require(_0xa29e('0x12'));var db=require(_0xa29e('0x13'))['db'];function respondWithStatusCode(_0x4f79e2,_0x1f6b5d){_0x1f6b5d=_0x1f6b5d||0xcc;return function(_0x440578){if(_0x440578){return _0x4f79e2[_0xa29e('0x14')](_0x1f6b5d);}return _0x4f79e2[_0xa29e('0x15')](_0x1f6b5d)[_0xa29e('0x16')]();};}function respondWithResult(_0x338127,_0x386dd0){_0x386dd0=_0x386dd0||0xc8;return function(_0x191778){if(_0x191778){return _0x338127['status'](_0x386dd0)['json'](_0x191778);}};}function respondWithFilteredResult(_0x40d27f,_0x51c264){return function(_0x4dd0d2){if(_0x4dd0d2){var _0x1cda4c=typeof _0x51c264['offset']===_0xa29e('0x17')&&typeof _0x51c264[_0xa29e('0x18')]===_0xa29e('0x17');var _0x21c4c5=_0x4dd0d2[_0xa29e('0x19')];var _0x432075=_0x1cda4c?0x0:_0x51c264[_0xa29e('0x1a')];var _0x2cbf13=_0x1cda4c?_0x4dd0d2[_0xa29e('0x19')]:_0x51c264[_0xa29e('0x1a')]+_0x51c264['limit'];var _0x23456d;if(_0x2cbf13>=_0x21c4c5){_0x2cbf13=_0x21c4c5;_0x23456d=0xc8;}else{_0x23456d=0xce;}_0x40d27f[_0xa29e('0x15')](_0x23456d);return _0x40d27f[_0xa29e('0x1b')]('Content-Range',_0x432075+'-'+_0x2cbf13+'/'+_0x21c4c5)[_0xa29e('0x1c')](_0x4dd0d2);}return null;};}function patchUpdates(_0x1b22fb){return function(_0x3ec88f){try{jsonpatch[_0xa29e('0x1d')](_0x3ec88f,_0x1b22fb,!![]);}catch(_0x112c15){return BPromise[_0xa29e('0x1e')](_0x112c15);}return _0x3ec88f[_0xa29e('0x1f')]();};}function saveUpdates(_0x235bea,_0x46305d){return function(_0x4c7102){if(_0x4c7102){return _0x4c7102['update'](_0x235bea)['then'](function(_0x3ca541){return _0x3ca541;});}return null;};}function removeEntity(_0x533647,_0xf375ba){return function(_0xe98623){if(_0xe98623){return _0xe98623[_0xa29e('0x20')]()['then'](function(){_0x533647[_0xa29e('0x15')](0xcc)[_0xa29e('0x16')]();});}};}function handleEntityNotFound(_0x4d7d81,_0xca9f39){return function(_0x53c6b1){if(!_0x53c6b1){_0x4d7d81[_0xa29e('0x14')](0x194);}return _0x53c6b1;};}function handleError(_0x4b7987,_0x3c7675){_0x3c7675=_0x3c7675||0x1f4;return function(_0x386514){logger['error'](_0x386514['stack']);if(_0x386514[_0xa29e('0x21')]){delete _0x386514['name'];}_0x4b7987[_0xa29e('0x15')](_0x3c7675)['send'](_0x386514);};}exports[_0xa29e('0x22')]=function(_0x3d49f9,_0x53e7a6){var _0xdd2083={},_0x1b25c1={},_0x9abec0={'count':0x0,'rows':[]};var _0x5f2ee7=_[_0xa29e('0x23')](db[_0xa29e('0x24')][_0xa29e('0x25')],function(_0x19fbc7){return{'name':_0x19fbc7[_0xa29e('0x26')],'type':_0x19fbc7[_0xa29e('0x27')][_0xa29e('0x28')]};});_0x1b25c1['model']=_[_0xa29e('0x23')](_0x5f2ee7,'name');_0x1b25c1[_0xa29e('0x29')]=_[_0xa29e('0x2a')](_0x3d49f9[_0xa29e('0x29')]);_0x1b25c1[_0xa29e('0x2b')]=_[_0xa29e('0x2c')](_0x1b25c1['model'],_0x1b25c1['query']);_0xdd2083[_0xa29e('0x2d')]=_['intersection'](_0x1b25c1[_0xa29e('0x2e')],qs['fields'](_0x3d49f9['query']['fields']));_0xdd2083[_0xa29e('0x2d')]=_0xdd2083[_0xa29e('0x2d')][_0xa29e('0x2f')]?_0xdd2083[_0xa29e('0x2d')]:_0x1b25c1[_0xa29e('0x2e')];if(!_0x3d49f9[_0xa29e('0x29')]['hasOwnProperty'](_0xa29e('0x30'))){_0xdd2083[_0xa29e('0x18')]=qs['limit'](_0x3d49f9[_0xa29e('0x29')][_0xa29e('0x18')]);_0xdd2083[_0xa29e('0x1a')]=qs['offset'](_0x3d49f9[_0xa29e('0x29')][_0xa29e('0x1a')]);}_0xdd2083[_0xa29e('0x31')]=qs[_0xa29e('0x32')](_0x3d49f9[_0xa29e('0x29')]['sort']);_0xdd2083[_0xa29e('0x33')]=qs[_0xa29e('0x2b')](_['pick'](_0x3d49f9[_0xa29e('0x29')],_0x1b25c1[_0xa29e('0x2b')]),_0x5f2ee7);if(_0x3d49f9['query'][_0xa29e('0x34')]){_0xdd2083[_0xa29e('0x33')]=_[_0xa29e('0x35')](_0xdd2083[_0xa29e('0x33')],{'$or':_['map'](_0x5f2ee7,function(_0x3902e8){if(_0x3902e8[_0xa29e('0x27')]!==_0xa29e('0x36')){var _0x3e603d={};_0x3e603d[_0x3902e8[_0xa29e('0x21')]]={'$like':'%'+_0x3d49f9[_0xa29e('0x29')][_0xa29e('0x34')]+'%'};return _0x3e603d;}})});}_0xdd2083=_['merge']({},_0xdd2083,_0x3d49f9['options']);var _0x1ae87d={'where':_0xdd2083[_0xa29e('0x33')]};return db[_0xa29e('0x24')][_0xa29e('0x19')](_0x1ae87d)[_0xa29e('0x37')](function(_0xdde802){_0x9abec0[_0xa29e('0x19')]=_0xdde802;if(_0x3d49f9[_0xa29e('0x29')][_0xa29e('0x38')]){_0xdd2083['include']=[{'all':!![]}];}return db[_0xa29e('0x24')]['findAll'](_0xdd2083);})['then'](function(_0x1b3fa9){_0x9abec0['rows']=_0x1b3fa9;return _0x9abec0;})[_0xa29e('0x37')](respondWithFilteredResult(_0x53e7a6,_0xdd2083))[_0xa29e('0x39')](handleError(_0x53e7a6,null));};exports['show']=function(_0x2b1a82,_0x1a05ce){var _0x72b863={'raw':!![],'where':{'id':_0x2b1a82[_0xa29e('0x3a')]['id']}},_0x42e47b={};_0x42e47b[_0xa29e('0x2e')]=_[_0xa29e('0x2a')](db[_0xa29e('0x24')]['rawAttributes']);_0x42e47b[_0xa29e('0x29')]=_[_0xa29e('0x2a')](_0x2b1a82[_0xa29e('0x29')]);_0x42e47b[_0xa29e('0x2b')]=_['intersection'](_0x42e47b['model'],_0x42e47b[_0xa29e('0x29')]);_0x72b863['attributes']=_['intersection'](_0x42e47b[_0xa29e('0x2e')],qs[_0xa29e('0x3b')](_0x2b1a82[_0xa29e('0x29')][_0xa29e('0x3b')]));_0x72b863[_0xa29e('0x2d')]=_0x72b863[_0xa29e('0x2d')][_0xa29e('0x2f')]?_0x72b863[_0xa29e('0x2d')]:_0x42e47b[_0xa29e('0x2e')];if(_0x2b1a82[_0xa29e('0x29')][_0xa29e('0x38')]){_0x72b863['include']=[{'all':!![]}];}_0x72b863=_[_0xa29e('0x35')]({},_0x72b863,_0x2b1a82[_0xa29e('0x3c')]);return db[_0xa29e('0x24')][_0xa29e('0x3d')](_0x72b863)['then'](handleEntityNotFound(_0x1a05ce,null))[_0xa29e('0x37')](respondWithResult(_0x1a05ce,null))['catch'](handleError(_0x1a05ce,null));};exports[_0xa29e('0x3e')]=function(_0x29cf2f,_0x51540a){return db['MailServerOut'][_0xa29e('0x3e')](_0x29cf2f['body'],{})[_0xa29e('0x37')](respondWithResult(_0x51540a,0xc9))['catch'](handleError(_0x51540a,null));};exports[_0xa29e('0x3f')]=function(_0x39de9d,_0x277142){if(_0x39de9d['body']['id']){delete _0x39de9d[_0xa29e('0x40')]['id'];}return db[_0xa29e('0x24')]['find']({'where':{'id':_0x39de9d[_0xa29e('0x3a')]['id']}})[_0xa29e('0x37')](handleEntityNotFound(_0x277142,null))['then'](saveUpdates(_0x39de9d[_0xa29e('0x40')],null))['then'](respondWithResult(_0x277142,null))[_0xa29e('0x39')](handleError(_0x277142,null));};exports[_0xa29e('0x20')]=function(_0x49f992,_0x1bd463){return db[_0xa29e('0x24')][_0xa29e('0x3d')]({'where':{'id':_0x49f992[_0xa29e('0x3a')]['id']}})[_0xa29e('0x37')](handleEntityNotFound(_0x1bd463,null))['then'](removeEntity(_0x1bd463,null))[_0xa29e('0x39')](handleError(_0x1bd463,null));};
\ No newline at end of file
index 577615e..ba35c0e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x28a9=['MailServerOut','lodash','util','../../config/logger','bluebird','request-promise','path','rimraf','../../config/environment','./mailServerOut.attributes','exports','define'];(function(_0x2d7136,_0x1b0951){var _0x13c652=function(_0x116368){while(--_0x116368){_0x2d7136['push'](_0x2d7136['shift']());}};_0x13c652(++_0x1b0951);}(_0x28a9,0x151));var _0x928a=function(_0x5754c1,_0x564a97){_0x5754c1=_0x5754c1-0x0;var _0x242cef=_0x28a9[_0x5754c1];return _0x242cef;};'use strict';var _=require(_0x928a('0x0'));var util=require(_0x928a('0x1'));var logger=require(_0x928a('0x2'))('api');var moment=require('moment');var BPromise=require(_0x928a('0x3'));var rp=require(_0x928a('0x4'));var fs=require('fs');var path=require(_0x928a('0x5'));var rimraf=require(_0x928a('0x6'));var config=require(_0x928a('0x7'));var attributes=require(_0x928a('0x8'));module[_0x928a('0x9')]=function(_0x4bd46b,_0x1c5571){return _0x4bd46b[_0x928a('0xa')](_0x928a('0xb'),attributes,{'tableName':'mail_servers_out','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x9084=['util','../../config/logger','api','path','../../config/environment','./mailServerOut.attributes','exports','define','MailServerOut','mail_servers_out','lodash'];(function(_0x1406ae,_0x292395){var _0x23a076=function(_0x5e147a){while(--_0x5e147a){_0x1406ae['push'](_0x1406ae['shift']());}};_0x23a076(++_0x292395);}(_0x9084,0xba));var _0x4908=function(_0x409111,_0x51b1c4){_0x409111=_0x409111-0x0;var _0x367bbf=_0x9084[_0x409111];return _0x367bbf;};'use strict';var _=require(_0x4908('0x0'));var util=require(_0x4908('0x1'));var logger=require(_0x4908('0x2'))(_0x4908('0x3'));var moment=require('moment');var BPromise=require('bluebird');var rp=require('request-promise');var fs=require('fs');var path=require(_0x4908('0x4'));var rimraf=require('rimraf');var config=require(_0x4908('0x5'));var attributes=require(_0x4908('0x6'));module[_0x4908('0x7')]=function(_0x1509c6,_0x184ac9){return _0x1509c6[_0x4908('0x8')](_0x4908('0x9'),attributes,{'tableName':_0x4908('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index c1f507d..e3f18e9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5f66=['../../mysqldb','../../config/utils','rpc','jayson/promise','client','request','then','MailServerOut,\x20%s,\x20%s','request\x20sent','debug','MailServerOut,\x20%s,\x20%s,\x20%s','stringify','code','message','error','info','catch','util','bluebird','randomstring','ioredis'];(function(_0xbefce3,_0x1b5fdd){var _0x2f36e7=function(_0x134918){while(--_0x134918){_0xbefce3['push'](_0xbefce3['shift']());}};_0x2f36e7(++_0x1b5fdd);}(_0x5f66,0x1a0));var _0x65f6=function(_0xefd519,_0xc62635){_0xefd519=_0xefd519-0x0;var _0x4bb882=_0x5f66[_0xefd519];return _0x4bb882;};'use strict';var _=require('lodash');var util=require(_0x65f6('0x0'));var moment=require('moment');var BPromise=require(_0x65f6('0x1'));var rs=require(_0x65f6('0x2'));var fs=require('fs');var Redis=require(_0x65f6('0x3'));var db=require(_0x65f6('0x4'))['db'];var utils=require(_0x65f6('0x5'));var logger=require('../../config/logger')(_0x65f6('0x6'));var config=require('../../config/environment');var jayson=require(_0x65f6('0x7'));var client=jayson[_0x65f6('0x8')]['http']({'port':0x232a});function respondWithRpcPromise(_0x4ed98f,_0x1c0e12,_0x2c6571){return new BPromise(function(_0x112079,_0x8f6451){return client[_0x65f6('0x9')](_0x4ed98f,_0x2c6571)[_0x65f6('0xa')](function(_0x48d85c){logger['info'](_0x65f6('0xb'),_0x1c0e12,_0x65f6('0xc'));logger[_0x65f6('0xd')](_0x65f6('0xe'),_0x1c0e12,'request\x20sent',JSON[_0x65f6('0xf')](_0x48d85c));if(_0x48d85c['error']){if(_0x48d85c['error'][_0x65f6('0x10')]===0x1f4){logger['error'](_0x65f6('0xb'),_0x1c0e12,_0x48d85c['error'][_0x65f6('0x11')]);return _0x8f6451(_0x48d85c[_0x65f6('0x12')][_0x65f6('0x11')]);}logger[_0x65f6('0x12')](_0x65f6('0xb'),_0x1c0e12,_0x48d85c[_0x65f6('0x12')][_0x65f6('0x11')]);return _0x112079(_0x48d85c[_0x65f6('0x12')][_0x65f6('0x11')]);}else{logger[_0x65f6('0x13')]('MailServerOut,\x20%s,\x20%s',_0x1c0e12,_0x65f6('0xc'));_0x112079(_0x48d85c['result']['message']);}})[_0x65f6('0x14')](function(_0x5c69f8){logger[_0x65f6('0x12')](_0x65f6('0xb'),_0x1c0e12,_0x5c69f8);_0x8f6451(_0x5c69f8);});});}
\ 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(_0x3bf83f,_0x181cac){var _0x22c4a9=function(_0xb3ff0d){while(--_0xb3ff0d){_0x3bf83f['push'](_0x3bf83f['shift']());}};_0x22c4a9(++_0x181cac);}(_0x7a54,0x106));var _0x47a5=function(_0xf40bc2,_0x3f2311){_0xf40bc2=_0xf40bc2-0x0;var _0x122085=_0x7a54[_0xf40bc2];return _0x122085;};'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 04822af..2de5a5f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x83c5=['update','delete','destroy','multer','util','path','connect-timeout','express','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./mailSubstatus.controller','get','isAuthenticated','/describe','describe','/:id','show','put'];(function(_0x55ddb1,_0x3b6ca2){var _0x56337d=function(_0xf2b4c4){while(--_0xf2b4c4){_0x55ddb1['push'](_0x55ddb1['shift']());}};_0x56337d(++_0x3b6ca2);}(_0x83c5,0xdf));var _0x583c=function(_0x5a7bfc,_0x5eea0b){_0x5a7bfc=_0x5a7bfc-0x0;var _0x6961e4=_0x83c5[_0x5a7bfc];return _0x6961e4;};'use strict';var multer=require(_0x583c('0x0'));var util=require(_0x583c('0x1'));var path=require(_0x583c('0x2'));var timeout=require(_0x583c('0x3'));var express=require(_0x583c('0x4'));var router=express['Router']();var fs_extra=require(_0x583c('0x5'));var auth=require(_0x583c('0x6'));var interaction=require(_0x583c('0x7'));var config=require(_0x583c('0x8'));var controller=require(_0x583c('0x9'));router[_0x583c('0xa')]('/',auth[_0x583c('0xb')](),controller['index']);router['get'](_0x583c('0xc'),auth[_0x583c('0xb')](),controller[_0x583c('0xd')]);router[_0x583c('0xa')](_0x583c('0xe'),auth['isAuthenticated'](),controller[_0x583c('0xf')]);router['post']('/',auth[_0x583c('0xb')](),controller['create']);router[_0x583c('0x10')]('/:id',auth[_0x583c('0xb')](),controller[_0x583c('0x11')]);router[_0x583c('0x12')](_0x583c('0xe'),auth[_0x583c('0xb')](),controller[_0x583c('0x13')]);module['exports']=router;
\ No newline at end of file
+var _0x5083=['./mailSubstatus.controller','get','isAuthenticated','index','/describe','/:id','show','post','create','put','update','delete','exports','multer','util','path','connect-timeout','express','fs-extra','../../components/interaction/service','../../config/environment'];(function(_0x55eb4f,_0x455b8b){var _0x24aec9=function(_0x4fc0e3){while(--_0x4fc0e3){_0x55eb4f['push'](_0x55eb4f['shift']());}};_0x24aec9(++_0x455b8b);}(_0x5083,0x76));var _0x3508=function(_0x1fcded,_0x4b18e0){_0x1fcded=_0x1fcded-0x0;var _0x3e5f90=_0x5083[_0x1fcded];return _0x3e5f90;};'use strict';var multer=require(_0x3508('0x0'));var util=require(_0x3508('0x1'));var path=require(_0x3508('0x2'));var timeout=require(_0x3508('0x3'));var express=require(_0x3508('0x4'));var router=express['Router']();var fs_extra=require(_0x3508('0x5'));var auth=require('../../components/auth/service');var interaction=require(_0x3508('0x6'));var config=require(_0x3508('0x7'));var controller=require(_0x3508('0x8'));router[_0x3508('0x9')]('/',auth[_0x3508('0xa')](),controller[_0x3508('0xb')]);router[_0x3508('0x9')](_0x3508('0xc'),auth['isAuthenticated'](),controller['describe']);router['get'](_0x3508('0xd'),auth[_0x3508('0xa')](),controller[_0x3508('0xe')]);router[_0x3508('0xf')]('/',auth[_0x3508('0xa')](),controller[_0x3508('0x10')]);router[_0x3508('0x11')](_0x3508('0xd'),auth['isAuthenticated'](),controller[_0x3508('0x12')]);router[_0x3508('0x13')]('/:id',auth[_0x3508('0xa')](),controller['destroy']);module[_0x3508('0x14')]=router;
\ No newline at end of file
index b68d08e..e96caa7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x199c=['STRING','name'];(function(_0x8de54f,_0x271987){var _0x14cba4=function(_0x58ed41){while(--_0x58ed41){_0x8de54f['push'](_0x8de54f['shift']());}};_0x14cba4(++_0x271987);}(_0x199c,0x1d8));var _0xc199=function(_0x311641,_0x581514){_0x311641=_0x311641-0x0;var _0x4e3a13=_0x199c[_0x311641];return _0x4e3a13;};'use strict';var Sequelize=require('sequelize');module['exports']={'name':{'type':Sequelize[_0xc199('0x0')],'unique':_0xc199('0x1'),'allowNull':![],'validate':{'notEmpty':!![]}},'description':{'type':Sequelize[_0xc199('0x0')]}};
\ No newline at end of file
+var _0x25fa=['name','sequelize','STRING'];(function(_0x3e46ce,_0x7f8ed0){var _0x2c86c1=function(_0x338ab2){while(--_0x338ab2){_0x3e46ce['push'](_0x3e46ce['shift']());}};_0x2c86c1(++_0x7f8ed0);}(_0x25fa,0x109));var _0xa25f=function(_0x443981,_0x5ed548){_0x443981=_0x443981-0x0;var _0x27ae0e=_0x25fa[_0x443981];return _0x27ae0e;};'use strict';var Sequelize=require(_0xa25f('0x0'));module['exports']={'name':{'type':Sequelize[_0xa25f('0x1')],'unique':_0xa25f('0x2'),'allowNull':![],'validate':{'notEmpty':!![]}},'description':{'type':Sequelize['STRING']}};
\ No newline at end of file
index 402c1bb..387aea3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4e66=['util','path','sox','to-csv','ejs','lodash','squel','crypto','jsforce','desk.js','papaparse','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','sendStatus','status','offset','undefined','limit','count','Content-Range','apply','save','update','destroy','error','stack','name','send','index','map','rawAttributes','fieldName','type','key','query','keys','filters','intersection','model','attributes','fields','length','hasOwnProperty','order','sort','where','pick','filter','VIRTUAL','merge','options','then','includeAll','include','MailSubstatus','rows','show','params','catch','create','body','find','describe','eml-format','zip-dir','request-promise','moment','bluebird','mustache'];(function(_0x765f75,_0x2212b6){var _0x571a4f=function(_0x2fa558){while(--_0x2fa558){_0x765f75['push'](_0x765f75['shift']());}};_0x571a4f(++_0x2212b6);}(_0x4e66,0x90));var _0x64e6=function(_0x57d98,_0x575d55){_0x57d98=_0x57d98-0x0;var _0x45a894=_0x4e66[_0x57d98];return _0x45a894;};'use strict';var emlformat=require(_0x64e6('0x0'));var rimraf=require('rimraf');var zipdir=require(_0x64e6('0x1'));var jsonpatch=require('fast-json-patch');var rp=require(_0x64e6('0x2'));var moment=require(_0x64e6('0x3'));var BPromise=require(_0x64e6('0x4'));var Mustache=require(_0x64e6('0x5'));var util=require(_0x64e6('0x6'));var path=require(_0x64e6('0x7'));var sox=require(_0x64e6('0x8'));var csv=require(_0x64e6('0x9'));var ejs=require(_0x64e6('0xa'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x64e6('0xb'));var squel=require(_0x64e6('0xc'));var crypto=require(_0x64e6('0xd'));var jsforce=require(_0x64e6('0xe'));var deskjs=require(_0x64e6('0xf'));var toCsv=require(_0x64e6('0x9'));var querystring=require('querystring');var Papa=require(_0x64e6('0x10'));var Redis=require('ioredis');var authService=require('../../components/auth/service');var qs=require(_0x64e6('0x11'));var as=require(_0x64e6('0x12'));var hardwareService=require(_0x64e6('0x13'));var logger=require(_0x64e6('0x14'))(_0x64e6('0x15'));var utils=require(_0x64e6('0x16'));var config=require(_0x64e6('0x17'));var licenseUtil=require(_0x64e6('0x18'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x12ae23,_0x2accc4){_0x2accc4=_0x2accc4||0xcc;return function(_0x5bb7ef){if(_0x5bb7ef){return _0x12ae23[_0x64e6('0x19')](_0x2accc4);}return _0x12ae23[_0x64e6('0x1a')](_0x2accc4)['end']();};}function respondWithResult(_0x595265,_0x318fa5){_0x318fa5=_0x318fa5||0xc8;return function(_0x4b041e){if(_0x4b041e){return _0x595265[_0x64e6('0x1a')](_0x318fa5)['json'](_0x4b041e);}};}function respondWithFilteredResult(_0x28719f,_0x1d6a64){return function(_0x320b6e){if(_0x320b6e){var _0x563b35=typeof _0x1d6a64[_0x64e6('0x1b')]===_0x64e6('0x1c')&&typeof _0x1d6a64[_0x64e6('0x1d')]==='undefined';var _0x3ba448=_0x320b6e[_0x64e6('0x1e')];var _0x33b3ff=_0x563b35?0x0:_0x1d6a64[_0x64e6('0x1b')];var _0x31d42d=_0x563b35?_0x320b6e[_0x64e6('0x1e')]:_0x1d6a64[_0x64e6('0x1b')]+_0x1d6a64['limit'];var _0x43ea91;if(_0x31d42d>=_0x3ba448){_0x31d42d=_0x3ba448;_0x43ea91=0xc8;}else{_0x43ea91=0xce;}_0x28719f[_0x64e6('0x1a')](_0x43ea91);return _0x28719f['set'](_0x64e6('0x1f'),_0x33b3ff+'-'+_0x31d42d+'/'+_0x3ba448)['json'](_0x320b6e);}return null;};}function patchUpdates(_0x21abdf){return function(_0x5e9e74){try{jsonpatch[_0x64e6('0x20')](_0x5e9e74,_0x21abdf,!![]);}catch(_0x192272){return BPromise['reject'](_0x192272);}return _0x5e9e74[_0x64e6('0x21')]();};}function saveUpdates(_0x33615d,_0x5ab3da){return function(_0x38ca40){if(_0x38ca40){return _0x38ca40[_0x64e6('0x22')](_0x33615d)['then'](function(_0x4688ac){return _0x4688ac;});}return null;};}function removeEntity(_0x129c8e,_0x3f760c){return function(_0x45a6c2){if(_0x45a6c2){return _0x45a6c2[_0x64e6('0x23')]()['then'](function(){_0x129c8e[_0x64e6('0x1a')](0xcc)['end']();});}};}function handleEntityNotFound(_0x9107d5,_0x315996){return function(_0x59696d){if(!_0x59696d){_0x9107d5['sendStatus'](0x194);}return _0x59696d;};}function handleError(_0x3e3c70,_0x277328){_0x277328=_0x277328||0x1f4;return function(_0x512b3a){logger[_0x64e6('0x24')](_0x512b3a[_0x64e6('0x25')]);if(_0x512b3a[_0x64e6('0x26')]){delete _0x512b3a[_0x64e6('0x26')];}_0x3e3c70['status'](_0x277328)[_0x64e6('0x27')](_0x512b3a);};}exports[_0x64e6('0x28')]=function(_0x3e7e23,_0x5416a7){var _0x384b94={},_0x2a60e0={},_0x4d861b={'count':0x0,'rows':[]};var _0x334cbb=_[_0x64e6('0x29')](db['MailSubstatus'][_0x64e6('0x2a')],function(_0x4fd416){return{'name':_0x4fd416[_0x64e6('0x2b')],'type':_0x4fd416[_0x64e6('0x2c')][_0x64e6('0x2d')]};});_0x2a60e0['model']=_[_0x64e6('0x29')](_0x334cbb,'name');_0x2a60e0[_0x64e6('0x2e')]=_[_0x64e6('0x2f')](_0x3e7e23[_0x64e6('0x2e')]);_0x2a60e0[_0x64e6('0x30')]=_[_0x64e6('0x31')](_0x2a60e0[_0x64e6('0x32')],_0x2a60e0['query']);_0x384b94[_0x64e6('0x33')]=_[_0x64e6('0x31')](_0x2a60e0[_0x64e6('0x32')],qs[_0x64e6('0x34')](_0x3e7e23['query'][_0x64e6('0x34')]));_0x384b94[_0x64e6('0x33')]=_0x384b94[_0x64e6('0x33')][_0x64e6('0x35')]?_0x384b94[_0x64e6('0x33')]:_0x2a60e0[_0x64e6('0x32')];if(!_0x3e7e23['query'][_0x64e6('0x36')]('nolimit')){_0x384b94[_0x64e6('0x1d')]=qs[_0x64e6('0x1d')](_0x3e7e23[_0x64e6('0x2e')][_0x64e6('0x1d')]);_0x384b94[_0x64e6('0x1b')]=qs[_0x64e6('0x1b')](_0x3e7e23[_0x64e6('0x2e')]['offset']);}_0x384b94[_0x64e6('0x37')]=qs['sort'](_0x3e7e23[_0x64e6('0x2e')][_0x64e6('0x38')]);_0x384b94[_0x64e6('0x39')]=qs[_0x64e6('0x30')](_[_0x64e6('0x3a')](_0x3e7e23[_0x64e6('0x2e')],_0x2a60e0[_0x64e6('0x30')]),_0x334cbb);if(_0x3e7e23[_0x64e6('0x2e')][_0x64e6('0x3b')]){_0x384b94[_0x64e6('0x39')]=_['merge'](_0x384b94[_0x64e6('0x39')],{'$or':_[_0x64e6('0x29')](_0x334cbb,function(_0x2a5ea4){if(_0x2a5ea4[_0x64e6('0x2c')]!==_0x64e6('0x3c')){var _0xca84bc={};_0xca84bc[_0x2a5ea4['name']]={'$like':'%'+_0x3e7e23[_0x64e6('0x2e')][_0x64e6('0x3b')]+'%'};return _0xca84bc;}})});}_0x384b94=_[_0x64e6('0x3d')]({},_0x384b94,_0x3e7e23[_0x64e6('0x3e')]);var _0x3d23e0={'where':_0x384b94[_0x64e6('0x39')]};return db['MailSubstatus']['count'](_0x3d23e0)[_0x64e6('0x3f')](function(_0x55890e){_0x4d861b[_0x64e6('0x1e')]=_0x55890e;if(_0x3e7e23[_0x64e6('0x2e')][_0x64e6('0x40')]){_0x384b94[_0x64e6('0x41')]=[{'all':!![]}];}return db[_0x64e6('0x42')]['findAll'](_0x384b94);})[_0x64e6('0x3f')](function(_0x5d5edc){_0x4d861b[_0x64e6('0x43')]=_0x5d5edc;return _0x4d861b;})['then'](respondWithFilteredResult(_0x5416a7,_0x384b94))['catch'](handleError(_0x5416a7,null));};exports[_0x64e6('0x44')]=function(_0x2d171d,_0x5bce1e){var _0x57c038={'raw':!![],'where':{'id':_0x2d171d[_0x64e6('0x45')]['id']}},_0xa13b97={};_0xa13b97[_0x64e6('0x32')]=_['keys'](db[_0x64e6('0x42')]['rawAttributes']);_0xa13b97[_0x64e6('0x2e')]=_[_0x64e6('0x2f')](_0x2d171d['query']);_0xa13b97[_0x64e6('0x30')]=_[_0x64e6('0x31')](_0xa13b97['model'],_0xa13b97[_0x64e6('0x2e')]);_0x57c038[_0x64e6('0x33')]=_[_0x64e6('0x31')](_0xa13b97['model'],qs[_0x64e6('0x34')](_0x2d171d[_0x64e6('0x2e')][_0x64e6('0x34')]));_0x57c038[_0x64e6('0x33')]=_0x57c038[_0x64e6('0x33')][_0x64e6('0x35')]?_0x57c038[_0x64e6('0x33')]:_0xa13b97[_0x64e6('0x32')];if(_0x2d171d['query'][_0x64e6('0x40')]){_0x57c038[_0x64e6('0x41')]=[{'all':!![]}];}_0x57c038=_['merge']({},_0x57c038,_0x2d171d[_0x64e6('0x3e')]);return db['MailSubstatus']['find'](_0x57c038)['then'](handleEntityNotFound(_0x5bce1e,null))[_0x64e6('0x3f')](respondWithResult(_0x5bce1e,null))[_0x64e6('0x46')](handleError(_0x5bce1e,null));};exports[_0x64e6('0x47')]=function(_0x1f8082,_0x3eaf4b){return db['MailSubstatus']['create'](_0x1f8082[_0x64e6('0x48')],{})['then'](respondWithResult(_0x3eaf4b,0xc9))[_0x64e6('0x46')](handleError(_0x3eaf4b,null));};exports[_0x64e6('0x22')]=function(_0x2b9c7c,_0x5e09b2){if(_0x2b9c7c[_0x64e6('0x48')]['id']){delete _0x2b9c7c[_0x64e6('0x48')]['id'];}return db[_0x64e6('0x42')][_0x64e6('0x49')]({'where':{'id':_0x2b9c7c[_0x64e6('0x45')]['id']}})[_0x64e6('0x3f')](handleEntityNotFound(_0x5e09b2,null))[_0x64e6('0x3f')](saveUpdates(_0x2b9c7c[_0x64e6('0x48')],null))[_0x64e6('0x3f')](respondWithResult(_0x5e09b2,null))[_0x64e6('0x46')](handleError(_0x5e09b2,null));};exports[_0x64e6('0x23')]=function(_0x36ac8c,_0x43611a){return db['MailSubstatus'][_0x64e6('0x49')]({'where':{'id':_0x36ac8c[_0x64e6('0x45')]['id']}})['then'](handleEntityNotFound(_0x43611a,null))['then'](removeEntity(_0x43611a,null))[_0x64e6('0x46')](handleError(_0x43611a,null));};exports[_0x64e6('0x4a')]=function(_0x1748b0,_0x33f6b3){return db[_0x64e6('0x42')][_0x64e6('0x4a')]()[_0x64e6('0x3f')](respondWithResult(_0x33f6b3,null))[_0x64e6('0x46')](handleError(_0x33f6b3,null));};
\ No newline at end of file
+var _0x664b=['update','then','end','error','stack','name','send','index','map','MailSubstatus','rawAttributes','fieldName','type','query','keys','filters','intersection','model','fields','attributes','length','hasOwnProperty','nolimit','offset','order','sort','where','pick','filter','merge','include','findAll','rows','catch','show','params','options','find','create','body','destroy','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','mustache','sox','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','to-csv','querystring','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','../../config/license/util','../../mysqldb','sendStatus','status','undefined','limit','count','set','reject'];(function(_0xd02fa3,_0x6b84e3){var _0x38dfd9=function(_0x14b796){while(--_0x14b796){_0xd02fa3['push'](_0xd02fa3['shift']());}};_0x38dfd9(++_0x6b84e3);}(_0x664b,0x101));var _0xb664=function(_0x19950b,_0x53d0d7){_0x19950b=_0x19950b-0x0;var _0x3c6b41=_0x664b[_0x19950b];return _0x3c6b41;};'use strict';var emlformat=require(_0xb664('0x0'));var rimraf=require(_0xb664('0x1'));var zipdir=require(_0xb664('0x2'));var jsonpatch=require(_0xb664('0x3'));var rp=require(_0xb664('0x4'));var moment=require(_0xb664('0x5'));var BPromise=require('bluebird');var Mustache=require(_0xb664('0x6'));var util=require('util');var path=require('path');var sox=require(_0xb664('0x7'));var csv=require('to-csv');var ejs=require(_0xb664('0x8'));var fs=require('fs');var fs_extra=require(_0xb664('0x9'));var _=require(_0xb664('0xa'));var squel=require(_0xb664('0xb'));var crypto=require(_0xb664('0xc'));var jsforce=require(_0xb664('0xd'));var deskjs=require(_0xb664('0xe'));var toCsv=require(_0xb664('0xf'));var querystring=require(_0xb664('0x10'));var Papa=require('papaparse');var Redis=require(_0xb664('0x11'));var authService=require(_0xb664('0x12'));var qs=require('../../components/parsers/qs');var as=require(_0xb664('0x13'));var hardwareService=require(_0xb664('0x14'));var logger=require(_0xb664('0x15'))('api');var utils=require('../../config/utils');var config=require('../../config/environment');var licenseUtil=require(_0xb664('0x16'));var db=require(_0xb664('0x17'))['db'];function respondWithStatusCode(_0x5223e8,_0x3ad267){_0x3ad267=_0x3ad267||0xcc;return function(_0x3d5383){if(_0x3d5383){return _0x5223e8[_0xb664('0x18')](_0x3ad267);}return _0x5223e8[_0xb664('0x19')](_0x3ad267)['end']();};}function respondWithResult(_0x3925da,_0xc82c8c){_0xc82c8c=_0xc82c8c||0xc8;return function(_0x59f12e){if(_0x59f12e){return _0x3925da['status'](_0xc82c8c)['json'](_0x59f12e);}};}function respondWithFilteredResult(_0x1e2bbf,_0x51ff35){return function(_0x3ae108){if(_0x3ae108){var _0x2ce52b=typeof _0x51ff35['offset']===_0xb664('0x1a')&&typeof _0x51ff35[_0xb664('0x1b')]===_0xb664('0x1a');var _0x22f415=_0x3ae108[_0xb664('0x1c')];var _0x33fe3d=_0x2ce52b?0x0:_0x51ff35['offset'];var _0x16368b=_0x2ce52b?_0x3ae108[_0xb664('0x1c')]:_0x51ff35['offset']+_0x51ff35['limit'];var _0x47c76b;if(_0x16368b>=_0x22f415){_0x16368b=_0x22f415;_0x47c76b=0xc8;}else{_0x47c76b=0xce;}_0x1e2bbf[_0xb664('0x19')](_0x47c76b);return _0x1e2bbf[_0xb664('0x1d')]('Content-Range',_0x33fe3d+'-'+_0x16368b+'/'+_0x22f415)['json'](_0x3ae108);}return null;};}function patchUpdates(_0x4fb122){return function(_0x1c6eba){try{jsonpatch['apply'](_0x1c6eba,_0x4fb122,!![]);}catch(_0x4466d5){return BPromise[_0xb664('0x1e')](_0x4466d5);}return _0x1c6eba['save']();};}function saveUpdates(_0x3e2825,_0x4941a5){return function(_0xb3586f){if(_0xb3586f){return _0xb3586f[_0xb664('0x1f')](_0x3e2825)[_0xb664('0x20')](function(_0x12e667){return _0x12e667;});}return null;};}function removeEntity(_0x3ffa01,_0x24f728){return function(_0x514850){if(_0x514850){return _0x514850['destroy']()['then'](function(){_0x3ffa01[_0xb664('0x19')](0xcc)[_0xb664('0x21')]();});}};}function handleEntityNotFound(_0x33e915,_0x329fe9){return function(_0x5bf017){if(!_0x5bf017){_0x33e915[_0xb664('0x18')](0x194);}return _0x5bf017;};}function handleError(_0x2dc807,_0x3b6a79){_0x3b6a79=_0x3b6a79||0x1f4;return function(_0x330627){logger[_0xb664('0x22')](_0x330627[_0xb664('0x23')]);if(_0x330627[_0xb664('0x24')]){delete _0x330627[_0xb664('0x24')];}_0x2dc807['status'](_0x3b6a79)[_0xb664('0x25')](_0x330627);};}exports[_0xb664('0x26')]=function(_0x28c0bb,_0x386f8f){var _0x1065be={},_0x4cc677={},_0x5cc385={'count':0x0,'rows':[]};var _0x4ffca2=_[_0xb664('0x27')](db[_0xb664('0x28')][_0xb664('0x29')],function(_0x1e3d3f){return{'name':_0x1e3d3f[_0xb664('0x2a')],'type':_0x1e3d3f[_0xb664('0x2b')]['key']};});_0x4cc677['model']=_[_0xb664('0x27')](_0x4ffca2,'name');_0x4cc677[_0xb664('0x2c')]=_[_0xb664('0x2d')](_0x28c0bb[_0xb664('0x2c')]);_0x4cc677[_0xb664('0x2e')]=_[_0xb664('0x2f')](_0x4cc677[_0xb664('0x30')],_0x4cc677[_0xb664('0x2c')]);_0x1065be['attributes']=_[_0xb664('0x2f')](_0x4cc677[_0xb664('0x30')],qs[_0xb664('0x31')](_0x28c0bb['query'][_0xb664('0x31')]));_0x1065be[_0xb664('0x32')]=_0x1065be['attributes'][_0xb664('0x33')]?_0x1065be[_0xb664('0x32')]:_0x4cc677[_0xb664('0x30')];if(!_0x28c0bb[_0xb664('0x2c')][_0xb664('0x34')](_0xb664('0x35'))){_0x1065be[_0xb664('0x1b')]=qs[_0xb664('0x1b')](_0x28c0bb['query'][_0xb664('0x1b')]);_0x1065be[_0xb664('0x36')]=qs[_0xb664('0x36')](_0x28c0bb[_0xb664('0x2c')][_0xb664('0x36')]);}_0x1065be[_0xb664('0x37')]=qs[_0xb664('0x38')](_0x28c0bb['query'][_0xb664('0x38')]);_0x1065be[_0xb664('0x39')]=qs['filters'](_[_0xb664('0x3a')](_0x28c0bb[_0xb664('0x2c')],_0x4cc677[_0xb664('0x2e')]),_0x4ffca2);if(_0x28c0bb[_0xb664('0x2c')][_0xb664('0x3b')]){_0x1065be['where']=_[_0xb664('0x3c')](_0x1065be[_0xb664('0x39')],{'$or':_[_0xb664('0x27')](_0x4ffca2,function(_0x1b574e){if(_0x1b574e['type']!=='VIRTUAL'){var _0x446ea2={};_0x446ea2[_0x1b574e[_0xb664('0x24')]]={'$like':'%'+_0x28c0bb[_0xb664('0x2c')][_0xb664('0x3b')]+'%'};return _0x446ea2;}})});}_0x1065be=_[_0xb664('0x3c')]({},_0x1065be,_0x28c0bb['options']);var _0x33e54c={'where':_0x1065be[_0xb664('0x39')]};return db[_0xb664('0x28')][_0xb664('0x1c')](_0x33e54c)[_0xb664('0x20')](function(_0x8fd821){_0x5cc385[_0xb664('0x1c')]=_0x8fd821;if(_0x28c0bb[_0xb664('0x2c')]['includeAll']){_0x1065be[_0xb664('0x3d')]=[{'all':!![]}];}return db['MailSubstatus'][_0xb664('0x3e')](_0x1065be);})[_0xb664('0x20')](function(_0x4a5f6e){_0x5cc385[_0xb664('0x3f')]=_0x4a5f6e;return _0x5cc385;})[_0xb664('0x20')](respondWithFilteredResult(_0x386f8f,_0x1065be))[_0xb664('0x40')](handleError(_0x386f8f,null));};exports[_0xb664('0x41')]=function(_0x2c728a,_0x433cfb){var _0x357ed4={'raw':!![],'where':{'id':_0x2c728a[_0xb664('0x42')]['id']}},_0x39aca2={};_0x39aca2['model']=_['keys'](db[_0xb664('0x28')][_0xb664('0x29')]);_0x39aca2[_0xb664('0x2c')]=_[_0xb664('0x2d')](_0x2c728a['query']);_0x39aca2['filters']=_[_0xb664('0x2f')](_0x39aca2[_0xb664('0x30')],_0x39aca2['query']);_0x357ed4[_0xb664('0x32')]=_[_0xb664('0x2f')](_0x39aca2[_0xb664('0x30')],qs[_0xb664('0x31')](_0x2c728a[_0xb664('0x2c')][_0xb664('0x31')]));_0x357ed4[_0xb664('0x32')]=_0x357ed4[_0xb664('0x32')][_0xb664('0x33')]?_0x357ed4[_0xb664('0x32')]:_0x39aca2[_0xb664('0x30')];if(_0x2c728a['query']['includeAll']){_0x357ed4['include']=[{'all':!![]}];}_0x357ed4=_[_0xb664('0x3c')]({},_0x357ed4,_0x2c728a[_0xb664('0x43')]);return db[_0xb664('0x28')][_0xb664('0x44')](_0x357ed4)['then'](handleEntityNotFound(_0x433cfb,null))[_0xb664('0x20')](respondWithResult(_0x433cfb,null))[_0xb664('0x40')](handleError(_0x433cfb,null));};exports[_0xb664('0x45')]=function(_0x160f7e,_0x25a9cb){return db[_0xb664('0x28')][_0xb664('0x45')](_0x160f7e[_0xb664('0x46')],{})[_0xb664('0x20')](respondWithResult(_0x25a9cb,0xc9))['catch'](handleError(_0x25a9cb,null));};exports[_0xb664('0x1f')]=function(_0x25dc2a,_0xd45610){if(_0x25dc2a[_0xb664('0x46')]['id']){delete _0x25dc2a[_0xb664('0x46')]['id'];}return db[_0xb664('0x28')]['find']({'where':{'id':_0x25dc2a[_0xb664('0x42')]['id']}})['then'](handleEntityNotFound(_0xd45610,null))[_0xb664('0x20')](saveUpdates(_0x25dc2a[_0xb664('0x46')],null))['then'](respondWithResult(_0xd45610,null))[_0xb664('0x40')](handleError(_0xd45610,null));};exports[_0xb664('0x47')]=function(_0x7d6972,_0x372b7d){return db['MailSubstatus'][_0xb664('0x44')]({'where':{'id':_0x7d6972[_0xb664('0x42')]['id']}})[_0xb664('0x20')](handleEntityNotFound(_0x372b7d,null))[_0xb664('0x20')](removeEntity(_0x372b7d,null))[_0xb664('0x40')](handleError(_0x372b7d,null));};exports['describe']=function(_0x3625e6,_0x5604c2){return db['MailSubstatus']['describe']()[_0xb664('0x20')](respondWithResult(_0x5604c2,null))['catch'](handleError(_0x5604c2,null));};
\ No newline at end of file
index 46a9893..e27d270 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5fce=['util','api','moment','bluebird','request-promise','path','../../config/environment','./mailSubstatus.attributes','exports','define','MailSubstatus','lodash'];(function(_0x2b1615,_0x337791){var _0xeb8c9f=function(_0x5645ca){while(--_0x5645ca){_0x2b1615['push'](_0x2b1615['shift']());}};_0xeb8c9f(++_0x337791);}(_0x5fce,0x6b));var _0xe5fc=function(_0x1facfa,_0x1acf7d){_0x1facfa=_0x1facfa-0x0;var _0x9ec701=_0x5fce[_0x1facfa];return _0x9ec701;};'use strict';var _=require(_0xe5fc('0x0'));var util=require(_0xe5fc('0x1'));var logger=require('../../config/logger')(_0xe5fc('0x2'));var moment=require(_0xe5fc('0x3'));var BPromise=require(_0xe5fc('0x4'));var rp=require(_0xe5fc('0x5'));var fs=require('fs');var path=require(_0xe5fc('0x6'));var rimraf=require('rimraf');var config=require(_0xe5fc('0x7'));var attributes=require(_0xe5fc('0x8'));module[_0xe5fc('0x9')]=function(_0x56ea37,_0x2ced79){return _0x56ea37[_0xe5fc('0xa')](_0xe5fc('0xb'),attributes,{'tableName':'mail_substatuses','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x5de0=['request-promise','path','rimraf','../../config/environment','./mailSubstatus.attributes','exports','MailSubstatus','lodash','../../config/logger','bluebird'];(function(_0x321bb2,_0x202794){var _0x9c12ed=function(_0x263dd3){while(--_0x263dd3){_0x321bb2['push'](_0x321bb2['shift']());}};_0x9c12ed(++_0x202794);}(_0x5de0,0x16f));var _0x05de=function(_0x5bd5c2,_0x357457){_0x5bd5c2=_0x5bd5c2-0x0;var _0x5ab0a0=_0x5de0[_0x5bd5c2];return _0x5ab0a0;};'use strict';var _=require(_0x05de('0x0'));var util=require('util');var logger=require(_0x05de('0x1'))('api');var moment=require('moment');var BPromise=require(_0x05de('0x2'));var rp=require(_0x05de('0x3'));var fs=require('fs');var path=require(_0x05de('0x4'));var rimraf=require(_0x05de('0x5'));var config=require(_0x05de('0x6'));var attributes=require(_0x05de('0x7'));module[_0x05de('0x8')]=function(_0x30e71b,_0x204363){return _0x30e71b['define'](_0x05de('0x9'),attributes,{'tableName':'mail_substatuses','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 955c346..4dfabad 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa07f=['MailSubstatus,\x20%s,\x20%s,\x20%s','stringify','error','code','message','info','result','catch','lodash','util','bluebird','randomstring','ioredis','../../mysqldb','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','request','MailSubstatus,\x20%s,\x20%s','request\x20sent'];(function(_0x1ff575,_0xdba21f){var _0x48fc9e=function(_0x51cf97){while(--_0x51cf97){_0x1ff575['push'](_0x1ff575['shift']());}};_0x48fc9e(++_0xdba21f);}(_0xa07f,0xee));var _0xfa07=function(_0xc5b291,_0xd768fc){_0xc5b291=_0xc5b291-0x0;var _0x750f5d=_0xa07f[_0xc5b291];return _0x750f5d;};'use strict';var _=require(_0xfa07('0x0'));var util=require(_0xfa07('0x1'));var moment=require('moment');var BPromise=require(_0xfa07('0x2'));var rs=require(_0xfa07('0x3'));var fs=require('fs');var Redis=require(_0xfa07('0x4'));var db=require(_0xfa07('0x5'))['db'];var utils=require('../../config/utils');var logger=require(_0xfa07('0x6'))(_0xfa07('0x7'));var config=require(_0xfa07('0x8'));var jayson=require(_0xfa07('0x9'));var client=jayson[_0xfa07('0xa')][_0xfa07('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x4e967e,_0x5bb46f,_0x5b9b17){return new BPromise(function(_0x4ee720,_0xe3c510){return client[_0xfa07('0xc')](_0x4e967e,_0x5b9b17)['then'](function(_0x3ca830){logger['info'](_0xfa07('0xd'),_0x5bb46f,_0xfa07('0xe'));logger['debug'](_0xfa07('0xf'),_0x5bb46f,_0xfa07('0xe'),JSON[_0xfa07('0x10')](_0x3ca830));if(_0x3ca830[_0xfa07('0x11')]){if(_0x3ca830[_0xfa07('0x11')][_0xfa07('0x12')]===0x1f4){logger[_0xfa07('0x11')]('MailSubstatus,\x20%s,\x20%s',_0x5bb46f,_0x3ca830[_0xfa07('0x11')][_0xfa07('0x13')]);return _0xe3c510(_0x3ca830[_0xfa07('0x11')]['message']);}logger[_0xfa07('0x11')](_0xfa07('0xd'),_0x5bb46f,_0x3ca830['error'][_0xfa07('0x13')]);return _0x4ee720(_0x3ca830[_0xfa07('0x11')]['message']);}else{logger[_0xfa07('0x14')]('MailSubstatus,\x20%s,\x20%s',_0x5bb46f,_0xfa07('0xe'));_0x4ee720(_0x3ca830[_0xfa07('0x15')]['message']);}})[_0xfa07('0x16')](function(_0xc3307b){logger['error']('MailSubstatus,\x20%s,\x20%s',_0x5bb46f,_0xc3307b);_0xe3c510(_0xc3307b);});});}
\ No newline at end of file
+var _0x17a8=['request','then','MailSubstatus,\x20%s,\x20%s','debug','MailSubstatus,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','code','message','info','catch','lodash','util','moment','bluebird','randomstring','../../mysqldb','../../config/utils','../../config/logger','client','http'];(function(_0xfffaef,_0x421f87){var _0x16e578=function(_0x3a8363){while(--_0x3a8363){_0xfffaef['push'](_0xfffaef['shift']());}};_0x16e578(++_0x421f87);}(_0x17a8,0x64));var _0x817a=function(_0x20e81e,_0x2ad41f){_0x20e81e=_0x20e81e-0x0;var _0x3e6654=_0x17a8[_0x20e81e];return _0x3e6654;};'use strict';var _=require(_0x817a('0x0'));var util=require(_0x817a('0x1'));var moment=require(_0x817a('0x2'));var BPromise=require(_0x817a('0x3'));var rs=require(_0x817a('0x4'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x817a('0x5'))['db'];var utils=require(_0x817a('0x6'));var logger=require(_0x817a('0x7'))('rpc');var config=require('../../config/environment');var jayson=require('jayson/promise');var client=jayson[_0x817a('0x8')][_0x817a('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x303b45,_0x3d94e3,_0x4e2e8c){return new BPromise(function(_0x5e4c82,_0x3f76b1){return client[_0x817a('0xa')](_0x303b45,_0x4e2e8c)[_0x817a('0xb')](function(_0x3e483d){logger['info'](_0x817a('0xc'),_0x3d94e3,'request\x20sent');logger[_0x817a('0xd')](_0x817a('0xe'),_0x3d94e3,_0x817a('0xf'),JSON[_0x817a('0x10')](_0x3e483d));if(_0x3e483d[_0x817a('0x11')]){if(_0x3e483d[_0x817a('0x11')][_0x817a('0x12')]===0x1f4){logger[_0x817a('0x11')](_0x817a('0xc'),_0x3d94e3,_0x3e483d['error'][_0x817a('0x13')]);return _0x3f76b1(_0x3e483d[_0x817a('0x11')][_0x817a('0x13')]);}logger[_0x817a('0x11')]('MailSubstatus,\x20%s,\x20%s',_0x3d94e3,_0x3e483d[_0x817a('0x11')][_0x817a('0x13')]);return _0x5e4c82(_0x3e483d[_0x817a('0x11')][_0x817a('0x13')]);}else{logger[_0x817a('0x14')](_0x817a('0xc'),_0x3d94e3,'request\x20sent');_0x5e4c82(_0x3e483d['result']['message']);}})[_0x817a('0x15')](function(_0x4a7a14){logger['error'](_0x817a('0xc'),_0x3d94e3,_0x4a7a14);_0x3f76b1(_0x4a7a14);});});}
\ No newline at end of file
index 565fb35..d23576d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x06b2=['Router','fs-extra','../../components/interaction/service','../../config/environment','get','isAuthenticated','describe','/:id','show','post','create','put','update','delete','destroy','exports','util','path','connect-timeout'];(function(_0x3d5e4a,_0x1e7acd){var _0x542881=function(_0x329e36){while(--_0x329e36){_0x3d5e4a['push'](_0x3d5e4a['shift']());}};_0x542881(++_0x1e7acd);}(_0x06b2,0x1d8));var _0x206b=function(_0x3441e0,_0x82cdd4){_0x3441e0=_0x3441e0-0x0;var _0x55b39b=_0x06b2[_0x3441e0];return _0x55b39b;};'use strict';var multer=require('multer');var util=require(_0x206b('0x0'));var path=require(_0x206b('0x1'));var timeout=require(_0x206b('0x2'));var express=require('express');var router=express[_0x206b('0x3')]();var fs_extra=require(_0x206b('0x4'));var auth=require('../../components/auth/service');var interaction=require(_0x206b('0x5'));var config=require(_0x206b('0x6'));var controller=require('./mailTransferReport.controller');router[_0x206b('0x7')]('/',auth[_0x206b('0x8')](),controller['index']);router['get']('/describe',auth['isAuthenticated'](),controller[_0x206b('0x9')]);router['get'](_0x206b('0xa'),auth[_0x206b('0x8')](),controller[_0x206b('0xb')]);router[_0x206b('0xc')]('/',auth[_0x206b('0x8')](),controller[_0x206b('0xd')]);router[_0x206b('0xe')](_0x206b('0xa'),auth[_0x206b('0x8')](),controller[_0x206b('0xf')]);router[_0x206b('0x10')](_0x206b('0xa'),auth[_0x206b('0x8')](),controller[_0x206b('0x11')]);module[_0x206b('0x12')]=router;
\ No newline at end of file
+var _0x6943=['path','connect-timeout','Router','../../components/interaction/service','../../config/environment','./mailTransferReport.controller','isAuthenticated','get','/:id','show','post','create','put','update','delete','destroy','exports','multer','util'];(function(_0x34ec96,_0x18c868){var _0x3c1b34=function(_0x4a1596){while(--_0x4a1596){_0x34ec96['push'](_0x34ec96['shift']());}};_0x3c1b34(++_0x18c868);}(_0x6943,0x1b3));var _0x3694=function(_0x151721,_0x20d5bc){_0x151721=_0x151721-0x0;var _0x2deaa7=_0x6943[_0x151721];return _0x2deaa7;};'use strict';var multer=require(_0x3694('0x0'));var util=require(_0x3694('0x1'));var path=require(_0x3694('0x2'));var timeout=require(_0x3694('0x3'));var express=require('express');var router=express[_0x3694('0x4')]();var fs_extra=require('fs-extra');var auth=require('../../components/auth/service');var interaction=require(_0x3694('0x5'));var config=require(_0x3694('0x6'));var controller=require(_0x3694('0x7'));router['get']('/',auth[_0x3694('0x8')](),controller['index']);router[_0x3694('0x9')]('/describe',auth[_0x3694('0x8')](),controller['describe']);router['get'](_0x3694('0xa'),auth[_0x3694('0x8')](),controller[_0x3694('0xb')]);router[_0x3694('0xc')]('/',auth[_0x3694('0x8')](),controller[_0x3694('0xd')]);router[_0x3694('0xe')](_0x3694('0xa'),auth[_0x3694('0x8')](),controller[_0x3694('0xf')]);router[_0x3694('0x10')](_0x3694('0xa'),auth[_0x3694('0x8')](),controller[_0x3694('0x11')]);module[_0x3694('0x12')]=router;
\ No newline at end of file
index 16aa661..91a6122 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(_0x2134fa,_0x42a1dd){var _0x4a7d4f=function(_0x22e1bb){while(--_0x22e1bb){_0x2134fa['push'](_0x2134fa['shift']());}};_0x4a7d4f(++_0x42a1dd);}(_0xaa88,0x137));var _0x8aa8=function(_0x179b53,_0x31f6fe){_0x179b53=_0x179b53-0x0;var _0x38a146=_0xaa88[_0x179b53];return _0x38a146;};'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 _0xcb91=['STRING','ENUM','account','queue','NOW','exports'];(function(_0x32a161,_0x568df3){var _0x1f8c09=function(_0x1aa7b5){while(--_0x1aa7b5){_0x32a161['push'](_0x32a161['shift']());}};_0x1f8c09(++_0x568df3);}(_0xcb91,0x1a9));var _0x1cb9=function(_0x21bfab,_0x2fee48){_0x21bfab=_0x21bfab-0x0;var _0x4db318=_0xcb91[_0x21bfab];return _0x4db318;};'use strict';var moment=require('moment');var Sequelize=require('sequelize');module[_0x1cb9('0x0')]={'uniqueid':{'type':Sequelize[_0x1cb9('0x1')],'allowNull':![]},'type':{'type':Sequelize[_0x1cb9('0x2')](_0x1cb9('0x3'),'agent',_0x1cb9('0x4')),'allowNull':![],'defaultValue':_0x1cb9('0x4')},'transferredAt':{'type':Sequelize['DATE'],'allowNull':![],'defaultValue':Sequelize[_0x1cb9('0x5')]}};
\ No newline at end of file
index 0021134..8636678 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe5da=['../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','offset','undefined','count','limit','set','Content-Range','json','apply','reject','save','destroy','then','error','stack','name','send','map','MailTransferReport','rawAttributes','fieldName','type','key','query','filters','intersection','model','fields','attributes','length','hasOwnProperty','nolimit','order','sort','where','pick','filter','merge','VIRTUAL','options','includeAll','include','rows','show','params','keys','find','catch','create','body','update','describe','eml-format','rimraf','zip-dir','fast-json-patch','moment','bluebird','mustache','sox','ejs','fs-extra','squel','crypto','jsforce','desk.js','to-csv','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../config/license/hardware'];(function(_0x351aad,_0x146763){var _0x3f4ef4=function(_0x51c4a2){while(--_0x51c4a2){_0x351aad['push'](_0x351aad['shift']());}};_0x3f4ef4(++_0x146763);}(_0xe5da,0x8d));var _0xae5d=function(_0x21a9d9,_0x4d5ac8){_0x21a9d9=_0x21a9d9-0x0;var _0x46adce=_0xe5da[_0x21a9d9];return _0x46adce;};'use strict';var emlformat=require(_0xae5d('0x0'));var rimraf=require(_0xae5d('0x1'));var zipdir=require(_0xae5d('0x2'));var jsonpatch=require(_0xae5d('0x3'));var rp=require('request-promise');var moment=require(_0xae5d('0x4'));var BPromise=require(_0xae5d('0x5'));var Mustache=require(_0xae5d('0x6'));var util=require('util');var path=require('path');var sox=require(_0xae5d('0x7'));var csv=require('to-csv');var ejs=require(_0xae5d('0x8'));var fs=require('fs');var fs_extra=require(_0xae5d('0x9'));var _=require('lodash');var squel=require(_0xae5d('0xa'));var crypto=require(_0xae5d('0xb'));var jsforce=require(_0xae5d('0xc'));var deskjs=require(_0xae5d('0xd'));var toCsv=require(_0xae5d('0xe'));var querystring=require(_0xae5d('0xf'));var Papa=require(_0xae5d('0x10'));var Redis=require(_0xae5d('0x11'));var authService=require(_0xae5d('0x12'));var qs=require(_0xae5d('0x13'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0xae5d('0x14'));var logger=require(_0xae5d('0x15'))(_0xae5d('0x16'));var utils=require(_0xae5d('0x17'));var config=require(_0xae5d('0x18'));var licenseUtil=require(_0xae5d('0x19'));var db=require(_0xae5d('0x1a'))['db'];function respondWithStatusCode(_0x308192,_0x3c9bca){_0x3c9bca=_0x3c9bca||0xcc;return function(_0x52d00c){if(_0x52d00c){return _0x308192[_0xae5d('0x1b')](_0x3c9bca);}return _0x308192[_0xae5d('0x1c')](_0x3c9bca)[_0xae5d('0x1d')]();};}function respondWithResult(_0x2f5f03,_0x56f429){_0x56f429=_0x56f429||0xc8;return function(_0x407ce3){if(_0x407ce3){return _0x2f5f03['status'](_0x56f429)['json'](_0x407ce3);}};}function respondWithFilteredResult(_0x388138,_0x4dd213){return function(_0xd27749){if(_0xd27749){var _0x1b4602=typeof _0x4dd213[_0xae5d('0x1e')]===_0xae5d('0x1f')&&typeof _0x4dd213['limit']===_0xae5d('0x1f');var _0x53883d=_0xd27749[_0xae5d('0x20')];var _0x46dd28=_0x1b4602?0x0:_0x4dd213[_0xae5d('0x1e')];var _0x5c5f7a=_0x1b4602?_0xd27749['count']:_0x4dd213[_0xae5d('0x1e')]+_0x4dd213[_0xae5d('0x21')];var _0x470c4b;if(_0x5c5f7a>=_0x53883d){_0x5c5f7a=_0x53883d;_0x470c4b=0xc8;}else{_0x470c4b=0xce;}_0x388138[_0xae5d('0x1c')](_0x470c4b);return _0x388138[_0xae5d('0x22')](_0xae5d('0x23'),_0x46dd28+'-'+_0x5c5f7a+'/'+_0x53883d)[_0xae5d('0x24')](_0xd27749);}return null;};}function patchUpdates(_0xf83a1e){return function(_0x29b2e1){try{jsonpatch[_0xae5d('0x25')](_0x29b2e1,_0xf83a1e,!![]);}catch(_0x372a85){return BPromise[_0xae5d('0x26')](_0x372a85);}return _0x29b2e1[_0xae5d('0x27')]();};}function saveUpdates(_0x3beef4,_0x491e7e){return function(_0x4f6eb5){if(_0x4f6eb5){return _0x4f6eb5['update'](_0x3beef4)['then'](function(_0x5e9491){return _0x5e9491;});}return null;};}function removeEntity(_0x38c527,_0x34c068){return function(_0x46e6f1){if(_0x46e6f1){return _0x46e6f1[_0xae5d('0x28')]()[_0xae5d('0x29')](function(){_0x38c527[_0xae5d('0x1c')](0xcc)[_0xae5d('0x1d')]();});}};}function handleEntityNotFound(_0x3f518b,_0x49d400){return function(_0x8a2fd5){if(!_0x8a2fd5){_0x3f518b['sendStatus'](0x194);}return _0x8a2fd5;};}function handleError(_0x496718,_0x5d2de9){_0x5d2de9=_0x5d2de9||0x1f4;return function(_0x22425b){logger[_0xae5d('0x2a')](_0x22425b[_0xae5d('0x2b')]);if(_0x22425b[_0xae5d('0x2c')]){delete _0x22425b[_0xae5d('0x2c')];}_0x496718[_0xae5d('0x1c')](_0x5d2de9)[_0xae5d('0x2d')](_0x22425b);};}exports['index']=function(_0xcad024,_0x4b9147){var _0x428fc7={},_0x258611={},_0x20896d={'count':0x0,'rows':[]};var _0x10126f=_[_0xae5d('0x2e')](db[_0xae5d('0x2f')][_0xae5d('0x30')],function(_0xc0ff57){return{'name':_0xc0ff57[_0xae5d('0x31')],'type':_0xc0ff57[_0xae5d('0x32')][_0xae5d('0x33')]};});_0x258611['model']=_[_0xae5d('0x2e')](_0x10126f,_0xae5d('0x2c'));_0x258611[_0xae5d('0x34')]=_['keys'](_0xcad024['query']);_0x258611[_0xae5d('0x35')]=_[_0xae5d('0x36')](_0x258611[_0xae5d('0x37')],_0x258611[_0xae5d('0x34')]);_0x428fc7['attributes']=_[_0xae5d('0x36')](_0x258611[_0xae5d('0x37')],qs['fields'](_0xcad024[_0xae5d('0x34')][_0xae5d('0x38')]));_0x428fc7['attributes']=_0x428fc7[_0xae5d('0x39')][_0xae5d('0x3a')]?_0x428fc7[_0xae5d('0x39')]:_0x258611['model'];if(!_0xcad024['query'][_0xae5d('0x3b')](_0xae5d('0x3c'))){_0x428fc7[_0xae5d('0x21')]=qs[_0xae5d('0x21')](_0xcad024[_0xae5d('0x34')][_0xae5d('0x21')]);_0x428fc7[_0xae5d('0x1e')]=qs[_0xae5d('0x1e')](_0xcad024[_0xae5d('0x34')][_0xae5d('0x1e')]);}_0x428fc7[_0xae5d('0x3d')]=qs[_0xae5d('0x3e')](_0xcad024['query'][_0xae5d('0x3e')]);_0x428fc7[_0xae5d('0x3f')]=qs[_0xae5d('0x35')](_[_0xae5d('0x40')](_0xcad024['query'],_0x258611[_0xae5d('0x35')]),_0x10126f);if(_0xcad024[_0xae5d('0x34')][_0xae5d('0x41')]){_0x428fc7[_0xae5d('0x3f')]=_[_0xae5d('0x42')](_0x428fc7['where'],{'$or':_[_0xae5d('0x2e')](_0x10126f,function(_0x269479){if(_0x269479[_0xae5d('0x32')]!==_0xae5d('0x43')){var _0x19c957={};_0x19c957[_0x269479[_0xae5d('0x2c')]]={'$like':'%'+_0xcad024[_0xae5d('0x34')]['filter']+'%'};return _0x19c957;}})});}_0x428fc7=_[_0xae5d('0x42')]({},_0x428fc7,_0xcad024[_0xae5d('0x44')]);var _0x385648={'where':_0x428fc7[_0xae5d('0x3f')]};return db[_0xae5d('0x2f')][_0xae5d('0x20')](_0x385648)[_0xae5d('0x29')](function(_0x4422e7){_0x20896d['count']=_0x4422e7;if(_0xcad024[_0xae5d('0x34')][_0xae5d('0x45')]){_0x428fc7[_0xae5d('0x46')]=[{'all':!![]}];}return db[_0xae5d('0x2f')]['findAll'](_0x428fc7);})[_0xae5d('0x29')](function(_0x266c93){_0x20896d[_0xae5d('0x47')]=_0x266c93;return _0x20896d;})[_0xae5d('0x29')](respondWithFilteredResult(_0x4b9147,_0x428fc7))['catch'](handleError(_0x4b9147,null));};exports[_0xae5d('0x48')]=function(_0x512973,_0x1f0a0c){var _0x14dbe9={'raw':!![],'where':{'id':_0x512973[_0xae5d('0x49')]['id']}},_0x5ef917={};_0x5ef917['model']=_[_0xae5d('0x4a')](db['MailTransferReport'][_0xae5d('0x30')]);_0x5ef917[_0xae5d('0x34')]=_[_0xae5d('0x4a')](_0x512973[_0xae5d('0x34')]);_0x5ef917['filters']=_[_0xae5d('0x36')](_0x5ef917[_0xae5d('0x37')],_0x5ef917[_0xae5d('0x34')]);_0x14dbe9[_0xae5d('0x39')]=_['intersection'](_0x5ef917['model'],qs[_0xae5d('0x38')](_0x512973[_0xae5d('0x34')][_0xae5d('0x38')]));_0x14dbe9[_0xae5d('0x39')]=_0x14dbe9[_0xae5d('0x39')][_0xae5d('0x3a')]?_0x14dbe9[_0xae5d('0x39')]:_0x5ef917['model'];if(_0x512973[_0xae5d('0x34')][_0xae5d('0x45')]){_0x14dbe9[_0xae5d('0x46')]=[{'all':!![]}];}_0x14dbe9=_[_0xae5d('0x42')]({},_0x14dbe9,_0x512973[_0xae5d('0x44')]);return db[_0xae5d('0x2f')][_0xae5d('0x4b')](_0x14dbe9)['then'](handleEntityNotFound(_0x1f0a0c,null))[_0xae5d('0x29')](respondWithResult(_0x1f0a0c,null))[_0xae5d('0x4c')](handleError(_0x1f0a0c,null));};exports[_0xae5d('0x4d')]=function(_0x30a298,_0x452d83){return db[_0xae5d('0x2f')][_0xae5d('0x4d')](_0x30a298[_0xae5d('0x4e')],{})[_0xae5d('0x29')](respondWithResult(_0x452d83,0xc9))[_0xae5d('0x4c')](handleError(_0x452d83,null));};exports[_0xae5d('0x4f')]=function(_0x20ec58,_0x52f8c2){if(_0x20ec58[_0xae5d('0x4e')]['id']){delete _0x20ec58[_0xae5d('0x4e')]['id'];}return db[_0xae5d('0x2f')]['find']({'where':{'id':_0x20ec58[_0xae5d('0x49')]['id']}})[_0xae5d('0x29')](handleEntityNotFound(_0x52f8c2,null))[_0xae5d('0x29')](saveUpdates(_0x20ec58[_0xae5d('0x4e')],null))[_0xae5d('0x29')](respondWithResult(_0x52f8c2,null))[_0xae5d('0x4c')](handleError(_0x52f8c2,null));};exports[_0xae5d('0x28')]=function(_0x2b67f0,_0x589116){return db[_0xae5d('0x2f')][_0xae5d('0x4b')]({'where':{'id':_0x2b67f0[_0xae5d('0x49')]['id']}})['then'](handleEntityNotFound(_0x589116,null))[_0xae5d('0x29')](removeEntity(_0x589116,null))[_0xae5d('0x4c')](handleError(_0x589116,null));};exports['describe']=function(_0x48e7e1,_0x95ebfe){return db['MailTransferReport'][_0xae5d('0x50')]()[_0xae5d('0x29')](respondWithResult(_0x95ebfe,null))[_0xae5d('0x4c')](handleError(_0x95ebfe,null));};
\ No newline at end of file
+var _0xae91=['key','model','keys','intersection','query','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','pick','filter','merge','VIRTUAL','options','includeAll','include','findAll','rows','catch','show','params','filters','find','create','body','describe','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','mustache','util','path','sox','fs-extra','lodash','squel','crypto','jsforce','desk.js','to-csv','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','api','../../config/environment','../../config/license/util','../../mysqldb','status','json','offset','undefined','count','limit','set','Content-Range','apply','reject','save','update','then','destroy','end','sendStatus','error','stack','name','send','index','map','MailTransferReport','rawAttributes','fieldName','type'];(function(_0x585a0b,_0x1583f0){var _0x5e9d47=function(_0x5b3598){while(--_0x5b3598){_0x585a0b['push'](_0x585a0b['shift']());}};_0x5e9d47(++_0x1583f0);}(_0xae91,0x1bd));var _0x1ae9=function(_0x5b644e,_0x2e5e07){_0x5b644e=_0x5b644e-0x0;var _0x49c6bf=_0xae91[_0x5b644e];return _0x49c6bf;};'use strict';var emlformat=require(_0x1ae9('0x0'));var rimraf=require(_0x1ae9('0x1'));var zipdir=require(_0x1ae9('0x2'));var jsonpatch=require(_0x1ae9('0x3'));var rp=require(_0x1ae9('0x4'));var moment=require(_0x1ae9('0x5'));var BPromise=require('bluebird');var Mustache=require(_0x1ae9('0x6'));var util=require(_0x1ae9('0x7'));var path=require(_0x1ae9('0x8'));var sox=require(_0x1ae9('0x9'));var csv=require('to-csv');var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x1ae9('0xa'));var _=require(_0x1ae9('0xb'));var squel=require(_0x1ae9('0xc'));var crypto=require(_0x1ae9('0xd'));var jsforce=require(_0x1ae9('0xe'));var deskjs=require(_0x1ae9('0xf'));var toCsv=require(_0x1ae9('0x10'));var querystring=require(_0x1ae9('0x11'));var Papa=require(_0x1ae9('0x12'));var Redis=require(_0x1ae9('0x13'));var authService=require(_0x1ae9('0x14'));var qs=require(_0x1ae9('0x15'));var as=require(_0x1ae9('0x16'));var hardwareService=require('../../config/license/hardware');var logger=require('../../config/logger')(_0x1ae9('0x17'));var utils=require('../../config/utils');var config=require(_0x1ae9('0x18'));var licenseUtil=require(_0x1ae9('0x19'));var db=require(_0x1ae9('0x1a'))['db'];function respondWithStatusCode(_0x473e3c,_0x55864a){_0x55864a=_0x55864a||0xcc;return function(_0x528e7c){if(_0x528e7c){return _0x473e3c['sendStatus'](_0x55864a);}return _0x473e3c['status'](_0x55864a)['end']();};}function respondWithResult(_0xa4a074,_0xe1e82e){_0xe1e82e=_0xe1e82e||0xc8;return function(_0x581bf4){if(_0x581bf4){return _0xa4a074[_0x1ae9('0x1b')](_0xe1e82e)[_0x1ae9('0x1c')](_0x581bf4);}};}function respondWithFilteredResult(_0x446dab,_0xee593f){return function(_0xcf3389){if(_0xcf3389){var _0x154022=typeof _0xee593f[_0x1ae9('0x1d')]==='undefined'&&typeof _0xee593f['limit']===_0x1ae9('0x1e');var _0x2d396c=_0xcf3389[_0x1ae9('0x1f')];var _0x5115d3=_0x154022?0x0:_0xee593f[_0x1ae9('0x1d')];var _0x50d03e=_0x154022?_0xcf3389[_0x1ae9('0x1f')]:_0xee593f[_0x1ae9('0x1d')]+_0xee593f[_0x1ae9('0x20')];var _0x1302c4;if(_0x50d03e>=_0x2d396c){_0x50d03e=_0x2d396c;_0x1302c4=0xc8;}else{_0x1302c4=0xce;}_0x446dab[_0x1ae9('0x1b')](_0x1302c4);return _0x446dab[_0x1ae9('0x21')](_0x1ae9('0x22'),_0x5115d3+'-'+_0x50d03e+'/'+_0x2d396c)[_0x1ae9('0x1c')](_0xcf3389);}return null;};}function patchUpdates(_0x5845d1){return function(_0x27616d){try{jsonpatch[_0x1ae9('0x23')](_0x27616d,_0x5845d1,!![]);}catch(_0x382ce6){return BPromise[_0x1ae9('0x24')](_0x382ce6);}return _0x27616d[_0x1ae9('0x25')]();};}function saveUpdates(_0x36c641,_0x414612){return function(_0x4b2160){if(_0x4b2160){return _0x4b2160[_0x1ae9('0x26')](_0x36c641)[_0x1ae9('0x27')](function(_0x321bc){return _0x321bc;});}return null;};}function removeEntity(_0x5e5c09,_0x281985){return function(_0x55426e){if(_0x55426e){return _0x55426e[_0x1ae9('0x28')]()['then'](function(){_0x5e5c09[_0x1ae9('0x1b')](0xcc)[_0x1ae9('0x29')]();});}};}function handleEntityNotFound(_0x41de37,_0x4f63a0){return function(_0x381b8b){if(!_0x381b8b){_0x41de37[_0x1ae9('0x2a')](0x194);}return _0x381b8b;};}function handleError(_0x4936ff,_0x10c74b){_0x10c74b=_0x10c74b||0x1f4;return function(_0x6c685c){logger[_0x1ae9('0x2b')](_0x6c685c[_0x1ae9('0x2c')]);if(_0x6c685c['name']){delete _0x6c685c[_0x1ae9('0x2d')];}_0x4936ff[_0x1ae9('0x1b')](_0x10c74b)[_0x1ae9('0x2e')](_0x6c685c);};}exports[_0x1ae9('0x2f')]=function(_0x49384d,_0x39c4ff){var _0x43f1b2={},_0x3adfaf={},_0x3fb677={'count':0x0,'rows':[]};var _0x514b84=_[_0x1ae9('0x30')](db[_0x1ae9('0x31')][_0x1ae9('0x32')],function(_0x255f32){return{'name':_0x255f32[_0x1ae9('0x33')],'type':_0x255f32[_0x1ae9('0x34')][_0x1ae9('0x35')]};});_0x3adfaf[_0x1ae9('0x36')]=_[_0x1ae9('0x30')](_0x514b84,'name');_0x3adfaf['query']=_[_0x1ae9('0x37')](_0x49384d['query']);_0x3adfaf['filters']=_[_0x1ae9('0x38')](_0x3adfaf['model'],_0x3adfaf[_0x1ae9('0x39')]);_0x43f1b2[_0x1ae9('0x3a')]=_['intersection'](_0x3adfaf['model'],qs[_0x1ae9('0x3b')](_0x49384d['query']['fields']));_0x43f1b2[_0x1ae9('0x3a')]=_0x43f1b2[_0x1ae9('0x3a')][_0x1ae9('0x3c')]?_0x43f1b2[_0x1ae9('0x3a')]:_0x3adfaf[_0x1ae9('0x36')];if(!_0x49384d[_0x1ae9('0x39')][_0x1ae9('0x3d')](_0x1ae9('0x3e'))){_0x43f1b2[_0x1ae9('0x20')]=qs['limit'](_0x49384d['query']['limit']);_0x43f1b2[_0x1ae9('0x1d')]=qs[_0x1ae9('0x1d')](_0x49384d[_0x1ae9('0x39')][_0x1ae9('0x1d')]);}_0x43f1b2[_0x1ae9('0x3f')]=qs[_0x1ae9('0x40')](_0x49384d[_0x1ae9('0x39')]['sort']);_0x43f1b2[_0x1ae9('0x41')]=qs['filters'](_[_0x1ae9('0x42')](_0x49384d[_0x1ae9('0x39')],_0x3adfaf['filters']),_0x514b84);if(_0x49384d[_0x1ae9('0x39')][_0x1ae9('0x43')]){_0x43f1b2[_0x1ae9('0x41')]=_[_0x1ae9('0x44')](_0x43f1b2[_0x1ae9('0x41')],{'$or':_[_0x1ae9('0x30')](_0x514b84,function(_0x5275a7){if(_0x5275a7['type']!==_0x1ae9('0x45')){var _0xe8f9ab={};_0xe8f9ab[_0x5275a7[_0x1ae9('0x2d')]]={'$like':'%'+_0x49384d[_0x1ae9('0x39')][_0x1ae9('0x43')]+'%'};return _0xe8f9ab;}})});}_0x43f1b2=_['merge']({},_0x43f1b2,_0x49384d[_0x1ae9('0x46')]);var _0x1567c4={'where':_0x43f1b2[_0x1ae9('0x41')]};return db[_0x1ae9('0x31')]['count'](_0x1567c4)['then'](function(_0x5c1a2b){_0x3fb677[_0x1ae9('0x1f')]=_0x5c1a2b;if(_0x49384d[_0x1ae9('0x39')][_0x1ae9('0x47')]){_0x43f1b2[_0x1ae9('0x48')]=[{'all':!![]}];}return db[_0x1ae9('0x31')][_0x1ae9('0x49')](_0x43f1b2);})[_0x1ae9('0x27')](function(_0xc68276){_0x3fb677[_0x1ae9('0x4a')]=_0xc68276;return _0x3fb677;})['then'](respondWithFilteredResult(_0x39c4ff,_0x43f1b2))[_0x1ae9('0x4b')](handleError(_0x39c4ff,null));};exports[_0x1ae9('0x4c')]=function(_0x598a2f,_0x1690b5){var _0x47de87={'raw':!![],'where':{'id':_0x598a2f[_0x1ae9('0x4d')]['id']}},_0x357538={};_0x357538[_0x1ae9('0x36')]=_[_0x1ae9('0x37')](db[_0x1ae9('0x31')]['rawAttributes']);_0x357538['query']=_[_0x1ae9('0x37')](_0x598a2f[_0x1ae9('0x39')]);_0x357538[_0x1ae9('0x4e')]=_[_0x1ae9('0x38')](_0x357538[_0x1ae9('0x36')],_0x357538[_0x1ae9('0x39')]);_0x47de87[_0x1ae9('0x3a')]=_[_0x1ae9('0x38')](_0x357538[_0x1ae9('0x36')],qs[_0x1ae9('0x3b')](_0x598a2f['query'][_0x1ae9('0x3b')]));_0x47de87[_0x1ae9('0x3a')]=_0x47de87['attributes'][_0x1ae9('0x3c')]?_0x47de87[_0x1ae9('0x3a')]:_0x357538[_0x1ae9('0x36')];if(_0x598a2f[_0x1ae9('0x39')]['includeAll']){_0x47de87['include']=[{'all':!![]}];}_0x47de87=_[_0x1ae9('0x44')]({},_0x47de87,_0x598a2f[_0x1ae9('0x46')]);return db['MailTransferReport'][_0x1ae9('0x4f')](_0x47de87)['then'](handleEntityNotFound(_0x1690b5,null))['then'](respondWithResult(_0x1690b5,null))['catch'](handleError(_0x1690b5,null));};exports[_0x1ae9('0x50')]=function(_0x50e925,_0x4ac593){return db[_0x1ae9('0x31')]['create'](_0x50e925[_0x1ae9('0x51')],{})['then'](respondWithResult(_0x4ac593,0xc9))[_0x1ae9('0x4b')](handleError(_0x4ac593,null));};exports['update']=function(_0x3db8d1,_0x4222d9){if(_0x3db8d1[_0x1ae9('0x51')]['id']){delete _0x3db8d1[_0x1ae9('0x51')]['id'];}return db['MailTransferReport'][_0x1ae9('0x4f')]({'where':{'id':_0x3db8d1['params']['id']}})[_0x1ae9('0x27')](handleEntityNotFound(_0x4222d9,null))[_0x1ae9('0x27')](saveUpdates(_0x3db8d1[_0x1ae9('0x51')],null))['then'](respondWithResult(_0x4222d9,null))[_0x1ae9('0x4b')](handleError(_0x4222d9,null));};exports[_0x1ae9('0x28')]=function(_0x3e0296,_0xbf5b62){return db['MailTransferReport'][_0x1ae9('0x4f')]({'where':{'id':_0x3e0296[_0x1ae9('0x4d')]['id']}})[_0x1ae9('0x27')](handleEntityNotFound(_0xbf5b62,null))[_0x1ae9('0x27')](removeEntity(_0xbf5b62,null))['catch'](handleError(_0xbf5b62,null));};exports[_0x1ae9('0x52')]=function(_0x3f4651,_0x2e240e){return db['MailTransferReport'][_0x1ae9('0x52')]()['then'](respondWithResult(_0x2e240e,null))[_0x1ae9('0x4b')](handleError(_0x2e240e,null));};
\ No newline at end of file
index 1b3da48..e860153 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x21d1=['bluebird','rimraf','../../config/environment','./mailTransferReport.attributes','exports','define','MailTransferReport','report_mail_transfer','uniqueid','lodash','util','../../config/logger','api','moment'];(function(_0x14a0a0,_0x45d0cf){var _0x56b651=function(_0x1fae09){while(--_0x1fae09){_0x14a0a0['push'](_0x14a0a0['shift']());}};_0x56b651(++_0x45d0cf);}(_0x21d1,0x1c9));var _0x121d=function(_0x3f43da,_0x29c451){_0x3f43da=_0x3f43da-0x0;var _0x2d1aca=_0x21d1[_0x3f43da];return _0x2d1aca;};'use strict';var _=require(_0x121d('0x0'));var util=require(_0x121d('0x1'));var logger=require(_0x121d('0x2'))(_0x121d('0x3'));var moment=require(_0x121d('0x4'));var BPromise=require(_0x121d('0x5'));var rp=require('request-promise');var fs=require('fs');var path=require('path');var rimraf=require(_0x121d('0x6'));var config=require(_0x121d('0x7'));var attributes=require(_0x121d('0x8'));module[_0x121d('0x9')]=function(_0x2f3987,_0x4c47ee){return _0x2f3987[_0x121d('0xa')](_0x121d('0xb'),attributes,{'tableName':_0x121d('0xc'),'paranoid':![],'indexes':[{'name':_0x121d('0xd'),'fields':[_0x121d('0xd')]}],'timestamps':!![]});};
\ No newline at end of file
+var _0x0851=['../../config/logger','api','bluebird','request-promise','path','rimraf','../../config/environment','./mailTransferReport.attributes','exports','define','MailTransferReport','report_mail_transfer','lodash','util'];(function(_0x290694,_0x281935){var _0x5a0f2e=function(_0x58d7d4){while(--_0x58d7d4){_0x290694['push'](_0x290694['shift']());}};_0x5a0f2e(++_0x281935);}(_0x0851,0x8a));var _0x1085=function(_0x5a8323,_0x172f3f){_0x5a8323=_0x5a8323-0x0;var _0xbd7886=_0x0851[_0x5a8323];return _0xbd7886;};'use strict';var _=require(_0x1085('0x0'));var util=require(_0x1085('0x1'));var logger=require(_0x1085('0x2'))(_0x1085('0x3'));var moment=require('moment');var BPromise=require(_0x1085('0x4'));var rp=require(_0x1085('0x5'));var fs=require('fs');var path=require(_0x1085('0x6'));var rimraf=require(_0x1085('0x7'));var config=require(_0x1085('0x8'));var attributes=require(_0x1085('0x9'));module[_0x1085('0xa')]=function(_0x1c9e36,_0x152eeb){return _0x1c9e36[_0x1085('0xb')](_0x1085('0xc'),attributes,{'tableName':_0x1085('0xd'),'paranoid':![],'indexes':[{'name':'uniqueid','fields':['uniqueid']}],'timestamps':!![]});};
\ No newline at end of file
index 9018145..38d4c7a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xbf4a=['lodash','moment','bluebird','randomstring','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','request','then','info','MailTransferReport,\x20%s,\x20%s','request\x20sent','MailTransferReport,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch'];(function(_0x8261bb,_0x48e718){var _0x530867=function(_0x4b2b4e){while(--_0x4b2b4e){_0x8261bb['push'](_0x8261bb['shift']());}};_0x530867(++_0x48e718);}(_0xbf4a,0x1e3));var _0xabf4=function(_0x273694,_0x4586c8){_0x273694=_0x273694-0x0;var _0x777503=_0xbf4a[_0x273694];return _0x777503;};'use strict';var _=require(_0xabf4('0x0'));var util=require('util');var moment=require(_0xabf4('0x1'));var BPromise=require(_0xabf4('0x2'));var rs=require(_0xabf4('0x3'));var fs=require('fs');var Redis=require('ioredis');var db=require('../../mysqldb')['db'];var utils=require(_0xabf4('0x4'));var logger=require(_0xabf4('0x5'))(_0xabf4('0x6'));var config=require(_0xabf4('0x7'));var jayson=require(_0xabf4('0x8'));var client=jayson[_0xabf4('0x9')][_0xabf4('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x56c2b4,_0x942587,_0x2615e3){return new BPromise(function(_0x2bc1cc,_0x43c471){return client[_0xabf4('0xb')](_0x56c2b4,_0x2615e3)[_0xabf4('0xc')](function(_0x57eca2){logger[_0xabf4('0xd')](_0xabf4('0xe'),_0x942587,_0xabf4('0xf'));logger['debug'](_0xabf4('0x10'),_0x942587,_0xabf4('0xf'),JSON[_0xabf4('0x11')](_0x57eca2));if(_0x57eca2['error']){if(_0x57eca2[_0xabf4('0x12')][_0xabf4('0x13')]===0x1f4){logger[_0xabf4('0x12')]('MailTransferReport,\x20%s,\x20%s',_0x942587,_0x57eca2['error'][_0xabf4('0x14')]);return _0x43c471(_0x57eca2[_0xabf4('0x12')]['message']);}logger['error'](_0xabf4('0xe'),_0x942587,_0x57eca2['error'][_0xabf4('0x14')]);return _0x2bc1cc(_0x57eca2['error'][_0xabf4('0x14')]);}else{logger[_0xabf4('0xd')](_0xabf4('0xe'),_0x942587,_0xabf4('0xf'));_0x2bc1cc(_0x57eca2[_0xabf4('0x15')]['message']);}})[_0xabf4('0x16')](function(_0x5942c9){logger[_0xabf4('0x12')](_0xabf4('0xe'),_0x942587,_0x5942c9);_0x43c471(_0x5942c9);});});}
\ No newline at end of file
+var _0x73b1=['code','error','message','result','catch','lodash','util','moment','bluebird','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','http','request','then','info','MailTransferReport,\x20%s,\x20%s','debug','MailTransferReport,\x20%s,\x20%s,\x20%s','request\x20sent'];(function(_0x2fb356,_0x567092){var _0x27fb4b=function(_0x11c996){while(--_0x11c996){_0x2fb356['push'](_0x2fb356['shift']());}};_0x27fb4b(++_0x567092);}(_0x73b1,0x13d));var _0x173b=function(_0x1576c5,_0x3fe275){_0x1576c5=_0x1576c5-0x0;var _0xdeacb7=_0x73b1[_0x1576c5];return _0xdeacb7;};'use strict';var _=require(_0x173b('0x0'));var util=require(_0x173b('0x1'));var moment=require(_0x173b('0x2'));var BPromise=require(_0x173b('0x3'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x173b('0x4'));var db=require(_0x173b('0x5'))['db'];var utils=require(_0x173b('0x6'));var logger=require(_0x173b('0x7'))(_0x173b('0x8'));var config=require(_0x173b('0x9'));var jayson=require(_0x173b('0xa'));var client=jayson['client'][_0x173b('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x3afd8a,_0x360fb5,_0x171fcf){return new BPromise(function(_0x44ba03,_0xea9f12){return client[_0x173b('0xc')](_0x3afd8a,_0x171fcf)[_0x173b('0xd')](function(_0x581947){logger[_0x173b('0xe')](_0x173b('0xf'),_0x360fb5,'request\x20sent');logger[_0x173b('0x10')](_0x173b('0x11'),_0x360fb5,_0x173b('0x12'),JSON['stringify'](_0x581947));if(_0x581947['error']){if(_0x581947['error'][_0x173b('0x13')]===0x1f4){logger[_0x173b('0x14')](_0x173b('0xf'),_0x360fb5,_0x581947[_0x173b('0x14')][_0x173b('0x15')]);return _0xea9f12(_0x581947[_0x173b('0x14')][_0x173b('0x15')]);}logger[_0x173b('0x14')]('MailTransferReport,\x20%s,\x20%s',_0x360fb5,_0x581947[_0x173b('0x14')][_0x173b('0x15')]);return _0x44ba03(_0x581947[_0x173b('0x14')][_0x173b('0x15')]);}else{logger['info'](_0x173b('0xf'),_0x360fb5,_0x173b('0x12'));_0x44ba03(_0x581947[_0x173b('0x16')][_0x173b('0x15')]);}})[_0x173b('0x17')](function(_0x276b46){logger['error'](_0x173b('0xf'),_0x360fb5,_0x276b46);_0xea9f12(_0x276b46);});});}
\ No newline at end of file
index 014853c..1cb0b51 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6f46=['connect-timeout','fs-extra','../../components/auth/service','../../config/environment','./memberReport.controller','get','index','/describe','isAuthenticated','describe','/:id','post','create','put','update','destroy','exports','multer','util','path'];(function(_0x39fa07,_0x498f25){var _0x4bed53=function(_0x95fa3){while(--_0x95fa3){_0x39fa07['push'](_0x39fa07['shift']());}};_0x4bed53(++_0x498f25);}(_0x6f46,0x1f1));var _0x66f4=function(_0x29cce4,_0x379f7c){_0x29cce4=_0x29cce4-0x0;var _0x1a6616=_0x6f46[_0x29cce4];return _0x1a6616;};'use strict';var multer=require(_0x66f4('0x0'));var util=require(_0x66f4('0x1'));var path=require(_0x66f4('0x2'));var timeout=require(_0x66f4('0x3'));var express=require('express');var router=express['Router']();var fs_extra=require(_0x66f4('0x4'));var auth=require(_0x66f4('0x5'));var interaction=require('../../components/interaction/service');var config=require(_0x66f4('0x6'));var controller=require(_0x66f4('0x7'));router[_0x66f4('0x8')]('/',auth['isAuthenticated'](),controller[_0x66f4('0x9')]);router[_0x66f4('0x8')](_0x66f4('0xa'),auth[_0x66f4('0xb')](),controller[_0x66f4('0xc')]);router[_0x66f4('0x8')](_0x66f4('0xd'),auth[_0x66f4('0xb')](),controller['show']);router[_0x66f4('0xe')]('/',auth[_0x66f4('0xb')](),controller[_0x66f4('0xf')]);router[_0x66f4('0x10')](_0x66f4('0xd'),auth[_0x66f4('0xb')](),controller[_0x66f4('0x11')]);router['delete'](_0x66f4('0xd'),auth[_0x66f4('0xb')](),controller[_0x66f4('0x12')]);module[_0x66f4('0x13')]=router;
\ No newline at end of file
+var _0xb408=['express','fs-extra','../../components/auth/service','../../config/environment','./memberReport.controller','get','index','isAuthenticated','show','post','put','update','delete','multer','util','connect-timeout'];(function(_0x14fde4,_0x379908){var _0x3c2852=function(_0x58543e){while(--_0x58543e){_0x14fde4['push'](_0x14fde4['shift']());}};_0x3c2852(++_0x379908);}(_0xb408,0x9d));var _0x8b40=function(_0xf19b15,_0x4f36ca){_0xf19b15=_0xf19b15-0x0;var _0x112420=_0xb408[_0xf19b15];return _0x112420;};'use strict';var multer=require(_0x8b40('0x0'));var util=require(_0x8b40('0x1'));var path=require('path');var timeout=require(_0x8b40('0x2'));var express=require(_0x8b40('0x3'));var router=express['Router']();var fs_extra=require(_0x8b40('0x4'));var auth=require(_0x8b40('0x5'));var interaction=require('../../components/interaction/service');var config=require(_0x8b40('0x6'));var controller=require(_0x8b40('0x7'));router[_0x8b40('0x8')]('/',auth['isAuthenticated'](),controller[_0x8b40('0x9')]);router['get']('/describe',auth[_0x8b40('0xa')](),controller['describe']);router[_0x8b40('0x8')]('/:id',auth[_0x8b40('0xa')](),controller[_0x8b40('0xb')]);router[_0x8b40('0xc')]('/',auth[_0x8b40('0xa')](),controller['create']);router[_0x8b40('0xd')]('/:id',auth[_0x8b40('0xa')](),controller[_0x8b40('0xe')]);router[_0x8b40('0xf')]('/:id',auth[_0x8b40('0xa')](),controller['destroy']);module['exports']=router;
\ No newline at end of file
index a8f27d2..92ca2f8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc99a=['exitAt','duration','talk:[inbound,\x20outbound],\x20pause:[reason]','talk:[destination]','talk:[queue]','sequelize','moment','exports','STRING','DEFAULT\x20PAUSE','LOGIN,\x20PAUSE,\x20TALKING','INTEGER','DATE','getDataValue','enterAt','diff','setDataValue'];(function(_0x4fb940,_0x179817){var _0x549fba=function(_0x154788){while(--_0x154788){_0x4fb940['push'](_0x4fb940['shift']());}};_0x549fba(++_0x179817);}(_0xc99a,0x7c));var _0xac99=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0xc99a[_0x3dd15e];return _0x231fd0;};'use strict';var Sequelize=require(_0xac99('0x0'));var moment=require(_0xac99('0x1'));module[_0xac99('0x2')]={'channel':{'type':Sequelize[_0xac99('0x3')]},'membername':{'type':Sequelize[_0xac99('0x3')]},'interface':{'type':Sequelize[_0xac99('0x3')]},'type':{'type':Sequelize['STRING'],'defaultValue':_0xac99('0x4'),'comment':_0xac99('0x5')},'duration':{'type':Sequelize[_0xac99('0x6')]},'enterAt':{'type':Sequelize[_0xac99('0x7')]},'exitAt':{'type':Sequelize[_0xac99('0x7')],'set':function(_0x44294b){var _0x1a9116=moment(_0x44294b);var _0x4594ec=moment(this[_0xac99('0x8')](_0xac99('0x9')));var _0x458f0b=_0x1a9116[_0xac99('0xa')](_0x4594ec,'seconds');this[_0xac99('0xb')](_0xac99('0xc'),_0x44294b);this['setDataValue'](_0xac99('0xd'),_0x458f0b||null);}},'data1':{'type':Sequelize[_0xac99('0x3')],'comment':_0xac99('0xe')},'data2':{'type':Sequelize[_0xac99('0x3')],'comment':'talk:[start]'},'data3':{'type':Sequelize[_0xac99('0x3')],'comment':_0xac99('0xf')},'data4':{'type':Sequelize['STRING'],'comment':'talk:[dial\x20string]'},'data5':{'type':Sequelize['STRING'],'comment':_0xac99('0x10')},'role':{'type':Sequelize['STRING']},'internal':{'type':Sequelize[_0xac99('0x6')]},'uniqueid':{'type':Sequelize[_0xac99('0x3')]}};
\ No newline at end of file
+var _0x2821=['talk:[dial\x20string]','talk:[queue]','sequelize','moment','exports','STRING','DEFAULT\x20PAUSE','LOGIN,\x20PAUSE,\x20TALKING','INTEGER','DATE','getDataValue','enterAt','diff','seconds','exitAt','setDataValue','duration','talk:[inbound,\x20outbound],\x20pause:[reason]','talk:[start]'];(function(_0x3947b1,_0x1b2450){var _0x48866e=function(_0xc929f9){while(--_0xc929f9){_0x3947b1['push'](_0x3947b1['shift']());}};_0x48866e(++_0x1b2450);}(_0x2821,0x87));var _0x1282=function(_0xe7587e,_0x405ae7){_0xe7587e=_0xe7587e-0x0;var _0x1710e5=_0x2821[_0xe7587e];return _0x1710e5;};'use strict';var Sequelize=require(_0x1282('0x0'));var moment=require(_0x1282('0x1'));module[_0x1282('0x2')]={'channel':{'type':Sequelize[_0x1282('0x3')]},'membername':{'type':Sequelize[_0x1282('0x3')]},'interface':{'type':Sequelize[_0x1282('0x3')]},'type':{'type':Sequelize[_0x1282('0x3')],'defaultValue':_0x1282('0x4'),'comment':_0x1282('0x5')},'duration':{'type':Sequelize[_0x1282('0x6')]},'enterAt':{'type':Sequelize[_0x1282('0x7')]},'exitAt':{'type':Sequelize['DATE'],'set':function(_0x31e0cf){var _0x1843f2=moment(_0x31e0cf);var _0x293947=moment(this[_0x1282('0x8')](_0x1282('0x9')));var _0x1a8666=_0x1843f2[_0x1282('0xa')](_0x293947,_0x1282('0xb'));this['setDataValue'](_0x1282('0xc'),_0x31e0cf);this[_0x1282('0xd')](_0x1282('0xe'),_0x1a8666||null);}},'data1':{'type':Sequelize[_0x1282('0x3')],'comment':_0x1282('0xf')},'data2':{'type':Sequelize['STRING'],'comment':_0x1282('0x10')},'data3':{'type':Sequelize[_0x1282('0x3')],'comment':'talk:[destination]'},'data4':{'type':Sequelize[_0x1282('0x3')],'comment':_0x1282('0x11')},'data5':{'type':Sequelize['STRING'],'comment':_0x1282('0x12')},'role':{'type':Sequelize['STRING']},'internal':{'type':Sequelize['INTEGER']},'uniqueid':{'type':Sequelize[_0x1282('0x3')]}};
\ No newline at end of file
index ecd97cd..571ba26 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xedd9=['keys','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','pick','filter','merge','VIRTUAL','options','includeAll','include','findAll','catch','params','find','create','body','update','destroy','describe','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','sox','to-csv','ejs','fs-extra','squel','jsforce','desk.js','querystring','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','api','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','json','offset','undefined','limit','count','set','apply','then','end','error','stack','send','index','map','MemberReport','rawAttributes','fieldName','type','key','model','name','query'];(function(_0x9df060,_0x253d33){var _0x338dfe=function(_0x17d9a5){while(--_0x17d9a5){_0x9df060['push'](_0x9df060['shift']());}};_0x338dfe(++_0x253d33);}(_0xedd9,0xfc));var _0x9edd=function(_0x33dd95,_0x318dd1){_0x33dd95=_0x33dd95-0x0;var _0x2f6fe7=_0xedd9[_0x33dd95];return _0x2f6fe7;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x9edd('0x0'));var zipdir=require(_0x9edd('0x1'));var jsonpatch=require(_0x9edd('0x2'));var rp=require(_0x9edd('0x3'));var moment=require(_0x9edd('0x4'));var BPromise=require(_0x9edd('0x5'));var Mustache=require(_0x9edd('0x6'));var util=require(_0x9edd('0x7'));var path=require('path');var sox=require(_0x9edd('0x8'));var csv=require(_0x9edd('0x9'));var ejs=require(_0x9edd('0xa'));var fs=require('fs');var fs_extra=require(_0x9edd('0xb'));var _=require('lodash');var squel=require(_0x9edd('0xc'));var crypto=require('crypto');var jsforce=require(_0x9edd('0xd'));var deskjs=require(_0x9edd('0xe'));var toCsv=require(_0x9edd('0x9'));var querystring=require(_0x9edd('0xf'));var Papa=require('papaparse');var Redis=require(_0x9edd('0x10'));var authService=require('../../components/auth/service');var qs=require(_0x9edd('0x11'));var as=require(_0x9edd('0x12'));var hardwareService=require('../../config/license/hardware');var logger=require(_0x9edd('0x13'))(_0x9edd('0x14'));var utils=require('../../config/utils');var config=require(_0x9edd('0x15'));var licenseUtil=require(_0x9edd('0x16'));var db=require(_0x9edd('0x17'))['db'];function respondWithStatusCode(_0xfd544a,_0x287ddd){_0x287ddd=_0x287ddd||0xcc;return function(_0x3a7b84){if(_0x3a7b84){return _0xfd544a[_0x9edd('0x18')](_0x287ddd);}return _0xfd544a[_0x9edd('0x19')](_0x287ddd)['end']();};}function respondWithResult(_0x176bfa,_0x44fc7c){_0x44fc7c=_0x44fc7c||0xc8;return function(_0x891832){if(_0x891832){return _0x176bfa[_0x9edd('0x19')](_0x44fc7c)[_0x9edd('0x1a')](_0x891832);}};}function respondWithFilteredResult(_0x338f3c,_0x1042aa){return function(_0x75a4ab){if(_0x75a4ab){var _0x4ea60f=typeof _0x1042aa[_0x9edd('0x1b')]===_0x9edd('0x1c')&&typeof _0x1042aa[_0x9edd('0x1d')]==='undefined';var _0x1b54c0=_0x75a4ab[_0x9edd('0x1e')];var _0x40ba32=_0x4ea60f?0x0:_0x1042aa['offset'];var _0x43dc70=_0x4ea60f?_0x75a4ab['count']:_0x1042aa[_0x9edd('0x1b')]+_0x1042aa[_0x9edd('0x1d')];var _0x4bdb88;if(_0x43dc70>=_0x1b54c0){_0x43dc70=_0x1b54c0;_0x4bdb88=0xc8;}else{_0x4bdb88=0xce;}_0x338f3c['status'](_0x4bdb88);return _0x338f3c[_0x9edd('0x1f')]('Content-Range',_0x40ba32+'-'+_0x43dc70+'/'+_0x1b54c0)[_0x9edd('0x1a')](_0x75a4ab);}return null;};}function patchUpdates(_0x54a03f){return function(_0x535f37){try{jsonpatch[_0x9edd('0x20')](_0x535f37,_0x54a03f,!![]);}catch(_0x1c46a8){return BPromise['reject'](_0x1c46a8);}return _0x535f37['save']();};}function saveUpdates(_0x341d67,_0x186186){return function(_0x477878){if(_0x477878){return _0x477878['update'](_0x341d67)[_0x9edd('0x21')](function(_0x1dca43){return _0x1dca43;});}return null;};}function removeEntity(_0x44a6c1,_0x2ca65f){return function(_0x339a0d){if(_0x339a0d){return _0x339a0d['destroy']()[_0x9edd('0x21')](function(){_0x44a6c1[_0x9edd('0x19')](0xcc)[_0x9edd('0x22')]();});}};}function handleEntityNotFound(_0x2f9f86,_0x310a4d){return function(_0x4d507f){if(!_0x4d507f){_0x2f9f86['sendStatus'](0x194);}return _0x4d507f;};}function handleError(_0x3276ee,_0xfeca7b){_0xfeca7b=_0xfeca7b||0x1f4;return function(_0x8d67aa){logger[_0x9edd('0x23')](_0x8d67aa[_0x9edd('0x24')]);if(_0x8d67aa['name']){delete _0x8d67aa['name'];}_0x3276ee[_0x9edd('0x19')](_0xfeca7b)[_0x9edd('0x25')](_0x8d67aa);};}exports[_0x9edd('0x26')]=function(_0x52746a,_0x238b22){var _0x28cfae={},_0x2ae8dd={},_0x41af53={'count':0x0,'rows':[]};var _0x5eccfb=_[_0x9edd('0x27')](db[_0x9edd('0x28')][_0x9edd('0x29')],function(_0x12c1bc){return{'name':_0x12c1bc[_0x9edd('0x2a')],'type':_0x12c1bc[_0x9edd('0x2b')][_0x9edd('0x2c')]};});_0x2ae8dd[_0x9edd('0x2d')]=_[_0x9edd('0x27')](_0x5eccfb,_0x9edd('0x2e'));_0x2ae8dd[_0x9edd('0x2f')]=_[_0x9edd('0x30')](_0x52746a[_0x9edd('0x2f')]);_0x2ae8dd[_0x9edd('0x31')]=_[_0x9edd('0x32')](_0x2ae8dd['model'],_0x2ae8dd[_0x9edd('0x2f')]);_0x28cfae[_0x9edd('0x33')]=_[_0x9edd('0x32')](_0x2ae8dd['model'],qs[_0x9edd('0x34')](_0x52746a[_0x9edd('0x2f')][_0x9edd('0x34')]));_0x28cfae[_0x9edd('0x33')]=_0x28cfae[_0x9edd('0x33')][_0x9edd('0x35')]?_0x28cfae[_0x9edd('0x33')]:_0x2ae8dd[_0x9edd('0x2d')];if(!_0x52746a[_0x9edd('0x2f')][_0x9edd('0x36')](_0x9edd('0x37'))){_0x28cfae[_0x9edd('0x1d')]=qs[_0x9edd('0x1d')](_0x52746a[_0x9edd('0x2f')]['limit']);_0x28cfae[_0x9edd('0x1b')]=qs['offset'](_0x52746a[_0x9edd('0x2f')][_0x9edd('0x1b')]);}_0x28cfae[_0x9edd('0x38')]=qs[_0x9edd('0x39')](_0x52746a[_0x9edd('0x2f')]['sort']);_0x28cfae[_0x9edd('0x3a')]=qs[_0x9edd('0x31')](_[_0x9edd('0x3b')](_0x52746a[_0x9edd('0x2f')],_0x2ae8dd[_0x9edd('0x31')]),_0x5eccfb);if(_0x52746a[_0x9edd('0x2f')][_0x9edd('0x3c')]){_0x28cfae[_0x9edd('0x3a')]=_[_0x9edd('0x3d')](_0x28cfae[_0x9edd('0x3a')],{'$or':_['map'](_0x5eccfb,function(_0x231604){if(_0x231604['type']!==_0x9edd('0x3e')){var _0x5658d6={};_0x5658d6[_0x231604[_0x9edd('0x2e')]]={'$like':'%'+_0x52746a[_0x9edd('0x2f')][_0x9edd('0x3c')]+'%'};return _0x5658d6;}})});}_0x28cfae=_['merge']({},_0x28cfae,_0x52746a[_0x9edd('0x3f')]);var _0xcbd0ef={'where':_0x28cfae[_0x9edd('0x3a')]};return db['MemberReport'][_0x9edd('0x1e')](_0xcbd0ef)['then'](function(_0x1fc4fb){_0x41af53[_0x9edd('0x1e')]=_0x1fc4fb;if(_0x52746a['query'][_0x9edd('0x40')]){_0x28cfae[_0x9edd('0x41')]=[{'all':!![]}];}return db[_0x9edd('0x28')][_0x9edd('0x42')](_0x28cfae);})['then'](function(_0x449f01){_0x41af53['rows']=_0x449f01;return _0x41af53;})[_0x9edd('0x21')](respondWithFilteredResult(_0x238b22,_0x28cfae))[_0x9edd('0x43')](handleError(_0x238b22,null));};exports['show']=function(_0x318757,_0x49a128){var _0x548299={'raw':!![],'where':{'id':_0x318757[_0x9edd('0x44')]['id']}},_0x369b69={};_0x369b69[_0x9edd('0x2d')]=_[_0x9edd('0x30')](db[_0x9edd('0x28')][_0x9edd('0x29')]);_0x369b69[_0x9edd('0x2f')]=_[_0x9edd('0x30')](_0x318757[_0x9edd('0x2f')]);_0x369b69[_0x9edd('0x31')]=_[_0x9edd('0x32')](_0x369b69[_0x9edd('0x2d')],_0x369b69[_0x9edd('0x2f')]);_0x548299[_0x9edd('0x33')]=_[_0x9edd('0x32')](_0x369b69['model'],qs[_0x9edd('0x34')](_0x318757[_0x9edd('0x2f')][_0x9edd('0x34')]));_0x548299[_0x9edd('0x33')]=_0x548299[_0x9edd('0x33')][_0x9edd('0x35')]?_0x548299[_0x9edd('0x33')]:_0x369b69['model'];if(_0x318757['query']['includeAll']){_0x548299[_0x9edd('0x41')]=[{'all':!![]}];}_0x548299=_['merge']({},_0x548299,_0x318757[_0x9edd('0x3f')]);return db[_0x9edd('0x28')][_0x9edd('0x45')](_0x548299)[_0x9edd('0x21')](handleEntityNotFound(_0x49a128,null))[_0x9edd('0x21')](respondWithResult(_0x49a128,null))['catch'](handleError(_0x49a128,null));};exports[_0x9edd('0x46')]=function(_0x35e63c,_0x40e33d){return db['MemberReport'][_0x9edd('0x46')](_0x35e63c[_0x9edd('0x47')],{})[_0x9edd('0x21')](respondWithResult(_0x40e33d,0xc9))[_0x9edd('0x43')](handleError(_0x40e33d,null));};exports[_0x9edd('0x48')]=function(_0x35bdec,_0x4d4f33){if(_0x35bdec[_0x9edd('0x47')]['id']){delete _0x35bdec[_0x9edd('0x47')]['id'];}return db['MemberReport'][_0x9edd('0x45')]({'where':{'id':_0x35bdec[_0x9edd('0x44')]['id']}})['then'](handleEntityNotFound(_0x4d4f33,null))[_0x9edd('0x21')](saveUpdates(_0x35bdec[_0x9edd('0x47')],null))[_0x9edd('0x21')](respondWithResult(_0x4d4f33,null))['catch'](handleError(_0x4d4f33,null));};exports[_0x9edd('0x49')]=function(_0x151157,_0x317a60){return db[_0x9edd('0x28')]['find']({'where':{'id':_0x151157[_0x9edd('0x44')]['id']}})[_0x9edd('0x21')](handleEntityNotFound(_0x317a60,null))[_0x9edd('0x21')](removeEntity(_0x317a60,null))['catch'](handleError(_0x317a60,null));};exports[_0x9edd('0x4a')]=function(_0x21f6ce,_0x57db43){return db[_0x9edd('0x28')]['describe']()[_0x9edd('0x21')](respondWithResult(_0x57db43,null))[_0x9edd('0x43')](handleError(_0x57db43,null));};
\ No newline at end of file
+var _0x9957=['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','index','fieldName','type','key','model','map','keys','filters','intersection','query','attributes','fields','length','hasOwnProperty','nolimit','sort','where','filter','merge','VIRTUAL','options','MemberReport','findAll','rows','show','rawAttributes','includeAll','include','find','create','catch','body','params','describe','eml-format','rimraf','zip-dir','fast-json-patch','moment','bluebird','mustache'];(function(_0x41cdde,_0x4bd78c){var _0x2dec1e=function(_0xc4e978){while(--_0xc4e978){_0x41cdde['push'](_0x41cdde['shift']());}};_0x2dec1e(++_0x4bd78c);}(_0x9957,0x93));var _0x7995=function(_0x3b380d,_0x4bf247){_0x3b380d=_0x3b380d-0x0;var _0x54502b=_0x9957[_0x3b380d];return _0x54502b;};'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['MemberReport']['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['MemberReport'][_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['MemberReport'][_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('0x40')][_0x7995('0x47')]({'where':{'id':_0x4ffc8a['params']['id']}})['then'](handleEntityNotFound(_0x19da63,null))['then'](removeEntity(_0x19da63,null))[_0x7995('0x49')](handleError(_0x19da63,null));};exports[_0x7995('0x4c')]=function(_0x4cf5db,_0x1cd85){return db[_0x7995('0x40')][_0x7995('0x4c')]()[_0x7995('0x26')](respondWithResult(_0x1cd85,null))[_0x7995('0x49')](handleError(_0x1cd85,null));};
\ No newline at end of file
index 805bee6..e3e0f90 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1db9=['moment','bluebird','path','rimraf','exports','define','MemberReport','report_member','membername_interface','membername','lodash','util','../../config/logger','api'];(function(_0x74ec8f,_0x27beef){var _0x1bae05=function(_0x10e930){while(--_0x10e930){_0x74ec8f['push'](_0x74ec8f['shift']());}};_0x1bae05(++_0x27beef);}(_0x1db9,0x176));var _0x91db=function(_0x4e2f3f,_0x4c0739){_0x4e2f3f=_0x4e2f3f-0x0;var _0x59944b=_0x1db9[_0x4e2f3f];return _0x59944b;};'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('./memberReport.attributes');module[_0x91db('0x8')]=function(_0x4b3f5c,_0x5e69d9){return _0x4b3f5c[_0x91db('0x9')](_0x91db('0xa'),attributes,{'tableName':_0x91db('0xb'),'paranoid':![],'indexes':[{'name':_0x91db('0xc'),'fields':[_0x91db('0xd'),'interface']}],'timestamps':!![]});};
\ No newline at end of file
+var _0xa99d=['membername_interface','membername','interface','lodash','util','../../config/logger','api','bluebird','request-promise','path','rimraf','../../config/environment','./memberReport.attributes','exports','define','report_member'];(function(_0x5447fd,_0x52a6b5){var _0x15b28a=function(_0x370d4f){while(--_0x370d4f){_0x5447fd['push'](_0x5447fd['shift']());}};_0x15b28a(++_0x52a6b5);}(_0xa99d,0xb3));var _0xda99=function(_0x39780c,_0x5782c9){_0x39780c=_0x39780c-0x0;var _0x53c19b=_0xa99d[_0x39780c];return _0x53c19b;};'use strict';var _=require(_0xda99('0x0'));var util=require(_0xda99('0x1'));var logger=require(_0xda99('0x2'))(_0xda99('0x3'));var moment=require('moment');var BPromise=require(_0xda99('0x4'));var rp=require(_0xda99('0x5'));var fs=require('fs');var path=require(_0xda99('0x6'));var rimraf=require(_0xda99('0x7'));var config=require(_0xda99('0x8'));var attributes=require(_0xda99('0x9'));module[_0xda99('0xa')]=function(_0x417bc8,_0x5f1a30){return _0x417bc8[_0xda99('0xb')]('MemberReport',attributes,{'tableName':_0xda99('0xc'),'paranoid':![],'indexes':[{'name':_0xda99('0xd'),'fields':[_0xda99('0xe'),_0xda99('0xf')]}],'timestamps':!![]});};
\ No newline at end of file
index 0a49157..69b2689 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6075=['map','model','debug','CreateMemberReport','create','raw','stringify','UpdateMemberReport','update','body','catch','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','jayson/promise','client','http','request','then','info','MemberReport,\x20%s,\x20%s','request\x20sent','MemberReport,\x20%s,\x20%s,\x20%s','error','code','message','GetMemberReport','findAll','options','where','attributes','limit','include'];(function(_0x4efc87,_0x17a7d1){var _0x191fc4=function(_0x19dda1){while(--_0x19dda1){_0x4efc87['push'](_0x4efc87['shift']());}};_0x191fc4(++_0x17a7d1);}(_0x6075,0x191));var _0x5607=function(_0x2eec20,_0x28afd1){_0x2eec20=_0x2eec20-0x0;var _0x5d87ff=_0x6075[_0x2eec20];return _0x5d87ff;};'use strict';var _=require('lodash');var util=require(_0x5607('0x0'));var moment=require(_0x5607('0x1'));var BPromise=require(_0x5607('0x2'));var rs=require(_0x5607('0x3'));var fs=require('fs');var Redis=require(_0x5607('0x4'));var db=require(_0x5607('0x5'))['db'];var utils=require(_0x5607('0x6'));var logger=require(_0x5607('0x7'))(_0x5607('0x8'));var config=require('../../config/environment');var jayson=require(_0x5607('0x9'));var client=jayson[_0x5607('0xa')][_0x5607('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x5ab18d,_0x53f825,_0x3dc860){return new BPromise(function(_0x25107d,_0x24d9da){return client[_0x5607('0xc')](_0x5ab18d,_0x3dc860)[_0x5607('0xd')](function(_0x4f61bf){logger[_0x5607('0xe')](_0x5607('0xf'),_0x53f825,_0x5607('0x10'));logger['debug'](_0x5607('0x11'),_0x53f825,'request\x20sent',JSON['stringify'](_0x4f61bf));if(_0x4f61bf[_0x5607('0x12')]){if(_0x4f61bf[_0x5607('0x12')][_0x5607('0x13')]===0x1f4){logger['error'](_0x5607('0xf'),_0x53f825,_0x4f61bf[_0x5607('0x12')][_0x5607('0x14')]);return _0x24d9da(_0x4f61bf[_0x5607('0x12')][_0x5607('0x14')]);}logger[_0x5607('0x12')](_0x5607('0xf'),_0x53f825,_0x4f61bf[_0x5607('0x12')][_0x5607('0x14')]);return _0x25107d(_0x4f61bf['error'][_0x5607('0x14')]);}else{logger[_0x5607('0xe')](_0x5607('0xf'),_0x53f825,'request\x20sent');_0x25107d(_0x4f61bf['result'][_0x5607('0x14')]);}})['catch'](function(_0x38ab1c){logger[_0x5607('0x12')](_0x5607('0xf'),_0x53f825,_0x38ab1c);_0x24d9da(_0x38ab1c);});});}exports[_0x5607('0x15')]=function(_0x3eaaa0){var _0x16a8d9=this;return new Promise(function(_0x55689e,_0x40b0ee){return db['MemberReport'][_0x5607('0x16')]({'raw':_0x3eaaa0[_0x5607('0x17')]?_0x3eaaa0[_0x5607('0x17')]['raw']===undefined?!![]:![]:!![],'where':_0x3eaaa0[_0x5607('0x17')]?_0x3eaaa0[_0x5607('0x17')][_0x5607('0x18')]||null:null,'attributes':_0x3eaaa0['options']?_0x3eaaa0[_0x5607('0x17')][_0x5607('0x19')]||null:null,'limit':_0x3eaaa0[_0x5607('0x17')]?_0x3eaaa0['options'][_0x5607('0x1a')]||null:null,'include':_0x3eaaa0['options']?_0x3eaaa0['options'][_0x5607('0x1b')]?_[_0x5607('0x1c')](_0x3eaaa0[_0x5607('0x17')][_0x5607('0x1b')],function(_0x351c32){return{'model':db[_0x351c32[_0x5607('0x1d')]],'as':_0x351c32['as'],'attributes':_0x351c32[_0x5607('0x19')],'include':_0x351c32[_0x5607('0x1b')]?_[_0x5607('0x1c')](_0x351c32[_0x5607('0x1b')],function(_0x593df7){return{'model':db[_0x593df7[_0x5607('0x1d')]],'as':_0x593df7['as'],'attributes':_0x593df7[_0x5607('0x19')],'include':_0x593df7['include']?_[_0x5607('0x1c')](_0x593df7[_0x5607('0x1b')],function(_0xdb07c8){return{'model':db[_0xdb07c8[_0x5607('0x1d')]],'as':_0xdb07c8['as'],'attributes':_0xdb07c8[_0x5607('0x19')]};}):[]};}):[]};}):[]:[]})[_0x5607('0xd')](function(_0x4a9e32){logger[_0x5607('0xe')]('GetMemberReport',_0x3eaaa0);logger[_0x5607('0x1e')](_0x5607('0x15'),_0x3eaaa0,JSON['stringify'](_0x4a9e32));_0x55689e(_0x4a9e32);})['catch'](function(_0x12f58f){logger[_0x5607('0x12')](_0x5607('0x15'),_0x12f58f[_0x5607('0x14')],_0x3eaaa0);_0x40b0ee(_0x16a8d9[_0x5607('0x12')](0x1f4,_0x12f58f['message']));});});};exports[_0x5607('0x1f')]=function(_0x4bc522){var _0xd6c90a=this;return new Promise(function(_0x15a1a2,_0x2c90e3){return db['MemberReport'][_0x5607('0x20')](_0x4bc522['body'],{'raw':_0x4bc522[_0x5607('0x17')]?_0x4bc522[_0x5607('0x17')][_0x5607('0x21')]===undefined?!![]:![]:!![]})[_0x5607('0xd')](function(_0x31afed){logger['info'](_0x5607('0x1f'),_0x4bc522);logger['debug'](_0x5607('0x1f'),_0x4bc522,JSON[_0x5607('0x22')](_0x31afed));_0x15a1a2(_0x31afed);})['catch'](function(_0x335f90){logger[_0x5607('0x12')](_0x5607('0x1f'),_0x335f90['message'],_0x4bc522);_0x2c90e3(_0xd6c90a[_0x5607('0x12')](0x1f4,_0x335f90[_0x5607('0x14')]));});});};exports[_0x5607('0x23')]=function(_0x4ef3c3){var _0x5d55cf=this;return new Promise(function(_0x3478dc,_0x36bc31){return db['MemberReport'][_0x5607('0x24')](_0x4ef3c3[_0x5607('0x25')],{'raw':_0x4ef3c3[_0x5607('0x17')]?_0x4ef3c3['options'][_0x5607('0x21')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x4ef3c3['options']?_0x4ef3c3[_0x5607('0x17')][_0x5607('0x18')]||null:null,'attributes':_0x4ef3c3[_0x5607('0x17')]?_0x4ef3c3['options']['attributes']||null:null,'limit':_0x4ef3c3['options']?_0x4ef3c3[_0x5607('0x17')][_0x5607('0x1a')]||null:null})[_0x5607('0xd')](function(_0x273e71){logger[_0x5607('0xe')](_0x5607('0x23'),_0x4ef3c3);logger[_0x5607('0x1e')](_0x5607('0x23'),_0x4ef3c3,JSON['stringify'](_0x273e71));_0x3478dc(_0x273e71);})[_0x5607('0x26')](function(_0x261687){logger[_0x5607('0x12')](_0x5607('0x23'),_0x261687['message'],_0x4ef3c3);_0x36bc31(_0x5d55cf[_0x5607('0x12')](0x1f4,_0x261687[_0x5607('0x14')]));});});};
\ No newline at end of file
+var _0xed54=['debug','MemberReport,\x20%s,\x20%s,\x20%s','stringify','error','code','MemberReport,\x20%s,\x20%s','message','result','catch','GetMemberReport','MemberReport','findAll','options','raw','where','attributes','limit','include','model','map','CreateMemberReport','create','body','UpdateMemberReport','util','moment','bluebird','randomstring','../../mysqldb','../../config/utils','../../config/environment','jayson/promise','client','http','request','then','info','request\x20sent'];(function(_0x1d81bf,_0x29d29f){var _0x2f8b37=function(_0x59f241){while(--_0x59f241){_0x1d81bf['push'](_0x1d81bf['shift']());}};_0x2f8b37(++_0x29d29f);}(_0xed54,0xfc));var _0x4ed5=function(_0x238501,_0x3adab5){_0x238501=_0x238501-0x0;var _0x36eb0f=_0xed54[_0x238501];return _0x36eb0f;};'use strict';var _=require('lodash');var util=require(_0x4ed5('0x0'));var moment=require(_0x4ed5('0x1'));var BPromise=require(_0x4ed5('0x2'));var rs=require(_0x4ed5('0x3'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x4ed5('0x4'))['db'];var utils=require(_0x4ed5('0x5'));var logger=require('../../config/logger')('rpc');var config=require(_0x4ed5('0x6'));var jayson=require(_0x4ed5('0x7'));var client=jayson[_0x4ed5('0x8')][_0x4ed5('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x32b0b3,_0x406871,_0x499db9){return new BPromise(function(_0x487945,_0x3993ac){return client[_0x4ed5('0xa')](_0x32b0b3,_0x499db9)[_0x4ed5('0xb')](function(_0xb74766){logger[_0x4ed5('0xc')]('MemberReport,\x20%s,\x20%s',_0x406871,_0x4ed5('0xd'));logger[_0x4ed5('0xe')](_0x4ed5('0xf'),_0x406871,_0x4ed5('0xd'),JSON[_0x4ed5('0x10')](_0xb74766));if(_0xb74766['error']){if(_0xb74766[_0x4ed5('0x11')][_0x4ed5('0x12')]===0x1f4){logger[_0x4ed5('0x11')](_0x4ed5('0x13'),_0x406871,_0xb74766[_0x4ed5('0x11')][_0x4ed5('0x14')]);return _0x3993ac(_0xb74766[_0x4ed5('0x11')][_0x4ed5('0x14')]);}logger['error']('MemberReport,\x20%s,\x20%s',_0x406871,_0xb74766[_0x4ed5('0x11')][_0x4ed5('0x14')]);return _0x487945(_0xb74766[_0x4ed5('0x11')][_0x4ed5('0x14')]);}else{logger[_0x4ed5('0xc')](_0x4ed5('0x13'),_0x406871,_0x4ed5('0xd'));_0x487945(_0xb74766[_0x4ed5('0x15')][_0x4ed5('0x14')]);}})[_0x4ed5('0x16')](function(_0x168916){logger[_0x4ed5('0x11')](_0x4ed5('0x13'),_0x406871,_0x168916);_0x3993ac(_0x168916);});});}exports[_0x4ed5('0x17')]=function(_0x16a940){var _0x38c405=this;return new Promise(function(_0x584745,_0x1a9962){return db[_0x4ed5('0x18')][_0x4ed5('0x19')]({'raw':_0x16a940['options']?_0x16a940[_0x4ed5('0x1a')][_0x4ed5('0x1b')]===undefined?!![]:![]:!![],'where':_0x16a940[_0x4ed5('0x1a')]?_0x16a940[_0x4ed5('0x1a')][_0x4ed5('0x1c')]||null:null,'attributes':_0x16a940[_0x4ed5('0x1a')]?_0x16a940[_0x4ed5('0x1a')][_0x4ed5('0x1d')]||null:null,'limit':_0x16a940['options']?_0x16a940[_0x4ed5('0x1a')][_0x4ed5('0x1e')]||null:null,'include':_0x16a940['options']?_0x16a940[_0x4ed5('0x1a')]['include']?_['map'](_0x16a940['options'][_0x4ed5('0x1f')],function(_0x506906){return{'model':db[_0x506906[_0x4ed5('0x20')]],'as':_0x506906['as'],'attributes':_0x506906[_0x4ed5('0x1d')],'include':_0x506906[_0x4ed5('0x1f')]?_[_0x4ed5('0x21')](_0x506906[_0x4ed5('0x1f')],function(_0x28667a){return{'model':db[_0x28667a[_0x4ed5('0x20')]],'as':_0x28667a['as'],'attributes':_0x28667a['attributes'],'include':_0x28667a[_0x4ed5('0x1f')]?_[_0x4ed5('0x21')](_0x28667a[_0x4ed5('0x1f')],function(_0x3a60bc){return{'model':db[_0x3a60bc[_0x4ed5('0x20')]],'as':_0x3a60bc['as'],'attributes':_0x3a60bc['attributes']};}):[]};}):[]};}):[]:[]})[_0x4ed5('0xb')](function(_0x204be7){logger[_0x4ed5('0xc')]('GetMemberReport',_0x16a940);logger[_0x4ed5('0xe')]('GetMemberReport',_0x16a940,JSON['stringify'](_0x204be7));_0x584745(_0x204be7);})[_0x4ed5('0x16')](function(_0x18d3d0){logger['error'](_0x4ed5('0x17'),_0x18d3d0[_0x4ed5('0x14')],_0x16a940);_0x1a9962(_0x38c405['error'](0x1f4,_0x18d3d0['message']));});});};exports[_0x4ed5('0x22')]=function(_0x34b359){var _0x46fb07=this;return new Promise(function(_0x2f0690,_0x5ee3b2){return db[_0x4ed5('0x18')][_0x4ed5('0x23')](_0x34b359[_0x4ed5('0x24')],{'raw':_0x34b359[_0x4ed5('0x1a')]?_0x34b359['options'][_0x4ed5('0x1b')]===undefined?!![]:![]:!![]})['then'](function(_0x48ad4f){logger[_0x4ed5('0xc')](_0x4ed5('0x22'),_0x34b359);logger['debug']('CreateMemberReport',_0x34b359,JSON[_0x4ed5('0x10')](_0x48ad4f));_0x2f0690(_0x48ad4f);})[_0x4ed5('0x16')](function(_0x2d97d8){logger['error'](_0x4ed5('0x22'),_0x2d97d8[_0x4ed5('0x14')],_0x34b359);_0x5ee3b2(_0x46fb07[_0x4ed5('0x11')](0x1f4,_0x2d97d8['message']));});});};exports['UpdateMemberReport']=function(_0x5e0f98){var _0x38f0ff=this;return new Promise(function(_0x2764b2,_0x4e8c36){return db[_0x4ed5('0x18')]['update'](_0x5e0f98['body'],{'raw':_0x5e0f98[_0x4ed5('0x1a')]?_0x5e0f98['options'][_0x4ed5('0x1b')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x5e0f98[_0x4ed5('0x1a')]?_0x5e0f98[_0x4ed5('0x1a')][_0x4ed5('0x1c')]||null:null,'attributes':_0x5e0f98[_0x4ed5('0x1a')]?_0x5e0f98[_0x4ed5('0x1a')][_0x4ed5('0x1d')]||null:null,'limit':_0x5e0f98[_0x4ed5('0x1a')]?_0x5e0f98[_0x4ed5('0x1a')]['limit']||null:null})[_0x4ed5('0xb')](function(_0x16e677){logger[_0x4ed5('0xc')]('UpdateMemberReport',_0x5e0f98);logger['debug']('UpdateMemberReport',_0x5e0f98,JSON[_0x4ed5('0x10')](_0x16e677));_0x2764b2(_0x16e677);})['catch'](function(_0x4e33b1){logger[_0x4ed5('0x11')](_0x4ed5('0x25'),_0x4e33b1[_0x4ed5('0x14')],_0x5e0f98);_0x4e8c36(_0x38f0ff[_0x4ed5('0x11')](0x1f4,_0x4e33b1[_0x4ed5('0x14')]));});});};
\ No newline at end of file
index 2b1be1c..400a56f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd10c=['multer','path','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./migration.controller','get','index'];(function(_0x13071e,_0x302980){var _0x292049=function(_0x1a40db){while(--_0x1a40db){_0x13071e['push'](_0x13071e['shift']());}};_0x292049(++_0x302980);}(_0xd10c,0x1c3));var _0xcd10=function(_0x2aeefe,_0xc3564b){_0x2aeefe=_0x2aeefe-0x0;var _0x983e50=_0xd10c[_0x2aeefe];return _0x983e50;};'use strict';var multer=require(_0xcd10('0x0'));var util=require('util');var path=require(_0xcd10('0x1'));var timeout=require('connect-timeout');var express=require(_0xcd10('0x2'));var router=express[_0xcd10('0x3')]();var fs_extra=require(_0xcd10('0x4'));var auth=require(_0xcd10('0x5'));var interaction=require(_0xcd10('0x6'));var config=require(_0xcd10('0x7'));var controller=require(_0xcd10('0x8'));router[_0xcd10('0x9')]('/',controller[_0xcd10('0xa')]);module['exports']=router;
\ No newline at end of file
+var _0x442e=['connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','./migration.controller','get','index','exports','util'];(function(_0x53ccf2,_0x13cb67){var _0x5a2964=function(_0x3b0514){while(--_0x3b0514){_0x53ccf2['push'](_0x53ccf2['shift']());}};_0x5a2964(++_0x13cb67);}(_0x442e,0x133));var _0xe442=function(_0x31620d,_0x5cd3b1){_0x31620d=_0x31620d-0x0;var _0x72072a=_0x442e[_0x31620d];return _0x72072a;};'use strict';var multer=require('multer');var util=require(_0xe442('0x0'));var path=require('path');var timeout=require(_0xe442('0x1'));var express=require(_0xe442('0x2'));var router=express[_0xe442('0x3')]();var fs_extra=require(_0xe442('0x4'));var auth=require(_0xe442('0x5'));var interaction=require(_0xe442('0x6'));var config=require('../../config/environment');var controller=require(_0xe442('0x7'));router[_0xe442('0x8')]('/',controller[_0xe442('0x9')]);module[_0xe442('0xa')]=router;
\ No newline at end of file
index e544f82..aae10cf 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xcdc5=['STRING','version','exports'];(function(_0x38fb8b,_0x70dd0a){var _0x1ec681=function(_0x58f130){while(--_0x58f130){_0x38fb8b['push'](_0x38fb8b['shift']());}};_0x1ec681(++_0x70dd0a);}(_0xcdc5,0x179));var _0x5cdc=function(_0x4ca731,_0x3d9665){_0x4ca731=_0x4ca731-0x0;var _0x1fd0a1=_0xcdc5[_0x4ca731];return _0x1fd0a1;};'use strict';var Sequelize=require('sequelize');module[_0x5cdc('0x0')]={'version':{'type':Sequelize[_0x5cdc('0x1')],'unique':_0x5cdc('0x2')}};
\ No newline at end of file
+var _0x583a=['exports','STRING','version'];(function(_0x1b6186,_0x1ec7f2){var _0x186121=function(_0x1748a8){while(--_0x1748a8){_0x1b6186['push'](_0x1b6186['shift']());}};_0x186121(++_0x1ec7f2);}(_0x583a,0x117));var _0xa583=function(_0x4c1ec2,_0x4f42b7){_0x4c1ec2=_0x4c1ec2-0x0;var _0x3f6f1c=_0x583a[_0x4c1ec2];return _0x3f6f1c;};'use strict';var Sequelize=require('sequelize');module[_0xa583('0x0')]={'version':{'type':Sequelize[_0xa583('0x1')],'unique':_0xa583('0x2')}};
\ No newline at end of file
index d41e1b6..7246f2f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xbd72=['length','nolimit','order','sort','where','filters','pick','filter','merge','type','VIRTUAL','options','includeAll','include','findAll','rows','catch','eml-format','rimraf','fast-json-patch','request-promise','moment','bluebird','mustache','path','sox','to-csv','ejs','fs-extra','squel','jsforce','desk.js','querystring','papaparse','ioredis','../../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','Content-Range','apply','save','destroy','then','error','stack','name','send','index','map','Migration','rawAttributes','fieldName','query','keys','intersection','model','fields','attributes'];(function(_0x3f06e9,_0x2943e5){var _0x19b689=function(_0x2ea2ce){while(--_0x2ea2ce){_0x3f06e9['push'](_0x3f06e9['shift']());}};_0x19b689(++_0x2943e5);}(_0xbd72,0x179));var _0x2bd7=function(_0x4d613c,_0x55f220){_0x4d613c=_0x4d613c-0x0;var _0x301fe3=_0xbd72[_0x4d613c];return _0x301fe3;};'use strict';var emlformat=require(_0x2bd7('0x0'));var rimraf=require(_0x2bd7('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0x2bd7('0x2'));var rp=require(_0x2bd7('0x3'));var moment=require(_0x2bd7('0x4'));var BPromise=require(_0x2bd7('0x5'));var Mustache=require(_0x2bd7('0x6'));var util=require('util');var path=require(_0x2bd7('0x7'));var sox=require(_0x2bd7('0x8'));var csv=require(_0x2bd7('0x9'));var ejs=require(_0x2bd7('0xa'));var fs=require('fs');var fs_extra=require(_0x2bd7('0xb'));var _=require('lodash');var squel=require(_0x2bd7('0xc'));var crypto=require('crypto');var jsforce=require(_0x2bd7('0xd'));var deskjs=require(_0x2bd7('0xe'));var toCsv=require(_0x2bd7('0x9'));var querystring=require(_0x2bd7('0xf'));var Papa=require(_0x2bd7('0x10'));var Redis=require(_0x2bd7('0x11'));var authService=require('../../components/auth/service');var qs=require('../../components/parsers/qs');var as=require(_0x2bd7('0x12'));var hardwareService=require(_0x2bd7('0x13'));var logger=require(_0x2bd7('0x14'))(_0x2bd7('0x15'));var utils=require(_0x2bd7('0x16'));var config=require(_0x2bd7('0x17'));var licenseUtil=require(_0x2bd7('0x18'));var db=require(_0x2bd7('0x19'))['db'];function respondWithStatusCode(_0xd15509,_0x35659f){_0x35659f=_0x35659f||0xcc;return function(_0x18ae60){if(_0x18ae60){return _0xd15509[_0x2bd7('0x1a')](_0x35659f);}return _0xd15509[_0x2bd7('0x1b')](_0x35659f)[_0x2bd7('0x1c')]();};}function respondWithResult(_0x228521,_0x3c3f26){_0x3c3f26=_0x3c3f26||0xc8;return function(_0x54e2b7){if(_0x54e2b7){return _0x228521[_0x2bd7('0x1b')](_0x3c3f26)[_0x2bd7('0x1d')](_0x54e2b7);}};}function respondWithFilteredResult(_0x87cee4,_0x9125fd){return function(_0x438dd0){if(_0x438dd0){var _0x5d5c5c=typeof _0x9125fd[_0x2bd7('0x1e')]===_0x2bd7('0x1f')&&typeof _0x9125fd['limit']===_0x2bd7('0x1f');var _0x2d5d3c=_0x438dd0[_0x2bd7('0x20')];var _0x52dc28=_0x5d5c5c?0x0:_0x9125fd[_0x2bd7('0x1e')];var _0x1f64a1=_0x5d5c5c?_0x438dd0[_0x2bd7('0x20')]:_0x9125fd['offset']+_0x9125fd[_0x2bd7('0x21')];var _0x4faf5f;if(_0x1f64a1>=_0x2d5d3c){_0x1f64a1=_0x2d5d3c;_0x4faf5f=0xc8;}else{_0x4faf5f=0xce;}_0x87cee4['status'](_0x4faf5f);return _0x87cee4[_0x2bd7('0x22')](_0x2bd7('0x23'),_0x52dc28+'-'+_0x1f64a1+'/'+_0x2d5d3c)[_0x2bd7('0x1d')](_0x438dd0);}return null;};}function patchUpdates(_0x33ec38){return function(_0x1063f1){try{jsonpatch[_0x2bd7('0x24')](_0x1063f1,_0x33ec38,!![]);}catch(_0xaff888){return BPromise['reject'](_0xaff888);}return _0x1063f1[_0x2bd7('0x25')]();};}function saveUpdates(_0x40fa92,_0x4ee4f1){return function(_0x104858){if(_0x104858){return _0x104858['update'](_0x40fa92)['then'](function(_0x55b0e1){return _0x55b0e1;});}return null;};}function removeEntity(_0x5b179d,_0x26cb70){return function(_0x54db1a){if(_0x54db1a){return _0x54db1a[_0x2bd7('0x26')]()[_0x2bd7('0x27')](function(){_0x5b179d[_0x2bd7('0x1b')](0xcc)[_0x2bd7('0x1c')]();});}};}function handleEntityNotFound(_0x5a7ac9,_0x4aa7c8){return function(_0x1934f2){if(!_0x1934f2){_0x5a7ac9[_0x2bd7('0x1a')](0x194);}return _0x1934f2;};}function handleError(_0x10504b,_0x798da){_0x798da=_0x798da||0x1f4;return function(_0x500c03){logger[_0x2bd7('0x28')](_0x500c03[_0x2bd7('0x29')]);if(_0x500c03[_0x2bd7('0x2a')]){delete _0x500c03[_0x2bd7('0x2a')];}_0x10504b[_0x2bd7('0x1b')](_0x798da)[_0x2bd7('0x2b')](_0x500c03);};}exports[_0x2bd7('0x2c')]=function(_0x1799bf,_0x3c0aec){var _0x45134a={},_0x1c0800={},_0x27bcab={'count':0x0,'rows':[]};var _0x4085a7=_[_0x2bd7('0x2d')](db[_0x2bd7('0x2e')][_0x2bd7('0x2f')],function(_0x2e1111){return{'name':_0x2e1111[_0x2bd7('0x30')],'type':_0x2e1111['type']['key']};});_0x1c0800['model']=_[_0x2bd7('0x2d')](_0x4085a7,'name');_0x1c0800[_0x2bd7('0x31')]=_[_0x2bd7('0x32')](_0x1799bf[_0x2bd7('0x31')]);_0x1c0800['filters']=_[_0x2bd7('0x33')](_0x1c0800['model'],_0x1c0800[_0x2bd7('0x31')]);_0x45134a['attributes']=_['intersection'](_0x1c0800[_0x2bd7('0x34')],qs['fields'](_0x1799bf[_0x2bd7('0x31')][_0x2bd7('0x35')]));_0x45134a[_0x2bd7('0x36')]=_0x45134a['attributes'][_0x2bd7('0x37')]?_0x45134a['attributes']:_0x1c0800[_0x2bd7('0x34')];if(!_0x1799bf['query']['hasOwnProperty'](_0x2bd7('0x38'))){_0x45134a['limit']=qs[_0x2bd7('0x21')](_0x1799bf['query']['limit']);_0x45134a['offset']=qs[_0x2bd7('0x1e')](_0x1799bf[_0x2bd7('0x31')][_0x2bd7('0x1e')]);}_0x45134a[_0x2bd7('0x39')]=qs[_0x2bd7('0x3a')](_0x1799bf[_0x2bd7('0x31')]['sort']);_0x45134a[_0x2bd7('0x3b')]=qs[_0x2bd7('0x3c')](_[_0x2bd7('0x3d')](_0x1799bf[_0x2bd7('0x31')],_0x1c0800[_0x2bd7('0x3c')]),_0x4085a7);if(_0x1799bf[_0x2bd7('0x31')][_0x2bd7('0x3e')]){_0x45134a['where']=_[_0x2bd7('0x3f')](_0x45134a[_0x2bd7('0x3b')],{'$or':_[_0x2bd7('0x2d')](_0x4085a7,function(_0xa4a5b1){if(_0xa4a5b1[_0x2bd7('0x40')]!==_0x2bd7('0x41')){var _0x3c93c5={};_0x3c93c5[_0xa4a5b1[_0x2bd7('0x2a')]]={'$like':'%'+_0x1799bf[_0x2bd7('0x31')][_0x2bd7('0x3e')]+'%'};return _0x3c93c5;}})});}_0x45134a=_[_0x2bd7('0x3f')]({},_0x45134a,_0x1799bf[_0x2bd7('0x42')]);var _0x186c6e={'where':_0x45134a['where']};return db[_0x2bd7('0x2e')][_0x2bd7('0x20')](_0x186c6e)[_0x2bd7('0x27')](function(_0x298ee8){_0x27bcab[_0x2bd7('0x20')]=_0x298ee8;if(_0x1799bf['query'][_0x2bd7('0x43')]){_0x45134a[_0x2bd7('0x44')]=[{'all':!![]}];}return db[_0x2bd7('0x2e')][_0x2bd7('0x45')](_0x45134a);})['then'](function(_0x5bdd3e){_0x27bcab[_0x2bd7('0x46')]=_0x5bdd3e;return _0x27bcab;})[_0x2bd7('0x27')](respondWithFilteredResult(_0x3c0aec,_0x45134a))[_0x2bd7('0x47')](handleError(_0x3c0aec,null));};
\ No newline at end of file
+var _0xd52a=['squel','crypto','jsforce','desk.js','querystring','papaparse','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../mysqldb','sendStatus','status','end','undefined','limit','count','offset','set','Content-Range','apply','reject','save','update','then','destroy','error','name','send','index','Migration','type','key','model','map','keys','query','filters','intersection','attributes','hasOwnProperty','nolimit','order','sort','where','pick','filter','merge','VIRTUAL','options','includeAll','rows','eml-format','rimraf','fast-json-patch','request-promise','moment','bluebird','util','path','to-csv','fs-extra'];(function(_0x19e35c,_0x29cd1e){var _0x3e1fe8=function(_0x17258b){while(--_0x17258b){_0x19e35c['push'](_0x19e35c['shift']());}};_0x3e1fe8(++_0x29cd1e);}(_0xd52a,0x182));var _0xad52=function(_0x382ee2,_0x49038a){_0x382ee2=_0x382ee2-0x0;var _0x225b32=_0xd52a[_0x382ee2];return _0x225b32;};'use strict';var emlformat=require(_0xad52('0x0'));var rimraf=require(_0xad52('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0xad52('0x2'));var rp=require(_0xad52('0x3'));var moment=require(_0xad52('0x4'));var BPromise=require(_0xad52('0x5'));var Mustache=require('mustache');var util=require(_0xad52('0x6'));var path=require(_0xad52('0x7'));var sox=require('sox');var csv=require(_0xad52('0x8'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0xad52('0x9'));var _=require('lodash');var squel=require(_0xad52('0xa'));var crypto=require(_0xad52('0xb'));var jsforce=require(_0xad52('0xc'));var deskjs=require(_0xad52('0xd'));var toCsv=require('to-csv');var querystring=require(_0xad52('0xe'));var Papa=require(_0xad52('0xf'));var Redis=require('ioredis');var authService=require(_0xad52('0x10'));var qs=require(_0xad52('0x11'));var as=require(_0xad52('0x12'));var hardwareService=require(_0xad52('0x13'));var logger=require(_0xad52('0x14'))(_0xad52('0x15'));var utils=require(_0xad52('0x16'));var config=require(_0xad52('0x17'));var licenseUtil=require('../../config/license/util');var db=require(_0xad52('0x18'))['db'];function respondWithStatusCode(_0x264fbe,_0x64fbcb){_0x64fbcb=_0x64fbcb||0xcc;return function(_0xad5098){if(_0xad5098){return _0x264fbe[_0xad52('0x19')](_0x64fbcb);}return _0x264fbe[_0xad52('0x1a')](_0x64fbcb)[_0xad52('0x1b')]();};}function respondWithResult(_0x5688cc,_0x565136){_0x565136=_0x565136||0xc8;return function(_0x234f11){if(_0x234f11){return _0x5688cc['status'](_0x565136)['json'](_0x234f11);}};}function respondWithFilteredResult(_0xbb3b9,_0x3edde0){return function(_0x534c61){if(_0x534c61){var _0x5515d6=typeof _0x3edde0['offset']===_0xad52('0x1c')&&typeof _0x3edde0[_0xad52('0x1d')]===_0xad52('0x1c');var _0x1846eb=_0x534c61[_0xad52('0x1e')];var _0xa946a7=_0x5515d6?0x0:_0x3edde0['offset'];var _0x1c72de=_0x5515d6?_0x534c61[_0xad52('0x1e')]:_0x3edde0[_0xad52('0x1f')]+_0x3edde0[_0xad52('0x1d')];var _0x3fc17c;if(_0x1c72de>=_0x1846eb){_0x1c72de=_0x1846eb;_0x3fc17c=0xc8;}else{_0x3fc17c=0xce;}_0xbb3b9[_0xad52('0x1a')](_0x3fc17c);return _0xbb3b9[_0xad52('0x20')](_0xad52('0x21'),_0xa946a7+'-'+_0x1c72de+'/'+_0x1846eb)['json'](_0x534c61);}return null;};}function patchUpdates(_0x5af152){return function(_0x4d0be3){try{jsonpatch[_0xad52('0x22')](_0x4d0be3,_0x5af152,!![]);}catch(_0x2ea547){return BPromise[_0xad52('0x23')](_0x2ea547);}return _0x4d0be3[_0xad52('0x24')]();};}function saveUpdates(_0x159078,_0x38c329){return function(_0x490e48){if(_0x490e48){return _0x490e48[_0xad52('0x25')](_0x159078)[_0xad52('0x26')](function(_0x169682){return _0x169682;});}return null;};}function removeEntity(_0x252ab7,_0x5a441c){return function(_0x2cfb8e){if(_0x2cfb8e){return _0x2cfb8e[_0xad52('0x27')]()[_0xad52('0x26')](function(){_0x252ab7['status'](0xcc)[_0xad52('0x1b')]();});}};}function handleEntityNotFound(_0x3cdd8f,_0x4c4520){return function(_0x4ab4ca){if(!_0x4ab4ca){_0x3cdd8f[_0xad52('0x19')](0x194);}return _0x4ab4ca;};}function handleError(_0x5c1f60,_0x72cc93){_0x72cc93=_0x72cc93||0x1f4;return function(_0x5e63d8){logger[_0xad52('0x28')](_0x5e63d8['stack']);if(_0x5e63d8['name']){delete _0x5e63d8[_0xad52('0x29')];}_0x5c1f60[_0xad52('0x1a')](_0x72cc93)[_0xad52('0x2a')](_0x5e63d8);};}exports[_0xad52('0x2b')]=function(_0x2fc995,_0x3980fe){var _0x2a6041={},_0x209949={},_0x32fc22={'count':0x0,'rows':[]};var _0x5bd54b=_['map'](db[_0xad52('0x2c')]['rawAttributes'],function(_0x49f222){return{'name':_0x49f222['fieldName'],'type':_0x49f222[_0xad52('0x2d')][_0xad52('0x2e')]};});_0x209949[_0xad52('0x2f')]=_[_0xad52('0x30')](_0x5bd54b,_0xad52('0x29'));_0x209949['query']=_[_0xad52('0x31')](_0x2fc995[_0xad52('0x32')]);_0x209949[_0xad52('0x33')]=_[_0xad52('0x34')](_0x209949[_0xad52('0x2f')],_0x209949[_0xad52('0x32')]);_0x2a6041['attributes']=_[_0xad52('0x34')](_0x209949[_0xad52('0x2f')],qs['fields'](_0x2fc995[_0xad52('0x32')]['fields']));_0x2a6041[_0xad52('0x35')]=_0x2a6041[_0xad52('0x35')]['length']?_0x2a6041['attributes']:_0x209949[_0xad52('0x2f')];if(!_0x2fc995['query'][_0xad52('0x36')](_0xad52('0x37'))){_0x2a6041[_0xad52('0x1d')]=qs[_0xad52('0x1d')](_0x2fc995['query'][_0xad52('0x1d')]);_0x2a6041['offset']=qs['offset'](_0x2fc995[_0xad52('0x32')][_0xad52('0x1f')]);}_0x2a6041[_0xad52('0x38')]=qs[_0xad52('0x39')](_0x2fc995[_0xad52('0x32')][_0xad52('0x39')]);_0x2a6041[_0xad52('0x3a')]=qs['filters'](_[_0xad52('0x3b')](_0x2fc995[_0xad52('0x32')],_0x209949['filters']),_0x5bd54b);if(_0x2fc995['query'][_0xad52('0x3c')]){_0x2a6041[_0xad52('0x3a')]=_[_0xad52('0x3d')](_0x2a6041[_0xad52('0x3a')],{'$or':_['map'](_0x5bd54b,function(_0x27a361){if(_0x27a361[_0xad52('0x2d')]!==_0xad52('0x3e')){var _0x3f6cde={};_0x3f6cde[_0x27a361[_0xad52('0x29')]]={'$like':'%'+_0x2fc995['query'][_0xad52('0x3c')]+'%'};return _0x3f6cde;}})});}_0x2a6041=_[_0xad52('0x3d')]({},_0x2a6041,_0x2fc995[_0xad52('0x3f')]);var _0x3649d2={'where':_0x2a6041[_0xad52('0x3a')]};return db[_0xad52('0x2c')]['count'](_0x3649d2)[_0xad52('0x26')](function(_0x3d30b9){_0x32fc22[_0xad52('0x1e')]=_0x3d30b9;if(_0x2fc995['query'][_0xad52('0x40')]){_0x2a6041['include']=[{'all':!![]}];}return db[_0xad52('0x2c')]['findAll'](_0x2a6041);})[_0xad52('0x26')](function(_0x558f8b){_0x32fc22[_0xad52('0x41')]=_0x558f8b;return _0x32fc22;})[_0xad52('0x26')](respondWithFilteredResult(_0x3980fe,_0x2a6041))['catch'](handleError(_0x3980fe,null));};
\ No newline at end of file
index 4d58d4b..a43b884 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x170f=['request-promise','path','rimraf','./migration.attributes','exports','define','Migration','migrations','lodash','util','../../config/logger','bluebird'];(function(_0xbc54de,_0x379045){var _0x32e975=function(_0x3d8374){while(--_0x3d8374){_0xbc54de['push'](_0xbc54de['shift']());}};_0x32e975(++_0x379045);}(_0x170f,0x104));var _0xf170=function(_0x3ff085,_0x27c92e){_0x3ff085=_0x3ff085-0x0;var _0x2b68c3=_0x170f[_0x3ff085];return _0x2b68c3;};'use strict';var _=require(_0xf170('0x0'));var util=require(_0xf170('0x1'));var logger=require(_0xf170('0x2'))('api');var moment=require('moment');var BPromise=require(_0xf170('0x3'));var rp=require(_0xf170('0x4'));var fs=require('fs');var path=require(_0xf170('0x5'));var rimraf=require(_0xf170('0x6'));var config=require('../../config/environment');var attributes=require(_0xf170('0x7'));module[_0xf170('0x8')]=function(_0xba298d,_0x1caa66){return _0xba298d[_0xf170('0x9')](_0xf170('0xa'),attributes,{'tableName':_0xf170('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xd410=['Migration','lodash','api','bluebird','path','rimraf','../../config/environment','./migration.attributes','exports','define'];(function(_0x40b086,_0x582c4d){var _0x468e43=function(_0x409298){while(--_0x409298){_0x40b086['push'](_0x40b086['shift']());}};_0x468e43(++_0x582c4d);}(_0xd410,0x123));var _0x0d41=function(_0x9df060,_0x253d33){_0x9df060=_0x9df060-0x0;var _0x338dfe=_0xd410[_0x9df060];return _0x338dfe;};'use strict';var _=require(_0x0d41('0x0'));var util=require('util');var logger=require('../../config/logger')(_0x0d41('0x1'));var moment=require('moment');var BPromise=require(_0x0d41('0x2'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x0d41('0x3'));var rimraf=require(_0x0d41('0x4'));var config=require(_0x0d41('0x5'));var attributes=require(_0x0d41('0x6'));module[_0x0d41('0x7')]=function(_0x352c77,_0x5c93ed){return _0x352c77[_0x0d41('0x8')](_0x0d41('0x9'),attributes,{'tableName':'migrations','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 43ad6cc..5cf76e8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x61a5=['rpc','../../config/environment','jayson/promise','client','http','then','Migration,\x20%s,\x20%s','request\x20sent','debug','Migration,\x20%s,\x20%s,\x20%s','error','code','message','result','catch','lodash','moment','bluebird','ioredis','../../config/utils','../../config/logger'];(function(_0x52bcfd,_0x44397c){var _0x541f8d=function(_0x3cef22){while(--_0x3cef22){_0x52bcfd['push'](_0x52bcfd['shift']());}};_0x541f8d(++_0x44397c);}(_0x61a5,0x19e));var _0x561a=function(_0x5be8cc,_0x4a6037){_0x5be8cc=_0x5be8cc-0x0;var _0x5f1b7e=_0x61a5[_0x5be8cc];return _0x5f1b7e;};'use strict';var _=require(_0x561a('0x0'));var util=require('util');var moment=require(_0x561a('0x1'));var BPromise=require(_0x561a('0x2'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x561a('0x3'));var db=require('../../mysqldb')['db'];var utils=require(_0x561a('0x4'));var logger=require(_0x561a('0x5'))(_0x561a('0x6'));var config=require(_0x561a('0x7'));var jayson=require(_0x561a('0x8'));var client=jayson[_0x561a('0x9')][_0x561a('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x2a763a,_0x4c2853,_0x3d020c){return new BPromise(function(_0x27e026,_0xe056b2){return client['request'](_0x2a763a,_0x3d020c)[_0x561a('0xb')](function(_0x2a0fdb){logger['info'](_0x561a('0xc'),_0x4c2853,_0x561a('0xd'));logger[_0x561a('0xe')](_0x561a('0xf'),_0x4c2853,'request\x20sent',JSON['stringify'](_0x2a0fdb));if(_0x2a0fdb[_0x561a('0x10')]){if(_0x2a0fdb[_0x561a('0x10')][_0x561a('0x11')]===0x1f4){logger[_0x561a('0x10')](_0x561a('0xc'),_0x4c2853,_0x2a0fdb[_0x561a('0x10')][_0x561a('0x12')]);return _0xe056b2(_0x2a0fdb[_0x561a('0x10')]['message']);}logger[_0x561a('0x10')](_0x561a('0xc'),_0x4c2853,_0x2a0fdb[_0x561a('0x10')][_0x561a('0x12')]);return _0x27e026(_0x2a0fdb['error'][_0x561a('0x12')]);}else{logger['info'](_0x561a('0xc'),_0x4c2853,_0x561a('0xd'));_0x27e026(_0x2a0fdb[_0x561a('0x13')][_0x561a('0x12')]);}})[_0x561a('0x14')](function(_0xb777ee){logger['error']('Migration,\x20%s,\x20%s',_0x4c2853,_0xb777ee);_0xe056b2(_0xb777ee);});});}
\ No newline at end of file
+var _0xa5fa=['bluebird','randomstring','../../mysqldb','../../config/utils','rpc','../../config/environment','jayson/promise','client','http','request','info','debug','stringify','error','code','Migration,\x20%s,\x20%s','message','request\x20sent','result','catch','util','moment'];(function(_0x13e241,_0x391629){var _0x3fb33e=function(_0x5d4560){while(--_0x5d4560){_0x13e241['push'](_0x13e241['shift']());}};_0x3fb33e(++_0x391629);}(_0xa5fa,0xc4));var _0xaa5f=function(_0x2bd8cb,_0x29815b){_0x2bd8cb=_0x2bd8cb-0x0;var _0x245b03=_0xa5fa[_0x2bd8cb];return _0x245b03;};'use strict';var _=require('lodash');var util=require(_0xaa5f('0x0'));var moment=require(_0xaa5f('0x1'));var BPromise=require(_0xaa5f('0x2'));var rs=require(_0xaa5f('0x3'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0xaa5f('0x4'))['db'];var utils=require(_0xaa5f('0x5'));var logger=require('../../config/logger')(_0xaa5f('0x6'));var config=require(_0xaa5f('0x7'));var jayson=require(_0xaa5f('0x8'));var client=jayson[_0xaa5f('0x9')][_0xaa5f('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x13b606,_0x302138,_0xc326df){return new BPromise(function(_0x74f64f,_0x3f550e){return client[_0xaa5f('0xb')](_0x13b606,_0xc326df)['then'](function(_0x1674c2){logger[_0xaa5f('0xc')]('Migration,\x20%s,\x20%s',_0x302138,'request\x20sent');logger[_0xaa5f('0xd')]('Migration,\x20%s,\x20%s,\x20%s',_0x302138,'request\x20sent',JSON[_0xaa5f('0xe')](_0x1674c2));if(_0x1674c2['error']){if(_0x1674c2[_0xaa5f('0xf')][_0xaa5f('0x10')]===0x1f4){logger[_0xaa5f('0xf')](_0xaa5f('0x11'),_0x302138,_0x1674c2[_0xaa5f('0xf')]['message']);return _0x3f550e(_0x1674c2[_0xaa5f('0xf')]['message']);}logger[_0xaa5f('0xf')](_0xaa5f('0x11'),_0x302138,_0x1674c2[_0xaa5f('0xf')][_0xaa5f('0x12')]);return _0x74f64f(_0x1674c2[_0xaa5f('0xf')]['message']);}else{logger['info'](_0xaa5f('0x11'),_0x302138,_0xaa5f('0x13'));_0x74f64f(_0x1674c2[_0xaa5f('0x14')][_0xaa5f('0x12')]);}})[_0xaa5f('0x15')](function(_0x1fa36a){logger[_0xaa5f('0xf')](_0xaa5f('0x11'),_0x302138,_0x1fa36a);_0x3f550e(_0x1fa36a);});});}
\ No newline at end of file
index f704cff..208fd78 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xdcfa=['create','update','exports','multer','path','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./network.controller','get','isAuthenticated','index','/:id','show'];(function(_0x38a27d,_0x3720b9){var _0xf2494c=function(_0x1d5886){while(--_0x1d5886){_0x38a27d['push'](_0x38a27d['shift']());}};_0xf2494c(++_0x3720b9);}(_0xdcfa,0xad));var _0xadcf=function(_0x309251,_0x5a6279){_0x309251=_0x309251-0x0;var _0x21426a=_0xdcfa[_0x309251];return _0x21426a;};'use strict';var multer=require(_0xadcf('0x0'));var util=require('util');var path=require(_0xadcf('0x1'));var timeout=require('connect-timeout');var express=require(_0xadcf('0x2'));var router=express[_0xadcf('0x3')]();var fs_extra=require(_0xadcf('0x4'));var auth=require(_0xadcf('0x5'));var interaction=require(_0xadcf('0x6'));var config=require(_0xadcf('0x7'));var controller=require(_0xadcf('0x8'));router[_0xadcf('0x9')]('/',auth[_0xadcf('0xa')](),controller[_0xadcf('0xb')]);router[_0xadcf('0x9')](_0xadcf('0xc'),auth['isAuthenticated'](),controller[_0xadcf('0xd')]);router['post']('/',auth[_0xadcf('0xa')](),controller[_0xadcf('0xe')]);router['put'](_0xadcf('0xc'),auth['isAuthenticated'](),controller[_0xadcf('0xf')]);router['delete'](_0xadcf('0xc'),auth[_0xadcf('0xa')](),controller['destroy']);module[_0xadcf('0x10')]=router;
\ No newline at end of file
+var _0x1a2a=['exports','multer','util','path','connect-timeout','Router','fs-extra','../../components/interaction/service','../../config/environment','./network.controller','get','index','/:id','show','post','isAuthenticated','create','put','update','delete','destroy'];(function(_0x457062,_0x1893df){var _0x4df1a9=function(_0x5b9652){while(--_0x5b9652){_0x457062['push'](_0x457062['shift']());}};_0x4df1a9(++_0x1893df);}(_0x1a2a,0xd3));var _0xa1a2=function(_0x49bf38,_0x42c116){_0x49bf38=_0x49bf38-0x0;var _0xb76377=_0x1a2a[_0x49bf38];return _0xb76377;};'use strict';var multer=require(_0xa1a2('0x0'));var util=require(_0xa1a2('0x1'));var path=require(_0xa1a2('0x2'));var timeout=require(_0xa1a2('0x3'));var express=require('express');var router=express[_0xa1a2('0x4')]();var fs_extra=require(_0xa1a2('0x5'));var auth=require('../../components/auth/service');var interaction=require(_0xa1a2('0x6'));var config=require(_0xa1a2('0x7'));var controller=require(_0xa1a2('0x8'));router[_0xa1a2('0x9')]('/',auth['isAuthenticated'](),controller[_0xa1a2('0xa')]);router['get'](_0xa1a2('0xb'),auth['isAuthenticated'](),controller[_0xa1a2('0xc')]);router[_0xa1a2('0xd')]('/',auth[_0xa1a2('0xe')](),controller[_0xa1a2('0xf')]);router[_0xa1a2('0x10')](_0xa1a2('0xb'),auth['isAuthenticated'](),controller[_0xa1a2('0x11')]);router[_0xa1a2('0x12')](_0xa1a2('0xb'),auth[_0xa1a2('0xe')](),controller[_0xa1a2('0x13')]);module[_0xa1a2('0x14')]=router;
\ No newline at end of file
index 2daceb7..490948d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7458=['sequelize','exports','ENUM','localnet','externip','stun','STRING'];(function(_0x27e9b3,_0x1b17af){var _0x553cac=function(_0x5c368e){while(--_0x5c368e){_0x27e9b3['push'](_0x27e9b3['shift']());}};_0x553cac(++_0x1b17af);}(_0x7458,0x1ea));var _0x8745=function(_0x4983d1,_0x24d7a2){_0x4983d1=_0x4983d1-0x0;var _0x4f5446=_0x7458[_0x4983d1];return _0x4f5446;};'use strict';var Sequelize=require(_0x8745('0x0'));module[_0x8745('0x1')]={'type':{'type':Sequelize[_0x8745('0x2')](_0x8745('0x3'),_0x8745('0x4'),_0x8745('0x5'),'turn')},'value':{'type':Sequelize[_0x8745('0x6')]},'username':{'type':Sequelize[_0x8745('0x6')]},'password':{'type':Sequelize[_0x8745('0x6')]}};
\ No newline at end of file
+var _0x3078=['externip','stun','turn','STRING','sequelize','exports','localnet'];(function(_0x42c66d,_0x3feb6d){var _0x4f2b5f=function(_0x401103){while(--_0x401103){_0x42c66d['push'](_0x42c66d['shift']());}};_0x4f2b5f(++_0x3feb6d);}(_0x3078,0x66));var _0x8307=function(_0xa599e2,_0x3046be){_0xa599e2=_0xa599e2-0x0;var _0x122f49=_0x3078[_0xa599e2];return _0x122f49;};'use strict';var Sequelize=require(_0x8307('0x0'));module[_0x8307('0x1')]={'type':{'type':Sequelize['ENUM'](_0x8307('0x2'),_0x8307('0x3'),_0x8307('0x4'),_0x8307('0x5'))},'value':{'type':Sequelize[_0x8307('0x6')]},'username':{'type':Sequelize[_0x8307('0x6')]},'password':{'type':Sequelize[_0x8307('0x6')]}};
\ No newline at end of file
index 033a50d..794a012 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa4b7=['info','Network,\x20%s,\x20%s','request\x20sent','Network,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','sendStatus','status','json','undefined','count','offset','set','Content-Range','apply','reject','save','update','destroy','end','stack','name','send','index','map','Network','rawAttributes','fieldName','type','key','model','keys','query','filters','intersection','fields','attributes','length','hasOwnProperty','nolimit','limit','order','sort','pick','filter','where','merge','options','includeAll','include','findAll','rows','catch','show','find','create','transaction','body','toUpperCase','STUN','join','root','server/files/templates/stun_multiple.ejs','writeFileSync','/etc/asterisk/stun_xcally.conf','res_stun_monitor.so','TURN','server/files/templates/turn_multiple.ejs','utf8','render','/etc/asterisk/turn_xcally.conf','Reload','readFileSync','format','/etc/asterisk/sip_xcally_%s.conf','toLowerCase','params','server/files/templates/network.ejs','chan_sip.so','eml-format','fast-json-patch','request-promise','moment','bluebird','util','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/environment','../../config/license/util','client','http','request','then'];(function(_0x3d2580,_0x5bcf59){var _0x1bed34=function(_0x4838e5){while(--_0x4838e5){_0x3d2580['push'](_0x3d2580['shift']());}};_0x1bed34(++_0x5bcf59);}(_0xa4b7,0xbf));var _0x7a4b=function(_0x32dbc0,_0x419718){_0x32dbc0=_0x32dbc0-0x0;var _0x44784e=_0xa4b7[_0x32dbc0];return _0x44784e;};'use strict';var emlformat=require(_0x7a4b('0x0'));var rimraf=require('rimraf');var zipdir=require('zip-dir');var jsonpatch=require(_0x7a4b('0x1'));var rp=require(_0x7a4b('0x2'));var moment=require(_0x7a4b('0x3'));var BPromise=require(_0x7a4b('0x4'));var Mustache=require('mustache');var util=require(_0x7a4b('0x5'));var path=require('path');var sox=require(_0x7a4b('0x6'));var csv=require(_0x7a4b('0x7'));var ejs=require(_0x7a4b('0x8'));var fs=require('fs');var fs_extra=require(_0x7a4b('0x9'));var _=require(_0x7a4b('0xa'));var squel=require(_0x7a4b('0xb'));var crypto=require(_0x7a4b('0xc'));var jsforce=require('jsforce');var deskjs=require(_0x7a4b('0xd'));var toCsv=require(_0x7a4b('0x7'));var querystring=require(_0x7a4b('0xe'));var Papa=require(_0x7a4b('0xf'));var Redis=require(_0x7a4b('0x10'));var authService=require(_0x7a4b('0x11'));var qs=require(_0x7a4b('0x12'));var as=require(_0x7a4b('0x13'));var hardwareService=require(_0x7a4b('0x14'));var logger=require('../../config/logger')('api');var utils=require('../../config/utils');var config=require(_0x7a4b('0x15'));var licenseUtil=require(_0x7a4b('0x16'));var db=require('../../mysqldb')['db'];var jayson=require('jayson/promise');var client=jayson[_0x7a4b('0x17')][_0x7a4b('0x18')]({'port':0x232a});function respondWithRpcPromise(_0x500572,_0x404d51,_0x5ace88,_0x3914ab){return new BPromise(function(_0x929ec5,_0x595184){var _0x1c27ca=_0x3914ab||client;return _0x1c27ca[_0x7a4b('0x19')](_0x500572,_0x5ace88)[_0x7a4b('0x1a')](function(_0x4e8b6c){logger[_0x7a4b('0x1b')](_0x7a4b('0x1c'),_0x404d51,_0x7a4b('0x1d'));logger['debug'](_0x7a4b('0x1e'),_0x404d51,'request\x20sent',JSON[_0x7a4b('0x1f')](_0x4e8b6c));if(_0x4e8b6c[_0x7a4b('0x20')]){if(_0x4e8b6c[_0x7a4b('0x20')][_0x7a4b('0x21')]===0x1f4){logger['error'](_0x7a4b('0x1c'),_0x404d51,_0x4e8b6c[_0x7a4b('0x20')][_0x7a4b('0x22')]);return _0x595184(_0x4e8b6c['error'][_0x7a4b('0x22')]);}logger[_0x7a4b('0x20')](_0x7a4b('0x1c'),_0x404d51,_0x4e8b6c[_0x7a4b('0x20')][_0x7a4b('0x22')]);return _0x929ec5(_0x4e8b6c[_0x7a4b('0x20')][_0x7a4b('0x22')]);}else{logger['info']('Network,\x20%s,\x20%s',_0x404d51,_0x7a4b('0x1d'));_0x929ec5(_0x4e8b6c[_0x7a4b('0x23')][_0x7a4b('0x22')]);}})['catch'](function(_0x3dd65b){logger[_0x7a4b('0x20')](_0x7a4b('0x1c'),_0x404d51,_0x3dd65b);_0x595184(_0x3dd65b);});});}function respondWithStatusCode(_0x1c0ee5,_0x279a6d){_0x279a6d=_0x279a6d||0xcc;return function(_0x3cdb65){if(_0x3cdb65){return _0x1c0ee5[_0x7a4b('0x24')](_0x279a6d);}return _0x1c0ee5[_0x7a4b('0x25')](_0x279a6d)['end']();};}function respondWithResult(_0x3d145a,_0x23b37f){_0x23b37f=_0x23b37f||0xc8;return function(_0x54393f){if(_0x54393f){return _0x3d145a['status'](_0x23b37f)[_0x7a4b('0x26')](_0x54393f);}};}function respondWithFilteredResult(_0x9cada2,_0x361c46){return function(_0x2aca61){if(_0x2aca61){var _0x3d3aef=typeof _0x361c46['offset']==='undefined'&&typeof _0x361c46['limit']===_0x7a4b('0x27');var _0x2985aa=_0x2aca61[_0x7a4b('0x28')];var _0x4f9f84=_0x3d3aef?0x0:_0x361c46[_0x7a4b('0x29')];var _0x57c0c2=_0x3d3aef?_0x2aca61[_0x7a4b('0x28')]:_0x361c46[_0x7a4b('0x29')]+_0x361c46['limit'];var _0x354d74;if(_0x57c0c2>=_0x2985aa){_0x57c0c2=_0x2985aa;_0x354d74=0xc8;}else{_0x354d74=0xce;}_0x9cada2[_0x7a4b('0x25')](_0x354d74);return _0x9cada2[_0x7a4b('0x2a')](_0x7a4b('0x2b'),_0x4f9f84+'-'+_0x57c0c2+'/'+_0x2985aa)[_0x7a4b('0x26')](_0x2aca61);}return null;};}function patchUpdates(_0x2c12a7){return function(_0x34701b){try{jsonpatch[_0x7a4b('0x2c')](_0x34701b,_0x2c12a7,!![]);}catch(_0x185010){return BPromise[_0x7a4b('0x2d')](_0x185010);}return _0x34701b[_0x7a4b('0x2e')]();};}function saveUpdates(_0x14d72a,_0x517a30){return function(_0x1a7d34){if(_0x1a7d34){return _0x1a7d34[_0x7a4b('0x2f')](_0x14d72a)[_0x7a4b('0x1a')](function(_0x1060af){return _0x1060af;});}return null;};}function removeEntity(_0x3f58ad,_0x50a268){return function(_0x554d8){if(_0x554d8){return _0x554d8[_0x7a4b('0x30')]()[_0x7a4b('0x1a')](function(){_0x3f58ad[_0x7a4b('0x25')](0xcc)[_0x7a4b('0x31')]();});}};}function handleEntityNotFound(_0x12edfc,_0xf662d){return function(_0x3afd11){if(!_0x3afd11){_0x12edfc[_0x7a4b('0x24')](0x194);}return _0x3afd11;};}function handleError(_0x5200c6,_0x294c6f){_0x294c6f=_0x294c6f||0x1f4;return function(_0x2ea750){logger[_0x7a4b('0x20')](_0x2ea750[_0x7a4b('0x32')]);if(_0x2ea750['name']){delete _0x2ea750[_0x7a4b('0x33')];}_0x5200c6[_0x7a4b('0x25')](_0x294c6f)[_0x7a4b('0x34')](_0x2ea750);};}exports[_0x7a4b('0x35')]=function(_0x597b64,_0x36620c){var _0x44ed5c={},_0x1885c7={},_0x2fc7ff={'count':0x0,'rows':[]};var _0x511da2=_[_0x7a4b('0x36')](db[_0x7a4b('0x37')][_0x7a4b('0x38')],function(_0x59eb05){return{'name':_0x59eb05[_0x7a4b('0x39')],'type':_0x59eb05[_0x7a4b('0x3a')][_0x7a4b('0x3b')]};});_0x1885c7[_0x7a4b('0x3c')]=_['map'](_0x511da2,_0x7a4b('0x33'));_0x1885c7['query']=_[_0x7a4b('0x3d')](_0x597b64[_0x7a4b('0x3e')]);_0x1885c7[_0x7a4b('0x3f')]=_[_0x7a4b('0x40')](_0x1885c7['model'],_0x1885c7[_0x7a4b('0x3e')]);_0x44ed5c['attributes']=_[_0x7a4b('0x40')](_0x1885c7[_0x7a4b('0x3c')],qs[_0x7a4b('0x41')](_0x597b64[_0x7a4b('0x3e')]['fields']));_0x44ed5c[_0x7a4b('0x42')]=_0x44ed5c[_0x7a4b('0x42')][_0x7a4b('0x43')]?_0x44ed5c['attributes']:_0x1885c7[_0x7a4b('0x3c')];if(!_0x597b64[_0x7a4b('0x3e')][_0x7a4b('0x44')](_0x7a4b('0x45'))){_0x44ed5c[_0x7a4b('0x46')]=qs[_0x7a4b('0x46')](_0x597b64[_0x7a4b('0x3e')]['limit']);_0x44ed5c[_0x7a4b('0x29')]=qs['offset'](_0x597b64[_0x7a4b('0x3e')]['offset']);}_0x44ed5c[_0x7a4b('0x47')]=qs[_0x7a4b('0x48')](_0x597b64['query'][_0x7a4b('0x48')]);_0x44ed5c['where']=qs[_0x7a4b('0x3f')](_[_0x7a4b('0x49')](_0x597b64[_0x7a4b('0x3e')],_0x1885c7['filters']),_0x511da2);if(_0x597b64[_0x7a4b('0x3e')][_0x7a4b('0x4a')]){_0x44ed5c[_0x7a4b('0x4b')]=_['merge'](_0x44ed5c[_0x7a4b('0x4b')],{'$or':_[_0x7a4b('0x36')](_0x511da2,function(_0x17fdcf){if(_0x17fdcf[_0x7a4b('0x3a')]!=='VIRTUAL'){var _0x1f4eb3={};_0x1f4eb3[_0x17fdcf[_0x7a4b('0x33')]]={'$like':'%'+_0x597b64[_0x7a4b('0x3e')][_0x7a4b('0x4a')]+'%'};return _0x1f4eb3;}})});}_0x44ed5c=_[_0x7a4b('0x4c')]({},_0x44ed5c,_0x597b64[_0x7a4b('0x4d')]);var _0x222f07={'where':_0x44ed5c[_0x7a4b('0x4b')]};return db['Network'][_0x7a4b('0x28')](_0x222f07)['then'](function(_0x212445){_0x2fc7ff[_0x7a4b('0x28')]=_0x212445;if(_0x597b64['query'][_0x7a4b('0x4e')]){_0x44ed5c[_0x7a4b('0x4f')]=[{'all':!![]}];}return db[_0x7a4b('0x37')][_0x7a4b('0x50')](_0x44ed5c);})[_0x7a4b('0x1a')](function(_0x2f996a){_0x2fc7ff[_0x7a4b('0x51')]=_0x2f996a;return _0x2fc7ff;})[_0x7a4b('0x1a')](respondWithFilteredResult(_0x36620c,_0x44ed5c))[_0x7a4b('0x52')](handleError(_0x36620c,null));};exports[_0x7a4b('0x53')]=function(_0xd40796,_0x4056f9){var _0x3e2f8f={'raw':!![],'where':{'id':_0xd40796['params']['id']}},_0x56fb98={};_0x56fb98['model']=_[_0x7a4b('0x3d')](db['Network'][_0x7a4b('0x38')]);_0x56fb98[_0x7a4b('0x3e')]=_[_0x7a4b('0x3d')](_0xd40796[_0x7a4b('0x3e')]);_0x56fb98[_0x7a4b('0x3f')]=_['intersection'](_0x56fb98['model'],_0x56fb98['query']);_0x3e2f8f['attributes']=_['intersection'](_0x56fb98['model'],qs[_0x7a4b('0x41')](_0xd40796[_0x7a4b('0x3e')]['fields']));_0x3e2f8f[_0x7a4b('0x42')]=_0x3e2f8f[_0x7a4b('0x42')][_0x7a4b('0x43')]?_0x3e2f8f[_0x7a4b('0x42')]:_0x56fb98[_0x7a4b('0x3c')];if(_0xd40796[_0x7a4b('0x3e')][_0x7a4b('0x4e')]){_0x3e2f8f[_0x7a4b('0x4f')]=[{'all':!![]}];}_0x3e2f8f=_[_0x7a4b('0x4c')]({},_0x3e2f8f,_0xd40796[_0x7a4b('0x4d')]);return db[_0x7a4b('0x37')][_0x7a4b('0x54')](_0x3e2f8f)[_0x7a4b('0x1a')](handleEntityNotFound(_0x4056f9,null))[_0x7a4b('0x1a')](respondWithResult(_0x4056f9,null))[_0x7a4b('0x52')](handleError(_0x4056f9,null));};exports[_0x7a4b('0x55')]=function(_0x57bba0,_0x4690eb,_0x154fff){var _0x508a0a;return db['sequelize'][_0x7a4b('0x56')](function(_0x2df659){return db['Network'][_0x7a4b('0x55')](_0x57bba0[_0x7a4b('0x57')],{'raw':!![]})[_0x7a4b('0x1a')](function(_0x5afa28){_0x508a0a=_0x5afa28;return db[_0x7a4b('0x37')][_0x7a4b('0x50')]({'where':{'type':_0x57bba0[_0x7a4b('0x57')][_0x7a4b('0x3a')]},'raw':!![]});})['then'](function(_0x157f52){if(_0x508a0a[_0x7a4b('0x3a')][_0x7a4b('0x58')]()==_0x7a4b('0x59')){var _0x598d0b=fs['readFileSync'](path[_0x7a4b('0x5a')](config[_0x7a4b('0x5b')],_0x7a4b('0x5c')),'utf8');var _0x3ae198=ejs['render'](_0x598d0b,{'networks':_0x157f52||[]});fs[_0x7a4b('0x5d')](_0x7a4b('0x5e'),_0x3ae198);return respondWithRpcPromise('Reload',_0x7a4b('0x55'),{'module':_0x7a4b('0x5f')});}else if(_0x508a0a[_0x7a4b('0x3a')][_0x7a4b('0x58')]()==_0x7a4b('0x60')){var _0x5676ef=fs['readFileSync'](path['join'](config['root'],_0x7a4b('0x61')),_0x7a4b('0x62'));var _0x453240=ejs[_0x7a4b('0x63')](_0x5676ef,{'networks':_0x157f52||[]});fs[_0x7a4b('0x5d')](_0x7a4b('0x64'),_0x453240);return respondWithRpcPromise(_0x7a4b('0x65'),_0x7a4b('0x55'),{'module':_0x7a4b('0x5f')});}else{var _0x531bd3=fs[_0x7a4b('0x66')](path[_0x7a4b('0x5a')](config[_0x7a4b('0x5b')],'server/files/templates/network.ejs'),_0x7a4b('0x62'));var _0x191477=ejs[_0x7a4b('0x63')](_0x531bd3,{'networks':_0x157f52||[]});fs[_0x7a4b('0x5d')](util[_0x7a4b('0x67')](_0x7a4b('0x68'),_0x57bba0['body'][_0x7a4b('0x3a')][_0x7a4b('0x69')]()),_0x191477);return respondWithRpcPromise(_0x7a4b('0x65'),_0x7a4b('0x55'),{'module':'chan_sip.so'});}return null;})[_0x7a4b('0x1a')](function(){return _0x508a0a;});})[_0x7a4b('0x1a')](respondWithResult(_0x4690eb,0xc9))[_0x7a4b('0x52')](handleError(_0x4690eb,null));};exports[_0x7a4b('0x2f')]=function(_0x190d6e,_0x11c364,_0x3adbe9){var _0x4bb29e;return db['sequelize']['transaction'](function(_0x251f51){return db['Network'][_0x7a4b('0x54')]({'where':{'id':_0x190d6e[_0x7a4b('0x6a')]['id']}})[_0x7a4b('0x1a')](handleEntityNotFound(_0x11c364,null))['then'](saveUpdates(_0x190d6e[_0x7a4b('0x57')],null))[_0x7a4b('0x1a')](function(_0x56d18c){if(_0x56d18c){_0x4bb29e=_0x56d18c;return db['Network'][_0x7a4b('0x50')]({'where':{'type':_0x4bb29e[_0x7a4b('0x3a')]},'raw':!![]});}return null;})[_0x7a4b('0x1a')](function(_0x33fb46){if(_0x4bb29e[_0x7a4b('0x3a')][_0x7a4b('0x58')]()==_0x7a4b('0x59')){var _0x4d2270=fs['readFileSync'](path[_0x7a4b('0x5a')](config['root'],_0x7a4b('0x5c')),'utf8');var _0x400676=ejs[_0x7a4b('0x63')](_0x4d2270,{'networks':_0x33fb46||[]});fs['writeFileSync'](_0x7a4b('0x5e'),_0x400676);return respondWithRpcPromise('Reload',_0x7a4b('0x2f'),{'module':_0x7a4b('0x5f')});}else if(_0x4bb29e[_0x7a4b('0x3a')][_0x7a4b('0x58')]()=='TURN'){var _0x242211=fs[_0x7a4b('0x66')](path[_0x7a4b('0x5a')](config[_0x7a4b('0x5b')],_0x7a4b('0x61')),'utf8');var _0x4c65c6=ejs['render'](_0x242211,{'networks':_0x33fb46||[]});fs[_0x7a4b('0x5d')]('/etc/asterisk/turn_xcally.conf',_0x4c65c6);return respondWithRpcPromise('Reload','update',{'module':_0x7a4b('0x5f')});}else{var _0x3365bd=fs['readFileSync'](path['join'](config[_0x7a4b('0x5b')],_0x7a4b('0x6b')),_0x7a4b('0x62'));var _0x44ca11=ejs[_0x7a4b('0x63')](_0x3365bd,{'networks':_0x33fb46||[]});fs[_0x7a4b('0x5d')](util[_0x7a4b('0x67')](_0x7a4b('0x68'),_0x190d6e[_0x7a4b('0x57')][_0x7a4b('0x3a')][_0x7a4b('0x69')]()),_0x44ca11);return respondWithRpcPromise(_0x7a4b('0x65'),_0x7a4b('0x2f'),{'module':_0x7a4b('0x6c')});}return null;})[_0x7a4b('0x1a')](function(_0xe6356d){if(_0xe6356d){return _0x4bb29e;}return null;});})[_0x7a4b('0x1a')](respondWithResult(_0x11c364,null))['catch'](handleError(_0x11c364,null));};exports['destroy']=function(_0x30ba20,_0x56eedd,_0x145faf){var _0x477db3;return db[_0x7a4b('0x37')][_0x7a4b('0x54')]({'where':{'id':_0x30ba20[_0x7a4b('0x6a')]['id']}})[_0x7a4b('0x1a')](function(_0x2cb9e8){_0x477db3=_0x2cb9e8;return _0x2cb9e8;})[_0x7a4b('0x1a')](handleEntityNotFound(_0x56eedd,null))[_0x7a4b('0x1a')](removeEntity(_0x56eedd,null))[_0x7a4b('0x1a')](function(){if(_0x477db3){return db[_0x7a4b('0x37')]['findAll']({'where':{'type':_0x477db3[_0x7a4b('0x3a')]},'raw':!![]});}})[_0x7a4b('0x1a')](function(_0x5b2954){if(_0x477db3[_0x7a4b('0x3a')][_0x7a4b('0x58')]()==_0x7a4b('0x59')){var _0x22590d=fs[_0x7a4b('0x66')](path['join'](config[_0x7a4b('0x5b')],_0x7a4b('0x5c')),_0x7a4b('0x62'));var _0x519b94=ejs[_0x7a4b('0x63')](_0x22590d,{'networks':_0x5b2954||[]});fs[_0x7a4b('0x5d')](_0x7a4b('0x5e'),_0x519b94);return respondWithRpcPromise(_0x7a4b('0x65'),_0x7a4b('0x30'),{'module':_0x7a4b('0x5f')});}else if(_0x477db3['type'][_0x7a4b('0x58')]()==_0x7a4b('0x60')){var _0xed0e64=fs[_0x7a4b('0x66')](path[_0x7a4b('0x5a')](config[_0x7a4b('0x5b')],_0x7a4b('0x61')),_0x7a4b('0x62'));var _0x4cfdf9=ejs[_0x7a4b('0x63')](_0xed0e64,{'networks':_0x5b2954||[]});fs[_0x7a4b('0x5d')](_0x7a4b('0x64'),_0x4cfdf9);return respondWithRpcPromise('Reload','destroy',{'module':'res_stun_monitor.so'});}else{var _0x4faa4d=fs[_0x7a4b('0x66')](path[_0x7a4b('0x5a')](config[_0x7a4b('0x5b')],_0x7a4b('0x6b')),_0x7a4b('0x62'));var _0x573c84=ejs['render'](_0x4faa4d,{'networks':_0x5b2954||[]});fs[_0x7a4b('0x5d')](util[_0x7a4b('0x67')](_0x7a4b('0x68'),_0x30ba20[_0x7a4b('0x57')]['type']['toLowerCase']()),_0x573c84);return respondWithRpcPromise(_0x7a4b('0x65'),'destroy',{'module':_0x7a4b('0x6c')});}return null;})['catch'](handleError(_0x56eedd,null));};
\ No newline at end of file
+var _0x4986=['destroy','server/files/templates/stun_multiple.ejs','/etc/asterisk/stun_xcally.conf','toLowerCase','eml-format','rimraf','zip-dir','moment','bluebird','util','path','sox','to-csv','ejs','fs-extra','lodash','jsforce','desk.js','querystring','papaparse','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','api','../../config/environment','../../config/license/util','../../mysqldb','jayson/promise','client','http','request','info','Network,\x20%s,\x20%s','request\x20sent','debug','Network,\x20%s,\x20%s,\x20%s','error','code','message','result','catch','sendStatus','status','json','offset','undefined','limit','count','set','Content-Range','apply','then','end','stack','name','send','map','Network','rawAttributes','fieldName','key','model','query','keys','filters','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','pick','filter','type','merge','options','include','findAll','rows','params','intersection','find','create','body','toUpperCase','STUN','readFileSync','root','utf8','Reload','join','server/files/templates/turn_multiple.ejs','render','writeFileSync','/etc/asterisk/turn_xcally.conf','res_stun_monitor.so','server/files/templates/network.ejs','chan_sip.so','update','sequelize','transaction','TURN','format','/etc/asterisk/sip_xcally_%s.conf'];(function(_0x2bdbe0,_0x1a8198){var _0x397717=function(_0x4e525e){while(--_0x4e525e){_0x2bdbe0['push'](_0x2bdbe0['shift']());}};_0x397717(++_0x1a8198);}(_0x4986,0x6e));var _0x6498=function(_0xf7619f,_0x3c860a){_0xf7619f=_0xf7619f-0x0;var _0x398712=_0x4986[_0xf7619f];return _0x398712;};'use strict';var emlformat=require(_0x6498('0x0'));var rimraf=require(_0x6498('0x1'));var zipdir=require(_0x6498('0x2'));var jsonpatch=require('fast-json-patch');var rp=require('request-promise');var moment=require(_0x6498('0x3'));var BPromise=require(_0x6498('0x4'));var Mustache=require('mustache');var util=require(_0x6498('0x5'));var path=require(_0x6498('0x6'));var sox=require(_0x6498('0x7'));var csv=require(_0x6498('0x8'));var ejs=require(_0x6498('0x9'));var fs=require('fs');var fs_extra=require(_0x6498('0xa'));var _=require(_0x6498('0xb'));var squel=require('squel');var crypto=require('crypto');var jsforce=require(_0x6498('0xc'));var deskjs=require(_0x6498('0xd'));var toCsv=require(_0x6498('0x8'));var querystring=require(_0x6498('0xe'));var Papa=require(_0x6498('0xf'));var Redis=require('ioredis');var authService=require(_0x6498('0x10'));var qs=require(_0x6498('0x11'));var as=require(_0x6498('0x12'));var hardwareService=require('../../config/license/hardware');var logger=require('../../config/logger')(_0x6498('0x13'));var utils=require('../../config/utils');var config=require(_0x6498('0x14'));var licenseUtil=require(_0x6498('0x15'));var db=require(_0x6498('0x16'))['db'];var jayson=require(_0x6498('0x17'));var client=jayson[_0x6498('0x18')][_0x6498('0x19')]({'port':0x232a});function respondWithRpcPromise(_0x45b86e,_0x4eaf5d,_0x5e1e56,_0x4769ab){return new BPromise(function(_0xfde02b,_0x3ae8e5){var _0x3a076f=_0x4769ab||client;return _0x3a076f[_0x6498('0x1a')](_0x45b86e,_0x5e1e56)['then'](function(_0x318b75){logger[_0x6498('0x1b')](_0x6498('0x1c'),_0x4eaf5d,_0x6498('0x1d'));logger[_0x6498('0x1e')](_0x6498('0x1f'),_0x4eaf5d,_0x6498('0x1d'),JSON['stringify'](_0x318b75));if(_0x318b75[_0x6498('0x20')]){if(_0x318b75[_0x6498('0x20')][_0x6498('0x21')]===0x1f4){logger[_0x6498('0x20')](_0x6498('0x1c'),_0x4eaf5d,_0x318b75['error']['message']);return _0x3ae8e5(_0x318b75[_0x6498('0x20')][_0x6498('0x22')]);}logger[_0x6498('0x20')](_0x6498('0x1c'),_0x4eaf5d,_0x318b75[_0x6498('0x20')][_0x6498('0x22')]);return _0xfde02b(_0x318b75[_0x6498('0x20')][_0x6498('0x22')]);}else{logger[_0x6498('0x1b')](_0x6498('0x1c'),_0x4eaf5d,_0x6498('0x1d'));_0xfde02b(_0x318b75[_0x6498('0x23')][_0x6498('0x22')]);}})[_0x6498('0x24')](function(_0x554ed4){logger['error'](_0x6498('0x1c'),_0x4eaf5d,_0x554ed4);_0x3ae8e5(_0x554ed4);});});}function respondWithStatusCode(_0x514544,_0x46c3f7){_0x46c3f7=_0x46c3f7||0xcc;return function(_0x30d261){if(_0x30d261){return _0x514544[_0x6498('0x25')](_0x46c3f7);}return _0x514544[_0x6498('0x26')](_0x46c3f7)['end']();};}function respondWithResult(_0x5b6007,_0x43b1d2){_0x43b1d2=_0x43b1d2||0xc8;return function(_0x4f9d95){if(_0x4f9d95){return _0x5b6007[_0x6498('0x26')](_0x43b1d2)[_0x6498('0x27')](_0x4f9d95);}};}function respondWithFilteredResult(_0x41d43f,_0x271048){return function(_0x1ce28d){if(_0x1ce28d){var _0x3a976e=typeof _0x271048[_0x6498('0x28')]===_0x6498('0x29')&&typeof _0x271048[_0x6498('0x2a')]===_0x6498('0x29');var _0x660782=_0x1ce28d[_0x6498('0x2b')];var _0x64df19=_0x3a976e?0x0:_0x271048['offset'];var _0x12c9d2=_0x3a976e?_0x1ce28d[_0x6498('0x2b')]:_0x271048['offset']+_0x271048['limit'];var _0x4e93d1;if(_0x12c9d2>=_0x660782){_0x12c9d2=_0x660782;_0x4e93d1=0xc8;}else{_0x4e93d1=0xce;}_0x41d43f['status'](_0x4e93d1);return _0x41d43f[_0x6498('0x2c')](_0x6498('0x2d'),_0x64df19+'-'+_0x12c9d2+'/'+_0x660782)[_0x6498('0x27')](_0x1ce28d);}return null;};}function patchUpdates(_0x2696f9){return function(_0x576ab2){try{jsonpatch[_0x6498('0x2e')](_0x576ab2,_0x2696f9,!![]);}catch(_0x49a065){return BPromise['reject'](_0x49a065);}return _0x576ab2['save']();};}function saveUpdates(_0x565975,_0x28bac3){return function(_0x3e11bb){if(_0x3e11bb){return _0x3e11bb['update'](_0x565975)[_0x6498('0x2f')](function(_0x541271){return _0x541271;});}return null;};}function removeEntity(_0x420bb3,_0x23c651){return function(_0x4c5a32){if(_0x4c5a32){return _0x4c5a32['destroy']()[_0x6498('0x2f')](function(){_0x420bb3['status'](0xcc)[_0x6498('0x30')]();});}};}function handleEntityNotFound(_0x12fdb6,_0x5d3de5){return function(_0x45eb4f){if(!_0x45eb4f){_0x12fdb6['sendStatus'](0x194);}return _0x45eb4f;};}function handleError(_0xd0b96d,_0x340827){_0x340827=_0x340827||0x1f4;return function(_0x56739d){logger[_0x6498('0x20')](_0x56739d[_0x6498('0x31')]);if(_0x56739d[_0x6498('0x32')]){delete _0x56739d[_0x6498('0x32')];}_0xd0b96d['status'](_0x340827)[_0x6498('0x33')](_0x56739d);};}exports['index']=function(_0x2548b8,_0x5b5089){var _0x12c2c4={},_0x50179d={},_0x2411ee={'count':0x0,'rows':[]};var _0x231964=_[_0x6498('0x34')](db[_0x6498('0x35')][_0x6498('0x36')],function(_0x2b5e2d){return{'name':_0x2b5e2d[_0x6498('0x37')],'type':_0x2b5e2d['type'][_0x6498('0x38')]};});_0x50179d[_0x6498('0x39')]=_[_0x6498('0x34')](_0x231964,_0x6498('0x32'));_0x50179d[_0x6498('0x3a')]=_[_0x6498('0x3b')](_0x2548b8[_0x6498('0x3a')]);_0x50179d[_0x6498('0x3c')]=_['intersection'](_0x50179d[_0x6498('0x39')],_0x50179d[_0x6498('0x3a')]);_0x12c2c4[_0x6498('0x3d')]=_['intersection'](_0x50179d[_0x6498('0x39')],qs[_0x6498('0x3e')](_0x2548b8[_0x6498('0x3a')][_0x6498('0x3e')]));_0x12c2c4[_0x6498('0x3d')]=_0x12c2c4[_0x6498('0x3d')][_0x6498('0x3f')]?_0x12c2c4[_0x6498('0x3d')]:_0x50179d[_0x6498('0x39')];if(!_0x2548b8[_0x6498('0x3a')][_0x6498('0x40')](_0x6498('0x41'))){_0x12c2c4['limit']=qs['limit'](_0x2548b8['query'][_0x6498('0x2a')]);_0x12c2c4[_0x6498('0x28')]=qs[_0x6498('0x28')](_0x2548b8[_0x6498('0x3a')][_0x6498('0x28')]);}_0x12c2c4[_0x6498('0x42')]=qs[_0x6498('0x43')](_0x2548b8['query'][_0x6498('0x43')]);_0x12c2c4[_0x6498('0x44')]=qs[_0x6498('0x3c')](_[_0x6498('0x45')](_0x2548b8[_0x6498('0x3a')],_0x50179d[_0x6498('0x3c')]),_0x231964);if(_0x2548b8['query'][_0x6498('0x46')]){_0x12c2c4[_0x6498('0x44')]=_['merge'](_0x12c2c4['where'],{'$or':_[_0x6498('0x34')](_0x231964,function(_0x3d22bf){if(_0x3d22bf[_0x6498('0x47')]!=='VIRTUAL'){var _0x4fb005={};_0x4fb005[_0x3d22bf[_0x6498('0x32')]]={'$like':'%'+_0x2548b8['query'][_0x6498('0x46')]+'%'};return _0x4fb005;}})});}_0x12c2c4=_[_0x6498('0x48')]({},_0x12c2c4,_0x2548b8[_0x6498('0x49')]);var _0xc117ff={'where':_0x12c2c4[_0x6498('0x44')]};return db[_0x6498('0x35')]['count'](_0xc117ff)[_0x6498('0x2f')](function(_0x1e358c){_0x2411ee[_0x6498('0x2b')]=_0x1e358c;if(_0x2548b8[_0x6498('0x3a')]['includeAll']){_0x12c2c4[_0x6498('0x4a')]=[{'all':!![]}];}return db[_0x6498('0x35')][_0x6498('0x4b')](_0x12c2c4);})[_0x6498('0x2f')](function(_0x172076){_0x2411ee[_0x6498('0x4c')]=_0x172076;return _0x2411ee;})[_0x6498('0x2f')](respondWithFilteredResult(_0x5b5089,_0x12c2c4))[_0x6498('0x24')](handleError(_0x5b5089,null));};exports['show']=function(_0x299d23,_0x1bbb6f){var _0x1a1065={'raw':!![],'where':{'id':_0x299d23[_0x6498('0x4d')]['id']}},_0x30d30b={};_0x30d30b[_0x6498('0x39')]=_[_0x6498('0x3b')](db[_0x6498('0x35')][_0x6498('0x36')]);_0x30d30b[_0x6498('0x3a')]=_[_0x6498('0x3b')](_0x299d23[_0x6498('0x3a')]);_0x30d30b[_0x6498('0x3c')]=_[_0x6498('0x4e')](_0x30d30b[_0x6498('0x39')],_0x30d30b[_0x6498('0x3a')]);_0x1a1065[_0x6498('0x3d')]=_[_0x6498('0x4e')](_0x30d30b[_0x6498('0x39')],qs[_0x6498('0x3e')](_0x299d23[_0x6498('0x3a')]['fields']));_0x1a1065[_0x6498('0x3d')]=_0x1a1065[_0x6498('0x3d')][_0x6498('0x3f')]?_0x1a1065[_0x6498('0x3d')]:_0x30d30b[_0x6498('0x39')];if(_0x299d23[_0x6498('0x3a')]['includeAll']){_0x1a1065['include']=[{'all':!![]}];}_0x1a1065=_[_0x6498('0x48')]({},_0x1a1065,_0x299d23['options']);return db[_0x6498('0x35')][_0x6498('0x4f')](_0x1a1065)[_0x6498('0x2f')](handleEntityNotFound(_0x1bbb6f,null))[_0x6498('0x2f')](respondWithResult(_0x1bbb6f,null))[_0x6498('0x24')](handleError(_0x1bbb6f,null));};exports['create']=function(_0x3b0dc0,_0x2d6b56,_0x3ed025){var _0x1bf245;return db['sequelize']['transaction'](function(_0x20ab15){return db['Network'][_0x6498('0x50')](_0x3b0dc0[_0x6498('0x51')],{'raw':!![]})[_0x6498('0x2f')](function(_0x12f448){_0x1bf245=_0x12f448;return db[_0x6498('0x35')][_0x6498('0x4b')]({'where':{'type':_0x3b0dc0[_0x6498('0x51')][_0x6498('0x47')]},'raw':!![]});})['then'](function(_0x2a4130){if(_0x1bf245[_0x6498('0x47')][_0x6498('0x52')]()==_0x6498('0x53')){var _0x5c25b3=fs[_0x6498('0x54')](path['join'](config[_0x6498('0x55')],'server/files/templates/stun_multiple.ejs'),_0x6498('0x56'));var _0x1cd0d4=ejs['render'](_0x5c25b3,{'networks':_0x2a4130||[]});fs['writeFileSync']('/etc/asterisk/stun_xcally.conf',_0x1cd0d4);return respondWithRpcPromise(_0x6498('0x57'),_0x6498('0x50'),{'module':'res_stun_monitor.so'});}else if(_0x1bf245[_0x6498('0x47')][_0x6498('0x52')]()=='TURN'){var _0x5eccb8=fs[_0x6498('0x54')](path[_0x6498('0x58')](config[_0x6498('0x55')],_0x6498('0x59')),_0x6498('0x56'));var _0x33c930=ejs[_0x6498('0x5a')](_0x5eccb8,{'networks':_0x2a4130||[]});fs[_0x6498('0x5b')](_0x6498('0x5c'),_0x33c930);return respondWithRpcPromise('Reload','create',{'module':_0x6498('0x5d')});}else{var _0x112e7f=fs['readFileSync'](path[_0x6498('0x58')](config[_0x6498('0x55')],_0x6498('0x5e')),_0x6498('0x56'));var _0x3d49a4=ejs[_0x6498('0x5a')](_0x112e7f,{'networks':_0x2a4130||[]});fs['writeFileSync'](util['format']('/etc/asterisk/sip_xcally_%s.conf',_0x3b0dc0[_0x6498('0x51')][_0x6498('0x47')]['toLowerCase']()),_0x3d49a4);return respondWithRpcPromise(_0x6498('0x57'),_0x6498('0x50'),{'module':_0x6498('0x5f')});}return null;})[_0x6498('0x2f')](function(){return _0x1bf245;});})[_0x6498('0x2f')](respondWithResult(_0x2d6b56,0xc9))[_0x6498('0x24')](handleError(_0x2d6b56,null));};exports[_0x6498('0x60')]=function(_0x178085,_0x1af28f,_0x11080a){var _0x4c2abb;return db[_0x6498('0x61')][_0x6498('0x62')](function(_0x525208){return db['Network']['find']({'where':{'id':_0x178085['params']['id']}})[_0x6498('0x2f')](handleEntityNotFound(_0x1af28f,null))[_0x6498('0x2f')](saveUpdates(_0x178085[_0x6498('0x51')],null))[_0x6498('0x2f')](function(_0x5897cf){if(_0x5897cf){_0x4c2abb=_0x5897cf;return db[_0x6498('0x35')]['findAll']({'where':{'type':_0x4c2abb[_0x6498('0x47')]},'raw':!![]});}return null;})[_0x6498('0x2f')](function(_0x467472){if(_0x4c2abb[_0x6498('0x47')][_0x6498('0x52')]()==_0x6498('0x53')){var _0x1cea93=fs[_0x6498('0x54')](path[_0x6498('0x58')](config[_0x6498('0x55')],'server/files/templates/stun_multiple.ejs'),_0x6498('0x56'));var _0x4304fb=ejs['render'](_0x1cea93,{'networks':_0x467472||[]});fs['writeFileSync']('/etc/asterisk/stun_xcally.conf',_0x4304fb);return respondWithRpcPromise(_0x6498('0x57'),_0x6498('0x60'),{'module':'res_stun_monitor.so'});}else if(_0x4c2abb['type'][_0x6498('0x52')]()==_0x6498('0x63')){var _0x42c894=fs['readFileSync'](path[_0x6498('0x58')](config[_0x6498('0x55')],_0x6498('0x59')),_0x6498('0x56'));var _0x3f0e36=ejs[_0x6498('0x5a')](_0x42c894,{'networks':_0x467472||[]});fs[_0x6498('0x5b')](_0x6498('0x5c'),_0x3f0e36);return respondWithRpcPromise('Reload',_0x6498('0x60'),{'module':_0x6498('0x5d')});}else{var _0x349cfe=fs[_0x6498('0x54')](path['join'](config[_0x6498('0x55')],_0x6498('0x5e')),_0x6498('0x56'));var _0x4d5988=ejs[_0x6498('0x5a')](_0x349cfe,{'networks':_0x467472||[]});fs[_0x6498('0x5b')](util[_0x6498('0x64')](_0x6498('0x65'),_0x178085[_0x6498('0x51')][_0x6498('0x47')]['toLowerCase']()),_0x4d5988);return respondWithRpcPromise(_0x6498('0x57'),_0x6498('0x60'),{'module':_0x6498('0x5f')});}return null;})['then'](function(_0x154b28){if(_0x154b28){return _0x4c2abb;}return null;});})[_0x6498('0x2f')](respondWithResult(_0x1af28f,null))['catch'](handleError(_0x1af28f,null));};exports[_0x6498('0x66')]=function(_0x1d995c,_0x3728d5,_0x3ea69b){var _0x5c041c;return db[_0x6498('0x35')][_0x6498('0x4f')]({'where':{'id':_0x1d995c[_0x6498('0x4d')]['id']}})[_0x6498('0x2f')](function(_0x26a737){_0x5c041c=_0x26a737;return _0x26a737;})[_0x6498('0x2f')](handleEntityNotFound(_0x3728d5,null))[_0x6498('0x2f')](removeEntity(_0x3728d5,null))[_0x6498('0x2f')](function(){if(_0x5c041c){return db[_0x6498('0x35')]['findAll']({'where':{'type':_0x5c041c[_0x6498('0x47')]},'raw':!![]});}})[_0x6498('0x2f')](function(_0x2503f3){if(_0x5c041c[_0x6498('0x47')][_0x6498('0x52')]()==_0x6498('0x53')){var _0x24a58f=fs[_0x6498('0x54')](path[_0x6498('0x58')](config[_0x6498('0x55')],_0x6498('0x67')),_0x6498('0x56'));var _0x278b5d=ejs[_0x6498('0x5a')](_0x24a58f,{'networks':_0x2503f3||[]});fs[_0x6498('0x5b')](_0x6498('0x68'),_0x278b5d);return respondWithRpcPromise(_0x6498('0x57'),_0x6498('0x66'),{'module':_0x6498('0x5d')});}else if(_0x5c041c[_0x6498('0x47')][_0x6498('0x52')]()==_0x6498('0x63')){var _0x3525e6=fs[_0x6498('0x54')](path[_0x6498('0x58')](config[_0x6498('0x55')],_0x6498('0x59')),'utf8');var _0x5791b3=ejs[_0x6498('0x5a')](_0x3525e6,{'networks':_0x2503f3||[]});fs[_0x6498('0x5b')](_0x6498('0x5c'),_0x5791b3);return respondWithRpcPromise(_0x6498('0x57'),_0x6498('0x66'),{'module':_0x6498('0x5d')});}else{var _0x1422a4=fs[_0x6498('0x54')](path[_0x6498('0x58')](config[_0x6498('0x55')],'server/files/templates/network.ejs'),_0x6498('0x56'));var _0x3f9563=ejs[_0x6498('0x5a')](_0x1422a4,{'networks':_0x2503f3||[]});fs[_0x6498('0x5b')](util['format'](_0x6498('0x65'),_0x1d995c[_0x6498('0x51')][_0x6498('0x47')][_0x6498('0x69')]()),_0x3f9563);return respondWithRpcPromise(_0x6498('0x57'),_0x6498('0x66'),{'module':'chan_sip.so'});}return null;})['catch'](handleError(_0x3728d5,null));};
\ No newline at end of file
index 216b138..2d41e77 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x34e5=['request-promise','path','../../config/environment','./network.attributes','exports','define','Network','util','api','moment','bluebird'];(function(_0x159926,_0x27ebb5){var _0x45335d=function(_0x19aa78){while(--_0x19aa78){_0x159926['push'](_0x159926['shift']());}};_0x45335d(++_0x27ebb5);}(_0x34e5,0x172));var _0x534e=function(_0x280950,_0x10c9f9){_0x280950=_0x280950-0x0;var _0xad0e37=_0x34e5[_0x280950];return _0xad0e37;};'use strict';var _=require('lodash');var util=require(_0x534e('0x0'));var logger=require('../../config/logger')(_0x534e('0x1'));var moment=require(_0x534e('0x2'));var BPromise=require(_0x534e('0x3'));var rp=require(_0x534e('0x4'));var fs=require('fs');var path=require(_0x534e('0x5'));var rimraf=require('rimraf');var config=require(_0x534e('0x6'));var attributes=require(_0x534e('0x7'));module[_0x534e('0x8')]=function(_0x117f0c,_0x436a92){return _0x117f0c[_0x534e('0x9')](_0x534e('0xa'),attributes,{'tableName':'network','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x705f=['request-promise','path','rimraf','../../config/environment','./network.attributes','exports','define','../../config/logger','moment','bluebird'];(function(_0xa9f50a,_0x1d3836){var _0x48d268=function(_0x41629d){while(--_0x41629d){_0xa9f50a['push'](_0xa9f50a['shift']());}};_0x48d268(++_0x1d3836);}(_0x705f,0x75));var _0xf705=function(_0x50b750,_0xe5817b){_0x50b750=_0x50b750-0x0;var _0x1b60a8=_0x705f[_0x50b750];return _0x1b60a8;};'use strict';var _=require('lodash');var util=require('util');var logger=require(_0xf705('0x0'))('api');var moment=require(_0xf705('0x1'));var BPromise=require(_0xf705('0x2'));var rp=require(_0xf705('0x3'));var fs=require('fs');var path=require(_0xf705('0x4'));var rimraf=require(_0xf705('0x5'));var config=require(_0xf705('0x6'));var attributes=require(_0xf705('0x7'));module[_0xf705('0x8')]=function(_0x10214c,_0x991602){return _0x10214c[_0xf705('0x9')]('Network',attributes,{'tableName':'network','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index dacb9ff..58f3588 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(_0x1d0498,_0x3ad637){var _0x42a6f1=function(_0x1ddd56){while(--_0x1ddd56){_0x1d0498['push'](_0x1d0498['shift']());}};_0x42a6f1(++_0x3ad637);}(_0x9957,0x93));var _0x7995=function(_0x6c993a,_0x5ea3ab){_0x6c993a=_0x6c993a-0x0;var _0x27f547=_0x9957[_0x6c993a];return _0x27f547;};'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 _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(_0x3792e8,_0x3a9dd8){var _0x29cd99=function(_0x5aa8c5){while(--_0x5aa8c5){_0x3792e8['push'](_0x3792e8['shift']());}};_0x29cd99(++_0x3a9dd8);}(_0x9957,0x93));var _0x7995=function(_0x1ac595,_0x5d2081){_0x1ac595=_0x1ac595-0x0;var _0x455fff=_0x9957[_0x1ac595];return _0x455fff;};'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
index 168391f..2f00bf2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x18d3=['../../config/environment','./openchannelAccount.controller','get','isAuthenticated','index','/describe','describe','/:id','show','/:id/dispositions','getDispositions','/:id/canned_answers','/:id/applications','getApplications','getInteractions','/:id/users','getAgents','post','create','addDisposition','addAnswer','/:id/notify','notify','addApplications','addAgents','/:id/send','send','update','delete','removeDispositions','removeAnswers','removeAgents','exports','path','connect-timeout','../../components/auth/service','../../components/interaction/service'];(function(_0x4cf457,_0x43f05e){var _0x2bdbc6=function(_0x373323){while(--_0x373323){_0x4cf457['push'](_0x4cf457['shift']());}};_0x2bdbc6(++_0x43f05e);}(_0x18d3,0xb5));var _0x318d=function(_0xa464c9,_0x7c86d8){_0xa464c9=_0xa464c9-0x0;var _0x3d73c4=_0x18d3[_0xa464c9];return _0x3d73c4;};'use strict';var multer=require('multer');var util=require('util');var path=require(_0x318d('0x0'));var timeout=require(_0x318d('0x1'));var express=require('express');var router=express['Router']();var fs_extra=require('fs-extra');var auth=require(_0x318d('0x2'));var interaction=require(_0x318d('0x3'));var config=require(_0x318d('0x4'));var controller=require(_0x318d('0x5'));router[_0x318d('0x6')]('/',auth[_0x318d('0x7')](),controller[_0x318d('0x8')]);router['get'](_0x318d('0x9'),auth[_0x318d('0x7')](),controller[_0x318d('0xa')]);router['get'](_0x318d('0xb'),auth[_0x318d('0x7')](),controller[_0x318d('0xc')]);router[_0x318d('0x6')](_0x318d('0xd'),auth[_0x318d('0x7')](),controller[_0x318d('0xe')]);router[_0x318d('0x6')](_0x318d('0xf'),auth[_0x318d('0x7')](),controller['getAnswers']);router[_0x318d('0x6')](_0x318d('0x10'),auth[_0x318d('0x7')](),controller[_0x318d('0x11')]);router[_0x318d('0x6')]('/:id/interactions',auth[_0x318d('0x7')](),controller[_0x318d('0x12')]);router['get'](_0x318d('0x13'),auth[_0x318d('0x7')](),controller[_0x318d('0x14')]);router[_0x318d('0x15')]('/',auth[_0x318d('0x7')](),controller[_0x318d('0x16')]);router[_0x318d('0x15')](_0x318d('0xd'),auth[_0x318d('0x7')](),controller[_0x318d('0x17')]);router[_0x318d('0x15')](_0x318d('0xf'),auth[_0x318d('0x7')](),controller[_0x318d('0x18')]);router[_0x318d('0x15')](_0x318d('0x19'),controller[_0x318d('0x1a')]);router['post'](_0x318d('0x10'),auth['isAuthenticated'](),controller[_0x318d('0x1b')]);router['post'](_0x318d('0x13'),auth[_0x318d('0x7')](),controller[_0x318d('0x1c')]);router['post'](_0x318d('0x1d'),auth[_0x318d('0x7')](),controller[_0x318d('0x1e')]);router['put'](_0x318d('0xb'),auth['isAuthenticated'](),controller[_0x318d('0x1f')]);router[_0x318d('0x20')](_0x318d('0xb'),auth['isAuthenticated'](),controller['destroy']);router[_0x318d('0x20')](_0x318d('0xd'),auth[_0x318d('0x7')](),controller[_0x318d('0x21')]);router[_0x318d('0x20')]('/:id/canned_answers',auth[_0x318d('0x7')](),controller[_0x318d('0x22')]);router['delete']('/:id/users',auth[_0x318d('0x7')](),controller[_0x318d('0x23')]);module[_0x318d('0x24')]=router;
\ No newline at end of file
+var _0x6529=['/:id/dispositions','addDisposition','addAnswer','/:id/notify','notify','addApplications','addAgents','/:id/send','send','put','destroy','delete','removeDispositions','removeAnswers','exports','multer','util','path','express','Router','../../config/environment','./openchannelAccount.controller','get','isAuthenticated','/:id','show','getDispositions','/:id/canned_answers','getAnswers','/:id/applications','getApplications','/:id/interactions','/:id/users','getAgents','post','create'];(function(_0x3373a2,_0x17949f){var _0x565017=function(_0x16e732){while(--_0x16e732){_0x3373a2['push'](_0x3373a2['shift']());}};_0x565017(++_0x17949f);}(_0x6529,0x1e3));var _0x9652=function(_0x196a6f,_0x348ee1){_0x196a6f=_0x196a6f-0x0;var _0x41e47c=_0x6529[_0x196a6f];return _0x41e47c;};'use strict';var multer=require(_0x9652('0x0'));var util=require(_0x9652('0x1'));var path=require(_0x9652('0x2'));var timeout=require('connect-timeout');var express=require(_0x9652('0x3'));var router=express[_0x9652('0x4')]();var fs_extra=require('fs-extra');var auth=require('../../components/auth/service');var interaction=require('../../components/interaction/service');var config=require(_0x9652('0x5'));var controller=require(_0x9652('0x6'));router[_0x9652('0x7')]('/',auth[_0x9652('0x8')](),controller['index']);router['get']('/describe',auth[_0x9652('0x8')](),controller['describe']);router['get'](_0x9652('0x9'),auth[_0x9652('0x8')](),controller[_0x9652('0xa')]);router[_0x9652('0x7')]('/:id/dispositions',auth[_0x9652('0x8')](),controller[_0x9652('0xb')]);router['get'](_0x9652('0xc'),auth['isAuthenticated'](),controller[_0x9652('0xd')]);router[_0x9652('0x7')](_0x9652('0xe'),auth[_0x9652('0x8')](),controller[_0x9652('0xf')]);router['get'](_0x9652('0x10'),auth[_0x9652('0x8')](),controller['getInteractions']);router[_0x9652('0x7')](_0x9652('0x11'),auth[_0x9652('0x8')](),controller[_0x9652('0x12')]);router[_0x9652('0x13')]('/',auth['isAuthenticated'](),controller[_0x9652('0x14')]);router['post'](_0x9652('0x15'),auth[_0x9652('0x8')](),controller[_0x9652('0x16')]);router[_0x9652('0x13')]('/:id/canned_answers',auth[_0x9652('0x8')](),controller[_0x9652('0x17')]);router[_0x9652('0x13')](_0x9652('0x18'),controller[_0x9652('0x19')]);router[_0x9652('0x13')](_0x9652('0xe'),auth[_0x9652('0x8')](),controller[_0x9652('0x1a')]);router[_0x9652('0x13')](_0x9652('0x11'),auth[_0x9652('0x8')](),controller[_0x9652('0x1b')]);router[_0x9652('0x13')](_0x9652('0x1c'),auth['isAuthenticated'](),controller[_0x9652('0x1d')]);router[_0x9652('0x1e')]('/:id',auth[_0x9652('0x8')](),controller['update']);router['delete'](_0x9652('0x9'),auth[_0x9652('0x8')](),controller[_0x9652('0x1f')]);router[_0x9652('0x20')](_0x9652('0x15'),auth[_0x9652('0x8')](),controller[_0x9652('0x21')]);router[_0x9652('0x20')](_0x9652('0xc'),auth['isAuthenticated'](),controller[_0x9652('0x22')]);router[_0x9652('0x20')](_0x9652('0x11'),auth[_0x9652('0x8')](),controller['removeAgents']);module[_0x9652('0x23')]=router;
\ No newline at end of file
index 3327448..48fb255 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8f6d=['BOOLEAN','INTEGER','Status\x20to\x20put\x20when\x20mandatory\x20disposition\x20is\x20enabled','mandatoryDispositionPauseId','mandatoryDisposition','randomstring','exports','STRING','name','generate','TEXT','Account:\x20{{account.name}}<br/>{{#queue}}Queue:\x20{{queue.name}}<br/>{{/queue}}From\x20:\x20{{from}}'];(function(_0x3d98d7,_0xbc7c22){var _0x4cb179=function(_0x5c8db9){while(--_0x5c8db9){_0x3d98d7['push'](_0x3d98d7['shift']());}};_0x4cb179(++_0xbc7c22);}(_0x8f6d,0x155));var _0xd8f6=function(_0x579d34,_0x22fcb6){_0x579d34=_0x579d34-0x0;var _0x577434=_0x8f6d[_0x579d34];return _0x577434;};'use strict';var Sequelize=require('sequelize');var rs=require(_0xd8f6('0x0'));module[_0xd8f6('0x1')]={'name':{'type':Sequelize[_0xd8f6('0x2')],'unique':_0xd8f6('0x3'),'allowNull':![]},'description':{'type':Sequelize[_0xd8f6('0x2')]},'token':{'type':Sequelize[_0xd8f6('0x2')],'defaultValue':function(){return rs[_0xd8f6('0x4')]();}},'replyUri':{'type':Sequelize[_0xd8f6('0x2')],'validate':{'isUrl':!![]}},'key':{'type':Sequelize[_0xd8f6('0x2')],'allowNull':![]},'notificationTemplate':{'type':Sequelize[_0xd8f6('0x5')],'defaultValue':function(){return _0xd8f6('0x6');}},'notificationSound':{'type':Sequelize[_0xd8f6('0x7')],'defaultValue':!![]},'notificationShake':{'type':Sequelize[_0xd8f6('0x7')],'defaultValue':![]},'waitForTheAssignedAgent':{'type':Sequelize[_0xd8f6('0x8')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0xa},'mapKey':{'type':Sequelize[_0xd8f6('0x2')]},'queueTransfer':{'type':Sequelize[_0xd8f6('0x7')],'defaultValue':![]},'queueTransferTimeout':{'type':Sequelize[_0xd8f6('0x8')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0x12c},'agentTransfer':{'type':Sequelize[_0xd8f6('0x7')],'defaultValue':![]},'agentTransferTimeout':{'type':Sequelize[_0xd8f6('0x8')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0x12c},'mandatoryDispositionPauseId':{'type':Sequelize[_0xd8f6('0x8')],'allowNull':!![],'defaultValue':null,'comment':_0xd8f6('0x9')},'mandatoryDisposition':{'type':Sequelize['BOOLEAN'],'defaultValue':![],'comment':'Enabled/disables\x20mandatory\x20dispo\x20on\x20a\x20queue','set':function(_0x40b17d){if(!_0x40b17d)this['setDataValue'](_0xd8f6('0xa'),null);this['setDataValue'](_0xd8f6('0xb'),_0x40b17d);}}};
\ No newline at end of file
+var _0xc202=['mandatoryDispositionPauseId','sequelize','name','STRING','TEXT','BOOLEAN','INTEGER','Status\x20to\x20put\x20when\x20mandatory\x20disposition\x20is\x20enabled','Enabled/disables\x20mandatory\x20dispo\x20on\x20a\x20queue','setDataValue'];(function(_0x1e129a,_0x4bfa91){var _0x595d15=function(_0x116179){while(--_0x116179){_0x1e129a['push'](_0x1e129a['shift']());}};_0x595d15(++_0x4bfa91);}(_0xc202,0x8d));var _0x2c20=function(_0x3d71ea,_0x292819){_0x3d71ea=_0x3d71ea-0x0;var _0x2d5a84=_0xc202[_0x3d71ea];return _0x2d5a84;};'use strict';var Sequelize=require(_0x2c20('0x0'));var rs=require('randomstring');module['exports']={'name':{'type':Sequelize['STRING'],'unique':_0x2c20('0x1'),'allowNull':![]},'description':{'type':Sequelize[_0x2c20('0x2')]},'token':{'type':Sequelize[_0x2c20('0x2')],'defaultValue':function(){return rs['generate']();}},'replyUri':{'type':Sequelize[_0x2c20('0x2')],'validate':{'isUrl':!![]}},'key':{'type':Sequelize[_0x2c20('0x2')],'allowNull':![]},'notificationTemplate':{'type':Sequelize[_0x2c20('0x3')],'defaultValue':function(){return'Account:\x20{{account.name}}<br/>{{#queue}}Queue:\x20{{queue.name}}<br/>{{/queue}}From\x20:\x20{{from}}';}},'notificationSound':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]},'notificationShake':{'type':Sequelize[_0x2c20('0x4')],'defaultValue':![]},'waitForTheAssignedAgent':{'type':Sequelize['INTEGER'],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0xa},'mapKey':{'type':Sequelize[_0x2c20('0x2')]},'queueTransfer':{'type':Sequelize[_0x2c20('0x4')],'defaultValue':![]},'queueTransferTimeout':{'type':Sequelize[_0x2c20('0x5')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0x12c},'agentTransfer':{'type':Sequelize[_0x2c20('0x4')],'defaultValue':![]},'agentTransferTimeout':{'type':Sequelize['INTEGER'],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0x12c},'mandatoryDispositionPauseId':{'type':Sequelize[_0x2c20('0x5')],'allowNull':!![],'defaultValue':null,'comment':_0x2c20('0x6')},'mandatoryDisposition':{'type':Sequelize[_0x2c20('0x4')],'defaultValue':![],'comment':_0x2c20('0x7'),'set':function(_0x365384){if(!_0x365384)this[_0x2c20('0x8')](_0x2c20('0x9'),null);this[_0x2c20('0x8')]('mandatoryDisposition',_0x365384);}}};
\ No newline at end of file
index a68f976..c62f144 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8e8c=['Sequelize','ValidationError','no\x20available\x20attributes','difference','createdAt','updatedAt','CompanyId','isNil','from','from\x20is\x20mandatory','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','Contacts','DESC','OpenchannelApplication','Applications','List','account','list','applications','orderBy','priority','defaults','ListId','contact','lastName','threadId','externalUrl','ContactId','OpenchannelInteraction','spread','firstName','messageId','interaction','created','push','close','unmanaged','*,*,*,*','OpenchannelMessage','AttachmentId','UserId','unshift','agent','waitForTheAssignedAgent','Start','startRouting','EventManager','addApplications','sequelize','transaction','findAndCountAll','getApplications','findOne','getInteractions','Contact','User','Owner','fullname','Tag','Tags','color','tag','addAgents','omit','emit','userOpenchannelAccount:save','removeAgents','isArray','userOpenchannelAccount:remove','getAgents','CmList','out','Messages','dataValues','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','path','sox','ejs','fs-extra','lodash','squel','crypto','desk.js','to-csv','querystring','papaparse','../../components/auth/service','../../config/license/hardware','api','../../config/environment','../../config/license/util','../../mysqldb','localhost','socket.io-emitter','./openchannelAccount.socket','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','sendStatus','end','status','offset','undefined','limit','count','set','Content-Range','apply','reject','save','update','destroy','get','OpenchannelAccounts','UserProfileResource','stack','name','send','index','Pause','mandatoryDispositionPause','map','OpenchannelAccount','rawAttributes','type','model','query','keys','intersection','attributes','length','hasOwnProperty','sort','where','pick','filters','filter','merge','options','includeAll','include','rows','catch','show','params','fields','find','create','body','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','UserProfileSection','userProfileId','autoAssociation','describe','OpenchannelAccountId','Disposition','nolimit','order','findAll','removeDispositions','ids','addAnswer','CannedAnswer','getAnswers','removeAnswers','notify','openchannel','CmContact'];(function(_0x5f0ecc,_0x51c82e){var _0x5e0cbe=function(_0x8dbc7){while(--_0x8dbc7){_0x5f0ecc['push'](_0x5f0ecc['shift']());}};_0x5e0cbe(++_0x51c82e);}(_0x8e8c,0x1cc));var _0xc8e8=function(_0x4940a6,_0x448570){_0x4940a6=_0x4940a6-0x0;var _0x101ffe=_0x8e8c[_0x4940a6];return _0x101ffe;};'use strict';var emlformat=require(_0xc8e8('0x0'));var rimraf=require(_0xc8e8('0x1'));var zipdir=require(_0xc8e8('0x2'));var jsonpatch=require(_0xc8e8('0x3'));var rp=require(_0xc8e8('0x4'));var moment=require(_0xc8e8('0x5'));var BPromise=require(_0xc8e8('0x6'));var Mustache=require('mustache');var util=require('util');var path=require(_0xc8e8('0x7'));var sox=require(_0xc8e8('0x8'));var csv=require('to-csv');var ejs=require(_0xc8e8('0x9'));var fs=require('fs');var fs_extra=require(_0xc8e8('0xa'));var _=require(_0xc8e8('0xb'));var squel=require(_0xc8e8('0xc'));var crypto=require(_0xc8e8('0xd'));var jsforce=require('jsforce');var deskjs=require(_0xc8e8('0xe'));var toCsv=require(_0xc8e8('0xf'));var querystring=require(_0xc8e8('0x10'));var Papa=require(_0xc8e8('0x11'));var Redis=require('ioredis');var authService=require(_0xc8e8('0x12'));var qs=require('../../components/parsers/qs');var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0xc8e8('0x13'));var logger=require('../../config/logger')(_0xc8e8('0x14'));var utils=require('../../config/utils');var config=require(_0xc8e8('0x15'));var licenseUtil=require(_0xc8e8('0x16'));var db=require(_0xc8e8('0x17'))['db'];config['redis']=_['defaults'](config['redis'],{'host':_0xc8e8('0x18'),'port':0x18eb});var socket=require(_0xc8e8('0x19'))(new Redis(config['redis']));require(_0xc8e8('0x1a'))[_0xc8e8('0x1b')](socket);var jayson=require(_0xc8e8('0x1c'));var client=jayson[_0xc8e8('0x1d')][_0xc8e8('0x1e')]({'port':0x232c});var client9002=jayson[_0xc8e8('0x1d')][_0xc8e8('0x1e')]({'port':0x232a});function respondWithRpcPromise(_0x4bf21f,_0x141433,_0x5a73f6,_0x18bf21){return new BPromise(function(_0xdf31b4,_0x3910e9){var _0x5ed4cc=_0x18bf21||client;return _0x5ed4cc[_0xc8e8('0x1f')](_0x4bf21f,_0x5a73f6)[_0xc8e8('0x20')](function(_0x57426d){logger['info']('OpenchannelAccount,\x20%s,\x20%s',_0x141433,_0xc8e8('0x21'));logger[_0xc8e8('0x22')](_0xc8e8('0x23'),_0x141433,_0xc8e8('0x21'),JSON['stringify'](_0x57426d));if(_0x57426d[_0xc8e8('0x24')]){if(_0x57426d[_0xc8e8('0x24')][_0xc8e8('0x25')]===0x1f4){logger[_0xc8e8('0x24')](_0xc8e8('0x26'),_0x141433,_0x57426d[_0xc8e8('0x24')]['message']);return _0x3910e9(_0x57426d[_0xc8e8('0x24')][_0xc8e8('0x27')]);}logger[_0xc8e8('0x24')](_0xc8e8('0x26'),_0x141433,_0x57426d[_0xc8e8('0x24')][_0xc8e8('0x27')]);return _0xdf31b4(_0x57426d[_0xc8e8('0x24')]['message']);}else{logger[_0xc8e8('0x28')]('OpenchannelAccount,\x20%s,\x20%s',_0x141433,_0xc8e8('0x21'));_0xdf31b4(_0x57426d['result']['message']);}})['catch'](function(_0x1583a5){logger['error'](_0xc8e8('0x26'),_0x141433,_0x1583a5);_0x3910e9(_0x1583a5);});});}function respondWithStatusCode(_0x516179,_0x4f36c8){_0x4f36c8=_0x4f36c8||0xcc;return function(_0x1b8999){if(_0x1b8999){return _0x516179[_0xc8e8('0x29')](_0x4f36c8);}return _0x516179['status'](_0x4f36c8)[_0xc8e8('0x2a')]();};}function respondWithResult(_0x54d858,_0x10e1b9){_0x10e1b9=_0x10e1b9||0xc8;return function(_0x2987e4){if(_0x2987e4){return _0x54d858[_0xc8e8('0x2b')](_0x10e1b9)['json'](_0x2987e4);}};}function respondWithFilteredResult(_0x35d62e,_0x30d17c){return function(_0x2427f5){if(_0x2427f5){var _0x4fda3b=typeof _0x30d17c[_0xc8e8('0x2c')]===_0xc8e8('0x2d')&&typeof _0x30d17c[_0xc8e8('0x2e')]===_0xc8e8('0x2d');var _0x230efc=_0x2427f5[_0xc8e8('0x2f')];var _0x39f1a0=_0x4fda3b?0x0:_0x30d17c[_0xc8e8('0x2c')];var _0x55d9e9=_0x4fda3b?_0x2427f5[_0xc8e8('0x2f')]:_0x30d17c[_0xc8e8('0x2c')]+_0x30d17c[_0xc8e8('0x2e')];var _0x442774;if(_0x55d9e9>=_0x230efc){_0x55d9e9=_0x230efc;_0x442774=0xc8;}else{_0x442774=0xce;}_0x35d62e[_0xc8e8('0x2b')](_0x442774);return _0x35d62e[_0xc8e8('0x30')](_0xc8e8('0x31'),_0x39f1a0+'-'+_0x55d9e9+'/'+_0x230efc)['json'](_0x2427f5);}return null;};}function patchUpdates(_0x56e3e3){return function(_0x174d5c){try{jsonpatch[_0xc8e8('0x32')](_0x174d5c,_0x56e3e3,!![]);}catch(_0x511ac3){return BPromise[_0xc8e8('0x33')](_0x511ac3);}return _0x174d5c[_0xc8e8('0x34')]();};}function saveUpdates(_0x3d8eab,_0x3861e8){return function(_0x5f096e){if(_0x5f096e){return _0x5f096e[_0xc8e8('0x35')](_0x3d8eab)[_0xc8e8('0x20')](function(_0x2cf498){return _0x2cf498;});}return null;};}function removeEntity(_0x57dcfb,_0x41aaf9){return function(_0x36bb73){if(_0x36bb73){return _0x36bb73[_0xc8e8('0x36')]()[_0xc8e8('0x20')](function(){var _0x2847f3=_0x36bb73[_0xc8e8('0x37')]({'plain':!![]});var _0x4274cb=_0xc8e8('0x38');return db[_0xc8e8('0x39')][_0xc8e8('0x36')]({'where':{'type':_0x4274cb,'resourceId':_0x2847f3['id']}})['then'](function(){return _0x36bb73;});})[_0xc8e8('0x20')](function(){_0x57dcfb['status'](0xcc)['end']();});}};}function handleEntityNotFound(_0xcaf82b,_0x1bce6a){return function(_0x37fa6e){if(!_0x37fa6e){_0xcaf82b[_0xc8e8('0x29')](0x194);}return _0x37fa6e;};}function handleError(_0x29f4ab,_0x23d3b8){_0x23d3b8=_0x23d3b8||0x1f4;return function(_0x1da048){logger[_0xc8e8('0x24')](_0x1da048[_0xc8e8('0x3a')]);if(_0x1da048[_0xc8e8('0x3b')]){delete _0x1da048['name'];}_0x29f4ab[_0xc8e8('0x2b')](_0x23d3b8)[_0xc8e8('0x3c')](_0x1da048);};}exports[_0xc8e8('0x3d')]=function(_0x50d4e2,_0x58b8ed){var _0x265f2e={'include':[{'model':db[_0xc8e8('0x3e')],'as':_0xc8e8('0x3f')}]},_0x41f78b={},_0x30e79f={'count':0x0,'rows':[]};var _0x3104aa=_[_0xc8e8('0x40')](db[_0xc8e8('0x41')][_0xc8e8('0x42')],function(_0x9b8498){return{'name':_0x9b8498['fieldName'],'type':_0x9b8498[_0xc8e8('0x43')]['key']};});_0x41f78b[_0xc8e8('0x44')]=_[_0xc8e8('0x40')](_0x3104aa,'name');_0x41f78b[_0xc8e8('0x45')]=_[_0xc8e8('0x46')](_0x50d4e2[_0xc8e8('0x45')]);_0x41f78b['filters']=_[_0xc8e8('0x47')](_0x41f78b[_0xc8e8('0x44')],_0x41f78b[_0xc8e8('0x45')]);_0x265f2e[_0xc8e8('0x48')]=_[_0xc8e8('0x47')](_0x41f78b['model'],qs['fields'](_0x50d4e2[_0xc8e8('0x45')]['fields']));_0x265f2e['attributes']=_0x265f2e[_0xc8e8('0x48')][_0xc8e8('0x49')]?_0x265f2e[_0xc8e8('0x48')]:_0x41f78b[_0xc8e8('0x44')];if(!_0x50d4e2[_0xc8e8('0x45')][_0xc8e8('0x4a')]('nolimit')){_0x265f2e[_0xc8e8('0x2e')]=qs[_0xc8e8('0x2e')](_0x50d4e2[_0xc8e8('0x45')][_0xc8e8('0x2e')]);_0x265f2e[_0xc8e8('0x2c')]=qs[_0xc8e8('0x2c')](_0x50d4e2['query'][_0xc8e8('0x2c')]);}_0x265f2e['order']=qs['sort'](_0x50d4e2[_0xc8e8('0x45')][_0xc8e8('0x4b')]);_0x265f2e[_0xc8e8('0x4c')]=qs['filters'](_[_0xc8e8('0x4d')](_0x50d4e2['query'],_0x41f78b[_0xc8e8('0x4e')]),_0x3104aa);if(_0x50d4e2['query'][_0xc8e8('0x4f')]){_0x265f2e[_0xc8e8('0x4c')]=_[_0xc8e8('0x50')](_0x265f2e[_0xc8e8('0x4c')],{'$or':_[_0xc8e8('0x40')](_0x3104aa,function(_0x4b8839){if(_0x4b8839['type']!=='VIRTUAL'){var _0x279bcc={};_0x279bcc[_0x4b8839[_0xc8e8('0x3b')]]={'$like':'%'+_0x50d4e2['query']['filter']+'%'};return _0x279bcc;}})});}_0x265f2e=_['merge']({},_0x265f2e,_0x50d4e2[_0xc8e8('0x51')]);var _0x1dfbd4={'where':_0x265f2e['where']};return db['OpenchannelAccount'][_0xc8e8('0x2f')](_0x1dfbd4)['then'](function(_0x45e0c3){_0x30e79f['count']=_0x45e0c3;if(_0x50d4e2[_0xc8e8('0x45')][_0xc8e8('0x52')]){_0x265f2e[_0xc8e8('0x53')]=[{'all':!![]}];}return db[_0xc8e8('0x41')]['findAll'](_0x265f2e);})[_0xc8e8('0x20')](function(_0x59115d){_0x30e79f[_0xc8e8('0x54')]=_0x59115d;return _0x30e79f;})[_0xc8e8('0x20')](respondWithFilteredResult(_0x58b8ed,_0x265f2e))[_0xc8e8('0x55')](handleError(_0x58b8ed,null));};exports[_0xc8e8('0x56')]=function(_0x4a2fb3,_0x1f87c1){var _0x339b97={'raw':![],'where':{'id':_0x4a2fb3[_0xc8e8('0x57')]['id']},'include':[{'model':db['Pause'],'as':_0xc8e8('0x3f')}]},_0x22d467={};_0x22d467[_0xc8e8('0x44')]=_[_0xc8e8('0x46')](db[_0xc8e8('0x41')][_0xc8e8('0x42')]);_0x22d467['query']=_[_0xc8e8('0x46')](_0x4a2fb3[_0xc8e8('0x45')]);_0x22d467[_0xc8e8('0x4e')]=_[_0xc8e8('0x47')](_0x22d467[_0xc8e8('0x44')],_0x22d467['query']);_0x339b97[_0xc8e8('0x48')]=_[_0xc8e8('0x47')](_0x22d467[_0xc8e8('0x44')],qs[_0xc8e8('0x58')](_0x4a2fb3[_0xc8e8('0x45')]['fields']));_0x339b97[_0xc8e8('0x48')]=_0x339b97[_0xc8e8('0x48')][_0xc8e8('0x49')]?_0x339b97['attributes']:_0x22d467[_0xc8e8('0x44')];if(_0x4a2fb3[_0xc8e8('0x45')][_0xc8e8('0x52')]){_0x339b97[_0xc8e8('0x53')]=[{'all':!![]}];}_0x339b97=_[_0xc8e8('0x50')]({},_0x339b97,_0x4a2fb3[_0xc8e8('0x51')]);return db['OpenchannelAccount'][_0xc8e8('0x59')](_0x339b97)[_0xc8e8('0x20')](handleEntityNotFound(_0x1f87c1,null))['then'](respondWithResult(_0x1f87c1,null))[_0xc8e8('0x55')](handleError(_0x1f87c1,null));};exports[_0xc8e8('0x5a')]=function(_0x5ec433,_0x2c157e){return db[_0xc8e8('0x41')][_0xc8e8('0x5a')](_0x5ec433[_0xc8e8('0x5b')],{})[_0xc8e8('0x20')](function(_0x395cc0){var _0x5edd3c=_0x5ec433[_0xc8e8('0x5c')]['get']({'plain':!![]});if(!_0x5edd3c)throw new Error(_0xc8e8('0x5d'));if(_0x5edd3c[_0xc8e8('0x5e')]===_0xc8e8('0x5c')){var _0x35c078=_0x395cc0[_0xc8e8('0x37')]({'plain':!![]});var _0xe58187=_0xc8e8('0x38');return db[_0xc8e8('0x5f')][_0xc8e8('0x59')]({'where':{'name':_0xe58187,'userProfileId':_0x5edd3c[_0xc8e8('0x60')]},'raw':!![]})['then'](function(_0x1fc961){if(_0x1fc961&&_0x1fc961[_0xc8e8('0x61')]===0x0){return db[_0xc8e8('0x39')]['create']({'name':_0x35c078['name'],'resourceId':_0x35c078['id'],'type':_0x1fc961['name'],'sectionId':_0x1fc961['id']},{})[_0xc8e8('0x20')](function(){return _0x395cc0;});}else{return _0x395cc0;}})['catch'](function(_0x190334){logger[_0xc8e8('0x24')]('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0x190334);throw _0x190334;});}return _0x395cc0;})[_0xc8e8('0x20')](respondWithResult(_0x2c157e,0xc9))[_0xc8e8('0x55')](handleError(_0x2c157e,null));};exports[_0xc8e8('0x35')]=function(_0x4c860a,_0x45871f){if(_0x4c860a[_0xc8e8('0x5b')]['id']){delete _0x4c860a[_0xc8e8('0x5b')]['id'];}return db[_0xc8e8('0x41')][_0xc8e8('0x59')]({'where':{'id':_0x4c860a[_0xc8e8('0x57')]['id']},'include':[{'model':db[_0xc8e8('0x3e')],'as':_0xc8e8('0x3f')}]})[_0xc8e8('0x20')](handleEntityNotFound(_0x45871f,null))['then'](saveUpdates(_0x4c860a[_0xc8e8('0x5b')],null))[_0xc8e8('0x20')](respondWithResult(_0x45871f,null))[_0xc8e8('0x55')](handleError(_0x45871f,null));};exports['destroy']=function(_0x289b6b,_0x562c5f){return db[_0xc8e8('0x41')][_0xc8e8('0x59')]({'where':{'id':_0x289b6b[_0xc8e8('0x57')]['id']}})[_0xc8e8('0x20')](handleEntityNotFound(_0x562c5f,null))[_0xc8e8('0x20')](removeEntity(_0x562c5f,null))['catch'](handleError(_0x562c5f,null));};exports[_0xc8e8('0x62')]=function(_0x38393f,_0x1c0cb9){return db[_0xc8e8('0x41')]['describe']()[_0xc8e8('0x20')](respondWithResult(_0x1c0cb9,null))[_0xc8e8('0x55')](handleError(_0x1c0cb9,null));};exports['addDisposition']=function(_0x35de17,_0x439aca,_0x230bea){if(_0x35de17[_0xc8e8('0x5b')]['id']){delete _0x35de17[_0xc8e8('0x5b')]['id'];}return db[_0xc8e8('0x41')][_0xc8e8('0x59')]({'where':{'id':_0x35de17[_0xc8e8('0x57')]['id']}})['then'](handleEntityNotFound(_0x439aca,null))[_0xc8e8('0x20')](function(_0x55360a){if(_0x55360a){_0x35de17['body'][_0xc8e8('0x63')]=_0x55360a['id'];return db[_0xc8e8('0x64')][_0xc8e8('0x5a')](_0x35de17[_0xc8e8('0x5b')]);}})['then'](respondWithResult(_0x439aca,null))[_0xc8e8('0x55')](handleError(_0x439aca,null));};exports['getDispositions']=function(_0xb8f6f2,_0x3db4ca,_0xa83f9e){var _0x2c52c2={'raw':![],'where':{}};var _0x4eec1c={};var _0x57b267={'count':0x0,'rows':[]};return db[_0xc8e8('0x41')]['findOne']({'where':{'id':_0xb8f6f2[_0xc8e8('0x57')]['id']}})[_0xc8e8('0x20')](handleEntityNotFound(_0x3db4ca,null))['then'](function(_0x485580){if(_0x485580){_0x4eec1c[_0xc8e8('0x44')]=_['keys'](db[_0xc8e8('0x64')][_0xc8e8('0x42')]);_0x4eec1c['query']=_['keys'](_0xb8f6f2['query']);_0x4eec1c[_0xc8e8('0x4e')]=_['intersection'](_0x4eec1c[_0xc8e8('0x44')],_0x4eec1c[_0xc8e8('0x45')]);_0x2c52c2['attributes']=_['intersection'](_0x4eec1c[_0xc8e8('0x44')],qs[_0xc8e8('0x58')](_0xb8f6f2['query'][_0xc8e8('0x58')]));_0x2c52c2[_0xc8e8('0x48')]=_0x2c52c2[_0xc8e8('0x48')][_0xc8e8('0x49')]?_0x2c52c2['attributes']:_0x4eec1c[_0xc8e8('0x44')];if(!_0xb8f6f2[_0xc8e8('0x45')][_0xc8e8('0x4a')](_0xc8e8('0x65'))){_0x2c52c2[_0xc8e8('0x2e')]=qs['limit'](_0xb8f6f2['query']['limit']);_0x2c52c2[_0xc8e8('0x2c')]=qs[_0xc8e8('0x2c')](_0xb8f6f2[_0xc8e8('0x45')][_0xc8e8('0x2c')]);}_0x2c52c2[_0xc8e8('0x66')]=qs[_0xc8e8('0x4b')](_0xb8f6f2[_0xc8e8('0x45')][_0xc8e8('0x4b')]);_0x2c52c2['where']=qs[_0xc8e8('0x4e')](_[_0xc8e8('0x4d')](_0xb8f6f2['query'],_0x4eec1c[_0xc8e8('0x4e')]));_0x2c52c2[_0xc8e8('0x4c')][_0xc8e8('0x63')]=_0x485580['id'];if(_0xb8f6f2[_0xc8e8('0x45')][_0xc8e8('0x4f')]){_0x2c52c2[_0xc8e8('0x4c')]=_['merge'](_0x2c52c2[_0xc8e8('0x4c')],{'$or':_[_0xc8e8('0x40')](_0x2c52c2[_0xc8e8('0x48')],function(_0x3c1bdd){var _0x5d3500={};_0x5d3500[_0x3c1bdd]={'$like':'%'+_0xb8f6f2['query'][_0xc8e8('0x4f')]+'%'};return _0x5d3500;})});}_0x2c52c2=_[_0xc8e8('0x50')]({},_0x2c52c2,_0xb8f6f2['options']);return db[_0xc8e8('0x64')][_0xc8e8('0x2f')]({'where':_0x2c52c2[_0xc8e8('0x4c')]})['then'](function(_0x177ab1){_0x57b267['count']=_0x177ab1;if(_0xb8f6f2[_0xc8e8('0x45')][_0xc8e8('0x52')]){_0x2c52c2[_0xc8e8('0x53')]=[{'all':!![]}];}return db['Disposition'][_0xc8e8('0x67')](_0x2c52c2);})['then'](function(_0x3cba2a){_0x57b267['rows']=_0x3cba2a;return _0x57b267;});}})['then'](respondWithFilteredResult(_0x3db4ca,_0x2c52c2))['catch'](handleError(_0x3db4ca,null));};exports[_0xc8e8('0x68')]=function(_0x293a91,_0x562139,_0x5369bc){return db['OpenchannelAccount'][_0xc8e8('0x59')]({'where':{'id':_0x293a91[_0xc8e8('0x57')]['id']}})['then'](handleEntityNotFound(_0x562139,null))[_0xc8e8('0x20')](function(_0x101999){if(_0x101999){return _0x101999[_0xc8e8('0x68')](_0x293a91[_0xc8e8('0x45')][_0xc8e8('0x69')]);}})[_0xc8e8('0x20')](respondWithStatusCode(_0x562139,null))[_0xc8e8('0x55')](handleError(_0x562139,null));};exports[_0xc8e8('0x6a')]=function(_0x12a47e,_0x79d8f0,_0x11950b){if(_0x12a47e['body']['id']){delete _0x12a47e[_0xc8e8('0x5b')]['id'];}return db[_0xc8e8('0x41')][_0xc8e8('0x59')]({'where':{'id':_0x12a47e[_0xc8e8('0x57')]['id']}})[_0xc8e8('0x20')](handleEntityNotFound(_0x79d8f0,null))[_0xc8e8('0x20')](function(_0x24d91c){if(_0x24d91c){_0x12a47e[_0xc8e8('0x5b')][_0xc8e8('0x63')]=_0x24d91c['id'];return db[_0xc8e8('0x6b')][_0xc8e8('0x5a')](_0x12a47e[_0xc8e8('0x5b')]);}})[_0xc8e8('0x20')](respondWithResult(_0x79d8f0,null))[_0xc8e8('0x55')](handleError(_0x79d8f0,null));};exports[_0xc8e8('0x6c')]=function(_0x4a7fd7,_0x89bf00,_0xed0a3b){var _0x5b2ce9={'raw':![],'where':{}};var _0x435788={};var _0x544fb8={'count':0x0,'rows':[]};return db['OpenchannelAccount']['findOne']({'where':{'id':_0x4a7fd7['params']['id']}})[_0xc8e8('0x20')](handleEntityNotFound(_0x89bf00,null))[_0xc8e8('0x20')](function(_0x46414b){if(_0x46414b){_0x435788[_0xc8e8('0x44')]=_[_0xc8e8('0x46')](db[_0xc8e8('0x6b')][_0xc8e8('0x42')]);_0x435788[_0xc8e8('0x45')]=_[_0xc8e8('0x46')](_0x4a7fd7[_0xc8e8('0x45')]);_0x435788[_0xc8e8('0x4e')]=_['intersection'](_0x435788[_0xc8e8('0x44')],_0x435788[_0xc8e8('0x45')]);_0x5b2ce9['attributes']=_['intersection'](_0x435788[_0xc8e8('0x44')],qs['fields'](_0x4a7fd7[_0xc8e8('0x45')]['fields']));_0x5b2ce9[_0xc8e8('0x48')]=_0x5b2ce9[_0xc8e8('0x48')][_0xc8e8('0x49')]?_0x5b2ce9[_0xc8e8('0x48')]:_0x435788['model'];if(!_0x4a7fd7['query']['hasOwnProperty'](_0xc8e8('0x65'))){_0x5b2ce9[_0xc8e8('0x2e')]=qs[_0xc8e8('0x2e')](_0x4a7fd7['query'][_0xc8e8('0x2e')]);_0x5b2ce9['offset']=qs['offset'](_0x4a7fd7[_0xc8e8('0x45')][_0xc8e8('0x2c')]);}_0x5b2ce9[_0xc8e8('0x66')]=qs[_0xc8e8('0x4b')](_0x4a7fd7[_0xc8e8('0x45')][_0xc8e8('0x4b')]);_0x5b2ce9[_0xc8e8('0x4c')]=qs[_0xc8e8('0x4e')](_[_0xc8e8('0x4d')](_0x4a7fd7['query'],_0x435788[_0xc8e8('0x4e')]));_0x5b2ce9[_0xc8e8('0x4c')][_0xc8e8('0x63')]=_0x46414b['id'];if(_0x4a7fd7['query'][_0xc8e8('0x4f')]){_0x5b2ce9['where']=_[_0xc8e8('0x50')](_0x5b2ce9[_0xc8e8('0x4c')],{'$or':_[_0xc8e8('0x40')](_0x5b2ce9[_0xc8e8('0x48')],function(_0x8f2ff4){var _0x505893={};_0x505893[_0x8f2ff4]={'$like':'%'+_0x4a7fd7[_0xc8e8('0x45')][_0xc8e8('0x4f')]+'%'};return _0x505893;})});}_0x5b2ce9=_['merge']({},_0x5b2ce9,_0x4a7fd7[_0xc8e8('0x51')]);return db[_0xc8e8('0x6b')][_0xc8e8('0x2f')]({'where':_0x5b2ce9[_0xc8e8('0x4c')]})[_0xc8e8('0x20')](function(_0x988cca){_0x544fb8[_0xc8e8('0x2f')]=_0x988cca;if(_0x4a7fd7[_0xc8e8('0x45')][_0xc8e8('0x52')]){_0x5b2ce9[_0xc8e8('0x53')]=[{'all':!![]}];}return db[_0xc8e8('0x6b')][_0xc8e8('0x67')](_0x5b2ce9);})[_0xc8e8('0x20')](function(_0x2813a0){_0x544fb8[_0xc8e8('0x54')]=_0x2813a0;return _0x544fb8;});}})[_0xc8e8('0x20')](respondWithFilteredResult(_0x89bf00,_0x5b2ce9))[_0xc8e8('0x55')](handleError(_0x89bf00,null));};exports[_0xc8e8('0x6d')]=function(_0x2b72fa,_0x13424a,_0x36ee61){return db[_0xc8e8('0x41')][_0xc8e8('0x59')]({'where':{'id':_0x2b72fa[_0xc8e8('0x57')]['id']}})[_0xc8e8('0x20')](handleEntityNotFound(_0x13424a,null))[_0xc8e8('0x20')](function(_0x2c4fa7){if(_0x2c4fa7){return _0x2c4fa7['removeAnswers'](_0x2b72fa[_0xc8e8('0x45')][_0xc8e8('0x69')]);}})[_0xc8e8('0x20')](respondWithStatusCode(_0x13424a,null))[_0xc8e8('0x55')](handleError(_0x13424a,null));};exports[_0xc8e8('0x6e')]=function(_0x3424a4,_0x49e135,_0x4b97a0){var _0x59044a={'body':_0x3424a4[_0xc8e8('0x5b')],'channel':_0xc8e8('0x6f')};var _0x3ee8a8=[];var _0x4915dc=[];var _0x51beee={};var _0x24d0b6=![];return db[_0xc8e8('0x70')][_0xc8e8('0x62')]()[_0xc8e8('0x20')](function(_0x41535b){if(!_0x41535b){throw new db[(_0xc8e8('0x71'))][(_0xc8e8('0x72'))](_0xc8e8('0x73'));}_0x3ee8a8=_[_0xc8e8('0x74')](_[_0xc8e8('0x46')](_0x41535b),[_0xc8e8('0x75'),_0xc8e8('0x76')]);_0x4915dc=_[_0xc8e8('0x74')](_[_0xc8e8('0x46')](_0x41535b),[_0xc8e8('0x75'),_0xc8e8('0x76'),_0xc8e8('0x77'),'ListId']);if(_0x3424a4[_0xc8e8('0x5b')]['id']){delete _0x3424a4[_0xc8e8('0x5b')]['id'];}if(_[_0xc8e8('0x78')](_0x3424a4['body'][_0xc8e8('0x79')])){throw new db[(_0xc8e8('0x71'))][(_0xc8e8('0x72'))](_0xc8e8('0x7a'));}if(_[_0xc8e8('0x78')](_0x3424a4[_0xc8e8('0x5b')][_0xc8e8('0x5b')])||_0x3424a4[_0xc8e8('0x5b')][_0xc8e8('0x5b')]===''){throw new db[(_0xc8e8('0x71'))][(_0xc8e8('0x72'))](_0xc8e8('0x7b'));}if(_[_0xc8e8('0x78')](_0x3424a4['body'][_0xc8e8('0x7c')])){throw new db[(_0xc8e8('0x71'))]['ValidationError'](_0xc8e8('0x7d')+_0x4915dc);}if(!_[_0xc8e8('0x7e')](_0x4915dc,_0x3424a4[_0xc8e8('0x5b')][_0xc8e8('0x7c')])){throw new db[(_0xc8e8('0x71'))][(_0xc8e8('0x72'))](_0xc8e8('0x7f')+_0x4915dc);}_0x51beee[_0x3424a4[_0xc8e8('0x5b')][_0xc8e8('0x7c')]]=_0x3424a4[_0xc8e8('0x5b')][_0xc8e8('0x79')];})[_0xc8e8('0x20')](function(){return db[_0xc8e8('0x41')][_0xc8e8('0x59')]({'where':{'id':_0x3424a4[_0xc8e8('0x57')]['id']},'include':[{'model':db['CmList'],'as':'List','include':[{'model':db[_0xc8e8('0x70')],'as':_0xc8e8('0x80'),'where':_0x51beee,'limit':0x1,'order':[[_0xc8e8('0x76'),_0xc8e8('0x81')]]}]},{'model':db[_0xc8e8('0x82')],'as':_0xc8e8('0x83')}]});})[_0xc8e8('0x20')](handleEntityNotFound(_0x49e135,null))[_0xc8e8('0x20')](function(_0xca2f20){if(_0xca2f20&&_0xca2f20[_0xc8e8('0x84')]){_0x59044a[_0xc8e8('0x85')]=_0xca2f20;_0x59044a['applications']=_0xca2f20['Applications'];_0x59044a[_0xc8e8('0x86')]=_0xca2f20[_0xc8e8('0x84')];_0x59044a[_0xc8e8('0x87')]=_[_0xc8e8('0x88')](_0x59044a[_0xc8e8('0x87')],[_0xc8e8('0x89')],['asc']);if(_0x59044a[_0xc8e8('0x85')][_0xc8e8('0x83')]){delete _0x59044a[_0xc8e8('0x85')][_0xc8e8('0x83')];}if(_0x59044a[_0xc8e8('0x85')][_0xc8e8('0x84')]&&_0x59044a[_0xc8e8('0x85')]['List']['Contacts'][_0xc8e8('0x49')]){return _0x59044a[_0xc8e8('0x85')][_0xc8e8('0x84')][_0xc8e8('0x80')][0x0];}var _0x2846b8=_[_0xc8e8('0x8a')](_0x3424a4['body'],{'firstName':_0x3424a4[_0xc8e8('0x5b')][_0xc8e8('0x79')],'ListId':_0xca2f20[_0xc8e8('0x8b')]});_0x2846b8[_0x3424a4[_0xc8e8('0x5b')][_0xc8e8('0x7c')]]=_0x3424a4[_0xc8e8('0x5b')][_0xc8e8('0x79')];return db[_0xc8e8('0x70')]['create'](_0x2846b8,{'fields':_0x3ee8a8,'raw':!![]});}})[_0xc8e8('0x20')](handleEntityNotFound(_0x49e135,null))['then'](function(_0x1b99e2){_0x59044a[_0xc8e8('0x8c')]=_0x1b99e2;if(_0x1b99e2){var _0x19fd1b={'ContactId':_0x1b99e2['id'],'OpenchannelAccountId':_0x3424a4[_0xc8e8('0x57')]['id'],'from':(_0x1b99e2['firstName']||'')+'\x20'+(_0x1b99e2[_0xc8e8('0x8d')]||'')};var _0x33a8df={'OpenchannelAccountId':_0x3424a4[_0xc8e8('0x57')]['id'],'closed':![]};if(_0x3424a4[_0xc8e8('0x5b')][_0xc8e8('0x8e')]){_0x33a8df['threadId']=_0x3424a4['body'][_0xc8e8('0x8e')];return db['OpenchannelInteraction'][_0xc8e8('0x59')]({'where':_0x33a8df})['then'](function(_0x466d70){if(_0x466d70){return[_0x466d70,![]];}_0x19fd1b[_0xc8e8('0x8e')]=_0x3424a4[_0xc8e8('0x5b')][_0xc8e8('0x8e')];_0x19fd1b['externalUrl']=_0x3424a4[_0xc8e8('0x5b')][_0xc8e8('0x8f')];return db['OpenchannelInteraction'][_0xc8e8('0x5a')](_0x19fd1b)[_0xc8e8('0x20')](function(_0x520e13){return[_0x520e13,!![]];});});}else{_0x33a8df[_0xc8e8('0x8e')]=null;}_0x33a8df[_0xc8e8('0x90')]=_0x1b99e2['id'];return db[_0xc8e8('0x91')][_0xc8e8('0x59')]({'where':_0x33a8df})[_0xc8e8('0x20')](function(_0x508e76){if(_0x508e76){return[_0x508e76,![]];}return db[_0xc8e8('0x91')][_0xc8e8('0x5a')](_0x19fd1b)[_0xc8e8('0x20')](function(_0x2785b6){return[_0x2785b6,!![]];});});}})[_0xc8e8('0x92')](function(_0x19d309,_0x3d1865){if(_0x19d309){_0x24d0b6=_0x3d1865;if(!_0x3d1865){var _0x4fc39b={'from':(_0x59044a['contact'][_0xc8e8('0x93')]||'')+'\x20'+(_0x59044a[_0xc8e8('0x8c')][_0xc8e8('0x8d')]||'')};if(_0x3424a4[_0xc8e8('0x5b')]['threadId']&&_0x3424a4[_0xc8e8('0x5b')][_0xc8e8('0x94')]&&_0x3424a4[_0xc8e8('0x5b')][_0xc8e8('0x8e')]!=_0x3424a4['body'][_0xc8e8('0x94')]){_0x4fc39b[_0xc8e8('0x8e')]=_0x3424a4[_0xc8e8('0x5b')][_0xc8e8('0x94')];}return _0x19d309[_0xc8e8('0x35')](_0x4fc39b);}else{return _0x19d309;}}})[_0xc8e8('0x20')](function(_0x388fe1){_0x59044a[_0xc8e8('0x95')]=_0x388fe1[_0xc8e8('0x37')]({'plain':!![]});_0x59044a[_0xc8e8('0x95')][_0xc8e8('0x96')]=_0x24d0b6;if(_0x59044a[_0xc8e8('0x95')]['created']){if(_0x59044a['account']['autoclose']){_0x59044a[_0xc8e8('0x87')][_0xc8e8('0x97')]({'id':0x0,'priority':_0x59044a[_0xc8e8('0x87')][_0xc8e8('0x49')]+0x1,'app':_0xc8e8('0x98'),'appdata':_0xc8e8('0x99'),'interval':_0xc8e8('0x9a')});}}return db[_0xc8e8('0x9b')]['create']({'body':_0x3424a4[_0xc8e8('0x5b')]['body'],'OpenchannelAccountId':_0x3424a4[_0xc8e8('0x57')]['id'],'OpenchannelInteractionId':_0x388fe1['id'],'direction':'in','ContactId':_0x59044a[_0xc8e8('0x8c')]['id'],'AttachmentId':_0x3424a4[_0xc8e8('0x5b')][_0xc8e8('0x9c')]});})[_0xc8e8('0x20')](function(_0x1507a6){_0x59044a[_0xc8e8('0x27')]=_0x1507a6;if(_0x59044a[_0xc8e8('0x95')][_0xc8e8('0x9d')]){return db['User'][_0xc8e8('0x59')]({'attributes':['id',_0xc8e8('0x3b')],'where':{'id':_0x59044a[_0xc8e8('0x95')]['UserId']}})[_0xc8e8('0x20')](function(_0x58b55b){if(_0x58b55b){_0x59044a[_0xc8e8('0x87')][_0xc8e8('0x9e')]({'id':0x0,'priority':0x0,'app':_0xc8e8('0x9f'),'appdata':_0x58b55b[_0xc8e8('0x3b')]+','+(_0x59044a[_0xc8e8('0x85')][_0xc8e8('0xa0')]||0xa),'interval':_0xc8e8('0x9a')});_0x59044a['forcedOwnership']=![];}return respondWithRpcPromise(_0xc8e8('0xa1'),'startRouting',_0x59044a);});}return respondWithRpcPromise(_0xc8e8('0xa1'),_0xc8e8('0xa2'),_0x59044a);})['then'](function(_0xf396bf){respondWithRpcPromise('EventManager',_0xc8e8('0xa3'),{'event':_0xc8e8('0x6e'),'message':_0xf396bf},client9002);return _0xf396bf;})[_0xc8e8('0x20')](respondWithResult(_0x49e135,null))[_0xc8e8('0x55')](handleError(_0x49e135,null));};exports[_0xc8e8('0xa4')]=function(_0x4a6620,_0x52a3cd,_0x5a741a){return db[_0xc8e8('0x41')]['findOne']({'where':{'id':_0x4a6620[_0xc8e8('0x57')]['id']}})[_0xc8e8('0x20')](handleEntityNotFound(_0x52a3cd,null))[_0xc8e8('0x20')](function(_0x3b630c){if(_0x3b630c){return db[_0xc8e8('0xa5')][_0xc8e8('0xa6')](function(_0x84e7f2){return db[_0xc8e8('0x82')][_0xc8e8('0x36')]({'where':{'OpenchannelAccountId':_0x4a6620[_0xc8e8('0x57')]['id']},'transaction':_0x84e7f2})[_0xc8e8('0x20')](function(_0x5ca931){var _0x4ea706=_[_0xc8e8('0x40')](_0x4a6620[_0xc8e8('0x5b')],function(_0x19a2d4){_0x19a2d4['OpenchannelAccountId']=_0x4a6620[_0xc8e8('0x57')]['id'];return _0x19a2d4;});return db[_0xc8e8('0x82')]['bulkCreate'](_0x4ea706,{'transaction':_0x84e7f2});});})[_0xc8e8('0x20')](function(){return db[_0xc8e8('0x82')][_0xc8e8('0xa7')]({'where':{'OpenchannelAccountId':_0x4a6620[_0xc8e8('0x57')]['id']},'order':_0xc8e8('0x89')});});}})['then'](respondWithResult(_0x52a3cd,null))[_0xc8e8('0x55')](handleError(_0x52a3cd,null));};exports[_0xc8e8('0xa8')]=function(_0x3eabef,_0x4cfcfd,_0x4fa283){var _0x41ebc5={};var _0x1e6e58={};var _0x3bc00f;var _0x3f8f9d;return db['OpenchannelAccount'][_0xc8e8('0xa9')]({'where':{'id':_0x3eabef[_0xc8e8('0x57')]['id']}})[_0xc8e8('0x20')](handleEntityNotFound(_0x4cfcfd,null))[_0xc8e8('0x20')](function(_0x2f1f16){if(_0x2f1f16){_0x3bc00f=_0x2f1f16;_0x1e6e58[_0xc8e8('0x44')]=_[_0xc8e8('0x46')](db[_0xc8e8('0x82')][_0xc8e8('0x42')]);_0x1e6e58['query']=_[_0xc8e8('0x46')](_0x3eabef[_0xc8e8('0x45')]);_0x1e6e58[_0xc8e8('0x4e')]=_[_0xc8e8('0x47')](_0x1e6e58[_0xc8e8('0x44')],_0x1e6e58[_0xc8e8('0x45')]);_0x41ebc5[_0xc8e8('0x48')]=_[_0xc8e8('0x47')](_0x1e6e58['model'],qs[_0xc8e8('0x58')](_0x3eabef[_0xc8e8('0x45')][_0xc8e8('0x58')]));_0x41ebc5[_0xc8e8('0x48')]=_0x41ebc5[_0xc8e8('0x48')][_0xc8e8('0x49')]?_0x41ebc5[_0xc8e8('0x48')]:_0x1e6e58['model'];_0x41ebc5['order']=qs['sort'](_0x3eabef[_0xc8e8('0x45')][_0xc8e8('0x4b')]);_0x41ebc5[_0xc8e8('0x4c')]=qs[_0xc8e8('0x4e')](_[_0xc8e8('0x4d')](_0x3eabef[_0xc8e8('0x45')],_0x1e6e58[_0xc8e8('0x4e')]));if(_0x3eabef[_0xc8e8('0x45')][_0xc8e8('0x4f')]){_0x41ebc5[_0xc8e8('0x4c')]=_[_0xc8e8('0x50')](_0x41ebc5[_0xc8e8('0x4c')],{'$or':_['map'](_0x41ebc5[_0xc8e8('0x48')],function(_0xbd8590){var _0x1c8a73={};_0x1c8a73[_0xbd8590]={'$like':'%'+_0x3eabef[_0xc8e8('0x45')][_0xc8e8('0x4f')]+'%'};return _0x1c8a73;})});}_0x41ebc5=_[_0xc8e8('0x50')]({},_0x41ebc5,_0x3eabef['options']);return _0x3bc00f[_0xc8e8('0xa8')](_0x41ebc5);}})[_0xc8e8('0x20')](function(_0x175f91){if(_0x175f91){_0x3f8f9d=_0x175f91[_0xc8e8('0x49')];if(!_0x3eabef['query']['hasOwnProperty'](_0xc8e8('0x65'))){_0x41ebc5['limit']=qs['limit'](_0x3eabef[_0xc8e8('0x45')][_0xc8e8('0x2e')]);_0x41ebc5['offset']=qs['offset'](_0x3eabef[_0xc8e8('0x45')][_0xc8e8('0x2c')]);}return _0x3bc00f[_0xc8e8('0xa8')](_0x41ebc5);}})['then'](function(_0x392531){if(_0x392531){return _0x392531?{'count':_0x3f8f9d,'rows':_0x392531}:null;}})[_0xc8e8('0x20')](respondWithResult(_0x4cfcfd,null))[_0xc8e8('0x55')](handleError(_0x4cfcfd,null));};exports[_0xc8e8('0xaa')]=function(_0x126f99,_0x467865,_0x3d48a3){var _0x26d84e={'raw':![],'where':{}};var _0x1f7fde={};var _0x1c1a34={'count':0x0,'rows':[]};return db[_0xc8e8('0x41')][_0xc8e8('0xa9')]({'where':{'id':_0x126f99[_0xc8e8('0x57')]['id']}})[_0xc8e8('0x20')](handleEntityNotFound(_0x467865,null))[_0xc8e8('0x20')](function(_0x228ac3){if(_0x228ac3){_0x1f7fde[_0xc8e8('0x44')]=_[_0xc8e8('0x46')](db[_0xc8e8('0x91')][_0xc8e8('0x42')]);_0x1f7fde['query']=_[_0xc8e8('0x46')](_0x126f99[_0xc8e8('0x45')]);_0x1f7fde[_0xc8e8('0x4e')]=_[_0xc8e8('0x47')](_0x1f7fde[_0xc8e8('0x44')],_0x1f7fde[_0xc8e8('0x45')]);_0x26d84e[_0xc8e8('0x48')]=_[_0xc8e8('0x47')](_0x1f7fde['model'],qs['fields'](_0x126f99[_0xc8e8('0x45')][_0xc8e8('0x58')]));_0x26d84e[_0xc8e8('0x48')]=_0x26d84e['attributes'][_0xc8e8('0x49')]?_0x26d84e['attributes']:_0x1f7fde['model'];if(!_0x126f99[_0xc8e8('0x45')][_0xc8e8('0x4a')](_0xc8e8('0x65'))){_0x26d84e[_0xc8e8('0x2e')]=qs[_0xc8e8('0x2e')](_0x126f99['query']['limit']);_0x26d84e[_0xc8e8('0x2c')]=qs[_0xc8e8('0x2c')](_0x126f99['query'][_0xc8e8('0x2c')]);}_0x26d84e[_0xc8e8('0x66')]=qs[_0xc8e8('0x4b')](_0x126f99['query'][_0xc8e8('0x4b')]);_0x26d84e[_0xc8e8('0x4c')]=qs['filters'](_[_0xc8e8('0x4d')](_0x126f99['query'],_0x1f7fde['filters']));_0x26d84e['where'][_0xc8e8('0x63')]=_0x228ac3['id'];if(_0x126f99[_0xc8e8('0x45')][_0xc8e8('0x4f')]){_0x26d84e[_0xc8e8('0x4c')]=_['merge'](_0x26d84e['where'],{'$or':_['map'](_0x26d84e['attributes'],function(_0x4c4970){var _0x5493cc={};_0x5493cc[_0x4c4970]={'$like':'%'+_0x126f99[_0xc8e8('0x45')][_0xc8e8('0x4f')]+'%'};return _0x5493cc;})});}_0x26d84e=_['merge']({},_0x26d84e,_0x126f99[_0xc8e8('0x51')]);return db[_0xc8e8('0x91')][_0xc8e8('0x2f')]({'where':_0x26d84e[_0xc8e8('0x4c')]})[_0xc8e8('0x20')](function(_0x1f67fd){_0x1c1a34['count']=_0x1f67fd;if(_0x126f99[_0xc8e8('0x45')][_0xc8e8('0x52')]){_0x26d84e[_0xc8e8('0x53')]=[{'model':db['CmContact'],'as':_0xc8e8('0xab'),'required':![]},{'model':db[_0xc8e8('0xac')],'as':_0xc8e8('0xad'),'attributes':[_0xc8e8('0x3b'),_0xc8e8('0xae'),'internal'],'required':![]},{'model':db[_0xc8e8('0xaf')],'as':_0xc8e8('0xb0'),'attributes':['id',_0xc8e8('0x3b'),_0xc8e8('0xb1')],'where':_0x126f99[_0xc8e8('0x45')][_0xc8e8('0xb2')]?{'id':_0x126f99[_0xc8e8('0x45')][_0xc8e8('0xb2')]}:undefined,'required':_0x126f99[_0xc8e8('0x45')][_0xc8e8('0xb2')]?!![]:![]}];}return db[_0xc8e8('0x91')][_0xc8e8('0x67')](_0x26d84e);})[_0xc8e8('0x20')](function(_0x3453ee){_0x1c1a34[_0xc8e8('0x54')]=_0x3453ee;return _0x1c1a34;});}})[_0xc8e8('0x20')](respondWithFilteredResult(_0x467865,_0x26d84e))[_0xc8e8('0x55')](handleError(_0x467865,null));};exports[_0xc8e8('0xb3')]=function(_0x1cf6cb,_0x24a806,_0x25f51a){return db[_0xc8e8('0x41')]['find']({'where':{'id':_0x1cf6cb['params']['id']}})[_0xc8e8('0x20')](handleEntityNotFound(_0x24a806,null))['then'](function(_0x54275c){if(_0x54275c){return _0x54275c[_0xc8e8('0xb3')](_0x1cf6cb[_0xc8e8('0x5b')]['ids'],_[_0xc8e8('0xb4')](_0x1cf6cb[_0xc8e8('0x5b')],[_0xc8e8('0x69'),'id'])||{})[_0xc8e8('0x92')](function(_0x3bc8a7){for(var _0xb644a2=0x0;_0xb644a2<_0x1cf6cb[_0xc8e8('0x5b')]['ids']['length'];_0xb644a2+=0x1){socket[_0xc8e8('0xb5')](_0xc8e8('0xb6'),{'UserId':Number(_0x1cf6cb[_0xc8e8('0x5b')]['ids'][_0xb644a2]),'OpenchannelAccountId':Number(_0x1cf6cb[_0xc8e8('0x57')]['id'])});}return _0x3bc8a7;});}})[_0xc8e8('0x20')](respondWithResult(_0x24a806,null))[_0xc8e8('0x55')](handleError(_0x24a806,null));};exports['removeAgents']=function(_0x163bb1,_0x32fdde,_0x2be0fc){return db[_0xc8e8('0x41')][_0xc8e8('0x59')]({'where':{'id':_0x163bb1[_0xc8e8('0x57')]['id']}})[_0xc8e8('0x20')](handleEntityNotFound(_0x32fdde,null))[_0xc8e8('0x20')](function(_0x24f070){if(_0x24f070){return _0x24f070[_0xc8e8('0xb7')](_0x163bb1[_0xc8e8('0x45')][_0xc8e8('0x69')])['then'](function(){if(_[_0xc8e8('0xb8')](_0x163bb1[_0xc8e8('0x45')][_0xc8e8('0x69')])){for(var _0x2d81a2=0x0;_0x2d81a2<_0x163bb1[_0xc8e8('0x45')][_0xc8e8('0x69')][_0xc8e8('0x49')];_0x2d81a2+=0x1){socket['emit']('userOpenchannelAccount:remove',{'UserId':Number(_0x163bb1['query'][_0xc8e8('0x69')][_0x2d81a2]),'OpenchannelAccountId':Number(_0x163bb1[_0xc8e8('0x57')]['id'])});}}else{socket[_0xc8e8('0xb5')](_0xc8e8('0xb9'),{'UserId':Number(_0x163bb1[_0xc8e8('0x45')]['ids']),'OpenchannelAccountId':Number(_0x163bb1['params']['id'])});}});}})['then'](respondWithStatusCode(_0x32fdde,null))[_0xc8e8('0x55')](handleError(_0x32fdde,null));};exports['getAgents']=function(_0x8eeb4c,_0x5b5aa4,_0x114c2a){var _0x2f5bf5={};var _0x3002e4={};var _0x11f7c8;var _0x3aa442;return db[_0xc8e8('0x41')][_0xc8e8('0xa9')]({'where':{'id':_0x8eeb4c[_0xc8e8('0x57')]['id']}})[_0xc8e8('0x20')](handleEntityNotFound(_0x5b5aa4,null))[_0xc8e8('0x20')](function(_0x490556){if(_0x490556){_0x11f7c8=_0x490556;_0x3002e4[_0xc8e8('0x44')]=_[_0xc8e8('0x46')](db[_0xc8e8('0xac')][_0xc8e8('0x42')]);_0x3002e4[_0xc8e8('0x45')]=_[_0xc8e8('0x46')](_0x8eeb4c[_0xc8e8('0x45')]);_0x3002e4[_0xc8e8('0x4e')]=_[_0xc8e8('0x47')](_0x3002e4[_0xc8e8('0x44')],_0x3002e4[_0xc8e8('0x45')]);_0x2f5bf5[_0xc8e8('0x48')]=_[_0xc8e8('0x47')](_0x3002e4[_0xc8e8('0x44')],qs[_0xc8e8('0x58')](_0x8eeb4c[_0xc8e8('0x45')]['fields']));_0x2f5bf5[_0xc8e8('0x48')]=_0x2f5bf5[_0xc8e8('0x48')][_0xc8e8('0x49')]?_0x2f5bf5[_0xc8e8('0x48')]:_0x3002e4[_0xc8e8('0x44')];_0x2f5bf5[_0xc8e8('0x66')]=qs['sort'](_0x8eeb4c['query']['sort']);_0x2f5bf5[_0xc8e8('0x4c')]=qs[_0xc8e8('0x4e')](_[_0xc8e8('0x4d')](_0x8eeb4c[_0xc8e8('0x45')],_0x3002e4[_0xc8e8('0x4e')]));if(_0x8eeb4c[_0xc8e8('0x45')]['filter']){_0x2f5bf5[_0xc8e8('0x4c')]=_[_0xc8e8('0x50')](_0x2f5bf5['where'],{'$or':_[_0xc8e8('0x40')](_0x2f5bf5[_0xc8e8('0x48')],function(_0x1a0a0a){var _0x2b0b32={};_0x2b0b32[_0x1a0a0a]={'$like':'%'+_0x8eeb4c[_0xc8e8('0x45')][_0xc8e8('0x4f')]+'%'};return _0x2b0b32;})});}_0x2f5bf5=_[_0xc8e8('0x50')]({},_0x2f5bf5,_0x8eeb4c[_0xc8e8('0x51')]);return _0x11f7c8[_0xc8e8('0xba')](_0x2f5bf5);}})[_0xc8e8('0x20')](function(_0x5126d4){if(_0x5126d4){_0x3aa442=_0x5126d4['length'];if(!_0x8eeb4c[_0xc8e8('0x45')]['hasOwnProperty'](_0xc8e8('0x65'))){_0x2f5bf5['limit']=qs[_0xc8e8('0x2e')](_0x8eeb4c[_0xc8e8('0x45')][_0xc8e8('0x2e')]);_0x2f5bf5[_0xc8e8('0x2c')]=qs[_0xc8e8('0x2c')](_0x8eeb4c[_0xc8e8('0x45')][_0xc8e8('0x2c')]);}return _0x11f7c8[_0xc8e8('0xba')](_0x2f5bf5);}})[_0xc8e8('0x20')](function(_0x3ca64d){if(_0x3ca64d){return _0x3ca64d?{'count':_0x3aa442,'rows':_0x3ca64d}:null;}})['then'](respondWithResult(_0x5b5aa4,null))[_0xc8e8('0x55')](handleError(_0x5b5aa4,null));};exports[_0xc8e8('0x3c')]=function(_0x45ad0e,_0x1c9295,_0xead420){var _0x56e7e3,_0x344418,_0x432fe8;if(_[_0xc8e8('0x78')](_0x45ad0e[_0xc8e8('0x5b')][_0xc8e8('0x5b')])||_0x45ad0e[_0xc8e8('0x5b')][_0xc8e8('0x5b')]===''){throw new db[(_0xc8e8('0x71'))][(_0xc8e8('0x72'))](_0xc8e8('0x7b'));}if(_[_0xc8e8('0x78')](_0x45ad0e['body']['to'])){}_0x56e7e3=_0x45ad0e[_0xc8e8('0x5b')]['to'];return db[_0xc8e8('0x41')][_0xc8e8('0xa9')]({'where':{'id':_0x45ad0e['params']['id']}})[_0xc8e8('0x20')](handleEntityNotFound(_0x1c9295,null))[_0xc8e8('0x20')](function(_0x32bf01){if(_0x32bf01){return db[_0xc8e8('0x41')][_0xc8e8('0x59')]({'where':{'id':_0x32bf01['id']},'include':[{'model':db[_0xc8e8('0xbb')],'as':'List','include':[{'model':db['CmContact'],'as':_0xc8e8('0x80'),'where':{[_0x32bf01[_0xc8e8('0x7c')]]:_0x56e7e3},'limit':0x1,'order':[[_0xc8e8('0x76'),_0xc8e8('0x81')]]}]}]})['then'](handleEntityNotFound(_0x1c9295,null))[_0xc8e8('0x20')](function(_0x2a0a00){if(_0x2a0a00&&_0x2a0a00[_0xc8e8('0x84')]){_0x344418=_0x2a0a00['get']({'plain':!![]});if(_0x344418[_0xc8e8('0x84')]&&_0x344418[_0xc8e8('0x84')][_0xc8e8('0x80')][_0xc8e8('0x49')]){return _0x344418['List'][_0xc8e8('0x80')][0x0];}return db[_0xc8e8('0x70')]['create'](_[_0xc8e8('0x8a')](_0x45ad0e[_0xc8e8('0x5b')],{'firstName':_0x56e7e3,[_0x2a0a00[_0xc8e8('0x7c')]]:_0x56e7e3,'phone':_0x56e7e3,'ListId':_0x344418[_0xc8e8('0x8b')]}));}})[_0xc8e8('0x20')](handleEntityNotFound(_0x1c9295,null))['then'](function(_0x300d30){if(_0x300d30){_0x432fe8=_0x300d30;return db[_0xc8e8('0x91')][_0xc8e8('0x59')]({'where':{'ContactId':_0x432fe8['id'],'closed':![],'OpenchannelAccountId':_0x344418['id']}})[_0xc8e8('0x20')](function(_0x2c3baf){if(_0x2c3baf){return[_0x2c3baf,![]];}return db['OpenchannelInteraction'][_0xc8e8('0x5a')]({'UserId':_0x45ad0e[_0xc8e8('0x5c')]['id'],'ContactId':_0x432fe8['id'],'OpenchannelAccountId':_0x344418['id'],'lastMsgDirection':_0xc8e8('0xbc'),'Messages':[_[_0xc8e8('0x50')](_0x45ad0e[_0xc8e8('0x5b')],{'read':![],'body':_0x45ad0e[_0xc8e8('0x5b')][_0xc8e8('0x5b')],'OpenchannelAccountId':_0x344418['id'],'UserId':_0x45ad0e[_0xc8e8('0x5c')]['id'],'ContactId':_0x432fe8['id']})]},{'include':[{'model':db[_0xc8e8('0x9b')],'as':_0xc8e8('0xbd')}]})[_0xc8e8('0x20')](function(_0x3e1153){return[_0x3e1153,!![]];});});}})['spread'](function(_0x86031,_0x15cfd7){if(_0x15cfd7){return _0x86031;}return db[_0xc8e8('0x9b')]['create'](_[_0xc8e8('0x50')](_0x45ad0e[_0xc8e8('0x5b')],{'read':![],'body':_0x45ad0e[_0xc8e8('0x5b')][_0xc8e8('0x5b')],'OpenchannelAccountId':_0x344418['id'],'OpenchannelInteractionId':_0x86031['id'],'UserId':_0x45ad0e[_0xc8e8('0x5c')]['id'],'ContactId':_0x432fe8['id']}))[_0xc8e8('0x20')](function(_0x5cd3f9){_0x86031[_0xc8e8('0xbe')][_0xc8e8('0xbd')]=[];_0x86031[_0xc8e8('0xbe')][_0xc8e8('0xbd')][_0xc8e8('0x97')](_0x5cd3f9['dataValues']);return _0x86031;});});}})[_0xc8e8('0x20')](respondWithResult(_0x1c9295,null))[_0xc8e8('0x55')](handleError(_0x1c9295,null));};
\ No newline at end of file
+var _0xf42f=['Owner','fullname','Tags','color','tag','addAgents','emit','userOpenchannelAccount:save','removeAgents','isArray','userOpenchannelAccount:remove','getAgents','CmList','CmContact','out','OpenchannelMessage','Messages','dataValues','eml-format','zip-dir','request-promise','moment','bluebird','util','path','sox','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','api','../../config/utils','../../config/license/util','../../mysqldb','redis','localhost','socket.io-emitter','jayson/promise','client','http','request','then','info','OpenchannelAccount,\x20%s,\x20%s','request\x20sent','debug','OpenchannelAccount,\x20%s,\x20%s,\x20%s','error','code','message','result','sendStatus','status','json','offset','undefined','count','limit','set','apply','reject','destroy','UserProfileResource','stack','name','send','index','mandatoryDispositionPause','map','OpenchannelAccount','rawAttributes','fieldName','type','key','model','keys','query','intersection','attributes','fields','hasOwnProperty','nolimit','order','sort','where','filters','pick','merge','VIRTUAL','filter','includeAll','include','findAll','rows','catch','params','Pause','length','options','find','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','user','get','OpenchannelAccounts','UserProfileSection','userProfileId','autoAssociation','create','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','update','body','describe','addDisposition','OpenchannelAccountId','getDispositions','findOne','Disposition','removeDispositions','ids','addAnswer','CannedAnswer','getAnswers','removeAnswers','notify','openchannel','Sequelize','ValidationError','no\x20available\x20attributes','difference','updatedAt','createdAt','CompanyId','ListId','isNil','from','from\x20is\x20mandatory','body\x20is\x20mandatory\x20and\x20not\x20empty','mapKey\x20is\x20mandatory,\x20please\x20use\x20one\x20of\x20these:\x20','includes','mapKey','Contacts','DESC','Applications','List','orderBy','account','defaults','contact','firstName','lastName','threadId','OpenchannelInteraction','externalUrl','ContactId','spread','messageId','interaction','created','autoclose','applications','push','close','*,*,*,*','UserId','User','unshift','agent','waitForTheAssignedAgent','forcedOwnership','Start','startRouting','EventManager','addApplications','sequelize','transaction','OpenchannelApplication','bulkCreate','findAndCountAll','priority','getApplications','getInteractions','Contact'];(function(_0x4ad9aa,_0xfa4ab3){var _0x270198=function(_0x51a191){while(--_0x51a191){_0x4ad9aa['push'](_0x4ad9aa['shift']());}};_0x270198(++_0xfa4ab3);}(_0xf42f,0x194));var _0xff42=function(_0x26e8f6,_0x5baebc){_0x26e8f6=_0x26e8f6-0x0;var _0x53e0fa=_0xf42f[_0x26e8f6];return _0x53e0fa;};'use strict';var emlformat=require(_0xff42('0x0'));var rimraf=require('rimraf');var zipdir=require(_0xff42('0x1'));var jsonpatch=require('fast-json-patch');var rp=require(_0xff42('0x2'));var moment=require(_0xff42('0x3'));var BPromise=require(_0xff42('0x4'));var Mustache=require('mustache');var util=require(_0xff42('0x5'));var path=require(_0xff42('0x6'));var sox=require(_0xff42('0x7'));var csv=require(_0xff42('0x8'));var ejs=require(_0xff42('0x9'));var fs=require('fs');var fs_extra=require(_0xff42('0xa'));var _=require(_0xff42('0xb'));var squel=require(_0xff42('0xc'));var crypto=require(_0xff42('0xd'));var jsforce=require(_0xff42('0xe'));var deskjs=require(_0xff42('0xf'));var toCsv=require('to-csv');var querystring=require(_0xff42('0x10'));var Papa=require('papaparse');var Redis=require(_0xff42('0x11'));var authService=require(_0xff42('0x12'));var qs=require(_0xff42('0x13'));var as=require(_0xff42('0x14'));var hardwareService=require(_0xff42('0x15'));var logger=require('../../config/logger')(_0xff42('0x16'));var utils=require(_0xff42('0x17'));var config=require('../../config/environment');var licenseUtil=require(_0xff42('0x18'));var db=require(_0xff42('0x19'))['db'];config[_0xff42('0x1a')]=_['defaults'](config[_0xff42('0x1a')],{'host':_0xff42('0x1b'),'port':0x18eb});var socket=require(_0xff42('0x1c'))(new Redis(config['redis']));require('./openchannelAccount.socket')['register'](socket);var jayson=require(_0xff42('0x1d'));var client=jayson[_0xff42('0x1e')][_0xff42('0x1f')]({'port':0x232c});var client9002=jayson['client'][_0xff42('0x1f')]({'port':0x232a});function respondWithRpcPromise(_0x50939f,_0x4c96a9,_0x49d721,_0x7fa2f3){return new BPromise(function(_0x2cc562,_0x58ef87){var _0x57cfff=_0x7fa2f3||client;return _0x57cfff[_0xff42('0x20')](_0x50939f,_0x49d721)[_0xff42('0x21')](function(_0xd3b4ad){logger[_0xff42('0x22')](_0xff42('0x23'),_0x4c96a9,_0xff42('0x24'));logger[_0xff42('0x25')](_0xff42('0x26'),_0x4c96a9,_0xff42('0x24'),JSON['stringify'](_0xd3b4ad));if(_0xd3b4ad['error']){if(_0xd3b4ad[_0xff42('0x27')][_0xff42('0x28')]===0x1f4){logger[_0xff42('0x27')](_0xff42('0x23'),_0x4c96a9,_0xd3b4ad['error']['message']);return _0x58ef87(_0xd3b4ad[_0xff42('0x27')][_0xff42('0x29')]);}logger[_0xff42('0x27')](_0xff42('0x23'),_0x4c96a9,_0xd3b4ad[_0xff42('0x27')][_0xff42('0x29')]);return _0x2cc562(_0xd3b4ad[_0xff42('0x27')]['message']);}else{logger['info'](_0xff42('0x23'),_0x4c96a9,_0xff42('0x24'));_0x2cc562(_0xd3b4ad[_0xff42('0x2a')][_0xff42('0x29')]);}})['catch'](function(_0x1b7fb6){logger[_0xff42('0x27')](_0xff42('0x23'),_0x4c96a9,_0x1b7fb6);_0x58ef87(_0x1b7fb6);});});}function respondWithStatusCode(_0x129ab5,_0x2244e){_0x2244e=_0x2244e||0xcc;return function(_0x51c52c){if(_0x51c52c){return _0x129ab5[_0xff42('0x2b')](_0x2244e);}return _0x129ab5['status'](_0x2244e)['end']();};}function respondWithResult(_0x47b149,_0x13dd32){_0x13dd32=_0x13dd32||0xc8;return function(_0x4fb0f7){if(_0x4fb0f7){return _0x47b149[_0xff42('0x2c')](_0x13dd32)[_0xff42('0x2d')](_0x4fb0f7);}};}function respondWithFilteredResult(_0x5521d0,_0x17bc34){return function(_0x40bba9){if(_0x40bba9){var _0x346a5d=typeof _0x17bc34[_0xff42('0x2e')]===_0xff42('0x2f')&&typeof _0x17bc34['limit']===_0xff42('0x2f');var _0x5eac06=_0x40bba9[_0xff42('0x30')];var _0xee0fa5=_0x346a5d?0x0:_0x17bc34[_0xff42('0x2e')];var _0xfe8efc=_0x346a5d?_0x40bba9['count']:_0x17bc34[_0xff42('0x2e')]+_0x17bc34[_0xff42('0x31')];var _0x165e03;if(_0xfe8efc>=_0x5eac06){_0xfe8efc=_0x5eac06;_0x165e03=0xc8;}else{_0x165e03=0xce;}_0x5521d0['status'](_0x165e03);return _0x5521d0[_0xff42('0x32')]('Content-Range',_0xee0fa5+'-'+_0xfe8efc+'/'+_0x5eac06)[_0xff42('0x2d')](_0x40bba9);}return null;};}function patchUpdates(_0x480733){return function(_0x40fd9f){try{jsonpatch[_0xff42('0x33')](_0x40fd9f,_0x480733,!![]);}catch(_0x4f8159){return BPromise[_0xff42('0x34')](_0x4f8159);}return _0x40fd9f['save']();};}function saveUpdates(_0x5bcb66,_0x5b8831){return function(_0x3d108a){if(_0x3d108a){return _0x3d108a['update'](_0x5bcb66)[_0xff42('0x21')](function(_0x4787a6){return _0x4787a6;});}return null;};}function removeEntity(_0x3c8edb,_0x5d957d){return function(_0x38d381){if(_0x38d381){return _0x38d381[_0xff42('0x35')]()[_0xff42('0x21')](function(){var _0x216ccf=_0x38d381['get']({'plain':!![]});var _0x362c73='OpenchannelAccounts';return db[_0xff42('0x36')]['destroy']({'where':{'type':_0x362c73,'resourceId':_0x216ccf['id']}})[_0xff42('0x21')](function(){return _0x38d381;});})['then'](function(){_0x3c8edb[_0xff42('0x2c')](0xcc)['end']();});}};}function handleEntityNotFound(_0x4336a3,_0x1e1212){return function(_0xdd0e8a){if(!_0xdd0e8a){_0x4336a3['sendStatus'](0x194);}return _0xdd0e8a;};}function handleError(_0x2f2c17,_0x3c94e6){_0x3c94e6=_0x3c94e6||0x1f4;return function(_0x77c597){logger['error'](_0x77c597[_0xff42('0x37')]);if(_0x77c597['name']){delete _0x77c597[_0xff42('0x38')];}_0x2f2c17[_0xff42('0x2c')](_0x3c94e6)[_0xff42('0x39')](_0x77c597);};}exports[_0xff42('0x3a')]=function(_0x227b8b,_0x55409a){var _0x19c8a5={'include':[{'model':db['Pause'],'as':_0xff42('0x3b')}]},_0x565e3e={},_0x496cc6={'count':0x0,'rows':[]};var _0x244156=_[_0xff42('0x3c')](db[_0xff42('0x3d')][_0xff42('0x3e')],function(_0x2376dc){return{'name':_0x2376dc[_0xff42('0x3f')],'type':_0x2376dc[_0xff42('0x40')][_0xff42('0x41')]};});_0x565e3e[_0xff42('0x42')]=_[_0xff42('0x3c')](_0x244156,_0xff42('0x38'));_0x565e3e['query']=_[_0xff42('0x43')](_0x227b8b[_0xff42('0x44')]);_0x565e3e['filters']=_[_0xff42('0x45')](_0x565e3e[_0xff42('0x42')],_0x565e3e[_0xff42('0x44')]);_0x19c8a5[_0xff42('0x46')]=_[_0xff42('0x45')](_0x565e3e['model'],qs[_0xff42('0x47')](_0x227b8b[_0xff42('0x44')][_0xff42('0x47')]));_0x19c8a5[_0xff42('0x46')]=_0x19c8a5[_0xff42('0x46')]['length']?_0x19c8a5[_0xff42('0x46')]:_0x565e3e[_0xff42('0x42')];if(!_0x227b8b[_0xff42('0x44')][_0xff42('0x48')](_0xff42('0x49'))){_0x19c8a5[_0xff42('0x31')]=qs[_0xff42('0x31')](_0x227b8b[_0xff42('0x44')]['limit']);_0x19c8a5[_0xff42('0x2e')]=qs['offset'](_0x227b8b[_0xff42('0x44')][_0xff42('0x2e')]);}_0x19c8a5[_0xff42('0x4a')]=qs[_0xff42('0x4b')](_0x227b8b['query'][_0xff42('0x4b')]);_0x19c8a5[_0xff42('0x4c')]=qs[_0xff42('0x4d')](_[_0xff42('0x4e')](_0x227b8b[_0xff42('0x44')],_0x565e3e[_0xff42('0x4d')]),_0x244156);if(_0x227b8b[_0xff42('0x44')]['filter']){_0x19c8a5['where']=_[_0xff42('0x4f')](_0x19c8a5['where'],{'$or':_['map'](_0x244156,function(_0x17a067){if(_0x17a067['type']!==_0xff42('0x50')){var _0x31f4fa={};_0x31f4fa[_0x17a067[_0xff42('0x38')]]={'$like':'%'+_0x227b8b['query'][_0xff42('0x51')]+'%'};return _0x31f4fa;}})});}_0x19c8a5=_[_0xff42('0x4f')]({},_0x19c8a5,_0x227b8b['options']);var _0x1772e7={'where':_0x19c8a5[_0xff42('0x4c')]};return db[_0xff42('0x3d')][_0xff42('0x30')](_0x1772e7)[_0xff42('0x21')](function(_0x1edbc2){_0x496cc6[_0xff42('0x30')]=_0x1edbc2;if(_0x227b8b['query'][_0xff42('0x52')]){_0x19c8a5[_0xff42('0x53')]=[{'all':!![]}];}return db[_0xff42('0x3d')][_0xff42('0x54')](_0x19c8a5);})[_0xff42('0x21')](function(_0x37a3e1){_0x496cc6[_0xff42('0x55')]=_0x37a3e1;return _0x496cc6;})[_0xff42('0x21')](respondWithFilteredResult(_0x55409a,_0x19c8a5))[_0xff42('0x56')](handleError(_0x55409a,null));};exports['show']=function(_0x2216cb,_0x3fd996){var _0x2d4842={'raw':![],'where':{'id':_0x2216cb[_0xff42('0x57')]['id']},'include':[{'model':db[_0xff42('0x58')],'as':_0xff42('0x3b')}]},_0x3bdbcb={};_0x3bdbcb[_0xff42('0x42')]=_[_0xff42('0x43')](db['OpenchannelAccount'][_0xff42('0x3e')]);_0x3bdbcb[_0xff42('0x44')]=_[_0xff42('0x43')](_0x2216cb[_0xff42('0x44')]);_0x3bdbcb[_0xff42('0x4d')]=_[_0xff42('0x45')](_0x3bdbcb[_0xff42('0x42')],_0x3bdbcb[_0xff42('0x44')]);_0x2d4842[_0xff42('0x46')]=_[_0xff42('0x45')](_0x3bdbcb[_0xff42('0x42')],qs[_0xff42('0x47')](_0x2216cb[_0xff42('0x44')][_0xff42('0x47')]));_0x2d4842[_0xff42('0x46')]=_0x2d4842[_0xff42('0x46')][_0xff42('0x59')]?_0x2d4842[_0xff42('0x46')]:_0x3bdbcb[_0xff42('0x42')];if(_0x2216cb[_0xff42('0x44')][_0xff42('0x52')]){_0x2d4842['include']=[{'all':!![]}];}_0x2d4842=_['merge']({},_0x2d4842,_0x2216cb[_0xff42('0x5a')]);return db[_0xff42('0x3d')][_0xff42('0x5b')](_0x2d4842)[_0xff42('0x21')](handleEntityNotFound(_0x3fd996,null))[_0xff42('0x21')](respondWithResult(_0x3fd996,null))[_0xff42('0x56')](handleError(_0x3fd996,null));};exports['create']=function(_0x40041b,_0x30044a){return db[_0xff42('0x3d')]['create'](_0x40041b['body'],{})[_0xff42('0x21')](function(_0x3bf4da){var _0x5e1c98=_0x40041b['user']['get']({'plain':!![]});if(!_0x5e1c98)throw new Error(_0xff42('0x5c'));if(_0x5e1c98[_0xff42('0x5d')]===_0xff42('0x5e')){var _0x57be0d=_0x3bf4da[_0xff42('0x5f')]({'plain':!![]});var _0x5a5f19=_0xff42('0x60');return db[_0xff42('0x61')][_0xff42('0x5b')]({'where':{'name':_0x5a5f19,'userProfileId':_0x5e1c98[_0xff42('0x62')]},'raw':!![]})['then'](function(_0x5a4997){if(_0x5a4997&&_0x5a4997[_0xff42('0x63')]===0x0){return db[_0xff42('0x36')][_0xff42('0x64')]({'name':_0x57be0d['name'],'resourceId':_0x57be0d['id'],'type':_0x5a4997[_0xff42('0x38')],'sectionId':_0x5a4997['id']},{})[_0xff42('0x21')](function(){return _0x3bf4da;});}else{return _0x3bf4da;}})[_0xff42('0x56')](function(_0x1aa8a5){logger[_0xff42('0x27')](_0xff42('0x65'),_0x1aa8a5);throw _0x1aa8a5;});}return _0x3bf4da;})['then'](respondWithResult(_0x30044a,0xc9))[_0xff42('0x56')](handleError(_0x30044a,null));};exports[_0xff42('0x66')]=function(_0x4777e8,_0x1a40ae){if(_0x4777e8['body']['id']){delete _0x4777e8[_0xff42('0x67')]['id'];}return db['OpenchannelAccount'][_0xff42('0x5b')]({'where':{'id':_0x4777e8[_0xff42('0x57')]['id']},'include':[{'model':db[_0xff42('0x58')],'as':_0xff42('0x3b')}]})[_0xff42('0x21')](handleEntityNotFound(_0x1a40ae,null))[_0xff42('0x21')](saveUpdates(_0x4777e8['body'],null))[_0xff42('0x21')](respondWithResult(_0x1a40ae,null))[_0xff42('0x56')](handleError(_0x1a40ae,null));};exports[_0xff42('0x35')]=function(_0x5f1e52,_0x146e71){return db['OpenchannelAccount'][_0xff42('0x5b')]({'where':{'id':_0x5f1e52[_0xff42('0x57')]['id']}})[_0xff42('0x21')](handleEntityNotFound(_0x146e71,null))[_0xff42('0x21')](removeEntity(_0x146e71,null))[_0xff42('0x56')](handleError(_0x146e71,null));};exports[_0xff42('0x68')]=function(_0x32399c,_0x56fe6c){return db[_0xff42('0x3d')][_0xff42('0x68')]()['then'](respondWithResult(_0x56fe6c,null))[_0xff42('0x56')](handleError(_0x56fe6c,null));};exports[_0xff42('0x69')]=function(_0x3b87d4,_0x46588c,_0x4ca863){if(_0x3b87d4['body']['id']){delete _0x3b87d4[_0xff42('0x67')]['id'];}return db['OpenchannelAccount']['find']({'where':{'id':_0x3b87d4['params']['id']}})[_0xff42('0x21')](handleEntityNotFound(_0x46588c,null))['then'](function(_0x4eb5f9){if(_0x4eb5f9){_0x3b87d4['body'][_0xff42('0x6a')]=_0x4eb5f9['id'];return db['Disposition']['create'](_0x3b87d4[_0xff42('0x67')]);}})[_0xff42('0x21')](respondWithResult(_0x46588c,null))[_0xff42('0x56')](handleError(_0x46588c,null));};exports[_0xff42('0x6b')]=function(_0x1f7145,_0x4a3417,_0x2f19b1){var _0xf4b226={'raw':![],'where':{}};var _0x5e41b3={};var _0x215321={'count':0x0,'rows':[]};return db[_0xff42('0x3d')][_0xff42('0x6c')]({'where':{'id':_0x1f7145[_0xff42('0x57')]['id']}})[_0xff42('0x21')](handleEntityNotFound(_0x4a3417,null))[_0xff42('0x21')](function(_0x20fd57){if(_0x20fd57){_0x5e41b3[_0xff42('0x42')]=_[_0xff42('0x43')](db['Disposition'][_0xff42('0x3e')]);_0x5e41b3[_0xff42('0x44')]=_[_0xff42('0x43')](_0x1f7145[_0xff42('0x44')]);_0x5e41b3['filters']=_[_0xff42('0x45')](_0x5e41b3[_0xff42('0x42')],_0x5e41b3[_0xff42('0x44')]);_0xf4b226[_0xff42('0x46')]=_[_0xff42('0x45')](_0x5e41b3[_0xff42('0x42')],qs[_0xff42('0x47')](_0x1f7145[_0xff42('0x44')][_0xff42('0x47')]));_0xf4b226[_0xff42('0x46')]=_0xf4b226['attributes'][_0xff42('0x59')]?_0xf4b226[_0xff42('0x46')]:_0x5e41b3['model'];if(!_0x1f7145[_0xff42('0x44')][_0xff42('0x48')](_0xff42('0x49'))){_0xf4b226['limit']=qs[_0xff42('0x31')](_0x1f7145[_0xff42('0x44')][_0xff42('0x31')]);_0xf4b226[_0xff42('0x2e')]=qs[_0xff42('0x2e')](_0x1f7145[_0xff42('0x44')][_0xff42('0x2e')]);}_0xf4b226[_0xff42('0x4a')]=qs[_0xff42('0x4b')](_0x1f7145[_0xff42('0x44')][_0xff42('0x4b')]);_0xf4b226[_0xff42('0x4c')]=qs['filters'](_[_0xff42('0x4e')](_0x1f7145['query'],_0x5e41b3[_0xff42('0x4d')]));_0xf4b226['where'][_0xff42('0x6a')]=_0x20fd57['id'];if(_0x1f7145[_0xff42('0x44')][_0xff42('0x51')]){_0xf4b226[_0xff42('0x4c')]=_[_0xff42('0x4f')](_0xf4b226['where'],{'$or':_[_0xff42('0x3c')](_0xf4b226[_0xff42('0x46')],function(_0x4849f2){var _0x214614={};_0x214614[_0x4849f2]={'$like':'%'+_0x1f7145[_0xff42('0x44')][_0xff42('0x51')]+'%'};return _0x214614;})});}_0xf4b226=_[_0xff42('0x4f')]({},_0xf4b226,_0x1f7145[_0xff42('0x5a')]);return db[_0xff42('0x6d')][_0xff42('0x30')]({'where':_0xf4b226[_0xff42('0x4c')]})[_0xff42('0x21')](function(_0x4fa58e){_0x215321[_0xff42('0x30')]=_0x4fa58e;if(_0x1f7145['query']['includeAll']){_0xf4b226[_0xff42('0x53')]=[{'all':!![]}];}return db['Disposition'][_0xff42('0x54')](_0xf4b226);})['then'](function(_0x1be45b){_0x215321['rows']=_0x1be45b;return _0x215321;});}})[_0xff42('0x21')](respondWithFilteredResult(_0x4a3417,_0xf4b226))[_0xff42('0x56')](handleError(_0x4a3417,null));};exports[_0xff42('0x6e')]=function(_0x594613,_0x1b4a55,_0x23262f){return db[_0xff42('0x3d')][_0xff42('0x5b')]({'where':{'id':_0x594613[_0xff42('0x57')]['id']}})[_0xff42('0x21')](handleEntityNotFound(_0x1b4a55,null))[_0xff42('0x21')](function(_0xbee7ea){if(_0xbee7ea){return _0xbee7ea['removeDispositions'](_0x594613[_0xff42('0x44')][_0xff42('0x6f')]);}})[_0xff42('0x21')](respondWithStatusCode(_0x1b4a55,null))['catch'](handleError(_0x1b4a55,null));};exports[_0xff42('0x70')]=function(_0x14f547,_0x481cf7,_0x2b7dec){if(_0x14f547['body']['id']){delete _0x14f547['body']['id'];}return db[_0xff42('0x3d')][_0xff42('0x5b')]({'where':{'id':_0x14f547[_0xff42('0x57')]['id']}})[_0xff42('0x21')](handleEntityNotFound(_0x481cf7,null))['then'](function(_0x2ae19f){if(_0x2ae19f){_0x14f547[_0xff42('0x67')][_0xff42('0x6a')]=_0x2ae19f['id'];return db[_0xff42('0x71')]['create'](_0x14f547[_0xff42('0x67')]);}})[_0xff42('0x21')](respondWithResult(_0x481cf7,null))['catch'](handleError(_0x481cf7,null));};exports[_0xff42('0x72')]=function(_0x51f11c,_0x51853b,_0xb955d3){var _0x1c1bf0={'raw':![],'where':{}};var _0x4148fd={};var _0x58b5d4={'count':0x0,'rows':[]};return db[_0xff42('0x3d')][_0xff42('0x6c')]({'where':{'id':_0x51f11c['params']['id']}})[_0xff42('0x21')](handleEntityNotFound(_0x51853b,null))[_0xff42('0x21')](function(_0x1455e7){if(_0x1455e7){_0x4148fd[_0xff42('0x42')]=_[_0xff42('0x43')](db[_0xff42('0x71')]['rawAttributes']);_0x4148fd[_0xff42('0x44')]=_[_0xff42('0x43')](_0x51f11c[_0xff42('0x44')]);_0x4148fd[_0xff42('0x4d')]=_[_0xff42('0x45')](_0x4148fd[_0xff42('0x42')],_0x4148fd['query']);_0x1c1bf0[_0xff42('0x46')]=_['intersection'](_0x4148fd[_0xff42('0x42')],qs['fields'](_0x51f11c[_0xff42('0x44')][_0xff42('0x47')]));_0x1c1bf0[_0xff42('0x46')]=_0x1c1bf0['attributes'][_0xff42('0x59')]?_0x1c1bf0['attributes']:_0x4148fd[_0xff42('0x42')];if(!_0x51f11c[_0xff42('0x44')][_0xff42('0x48')](_0xff42('0x49'))){_0x1c1bf0[_0xff42('0x31')]=qs[_0xff42('0x31')](_0x51f11c[_0xff42('0x44')]['limit']);_0x1c1bf0[_0xff42('0x2e')]=qs[_0xff42('0x2e')](_0x51f11c['query'][_0xff42('0x2e')]);}_0x1c1bf0[_0xff42('0x4a')]=qs[_0xff42('0x4b')](_0x51f11c['query'][_0xff42('0x4b')]);_0x1c1bf0['where']=qs[_0xff42('0x4d')](_[_0xff42('0x4e')](_0x51f11c['query'],_0x4148fd['filters']));_0x1c1bf0[_0xff42('0x4c')][_0xff42('0x6a')]=_0x1455e7['id'];if(_0x51f11c[_0xff42('0x44')][_0xff42('0x51')]){_0x1c1bf0['where']=_['merge'](_0x1c1bf0[_0xff42('0x4c')],{'$or':_[_0xff42('0x3c')](_0x1c1bf0[_0xff42('0x46')],function(_0x255f6){var _0xb0a153={};_0xb0a153[_0x255f6]={'$like':'%'+_0x51f11c['query'][_0xff42('0x51')]+'%'};return _0xb0a153;})});}_0x1c1bf0=_['merge']({},_0x1c1bf0,_0x51f11c[_0xff42('0x5a')]);return db['CannedAnswer'][_0xff42('0x30')]({'where':_0x1c1bf0[_0xff42('0x4c')]})['then'](function(_0x3ff122){_0x58b5d4[_0xff42('0x30')]=_0x3ff122;if(_0x51f11c[_0xff42('0x44')][_0xff42('0x52')]){_0x1c1bf0[_0xff42('0x53')]=[{'all':!![]}];}return db[_0xff42('0x71')]['findAll'](_0x1c1bf0);})[_0xff42('0x21')](function(_0x105ff1){_0x58b5d4[_0xff42('0x55')]=_0x105ff1;return _0x58b5d4;});}})[_0xff42('0x21')](respondWithFilteredResult(_0x51853b,_0x1c1bf0))[_0xff42('0x56')](handleError(_0x51853b,null));};exports[_0xff42('0x73')]=function(_0x309ea0,_0x7e4f9f,_0x366a63){return db[_0xff42('0x3d')]['find']({'where':{'id':_0x309ea0['params']['id']}})[_0xff42('0x21')](handleEntityNotFound(_0x7e4f9f,null))[_0xff42('0x21')](function(_0x5dbaaa){if(_0x5dbaaa){return _0x5dbaaa[_0xff42('0x73')](_0x309ea0[_0xff42('0x44')][_0xff42('0x6f')]);}})[_0xff42('0x21')](respondWithStatusCode(_0x7e4f9f,null))[_0xff42('0x56')](handleError(_0x7e4f9f,null));};exports[_0xff42('0x74')]=function(_0x9a51cd,_0x1e30ee,_0x1df673){var _0x2519f1={'body':_0x9a51cd[_0xff42('0x67')],'channel':_0xff42('0x75')};var _0x46badc=[];var _0x4a4519=[];var _0x1b2341={};var _0x266300=![];return db['CmContact'][_0xff42('0x68')]()['then'](function(_0x127d9f){if(!_0x127d9f){throw new db[(_0xff42('0x76'))][(_0xff42('0x77'))](_0xff42('0x78'));}_0x46badc=_[_0xff42('0x79')](_[_0xff42('0x43')](_0x127d9f),['createdAt',_0xff42('0x7a')]);_0x4a4519=_[_0xff42('0x79')](_[_0xff42('0x43')](_0x127d9f),[_0xff42('0x7b'),_0xff42('0x7a'),_0xff42('0x7c'),_0xff42('0x7d')]);if(_0x9a51cd[_0xff42('0x67')]['id']){delete _0x9a51cd[_0xff42('0x67')]['id'];}if(_[_0xff42('0x7e')](_0x9a51cd[_0xff42('0x67')][_0xff42('0x7f')])){throw new db[(_0xff42('0x76'))]['ValidationError'](_0xff42('0x80'));}if(_['isNil'](_0x9a51cd[_0xff42('0x67')][_0xff42('0x67')])||_0x9a51cd[_0xff42('0x67')]['body']===''){throw new db['Sequelize'][(_0xff42('0x77'))](_0xff42('0x81'));}if(_[_0xff42('0x7e')](_0x9a51cd[_0xff42('0x67')]['mapKey'])){throw new db[(_0xff42('0x76'))][(_0xff42('0x77'))](_0xff42('0x82')+_0x4a4519);}if(!_[_0xff42('0x83')](_0x4a4519,_0x9a51cd['body'][_0xff42('0x84')])){throw new db['Sequelize'][(_0xff42('0x77'))]('mapKey\x20invalid,\x20please\x20use\x20one\x20of\x20these:\x20'+_0x4a4519);}_0x1b2341[_0x9a51cd[_0xff42('0x67')]['mapKey']]=_0x9a51cd[_0xff42('0x67')][_0xff42('0x7f')];})[_0xff42('0x21')](function(){return db[_0xff42('0x3d')][_0xff42('0x5b')]({'where':{'id':_0x9a51cd[_0xff42('0x57')]['id']},'include':[{'model':db['CmList'],'as':'List','include':[{'model':db['CmContact'],'as':_0xff42('0x85'),'where':_0x1b2341,'limit':0x1,'order':[[_0xff42('0x7a'),_0xff42('0x86')]]}]},{'model':db['OpenchannelApplication'],'as':_0xff42('0x87')}]});})[_0xff42('0x21')](handleEntityNotFound(_0x1e30ee,null))['then'](function(_0x1ab935){if(_0x1ab935&&_0x1ab935[_0xff42('0x88')]){_0x2519f1['account']=_0x1ab935;_0x2519f1['applications']=_0x1ab935[_0xff42('0x87')];_0x2519f1['list']=_0x1ab935[_0xff42('0x88')];_0x2519f1['applications']=_[_0xff42('0x89')](_0x2519f1['applications'],['priority'],['asc']);if(_0x2519f1['account'][_0xff42('0x87')]){delete _0x2519f1['account'][_0xff42('0x87')];}if(_0x2519f1[_0xff42('0x8a')]['List']&&_0x2519f1[_0xff42('0x8a')]['List']['Contacts'][_0xff42('0x59')]){return _0x2519f1[_0xff42('0x8a')]['List']['Contacts'][0x0];}var _0x1480c1=_[_0xff42('0x8b')](_0x9a51cd[_0xff42('0x67')],{'firstName':_0x9a51cd[_0xff42('0x67')][_0xff42('0x7f')],'ListId':_0x1ab935[_0xff42('0x7d')]});_0x1480c1[_0x9a51cd['body'][_0xff42('0x84')]]=_0x9a51cd['body']['from'];return db['CmContact']['create'](_0x1480c1,{'fields':_0x46badc,'raw':!![]});}})[_0xff42('0x21')](handleEntityNotFound(_0x1e30ee,null))[_0xff42('0x21')](function(_0x3979b2){_0x2519f1[_0xff42('0x8c')]=_0x3979b2;if(_0x3979b2){var _0x37c5e8={'ContactId':_0x3979b2['id'],'OpenchannelAccountId':_0x9a51cd['params']['id'],'from':(_0x3979b2[_0xff42('0x8d')]||'')+'\x20'+(_0x3979b2[_0xff42('0x8e')]||'')};var _0xe2fc7a={'OpenchannelAccountId':_0x9a51cd[_0xff42('0x57')]['id'],'closed':![]};if(_0x9a51cd['body'][_0xff42('0x8f')]){_0xe2fc7a[_0xff42('0x8f')]=_0x9a51cd[_0xff42('0x67')][_0xff42('0x8f')];return db[_0xff42('0x90')][_0xff42('0x5b')]({'where':_0xe2fc7a})['then'](function(_0x33e3c2){if(_0x33e3c2){return[_0x33e3c2,![]];}_0x37c5e8[_0xff42('0x8f')]=_0x9a51cd[_0xff42('0x67')]['threadId'];_0x37c5e8[_0xff42('0x91')]=_0x9a51cd['body'][_0xff42('0x91')];return db[_0xff42('0x90')]['create'](_0x37c5e8)[_0xff42('0x21')](function(_0x5503cf){return[_0x5503cf,!![]];});});}else{_0xe2fc7a['threadId']=null;}_0xe2fc7a[_0xff42('0x92')]=_0x3979b2['id'];return db[_0xff42('0x90')][_0xff42('0x5b')]({'where':_0xe2fc7a})[_0xff42('0x21')](function(_0x4c8826){if(_0x4c8826){return[_0x4c8826,![]];}return db[_0xff42('0x90')]['create'](_0x37c5e8)[_0xff42('0x21')](function(_0x62f5fb){return[_0x62f5fb,!![]];});});}})[_0xff42('0x93')](function(_0x57be36,_0x15395a){if(_0x57be36){_0x266300=_0x15395a;if(!_0x15395a){var _0x45369e={'from':(_0x2519f1[_0xff42('0x8c')][_0xff42('0x8d')]||'')+'\x20'+(_0x2519f1[_0xff42('0x8c')][_0xff42('0x8e')]||'')};if(_0x9a51cd['body'][_0xff42('0x8f')]&&_0x9a51cd['body']['messageId']&&_0x9a51cd[_0xff42('0x67')][_0xff42('0x8f')]!=_0x9a51cd['body'][_0xff42('0x94')]){_0x45369e[_0xff42('0x8f')]=_0x9a51cd[_0xff42('0x67')][_0xff42('0x94')];}return _0x57be36['update'](_0x45369e);}else{return _0x57be36;}}})['then'](function(_0x4e31cc){_0x2519f1[_0xff42('0x95')]=_0x4e31cc['get']({'plain':!![]});_0x2519f1['interaction']['created']=_0x266300;if(_0x2519f1[_0xff42('0x95')][_0xff42('0x96')]){if(_0x2519f1[_0xff42('0x8a')][_0xff42('0x97')]){_0x2519f1[_0xff42('0x98')][_0xff42('0x99')]({'id':0x0,'priority':_0x2519f1['applications']['length']+0x1,'app':_0xff42('0x9a'),'appdata':'unmanaged','interval':_0xff42('0x9b')});}}return db['OpenchannelMessage'][_0xff42('0x64')]({'body':_0x9a51cd[_0xff42('0x67')][_0xff42('0x67')],'OpenchannelAccountId':_0x9a51cd[_0xff42('0x57')]['id'],'OpenchannelInteractionId':_0x4e31cc['id'],'direction':'in','ContactId':_0x2519f1['contact']['id'],'AttachmentId':_0x9a51cd['body']['AttachmentId']});})['then'](function(_0x19ec6d){_0x2519f1['message']=_0x19ec6d;if(_0x2519f1[_0xff42('0x95')][_0xff42('0x9c')]){return db[_0xff42('0x9d')][_0xff42('0x5b')]({'attributes':['id','name'],'where':{'id':_0x2519f1[_0xff42('0x95')]['UserId']}})['then'](function(_0x38c66d){if(_0x38c66d){_0x2519f1['applications'][_0xff42('0x9e')]({'id':0x0,'priority':0x0,'app':_0xff42('0x9f'),'appdata':_0x38c66d[_0xff42('0x38')]+','+(_0x2519f1[_0xff42('0x8a')][_0xff42('0xa0')]||0xa),'interval':_0xff42('0x9b')});_0x2519f1[_0xff42('0xa1')]=![];}return respondWithRpcPromise(_0xff42('0xa2'),'startRouting',_0x2519f1);});}return respondWithRpcPromise('Start',_0xff42('0xa3'),_0x2519f1);})[_0xff42('0x21')](function(_0x54e6f8){respondWithRpcPromise(_0xff42('0xa4'),_0xff42('0xa4'),{'event':_0xff42('0x74'),'message':_0x54e6f8},client9002);return _0x54e6f8;})[_0xff42('0x21')](respondWithResult(_0x1e30ee,null))['catch'](handleError(_0x1e30ee,null));};exports[_0xff42('0xa5')]=function(_0x488a7e,_0x5abe79,_0x1dc2cd){return db[_0xff42('0x3d')][_0xff42('0x6c')]({'where':{'id':_0x488a7e[_0xff42('0x57')]['id']}})[_0xff42('0x21')](handleEntityNotFound(_0x5abe79,null))[_0xff42('0x21')](function(_0x512514){if(_0x512514){return db[_0xff42('0xa6')][_0xff42('0xa7')](function(_0x41d496){return db[_0xff42('0xa8')]['destroy']({'where':{'OpenchannelAccountId':_0x488a7e[_0xff42('0x57')]['id']},'transaction':_0x41d496})[_0xff42('0x21')](function(_0x1b7e41){var _0x31381c=_[_0xff42('0x3c')](_0x488a7e[_0xff42('0x67')],function(_0x5f085a){_0x5f085a[_0xff42('0x6a')]=_0x488a7e[_0xff42('0x57')]['id'];return _0x5f085a;});return db[_0xff42('0xa8')][_0xff42('0xa9')](_0x31381c,{'transaction':_0x41d496});});})[_0xff42('0x21')](function(){return db[_0xff42('0xa8')][_0xff42('0xaa')]({'where':{'OpenchannelAccountId':_0x488a7e['params']['id']},'order':_0xff42('0xab')});});}})[_0xff42('0x21')](respondWithResult(_0x5abe79,null))[_0xff42('0x56')](handleError(_0x5abe79,null));};exports[_0xff42('0xac')]=function(_0x2bba1a,_0x42a823,_0x22c6f7){var _0x50672e={};var _0x3e18a1={};var _0x415370;var _0x531d2f;return db[_0xff42('0x3d')]['findOne']({'where':{'id':_0x2bba1a[_0xff42('0x57')]['id']}})[_0xff42('0x21')](handleEntityNotFound(_0x42a823,null))['then'](function(_0x19cf71){if(_0x19cf71){_0x415370=_0x19cf71;_0x3e18a1[_0xff42('0x42')]=_[_0xff42('0x43')](db[_0xff42('0xa8')][_0xff42('0x3e')]);_0x3e18a1['query']=_[_0xff42('0x43')](_0x2bba1a[_0xff42('0x44')]);_0x3e18a1['filters']=_['intersection'](_0x3e18a1[_0xff42('0x42')],_0x3e18a1[_0xff42('0x44')]);_0x50672e[_0xff42('0x46')]=_['intersection'](_0x3e18a1[_0xff42('0x42')],qs[_0xff42('0x47')](_0x2bba1a[_0xff42('0x44')][_0xff42('0x47')]));_0x50672e[_0xff42('0x46')]=_0x50672e['attributes']['length']?_0x50672e[_0xff42('0x46')]:_0x3e18a1[_0xff42('0x42')];_0x50672e[_0xff42('0x4a')]=qs[_0xff42('0x4b')](_0x2bba1a[_0xff42('0x44')][_0xff42('0x4b')]);_0x50672e[_0xff42('0x4c')]=qs[_0xff42('0x4d')](_[_0xff42('0x4e')](_0x2bba1a[_0xff42('0x44')],_0x3e18a1[_0xff42('0x4d')]));if(_0x2bba1a[_0xff42('0x44')][_0xff42('0x51')]){_0x50672e[_0xff42('0x4c')]=_[_0xff42('0x4f')](_0x50672e[_0xff42('0x4c')],{'$or':_['map'](_0x50672e[_0xff42('0x46')],function(_0x355a21){var _0x1ddc75={};_0x1ddc75[_0x355a21]={'$like':'%'+_0x2bba1a['query'][_0xff42('0x51')]+'%'};return _0x1ddc75;})});}_0x50672e=_['merge']({},_0x50672e,_0x2bba1a[_0xff42('0x5a')]);return _0x415370['getApplications'](_0x50672e);}})[_0xff42('0x21')](function(_0x2f2d31){if(_0x2f2d31){_0x531d2f=_0x2f2d31[_0xff42('0x59')];if(!_0x2bba1a[_0xff42('0x44')][_0xff42('0x48')]('nolimit')){_0x50672e['limit']=qs[_0xff42('0x31')](_0x2bba1a[_0xff42('0x44')]['limit']);_0x50672e['offset']=qs[_0xff42('0x2e')](_0x2bba1a[_0xff42('0x44')][_0xff42('0x2e')]);}return _0x415370[_0xff42('0xac')](_0x50672e);}})['then'](function(_0x5c5906){if(_0x5c5906){return _0x5c5906?{'count':_0x531d2f,'rows':_0x5c5906}:null;}})[_0xff42('0x21')](respondWithResult(_0x42a823,null))['catch'](handleError(_0x42a823,null));};exports[_0xff42('0xad')]=function(_0x23af2d,_0x3c8803,_0x2a523e){var _0x41988b={'raw':![],'where':{}};var _0x2f3429={};var _0x1095fa={'count':0x0,'rows':[]};return db[_0xff42('0x3d')][_0xff42('0x6c')]({'where':{'id':_0x23af2d[_0xff42('0x57')]['id']}})['then'](handleEntityNotFound(_0x3c8803,null))['then'](function(_0x21df36){if(_0x21df36){_0x2f3429[_0xff42('0x42')]=_[_0xff42('0x43')](db[_0xff42('0x90')][_0xff42('0x3e')]);_0x2f3429[_0xff42('0x44')]=_['keys'](_0x23af2d[_0xff42('0x44')]);_0x2f3429[_0xff42('0x4d')]=_[_0xff42('0x45')](_0x2f3429[_0xff42('0x42')],_0x2f3429['query']);_0x41988b[_0xff42('0x46')]=_['intersection'](_0x2f3429['model'],qs[_0xff42('0x47')](_0x23af2d[_0xff42('0x44')][_0xff42('0x47')]));_0x41988b['attributes']=_0x41988b[_0xff42('0x46')]['length']?_0x41988b[_0xff42('0x46')]:_0x2f3429['model'];if(!_0x23af2d[_0xff42('0x44')][_0xff42('0x48')](_0xff42('0x49'))){_0x41988b[_0xff42('0x31')]=qs[_0xff42('0x31')](_0x23af2d[_0xff42('0x44')]['limit']);_0x41988b[_0xff42('0x2e')]=qs[_0xff42('0x2e')](_0x23af2d['query'][_0xff42('0x2e')]);}_0x41988b[_0xff42('0x4a')]=qs[_0xff42('0x4b')](_0x23af2d[_0xff42('0x44')][_0xff42('0x4b')]);_0x41988b[_0xff42('0x4c')]=qs[_0xff42('0x4d')](_['pick'](_0x23af2d[_0xff42('0x44')],_0x2f3429[_0xff42('0x4d')]));_0x41988b['where']['OpenchannelAccountId']=_0x21df36['id'];if(_0x23af2d[_0xff42('0x44')][_0xff42('0x51')]){_0x41988b[_0xff42('0x4c')]=_['merge'](_0x41988b[_0xff42('0x4c')],{'$or':_[_0xff42('0x3c')](_0x41988b[_0xff42('0x46')],function(_0x45edad){var _0x317ec3={};_0x317ec3[_0x45edad]={'$like':'%'+_0x23af2d[_0xff42('0x44')][_0xff42('0x51')]+'%'};return _0x317ec3;})});}_0x41988b=_[_0xff42('0x4f')]({},_0x41988b,_0x23af2d[_0xff42('0x5a')]);return db[_0xff42('0x90')][_0xff42('0x30')]({'where':_0x41988b[_0xff42('0x4c')]})[_0xff42('0x21')](function(_0x4b2274){_0x1095fa[_0xff42('0x30')]=_0x4b2274;if(_0x23af2d['query'][_0xff42('0x52')]){_0x41988b[_0xff42('0x53')]=[{'model':db['CmContact'],'as':_0xff42('0xae'),'required':![]},{'model':db[_0xff42('0x9d')],'as':_0xff42('0xaf'),'attributes':['name',_0xff42('0xb0'),'internal'],'required':![]},{'model':db['Tag'],'as':_0xff42('0xb1'),'attributes':['id','name',_0xff42('0xb2')],'where':_0x23af2d[_0xff42('0x44')][_0xff42('0xb3')]?{'id':_0x23af2d[_0xff42('0x44')][_0xff42('0xb3')]}:undefined,'required':_0x23af2d[_0xff42('0x44')][_0xff42('0xb3')]?!![]:![]}];}return db[_0xff42('0x90')][_0xff42('0x54')](_0x41988b);})[_0xff42('0x21')](function(_0x216522){_0x1095fa[_0xff42('0x55')]=_0x216522;return _0x1095fa;});}})['then'](respondWithFilteredResult(_0x3c8803,_0x41988b))[_0xff42('0x56')](handleError(_0x3c8803,null));};exports[_0xff42('0xb4')]=function(_0x32f8af,_0x3cdc72,_0x567431){return db[_0xff42('0x3d')]['find']({'where':{'id':_0x32f8af[_0xff42('0x57')]['id']}})[_0xff42('0x21')](handleEntityNotFound(_0x3cdc72,null))[_0xff42('0x21')](function(_0x54efab){if(_0x54efab){return _0x54efab[_0xff42('0xb4')](_0x32f8af[_0xff42('0x67')][_0xff42('0x6f')],_['omit'](_0x32f8af[_0xff42('0x67')],[_0xff42('0x6f'),'id'])||{})[_0xff42('0x93')](function(_0x4af4f7){for(var _0x3a9fce=0x0;_0x3a9fce<_0x32f8af['body'][_0xff42('0x6f')][_0xff42('0x59')];_0x3a9fce+=0x1){socket[_0xff42('0xb5')](_0xff42('0xb6'),{'UserId':Number(_0x32f8af[_0xff42('0x67')][_0xff42('0x6f')][_0x3a9fce]),'OpenchannelAccountId':Number(_0x32f8af[_0xff42('0x57')]['id'])});}return _0x4af4f7;});}})[_0xff42('0x21')](respondWithResult(_0x3cdc72,null))[_0xff42('0x56')](handleError(_0x3cdc72,null));};exports[_0xff42('0xb7')]=function(_0x22cfaa,_0x303627,_0x594c67){return db[_0xff42('0x3d')]['find']({'where':{'id':_0x22cfaa[_0xff42('0x57')]['id']}})[_0xff42('0x21')](handleEntityNotFound(_0x303627,null))[_0xff42('0x21')](function(_0x5c409d){if(_0x5c409d){return _0x5c409d[_0xff42('0xb7')](_0x22cfaa['query'][_0xff42('0x6f')])['then'](function(){if(_[_0xff42('0xb8')](_0x22cfaa[_0xff42('0x44')][_0xff42('0x6f')])){for(var _0x44f5c5=0x0;_0x44f5c5<_0x22cfaa[_0xff42('0x44')]['ids'][_0xff42('0x59')];_0x44f5c5+=0x1){socket[_0xff42('0xb5')](_0xff42('0xb9'),{'UserId':Number(_0x22cfaa[_0xff42('0x44')]['ids'][_0x44f5c5]),'OpenchannelAccountId':Number(_0x22cfaa[_0xff42('0x57')]['id'])});}}else{socket[_0xff42('0xb5')](_0xff42('0xb9'),{'UserId':Number(_0x22cfaa[_0xff42('0x44')][_0xff42('0x6f')]),'OpenchannelAccountId':Number(_0x22cfaa[_0xff42('0x57')]['id'])});}});}})['then'](respondWithStatusCode(_0x303627,null))[_0xff42('0x56')](handleError(_0x303627,null));};exports[_0xff42('0xba')]=function(_0x26c7ef,_0x2a214b,_0x4b1a81){var _0x12136f={};var _0x5a3515={};var _0x427e1d;var _0x25f148;return db[_0xff42('0x3d')][_0xff42('0x6c')]({'where':{'id':_0x26c7ef['params']['id']}})['then'](handleEntityNotFound(_0x2a214b,null))[_0xff42('0x21')](function(_0x259909){if(_0x259909){_0x427e1d=_0x259909;_0x5a3515[_0xff42('0x42')]=_[_0xff42('0x43')](db[_0xff42('0x9d')][_0xff42('0x3e')]);_0x5a3515[_0xff42('0x44')]=_['keys'](_0x26c7ef[_0xff42('0x44')]);_0x5a3515[_0xff42('0x4d')]=_['intersection'](_0x5a3515[_0xff42('0x42')],_0x5a3515[_0xff42('0x44')]);_0x12136f['attributes']=_['intersection'](_0x5a3515[_0xff42('0x42')],qs['fields'](_0x26c7ef[_0xff42('0x44')][_0xff42('0x47')]));_0x12136f[_0xff42('0x46')]=_0x12136f[_0xff42('0x46')][_0xff42('0x59')]?_0x12136f[_0xff42('0x46')]:_0x5a3515['model'];_0x12136f[_0xff42('0x4a')]=qs['sort'](_0x26c7ef[_0xff42('0x44')][_0xff42('0x4b')]);_0x12136f['where']=qs['filters'](_[_0xff42('0x4e')](_0x26c7ef['query'],_0x5a3515['filters']));if(_0x26c7ef['query'][_0xff42('0x51')]){_0x12136f[_0xff42('0x4c')]=_[_0xff42('0x4f')](_0x12136f[_0xff42('0x4c')],{'$or':_['map'](_0x12136f[_0xff42('0x46')],function(_0x1f716d){var _0x285c75={};_0x285c75[_0x1f716d]={'$like':'%'+_0x26c7ef[_0xff42('0x44')][_0xff42('0x51')]+'%'};return _0x285c75;})});}_0x12136f=_[_0xff42('0x4f')]({},_0x12136f,_0x26c7ef[_0xff42('0x5a')]);return _0x427e1d[_0xff42('0xba')](_0x12136f);}})[_0xff42('0x21')](function(_0x41f3c8){if(_0x41f3c8){_0x25f148=_0x41f3c8[_0xff42('0x59')];if(!_0x26c7ef[_0xff42('0x44')][_0xff42('0x48')]('nolimit')){_0x12136f[_0xff42('0x31')]=qs[_0xff42('0x31')](_0x26c7ef['query']['limit']);_0x12136f['offset']=qs[_0xff42('0x2e')](_0x26c7ef['query']['offset']);}return _0x427e1d[_0xff42('0xba')](_0x12136f);}})['then'](function(_0x57d28c){if(_0x57d28c){return _0x57d28c?{'count':_0x25f148,'rows':_0x57d28c}:null;}})[_0xff42('0x21')](respondWithResult(_0x2a214b,null))[_0xff42('0x56')](handleError(_0x2a214b,null));};exports[_0xff42('0x39')]=function(_0x4368ef,_0x1f0893,_0x427e7d){var _0x56a7d9,_0x5ee8b0,_0x39ba6c;if(_[_0xff42('0x7e')](_0x4368ef[_0xff42('0x67')]['body'])||_0x4368ef[_0xff42('0x67')]['body']===''){throw new db[(_0xff42('0x76'))][(_0xff42('0x77'))](_0xff42('0x81'));}if(_[_0xff42('0x7e')](_0x4368ef[_0xff42('0x67')]['to'])){}_0x56a7d9=_0x4368ef[_0xff42('0x67')]['to'];return db['OpenchannelAccount'][_0xff42('0x6c')]({'where':{'id':_0x4368ef['params']['id']}})[_0xff42('0x21')](handleEntityNotFound(_0x1f0893,null))['then'](function(_0xa419fe){if(_0xa419fe){return db[_0xff42('0x3d')][_0xff42('0x5b')]({'where':{'id':_0xa419fe['id']},'include':[{'model':db[_0xff42('0xbb')],'as':_0xff42('0x88'),'include':[{'model':db[_0xff42('0xbc')],'as':_0xff42('0x85'),'where':{[_0xa419fe[_0xff42('0x84')]]:_0x56a7d9},'limit':0x1,'order':[[_0xff42('0x7a'),_0xff42('0x86')]]}]}]})[_0xff42('0x21')](handleEntityNotFound(_0x1f0893,null))['then'](function(_0x801d85){if(_0x801d85&&_0x801d85[_0xff42('0x88')]){_0x5ee8b0=_0x801d85[_0xff42('0x5f')]({'plain':!![]});if(_0x5ee8b0[_0xff42('0x88')]&&_0x5ee8b0[_0xff42('0x88')]['Contacts'][_0xff42('0x59')]){return _0x5ee8b0['List'][_0xff42('0x85')][0x0];}return db['CmContact'][_0xff42('0x64')](_[_0xff42('0x8b')](_0x4368ef['body'],{'firstName':_0x56a7d9,[_0x801d85['mapKey']]:_0x56a7d9,'phone':_0x56a7d9,'ListId':_0x5ee8b0[_0xff42('0x7d')]}));}})[_0xff42('0x21')](handleEntityNotFound(_0x1f0893,null))[_0xff42('0x21')](function(_0x5ead30){if(_0x5ead30){_0x39ba6c=_0x5ead30;return db[_0xff42('0x90')]['find']({'where':{'ContactId':_0x39ba6c['id'],'closed':![],'OpenchannelAccountId':_0x5ee8b0['id']}})[_0xff42('0x21')](function(_0x372cbd){if(_0x372cbd){return[_0x372cbd,![]];}return db[_0xff42('0x90')][_0xff42('0x64')]({'UserId':_0x4368ef[_0xff42('0x5e')]['id'],'ContactId':_0x39ba6c['id'],'OpenchannelAccountId':_0x5ee8b0['id'],'lastMsgDirection':_0xff42('0xbd'),'Messages':[_[_0xff42('0x4f')](_0x4368ef[_0xff42('0x67')],{'read':![],'body':_0x4368ef[_0xff42('0x67')][_0xff42('0x67')],'OpenchannelAccountId':_0x5ee8b0['id'],'UserId':_0x4368ef[_0xff42('0x5e')]['id'],'ContactId':_0x39ba6c['id']})]},{'include':[{'model':db[_0xff42('0xbe')],'as':_0xff42('0xbf')}]})[_0xff42('0x21')](function(_0x41d701){return[_0x41d701,!![]];});});}})['spread'](function(_0x3bf67d,_0x28dd64){if(_0x28dd64){return _0x3bf67d;}return db['OpenchannelMessage'][_0xff42('0x64')](_['merge'](_0x4368ef[_0xff42('0x67')],{'read':![],'body':_0x4368ef['body'][_0xff42('0x67')],'OpenchannelAccountId':_0x5ee8b0['id'],'OpenchannelInteractionId':_0x3bf67d['id'],'UserId':_0x4368ef[_0xff42('0x5e')]['id'],'ContactId':_0x39ba6c['id']}))['then'](function(_0x28a13d){_0x3bf67d[_0xff42('0xc0')][_0xff42('0xbf')]=[];_0x3bf67d[_0xff42('0xc0')][_0xff42('0xbf')][_0xff42('0x99')](_0x28a13d[_0xff42('0xc0')]);return _0x3bf67d;});});}})[_0xff42('0x21')](respondWithResult(_0x1f0893,null))['catch'](handleError(_0x1f0893,null));};
\ No newline at end of file
index 0257a2f..8f50cfe 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xcb91=['save','update','emit','hasOwnProperty','hook','OpenchannelAccount','setMaxListeners'];(function(_0x26f575,_0xc95220){var _0x96f47d=function(_0x4cc306){while(--_0x4cc306){_0x26f575['push'](_0x26f575['shift']());}};_0x96f47d(++_0xc95220);}(_0xcb91,0x1a9));var _0x1cb9=function(_0x2b305c,_0x5ae303){_0x2b305c=_0x2b305c-0x0;var _0x5d8c85=_0xcb91[_0x2b305c];return _0x5d8c85;};'use strict';var EventEmitter=require('events');var OpenchannelAccount=require('../../mysqldb')['db'][_0x1cb9('0x0')];var OpenchannelAccountEvents=new EventEmitter();OpenchannelAccountEvents[_0x1cb9('0x1')](0x0);var events={'afterCreate':_0x1cb9('0x2'),'afterUpdate':_0x1cb9('0x3'),'afterDestroy':'remove'};function emitEvent(_0x8c392f){return function(_0x2c17b8,_0x545a34,_0x13d5fd){OpenchannelAccountEvents[_0x1cb9('0x4')](_0x8c392f+':'+_0x2c17b8['id'],_0x2c17b8);OpenchannelAccountEvents['emit'](_0x8c392f,_0x2c17b8);_0x13d5fd(null);};}for(var e in events){if(events[_0x1cb9('0x5')](e)){var event=events[e];OpenchannelAccount[_0x1cb9('0x6')](e,emitEvent(event));}}module['exports']=OpenchannelAccountEvents;
\ No newline at end of file
+var _0xdace=['save','remove','emit','hasOwnProperty','exports','events','OpenchannelAccount','setMaxListeners'];(function(_0x3b632f,_0x453380){var _0x10e788=function(_0x2228a4){while(--_0x2228a4){_0x3b632f['push'](_0x3b632f['shift']());}};_0x10e788(++_0x453380);}(_0xdace,0xc5));var _0xedac=function(_0xb1cf84,_0x813740){_0xb1cf84=_0xb1cf84-0x0;var _0x4bad2e=_0xdace[_0xb1cf84];return _0x4bad2e;};'use strict';var EventEmitter=require(_0xedac('0x0'));var OpenchannelAccount=require('../../mysqldb')['db'][_0xedac('0x1')];var OpenchannelAccountEvents=new EventEmitter();OpenchannelAccountEvents[_0xedac('0x2')](0x0);var events={'afterCreate':_0xedac('0x3'),'afterUpdate':'update','afterDestroy':_0xedac('0x4')};function emitEvent(_0x36bcd2){return function(_0x15d3bd,_0xefb142,_0x5a97c0){OpenchannelAccountEvents[_0xedac('0x5')](_0x36bcd2+':'+_0x15d3bd['id'],_0x15d3bd);OpenchannelAccountEvents[_0xedac('0x5')](_0x36bcd2,_0x15d3bd);_0x5a97c0(null);};}for(var e in events){if(events[_0xedac('0x6')](e)){var event=events[e];OpenchannelAccount['hook'](e,emitEvent(event));}}module[_0xedac('0x7')]=OpenchannelAccountEvents;
\ No newline at end of file
index 3cfa39b..9e31865 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(_0x1c2d5a,_0x1e04e4){var _0xd17936=function(_0x4f1754){while(--_0x4f1754){_0x1c2d5a['push'](_0x1c2d5a['shift']());}};_0xd17936(++_0x1e04e4);}(_0xa9e0,0x123));var _0x0a9e=function(_0xae7c2f,_0xf31e04){_0xae7c2f=_0xae7c2f-0x0;var _0x5d7001=_0xa9e0[_0xae7c2f];return _0x5d7001;};'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(_0x1e9991,_0x286f13){var _0x13a4dd=function(_0xd45d91){while(--_0xd45d91){_0x1e9991['push'](_0x1e9991['shift']());}};_0x13a4dd(++_0x286f13);}(_0xa9e0,0x123));var _0x0a9e=function(_0x298ed3,_0x4ab5e1){_0x298ed3=_0x298ed3-0x0;var _0x5aad28=_0xa9e0[_0x298ed3];return _0x5aad28;};'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 c1fb503..7bfd77b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x373d=['result','catch','lodash','moment','bluebird','randomstring','ioredis','../../config/utils','../../config/logger','rpc','client','http','redis','defaults','localhost','register','then','info','OpenchannelAccount,\x20%s,\x20%s','request\x20sent','stringify','error','code','message'];(function(_0x57c77e,_0x182332){var _0x26a8d4=function(_0x7167ee){while(--_0x7167ee){_0x57c77e['push'](_0x57c77e['shift']());}};_0x26a8d4(++_0x182332);}(_0x373d,0x1e2));var _0xd373=function(_0x3a3f0c,_0x174f79){_0x3a3f0c=_0x3a3f0c-0x0;var _0x184722=_0x373d[_0x3a3f0c];return _0x184722;};'use strict';var _=require(_0xd373('0x0'));var util=require('util');var moment=require(_0xd373('0x1'));var BPromise=require(_0xd373('0x2'));var rs=require(_0xd373('0x3'));var fs=require('fs');var Redis=require(_0xd373('0x4'));var db=require('../../mysqldb')['db'];var utils=require(_0xd373('0x5'));var logger=require(_0xd373('0x6'))(_0xd373('0x7'));var config=require('../../config/environment');var jayson=require('jayson/promise');var client=jayson[_0xd373('0x8')][_0xd373('0x9')]({'port':0x232a});config[_0xd373('0xa')]=_[_0xd373('0xb')](config['redis'],{'host':_0xd373('0xc'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config['redis']));require('./openchannelAccount.socket')[_0xd373('0xd')](socket);function respondWithRpcPromise(_0x42b834,_0x4a67af,_0x27a522){return new BPromise(function(_0x234247,_0x5c899d){return client['request'](_0x42b834,_0x27a522)[_0xd373('0xe')](function(_0x4579c4){logger[_0xd373('0xf')](_0xd373('0x10'),_0x4a67af,'request\x20sent');logger['debug']('OpenchannelAccount,\x20%s,\x20%s,\x20%s',_0x4a67af,_0xd373('0x11'),JSON[_0xd373('0x12')](_0x4579c4));if(_0x4579c4['error']){if(_0x4579c4[_0xd373('0x13')][_0xd373('0x14')]===0x1f4){logger[_0xd373('0x13')](_0xd373('0x10'),_0x4a67af,_0x4579c4[_0xd373('0x13')][_0xd373('0x15')]);return _0x5c899d(_0x4579c4[_0xd373('0x13')][_0xd373('0x15')]);}logger[_0xd373('0x13')](_0xd373('0x10'),_0x4a67af,_0x4579c4[_0xd373('0x13')][_0xd373('0x15')]);return _0x234247(_0x4579c4[_0xd373('0x13')]['message']);}else{logger[_0xd373('0xf')]('OpenchannelAccount,\x20%s,\x20%s',_0x4a67af,_0xd373('0x11'));_0x234247(_0x4579c4[_0xd373('0x16')]['message']);}})[_0xd373('0x17')](function(_0x4f5366){logger['error'](_0xd373('0x10'),_0x4a67af,_0x4f5366);_0x5c899d(_0x4f5366);});});}
\ No newline at end of file
+var _0xe706=['client','http','redis','defaults','localhost','socket.io-emitter','./openchannelAccount.socket','register','request','info','OpenchannelAccount,\x20%s,\x20%s','request\x20sent','debug','OpenchannelAccount,\x20%s,\x20%s,\x20%s','stringify','error','message','result','lodash','util','moment','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise'];(function(_0x54c9cd,_0x5bef1e){var _0x5ccb6=function(_0x3c480c){while(--_0x3c480c){_0x54c9cd['push'](_0x54c9cd['shift']());}};_0x5ccb6(++_0x5bef1e);}(_0xe706,0xa3));var _0x6e70=function(_0x41d67e,_0x336a28){_0x41d67e=_0x41d67e-0x0;var _0x100cb2=_0xe706[_0x41d67e];return _0x100cb2;};'use strict';var _=require(_0x6e70('0x0'));var util=require(_0x6e70('0x1'));var moment=require(_0x6e70('0x2'));var BPromise=require('bluebird');var rs=require(_0x6e70('0x3'));var fs=require('fs');var Redis=require(_0x6e70('0x4'));var db=require(_0x6e70('0x5'))['db'];var utils=require(_0x6e70('0x6'));var logger=require(_0x6e70('0x7'))(_0x6e70('0x8'));var config=require(_0x6e70('0x9'));var jayson=require(_0x6e70('0xa'));var client=jayson[_0x6e70('0xb')][_0x6e70('0xc')]({'port':0x232a});config[_0x6e70('0xd')]=_[_0x6e70('0xe')](config[_0x6e70('0xd')],{'host':_0x6e70('0xf'),'port':0x18eb});var socket=require(_0x6e70('0x10'))(new Redis(config[_0x6e70('0xd')]));require(_0x6e70('0x11'))[_0x6e70('0x12')](socket);function respondWithRpcPromise(_0x100eb7,_0x463853,_0x743eb5){return new BPromise(function(_0x3f474a,_0x37b3e0){return client[_0x6e70('0x13')](_0x100eb7,_0x743eb5)['then'](function(_0x47f6b2){logger[_0x6e70('0x14')](_0x6e70('0x15'),_0x463853,_0x6e70('0x16'));logger[_0x6e70('0x17')](_0x6e70('0x18'),_0x463853,_0x6e70('0x16'),JSON[_0x6e70('0x19')](_0x47f6b2));if(_0x47f6b2[_0x6e70('0x1a')]){if(_0x47f6b2['error']['code']===0x1f4){logger['error'](_0x6e70('0x15'),_0x463853,_0x47f6b2['error']['message']);return _0x37b3e0(_0x47f6b2[_0x6e70('0x1a')][_0x6e70('0x1b')]);}logger['error'](_0x6e70('0x15'),_0x463853,_0x47f6b2['error'][_0x6e70('0x1b')]);return _0x3f474a(_0x47f6b2[_0x6e70('0x1a')]['message']);}else{logger['info'](_0x6e70('0x15'),_0x463853,'request\x20sent');_0x3f474a(_0x47f6b2[_0x6e70('0x1c')][_0x6e70('0x1b')]);}})['catch'](function(_0x497d61){logger[_0x6e70('0x1a')](_0x6e70('0x15'),_0x463853,_0x497d61);_0x37b3e0(_0x497d61);});});}
\ No newline at end of file
index 2285b9a..96e1262 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8d97=['emit','removeListener','register','openchannelAccount:','save','remove'];(function(_0x514144,_0x1471ff){var _0x47b650=function(_0x69795){while(--_0x69795){_0x514144['push'](_0x514144['shift']());}};_0x47b650(++_0x1471ff);}(_0x8d97,0x82));var _0x78d9=function(_0x4a9c0f,_0x26170a){_0x4a9c0f=_0x4a9c0f-0x0;var _0x262bf3=_0x8d97[_0x4a9c0f];return _0x262bf3;};'use strict';var OpenchannelAccountEvents=require('./openchannelAccount.events');var events=[_0x78d9('0x0'),_0x78d9('0x1'),'update'];function createListener(_0x323f54,_0x1cbdd1){return function(_0x17bfab){_0x1cbdd1[_0x78d9('0x2')](_0x323f54,_0x17bfab);};}function removeListener(_0x1b690f,_0x5f4582){return function(){OpenchannelAccountEvents[_0x78d9('0x3')](_0x1b690f,_0x5f4582);};}exports[_0x78d9('0x4')]=function(_0x7bf859){for(var _0x59b38c=0x0,_0x4d1934=events['length'];_0x59b38c<_0x4d1934;_0x59b38c++){var _0x2a2cdb=events[_0x59b38c];var _0x3b3709=createListener(_0x78d9('0x5')+_0x2a2cdb,_0x7bf859);OpenchannelAccountEvents['on'](_0x2a2cdb,_0x3b3709);}};
\ No newline at end of file
+var _0xcf14=['openchannelAccount:','./openchannelAccount.events','remove','update','emit','removeListener','register','length'];(function(_0x54dc2,_0xa77a2f){var _0x1ca1b4=function(_0x169cce){while(--_0x169cce){_0x54dc2['push'](_0x54dc2['shift']());}};_0x1ca1b4(++_0xa77a2f);}(_0xcf14,0xa1));var _0x4cf1=function(_0x18e170,_0x450f42){_0x18e170=_0x18e170-0x0;var _0x508a52=_0xcf14[_0x18e170];return _0x508a52;};'use strict';var OpenchannelAccountEvents=require(_0x4cf1('0x0'));var events=['save',_0x4cf1('0x1'),_0x4cf1('0x2')];function createListener(_0x55e5b6,_0x3401df){return function(_0x15f9b9){_0x3401df[_0x4cf1('0x3')](_0x55e5b6,_0x15f9b9);};}function removeListener(_0xc34979,_0x5de7f1){return function(){OpenchannelAccountEvents[_0x4cf1('0x4')](_0xc34979,_0x5de7f1);};}exports[_0x4cf1('0x5')]=function(_0x11a184){for(var _0x12076f=0x0,_0x32ad8c=events[_0x4cf1('0x6')];_0x12076f<_0x32ad8c;_0x12076f++){var _0x9efe60=events[_0x12076f];var _0x50273f=createListener(_0x4cf1('0x7')+_0x9efe60,_0x11a184);OpenchannelAccountEvents['on'](_0x9efe60,_0x50273f);}};
\ No newline at end of file
index 14a09ab..a36b308 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe42d=['get','create','put','/:id','update','delete','destroy','exports','util','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','isAuthenticated','index'];(function(_0x32ad69,_0x518f0c){var _0x1062ef=function(_0x59b1c5){while(--_0x59b1c5){_0x32ad69['push'](_0x32ad69['shift']());}};_0x1062ef(++_0x518f0c);}(_0xe42d,0x86));var _0xde42=function(_0xb154e0,_0x4febe9){_0xb154e0=_0xb154e0-0x0;var _0x3dad25=_0xe42d[_0xb154e0];return _0x3dad25;};'use strict';var multer=require('multer');var util=require(_0xde42('0x0'));var path=require('path');var timeout=require(_0xde42('0x1'));var express=require(_0xde42('0x2'));var router=express[_0xde42('0x3')]();var fs_extra=require(_0xde42('0x4'));var auth=require(_0xde42('0x5'));var interaction=require(_0xde42('0x6'));var config=require(_0xde42('0x7'));var controller=require('./openchannelApplication.controller');router['get']('/',auth[_0xde42('0x8')](),controller[_0xde42('0x9')]);router[_0xde42('0xa')]('/:id',auth[_0xde42('0x8')](),controller['show']);router['post']('/',auth[_0xde42('0x8')](),controller[_0xde42('0xb')]);router[_0xde42('0xc')](_0xde42('0xd'),auth[_0xde42('0x8')](),controller[_0xde42('0xe')]);router[_0xde42('0xf')]('/:id',auth[_0xde42('0x8')](),controller[_0xde42('0x10')]);module[_0xde42('0x11')]=router;
\ No newline at end of file
+var _0xbb07=['index','/:id','show','post','put','update','destroy','exports','util','path','connect-timeout','express','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./openchannelApplication.controller','get','isAuthenticated'];(function(_0x3f6ece,_0x530c18){var _0x3ecfa2=function(_0x55717e){while(--_0x55717e){_0x3f6ece['push'](_0x3f6ece['shift']());}};_0x3ecfa2(++_0x530c18);}(_0xbb07,0xd9));var _0x7bb0=function(_0x2d94c7,_0x301784){_0x2d94c7=_0x2d94c7-0x0;var _0x488540=_0xbb07[_0x2d94c7];return _0x488540;};'use strict';var multer=require('multer');var util=require(_0x7bb0('0x0'));var path=require(_0x7bb0('0x1'));var timeout=require(_0x7bb0('0x2'));var express=require(_0x7bb0('0x3'));var router=express['Router']();var fs_extra=require(_0x7bb0('0x4'));var auth=require(_0x7bb0('0x5'));var interaction=require(_0x7bb0('0x6'));var config=require(_0x7bb0('0x7'));var controller=require(_0x7bb0('0x8'));router[_0x7bb0('0x9')]('/',auth[_0x7bb0('0xa')](),controller[_0x7bb0('0xb')]);router[_0x7bb0('0x9')](_0x7bb0('0xc'),auth['isAuthenticated'](),controller[_0x7bb0('0xd')]);router[_0x7bb0('0xe')]('/',auth[_0x7bb0('0xa')](),controller['create']);router[_0x7bb0('0xf')](_0x7bb0('0xc'),auth['isAuthenticated'](),controller[_0x7bb0('0x10')]);router['delete'](_0x7bb0('0xc'),auth[_0x7bb0('0xa')](),controller[_0x7bb0('0x11')]);module[_0x7bb0('0x12')]=router;
\ No newline at end of file
index d45d3af..d7aba5a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x893c=['INTEGER','STRING','noop','sequelize','exports'];(function(_0x5e9786,_0x49dc5c){var _0x547710=function(_0x2e6b75){while(--_0x2e6b75){_0x5e9786['push'](_0x5e9786['shift']());}};_0x547710(++_0x49dc5c);}(_0x893c,0x148));var _0xc893=function(_0x2d6f29,_0x2f6366){_0x2d6f29=_0x2d6f29-0x0;var _0x291f5a=_0x893c[_0x2d6f29];return _0x291f5a;};'use strict';var Sequelize=require(_0xc893('0x0'));module[_0xc893('0x1')]={'priority':{'type':Sequelize[_0xc893('0x2')],'allowNull':![]},'app':{'type':Sequelize[_0xc893('0x3')],'allowNull':![],'defaultValue':_0xc893('0x4')},'appdata':{'type':Sequelize['TEXT']()},'description':{'type':Sequelize[_0xc893('0x3')]},'interval':{'type':Sequelize[_0xc893('0x3')],'defaultValue':'*,*,*,*'}};
\ No newline at end of file
+var _0x0edc=['STRING','sequelize','exports','INTEGER','TEXT'];(function(_0x321bb2,_0x202794){var _0x9c12ed=function(_0x263dd3){while(--_0x263dd3){_0x321bb2['push'](_0x321bb2['shift']());}};_0x9c12ed(++_0x202794);}(_0x0edc,0x114));var _0xc0ed=function(_0x1be1ec,_0x47132f){_0x1be1ec=_0x1be1ec-0x0;var _0xd3297a=_0x0edc[_0x1be1ec];return _0xd3297a;};'use strict';var Sequelize=require(_0xc0ed('0x0'));module[_0xc0ed('0x1')]={'priority':{'type':Sequelize[_0xc0ed('0x2')],'allowNull':![]},'app':{'type':Sequelize['STRING'],'allowNull':![],'defaultValue':'noop'},'appdata':{'type':Sequelize[_0xc0ed('0x3')]()},'description':{'type':Sequelize[_0xc0ed('0x4')]},'interval':{'type':Sequelize['STRING'],'defaultValue':'*,*,*,*'}};
\ No newline at end of file
index c7bc4a4..7e76c36 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xcd85=['OpenchannelApplication','rawAttributes','fieldName','type','query','filters','intersection','model','fields','attributes','length','hasOwnProperty','nolimit','order','sort','where','merge','VIRTUAL','filter','include','findAll','rows','catch','show','keys','includeAll','options','find','create','body','eml-format','rimraf','zip-dir','request-promise','moment','bluebird','mustache','util','sox','to-csv','fs-extra','lodash','squel','crypto','jsforce','desk.js','querystring','papaparse','../../components/auth/service','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','sendStatus','status','end','offset','limit','undefined','count','Content-Range','json','apply','reject','update','destroy','then','error','stack','name','send','map'];(function(_0x4355ab,_0x316a70){var _0x43ad47=function(_0x2c989d){while(--_0x2c989d){_0x4355ab['push'](_0x4355ab['shift']());}};_0x43ad47(++_0x316a70);}(_0xcd85,0x142));var _0x5cd8=function(_0x326722,_0x299750){_0x326722=_0x326722-0x0;var _0x3327a9=_0xcd85[_0x326722];return _0x3327a9;};'use strict';var emlformat=require(_0x5cd8('0x0'));var rimraf=require(_0x5cd8('0x1'));var zipdir=require(_0x5cd8('0x2'));var jsonpatch=require('fast-json-patch');var rp=require(_0x5cd8('0x3'));var moment=require(_0x5cd8('0x4'));var BPromise=require(_0x5cd8('0x5'));var Mustache=require(_0x5cd8('0x6'));var util=require(_0x5cd8('0x7'));var path=require('path');var sox=require(_0x5cd8('0x8'));var csv=require(_0x5cd8('0x9'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x5cd8('0xa'));var _=require(_0x5cd8('0xb'));var squel=require(_0x5cd8('0xc'));var crypto=require(_0x5cd8('0xd'));var jsforce=require(_0x5cd8('0xe'));var deskjs=require(_0x5cd8('0xf'));var toCsv=require(_0x5cd8('0x9'));var querystring=require(_0x5cd8('0x10'));var Papa=require(_0x5cd8('0x11'));var Redis=require('ioredis');var authService=require(_0x5cd8('0x12'));var qs=require('../../components/parsers/qs');var as=require('../../components/parsers/advancedSearch');var hardwareService=require('../../config/license/hardware');var logger=require(_0x5cd8('0x13'))(_0x5cd8('0x14'));var utils=require(_0x5cd8('0x15'));var config=require(_0x5cd8('0x16'));var licenseUtil=require(_0x5cd8('0x17'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x25ba69,_0x557806){_0x557806=_0x557806||0xcc;return function(_0x4a6065){if(_0x4a6065){return _0x25ba69[_0x5cd8('0x18')](_0x557806);}return _0x25ba69[_0x5cd8('0x19')](_0x557806)[_0x5cd8('0x1a')]();};}function respondWithResult(_0x555840,_0x494ae8){_0x494ae8=_0x494ae8||0xc8;return function(_0x372d81){if(_0x372d81){return _0x555840[_0x5cd8('0x19')](_0x494ae8)['json'](_0x372d81);}};}function respondWithFilteredResult(_0x41221f,_0x4e0ec2){return function(_0x2542fa){if(_0x2542fa){var _0x37380a=typeof _0x4e0ec2[_0x5cd8('0x1b')]==='undefined'&&typeof _0x4e0ec2[_0x5cd8('0x1c')]===_0x5cd8('0x1d');var _0x5e93db=_0x2542fa[_0x5cd8('0x1e')];var _0x20343a=_0x37380a?0x0:_0x4e0ec2[_0x5cd8('0x1b')];var _0x1fa7ea=_0x37380a?_0x2542fa[_0x5cd8('0x1e')]:_0x4e0ec2['offset']+_0x4e0ec2['limit'];var _0x1e5b81;if(_0x1fa7ea>=_0x5e93db){_0x1fa7ea=_0x5e93db;_0x1e5b81=0xc8;}else{_0x1e5b81=0xce;}_0x41221f[_0x5cd8('0x19')](_0x1e5b81);return _0x41221f['set'](_0x5cd8('0x1f'),_0x20343a+'-'+_0x1fa7ea+'/'+_0x5e93db)[_0x5cd8('0x20')](_0x2542fa);}return null;};}function patchUpdates(_0x5b3130){return function(_0x14cab9){try{jsonpatch[_0x5cd8('0x21')](_0x14cab9,_0x5b3130,!![]);}catch(_0x902312){return BPromise[_0x5cd8('0x22')](_0x902312);}return _0x14cab9['save']();};}function saveUpdates(_0x56d344,_0x34ebc5){return function(_0x4d2082){if(_0x4d2082){return _0x4d2082[_0x5cd8('0x23')](_0x56d344)['then'](function(_0x1d444b){return _0x1d444b;});}return null;};}function removeEntity(_0x4a6a31,_0x4c1352){return function(_0x467b1b){if(_0x467b1b){return _0x467b1b[_0x5cd8('0x24')]()[_0x5cd8('0x25')](function(){_0x4a6a31[_0x5cd8('0x19')](0xcc)['end']();});}};}function handleEntityNotFound(_0x1cc662,_0x3846b2){return function(_0x15c14e){if(!_0x15c14e){_0x1cc662['sendStatus'](0x194);}return _0x15c14e;};}function handleError(_0x2d6794,_0x19174b){_0x19174b=_0x19174b||0x1f4;return function(_0x3d3bf2){logger[_0x5cd8('0x26')](_0x3d3bf2[_0x5cd8('0x27')]);if(_0x3d3bf2[_0x5cd8('0x28')]){delete _0x3d3bf2[_0x5cd8('0x28')];}_0x2d6794['status'](_0x19174b)[_0x5cd8('0x29')](_0x3d3bf2);};}exports['index']=function(_0x575c15,_0xf679a2){var _0x539f11={},_0x1fc8fc={},_0xaae0ba={'count':0x0,'rows':[]};var _0x4fe1c0=_[_0x5cd8('0x2a')](db[_0x5cd8('0x2b')][_0x5cd8('0x2c')],function(_0x216e4e){return{'name':_0x216e4e[_0x5cd8('0x2d')],'type':_0x216e4e[_0x5cd8('0x2e')]['key']};});_0x1fc8fc['model']=_[_0x5cd8('0x2a')](_0x4fe1c0,'name');_0x1fc8fc[_0x5cd8('0x2f')]=_['keys'](_0x575c15[_0x5cd8('0x2f')]);_0x1fc8fc[_0x5cd8('0x30')]=_[_0x5cd8('0x31')](_0x1fc8fc[_0x5cd8('0x32')],_0x1fc8fc['query']);_0x539f11['attributes']=_[_0x5cd8('0x31')](_0x1fc8fc['model'],qs[_0x5cd8('0x33')](_0x575c15['query'][_0x5cd8('0x33')]));_0x539f11[_0x5cd8('0x34')]=_0x539f11[_0x5cd8('0x34')][_0x5cd8('0x35')]?_0x539f11['attributes']:_0x1fc8fc[_0x5cd8('0x32')];if(!_0x575c15[_0x5cd8('0x2f')][_0x5cd8('0x36')](_0x5cd8('0x37'))){_0x539f11[_0x5cd8('0x1c')]=qs[_0x5cd8('0x1c')](_0x575c15['query'][_0x5cd8('0x1c')]);_0x539f11['offset']=qs['offset'](_0x575c15['query'][_0x5cd8('0x1b')]);}_0x539f11[_0x5cd8('0x38')]=qs['sort'](_0x575c15[_0x5cd8('0x2f')][_0x5cd8('0x39')]);_0x539f11[_0x5cd8('0x3a')]=qs[_0x5cd8('0x30')](_['pick'](_0x575c15['query'],_0x1fc8fc[_0x5cd8('0x30')]),_0x4fe1c0);if(_0x575c15['query']['filter']){_0x539f11[_0x5cd8('0x3a')]=_[_0x5cd8('0x3b')](_0x539f11[_0x5cd8('0x3a')],{'$or':_[_0x5cd8('0x2a')](_0x4fe1c0,function(_0x47edae){if(_0x47edae[_0x5cd8('0x2e')]!==_0x5cd8('0x3c')){var _0x4b702f={};_0x4b702f[_0x47edae[_0x5cd8('0x28')]]={'$like':'%'+_0x575c15['query'][_0x5cd8('0x3d')]+'%'};return _0x4b702f;}})});}_0x539f11=_['merge']({},_0x539f11,_0x575c15['options']);var _0x3bd5e1={'where':_0x539f11[_0x5cd8('0x3a')]};return db[_0x5cd8('0x2b')]['count'](_0x3bd5e1)[_0x5cd8('0x25')](function(_0x22904c){_0xaae0ba[_0x5cd8('0x1e')]=_0x22904c;if(_0x575c15['query']['includeAll']){_0x539f11[_0x5cd8('0x3e')]=[{'all':!![]}];}return db[_0x5cd8('0x2b')][_0x5cd8('0x3f')](_0x539f11);})[_0x5cd8('0x25')](function(_0x3a77f3){_0xaae0ba[_0x5cd8('0x40')]=_0x3a77f3;return _0xaae0ba;})['then'](respondWithFilteredResult(_0xf679a2,_0x539f11))[_0x5cd8('0x41')](handleError(_0xf679a2,null));};exports[_0x5cd8('0x42')]=function(_0xa93deb,_0x3ccf32){var _0x2eb318={'raw':!![],'where':{'id':_0xa93deb['params']['id']}},_0x3b42f3={};_0x3b42f3['model']=_['keys'](db[_0x5cd8('0x2b')][_0x5cd8('0x2c')]);_0x3b42f3[_0x5cd8('0x2f')]=_[_0x5cd8('0x43')](_0xa93deb[_0x5cd8('0x2f')]);_0x3b42f3[_0x5cd8('0x30')]=_[_0x5cd8('0x31')](_0x3b42f3[_0x5cd8('0x32')],_0x3b42f3[_0x5cd8('0x2f')]);_0x2eb318['attributes']=_['intersection'](_0x3b42f3['model'],qs[_0x5cd8('0x33')](_0xa93deb['query']['fields']));_0x2eb318[_0x5cd8('0x34')]=_0x2eb318['attributes'][_0x5cd8('0x35')]?_0x2eb318[_0x5cd8('0x34')]:_0x3b42f3[_0x5cd8('0x32')];if(_0xa93deb['query'][_0x5cd8('0x44')]){_0x2eb318[_0x5cd8('0x3e')]=[{'all':!![]}];}_0x2eb318=_['merge']({},_0x2eb318,_0xa93deb[_0x5cd8('0x45')]);return db[_0x5cd8('0x2b')][_0x5cd8('0x46')](_0x2eb318)['then'](handleEntityNotFound(_0x3ccf32,null))[_0x5cd8('0x25')](respondWithResult(_0x3ccf32,null))[_0x5cd8('0x41')](handleError(_0x3ccf32,null));};exports['create']=function(_0x53acdf,_0x5b20e3){return db[_0x5cd8('0x2b')][_0x5cd8('0x47')](_0x53acdf[_0x5cd8('0x48')],{})[_0x5cd8('0x25')](respondWithResult(_0x5b20e3,0xc9))[_0x5cd8('0x41')](handleError(_0x5b20e3,null));};exports['update']=function(_0x3f9686,_0x49797d){if(_0x3f9686[_0x5cd8('0x48')]['id']){delete _0x3f9686[_0x5cd8('0x48')]['id'];}return db[_0x5cd8('0x2b')][_0x5cd8('0x46')]({'where':{'id':_0x3f9686['params']['id']}})['then'](handleEntityNotFound(_0x49797d,null))[_0x5cd8('0x25')](saveUpdates(_0x3f9686[_0x5cd8('0x48')],null))[_0x5cd8('0x25')](respondWithResult(_0x49797d,null))[_0x5cd8('0x41')](handleError(_0x49797d,null));};exports[_0x5cd8('0x24')]=function(_0x1acf3b,_0x1cf6c3){return db['OpenchannelApplication'][_0x5cd8('0x46')]({'where':{'id':_0x1acf3b['params']['id']}})[_0x5cd8('0x25')](handleEntityNotFound(_0x1cf6c3,null))[_0x5cd8('0x25')](removeEntity(_0x1cf6c3,null))[_0x5cd8('0x41')](handleError(_0x1cf6c3,null));};
\ No newline at end of file
+var _0xc4ff=['then','error','name','send','index','rawAttributes','fieldName','type','key','model','query','filters','intersection','attributes','length','hasOwnProperty','nolimit','order','sort','where','pick','filter','merge','map','VIRTUAL','OpenchannelApplication','includeAll','include','findAll','rows','catch','show','params','keys','fields','options','create','body','find','eml-format','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox','to-csv','ejs','fs-extra','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/license/util','../../mysqldb','sendStatus','status','end','json','offset','undefined','limit','count','set','apply','update','destroy'];(function(_0x42dcbb,_0x3bab87){var _0x597f5d=function(_0x3c93c6){while(--_0x3c93c6){_0x42dcbb['push'](_0x42dcbb['shift']());}};_0x597f5d(++_0x3bab87);}(_0xc4ff,0x76));var _0xfc4f=function(_0x37bb09,_0x241085){_0x37bb09=_0x37bb09-0x0;var _0x423559=_0xc4ff[_0x37bb09];return _0x423559;};'use strict';var emlformat=require(_0xfc4f('0x0'));var rimraf=require('rimraf');var zipdir=require(_0xfc4f('0x1'));var jsonpatch=require(_0xfc4f('0x2'));var rp=require(_0xfc4f('0x3'));var moment=require(_0xfc4f('0x4'));var BPromise=require(_0xfc4f('0x5'));var Mustache=require(_0xfc4f('0x6'));var util=require(_0xfc4f('0x7'));var path=require(_0xfc4f('0x8'));var sox=require(_0xfc4f('0x9'));var csv=require(_0xfc4f('0xa'));var ejs=require(_0xfc4f('0xb'));var fs=require('fs');var fs_extra=require(_0xfc4f('0xc'));var _=require('lodash');var squel=require(_0xfc4f('0xd'));var crypto=require(_0xfc4f('0xe'));var jsforce=require(_0xfc4f('0xf'));var deskjs=require(_0xfc4f('0x10'));var toCsv=require('to-csv');var querystring=require(_0xfc4f('0x11'));var Papa=require('papaparse');var Redis=require(_0xfc4f('0x12'));var authService=require(_0xfc4f('0x13'));var qs=require(_0xfc4f('0x14'));var as=require(_0xfc4f('0x15'));var hardwareService=require(_0xfc4f('0x16'));var logger=require(_0xfc4f('0x17'))(_0xfc4f('0x18'));var utils=require(_0xfc4f('0x19'));var config=require('../../config/environment');var licenseUtil=require(_0xfc4f('0x1a'));var db=require(_0xfc4f('0x1b'))['db'];function respondWithStatusCode(_0x14e04a,_0xd323bb){_0xd323bb=_0xd323bb||0xcc;return function(_0x5c1737){if(_0x5c1737){return _0x14e04a[_0xfc4f('0x1c')](_0xd323bb);}return _0x14e04a[_0xfc4f('0x1d')](_0xd323bb)[_0xfc4f('0x1e')]();};}function respondWithResult(_0x280d10,_0x4ae91c){_0x4ae91c=_0x4ae91c||0xc8;return function(_0x193c1d){if(_0x193c1d){return _0x280d10[_0xfc4f('0x1d')](_0x4ae91c)[_0xfc4f('0x1f')](_0x193c1d);}};}function respondWithFilteredResult(_0x3b6816,_0x55dfd3){return function(_0x4548af){if(_0x4548af){var _0x41de15=typeof _0x55dfd3[_0xfc4f('0x20')]===_0xfc4f('0x21')&&typeof _0x55dfd3[_0xfc4f('0x22')]===_0xfc4f('0x21');var _0xa68723=_0x4548af[_0xfc4f('0x23')];var _0x530f68=_0x41de15?0x0:_0x55dfd3[_0xfc4f('0x20')];var _0x534d3f=_0x41de15?_0x4548af[_0xfc4f('0x23')]:_0x55dfd3[_0xfc4f('0x20')]+_0x55dfd3[_0xfc4f('0x22')];var _0x2b145a;if(_0x534d3f>=_0xa68723){_0x534d3f=_0xa68723;_0x2b145a=0xc8;}else{_0x2b145a=0xce;}_0x3b6816['status'](_0x2b145a);return _0x3b6816[_0xfc4f('0x24')]('Content-Range',_0x530f68+'-'+_0x534d3f+'/'+_0xa68723)[_0xfc4f('0x1f')](_0x4548af);}return null;};}function patchUpdates(_0x26ab07){return function(_0x52cdeb){try{jsonpatch[_0xfc4f('0x25')](_0x52cdeb,_0x26ab07,!![]);}catch(_0x1426a2){return BPromise['reject'](_0x1426a2);}return _0x52cdeb['save']();};}function saveUpdates(_0x1f8575,_0x4e4cb0){return function(_0x59bbd6){if(_0x59bbd6){return _0x59bbd6[_0xfc4f('0x26')](_0x1f8575)['then'](function(_0x93ea1d){return _0x93ea1d;});}return null;};}function removeEntity(_0x437afc,_0x458fce){return function(_0x7e6653){if(_0x7e6653){return _0x7e6653[_0xfc4f('0x27')]()[_0xfc4f('0x28')](function(){_0x437afc['status'](0xcc)[_0xfc4f('0x1e')]();});}};}function handleEntityNotFound(_0x2d3188,_0x3b6754){return function(_0x58c10e){if(!_0x58c10e){_0x2d3188[_0xfc4f('0x1c')](0x194);}return _0x58c10e;};}function handleError(_0x27d720,_0x2756e2){_0x2756e2=_0x2756e2||0x1f4;return function(_0x538339){logger[_0xfc4f('0x29')](_0x538339['stack']);if(_0x538339[_0xfc4f('0x2a')]){delete _0x538339['name'];}_0x27d720[_0xfc4f('0x1d')](_0x2756e2)[_0xfc4f('0x2b')](_0x538339);};}exports[_0xfc4f('0x2c')]=function(_0x284172,_0x53665e){var _0x15a232={},_0x13d27c={},_0xea356f={'count':0x0,'rows':[]};var _0xe28bdd=_['map'](db['OpenchannelApplication'][_0xfc4f('0x2d')],function(_0x4ab0b3){return{'name':_0x4ab0b3[_0xfc4f('0x2e')],'type':_0x4ab0b3[_0xfc4f('0x2f')][_0xfc4f('0x30')]};});_0x13d27c[_0xfc4f('0x31')]=_['map'](_0xe28bdd,'name');_0x13d27c['query']=_['keys'](_0x284172[_0xfc4f('0x32')]);_0x13d27c[_0xfc4f('0x33')]=_[_0xfc4f('0x34')](_0x13d27c[_0xfc4f('0x31')],_0x13d27c['query']);_0x15a232['attributes']=_[_0xfc4f('0x34')](_0x13d27c[_0xfc4f('0x31')],qs['fields'](_0x284172[_0xfc4f('0x32')]['fields']));_0x15a232[_0xfc4f('0x35')]=_0x15a232[_0xfc4f('0x35')][_0xfc4f('0x36')]?_0x15a232[_0xfc4f('0x35')]:_0x13d27c['model'];if(!_0x284172[_0xfc4f('0x32')][_0xfc4f('0x37')](_0xfc4f('0x38'))){_0x15a232['limit']=qs[_0xfc4f('0x22')](_0x284172['query'][_0xfc4f('0x22')]);_0x15a232[_0xfc4f('0x20')]=qs['offset'](_0x284172[_0xfc4f('0x32')][_0xfc4f('0x20')]);}_0x15a232[_0xfc4f('0x39')]=qs[_0xfc4f('0x3a')](_0x284172[_0xfc4f('0x32')]['sort']);_0x15a232[_0xfc4f('0x3b')]=qs[_0xfc4f('0x33')](_[_0xfc4f('0x3c')](_0x284172[_0xfc4f('0x32')],_0x13d27c['filters']),_0xe28bdd);if(_0x284172['query'][_0xfc4f('0x3d')]){_0x15a232[_0xfc4f('0x3b')]=_[_0xfc4f('0x3e')](_0x15a232[_0xfc4f('0x3b')],{'$or':_[_0xfc4f('0x3f')](_0xe28bdd,function(_0x4b7ced){if(_0x4b7ced[_0xfc4f('0x2f')]!==_0xfc4f('0x40')){var _0x455d43={};_0x455d43[_0x4b7ced['name']]={'$like':'%'+_0x284172[_0xfc4f('0x32')][_0xfc4f('0x3d')]+'%'};return _0x455d43;}})});}_0x15a232=_[_0xfc4f('0x3e')]({},_0x15a232,_0x284172['options']);var _0x51ec2e={'where':_0x15a232[_0xfc4f('0x3b')]};return db[_0xfc4f('0x41')][_0xfc4f('0x23')](_0x51ec2e)['then'](function(_0x5b967b){_0xea356f[_0xfc4f('0x23')]=_0x5b967b;if(_0x284172['query'][_0xfc4f('0x42')]){_0x15a232[_0xfc4f('0x43')]=[{'all':!![]}];}return db[_0xfc4f('0x41')][_0xfc4f('0x44')](_0x15a232);})['then'](function(_0x52aaae){_0xea356f[_0xfc4f('0x45')]=_0x52aaae;return _0xea356f;})[_0xfc4f('0x28')](respondWithFilteredResult(_0x53665e,_0x15a232))[_0xfc4f('0x46')](handleError(_0x53665e,null));};exports[_0xfc4f('0x47')]=function(_0x299ffa,_0x1cd44c){var _0x38b436={'raw':!![],'where':{'id':_0x299ffa[_0xfc4f('0x48')]['id']}},_0x7f9501={};_0x7f9501[_0xfc4f('0x31')]=_['keys'](db[_0xfc4f('0x41')][_0xfc4f('0x2d')]);_0x7f9501[_0xfc4f('0x32')]=_[_0xfc4f('0x49')](_0x299ffa['query']);_0x7f9501[_0xfc4f('0x33')]=_['intersection'](_0x7f9501[_0xfc4f('0x31')],_0x7f9501[_0xfc4f('0x32')]);_0x38b436[_0xfc4f('0x35')]=_[_0xfc4f('0x34')](_0x7f9501[_0xfc4f('0x31')],qs['fields'](_0x299ffa[_0xfc4f('0x32')][_0xfc4f('0x4a')]));_0x38b436[_0xfc4f('0x35')]=_0x38b436[_0xfc4f('0x35')][_0xfc4f('0x36')]?_0x38b436[_0xfc4f('0x35')]:_0x7f9501[_0xfc4f('0x31')];if(_0x299ffa[_0xfc4f('0x32')][_0xfc4f('0x42')]){_0x38b436[_0xfc4f('0x43')]=[{'all':!![]}];}_0x38b436=_['merge']({},_0x38b436,_0x299ffa[_0xfc4f('0x4b')]);return db[_0xfc4f('0x41')]['find'](_0x38b436)['then'](handleEntityNotFound(_0x1cd44c,null))[_0xfc4f('0x28')](respondWithResult(_0x1cd44c,null))[_0xfc4f('0x46')](handleError(_0x1cd44c,null));};exports['create']=function(_0x2b7d36,_0x3b636b){return db['OpenchannelApplication'][_0xfc4f('0x4c')](_0x2b7d36['body'],{})[_0xfc4f('0x28')](respondWithResult(_0x3b636b,0xc9))[_0xfc4f('0x46')](handleError(_0x3b636b,null));};exports[_0xfc4f('0x26')]=function(_0x21050d,_0x3df1c3){if(_0x21050d[_0xfc4f('0x4d')]['id']){delete _0x21050d[_0xfc4f('0x4d')]['id'];}return db['OpenchannelApplication'][_0xfc4f('0x4e')]({'where':{'id':_0x21050d['params']['id']}})[_0xfc4f('0x28')](handleEntityNotFound(_0x3df1c3,null))[_0xfc4f('0x28')](saveUpdates(_0x21050d[_0xfc4f('0x4d')],null))['then'](respondWithResult(_0x3df1c3,null))[_0xfc4f('0x46')](handleError(_0x3df1c3,null));};exports[_0xfc4f('0x27')]=function(_0x50ec7d,_0x3fe0b2){return db[_0xfc4f('0x41')][_0xfc4f('0x4e')]({'where':{'id':_0x50ec7d['params']['id']}})[_0xfc4f('0x28')](handleEntityNotFound(_0x3fe0b2,null))[_0xfc4f('0x28')](removeEntity(_0x3fe0b2,null))[_0xfc4f('0x46')](handleError(_0x3fe0b2,null));};
\ No newline at end of file
index 6cab0ec..f30484d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7089=['../../config/environment','./openchannelApplication.attributes','exports','define','OpenchannelApplication','openchannel_applications','utf8mb4_unicode_ci','lodash','util','../../config/logger','api','moment','request-promise','path','rimraf'];(function(_0x2e5faa,_0x532a7c){var _0x6029b9=function(_0x496a52){while(--_0x496a52){_0x2e5faa['push'](_0x2e5faa['shift']());}};_0x6029b9(++_0x532a7c);}(_0x7089,0xca));var _0x9708=function(_0x17c4ee,_0x5e6216){_0x17c4ee=_0x17c4ee-0x0;var _0x4dc027=_0x7089[_0x17c4ee];return _0x4dc027;};'use strict';var _=require(_0x9708('0x0'));var util=require(_0x9708('0x1'));var logger=require(_0x9708('0x2'))(_0x9708('0x3'));var moment=require(_0x9708('0x4'));var BPromise=require('bluebird');var rp=require(_0x9708('0x5'));var fs=require('fs');var path=require(_0x9708('0x6'));var rimraf=require(_0x9708('0x7'));var config=require(_0x9708('0x8'));var attributes=require(_0x9708('0x9'));module[_0x9708('0xa')]=function(_0xb4d377,_0x4221e5){return _0xb4d377[_0x9708('0xb')](_0x9708('0xc'),attributes,{'tableName':_0x9708('0xd'),'paranoid':![],'indexes':[],'timestamps':!![],'charset':'utf8mb4','collate':_0x9708('0xe')});};
\ No newline at end of file
+var _0x8b63=['util','../../config/logger','moment','bluebird','request-promise','rimraf','../../config/environment','./openchannelApplication.attributes','define','OpenchannelApplication','openchannel_applications','utf8mb4','utf8mb4_unicode_ci'];(function(_0xf4df8c,_0x23d381){var _0x44e012=function(_0x3a6e51){while(--_0x3a6e51){_0xf4df8c['push'](_0xf4df8c['shift']());}};_0x44e012(++_0x23d381);}(_0x8b63,0xea));var _0x38b6=function(_0x2c7143,_0x93037e){_0x2c7143=_0x2c7143-0x0;var _0x58c565=_0x8b63[_0x2c7143];return _0x58c565;};'use strict';var _=require('lodash');var util=require(_0x38b6('0x0'));var logger=require(_0x38b6('0x1'))('api');var moment=require(_0x38b6('0x2'));var BPromise=require(_0x38b6('0x3'));var rp=require(_0x38b6('0x4'));var fs=require('fs');var path=require('path');var rimraf=require(_0x38b6('0x5'));var config=require(_0x38b6('0x6'));var attributes=require(_0x38b6('0x7'));module['exports']=function(_0x2b3fa7,_0x1e6a69){return _0x2b3fa7[_0x38b6('0x8')](_0x38b6('0x9'),attributes,{'tableName':_0x38b6('0xa'),'paranoid':![],'indexes':[],'timestamps':!![],'charset':_0x38b6('0xb'),'collate':_0x38b6('0xc')});};
\ No newline at end of file
index 53a3b0a..b3d6e23 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1af9=['limit','util','randomstring','ioredis','../../config/utils','rpc','../../config/environment','client','request','then','info','OpenchannelApplication,\x20%s,\x20%s','debug','OpenchannelApplication,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','code','message','result','catch','UpdateOpenchannelApplication','OpenchannelApplication','body','options','where'];(function(_0x4b369d,_0x265eb8){var _0x571a98=function(_0x56341a){while(--_0x56341a){_0x4b369d['push'](_0x4b369d['shift']());}};_0x571a98(++_0x265eb8);}(_0x1af9,0x1bb));var _0x91af=function(_0x41ebac,_0x1aafcd){_0x41ebac=_0x41ebac-0x0;var _0x5065cd=_0x1af9[_0x41ebac];return _0x5065cd;};'use strict';var _=require('lodash');var util=require(_0x91af('0x0'));var moment=require('moment');var BPromise=require('bluebird');var rs=require(_0x91af('0x1'));var fs=require('fs');var Redis=require(_0x91af('0x2'));var db=require('../../mysqldb')['db'];var utils=require(_0x91af('0x3'));var logger=require('../../config/logger')(_0x91af('0x4'));var config=require(_0x91af('0x5'));var jayson=require('jayson/promise');var client=jayson[_0x91af('0x6')]['http']({'port':0x232a});function respondWithRpcPromise(_0x14a7c0,_0x3f3f8a,_0x485ce0){return new BPromise(function(_0x45aac2,_0x22c09b){return client[_0x91af('0x7')](_0x14a7c0,_0x485ce0)[_0x91af('0x8')](function(_0x412770){logger[_0x91af('0x9')](_0x91af('0xa'),_0x3f3f8a,'request\x20sent');logger[_0x91af('0xb')](_0x91af('0xc'),_0x3f3f8a,_0x91af('0xd'),JSON[_0x91af('0xe')](_0x412770));if(_0x412770[_0x91af('0xf')]){if(_0x412770[_0x91af('0xf')][_0x91af('0x10')]===0x1f4){logger[_0x91af('0xf')](_0x91af('0xa'),_0x3f3f8a,_0x412770['error'][_0x91af('0x11')]);return _0x22c09b(_0x412770[_0x91af('0xf')][_0x91af('0x11')]);}logger[_0x91af('0xf')](_0x91af('0xa'),_0x3f3f8a,_0x412770[_0x91af('0xf')][_0x91af('0x11')]);return _0x45aac2(_0x412770['error'][_0x91af('0x11')]);}else{logger[_0x91af('0x9')](_0x91af('0xa'),_0x3f3f8a,'request\x20sent');_0x45aac2(_0x412770[_0x91af('0x12')][_0x91af('0x11')]);}})[_0x91af('0x13')](function(_0x2299bd){logger['error'](_0x91af('0xa'),_0x3f3f8a,_0x2299bd);_0x22c09b(_0x2299bd);});});}exports[_0x91af('0x14')]=function(_0x1439e1){var _0x23643e=this;return new Promise(function(_0x401762,_0x4825e4){return db[_0x91af('0x15')]['update'](_0x1439e1[_0x91af('0x16')],{'raw':_0x1439e1[_0x91af('0x17')]?_0x1439e1[_0x91af('0x17')]['raw']===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x1439e1[_0x91af('0x17')]?_0x1439e1[_0x91af('0x17')][_0x91af('0x18')]||null:null,'attributes':_0x1439e1[_0x91af('0x17')]?_0x1439e1[_0x91af('0x17')]['attributes']||null:null,'limit':_0x1439e1[_0x91af('0x17')]?_0x1439e1[_0x91af('0x17')][_0x91af('0x19')]||null:null})[_0x91af('0x8')](function(_0x39698a){logger[_0x91af('0x9')]('UpdateOpenchannelApplication',_0x1439e1);logger['debug'](_0x91af('0x14'),_0x1439e1,JSON[_0x91af('0xe')](_0x39698a));_0x401762(_0x39698a);})[_0x91af('0x13')](function(_0x52002d){logger['error'](_0x91af('0x14'),_0x52002d['message'],_0x1439e1);_0x4825e4(_0x23643e['error'](0x1f4,_0x52002d[_0x91af('0x11')]));});});};
\ No newline at end of file
+var _0x9810=['ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','info','OpenchannelApplication,\x20%s,\x20%s','request\x20sent','debug','OpenchannelApplication,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','update','body','options','raw','where','attributes','then','catch','moment'];(function(_0x1465dc,_0x4d684d){var _0x226206=function(_0x2db59e){while(--_0x2db59e){_0x1465dc['push'](_0x1465dc['shift']());}};_0x226206(++_0x4d684d);}(_0x9810,0xc3));var _0x0981=function(_0x352e09,_0x37a7da){_0x352e09=_0x352e09-0x0;var _0x1b7094=_0x9810[_0x352e09];return _0x1b7094;};'use strict';var _=require('lodash');var util=require('util');var moment=require(_0x0981('0x0'));var BPromise=require('bluebird');var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x0981('0x1'));var db=require(_0x0981('0x2'))['db'];var utils=require(_0x0981('0x3'));var logger=require(_0x0981('0x4'))(_0x0981('0x5'));var config=require(_0x0981('0x6'));var jayson=require(_0x0981('0x7'));var client=jayson[_0x0981('0x8')][_0x0981('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x231a8d,_0x40e716,_0x3eb981){return new BPromise(function(_0x36b5bb,_0x2431e0){return client['request'](_0x231a8d,_0x3eb981)['then'](function(_0x1bf5da){logger[_0x0981('0xa')](_0x0981('0xb'),_0x40e716,_0x0981('0xc'));logger[_0x0981('0xd')](_0x0981('0xe'),_0x40e716,'request\x20sent',JSON[_0x0981('0xf')](_0x1bf5da));if(_0x1bf5da[_0x0981('0x10')]){if(_0x1bf5da['error'][_0x0981('0x11')]===0x1f4){logger['error'](_0x0981('0xb'),_0x40e716,_0x1bf5da['error']['message']);return _0x2431e0(_0x1bf5da[_0x0981('0x10')][_0x0981('0x12')]);}logger['error'](_0x0981('0xb'),_0x40e716,_0x1bf5da[_0x0981('0x10')][_0x0981('0x12')]);return _0x36b5bb(_0x1bf5da[_0x0981('0x10')]['message']);}else{logger[_0x0981('0xa')]('OpenchannelApplication,\x20%s,\x20%s',_0x40e716,_0x0981('0xc'));_0x36b5bb(_0x1bf5da[_0x0981('0x13')][_0x0981('0x12')]);}})['catch'](function(_0x38ee79){logger['error']('OpenchannelApplication,\x20%s,\x20%s',_0x40e716,_0x38ee79);_0x2431e0(_0x38ee79);});});}exports['UpdateOpenchannelApplication']=function(_0x4369d7){var _0x4f5b88=this;return new Promise(function(_0x54d8c0,_0x5ce8e1){return db['OpenchannelApplication'][_0x0981('0x14')](_0x4369d7[_0x0981('0x15')],{'raw':_0x4369d7['options']?_0x4369d7[_0x0981('0x16')][_0x0981('0x17')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x4369d7[_0x0981('0x16')]?_0x4369d7[_0x0981('0x16')][_0x0981('0x18')]||null:null,'attributes':_0x4369d7['options']?_0x4369d7[_0x0981('0x16')][_0x0981('0x19')]||null:null,'limit':_0x4369d7['options']?_0x4369d7[_0x0981('0x16')]['limit']||null:null})[_0x0981('0x1a')](function(_0x1beed2){logger[_0x0981('0xa')]('UpdateOpenchannelApplication',_0x4369d7);logger['debug']('UpdateOpenchannelApplication',_0x4369d7,JSON['stringify'](_0x1beed2));_0x54d8c0(_0x1beed2);})[_0x0981('0x1b')](function(_0x1de9fc){logger[_0x0981('0x10')]('UpdateOpenchannelApplication',_0x1de9fc['message'],_0x4369d7);_0x5ce8e1(_0x4f5b88[_0x0981('0x10')](0x1f4,_0x1de9fc[_0x0981('0x12')]));});});};
\ No newline at end of file
index fc6a198..afc59db 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2e32=['post','create','addMessage','/:id/tags','tracked','openchannel','openchannelinteraction:addtags','addTags','put','update','delete','openchannelinteraction:destroy','destroy','exports','multer','util','path','connect-timeout','express','fs-extra','../../components/auth/service','../../components/interaction/service','./openchannelInteraction.controller','get','isAuthenticated','index','describe','/:id','/:id/messages','getMessages','/:id/download','download'];(function(_0x3f154d,_0x5c217d){var _0x5ada82=function(_0x390787){while(--_0x390787){_0x3f154d['push'](_0x3f154d['shift']());}};_0x5ada82(++_0x5c217d);}(_0x2e32,0x14e));var _0x22e3=function(_0x40a045,_0x516f0e){_0x40a045=_0x40a045-0x0;var _0x1a687c=_0x2e32[_0x40a045];return _0x1a687c;};'use strict';var multer=require(_0x22e3('0x0'));var util=require(_0x22e3('0x1'));var path=require(_0x22e3('0x2'));var timeout=require(_0x22e3('0x3'));var express=require(_0x22e3('0x4'));var router=express['Router']();var fs_extra=require(_0x22e3('0x5'));var auth=require(_0x22e3('0x6'));var interaction=require(_0x22e3('0x7'));var config=require('../../config/environment');var controller=require(_0x22e3('0x8'));router[_0x22e3('0x9')]('/',auth[_0x22e3('0xa')](),controller[_0x22e3('0xb')]);router[_0x22e3('0x9')]('/describe',auth[_0x22e3('0xa')](),controller[_0x22e3('0xc')]);router[_0x22e3('0x9')](_0x22e3('0xd'),auth[_0x22e3('0xa')](),controller['show']);router[_0x22e3('0x9')](_0x22e3('0xe'),auth[_0x22e3('0xa')](),controller[_0x22e3('0xf')]);router[_0x22e3('0x9')](_0x22e3('0x10'),auth[_0x22e3('0xa')](),controller[_0x22e3('0x11')]);router[_0x22e3('0x12')]('/',auth[_0x22e3('0xa')](),controller[_0x22e3('0x13')]);router[_0x22e3('0x12')](_0x22e3('0xe'),auth[_0x22e3('0xa')](),controller[_0x22e3('0x14')]);router[_0x22e3('0x12')](_0x22e3('0x15'),auth[_0x22e3('0xa')](),interaction[_0x22e3('0x16')](_0x22e3('0x17'),_0x22e3('0x18')),controller[_0x22e3('0x19')]);router[_0x22e3('0x1a')]('/:id',auth[_0x22e3('0xa')](),interaction['tracked'](_0x22e3('0x17'),'openchannelinteraction:update'),controller[_0x22e3('0x1b')]);router[_0x22e3('0x1c')](_0x22e3('0xd'),auth[_0x22e3('0xa')](),interaction[_0x22e3('0x16')](_0x22e3('0x17'),_0x22e3('0x1d')),controller[_0x22e3('0x1e')]);router[_0x22e3('0x1c')](_0x22e3('0x15'),auth['isAuthenticated'](),controller['removeTags']);module[_0x22e3('0x1f')]=router;
\ No newline at end of file
+var _0x25f8=['getMessages','/:id/download','create','addMessage','post','/:id/tags','tracked','openchannel','openchannelinteraction:addtags','addTags','put','/:id','openchannelinteraction:update','update','delete','openchannelinteraction:destroy','destroy','removeTags','exports','multer','util','connect-timeout','express','Router','../../config/environment','./openchannelInteraction.controller','get','/describe','isAuthenticated','describe','show','/:id/messages'];(function(_0x195577,_0x5de53a){var _0x13c367=function(_0x583022){while(--_0x583022){_0x195577['push'](_0x195577['shift']());}};_0x13c367(++_0x5de53a);}(_0x25f8,0x133));var _0x825f=function(_0x59ee6f,_0x450239){_0x59ee6f=_0x59ee6f-0x0;var _0x4c0979=_0x25f8[_0x59ee6f];return _0x4c0979;};'use strict';var multer=require(_0x825f('0x0'));var util=require(_0x825f('0x1'));var path=require('path');var timeout=require(_0x825f('0x2'));var express=require(_0x825f('0x3'));var router=express[_0x825f('0x4')]();var fs_extra=require('fs-extra');var auth=require('../../components/auth/service');var interaction=require('../../components/interaction/service');var config=require(_0x825f('0x5'));var controller=require(_0x825f('0x6'));router['get']('/',auth['isAuthenticated'](),controller['index']);router[_0x825f('0x7')](_0x825f('0x8'),auth[_0x825f('0x9')](),controller[_0x825f('0xa')]);router[_0x825f('0x7')]('/:id',auth[_0x825f('0x9')](),controller[_0x825f('0xb')]);router[_0x825f('0x7')](_0x825f('0xc'),auth[_0x825f('0x9')](),controller[_0x825f('0xd')]);router['get'](_0x825f('0xe'),auth[_0x825f('0x9')](),controller['download']);router['post']('/',auth[_0x825f('0x9')](),controller[_0x825f('0xf')]);router['post'](_0x825f('0xc'),auth['isAuthenticated'](),controller[_0x825f('0x10')]);router[_0x825f('0x11')](_0x825f('0x12'),auth[_0x825f('0x9')](),interaction[_0x825f('0x13')](_0x825f('0x14'),_0x825f('0x15')),controller[_0x825f('0x16')]);router[_0x825f('0x17')](_0x825f('0x18'),auth[_0x825f('0x9')](),interaction[_0x825f('0x13')]('openchannel',_0x825f('0x19')),controller[_0x825f('0x1a')]);router[_0x825f('0x1b')]('/:id',auth[_0x825f('0x9')](),interaction[_0x825f('0x13')](_0x825f('0x14'),_0x825f('0x1c')),controller[_0x825f('0x1d')]);router[_0x825f('0x1b')](_0x825f('0x12'),auth[_0x825f('0x9')](),controller[_0x825f('0x1e')]);module[_0x825f('0x1f')]=router;
\ No newline at end of file
index 3b8be23..3657a20 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3c7e=['ENUM','out','BOOLEAN','exports','DATE','STRING'];(function(_0x411d64,_0xb868dd){var _0x4780f9=function(_0x3ab7ec){while(--_0x3ab7ec){_0x411d64['push'](_0x411d64['shift']());}};_0x4780f9(++_0xb868dd);}(_0x3c7e,0xdb));var _0xe3c7=function(_0x53f122,_0x2cdeca){_0x53f122=_0x53f122-0x0;var _0x59a134=_0x3c7e[_0x53f122];return _0x59a134;};'use strict';var Sequelize=require('sequelize');module[_0xe3c7('0x0')]={'closed':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'closedAt':{'type':Sequelize[_0xe3c7('0x1')]},'disposition':{'type':Sequelize[_0xe3c7('0x2')]},'secondDisposition':{'type':Sequelize[_0xe3c7('0x2')]},'thirdDisposition':{'type':Sequelize[_0xe3c7('0x2')]},'note':{'type':Sequelize[_0xe3c7('0x2')]},'read1stAt':{'type':Sequelize[_0xe3c7('0x1')]},'threadId':{'type':Sequelize[_0xe3c7('0x2')]},'externalUrl':{'type':Sequelize[_0xe3c7('0x2')]},'lastMsgAt':{'type':Sequelize[_0xe3c7('0x1')]},'lastMsgDirection':{'type':Sequelize[_0xe3c7('0x3')]('in',_0xe3c7('0x4')),'defaultValue':'in','allowNull':![]},'from':{'type':Sequelize[_0xe3c7('0x2')]},'autoreplyExecuted':{'type':Sequelize[_0xe3c7('0x5')],'defaultValue':![]}};
\ No newline at end of file
+var _0xcddd=['DATE','STRING','out','sequelize','exports','BOOLEAN'];(function(_0x20f7aa,_0x2aa014){var _0x43e44c=function(_0x284e51){while(--_0x284e51){_0x20f7aa['push'](_0x20f7aa['shift']());}};_0x43e44c(++_0x2aa014);}(_0xcddd,0x1a1));var _0xdcdd=function(_0x51e0c2,_0x5828ce){_0x51e0c2=_0x51e0c2-0x0;var _0x156a1a=_0xcddd[_0x51e0c2];return _0x156a1a;};'use strict';var Sequelize=require(_0xdcdd('0x0'));module[_0xdcdd('0x1')]={'closed':{'type':Sequelize[_0xdcdd('0x2')],'defaultValue':![]},'closedAt':{'type':Sequelize[_0xdcdd('0x3')]},'disposition':{'type':Sequelize[_0xdcdd('0x4')]},'secondDisposition':{'type':Sequelize[_0xdcdd('0x4')]},'thirdDisposition':{'type':Sequelize[_0xdcdd('0x4')]},'note':{'type':Sequelize[_0xdcdd('0x4')]},'read1stAt':{'type':Sequelize[_0xdcdd('0x3')]},'threadId':{'type':Sequelize[_0xdcdd('0x4')]},'externalUrl':{'type':Sequelize[_0xdcdd('0x4')]},'lastMsgAt':{'type':Sequelize[_0xdcdd('0x3')]},'lastMsgDirection':{'type':Sequelize['ENUM']('in',_0xdcdd('0x5')),'defaultValue':'in','allowNull':![]},'from':{'type':Sequelize[_0xdcdd('0x4')]},'autoreplyExecuted':{'type':Sequelize['BOOLEAN'],'defaultValue':![]}};
\ No newline at end of file
index 065a7a4..a17d9fd 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7c76=['closedAt','disposition','Public','Private','createReadStream','pipe','createWriteStream','basename','out','System','renderFile','views','downloadInteraction.ejs','transcript-','createPdfFromHTML','unlinkSync','rimraf','request-promise','moment','mustache','sox','to-csv','fs-extra','lodash','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../components/export/pdf','../../config/license/hardware','../../config/logger','api','../../config/license/util','../../mysqldb','redis','defaults','localhost','socket.io-emitter','sendStatus','status','json','offset','undefined','limit','count','set','Content-Range','apply','reject','save','then','destroy','end','error','stack','name','Users','fullname','Tags','TagIds','push','catch','index','map','OpenchannelInteraction','rawAttributes','fieldName','type','key','keys','query','filters','intersection','model','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','pick','field','color','from','tools_tags','select','u.id','u.fullname','left_join','u.id\x20=\x20ui.UserId','cm_contacts','c.id\x20=\x20i.ContactId\x20AND\x20c.deletedAt\x20IS\x20NULL','o.id\x20=\x20i.UserId','a.id\x20=\x20i.OpenchannelAccountId','openchannel_messages','me.OpenchannelInteractionId\x20=\x20i.id','t.id\x20=\x20it.TagId','expr','search','sqlOperator','conditions','find','unreadMessages','value','`\x20=\x200','having','`\x20>\x200','Contact','operator','$substring','split','c.firstName\x20LIKE\x20?\x20OR\x20c.lastName\x20LIKE\x20?\x20OR\x20c.email\x20LIKE\x20?','ContactId','buildExpression','text','start','Tag','forEach','CONCAT(\x27,\x27,\x20`TagIds`,\x20\x27,\x27)\x20LIKE\x20?','union','User','CONCAT_WS(\x27\x20\x27,\x20o.name,\x20o.fullname)\x20LIKE\x20?','body','some','OpenchannelAccountId','i.OpenchannelAccountId\x20IN\x20?','concat','createdAt','parse','$gte','i.createdAt\x20BETWEEN\x20?\x20AND\x20?','null','\x20=\x20?','read','`unreadMessages`\x20=\x200','tag','isArray','filter','replace','i.id\x20LIKE\x20?','i.from\x20LIKE\x20?','CONCAT(c.firstName,\x20\x27\x20\x27,\x20c.lastName)\x20LIKE\x20?','group','i.id','Sequelize','QueryTypes','SELECT','clone','contactName','DESC','t.id\x20IN\x20?','i.OpenchannelAccountId\x20IS\x20NOT\x20NULL','role','agent','user','i.OpenchannelAccountId\x20IS\x20NULL','sequelize','merge','a.key','Account.key','a.mandatoryDisposition','Account.mandatoryDisposition','c.firstName','Contact.firstName','c.lastName','Contact.lastName','Contact.email','c.phone','Contact.phone','c.mobile','Contact.mobile','c.fax','o.internal','Owner.internal','GROUP_CONCAT(DISTINCT\x20t.id)','toString','groupBy','OpenchannelInteractionId','all','rows','show','params','includeAll','options','create','update','describe','addMessage','OpenchannelMessage','ids','omit','getMessages','YYYY-MM-DD\x20HH:mm:ss','include','addTags','setTags','spread','findAll','emit','openchannelInteractionTags:save','removeTags','download','unix','join','root','server','files','attachments','format','transcript-%d-%s.zip','firstName','lastName','Attachment','Messages','direction','OpenchannelAccount','Account','get','mkdirSync','Openchannel','Owner','N.A.','closed'];(function(_0x5b44d4,_0x9b2df2){var _0x3baa66=function(_0x578ce7){while(--_0x578ce7){_0x5b44d4['push'](_0x5b44d4['shift']());}};_0x3baa66(++_0x9b2df2);}(_0x7c76,0xf5));var _0x67c7=function(_0x19e35c,_0x29cd1e){_0x19e35c=_0x19e35c-0x0;var _0x3e1fe8=_0x7c76[_0x19e35c];return _0x3e1fe8;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x67c7('0x0'));var zipdir=require('zip-dir');var jsonpatch=require('fast-json-patch');var rp=require(_0x67c7('0x1'));var moment=require(_0x67c7('0x2'));var BPromise=require('bluebird');var Mustache=require(_0x67c7('0x3'));var util=require('util');var path=require('path');var sox=require(_0x67c7('0x4'));var csv=require(_0x67c7('0x5'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x67c7('0x6'));var _=require(_0x67c7('0x7'));var squel=require('squel');var crypto=require('crypto');var jsforce=require(_0x67c7('0x8'));var deskjs=require(_0x67c7('0x9'));var toCsv=require(_0x67c7('0x5'));var querystring=require(_0x67c7('0xa'));var Papa=require(_0x67c7('0xb'));var Redis=require(_0x67c7('0xc'));var authService=require(_0x67c7('0xd'));var qs=require(_0x67c7('0xe'));var as=require(_0x67c7('0xf'));var pdf=require(_0x67c7('0x10'));var hardwareService=require(_0x67c7('0x11'));var logger=require(_0x67c7('0x12'))(_0x67c7('0x13'));var utils=require('../../config/utils');var config=require('../../config/environment');var licenseUtil=require(_0x67c7('0x14'));var db=require(_0x67c7('0x15'))['db'];config[_0x67c7('0x16')]=_[_0x67c7('0x17')](config[_0x67c7('0x16')],{'host':_0x67c7('0x18'),'port':0x18eb});var socket=require(_0x67c7('0x19'))(new Redis(config[_0x67c7('0x16')]));require('./openchannelInteraction.socket')['register'](socket);function respondWithStatusCode(_0x125390,_0x4fc44b){_0x4fc44b=_0x4fc44b||0xcc;return function(_0x301e1d){if(_0x301e1d){return _0x125390[_0x67c7('0x1a')](_0x4fc44b);}return _0x125390[_0x67c7('0x1b')](_0x4fc44b)['end']();};}function respondWithResult(_0x153f21,_0x382bf5){_0x382bf5=_0x382bf5||0xc8;return function(_0x389996){if(_0x389996){return _0x153f21[_0x67c7('0x1b')](_0x382bf5)[_0x67c7('0x1c')](_0x389996);}};}function respondWithFilteredResult(_0x1e7854,_0x2e3407){return function(_0x3c702e){if(_0x3c702e){var _0x2d214e=typeof _0x2e3407[_0x67c7('0x1d')]===_0x67c7('0x1e')&&typeof _0x2e3407[_0x67c7('0x1f')]===_0x67c7('0x1e');var _0x495184=_0x3c702e[_0x67c7('0x20')];var _0x2cb9fa=_0x2d214e?0x0:_0x2e3407['offset'];var _0x1ae665=_0x2d214e?_0x3c702e['count']:_0x2e3407[_0x67c7('0x1d')]+_0x2e3407['limit'];var _0x107e70;if(_0x1ae665>=_0x495184){_0x1ae665=_0x495184;_0x107e70=0xc8;}else{_0x107e70=0xce;}_0x1e7854[_0x67c7('0x1b')](_0x107e70);return _0x1e7854[_0x67c7('0x21')](_0x67c7('0x22'),_0x2cb9fa+'-'+_0x1ae665+'/'+_0x495184)[_0x67c7('0x1c')](_0x3c702e);}return null;};}function patchUpdates(_0x501cdd){return function(_0xd06f24){try{jsonpatch[_0x67c7('0x23')](_0xd06f24,_0x501cdd,!![]);}catch(_0x41c3c0){return BPromise[_0x67c7('0x24')](_0x41c3c0);}return _0xd06f24[_0x67c7('0x25')]();};}function saveUpdates(_0x148479,_0x3cfa29){return function(_0x4a2c7b){if(_0x4a2c7b){return _0x4a2c7b['update'](_0x148479)[_0x67c7('0x26')](function(_0x16e5e5){return _0x16e5e5;});}return null;};}function removeEntity(_0x216201,_0x1d0361){return function(_0x2e2f10){if(_0x2e2f10){return _0x2e2f10[_0x67c7('0x27')]()[_0x67c7('0x26')](function(){_0x216201['status'](0xcc)[_0x67c7('0x28')]();});}};}function handleEntityNotFound(_0x394839,_0x345640){return function(_0x31022d){if(!_0x31022d){_0x394839['sendStatus'](0x194);}return _0x31022d;};}function handleError(_0x44d381,_0x522701){_0x522701=_0x522701||0x1f4;return function(_0x273561){logger[_0x67c7('0x29')](_0x273561[_0x67c7('0x2a')]);if(_0x273561[_0x67c7('0x2b')]){delete _0x273561[_0x67c7('0x2b')];}_0x44d381['status'](_0x522701)['send'](_0x273561);};}function getInteractionUsers(_0x10bd0c,_0x43d72e){return new BPromise(function(_0x21fec7,_0x22b479){try{if(_0x43d72e[_0x10bd0c['id']]){_0x10bd0c[_0x67c7('0x2c')]=_['map'](_0x43d72e[_0x10bd0c['id']],function(_0x5b28e3){return{'id':_0x5b28e3['id'],'fullname':_0x5b28e3[_0x67c7('0x2d')]};});}}catch(_0x200ae1){_0x22b479(_0x200ae1);}_0x21fec7(_0x10bd0c);});}function getInteractionTags(_0x5ab9bd,_0x388621){return new BPromise(function(_0x2fd100,_0x3f862d){try{if(_0x5ab9bd['TagIds']){_0x5ab9bd[_0x67c7('0x2e')]=[];_0x5ab9bd[_0x67c7('0x2f')]['split'](',')['forEach'](function(_0x1cc14f){_0x5ab9bd[_0x67c7('0x2e')][_0x67c7('0x30')](_0x388621[_0x1cc14f]);});}delete _0x5ab9bd[_0x67c7('0x2f')];}catch(_0x128fd0){_0x3f862d(_0x128fd0);}_0x2fd100(_0x5ab9bd);});}function updateOpenchannelInteraction(_0xd73d3,_0x5e6da6,_0x276e3d){return new BPromise(function(_0x3da857,_0x1270d2){return getInteractionUsers(_0xd73d3,_0x276e3d)[_0x67c7('0x26')](function(_0x4162ae){return getInteractionTags(_0x4162ae,_0x5e6da6);})[_0x67c7('0x26')](function(_0x527c42){_0x3da857(_0x527c42);})[_0x67c7('0x31')](function(_0x4de235){_0x1270d2(_0x4de235);});});}exports[_0x67c7('0x32')]=function(_0x496ea2,_0x191b06){var _0x59a49f={},_0x166402={},_0x5b7813={'count':0x0,'rows':[]};var _0x29f0e1=_[_0x67c7('0x33')](db[_0x67c7('0x34')][_0x67c7('0x35')],function(_0x55d773){return{'name':_0x55d773[_0x67c7('0x36')],'type':_0x55d773[_0x67c7('0x37')][_0x67c7('0x38')]};});_0x166402['model']=_[_0x67c7('0x33')](_0x29f0e1,'name');_0x166402['query']=_[_0x67c7('0x39')](_0x496ea2[_0x67c7('0x3a')]);_0x166402[_0x67c7('0x3b')]=_[_0x67c7('0x3c')](_0x166402[_0x67c7('0x3d')],_0x166402[_0x67c7('0x3a')]);_0x59a49f[_0x67c7('0x3e')]=_['intersection'](_0x166402[_0x67c7('0x3d')],qs[_0x67c7('0x3f')](_0x496ea2[_0x67c7('0x3a')][_0x67c7('0x3f')]));_0x59a49f[_0x67c7('0x3e')]=_0x59a49f[_0x67c7('0x3e')][_0x67c7('0x40')]?_0x59a49f['attributes']:_0x166402[_0x67c7('0x3d')];if(!_0x496ea2[_0x67c7('0x3a')][_0x67c7('0x41')](_0x67c7('0x42'))){_0x59a49f['limit']=qs['limit'](_0x496ea2['query']['limit']);_0x59a49f[_0x67c7('0x1d')]=qs[_0x67c7('0x1d')](_0x496ea2['query'][_0x67c7('0x1d')]);}_0x59a49f[_0x67c7('0x43')]=qs[_0x67c7('0x44')](_0x496ea2[_0x67c7('0x3a')]['sort']);_0x59a49f[_0x67c7('0x45')]=qs[_0x67c7('0x3b')](_[_0x67c7('0x46')](_0x496ea2[_0x67c7('0x3a')],_0x166402[_0x67c7('0x3b')]),_0x29f0e1);var _0xdc954c=[];var _0x1cc239=squel['select']()['field']('id')[_0x67c7('0x47')](_0x67c7('0x2b'))[_0x67c7('0x47')](_0x67c7('0x48'))[_0x67c7('0x49')](_0x67c7('0x4a'));var _0x17d17e=squel[_0x67c7('0x4b')]()[_0x67c7('0x47')](_0x67c7('0x4c'))['field'](_0x67c7('0x4d'))[_0x67c7('0x47')]('ui.OpenchannelInteractionId')[_0x67c7('0x49')]('user_has_openchannel_interactions','ui')[_0x67c7('0x4e')]('users','u',_0x67c7('0x4f'));var _0x2e4730=squel[_0x67c7('0x4b')]()[_0x67c7('0x49')]('openchannel_interactions','i')['left_join'](_0x67c7('0x50'),'c',_0x67c7('0x51'))[_0x67c7('0x4e')]('users','o',_0x67c7('0x52'))[_0x67c7('0x4e')]('openchannel_accounts','a',_0x67c7('0x53'))['left_join'](_0x67c7('0x54'),'me',_0x67c7('0x55'))[_0x67c7('0x4e')]('openchannel_interaction_has_tags','it','it.OpenchannelInteractionId\x20=\x20i.id')[_0x67c7('0x4e')](_0x67c7('0x4a'),'t',_0x67c7('0x56'));var _0x7defc5=squel[_0x67c7('0x57')]();var _0x497ab9=[];var _0x5e402f=squel[_0x67c7('0x57')]();var _0x2329f2;if(_0x496ea2[_0x67c7('0x3a')][_0x67c7('0x58')]){_0x2329f2=as['parseSearch'](_0x496ea2[_0x67c7('0x3a')][_0x67c7('0x58')]);var _0xeb41ec=_0x2329f2[_0x67c7('0x59')];for(var _0x276df6=0x0;_0x276df6<_0x2329f2[_0x67c7('0x5a')][_0x67c7('0x40')];_0x276df6++){var _0x2d612e=_0x2329f2[_0x67c7('0x5a')][_0x276df6];var _0x17f7c2='i';var _0x3b4ea4=_[_0x67c7('0x5b')](_0x29f0e1,[_0x67c7('0x2b'),_0x2d612e['field']]);if(!_0x3b4ea4){switch(_0x2d612e[_0x67c7('0x47')]){case _0x67c7('0x5c'):if(_0x2d612e[_0x67c7('0x5d')]==0x1){_0x2e4730['having']('`'+_0x2d612e[_0x67c7('0x47')]+_0x67c7('0x5e'));}else{_0x2e4730[_0x67c7('0x5f')]('`'+_0x2d612e['field']+_0x67c7('0x60'));}break;case _0x67c7('0x61'):if(_0x2d612e[_0x67c7('0x62')]===_0x67c7('0x63')){if(_0x2d612e[_0x67c7('0x5d')][_0x67c7('0x64')]('\x20')[_0x67c7('0x40')]>0x1){_0x7defc5[_0xeb41ec]('MATCH\x20(c.firstName,\x20c.lastName,\x20c.phone,\x20c.mobile,\x20c.fax,\x20c.email)\x20AGAINST\x20(?\x20IN\x20BOOLEAN\x20MODE)',qs['getFullTextValue'](_0x2d612e[_0x67c7('0x5d')]),null);}else{var _0x43ca62='%'+_0x2d612e[_0x67c7('0x5d')]+'%';_0x7defc5[_0xeb41ec](_0x67c7('0x65'),_0x43ca62,_0x43ca62,_0x43ca62);}}else{_0x3b4ea4=_[_0x67c7('0x5b')](_0x29f0e1,[_0x67c7('0x2b'),_0x67c7('0x66')]);_0x2d612e[_0x67c7('0x47')]=_0x67c7('0x66');_0x4cca72=as[_0x67c7('0x67')](_0x17f7c2,_0x3b4ea4[_0x67c7('0x37')],_0x2d612e);_0x7defc5[_0xeb41ec](_0x4cca72[_0x67c7('0x68')],_0x4cca72['value'][_0x67c7('0x69')],_0x4cca72['value']['end']);}break;case _0x67c7('0x6a'):var _0x18096f=_0x2d612e[_0x67c7('0x5d')][_0x67c7('0x64')](',')[_0x67c7('0x33')](function(_0x220f67){return Number(_0x220f67);});_0x18096f[_0x67c7('0x6b')](function(_0x2948b6){_0x5e402f['or'](_0x67c7('0x6c'),'%,'+_0x2948b6+',%');});_0x497ab9=_[_0x67c7('0x6d')](_0x497ab9,_0x18096f);break;case _0x67c7('0x6e'):if(_0x2d612e[_0x67c7('0x62')]===_0x67c7('0x63')){_0x7defc5[_0xeb41ec](_0x67c7('0x6f'),'%'+_0x2d612e[_0x67c7('0x5d')]+'%',null);}else{_0x3b4ea4=_[_0x67c7('0x5b')](_0x29f0e1,['name','UserId']);_0x2d612e[_0x67c7('0x47')]='UserId';_0x4cca72=as[_0x67c7('0x67')](_0x17f7c2,_0x3b4ea4['type'],_0x2d612e);_0x7defc5[_0xeb41ec](_0x4cca72[_0x67c7('0x68')],_0x4cca72['value'][_0x67c7('0x69')],_0x4cca72[_0x67c7('0x5d')]['end']);}break;case _0x67c7('0x70'):_0x4cca72=as['buildExpression']('me',null,_0x2d612e);_0x7defc5[_0xeb41ec](_0x4cca72[_0x67c7('0x68')],_0x4cca72[_0x67c7('0x5d')][_0x67c7('0x69')],_0x4cca72[_0x67c7('0x5d')][_0x67c7('0x28')]);break;}}else{var _0x4cca72=as[_0x67c7('0x67')](_0x17f7c2,_0x3b4ea4[_0x67c7('0x37')],_0x2d612e);_0x7defc5[_0xeb41ec](_0x4cca72[_0x67c7('0x68')],_0x4cca72[_0x67c7('0x5d')][_0x67c7('0x69')],_0x4cca72[_0x67c7('0x5d')][_0x67c7('0x28')]);}}}else{var _0x22d4b6=_(_0x496ea2[_0x67c7('0x3a')])[_0x67c7('0x39')]()[_0x67c7('0x33')](function(_0x69a858){return _[_0x67c7('0x71')](_0x29f0e1,['name',_0x69a858])?_0x69a858:undefined;})['compact']()[_0x67c7('0x5d')]();if(!_['isEmpty'](_0x22d4b6)){_0x22d4b6['forEach'](function(_0x433723){if(_0x433723===_0x67c7('0x72')){_0x2e4730[_0x67c7('0x45')](_0x67c7('0x73'),[][_0x67c7('0x74')](_0x496ea2[_0x67c7('0x3a')][_0x433723]));}else if(_0x433723===_0x67c7('0x75')){var _0x3b9ef2=JSON[_0x67c7('0x76')](_0x496ea2[_0x67c7('0x3a')][_0x433723])[_0x67c7('0x77')];var _0x2edf1b=JSON[_0x67c7('0x76')](_0x496ea2[_0x67c7('0x3a')][_0x433723])['$lte'];_0x2e4730[_0x67c7('0x45')](_0x67c7('0x78'),_0x3b9ef2,_0x2edf1b);}else{if(_0x496ea2[_0x67c7('0x3a')][_0x433723]===_0x67c7('0x79')){_0x2e4730['where']('i.'+_0x433723+'\x20IS\x20NULL');}else{_0x2e4730[_0x67c7('0x45')]('i.'+_0x433723+_0x67c7('0x7a'),_0x496ea2[_0x67c7('0x3a')][_0x433723]);}}});}if(_0x496ea2[_0x67c7('0x3a')][_0x67c7('0x7b')]){if(_0x496ea2[_0x67c7('0x3a')]['read']==0x1){_0x2e4730['having'](_0x67c7('0x7c'));}else{_0x2e4730['having']('`unreadMessages`\x20>\x200');}}if(_0x496ea2[_0x67c7('0x3a')][_0x67c7('0x7d')]){_0x497ab9=_[_0x67c7('0x7e')](_0x496ea2['query']['tag'])?_0x496ea2[_0x67c7('0x3a')][_0x67c7('0x7d')]:new Array(_0x496ea2[_0x67c7('0x3a')][_0x67c7('0x7d')]);_0x497ab9[_0x67c7('0x6b')](function(_0x5769b5){_0x5e402f['or'](_0x67c7('0x6c'),'%,'+_0x5769b5+',%');});}if(_0x496ea2[_0x67c7('0x3a')][_0x67c7('0x7f')]){var _0x40a3e2=_0x496ea2['query'][_0x67c7('0x7f')][_0x67c7('0x80')]('\x5c','\x5c\x5c')[_0x67c7('0x80')](/'/g,'\x27\x27');if(qs['isNumeric'](_0x40a3e2)){_0x7defc5['or'](_0x67c7('0x81'),_0x40a3e2+'%');}else{_0x7defc5['or']('MATCH\x20(me.body)\x20AGAINST\x20(?\x20IN\x20BOOLEAN\x20MODE)',qs['getFullTextValue'](_0x40a3e2))['or'](_0x67c7('0x82'),_0x40a3e2+'%')['or'](_0x67c7('0x83'),_0x40a3e2+'%');}}}_0x2e4730[_0x67c7('0x45')](_0x7defc5);_0x2e4730[_0x67c7('0x84')](_0x67c7('0x85'));var _0x2b9f82={'type':db[_0x67c7('0x86')][_0x67c7('0x87')][_0x67c7('0x88')],'raw':!![]};var _0x2aef43=_0x2e4730[_0x67c7('0x89')]();_0x2aef43[_0x67c7('0x47')]('i.id');_0x2aef43[_0x67c7('0x47')]('SUM(me.read\x20=\x200\x20AND\x20me.direction\x20=\x20\x27in\x27)',_0x67c7('0x5c'));if(_0x59a49f[_0x67c7('0x43')]){_0x59a49f[_0x67c7('0x43')][_0x67c7('0x6b')](function(_0x3af816){var _0x1d769c=_0x3af816[0x0]===_0x67c7('0x8a')?_0x3af816[0x0]:'i.'+_0x3af816[0x0];_0x2e4730[_0x67c7('0x43')](_0x1d769c,_0x3af816[0x1]===_0x67c7('0x8b')?![]:!![]);});}if(!_['isEmpty'](_0x497ab9)){_0x2e4730[_0x67c7('0x5f')](_0x5e402f);_0x2aef43[_0x67c7('0x45')](_0x67c7('0x8c'),_0x497ab9);}BPromise['resolve']()[_0x67c7('0x26')](function(){if(!_0x2329f2){if(_0x496ea2[_0x67c7('0x3a')][_0x67c7('0x72')])return;_0x2aef43[_0x67c7('0x45')]('i.OpenchannelAccountId\x20IS\x20NOT\x20NULL');_0x2e4730[_0x67c7('0x45')](_0x67c7('0x8d'));return;}if(_0x496ea2['user'][_0x67c7('0x8e')]!==_0x67c7('0x8f'))return;return _0x496ea2[_0x67c7('0x90')]['getOpenchannelAccounts']({'attributes':['id'],'raw':!![]})['then'](function(_0x34b0d1){if(_['isEmpty'](_0x34b0d1)){_0x2aef43[_0x67c7('0x45')]('i.OpenchannelAccountId\x20IS\x20NULL');_0x2e4730['where'](_0x67c7('0x91'));}else{_0x2aef43[_0x67c7('0x45')](_0x67c7('0x73'),_[_0x67c7('0x33')](_0x34b0d1,'id'));_0x2e4730[_0x67c7('0x45')](_0x67c7('0x73'),_['map'](_0x34b0d1,'id'));}});})[_0x67c7('0x26')](function(){if(_0x496ea2[_0x67c7('0x90')][_0x67c7('0x8e')]===_0x67c7('0x8f')&&!_0x2329f2&&!_0x496ea2[_0x67c7('0x3a')][_0x67c7('0x72')])return[];return db[_0x67c7('0x92')]['query'](_0x2aef43['toString'](),_0x2b9f82);})[_0x67c7('0x26')](function(_0x2f7893){_0x5b7813[_0x67c7('0x20')]=_0x2f7893[_0x67c7('0x40')];if(_0x5b7813['count']===0x0)return[];return db[_0x67c7('0x92')][_0x67c7('0x3a')](_0x1cc239['toString'](),_0x2b9f82)['then'](function(_0x375868){_0xdc954c=_['keyBy'](_0x375868,'id');_0x2b9f82=_[_0x67c7('0x93')](_0x2b9f82,{'model':db['OpenchannelInteraction'],'mapToModel':!![],'raw':!![],'nest':!![]});if(_0x496ea2['query']['fields']){_0x59a49f[_0x67c7('0x3e')][_0x67c7('0x6b')](function(_0xc18d86){_0x2e4730[_0x67c7('0x47')]('i.'+_0xc18d86);});}else{_0x2e4730[_0x67c7('0x47')]('SUM(me.read\x20=\x200\x20AND\x20me.direction\x20=\x20\x27in\x27)',_0x67c7('0x5c'));_0x2e4730['field'](_0x67c7('0x94'),_0x67c7('0x95'));_0x2e4730[_0x67c7('0x47')](_0x67c7('0x96'),_0x67c7('0x97'));_0x2e4730[_0x67c7('0x47')]('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','contactName');_0x2e4730[_0x67c7('0x47')]('i.*');_0x2e4730[_0x67c7('0x47')](_0x67c7('0x98'),_0x67c7('0x99'));_0x2e4730[_0x67c7('0x47')](_0x67c7('0x9a'),_0x67c7('0x9b'));_0x2e4730[_0x67c7('0x47')]('c.email',_0x67c7('0x9c'));_0x2e4730['field'](_0x67c7('0x9d'),_0x67c7('0x9e'));_0x2e4730[_0x67c7('0x47')](_0x67c7('0x9f'),_0x67c7('0xa0'));_0x2e4730[_0x67c7('0x47')](_0x67c7('0xa1'),'Contact.fax');_0x2e4730[_0x67c7('0x47')]('o.fullname','Owner.fullname');_0x2e4730['field'](_0x67c7('0xa2'),_0x67c7('0xa3'));_0x2e4730[_0x67c7('0x47')](_0x67c7('0xa4'),_0x67c7('0x2f'));}if(_0x59a49f[_0x67c7('0x1f')])_0x2e4730[_0x67c7('0x1f')](_0x59a49f['limit']);if(_0x59a49f[_0x67c7('0x1d')])_0x2e4730['offset'](_0x59a49f[_0x67c7('0x1d')]);return db[_0x67c7('0x92')][_0x67c7('0x3a')](_0x2e4730[_0x67c7('0xa5')](),_0x2b9f82);})[_0x67c7('0x26')](function(_0x552749){if(_0x552749[_0x67c7('0x40')]>0x0)_0x17d17e[_0x67c7('0x45')]('ui.OpenchannelInteractionId\x20IN\x20?',_[_0x67c7('0x33')](_0x552749,'id'));return db['sequelize'][_0x67c7('0x3a')](_0x17d17e['toString'](),_0x2b9f82)['then'](function(_0x1d1187){var _0x4c53b6=_[_0x67c7('0xa6')](_0x1d1187,_0x67c7('0xa7'));var _0x46e0b9=[];_0x552749[_0x67c7('0x6b')](function(_0x5ed7b3){_0x46e0b9[_0x67c7('0x30')](updateOpenchannelInteraction(_0x5ed7b3,_0xdc954c,_0x4c53b6));});return BPromise[_0x67c7('0xa8')](_0x46e0b9);});});})['then'](function(_0x45c118){_0x5b7813[_0x67c7('0xa9')]=_0x45c118;return _0x5b7813;})[_0x67c7('0x26')](respondWithFilteredResult(_0x191b06,_0x59a49f))[_0x67c7('0x31')](handleError(_0x191b06,null));};exports[_0x67c7('0xaa')]=function(_0x4f6fd4,_0x24bedb){var _0x16ecfa={};if(_0x4f6fd4[_0x67c7('0x3a')][_0x67c7('0x37')]&&_0x4f6fd4['query'][_0x67c7('0x37')]===_0x67c7('0x49')){_0x16ecfa[_0x67c7('0x49')]=_0x4f6fd4['params']['id'];}else{_0x16ecfa['id']=_0x4f6fd4[_0x67c7('0xab')]['id'];}var _0x2cf902={'raw':![],'where':_0x16ecfa},_0x427656={};_0x427656[_0x67c7('0x3d')]=_[_0x67c7('0x39')](db[_0x67c7('0x34')][_0x67c7('0x35')]);_0x427656[_0x67c7('0x3a')]=_[_0x67c7('0x39')](_0x4f6fd4[_0x67c7('0x3a')]);_0x427656[_0x67c7('0x3b')]=_[_0x67c7('0x3c')](_0x427656[_0x67c7('0x3d')],_0x427656[_0x67c7('0x3a')]);_0x2cf902[_0x67c7('0x3e')]=_[_0x67c7('0x3c')](_0x427656['model'],qs[_0x67c7('0x3f')](_0x4f6fd4[_0x67c7('0x3a')]['fields']));_0x2cf902[_0x67c7('0x3e')]=_0x2cf902['attributes'][_0x67c7('0x40')]?_0x2cf902[_0x67c7('0x3e')]:_0x427656[_0x67c7('0x3d')];if(_0x4f6fd4['query'][_0x67c7('0xac')]){_0x2cf902['include']=[{'all':!![]}];}_0x2cf902=_[_0x67c7('0x93')]({},_0x2cf902,_0x4f6fd4[_0x67c7('0xad')]);return db[_0x67c7('0x34')][_0x67c7('0x5b')](_0x2cf902)[_0x67c7('0x26')](handleEntityNotFound(_0x24bedb,null))[_0x67c7('0x26')](respondWithResult(_0x24bedb,null))[_0x67c7('0x31')](handleError(_0x24bedb,null));};exports['create']=function(_0x3092b,_0x2b53d8){return db[_0x67c7('0x34')][_0x67c7('0xae')](_0x3092b['body'],{})[_0x67c7('0x26')](respondWithResult(_0x2b53d8,0xc9))[_0x67c7('0x31')](handleError(_0x2b53d8,null));};exports[_0x67c7('0xaf')]=function(_0x5b33a6,_0x4f1e8b){if(_0x5b33a6['body']['id']){delete _0x5b33a6[_0x67c7('0x70')]['id'];}return db[_0x67c7('0x34')][_0x67c7('0x5b')]({'where':{'id':_0x5b33a6[_0x67c7('0xab')]['id']}})[_0x67c7('0x26')](handleEntityNotFound(_0x4f1e8b,null))[_0x67c7('0x26')](saveUpdates(_0x5b33a6[_0x67c7('0x70')],null))[_0x67c7('0x26')](respondWithResult(_0x4f1e8b,null))[_0x67c7('0x31')](handleError(_0x4f1e8b,null));};exports[_0x67c7('0x27')]=function(_0x4d312d,_0x39689f){return db[_0x67c7('0x34')][_0x67c7('0x5b')]({'where':{'id':_0x4d312d[_0x67c7('0xab')]['id']}})[_0x67c7('0x26')](handleEntityNotFound(_0x39689f,null))[_0x67c7('0x26')](removeEntity(_0x39689f,null))[_0x67c7('0x31')](handleError(_0x39689f,null));};exports[_0x67c7('0xb0')]=function(_0x5544d3,_0x565466){return db[_0x67c7('0x34')]['describe']()['then'](respondWithResult(_0x565466,null))[_0x67c7('0x31')](handleError(_0x565466,null));};exports[_0x67c7('0xb1')]=function(_0x2e8568,_0x239030,_0x37a11a){return db[_0x67c7('0xb2')][_0x67c7('0x5b')]({'where':{'id':_0x2e8568[_0x67c7('0xab')]['id']}})['then'](handleEntityNotFound(_0x239030,null))['then'](function(_0x4e6984){if(_0x4e6984){return _0x4e6984[_0x67c7('0xb1')](_0x2e8568[_0x67c7('0x70')][_0x67c7('0xb3')],_[_0x67c7('0xb4')](_0x2e8568[_0x67c7('0x70')],[_0x67c7('0xb3'),'id'])||{});}})['then'](respondWithResult(_0x239030,null))[_0x67c7('0x31')](handleError(_0x239030,null));};exports[_0x67c7('0xb5')]=function(_0x4dc11f,_0x16e771,_0x4de982){var _0x339ec6={'raw':![],'where':{}};var _0x492902={};var _0x371fc5={'count':0x0,'rows':[]};return db[_0x67c7('0x34')]['findOne']({'where':{'id':_0x4dc11f[_0x67c7('0xab')]['id']}})[_0x67c7('0x26')](handleEntityNotFound(_0x16e771,null))[_0x67c7('0x26')](function(_0x3c1ef5){if(_0x3c1ef5){_0x492902['model']=_[_0x67c7('0x39')](db[_0x67c7('0xb2')]['rawAttributes']);_0x492902['query']=_[_0x67c7('0x39')](_0x4dc11f[_0x67c7('0x3a')]);_0x492902[_0x67c7('0x3b')]=_[_0x67c7('0x3c')](_0x492902['model'],_0x492902[_0x67c7('0x3a')]);_0x339ec6[_0x67c7('0x3e')]=_[_0x67c7('0x3c')](_0x492902[_0x67c7('0x3d')],qs[_0x67c7('0x3f')](_0x4dc11f['query'][_0x67c7('0x3f')]));_0x339ec6[_0x67c7('0x3e')]=_0x339ec6[_0x67c7('0x3e')][_0x67c7('0x40')]?_0x339ec6['attributes']:_0x492902['model'];if(!_0x4dc11f[_0x67c7('0x3a')][_0x67c7('0x41')](_0x67c7('0x42'))){_0x339ec6['limit']=qs['limit'](_0x4dc11f['query'][_0x67c7('0x1f')]);_0x339ec6[_0x67c7('0x1d')]=qs[_0x67c7('0x1d')](_0x4dc11f['query']['offset']);}_0x339ec6['order']=qs[_0x67c7('0x44')](_0x4dc11f[_0x67c7('0x3a')][_0x67c7('0x44')]);_0x339ec6[_0x67c7('0x45')]=qs[_0x67c7('0x3b')](_['pick'](_0x4dc11f[_0x67c7('0x3a')],_0x492902[_0x67c7('0x3b')]));_0x339ec6[_0x67c7('0x45')][_0x67c7('0xa7')]=_0x3c1ef5['id'];if(_0x4dc11f[_0x67c7('0x3a')][_0x67c7('0x7f')]){_0x339ec6[_0x67c7('0x45')]=_[_0x67c7('0x93')](_0x339ec6[_0x67c7('0x45')],{'$or':_[_0x67c7('0x33')](_0x339ec6[_0x67c7('0x3e')],function(_0xefd198){var _0x599b7a={};_0x599b7a[_0xefd198]={'$like':'%'+_0x4dc11f[_0x67c7('0x3a')][_0x67c7('0x7f')]+'%'};return _0x599b7a;})});}if(_0x4dc11f['query'][_0x67c7('0x77')]){var _0xc8c3e8=_0x4dc11f[_0x67c7('0x3a')]['$gte'][_0x67c7('0x64')](',');var _0x4ad64b={};_0x4ad64b[_0xc8c3e8[0x0]]={'$gte':moment(_0xc8c3e8[0x1])['format'](_0x67c7('0xb6'))};_0x339ec6[_0x67c7('0x45')]=_[_0x67c7('0x93')](_0x339ec6[_0x67c7('0x45')],_0x4ad64b);}_0x339ec6=_[_0x67c7('0x93')]({},_0x339ec6,_0x4dc11f[_0x67c7('0xad')]);return db[_0x67c7('0xb2')][_0x67c7('0x20')]({'where':_0x339ec6['where']})[_0x67c7('0x26')](function(_0x28d8fb){_0x371fc5[_0x67c7('0x20')]=_0x28d8fb;if(_0x4dc11f[_0x67c7('0x3a')][_0x67c7('0xac')]){_0x339ec6[_0x67c7('0xb7')]=[{'all':!![]}];}return db[_0x67c7('0xb2')]['findAll'](_0x339ec6);})[_0x67c7('0x26')](function(_0x12b420){_0x371fc5[_0x67c7('0xa9')]=_0x12b420;return _0x371fc5;});}})[_0x67c7('0x26')](respondWithFilteredResult(_0x16e771,_0x339ec6))[_0x67c7('0x31')](handleError(_0x16e771,null));};exports[_0x67c7('0xb8')]=function(_0x22f88b,_0x583e55,_0x2871fb){return db['OpenchannelInteraction'][_0x67c7('0x5b')]({'where':{'id':_0x22f88b[_0x67c7('0xab')]['id']}})[_0x67c7('0x26')](handleEntityNotFound(_0x583e55,null))[_0x67c7('0x26')](function(_0x50c3fb){if(_0x50c3fb){return _0x50c3fb[_0x67c7('0xb9')](_0x22f88b[_0x67c7('0x70')][_0x67c7('0xb3')],_[_0x67c7('0xb4')](_0x22f88b[_0x67c7('0x70')],[_0x67c7('0xb3'),'id'])||{})[_0x67c7('0xba')](function(){return db[_0x67c7('0x6a')][_0x67c7('0xbb')]({'attributes':['id',_0x67c7('0x2b'),_0x67c7('0x48')],'where':{'id':_0x22f88b[_0x67c7('0x70')][_0x67c7('0xb3')]}});})[_0x67c7('0x26')](function(_0x24d841){socket[_0x67c7('0xbc')](_0x67c7('0xbd'),{'id':Number(_0x22f88b[_0x67c7('0xab')]['id']),'tags':_0x24d841||[]});return{'id':Number(_0x22f88b[_0x67c7('0xab')]['id']),'tags':_0x24d841||[]};});}})['then'](respondWithResult(_0x583e55,null))['catch'](handleError(_0x583e55,null));};exports[_0x67c7('0xbe')]=function(_0x1adab0,_0x30ed2f,_0xa99a5c){return db['OpenchannelInteraction'][_0x67c7('0x5b')]({'where':{'id':_0x1adab0[_0x67c7('0xab')]['id']}})[_0x67c7('0x26')](handleEntityNotFound(_0x30ed2f,null))[_0x67c7('0x26')](function(_0x4a48a7){if(_0x4a48a7){return _0x4a48a7[_0x67c7('0xbe')](_0x1adab0[_0x67c7('0x3a')][_0x67c7('0xb3')]);}})[_0x67c7('0x26')](respondWithStatusCode(_0x30ed2f,null))[_0x67c7('0x31')](handleError(_0x30ed2f,null));};exports[_0x67c7('0xbf')]=function(_0x1757e0,_0xe0f8a4){var _0x18fae6=moment()[_0x67c7('0xc0')]()[_0x67c7('0xa5')]();var _0x1e23c6=path[_0x67c7('0xc1')](config[_0x67c7('0xc2')],_0x67c7('0xc3'),_0x67c7('0xc4'),'tmp');var _0x3ff9a9=path[_0x67c7('0xc1')](config['root'],_0x67c7('0xc3'),_0x67c7('0xc4'),_0x67c7('0xc5'));var _0x473037=path[_0x67c7('0xc1')](_0x1e23c6,_0x18fae6);var _0x377bf5=util[_0x67c7('0xc6')](_0x67c7('0xc7'),_0x1757e0[_0x67c7('0xab')]['id'],_0x18fae6);var _0x10610b=path['join'](_0x1e23c6,_0x377bf5);var _0x14ff62=[];_0x14ff62[_0x67c7('0x30')]({'model':db['User'],'as':_0x67c7('0x6e'),'attributes':['id','fullname'],'raw':!![]});_0x14ff62[_0x67c7('0x30')]({'model':db['CmContact'],'as':'Contact','attributes':['id',_0x67c7('0xc8'),_0x67c7('0xc9')],'raw':!![]});if(_0x1757e0[_0x67c7('0x3a')][_0x67c7('0xc5')]){_0x14ff62[_0x67c7('0x30')]({'model':db[_0x67c7('0xca')],'as':_0x67c7('0xca'),'raw':!![]});}var _0x3dc29b=[{'model':db[_0x67c7('0xb2')],'as':_0x67c7('0xcb'),'attributes':['id',_0x67c7('0x70'),_0x67c7('0x75'),_0x67c7('0xcc'),'secret',_0x67c7('0x7b')],'include':_0x14ff62}];_0x3dc29b[_0x67c7('0x30')]({'model':db[_0x67c7('0xcd')],'as':_0x67c7('0xce'),'attributes':['id',_0x67c7('0x2b')]});_0x3dc29b[_0x67c7('0x30')]({'model':db[_0x67c7('0x6e')],'as':'Owner','attributes':['id',_0x67c7('0x2d')]});return db[_0x67c7('0x34')][_0x67c7('0x5b')]({'where':{'id':_0x1757e0[_0x67c7('0xab')]['id']},'include':_0x3dc29b})[_0x67c7('0x26')](handleEntityNotFound(_0xe0f8a4,null))['then'](function(_0x24f690){if(_0x24f690){var _0x3fa54e=_0x24f690[_0x67c7('0xcf')]({'plain':!![]});fs[_0x67c7('0xd0')](_0x473037);var _0x161458={'channel':_0x67c7('0xd1'),'account':_0x3fa54e[_0x67c7('0xce')][_0x67c7('0x2b')],'agent':_0x3fa54e[_0x67c7('0xd2')]?_0x3fa54e[_0x67c7('0xd2')][_0x67c7('0x2d')]:_0x67c7('0xd3'),'createdAt':moment(_0x3fa54e[_0x67c7('0x75')])['format'](_0x67c7('0xb6'))['toString'](),'closedAt':_0x3fa54e[_0x67c7('0xd4')]?moment(_0x3fa54e[_0x67c7('0xd5')])[_0x67c7('0xc6')](_0x67c7('0xb6'))[_0x67c7('0xa5')]():'','disposition':_0x3fa54e[_0x67c7('0xd6')],'visibility':_0x3fa54e['threadId']?_0x67c7('0xd7'):_0x67c7('0xd8'),'messages':_(_0x3fa54e[_0x67c7('0xcb')])['filter']({'secret':![]})['map'](function(_0x3d6896){if(_0x3d6896['Attachment']){var _0x208b4a=path[_0x67c7('0xc1')](_0x3ff9a9,_0x3d6896[_0x67c7('0xca')]['basename']);if(fs['existsSync'](_0x208b4a)){fs[_0x67c7('0xd9')](_0x208b4a)[_0x67c7('0xda')](fs[_0x67c7('0xdb')](path[_0x67c7('0xc1')](_0x473037,_0x3d6896['Attachment'][_0x67c7('0xdc')])));}}return{'date':moment(_0x3d6896['createdAt'])['format'](_0x67c7('0xb6'))[_0x67c7('0xa5')](),'sender':_0x3d6896[_0x67c7('0xcc')]===_0x67c7('0xdd')?_0x3d6896[_0x67c7('0x6e')]?_0x3d6896[_0x67c7('0x6e')][_0x67c7('0x2d')]:_0x67c7('0xde'):_0x3d6896[_0x67c7('0x61')][_0x67c7('0xc8')]+(_0x3d6896['Contact'][_0x67c7('0xc9')]?'\x20'+_0x3d6896[_0x67c7('0x61')][_0x67c7('0xc9')]:''),'body':_0x3d6896[_0x67c7('0xca')]?_0x3d6896['Attachment']['basename']:_0x3d6896[_0x67c7('0x70')],'direction':_0x3d6896['direction']===_0x67c7('0xdd')?'A':'C','secret':_0x3d6896['secret'],'read':_0x3d6896['read'],'attachment':_0x3d6896[_0x67c7('0xca')]};})[_0x67c7('0x5d')]()};return ejs[_0x67c7('0xdf')](path['join'](config['root'],_0x67c7('0xc3'),_0x67c7('0xe0'),_0x67c7('0xe1')),{'interaction':_0x161458})[_0x67c7('0x26')](function(_0x1e26c8){var _0x5aec3b=path[_0x67c7('0xc1')](_0x473037,_0x67c7('0xe2')+_0x3fa54e['id']+'-'+_0x18fae6+'.pdf');var _0x27853b={'path':_0x5aec3b,'channel':'Openchannel','interactionId':_0x3fa54e['id']};return pdf[_0x67c7('0xe3')](_0x1e26c8,_0x27853b);})[_0x67c7('0x26')](function(){return new BPromise(function(_0x214b23,_0x398a81){zipdir(_0x473037,{'saveTo':_0x10610b},function(_0x5a0e29,_0xaf60c5){if(_0x5a0e29)return _0x398a81(_0x5a0e29);return _0x214b23(_0xaf60c5);});})['then'](function(){return new BPromise(function(_0xef206,_0x1bc0e7){rimraf(_0x473037,function(_0x1db040){if(_0x1db040)_0x1bc0e7(_0x1db040);return _0xef206();});});})[_0x67c7('0x26')](function(){return _0xe0f8a4[_0x67c7('0xbf')](_0x10610b,_0x377bf5,function(_0x1b00f9){if(_0x1b00f9){console['log']('err',_0x1b00f9);}else{fs[_0x67c7('0xe4')](_0x10610b);}});});});}else{return _0xe0f8a4['sendStatus'](0xc8);}})[_0x67c7('0x31')](handleError(_0xe0f8a4,null));};
\ No newline at end of file
+var _0x0274=['join','transcript-%d-%s.zip','fullname','CmContact','firstName','lastName','Attachment','Messages','createdAt','direction','Account','Owner','get','N.A.','closedAt','disposition','Public','Private','basename','createReadStream','pipe','createWriteStream','out','secret','downloadInteraction.ejs','.pdf','Openchannel','createPdfFromHTML','log','err','rimraf','zip-dir','fast-json-patch','moment','bluebird','mustache','util','sox','to-csv','ejs','lodash','squel','jsforce','desk.js','querystring','papaparse','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../components/export/pdf','../../config/license/hardware','../../config/logger','api','../../config/environment','../../config/license/util','../../mysqldb','redis','defaults','socket.io-emitter','./openchannelInteraction.socket','register','status','end','offset','limit','undefined','count','Content-Range','json','apply','reject','save','update','then','sendStatus','error','stack','name','Users','map','TagIds','Tags','split','forEach','push','catch','index','OpenchannelInteraction','rawAttributes','fieldName','key','model','query','keys','attributes','intersection','fields','length','hasOwnProperty','order','sort','pick','filters','field','from','tools_tags','select','u.id','u.fullname','user_has_openchannel_interactions','left_join','u.id\x20=\x20ui.UserId','openchannel_interactions','cm_contacts','c.id\x20=\x20i.ContactId\x20AND\x20c.deletedAt\x20IS\x20NULL','users','o.id\x20=\x20i.UserId','openchannel_accounts','a.id\x20=\x20i.OpenchannelAccountId','openchannel_messages','openchannel_interaction_has_tags','it.OpenchannelInteractionId\x20=\x20i.id','expr','search','sqlOperator','conditions','value','having','`\x20=\x200','`\x20>\x200','Contact','$substring','MATCH\x20(c.firstName,\x20c.lastName,\x20c.phone,\x20c.mobile,\x20c.fax,\x20c.email)\x20AGAINST\x20(?\x20IN\x20BOOLEAN\x20MODE)','getFullTextValue','c.firstName\x20LIKE\x20?\x20OR\x20c.lastName\x20LIKE\x20?\x20OR\x20c.email\x20LIKE\x20?','find','ContactId','buildExpression','type','text','start','Tag','CONCAT(\x27,\x27,\x20`TagIds`,\x20\x27,\x27)\x20LIKE\x20?','union','User','operator','UserId','body','some','compact','isEmpty','OpenchannelAccountId','where','i.OpenchannelAccountId\x20IN\x20?','concat','parse','i.createdAt\x20BETWEEN\x20?\x20AND\x20?','null','\x20IS\x20NULL','\x20=\x20?','read','tag','isArray','filter','replace','MATCH\x20(me.body)\x20AGAINST\x20(?\x20IN\x20BOOLEAN\x20MODE)','CONCAT(c.firstName,\x20\x27\x20\x27,\x20c.lastName)\x20LIKE\x20?','group','Sequelize','QueryTypes','SELECT','clone','i.id','SUM(me.read\x20=\x200\x20AND\x20me.direction\x20=\x20\x27in\x27)','unreadMessages','contactName','DESC','t.id\x20IN\x20?','resolve','i.OpenchannelAccountId\x20IS\x20NOT\x20NULL','role','agent','user','i.OpenchannelAccountId\x20IS\x20NULL','toString','keyBy','merge','a.key','Account.key','a.mandatoryDisposition','Account.mandatoryDisposition','c.lastName','Contact.lastName','Contact.email','c.phone','Contact.phone','c.mobile','Contact.mobile','c.fax','Contact.fax','o.fullname','o.internal','sequelize','ui.OpenchannelInteractionId\x20IN\x20?','groupBy','OpenchannelInteractionId','all','rows','show','params','includeAll','include','options','create','destroy','describe','addMessage','OpenchannelMessage','ids','omit','getMessages','findOne','nolimit','$gte','format','YYYY-MM-DD\x20HH:mm:ss','findAll','addTags','setTags','spread','color','emit','removeTags','download','unix','root','server','files','attachments'];(function(_0x2476ad,_0x161b25){var _0x3dcc3c=function(_0x547bd0){while(--_0x547bd0){_0x2476ad['push'](_0x2476ad['shift']());}};_0x3dcc3c(++_0x161b25);}(_0x0274,0x10d));var _0x4027=function(_0x4f7afd,_0x4afa83){_0x4f7afd=_0x4f7afd-0x0;var _0xcf0138=_0x0274[_0x4f7afd];return _0xcf0138;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x4027('0x0'));var zipdir=require(_0x4027('0x1'));var jsonpatch=require(_0x4027('0x2'));var rp=require('request-promise');var moment=require(_0x4027('0x3'));var BPromise=require(_0x4027('0x4'));var Mustache=require(_0x4027('0x5'));var util=require(_0x4027('0x6'));var path=require('path');var sox=require(_0x4027('0x7'));var csv=require(_0x4027('0x8'));var ejs=require(_0x4027('0x9'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x4027('0xa'));var squel=require(_0x4027('0xb'));var crypto=require('crypto');var jsforce=require(_0x4027('0xc'));var deskjs=require(_0x4027('0xd'));var toCsv=require(_0x4027('0x8'));var querystring=require(_0x4027('0xe'));var Papa=require(_0x4027('0xf'));var Redis=require('ioredis');var authService=require(_0x4027('0x10'));var qs=require(_0x4027('0x11'));var as=require(_0x4027('0x12'));var pdf=require(_0x4027('0x13'));var hardwareService=require(_0x4027('0x14'));var logger=require(_0x4027('0x15'))(_0x4027('0x16'));var utils=require('../../config/utils');var config=require(_0x4027('0x17'));var licenseUtil=require(_0x4027('0x18'));var db=require(_0x4027('0x19'))['db'];config[_0x4027('0x1a')]=_[_0x4027('0x1b')](config[_0x4027('0x1a')],{'host':'localhost','port':0x18eb});var socket=require(_0x4027('0x1c'))(new Redis(config[_0x4027('0x1a')]));require(_0x4027('0x1d'))[_0x4027('0x1e')](socket);function respondWithStatusCode(_0x233cf7,_0x3643a8){_0x3643a8=_0x3643a8||0xcc;return function(_0x2771fb){if(_0x2771fb){return _0x233cf7['sendStatus'](_0x3643a8);}return _0x233cf7[_0x4027('0x1f')](_0x3643a8)[_0x4027('0x20')]();};}function respondWithResult(_0x375a17,_0x497e5e){_0x497e5e=_0x497e5e||0xc8;return function(_0x225919){if(_0x225919){return _0x375a17['status'](_0x497e5e)['json'](_0x225919);}};}function respondWithFilteredResult(_0x2856a4,_0x487343){return function(_0x71d4fa){if(_0x71d4fa){var _0x4057bf=typeof _0x487343[_0x4027('0x21')]==='undefined'&&typeof _0x487343[_0x4027('0x22')]===_0x4027('0x23');var _0x38196a=_0x71d4fa['count'];var _0x34d7c2=_0x4057bf?0x0:_0x487343[_0x4027('0x21')];var _0x5e87ed=_0x4057bf?_0x71d4fa[_0x4027('0x24')]:_0x487343[_0x4027('0x21')]+_0x487343[_0x4027('0x22')];var _0x597c4d;if(_0x5e87ed>=_0x38196a){_0x5e87ed=_0x38196a;_0x597c4d=0xc8;}else{_0x597c4d=0xce;}_0x2856a4[_0x4027('0x1f')](_0x597c4d);return _0x2856a4['set'](_0x4027('0x25'),_0x34d7c2+'-'+_0x5e87ed+'/'+_0x38196a)[_0x4027('0x26')](_0x71d4fa);}return null;};}function patchUpdates(_0x530c34){return function(_0x19647b){try{jsonpatch[_0x4027('0x27')](_0x19647b,_0x530c34,!![]);}catch(_0x1be59c){return BPromise[_0x4027('0x28')](_0x1be59c);}return _0x19647b[_0x4027('0x29')]();};}function saveUpdates(_0x2faa9c,_0x4ed75a){return function(_0xbb5825){if(_0xbb5825){return _0xbb5825[_0x4027('0x2a')](_0x2faa9c)[_0x4027('0x2b')](function(_0x5293f7){return _0x5293f7;});}return null;};}function removeEntity(_0x36d3d6,_0x47120e){return function(_0x3304a1){if(_0x3304a1){return _0x3304a1['destroy']()[_0x4027('0x2b')](function(){_0x36d3d6[_0x4027('0x1f')](0xcc)['end']();});}};}function handleEntityNotFound(_0x181cce,_0x5ae221){return function(_0x3e6f72){if(!_0x3e6f72){_0x181cce[_0x4027('0x2c')](0x194);}return _0x3e6f72;};}function handleError(_0x1ff202,_0x5b895b){_0x5b895b=_0x5b895b||0x1f4;return function(_0x2bf861){logger[_0x4027('0x2d')](_0x2bf861[_0x4027('0x2e')]);if(_0x2bf861[_0x4027('0x2f')]){delete _0x2bf861[_0x4027('0x2f')];}_0x1ff202[_0x4027('0x1f')](_0x5b895b)['send'](_0x2bf861);};}function getInteractionUsers(_0x223cec,_0x4351e3){return new BPromise(function(_0x4a2e7d,_0x49993a){try{if(_0x4351e3[_0x223cec['id']]){_0x223cec[_0x4027('0x30')]=_[_0x4027('0x31')](_0x4351e3[_0x223cec['id']],function(_0x1677f1){return{'id':_0x1677f1['id'],'fullname':_0x1677f1['fullname']};});}}catch(_0x2a2d10){_0x49993a(_0x2a2d10);}_0x4a2e7d(_0x223cec);});}function getInteractionTags(_0x574d1c,_0x1878c9){return new BPromise(function(_0x445212,_0x56623a){try{if(_0x574d1c[_0x4027('0x32')]){_0x574d1c[_0x4027('0x33')]=[];_0x574d1c['TagIds'][_0x4027('0x34')](',')[_0x4027('0x35')](function(_0x239507){_0x574d1c[_0x4027('0x33')][_0x4027('0x36')](_0x1878c9[_0x239507]);});}delete _0x574d1c['TagIds'];}catch(_0x198ed9){_0x56623a(_0x198ed9);}_0x445212(_0x574d1c);});}function updateOpenchannelInteraction(_0x31b59e,_0x48ad53,_0x3675d1){return new BPromise(function(_0x2335c9,_0x3f7155){return getInteractionUsers(_0x31b59e,_0x3675d1)[_0x4027('0x2b')](function(_0x2f4a8f){return getInteractionTags(_0x2f4a8f,_0x48ad53);})[_0x4027('0x2b')](function(_0x1e39d9){_0x2335c9(_0x1e39d9);})[_0x4027('0x37')](function(_0x2dbe63){_0x3f7155(_0x2dbe63);});});}exports[_0x4027('0x38')]=function(_0x35504c,_0x3183a2){var _0x18b4c8={},_0x2cf046={},_0x4bd811={'count':0x0,'rows':[]};var _0x2ec5be=_[_0x4027('0x31')](db[_0x4027('0x39')][_0x4027('0x3a')],function(_0x2729d2){return{'name':_0x2729d2[_0x4027('0x3b')],'type':_0x2729d2['type'][_0x4027('0x3c')]};});_0x2cf046[_0x4027('0x3d')]=_[_0x4027('0x31')](_0x2ec5be,'name');_0x2cf046[_0x4027('0x3e')]=_[_0x4027('0x3f')](_0x35504c[_0x4027('0x3e')]);_0x2cf046['filters']=_['intersection'](_0x2cf046['model'],_0x2cf046[_0x4027('0x3e')]);_0x18b4c8[_0x4027('0x40')]=_[_0x4027('0x41')](_0x2cf046['model'],qs[_0x4027('0x42')](_0x35504c[_0x4027('0x3e')][_0x4027('0x42')]));_0x18b4c8[_0x4027('0x40')]=_0x18b4c8['attributes'][_0x4027('0x43')]?_0x18b4c8[_0x4027('0x40')]:_0x2cf046[_0x4027('0x3d')];if(!_0x35504c[_0x4027('0x3e')][_0x4027('0x44')]('nolimit')){_0x18b4c8[_0x4027('0x22')]=qs[_0x4027('0x22')](_0x35504c[_0x4027('0x3e')][_0x4027('0x22')]);_0x18b4c8[_0x4027('0x21')]=qs[_0x4027('0x21')](_0x35504c['query'][_0x4027('0x21')]);}_0x18b4c8[_0x4027('0x45')]=qs[_0x4027('0x46')](_0x35504c[_0x4027('0x3e')][_0x4027('0x46')]);_0x18b4c8['where']=qs['filters'](_[_0x4027('0x47')](_0x35504c['query'],_0x2cf046[_0x4027('0x48')]),_0x2ec5be);var _0x5a6100=[];var _0x5e6d9a=squel['select']()[_0x4027('0x49')]('id')[_0x4027('0x49')](_0x4027('0x2f'))['field']('color')[_0x4027('0x4a')](_0x4027('0x4b'));var _0x1fb632=squel[_0x4027('0x4c')]()[_0x4027('0x49')](_0x4027('0x4d'))[_0x4027('0x49')](_0x4027('0x4e'))[_0x4027('0x49')]('ui.OpenchannelInteractionId')[_0x4027('0x4a')](_0x4027('0x4f'),'ui')[_0x4027('0x50')]('users','u',_0x4027('0x51'));var _0x106c62=squel[_0x4027('0x4c')]()['from'](_0x4027('0x52'),'i')['left_join'](_0x4027('0x53'),'c',_0x4027('0x54'))[_0x4027('0x50')](_0x4027('0x55'),'o',_0x4027('0x56'))[_0x4027('0x50')](_0x4027('0x57'),'a',_0x4027('0x58'))[_0x4027('0x50')](_0x4027('0x59'),'me','me.OpenchannelInteractionId\x20=\x20i.id')[_0x4027('0x50')](_0x4027('0x5a'),'it',_0x4027('0x5b'))['left_join']('tools_tags','t','t.id\x20=\x20it.TagId');var _0x4a3a17=squel[_0x4027('0x5c')]();var _0x42aeef=[];var _0x5bf1c7=squel[_0x4027('0x5c')]();var _0x5b474e;if(_0x35504c[_0x4027('0x3e')][_0x4027('0x5d')]){_0x5b474e=as['parseSearch'](_0x35504c[_0x4027('0x3e')][_0x4027('0x5d')]);var _0x3f64af=_0x5b474e[_0x4027('0x5e')];for(var _0x4d0369=0x0;_0x4d0369<_0x5b474e[_0x4027('0x5f')][_0x4027('0x43')];_0x4d0369++){var _0x320f04=_0x5b474e[_0x4027('0x5f')][_0x4d0369];var _0x2f0ff8='i';var _0x57290a=_['find'](_0x2ec5be,[_0x4027('0x2f'),_0x320f04[_0x4027('0x49')]]);if(!_0x57290a){switch(_0x320f04[_0x4027('0x49')]){case'unreadMessages':if(_0x320f04[_0x4027('0x60')]==0x1){_0x106c62[_0x4027('0x61')]('`'+_0x320f04[_0x4027('0x49')]+_0x4027('0x62'));}else{_0x106c62[_0x4027('0x61')]('`'+_0x320f04['field']+_0x4027('0x63'));}break;case _0x4027('0x64'):if(_0x320f04['operator']===_0x4027('0x65')){if(_0x320f04[_0x4027('0x60')][_0x4027('0x34')]('\x20')['length']>0x1){_0x4a3a17[_0x3f64af](_0x4027('0x66'),qs[_0x4027('0x67')](_0x320f04['value']),null);}else{var _0x111dfd='%'+_0x320f04[_0x4027('0x60')]+'%';_0x4a3a17[_0x3f64af](_0x4027('0x68'),_0x111dfd,_0x111dfd,_0x111dfd);}}else{_0x57290a=_[_0x4027('0x69')](_0x2ec5be,[_0x4027('0x2f'),_0x4027('0x6a')]);_0x320f04[_0x4027('0x49')]='ContactId';_0x5edcb2=as[_0x4027('0x6b')](_0x2f0ff8,_0x57290a[_0x4027('0x6c')],_0x320f04);_0x4a3a17[_0x3f64af](_0x5edcb2[_0x4027('0x6d')],_0x5edcb2[_0x4027('0x60')][_0x4027('0x6e')],_0x5edcb2['value'][_0x4027('0x20')]);}break;case _0x4027('0x6f'):var _0x4dadb4=_0x320f04[_0x4027('0x60')][_0x4027('0x34')](',')[_0x4027('0x31')](function(_0x39b864){return Number(_0x39b864);});_0x4dadb4[_0x4027('0x35')](function(_0x3a68e4){_0x5bf1c7['or'](_0x4027('0x70'),'%,'+_0x3a68e4+',%');});_0x42aeef=_[_0x4027('0x71')](_0x42aeef,_0x4dadb4);break;case _0x4027('0x72'):if(_0x320f04[_0x4027('0x73')]===_0x4027('0x65')){_0x4a3a17[_0x3f64af]('CONCAT_WS(\x27\x20\x27,\x20o.name,\x20o.fullname)\x20LIKE\x20?','%'+_0x320f04[_0x4027('0x60')]+'%',null);}else{_0x57290a=_['find'](_0x2ec5be,[_0x4027('0x2f'),_0x4027('0x74')]);_0x320f04[_0x4027('0x49')]=_0x4027('0x74');_0x5edcb2=as[_0x4027('0x6b')](_0x2f0ff8,_0x57290a[_0x4027('0x6c')],_0x320f04);_0x4a3a17[_0x3f64af](_0x5edcb2['text'],_0x5edcb2[_0x4027('0x60')][_0x4027('0x6e')],_0x5edcb2[_0x4027('0x60')][_0x4027('0x20')]);}break;case _0x4027('0x75'):_0x5edcb2=as[_0x4027('0x6b')]('me',null,_0x320f04);_0x4a3a17[_0x3f64af](_0x5edcb2[_0x4027('0x6d')],_0x5edcb2[_0x4027('0x60')][_0x4027('0x6e')],_0x5edcb2[_0x4027('0x60')][_0x4027('0x20')]);break;}}else{var _0x5edcb2=as[_0x4027('0x6b')](_0x2f0ff8,_0x57290a[_0x4027('0x6c')],_0x320f04);_0x4a3a17[_0x3f64af](_0x5edcb2[_0x4027('0x6d')],_0x5edcb2['value'][_0x4027('0x6e')],_0x5edcb2[_0x4027('0x60')][_0x4027('0x20')]);}}}else{var _0x4ef109=_(_0x35504c[_0x4027('0x3e')])[_0x4027('0x3f')]()[_0x4027('0x31')](function(_0x2d9054){return _[_0x4027('0x76')](_0x2ec5be,[_0x4027('0x2f'),_0x2d9054])?_0x2d9054:undefined;})[_0x4027('0x77')]()[_0x4027('0x60')]();if(!_[_0x4027('0x78')](_0x4ef109)){_0x4ef109[_0x4027('0x35')](function(_0x2974c5){if(_0x2974c5===_0x4027('0x79')){_0x106c62[_0x4027('0x7a')](_0x4027('0x7b'),[][_0x4027('0x7c')](_0x35504c[_0x4027('0x3e')][_0x2974c5]));}else if(_0x2974c5==='createdAt'){var _0x44dc39=JSON[_0x4027('0x7d')](_0x35504c['query'][_0x2974c5])['$gte'];var _0x30b715=JSON['parse'](_0x35504c[_0x4027('0x3e')][_0x2974c5])['$lte'];_0x106c62[_0x4027('0x7a')](_0x4027('0x7e'),_0x44dc39,_0x30b715);}else{if(_0x35504c[_0x4027('0x3e')][_0x2974c5]===_0x4027('0x7f')){_0x106c62[_0x4027('0x7a')]('i.'+_0x2974c5+_0x4027('0x80'));}else{_0x106c62['where']('i.'+_0x2974c5+_0x4027('0x81'),_0x35504c['query'][_0x2974c5]);}}});}if(_0x35504c[_0x4027('0x3e')][_0x4027('0x82')]){if(_0x35504c[_0x4027('0x3e')][_0x4027('0x82')]==0x1){_0x106c62[_0x4027('0x61')]('`unreadMessages`\x20=\x200');}else{_0x106c62[_0x4027('0x61')]('`unreadMessages`\x20>\x200');}}if(_0x35504c[_0x4027('0x3e')][_0x4027('0x83')]){_0x42aeef=_[_0x4027('0x84')](_0x35504c['query'][_0x4027('0x83')])?_0x35504c[_0x4027('0x3e')]['tag']:new Array(_0x35504c[_0x4027('0x3e')][_0x4027('0x83')]);_0x42aeef[_0x4027('0x35')](function(_0x2d677e){_0x5bf1c7['or'](_0x4027('0x70'),'%,'+_0x2d677e+',%');});}if(_0x35504c[_0x4027('0x3e')][_0x4027('0x85')]){var _0x4bfdfa=_0x35504c['query'][_0x4027('0x85')][_0x4027('0x86')]('\x5c','\x5c\x5c')[_0x4027('0x86')](/'/g,'\x27\x27');if(qs['isNumeric'](_0x4bfdfa)){_0x4a3a17['or']('i.id\x20LIKE\x20?',_0x4bfdfa+'%');}else{_0x4a3a17['or'](_0x4027('0x87'),qs['getFullTextValue'](_0x4bfdfa))['or']('i.from\x20LIKE\x20?',_0x4bfdfa+'%')['or'](_0x4027('0x88'),_0x4bfdfa+'%');}}}_0x106c62[_0x4027('0x7a')](_0x4a3a17);_0x106c62[_0x4027('0x89')]('i.id');var _0x111318={'type':db[_0x4027('0x8a')][_0x4027('0x8b')][_0x4027('0x8c')],'raw':!![]};var _0x336437=_0x106c62[_0x4027('0x8d')]();_0x336437[_0x4027('0x49')](_0x4027('0x8e'));_0x336437['field'](_0x4027('0x8f'),_0x4027('0x90'));if(_0x18b4c8[_0x4027('0x45')]){_0x18b4c8[_0x4027('0x45')][_0x4027('0x35')](function(_0x3147e0){var _0x1ea7dc=_0x3147e0[0x0]===_0x4027('0x91')?_0x3147e0[0x0]:'i.'+_0x3147e0[0x0];_0x106c62[_0x4027('0x45')](_0x1ea7dc,_0x3147e0[0x1]===_0x4027('0x92')?![]:!![]);});}if(!_['isEmpty'](_0x42aeef)){_0x106c62[_0x4027('0x61')](_0x5bf1c7);_0x336437['where'](_0x4027('0x93'),_0x42aeef);}BPromise[_0x4027('0x94')]()[_0x4027('0x2b')](function(){if(!_0x5b474e){if(_0x35504c[_0x4027('0x3e')]['OpenchannelAccountId'])return;_0x336437[_0x4027('0x7a')](_0x4027('0x95'));_0x106c62[_0x4027('0x7a')](_0x4027('0x95'));return;}if(_0x35504c['user'][_0x4027('0x96')]!==_0x4027('0x97'))return;return _0x35504c[_0x4027('0x98')]['getOpenchannelAccounts']({'attributes':['id'],'raw':!![]})[_0x4027('0x2b')](function(_0x300878){if(_[_0x4027('0x78')](_0x300878)){_0x336437['where'](_0x4027('0x99'));_0x106c62[_0x4027('0x7a')]('i.OpenchannelAccountId\x20IS\x20NULL');}else{_0x336437[_0x4027('0x7a')](_0x4027('0x7b'),_[_0x4027('0x31')](_0x300878,'id'));_0x106c62[_0x4027('0x7a')](_0x4027('0x7b'),_[_0x4027('0x31')](_0x300878,'id'));}});})[_0x4027('0x2b')](function(){if(_0x35504c[_0x4027('0x98')][_0x4027('0x96')]==='agent'&&!_0x5b474e&&!_0x35504c[_0x4027('0x3e')][_0x4027('0x79')])return[];return db['sequelize'][_0x4027('0x3e')](_0x336437[_0x4027('0x9a')](),_0x111318);})['then'](function(_0xdf3da7){_0x4bd811[_0x4027('0x24')]=_0xdf3da7[_0x4027('0x43')];if(_0x4bd811[_0x4027('0x24')]===0x0)return[];return db['sequelize'][_0x4027('0x3e')](_0x5e6d9a['toString'](),_0x111318)['then'](function(_0x34c19f){_0x5a6100=_[_0x4027('0x9b')](_0x34c19f,'id');_0x111318=_[_0x4027('0x9c')](_0x111318,{'model':db[_0x4027('0x39')],'mapToModel':!![],'raw':!![],'nest':!![]});if(_0x35504c['query'][_0x4027('0x42')]){_0x18b4c8[_0x4027('0x40')]['forEach'](function(_0x27559d){_0x106c62['field']('i.'+_0x27559d);});}else{_0x106c62[_0x4027('0x49')](_0x4027('0x8f'),_0x4027('0x90'));_0x106c62['field'](_0x4027('0x9d'),_0x4027('0x9e'));_0x106c62[_0x4027('0x49')](_0x4027('0x9f'),_0x4027('0xa0'));_0x106c62['field']('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',_0x4027('0x91'));_0x106c62['field']('i.*');_0x106c62[_0x4027('0x49')]('c.firstName','Contact.firstName');_0x106c62[_0x4027('0x49')](_0x4027('0xa1'),_0x4027('0xa2'));_0x106c62[_0x4027('0x49')]('c.email',_0x4027('0xa3'));_0x106c62[_0x4027('0x49')](_0x4027('0xa4'),_0x4027('0xa5'));_0x106c62[_0x4027('0x49')](_0x4027('0xa6'),_0x4027('0xa7'));_0x106c62[_0x4027('0x49')](_0x4027('0xa8'),_0x4027('0xa9'));_0x106c62[_0x4027('0x49')](_0x4027('0xaa'),'Owner.fullname');_0x106c62[_0x4027('0x49')](_0x4027('0xab'),'Owner.internal');_0x106c62['field']('GROUP_CONCAT(DISTINCT\x20t.id)',_0x4027('0x32'));}if(_0x18b4c8['limit'])_0x106c62[_0x4027('0x22')](_0x18b4c8[_0x4027('0x22')]);if(_0x18b4c8['offset'])_0x106c62[_0x4027('0x21')](_0x18b4c8[_0x4027('0x21')]);return db[_0x4027('0xac')][_0x4027('0x3e')](_0x106c62[_0x4027('0x9a')](),_0x111318);})[_0x4027('0x2b')](function(_0x200683){if(_0x200683['length']>0x0)_0x1fb632[_0x4027('0x7a')](_0x4027('0xad'),_['map'](_0x200683,'id'));return db[_0x4027('0xac')][_0x4027('0x3e')](_0x1fb632[_0x4027('0x9a')](),_0x111318)[_0x4027('0x2b')](function(_0x37ff0a){var _0xb83a50=_[_0x4027('0xae')](_0x37ff0a,_0x4027('0xaf'));var _0x401540=[];_0x200683[_0x4027('0x35')](function(_0xe3fdf9){_0x401540['push'](updateOpenchannelInteraction(_0xe3fdf9,_0x5a6100,_0xb83a50));});return BPromise[_0x4027('0xb0')](_0x401540);});});})['then'](function(_0x56b8d4){_0x4bd811[_0x4027('0xb1')]=_0x56b8d4;return _0x4bd811;})[_0x4027('0x2b')](respondWithFilteredResult(_0x3183a2,_0x18b4c8))[_0x4027('0x37')](handleError(_0x3183a2,null));};exports[_0x4027('0xb2')]=function(_0x327b38,_0x28d77d){var _0x3d809d={};if(_0x327b38[_0x4027('0x3e')][_0x4027('0x6c')]&&_0x327b38[_0x4027('0x3e')]['type']===_0x4027('0x4a')){_0x3d809d[_0x4027('0x4a')]=_0x327b38[_0x4027('0xb3')]['id'];}else{_0x3d809d['id']=_0x327b38[_0x4027('0xb3')]['id'];}var _0x4dfc4c={'raw':![],'where':_0x3d809d},_0x2d06f4={};_0x2d06f4[_0x4027('0x3d')]=_[_0x4027('0x3f')](db[_0x4027('0x39')]['rawAttributes']);_0x2d06f4[_0x4027('0x3e')]=_[_0x4027('0x3f')](_0x327b38['query']);_0x2d06f4[_0x4027('0x48')]=_[_0x4027('0x41')](_0x2d06f4[_0x4027('0x3d')],_0x2d06f4[_0x4027('0x3e')]);_0x4dfc4c[_0x4027('0x40')]=_[_0x4027('0x41')](_0x2d06f4[_0x4027('0x3d')],qs['fields'](_0x327b38[_0x4027('0x3e')][_0x4027('0x42')]));_0x4dfc4c[_0x4027('0x40')]=_0x4dfc4c[_0x4027('0x40')]['length']?_0x4dfc4c[_0x4027('0x40')]:_0x2d06f4[_0x4027('0x3d')];if(_0x327b38[_0x4027('0x3e')][_0x4027('0xb4')]){_0x4dfc4c[_0x4027('0xb5')]=[{'all':!![]}];}_0x4dfc4c=_['merge']({},_0x4dfc4c,_0x327b38[_0x4027('0xb6')]);return db[_0x4027('0x39')]['find'](_0x4dfc4c)[_0x4027('0x2b')](handleEntityNotFound(_0x28d77d,null))['then'](respondWithResult(_0x28d77d,null))[_0x4027('0x37')](handleError(_0x28d77d,null));};exports[_0x4027('0xb7')]=function(_0xf88bbd,_0x35721a){return db['OpenchannelInteraction'][_0x4027('0xb7')](_0xf88bbd['body'],{})['then'](respondWithResult(_0x35721a,0xc9))[_0x4027('0x37')](handleError(_0x35721a,null));};exports['update']=function(_0x4c79d8,_0x190f76){if(_0x4c79d8[_0x4027('0x75')]['id']){delete _0x4c79d8[_0x4027('0x75')]['id'];}return db['OpenchannelInteraction'][_0x4027('0x69')]({'where':{'id':_0x4c79d8[_0x4027('0xb3')]['id']}})[_0x4027('0x2b')](handleEntityNotFound(_0x190f76,null))[_0x4027('0x2b')](saveUpdates(_0x4c79d8[_0x4027('0x75')],null))[_0x4027('0x2b')](respondWithResult(_0x190f76,null))[_0x4027('0x37')](handleError(_0x190f76,null));};exports[_0x4027('0xb8')]=function(_0xf362ac,_0x19cb6f){return db[_0x4027('0x39')][_0x4027('0x69')]({'where':{'id':_0xf362ac[_0x4027('0xb3')]['id']}})[_0x4027('0x2b')](handleEntityNotFound(_0x19cb6f,null))['then'](removeEntity(_0x19cb6f,null))['catch'](handleError(_0x19cb6f,null));};exports[_0x4027('0xb9')]=function(_0x460a39,_0x4674f6){return db[_0x4027('0x39')][_0x4027('0xb9')]()[_0x4027('0x2b')](respondWithResult(_0x4674f6,null))['catch'](handleError(_0x4674f6,null));};exports[_0x4027('0xba')]=function(_0x3de419,_0x205b81,_0x3afdba){return db[_0x4027('0xbb')][_0x4027('0x69')]({'where':{'id':_0x3de419[_0x4027('0xb3')]['id']}})[_0x4027('0x2b')](handleEntityNotFound(_0x205b81,null))['then'](function(_0x3fb5e7){if(_0x3fb5e7){return _0x3fb5e7[_0x4027('0xba')](_0x3de419['body'][_0x4027('0xbc')],_[_0x4027('0xbd')](_0x3de419[_0x4027('0x75')],[_0x4027('0xbc'),'id'])||{});}})['then'](respondWithResult(_0x205b81,null))['catch'](handleError(_0x205b81,null));};exports[_0x4027('0xbe')]=function(_0x5a57e3,_0x2e3e79,_0x18fbf6){var _0x57c3df={'raw':![],'where':{}};var _0x7f0963={};var _0x57223c={'count':0x0,'rows':[]};return db['OpenchannelInteraction'][_0x4027('0xbf')]({'where':{'id':_0x5a57e3[_0x4027('0xb3')]['id']}})[_0x4027('0x2b')](handleEntityNotFound(_0x2e3e79,null))['then'](function(_0x509136){if(_0x509136){_0x7f0963[_0x4027('0x3d')]=_[_0x4027('0x3f')](db[_0x4027('0xbb')][_0x4027('0x3a')]);_0x7f0963[_0x4027('0x3e')]=_['keys'](_0x5a57e3['query']);_0x7f0963[_0x4027('0x48')]=_[_0x4027('0x41')](_0x7f0963[_0x4027('0x3d')],_0x7f0963[_0x4027('0x3e')]);_0x57c3df[_0x4027('0x40')]=_[_0x4027('0x41')](_0x7f0963[_0x4027('0x3d')],qs['fields'](_0x5a57e3[_0x4027('0x3e')]['fields']));_0x57c3df[_0x4027('0x40')]=_0x57c3df['attributes'][_0x4027('0x43')]?_0x57c3df[_0x4027('0x40')]:_0x7f0963['model'];if(!_0x5a57e3[_0x4027('0x3e')]['hasOwnProperty'](_0x4027('0xc0'))){_0x57c3df[_0x4027('0x22')]=qs[_0x4027('0x22')](_0x5a57e3[_0x4027('0x3e')]['limit']);_0x57c3df[_0x4027('0x21')]=qs['offset'](_0x5a57e3[_0x4027('0x3e')]['offset']);}_0x57c3df[_0x4027('0x45')]=qs['sort'](_0x5a57e3[_0x4027('0x3e')]['sort']);_0x57c3df[_0x4027('0x7a')]=qs['filters'](_[_0x4027('0x47')](_0x5a57e3[_0x4027('0x3e')],_0x7f0963[_0x4027('0x48')]));_0x57c3df['where'][_0x4027('0xaf')]=_0x509136['id'];if(_0x5a57e3[_0x4027('0x3e')][_0x4027('0x85')]){_0x57c3df['where']=_[_0x4027('0x9c')](_0x57c3df[_0x4027('0x7a')],{'$or':_[_0x4027('0x31')](_0x57c3df['attributes'],function(_0x1cd7ff){var _0x4358d9={};_0x4358d9[_0x1cd7ff]={'$like':'%'+_0x5a57e3['query'][_0x4027('0x85')]+'%'};return _0x4358d9;})});}if(_0x5a57e3[_0x4027('0x3e')][_0x4027('0xc1')]){var _0x4e1329=_0x5a57e3[_0x4027('0x3e')][_0x4027('0xc1')][_0x4027('0x34')](',');var _0x124d5c={};_0x124d5c[_0x4e1329[0x0]]={'$gte':moment(_0x4e1329[0x1])[_0x4027('0xc2')](_0x4027('0xc3'))};_0x57c3df[_0x4027('0x7a')]=_[_0x4027('0x9c')](_0x57c3df[_0x4027('0x7a')],_0x124d5c);}_0x57c3df=_['merge']({},_0x57c3df,_0x5a57e3[_0x4027('0xb6')]);return db['OpenchannelMessage'][_0x4027('0x24')]({'where':_0x57c3df[_0x4027('0x7a')]})[_0x4027('0x2b')](function(_0x1f5fda){_0x57223c['count']=_0x1f5fda;if(_0x5a57e3[_0x4027('0x3e')][_0x4027('0xb4')]){_0x57c3df['include']=[{'all':!![]}];}return db['OpenchannelMessage'][_0x4027('0xc4')](_0x57c3df);})[_0x4027('0x2b')](function(_0x20e6d8){_0x57223c['rows']=_0x20e6d8;return _0x57223c;});}})[_0x4027('0x2b')](respondWithFilteredResult(_0x2e3e79,_0x57c3df))[_0x4027('0x37')](handleError(_0x2e3e79,null));};exports[_0x4027('0xc5')]=function(_0x15f527,_0x5055bd,_0x438cab){return db[_0x4027('0x39')][_0x4027('0x69')]({'where':{'id':_0x15f527[_0x4027('0xb3')]['id']}})[_0x4027('0x2b')](handleEntityNotFound(_0x5055bd,null))[_0x4027('0x2b')](function(_0x538db0){if(_0x538db0){return _0x538db0[_0x4027('0xc6')](_0x15f527[_0x4027('0x75')]['ids'],_['omit'](_0x15f527[_0x4027('0x75')],['ids','id'])||{})[_0x4027('0xc7')](function(){return db[_0x4027('0x6f')]['findAll']({'attributes':['id',_0x4027('0x2f'),_0x4027('0xc8')],'where':{'id':_0x15f527['body']['ids']}});})[_0x4027('0x2b')](function(_0x4b9e53){socket[_0x4027('0xc9')]('openchannelInteractionTags:save',{'id':Number(_0x15f527['params']['id']),'tags':_0x4b9e53||[]});return{'id':Number(_0x15f527[_0x4027('0xb3')]['id']),'tags':_0x4b9e53||[]};});}})[_0x4027('0x2b')](respondWithResult(_0x5055bd,null))[_0x4027('0x37')](handleError(_0x5055bd,null));};exports[_0x4027('0xca')]=function(_0x56377b,_0x4df0cf,_0x3e25bd){return db[_0x4027('0x39')]['find']({'where':{'id':_0x56377b['params']['id']}})[_0x4027('0x2b')](handleEntityNotFound(_0x4df0cf,null))[_0x4027('0x2b')](function(_0xee122e){if(_0xee122e){return _0xee122e['removeTags'](_0x56377b['query']['ids']);}})[_0x4027('0x2b')](respondWithStatusCode(_0x4df0cf,null))[_0x4027('0x37')](handleError(_0x4df0cf,null));};exports[_0x4027('0xcb')]=function(_0x3e1020,_0x4d7ccf){var _0xb22b56=moment()[_0x4027('0xcc')]()[_0x4027('0x9a')]();var _0x23af5f=path['join'](config[_0x4027('0xcd')],_0x4027('0xce'),'files','tmp');var _0x57a16e=path['join'](config[_0x4027('0xcd')],'server',_0x4027('0xcf'),_0x4027('0xd0'));var _0x22d0c4=path[_0x4027('0xd1')](_0x23af5f,_0xb22b56);var _0x25e7e8=util['format'](_0x4027('0xd2'),_0x3e1020['params']['id'],_0xb22b56);var _0x3d0a4d=path['join'](_0x23af5f,_0x25e7e8);var _0x11d583=[];_0x11d583[_0x4027('0x36')]({'model':db[_0x4027('0x72')],'as':_0x4027('0x72'),'attributes':['id',_0x4027('0xd3')],'raw':!![]});_0x11d583[_0x4027('0x36')]({'model':db[_0x4027('0xd4')],'as':'Contact','attributes':['id',_0x4027('0xd5'),_0x4027('0xd6')],'raw':!![]});if(_0x3e1020[_0x4027('0x3e')][_0x4027('0xd0')]){_0x11d583[_0x4027('0x36')]({'model':db[_0x4027('0xd7')],'as':_0x4027('0xd7'),'raw':!![]});}var _0x5b5b1a=[{'model':db['OpenchannelMessage'],'as':_0x4027('0xd8'),'attributes':['id',_0x4027('0x75'),_0x4027('0xd9'),_0x4027('0xda'),'secret',_0x4027('0x82')],'include':_0x11d583}];_0x5b5b1a[_0x4027('0x36')]({'model':db['OpenchannelAccount'],'as':_0x4027('0xdb'),'attributes':['id',_0x4027('0x2f')]});_0x5b5b1a['push']({'model':db['User'],'as':_0x4027('0xdc'),'attributes':['id','fullname']});return db[_0x4027('0x39')]['find']({'where':{'id':_0x3e1020['params']['id']},'include':_0x5b5b1a})[_0x4027('0x2b')](handleEntityNotFound(_0x4d7ccf,null))['then'](function(_0x1cf226){if(_0x1cf226){var _0x4f246d=_0x1cf226[_0x4027('0xdd')]({'plain':!![]});fs['mkdirSync'](_0x22d0c4);var _0x6967e5={'channel':'Openchannel','account':_0x4f246d['Account'][_0x4027('0x2f')],'agent':_0x4f246d['Owner']?_0x4f246d['Owner'][_0x4027('0xd3')]:_0x4027('0xde'),'createdAt':moment(_0x4f246d[_0x4027('0xd9')])['format']('YYYY-MM-DD\x20HH:mm:ss')[_0x4027('0x9a')](),'closedAt':_0x4f246d['closed']?moment(_0x4f246d[_0x4027('0xdf')])['format'](_0x4027('0xc3'))[_0x4027('0x9a')]():'','disposition':_0x4f246d[_0x4027('0xe0')],'visibility':_0x4f246d['threadId']?_0x4027('0xe1'):_0x4027('0xe2'),'messages':_(_0x4f246d['Messages'])[_0x4027('0x85')]({'secret':![]})[_0x4027('0x31')](function(_0x8e0ee5){if(_0x8e0ee5['Attachment']){var _0x186869=path[_0x4027('0xd1')](_0x57a16e,_0x8e0ee5['Attachment'][_0x4027('0xe3')]);if(fs['existsSync'](_0x186869)){fs[_0x4027('0xe4')](_0x186869)[_0x4027('0xe5')](fs[_0x4027('0xe6')](path[_0x4027('0xd1')](_0x22d0c4,_0x8e0ee5['Attachment']['basename'])));}}return{'date':moment(_0x8e0ee5[_0x4027('0xd9')])[_0x4027('0xc2')](_0x4027('0xc3'))[_0x4027('0x9a')](),'sender':_0x8e0ee5[_0x4027('0xda')]===_0x4027('0xe7')?_0x8e0ee5[_0x4027('0x72')]?_0x8e0ee5[_0x4027('0x72')][_0x4027('0xd3')]:'System':_0x8e0ee5[_0x4027('0x64')][_0x4027('0xd5')]+(_0x8e0ee5[_0x4027('0x64')]['lastName']?'\x20'+_0x8e0ee5[_0x4027('0x64')][_0x4027('0xd6')]:''),'body':_0x8e0ee5['Attachment']?_0x8e0ee5[_0x4027('0xd7')][_0x4027('0xe3')]:_0x8e0ee5[_0x4027('0x75')],'direction':_0x8e0ee5[_0x4027('0xda')]===_0x4027('0xe7')?'A':'C','secret':_0x8e0ee5[_0x4027('0xe8')],'read':_0x8e0ee5[_0x4027('0x82')],'attachment':_0x8e0ee5['Attachment']};})[_0x4027('0x60')]()};return ejs['renderFile'](path[_0x4027('0xd1')](config[_0x4027('0xcd')],_0x4027('0xce'),'views',_0x4027('0xe9')),{'interaction':_0x6967e5})['then'](function(_0x48cd65){var _0x17a203=path[_0x4027('0xd1')](_0x22d0c4,'transcript-'+_0x4f246d['id']+'-'+_0xb22b56+_0x4027('0xea'));var _0x562c8a={'path':_0x17a203,'channel':_0x4027('0xeb'),'interactionId':_0x4f246d['id']};return pdf[_0x4027('0xec')](_0x48cd65,_0x562c8a);})[_0x4027('0x2b')](function(){return new BPromise(function(_0x54f4c4,_0x219286){zipdir(_0x22d0c4,{'saveTo':_0x3d0a4d},function(_0x311d3c,_0x564b09){if(_0x311d3c)return _0x219286(_0x311d3c);return _0x54f4c4(_0x564b09);});})[_0x4027('0x2b')](function(){return new BPromise(function(_0x9866fc,_0x2af71f){rimraf(_0x22d0c4,function(_0x58b3e1){if(_0x58b3e1)_0x2af71f(_0x58b3e1);return _0x9866fc();});});})['then'](function(){return _0x4d7ccf[_0x4027('0xcb')](_0x3d0a4d,_0x25e7e8,function(_0x5329ec){if(_0x5329ec){console[_0x4027('0xed')](_0x4027('0xee'),_0x5329ec);}else{fs['unlinkSync'](_0x3d0a4d);}});});});}else{return _0x4d7ccf[_0x4027('0x2c')](0xc8);}})['catch'](handleError(_0x4d7ccf,null));};
\ No newline at end of file
index d44a898..cb1c320 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x48d7=['events','OpenchannelInteraction','../../mysqldb','setMaxListeners','save','update','remove','getUsers','then','map','setDataValue','length','emit','catch','hasOwnProperty','hook','exports'];(function(_0x1fe2ce,_0x3bbabd){var _0xd9a81f=function(_0x2194e7){while(--_0x2194e7){_0x1fe2ce['push'](_0x1fe2ce['shift']());}};_0xd9a81f(++_0x3bbabd);}(_0x48d7,0x198));var _0x748d=function(_0x243b59,_0x3f9495){_0x243b59=_0x243b59-0x0;var _0x3e1676=_0x48d7[_0x243b59];return _0x3e1676;};'use strict';var EventEmitter=require(_0x748d('0x0'));var OpenchannelInteraction=require('../../mysqldb')['db'][_0x748d('0x1')];var OpenchannelMessage=require(_0x748d('0x2'))['db']['OpenchannelMessage'];var OpenchannelInteractionEvents=new EventEmitter();OpenchannelInteractionEvents[_0x748d('0x3')](0x0);var events={'afterCreate':_0x748d('0x4'),'afterUpdate':_0x748d('0x5'),'afterDestroy':_0x748d('0x6')};function emitEvent(_0x2907a1){return function(_0x563116,_0x1791ba,_0x317281){_0x563116[_0x748d('0x7')]({'attributes':['id'],'raw':!![]})[_0x748d('0x8')](function(_0xd2338e){_0x563116['setDataValue']('Users',_0xd2338e[_0x748d('0x9')](function(_0x54598f){return{'id':_0x54598f['id']};}));return OpenchannelMessage['findAll']({'where':{'OpenchannelInteractionId':_0x563116['id'],'direction':'in','read':![]},'raw':!![]});})[_0x748d('0x8')](function(_0x80a02d){_0x563116[_0x748d('0xa')]('unreadMessages',_0x80a02d[_0x748d('0xb')]);OpenchannelInteractionEvents[_0x748d('0xc')](_0x2907a1+':'+_0x563116['id'],_0x563116);OpenchannelInteractionEvents[_0x748d('0xc')](_0x2907a1,_0x563116);_0x317281(null);})[_0x748d('0xd')](_0x317281(null));};}for(var e in events){if(events[_0x748d('0xe')](e)){var event=events[e];OpenchannelInteraction[_0x748d('0xf')](e,emitEvent(event));}}module[_0x748d('0x10')]=OpenchannelInteractionEvents;
\ No newline at end of file
+var _0xa512=['emit','catch','hook','exports','events','OpenchannelInteraction','../../mysqldb','OpenchannelMessage','save','update','remove','map','then','setDataValue','unreadMessages','length'];(function(_0x34b87f,_0x28aef2){var _0x449805=function(_0x3735b7){while(--_0x3735b7){_0x34b87f['push'](_0x34b87f['shift']());}};_0x449805(++_0x28aef2);}(_0xa512,0x194));var _0x2a51=function(_0x4eeca4,_0x5901c9){_0x4eeca4=_0x4eeca4-0x0;var _0x430031=_0xa512[_0x4eeca4];return _0x430031;};'use strict';var EventEmitter=require(_0x2a51('0x0'));var OpenchannelInteraction=require('../../mysqldb')['db'][_0x2a51('0x1')];var OpenchannelMessage=require(_0x2a51('0x2'))['db'][_0x2a51('0x3')];var OpenchannelInteractionEvents=new EventEmitter();OpenchannelInteractionEvents['setMaxListeners'](0x0);var events={'afterCreate':_0x2a51('0x4'),'afterUpdate':_0x2a51('0x5'),'afterDestroy':_0x2a51('0x6')};function emitEvent(_0x49d17a){return function(_0x589efa,_0x486418,_0x594199){_0x589efa['getUsers']({'attributes':['id'],'raw':!![]})['then'](function(_0x1c4ba3){_0x589efa['setDataValue']('Users',_0x1c4ba3[_0x2a51('0x7')](function(_0x453005){return{'id':_0x453005['id']};}));return OpenchannelMessage['findAll']({'where':{'OpenchannelInteractionId':_0x589efa['id'],'direction':'in','read':![]},'raw':!![]});})[_0x2a51('0x8')](function(_0x3df45d){_0x589efa[_0x2a51('0x9')](_0x2a51('0xa'),_0x3df45d[_0x2a51('0xb')]);OpenchannelInteractionEvents[_0x2a51('0xc')](_0x49d17a+':'+_0x589efa['id'],_0x589efa);OpenchannelInteractionEvents[_0x2a51('0xc')](_0x49d17a,_0x589efa);_0x594199(null);})[_0x2a51('0xd')](_0x594199(null));};}for(var e in events){if(events['hasOwnProperty'](e)){var event=events[e];OpenchannelInteraction[_0x2a51('0xe')](e,emitEvent(event));}}module[_0x2a51('0xf')]=OpenchannelInteractionEvents;
\ No newline at end of file
index ef252a5..3fa5efd 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x407e=['YYYY-MM-DD\x20HH:mm:ss','lodash','../../config/logger','api','request-promise','path','rimraf','../../config/environment','./openchannelInteraction.attributes','exports','OpenchannelInteraction','openchannel_interactions','utf8mb4','changed','closed','closedAt','format'];(function(_0x263c9d,_0x5190fe){var _0x392393=function(_0x40ccb3){while(--_0x40ccb3){_0x263c9d['push'](_0x263c9d['shift']());}};_0x392393(++_0x5190fe);}(_0x407e,0x166));var _0xe407=function(_0x32753a,_0x313eff){_0x32753a=_0x32753a-0x0;var _0x5cc638=_0x407e[_0x32753a];return _0x5cc638;};'use strict';var _=require(_0xe407('0x0'));var util=require('util');var logger=require(_0xe407('0x1'))(_0xe407('0x2'));var moment=require('moment');var BPromise=require('bluebird');var rp=require(_0xe407('0x3'));var fs=require('fs');var path=require(_0xe407('0x4'));var rimraf=require(_0xe407('0x5'));var config=require(_0xe407('0x6'));var attributes=require(_0xe407('0x7'));module[_0xe407('0x8')]=function(_0x29a48e,_0x41bf20){return _0x29a48e['define'](_0xe407('0x9'),attributes,{'tableName':_0xe407('0xa'),'paranoid':![],'indexes':[],'timestamps':!![],'charset':_0xe407('0xb'),'collate':'utf8mb4_unicode_ci','hooks':{'beforeUpdate':function(_0x3d66ca,_0xccf0d8,_0x312126){if(_0x3d66ca[_0xe407('0xc')](_0xe407('0xd'))){_0x3d66ca[_0xe407('0xe')]=moment()[_0xe407('0xf')](_0xe407('0x10'));}_0x312126(null,_0x3d66ca);}}});};
\ No newline at end of file
+var _0x2c8f=['./openchannelInteraction.attributes','exports','define','openchannel_interactions','utf8mb4','utf8mb4_unicode_ci','closed','closedAt','format','YYYY-MM-DD\x20HH:mm:ss','util','bluebird','request-promise','path'];(function(_0x3ffd40,_0x4c65b8){var _0x14309d=function(_0x48886e){while(--_0x48886e){_0x3ffd40['push'](_0x3ffd40['shift']());}};_0x14309d(++_0x4c65b8);}(_0x2c8f,0x192));var _0xf2c8=function(_0x58111a,_0x3e9c06){_0x58111a=_0x58111a-0x0;var _0x114f95=_0x2c8f[_0x58111a];return _0x114f95;};'use strict';var _=require('lodash');var util=require(_0xf2c8('0x0'));var logger=require('../../config/logger')('api');var moment=require('moment');var BPromise=require(_0xf2c8('0x1'));var rp=require(_0xf2c8('0x2'));var fs=require('fs');var path=require(_0xf2c8('0x3'));var rimraf=require('rimraf');var config=require('../../config/environment');var attributes=require(_0xf2c8('0x4'));module[_0xf2c8('0x5')]=function(_0x182b73,_0x3ad7a0){return _0x182b73[_0xf2c8('0x6')]('OpenchannelInteraction',attributes,{'tableName':_0xf2c8('0x7'),'paranoid':![],'indexes':[],'timestamps':!![],'charset':_0xf2c8('0x8'),'collate':_0xf2c8('0x9'),'hooks':{'beforeUpdate':function(_0x450f1e,_0x3e220d,_0x2112fc){if(_0x450f1e['changed'](_0xf2c8('0xa'))){_0x450f1e[_0xf2c8('0xb')]=moment()[_0xf2c8('0xc')](_0xf2c8('0xd'));}_0x2112fc(null,_0x450f1e);}}});};
\ No newline at end of file
index 8011254..d73b391 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe66e=['UpdateOpenchannelInteraction','OpenchannelInteraction','update','body','options','raw','where','attributes','limit','debug','find','addTags','ids','omit','AddTags','moment','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','defaults','redis','localhost','socket.io-emitter','./openchannelInteraction.socket','then','info','OpenchannelInteraction,\x20%s,\x20%s','request\x20sent','OpenchannelInteraction,\x20%s,\x20%s,\x20%s','stringify','error','code','message'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0xe66e,0xed));var _0xee66=function(_0x5179a5,_0x419746){_0x5179a5=_0x5179a5-0x0;var _0x15c8ce=_0xe66e[_0x5179a5];return _0x15c8ce;};'use strict';var _=require('lodash');var util=require('util');var moment=require(_0xee66('0x0'));var BPromise=require('bluebird');var rs=require('randomstring');var fs=require('fs');var Redis=require('ioredis');var db=require('../../mysqldb')['db'];var utils=require(_0xee66('0x1'));var logger=require(_0xee66('0x2'))(_0xee66('0x3'));var config=require(_0xee66('0x4'));var jayson=require(_0xee66('0x5'));var client=jayson[_0xee66('0x6')][_0xee66('0x7')]({'port':0x232a});config['redis']=_[_0xee66('0x8')](config[_0xee66('0x9')],{'host':_0xee66('0xa'),'port':0x18eb});var socket=require(_0xee66('0xb'))(new Redis(config['redis']));require(_0xee66('0xc'))['register'](socket);function respondWithRpcPromise(_0x5164f3,_0x48bbe8,_0x44dcfb){return new BPromise(function(_0xe0c74b,_0x464714){return client['request'](_0x5164f3,_0x44dcfb)[_0xee66('0xd')](function(_0x691563){logger[_0xee66('0xe')](_0xee66('0xf'),_0x48bbe8,_0xee66('0x10'));logger['debug'](_0xee66('0x11'),_0x48bbe8,'request\x20sent',JSON[_0xee66('0x12')](_0x691563));if(_0x691563[_0xee66('0x13')]){if(_0x691563['error'][_0xee66('0x14')]===0x1f4){logger[_0xee66('0x13')]('OpenchannelInteraction,\x20%s,\x20%s',_0x48bbe8,_0x691563['error'][_0xee66('0x15')]);return _0x464714(_0x691563['error'][_0xee66('0x15')]);}logger[_0xee66('0x13')](_0xee66('0xf'),_0x48bbe8,_0x691563[_0xee66('0x13')]['message']);return _0xe0c74b(_0x691563[_0xee66('0x13')][_0xee66('0x15')]);}else{logger[_0xee66('0xe')](_0xee66('0xf'),_0x48bbe8,_0xee66('0x10'));_0xe0c74b(_0x691563['result'][_0xee66('0x15')]);}})['catch'](function(_0x29da83){logger[_0xee66('0x13')](_0xee66('0xf'),_0x48bbe8,_0x29da83);_0x464714(_0x29da83);});});}exports[_0xee66('0x16')]=function(_0x5b0f27){var _0x96dff1=this;return new Promise(function(_0x4f88fb,_0x50bed8){return db[_0xee66('0x17')][_0xee66('0x18')](_0x5b0f27[_0xee66('0x19')],{'raw':_0x5b0f27[_0xee66('0x1a')]?_0x5b0f27[_0xee66('0x1a')][_0xee66('0x1b')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x5b0f27[_0xee66('0x1a')]?_0x5b0f27[_0xee66('0x1a')][_0xee66('0x1c')]||null:null,'attributes':_0x5b0f27[_0xee66('0x1a')]?_0x5b0f27['options'][_0xee66('0x1d')]||null:null,'limit':_0x5b0f27['options']?_0x5b0f27['options'][_0xee66('0x1e')]||null:null})['then'](function(_0x394b9b){logger[_0xee66('0xe')](_0xee66('0x16'),_0x5b0f27);logger[_0xee66('0x1f')](_0xee66('0x16'),_0x5b0f27,JSON[_0xee66('0x12')](_0x394b9b));_0x4f88fb(_0x394b9b);})['catch'](function(_0x58217b){logger[_0xee66('0x13')]('UpdateOpenchannelInteraction',_0x58217b['message'],_0x5b0f27);_0x50bed8(_0x96dff1[_0xee66('0x13')](0x1f4,_0x58217b['message']));});});};exports['AddTagsToOpenchannelInteraction']=function(_0x3a56d1){return new Promise(function(_0xf2070b,_0x298110){return db[_0xee66('0x17')][_0xee66('0x20')]({'where':_0x3a56d1[_0xee66('0x1a')]?_0x3a56d1[_0xee66('0x1a')][_0xee66('0x1c')]||null:null})[_0xee66('0xd')](function(_0x5f293c){if(_0x5f293c){return _0x5f293c[_0xee66('0x21')](_0x3a56d1[_0xee66('0x19')][_0xee66('0x22')],_[_0xee66('0x23')](_0x3a56d1[_0xee66('0x19')],[_0xee66('0x22'),'id'])||{});}})['spread'](function(_0x1e9499){logger[_0xee66('0xe')](_0xee66('0x24'),_0x3a56d1);logger[_0xee66('0x1f')](_0xee66('0x24'),_0x3a56d1,JSON[_0xee66('0x12')](_0x1e9499));_0xf2070b(_0x1e9499);})['catch'](function(_0x1de336){logger[_0xee66('0x13')]('AddTags',_0x1de336[_0xee66('0x15')],_0x3a56d1);_0x298110(_this[_0xee66('0x13')](0x1f4,_0x1de336['message']));});});};
\ No newline at end of file
+var _0x51f9=['error','code','message','result','catch','UpdateOpenchannelInteraction','OpenchannelInteraction','update','body','options','raw','where','limit','debug','find','addTags','ids','omit','AddTags','lodash','bluebird','randomstring','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','defaults','redis','localhost','socket.io-emitter','./openchannelInteraction.socket','register','then','info','OpenchannelInteraction,\x20%s,\x20%s','request\x20sent','stringify'];(function(_0x25ca33,_0x539349){var _0x21834e=function(_0x47e33b){while(--_0x47e33b){_0x25ca33['push'](_0x25ca33['shift']());}};_0x21834e(++_0x539349);}(_0x51f9,0x8e));var _0x951f=function(_0x5d8018,_0x588592){_0x5d8018=_0x5d8018-0x0;var _0x151ac4=_0x51f9[_0x5d8018];return _0x151ac4;};'use strict';var _=require(_0x951f('0x0'));var util=require('util');var moment=require('moment');var BPromise=require(_0x951f('0x1'));var rs=require(_0x951f('0x2'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x951f('0x3'))['db'];var utils=require(_0x951f('0x4'));var logger=require(_0x951f('0x5'))(_0x951f('0x6'));var config=require(_0x951f('0x7'));var jayson=require(_0x951f('0x8'));var client=jayson[_0x951f('0x9')][_0x951f('0xa')]({'port':0x232a});config['redis']=_[_0x951f('0xb')](config[_0x951f('0xc')],{'host':_0x951f('0xd'),'port':0x18eb});var socket=require(_0x951f('0xe'))(new Redis(config[_0x951f('0xc')]));require(_0x951f('0xf'))[_0x951f('0x10')](socket);function respondWithRpcPromise(_0x33ab57,_0x599dbe,_0x52592c){return new BPromise(function(_0x321cd8,_0x4c67ae){return client['request'](_0x33ab57,_0x52592c)[_0x951f('0x11')](function(_0x566b30){logger[_0x951f('0x12')](_0x951f('0x13'),_0x599dbe,_0x951f('0x14'));logger['debug']('OpenchannelInteraction,\x20%s,\x20%s,\x20%s',_0x599dbe,_0x951f('0x14'),JSON[_0x951f('0x15')](_0x566b30));if(_0x566b30[_0x951f('0x16')]){if(_0x566b30[_0x951f('0x16')][_0x951f('0x17')]===0x1f4){logger[_0x951f('0x16')](_0x951f('0x13'),_0x599dbe,_0x566b30[_0x951f('0x16')][_0x951f('0x18')]);return _0x4c67ae(_0x566b30['error'][_0x951f('0x18')]);}logger['error'](_0x951f('0x13'),_0x599dbe,_0x566b30[_0x951f('0x16')]['message']);return _0x321cd8(_0x566b30[_0x951f('0x16')][_0x951f('0x18')]);}else{logger['info'](_0x951f('0x13'),_0x599dbe,_0x951f('0x14'));_0x321cd8(_0x566b30[_0x951f('0x19')][_0x951f('0x18')]);}})[_0x951f('0x1a')](function(_0x5d8124){logger['error']('OpenchannelInteraction,\x20%s,\x20%s',_0x599dbe,_0x5d8124);_0x4c67ae(_0x5d8124);});});}exports[_0x951f('0x1b')]=function(_0x5d859b){var _0x2cfe22=this;return new Promise(function(_0x3648b4,_0x37e347){return db[_0x951f('0x1c')][_0x951f('0x1d')](_0x5d859b[_0x951f('0x1e')],{'raw':_0x5d859b[_0x951f('0x1f')]?_0x5d859b['options'][_0x951f('0x20')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x5d859b[_0x951f('0x1f')]?_0x5d859b[_0x951f('0x1f')][_0x951f('0x21')]||null:null,'attributes':_0x5d859b[_0x951f('0x1f')]?_0x5d859b[_0x951f('0x1f')]['attributes']||null:null,'limit':_0x5d859b[_0x951f('0x1f')]?_0x5d859b[_0x951f('0x1f')][_0x951f('0x22')]||null:null})[_0x951f('0x11')](function(_0x1b1942){logger[_0x951f('0x12')](_0x951f('0x1b'),_0x5d859b);logger[_0x951f('0x23')](_0x951f('0x1b'),_0x5d859b,JSON['stringify'](_0x1b1942));_0x3648b4(_0x1b1942);})[_0x951f('0x1a')](function(_0x52ed54){logger['error']('UpdateOpenchannelInteraction',_0x52ed54[_0x951f('0x18')],_0x5d859b);_0x37e347(_0x2cfe22['error'](0x1f4,_0x52ed54['message']));});});};exports['AddTagsToOpenchannelInteraction']=function(_0x30414f){return new Promise(function(_0x3cc3fc,_0x5308c5){return db[_0x951f('0x1c')][_0x951f('0x24')]({'where':_0x30414f[_0x951f('0x1f')]?_0x30414f[_0x951f('0x1f')][_0x951f('0x21')]||null:null})[_0x951f('0x11')](function(_0x3e1e58){if(_0x3e1e58){return _0x3e1e58[_0x951f('0x25')](_0x30414f['body'][_0x951f('0x26')],_[_0x951f('0x27')](_0x30414f[_0x951f('0x1e')],[_0x951f('0x26'),'id'])||{});}})['spread'](function(_0x3c3901){logger['info'](_0x951f('0x28'),_0x30414f);logger[_0x951f('0x23')](_0x951f('0x28'),_0x30414f,JSON[_0x951f('0x15')](_0x3c3901));_0x3cc3fc(_0x3c3901);})[_0x951f('0x1a')](function(_0x1508eb){logger['error'](_0x951f('0x28'),_0x1508eb[_0x951f('0x18')],_0x30414f);_0x5308c5(_this[_0x951f('0x16')](0x1f4,_0x1508eb[_0x951f('0x18')]));});});};
\ No newline at end of file
index 9876e1d..e58ff89 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe560=['remove','emit','register','openchannelInteraction:','./openchannelInteraction.events','save'];(function(_0x56f43b,_0x12f74b){var _0x2a81de=function(_0x3e22c4){while(--_0x3e22c4){_0x56f43b['push'](_0x56f43b['shift']());}};_0x2a81de(++_0x12f74b);}(_0xe560,0x82));var _0x0e56=function(_0x5f25b3,_0x35481a){_0x5f25b3=_0x5f25b3-0x0;var _0x4ab9bf=_0xe560[_0x5f25b3];return _0x4ab9bf;};'use strict';var OpenchannelInteractionEvents=require(_0x0e56('0x0'));var events=[_0x0e56('0x1'),_0x0e56('0x2'),'update'];function createListener(_0x353851,_0x35af8c){return function(_0x2b04e6){_0x35af8c[_0x0e56('0x3')](_0x353851,_0x2b04e6);};}function removeListener(_0x3e3335,_0x1fec46){return function(){OpenchannelInteractionEvents['removeListener'](_0x3e3335,_0x1fec46);};}exports[_0x0e56('0x4')]=function(_0x42e6ea){for(var _0x159d31=0x0,_0x28d27a=events['length'];_0x159d31<_0x28d27a;_0x159d31++){var _0x2df20d=events[_0x159d31];var _0x2679eb=createListener(_0x0e56('0x5')+_0x2df20d,_0x42e6ea);OpenchannelInteractionEvents['on'](_0x2df20d,_0x2679eb);}};
\ No newline at end of file
+var _0x1b1e=['register','./openchannelInteraction.events','save','update','emit','removeListener'];(function(_0x4b2251,_0x393f10){var _0x5d22fb=function(_0x10992c){while(--_0x10992c){_0x4b2251['push'](_0x4b2251['shift']());}};_0x5d22fb(++_0x393f10);}(_0x1b1e,0xfd));var _0xe1b1=function(_0x228540,_0x31248d){_0x228540=_0x228540-0x0;var _0x6e8c86=_0x1b1e[_0x228540];return _0x6e8c86;};'use strict';var OpenchannelInteractionEvents=require(_0xe1b1('0x0'));var events=[_0xe1b1('0x1'),'remove',_0xe1b1('0x2')];function createListener(_0x55826,_0x3f29a6){return function(_0x4bf229){_0x3f29a6[_0xe1b1('0x3')](_0x55826,_0x4bf229);};}function removeListener(_0x3ff38d,_0x3dad2c){return function(){OpenchannelInteractionEvents[_0xe1b1('0x4')](_0x3ff38d,_0x3dad2c);};}exports[_0xe1b1('0x5')]=function(_0x42e78a){for(var _0x34b726=0x0,_0xca2d81=events['length'];_0x34b726<_0xca2d81;_0x34b726++){var _0x13e49e=events[_0x34b726];var _0x268d2f=createListener('openchannelInteraction:'+_0x13e49e,_0x42e78a);OpenchannelInteractionEvents['on'](_0x13e49e,_0x268d2f);}};
\ No newline at end of file
index ef32f3b..9e9d6f2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0713=['get','isAuthenticated','index','/describe','describe','/:id','post','tracked','openchannel','openchannelmessage:create','put','update','accept','/:id/reject','delete','destroy','exports','path','connect-timeout','express','Router','fs-extra','../../components/interaction/service','../../config/environment','./openchannelMessage.controller'];(function(_0x16b9ed,_0x56517a){var _0x66b1f8=function(_0x1c883){while(--_0x1c883){_0x16b9ed['push'](_0x16b9ed['shift']());}};_0x66b1f8(++_0x56517a);}(_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'));var controller=require(_0x3071('0x7'));router[_0x3071('0x8')]('/',auth[_0x3071('0x9')](),controller[_0x3071('0xa')]);router[_0x3071('0x8')](_0x3071('0xb'),auth[_0x3071('0x9')](),controller[_0x3071('0xc')]);router[_0x3071('0x8')](_0x3071('0xd'),auth[_0x3071('0x9')](),controller['show']);router[_0x3071('0xe')]('/',auth[_0x3071('0x9')](),interaction[_0x3071('0xf')](_0x3071('0x10'),_0x3071('0x11')),controller['create']);router[_0x3071('0x12')](_0x3071('0xd'),auth[_0x3071('0x9')](),controller[_0x3071('0x13')]);router[_0x3071('0x12')]('/:id/accept',auth['isAuthenticated'](),controller[_0x3071('0x14')]);router['put'](_0x3071('0x15'),auth[_0x3071('0x9')](),controller['reject']);router[_0x3071('0x16')]('/:id',auth[_0x3071('0x9')](),controller[_0x3071('0x17')]);module[_0x3071('0x18')]=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(_0x38176e,_0x536a40){var _0x37f34d=function(_0x1bee14){while(--_0x1bee14){_0x38176e['push'](_0x38176e['shift']());}};_0x37f34d(++_0x536a40);}(_0x9c44,0x178));var _0x49c4=function(_0x17b6e3,_0x4522ed){_0x17b6e3=_0x17b6e3-0x0;var _0x3906f3=_0x9c44[_0x17b6e3];return _0x3906f3;};'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 756d40d..c668ae7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x152f=['BOOLEAN','ENUM','out','DATE','sequelize','exports','TEXT','medium'];(function(_0x20a584,_0xe384a5){var _0x4b41a8=function(_0x2127c6){while(--_0x2127c6){_0x20a584['push'](_0x20a584['shift']());}};_0x4b41a8(++_0xe384a5);}(_0x152f,0x144));var _0xf152=function(_0x110c3d,_0x12ee06){_0x110c3d=_0x110c3d-0x0;var _0x226d67=_0x152f[_0x110c3d];return _0x226d67;};'use strict';var Sequelize=require(_0xf152('0x0'));module[_0xf152('0x1')]={'body':{'type':Sequelize[_0xf152('0x2')](_0xf152('0x3')),'allowNull':![]},'read':{'type':Sequelize[_0xf152('0x4')],'defaultValue':![]},'secret':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'direction':{'type':Sequelize[_0xf152('0x5')]('in',_0xf152('0x6')),'defaultValue':_0xf152('0x6'),'allowNull':![]},'readAt':{'type':Sequelize[_0xf152('0x7')]},'providerName':{'type':Sequelize['STRING']},'providerResponse':{'type':Sequelize[_0xf152('0x2')]}};
\ No newline at end of file
+var _0x7708=['DATE','TEXT','sequelize','exports','medium','out'];(function(_0x3a7f0d,_0x3187a2){var _0x337e29=function(_0xd9da59){while(--_0xd9da59){_0x3a7f0d['push'](_0x3a7f0d['shift']());}};_0x337e29(++_0x3187a2);}(_0x7708,0x188));var _0x8770=function(_0x256684,_0x529c1e){_0x256684=_0x256684-0x0;var _0x37a0c9=_0x7708[_0x256684];return _0x37a0c9;};'use strict';var Sequelize=require(_0x8770('0x0'));module[_0x8770('0x1')]={'body':{'type':Sequelize['TEXT'](_0x8770('0x2')),'allowNull':![]},'read':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'secret':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'direction':{'type':Sequelize['ENUM']('in','out'),'defaultValue':_0x8770('0x3'),'allowNull':![]},'readAt':{'type':Sequelize[_0x8770('0x4')]},'providerName':{'type':Sequelize['STRING']},'providerResponse':{'type':Sequelize[_0x8770('0x5')]}};
\ No newline at end of file
index 51944df..455ab72 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2882=['length','merge','find','create','body','describe','openchannel-interactions','accept','openchannel','readAt','format','YYYY-MM-DD\x20HH:mm:ss','UserId','user','agent','get','OpenchannelInteraction','OpenchannelInteractionId','isNil','read1stAt','[OPENCHANNELMESSAGE:ACCEPT]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s','role','interaction','null','acceptMessage','SELECT\x20*\x20FROM\x20cm_contacts\x20WHERE\x20id\x20=\x20','sequelize','QueryTypes','SELECT','contact','User','fullname','manual','interface','SIP/%s','channel','event','EventManager','acceptmessage','[OPENCHANNELMESSAGE:REJECT]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s','rejectMessage','ContactId','Sequelize','email','internal','motionChannel','rejectmessage','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','util','path','sox','squel','crypto','jsforce','desk.js','to-csv','querystring','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','redis','defaults','localhost','socket.io-emitter','register','jayson/promise','client','http','request','then','info','OpenchannelMessage,\x20%s,\x20%s','debug','OpenchannelMessage,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','code','message','catch','sendStatus','status','end','json','undefined','limit','offset','set','Content-Range','reject','save','update','destroy','stack','name','send','index','map','OpenchannelMessage','type','key','model','query','keys','filters','intersection','fields','attributes','hasOwnProperty','nolimit','order','sort','where','pick','filter','VIRTUAL','options','count','includeAll','include','findAll','show','params','rawAttributes'];(function(_0x59ee6f,_0x450239){var _0x4c0979=function(_0x565e92){while(--_0x565e92){_0x59ee6f['push'](_0x59ee6f['shift']());}};_0x4c0979(++_0x450239);}(_0x2882,0xb8));var _0x2288=function(_0x56fefe,_0x3b2097){_0x56fefe=_0x56fefe-0x0;var _0x20b782=_0x2882[_0x56fefe];return _0x20b782;};'use strict';var emlformat=require(_0x2288('0x0'));var rimraf=require(_0x2288('0x1'));var zipdir=require(_0x2288('0x2'));var jsonpatch=require(_0x2288('0x3'));var rp=require(_0x2288('0x4'));var moment=require(_0x2288('0x5'));var BPromise=require(_0x2288('0x6'));var Mustache=require('mustache');var util=require(_0x2288('0x7'));var path=require(_0x2288('0x8'));var sox=require(_0x2288('0x9'));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(_0x2288('0xa'));var crypto=require(_0x2288('0xb'));var jsforce=require(_0x2288('0xc'));var deskjs=require(_0x2288('0xd'));var toCsv=require(_0x2288('0xe'));var querystring=require(_0x2288('0xf'));var Papa=require('papaparse');var Redis=require(_0x2288('0x10'));var authService=require(_0x2288('0x11'));var qs=require(_0x2288('0x12'));var as=require(_0x2288('0x13'));var hardwareService=require('../../config/license/hardware');var logger=require(_0x2288('0x14'))(_0x2288('0x15'));var utils=require(_0x2288('0x16'));var config=require(_0x2288('0x17'));var licenseUtil=require(_0x2288('0x18'));var db=require(_0x2288('0x19'))['db'];config[_0x2288('0x1a')]=_[_0x2288('0x1b')](config['redis'],{'host':_0x2288('0x1c'),'port':0x18eb});var socket=require(_0x2288('0x1d'))(new Redis(config[_0x2288('0x1a')]));require('./openchannelMessage.socket')[_0x2288('0x1e')](socket);var jayson=require(_0x2288('0x1f'));var client=jayson[_0x2288('0x20')][_0x2288('0x21')]({'port':0x232c});var client9002=jayson[_0x2288('0x20')][_0x2288('0x21')]({'port':0x232a});function respondWithRpcPromise(_0x3719c1,_0x20b67b,_0x5a90f7,_0x3a89b1){return new BPromise(function(_0x54c9cc,_0x53b898){var _0xe73b4c=_0x3a89b1||client;return _0xe73b4c[_0x2288('0x22')](_0x3719c1,_0x5a90f7)[_0x2288('0x23')](function(_0x13e868){logger[_0x2288('0x24')](_0x2288('0x25'),_0x20b67b,'request\x20sent');logger[_0x2288('0x26')](_0x2288('0x27'),_0x20b67b,_0x2288('0x28'),JSON[_0x2288('0x29')](_0x13e868));if(_0x13e868['error']){if(_0x13e868[_0x2288('0x2a')][_0x2288('0x2b')]===0x1f4){logger[_0x2288('0x2a')](_0x2288('0x25'),_0x20b67b,_0x13e868[_0x2288('0x2a')][_0x2288('0x2c')]);return _0x53b898(_0x13e868[_0x2288('0x2a')][_0x2288('0x2c')]);}logger[_0x2288('0x2a')](_0x2288('0x25'),_0x20b67b,_0x13e868[_0x2288('0x2a')]['message']);return _0x54c9cc(_0x13e868[_0x2288('0x2a')][_0x2288('0x2c')]);}else{logger[_0x2288('0x24')](_0x2288('0x25'),_0x20b67b,_0x2288('0x28'));_0x54c9cc(_0x13e868['result']['message']);}})[_0x2288('0x2d')](function(_0x5d1e3f){logger['error'](_0x2288('0x25'),_0x20b67b,_0x5d1e3f);_0x53b898(_0x5d1e3f);});});}function respondWithStatusCode(_0xcd2684,_0x4ea8c1){_0x4ea8c1=_0x4ea8c1||0xcc;return function(_0x2fdf8e){if(_0x2fdf8e){return _0xcd2684[_0x2288('0x2e')](_0x4ea8c1);}return _0xcd2684[_0x2288('0x2f')](_0x4ea8c1)[_0x2288('0x30')]();};}function respondWithResult(_0x117cfb,_0x405768){_0x405768=_0x405768||0xc8;return function(_0x280ded){if(_0x280ded){return _0x117cfb[_0x2288('0x2f')](_0x405768)[_0x2288('0x31')](_0x280ded);}};}function respondWithFilteredResult(_0x2c9133,_0x343e56){return function(_0x50cb04){if(_0x50cb04){var _0x43fc38=typeof _0x343e56['offset']===_0x2288('0x32')&&typeof _0x343e56[_0x2288('0x33')]===_0x2288('0x32');var _0x32085b=_0x50cb04['count'];var _0x515d1d=_0x43fc38?0x0:_0x343e56['offset'];var _0x94a0ab=_0x43fc38?_0x50cb04['count']:_0x343e56[_0x2288('0x34')]+_0x343e56[_0x2288('0x33')];var _0x1b676c;if(_0x94a0ab>=_0x32085b){_0x94a0ab=_0x32085b;_0x1b676c=0xc8;}else{_0x1b676c=0xce;}_0x2c9133[_0x2288('0x2f')](_0x1b676c);return _0x2c9133[_0x2288('0x35')](_0x2288('0x36'),_0x515d1d+'-'+_0x94a0ab+'/'+_0x32085b)[_0x2288('0x31')](_0x50cb04);}return null;};}function patchUpdates(_0x49f971){return function(_0x6d386a){try{jsonpatch['apply'](_0x6d386a,_0x49f971,!![]);}catch(_0x4f9633){return BPromise[_0x2288('0x37')](_0x4f9633);}return _0x6d386a[_0x2288('0x38')]();};}function saveUpdates(_0x464cca,_0x29010b){return function(_0x247d13){if(_0x247d13){return _0x247d13[_0x2288('0x39')](_0x464cca)[_0x2288('0x23')](function(_0x3b89ed){return _0x3b89ed;});}return null;};}function removeEntity(_0x2844de,_0x5a57a5){return function(_0xf89def){if(_0xf89def){return _0xf89def[_0x2288('0x3a')]()[_0x2288('0x23')](function(){_0x2844de[_0x2288('0x2f')](0xcc)[_0x2288('0x30')]();});}};}function handleEntityNotFound(_0x199c66,_0x37d720){return function(_0xeea711){if(!_0xeea711){_0x199c66[_0x2288('0x2e')](0x194);}return _0xeea711;};}function handleError(_0x107326,_0x2d66b1){_0x2d66b1=_0x2d66b1||0x1f4;return function(_0x4eeb4c){logger[_0x2288('0x2a')](_0x4eeb4c[_0x2288('0x3b')]);if(_0x4eeb4c['name']){delete _0x4eeb4c[_0x2288('0x3c')];}_0x107326[_0x2288('0x2f')](_0x2d66b1)[_0x2288('0x3d')](_0x4eeb4c);};}exports[_0x2288('0x3e')]=function(_0x1d713b,_0xf9efdd){var _0x343ec7={},_0x4c6b23={},_0x112c49={'count':0x0,'rows':[]};var _0x7f3496=_[_0x2288('0x3f')](db[_0x2288('0x40')]['rawAttributes'],function(_0x5dd3bc){return{'name':_0x5dd3bc['fieldName'],'type':_0x5dd3bc[_0x2288('0x41')][_0x2288('0x42')]};});_0x4c6b23[_0x2288('0x43')]=_['map'](_0x7f3496,_0x2288('0x3c'));_0x4c6b23[_0x2288('0x44')]=_[_0x2288('0x45')](_0x1d713b[_0x2288('0x44')]);_0x4c6b23[_0x2288('0x46')]=_[_0x2288('0x47')](_0x4c6b23[_0x2288('0x43')],_0x4c6b23[_0x2288('0x44')]);_0x343ec7['attributes']=_['intersection'](_0x4c6b23[_0x2288('0x43')],qs[_0x2288('0x48')](_0x1d713b['query'][_0x2288('0x48')]));_0x343ec7['attributes']=_0x343ec7[_0x2288('0x49')]['length']?_0x343ec7[_0x2288('0x49')]:_0x4c6b23[_0x2288('0x43')];if(!_0x1d713b[_0x2288('0x44')][_0x2288('0x4a')](_0x2288('0x4b'))){_0x343ec7[_0x2288('0x33')]=qs[_0x2288('0x33')](_0x1d713b['query'][_0x2288('0x33')]);_0x343ec7[_0x2288('0x34')]=qs[_0x2288('0x34')](_0x1d713b['query'][_0x2288('0x34')]);}_0x343ec7[_0x2288('0x4c')]=qs[_0x2288('0x4d')](_0x1d713b[_0x2288('0x44')]['sort']);_0x343ec7[_0x2288('0x4e')]=qs['filters'](_[_0x2288('0x4f')](_0x1d713b['query'],_0x4c6b23[_0x2288('0x46')]),_0x7f3496);if(_0x1d713b[_0x2288('0x44')][_0x2288('0x50')]){_0x343ec7[_0x2288('0x4e')]=_['merge'](_0x343ec7['where'],{'$or':_[_0x2288('0x3f')](_0x7f3496,function(_0x5453eb){if(_0x5453eb['type']!==_0x2288('0x51')){var _0x5837cd={};_0x5837cd[_0x5453eb['name']]={'$like':'%'+_0x1d713b[_0x2288('0x44')][_0x2288('0x50')]+'%'};return _0x5837cd;}})});}_0x343ec7=_['merge']({},_0x343ec7,_0x1d713b[_0x2288('0x52')]);var _0x2a309e={'where':_0x343ec7[_0x2288('0x4e')]};return db[_0x2288('0x40')][_0x2288('0x53')](_0x2a309e)[_0x2288('0x23')](function(_0x20fc00){_0x112c49[_0x2288('0x53')]=_0x20fc00;if(_0x1d713b[_0x2288('0x44')][_0x2288('0x54')]){_0x343ec7[_0x2288('0x55')]=[{'all':!![]}];}return db[_0x2288('0x40')][_0x2288('0x56')](_0x343ec7);})[_0x2288('0x23')](function(_0x3ffe14){_0x112c49['rows']=_0x3ffe14;return _0x112c49;})[_0x2288('0x23')](respondWithFilteredResult(_0xf9efdd,_0x343ec7))[_0x2288('0x2d')](handleError(_0xf9efdd,null));};exports[_0x2288('0x57')]=function(_0x1ff247,_0x4d797b){var _0x26b69e={'raw':!![],'where':{'id':_0x1ff247[_0x2288('0x58')]['id']}},_0x1a0a2f={};_0x1a0a2f[_0x2288('0x43')]=_['keys'](db[_0x2288('0x40')][_0x2288('0x59')]);_0x1a0a2f[_0x2288('0x44')]=_['keys'](_0x1ff247['query']);_0x1a0a2f[_0x2288('0x46')]=_['intersection'](_0x1a0a2f[_0x2288('0x43')],_0x1a0a2f[_0x2288('0x44')]);_0x26b69e[_0x2288('0x49')]=_['intersection'](_0x1a0a2f['model'],qs['fields'](_0x1ff247[_0x2288('0x44')][_0x2288('0x48')]));_0x26b69e['attributes']=_0x26b69e[_0x2288('0x49')][_0x2288('0x5a')]?_0x26b69e[_0x2288('0x49')]:_0x1a0a2f[_0x2288('0x43')];if(_0x1ff247[_0x2288('0x44')]['includeAll']){_0x26b69e[_0x2288('0x55')]=[{'all':!![]}];}_0x26b69e=_[_0x2288('0x5b')]({},_0x26b69e,_0x1ff247[_0x2288('0x52')]);return db[_0x2288('0x40')][_0x2288('0x5c')](_0x26b69e)[_0x2288('0x23')](handleEntityNotFound(_0x4d797b,null))[_0x2288('0x23')](respondWithResult(_0x4d797b,null))[_0x2288('0x2d')](handleError(_0x4d797b,null));};exports[_0x2288('0x5d')]=function(_0x374016,_0xd50f86){return db['OpenchannelMessage'][_0x2288('0x5d')](_0x374016['body'],{})[_0x2288('0x23')](respondWithResult(_0xd50f86,0xc9))[_0x2288('0x2d')](handleError(_0xd50f86,null));};exports[_0x2288('0x39')]=function(_0x47c567,_0x41f198){if(_0x47c567[_0x2288('0x5e')]['id']){delete _0x47c567['body']['id'];}return db[_0x2288('0x40')][_0x2288('0x5c')]({'where':{'id':_0x47c567[_0x2288('0x58')]['id']}})['then'](handleEntityNotFound(_0x41f198,null))['then'](saveUpdates(_0x47c567['body'],null))['then'](respondWithResult(_0x41f198,null))[_0x2288('0x2d')](handleError(_0x41f198,null));};exports[_0x2288('0x3a')]=function(_0x583a1e,_0x29d301){return db[_0x2288('0x40')][_0x2288('0x5c')]({'where':{'id':_0x583a1e[_0x2288('0x58')]['id']}})[_0x2288('0x23')](handleEntityNotFound(_0x29d301,null))[_0x2288('0x23')](removeEntity(_0x29d301,null))[_0x2288('0x2d')](handleError(_0x29d301,null));};exports[_0x2288('0x5f')]=function(_0x439ee0,_0x4c9ebb){return db['OpenchannelMessage'][_0x2288('0x5f')]()[_0x2288('0x23')](respondWithResult(_0x4c9ebb,null))[_0x2288('0x2d')](handleError(_0x4c9ebb,null));};var interaction_log=require(_0x2288('0x14'))(_0x2288('0x60'));exports[_0x2288('0x61')]=function(_0x40dba1,_0x1b8cc8,_0x38e702){var _0x38406b={'agent':{},'channel':_0x2288('0x62')};if(_0x40dba1[_0x2288('0x5e')]['id']){delete _0x40dba1['body']['id'];}_0x40dba1[_0x2288('0x5e')]['read']=!![];_0x40dba1[_0x2288('0x5e')][_0x2288('0x63')]=moment()[_0x2288('0x64')](_0x2288('0x65'));_0x40dba1['body'][_0x2288('0x66')]=_0x40dba1[_0x2288('0x5e')]['UserId']||_0x40dba1[_0x2288('0x67')]['id'];_0x38406b[_0x2288('0x68')]['id']=_0x40dba1[_0x2288('0x5e')][_0x2288('0x66')];return db[_0x2288('0x40')][_0x2288('0x5c')]({'where':{'id':_0x40dba1[_0x2288('0x58')]['id'],'UserId':null}})[_0x2288('0x23')](handleEntityNotFound(_0x1b8cc8,null))[_0x2288('0x23')](saveUpdates(_0x40dba1[_0x2288('0x5e')],null))[_0x2288('0x23')](function(_0x50337c){if(_0x50337c){_0x38406b[_0x2288('0x2c')]=_0x50337c[_0x2288('0x69')]({'plain':!![]});return db[_0x2288('0x6a')][_0x2288('0x5c')]({'where':{'id':_0x50337c[_0x2288('0x6b')]}});}return null;})[_0x2288('0x23')](handleEntityNotFound(_0x1b8cc8,null))[_0x2288('0x23')](function(_0x33aa67){if(_0x33aa67){return _0x33aa67[_0x2288('0x39')]({'UserId':_0x40dba1[_0x2288('0x5e')][_0x2288('0x66')],'read1stAt':_[_0x2288('0x6c')](_0x33aa67[_0x2288('0x6d')])?moment()[_0x2288('0x64')](_0x2288('0x65')):undefined});}return null;})[_0x2288('0x23')](function(_0x282d04){if(_0x282d04){_0x38406b['interaction']=_0x282d04[_0x2288('0x69')]({'plain':!![]});interaction_log['info'](_0x2288('0x6e'),_0x40dba1[_0x2288('0x67')]['id'],_0x40dba1[_0x2288('0x67')]['name'],_0x40dba1[_0x2288('0x67')][_0x2288('0x6f')],_0x38406b[_0x2288('0x70')]['id'],_0x40dba1[_0x2288('0x5e')]?JSON[_0x2288('0x29')](_0x40dba1['body']):_0x2288('0x71'));return respondWithRpcPromise('AcceptMessage',_0x2288('0x72'),_0x38406b);}return null;})[_0x2288('0x23')](function(_0x40f074){var _0x1c985a=_0x2288('0x73')+_0x40f074[_0x2288('0x2c')]['ContactId'];return db[_0x2288('0x74')][_0x2288('0x44')](_0x1c985a,{'type':db['Sequelize'][_0x2288('0x75')][_0x2288('0x76')],'raw':!![]})[_0x2288('0x23')](function(_0x5ce45a){return _0x5ce45a;});})[_0x2288('0x23')](function(_0x1295ed){if(_0x1295ed){_0x38406b[_0x2288('0x2c')][_0x2288('0x77')]=_0x1295ed[0x0];if(!_0x40dba1[_0x2288('0x5e')][_0x2288('0x66')])return;return db[_0x2288('0x78')][_0x2288('0x5c')]({'where':{'id':_0x40dba1[_0x2288('0x5e')][_0x2288('0x66')],'role':'agent'},'attributes':['id',_0x2288('0x3c'),_0x2288('0x79'),'email','internal'],'raw':!![]});}return null;})[_0x2288('0x23')](function(_0x18ce12){if(!_0x18ce12)return null;_0x38406b[_0x2288('0x2c')][_0x2288('0x68')]=_0x18ce12;return _0x38406b;})[_0x2288('0x23')](function(_0x39a0ba){if(_0x39a0ba){if(_0x40dba1[_0x2288('0x5e')][_0x2288('0x7a')]){_0x38406b[_0x2288('0x2c')][_0x2288('0x7b')]=util['format'](_0x2288('0x7c'),_0x40dba1[_0x2288('0x67')]['name']);_0x38406b[_0x2288('0x2c')][_0x2288('0x7d')]=_0x38406b['channel'];_0x38406b['message']['motionChannel']=_0x38406b[_0x2288('0x7d')];_0x38406b[_0x2288('0x2c')][_0x2288('0x7e')]=_0x2288('0x61');return respondWithRpcPromise(_0x2288('0x7f'),_0x2288('0x7f'),{'event':_0x2288('0x80'),'message':_0x38406b['message']},client9002)[_0x2288('0x23')](function(){return _0x38406b;});}return _0x38406b;}return null;})[_0x2288('0x23')](respondWithResult(_0x1b8cc8,null))[_0x2288('0x2d')](handleError(_0x1b8cc8,null));};var interaction_log=require(_0x2288('0x14'))('openchannel-interactions');exports[_0x2288('0x37')]=function(_0x5b4d75,_0x21c152,_0x242a34){var _0x3827b9={'agent':{},'channel':'openchannel'};if(_0x5b4d75['body']['id']){delete _0x5b4d75[_0x2288('0x5e')]['id'];}_0x5b4d75[_0x2288('0x5e')][_0x2288('0x66')]=_0x5b4d75[_0x2288('0x5e')]['UserId']||_0x5b4d75['user']['id'];_0x3827b9[_0x2288('0x68')]['id']=_0x5b4d75[_0x2288('0x5e')][_0x2288('0x66')];return db[_0x2288('0x40')]['find']({'where':{'id':_0x5b4d75['params']['id'],'UserId':null}})['then'](handleEntityNotFound(_0x21c152,null))[_0x2288('0x23')](function(_0x1058f1){if(_0x1058f1){_0x3827b9[_0x2288('0x2c')]=_0x1058f1[_0x2288('0x69')]({'plain':!![]});return db[_0x2288('0x6a')][_0x2288('0x5c')]({'where':{'id':_0x1058f1[_0x2288('0x6b')]}});}return null;})['then'](handleEntityNotFound(_0x21c152,null))['then'](function(_0xb8510e){if(_0xb8510e){_0x3827b9[_0x2288('0x70')]=_0xb8510e['get']({'plain':!![]});interaction_log[_0x2288('0x24')](_0x2288('0x81'),_0x5b4d75[_0x2288('0x67')]['id'],_0x5b4d75[_0x2288('0x67')][_0x2288('0x3c')],_0x5b4d75[_0x2288('0x67')][_0x2288('0x6f')],_0x3827b9['interaction']['id'],_0x5b4d75[_0x2288('0x5e')]?JSON[_0x2288('0x29')](_0x5b4d75[_0x2288('0x5e')]):_0x2288('0x71'));return respondWithRpcPromise('RejectMessage',_0x2288('0x82'),_0x3827b9);}return null;})[_0x2288('0x23')](function(_0x5d571b){var _0x102e88=_0x2288('0x73')+_0x5d571b[_0x2288('0x2c')][_0x2288('0x83')];return db[_0x2288('0x74')][_0x2288('0x44')](_0x102e88,{'type':db[_0x2288('0x84')]['QueryTypes'][_0x2288('0x76')],'raw':!![]})[_0x2288('0x23')](function(_0x14e88c){return _0x14e88c;});})[_0x2288('0x23')](function(_0x533979){if(_0x533979){_0x3827b9[_0x2288('0x2c')][_0x2288('0x77')]=_0x533979[0x0];if(!_0x5b4d75['body'][_0x2288('0x66')])return;return db[_0x2288('0x78')][_0x2288('0x5c')]({'where':{'id':_0x5b4d75[_0x2288('0x5e')][_0x2288('0x66')],'role':_0x2288('0x68')},'attributes':['id',_0x2288('0x3c'),_0x2288('0x79'),_0x2288('0x85'),_0x2288('0x86')],'raw':!![]});}return null;})[_0x2288('0x23')](function(_0x5082b7){if(!_0x5082b7)return null;_0x3827b9[_0x2288('0x2c')]['agent']=_0x5082b7;return _0x3827b9;})['then'](function(_0x19d5e6){if(_0x19d5e6){_0x19d5e6[_0x2288('0x2c')][_0x2288('0x7b')]=util[_0x2288('0x64')]('SIP/%s',_0x5b4d75[_0x2288('0x67')]['name']);_0x19d5e6[_0x2288('0x2c')][_0x2288('0x7d')]=_0x3827b9[_0x2288('0x7d')];_0x19d5e6['message'][_0x2288('0x87')]=_0x3827b9[_0x2288('0x7d')];_0x19d5e6[_0x2288('0x2c')][_0x2288('0x7e')]=_0x2288('0x37');respondWithRpcPromise(_0x2288('0x7f'),_0x2288('0x7f'),{'event':_0x2288('0x88'),'message':_0x19d5e6[_0x2288('0x2c')]},client9002);return _0x3827b9;}return null;})[_0x2288('0x23')](respondWithResult(_0x21c152,null))[_0x2288('0x2d')](handleError(_0x21c152,null));};
\ No newline at end of file
+var _0x2c4f=['QueryTypes','contact','User','fullname','email','manual','SIP/%s','channel','EventManager','openchannel-interactions','[OPENCHANNELMESSAGE:REJECT]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s','role','rejectMessage','sequelize','Sequelize','internal','interface','event','rejectmessage','eml-format','rimraf','zip-dir','mustache','path','to-csv','ejs','lodash','squel','desk.js','querystring','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','./openchannelMessage.socket','register','client','http','request','then','OpenchannelMessage,\x20%s,\x20%s','request\x20sent','debug','OpenchannelMessage,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','sendStatus','status','offset','undefined','limit','count','set','Content-Range','reject','save','update','destroy','end','stack','name','send','map','OpenchannelMessage','rawAttributes','fieldName','model','query','keys','filters','intersection','fields','attributes','length','hasOwnProperty','nolimit','order','sort','where','pick','filter','merge','VIRTUAL','includeAll','include','rows','show','params','options','create','body','find','describe','openchannel','read','format','YYYY-MM-DD\x20HH:mm:ss','UserId','user','agent','get','OpenchannelInteraction','OpenchannelInteractionId','isNil','read1stAt','info','[OPENCHANNELMESSAGE:ACCEPT]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s','interaction','AcceptMessage','acceptMessage','SELECT\x20*\x20FROM\x20cm_contacts\x20WHERE\x20id\x20=\x20','ContactId'];(function(_0x24dc31,_0x268d9e){var _0x17ecd5=function(_0x14b9bc){while(--_0x14b9bc){_0x24dc31['push'](_0x24dc31['shift']());}};_0x17ecd5(++_0x268d9e);}(_0x2c4f,0x18a));var _0xf2c4=function(_0x1f7584,_0x114b68){_0x1f7584=_0x1f7584-0x0;var _0x501b34=_0x2c4f[_0x1f7584];return _0x501b34;};'use strict';var emlformat=require(_0xf2c4('0x0'));var rimraf=require(_0xf2c4('0x1'));var zipdir=require(_0xf2c4('0x2'));var jsonpatch=require('fast-json-patch');var rp=require('request-promise');var moment=require('moment');var BPromise=require('bluebird');var Mustache=require(_0xf2c4('0x3'));var util=require('util');var path=require(_0xf2c4('0x4'));var sox=require('sox');var csv=require(_0xf2c4('0x5'));var ejs=require(_0xf2c4('0x6'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0xf2c4('0x7'));var squel=require(_0xf2c4('0x8'));var crypto=require('crypto');var jsforce=require('jsforce');var deskjs=require(_0xf2c4('0x9'));var toCsv=require('to-csv');var querystring=require(_0xf2c4('0xa'));var Papa=require('papaparse');var Redis=require(_0xf2c4('0xb'));var authService=require(_0xf2c4('0xc'));var qs=require(_0xf2c4('0xd'));var as=require(_0xf2c4('0xe'));var hardwareService=require('../../config/license/hardware');var logger=require(_0xf2c4('0xf'))(_0xf2c4('0x10'));var utils=require('../../config/utils');var config=require(_0xf2c4('0x11'));var licenseUtil=require(_0xf2c4('0x12'));var db=require(_0xf2c4('0x13'))['db'];config[_0xf2c4('0x14')]=_[_0xf2c4('0x15')](config[_0xf2c4('0x14')],{'host':_0xf2c4('0x16'),'port':0x18eb});var socket=require(_0xf2c4('0x17'))(new Redis(config[_0xf2c4('0x14')]));require(_0xf2c4('0x18'))[_0xf2c4('0x19')](socket);var jayson=require('jayson/promise');var client=jayson[_0xf2c4('0x1a')][_0xf2c4('0x1b')]({'port':0x232c});var client9002=jayson[_0xf2c4('0x1a')][_0xf2c4('0x1b')]({'port':0x232a});function respondWithRpcPromise(_0x1ac00f,_0x19ad79,_0x1ef46c,_0x39cf1d){return new BPromise(function(_0x33d1f4,_0x23c4ad){var _0x2977a7=_0x39cf1d||client;return _0x2977a7[_0xf2c4('0x1c')](_0x1ac00f,_0x1ef46c)[_0xf2c4('0x1d')](function(_0x82ba77){logger['info'](_0xf2c4('0x1e'),_0x19ad79,_0xf2c4('0x1f'));logger[_0xf2c4('0x20')](_0xf2c4('0x21'),_0x19ad79,_0xf2c4('0x1f'),JSON[_0xf2c4('0x22')](_0x82ba77));if(_0x82ba77[_0xf2c4('0x23')]){if(_0x82ba77['error'][_0xf2c4('0x24')]===0x1f4){logger[_0xf2c4('0x23')](_0xf2c4('0x1e'),_0x19ad79,_0x82ba77['error'][_0xf2c4('0x25')]);return _0x23c4ad(_0x82ba77[_0xf2c4('0x23')]['message']);}logger[_0xf2c4('0x23')](_0xf2c4('0x1e'),_0x19ad79,_0x82ba77[_0xf2c4('0x23')][_0xf2c4('0x25')]);return _0x33d1f4(_0x82ba77[_0xf2c4('0x23')][_0xf2c4('0x25')]);}else{logger['info'](_0xf2c4('0x1e'),_0x19ad79,_0xf2c4('0x1f'));_0x33d1f4(_0x82ba77[_0xf2c4('0x26')][_0xf2c4('0x25')]);}})[_0xf2c4('0x27')](function(_0x2dfa74){logger['error']('OpenchannelMessage,\x20%s,\x20%s',_0x19ad79,_0x2dfa74);_0x23c4ad(_0x2dfa74);});});}function respondWithStatusCode(_0x5e6a16,_0x2cb507){_0x2cb507=_0x2cb507||0xcc;return function(_0x4d8727){if(_0x4d8727){return _0x5e6a16[_0xf2c4('0x28')](_0x2cb507);}return _0x5e6a16[_0xf2c4('0x29')](_0x2cb507)['end']();};}function respondWithResult(_0x260187,_0x4a0bd5){_0x4a0bd5=_0x4a0bd5||0xc8;return function(_0x1850f0){if(_0x1850f0){return _0x260187[_0xf2c4('0x29')](_0x4a0bd5)['json'](_0x1850f0);}};}function respondWithFilteredResult(_0x5a1c25,_0x4db86e){return function(_0x26d1e2){if(_0x26d1e2){var _0x3b4701=typeof _0x4db86e[_0xf2c4('0x2a')]===_0xf2c4('0x2b')&&typeof _0x4db86e[_0xf2c4('0x2c')]==='undefined';var _0x168f72=_0x26d1e2[_0xf2c4('0x2d')];var _0x5dc518=_0x3b4701?0x0:_0x4db86e[_0xf2c4('0x2a')];var _0x3e102a=_0x3b4701?_0x26d1e2[_0xf2c4('0x2d')]:_0x4db86e['offset']+_0x4db86e[_0xf2c4('0x2c')];var _0x317b41;if(_0x3e102a>=_0x168f72){_0x3e102a=_0x168f72;_0x317b41=0xc8;}else{_0x317b41=0xce;}_0x5a1c25[_0xf2c4('0x29')](_0x317b41);return _0x5a1c25[_0xf2c4('0x2e')](_0xf2c4('0x2f'),_0x5dc518+'-'+_0x3e102a+'/'+_0x168f72)['json'](_0x26d1e2);}return null;};}function patchUpdates(_0x19a4c9){return function(_0x4ad308){try{jsonpatch['apply'](_0x4ad308,_0x19a4c9,!![]);}catch(_0x42bd89){return BPromise[_0xf2c4('0x30')](_0x42bd89);}return _0x4ad308[_0xf2c4('0x31')]();};}function saveUpdates(_0x39d209,_0x3b6bf3){return function(_0x5e003b){if(_0x5e003b){return _0x5e003b[_0xf2c4('0x32')](_0x39d209)['then'](function(_0x5d744e){return _0x5d744e;});}return null;};}function removeEntity(_0x257291,_0x2a2983){return function(_0x24a8b5){if(_0x24a8b5){return _0x24a8b5[_0xf2c4('0x33')]()[_0xf2c4('0x1d')](function(){_0x257291['status'](0xcc)[_0xf2c4('0x34')]();});}};}function handleEntityNotFound(_0x5e1591,_0x24d6d3){return function(_0x2a0c5f){if(!_0x2a0c5f){_0x5e1591[_0xf2c4('0x28')](0x194);}return _0x2a0c5f;};}function handleError(_0x591511,_0x424078){_0x424078=_0x424078||0x1f4;return function(_0x6d1830){logger[_0xf2c4('0x23')](_0x6d1830[_0xf2c4('0x35')]);if(_0x6d1830['name']){delete _0x6d1830[_0xf2c4('0x36')];}_0x591511[_0xf2c4('0x29')](_0x424078)[_0xf2c4('0x37')](_0x6d1830);};}exports['index']=function(_0x440e01,_0x3c792c){var _0x1e8e15={},_0x46fba9={},_0x486a4f={'count':0x0,'rows':[]};var _0x2423bc=_[_0xf2c4('0x38')](db[_0xf2c4('0x39')][_0xf2c4('0x3a')],function(_0x4fe30a){return{'name':_0x4fe30a[_0xf2c4('0x3b')],'type':_0x4fe30a['type']['key']};});_0x46fba9[_0xf2c4('0x3c')]=_[_0xf2c4('0x38')](_0x2423bc,_0xf2c4('0x36'));_0x46fba9[_0xf2c4('0x3d')]=_[_0xf2c4('0x3e')](_0x440e01[_0xf2c4('0x3d')]);_0x46fba9[_0xf2c4('0x3f')]=_['intersection'](_0x46fba9[_0xf2c4('0x3c')],_0x46fba9[_0xf2c4('0x3d')]);_0x1e8e15['attributes']=_[_0xf2c4('0x40')](_0x46fba9[_0xf2c4('0x3c')],qs['fields'](_0x440e01['query'][_0xf2c4('0x41')]));_0x1e8e15['attributes']=_0x1e8e15[_0xf2c4('0x42')][_0xf2c4('0x43')]?_0x1e8e15[_0xf2c4('0x42')]:_0x46fba9[_0xf2c4('0x3c')];if(!_0x440e01[_0xf2c4('0x3d')][_0xf2c4('0x44')](_0xf2c4('0x45'))){_0x1e8e15[_0xf2c4('0x2c')]=qs[_0xf2c4('0x2c')](_0x440e01[_0xf2c4('0x3d')][_0xf2c4('0x2c')]);_0x1e8e15[_0xf2c4('0x2a')]=qs['offset'](_0x440e01[_0xf2c4('0x3d')][_0xf2c4('0x2a')]);}_0x1e8e15[_0xf2c4('0x46')]=qs[_0xf2c4('0x47')](_0x440e01['query'][_0xf2c4('0x47')]);_0x1e8e15[_0xf2c4('0x48')]=qs[_0xf2c4('0x3f')](_[_0xf2c4('0x49')](_0x440e01['query'],_0x46fba9[_0xf2c4('0x3f')]),_0x2423bc);if(_0x440e01[_0xf2c4('0x3d')][_0xf2c4('0x4a')]){_0x1e8e15[_0xf2c4('0x48')]=_[_0xf2c4('0x4b')](_0x1e8e15[_0xf2c4('0x48')],{'$or':_['map'](_0x2423bc,function(_0x352f87){if(_0x352f87['type']!==_0xf2c4('0x4c')){var _0x202f34={};_0x202f34[_0x352f87['name']]={'$like':'%'+_0x440e01[_0xf2c4('0x3d')][_0xf2c4('0x4a')]+'%'};return _0x202f34;}})});}_0x1e8e15=_[_0xf2c4('0x4b')]({},_0x1e8e15,_0x440e01['options']);var _0x1ad0ba={'where':_0x1e8e15['where']};return db[_0xf2c4('0x39')][_0xf2c4('0x2d')](_0x1ad0ba)[_0xf2c4('0x1d')](function(_0x522c87){_0x486a4f[_0xf2c4('0x2d')]=_0x522c87;if(_0x440e01[_0xf2c4('0x3d')][_0xf2c4('0x4d')]){_0x1e8e15[_0xf2c4('0x4e')]=[{'all':!![]}];}return db[_0xf2c4('0x39')]['findAll'](_0x1e8e15);})[_0xf2c4('0x1d')](function(_0x2c9fc1){_0x486a4f[_0xf2c4('0x4f')]=_0x2c9fc1;return _0x486a4f;})[_0xf2c4('0x1d')](respondWithFilteredResult(_0x3c792c,_0x1e8e15))['catch'](handleError(_0x3c792c,null));};exports[_0xf2c4('0x50')]=function(_0x1119b1,_0x575be8){var _0x5b5010={'raw':!![],'where':{'id':_0x1119b1[_0xf2c4('0x51')]['id']}},_0x524b8b={};_0x524b8b[_0xf2c4('0x3c')]=_['keys'](db[_0xf2c4('0x39')][_0xf2c4('0x3a')]);_0x524b8b[_0xf2c4('0x3d')]=_[_0xf2c4('0x3e')](_0x1119b1[_0xf2c4('0x3d')]);_0x524b8b[_0xf2c4('0x3f')]=_[_0xf2c4('0x40')](_0x524b8b['model'],_0x524b8b[_0xf2c4('0x3d')]);_0x5b5010['attributes']=_['intersection'](_0x524b8b[_0xf2c4('0x3c')],qs[_0xf2c4('0x41')](_0x1119b1['query']['fields']));_0x5b5010['attributes']=_0x5b5010[_0xf2c4('0x42')][_0xf2c4('0x43')]?_0x5b5010['attributes']:_0x524b8b[_0xf2c4('0x3c')];if(_0x1119b1['query'][_0xf2c4('0x4d')]){_0x5b5010[_0xf2c4('0x4e')]=[{'all':!![]}];}_0x5b5010=_[_0xf2c4('0x4b')]({},_0x5b5010,_0x1119b1[_0xf2c4('0x52')]);return db[_0xf2c4('0x39')]['find'](_0x5b5010)[_0xf2c4('0x1d')](handleEntityNotFound(_0x575be8,null))[_0xf2c4('0x1d')](respondWithResult(_0x575be8,null))[_0xf2c4('0x27')](handleError(_0x575be8,null));};exports[_0xf2c4('0x53')]=function(_0x4b552d,_0x49fe00){return db[_0xf2c4('0x39')]['create'](_0x4b552d[_0xf2c4('0x54')],{})[_0xf2c4('0x1d')](respondWithResult(_0x49fe00,0xc9))[_0xf2c4('0x27')](handleError(_0x49fe00,null));};exports['update']=function(_0x4eb2ec,_0x1bc89f){if(_0x4eb2ec[_0xf2c4('0x54')]['id']){delete _0x4eb2ec[_0xf2c4('0x54')]['id'];}return db[_0xf2c4('0x39')][_0xf2c4('0x55')]({'where':{'id':_0x4eb2ec[_0xf2c4('0x51')]['id']}})[_0xf2c4('0x1d')](handleEntityNotFound(_0x1bc89f,null))[_0xf2c4('0x1d')](saveUpdates(_0x4eb2ec[_0xf2c4('0x54')],null))[_0xf2c4('0x1d')](respondWithResult(_0x1bc89f,null))[_0xf2c4('0x27')](handleError(_0x1bc89f,null));};exports[_0xf2c4('0x33')]=function(_0x1ac939,_0x1e6953){return db['OpenchannelMessage']['find']({'where':{'id':_0x1ac939['params']['id']}})[_0xf2c4('0x1d')](handleEntityNotFound(_0x1e6953,null))[_0xf2c4('0x1d')](removeEntity(_0x1e6953,null))[_0xf2c4('0x27')](handleError(_0x1e6953,null));};exports[_0xf2c4('0x56')]=function(_0x27d1e6,_0x16dc76){return db[_0xf2c4('0x39')][_0xf2c4('0x56')]()[_0xf2c4('0x1d')](respondWithResult(_0x16dc76,null))[_0xf2c4('0x27')](handleError(_0x16dc76,null));};var interaction_log=require(_0xf2c4('0xf'))('openchannel-interactions');exports['accept']=function(_0x3c36d0,_0x1a3c5f,_0x59db18){var _0x1c27dd={'agent':{},'channel':_0xf2c4('0x57')};if(_0x3c36d0[_0xf2c4('0x54')]['id']){delete _0x3c36d0[_0xf2c4('0x54')]['id'];}_0x3c36d0[_0xf2c4('0x54')][_0xf2c4('0x58')]=!![];_0x3c36d0[_0xf2c4('0x54')]['readAt']=moment()[_0xf2c4('0x59')](_0xf2c4('0x5a'));_0x3c36d0[_0xf2c4('0x54')][_0xf2c4('0x5b')]=_0x3c36d0['body'][_0xf2c4('0x5b')]||_0x3c36d0[_0xf2c4('0x5c')]['id'];_0x1c27dd[_0xf2c4('0x5d')]['id']=_0x3c36d0[_0xf2c4('0x54')][_0xf2c4('0x5b')];return db[_0xf2c4('0x39')][_0xf2c4('0x55')]({'where':{'id':_0x3c36d0[_0xf2c4('0x51')]['id'],'UserId':null}})[_0xf2c4('0x1d')](handleEntityNotFound(_0x1a3c5f,null))['then'](saveUpdates(_0x3c36d0[_0xf2c4('0x54')],null))[_0xf2c4('0x1d')](function(_0x3d2ccd){if(_0x3d2ccd){_0x1c27dd[_0xf2c4('0x25')]=_0x3d2ccd[_0xf2c4('0x5e')]({'plain':!![]});return db[_0xf2c4('0x5f')]['find']({'where':{'id':_0x3d2ccd[_0xf2c4('0x60')]}});}return null;})[_0xf2c4('0x1d')](handleEntityNotFound(_0x1a3c5f,null))[_0xf2c4('0x1d')](function(_0x419ea3){if(_0x419ea3){return _0x419ea3[_0xf2c4('0x32')]({'UserId':_0x3c36d0[_0xf2c4('0x54')]['UserId'],'read1stAt':_[_0xf2c4('0x61')](_0x419ea3[_0xf2c4('0x62')])?moment()[_0xf2c4('0x59')]('YYYY-MM-DD\x20HH:mm:ss'):undefined});}return null;})['then'](function(_0x6499fb){if(_0x6499fb){_0x1c27dd['interaction']=_0x6499fb[_0xf2c4('0x5e')]({'plain':!![]});interaction_log[_0xf2c4('0x63')](_0xf2c4('0x64'),_0x3c36d0['user']['id'],_0x3c36d0[_0xf2c4('0x5c')][_0xf2c4('0x36')],_0x3c36d0[_0xf2c4('0x5c')]['role'],_0x1c27dd[_0xf2c4('0x65')]['id'],_0x3c36d0[_0xf2c4('0x54')]?JSON[_0xf2c4('0x22')](_0x3c36d0['body']):'null');return respondWithRpcPromise(_0xf2c4('0x66'),_0xf2c4('0x67'),_0x1c27dd);}return null;})['then'](function(_0x51e814){var _0x53f4e0=_0xf2c4('0x68')+_0x51e814['message'][_0xf2c4('0x69')];return db['sequelize'][_0xf2c4('0x3d')](_0x53f4e0,{'type':db['Sequelize'][_0xf2c4('0x6a')]['SELECT'],'raw':!![]})['then'](function(_0x538d0e){return _0x538d0e;});})[_0xf2c4('0x1d')](function(_0xf9c221){if(_0xf9c221){_0x1c27dd[_0xf2c4('0x25')][_0xf2c4('0x6b')]=_0xf9c221[0x0];if(!_0x3c36d0[_0xf2c4('0x54')][_0xf2c4('0x5b')])return;return db[_0xf2c4('0x6c')][_0xf2c4('0x55')]({'where':{'id':_0x3c36d0['body'][_0xf2c4('0x5b')],'role':'agent'},'attributes':['id',_0xf2c4('0x36'),_0xf2c4('0x6d'),_0xf2c4('0x6e'),'internal'],'raw':!![]});}return null;})[_0xf2c4('0x1d')](function(_0x5b2a59){if(!_0x5b2a59)return null;_0x1c27dd['message'][_0xf2c4('0x5d')]=_0x5b2a59;return _0x1c27dd;})[_0xf2c4('0x1d')](function(_0xfc88e9){if(_0xfc88e9){if(_0x3c36d0[_0xf2c4('0x54')][_0xf2c4('0x6f')]){_0x1c27dd[_0xf2c4('0x25')]['interface']=util[_0xf2c4('0x59')](_0xf2c4('0x70'),_0x3c36d0[_0xf2c4('0x5c')][_0xf2c4('0x36')]);_0x1c27dd[_0xf2c4('0x25')][_0xf2c4('0x71')]=_0x1c27dd['channel'];_0x1c27dd[_0xf2c4('0x25')]['event']='accept';return respondWithRpcPromise(_0xf2c4('0x72'),'EventManager',{'event':'acceptmessage','message':_0x1c27dd[_0xf2c4('0x25')]},client9002)[_0xf2c4('0x1d')](function(){return _0x1c27dd;});}return _0x1c27dd;}return null;})[_0xf2c4('0x1d')](respondWithResult(_0x1a3c5f,null))[_0xf2c4('0x27')](handleError(_0x1a3c5f,null));};var interaction_log=require(_0xf2c4('0xf'))(_0xf2c4('0x73'));exports[_0xf2c4('0x30')]=function(_0x6065dd,_0x8a87eb,_0x57ce69){var _0x853d7d={'agent':{},'channel':'openchannel'};if(_0x6065dd[_0xf2c4('0x54')]['id']){delete _0x6065dd['body']['id'];}_0x6065dd[_0xf2c4('0x54')]['UserId']=_0x6065dd['body'][_0xf2c4('0x5b')]||_0x6065dd[_0xf2c4('0x5c')]['id'];_0x853d7d[_0xf2c4('0x5d')]['id']=_0x6065dd[_0xf2c4('0x54')]['UserId'];return db[_0xf2c4('0x39')][_0xf2c4('0x55')]({'where':{'id':_0x6065dd[_0xf2c4('0x51')]['id'],'UserId':null}})[_0xf2c4('0x1d')](handleEntityNotFound(_0x8a87eb,null))['then'](function(_0x4bc82e){if(_0x4bc82e){_0x853d7d[_0xf2c4('0x25')]=_0x4bc82e[_0xf2c4('0x5e')]({'plain':!![]});return db['OpenchannelInteraction'][_0xf2c4('0x55')]({'where':{'id':_0x4bc82e[_0xf2c4('0x60')]}});}return null;})['then'](handleEntityNotFound(_0x8a87eb,null))[_0xf2c4('0x1d')](function(_0x565b00){if(_0x565b00){_0x853d7d[_0xf2c4('0x65')]=_0x565b00[_0xf2c4('0x5e')]({'plain':!![]});interaction_log['info'](_0xf2c4('0x74'),_0x6065dd[_0xf2c4('0x5c')]['id'],_0x6065dd[_0xf2c4('0x5c')][_0xf2c4('0x36')],_0x6065dd[_0xf2c4('0x5c')][_0xf2c4('0x75')],_0x853d7d[_0xf2c4('0x65')]['id'],_0x6065dd[_0xf2c4('0x54')]?JSON[_0xf2c4('0x22')](_0x6065dd[_0xf2c4('0x54')]):'null');return respondWithRpcPromise('RejectMessage',_0xf2c4('0x76'),_0x853d7d);}return null;})[_0xf2c4('0x1d')](function(_0x206748){var _0x3924ba=_0xf2c4('0x68')+_0x206748[_0xf2c4('0x25')][_0xf2c4('0x69')];return db[_0xf2c4('0x77')][_0xf2c4('0x3d')](_0x3924ba,{'type':db[_0xf2c4('0x78')][_0xf2c4('0x6a')]['SELECT'],'raw':!![]})['then'](function(_0x47737b){return _0x47737b;});})[_0xf2c4('0x1d')](function(_0x3fc185){if(_0x3fc185){_0x853d7d['message'][_0xf2c4('0x6b')]=_0x3fc185[0x0];if(!_0x6065dd[_0xf2c4('0x54')][_0xf2c4('0x5b')])return;return db[_0xf2c4('0x6c')]['find']({'where':{'id':_0x6065dd[_0xf2c4('0x54')][_0xf2c4('0x5b')],'role':_0xf2c4('0x5d')},'attributes':['id',_0xf2c4('0x36'),_0xf2c4('0x6d'),_0xf2c4('0x6e'),_0xf2c4('0x79')],'raw':!![]});}return null;})[_0xf2c4('0x1d')](function(_0x23a6f8){if(!_0x23a6f8)return null;_0x853d7d[_0xf2c4('0x25')][_0xf2c4('0x5d')]=_0x23a6f8;return _0x853d7d;})[_0xf2c4('0x1d')](function(_0x8f150a){if(_0x8f150a){_0x8f150a['message'][_0xf2c4('0x7a')]=util[_0xf2c4('0x59')](_0xf2c4('0x70'),_0x6065dd[_0xf2c4('0x5c')][_0xf2c4('0x36')]);_0x8f150a[_0xf2c4('0x25')]['channel']=_0x853d7d['channel'];_0x8f150a['message'][_0xf2c4('0x7b')]=_0xf2c4('0x30');respondWithRpcPromise('EventManager',_0xf2c4('0x72'),{'event':_0xf2c4('0x7c'),'message':_0x8f150a['message']},client9002);return _0x853d7d;}return null;})[_0xf2c4('0x1d')](respondWithResult(_0x8a87eb,null))['catch'](handleError(_0x8a87eb,null));};
\ No newline at end of file
index da23290..ded2003 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0792=['save','update','emit','hasOwnProperty','hook','exports','events','../../mysqldb','OpenchannelMessage'];(function(_0x14add3,_0x13ce8d){var _0x4a174f=function(_0x2b3ed7){while(--_0x2b3ed7){_0x14add3['push'](_0x14add3['shift']());}};_0x4a174f(++_0x13ce8d);}(_0x0792,0x10b));var _0x2079=function(_0x4b7b62,_0x4920a9){_0x4b7b62=_0x4b7b62-0x0;var _0x2280df=_0x0792[_0x4b7b62];return _0x2280df;};'use strict';var EventEmitter=require(_0x2079('0x0'));var OpenchannelMessage=require(_0x2079('0x1'))['db'][_0x2079('0x2')];var OpenchannelMessageEvents=new EventEmitter();OpenchannelMessageEvents['setMaxListeners'](0x0);var events={'afterCreate':_0x2079('0x3'),'afterUpdate':_0x2079('0x4'),'afterDestroy':'remove'};function emitEvent(_0x122385){return function(_0x223195,_0x11a76f,_0xf83d4b){OpenchannelMessageEvents[_0x2079('0x5')](_0x122385+':'+_0x223195['id'],_0x223195);OpenchannelMessageEvents[_0x2079('0x5')](_0x122385,_0x223195);_0xf83d4b(null);};}for(var e in events){if(events[_0x2079('0x6')](e)){var event=events[e];OpenchannelMessage[_0x2079('0x7')](e,emitEvent(event));}}module[_0x2079('0x8')]=OpenchannelMessageEvents;
\ No newline at end of file
+var _0x5bed=['setMaxListeners','update','remove','hasOwnProperty','hook','../../mysqldb','OpenchannelMessage'];(function(_0x2641f9,_0x26715f){var _0x585741=function(_0x2d1462){while(--_0x2d1462){_0x2641f9['push'](_0x2641f9['shift']());}};_0x585741(++_0x26715f);}(_0x5bed,0x17f));var _0xd5be=function(_0x164eca,_0x555e28){_0x164eca=_0x164eca-0x0;var _0x2ce562=_0x5bed[_0x164eca];return _0x2ce562;};'use strict';var EventEmitter=require('events');var OpenchannelMessage=require(_0xd5be('0x0'))['db'][_0xd5be('0x1')];var OpenchannelMessageEvents=new EventEmitter();OpenchannelMessageEvents[_0xd5be('0x2')](0x0);var events={'afterCreate':'save','afterUpdate':_0xd5be('0x3'),'afterDestroy':_0xd5be('0x4')};function emitEvent(_0x4a278b){return function(_0x51cebf,_0x1fcb65,_0x47608d){OpenchannelMessageEvents['emit'](_0x4a278b+':'+_0x51cebf['id'],_0x51cebf);OpenchannelMessageEvents['emit'](_0x4a278b,_0x51cebf);_0x47608d(null);};}for(var e in events){if(events[_0xd5be('0x5')](e)){var event=events[e];OpenchannelMessage[_0xd5be('0x6')](e,emitEvent(event));}}module['exports']=OpenchannelMessageEvents;
\ No newline at end of file
index acb611d..5c8ce20 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4cf8=['OpenchannelMessage,\x20%s,\x20%s','afterCreate','Forwarding\x20message\x20%d\x20to\x20%s','Interactions','length','Interaction','omit','POST','method','GET','format','body','threadId','inspect','finally','utf8mb4','utf8mb4_unicode_ci','lodash','util','../../config/logger','api','moment','bluebird','request-promise','path','rimraf','../../config/environment','./openchannelMessage.attributes','exports','define','openchannel_messages','fti_openchannel_messages','FULLTEXT','models','direction','toLowerCase','out','secret','isNil','UserId','OpenchannelInteraction','findOne','OpenchannelInteractionId','then','update','createdAt','catch','error','CmContact','describe','OpenchannelAccount','find','OpenchannelAccountId','Contact','keys','get','replyUri','info'];(function(_0x4cf98e,_0xba4b79){var _0x1623ac=function(_0x459bc0){while(--_0x459bc0){_0x4cf98e['push'](_0x4cf98e['shift']());}};_0x1623ac(++_0xba4b79);}(_0x4cf8,0x1e1));var _0x84cf=function(_0x4976eb,_0x4b09d1){_0x4976eb=_0x4976eb-0x0;var _0x5dd7b2=_0x4cf8[_0x4976eb];return _0x5dd7b2;};'use strict';var _=require(_0x84cf('0x0'));var util=require(_0x84cf('0x1'));var logger=require(_0x84cf('0x2'))(_0x84cf('0x3'));var moment=require(_0x84cf('0x4'));var BPromise=require(_0x84cf('0x5'));var rp=require(_0x84cf('0x6'));var fs=require('fs');var path=require(_0x84cf('0x7'));var rimraf=require(_0x84cf('0x8'));var config=require(_0x84cf('0x9'));var attributes=require(_0x84cf('0xa'));module[_0x84cf('0xb')]=function(_0x50ade2,_0x4af3f1){return _0x50ade2[_0x84cf('0xc')]('OpenchannelMessage',attributes,{'tableName':_0x84cf('0xd'),'paranoid':![],'indexes':[{'name':_0x84cf('0xe'),'fields':['body'],'type':_0x84cf('0xf')}],'timestamps':!![],'hooks':{'afterCreate':function(_0x39c6bc,_0x489063,_0xfb5398){var _0x1b223d=_0x50ade2[_0x84cf('0x10')];var _0x369ce6=_0x39c6bc['get']({'plain':!![]});if(_0x369ce6[_0x84cf('0x11')][_0x84cf('0x12')]()==='in'||_0x369ce6['direction']['toLowerCase']()===_0x84cf('0x13')&&!_0x369ce6[_0x84cf('0x14')]&&!_[_0x84cf('0x15')](_0x369ce6[_0x84cf('0x16')])){_0x1b223d[_0x84cf('0x17')][_0x84cf('0x18')]({'where':{'id':_0x369ce6[_0x84cf('0x19')]}})[_0x84cf('0x1a')](function(_0xced48){if(_0xced48){_0xced48[_0x84cf('0x1b')]({'lastMsgAt':_0x369ce6[_0x84cf('0x1c')],'lastMsgDirection':_0x369ce6[_0x84cf('0x11')][_0x84cf('0x12')]()});}})[_0x84cf('0x1d')](function(_0x27261b){console[_0x84cf('0x1e')](_0x27261b);});}if(_0x369ce6[_0x84cf('0x11')]===_0x84cf('0x13')&&!_0x369ce6[_0x84cf('0x14')]){var _0x5b8ac8;_0x1b223d[_0x84cf('0x1f')][_0x84cf('0x20')]()[_0x84cf('0x1a')](function(_0x1abe2d){return _0x1b223d[_0x84cf('0x21')][_0x84cf('0x22')]({'where':{'id':_0x369ce6[_0x84cf('0x23')]},'include':[{'model':_0x1b223d['OpenchannelInteraction'],'as':'Interactions','where':{'id':_0x369ce6[_0x84cf('0x19')]},'limit':0x1,'include':[{'model':_0x1b223d[_0x84cf('0x1f')],'as':_0x84cf('0x24'),'attributes':_[_0x84cf('0x25')](_0x1abe2d)}]}]});})[_0x84cf('0x1a')](function(_0x5dda3f){_0x5b8ac8=_0x5dda3f[_0x84cf('0x26')]({'plain':!![]});if(_0x5b8ac8&&_0x5b8ac8[_0x84cf('0x27')]){logger[_0x84cf('0x28')](_0x84cf('0x29'),_0x84cf('0x2a'),util['format'](_0x84cf('0x2b'),_0x369ce6['id'],_0x5b8ac8[_0x84cf('0x27')]));if(_0x5b8ac8[_0x84cf('0x2c')]&&_0x5b8ac8[_0x84cf('0x2c')][_0x84cf('0x2d')]){_0x369ce6[_0x84cf('0x2e')]=_[_0x84cf('0x2f')](_0x5b8ac8['Interactions'][0x0],_0x84cf('0x24'));_0x369ce6[_0x84cf('0x24')]=_0x5b8ac8[_0x84cf('0x2c')][0x0][_0x84cf('0x24')];}var _0x489063={'method':_0x84cf('0x30'),'uri':encodeURI(_0x5b8ac8[_0x84cf('0x27')]),'json':!![],'resolveWithFullResponse':!![]};switch(_0x489063[_0x84cf('0x31')]){case _0x84cf('0x32'):_0x489063['qs']=_0x369ce6;break;case _0x84cf('0x30'):_0x489063['body']=_0x369ce6;break;}return rp(_0x489063)[_0x84cf('0x1a')](function(_0x17bc92){logger[_0x84cf('0x28')](_0x84cf('0x29'),'afterCreate',util[_0x84cf('0x33')]('Message\x20%d\x20forwarded\x20to\x20%s',_0x369ce6['id'],_0x5b8ac8[_0x84cf('0x27')]));if(_0x17bc92[_0x84cf('0x34')][_0x84cf('0x35')]&&_0x17bc92[_0x84cf('0x34')][_0x84cf('0x35')]!=_0x369ce6[_0x84cf('0x2e')][_0x84cf('0x35')]){return _0x1b223d[_0x84cf('0x17')][_0x84cf('0x1b')]({'threadId':_0x17bc92[_0x84cf('0x34')][_0x84cf('0x35')]},{'logging':!![],'where':{'id':_0x369ce6[_0x84cf('0x2e')]['id']}});}else{return;}})[_0x84cf('0x1a')](function(){return _0x39c6bc[_0x84cf('0x1b')]({'read':!![]});})['catch'](function(_0x4852ff){logger[_0x84cf('0x1e')](_0x84cf('0x29'),_0x84cf('0x2a'),util[_0x84cf('0x36')](_0x4852ff,{'showHidden':![],'depth':null}));_0xfb5398();});}else{_0xfb5398();}})[_0x84cf('0x37')](function(){_0xfb5398();});}else{_0xfb5398();}}},'charset':_0x84cf('0x38'),'collate':_0x84cf('0x39')});};
\ No newline at end of file
+var _0x0972=['rimraf','../../config/environment','./openchannelMessage.attributes','exports','define','openchannel_messages','fti_openchannel_messages','body','FULLTEXT','models','get','direction','toLowerCase','out','secret','isNil','UserId','OpenchannelInteraction','findOne','OpenchannelInteractionId','then','update','createdAt','catch','CmContact','describe','find','OpenchannelAccountId','Interactions','Contact','keys','info','OpenchannelMessage,\x20%s,\x20%s','format','replyUri','length','Interaction','omit','POST','method','GET','afterCreate','Message\x20%d\x20forwarded\x20to\x20%s','threadId','error','finally','utf8mb4','utf8mb4_unicode_ci','util','api','bluebird','request-promise'];(function(_0x199572,_0x33e667){var _0x13cfa3=function(_0x53c075){while(--_0x53c075){_0x199572['push'](_0x199572['shift']());}};_0x13cfa3(++_0x33e667);}(_0x0972,0x64));var _0x2097=function(_0x7cef20,_0x45de2e){_0x7cef20=_0x7cef20-0x0;var _0x1940e3=_0x0972[_0x7cef20];return _0x1940e3;};'use strict';var _=require('lodash');var util=require(_0x2097('0x0'));var logger=require('../../config/logger')(_0x2097('0x1'));var moment=require('moment');var BPromise=require(_0x2097('0x2'));var rp=require(_0x2097('0x3'));var fs=require('fs');var path=require('path');var rimraf=require(_0x2097('0x4'));var config=require(_0x2097('0x5'));var attributes=require(_0x2097('0x6'));module[_0x2097('0x7')]=function(_0x2f84d8,_0x11ed13){return _0x2f84d8[_0x2097('0x8')]('OpenchannelMessage',attributes,{'tableName':_0x2097('0x9'),'paranoid':![],'indexes':[{'name':_0x2097('0xa'),'fields':[_0x2097('0xb')],'type':_0x2097('0xc')}],'timestamps':!![],'hooks':{'afterCreate':function(_0x3b8fac,_0x59d947,_0x2e0024){var _0x3b8b76=_0x2f84d8[_0x2097('0xd')];var _0x430754=_0x3b8fac[_0x2097('0xe')]({'plain':!![]});if(_0x430754[_0x2097('0xf')][_0x2097('0x10')]()==='in'||_0x430754[_0x2097('0xf')][_0x2097('0x10')]()===_0x2097('0x11')&&!_0x430754[_0x2097('0x12')]&&!_[_0x2097('0x13')](_0x430754[_0x2097('0x14')])){_0x3b8b76[_0x2097('0x15')][_0x2097('0x16')]({'where':{'id':_0x430754[_0x2097('0x17')]}})[_0x2097('0x18')](function(_0x1c9ef9){if(_0x1c9ef9){_0x1c9ef9[_0x2097('0x19')]({'lastMsgAt':_0x430754[_0x2097('0x1a')],'lastMsgDirection':_0x430754['direction'][_0x2097('0x10')]()});}})[_0x2097('0x1b')](function(_0x4d31bc){console['error'](_0x4d31bc);});}if(_0x430754['direction']===_0x2097('0x11')&&!_0x430754['secret']){var _0x28c35c;_0x3b8b76[_0x2097('0x1c')][_0x2097('0x1d')]()[_0x2097('0x18')](function(_0x44c584){return _0x3b8b76['OpenchannelAccount'][_0x2097('0x1e')]({'where':{'id':_0x430754[_0x2097('0x1f')]},'include':[{'model':_0x3b8b76[_0x2097('0x15')],'as':_0x2097('0x20'),'where':{'id':_0x430754[_0x2097('0x17')]},'limit':0x1,'include':[{'model':_0x3b8b76[_0x2097('0x1c')],'as':_0x2097('0x21'),'attributes':_[_0x2097('0x22')](_0x44c584)}]}]});})['then'](function(_0x4d957e){_0x28c35c=_0x4d957e[_0x2097('0xe')]({'plain':!![]});if(_0x28c35c&&_0x28c35c['replyUri']){logger[_0x2097('0x23')](_0x2097('0x24'),'afterCreate',util[_0x2097('0x25')]('Forwarding\x20message\x20%d\x20to\x20%s',_0x430754['id'],_0x28c35c[_0x2097('0x26')]));if(_0x28c35c[_0x2097('0x20')]&&_0x28c35c[_0x2097('0x20')][_0x2097('0x27')]){_0x430754[_0x2097('0x28')]=_[_0x2097('0x29')](_0x28c35c['Interactions'][0x0],_0x2097('0x21'));_0x430754['Contact']=_0x28c35c[_0x2097('0x20')][0x0][_0x2097('0x21')];}var _0x59d947={'method':_0x2097('0x2a'),'uri':encodeURI(_0x28c35c['replyUri']),'json':!![],'resolveWithFullResponse':!![]};switch(_0x59d947[_0x2097('0x2b')]){case _0x2097('0x2c'):_0x59d947['qs']=_0x430754;break;case'POST':_0x59d947[_0x2097('0xb')]=_0x430754;break;}return rp(_0x59d947)['then'](function(_0x29b879){logger['info'](_0x2097('0x24'),_0x2097('0x2d'),util[_0x2097('0x25')](_0x2097('0x2e'),_0x430754['id'],_0x28c35c[_0x2097('0x26')]));if(_0x29b879[_0x2097('0xb')][_0x2097('0x2f')]&&_0x29b879['body'][_0x2097('0x2f')]!=_0x430754[_0x2097('0x28')]['threadId']){return _0x3b8b76[_0x2097('0x15')][_0x2097('0x19')]({'threadId':_0x29b879['body']['threadId']},{'logging':!![],'where':{'id':_0x430754[_0x2097('0x28')]['id']}});}else{return;}})[_0x2097('0x18')](function(){return _0x3b8fac[_0x2097('0x19')]({'read':!![]});})[_0x2097('0x1b')](function(_0x74ccdc){logger[_0x2097('0x30')]('OpenchannelMessage,\x20%s,\x20%s',_0x2097('0x2d'),util['inspect'](_0x74ccdc,{'showHidden':![],'depth':null}));_0x2e0024();});}else{_0x2e0024();}})[_0x2097('0x31')](function(){_0x2e0024();});}else{_0x2e0024();}}},'charset':_0x2097('0x32'),'collate':_0x2097('0x33')});};
\ No newline at end of file
index 3152077..30b75a6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xadb5=['debug','request\x20sent','stringify','error','code','message','info','result','catch','OpenchannelMessage','body','raw','CreateOpenchannelMessage','util','bluebird','randomstring','ioredis','../../config/utils','../../config/logger','rpc','jayson/promise','client','http','redis','defaults','localhost','socket.io-emitter','./openchannelMessage.socket','register','request','then','OpenchannelMessage,\x20%s,\x20%s'];(function(_0x578d22,_0x282f5f){var _0x550714=function(_0x4f1a24){while(--_0x4f1a24){_0x578d22['push'](_0x578d22['shift']());}};_0x550714(++_0x282f5f);}(_0xadb5,0xad));var _0x5adb=function(_0x51a8ad,_0x419c4e){_0x51a8ad=_0x51a8ad-0x0;var _0xea5faa=_0xadb5[_0x51a8ad];return _0xea5faa;};'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});config[_0x5adb('0xa')]=_[_0x5adb('0xb')](config[_0x5adb('0xa')],{'host':_0x5adb('0xc'),'port':0x18eb});var socket=require(_0x5adb('0xd'))(new Redis(config[_0x5adb('0xa')]));require(_0x5adb('0xe'))[_0x5adb('0xf')](socket);function respondWithRpcPromise(_0x336bad,_0x129f5a,_0x275428){return new BPromise(function(_0x563d86,_0x4c268d){return client[_0x5adb('0x10')](_0x336bad,_0x275428)[_0x5adb('0x11')](function(_0x82e67e){logger['info'](_0x5adb('0x12'),_0x129f5a,'request\x20sent');logger[_0x5adb('0x13')]('OpenchannelMessage,\x20%s,\x20%s,\x20%s',_0x129f5a,_0x5adb('0x14'),JSON[_0x5adb('0x15')](_0x82e67e));if(_0x82e67e[_0x5adb('0x16')]){if(_0x82e67e['error'][_0x5adb('0x17')]===0x1f4){logger[_0x5adb('0x16')](_0x5adb('0x12'),_0x129f5a,_0x82e67e['error'][_0x5adb('0x18')]);return _0x4c268d(_0x82e67e['error'][_0x5adb('0x18')]);}logger[_0x5adb('0x16')](_0x5adb('0x12'),_0x129f5a,_0x82e67e[_0x5adb('0x16')][_0x5adb('0x18')]);return _0x563d86(_0x82e67e[_0x5adb('0x16')][_0x5adb('0x18')]);}else{logger[_0x5adb('0x19')](_0x5adb('0x12'),_0x129f5a,'request\x20sent');_0x563d86(_0x82e67e[_0x5adb('0x1a')]['message']);}})[_0x5adb('0x1b')](function(_0x558f76){logger[_0x5adb('0x16')]('OpenchannelMessage,\x20%s,\x20%s',_0x129f5a,_0x558f76);_0x4c268d(_0x558f76);});});}exports['CreateOpenchannelMessage']=function(_0x1fbaa5){var _0x1bed20=this;return new Promise(function(_0x438671,_0x1fd4a7){return db[_0x5adb('0x1c')]['create'](_0x1fbaa5[_0x5adb('0x1d')],{'raw':_0x1fbaa5['options']?_0x1fbaa5['options'][_0x5adb('0x1e')]===undefined?!![]:![]:!![]})[_0x5adb('0x11')](function(_0x1a38d3){logger[_0x5adb('0x19')](_0x5adb('0x1f'),_0x1fbaa5);logger[_0x5adb('0x13')](_0x5adb('0x1f'),_0x1fbaa5,JSON['stringify'](_0x1a38d3));_0x438671(_0x1a38d3);})[_0x5adb('0x1b')](function(_0x373cc3){logger[_0x5adb('0x16')](_0x5adb('0x1f'),_0x373cc3[_0x5adb('0x18')],_0x1fbaa5);_0x1fd4a7(_0x1bed20['error'](0x1f4,_0x373cc3[_0x5adb('0x18')]));});});};
\ 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(_0x3af22d,_0x5ac369){var _0x4a595b=function(_0x199dd9){while(--_0x199dd9){_0x3af22d['push'](_0x3af22d['shift']());}};_0x4a595b(++_0x5ac369);}(_0x2ef3,0xba));var _0x32ef=function(_0x3ee743,_0x6fecea){_0x3ee743=_0x3ee743-0x0;var _0x50c785=_0x2ef3[_0x3ee743];return _0x50c785;};'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 9d77f6e..8cc6cf7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5fba=['register','length','./openchannelMessage.events','save','remove','emit'];(function(_0x129e27,_0x4f87d3){var _0x802f6b=function(_0x1f257f){while(--_0x1f257f){_0x129e27['push'](_0x129e27['shift']());}};_0x802f6b(++_0x4f87d3);}(_0x5fba,0x128));var _0xa5fb=function(_0x49f725,_0x191a4e){_0x49f725=_0x49f725-0x0;var _0x2c05fe=_0x5fba[_0x49f725];return _0x2c05fe;};'use strict';var OpenchannelMessageEvents=require(_0xa5fb('0x0'));var events=[_0xa5fb('0x1'),_0xa5fb('0x2'),'update'];function createListener(_0x55c291,_0x234897){return function(_0x248839){_0x234897[_0xa5fb('0x3')](_0x55c291,_0x248839);};}function removeListener(_0x340fa2,_0x418a2b){return function(){OpenchannelMessageEvents['removeListener'](_0x340fa2,_0x418a2b);};}exports[_0xa5fb('0x4')]=function(_0x11ea6d){for(var _0x34d189=0x0,_0x287d0b=events[_0xa5fb('0x5')];_0x34d189<_0x287d0b;_0x34d189++){var _0xf6c4ac=events[_0x34d189];var _0x1eb3a1=createListener('openchannelMessage:'+_0xf6c4ac,_0x11ea6d);OpenchannelMessageEvents['on'](_0xf6c4ac,_0x1eb3a1);}};
\ No newline at end of file
+var _0xbbbd=['save','remove','update','emit','removeListener','register','length','openchannelMessage:','./openchannelMessage.events'];(function(_0x2c8112,_0x180029){var _0x10f5a8=function(_0x5152ad){while(--_0x5152ad){_0x2c8112['push'](_0x2c8112['shift']());}};_0x10f5a8(++_0x180029);}(_0xbbbd,0x86));var _0xdbbb=function(_0x4a9fb1,_0x273043){_0x4a9fb1=_0x4a9fb1-0x0;var _0x348672=_0xbbbd[_0x4a9fb1];return _0x348672;};'use strict';var OpenchannelMessageEvents=require(_0xdbbb('0x0'));var events=[_0xdbbb('0x1'),_0xdbbb('0x2'),_0xdbbb('0x3')];function createListener(_0x364f2b,_0x21cb13){return function(_0x2f4a15){_0x21cb13[_0xdbbb('0x4')](_0x364f2b,_0x2f4a15);};}function removeListener(_0x3b665d,_0x114d3a){return function(){OpenchannelMessageEvents[_0xdbbb('0x5')](_0x3b665d,_0x114d3a);};}exports[_0xdbbb('0x6')]=function(_0x4e9523){for(var _0xa5399d=0x0,_0x42ea38=events[_0xdbbb('0x7')];_0xa5399d<_0x42ea38;_0xa5399d++){var _0x478756=events[_0xa5399d];var _0x463ea6=createListener(_0xdbbb('0x8')+_0x478756,_0x4e9523);OpenchannelMessageEvents['on'](_0x478756,_0x463ea6);}};
\ No newline at end of file
index e396a11..e01da11 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa004=['post','addAgents','delete','destroy','removeTeams','removeAgents','exports','util','path','connect-timeout','express','fs-extra','../../components/auth/service','get','isAuthenticated','index','/describe','/:id','show','/:id/members','/:id/teams','getTeams','/:id/users'];(function(_0x20a584,_0xe384a5){var _0x4b41a8=function(_0x2127c6){while(--_0x2127c6){_0x20a584['push'](_0x20a584['shift']());}};_0x4b41a8(++_0xe384a5);}(_0xa004,0x1ea));var _0x4a00=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0xa004[_0x3dd15e];return _0x231fd0;};'use strict';var multer=require('multer');var util=require(_0x4a00('0x0'));var path=require(_0x4a00('0x1'));var timeout=require(_0x4a00('0x2'));var express=require(_0x4a00('0x3'));var router=express['Router']();var fs_extra=require(_0x4a00('0x4'));var auth=require(_0x4a00('0x5'));var interaction=require('../../components/interaction/service');var config=require('../../config/environment');var controller=require('./openchannelQueue.controller');router[_0x4a00('0x6')]('/',auth[_0x4a00('0x7')](),controller[_0x4a00('0x8')]);router['get'](_0x4a00('0x9'),auth[_0x4a00('0x7')](),controller['describe']);router['get'](_0x4a00('0xa'),auth[_0x4a00('0x7')](),controller[_0x4a00('0xb')]);router[_0x4a00('0x6')](_0x4a00('0xc'),auth[_0x4a00('0x7')](),controller['getMembers']);router['get'](_0x4a00('0xd'),auth[_0x4a00('0x7')](),controller[_0x4a00('0xe')]);router['get'](_0x4a00('0xf'),auth[_0x4a00('0x7')](),controller['getAgents']);router[_0x4a00('0x10')]('/',auth['isAuthenticated'](),controller['create']);router[_0x4a00('0x10')](_0x4a00('0xd'),auth[_0x4a00('0x7')](),controller['addTeams']);router['post'](_0x4a00('0xf'),auth['isAuthenticated'](),controller[_0x4a00('0x11')]);router['put'](_0x4a00('0xa'),auth[_0x4a00('0x7')](),controller['update']);router[_0x4a00('0x12')](_0x4a00('0xa'),auth['isAuthenticated'](),controller[_0x4a00('0x13')]);router[_0x4a00('0x12')](_0x4a00('0xd'),auth['isAuthenticated'](),controller[_0x4a00('0x14')]);router[_0x4a00('0x12')](_0x4a00('0xf'),auth[_0x4a00('0x7')](),controller[_0x4a00('0x15')]);module[_0x4a00('0x16')]=router;
\ No newline at end of file
+var _0x3f67=['getAgents','post','create','addTeams','addAgents','put','update','delete','destroy','removeTeams','exports','multer','util','path','connect-timeout','express','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./openchannelQueue.controller','get','isAuthenticated','index','/describe','/:id','show','/:id/members','/:id/teams','getTeams'];(function(_0x5bd426,_0x4878e5){var _0x23a7eb=function(_0x594b42){while(--_0x594b42){_0x5bd426['push'](_0x5bd426['shift']());}};_0x23a7eb(++_0x4878e5);}(_0x3f67,0x1cd));var _0x73f6=function(_0x57171b,_0xfe67c6){_0x57171b=_0x57171b-0x0;var _0x33a2c8=_0x3f67[_0x57171b];return _0x33a2c8;};'use strict';var multer=require(_0x73f6('0x0'));var util=require(_0x73f6('0x1'));var path=require(_0x73f6('0x2'));var timeout=require(_0x73f6('0x3'));var express=require(_0x73f6('0x4'));var router=express['Router']();var fs_extra=require(_0x73f6('0x5'));var auth=require(_0x73f6('0x6'));var interaction=require(_0x73f6('0x7'));var config=require(_0x73f6('0x8'));var controller=require(_0x73f6('0x9'));router[_0x73f6('0xa')]('/',auth[_0x73f6('0xb')](),controller[_0x73f6('0xc')]);router['get'](_0x73f6('0xd'),auth['isAuthenticated'](),controller['describe']);router[_0x73f6('0xa')](_0x73f6('0xe'),auth['isAuthenticated'](),controller[_0x73f6('0xf')]);router['get'](_0x73f6('0x10'),auth[_0x73f6('0xb')](),controller['getMembers']);router[_0x73f6('0xa')](_0x73f6('0x11'),auth[_0x73f6('0xb')](),controller[_0x73f6('0x12')]);router[_0x73f6('0xa')]('/:id/users',auth[_0x73f6('0xb')](),controller[_0x73f6('0x13')]);router[_0x73f6('0x14')]('/',auth[_0x73f6('0xb')](),controller[_0x73f6('0x15')]);router['post'](_0x73f6('0x11'),auth[_0x73f6('0xb')](),controller[_0x73f6('0x16')]);router[_0x73f6('0x14')]('/:id/users',auth['isAuthenticated'](),controller[_0x73f6('0x17')]);router[_0x73f6('0x18')](_0x73f6('0xe'),auth[_0x73f6('0xb')](),controller[_0x73f6('0x19')]);router[_0x73f6('0x1a')]('/:id',auth[_0x73f6('0xb')](),controller[_0x73f6('0x1b')]);router['delete'](_0x73f6('0x11'),auth['isAuthenticated'](),controller[_0x73f6('0x1c')]);router[_0x73f6('0x1a')]('/:id/users',auth[_0x73f6('0xb')](),controller['removeAgents']);module[_0x73f6('0x1d')]=router;
\ No newline at end of file
index eecfa63..90b8ffb 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd992=['STRING','INTEGER','ENUM','beepall','roundrobin','exports'];(function(_0x2a6c06,_0x4f153c){var _0x8d9685=function(_0x52f754){while(--_0x52f754){_0x2a6c06['push'](_0x2a6c06['shift']());}};_0x8d9685(++_0x4f153c);}(_0xd992,0xdd));var _0x2d99=function(_0x294683,_0x462f75){_0x294683=_0x294683-0x0;var _0xba34b1=_0xd992[_0x294683];return _0xba34b1;};'use strict';var Sequelize=require('sequelize');module[_0x2d99('0x0')]={'name':{'type':Sequelize[_0x2d99('0x1')],'unique':'name','validate':{'notEmpty':!![],'is':/^[A-Za-z0-9\.\_]+$/i}},'description':{'type':Sequelize['STRING']},'timeout':{'type':Sequelize[_0x2d99('0x2')],'validate':{'min':0x1,'max':0x20c49b}},'strategy':{'type':Sequelize[_0x2d99('0x3')]('rrmemory',_0x2d99('0x4'),_0x2d99('0x5'))}};
\ No newline at end of file
+var _0xcb14=['roundrobin','sequelize','exports','STRING','INTEGER','ENUM','beepall'];(function(_0x38fab4,_0x394f9e){var _0x3dd70f=function(_0x3e203f){while(--_0x3e203f){_0x38fab4['push'](_0x38fab4['shift']());}};_0x3dd70f(++_0x394f9e);}(_0xcb14,0x1dd));var _0x4cb1=function(_0x1afedc,_0x17ee2f){_0x1afedc=_0x1afedc-0x0;var _0x3520db=_0xcb14[_0x1afedc];return _0x3520db;};'use strict';var Sequelize=require(_0x4cb1('0x0'));module[_0x4cb1('0x1')]={'name':{'type':Sequelize[_0x4cb1('0x2')],'unique':'name','validate':{'notEmpty':!![],'is':/^[A-Za-z0-9\.\_]+$/i}},'description':{'type':Sequelize[_0x4cb1('0x2')]},'timeout':{'type':Sequelize[_0x4cb1('0x3')],'validate':{'min':0x1,'max':0x20c49b}},'strategy':{'type':Sequelize[_0x4cb1('0x4')]('rrmemory',_0x4cb1('0x5'),_0x4cb1('0x6'))}};
\ No newline at end of file
index c7354f6..e8af9e0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9c79=['compact','value','removeAgents','emit','userOpenchannelQueue:remove','addAgents','omit','spread','isArray','getAgents','rimraf','zip-dir','fast-json-patch','request-promise','moment','mustache','util','path','to-csv','ejs','lodash','crypto','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','redis','defaults','localhost','socket.io-emitter','./openchannelQueue.socket','register','sendStatus','status','end','json','undefined','limit','count','set','Content-Range','apply','update','then','destroy','get','OpenchannelQueues','UserProfileResource','error','stack','name','send','index','map','rawAttributes','type','key','model','keys','query','filters','intersection','fields','attributes','length','hasOwnProperty','offset','order','sort','where','merge','VIRTUAL','filter','options','OpenchannelQueue','includeAll','include','findAll','catch','show','params','find','create','body','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','UserProfileSection','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','describe','getMembers','findOne','UserOpenchannelQueue','pick','OpenchannelQueueId','UserId','agent','openchannelPause','updatedAt','createdAt','rows','format','%s/%s','getTeams','Team','nolimit','ids','User','Agents','online','voicePause','interface','flatMap','sequelize','transaction','each','forEach','userOpenchannelQueue:save','removeTeams','select','from','team_has_openchannel_queues','user_has_teams','ut.TeamId\x20=\x20tq.TeamId','OpenchannelQueueId\x20=\x20?','ut.UserId\x20=\x20?','push','toString','QueryTypes','every','TeamId','union'];(function(_0x460b83,_0x399ffd){var _0xf44b39=function(_0x42fa66){while(--_0x42fa66){_0x460b83['push'](_0x460b83['shift']());}};_0xf44b39(++_0x399ffd);}(_0x9c79,0x95));var _0x99c7=function(_0x4f46f1,_0x2a39b9){_0x4f46f1=_0x4f46f1-0x0;var _0x5e146b=_0x9c79[_0x4f46f1];return _0x5e146b;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x99c7('0x0'));var zipdir=require(_0x99c7('0x1'));var jsonpatch=require(_0x99c7('0x2'));var rp=require(_0x99c7('0x3'));var moment=require(_0x99c7('0x4'));var BPromise=require('bluebird');var Mustache=require(_0x99c7('0x5'));var util=require(_0x99c7('0x6'));var path=require(_0x99c7('0x7'));var sox=require('sox');var csv=require(_0x99c7('0x8'));var ejs=require(_0x99c7('0x9'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x99c7('0xa'));var squel=require('squel');var crypto=require(_0x99c7('0xb'));var jsforce=require('jsforce');var deskjs=require('desk.js');var toCsv=require(_0x99c7('0x8'));var querystring=require(_0x99c7('0xc'));var Papa=require(_0x99c7('0xd'));var Redis=require(_0x99c7('0xe'));var authService=require(_0x99c7('0xf'));var qs=require('../../components/parsers/qs');var as=require(_0x99c7('0x10'));var hardwareService=require(_0x99c7('0x11'));var logger=require(_0x99c7('0x12'))('api');var utils=require(_0x99c7('0x13'));var config=require(_0x99c7('0x14'));var licenseUtil=require(_0x99c7('0x15'));var db=require(_0x99c7('0x16'))['db'];config[_0x99c7('0x17')]=_[_0x99c7('0x18')](config[_0x99c7('0x17')],{'host':_0x99c7('0x19'),'port':0x18eb});var socket=require(_0x99c7('0x1a'))(new Redis(config[_0x99c7('0x17')]));require(_0x99c7('0x1b'))[_0x99c7('0x1c')](socket);function respondWithStatusCode(_0x591b06,_0x4c8726){_0x4c8726=_0x4c8726||0xcc;return function(_0x174f6a){if(_0x174f6a){return _0x591b06[_0x99c7('0x1d')](_0x4c8726);}return _0x591b06[_0x99c7('0x1e')](_0x4c8726)[_0x99c7('0x1f')]();};}function respondWithResult(_0x7fabfb,_0x3a30c8){_0x3a30c8=_0x3a30c8||0xc8;return function(_0x44ff2f){if(_0x44ff2f){return _0x7fabfb[_0x99c7('0x1e')](_0x3a30c8)[_0x99c7('0x20')](_0x44ff2f);}};}function respondWithFilteredResult(_0x170e90,_0x361128){return function(_0x475e55){if(_0x475e55){var _0x199f2f=typeof _0x361128['offset']===_0x99c7('0x21')&&typeof _0x361128[_0x99c7('0x22')]==='undefined';var _0x12575a=_0x475e55[_0x99c7('0x23')];var _0x5af65c=_0x199f2f?0x0:_0x361128['offset'];var _0x44ec54=_0x199f2f?_0x475e55[_0x99c7('0x23')]:_0x361128['offset']+_0x361128[_0x99c7('0x22')];var _0x47a3de;if(_0x44ec54>=_0x12575a){_0x44ec54=_0x12575a;_0x47a3de=0xc8;}else{_0x47a3de=0xce;}_0x170e90[_0x99c7('0x1e')](_0x47a3de);return _0x170e90[_0x99c7('0x24')](_0x99c7('0x25'),_0x5af65c+'-'+_0x44ec54+'/'+_0x12575a)[_0x99c7('0x20')](_0x475e55);}return null;};}function patchUpdates(_0x3d4402){return function(_0x26f39a){try{jsonpatch[_0x99c7('0x26')](_0x26f39a,_0x3d4402,!![]);}catch(_0x449114){return BPromise['reject'](_0x449114);}return _0x26f39a['save']();};}function saveUpdates(_0x3fa8bb,_0xbb9c11){return function(_0x35f694){if(_0x35f694){return _0x35f694[_0x99c7('0x27')](_0x3fa8bb)[_0x99c7('0x28')](function(_0x167bf1){return _0x167bf1;});}return null;};}function removeEntity(_0x3857d3,_0x103106){return function(_0x463749){if(_0x463749){return _0x463749[_0x99c7('0x29')]()['then'](function(){var _0x2a1db5=_0x463749[_0x99c7('0x2a')]({'plain':!![]});var _0x1ef01f=_0x99c7('0x2b');return db[_0x99c7('0x2c')][_0x99c7('0x29')]({'where':{'type':_0x1ef01f,'resourceId':_0x2a1db5['id']}})[_0x99c7('0x28')](function(){return _0x463749;});})[_0x99c7('0x28')](function(){_0x3857d3[_0x99c7('0x1e')](0xcc)[_0x99c7('0x1f')]();});}};}function handleEntityNotFound(_0x40e0f4,_0x4d7cf1){return function(_0x29e1ab){if(!_0x29e1ab){_0x40e0f4['sendStatus'](0x194);}return _0x29e1ab;};}function handleError(_0x3ccc06,_0x20e94a){_0x20e94a=_0x20e94a||0x1f4;return function(_0x54a991){logger[_0x99c7('0x2d')](_0x54a991[_0x99c7('0x2e')]);if(_0x54a991['name']){delete _0x54a991[_0x99c7('0x2f')];}_0x3ccc06[_0x99c7('0x1e')](_0x20e94a)[_0x99c7('0x30')](_0x54a991);};}exports[_0x99c7('0x31')]=function(_0x3f775a,_0x5e9bbc){var _0x29e0bb={},_0x1eafd7={},_0x431394={'count':0x0,'rows':[]};var _0x1d80b7=_[_0x99c7('0x32')](db['OpenchannelQueue'][_0x99c7('0x33')],function(_0x558930){return{'name':_0x558930['fieldName'],'type':_0x558930[_0x99c7('0x34')][_0x99c7('0x35')]};});_0x1eafd7[_0x99c7('0x36')]=_[_0x99c7('0x32')](_0x1d80b7,_0x99c7('0x2f'));_0x1eafd7['query']=_[_0x99c7('0x37')](_0x3f775a[_0x99c7('0x38')]);_0x1eafd7[_0x99c7('0x39')]=_['intersection'](_0x1eafd7['model'],_0x1eafd7[_0x99c7('0x38')]);_0x29e0bb['attributes']=_[_0x99c7('0x3a')](_0x1eafd7[_0x99c7('0x36')],qs[_0x99c7('0x3b')](_0x3f775a[_0x99c7('0x38')][_0x99c7('0x3b')]));_0x29e0bb[_0x99c7('0x3c')]=_0x29e0bb[_0x99c7('0x3c')][_0x99c7('0x3d')]?_0x29e0bb[_0x99c7('0x3c')]:_0x1eafd7[_0x99c7('0x36')];if(!_0x3f775a[_0x99c7('0x38')][_0x99c7('0x3e')]('nolimit')){_0x29e0bb[_0x99c7('0x22')]=qs['limit'](_0x3f775a[_0x99c7('0x38')]['limit']);_0x29e0bb[_0x99c7('0x3f')]=qs[_0x99c7('0x3f')](_0x3f775a[_0x99c7('0x38')][_0x99c7('0x3f')]);}_0x29e0bb[_0x99c7('0x40')]=qs[_0x99c7('0x41')](_0x3f775a[_0x99c7('0x38')][_0x99c7('0x41')]);_0x29e0bb[_0x99c7('0x42')]=qs[_0x99c7('0x39')](_['pick'](_0x3f775a[_0x99c7('0x38')],_0x1eafd7['filters']),_0x1d80b7);if(_0x3f775a[_0x99c7('0x38')]['filter']){_0x29e0bb[_0x99c7('0x42')]=_[_0x99c7('0x43')](_0x29e0bb[_0x99c7('0x42')],{'$or':_[_0x99c7('0x32')](_0x1d80b7,function(_0x53fa97){if(_0x53fa97[_0x99c7('0x34')]!==_0x99c7('0x44')){var _0x420b69={};_0x420b69[_0x53fa97[_0x99c7('0x2f')]]={'$like':'%'+_0x3f775a['query'][_0x99c7('0x45')]+'%'};return _0x420b69;}})});}_0x29e0bb=_[_0x99c7('0x43')]({},_0x29e0bb,_0x3f775a[_0x99c7('0x46')]);var _0x17c01e={'where':_0x29e0bb[_0x99c7('0x42')]};return db[_0x99c7('0x47')][_0x99c7('0x23')](_0x17c01e)[_0x99c7('0x28')](function(_0x839bc9){_0x431394[_0x99c7('0x23')]=_0x839bc9;if(_0x3f775a['query'][_0x99c7('0x48')]){_0x29e0bb[_0x99c7('0x49')]=[{'all':!![]}];}return db[_0x99c7('0x47')][_0x99c7('0x4a')](_0x29e0bb);})[_0x99c7('0x28')](function(_0x5c671b){_0x431394['rows']=_0x5c671b;return _0x431394;})['then'](respondWithFilteredResult(_0x5e9bbc,_0x29e0bb))[_0x99c7('0x4b')](handleError(_0x5e9bbc,null));};exports[_0x99c7('0x4c')]=function(_0x5e2823,_0x2ec4d7){var _0x1fd74c={'raw':!![],'where':{'id':_0x5e2823[_0x99c7('0x4d')]['id']}},_0x2616f0={};_0x2616f0[_0x99c7('0x36')]=_[_0x99c7('0x37')](db[_0x99c7('0x47')][_0x99c7('0x33')]);_0x2616f0[_0x99c7('0x38')]=_[_0x99c7('0x37')](_0x5e2823[_0x99c7('0x38')]);_0x2616f0[_0x99c7('0x39')]=_[_0x99c7('0x3a')](_0x2616f0['model'],_0x2616f0[_0x99c7('0x38')]);_0x1fd74c[_0x99c7('0x3c')]=_[_0x99c7('0x3a')](_0x2616f0['model'],qs[_0x99c7('0x3b')](_0x5e2823[_0x99c7('0x38')][_0x99c7('0x3b')]));_0x1fd74c[_0x99c7('0x3c')]=_0x1fd74c['attributes']['length']?_0x1fd74c[_0x99c7('0x3c')]:_0x2616f0[_0x99c7('0x36')];if(_0x5e2823[_0x99c7('0x38')][_0x99c7('0x48')]){_0x1fd74c[_0x99c7('0x49')]=[{'all':!![]}];}_0x1fd74c=_[_0x99c7('0x43')]({},_0x1fd74c,_0x5e2823[_0x99c7('0x46')]);return db[_0x99c7('0x47')][_0x99c7('0x4e')](_0x1fd74c)[_0x99c7('0x28')](handleEntityNotFound(_0x2ec4d7,null))[_0x99c7('0x28')](respondWithResult(_0x2ec4d7,null))['catch'](handleError(_0x2ec4d7,null));};exports[_0x99c7('0x4f')]=function(_0x17da19,_0x3c4806){return db[_0x99c7('0x47')][_0x99c7('0x4f')](_0x17da19[_0x99c7('0x50')],{})[_0x99c7('0x28')](function(_0x2a0d2e){var _0x5d73e0=_0x17da19[_0x99c7('0x51')][_0x99c7('0x2a')]({'plain':!![]});if(!_0x5d73e0)throw new Error(_0x99c7('0x52'));if(_0x5d73e0[_0x99c7('0x53')]===_0x99c7('0x51')){var _0x4584a8=_0x2a0d2e['get']({'plain':!![]});var _0x37527c=_0x99c7('0x2b');return db[_0x99c7('0x54')][_0x99c7('0x4e')]({'where':{'name':_0x37527c,'userProfileId':_0x5d73e0['userProfileId']},'raw':!![]})[_0x99c7('0x28')](function(_0x306ab2){if(_0x306ab2&&_0x306ab2['autoAssociation']===0x0){return db[_0x99c7('0x2c')][_0x99c7('0x4f')]({'name':_0x4584a8[_0x99c7('0x2f')],'resourceId':_0x4584a8['id'],'type':_0x306ab2['name'],'sectionId':_0x306ab2['id']},{})[_0x99c7('0x28')](function(){return _0x2a0d2e;});}else{return _0x2a0d2e;}})[_0x99c7('0x4b')](function(_0x13060e){logger['error'](_0x99c7('0x55'),_0x13060e);throw _0x13060e;});}return _0x2a0d2e;})[_0x99c7('0x28')](respondWithResult(_0x3c4806,0xc9))[_0x99c7('0x4b')](handleError(_0x3c4806,null));};exports[_0x99c7('0x27')]=function(_0x6737dc,_0x56bc12){if(_0x6737dc['body']['id']){delete _0x6737dc[_0x99c7('0x50')]['id'];}return db[_0x99c7('0x47')][_0x99c7('0x4e')]({'where':{'id':_0x6737dc[_0x99c7('0x4d')]['id']}})['then'](handleEntityNotFound(_0x56bc12,null))[_0x99c7('0x28')](saveUpdates(_0x6737dc[_0x99c7('0x50')],null))['then'](respondWithResult(_0x56bc12,null))[_0x99c7('0x4b')](handleError(_0x56bc12,null));};exports[_0x99c7('0x29')]=function(_0x88cf9a,_0x4612f8){return db[_0x99c7('0x47')]['find']({'where':{'id':_0x88cf9a[_0x99c7('0x4d')]['id']}})[_0x99c7('0x28')](handleEntityNotFound(_0x4612f8,null))[_0x99c7('0x28')](removeEntity(_0x4612f8,null))[_0x99c7('0x4b')](handleError(_0x4612f8,null));};exports[_0x99c7('0x56')]=function(_0x3ce3c7,_0x17f460){return db['OpenchannelQueue'][_0x99c7('0x56')]()[_0x99c7('0x28')](respondWithResult(_0x17f460,null))[_0x99c7('0x4b')](handleError(_0x17f460,null));};exports[_0x99c7('0x57')]=function(_0x41c399,_0x4727ec,_0x18abd3){var _0xc372b3={'raw':!![],'where':{}},_0x5b9347={},_0xbdfebb;return db[_0x99c7('0x47')][_0x99c7('0x58')]({'where':{'id':_0x41c399['params']['id']}})[_0x99c7('0x28')](handleEntityNotFound(_0x4727ec,null))[_0x99c7('0x28')](function(_0x11947d){if(_0x11947d){_0xbdfebb=_0x11947d[_0x99c7('0x2a')]({'plain':!![]});_0x5b9347[_0x99c7('0x36')]=_[_0x99c7('0x37')](db[_0x99c7('0x59')]['rawAttributes']);_0x5b9347[_0x99c7('0x38')]=_['keys'](_0x41c399[_0x99c7('0x38')]);_0x5b9347[_0x99c7('0x39')]=_['intersection'](_0x5b9347[_0x99c7('0x36')],_0x5b9347['query']);_0xc372b3[_0x99c7('0x3c')]=_[_0x99c7('0x3a')](_0x5b9347[_0x99c7('0x36')],qs['fields'](_0x41c399[_0x99c7('0x38')][_0x99c7('0x3b')]));_0xc372b3[_0x99c7('0x3c')]=_0xc372b3[_0x99c7('0x3c')][_0x99c7('0x3d')]?_0xc372b3['attributes']:_0x5b9347[_0x99c7('0x36')];if(!_0x41c399[_0x99c7('0x38')][_0x99c7('0x3e')]('nolimit')){_0xc372b3[_0x99c7('0x22')]=qs['limit'](_0x41c399[_0x99c7('0x38')]['limit']);_0xc372b3['offset']=qs[_0x99c7('0x3f')](_0x41c399[_0x99c7('0x38')][_0x99c7('0x3f')]);}_0xc372b3[_0x99c7('0x40')]=qs['sort'](_0x41c399[_0x99c7('0x38')][_0x99c7('0x41')]);_0xc372b3[_0x99c7('0x42')]=qs[_0x99c7('0x39')](_[_0x99c7('0x5a')](_0x41c399[_0x99c7('0x38')],_0x5b9347[_0x99c7('0x39')]));_0xc372b3[_0x99c7('0x42')][_0x99c7('0x5b')]=_0x11947d['id'];if(_0x41c399[_0x99c7('0x38')][_0x99c7('0x45')]){_0xc372b3[_0x99c7('0x42')]=_['merge'](_0xc372b3[_0x99c7('0x42')],{'$or':_[_0x99c7('0x32')](_0xc372b3[_0x99c7('0x3c')],function(_0x3f295a){var _0x3edead={};_0x3edead[_0x3f295a]={'$like':'%'+_0x41c399[_0x99c7('0x38')]['filter']+'%'};return _0x3edead;})});}_0xc372b3=_[_0x99c7('0x43')]({},_0xc372b3,_0x41c399[_0x99c7('0x46')]);return db[_0x99c7('0x59')][_0x99c7('0x4a')](_0xc372b3);}})['then'](function(_0x49fba6){if(_0x49fba6){return db['User']['findAndCountAll']({'where':{'id':_[_0x99c7('0x32')](_0x49fba6,_0x99c7('0x5c')),'role':_0x99c7('0x5d')},'attributes':['id','name',_0x99c7('0x5e'),_0x99c7('0x5f'),_0x99c7('0x60')]});}})['then'](function(_0x57a642){if(_0x57a642){return{'count':_0x57a642[_0x99c7('0x23')],'rows':_[_0x99c7('0x32')](_0x57a642[_0x99c7('0x61')],function(_0x307778){return{'membername':_0x307778['name'],'UserId':_0x307778['id'],'queue_name':_0xbdfebb['name'],'OpenchannelQueueId':_0xbdfebb['id'],'interface':util[_0x99c7('0x62')](_0x99c7('0x63'),'SIP',_0x307778[_0x99c7('0x2f')]),'penalty':0x0,'paused':_0x307778['openchannelPause'],'createdAt':_0x307778[_0x99c7('0x60')],'updatedAt':_0x307778['updatedAt']};})};}else{return{'count':0x0,'rows':[]};}})['then'](respondWithFilteredResult(_0x4727ec,_0xc372b3))[_0x99c7('0x4b')](handleError(_0x4727ec,null));};exports[_0x99c7('0x64')]=function(_0x128cb,_0x2efae0,_0x249091){var _0x583599={};var _0x42144c={};var _0x2dd272;var _0x402a5a;return db['OpenchannelQueue']['findOne']({'where':{'id':_0x128cb[_0x99c7('0x4d')]['id']}})[_0x99c7('0x28')](handleEntityNotFound(_0x2efae0,null))[_0x99c7('0x28')](function(_0x38be38){if(_0x38be38){_0x2dd272=_0x38be38;_0x42144c['model']=_[_0x99c7('0x37')](db[_0x99c7('0x65')][_0x99c7('0x33')]);_0x42144c[_0x99c7('0x38')]=_[_0x99c7('0x37')](_0x128cb[_0x99c7('0x38')]);_0x42144c[_0x99c7('0x39')]=_[_0x99c7('0x3a')](_0x42144c['model'],_0x42144c[_0x99c7('0x38')]);_0x583599[_0x99c7('0x3c')]=_[_0x99c7('0x3a')](_0x42144c[_0x99c7('0x36')],qs[_0x99c7('0x3b')](_0x128cb[_0x99c7('0x38')][_0x99c7('0x3b')]));_0x583599['attributes']=_0x583599['attributes'][_0x99c7('0x3d')]?_0x583599[_0x99c7('0x3c')]:_0x42144c[_0x99c7('0x36')];_0x583599['order']=qs[_0x99c7('0x41')](_0x128cb[_0x99c7('0x38')][_0x99c7('0x41')]);_0x583599[_0x99c7('0x42')]=qs['filters'](_[_0x99c7('0x5a')](_0x128cb[_0x99c7('0x38')],_0x42144c['filters']));if(_0x128cb[_0x99c7('0x38')][_0x99c7('0x45')]){_0x583599[_0x99c7('0x42')]=_[_0x99c7('0x43')](_0x583599['where'],{'$or':_[_0x99c7('0x32')](_0x583599[_0x99c7('0x3c')],function(_0x3e9b5b){var _0x4eea18={};_0x4eea18[_0x3e9b5b]={'$like':'%'+_0x128cb[_0x99c7('0x38')][_0x99c7('0x45')]+'%'};return _0x4eea18;})});}_0x583599=_[_0x99c7('0x43')]({},_0x583599,_0x128cb[_0x99c7('0x46')]);return _0x2dd272[_0x99c7('0x64')](_0x583599);}})[_0x99c7('0x28')](function(_0x1be811){if(_0x1be811){_0x402a5a=_0x1be811[_0x99c7('0x3d')];if(!_0x128cb[_0x99c7('0x38')][_0x99c7('0x3e')](_0x99c7('0x66'))){_0x583599['limit']=qs[_0x99c7('0x22')](_0x128cb['query'][_0x99c7('0x22')]);_0x583599['offset']=qs['offset'](_0x128cb[_0x99c7('0x38')][_0x99c7('0x3f')]);}return _0x2dd272[_0x99c7('0x64')](_0x583599);}})['then'](function(_0x58183c){if(_0x58183c){return _0x58183c?{'count':_0x402a5a,'rows':_0x58183c}:null;}})[_0x99c7('0x28')](respondWithResult(_0x2efae0,null))['catch'](handleError(_0x2efae0,null));};exports['addTeams']=function(_0x32f66c,_0x425c97,_0x10c84a){var _0x41bc43=_0x32f66c['body'][_0x99c7('0x67')];return db[_0x99c7('0x65')][_0x99c7('0x4a')]({'where':{'id':_0x41bc43},'attributes':['id'],'include':[{'model':db[_0x99c7('0x68')],'as':_0x99c7('0x69'),'attributes':['id',_0x99c7('0x2f'),_0x99c7('0x6a'),_0x99c7('0x6b'),_0x99c7('0x6c')],'raw':!![]}]})[_0x99c7('0x28')](function(_0x393da2){if(_0x393da2){var _0x2c0bba=_[_0x99c7('0x6d')](_0x393da2,function(_0x1cb34f){var _0xa3f432=_0x1cb34f[_0x99c7('0x2a')]({'plain':!![]});return _0xa3f432[_0x99c7('0x69')];});return db['OpenchannelQueue'][_0x99c7('0x4e')]({'where':{'id':_0x32f66c[_0x99c7('0x4d')]['id']}})[_0x99c7('0x28')](function(_0x1ed1c9){return db[_0x99c7('0x6e')][_0x99c7('0x6f')](function(_0x3d4b0f){return _0x1ed1c9['addTeams'](_0x41bc43,{'transaction':_0x3d4b0f})[_0x99c7('0x28')](function(){return BPromise[_0x99c7('0x70')](_0x2c0bba,function(_0x4579d6){return db[_0x99c7('0x59')]['findOrCreate']({'where':{'UserId':_0x4579d6['id'],'OpenchannelQueueId':_0x32f66c[_0x99c7('0x4d')]['id']},'transaction':_0x3d4b0f});});})[_0x99c7('0x28')](function(){_0x2c0bba[_0x99c7('0x71')](function(_0xd864a3){socket['emit'](_0x99c7('0x72'),{'UserId':_0xd864a3['id'],'OpenchannelQueueId':_0x1ed1c9['id']});});});});});}})[_0x99c7('0x28')](respondWithStatusCode(_0x425c97,null))[_0x99c7('0x4b')](handleError(_0x425c97,null));};exports[_0x99c7('0x73')]=function(_0x13205f,_0x38c1c4,_0x58e4f1){return db[_0x99c7('0x65')]['findAll']({'where':{'id':_0x13205f[_0x99c7('0x38')][_0x99c7('0x67')]},'attributes':['id'],'include':[{'model':db[_0x99c7('0x68')],'as':_0x99c7('0x69'),'attributes':['id'],'raw':!![]}]})[_0x99c7('0x28')](handleEntityNotFound(_0x38c1c4,null))[_0x99c7('0x28')](function(_0xc0ca62){var _0x1beea3=_['map'](_0xc0ca62,'id');var _0x4fbf06=[];var _0x17bf47=[];var _0x218617=squel[_0x99c7('0x74')]();_0x218617['field']('tq.TeamId')[_0x99c7('0x75')](_0x99c7('0x76'),'tq')['join'](_0x99c7('0x77'),'ut',_0x99c7('0x78'))[_0x99c7('0x42')](_0x99c7('0x79'),_0x13205f[_0x99c7('0x4d')]['id']);for(var _0x3cae9b=0x0;_0x3cae9b<_0xc0ca62[_0x99c7('0x3d')];_0x3cae9b+=0x1){let _0x1f541f=_0xc0ca62[_0x3cae9b];for(var _0x5468eb=0x0;_0x5468eb<_0x1f541f[_0x99c7('0x69')][_0x99c7('0x3d')];_0x5468eb+=0x1){let _0x429afb=_0x1f541f[_0x99c7('0x69')][_0x5468eb];var _0x2f9c44=_0x218617['clone']();_0x2f9c44[_0x99c7('0x42')](_0x99c7('0x7a'),_0x429afb['id']);_0x17bf47[_0x99c7('0x7b')](db[_0x99c7('0x6e')][_0x99c7('0x38')](_0x2f9c44[_0x99c7('0x7c')](),{'type':db[_0x99c7('0x6e')][_0x99c7('0x7d')]['SELECT']})[_0x99c7('0x28')](function(_0x24d3f2){if(_0x24d3f2['length']===0x1){return _0x429afb['id'];}else{var _0x412757=_[_0x99c7('0x7e')](_[_0x99c7('0x32')](_0x24d3f2,_0x99c7('0x7f')),function(_0xfa0c10){return _['includes'](_0x1beea3,_0xfa0c10);});if(_0x412757){return _0x429afb['id'];}}}));}}return BPromise['all'](_0x17bf47)[_0x99c7('0x28')](function(_0x1c454b){_0x4fbf06=_(_0x4fbf06)[_0x99c7('0x80')](_0x1c454b)[_0x99c7('0x81')]()[_0x99c7('0x82')]();return db[_0x99c7('0x47')][_0x99c7('0x4e')]({'where':{'id':_0x13205f['params']['id']}})[_0x99c7('0x28')](function(_0x235dc6){return db[_0x99c7('0x6e')][_0x99c7('0x6f')](function(_0x2b97f3){return _0x235dc6[_0x99c7('0x73')](_0x13205f[_0x99c7('0x38')][_0x99c7('0x67')],{'transaction':_0x2b97f3})['then'](function(){if(!_['isEmpty'](_0x4fbf06)){return _0x235dc6[_0x99c7('0x83')](_0x4fbf06,{'transaction':_0x2b97f3});}})[_0x99c7('0x28')](function(){_0x4fbf06['forEach'](function(_0x5c50a1){socket[_0x99c7('0x84')](_0x99c7('0x85'),{'UserId':_0x5c50a1,'OpenchannelQueueId':_0x235dc6['id']});});});});});});})[_0x99c7('0x28')](respondWithStatusCode(_0x38c1c4,null))[_0x99c7('0x4b')](handleError(_0x38c1c4,null));};exports[_0x99c7('0x86')]=function(_0x517e3a,_0x4f9f3b,_0x1b858b){return db[_0x99c7('0x47')][_0x99c7('0x4e')]({'where':{'id':_0x517e3a[_0x99c7('0x4d')]['id']}})[_0x99c7('0x28')](handleEntityNotFound(_0x4f9f3b,null))['then'](function(_0x1d1d0e){if(_0x1d1d0e){return _0x1d1d0e[_0x99c7('0x86')](_0x517e3a[_0x99c7('0x50')][_0x99c7('0x67')],_[_0x99c7('0x87')](_0x517e3a[_0x99c7('0x50')],[_0x99c7('0x67'),'id'])||{})[_0x99c7('0x88')](function(_0x7d415f){for(var _0x513697=0x0;_0x513697<_0x517e3a['body'][_0x99c7('0x67')][_0x99c7('0x3d')];_0x513697+=0x1){socket[_0x99c7('0x84')](_0x99c7('0x72'),{'UserId':Number(_0x517e3a[_0x99c7('0x50')][_0x99c7('0x67')][_0x513697]),'OpenchannelQueueId':Number(_0x517e3a[_0x99c7('0x4d')]['id'])});}return _0x7d415f;});}})[_0x99c7('0x28')](respondWithResult(_0x4f9f3b,null))['catch'](handleError(_0x4f9f3b,null));};exports[_0x99c7('0x83')]=function(_0x12378f,_0x1f88f1,_0x4dacd0){return db[_0x99c7('0x47')][_0x99c7('0x4e')]({'where':{'id':_0x12378f[_0x99c7('0x4d')]['id']}})[_0x99c7('0x28')](handleEntityNotFound(_0x1f88f1,null))[_0x99c7('0x28')](function(_0x4df38e){if(_0x4df38e){return _0x4df38e[_0x99c7('0x83')](_0x12378f[_0x99c7('0x38')][_0x99c7('0x67')])['then'](function(){if(_[_0x99c7('0x89')](_0x12378f[_0x99c7('0x38')][_0x99c7('0x67')])){for(var _0x37be4e=0x0;_0x37be4e<_0x12378f[_0x99c7('0x38')][_0x99c7('0x67')][_0x99c7('0x3d')];_0x37be4e+=0x1){socket[_0x99c7('0x84')](_0x99c7('0x85'),{'UserId':Number(_0x12378f[_0x99c7('0x38')][_0x99c7('0x67')][_0x37be4e]),'OpenchannelQueueId':Number(_0x12378f['params']['id'])});}}else{socket[_0x99c7('0x84')](_0x99c7('0x85'),{'UserId':Number(_0x12378f['query'][_0x99c7('0x67')]),'OpenchannelQueueId':Number(_0x12378f[_0x99c7('0x4d')]['id'])});}});}})[_0x99c7('0x28')](respondWithStatusCode(_0x1f88f1,null))['catch'](handleError(_0x1f88f1,null));};exports[_0x99c7('0x8a')]=function(_0x120a01,_0x4262ab,_0x520ed9){var _0x199bce={};var _0x21ec67={};var _0x45795b;var _0x30f0c5;return db[_0x99c7('0x47')][_0x99c7('0x58')]({'where':{'id':_0x120a01[_0x99c7('0x4d')]['id']}})['then'](handleEntityNotFound(_0x4262ab,null))[_0x99c7('0x28')](function(_0x207ec1){if(_0x207ec1){_0x45795b=_0x207ec1;_0x21ec67['model']=_[_0x99c7('0x37')](db[_0x99c7('0x68')][_0x99c7('0x33')]);_0x21ec67[_0x99c7('0x38')]=_[_0x99c7('0x37')](_0x120a01[_0x99c7('0x38')]);_0x21ec67[_0x99c7('0x39')]=_[_0x99c7('0x3a')](_0x21ec67[_0x99c7('0x36')],_0x21ec67[_0x99c7('0x38')]);_0x199bce['attributes']=_[_0x99c7('0x3a')](_0x21ec67[_0x99c7('0x36')],qs['fields'](_0x120a01[_0x99c7('0x38')][_0x99c7('0x3b')]));_0x199bce[_0x99c7('0x3c')]=_0x199bce['attributes']['length']?_0x199bce[_0x99c7('0x3c')]:_0x21ec67[_0x99c7('0x36')];_0x199bce[_0x99c7('0x40')]=qs[_0x99c7('0x41')](_0x120a01['query'][_0x99c7('0x41')]);_0x199bce[_0x99c7('0x42')]=qs[_0x99c7('0x39')](_[_0x99c7('0x5a')](_0x120a01[_0x99c7('0x38')],_0x21ec67['filters']));if(_0x120a01['query'][_0x99c7('0x45')]){_0x199bce[_0x99c7('0x42')]=_[_0x99c7('0x43')](_0x199bce[_0x99c7('0x42')],{'$or':_[_0x99c7('0x32')](_0x199bce['attributes'],function(_0x212cfb){var _0x41e589={};_0x41e589[_0x212cfb]={'$like':'%'+_0x120a01[_0x99c7('0x38')][_0x99c7('0x45')]+'%'};return _0x41e589;})});}_0x199bce=_[_0x99c7('0x43')]({},_0x199bce,_0x120a01[_0x99c7('0x46')]);return _0x45795b[_0x99c7('0x8a')](_0x199bce);}})[_0x99c7('0x28')](function(_0x27dee1){if(_0x27dee1){_0x30f0c5=_0x27dee1[_0x99c7('0x3d')];if(!_0x120a01['query'][_0x99c7('0x3e')](_0x99c7('0x66'))){_0x199bce[_0x99c7('0x22')]=qs['limit'](_0x120a01[_0x99c7('0x38')][_0x99c7('0x22')]);_0x199bce[_0x99c7('0x3f')]=qs[_0x99c7('0x3f')](_0x120a01['query'][_0x99c7('0x3f')]);}return _0x45795b['getAgents'](_0x199bce);}})[_0x99c7('0x28')](function(_0x47658){if(_0x47658){return _0x47658?{'count':_0x30f0c5,'rows':_0x47658}:null;}})['then'](respondWithResult(_0x4262ab,null))['catch'](handleError(_0x4262ab,null));};
\ No newline at end of file
+var _0xd245=['../../components/auth/service','../../components/parsers/advancedSearch','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','defaults','redis','./openchannelQueue.socket','sendStatus','status','json','offset','undefined','limit','count','Content-Range','reject','save','update','then','destroy','get','OpenchannelQueues','UserProfileResource','end','error','stack','send','index','map','OpenchannelQueue','rawAttributes','fieldName','key','model','name','keys','query','filters','intersection','fields','attributes','length','hasOwnProperty','nolimit','order','sort','where','filter','merge','VIRTUAL','includeAll','include','rows','catch','find','create','body','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','UserProfileSection','userProfileId','autoAssociation','params','describe','getMembers','findOne','pick','OpenchannelQueueId','options','UserOpenchannelQueue','findAll','User','findAndCountAll','UserId','agent','openchannelPause','updatedAt','format','createdAt','getTeams','Team','addTeams','ids','Agents','online','voicePause','interface','flatMap','sequelize','transaction','each','findOrCreate','forEach','userOpenchannelQueue:save','removeTeams','select','field','tq.TeamId','from','join','user_has_teams','ut.TeamId\x20=\x20tq.TeamId','OpenchannelQueueId\x20=\x20?','clone','ut.UserId\x20=\x20?','push','toString','QueryTypes','SELECT','every','TeamId','includes','union','compact','value','userOpenchannelQueue:remove','addAgents','omit','spread','emit','isArray','getAgents','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','util','path','sox','to-csv','ejs','fs-extra','lodash','crypto','jsforce','desk.js','querystring','papaparse','ioredis'];(function(_0x2136d5,_0x4b0479){var _0x3bee2e=function(_0x119e88){while(--_0x119e88){_0x2136d5['push'](_0x2136d5['shift']());}};_0x3bee2e(++_0x4b0479);}(_0xd245,0x110));var _0x5d24=function(_0x199572,_0x33e667){_0x199572=_0x199572-0x0;var _0x13cfa3=_0xd245[_0x199572];return _0x13cfa3;};'use strict';var emlformat=require(_0x5d24('0x0'));var rimraf=require(_0x5d24('0x1'));var zipdir=require(_0x5d24('0x2'));var jsonpatch=require(_0x5d24('0x3'));var rp=require(_0x5d24('0x4'));var moment=require(_0x5d24('0x5'));var BPromise=require(_0x5d24('0x6'));var Mustache=require('mustache');var util=require(_0x5d24('0x7'));var path=require(_0x5d24('0x8'));var sox=require(_0x5d24('0x9'));var csv=require(_0x5d24('0xa'));var ejs=require(_0x5d24('0xb'));var fs=require('fs');var fs_extra=require(_0x5d24('0xc'));var _=require(_0x5d24('0xd'));var squel=require('squel');var crypto=require(_0x5d24('0xe'));var jsforce=require(_0x5d24('0xf'));var deskjs=require(_0x5d24('0x10'));var toCsv=require(_0x5d24('0xa'));var querystring=require(_0x5d24('0x11'));var Papa=require(_0x5d24('0x12'));var Redis=require(_0x5d24('0x13'));var authService=require(_0x5d24('0x14'));var qs=require('../../components/parsers/qs');var as=require(_0x5d24('0x15'));var hardwareService=require('../../config/license/hardware');var logger=require(_0x5d24('0x16'))(_0x5d24('0x17'));var utils=require(_0x5d24('0x18'));var config=require(_0x5d24('0x19'));var licenseUtil=require(_0x5d24('0x1a'));var db=require(_0x5d24('0x1b'))['db'];config['redis']=_[_0x5d24('0x1c')](config[_0x5d24('0x1d')],{'host':'localhost','port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config['redis']));require(_0x5d24('0x1e'))['register'](socket);function respondWithStatusCode(_0x8848c0,_0x598a3b){_0x598a3b=_0x598a3b||0xcc;return function(_0x4240a2){if(_0x4240a2){return _0x8848c0[_0x5d24('0x1f')](_0x598a3b);}return _0x8848c0[_0x5d24('0x20')](_0x598a3b)['end']();};}function respondWithResult(_0x3e3291,_0x4ff5ff){_0x4ff5ff=_0x4ff5ff||0xc8;return function(_0x38ac37){if(_0x38ac37){return _0x3e3291[_0x5d24('0x20')](_0x4ff5ff)[_0x5d24('0x21')](_0x38ac37);}};}function respondWithFilteredResult(_0x306c4c,_0x24355c){return function(_0x39c45b){if(_0x39c45b){var _0x1e601f=typeof _0x24355c[_0x5d24('0x22')]===_0x5d24('0x23')&&typeof _0x24355c[_0x5d24('0x24')]===_0x5d24('0x23');var _0x5ce8f2=_0x39c45b[_0x5d24('0x25')];var _0x1b2968=_0x1e601f?0x0:_0x24355c[_0x5d24('0x22')];var _0x466671=_0x1e601f?_0x39c45b[_0x5d24('0x25')]:_0x24355c['offset']+_0x24355c[_0x5d24('0x24')];var _0x5d6889;if(_0x466671>=_0x5ce8f2){_0x466671=_0x5ce8f2;_0x5d6889=0xc8;}else{_0x5d6889=0xce;}_0x306c4c[_0x5d24('0x20')](_0x5d6889);return _0x306c4c['set'](_0x5d24('0x26'),_0x1b2968+'-'+_0x466671+'/'+_0x5ce8f2)[_0x5d24('0x21')](_0x39c45b);}return null;};}function patchUpdates(_0x5fcb06){return function(_0x1962c9){try{jsonpatch['apply'](_0x1962c9,_0x5fcb06,!![]);}catch(_0xd41608){return BPromise[_0x5d24('0x27')](_0xd41608);}return _0x1962c9[_0x5d24('0x28')]();};}function saveUpdates(_0xabe7c,_0x41475c){return function(_0x6796d5){if(_0x6796d5){return _0x6796d5[_0x5d24('0x29')](_0xabe7c)[_0x5d24('0x2a')](function(_0x127887){return _0x127887;});}return null;};}function removeEntity(_0x13ebe5,_0x2fde02){return function(_0x97ce98){if(_0x97ce98){return _0x97ce98[_0x5d24('0x2b')]()[_0x5d24('0x2a')](function(){var _0x138902=_0x97ce98[_0x5d24('0x2c')]({'plain':!![]});var _0x2dc666=_0x5d24('0x2d');return db[_0x5d24('0x2e')]['destroy']({'where':{'type':_0x2dc666,'resourceId':_0x138902['id']}})[_0x5d24('0x2a')](function(){return _0x97ce98;});})['then'](function(){_0x13ebe5[_0x5d24('0x20')](0xcc)[_0x5d24('0x2f')]();});}};}function handleEntityNotFound(_0x228013,_0x27393e){return function(_0x207e72){if(!_0x207e72){_0x228013[_0x5d24('0x1f')](0x194);}return _0x207e72;};}function handleError(_0x99f0c4,_0x8060f2){_0x8060f2=_0x8060f2||0x1f4;return function(_0x30e180){logger[_0x5d24('0x30')](_0x30e180[_0x5d24('0x31')]);if(_0x30e180['name']){delete _0x30e180['name'];}_0x99f0c4[_0x5d24('0x20')](_0x8060f2)[_0x5d24('0x32')](_0x30e180);};}exports[_0x5d24('0x33')]=function(_0x51aa86,_0x3db14a){var _0x5a0641={},_0x44df59={},_0xd222a6={'count':0x0,'rows':[]};var _0x42748d=_[_0x5d24('0x34')](db[_0x5d24('0x35')][_0x5d24('0x36')],function(_0x33bc63){return{'name':_0x33bc63[_0x5d24('0x37')],'type':_0x33bc63['type'][_0x5d24('0x38')]};});_0x44df59[_0x5d24('0x39')]=_[_0x5d24('0x34')](_0x42748d,_0x5d24('0x3a'));_0x44df59['query']=_[_0x5d24('0x3b')](_0x51aa86[_0x5d24('0x3c')]);_0x44df59[_0x5d24('0x3d')]=_[_0x5d24('0x3e')](_0x44df59[_0x5d24('0x39')],_0x44df59[_0x5d24('0x3c')]);_0x5a0641['attributes']=_['intersection'](_0x44df59['model'],qs[_0x5d24('0x3f')](_0x51aa86[_0x5d24('0x3c')][_0x5d24('0x3f')]));_0x5a0641['attributes']=_0x5a0641[_0x5d24('0x40')][_0x5d24('0x41')]?_0x5a0641[_0x5d24('0x40')]:_0x44df59['model'];if(!_0x51aa86[_0x5d24('0x3c')][_0x5d24('0x42')](_0x5d24('0x43'))){_0x5a0641[_0x5d24('0x24')]=qs['limit'](_0x51aa86[_0x5d24('0x3c')][_0x5d24('0x24')]);_0x5a0641[_0x5d24('0x22')]=qs[_0x5d24('0x22')](_0x51aa86[_0x5d24('0x3c')]['offset']);}_0x5a0641[_0x5d24('0x44')]=qs['sort'](_0x51aa86['query'][_0x5d24('0x45')]);_0x5a0641[_0x5d24('0x46')]=qs[_0x5d24('0x3d')](_['pick'](_0x51aa86[_0x5d24('0x3c')],_0x44df59[_0x5d24('0x3d')]),_0x42748d);if(_0x51aa86[_0x5d24('0x3c')][_0x5d24('0x47')]){_0x5a0641[_0x5d24('0x46')]=_[_0x5d24('0x48')](_0x5a0641[_0x5d24('0x46')],{'$or':_[_0x5d24('0x34')](_0x42748d,function(_0x5bab86){if(_0x5bab86['type']!==_0x5d24('0x49')){var _0x55b515={};_0x55b515[_0x5bab86[_0x5d24('0x3a')]]={'$like':'%'+_0x51aa86['query']['filter']+'%'};return _0x55b515;}})});}_0x5a0641=_[_0x5d24('0x48')]({},_0x5a0641,_0x51aa86['options']);var _0xef94c0={'where':_0x5a0641[_0x5d24('0x46')]};return db[_0x5d24('0x35')][_0x5d24('0x25')](_0xef94c0)['then'](function(_0x5a91d1){_0xd222a6[_0x5d24('0x25')]=_0x5a91d1;if(_0x51aa86[_0x5d24('0x3c')][_0x5d24('0x4a')]){_0x5a0641[_0x5d24('0x4b')]=[{'all':!![]}];}return db['OpenchannelQueue']['findAll'](_0x5a0641);})[_0x5d24('0x2a')](function(_0x452aef){_0xd222a6[_0x5d24('0x4c')]=_0x452aef;return _0xd222a6;})[_0x5d24('0x2a')](respondWithFilteredResult(_0x3db14a,_0x5a0641))[_0x5d24('0x4d')](handleError(_0x3db14a,null));};exports['show']=function(_0x191d65,_0x3a5f6d){var _0x538a38={'raw':!![],'where':{'id':_0x191d65['params']['id']}},_0x524cac={};_0x524cac[_0x5d24('0x39')]=_['keys'](db['OpenchannelQueue'][_0x5d24('0x36')]);_0x524cac['query']=_[_0x5d24('0x3b')](_0x191d65['query']);_0x524cac[_0x5d24('0x3d')]=_['intersection'](_0x524cac[_0x5d24('0x39')],_0x524cac[_0x5d24('0x3c')]);_0x538a38[_0x5d24('0x40')]=_[_0x5d24('0x3e')](_0x524cac[_0x5d24('0x39')],qs[_0x5d24('0x3f')](_0x191d65[_0x5d24('0x3c')][_0x5d24('0x3f')]));_0x538a38[_0x5d24('0x40')]=_0x538a38[_0x5d24('0x40')]['length']?_0x538a38[_0x5d24('0x40')]:_0x524cac['model'];if(_0x191d65['query'][_0x5d24('0x4a')]){_0x538a38[_0x5d24('0x4b')]=[{'all':!![]}];}_0x538a38=_[_0x5d24('0x48')]({},_0x538a38,_0x191d65['options']);return db['OpenchannelQueue'][_0x5d24('0x4e')](_0x538a38)[_0x5d24('0x2a')](handleEntityNotFound(_0x3a5f6d,null))[_0x5d24('0x2a')](respondWithResult(_0x3a5f6d,null))[_0x5d24('0x4d')](handleError(_0x3a5f6d,null));};exports[_0x5d24('0x4f')]=function(_0x4d1ddd,_0x5abaa9){return db[_0x5d24('0x35')][_0x5d24('0x4f')](_0x4d1ddd[_0x5d24('0x50')],{})['then'](function(_0x3e7e29){var _0x54b012=_0x4d1ddd[_0x5d24('0x51')][_0x5d24('0x2c')]({'plain':!![]});if(!_0x54b012)throw new Error(_0x5d24('0x52'));if(_0x54b012['role']===_0x5d24('0x51')){var _0x3c95cc=_0x3e7e29[_0x5d24('0x2c')]({'plain':!![]});var _0x3c2051='OpenchannelQueues';return db[_0x5d24('0x53')][_0x5d24('0x4e')]({'where':{'name':_0x3c2051,'userProfileId':_0x54b012[_0x5d24('0x54')]},'raw':!![]})[_0x5d24('0x2a')](function(_0x4ed138){if(_0x4ed138&&_0x4ed138[_0x5d24('0x55')]===0x0){return db[_0x5d24('0x2e')]['create']({'name':_0x3c95cc[_0x5d24('0x3a')],'resourceId':_0x3c95cc['id'],'type':_0x4ed138[_0x5d24('0x3a')],'sectionId':_0x4ed138['id']},{})[_0x5d24('0x2a')](function(){return _0x3e7e29;});}else{return _0x3e7e29;}})[_0x5d24('0x4d')](function(_0x31d643){logger['error']('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0x31d643);throw _0x31d643;});}return _0x3e7e29;})[_0x5d24('0x2a')](respondWithResult(_0x5abaa9,0xc9))[_0x5d24('0x4d')](handleError(_0x5abaa9,null));};exports[_0x5d24('0x29')]=function(_0x2aee17,_0x8f6a92){if(_0x2aee17[_0x5d24('0x50')]['id']){delete _0x2aee17[_0x5d24('0x50')]['id'];}return db['OpenchannelQueue'][_0x5d24('0x4e')]({'where':{'id':_0x2aee17['params']['id']}})[_0x5d24('0x2a')](handleEntityNotFound(_0x8f6a92,null))[_0x5d24('0x2a')](saveUpdates(_0x2aee17[_0x5d24('0x50')],null))[_0x5d24('0x2a')](respondWithResult(_0x8f6a92,null))['catch'](handleError(_0x8f6a92,null));};exports[_0x5d24('0x2b')]=function(_0x4ed07c,_0x33bbfe){return db['OpenchannelQueue'][_0x5d24('0x4e')]({'where':{'id':_0x4ed07c[_0x5d24('0x56')]['id']}})[_0x5d24('0x2a')](handleEntityNotFound(_0x33bbfe,null))[_0x5d24('0x2a')](removeEntity(_0x33bbfe,null))[_0x5d24('0x4d')](handleError(_0x33bbfe,null));};exports[_0x5d24('0x57')]=function(_0x148040,_0x270ec9){return db[_0x5d24('0x35')][_0x5d24('0x57')]()[_0x5d24('0x2a')](respondWithResult(_0x270ec9,null))['catch'](handleError(_0x270ec9,null));};exports[_0x5d24('0x58')]=function(_0xbb7a8e,_0x19b512,_0x4a8859){var _0x54980c={'raw':!![],'where':{}},_0x249463={},_0x3e314e;return db[_0x5d24('0x35')][_0x5d24('0x59')]({'where':{'id':_0xbb7a8e['params']['id']}})[_0x5d24('0x2a')](handleEntityNotFound(_0x19b512,null))[_0x5d24('0x2a')](function(_0x151270){if(_0x151270){_0x3e314e=_0x151270[_0x5d24('0x2c')]({'plain':!![]});_0x249463['model']=_[_0x5d24('0x3b')](db['UserOpenchannelQueue'][_0x5d24('0x36')]);_0x249463[_0x5d24('0x3c')]=_[_0x5d24('0x3b')](_0xbb7a8e['query']);_0x249463[_0x5d24('0x3d')]=_['intersection'](_0x249463[_0x5d24('0x39')],_0x249463[_0x5d24('0x3c')]);_0x54980c['attributes']=_[_0x5d24('0x3e')](_0x249463[_0x5d24('0x39')],qs['fields'](_0xbb7a8e[_0x5d24('0x3c')]['fields']));_0x54980c[_0x5d24('0x40')]=_0x54980c[_0x5d24('0x40')][_0x5d24('0x41')]?_0x54980c[_0x5d24('0x40')]:_0x249463[_0x5d24('0x39')];if(!_0xbb7a8e[_0x5d24('0x3c')][_0x5d24('0x42')]('nolimit')){_0x54980c['limit']=qs[_0x5d24('0x24')](_0xbb7a8e[_0x5d24('0x3c')]['limit']);_0x54980c[_0x5d24('0x22')]=qs[_0x5d24('0x22')](_0xbb7a8e['query'][_0x5d24('0x22')]);}_0x54980c[_0x5d24('0x44')]=qs[_0x5d24('0x45')](_0xbb7a8e['query'][_0x5d24('0x45')]);_0x54980c['where']=qs[_0x5d24('0x3d')](_[_0x5d24('0x5a')](_0xbb7a8e['query'],_0x249463[_0x5d24('0x3d')]));_0x54980c[_0x5d24('0x46')][_0x5d24('0x5b')]=_0x151270['id'];if(_0xbb7a8e[_0x5d24('0x3c')]['filter']){_0x54980c[_0x5d24('0x46')]=_['merge'](_0x54980c[_0x5d24('0x46')],{'$or':_[_0x5d24('0x34')](_0x54980c[_0x5d24('0x40')],function(_0x271fe9){var _0x586214={};_0x586214[_0x271fe9]={'$like':'%'+_0xbb7a8e['query'][_0x5d24('0x47')]+'%'};return _0x586214;})});}_0x54980c=_['merge']({},_0x54980c,_0xbb7a8e[_0x5d24('0x5c')]);return db[_0x5d24('0x5d')][_0x5d24('0x5e')](_0x54980c);}})['then'](function(_0x2e82f9){if(_0x2e82f9){return db[_0x5d24('0x5f')][_0x5d24('0x60')]({'where':{'id':_[_0x5d24('0x34')](_0x2e82f9,_0x5d24('0x61')),'role':_0x5d24('0x62')},'attributes':['id',_0x5d24('0x3a'),_0x5d24('0x63'),_0x5d24('0x64'),'createdAt']});}})[_0x5d24('0x2a')](function(_0x2929f8){if(_0x2929f8){return{'count':_0x2929f8[_0x5d24('0x25')],'rows':_[_0x5d24('0x34')](_0x2929f8[_0x5d24('0x4c')],function(_0x2b365a){return{'membername':_0x2b365a[_0x5d24('0x3a')],'UserId':_0x2b365a['id'],'queue_name':_0x3e314e[_0x5d24('0x3a')],'OpenchannelQueueId':_0x3e314e['id'],'interface':util[_0x5d24('0x65')]('%s/%s','SIP',_0x2b365a['name']),'penalty':0x0,'paused':_0x2b365a['openchannelPause'],'createdAt':_0x2b365a[_0x5d24('0x66')],'updatedAt':_0x2b365a['updatedAt']};})};}else{return{'count':0x0,'rows':[]};}})[_0x5d24('0x2a')](respondWithFilteredResult(_0x19b512,_0x54980c))[_0x5d24('0x4d')](handleError(_0x19b512,null));};exports[_0x5d24('0x67')]=function(_0x25a62a,_0x24e380,_0x3d0fc8){var _0x5285ec={};var _0x3bdbba={};var _0x23627d;var _0x5ba01f;return db[_0x5d24('0x35')]['findOne']({'where':{'id':_0x25a62a[_0x5d24('0x56')]['id']}})[_0x5d24('0x2a')](handleEntityNotFound(_0x24e380,null))[_0x5d24('0x2a')](function(_0x92a552){if(_0x92a552){_0x23627d=_0x92a552;_0x3bdbba[_0x5d24('0x39')]=_['keys'](db[_0x5d24('0x68')][_0x5d24('0x36')]);_0x3bdbba['query']=_[_0x5d24('0x3b')](_0x25a62a[_0x5d24('0x3c')]);_0x3bdbba[_0x5d24('0x3d')]=_[_0x5d24('0x3e')](_0x3bdbba[_0x5d24('0x39')],_0x3bdbba[_0x5d24('0x3c')]);_0x5285ec['attributes']=_['intersection'](_0x3bdbba['model'],qs[_0x5d24('0x3f')](_0x25a62a[_0x5d24('0x3c')][_0x5d24('0x3f')]));_0x5285ec[_0x5d24('0x40')]=_0x5285ec[_0x5d24('0x40')][_0x5d24('0x41')]?_0x5285ec['attributes']:_0x3bdbba[_0x5d24('0x39')];_0x5285ec[_0x5d24('0x44')]=qs[_0x5d24('0x45')](_0x25a62a[_0x5d24('0x3c')][_0x5d24('0x45')]);_0x5285ec[_0x5d24('0x46')]=qs[_0x5d24('0x3d')](_[_0x5d24('0x5a')](_0x25a62a[_0x5d24('0x3c')],_0x3bdbba[_0x5d24('0x3d')]));if(_0x25a62a['query'][_0x5d24('0x47')]){_0x5285ec[_0x5d24('0x46')]=_[_0x5d24('0x48')](_0x5285ec[_0x5d24('0x46')],{'$or':_[_0x5d24('0x34')](_0x5285ec[_0x5d24('0x40')],function(_0x265ae2){var _0x2dc4f2={};_0x2dc4f2[_0x265ae2]={'$like':'%'+_0x25a62a[_0x5d24('0x3c')]['filter']+'%'};return _0x2dc4f2;})});}_0x5285ec=_[_0x5d24('0x48')]({},_0x5285ec,_0x25a62a[_0x5d24('0x5c')]);return _0x23627d[_0x5d24('0x67')](_0x5285ec);}})[_0x5d24('0x2a')](function(_0x55e14d){if(_0x55e14d){_0x5ba01f=_0x55e14d[_0x5d24('0x41')];if(!_0x25a62a['query'][_0x5d24('0x42')](_0x5d24('0x43'))){_0x5285ec['limit']=qs[_0x5d24('0x24')](_0x25a62a[_0x5d24('0x3c')][_0x5d24('0x24')]);_0x5285ec[_0x5d24('0x22')]=qs[_0x5d24('0x22')](_0x25a62a[_0x5d24('0x3c')][_0x5d24('0x22')]);}return _0x23627d[_0x5d24('0x67')](_0x5285ec);}})[_0x5d24('0x2a')](function(_0x378bb9){if(_0x378bb9){return _0x378bb9?{'count':_0x5ba01f,'rows':_0x378bb9}:null;}})[_0x5d24('0x2a')](respondWithResult(_0x24e380,null))[_0x5d24('0x4d')](handleError(_0x24e380,null));};exports[_0x5d24('0x69')]=function(_0x409fcc,_0x39c9c9,_0x50bac0){var _0xa25c41=_0x409fcc[_0x5d24('0x50')][_0x5d24('0x6a')];return db[_0x5d24('0x68')][_0x5d24('0x5e')]({'where':{'id':_0xa25c41},'attributes':['id'],'include':[{'model':db['User'],'as':_0x5d24('0x6b'),'attributes':['id',_0x5d24('0x3a'),_0x5d24('0x6c'),_0x5d24('0x6d'),_0x5d24('0x6e')],'raw':!![]}]})[_0x5d24('0x2a')](function(_0x2967a3){if(_0x2967a3){var _0x62b1f3=_[_0x5d24('0x6f')](_0x2967a3,function(_0x22f33e){var _0x1a1047=_0x22f33e[_0x5d24('0x2c')]({'plain':!![]});return _0x1a1047[_0x5d24('0x6b')];});return db[_0x5d24('0x35')][_0x5d24('0x4e')]({'where':{'id':_0x409fcc['params']['id']}})['then'](function(_0x5b4a31){return db[_0x5d24('0x70')][_0x5d24('0x71')](function(_0x883bba){return _0x5b4a31[_0x5d24('0x69')](_0xa25c41,{'transaction':_0x883bba})[_0x5d24('0x2a')](function(){return BPromise[_0x5d24('0x72')](_0x62b1f3,function(_0x355000){return db[_0x5d24('0x5d')][_0x5d24('0x73')]({'where':{'UserId':_0x355000['id'],'OpenchannelQueueId':_0x409fcc['params']['id']},'transaction':_0x883bba});});})[_0x5d24('0x2a')](function(){_0x62b1f3[_0x5d24('0x74')](function(_0x1e04b5){socket['emit'](_0x5d24('0x75'),{'UserId':_0x1e04b5['id'],'OpenchannelQueueId':_0x5b4a31['id']});});});});});}})[_0x5d24('0x2a')](respondWithStatusCode(_0x39c9c9,null))[_0x5d24('0x4d')](handleError(_0x39c9c9,null));};exports[_0x5d24('0x76')]=function(_0x1ce6a0,_0x1b9a1e,_0x4e54d6){return db[_0x5d24('0x68')][_0x5d24('0x5e')]({'where':{'id':_0x1ce6a0[_0x5d24('0x3c')][_0x5d24('0x6a')]},'attributes':['id'],'include':[{'model':db['User'],'as':_0x5d24('0x6b'),'attributes':['id'],'raw':!![]}]})['then'](handleEntityNotFound(_0x1b9a1e,null))[_0x5d24('0x2a')](function(_0x47b85f){var _0x54bf27=_[_0x5d24('0x34')](_0x47b85f,'id');var _0x15daa2=[];var _0x362215=[];var _0x464c68=squel[_0x5d24('0x77')]();_0x464c68[_0x5d24('0x78')](_0x5d24('0x79'))[_0x5d24('0x7a')]('team_has_openchannel_queues','tq')[_0x5d24('0x7b')](_0x5d24('0x7c'),'ut',_0x5d24('0x7d'))[_0x5d24('0x46')](_0x5d24('0x7e'),_0x1ce6a0[_0x5d24('0x56')]['id']);for(var _0x829460=0x0;_0x829460<_0x47b85f[_0x5d24('0x41')];_0x829460+=0x1){let _0x55b76c=_0x47b85f[_0x829460];for(var _0x450277=0x0;_0x450277<_0x55b76c[_0x5d24('0x6b')]['length'];_0x450277+=0x1){let _0x4f6129=_0x55b76c[_0x5d24('0x6b')][_0x450277];var _0x43fcdf=_0x464c68[_0x5d24('0x7f')]();_0x43fcdf[_0x5d24('0x46')](_0x5d24('0x80'),_0x4f6129['id']);_0x362215[_0x5d24('0x81')](db[_0x5d24('0x70')]['query'](_0x43fcdf[_0x5d24('0x82')](),{'type':db[_0x5d24('0x70')][_0x5d24('0x83')][_0x5d24('0x84')]})[_0x5d24('0x2a')](function(_0x4f8967){if(_0x4f8967['length']===0x1){return _0x4f6129['id'];}else{var _0x226caa=_[_0x5d24('0x85')](_[_0x5d24('0x34')](_0x4f8967,_0x5d24('0x86')),function(_0x32deac){return _[_0x5d24('0x87')](_0x54bf27,_0x32deac);});if(_0x226caa){return _0x4f6129['id'];}}}));}}return BPromise['all'](_0x362215)[_0x5d24('0x2a')](function(_0x22ae71){_0x15daa2=_(_0x15daa2)[_0x5d24('0x88')](_0x22ae71)[_0x5d24('0x89')]()[_0x5d24('0x8a')]();return db['OpenchannelQueue'][_0x5d24('0x4e')]({'where':{'id':_0x1ce6a0[_0x5d24('0x56')]['id']}})[_0x5d24('0x2a')](function(_0xcc2d52){return db[_0x5d24('0x70')][_0x5d24('0x71')](function(_0x3e83b1){return _0xcc2d52[_0x5d24('0x76')](_0x1ce6a0[_0x5d24('0x3c')]['ids'],{'transaction':_0x3e83b1})['then'](function(){if(!_['isEmpty'](_0x15daa2)){return _0xcc2d52['removeAgents'](_0x15daa2,{'transaction':_0x3e83b1});}})[_0x5d24('0x2a')](function(){_0x15daa2['forEach'](function(_0x2f3d6b){socket['emit'](_0x5d24('0x8b'),{'UserId':_0x2f3d6b,'OpenchannelQueueId':_0xcc2d52['id']});});});});});});})[_0x5d24('0x2a')](respondWithStatusCode(_0x1b9a1e,null))['catch'](handleError(_0x1b9a1e,null));};exports[_0x5d24('0x8c')]=function(_0x5616a8,_0x5ccc1a,_0x3cc8db){return db[_0x5d24('0x35')]['find']({'where':{'id':_0x5616a8[_0x5d24('0x56')]['id']}})[_0x5d24('0x2a')](handleEntityNotFound(_0x5ccc1a,null))[_0x5d24('0x2a')](function(_0x6c107d){if(_0x6c107d){return _0x6c107d[_0x5d24('0x8c')](_0x5616a8[_0x5d24('0x50')]['ids'],_[_0x5d24('0x8d')](_0x5616a8[_0x5d24('0x50')],[_0x5d24('0x6a'),'id'])||{})[_0x5d24('0x8e')](function(_0x44a61a){for(var _0xb8e78c=0x0;_0xb8e78c<_0x5616a8[_0x5d24('0x50')][_0x5d24('0x6a')][_0x5d24('0x41')];_0xb8e78c+=0x1){socket[_0x5d24('0x8f')](_0x5d24('0x75'),{'UserId':Number(_0x5616a8['body'][_0x5d24('0x6a')][_0xb8e78c]),'OpenchannelQueueId':Number(_0x5616a8[_0x5d24('0x56')]['id'])});}return _0x44a61a;});}})['then'](respondWithResult(_0x5ccc1a,null))[_0x5d24('0x4d')](handleError(_0x5ccc1a,null));};exports['removeAgents']=function(_0x1928f2,_0x242797,_0x59f9b2){return db['OpenchannelQueue'][_0x5d24('0x4e')]({'where':{'id':_0x1928f2[_0x5d24('0x56')]['id']}})[_0x5d24('0x2a')](handleEntityNotFound(_0x242797,null))[_0x5d24('0x2a')](function(_0x55db7c){if(_0x55db7c){return _0x55db7c['removeAgents'](_0x1928f2[_0x5d24('0x3c')][_0x5d24('0x6a')])[_0x5d24('0x2a')](function(){if(_[_0x5d24('0x90')](_0x1928f2[_0x5d24('0x3c')][_0x5d24('0x6a')])){for(var _0x37f732=0x0;_0x37f732<_0x1928f2[_0x5d24('0x3c')]['ids'][_0x5d24('0x41')];_0x37f732+=0x1){socket['emit'](_0x5d24('0x8b'),{'UserId':Number(_0x1928f2[_0x5d24('0x3c')]['ids'][_0x37f732]),'OpenchannelQueueId':Number(_0x1928f2[_0x5d24('0x56')]['id'])});}}else{socket['emit'](_0x5d24('0x8b'),{'UserId':Number(_0x1928f2[_0x5d24('0x3c')][_0x5d24('0x6a')]),'OpenchannelQueueId':Number(_0x1928f2[_0x5d24('0x56')]['id'])});}});}})[_0x5d24('0x2a')](respondWithStatusCode(_0x242797,null))[_0x5d24('0x4d')](handleError(_0x242797,null));};exports[_0x5d24('0x91')]=function(_0x530a42,_0x1b79d9,_0x2685b4){var _0x2dfe3a={};var _0x142b1d={};var _0x5c9f7e;var _0x348db7;return db[_0x5d24('0x35')][_0x5d24('0x59')]({'where':{'id':_0x530a42[_0x5d24('0x56')]['id']}})[_0x5d24('0x2a')](handleEntityNotFound(_0x1b79d9,null))[_0x5d24('0x2a')](function(_0x1ddcfa){if(_0x1ddcfa){_0x5c9f7e=_0x1ddcfa;_0x142b1d[_0x5d24('0x39')]=_[_0x5d24('0x3b')](db[_0x5d24('0x5f')][_0x5d24('0x36')]);_0x142b1d[_0x5d24('0x3c')]=_['keys'](_0x530a42[_0x5d24('0x3c')]);_0x142b1d['filters']=_[_0x5d24('0x3e')](_0x142b1d[_0x5d24('0x39')],_0x142b1d['query']);_0x2dfe3a['attributes']=_[_0x5d24('0x3e')](_0x142b1d[_0x5d24('0x39')],qs[_0x5d24('0x3f')](_0x530a42[_0x5d24('0x3c')][_0x5d24('0x3f')]));_0x2dfe3a['attributes']=_0x2dfe3a[_0x5d24('0x40')][_0x5d24('0x41')]?_0x2dfe3a['attributes']:_0x142b1d[_0x5d24('0x39')];_0x2dfe3a[_0x5d24('0x44')]=qs['sort'](_0x530a42[_0x5d24('0x3c')][_0x5d24('0x45')]);_0x2dfe3a[_0x5d24('0x46')]=qs[_0x5d24('0x3d')](_['pick'](_0x530a42['query'],_0x142b1d[_0x5d24('0x3d')]));if(_0x530a42[_0x5d24('0x3c')][_0x5d24('0x47')]){_0x2dfe3a[_0x5d24('0x46')]=_[_0x5d24('0x48')](_0x2dfe3a[_0x5d24('0x46')],{'$or':_[_0x5d24('0x34')](_0x2dfe3a[_0x5d24('0x40')],function(_0x2b4268){var _0x4a43df={};_0x4a43df[_0x2b4268]={'$like':'%'+_0x530a42[_0x5d24('0x3c')][_0x5d24('0x47')]+'%'};return _0x4a43df;})});}_0x2dfe3a=_[_0x5d24('0x48')]({},_0x2dfe3a,_0x530a42[_0x5d24('0x5c')]);return _0x5c9f7e[_0x5d24('0x91')](_0x2dfe3a);}})['then'](function(_0x1c7719){if(_0x1c7719){_0x348db7=_0x1c7719['length'];if(!_0x530a42[_0x5d24('0x3c')][_0x5d24('0x42')](_0x5d24('0x43'))){_0x2dfe3a[_0x5d24('0x24')]=qs[_0x5d24('0x24')](_0x530a42[_0x5d24('0x3c')][_0x5d24('0x24')]);_0x2dfe3a[_0x5d24('0x22')]=qs['offset'](_0x530a42[_0x5d24('0x3c')][_0x5d24('0x22')]);}return _0x5c9f7e[_0x5d24('0x91')](_0x2dfe3a);}})['then'](function(_0x2eb709){if(_0x2eb709){return _0x2eb709?{'count':_0x348db7,'rows':_0x2eb709}:null;}})[_0x5d24('0x2a')](respondWithResult(_0x1b79d9,null))[_0x5d24('0x4d')](handleError(_0x1b79d9,null));};
\ No newline at end of file
index 457a80d..c12652f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe396=['hook','exports','../../mysqldb','OpenchannelQueue','setMaxListeners','save','update','remove','hasOwnProperty'];(function(_0x562ef2,_0x55a1a4){var _0x7dff5a=function(_0x60ba63){while(--_0x60ba63){_0x562ef2['push'](_0x562ef2['shift']());}};_0x7dff5a(++_0x55a1a4);}(_0xe396,0xf5));var _0x6e39=function(_0x43eeb7,_0x5b87de){_0x43eeb7=_0x43eeb7-0x0;var _0x150f06=_0xe396[_0x43eeb7];return _0x150f06;};'use strict';var EventEmitter=require('events');var OpenchannelQueue=require(_0x6e39('0x0'))['db'][_0x6e39('0x1')];var OpenchannelQueueEvents=new EventEmitter();OpenchannelQueueEvents[_0x6e39('0x2')](0x0);var events={'afterCreate':_0x6e39('0x3'),'afterUpdate':_0x6e39('0x4'),'afterDestroy':_0x6e39('0x5')};function emitEvent(_0x40990a){return function(_0x28ba18,_0x38074e,_0x10da8f){OpenchannelQueueEvents['emit'](_0x40990a+':'+_0x28ba18['id'],_0x28ba18);OpenchannelQueueEvents['emit'](_0x40990a,_0x28ba18);_0x10da8f(null);};}for(var e in events){if(events[_0x6e39('0x6')](e)){var event=events[e];OpenchannelQueue[_0x6e39('0x7')](e,emitEvent(event));}}module[_0x6e39('0x8')]=OpenchannelQueueEvents;
\ No newline at end of file
+var _0xef56=['../../mysqldb','OpenchannelQueue','emit','hasOwnProperty','exports'];(function(_0x2378ef,_0x1b182e){var _0x9dc6fb=function(_0x4ce9e0){while(--_0x4ce9e0){_0x2378ef['push'](_0x2378ef['shift']());}};_0x9dc6fb(++_0x1b182e);}(_0xef56,0x140));var _0x6ef5=function(_0x119cd8,_0x556b73){_0x119cd8=_0x119cd8-0x0;var _0x7072a3=_0xef56[_0x119cd8];return _0x7072a3;};'use strict';var EventEmitter=require('events');var OpenchannelQueue=require(_0x6ef5('0x0'))['db'][_0x6ef5('0x1')];var OpenchannelQueueEvents=new EventEmitter();OpenchannelQueueEvents['setMaxListeners'](0x0);var events={'afterCreate':'save','afterUpdate':'update','afterDestroy':'remove'};function emitEvent(_0x57b71e){return function(_0x3e9844,_0x3d9a82,_0x48e260){OpenchannelQueueEvents[_0x6ef5('0x2')](_0x57b71e+':'+_0x3e9844['id'],_0x3e9844);OpenchannelQueueEvents[_0x6ef5('0x2')](_0x57b71e,_0x3e9844);_0x48e260(null);};}for(var e in events){if(events[_0x6ef5('0x3')](e)){var event=events[e];OpenchannelQueue['hook'](e,emitEvent(event));}}module[_0x6ef5('0x4')]=OpenchannelQueueEvents;
\ No newline at end of file
index ae4db5b..9c14d40 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0325=['util','../../config/logger','moment','bluebird','request-promise','path','rimraf','../../config/environment','./openchannelQueue.attributes','exports','define','openchannel_queues'];(function(_0x2eaf2b,_0x255071){var _0x57eadb=function(_0x5e88c3){while(--_0x5e88c3){_0x2eaf2b['push'](_0x2eaf2b['shift']());}};_0x57eadb(++_0x255071);}(_0x0325,0x114));var _0x5032=function(_0x174ce7,_0xbe0652){_0x174ce7=_0x174ce7-0x0;var _0x187473=_0x0325[_0x174ce7];return _0x187473;};'use strict';var _=require('lodash');var util=require(_0x5032('0x0'));var logger=require(_0x5032('0x1'))('api');var moment=require(_0x5032('0x2'));var BPromise=require(_0x5032('0x3'));var rp=require(_0x5032('0x4'));var fs=require('fs');var path=require(_0x5032('0x5'));var rimraf=require(_0x5032('0x6'));var config=require(_0x5032('0x7'));var attributes=require(_0x5032('0x8'));module[_0x5032('0x9')]=function(_0x1619a8,_0x34427a){return _0x1619a8[_0x5032('0xa')]('OpenchannelQueue',attributes,{'tableName':_0x5032('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x3607=['path','rimraf','../../config/environment','./openchannelQueue.attributes','exports','lodash','api','moment','request-promise'];(function(_0x57241c,_0x4ee049){var _0x5c18f2=function(_0x4cab6a){while(--_0x4cab6a){_0x57241c['push'](_0x57241c['shift']());}};_0x5c18f2(++_0x4ee049);}(_0x3607,0xc2));var _0x7360=function(_0xbf399f,_0x5ddc2a){_0xbf399f=_0xbf399f-0x0;var _0x1f41e5=_0x3607[_0xbf399f];return _0x1f41e5;};'use strict';var _=require(_0x7360('0x0'));var util=require('util');var logger=require('../../config/logger')(_0x7360('0x1'));var moment=require(_0x7360('0x2'));var BPromise=require('bluebird');var rp=require(_0x7360('0x3'));var fs=require('fs');var path=require(_0x7360('0x4'));var rimraf=require(_0x7360('0x5'));var config=require(_0x7360('0x6'));var attributes=require(_0x7360('0x7'));module[_0x7360('0x8')]=function(_0x566cb3,_0x34516d){return _0x566cb3['define']('OpenchannelQueue',attributes,{'tableName':'openchannel_queues','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 84bc222..e1036ff 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9633=['./openchannelQueue.socket','register','then','info','OpenchannelQueue,\x20%s,\x20%s','request\x20sent','OpenchannelQueue,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','GetOpenchannelQueue','OpenchannelQueue','findAll','options','where','limit','include','model','attributes','map','raw','ShowOpenchannelQueue','debug','moment','../../mysqldb','../../config/utils','rpc','../../config/environment','jayson/promise','client','http','redis','defaults','socket.io-emitter'];(function(_0x1a1b6e,_0x3a07a9){var _0x571e2c=function(_0x6cea62){while(--_0x6cea62){_0x1a1b6e['push'](_0x1a1b6e['shift']());}};_0x571e2c(++_0x3a07a9);}(_0x9633,0x1d6));var _0x3963=function(_0xbe4cc1,_0x1087d7){_0xbe4cc1=_0xbe4cc1-0x0;var _0x4c3254=_0x9633[_0xbe4cc1];return _0x4c3254;};'use strict';var _=require('lodash');var util=require('util');var moment=require(_0x3963('0x0'));var BPromise=require('bluebird');var rs=require('randomstring');var fs=require('fs');var Redis=require('ioredis');var db=require(_0x3963('0x1'))['db'];var utils=require(_0x3963('0x2'));var logger=require('../../config/logger')(_0x3963('0x3'));var config=require(_0x3963('0x4'));var jayson=require(_0x3963('0x5'));var client=jayson[_0x3963('0x6')][_0x3963('0x7')]({'port':0x232a});config[_0x3963('0x8')]=_[_0x3963('0x9')](config[_0x3963('0x8')],{'host':'localhost','port':0x18eb});var socket=require(_0x3963('0xa'))(new Redis(config[_0x3963('0x8')]));require(_0x3963('0xb'))[_0x3963('0xc')](socket);function respondWithRpcPromise(_0x28a3e0,_0x40d6f5,_0x1a0a64){return new BPromise(function(_0x2db594,_0x1733d0){return client['request'](_0x28a3e0,_0x1a0a64)[_0x3963('0xd')](function(_0x2067a3){logger[_0x3963('0xe')](_0x3963('0xf'),_0x40d6f5,_0x3963('0x10'));logger['debug'](_0x3963('0x11'),_0x40d6f5,_0x3963('0x10'),JSON[_0x3963('0x12')](_0x2067a3));if(_0x2067a3['error']){if(_0x2067a3[_0x3963('0x13')][_0x3963('0x14')]===0x1f4){logger['error'](_0x3963('0xf'),_0x40d6f5,_0x2067a3['error'][_0x3963('0x15')]);return _0x1733d0(_0x2067a3[_0x3963('0x13')]['message']);}logger[_0x3963('0x13')]('OpenchannelQueue,\x20%s,\x20%s',_0x40d6f5,_0x2067a3[_0x3963('0x13')]['message']);return _0x2db594(_0x2067a3[_0x3963('0x13')]['message']);}else{logger[_0x3963('0xe')]('OpenchannelQueue,\x20%s,\x20%s',_0x40d6f5,_0x3963('0x10'));_0x2db594(_0x2067a3[_0x3963('0x16')][_0x3963('0x15')]);}})[_0x3963('0x17')](function(_0x40d6a7){logger[_0x3963('0x13')](_0x3963('0xf'),_0x40d6f5,_0x40d6a7);_0x1733d0(_0x40d6a7);});});}exports[_0x3963('0x18')]=function(_0xb751d2){var _0x2d7167=this;return new Promise(function(_0x2087ff,_0x50e94b){return db[_0x3963('0x19')][_0x3963('0x1a')]({'raw':_0xb751d2[_0x3963('0x1b')]?_0xb751d2[_0x3963('0x1b')]['raw']===undefined?!![]:![]:!![],'where':_0xb751d2[_0x3963('0x1b')]?_0xb751d2[_0x3963('0x1b')][_0x3963('0x1c')]||null:null,'attributes':_0xb751d2[_0x3963('0x1b')]?_0xb751d2[_0x3963('0x1b')]['attributes']||null:null,'limit':_0xb751d2[_0x3963('0x1b')]?_0xb751d2[_0x3963('0x1b')][_0x3963('0x1d')]||null:null,'include':_0xb751d2['options']?_0xb751d2[_0x3963('0x1b')][_0x3963('0x1e')]?_['map'](_0xb751d2[_0x3963('0x1b')][_0x3963('0x1e')],function(_0x5f1b42){return{'model':db[_0x5f1b42[_0x3963('0x1f')]],'as':_0x5f1b42['as'],'attributes':_0x5f1b42[_0x3963('0x20')],'include':_0x5f1b42['include']?_[_0x3963('0x21')](_0x5f1b42['include'],function(_0x5a2c9f){return{'model':db[_0x5a2c9f['model']],'as':_0x5a2c9f['as'],'attributes':_0x5a2c9f['attributes'],'include':_0x5a2c9f[_0x3963('0x1e')]?_[_0x3963('0x21')](_0x5a2c9f[_0x3963('0x1e')],function(_0x14f912){return{'model':db[_0x14f912[_0x3963('0x1f')]],'as':_0x14f912['as'],'attributes':_0x14f912[_0x3963('0x20')]};}):[]};}):[]};}):[]:[]})[_0x3963('0xd')](function(_0x1279c2){logger[_0x3963('0xe')]('GetOpenchannelQueue',_0xb751d2);logger['debug']('GetOpenchannelQueue',_0xb751d2,JSON['stringify'](_0x1279c2));_0x2087ff(_0x1279c2);})[_0x3963('0x17')](function(_0x4734f5){logger[_0x3963('0x13')]('GetOpenchannelQueue',_0x4734f5[_0x3963('0x15')],_0xb751d2);_0x50e94b(_0x2d7167[_0x3963('0x13')](0x1f4,_0x4734f5[_0x3963('0x15')]));});});};exports['ShowOpenchannelQueue']=function(_0xff3300){var _0xdb6007=this;return new Promise(function(_0x1292b0,_0x452ee9){return db[_0x3963('0x19')]['find']({'raw':_0xff3300['options']?_0xff3300[_0x3963('0x1b')][_0x3963('0x22')]===undefined?!![]:![]:!![],'where':_0xff3300[_0x3963('0x1b')]?_0xff3300[_0x3963('0x1b')]['where']||null:null,'attributes':_0xff3300[_0x3963('0x1b')]?_0xff3300[_0x3963('0x1b')][_0x3963('0x20')]||null:null,'include':_0xff3300[_0x3963('0x1b')]?_0xff3300['options'][_0x3963('0x1e')]?_['map'](_0xff3300[_0x3963('0x1b')][_0x3963('0x1e')],function(_0x34c627){return{'model':db[_0x34c627[_0x3963('0x1f')]],'as':_0x34c627['as'],'attributes':_0x34c627[_0x3963('0x20')],'include':_0x34c627[_0x3963('0x1e')]?_[_0x3963('0x21')](_0x34c627['include'],function(_0x7966b5){return{'model':db[_0x7966b5[_0x3963('0x1f')]],'as':_0x7966b5['as'],'attributes':_0x7966b5[_0x3963('0x20')],'include':_0x7966b5['include']?_[_0x3963('0x21')](_0x7966b5[_0x3963('0x1e')],function(_0x35faf5){return{'model':db[_0x35faf5['model']],'as':_0x35faf5['as'],'attributes':_0x35faf5[_0x3963('0x20')]};}):[]};}):[]};}):[]:[]})[_0x3963('0xd')](function(_0x5dca5e){logger[_0x3963('0xe')](_0x3963('0x23'),_0xff3300);logger[_0x3963('0x24')]('ShowOpenchannelQueue',_0xff3300,JSON['stringify'](_0x5dca5e));_0x1292b0(_0x5dca5e);})[_0x3963('0x17')](function(_0x315eb9){logger[_0x3963('0x13')](_0x3963('0x23'),_0x315eb9['message'],_0xff3300);_0x452ee9(_0xdb6007[_0x3963('0x13')](0x1f4,_0x315eb9[_0x3963('0x15')]));});});};
\ No newline at end of file
+var _0x2286=['redis','./openchannelQueue.socket','register','request','info','request\x20sent','stringify','error','OpenchannelQueue,\x20%s,\x20%s','message','catch','GetOpenchannelQueue','findAll','options','raw','where','attributes','include','map','model','debug','ShowOpenchannelQueue','OpenchannelQueue','find','then','lodash','util','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','rpc','../../config/environment','jayson/promise','http','localhost'];(function(_0x40176b,_0x168e9f){var _0x874f78=function(_0x241b18){while(--_0x241b18){_0x40176b['push'](_0x40176b['shift']());}};_0x874f78(++_0x168e9f);}(_0x2286,0xf7));var _0x6228=function(_0x30414a,_0x3c8ed5){_0x30414a=_0x30414a-0x0;var _0x77ca87=_0x2286[_0x30414a];return _0x77ca87;};'use strict';var _=require(_0x6228('0x0'));var util=require(_0x6228('0x1'));var moment=require('moment');var BPromise=require(_0x6228('0x2'));var rs=require(_0x6228('0x3'));var fs=require('fs');var Redis=require(_0x6228('0x4'));var db=require(_0x6228('0x5'))['db'];var utils=require(_0x6228('0x6'));var logger=require('../../config/logger')(_0x6228('0x7'));var config=require(_0x6228('0x8'));var jayson=require(_0x6228('0x9'));var client=jayson['client'][_0x6228('0xa')]({'port':0x232a});config['redis']=_['defaults'](config['redis'],{'host':_0x6228('0xb'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0x6228('0xc')]));require(_0x6228('0xd'))[_0x6228('0xe')](socket);function respondWithRpcPromise(_0x2d6c40,_0x8c3dfa,_0x117cc3){return new BPromise(function(_0x216b83,_0x41d3d7){return client[_0x6228('0xf')](_0x2d6c40,_0x117cc3)['then'](function(_0x12839b){logger[_0x6228('0x10')]('OpenchannelQueue,\x20%s,\x20%s',_0x8c3dfa,_0x6228('0x11'));logger['debug']('OpenchannelQueue,\x20%s,\x20%s,\x20%s',_0x8c3dfa,_0x6228('0x11'),JSON[_0x6228('0x12')](_0x12839b));if(_0x12839b[_0x6228('0x13')]){if(_0x12839b[_0x6228('0x13')]['code']===0x1f4){logger[_0x6228('0x13')](_0x6228('0x14'),_0x8c3dfa,_0x12839b['error']['message']);return _0x41d3d7(_0x12839b['error'][_0x6228('0x15')]);}logger[_0x6228('0x13')](_0x6228('0x14'),_0x8c3dfa,_0x12839b[_0x6228('0x13')][_0x6228('0x15')]);return _0x216b83(_0x12839b['error']['message']);}else{logger[_0x6228('0x10')](_0x6228('0x14'),_0x8c3dfa,'request\x20sent');_0x216b83(_0x12839b['result'][_0x6228('0x15')]);}})[_0x6228('0x16')](function(_0x538710){logger[_0x6228('0x13')](_0x6228('0x14'),_0x8c3dfa,_0x538710);_0x41d3d7(_0x538710);});});}exports[_0x6228('0x17')]=function(_0x13625a){var _0x24b876=this;return new Promise(function(_0x56dc70,_0x2a1ad4){return db['OpenchannelQueue'][_0x6228('0x18')]({'raw':_0x13625a[_0x6228('0x19')]?_0x13625a[_0x6228('0x19')][_0x6228('0x1a')]===undefined?!![]:![]:!![],'where':_0x13625a[_0x6228('0x19')]?_0x13625a[_0x6228('0x19')][_0x6228('0x1b')]||null:null,'attributes':_0x13625a[_0x6228('0x19')]?_0x13625a[_0x6228('0x19')][_0x6228('0x1c')]||null:null,'limit':_0x13625a[_0x6228('0x19')]?_0x13625a['options']['limit']||null:null,'include':_0x13625a[_0x6228('0x19')]?_0x13625a['options'][_0x6228('0x1d')]?_[_0x6228('0x1e')](_0x13625a[_0x6228('0x19')][_0x6228('0x1d')],function(_0x525a85){return{'model':db[_0x525a85[_0x6228('0x1f')]],'as':_0x525a85['as'],'attributes':_0x525a85[_0x6228('0x1c')],'include':_0x525a85[_0x6228('0x1d')]?_['map'](_0x525a85[_0x6228('0x1d')],function(_0x3945a6){return{'model':db[_0x3945a6['model']],'as':_0x3945a6['as'],'attributes':_0x3945a6[_0x6228('0x1c')],'include':_0x3945a6[_0x6228('0x1d')]?_[_0x6228('0x1e')](_0x3945a6[_0x6228('0x1d')],function(_0x3d3957){return{'model':db[_0x3d3957[_0x6228('0x1f')]],'as':_0x3d3957['as'],'attributes':_0x3d3957['attributes']};}):[]};}):[]};}):[]:[]})['then'](function(_0x2c1559){logger[_0x6228('0x10')](_0x6228('0x17'),_0x13625a);logger[_0x6228('0x20')](_0x6228('0x17'),_0x13625a,JSON['stringify'](_0x2c1559));_0x56dc70(_0x2c1559);})['catch'](function(_0x59780f){logger[_0x6228('0x13')](_0x6228('0x17'),_0x59780f[_0x6228('0x15')],_0x13625a);_0x2a1ad4(_0x24b876[_0x6228('0x13')](0x1f4,_0x59780f[_0x6228('0x15')]));});});};exports[_0x6228('0x21')]=function(_0xdec93){var _0x39dd8b=this;return new Promise(function(_0x5f33c9,_0x12d8cc){return db[_0x6228('0x22')][_0x6228('0x23')]({'raw':_0xdec93['options']?_0xdec93[_0x6228('0x19')][_0x6228('0x1a')]===undefined?!![]:![]:!![],'where':_0xdec93[_0x6228('0x19')]?_0xdec93[_0x6228('0x19')][_0x6228('0x1b')]||null:null,'attributes':_0xdec93[_0x6228('0x19')]?_0xdec93['options']['attributes']||null:null,'include':_0xdec93[_0x6228('0x19')]?_0xdec93[_0x6228('0x19')]['include']?_[_0x6228('0x1e')](_0xdec93[_0x6228('0x19')][_0x6228('0x1d')],function(_0x5c33bc){return{'model':db[_0x5c33bc[_0x6228('0x1f')]],'as':_0x5c33bc['as'],'attributes':_0x5c33bc[_0x6228('0x1c')],'include':_0x5c33bc[_0x6228('0x1d')]?_[_0x6228('0x1e')](_0x5c33bc[_0x6228('0x1d')],function(_0x31b238){return{'model':db[_0x31b238[_0x6228('0x1f')]],'as':_0x31b238['as'],'attributes':_0x31b238[_0x6228('0x1c')],'include':_0x31b238[_0x6228('0x1d')]?_['map'](_0x31b238[_0x6228('0x1d')],function(_0x3efb6a){return{'model':db[_0x3efb6a['model']],'as':_0x3efb6a['as'],'attributes':_0x3efb6a[_0x6228('0x1c')]};}):[]};}):[]};}):[]:[]})[_0x6228('0x24')](function(_0x5034e4){logger[_0x6228('0x10')](_0x6228('0x21'),_0xdec93);logger[_0x6228('0x20')]('ShowOpenchannelQueue',_0xdec93,JSON[_0x6228('0x12')](_0x5034e4));_0x5f33c9(_0x5034e4);})[_0x6228('0x16')](function(_0x4e8ad8){logger[_0x6228('0x13')](_0x6228('0x21'),_0x4e8ad8[_0x6228('0x15')],_0xdec93);_0x12d8cc(_0x39dd8b[_0x6228('0x13')](0x1f4,_0x4e8ad8[_0x6228('0x15')]));});});};
\ No newline at end of file
index a03ccba..93af5b8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xbc2c=['register','length','./openchannelQueue.events','save','removeListener'];(function(_0x4b369d,_0x265eb8){var _0x571a98=function(_0x56341a){while(--_0x56341a){_0x4b369d['push'](_0x4b369d['shift']());}};_0x571a98(++_0x265eb8);}(_0xbc2c,0x147));var _0xcbc2=function(_0x12c7e3,_0x417a84){_0x12c7e3=_0x12c7e3-0x0;var _0x348f08=_0xbc2c[_0x12c7e3];return _0x348f08;};'use strict';var OpenchannelQueueEvents=require(_0xcbc2('0x0'));var events=[_0xcbc2('0x1'),'remove','update'];function createListener(_0xe3c4d0,_0x3124c7){return function(_0x1d849b){_0x3124c7['emit'](_0xe3c4d0,_0x1d849b);};}function removeListener(_0x48f8bc,_0x5ccdd3){return function(){OpenchannelQueueEvents[_0xcbc2('0x2')](_0x48f8bc,_0x5ccdd3);};}exports[_0xcbc2('0x3')]=function(_0xf3f4ec){for(var _0x313de9=0x0,_0x36b043=events[_0xcbc2('0x4')];_0x313de9<_0x36b043;_0x313de9++){var _0x7c78ec=events[_0x313de9];var _0x3e5d91=createListener('openchannelQueue:'+_0x7c78ec,_0xf3f4ec);OpenchannelQueueEvents['on'](_0x7c78ec,_0x3e5d91);}};
\ No newline at end of file
+var _0xd4ec=['register','./openchannelQueue.events','save','remove','update','removeListener'];(function(_0x5ad0a6,_0x35e612){var _0x2d55b4=function(_0x383c7e){while(--_0x383c7e){_0x5ad0a6['push'](_0x5ad0a6['shift']());}};_0x2d55b4(++_0x35e612);}(_0xd4ec,0x1c9));var _0xcd4e=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0xd4ec[_0x3dd15e];return _0x231fd0;};'use strict';var OpenchannelQueueEvents=require(_0xcd4e('0x0'));var events=[_0xcd4e('0x1'),_0xcd4e('0x2'),_0xcd4e('0x3')];function createListener(_0xc981d,_0x141a4a){return function(_0x34baf9){_0x141a4a['emit'](_0xc981d,_0x34baf9);};}function removeListener(_0x5a801f,_0x126992){return function(){OpenchannelQueueEvents[_0xcd4e('0x4')](_0x5a801f,_0x126992);};}exports[_0xcd4e('0x5')]=function(_0x55212e){for(var _0x286889=0x0,_0x7636a0=events['length'];_0x286889<_0x7636a0;_0x286889++){var _0x1977c3=events[_0x286889];var _0x4ebc62=createListener('openchannelQueue:'+_0x1977c3,_0x55212e);OpenchannelQueueEvents['on'](_0x1977c3,_0x4ebc62);}};
\ No newline at end of file
index b72c884..6a1c195 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4ee7=['/:id','show','post','put','update','delete','destroy','exports','util','path','connect-timeout','express','Router','../../config/environment','get','isAuthenticated','describe'];(function(_0x1d5e91,_0x12cd07){var _0x220966=function(_0x5484ec){while(--_0x5484ec){_0x1d5e91['push'](_0x1d5e91['shift']());}};_0x220966(++_0x12cd07);}(_0x4ee7,0x14b));var _0x74ee=function(_0x2a0c0f,_0x39dc58){_0x2a0c0f=_0x2a0c0f-0x0;var _0x328072=_0x4ee7[_0x2a0c0f];return _0x328072;};'use strict';var multer=require('multer');var util=require(_0x74ee('0x0'));var path=require(_0x74ee('0x1'));var timeout=require(_0x74ee('0x2'));var express=require(_0x74ee('0x3'));var router=express[_0x74ee('0x4')]();var fs_extra=require('fs-extra');var auth=require('../../components/auth/service');var interaction=require('../../components/interaction/service');var config=require(_0x74ee('0x5'));var controller=require('./openchannelQueueReport.controller');router[_0x74ee('0x6')]('/',auth[_0x74ee('0x7')](),controller['index']);router['get']('/describe',auth[_0x74ee('0x7')](),controller[_0x74ee('0x8')]);router[_0x74ee('0x6')](_0x74ee('0x9'),auth[_0x74ee('0x7')](),controller[_0x74ee('0xa')]);router[_0x74ee('0xb')]('/',auth[_0x74ee('0x7')](),controller['create']);router[_0x74ee('0xc')](_0x74ee('0x9'),auth[_0x74ee('0x7')](),controller[_0x74ee('0xd')]);router[_0x74ee('0xe')](_0x74ee('0x9'),auth[_0x74ee('0x7')](),controller[_0x74ee('0xf')]);module[_0x74ee('0x10')]=router;
\ No newline at end of file
+var _0x7403=['/:id','show','put','update','delete','destroy','exports','multer','util','path','connect-timeout','express','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./openchannelQueueReport.controller','isAuthenticated','index','get','/describe'];(function(_0x3ccb63,_0x2c8e9b){var _0x161241=function(_0x11e6a9){while(--_0x11e6a9){_0x3ccb63['push'](_0x3ccb63['shift']());}};_0x161241(++_0x2c8e9b);}(_0x7403,0x181));var _0x3740=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x7403[_0x3dd15e];return _0x231fd0;};'use strict';var multer=require(_0x3740('0x0'));var util=require(_0x3740('0x1'));var path=require(_0x3740('0x2'));var timeout=require(_0x3740('0x3'));var express=require(_0x3740('0x4'));var router=express['Router']();var fs_extra=require(_0x3740('0x5'));var auth=require(_0x3740('0x6'));var interaction=require(_0x3740('0x7'));var config=require(_0x3740('0x8'));var controller=require(_0x3740('0x9'));router['get']('/',auth[_0x3740('0xa')](),controller[_0x3740('0xb')]);router[_0x3740('0xc')](_0x3740('0xd'),auth[_0x3740('0xa')](),controller['describe']);router[_0x3740('0xc')](_0x3740('0xe'),auth[_0x3740('0xa')](),controller[_0x3740('0xf')]);router['post']('/',auth[_0x3740('0xa')](),controller['create']);router[_0x3740('0x10')]('/:id',auth[_0x3740('0xa')](),controller[_0x3740('0x11')]);router[_0x3740('0x12')](_0x3740('0xe'),auth[_0x3740('0xa')](),controller[_0x3740('0x13')]);module[_0x3740('0x14')]=router;
\ No newline at end of file
index ea5d544..e6ceb8c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe9af=['STRING','DATE','sequelize','exports'];(function(_0x20a584,_0xe384a5){var _0x4b41a8=function(_0x2127c6){while(--_0x2127c6){_0x20a584['push'](_0x20a584['shift']());}};_0x4b41a8(++_0xe384a5);}(_0xe9af,0x96));var _0xfe9a=function(_0x1f2f87,_0x1d3923){_0x1f2f87=_0x1f2f87-0x0;var _0x55c0c4=_0xe9af[_0x1f2f87];return _0x55c0c4;};'use strict';var moment=require('moment');var Sequelize=require(_0xfe9a('0x0'));module[_0xfe9a('0x1')]={'uniqueid':{'type':Sequelize[_0xfe9a('0x2')],'allowNull':![]},'from':{'type':Sequelize[_0xfe9a('0x2')]},'joinAt':{'type':Sequelize[_0xfe9a('0x3')]},'leaveAt':{'type':Sequelize[_0xfe9a('0x3')]},'acceptAt':{'type':Sequelize[_0xfe9a('0x3')]},'exitAt':{'type':Sequelize[_0xfe9a('0x3')]},'reason':{'type':Sequelize['STRING']}};
\ No newline at end of file
+var _0x7612=['STRING','DATE','moment','sequelize','exports'];(function(_0xf50820,_0x56f041){var _0x2a9b10=function(_0x33f0f4){while(--_0x33f0f4){_0xf50820['push'](_0xf50820['shift']());}};_0x2a9b10(++_0x56f041);}(_0x7612,0x192));var _0x2761=function(_0x21d0c3,_0x16c71c){_0x21d0c3=_0x21d0c3-0x0;var _0x4df18e=_0x7612[_0x21d0c3];return _0x4df18e;};'use strict';var moment=require(_0x2761('0x0'));var Sequelize=require(_0x2761('0x1'));module[_0x2761('0x2')]={'uniqueid':{'type':Sequelize[_0x2761('0x3')],'allowNull':![]},'from':{'type':Sequelize[_0x2761('0x3')]},'joinAt':{'type':Sequelize[_0x2761('0x4')]},'leaveAt':{'type':Sequelize['DATE']},'acceptAt':{'type':Sequelize[_0x2761('0x4')]},'exitAt':{'type':Sequelize[_0x2761('0x4')]},'reason':{'type':Sequelize['STRING']}};
\ No newline at end of file
index 2350173..4ed13df 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xbaad=['to-csv','ejs','fs-extra','lodash','crypto','jsforce','querystring','../../components/auth/service','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','sendStatus','status','end','json','offset','limit','undefined','count','set','Content-Range','reject','save','update','then','destroy','error','name','send','map','OpenchannelQueueReport','rawAttributes','fieldName','key','query','keys','filters','intersection','model','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','pick','filter','merge','type','VIRTUAL','options','includeAll','include','findAll','rows','find','catch','create','body','params','describe','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','sox'];(function(_0x5db1a4,_0x14aa78){var _0x21ac3f=function(_0x108068){while(--_0x108068){_0x5db1a4['push'](_0x5db1a4['shift']());}};_0x21ac3f(++_0x14aa78);}(_0xbaad,0x172));var _0xdbaa=function(_0x270683,_0x29ebc9){_0x270683=_0x270683-0x0;var _0x2afb52=_0xbaad[_0x270683];return _0x2afb52;};'use strict';var emlformat=require(_0xdbaa('0x0'));var rimraf=require(_0xdbaa('0x1'));var zipdir=require(_0xdbaa('0x2'));var jsonpatch=require(_0xdbaa('0x3'));var rp=require(_0xdbaa('0x4'));var moment=require(_0xdbaa('0x5'));var BPromise=require(_0xdbaa('0x6'));var Mustache=require(_0xdbaa('0x7'));var util=require(_0xdbaa('0x8'));var path=require('path');var sox=require(_0xdbaa('0x9'));var csv=require(_0xdbaa('0xa'));var ejs=require(_0xdbaa('0xb'));var fs=require('fs');var fs_extra=require(_0xdbaa('0xc'));var _=require(_0xdbaa('0xd'));var squel=require('squel');var crypto=require(_0xdbaa('0xe'));var jsforce=require(_0xdbaa('0xf'));var deskjs=require('desk.js');var toCsv=require(_0xdbaa('0xa'));var querystring=require(_0xdbaa('0x10'));var Papa=require('papaparse');var Redis=require('ioredis');var authService=require(_0xdbaa('0x11'));var qs=require('../../components/parsers/qs');var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0xdbaa('0x12'));var logger=require(_0xdbaa('0x13'))(_0xdbaa('0x14'));var utils=require(_0xdbaa('0x15'));var config=require(_0xdbaa('0x16'));var licenseUtil=require(_0xdbaa('0x17'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x173530,_0x23f924){_0x23f924=_0x23f924||0xcc;return function(_0x95339e){if(_0x95339e){return _0x173530[_0xdbaa('0x18')](_0x23f924);}return _0x173530[_0xdbaa('0x19')](_0x23f924)[_0xdbaa('0x1a')]();};}function respondWithResult(_0x4c1b7f,_0x383e95){_0x383e95=_0x383e95||0xc8;return function(_0x2b3d29){if(_0x2b3d29){return _0x4c1b7f[_0xdbaa('0x19')](_0x383e95)[_0xdbaa('0x1b')](_0x2b3d29);}};}function respondWithFilteredResult(_0x2d3626,_0x597850){return function(_0x557ae8){if(_0x557ae8){var _0x53ce35=typeof _0x597850[_0xdbaa('0x1c')]==='undefined'&&typeof _0x597850[_0xdbaa('0x1d')]===_0xdbaa('0x1e');var _0x9e32b6=_0x557ae8[_0xdbaa('0x1f')];var _0x57f1c8=_0x53ce35?0x0:_0x597850[_0xdbaa('0x1c')];var _0x8b1a4d=_0x53ce35?_0x557ae8['count']:_0x597850['offset']+_0x597850[_0xdbaa('0x1d')];var _0x13ad1a;if(_0x8b1a4d>=_0x9e32b6){_0x8b1a4d=_0x9e32b6;_0x13ad1a=0xc8;}else{_0x13ad1a=0xce;}_0x2d3626[_0xdbaa('0x19')](_0x13ad1a);return _0x2d3626[_0xdbaa('0x20')](_0xdbaa('0x21'),_0x57f1c8+'-'+_0x8b1a4d+'/'+_0x9e32b6)[_0xdbaa('0x1b')](_0x557ae8);}return null;};}function patchUpdates(_0x28f828){return function(_0x103e2e){try{jsonpatch['apply'](_0x103e2e,_0x28f828,!![]);}catch(_0x27a450){return BPromise[_0xdbaa('0x22')](_0x27a450);}return _0x103e2e[_0xdbaa('0x23')]();};}function saveUpdates(_0x3d0f0a,_0x2a2a75){return function(_0x3e2fc8){if(_0x3e2fc8){return _0x3e2fc8[_0xdbaa('0x24')](_0x3d0f0a)[_0xdbaa('0x25')](function(_0x4e6609){return _0x4e6609;});}return null;};}function removeEntity(_0x5d3945,_0x30659f){return function(_0x14fdfc){if(_0x14fdfc){return _0x14fdfc[_0xdbaa('0x26')]()[_0xdbaa('0x25')](function(){_0x5d3945[_0xdbaa('0x19')](0xcc)[_0xdbaa('0x1a')]();});}};}function handleEntityNotFound(_0x3fa7b8,_0x3f379a){return function(_0x9c2478){if(!_0x9c2478){_0x3fa7b8[_0xdbaa('0x18')](0x194);}return _0x9c2478;};}function handleError(_0x25b6b6,_0x1f82ba){_0x1f82ba=_0x1f82ba||0x1f4;return function(_0x3988dd){logger[_0xdbaa('0x27')](_0x3988dd['stack']);if(_0x3988dd[_0xdbaa('0x28')]){delete _0x3988dd[_0xdbaa('0x28')];}_0x25b6b6['status'](_0x1f82ba)[_0xdbaa('0x29')](_0x3988dd);};}exports['index']=function(_0x48a588,_0x14e4af){var _0x2a4a50={},_0x71102d={},_0x2701e4={'count':0x0,'rows':[]};var _0x58ac12=_[_0xdbaa('0x2a')](db[_0xdbaa('0x2b')][_0xdbaa('0x2c')],function(_0x3ae2ef){return{'name':_0x3ae2ef[_0xdbaa('0x2d')],'type':_0x3ae2ef['type'][_0xdbaa('0x2e')]};});_0x71102d['model']=_['map'](_0x58ac12,_0xdbaa('0x28'));_0x71102d[_0xdbaa('0x2f')]=_[_0xdbaa('0x30')](_0x48a588[_0xdbaa('0x2f')]);_0x71102d[_0xdbaa('0x31')]=_[_0xdbaa('0x32')](_0x71102d[_0xdbaa('0x33')],_0x71102d[_0xdbaa('0x2f')]);_0x2a4a50[_0xdbaa('0x34')]=_[_0xdbaa('0x32')](_0x71102d[_0xdbaa('0x33')],qs[_0xdbaa('0x35')](_0x48a588['query'][_0xdbaa('0x35')]));_0x2a4a50[_0xdbaa('0x34')]=_0x2a4a50['attributes'][_0xdbaa('0x36')]?_0x2a4a50[_0xdbaa('0x34')]:_0x71102d[_0xdbaa('0x33')];if(!_0x48a588[_0xdbaa('0x2f')][_0xdbaa('0x37')](_0xdbaa('0x38'))){_0x2a4a50['limit']=qs[_0xdbaa('0x1d')](_0x48a588[_0xdbaa('0x2f')][_0xdbaa('0x1d')]);_0x2a4a50[_0xdbaa('0x1c')]=qs[_0xdbaa('0x1c')](_0x48a588[_0xdbaa('0x2f')][_0xdbaa('0x1c')]);}_0x2a4a50[_0xdbaa('0x39')]=qs['sort'](_0x48a588[_0xdbaa('0x2f')][_0xdbaa('0x3a')]);_0x2a4a50[_0xdbaa('0x3b')]=qs[_0xdbaa('0x31')](_[_0xdbaa('0x3c')](_0x48a588['query'],_0x71102d[_0xdbaa('0x31')]),_0x58ac12);if(_0x48a588[_0xdbaa('0x2f')][_0xdbaa('0x3d')]){_0x2a4a50[_0xdbaa('0x3b')]=_[_0xdbaa('0x3e')](_0x2a4a50[_0xdbaa('0x3b')],{'$or':_[_0xdbaa('0x2a')](_0x58ac12,function(_0x82dfb0){if(_0x82dfb0[_0xdbaa('0x3f')]!==_0xdbaa('0x40')){var _0x1ca25e={};_0x1ca25e[_0x82dfb0[_0xdbaa('0x28')]]={'$like':'%'+_0x48a588[_0xdbaa('0x2f')][_0xdbaa('0x3d')]+'%'};return _0x1ca25e;}})});}_0x2a4a50=_['merge']({},_0x2a4a50,_0x48a588[_0xdbaa('0x41')]);var _0x398668={'where':_0x2a4a50[_0xdbaa('0x3b')]};return db[_0xdbaa('0x2b')][_0xdbaa('0x1f')](_0x398668)[_0xdbaa('0x25')](function(_0x583f0a){_0x2701e4[_0xdbaa('0x1f')]=_0x583f0a;if(_0x48a588['query'][_0xdbaa('0x42')]){_0x2a4a50[_0xdbaa('0x43')]=[{'all':!![]}];}return db[_0xdbaa('0x2b')][_0xdbaa('0x44')](_0x2a4a50);})[_0xdbaa('0x25')](function(_0x2d05be){_0x2701e4[_0xdbaa('0x45')]=_0x2d05be;return _0x2701e4;})[_0xdbaa('0x25')](respondWithFilteredResult(_0x14e4af,_0x2a4a50))['catch'](handleError(_0x14e4af,null));};exports['show']=function(_0x52e39b,_0x294205){var _0x155ed0={'raw':!![],'where':{'id':_0x52e39b['params']['id']}},_0x5b06fa={};_0x5b06fa['model']=_[_0xdbaa('0x30')](db[_0xdbaa('0x2b')][_0xdbaa('0x2c')]);_0x5b06fa[_0xdbaa('0x2f')]=_[_0xdbaa('0x30')](_0x52e39b[_0xdbaa('0x2f')]);_0x5b06fa['filters']=_[_0xdbaa('0x32')](_0x5b06fa[_0xdbaa('0x33')],_0x5b06fa[_0xdbaa('0x2f')]);_0x155ed0['attributes']=_[_0xdbaa('0x32')](_0x5b06fa['model'],qs[_0xdbaa('0x35')](_0x52e39b[_0xdbaa('0x2f')][_0xdbaa('0x35')]));_0x155ed0[_0xdbaa('0x34')]=_0x155ed0[_0xdbaa('0x34')][_0xdbaa('0x36')]?_0x155ed0[_0xdbaa('0x34')]:_0x5b06fa[_0xdbaa('0x33')];if(_0x52e39b['query'][_0xdbaa('0x42')]){_0x155ed0[_0xdbaa('0x43')]=[{'all':!![]}];}_0x155ed0=_[_0xdbaa('0x3e')]({},_0x155ed0,_0x52e39b['options']);return db[_0xdbaa('0x2b')][_0xdbaa('0x46')](_0x155ed0)[_0xdbaa('0x25')](handleEntityNotFound(_0x294205,null))[_0xdbaa('0x25')](respondWithResult(_0x294205,null))[_0xdbaa('0x47')](handleError(_0x294205,null));};exports[_0xdbaa('0x48')]=function(_0x67d970,_0x356a62){return db[_0xdbaa('0x2b')][_0xdbaa('0x48')](_0x67d970[_0xdbaa('0x49')],{})[_0xdbaa('0x25')](respondWithResult(_0x356a62,0xc9))[_0xdbaa('0x47')](handleError(_0x356a62,null));};exports[_0xdbaa('0x24')]=function(_0x1ca5ba,_0x3625ed){if(_0x1ca5ba[_0xdbaa('0x49')]['id']){delete _0x1ca5ba[_0xdbaa('0x49')]['id'];}return db[_0xdbaa('0x2b')]['find']({'where':{'id':_0x1ca5ba[_0xdbaa('0x4a')]['id']}})[_0xdbaa('0x25')](handleEntityNotFound(_0x3625ed,null))[_0xdbaa('0x25')](saveUpdates(_0x1ca5ba['body'],null))[_0xdbaa('0x25')](respondWithResult(_0x3625ed,null))[_0xdbaa('0x47')](handleError(_0x3625ed,null));};exports[_0xdbaa('0x26')]=function(_0x218104,_0x3caa73){return db[_0xdbaa('0x2b')][_0xdbaa('0x46')]({'where':{'id':_0x218104[_0xdbaa('0x4a')]['id']}})[_0xdbaa('0x25')](handleEntityNotFound(_0x3caa73,null))[_0xdbaa('0x25')](removeEntity(_0x3caa73,null))[_0xdbaa('0x47')](handleError(_0x3caa73,null));};exports['describe']=function(_0x357813,_0x1ebef5){return db[_0xdbaa('0x2b')][_0xdbaa('0x4b')]()[_0xdbaa('0x25')](respondWithResult(_0x1ebef5,null))[_0xdbaa('0x47')](handleError(_0x1ebef5,null));};
\ No newline at end of file
+var _0x6035=['status','json','offset','undefined','limit','count','set','Content-Range','reject','save','update','then','destroy','stack','name','index','OpenchannelQueueReport','type','key','model','query','keys','intersection','attributes','fields','length','nolimit','sort','filters','filter','where','merge','map','VIRTUAL','options','show','params','includeAll','include','find','create','body','catch','describe','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','sox','to-csv','ejs','lodash','squel','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../config/license/hardware','../../config/logger','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','end'];(function(_0x1f857f,_0xbd6eb2){var _0x268793=function(_0x40ce1b){while(--_0x40ce1b){_0x1f857f['push'](_0x1f857f['shift']());}};_0x268793(++_0xbd6eb2);}(_0x6035,0xc0));var _0x5603=function(_0x1a3634,_0x3a5fe7){_0x1a3634=_0x1a3634-0x0;var _0x2338c7=_0x6035[_0x1a3634];return _0x2338c7;};'use strict';var emlformat=require(_0x5603('0x0'));var rimraf=require(_0x5603('0x1'));var zipdir=require(_0x5603('0x2'));var jsonpatch=require(_0x5603('0x3'));var rp=require(_0x5603('0x4'));var moment=require(_0x5603('0x5'));var BPromise=require(_0x5603('0x6'));var Mustache=require(_0x5603('0x7'));var util=require(_0x5603('0x8'));var path=require('path');var sox=require(_0x5603('0x9'));var csv=require(_0x5603('0xa'));var ejs=require(_0x5603('0xb'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x5603('0xc'));var squel=require(_0x5603('0xd'));var crypto=require(_0x5603('0xe'));var jsforce=require(_0x5603('0xf'));var deskjs=require(_0x5603('0x10'));var toCsv=require('to-csv');var querystring=require(_0x5603('0x11'));var Papa=require(_0x5603('0x12'));var Redis=require(_0x5603('0x13'));var authService=require(_0x5603('0x14'));var qs=require(_0x5603('0x15'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x5603('0x16'));var logger=require(_0x5603('0x17'))('api');var utils=require(_0x5603('0x18'));var config=require(_0x5603('0x19'));var licenseUtil=require(_0x5603('0x1a'));var db=require(_0x5603('0x1b'))['db'];function respondWithStatusCode(_0x387ca9,_0x52500d){_0x52500d=_0x52500d||0xcc;return function(_0x59dbca){if(_0x59dbca){return _0x387ca9[_0x5603('0x1c')](_0x52500d);}return _0x387ca9['status'](_0x52500d)[_0x5603('0x1d')]();};}function respondWithResult(_0x518412,_0x2094de){_0x2094de=_0x2094de||0xc8;return function(_0x2f38f2){if(_0x2f38f2){return _0x518412[_0x5603('0x1e')](_0x2094de)[_0x5603('0x1f')](_0x2f38f2);}};}function respondWithFilteredResult(_0x28b5eb,_0x1eb5ea){return function(_0x2dfca8){if(_0x2dfca8){var _0x2d8dd8=typeof _0x1eb5ea[_0x5603('0x20')]===_0x5603('0x21')&&typeof _0x1eb5ea[_0x5603('0x22')]===_0x5603('0x21');var _0x3a9212=_0x2dfca8[_0x5603('0x23')];var _0x38bf3a=_0x2d8dd8?0x0:_0x1eb5ea['offset'];var _0x4575dc=_0x2d8dd8?_0x2dfca8[_0x5603('0x23')]:_0x1eb5ea[_0x5603('0x20')]+_0x1eb5ea[_0x5603('0x22')];var _0x2df97b;if(_0x4575dc>=_0x3a9212){_0x4575dc=_0x3a9212;_0x2df97b=0xc8;}else{_0x2df97b=0xce;}_0x28b5eb['status'](_0x2df97b);return _0x28b5eb[_0x5603('0x24')](_0x5603('0x25'),_0x38bf3a+'-'+_0x4575dc+'/'+_0x3a9212)[_0x5603('0x1f')](_0x2dfca8);}return null;};}function patchUpdates(_0x23eb5d){return function(_0x467390){try{jsonpatch['apply'](_0x467390,_0x23eb5d,!![]);}catch(_0x53fa5e){return BPromise[_0x5603('0x26')](_0x53fa5e);}return _0x467390[_0x5603('0x27')]();};}function saveUpdates(_0x9456db,_0x2dea2e){return function(_0x18ace9){if(_0x18ace9){return _0x18ace9[_0x5603('0x28')](_0x9456db)[_0x5603('0x29')](function(_0x400df1){return _0x400df1;});}return null;};}function removeEntity(_0x4fc2ef,_0x583b70){return function(_0x16d007){if(_0x16d007){return _0x16d007[_0x5603('0x2a')]()['then'](function(){_0x4fc2ef['status'](0xcc)['end']();});}};}function handleEntityNotFound(_0x26a530,_0x3ecb6e){return function(_0x116595){if(!_0x116595){_0x26a530[_0x5603('0x1c')](0x194);}return _0x116595;};}function handleError(_0x4436f4,_0x3428b6){_0x3428b6=_0x3428b6||0x1f4;return function(_0x500820){logger['error'](_0x500820[_0x5603('0x2b')]);if(_0x500820[_0x5603('0x2c')]){delete _0x500820['name'];}_0x4436f4['status'](_0x3428b6)['send'](_0x500820);};}exports[_0x5603('0x2d')]=function(_0x2e5c9f,_0x5d0299){var _0x3cf4d3={},_0x39b8fa={},_0x3c4241={'count':0x0,'rows':[]};var _0xc9f306=_['map'](db[_0x5603('0x2e')]['rawAttributes'],function(_0x2a97b8){return{'name':_0x2a97b8['fieldName'],'type':_0x2a97b8[_0x5603('0x2f')][_0x5603('0x30')]};});_0x39b8fa[_0x5603('0x31')]=_['map'](_0xc9f306,_0x5603('0x2c'));_0x39b8fa[_0x5603('0x32')]=_[_0x5603('0x33')](_0x2e5c9f[_0x5603('0x32')]);_0x39b8fa['filters']=_[_0x5603('0x34')](_0x39b8fa[_0x5603('0x31')],_0x39b8fa[_0x5603('0x32')]);_0x3cf4d3[_0x5603('0x35')]=_[_0x5603('0x34')](_0x39b8fa[_0x5603('0x31')],qs[_0x5603('0x36')](_0x2e5c9f[_0x5603('0x32')][_0x5603('0x36')]));_0x3cf4d3[_0x5603('0x35')]=_0x3cf4d3['attributes'][_0x5603('0x37')]?_0x3cf4d3[_0x5603('0x35')]:_0x39b8fa[_0x5603('0x31')];if(!_0x2e5c9f[_0x5603('0x32')]['hasOwnProperty'](_0x5603('0x38'))){_0x3cf4d3[_0x5603('0x22')]=qs['limit'](_0x2e5c9f['query'][_0x5603('0x22')]);_0x3cf4d3[_0x5603('0x20')]=qs[_0x5603('0x20')](_0x2e5c9f[_0x5603('0x32')][_0x5603('0x20')]);}_0x3cf4d3['order']=qs[_0x5603('0x39')](_0x2e5c9f[_0x5603('0x32')][_0x5603('0x39')]);_0x3cf4d3['where']=qs[_0x5603('0x3a')](_['pick'](_0x2e5c9f['query'],_0x39b8fa[_0x5603('0x3a')]),_0xc9f306);if(_0x2e5c9f[_0x5603('0x32')][_0x5603('0x3b')]){_0x3cf4d3[_0x5603('0x3c')]=_[_0x5603('0x3d')](_0x3cf4d3[_0x5603('0x3c')],{'$or':_[_0x5603('0x3e')](_0xc9f306,function(_0xffdd4a){if(_0xffdd4a[_0x5603('0x2f')]!==_0x5603('0x3f')){var _0x538650={};_0x538650[_0xffdd4a[_0x5603('0x2c')]]={'$like':'%'+_0x2e5c9f[_0x5603('0x32')]['filter']+'%'};return _0x538650;}})});}_0x3cf4d3=_[_0x5603('0x3d')]({},_0x3cf4d3,_0x2e5c9f[_0x5603('0x40')]);var _0x378f68={'where':_0x3cf4d3[_0x5603('0x3c')]};return db[_0x5603('0x2e')][_0x5603('0x23')](_0x378f68)[_0x5603('0x29')](function(_0x51d079){_0x3c4241[_0x5603('0x23')]=_0x51d079;if(_0x2e5c9f[_0x5603('0x32')]['includeAll']){_0x3cf4d3['include']=[{'all':!![]}];}return db[_0x5603('0x2e')]['findAll'](_0x3cf4d3);})['then'](function(_0x4000aa){_0x3c4241['rows']=_0x4000aa;return _0x3c4241;})[_0x5603('0x29')](respondWithFilteredResult(_0x5d0299,_0x3cf4d3))['catch'](handleError(_0x5d0299,null));};exports[_0x5603('0x41')]=function(_0x1ba82f,_0x471933){var _0x20dbf9={'raw':!![],'where':{'id':_0x1ba82f[_0x5603('0x42')]['id']}},_0x4c2fe4={};_0x4c2fe4[_0x5603('0x31')]=_[_0x5603('0x33')](db[_0x5603('0x2e')]['rawAttributes']);_0x4c2fe4[_0x5603('0x32')]=_[_0x5603('0x33')](_0x1ba82f[_0x5603('0x32')]);_0x4c2fe4[_0x5603('0x3a')]=_[_0x5603('0x34')](_0x4c2fe4[_0x5603('0x31')],_0x4c2fe4[_0x5603('0x32')]);_0x20dbf9[_0x5603('0x35')]=_['intersection'](_0x4c2fe4['model'],qs[_0x5603('0x36')](_0x1ba82f[_0x5603('0x32')][_0x5603('0x36')]));_0x20dbf9[_0x5603('0x35')]=_0x20dbf9['attributes']['length']?_0x20dbf9[_0x5603('0x35')]:_0x4c2fe4[_0x5603('0x31')];if(_0x1ba82f['query'][_0x5603('0x43')]){_0x20dbf9[_0x5603('0x44')]=[{'all':!![]}];}_0x20dbf9=_[_0x5603('0x3d')]({},_0x20dbf9,_0x1ba82f[_0x5603('0x40')]);return db[_0x5603('0x2e')][_0x5603('0x45')](_0x20dbf9)[_0x5603('0x29')](handleEntityNotFound(_0x471933,null))['then'](respondWithResult(_0x471933,null))['catch'](handleError(_0x471933,null));};exports[_0x5603('0x46')]=function(_0x2eadaa,_0x2b261d){return db[_0x5603('0x2e')][_0x5603('0x46')](_0x2eadaa['body'],{})[_0x5603('0x29')](respondWithResult(_0x2b261d,0xc9))['catch'](handleError(_0x2b261d,null));};exports['update']=function(_0x40d0b7,_0x2b5fbf){if(_0x40d0b7[_0x5603('0x47')]['id']){delete _0x40d0b7[_0x5603('0x47')]['id'];}return db[_0x5603('0x2e')][_0x5603('0x45')]({'where':{'id':_0x40d0b7[_0x5603('0x42')]['id']}})[_0x5603('0x29')](handleEntityNotFound(_0x2b5fbf,null))[_0x5603('0x29')](saveUpdates(_0x40d0b7[_0x5603('0x47')],null))[_0x5603('0x29')](respondWithResult(_0x2b5fbf,null))[_0x5603('0x48')](handleError(_0x2b5fbf,null));};exports[_0x5603('0x2a')]=function(_0x33b326,_0x18db7f){return db['OpenchannelQueueReport']['find']({'where':{'id':_0x33b326[_0x5603('0x42')]['id']}})['then'](handleEntityNotFound(_0x18db7f,null))[_0x5603('0x29')](removeEntity(_0x18db7f,null))['catch'](handleError(_0x18db7f,null));};exports['describe']=function(_0x2cf3a7,_0x33f795){return db[_0x5603('0x2e')][_0x5603('0x49')]()[_0x5603('0x29')](respondWithResult(_0x33f795,null))[_0x5603('0x48')](handleError(_0x33f795,null));};
\ No newline at end of file
index 68a6115..7c394bd 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe14b=['bluebird','path','./openchannelQueueReport.attributes','exports','define','OpenchannelQueueReport','report_openchannel_queue','lodash','util','moment'];(function(_0xa9e57c,_0x1e2e24){var _0x133fb4=function(_0x56fc13){while(--_0x56fc13){_0xa9e57c['push'](_0xa9e57c['shift']());}};_0x133fb4(++_0x1e2e24);}(_0xe14b,0x93));var _0xbe14=function(_0x1343ce,_0x8cab8c){_0x1343ce=_0x1343ce-0x0;var _0x2143bb=_0xe14b[_0x1343ce];return _0x2143bb;};'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':[{'name':'uniqueid','fields':['uniqueid']}],'timestamps':!![]});};
\ No newline at end of file
+var _0x814b=['../../config/logger','api','moment','bluebird','path','rimraf','../../config/environment','./openchannelQueueReport.attributes','exports','define','OpenchannelQueueReport','uniqueid','lodash','util'];(function(_0x349148,_0x31eabb){var _0x2f2b0f=function(_0x44726e){while(--_0x44726e){_0x349148['push'](_0x349148['shift']());}};_0x2f2b0f(++_0x31eabb);}(_0x814b,0x1a2));var _0xb814=function(_0x1ed034,_0x5d495d){_0x1ed034=_0x1ed034-0x0;var _0x4a82b7=_0x814b[_0x1ed034];return _0x4a82b7;};'use strict';var _=require(_0xb814('0x0'));var util=require(_0xb814('0x1'));var logger=require(_0xb814('0x2'))(_0xb814('0x3'));var moment=require(_0xb814('0x4'));var BPromise=require(_0xb814('0x5'));var rp=require('request-promise');var fs=require('fs');var path=require(_0xb814('0x6'));var rimraf=require(_0xb814('0x7'));var config=require(_0xb814('0x8'));var attributes=require(_0xb814('0x9'));module[_0xb814('0xa')]=function(_0x322a70,_0x53e507){return _0x322a70[_0xb814('0xb')](_0xb814('0xc'),attributes,{'tableName':'report_openchannel_queue','paranoid':![],'indexes':[{'name':_0xb814('0xd'),'fields':[_0xb814('0xd')]}],'timestamps':!![]});};
\ No newline at end of file
index 38b44cb..0a8d59c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2b65=['jayson/promise','client','http','then','info','request\x20sent','debug','OpenchannelQueueReport,\x20%s,\x20%s,\x20%s','error','code','OpenchannelQueueReport,\x20%s,\x20%s','message','result','catch','CreateOpenchannelQueueReport','OpenchannelQueueReport','options','raw','stringify','UpdateOpenchannelQueueReport','update','body','where','attributes','limit','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','rpc','../../config/environment'];(function(_0x2feb53,_0x264ef7){var _0x5700ee=function(_0x700c98){while(--_0x700c98){_0x2feb53['push'](_0x2feb53['shift']());}};_0x5700ee(++_0x264ef7);}(_0x2b65,0x131));var _0x52b6=function(_0x4801bd,_0x368071){_0x4801bd=_0x4801bd-0x0;var _0x3cf6fc=_0x2b65[_0x4801bd];return _0x3cf6fc;};'use strict';var _=require(_0x52b6('0x0'));var util=require(_0x52b6('0x1'));var moment=require(_0x52b6('0x2'));var BPromise=require(_0x52b6('0x3'));var rs=require(_0x52b6('0x4'));var fs=require('fs');var Redis=require(_0x52b6('0x5'));var db=require(_0x52b6('0x6'))['db'];var utils=require(_0x52b6('0x7'));var logger=require('../../config/logger')(_0x52b6('0x8'));var config=require(_0x52b6('0x9'));var jayson=require(_0x52b6('0xa'));var client=jayson[_0x52b6('0xb')][_0x52b6('0xc')]({'port':0x232a});function respondWithRpcPromise(_0x2d451f,_0x70579,_0x1af78f){return new BPromise(function(_0x432726,_0x27c5b9){return client['request'](_0x2d451f,_0x1af78f)[_0x52b6('0xd')](function(_0x1c2cb5){logger[_0x52b6('0xe')]('OpenchannelQueueReport,\x20%s,\x20%s',_0x70579,_0x52b6('0xf'));logger[_0x52b6('0x10')](_0x52b6('0x11'),_0x70579,_0x52b6('0xf'),JSON['stringify'](_0x1c2cb5));if(_0x1c2cb5[_0x52b6('0x12')]){if(_0x1c2cb5[_0x52b6('0x12')][_0x52b6('0x13')]===0x1f4){logger['error'](_0x52b6('0x14'),_0x70579,_0x1c2cb5[_0x52b6('0x12')]['message']);return _0x27c5b9(_0x1c2cb5[_0x52b6('0x12')]['message']);}logger['error'](_0x52b6('0x14'),_0x70579,_0x1c2cb5[_0x52b6('0x12')][_0x52b6('0x15')]);return _0x432726(_0x1c2cb5[_0x52b6('0x12')][_0x52b6('0x15')]);}else{logger[_0x52b6('0xe')](_0x52b6('0x14'),_0x70579,_0x52b6('0xf'));_0x432726(_0x1c2cb5[_0x52b6('0x16')][_0x52b6('0x15')]);}})[_0x52b6('0x17')](function(_0x307594){logger[_0x52b6('0x12')]('OpenchannelQueueReport,\x20%s,\x20%s',_0x70579,_0x307594);_0x27c5b9(_0x307594);});});}exports[_0x52b6('0x18')]=function(_0x2fa3ed){var _0x9bab0a=this;return new Promise(function(_0x47d203,_0x36d376){return db[_0x52b6('0x19')]['create'](_0x2fa3ed['body'],{'raw':_0x2fa3ed[_0x52b6('0x1a')]?_0x2fa3ed['options'][_0x52b6('0x1b')]===undefined?!![]:![]:!![]})['then'](function(_0x2e472f){logger[_0x52b6('0xe')](_0x52b6('0x18'),_0x2fa3ed);logger[_0x52b6('0x10')]('CreateOpenchannelQueueReport',_0x2fa3ed,JSON[_0x52b6('0x1c')](_0x2e472f));_0x47d203(_0x2e472f);})[_0x52b6('0x17')](function(_0x1246db){logger[_0x52b6('0x12')](_0x52b6('0x18'),_0x1246db[_0x52b6('0x15')],_0x2fa3ed);_0x36d376(_0x9bab0a[_0x52b6('0x12')](0x1f4,_0x1246db[_0x52b6('0x15')]));});});};exports[_0x52b6('0x1d')]=function(_0x55aa4c){var _0x2a97c0=this;return new Promise(function(_0x2ff6f4,_0x3a2fb0){return db[_0x52b6('0x19')][_0x52b6('0x1e')](_0x55aa4c[_0x52b6('0x1f')],{'raw':_0x55aa4c[_0x52b6('0x1a')]?_0x55aa4c[_0x52b6('0x1a')][_0x52b6('0x1b')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x55aa4c[_0x52b6('0x1a')]?_0x55aa4c[_0x52b6('0x1a')][_0x52b6('0x20')]||null:null,'attributes':_0x55aa4c[_0x52b6('0x1a')]?_0x55aa4c[_0x52b6('0x1a')][_0x52b6('0x21')]||null:null,'limit':_0x55aa4c[_0x52b6('0x1a')]?_0x55aa4c['options'][_0x52b6('0x22')]||null:null})[_0x52b6('0xd')](function(_0x1716b6){logger[_0x52b6('0xe')](_0x52b6('0x1d'),_0x55aa4c);logger[_0x52b6('0x10')](_0x52b6('0x1d'),_0x55aa4c,JSON['stringify'](_0x1716b6));_0x2ff6f4(_0x1716b6);})[_0x52b6('0x17')](function(_0x42ac9b){logger['error'](_0x52b6('0x1d'),_0x42ac9b[_0x52b6('0x15')],_0x55aa4c);_0x3a2fb0(_0x2a97c0[_0x52b6('0x12')](0x1f4,_0x42ac9b[_0x52b6('0x15')]));});});};
\ No newline at end of file
+var _0xeb3b=['OpenchannelQueueReport,\x20%s,\x20%s,\x20%s','error','code','message','result','catch','CreateOpenchannelQueueReport','OpenchannelQueueReport','create','body','raw','debug','stringify','UpdateOpenchannelQueueReport','update','options','where','attributes','lodash','util','moment','bluebird','randomstring','../../config/utils','rpc','jayson/promise','client','http','request','then','info','OpenchannelQueueReport,\x20%s,\x20%s','request\x20sent'];(function(_0x321bb2,_0x202794){var _0x9c12ed=function(_0x263dd3){while(--_0x263dd3){_0x321bb2['push'](_0x321bb2['shift']());}};_0x9c12ed(++_0x202794);}(_0xeb3b,0x19e));var _0xbeb3=function(_0x20e5c3,_0x41470c){_0x20e5c3=_0x20e5c3-0x0;var _0x401520=_0xeb3b[_0x20e5c3];return _0x401520;};'use strict';var _=require(_0xbeb3('0x0'));var util=require(_0xbeb3('0x1'));var moment=require(_0xbeb3('0x2'));var BPromise=require(_0xbeb3('0x3'));var rs=require(_0xbeb3('0x4'));var fs=require('fs');var Redis=require('ioredis');var db=require('../../mysqldb')['db'];var utils=require(_0xbeb3('0x5'));var logger=require('../../config/logger')(_0xbeb3('0x6'));var config=require('../../config/environment');var jayson=require(_0xbeb3('0x7'));var client=jayson[_0xbeb3('0x8')][_0xbeb3('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x294cc9,_0x406927,_0x143255){return new BPromise(function(_0x5a6a06,_0x241dbb){return client[_0xbeb3('0xa')](_0x294cc9,_0x143255)[_0xbeb3('0xb')](function(_0x3b61ac){logger[_0xbeb3('0xc')](_0xbeb3('0xd'),_0x406927,_0xbeb3('0xe'));logger['debug'](_0xbeb3('0xf'),_0x406927,_0xbeb3('0xe'),JSON['stringify'](_0x3b61ac));if(_0x3b61ac[_0xbeb3('0x10')]){if(_0x3b61ac[_0xbeb3('0x10')][_0xbeb3('0x11')]===0x1f4){logger[_0xbeb3('0x10')](_0xbeb3('0xd'),_0x406927,_0x3b61ac[_0xbeb3('0x10')]['message']);return _0x241dbb(_0x3b61ac['error'][_0xbeb3('0x12')]);}logger[_0xbeb3('0x10')]('OpenchannelQueueReport,\x20%s,\x20%s',_0x406927,_0x3b61ac['error'][_0xbeb3('0x12')]);return _0x5a6a06(_0x3b61ac[_0xbeb3('0x10')][_0xbeb3('0x12')]);}else{logger[_0xbeb3('0xc')](_0xbeb3('0xd'),_0x406927,'request\x20sent');_0x5a6a06(_0x3b61ac[_0xbeb3('0x13')]['message']);}})[_0xbeb3('0x14')](function(_0x4e7d99){logger['error']('OpenchannelQueueReport,\x20%s,\x20%s',_0x406927,_0x4e7d99);_0x241dbb(_0x4e7d99);});});}exports[_0xbeb3('0x15')]=function(_0x44a4bb){var _0x32275b=this;return new Promise(function(_0x10b15d,_0x5d0689){return db[_0xbeb3('0x16')][_0xbeb3('0x17')](_0x44a4bb[_0xbeb3('0x18')],{'raw':_0x44a4bb['options']?_0x44a4bb['options'][_0xbeb3('0x19')]===undefined?!![]:![]:!![]})['then'](function(_0x1d917b){logger['info']('CreateOpenchannelQueueReport',_0x44a4bb);logger[_0xbeb3('0x1a')](_0xbeb3('0x15'),_0x44a4bb,JSON[_0xbeb3('0x1b')](_0x1d917b));_0x10b15d(_0x1d917b);})['catch'](function(_0x301899){logger[_0xbeb3('0x10')]('CreateOpenchannelQueueReport',_0x301899[_0xbeb3('0x12')],_0x44a4bb);_0x5d0689(_0x32275b[_0xbeb3('0x10')](0x1f4,_0x301899['message']));});});};exports[_0xbeb3('0x1c')]=function(_0x278fe4){var _0x16b079=this;return new Promise(function(_0x42c6c3,_0x2bc188){return db[_0xbeb3('0x16')][_0xbeb3('0x1d')](_0x278fe4[_0xbeb3('0x18')],{'raw':_0x278fe4[_0xbeb3('0x1e')]?_0x278fe4['options']['raw']===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x278fe4[_0xbeb3('0x1e')]?_0x278fe4['options'][_0xbeb3('0x1f')]||null:null,'attributes':_0x278fe4[_0xbeb3('0x1e')]?_0x278fe4[_0xbeb3('0x1e')][_0xbeb3('0x20')]||null:null,'limit':_0x278fe4['options']?_0x278fe4[_0xbeb3('0x1e')]['limit']||null:null})[_0xbeb3('0xb')](function(_0xab301c){logger['info']('UpdateOpenchannelQueueReport',_0x278fe4);logger[_0xbeb3('0x1a')]('UpdateOpenchannelQueueReport',_0x278fe4,JSON['stringify'](_0xab301c));_0x42c6c3(_0xab301c);})['catch'](function(_0x5bfef7){logger[_0xbeb3('0x10')]('UpdateOpenchannelQueueReport',_0x5bfef7[_0xbeb3('0x12')],_0x278fe4);_0x2bc188(_0x16b079[_0xbeb3('0x10')](0x1f4,_0x5bfef7[_0xbeb3('0x12')]));});});};
\ No newline at end of file
index 187263f..99d1989 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4a57=['../../components/interaction/service','./openchannelTransferReport.controller','get','isAuthenticated','index','/describe','describe','/:id','show','post','create','delete','destroy','exports','multer','util','path','express','Router','fs-extra','../../components/auth/service'];(function(_0x59ee6f,_0x450239){var _0x4c0979=function(_0x565e92){while(--_0x565e92){_0x59ee6f['push'](_0x59ee6f['shift']());}};_0x4c0979(++_0x450239);}(_0x4a57,0x1dc));var _0x74a5=function(_0x5ba845,_0x33d65f){_0x5ba845=_0x5ba845-0x0;var _0x23798c=_0x4a57[_0x5ba845];return _0x23798c;};'use strict';var multer=require(_0x74a5('0x0'));var util=require(_0x74a5('0x1'));var path=require(_0x74a5('0x2'));var timeout=require('connect-timeout');var express=require(_0x74a5('0x3'));var router=express[_0x74a5('0x4')]();var fs_extra=require(_0x74a5('0x5'));var auth=require(_0x74a5('0x6'));var interaction=require(_0x74a5('0x7'));var config=require('../../config/environment');var controller=require(_0x74a5('0x8'));router[_0x74a5('0x9')]('/',auth[_0x74a5('0xa')](),controller[_0x74a5('0xb')]);router[_0x74a5('0x9')](_0x74a5('0xc'),auth[_0x74a5('0xa')](),controller[_0x74a5('0xd')]);router[_0x74a5('0x9')](_0x74a5('0xe'),auth[_0x74a5('0xa')](),controller[_0x74a5('0xf')]);router[_0x74a5('0x10')]('/',auth[_0x74a5('0xa')](),controller[_0x74a5('0x11')]);router['put'](_0x74a5('0xe'),auth[_0x74a5('0xa')](),controller['update']);router[_0x74a5('0x12')](_0x74a5('0xe'),auth['isAuthenticated'](),controller[_0x74a5('0x13')]);module[_0x74a5('0x14')]=router;
\ No newline at end of file
+var _0x8fd1=['get','isAuthenticated','index','/describe','describe','post','create','put','/:id','update','delete','destroy','exports','multer','path','express','Router','fs-extra','../../components/auth/service'];(function(_0x2cfb58,_0x3d9412){var _0xd99951=function(_0x329afa){while(--_0x329afa){_0x2cfb58['push'](_0x2cfb58['shift']());}};_0xd99951(++_0x3d9412);}(_0x8fd1,0x6c));var _0x18fd=function(_0x54a9e3,_0x4a3813){_0x54a9e3=_0x54a9e3-0x0;var _0x247cce=_0x8fd1[_0x54a9e3];return _0x247cce;};'use strict';var multer=require(_0x18fd('0x0'));var util=require('util');var path=require(_0x18fd('0x1'));var timeout=require('connect-timeout');var express=require(_0x18fd('0x2'));var router=express[_0x18fd('0x3')]();var fs_extra=require(_0x18fd('0x4'));var auth=require(_0x18fd('0x5'));var interaction=require('../../components/interaction/service');var config=require('../../config/environment');var controller=require('./openchannelTransferReport.controller');router[_0x18fd('0x6')]('/',auth[_0x18fd('0x7')](),controller[_0x18fd('0x8')]);router[_0x18fd('0x6')](_0x18fd('0x9'),auth[_0x18fd('0x7')](),controller[_0x18fd('0xa')]);router[_0x18fd('0x6')]('/:id',auth[_0x18fd('0x7')](),controller['show']);router[_0x18fd('0xb')]('/',auth[_0x18fd('0x7')](),controller[_0x18fd('0xc')]);router[_0x18fd('0xd')](_0x18fd('0xe'),auth[_0x18fd('0x7')](),controller[_0x18fd('0xf')]);router[_0x18fd('0x10')](_0x18fd('0xe'),auth[_0x18fd('0x7')](),controller[_0x18fd('0x11')]);module[_0x18fd('0x12')]=router;
\ No newline at end of file
index a850259..f2896ff 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x70e0=['NOW','moment','sequelize','exports','account','agent','queue'];(function(_0x12b96d,_0x24256d){var _0x15a0c9=function(_0x3e166c){while(--_0x3e166c){_0x12b96d['push'](_0x12b96d['shift']());}};_0x15a0c9(++_0x24256d);}(_0x70e0,0x17b));var _0x070e=function(_0xd9f2e1,_0x2fd21d){_0xd9f2e1=_0xd9f2e1-0x0;var _0x41d938=_0x70e0[_0xd9f2e1];return _0x41d938;};'use strict';var moment=require(_0x070e('0x0'));var Sequelize=require(_0x070e('0x1'));module[_0x070e('0x2')]={'uniqueid':{'type':Sequelize['STRING'],'allowNull':![]},'type':{'type':Sequelize['ENUM'](_0x070e('0x3'),_0x070e('0x4'),_0x070e('0x5')),'allowNull':![],'defaultValue':_0x070e('0x5')},'transferredAt':{'type':Sequelize['DATE'],'allowNull':![],'defaultValue':Sequelize[_0x070e('0x6')]}};
\ No newline at end of file
+var _0x34e8=['queue','DATE','NOW','moment','sequelize','exports','STRING','account','agent'];(function(_0x258fb0,_0x5362dc){var _0x4d1afe=function(_0x1c8f24){while(--_0x1c8f24){_0x258fb0['push'](_0x258fb0['shift']());}};_0x4d1afe(++_0x5362dc);}(_0x34e8,0x12c));var _0x834e=function(_0x4d81c5,_0x2da663){_0x4d81c5=_0x4d81c5-0x0;var _0x349041=_0x34e8[_0x4d81c5];return _0x349041;};'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 0c15f2b..d533130 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xda45=['create','body','describe','eml-format','rimraf','fast-json-patch','request-promise','moment','bluebird','mustache','path','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','desk.js','querystring','ioredis','../../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','set','Content-Range','apply','reject','save','update','then','destroy','error','stack','name','send','map','OpenchannelTransferReport','rawAttributes','fieldName','model','query','keys','filters','attributes','intersection','fields','nolimit','order','sort','where','pick','filter','merge','type','includeAll','include','findAll','catch','show','params','length','options','find'];(function(_0x5c6994,_0x19ad9a){var _0x1d5c84=function(_0x4a385a){while(--_0x4a385a){_0x5c6994['push'](_0x5c6994['shift']());}};_0x1d5c84(++_0x19ad9a);}(_0xda45,0x1d7));var _0x5da4=function(_0x3f9699,_0x183326){_0x3f9699=_0x3f9699-0x0;var _0x394c30=_0xda45[_0x3f9699];return _0x394c30;};'use strict';var emlformat=require(_0x5da4('0x0'));var rimraf=require(_0x5da4('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0x5da4('0x2'));var rp=require(_0x5da4('0x3'));var moment=require(_0x5da4('0x4'));var BPromise=require(_0x5da4('0x5'));var Mustache=require(_0x5da4('0x6'));var util=require('util');var path=require(_0x5da4('0x7'));var sox=require(_0x5da4('0x8'));var csv=require(_0x5da4('0x9'));var ejs=require(_0x5da4('0xa'));var fs=require('fs');var fs_extra=require(_0x5da4('0xb'));var _=require(_0x5da4('0xc'));var squel=require(_0x5da4('0xd'));var crypto=require(_0x5da4('0xe'));var jsforce=require('jsforce');var deskjs=require(_0x5da4('0xf'));var toCsv=require(_0x5da4('0x9'));var querystring=require(_0x5da4('0x10'));var Papa=require('papaparse');var Redis=require(_0x5da4('0x11'));var authService=require('../../components/auth/service');var qs=require(_0x5da4('0x12'));var as=require(_0x5da4('0x13'));var hardwareService=require(_0x5da4('0x14'));var logger=require(_0x5da4('0x15'))(_0x5da4('0x16'));var utils=require(_0x5da4('0x17'));var config=require(_0x5da4('0x18'));var licenseUtil=require(_0x5da4('0x19'));var db=require(_0x5da4('0x1a'))['db'];function respondWithStatusCode(_0x4e267b,_0x366344){_0x366344=_0x366344||0xcc;return function(_0x275f7){if(_0x275f7){return _0x4e267b[_0x5da4('0x1b')](_0x366344);}return _0x4e267b[_0x5da4('0x1c')](_0x366344)[_0x5da4('0x1d')]();};}function respondWithResult(_0x1dbf27,_0x4f4979){_0x4f4979=_0x4f4979||0xc8;return function(_0x16de2e){if(_0x16de2e){return _0x1dbf27['status'](_0x4f4979)[_0x5da4('0x1e')](_0x16de2e);}};}function respondWithFilteredResult(_0x48c982,_0x31f550){return function(_0x4377b1){if(_0x4377b1){var _0x910ff4=typeof _0x31f550[_0x5da4('0x1f')]===_0x5da4('0x20')&&typeof _0x31f550[_0x5da4('0x21')]===_0x5da4('0x20');var _0x57655a=_0x4377b1['count'];var _0x409421=_0x910ff4?0x0:_0x31f550[_0x5da4('0x1f')];var _0x72cd44=_0x910ff4?_0x4377b1[_0x5da4('0x22')]:_0x31f550[_0x5da4('0x1f')]+_0x31f550[_0x5da4('0x21')];var _0xbeca3d;if(_0x72cd44>=_0x57655a){_0x72cd44=_0x57655a;_0xbeca3d=0xc8;}else{_0xbeca3d=0xce;}_0x48c982['status'](_0xbeca3d);return _0x48c982[_0x5da4('0x23')](_0x5da4('0x24'),_0x409421+'-'+_0x72cd44+'/'+_0x57655a)[_0x5da4('0x1e')](_0x4377b1);}return null;};}function patchUpdates(_0x2cc00f){return function(_0x1a8561){try{jsonpatch[_0x5da4('0x25')](_0x1a8561,_0x2cc00f,!![]);}catch(_0x48b0da){return BPromise[_0x5da4('0x26')](_0x48b0da);}return _0x1a8561[_0x5da4('0x27')]();};}function saveUpdates(_0x41f10b,_0x818215){return function(_0x359ad9){if(_0x359ad9){return _0x359ad9[_0x5da4('0x28')](_0x41f10b)[_0x5da4('0x29')](function(_0xfec707){return _0xfec707;});}return null;};}function removeEntity(_0x4da698,_0x2a3f5a){return function(_0xb60b59){if(_0xb60b59){return _0xb60b59[_0x5da4('0x2a')]()[_0x5da4('0x29')](function(){_0x4da698[_0x5da4('0x1c')](0xcc)[_0x5da4('0x1d')]();});}};}function handleEntityNotFound(_0x1ce512,_0xf1133a){return function(_0x3b91fb){if(!_0x3b91fb){_0x1ce512[_0x5da4('0x1b')](0x194);}return _0x3b91fb;};}function handleError(_0x2fc019,_0x187cd9){_0x187cd9=_0x187cd9||0x1f4;return function(_0x883395){logger[_0x5da4('0x2b')](_0x883395[_0x5da4('0x2c')]);if(_0x883395[_0x5da4('0x2d')]){delete _0x883395[_0x5da4('0x2d')];}_0x2fc019[_0x5da4('0x1c')](_0x187cd9)[_0x5da4('0x2e')](_0x883395);};}exports['index']=function(_0x5b7108,_0xe14cc){var _0xc1f2f8={},_0x6dae9c={},_0x5d7c54={'count':0x0,'rows':[]};var _0x176d2c=_[_0x5da4('0x2f')](db[_0x5da4('0x30')][_0x5da4('0x31')],function(_0x24abc1){return{'name':_0x24abc1[_0x5da4('0x32')],'type':_0x24abc1['type']['key']};});_0x6dae9c[_0x5da4('0x33')]=_[_0x5da4('0x2f')](_0x176d2c,_0x5da4('0x2d'));_0x6dae9c[_0x5da4('0x34')]=_[_0x5da4('0x35')](_0x5b7108[_0x5da4('0x34')]);_0x6dae9c[_0x5da4('0x36')]=_['intersection'](_0x6dae9c[_0x5da4('0x33')],_0x6dae9c['query']);_0xc1f2f8[_0x5da4('0x37')]=_[_0x5da4('0x38')](_0x6dae9c[_0x5da4('0x33')],qs['fields'](_0x5b7108[_0x5da4('0x34')][_0x5da4('0x39')]));_0xc1f2f8[_0x5da4('0x37')]=_0xc1f2f8[_0x5da4('0x37')]['length']?_0xc1f2f8[_0x5da4('0x37')]:_0x6dae9c['model'];if(!_0x5b7108[_0x5da4('0x34')]['hasOwnProperty'](_0x5da4('0x3a'))){_0xc1f2f8[_0x5da4('0x21')]=qs[_0x5da4('0x21')](_0x5b7108[_0x5da4('0x34')][_0x5da4('0x21')]);_0xc1f2f8[_0x5da4('0x1f')]=qs[_0x5da4('0x1f')](_0x5b7108[_0x5da4('0x34')][_0x5da4('0x1f')]);}_0xc1f2f8[_0x5da4('0x3b')]=qs[_0x5da4('0x3c')](_0x5b7108[_0x5da4('0x34')]['sort']);_0xc1f2f8[_0x5da4('0x3d')]=qs[_0x5da4('0x36')](_[_0x5da4('0x3e')](_0x5b7108[_0x5da4('0x34')],_0x6dae9c[_0x5da4('0x36')]),_0x176d2c);if(_0x5b7108[_0x5da4('0x34')][_0x5da4('0x3f')]){_0xc1f2f8[_0x5da4('0x3d')]=_[_0x5da4('0x40')](_0xc1f2f8[_0x5da4('0x3d')],{'$or':_[_0x5da4('0x2f')](_0x176d2c,function(_0x37fae1){if(_0x37fae1[_0x5da4('0x41')]!=='VIRTUAL'){var _0x1eec74={};_0x1eec74[_0x37fae1['name']]={'$like':'%'+_0x5b7108['query'][_0x5da4('0x3f')]+'%'};return _0x1eec74;}})});}_0xc1f2f8=_[_0x5da4('0x40')]({},_0xc1f2f8,_0x5b7108['options']);var _0x34d9ec={'where':_0xc1f2f8[_0x5da4('0x3d')]};return db[_0x5da4('0x30')][_0x5da4('0x22')](_0x34d9ec)[_0x5da4('0x29')](function(_0x2ab8f1){_0x5d7c54['count']=_0x2ab8f1;if(_0x5b7108[_0x5da4('0x34')][_0x5da4('0x42')]){_0xc1f2f8[_0x5da4('0x43')]=[{'all':!![]}];}return db[_0x5da4('0x30')][_0x5da4('0x44')](_0xc1f2f8);})[_0x5da4('0x29')](function(_0x12c45c){_0x5d7c54['rows']=_0x12c45c;return _0x5d7c54;})[_0x5da4('0x29')](respondWithFilteredResult(_0xe14cc,_0xc1f2f8))[_0x5da4('0x45')](handleError(_0xe14cc,null));};exports[_0x5da4('0x46')]=function(_0xa371f2,_0x381830){var _0x38faad={'raw':!![],'where':{'id':_0xa371f2[_0x5da4('0x47')]['id']}},_0x2e9582={};_0x2e9582[_0x5da4('0x33')]=_[_0x5da4('0x35')](db[_0x5da4('0x30')][_0x5da4('0x31')]);_0x2e9582[_0x5da4('0x34')]=_[_0x5da4('0x35')](_0xa371f2['query']);_0x2e9582[_0x5da4('0x36')]=_['intersection'](_0x2e9582[_0x5da4('0x33')],_0x2e9582[_0x5da4('0x34')]);_0x38faad['attributes']=_[_0x5da4('0x38')](_0x2e9582[_0x5da4('0x33')],qs['fields'](_0xa371f2['query'][_0x5da4('0x39')]));_0x38faad['attributes']=_0x38faad[_0x5da4('0x37')][_0x5da4('0x48')]?_0x38faad[_0x5da4('0x37')]:_0x2e9582[_0x5da4('0x33')];if(_0xa371f2[_0x5da4('0x34')][_0x5da4('0x42')]){_0x38faad[_0x5da4('0x43')]=[{'all':!![]}];}_0x38faad=_['merge']({},_0x38faad,_0xa371f2[_0x5da4('0x49')]);return db[_0x5da4('0x30')][_0x5da4('0x4a')](_0x38faad)[_0x5da4('0x29')](handleEntityNotFound(_0x381830,null))[_0x5da4('0x29')](respondWithResult(_0x381830,null))[_0x5da4('0x45')](handleError(_0x381830,null));};exports[_0x5da4('0x4b')]=function(_0x336f61,_0x519218){return db[_0x5da4('0x30')]['create'](_0x336f61[_0x5da4('0x4c')],{})[_0x5da4('0x29')](respondWithResult(_0x519218,0xc9))['catch'](handleError(_0x519218,null));};exports['update']=function(_0x5066e2,_0x7fcf7c){if(_0x5066e2[_0x5da4('0x4c')]['id']){delete _0x5066e2['body']['id'];}return db[_0x5da4('0x30')][_0x5da4('0x4a')]({'where':{'id':_0x5066e2['params']['id']}})['then'](handleEntityNotFound(_0x7fcf7c,null))[_0x5da4('0x29')](saveUpdates(_0x5066e2[_0x5da4('0x4c')],null))[_0x5da4('0x29')](respondWithResult(_0x7fcf7c,null))[_0x5da4('0x45')](handleError(_0x7fcf7c,null));};exports[_0x5da4('0x2a')]=function(_0x57b0db,_0x1db82d){return db[_0x5da4('0x30')][_0x5da4('0x4a')]({'where':{'id':_0x57b0db[_0x5da4('0x47')]['id']}})[_0x5da4('0x29')](handleEntityNotFound(_0x1db82d,null))['then'](removeEntity(_0x1db82d,null))[_0x5da4('0x45')](handleError(_0x1db82d,null));};exports[_0x5da4('0x4d')]=function(_0x46f312,_0x464afc){return db[_0x5da4('0x30')][_0x5da4('0x4d')]()[_0x5da4('0x29')](respondWithResult(_0x464afc,null))[_0x5da4('0x45')](handleError(_0x464afc,null));};
\ No newline at end of file
+var _0xf286=['then','rows','show','intersection','include','options','find','catch','create','body','update','params','describe','eml-format','rimraf','fast-json-patch','request-promise','bluebird','mustache','util','sox','to-csv','ejs','fs-extra','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','../../config/utils','../../config/environment','../../mysqldb','sendStatus','status','end','json','offset','limit','undefined','count','reject','save','destroy','error','name','send','index','map','OpenchannelTransferReport','rawAttributes','fieldName','type','key','model','query','keys','filters','attributes','fields','length','nolimit','order','sort','where','filter','merge','VIRTUAL','includeAll','findAll'];(function(_0x257bf8,_0x3f1866){var _0x22e5ed=function(_0x5cd98e){while(--_0x5cd98e){_0x257bf8['push'](_0x257bf8['shift']());}};_0x22e5ed(++_0x3f1866);}(_0xf286,0xe8));var _0x6f28=function(_0x25662e,_0x4cec68){_0x25662e=_0x25662e-0x0;var _0x59b7bc=_0xf286[_0x25662e];return _0x59b7bc;};'use strict';var emlformat=require(_0x6f28('0x0'));var rimraf=require(_0x6f28('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0x6f28('0x2'));var rp=require(_0x6f28('0x3'));var moment=require('moment');var BPromise=require(_0x6f28('0x4'));var Mustache=require(_0x6f28('0x5'));var util=require(_0x6f28('0x6'));var path=require('path');var sox=require(_0x6f28('0x7'));var csv=require(_0x6f28('0x8'));var ejs=require(_0x6f28('0x9'));var fs=require('fs');var fs_extra=require(_0x6f28('0xa'));var _=require('lodash');var squel=require('squel');var crypto=require('crypto');var jsforce=require(_0x6f28('0xb'));var deskjs=require(_0x6f28('0xc'));var toCsv=require(_0x6f28('0x8'));var querystring=require(_0x6f28('0xd'));var Papa=require(_0x6f28('0xe'));var Redis=require(_0x6f28('0xf'));var authService=require(_0x6f28('0x10'));var qs=require('../../components/parsers/qs');var as=require(_0x6f28('0x11'));var hardwareService=require(_0x6f28('0x12'));var logger=require(_0x6f28('0x13'))('api');var utils=require(_0x6f28('0x14'));var config=require(_0x6f28('0x15'));var licenseUtil=require('../../config/license/util');var db=require(_0x6f28('0x16'))['db'];function respondWithStatusCode(_0x5a93e3,_0x1251c3){_0x1251c3=_0x1251c3||0xcc;return function(_0xdc0802){if(_0xdc0802){return _0x5a93e3[_0x6f28('0x17')](_0x1251c3);}return _0x5a93e3[_0x6f28('0x18')](_0x1251c3)[_0x6f28('0x19')]();};}function respondWithResult(_0x4d06cd,_0x36d42a){_0x36d42a=_0x36d42a||0xc8;return function(_0x2f8522){if(_0x2f8522){return _0x4d06cd[_0x6f28('0x18')](_0x36d42a)[_0x6f28('0x1a')](_0x2f8522);}};}function respondWithFilteredResult(_0x1a3d77,_0xaf214b){return function(_0x2da3ae){if(_0x2da3ae){var _0x549e4c=typeof _0xaf214b[_0x6f28('0x1b')]==='undefined'&&typeof _0xaf214b[_0x6f28('0x1c')]===_0x6f28('0x1d');var _0x411c50=_0x2da3ae[_0x6f28('0x1e')];var _0x441c66=_0x549e4c?0x0:_0xaf214b[_0x6f28('0x1b')];var _0x2ffa61=_0x549e4c?_0x2da3ae['count']:_0xaf214b[_0x6f28('0x1b')]+_0xaf214b[_0x6f28('0x1c')];var _0x17c469;if(_0x2ffa61>=_0x411c50){_0x2ffa61=_0x411c50;_0x17c469=0xc8;}else{_0x17c469=0xce;}_0x1a3d77['status'](_0x17c469);return _0x1a3d77['set']('Content-Range',_0x441c66+'-'+_0x2ffa61+'/'+_0x411c50)['json'](_0x2da3ae);}return null;};}function patchUpdates(_0x24580a){return function(_0x1ed863){try{jsonpatch['apply'](_0x1ed863,_0x24580a,!![]);}catch(_0x3f519c){return BPromise[_0x6f28('0x1f')](_0x3f519c);}return _0x1ed863[_0x6f28('0x20')]();};}function saveUpdates(_0x3754a1,_0xdda7c0){return function(_0x295632){if(_0x295632){return _0x295632['update'](_0x3754a1)['then'](function(_0xe20e02){return _0xe20e02;});}return null;};}function removeEntity(_0x38bd24,_0x2bd216){return function(_0x1f0a76){if(_0x1f0a76){return _0x1f0a76[_0x6f28('0x21')]()['then'](function(){_0x38bd24[_0x6f28('0x18')](0xcc)[_0x6f28('0x19')]();});}};}function handleEntityNotFound(_0x5604dc,_0xbdfd34){return function(_0xe9f423){if(!_0xe9f423){_0x5604dc[_0x6f28('0x17')](0x194);}return _0xe9f423;};}function handleError(_0x461b8b,_0x53d512){_0x53d512=_0x53d512||0x1f4;return function(_0x353a0b){logger[_0x6f28('0x22')](_0x353a0b['stack']);if(_0x353a0b['name']){delete _0x353a0b[_0x6f28('0x23')];}_0x461b8b[_0x6f28('0x18')](_0x53d512)[_0x6f28('0x24')](_0x353a0b);};}exports[_0x6f28('0x25')]=function(_0x2bf488,_0x64ad79){var _0x279969={},_0x4d3111={},_0x1db946={'count':0x0,'rows':[]};var _0x35da57=_[_0x6f28('0x26')](db[_0x6f28('0x27')][_0x6f28('0x28')],function(_0x45402c){return{'name':_0x45402c[_0x6f28('0x29')],'type':_0x45402c[_0x6f28('0x2a')][_0x6f28('0x2b')]};});_0x4d3111[_0x6f28('0x2c')]=_[_0x6f28('0x26')](_0x35da57,_0x6f28('0x23'));_0x4d3111[_0x6f28('0x2d')]=_[_0x6f28('0x2e')](_0x2bf488[_0x6f28('0x2d')]);_0x4d3111[_0x6f28('0x2f')]=_['intersection'](_0x4d3111[_0x6f28('0x2c')],_0x4d3111[_0x6f28('0x2d')]);_0x279969[_0x6f28('0x30')]=_['intersection'](_0x4d3111[_0x6f28('0x2c')],qs[_0x6f28('0x31')](_0x2bf488[_0x6f28('0x2d')][_0x6f28('0x31')]));_0x279969[_0x6f28('0x30')]=_0x279969['attributes'][_0x6f28('0x32')]?_0x279969[_0x6f28('0x30')]:_0x4d3111[_0x6f28('0x2c')];if(!_0x2bf488['query']['hasOwnProperty'](_0x6f28('0x33'))){_0x279969[_0x6f28('0x1c')]=qs[_0x6f28('0x1c')](_0x2bf488[_0x6f28('0x2d')][_0x6f28('0x1c')]);_0x279969[_0x6f28('0x1b')]=qs[_0x6f28('0x1b')](_0x2bf488[_0x6f28('0x2d')][_0x6f28('0x1b')]);}_0x279969[_0x6f28('0x34')]=qs[_0x6f28('0x35')](_0x2bf488[_0x6f28('0x2d')][_0x6f28('0x35')]);_0x279969[_0x6f28('0x36')]=qs[_0x6f28('0x2f')](_['pick'](_0x2bf488['query'],_0x4d3111['filters']),_0x35da57);if(_0x2bf488['query'][_0x6f28('0x37')]){_0x279969[_0x6f28('0x36')]=_[_0x6f28('0x38')](_0x279969[_0x6f28('0x36')],{'$or':_[_0x6f28('0x26')](_0x35da57,function(_0x3070ae){if(_0x3070ae[_0x6f28('0x2a')]!==_0x6f28('0x39')){var _0x4775d7={};_0x4775d7[_0x3070ae[_0x6f28('0x23')]]={'$like':'%'+_0x2bf488[_0x6f28('0x2d')][_0x6f28('0x37')]+'%'};return _0x4775d7;}})});}_0x279969=_[_0x6f28('0x38')]({},_0x279969,_0x2bf488['options']);var _0x5a84f5={'where':_0x279969['where']};return db[_0x6f28('0x27')]['count'](_0x5a84f5)['then'](function(_0xad259d){_0x1db946[_0x6f28('0x1e')]=_0xad259d;if(_0x2bf488[_0x6f28('0x2d')][_0x6f28('0x3a')]){_0x279969['include']=[{'all':!![]}];}return db[_0x6f28('0x27')][_0x6f28('0x3b')](_0x279969);})[_0x6f28('0x3c')](function(_0x4fc547){_0x1db946[_0x6f28('0x3d')]=_0x4fc547;return _0x1db946;})[_0x6f28('0x3c')](respondWithFilteredResult(_0x64ad79,_0x279969))['catch'](handleError(_0x64ad79,null));};exports[_0x6f28('0x3e')]=function(_0x4aa381,_0x4b26fa){var _0x12e614={'raw':!![],'where':{'id':_0x4aa381['params']['id']}},_0x1aba46={};_0x1aba46[_0x6f28('0x2c')]=_['keys'](db['OpenchannelTransferReport']['rawAttributes']);_0x1aba46[_0x6f28('0x2d')]=_[_0x6f28('0x2e')](_0x4aa381[_0x6f28('0x2d')]);_0x1aba46[_0x6f28('0x2f')]=_[_0x6f28('0x3f')](_0x1aba46[_0x6f28('0x2c')],_0x1aba46['query']);_0x12e614['attributes']=_[_0x6f28('0x3f')](_0x1aba46[_0x6f28('0x2c')],qs[_0x6f28('0x31')](_0x4aa381[_0x6f28('0x2d')][_0x6f28('0x31')]));_0x12e614['attributes']=_0x12e614[_0x6f28('0x30')][_0x6f28('0x32')]?_0x12e614[_0x6f28('0x30')]:_0x1aba46[_0x6f28('0x2c')];if(_0x4aa381['query'][_0x6f28('0x3a')]){_0x12e614[_0x6f28('0x40')]=[{'all':!![]}];}_0x12e614=_[_0x6f28('0x38')]({},_0x12e614,_0x4aa381[_0x6f28('0x41')]);return db[_0x6f28('0x27')][_0x6f28('0x42')](_0x12e614)[_0x6f28('0x3c')](handleEntityNotFound(_0x4b26fa,null))['then'](respondWithResult(_0x4b26fa,null))[_0x6f28('0x43')](handleError(_0x4b26fa,null));};exports[_0x6f28('0x44')]=function(_0x49e54e,_0x3994c1){return db['OpenchannelTransferReport'][_0x6f28('0x44')](_0x49e54e[_0x6f28('0x45')],{})[_0x6f28('0x3c')](respondWithResult(_0x3994c1,0xc9))['catch'](handleError(_0x3994c1,null));};exports[_0x6f28('0x46')]=function(_0x59276c,_0x3bffaf){if(_0x59276c[_0x6f28('0x45')]['id']){delete _0x59276c[_0x6f28('0x45')]['id'];}return db[_0x6f28('0x27')][_0x6f28('0x42')]({'where':{'id':_0x59276c[_0x6f28('0x47')]['id']}})[_0x6f28('0x3c')](handleEntityNotFound(_0x3bffaf,null))[_0x6f28('0x3c')](saveUpdates(_0x59276c['body'],null))[_0x6f28('0x3c')](respondWithResult(_0x3bffaf,null))['catch'](handleError(_0x3bffaf,null));};exports['destroy']=function(_0x5b0033,_0x34aeb0){return db[_0x6f28('0x27')][_0x6f28('0x42')]({'where':{'id':_0x5b0033[_0x6f28('0x47')]['id']}})[_0x6f28('0x3c')](handleEntityNotFound(_0x34aeb0,null))[_0x6f28('0x3c')](removeEntity(_0x34aeb0,null))['catch'](handleError(_0x34aeb0,null));};exports[_0x6f28('0x48')]=function(_0x336401,_0x206c11){return db[_0x6f28('0x27')][_0x6f28('0x48')]()[_0x6f28('0x3c')](respondWithResult(_0x206c11,null))[_0x6f28('0x43')](handleError(_0x206c11,null));};
\ No newline at end of file
index fc3931e..526dca2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x034c=['path','../../config/environment','./openchannelTransferReport.attributes','exports','define','OpenchannelTransferReport','report_openchannel_transfer','uniqueid','lodash','api','moment','bluebird','request-promise'];(function(_0x8c43de,_0x90ff31){var _0xa6591b=function(_0x469716){while(--_0x469716){_0x8c43de['push'](_0x8c43de['shift']());}};_0xa6591b(++_0x90ff31);}(_0x034c,0x18e));var _0xc034=function(_0x54bc0d,_0x503ed2){_0x54bc0d=_0x54bc0d-0x0;var _0x19faae=_0x034c[_0x54bc0d];return _0x19faae;};'use strict';var _=require(_0xc034('0x0'));var util=require('util');var logger=require('../../config/logger')(_0xc034('0x1'));var moment=require(_0xc034('0x2'));var BPromise=require(_0xc034('0x3'));var rp=require(_0xc034('0x4'));var fs=require('fs');var path=require(_0xc034('0x5'));var rimraf=require('rimraf');var config=require(_0xc034('0x6'));var attributes=require(_0xc034('0x7'));module[_0xc034('0x8')]=function(_0xc9456b,_0x54f6c8){return _0xc9456b[_0xc034('0x9')](_0xc034('0xa'),attributes,{'tableName':_0xc034('0xb'),'paranoid':![],'indexes':[{'name':'uniqueid','fields':[_0xc034('0xc')]}],'timestamps':!![]});};
\ No newline at end of file
+var _0x0393=['moment','request-promise','path','rimraf','../../config/environment','./openchannelTransferReport.attributes','define','OpenchannelTransferReport','report_openchannel_transfer','uniqueid','lodash','util','../../config/logger','api'];(function(_0x1eef40,_0x3fb65d){var _0x5effdb=function(_0x2db17a){while(--_0x2db17a){_0x1eef40['push'](_0x1eef40['shift']());}};_0x5effdb(++_0x3fb65d);}(_0x0393,0xf8));var _0x3039=function(_0x338640,_0x3321c9){_0x338640=_0x338640-0x0;var _0x1698ea=_0x0393[_0x338640];return _0x1698ea;};'use strict';var _=require(_0x3039('0x0'));var util=require(_0x3039('0x1'));var logger=require(_0x3039('0x2'))(_0x3039('0x3'));var moment=require(_0x3039('0x4'));var BPromise=require('bluebird');var rp=require(_0x3039('0x5'));var fs=require('fs');var path=require(_0x3039('0x6'));var rimraf=require(_0x3039('0x7'));var config=require(_0x3039('0x8'));var attributes=require(_0x3039('0x9'));module['exports']=function(_0x4bda6f,_0x3c4486){return _0x4bda6f[_0x3039('0xa')](_0x3039('0xb'),attributes,{'tableName':_0x3039('0xc'),'paranoid':![],'indexes':[{'name':'uniqueid','fields':[_0x3039('0xd')]}],'timestamps':!![]});};
\ No newline at end of file
index 9fc5771..98be80c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x46e1=['error','code','message','result','catch','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','jayson/promise','client','http','request','info','OpenchannelTransferReport,\x20%s,\x20%s','request\x20sent','debug','OpenchannelTransferReport,\x20%s,\x20%s,\x20%s'];(function(_0x474133,_0x161157){var _0x13bcd7=function(_0x1895e9){while(--_0x1895e9){_0x474133['push'](_0x474133['shift']());}};_0x13bcd7(++_0x161157);}(_0x46e1,0x155));var _0x146e=function(_0x59c6dd,_0x1a838e){_0x59c6dd=_0x59c6dd-0x0;var _0x5dadb8=_0x46e1[_0x59c6dd];return _0x5dadb8;};'use strict';var _=require(_0x146e('0x0'));var util=require(_0x146e('0x1'));var moment=require(_0x146e('0x2'));var BPromise=require(_0x146e('0x3'));var rs=require(_0x146e('0x4'));var fs=require('fs');var Redis=require(_0x146e('0x5'));var db=require(_0x146e('0x6'))['db'];var utils=require(_0x146e('0x7'));var logger=require(_0x146e('0x8'))(_0x146e('0x9'));var config=require('../../config/environment');var jayson=require(_0x146e('0xa'));var client=jayson[_0x146e('0xb')][_0x146e('0xc')]({'port':0x232a});function respondWithRpcPromise(_0x228fe7,_0x70ce4,_0x35e40e){return new BPromise(function(_0x1c1398,_0x5f33c0){return client[_0x146e('0xd')](_0x228fe7,_0x35e40e)['then'](function(_0x36f843){logger[_0x146e('0xe')](_0x146e('0xf'),_0x70ce4,_0x146e('0x10'));logger[_0x146e('0x11')](_0x146e('0x12'),_0x70ce4,'request\x20sent',JSON['stringify'](_0x36f843));if(_0x36f843[_0x146e('0x13')]){if(_0x36f843[_0x146e('0x13')][_0x146e('0x14')]===0x1f4){logger[_0x146e('0x13')](_0x146e('0xf'),_0x70ce4,_0x36f843[_0x146e('0x13')][_0x146e('0x15')]);return _0x5f33c0(_0x36f843[_0x146e('0x13')]['message']);}logger['error'](_0x146e('0xf'),_0x70ce4,_0x36f843[_0x146e('0x13')][_0x146e('0x15')]);return _0x1c1398(_0x36f843[_0x146e('0x13')][_0x146e('0x15')]);}else{logger[_0x146e('0xe')](_0x146e('0xf'),_0x70ce4,_0x146e('0x10'));_0x1c1398(_0x36f843[_0x146e('0x16')][_0x146e('0x15')]);}})[_0x146e('0x17')](function(_0x55fddc){logger[_0x146e('0x13')](_0x146e('0xf'),_0x70ce4,_0x55fddc);_0x5f33c0(_0x55fddc);});});}
\ No newline at end of file
+var _0x5301=['bluebird','randomstring','ioredis','../../config/utils','../../config/logger','rpc','../../config/environment','client','request','then','OpenchannelTransferReport,\x20%s,\x20%s','request\x20sent','debug','OpenchannelTransferReport,\x20%s,\x20%s,\x20%s','stringify','error','code','message','info','result','catch','util','moment'];(function(_0x2b9e8a,_0x7b21d4){var _0x520e67=function(_0x22bce8){while(--_0x22bce8){_0x2b9e8a['push'](_0x2b9e8a['shift']());}};_0x520e67(++_0x7b21d4);}(_0x5301,0x157));var _0x1530=function(_0xa007d7,_0x1468b5){_0xa007d7=_0xa007d7-0x0;var _0x3f2544=_0x5301[_0xa007d7];return _0x3f2544;};'use strict';var _=require('lodash');var util=require(_0x1530('0x0'));var moment=require(_0x1530('0x1'));var BPromise=require(_0x1530('0x2'));var rs=require(_0x1530('0x3'));var fs=require('fs');var Redis=require(_0x1530('0x4'));var db=require('../../mysqldb')['db'];var utils=require(_0x1530('0x5'));var logger=require(_0x1530('0x6'))(_0x1530('0x7'));var config=require(_0x1530('0x8'));var jayson=require('jayson/promise');var client=jayson[_0x1530('0x9')]['http']({'port':0x232a});function respondWithRpcPromise(_0x17f435,_0x4c8496,_0xd9ff84){return new BPromise(function(_0x2c7135,_0x319d53){return client[_0x1530('0xa')](_0x17f435,_0xd9ff84)[_0x1530('0xb')](function(_0x59c4d6){logger['info'](_0x1530('0xc'),_0x4c8496,_0x1530('0xd'));logger[_0x1530('0xe')](_0x1530('0xf'),_0x4c8496,'request\x20sent',JSON[_0x1530('0x10')](_0x59c4d6));if(_0x59c4d6[_0x1530('0x11')]){if(_0x59c4d6[_0x1530('0x11')][_0x1530('0x12')]===0x1f4){logger['error']('OpenchannelTransferReport,\x20%s,\x20%s',_0x4c8496,_0x59c4d6[_0x1530('0x11')][_0x1530('0x13')]);return _0x319d53(_0x59c4d6['error'][_0x1530('0x13')]);}logger[_0x1530('0x11')]('OpenchannelTransferReport,\x20%s,\x20%s',_0x4c8496,_0x59c4d6[_0x1530('0x11')][_0x1530('0x13')]);return _0x2c7135(_0x59c4d6[_0x1530('0x11')][_0x1530('0x13')]);}else{logger[_0x1530('0x14')](_0x1530('0xc'),_0x4c8496,_0x1530('0xd'));_0x2c7135(_0x59c4d6[_0x1530('0x15')][_0x1530('0x13')]);}})[_0x1530('0x16')](function(_0x3c5eb3){logger[_0x1530('0x11')]('OpenchannelTransferReport,\x20%s,\x20%s',_0x4c8496,_0x3c5eb3);_0x319d53(_0x3c5eb3);});});}
\ No newline at end of file
index c83d143..2ed1a91 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1ced=['post','create','put','/:id','update','destroy','exports','multer','util','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','get','isAuthenticated','index','show'];(function(_0x19ef4a,_0x530201){var _0x5e2680=function(_0x27bee6){while(--_0x27bee6){_0x19ef4a['push'](_0x19ef4a['shift']());}};_0x5e2680(++_0x530201);}(_0x1ced,0x183));var _0xd1ce=function(_0x4772d6,_0x2e24ed){_0x4772d6=_0x4772d6-0x0;var _0x175931=_0x1ced[_0x4772d6];return _0x175931;};'use strict';var multer=require(_0xd1ce('0x0'));var util=require(_0xd1ce('0x1'));var path=require('path');var timeout=require(_0xd1ce('0x2'));var express=require(_0xd1ce('0x3'));var router=express[_0xd1ce('0x4')]();var fs_extra=require(_0xd1ce('0x5'));var auth=require(_0xd1ce('0x6'));var interaction=require(_0xd1ce('0x7'));var config=require(_0xd1ce('0x8'));var controller=require('./pause.controller');router[_0xd1ce('0x9')]('/',auth[_0xd1ce('0xa')](),controller[_0xd1ce('0xb')]);router['get']('/:id',auth[_0xd1ce('0xa')](),controller[_0xd1ce('0xc')]);router[_0xd1ce('0xd')]('/',auth['isAuthenticated'](),controller[_0xd1ce('0xe')]);router[_0xd1ce('0xf')](_0xd1ce('0x10'),auth['isAuthenticated'](),controller[_0xd1ce('0x11')]);router['delete'](_0xd1ce('0x10'),auth[_0xd1ce('0xa')](),controller[_0xd1ce('0x12')]);module[_0xd1ce('0x13')]=router;
\ No newline at end of file
+var _0x5bee=['destroy','multer','util','path','express','Router','../../components/auth/service','../../components/interaction/service','../../config/environment','./pause.controller','get','isAuthenticated','index','/:id','show','post','create','update'];(function(_0x2bfe52,_0x43946e){var _0x1cf649=function(_0xc8300c){while(--_0xc8300c){_0x2bfe52['push'](_0x2bfe52['shift']());}};_0x1cf649(++_0x43946e);}(_0x5bee,0x1c3));var _0xe5be=function(_0x2d8c90,_0xebac28){_0x2d8c90=_0x2d8c90-0x0;var _0x118c87=_0x5bee[_0x2d8c90];return _0x118c87;};'use strict';var multer=require(_0xe5be('0x0'));var util=require(_0xe5be('0x1'));var path=require(_0xe5be('0x2'));var timeout=require('connect-timeout');var express=require(_0xe5be('0x3'));var router=express[_0xe5be('0x4')]();var fs_extra=require('fs-extra');var auth=require(_0xe5be('0x5'));var interaction=require(_0xe5be('0x6'));var config=require(_0xe5be('0x7'));var controller=require(_0xe5be('0x8'));router[_0xe5be('0x9')]('/',auth[_0xe5be('0xa')](),controller[_0xe5be('0xb')]);router[_0xe5be('0x9')](_0xe5be('0xc'),auth[_0xe5be('0xa')](),controller[_0xe5be('0xd')]);router[_0xe5be('0xe')]('/',auth[_0xe5be('0xa')](),controller[_0xe5be('0xf')]);router['put'](_0xe5be('0xc'),auth[_0xe5be('0xa')](),controller[_0xe5be('0x10')]);router['delete'](_0xe5be('0xc'),auth[_0xe5be('0xa')](),controller[_0xe5be('0x11')]);module['exports']=router;
\ No newline at end of file
index 488314e..d90c575 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x047c=['sequelize','exports','STRING','name'];(function(_0x487ea4,_0x1d8210){var _0x2f5ae1=function(_0x48dd14){while(--_0x48dd14){_0x487ea4['push'](_0x487ea4['shift']());}};_0x2f5ae1(++_0x1d8210);}(_0x047c,0x164));var _0xc047=function(_0x28e41f,_0x4d037f){_0x28e41f=_0x28e41f-0x0;var _0x4ac8fa=_0x047c[_0x28e41f];return _0x4ac8fa;};'use strict';var Sequelize=require(_0xc047('0x0'));module[_0xc047('0x1')]={'name':{'type':Sequelize[_0xc047('0x2')],'unique':_0xc047('0x3'),'allowNull':![]},'description':{'type':Sequelize[_0xc047('0x2')]}};
\ No newline at end of file
+var _0x045e=['sequelize','exports','name','STRING'];(function(_0x6ca1c1,_0x390eb5){var _0x5a7a23=function(_0x4c783d){while(--_0x4c783d){_0x6ca1c1['push'](_0x6ca1c1['shift']());}};_0x5a7a23(++_0x390eb5);}(_0x045e,0x1cc));var _0xe045=function(_0x581d90,_0x40fa2a){_0x581d90=_0x581d90-0x0;var _0x39247f=_0x045e[_0x581d90];return _0x39247f;};'use strict';var Sequelize=require(_0xe045('0x0'));module[_0xe045('0x1')]={'name':{'type':Sequelize['STRING'],'unique':_0xe045('0x2'),'allowNull':![]},'description':{'type':Sequelize[_0xe045('0x3')]}};
\ No newline at end of file
index 8e9749c..d0d4df1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9881=['then','destroy','get','stack','send','index','map','rawAttributes','fieldName','type','key','model','name','keys','query','intersection','attributes','length','hasOwnProperty','nolimit','sort','where','filters','pick','filter','merge','VIRTUAL','includeAll','include','Pause','catch','show','params','fields','options','find','create','body','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','Pauses','UserProfileSection','userProfileId','error','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','eml-format','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','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','sendStatus','status','end','json','offset','undefined','count','limit','set','apply','reject','update'];(function(_0x1deb72,_0x3f6338){var _0x18bbdf=function(_0x1b4b9b){while(--_0x1b4b9b){_0x1deb72['push'](_0x1deb72['shift']());}};_0x18bbdf(++_0x3f6338);}(_0x9881,0xda));var _0x1988=function(_0x553cdb,_0x10ffdb){_0x553cdb=_0x553cdb-0x0;var _0x3f5373=_0x9881[_0x553cdb];return _0x3f5373;};'use strict';var emlformat=require(_0x1988('0x0'));var rimraf=require(_0x1988('0x1'));var zipdir=require(_0x1988('0x2'));var jsonpatch=require(_0x1988('0x3'));var rp=require('request-promise');var moment=require(_0x1988('0x4'));var BPromise=require(_0x1988('0x5'));var Mustache=require(_0x1988('0x6'));var util=require(_0x1988('0x7'));var path=require(_0x1988('0x8'));var sox=require(_0x1988('0x9'));var csv=require(_0x1988('0xa'));var ejs=require(_0x1988('0xb'));var fs=require('fs');var fs_extra=require(_0x1988('0xc'));var _=require(_0x1988('0xd'));var squel=require(_0x1988('0xe'));var crypto=require(_0x1988('0xf'));var jsforce=require(_0x1988('0x10'));var deskjs=require('desk.js');var toCsv=require(_0x1988('0xa'));var querystring=require(_0x1988('0x11'));var Papa=require(_0x1988('0x12'));var Redis=require(_0x1988('0x13'));var authService=require(_0x1988('0x14'));var qs=require(_0x1988('0x15'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x1988('0x16'));var logger=require(_0x1988('0x17'))(_0x1988('0x18'));var utils=require(_0x1988('0x19'));var config=require(_0x1988('0x1a'));var licenseUtil=require(_0x1988('0x1b'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x2bdaa0,_0x3d4092){_0x3d4092=_0x3d4092||0xcc;return function(_0x40fd80){if(_0x40fd80){return _0x2bdaa0[_0x1988('0x1c')](_0x3d4092);}return _0x2bdaa0[_0x1988('0x1d')](_0x3d4092)[_0x1988('0x1e')]();};}function respondWithResult(_0x69ee0e,_0x5b9251){_0x5b9251=_0x5b9251||0xc8;return function(_0x32b68f){if(_0x32b68f){return _0x69ee0e['status'](_0x5b9251)[_0x1988('0x1f')](_0x32b68f);}};}function respondWithFilteredResult(_0x484af3,_0x1da9cd){return function(_0x3bd91e){if(_0x3bd91e){var _0x354a25=typeof _0x1da9cd[_0x1988('0x20')]===_0x1988('0x21')&&typeof _0x1da9cd['limit']===_0x1988('0x21');var _0x49a894=_0x3bd91e[_0x1988('0x22')];var _0x328f75=_0x354a25?0x0:_0x1da9cd[_0x1988('0x20')];var _0xa6179e=_0x354a25?_0x3bd91e[_0x1988('0x22')]:_0x1da9cd[_0x1988('0x20')]+_0x1da9cd[_0x1988('0x23')];var _0x28a542;if(_0xa6179e>=_0x49a894){_0xa6179e=_0x49a894;_0x28a542=0xc8;}else{_0x28a542=0xce;}_0x484af3[_0x1988('0x1d')](_0x28a542);return _0x484af3[_0x1988('0x24')]('Content-Range',_0x328f75+'-'+_0xa6179e+'/'+_0x49a894)[_0x1988('0x1f')](_0x3bd91e);}return null;};}function patchUpdates(_0x57ed5b){return function(_0x347147){try{jsonpatch[_0x1988('0x25')](_0x347147,_0x57ed5b,!![]);}catch(_0x592c9b){return BPromise[_0x1988('0x26')](_0x592c9b);}return _0x347147['save']();};}function saveUpdates(_0x5ea249,_0xfaa9b0){return function(_0x17a216){if(_0x17a216){return _0x17a216[_0x1988('0x27')](_0x5ea249)[_0x1988('0x28')](function(_0x10bd4c){return _0x10bd4c;});}return null;};}function removeEntity(_0x1120bf,_0x405de4){return function(_0x471b9f){if(_0x471b9f){return _0x471b9f[_0x1988('0x29')]()[_0x1988('0x28')](function(){var _0xbc5a07=_0x471b9f[_0x1988('0x2a')]({'plain':!![]});var _0x472d0d='Pauses';return db['UserProfileResource'][_0x1988('0x29')]({'where':{'type':_0x472d0d,'resourceId':_0xbc5a07['id']}})[_0x1988('0x28')](function(){return _0x471b9f;});})[_0x1988('0x28')](function(){_0x1120bf[_0x1988('0x1d')](0xcc)[_0x1988('0x1e')]();});}};}function handleEntityNotFound(_0x5b8658,_0x11e0b8){return function(_0x29d075){if(!_0x29d075){_0x5b8658[_0x1988('0x1c')](0x194);}return _0x29d075;};}function handleError(_0x29cbcd,_0x121e9b){_0x121e9b=_0x121e9b||0x1f4;return function(_0x226ba3){logger['error'](_0x226ba3[_0x1988('0x2b')]);if(_0x226ba3['name']){delete _0x226ba3['name'];}_0x29cbcd[_0x1988('0x1d')](_0x121e9b)[_0x1988('0x2c')](_0x226ba3);};}exports[_0x1988('0x2d')]=function(_0x66979f,_0x19eaaa){var _0x59d5f1={},_0x213cc0={},_0x191433={'count':0x0,'rows':[]};var _0xd3f8eb=_[_0x1988('0x2e')](db['Pause'][_0x1988('0x2f')],function(_0x38fee9){return{'name':_0x38fee9[_0x1988('0x30')],'type':_0x38fee9[_0x1988('0x31')][_0x1988('0x32')]};});_0x213cc0[_0x1988('0x33')]=_[_0x1988('0x2e')](_0xd3f8eb,_0x1988('0x34'));_0x213cc0['query']=_[_0x1988('0x35')](_0x66979f[_0x1988('0x36')]);_0x213cc0['filters']=_[_0x1988('0x37')](_0x213cc0[_0x1988('0x33')],_0x213cc0[_0x1988('0x36')]);_0x59d5f1[_0x1988('0x38')]=_[_0x1988('0x37')](_0x213cc0[_0x1988('0x33')],qs['fields'](_0x66979f[_0x1988('0x36')]['fields']));_0x59d5f1['attributes']=_0x59d5f1[_0x1988('0x38')][_0x1988('0x39')]?_0x59d5f1[_0x1988('0x38')]:_0x213cc0['model'];if(!_0x66979f[_0x1988('0x36')][_0x1988('0x3a')](_0x1988('0x3b'))){_0x59d5f1[_0x1988('0x23')]=qs[_0x1988('0x23')](_0x66979f[_0x1988('0x36')]['limit']);_0x59d5f1[_0x1988('0x20')]=qs[_0x1988('0x20')](_0x66979f[_0x1988('0x36')][_0x1988('0x20')]);}_0x59d5f1['order']=qs[_0x1988('0x3c')](_0x66979f[_0x1988('0x36')]['sort']);_0x59d5f1[_0x1988('0x3d')]=qs[_0x1988('0x3e')](_[_0x1988('0x3f')](_0x66979f[_0x1988('0x36')],_0x213cc0['filters']),_0xd3f8eb);if(_0x66979f[_0x1988('0x36')][_0x1988('0x40')]){_0x59d5f1[_0x1988('0x3d')]=_[_0x1988('0x41')](_0x59d5f1[_0x1988('0x3d')],{'$or':_[_0x1988('0x2e')](_0xd3f8eb,function(_0x44ada0){if(_0x44ada0[_0x1988('0x31')]!==_0x1988('0x42')){var _0x2974b4={};_0x2974b4[_0x44ada0['name']]={'$like':'%'+_0x66979f[_0x1988('0x36')][_0x1988('0x40')]+'%'};return _0x2974b4;}})});}_0x59d5f1=_[_0x1988('0x41')]({},_0x59d5f1,_0x66979f['options']);var _0x1fa146={'where':_0x59d5f1['where']};return db['Pause'][_0x1988('0x22')](_0x1fa146)[_0x1988('0x28')](function(_0x971a06){_0x191433[_0x1988('0x22')]=_0x971a06;if(_0x66979f['query'][_0x1988('0x43')]){_0x59d5f1[_0x1988('0x44')]=[{'all':!![]}];}return db[_0x1988('0x45')]['findAll'](_0x59d5f1);})[_0x1988('0x28')](function(_0x2cec71){_0x191433['rows']=_0x2cec71;return _0x191433;})[_0x1988('0x28')](respondWithFilteredResult(_0x19eaaa,_0x59d5f1))[_0x1988('0x46')](handleError(_0x19eaaa,null));};exports[_0x1988('0x47')]=function(_0x35acd1,_0x8272f5){var _0xf4f6f1={'raw':!![],'where':{'id':_0x35acd1[_0x1988('0x48')]['id']}},_0x2070f8={};_0x2070f8[_0x1988('0x33')]=_[_0x1988('0x35')](db[_0x1988('0x45')][_0x1988('0x2f')]);_0x2070f8[_0x1988('0x36')]=_[_0x1988('0x35')](_0x35acd1['query']);_0x2070f8[_0x1988('0x3e')]=_[_0x1988('0x37')](_0x2070f8[_0x1988('0x33')],_0x2070f8['query']);_0xf4f6f1['attributes']=_[_0x1988('0x37')](_0x2070f8[_0x1988('0x33')],qs['fields'](_0x35acd1['query'][_0x1988('0x49')]));_0xf4f6f1[_0x1988('0x38')]=_0xf4f6f1['attributes'][_0x1988('0x39')]?_0xf4f6f1[_0x1988('0x38')]:_0x2070f8[_0x1988('0x33')];if(_0x35acd1[_0x1988('0x36')][_0x1988('0x43')]){_0xf4f6f1['include']=[{'all':!![]}];}_0xf4f6f1=_['merge']({},_0xf4f6f1,_0x35acd1[_0x1988('0x4a')]);return db[_0x1988('0x45')][_0x1988('0x4b')](_0xf4f6f1)[_0x1988('0x28')](handleEntityNotFound(_0x8272f5,null))[_0x1988('0x28')](respondWithResult(_0x8272f5,null))[_0x1988('0x46')](handleError(_0x8272f5,null));};exports[_0x1988('0x4c')]=function(_0xf1b0f5,_0x518451){return db[_0x1988('0x45')]['create'](_0xf1b0f5[_0x1988('0x4d')],{})[_0x1988('0x28')](function(_0x140212){var _0xe43f3b=_0xf1b0f5[_0x1988('0x4e')]['get']({'plain':!![]});if(!_0xe43f3b)throw new Error(_0x1988('0x4f'));if(_0xe43f3b[_0x1988('0x50')]===_0x1988('0x4e')){var _0x48c5ac=_0x140212[_0x1988('0x2a')]({'plain':!![]});var _0x1c8538=_0x1988('0x51');return db[_0x1988('0x52')][_0x1988('0x4b')]({'where':{'name':_0x1c8538,'userProfileId':_0xe43f3b[_0x1988('0x53')]},'raw':!![]})[_0x1988('0x28')](function(_0x260357){if(_0x260357&&_0x260357['autoAssociation']===0x0){return db['UserProfileResource'][_0x1988('0x4c')]({'name':_0x48c5ac[_0x1988('0x34')],'resourceId':_0x48c5ac['id'],'type':_0x260357[_0x1988('0x34')],'sectionId':_0x260357['id']},{})[_0x1988('0x28')](function(){return _0x140212;});}else{return _0x140212;}})[_0x1988('0x46')](function(_0x45bb35){logger[_0x1988('0x54')](_0x1988('0x55'),_0x45bb35);throw _0x45bb35;});}return _0x140212;})[_0x1988('0x28')](respondWithResult(_0x518451,0xc9))[_0x1988('0x46')](handleError(_0x518451,null));};exports['update']=function(_0x506255,_0x2607df){if(_0x506255[_0x1988('0x4d')]['id']){delete _0x506255[_0x1988('0x4d')]['id'];}return db[_0x1988('0x45')][_0x1988('0x4b')]({'where':{'id':_0x506255[_0x1988('0x48')]['id']}})[_0x1988('0x28')](handleEntityNotFound(_0x2607df,null))['then'](saveUpdates(_0x506255[_0x1988('0x4d')],null))[_0x1988('0x28')](respondWithResult(_0x2607df,null))[_0x1988('0x46')](handleError(_0x2607df,null));};exports[_0x1988('0x29')]=function(_0x2ea466,_0x5ca73b){return db['Pause'][_0x1988('0x4b')]({'where':{'id':_0x2ea466[_0x1988('0x48')]['id']}})[_0x1988('0x28')](handleEntityNotFound(_0x5ca73b,null))['then'](removeEntity(_0x5ca73b,null))[_0x1988('0x46')](handleError(_0x5ca73b,null));};
\ No newline at end of file
+var _0x41ae=['to-csv','ejs','lodash','squel','crypto','jsforce','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/license/util','../../mysqldb','sendStatus','end','json','offset','undefined','count','status','set','apply','update','then','destroy','get','Pauses','UserProfileResource','stack','name','send','map','Pause','fieldName','key','model','query','keys','filters','intersection','attributes','fields','nolimit','limit','order','sort','where','filter','merge','type','VIRTUAL','options','includeAll','findAll','rows','catch','show','rawAttributes','length','include','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','params','eml-format','rimraf','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox'];(function(_0x3b646b,_0x201783){var _0x2dd071=function(_0x5d4b83){while(--_0x5d4b83){_0x3b646b['push'](_0x3b646b['shift']());}};_0x2dd071(++_0x201783);}(_0x41ae,0x1f4));var _0xe41a=function(_0x1a8dc3,_0x395536){_0x1a8dc3=_0x1a8dc3-0x0;var _0x2a9c1e=_0x41ae[_0x1a8dc3];return _0x2a9c1e;};'use strict';var emlformat=require(_0xe41a('0x0'));var rimraf=require(_0xe41a('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0xe41a('0x2'));var rp=require(_0xe41a('0x3'));var moment=require(_0xe41a('0x4'));var BPromise=require(_0xe41a('0x5'));var Mustache=require(_0xe41a('0x6'));var util=require(_0xe41a('0x7'));var path=require(_0xe41a('0x8'));var sox=require(_0xe41a('0x9'));var csv=require(_0xe41a('0xa'));var ejs=require(_0xe41a('0xb'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0xe41a('0xc'));var squel=require(_0xe41a('0xd'));var crypto=require(_0xe41a('0xe'));var jsforce=require(_0xe41a('0xf'));var deskjs=require('desk.js');var toCsv=require(_0xe41a('0xa'));var querystring=require('querystring');var Papa=require(_0xe41a('0x10'));var Redis=require(_0xe41a('0x11'));var authService=require(_0xe41a('0x12'));var qs=require(_0xe41a('0x13'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0xe41a('0x14'));var logger=require(_0xe41a('0x15'))(_0xe41a('0x16'));var utils=require(_0xe41a('0x17'));var config=require('../../config/environment');var licenseUtil=require(_0xe41a('0x18'));var db=require(_0xe41a('0x19'))['db'];function respondWithStatusCode(_0x4af003,_0x358bc0){_0x358bc0=_0x358bc0||0xcc;return function(_0x21a14f){if(_0x21a14f){return _0x4af003[_0xe41a('0x1a')](_0x358bc0);}return _0x4af003['status'](_0x358bc0)[_0xe41a('0x1b')]();};}function respondWithResult(_0x31e6f8,_0x13aa3a){_0x13aa3a=_0x13aa3a||0xc8;return function(_0x51a529){if(_0x51a529){return _0x31e6f8['status'](_0x13aa3a)[_0xe41a('0x1c')](_0x51a529);}};}function respondWithFilteredResult(_0xd8ce4e,_0x2f2653){return function(_0x44ea1c){if(_0x44ea1c){var _0x248f1d=typeof _0x2f2653[_0xe41a('0x1d')]===_0xe41a('0x1e')&&typeof _0x2f2653['limit']===_0xe41a('0x1e');var _0x5c7af8=_0x44ea1c[_0xe41a('0x1f')];var _0x47d6c7=_0x248f1d?0x0:_0x2f2653[_0xe41a('0x1d')];var _0x184ac2=_0x248f1d?_0x44ea1c[_0xe41a('0x1f')]:_0x2f2653[_0xe41a('0x1d')]+_0x2f2653['limit'];var _0x5a8307;if(_0x184ac2>=_0x5c7af8){_0x184ac2=_0x5c7af8;_0x5a8307=0xc8;}else{_0x5a8307=0xce;}_0xd8ce4e[_0xe41a('0x20')](_0x5a8307);return _0xd8ce4e[_0xe41a('0x21')]('Content-Range',_0x47d6c7+'-'+_0x184ac2+'/'+_0x5c7af8)[_0xe41a('0x1c')](_0x44ea1c);}return null;};}function patchUpdates(_0x54f959){return function(_0x2dfc2c){try{jsonpatch[_0xe41a('0x22')](_0x2dfc2c,_0x54f959,!![]);}catch(_0x8d7b7d){return BPromise['reject'](_0x8d7b7d);}return _0x2dfc2c['save']();};}function saveUpdates(_0x343a57,_0x85e79){return function(_0x2fcd13){if(_0x2fcd13){return _0x2fcd13[_0xe41a('0x23')](_0x343a57)[_0xe41a('0x24')](function(_0x5a27b0){return _0x5a27b0;});}return null;};}function removeEntity(_0x573cd7,_0x4c5690){return function(_0x73bb3d){if(_0x73bb3d){return _0x73bb3d[_0xe41a('0x25')]()['then'](function(){var _0x549039=_0x73bb3d[_0xe41a('0x26')]({'plain':!![]});var _0x5758df=_0xe41a('0x27');return db[_0xe41a('0x28')]['destroy']({'where':{'type':_0x5758df,'resourceId':_0x549039['id']}})[_0xe41a('0x24')](function(){return _0x73bb3d;});})[_0xe41a('0x24')](function(){_0x573cd7['status'](0xcc)[_0xe41a('0x1b')]();});}};}function handleEntityNotFound(_0x2e7b06,_0x47cfdb){return function(_0x23e67e){if(!_0x23e67e){_0x2e7b06[_0xe41a('0x1a')](0x194);}return _0x23e67e;};}function handleError(_0x5cc46e,_0x24e7af){_0x24e7af=_0x24e7af||0x1f4;return function(_0x1d6bbb){logger['error'](_0x1d6bbb[_0xe41a('0x29')]);if(_0x1d6bbb['name']){delete _0x1d6bbb[_0xe41a('0x2a')];}_0x5cc46e[_0xe41a('0x20')](_0x24e7af)[_0xe41a('0x2b')](_0x1d6bbb);};}exports['index']=function(_0x447a42,_0x7c34ca){var _0x10e692={},_0x449b5f={},_0x2217ab={'count':0x0,'rows':[]};var _0x48d68c=_[_0xe41a('0x2c')](db[_0xe41a('0x2d')]['rawAttributes'],function(_0x46b082){return{'name':_0x46b082[_0xe41a('0x2e')],'type':_0x46b082['type'][_0xe41a('0x2f')]};});_0x449b5f[_0xe41a('0x30')]=_[_0xe41a('0x2c')](_0x48d68c,_0xe41a('0x2a'));_0x449b5f[_0xe41a('0x31')]=_[_0xe41a('0x32')](_0x447a42[_0xe41a('0x31')]);_0x449b5f[_0xe41a('0x33')]=_[_0xe41a('0x34')](_0x449b5f[_0xe41a('0x30')],_0x449b5f[_0xe41a('0x31')]);_0x10e692[_0xe41a('0x35')]=_['intersection'](_0x449b5f['model'],qs[_0xe41a('0x36')](_0x447a42[_0xe41a('0x31')]['fields']));_0x10e692[_0xe41a('0x35')]=_0x10e692[_0xe41a('0x35')]['length']?_0x10e692[_0xe41a('0x35')]:_0x449b5f[_0xe41a('0x30')];if(!_0x447a42[_0xe41a('0x31')]['hasOwnProperty'](_0xe41a('0x37'))){_0x10e692[_0xe41a('0x38')]=qs[_0xe41a('0x38')](_0x447a42['query'][_0xe41a('0x38')]);_0x10e692[_0xe41a('0x1d')]=qs[_0xe41a('0x1d')](_0x447a42['query'][_0xe41a('0x1d')]);}_0x10e692[_0xe41a('0x39')]=qs[_0xe41a('0x3a')](_0x447a42[_0xe41a('0x31')][_0xe41a('0x3a')]);_0x10e692[_0xe41a('0x3b')]=qs[_0xe41a('0x33')](_['pick'](_0x447a42['query'],_0x449b5f['filters']),_0x48d68c);if(_0x447a42['query'][_0xe41a('0x3c')]){_0x10e692[_0xe41a('0x3b')]=_[_0xe41a('0x3d')](_0x10e692['where'],{'$or':_['map'](_0x48d68c,function(_0x50e05a){if(_0x50e05a[_0xe41a('0x3e')]!==_0xe41a('0x3f')){var _0x4ef551={};_0x4ef551[_0x50e05a['name']]={'$like':'%'+_0x447a42[_0xe41a('0x31')][_0xe41a('0x3c')]+'%'};return _0x4ef551;}})});}_0x10e692=_[_0xe41a('0x3d')]({},_0x10e692,_0x447a42[_0xe41a('0x40')]);var _0x199be9={'where':_0x10e692[_0xe41a('0x3b')]};return db['Pause'][_0xe41a('0x1f')](_0x199be9)[_0xe41a('0x24')](function(_0xc8f63){_0x2217ab[_0xe41a('0x1f')]=_0xc8f63;if(_0x447a42[_0xe41a('0x31')][_0xe41a('0x41')]){_0x10e692['include']=[{'all':!![]}];}return db['Pause'][_0xe41a('0x42')](_0x10e692);})[_0xe41a('0x24')](function(_0x20c479){_0x2217ab[_0xe41a('0x43')]=_0x20c479;return _0x2217ab;})['then'](respondWithFilteredResult(_0x7c34ca,_0x10e692))[_0xe41a('0x44')](handleError(_0x7c34ca,null));};exports[_0xe41a('0x45')]=function(_0x4ddf39,_0x30d82d){var _0x2e9792={'raw':!![],'where':{'id':_0x4ddf39['params']['id']}},_0x5c9f5e={};_0x5c9f5e[_0xe41a('0x30')]=_[_0xe41a('0x32')](db[_0xe41a('0x2d')][_0xe41a('0x46')]);_0x5c9f5e['query']=_[_0xe41a('0x32')](_0x4ddf39[_0xe41a('0x31')]);_0x5c9f5e['filters']=_[_0xe41a('0x34')](_0x5c9f5e[_0xe41a('0x30')],_0x5c9f5e['query']);_0x2e9792[_0xe41a('0x35')]=_['intersection'](_0x5c9f5e[_0xe41a('0x30')],qs[_0xe41a('0x36')](_0x4ddf39[_0xe41a('0x31')][_0xe41a('0x36')]));_0x2e9792[_0xe41a('0x35')]=_0x2e9792['attributes'][_0xe41a('0x47')]?_0x2e9792[_0xe41a('0x35')]:_0x5c9f5e[_0xe41a('0x30')];if(_0x4ddf39[_0xe41a('0x31')][_0xe41a('0x41')]){_0x2e9792[_0xe41a('0x48')]=[{'all':!![]}];}_0x2e9792=_[_0xe41a('0x3d')]({},_0x2e9792,_0x4ddf39[_0xe41a('0x40')]);return db[_0xe41a('0x2d')][_0xe41a('0x49')](_0x2e9792)['then'](handleEntityNotFound(_0x30d82d,null))[_0xe41a('0x24')](respondWithResult(_0x30d82d,null))[_0xe41a('0x44')](handleError(_0x30d82d,null));};exports[_0xe41a('0x4a')]=function(_0x40031e,_0x3e456f){return db[_0xe41a('0x2d')]['create'](_0x40031e[_0xe41a('0x4b')],{})[_0xe41a('0x24')](function(_0x423a1c){var _0x1c3bbb=_0x40031e[_0xe41a('0x4c')]['get']({'plain':!![]});if(!_0x1c3bbb)throw new Error(_0xe41a('0x4d'));if(_0x1c3bbb[_0xe41a('0x4e')]==='user'){var _0x23fc49=_0x423a1c[_0xe41a('0x26')]({'plain':!![]});var _0x2be2a3=_0xe41a('0x27');return db[_0xe41a('0x4f')]['find']({'where':{'name':_0x2be2a3,'userProfileId':_0x1c3bbb[_0xe41a('0x50')]},'raw':!![]})['then'](function(_0x5c830f){if(_0x5c830f&&_0x5c830f[_0xe41a('0x51')]===0x0){return db[_0xe41a('0x28')][_0xe41a('0x4a')]({'name':_0x23fc49[_0xe41a('0x2a')],'resourceId':_0x23fc49['id'],'type':_0x5c830f['name'],'sectionId':_0x5c830f['id']},{})['then'](function(){return _0x423a1c;});}else{return _0x423a1c;}})[_0xe41a('0x44')](function(_0x495df2){logger[_0xe41a('0x52')](_0xe41a('0x53'),_0x495df2);throw _0x495df2;});}return _0x423a1c;})[_0xe41a('0x24')](respondWithResult(_0x3e456f,0xc9))[_0xe41a('0x44')](handleError(_0x3e456f,null));};exports[_0xe41a('0x23')]=function(_0x2cd8bb,_0x52cfea){if(_0x2cd8bb['body']['id']){delete _0x2cd8bb['body']['id'];}return db[_0xe41a('0x2d')][_0xe41a('0x49')]({'where':{'id':_0x2cd8bb['params']['id']}})[_0xe41a('0x24')](handleEntityNotFound(_0x52cfea,null))[_0xe41a('0x24')](saveUpdates(_0x2cd8bb[_0xe41a('0x4b')],null))[_0xe41a('0x24')](respondWithResult(_0x52cfea,null))[_0xe41a('0x44')](handleError(_0x52cfea,null));};exports[_0xe41a('0x25')]=function(_0x4a6e82,_0x38bd80){return db[_0xe41a('0x2d')][_0xe41a('0x49')]({'where':{'id':_0x4a6e82[_0xe41a('0x54')]['id']}})[_0xe41a('0x24')](handleEntityNotFound(_0x38bd80,null))[_0xe41a('0x24')](removeEntity(_0x38bd80,null))[_0xe41a('0x44')](handleError(_0x38bd80,null));};
\ No newline at end of file
index cebbbbd..248a315 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x326f=['tools_pauses','lodash','api','moment','bluebird','request-promise','path','rimraf','../../config/environment','./pause.attributes','exports','define','Pause'];(function(_0x27bead,_0x47bb79){var _0x16b35b=function(_0x18a736){while(--_0x18a736){_0x27bead['push'](_0x27bead['shift']());}};_0x16b35b(++_0x47bb79);}(_0x326f,0xd1));var _0xf326=function(_0x1be448,_0xe0203a){_0x1be448=_0x1be448-0x0;var _0x3e0ed4=_0x326f[_0x1be448];return _0x3e0ed4;};'use strict';var _=require(_0xf326('0x0'));var util=require('util');var logger=require('../../config/logger')(_0xf326('0x1'));var moment=require(_0xf326('0x2'));var BPromise=require(_0xf326('0x3'));var rp=require(_0xf326('0x4'));var fs=require('fs');var path=require(_0xf326('0x5'));var rimraf=require(_0xf326('0x6'));var config=require(_0xf326('0x7'));var attributes=require(_0xf326('0x8'));module[_0xf326('0x9')]=function(_0x3ace29,_0x4c2249){return _0x3ace29[_0xf326('0xa')](_0xf326('0xb'),attributes,{'tableName':_0xf326('0xc'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xf494=['../../config/logger','moment','bluebird','request-promise','path','rimraf','../../config/environment','./pause.attributes','exports','define','lodash','util'];(function(_0x1d154b,_0x5297fd){var _0xbe73c7=function(_0x38bc24){while(--_0x38bc24){_0x1d154b['push'](_0x1d154b['shift']());}};_0xbe73c7(++_0x5297fd);}(_0xf494,0x1c6));var _0x4f49=function(_0x34b35b,_0x4bd1f9){_0x34b35b=_0x34b35b-0x0;var _0x4929d4=_0xf494[_0x34b35b];return _0x4929d4;};'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')]('Pause',attributes,{'tableName':'tools_pauses','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index bcf8bd6..2f96621 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb10b=['catch','lodash','moment','bluebird','randomstring','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','http','request','then','info','Pause,\x20%s,\x20%s','Pause,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','message','result','ShowPause','Pause','find','options','raw','where','attributes','map','include','model','debug'];(function(_0x3874d5,_0x14cf07){var _0x15304e=function(_0x23d089){while(--_0x23d089){_0x3874d5['push'](_0x3874d5['shift']());}};_0x15304e(++_0x14cf07);}(_0xb10b,0x12a));var _0xbb10=function(_0x4fe5b5,_0x41efab){_0x4fe5b5=_0x4fe5b5-0x0;var _0x221fbe=_0xb10b[_0x4fe5b5];return _0x221fbe;};'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')]({'raw':_0x378da8['options']?_0x378da8[_0xbb10('0x18')][_0xbb10('0x19')]===undefined?!![]:![]:!![],'where':_0x378da8[_0xbb10('0x18')]?_0x378da8[_0xbb10('0x18')][_0xbb10('0x1a')]||null:null,'attributes':_0x378da8[_0xbb10('0x18')]?_0x378da8['options'][_0xbb10('0x1b')]||null:null,'include':_0x378da8[_0xbb10('0x18')]?_0x378da8['options']['include']?_[_0xbb10('0x1c')](_0x378da8[_0xbb10('0x18')][_0xbb10('0x1d')],function(_0x317da4){return{'model':db[_0x317da4[_0xbb10('0x1e')]],'as':_0x317da4['as'],'attributes':_0x317da4[_0xbb10('0x1b')],'include':_0x317da4[_0xbb10('0x1d')]?_[_0xbb10('0x1c')](_0x317da4[_0xbb10('0x1d')],function(_0x395404){return{'model':db[_0x395404[_0xbb10('0x1e')]],'as':_0x395404['as'],'attributes':_0x395404[_0xbb10('0x1b')],'include':_0x395404['include']?_['map'](_0x395404['include'],function(_0xc93a04){return{'model':db[_0xc93a04[_0xbb10('0x1e')]],'as':_0xc93a04['as'],'attributes':_0xc93a04[_0xbb10('0x1b')]};}):[]};}):[]};}):[]:[]})['then'](function(_0x2fdde9){logger[_0xbb10('0xd')](_0xbb10('0x15'),_0x378da8);logger[_0xbb10('0x1f')](_0xbb10('0x15'),_0x378da8,JSON[_0xbb10('0x11')](_0x2fdde9));_0x575cca(_0x2fdde9);})[_0xbb10('0x20')](function(_0x4aabb9){logger[_0xbb10('0x12')](_0xbb10('0x15'),_0x4aabb9[_0xbb10('0x13')],_0x378da8);_0x30efc6(_0x1682a4[_0xbb10('0x12')](0x1f4,_0x4aabb9[_0xbb10('0x13')]));});});};
\ No newline at end of file
+var _0xb10b=['catch','lodash','moment','bluebird','randomstring','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','http','request','then','info','Pause,\x20%s,\x20%s','Pause,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','message','result','ShowPause','Pause','find','options','raw','where','attributes','map','include','model','debug'];(function(_0x564116,_0xddb5ab){var _0x244c2e=function(_0x362b9f){while(--_0x362b9f){_0x564116['push'](_0x564116['shift']());}};_0x244c2e(++_0xddb5ab);}(_0xb10b,0x12a));var _0xbb10=function(_0x292102,_0x427efa){_0x292102=_0x292102-0x0;var _0x54c775=_0xb10b[_0x292102];return _0x54c775;};'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')]({'raw':_0x378da8['options']?_0x378da8[_0xbb10('0x18')][_0xbb10('0x19')]===undefined?!![]:![]:!![],'where':_0x378da8[_0xbb10('0x18')]?_0x378da8[_0xbb10('0x18')][_0xbb10('0x1a')]||null:null,'attributes':_0x378da8[_0xbb10('0x18')]?_0x378da8['options'][_0xbb10('0x1b')]||null:null,'include':_0x378da8[_0xbb10('0x18')]?_0x378da8['options']['include']?_[_0xbb10('0x1c')](_0x378da8[_0xbb10('0x18')][_0xbb10('0x1d')],function(_0x317da4){return{'model':db[_0x317da4[_0xbb10('0x1e')]],'as':_0x317da4['as'],'attributes':_0x317da4[_0xbb10('0x1b')],'include':_0x317da4[_0xbb10('0x1d')]?_[_0xbb10('0x1c')](_0x317da4[_0xbb10('0x1d')],function(_0x395404){return{'model':db[_0x395404[_0xbb10('0x1e')]],'as':_0x395404['as'],'attributes':_0x395404[_0xbb10('0x1b')],'include':_0x395404['include']?_['map'](_0x395404['include'],function(_0xc93a04){return{'model':db[_0xc93a04[_0xbb10('0x1e')]],'as':_0xc93a04['as'],'attributes':_0xc93a04[_0xbb10('0x1b')]};}):[]};}):[]};}):[]:[]})['then'](function(_0x2fdde9){logger[_0xbb10('0xd')](_0xbb10('0x15'),_0x378da8);logger[_0xbb10('0x1f')](_0xbb10('0x15'),_0x378da8,JSON[_0xbb10('0x11')](_0x2fdde9));_0x575cca(_0x2fdde9);})[_0xbb10('0x20')](function(_0x4aabb9){logger[_0xbb10('0x12')](_0xbb10('0x15'),_0x4aabb9[_0xbb10('0x13')],_0x378da8);_0x30efc6(_0x1682a4[_0xbb10('0x12')](0x1f4,_0x4aabb9[_0xbb10('0x13')]));});});};
\ No newline at end of file
index 5c0ca2b..b75f972 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x008c=['/:id','/:id/download','join','root','server/files/plugins','originalname','format','basename','extname','now','single','file','upload','post','update','multer','util','path','connect-timeout','express','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./plugin.controller','get','isAuthenticated','index','webhookGet'];(function(_0x2dfb6c,_0x36edf6){var _0x1b324a=function(_0x270242){while(--_0x270242){_0x2dfb6c['push'](_0x2dfb6c['shift']());}};_0x1b324a(++_0x36edf6);}(_0x008c,0x188));var _0xc008=function(_0x5b64a1,_0x2ec810){_0x5b64a1=_0x5b64a1-0x0;var _0x4b6f55=_0x008c[_0x5b64a1];return _0x4b6f55;};'use strict';var multer=require(_0xc008('0x0'));var util=require(_0xc008('0x1'));var path=require(_0xc008('0x2'));var timeout=require(_0xc008('0x3'));var express=require(_0xc008('0x4'));var router=express['Router']();var fs_extra=require(_0xc008('0x5'));var auth=require(_0xc008('0x6'));var interaction=require(_0xc008('0x7'));var config=require(_0xc008('0x8'));var controller=require(_0xc008('0x9'));router[_0xc008('0xa')]('/',auth[_0xc008('0xb')](),controller[_0xc008('0xc')]);router[_0xc008('0xa')]('/webhook',controller[_0xc008('0xd')]);router['get'](_0xc008('0xe'),auth['isAuthenticated'](),controller['show']);router[_0xc008('0xa')](_0xc008('0xf'),auth['isAuthenticated'](),controller['download']);var upload=multer({'storage':multer['diskStorage']({'destination':function(_0x1eacfa,_0xc881aa,_0x5b2004){_0x5b2004(null,path[_0xc008('0x10')](config[_0xc008('0x11')],_0xc008('0x12')));},'filename':function(_0x2a5b4e,_0x9ffa93,_0x1819c6){_0x9ffa93[_0xc008('0x13')]=_0x9ffa93['originalname']['replace'](/[+@&\/\\#,+()$~%'":*?<>{}\s\\|]/g,'-');_0x1819c6(null,util[_0xc008('0x14')]('%s-%s%s',path[_0xc008('0x15')](_0x9ffa93[_0xc008('0x13')],path[_0xc008('0x16')](_0x9ffa93[_0xc008('0x13')])),Date[_0xc008('0x17')](),path['extname'](_0x9ffa93['originalname'])));}})});router['post']('/',upload[_0xc008('0x18')](_0xc008('0x19')),controller[_0xc008('0x1a')]);router[_0xc008('0x1b')]('/webhook',controller['webhookPost']);router['put']('/:id',auth[_0xc008('0xb')](),controller[_0xc008('0x1c')]);router['delete'](_0xc008('0xe'),auth['isAuthenticated'](),controller['delete']);module['exports']=router;
\ No newline at end of file
+var _0x222f=['index','webhookGet','isAuthenticated','show','/:id/download','download','join','server/files/plugins','originalname','replace','format','extname','now','post','single','file','upload','/webhook','webhookPost','put','/:id','update','delete','exports','multer','util','path','connect-timeout','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','get'];(function(_0x393d69,_0x3a8c83){var _0x3cee37=function(_0x462682){while(--_0x462682){_0x393d69['push'](_0x393d69['shift']());}};_0x3cee37(++_0x3a8c83);}(_0x222f,0x1a4));var _0xf222=function(_0x3b4455,_0x3e4395){_0x3b4455=_0x3b4455-0x0;var _0x34dd09=_0x222f[_0x3b4455];return _0x34dd09;};'use strict';var multer=require(_0xf222('0x0'));var util=require(_0xf222('0x1'));var path=require(_0xf222('0x2'));var timeout=require(_0xf222('0x3'));var express=require('express');var router=express['Router']();var fs_extra=require(_0xf222('0x4'));var auth=require(_0xf222('0x5'));var interaction=require(_0xf222('0x6'));var config=require(_0xf222('0x7'));var controller=require('./plugin.controller');router[_0xf222('0x8')]('/',auth['isAuthenticated'](),controller[_0xf222('0x9')]);router[_0xf222('0x8')]('/webhook',controller[_0xf222('0xa')]);router[_0xf222('0x8')]('/:id',auth[_0xf222('0xb')](),controller[_0xf222('0xc')]);router[_0xf222('0x8')](_0xf222('0xd'),auth[_0xf222('0xb')](),controller[_0xf222('0xe')]);var upload=multer({'storage':multer['diskStorage']({'destination':function(_0x2e29ad,_0x405080,_0x226dbd){_0x226dbd(null,path[_0xf222('0xf')](config['root'],_0xf222('0x10')));},'filename':function(_0x2850c7,_0x2a6965,_0x3d3d29){_0x2a6965[_0xf222('0x11')]=_0x2a6965[_0xf222('0x11')][_0xf222('0x12')](/[+@&\/\\#,+()$~%'":*?<>{}\s\\|]/g,'-');_0x3d3d29(null,util[_0xf222('0x13')]('%s-%s%s',path['basename'](_0x2a6965[_0xf222('0x11')],path[_0xf222('0x14')](_0x2a6965['originalname'])),Date[_0xf222('0x15')](),path[_0xf222('0x14')](_0x2a6965[_0xf222('0x11')])));}})});router[_0xf222('0x16')]('/',upload[_0xf222('0x17')](_0xf222('0x18')),controller[_0xf222('0x19')]);router['post'](_0xf222('0x1a'),controller[_0xf222('0x1b')]);router[_0xf222('0x1c')](_0xf222('0x1d'),auth[_0xf222('0xb')](),controller[_0xf222('0x1e')]);router[_0xf222('0x1f')]('/:id',auth[_0xf222('0xb')](),controller[_0xf222('0x1f')]);module[_0xf222('0x20')]=router;
\ No newline at end of file
index a510a73..237dc7b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa949=['TEXT','STRING','The\x20physical\x20path\x20where\x20the\x20plugin\x20is\x20stored.','BOOLEAN','Indicates\x20whether\x20the\x20plugin\x20is\x20installed.\x20Updated\x20when\x20the\x20plugin\x20is\x20installed/uninstalled.','adminOnly','agentOnly','never','always','Indicates\x20whether\x20to\x20display\x20the\x20plugin\x20in\x20the\x20sidebar.','sequelize','exports','ENUM','html','script'];(function(_0x18f77c,_0x42b4ed){var _0x5bc329=function(_0x2b804f){while(--_0x2b804f){_0x18f77c['push'](_0x18f77c['shift']());}};_0x5bc329(++_0x42b4ed);}(_0xa949,0x1ea));var _0x9a94=function(_0x2bc1f1,_0x4975f8){_0x2bc1f1=_0x2bc1f1-0x0;var _0x5774d7=_0xa949[_0x2bc1f1];return _0x5774d7;};'use strict';var Sequelize=require(_0x9a94('0x0'));module[_0x9a94('0x1')]={'name':{'type':Sequelize['STRING']},'type':{'type':Sequelize[_0x9a94('0x2')](_0x9a94('0x3'),_0x9a94('0x4'))},'description':{'type':Sequelize[_0x9a94('0x5')]},'version':{'type':Sequelize[_0x9a94('0x5')]},'path':{'type':Sequelize[_0x9a94('0x6')],'comment':_0x9a94('0x7')},'active':{'type':Sequelize[_0x9a94('0x8')],'defaultValue':0x0,'comment':_0x9a94('0x9')},'sidebar':{'type':Sequelize['ENUM'](_0x9a94('0xa'),_0x9a94('0xb'),'always',_0x9a94('0xc')),'defaultValue':_0x9a94('0xd'),'comment':_0x9a94('0xe')},'icon':{'type':Sequelize[_0x9a94('0x6')]},'adminUrl':{'type':Sequelize[_0x9a94('0x6')]},'agentUrl':{'type':Sequelize[_0x9a94('0x6')]},'scriptName':{'type':Sequelize[_0x9a94('0x6')]},'scriptPath':{'type':Sequelize[_0x9a94('0x6')]}};
\ No newline at end of file
+var _0x5159=['Indicates\x20whether\x20the\x20plugin\x20is\x20installed.\x20Updated\x20when\x20the\x20plugin\x20is\x20installed/uninstalled.','adminOnly','agentOnly','always','never','Indicates\x20whether\x20to\x20display\x20the\x20plugin\x20in\x20the\x20sidebar.','STRING','ENUM','html','script','TEXT','The\x20physical\x20path\x20where\x20the\x20plugin\x20is\x20stored.','BOOLEAN'];(function(_0x37170e,_0x28c7ae){var _0x4820dd=function(_0x146ba1){while(--_0x146ba1){_0x37170e['push'](_0x37170e['shift']());}};_0x4820dd(++_0x28c7ae);}(_0x5159,0xfd));var _0x9515=function(_0x211402,_0xc34f8e){_0x211402=_0x211402-0x0;var _0xacd9d2=_0x5159[_0x211402];return _0xacd9d2;};'use strict';var Sequelize=require('sequelize');module['exports']={'name':{'type':Sequelize[_0x9515('0x0')]},'type':{'type':Sequelize[_0x9515('0x1')](_0x9515('0x2'),_0x9515('0x3'))},'description':{'type':Sequelize[_0x9515('0x4')]},'version':{'type':Sequelize['TEXT']},'path':{'type':Sequelize[_0x9515('0x0')],'comment':_0x9515('0x5')},'active':{'type':Sequelize[_0x9515('0x6')],'defaultValue':0x0,'comment':_0x9515('0x7')},'sidebar':{'type':Sequelize[_0x9515('0x1')](_0x9515('0x8'),_0x9515('0x9'),_0x9515('0xa'),_0x9515('0xb')),'defaultValue':'always','comment':_0x9515('0xc')},'icon':{'type':Sequelize[_0x9515('0x0')]},'adminUrl':{'type':Sequelize[_0x9515('0x0')]},'agentUrl':{'type':Sequelize[_0x9515('0x0')]},'scriptName':{'type':Sequelize[_0x9515('0x0')]},'scriptPath':{'type':Sequelize[_0x9515('0x0')]}};
\ No newline at end of file
index 93abd13..11efec1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x04c2=['%s.zip','basename','createWriteStream','zip','warning','code','ENOENT','Sequelize','Error','Error\x20while\x20generating\x20the\x20zip\x20archive','pipe','**/*','root','node_modules/**/*','attachments/**/*','finalize','close','Plugin\x20not\x20found','unlinkSync','info','Download\x20completed','Temporary\x20file\x20removed','upload','filename','extname','file','Plugin\x20upload\x20destination:\x20%s','chmodSync','0777','readdirSync','Invalid\x20plugin\x20structure','lstatSync','isFile','isDirectory','some','manifest.json','Plugin\x20manifest\x20missing','readFileSync','parse','Invalid\x20manifest:\x20name\x20missing','Invalid\x20manifest:\x20type\x20missing','version','Invalid\x20manifest:\x20version\x20not\x20specified','Invalid\x20manifest:\x20parameters\x20missing','parameters','views','Invalid\x20manifest:\x20views\x20missing','agent','Invalid\x20manifest:\x20no\x20view\x20specified','script','scriptName','Invalid\x20manifest:\x20script\x20name\x20missing','Invalid\x20manifest:\x20script\x20path\x20missing','Invalid\x20manifest:\x20invalid\x20type','description','sidebar','always','icon','icon-apps','html','admin','test','plugins','Warning:\x20admin\x20view\x20not\x20specified','scriptPath','create','body','userProfileId','Unable\x20to\x20retrieve\x20the\x20current\x20user','UserProfileSection','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','Zip\x20archive\x20removed','Extracted\x20folder\x20removed','delete','dirname','webhookGet','resolve','\x27PATH\x27\x20parameter\x20not\x20specified','port','\x27PORT\x27\x20parameter\x20not\x20specified','hostname','http://localhost:','json','encoding','method','%s%s','headers','content-length','content-type','endsWith','statusCode','webhookPost','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','to-csv','ejs','squel','crypto','desk.js','querystring','papaparse','extract-zip','archiver','../../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','sendStatus','status','undefined','count','set','reject','update','then','destroy','Plugins','UserProfileResource','error','stack','name','send','index','map','Plugin','rawAttributes','type','query','keys','intersection','attributes','model','fields','length','nolimit','limit','offset','order','sort','where','filters','pick','filter','merge','VIRTUAL','options','includeAll','include','rows','show','params','find','catch','download','path','join','server/files/plugins','format'];(function(_0x591083,_0x2d6e60){var _0x395018=function(_0x389dae){while(--_0x389dae){_0x591083['push'](_0x591083['shift']());}};_0x395018(++_0x2d6e60);}(_0x04c2,0x1b3));var _0x204c=function(_0x18c7b9,_0x455dfc){_0x18c7b9=_0x18c7b9-0x0;var _0x5832e5=_0x04c2[_0x18c7b9];return _0x5832e5;};'use strict';var emlformat=require(_0x204c('0x0'));var rimraf=require(_0x204c('0x1'));var zipdir=require(_0x204c('0x2'));var jsonpatch=require(_0x204c('0x3'));var rp=require(_0x204c('0x4'));var moment=require(_0x204c('0x5'));var BPromise=require('bluebird');var Mustache=require('mustache');var util=require('util');var path=require('path');var sox=require('sox');var csv=require(_0x204c('0x6'));var ejs=require(_0x204c('0x7'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require('lodash');var squel=require(_0x204c('0x8'));var crypto=require(_0x204c('0x9'));var jsforce=require('jsforce');var deskjs=require(_0x204c('0xa'));var toCsv=require(_0x204c('0x6'));var querystring=require(_0x204c('0xb'));var Papa=require(_0x204c('0xc'));var extract=require(_0x204c('0xd'));var rimraf=require(_0x204c('0x1'));var archiver=require(_0x204c('0xe'));var Redis=require('ioredis');var authService=require(_0x204c('0xf'));var qs=require(_0x204c('0x10'));var as=require(_0x204c('0x11'));var hardwareService=require(_0x204c('0x12'));var logger=require(_0x204c('0x13'))(_0x204c('0x14'));var utils=require(_0x204c('0x15'));var config=require(_0x204c('0x16'));var licenseUtil=require('../../config/license/util');var db=require(_0x204c('0x17'))['db'];config[_0x204c('0x18')]=_['defaults'](config[_0x204c('0x18')],{'host':_0x204c('0x19'),'port':0x18eb});var socket=require(_0x204c('0x1a'))(new Redis(config[_0x204c('0x18')]));require('./plugin.socket')['register'](socket);function respondWithStatusCode(_0x80a0c8,_0x16358c){_0x16358c=_0x16358c||0xcc;return function(_0x36ab4a){if(_0x36ab4a){return _0x80a0c8[_0x204c('0x1b')](_0x16358c);}return _0x80a0c8[_0x204c('0x1c')](_0x16358c)['end']();};}function respondWithResult(_0x421b6b,_0xe4e9b9){_0xe4e9b9=_0xe4e9b9||0xc8;return function(_0x24daef){if(_0x24daef){return _0x421b6b[_0x204c('0x1c')](_0xe4e9b9)['json'](_0x24daef);}};}function respondWithFilteredResult(_0x54eaa7,_0xb230e6){return function(_0xf2fd1f){if(_0xf2fd1f){var _0x259b1b=typeof _0xb230e6['offset']===_0x204c('0x1d')&&typeof _0xb230e6['limit']===_0x204c('0x1d');var _0x54f8b3=_0xf2fd1f[_0x204c('0x1e')];var _0x3c5dae=_0x259b1b?0x0:_0xb230e6['offset'];var _0x14bbe6=_0x259b1b?_0xf2fd1f[_0x204c('0x1e')]:_0xb230e6['offset']+_0xb230e6['limit'];var _0x4d7b68;if(_0x14bbe6>=_0x54f8b3){_0x14bbe6=_0x54f8b3;_0x4d7b68=0xc8;}else{_0x4d7b68=0xce;}_0x54eaa7[_0x204c('0x1c')](_0x4d7b68);return _0x54eaa7[_0x204c('0x1f')]('Content-Range',_0x3c5dae+'-'+_0x14bbe6+'/'+_0x54f8b3)['json'](_0xf2fd1f);}return null;};}function patchUpdates(_0x4bda1e){return function(_0x302013){try{jsonpatch['apply'](_0x302013,_0x4bda1e,!![]);}catch(_0x181959){return BPromise[_0x204c('0x20')](_0x181959);}return _0x302013['save']();};}function saveUpdates(_0xd254ce,_0x2c8dc5){return function(_0x4c3116){if(_0x4c3116){return _0x4c3116[_0x204c('0x21')](_0xd254ce)[_0x204c('0x22')](function(_0x4b9386){return _0x4b9386;});}return null;};}function removeEntity(_0x470a94,_0x1a35b3){return function(_0x504dda){if(_0x504dda){return _0x504dda[_0x204c('0x23')]()[_0x204c('0x22')](function(){var _0x4f4ffc=_0x504dda['get']({'plain':!![]});var _0x58dc17=_0x204c('0x24');return db[_0x204c('0x25')][_0x204c('0x23')]({'where':{'type':_0x58dc17,'resourceId':_0x4f4ffc['id']}})['then'](function(){return _0x504dda;});})['then'](function(){_0x470a94[_0x204c('0x1c')](0xcc)['end']();});}};}function handleEntityNotFound(_0x5d2aaa,_0x50fa67){return function(_0xd31f9a){if(!_0xd31f9a){_0x5d2aaa['sendStatus'](0x194);}return _0xd31f9a;};}function handleError(_0x546b23,_0x181faf){_0x181faf=_0x181faf||0x1f4;return function(_0x38d574){logger[_0x204c('0x26')](_0x38d574[_0x204c('0x27')]);if(_0x38d574[_0x204c('0x28')]){delete _0x38d574[_0x204c('0x28')];}_0x546b23[_0x204c('0x1c')](_0x181faf)[_0x204c('0x29')](_0x38d574);};}exports[_0x204c('0x2a')]=function(_0x42e98f,_0xf13a5){var _0x57d925={},_0x879737={},_0x4237ad={'count':0x0,'rows':[]};var _0x336ec9=_[_0x204c('0x2b')](db[_0x204c('0x2c')][_0x204c('0x2d')],function(_0x3f6844){return{'name':_0x3f6844['fieldName'],'type':_0x3f6844[_0x204c('0x2e')]['key']};});_0x879737['model']=_[_0x204c('0x2b')](_0x336ec9,_0x204c('0x28'));_0x879737[_0x204c('0x2f')]=_[_0x204c('0x30')](_0x42e98f[_0x204c('0x2f')]);_0x879737['filters']=_[_0x204c('0x31')](_0x879737['model'],_0x879737['query']);_0x57d925[_0x204c('0x32')]=_[_0x204c('0x31')](_0x879737[_0x204c('0x33')],qs[_0x204c('0x34')](_0x42e98f[_0x204c('0x2f')][_0x204c('0x34')]));_0x57d925['attributes']=_0x57d925['attributes'][_0x204c('0x35')]?_0x57d925[_0x204c('0x32')]:_0x879737[_0x204c('0x33')];if(!_0x42e98f['query']['hasOwnProperty'](_0x204c('0x36'))){_0x57d925[_0x204c('0x37')]=qs[_0x204c('0x37')](_0x42e98f['query'][_0x204c('0x37')]);_0x57d925[_0x204c('0x38')]=qs[_0x204c('0x38')](_0x42e98f['query'][_0x204c('0x38')]);}_0x57d925[_0x204c('0x39')]=qs['sort'](_0x42e98f[_0x204c('0x2f')][_0x204c('0x3a')]);_0x57d925[_0x204c('0x3b')]=qs[_0x204c('0x3c')](_[_0x204c('0x3d')](_0x42e98f[_0x204c('0x2f')],_0x879737[_0x204c('0x3c')]),_0x336ec9);if(_0x42e98f[_0x204c('0x2f')][_0x204c('0x3e')]){_0x57d925[_0x204c('0x3b')]=_[_0x204c('0x3f')](_0x57d925[_0x204c('0x3b')],{'$or':_[_0x204c('0x2b')](_0x336ec9,function(_0x21016b){if(_0x21016b[_0x204c('0x2e')]!==_0x204c('0x40')){var _0x30a000={};_0x30a000[_0x21016b[_0x204c('0x28')]]={'$like':'%'+_0x42e98f['query'][_0x204c('0x3e')]+'%'};return _0x30a000;}})});}_0x57d925=_[_0x204c('0x3f')]({},_0x57d925,_0x42e98f[_0x204c('0x41')]);var _0xc8f204={'where':_0x57d925[_0x204c('0x3b')]};return db[_0x204c('0x2c')][_0x204c('0x1e')](_0xc8f204)[_0x204c('0x22')](function(_0x5581cc){_0x4237ad['count']=_0x5581cc;if(_0x42e98f[_0x204c('0x2f')][_0x204c('0x42')]){_0x57d925[_0x204c('0x43')]=[{'all':!![]}];}return db[_0x204c('0x2c')]['findAll'](_0x57d925);})[_0x204c('0x22')](function(_0x59b5c8){_0x4237ad[_0x204c('0x44')]=_0x59b5c8;return _0x4237ad;})[_0x204c('0x22')](respondWithFilteredResult(_0xf13a5,_0x57d925))['catch'](handleError(_0xf13a5,null));};exports[_0x204c('0x45')]=function(_0x1bc0e4,_0x585bc){var _0x1bbe87={'raw':!![],'where':{'id':_0x1bc0e4[_0x204c('0x46')]['id']}},_0x1aa7df={};_0x1aa7df[_0x204c('0x33')]=_[_0x204c('0x30')](db[_0x204c('0x2c')][_0x204c('0x2d')]);_0x1aa7df[_0x204c('0x2f')]=_[_0x204c('0x30')](_0x1bc0e4[_0x204c('0x2f')]);_0x1aa7df[_0x204c('0x3c')]=_[_0x204c('0x31')](_0x1aa7df[_0x204c('0x33')],_0x1aa7df[_0x204c('0x2f')]);_0x1bbe87[_0x204c('0x32')]=_[_0x204c('0x31')](_0x1aa7df[_0x204c('0x33')],qs['fields'](_0x1bc0e4[_0x204c('0x2f')]['fields']));_0x1bbe87[_0x204c('0x32')]=_0x1bbe87[_0x204c('0x32')][_0x204c('0x35')]?_0x1bbe87['attributes']:_0x1aa7df[_0x204c('0x33')];if(_0x1bc0e4[_0x204c('0x2f')][_0x204c('0x42')]){_0x1bbe87[_0x204c('0x43')]=[{'all':!![]}];}_0x1bbe87=_[_0x204c('0x3f')]({},_0x1bbe87,_0x1bc0e4[_0x204c('0x41')]);return db[_0x204c('0x2c')][_0x204c('0x47')](_0x1bbe87)[_0x204c('0x22')](handleEntityNotFound(_0x585bc,null))[_0x204c('0x22')](respondWithResult(_0x585bc,null))[_0x204c('0x48')](handleError(_0x585bc,null));};exports[_0x204c('0x49')]=function(_0x2a2abd,_0x4c2d47,_0x3030bf){return db[_0x204c('0x2c')][_0x204c('0x47')]({'where':{'id':_0x2a2abd[_0x204c('0x46')]['id']},'attributes':[_0x204c('0x28'),_0x204c('0x4a')],'raw':!![]})[_0x204c('0x22')](handleEntityNotFound(_0x4c2d47,null))[_0x204c('0x22')](function(_0x20973c){if(_0x20973c){var _0x16be3f=path[_0x204c('0x4b')](config['root'],_0x204c('0x4c'),util[_0x204c('0x4d')](_0x204c('0x4e'),path[_0x204c('0x4f')](_0x20973c['path'])));var _0x9a1aba=fs[_0x204c('0x50')](_0x16be3f);var _0x2cb3bf=archiver(_0x204c('0x51'),{'zlib':{'level':0x9}});_0x2cb3bf['on'](_0x204c('0x52'),function(_0xa1f6a0){if(_0xa1f6a0[_0x204c('0x53')]===_0x204c('0x54')){logger[_0x204c('0x26')](_0xa1f6a0);}else{throw new db[(_0x204c('0x55'))][(_0x204c('0x56'))](_0x204c('0x57'));}});_0x2cb3bf['on'](_0x204c('0x26'),function(_0x454f60){throw new db[(_0x204c('0x55'))]['Error'](_0x204c('0x57'));});_0x2cb3bf[_0x204c('0x58')](_0x9a1aba);_0x2cb3bf['glob'](_0x204c('0x59'),{'cwd':path[_0x204c('0x4b')](config[_0x204c('0x5a')],_0x204c('0x4c'),path['dirname'](_0x20973c['path'])),'ignore':[path['join'](path[_0x204c('0x4f')](_0x20973c['path']),_0x204c('0x5b')),path['join'](path['basename'](_0x20973c['path']),_0x204c('0x5c'))],'nodir':!![]})[_0x204c('0x5d')]();_0x9a1aba['on'](_0x204c('0x5e'),function(){if(!fs['existsSync'](_0x16be3f)){throw new db[(_0x204c('0x55'))][(_0x204c('0x56'))](_0x204c('0x5f'));}return _0x4c2d47[_0x204c('0x49')](_0x16be3f,util[_0x204c('0x4d')](_0x204c('0x4e'),path[_0x204c('0x4f')](_0x20973c[_0x204c('0x4a')])),function(_0x4c0dc1){if(_0x4c0dc1){throw new db[(_0x204c('0x55'))][(_0x204c('0x56'))]('Error\x20while\x20downloading\x20the\x20plugin');}fs[_0x204c('0x60')](_0x16be3f);logger[_0x204c('0x61')](_0x204c('0x62'));logger[_0x204c('0x61')](_0x204c('0x63'));});});}return null;})[_0x204c('0x48')](handleError(_0x4c2d47,null));};exports[_0x204c('0x64')]=function(_0x355b62,_0x4266b3,_0x422322){var _0x2eef97=path[_0x204c('0x4f')](_0x355b62['file'][_0x204c('0x65')],path[_0x204c('0x66')](_0x355b62['file'][_0x204c('0x65')]));var _0x67205e=path[_0x204c('0x4b')](config['root'],_0x204c('0x4c'),_0x355b62[_0x204c('0x67')]['filename']);var _0x22ffab=path[_0x204c('0x4b')](config[_0x204c('0x5a')],_0x204c('0x4c'),_0x2eef97);logger[_0x204c('0x61')]('Plugin\x20upload\x20filepath:\x20%s',_0x67205e);logger[_0x204c('0x61')](_0x204c('0x68'),_0x22ffab);try{fs[_0x204c('0x69')](_0x67205e,parseInt(_0x204c('0x6a'),0x8));extract(_0x67205e,{'dir':_0x22ffab},function(_0xc24e24){if(_0xc24e24){logger[_0x204c('0x26')](_0xc24e24);handleError(_0xc24e24,!![]);};var _0x1b440d=fs[_0x204c('0x6b')](_0x22ffab);if(_0x1b440d[_0x204c('0x35')]>0x1){removeReferences(_0x67205e,_0x22ffab);logger[_0x204c('0x26')](_0x204c('0x6c'));return _0x422322(new Error(_0x204c('0x6c')));}var _0x436013=fs[_0x204c('0x6d')](path[_0x204c('0x4b')](_0x22ffab,_0x1b440d[0x0]));if(_0x436013[_0x204c('0x6e')]()){removeReferences(_0x67205e,_0x22ffab);logger[_0x204c('0x26')](_0x204c('0x6c'));return _0x422322(new Error(_0x204c('0x6c')));}if(_0x436013[_0x204c('0x6f')]()){var _0x537855=fs['readdirSync'](path[_0x204c('0x4b')](_0x22ffab,_0x1b440d[0x0]));if(_0x537855['length']===0x0){removeReferences(_0x67205e,_0x22ffab);logger[_0x204c('0x26')](_0x204c('0x6c'));return _0x422322(new Error(_0x204c('0x6c')));}var _0x9960d9=_0x537855[_0x204c('0x70')](function(_0xdb75bd){return _0xdb75bd===_0x204c('0x71');});if(!_0x9960d9){return _0x422322(new Error(_0x204c('0x72')));}var _0x49b724=fs[_0x204c('0x73')](path[_0x204c('0x4b')](_0x22ffab,_0x1b440d[0x0],_0x204c('0x71')));var _0x4edb5c=JSON[_0x204c('0x74')](_0x49b724);if(_0x204c('0x1d')==typeof _0x4edb5c[_0x204c('0x28')]){return _0x422322(new Error(_0x204c('0x75')));}if(_0x204c('0x1d')==typeof _0x4edb5c['type']){return _0x422322(new Error(_0x204c('0x76')));}if(_0x204c('0x1d')==typeof _0x4edb5c[_0x204c('0x77')]){return _0x422322(new Error(_0x204c('0x78')));}if(_0x204c('0x1d')==typeof _0x4edb5c['parameters']){return _0x422322(new Error(_0x204c('0x79')));}if(_0x4edb5c['type']==='html'){if(_0x204c('0x1d')==typeof _0x4edb5c[_0x204c('0x7a')][_0x204c('0x7b')]){return _0x422322(new Error(_0x204c('0x7c')));}if(_0x204c('0x1d')==typeof _0x4edb5c[_0x204c('0x7a')][_0x204c('0x7b')]['admin']&&_0x204c('0x1d')==typeof _0x4edb5c[_0x204c('0x7a')][_0x204c('0x7b')][_0x204c('0x7d')]){return _0x422322(new Error(_0x204c('0x7e')));}}else if(_0x4edb5c[_0x204c('0x2e')]===_0x204c('0x7f')){if(_0x204c('0x1d')==typeof _0x4edb5c['parameters'][_0x204c('0x80')]){return _0x422322(new Error(_0x204c('0x81')));}if(_0x204c('0x1d')==typeof _0x4edb5c[_0x204c('0x7a')]['scriptPath']){return _0x422322(new Error(_0x204c('0x82')));}}else{return _0x422322(new Error(_0x204c('0x83')));}var _0x38e988=_0x4edb5c['name'];var _0x4d311a=_0x4edb5c[_0x204c('0x84')];var _0x4c452b=_0x4edb5c['type'];var _0xe53cde=_0x4edb5c[_0x204c('0x85')]?_0x4edb5c[_0x204c('0x85')]:_0x204c('0x86');var _0x43e956=_0x4edb5c[_0x204c('0x87')]?_0x4edb5c['icon']:_0x204c('0x88');var _0x5ee15f='';var _0x1ef0f6='';var _0x1e39ca='';var _0x31876d='';var _0x49c57d=_0x4edb5c[_0x204c('0x77')];if(_0x4c452b===_0x204c('0x89')){if(_0x204c('0x1d')!=typeof _0x4edb5c[_0x204c('0x7a')]['views'][_0x204c('0x8a')]){var _0x2cdefd=_0x4edb5c[_0x204c('0x7a')]['views'][_0x204c('0x8a')];if(!/^(f|ht)tps?:\/\//i[_0x204c('0x8b')](_0x2cdefd)){_0x5ee15f=path[_0x204c('0x4b')](_0x204c('0x8c'),_0x2eef97,_0x1b440d[0x0],_0x2cdefd);}else{_0x5ee15f=_0x2cdefd;}}else{logger['info'](_0x204c('0x8d'));}if(_0x204c('0x1d')!=typeof _0x4edb5c[_0x204c('0x7a')]['views'][_0x204c('0x7d')]){var _0x60f10c=_0x4edb5c['parameters'][_0x204c('0x7b')][_0x204c('0x7d')];if(!/^(f|ht)tps?:\/\//i[_0x204c('0x8b')](_0x60f10c)){_0x1ef0f6=path['join'](_0x204c('0x8c'),_0x2eef97,_0x1b440d[0x0],_0x60f10c);}else{_0x1ef0f6=_0x60f10c;}}else{logger[_0x204c('0x61')]('Warning:\x20agent\x20view\x20not\x20specified');}}else if(_0x4c452b==='script'){_0x1e39ca=_0x4edb5c[_0x204c('0x7a')]['scriptName'];_0x31876d=_0x4edb5c[_0x204c('0x7a')][_0x204c('0x8e')];if('undefined'!=typeof _0x4edb5c[_0x204c('0x7a')][_0x204c('0x7b')]){if('undefined'!=typeof _0x4edb5c['parameters'][_0x204c('0x7b')][_0x204c('0x8a')]){var _0x2cdefd=_0x4edb5c[_0x204c('0x7a')]['views'][_0x204c('0x8a')];if(!/^(f|ht)tps?:\/\//i[_0x204c('0x8b')](_0x2cdefd)){_0x5ee15f=path['join']('plugins',_0x2eef97,_0x1b440d[0x0],_0x2cdefd);}else{_0x5ee15f=_0x2cdefd;}}if('undefined'!=typeof _0x4edb5c[_0x204c('0x7a')][_0x204c('0x7b')][_0x204c('0x7d')]){var _0x60f10c=_0x4edb5c[_0x204c('0x7a')][_0x204c('0x7b')][_0x204c('0x7d')];if(!/^(f|ht)tps?:\/\//i['test'](_0x60f10c)){_0x1ef0f6=path[_0x204c('0x4b')](_0x204c('0x8c'),_0x2eef97,_0x1b440d[0x0],_0x60f10c);}else{_0x1ef0f6=_0x60f10c;}}}}var _0x251e47={'name':_0x38e988,'description':_0x4d311a,'path':path[_0x204c('0x4b')](_0x2eef97,_0x1b440d[0x0]),'type':_0x4c452b,'sidebar':_0xe53cde,'icon':_0x43e956,'adminUrl':_0x5ee15f,'agentUrl':_0x1ef0f6,'scriptName':_0x1e39ca,'scriptPath':_0x31876d,'version':_0x49c57d};removeReferences(_0x67205e,null);return db['Plugin'][_0x204c('0x8f')](_0x251e47)[_0x204c('0x22')](function(_0x55e2ba){var _0xd8bd64={'role':_0x355b62['body']['role'],'userProfileId':_0x355b62[_0x204c('0x90')][_0x204c('0x91')]};if(!_0xd8bd64)throw new Error(_0x204c('0x92'));if(_0xd8bd64['role']==='user'){var _0x78e5b3=_0x55e2ba['get']({'plain':!![]});return db[_0x204c('0x93')]['find']({'where':{'name':'Plugins','userProfileId':_0xd8bd64[_0x204c('0x91')]},'raw':!![]})[_0x204c('0x22')](function(_0x46d299){if(_0x46d299&&_0x46d299[_0x204c('0x94')]===0x0){return db[_0x204c('0x25')][_0x204c('0x8f')]({'name':_0x78e5b3[_0x204c('0x28')],'resourceId':_0x78e5b3['id'],'type':_0x46d299[_0x204c('0x28')],'sectionId':_0x46d299['id']},{})[_0x204c('0x22')](function(){return _0x55e2ba;});}else{return _0x55e2ba;}})[_0x204c('0x48')](function(_0x44d9cd){logger['error'](_0x204c('0x95'),_0x44d9cd);throw _0x44d9cd;});}return _0x55e2ba;})[_0x204c('0x22')](respondWithResult(_0x4266b3,null))[_0x204c('0x48')](handleError(_0x4266b3,null));}});}catch(_0x16b539){_0x4266b3[_0x204c('0x1c')](0x1f4)[_0x204c('0x29')](_0x16b539);}};function removeReferences(_0xc8cc2a,_0x9442d7){try{if(_0xc8cc2a){fs[_0x204c('0x60')](_0xc8cc2a);logger[_0x204c('0x61')](_0x204c('0x96'));}if(_0x9442d7){rimraf(_0x9442d7,function(){});logger[_0x204c('0x61')](_0x204c('0x97'));}}catch(_0x15fcd5){logger[_0x204c('0x26')](_0x15fcd5);}}exports[_0x204c('0x21')]=function(_0x1a51d7,_0x23be38,_0x21a39b){return db[_0x204c('0x2c')][_0x204c('0x47')]({'where':{'id':_0x1a51d7[_0x204c('0x46')]['id']}})['then'](handleEntityNotFound(_0x23be38,null))[_0x204c('0x22')](saveUpdates(_0x1a51d7[_0x204c('0x90')],null))[_0x204c('0x22')](respondWithResult(_0x23be38,null))['catch'](handleError(_0x23be38,null));};exports[_0x204c('0x98')]=function(_0x121c10,_0x2cd831,_0xad8afc){return db[_0x204c('0x2c')][_0x204c('0x47')]({'where':{'id':_0x121c10[_0x204c('0x46')]['id']}})[_0x204c('0x22')](function(_0x48ab55){if(_0x48ab55){return _0x48ab55[_0x204c('0x23')]();}})[_0x204c('0x22')](function(_0x2d18d4){rimraf(path['join'](config[_0x204c('0x5a')],_0x204c('0x4c'),path[_0x204c('0x99')](_0x2d18d4['path'])),function(){});return _0x2d18d4;})[_0x204c('0x22')](handleEntityNotFound(_0x2cd831,null))[_0x204c('0x22')](respondWithStatusCode(_0x2cd831,null))[_0x204c('0x48')](handleError(_0x2cd831,null));};exports[_0x204c('0x9a')]=function(_0x1bd3d9,_0x4f2cc3,_0x567fc2){return BPromise[_0x204c('0x9b')]()[_0x204c('0x22')](function(){if(!_0x1bd3d9['query'][_0x204c('0x4a')]){throw new Error(_0x204c('0x9c'));}if(!_0x1bd3d9['query'][_0x204c('0x9d')]){throw new Error(_0x204c('0x9e'));}var _0x3b5dfe=_0x1bd3d9['query'][_0x204c('0x9f')]?_0x1bd3d9[_0x204c('0x2f')][_0x204c('0x9f')]+':'+_0x1bd3d9[_0x204c('0x2f')]['port']:_0x204c('0xa0')+_0x1bd3d9['query']['port'];var _0x35dffc=_0x1bd3d9[_0x204c('0x2f')]['json']?_0x1bd3d9[_0x204c('0x2f')][_0x204c('0xa1')]:!![];var _0x36ed08=_0x1bd3d9[_0x204c('0x2f')][_0x204c('0xa2')]?_0x1bd3d9['query'][_0x204c('0xa2')]:null;var _0x4b3e49={'method':_0x1bd3d9[_0x204c('0xa3')],'uri':util[_0x204c('0x4d')](_0x204c('0xa4'),_0x3b5dfe,_0x1bd3d9[_0x204c('0x2f')]['path']),'json':_0x35dffc,'resolveWithFullResponse':!![],'encoding':_0x36ed08,'qs':_0x1bd3d9[_0x204c('0x2f')]};if(_0x1bd3d9[_0x204c('0xa5')]){_0x4b3e49[_0x204c('0xa5')]=_0x1bd3d9['headers'];if(_0x4b3e49[_0x204c('0xa5')]['content-length']){delete _0x4b3e49[_0x204c('0xa5')][_0x204c('0xa6')];}}if(_0x4b3e49['headers']['content-type']){delete _0x4b3e49[_0x204c('0xa5')][_0x204c('0xa7')];}return rp(_0x4b3e49);})['then'](function(_0x28f8e6){if(_0x28f8e6){_0x4f2cc3[_0x204c('0x1f')](_0x28f8e6['headers']);logger['info'](_0x28f8e6['body']);if(_[_0x204c('0xa8')](_0x1bd3d9[_0x204c('0x2f')][_0x204c('0x4a')],_0x204c('0x49'))&&_0x28f8e6[_0x204c('0xa9')]==0x1f4){return _0x4f2cc3[_0x204c('0x1b')](_0x28f8e6[_0x204c('0xa9')]);}else{return _0x4f2cc3[_0x204c('0x1c')](_0x28f8e6[_0x204c('0xa9')])[_0x204c('0x29')](_0x28f8e6[_0x204c('0x90')]);}}else{return _0x4f2cc3[_0x204c('0x1b')](0xc8);}})['catch'](handleError(_0x4f2cc3,null));};exports[_0x204c('0xaa')]=function(_0x4a116e,_0x360bdd,_0x4c0f03){return BPromise[_0x204c('0x9b')]()[_0x204c('0x22')](function(){if(!_0x4a116e[_0x204c('0x2f')][_0x204c('0x4a')]){throw new Error('\x27PATH\x27\x20parameter\x20not\x20specified');}if(!_0x4a116e[_0x204c('0x2f')][_0x204c('0x9d')]){throw new Error(_0x204c('0x9e'));}var _0xb45e66=_0x4a116e[_0x204c('0x2f')][_0x204c('0x9f')]?_0x4a116e[_0x204c('0x2f')][_0x204c('0x9f')]+':'+_0x4a116e[_0x204c('0x2f')][_0x204c('0x9d')]:_0x204c('0xa0')+_0x4a116e[_0x204c('0x2f')]['port'];var _0x8d6c27=_0x4a116e[_0x204c('0x2f')]['json']?_0x4a116e[_0x204c('0x2f')][_0x204c('0xa1')]:!![];var _0x46edd0=_0x4a116e[_0x204c('0x2f')][_0x204c('0xa2')]?_0x4a116e[_0x204c('0x2f')][_0x204c('0xa2')]:null;var _0x335ccc={'method':_0x4a116e[_0x204c('0xa3')],'uri':util[_0x204c('0x4d')](_0x204c('0xa4'),_0xb45e66,_0x4a116e['query'][_0x204c('0x4a')]),'json':_0x8d6c27,'resolveWithFullResponse':!![],'encoding':_0x46edd0,'body':_0x4a116e[_0x204c('0x90')]};if(_0x4a116e[_0x204c('0xa5')]){_0x335ccc['headers']=_0x4a116e[_0x204c('0xa5')];if(_0x335ccc[_0x204c('0xa5')][_0x204c('0xa6')]){delete _0x335ccc['headers'][_0x204c('0xa6')];}}if(_0x335ccc['headers'][_0x204c('0xa7')]){delete _0x335ccc['headers']['content-type'];}return rp(_0x335ccc);})[_0x204c('0x22')](function(_0x59039d){if(_0x59039d){_0x360bdd[_0x204c('0x1f')](_0x59039d[_0x204c('0xa5')]);logger[_0x204c('0x61')](_0x59039d['body']);return _0x360bdd[_0x204c('0x1c')](_0x59039d['statusCode'])[_0x204c('0x29')](_0x59039d['body']);}else{return _0x360bdd[_0x204c('0x1b')](0xc8);}})['catch'](handleError(_0x360bdd,null));};
\ No newline at end of file
+var _0x3226=['filters','attributes','intersection','fields','length','hasOwnProperty','nolimit','sort','pick','filter','where','merge','options','includeAll','findAll','rows','catch','params','include','find','download','join','format','basename','createWriteStream','zip','warning','code','ENOENT','Sequelize','Error\x20while\x20generating\x20the\x20zip\x20archive','Error','pipe','glob','**/*','dirname','attachments/**/*','finalize','Plugin\x20not\x20found','%s.zip','Error\x20while\x20downloading\x20the\x20plugin','unlinkSync','info','Download\x20completed','filename','extname','file','server/files/plugins','Plugin\x20upload\x20destination:\x20%s','chmodSync','0777','readdirSync','Invalid\x20plugin\x20structure','lstatSync','isFile','isDirectory','some','manifest.json','Plugin\x20manifest\x20missing','readFileSync','parse','Invalid\x20manifest:\x20name\x20missing','Invalid\x20manifest:\x20type\x20missing','version','Invalid\x20manifest:\x20version\x20not\x20specified','parameters','Invalid\x20manifest:\x20parameters\x20missing','html','Invalid\x20manifest:\x20views\x20missing','views','admin','script','scriptName','Invalid\x20manifest:\x20script\x20name\x20missing','scriptPath','Invalid\x20manifest:\x20script\x20path\x20missing','Invalid\x20manifest:\x20invalid\x20type','description','sidebar','always','icon','icon-apps','test','Warning:\x20admin\x20view\x20not\x20specified','agent','Warning:\x20agent\x20view\x20not\x20specified','create','role','body','Unable\x20to\x20retrieve\x20the\x20current\x20user','user','UserProfileSection','userProfileId','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','Zip\x20archive\x20removed','Extracted\x20folder\x20removed','delete','root','resolve','\x27PATH\x27\x20parameter\x20not\x20specified','\x27PORT\x27\x20parameter\x20not\x20specified','hostname','http://localhost:','port','encoding','method','%s%s','headers','content-length','content-type','endsWith','statusCode','webhookPost','zip-dir','request-promise','mustache','util','path','to-csv','fs-extra','squel','jsforce','desk.js','querystring','papaparse','extract-zip','rimraf','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','../../config/environment','../../config/license/util','../../mysqldb','redis','defaults','localhost','socket.io-emitter','./plugin.socket','register','sendStatus','status','json','offset','undefined','limit','count','set','Content-Range','apply','reject','save','update','then','destroy','get','Plugins','UserProfileResource','end','error','stack','name','send','index','map','Plugin','rawAttributes','type','model','query','keys'];(function(_0x95632e,_0x4c8bc0){var _0x2635dd=function(_0x3f2d39){while(--_0x3f2d39){_0x95632e['push'](_0x95632e['shift']());}};_0x2635dd(++_0x4c8bc0);}(_0x3226,0x1cc));var _0x6322=function(_0x30370a,_0x1eca24){_0x30370a=_0x30370a-0x0;var _0x3638d7=_0x3226[_0x30370a];return _0x3638d7;};'use strict';var emlformat=require('eml-format');var rimraf=require('rimraf');var zipdir=require(_0x6322('0x0'));var jsonpatch=require('fast-json-patch');var rp=require(_0x6322('0x1'));var moment=require('moment');var BPromise=require('bluebird');var Mustache=require(_0x6322('0x2'));var util=require(_0x6322('0x3'));var path=require(_0x6322('0x4'));var sox=require('sox');var csv=require(_0x6322('0x5'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x6322('0x6'));var _=require('lodash');var squel=require(_0x6322('0x7'));var crypto=require('crypto');var jsforce=require(_0x6322('0x8'));var deskjs=require(_0x6322('0x9'));var toCsv=require('to-csv');var querystring=require(_0x6322('0xa'));var Papa=require(_0x6322('0xb'));var extract=require(_0x6322('0xc'));var rimraf=require(_0x6322('0xd'));var archiver=require('archiver');var Redis=require('ioredis');var authService=require(_0x6322('0xe'));var qs=require(_0x6322('0xf'));var as=require(_0x6322('0x10'));var hardwareService=require(_0x6322('0x11'));var logger=require(_0x6322('0x12'))('api');var utils=require('../../config/utils');var config=require(_0x6322('0x13'));var licenseUtil=require(_0x6322('0x14'));var db=require(_0x6322('0x15'))['db'];config[_0x6322('0x16')]=_[_0x6322('0x17')](config[_0x6322('0x16')],{'host':_0x6322('0x18'),'port':0x18eb});var socket=require(_0x6322('0x19'))(new Redis(config[_0x6322('0x16')]));require(_0x6322('0x1a'))[_0x6322('0x1b')](socket);function respondWithStatusCode(_0xdd8236,_0x1075b3){_0x1075b3=_0x1075b3||0xcc;return function(_0x571b46){if(_0x571b46){return _0xdd8236[_0x6322('0x1c')](_0x1075b3);}return _0xdd8236[_0x6322('0x1d')](_0x1075b3)['end']();};}function respondWithResult(_0x36ced7,_0x3c70cc){_0x3c70cc=_0x3c70cc||0xc8;return function(_0x66dd13){if(_0x66dd13){return _0x36ced7[_0x6322('0x1d')](_0x3c70cc)[_0x6322('0x1e')](_0x66dd13);}};}function respondWithFilteredResult(_0x10e638,_0x1116ef){return function(_0x1df451){if(_0x1df451){var _0x15ca6a=typeof _0x1116ef[_0x6322('0x1f')]===_0x6322('0x20')&&typeof _0x1116ef[_0x6322('0x21')]==='undefined';var _0x59f9d0=_0x1df451[_0x6322('0x22')];var _0x25c1b8=_0x15ca6a?0x0:_0x1116ef[_0x6322('0x1f')];var _0x24495d=_0x15ca6a?_0x1df451[_0x6322('0x22')]:_0x1116ef['offset']+_0x1116ef[_0x6322('0x21')];var _0x2b508e;if(_0x24495d>=_0x59f9d0){_0x24495d=_0x59f9d0;_0x2b508e=0xc8;}else{_0x2b508e=0xce;}_0x10e638['status'](_0x2b508e);return _0x10e638[_0x6322('0x23')](_0x6322('0x24'),_0x25c1b8+'-'+_0x24495d+'/'+_0x59f9d0)[_0x6322('0x1e')](_0x1df451);}return null;};}function patchUpdates(_0x439f30){return function(_0x323d8b){try{jsonpatch[_0x6322('0x25')](_0x323d8b,_0x439f30,!![]);}catch(_0x17209a){return BPromise[_0x6322('0x26')](_0x17209a);}return _0x323d8b[_0x6322('0x27')]();};}function saveUpdates(_0x5241fe,_0x187ecb){return function(_0x542d05){if(_0x542d05){return _0x542d05[_0x6322('0x28')](_0x5241fe)[_0x6322('0x29')](function(_0x2a18b7){return _0x2a18b7;});}return null;};}function removeEntity(_0x5a919c,_0xe648e4){return function(_0x14ebc5){if(_0x14ebc5){return _0x14ebc5[_0x6322('0x2a')]()['then'](function(){var _0x33dee6=_0x14ebc5[_0x6322('0x2b')]({'plain':!![]});var _0x3892d4=_0x6322('0x2c');return db[_0x6322('0x2d')][_0x6322('0x2a')]({'where':{'type':_0x3892d4,'resourceId':_0x33dee6['id']}})[_0x6322('0x29')](function(){return _0x14ebc5;});})[_0x6322('0x29')](function(){_0x5a919c['status'](0xcc)[_0x6322('0x2e')]();});}};}function handleEntityNotFound(_0x542e76,_0x19c485){return function(_0x16f3ba){if(!_0x16f3ba){_0x542e76[_0x6322('0x1c')](0x194);}return _0x16f3ba;};}function handleError(_0x29006c,_0x4fce65){_0x4fce65=_0x4fce65||0x1f4;return function(_0x48aa60){logger[_0x6322('0x2f')](_0x48aa60[_0x6322('0x30')]);if(_0x48aa60[_0x6322('0x31')]){delete _0x48aa60[_0x6322('0x31')];}_0x29006c[_0x6322('0x1d')](_0x4fce65)[_0x6322('0x32')](_0x48aa60);};}exports[_0x6322('0x33')]=function(_0x3673b4,_0x598742){var _0x3c6352={},_0x551a0c={},_0x275592={'count':0x0,'rows':[]};var _0x1803bb=_[_0x6322('0x34')](db[_0x6322('0x35')][_0x6322('0x36')],function(_0x4404a3){return{'name':_0x4404a3['fieldName'],'type':_0x4404a3[_0x6322('0x37')]['key']};});_0x551a0c[_0x6322('0x38')]=_[_0x6322('0x34')](_0x1803bb,_0x6322('0x31'));_0x551a0c[_0x6322('0x39')]=_[_0x6322('0x3a')](_0x3673b4[_0x6322('0x39')]);_0x551a0c[_0x6322('0x3b')]=_['intersection'](_0x551a0c['model'],_0x551a0c[_0x6322('0x39')]);_0x3c6352[_0x6322('0x3c')]=_[_0x6322('0x3d')](_0x551a0c[_0x6322('0x38')],qs[_0x6322('0x3e')](_0x3673b4['query'][_0x6322('0x3e')]));_0x3c6352[_0x6322('0x3c')]=_0x3c6352['attributes'][_0x6322('0x3f')]?_0x3c6352['attributes']:_0x551a0c[_0x6322('0x38')];if(!_0x3673b4['query'][_0x6322('0x40')](_0x6322('0x41'))){_0x3c6352[_0x6322('0x21')]=qs[_0x6322('0x21')](_0x3673b4['query'][_0x6322('0x21')]);_0x3c6352[_0x6322('0x1f')]=qs['offset'](_0x3673b4[_0x6322('0x39')][_0x6322('0x1f')]);}_0x3c6352['order']=qs[_0x6322('0x42')](_0x3673b4[_0x6322('0x39')][_0x6322('0x42')]);_0x3c6352['where']=qs['filters'](_[_0x6322('0x43')](_0x3673b4[_0x6322('0x39')],_0x551a0c['filters']),_0x1803bb);if(_0x3673b4[_0x6322('0x39')][_0x6322('0x44')]){_0x3c6352[_0x6322('0x45')]=_[_0x6322('0x46')](_0x3c6352[_0x6322('0x45')],{'$or':_[_0x6322('0x34')](_0x1803bb,function(_0x184b74){if(_0x184b74['type']!=='VIRTUAL'){var _0x432ea8={};_0x432ea8[_0x184b74[_0x6322('0x31')]]={'$like':'%'+_0x3673b4['query'][_0x6322('0x44')]+'%'};return _0x432ea8;}})});}_0x3c6352=_['merge']({},_0x3c6352,_0x3673b4[_0x6322('0x47')]);var _0x53202c={'where':_0x3c6352[_0x6322('0x45')]};return db[_0x6322('0x35')]['count'](_0x53202c)[_0x6322('0x29')](function(_0xc7f6a1){_0x275592[_0x6322('0x22')]=_0xc7f6a1;if(_0x3673b4['query'][_0x6322('0x48')]){_0x3c6352['include']=[{'all':!![]}];}return db[_0x6322('0x35')][_0x6322('0x49')](_0x3c6352);})[_0x6322('0x29')](function(_0x46a560){_0x275592[_0x6322('0x4a')]=_0x46a560;return _0x275592;})[_0x6322('0x29')](respondWithFilteredResult(_0x598742,_0x3c6352))[_0x6322('0x4b')](handleError(_0x598742,null));};exports['show']=function(_0x15ecea,_0x3c7106){var _0x112140={'raw':!![],'where':{'id':_0x15ecea[_0x6322('0x4c')]['id']}},_0x443c46={};_0x443c46['model']=_[_0x6322('0x3a')](db[_0x6322('0x35')][_0x6322('0x36')]);_0x443c46[_0x6322('0x39')]=_[_0x6322('0x3a')](_0x15ecea[_0x6322('0x39')]);_0x443c46[_0x6322('0x3b')]=_[_0x6322('0x3d')](_0x443c46[_0x6322('0x38')],_0x443c46[_0x6322('0x39')]);_0x112140[_0x6322('0x3c')]=_[_0x6322('0x3d')](_0x443c46[_0x6322('0x38')],qs[_0x6322('0x3e')](_0x15ecea[_0x6322('0x39')][_0x6322('0x3e')]));_0x112140[_0x6322('0x3c')]=_0x112140['attributes'][_0x6322('0x3f')]?_0x112140[_0x6322('0x3c')]:_0x443c46[_0x6322('0x38')];if(_0x15ecea[_0x6322('0x39')][_0x6322('0x48')]){_0x112140[_0x6322('0x4d')]=[{'all':!![]}];}_0x112140=_['merge']({},_0x112140,_0x15ecea['options']);return db[_0x6322('0x35')][_0x6322('0x4e')](_0x112140)[_0x6322('0x29')](handleEntityNotFound(_0x3c7106,null))['then'](respondWithResult(_0x3c7106,null))['catch'](handleError(_0x3c7106,null));};exports[_0x6322('0x4f')]=function(_0x369863,_0x3bcaa9,_0x286d31){return db['Plugin'][_0x6322('0x4e')]({'where':{'id':_0x369863[_0x6322('0x4c')]['id']},'attributes':[_0x6322('0x31'),_0x6322('0x4')],'raw':!![]})[_0x6322('0x29')](handleEntityNotFound(_0x3bcaa9,null))['then'](function(_0xf3d256){if(_0xf3d256){var _0xddd377=path[_0x6322('0x50')](config['root'],'server/files/plugins',util[_0x6322('0x51')]('%s.zip',path[_0x6322('0x52')](_0xf3d256[_0x6322('0x4')])));var _0x33fa17=fs[_0x6322('0x53')](_0xddd377);var _0x1b4b5a=archiver(_0x6322('0x54'),{'zlib':{'level':0x9}});_0x1b4b5a['on'](_0x6322('0x55'),function(_0x209cf0){if(_0x209cf0[_0x6322('0x56')]===_0x6322('0x57')){logger['error'](_0x209cf0);}else{throw new db[(_0x6322('0x58'))]['Error'](_0x6322('0x59'));}});_0x1b4b5a['on']('error',function(_0x20c0b0){throw new db[(_0x6322('0x58'))][(_0x6322('0x5a'))]('Error\x20while\x20generating\x20the\x20zip\x20archive');});_0x1b4b5a[_0x6322('0x5b')](_0x33fa17);_0x1b4b5a[_0x6322('0x5c')](_0x6322('0x5d'),{'cwd':path[_0x6322('0x50')](config['root'],'server/files/plugins',path[_0x6322('0x5e')](_0xf3d256['path'])),'ignore':[path['join'](path[_0x6322('0x52')](_0xf3d256[_0x6322('0x4')]),'node_modules/**/*'),path[_0x6322('0x50')](path[_0x6322('0x52')](_0xf3d256[_0x6322('0x4')]),_0x6322('0x5f'))],'nodir':!![]})[_0x6322('0x60')]();_0x33fa17['on']('close',function(){if(!fs['existsSync'](_0xddd377)){throw new db['Sequelize'][(_0x6322('0x5a'))](_0x6322('0x61'));}return _0x3bcaa9[_0x6322('0x4f')](_0xddd377,util[_0x6322('0x51')](_0x6322('0x62'),path[_0x6322('0x52')](_0xf3d256['path'])),function(_0x2684f9){if(_0x2684f9){throw new db[(_0x6322('0x58'))][(_0x6322('0x5a'))](_0x6322('0x63'));}fs[_0x6322('0x64')](_0xddd377);logger[_0x6322('0x65')](_0x6322('0x66'));logger['info']('Temporary\x20file\x20removed');});});}return null;})[_0x6322('0x4b')](handleError(_0x3bcaa9,null));};exports['upload']=function(_0x190bec,_0x28f246,_0x3511b5){var _0x2275e7=path[_0x6322('0x52')](_0x190bec['file'][_0x6322('0x67')],path[_0x6322('0x68')](_0x190bec[_0x6322('0x69')][_0x6322('0x67')]));var _0x3707dd=path[_0x6322('0x50')](config['root'],'server/files/plugins',_0x190bec[_0x6322('0x69')]['filename']);var _0x1a03e6=path[_0x6322('0x50')](config['root'],_0x6322('0x6a'),_0x2275e7);logger[_0x6322('0x65')]('Plugin\x20upload\x20filepath:\x20%s',_0x3707dd);logger['info'](_0x6322('0x6b'),_0x1a03e6);try{fs[_0x6322('0x6c')](_0x3707dd,parseInt(_0x6322('0x6d'),0x8));extract(_0x3707dd,{'dir':_0x1a03e6},function(_0x58ecb7){if(_0x58ecb7){logger['error'](_0x58ecb7);handleError(_0x58ecb7,!![]);};var _0x5eca0b=fs[_0x6322('0x6e')](_0x1a03e6);if(_0x5eca0b[_0x6322('0x3f')]>0x1){removeReferences(_0x3707dd,_0x1a03e6);logger[_0x6322('0x2f')](_0x6322('0x6f'));return _0x3511b5(new Error(_0x6322('0x6f')));}var _0x40f094=fs[_0x6322('0x70')](path[_0x6322('0x50')](_0x1a03e6,_0x5eca0b[0x0]));if(_0x40f094[_0x6322('0x71')]()){removeReferences(_0x3707dd,_0x1a03e6);logger['error'](_0x6322('0x6f'));return _0x3511b5(new Error(_0x6322('0x6f')));}if(_0x40f094[_0x6322('0x72')]()){var _0x1936fc=fs[_0x6322('0x6e')](path[_0x6322('0x50')](_0x1a03e6,_0x5eca0b[0x0]));if(_0x1936fc[_0x6322('0x3f')]===0x0){removeReferences(_0x3707dd,_0x1a03e6);logger[_0x6322('0x2f')](_0x6322('0x6f'));return _0x3511b5(new Error(_0x6322('0x6f')));}var _0x32e4d3=_0x1936fc[_0x6322('0x73')](function(_0x4ea227){return _0x4ea227===_0x6322('0x74');});if(!_0x32e4d3){return _0x3511b5(new Error(_0x6322('0x75')));}var _0x117a9e=fs[_0x6322('0x76')](path[_0x6322('0x50')](_0x1a03e6,_0x5eca0b[0x0],_0x6322('0x74')));var _0x1bb3e8=JSON[_0x6322('0x77')](_0x117a9e);if(_0x6322('0x20')==typeof _0x1bb3e8['name']){return _0x3511b5(new Error(_0x6322('0x78')));}if(_0x6322('0x20')==typeof _0x1bb3e8['type']){return _0x3511b5(new Error(_0x6322('0x79')));}if(_0x6322('0x20')==typeof _0x1bb3e8[_0x6322('0x7a')]){return _0x3511b5(new Error(_0x6322('0x7b')));}if(_0x6322('0x20')==typeof _0x1bb3e8[_0x6322('0x7c')]){return _0x3511b5(new Error(_0x6322('0x7d')));}if(_0x1bb3e8[_0x6322('0x37')]===_0x6322('0x7e')){if(_0x6322('0x20')==typeof _0x1bb3e8[_0x6322('0x7c')]['views']){return _0x3511b5(new Error(_0x6322('0x7f')));}if(_0x6322('0x20')==typeof _0x1bb3e8[_0x6322('0x7c')][_0x6322('0x80')][_0x6322('0x81')]&&_0x6322('0x20')==typeof _0x1bb3e8['parameters'][_0x6322('0x80')]['agent']){return _0x3511b5(new Error('Invalid\x20manifest:\x20no\x20view\x20specified'));}}else if(_0x1bb3e8[_0x6322('0x37')]===_0x6322('0x82')){if('undefined'==typeof _0x1bb3e8[_0x6322('0x7c')][_0x6322('0x83')]){return _0x3511b5(new Error(_0x6322('0x84')));}if(_0x6322('0x20')==typeof _0x1bb3e8[_0x6322('0x7c')][_0x6322('0x85')]){return _0x3511b5(new Error(_0x6322('0x86')));}}else{return _0x3511b5(new Error(_0x6322('0x87')));}var _0x605650=_0x1bb3e8['name'];var _0x5a6044=_0x1bb3e8[_0x6322('0x88')];var _0x4a558b=_0x1bb3e8[_0x6322('0x37')];var _0x5ce7db=_0x1bb3e8[_0x6322('0x89')]?_0x1bb3e8[_0x6322('0x89')]:_0x6322('0x8a');var _0x2aedcb=_0x1bb3e8['icon']?_0x1bb3e8[_0x6322('0x8b')]:_0x6322('0x8c');var _0x10855c='';var _0x364411='';var _0x4d1c9c='';var _0x5a4fc5='';var _0x2beb94=_0x1bb3e8['version'];if(_0x4a558b==='html'){if('undefined'!=typeof _0x1bb3e8[_0x6322('0x7c')][_0x6322('0x80')][_0x6322('0x81')]){var _0x2f8073=_0x1bb3e8[_0x6322('0x7c')][_0x6322('0x80')][_0x6322('0x81')];if(!/^(f|ht)tps?:\/\//i[_0x6322('0x8d')](_0x2f8073)){_0x10855c=path[_0x6322('0x50')]('plugins',_0x2275e7,_0x5eca0b[0x0],_0x2f8073);}else{_0x10855c=_0x2f8073;}}else{logger[_0x6322('0x65')](_0x6322('0x8e'));}if(_0x6322('0x20')!=typeof _0x1bb3e8[_0x6322('0x7c')][_0x6322('0x80')][_0x6322('0x8f')]){var _0x241d0b=_0x1bb3e8['parameters'][_0x6322('0x80')][_0x6322('0x8f')];if(!/^(f|ht)tps?:\/\//i[_0x6322('0x8d')](_0x241d0b)){_0x364411=path[_0x6322('0x50')]('plugins',_0x2275e7,_0x5eca0b[0x0],_0x241d0b);}else{_0x364411=_0x241d0b;}}else{logger['info'](_0x6322('0x90'));}}else if(_0x4a558b===_0x6322('0x82')){_0x4d1c9c=_0x1bb3e8[_0x6322('0x7c')][_0x6322('0x83')];_0x5a4fc5=_0x1bb3e8[_0x6322('0x7c')][_0x6322('0x85')];if(_0x6322('0x20')!=typeof _0x1bb3e8['parameters']['views']){if('undefined'!=typeof _0x1bb3e8[_0x6322('0x7c')][_0x6322('0x80')]['admin']){var _0x2f8073=_0x1bb3e8[_0x6322('0x7c')][_0x6322('0x80')]['admin'];if(!/^(f|ht)tps?:\/\//i[_0x6322('0x8d')](_0x2f8073)){_0x10855c=path[_0x6322('0x50')]('plugins',_0x2275e7,_0x5eca0b[0x0],_0x2f8073);}else{_0x10855c=_0x2f8073;}}if(_0x6322('0x20')!=typeof _0x1bb3e8[_0x6322('0x7c')][_0x6322('0x80')]['agent']){var _0x241d0b=_0x1bb3e8['parameters'][_0x6322('0x80')]['agent'];if(!/^(f|ht)tps?:\/\//i[_0x6322('0x8d')](_0x241d0b)){_0x364411=path[_0x6322('0x50')]('plugins',_0x2275e7,_0x5eca0b[0x0],_0x241d0b);}else{_0x364411=_0x241d0b;}}}}var _0x1a9df7={'name':_0x605650,'description':_0x5a6044,'path':path[_0x6322('0x50')](_0x2275e7,_0x5eca0b[0x0]),'type':_0x4a558b,'sidebar':_0x5ce7db,'icon':_0x2aedcb,'adminUrl':_0x10855c,'agentUrl':_0x364411,'scriptName':_0x4d1c9c,'scriptPath':_0x5a4fc5,'version':_0x2beb94};removeReferences(_0x3707dd,null);return db[_0x6322('0x35')][_0x6322('0x91')](_0x1a9df7)[_0x6322('0x29')](function(_0x12ee83){var _0x50f1a4={'role':_0x190bec['body'][_0x6322('0x92')],'userProfileId':_0x190bec[_0x6322('0x93')]['userProfileId']};if(!_0x50f1a4)throw new Error(_0x6322('0x94'));if(_0x50f1a4[_0x6322('0x92')]===_0x6322('0x95')){var _0x35d9e4=_0x12ee83[_0x6322('0x2b')]({'plain':!![]});return db[_0x6322('0x96')][_0x6322('0x4e')]({'where':{'name':_0x6322('0x2c'),'userProfileId':_0x50f1a4[_0x6322('0x97')]},'raw':!![]})[_0x6322('0x29')](function(_0x333303){if(_0x333303&&_0x333303[_0x6322('0x98')]===0x0){return db[_0x6322('0x2d')][_0x6322('0x91')]({'name':_0x35d9e4[_0x6322('0x31')],'resourceId':_0x35d9e4['id'],'type':_0x333303[_0x6322('0x31')],'sectionId':_0x333303['id']},{})['then'](function(){return _0x12ee83;});}else{return _0x12ee83;}})[_0x6322('0x4b')](function(_0x4673e5){logger[_0x6322('0x2f')](_0x6322('0x99'),_0x4673e5);throw _0x4673e5;});}return _0x12ee83;})[_0x6322('0x29')](respondWithResult(_0x28f246,null))[_0x6322('0x4b')](handleError(_0x28f246,null));}});}catch(_0x15c294){_0x28f246[_0x6322('0x1d')](0x1f4)[_0x6322('0x32')](_0x15c294);}};function removeReferences(_0x1e0211,_0x34d550){try{if(_0x1e0211){fs['unlinkSync'](_0x1e0211);logger['info'](_0x6322('0x9a'));}if(_0x34d550){rimraf(_0x34d550,function(){});logger['info'](_0x6322('0x9b'));}}catch(_0x478dd2){logger[_0x6322('0x2f')](_0x478dd2);}}exports[_0x6322('0x28')]=function(_0xf4df77,_0x5dfc68,_0x4ea247){return db['Plugin'][_0x6322('0x4e')]({'where':{'id':_0xf4df77[_0x6322('0x4c')]['id']}})[_0x6322('0x29')](handleEntityNotFound(_0x5dfc68,null))[_0x6322('0x29')](saveUpdates(_0xf4df77['body'],null))['then'](respondWithResult(_0x5dfc68,null))[_0x6322('0x4b')](handleError(_0x5dfc68,null));};exports[_0x6322('0x9c')]=function(_0xb1593f,_0x205daa,_0x4e5ac7){return db[_0x6322('0x35')][_0x6322('0x4e')]({'where':{'id':_0xb1593f[_0x6322('0x4c')]['id']}})[_0x6322('0x29')](function(_0x804b3d){if(_0x804b3d){return _0x804b3d[_0x6322('0x2a')]();}})[_0x6322('0x29')](function(_0x484bc8){rimraf(path[_0x6322('0x50')](config[_0x6322('0x9d')],'server/files/plugins',path['dirname'](_0x484bc8[_0x6322('0x4')])),function(){});return _0x484bc8;})[_0x6322('0x29')](handleEntityNotFound(_0x205daa,null))[_0x6322('0x29')](respondWithStatusCode(_0x205daa,null))[_0x6322('0x4b')](handleError(_0x205daa,null));};exports['webhookGet']=function(_0x4d0f1f,_0x4eef2b,_0x43ca46){return BPromise[_0x6322('0x9e')]()['then'](function(){if(!_0x4d0f1f[_0x6322('0x39')]['path']){throw new Error(_0x6322('0x9f'));}if(!_0x4d0f1f['query']['port']){throw new Error(_0x6322('0xa0'));}var _0x3cbf34=_0x4d0f1f['query'][_0x6322('0xa1')]?_0x4d0f1f[_0x6322('0x39')][_0x6322('0xa1')]+':'+_0x4d0f1f[_0x6322('0x39')]['port']:_0x6322('0xa2')+_0x4d0f1f[_0x6322('0x39')][_0x6322('0xa3')];var _0x49fd9e=_0x4d0f1f[_0x6322('0x39')]['json']?_0x4d0f1f[_0x6322('0x39')]['json']:!![];var _0x343a75=_0x4d0f1f[_0x6322('0x39')]['encoding']?_0x4d0f1f[_0x6322('0x39')][_0x6322('0xa4')]:null;var _0x373069={'method':_0x4d0f1f[_0x6322('0xa5')],'uri':util[_0x6322('0x51')](_0x6322('0xa6'),_0x3cbf34,_0x4d0f1f[_0x6322('0x39')][_0x6322('0x4')]),'json':_0x49fd9e,'resolveWithFullResponse':!![],'encoding':_0x343a75,'qs':_0x4d0f1f[_0x6322('0x39')]};if(_0x4d0f1f[_0x6322('0xa7')]){_0x373069['headers']=_0x4d0f1f[_0x6322('0xa7')];if(_0x373069[_0x6322('0xa7')]['content-length']){delete _0x373069[_0x6322('0xa7')][_0x6322('0xa8')];}}if(_0x373069[_0x6322('0xa7')][_0x6322('0xa9')]){delete _0x373069['headers'][_0x6322('0xa9')];}return rp(_0x373069);})[_0x6322('0x29')](function(_0x62647f){if(_0x62647f){_0x4eef2b['set'](_0x62647f[_0x6322('0xa7')]);logger[_0x6322('0x65')](_0x62647f['body']);if(_[_0x6322('0xaa')](_0x4d0f1f['query'][_0x6322('0x4')],_0x6322('0x4f'))&&_0x62647f['statusCode']==0x1f4){return _0x4eef2b['sendStatus'](_0x62647f['statusCode']);}else{return _0x4eef2b[_0x6322('0x1d')](_0x62647f[_0x6322('0xab')])['send'](_0x62647f[_0x6322('0x93')]);}}else{return _0x4eef2b['sendStatus'](0xc8);}})[_0x6322('0x4b')](handleError(_0x4eef2b,null));};exports[_0x6322('0xac')]=function(_0x1f8239,_0x36d048,_0x584bab){return BPromise['resolve']()[_0x6322('0x29')](function(){if(!_0x1f8239[_0x6322('0x39')][_0x6322('0x4')]){throw new Error(_0x6322('0x9f'));}if(!_0x1f8239[_0x6322('0x39')][_0x6322('0xa3')]){throw new Error('\x27PORT\x27\x20parameter\x20not\x20specified');}var _0x49a3e7=_0x1f8239['query'][_0x6322('0xa1')]?_0x1f8239[_0x6322('0x39')]['hostname']+':'+_0x1f8239[_0x6322('0x39')]['port']:'http://localhost:'+_0x1f8239[_0x6322('0x39')]['port'];var _0x3b4981=_0x1f8239['query']['json']?_0x1f8239[_0x6322('0x39')][_0x6322('0x1e')]:!![];var _0x34e5d6=_0x1f8239[_0x6322('0x39')]['encoding']?_0x1f8239[_0x6322('0x39')][_0x6322('0xa4')]:null;var _0x37e51f={'method':_0x1f8239[_0x6322('0xa5')],'uri':util[_0x6322('0x51')](_0x6322('0xa6'),_0x49a3e7,_0x1f8239['query'][_0x6322('0x4')]),'json':_0x3b4981,'resolveWithFullResponse':!![],'encoding':_0x34e5d6,'body':_0x1f8239[_0x6322('0x93')]};if(_0x1f8239['headers']){_0x37e51f[_0x6322('0xa7')]=_0x1f8239['headers'];if(_0x37e51f[_0x6322('0xa7')][_0x6322('0xa8')]){delete _0x37e51f[_0x6322('0xa7')][_0x6322('0xa8')];}}if(_0x37e51f[_0x6322('0xa7')][_0x6322('0xa9')]){delete _0x37e51f[_0x6322('0xa7')][_0x6322('0xa9')];}return rp(_0x37e51f);})[_0x6322('0x29')](function(_0x20b83d){if(_0x20b83d){_0x36d048[_0x6322('0x23')](_0x20b83d['headers']);logger[_0x6322('0x65')](_0x20b83d[_0x6322('0x93')]);return _0x36d048[_0x6322('0x1d')](_0x20b83d[_0x6322('0xab')])['send'](_0x20b83d[_0x6322('0x93')]);}else{return _0x36d048[_0x6322('0x1c')](0xc8);}})[_0x6322('0x4b')](handleError(_0x36d048,null));};
\ No newline at end of file
index 3dc13b6..4e83563 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf69d=['exports','events','../../mysqldb','Plugin','setMaxListeners','save','remove','emit','hasOwnProperty','hook'];(function(_0x1b1e76,_0x31695b){var _0x3d743a=function(_0x4ae27b){while(--_0x4ae27b){_0x1b1e76['push'](_0x1b1e76['shift']());}};_0x3d743a(++_0x31695b);}(_0xf69d,0xd3));var _0xdf69=function(_0x10ec59,_0x14dec9){_0x10ec59=_0x10ec59-0x0;var _0x987787=_0xf69d[_0x10ec59];return _0x987787;};'use strict';var EventEmitter=require(_0xdf69('0x0'));var Plugin=require(_0xdf69('0x1'))['db'][_0xdf69('0x2')];var PluginEvents=new EventEmitter();PluginEvents[_0xdf69('0x3')](0x0);var events={'afterCreate':_0xdf69('0x4'),'afterUpdate':'update','afterDestroy':_0xdf69('0x5')};function emitEvent(_0x342114){return function(_0x5b5eec,_0x13ecb6,_0x177ff7){PluginEvents[_0xdf69('0x6')](_0x342114+':'+_0x5b5eec['id'],_0x5b5eec);PluginEvents[_0xdf69('0x6')](_0x342114,_0x5b5eec);_0x177ff7(null);};}for(var e in events){if(events[_0xdf69('0x7')](e)){var event=events[e];Plugin[_0xdf69('0x8')](e,emitEvent(event));}}module[_0xdf69('0x9')]=PluginEvents;
\ No newline at end of file
+var _0x96f1=['hasOwnProperty','hook','events','../../mysqldb','Plugin','setMaxListeners','save','update','remove','emit'];(function(_0x4947dc,_0x176f85){var _0x1a2f0b=function(_0x32f29f){while(--_0x32f29f){_0x4947dc['push'](_0x4947dc['shift']());}};_0x1a2f0b(++_0x176f85);}(_0x96f1,0x19c));var _0x196f=function(_0x39a1cf,_0x4f1244){_0x39a1cf=_0x39a1cf-0x0;var _0xd2c0a5=_0x96f1[_0x39a1cf];return _0xd2c0a5;};'use strict';var EventEmitter=require(_0x196f('0x0'));var Plugin=require(_0x196f('0x1'))['db'][_0x196f('0x2')];var PluginEvents=new EventEmitter();PluginEvents[_0x196f('0x3')](0x0);var events={'afterCreate':_0x196f('0x4'),'afterUpdate':_0x196f('0x5'),'afterDestroy':_0x196f('0x6')};function emitEvent(_0x3461f4){return function(_0x5b8eb5,_0x56fc61,_0x2ebc4e){PluginEvents[_0x196f('0x7')](_0x3461f4+':'+_0x5b8eb5['id'],_0x5b8eb5);PluginEvents[_0x196f('0x7')](_0x3461f4,_0x5b8eb5);_0x2ebc4e(null);};}for(var e in events){if(events[_0x196f('0x8')](e)){var event=events[e];Plugin[_0x196f('0x9')](e,emitEvent(event));}}module['exports']=PluginEvents;
\ No newline at end of file
index e45a2b2..cb9b099 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9ade=['define','Plugin','plugins','lodash','util','moment','request-promise','path','./plugin.attributes','exports'];(function(_0x38537f,_0x252124){var _0x141e23=function(_0x2809b5){while(--_0x2809b5){_0x38537f['push'](_0x38537f['shift']());}};_0x141e23(++_0x252124);}(_0x9ade,0x107));var _0xe9ad=function(_0x25bb4c,_0x1a0b53){_0x25bb4c=_0x25bb4c-0x0;var _0x4c78b2=_0x9ade[_0x25bb4c];return _0x4c78b2;};'use strict';var _=require(_0xe9ad('0x0'));var util=require(_0xe9ad('0x1'));var logger=require('../../config/logger')('api');var moment=require(_0xe9ad('0x2'));var BPromise=require('bluebird');var rp=require(_0xe9ad('0x3'));var fs=require('fs');var path=require(_0xe9ad('0x4'));var rimraf=require('rimraf');var config=require('../../config/environment');var attributes=require(_0xe9ad('0x5'));module[_0xe9ad('0x6')]=function(_0xdd1549,_0x3e4092){return _0xdd1549[_0xe9ad('0x7')](_0xe9ad('0x8'),attributes,{'tableName':_0xe9ad('0x9'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x6033=['request-promise','path','rimraf','../../config/environment','./plugin.attributes','exports','define','Plugin','plugins','lodash','../../config/logger','api'];(function(_0x21a9d9,_0x4d5ac8){var _0x46adce=function(_0xfdd336){while(--_0xfdd336){_0x21a9d9['push'](_0x21a9d9['shift']());}};_0x46adce(++_0x4d5ac8);}(_0x6033,0xe1));var _0x3603=function(_0x21a9d9,_0x4d5ac8){_0x21a9d9=_0x21a9d9-0x0;var _0x46adce=_0x6033[_0x21a9d9];return _0x46adce;};'use strict';var _=require(_0x3603('0x0'));var util=require('util');var logger=require(_0x3603('0x1'))(_0x3603('0x2'));var moment=require('moment');var BPromise=require('bluebird');var rp=require(_0x3603('0x3'));var fs=require('fs');var path=require(_0x3603('0x4'));var rimraf=require(_0x3603('0x5'));var config=require(_0x3603('0x6'));var attributes=require(_0x3603('0x7'));module[_0x3603('0x8')]=function(_0x45d0f9,_0x40cf61){return _0x45d0f9[_0x3603('0x9')](_0x3603('0xa'),attributes,{'tableName':_0x3603('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index bad370a..17d2ac7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xfb38=['rpc','../../config/environment','jayson/promise','client','redis','defaults','localhost','socket.io-emitter','./plugin.socket','register','request','then','info','request\x20sent','debug','Plugin,\x20%s,\x20%s,\x20%s','error','Plugin,\x20%s,\x20%s','message','result','catch','CreatePlugin','Plugin','create','body','raw','stringify','util','moment','bluebird','randomstring','../../mysqldb','../../config/utils','../../config/logger'];(function(_0x44c935,_0x3653f0){var _0x465bee=function(_0x211d20){while(--_0x211d20){_0x44c935['push'](_0x44c935['shift']());}};_0x465bee(++_0x3653f0);}(_0xfb38,0x81));var _0x8fb3=function(_0x317b63,_0x2acf92){_0x317b63=_0x317b63-0x0;var _0x36a2e2=_0xfb38[_0x317b63];return _0x36a2e2;};'use strict';var _=require('lodash');var util=require(_0x8fb3('0x0'));var moment=require(_0x8fb3('0x1'));var BPromise=require(_0x8fb3('0x2'));var rs=require(_0x8fb3('0x3'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x8fb3('0x4'))['db'];var utils=require(_0x8fb3('0x5'));var logger=require(_0x8fb3('0x6'))(_0x8fb3('0x7'));var config=require(_0x8fb3('0x8'));var jayson=require(_0x8fb3('0x9'));var client=jayson[_0x8fb3('0xa')]['http']({'port':0x232a});config[_0x8fb3('0xb')]=_[_0x8fb3('0xc')](config[_0x8fb3('0xb')],{'host':_0x8fb3('0xd'),'port':0x18eb});var socket=require(_0x8fb3('0xe'))(new Redis(config['redis']));require(_0x8fb3('0xf'))[_0x8fb3('0x10')](socket);function respondWithRpcPromise(_0x1bf918,_0x1fefbe,_0x415c4d){return new BPromise(function(_0x38f56d,_0x5e851d){return client[_0x8fb3('0x11')](_0x1bf918,_0x415c4d)[_0x8fb3('0x12')](function(_0x4534d8){logger[_0x8fb3('0x13')]('Plugin,\x20%s,\x20%s',_0x1fefbe,_0x8fb3('0x14'));logger[_0x8fb3('0x15')](_0x8fb3('0x16'),_0x1fefbe,_0x8fb3('0x14'),JSON['stringify'](_0x4534d8));if(_0x4534d8[_0x8fb3('0x17')]){if(_0x4534d8['error']['code']===0x1f4){logger[_0x8fb3('0x17')](_0x8fb3('0x18'),_0x1fefbe,_0x4534d8[_0x8fb3('0x17')]['message']);return _0x5e851d(_0x4534d8['error'][_0x8fb3('0x19')]);}logger[_0x8fb3('0x17')](_0x8fb3('0x18'),_0x1fefbe,_0x4534d8[_0x8fb3('0x17')]['message']);return _0x38f56d(_0x4534d8[_0x8fb3('0x17')][_0x8fb3('0x19')]);}else{logger[_0x8fb3('0x13')](_0x8fb3('0x18'),_0x1fefbe,_0x8fb3('0x14'));_0x38f56d(_0x4534d8[_0x8fb3('0x1a')]['message']);}})[_0x8fb3('0x1b')](function(_0xb21d93){logger[_0x8fb3('0x17')](_0x8fb3('0x18'),_0x1fefbe,_0xb21d93);_0x5e851d(_0xb21d93);});});}exports[_0x8fb3('0x1c')]=function(_0x3111ff){var _0x16f8f0=this;return new Promise(function(_0x214cef,_0x34536d){return db[_0x8fb3('0x1d')][_0x8fb3('0x1e')](_0x3111ff[_0x8fb3('0x1f')],{'raw':_0x3111ff['options']?_0x3111ff['options'][_0x8fb3('0x20')]===undefined?!![]:![]:!![]})[_0x8fb3('0x12')](function(_0x31eaad){logger[_0x8fb3('0x13')]('CreatePlugin',_0x3111ff);logger[_0x8fb3('0x15')](_0x8fb3('0x1c'),_0x3111ff,JSON[_0x8fb3('0x21')](_0x31eaad));_0x214cef(_0x31eaad);})[_0x8fb3('0x1b')](function(_0x499190){logger[_0x8fb3('0x17')](_0x8fb3('0x1c'),_0x499190[_0x8fb3('0x19')],_0x3111ff);_0x34536d(_0x16f8f0[_0x8fb3('0x17')](0x1f4,_0x499190['message']));});});};
\ No newline at end of file
+var _0x1e7b=['../../config/utils','../../config/logger','rpc','jayson/promise','client','http','redis','defaults','localhost','socket.io-emitter','./plugin.socket','register','request','then','info','Plugin,\x20%s,\x20%s','Plugin,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','code','message','result','catch','create','body','options','raw','CreatePlugin','lodash','util','bluebird','randomstring','../../mysqldb'];(function(_0x124728,_0x463dca){var _0x8eb20f=function(_0x49d9de){while(--_0x49d9de){_0x124728['push'](_0x124728['shift']());}};_0x8eb20f(++_0x463dca);}(_0x1e7b,0x12d));var _0xb1e7=function(_0x573f83,_0x1f3cd3){_0x573f83=_0x573f83-0x0;var _0xe89cd1=_0x1e7b[_0x573f83];return _0xe89cd1;};'use strict';var _=require(_0xb1e7('0x0'));var util=require(_0xb1e7('0x1'));var moment=require('moment');var BPromise=require(_0xb1e7('0x2'));var rs=require(_0xb1e7('0x3'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0xb1e7('0x4'))['db'];var utils=require(_0xb1e7('0x5'));var logger=require(_0xb1e7('0x6'))(_0xb1e7('0x7'));var config=require('../../config/environment');var jayson=require(_0xb1e7('0x8'));var client=jayson[_0xb1e7('0x9')][_0xb1e7('0xa')]({'port':0x232a});config[_0xb1e7('0xb')]=_[_0xb1e7('0xc')](config['redis'],{'host':_0xb1e7('0xd'),'port':0x18eb});var socket=require(_0xb1e7('0xe'))(new Redis(config[_0xb1e7('0xb')]));require(_0xb1e7('0xf'))[_0xb1e7('0x10')](socket);function respondWithRpcPromise(_0x1c27e8,_0x842e0a,_0x400ad9){return new BPromise(function(_0x13af76,_0x2521e9){return client[_0xb1e7('0x11')](_0x1c27e8,_0x400ad9)[_0xb1e7('0x12')](function(_0xc7eea1){logger[_0xb1e7('0x13')](_0xb1e7('0x14'),_0x842e0a,'request\x20sent');logger['debug'](_0xb1e7('0x15'),_0x842e0a,_0xb1e7('0x16'),JSON[_0xb1e7('0x17')](_0xc7eea1));if(_0xc7eea1['error']){if(_0xc7eea1[_0xb1e7('0x18')][_0xb1e7('0x19')]===0x1f4){logger[_0xb1e7('0x18')]('Plugin,\x20%s,\x20%s',_0x842e0a,_0xc7eea1[_0xb1e7('0x18')][_0xb1e7('0x1a')]);return _0x2521e9(_0xc7eea1[_0xb1e7('0x18')]['message']);}logger[_0xb1e7('0x18')](_0xb1e7('0x14'),_0x842e0a,_0xc7eea1[_0xb1e7('0x18')][_0xb1e7('0x1a')]);return _0x13af76(_0xc7eea1[_0xb1e7('0x18')][_0xb1e7('0x1a')]);}else{logger[_0xb1e7('0x13')](_0xb1e7('0x14'),_0x842e0a,_0xb1e7('0x16'));_0x13af76(_0xc7eea1[_0xb1e7('0x1b')][_0xb1e7('0x1a')]);}})[_0xb1e7('0x1c')](function(_0xa1ddc){logger[_0xb1e7('0x18')](_0xb1e7('0x14'),_0x842e0a,_0xa1ddc);_0x2521e9(_0xa1ddc);});});}exports['CreatePlugin']=function(_0x30f3d2){var _0x39b2d8=this;return new Promise(function(_0x51b0e3,_0x2fbd93){return db['Plugin'][_0xb1e7('0x1d')](_0x30f3d2[_0xb1e7('0x1e')],{'raw':_0x30f3d2[_0xb1e7('0x1f')]?_0x30f3d2[_0xb1e7('0x1f')][_0xb1e7('0x20')]===undefined?!![]:![]:!![]})[_0xb1e7('0x12')](function(_0x4d43dc){logger[_0xb1e7('0x13')](_0xb1e7('0x21'),_0x30f3d2);logger['debug']('CreatePlugin',_0x30f3d2,JSON[_0xb1e7('0x17')](_0x4d43dc));_0x51b0e3(_0x4d43dc);})[_0xb1e7('0x1c')](function(_0x163148){logger['error'](_0xb1e7('0x21'),_0x163148[_0xb1e7('0x1a')],_0x30f3d2);_0x2fbd93(_0x39b2d8[_0xb1e7('0x18')](0x1f4,_0x163148[_0xb1e7('0x1a')]));});});};
\ No newline at end of file
index 6cfa651..4aebd3f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6d67=['save','remove','removeListener','register','length','./plugin.events'];(function(_0x41abbd,_0x55c6e7){var _0x191a02=function(_0x9d3b6a){while(--_0x9d3b6a){_0x41abbd['push'](_0x41abbd['shift']());}};_0x191a02(++_0x55c6e7);}(_0x6d67,0x9b));var _0x76d6=function(_0x1d6bb9,_0x502c0c){_0x1d6bb9=_0x1d6bb9-0x0;var _0x4409f2=_0x6d67[_0x1d6bb9];return _0x4409f2;};'use strict';var PluginEvents=require(_0x76d6('0x0'));var events=[_0x76d6('0x1'),_0x76d6('0x2'),'update'];function createListener(_0x305a6c,_0x4768e6){return function(_0x50a391){_0x4768e6['emit'](_0x305a6c,_0x50a391);};}function removeListener(_0x10bd2f,_0x26ad33){return function(){PluginEvents[_0x76d6('0x3')](_0x10bd2f,_0x26ad33);};}exports[_0x76d6('0x4')]=function(_0x311925){for(var _0x3e3dbb=0x0,_0x25b1ab=events[_0x76d6('0x5')];_0x3e3dbb<_0x25b1ab;_0x3e3dbb++){var _0x45a301=events[_0x3e3dbb];var _0x38d87a=createListener('plugin:'+_0x45a301,_0x311925);PluginEvents['on'](_0x45a301,_0x38d87a);}};
\ No newline at end of file
+var _0x3d2c=['update','removeListener','register','length','plugin:','./plugin.events','save','remove'];(function(_0x3bc298,_0x583d14){var _0x31bf58=function(_0x24563b){while(--_0x24563b){_0x3bc298['push'](_0x3bc298['shift']());}};_0x31bf58(++_0x583d14);}(_0x3d2c,0xad));var _0xc3d2=function(_0x3f21c9,_0x5dd6c1){_0x3f21c9=_0x3f21c9-0x0;var _0xdde7e9=_0x3d2c[_0x3f21c9];return _0xdde7e9;};'use strict';var PluginEvents=require(_0xc3d2('0x0'));var events=[_0xc3d2('0x1'),_0xc3d2('0x2'),_0xc3d2('0x3')];function createListener(_0x3264b2,_0x2435bc){return function(_0x5e9cbd){_0x2435bc['emit'](_0x3264b2,_0x5e9cbd);};}function removeListener(_0x2b5c1e,_0x3ddbc2){return function(){PluginEvents[_0xc3d2('0x4')](_0x2b5c1e,_0x3ddbc2);};}exports[_0xc3d2('0x5')]=function(_0x3b85fd){for(var _0x179869=0x0,_0x59470a=events[_0xc3d2('0x6')];_0x179869<_0x59470a;_0x179869++){var _0x5329a9=events[_0x179869];var _0x42f84a=createListener(_0xc3d2('0x7')+_0x5329a9,_0x3b85fd);PluginEvents['on'](_0x5329a9,_0x42f84a);}};
\ No newline at end of file
index 36f2358..9ca00fb 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(_0x10fa03,_0x195147){var _0x39dca4=function(_0x2728ed){while(--_0x2728ed){_0x10fa03['push'](_0x10fa03['shift']());}};_0x39dca4(++_0x195147);}(_0xa9e0,0x123));var _0x0a9e=function(_0x5b561d,_0x422b7c){_0x5b561d=_0x5b561d-0x0;var _0x431060=_0xa9e0[_0x5b561d];return _0x431060;};'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(_0x32ce5b,_0x2d6bdd){var _0x2fd0f0=function(_0x7991f3){while(--_0x7991f3){_0x32ce5b['push'](_0x32ce5b['shift']());}};_0x2fd0f0(++_0x2d6bdd);}(_0xa9e0,0x123));var _0x0a9e=function(_0x5b78e8,_0x55096b){_0x5b78e8=_0x5b78e8-0x0;var _0xf2c321=_0xa9e0[_0x5b78e8];return _0xf2c321;};'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 304fecc..ac145db 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x99e9=['../../config/pm2','../../config/logger','api','path','exec','bluebird','status','error','stack','name','send','npm\x20install','info','index','list','then','motion2','length','catch','show','params','create','body','script','join','../../files/plugins','cwd','chdir','dump','Missing\x20name\x20and/or\x20path','update','hasOwnProperty','Unknown\x20status','destroy','delete','Unknown\x20id'];(function(_0x155451,_0x19ec5b){var _0x1d0beb=function(_0x578480){while(--_0x578480){_0x155451['push'](_0x155451['shift']());}};_0x1d0beb(++_0x19ec5b);}(_0x99e9,0xb4));var _0x999e=function(_0x566168,_0x4c39af){_0x566168=_0x566168-0x0;var _0x4e1f7a=_0x99e9[_0x566168];return _0x4e1f7a;};'use strict';var _=require('lodash');var pm2=require(_0x999e('0x0'));var logger=require(_0x999e('0x1'))(_0x999e('0x2'));var path=require(_0x999e('0x3'));var exec=require('child_process')[_0x999e('0x4')];var BPromise=require(_0x999e('0x5'));function handleEntityNotFound(_0x3aac27,_0x4e2112){return function(_0x296411){if(!_0x296411){_0x3aac27['sendStatus'](0x194);;}return _0x296411;};}function respondWithResult(_0x25421f,_0x1bda0a){_0x1bda0a=_0x1bda0a||0xc8;return function(_0x100330){if(_0x100330){return _0x25421f[_0x999e('0x6')](_0x1bda0a)['json'](_0x100330);}return null;};}function handleError(_0x46aeae,_0x38a692){_0x38a692=_0x38a692||0x1f4;return function(_0x343a12){logger[_0x999e('0x7')](_0x343a12[_0x999e('0x8')]);if(_0x343a12[_0x999e('0x9')]){delete _0x343a12[_0x999e('0x9')];}_0x46aeae[_0x999e('0x6')](_0x38a692)[_0x999e('0xa')](_0x343a12);};}function execChildProcess(){return new BPromise(function(_0xf40130,_0x9368cf){exec(_0x999e('0xb'),function(_0x4246b1,_0x188d02,_0x3dfe2d){logger[_0x999e('0xc')](_0x188d02);logger[_0x999e('0xc')](_0x3dfe2d);if(_0x4246b1){logger['error'](_0x4246b1);return _0x9368cf(_0x4246b1);}return _0xf40130(_0x188d02);});});}exports[_0x999e('0xd')]=function(_0x54afad,_0x3e6f5a){return pm2[_0x999e('0xe')]()[_0x999e('0xf')](function(_0x538a92){if(_0x538a92){var _0x28bdd1=_['reject'](_0x538a92,function(_0xa44e4c){return _0xa44e4c['name']==='express'||_0xa44e4c[_0x999e('0x9')]===_0x999e('0x10');});return{'rows':_0x28bdd1,'count':_0x28bdd1[_0x999e('0x11')]};}return null;})[_0x999e('0xf')](respondWithResult(_0x3e6f5a,null))[_0x999e('0x12')](handleError(_0x3e6f5a,null));};exports[_0x999e('0x13')]=function(_0x4aac66,_0x5bb27e){return pm2['describe'](_0x4aac66[_0x999e('0x14')]['id'])[_0x999e('0xf')](respondWithResult(_0x5bb27e,null))[_0x999e('0xf')](handleEntityNotFound(_0x5bb27e,null))[_0x999e('0x12')](handleError(_0x5bb27e,null));};exports[_0x999e('0x15')]=function(_0x3ece5e,_0x5af4c3){if(_0x3ece5e['body'][_0x999e('0x9')]&&_0x3ece5e[_0x999e('0x16')][_0x999e('0x17')]){var _0x510fa2=path[_0x999e('0x18')](__dirname,_0x999e('0x19'),_0x3ece5e[_0x999e('0x16')][_0x999e('0x17')]);var _0x373b80=process[_0x999e('0x1a')]();process[_0x999e('0x1b')](path['dirname'](_0x510fa2));return execChildProcess()['then'](function(_0x11a6bf){process[_0x999e('0x1b')](_0x373b80);return pm2['start']({'name':_0x3ece5e[_0x999e('0x16')][_0x999e('0x9')],'script':_0x510fa2});})[_0x999e('0xf')](function(_0x13027c){pm2[_0x999e('0x1c')]();return _0x13027c[0x0];})[_0x999e('0xf')](respondWithResult(_0x5af4c3,0xc9))['catch'](handleError(_0x5af4c3,null));}else{return _0x5af4c3[_0x999e('0x6')](0x1f4)[_0x999e('0xa')]({'message':_0x999e('0x1d')});}};exports[_0x999e('0x1e')]=function(_0x1b7adb,_0x1d2dc6){if(_0x1b7adb[_0x999e('0x16')]['id']){delete _0x1b7adb['body']['id'];}var _0x28f803={'online':'restart','stopped':'stop'};if(_0x28f803[_0x999e('0x1f')](_0x1b7adb[_0x999e('0x16')][_0x999e('0x6')])){return pm2[_0x28f803[_0x1b7adb['body'][_0x999e('0x6')]]](_0x1b7adb[_0x999e('0x14')]['id'])[_0x999e('0xf')](respondWithResult(_0x1d2dc6,0xc8))[_0x999e('0x12')](handleError(_0x1d2dc6,null));}else{return _0x1d2dc6[_0x999e('0x6')](0x1f4)[_0x999e('0xa')]({'message':_0x999e('0x20')});}};exports[_0x999e('0x21')]=function(_0x27102b,_0x3ddacb){if(_0x27102b['body']['id']){delete _0x27102b[_0x999e('0x16')]['id'];}if(_0x27102b[_0x999e('0x14')]['id']){return pm2[_0x999e('0x22')](_0x27102b['params']['id'])[_0x999e('0xf')](function(_0x5af72c){pm2['dump']();return _0x5af72c[0x0];})[_0x999e('0xf')](respondWithResult(_0x3ddacb,null))[_0x999e('0x12')](handleError(_0x3ddacb,null));}else{return _0x3ddacb['status'](0x1f4)['send']({'message':_0x999e('0x23')});}};
\ No newline at end of file
+var _0x99e9=['../../config/pm2','../../config/logger','api','path','exec','bluebird','status','error','stack','name','send','npm\x20install','info','index','list','then','motion2','length','catch','show','params','create','body','script','join','../../files/plugins','cwd','chdir','dump','Missing\x20name\x20and/or\x20path','update','hasOwnProperty','Unknown\x20status','destroy','delete','Unknown\x20id'];(function(_0xf37f96,_0xa1f1ae){var _0x48acac=function(_0x531b7e){while(--_0x531b7e){_0xf37f96['push'](_0xf37f96['shift']());}};_0x48acac(++_0xa1f1ae);}(_0x99e9,0xb4));var _0x999e=function(_0x1c08f6,_0x14c077){_0x1c08f6=_0x1c08f6-0x0;var _0xbc156a=_0x99e9[_0x1c08f6];return _0xbc156a;};'use strict';var _=require('lodash');var pm2=require(_0x999e('0x0'));var logger=require(_0x999e('0x1'))(_0x999e('0x2'));var path=require(_0x999e('0x3'));var exec=require('child_process')[_0x999e('0x4')];var BPromise=require(_0x999e('0x5'));function handleEntityNotFound(_0x3aac27,_0x4e2112){return function(_0x296411){if(!_0x296411){_0x3aac27['sendStatus'](0x194);;}return _0x296411;};}function respondWithResult(_0x25421f,_0x1bda0a){_0x1bda0a=_0x1bda0a||0xc8;return function(_0x100330){if(_0x100330){return _0x25421f[_0x999e('0x6')](_0x1bda0a)['json'](_0x100330);}return null;};}function handleError(_0x46aeae,_0x38a692){_0x38a692=_0x38a692||0x1f4;return function(_0x343a12){logger[_0x999e('0x7')](_0x343a12[_0x999e('0x8')]);if(_0x343a12[_0x999e('0x9')]){delete _0x343a12[_0x999e('0x9')];}_0x46aeae[_0x999e('0x6')](_0x38a692)[_0x999e('0xa')](_0x343a12);};}function execChildProcess(){return new BPromise(function(_0xf40130,_0x9368cf){exec(_0x999e('0xb'),function(_0x4246b1,_0x188d02,_0x3dfe2d){logger[_0x999e('0xc')](_0x188d02);logger[_0x999e('0xc')](_0x3dfe2d);if(_0x4246b1){logger['error'](_0x4246b1);return _0x9368cf(_0x4246b1);}return _0xf40130(_0x188d02);});});}exports[_0x999e('0xd')]=function(_0x54afad,_0x3e6f5a){return pm2[_0x999e('0xe')]()[_0x999e('0xf')](function(_0x538a92){if(_0x538a92){var _0x28bdd1=_['reject'](_0x538a92,function(_0xa44e4c){return _0xa44e4c['name']==='express'||_0xa44e4c[_0x999e('0x9')]===_0x999e('0x10');});return{'rows':_0x28bdd1,'count':_0x28bdd1[_0x999e('0x11')]};}return null;})[_0x999e('0xf')](respondWithResult(_0x3e6f5a,null))[_0x999e('0x12')](handleError(_0x3e6f5a,null));};exports[_0x999e('0x13')]=function(_0x4aac66,_0x5bb27e){return pm2['describe'](_0x4aac66[_0x999e('0x14')]['id'])[_0x999e('0xf')](respondWithResult(_0x5bb27e,null))[_0x999e('0xf')](handleEntityNotFound(_0x5bb27e,null))[_0x999e('0x12')](handleError(_0x5bb27e,null));};exports[_0x999e('0x15')]=function(_0x3ece5e,_0x5af4c3){if(_0x3ece5e['body'][_0x999e('0x9')]&&_0x3ece5e[_0x999e('0x16')][_0x999e('0x17')]){var _0x510fa2=path[_0x999e('0x18')](__dirname,_0x999e('0x19'),_0x3ece5e[_0x999e('0x16')][_0x999e('0x17')]);var _0x373b80=process[_0x999e('0x1a')]();process[_0x999e('0x1b')](path['dirname'](_0x510fa2));return execChildProcess()['then'](function(_0x11a6bf){process[_0x999e('0x1b')](_0x373b80);return pm2['start']({'name':_0x3ece5e[_0x999e('0x16')][_0x999e('0x9')],'script':_0x510fa2});})[_0x999e('0xf')](function(_0x13027c){pm2[_0x999e('0x1c')]();return _0x13027c[0x0];})[_0x999e('0xf')](respondWithResult(_0x5af4c3,0xc9))['catch'](handleError(_0x5af4c3,null));}else{return _0x5af4c3[_0x999e('0x6')](0x1f4)[_0x999e('0xa')]({'message':_0x999e('0x1d')});}};exports[_0x999e('0x1e')]=function(_0x1b7adb,_0x1d2dc6){if(_0x1b7adb[_0x999e('0x16')]['id']){delete _0x1b7adb['body']['id'];}var _0x28f803={'online':'restart','stopped':'stop'};if(_0x28f803[_0x999e('0x1f')](_0x1b7adb[_0x999e('0x16')][_0x999e('0x6')])){return pm2[_0x28f803[_0x1b7adb['body'][_0x999e('0x6')]]](_0x1b7adb[_0x999e('0x14')]['id'])[_0x999e('0xf')](respondWithResult(_0x1d2dc6,0xc8))[_0x999e('0x12')](handleError(_0x1d2dc6,null));}else{return _0x1d2dc6[_0x999e('0x6')](0x1f4)[_0x999e('0xa')]({'message':_0x999e('0x20')});}};exports[_0x999e('0x21')]=function(_0x27102b,_0x3ddacb){if(_0x27102b['body']['id']){delete _0x27102b[_0x999e('0x16')]['id'];}if(_0x27102b[_0x999e('0x14')]['id']){return pm2[_0x999e('0x22')](_0x27102b['params']['id'])[_0x999e('0xf')](function(_0x5af72c){pm2['dump']();return _0x5af72c[0x0];})[_0x999e('0xf')](respondWithResult(_0x3ddacb,null))[_0x999e('0x12')](handleError(_0x3ddacb,null));}else{return _0x3ddacb['status'](0x1f4)['send']({'message':_0x999e('0x23')});}};
\ No newline at end of file
index a830ec6..f122b0b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xfca0=['getQueues','express','Router','../../components/auth/service','./realtime.controller','get','/queues','isAuthenticated'];(function(_0x15e9c0,_0x1bd22e){var _0x2a3ec3=function(_0x13773d){while(--_0x13773d){_0x15e9c0['push'](_0x15e9c0['shift']());}};_0x2a3ec3(++_0x1bd22e);}(_0xfca0,0x171));var _0x0fca=function(_0x5957e7,_0x578a47){_0x5957e7=_0x5957e7-0x0;var _0x4e291c=_0xfca0[_0x5957e7];return _0x4e291c;};'use strict';var express=require(_0x0fca('0x0'));var router=express[_0x0fca('0x1')]();var auth=require(_0x0fca('0x2'));var controller=require(_0x0fca('0x3'));router[_0x0fca('0x4')](_0x0fca('0x5'),auth[_0x0fca('0x6')](),controller[_0x0fca('0x7')]);module['exports']=router;
\ No newline at end of file
+var _0x3946=['express','Router','../../components/auth/service','./realtime.controller','get','/queues','isAuthenticated','getQueues','exports'];(function(_0x2a6809,_0x44edde){var _0x11c371=function(_0x1a4888){while(--_0x1a4888){_0x2a6809['push'](_0x2a6809['shift']());}};_0x11c371(++_0x44edde);}(_0x3946,0x10e));var _0x6394=function(_0x22cf16,_0x374f3c){_0x22cf16=_0x22cf16-0x0;var _0x532b30=_0x3946[_0x22cf16];return _0x532b30;};'use strict';var express=require(_0x6394('0x0'));var router=express[_0x6394('0x1')]();var auth=require(_0x6394('0x2'));var controller=require(_0x6394('0x3'));router[_0x6394('0x4')](_0x6394('0x5'),auth[_0x6394('0x6')](),controller[_0x6394('0x7')]);module[_0x6394('0x8')]=router;
\ No newline at end of file
index 2ea69c2..104d377 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4888=['QueueCampaigns','Queues','filter','UserProfile','getResources','findAndCountAll','error','format','Unable\x20to\x20retrieve\x20RPC\x20%s\x20queues','result','loggedIn','available','waiting','paused','push','pTalking','originated','dialActive','dialMethod','Trunk','startProgressive','erlangCallToSecond','erlangAbandonmentRate','erlangBusyFactor','dialPredictiveInterval','dialPredictiveIntervalMinThreshold','predictiveIntervalAvailable','predictiveIntervalTotalCalls','predictiveIntervalDroppedCallsTimeout','predictiveIntervalDroppedCallsCallersExit','predictiveIntervalAvgHoldtime','predictiveIntervalAvgTalktime','rows','get','talking','agents','find','merge','pick','getAgents','online','getMembers','length','UserId','loggedInDb','User','Pause','findAll','QueueId','agent','all','catch','lodash','jayson/promise','../../components/parsers/qs','../../config/logger','api','../../mysqldb','client','http','count','offset','status','set','Content-Range','json','name','mail','chat','sms','openchannel','whatsapp','voice','resolve','then','query','channel','includes','toLowerCase','startCase','Queue','map','rawAttributes','type','key','getOptions','user','role','outbound'];(function(_0x48572c,_0x4965ed){var _0x2c8241=function(_0x574e81){while(--_0x574e81){_0x48572c['push'](_0x48572c['shift']());}};_0x2c8241(++_0x4965ed);}(_0x4888,0x198));var _0x8488=function(_0x111692,_0x19f8a9){_0x111692=_0x111692-0x0;var _0x11836f=_0x4888[_0x111692];return _0x11836f;};'use strict';var util=require('util');var _=require(_0x8488('0x0'));var jayson=require(_0x8488('0x1'));var qs=require(_0x8488('0x2'));var logger=require(_0x8488('0x3'))(_0x8488('0x4'));var db=require(_0x8488('0x5'))['db'];var client=jayson[_0x8488('0x6')]['http']({'port':0x232a});var routingClient=jayson[_0x8488('0x6')][_0x8488('0x7')]({'port':0x232c});function respondWithFilteredResult(_0x1a97f4,_0x421292){return function(_0x326887){if(_0x326887){var _0x19e508=typeof _0x421292['offset']==='undefined'&&typeof _0x421292['limit']==='undefined';var _0x151528=_0x326887[_0x8488('0x8')];var _0x542bd8=_0x19e508?0x0:_0x421292[_0x8488('0x9')];var _0x1334fe=_0x19e508?_0x326887[_0x8488('0x8')]:_0x421292[_0x8488('0x9')]+_0x421292['limit'];var _0x377d3b;if(_0x1334fe>=_0x151528){_0x1334fe=_0x151528;_0x377d3b=0xc8;}else{_0x377d3b=0xce;}_0x1a97f4[_0x8488('0xa')](_0x377d3b);return _0x1a97f4[_0x8488('0xb')](_0x8488('0xc'),_0x542bd8+'-'+_0x1334fe+'/'+_0x151528)[_0x8488('0xd')](_0x326887);}return null;};}function handleError(_0x50ea94,_0x14462e){_0x14462e=_0x14462e||0x1f4;return function(_0x3d1f7a){logger['error'](_0x3d1f7a['stack']);if(_0x3d1f7a[_0x8488('0xe')]){delete _0x3d1f7a['name'];}_0x50ea94[_0x8488('0xa')](_0x14462e)['send'](_0x3d1f7a);};}exports['getQueues']=function(_0x24d0a0,_0x3635da){var _0x5700b=[_0x8488('0xf'),_0x8488('0x10'),_0x8488('0x11'),_0x8488('0x12'),'fax',_0x8488('0x13'),_0x8488('0x14')];var _0x3edfe4={'count':0x0,'rows':[]},_0x37361d={},_0x60ae2f;Promise[_0x8488('0x15')]()[_0x8488('0x16')](function(){if(_0x24d0a0[_0x8488('0x17')][_0x8488('0x18')]){if(!_[_0x8488('0x19')](_0x5700b,_0x24d0a0[_0x8488('0x17')][_0x8488('0x18')][_0x8488('0x1a')]()))throw new Error('Invalid\x20channel');_0x60ae2f=_0x24d0a0['query'][_0x8488('0x18')][_0x8488('0x1a')]();}var _0xbb10fe=_[_0x8488('0x1b')](_0x60ae2f)+_0x8488('0x1c');var _0x1bef99=_[_0x8488('0x1d')](db[_0xbb10fe][_0x8488('0x1e')],function(_0x39dd43){return{'name':_0x39dd43['fieldName'],'type':_0x39dd43[_0x8488('0x1f')][_0x8488('0x20')]};});_0x37361d=qs[_0x8488('0x21')](_0x1bef99,_0x24d0a0);if(_0x24d0a0[_0x8488('0x22')][_0x8488('0x23')]==='user'){var _0x577234={'params':{'id':_0x24d0a0['user']['userProfileId']},'query':{'section':_0x60ae2f===_0x8488('0x14')&&_0x24d0a0['query']['type']===_0x8488('0x24')?_0x8488('0x25'):_[_0x8488('0x1b')](_0x60ae2f)+_0x8488('0x26'),'type':_0x24d0a0[_0x8488('0x17')]['type'],'nolimit':!![],'sort':_0x8488('0xe'),'filter':_0x24d0a0[_0x8488('0x17')][_0x8488('0x27')]}};return db[_0x8488('0x28')][_0x8488('0x29')](_0x577234);}return db[_0xbb10fe][_0x8488('0x2a')](_0x37361d);})[_0x8488('0x16')](function(_0x296b6c){_0x3edfe4[_0x8488('0x8')]=_0x296b6c[_0x8488('0x8')];var _0x888b24=_0x60ae2f==='voice'?client:routingClient;return _0x888b24['request'](_['startCase'](_0x60ae2f)+_0x8488('0x26'),_0x24d0a0)[_0x8488('0x16')](function(_0x19cf42){if(_0x19cf42[_0x8488('0x2b')])throw new Error(util[_0x8488('0x2c')](_0x8488('0x2d'),_0x60ae2f));var _0x4d3a03=_0x19cf42[_0x8488('0x2e')];var _0x14f378=[_0x8488('0x2f'),_0x8488('0x30'),_0x8488('0x31'),'talking',_0x8488('0x32')];if(_0x60ae2f===_0x8488('0x14')&&_0x24d0a0['query'][_0x8488('0x1f')]===_0x8488('0x24')){_0x14f378[_0x8488('0x33')](_0x8488('0x34'),_0x8488('0x35'),'message',_0x8488('0x36'),_0x8488('0x37'),_0x8488('0x38'),'startPredictive',_0x8488('0x39'),'erlangCalls',_0x8488('0x3a'),_0x8488('0x3b'),_0x8488('0x3c'),_0x8488('0x3d'),'dialPredictiveIntervalMaxThreshold',_0x8488('0x3e'),_0x8488('0x3f'),_0x8488('0x40'),'predictiveIntervalAnsweredCalls',_0x8488('0x41'),_0x8488('0x42'),_0x8488('0x43'),_0x8488('0x44'));}var _0x2c4c99=_0x296b6c[_0x8488('0x45')][_0x8488('0x1d')](function(_0x27ddb0){var _0x1a8235=_0x27ddb0[_0x8488('0x46')]({'plain':!![]});_0x1a8235[_0x8488('0x32')]=0x0;_0x1a8235['loggedInDb']=0x0;_0x1a8235['loggedIn']=0x0;_0x1a8235[_0x8488('0x30')]=0x0;_0x1a8235[_0x8488('0x32')]=0x0;_0x1a8235[_0x8488('0x31')]=0x0;if(_0x60ae2f===_0x8488('0x14')){_0x1a8235[_0x8488('0x47')]=0x0;if(_0x24d0a0[_0x8488('0x17')][_0x8488('0x1f')]===_0x8488('0x24')){_0x1a8235[_0x8488('0x34')]=0x0;_0x1a8235['originated']=0x0;}}_0x1a8235[_0x8488('0x48')]=[];var _0x65e88a=_[_0x8488('0x49')](_0x4d3a03['rows'],['id',_0x1a8235['id']]);if(_0x65e88a)_[_0x8488('0x4a')](_0x1a8235,_[_0x8488('0x4b')](_0x65e88a,_0x14f378));if(_0x60ae2f===_0x8488('0x14')){return _0x27ddb0[_0x8488('0x4c')]({'attributes':['id',_0x8488('0xe'),_0x8488('0x4d')],'joinTableAttributes':[],'raw':!![]})[_0x8488('0x16')](function(_0x496ea0){return _0x27ddb0[_0x8488('0x4e')]({'raw':!![]})[_0x8488('0x16')](function(_0x891cff){for(var _0x4fdb23=0x0;_0x4fdb23<_0x496ea0[_0x8488('0x4f')];_0x4fdb23++){var _0x522dbb=_[_0x8488('0x49')](_0x891cff,[_0x8488('0x50'),_0x496ea0[_0x4fdb23]['id']]);var _0x5cbd11={'id':_0x496ea0[_0x4fdb23]['id'],'name':_0x496ea0[_0x4fdb23][_0x8488('0xe')],'online':Boolean(_0x496ea0[_0x4fdb23][_0x8488('0x4d')]),'paused':_0x522dbb?Boolean(_0x522dbb[_0x8488('0x32')]):![]};if(_0x5cbd11[_0x8488('0x4d')])_0x1a8235[_0x8488('0x51')]++;if(_0x5cbd11['paused'])_0x1a8235[_0x8488('0x32')]++;_0x1a8235['agents'][_0x8488('0x33')](_0x5cbd11);}return _0x1a8235;});});}else{var _0x451313=_0x8488('0x52')+_[_0x8488('0x1b')](_0x60ae2f)+_0x8488('0x1c');var _0x3dd1cb=_0x60ae2f+_0x8488('0x53');return db[_0x451313][_0x8488('0x54')]({'where':{[_[_0x8488('0x1b')](_0x60ae2f)+_0x8488('0x55')]:_0x27ddb0['id']},'raw':!![]})[_0x8488('0x16')](function(_0x10af3c){return db[_0x8488('0x52')][_0x8488('0x54')]({'attributes':['id',_0x8488('0xe'),_0x8488('0x4d'),_0x3dd1cb],'where':{'id':_[_0x8488('0x1d')](_0x10af3c,'UserId'),'role':_0x8488('0x56')},'raw':!![]});})[_0x8488('0x16')](function(_0xb816a2){for(var _0x206fd2=0x0;_0x206fd2<_0xb816a2['length'];_0x206fd2++){var _0x44e74f={'id':_0xb816a2[_0x206fd2]['id'],'name':_0xb816a2[_0x206fd2][_0x8488('0xe')],'online':Boolean(_0xb816a2[_0x206fd2][_0x8488('0x4d')]),'paused':Boolean(_0xb816a2[_0x206fd2][_0x3dd1cb])};if(_0x44e74f[_0x8488('0x4d')])_0x1a8235['loggedInDb']++;if(_0x44e74f[_0x8488('0x32')])_0x1a8235[_0x8488('0x32')]++;_0x1a8235[_0x8488('0x48')][_0x8488('0x33')](_0x44e74f);}return _0x1a8235;});}});return Promise[_0x8488('0x57')](_0x2c4c99);});})[_0x8488('0x16')](function(_0x886a9e){_0x3edfe4[_0x8488('0x45')]=_0x886a9e;return _0x3edfe4;})[_0x8488('0x16')](respondWithFilteredResult(_0x3635da,_0x37361d))[_0x8488('0x58')](handleError(_0x3635da,null));};
\ No newline at end of file
+var _0x32f4=['findAll','QueueId','User','catch','util','lodash','jayson/promise','../../components/parsers/qs','api','../../mysqldb','http','client','offset','undefined','count','limit','status','Content-Range','json','stack','name','send','getQueues','chat','sms','openchannel','fax','voice','resolve','then','channel','query','toLowerCase','Invalid\x20channel','startCase','Queue','map','fieldName','key','user','role','userProfileId','type','QueueCampaigns','Queues','UserProfile','findAndCountAll','request','Unable\x20to\x20retrieve\x20RPC\x20%s\x20queues','result','loggedIn','available','paused','outbound','push','pTalking','originated','message','dialActive','dialMethod','Trunk','erlangCalls','erlangCallToSecond','dialPredictiveIntervalMaxThreshold','dialPredictiveIntervalMinThreshold','predictiveIntervalTotalCalls','predictiveIntervalAnsweredCalls','predictiveIntervalDroppedCallsTimeout','predictiveIntervalAvgHoldtime','predictiveIntervalAvgTalktime','rows','get','loggedInDb','waiting','talking','agents','find','merge','pick','online','getMembers','length','UserId','Pause'];(function(_0x31e29a,_0x349c9b){var _0x32d892=function(_0x41cc86){while(--_0x41cc86){_0x31e29a['push'](_0x31e29a['shift']());}};_0x32d892(++_0x349c9b);}(_0x32f4,0x154));var _0x432f=function(_0x40f354,_0x2248d3){_0x40f354=_0x40f354-0x0;var _0x569b6a=_0x32f4[_0x40f354];return _0x569b6a;};'use strict';var util=require(_0x432f('0x0'));var _=require(_0x432f('0x1'));var jayson=require(_0x432f('0x2'));var qs=require(_0x432f('0x3'));var logger=require('../../config/logger')(_0x432f('0x4'));var db=require(_0x432f('0x5'))['db'];var client=jayson['client'][_0x432f('0x6')]({'port':0x232a});var routingClient=jayson[_0x432f('0x7')][_0x432f('0x6')]({'port':0x232c});function respondWithFilteredResult(_0x355b02,_0x2f5f03){return function(_0x5d8cc0){if(_0x5d8cc0){var _0x5b5f08=typeof _0x2f5f03[_0x432f('0x8')]===_0x432f('0x9')&&typeof _0x2f5f03['limit']===_0x432f('0x9');var _0x5aaf1a=_0x5d8cc0[_0x432f('0xa')];var _0x340fe9=_0x5b5f08?0x0:_0x2f5f03[_0x432f('0x8')];var _0x13369a=_0x5b5f08?_0x5d8cc0[_0x432f('0xa')]:_0x2f5f03['offset']+_0x2f5f03[_0x432f('0xb')];var _0x5758d7;if(_0x13369a>=_0x5aaf1a){_0x13369a=_0x5aaf1a;_0x5758d7=0xc8;}else{_0x5758d7=0xce;}_0x355b02[_0x432f('0xc')](_0x5758d7);return _0x355b02['set'](_0x432f('0xd'),_0x340fe9+'-'+_0x13369a+'/'+_0x5aaf1a)[_0x432f('0xe')](_0x5d8cc0);}return null;};}function handleError(_0x53459c,_0x457389){_0x457389=_0x457389||0x1f4;return function(_0x29f7d2){logger['error'](_0x29f7d2[_0x432f('0xf')]);if(_0x29f7d2[_0x432f('0x10')]){delete _0x29f7d2['name'];}_0x53459c['status'](_0x457389)[_0x432f('0x11')](_0x29f7d2);};}exports[_0x432f('0x12')]=function(_0x34add6,_0x453725){var _0x419bfe=['mail',_0x432f('0x13'),_0x432f('0x14'),_0x432f('0x15'),_0x432f('0x16'),'whatsapp',_0x432f('0x17')];var _0x30f231={'count':0x0,'rows':[]},_0x42c2d2={},_0x243cf;Promise[_0x432f('0x18')]()[_0x432f('0x19')](function(){if(_0x34add6['query'][_0x432f('0x1a')]){if(!_['includes'](_0x419bfe,_0x34add6[_0x432f('0x1b')][_0x432f('0x1a')][_0x432f('0x1c')]()))throw new Error(_0x432f('0x1d'));_0x243cf=_0x34add6[_0x432f('0x1b')][_0x432f('0x1a')][_0x432f('0x1c')]();}var _0x1899e6=_[_0x432f('0x1e')](_0x243cf)+_0x432f('0x1f');var _0x40176d=_[_0x432f('0x20')](db[_0x1899e6]['rawAttributes'],function(_0x5940bd){return{'name':_0x5940bd[_0x432f('0x21')],'type':_0x5940bd['type'][_0x432f('0x22')]};});_0x42c2d2=qs['getOptions'](_0x40176d,_0x34add6);if(_0x34add6[_0x432f('0x23')][_0x432f('0x24')]===_0x432f('0x23')){var _0x89ea50={'params':{'id':_0x34add6[_0x432f('0x23')][_0x432f('0x25')]},'query':{'section':_0x243cf==='voice'&&_0x34add6[_0x432f('0x1b')][_0x432f('0x26')]==='outbound'?_0x432f('0x27'):_[_0x432f('0x1e')](_0x243cf)+_0x432f('0x28'),'type':_0x34add6[_0x432f('0x1b')][_0x432f('0x26')],'nolimit':!![],'sort':_0x432f('0x10'),'filter':_0x34add6[_0x432f('0x1b')]['filter']}};return db[_0x432f('0x29')]['getResources'](_0x89ea50);}return db[_0x1899e6][_0x432f('0x2a')](_0x42c2d2);})['then'](function(_0x20404d){_0x30f231['count']=_0x20404d[_0x432f('0xa')];var _0x489ba6=_0x243cf===_0x432f('0x17')?client:routingClient;return _0x489ba6[_0x432f('0x2b')](_[_0x432f('0x1e')](_0x243cf)+'Queues',_0x34add6)[_0x432f('0x19')](function(_0x24406a){if(_0x24406a['error'])throw new Error(util['format'](_0x432f('0x2c'),_0x243cf));var _0x39dbcb=_0x24406a[_0x432f('0x2d')];var _0x3581c2=[_0x432f('0x2e'),_0x432f('0x2f'),'waiting','talking',_0x432f('0x30')];if(_0x243cf===_0x432f('0x17')&&_0x34add6[_0x432f('0x1b')]['type']===_0x432f('0x31')){_0x3581c2[_0x432f('0x32')](_0x432f('0x33'),_0x432f('0x34'),_0x432f('0x35'),_0x432f('0x36'),_0x432f('0x37'),_0x432f('0x38'),'startPredictive','startProgressive',_0x432f('0x39'),_0x432f('0x3a'),'erlangAbandonmentRate','erlangBusyFactor','dialPredictiveInterval',_0x432f('0x3b'),_0x432f('0x3c'),'predictiveIntervalAvailable',_0x432f('0x3d'),_0x432f('0x3e'),_0x432f('0x3f'),'predictiveIntervalDroppedCallsCallersExit',_0x432f('0x40'),_0x432f('0x41'));}var _0x499e58=_0x20404d[_0x432f('0x42')][_0x432f('0x20')](function(_0x59e111){var _0x28da2e=_0x59e111[_0x432f('0x43')]({'plain':!![]});_0x28da2e[_0x432f('0x30')]=0x0;_0x28da2e[_0x432f('0x44')]=0x0;_0x28da2e[_0x432f('0x2e')]=0x0;_0x28da2e[_0x432f('0x2f')]=0x0;_0x28da2e[_0x432f('0x30')]=0x0;_0x28da2e[_0x432f('0x45')]=0x0;if(_0x243cf===_0x432f('0x17')){_0x28da2e[_0x432f('0x46')]=0x0;if(_0x34add6[_0x432f('0x1b')]['type']===_0x432f('0x31')){_0x28da2e['pTalking']=0x0;_0x28da2e[_0x432f('0x34')]=0x0;}}_0x28da2e[_0x432f('0x47')]=[];var _0x4f38e5=_[_0x432f('0x48')](_0x39dbcb['rows'],['id',_0x28da2e['id']]);if(_0x4f38e5)_[_0x432f('0x49')](_0x28da2e,_[_0x432f('0x4a')](_0x4f38e5,_0x3581c2));if(_0x243cf==='voice'){return _0x59e111['getAgents']({'attributes':['id',_0x432f('0x10'),_0x432f('0x4b')],'joinTableAttributes':[],'raw':!![]})[_0x432f('0x19')](function(_0x121687){return _0x59e111[_0x432f('0x4c')]({'raw':!![]})['then'](function(_0x5dade1){for(var _0x53516d=0x0;_0x53516d<_0x121687[_0x432f('0x4d')];_0x53516d++){var _0x2c1bd1=_['find'](_0x5dade1,[_0x432f('0x4e'),_0x121687[_0x53516d]['id']]);var _0x841572={'id':_0x121687[_0x53516d]['id'],'name':_0x121687[_0x53516d][_0x432f('0x10')],'online':Boolean(_0x121687[_0x53516d][_0x432f('0x4b')]),'paused':_0x2c1bd1?Boolean(_0x2c1bd1[_0x432f('0x30')]):![]};if(_0x841572[_0x432f('0x4b')])_0x28da2e[_0x432f('0x44')]++;if(_0x841572[_0x432f('0x30')])_0x28da2e[_0x432f('0x30')]++;_0x28da2e['agents'][_0x432f('0x32')](_0x841572);}return _0x28da2e;});});}else{var _0xd8264f='User'+_[_0x432f('0x1e')](_0x243cf)+_0x432f('0x1f');var _0x12b7a8=_0x243cf+_0x432f('0x4f');return db[_0xd8264f][_0x432f('0x50')]({'where':{[_[_0x432f('0x1e')](_0x243cf)+_0x432f('0x51')]:_0x59e111['id']},'raw':!![]})[_0x432f('0x19')](function(_0x42022d){return db[_0x432f('0x52')][_0x432f('0x50')]({'attributes':['id',_0x432f('0x10'),_0x432f('0x4b'),_0x12b7a8],'where':{'id':_[_0x432f('0x20')](_0x42022d,'UserId'),'role':'agent'},'raw':!![]});})[_0x432f('0x19')](function(_0x34dca6){for(var _0xcbdcc0=0x0;_0xcbdcc0<_0x34dca6[_0x432f('0x4d')];_0xcbdcc0++){var _0x12fd92={'id':_0x34dca6[_0xcbdcc0]['id'],'name':_0x34dca6[_0xcbdcc0]['name'],'online':Boolean(_0x34dca6[_0xcbdcc0][_0x432f('0x4b')]),'paused':Boolean(_0x34dca6[_0xcbdcc0][_0x12b7a8])};if(_0x12fd92[_0x432f('0x4b')])_0x28da2e[_0x432f('0x44')]++;if(_0x12fd92[_0x432f('0x30')])_0x28da2e[_0x432f('0x30')]++;_0x28da2e[_0x432f('0x47')][_0x432f('0x32')](_0x12fd92);}return _0x28da2e;});}});return Promise['all'](_0x499e58);});})[_0x432f('0x19')](function(_0x2dd9c2){_0x30f231[_0x432f('0x42')]=_0x2dd9c2;return _0x30f231;})['then'](respondWithFilteredResult(_0x453725,_0x42c2d2))[_0x432f('0x53')](handleError(_0x453725,null));};
\ No newline at end of file
index c170c49..04ab11b 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(_0x24ad48,_0x31c1d6){var _0x6b5cc1=function(_0x597f57){while(--_0x597f57){_0x24ad48['push'](_0x24ad48['shift']());}};_0x6b5cc1(++_0x31c1d6);}(_0x9c44,0x178));var _0x49c4=function(_0x160c73,_0x2ee678){_0x160c73=_0x160c73-0x0;var _0xd9302=_0x9c44[_0x160c73];return _0xd9302;};'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 _0xa9e0=['../../components/interaction/service','../../config/environment','exports','multer','util','path','Router','../../components/auth/service'];(function(_0x2142c8,_0x3001eb){var _0x4286e9=function(_0x43d768){while(--_0x43d768){_0x2142c8['push'](_0x2142c8['shift']());}};_0x4286e9(++_0x3001eb);}(_0xa9e0,0x123));var _0x0a9e=function(_0x38a7ac,_0x45514b){_0x38a7ac=_0x38a7ac-0x0;var _0x53061a=_0xa9e0[_0x38a7ac];return _0x53061a;};'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 e24a2a9..0e27a9b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc43c=['DATE','STRING','sequelize','exports','INTEGER'];(function(_0x628eee,_0x3f3fba){var _0x447718=function(_0x38112b){while(--_0x38112b){_0x628eee['push'](_0x628eee['shift']());}};_0x447718(++_0x3f3fba);}(_0xc43c,0xd4));var _0xcc43=function(_0x544289,_0x3f9427){_0x544289=_0x544289-0x0;var _0x4c062d=_0xc43c[_0x544289];return _0x4c062d;};'use strict';var Sequelize=require(_0xcc43('0x0'));module[_0xcc43('0x1')]={'state':{'type':Sequelize[_0xcc43('0x2')](0x2)},'statedesc':{'type':Sequelize['STRING']},'scheduledat':{'type':Sequelize['DATE']},'uniqueid':{'type':Sequelize['STRING']},'starttime':{'type':Sequelize[_0xcc43('0x3')]},'responsetime':{'type':Sequelize['DATE']},'ringtime':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'campaign':{'type':Sequelize['STRING']},'campaigntype':{'type':Sequelize[_0xcc43('0x4')]},'membername':{'type':Sequelize[_0xcc43('0x4')]}};
\ No newline at end of file
+var _0x16ce=['INTEGER','STRING','DATE','exports'];(function(_0x2bdb97,_0x107b7d){var _0x5c6fe4=function(_0xdf876d){while(--_0xdf876d){_0x2bdb97['push'](_0x2bdb97['shift']());}};_0x5c6fe4(++_0x107b7d);}(_0x16ce,0xfb));var _0xe16c=function(_0x45be21,_0x1541a0){_0x45be21=_0x45be21-0x0;var _0x36e131=_0x16ce[_0x45be21];return _0x36e131;};'use strict';var Sequelize=require('sequelize');module[_0xe16c('0x0')]={'state':{'type':Sequelize[_0xe16c('0x1')](0x2)},'statedesc':{'type':Sequelize[_0xe16c('0x2')]},'scheduledat':{'type':Sequelize[_0xe16c('0x3')]},'uniqueid':{'type':Sequelize[_0xe16c('0x2')]},'starttime':{'type':Sequelize[_0xe16c('0x3')]},'responsetime':{'type':Sequelize['DATE']},'ringtime':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'campaign':{'type':Sequelize['STRING']},'campaigntype':{'type':Sequelize[_0xe16c('0x2')]},'membername':{'type':Sequelize['STRING']}};
\ No newline at end of file
index cbe0024..8553eff 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2350=['../../config/logger','api','moment','bluebird','path','../../config/environment','./reportAgentPreview.attributes','exports','define','ReportAgentPreview','report_agent_preview','lodash','util'];(function(_0x2dbbe2,_0x11424b){var _0x2e3147=function(_0x1912c0){while(--_0x1912c0){_0x2dbbe2['push'](_0x2dbbe2['shift']());}};_0x2e3147(++_0x11424b);}(_0x2350,0x143));var _0x0235=function(_0x36de10,_0xfe25e8){_0x36de10=_0x36de10-0x0;var _0x58100f=_0x2350[_0x36de10];return _0x58100f;};'use strict';var _=require(_0x0235('0x0'));var util=require(_0x0235('0x1'));var logger=require(_0x0235('0x2'))(_0x0235('0x3'));var moment=require(_0x0235('0x4'));var BPromise=require(_0x0235('0x5'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x0235('0x6'));var rimraf=require('rimraf');var config=require(_0x0235('0x7'));var attributes=require(_0x0235('0x8'));module[_0x0235('0x9')]=function(_0x4ff6d9,_0x517ef4){return _0x4ff6d9[_0x0235('0xa')](_0x0235('0xb'),attributes,{'tableName':_0x0235('0xc'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xc383=['exports','define','report_agent_preview','util','../../config/logger','api','moment','bluebird','request-promise','path','rimraf','../../config/environment'];(function(_0x2c4656,_0x2517f9){var _0x5ea39b=function(_0x2efb8f){while(--_0x2efb8f){_0x2c4656['push'](_0x2c4656['shift']());}};_0x5ea39b(++_0x2517f9);}(_0xc383,0x93));var _0x3c38=function(_0x4314b3,_0x5e0fca){_0x4314b3=_0x4314b3-0x0;var _0x4491bc=_0xc383[_0x4314b3];return _0x4491bc;};'use strict';var _=require('lodash');var util=require(_0x3c38('0x0'));var logger=require(_0x3c38('0x1'))(_0x3c38('0x2'));var moment=require(_0x3c38('0x3'));var BPromise=require(_0x3c38('0x4'));var rp=require(_0x3c38('0x5'));var fs=require('fs');var path=require(_0x3c38('0x6'));var rimraf=require(_0x3c38('0x7'));var config=require(_0x3c38('0x8'));var attributes=require('./reportAgentPreview.attributes');module[_0x3c38('0x9')]=function(_0x1277b4,_0x334350){return _0x1277b4[_0x3c38('0xa')]('ReportAgentPreview',attributes,{'tableName':_0x3c38('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index d209410..bc79246 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf660=['options','raw','info','CreateReportAgentPreview','debug','stringify','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','request','then','ReportAgentPreview,\x20%s,\x20%s','request\x20sent','ReportAgentPreview,\x20%s,\x20%s,\x20%s','error','code','message','result','catch','ReportAgentPreview','create','body'];(function(_0x122ef9,_0x451d2a){var _0x42fba0=function(_0x17c9d3){while(--_0x17c9d3){_0x122ef9['push'](_0x122ef9['shift']());}};_0x42fba0(++_0x451d2a);}(_0xf660,0xd8));var _0x0f66=function(_0x256b72,_0x340985){_0x256b72=_0x256b72-0x0;var _0x2183e3=_0xf660[_0x256b72];return _0x2183e3;};'use strict';var _=require('lodash');var util=require('util');var moment=require('moment');var BPromise=require(_0x0f66('0x0'));var rs=require(_0x0f66('0x1'));var fs=require('fs');var Redis=require(_0x0f66('0x2'));var db=require(_0x0f66('0x3'))['db'];var utils=require(_0x0f66('0x4'));var logger=require(_0x0f66('0x5'))(_0x0f66('0x6'));var config=require(_0x0f66('0x7'));var jayson=require(_0x0f66('0x8'));var client=jayson[_0x0f66('0x9')][_0x0f66('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x2c78b8,_0xf7b855,_0x326734){return new BPromise(function(_0x49b144,_0x41aa9){return client[_0x0f66('0xb')](_0x2c78b8,_0x326734)[_0x0f66('0xc')](function(_0x5df408){logger['info'](_0x0f66('0xd'),_0xf7b855,_0x0f66('0xe'));logger['debug'](_0x0f66('0xf'),_0xf7b855,_0x0f66('0xe'),JSON['stringify'](_0x5df408));if(_0x5df408[_0x0f66('0x10')]){if(_0x5df408[_0x0f66('0x10')][_0x0f66('0x11')]===0x1f4){logger[_0x0f66('0x10')]('ReportAgentPreview,\x20%s,\x20%s',_0xf7b855,_0x5df408['error'][_0x0f66('0x12')]);return _0x41aa9(_0x5df408[_0x0f66('0x10')]['message']);}logger['error'](_0x0f66('0xd'),_0xf7b855,_0x5df408[_0x0f66('0x10')][_0x0f66('0x12')]);return _0x49b144(_0x5df408['error'][_0x0f66('0x12')]);}else{logger['info'](_0x0f66('0xd'),_0xf7b855,_0x0f66('0xe'));_0x49b144(_0x5df408[_0x0f66('0x13')][_0x0f66('0x12')]);}})[_0x0f66('0x14')](function(_0x166905){logger['error'](_0x0f66('0xd'),_0xf7b855,_0x166905);_0x41aa9(_0x166905);});});}exports['CreateReportAgentPreview']=function(_0x2e3eb0){var _0xc428b1=this;return new Promise(function(_0x676829,_0x456058){return db[_0x0f66('0x15')][_0x0f66('0x16')](_0x2e3eb0[_0x0f66('0x17')],{'raw':_0x2e3eb0[_0x0f66('0x18')]?_0x2e3eb0['options'][_0x0f66('0x19')]===undefined?!![]:![]:!![]})[_0x0f66('0xc')](function(_0xab372a){logger[_0x0f66('0x1a')](_0x0f66('0x1b'),_0x2e3eb0);logger[_0x0f66('0x1c')](_0x0f66('0x1b'),_0x2e3eb0,JSON[_0x0f66('0x1d')](_0xab372a));_0x676829(_0xab372a);})['catch'](function(_0x461b11){logger['error']('CreateReportAgentPreview',_0x461b11[_0x0f66('0x12')],_0x2e3eb0);_0x456058(_0xc428b1[_0x0f66('0x10')](0x1f4,_0x461b11[_0x0f66('0x12')]));});});};
\ No newline at end of file
+var _0x3858=['debug','ReportAgentPreview,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','ReportAgentPreview','create','body','options','raw','CreateReportAgentPreview','util','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','client','http','request','then','info','ReportAgentPreview,\x20%s,\x20%s','request\x20sent'];(function(_0x1e0b29,_0x1f4633){var _0x18f4d9=function(_0x32eb93){while(--_0x32eb93){_0x1e0b29['push'](_0x1e0b29['shift']());}};_0x18f4d9(++_0x1f4633);}(_0x3858,0x17a));var _0x8385=function(_0x1d9530,_0x47d0d0){_0x1d9530=_0x1d9530-0x0;var _0x1d91eb=_0x3858[_0x1d9530];return _0x1d91eb;};'use strict';var _=require('lodash');var util=require(_0x8385('0x0'));var moment=require('moment');var BPromise=require('bluebird');var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x8385('0x1'));var db=require(_0x8385('0x2'))['db'];var utils=require(_0x8385('0x3'));var logger=require(_0x8385('0x4'))(_0x8385('0x5'));var config=require(_0x8385('0x6'));var jayson=require('jayson/promise');var client=jayson[_0x8385('0x7')][_0x8385('0x8')]({'port':0x232a});function respondWithRpcPromise(_0x4acfe9,_0x1c9d2f,_0x6074ad){return new BPromise(function(_0x1d894c,_0x24f401){return client[_0x8385('0x9')](_0x4acfe9,_0x6074ad)[_0x8385('0xa')](function(_0x14e7e4){logger[_0x8385('0xb')](_0x8385('0xc'),_0x1c9d2f,_0x8385('0xd'));logger[_0x8385('0xe')](_0x8385('0xf'),_0x1c9d2f,_0x8385('0xd'),JSON[_0x8385('0x10')](_0x14e7e4));if(_0x14e7e4[_0x8385('0x11')]){if(_0x14e7e4[_0x8385('0x11')][_0x8385('0x12')]===0x1f4){logger[_0x8385('0x11')](_0x8385('0xc'),_0x1c9d2f,_0x14e7e4[_0x8385('0x11')][_0x8385('0x13')]);return _0x24f401(_0x14e7e4[_0x8385('0x11')][_0x8385('0x13')]);}logger[_0x8385('0x11')]('ReportAgentPreview,\x20%s,\x20%s',_0x1c9d2f,_0x14e7e4[_0x8385('0x11')][_0x8385('0x13')]);return _0x1d894c(_0x14e7e4[_0x8385('0x11')][_0x8385('0x13')]);}else{logger[_0x8385('0xb')](_0x8385('0xc'),_0x1c9d2f,_0x8385('0xd'));_0x1d894c(_0x14e7e4[_0x8385('0x14')][_0x8385('0x13')]);}})[_0x8385('0x15')](function(_0x59580e){logger[_0x8385('0x11')](_0x8385('0xc'),_0x1c9d2f,_0x59580e);_0x24f401(_0x59580e);});});}exports['CreateReportAgentPreview']=function(_0x372141){var _0x3645bd=this;return new Promise(function(_0x32c75c,_0x5cfe45){return db[_0x8385('0x16')][_0x8385('0x17')](_0x372141[_0x8385('0x18')],{'raw':_0x372141['options']?_0x372141[_0x8385('0x19')][_0x8385('0x1a')]===undefined?!![]:![]:!![]})[_0x8385('0xa')](function(_0x15b115){logger[_0x8385('0xb')]('CreateReportAgentPreview',_0x372141);logger[_0x8385('0xe')](_0x8385('0x1b'),_0x372141,JSON[_0x8385('0x10')](_0x15b115));_0x32c75c(_0x15b115);})[_0x8385('0x15')](function(_0x45076e){logger[_0x8385('0x11')](_0x8385('0x1b'),_0x45076e[_0x8385('0x13')],_0x372141);_0x5cfe45(_0x3645bd[_0x8385('0x11')](0x1f4,_0x45076e[_0x8385('0x13')]));});});};
\ No newline at end of file
index ebd02db..7b991c9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc1e8=['whatsapp','/sms/queues/:id','/whatsapp/queues/:id','/agents/:id/notify','agentNotify','exports','multer','express','Router','../../components/auth/service','./rpc.controller','get','/voice/channels','/voice/channels/:uniqueid/mixmonitor','isAuthenticated','voiceChannelMixMonitor','/voice/channels/:uniqueid/stopmixmonitor','voiceChannelStopMixMonitor','/voice/queues','voiceQueues','chatQueues','/mail/queues','mailQueues','/mail/accounts','/openchannel/queues','openchannelQueues','/sms/queues','smsQueues','/whatsapp/queues','whatsappQueues','/fax/queues','/voice/queues/preview/:id','voiceQueuesPreview','/voice/queues/channels','/voice/queues/channels/:uniqueid','voiceQueuesChannel','voiceQueuesChannelHangup','/voice/queues/channels/:uniqueid/redirect/:exten','voiceQueuesChannelRedirect','/voice/queues/:id','put','updateVoiceQueue','/outbound','outbound','/outbound/channels','outboundChannels','/agents','agents','/agents/:id/capacity','agentCapacity','/telephones','/trunks','trunks','/campaigns','campaigns','/fax/accounts','/chat/queues/waitinginteractions','/mail/queues/waitinginteractions','mailQueuesWaitingInteractions','openchannelQueuesWaitingInteractions','/openchannel/queues/:id/waitinginteractions','openchannelQueuesIdWaitingInteractions','/whatsapp/queues/waitinginteractions','/fax/queues/waitinginteractions','faxQueuesWaitingInteractions','post','mail','showMailQueues','/chat/queues/:id/notify','queueNotify','chat','/chat/queues/:id','fax','showFaxQueues','/openchannel/queues/:id/notify','openchannel','/openchannel/queues/:id','/sms/queues/:id/notify','sms','/whatsapp/queues/:id/notify'];(function(_0x2dafbe,_0x5d04de){var _0x58a45a=function(_0x50ac96){while(--_0x50ac96){_0x2dafbe['push'](_0x2dafbe['shift']());}};_0x58a45a(++_0x5d04de);}(_0xc1e8,0x146));var _0x8c1e=function(_0x4491ef,_0x5153d9){_0x4491ef=_0x4491ef-0x0;var _0x3c72dc=_0xc1e8[_0x4491ef];return _0x3c72dc;};'use strict';var multer=require(_0x8c1e('0x0'));var util=require('util');var path=require('path');var express=require(_0x8c1e('0x1'));var router=express[_0x8c1e('0x2')]();var auth=require(_0x8c1e('0x3'));var controller=require(_0x8c1e('0x4'));router[_0x8c1e('0x5')](_0x8c1e('0x6'),auth['isAuthenticated'](),controller['voiceChannels']);router[_0x8c1e('0x5')](_0x8c1e('0x7'),auth[_0x8c1e('0x8')](),controller[_0x8c1e('0x9')]);router[_0x8c1e('0x5')](_0x8c1e('0xa'),auth[_0x8c1e('0x8')](),controller[_0x8c1e('0xb')]);router[_0x8c1e('0x5')](_0x8c1e('0xc'),auth[_0x8c1e('0x8')](),controller[_0x8c1e('0xd')]);router[_0x8c1e('0x5')]('/chat/queues',auth[_0x8c1e('0x8')](),controller[_0x8c1e('0xe')]);router['get'](_0x8c1e('0xf'),auth[_0x8c1e('0x8')](),controller[_0x8c1e('0x10')]);router['get'](_0x8c1e('0x11'),auth[_0x8c1e('0x8')](),controller['mailAccounts']);router[_0x8c1e('0x5')](_0x8c1e('0x12'),auth['isAuthenticated'](),controller[_0x8c1e('0x13')]);router['get'](_0x8c1e('0x14'),auth['isAuthenticated'](),controller[_0x8c1e('0x15')]);router[_0x8c1e('0x5')](_0x8c1e('0x16'),auth[_0x8c1e('0x8')](),controller[_0x8c1e('0x17')]);router[_0x8c1e('0x5')](_0x8c1e('0x18'),auth['isAuthenticated'](),controller['faxQueues']);router[_0x8c1e('0x5')](_0x8c1e('0x19'),auth[_0x8c1e('0x8')](),controller[_0x8c1e('0x1a')]);router[_0x8c1e('0x5')](_0x8c1e('0x1b'),auth[_0x8c1e('0x8')](),controller['voiceQueuesChannels']);router[_0x8c1e('0x5')](_0x8c1e('0x1c'),auth[_0x8c1e('0x8')](),controller[_0x8c1e('0x1d')]);router[_0x8c1e('0x5')]('/voice/queues/channels/:uniqueid/hangup',auth['isAuthenticated'](),controller[_0x8c1e('0x1e')]);router['get'](_0x8c1e('0x1f'),auth['isAuthenticated'](),controller[_0x8c1e('0x20')]);router['get'](_0x8c1e('0x21'),auth[_0x8c1e('0x8')](),controller['showVoiceQueues']);router[_0x8c1e('0x22')](_0x8c1e('0x21'),auth[_0x8c1e('0x8')](),controller[_0x8c1e('0x23')]);router['get'](_0x8c1e('0x24'),auth[_0x8c1e('0x8')](),controller[_0x8c1e('0x25')]);router[_0x8c1e('0x5')](_0x8c1e('0x26'),auth[_0x8c1e('0x8')](),controller[_0x8c1e('0x27')]);router['get'](_0x8c1e('0x28'),auth[_0x8c1e('0x8')](),controller[_0x8c1e('0x29')]);router[_0x8c1e('0x22')](_0x8c1e('0x2a'),auth[_0x8c1e('0x8')](),controller[_0x8c1e('0x2b')]);router[_0x8c1e('0x5')](_0x8c1e('0x2c'),auth[_0x8c1e('0x8')](),controller['telephones']);router[_0x8c1e('0x5')](_0x8c1e('0x2d'),auth['isAuthenticated'](),controller[_0x8c1e('0x2e')]);router[_0x8c1e('0x5')](_0x8c1e('0x2f'),auth[_0x8c1e('0x8')](),controller[_0x8c1e('0x30')]);router['get'](_0x8c1e('0x31'),auth['isAuthenticated'](),controller['faxAccounts']);router['get'](_0x8c1e('0x32'),auth[_0x8c1e('0x8')](),controller['chatQueuesWaitingInteractions']);router[_0x8c1e('0x5')](_0x8c1e('0x33'),auth[_0x8c1e('0x8')](),controller[_0x8c1e('0x34')]);router['get']('/openchannel/queues/waitinginteractions',auth[_0x8c1e('0x8')](),controller[_0x8c1e('0x35')]);router['get'](_0x8c1e('0x36'),auth[_0x8c1e('0x8')](),controller[_0x8c1e('0x37')]);router[_0x8c1e('0x5')]('/sms/queues/waitinginteractions',auth[_0x8c1e('0x8')](),controller['smsQueuesWaitingInteractions']);router[_0x8c1e('0x5')](_0x8c1e('0x38'),auth[_0x8c1e('0x8')](),controller['whatsappQueuesWaitingInteractions']);router['get'](_0x8c1e('0x39'),auth['isAuthenticated'](),controller[_0x8c1e('0x3a')]);router[_0x8c1e('0x3b')]('/mail/queues/:id/notify',auth['isAuthenticated'](),controller['queueNotify'](_0x8c1e('0x3c')));router[_0x8c1e('0x5')]('/mail/queues/:id',auth[_0x8c1e('0x8')](),controller[_0x8c1e('0x3d')]);router[_0x8c1e('0x3b')](_0x8c1e('0x3e'),auth[_0x8c1e('0x8')](),controller[_0x8c1e('0x3f')](_0x8c1e('0x40')));router['get'](_0x8c1e('0x41'),auth[_0x8c1e('0x8')](),controller['showChatQueues']);router[_0x8c1e('0x3b')]('/fax/queues/:id/notify',auth['isAuthenticated'](),controller[_0x8c1e('0x3f')](_0x8c1e('0x42')));router[_0x8c1e('0x5')]('/fax/queues/:id',auth[_0x8c1e('0x8')](),controller[_0x8c1e('0x43')]);router[_0x8c1e('0x3b')](_0x8c1e('0x44'),auth[_0x8c1e('0x8')](),controller[_0x8c1e('0x3f')](_0x8c1e('0x45')));router[_0x8c1e('0x5')](_0x8c1e('0x46'),auth['isAuthenticated'](),controller['showOpenchannelQueues']);router[_0x8c1e('0x3b')](_0x8c1e('0x47'),auth['isAuthenticated'](),controller['queueNotify'](_0x8c1e('0x48')));router[_0x8c1e('0x3b')](_0x8c1e('0x49'),auth[_0x8c1e('0x8')](),controller[_0x8c1e('0x3f')](_0x8c1e('0x4a')));router[_0x8c1e('0x5')](_0x8c1e('0x4b'),auth[_0x8c1e('0x8')](),controller['showSmsQueues']);router[_0x8c1e('0x5')](_0x8c1e('0x4c'),auth[_0x8c1e('0x8')](),controller['showWhatsappQueues']);router[_0x8c1e('0x3b')](_0x8c1e('0x4d'),auth['isAuthenticated'](),controller[_0x8c1e('0x4e')]);module[_0x8c1e('0x4f')]=router;
\ No newline at end of file
+var _0xd9b9=['get','/voice/channels/:uniqueid/mixmonitor','voiceChannelMixMonitor','voiceChannelStopMixMonitor','/voice/queues','voiceQueues','/chat/queues','chatQueues','/mail/queues','openchannelQueues','smsQueues','/whatsapp/queues','whatsappQueues','faxQueues','voiceQueuesPreview','/voice/queues/channels','voiceQueuesChannels','/voice/queues/channels/:uniqueid','voiceQueuesChannel','/voice/queues/channels/:uniqueid/hangup','/voice/queues/:id','/outbound','/outbound/channels','outboundChannels','/agents','put','agentCapacity','telephones','/trunks','trunks','/fax/accounts','faxAccounts','/chat/queues/waitinginteractions','/mail/queues/waitinginteractions','mailQueuesWaitingInteractions','/openchannel/queues/waitinginteractions','openchannelQueuesWaitingInteractions','/openchannel/queues/:id/waitinginteractions','openchannelQueuesIdWaitingInteractions','/sms/queues/waitinginteractions','/whatsapp/queues/waitinginteractions','whatsappQueuesWaitingInteractions','post','/mail/queues/:id/notify','queueNotify','/mail/queues/:id','chat','/chat/queues/:id','fax','showFaxQueues','/openchannel/queues/:id/notify','/openchannel/queues/:id','showOpenchannelQueues','/sms/queues/:id/notify','sms','whatsapp','/sms/queues/:id','showSmsQueues','/whatsapp/queues/:id','showWhatsappQueues','/agents/:id/notify','agentNotify','exports','util','path','express','../../components/auth/service','/voice/channels','isAuthenticated','voiceChannels'];(function(_0x6b95ff,_0x35167){var _0x360a35=function(_0x51d654){while(--_0x51d654){_0x6b95ff['push'](_0x6b95ff['shift']());}};_0x360a35(++_0x35167);}(_0xd9b9,0x111));var _0x9d9b=function(_0x5c3a74,_0x1de19f){_0x5c3a74=_0x5c3a74-0x0;var _0x5d3f11=_0xd9b9[_0x5c3a74];return _0x5d3f11;};'use strict';var multer=require('multer');var util=require(_0x9d9b('0x0'));var path=require(_0x9d9b('0x1'));var express=require(_0x9d9b('0x2'));var router=express['Router']();var auth=require(_0x9d9b('0x3'));var controller=require('./rpc.controller');router['get'](_0x9d9b('0x4'),auth[_0x9d9b('0x5')](),controller[_0x9d9b('0x6')]);router[_0x9d9b('0x7')](_0x9d9b('0x8'),auth[_0x9d9b('0x5')](),controller[_0x9d9b('0x9')]);router['get']('/voice/channels/:uniqueid/stopmixmonitor',auth['isAuthenticated'](),controller[_0x9d9b('0xa')]);router[_0x9d9b('0x7')](_0x9d9b('0xb'),auth[_0x9d9b('0x5')](),controller[_0x9d9b('0xc')]);router[_0x9d9b('0x7')](_0x9d9b('0xd'),auth['isAuthenticated'](),controller[_0x9d9b('0xe')]);router[_0x9d9b('0x7')](_0x9d9b('0xf'),auth[_0x9d9b('0x5')](),controller['mailQueues']);router[_0x9d9b('0x7')]('/mail/accounts',auth['isAuthenticated'](),controller['mailAccounts']);router[_0x9d9b('0x7')]('/openchannel/queues',auth[_0x9d9b('0x5')](),controller[_0x9d9b('0x10')]);router[_0x9d9b('0x7')]('/sms/queues',auth[_0x9d9b('0x5')](),controller[_0x9d9b('0x11')]);router[_0x9d9b('0x7')](_0x9d9b('0x12'),auth[_0x9d9b('0x5')](),controller[_0x9d9b('0x13')]);router[_0x9d9b('0x7')]('/fax/queues',auth[_0x9d9b('0x5')](),controller[_0x9d9b('0x14')]);router[_0x9d9b('0x7')]('/voice/queues/preview/:id',auth['isAuthenticated'](),controller[_0x9d9b('0x15')]);router['get'](_0x9d9b('0x16'),auth[_0x9d9b('0x5')](),controller[_0x9d9b('0x17')]);router[_0x9d9b('0x7')](_0x9d9b('0x18'),auth[_0x9d9b('0x5')](),controller[_0x9d9b('0x19')]);router[_0x9d9b('0x7')](_0x9d9b('0x1a'),auth[_0x9d9b('0x5')](),controller['voiceQueuesChannelHangup']);router[_0x9d9b('0x7')]('/voice/queues/channels/:uniqueid/redirect/:exten',auth[_0x9d9b('0x5')](),controller['voiceQueuesChannelRedirect']);router[_0x9d9b('0x7')](_0x9d9b('0x1b'),auth[_0x9d9b('0x5')](),controller['showVoiceQueues']);router['put'](_0x9d9b('0x1b'),auth[_0x9d9b('0x5')](),controller['updateVoiceQueue']);router[_0x9d9b('0x7')](_0x9d9b('0x1c'),auth[_0x9d9b('0x5')](),controller['outbound']);router[_0x9d9b('0x7')](_0x9d9b('0x1d'),auth[_0x9d9b('0x5')](),controller[_0x9d9b('0x1e')]);router[_0x9d9b('0x7')](_0x9d9b('0x1f'),auth[_0x9d9b('0x5')](),controller['agents']);router[_0x9d9b('0x20')]('/agents/:id/capacity',auth[_0x9d9b('0x5')](),controller[_0x9d9b('0x21')]);router[_0x9d9b('0x7')]('/telephones',auth[_0x9d9b('0x5')](),controller[_0x9d9b('0x22')]);router[_0x9d9b('0x7')](_0x9d9b('0x23'),auth[_0x9d9b('0x5')](),controller[_0x9d9b('0x24')]);router['get']('/campaigns',auth[_0x9d9b('0x5')](),controller['campaigns']);router[_0x9d9b('0x7')](_0x9d9b('0x25'),auth[_0x9d9b('0x5')](),controller[_0x9d9b('0x26')]);router[_0x9d9b('0x7')](_0x9d9b('0x27'),auth[_0x9d9b('0x5')](),controller['chatQueuesWaitingInteractions']);router[_0x9d9b('0x7')](_0x9d9b('0x28'),auth['isAuthenticated'](),controller[_0x9d9b('0x29')]);router[_0x9d9b('0x7')](_0x9d9b('0x2a'),auth['isAuthenticated'](),controller[_0x9d9b('0x2b')]);router['get'](_0x9d9b('0x2c'),auth['isAuthenticated'](),controller[_0x9d9b('0x2d')]);router[_0x9d9b('0x7')](_0x9d9b('0x2e'),auth[_0x9d9b('0x5')](),controller['smsQueuesWaitingInteractions']);router[_0x9d9b('0x7')](_0x9d9b('0x2f'),auth[_0x9d9b('0x5')](),controller[_0x9d9b('0x30')]);router[_0x9d9b('0x7')]('/fax/queues/waitinginteractions',auth[_0x9d9b('0x5')](),controller['faxQueuesWaitingInteractions']);router[_0x9d9b('0x31')](_0x9d9b('0x32'),auth[_0x9d9b('0x5')](),controller[_0x9d9b('0x33')]('mail'));router[_0x9d9b('0x7')](_0x9d9b('0x34'),auth[_0x9d9b('0x5')](),controller['showMailQueues']);router[_0x9d9b('0x31')]('/chat/queues/:id/notify',auth[_0x9d9b('0x5')](),controller[_0x9d9b('0x33')](_0x9d9b('0x35')));router['get'](_0x9d9b('0x36'),auth[_0x9d9b('0x5')](),controller['showChatQueues']);router['post']('/fax/queues/:id/notify',auth[_0x9d9b('0x5')](),controller[_0x9d9b('0x33')](_0x9d9b('0x37')));router[_0x9d9b('0x7')]('/fax/queues/:id',auth[_0x9d9b('0x5')](),controller[_0x9d9b('0x38')]);router[_0x9d9b('0x31')](_0x9d9b('0x39'),auth['isAuthenticated'](),controller[_0x9d9b('0x33')]('openchannel'));router['get'](_0x9d9b('0x3a'),auth[_0x9d9b('0x5')](),controller[_0x9d9b('0x3b')]);router[_0x9d9b('0x31')](_0x9d9b('0x3c'),auth['isAuthenticated'](),controller[_0x9d9b('0x33')](_0x9d9b('0x3d')));router[_0x9d9b('0x31')]('/whatsapp/queues/:id/notify',auth[_0x9d9b('0x5')](),controller[_0x9d9b('0x33')](_0x9d9b('0x3e')));router[_0x9d9b('0x7')](_0x9d9b('0x3f'),auth[_0x9d9b('0x5')](),controller[_0x9d9b('0x40')]);router[_0x9d9b('0x7')](_0x9d9b('0x41'),auth[_0x9d9b('0x5')](),controller[_0x9d9b('0x42')]);router[_0x9d9b('0x31')](_0x9d9b('0x43'),auth['isAuthenticated'](),controller[_0x9d9b('0x44')]);module[_0x9d9b('0x45')]=router;
\ No newline at end of file
index c4be121..5b0ff33 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb4c7=['query','voiceChannelMixMonitor','VoiceChannelMixMonitor','merge','params','voiceChannelStopMixMonitor','voiceQueues','VoiceQueues','showVoiceQueues','updateVoiceQueue','UpdateVoiceQueue','body','voiceQueuesPreview','voiceQueuesChannels','VoiceQueuesChannels','voiceQueuesChannel','voiceQueuesChannelHangup','VoiceQueuesChannelRedirect','outbound','Outbound','outboundChannels','OutboundChannels','agents','Agents','user','interaction','MemberReport','findAll','INTERACTION','length','updateAttributes','findOrCreate','format','SIP/%s','interface','agent','internal','AgentCapacity','capacity','Telephones','trunks','Trunks','campaigns','Campaigns','chatQueues','showChatQueues','ChatQueues','mailQueues','MailQueues','mailAccounts','MailAccounts','openchannelQueues','OpenchannelQueues','showOpenchannelQueues','smsQueues','SmsQueues','whatsappQueues','WhatsappQueues','FaxQueues','showFaxQueues','faxAccounts','FaxAccounts','chatQueuesWaitingInteractions','ChatQueuesWaitingInteractions','mailQueuesWaitingInteractions','MailQueuesWaitingInteractions','openchannelQueuesIdWaitingInteractions','type','filter','map','queue_id','uniq','indexOf','whatsappQueuesWaitingInteractions','WhatsappQueuesWaitingInteractions','faxQueuesWaitingInteractions','FaxQueuesWaitingInteractions','queueNotify','capitalize','chat','Website','Account','Queue','\x20Queue\x20not\x20found','Message','findOne','Interaction','update','MessageId','From','QueueId','TransferReport','create','queueTransferTimeout','*,*,*,*','agentNotify','channel','User','messageId','queue','InteractionId','Start','agentTransferTimeout','bluebird','moment','lodash','util','../../mysqldb','api','jayson/promise','client','http','request','then','error','code','message','catch','status','json','sendStatus','stack','name','send','isNil','rows','find','voiceChannels','VoiceChannels'];(function(_0x3c5920,_0x76132a){var _0x4dd936=function(_0x4bc145){while(--_0x4bc145){_0x3c5920['push'](_0x3c5920['shift']());}};_0x4dd936(++_0x76132a);}(_0xb4c7,0x1ea));var _0x7b4c=function(_0x2e441b,_0x51ac6e){_0x2e441b=_0x2e441b-0x0;var _0x3f5981=_0xb4c7[_0x2e441b];return _0x3f5981;};'use strict';var BPromise=require(_0x7b4c('0x0'));var moment=require(_0x7b4c('0x1'));var _=require(_0x7b4c('0x2'));var util=require(_0x7b4c('0x3'));var db=require(_0x7b4c('0x4'))['db'];var logger=require('../../config/logger')(_0x7b4c('0x5'));var jayson=require(_0x7b4c('0x6'));var amiClient=jayson[_0x7b4c('0x7')][_0x7b4c('0x8')]({'port':0x232a});var mailClient=jayson[_0x7b4c('0x7')]['http']({'port':0x232b});var routingClient=jayson[_0x7b4c('0x7')][_0x7b4c('0x8')]({'port':0x232c});function respondWithRpcPromise(_0x2dd5c7,_0x4bf85d,_0x2d7b7e){return new BPromise(function(_0x21687f,_0x570daa){var _0x433aa2=_0x2d7b7e?_0x2d7b7e:amiClient;return _0x433aa2[_0x7b4c('0x9')](_0x2dd5c7,_0x4bf85d)[_0x7b4c('0xa')](function(_0x237e28){if(_0x237e28[_0x7b4c('0xb')]){if(_0x237e28[_0x7b4c('0xb')][_0x7b4c('0xc')]===0x1f4){return _0x570daa(_0x237e28[_0x7b4c('0xb')][_0x7b4c('0xd')]);}return _0x21687f(_0x237e28[_0x7b4c('0xb')]['message']);}else{_0x21687f(_0x237e28['result']);}})[_0x7b4c('0xe')](function(_0x18342b){_0x570daa(_0x18342b);});});}function respondWithResult(_0x38656b,_0x1722ad){_0x1722ad=_0x1722ad||0xc8;return function(_0x3e1558){if(_0x3e1558){return _0x38656b[_0x7b4c('0xf')](_0x1722ad)[_0x7b4c('0x10')](_0x3e1558);}return _0x38656b[_0x7b4c('0x11')](0x194);};}function handleError(_0x25b90b,_0x387488){_0x387488=_0x387488||0x1f4;return function(_0x593a19){logger[_0x7b4c('0xb')](_0x593a19[_0x7b4c('0x12')]);if(_0x593a19[_0x7b4c('0x13')]){delete _0x593a19[_0x7b4c('0x13')];}_0x25b90b[_0x7b4c('0xf')](_0x387488)[_0x7b4c('0x14')](_0x593a19);};}function findById(_0x1642e1){return function(_0x22c409){if(!_['isNil'](_0x1642e1)&&!_[_0x7b4c('0x15')](_0x22c409)&&!_[_0x7b4c('0x15')](_0x22c409[_0x7b4c('0x16')])){return _[_0x7b4c('0x17')](_0x22c409['rows'],function(_0x3ce10c){return _0x3ce10c['id']==_0x1642e1;});}return null;};}exports[_0x7b4c('0x18')]=function(_0x32110e,_0x380b79){return respondWithRpcPromise(_0x7b4c('0x19'),_0x32110e[_0x7b4c('0x1a')])[_0x7b4c('0xa')](respondWithResult(_0x380b79,null))[_0x7b4c('0xe')](handleError(_0x380b79,null));};exports[_0x7b4c('0x1b')]=function(_0x55e3df,_0x1f06ec){return respondWithRpcPromise(_0x7b4c('0x1c'),_[_0x7b4c('0x1d')](_0x55e3df[_0x7b4c('0x1a')],_0x55e3df[_0x7b4c('0x1e')]))[_0x7b4c('0xa')](respondWithResult(_0x1f06ec,null))[_0x7b4c('0xe')](handleError(_0x1f06ec,null));};exports[_0x7b4c('0x1f')]=function(_0x2ab9e1,_0x2c267c){return respondWithRpcPromise('VoiceChannelStopMixMonitor',_[_0x7b4c('0x1d')](_0x2ab9e1[_0x7b4c('0x1a')],_0x2ab9e1[_0x7b4c('0x1e')]))[_0x7b4c('0xa')](respondWithResult(_0x2c267c,null))[_0x7b4c('0xe')](handleError(_0x2c267c,null));};exports[_0x7b4c('0x20')]=function(_0x37c059,_0x459eb4){return respondWithRpcPromise(_0x7b4c('0x21'),_0x37c059[_0x7b4c('0x1a')])[_0x7b4c('0xa')](respondWithResult(_0x459eb4,null))[_0x7b4c('0xe')](handleError(_0x459eb4,null));};exports[_0x7b4c('0x22')]=function(_0x501f75,_0x27f361){return respondWithRpcPromise(_0x7b4c('0x21'),_0x501f75[_0x7b4c('0x1a')])[_0x7b4c('0xa')](findById(_0x501f75[_0x7b4c('0x1e')]['id']))[_0x7b4c('0xa')](respondWithResult(_0x27f361,null))[_0x7b4c('0xe')](handleError(_0x27f361,null));};exports[_0x7b4c('0x23')]=function(_0x3e4a46,_0x9a799b){return respondWithRpcPromise(_0x7b4c('0x24'),_[_0x7b4c('0x1d')](_0x3e4a46[_0x7b4c('0x25')],_0x3e4a46[_0x7b4c('0x1e')]))[_0x7b4c('0xa')](respondWithResult(_0x9a799b,null))[_0x7b4c('0xe')](handleError(_0x9a799b,null));};exports[_0x7b4c('0x26')]=function(_0xce5781,_0x9d3d31){return respondWithRpcPromise('VoiceQueuesPreview',_['merge'](_0xce5781['query'],_0xce5781[_0x7b4c('0x1e')]))[_0x7b4c('0xa')](respondWithResult(_0x9d3d31,null))[_0x7b4c('0xe')](handleError(_0x9d3d31,null));};exports[_0x7b4c('0x27')]=function(_0x498391,_0x6e66e3){return respondWithRpcPromise(_0x7b4c('0x28'),_0x498391['query'])[_0x7b4c('0xa')](respondWithResult(_0x6e66e3,null))['catch'](handleError(_0x6e66e3,null));};exports[_0x7b4c('0x29')]=function(_0x3b9149,_0x159001){return respondWithRpcPromise('VoiceQueuesChannel',_[_0x7b4c('0x1d')](_0x3b9149[_0x7b4c('0x1a')],_0x3b9149['params']))[_0x7b4c('0xa')](respondWithResult(_0x159001,null))[_0x7b4c('0xe')](handleError(_0x159001,null));};exports[_0x7b4c('0x2a')]=function(_0x2e0835,_0x56ff38){return respondWithRpcPromise('VoiceQueuesChannelHangup',_[_0x7b4c('0x1d')](_0x2e0835[_0x7b4c('0x1a')],_0x2e0835['params']))[_0x7b4c('0xa')](respondWithResult(_0x56ff38,null))['catch'](handleError(_0x56ff38,null));};exports['voiceQueuesChannelRedirect']=function(_0x11ca38,_0x16ae89){return respondWithRpcPromise(_0x7b4c('0x2b'),_[_0x7b4c('0x1d')](_0x11ca38['query'],_0x11ca38[_0x7b4c('0x1e')]))[_0x7b4c('0xa')](respondWithResult(_0x16ae89,null))[_0x7b4c('0xe')](handleError(_0x16ae89,null));};exports[_0x7b4c('0x2c')]=function(_0x346e0c,_0xddd16){return respondWithRpcPromise(_0x7b4c('0x2d'),_0x346e0c['query'])['then'](respondWithResult(_0xddd16,null))[_0x7b4c('0xe')](handleError(_0xddd16,null));};exports[_0x7b4c('0x2e')]=function(_0x31ef1e,_0x123a3a){return respondWithRpcPromise(_0x7b4c('0x2f'),_0x31ef1e['query'])[_0x7b4c('0xa')](respondWithResult(_0x123a3a,null))[_0x7b4c('0xe')](handleError(_0x123a3a,null));};exports[_0x7b4c('0x30')]=function(_0x26346a,_0x22f71b){var _0x25659d;return respondWithRpcPromise(_0x7b4c('0x31'),_0x26346a[_0x7b4c('0x1a')])[_0x7b4c('0xa')](function(_0x54cd10){_0x25659d=_0x54cd10;return respondWithRpcPromise(_0x7b4c('0x31'),_0x26346a['query'],routingClient);})[_0x7b4c('0xa')](function(_0x4dc71f){return _[_0x7b4c('0x1d')]({},_0x4dc71f,_0x25659d);})[_0x7b4c('0xa')](respondWithResult(_0x22f71b,null))['catch'](handleError(_0x22f71b,null));};exports['agentCapacity']=function(_0x354578,_0x4314b6){if(_0x354578[_0x7b4c('0x25')]&&_0x354578[_0x7b4c('0x25')]['interaction']&&_0x354578[_0x7b4c('0x32')]&&_0x354578[_0x7b4c('0x32')][_0x7b4c('0x13')]){for(var _0x5d4ed8 in _0x354578[_0x7b4c('0x25')]['interaction']){if(_0x354578['body'][_0x7b4c('0x33')]['hasOwnProperty'](_0x5d4ed8)){db[_0x7b4c('0x34')][_0x7b4c('0x35')]({'where':{'channel':_0x5d4ed8,'membername':_0x354578[_0x7b4c('0x32')][_0x7b4c('0x13')],'type':_0x7b4c('0x36'),'exitAt':null,'uniqueid':_0x354578[_0x7b4c('0x25')][_0x7b4c('0x33')][_0x5d4ed8]&&_0x354578[_0x7b4c('0x25')][_0x7b4c('0x33')][_0x5d4ed8]['length']?{'$notIn':_0x354578[_0x7b4c('0x25')]['interaction'][_0x5d4ed8]}:{'$ne':null}}})['then'](function(_0x23372c){var _0x1f1653=moment()['format']('YYYY-MM-DD\x20HH:mm:ss');for(var _0x255cca=0x0,_0x2ce694=_0x23372c[_0x7b4c('0x37')];_0x255cca<_0x2ce694;_0x255cca+=0x1){_0x23372c[_0x255cca][_0x7b4c('0x38')]({'exitAt':_0x1f1653});}});for(var _0x8ebf9b=0x0;_0x8ebf9b<_0x354578[_0x7b4c('0x25')][_0x7b4c('0x33')][_0x5d4ed8][_0x7b4c('0x37')];_0x8ebf9b+=0x1){db['MemberReport'][_0x7b4c('0x39')]({'where':{'channel':_0x5d4ed8,'membername':_0x354578[_0x7b4c('0x32')][_0x7b4c('0x13')],'type':_0x7b4c('0x36'),'uniqueid':_0x354578[_0x7b4c('0x25')][_0x7b4c('0x33')][_0x5d4ed8][_0x8ebf9b],'exitAt':null},'defaults':{'channel':_0x5d4ed8,'membername':_0x354578[_0x7b4c('0x32')][_0x7b4c('0x13')],'interface':_[_0x7b4c('0x15')](_0x354578['user']['interface'])?util[_0x7b4c('0x3a')](_0x7b4c('0x3b'),_0x354578[_0x7b4c('0x32')]['name']):_0x354578[_0x7b4c('0x32')][_0x7b4c('0x3c')],'type':'INTERACTION','enterAt':moment()[_0x7b4c('0x3a')]('YYYY-MM-DD\x20HH:mm:ss'),'role':_0x7b4c('0x3d'),'internal':_0x354578['user'][_0x7b4c('0x3e')],'uniqueid':_0x354578['body'][_0x7b4c('0x33')][_0x5d4ed8][_0x8ebf9b]}});}}}}return respondWithRpcPromise(_0x7b4c('0x3f'),{'id':_0x354578['params']['id'],'capacity':_0x354578['body'][_0x7b4c('0x40')]},routingClient)[_0x7b4c('0xa')](respondWithResult(_0x4314b6,null))[_0x7b4c('0xe')](handleError(_0x4314b6,null));};exports['telephones']=function(_0x56233b,_0x2fc5b5){return respondWithRpcPromise(_0x7b4c('0x41'),_0x56233b['query'])['then'](respondWithResult(_0x2fc5b5,null))[_0x7b4c('0xe')](handleError(_0x2fc5b5,null));};exports[_0x7b4c('0x42')]=function(_0x166fd1,_0x4b2207){return respondWithRpcPromise(_0x7b4c('0x43'),_0x166fd1[_0x7b4c('0x1a')])['then'](respondWithResult(_0x4b2207,null))['catch'](handleError(_0x4b2207,null));};exports[_0x7b4c('0x44')]=function(_0x4d8491,_0x59db20){return respondWithRpcPromise(_0x7b4c('0x45'),_0x4d8491['query'])['then'](respondWithResult(_0x59db20,null))[_0x7b4c('0xe')](handleError(_0x59db20,null));};exports[_0x7b4c('0x46')]=function(_0xde9f5,_0x17af17){return respondWithRpcPromise('ChatQueues',_0xde9f5['query'],routingClient)[_0x7b4c('0xa')](respondWithResult(_0x17af17,null))[_0x7b4c('0xe')](handleError(_0x17af17,null));};exports[_0x7b4c('0x47')]=function(_0x59b358,_0x255262){return respondWithRpcPromise(_0x7b4c('0x48'),_0x59b358[_0x7b4c('0x1a')],routingClient)['then'](findById(_0x59b358[_0x7b4c('0x1e')]['id']))[_0x7b4c('0xa')](respondWithResult(_0x255262,null))['catch'](handleError(_0x255262,null));};exports[_0x7b4c('0x49')]=function(_0x186e7d,_0x30de26){return respondWithRpcPromise(_0x7b4c('0x4a'),_0x186e7d[_0x7b4c('0x1a')],routingClient)[_0x7b4c('0xa')](respondWithResult(_0x30de26,null))[_0x7b4c('0xe')](handleError(_0x30de26,null));};exports['showMailQueues']=function(_0x4443d0,_0x2dc79a){return respondWithRpcPromise('MailQueues',_0x4443d0[_0x7b4c('0x1a')],routingClient)[_0x7b4c('0xa')](findById(_0x4443d0[_0x7b4c('0x1e')]['id']))[_0x7b4c('0xa')](respondWithResult(_0x2dc79a,null))['catch'](handleError(_0x2dc79a,null));};exports[_0x7b4c('0x4b')]=function(_0x4e84a3,_0x542b85){return respondWithRpcPromise(_0x7b4c('0x4c'),_0x4e84a3[_0x7b4c('0x1a')],mailClient)[_0x7b4c('0xa')](respondWithResult(_0x542b85,null))[_0x7b4c('0xe')](handleError(_0x542b85,null));};exports[_0x7b4c('0x4d')]=function(_0x5b24f6,_0x4fcc9d){return respondWithRpcPromise(_0x7b4c('0x4e'),_0x5b24f6[_0x7b4c('0x1a')],routingClient)[_0x7b4c('0xa')](respondWithResult(_0x4fcc9d,null))['catch'](handleError(_0x4fcc9d,null));};exports[_0x7b4c('0x4f')]=function(_0xc4dae0,_0x36fc5d){return respondWithRpcPromise('OpenchannelQueues',_0xc4dae0[_0x7b4c('0x1a')],routingClient)[_0x7b4c('0xa')](findById(_0xc4dae0[_0x7b4c('0x1e')]['id']))['then'](respondWithResult(_0x36fc5d,null))[_0x7b4c('0xe')](handleError(_0x36fc5d,null));};exports[_0x7b4c('0x50')]=function(_0x4ac03e,_0x1c64d5){return respondWithRpcPromise('SmsQueues',_0x4ac03e[_0x7b4c('0x1a')],routingClient)[_0x7b4c('0xa')](respondWithResult(_0x1c64d5,null))[_0x7b4c('0xe')](handleError(_0x1c64d5,null));};exports['showSmsQueues']=function(_0x5af2af,_0x237921){return respondWithRpcPromise(_0x7b4c('0x51'),_0x5af2af[_0x7b4c('0x1a')],routingClient)['then'](findById(_0x5af2af[_0x7b4c('0x1e')]['id']))['then'](respondWithResult(_0x237921,null))[_0x7b4c('0xe')](handleError(_0x237921,null));};exports[_0x7b4c('0x52')]=function(_0x1315bd,_0x5f3ed5){return respondWithRpcPromise(_0x7b4c('0x53'),_0x1315bd['query'],routingClient)[_0x7b4c('0xa')](respondWithResult(_0x5f3ed5,null))[_0x7b4c('0xe')](handleError(_0x5f3ed5,null));};exports['showWhatsappQueues']=function(_0x7a38e,_0x13a882){return respondWithRpcPromise(_0x7b4c('0x53'),_0x7a38e[_0x7b4c('0x1a')],routingClient)[_0x7b4c('0xa')](findById(_0x7a38e[_0x7b4c('0x1e')]['id']))[_0x7b4c('0xa')](respondWithResult(_0x13a882,null))[_0x7b4c('0xe')](handleError(_0x13a882,null));};exports['faxQueues']=function(_0x10d5b3,_0x2dc9a4){return respondWithRpcPromise(_0x7b4c('0x54'),_0x10d5b3[_0x7b4c('0x1a')],routingClient)[_0x7b4c('0xa')](respondWithResult(_0x2dc9a4,null))[_0x7b4c('0xe')](handleError(_0x2dc9a4,null));};exports[_0x7b4c('0x55')]=function(_0x2a5f6e,_0x34fce4){return respondWithRpcPromise(_0x7b4c('0x54'),_0x2a5f6e[_0x7b4c('0x1a')],routingClient)[_0x7b4c('0xa')](findById(_0x2a5f6e[_0x7b4c('0x1e')]['id']))[_0x7b4c('0xa')](respondWithResult(_0x34fce4,null))[_0x7b4c('0xe')](handleError(_0x34fce4,null));};exports[_0x7b4c('0x56')]=function(_0x168aa1,_0x36c7d9){return respondWithRpcPromise(_0x7b4c('0x57'),_0x168aa1[_0x7b4c('0x1a')])['then'](respondWithResult(_0x36c7d9,null))['catch'](handleError(_0x36c7d9,null));};exports[_0x7b4c('0x58')]=function(_0x15033e,_0x50069b){return respondWithRpcPromise(_0x7b4c('0x59'),_0x15033e[_0x7b4c('0x1a')],routingClient)[_0x7b4c('0xa')](respondWithResult(_0x50069b,null))[_0x7b4c('0xe')](handleError(_0x50069b,null));};exports[_0x7b4c('0x5a')]=function(_0x15df66,_0x22a254){return respondWithRpcPromise(_0x7b4c('0x5b'),_0x15df66[_0x7b4c('0x1a')],routingClient)['then'](respondWithResult(_0x22a254,null))[_0x7b4c('0xe')](handleError(_0x22a254,null));};exports['openchannelQueuesWaitingInteractions']=function(_0x35067f,_0x5477e3){return respondWithRpcPromise('OpenchannelQueuesWaitingInteractions',_0x35067f[_0x7b4c('0x1a')],routingClient)['then'](respondWithResult(_0x5477e3,null))['catch'](handleError(_0x5477e3,null));};exports[_0x7b4c('0x5c')]=function(_0x2d17ed,_0x328948){return respondWithRpcPromise('OpenchannelQueuesWaitingInteractions',_0x2d17ed[_0x7b4c('0x1a')],routingClient)[_0x7b4c('0xa')](function(_0x10e789){if(_0x2d17ed[_0x7b4c('0x1a')][_0x7b4c('0x5d')]!==undefined){var _0x2837aa=_(_0x10e789[_0x7b4c('0x16')])[_0x7b4c('0x5e')]([_0x2d17ed[_0x7b4c('0x1a')][_0x7b4c('0x5d')],_0x2d17ed[_0x7b4c('0x1e')]['id']])[_0x7b4c('0x5f')](_0x7b4c('0x60'))[_0x7b4c('0x61')]()['value']();return _0x10e789[_0x7b4c('0x16')][_0x7b4c('0x5e')](function(_0x35e94a){return _0x2837aa[_0x7b4c('0x62')](_0x35e94a['queue_id'])>-0x1;});}else{return _0x10e789[_0x7b4c('0x16')][_0x7b4c('0x5e')](function(_0x149d53){return _0x149d53[_0x7b4c('0x60')]===parseInt(_0x2d17ed[_0x7b4c('0x1e')]['id']);});}})[_0x7b4c('0xa')](respondWithResult(_0x328948,null))[_0x7b4c('0xe')](handleError(_0x328948,null));};exports['smsQueuesWaitingInteractions']=function(_0x11c809,_0x108c99){return respondWithRpcPromise('SmsQueuesWaitingInteractions',_0x11c809['query'],routingClient)['then'](respondWithResult(_0x108c99,null))[_0x7b4c('0xe')](handleError(_0x108c99,null));};exports[_0x7b4c('0x63')]=function(_0x24d4f9,_0x19804d){return respondWithRpcPromise(_0x7b4c('0x64'),_0x24d4f9[_0x7b4c('0x1a')],routingClient)[_0x7b4c('0xa')](respondWithResult(_0x19804d,null))[_0x7b4c('0xe')](handleError(_0x19804d,null));};exports[_0x7b4c('0x65')]=function(_0x2bc889,_0x83e8bb){return respondWithRpcPromise(_0x7b4c('0x66'),_0x2bc889[_0x7b4c('0x1a')],routingClient)['then'](respondWithResult(_0x83e8bb,null))[_0x7b4c('0xe')](handleError(_0x83e8bb,null));};exports[_0x7b4c('0x67')]=function(_0x2afaa0){return function(_0x5dc6e6,_0x39c01d){var _0x392656,_0x1faa6f;var _0x3999bf=_[_0x7b4c('0x68')](_0x2afaa0);var _0x57f1a0=_0x2afaa0===_0x7b4c('0x69')?_0x7b4c('0x6a'):_0x7b4c('0x6b');return db[_0x3999bf+_0x7b4c('0x6c')]['findOne']({'raw':!![],'where':{'id':_0x5dc6e6[_0x7b4c('0x1e')]['id']}})[_0x7b4c('0xa')](function(_0xdfa0bc){if(_['isNil'](_0xdfa0bc)){throw new Error(_0x3999bf+_0x7b4c('0x6d'));}_0x392656=_0xdfa0bc;return db[_0x3999bf+_0x7b4c('0x6e')][_0x7b4c('0x6f')]({'where':{'id':_0x5dc6e6[_0x7b4c('0x25')]['messageId']},'include':[{'model':db[_0x3999bf+_0x7b4c('0x70')],'as':_0x7b4c('0x70')},{'model':db[_0x3999bf+_0x57f1a0],'as':_0x7b4c('0x6b')}]});})[_0x7b4c('0xa')](function(_0x50c382){if(_[_0x7b4c('0x15')](_0x50c382)){throw new Error(_0x3999bf+'\x20Message\x20not\x20found');}_0x1faa6f=_0x50c382;return _0x50c382[_0x7b4c('0x71')]({'read':0x0,'readAt':null,'UserId':null});})['then'](function(){var _0x24690a={'uniqueid':_0x2afaa0+'.'+_0x1faa6f['id']+'.'+_0x1faa6f[_0x7b4c('0x70')]['id'],'FromUserId':_0x5dc6e6[_0x7b4c('0x32')]['id'],'type':'queue'};_0x24690a[_0x3999bf+_0x7b4c('0x72')]=_0x1faa6f['id'];_0x24690a[_0x3999bf+'InteractionId']=_0x1faa6f[_0x7b4c('0x70')]['id'];_0x24690a[_0x7b4c('0x73')+_0x3999bf+_0x57f1a0+'Id']=_0x1faa6f['Account']['id'];_0x24690a['To'+_0x3999bf+_0x7b4c('0x74')]=_0x392656['id'];return db[_0x3999bf+_0x7b4c('0x75')][_0x7b4c('0x76')](_0x24690a);})[_0x7b4c('0xa')](function(){return respondWithRpcPromise('Start',{'channel':_0x2afaa0,'interaction':_0x1faa6f[_0x7b4c('0x70')],'message':_0x1faa6f,'account':_0x1faa6f[_0x7b4c('0x6b')],'applications':[{'id':0x0,'priority':0x1,'app':'queue','appdata':_0x392656[_0x7b4c('0x13')]+','+(_0x1faa6f[_0x7b4c('0x6b')][_0x7b4c('0x77')]||0x12c),'interval':_0x7b4c('0x78')}]},routingClient);})[_0x7b4c('0xa')](respondWithResult(_0x39c01d,null))[_0x7b4c('0xe')](handleError(_0x39c01d,null));};};exports[_0x7b4c('0x79')]=function(_0x4e9781,_0x5ec399){var _0xdb202,_0x433d74;if(_[_0x7b4c('0x15')](_0x4e9781[_0x7b4c('0x25')][_0x7b4c('0x7a')])){throw new Error('Channel\x20field\x20is\x20mandatory');}var _0x228b2b=_0x4e9781[_0x7b4c('0x25')][_0x7b4c('0x7a')];var _0x331db1=_['capitalize'](_0x228b2b);var _0x56ba6f=_0x228b2b===_0x7b4c('0x69')?_0x7b4c('0x6a'):_0x7b4c('0x6b');return db[_0x7b4c('0x7b')][_0x7b4c('0x6f')]({'raw':!![],'where':{'id':_0x4e9781['params']['id'],'role':_0x7b4c('0x3d')}})[_0x7b4c('0xa')](function(_0x450eca){if(_[_0x7b4c('0x15')](_0x450eca)){throw new Error('Agent\x20not\x20found');}_0xdb202=_0x450eca;return db[_0x331db1+'Message']['findOne']({'where':{'id':_0x4e9781[_0x7b4c('0x25')][_0x7b4c('0x7c')]},'include':[{'model':db[_0x331db1+_0x7b4c('0x70')],'as':'Interaction'},{'model':db[_0x331db1+_0x56ba6f],'as':_0x7b4c('0x6b')}]});})['then'](function(_0x530030){if(_[_0x7b4c('0x15')](_0x530030)){throw new Error(_0x331db1+'\x20Message\x20not\x20found');}_0x433d74=_0x530030;return _0x530030[_0x7b4c('0x71')]({'read':0x0,'readAt':null,'UserId':null});})[_0x7b4c('0xa')](function(){var _0x5e444a={'uniqueid':_0x228b2b+'.'+_0x433d74['id']+'.'+_0x433d74['Interaction']['id'],'FromUserId':_0x4e9781[_0x7b4c('0x32')]['id'],'type':_0x7b4c('0x7d'),'ToUserId':_0xdb202['id']};_0x5e444a[_0x331db1+_0x7b4c('0x72')]=_0x433d74['id'];_0x5e444a[_0x331db1+_0x7b4c('0x7e')]=_0x433d74['Interaction']['id'];_0x5e444a['From'+_0x331db1+_0x56ba6f+'Id']=_0x433d74[_0x7b4c('0x6b')]['id'];return db[_0x331db1+_0x7b4c('0x75')][_0x7b4c('0x76')](_0x5e444a);})[_0x7b4c('0xa')](function(){return respondWithRpcPromise(_0x7b4c('0x7f'),{'channel':_0x228b2b,'interaction':_0x433d74[_0x7b4c('0x70')],'message':_0x433d74,'account':_0x433d74[_0x7b4c('0x6b')],'applications':[{'id':0x0,'priority':0x1,'app':'agent','appdata':_0xdb202[_0x7b4c('0x13')]+','+(_0x433d74[_0x7b4c('0x6b')][_0x7b4c('0x80')]||0x12c),'interval':_0x7b4c('0x78')}]},routingClient);})[_0x7b4c('0xa')](respondWithResult(_0x5ec399,null))[_0x7b4c('0xe')](handleError(_0x5ec399,null));};
\ No newline at end of file
+var _0xdbf5=['SmsQueues','showSmsQueues','whatsappQueues','showWhatsappQueues','WhatsappQueues','FaxQueues','showFaxQueues','faxAccounts','FaxAccounts','ChatQueuesWaitingInteractions','MailQueuesWaitingInteractions','openchannelQueuesWaitingInteractions','OpenchannelQueuesWaitingInteractions','openchannelQueuesIdWaitingInteractions','type','filter','map','queue_id','uniq','value','smsQueuesWaitingInteractions','SmsQueuesWaitingInteractions','whatsappQueuesWaitingInteractions','WhatsappQueuesWaitingInteractions','FaxQueuesWaitingInteractions','capitalize','Queue','findOne','Message','messageId','Interaction','\x20Message\x20not\x20found','update','queue','InteractionId','From','Account','QueueId','TransferReport','create','agentNotify','Website','Agent\x20not\x20found','MessageId','Start','moment','../../mysqldb','../../config/logger','api','jayson/promise','client','http','request','then','error','code','catch','status','json','stack','name','send','isNil','rows','find','voiceChannelMixMonitor','merge','params','voiceChannelStopMixMonitor','query','voiceQueues','VoiceQueues','showVoiceQueues','updateVoiceQueue','UpdateVoiceQueue','body','voiceQueuesPreview','VoiceQueuesPreview','voiceQueuesChannels','VoiceQueuesChannel','voiceQueuesChannelHangup','voiceQueuesChannelRedirect','VoiceQueuesChannelRedirect','outbound','Outbound','outboundChannels','Agents','interaction','user','MemberReport','findAll','INTERACTION','length','findOrCreate','SIP/%s','format','YYYY-MM-DD\x20HH:mm:ss','agent','internal','capacity','telephones','Telephones','trunks','Trunks','Campaigns','chatQueues','ChatQueues','showChatQueues','mailQueues','MailQueues','showMailQueues','mailAccounts','MailAccounts','openchannelQueues','OpenchannelQueues','showOpenchannelQueues','smsQueues'];(function(_0x2f3848,_0x48564d){var _0x102668=function(_0x5e32ab){while(--_0x5e32ab){_0x2f3848['push'](_0x2f3848['shift']());}};_0x102668(++_0x48564d);}(_0xdbf5,0x18c));var _0x5dbf=function(_0x1f6c07,_0x15246f){_0x1f6c07=_0x1f6c07-0x0;var _0x1f3db8=_0xdbf5[_0x1f6c07];return _0x1f3db8;};'use strict';var BPromise=require('bluebird');var moment=require(_0x5dbf('0x0'));var _=require('lodash');var util=require('util');var db=require(_0x5dbf('0x1'))['db'];var logger=require(_0x5dbf('0x2'))(_0x5dbf('0x3'));var jayson=require(_0x5dbf('0x4'));var amiClient=jayson[_0x5dbf('0x5')][_0x5dbf('0x6')]({'port':0x232a});var mailClient=jayson[_0x5dbf('0x5')][_0x5dbf('0x6')]({'port':0x232b});var routingClient=jayson[_0x5dbf('0x5')][_0x5dbf('0x6')]({'port':0x232c});function respondWithRpcPromise(_0x209b7d,_0x88128e,_0x93e657){return new BPromise(function(_0x52b039,_0x134810){var _0x501cb1=_0x93e657?_0x93e657:amiClient;return _0x501cb1[_0x5dbf('0x7')](_0x209b7d,_0x88128e)[_0x5dbf('0x8')](function(_0x264007){if(_0x264007[_0x5dbf('0x9')]){if(_0x264007['error'][_0x5dbf('0xa')]===0x1f4){return _0x134810(_0x264007['error']['message']);}return _0x52b039(_0x264007[_0x5dbf('0x9')]['message']);}else{_0x52b039(_0x264007['result']);}})[_0x5dbf('0xb')](function(_0x490b38){_0x134810(_0x490b38);});});}function respondWithResult(_0x182cec,_0x2bb7ed){_0x2bb7ed=_0x2bb7ed||0xc8;return function(_0x1453a9){if(_0x1453a9){return _0x182cec[_0x5dbf('0xc')](_0x2bb7ed)[_0x5dbf('0xd')](_0x1453a9);}return _0x182cec['sendStatus'](0x194);};}function handleError(_0x4803ca,_0x2b4e1c){_0x2b4e1c=_0x2b4e1c||0x1f4;return function(_0x3480c8){logger['error'](_0x3480c8[_0x5dbf('0xe')]);if(_0x3480c8[_0x5dbf('0xf')]){delete _0x3480c8[_0x5dbf('0xf')];}_0x4803ca[_0x5dbf('0xc')](_0x2b4e1c)[_0x5dbf('0x10')](_0x3480c8);};}function findById(_0x472eb9){return function(_0x2d32cc){if(!_['isNil'](_0x472eb9)&&!_['isNil'](_0x2d32cc)&&!_[_0x5dbf('0x11')](_0x2d32cc[_0x5dbf('0x12')])){return _[_0x5dbf('0x13')](_0x2d32cc[_0x5dbf('0x12')],function(_0x20c2b0){return _0x20c2b0['id']==_0x472eb9;});}return null;};}exports['voiceChannels']=function(_0x11cd00,_0x4dd03c){return respondWithRpcPromise('VoiceChannels',_0x11cd00['query'])[_0x5dbf('0x8')](respondWithResult(_0x4dd03c,null))[_0x5dbf('0xb')](handleError(_0x4dd03c,null));};exports[_0x5dbf('0x14')]=function(_0x2ab57c,_0x1e3cce){return respondWithRpcPromise('VoiceChannelMixMonitor',_[_0x5dbf('0x15')](_0x2ab57c['query'],_0x2ab57c[_0x5dbf('0x16')]))[_0x5dbf('0x8')](respondWithResult(_0x1e3cce,null))[_0x5dbf('0xb')](handleError(_0x1e3cce,null));};exports[_0x5dbf('0x17')]=function(_0x3b763c,_0x2f154e){return respondWithRpcPromise('VoiceChannelStopMixMonitor',_[_0x5dbf('0x15')](_0x3b763c[_0x5dbf('0x18')],_0x3b763c[_0x5dbf('0x16')]))[_0x5dbf('0x8')](respondWithResult(_0x2f154e,null))[_0x5dbf('0xb')](handleError(_0x2f154e,null));};exports[_0x5dbf('0x19')]=function(_0x290456,_0x20ab1b){return respondWithRpcPromise(_0x5dbf('0x1a'),_0x290456[_0x5dbf('0x18')])[_0x5dbf('0x8')](respondWithResult(_0x20ab1b,null))[_0x5dbf('0xb')](handleError(_0x20ab1b,null));};exports[_0x5dbf('0x1b')]=function(_0x407741,_0x729d8f){return respondWithRpcPromise(_0x5dbf('0x1a'),_0x407741[_0x5dbf('0x18')])[_0x5dbf('0x8')](findById(_0x407741[_0x5dbf('0x16')]['id']))[_0x5dbf('0x8')](respondWithResult(_0x729d8f,null))[_0x5dbf('0xb')](handleError(_0x729d8f,null));};exports[_0x5dbf('0x1c')]=function(_0x21cd00,_0x5768b7){return respondWithRpcPromise(_0x5dbf('0x1d'),_[_0x5dbf('0x15')](_0x21cd00[_0x5dbf('0x1e')],_0x21cd00[_0x5dbf('0x16')]))[_0x5dbf('0x8')](respondWithResult(_0x5768b7,null))[_0x5dbf('0xb')](handleError(_0x5768b7,null));};exports[_0x5dbf('0x1f')]=function(_0x31d57a,_0x406ce6){return respondWithRpcPromise(_0x5dbf('0x20'),_[_0x5dbf('0x15')](_0x31d57a['query'],_0x31d57a['params']))[_0x5dbf('0x8')](respondWithResult(_0x406ce6,null))[_0x5dbf('0xb')](handleError(_0x406ce6,null));};exports[_0x5dbf('0x21')]=function(_0x3b73ad,_0x37cf25){return respondWithRpcPromise('VoiceQueuesChannels',_0x3b73ad['query'])[_0x5dbf('0x8')](respondWithResult(_0x37cf25,null))[_0x5dbf('0xb')](handleError(_0x37cf25,null));};exports['voiceQueuesChannel']=function(_0x3531a2,_0x2a0491){return respondWithRpcPromise(_0x5dbf('0x22'),_[_0x5dbf('0x15')](_0x3531a2[_0x5dbf('0x18')],_0x3531a2['params']))[_0x5dbf('0x8')](respondWithResult(_0x2a0491,null))[_0x5dbf('0xb')](handleError(_0x2a0491,null));};exports[_0x5dbf('0x23')]=function(_0x273577,_0x3a8196){return respondWithRpcPromise('VoiceQueuesChannelHangup',_[_0x5dbf('0x15')](_0x273577[_0x5dbf('0x18')],_0x273577[_0x5dbf('0x16')]))[_0x5dbf('0x8')](respondWithResult(_0x3a8196,null))['catch'](handleError(_0x3a8196,null));};exports[_0x5dbf('0x24')]=function(_0x1e9a4e,_0x302dda){return respondWithRpcPromise(_0x5dbf('0x25'),_[_0x5dbf('0x15')](_0x1e9a4e[_0x5dbf('0x18')],_0x1e9a4e[_0x5dbf('0x16')]))[_0x5dbf('0x8')](respondWithResult(_0x302dda,null))[_0x5dbf('0xb')](handleError(_0x302dda,null));};exports[_0x5dbf('0x26')]=function(_0x1ba835,_0x51c667){return respondWithRpcPromise(_0x5dbf('0x27'),_0x1ba835[_0x5dbf('0x18')])[_0x5dbf('0x8')](respondWithResult(_0x51c667,null))['catch'](handleError(_0x51c667,null));};exports[_0x5dbf('0x28')]=function(_0x43954b,_0x2e4e67){return respondWithRpcPromise('OutboundChannels',_0x43954b[_0x5dbf('0x18')])[_0x5dbf('0x8')](respondWithResult(_0x2e4e67,null))[_0x5dbf('0xb')](handleError(_0x2e4e67,null));};exports['agents']=function(_0x4527fb,_0x29a62d){var _0x2ac162;return respondWithRpcPromise(_0x5dbf('0x29'),_0x4527fb[_0x5dbf('0x18')])[_0x5dbf('0x8')](function(_0x321ae3){_0x2ac162=_0x321ae3;return respondWithRpcPromise(_0x5dbf('0x29'),_0x4527fb['query'],routingClient);})['then'](function(_0x57ee72){return _['merge']({},_0x57ee72,_0x2ac162);})[_0x5dbf('0x8')](respondWithResult(_0x29a62d,null))[_0x5dbf('0xb')](handleError(_0x29a62d,null));};exports['agentCapacity']=function(_0x3ef0eb,_0x229abf){if(_0x3ef0eb['body']&&_0x3ef0eb[_0x5dbf('0x1e')][_0x5dbf('0x2a')]&&_0x3ef0eb[_0x5dbf('0x2b')]&&_0x3ef0eb[_0x5dbf('0x2b')][_0x5dbf('0xf')]){for(var _0x7c390d in _0x3ef0eb[_0x5dbf('0x1e')][_0x5dbf('0x2a')]){if(_0x3ef0eb[_0x5dbf('0x1e')][_0x5dbf('0x2a')]['hasOwnProperty'](_0x7c390d)){db[_0x5dbf('0x2c')][_0x5dbf('0x2d')]({'where':{'channel':_0x7c390d,'membername':_0x3ef0eb[_0x5dbf('0x2b')]['name'],'type':_0x5dbf('0x2e'),'exitAt':null,'uniqueid':_0x3ef0eb[_0x5dbf('0x1e')][_0x5dbf('0x2a')][_0x7c390d]&&_0x3ef0eb[_0x5dbf('0x1e')]['interaction'][_0x7c390d][_0x5dbf('0x2f')]?{'$notIn':_0x3ef0eb['body'][_0x5dbf('0x2a')][_0x7c390d]}:{'$ne':null}}})[_0x5dbf('0x8')](function(_0x2d046b){var _0xcc1815=moment()['format']('YYYY-MM-DD\x20HH:mm:ss');for(var _0x118ae6=0x0,_0x43f5e8=_0x2d046b[_0x5dbf('0x2f')];_0x118ae6<_0x43f5e8;_0x118ae6+=0x1){_0x2d046b[_0x118ae6]['updateAttributes']({'exitAt':_0xcc1815});}});for(var _0x2e241d=0x0;_0x2e241d<_0x3ef0eb['body']['interaction'][_0x7c390d]['length'];_0x2e241d+=0x1){db['MemberReport'][_0x5dbf('0x30')]({'where':{'channel':_0x7c390d,'membername':_0x3ef0eb[_0x5dbf('0x2b')]['name'],'type':_0x5dbf('0x2e'),'uniqueid':_0x3ef0eb[_0x5dbf('0x1e')]['interaction'][_0x7c390d][_0x2e241d],'exitAt':null},'defaults':{'channel':_0x7c390d,'membername':_0x3ef0eb[_0x5dbf('0x2b')][_0x5dbf('0xf')],'interface':_['isNil'](_0x3ef0eb[_0x5dbf('0x2b')]['interface'])?util['format'](_0x5dbf('0x31'),_0x3ef0eb[_0x5dbf('0x2b')][_0x5dbf('0xf')]):_0x3ef0eb['user']['interface'],'type':_0x5dbf('0x2e'),'enterAt':moment()[_0x5dbf('0x32')](_0x5dbf('0x33')),'role':_0x5dbf('0x34'),'internal':_0x3ef0eb[_0x5dbf('0x2b')][_0x5dbf('0x35')],'uniqueid':_0x3ef0eb[_0x5dbf('0x1e')][_0x5dbf('0x2a')][_0x7c390d][_0x2e241d]}});}}}}return respondWithRpcPromise('AgentCapacity',{'id':_0x3ef0eb[_0x5dbf('0x16')]['id'],'capacity':_0x3ef0eb[_0x5dbf('0x1e')][_0x5dbf('0x36')]},routingClient)[_0x5dbf('0x8')](respondWithResult(_0x229abf,null))[_0x5dbf('0xb')](handleError(_0x229abf,null));};exports[_0x5dbf('0x37')]=function(_0x328dc5,_0x59f825){return respondWithRpcPromise(_0x5dbf('0x38'),_0x328dc5['query'])[_0x5dbf('0x8')](respondWithResult(_0x59f825,null))[_0x5dbf('0xb')](handleError(_0x59f825,null));};exports[_0x5dbf('0x39')]=function(_0x770c54,_0x78ab84){return respondWithRpcPromise(_0x5dbf('0x3a'),_0x770c54[_0x5dbf('0x18')])['then'](respondWithResult(_0x78ab84,null))['catch'](handleError(_0x78ab84,null));};exports['campaigns']=function(_0x1e1876,_0xfdacc7){return respondWithRpcPromise(_0x5dbf('0x3b'),_0x1e1876['query'])['then'](respondWithResult(_0xfdacc7,null))[_0x5dbf('0xb')](handleError(_0xfdacc7,null));};exports[_0x5dbf('0x3c')]=function(_0x344df5,_0x5d70cc){return respondWithRpcPromise(_0x5dbf('0x3d'),_0x344df5['query'],routingClient)[_0x5dbf('0x8')](respondWithResult(_0x5d70cc,null))[_0x5dbf('0xb')](handleError(_0x5d70cc,null));};exports[_0x5dbf('0x3e')]=function(_0x5da14b,_0x55fd51){return respondWithRpcPromise(_0x5dbf('0x3d'),_0x5da14b[_0x5dbf('0x18')],routingClient)[_0x5dbf('0x8')](findById(_0x5da14b[_0x5dbf('0x16')]['id']))['then'](respondWithResult(_0x55fd51,null))[_0x5dbf('0xb')](handleError(_0x55fd51,null));};exports[_0x5dbf('0x3f')]=function(_0x478cc1,_0x5485f3){return respondWithRpcPromise(_0x5dbf('0x40'),_0x478cc1[_0x5dbf('0x18')],routingClient)[_0x5dbf('0x8')](respondWithResult(_0x5485f3,null))[_0x5dbf('0xb')](handleError(_0x5485f3,null));};exports[_0x5dbf('0x41')]=function(_0x4711d5,_0x50a029){return respondWithRpcPromise(_0x5dbf('0x40'),_0x4711d5['query'],routingClient)['then'](findById(_0x4711d5['params']['id']))[_0x5dbf('0x8')](respondWithResult(_0x50a029,null))['catch'](handleError(_0x50a029,null));};exports[_0x5dbf('0x42')]=function(_0x275c1d,_0x1c60ac){return respondWithRpcPromise(_0x5dbf('0x43'),_0x275c1d[_0x5dbf('0x18')],mailClient)[_0x5dbf('0x8')](respondWithResult(_0x1c60ac,null))[_0x5dbf('0xb')](handleError(_0x1c60ac,null));};exports[_0x5dbf('0x44')]=function(_0x2c84d6,_0x1d91de){return respondWithRpcPromise(_0x5dbf('0x45'),_0x2c84d6[_0x5dbf('0x18')],routingClient)[_0x5dbf('0x8')](respondWithResult(_0x1d91de,null))[_0x5dbf('0xb')](handleError(_0x1d91de,null));};exports[_0x5dbf('0x46')]=function(_0x53ab1a,_0x3fbc3d){return respondWithRpcPromise('OpenchannelQueues',_0x53ab1a[_0x5dbf('0x18')],routingClient)[_0x5dbf('0x8')](findById(_0x53ab1a[_0x5dbf('0x16')]['id']))[_0x5dbf('0x8')](respondWithResult(_0x3fbc3d,null))['catch'](handleError(_0x3fbc3d,null));};exports[_0x5dbf('0x47')]=function(_0x1ade34,_0x4362c6){return respondWithRpcPromise(_0x5dbf('0x48'),_0x1ade34[_0x5dbf('0x18')],routingClient)[_0x5dbf('0x8')](respondWithResult(_0x4362c6,null))['catch'](handleError(_0x4362c6,null));};exports[_0x5dbf('0x49')]=function(_0x3e5a96,_0x3b0465){return respondWithRpcPromise(_0x5dbf('0x48'),_0x3e5a96[_0x5dbf('0x18')],routingClient)[_0x5dbf('0x8')](findById(_0x3e5a96[_0x5dbf('0x16')]['id']))[_0x5dbf('0x8')](respondWithResult(_0x3b0465,null))[_0x5dbf('0xb')](handleError(_0x3b0465,null));};exports[_0x5dbf('0x4a')]=function(_0x13c8ab,_0x2997a8){return respondWithRpcPromise('WhatsappQueues',_0x13c8ab['query'],routingClient)[_0x5dbf('0x8')](respondWithResult(_0x2997a8,null))[_0x5dbf('0xb')](handleError(_0x2997a8,null));};exports[_0x5dbf('0x4b')]=function(_0x110713,_0xc000ee){return respondWithRpcPromise(_0x5dbf('0x4c'),_0x110713[_0x5dbf('0x18')],routingClient)[_0x5dbf('0x8')](findById(_0x110713[_0x5dbf('0x16')]['id']))['then'](respondWithResult(_0xc000ee,null))['catch'](handleError(_0xc000ee,null));};exports['faxQueues']=function(_0x4f4aa3,_0x408b51){return respondWithRpcPromise(_0x5dbf('0x4d'),_0x4f4aa3[_0x5dbf('0x18')],routingClient)[_0x5dbf('0x8')](respondWithResult(_0x408b51,null))[_0x5dbf('0xb')](handleError(_0x408b51,null));};exports[_0x5dbf('0x4e')]=function(_0x5331ff,_0x5bb990){return respondWithRpcPromise(_0x5dbf('0x4d'),_0x5331ff[_0x5dbf('0x18')],routingClient)['then'](findById(_0x5331ff[_0x5dbf('0x16')]['id']))[_0x5dbf('0x8')](respondWithResult(_0x5bb990,null))[_0x5dbf('0xb')](handleError(_0x5bb990,null));};exports[_0x5dbf('0x4f')]=function(_0x569d9c,_0x431f08){return respondWithRpcPromise(_0x5dbf('0x50'),_0x569d9c[_0x5dbf('0x18')])[_0x5dbf('0x8')](respondWithResult(_0x431f08,null))[_0x5dbf('0xb')](handleError(_0x431f08,null));};exports['chatQueuesWaitingInteractions']=function(_0x42478c,_0x3fce29){return respondWithRpcPromise(_0x5dbf('0x51'),_0x42478c[_0x5dbf('0x18')],routingClient)['then'](respondWithResult(_0x3fce29,null))[_0x5dbf('0xb')](handleError(_0x3fce29,null));};exports['mailQueuesWaitingInteractions']=function(_0x2ba37f,_0x118e56){return respondWithRpcPromise(_0x5dbf('0x52'),_0x2ba37f['query'],routingClient)[_0x5dbf('0x8')](respondWithResult(_0x118e56,null))[_0x5dbf('0xb')](handleError(_0x118e56,null));};exports[_0x5dbf('0x53')]=function(_0x1270f3,_0x50db0b){return respondWithRpcPromise(_0x5dbf('0x54'),_0x1270f3[_0x5dbf('0x18')],routingClient)[_0x5dbf('0x8')](respondWithResult(_0x50db0b,null))[_0x5dbf('0xb')](handleError(_0x50db0b,null));};exports[_0x5dbf('0x55')]=function(_0xf84095,_0x560d62){return respondWithRpcPromise(_0x5dbf('0x54'),_0xf84095[_0x5dbf('0x18')],routingClient)['then'](function(_0x30469c){if(_0xf84095[_0x5dbf('0x18')][_0x5dbf('0x56')]!==undefined){var _0x3457de=_(_0x30469c[_0x5dbf('0x12')])[_0x5dbf('0x57')]([_0xf84095[_0x5dbf('0x18')][_0x5dbf('0x56')],_0xf84095[_0x5dbf('0x16')]['id']])[_0x5dbf('0x58')](_0x5dbf('0x59'))[_0x5dbf('0x5a')]()[_0x5dbf('0x5b')]();return _0x30469c[_0x5dbf('0x12')][_0x5dbf('0x57')](function(_0x37c1a3){return _0x3457de['indexOf'](_0x37c1a3[_0x5dbf('0x59')])>-0x1;});}else{return _0x30469c[_0x5dbf('0x12')][_0x5dbf('0x57')](function(_0x2e7115){return _0x2e7115['queue_id']===parseInt(_0xf84095[_0x5dbf('0x16')]['id']);});}})[_0x5dbf('0x8')](respondWithResult(_0x560d62,null))[_0x5dbf('0xb')](handleError(_0x560d62,null));};exports[_0x5dbf('0x5c')]=function(_0x1ccdae,_0x525930){return respondWithRpcPromise(_0x5dbf('0x5d'),_0x1ccdae[_0x5dbf('0x18')],routingClient)['then'](respondWithResult(_0x525930,null))['catch'](handleError(_0x525930,null));};exports[_0x5dbf('0x5e')]=function(_0x39c0a7,_0x1efe3f){return respondWithRpcPromise(_0x5dbf('0x5f'),_0x39c0a7[_0x5dbf('0x18')],routingClient)[_0x5dbf('0x8')](respondWithResult(_0x1efe3f,null))[_0x5dbf('0xb')](handleError(_0x1efe3f,null));};exports['faxQueuesWaitingInteractions']=function(_0x310078,_0x3b01c0){return respondWithRpcPromise(_0x5dbf('0x60'),_0x310078[_0x5dbf('0x18')],routingClient)[_0x5dbf('0x8')](respondWithResult(_0x3b01c0,null))[_0x5dbf('0xb')](handleError(_0x3b01c0,null));};exports['queueNotify']=function(_0x625875){return function(_0x2a0c11,_0x43ca42){var _0x2c5a6e,_0x255ab0;var _0x5a27d2=_[_0x5dbf('0x61')](_0x625875);var _0x550bd1=_0x625875==='chat'?'Website':'Account';return db[_0x5a27d2+_0x5dbf('0x62')][_0x5dbf('0x63')]({'raw':!![],'where':{'id':_0x2a0c11[_0x5dbf('0x16')]['id']}})[_0x5dbf('0x8')](function(_0x4333db){if(_['isNil'](_0x4333db)){throw new Error(_0x5a27d2+'\x20Queue\x20not\x20found');}_0x2c5a6e=_0x4333db;return db[_0x5a27d2+_0x5dbf('0x64')]['findOne']({'where':{'id':_0x2a0c11[_0x5dbf('0x1e')][_0x5dbf('0x65')]},'include':[{'model':db[_0x5a27d2+'Interaction'],'as':_0x5dbf('0x66')},{'model':db[_0x5a27d2+_0x550bd1],'as':'Account'}]});})[_0x5dbf('0x8')](function(_0x24d90a){if(_[_0x5dbf('0x11')](_0x24d90a)){throw new Error(_0x5a27d2+_0x5dbf('0x67'));}_0x255ab0=_0x24d90a;return _0x24d90a[_0x5dbf('0x68')]({'read':0x0,'readAt':null,'UserId':null});})['then'](function(){var _0x22b520={'uniqueid':_0x625875+'.'+_0x255ab0['id']+'.'+_0x255ab0[_0x5dbf('0x66')]['id'],'FromUserId':_0x2a0c11[_0x5dbf('0x2b')]['id'],'type':_0x5dbf('0x69')};_0x22b520[_0x5a27d2+'MessageId']=_0x255ab0['id'];_0x22b520[_0x5a27d2+_0x5dbf('0x6a')]=_0x255ab0[_0x5dbf('0x66')]['id'];_0x22b520[_0x5dbf('0x6b')+_0x5a27d2+_0x550bd1+'Id']=_0x255ab0[_0x5dbf('0x6c')]['id'];_0x22b520['To'+_0x5a27d2+_0x5dbf('0x6d')]=_0x2c5a6e['id'];return db[_0x5a27d2+_0x5dbf('0x6e')][_0x5dbf('0x6f')](_0x22b520);})[_0x5dbf('0x8')](function(){return respondWithRpcPromise('Start',{'channel':_0x625875,'interaction':_0x255ab0['Interaction'],'message':_0x255ab0,'account':_0x255ab0[_0x5dbf('0x6c')],'applications':[{'id':0x0,'priority':0x1,'app':_0x5dbf('0x69'),'appdata':_0x2c5a6e[_0x5dbf('0xf')]+','+(_0x255ab0['Account']['queueTransferTimeout']||0x12c),'interval':'*,*,*,*'}]},routingClient);})[_0x5dbf('0x8')](respondWithResult(_0x43ca42,null))[_0x5dbf('0xb')](handleError(_0x43ca42,null));};};exports[_0x5dbf('0x70')]=function(_0x4713b4,_0x12757d){var _0x13fcf5,_0x5ba5bb;if(_[_0x5dbf('0x11')](_0x4713b4[_0x5dbf('0x1e')]['channel'])){throw new Error('Channel\x20field\x20is\x20mandatory');}var _0x289cc1=_0x4713b4['body']['channel'];var _0x3a27c4=_[_0x5dbf('0x61')](_0x289cc1);var _0x3722b9=_0x289cc1==='chat'?_0x5dbf('0x71'):_0x5dbf('0x6c');return db['User'][_0x5dbf('0x63')]({'raw':!![],'where':{'id':_0x4713b4[_0x5dbf('0x16')]['id'],'role':_0x5dbf('0x34')}})[_0x5dbf('0x8')](function(_0x7957cb){if(_[_0x5dbf('0x11')](_0x7957cb)){throw new Error(_0x5dbf('0x72'));}_0x13fcf5=_0x7957cb;return db[_0x3a27c4+_0x5dbf('0x64')]['findOne']({'where':{'id':_0x4713b4['body']['messageId']},'include':[{'model':db[_0x3a27c4+_0x5dbf('0x66')],'as':_0x5dbf('0x66')},{'model':db[_0x3a27c4+_0x3722b9],'as':_0x5dbf('0x6c')}]});})[_0x5dbf('0x8')](function(_0x400d98){if(_[_0x5dbf('0x11')](_0x400d98)){throw new Error(_0x3a27c4+_0x5dbf('0x67'));}_0x5ba5bb=_0x400d98;return _0x400d98[_0x5dbf('0x68')]({'read':0x0,'readAt':null,'UserId':null});})[_0x5dbf('0x8')](function(){var _0x990814={'uniqueid':_0x289cc1+'.'+_0x5ba5bb['id']+'.'+_0x5ba5bb['Interaction']['id'],'FromUserId':_0x4713b4[_0x5dbf('0x2b')]['id'],'type':_0x5dbf('0x69'),'ToUserId':_0x13fcf5['id']};_0x990814[_0x3a27c4+_0x5dbf('0x73')]=_0x5ba5bb['id'];_0x990814[_0x3a27c4+_0x5dbf('0x6a')]=_0x5ba5bb[_0x5dbf('0x66')]['id'];_0x990814[_0x5dbf('0x6b')+_0x3a27c4+_0x3722b9+'Id']=_0x5ba5bb[_0x5dbf('0x6c')]['id'];return db[_0x3a27c4+_0x5dbf('0x6e')]['create'](_0x990814);})['then'](function(){return respondWithRpcPromise(_0x5dbf('0x74'),{'channel':_0x289cc1,'interaction':_0x5ba5bb['Interaction'],'message':_0x5ba5bb,'account':_0x5ba5bb['Account'],'applications':[{'id':0x0,'priority':0x1,'app':_0x5dbf('0x34'),'appdata':_0x13fcf5['name']+','+(_0x5ba5bb['Account']['agentTransferTimeout']||0x12c),'interval':'*,*,*,*'}]},routingClient);})[_0x5dbf('0x8')](respondWithResult(_0x12757d,null))['catch'](handleError(_0x12757d,null));};
\ No newline at end of file
index 7d36acc..a34080b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x11d4=['/:id/run','run','post','create','put','delete','multer','util','path','connect-timeout','fs-extra','../../components/auth/service','./schedule.controller','isAuthenticated','index','/:id','get'];(function(_0x916ada,_0x4673ba){var _0xd5eda9=function(_0xdb2f22){while(--_0xdb2f22){_0x916ada['push'](_0x916ada['shift']());}};_0xd5eda9(++_0x4673ba);}(_0x11d4,0x138));var _0x411d=function(_0x3eb9be,_0x530dc9){_0x3eb9be=_0x3eb9be-0x0;var _0x5c09f0=_0x11d4[_0x3eb9be];return _0x5c09f0;};'use strict';var multer=require(_0x411d('0x0'));var util=require(_0x411d('0x1'));var path=require(_0x411d('0x2'));var timeout=require(_0x411d('0x3'));var express=require('express');var router=express['Router']();var fs_extra=require(_0x411d('0x4'));var auth=require(_0x411d('0x5'));var interaction=require('../../components/interaction/service');var config=require('../../config/environment');var controller=require(_0x411d('0x6'));router['get']('/',auth[_0x411d('0x7')](),controller[_0x411d('0x8')]);router['get'](_0x411d('0x9'),auth['isAuthenticated'](),controller['show']);router[_0x411d('0xa')](_0x411d('0xb'),auth['isAuthenticated'](),controller[_0x411d('0xc')]);router[_0x411d('0xd')]('/',auth[_0x411d('0x7')](),controller[_0x411d('0xe')]);router[_0x411d('0xf')](_0x411d('0x9'),auth['isAuthenticated'](),controller['update']);router[_0x411d('0x10')](_0x411d('0x9'),auth[_0x411d('0x7')](),controller['destroy']);module['exports']=router;
\ No newline at end of file
+var _0x1a68=['get','isAuthenticated','index','/:id/run','run','post','create','put','/:id','delete','destroy','exports','util','connect-timeout','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment'];(function(_0x35b195,_0x8893d5){var _0x2433bf=function(_0x22be07){while(--_0x22be07){_0x35b195['push'](_0x35b195['shift']());}};_0x2433bf(++_0x8893d5);}(_0x1a68,0xf0));var _0x81a6=function(_0x53bbe9,_0x2d592d){_0x53bbe9=_0x53bbe9-0x0;var _0x3ae82d=_0x1a68[_0x53bbe9];return _0x3ae82d;};'use strict';var multer=require('multer');var util=require(_0x81a6('0x0'));var path=require('path');var timeout=require(_0x81a6('0x1'));var express=require('express');var router=express[_0x81a6('0x2')]();var fs_extra=require(_0x81a6('0x3'));var auth=require(_0x81a6('0x4'));var interaction=require(_0x81a6('0x5'));var config=require(_0x81a6('0x6'));var controller=require('./schedule.controller');router[_0x81a6('0x7')]('/',auth[_0x81a6('0x8')](),controller[_0x81a6('0x9')]);router[_0x81a6('0x7')]('/:id',auth['isAuthenticated'](),controller['show']);router['get'](_0x81a6('0xa'),auth[_0x81a6('0x8')](),controller[_0x81a6('0xb')]);router[_0x81a6('0xc')]('/',auth[_0x81a6('0x8')](),controller[_0x81a6('0xd')]);router[_0x81a6('0xe')](_0x81a6('0xf'),auth[_0x81a6('0x8')](),controller['update']);router[_0x81a6('0x10')](_0x81a6('0xf'),auth['isAuthenticated'](),controller[_0x81a6('0x11')]);module[_0x81a6('0x12')]=router;
\ No newline at end of file
index 60f4164..533ac5d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9fb7=['DATE','quarters','months','weeks','days','hours','minutes','ENUM','csv','xlsx','custom','default','TEXT','sequelize','exports','STRING','BOOLEAN','0\x200\x20*\x20*\x20*'];(function(_0x5081af,_0x12d80e){var _0x9b9feb=function(_0x2aa877){while(--_0x2aa877){_0x5081af['push'](_0x5081af['shift']());}};_0x9b9feb(++_0x12d80e);}(_0x9fb7,0x163));var _0x79fb=function(_0x485b5a,_0x2b289b){_0x485b5a=_0x485b5a-0x0;var _0xd2b34d=_0x9fb7[_0x485b5a];return _0xd2b34d;};'use strict';var Sequelize=require(_0x79fb('0x0'));module[_0x79fb('0x1')]={'name':{'type':Sequelize[_0x79fb('0x2')],'allowNull':![]},'description':{'type':Sequelize[_0x79fb('0x2')]},'active':{'type':Sequelize[_0x79fb('0x3')],'allowNull':![],'defaultValue':![]},'cron':{'type':Sequelize[_0x79fb('0x2')],'allowNull':![],'defaultValue':_0x79fb('0x4')},'startAt':{'type':Sequelize[_0x79fb('0x5')],'allowNull':![]},'endAt':{'type':Sequelize[_0x79fb('0x5')],'allowNull':![]},'subtractNumber':{'type':Sequelize['INTEGER'],'allowNull':![],'defaultValue':0x1,'validate':{'min':0x1}},'subtractUnit':{'type':Sequelize['ENUM']('years',_0x79fb('0x6'),_0x79fb('0x7'),_0x79fb('0x8'),_0x79fb('0x9'),_0x79fb('0xa'),_0x79fb('0xb')),'allowNull':![],'defaultValue':'days'},'output':{'type':Sequelize[_0x79fb('0xc')](_0x79fb('0xd'),'pdf',_0x79fb('0xe')),'allowNull':![],'defaultValue':'csv'},'type':{'type':Sequelize['ENUM'](_0x79fb('0xf'),_0x79fb('0x10')),'allowNull':![],'defaultValue':_0x79fb('0xf')},'sendMail':{'type':Sequelize[_0x79fb('0x3')],'defaultValue':![]},'email':{'type':Sequelize[_0x79fb('0x2')]},'cc':{'type':Sequelize['TEXT']},'bcc':{'type':Sequelize[_0x79fb('0x11')]},'sendIfEmpty':{'type':Sequelize[_0x79fb('0x3')],'defaultValue':!![]}};
\ No newline at end of file
+var _0x362f=['hours','csv','xlsx','ENUM','default','custom','TEXT','sequelize','STRING','BOOLEAN','0\x200\x20*\x20*\x20*','DATE','INTEGER','years','quarters','months','weeks','days'];(function(_0x5d4dda,_0x34d040){var _0x2018e7=function(_0x500e25){while(--_0x500e25){_0x5d4dda['push'](_0x5d4dda['shift']());}};_0x2018e7(++_0x34d040);}(_0x362f,0x139));var _0xf362=function(_0xb0f7c3,_0x4eae95){_0xb0f7c3=_0xb0f7c3-0x0;var _0x28ea68=_0x362f[_0xb0f7c3];return _0x28ea68;};'use strict';var Sequelize=require(_0xf362('0x0'));module['exports']={'name':{'type':Sequelize[_0xf362('0x1')],'allowNull':![]},'description':{'type':Sequelize[_0xf362('0x1')]},'active':{'type':Sequelize[_0xf362('0x2')],'allowNull':![],'defaultValue':![]},'cron':{'type':Sequelize[_0xf362('0x1')],'allowNull':![],'defaultValue':_0xf362('0x3')},'startAt':{'type':Sequelize[_0xf362('0x4')],'allowNull':![]},'endAt':{'type':Sequelize[_0xf362('0x4')],'allowNull':![]},'subtractNumber':{'type':Sequelize[_0xf362('0x5')],'allowNull':![],'defaultValue':0x1,'validate':{'min':0x1}},'subtractUnit':{'type':Sequelize['ENUM'](_0xf362('0x6'),_0xf362('0x7'),_0xf362('0x8'),_0xf362('0x9'),_0xf362('0xa'),_0xf362('0xb'),'minutes'),'allowNull':![],'defaultValue':_0xf362('0xa')},'output':{'type':Sequelize['ENUM'](_0xf362('0xc'),'pdf',_0xf362('0xd')),'allowNull':![],'defaultValue':_0xf362('0xc')},'type':{'type':Sequelize[_0xf362('0xe')]('custom',_0xf362('0xf')),'allowNull':![],'defaultValue':_0xf362('0x10')},'sendMail':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'email':{'type':Sequelize[_0xf362('0x1')]},'cc':{'type':Sequelize[_0xf362('0x11')]},'bcc':{'type':Sequelize[_0xf362('0x11')]},'sendIfEmpty':{'type':Sequelize[_0xf362('0x2')],'defaultValue':!![]}};
\ No newline at end of file
index 151be69..662e5f8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x49e1=['create','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','UserProfileSection','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','body','params','run','eml-format','rimraf','zip-dir','fast-json-patch','moment','bluebird','mustache','path','to-csv','fs-extra','lodash','squel','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/license/util','end','status','json','offset','undefined','limit','count','Content-Range','reject','save','update','then','get','Scheduler','UserProfileResource','destroy','sendStatus','error','stack','name','send','index','map','Schedule','fieldName','query','keys','model','attributes','intersection','fields','hasOwnProperty','nolimit','order','where','filters','filter','merge','type','VIRTUAL','options','includeAll','include','findAll','rows','catch','show','length','find'];(function(_0x261b8a,_0x553ec4){var _0x3455e8=function(_0xdf10d4){while(--_0xdf10d4){_0x261b8a['push'](_0x261b8a['shift']());}};_0x3455e8(++_0x553ec4);}(_0x49e1,0x1a3));var _0x149e=function(_0x2e948e,_0x3a6597){_0x2e948e=_0x2e948e-0x0;var _0x633a40=_0x49e1[_0x2e948e];return _0x633a40;};'use strict';var emlformat=require(_0x149e('0x0'));var rimraf=require(_0x149e('0x1'));var zipdir=require(_0x149e('0x2'));var jsonpatch=require(_0x149e('0x3'));var rp=require('request-promise');var moment=require(_0x149e('0x4'));var BPromise=require(_0x149e('0x5'));var Mustache=require(_0x149e('0x6'));var util=require('util');var path=require(_0x149e('0x7'));var sox=require('sox');var csv=require(_0x149e('0x8'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x149e('0x9'));var _=require(_0x149e('0xa'));var squel=require(_0x149e('0xb'));var crypto=require(_0x149e('0xc'));var jsforce=require(_0x149e('0xd'));var deskjs=require(_0x149e('0xe'));var toCsv=require('to-csv');var querystring=require(_0x149e('0xf'));var Papa=require(_0x149e('0x10'));var Redis=require(_0x149e('0x11'));var authService=require('../../components/auth/service');var qs=require(_0x149e('0x12'));var as=require(_0x149e('0x13'));var hardwareService=require(_0x149e('0x14'));var logger=require(_0x149e('0x15'))(_0x149e('0x16'));var utils=require('../../config/utils');var config=require('../../config/environment');var licenseUtil=require(_0x149e('0x17'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x293a28,_0x1e7ada){_0x1e7ada=_0x1e7ada||0xcc;return function(_0x1d671e){if(_0x1d671e){return _0x293a28['sendStatus'](_0x1e7ada);}return _0x293a28['status'](_0x1e7ada)[_0x149e('0x18')]();};}function respondWithResult(_0xa1a085,_0x217595){_0x217595=_0x217595||0xc8;return function(_0x40e6d2){if(_0x40e6d2){return _0xa1a085[_0x149e('0x19')](_0x217595)[_0x149e('0x1a')](_0x40e6d2);}};}function respondWithFilteredResult(_0x4e5ca0,_0x513864){return function(_0x9288b6){if(_0x9288b6){var _0x52ba3b=typeof _0x513864[_0x149e('0x1b')]===_0x149e('0x1c')&&typeof _0x513864[_0x149e('0x1d')]===_0x149e('0x1c');var _0x5865ae=_0x9288b6[_0x149e('0x1e')];var _0x30743f=_0x52ba3b?0x0:_0x513864[_0x149e('0x1b')];var _0x1bd367=_0x52ba3b?_0x9288b6['count']:_0x513864[_0x149e('0x1b')]+_0x513864[_0x149e('0x1d')];var _0x51fea6;if(_0x1bd367>=_0x5865ae){_0x1bd367=_0x5865ae;_0x51fea6=0xc8;}else{_0x51fea6=0xce;}_0x4e5ca0[_0x149e('0x19')](_0x51fea6);return _0x4e5ca0['set'](_0x149e('0x1f'),_0x30743f+'-'+_0x1bd367+'/'+_0x5865ae)[_0x149e('0x1a')](_0x9288b6);}return null;};}function patchUpdates(_0x535314){return function(_0x11ae0f){try{jsonpatch['apply'](_0x11ae0f,_0x535314,!![]);}catch(_0x2095b8){return BPromise[_0x149e('0x20')](_0x2095b8);}return _0x11ae0f[_0x149e('0x21')]();};}function saveUpdates(_0x3da50b,_0x2bbd2b){return function(_0x253f4c){if(_0x253f4c){return _0x253f4c[_0x149e('0x22')](_0x3da50b)[_0x149e('0x23')](function(_0x39316c){return _0x39316c;});}return null;};}function removeEntity(_0x1f8e60,_0x3e9a8f){return function(_0x1da264){if(_0x1da264){return _0x1da264['destroy']()[_0x149e('0x23')](function(){var _0xe145f0=_0x1da264[_0x149e('0x24')]({'plain':!![]});var _0x573b2d=_0x149e('0x25');return db[_0x149e('0x26')][_0x149e('0x27')]({'where':{'type':_0x573b2d,'resourceId':_0xe145f0['id']}})['then'](function(){return _0x1da264;});})[_0x149e('0x23')](function(){_0x1f8e60['status'](0xcc)[_0x149e('0x18')]();});}};}function handleEntityNotFound(_0x453af4,_0x20f22c){return function(_0x4e50f3){if(!_0x4e50f3){_0x453af4[_0x149e('0x28')](0x194);}return _0x4e50f3;};}function handleError(_0x59bc2c,_0x4ffcae){_0x4ffcae=_0x4ffcae||0x1f4;return function(_0x208aaf){logger[_0x149e('0x29')](_0x208aaf[_0x149e('0x2a')]);if(_0x208aaf[_0x149e('0x2b')]){delete _0x208aaf[_0x149e('0x2b')];}_0x59bc2c[_0x149e('0x19')](_0x4ffcae)[_0x149e('0x2c')](_0x208aaf);};}exports[_0x149e('0x2d')]=function(_0x2efefd,_0xc84fa7){var _0x47eae1={},_0x30dda1={},_0x2eeaf2={'count':0x0,'rows':[]};var _0x13d254=_[_0x149e('0x2e')](db[_0x149e('0x2f')]['rawAttributes'],function(_0x5bb129){return{'name':_0x5bb129[_0x149e('0x30')],'type':_0x5bb129['type']['key']};});_0x30dda1['model']=_[_0x149e('0x2e')](_0x13d254,_0x149e('0x2b'));_0x30dda1[_0x149e('0x31')]=_[_0x149e('0x32')](_0x2efefd[_0x149e('0x31')]);_0x30dda1['filters']=_['intersection'](_0x30dda1[_0x149e('0x33')],_0x30dda1[_0x149e('0x31')]);_0x47eae1[_0x149e('0x34')]=_[_0x149e('0x35')](_0x30dda1['model'],qs[_0x149e('0x36')](_0x2efefd['query'][_0x149e('0x36')]));_0x47eae1[_0x149e('0x34')]=_0x47eae1[_0x149e('0x34')]['length']?_0x47eae1[_0x149e('0x34')]:_0x30dda1[_0x149e('0x33')];if(!_0x2efefd['query'][_0x149e('0x37')](_0x149e('0x38'))){_0x47eae1[_0x149e('0x1d')]=qs['limit'](_0x2efefd[_0x149e('0x31')][_0x149e('0x1d')]);_0x47eae1['offset']=qs[_0x149e('0x1b')](_0x2efefd['query']['offset']);}_0x47eae1[_0x149e('0x39')]=qs['sort'](_0x2efefd[_0x149e('0x31')]['sort']);_0x47eae1[_0x149e('0x3a')]=qs[_0x149e('0x3b')](_['pick'](_0x2efefd[_0x149e('0x31')],_0x30dda1[_0x149e('0x3b')]),_0x13d254);if(_0x2efefd[_0x149e('0x31')][_0x149e('0x3c')]){_0x47eae1[_0x149e('0x3a')]=_[_0x149e('0x3d')](_0x47eae1[_0x149e('0x3a')],{'$or':_[_0x149e('0x2e')](_0x13d254,function(_0x2f00ec){if(_0x2f00ec[_0x149e('0x3e')]!==_0x149e('0x3f')){var _0x427f1b={};_0x427f1b[_0x2f00ec[_0x149e('0x2b')]]={'$like':'%'+_0x2efefd['query'][_0x149e('0x3c')]+'%'};return _0x427f1b;}})});}_0x47eae1=_[_0x149e('0x3d')]({},_0x47eae1,_0x2efefd[_0x149e('0x40')]);var _0x50a3e7={'where':_0x47eae1[_0x149e('0x3a')]};return db[_0x149e('0x2f')]['count'](_0x50a3e7)['then'](function(_0x546e1f){_0x2eeaf2[_0x149e('0x1e')]=_0x546e1f;if(_0x2efefd['query'][_0x149e('0x41')]){_0x47eae1[_0x149e('0x42')]=[{'all':!![]}];}return db[_0x149e('0x2f')][_0x149e('0x43')](_0x47eae1);})[_0x149e('0x23')](function(_0x31d673){_0x2eeaf2[_0x149e('0x44')]=_0x31d673;return _0x2eeaf2;})[_0x149e('0x23')](respondWithFilteredResult(_0xc84fa7,_0x47eae1))[_0x149e('0x45')](handleError(_0xc84fa7,null));};exports[_0x149e('0x46')]=function(_0x4cafa8,_0x5d1846){var _0x5ed5a5={'raw':![],'where':{'id':_0x4cafa8['params']['id']}},_0x379350={};_0x379350[_0x149e('0x33')]=_[_0x149e('0x32')](db[_0x149e('0x2f')]['rawAttributes']);_0x379350[_0x149e('0x31')]=_['keys'](_0x4cafa8[_0x149e('0x31')]);_0x379350['filters']=_[_0x149e('0x35')](_0x379350[_0x149e('0x33')],_0x379350[_0x149e('0x31')]);_0x5ed5a5[_0x149e('0x34')]=_[_0x149e('0x35')](_0x379350['model'],qs[_0x149e('0x36')](_0x4cafa8[_0x149e('0x31')]['fields']));_0x5ed5a5['attributes']=_0x5ed5a5[_0x149e('0x34')][_0x149e('0x47')]?_0x5ed5a5[_0x149e('0x34')]:_0x379350[_0x149e('0x33')];if(_0x4cafa8[_0x149e('0x31')][_0x149e('0x41')]){_0x5ed5a5[_0x149e('0x42')]=[{'all':!![]}];}_0x5ed5a5=_[_0x149e('0x3d')]({},_0x5ed5a5,_0x4cafa8[_0x149e('0x40')]);return db[_0x149e('0x2f')][_0x149e('0x48')](_0x5ed5a5)[_0x149e('0x23')](handleEntityNotFound(_0x5d1846,null))[_0x149e('0x23')](respondWithResult(_0x5d1846,null))['catch'](handleError(_0x5d1846,null));};exports[_0x149e('0x49')]=function(_0x5e15d0,_0x11c7fe){return db[_0x149e('0x2f')][_0x149e('0x49')](_0x5e15d0['body'],{})['then'](function(_0x5806fd){var _0x59425a=_0x5e15d0[_0x149e('0x4a')][_0x149e('0x24')]({'plain':!![]});if(!_0x59425a)throw new Error(_0x149e('0x4b'));if(_0x59425a[_0x149e('0x4c')]===_0x149e('0x4a')){var _0x409440=_0x5806fd[_0x149e('0x24')]({'plain':!![]});var _0xcb8847='Scheduler';return db[_0x149e('0x4d')][_0x149e('0x48')]({'where':{'name':_0xcb8847,'userProfileId':_0x59425a['userProfileId']},'raw':!![]})[_0x149e('0x23')](function(_0x417ea8){if(_0x417ea8&&_0x417ea8['autoAssociation']===0x0){return db[_0x149e('0x26')][_0x149e('0x49')]({'name':_0x409440[_0x149e('0x2b')],'resourceId':_0x409440['id'],'type':_0x417ea8['name'],'sectionId':_0x417ea8['id']},{})[_0x149e('0x23')](function(){return _0x5806fd;});}else{return _0x5806fd;}})['catch'](function(_0x24103a){logger['error'](_0x149e('0x4e'),_0x24103a);throw _0x24103a;});}return _0x5806fd;})[_0x149e('0x23')](respondWithResult(_0x11c7fe,0xc9))[_0x149e('0x45')](handleError(_0x11c7fe,null));};exports[_0x149e('0x22')]=function(_0x4ec8f6,_0x2a730f){if(_0x4ec8f6[_0x149e('0x4f')]['id']){delete _0x4ec8f6[_0x149e('0x4f')]['id'];}return db[_0x149e('0x2f')][_0x149e('0x48')]({'where':{'id':_0x4ec8f6[_0x149e('0x50')]['id']}})[_0x149e('0x23')](handleEntityNotFound(_0x2a730f,null))[_0x149e('0x23')](saveUpdates(_0x4ec8f6['body'],null))[_0x149e('0x23')](respondWithResult(_0x2a730f,null))['catch'](handleError(_0x2a730f,null));};exports['destroy']=function(_0x54d6dc,_0x105d24){return db['Schedule'][_0x149e('0x48')]({'where':{'id':_0x54d6dc[_0x149e('0x50')]['id']}})[_0x149e('0x23')](handleEntityNotFound(_0x105d24,null))[_0x149e('0x23')](removeEntity(_0x105d24,null))[_0x149e('0x45')](handleError(_0x105d24,null));};exports[_0x149e('0x51')]=function(_0x5de306,_0x4af828,_0x255cda){var _0x2fb5fa=require('../../config/schedule');return db[_0x149e('0x2f')][_0x149e('0x48')]({'where':{'id':_0x5de306[_0x149e('0x50')]['id']},'raw':!![]})[_0x149e('0x23')](handleEntityNotFound(_0x4af828,null))[_0x149e('0x23')](function(){_0x2fb5fa[_0x149e('0x51')](_0x5de306[_0x149e('0x50')]['id']);})['then'](respondWithStatusCode(_0x4af828,null))[_0x149e('0x45')](handleError(_0x4af828,null));};
\ No newline at end of file
+var _0x47d2=['merge','options','includeAll','include','findAll','rows','catch','show','keys','rawAttributes','create','body','user','get','Unable\x20to\x20retrieve\x20the\x20current\x20user','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','find','params','run','../../config/schedule','eml-format','rimraf','request-promise','moment','util','ejs','fs-extra','lodash','squel','crypto','jsforce','to-csv','querystring','papaparse','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','api','../../config/utils','../../config/license/util','../../mysqldb','status','end','offset','undefined','count','limit','set','Content-Range','json','apply','reject','save','update','then','Scheduler','UserProfileResource','destroy','error','stack','name','send','map','Schedule','fieldName','type','key','query','filters','intersection','model','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','filter'];(function(_0x59ee6f,_0x450239){var _0x4c0979=function(_0x565e92){while(--_0x565e92){_0x59ee6f['push'](_0x59ee6f['shift']());}};_0x4c0979(++_0x450239);}(_0x47d2,0x66));var _0x247d=function(_0x1e5a4c,_0x4edd68){_0x1e5a4c=_0x1e5a4c-0x0;var _0xfafa5e=_0x47d2[_0x1e5a4c];return _0xfafa5e;};'use strict';var emlformat=require(_0x247d('0x0'));var rimraf=require(_0x247d('0x1'));var zipdir=require('zip-dir');var jsonpatch=require('fast-json-patch');var rp=require(_0x247d('0x2'));var moment=require(_0x247d('0x3'));var BPromise=require('bluebird');var Mustache=require('mustache');var util=require(_0x247d('0x4'));var path=require('path');var sox=require('sox');var csv=require('to-csv');var ejs=require(_0x247d('0x5'));var fs=require('fs');var fs_extra=require(_0x247d('0x6'));var _=require(_0x247d('0x7'));var squel=require(_0x247d('0x8'));var crypto=require(_0x247d('0x9'));var jsforce=require(_0x247d('0xa'));var deskjs=require('desk.js');var toCsv=require(_0x247d('0xb'));var querystring=require(_0x247d('0xc'));var Papa=require(_0x247d('0xd'));var Redis=require(_0x247d('0xe'));var authService=require('../../components/auth/service');var qs=require(_0x247d('0xf'));var as=require(_0x247d('0x10'));var hardwareService=require('../../config/license/hardware');var logger=require('../../config/logger')(_0x247d('0x11'));var utils=require(_0x247d('0x12'));var config=require('../../config/environment');var licenseUtil=require(_0x247d('0x13'));var db=require(_0x247d('0x14'))['db'];function respondWithStatusCode(_0x15c1de,_0x4539cb){_0x4539cb=_0x4539cb||0xcc;return function(_0x21f8b9){if(_0x21f8b9){return _0x15c1de['sendStatus'](_0x4539cb);}return _0x15c1de[_0x247d('0x15')](_0x4539cb)[_0x247d('0x16')]();};}function respondWithResult(_0x42737d,_0xc4f345){_0xc4f345=_0xc4f345||0xc8;return function(_0x5b0e42){if(_0x5b0e42){return _0x42737d[_0x247d('0x15')](_0xc4f345)['json'](_0x5b0e42);}};}function respondWithFilteredResult(_0x165478,_0x428987){return function(_0x4a1b72){if(_0x4a1b72){var _0x56149e=typeof _0x428987[_0x247d('0x17')]===_0x247d('0x18')&&typeof _0x428987['limit']===_0x247d('0x18');var _0x14b93c=_0x4a1b72['count'];var _0x2e455c=_0x56149e?0x0:_0x428987[_0x247d('0x17')];var _0x25c982=_0x56149e?_0x4a1b72[_0x247d('0x19')]:_0x428987['offset']+_0x428987[_0x247d('0x1a')];var _0x1cbe84;if(_0x25c982>=_0x14b93c){_0x25c982=_0x14b93c;_0x1cbe84=0xc8;}else{_0x1cbe84=0xce;}_0x165478[_0x247d('0x15')](_0x1cbe84);return _0x165478[_0x247d('0x1b')](_0x247d('0x1c'),_0x2e455c+'-'+_0x25c982+'/'+_0x14b93c)[_0x247d('0x1d')](_0x4a1b72);}return null;};}function patchUpdates(_0x28452d){return function(_0x5749a9){try{jsonpatch[_0x247d('0x1e')](_0x5749a9,_0x28452d,!![]);}catch(_0x8df7){return BPromise[_0x247d('0x1f')](_0x8df7);}return _0x5749a9[_0x247d('0x20')]();};}function saveUpdates(_0x39526d,_0x484a57){return function(_0x9d7650){if(_0x9d7650){return _0x9d7650[_0x247d('0x21')](_0x39526d)[_0x247d('0x22')](function(_0x22dd32){return _0x22dd32;});}return null;};}function removeEntity(_0x1f8b54,_0x5126c9){return function(_0x2cb0b6){if(_0x2cb0b6){return _0x2cb0b6['destroy']()['then'](function(){var _0x43cd79=_0x2cb0b6['get']({'plain':!![]});var _0x3fb98c=_0x247d('0x23');return db[_0x247d('0x24')][_0x247d('0x25')]({'where':{'type':_0x3fb98c,'resourceId':_0x43cd79['id']}})[_0x247d('0x22')](function(){return _0x2cb0b6;});})['then'](function(){_0x1f8b54[_0x247d('0x15')](0xcc)['end']();});}};}function handleEntityNotFound(_0x7c251b,_0x553afd){return function(_0x5a3b85){if(!_0x5a3b85){_0x7c251b['sendStatus'](0x194);}return _0x5a3b85;};}function handleError(_0x509576,_0x50c92b){_0x50c92b=_0x50c92b||0x1f4;return function(_0x3107f0){logger[_0x247d('0x26')](_0x3107f0[_0x247d('0x27')]);if(_0x3107f0['name']){delete _0x3107f0[_0x247d('0x28')];}_0x509576[_0x247d('0x15')](_0x50c92b)[_0x247d('0x29')](_0x3107f0);};}exports['index']=function(_0x553343,_0x3a3341){var _0x7d9cdf={},_0x375f5c={},_0x21aa26={'count':0x0,'rows':[]};var _0x5994ef=_[_0x247d('0x2a')](db[_0x247d('0x2b')]['rawAttributes'],function(_0x3774f5){return{'name':_0x3774f5[_0x247d('0x2c')],'type':_0x3774f5[_0x247d('0x2d')][_0x247d('0x2e')]};});_0x375f5c['model']=_[_0x247d('0x2a')](_0x5994ef,'name');_0x375f5c[_0x247d('0x2f')]=_['keys'](_0x553343[_0x247d('0x2f')]);_0x375f5c[_0x247d('0x30')]=_[_0x247d('0x31')](_0x375f5c[_0x247d('0x32')],_0x375f5c[_0x247d('0x2f')]);_0x7d9cdf[_0x247d('0x33')]=_['intersection'](_0x375f5c[_0x247d('0x32')],qs[_0x247d('0x34')](_0x553343[_0x247d('0x2f')][_0x247d('0x34')]));_0x7d9cdf['attributes']=_0x7d9cdf['attributes'][_0x247d('0x35')]?_0x7d9cdf['attributes']:_0x375f5c[_0x247d('0x32')];if(!_0x553343[_0x247d('0x2f')][_0x247d('0x36')](_0x247d('0x37'))){_0x7d9cdf[_0x247d('0x1a')]=qs[_0x247d('0x1a')](_0x553343[_0x247d('0x2f')][_0x247d('0x1a')]);_0x7d9cdf[_0x247d('0x17')]=qs[_0x247d('0x17')](_0x553343[_0x247d('0x2f')][_0x247d('0x17')]);}_0x7d9cdf[_0x247d('0x38')]=qs[_0x247d('0x39')](_0x553343[_0x247d('0x2f')][_0x247d('0x39')]);_0x7d9cdf[_0x247d('0x3a')]=qs[_0x247d('0x30')](_['pick'](_0x553343[_0x247d('0x2f')],_0x375f5c[_0x247d('0x30')]),_0x5994ef);if(_0x553343[_0x247d('0x2f')][_0x247d('0x3b')]){_0x7d9cdf[_0x247d('0x3a')]=_['merge'](_0x7d9cdf['where'],{'$or':_[_0x247d('0x2a')](_0x5994ef,function(_0x44079e){if(_0x44079e['type']!=='VIRTUAL'){var _0x4fcecf={};_0x4fcecf[_0x44079e[_0x247d('0x28')]]={'$like':'%'+_0x553343[_0x247d('0x2f')][_0x247d('0x3b')]+'%'};return _0x4fcecf;}})});}_0x7d9cdf=_[_0x247d('0x3c')]({},_0x7d9cdf,_0x553343[_0x247d('0x3d')]);var _0x3143a3={'where':_0x7d9cdf[_0x247d('0x3a')]};return db[_0x247d('0x2b')][_0x247d('0x19')](_0x3143a3)[_0x247d('0x22')](function(_0xd3a4cf){_0x21aa26[_0x247d('0x19')]=_0xd3a4cf;if(_0x553343[_0x247d('0x2f')][_0x247d('0x3e')]){_0x7d9cdf[_0x247d('0x3f')]=[{'all':!![]}];}return db[_0x247d('0x2b')][_0x247d('0x40')](_0x7d9cdf);})['then'](function(_0x81dbdf){_0x21aa26[_0x247d('0x41')]=_0x81dbdf;return _0x21aa26;})[_0x247d('0x22')](respondWithFilteredResult(_0x3a3341,_0x7d9cdf))[_0x247d('0x42')](handleError(_0x3a3341,null));};exports[_0x247d('0x43')]=function(_0x444f84,_0x3a0fea){var _0x1a03a9={'raw':![],'where':{'id':_0x444f84['params']['id']}},_0xacbabc={};_0xacbabc['model']=_[_0x247d('0x44')](db[_0x247d('0x2b')][_0x247d('0x45')]);_0xacbabc['query']=_[_0x247d('0x44')](_0x444f84[_0x247d('0x2f')]);_0xacbabc[_0x247d('0x30')]=_[_0x247d('0x31')](_0xacbabc[_0x247d('0x32')],_0xacbabc[_0x247d('0x2f')]);_0x1a03a9['attributes']=_[_0x247d('0x31')](_0xacbabc[_0x247d('0x32')],qs[_0x247d('0x34')](_0x444f84['query'][_0x247d('0x34')]));_0x1a03a9['attributes']=_0x1a03a9[_0x247d('0x33')][_0x247d('0x35')]?_0x1a03a9[_0x247d('0x33')]:_0xacbabc[_0x247d('0x32')];if(_0x444f84[_0x247d('0x2f')][_0x247d('0x3e')]){_0x1a03a9[_0x247d('0x3f')]=[{'all':!![]}];}_0x1a03a9=_[_0x247d('0x3c')]({},_0x1a03a9,_0x444f84[_0x247d('0x3d')]);return db['Schedule']['find'](_0x1a03a9)[_0x247d('0x22')](handleEntityNotFound(_0x3a0fea,null))['then'](respondWithResult(_0x3a0fea,null))['catch'](handleError(_0x3a0fea,null));};exports['create']=function(_0x1d0f10,_0x509b5a){return db[_0x247d('0x2b')][_0x247d('0x46')](_0x1d0f10[_0x247d('0x47')],{})['then'](function(_0x48f784){var _0x35a38a=_0x1d0f10[_0x247d('0x48')][_0x247d('0x49')]({'plain':!![]});if(!_0x35a38a)throw new Error(_0x247d('0x4a'));if(_0x35a38a['role']===_0x247d('0x48')){var _0x12989f=_0x48f784['get']({'plain':!![]});var _0x3e5b11=_0x247d('0x23');return db['UserProfileSection']['find']({'where':{'name':_0x3e5b11,'userProfileId':_0x35a38a['userProfileId']},'raw':!![]})['then'](function(_0x5ddab5){if(_0x5ddab5&&_0x5ddab5[_0x247d('0x4b')]===0x0){return db[_0x247d('0x24')][_0x247d('0x46')]({'name':_0x12989f[_0x247d('0x28')],'resourceId':_0x12989f['id'],'type':_0x5ddab5['name'],'sectionId':_0x5ddab5['id']},{})[_0x247d('0x22')](function(){return _0x48f784;});}else{return _0x48f784;}})['catch'](function(_0x52466c){logger['error'](_0x247d('0x4c'),_0x52466c);throw _0x52466c;});}return _0x48f784;})[_0x247d('0x22')](respondWithResult(_0x509b5a,0xc9))[_0x247d('0x42')](handleError(_0x509b5a,null));};exports[_0x247d('0x21')]=function(_0x11fa51,_0x1fba0c){if(_0x11fa51[_0x247d('0x47')]['id']){delete _0x11fa51['body']['id'];}return db['Schedule'][_0x247d('0x4d')]({'where':{'id':_0x11fa51[_0x247d('0x4e')]['id']}})[_0x247d('0x22')](handleEntityNotFound(_0x1fba0c,null))['then'](saveUpdates(_0x11fa51[_0x247d('0x47')],null))[_0x247d('0x22')](respondWithResult(_0x1fba0c,null))[_0x247d('0x42')](handleError(_0x1fba0c,null));};exports[_0x247d('0x25')]=function(_0x1ee648,_0x40c992){return db['Schedule'][_0x247d('0x4d')]({'where':{'id':_0x1ee648[_0x247d('0x4e')]['id']}})['then'](handleEntityNotFound(_0x40c992,null))[_0x247d('0x22')](removeEntity(_0x40c992,null))[_0x247d('0x42')](handleError(_0x40c992,null));};exports[_0x247d('0x4f')]=function(_0x266056,_0xa7f8c,_0x30d761){var _0x4dac64=require(_0x247d('0x50'));return db[_0x247d('0x2b')][_0x247d('0x4d')]({'where':{'id':_0x266056[_0x247d('0x4e')]['id']},'raw':!![]})[_0x247d('0x22')](handleEntityNotFound(_0xa7f8c,null))['then'](function(){_0x4dac64['run'](_0x266056[_0x247d('0x4e')]['id']);})[_0x247d('0x22')](respondWithStatusCode(_0xa7f8c,null))[_0x247d('0x42')](handleError(_0xa7f8c,null));};
\ No newline at end of file
index 7453263..b7b5db4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf84c=['moment','bluebird','path','rimraf','../../config/environment','./schedule.attributes','define','Schedule','lodash','util','../../config/logger'];(function(_0xf25c8b,_0x44ae16){var _0x1a9d39=function(_0x52f201){while(--_0x52f201){_0xf25c8b['push'](_0xf25c8b['shift']());}};_0x1a9d39(++_0x44ae16);}(_0xf84c,0xfa));var _0xcf84=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0xf84c[_0x3dd15e];return _0x231fd0;};'use strict';var _=require(_0xcf84('0x0'));var util=require(_0xcf84('0x1'));var logger=require(_0xcf84('0x2'))('api');var moment=require(_0xcf84('0x3'));var BPromise=require(_0xcf84('0x4'));var rp=require('request-promise');var fs=require('fs');var path=require(_0xcf84('0x5'));var rimraf=require(_0xcf84('0x6'));var config=require(_0xcf84('0x7'));var attributes=require(_0xcf84('0x8'));module['exports']=function(_0x592cc3,_0xe8e816){return _0x592cc3[_0xcf84('0x9')](_0xcf84('0xa'),attributes,{'tableName':'tools_schedules','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x84e6=['lodash','util','../../config/logger','moment','bluebird','request-promise','path','rimraf','../../config/environment','./schedule.attributes','Schedule','tools_schedules'];(function(_0x219eb5,_0x351fd2){var _0x118d56=function(_0x5e69ac){while(--_0x5e69ac){_0x219eb5['push'](_0x219eb5['shift']());}};_0x118d56(++_0x351fd2);}(_0x84e6,0xcc));var _0x684e=function(_0x413125,_0x4aae6a){_0x413125=_0x413125-0x0;var _0x27acf6=_0x84e6[_0x413125];return _0x27acf6;};'use strict';var _=require(_0x684e('0x0'));var util=require(_0x684e('0x1'));var logger=require(_0x684e('0x2'))('api');var moment=require(_0x684e('0x3'));var BPromise=require(_0x684e('0x4'));var rp=require(_0x684e('0x5'));var fs=require('fs');var path=require(_0x684e('0x6'));var rimraf=require(_0x684e('0x7'));var config=require(_0x684e('0x8'));var attributes=require(_0x684e('0x9'));module['exports']=function(_0x523967,_0x473274){return _0x523967['define'](_0x684e('0xa'),attributes,{'tableName':_0x684e('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 3cdf871..8cd5c40 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xabe3=['result','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','rpc','jayson/promise','http','then','info','Schedule,\x20%s,\x20%s','request\x20sent','debug','Schedule,\x20%s,\x20%s,\x20%s','stringify','error','code','message'];(function(_0x3ce3c,_0x319337){var _0x55a2c9=function(_0x1568d0){while(--_0x1568d0){_0x3ce3c['push'](_0x3ce3c['shift']());}};_0x55a2c9(++_0x319337);}(_0xabe3,0x99));var _0x3abe=function(_0x1dbaf7,_0x3d05b3){_0x1dbaf7=_0x1dbaf7-0x0;var _0x593f05=_0xabe3[_0x1dbaf7];return _0x593f05;};'use strict';var _=require('lodash');var util=require('util');var moment=require('moment');var BPromise=require(_0x3abe('0x0'));var rs=require(_0x3abe('0x1'));var fs=require('fs');var Redis=require(_0x3abe('0x2'));var db=require(_0x3abe('0x3'))['db'];var utils=require(_0x3abe('0x4'));var logger=require('../../config/logger')(_0x3abe('0x5'));var config=require('../../config/environment');var jayson=require(_0x3abe('0x6'));var client=jayson['client'][_0x3abe('0x7')]({'port':0x232a});function respondWithRpcPromise(_0x3639fc,_0x45852f,_0x4ed0e6){return new BPromise(function(_0x461e53,_0x5e5099){return client['request'](_0x3639fc,_0x4ed0e6)[_0x3abe('0x8')](function(_0x50e7ab){logger[_0x3abe('0x9')](_0x3abe('0xa'),_0x45852f,_0x3abe('0xb'));logger[_0x3abe('0xc')](_0x3abe('0xd'),_0x45852f,'request\x20sent',JSON[_0x3abe('0xe')](_0x50e7ab));if(_0x50e7ab[_0x3abe('0xf')]){if(_0x50e7ab['error'][_0x3abe('0x10')]===0x1f4){logger[_0x3abe('0xf')]('Schedule,\x20%s,\x20%s',_0x45852f,_0x50e7ab[_0x3abe('0xf')][_0x3abe('0x11')]);return _0x5e5099(_0x50e7ab[_0x3abe('0xf')][_0x3abe('0x11')]);}logger[_0x3abe('0xf')](_0x3abe('0xa'),_0x45852f,_0x50e7ab[_0x3abe('0xf')]['message']);return _0x461e53(_0x50e7ab[_0x3abe('0xf')]['message']);}else{logger[_0x3abe('0x9')](_0x3abe('0xa'),_0x45852f,'request\x20sent');_0x461e53(_0x50e7ab[_0x3abe('0x12')][_0x3abe('0x11')]);}})['catch'](function(_0x48271a){logger['error'](_0x3abe('0xa'),_0x45852f,_0x48271a);_0x5e5099(_0x48271a);});});}
\ No newline at end of file
+var _0x9a34=['ioredis','../../mysqldb','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','request','info','Schedule,\x20%s,\x20%s','request\x20sent','debug','stringify','error','message','result','catch','lodash','moment','randomstring'];(function(_0xaa4384,_0x4890ae){var _0x5a7157=function(_0x2e6cc3){while(--_0x2e6cc3){_0xaa4384['push'](_0xaa4384['shift']());}};_0x5a7157(++_0x4890ae);}(_0x9a34,0x138));var _0x49a3=function(_0x2bbadf,_0x494f8e){_0x2bbadf=_0x2bbadf-0x0;var _0xddd552=_0x9a34[_0x2bbadf];return _0xddd552;};'use strict';var _=require(_0x49a3('0x0'));var util=require('util');var moment=require(_0x49a3('0x1'));var BPromise=require('bluebird');var rs=require(_0x49a3('0x2'));var fs=require('fs');var Redis=require(_0x49a3('0x3'));var db=require(_0x49a3('0x4'))['db'];var utils=require('../../config/utils');var logger=require(_0x49a3('0x5'))(_0x49a3('0x6'));var config=require(_0x49a3('0x7'));var jayson=require(_0x49a3('0x8'));var client=jayson[_0x49a3('0x9')][_0x49a3('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x13f102,_0x73e9bd,_0x3a5d10){return new BPromise(function(_0x5a51aa,_0x23c8b6){return client[_0x49a3('0xb')](_0x13f102,_0x3a5d10)['then'](function(_0x5528a9){logger[_0x49a3('0xc')](_0x49a3('0xd'),_0x73e9bd,_0x49a3('0xe'));logger[_0x49a3('0xf')]('Schedule,\x20%s,\x20%s,\x20%s',_0x73e9bd,'request\x20sent',JSON[_0x49a3('0x10')](_0x5528a9));if(_0x5528a9[_0x49a3('0x11')]){if(_0x5528a9['error']['code']===0x1f4){logger['error'](_0x49a3('0xd'),_0x73e9bd,_0x5528a9[_0x49a3('0x11')]['message']);return _0x23c8b6(_0x5528a9[_0x49a3('0x11')][_0x49a3('0x12')]);}logger[_0x49a3('0x11')](_0x49a3('0xd'),_0x73e9bd,_0x5528a9['error'][_0x49a3('0x12')]);return _0x5a51aa(_0x5528a9['error'][_0x49a3('0x12')]);}else{logger[_0x49a3('0xc')](_0x49a3('0xd'),_0x73e9bd,_0x49a3('0xe'));_0x5a51aa(_0x5528a9[_0x49a3('0x13')]['message']);}})[_0x49a3('0x14')](function(_0x34388e){logger[_0x49a3('0x11')](_0x49a3('0xd'),_0x73e9bd,_0x34388e);_0x23c8b6(_0x34388e);});});}
\ No newline at end of file
index 8caa472..397405d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x185a=['./screenRecording.controller','get','/describe','isAuthenticated','describe','show','/:id/download','download','create','/:id','delete','destroy','exports','multer','util','path','connect-timeout','express','Router','fs-extra','../../components/interaction/service','../../config/environment'];(function(_0x5dbb84,_0x1bbce9){var _0x1d6eae=function(_0xd93967){while(--_0xd93967){_0x5dbb84['push'](_0x5dbb84['shift']());}};_0x1d6eae(++_0x1bbce9);}(_0x185a,0x157));var _0xa185=function(_0x1facfa,_0x1acf7d){_0x1facfa=_0x1facfa-0x0;var _0x9ec701=_0x185a[_0x1facfa];return _0x9ec701;};'use strict';var multer=require(_0xa185('0x0'));var util=require(_0xa185('0x1'));var path=require(_0xa185('0x2'));var timeout=require(_0xa185('0x3'));var express=require(_0xa185('0x4'));var router=express[_0xa185('0x5')]();var fs_extra=require(_0xa185('0x6'));var auth=require('../../components/auth/service');var interaction=require(_0xa185('0x7'));var config=require(_0xa185('0x8'));var controller=require(_0xa185('0x9'));router[_0xa185('0xa')]('/',auth['isAuthenticated'](),controller['index']);router[_0xa185('0xa')](_0xa185('0xb'),auth[_0xa185('0xc')](),controller[_0xa185('0xd')]);router[_0xa185('0xa')]('/:id',auth[_0xa185('0xc')](),controller[_0xa185('0xe')]);router[_0xa185('0xa')](_0xa185('0xf'),auth[_0xa185('0xc')](),controller[_0xa185('0x10')]);router['post']('/',auth[_0xa185('0xc')](),controller[_0xa185('0x11')]);router['put'](_0xa185('0x12'),auth[_0xa185('0xc')](),controller['update']);router[_0xa185('0x13')]('/:id',auth[_0xa185('0xc')](),controller[_0xa185('0x14')]);module[_0xa185('0x15')]=router;
\ No newline at end of file
+var _0x555b=['update','delete','destroy','multer','util','connect-timeout','Router','fs-extra','../../components/interaction/service','../../config/environment','get','isAuthenticated','/describe','describe','/:id','show','/:id/download','download','post','create'];(function(_0x174ee8,_0x2f1609){var _0x979bce=function(_0x32b106){while(--_0x32b106){_0x174ee8['push'](_0x174ee8['shift']());}};_0x979bce(++_0x2f1609);}(_0x555b,0x17f));var _0xb555=function(_0x122204,_0x501223){_0x122204=_0x122204-0x0;var _0x1dbfe6=_0x555b[_0x122204];return _0x1dbfe6;};'use strict';var multer=require(_0xb555('0x0'));var util=require(_0xb555('0x1'));var path=require('path');var timeout=require(_0xb555('0x2'));var express=require('express');var router=express[_0xb555('0x3')]();var fs_extra=require(_0xb555('0x4'));var auth=require('../../components/auth/service');var interaction=require(_0xb555('0x5'));var config=require(_0xb555('0x6'));var controller=require('./screenRecording.controller');router[_0xb555('0x7')]('/',auth[_0xb555('0x8')](),controller['index']);router['get'](_0xb555('0x9'),auth[_0xb555('0x8')](),controller[_0xb555('0xa')]);router[_0xb555('0x7')](_0xb555('0xb'),auth['isAuthenticated'](),controller[_0xb555('0xc')]);router['get'](_0xb555('0xd'),auth[_0xb555('0x8')](),controller[_0xb555('0xe')]);router[_0xb555('0xf')]('/',auth[_0xb555('0x8')](),controller[_0xb555('0x10')]);router['put']('/:id',auth[_0xb555('0x8')](),controller[_0xb555('0x11')]);router[_0xb555('0x12')](_0xb555('0xb'),auth['isAuthenticated'](),controller[_0xb555('0x13')]);module['exports']=router;
\ No newline at end of file
index 9b95302..a37d263 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc7da=['value','extname','STRING','setDataValue','INTEGER','startedAt','closedAt','DATE','getDataValue','format','toString','createdAt','MM-DD-YYYY\x20HH:mm','updatedAt','sequelize','moment','path','exports','VIRTUAL'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0xc7da,0xf2));var _0xac7d=function(_0x2cdb6e,_0x3befc){_0x2cdb6e=_0x2cdb6e-0x0;var _0x297831=_0xc7da[_0x2cdb6e];return _0x297831;};'use strict';var Sequelize=require(_0xac7d('0x0'));var moment=require(_0xac7d('0x1'));var path=require(_0xac7d('0x2'));var config=require('../../config/environment');module[_0xac7d('0x3')]={'format':{'type':Sequelize[_0xac7d('0x4')],'get':function(){return this['getDataValue'](_0xac7d('0x5'))?path[_0xac7d('0x6')](this['getDataValue'](_0xac7d('0x5'))):undefined;}},'interactionid':{'type':Sequelize[_0xac7d('0x7')]},'channel':{'type':Sequelize[_0xac7d('0x7')]},'value':{'type':Sequelize[_0xac7d('0x7')],'set':function(_0x268265){var _0x153ce5=_0x268265['replace'](/\\/g,'/');this[_0xac7d('0x8')](_0xac7d('0x5'),_0x153ce5);}},'rating':{'type':Sequelize[_0xac7d('0x9')],'validate':{'max':0x5,'min':0x0}},'duration':{'type':Sequelize[_0xac7d('0x9')],'set':function(_0x217811){this[_0xac7d('0x8')](_0xac7d('0xa'),moment()['subtract'](_0x217811,'ms'));this[_0xac7d('0x8')](_0xac7d('0xb'),moment());this[_0xac7d('0x8')]('duration',_0x217811);}},'startedAt':{'type':Sequelize[_0xac7d('0xc')],'get':function(){return moment(this[_0xac7d('0xd')](_0xac7d('0xa')))[_0xac7d('0xe')]('MM-DD-YYYY\x20HH:mm')[_0xac7d('0xf')]();}},'closedAt':{'type':Sequelize[_0xac7d('0xc')],'get':function(){return moment(this[_0xac7d('0xd')](_0xac7d('0xb')))[_0xac7d('0xe')]('MM-DD-YYYY\x20HH:mm')[_0xac7d('0xf')]();}},'createdAt':{'type':Sequelize['DATE'],'get':function(){return moment(this[_0xac7d('0xd')](_0xac7d('0x10')))[_0xac7d('0xe')](_0xac7d('0x11'))['toString']();}},'updatedAt':{'type':Sequelize[_0xac7d('0xc')],'get':function(){return moment(this[_0xac7d('0xd')](_0xac7d('0x12')))[_0xac7d('0xe')](_0xac7d('0x11'))['toString']();}}};
\ No newline at end of file
+var _0xc373=['path','../../config/environment','getDataValue','value','extname','STRING','replace','setDataValue','INTEGER','closedAt','duration','DATE','startedAt','MM-DD-YYYY\x20HH:mm','toString','format','createdAt','updatedAt','moment'];(function(_0x1d0964,_0x4ee267){var _0x15edc1=function(_0x106899){while(--_0x106899){_0x1d0964['push'](_0x1d0964['shift']());}};_0x15edc1(++_0x4ee267);}(_0xc373,0x1c7));var _0x3c37=function(_0x1de4b8,_0x529b41){_0x1de4b8=_0x1de4b8-0x0;var _0x557699=_0xc373[_0x1de4b8];return _0x557699;};'use strict';var Sequelize=require('sequelize');var moment=require(_0x3c37('0x0'));var path=require(_0x3c37('0x1'));var config=require(_0x3c37('0x2'));module['exports']={'format':{'type':Sequelize['VIRTUAL'],'get':function(){return this[_0x3c37('0x3')](_0x3c37('0x4'))?path[_0x3c37('0x5')](this[_0x3c37('0x3')](_0x3c37('0x4'))):undefined;}},'interactionid':{'type':Sequelize[_0x3c37('0x6')]},'channel':{'type':Sequelize['STRING']},'value':{'type':Sequelize['STRING'],'set':function(_0x2e1941){var _0x1244e6=_0x2e1941[_0x3c37('0x7')](/\\/g,'/');this[_0x3c37('0x8')](_0x3c37('0x4'),_0x1244e6);}},'rating':{'type':Sequelize[_0x3c37('0x9')],'validate':{'max':0x5,'min':0x0}},'duration':{'type':Sequelize[_0x3c37('0x9')],'set':function(_0x59d4f9){this[_0x3c37('0x8')]('startedAt',moment()['subtract'](_0x59d4f9,'ms'));this[_0x3c37('0x8')](_0x3c37('0xa'),moment());this[_0x3c37('0x8')](_0x3c37('0xb'),_0x59d4f9);}},'startedAt':{'type':Sequelize[_0x3c37('0xc')],'get':function(){return moment(this[_0x3c37('0x3')](_0x3c37('0xd')))['format'](_0x3c37('0xe'))[_0x3c37('0xf')]();}},'closedAt':{'type':Sequelize[_0x3c37('0xc')],'get':function(){return moment(this['getDataValue']('closedAt'))[_0x3c37('0x10')]('MM-DD-YYYY\x20HH:mm')['toString']();}},'createdAt':{'type':Sequelize[_0x3c37('0xc')],'get':function(){return moment(this[_0x3c37('0x3')](_0x3c37('0x11')))[_0x3c37('0x10')](_0x3c37('0xe'))[_0x3c37('0xf')]();}},'updatedAt':{'type':Sequelize[_0x3c37('0xc')],'get':function(){return moment(this[_0x3c37('0x3')](_0x3c37('0x12')))['format'](_0x3c37('0xe'))[_0x3c37('0xf')]();}}};
\ No newline at end of file
index 0a7c5db..ffdc39d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1cb9=['ValidationError','filename','unlink','message','Not\x20found','isNil','Entity\x20not\x20found','info','cancellazione\x20fisica\x20documento\x20%s','File:\x20\x22','\x22\x20trovato\x20eseguo\x20la\x20cancellazione','unlinkSync','.cypher','eml-format','zip-dir','fast-json-patch','request-promise','moment','mustache','util','sox','to-csv','ejs','fs-extra','lodash','squel','jsforce','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../mysqldb','sendStatus','status','end','undefined','limit','count','offset','Content-Range','json','reject','save','update','then','destroy','error','stack','name','send','index','map','ScreenRecording','rawAttributes','fieldName','type','key','model','differenceBy','format','query','filters','intersection','fields','attributes','nolimit','order','sort','pick','filter','merge','where','VIRTUAL','includeAll','findAll','rows','catch','show','keys','length','include','options','find','create','body','duration','createdAt','value','params','describe','download','../../components/encryptor','uniqueid','join','server/files/screen_recordings','%s.cypher','existsSync','decryptFile','recording','root','Sequelize'];(function(_0xce50ab,_0x4c503b){var _0x9432bb=function(_0x4827e7){while(--_0x4827e7){_0xce50ab['push'](_0xce50ab['shift']());}};_0x9432bb(++_0x4c503b);}(_0x1cb9,0x14e));var _0x91cb=function(_0x59ccaa,_0x1df0e7){_0x59ccaa=_0x59ccaa-0x0;var _0x321c4f=_0x1cb9[_0x59ccaa];return _0x321c4f;};'use strict';var emlformat=require(_0x91cb('0x0'));var rimraf=require('rimraf');var zipdir=require(_0x91cb('0x1'));var jsonpatch=require(_0x91cb('0x2'));var rp=require(_0x91cb('0x3'));var moment=require(_0x91cb('0x4'));var BPromise=require('bluebird');var Mustache=require(_0x91cb('0x5'));var util=require(_0x91cb('0x6'));var path=require('path');var sox=require(_0x91cb('0x7'));var csv=require(_0x91cb('0x8'));var ejs=require(_0x91cb('0x9'));var fs=require('fs');var fs_extra=require(_0x91cb('0xa'));var _=require(_0x91cb('0xb'));var squel=require(_0x91cb('0xc'));var crypto=require('crypto');var jsforce=require(_0x91cb('0xd'));var deskjs=require('desk.js');var toCsv=require(_0x91cb('0x8'));var querystring=require('querystring');var Papa=require(_0x91cb('0xe'));var Redis=require(_0x91cb('0xf'));var authService=require(_0x91cb('0x10'));var qs=require(_0x91cb('0x11'));var as=require(_0x91cb('0x12'));var hardwareService=require(_0x91cb('0x13'));var logger=require(_0x91cb('0x14'))(_0x91cb('0x15'));var utils=require(_0x91cb('0x16'));var config=require(_0x91cb('0x17'));var licenseUtil=require('../../config/license/util');var db=require(_0x91cb('0x18'))['db'];function respondWithStatusCode(_0x366f09,_0x4ba2f2){_0x4ba2f2=_0x4ba2f2||0xcc;return function(_0x20e6e0){if(_0x20e6e0){return _0x366f09[_0x91cb('0x19')](_0x4ba2f2);}return _0x366f09[_0x91cb('0x1a')](_0x4ba2f2)[_0x91cb('0x1b')]();};}function respondWithResult(_0x4a7d45,_0x4cc6ef){_0x4cc6ef=_0x4cc6ef||0xc8;return function(_0x4aae25){if(_0x4aae25){return _0x4a7d45[_0x91cb('0x1a')](_0x4cc6ef)['json'](_0x4aae25);}};}function respondWithFilteredResult(_0x528f73,_0x576369){return function(_0xc3629e){if(_0xc3629e){var _0x347980=typeof _0x576369['offset']===_0x91cb('0x1c')&&typeof _0x576369[_0x91cb('0x1d')]==='undefined';var _0xc594e3=_0xc3629e[_0x91cb('0x1e')];var _0x1cd34b=_0x347980?0x0:_0x576369[_0x91cb('0x1f')];var _0x5cc1c3=_0x347980?_0xc3629e[_0x91cb('0x1e')]:_0x576369[_0x91cb('0x1f')]+_0x576369['limit'];var _0x123847;if(_0x5cc1c3>=_0xc594e3){_0x5cc1c3=_0xc594e3;_0x123847=0xc8;}else{_0x123847=0xce;}_0x528f73['status'](_0x123847);return _0x528f73['set'](_0x91cb('0x20'),_0x1cd34b+'-'+_0x5cc1c3+'/'+_0xc594e3)[_0x91cb('0x21')](_0xc3629e);}return null;};}function patchUpdates(_0x56e409){return function(_0x51a1d5){try{jsonpatch['apply'](_0x51a1d5,_0x56e409,!![]);}catch(_0x438162){return BPromise[_0x91cb('0x22')](_0x438162);}return _0x51a1d5[_0x91cb('0x23')]();};}function saveUpdates(_0x1dbee2,_0x5c6a15){return function(_0x45c4b3){if(_0x45c4b3){return _0x45c4b3[_0x91cb('0x24')](_0x1dbee2)[_0x91cb('0x25')](function(_0x55fa78){return _0x55fa78;});}return null;};}function removeEntity(_0x26f18f,_0x1a7a54){return function(_0x2447e7){if(_0x2447e7){return _0x2447e7[_0x91cb('0x26')]()[_0x91cb('0x25')](function(){_0x26f18f[_0x91cb('0x1a')](0xcc)[_0x91cb('0x1b')]();});}};}function handleEntityNotFound(_0x423c4f,_0x264e9b){return function(_0x4c8438){if(!_0x4c8438){_0x423c4f['sendStatus'](0x194);}return _0x4c8438;};}function handleError(_0x234eb1,_0x554350){_0x554350=_0x554350||0x1f4;return function(_0x1c67d2){logger[_0x91cb('0x27')](_0x1c67d2[_0x91cb('0x28')]);if(_0x1c67d2['name']){delete _0x1c67d2[_0x91cb('0x29')];}_0x234eb1['status'](_0x554350)[_0x91cb('0x2a')](_0x1c67d2);};}exports[_0x91cb('0x2b')]=function(_0x3b3ee6,_0x2fb473){var _0x468908={},_0x504275={},_0x2f04a3={'count':0x0,'rows':[]};var _0x52670a=_[_0x91cb('0x2c')](db[_0x91cb('0x2d')][_0x91cb('0x2e')],function(_0x4944bd){return{'name':_0x4944bd[_0x91cb('0x2f')],'type':_0x4944bd[_0x91cb('0x30')][_0x91cb('0x31')]};});_0x504275[_0x91cb('0x32')]=_[_0x91cb('0x33')](_[_0x91cb('0x2c')](_0x52670a,_0x91cb('0x29')),[_0x91cb('0x34')]);_0x504275[_0x91cb('0x35')]=_['keys'](_0x3b3ee6[_0x91cb('0x35')]);_0x504275[_0x91cb('0x36')]=_[_0x91cb('0x37')](_0x504275[_0x91cb('0x32')],_0x504275[_0x91cb('0x35')]);_0x468908['attributes']=_[_0x91cb('0x37')](_0x504275[_0x91cb('0x32')],qs[_0x91cb('0x38')](_0x3b3ee6[_0x91cb('0x35')][_0x91cb('0x38')]));_0x468908['attributes']=_0x468908[_0x91cb('0x39')]['length']?_0x468908['attributes']:_0x504275['model'];if(!_0x3b3ee6[_0x91cb('0x35')]['hasOwnProperty'](_0x91cb('0x3a'))){_0x468908['limit']=qs['limit'](_0x3b3ee6[_0x91cb('0x35')][_0x91cb('0x1d')]);_0x468908[_0x91cb('0x1f')]=qs[_0x91cb('0x1f')](_0x3b3ee6[_0x91cb('0x35')]['offset']);}_0x468908[_0x91cb('0x3b')]=qs[_0x91cb('0x3c')](_0x3b3ee6[_0x91cb('0x35')][_0x91cb('0x3c')]);_0x468908['where']=qs['filters'](_[_0x91cb('0x3d')](_0x3b3ee6[_0x91cb('0x35')],_0x504275['filters']),_0x52670a);if(_0x3b3ee6[_0x91cb('0x35')][_0x91cb('0x3e')]){_0x468908['where']=_[_0x91cb('0x3f')](_0x468908[_0x91cb('0x40')],{'$or':_['map'](_0x52670a,function(_0x43d4fe){if(_0x43d4fe['type']!==_0x91cb('0x41')){var _0xabe6a3={};_0xabe6a3[_0x43d4fe[_0x91cb('0x29')]]={'$like':'%'+_0x3b3ee6[_0x91cb('0x35')][_0x91cb('0x3e')]+'%'};return _0xabe6a3;}})});}_0x468908=_[_0x91cb('0x3f')]({},_0x468908,_0x3b3ee6['options']);var _0xa90111={'where':_0x468908[_0x91cb('0x40')]};return db['ScreenRecording'][_0x91cb('0x1e')](_0xa90111)['then'](function(_0x2c6102){_0x2f04a3[_0x91cb('0x1e')]=_0x2c6102;if(_0x3b3ee6[_0x91cb('0x35')][_0x91cb('0x42')]){_0x468908['include']=[{'all':!![]}];}return db[_0x91cb('0x2d')][_0x91cb('0x43')](_0x468908);})[_0x91cb('0x25')](function(_0x37e777){_0x2f04a3[_0x91cb('0x44')]=_0x37e777;return _0x2f04a3;})[_0x91cb('0x25')](respondWithFilteredResult(_0x2fb473,_0x468908))[_0x91cb('0x45')](handleError(_0x2fb473,null));};exports[_0x91cb('0x46')]=function(_0x325dca,_0x3cc4c1){var _0x49bc42={'raw':![],'where':{'id':_0x325dca['params']['id']}},_0x16993f={};_0x16993f[_0x91cb('0x32')]=_['keys'](db[_0x91cb('0x2d')]['rawAttributes']);_0x16993f[_0x91cb('0x35')]=_[_0x91cb('0x47')](_0x325dca[_0x91cb('0x35')]);_0x16993f[_0x91cb('0x36')]=_['intersection'](_0x16993f[_0x91cb('0x32')],_0x16993f[_0x91cb('0x35')]);_0x49bc42['attributes']=_[_0x91cb('0x37')](_0x16993f[_0x91cb('0x32')],qs[_0x91cb('0x38')](_0x325dca[_0x91cb('0x35')][_0x91cb('0x38')]));_0x49bc42[_0x91cb('0x39')]=_0x49bc42[_0x91cb('0x39')][_0x91cb('0x48')]?_0x49bc42[_0x91cb('0x39')]:_0x16993f['model'];if(_0x325dca[_0x91cb('0x35')][_0x91cb('0x42')]){_0x49bc42[_0x91cb('0x49')]=[{'all':!![]}];}_0x49bc42=_[_0x91cb('0x3f')]({},_0x49bc42,_0x325dca[_0x91cb('0x4a')]);return db[_0x91cb('0x2d')][_0x91cb('0x4b')](_0x49bc42)[_0x91cb('0x25')](handleEntityNotFound(_0x3cc4c1,null))['then'](respondWithResult(_0x3cc4c1,null))[_0x91cb('0x45')](handleError(_0x3cc4c1,null));};exports[_0x91cb('0x4c')]=function(_0x2b8b7f,_0x3b8cfd){return db['ScreenRecording'][_0x91cb('0x4c')](_0x2b8b7f[_0x91cb('0x4d')],{})['then'](respondWithResult(_0x3b8cfd,0xc9))[_0x91cb('0x45')](handleError(_0x3b8cfd,null));};exports['update']=function(_0x2c419b,_0x4c0acd){if(_0x2c419b['body']['id']){delete _0x2c419b['body']['id'];}delete _0x2c419b[_0x91cb('0x4d')][_0x91cb('0x4e')];delete _0x2c419b[_0x91cb('0x4d')][_0x91cb('0x4f')];delete _0x2c419b[_0x91cb('0x4d')]['closedAt'];delete _0x2c419b['body'][_0x91cb('0x50')];return db[_0x91cb('0x2d')][_0x91cb('0x4b')]({'where':{'id':_0x2c419b[_0x91cb('0x51')]['id']}})['then'](handleEntityNotFound(_0x4c0acd,null))['then'](saveUpdates(_0x2c419b['body'],null))[_0x91cb('0x25')](respondWithResult(_0x4c0acd,null))['catch'](handleError(_0x4c0acd,null));};exports[_0x91cb('0x52')]=function(_0x4aa670,_0x21463a){return db[_0x91cb('0x2d')][_0x91cb('0x52')]()[_0x91cb('0x25')](respondWithResult(_0x21463a,null))[_0x91cb('0x45')](handleError(_0x21463a,null));};exports[_0x91cb('0x53')]=function(_0x3ec250,_0x30fd4e,_0xff7c3f){var _0x20fc0a=require(_0x91cb('0x54'));var _0x5752ed=![];var _0x1e445a={};if(_0x3ec250[_0x91cb('0x35')]['type']&&_0x3ec250[_0x91cb('0x35')][_0x91cb('0x30')]==='uniqueid'){_0x1e445a[_0x91cb('0x55')]=_0x3ec250[_0x91cb('0x51')]['id'];}else{_0x1e445a['id']=_0x3ec250[_0x91cb('0x51')]['id'];}return db[_0x91cb('0x2d')][_0x91cb('0x4b')]({'where':_0x1e445a,'attributes':['id',_0x91cb('0x50')],'raw':!![]})[_0x91cb('0x25')](handleEntityNotFound(_0x30fd4e,null))[_0x91cb('0x25')](function(_0x3320bd){if(_0x3320bd){var _0x93ef52=path[_0x91cb('0x56')](config['root'],_0x91cb('0x57'),_0x3320bd['value']);var _0x37221e=util['format'](_0x91cb('0x58'),_0x93ef52);if(fs[_0x91cb('0x59')](_0x37221e)){_0x5752ed=!![];return _0x20fc0a[_0x91cb('0x5a')](_0x37221e,_0x93ef52,config['secrets'][_0x91cb('0x5b')])[_0x91cb('0x25')](function(){return _0x3320bd;});}return _0x3320bd;}})['then'](function(_0xef4754){if(_0xef4754){var _0x102025=path[_0x91cb('0x56')](config[_0x91cb('0x5c')],'server/files/screen_recordings',_0xef4754[_0x91cb('0x50')]);if(!fs[_0x91cb('0x59')](_0x102025)){throw new db[(_0x91cb('0x5d'))][(_0x91cb('0x5e'))]('ScreenRecording\x20not\x20found');}if(_0xef4754[_0x91cb('0x5f')]){return _0x30fd4e[_0x91cb('0x53')](_0x102025,_0xef4754['filename']+path['extname'](_0x102025),function(){if(_0x5752ed){fs[_0x91cb('0x60')](_0x102025);}});}else{return _0x30fd4e['download'](_0x102025,function(_0x1180ac){if(_0x5752ed){fs[_0x91cb('0x60')](_0x102025);}});}}})['catch'](function(_0x4f19c8){if(_0x4f19c8[_0x91cb('0x61')]==='ScreenRecording\x20not\x20found'){_0x30fd4e[_0x91cb('0x1a')](0x194)[_0x91cb('0x2a')](_0x91cb('0x62'));}else{return handleError(_0x30fd4e,null);}});};exports['destroy']=function(_0x22fea8,_0x524400){return db[_0x91cb('0x2d')][_0x91cb('0x4b')]({'where':{'id':_0x22fea8[_0x91cb('0x51')]['id']}})[_0x91cb('0x25')](function(_0x483172){if(_[_0x91cb('0x63')](_0x483172)){throw new ReferenceError(_0x91cb('0x64'));}return _0x483172;})[_0x91cb('0x25')](function(_0x443c72){var _0xaf70c5=path[_0x91cb('0x56')](config[_0x91cb('0x5c')],_0x91cb('0x57'),_0x443c72[_0x91cb('0x50')]);logger[_0x91cb('0x65')](_0x91cb('0x66'),_0xaf70c5);if(!_[_0x91cb('0x63')](_0x443c72['value'])&&fs[_0x91cb('0x59')](_0xaf70c5)){logger[_0x91cb('0x65')](_0x91cb('0x67')+_0xaf70c5+_0x91cb('0x68'));fs[_0x91cb('0x69')](_0xaf70c5);}_0xaf70c5=_0xaf70c5+_0x91cb('0x6a');if(!_[_0x91cb('0x63')](_0x443c72['value'])&&fs[_0x91cb('0x59')](_0xaf70c5)){logger['info'](_0x91cb('0x67')+_0xaf70c5+_0x91cb('0x68'));fs[_0x91cb('0x69')](_0xaf70c5);}return _0x443c72;})[_0x91cb('0x25')](function(_0x48fcfe){if(!_0x48fcfe)throw new InternalError();return _0x48fcfe[_0x91cb('0x26')]();})[_0x91cb('0x25')](function(){_0x524400[_0x91cb('0x1a')](0xcc)[_0x91cb('0x1b')]();})[_0x91cb('0x45')](handleError(_0x524400,null));};
\ No newline at end of file
+var _0xabce=['sendStatus','error','name','send','index','map','ScreenRecording','rawAttributes','type','model','differenceBy','format','query','keys','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','sort','pick','where','merge','options','include','rows','includeAll','find','catch','create','body','createdAt','closedAt','value','params','describe','download','../../components/encryptor','uniqueid','%s.cypher','existsSync','decryptFile','recording','join','root','server/files/screen_recordings','Sequelize','ValidationError','ScreenRecording\x20not\x20found','unlink','Not\x20found','destroy','isNil','Entity\x20not\x20found','info','cancellazione\x20fisica\x20documento\x20%s','File:\x20\x22','\x22\x20trovato\x20eseguo\x20la\x20cancellazione','.cypher','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','../../mysqldb','status','end','json','limit','count','offset','Content-Range','apply','reject','save','update','then'];(function(_0xe2ebaa,_0x138483){var _0x563838=function(_0x542a4c){while(--_0x542a4c){_0xe2ebaa['push'](_0xe2ebaa['shift']());}};_0x563838(++_0x138483);}(_0xabce,0x103));var _0xeabc=function(_0x257642,_0x270a80){_0x257642=_0x257642-0x0;var _0x3d813b=_0xabce[_0x257642];return _0x3d813b;};'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('0x30')](_[_0xeabc('0x2b')](_0x149170,_0xeabc('0x28')),[_0xeabc('0x31')]);_0x2b568f[_0xeabc('0x32')]=_[_0xeabc('0x33')](_0x48fb52['query']);_0x2b568f[_0xeabc('0x34')]=_[_0xeabc('0x35')](_0x2b568f[_0xeabc('0x2f')],_0x2b568f['query']);_0x38572d[_0xeabc('0x36')]=_[_0xeabc('0x35')](_0x2b568f[_0xeabc('0x2f')],qs['fields'](_0x48fb52[_0xeabc('0x32')][_0xeabc('0x37')]));_0x38572d[_0xeabc('0x36')]=_0x38572d['attributes'][_0xeabc('0x38')]?_0x38572d[_0xeabc('0x36')]:_0x2b568f['model'];if(!_0x48fb52['query'][_0xeabc('0x39')](_0xeabc('0x3a'))){_0x38572d['limit']=qs[_0xeabc('0x1d')](_0x48fb52[_0xeabc('0x32')][_0xeabc('0x1d')]);_0x38572d[_0xeabc('0x1f')]=qs[_0xeabc('0x1f')](_0x48fb52['query'][_0xeabc('0x1f')]);}_0x38572d['order']=qs[_0xeabc('0x3b')](_0x48fb52[_0xeabc('0x32')][_0xeabc('0x3b')]);_0x38572d['where']=qs['filters'](_[_0xeabc('0x3c')](_0x48fb52['query'],_0x2b568f[_0xeabc('0x34')]),_0x149170);if(_0x48fb52['query']['filter']){_0x38572d['where']=_['merge'](_0x38572d[_0xeabc('0x3d')],{'$or':_['map'](_0x149170,function(_0x257fe8){if(_0x257fe8[_0xeabc('0x2e')]!=='VIRTUAL'){var _0xe8fa6e={};_0xe8fa6e[_0x257fe8['name']]={'$like':'%'+_0x48fb52[_0xeabc('0x32')]['filter']+'%'};return _0xe8fa6e;}})});}_0x38572d=_[_0xeabc('0x3e')]({},_0x38572d,_0x48fb52[_0xeabc('0x3f')]);var _0xeeef02={'where':_0x38572d['where']};return db['ScreenRecording']['count'](_0xeeef02)[_0xeabc('0x25')](function(_0x23fb33){_0x2f8633[_0xeabc('0x1e')]=_0x23fb33;if(_0x48fb52['query']['includeAll']){_0x38572d[_0xeabc('0x40')]=[{'all':!![]}];}return db[_0xeabc('0x2c')]['findAll'](_0x38572d);})[_0xeabc('0x25')](function(_0x5e0b78){_0x2f8633[_0xeabc('0x41')]=_0x5e0b78;return _0x2f8633;})['then'](respondWithFilteredResult(_0x2163e6,_0x38572d))['catch'](handleError(_0x2163e6,null));};exports['show']=function(_0x25958b,_0x37c926){var _0xd03226={'raw':![],'where':{'id':_0x25958b['params']['id']}},_0x3eeeb5={};_0x3eeeb5[_0xeabc('0x2f')]=_['keys'](db[_0xeabc('0x2c')][_0xeabc('0x2d')]);_0x3eeeb5[_0xeabc('0x32')]=_[_0xeabc('0x33')](_0x25958b[_0xeabc('0x32')]);_0x3eeeb5['filters']=_['intersection'](_0x3eeeb5[_0xeabc('0x2f')],_0x3eeeb5['query']);_0xd03226[_0xeabc('0x36')]=_[_0xeabc('0x35')](_0x3eeeb5['model'],qs[_0xeabc('0x37')](_0x25958b[_0xeabc('0x32')][_0xeabc('0x37')]));_0xd03226[_0xeabc('0x36')]=_0xd03226[_0xeabc('0x36')][_0xeabc('0x38')]?_0xd03226[_0xeabc('0x36')]:_0x3eeeb5['model'];if(_0x25958b[_0xeabc('0x32')][_0xeabc('0x42')]){_0xd03226[_0xeabc('0x40')]=[{'all':!![]}];}_0xd03226=_[_0xeabc('0x3e')]({},_0xd03226,_0x25958b[_0xeabc('0x3f')]);return db[_0xeabc('0x2c')][_0xeabc('0x43')](_0xd03226)[_0xeabc('0x25')](handleEntityNotFound(_0x37c926,null))[_0xeabc('0x25')](respondWithResult(_0x37c926,null))[_0xeabc('0x44')](handleError(_0x37c926,null));};exports['create']=function(_0x38356c,_0x2e6efb){return db[_0xeabc('0x2c')][_0xeabc('0x45')](_0x38356c[_0xeabc('0x46')],{})[_0xeabc('0x25')](respondWithResult(_0x2e6efb,0xc9))[_0xeabc('0x44')](handleError(_0x2e6efb,null));};exports['update']=function(_0x766743,_0x32e09b){if(_0x766743[_0xeabc('0x46')]['id']){delete _0x766743[_0xeabc('0x46')]['id'];}delete _0x766743[_0xeabc('0x46')]['duration'];delete _0x766743[_0xeabc('0x46')][_0xeabc('0x47')];delete _0x766743[_0xeabc('0x46')][_0xeabc('0x48')];delete _0x766743['body'][_0xeabc('0x49')];return db[_0xeabc('0x2c')]['find']({'where':{'id':_0x766743[_0xeabc('0x4a')]['id']}})['then'](handleEntityNotFound(_0x32e09b,null))[_0xeabc('0x25')](saveUpdates(_0x766743['body'],null))[_0xeabc('0x25')](respondWithResult(_0x32e09b,null))[_0xeabc('0x44')](handleError(_0x32e09b,null));};exports[_0xeabc('0x4b')]=function(_0x1524c3,_0x1ee837){return db[_0xeabc('0x2c')][_0xeabc('0x4b')]()[_0xeabc('0x25')](respondWithResult(_0x1ee837,null))[_0xeabc('0x44')](handleError(_0x1ee837,null));};exports[_0xeabc('0x4c')]=function(_0x48a13f,_0x180a14,_0x2537ab){var _0x4072cb=require(_0xeabc('0x4d'));var _0x555d6b=![];var _0x1cef45={};if(_0x48a13f[_0xeabc('0x32')][_0xeabc('0x2e')]&&_0x48a13f[_0xeabc('0x32')]['type']===_0xeabc('0x4e')){_0x1cef45[_0xeabc('0x4e')]=_0x48a13f[_0xeabc('0x4a')]['id'];}else{_0x1cef45['id']=_0x48a13f[_0xeabc('0x4a')]['id'];}return db[_0xeabc('0x2c')][_0xeabc('0x43')]({'where':_0x1cef45,'attributes':['id',_0xeabc('0x49')],'raw':!![]})[_0xeabc('0x25')](handleEntityNotFound(_0x180a14,null))[_0xeabc('0x25')](function(_0x58ab08){if(_0x58ab08){var _0x4546c4=path['join'](config['root'],'server/files/screen_recordings',_0x58ab08[_0xeabc('0x49')]);var _0x8d4cca=util[_0xeabc('0x31')](_0xeabc('0x4f'),_0x4546c4);if(fs[_0xeabc('0x50')](_0x8d4cca)){_0x555d6b=!![];return _0x4072cb[_0xeabc('0x51')](_0x8d4cca,_0x4546c4,config['secrets'][_0xeabc('0x52')])[_0xeabc('0x25')](function(){return _0x58ab08;});}return _0x58ab08;}})[_0xeabc('0x25')](function(_0x104c1e){if(_0x104c1e){var _0x2ddc53=path[_0xeabc('0x53')](config[_0xeabc('0x54')],_0xeabc('0x55'),_0x104c1e['value']);if(!fs['existsSync'](_0x2ddc53)){throw new db[(_0xeabc('0x56'))][(_0xeabc('0x57'))](_0xeabc('0x58'));}if(_0x104c1e['filename']){return _0x180a14[_0xeabc('0x4c')](_0x2ddc53,_0x104c1e['filename']+path['extname'](_0x2ddc53),function(){if(_0x555d6b){fs[_0xeabc('0x59')](_0x2ddc53);}});}else{return _0x180a14[_0xeabc('0x4c')](_0x2ddc53,function(_0x13f04f){if(_0x555d6b){fs[_0xeabc('0x59')](_0x2ddc53);}});}}})[_0xeabc('0x44')](function(_0xc2ef0c){if(_0xc2ef0c['message']===_0xeabc('0x58')){_0x180a14[_0xeabc('0x1a')](0x194)[_0xeabc('0x29')](_0xeabc('0x5a'));}else{return handleError(_0x180a14,null);}});};exports[_0xeabc('0x5b')]=function(_0x514787,_0x5c61b4){return db[_0xeabc('0x2c')][_0xeabc('0x43')]({'where':{'id':_0x514787[_0xeabc('0x4a')]['id']}})[_0xeabc('0x25')](function(_0x1b61a8){if(_[_0xeabc('0x5c')](_0x1b61a8)){throw new ReferenceError(_0xeabc('0x5d'));}return _0x1b61a8;})[_0xeabc('0x25')](function(_0x3f829b){var _0x54d2b3=path[_0xeabc('0x53')](config['root'],_0xeabc('0x55'),_0x3f829b[_0xeabc('0x49')]);logger[_0xeabc('0x5e')](_0xeabc('0x5f'),_0x54d2b3);if(!_[_0xeabc('0x5c')](_0x3f829b[_0xeabc('0x49')])&&fs[_0xeabc('0x50')](_0x54d2b3)){logger[_0xeabc('0x5e')](_0xeabc('0x60')+_0x54d2b3+_0xeabc('0x61'));fs['unlinkSync'](_0x54d2b3);}_0x54d2b3=_0x54d2b3+_0xeabc('0x62');if(!_[_0xeabc('0x5c')](_0x3f829b[_0xeabc('0x49')])&&fs[_0xeabc('0x50')](_0x54d2b3)){logger['info'](_0xeabc('0x60')+_0x54d2b3+'\x22\x20trovato\x20eseguo\x20la\x20cancellazione');fs['unlinkSync'](_0x54d2b3);}return _0x3f829b;})[_0xeabc('0x25')](function(_0x11bc62){if(!_0x11bc62)throw new InternalError();return _0x11bc62[_0xeabc('0x5b')]();})[_0xeabc('0x25')](function(){_0x5c61b4['status'](0xcc)['end']();})[_0xeabc('0x44')](handleError(_0x5c61b4,null));};
\ No newline at end of file
index 04ed6bd..ee773e5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x075b=['define','ScreenRecording','screen_recordings','interactionid','lodash','util','../../config/logger','bluebird','request-promise','path','rimraf','./screenRecording.attributes','exports'];(function(_0x5d2803,_0xf375bd){var _0xdcad2c=function(_0x3c3a98){while(--_0x3c3a98){_0x5d2803['push'](_0x5d2803['shift']());}};_0xdcad2c(++_0xf375bd);}(_0x075b,0xee));var _0xb075=function(_0x432682,_0x253044){_0x432682=_0x432682-0x0;var _0x463d05=_0x075b[_0x432682];return _0x463d05;};'use strict';var _=require(_0xb075('0x0'));var util=require(_0xb075('0x1'));var logger=require(_0xb075('0x2'))('api');var moment=require('moment');var BPromise=require(_0xb075('0x3'));var rp=require(_0xb075('0x4'));var fs=require('fs');var path=require(_0xb075('0x5'));var rimraf=require(_0xb075('0x6'));var config=require('../../config/environment');var attributes=require(_0xb075('0x7'));module[_0xb075('0x8')]=function(_0x11352b,_0x7ec0b2){return _0x11352b[_0xb075('0x9')](_0xb075('0xa'),attributes,{'tableName':_0xb075('0xb'),'paranoid':![],'indexes':[{'name':'interactionid','fields':[_0xb075('0xc')]}],'timestamps':!![]});};
\ No newline at end of file
+var _0xbfed=['exports','define','screen_recordings','interactionid','lodash','util','api','bluebird','rimraf','./screenRecording.attributes'];(function(_0x1a62af,_0x180182){var _0x4e4289=function(_0x5ac137){while(--_0x5ac137){_0x1a62af['push'](_0x1a62af['shift']());}};_0x4e4289(++_0x180182);}(_0xbfed,0x72));var _0xdbfe=function(_0x139a3c,_0x4fc883){_0x139a3c=_0x139a3c-0x0;var _0x2b375b=_0xbfed[_0x139a3c];return _0x2b375b;};'use strict';var _=require(_0xdbfe('0x0'));var util=require(_0xdbfe('0x1'));var logger=require('../../config/logger')(_0xdbfe('0x2'));var moment=require('moment');var BPromise=require(_0xdbfe('0x3'));var rp=require('request-promise');var fs=require('fs');var path=require('path');var rimraf=require(_0xdbfe('0x4'));var config=require('../../config/environment');var attributes=require(_0xdbfe('0x5'));module[_0xdbfe('0x6')]=function(_0x1aef2a,_0x51dda6){return _0x1aef2a[_0xdbfe('0x7')]('ScreenRecording',attributes,{'tableName':_0xdbfe('0x8'),'paranoid':![],'indexes':[{'name':'interactionid','fields':[_0xdbfe('0x9')]}],'timestamps':!![]});};
\ No newline at end of file
index 021f9a7..02f60e3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4287=['catch','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','request','then','info','ScreenRecording,\x20%s,\x20%s','debug','ScreenRecording,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','code','message'];(function(_0x3cd5cc,_0x3a5d9b){var _0x4ad08d=function(_0x5948bc){while(--_0x5948bc){_0x3cd5cc['push'](_0x3cd5cc['shift']());}};_0x4ad08d(++_0x3a5d9b);}(_0x4287,0x199));var _0x7428=function(_0x5549b0,_0x9d4a6a){_0x5549b0=_0x5549b0-0x0;var _0x1068f8=_0x4287[_0x5549b0];return _0x1068f8;};'use strict';var _=require(_0x7428('0x0'));var util=require(_0x7428('0x1'));var moment=require(_0x7428('0x2'));var BPromise=require(_0x7428('0x3'));var rs=require(_0x7428('0x4'));var fs=require('fs');var Redis=require(_0x7428('0x5'));var db=require(_0x7428('0x6'))['db'];var utils=require(_0x7428('0x7'));var logger=require(_0x7428('0x8'))(_0x7428('0x9'));var config=require(_0x7428('0xa'));var jayson=require(_0x7428('0xb'));var client=jayson['client']['http']({'port':0x232a});function respondWithRpcPromise(_0x51ac66,_0x2465a7,_0xaad64f){return new BPromise(function(_0x59f747,_0x1be7bf){return client[_0x7428('0xc')](_0x51ac66,_0xaad64f)[_0x7428('0xd')](function(_0x3ade0c){logger[_0x7428('0xe')](_0x7428('0xf'),_0x2465a7,'request\x20sent');logger[_0x7428('0x10')](_0x7428('0x11'),_0x2465a7,_0x7428('0x12'),JSON[_0x7428('0x13')](_0x3ade0c));if(_0x3ade0c[_0x7428('0x14')]){if(_0x3ade0c[_0x7428('0x14')][_0x7428('0x15')]===0x1f4){logger['error'](_0x7428('0xf'),_0x2465a7,_0x3ade0c[_0x7428('0x14')][_0x7428('0x16')]);return _0x1be7bf(_0x3ade0c[_0x7428('0x14')][_0x7428('0x16')]);}logger['error'](_0x7428('0xf'),_0x2465a7,_0x3ade0c[_0x7428('0x14')][_0x7428('0x16')]);return _0x59f747(_0x3ade0c[_0x7428('0x14')][_0x7428('0x16')]);}else{logger[_0x7428('0xe')]('ScreenRecording,\x20%s,\x20%s',_0x2465a7,_0x7428('0x12'));_0x59f747(_0x3ade0c['result'][_0x7428('0x16')]);}})[_0x7428('0x17')](function(_0xad1bf6){logger['error']('ScreenRecording,\x20%s,\x20%s',_0x2465a7,_0xad1bf6);_0x1be7bf(_0xad1bf6);});});}
\ No newline at end of file
+var _0x0d16=['bluebird','randomstring','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','http','then','info','ScreenRecording,\x20%s,\x20%s','request\x20sent','debug','stringify','error','code','message','lodash','util','moment'];(function(_0x52f726,_0x4da17e){var _0x5842af=function(_0x15f88c){while(--_0x15f88c){_0x52f726['push'](_0x52f726['shift']());}};_0x5842af(++_0x4da17e);}(_0x0d16,0x18d));var _0x60d1=function(_0x3048ac,_0x20e8db){_0x3048ac=_0x3048ac-0x0;var _0x314331=_0x0d16[_0x3048ac];return _0x314331;};'use strict';var _=require(_0x60d1('0x0'));var util=require(_0x60d1('0x1'));var moment=require(_0x60d1('0x2'));var BPromise=require(_0x60d1('0x3'));var rs=require(_0x60d1('0x4'));var fs=require('fs');var Redis=require('ioredis');var db=require('../../mysqldb')['db'];var utils=require(_0x60d1('0x5'));var logger=require(_0x60d1('0x6'))(_0x60d1('0x7'));var config=require(_0x60d1('0x8'));var jayson=require(_0x60d1('0x9'));var client=jayson['client'][_0x60d1('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x445a63,_0x2c78b9,_0x4f2c86){return new BPromise(function(_0xe3a12a,_0x585c0e){return client['request'](_0x445a63,_0x4f2c86)[_0x60d1('0xb')](function(_0x3c06d7){logger[_0x60d1('0xc')](_0x60d1('0xd'),_0x2c78b9,_0x60d1('0xe'));logger[_0x60d1('0xf')]('ScreenRecording,\x20%s,\x20%s,\x20%s',_0x2c78b9,_0x60d1('0xe'),JSON[_0x60d1('0x10')](_0x3c06d7));if(_0x3c06d7[_0x60d1('0x11')]){if(_0x3c06d7[_0x60d1('0x11')][_0x60d1('0x12')]===0x1f4){logger['error'](_0x60d1('0xd'),_0x2c78b9,_0x3c06d7[_0x60d1('0x11')][_0x60d1('0x13')]);return _0x585c0e(_0x3c06d7[_0x60d1('0x11')]['message']);}logger['error'](_0x60d1('0xd'),_0x2c78b9,_0x3c06d7[_0x60d1('0x11')][_0x60d1('0x13')]);return _0xe3a12a(_0x3c06d7['error'][_0x60d1('0x13')]);}else{logger[_0x60d1('0xc')]('ScreenRecording,\x20%s,\x20%s',_0x2c78b9,_0x60d1('0xe'));_0xe3a12a(_0x3c06d7['result'][_0x60d1('0x13')]);}})['catch'](function(_0x348121){logger[_0x60d1('0x11')](_0x60d1('0xd'),_0x2c78b9,_0x348121);_0x585c0e(_0x348121);});});}
\ No newline at end of file
index c024c38..e153a43 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd214=['getPreferred','/:id/favicon','getFavicon','diskStorage','join','root','server/files/images/logos/','%s%s','extname','originalname','post','single','file','addLogo','format','addLogoLogin','preferred','/:id/preferred','favicon','addFavicon','put','update','exports','multer','util','path','connect-timeout','Router','../../components/auth/service','../../components/interaction/service','./setting.controller','get','isAuthenticated','index','/now','getDate','/:id','show','/:id/logo','/:id/logo_login'];(function(_0x39b68b,_0x4ad96d){var _0xae091f=function(_0x13b5e1){while(--_0x13b5e1){_0x39b68b['push'](_0x39b68b['shift']());}};_0xae091f(++_0x4ad96d);}(_0xd214,0x1a7));var _0x4d21=function(_0x3f7374,_0x49473b){_0x3f7374=_0x3f7374-0x0;var _0x2183df=_0xd214[_0x3f7374];return _0x2183df;};'use strict';var multer=require(_0x4d21('0x0'));var util=require(_0x4d21('0x1'));var path=require(_0x4d21('0x2'));var timeout=require(_0x4d21('0x3'));var express=require('express');var router=express[_0x4d21('0x4')]();var fs_extra=require('fs-extra');var auth=require(_0x4d21('0x5'));var interaction=require(_0x4d21('0x6'));var config=require('../../config/environment');var controller=require(_0x4d21('0x7'));router[_0x4d21('0x8')]('/',auth[_0x4d21('0x9')](),controller[_0x4d21('0xa')]);router[_0x4d21('0x8')](_0x4d21('0xb'),controller[_0x4d21('0xc')]);router[_0x4d21('0x8')](_0x4d21('0xd'),controller[_0x4d21('0xe')]);router[_0x4d21('0x8')](_0x4d21('0xf'),controller['getLogo']);router['get'](_0x4d21('0x10'),controller['getLogoLogin']);router[_0x4d21('0x8')]('/:id/gdpr',controller['gdpr']);router[_0x4d21('0x8')]('/:id/preferred',controller[_0x4d21('0x11')]);router['get'](_0x4d21('0x12'),controller[_0x4d21('0x13')]);var upload=multer({'storage':multer[_0x4d21('0x14')]({'destination':function(_0x384c12,_0x3fe71e,_0x5bf875){_0x5bf875(null,path[_0x4d21('0x15')](config[_0x4d21('0x16')],_0x4d21('0x17')));},'filename':function(_0xb685be,_0x4e3b9a,_0x998bbe){_0x998bbe(null,util['format'](_0x4d21('0x18'),'logo',path[_0x4d21('0x19')](_0x4e3b9a[_0x4d21('0x1a')])));}})});router[_0x4d21('0x1b')](_0x4d21('0xf'),upload[_0x4d21('0x1c')](_0x4d21('0x1d')),controller[_0x4d21('0x1e')]);var upload=multer({'storage':multer[_0x4d21('0x14')]({'destination':function(_0x4fa4d7,_0x361a8d,_0x2a4876){_0x2a4876(null,path[_0x4d21('0x15')](config['root'],_0x4d21('0x17')));},'filename':function(_0x628975,_0x95a20f,_0x2c3d7f){_0x2c3d7f(null,util[_0x4d21('0x1f')](_0x4d21('0x18'),'logologin',path[_0x4d21('0x19')](_0x95a20f[_0x4d21('0x1a')])));}})});router[_0x4d21('0x1b')](_0x4d21('0x10'),upload[_0x4d21('0x1c')](_0x4d21('0x1d')),controller[_0x4d21('0x20')]);var upload=multer({'storage':multer[_0x4d21('0x14')]({'destination':function(_0xf38b99,_0x51ccef,_0x3e1f2b){_0x3e1f2b(null,path[_0x4d21('0x15')](config[_0x4d21('0x16')],_0x4d21('0x17')));},'filename':function(_0x584ef2,_0x3a223a,_0x2cbf84){_0x2cbf84(null,util[_0x4d21('0x1f')](_0x4d21('0x18'),_0x4d21('0x21'),path['extname'](_0x3a223a[_0x4d21('0x1a')])));}})});router['post'](_0x4d21('0x22'),upload[_0x4d21('0x1c')](_0x4d21('0x1d')),controller['addPreferred']);var upload=multer({'storage':multer['diskStorage']({'destination':function(_0x3ea051,_0x724b45,_0x1d749c){_0x1d749c(null,path['join'](config[_0x4d21('0x16')],'server/files/images/logos/'));},'filename':function(_0x22c4f0,_0x37ca56,_0x2d08c2){_0x2d08c2(null,util[_0x4d21('0x1f')](_0x4d21('0x18'),_0x4d21('0x23'),path[_0x4d21('0x19')](_0x37ca56['originalname'])));}})});router[_0x4d21('0x1b')](_0x4d21('0x12'),upload['single'](_0x4d21('0x1d')),controller[_0x4d21('0x24')]);router[_0x4d21('0x25')](_0x4d21('0xd'),auth[_0x4d21('0x9')](),controller[_0x4d21('0x26')]);module[_0x4d21('0x27')]=router;
\ No newline at end of file
+var _0xca36=['get','isAuthenticated','/now','getDate','show','/:id/logo','getLogo','/:id/logo_login','getLogoLogin','/:id/gdpr','gdpr','/:id/preferred','diskStorage','root','server/files/images/logos/','format','%s%s','extname','post','single','file','join','logologin','originalname','addLogoLogin','addPreferred','favicon','/:id/favicon','addFavicon','put','/:id','update','exports','util','path','express','Router','fs-extra'];(function(_0x5b8c5e,_0x44cba8){var _0x2aed1d=function(_0xdeb3c4){while(--_0xdeb3c4){_0x5b8c5e['push'](_0x5b8c5e['shift']());}};_0x2aed1d(++_0x44cba8);}(_0xca36,0x1e9));var _0x6ca3=function(_0x2c4622,_0x2e8293){_0x2c4622=_0x2c4622-0x0;var _0x43ef5b=_0xca36[_0x2c4622];return _0x43ef5b;};'use strict';var multer=require('multer');var util=require(_0x6ca3('0x0'));var path=require(_0x6ca3('0x1'));var timeout=require('connect-timeout');var express=require(_0x6ca3('0x2'));var router=express[_0x6ca3('0x3')]();var fs_extra=require(_0x6ca3('0x4'));var auth=require('../../components/auth/service');var interaction=require('../../components/interaction/service');var config=require('../../config/environment');var controller=require('./setting.controller');router[_0x6ca3('0x5')]('/',auth[_0x6ca3('0x6')](),controller['index']);router[_0x6ca3('0x5')](_0x6ca3('0x7'),controller[_0x6ca3('0x8')]);router['get']('/:id',controller[_0x6ca3('0x9')]);router['get'](_0x6ca3('0xa'),controller[_0x6ca3('0xb')]);router[_0x6ca3('0x5')](_0x6ca3('0xc'),controller[_0x6ca3('0xd')]);router[_0x6ca3('0x5')](_0x6ca3('0xe'),controller[_0x6ca3('0xf')]);router['get'](_0x6ca3('0x10'),controller['getPreferred']);router['get']('/:id/favicon',controller['getFavicon']);var upload=multer({'storage':multer[_0x6ca3('0x11')]({'destination':function(_0x255bbc,_0x5204cb,_0x56954f){_0x56954f(null,path['join'](config[_0x6ca3('0x12')],_0x6ca3('0x13')));},'filename':function(_0x53d130,_0x5f1a42,_0x55d289){_0x55d289(null,util[_0x6ca3('0x14')](_0x6ca3('0x15'),'logo',path[_0x6ca3('0x16')](_0x5f1a42['originalname'])));}})});router[_0x6ca3('0x17')]('/:id/logo',upload[_0x6ca3('0x18')](_0x6ca3('0x19')),controller['addLogo']);var upload=multer({'storage':multer[_0x6ca3('0x11')]({'destination':function(_0x232e76,_0x5e6e14,_0x3494a5){_0x3494a5(null,path[_0x6ca3('0x1a')](config[_0x6ca3('0x12')],'server/files/images/logos/'));},'filename':function(_0x42cc4c,_0x41b28b,_0x73ece2){_0x73ece2(null,util['format'](_0x6ca3('0x15'),_0x6ca3('0x1b'),path[_0x6ca3('0x16')](_0x41b28b[_0x6ca3('0x1c')])));}})});router[_0x6ca3('0x17')]('/:id/logo_login',upload[_0x6ca3('0x18')](_0x6ca3('0x19')),controller[_0x6ca3('0x1d')]);var upload=multer({'storage':multer['diskStorage']({'destination':function(_0x2295ea,_0x42791c,_0x466778){_0x466778(null,path['join'](config[_0x6ca3('0x12')],_0x6ca3('0x13')));},'filename':function(_0x17d3de,_0x3e4c64,_0x3a9974){_0x3a9974(null,util[_0x6ca3('0x14')](_0x6ca3('0x15'),'preferred',path[_0x6ca3('0x16')](_0x3e4c64[_0x6ca3('0x1c')])));}})});router[_0x6ca3('0x17')](_0x6ca3('0x10'),upload[_0x6ca3('0x18')]('file'),controller[_0x6ca3('0x1e')]);var upload=multer({'storage':multer[_0x6ca3('0x11')]({'destination':function(_0x12c435,_0x4f936d,_0x3d0f3d){_0x3d0f3d(null,path[_0x6ca3('0x1a')](config[_0x6ca3('0x12')],'server/files/images/logos/'));},'filename':function(_0x30edb7,_0x33f695,_0xbadfb3){_0xbadfb3(null,util[_0x6ca3('0x14')](_0x6ca3('0x15'),_0x6ca3('0x1f'),path['extname'](_0x33f695[_0x6ca3('0x1c')])));}})});router[_0x6ca3('0x17')](_0x6ca3('0x20'),upload['single'](_0x6ca3('0x19')),controller[_0x6ca3('0x21')]);router[_0x6ca3('0x22')](_0x6ca3('0x23'),auth[_0x6ca3('0x6')](),controller[_0x6ca3('0x24')]);module[_0x6ca3('0x25')]=router;
\ No newline at end of file
index 69ea770..c4d787a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xadb5=['https://www.xcally.com/bar/phonebar/autoupdater.xml','UNSIGNED','exports','min_internal','INTEGER','min_mailbox','STRING','/var/opt/motion2/server/files/sounds/converted','BOOLEAN'];(function(_0x5f46e7,_0x62f9f8){var _0x567e95=function(_0x5cb693){while(--_0x5cb693){_0x5f46e7['push'](_0x5f46e7['shift']());}};_0x567e95(++_0x62f9f8);}(_0xadb5,0xad));var _0x5adb=function(_0x45261d,_0x4b819c){_0x45261d=_0x45261d-0x0;var _0x23d4c4=_0xadb5[_0x45261d];return _0x23d4c4;};'use strict';var Sequelize=require('sequelize');module[_0x5adb('0x0')]={'min_internal':{'type':Sequelize['INTEGER'](0xb),'unique':_0x5adb('0x1'),'defaultValue':0x3e8},'min_mailbox':{'type':Sequelize[_0x5adb('0x2')](0xb),'unique':_0x5adb('0x3'),'defaultValue':0x3e8},'agi_port':{'type':Sequelize['INTEGER'](0xb),'defaultValue':0x11dd},'soundPath':{'type':Sequelize[_0x5adb('0x4')],'defaultValue':_0x5adb('0x5')},'logo':{'type':Sequelize[_0x5adb('0x4')]},'defaultLogo':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]},'loginLogo':{'type':Sequelize[_0x5adb('0x4')]},'defaultLoginLogo':{'type':Sequelize[_0x5adb('0x6')],'defaultValue':!![]},'headerWhiteLabel':{'type':Sequelize[_0x5adb('0x4')]},'defaultHeaderWhiteLabel':{'type':Sequelize[_0x5adb('0x6')],'defaultValue':!![]},'securePassword':{'type':Sequelize[_0x5adb('0x6')],'defaultValue':!![]},'firstSetup':{'type':Sequelize[_0x5adb('0x6')],'defaultValue':!![]},'stunaddr':{'type':Sequelize[_0x5adb('0x4')]},'turnaddr':{'type':Sequelize[_0x5adb('0x4')]},'turnusername':{'type':Sequelize[_0x5adb('0x4')]},'turnpassword':{'type':Sequelize[_0x5adb('0x4')]},'pageTitle':{'type':Sequelize[_0x5adb('0x4')]},'defaultPageTitle':{'type':Sequelize[_0x5adb('0x6')],'defaultValue':!![]},'callRecordingEncryption':{'type':Sequelize[_0x5adb('0x6')],'defaultValue':![]},'passwordExpiresDays':{'type':Sequelize[_0x5adb('0x2')](0xb),'defaultValue':0x5a},'phoneBarAutoUpdater':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]},'phoneBarAutoUpdaterUrl':{'type':Sequelize['STRING'],'defaultValue':_0x5adb('0x7')},'enableEmailPreview':{'type':Sequelize[_0x5adb('0x6')],'defaultValue':![]},'split':{'type':Sequelize[_0x5adb('0x6')],'defaultValue':!![]},'splitSizeCsv':{'type':Sequelize['INTEGER'],'defaultValue':0x1388},'splitSizePdf':{'type':Sequelize[_0x5adb('0x2')],'defaultValue':0x1388},'splitSizeXlsx':{'type':Sequelize['INTEGER'],'defaultValue':0x1388},'messagesAlignment':{'type':Sequelize[_0x5adb('0x4')],'defaultValue':'alternate'},'chatTimeout':{'type':Sequelize[_0x5adb('0x2')],'defaultValue':0x1e},'phoneBarRememberMeEnabled':{'type':Sequelize[_0x5adb('0x6')],'defaultValue':!![]},'preferred':{'type':Sequelize[_0x5adb('0x4')]},'defaultPreferred':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]},'rtlSupport':{'type':Sequelize[_0x5adb('0x6')],'defaultValue':![]},'defaultScreenRecordingPath':{'type':Sequelize[_0x5adb('0x4')]},'allowedLoginAttempts':{'type':Sequelize[_0x5adb('0x2')],'defaultValue':0x5},'blockDuration':{'type':Sequelize['INTEGER'],'defaultValue':0xa},'favicon':{'type':Sequelize[_0x5adb('0x4')]},'defaultFavicon':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]},'loginMailFrequency':{'type':Sequelize[_0x5adb('0x2')],'defaultValue':0xa,'validate':{'min':0xa}},'transcribe':{'type':Sequelize[_0x5adb('0x6')],'defaultValue':![]},'automaticTranscribe':{'type':Sequelize[_0x5adb('0x6')],'defaultValue':![]},'transcribeAccountId':{'type':Sequelize[_0x5adb('0x2')]},'transcribeRegion':{'type':Sequelize[_0x5adb('0x4')]},'sentiment':{'type':Sequelize[_0x5adb('0x6')],'defaultValue':![]},'automaticSentiment':{'type':Sequelize[_0x5adb('0x6')],'defaultValue':![]},'sentimentAccountId':{'type':Sequelize[_0x5adb('0x2')]},'sentimentRegion':{'type':Sequelize[_0x5adb('0x4')]},'language':{'type':Sequelize['STRING']},'bucket':{'type':Sequelize[_0x5adb('0x4')]},'googleSsoEnabled':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'enforcePasswordHistory':{'type':Sequelize[_0x5adb('0x6')],'defaultValue':!![]},'passwordHistoryLimit':{'type':Sequelize['INTEGER'](0x2)[_0x5adb('0x8')],'defaultValue':0x3,'validate':{'min':0x1,'max':0x5}},'privacyPolicyEmail':{'type':Sequelize['INTEGER'](0x2)['UNSIGNED'],'defaultValue':0x0},'privacyPolicyName':{'type':Sequelize[_0x5adb('0x2')](0x2)[_0x5adb('0x8')],'defaultValue':0x0},'privacyPolicyNumber':{'type':Sequelize[_0x5adb('0x2')](0x2)[_0x5adb('0x8')],'defaultValue':0x0},'searchOnEnterKey':{'type':Sequelize[_0x5adb('0x6')],'defaultValue':!![]},'chatInteractionsReloadTimeout':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'mailInteractionsReloadTimeout':{'type':Sequelize[_0x5adb('0x2')],'defaultValue':0x0},'openchannelInteractionsReloadTimeout':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'smsInteractionsReloadTimeout':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'whatsappInteractionsReloadTimeout':{'type':Sequelize[_0x5adb('0x2')],'defaultValue':0x0},'stopRecordingOnTransfer':{'type':Sequelize[_0x5adb('0x6')],'defaultValue':![]}};
\ No newline at end of file
+var _0x7a54=['UNSIGNED','sequelize','exports','INTEGER','min_mailbox','STRING','/var/opt/motion2/server/files/sounds/converted','BOOLEAN','alternate'];(function(_0x5b3213,_0x280483){var _0x18aca9=function(_0x5dfa9b){while(--_0x5dfa9b){_0x5b3213['push'](_0x5b3213['shift']());}};_0x18aca9(++_0x280483);}(_0x7a54,0x106));var _0x47a5=function(_0x41a7c7,_0x585ee3){_0x41a7c7=_0x41a7c7-0x0;var _0x36f987=_0x7a54[_0x41a7c7];return _0x36f987;};'use strict';var Sequelize=require(_0x47a5('0x0'));module[_0x47a5('0x1')]={'min_internal':{'type':Sequelize[_0x47a5('0x2')](0xb),'unique':'min_internal','defaultValue':0x3e8},'min_mailbox':{'type':Sequelize[_0x47a5('0x2')](0xb),'unique':_0x47a5('0x3'),'defaultValue':0x3e8},'agi_port':{'type':Sequelize['INTEGER'](0xb),'defaultValue':0x11dd},'soundPath':{'type':Sequelize[_0x47a5('0x4')],'defaultValue':_0x47a5('0x5')},'logo':{'type':Sequelize[_0x47a5('0x4')]},'defaultLogo':{'type':Sequelize[_0x47a5('0x6')],'defaultValue':!![]},'loginLogo':{'type':Sequelize[_0x47a5('0x4')]},'defaultLoginLogo':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]},'headerWhiteLabel':{'type':Sequelize[_0x47a5('0x4')]},'defaultHeaderWhiteLabel':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]},'securePassword':{'type':Sequelize[_0x47a5('0x6')],'defaultValue':!![]},'firstSetup':{'type':Sequelize[_0x47a5('0x6')],'defaultValue':!![]},'stunaddr':{'type':Sequelize['STRING']},'turnaddr':{'type':Sequelize[_0x47a5('0x4')]},'turnusername':{'type':Sequelize['STRING']},'turnpassword':{'type':Sequelize['STRING']},'pageTitle':{'type':Sequelize['STRING']},'defaultPageTitle':{'type':Sequelize[_0x47a5('0x6')],'defaultValue':!![]},'callRecordingEncryption':{'type':Sequelize[_0x47a5('0x6')],'defaultValue':![]},'passwordExpiresDays':{'type':Sequelize['INTEGER'](0xb),'defaultValue':0x5a},'phoneBarAutoUpdater':{'type':Sequelize[_0x47a5('0x6')],'defaultValue':!![]},'phoneBarAutoUpdaterUrl':{'type':Sequelize['STRING'],'defaultValue':'https://www.xcally.com/bar/phonebar/autoupdater.xml'},'enableEmailPreview':{'type':Sequelize[_0x47a5('0x6')],'defaultValue':![]},'split':{'type':Sequelize[_0x47a5('0x6')],'defaultValue':!![]},'splitSizeCsv':{'type':Sequelize[_0x47a5('0x2')],'defaultValue':0x1388},'splitSizePdf':{'type':Sequelize[_0x47a5('0x2')],'defaultValue':0x1388},'splitSizeXlsx':{'type':Sequelize[_0x47a5('0x2')],'defaultValue':0x1388},'messagesAlignment':{'type':Sequelize[_0x47a5('0x4')],'defaultValue':_0x47a5('0x7')},'chatTimeout':{'type':Sequelize['INTEGER'],'defaultValue':0x1e},'phoneBarRememberMeEnabled':{'type':Sequelize[_0x47a5('0x6')],'defaultValue':!![]},'preferred':{'type':Sequelize[_0x47a5('0x4')]},'defaultPreferred':{'type':Sequelize[_0x47a5('0x6')],'defaultValue':!![]},'rtlSupport':{'type':Sequelize[_0x47a5('0x6')],'defaultValue':![]},'defaultScreenRecordingPath':{'type':Sequelize[_0x47a5('0x4')]},'allowedLoginAttempts':{'type':Sequelize[_0x47a5('0x2')],'defaultValue':0x5},'blockDuration':{'type':Sequelize[_0x47a5('0x2')],'defaultValue':0xa},'favicon':{'type':Sequelize[_0x47a5('0x4')]},'defaultFavicon':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]},'loginMailFrequency':{'type':Sequelize[_0x47a5('0x2')],'defaultValue':0xa,'validate':{'min':0xa}},'transcribe':{'type':Sequelize[_0x47a5('0x6')],'defaultValue':![]},'automaticTranscribe':{'type':Sequelize[_0x47a5('0x6')],'defaultValue':![]},'transcribeAccountId':{'type':Sequelize[_0x47a5('0x2')]},'transcribeRegion':{'type':Sequelize[_0x47a5('0x4')]},'sentiment':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'automaticSentiment':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'sentimentAccountId':{'type':Sequelize[_0x47a5('0x2')]},'sentimentRegion':{'type':Sequelize['STRING']},'language':{'type':Sequelize['STRING']},'bucket':{'type':Sequelize[_0x47a5('0x4')]},'googleSsoEnabled':{'type':Sequelize[_0x47a5('0x6')],'defaultValue':![]},'enforcePasswordHistory':{'type':Sequelize[_0x47a5('0x6')],'defaultValue':!![]},'passwordHistoryLimit':{'type':Sequelize[_0x47a5('0x2')](0x2)[_0x47a5('0x8')],'defaultValue':0x3,'validate':{'min':0x1,'max':0x5}},'privacyPolicyEmail':{'type':Sequelize[_0x47a5('0x2')](0x2)[_0x47a5('0x8')],'defaultValue':0x0},'privacyPolicyName':{'type':Sequelize[_0x47a5('0x2')](0x2)[_0x47a5('0x8')],'defaultValue':0x0},'privacyPolicyNumber':{'type':Sequelize['INTEGER'](0x2)[_0x47a5('0x8')],'defaultValue':0x0},'searchOnEnterKey':{'type':Sequelize[_0x47a5('0x6')],'defaultValue':!![]},'chatInteractionsReloadTimeout':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'mailInteractionsReloadTimeout':{'type':Sequelize[_0x47a5('0x2')],'defaultValue':0x0},'openchannelInteractionsReloadTimeout':{'type':Sequelize[_0x47a5('0x2')],'defaultValue':0x0},'smsInteractionsReloadTimeout':{'type':Sequelize[_0x47a5('0x2')],'defaultValue':0x0},'whatsappInteractionsReloadTimeout':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'stopRecordingOnTransfer':{'type':Sequelize[_0x47a5('0x6')],'defaultValue':![]}};
\ No newline at end of file
index 0917976..f092a49 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf185=['model','keys','query','filters','intersection','attributes','fields','length','nolimit','order','sort','where','pick','filter','merge','type','VIRTUAL','options','includeAll','include','findAll','rows','catch','show','rawAttributes','find','body','file','filename','logo','addLogoLogin','loginLogo','params','getLogo','server/files/images/logos','getLicense','preferred','favicon','defaultLogo','defaultLoginLogo','defaultPreferred','defaultFavicon','existsSync','root','join','toLower','default_logo.svg','upperFirst','custom','ValidationError','\x20not\x20found','download','getLogoLogin','default_loginLogo.svg','default','Sequelize','gdpr','securePassword','addPreferred','getPreferred','default_preferred.png','addFavicon','getFavicon','default_favicon.ico','getDate','utcOffset','now','format','eml-format','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','path','sox','to-csv','ejs','lodash','squel','jsforce','querystring','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/utils','../../config/environment','../../config/license/util','jayson/promise','client','http','request','info','Setting,\x20%s,\x20%s','request\x20sent','debug','Setting,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','end','status','json','offset','undefined','limit','count','set','apply','reject','save','update','then','destroy','sendStatus','stack','name','send','index','map','Setting','key'];(function(_0x2dafbe,_0x5d04de){var _0x58a45a=function(_0x50ac96){while(--_0x50ac96){_0x2dafbe['push'](_0x2dafbe['shift']());}};_0x58a45a(++_0x5d04de);}(_0xf185,0x1be));var _0x5f18=function(_0x416658,_0x395e1b){_0x416658=_0x416658-0x0;var _0x58a559=_0xf185[_0x416658];return _0x58a559;};'use strict';var emlformat=require(_0x5f18('0x0'));var rimraf=require('rimraf');var zipdir=require(_0x5f18('0x1'));var jsonpatch=require(_0x5f18('0x2'));var rp=require(_0x5f18('0x3'));var moment=require(_0x5f18('0x4'));var BPromise=require(_0x5f18('0x5'));var Mustache=require(_0x5f18('0x6'));var util=require('util');var path=require(_0x5f18('0x7'));var sox=require(_0x5f18('0x8'));var csv=require(_0x5f18('0x9'));var ejs=require(_0x5f18('0xa'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x5f18('0xb'));var squel=require(_0x5f18('0xc'));var crypto=require('crypto');var jsforce=require(_0x5f18('0xd'));var deskjs=require('desk.js');var toCsv=require(_0x5f18('0x9'));var querystring=require(_0x5f18('0xe'));var Papa=require('papaparse');var Redis=require(_0x5f18('0xf'));var authService=require(_0x5f18('0x10'));var qs=require('../../components/parsers/qs');var as=require(_0x5f18('0x11'));var hardwareService=require(_0x5f18('0x12'));var logger=require('../../config/logger')('api');var utils=require(_0x5f18('0x13'));var config=require(_0x5f18('0x14'));var licenseUtil=require(_0x5f18('0x15'));var db=require('../../mysqldb')['db'];var jayson=require(_0x5f18('0x16'));var client=jayson[_0x5f18('0x17')][_0x5f18('0x18')]({'port':0x232a});function respondWithRpcPromise(_0x14debf,_0x33279c,_0x20117d,_0x1d0977){return new BPromise(function(_0x31c731,_0x2533ab){var _0x4a8150=_0x1d0977||client;return _0x4a8150[_0x5f18('0x19')](_0x14debf,_0x20117d)['then'](function(_0x4b2d3e){logger[_0x5f18('0x1a')](_0x5f18('0x1b'),_0x33279c,_0x5f18('0x1c'));logger[_0x5f18('0x1d')](_0x5f18('0x1e'),_0x33279c,'request\x20sent',JSON[_0x5f18('0x1f')](_0x4b2d3e));if(_0x4b2d3e[_0x5f18('0x20')]){if(_0x4b2d3e[_0x5f18('0x20')][_0x5f18('0x21')]===0x1f4){logger[_0x5f18('0x20')]('Setting,\x20%s,\x20%s',_0x33279c,_0x4b2d3e[_0x5f18('0x20')][_0x5f18('0x22')]);return _0x2533ab(_0x4b2d3e[_0x5f18('0x20')]['message']);}logger[_0x5f18('0x20')](_0x5f18('0x1b'),_0x33279c,_0x4b2d3e['error']['message']);return _0x31c731(_0x4b2d3e[_0x5f18('0x20')][_0x5f18('0x22')]);}else{logger[_0x5f18('0x1a')](_0x5f18('0x1b'),_0x33279c,_0x5f18('0x1c'));_0x31c731(_0x4b2d3e[_0x5f18('0x23')]['message']);}})['catch'](function(_0x36509a){logger[_0x5f18('0x20')]('Setting,\x20%s,\x20%s',_0x33279c,_0x36509a);_0x2533ab(_0x36509a);});});}function respondWithStatusCode(_0x29552c,_0x5c37c2){_0x5c37c2=_0x5c37c2||0xcc;return function(_0x239af2){if(_0x239af2){return _0x29552c['sendStatus'](_0x5c37c2);}return _0x29552c['status'](_0x5c37c2)[_0x5f18('0x24')]();};}function respondWithResult(_0x5f5d1f,_0x983e1e){_0x983e1e=_0x983e1e||0xc8;return function(_0x4a2357){if(_0x4a2357){return _0x5f5d1f[_0x5f18('0x25')](_0x983e1e)[_0x5f18('0x26')](_0x4a2357);}};}function respondWithFilteredResult(_0x34b180,_0x298352){return function(_0x541e70){if(_0x541e70){var _0x444065=typeof _0x298352[_0x5f18('0x27')]===_0x5f18('0x28')&&typeof _0x298352[_0x5f18('0x29')]===_0x5f18('0x28');var _0x68afe0=_0x541e70[_0x5f18('0x2a')];var _0x15f5d8=_0x444065?0x0:_0x298352[_0x5f18('0x27')];var _0x554fac=_0x444065?_0x541e70[_0x5f18('0x2a')]:_0x298352['offset']+_0x298352['limit'];var _0x120128;if(_0x554fac>=_0x68afe0){_0x554fac=_0x68afe0;_0x120128=0xc8;}else{_0x120128=0xce;}_0x34b180[_0x5f18('0x25')](_0x120128);return _0x34b180[_0x5f18('0x2b')]('Content-Range',_0x15f5d8+'-'+_0x554fac+'/'+_0x68afe0)['json'](_0x541e70);}return null;};}function patchUpdates(_0x14b545){return function(_0xdc4bb0){try{jsonpatch[_0x5f18('0x2c')](_0xdc4bb0,_0x14b545,!![]);}catch(_0x487b0e){return BPromise[_0x5f18('0x2d')](_0x487b0e);}return _0xdc4bb0[_0x5f18('0x2e')]();};}function saveUpdates(_0x449616,_0x5c7014){return function(_0x357954){if(_0x357954){return _0x357954[_0x5f18('0x2f')](_0x449616)[_0x5f18('0x30')](function(_0x30401d){return _0x30401d;});}return null;};}function removeEntity(_0x5c0297,_0x1d8506){return function(_0x4f85d6){if(_0x4f85d6){return _0x4f85d6[_0x5f18('0x31')]()[_0x5f18('0x30')](function(){_0x5c0297[_0x5f18('0x25')](0xcc)[_0x5f18('0x24')]();});}};}function handleEntityNotFound(_0x22afbb,_0x6ff34e){return function(_0x3d1083){if(!_0x3d1083){_0x22afbb[_0x5f18('0x32')](0x194);}return _0x3d1083;};}function handleError(_0x5b6aaa,_0x276548){_0x276548=_0x276548||0x1f4;return function(_0x548e79){logger[_0x5f18('0x20')](_0x548e79[_0x5f18('0x33')]);if(_0x548e79[_0x5f18('0x34')]){delete _0x548e79['name'];}_0x5b6aaa['status'](_0x276548)[_0x5f18('0x35')](_0x548e79);};}exports[_0x5f18('0x36')]=function(_0x24fa0f,_0x34a15b){var _0xece6e8={},_0x2fd94a={},_0x483217={'count':0x0,'rows':[]};var _0x12ab0b=_[_0x5f18('0x37')](db[_0x5f18('0x38')]['rawAttributes'],function(_0x320b2c){return{'name':_0x320b2c['fieldName'],'type':_0x320b2c['type'][_0x5f18('0x39')]};});_0x2fd94a[_0x5f18('0x3a')]=_['map'](_0x12ab0b,_0x5f18('0x34'));_0x2fd94a['query']=_[_0x5f18('0x3b')](_0x24fa0f[_0x5f18('0x3c')]);_0x2fd94a[_0x5f18('0x3d')]=_[_0x5f18('0x3e')](_0x2fd94a['model'],_0x2fd94a[_0x5f18('0x3c')]);_0xece6e8[_0x5f18('0x3f')]=_[_0x5f18('0x3e')](_0x2fd94a['model'],qs[_0x5f18('0x40')](_0x24fa0f[_0x5f18('0x3c')][_0x5f18('0x40')]));_0xece6e8[_0x5f18('0x3f')]=_0xece6e8['attributes'][_0x5f18('0x41')]?_0xece6e8[_0x5f18('0x3f')]:_0x2fd94a[_0x5f18('0x3a')];if(!_0x24fa0f['query']['hasOwnProperty'](_0x5f18('0x42'))){_0xece6e8[_0x5f18('0x29')]=qs[_0x5f18('0x29')](_0x24fa0f[_0x5f18('0x3c')][_0x5f18('0x29')]);_0xece6e8['offset']=qs[_0x5f18('0x27')](_0x24fa0f[_0x5f18('0x3c')][_0x5f18('0x27')]);}_0xece6e8[_0x5f18('0x43')]=qs['sort'](_0x24fa0f[_0x5f18('0x3c')][_0x5f18('0x44')]);_0xece6e8[_0x5f18('0x45')]=qs[_0x5f18('0x3d')](_[_0x5f18('0x46')](_0x24fa0f[_0x5f18('0x3c')],_0x2fd94a['filters']),_0x12ab0b);if(_0x24fa0f[_0x5f18('0x3c')][_0x5f18('0x47')]){_0xece6e8[_0x5f18('0x45')]=_[_0x5f18('0x48')](_0xece6e8[_0x5f18('0x45')],{'$or':_[_0x5f18('0x37')](_0x12ab0b,function(_0x4812b8){if(_0x4812b8[_0x5f18('0x49')]!==_0x5f18('0x4a')){var _0x364455={};_0x364455[_0x4812b8[_0x5f18('0x34')]]={'$like':'%'+_0x24fa0f['query']['filter']+'%'};return _0x364455;}})});}_0xece6e8=_[_0x5f18('0x48')]({},_0xece6e8,_0x24fa0f[_0x5f18('0x4b')]);var _0x3352f3={'where':_0xece6e8[_0x5f18('0x45')]};return db['Setting'][_0x5f18('0x2a')](_0x3352f3)['then'](function(_0x3049c4){_0x483217[_0x5f18('0x2a')]=_0x3049c4;if(_0x24fa0f['query'][_0x5f18('0x4c')]){_0xece6e8[_0x5f18('0x4d')]=[{'all':!![]}];}return db[_0x5f18('0x38')][_0x5f18('0x4e')](_0xece6e8);})[_0x5f18('0x30')](function(_0x2be750){_0x483217[_0x5f18('0x4f')]=_0x2be750;return _0x483217;})['then'](respondWithFilteredResult(_0x34a15b,_0xece6e8))[_0x5f18('0x50')](handleError(_0x34a15b,null));};exports[_0x5f18('0x51')]=function(_0x44b71f,_0x19fcd2){var _0x24c99c={'raw':![],'where':{'id':_0x44b71f['params']['id']}},_0x4a17ac={};_0x4a17ac['model']=_[_0x5f18('0x3b')](db[_0x5f18('0x38')][_0x5f18('0x52')]);_0x4a17ac[_0x5f18('0x3c')]=_['keys'](_0x44b71f[_0x5f18('0x3c')]);_0x4a17ac[_0x5f18('0x3d')]=_[_0x5f18('0x3e')](_0x4a17ac[_0x5f18('0x3a')],_0x4a17ac[_0x5f18('0x3c')]);_0x24c99c[_0x5f18('0x3f')]=_[_0x5f18('0x3e')](_0x4a17ac[_0x5f18('0x3a')],qs[_0x5f18('0x40')](_0x44b71f[_0x5f18('0x3c')]['fields']));_0x24c99c[_0x5f18('0x3f')]=_0x24c99c[_0x5f18('0x3f')][_0x5f18('0x41')]?_0x24c99c['attributes']:_0x4a17ac[_0x5f18('0x3a')];if(_0x44b71f['query'][_0x5f18('0x4c')]){_0x24c99c[_0x5f18('0x4d')]=[{'all':!![]}];}_0x24c99c=_['merge']({},_0x24c99c,_0x44b71f[_0x5f18('0x4b')]);return db[_0x5f18('0x38')][_0x5f18('0x53')](_0x24c99c)[_0x5f18('0x30')](handleEntityNotFound(_0x19fcd2,null))[_0x5f18('0x30')](respondWithResult(_0x19fcd2,null))[_0x5f18('0x50')](handleError(_0x19fcd2,null));};exports[_0x5f18('0x2f')]=function(_0x4d12e6,_0x5a3239){if(_0x4d12e6[_0x5f18('0x54')]['id']){delete _0x4d12e6[_0x5f18('0x54')]['id'];}return db[_0x5f18('0x38')][_0x5f18('0x53')]({'where':{'id':_0x4d12e6['params']['id']}})[_0x5f18('0x30')](handleEntityNotFound(_0x5a3239,null))[_0x5f18('0x30')](saveUpdates(_0x4d12e6[_0x5f18('0x54')],null))[_0x5f18('0x30')](respondWithResult(_0x5a3239,null))[_0x5f18('0x50')](handleError(_0x5a3239,null));};exports['addLogo']=function(_0xf85acf,_0x1e792d,_0x4fbdc6){if(_0xf85acf[_0x5f18('0x55')]&&_0xf85acf[_0x5f18('0x55')][_0x5f18('0x56')]){_0xf85acf[_0x5f18('0x54')][_0x5f18('0x57')]=_0xf85acf[_0x5f18('0x55')]['filename'];}return db['Setting']['find']({'where':{'id':_0xf85acf['params']['id']}})['then'](handleEntityNotFound(_0x1e792d,null))[_0x5f18('0x30')](saveUpdates(_0xf85acf[_0x5f18('0x54')],null))[_0x5f18('0x30')](respondWithResult(_0x1e792d,null))[_0x5f18('0x50')](handleError(_0x1e792d,null));};exports[_0x5f18('0x58')]=function(_0x8c8a11,_0x74c58d,_0x68555f){if(_0x8c8a11[_0x5f18('0x55')]&&_0x8c8a11[_0x5f18('0x55')][_0x5f18('0x56')]){_0x8c8a11[_0x5f18('0x54')][_0x5f18('0x59')]=_0x8c8a11['file'][_0x5f18('0x56')];}return db[_0x5f18('0x38')][_0x5f18('0x53')]({'where':{'id':_0x8c8a11[_0x5f18('0x5a')]['id']}})[_0x5f18('0x30')](handleEntityNotFound(_0x74c58d,null))[_0x5f18('0x30')](saveUpdates(_0x8c8a11[_0x5f18('0x54')],null))[_0x5f18('0x30')](respondWithResult(_0x74c58d,null))[_0x5f18('0x50')](handleError(_0x74c58d,null));};var utilLicense=require('../../config/license/util');exports[_0x5f18('0x5b')]=function(_0x138eca,_0x305e02,_0x5b1e21){var _0x174bad=_0x5f18('0x5c');var _0x54756c={'custom':![]};return utilLicense[_0x5f18('0x5d')]()[_0x5f18('0x30')](function(_0x3b43ad){if(_0x3b43ad){_0x54756c=_0x3b43ad;}return db[_0x5f18('0x38')][_0x5f18('0x53')]({'where':{'id':_0x138eca[_0x5f18('0x5a')]['id']},'attributes':[_0x5f18('0x57'),_0x5f18('0x59'),_0x5f18('0x5e'),_0x5f18('0x5f'),_0x5f18('0x60'),_0x5f18('0x61'),_0x5f18('0x62'),_0x5f18('0x63')],'raw':!![]});})[_0x5f18('0x30')](handleEntityNotFound(_0x305e02,null))[_0x5f18('0x30')](function(_0x4f8e6e){if(_0x4f8e6e){var _0x48536b=_0x4f8e6e[_0x5f18('0x57')]&&fs[_0x5f18('0x64')](path['join'](config[_0x5f18('0x65')],_0x174bad,_['toLower'](_0x4f8e6e['logo'])))?path[_0x5f18('0x66')](config['root'],_0x174bad,_['toLower'](_0x4f8e6e[_0x5f18('0x57')])):path[_0x5f18('0x66')](config[_0x5f18('0x65')],_0x174bad,_[_0x5f18('0x67')](_0x5f18('0x68')));var _0xaea4bc='default'+_[_0x5f18('0x69')](_0x5f18('0x57'));if(_0x4f8e6e[_0xaea4bc]||!_0x54756c[_0x5f18('0x6a')]){_0x48536b=path[_0x5f18('0x66')](config[_0x5f18('0x65')],_0x174bad,_[_0x5f18('0x67')](_0x5f18('0x68')));}if(!fs[_0x5f18('0x64')](_0x48536b)){throw new db['Sequelize'][(_0x5f18('0x6b'))](_[_0x5f18('0x69')](_0x5f18('0x57'))+_0x5f18('0x6c'));}return _0x305e02[_0x5f18('0x6d')](_0x48536b);}})[_0x5f18('0x50')](handleError(_0x305e02,null));};var utilLicense=require(_0x5f18('0x15'));exports[_0x5f18('0x6e')]=function(_0x3021d9,_0x59ac53,_0x474ca8){var _0xa13a95=_0x5f18('0x5c');var _0x4c3747={'custom':![]};return utilLicense[_0x5f18('0x5d')]()[_0x5f18('0x30')](function(_0x3d886e){if(_0x3d886e){_0x4c3747=_0x3d886e;}return db['Setting'][_0x5f18('0x53')]({'where':{'id':_0x3021d9[_0x5f18('0x5a')]['id']},'attributes':[_0x5f18('0x57'),_0x5f18('0x59'),_0x5f18('0x5e'),_0x5f18('0x5f'),_0x5f18('0x60'),_0x5f18('0x61'),'defaultPreferred',_0x5f18('0x63')],'raw':!![]});})[_0x5f18('0x30')](handleEntityNotFound(_0x59ac53,null))[_0x5f18('0x30')](function(_0x58d1d5){if(_0x58d1d5){var _0x2ac078=_0x58d1d5[_0x5f18('0x59')]&&fs['existsSync'](path[_0x5f18('0x66')](config[_0x5f18('0x65')],_0xa13a95,_['toLower'](_0x58d1d5[_0x5f18('0x59')])))?path[_0x5f18('0x66')](config[_0x5f18('0x65')],_0xa13a95,_[_0x5f18('0x67')](_0x58d1d5['loginLogo'])):path['join'](config[_0x5f18('0x65')],_0xa13a95,_[_0x5f18('0x67')](_0x5f18('0x6f')));var _0x8295b4=_0x5f18('0x70')+_[_0x5f18('0x69')](_0x5f18('0x59'));if(_0x58d1d5[_0x8295b4]||!_0x4c3747[_0x5f18('0x6a')]){_0x2ac078=path[_0x5f18('0x66')](config[_0x5f18('0x65')],_0xa13a95,_[_0x5f18('0x67')](_0x5f18('0x6f')));}if(!fs[_0x5f18('0x64')](_0x2ac078)){throw new db[(_0x5f18('0x71'))][(_0x5f18('0x6b'))](_[_0x5f18('0x69')](_0x5f18('0x59'))+_0x5f18('0x6c'));}return _0x59ac53['download'](_0x2ac078);}})[_0x5f18('0x50')](handleError(_0x59ac53,null));};exports[_0x5f18('0x72')]=function(_0x223858,_0x1bfd85){return db['Setting']['find']({'where':{'id':_0x223858[_0x5f18('0x5a')]['id']},'attributes':[_0x5f18('0x73')]})['then'](respondWithResult(_0x1bfd85,null))[_0x5f18('0x50')](handleError(_0x1bfd85,null));};exports[_0x5f18('0x74')]=function(_0x3f69c4,_0x333ca4,_0x2adf5f){if(_0x3f69c4[_0x5f18('0x55')]&&_0x3f69c4['file']['filename']){_0x3f69c4[_0x5f18('0x54')]['preferred']=_0x3f69c4[_0x5f18('0x55')]['filename'];}return db[_0x5f18('0x38')][_0x5f18('0x53')]({'where':{'id':_0x3f69c4[_0x5f18('0x5a')]['id']}})[_0x5f18('0x30')](handleEntityNotFound(_0x333ca4,null))[_0x5f18('0x30')](saveUpdates(_0x3f69c4['body'],null))[_0x5f18('0x30')](respondWithResult(_0x333ca4,null))[_0x5f18('0x50')](handleError(_0x333ca4,null));};var utilLicense=require(_0x5f18('0x15'));exports[_0x5f18('0x75')]=function(_0x1d80d4,_0x44a792,_0xd0d240){var _0x17066f=_0x5f18('0x5c');var _0x421668={'custom':![]};return utilLicense[_0x5f18('0x5d')]()['then'](function(_0x1cbee0){if(_0x1cbee0){_0x421668=_0x1cbee0;}return db[_0x5f18('0x38')]['find']({'where':{'id':_0x1d80d4['params']['id']},'attributes':[_0x5f18('0x57'),_0x5f18('0x59'),_0x5f18('0x5e'),'favicon',_0x5f18('0x60'),'defaultLoginLogo',_0x5f18('0x62'),_0x5f18('0x63')],'raw':!![]});})[_0x5f18('0x30')](handleEntityNotFound(_0x44a792,null))['then'](function(_0x41614a){if(_0x41614a){var _0x18376e=_0x41614a[_0x5f18('0x5e')]&&fs[_0x5f18('0x64')](path[_0x5f18('0x66')](config[_0x5f18('0x65')],_0x17066f,_[_0x5f18('0x67')](_0x41614a[_0x5f18('0x5e')])))?path[_0x5f18('0x66')](config[_0x5f18('0x65')],_0x17066f,_['toLower'](_0x41614a[_0x5f18('0x5e')])):path['join'](config[_0x5f18('0x65')],_0x17066f,_[_0x5f18('0x67')](_0x5f18('0x76')));var _0x6d7fd3=_0x5f18('0x70')+_['upperFirst']('preferred');if(_0x41614a[_0x6d7fd3]||!_0x421668[_0x5f18('0x6a')]||!_0x421668[_0x5f18('0x5e')]){_0x18376e=path['join'](config[_0x5f18('0x65')],_0x17066f,_['toLower'](_0x5f18('0x76')));}if(!fs[_0x5f18('0x64')](_0x18376e)){throw new db[(_0x5f18('0x71'))]['ValidationError'](_[_0x5f18('0x69')](_0x5f18('0x5e'))+_0x5f18('0x6c'));}return _0x44a792[_0x5f18('0x6d')](_0x18376e);}})['catch'](handleError(_0x44a792,null));};exports[_0x5f18('0x77')]=function(_0x2ac014,_0x241b8f,_0x340923){if(_0x2ac014[_0x5f18('0x55')]&&_0x2ac014['file'][_0x5f18('0x56')]){_0x2ac014[_0x5f18('0x54')][_0x5f18('0x5f')]=_0x2ac014['file'][_0x5f18('0x56')];}return db[_0x5f18('0x38')][_0x5f18('0x53')]({'where':{'id':_0x2ac014[_0x5f18('0x5a')]['id']}})[_0x5f18('0x30')](handleEntityNotFound(_0x241b8f,null))[_0x5f18('0x30')](saveUpdates(_0x2ac014[_0x5f18('0x54')],null))[_0x5f18('0x30')](respondWithResult(_0x241b8f,null))[_0x5f18('0x50')](handleError(_0x241b8f,null));};var utilLicense=require(_0x5f18('0x15'));exports[_0x5f18('0x78')]=function(_0x2b0455,_0xa41bd,_0x85cb2e){var _0x4d2ca7=_0x5f18('0x5c');var _0x40720d={'custom':![]};return utilLicense[_0x5f18('0x5d')]()[_0x5f18('0x30')](function(_0x51937d){if(_0x51937d){_0x40720d=_0x51937d;}return db[_0x5f18('0x38')][_0x5f18('0x53')]({'where':{'id':_0x2b0455[_0x5f18('0x5a')]['id']},'attributes':[_0x5f18('0x57'),_0x5f18('0x59'),_0x5f18('0x5e'),'favicon',_0x5f18('0x60'),_0x5f18('0x61'),'defaultPreferred',_0x5f18('0x63')],'raw':!![]});})[_0x5f18('0x30')](handleEntityNotFound(_0xa41bd,null))[_0x5f18('0x30')](function(_0x38a002){if(_0x38a002){var _0x4c8186=_0x38a002[_0x5f18('0x5f')]&&fs[_0x5f18('0x64')](path['join'](config[_0x5f18('0x65')],_0x4d2ca7,_[_0x5f18('0x67')](_0x38a002[_0x5f18('0x5f')])))?path[_0x5f18('0x66')](config['root'],_0x4d2ca7,_[_0x5f18('0x67')](_0x38a002[_0x5f18('0x5f')])):path['join'](config['root'],_0x4d2ca7,_['toLower'](_0x5f18('0x79')));var _0x5a5d48=_0x5f18('0x70')+_[_0x5f18('0x69')](_0x5f18('0x5f'));if(_0x38a002[_0x5a5d48]||!_0x40720d[_0x5f18('0x6a')]){_0x4c8186=path[_0x5f18('0x66')](config['root'],_0x4d2ca7,_[_0x5f18('0x67')](_0x5f18('0x79')));}if(!fs[_0x5f18('0x64')](_0x4c8186)){throw new db[(_0x5f18('0x71'))]['ValidationError'](_['upperFirst'](_0x5f18('0x5f'))+'\x20not\x20found');}return _0xa41bd[_0x5f18('0x6d')](_0x4c8186);}})[_0x5f18('0x50')](handleError(_0xa41bd,null));};exports[_0x5f18('0x7a')]=function(_0x218474,_0x593915){var _0x2f0846={'offset':moment()[_0x5f18('0x7b')]()};_0x2f0846[_0x5f18('0x7c')]=moment()[_0x5f18('0x7b')](_0x2f0846['offset'])[_0x5f18('0x7d')]('YYYY-MM-DD\x20HH:mm:ss:SSS');return _0x593915[_0x5f18('0x25')](0xc8)['send'](_0x2f0846);};
\ No newline at end of file
+var _0x18b8=['getPreferred','server/files/images/logos','default_preferred.png','getFavicon','default_favicon.ico','getDate','utcOffset','now','YYYY-MM-DD\x20HH:mm:ss:SSS','eml-format','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','papaparse','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','jayson/promise','request','then','info','request\x20sent','debug','Setting,\x20%s,\x20%s,\x20%s','stringify','error','code','Setting,\x20%s,\x20%s','message','result','sendStatus','status','end','json','offset','limit','count','set','apply','save','destroy','stack','name','index','map','rawAttributes','fieldName','type','key','model','keys','filters','intersection','query','attributes','fields','hasOwnProperty','nolimit','order','sort','pick','filter','where','merge','options','Setting','includeAll','rows','catch','show','length','find','body','params','addLogo','file','filename','logo','loginLogo','getLicense','preferred','favicon','defaultLogo','defaultLoginLogo','defaultPreferred','defaultFavicon','existsSync','root','toLower','join','default_logo.svg','default','upperFirst','custom','getLogoLogin','ValidationError','\x20not\x20found','download','gdpr','securePassword','addPreferred'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x18b8,0xff));var _0x818b=function(_0x47967e,_0x139c14){_0x47967e=_0x47967e-0x0;var _0x36811a=_0x18b8[_0x47967e];return _0x36811a;};'use strict';var emlformat=require(_0x818b('0x0'));var rimraf=require(_0x818b('0x1'));var zipdir=require(_0x818b('0x2'));var jsonpatch=require(_0x818b('0x3'));var rp=require(_0x818b('0x4'));var moment=require(_0x818b('0x5'));var BPromise=require(_0x818b('0x6'));var Mustache=require(_0x818b('0x7'));var util=require(_0x818b('0x8'));var path=require(_0x818b('0x9'));var sox=require('sox');var csv=require(_0x818b('0xa'));var ejs=require(_0x818b('0xb'));var fs=require('fs');var fs_extra=require(_0x818b('0xc'));var _=require(_0x818b('0xd'));var squel=require(_0x818b('0xe'));var crypto=require(_0x818b('0xf'));var jsforce=require(_0x818b('0x10'));var deskjs=require(_0x818b('0x11'));var toCsv=require('to-csv');var querystring=require(_0x818b('0x12'));var Papa=require(_0x818b('0x13'));var Redis=require(_0x818b('0x14'));var authService=require(_0x818b('0x15'));var qs=require('../../components/parsers/qs');var as=require(_0x818b('0x16'));var hardwareService=require(_0x818b('0x17'));var logger=require(_0x818b('0x18'))(_0x818b('0x19'));var utils=require(_0x818b('0x1a'));var config=require(_0x818b('0x1b'));var licenseUtil=require(_0x818b('0x1c'));var db=require(_0x818b('0x1d'))['db'];var jayson=require(_0x818b('0x1e'));var client=jayson['client']['http']({'port':0x232a});function respondWithRpcPromise(_0x4d5de2,_0x3fe489,_0x3517b7,_0x3ca607){return new BPromise(function(_0x3130f1,_0xb7b77b){var _0x226e8c=_0x3ca607||client;return _0x226e8c[_0x818b('0x1f')](_0x4d5de2,_0x3517b7)[_0x818b('0x20')](function(_0x38da28){logger[_0x818b('0x21')]('Setting,\x20%s,\x20%s',_0x3fe489,_0x818b('0x22'));logger[_0x818b('0x23')](_0x818b('0x24'),_0x3fe489,_0x818b('0x22'),JSON[_0x818b('0x25')](_0x38da28));if(_0x38da28['error']){if(_0x38da28[_0x818b('0x26')][_0x818b('0x27')]===0x1f4){logger[_0x818b('0x26')](_0x818b('0x28'),_0x3fe489,_0x38da28[_0x818b('0x26')][_0x818b('0x29')]);return _0xb7b77b(_0x38da28[_0x818b('0x26')][_0x818b('0x29')]);}logger[_0x818b('0x26')](_0x818b('0x28'),_0x3fe489,_0x38da28[_0x818b('0x26')]['message']);return _0x3130f1(_0x38da28[_0x818b('0x26')][_0x818b('0x29')]);}else{logger[_0x818b('0x21')]('Setting,\x20%s,\x20%s',_0x3fe489,_0x818b('0x22'));_0x3130f1(_0x38da28[_0x818b('0x2a')][_0x818b('0x29')]);}})['catch'](function(_0x26aa40){logger[_0x818b('0x26')](_0x818b('0x28'),_0x3fe489,_0x26aa40);_0xb7b77b(_0x26aa40);});});}function respondWithStatusCode(_0x43577d,_0x3967ef){_0x3967ef=_0x3967ef||0xcc;return function(_0x63ff3a){if(_0x63ff3a){return _0x43577d[_0x818b('0x2b')](_0x3967ef);}return _0x43577d[_0x818b('0x2c')](_0x3967ef)[_0x818b('0x2d')]();};}function respondWithResult(_0x51ce44,_0x415c89){_0x415c89=_0x415c89||0xc8;return function(_0x275bf3){if(_0x275bf3){return _0x51ce44[_0x818b('0x2c')](_0x415c89)[_0x818b('0x2e')](_0x275bf3);}};}function respondWithFilteredResult(_0x5e4cd9,_0x2e6335){return function(_0x1cb1c8){if(_0x1cb1c8){var _0x1f1829=typeof _0x2e6335[_0x818b('0x2f')]==='undefined'&&typeof _0x2e6335[_0x818b('0x30')]==='undefined';var _0xeab10b=_0x1cb1c8['count'];var _0x736c3b=_0x1f1829?0x0:_0x2e6335['offset'];var _0x2e37e4=_0x1f1829?_0x1cb1c8[_0x818b('0x31')]:_0x2e6335[_0x818b('0x2f')]+_0x2e6335[_0x818b('0x30')];var _0x1a9b5b;if(_0x2e37e4>=_0xeab10b){_0x2e37e4=_0xeab10b;_0x1a9b5b=0xc8;}else{_0x1a9b5b=0xce;}_0x5e4cd9['status'](_0x1a9b5b);return _0x5e4cd9[_0x818b('0x32')]('Content-Range',_0x736c3b+'-'+_0x2e37e4+'/'+_0xeab10b)[_0x818b('0x2e')](_0x1cb1c8);}return null;};}function patchUpdates(_0x42e665){return function(_0x5786ed){try{jsonpatch[_0x818b('0x33')](_0x5786ed,_0x42e665,!![]);}catch(_0x25dc80){return BPromise['reject'](_0x25dc80);}return _0x5786ed[_0x818b('0x34')]();};}function saveUpdates(_0x136ef3,_0x27d777){return function(_0x231b32){if(_0x231b32){return _0x231b32['update'](_0x136ef3)[_0x818b('0x20')](function(_0x478afd){return _0x478afd;});}return null;};}function removeEntity(_0x43720e,_0x5e4ade){return function(_0x6bbeaf){if(_0x6bbeaf){return _0x6bbeaf[_0x818b('0x35')]()['then'](function(){_0x43720e['status'](0xcc)[_0x818b('0x2d')]();});}};}function handleEntityNotFound(_0x319ad9,_0x2f1fef){return function(_0x5dbf81){if(!_0x5dbf81){_0x319ad9[_0x818b('0x2b')](0x194);}return _0x5dbf81;};}function handleError(_0x4cd7cf,_0x3deefa){_0x3deefa=_0x3deefa||0x1f4;return function(_0x417950){logger[_0x818b('0x26')](_0x417950[_0x818b('0x36')]);if(_0x417950['name']){delete _0x417950[_0x818b('0x37')];}_0x4cd7cf[_0x818b('0x2c')](_0x3deefa)['send'](_0x417950);};}exports[_0x818b('0x38')]=function(_0x2771b0,_0x1cebc9){var _0x598bea={},_0x4df1bf={},_0x5823e3={'count':0x0,'rows':[]};var _0x53bf9a=_[_0x818b('0x39')](db['Setting'][_0x818b('0x3a')],function(_0x41e04b){return{'name':_0x41e04b[_0x818b('0x3b')],'type':_0x41e04b[_0x818b('0x3c')][_0x818b('0x3d')]};});_0x4df1bf[_0x818b('0x3e')]=_[_0x818b('0x39')](_0x53bf9a,'name');_0x4df1bf['query']=_[_0x818b('0x3f')](_0x2771b0['query']);_0x4df1bf[_0x818b('0x40')]=_[_0x818b('0x41')](_0x4df1bf[_0x818b('0x3e')],_0x4df1bf[_0x818b('0x42')]);_0x598bea[_0x818b('0x43')]=_['intersection'](_0x4df1bf['model'],qs[_0x818b('0x44')](_0x2771b0[_0x818b('0x42')][_0x818b('0x44')]));_0x598bea[_0x818b('0x43')]=_0x598bea['attributes']['length']?_0x598bea[_0x818b('0x43')]:_0x4df1bf[_0x818b('0x3e')];if(!_0x2771b0[_0x818b('0x42')][_0x818b('0x45')](_0x818b('0x46'))){_0x598bea['limit']=qs[_0x818b('0x30')](_0x2771b0[_0x818b('0x42')][_0x818b('0x30')]);_0x598bea[_0x818b('0x2f')]=qs[_0x818b('0x2f')](_0x2771b0[_0x818b('0x42')][_0x818b('0x2f')]);}_0x598bea[_0x818b('0x47')]=qs[_0x818b('0x48')](_0x2771b0['query'][_0x818b('0x48')]);_0x598bea['where']=qs['filters'](_[_0x818b('0x49')](_0x2771b0['query'],_0x4df1bf[_0x818b('0x40')]),_0x53bf9a);if(_0x2771b0[_0x818b('0x42')][_0x818b('0x4a')]){_0x598bea[_0x818b('0x4b')]=_['merge'](_0x598bea[_0x818b('0x4b')],{'$or':_['map'](_0x53bf9a,function(_0x4f1548){if(_0x4f1548[_0x818b('0x3c')]!=='VIRTUAL'){var _0x263e94={};_0x263e94[_0x4f1548[_0x818b('0x37')]]={'$like':'%'+_0x2771b0[_0x818b('0x42')]['filter']+'%'};return _0x263e94;}})});}_0x598bea=_[_0x818b('0x4c')]({},_0x598bea,_0x2771b0[_0x818b('0x4d')]);var _0x44de77={'where':_0x598bea[_0x818b('0x4b')]};return db[_0x818b('0x4e')][_0x818b('0x31')](_0x44de77)['then'](function(_0x3e109a){_0x5823e3[_0x818b('0x31')]=_0x3e109a;if(_0x2771b0[_0x818b('0x42')][_0x818b('0x4f')]){_0x598bea['include']=[{'all':!![]}];}return db['Setting']['findAll'](_0x598bea);})[_0x818b('0x20')](function(_0x4ce0cf){_0x5823e3[_0x818b('0x50')]=_0x4ce0cf;return _0x5823e3;})[_0x818b('0x20')](respondWithFilteredResult(_0x1cebc9,_0x598bea))[_0x818b('0x51')](handleError(_0x1cebc9,null));};exports[_0x818b('0x52')]=function(_0x39adc0,_0x115a98){var _0x136955={'raw':![],'where':{'id':_0x39adc0['params']['id']}},_0x235ef7={};_0x235ef7[_0x818b('0x3e')]=_[_0x818b('0x3f')](db[_0x818b('0x4e')][_0x818b('0x3a')]);_0x235ef7[_0x818b('0x42')]=_[_0x818b('0x3f')](_0x39adc0[_0x818b('0x42')]);_0x235ef7[_0x818b('0x40')]=_[_0x818b('0x41')](_0x235ef7[_0x818b('0x3e')],_0x235ef7[_0x818b('0x42')]);_0x136955[_0x818b('0x43')]=_[_0x818b('0x41')](_0x235ef7['model'],qs['fields'](_0x39adc0['query'][_0x818b('0x44')]));_0x136955[_0x818b('0x43')]=_0x136955[_0x818b('0x43')][_0x818b('0x53')]?_0x136955[_0x818b('0x43')]:_0x235ef7[_0x818b('0x3e')];if(_0x39adc0[_0x818b('0x42')]['includeAll']){_0x136955['include']=[{'all':!![]}];}_0x136955=_['merge']({},_0x136955,_0x39adc0['options']);return db['Setting'][_0x818b('0x54')](_0x136955)[_0x818b('0x20')](handleEntityNotFound(_0x115a98,null))[_0x818b('0x20')](respondWithResult(_0x115a98,null))['catch'](handleError(_0x115a98,null));};exports['update']=function(_0x614f61,_0x13a29b){if(_0x614f61[_0x818b('0x55')]['id']){delete _0x614f61[_0x818b('0x55')]['id'];}return db[_0x818b('0x4e')][_0x818b('0x54')]({'where':{'id':_0x614f61[_0x818b('0x56')]['id']}})['then'](handleEntityNotFound(_0x13a29b,null))['then'](saveUpdates(_0x614f61['body'],null))[_0x818b('0x20')](respondWithResult(_0x13a29b,null))['catch'](handleError(_0x13a29b,null));};exports[_0x818b('0x57')]=function(_0x419987,_0x8c8dca,_0x5b9fec){if(_0x419987[_0x818b('0x58')]&&_0x419987[_0x818b('0x58')][_0x818b('0x59')]){_0x419987[_0x818b('0x55')][_0x818b('0x5a')]=_0x419987[_0x818b('0x58')][_0x818b('0x59')];}return db[_0x818b('0x4e')][_0x818b('0x54')]({'where':{'id':_0x419987[_0x818b('0x56')]['id']}})[_0x818b('0x20')](handleEntityNotFound(_0x8c8dca,null))[_0x818b('0x20')](saveUpdates(_0x419987[_0x818b('0x55')],null))[_0x818b('0x20')](respondWithResult(_0x8c8dca,null))[_0x818b('0x51')](handleError(_0x8c8dca,null));};exports['addLogoLogin']=function(_0x9b40e8,_0x596f66,_0x5cf6f0){if(_0x9b40e8[_0x818b('0x58')]&&_0x9b40e8[_0x818b('0x58')][_0x818b('0x59')]){_0x9b40e8[_0x818b('0x55')][_0x818b('0x5b')]=_0x9b40e8[_0x818b('0x58')][_0x818b('0x59')];}return db[_0x818b('0x4e')]['find']({'where':{'id':_0x9b40e8['params']['id']}})['then'](handleEntityNotFound(_0x596f66,null))['then'](saveUpdates(_0x9b40e8['body'],null))[_0x818b('0x20')](respondWithResult(_0x596f66,null))[_0x818b('0x51')](handleError(_0x596f66,null));};var utilLicense=require(_0x818b('0x1c'));exports['getLogo']=function(_0x4f4e8b,_0x2a3501,_0x344540){var _0x23bc4c='server/files/images/logos';var _0x3aadf0={'custom':![]};return utilLicense[_0x818b('0x5c')]()['then'](function(_0x331f73){if(_0x331f73){_0x3aadf0=_0x331f73;}return db[_0x818b('0x4e')][_0x818b('0x54')]({'where':{'id':_0x4f4e8b['params']['id']},'attributes':[_0x818b('0x5a'),_0x818b('0x5b'),_0x818b('0x5d'),_0x818b('0x5e'),_0x818b('0x5f'),_0x818b('0x60'),_0x818b('0x61'),_0x818b('0x62')],'raw':!![]});})[_0x818b('0x20')](handleEntityNotFound(_0x2a3501,null))[_0x818b('0x20')](function(_0x1a68a0){if(_0x1a68a0){var _0xdde359=_0x1a68a0['logo']&&fs[_0x818b('0x63')](path['join'](config[_0x818b('0x64')],_0x23bc4c,_[_0x818b('0x65')](_0x1a68a0['logo'])))?path[_0x818b('0x66')](config['root'],_0x23bc4c,_[_0x818b('0x65')](_0x1a68a0[_0x818b('0x5a')])):path['join'](config[_0x818b('0x64')],_0x23bc4c,_['toLower'](_0x818b('0x67')));var _0xee55b4=_0x818b('0x68')+_[_0x818b('0x69')]('logo');if(_0x1a68a0[_0xee55b4]||!_0x3aadf0[_0x818b('0x6a')]){_0xdde359=path[_0x818b('0x66')](config[_0x818b('0x64')],_0x23bc4c,_['toLower'](_0x818b('0x67')));}if(!fs[_0x818b('0x63')](_0xdde359)){throw new db['Sequelize']['ValidationError'](_[_0x818b('0x69')](_0x818b('0x5a'))+'\x20not\x20found');}return _0x2a3501['download'](_0xdde359);}})[_0x818b('0x51')](handleError(_0x2a3501,null));};var utilLicense=require(_0x818b('0x1c'));exports[_0x818b('0x6b')]=function(_0xcdd775,_0x68906,_0x5c9d82){var _0x4e00ee='server/files/images/logos';var _0x488754={'custom':![]};return utilLicense[_0x818b('0x5c')]()[_0x818b('0x20')](function(_0x2c463b){if(_0x2c463b){_0x488754=_0x2c463b;}return db[_0x818b('0x4e')]['find']({'where':{'id':_0xcdd775[_0x818b('0x56')]['id']},'attributes':[_0x818b('0x5a'),'loginLogo',_0x818b('0x5d'),'favicon',_0x818b('0x5f'),_0x818b('0x60'),_0x818b('0x61'),_0x818b('0x62')],'raw':!![]});})[_0x818b('0x20')](handleEntityNotFound(_0x68906,null))[_0x818b('0x20')](function(_0x1ffe67){if(_0x1ffe67){var _0x5c304c=_0x1ffe67[_0x818b('0x5b')]&&fs[_0x818b('0x63')](path[_0x818b('0x66')](config[_0x818b('0x64')],_0x4e00ee,_[_0x818b('0x65')](_0x1ffe67['loginLogo'])))?path['join'](config[_0x818b('0x64')],_0x4e00ee,_[_0x818b('0x65')](_0x1ffe67[_0x818b('0x5b')])):path[_0x818b('0x66')](config[_0x818b('0x64')],_0x4e00ee,_['toLower']('default_loginLogo.svg'));var _0x3a7b53=_0x818b('0x68')+_['upperFirst']('loginLogo');if(_0x1ffe67[_0x3a7b53]||!_0x488754[_0x818b('0x6a')]){_0x5c304c=path[_0x818b('0x66')](config[_0x818b('0x64')],_0x4e00ee,_['toLower']('default_loginLogo.svg'));}if(!fs[_0x818b('0x63')](_0x5c304c)){throw new db['Sequelize'][(_0x818b('0x6c'))](_[_0x818b('0x69')](_0x818b('0x5b'))+_0x818b('0x6d'));}return _0x68906[_0x818b('0x6e')](_0x5c304c);}})[_0x818b('0x51')](handleError(_0x68906,null));};exports[_0x818b('0x6f')]=function(_0xf08cff,_0x1e9b24){return db[_0x818b('0x4e')][_0x818b('0x54')]({'where':{'id':_0xf08cff[_0x818b('0x56')]['id']},'attributes':[_0x818b('0x70')]})[_0x818b('0x20')](respondWithResult(_0x1e9b24,null))[_0x818b('0x51')](handleError(_0x1e9b24,null));};exports[_0x818b('0x71')]=function(_0xef6c08,_0x337ebd,_0x564ec7){if(_0xef6c08[_0x818b('0x58')]&&_0xef6c08[_0x818b('0x58')][_0x818b('0x59')]){_0xef6c08[_0x818b('0x55')][_0x818b('0x5d')]=_0xef6c08[_0x818b('0x58')][_0x818b('0x59')];}return db[_0x818b('0x4e')]['find']({'where':{'id':_0xef6c08[_0x818b('0x56')]['id']}})[_0x818b('0x20')](handleEntityNotFound(_0x337ebd,null))['then'](saveUpdates(_0xef6c08[_0x818b('0x55')],null))[_0x818b('0x20')](respondWithResult(_0x337ebd,null))[_0x818b('0x51')](handleError(_0x337ebd,null));};var utilLicense=require(_0x818b('0x1c'));exports[_0x818b('0x72')]=function(_0x239eaf,_0x3ad6bf,_0x590597){var _0xf5b7a0=_0x818b('0x73');var _0x233603={'custom':![]};return utilLicense[_0x818b('0x5c')]()[_0x818b('0x20')](function(_0x142c79){if(_0x142c79){_0x233603=_0x142c79;}return db['Setting'][_0x818b('0x54')]({'where':{'id':_0x239eaf[_0x818b('0x56')]['id']},'attributes':[_0x818b('0x5a'),_0x818b('0x5b'),_0x818b('0x5d'),_0x818b('0x5e'),_0x818b('0x5f'),'defaultLoginLogo','defaultPreferred',_0x818b('0x62')],'raw':!![]});})['then'](handleEntityNotFound(_0x3ad6bf,null))[_0x818b('0x20')](function(_0xef81){if(_0xef81){var _0x2ef57a=_0xef81['preferred']&&fs[_0x818b('0x63')](path[_0x818b('0x66')](config['root'],_0xf5b7a0,_[_0x818b('0x65')](_0xef81[_0x818b('0x5d')])))?path['join'](config[_0x818b('0x64')],_0xf5b7a0,_[_0x818b('0x65')](_0xef81['preferred'])):path[_0x818b('0x66')](config[_0x818b('0x64')],_0xf5b7a0,_[_0x818b('0x65')](_0x818b('0x74')));var _0x19dfd6='default'+_[_0x818b('0x69')](_0x818b('0x5d'));if(_0xef81[_0x19dfd6]||!_0x233603[_0x818b('0x6a')]||!_0x233603[_0x818b('0x5d')]){_0x2ef57a=path[_0x818b('0x66')](config[_0x818b('0x64')],_0xf5b7a0,_[_0x818b('0x65')](_0x818b('0x74')));}if(!fs['existsSync'](_0x2ef57a)){throw new db['Sequelize'][(_0x818b('0x6c'))](_[_0x818b('0x69')](_0x818b('0x5d'))+'\x20not\x20found');}return _0x3ad6bf[_0x818b('0x6e')](_0x2ef57a);}})[_0x818b('0x51')](handleError(_0x3ad6bf,null));};exports['addFavicon']=function(_0xaabb1,_0x24e103,_0x55c2ca){if(_0xaabb1[_0x818b('0x58')]&&_0xaabb1[_0x818b('0x58')][_0x818b('0x59')]){_0xaabb1['body'][_0x818b('0x5e')]=_0xaabb1[_0x818b('0x58')][_0x818b('0x59')];}return db[_0x818b('0x4e')][_0x818b('0x54')]({'where':{'id':_0xaabb1[_0x818b('0x56')]['id']}})[_0x818b('0x20')](handleEntityNotFound(_0x24e103,null))[_0x818b('0x20')](saveUpdates(_0xaabb1[_0x818b('0x55')],null))[_0x818b('0x20')](respondWithResult(_0x24e103,null))['catch'](handleError(_0x24e103,null));};var utilLicense=require(_0x818b('0x1c'));exports[_0x818b('0x75')]=function(_0x4de9a9,_0x18cb66,_0x413321){var _0x1b22bb=_0x818b('0x73');var _0x4f92fc={'custom':![]};return utilLicense[_0x818b('0x5c')]()[_0x818b('0x20')](function(_0x108e98){if(_0x108e98){_0x4f92fc=_0x108e98;}return db[_0x818b('0x4e')][_0x818b('0x54')]({'where':{'id':_0x4de9a9['params']['id']},'attributes':[_0x818b('0x5a'),_0x818b('0x5b'),'preferred',_0x818b('0x5e'),'defaultLogo',_0x818b('0x60'),_0x818b('0x61'),'defaultFavicon'],'raw':!![]});})[_0x818b('0x20')](handleEntityNotFound(_0x18cb66,null))[_0x818b('0x20')](function(_0x3b3e3c){if(_0x3b3e3c){var _0x44b7db=_0x3b3e3c[_0x818b('0x5e')]&&fs[_0x818b('0x63')](path[_0x818b('0x66')](config[_0x818b('0x64')],_0x1b22bb,_[_0x818b('0x65')](_0x3b3e3c[_0x818b('0x5e')])))?path[_0x818b('0x66')](config[_0x818b('0x64')],_0x1b22bb,_[_0x818b('0x65')](_0x3b3e3c[_0x818b('0x5e')])):path[_0x818b('0x66')](config['root'],_0x1b22bb,_['toLower'](_0x818b('0x76')));var _0x39416a=_0x818b('0x68')+_[_0x818b('0x69')](_0x818b('0x5e'));if(_0x3b3e3c[_0x39416a]||!_0x4f92fc[_0x818b('0x6a')]){_0x44b7db=path[_0x818b('0x66')](config[_0x818b('0x64')],_0x1b22bb,_[_0x818b('0x65')]('default_favicon.ico'));}if(!fs[_0x818b('0x63')](_0x44b7db)){throw new db['Sequelize'][(_0x818b('0x6c'))](_[_0x818b('0x69')](_0x818b('0x5e'))+_0x818b('0x6d'));}return _0x18cb66['download'](_0x44b7db);}})[_0x818b('0x51')](handleError(_0x18cb66,null));};exports[_0x818b('0x77')]=function(_0x1cbcf4,_0x3c7222){var _0x52cf86={'offset':moment()[_0x818b('0x78')]()};_0x52cf86[_0x818b('0x79')]=moment()[_0x818b('0x78')](_0x52cf86[_0x818b('0x2f')])['format'](_0x818b('0x7a'));return _0x3c7222['status'](0xc8)['send'](_0x52cf86);};
\ No newline at end of file
index 7cf0752..e32dfdf 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7217=['../../config/environment','./setting.attributes','exports','define','Setting','settings','lodash','../../config/logger','api','moment','bluebird','request-promise'];(function(_0x207d2f,_0x44400f){var _0x3c3498=function(_0x57fdfb){while(--_0x57fdfb){_0x207d2f['push'](_0x207d2f['shift']());}};_0x3c3498(++_0x44400f);}(_0x7217,0x19e));var _0x7721=function(_0x387777,_0x356171){_0x387777=_0x387777-0x0;var _0x3f84c0=_0x7217[_0x387777];return _0x3f84c0;};'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':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x34e8=['settings','lodash','util','../../config/logger','api','bluebird','request-promise','path','rimraf','../../config/environment','./setting.attributes','exports','Setting'];(function(_0x23b3fb,_0x282fce){var _0x5de051=function(_0x443992){while(--_0x443992){_0x23b3fb['push'](_0x23b3fb['shift']());}};_0x5de051(++_0x282fce);}(_0x34e8,0x12c));var _0x834e=function(_0x13c242,_0x2d0b95){_0x13c242=_0x13c242-0x0;var _0x24626f=_0x34e8[_0x13c242];return _0x24626f;};'use strict';var _=require(_0x834e('0x0'));var util=require(_0x834e('0x1'));var logger=require(_0x834e('0x2'))(_0x834e('0x3'));var moment=require('moment');var BPromise=require(_0x834e('0x4'));var rp=require(_0x834e('0x5'));var fs=require('fs');var path=require(_0x834e('0x6'));var rimraf=require(_0x834e('0x7'));var config=require(_0x834e('0x8'));var attributes=require(_0x834e('0x9'));module[_0x834e('0xa')]=function(_0x4a2018,_0x858aa1){return _0x4a2018['define'](_0x834e('0xb'),attributes,{'tableName':_0x834e('0xc'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index b41aa45..b301405 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe437=['catch','ShowSetting','Setting','find','options','raw','attributes','include','map','model','then','debug','lodash','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','client','http','request','info','Setting,\x20%s,\x20%s','request\x20sent','Setting,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result'];(function(_0x3a2227,_0x2acdba){var _0x436835=function(_0x5bdf73){while(--_0x5bdf73){_0x3a2227['push'](_0x3a2227['shift']());}};_0x436835(++_0x2acdba);}(_0xe437,0x1e8));var _0x7e43=function(_0x10b1d0,_0x2adfa9){_0x10b1d0=_0x10b1d0-0x0;var _0x1bc06f=_0xe437[_0x10b1d0];return _0x1bc06f;};'use strict';var _=require(_0x7e43('0x0'));var util=require('util');var moment=require(_0x7e43('0x1'));var BPromise=require(_0x7e43('0x2'));var rs=require(_0x7e43('0x3'));var fs=require('fs');var Redis=require(_0x7e43('0x4'));var db=require(_0x7e43('0x5'))['db'];var utils=require(_0x7e43('0x6'));var logger=require(_0x7e43('0x7'))(_0x7e43('0x8'));var config=require(_0x7e43('0x9'));var jayson=require('jayson/promise');var client=jayson[_0x7e43('0xa')][_0x7e43('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x10d237,_0x34c4cd,_0x60385e){return new BPromise(function(_0x2ae553,_0x4e0130){return client[_0x7e43('0xc')](_0x10d237,_0x60385e)['then'](function(_0x537581){logger[_0x7e43('0xd')](_0x7e43('0xe'),_0x34c4cd,_0x7e43('0xf'));logger['debug'](_0x7e43('0x10'),_0x34c4cd,_0x7e43('0xf'),JSON[_0x7e43('0x11')](_0x537581));if(_0x537581[_0x7e43('0x12')]){if(_0x537581[_0x7e43('0x12')][_0x7e43('0x13')]===0x1f4){logger['error'](_0x7e43('0xe'),_0x34c4cd,_0x537581[_0x7e43('0x12')][_0x7e43('0x14')]);return _0x4e0130(_0x537581[_0x7e43('0x12')][_0x7e43('0x14')]);}logger[_0x7e43('0x12')](_0x7e43('0xe'),_0x34c4cd,_0x537581['error'][_0x7e43('0x14')]);return _0x2ae553(_0x537581['error'][_0x7e43('0x14')]);}else{logger[_0x7e43('0xd')](_0x7e43('0xe'),_0x34c4cd,_0x7e43('0xf'));_0x2ae553(_0x537581[_0x7e43('0x15')][_0x7e43('0x14')]);}})[_0x7e43('0x16')](function(_0x31fc9c){logger[_0x7e43('0x12')](_0x7e43('0xe'),_0x34c4cd,_0x31fc9c);_0x4e0130(_0x31fc9c);});});}exports[_0x7e43('0x17')]=function(_0x414366){var _0x4b3db5=this;return new Promise(function(_0x399fba,_0x52292a){return db[_0x7e43('0x18')][_0x7e43('0x19')]({'raw':_0x414366[_0x7e43('0x1a')]?_0x414366[_0x7e43('0x1a')][_0x7e43('0x1b')]===undefined?!![]:![]:!![],'where':_0x414366[_0x7e43('0x1a')]?_0x414366[_0x7e43('0x1a')]['where']||null:null,'attributes':_0x414366[_0x7e43('0x1a')]?_0x414366[_0x7e43('0x1a')][_0x7e43('0x1c')]||null:null,'include':_0x414366[_0x7e43('0x1a')]?_0x414366[_0x7e43('0x1a')][_0x7e43('0x1d')]?_[_0x7e43('0x1e')](_0x414366[_0x7e43('0x1a')]['include'],function(_0xa1cf29){return{'model':db[_0xa1cf29['model']],'as':_0xa1cf29['as'],'attributes':_0xa1cf29['attributes'],'include':_0xa1cf29['include']?_[_0x7e43('0x1e')](_0xa1cf29[_0x7e43('0x1d')],function(_0x576433){return{'model':db[_0x576433[_0x7e43('0x1f')]],'as':_0x576433['as'],'attributes':_0x576433[_0x7e43('0x1c')],'include':_0x576433[_0x7e43('0x1d')]?_[_0x7e43('0x1e')](_0x576433[_0x7e43('0x1d')],function(_0x204414){return{'model':db[_0x204414[_0x7e43('0x1f')]],'as':_0x204414['as'],'attributes':_0x204414[_0x7e43('0x1c')]};}):[]};}):[]};}):[]:[]})[_0x7e43('0x20')](function(_0x1a59f7){logger[_0x7e43('0xd')](_0x7e43('0x17'),_0x414366);logger[_0x7e43('0x21')](_0x7e43('0x17'),_0x414366,JSON['stringify'](_0x1a59f7));_0x399fba(_0x1a59f7);})['catch'](function(_0x52f85b){logger[_0x7e43('0x12')]('ShowSetting',_0x52f85b[_0x7e43('0x14')],_0x414366);_0x52292a(_0x4b3db5['error'](0x1f4,_0x52f85b[_0x7e43('0x14')]));});});};
\ No newline at end of file
+var _0x8efa=['options','raw','where','include','map','model','attributes','message','lodash','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','request','then','info','Setting,\x20%s,\x20%s','debug','Setting,\x20%s,\x20%s,\x20%s','stringify','error','request\x20sent','result','catch','ShowSetting','Setting','find'];(function(_0x39c9a6,_0xf97005){var _0xde09e=function(_0x3d081d){while(--_0x3d081d){_0x39c9a6['push'](_0x39c9a6['shift']());}};_0xde09e(++_0xf97005);}(_0x8efa,0xf6));var _0xa8ef=function(_0x4bb284,_0x4846eb){_0x4bb284=_0x4bb284-0x0;var _0x35504d=_0x8efa[_0x4bb284];return _0x35504d;};'use strict';var _=require(_0xa8ef('0x0'));var util=require('util');var moment=require('moment');var BPromise=require(_0xa8ef('0x1'));var rs=require(_0xa8ef('0x2'));var fs=require('fs');var Redis=require(_0xa8ef('0x3'));var db=require(_0xa8ef('0x4'))['db'];var utils=require(_0xa8ef('0x5'));var logger=require(_0xa8ef('0x6'))(_0xa8ef('0x7'));var config=require(_0xa8ef('0x8'));var jayson=require(_0xa8ef('0x9'));var client=jayson[_0xa8ef('0xa')][_0xa8ef('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x1feb2c,_0x40bed4,_0x436f05){return new BPromise(function(_0x1d5cbf,_0x48fade){return client[_0xa8ef('0xc')](_0x1feb2c,_0x436f05)[_0xa8ef('0xd')](function(_0x395af7){logger[_0xa8ef('0xe')](_0xa8ef('0xf'),_0x40bed4,'request\x20sent');logger[_0xa8ef('0x10')](_0xa8ef('0x11'),_0x40bed4,'request\x20sent',JSON[_0xa8ef('0x12')](_0x395af7));if(_0x395af7[_0xa8ef('0x13')]){if(_0x395af7['error']['code']===0x1f4){logger[_0xa8ef('0x13')]('Setting,\x20%s,\x20%s',_0x40bed4,_0x395af7[_0xa8ef('0x13')]['message']);return _0x48fade(_0x395af7['error']['message']);}logger['error']('Setting,\x20%s,\x20%s',_0x40bed4,_0x395af7[_0xa8ef('0x13')]['message']);return _0x1d5cbf(_0x395af7[_0xa8ef('0x13')]['message']);}else{logger['info'](_0xa8ef('0xf'),_0x40bed4,_0xa8ef('0x14'));_0x1d5cbf(_0x395af7[_0xa8ef('0x15')]['message']);}})[_0xa8ef('0x16')](function(_0x2420f3){logger[_0xa8ef('0x13')](_0xa8ef('0xf'),_0x40bed4,_0x2420f3);_0x48fade(_0x2420f3);});});}exports[_0xa8ef('0x17')]=function(_0x5d444f){var _0x5d8ef0=this;return new Promise(function(_0x46441,_0x2b6af3){return db[_0xa8ef('0x18')][_0xa8ef('0x19')]({'raw':_0x5d444f[_0xa8ef('0x1a')]?_0x5d444f[_0xa8ef('0x1a')][_0xa8ef('0x1b')]===undefined?!![]:![]:!![],'where':_0x5d444f['options']?_0x5d444f[_0xa8ef('0x1a')][_0xa8ef('0x1c')]||null:null,'attributes':_0x5d444f[_0xa8ef('0x1a')]?_0x5d444f[_0xa8ef('0x1a')]['attributes']||null:null,'include':_0x5d444f[_0xa8ef('0x1a')]?_0x5d444f[_0xa8ef('0x1a')][_0xa8ef('0x1d')]?_[_0xa8ef('0x1e')](_0x5d444f[_0xa8ef('0x1a')][_0xa8ef('0x1d')],function(_0x5ef329){return{'model':db[_0x5ef329[_0xa8ef('0x1f')]],'as':_0x5ef329['as'],'attributes':_0x5ef329[_0xa8ef('0x20')],'include':_0x5ef329[_0xa8ef('0x1d')]?_['map'](_0x5ef329[_0xa8ef('0x1d')],function(_0x1c591e){return{'model':db[_0x1c591e[_0xa8ef('0x1f')]],'as':_0x1c591e['as'],'attributes':_0x1c591e[_0xa8ef('0x20')],'include':_0x1c591e[_0xa8ef('0x1d')]?_[_0xa8ef('0x1e')](_0x1c591e['include'],function(_0x344799){return{'model':db[_0x344799[_0xa8ef('0x1f')]],'as':_0x344799['as'],'attributes':_0x344799[_0xa8ef('0x20')]};}):[]};}):[]};}):[]:[]})[_0xa8ef('0xd')](function(_0x1f8997){logger[_0xa8ef('0xe')](_0xa8ef('0x17'),_0x5d444f);logger[_0xa8ef('0x10')](_0xa8ef('0x17'),_0x5d444f,JSON['stringify'](_0x1f8997));_0x46441(_0x1f8997);})['catch'](function(_0x3bd5c0){logger[_0xa8ef('0x13')]('ShowSetting',_0x3bd5c0[_0xa8ef('0x21')],_0x5d444f);_0x2b6af3(_0x5d8ef0['error'](0x1f4,_0x3bd5c0[_0xa8ef('0x21')]));});});};
\ No newline at end of file
index ce66945..1edf34d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7fbe=['Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./smsAccount.controller','get','isAuthenticated','index','/describe','describe','/:id','/:id/dispositions','getDispositions','/:id/canned_answers','getAnswers','/:id/applications','getApplications','/:id/interactions','getInteractions','/:id/status','statusGet','/:id/users','post','create','/:id/notify','notify','put','delete','removeAnswers','path','connect-timeout','express'];(function(_0x5e1292,_0x3c9b01){var _0x473bca=function(_0x45ab25){while(--_0x45ab25){_0x5e1292['push'](_0x5e1292['shift']());}};_0x473bca(++_0x3c9b01);}(_0x7fbe,0x1ec));var _0xe7fb=function(_0x38fb8b,_0x70dd0a){_0x38fb8b=_0x38fb8b-0x0;var _0x1ec681=_0x7fbe[_0x38fb8b];return _0x1ec681;};'use strict';var multer=require('multer');var util=require('util');var path=require(_0xe7fb('0x0'));var timeout=require(_0xe7fb('0x1'));var express=require(_0xe7fb('0x2'));var router=express[_0xe7fb('0x3')]();var fs_extra=require(_0xe7fb('0x4'));var auth=require(_0xe7fb('0x5'));var interaction=require(_0xe7fb('0x6'));var config=require(_0xe7fb('0x7'));var controller=require(_0xe7fb('0x8'));router[_0xe7fb('0x9')]('/',auth[_0xe7fb('0xa')](),controller[_0xe7fb('0xb')]);router[_0xe7fb('0x9')](_0xe7fb('0xc'),auth['isAuthenticated'](),controller[_0xe7fb('0xd')]);router[_0xe7fb('0x9')](_0xe7fb('0xe'),auth[_0xe7fb('0xa')](),controller['show']);router['get'](_0xe7fb('0xf'),auth[_0xe7fb('0xa')](),controller[_0xe7fb('0x10')]);router[_0xe7fb('0x9')](_0xe7fb('0x11'),auth[_0xe7fb('0xa')](),controller[_0xe7fb('0x12')]);router[_0xe7fb('0x9')](_0xe7fb('0x13'),auth[_0xe7fb('0xa')](),controller[_0xe7fb('0x14')]);router[_0xe7fb('0x9')](_0xe7fb('0x15'),auth[_0xe7fb('0xa')](),controller[_0xe7fb('0x16')]);router['get'](_0xe7fb('0x17'),controller[_0xe7fb('0x18')]);router['get'](_0xe7fb('0x19'),auth[_0xe7fb('0xa')](),controller['getAgents']);router[_0xe7fb('0x1a')]('/',auth['isAuthenticated'](),controller[_0xe7fb('0x1b')]);router[_0xe7fb('0x1a')](_0xe7fb('0xf'),auth[_0xe7fb('0xa')](),controller['addDisposition']);router[_0xe7fb('0x1a')]('/:id/canned_answers',auth[_0xe7fb('0xa')](),controller['addAnswer']);router[_0xe7fb('0x1a')](_0xe7fb('0x1c'),controller[_0xe7fb('0x1d')]);router[_0xe7fb('0x1a')]('/:id/applications',auth[_0xe7fb('0xa')](),controller['addApplications']);router[_0xe7fb('0x1a')]('/:id/send',auth[_0xe7fb('0xa')](),controller['send']);router[_0xe7fb('0x1a')](_0xe7fb('0x17'),controller['status']);router[_0xe7fb('0x1a')](_0xe7fb('0x19'),auth[_0xe7fb('0xa')](),controller['addAgents']);router[_0xe7fb('0x1e')](_0xe7fb('0xe'),auth['isAuthenticated'](),controller['update']);router['delete'](_0xe7fb('0xe'),auth['isAuthenticated'](),controller['destroy']);router[_0xe7fb('0x1f')](_0xe7fb('0xf'),auth[_0xe7fb('0xa')](),controller['removeDispositions']);router[_0xe7fb('0x1f')](_0xe7fb('0x11'),auth[_0xe7fb('0xa')](),controller[_0xe7fb('0x20')]);router[_0xe7fb('0x1f')](_0xe7fb('0x19'),auth[_0xe7fb('0xa')](),controller['removeAgents']);module['exports']=router;
\ No newline at end of file
+var _0x53ec=['send','status','update','delete','removeDispositions','exports','multer','util','path','connect-timeout','express','Router','../../components/auth/service','../../config/environment','./smsAccount.controller','isAuthenticated','get','/describe','describe','/:id','show','/:id/dispositions','getDispositions','/:id/applications','getApplications','getInteractions','/:id/status','statusGet','/:id/users','getAgents','post','addDisposition','/:id/canned_answers','addAnswer','addApplications','/:id/send'];(function(_0x31a774,_0x4f70cb){var _0x5aeccb=function(_0x5b1c03){while(--_0x5b1c03){_0x31a774['push'](_0x31a774['shift']());}};_0x5aeccb(++_0x4f70cb);}(_0x53ec,0x192));var _0xc53e=function(_0x48dfc7,_0x28410f){_0x48dfc7=_0x48dfc7-0x0;var _0x553cbf=_0x53ec[_0x48dfc7];return _0x553cbf;};'use strict';var multer=require(_0xc53e('0x0'));var util=require(_0xc53e('0x1'));var path=require(_0xc53e('0x2'));var timeout=require(_0xc53e('0x3'));var express=require(_0xc53e('0x4'));var router=express[_0xc53e('0x5')]();var fs_extra=require('fs-extra');var auth=require(_0xc53e('0x6'));var interaction=require('../../components/interaction/service');var config=require(_0xc53e('0x7'));var controller=require(_0xc53e('0x8'));router['get']('/',auth[_0xc53e('0x9')](),controller['index']);router[_0xc53e('0xa')](_0xc53e('0xb'),auth['isAuthenticated'](),controller[_0xc53e('0xc')]);router[_0xc53e('0xa')](_0xc53e('0xd'),auth[_0xc53e('0x9')](),controller[_0xc53e('0xe')]);router[_0xc53e('0xa')](_0xc53e('0xf'),auth[_0xc53e('0x9')](),controller[_0xc53e('0x10')]);router['get']('/:id/canned_answers',auth[_0xc53e('0x9')](),controller['getAnswers']);router['get'](_0xc53e('0x11'),auth[_0xc53e('0x9')](),controller[_0xc53e('0x12')]);router[_0xc53e('0xa')]('/:id/interactions',auth['isAuthenticated'](),controller[_0xc53e('0x13')]);router[_0xc53e('0xa')](_0xc53e('0x14'),controller[_0xc53e('0x15')]);router[_0xc53e('0xa')](_0xc53e('0x16'),auth[_0xc53e('0x9')](),controller[_0xc53e('0x17')]);router[_0xc53e('0x18')]('/',auth[_0xc53e('0x9')](),controller['create']);router[_0xc53e('0x18')](_0xc53e('0xf'),auth[_0xc53e('0x9')](),controller[_0xc53e('0x19')]);router[_0xc53e('0x18')](_0xc53e('0x1a'),auth[_0xc53e('0x9')](),controller[_0xc53e('0x1b')]);router[_0xc53e('0x18')]('/:id/notify',controller['notify']);router[_0xc53e('0x18')](_0xc53e('0x11'),auth[_0xc53e('0x9')](),controller[_0xc53e('0x1c')]);router[_0xc53e('0x18')](_0xc53e('0x1d'),auth[_0xc53e('0x9')](),controller[_0xc53e('0x1e')]);router[_0xc53e('0x18')](_0xc53e('0x14'),controller[_0xc53e('0x1f')]);router[_0xc53e('0x18')](_0xc53e('0x16'),auth['isAuthenticated'](),controller['addAgents']);router['put'](_0xc53e('0xd'),auth[_0xc53e('0x9')](),controller[_0xc53e('0x20')]);router[_0xc53e('0x21')](_0xc53e('0xd'),auth['isAuthenticated'](),controller['destroy']);router[_0xc53e('0x21')]('/:id/dispositions',auth[_0xc53e('0x9')](),controller[_0xc53e('0x22')]);router[_0xc53e('0x21')](_0xc53e('0x1a'),auth[_0xc53e('0x9')](),controller['removeAnswers']);router[_0xc53e('0x21')]('/:id/users',auth['isAuthenticated'](),controller['removeAgents']);module[_0xc53e('0x23')]=router;
\ No newline at end of file
index a61017b..35f89c0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xab3c=['mandatoryDispositionPauseId','sequelize','randomstring','exports','STRING','ENUM','plivo','clickatell','bandwidth','csc','infobip','intelepeer','BOOLEAN','TEXT','Account:\x20{{account.name}}<br/>{{#queue}}Queue:\x20{{queue.name}}<br/>{{/queue}}From\x20:\x20{{from}}','INTEGER','Status\x20to\x20put\x20when\x20mandatory\x20disposition\x20is\x20enabled','Enabled/disables\x20mandatory\x20dispo\x20on\x20a\x20queue','setDataValue'];(function(_0x172bf1,_0x39a2b8){var _0xd784e6=function(_0x5954bb){while(--_0x5954bb){_0x172bf1['push'](_0x172bf1['shift']());}};_0xd784e6(++_0x39a2b8);}(_0xab3c,0x131));var _0xcab3=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0xab3c[_0x3dd15e];return _0x231fd0;};'use strict';var Sequelize=require(_0xcab3('0x0'));var rs=require(_0xcab3('0x1'));module[_0xcab3('0x2')]={'name':{'type':Sequelize[_0xcab3('0x3')],'unique':'name','allowNull':![]},'key':{'type':Sequelize[_0xcab3('0x3')],'allowNull':![]},'remote':{'type':Sequelize['STRING'],'allowNull':![]},'token':{'type':Sequelize[_0xcab3('0x3')],'defaultValue':function(){return rs['generate']();}},'phone':{'type':Sequelize[_0xcab3('0x3')]},'type':{'type':Sequelize[_0xcab3('0x4')]('twilio','skebby','connectel','clicksend',_0xcab3('0x5'),_0xcab3('0x6'),_0xcab3('0x7'),_0xcab3('0x8'),_0xcab3('0x9'),_0xcab3('0xa'))},'accountSid':{'type':Sequelize['STRING']},'authId':{'type':Sequelize['STRING']},'authToken':{'type':Sequelize[_0xcab3('0x3')]},'smsMethod':{'type':Sequelize[_0xcab3('0x4')]('SI','TI','GP')},'username':{'type':Sequelize['STRING']},'password':{'type':Sequelize[_0xcab3('0x3')]},'apiKey':{'type':Sequelize[_0xcab3('0x3')]},'applicationId':{'type':Sequelize[_0xcab3('0x3')]},'accountId':{'type':Sequelize[_0xcab3('0x3')]},'senderString':{'type':Sequelize[_0xcab3('0x3')]},'deliveryReport':{'type':Sequelize[_0xcab3('0xb')],'defaultValue':![]},'description':{'type':Sequelize[_0xcab3('0x3')]},'notificationTemplate':{'type':Sequelize[_0xcab3('0xc')],'defaultValue':function(){return _0xcab3('0xd');}},'notificationSound':{'type':Sequelize[_0xcab3('0xb')],'defaultValue':!![]},'notificationShake':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'waitForTheAssignedAgent':{'type':Sequelize[_0xcab3('0xe')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0xa},'queueTransfer':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'queueTransferTimeout':{'type':Sequelize[_0xcab3('0xe')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0x12c},'agentTransfer':{'type':Sequelize[_0xcab3('0xb')],'defaultValue':![]},'agentTransferTimeout':{'type':Sequelize[_0xcab3('0xe')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0x12c},'baseUrl':{'type':Sequelize[_0xcab3('0x3')]},'mandatoryDispositionPauseId':{'type':Sequelize[_0xcab3('0xe')],'comment':_0xcab3('0xf')},'mandatoryDisposition':{'type':Sequelize['BOOLEAN'],'defaultValue':![],'comment':_0xcab3('0x10'),'set':function(_0x5bd4b6){if(!_0x5bd4b6)this[_0xcab3('0x11')](_0xcab3('0x12'),null);this[_0xcab3('0x11')]('mandatoryDisposition',_0x5bd4b6);}}};
\ No newline at end of file
+var _0xf9af=['ENUM','BOOLEAN','TEXT','Account:\x20{{account.name}}<br/>{{#queue}}Queue:\x20{{queue.name}}<br/>{{/queue}}From\x20:\x20{{from}}','INTEGER','Status\x20to\x20put\x20when\x20mandatory\x20disposition\x20is\x20enabled','setDataValue','mandatoryDispositionPauseId','mandatoryDisposition','sequelize','STRING','name','skebby','clicksend','plivo','clickatell','bandwidth','intelepeer'];(function(_0xa970f7,_0x1ff9d6){var _0x47f18f=function(_0xf3e5c8){while(--_0xf3e5c8){_0xa970f7['push'](_0xa970f7['shift']());}};_0x47f18f(++_0x1ff9d6);}(_0xf9af,0x75));var _0xff9a=function(_0x54dc4d,_0x4df406){_0x54dc4d=_0x54dc4d-0x0;var _0x1f8f55=_0xf9af[_0x54dc4d];return _0x1f8f55;};'use strict';var Sequelize=require(_0xff9a('0x0'));var rs=require('randomstring');module['exports']={'name':{'type':Sequelize[_0xff9a('0x1')],'unique':_0xff9a('0x2'),'allowNull':![]},'key':{'type':Sequelize[_0xff9a('0x1')],'allowNull':![]},'remote':{'type':Sequelize['STRING'],'allowNull':![]},'token':{'type':Sequelize['STRING'],'defaultValue':function(){return rs['generate']();}},'phone':{'type':Sequelize[_0xff9a('0x1')]},'type':{'type':Sequelize['ENUM']('twilio',_0xff9a('0x3'),'connectel',_0xff9a('0x4'),_0xff9a('0x5'),_0xff9a('0x6'),_0xff9a('0x7'),'csc','infobip',_0xff9a('0x8'))},'accountSid':{'type':Sequelize[_0xff9a('0x1')]},'authId':{'type':Sequelize[_0xff9a('0x1')]},'authToken':{'type':Sequelize[_0xff9a('0x1')]},'smsMethod':{'type':Sequelize[_0xff9a('0x9')]('SI','TI','GP')},'username':{'type':Sequelize[_0xff9a('0x1')]},'password':{'type':Sequelize[_0xff9a('0x1')]},'apiKey':{'type':Sequelize[_0xff9a('0x1')]},'applicationId':{'type':Sequelize[_0xff9a('0x1')]},'accountId':{'type':Sequelize['STRING']},'senderString':{'type':Sequelize[_0xff9a('0x1')]},'deliveryReport':{'type':Sequelize[_0xff9a('0xa')],'defaultValue':![]},'description':{'type':Sequelize[_0xff9a('0x1')]},'notificationTemplate':{'type':Sequelize[_0xff9a('0xb')],'defaultValue':function(){return _0xff9a('0xc');}},'notificationSound':{'type':Sequelize[_0xff9a('0xa')],'defaultValue':!![]},'notificationShake':{'type':Sequelize[_0xff9a('0xa')],'defaultValue':![]},'waitForTheAssignedAgent':{'type':Sequelize[_0xff9a('0xd')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0xa},'queueTransfer':{'type':Sequelize[_0xff9a('0xa')],'defaultValue':![]},'queueTransferTimeout':{'type':Sequelize[_0xff9a('0xd')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0x12c},'agentTransfer':{'type':Sequelize[_0xff9a('0xa')],'defaultValue':![]},'agentTransferTimeout':{'type':Sequelize[_0xff9a('0xd')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0x12c},'baseUrl':{'type':Sequelize[_0xff9a('0x1')]},'mandatoryDispositionPauseId':{'type':Sequelize[_0xff9a('0xd')],'comment':_0xff9a('0xe')},'mandatoryDisposition':{'type':Sequelize[_0xff9a('0xa')],'defaultValue':![],'comment':'Enabled/disables\x20mandatory\x20dispo\x20on\x20a\x20queue','set':function(_0xb59937){if(!_0xb59937)this[_0xff9a('0xf')](_0xff9a('0x10'),null);this['setDataValue'](_0xff9a('0x11'),_0xb59937);}}};
\ No newline at end of file
index d93b6ad..4234458 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xff96=['RECEIVED_BY_RECIPIENT','DELIVRD','ACCEPTD','statusGet','state','message-id','addAgents','omit','emit','removeAgents','isArray','userSmsAccount:remove','getAgents','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','path','to-csv','ejs','fs-extra','squel','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','../../config/environment','../../config/license/util','../../mysqldb','redis','defaults','localhost','socket.io-emitter','./smsAccount.socket','register','jayson/promise','client','http','request','then','info','SmsAccount,\x20%s,\x20%s','request\x20sent','debug','SmsAccount,\x20%s,\x20%s,\x20%s','stringify','error','code','message','catch','sendStatus','status','end','undefined','limit','offset','set','Content-Range','json','reject','save','update','destroy','SmsAccounts','UserProfileResource','stack','name','send','Pause','mandatoryDispositionPause','map','rawAttributes','type','model','query','attributes','intersection','fields','length','hasOwnProperty','nolimit','order','sort','where','filters','filter','merge','VIRTUAL','options','SmsAccount','count','includeAll','include','findAll','rows','show','params','keys','find','create','body','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','get','userProfileId','autoAssociation','describe','addDisposition','SmsAccountId','getDispositions','findOne','Disposition','removeDispositions','ids','addAnswer','getAnswers','CannedAnswer','pick','removeAnswers','sms','Applications','applications','orderBy','priority','asc','CmContact','Sequelize','ValidationError','no\x20available\x20attributes','difference','createdAt','updatedAt','CompanyId','mobile','From','messageId','MessageSid','skebby','from','sender','text','connectel','message_id','plivo','Text','MessageUUID','infobip','results','csc','originatingAddress','segmentedMessage','fromNumber','bandwidth','intelepeer','from\x20is\x20mandatory','isNil','body\x20is\x20mandatory\x20and\x20not\x20empty','mapKey','mapKey\x20is\x20mandatory,\x20please\x20use\x20one\x20of\x20these:\x20','mapKey\x20invalid,\x20please\x20use\x20one\x20of\x20these:\x20','CmList','Contacts','list','contact','SmsInteraction','interaction','created','account','autoclose','push','*,*,*,*','SmsMessage','ContactId','AttachmentId','User','UserId','unshift','agent','waitForTheAssignedAgent','startRouting','Start','receiveMessage','entity\x20found','SmsAccount,\x20%s,\x20%s,\x20%s,\x20%s','twilio','Content-Type','text/xml','<?xml\x20version=\x221.0\x22\x20encoding=\x22UTF-8\x22?>\x0a<Response></Response>','addApplications','sequelize','transaction','SmsApplication','bulkCreate','getApplications','getInteractions','Contact','Owner','internal','Tag','Tags','tag','to\x20is\x20mandatory','List','DESC','ListId','out','spread','dataValues','Messages','received\x20delivery\x20report\x20from','skebby_dispatch_id','requestid','statusInt','clicksend','status_code','groupName','DELIVERED','clickatell','redif','inspect','DELIVERED_TO_GATEWAY'];(function(_0x855670,_0x4ca88a){var _0x559722=function(_0x53893c){while(--_0x53893c){_0x855670['push'](_0x855670['shift']());}};_0x559722(++_0x4ca88a);}(_0xff96,0xf3));var _0x6ff9=function(_0x41a93b,_0x2fc19d){_0x41a93b=_0x41a93b-0x0;var _0x220a7e=_0xff96[_0x41a93b];return _0x220a7e;};'use strict';var emlformat=require(_0x6ff9('0x0'));var rimraf=require(_0x6ff9('0x1'));var zipdir=require(_0x6ff9('0x2'));var jsonpatch=require(_0x6ff9('0x3'));var rp=require(_0x6ff9('0x4'));var moment=require(_0x6ff9('0x5'));var BPromise=require(_0x6ff9('0x6'));var Mustache=require(_0x6ff9('0x7'));var util=require('util');var path=require(_0x6ff9('0x8'));var sox=require('sox');var csv=require(_0x6ff9('0x9'));var ejs=require(_0x6ff9('0xa'));var fs=require('fs');var fs_extra=require(_0x6ff9('0xb'));var _=require('lodash');var squel=require(_0x6ff9('0xc'));var crypto=require('crypto');var jsforce=require(_0x6ff9('0xd'));var deskjs=require(_0x6ff9('0xe'));var toCsv=require(_0x6ff9('0x9'));var querystring=require(_0x6ff9('0xf'));var Papa=require(_0x6ff9('0x10'));var Redis=require(_0x6ff9('0x11'));var authService=require(_0x6ff9('0x12'));var qs=require(_0x6ff9('0x13'));var as=require(_0x6ff9('0x14'));var hardwareService=require('../../config/license/hardware');var logger=require(_0x6ff9('0x15'))('api');var utils=require('../../config/utils');var config=require(_0x6ff9('0x16'));var licenseUtil=require(_0x6ff9('0x17'));var db=require(_0x6ff9('0x18'))['db'];config[_0x6ff9('0x19')]=_[_0x6ff9('0x1a')](config['redis'],{'host':_0x6ff9('0x1b'),'port':0x18eb});var socket=require(_0x6ff9('0x1c'))(new Redis(config['redis']));require(_0x6ff9('0x1d'))[_0x6ff9('0x1e')](socket);var jayson=require(_0x6ff9('0x1f'));var client=jayson[_0x6ff9('0x20')][_0x6ff9('0x21')]({'port':0x232c});function respondWithRpcPromise(_0x24332c,_0x15bbcd,_0x13a4cc,_0x2119fb){return new BPromise(function(_0x5b6041,_0x354d56){var _0x4ad5fa=_0x2119fb||client;return _0x4ad5fa[_0x6ff9('0x22')](_0x24332c,_0x13a4cc)[_0x6ff9('0x23')](function(_0x3a232d){logger[_0x6ff9('0x24')](_0x6ff9('0x25'),_0x15bbcd,_0x6ff9('0x26'));logger[_0x6ff9('0x27')](_0x6ff9('0x28'),_0x15bbcd,_0x6ff9('0x26'),JSON[_0x6ff9('0x29')](_0x3a232d));if(_0x3a232d[_0x6ff9('0x2a')]){if(_0x3a232d[_0x6ff9('0x2a')][_0x6ff9('0x2b')]===0x1f4){logger[_0x6ff9('0x2a')](_0x6ff9('0x25'),_0x15bbcd,_0x3a232d[_0x6ff9('0x2a')][_0x6ff9('0x2c')]);return _0x354d56(_0x3a232d[_0x6ff9('0x2a')][_0x6ff9('0x2c')]);}logger[_0x6ff9('0x2a')]('SmsAccount,\x20%s,\x20%s',_0x15bbcd,_0x3a232d[_0x6ff9('0x2a')][_0x6ff9('0x2c')]);return _0x5b6041(_0x3a232d[_0x6ff9('0x2a')]['message']);}else{logger[_0x6ff9('0x24')]('SmsAccount,\x20%s,\x20%s',_0x15bbcd,'request\x20sent');_0x5b6041(_0x3a232d['result'][_0x6ff9('0x2c')]);}})[_0x6ff9('0x2d')](function(_0x34ef0e){logger['error'](_0x6ff9('0x25'),_0x15bbcd,_0x34ef0e);_0x354d56(_0x34ef0e);});});}function respondWithStatusCode(_0xf878c8,_0x4328b4){_0x4328b4=_0x4328b4||0xcc;return function(_0xf7e74){if(_0xf7e74){return _0xf878c8[_0x6ff9('0x2e')](_0x4328b4);}return _0xf878c8[_0x6ff9('0x2f')](_0x4328b4)[_0x6ff9('0x30')]();};}function respondWithResult(_0x215383,_0x54d71b){_0x54d71b=_0x54d71b||0xc8;return function(_0x1346df){if(_0x1346df){return _0x215383[_0x6ff9('0x2f')](_0x54d71b)['json'](_0x1346df);}};}function respondWithFilteredResult(_0x391853,_0x551f84){return function(_0x54bcb9){if(_0x54bcb9){var _0x3b301f=typeof _0x551f84['offset']===_0x6ff9('0x31')&&typeof _0x551f84[_0x6ff9('0x32')]===_0x6ff9('0x31');var _0x3a4480=_0x54bcb9['count'];var _0x2b6e82=_0x3b301f?0x0:_0x551f84['offset'];var _0x3b1b41=_0x3b301f?_0x54bcb9['count']:_0x551f84[_0x6ff9('0x33')]+_0x551f84[_0x6ff9('0x32')];var _0x32e5b4;if(_0x3b1b41>=_0x3a4480){_0x3b1b41=_0x3a4480;_0x32e5b4=0xc8;}else{_0x32e5b4=0xce;}_0x391853[_0x6ff9('0x2f')](_0x32e5b4);return _0x391853[_0x6ff9('0x34')](_0x6ff9('0x35'),_0x2b6e82+'-'+_0x3b1b41+'/'+_0x3a4480)[_0x6ff9('0x36')](_0x54bcb9);}return null;};}function patchUpdates(_0x12b9fd){return function(_0x59f32f){try{jsonpatch['apply'](_0x59f32f,_0x12b9fd,!![]);}catch(_0x33abe7){return BPromise[_0x6ff9('0x37')](_0x33abe7);}return _0x59f32f[_0x6ff9('0x38')]();};}function saveUpdates(_0x23b0a6,_0x34106e){return function(_0xa200ec){if(_0xa200ec){return _0xa200ec[_0x6ff9('0x39')](_0x23b0a6)[_0x6ff9('0x23')](function(_0x4e2219){return _0x4e2219;});}return null;};}function removeEntity(_0x24d6f8,_0x5046f0){return function(_0x103de6){if(_0x103de6){return _0x103de6[_0x6ff9('0x3a')]()[_0x6ff9('0x23')](function(){var _0x4c9548=_0x103de6['get']({'plain':!![]});var _0x592c92=_0x6ff9('0x3b');return db[_0x6ff9('0x3c')][_0x6ff9('0x3a')]({'where':{'type':_0x592c92,'resourceId':_0x4c9548['id']}})[_0x6ff9('0x23')](function(){return _0x103de6;});})[_0x6ff9('0x23')](function(){_0x24d6f8['status'](0xcc)[_0x6ff9('0x30')]();});}};}function handleEntityNotFound(_0x124ab0,_0x3730cd){return function(_0x4a62ba){if(!_0x4a62ba){_0x124ab0[_0x6ff9('0x2e')](0x194);}return _0x4a62ba;};}function handleError(_0x5c4b57,_0xfa48ac){_0xfa48ac=_0xfa48ac||0x1f4;return function(_0x17247f){logger[_0x6ff9('0x2a')](_0x17247f[_0x6ff9('0x3d')]);if(_0x17247f[_0x6ff9('0x3e')]){delete _0x17247f['name'];}_0x5c4b57[_0x6ff9('0x2f')](_0xfa48ac)[_0x6ff9('0x3f')](_0x17247f);};}exports['index']=function(_0xda8f44,_0x3f71c0){var _0x298392={'include':[{'model':db[_0x6ff9('0x40')],'as':_0x6ff9('0x41')}]},_0x677dae={},_0x30a519={'count':0x0,'rows':[]};var _0x308ab1=_[_0x6ff9('0x42')](db['SmsAccount'][_0x6ff9('0x43')],function(_0x465baf){return{'name':_0x465baf['fieldName'],'type':_0x465baf[_0x6ff9('0x44')]['key']};});_0x677dae[_0x6ff9('0x45')]=_[_0x6ff9('0x42')](_0x308ab1,_0x6ff9('0x3e'));_0x677dae['query']=_['keys'](_0xda8f44[_0x6ff9('0x46')]);_0x677dae['filters']=_['intersection'](_0x677dae[_0x6ff9('0x45')],_0x677dae[_0x6ff9('0x46')]);_0x298392[_0x6ff9('0x47')]=_[_0x6ff9('0x48')](_0x677dae['model'],qs[_0x6ff9('0x49')](_0xda8f44[_0x6ff9('0x46')]['fields']));_0x298392['attributes']=_0x298392[_0x6ff9('0x47')][_0x6ff9('0x4a')]?_0x298392['attributes']:_0x677dae[_0x6ff9('0x45')];if(!_0xda8f44[_0x6ff9('0x46')][_0x6ff9('0x4b')](_0x6ff9('0x4c'))){_0x298392['limit']=qs[_0x6ff9('0x32')](_0xda8f44[_0x6ff9('0x46')][_0x6ff9('0x32')]);_0x298392[_0x6ff9('0x33')]=qs[_0x6ff9('0x33')](_0xda8f44[_0x6ff9('0x46')][_0x6ff9('0x33')]);}_0x298392[_0x6ff9('0x4d')]=qs[_0x6ff9('0x4e')](_0xda8f44[_0x6ff9('0x46')][_0x6ff9('0x4e')]);_0x298392[_0x6ff9('0x4f')]=qs[_0x6ff9('0x50')](_['pick'](_0xda8f44[_0x6ff9('0x46')],_0x677dae[_0x6ff9('0x50')]),_0x308ab1);if(_0xda8f44[_0x6ff9('0x46')][_0x6ff9('0x51')]){_0x298392[_0x6ff9('0x4f')]=_[_0x6ff9('0x52')](_0x298392[_0x6ff9('0x4f')],{'$or':_[_0x6ff9('0x42')](_0x308ab1,function(_0x521c5e){if(_0x521c5e[_0x6ff9('0x44')]!==_0x6ff9('0x53')){var _0x5baee3={};_0x5baee3[_0x521c5e[_0x6ff9('0x3e')]]={'$like':'%'+_0xda8f44[_0x6ff9('0x46')]['filter']+'%'};return _0x5baee3;}})});}_0x298392=_[_0x6ff9('0x52')]({},_0x298392,_0xda8f44[_0x6ff9('0x54')]);var _0x278ece={'where':_0x298392[_0x6ff9('0x4f')]};return db[_0x6ff9('0x55')][_0x6ff9('0x56')](_0x278ece)[_0x6ff9('0x23')](function(_0x264bd8){_0x30a519[_0x6ff9('0x56')]=_0x264bd8;if(_0xda8f44[_0x6ff9('0x46')][_0x6ff9('0x57')]){_0x298392[_0x6ff9('0x58')]=[{'all':!![]}];}return db[_0x6ff9('0x55')][_0x6ff9('0x59')](_0x298392);})['then'](function(_0x27df77){_0x30a519[_0x6ff9('0x5a')]=_0x27df77;return _0x30a519;})[_0x6ff9('0x23')](respondWithFilteredResult(_0x3f71c0,_0x298392))['catch'](handleError(_0x3f71c0,null));};exports[_0x6ff9('0x5b')]=function(_0x3f4a4e,_0x44dbd4){var _0x139138={'raw':![],'where':{'id':_0x3f4a4e[_0x6ff9('0x5c')]['id']},'include':[{'model':db[_0x6ff9('0x40')],'as':_0x6ff9('0x41')}]},_0x1683c5={};_0x1683c5[_0x6ff9('0x45')]=_[_0x6ff9('0x5d')](db[_0x6ff9('0x55')][_0x6ff9('0x43')]);_0x1683c5['query']=_[_0x6ff9('0x5d')](_0x3f4a4e[_0x6ff9('0x46')]);_0x1683c5[_0x6ff9('0x50')]=_[_0x6ff9('0x48')](_0x1683c5['model'],_0x1683c5['query']);_0x139138[_0x6ff9('0x47')]=_[_0x6ff9('0x48')](_0x1683c5[_0x6ff9('0x45')],qs['fields'](_0x3f4a4e[_0x6ff9('0x46')][_0x6ff9('0x49')]));_0x139138[_0x6ff9('0x47')]=_0x139138[_0x6ff9('0x47')][_0x6ff9('0x4a')]?_0x139138[_0x6ff9('0x47')]:_0x1683c5[_0x6ff9('0x45')];if(_0x3f4a4e['query'][_0x6ff9('0x57')]){_0x139138[_0x6ff9('0x58')]=[{'all':!![]}];}_0x139138=_[_0x6ff9('0x52')]({},_0x139138,_0x3f4a4e[_0x6ff9('0x54')]);return db[_0x6ff9('0x55')][_0x6ff9('0x5e')](_0x139138)[_0x6ff9('0x23')](handleEntityNotFound(_0x44dbd4,null))[_0x6ff9('0x23')](respondWithResult(_0x44dbd4,null))[_0x6ff9('0x2d')](handleError(_0x44dbd4,null));};exports[_0x6ff9('0x5f')]=function(_0x5e02ac,_0x5e3b87){return db[_0x6ff9('0x55')][_0x6ff9('0x5f')](_0x5e02ac[_0x6ff9('0x60')],{})[_0x6ff9('0x23')](function(_0x4e1616){var _0x4f2e8d=_0x5e02ac[_0x6ff9('0x61')]['get']({'plain':!![]});if(!_0x4f2e8d)throw new Error(_0x6ff9('0x62'));if(_0x4f2e8d['role']===_0x6ff9('0x61')){var _0x5f4b53=_0x4e1616[_0x6ff9('0x63')]({'plain':!![]});var _0x5e7c4f=_0x6ff9('0x3b');return db['UserProfileSection'][_0x6ff9('0x5e')]({'where':{'name':_0x5e7c4f,'userProfileId':_0x4f2e8d[_0x6ff9('0x64')]},'raw':!![]})[_0x6ff9('0x23')](function(_0x36e2d7){if(_0x36e2d7&&_0x36e2d7[_0x6ff9('0x65')]===0x0){return db['UserProfileResource'][_0x6ff9('0x5f')]({'name':_0x5f4b53[_0x6ff9('0x3e')],'resourceId':_0x5f4b53['id'],'type':_0x36e2d7[_0x6ff9('0x3e')],'sectionId':_0x36e2d7['id']},{})[_0x6ff9('0x23')](function(){return _0x4e1616;});}else{return _0x4e1616;}})[_0x6ff9('0x2d')](function(_0x30a1cb){logger['error']('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0x30a1cb);throw _0x30a1cb;});}return _0x4e1616;})[_0x6ff9('0x23')](respondWithResult(_0x5e3b87,0xc9))['catch'](handleError(_0x5e3b87,null));};exports['update']=function(_0x3760a5,_0x412b33){if(_0x3760a5['body']['id']){delete _0x3760a5[_0x6ff9('0x60')]['id'];}return db[_0x6ff9('0x55')]['find']({'where':{'id':_0x3760a5[_0x6ff9('0x5c')]['id']},'include':[{'model':db['Pause'],'as':'mandatoryDispositionPause'}]})[_0x6ff9('0x23')](handleEntityNotFound(_0x412b33,null))[_0x6ff9('0x23')](saveUpdates(_0x3760a5[_0x6ff9('0x60')],null))[_0x6ff9('0x23')](respondWithResult(_0x412b33,null))[_0x6ff9('0x2d')](handleError(_0x412b33,null));};exports[_0x6ff9('0x3a')]=function(_0x26a58a,_0x4b303e){return db['SmsAccount'][_0x6ff9('0x5e')]({'where':{'id':_0x26a58a['params']['id']}})[_0x6ff9('0x23')](handleEntityNotFound(_0x4b303e,null))[_0x6ff9('0x23')](removeEntity(_0x4b303e,null))[_0x6ff9('0x2d')](handleError(_0x4b303e,null));};exports[_0x6ff9('0x66')]=function(_0x21ab68,_0x522a7f){return db['SmsAccount'][_0x6ff9('0x66')]()[_0x6ff9('0x23')](respondWithResult(_0x522a7f,null))['catch'](handleError(_0x522a7f,null));};exports[_0x6ff9('0x67')]=function(_0x51c958,_0x512c64,_0xdc1793){if(_0x51c958[_0x6ff9('0x60')]['id']){delete _0x51c958[_0x6ff9('0x60')]['id'];}return db[_0x6ff9('0x55')][_0x6ff9('0x5e')]({'where':{'id':_0x51c958[_0x6ff9('0x5c')]['id']}})[_0x6ff9('0x23')](handleEntityNotFound(_0x512c64,null))[_0x6ff9('0x23')](function(_0x1b161c){if(_0x1b161c){_0x51c958[_0x6ff9('0x60')][_0x6ff9('0x68')]=_0x1b161c['id'];return db['Disposition'][_0x6ff9('0x5f')](_0x51c958[_0x6ff9('0x60')]);}})[_0x6ff9('0x23')](respondWithResult(_0x512c64,null))[_0x6ff9('0x2d')](handleError(_0x512c64,null));};exports[_0x6ff9('0x69')]=function(_0x322341,_0x3e3956,_0x4d08fd){var _0x355749={'raw':![],'where':{}};var _0x4cf71c={};var _0xddf867={'count':0x0,'rows':[]};return db[_0x6ff9('0x55')][_0x6ff9('0x6a')]({'where':{'id':_0x322341[_0x6ff9('0x5c')]['id']}})['then'](handleEntityNotFound(_0x3e3956,null))[_0x6ff9('0x23')](function(_0x34857f){if(_0x34857f){_0x4cf71c[_0x6ff9('0x45')]=_[_0x6ff9('0x5d')](db[_0x6ff9('0x6b')][_0x6ff9('0x43')]);_0x4cf71c[_0x6ff9('0x46')]=_[_0x6ff9('0x5d')](_0x322341[_0x6ff9('0x46')]);_0x4cf71c[_0x6ff9('0x50')]=_[_0x6ff9('0x48')](_0x4cf71c['model'],_0x4cf71c[_0x6ff9('0x46')]);_0x355749['attributes']=_[_0x6ff9('0x48')](_0x4cf71c[_0x6ff9('0x45')],qs['fields'](_0x322341['query'][_0x6ff9('0x49')]));_0x355749[_0x6ff9('0x47')]=_0x355749[_0x6ff9('0x47')][_0x6ff9('0x4a')]?_0x355749[_0x6ff9('0x47')]:_0x4cf71c[_0x6ff9('0x45')];if(!_0x322341['query'][_0x6ff9('0x4b')](_0x6ff9('0x4c'))){_0x355749[_0x6ff9('0x32')]=qs[_0x6ff9('0x32')](_0x322341[_0x6ff9('0x46')][_0x6ff9('0x32')]);_0x355749[_0x6ff9('0x33')]=qs[_0x6ff9('0x33')](_0x322341[_0x6ff9('0x46')][_0x6ff9('0x33')]);}_0x355749[_0x6ff9('0x4d')]=qs['sort'](_0x322341[_0x6ff9('0x46')]['sort']);_0x355749['where']=qs[_0x6ff9('0x50')](_['pick'](_0x322341['query'],_0x4cf71c[_0x6ff9('0x50')]));_0x355749[_0x6ff9('0x4f')][_0x6ff9('0x68')]=_0x34857f['id'];if(_0x322341[_0x6ff9('0x46')][_0x6ff9('0x51')]){_0x355749[_0x6ff9('0x4f')]=_[_0x6ff9('0x52')](_0x355749['where'],{'$or':_[_0x6ff9('0x42')](_0x355749[_0x6ff9('0x47')],function(_0x521694){var _0x4590c2={};_0x4590c2[_0x521694]={'$like':'%'+_0x322341[_0x6ff9('0x46')]['filter']+'%'};return _0x4590c2;})});}_0x355749=_[_0x6ff9('0x52')]({},_0x355749,_0x322341[_0x6ff9('0x54')]);return db[_0x6ff9('0x6b')]['count']({'where':_0x355749[_0x6ff9('0x4f')]})[_0x6ff9('0x23')](function(_0x560ab8){_0xddf867[_0x6ff9('0x56')]=_0x560ab8;if(_0x322341[_0x6ff9('0x46')][_0x6ff9('0x57')]){_0x355749['include']=[{'all':!![]}];}return db[_0x6ff9('0x6b')]['findAll'](_0x355749);})[_0x6ff9('0x23')](function(_0x57e4a8){_0xddf867[_0x6ff9('0x5a')]=_0x57e4a8;return _0xddf867;});}})['then'](respondWithFilteredResult(_0x3e3956,_0x355749))[_0x6ff9('0x2d')](handleError(_0x3e3956,null));};exports[_0x6ff9('0x6c')]=function(_0x45bd7b,_0x3e45c0,_0x11dd3f){return db[_0x6ff9('0x55')][_0x6ff9('0x5e')]({'where':{'id':_0x45bd7b[_0x6ff9('0x5c')]['id']}})[_0x6ff9('0x23')](handleEntityNotFound(_0x3e45c0,null))[_0x6ff9('0x23')](function(_0x1a66a7){if(_0x1a66a7){return _0x1a66a7['removeDispositions'](_0x45bd7b['query'][_0x6ff9('0x6d')]);}})[_0x6ff9('0x23')](respondWithStatusCode(_0x3e45c0,null))[_0x6ff9('0x2d')](handleError(_0x3e45c0,null));};exports[_0x6ff9('0x6e')]=function(_0x2ec38f,_0x45d904,_0x4c210a){if(_0x2ec38f[_0x6ff9('0x60')]['id']){delete _0x2ec38f[_0x6ff9('0x60')]['id'];}return db[_0x6ff9('0x55')][_0x6ff9('0x5e')]({'where':{'id':_0x2ec38f[_0x6ff9('0x5c')]['id']}})[_0x6ff9('0x23')](handleEntityNotFound(_0x45d904,null))[_0x6ff9('0x23')](function(_0x3f6320){if(_0x3f6320){_0x2ec38f['body']['SmsAccountId']=_0x3f6320['id'];return db['CannedAnswer'][_0x6ff9('0x5f')](_0x2ec38f[_0x6ff9('0x60')]);}})[_0x6ff9('0x23')](respondWithResult(_0x45d904,null))[_0x6ff9('0x2d')](handleError(_0x45d904,null));};exports[_0x6ff9('0x6f')]=function(_0xe9b16e,_0x1d62d8,_0x221c01){var _0x3ee773={'raw':![],'where':{}};var _0x4da47b={};var _0x4071b6={'count':0x0,'rows':[]};return db['SmsAccount']['findOne']({'where':{'id':_0xe9b16e[_0x6ff9('0x5c')]['id']}})[_0x6ff9('0x23')](handleEntityNotFound(_0x1d62d8,null))[_0x6ff9('0x23')](function(_0xe0eca7){if(_0xe0eca7){_0x4da47b[_0x6ff9('0x45')]=_[_0x6ff9('0x5d')](db[_0x6ff9('0x70')]['rawAttributes']);_0x4da47b['query']=_[_0x6ff9('0x5d')](_0xe9b16e[_0x6ff9('0x46')]);_0x4da47b[_0x6ff9('0x50')]=_[_0x6ff9('0x48')](_0x4da47b[_0x6ff9('0x45')],_0x4da47b['query']);_0x3ee773[_0x6ff9('0x47')]=_[_0x6ff9('0x48')](_0x4da47b[_0x6ff9('0x45')],qs[_0x6ff9('0x49')](_0xe9b16e[_0x6ff9('0x46')]['fields']));_0x3ee773[_0x6ff9('0x47')]=_0x3ee773[_0x6ff9('0x47')][_0x6ff9('0x4a')]?_0x3ee773[_0x6ff9('0x47')]:_0x4da47b['model'];if(!_0xe9b16e['query'][_0x6ff9('0x4b')](_0x6ff9('0x4c'))){_0x3ee773[_0x6ff9('0x32')]=qs['limit'](_0xe9b16e[_0x6ff9('0x46')]['limit']);_0x3ee773['offset']=qs[_0x6ff9('0x33')](_0xe9b16e['query'][_0x6ff9('0x33')]);}_0x3ee773[_0x6ff9('0x4d')]=qs[_0x6ff9('0x4e')](_0xe9b16e[_0x6ff9('0x46')]['sort']);_0x3ee773[_0x6ff9('0x4f')]=qs[_0x6ff9('0x50')](_[_0x6ff9('0x71')](_0xe9b16e[_0x6ff9('0x46')],_0x4da47b['filters']));_0x3ee773[_0x6ff9('0x4f')]['SmsAccountId']=_0xe0eca7['id'];if(_0xe9b16e[_0x6ff9('0x46')]['filter']){_0x3ee773['where']=_['merge'](_0x3ee773['where'],{'$or':_[_0x6ff9('0x42')](_0x3ee773[_0x6ff9('0x47')],function(_0x52d263){var _0x283e2d={};_0x283e2d[_0x52d263]={'$like':'%'+_0xe9b16e['query'][_0x6ff9('0x51')]+'%'};return _0x283e2d;})});}_0x3ee773=_[_0x6ff9('0x52')]({},_0x3ee773,_0xe9b16e[_0x6ff9('0x54')]);return db[_0x6ff9('0x70')][_0x6ff9('0x56')]({'where':_0x3ee773[_0x6ff9('0x4f')]})[_0x6ff9('0x23')](function(_0x2887c7){_0x4071b6[_0x6ff9('0x56')]=_0x2887c7;if(_0xe9b16e['query'][_0x6ff9('0x57')]){_0x3ee773[_0x6ff9('0x58')]=[{'all':!![]}];}return db[_0x6ff9('0x70')]['findAll'](_0x3ee773);})['then'](function(_0x23b8cf){_0x4071b6[_0x6ff9('0x5a')]=_0x23b8cf;return _0x4071b6;});}})[_0x6ff9('0x23')](respondWithFilteredResult(_0x1d62d8,_0x3ee773))[_0x6ff9('0x2d')](handleError(_0x1d62d8,null));};exports[_0x6ff9('0x72')]=function(_0xcc3de9,_0x535858,_0x3ee5aa){return db[_0x6ff9('0x55')][_0x6ff9('0x5e')]({'where':{'id':_0xcc3de9[_0x6ff9('0x5c')]['id']}})[_0x6ff9('0x23')](handleEntityNotFound(_0x535858,null))[_0x6ff9('0x23')](function(_0x13b3be){if(_0x13b3be){return _0x13b3be['removeAnswers'](_0xcc3de9[_0x6ff9('0x46')][_0x6ff9('0x6d')]);}})[_0x6ff9('0x23')](respondWithStatusCode(_0x535858,null))['catch'](handleError(_0x535858,null));};exports['notify']=function(_0x134eee,_0x1edbaa,_0x1e6092){var _0x2640d5={'channel':_0x6ff9('0x73')};var _0x3a2cd7=[];var _0x1ac930=[];var _0x4cdbc7={};return db['SmsAccount'][_0x6ff9('0x5e')]({'where':{'id':_0x134eee[_0x6ff9('0x5c')]['id']},'include':[{'model':db['SmsApplication'],'as':_0x6ff9('0x74')}]})[_0x6ff9('0x23')](handleEntityNotFound(_0x1edbaa,null))[_0x6ff9('0x23')](function(_0x3c9893){_0x2640d5['account']=_0x3c9893;_0x2640d5[_0x6ff9('0x75')]=_[_0x6ff9('0x76')](_0x3c9893['Applications'],[_0x6ff9('0x77')],[_0x6ff9('0x78')]);if(_0x2640d5['account']['Applications']){delete _0x2640d5['account'][_0x6ff9('0x74')];}return db[_0x6ff9('0x79')][_0x6ff9('0x66')]();})[_0x6ff9('0x23')](function(_0xd02583){if(!_0xd02583){throw new db[(_0x6ff9('0x7a'))][(_0x6ff9('0x7b'))](_0x6ff9('0x7c'));}_0x3a2cd7=_[_0x6ff9('0x7d')](_[_0x6ff9('0x5d')](_0xd02583),['createdAt','updatedAt']);_0x1ac930=_[_0x6ff9('0x7d')](_[_0x6ff9('0x5d')](_0xd02583),[_0x6ff9('0x7e'),_0x6ff9('0x7f'),_0x6ff9('0x80'),'ListId']);_0x2640d5[_0x6ff9('0x60')]={'mapKey':_0x6ff9('0x81')};if(_0x2640d5['account'][_0x6ff9('0x44')]){switch(_0x2640d5['account'][_0x6ff9('0x44')]){case'twilio':_0x2640d5['body']['from']=_0x134eee[_0x6ff9('0x60')][_0x6ff9('0x82')];_0x2640d5[_0x6ff9('0x60')][_0x6ff9('0x60')]=_0x134eee[_0x6ff9('0x60')]['Body'];_0x2640d5[_0x6ff9('0x60')][_0x6ff9('0x83')]=_0x134eee[_0x6ff9('0x60')][_0x6ff9('0x84')];break;case _0x6ff9('0x85'):_0x2640d5[_0x6ff9('0x60')][_0x6ff9('0x86')]='+'+_0x134eee[_0x6ff9('0x60')][_0x6ff9('0x87')];_0x2640d5['body'][_0x6ff9('0x60')]=_0x134eee[_0x6ff9('0x60')][_0x6ff9('0x88')];break;case _0x6ff9('0x89'):_0x2640d5[_0x6ff9('0x60')][_0x6ff9('0x86')]=_0x134eee[_0x6ff9('0x60')][_0x6ff9('0x86')];_0x2640d5['body']['body']=_0x134eee[_0x6ff9('0x60')][_0x6ff9('0x2c')];break;case'clicksend':_0x2640d5[_0x6ff9('0x60')][_0x6ff9('0x86')]=_0x134eee[_0x6ff9('0x60')]['from'];_0x2640d5['body'][_0x6ff9('0x60')]=_0x134eee[_0x6ff9('0x60')][_0x6ff9('0x60')];_0x2640d5['body'][_0x6ff9('0x83')]=_0x134eee[_0x6ff9('0x60')][_0x6ff9('0x8a')];break;case _0x6ff9('0x8b'):_0x2640d5[_0x6ff9('0x60')]['from']=_0x134eee[_0x6ff9('0x60')][_0x6ff9('0x82')];_0x2640d5[_0x6ff9('0x60')]['body']=_0x134eee[_0x6ff9('0x60')][_0x6ff9('0x8c')];_0x2640d5[_0x6ff9('0x60')][_0x6ff9('0x83')]=_0x134eee[_0x6ff9('0x60')][_0x6ff9('0x8d')];break;case _0x6ff9('0x8e'):_0x2640d5[_0x6ff9('0x60')][_0x6ff9('0x86')]='+'+_0x134eee[_0x6ff9('0x60')][_0x6ff9('0x8f')][0x0][_0x6ff9('0x86')];_0x2640d5[_0x6ff9('0x60')]['body']=_0x134eee[_0x6ff9('0x60')][_0x6ff9('0x8f')][0x0][_0x6ff9('0x88')];_0x2640d5['body'][_0x6ff9('0x83')]=_0x134eee[_0x6ff9('0x60')][_0x6ff9('0x8f')][0x0][_0x6ff9('0x83')];break;case _0x6ff9('0x90'):_0x2640d5[_0x6ff9('0x60')][_0x6ff9('0x86')]=_0x134eee[_0x6ff9('0x60')][_0x6ff9('0x91')];_0x2640d5[_0x6ff9('0x60')]['body']=_0x134eee[_0x6ff9('0x60')][_0x6ff9('0x92')][_0x6ff9('0x2c')];break;case'clickatell':_0x2640d5[_0x6ff9('0x60')][_0x6ff9('0x86')]=_0x134eee[_0x6ff9('0x60')][_0x6ff9('0x93')];_0x2640d5[_0x6ff9('0x60')]['body']=_0x134eee['body'][_0x6ff9('0x88')];_0x2640d5['body'][_0x6ff9('0x83')]=_0x134eee['body']['replyMessageId'];break;case _0x6ff9('0x94'):_0x2640d5[_0x6ff9('0x60')]['messageId']=_0x134eee[_0x6ff9('0x60')][0x0][_0x6ff9('0x2c')]['id'];_0x2640d5[_0x6ff9('0x60')][_0x6ff9('0x86')]=_0x134eee['body'][0x0][_0x6ff9('0x2c')][_0x6ff9('0x86')];_0x2640d5[_0x6ff9('0x60')]['body']=_0x134eee[_0x6ff9('0x60')][0x0][_0x6ff9('0x2c')][_0x6ff9('0x88')];break;case _0x6ff9('0x95'):_0x2640d5[_0x6ff9('0x60')][_0x6ff9('0x86')]=_0x134eee[_0x6ff9('0x60')][_0x6ff9('0x86')];_0x2640d5[_0x6ff9('0x60')][_0x6ff9('0x60')]=_0x134eee[_0x6ff9('0x60')]['message'];_0x2640d5[_0x6ff9('0x60')][_0x6ff9('0x83')]=_0x134eee[_0x6ff9('0x60')]['refid'];break;}}if(_0x2640d5[_0x6ff9('0x60')]['id']){delete _0x2640d5[_0x6ff9('0x60')]['id'];}if(_['isNil'](_0x2640d5['body']['from'])){throw new db[(_0x6ff9('0x7a'))]['ValidationError'](_0x6ff9('0x96'));}if(_[_0x6ff9('0x97')](_0x2640d5[_0x6ff9('0x60')][_0x6ff9('0x60')])||_0x2640d5['body'][_0x6ff9('0x60')]===''){throw new db[(_0x6ff9('0x7a'))][(_0x6ff9('0x7b'))](_0x6ff9('0x98'));}if(_['isNil'](_0x2640d5['body'][_0x6ff9('0x99')])){throw new db['Sequelize'][(_0x6ff9('0x7b'))](_0x6ff9('0x9a')+_0x1ac930);}if(!_['includes'](_0x1ac930,_0x2640d5[_0x6ff9('0x60')][_0x6ff9('0x99')])){throw new db[(_0x6ff9('0x7a'))][(_0x6ff9('0x7b'))](_0x6ff9('0x9b')+_0x1ac930);}_0x4cdbc7[_0x2640d5[_0x6ff9('0x60')][_0x6ff9('0x99')]]=_0x2640d5[_0x6ff9('0x60')][_0x6ff9('0x86')];return db[_0x6ff9('0x9c')][_0x6ff9('0x5e')]({'where':{'id':_0x2640d5['account']['ListId']},'include':[{'model':db[_0x6ff9('0x79')],'as':_0x6ff9('0x9d'),'where':_0x4cdbc7,'limit':0x1,'order':[[_0x6ff9('0x7f'),'DESC']]}]});})[_0x6ff9('0x23')](handleEntityNotFound(_0x1edbaa,null))[_0x6ff9('0x23')](function(_0x1a6a25){if(_0x1a6a25){_0x2640d5[_0x6ff9('0x9e')]=_['omit'](_0x1a6a25,[_0x6ff9('0x9d')]);if(_0x1a6a25[_0x6ff9('0x9d')]['length']){return _0x1a6a25[_0x6ff9('0x9d')][0x0];}var _0x574b4b=_[_0x6ff9('0x1a')](_0x2640d5[_0x6ff9('0x60')],{'firstName':_0x2640d5[_0x6ff9('0x60')][_0x6ff9('0x86')],'ListId':_0x1a6a25['id']});_0x574b4b[_0x2640d5['body'][_0x6ff9('0x99')]]=_0x2640d5[_0x6ff9('0x60')][_0x6ff9('0x86')];return db[_0x6ff9('0x79')][_0x6ff9('0x5f')](_0x574b4b,{'fields':_0x3a2cd7,'raw':!![]});}})['then'](handleEntityNotFound(_0x1edbaa,null))[_0x6ff9('0x23')](function(_0x50d880){if(_0x50d880){_0x2640d5[_0x6ff9('0x9f')]=_0x50d880;var _0x3680ed={'ContactId':_0x50d880['id'],'phone':_0x2640d5[_0x6ff9('0x60')]['from'],'SmsAccountId':_0x134eee[_0x6ff9('0x5c')]['id']};var _0x6ad96b={'ContactId':_0x50d880['id'],'SmsAccountId':_0x134eee[_0x6ff9('0x5c')]['id'],'closed':![]};return db[_0x6ff9('0xa0')][_0x6ff9('0x5e')]({'where':_0x6ad96b})[_0x6ff9('0x23')](function(_0x1a2959){if(_0x1a2959){return[_0x1a2959,![]];}return db[_0x6ff9('0xa0')][_0x6ff9('0x5f')](_0x3680ed)[_0x6ff9('0x23')](function(_0x58a940){return[_0x58a940,!![]];});});}})['spread'](function(_0x279d83,_0x489073){_0x2640d5[_0x6ff9('0xa1')]=_0x279d83[_0x6ff9('0x63')]({'plain':!![]});_0x2640d5[_0x6ff9('0xa1')][_0x6ff9('0xa2')]=![];if(_0x489073){if(_0x2640d5[_0x6ff9('0xa3')][_0x6ff9('0xa4')]){_0x2640d5[_0x6ff9('0x75')][_0x6ff9('0xa5')]({'id':0x0,'priority':_0x2640d5[_0x6ff9('0x75')][_0x6ff9('0x4a')]+0x1,'app':'close','appdata':'unmanaged','interval':_0x6ff9('0xa6')});}_0x2640d5[_0x6ff9('0xa1')][_0x6ff9('0xa2')]=!![];}return db[_0x6ff9('0xa7')][_0x6ff9('0x5f')]({'phone':_0x2640d5[_0x6ff9('0x60')][_0x6ff9('0x86')],'messageId':_0x2640d5[_0x6ff9('0x60')]['messageId'],'body':_0x2640d5['body'][_0x6ff9('0x60')],'SmsAccountId':_0x134eee[_0x6ff9('0x5c')]['id'],'SmsInteractionId':_0x279d83['id'],'direction':'in','ContactId':_0x279d83[_0x6ff9('0xa8')],'AttachmentId':_0x2640d5[_0x6ff9('0x60')][_0x6ff9('0xa9')]});})[_0x6ff9('0x23')](function(_0x57296c){_0x2640d5[_0x6ff9('0x2c')]=_0x57296c;if(_0x2640d5[_0x6ff9('0xa1')]['UserId']){return db[_0x6ff9('0xaa')][_0x6ff9('0x5e')]({'attributes':['id',_0x6ff9('0x3e')],'where':{'id':_0x2640d5[_0x6ff9('0xa1')][_0x6ff9('0xab')]}})[_0x6ff9('0x23')](function(_0x422df1){if(_0x422df1){_0x2640d5[_0x6ff9('0x75')][_0x6ff9('0xac')]({'id':0x0,'priority':0x0,'app':_0x6ff9('0xad'),'appdata':_0x422df1[_0x6ff9('0x3e')]+','+(_0x2640d5[_0x6ff9('0xa3')][_0x6ff9('0xae')]||0xa),'interval':_0x6ff9('0xa6')});}return respondWithRpcPromise('Start',_0x6ff9('0xaf'),_0x2640d5);});}return respondWithRpcPromise(_0x6ff9('0xb0'),_0x6ff9('0xaf'),_0x2640d5);})[_0x6ff9('0x23')](function(_0x4f37cb){if(_0x4f37cb){var _0xf426c9=0xc8;var _0x4f6b83=_0x6ff9('0xb1');logger['info'](_0x6ff9('0x28'),_0x4f6b83,_0xf426c9,_0x6ff9('0xb2'));logger[_0x6ff9('0x27')](_0x6ff9('0xb3'),_0x4f6b83,_0xf426c9,'entity\x20found',JSON[_0x6ff9('0x29')](_0x4f37cb));if(_0x2640d5[_0x6ff9('0xa3')][_0x6ff9('0x44')]===_0x6ff9('0xb4')){return _0x1edbaa[_0x6ff9('0x2f')](_0xf426c9)[_0x6ff9('0x34')](_0x6ff9('0xb5'),_0x6ff9('0xb6'))[_0x6ff9('0x3f')](_0x6ff9('0xb7'));}else{return _0x1edbaa[_0x6ff9('0x2f')](_0xf426c9)['json'](_0x4f37cb);}}})[_0x6ff9('0x2d')](handleError(_0x1edbaa,null));};exports[_0x6ff9('0xb8')]=function(_0x746121,_0x3edb76,_0x3861cf){return db['SmsAccount']['findOne']({'where':{'id':_0x746121[_0x6ff9('0x5c')]['id']}})[_0x6ff9('0x23')](handleEntityNotFound(_0x3edb76,null))[_0x6ff9('0x23')](function(_0x544aa9){if(_0x544aa9){return db[_0x6ff9('0xb9')][_0x6ff9('0xba')](function(_0x51780b){return db[_0x6ff9('0xbb')][_0x6ff9('0x3a')]({'where':{'SmsAccountId':_0x746121['params']['id']},'transaction':_0x51780b})[_0x6ff9('0x23')](function(_0x33a646){var _0x803b9b=_['map'](_0x746121[_0x6ff9('0x60')],function(_0x67fcc5){_0x67fcc5[_0x6ff9('0x68')]=_0x746121[_0x6ff9('0x5c')]['id'];return _0x67fcc5;});return db[_0x6ff9('0xbb')][_0x6ff9('0xbc')](_0x803b9b,{'transaction':_0x51780b});});})['then'](function(){return db[_0x6ff9('0xbb')]['findAndCountAll']({'where':{'SmsAccountId':_0x746121[_0x6ff9('0x5c')]['id']},'order':_0x6ff9('0x77')});});}})[_0x6ff9('0x23')](respondWithResult(_0x3edb76,null))[_0x6ff9('0x2d')](handleError(_0x3edb76,null));};exports[_0x6ff9('0xbd')]=function(_0x5a2d75,_0x1345d5,_0x426711){var _0x264f2c={};var _0x21e743={};var _0x22f07a;var _0x173bcf;return db[_0x6ff9('0x55')]['findOne']({'where':{'id':_0x5a2d75[_0x6ff9('0x5c')]['id']}})[_0x6ff9('0x23')](handleEntityNotFound(_0x1345d5,null))[_0x6ff9('0x23')](function(_0x1d1459){if(_0x1d1459){_0x22f07a=_0x1d1459;_0x21e743['model']=_[_0x6ff9('0x5d')](db[_0x6ff9('0xbb')]['rawAttributes']);_0x21e743[_0x6ff9('0x46')]=_[_0x6ff9('0x5d')](_0x5a2d75[_0x6ff9('0x46')]);_0x21e743[_0x6ff9('0x50')]=_[_0x6ff9('0x48')](_0x21e743[_0x6ff9('0x45')],_0x21e743[_0x6ff9('0x46')]);_0x264f2c[_0x6ff9('0x47')]=_[_0x6ff9('0x48')](_0x21e743[_0x6ff9('0x45')],qs[_0x6ff9('0x49')](_0x5a2d75[_0x6ff9('0x46')][_0x6ff9('0x49')]));_0x264f2c['attributes']=_0x264f2c['attributes'][_0x6ff9('0x4a')]?_0x264f2c['attributes']:_0x21e743[_0x6ff9('0x45')];_0x264f2c[_0x6ff9('0x4d')]=qs[_0x6ff9('0x4e')](_0x5a2d75[_0x6ff9('0x46')][_0x6ff9('0x4e')]);_0x264f2c[_0x6ff9('0x4f')]=qs[_0x6ff9('0x50')](_[_0x6ff9('0x71')](_0x5a2d75[_0x6ff9('0x46')],_0x21e743[_0x6ff9('0x50')]));if(_0x5a2d75[_0x6ff9('0x46')][_0x6ff9('0x51')]){_0x264f2c[_0x6ff9('0x4f')]=_[_0x6ff9('0x52')](_0x264f2c[_0x6ff9('0x4f')],{'$or':_[_0x6ff9('0x42')](_0x264f2c['attributes'],function(_0x1bb0c3){var _0x35bf0f={};_0x35bf0f[_0x1bb0c3]={'$like':'%'+_0x5a2d75[_0x6ff9('0x46')][_0x6ff9('0x51')]+'%'};return _0x35bf0f;})});}_0x264f2c=_[_0x6ff9('0x52')]({},_0x264f2c,_0x5a2d75['options']);return _0x22f07a[_0x6ff9('0xbd')](_0x264f2c);}})[_0x6ff9('0x23')](function(_0x19f81a){if(_0x19f81a){_0x173bcf=_0x19f81a['length'];if(!_0x5a2d75[_0x6ff9('0x46')][_0x6ff9('0x4b')](_0x6ff9('0x4c'))){_0x264f2c['limit']=qs['limit'](_0x5a2d75[_0x6ff9('0x46')]['limit']);_0x264f2c['offset']=qs[_0x6ff9('0x33')](_0x5a2d75[_0x6ff9('0x46')]['offset']);}return _0x22f07a['getApplications'](_0x264f2c);}})[_0x6ff9('0x23')](function(_0x25c98c){if(_0x25c98c){return _0x25c98c?{'count':_0x173bcf,'rows':_0x25c98c}:null;}})[_0x6ff9('0x23')](respondWithResult(_0x1345d5,null))[_0x6ff9('0x2d')](handleError(_0x1345d5,null));};exports[_0x6ff9('0xbe')]=function(_0x46d874,_0x345569,_0x5c9065){var _0x4e8ac3={'raw':![],'where':{}};var _0x3ed2cc={};var _0x400f46={'count':0x0,'rows':[]};return db['SmsAccount'][_0x6ff9('0x6a')]({'where':{'id':_0x46d874['params']['id']}})[_0x6ff9('0x23')](handleEntityNotFound(_0x345569,null))[_0x6ff9('0x23')](function(_0x4c9d20){if(_0x4c9d20){_0x3ed2cc[_0x6ff9('0x45')]=_[_0x6ff9('0x5d')](db[_0x6ff9('0xa0')][_0x6ff9('0x43')]);_0x3ed2cc[_0x6ff9('0x46')]=_['keys'](_0x46d874[_0x6ff9('0x46')]);_0x3ed2cc['filters']=_[_0x6ff9('0x48')](_0x3ed2cc['model'],_0x3ed2cc[_0x6ff9('0x46')]);_0x4e8ac3[_0x6ff9('0x47')]=_[_0x6ff9('0x48')](_0x3ed2cc['model'],qs['fields'](_0x46d874[_0x6ff9('0x46')][_0x6ff9('0x49')]));_0x4e8ac3['attributes']=_0x4e8ac3['attributes'][_0x6ff9('0x4a')]?_0x4e8ac3[_0x6ff9('0x47')]:_0x3ed2cc[_0x6ff9('0x45')];if(!_0x46d874[_0x6ff9('0x46')][_0x6ff9('0x4b')](_0x6ff9('0x4c'))){_0x4e8ac3[_0x6ff9('0x32')]=qs[_0x6ff9('0x32')](_0x46d874[_0x6ff9('0x46')][_0x6ff9('0x32')]);_0x4e8ac3[_0x6ff9('0x33')]=qs[_0x6ff9('0x33')](_0x46d874['query'][_0x6ff9('0x33')]);}_0x4e8ac3[_0x6ff9('0x4d')]=qs[_0x6ff9('0x4e')](_0x46d874[_0x6ff9('0x46')][_0x6ff9('0x4e')]);_0x4e8ac3[_0x6ff9('0x4f')]=qs[_0x6ff9('0x50')](_[_0x6ff9('0x71')](_0x46d874[_0x6ff9('0x46')],_0x3ed2cc[_0x6ff9('0x50')]));_0x4e8ac3[_0x6ff9('0x4f')][_0x6ff9('0x68')]=_0x4c9d20['id'];if(_0x46d874[_0x6ff9('0x46')][_0x6ff9('0x51')]){_0x4e8ac3[_0x6ff9('0x4f')]=_['merge'](_0x4e8ac3[_0x6ff9('0x4f')],{'$or':_[_0x6ff9('0x42')](_0x4e8ac3[_0x6ff9('0x47')],function(_0x3c6b5b){var _0x3de34b={};_0x3de34b[_0x3c6b5b]={'$like':'%'+_0x46d874[_0x6ff9('0x46')][_0x6ff9('0x51')]+'%'};return _0x3de34b;})});}_0x4e8ac3=_[_0x6ff9('0x52')]({},_0x4e8ac3,_0x46d874[_0x6ff9('0x54')]);return db[_0x6ff9('0xa0')][_0x6ff9('0x56')]({'where':_0x4e8ac3[_0x6ff9('0x4f')]})[_0x6ff9('0x23')](function(_0x21cafd){_0x400f46[_0x6ff9('0x56')]=_0x21cafd;if(_0x46d874['query'][_0x6ff9('0x57')]){_0x4e8ac3[_0x6ff9('0x58')]=[{'model':db[_0x6ff9('0x79')],'as':_0x6ff9('0xbf'),'required':![]},{'model':db[_0x6ff9('0xaa')],'as':_0x6ff9('0xc0'),'attributes':[_0x6ff9('0x3e'),'fullname',_0x6ff9('0xc1')],'required':![]},{'model':db[_0x6ff9('0xc2')],'as':_0x6ff9('0xc3'),'attributes':['id',_0x6ff9('0x3e'),'color'],'where':_0x46d874[_0x6ff9('0x46')][_0x6ff9('0xc4')]?{'id':_0x46d874[_0x6ff9('0x46')][_0x6ff9('0xc4')]}:undefined,'required':_0x46d874[_0x6ff9('0x46')]['tag']?!![]:![]}];}return db[_0x6ff9('0xa0')][_0x6ff9('0x59')](_0x4e8ac3);})[_0x6ff9('0x23')](function(_0x3001c6){_0x400f46['rows']=_0x3001c6;return _0x400f46;});}})[_0x6ff9('0x23')](respondWithFilteredResult(_0x345569,_0x4e8ac3))[_0x6ff9('0x2d')](handleError(_0x345569,null));};exports['send']=function(_0x1d006d,_0x5a56a5,_0x43dadd){var _0x3995cf,_0x334cee,_0xe67b5d;if(_[_0x6ff9('0x97')](_0x1d006d[_0x6ff9('0x60')]['body'])||_0x1d006d['body'][_0x6ff9('0x60')]===''){throw new db[(_0x6ff9('0x7a'))][(_0x6ff9('0x7b'))](_0x6ff9('0x98'));}if(_[_0x6ff9('0x97')](_0x1d006d[_0x6ff9('0x60')]['to'])){throw new db[(_0x6ff9('0x7a'))]['ValidationError'](_0x6ff9('0xc5'));}_0x3995cf=_0x1d006d[_0x6ff9('0x60')]['to'];return db[_0x6ff9('0x55')][_0x6ff9('0x5e')]({'where':{'id':_0x1d006d[_0x6ff9('0x5c')]['id']},'include':[{'model':db['CmList'],'as':_0x6ff9('0xc6'),'include':[{'model':db[_0x6ff9('0x79')],'as':_0x6ff9('0x9d'),'where':{'mobile':_0x3995cf},'limit':0x1,'order':[[_0x6ff9('0x7f'),_0x6ff9('0xc7')]]}]}]})[_0x6ff9('0x23')](handleEntityNotFound(_0x5a56a5,null))['then'](function(_0x3808ac){if(_0x3808ac&&_0x3808ac[_0x6ff9('0xc6')]){_0x334cee=_0x3808ac['get']({'plain':!![]});if(_0x334cee[_0x6ff9('0xc6')]&&_0x334cee[_0x6ff9('0xc6')][_0x6ff9('0x9d')][_0x6ff9('0x4a')]){return _0x334cee['List']['Contacts'][0x0];}return db['CmContact'][_0x6ff9('0x5f')](_[_0x6ff9('0x1a')](_0x1d006d[_0x6ff9('0x60')],{'firstName':_0x3995cf,'mobile':_0x3995cf,'phone':_0x3995cf,'ListId':_0x334cee[_0x6ff9('0xc8')]}));}})[_0x6ff9('0x23')](handleEntityNotFound(_0x5a56a5,null))[_0x6ff9('0x23')](function(_0x15d5fe){if(_0x15d5fe){_0xe67b5d=_0x15d5fe;return db[_0x6ff9('0xa0')][_0x6ff9('0x5e')]({'where':{'ContactId':_0xe67b5d['id'],'closed':![],'SmsAccountId':_0x334cee['id']}})[_0x6ff9('0x23')](function(_0x3b78c2){if(_0x3b78c2){return[_0x3b78c2,![]];}return db[_0x6ff9('0xa0')][_0x6ff9('0x5f')]({'UserId':_0x1d006d[_0x6ff9('0x61')]['id'],'ContactId':_0xe67b5d['id'],'SmsAccountId':_0x334cee['id'],'phone':_0x3995cf,'firstMsgDirection':_0x6ff9('0xc9'),'Messages':[_[_0x6ff9('0x52')](_0x1d006d[_0x6ff9('0x60')],{'read':![],'body':_0x1d006d[_0x6ff9('0x60')][_0x6ff9('0x60')],'phone':_0x3995cf,'SmsAccountId':_0x334cee['id'],'UserId':_0x1d006d[_0x6ff9('0x61')]['id'],'ContactId':_0xe67b5d['id']})]},{'include':[{'model':db[_0x6ff9('0xa7')],'as':'Messages'}]})[_0x6ff9('0x23')](function(_0x2c2d41){return[_0x2c2d41,!![]];});});}})[_0x6ff9('0xca')](function(_0x478b6a,_0x169b37){if(_0x169b37){return _0x478b6a;}return db['SmsMessage'][_0x6ff9('0x5f')](_[_0x6ff9('0x52')](_0x1d006d[_0x6ff9('0x60')],{'read':![],'body':_0x1d006d[_0x6ff9('0x60')]['body'],'phone':_0x3995cf,'SmsAccountId':_0x334cee['id'],'SmsInteractionId':_0x478b6a['id'],'UserId':_0x1d006d[_0x6ff9('0x61')]['id'],'ContactId':_0xe67b5d['id']}))['then'](function(_0x23da85){_0x478b6a[_0x6ff9('0xcb')][_0x6ff9('0xcc')]=[];_0x478b6a[_0x6ff9('0xcb')]['Messages'][_0x6ff9('0xa5')](_0x23da85[_0x6ff9('0xcb')]);return _0x478b6a;});})[_0x6ff9('0x23')](respondWithResult(_0x5a56a5,null))[_0x6ff9('0x2d')](handleError(_0x5a56a5,null));};exports[_0x6ff9('0x2f')]=function(_0x19ca56,_0x5a409b,_0x52cd82){if(_0x19ca56[_0x6ff9('0x60')]['id']){delete _0x19ca56[_0x6ff9('0x60')]['id'];}var _0x4c5ef4,_0x5640a6,_0x1318ff;return db['SmsAccount']['find']({'where':{'id':_0x19ca56[_0x6ff9('0x5c')]['id']}})[_0x6ff9('0x23')](handleEntityNotFound(_0x5a409b,null))[_0x6ff9('0x23')](function(_0x48e202){if(_0x48e202){_0x1318ff=_0x48e202;logger['debug']('SmsAccount,\x20%s,\x20%s,\x20%s','status',_0x6ff9('0xcd'),_0x48e202['type'],util['inspect'](_0x19ca56[_0x6ff9('0x60')],{'showHidden':![],'depth':null}));switch(_0x48e202[_0x6ff9('0x44')]){case _0x6ff9('0x85'):if(_0x19ca56[_0x6ff9('0x60')][_0x6ff9('0xce')]&&_0x19ca56[_0x6ff9('0x60')][_0x6ff9('0x2f')]){_0x5640a6=_0x19ca56['body'][_0x6ff9('0x2f')];return db[_0x6ff9('0xa7')]['find']({'where':{'messageId':_0x19ca56[_0x6ff9('0x60')][_0x6ff9('0xce')]}});}break;case _0x6ff9('0x89'):if(_0x19ca56['body'][_0x6ff9('0xcf')]&&_0x19ca56[_0x6ff9('0x60')][_0x6ff9('0xd0')]){_0x5640a6=_0x19ca56[_0x6ff9('0x60')][_0x6ff9('0xd0')];return db[_0x6ff9('0xa7')]['find']({'where':{'messageId':_0x19ca56[_0x6ff9('0x60')][_0x6ff9('0xcf')]}});}break;case _0x6ff9('0xd1'):if(_0x19ca56[_0x6ff9('0x60')][_0x6ff9('0x8a')]&&_0x19ca56[_0x6ff9('0x60')][_0x6ff9('0xd2')]){_0x5640a6=_0x19ca56[_0x6ff9('0x60')][_0x6ff9('0xd2')];return db[_0x6ff9('0xa7')]['find']({'where':{'messageId':_0x19ca56[_0x6ff9('0x60')][_0x6ff9('0x8a')]}});}break;case'infobip':var _0x46fa2f=_0x19ca56['body'][_0x6ff9('0x8f')][0x0];if(_0x46fa2f[_0x6ff9('0x83')]&&_0x46fa2f['status'][_0x6ff9('0xd3')]===_0x6ff9('0xd4')){_0x5640a6=_0x46fa2f[_0x6ff9('0x2f')][_0x6ff9('0xd3')];return db['SmsMessage']['find']({'where':{'messageId':_0x46fa2f[_0x6ff9('0x83')]}});}break;case _0x6ff9('0xd5'):if(_0x19ca56[_0x6ff9('0x60')]['messageId']&&_0x19ca56[_0x6ff9('0x60')][_0x6ff9('0x2f')]){_0x5640a6=_0x19ca56['body']['status'];return db[_0x6ff9('0xa7')]['find']({'where':{'messageId':_0x19ca56['body']['messageId']}});}break;case'bandwidth':if(_0x19ca56['body'][0x0][_0x6ff9('0x2c')]['id']){_0x5640a6=_0x19ca56[_0x6ff9('0x60')][0x0]['type'];return db[_0x6ff9('0xa7')][_0x6ff9('0x5e')]({'where':{'messageId':_0x19ca56[_0x6ff9('0x60')][0x0]['message']['id']}});}break;case _0x6ff9('0x95'):if(_0x19ca56['body']['redif']&&_0x19ca56[_0x6ff9('0x60')][_0x6ff9('0x2f')]){_0x5640a6=_0x19ca56[_0x6ff9('0x60')][_0x6ff9('0x2f')];return db['SmsMessage']['find']({'where':{'messageId':_0x19ca56[_0x6ff9('0x60')][_0x6ff9('0xd6')]}});}break;}}})['then'](handleEntityNotFound(_0x5a409b,null))[_0x6ff9('0x23')](function(_0x3087cf){if(_0x3087cf){_0x4c5ef4=_0x3087cf;switch(_0x1318ff['type']){case _0x6ff9('0x85'):if(_0x5640a6===_0x6ff9('0xd4')){return _0x4c5ef4[_0x6ff9('0x39')]({'read':!![]});}else{logger['error'](_0x6ff9('0x28'),_0x6ff9('0x2f'),'skebby',util[_0x6ff9('0xd7')](_0x19ca56['body'],{'showHidden':![],'depth':null}));}break;case _0x6ff9('0x89'):if(_0x5640a6==='1'){return _0x4c5ef4[_0x6ff9('0x39')]({'read':!![]});}else{logger[_0x6ff9('0x2a')](_0x6ff9('0x28'),_0x6ff9('0x2f'),_0x6ff9('0x85'),util[_0x6ff9('0xd7')](_0x19ca56[_0x6ff9('0x60')],{'showHidden':![],'depth':null}));}break;case'clicksend':if(!_0x19ca56[_0x6ff9('0x60')]['error_code']&&_0x5640a6>=0xc8&&_0x5640a6<=0xce){return _0x4c5ef4[_0x6ff9('0x39')]({'read':!![]});}else{logger['error'](_0x6ff9('0x28'),'status',_0x6ff9('0xd1'),util[_0x6ff9('0xd7')](_0x19ca56[_0x6ff9('0x60')],{'showHidden':![],'depth':null}));}break;case'infobip':var _0x3fc49a=_0x19ca56[_0x6ff9('0x60')]['results'][0x0];if(_0x3fc49a[_0x6ff9('0x2f')][_0x6ff9('0xd3')]===_0x6ff9('0xd4')){return _0x4c5ef4['update']({'read':!![]});}else{logger[_0x6ff9('0x2a')](_0x6ff9('0x28'),_0x6ff9('0x2f'),'infobip',util[_0x6ff9('0xd7')](_0x19ca56[_0x6ff9('0x60')],{'showHidden':![],'depth':null}));}break;case _0x6ff9('0xd5'):if(_0x5640a6==_0x6ff9('0xd8')||_0x5640a6==_0x6ff9('0xd9')){return _0x4c5ef4['update']({'read':!![]});}else{logger[_0x6ff9('0x2a')](_0x6ff9('0x28'),_0x6ff9('0x2f'),_0x6ff9('0xd5'),util['inspect'](_0x19ca56[_0x6ff9('0x60')],{'showHidden':![],'depth':null}));}break;case _0x6ff9('0x94'):if(_0x5640a6=='message-delivered'){return _0x4c5ef4['update']({'read':!![]});}else{logger['error'](_0x6ff9('0x28'),_0x6ff9('0x2f'),_0x6ff9('0x94'),util['inspect'](_0x19ca56[_0x6ff9('0x60')],{'showHidden':![],'depth':null}));}break;case _0x6ff9('0x95'):if(_0x5640a6===_0x6ff9('0xda')||_0x5640a6===_0x6ff9('0xdb')){return _0x4c5ef4[_0x6ff9('0x39')]({'read':!![]});}else{logger[_0x6ff9('0x2a')](_0x6ff9('0x28'),_0x6ff9('0x2f'),_0x6ff9('0x95'),util[_0x6ff9('0xd7')](_0x19ca56['body'],{'showHidden':![],'depth':null}));}break;}return _0x4c5ef4;}})['then'](respondWithResult(_0x5a409b,null))[_0x6ff9('0x2d')](handleError(_0x5a409b,null));};exports[_0x6ff9('0xdc')]=function(_0x2a66c5,_0x100579,_0x3de060){var _0x47ecd1,_0x455b6f,_0x56fecf;return db[_0x6ff9('0x55')][_0x6ff9('0x5e')]({'where':{'id':_0x2a66c5[_0x6ff9('0x5c')]['id']}})[_0x6ff9('0x23')](handleEntityNotFound(_0x100579,null))[_0x6ff9('0x23')](function(_0x5c7095){if(_0x5c7095){_0x56fecf=_0x5c7095;logger[_0x6ff9('0x27')](_0x6ff9('0x28'),_0x6ff9('0x2f'),_0x6ff9('0xcd'),_0x5c7095[_0x6ff9('0x44')],util[_0x6ff9('0xd7')](_0x2a66c5[_0x6ff9('0x46')],{'showHidden':![],'depth':null}));switch(_0x5c7095[_0x6ff9('0x44')]){case _0x6ff9('0x90'):if(_0x2a66c5[_0x6ff9('0x46')]['message-id']&&_0x2a66c5[_0x6ff9('0x46')][_0x6ff9('0xdd')]){_0x455b6f=_0x2a66c5[_0x6ff9('0x46')][_0x6ff9('0xdd')];return db['SmsMessage'][_0x6ff9('0x5e')]({'where':{'messageId':_0x2a66c5[_0x6ff9('0x46')][_0x6ff9('0xde')]}});}break;}}})['then'](handleEntityNotFound(_0x100579,null))[_0x6ff9('0x23')](function(_0x48d219){if(_0x48d219){_0x47ecd1=_0x48d219;switch(_0x56fecf[_0x6ff9('0x44')]){case'csc':if(_0x455b6f==='2'||_0x455b6f==='6'){return _0x47ecd1[_0x6ff9('0x39')]({'read':!![]});}else{logger[_0x6ff9('0x2a')](_0x6ff9('0x28'),_0x6ff9('0x2f'),_0x6ff9('0x90'),util[_0x6ff9('0xd7')](_0x2a66c5[_0x6ff9('0x46')],{'showHidden':![],'depth':null}));};break;}return _0x47ecd1;}})[_0x6ff9('0x23')](respondWithResult(_0x100579,null))[_0x6ff9('0x2d')](handleError(_0x100579,null));};exports[_0x6ff9('0xdf')]=function(_0x5098eb,_0x345640,_0x4f85e3){return db[_0x6ff9('0x55')][_0x6ff9('0x5e')]({'where':{'id':_0x5098eb[_0x6ff9('0x5c')]['id']}})['then'](handleEntityNotFound(_0x345640,null))['then'](function(_0x153e81){if(_0x153e81){return _0x153e81[_0x6ff9('0xdf')](_0x5098eb[_0x6ff9('0x60')][_0x6ff9('0x6d')],_[_0x6ff9('0xe0')](_0x5098eb[_0x6ff9('0x60')],[_0x6ff9('0x6d'),'id'])||{})[_0x6ff9('0xca')](function(_0x2892bf){for(var _0x432071=0x0;_0x432071<_0x5098eb[_0x6ff9('0x60')][_0x6ff9('0x6d')][_0x6ff9('0x4a')];_0x432071+=0x1){socket[_0x6ff9('0xe1')]('userSmsAccount:save',{'UserId':Number(_0x5098eb['body'][_0x6ff9('0x6d')][_0x432071]),'SmsAccountId':Number(_0x5098eb[_0x6ff9('0x5c')]['id'])});}return _0x2892bf;});}})[_0x6ff9('0x23')](respondWithResult(_0x345640,null))[_0x6ff9('0x2d')](handleError(_0x345640,null));};exports[_0x6ff9('0xe2')]=function(_0x408efd,_0x58ceb3,_0x44c4c1){return db[_0x6ff9('0x55')][_0x6ff9('0x5e')]({'where':{'id':_0x408efd['params']['id']}})[_0x6ff9('0x23')](handleEntityNotFound(_0x58ceb3,null))[_0x6ff9('0x23')](function(_0x1ba643){if(_0x1ba643){return _0x1ba643['removeAgents'](_0x408efd[_0x6ff9('0x46')][_0x6ff9('0x6d')])[_0x6ff9('0x23')](function(){if(_[_0x6ff9('0xe3')](_0x408efd[_0x6ff9('0x46')][_0x6ff9('0x6d')])){for(var _0x1e3303=0x0;_0x1e3303<_0x408efd[_0x6ff9('0x46')][_0x6ff9('0x6d')]['length'];_0x1e3303+=0x1){socket[_0x6ff9('0xe1')](_0x6ff9('0xe4'),{'UserId':Number(_0x408efd[_0x6ff9('0x46')][_0x6ff9('0x6d')][_0x1e3303]),'SmsAccountId':Number(_0x408efd[_0x6ff9('0x5c')]['id'])});}}else{socket['emit'](_0x6ff9('0xe4'),{'UserId':Number(_0x408efd[_0x6ff9('0x46')][_0x6ff9('0x6d')]),'SmsAccountId':Number(_0x408efd[_0x6ff9('0x5c')]['id'])});}});}})[_0x6ff9('0x23')](respondWithStatusCode(_0x58ceb3,null))['catch'](handleError(_0x58ceb3,null));};exports[_0x6ff9('0xe5')]=function(_0x313370,_0x366962,_0x252771){var _0x5f518a={};var _0xbbcee6={};var _0x52bda5;var _0x870159;return db['SmsAccount'][_0x6ff9('0x6a')]({'where':{'id':_0x313370[_0x6ff9('0x5c')]['id']}})[_0x6ff9('0x23')](handleEntityNotFound(_0x366962,null))[_0x6ff9('0x23')](function(_0x2914e0){if(_0x2914e0){_0x52bda5=_0x2914e0;_0xbbcee6['model']=_['keys'](db[_0x6ff9('0xaa')][_0x6ff9('0x43')]);_0xbbcee6[_0x6ff9('0x46')]=_[_0x6ff9('0x5d')](_0x313370[_0x6ff9('0x46')]);_0xbbcee6[_0x6ff9('0x50')]=_[_0x6ff9('0x48')](_0xbbcee6[_0x6ff9('0x45')],_0xbbcee6['query']);_0x5f518a[_0x6ff9('0x47')]=_[_0x6ff9('0x48')](_0xbbcee6['model'],qs[_0x6ff9('0x49')](_0x313370[_0x6ff9('0x46')][_0x6ff9('0x49')]));_0x5f518a[_0x6ff9('0x47')]=_0x5f518a[_0x6ff9('0x47')][_0x6ff9('0x4a')]?_0x5f518a[_0x6ff9('0x47')]:_0xbbcee6[_0x6ff9('0x45')];_0x5f518a[_0x6ff9('0x4d')]=qs[_0x6ff9('0x4e')](_0x313370[_0x6ff9('0x46')][_0x6ff9('0x4e')]);_0x5f518a['where']=qs[_0x6ff9('0x50')](_[_0x6ff9('0x71')](_0x313370[_0x6ff9('0x46')],_0xbbcee6[_0x6ff9('0x50')]));if(_0x313370[_0x6ff9('0x46')][_0x6ff9('0x51')]){_0x5f518a['where']=_[_0x6ff9('0x52')](_0x5f518a[_0x6ff9('0x4f')],{'$or':_[_0x6ff9('0x42')](_0x5f518a[_0x6ff9('0x47')],function(_0x3f9c74){var _0x53dd95={};_0x53dd95[_0x3f9c74]={'$like':'%'+_0x313370['query'][_0x6ff9('0x51')]+'%'};return _0x53dd95;})});}_0x5f518a=_[_0x6ff9('0x52')]({},_0x5f518a,_0x313370[_0x6ff9('0x54')]);return _0x52bda5[_0x6ff9('0xe5')](_0x5f518a);}})['then'](function(_0x2e2adb){if(_0x2e2adb){_0x870159=_0x2e2adb[_0x6ff9('0x4a')];if(!_0x313370[_0x6ff9('0x46')][_0x6ff9('0x4b')](_0x6ff9('0x4c'))){_0x5f518a[_0x6ff9('0x32')]=qs[_0x6ff9('0x32')](_0x313370[_0x6ff9('0x46')]['limit']);_0x5f518a[_0x6ff9('0x33')]=qs[_0x6ff9('0x33')](_0x313370[_0x6ff9('0x46')][_0x6ff9('0x33')]);}return _0x52bda5[_0x6ff9('0xe5')](_0x5f518a);}})[_0x6ff9('0x23')](function(_0x47b571){if(_0x47b571){return _0x47b571?{'count':_0x870159,'rows':_0x47b571}:null;}})[_0x6ff9('0x23')](respondWithResult(_0x366962,null))['catch'](handleError(_0x366962,null));};
\ No newline at end of file
+var _0x3511=['ACCEPTD','csc','message-id','state','emit','userSmsAccount:save','removeAgents','isArray','userSmsAccount:remove','getAgents','eml-format','rimraf','zip-dir','request-promise','moment','mustache','util','path','sox','to-csv','fs-extra','crypto','jsforce','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','socket.io-emitter','./smsAccount.socket','register','client','http','then','info','SmsAccount,\x20%s,\x20%s','request\x20sent','debug','SmsAccount,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','sendStatus','status','end','offset','limit','undefined','count','set','Content-Range','json','reject','save','update','destroy','get','UserProfileResource','stack','name','send','index','map','SmsAccount','fieldName','type','keys','query','intersection','model','attributes','fields','hasOwnProperty','nolimit','order','sort','where','filters','pick','filter','merge','VIRTUAL','includeAll','include','findAll','rows','catch','show','params','mandatoryDispositionPause','length','options','create','body','user','role','UserProfileSection','find','autoAssociation','Pause','describe','getDispositions','Disposition','rawAttributes','SmsAccountId','addAnswer','findOne','CannedAnswer','removeAnswers','ids','notify','SmsApplication','Applications','account','applications','orderBy','priority','asc','Sequelize','ValidationError','no\x20available\x20attributes','difference','createdAt','updatedAt','CompanyId','ListId','twilio','from','From','Body','messageId','MessageSid','skebby','sender','connectel','message_id','Text','MessageUUID','results','originatingAddress','segmentedMessage','clickatell','fromNumber','text','bandwidth','refid','from\x20is\x20mandatory','body\x20is\x20mandatory\x20and\x20not\x20empty','isNil','mapKey','mapKey\x20is\x20mandatory,\x20please\x20use\x20one\x20of\x20these:\x20','mapKey\x20invalid,\x20please\x20use\x20one\x20of\x20these:\x20','CmList','DESC','omit','Contacts','CmContact','SmsInteraction','spread','interaction','autoclose','close','unmanaged','*,*,*,*','created','SmsMessage','ContactId','AttachmentId','User','UserId','unshift','waitForTheAssignedAgent','Start','startRouting','SmsAccount,\x20%s,\x20%s,\x20%s,\x20%s','Content-Type','text/xml','addApplications','sequelize','bulkCreate','findAndCountAll','getApplications','getInteractions','fullname','internal','Tag','color','tag','to\x20is\x20mandatory','List','out','Messages','dataValues','push','received\x20delivery\x20report\x20from','inspect','skebby_dispatch_id','requestid','statusInt','status_code','infobip','groupName','intelepeer','redif','DELIVERED','clicksend','DELIVRD'];(function(_0x4cf8f4,_0x190ca4){var _0x566552=function(_0x52ae7e){while(--_0x52ae7e){_0x4cf8f4['push'](_0x4cf8f4['shift']());}};_0x566552(++_0x190ca4);}(_0x3511,0x1be));var _0x1351=function(_0x204fbf,_0x27e8ce){_0x204fbf=_0x204fbf-0x0;var _0x415a60=_0x3511[_0x204fbf];return _0x415a60;};'use strict';var emlformat=require(_0x1351('0x0'));var rimraf=require(_0x1351('0x1'));var zipdir=require(_0x1351('0x2'));var jsonpatch=require('fast-json-patch');var rp=require(_0x1351('0x3'));var moment=require(_0x1351('0x4'));var BPromise=require('bluebird');var Mustache=require(_0x1351('0x5'));var util=require(_0x1351('0x6'));var path=require(_0x1351('0x7'));var sox=require(_0x1351('0x8'));var csv=require(_0x1351('0x9'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x1351('0xa'));var _=require('lodash');var squel=require('squel');var crypto=require(_0x1351('0xb'));var jsforce=require(_0x1351('0xc'));var deskjs=require('desk.js');var toCsv=require(_0x1351('0x9'));var querystring=require('querystring');var Papa=require('papaparse');var Redis=require(_0x1351('0xd'));var authService=require(_0x1351('0xe'));var qs=require(_0x1351('0xf'));var as=require(_0x1351('0x10'));var hardwareService=require(_0x1351('0x11'));var logger=require(_0x1351('0x12'))(_0x1351('0x13'));var utils=require(_0x1351('0x14'));var config=require(_0x1351('0x15'));var licenseUtil=require(_0x1351('0x16'));var db=require(_0x1351('0x17'))['db'];config[_0x1351('0x18')]=_[_0x1351('0x19')](config[_0x1351('0x18')],{'host':_0x1351('0x1a'),'port':0x18eb});var socket=require(_0x1351('0x1b'))(new Redis(config[_0x1351('0x18')]));require(_0x1351('0x1c'))[_0x1351('0x1d')](socket);var jayson=require('jayson/promise');var client=jayson[_0x1351('0x1e')][_0x1351('0x1f')]({'port':0x232c});function respondWithRpcPromise(_0x34e74a,_0xc86f01,_0x2803b9,_0x226b89){return new BPromise(function(_0x41f420,_0x461101){var _0x287519=_0x226b89||client;return _0x287519['request'](_0x34e74a,_0x2803b9)[_0x1351('0x20')](function(_0x485a2e){logger[_0x1351('0x21')](_0x1351('0x22'),_0xc86f01,_0x1351('0x23'));logger[_0x1351('0x24')](_0x1351('0x25'),_0xc86f01,_0x1351('0x23'),JSON[_0x1351('0x26')](_0x485a2e));if(_0x485a2e[_0x1351('0x27')]){if(_0x485a2e['error'][_0x1351('0x28')]===0x1f4){logger[_0x1351('0x27')](_0x1351('0x22'),_0xc86f01,_0x485a2e[_0x1351('0x27')][_0x1351('0x29')]);return _0x461101(_0x485a2e[_0x1351('0x27')][_0x1351('0x29')]);}logger[_0x1351('0x27')](_0x1351('0x22'),_0xc86f01,_0x485a2e[_0x1351('0x27')][_0x1351('0x29')]);return _0x41f420(_0x485a2e['error'][_0x1351('0x29')]);}else{logger[_0x1351('0x21')](_0x1351('0x22'),_0xc86f01,_0x1351('0x23'));_0x41f420(_0x485a2e[_0x1351('0x2a')]['message']);}})['catch'](function(_0x2c99c0){logger[_0x1351('0x27')](_0x1351('0x22'),_0xc86f01,_0x2c99c0);_0x461101(_0x2c99c0);});});}function respondWithStatusCode(_0x126991,_0x235ad4){_0x235ad4=_0x235ad4||0xcc;return function(_0x18190f){if(_0x18190f){return _0x126991[_0x1351('0x2b')](_0x235ad4);}return _0x126991[_0x1351('0x2c')](_0x235ad4)[_0x1351('0x2d')]();};}function respondWithResult(_0x2d7a2c,_0x4cce27){_0x4cce27=_0x4cce27||0xc8;return function(_0x42f5c8){if(_0x42f5c8){return _0x2d7a2c[_0x1351('0x2c')](_0x4cce27)['json'](_0x42f5c8);}};}function respondWithFilteredResult(_0x38637d,_0x2f2311){return function(_0x221198){if(_0x221198){var _0x4b9e5a=typeof _0x2f2311[_0x1351('0x2e')]==='undefined'&&typeof _0x2f2311[_0x1351('0x2f')]===_0x1351('0x30');var _0x4afb3=_0x221198[_0x1351('0x31')];var _0x2c1a1a=_0x4b9e5a?0x0:_0x2f2311[_0x1351('0x2e')];var _0x3a03a7=_0x4b9e5a?_0x221198['count']:_0x2f2311[_0x1351('0x2e')]+_0x2f2311[_0x1351('0x2f')];var _0x2aee89;if(_0x3a03a7>=_0x4afb3){_0x3a03a7=_0x4afb3;_0x2aee89=0xc8;}else{_0x2aee89=0xce;}_0x38637d[_0x1351('0x2c')](_0x2aee89);return _0x38637d[_0x1351('0x32')](_0x1351('0x33'),_0x2c1a1a+'-'+_0x3a03a7+'/'+_0x4afb3)[_0x1351('0x34')](_0x221198);}return null;};}function patchUpdates(_0x47009c){return function(_0x3917d6){try{jsonpatch['apply'](_0x3917d6,_0x47009c,!![]);}catch(_0xdda8c2){return BPromise[_0x1351('0x35')](_0xdda8c2);}return _0x3917d6[_0x1351('0x36')]();};}function saveUpdates(_0x11dfcf,_0x1ee9d2){return function(_0x279111){if(_0x279111){return _0x279111[_0x1351('0x37')](_0x11dfcf)[_0x1351('0x20')](function(_0x47ca0e){return _0x47ca0e;});}return null;};}function removeEntity(_0x1c885c,_0x1e4126){return function(_0x3488a1){if(_0x3488a1){return _0x3488a1[_0x1351('0x38')]()[_0x1351('0x20')](function(){var _0x3f74fa=_0x3488a1[_0x1351('0x39')]({'plain':!![]});var _0xc32679='SmsAccounts';return db[_0x1351('0x3a')][_0x1351('0x38')]({'where':{'type':_0xc32679,'resourceId':_0x3f74fa['id']}})[_0x1351('0x20')](function(){return _0x3488a1;});})['then'](function(){_0x1c885c[_0x1351('0x2c')](0xcc)[_0x1351('0x2d')]();});}};}function handleEntityNotFound(_0x56f95f,_0x24eb74){return function(_0x376154){if(!_0x376154){_0x56f95f[_0x1351('0x2b')](0x194);}return _0x376154;};}function handleError(_0x5f3760,_0x3c4ca8){_0x3c4ca8=_0x3c4ca8||0x1f4;return function(_0x2b9a48){logger[_0x1351('0x27')](_0x2b9a48[_0x1351('0x3b')]);if(_0x2b9a48[_0x1351('0x3c')]){delete _0x2b9a48[_0x1351('0x3c')];}_0x5f3760[_0x1351('0x2c')](_0x3c4ca8)[_0x1351('0x3d')](_0x2b9a48);};}exports[_0x1351('0x3e')]=function(_0x58f312,_0x35d302){var _0x2dc053={'include':[{'model':db['Pause'],'as':'mandatoryDispositionPause'}]},_0x3c505b={},_0x363125={'count':0x0,'rows':[]};var _0x358c70=_[_0x1351('0x3f')](db[_0x1351('0x40')]['rawAttributes'],function(_0x435440){return{'name':_0x435440[_0x1351('0x41')],'type':_0x435440[_0x1351('0x42')]['key']};});_0x3c505b['model']=_[_0x1351('0x3f')](_0x358c70,_0x1351('0x3c'));_0x3c505b['query']=_[_0x1351('0x43')](_0x58f312[_0x1351('0x44')]);_0x3c505b['filters']=_[_0x1351('0x45')](_0x3c505b[_0x1351('0x46')],_0x3c505b[_0x1351('0x44')]);_0x2dc053[_0x1351('0x47')]=_['intersection'](_0x3c505b['model'],qs[_0x1351('0x48')](_0x58f312[_0x1351('0x44')]['fields']));_0x2dc053[_0x1351('0x47')]=_0x2dc053[_0x1351('0x47')]['length']?_0x2dc053[_0x1351('0x47')]:_0x3c505b[_0x1351('0x46')];if(!_0x58f312[_0x1351('0x44')][_0x1351('0x49')](_0x1351('0x4a'))){_0x2dc053[_0x1351('0x2f')]=qs[_0x1351('0x2f')](_0x58f312[_0x1351('0x44')]['limit']);_0x2dc053['offset']=qs[_0x1351('0x2e')](_0x58f312[_0x1351('0x44')][_0x1351('0x2e')]);}_0x2dc053[_0x1351('0x4b')]=qs[_0x1351('0x4c')](_0x58f312[_0x1351('0x44')][_0x1351('0x4c')]);_0x2dc053[_0x1351('0x4d')]=qs[_0x1351('0x4e')](_[_0x1351('0x4f')](_0x58f312[_0x1351('0x44')],_0x3c505b['filters']),_0x358c70);if(_0x58f312[_0x1351('0x44')][_0x1351('0x50')]){_0x2dc053[_0x1351('0x4d')]=_[_0x1351('0x51')](_0x2dc053[_0x1351('0x4d')],{'$or':_[_0x1351('0x3f')](_0x358c70,function(_0x1bae10){if(_0x1bae10['type']!==_0x1351('0x52')){var _0x273003={};_0x273003[_0x1bae10[_0x1351('0x3c')]]={'$like':'%'+_0x58f312[_0x1351('0x44')]['filter']+'%'};return _0x273003;}})});}_0x2dc053=_[_0x1351('0x51')]({},_0x2dc053,_0x58f312['options']);var _0x904c57={'where':_0x2dc053[_0x1351('0x4d')]};return db['SmsAccount'][_0x1351('0x31')](_0x904c57)[_0x1351('0x20')](function(_0x2d886d){_0x363125[_0x1351('0x31')]=_0x2d886d;if(_0x58f312[_0x1351('0x44')][_0x1351('0x53')]){_0x2dc053[_0x1351('0x54')]=[{'all':!![]}];}return db[_0x1351('0x40')][_0x1351('0x55')](_0x2dc053);})[_0x1351('0x20')](function(_0x2bb8b3){_0x363125[_0x1351('0x56')]=_0x2bb8b3;return _0x363125;})['then'](respondWithFilteredResult(_0x35d302,_0x2dc053))[_0x1351('0x57')](handleError(_0x35d302,null));};exports[_0x1351('0x58')]=function(_0x4c8ccc,_0x245e7b){var _0x449bf5={'raw':![],'where':{'id':_0x4c8ccc[_0x1351('0x59')]['id']},'include':[{'model':db['Pause'],'as':_0x1351('0x5a')}]},_0x275626={};_0x275626['model']=_[_0x1351('0x43')](db[_0x1351('0x40')]['rawAttributes']);_0x275626['query']=_[_0x1351('0x43')](_0x4c8ccc['query']);_0x275626['filters']=_['intersection'](_0x275626[_0x1351('0x46')],_0x275626[_0x1351('0x44')]);_0x449bf5['attributes']=_[_0x1351('0x45')](_0x275626[_0x1351('0x46')],qs['fields'](_0x4c8ccc[_0x1351('0x44')]['fields']));_0x449bf5[_0x1351('0x47')]=_0x449bf5[_0x1351('0x47')][_0x1351('0x5b')]?_0x449bf5['attributes']:_0x275626[_0x1351('0x46')];if(_0x4c8ccc[_0x1351('0x44')][_0x1351('0x53')]){_0x449bf5[_0x1351('0x54')]=[{'all':!![]}];}_0x449bf5=_[_0x1351('0x51')]({},_0x449bf5,_0x4c8ccc[_0x1351('0x5c')]);return db[_0x1351('0x40')]['find'](_0x449bf5)[_0x1351('0x20')](handleEntityNotFound(_0x245e7b,null))[_0x1351('0x20')](respondWithResult(_0x245e7b,null))[_0x1351('0x57')](handleError(_0x245e7b,null));};exports[_0x1351('0x5d')]=function(_0x4a45a3,_0x15eb30){return db[_0x1351('0x40')][_0x1351('0x5d')](_0x4a45a3[_0x1351('0x5e')],{})[_0x1351('0x20')](function(_0x199a2b){var _0x476bd4=_0x4a45a3[_0x1351('0x5f')][_0x1351('0x39')]({'plain':!![]});if(!_0x476bd4)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0x476bd4[_0x1351('0x60')]===_0x1351('0x5f')){var _0x5acabc=_0x199a2b['get']({'plain':!![]});var _0x3e47dc='SmsAccounts';return db[_0x1351('0x61')][_0x1351('0x62')]({'where':{'name':_0x3e47dc,'userProfileId':_0x476bd4['userProfileId']},'raw':!![]})['then'](function(_0x1c4273){if(_0x1c4273&&_0x1c4273[_0x1351('0x63')]===0x0){return db[_0x1351('0x3a')][_0x1351('0x5d')]({'name':_0x5acabc[_0x1351('0x3c')],'resourceId':_0x5acabc['id'],'type':_0x1c4273[_0x1351('0x3c')],'sectionId':_0x1c4273['id']},{})[_0x1351('0x20')](function(){return _0x199a2b;});}else{return _0x199a2b;}})[_0x1351('0x57')](function(_0x917809){logger[_0x1351('0x27')]('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0x917809);throw _0x917809;});}return _0x199a2b;})[_0x1351('0x20')](respondWithResult(_0x15eb30,0xc9))[_0x1351('0x57')](handleError(_0x15eb30,null));};exports['update']=function(_0x547f55,_0x2d9001){if(_0x547f55[_0x1351('0x5e')]['id']){delete _0x547f55[_0x1351('0x5e')]['id'];}return db[_0x1351('0x40')][_0x1351('0x62')]({'where':{'id':_0x547f55[_0x1351('0x59')]['id']},'include':[{'model':db[_0x1351('0x64')],'as':_0x1351('0x5a')}]})[_0x1351('0x20')](handleEntityNotFound(_0x2d9001,null))[_0x1351('0x20')](saveUpdates(_0x547f55[_0x1351('0x5e')],null))['then'](respondWithResult(_0x2d9001,null))[_0x1351('0x57')](handleError(_0x2d9001,null));};exports[_0x1351('0x38')]=function(_0x3b7f11,_0x493dd1){return db[_0x1351('0x40')]['find']({'where':{'id':_0x3b7f11['params']['id']}})['then'](handleEntityNotFound(_0x493dd1,null))[_0x1351('0x20')](removeEntity(_0x493dd1,null))['catch'](handleError(_0x493dd1,null));};exports[_0x1351('0x65')]=function(_0x49fdf0,_0x2041e6){return db[_0x1351('0x40')]['describe']()[_0x1351('0x20')](respondWithResult(_0x2041e6,null))[_0x1351('0x57')](handleError(_0x2041e6,null));};exports['addDisposition']=function(_0x49bee2,_0x2f5477,_0x4b0992){if(_0x49bee2[_0x1351('0x5e')]['id']){delete _0x49bee2['body']['id'];}return db[_0x1351('0x40')][_0x1351('0x62')]({'where':{'id':_0x49bee2['params']['id']}})[_0x1351('0x20')](handleEntityNotFound(_0x2f5477,null))['then'](function(_0x2fe68f){if(_0x2fe68f){_0x49bee2[_0x1351('0x5e')]['SmsAccountId']=_0x2fe68f['id'];return db['Disposition'][_0x1351('0x5d')](_0x49bee2[_0x1351('0x5e')]);}})[_0x1351('0x20')](respondWithResult(_0x2f5477,null))[_0x1351('0x57')](handleError(_0x2f5477,null));};exports[_0x1351('0x66')]=function(_0x207635,_0x5a96c1,_0x3d7ff3){var _0x516902={'raw':![],'where':{}};var _0x212897={};var _0x3fbc8a={'count':0x0,'rows':[]};return db[_0x1351('0x40')]['findOne']({'where':{'id':_0x207635[_0x1351('0x59')]['id']}})['then'](handleEntityNotFound(_0x5a96c1,null))[_0x1351('0x20')](function(_0x5ba197){if(_0x5ba197){_0x212897[_0x1351('0x46')]=_[_0x1351('0x43')](db[_0x1351('0x67')][_0x1351('0x68')]);_0x212897[_0x1351('0x44')]=_[_0x1351('0x43')](_0x207635[_0x1351('0x44')]);_0x212897['filters']=_[_0x1351('0x45')](_0x212897[_0x1351('0x46')],_0x212897[_0x1351('0x44')]);_0x516902[_0x1351('0x47')]=_[_0x1351('0x45')](_0x212897[_0x1351('0x46')],qs[_0x1351('0x48')](_0x207635[_0x1351('0x44')][_0x1351('0x48')]));_0x516902[_0x1351('0x47')]=_0x516902[_0x1351('0x47')][_0x1351('0x5b')]?_0x516902['attributes']:_0x212897[_0x1351('0x46')];if(!_0x207635['query'][_0x1351('0x49')](_0x1351('0x4a'))){_0x516902[_0x1351('0x2f')]=qs[_0x1351('0x2f')](_0x207635['query']['limit']);_0x516902[_0x1351('0x2e')]=qs[_0x1351('0x2e')](_0x207635[_0x1351('0x44')]['offset']);}_0x516902[_0x1351('0x4b')]=qs[_0x1351('0x4c')](_0x207635[_0x1351('0x44')][_0x1351('0x4c')]);_0x516902[_0x1351('0x4d')]=qs[_0x1351('0x4e')](_[_0x1351('0x4f')](_0x207635['query'],_0x212897[_0x1351('0x4e')]));_0x516902[_0x1351('0x4d')][_0x1351('0x69')]=_0x5ba197['id'];if(_0x207635[_0x1351('0x44')][_0x1351('0x50')]){_0x516902[_0x1351('0x4d')]=_[_0x1351('0x51')](_0x516902[_0x1351('0x4d')],{'$or':_[_0x1351('0x3f')](_0x516902[_0x1351('0x47')],function(_0x4331f2){var _0x3d49a8={};_0x3d49a8[_0x4331f2]={'$like':'%'+_0x207635[_0x1351('0x44')][_0x1351('0x50')]+'%'};return _0x3d49a8;})});}_0x516902=_[_0x1351('0x51')]({},_0x516902,_0x207635[_0x1351('0x5c')]);return db[_0x1351('0x67')][_0x1351('0x31')]({'where':_0x516902[_0x1351('0x4d')]})[_0x1351('0x20')](function(_0x5e64ca){_0x3fbc8a[_0x1351('0x31')]=_0x5e64ca;if(_0x207635[_0x1351('0x44')][_0x1351('0x53')]){_0x516902['include']=[{'all':!![]}];}return db[_0x1351('0x67')][_0x1351('0x55')](_0x516902);})[_0x1351('0x20')](function(_0x2ca641){_0x3fbc8a['rows']=_0x2ca641;return _0x3fbc8a;});}})[_0x1351('0x20')](respondWithFilteredResult(_0x5a96c1,_0x516902))[_0x1351('0x57')](handleError(_0x5a96c1,null));};exports['removeDispositions']=function(_0x411db7,_0x32d050,_0x729ef8){return db[_0x1351('0x40')][_0x1351('0x62')]({'where':{'id':_0x411db7[_0x1351('0x59')]['id']}})['then'](handleEntityNotFound(_0x32d050,null))['then'](function(_0x256262){if(_0x256262){return _0x256262['removeDispositions'](_0x411db7[_0x1351('0x44')]['ids']);}})[_0x1351('0x20')](respondWithStatusCode(_0x32d050,null))[_0x1351('0x57')](handleError(_0x32d050,null));};exports[_0x1351('0x6a')]=function(_0xdf5f7b,_0x29703c,_0x37d92d){if(_0xdf5f7b[_0x1351('0x5e')]['id']){delete _0xdf5f7b[_0x1351('0x5e')]['id'];}return db[_0x1351('0x40')][_0x1351('0x62')]({'where':{'id':_0xdf5f7b[_0x1351('0x59')]['id']}})['then'](handleEntityNotFound(_0x29703c,null))[_0x1351('0x20')](function(_0x440093){if(_0x440093){_0xdf5f7b[_0x1351('0x5e')]['SmsAccountId']=_0x440093['id'];return db['CannedAnswer'][_0x1351('0x5d')](_0xdf5f7b[_0x1351('0x5e')]);}})[_0x1351('0x20')](respondWithResult(_0x29703c,null))[_0x1351('0x57')](handleError(_0x29703c,null));};exports['getAnswers']=function(_0x3d3e6a,_0x11d4e5,_0x44efdc){var _0x5d1bd3={'raw':![],'where':{}};var _0x3d660a={};var _0x4a1b64={'count':0x0,'rows':[]};return db[_0x1351('0x40')][_0x1351('0x6b')]({'where':{'id':_0x3d3e6a[_0x1351('0x59')]['id']}})[_0x1351('0x20')](handleEntityNotFound(_0x11d4e5,null))[_0x1351('0x20')](function(_0x4b7be1){if(_0x4b7be1){_0x3d660a['model']=_[_0x1351('0x43')](db[_0x1351('0x6c')][_0x1351('0x68')]);_0x3d660a[_0x1351('0x44')]=_[_0x1351('0x43')](_0x3d3e6a['query']);_0x3d660a[_0x1351('0x4e')]=_[_0x1351('0x45')](_0x3d660a[_0x1351('0x46')],_0x3d660a[_0x1351('0x44')]);_0x5d1bd3[_0x1351('0x47')]=_['intersection'](_0x3d660a[_0x1351('0x46')],qs['fields'](_0x3d3e6a[_0x1351('0x44')][_0x1351('0x48')]));_0x5d1bd3['attributes']=_0x5d1bd3[_0x1351('0x47')][_0x1351('0x5b')]?_0x5d1bd3['attributes']:_0x3d660a['model'];if(!_0x3d3e6a[_0x1351('0x44')][_0x1351('0x49')](_0x1351('0x4a'))){_0x5d1bd3[_0x1351('0x2f')]=qs['limit'](_0x3d3e6a[_0x1351('0x44')][_0x1351('0x2f')]);_0x5d1bd3['offset']=qs[_0x1351('0x2e')](_0x3d3e6a[_0x1351('0x44')][_0x1351('0x2e')]);}_0x5d1bd3[_0x1351('0x4b')]=qs[_0x1351('0x4c')](_0x3d3e6a[_0x1351('0x44')][_0x1351('0x4c')]);_0x5d1bd3[_0x1351('0x4d')]=qs[_0x1351('0x4e')](_['pick'](_0x3d3e6a[_0x1351('0x44')],_0x3d660a[_0x1351('0x4e')]));_0x5d1bd3['where'][_0x1351('0x69')]=_0x4b7be1['id'];if(_0x3d3e6a[_0x1351('0x44')][_0x1351('0x50')]){_0x5d1bd3['where']=_['merge'](_0x5d1bd3['where'],{'$or':_['map'](_0x5d1bd3[_0x1351('0x47')],function(_0x206a8a){var _0x4ff4c2={};_0x4ff4c2[_0x206a8a]={'$like':'%'+_0x3d3e6a[_0x1351('0x44')][_0x1351('0x50')]+'%'};return _0x4ff4c2;})});}_0x5d1bd3=_[_0x1351('0x51')]({},_0x5d1bd3,_0x3d3e6a[_0x1351('0x5c')]);return db['CannedAnswer'][_0x1351('0x31')]({'where':_0x5d1bd3[_0x1351('0x4d')]})[_0x1351('0x20')](function(_0x573726){_0x4a1b64[_0x1351('0x31')]=_0x573726;if(_0x3d3e6a['query']['includeAll']){_0x5d1bd3[_0x1351('0x54')]=[{'all':!![]}];}return db[_0x1351('0x6c')][_0x1351('0x55')](_0x5d1bd3);})[_0x1351('0x20')](function(_0x31414a){_0x4a1b64['rows']=_0x31414a;return _0x4a1b64;});}})[_0x1351('0x20')](respondWithFilteredResult(_0x11d4e5,_0x5d1bd3))[_0x1351('0x57')](handleError(_0x11d4e5,null));};exports['removeAnswers']=function(_0x2adef9,_0x5532a7,_0x5760d0){return db[_0x1351('0x40')][_0x1351('0x62')]({'where':{'id':_0x2adef9['params']['id']}})['then'](handleEntityNotFound(_0x5532a7,null))[_0x1351('0x20')](function(_0x44abd8){if(_0x44abd8){return _0x44abd8[_0x1351('0x6d')](_0x2adef9[_0x1351('0x44')][_0x1351('0x6e')]);}})['then'](respondWithStatusCode(_0x5532a7,null))[_0x1351('0x57')](handleError(_0x5532a7,null));};exports[_0x1351('0x6f')]=function(_0x5a1c4a,_0x365c82,_0x4bfec0){var _0x20dd52={'channel':'sms'};var _0x216314=[];var _0x4b2656=[];var _0x279f76={};return db[_0x1351('0x40')]['find']({'where':{'id':_0x5a1c4a[_0x1351('0x59')]['id']},'include':[{'model':db[_0x1351('0x70')],'as':_0x1351('0x71')}]})[_0x1351('0x20')](handleEntityNotFound(_0x365c82,null))[_0x1351('0x20')](function(_0x1ecd73){_0x20dd52[_0x1351('0x72')]=_0x1ecd73;_0x20dd52[_0x1351('0x73')]=_[_0x1351('0x74')](_0x1ecd73[_0x1351('0x71')],[_0x1351('0x75')],[_0x1351('0x76')]);if(_0x20dd52['account'][_0x1351('0x71')]){delete _0x20dd52['account']['Applications'];}return db['CmContact'][_0x1351('0x65')]();})[_0x1351('0x20')](function(_0x505c63){if(!_0x505c63){throw new db[(_0x1351('0x77'))][(_0x1351('0x78'))](_0x1351('0x79'));}_0x216314=_[_0x1351('0x7a')](_[_0x1351('0x43')](_0x505c63),[_0x1351('0x7b'),_0x1351('0x7c')]);_0x4b2656=_['difference'](_[_0x1351('0x43')](_0x505c63),[_0x1351('0x7b'),_0x1351('0x7c'),_0x1351('0x7d'),_0x1351('0x7e')]);_0x20dd52['body']={'mapKey':'mobile'};if(_0x20dd52['account'][_0x1351('0x42')]){switch(_0x20dd52['account'][_0x1351('0x42')]){case _0x1351('0x7f'):_0x20dd52[_0x1351('0x5e')][_0x1351('0x80')]=_0x5a1c4a[_0x1351('0x5e')][_0x1351('0x81')];_0x20dd52[_0x1351('0x5e')][_0x1351('0x5e')]=_0x5a1c4a[_0x1351('0x5e')][_0x1351('0x82')];_0x20dd52[_0x1351('0x5e')][_0x1351('0x83')]=_0x5a1c4a[_0x1351('0x5e')][_0x1351('0x84')];break;case _0x1351('0x85'):_0x20dd52[_0x1351('0x5e')][_0x1351('0x80')]='+'+_0x5a1c4a['body'][_0x1351('0x86')];_0x20dd52[_0x1351('0x5e')]['body']=_0x5a1c4a[_0x1351('0x5e')]['text'];break;case _0x1351('0x87'):_0x20dd52[_0x1351('0x5e')][_0x1351('0x80')]=_0x5a1c4a[_0x1351('0x5e')]['from'];_0x20dd52['body'][_0x1351('0x5e')]=_0x5a1c4a[_0x1351('0x5e')][_0x1351('0x29')];break;case'clicksend':_0x20dd52[_0x1351('0x5e')][_0x1351('0x80')]=_0x5a1c4a[_0x1351('0x5e')][_0x1351('0x80')];_0x20dd52[_0x1351('0x5e')][_0x1351('0x5e')]=_0x5a1c4a[_0x1351('0x5e')][_0x1351('0x5e')];_0x20dd52[_0x1351('0x5e')][_0x1351('0x83')]=_0x5a1c4a['body'][_0x1351('0x88')];break;case'plivo':_0x20dd52['body'][_0x1351('0x80')]=_0x5a1c4a[_0x1351('0x5e')][_0x1351('0x81')];_0x20dd52[_0x1351('0x5e')][_0x1351('0x5e')]=_0x5a1c4a[_0x1351('0x5e')][_0x1351('0x89')];_0x20dd52['body']['messageId']=_0x5a1c4a['body'][_0x1351('0x8a')];break;case'infobip':_0x20dd52[_0x1351('0x5e')][_0x1351('0x80')]='+'+_0x5a1c4a['body']['results'][0x0][_0x1351('0x80')];_0x20dd52[_0x1351('0x5e')]['body']=_0x5a1c4a['body'][_0x1351('0x8b')][0x0]['text'];_0x20dd52[_0x1351('0x5e')][_0x1351('0x83')]=_0x5a1c4a[_0x1351('0x5e')]['results'][0x0][_0x1351('0x83')];break;case'csc':_0x20dd52[_0x1351('0x5e')][_0x1351('0x80')]=_0x5a1c4a[_0x1351('0x5e')][_0x1351('0x8c')];_0x20dd52['body'][_0x1351('0x5e')]=_0x5a1c4a[_0x1351('0x5e')][_0x1351('0x8d')][_0x1351('0x29')];break;case _0x1351('0x8e'):_0x20dd52[_0x1351('0x5e')]['from']=_0x5a1c4a[_0x1351('0x5e')][_0x1351('0x8f')];_0x20dd52[_0x1351('0x5e')][_0x1351('0x5e')]=_0x5a1c4a['body'][_0x1351('0x90')];_0x20dd52[_0x1351('0x5e')][_0x1351('0x83')]=_0x5a1c4a[_0x1351('0x5e')]['replyMessageId'];break;case _0x1351('0x91'):_0x20dd52[_0x1351('0x5e')][_0x1351('0x83')]=_0x5a1c4a[_0x1351('0x5e')][0x0][_0x1351('0x29')]['id'];_0x20dd52[_0x1351('0x5e')][_0x1351('0x80')]=_0x5a1c4a[_0x1351('0x5e')][0x0][_0x1351('0x29')][_0x1351('0x80')];_0x20dd52['body'][_0x1351('0x5e')]=_0x5a1c4a[_0x1351('0x5e')][0x0][_0x1351('0x29')][_0x1351('0x90')];break;case'intelepeer':_0x20dd52[_0x1351('0x5e')]['from']=_0x5a1c4a['body'][_0x1351('0x80')];_0x20dd52[_0x1351('0x5e')]['body']=_0x5a1c4a[_0x1351('0x5e')][_0x1351('0x29')];_0x20dd52[_0x1351('0x5e')]['messageId']=_0x5a1c4a['body'][_0x1351('0x92')];break;}}if(_0x20dd52[_0x1351('0x5e')]['id']){delete _0x20dd52[_0x1351('0x5e')]['id'];}if(_['isNil'](_0x20dd52[_0x1351('0x5e')]['from'])){throw new db['Sequelize'][(_0x1351('0x78'))](_0x1351('0x93'));}if(_['isNil'](_0x20dd52[_0x1351('0x5e')][_0x1351('0x5e')])||_0x20dd52['body'][_0x1351('0x5e')]===''){throw new db[(_0x1351('0x77'))][(_0x1351('0x78'))](_0x1351('0x94'));}if(_[_0x1351('0x95')](_0x20dd52['body'][_0x1351('0x96')])){throw new db[(_0x1351('0x77'))][(_0x1351('0x78'))](_0x1351('0x97')+_0x4b2656);}if(!_['includes'](_0x4b2656,_0x20dd52[_0x1351('0x5e')][_0x1351('0x96')])){throw new db[(_0x1351('0x77'))]['ValidationError'](_0x1351('0x98')+_0x4b2656);}_0x279f76[_0x20dd52[_0x1351('0x5e')][_0x1351('0x96')]]=_0x20dd52[_0x1351('0x5e')][_0x1351('0x80')];return db[_0x1351('0x99')][_0x1351('0x62')]({'where':{'id':_0x20dd52[_0x1351('0x72')][_0x1351('0x7e')]},'include':[{'model':db['CmContact'],'as':'Contacts','where':_0x279f76,'limit':0x1,'order':[['updatedAt',_0x1351('0x9a')]]}]});})[_0x1351('0x20')](handleEntityNotFound(_0x365c82,null))['then'](function(_0x5b3782){if(_0x5b3782){_0x20dd52['list']=_[_0x1351('0x9b')](_0x5b3782,['Contacts']);if(_0x5b3782[_0x1351('0x9c')][_0x1351('0x5b')]){return _0x5b3782['Contacts'][0x0];}var _0x3c2ac8=_['defaults'](_0x20dd52[_0x1351('0x5e')],{'firstName':_0x20dd52[_0x1351('0x5e')][_0x1351('0x80')],'ListId':_0x5b3782['id']});_0x3c2ac8[_0x20dd52[_0x1351('0x5e')][_0x1351('0x96')]]=_0x20dd52[_0x1351('0x5e')][_0x1351('0x80')];return db[_0x1351('0x9d')][_0x1351('0x5d')](_0x3c2ac8,{'fields':_0x216314,'raw':!![]});}})[_0x1351('0x20')](handleEntityNotFound(_0x365c82,null))[_0x1351('0x20')](function(_0xfca27d){if(_0xfca27d){_0x20dd52['contact']=_0xfca27d;var _0x37248b={'ContactId':_0xfca27d['id'],'phone':_0x20dd52['body']['from'],'SmsAccountId':_0x5a1c4a[_0x1351('0x59')]['id']};var _0x138979={'ContactId':_0xfca27d['id'],'SmsAccountId':_0x5a1c4a[_0x1351('0x59')]['id'],'closed':![]};return db[_0x1351('0x9e')]['find']({'where':_0x138979})['then'](function(_0x25d5cc){if(_0x25d5cc){return[_0x25d5cc,![]];}return db[_0x1351('0x9e')][_0x1351('0x5d')](_0x37248b)[_0x1351('0x20')](function(_0x43d7b0){return[_0x43d7b0,!![]];});});}})[_0x1351('0x9f')](function(_0x3ca038,_0xc3cafc){_0x20dd52[_0x1351('0xa0')]=_0x3ca038[_0x1351('0x39')]({'plain':!![]});_0x20dd52[_0x1351('0xa0')]['created']=![];if(_0xc3cafc){if(_0x20dd52['account'][_0x1351('0xa1')]){_0x20dd52['applications']['push']({'id':0x0,'priority':_0x20dd52[_0x1351('0x73')]['length']+0x1,'app':_0x1351('0xa2'),'appdata':_0x1351('0xa3'),'interval':_0x1351('0xa4')});}_0x20dd52[_0x1351('0xa0')][_0x1351('0xa5')]=!![];}return db[_0x1351('0xa6')][_0x1351('0x5d')]({'phone':_0x20dd52['body'][_0x1351('0x80')],'messageId':_0x20dd52['body']['messageId'],'body':_0x20dd52[_0x1351('0x5e')][_0x1351('0x5e')],'SmsAccountId':_0x5a1c4a['params']['id'],'SmsInteractionId':_0x3ca038['id'],'direction':'in','ContactId':_0x3ca038[_0x1351('0xa7')],'AttachmentId':_0x20dd52[_0x1351('0x5e')][_0x1351('0xa8')]});})[_0x1351('0x20')](function(_0x1acfda){_0x20dd52[_0x1351('0x29')]=_0x1acfda;if(_0x20dd52[_0x1351('0xa0')]['UserId']){return db[_0x1351('0xa9')][_0x1351('0x62')]({'attributes':['id',_0x1351('0x3c')],'where':{'id':_0x20dd52[_0x1351('0xa0')][_0x1351('0xaa')]}})[_0x1351('0x20')](function(_0x16408f){if(_0x16408f){_0x20dd52[_0x1351('0x73')][_0x1351('0xab')]({'id':0x0,'priority':0x0,'app':'agent','appdata':_0x16408f[_0x1351('0x3c')]+','+(_0x20dd52['account'][_0x1351('0xac')]||0xa),'interval':_0x1351('0xa4')});}return respondWithRpcPromise(_0x1351('0xad'),_0x1351('0xae'),_0x20dd52);});}return respondWithRpcPromise(_0x1351('0xad'),_0x1351('0xae'),_0x20dd52);})[_0x1351('0x20')](function(_0x13b0a5){if(_0x13b0a5){var _0x2c35bf=0xc8;var _0x3e57af='receiveMessage';logger[_0x1351('0x21')](_0x1351('0x25'),_0x3e57af,_0x2c35bf,'entity\x20found');logger[_0x1351('0x24')](_0x1351('0xaf'),_0x3e57af,_0x2c35bf,'entity\x20found',JSON[_0x1351('0x26')](_0x13b0a5));if(_0x20dd52['account'][_0x1351('0x42')]===_0x1351('0x7f')){return _0x365c82[_0x1351('0x2c')](_0x2c35bf)[_0x1351('0x32')](_0x1351('0xb0'),_0x1351('0xb1'))['send']('<?xml\x20version=\x221.0\x22\x20encoding=\x22UTF-8\x22?>\x0a<Response></Response>');}else{return _0x365c82[_0x1351('0x2c')](_0x2c35bf)[_0x1351('0x34')](_0x13b0a5);}}})[_0x1351('0x57')](handleError(_0x365c82,null));};exports[_0x1351('0xb2')]=function(_0x308219,_0x50eed0,_0x51b53f){return db[_0x1351('0x40')]['findOne']({'where':{'id':_0x308219[_0x1351('0x59')]['id']}})['then'](handleEntityNotFound(_0x50eed0,null))['then'](function(_0x28c639){if(_0x28c639){return db[_0x1351('0xb3')]['transaction'](function(_0x456375){return db['SmsApplication'][_0x1351('0x38')]({'where':{'SmsAccountId':_0x308219[_0x1351('0x59')]['id']},'transaction':_0x456375})['then'](function(_0x398f82){var _0x1797bc=_['map'](_0x308219[_0x1351('0x5e')],function(_0x86b5db){_0x86b5db[_0x1351('0x69')]=_0x308219[_0x1351('0x59')]['id'];return _0x86b5db;});return db[_0x1351('0x70')][_0x1351('0xb4')](_0x1797bc,{'transaction':_0x456375});});})[_0x1351('0x20')](function(){return db[_0x1351('0x70')][_0x1351('0xb5')]({'where':{'SmsAccountId':_0x308219['params']['id']},'order':_0x1351('0x75')});});}})['then'](respondWithResult(_0x50eed0,null))[_0x1351('0x57')](handleError(_0x50eed0,null));};exports[_0x1351('0xb6')]=function(_0x274ab2,_0x5d4e17,_0x2d5dcd){var _0x522d6f={};var _0x222906={};var _0x462391;var _0x49156d;return db[_0x1351('0x40')][_0x1351('0x6b')]({'where':{'id':_0x274ab2[_0x1351('0x59')]['id']}})[_0x1351('0x20')](handleEntityNotFound(_0x5d4e17,null))[_0x1351('0x20')](function(_0x49651e){if(_0x49651e){_0x462391=_0x49651e;_0x222906[_0x1351('0x46')]=_['keys'](db[_0x1351('0x70')][_0x1351('0x68')]);_0x222906[_0x1351('0x44')]=_[_0x1351('0x43')](_0x274ab2[_0x1351('0x44')]);_0x222906[_0x1351('0x4e')]=_[_0x1351('0x45')](_0x222906[_0x1351('0x46')],_0x222906[_0x1351('0x44')]);_0x522d6f[_0x1351('0x47')]=_['intersection'](_0x222906['model'],qs['fields'](_0x274ab2['query'][_0x1351('0x48')]));_0x522d6f['attributes']=_0x522d6f[_0x1351('0x47')][_0x1351('0x5b')]?_0x522d6f['attributes']:_0x222906[_0x1351('0x46')];_0x522d6f[_0x1351('0x4b')]=qs['sort'](_0x274ab2[_0x1351('0x44')]['sort']);_0x522d6f[_0x1351('0x4d')]=qs[_0x1351('0x4e')](_['pick'](_0x274ab2[_0x1351('0x44')],_0x222906['filters']));if(_0x274ab2[_0x1351('0x44')][_0x1351('0x50')]){_0x522d6f['where']=_[_0x1351('0x51')](_0x522d6f[_0x1351('0x4d')],{'$or':_['map'](_0x522d6f[_0x1351('0x47')],function(_0x2b1cd8){var _0x43a8ca={};_0x43a8ca[_0x2b1cd8]={'$like':'%'+_0x274ab2['query'][_0x1351('0x50')]+'%'};return _0x43a8ca;})});}_0x522d6f=_[_0x1351('0x51')]({},_0x522d6f,_0x274ab2[_0x1351('0x5c')]);return _0x462391['getApplications'](_0x522d6f);}})[_0x1351('0x20')](function(_0x2432a5){if(_0x2432a5){_0x49156d=_0x2432a5[_0x1351('0x5b')];if(!_0x274ab2['query'][_0x1351('0x49')](_0x1351('0x4a'))){_0x522d6f[_0x1351('0x2f')]=qs['limit'](_0x274ab2[_0x1351('0x44')][_0x1351('0x2f')]);_0x522d6f[_0x1351('0x2e')]=qs[_0x1351('0x2e')](_0x274ab2[_0x1351('0x44')][_0x1351('0x2e')]);}return _0x462391['getApplications'](_0x522d6f);}})[_0x1351('0x20')](function(_0x539f02){if(_0x539f02){return _0x539f02?{'count':_0x49156d,'rows':_0x539f02}:null;}})[_0x1351('0x20')](respondWithResult(_0x5d4e17,null))['catch'](handleError(_0x5d4e17,null));};exports[_0x1351('0xb7')]=function(_0xa7c0d0,_0x30f399,_0x20a3e0){var _0x55cc5d={'raw':![],'where':{}};var _0x5a78a6={};var _0x1af9b4={'count':0x0,'rows':[]};return db[_0x1351('0x40')][_0x1351('0x6b')]({'where':{'id':_0xa7c0d0[_0x1351('0x59')]['id']}})[_0x1351('0x20')](handleEntityNotFound(_0x30f399,null))[_0x1351('0x20')](function(_0xd4d2be){if(_0xd4d2be){_0x5a78a6['model']=_[_0x1351('0x43')](db[_0x1351('0x9e')][_0x1351('0x68')]);_0x5a78a6[_0x1351('0x44')]=_[_0x1351('0x43')](_0xa7c0d0['query']);_0x5a78a6[_0x1351('0x4e')]=_[_0x1351('0x45')](_0x5a78a6[_0x1351('0x46')],_0x5a78a6[_0x1351('0x44')]);_0x55cc5d[_0x1351('0x47')]=_[_0x1351('0x45')](_0x5a78a6['model'],qs[_0x1351('0x48')](_0xa7c0d0[_0x1351('0x44')][_0x1351('0x48')]));_0x55cc5d[_0x1351('0x47')]=_0x55cc5d[_0x1351('0x47')][_0x1351('0x5b')]?_0x55cc5d[_0x1351('0x47')]:_0x5a78a6[_0x1351('0x46')];if(!_0xa7c0d0['query'][_0x1351('0x49')](_0x1351('0x4a'))){_0x55cc5d[_0x1351('0x2f')]=qs['limit'](_0xa7c0d0['query']['limit']);_0x55cc5d[_0x1351('0x2e')]=qs[_0x1351('0x2e')](_0xa7c0d0[_0x1351('0x44')][_0x1351('0x2e')]);}_0x55cc5d['order']=qs[_0x1351('0x4c')](_0xa7c0d0[_0x1351('0x44')][_0x1351('0x4c')]);_0x55cc5d['where']=qs[_0x1351('0x4e')](_[_0x1351('0x4f')](_0xa7c0d0[_0x1351('0x44')],_0x5a78a6[_0x1351('0x4e')]));_0x55cc5d['where'][_0x1351('0x69')]=_0xd4d2be['id'];if(_0xa7c0d0[_0x1351('0x44')][_0x1351('0x50')]){_0x55cc5d[_0x1351('0x4d')]=_[_0x1351('0x51')](_0x55cc5d[_0x1351('0x4d')],{'$or':_[_0x1351('0x3f')](_0x55cc5d[_0x1351('0x47')],function(_0x128140){var _0x3bbbcb={};_0x3bbbcb[_0x128140]={'$like':'%'+_0xa7c0d0[_0x1351('0x44')]['filter']+'%'};return _0x3bbbcb;})});}_0x55cc5d=_[_0x1351('0x51')]({},_0x55cc5d,_0xa7c0d0[_0x1351('0x5c')]);return db[_0x1351('0x9e')][_0x1351('0x31')]({'where':_0x55cc5d[_0x1351('0x4d')]})['then'](function(_0x29361b){_0x1af9b4[_0x1351('0x31')]=_0x29361b;if(_0xa7c0d0[_0x1351('0x44')][_0x1351('0x53')]){_0x55cc5d[_0x1351('0x54')]=[{'model':db[_0x1351('0x9d')],'as':'Contact','required':![]},{'model':db['User'],'as':'Owner','attributes':[_0x1351('0x3c'),_0x1351('0xb8'),_0x1351('0xb9')],'required':![]},{'model':db[_0x1351('0xba')],'as':'Tags','attributes':['id',_0x1351('0x3c'),_0x1351('0xbb')],'where':_0xa7c0d0['query'][_0x1351('0xbc')]?{'id':_0xa7c0d0[_0x1351('0x44')][_0x1351('0xbc')]}:undefined,'required':_0xa7c0d0[_0x1351('0x44')]['tag']?!![]:![]}];}return db[_0x1351('0x9e')][_0x1351('0x55')](_0x55cc5d);})['then'](function(_0x54db43){_0x1af9b4[_0x1351('0x56')]=_0x54db43;return _0x1af9b4;});}})[_0x1351('0x20')](respondWithFilteredResult(_0x30f399,_0x55cc5d))['catch'](handleError(_0x30f399,null));};exports[_0x1351('0x3d')]=function(_0x2e844d,_0x20edec,_0x29f5d4){var _0x23b530,_0x33dc4c,_0x5e3adc;if(_[_0x1351('0x95')](_0x2e844d[_0x1351('0x5e')][_0x1351('0x5e')])||_0x2e844d[_0x1351('0x5e')][_0x1351('0x5e')]===''){throw new db['Sequelize'][(_0x1351('0x78'))](_0x1351('0x94'));}if(_['isNil'](_0x2e844d[_0x1351('0x5e')]['to'])){throw new db['Sequelize'][(_0x1351('0x78'))](_0x1351('0xbd'));}_0x23b530=_0x2e844d[_0x1351('0x5e')]['to'];return db[_0x1351('0x40')][_0x1351('0x62')]({'where':{'id':_0x2e844d['params']['id']},'include':[{'model':db[_0x1351('0x99')],'as':_0x1351('0xbe'),'include':[{'model':db[_0x1351('0x9d')],'as':_0x1351('0x9c'),'where':{'mobile':_0x23b530},'limit':0x1,'order':[[_0x1351('0x7c'),_0x1351('0x9a')]]}]}]})['then'](handleEntityNotFound(_0x20edec,null))[_0x1351('0x20')](function(_0x4fa7c1){if(_0x4fa7c1&&_0x4fa7c1[_0x1351('0xbe')]){_0x33dc4c=_0x4fa7c1[_0x1351('0x39')]({'plain':!![]});if(_0x33dc4c['List']&&_0x33dc4c[_0x1351('0xbe')][_0x1351('0x9c')][_0x1351('0x5b')]){return _0x33dc4c[_0x1351('0xbe')]['Contacts'][0x0];}return db['CmContact'][_0x1351('0x5d')](_[_0x1351('0x19')](_0x2e844d[_0x1351('0x5e')],{'firstName':_0x23b530,'mobile':_0x23b530,'phone':_0x23b530,'ListId':_0x33dc4c['ListId']}));}})[_0x1351('0x20')](handleEntityNotFound(_0x20edec,null))[_0x1351('0x20')](function(_0x31a83e){if(_0x31a83e){_0x5e3adc=_0x31a83e;return db[_0x1351('0x9e')]['find']({'where':{'ContactId':_0x5e3adc['id'],'closed':![],'SmsAccountId':_0x33dc4c['id']}})[_0x1351('0x20')](function(_0x1f1f0b){if(_0x1f1f0b){return[_0x1f1f0b,![]];}return db[_0x1351('0x9e')][_0x1351('0x5d')]({'UserId':_0x2e844d['user']['id'],'ContactId':_0x5e3adc['id'],'SmsAccountId':_0x33dc4c['id'],'phone':_0x23b530,'firstMsgDirection':_0x1351('0xbf'),'Messages':[_[_0x1351('0x51')](_0x2e844d[_0x1351('0x5e')],{'read':![],'body':_0x2e844d[_0x1351('0x5e')]['body'],'phone':_0x23b530,'SmsAccountId':_0x33dc4c['id'],'UserId':_0x2e844d['user']['id'],'ContactId':_0x5e3adc['id']})]},{'include':[{'model':db[_0x1351('0xa6')],'as':_0x1351('0xc0')}]})[_0x1351('0x20')](function(_0x595e4f){return[_0x595e4f,!![]];});});}})[_0x1351('0x9f')](function(_0x4e326f,_0x5d7f51){if(_0x5d7f51){return _0x4e326f;}return db[_0x1351('0xa6')]['create'](_[_0x1351('0x51')](_0x2e844d[_0x1351('0x5e')],{'read':![],'body':_0x2e844d[_0x1351('0x5e')][_0x1351('0x5e')],'phone':_0x23b530,'SmsAccountId':_0x33dc4c['id'],'SmsInteractionId':_0x4e326f['id'],'UserId':_0x2e844d[_0x1351('0x5f')]['id'],'ContactId':_0x5e3adc['id']}))[_0x1351('0x20')](function(_0x17da9e){_0x4e326f[_0x1351('0xc1')][_0x1351('0xc0')]=[];_0x4e326f[_0x1351('0xc1')][_0x1351('0xc0')][_0x1351('0xc2')](_0x17da9e['dataValues']);return _0x4e326f;});})[_0x1351('0x20')](respondWithResult(_0x20edec,null))[_0x1351('0x57')](handleError(_0x20edec,null));};exports['status']=function(_0x3e188a,_0x21042f,_0x255725){if(_0x3e188a[_0x1351('0x5e')]['id']){delete _0x3e188a['body']['id'];}var _0x36ef94,_0x4750ca,_0x462871;return db[_0x1351('0x40')][_0x1351('0x62')]({'where':{'id':_0x3e188a[_0x1351('0x59')]['id']}})[_0x1351('0x20')](handleEntityNotFound(_0x21042f,null))[_0x1351('0x20')](function(_0x24e3a7){if(_0x24e3a7){_0x462871=_0x24e3a7;logger[_0x1351('0x24')](_0x1351('0x25'),_0x1351('0x2c'),_0x1351('0xc3'),_0x24e3a7[_0x1351('0x42')],util[_0x1351('0xc4')](_0x3e188a[_0x1351('0x5e')],{'showHidden':![],'depth':null}));switch(_0x24e3a7['type']){case _0x1351('0x85'):if(_0x3e188a['body'][_0x1351('0xc5')]&&_0x3e188a['body'][_0x1351('0x2c')]){_0x4750ca=_0x3e188a['body'][_0x1351('0x2c')];return db[_0x1351('0xa6')][_0x1351('0x62')]({'where':{'messageId':_0x3e188a[_0x1351('0x5e')][_0x1351('0xc5')]}});}break;case _0x1351('0x87'):if(_0x3e188a[_0x1351('0x5e')][_0x1351('0xc6')]&&_0x3e188a[_0x1351('0x5e')][_0x1351('0xc7')]){_0x4750ca=_0x3e188a[_0x1351('0x5e')][_0x1351('0xc7')];return db[_0x1351('0xa6')][_0x1351('0x62')]({'where':{'messageId':_0x3e188a[_0x1351('0x5e')][_0x1351('0xc6')]}});}break;case'clicksend':if(_0x3e188a[_0x1351('0x5e')][_0x1351('0x88')]&&_0x3e188a[_0x1351('0x5e')][_0x1351('0xc8')]){_0x4750ca=_0x3e188a[_0x1351('0x5e')][_0x1351('0xc8')];return db['SmsMessage']['find']({'where':{'messageId':_0x3e188a[_0x1351('0x5e')][_0x1351('0x88')]}});}break;case _0x1351('0xc9'):var _0x4d0b21=_0x3e188a['body'][_0x1351('0x8b')][0x0];if(_0x4d0b21[_0x1351('0x83')]&&_0x4d0b21[_0x1351('0x2c')]['groupName']==='DELIVERED'){_0x4750ca=_0x4d0b21[_0x1351('0x2c')][_0x1351('0xca')];return db['SmsMessage'][_0x1351('0x62')]({'where':{'messageId':_0x4d0b21[_0x1351('0x83')]}});}break;case _0x1351('0x8e'):if(_0x3e188a[_0x1351('0x5e')]['messageId']&&_0x3e188a[_0x1351('0x5e')][_0x1351('0x2c')]){_0x4750ca=_0x3e188a[_0x1351('0x5e')]['status'];return db[_0x1351('0xa6')][_0x1351('0x62')]({'where':{'messageId':_0x3e188a['body']['messageId']}});}break;case _0x1351('0x91'):if(_0x3e188a[_0x1351('0x5e')][0x0][_0x1351('0x29')]['id']){_0x4750ca=_0x3e188a[_0x1351('0x5e')][0x0][_0x1351('0x42')];return db['SmsMessage'][_0x1351('0x62')]({'where':{'messageId':_0x3e188a[_0x1351('0x5e')][0x0][_0x1351('0x29')]['id']}});}break;case _0x1351('0xcb'):if(_0x3e188a[_0x1351('0x5e')][_0x1351('0xcc')]&&_0x3e188a[_0x1351('0x5e')][_0x1351('0x2c')]){_0x4750ca=_0x3e188a['body'][_0x1351('0x2c')];return db[_0x1351('0xa6')][_0x1351('0x62')]({'where':{'messageId':_0x3e188a['body']['redif']}});}break;}}})[_0x1351('0x20')](handleEntityNotFound(_0x21042f,null))[_0x1351('0x20')](function(_0x92fa26){if(_0x92fa26){_0x36ef94=_0x92fa26;switch(_0x462871['type']){case _0x1351('0x85'):if(_0x4750ca===_0x1351('0xcd')){return _0x36ef94[_0x1351('0x37')]({'read':!![]});}else{logger[_0x1351('0x27')](_0x1351('0x25'),_0x1351('0x2c'),_0x1351('0x85'),util[_0x1351('0xc4')](_0x3e188a[_0x1351('0x5e')],{'showHidden':![],'depth':null}));}break;case _0x1351('0x87'):if(_0x4750ca==='1'){return _0x36ef94[_0x1351('0x37')]({'read':!![]});}else{logger['error'](_0x1351('0x25'),_0x1351('0x2c'),_0x1351('0x85'),util['inspect'](_0x3e188a['body'],{'showHidden':![],'depth':null}));}break;case _0x1351('0xce'):if(!_0x3e188a[_0x1351('0x5e')]['error_code']&&_0x4750ca>=0xc8&&_0x4750ca<=0xce){return _0x36ef94['update']({'read':!![]});}else{logger[_0x1351('0x27')]('SmsAccount,\x20%s,\x20%s,\x20%s',_0x1351('0x2c'),_0x1351('0xce'),util[_0x1351('0xc4')](_0x3e188a[_0x1351('0x5e')],{'showHidden':![],'depth':null}));}break;case _0x1351('0xc9'):var _0x520cc9=_0x3e188a['body']['results'][0x0];if(_0x520cc9[_0x1351('0x2c')][_0x1351('0xca')]===_0x1351('0xcd')){return _0x36ef94[_0x1351('0x37')]({'read':!![]});}else{logger[_0x1351('0x27')](_0x1351('0x25'),'status',_0x1351('0xc9'),util[_0x1351('0xc4')](_0x3e188a['body'],{'showHidden':![],'depth':null}));}break;case _0x1351('0x8e'):if(_0x4750ca=='DELIVERED_TO_GATEWAY'||_0x4750ca=='RECEIVED_BY_RECIPIENT'){return _0x36ef94['update']({'read':!![]});}else{logger[_0x1351('0x27')](_0x1351('0x25'),_0x1351('0x2c'),_0x1351('0x8e'),util[_0x1351('0xc4')](_0x3e188a['body'],{'showHidden':![],'depth':null}));}break;case _0x1351('0x91'):if(_0x4750ca=='message-delivered'){return _0x36ef94[_0x1351('0x37')]({'read':!![]});}else{logger['error'](_0x1351('0x25'),_0x1351('0x2c'),_0x1351('0x91'),util['inspect'](_0x3e188a[_0x1351('0x5e')],{'showHidden':![],'depth':null}));}break;case _0x1351('0xcb'):if(_0x4750ca===_0x1351('0xcf')||_0x4750ca===_0x1351('0xd0')){return _0x36ef94['update']({'read':!![]});}else{logger[_0x1351('0x27')](_0x1351('0x25'),_0x1351('0x2c'),'intelepeer',util[_0x1351('0xc4')](_0x3e188a[_0x1351('0x5e')],{'showHidden':![],'depth':null}));}break;}return _0x36ef94;}})['then'](respondWithResult(_0x21042f,null))['catch'](handleError(_0x21042f,null));};exports['statusGet']=function(_0x24e2df,_0x52dc7b,_0x535208){var _0x4fe922,_0x38c135,_0x1a7974;return db[_0x1351('0x40')][_0x1351('0x62')]({'where':{'id':_0x24e2df[_0x1351('0x59')]['id']}})[_0x1351('0x20')](handleEntityNotFound(_0x52dc7b,null))[_0x1351('0x20')](function(_0x8163d){if(_0x8163d){_0x1a7974=_0x8163d;logger[_0x1351('0x24')](_0x1351('0x25'),_0x1351('0x2c'),_0x1351('0xc3'),_0x8163d[_0x1351('0x42')],util[_0x1351('0xc4')](_0x24e2df[_0x1351('0x44')],{'showHidden':![],'depth':null}));switch(_0x8163d[_0x1351('0x42')]){case _0x1351('0xd1'):if(_0x24e2df[_0x1351('0x44')][_0x1351('0xd2')]&&_0x24e2df[_0x1351('0x44')][_0x1351('0xd3')]){_0x38c135=_0x24e2df[_0x1351('0x44')][_0x1351('0xd3')];return db[_0x1351('0xa6')]['find']({'where':{'messageId':_0x24e2df[_0x1351('0x44')][_0x1351('0xd2')]}});}break;}}})['then'](handleEntityNotFound(_0x52dc7b,null))[_0x1351('0x20')](function(_0x3cc7c3){if(_0x3cc7c3){_0x4fe922=_0x3cc7c3;switch(_0x1a7974[_0x1351('0x42')]){case _0x1351('0xd1'):if(_0x38c135==='2'||_0x38c135==='6'){return _0x4fe922[_0x1351('0x37')]({'read':!![]});}else{logger['error'](_0x1351('0x25'),_0x1351('0x2c'),_0x1351('0xd1'),util['inspect'](_0x24e2df[_0x1351('0x44')],{'showHidden':![],'depth':null}));};break;}return _0x4fe922;}})['then'](respondWithResult(_0x52dc7b,null))[_0x1351('0x57')](handleError(_0x52dc7b,null));};exports['addAgents']=function(_0x4abc0c,_0x150e96,_0x198c95){return db['SmsAccount'][_0x1351('0x62')]({'where':{'id':_0x4abc0c[_0x1351('0x59')]['id']}})['then'](handleEntityNotFound(_0x150e96,null))[_0x1351('0x20')](function(_0x38255d){if(_0x38255d){return _0x38255d['addAgents'](_0x4abc0c[_0x1351('0x5e')][_0x1351('0x6e')],_[_0x1351('0x9b')](_0x4abc0c[_0x1351('0x5e')],[_0x1351('0x6e'),'id'])||{})[_0x1351('0x9f')](function(_0x4a908c){for(var _0x1a52f2=0x0;_0x1a52f2<_0x4abc0c[_0x1351('0x5e')][_0x1351('0x6e')]['length'];_0x1a52f2+=0x1){socket[_0x1351('0xd4')](_0x1351('0xd5'),{'UserId':Number(_0x4abc0c[_0x1351('0x5e')]['ids'][_0x1a52f2]),'SmsAccountId':Number(_0x4abc0c['params']['id'])});}return _0x4a908c;});}})[_0x1351('0x20')](respondWithResult(_0x150e96,null))[_0x1351('0x57')](handleError(_0x150e96,null));};exports['removeAgents']=function(_0xa7a763,_0x52ef08,_0x66f612){return db[_0x1351('0x40')][_0x1351('0x62')]({'where':{'id':_0xa7a763[_0x1351('0x59')]['id']}})[_0x1351('0x20')](handleEntityNotFound(_0x52ef08,null))[_0x1351('0x20')](function(_0x13f9f6){if(_0x13f9f6){return _0x13f9f6[_0x1351('0xd6')](_0xa7a763[_0x1351('0x44')]['ids'])[_0x1351('0x20')](function(){if(_[_0x1351('0xd7')](_0xa7a763['query']['ids'])){for(var _0x5d34e8=0x0;_0x5d34e8<_0xa7a763[_0x1351('0x44')][_0x1351('0x6e')][_0x1351('0x5b')];_0x5d34e8+=0x1){socket[_0x1351('0xd4')]('userSmsAccount:remove',{'UserId':Number(_0xa7a763[_0x1351('0x44')][_0x1351('0x6e')][_0x5d34e8]),'SmsAccountId':Number(_0xa7a763[_0x1351('0x59')]['id'])});}}else{socket[_0x1351('0xd4')](_0x1351('0xd8'),{'UserId':Number(_0xa7a763['query'][_0x1351('0x6e')]),'SmsAccountId':Number(_0xa7a763['params']['id'])});}});}})[_0x1351('0x20')](respondWithStatusCode(_0x52ef08,null))['catch'](handleError(_0x52ef08,null));};exports[_0x1351('0xd9')]=function(_0x2237d3,_0x57ddf7,_0x546d15){var _0x4f71dd={};var _0x49ce3b={};var _0x8631b0;var _0x579049;return db[_0x1351('0x40')][_0x1351('0x6b')]({'where':{'id':_0x2237d3[_0x1351('0x59')]['id']}})[_0x1351('0x20')](handleEntityNotFound(_0x57ddf7,null))['then'](function(_0x41cb8a){if(_0x41cb8a){_0x8631b0=_0x41cb8a;_0x49ce3b['model']=_[_0x1351('0x43')](db[_0x1351('0xa9')]['rawAttributes']);_0x49ce3b['query']=_['keys'](_0x2237d3[_0x1351('0x44')]);_0x49ce3b['filters']=_['intersection'](_0x49ce3b['model'],_0x49ce3b[_0x1351('0x44')]);_0x4f71dd[_0x1351('0x47')]=_['intersection'](_0x49ce3b[_0x1351('0x46')],qs['fields'](_0x2237d3[_0x1351('0x44')][_0x1351('0x48')]));_0x4f71dd[_0x1351('0x47')]=_0x4f71dd[_0x1351('0x47')][_0x1351('0x5b')]?_0x4f71dd[_0x1351('0x47')]:_0x49ce3b[_0x1351('0x46')];_0x4f71dd['order']=qs['sort'](_0x2237d3[_0x1351('0x44')][_0x1351('0x4c')]);_0x4f71dd[_0x1351('0x4d')]=qs[_0x1351('0x4e')](_[_0x1351('0x4f')](_0x2237d3[_0x1351('0x44')],_0x49ce3b[_0x1351('0x4e')]));if(_0x2237d3[_0x1351('0x44')]['filter']){_0x4f71dd[_0x1351('0x4d')]=_[_0x1351('0x51')](_0x4f71dd['where'],{'$or':_[_0x1351('0x3f')](_0x4f71dd[_0x1351('0x47')],function(_0xb839c1){var _0x123c10={};_0x123c10[_0xb839c1]={'$like':'%'+_0x2237d3[_0x1351('0x44')][_0x1351('0x50')]+'%'};return _0x123c10;})});}_0x4f71dd=_[_0x1351('0x51')]({},_0x4f71dd,_0x2237d3[_0x1351('0x5c')]);return _0x8631b0['getAgents'](_0x4f71dd);}})['then'](function(_0x49402c){if(_0x49402c){_0x579049=_0x49402c['length'];if(!_0x2237d3[_0x1351('0x44')][_0x1351('0x49')](_0x1351('0x4a'))){_0x4f71dd[_0x1351('0x2f')]=qs[_0x1351('0x2f')](_0x2237d3[_0x1351('0x44')]['limit']);_0x4f71dd[_0x1351('0x2e')]=qs[_0x1351('0x2e')](_0x2237d3[_0x1351('0x44')][_0x1351('0x2e')]);}return _0x8631b0[_0x1351('0xd9')](_0x4f71dd);}})[_0x1351('0x20')](function(_0x5c785d){if(_0x5c785d){return _0x5c785d?{'count':_0x579049,'rows':_0x5c785d}:null;}})[_0x1351('0x20')](respondWithResult(_0x57ddf7,null))[_0x1351('0x57')](handleError(_0x57ddf7,null));};
\ No newline at end of file
index cf9ee63..b4cc4f0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2572=['exports','events','../../mysqldb','setMaxListeners','save','update','remove','emit','hasOwnProperty','hook'];(function(_0xa148b7,_0x2f3eb2){var _0x51efd3=function(_0x34bcec){while(--_0x34bcec){_0xa148b7['push'](_0xa148b7['shift']());}};_0x51efd3(++_0x2f3eb2);}(_0x2572,0x191));var _0x2257=function(_0x13ea00,_0x12f610){_0x13ea00=_0x13ea00-0x0;var _0x1f7347=_0x2572[_0x13ea00];return _0x1f7347;};'use strict';var EventEmitter=require(_0x2257('0x0'));var SmsAccount=require(_0x2257('0x1'))['db']['SmsAccount'];var SmsAccountEvents=new EventEmitter();SmsAccountEvents[_0x2257('0x2')](0x0);var events={'afterCreate':_0x2257('0x3'),'afterUpdate':_0x2257('0x4'),'afterDestroy':_0x2257('0x5')};function emitEvent(_0x4c02d3){return function(_0x26f526,_0x2117a3,_0x1f0a26){SmsAccountEvents[_0x2257('0x6')](_0x4c02d3+':'+_0x26f526['id'],_0x26f526);SmsAccountEvents[_0x2257('0x6')](_0x4c02d3,_0x26f526);_0x1f0a26(null);};}for(var e in events){if(events[_0x2257('0x7')](e)){var event=events[e];SmsAccount[_0x2257('0x8')](e,emitEvent(event));}}module[_0x2257('0x9')]=SmsAccountEvents;
\ No newline at end of file
+var _0xb21f=['setMaxListeners','remove','emit','hasOwnProperty','hook','exports','events'];(function(_0x3b7f43,_0x35f9ef){var _0x5f28dd=function(_0x3e81c7){while(--_0x3e81c7){_0x3b7f43['push'](_0x3b7f43['shift']());}};_0x5f28dd(++_0x35f9ef);}(_0xb21f,0x1c6));var _0xfb21=function(_0x1762b4,_0x33d836){_0x1762b4=_0x1762b4-0x0;var _0x29beda=_0xb21f[_0x1762b4];return _0x29beda;};'use strict';var EventEmitter=require(_0xfb21('0x0'));var SmsAccount=require('../../mysqldb')['db']['SmsAccount'];var SmsAccountEvents=new EventEmitter();SmsAccountEvents[_0xfb21('0x1')](0x0);var events={'afterCreate':'save','afterUpdate':'update','afterDestroy':_0xfb21('0x2')};function emitEvent(_0x20c68a){return function(_0x55e225,_0x1f6eb8,_0x29a0e9){SmsAccountEvents[_0xfb21('0x3')](_0x20c68a+':'+_0x55e225['id'],_0x55e225);SmsAccountEvents[_0xfb21('0x3')](_0x20c68a,_0x55e225);_0x29a0e9(null);};}for(var e in events){if(events[_0xfb21('0x4')](e)){var event=events[e];SmsAccount[_0xfb21('0x5')](e,emitEvent(event));}}module[_0xfb21('0x6')]=SmsAccountEvents;
\ No newline at end of file
index a33c4fb..0ce021a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x11ec=['define','SmsAccount','lodash','util','../../config/logger','api','moment','bluebird','path','../../config/environment','./smsAccount.attributes','exports'];(function(_0x24618a,_0x2cd0f4){var _0x2e3d64=function(_0x28c59c){while(--_0x28c59c){_0x24618a['push'](_0x24618a['shift']());}};_0x2e3d64(++_0x2cd0f4);}(_0x11ec,0xda));var _0xc11e=function(_0x37e845,_0x219f9f){_0x37e845=_0x37e845-0x0;var _0x59e55b=_0x11ec[_0x37e845];return _0x59e55b;};'use strict';var _=require(_0xc11e('0x0'));var util=require(_0xc11e('0x1'));var logger=require(_0xc11e('0x2'))(_0xc11e('0x3'));var moment=require(_0xc11e('0x4'));var BPromise=require(_0xc11e('0x5'));var rp=require('request-promise');var fs=require('fs');var path=require(_0xc11e('0x6'));var rimraf=require('rimraf');var config=require(_0xc11e('0x7'));var attributes=require(_0xc11e('0x8'));module[_0xc11e('0x9')]=function(_0x17b5b1,_0x53746b){return _0x17b5b1[_0xc11e('0xa')](_0xc11e('0xb'),attributes,{'tableName':'sms_accounts','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x6704=['./smsAccount.attributes','exports','define','sms_accounts','lodash','util','api','moment','bluebird','request-promise','path','rimraf','../../config/environment'];(function(_0x46698a,_0x8de1e4){var _0x356db0=function(_0x19e83c){while(--_0x19e83c){_0x46698a['push'](_0x46698a['shift']());}};_0x356db0(++_0x8de1e4);}(_0x6704,0x1d8));var _0x4670=function(_0x4c0ca4,_0x32ab9c){_0x4c0ca4=_0x4c0ca4-0x0;var _0x154cd2=_0x6704[_0x4c0ca4];return _0x154cd2;};'use strict';var _=require(_0x4670('0x0'));var util=require(_0x4670('0x1'));var logger=require('../../config/logger')(_0x4670('0x2'));var moment=require(_0x4670('0x3'));var BPromise=require(_0x4670('0x4'));var rp=require(_0x4670('0x5'));var fs=require('fs');var path=require(_0x4670('0x6'));var rimraf=require(_0x4670('0x7'));var config=require(_0x4670('0x8'));var attributes=require(_0x4670('0x9'));module[_0x4670('0xa')]=function(_0x4b5ea7,_0x465af4){return _0x4b5ea7[_0x4670('0xb')]('SmsAccount',attributes,{'tableName':_0x4670('0xc'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index a01716a..04990c7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x76ee=['randomstring','../../mysqldb','../../config/utils','../../config/logger','rpc','jayson/promise','client','http','defaults','localhost','./smsAccount.socket','register','request','then','debug','SmsAccount,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','code','message','SmsAccount,\x20%s,\x20%s','info','result','ShowSmsAccount','SmsAccount','raw','options','where','attributes','include','map','catch','lodash','util','moment','bluebird'];(function(_0x122509,_0x341bb2){var _0x119bb4=function(_0x47eb67){while(--_0x47eb67){_0x122509['push'](_0x122509['shift']());}};_0x119bb4(++_0x341bb2);}(_0x76ee,0x1dd));var _0xe76e=function(_0x876714,_0x446d3b){_0x876714=_0x876714-0x0;var _0x22ea27=_0x76ee[_0x876714];return _0x22ea27;};'use strict';var _=require(_0xe76e('0x0'));var util=require(_0xe76e('0x1'));var moment=require(_0xe76e('0x2'));var BPromise=require(_0xe76e('0x3'));var rs=require(_0xe76e('0x4'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0xe76e('0x5'))['db'];var utils=require(_0xe76e('0x6'));var logger=require(_0xe76e('0x7'))(_0xe76e('0x8'));var config=require('../../config/environment');var jayson=require(_0xe76e('0x9'));var client=jayson[_0xe76e('0xa')][_0xe76e('0xb')]({'port':0x232a});config['redis']=_[_0xe76e('0xc')](config['redis'],{'host':_0xe76e('0xd'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config['redis']));require(_0xe76e('0xe'))[_0xe76e('0xf')](socket);function respondWithRpcPromise(_0x251ec8,_0x5768d1,_0x22b80e){return new BPromise(function(_0x983df1,_0x4d8c17){return client[_0xe76e('0x10')](_0x251ec8,_0x22b80e)[_0xe76e('0x11')](function(_0x2a4738){logger['info']('SmsAccount,\x20%s,\x20%s',_0x5768d1,'request\x20sent');logger[_0xe76e('0x12')](_0xe76e('0x13'),_0x5768d1,_0xe76e('0x14'),JSON[_0xe76e('0x15')](_0x2a4738));if(_0x2a4738[_0xe76e('0x16')]){if(_0x2a4738[_0xe76e('0x16')][_0xe76e('0x17')]===0x1f4){logger[_0xe76e('0x16')]('SmsAccount,\x20%s,\x20%s',_0x5768d1,_0x2a4738[_0xe76e('0x16')]['message']);return _0x4d8c17(_0x2a4738[_0xe76e('0x16')][_0xe76e('0x18')]);}logger[_0xe76e('0x16')](_0xe76e('0x19'),_0x5768d1,_0x2a4738[_0xe76e('0x16')][_0xe76e('0x18')]);return _0x983df1(_0x2a4738['error'][_0xe76e('0x18')]);}else{logger[_0xe76e('0x1a')](_0xe76e('0x19'),_0x5768d1,_0xe76e('0x14'));_0x983df1(_0x2a4738[_0xe76e('0x1b')][_0xe76e('0x18')]);}})['catch'](function(_0x1d1c82){logger['error'](_0xe76e('0x19'),_0x5768d1,_0x1d1c82);_0x4d8c17(_0x1d1c82);});});}exports[_0xe76e('0x1c')]=function(_0x2f3c82){var _0xa79ca=this;return new Promise(function(_0x459644,_0xa73d12){return db[_0xe76e('0x1d')]['find']({'raw':_0x2f3c82['options']?_0x2f3c82['options'][_0xe76e('0x1e')]===undefined?!![]:![]:!![],'where':_0x2f3c82[_0xe76e('0x1f')]?_0x2f3c82[_0xe76e('0x1f')][_0xe76e('0x20')]||null:null,'attributes':_0x2f3c82[_0xe76e('0x1f')]?_0x2f3c82['options'][_0xe76e('0x21')]||null:null,'include':_0x2f3c82[_0xe76e('0x1f')]?_0x2f3c82['options'][_0xe76e('0x22')]?_['map'](_0x2f3c82['options'][_0xe76e('0x22')],function(_0x27708f){return{'model':db[_0x27708f['model']],'as':_0x27708f['as'],'attributes':_0x27708f[_0xe76e('0x21')],'include':_0x27708f['include']?_[_0xe76e('0x23')](_0x27708f[_0xe76e('0x22')],function(_0x50e249){return{'model':db[_0x50e249['model']],'as':_0x50e249['as'],'attributes':_0x50e249[_0xe76e('0x21')],'include':_0x50e249[_0xe76e('0x22')]?_[_0xe76e('0x23')](_0x50e249[_0xe76e('0x22')],function(_0x5c4c0e){return{'model':db[_0x5c4c0e['model']],'as':_0x5c4c0e['as'],'attributes':_0x5c4c0e[_0xe76e('0x21')]};}):[]};}):[]};}):[]:[]})['then'](function(_0xd93888){logger[_0xe76e('0x1a')]('ShowSmsAccount',_0x2f3c82);logger[_0xe76e('0x12')](_0xe76e('0x1c'),_0x2f3c82,JSON[_0xe76e('0x15')](_0xd93888));_0x459644(_0xd93888);})[_0xe76e('0x24')](function(_0x1e5e1e){logger[_0xe76e('0x16')](_0xe76e('0x1c'),_0x1e5e1e[_0xe76e('0x18')],_0x2f3c82);_0xa73d12(_0xa79ca[_0xe76e('0x16')](0x1f4,_0x1e5e1e[_0xe76e('0x18')]));});});};
\ No newline at end of file
+var _0x92df=['lodash','moment','bluebird','randomstring','ioredis','../../config/utils','../../config/logger','../../config/environment','jayson/promise','client','http','redis','localhost','socket.io-emitter','register','request','then','info','SmsAccount,\x20%s,\x20%s','request\x20sent','debug','stringify','error','code','message','result','SmsAccount','find','options','where','attributes','map','include','model','ShowSmsAccount'];(function(_0x1ca5bf,_0x3eb983){var _0x37cb08=function(_0x3234ad){while(--_0x3234ad){_0x1ca5bf['push'](_0x1ca5bf['shift']());}};_0x37cb08(++_0x3eb983);}(_0x92df,0x69));var _0xf92d=function(_0x5ce50b,_0x30a57e){_0x5ce50b=_0x5ce50b-0x0;var _0x479717=_0x92df[_0x5ce50b];return _0x479717;};'use strict';var _=require(_0xf92d('0x0'));var util=require('util');var moment=require(_0xf92d('0x1'));var BPromise=require(_0xf92d('0x2'));var rs=require(_0xf92d('0x3'));var fs=require('fs');var Redis=require(_0xf92d('0x4'));var db=require('../../mysqldb')['db'];var utils=require(_0xf92d('0x5'));var logger=require(_0xf92d('0x6'))('rpc');var config=require(_0xf92d('0x7'));var jayson=require(_0xf92d('0x8'));var client=jayson[_0xf92d('0x9')][_0xf92d('0xa')]({'port':0x232a});config[_0xf92d('0xb')]=_['defaults'](config['redis'],{'host':_0xf92d('0xc'),'port':0x18eb});var socket=require(_0xf92d('0xd'))(new Redis(config[_0xf92d('0xb')]));require('./smsAccount.socket')[_0xf92d('0xe')](socket);function respondWithRpcPromise(_0x5ccb37,_0x46daef,_0xd6f30a){return new BPromise(function(_0x2de923,_0x41d49d){return client[_0xf92d('0xf')](_0x5ccb37,_0xd6f30a)[_0xf92d('0x10')](function(_0x3ae861){logger[_0xf92d('0x11')](_0xf92d('0x12'),_0x46daef,_0xf92d('0x13'));logger[_0xf92d('0x14')]('SmsAccount,\x20%s,\x20%s,\x20%s',_0x46daef,_0xf92d('0x13'),JSON[_0xf92d('0x15')](_0x3ae861));if(_0x3ae861['error']){if(_0x3ae861[_0xf92d('0x16')][_0xf92d('0x17')]===0x1f4){logger[_0xf92d('0x16')](_0xf92d('0x12'),_0x46daef,_0x3ae861[_0xf92d('0x16')][_0xf92d('0x18')]);return _0x41d49d(_0x3ae861['error']['message']);}logger[_0xf92d('0x16')](_0xf92d('0x12'),_0x46daef,_0x3ae861[_0xf92d('0x16')][_0xf92d('0x18')]);return _0x2de923(_0x3ae861['error'][_0xf92d('0x18')]);}else{logger[_0xf92d('0x11')](_0xf92d('0x12'),_0x46daef,_0xf92d('0x13'));_0x2de923(_0x3ae861[_0xf92d('0x19')][_0xf92d('0x18')]);}})['catch'](function(_0x5707f0){logger[_0xf92d('0x16')]('SmsAccount,\x20%s,\x20%s',_0x46daef,_0x5707f0);_0x41d49d(_0x5707f0);});});}exports['ShowSmsAccount']=function(_0x3dccde){var _0x447a61=this;return new Promise(function(_0xc82e22,_0x447dbf){return db[_0xf92d('0x1a')][_0xf92d('0x1b')]({'raw':_0x3dccde[_0xf92d('0x1c')]?_0x3dccde['options']['raw']===undefined?!![]:![]:!![],'where':_0x3dccde[_0xf92d('0x1c')]?_0x3dccde[_0xf92d('0x1c')][_0xf92d('0x1d')]||null:null,'attributes':_0x3dccde[_0xf92d('0x1c')]?_0x3dccde[_0xf92d('0x1c')][_0xf92d('0x1e')]||null:null,'include':_0x3dccde[_0xf92d('0x1c')]?_0x3dccde['options']['include']?_[_0xf92d('0x1f')](_0x3dccde[_0xf92d('0x1c')][_0xf92d('0x20')],function(_0x2e2e68){return{'model':db[_0x2e2e68[_0xf92d('0x21')]],'as':_0x2e2e68['as'],'attributes':_0x2e2e68[_0xf92d('0x1e')],'include':_0x2e2e68[_0xf92d('0x20')]?_[_0xf92d('0x1f')](_0x2e2e68[_0xf92d('0x20')],function(_0x92d7fd){return{'model':db[_0x92d7fd[_0xf92d('0x21')]],'as':_0x92d7fd['as'],'attributes':_0x92d7fd[_0xf92d('0x1e')],'include':_0x92d7fd['include']?_[_0xf92d('0x1f')](_0x92d7fd['include'],function(_0x38336b){return{'model':db[_0x38336b['model']],'as':_0x38336b['as'],'attributes':_0x38336b[_0xf92d('0x1e')]};}):[]};}):[]};}):[]:[]})[_0xf92d('0x10')](function(_0x288c0b){logger['info'](_0xf92d('0x22'),_0x3dccde);logger[_0xf92d('0x14')](_0xf92d('0x22'),_0x3dccde,JSON[_0xf92d('0x15')](_0x288c0b));_0xc82e22(_0x288c0b);})['catch'](function(_0x8ddc08){logger[_0xf92d('0x16')](_0xf92d('0x22'),_0x8ddc08[_0xf92d('0x18')],_0x3dccde);_0x447dbf(_0x447a61[_0xf92d('0x16')](0x1f4,_0x8ddc08['message']));});});};
\ No newline at end of file
index af046dc..7b4e606 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(_0x57b54c,_0x54ce0d){var _0x59cc19=function(_0xa33bc6){while(--_0xa33bc6){_0x57b54c['push'](_0x57b54c['shift']());}};_0x59cc19(++_0x54ce0d);}(_0xa9e0,0x123));var _0x0a9e=function(_0x4154a6,_0x2c0b8e){_0x4154a6=_0x4154a6-0x0;var _0x3b2786=_0xa9e0[_0x4154a6];return _0x3b2786;};'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(_0x42cae2,_0x284ef8){var _0x5f256f=function(_0x41abc8){while(--_0x41abc8){_0x42cae2['push'](_0x42cae2['shift']());}};_0x5f256f(++_0x284ef8);}(_0xa9e0,0x123));var _0x0a9e=function(_0x5b78e8,_0x55096b){_0x5b78e8=_0x5b78e8-0x0;var _0xf2c321=_0xa9e0[_0x5b78e8];return _0xf2c321;};'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 eee6e8d..aa91115 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x55ca=['update','delete','/:id','destroy','exports','multer','util','Router','fs-extra','../../components/interaction/service','../../config/environment','./smsApplication.controller','get','isAuthenticated','index','show','create'];(function(_0x1b3cd1,_0x22c749){var _0x3058af=function(_0x121978){while(--_0x121978){_0x1b3cd1['push'](_0x1b3cd1['shift']());}};_0x3058af(++_0x22c749);}(_0x55ca,0x126));var _0xa55c=function(_0x2e3107,_0x25f970){_0x2e3107=_0x2e3107-0x0;var _0x833d69=_0x55ca[_0x2e3107];return _0x833d69;};'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['post']('/',auth[_0xa55c('0x8')](),controller[_0xa55c('0xb')]);router['put']('/:id',auth[_0xa55c('0x8')](),controller[_0xa55c('0xc')]);router[_0xa55c('0xd')](_0xa55c('0xe'),auth[_0xa55c('0x8')](),controller[_0xa55c('0xf')]);module[_0xa55c('0x10')]=router;
\ No newline at end of file
+var _0x008c=['exports','multer','util','path','connect-timeout','express','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./smsApplication.controller','get','isAuthenticated','index','post','put','/:id'];(function(_0x1d1b38,_0x56fb20){var _0x3980ae=function(_0x21be84){while(--_0x21be84){_0x1d1b38['push'](_0x1d1b38['shift']());}};_0x3980ae(++_0x56fb20);}(_0x008c,0x188));var _0xc008=function(_0x4b505a,_0x1bffc6){_0x4b505a=_0x4b505a-0x0;var _0x4a09f7=_0x008c[_0x4b505a];return _0x4a09f7;};'use strict';var multer=require(_0xc008('0x0'));var util=require(_0xc008('0x1'));var path=require(_0xc008('0x2'));var timeout=require(_0xc008('0x3'));var express=require(_0xc008('0x4'));var router=express['Router']();var fs_extra=require(_0xc008('0x5'));var auth=require(_0xc008('0x6'));var interaction=require(_0xc008('0x7'));var config=require(_0xc008('0x8'));var controller=require(_0xc008('0x9'));router[_0xc008('0xa')]('/',auth[_0xc008('0xb')](),controller[_0xc008('0xc')]);router[_0xc008('0xa')]('/:id',auth[_0xc008('0xb')](),controller['show']);router[_0xc008('0xd')]('/',auth['isAuthenticated'](),controller['create']);router[_0xc008('0xe')](_0xc008('0xf'),auth['isAuthenticated'](),controller['update']);router['delete'](_0xc008('0xf'),auth[_0xc008('0xb')](),controller['destroy']);module[_0xc008('0x10')]=router;
\ No newline at end of file
index e4ca0fd..b862fff 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2c63=['*,*,*,*','sequelize','exports','INTEGER','STRING','noop'];(function(_0x18d2fc,_0xc07360){var _0x287add=function(_0x4e9b10){while(--_0x4e9b10){_0x18d2fc['push'](_0x18d2fc['shift']());}};_0x287add(++_0xc07360);}(_0x2c63,0x133));var _0x32c6=function(_0x23e7c1,_0x35110c){_0x23e7c1=_0x23e7c1-0x0;var _0x1add43=_0x2c63[_0x23e7c1];return _0x1add43;};'use strict';var Sequelize=require(_0x32c6('0x0'));module[_0x32c6('0x1')]={'priority':{'type':Sequelize[_0x32c6('0x2')],'allowNull':![]},'app':{'type':Sequelize[_0x32c6('0x3')],'allowNull':![],'defaultValue':_0x32c6('0x4')},'appdata':{'type':Sequelize['TEXT']()},'description':{'type':Sequelize[_0x32c6('0x3')]},'interval':{'type':Sequelize[_0x32c6('0x3')],'defaultValue':_0x32c6('0x5')}};
\ No newline at end of file
+var _0x630a=['noop','*,*,*,*','sequelize','exports','INTEGER','STRING'];(function(_0x3e7974,_0x5ec453){var _0x30bf9f=function(_0x283d29){while(--_0x283d29){_0x3e7974['push'](_0x3e7974['shift']());}};_0x30bf9f(++_0x5ec453);}(_0x630a,0x68));var _0xa630=function(_0x200aa5,_0x197802){_0x200aa5=_0x200aa5-0x0;var _0x458200=_0x630a[_0x200aa5];return _0x458200;};'use strict';var Sequelize=require(_0xa630('0x0'));module[_0xa630('0x1')]={'priority':{'type':Sequelize[_0xa630('0x2')],'allowNull':![]},'app':{'type':Sequelize[_0xa630('0x3')],'allowNull':![],'defaultValue':_0xa630('0x4')},'appdata':{'type':Sequelize['TEXT']()},'description':{'type':Sequelize['STRING']},'interval':{'type':Sequelize['STRING'],'defaultValue':_0xa630('0x5')}};
\ No newline at end of file
index f57210a..0f59e00 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1a6d=['jsforce','desk.js','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/license/util','end','status','json','offset','undefined','limit','count','set','Content-Range','apply','reject','update','then','destroy','error','stack','name','map','SmsApplication','rawAttributes','key','model','query','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','filters','pick','filter','merge','type','options','catch','show','params','includeAll','include','create','body','find','eml-format','rimraf','request-promise','moment','mustache','sox','to-csv','ejs','fs-extra','lodash','squel','crypto'];(function(_0x476b5f,_0x1f9952){var _0x5a23d8=function(_0x50b464){while(--_0x50b464){_0x476b5f['push'](_0x476b5f['shift']());}};_0x5a23d8(++_0x1f9952);}(_0x1a6d,0x7e));var _0xd1a6=function(_0x438c7f,_0x2fe646){_0x438c7f=_0x438c7f-0x0;var _0x3601f8=_0x1a6d[_0x438c7f];return _0x3601f8;};'use strict';var emlformat=require(_0xd1a6('0x0'));var rimraf=require(_0xd1a6('0x1'));var zipdir=require('zip-dir');var jsonpatch=require('fast-json-patch');var rp=require(_0xd1a6('0x2'));var moment=require(_0xd1a6('0x3'));var BPromise=require('bluebird');var Mustache=require(_0xd1a6('0x4'));var util=require('util');var path=require('path');var sox=require(_0xd1a6('0x5'));var csv=require(_0xd1a6('0x6'));var ejs=require(_0xd1a6('0x7'));var fs=require('fs');var fs_extra=require(_0xd1a6('0x8'));var _=require(_0xd1a6('0x9'));var squel=require(_0xd1a6('0xa'));var crypto=require(_0xd1a6('0xb'));var jsforce=require(_0xd1a6('0xc'));var deskjs=require(_0xd1a6('0xd'));var toCsv=require('to-csv');var querystring=require('querystring');var Papa=require('papaparse');var Redis=require(_0xd1a6('0xe'));var authService=require(_0xd1a6('0xf'));var qs=require(_0xd1a6('0x10'));var as=require(_0xd1a6('0x11'));var hardwareService=require(_0xd1a6('0x12'));var logger=require(_0xd1a6('0x13'))(_0xd1a6('0x14'));var utils=require(_0xd1a6('0x15'));var config=require('../../config/environment');var licenseUtil=require(_0xd1a6('0x16'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x1636f7,_0x37e2d9){_0x37e2d9=_0x37e2d9||0xcc;return function(_0x16d335){if(_0x16d335){return _0x1636f7['sendStatus'](_0x37e2d9);}return _0x1636f7['status'](_0x37e2d9)[_0xd1a6('0x17')]();};}function respondWithResult(_0x1f1616,_0x11d369){_0x11d369=_0x11d369||0xc8;return function(_0x39807f){if(_0x39807f){return _0x1f1616[_0xd1a6('0x18')](_0x11d369)[_0xd1a6('0x19')](_0x39807f);}};}function respondWithFilteredResult(_0x12bfa9,_0xfbe889){return function(_0x124c26){if(_0x124c26){var _0x16d561=typeof _0xfbe889[_0xd1a6('0x1a')]===_0xd1a6('0x1b')&&typeof _0xfbe889[_0xd1a6('0x1c')]===_0xd1a6('0x1b');var _0x1cb94d=_0x124c26[_0xd1a6('0x1d')];var _0x497f35=_0x16d561?0x0:_0xfbe889['offset'];var _0x108f46=_0x16d561?_0x124c26['count']:_0xfbe889[_0xd1a6('0x1a')]+_0xfbe889[_0xd1a6('0x1c')];var _0x215c77;if(_0x108f46>=_0x1cb94d){_0x108f46=_0x1cb94d;_0x215c77=0xc8;}else{_0x215c77=0xce;}_0x12bfa9[_0xd1a6('0x18')](_0x215c77);return _0x12bfa9[_0xd1a6('0x1e')](_0xd1a6('0x1f'),_0x497f35+'-'+_0x108f46+'/'+_0x1cb94d)[_0xd1a6('0x19')](_0x124c26);}return null;};}function patchUpdates(_0x4b61b6){return function(_0x94d075){try{jsonpatch[_0xd1a6('0x20')](_0x94d075,_0x4b61b6,!![]);}catch(_0xc52297){return BPromise[_0xd1a6('0x21')](_0xc52297);}return _0x94d075['save']();};}function saveUpdates(_0x2e8805,_0x4b5f35){return function(_0x164a1c){if(_0x164a1c){return _0x164a1c[_0xd1a6('0x22')](_0x2e8805)[_0xd1a6('0x23')](function(_0x14493a){return _0x14493a;});}return null;};}function removeEntity(_0x15ccc3,_0xf0c5db){return function(_0x1d6e0a){if(_0x1d6e0a){return _0x1d6e0a[_0xd1a6('0x24')]()[_0xd1a6('0x23')](function(){_0x15ccc3['status'](0xcc)[_0xd1a6('0x17')]();});}};}function handleEntityNotFound(_0x159f66,_0x485b4c){return function(_0x8b2cdc){if(!_0x8b2cdc){_0x159f66['sendStatus'](0x194);}return _0x8b2cdc;};}function handleError(_0x31a36d,_0x15455b){_0x15455b=_0x15455b||0x1f4;return function(_0x289d10){logger[_0xd1a6('0x25')](_0x289d10[_0xd1a6('0x26')]);if(_0x289d10[_0xd1a6('0x27')]){delete _0x289d10['name'];}_0x31a36d['status'](_0x15455b)['send'](_0x289d10);};}exports['index']=function(_0x269f07,_0x2bec24){var _0x50e07d={},_0x17cc26={},_0x3db4c5={'count':0x0,'rows':[]};var _0x195430=_[_0xd1a6('0x28')](db[_0xd1a6('0x29')][_0xd1a6('0x2a')],function(_0xfcf931){return{'name':_0xfcf931['fieldName'],'type':_0xfcf931['type'][_0xd1a6('0x2b')]};});_0x17cc26[_0xd1a6('0x2c')]=_[_0xd1a6('0x28')](_0x195430,'name');_0x17cc26['query']=_['keys'](_0x269f07[_0xd1a6('0x2d')]);_0x17cc26['filters']=_[_0xd1a6('0x2e')](_0x17cc26[_0xd1a6('0x2c')],_0x17cc26[_0xd1a6('0x2d')]);_0x50e07d[_0xd1a6('0x2f')]=_['intersection'](_0x17cc26[_0xd1a6('0x2c')],qs[_0xd1a6('0x30')](_0x269f07[_0xd1a6('0x2d')][_0xd1a6('0x30')]));_0x50e07d[_0xd1a6('0x2f')]=_0x50e07d[_0xd1a6('0x2f')][_0xd1a6('0x31')]?_0x50e07d[_0xd1a6('0x2f')]:_0x17cc26[_0xd1a6('0x2c')];if(!_0x269f07[_0xd1a6('0x2d')][_0xd1a6('0x32')](_0xd1a6('0x33'))){_0x50e07d[_0xd1a6('0x1c')]=qs[_0xd1a6('0x1c')](_0x269f07[_0xd1a6('0x2d')]['limit']);_0x50e07d[_0xd1a6('0x1a')]=qs['offset'](_0x269f07[_0xd1a6('0x2d')][_0xd1a6('0x1a')]);}_0x50e07d[_0xd1a6('0x34')]=qs[_0xd1a6('0x35')](_0x269f07['query'][_0xd1a6('0x35')]);_0x50e07d[_0xd1a6('0x36')]=qs[_0xd1a6('0x37')](_[_0xd1a6('0x38')](_0x269f07[_0xd1a6('0x2d')],_0x17cc26[_0xd1a6('0x37')]),_0x195430);if(_0x269f07[_0xd1a6('0x2d')][_0xd1a6('0x39')]){_0x50e07d['where']=_[_0xd1a6('0x3a')](_0x50e07d['where'],{'$or':_[_0xd1a6('0x28')](_0x195430,function(_0x2420ce){if(_0x2420ce[_0xd1a6('0x3b')]!=='VIRTUAL'){var _0x4e705d={};_0x4e705d[_0x2420ce[_0xd1a6('0x27')]]={'$like':'%'+_0x269f07[_0xd1a6('0x2d')][_0xd1a6('0x39')]+'%'};return _0x4e705d;}})});}_0x50e07d=_[_0xd1a6('0x3a')]({},_0x50e07d,_0x269f07[_0xd1a6('0x3c')]);var _0x183b10={'where':_0x50e07d[_0xd1a6('0x36')]};return db[_0xd1a6('0x29')][_0xd1a6('0x1d')](_0x183b10)['then'](function(_0x26a977){_0x3db4c5[_0xd1a6('0x1d')]=_0x26a977;if(_0x269f07['query']['includeAll']){_0x50e07d['include']=[{'all':!![]}];}return db['SmsApplication']['findAll'](_0x50e07d);})[_0xd1a6('0x23')](function(_0x1ebe7b){_0x3db4c5['rows']=_0x1ebe7b;return _0x3db4c5;})['then'](respondWithFilteredResult(_0x2bec24,_0x50e07d))[_0xd1a6('0x3d')](handleError(_0x2bec24,null));};exports[_0xd1a6('0x3e')]=function(_0x8c1af,_0x5dc7ea){var _0x5a1cda={'raw':!![],'where':{'id':_0x8c1af[_0xd1a6('0x3f')]['id']}},_0x3fe90a={};_0x3fe90a[_0xd1a6('0x2c')]=_['keys'](db['SmsApplication'][_0xd1a6('0x2a')]);_0x3fe90a[_0xd1a6('0x2d')]=_['keys'](_0x8c1af['query']);_0x3fe90a[_0xd1a6('0x37')]=_[_0xd1a6('0x2e')](_0x3fe90a[_0xd1a6('0x2c')],_0x3fe90a[_0xd1a6('0x2d')]);_0x5a1cda[_0xd1a6('0x2f')]=_[_0xd1a6('0x2e')](_0x3fe90a[_0xd1a6('0x2c')],qs[_0xd1a6('0x30')](_0x8c1af[_0xd1a6('0x2d')][_0xd1a6('0x30')]));_0x5a1cda['attributes']=_0x5a1cda[_0xd1a6('0x2f')][_0xd1a6('0x31')]?_0x5a1cda[_0xd1a6('0x2f')]:_0x3fe90a['model'];if(_0x8c1af['query'][_0xd1a6('0x40')]){_0x5a1cda[_0xd1a6('0x41')]=[{'all':!![]}];}_0x5a1cda=_[_0xd1a6('0x3a')]({},_0x5a1cda,_0x8c1af[_0xd1a6('0x3c')]);return db['SmsApplication']['find'](_0x5a1cda)[_0xd1a6('0x23')](handleEntityNotFound(_0x5dc7ea,null))[_0xd1a6('0x23')](respondWithResult(_0x5dc7ea,null))[_0xd1a6('0x3d')](handleError(_0x5dc7ea,null));};exports[_0xd1a6('0x42')]=function(_0x28ab49,_0xf6637c){return db[_0xd1a6('0x29')]['create'](_0x28ab49[_0xd1a6('0x43')],{})[_0xd1a6('0x23')](respondWithResult(_0xf6637c,0xc9))[_0xd1a6('0x3d')](handleError(_0xf6637c,null));};exports[_0xd1a6('0x22')]=function(_0x428281,_0x51e963){if(_0x428281[_0xd1a6('0x43')]['id']){delete _0x428281['body']['id'];}return db[_0xd1a6('0x29')][_0xd1a6('0x44')]({'where':{'id':_0x428281[_0xd1a6('0x3f')]['id']}})[_0xd1a6('0x23')](handleEntityNotFound(_0x51e963,null))['then'](saveUpdates(_0x428281[_0xd1a6('0x43')],null))[_0xd1a6('0x23')](respondWithResult(_0x51e963,null))[_0xd1a6('0x3d')](handleError(_0x51e963,null));};exports[_0xd1a6('0x24')]=function(_0x37d90d,_0x550a55){return db[_0xd1a6('0x29')][_0xd1a6('0x44')]({'where':{'id':_0x37d90d[_0xd1a6('0x3f')]['id']}})['then'](handleEntityNotFound(_0x550a55,null))['then'](removeEntity(_0x550a55,null))['catch'](handleError(_0x550a55,null));};
\ No newline at end of file
+var _0x1f9a=['query','filters','intersection','attributes','fields','length','hasOwnProperty','order','sort','where','filter','type','VIRTUAL','options','include','findAll','rows','show','params','keys','rawAttributes','includeAll','find','create','body','catch','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','bluebird','mustache','util','path','sox','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','to-csv','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','../../config/logger','api','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','end','status','json','offset','undefined','limit','count','set','Content-Range','apply','save','update','then','destroy','error','stack','name','send','index','map','SmsApplication','fieldName','key','model'];(function(_0x371e03,_0x60750e){var _0x37789c=function(_0xb9bf6f){while(--_0xb9bf6f){_0x371e03['push'](_0x371e03['shift']());}};_0x37789c(++_0x60750e);}(_0x1f9a,0x1a5));var _0xa1f9=function(_0x2d29b3,_0x278b62){_0x2d29b3=_0x2d29b3-0x0;var _0x2cda12=_0x1f9a[_0x2d29b3];return _0x2cda12;};'use strict';var emlformat=require(_0xa1f9('0x0'));var rimraf=require(_0xa1f9('0x1'));var zipdir=require(_0xa1f9('0x2'));var jsonpatch=require(_0xa1f9('0x3'));var rp=require(_0xa1f9('0x4'));var moment=require('moment');var BPromise=require(_0xa1f9('0x5'));var Mustache=require(_0xa1f9('0x6'));var util=require(_0xa1f9('0x7'));var path=require(_0xa1f9('0x8'));var sox=require(_0xa1f9('0x9'));var csv=require('to-csv');var ejs=require(_0xa1f9('0xa'));var fs=require('fs');var fs_extra=require(_0xa1f9('0xb'));var _=require(_0xa1f9('0xc'));var squel=require(_0xa1f9('0xd'));var crypto=require(_0xa1f9('0xe'));var jsforce=require(_0xa1f9('0xf'));var deskjs=require(_0xa1f9('0x10'));var toCsv=require(_0xa1f9('0x11'));var querystring=require(_0xa1f9('0x12'));var Papa=require(_0xa1f9('0x13'));var Redis=require(_0xa1f9('0x14'));var authService=require(_0xa1f9('0x15'));var qs=require('../../components/parsers/qs');var as=require(_0xa1f9('0x16'));var hardwareService=require('../../config/license/hardware');var logger=require(_0xa1f9('0x17'))(_0xa1f9('0x18'));var utils=require('../../config/utils');var config=require(_0xa1f9('0x19'));var licenseUtil=require(_0xa1f9('0x1a'));var db=require(_0xa1f9('0x1b'))['db'];function respondWithStatusCode(_0x60de9c,_0x24773a){_0x24773a=_0x24773a||0xcc;return function(_0x1bdacd){if(_0x1bdacd){return _0x60de9c[_0xa1f9('0x1c')](_0x24773a);}return _0x60de9c['status'](_0x24773a)[_0xa1f9('0x1d')]();};}function respondWithResult(_0x3ab640,_0x564adf){_0x564adf=_0x564adf||0xc8;return function(_0x5babc4){if(_0x5babc4){return _0x3ab640[_0xa1f9('0x1e')](_0x564adf)[_0xa1f9('0x1f')](_0x5babc4);}};}function respondWithFilteredResult(_0x25ea0a,_0x3dcd20){return function(_0x298bf0){if(_0x298bf0){var _0x4db91f=typeof _0x3dcd20[_0xa1f9('0x20')]===_0xa1f9('0x21')&&typeof _0x3dcd20[_0xa1f9('0x22')]==='undefined';var _0x1c5434=_0x298bf0['count'];var _0x4af188=_0x4db91f?0x0:_0x3dcd20[_0xa1f9('0x20')];var _0x4150e8=_0x4db91f?_0x298bf0[_0xa1f9('0x23')]:_0x3dcd20[_0xa1f9('0x20')]+_0x3dcd20[_0xa1f9('0x22')];var _0x52ebfc;if(_0x4150e8>=_0x1c5434){_0x4150e8=_0x1c5434;_0x52ebfc=0xc8;}else{_0x52ebfc=0xce;}_0x25ea0a['status'](_0x52ebfc);return _0x25ea0a[_0xa1f9('0x24')](_0xa1f9('0x25'),_0x4af188+'-'+_0x4150e8+'/'+_0x1c5434)['json'](_0x298bf0);}return null;};}function patchUpdates(_0x4e2fab){return function(_0x22ea7c){try{jsonpatch[_0xa1f9('0x26')](_0x22ea7c,_0x4e2fab,!![]);}catch(_0x2dbdf7){return BPromise['reject'](_0x2dbdf7);}return _0x22ea7c[_0xa1f9('0x27')]();};}function saveUpdates(_0x5e0b8b,_0x25b1d6){return function(_0x32d567){if(_0x32d567){return _0x32d567[_0xa1f9('0x28')](_0x5e0b8b)[_0xa1f9('0x29')](function(_0x211135){return _0x211135;});}return null;};}function removeEntity(_0x4b20b2,_0xddabe0){return function(_0x55f38c){if(_0x55f38c){return _0x55f38c[_0xa1f9('0x2a')]()[_0xa1f9('0x29')](function(){_0x4b20b2[_0xa1f9('0x1e')](0xcc)[_0xa1f9('0x1d')]();});}};}function handleEntityNotFound(_0x511494,_0x11f642){return function(_0x46f1dc){if(!_0x46f1dc){_0x511494[_0xa1f9('0x1c')](0x194);}return _0x46f1dc;};}function handleError(_0x1ece22,_0x4ae710){_0x4ae710=_0x4ae710||0x1f4;return function(_0x3bb9eb){logger[_0xa1f9('0x2b')](_0x3bb9eb[_0xa1f9('0x2c')]);if(_0x3bb9eb[_0xa1f9('0x2d')]){delete _0x3bb9eb['name'];}_0x1ece22['status'](_0x4ae710)[_0xa1f9('0x2e')](_0x3bb9eb);};}exports[_0xa1f9('0x2f')]=function(_0x4a1edf,_0x4ce5ac){var _0x17adf={},_0x44d52d={},_0x42a15b={'count':0x0,'rows':[]};var _0x32ad6b=_[_0xa1f9('0x30')](db[_0xa1f9('0x31')]['rawAttributes'],function(_0x5f118d){return{'name':_0x5f118d[_0xa1f9('0x32')],'type':_0x5f118d['type'][_0xa1f9('0x33')]};});_0x44d52d[_0xa1f9('0x34')]=_[_0xa1f9('0x30')](_0x32ad6b,_0xa1f9('0x2d'));_0x44d52d[_0xa1f9('0x35')]=_['keys'](_0x4a1edf[_0xa1f9('0x35')]);_0x44d52d[_0xa1f9('0x36')]=_[_0xa1f9('0x37')](_0x44d52d[_0xa1f9('0x34')],_0x44d52d[_0xa1f9('0x35')]);_0x17adf[_0xa1f9('0x38')]=_[_0xa1f9('0x37')](_0x44d52d[_0xa1f9('0x34')],qs[_0xa1f9('0x39')](_0x4a1edf[_0xa1f9('0x35')][_0xa1f9('0x39')]));_0x17adf['attributes']=_0x17adf[_0xa1f9('0x38')][_0xa1f9('0x3a')]?_0x17adf[_0xa1f9('0x38')]:_0x44d52d['model'];if(!_0x4a1edf[_0xa1f9('0x35')][_0xa1f9('0x3b')]('nolimit')){_0x17adf[_0xa1f9('0x22')]=qs[_0xa1f9('0x22')](_0x4a1edf['query'][_0xa1f9('0x22')]);_0x17adf[_0xa1f9('0x20')]=qs[_0xa1f9('0x20')](_0x4a1edf['query']['offset']);}_0x17adf[_0xa1f9('0x3c')]=qs[_0xa1f9('0x3d')](_0x4a1edf[_0xa1f9('0x35')][_0xa1f9('0x3d')]);_0x17adf[_0xa1f9('0x3e')]=qs[_0xa1f9('0x36')](_['pick'](_0x4a1edf[_0xa1f9('0x35')],_0x44d52d[_0xa1f9('0x36')]),_0x32ad6b);if(_0x4a1edf[_0xa1f9('0x35')][_0xa1f9('0x3f')]){_0x17adf[_0xa1f9('0x3e')]=_['merge'](_0x17adf['where'],{'$or':_[_0xa1f9('0x30')](_0x32ad6b,function(_0x5acca5){if(_0x5acca5[_0xa1f9('0x40')]!==_0xa1f9('0x41')){var _0x5ac720={};_0x5ac720[_0x5acca5[_0xa1f9('0x2d')]]={'$like':'%'+_0x4a1edf['query'][_0xa1f9('0x3f')]+'%'};return _0x5ac720;}})});}_0x17adf=_['merge']({},_0x17adf,_0x4a1edf[_0xa1f9('0x42')]);var _0x1897c7={'where':_0x17adf[_0xa1f9('0x3e')]};return db['SmsApplication'][_0xa1f9('0x23')](_0x1897c7)['then'](function(_0x157168){_0x42a15b[_0xa1f9('0x23')]=_0x157168;if(_0x4a1edf[_0xa1f9('0x35')]['includeAll']){_0x17adf[_0xa1f9('0x43')]=[{'all':!![]}];}return db[_0xa1f9('0x31')][_0xa1f9('0x44')](_0x17adf);})[_0xa1f9('0x29')](function(_0xa73ec5){_0x42a15b[_0xa1f9('0x45')]=_0xa73ec5;return _0x42a15b;})[_0xa1f9('0x29')](respondWithFilteredResult(_0x4ce5ac,_0x17adf))['catch'](handleError(_0x4ce5ac,null));};exports[_0xa1f9('0x46')]=function(_0xd5419e,_0x44374d){var _0x19b109={'raw':!![],'where':{'id':_0xd5419e[_0xa1f9('0x47')]['id']}},_0x40bfcf={};_0x40bfcf['model']=_[_0xa1f9('0x48')](db[_0xa1f9('0x31')][_0xa1f9('0x49')]);_0x40bfcf[_0xa1f9('0x35')]=_[_0xa1f9('0x48')](_0xd5419e[_0xa1f9('0x35')]);_0x40bfcf[_0xa1f9('0x36')]=_[_0xa1f9('0x37')](_0x40bfcf[_0xa1f9('0x34')],_0x40bfcf[_0xa1f9('0x35')]);_0x19b109[_0xa1f9('0x38')]=_[_0xa1f9('0x37')](_0x40bfcf[_0xa1f9('0x34')],qs[_0xa1f9('0x39')](_0xd5419e['query'][_0xa1f9('0x39')]));_0x19b109['attributes']=_0x19b109[_0xa1f9('0x38')][_0xa1f9('0x3a')]?_0x19b109[_0xa1f9('0x38')]:_0x40bfcf[_0xa1f9('0x34')];if(_0xd5419e[_0xa1f9('0x35')][_0xa1f9('0x4a')]){_0x19b109[_0xa1f9('0x43')]=[{'all':!![]}];}_0x19b109=_['merge']({},_0x19b109,_0xd5419e[_0xa1f9('0x42')]);return db[_0xa1f9('0x31')][_0xa1f9('0x4b')](_0x19b109)['then'](handleEntityNotFound(_0x44374d,null))['then'](respondWithResult(_0x44374d,null))['catch'](handleError(_0x44374d,null));};exports[_0xa1f9('0x4c')]=function(_0x1b746d,_0x1da70d){return db[_0xa1f9('0x31')][_0xa1f9('0x4c')](_0x1b746d[_0xa1f9('0x4d')],{})[_0xa1f9('0x29')](respondWithResult(_0x1da70d,0xc9))['catch'](handleError(_0x1da70d,null));};exports['update']=function(_0x571ad2,_0x2dc44b){if(_0x571ad2['body']['id']){delete _0x571ad2[_0xa1f9('0x4d')]['id'];}return db[_0xa1f9('0x31')]['find']({'where':{'id':_0x571ad2[_0xa1f9('0x47')]['id']}})[_0xa1f9('0x29')](handleEntityNotFound(_0x2dc44b,null))[_0xa1f9('0x29')](saveUpdates(_0x571ad2[_0xa1f9('0x4d')],null))[_0xa1f9('0x29')](respondWithResult(_0x2dc44b,null))[_0xa1f9('0x4e')](handleError(_0x2dc44b,null));};exports[_0xa1f9('0x2a')]=function(_0x2d3dd1,_0x58b7da){return db['SmsApplication'][_0xa1f9('0x4b')]({'where':{'id':_0x2d3dd1['params']['id']}})[_0xa1f9('0x29')](handleEntityNotFound(_0x58b7da,null))[_0xa1f9('0x29')](removeEntity(_0x58b7da,null))[_0xa1f9('0x4e')](handleError(_0x58b7da,null));};
\ No newline at end of file
index 82302a8..3596bb5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2263=['path','../../config/environment','./smsApplication.attributes','exports','SmsApplication','sms_applications','lodash','util','../../config/logger','api','moment','bluebird','request-promise'];(function(_0x75f869,_0x3690d6){var _0x10af8b=function(_0x22d3ff){while(--_0x22d3ff){_0x75f869['push'](_0x75f869['shift']());}};_0x10af8b(++_0x3690d6);}(_0x2263,0x6e));var _0x3226=function(_0x23ec06,_0x561142){_0x23ec06=_0x23ec06-0x0;var _0x2831d4=_0x2263[_0x23ec06];return _0x2831d4;};'use strict';var _=require(_0x3226('0x0'));var util=require(_0x3226('0x1'));var logger=require(_0x3226('0x2'))(_0x3226('0x3'));var moment=require(_0x3226('0x4'));var BPromise=require(_0x3226('0x5'));var rp=require(_0x3226('0x6'));var fs=require('fs');var path=require(_0x3226('0x7'));var rimraf=require('rimraf');var config=require(_0x3226('0x8'));var attributes=require(_0x3226('0x9'));module[_0x3226('0xa')]=function(_0x34c47c,_0x31b59b){return _0x34c47c['define'](_0x3226('0xb'),attributes,{'tableName':_0x3226('0xc'),'paranoid':![],'indexes':[],'timestamps':!![],'charset':'utf8mb4','collate':'utf8mb4_unicode_ci'});};
\ No newline at end of file
+var _0x061c=['api','moment','bluebird','request-promise','path','rimraf','./smsApplication.attributes','define','SmsApplication','sms_applications','utf8mb4','utf8mb4_unicode_ci','lodash','util','../../config/logger'];(function(_0x389bc2,_0x9e2254){var _0x2b47e3=function(_0x2beee4){while(--_0x2beee4){_0x389bc2['push'](_0x389bc2['shift']());}};_0x2b47e3(++_0x9e2254);}(_0x061c,0xc0));var _0xc061=function(_0x3457cf,_0x3cac8b){_0x3457cf=_0x3457cf-0x0;var _0x133f95=_0x061c[_0x3457cf];return _0x133f95;};'use strict';var _=require(_0xc061('0x0'));var util=require(_0xc061('0x1'));var logger=require(_0xc061('0x2'))(_0xc061('0x3'));var moment=require(_0xc061('0x4'));var BPromise=require(_0xc061('0x5'));var rp=require(_0xc061('0x6'));var fs=require('fs');var path=require(_0xc061('0x7'));var rimraf=require(_0xc061('0x8'));var config=require('../../config/environment');var attributes=require(_0xc061('0x9'));module['exports']=function(_0x2d679b,_0x437d17){return _0x2d679b[_0xc061('0xa')](_0xc061('0xb'),attributes,{'tableName':_0xc061('0xc'),'paranoid':![],'indexes':[],'timestamps':!![],'charset':_0xc061('0xd'),'collate':_0xc061('0xe')});};
\ No newline at end of file
index ab2c87c..3e4f4c2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xadb5=['error','code','message','result','catch','util','bluebird','randomstring','ioredis','../../config/utils','../../config/logger','rpc','jayson/promise','client','http','request','then','info','SmsApplication,\x20%s,\x20%s','request\x20sent','stringify'];(function(_0x3d007f,_0x52f761){var _0x341999=function(_0x414676){while(--_0x414676){_0x3d007f['push'](_0x3d007f['shift']());}};_0x341999(++_0x52f761);}(_0xadb5,0xad));var _0x5adb=function(_0x317368,_0x482c77){_0x317368=_0x317368-0x0;var _0x3e2824=_0xadb5[_0x317368];return _0x3e2824;};'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']('SmsApplication,\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
+var _0x2272=['lodash','util','moment','bluebird','randomstring','../../mysqldb','../../config/utils','../../config/logger','jayson/promise','client','http','request','then','info','request\x20sent','debug','SmsApplication,\x20%s,\x20%s,\x20%s','stringify','error','code','SmsApplication,\x20%s,\x20%s','message','result','catch'];(function(_0x18c35a,_0x8e0bcc){var _0x5429ee=function(_0x20ba60){while(--_0x20ba60){_0x18c35a['push'](_0x18c35a['shift']());}};_0x5429ee(++_0x8e0bcc);}(_0x2272,0xd8));var _0x2227=function(_0x19e35c,_0x29cd1e){_0x19e35c=_0x19e35c-0x0;var _0x3e1fe8=_0x2272[_0x19e35c];return _0x3e1fe8;};'use strict';var _=require(_0x2227('0x0'));var util=require(_0x2227('0x1'));var moment=require(_0x2227('0x2'));var BPromise=require(_0x2227('0x3'));var rs=require(_0x2227('0x4'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x2227('0x5'))['db'];var utils=require(_0x2227('0x6'));var logger=require(_0x2227('0x7'))('rpc');var config=require('../../config/environment');var jayson=require(_0x2227('0x8'));var client=jayson[_0x2227('0x9')][_0x2227('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x2591db,_0xaec623,_0x1413d2){return new BPromise(function(_0x41fc3f,_0x34bdd0){return client[_0x2227('0xb')](_0x2591db,_0x1413d2)[_0x2227('0xc')](function(_0x496bbd){logger[_0x2227('0xd')]('SmsApplication,\x20%s,\x20%s',_0xaec623,_0x2227('0xe'));logger[_0x2227('0xf')](_0x2227('0x10'),_0xaec623,_0x2227('0xe'),JSON[_0x2227('0x11')](_0x496bbd));if(_0x496bbd['error']){if(_0x496bbd[_0x2227('0x12')][_0x2227('0x13')]===0x1f4){logger[_0x2227('0x12')](_0x2227('0x14'),_0xaec623,_0x496bbd[_0x2227('0x12')][_0x2227('0x15')]);return _0x34bdd0(_0x496bbd['error']['message']);}logger['error'](_0x2227('0x14'),_0xaec623,_0x496bbd['error'][_0x2227('0x15')]);return _0x41fc3f(_0x496bbd[_0x2227('0x12')]['message']);}else{logger[_0x2227('0xd')](_0x2227('0x14'),_0xaec623,_0x2227('0xe'));_0x41fc3f(_0x496bbd[_0x2227('0x16')][_0x2227('0x15')]);}})[_0x2227('0x17')](function(_0x508e92){logger[_0x2227('0x12')](_0x2227('0x14'),_0xaec623,_0x508e92);_0x34bdd0(_0x508e92);});});}
\ No newline at end of file
index ccd31c9..ae726eb 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8f4c=['express','Router','../../components/auth/service','../../components/interaction/service','../../config/environment','get','/describe','describe','/:id','isAuthenticated','show','/:id/messages','getMessages','post','create','addMessage','/:id/tags','tracked','sms','addTags','put','smsinteraction:update','smsinteraction:destroy','destroy','delete','removeTags','exports','multer','util','path','connect-timeout'];(function(_0x260b51,_0x332cb0){var _0xcfb3ff=function(_0x20e736){while(--_0x20e736){_0x260b51['push'](_0x260b51['shift']());}};_0xcfb3ff(++_0x332cb0);}(_0x8f4c,0x113));var _0xc8f4=function(_0x4670df,_0x433288){_0x4670df=_0x4670df-0x0;var _0x326082=_0x8f4c[_0x4670df];return _0x326082;};'use strict';var multer=require(_0xc8f4('0x0'));var util=require(_0xc8f4('0x1'));var path=require(_0xc8f4('0x2'));var timeout=require(_0xc8f4('0x3'));var express=require(_0xc8f4('0x4'));var router=express[_0xc8f4('0x5')]();var fs_extra=require('fs-extra');var auth=require(_0xc8f4('0x6'));var interaction=require(_0xc8f4('0x7'));var config=require(_0xc8f4('0x8'));var controller=require('./smsInteraction.controller');router[_0xc8f4('0x9')]('/',auth['isAuthenticated'](),controller['index']);router['get'](_0xc8f4('0xa'),auth['isAuthenticated'](),controller[_0xc8f4('0xb')]);router[_0xc8f4('0x9')](_0xc8f4('0xc'),auth[_0xc8f4('0xd')](),controller[_0xc8f4('0xe')]);router['get'](_0xc8f4('0xf'),auth[_0xc8f4('0xd')](),controller[_0xc8f4('0x10')]);router[_0xc8f4('0x9')]('/:id/download',auth[_0xc8f4('0xd')](),controller['download']);router[_0xc8f4('0x11')]('/',auth[_0xc8f4('0xd')](),controller[_0xc8f4('0x12')]);router[_0xc8f4('0x11')](_0xc8f4('0xf'),auth['isAuthenticated'](),controller[_0xc8f4('0x13')]);router[_0xc8f4('0x11')](_0xc8f4('0x14'),auth[_0xc8f4('0xd')](),interaction[_0xc8f4('0x15')](_0xc8f4('0x16'),'smsinteraction:addtags'),controller[_0xc8f4('0x17')]);router[_0xc8f4('0x18')](_0xc8f4('0xc'),auth[_0xc8f4('0xd')](),interaction[_0xc8f4('0x15')]('sms',_0xc8f4('0x19')),controller['update']);router['delete'](_0xc8f4('0xc'),auth[_0xc8f4('0xd')](),interaction[_0xc8f4('0x15')](_0xc8f4('0x16'),_0xc8f4('0x1a')),controller[_0xc8f4('0x1b')]);router[_0xc8f4('0x1c')](_0xc8f4('0x14'),auth[_0xc8f4('0xd')](),controller[_0xc8f4('0x1d')]);module[_0xc8f4('0x1e')]=router;
\ No newline at end of file
+var _0xb688=['destroy','/:id/tags','removeTags','util','path','connect-timeout','express','Router','fs-extra','../../components/interaction/service','../../config/environment','./smsInteraction.controller','get','index','/describe','isAuthenticated','describe','/:id','show','/:id/messages','getMessages','/:id/download','download','post','create','addMessage','smsinteraction:addtags','addTags','put','tracked','smsinteraction:update','update','delete','sms'];(function(_0x5b644e,_0x2e5e07){var _0x49c6bf=function(_0x3032d9){while(--_0x3032d9){_0x5b644e['push'](_0x5b644e['shift']());}};_0x49c6bf(++_0x2e5e07);}(_0xb688,0xcf));var _0x8b68=function(_0x19441b,_0x5a239b){_0x19441b=_0x19441b-0x0;var _0x16bbd7=_0xb688[_0x19441b];return _0x16bbd7;};'use strict';var multer=require('multer');var util=require(_0x8b68('0x0'));var path=require(_0x8b68('0x1'));var timeout=require(_0x8b68('0x2'));var express=require(_0x8b68('0x3'));var router=express[_0x8b68('0x4')]();var fs_extra=require(_0x8b68('0x5'));var auth=require('../../components/auth/service');var interaction=require(_0x8b68('0x6'));var config=require(_0x8b68('0x7'));var controller=require(_0x8b68('0x8'));router[_0x8b68('0x9')]('/',auth['isAuthenticated'](),controller[_0x8b68('0xa')]);router['get'](_0x8b68('0xb'),auth[_0x8b68('0xc')](),controller[_0x8b68('0xd')]);router[_0x8b68('0x9')](_0x8b68('0xe'),auth[_0x8b68('0xc')](),controller[_0x8b68('0xf')]);router[_0x8b68('0x9')](_0x8b68('0x10'),auth[_0x8b68('0xc')](),controller[_0x8b68('0x11')]);router[_0x8b68('0x9')](_0x8b68('0x12'),auth['isAuthenticated'](),controller[_0x8b68('0x13')]);router[_0x8b68('0x14')]('/',auth[_0x8b68('0xc')](),controller[_0x8b68('0x15')]);router[_0x8b68('0x14')](_0x8b68('0x10'),auth[_0x8b68('0xc')](),controller[_0x8b68('0x16')]);router[_0x8b68('0x14')]('/:id/tags',auth[_0x8b68('0xc')](),interaction['tracked']('sms',_0x8b68('0x17')),controller[_0x8b68('0x18')]);router[_0x8b68('0x19')]('/:id',auth['isAuthenticated'](),interaction[_0x8b68('0x1a')]('sms',_0x8b68('0x1b')),controller[_0x8b68('0x1c')]);router[_0x8b68('0x1d')](_0x8b68('0xe'),auth['isAuthenticated'](),interaction[_0x8b68('0x1a')](_0x8b68('0x1e'),'smsinteraction:destroy'),controller[_0x8b68('0x1f')]);router[_0x8b68('0x1d')](_0x8b68('0x20'),auth[_0x8b68('0xc')](),controller[_0x8b68('0x21')]);module['exports']=router;
\ No newline at end of file
index c68fe6d..f31c145 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x81d4=['BOOLEAN','moment','exports','DATE','STRING','ENUM','out'];(function(_0x3903df,_0x4fae4c){var _0x1a2ac5=function(_0x3fa0c4){while(--_0x3fa0c4){_0x3903df['push'](_0x3903df['shift']());}};_0x1a2ac5(++_0x4fae4c);}(_0x81d4,0x197));var _0x481d=function(_0x526d13,_0x12c372){_0x526d13=_0x526d13-0x0;var _0x6640a7=_0x81d4[_0x526d13];return _0x6640a7;};'use strict';var Sequelize=require('sequelize');var moment=require(_0x481d('0x0'));module[_0x481d('0x1')]={'closed':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'closedAt':{'type':Sequelize[_0x481d('0x2')]},'disposition':{'type':Sequelize[_0x481d('0x3')]},'secondDisposition':{'type':Sequelize[_0x481d('0x3')]},'thirdDisposition':{'type':Sequelize['STRING']},'note':{'type':Sequelize['STRING']},'phone':{'type':Sequelize[_0x481d('0x3')]},'read1stAt':{'type':Sequelize[_0x481d('0x2')]},'firstMsgDirection':{'type':Sequelize[_0x481d('0x4')]('in','out'),'defaultValue':'in','allowNull':![]},'lastMsgAt':{'type':Sequelize[_0x481d('0x2')]},'lastMsgDirection':{'type':Sequelize[_0x481d('0x4')]('in',_0x481d('0x5')),'defaultValue':'in','allowNull':![]},'autoreplyExecuted':{'type':Sequelize[_0x481d('0x6')],'defaultValue':![]}};
\ No newline at end of file
+var _0x2e3b=['DATE','STRING','ENUM','moment','exports','BOOLEAN'];(function(_0x4571d9,_0x4d0089){var _0x2ddca1=function(_0x45a2b8){while(--_0x45a2b8){_0x4571d9['push'](_0x4571d9['shift']());}};_0x2ddca1(++_0x4d0089);}(_0x2e3b,0x81));var _0xb2e3=function(_0x5a26b0,_0x118133){_0x5a26b0=_0x5a26b0-0x0;var _0x22dff1=_0x2e3b[_0x5a26b0];return _0x22dff1;};'use strict';var Sequelize=require('sequelize');var moment=require(_0xb2e3('0x0'));module[_0xb2e3('0x1')]={'closed':{'type':Sequelize[_0xb2e3('0x2')],'defaultValue':![]},'closedAt':{'type':Sequelize[_0xb2e3('0x3')]},'disposition':{'type':Sequelize[_0xb2e3('0x4')]},'secondDisposition':{'type':Sequelize[_0xb2e3('0x4')]},'thirdDisposition':{'type':Sequelize[_0xb2e3('0x4')]},'note':{'type':Sequelize[_0xb2e3('0x4')]},'phone':{'type':Sequelize['STRING']},'read1stAt':{'type':Sequelize[_0xb2e3('0x3')]},'firstMsgDirection':{'type':Sequelize[_0xb2e3('0x5')]('in','out'),'defaultValue':'in','allowNull':![]},'lastMsgAt':{'type':Sequelize[_0xb2e3('0x3')]},'lastMsgDirection':{'type':Sequelize[_0xb2e3('0x5')]('in','out'),'defaultValue':'in','allowNull':![]},'autoreplyExecuted':{'type':Sequelize[_0xb2e3('0x2')],'defaultValue':![]}};
\ No newline at end of file
index 4ba0a2a..d660d26 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xebf6=['status','end','undefined','limit','offset','count','set','Content-Range','json','apply','reject','save','then','error','stack','name','send','Users','map','TagIds','Tags','split','push','catch','SmsInteraction','rawAttributes','key','model','keys','query','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','pick','select','field','from','tools_tags','u.id','u.fullname','left_join','users','u.id\x20=\x20ui.UserId','sms_interactions','cm_contacts','o.id\x20=\x20i.UserId','a.id\x20=\x20i.SmsAccountId','sms_messages','me.SmsInteractionId\x20=\x20i.id','sms_interaction_has_tags','t.id\x20=\x20it.TagId','expr','search','parseSearch','conditions','find','unreadMessages','having','`\x20=\x200','`\x20>\x200','Contact','operator','value','MATCH\x20(c.firstName,\x20c.lastName,\x20c.phone,\x20c.mobile,\x20c.fax,\x20c.email)\x20AGAINST\x20(?\x20IN\x20BOOLEAN\x20MODE)','getFullTextValue','c.firstName\x20LIKE\x20?\x20OR\x20c.lastName\x20LIKE\x20?\x20OR\x20c.email\x20LIKE\x20?','ContactId','type','start','Tag','CONCAT(\x27,\x27,\x20`TagIds`,\x20\x27,\x27)\x20LIKE\x20?','User','$substring','CONCAT_WS(\x27\x20\x27,\x20o.name,\x20o.fullname)\x20LIKE\x20?','UserId','buildExpression','text','body','some','compact','isEmpty','forEach','SmsAccountId','concat','createdAt','parse','$gte','null','\x20IS\x20NULL','read','`unreadMessages`\x20=\x200','tag','isArray','filter','replace','isNumeric','i.id\x20LIKE\x20?','i.phone\x20LIKE\x20?','MATCH\x20(me.body)\x20AGAINST\x20(?\x20IN\x20BOOLEAN\x20MODE)','CONCAT(c.firstName,\x20\x27\x20\x27,\x20c.lastName)\x20LIKE\x20?','group','i.id','QueryTypes','SELECT','clone','SUM(me.read\x20=\x200\x20AND\x20me.direction\x20=\x20\x27in\x27)','contactName','DESC','t.id\x20IN\x20?','i.SmsAccountId\x20IS\x20NOT\x20NULL','role','agent','user','getSmsAccounts','i.SmsAccountId\x20IS\x20NULL','i.SmsAccountId\x20IN\x20?','sequelize','toString','Account.key','Account.mandatoryDisposition','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','c.firstName','Contact.firstName','Contact.lastName','c.email','Contact.email','c.phone','Contact.phone','c.mobile','c.fax','Contact.fax','Owner.fullname','o.internal','Owner.internal','GROUP_CONCAT(DISTINCT\x20t.id)','ui.SmsInteractionId\x20IN\x20?','SmsInteractionId','rows','includeAll','merge','create','update','params','describe','ids','getMessages','findOne','format','options','SmsMessage','findAll','setTags','omit','spread','color','emit','smsInteractionTags:save','removeTags','download','unix','root','server','files','tmp','join','transcript-%d-%s.zip','fullname','CmContact','firstName','lastName','Messages','direction','secret','SmsAccount','Account','get','mkdirSync','Sms','Owner','YYYY-MM-DD\x20HH:mm:ss','closed','closedAt','disposition','out','System','views','downloadInteraction.ejs','transcript-','.pdf','createPdfFromHTML','err','unlinkSync','eml-format','zip-dir','fast-json-patch','request-promise','mustache','util','path','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','to-csv','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../components/export/pdf','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','redis','defaults','localhost','./smsInteraction.socket','register','sendStatus'];(function(_0x55ecb9,_0x50ab77){var _0x416b04=function(_0x476254){while(--_0x476254){_0x55ecb9['push'](_0x55ecb9['shift']());}};_0x416b04(++_0x50ab77);}(_0xebf6,0x1b1));var _0x6ebf=function(_0x23ca4d,_0x5c2a32){_0x23ca4d=_0x23ca4d-0x0;var _0x435432=_0xebf6[_0x23ca4d];return _0x435432;};'use strict';var emlformat=require(_0x6ebf('0x0'));var rimraf=require('rimraf');var zipdir=require(_0x6ebf('0x1'));var jsonpatch=require(_0x6ebf('0x2'));var rp=require(_0x6ebf('0x3'));var moment=require('moment');var BPromise=require('bluebird');var Mustache=require(_0x6ebf('0x4'));var util=require(_0x6ebf('0x5'));var path=require(_0x6ebf('0x6'));var sox=require('sox');var csv=require('to-csv');var ejs=require(_0x6ebf('0x7'));var fs=require('fs');var fs_extra=require(_0x6ebf('0x8'));var _=require(_0x6ebf('0x9'));var squel=require(_0x6ebf('0xa'));var crypto=require(_0x6ebf('0xb'));var jsforce=require(_0x6ebf('0xc'));var deskjs=require(_0x6ebf('0xd'));var toCsv=require(_0x6ebf('0xe'));var querystring=require(_0x6ebf('0xf'));var Papa=require(_0x6ebf('0x10'));var Redis=require(_0x6ebf('0x11'));var authService=require(_0x6ebf('0x12'));var qs=require(_0x6ebf('0x13'));var as=require(_0x6ebf('0x14'));var pdf=require(_0x6ebf('0x15'));var hardwareService=require(_0x6ebf('0x16'));var logger=require(_0x6ebf('0x17'))(_0x6ebf('0x18'));var utils=require(_0x6ebf('0x19'));var config=require(_0x6ebf('0x1a'));var licenseUtil=require(_0x6ebf('0x1b'));var db=require(_0x6ebf('0x1c'))['db'];config[_0x6ebf('0x1d')]=_[_0x6ebf('0x1e')](config[_0x6ebf('0x1d')],{'host':_0x6ebf('0x1f'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config['redis']));require(_0x6ebf('0x20'))[_0x6ebf('0x21')](socket);function respondWithStatusCode(_0x3d4e9f,_0x3c9820){_0x3c9820=_0x3c9820||0xcc;return function(_0x5eb547){if(_0x5eb547){return _0x3d4e9f[_0x6ebf('0x22')](_0x3c9820);}return _0x3d4e9f[_0x6ebf('0x23')](_0x3c9820)[_0x6ebf('0x24')]();};}function respondWithResult(_0x5b5cf7,_0x528825){_0x528825=_0x528825||0xc8;return function(_0x3721aa){if(_0x3721aa){return _0x5b5cf7[_0x6ebf('0x23')](_0x528825)['json'](_0x3721aa);}};}function respondWithFilteredResult(_0x4e5a75,_0x5f443b){return function(_0x3ba082){if(_0x3ba082){var _0x55bef1=typeof _0x5f443b['offset']===_0x6ebf('0x25')&&typeof _0x5f443b[_0x6ebf('0x26')]===_0x6ebf('0x25');var _0x697436=_0x3ba082['count'];var _0x52bf99=_0x55bef1?0x0:_0x5f443b[_0x6ebf('0x27')];var _0x201cc5=_0x55bef1?_0x3ba082[_0x6ebf('0x28')]:_0x5f443b[_0x6ebf('0x27')]+_0x5f443b[_0x6ebf('0x26')];var _0x18aa2f;if(_0x201cc5>=_0x697436){_0x201cc5=_0x697436;_0x18aa2f=0xc8;}else{_0x18aa2f=0xce;}_0x4e5a75['status'](_0x18aa2f);return _0x4e5a75[_0x6ebf('0x29')](_0x6ebf('0x2a'),_0x52bf99+'-'+_0x201cc5+'/'+_0x697436)[_0x6ebf('0x2b')](_0x3ba082);}return null;};}function patchUpdates(_0x4285c2){return function(_0x32346b){try{jsonpatch[_0x6ebf('0x2c')](_0x32346b,_0x4285c2,!![]);}catch(_0x18e709){return BPromise[_0x6ebf('0x2d')](_0x18e709);}return _0x32346b[_0x6ebf('0x2e')]();};}function saveUpdates(_0x143987,_0x1699af){return function(_0x2b5a4d){if(_0x2b5a4d){return _0x2b5a4d['update'](_0x143987)[_0x6ebf('0x2f')](function(_0x352277){return _0x352277;});}return null;};}function removeEntity(_0x360c7f,_0x24ee20){return function(_0x24e8a4){if(_0x24e8a4){return _0x24e8a4['destroy']()[_0x6ebf('0x2f')](function(){_0x360c7f[_0x6ebf('0x23')](0xcc)[_0x6ebf('0x24')]();});}};}function handleEntityNotFound(_0x435d31,_0x3ab904){return function(_0x2f8f91){if(!_0x2f8f91){_0x435d31[_0x6ebf('0x22')](0x194);}return _0x2f8f91;};}function handleError(_0xdd3a1a,_0x40c03a){_0x40c03a=_0x40c03a||0x1f4;return function(_0x55426f){logger[_0x6ebf('0x30')](_0x55426f[_0x6ebf('0x31')]);if(_0x55426f[_0x6ebf('0x32')]){delete _0x55426f[_0x6ebf('0x32')];}_0xdd3a1a[_0x6ebf('0x23')](_0x40c03a)[_0x6ebf('0x33')](_0x55426f);};}function getInteractionUsers(_0x1ff815,_0x423efe){return new BPromise(function(_0x5f098c,_0x5d67a1){try{if(_0x423efe[_0x1ff815['id']]){_0x1ff815[_0x6ebf('0x34')]=_[_0x6ebf('0x35')](_0x423efe[_0x1ff815['id']],function(_0x3a5314){return{'id':_0x3a5314['id'],'fullname':_0x3a5314['fullname']};});}}catch(_0x46498a){_0x5d67a1(_0x46498a);}_0x5f098c(_0x1ff815);});}function getInteractionTags(_0x52f883,_0x50d156){return new BPromise(function(_0x111060,_0x1484b2){try{if(_0x52f883[_0x6ebf('0x36')]){_0x52f883[_0x6ebf('0x37')]=[];_0x52f883[_0x6ebf('0x36')][_0x6ebf('0x38')](',')['forEach'](function(_0x390ea1){_0x52f883['Tags'][_0x6ebf('0x39')](_0x50d156[_0x390ea1]);});}delete _0x52f883[_0x6ebf('0x36')];}catch(_0x33f60c){_0x1484b2(_0x33f60c);}_0x111060(_0x52f883);});}function updateSmsInteraction(_0x5a87dc,_0x16e991,_0x42fa65){return new BPromise(function(_0xc5a06,_0x2b20fb){return getInteractionUsers(_0x5a87dc,_0x42fa65)['then'](function(_0x13efd4){return getInteractionTags(_0x13efd4,_0x16e991);})[_0x6ebf('0x2f')](function(_0x9c2e4a){_0xc5a06(_0x9c2e4a);})[_0x6ebf('0x3a')](function(_0x493db1){_0x2b20fb(_0x493db1);});});}exports['index']=function(_0x2b385b,_0x4f58a5){var _0x4c3a82={},_0x5904c7={},_0x366c0e={'count':0x0,'rows':[]};var _0x444f36=_[_0x6ebf('0x35')](db[_0x6ebf('0x3b')][_0x6ebf('0x3c')],function(_0x12f6aa){return{'name':_0x12f6aa['fieldName'],'type':_0x12f6aa['type'][_0x6ebf('0x3d')]};});_0x5904c7[_0x6ebf('0x3e')]=_[_0x6ebf('0x35')](_0x444f36,_0x6ebf('0x32'));_0x5904c7['query']=_[_0x6ebf('0x3f')](_0x2b385b[_0x6ebf('0x40')]);_0x5904c7[_0x6ebf('0x41')]=_[_0x6ebf('0x42')](_0x5904c7[_0x6ebf('0x3e')],_0x5904c7['query']);_0x4c3a82[_0x6ebf('0x43')]=_[_0x6ebf('0x42')](_0x5904c7[_0x6ebf('0x3e')],qs['fields'](_0x2b385b['query'][_0x6ebf('0x44')]));_0x4c3a82['attributes']=_0x4c3a82[_0x6ebf('0x43')][_0x6ebf('0x45')]?_0x4c3a82[_0x6ebf('0x43')]:_0x5904c7[_0x6ebf('0x3e')];if(!_0x2b385b[_0x6ebf('0x40')][_0x6ebf('0x46')](_0x6ebf('0x47'))){_0x4c3a82[_0x6ebf('0x26')]=qs[_0x6ebf('0x26')](_0x2b385b['query'][_0x6ebf('0x26')]);_0x4c3a82['offset']=qs[_0x6ebf('0x27')](_0x2b385b[_0x6ebf('0x40')][_0x6ebf('0x27')]);}_0x4c3a82[_0x6ebf('0x48')]=qs[_0x6ebf('0x49')](_0x2b385b[_0x6ebf('0x40')][_0x6ebf('0x49')]);_0x4c3a82[_0x6ebf('0x4a')]=qs['filters'](_[_0x6ebf('0x4b')](_0x2b385b[_0x6ebf('0x40')],_0x5904c7[_0x6ebf('0x41')]),_0x444f36);var _0x589c23=[];var _0x368a89=squel[_0x6ebf('0x4c')]()['field']('id')[_0x6ebf('0x4d')](_0x6ebf('0x32'))[_0x6ebf('0x4d')]('color')[_0x6ebf('0x4e')](_0x6ebf('0x4f'));var _0x42291c=squel[_0x6ebf('0x4c')]()[_0x6ebf('0x4d')](_0x6ebf('0x50'))[_0x6ebf('0x4d')](_0x6ebf('0x51'))['field']('ui.SmsInteractionId')[_0x6ebf('0x4e')]('user_has_sms_interactions','ui')[_0x6ebf('0x52')](_0x6ebf('0x53'),'u',_0x6ebf('0x54'));var _0x1b7809=squel['select']()[_0x6ebf('0x4e')](_0x6ebf('0x55'),'i')['left_join'](_0x6ebf('0x56'),'c','c.id\x20=\x20i.ContactId\x20AND\x20c.deletedAt\x20IS\x20NULL')[_0x6ebf('0x52')](_0x6ebf('0x53'),'o',_0x6ebf('0x57'))[_0x6ebf('0x52')]('sms_accounts','a',_0x6ebf('0x58'))[_0x6ebf('0x52')](_0x6ebf('0x59'),'me',_0x6ebf('0x5a'))[_0x6ebf('0x52')](_0x6ebf('0x5b'),'it','it.SmsInteractionId\x20=\x20i.id')[_0x6ebf('0x52')](_0x6ebf('0x4f'),'t',_0x6ebf('0x5c'));var _0x4af4ab=squel[_0x6ebf('0x5d')]();var _0x1dd001=[];var _0x400e50=squel['expr']();var _0x1f1a79;if(_0x2b385b[_0x6ebf('0x40')][_0x6ebf('0x5e')]){_0x1f1a79=as[_0x6ebf('0x5f')](_0x2b385b[_0x6ebf('0x40')][_0x6ebf('0x5e')]);var _0x52723b=_0x1f1a79['sqlOperator'];for(var _0x2287c1=0x0;_0x2287c1<_0x1f1a79[_0x6ebf('0x60')][_0x6ebf('0x45')];_0x2287c1++){var _0x3edf82=_0x1f1a79['conditions'][_0x2287c1];var _0x37527f='i';var _0x347f52=_[_0x6ebf('0x61')](_0x444f36,[_0x6ebf('0x32'),_0x3edf82['field']]);if(!_0x347f52){switch(_0x3edf82[_0x6ebf('0x4d')]){case _0x6ebf('0x62'):if(_0x3edf82['value']==0x1){_0x1b7809[_0x6ebf('0x63')]('`'+_0x3edf82[_0x6ebf('0x4d')]+_0x6ebf('0x64'));}else{_0x1b7809[_0x6ebf('0x63')]('`'+_0x3edf82[_0x6ebf('0x4d')]+_0x6ebf('0x65'));}break;case _0x6ebf('0x66'):if(_0x3edf82[_0x6ebf('0x67')]==='$substring'){if(_0x3edf82[_0x6ebf('0x68')][_0x6ebf('0x38')]('\x20')[_0x6ebf('0x45')]>0x1){_0x4af4ab[_0x52723b](_0x6ebf('0x69'),qs[_0x6ebf('0x6a')](_0x3edf82[_0x6ebf('0x68')]),null);}else{var _0xa899ca='%'+_0x3edf82['value']+'%';_0x4af4ab[_0x52723b](_0x6ebf('0x6b'),_0xa899ca,_0xa899ca,_0xa899ca);}}else{_0x347f52=_[_0x6ebf('0x61')](_0x444f36,[_0x6ebf('0x32'),_0x6ebf('0x6c')]);_0x3edf82[_0x6ebf('0x4d')]=_0x6ebf('0x6c');_0x3ee392=as['buildExpression'](_0x37527f,_0x347f52[_0x6ebf('0x6d')],_0x3edf82);_0x4af4ab[_0x52723b](_0x3ee392['text'],_0x3ee392['value'][_0x6ebf('0x6e')],_0x3ee392[_0x6ebf('0x68')][_0x6ebf('0x24')]);}break;case _0x6ebf('0x6f'):var _0x383480=_0x3edf82[_0x6ebf('0x68')]['split'](',')[_0x6ebf('0x35')](function(_0x11a432){return Number(_0x11a432);});_0x383480['forEach'](function(_0x3bd93c){_0x400e50['or'](_0x6ebf('0x70'),'%,'+_0x3bd93c+',%');});_0x1dd001=_['union'](_0x1dd001,_0x383480);break;case _0x6ebf('0x71'):if(_0x3edf82['operator']===_0x6ebf('0x72')){_0x4af4ab[_0x52723b](_0x6ebf('0x73'),'%'+_0x3edf82[_0x6ebf('0x68')]+'%',null);}else{_0x347f52=_[_0x6ebf('0x61')](_0x444f36,[_0x6ebf('0x32'),_0x6ebf('0x74')]);_0x3edf82[_0x6ebf('0x4d')]='UserId';_0x3ee392=as[_0x6ebf('0x75')](_0x37527f,_0x347f52[_0x6ebf('0x6d')],_0x3edf82);_0x4af4ab[_0x52723b](_0x3ee392[_0x6ebf('0x76')],_0x3ee392[_0x6ebf('0x68')][_0x6ebf('0x6e')],_0x3ee392[_0x6ebf('0x68')][_0x6ebf('0x24')]);}break;case _0x6ebf('0x77'):_0x3ee392=as[_0x6ebf('0x75')]('me',null,_0x3edf82);_0x4af4ab[_0x52723b](_0x3ee392[_0x6ebf('0x76')],_0x3ee392[_0x6ebf('0x68')][_0x6ebf('0x6e')],_0x3ee392[_0x6ebf('0x68')][_0x6ebf('0x24')]);break;}}else{var _0x3ee392=as[_0x6ebf('0x75')](_0x37527f,_0x347f52[_0x6ebf('0x6d')],_0x3edf82);_0x4af4ab[_0x52723b](_0x3ee392[_0x6ebf('0x76')],_0x3ee392[_0x6ebf('0x68')][_0x6ebf('0x6e')],_0x3ee392[_0x6ebf('0x68')]['end']);}}}else{var _0x16b71f=_(_0x2b385b[_0x6ebf('0x40')])[_0x6ebf('0x3f')]()[_0x6ebf('0x35')](function(_0x370a3c){return _[_0x6ebf('0x78')](_0x444f36,[_0x6ebf('0x32'),_0x370a3c])?_0x370a3c:undefined;})[_0x6ebf('0x79')]()['value']();if(!_[_0x6ebf('0x7a')](_0x16b71f)){_0x16b71f[_0x6ebf('0x7b')](function(_0x1292e4){if(_0x1292e4===_0x6ebf('0x7c')){_0x1b7809[_0x6ebf('0x4a')]('i.SmsAccountId\x20IN\x20?',[][_0x6ebf('0x7d')](_0x2b385b[_0x6ebf('0x40')][_0x1292e4]));}else if(_0x1292e4===_0x6ebf('0x7e')){var _0x234dac=JSON[_0x6ebf('0x7f')](_0x2b385b['query'][_0x1292e4])[_0x6ebf('0x80')];var _0x2c0946=JSON['parse'](_0x2b385b[_0x6ebf('0x40')][_0x1292e4])['$lte'];_0x1b7809['where']('i.createdAt\x20BETWEEN\x20?\x20AND\x20?',_0x234dac,_0x2c0946);}else{if(_0x2b385b[_0x6ebf('0x40')][_0x1292e4]===_0x6ebf('0x81')){_0x1b7809[_0x6ebf('0x4a')]('i.'+_0x1292e4+_0x6ebf('0x82'));}else{_0x1b7809[_0x6ebf('0x4a')]('i.'+_0x1292e4+'\x20=\x20?',_0x2b385b['query'][_0x1292e4]);}}});}if(_0x2b385b[_0x6ebf('0x40')]['read']){if(_0x2b385b['query'][_0x6ebf('0x83')]==0x1){_0x1b7809[_0x6ebf('0x63')](_0x6ebf('0x84'));}else{_0x1b7809[_0x6ebf('0x63')]('`unreadMessages`\x20>\x200');}}if(_0x2b385b[_0x6ebf('0x40')][_0x6ebf('0x85')]){_0x1dd001=_[_0x6ebf('0x86')](_0x2b385b[_0x6ebf('0x40')][_0x6ebf('0x85')])?_0x2b385b[_0x6ebf('0x40')][_0x6ebf('0x85')]:new Array(_0x2b385b[_0x6ebf('0x40')][_0x6ebf('0x85')]);_0x1dd001['forEach'](function(_0x227133){_0x400e50['or'](_0x6ebf('0x70'),'%,'+_0x227133+',%');});}if(_0x2b385b[_0x6ebf('0x40')][_0x6ebf('0x87')]){var _0x54b954=_0x2b385b[_0x6ebf('0x40')][_0x6ebf('0x87')][_0x6ebf('0x88')]('\x5c','\x5c\x5c')[_0x6ebf('0x88')](/'/g,'\x27\x27');if(qs[_0x6ebf('0x89')](_0x54b954)){_0x4af4ab['or'](_0x6ebf('0x8a'),_0x54b954+'%')['or'](_0x6ebf('0x8b'),_0x54b954+'%');}else{_0x4af4ab['or'](_0x6ebf('0x8c'),qs[_0x6ebf('0x6a')](_0x54b954))['or'](_0x6ebf('0x8d'),_0x54b954+'%');}}}_0x1b7809[_0x6ebf('0x4a')](_0x4af4ab);_0x1b7809[_0x6ebf('0x8e')](_0x6ebf('0x8f'));var _0x112f80={'type':db['Sequelize'][_0x6ebf('0x90')][_0x6ebf('0x91')],'raw':!![]};var _0x102624=_0x1b7809[_0x6ebf('0x92')]();_0x102624[_0x6ebf('0x4d')]('i.id');_0x102624[_0x6ebf('0x4d')](_0x6ebf('0x93'),_0x6ebf('0x62'));if(_0x4c3a82[_0x6ebf('0x48')]){_0x4c3a82[_0x6ebf('0x48')]['forEach'](function(_0x3563ed){var _0x541c8f=_0x3563ed[0x0]===_0x6ebf('0x94')?_0x3563ed[0x0]:'i.'+_0x3563ed[0x0];_0x1b7809[_0x6ebf('0x48')](_0x541c8f,_0x3563ed[0x1]===_0x6ebf('0x95')?![]:!![]);});}if(!_['isEmpty'](_0x1dd001)){_0x1b7809[_0x6ebf('0x63')](_0x400e50);_0x102624[_0x6ebf('0x4a')](_0x6ebf('0x96'),_0x1dd001);}BPromise['resolve']()[_0x6ebf('0x2f')](function(){if(!_0x1f1a79){if(_0x2b385b[_0x6ebf('0x40')][_0x6ebf('0x7c')])return;_0x102624['where'](_0x6ebf('0x97'));_0x1b7809[_0x6ebf('0x4a')](_0x6ebf('0x97'));return;}if(_0x2b385b['user'][_0x6ebf('0x98')]!==_0x6ebf('0x99'))return;return _0x2b385b[_0x6ebf('0x9a')][_0x6ebf('0x9b')]({'attributes':['id'],'raw':!![]})[_0x6ebf('0x2f')](function(_0x12590d){if(_[_0x6ebf('0x7a')](_0x12590d)){_0x102624[_0x6ebf('0x4a')](_0x6ebf('0x9c'));_0x1b7809['where'](_0x6ebf('0x9c'));}else{_0x102624['where'](_0x6ebf('0x9d'),_[_0x6ebf('0x35')](_0x12590d,'id'));_0x1b7809[_0x6ebf('0x4a')](_0x6ebf('0x9d'),_[_0x6ebf('0x35')](_0x12590d,'id'));}});})[_0x6ebf('0x2f')](function(){if(_0x2b385b[_0x6ebf('0x9a')]['role']===_0x6ebf('0x99')&&!_0x1f1a79&&!_0x2b385b[_0x6ebf('0x40')][_0x6ebf('0x7c')])return[];return db[_0x6ebf('0x9e')]['query'](_0x102624['toString'](),_0x112f80);})['then'](function(_0x341741){_0x366c0e[_0x6ebf('0x28')]=_0x341741[_0x6ebf('0x45')];if(_0x366c0e[_0x6ebf('0x28')]===0x0)return[];return db[_0x6ebf('0x9e')]['query'](_0x368a89[_0x6ebf('0x9f')](),_0x112f80)[_0x6ebf('0x2f')](function(_0x25e3e0){_0x589c23=_['keyBy'](_0x25e3e0,'id');_0x112f80=_['merge'](_0x112f80,{'model':db[_0x6ebf('0x3b')],'mapToModel':!![],'raw':!![],'nest':!![]});if(_0x2b385b[_0x6ebf('0x40')][_0x6ebf('0x44')]){_0x4c3a82[_0x6ebf('0x43')]['forEach'](function(_0x503a38){_0x1b7809[_0x6ebf('0x4d')]('i.'+_0x503a38);});}else{_0x1b7809[_0x6ebf('0x4d')](_0x6ebf('0x93'),_0x6ebf('0x62'));_0x1b7809[_0x6ebf('0x4d')]('a.key',_0x6ebf('0xa0'));_0x1b7809[_0x6ebf('0x4d')]('a.mandatoryDisposition',_0x6ebf('0xa1'));_0x1b7809[_0x6ebf('0x4d')](_0x6ebf('0xa2'),_0x6ebf('0x94'));_0x1b7809[_0x6ebf('0x4d')]('i.*');_0x1b7809[_0x6ebf('0x4d')](_0x6ebf('0xa3'),_0x6ebf('0xa4'));_0x1b7809[_0x6ebf('0x4d')]('c.lastName',_0x6ebf('0xa5'));_0x1b7809[_0x6ebf('0x4d')](_0x6ebf('0xa6'),_0x6ebf('0xa7'));_0x1b7809['field'](_0x6ebf('0xa8'),_0x6ebf('0xa9'));_0x1b7809[_0x6ebf('0x4d')](_0x6ebf('0xaa'),'Contact.mobile');_0x1b7809[_0x6ebf('0x4d')](_0x6ebf('0xab'),_0x6ebf('0xac'));_0x1b7809[_0x6ebf('0x4d')]('o.fullname',_0x6ebf('0xad'));_0x1b7809[_0x6ebf('0x4d')](_0x6ebf('0xae'),_0x6ebf('0xaf'));_0x1b7809[_0x6ebf('0x4d')](_0x6ebf('0xb0'),_0x6ebf('0x36'));}if(_0x4c3a82[_0x6ebf('0x26')])_0x1b7809[_0x6ebf('0x26')](_0x4c3a82[_0x6ebf('0x26')]);if(_0x4c3a82[_0x6ebf('0x27')])_0x1b7809[_0x6ebf('0x27')](_0x4c3a82[_0x6ebf('0x27')]);return db[_0x6ebf('0x9e')][_0x6ebf('0x40')](_0x1b7809[_0x6ebf('0x9f')](),_0x112f80);})['then'](function(_0x21708a){if(_0x21708a['length']>0x0)_0x42291c[_0x6ebf('0x4a')](_0x6ebf('0xb1'),_[_0x6ebf('0x35')](_0x21708a,'id'));return db['sequelize']['query'](_0x42291c[_0x6ebf('0x9f')](),_0x112f80)['then'](function(_0x4e0710){var _0x3beb8d=_['groupBy'](_0x4e0710,_0x6ebf('0xb2'));var _0x1f95d1=[];_0x21708a[_0x6ebf('0x7b')](function(_0xca04e8){_0x1f95d1[_0x6ebf('0x39')](updateSmsInteraction(_0xca04e8,_0x589c23,_0x3beb8d));});return BPromise['all'](_0x1f95d1);});});})[_0x6ebf('0x2f')](function(_0x26037a){_0x366c0e[_0x6ebf('0xb3')]=_0x26037a;return _0x366c0e;})['then'](respondWithFilteredResult(_0x4f58a5,_0x4c3a82))[_0x6ebf('0x3a')](handleError(_0x4f58a5,null));};exports['show']=function(_0x3290a6,_0x236fa){var _0x33e51c={'raw':![],'where':{'id':_0x3290a6['params']['id']}},_0x464a72={};_0x464a72['model']=_[_0x6ebf('0x3f')](db[_0x6ebf('0x3b')][_0x6ebf('0x3c')]);_0x464a72['query']=_[_0x6ebf('0x3f')](_0x3290a6[_0x6ebf('0x40')]);_0x464a72[_0x6ebf('0x41')]=_[_0x6ebf('0x42')](_0x464a72[_0x6ebf('0x3e')],_0x464a72[_0x6ebf('0x40')]);_0x33e51c['attributes']=_['intersection'](_0x464a72[_0x6ebf('0x3e')],qs[_0x6ebf('0x44')](_0x3290a6[_0x6ebf('0x40')]['fields']));_0x33e51c[_0x6ebf('0x43')]=_0x33e51c['attributes'][_0x6ebf('0x45')]?_0x33e51c[_0x6ebf('0x43')]:_0x464a72[_0x6ebf('0x3e')];if(_0x3290a6[_0x6ebf('0x40')][_0x6ebf('0xb4')]){_0x33e51c['include']=[{'all':!![]}];}_0x33e51c=_[_0x6ebf('0xb5')]({},_0x33e51c,_0x3290a6['options']);return db['SmsInteraction'][_0x6ebf('0x61')](_0x33e51c)['then'](handleEntityNotFound(_0x236fa,null))[_0x6ebf('0x2f')](respondWithResult(_0x236fa,null))[_0x6ebf('0x3a')](handleError(_0x236fa,null));};exports[_0x6ebf('0xb6')]=function(_0x190904,_0x542dfc){return db[_0x6ebf('0x3b')][_0x6ebf('0xb6')](_0x190904[_0x6ebf('0x77')],{})[_0x6ebf('0x2f')](respondWithResult(_0x542dfc,0xc9))[_0x6ebf('0x3a')](handleError(_0x542dfc,null));};exports[_0x6ebf('0xb7')]=function(_0x257dc8,_0x702f81){if(_0x257dc8[_0x6ebf('0x77')]['id']){delete _0x257dc8[_0x6ebf('0x77')]['id'];}return db[_0x6ebf('0x3b')][_0x6ebf('0x61')]({'where':{'id':_0x257dc8[_0x6ebf('0xb8')]['id']}})[_0x6ebf('0x2f')](handleEntityNotFound(_0x702f81,null))[_0x6ebf('0x2f')](saveUpdates(_0x257dc8['body'],null))[_0x6ebf('0x2f')](respondWithResult(_0x702f81,null))[_0x6ebf('0x3a')](handleError(_0x702f81,null));};exports['destroy']=function(_0x13f8b2,_0x2a9805){return db['SmsInteraction'][_0x6ebf('0x61')]({'where':{'id':_0x13f8b2[_0x6ebf('0xb8')]['id']}})[_0x6ebf('0x2f')](handleEntityNotFound(_0x2a9805,null))[_0x6ebf('0x2f')](removeEntity(_0x2a9805,null))[_0x6ebf('0x3a')](handleError(_0x2a9805,null));};exports[_0x6ebf('0xb9')]=function(_0x4d8a9b,_0x55ab2c){return db['SmsInteraction']['describe']()[_0x6ebf('0x2f')](respondWithResult(_0x55ab2c,null))[_0x6ebf('0x3a')](handleError(_0x55ab2c,null));};exports['addMessage']=function(_0x27674d,_0x85ead9,_0x5279e8){return db['SmsMessage'][_0x6ebf('0x61')]({'where':{'id':_0x27674d[_0x6ebf('0xb8')]['id']}})[_0x6ebf('0x2f')](handleEntityNotFound(_0x85ead9,null))[_0x6ebf('0x2f')](function(_0x3307b3){if(_0x3307b3){return _0x3307b3['addMessage'](_0x27674d[_0x6ebf('0x77')]['ids'],_['omit'](_0x27674d[_0x6ebf('0x77')],[_0x6ebf('0xba'),'id'])||{});}})[_0x6ebf('0x2f')](respondWithResult(_0x85ead9,null))[_0x6ebf('0x3a')](handleError(_0x85ead9,null));};exports[_0x6ebf('0xbb')]=function(_0x402580,_0x44cfc7,_0x5d7e6d){var _0xe26e24={'raw':![],'where':{}};var _0x4073ac={};var _0x4c876d={'count':0x0,'rows':[]};return db[_0x6ebf('0x3b')][_0x6ebf('0xbc')]({'where':{'id':_0x402580['params']['id']}})[_0x6ebf('0x2f')](handleEntityNotFound(_0x44cfc7,null))[_0x6ebf('0x2f')](function(_0x134a02){if(_0x134a02){_0x4073ac[_0x6ebf('0x3e')]=_[_0x6ebf('0x3f')](db['SmsMessage'][_0x6ebf('0x3c')]);_0x4073ac['query']=_[_0x6ebf('0x3f')](_0x402580['query']);_0x4073ac['filters']=_[_0x6ebf('0x42')](_0x4073ac[_0x6ebf('0x3e')],_0x4073ac[_0x6ebf('0x40')]);_0xe26e24[_0x6ebf('0x43')]=_[_0x6ebf('0x42')](_0x4073ac[_0x6ebf('0x3e')],qs[_0x6ebf('0x44')](_0x402580[_0x6ebf('0x40')][_0x6ebf('0x44')]));_0xe26e24[_0x6ebf('0x43')]=_0xe26e24[_0x6ebf('0x43')][_0x6ebf('0x45')]?_0xe26e24['attributes']:_0x4073ac['model'];if(!_0x402580[_0x6ebf('0x40')][_0x6ebf('0x46')](_0x6ebf('0x47'))){_0xe26e24['limit']=qs[_0x6ebf('0x26')](_0x402580[_0x6ebf('0x40')][_0x6ebf('0x26')]);_0xe26e24[_0x6ebf('0x27')]=qs[_0x6ebf('0x27')](_0x402580[_0x6ebf('0x40')][_0x6ebf('0x27')]);}_0xe26e24[_0x6ebf('0x48')]=qs[_0x6ebf('0x49')](_0x402580[_0x6ebf('0x40')][_0x6ebf('0x49')]);_0xe26e24[_0x6ebf('0x4a')]=qs['filters'](_['pick'](_0x402580['query'],_0x4073ac[_0x6ebf('0x41')]));_0xe26e24[_0x6ebf('0x4a')][_0x6ebf('0xb2')]=_0x134a02['id'];if(_0x402580['query'][_0x6ebf('0x87')]){_0xe26e24[_0x6ebf('0x4a')]=_[_0x6ebf('0xb5')](_0xe26e24['where'],{'$or':_['map'](_0xe26e24[_0x6ebf('0x43')],function(_0x396e22){var _0x475fed={};_0x475fed[_0x396e22]={'$like':'%'+_0x402580[_0x6ebf('0x40')][_0x6ebf('0x87')]+'%'};return _0x475fed;})});}if(_0x402580['query'][_0x6ebf('0x80')]){var _0x952e27=_0x402580[_0x6ebf('0x40')]['$gte'][_0x6ebf('0x38')](',');var _0x260d7d={};_0x260d7d[_0x952e27[0x0]]={'$gte':moment(_0x952e27[0x1])[_0x6ebf('0xbd')]('YYYY-MM-DD\x20HH:mm:ss')};_0xe26e24[_0x6ebf('0x4a')]=_[_0x6ebf('0xb5')](_0xe26e24['where'],_0x260d7d);}_0xe26e24=_['merge']({},_0xe26e24,_0x402580[_0x6ebf('0xbe')]);return db['SmsMessage'][_0x6ebf('0x28')]({'where':_0xe26e24[_0x6ebf('0x4a')]})[_0x6ebf('0x2f')](function(_0x368712){_0x4c876d[_0x6ebf('0x28')]=_0x368712;if(_0x402580[_0x6ebf('0x40')][_0x6ebf('0xb4')]){_0xe26e24['include']=[{'all':!![]}];}return db[_0x6ebf('0xbf')][_0x6ebf('0xc0')](_0xe26e24);})[_0x6ebf('0x2f')](function(_0xe5fc8a){_0x4c876d[_0x6ebf('0xb3')]=_0xe5fc8a;return _0x4c876d;});}})[_0x6ebf('0x2f')](respondWithFilteredResult(_0x44cfc7,_0xe26e24))[_0x6ebf('0x3a')](handleError(_0x44cfc7,null));};exports['addTags']=function(_0x1ab6c2,_0x221367,_0x5cf1bf){return db[_0x6ebf('0x3b')][_0x6ebf('0x61')]({'where':{'id':_0x1ab6c2[_0x6ebf('0xb8')]['id']}})[_0x6ebf('0x2f')](handleEntityNotFound(_0x221367,null))['then'](function(_0x9efa2b){if(_0x9efa2b){return _0x9efa2b[_0x6ebf('0xc1')](_0x1ab6c2[_0x6ebf('0x77')][_0x6ebf('0xba')],_[_0x6ebf('0xc2')](_0x1ab6c2['body'],[_0x6ebf('0xba'),'id'])||{})[_0x6ebf('0xc3')](function(){return db[_0x6ebf('0x6f')][_0x6ebf('0xc0')]({'attributes':['id','name',_0x6ebf('0xc4')],'where':{'id':_0x1ab6c2[_0x6ebf('0x77')]['ids']}});})[_0x6ebf('0x2f')](function(_0x2c5dc1){socket[_0x6ebf('0xc5')](_0x6ebf('0xc6'),{'id':Number(_0x1ab6c2['params']['id']),'tags':_0x2c5dc1||[]});return{'id':Number(_0x1ab6c2[_0x6ebf('0xb8')]['id']),'tags':_0x2c5dc1||[]};});}})[_0x6ebf('0x2f')](respondWithResult(_0x221367,null))['catch'](handleError(_0x221367,null));};exports[_0x6ebf('0xc7')]=function(_0x523426,_0x27c57d,_0x26b6fb){return db[_0x6ebf('0x3b')][_0x6ebf('0x61')]({'where':{'id':_0x523426['params']['id']}})[_0x6ebf('0x2f')](handleEntityNotFound(_0x27c57d,null))[_0x6ebf('0x2f')](function(_0x131f71){if(_0x131f71){return _0x131f71['removeTags'](_0x523426[_0x6ebf('0x40')]['ids']);}})[_0x6ebf('0x2f')](respondWithStatusCode(_0x27c57d,null))[_0x6ebf('0x3a')](handleError(_0x27c57d,null));};exports[_0x6ebf('0xc8')]=function(_0x2216ff,_0x213d80){var _0x3c034e=moment()[_0x6ebf('0xc9')]()[_0x6ebf('0x9f')]();var _0x1a4393=path['join'](config[_0x6ebf('0xca')],_0x6ebf('0xcb'),_0x6ebf('0xcc'),_0x6ebf('0xcd'));var _0x533a67=path['join'](config[_0x6ebf('0xca')],_0x6ebf('0xcb'),'files','attachments');var _0x32a8a0=path[_0x6ebf('0xce')](_0x1a4393,_0x3c034e);var _0x4da163=util['format'](_0x6ebf('0xcf'),_0x2216ff['params']['id'],_0x3c034e);var _0x1bb12c=path[_0x6ebf('0xce')](_0x1a4393,_0x4da163);var _0x3c06a7=[];_0x3c06a7[_0x6ebf('0x39')]({'model':db[_0x6ebf('0x71')],'as':_0x6ebf('0x71'),'attributes':['id',_0x6ebf('0xd0')],'raw':!![]});_0x3c06a7['push']({'model':db[_0x6ebf('0xd1')],'as':'Contact','attributes':['id',_0x6ebf('0xd2'),_0x6ebf('0xd3')],'raw':!![]});var _0x363fe9=[{'model':db[_0x6ebf('0xbf')],'as':_0x6ebf('0xd4'),'attributes':['id',_0x6ebf('0x77'),'createdAt',_0x6ebf('0xd5'),_0x6ebf('0xd6'),_0x6ebf('0x83')],'include':_0x3c06a7}];_0x363fe9[_0x6ebf('0x39')]({'model':db[_0x6ebf('0xd7')],'as':_0x6ebf('0xd8'),'attributes':['id',_0x6ebf('0x32')]});_0x363fe9[_0x6ebf('0x39')]({'model':db[_0x6ebf('0x71')],'as':'Owner','attributes':['id',_0x6ebf('0xd0')]});return db['SmsInteraction'][_0x6ebf('0x61')]({'where':{'id':_0x2216ff[_0x6ebf('0xb8')]['id']},'include':_0x363fe9})['then'](handleEntityNotFound(_0x213d80,null))[_0x6ebf('0x2f')](function(_0x382dd5){if(_0x382dd5){var _0x1adec8=_0x382dd5[_0x6ebf('0xd9')]({'plain':!![]});fs[_0x6ebf('0xda')](_0x32a8a0);var _0x1b44aa={'channel':_0x6ebf('0xdb'),'account':_0x1adec8['Account'][_0x6ebf('0x32')],'agent':_0x1adec8[_0x6ebf('0xdc')]?_0x1adec8[_0x6ebf('0xdc')][_0x6ebf('0xd0')]:'N.A.','createdAt':moment(_0x1adec8[_0x6ebf('0x7e')])['format'](_0x6ebf('0xdd'))[_0x6ebf('0x9f')](),'closedAt':_0x1adec8[_0x6ebf('0xde')]?moment(_0x1adec8[_0x6ebf('0xdf')])['format'](_0x6ebf('0xdd'))[_0x6ebf('0x9f')]():'','disposition':_0x1adec8[_0x6ebf('0xe0')],'messages':_(_0x1adec8[_0x6ebf('0xd4')])[_0x6ebf('0x87')]({'secret':![]})[_0x6ebf('0x35')](function(_0x267a3d){return{'date':moment(_0x267a3d[_0x6ebf('0x7e')])[_0x6ebf('0xbd')](_0x6ebf('0xdd'))['toString'](),'sender':_0x267a3d[_0x6ebf('0xd5')]===_0x6ebf('0xe1')?_0x267a3d['User']?_0x267a3d[_0x6ebf('0x71')]['fullname']:_0x6ebf('0xe2'):_0x267a3d[_0x6ebf('0x66')][_0x6ebf('0xd2')]+(_0x267a3d['Contact'][_0x6ebf('0xd3')]?'\x20'+_0x267a3d[_0x6ebf('0x66')][_0x6ebf('0xd3')]:''),'body':_0x267a3d[_0x6ebf('0x77')],'direction':_0x267a3d[_0x6ebf('0xd5')]===_0x6ebf('0xe1')?'A':'C','secret':_0x267a3d[_0x6ebf('0xd6')],'read':_0x267a3d[_0x6ebf('0x83')]};})['value']()};return ejs['renderFile'](path[_0x6ebf('0xce')](config[_0x6ebf('0xca')],'server',_0x6ebf('0xe3'),_0x6ebf('0xe4')),{'interaction':_0x1b44aa})[_0x6ebf('0x2f')](function(_0x146e54){var _0x4dbd11=path[_0x6ebf('0xce')](_0x32a8a0,_0x6ebf('0xe5')+_0x1adec8['id']+'-'+_0x3c034e+_0x6ebf('0xe6'));var _0x4f9f0e={'path':_0x4dbd11,'channel':'Sms','interactionId':_0x1adec8['id']};return pdf[_0x6ebf('0xe7')](_0x146e54,_0x4f9f0e);})['then'](function(){return new BPromise(function(_0x5eab92,_0x4b4277){zipdir(_0x32a8a0,{'saveTo':_0x1bb12c},function(_0xf902f7,_0x5100a0){if(_0xf902f7)return _0x4b4277(_0xf902f7);return _0x5eab92(_0x5100a0);});})['then'](function(){return new BPromise(function(_0x167b13,_0x369860){rimraf(_0x32a8a0,function(_0x245587){if(_0x245587)_0x369860(_0x245587);return _0x167b13();});});})[_0x6ebf('0x2f')](function(){return _0x213d80[_0x6ebf('0xc8')](_0x1bb12c,_0x4da163,function(_0x7e9c11){if(_0x7e9c11){console['log'](_0x6ebf('0xe8'),_0x7e9c11);}else{fs[_0x6ebf('0xe9')](_0x1bb12c);}});});});}else{return _0x213d80[_0x6ebf('0x22')](0xc8);}})[_0x6ebf('0x3a')](handleError(_0x213d80,null));};
\ No newline at end of file
+var _0xca99=['CONCAT(c.firstName,\x20\x27\x20\x27,\x20c.lastName)\x20LIKE\x20?','i.id','Sequelize','QueryTypes','SELECT','clone','SUM(me.read\x20=\x200\x20AND\x20me.direction\x20=\x20\x27in\x27)','order','contactName','DESC','isEmpty','resolve','i.SmsAccountId\x20IS\x20NOT\x20NULL','user','role','agent','i.SmsAccountId\x20IS\x20NULL','sequelize','toString','keyBy','merge','a.key','Account.key','a.mandatoryDisposition','Account.mandatoryDisposition','Contact.firstName','c.lastName','Contact.lastName','Contact.phone','c.mobile','Contact.mobile','Contact.fax','o.fullname','Owner.fullname','o.internal','Owner.internal','GROUP_CONCAT(DISTINCT\x20t.id)','ui.SmsInteractionId\x20IN\x20?','groupBy','SmsInteractionId','all','show','params','include','options','create','describe','addMessage','SmsMessage','ids','omit','getMessages','findOne','nolimit','YYYY-MM-DD\x20HH:mm:ss','includeAll','findAll','rows','setTags','spread','color','emit','smsInteractionTags:save','removeTags','download','unix','join','server','files','root','attachments','format','transcript-%d-%s.zip','CmContact','Contact','firstName','lastName','Messages','direction','SmsAccount','Owner','get','mkdirSync','Sms','closed','closedAt','disposition','out','System','secret','renderFile','views','transcript-','.pdf','log','unlinkSync','zip-dir','fast-json-patch','request-promise','bluebird','mustache','to-csv','ejs','fs-extra','squel','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','../../components/export/pdf','../../config/license/hardware','../../config/environment','../../mysqldb','defaults','redis','localhost','socket.io-emitter','./smsInteraction.socket','register','sendStatus','status','end','json','offset','undefined','limit','count','set','Content-Range','reject','save','update','then','destroy','error','stack','name','send','Users','map','fullname','TagIds','split','forEach','push','catch','index','SmsInteraction','rawAttributes','fieldName','type','model','query','keys','filters','intersection','attributes','fields','length','hasOwnProperty','sort','where','pick','select','field','from','tools_tags','u.id','u.fullname','user_has_sms_interactions','left_join','users','u.id\x20=\x20ui.UserId','sms_interactions','c.id\x20=\x20i.ContactId\x20AND\x20c.deletedAt\x20IS\x20NULL','o.id\x20=\x20i.UserId','sms_accounts','a.id\x20=\x20i.SmsAccountId','sms_messages','me.SmsInteractionId\x20=\x20i.id','sms_interaction_has_tags','it.SmsInteractionId\x20=\x20i.id','t.id\x20=\x20it.TagId','expr','search','sqlOperator','conditions','find','unreadMessages','having','`\x20>\x200','operator','$substring','value','MATCH\x20(c.firstName,\x20c.lastName,\x20c.phone,\x20c.mobile,\x20c.fax,\x20c.email)\x20AGAINST\x20(?\x20IN\x20BOOLEAN\x20MODE)','getFullTextValue','ContactId','text','start','Tag','CONCAT(\x27,\x27,\x20`TagIds`,\x20\x27,\x27)\x20LIKE\x20?','User','CONCAT_WS(\x27\x20\x27,\x20o.name,\x20o.fullname)\x20LIKE\x20?','UserId','buildExpression','body','some','compact','SmsAccountId','i.SmsAccountId\x20IN\x20?','concat','createdAt','parse','$gte','i.createdAt\x20BETWEEN\x20?\x20AND\x20?','null','\x20IS\x20NULL','read','tag','filter','replace','isNumeric','i.phone\x20LIKE\x20?','MATCH\x20(me.body)\x20AGAINST\x20(?\x20IN\x20BOOLEAN\x20MODE)'];(function(_0x320b8e,_0x1da3fe){var _0x55a10a=function(_0x148a56){while(--_0x148a56){_0x320b8e['push'](_0x320b8e['shift']());}};_0x55a10a(++_0x1da3fe);}(_0xca99,0x144));var _0x9ca9=function(_0x489e19,_0x2ffcb2){_0x489e19=_0x489e19-0x0;var _0x48225a=_0xca99[_0x489e19];return _0x48225a;};'use strict';var emlformat=require('eml-format');var rimraf=require('rimraf');var zipdir=require(_0x9ca9('0x0'));var jsonpatch=require(_0x9ca9('0x1'));var rp=require(_0x9ca9('0x2'));var moment=require('moment');var BPromise=require(_0x9ca9('0x3'));var Mustache=require(_0x9ca9('0x4'));var util=require('util');var path=require('path');var sox=require('sox');var csv=require(_0x9ca9('0x5'));var ejs=require(_0x9ca9('0x6'));var fs=require('fs');var fs_extra=require(_0x9ca9('0x7'));var _=require('lodash');var squel=require(_0x9ca9('0x8'));var crypto=require(_0x9ca9('0x9'));var jsforce=require(_0x9ca9('0xa'));var deskjs=require(_0x9ca9('0xb'));var toCsv=require(_0x9ca9('0x5'));var querystring=require(_0x9ca9('0xc'));var Papa=require(_0x9ca9('0xd'));var Redis=require(_0x9ca9('0xe'));var authService=require(_0x9ca9('0xf'));var qs=require('../../components/parsers/qs');var as=require(_0x9ca9('0x10'));var pdf=require(_0x9ca9('0x11'));var hardwareService=require(_0x9ca9('0x12'));var logger=require('../../config/logger')('api');var utils=require('../../config/utils');var config=require(_0x9ca9('0x13'));var licenseUtil=require('../../config/license/util');var db=require(_0x9ca9('0x14'))['db'];config['redis']=_[_0x9ca9('0x15')](config[_0x9ca9('0x16')],{'host':_0x9ca9('0x17'),'port':0x18eb});var socket=require(_0x9ca9('0x18'))(new Redis(config[_0x9ca9('0x16')]));require(_0x9ca9('0x19'))[_0x9ca9('0x1a')](socket);function respondWithStatusCode(_0x499b09,_0x3a7fa9){_0x3a7fa9=_0x3a7fa9||0xcc;return function(_0x47d16d){if(_0x47d16d){return _0x499b09[_0x9ca9('0x1b')](_0x3a7fa9);}return _0x499b09[_0x9ca9('0x1c')](_0x3a7fa9)[_0x9ca9('0x1d')]();};}function respondWithResult(_0x2a35a,_0x347fdf){_0x347fdf=_0x347fdf||0xc8;return function(_0x4b8587){if(_0x4b8587){return _0x2a35a[_0x9ca9('0x1c')](_0x347fdf)[_0x9ca9('0x1e')](_0x4b8587);}};}function respondWithFilteredResult(_0x573da0,_0x2f4e2f){return function(_0x51a072){if(_0x51a072){var _0xcff97c=typeof _0x2f4e2f[_0x9ca9('0x1f')]===_0x9ca9('0x20')&&typeof _0x2f4e2f[_0x9ca9('0x21')]===_0x9ca9('0x20');var _0x1cc2d8=_0x51a072['count'];var _0x1c3e3c=_0xcff97c?0x0:_0x2f4e2f[_0x9ca9('0x1f')];var _0x4306ee=_0xcff97c?_0x51a072[_0x9ca9('0x22')]:_0x2f4e2f[_0x9ca9('0x1f')]+_0x2f4e2f['limit'];var _0x2313cf;if(_0x4306ee>=_0x1cc2d8){_0x4306ee=_0x1cc2d8;_0x2313cf=0xc8;}else{_0x2313cf=0xce;}_0x573da0[_0x9ca9('0x1c')](_0x2313cf);return _0x573da0[_0x9ca9('0x23')](_0x9ca9('0x24'),_0x1c3e3c+'-'+_0x4306ee+'/'+_0x1cc2d8)['json'](_0x51a072);}return null;};}function patchUpdates(_0x2bcd24){return function(_0xac443a){try{jsonpatch['apply'](_0xac443a,_0x2bcd24,!![]);}catch(_0x132308){return BPromise[_0x9ca9('0x25')](_0x132308);}return _0xac443a[_0x9ca9('0x26')]();};}function saveUpdates(_0x110881,_0x5c1d64){return function(_0x7200cf){if(_0x7200cf){return _0x7200cf[_0x9ca9('0x27')](_0x110881)[_0x9ca9('0x28')](function(_0x574bf2){return _0x574bf2;});}return null;};}function removeEntity(_0x1a7fe5,_0x2e1b18){return function(_0x5a8e48){if(_0x5a8e48){return _0x5a8e48[_0x9ca9('0x29')]()[_0x9ca9('0x28')](function(){_0x1a7fe5[_0x9ca9('0x1c')](0xcc)['end']();});}};}function handleEntityNotFound(_0x5738ea,_0x1e2163){return function(_0x30538e){if(!_0x30538e){_0x5738ea[_0x9ca9('0x1b')](0x194);}return _0x30538e;};}function handleError(_0x39c4dc,_0x345cb2){_0x345cb2=_0x345cb2||0x1f4;return function(_0x3e18cf){logger[_0x9ca9('0x2a')](_0x3e18cf[_0x9ca9('0x2b')]);if(_0x3e18cf['name']){delete _0x3e18cf[_0x9ca9('0x2c')];}_0x39c4dc['status'](_0x345cb2)[_0x9ca9('0x2d')](_0x3e18cf);};}function getInteractionUsers(_0x3a957f,_0x9e29e){return new BPromise(function(_0xde5300,_0x31ddcf){try{if(_0x9e29e[_0x3a957f['id']]){_0x3a957f[_0x9ca9('0x2e')]=_[_0x9ca9('0x2f')](_0x9e29e[_0x3a957f['id']],function(_0x1d8cdf){return{'id':_0x1d8cdf['id'],'fullname':_0x1d8cdf[_0x9ca9('0x30')]};});}}catch(_0x1b3ef9){_0x31ddcf(_0x1b3ef9);}_0xde5300(_0x3a957f);});}function getInteractionTags(_0x29a25d,_0x8002bb){return new BPromise(function(_0x4f3ba8,_0x48346e){try{if(_0x29a25d[_0x9ca9('0x31')]){_0x29a25d['Tags']=[];_0x29a25d[_0x9ca9('0x31')][_0x9ca9('0x32')](',')[_0x9ca9('0x33')](function(_0x21a7ca){_0x29a25d['Tags'][_0x9ca9('0x34')](_0x8002bb[_0x21a7ca]);});}delete _0x29a25d[_0x9ca9('0x31')];}catch(_0x5ec558){_0x48346e(_0x5ec558);}_0x4f3ba8(_0x29a25d);});}function updateSmsInteraction(_0x295be0,_0x4f6f36,_0x236193){return new BPromise(function(_0x1a0f40,_0x4dde8c){return getInteractionUsers(_0x295be0,_0x236193)[_0x9ca9('0x28')](function(_0x480307){return getInteractionTags(_0x480307,_0x4f6f36);})['then'](function(_0x277749){_0x1a0f40(_0x277749);})[_0x9ca9('0x35')](function(_0xd784c){_0x4dde8c(_0xd784c);});});}exports[_0x9ca9('0x36')]=function(_0x5c1b26,_0x403c25){var _0x1bdd37={},_0x122d57={},_0x4b990e={'count':0x0,'rows':[]};var _0x785bf2=_[_0x9ca9('0x2f')](db[_0x9ca9('0x37')][_0x9ca9('0x38')],function(_0xc70564){return{'name':_0xc70564[_0x9ca9('0x39')],'type':_0xc70564[_0x9ca9('0x3a')]['key']};});_0x122d57[_0x9ca9('0x3b')]=_[_0x9ca9('0x2f')](_0x785bf2,_0x9ca9('0x2c'));_0x122d57[_0x9ca9('0x3c')]=_[_0x9ca9('0x3d')](_0x5c1b26['query']);_0x122d57[_0x9ca9('0x3e')]=_[_0x9ca9('0x3f')](_0x122d57[_0x9ca9('0x3b')],_0x122d57[_0x9ca9('0x3c')]);_0x1bdd37[_0x9ca9('0x40')]=_[_0x9ca9('0x3f')](_0x122d57[_0x9ca9('0x3b')],qs[_0x9ca9('0x41')](_0x5c1b26[_0x9ca9('0x3c')][_0x9ca9('0x41')]));_0x1bdd37['attributes']=_0x1bdd37['attributes'][_0x9ca9('0x42')]?_0x1bdd37['attributes']:_0x122d57['model'];if(!_0x5c1b26[_0x9ca9('0x3c')][_0x9ca9('0x43')]('nolimit')){_0x1bdd37['limit']=qs['limit'](_0x5c1b26[_0x9ca9('0x3c')][_0x9ca9('0x21')]);_0x1bdd37['offset']=qs[_0x9ca9('0x1f')](_0x5c1b26[_0x9ca9('0x3c')][_0x9ca9('0x1f')]);}_0x1bdd37['order']=qs[_0x9ca9('0x44')](_0x5c1b26[_0x9ca9('0x3c')][_0x9ca9('0x44')]);_0x1bdd37[_0x9ca9('0x45')]=qs[_0x9ca9('0x3e')](_[_0x9ca9('0x46')](_0x5c1b26[_0x9ca9('0x3c')],_0x122d57[_0x9ca9('0x3e')]),_0x785bf2);var _0x122d0c=[];var _0x5f193c=squel[_0x9ca9('0x47')]()[_0x9ca9('0x48')]('id')[_0x9ca9('0x48')](_0x9ca9('0x2c'))[_0x9ca9('0x48')]('color')[_0x9ca9('0x49')](_0x9ca9('0x4a'));var _0x40b2af=squel[_0x9ca9('0x47')]()[_0x9ca9('0x48')](_0x9ca9('0x4b'))[_0x9ca9('0x48')](_0x9ca9('0x4c'))[_0x9ca9('0x48')]('ui.SmsInteractionId')[_0x9ca9('0x49')](_0x9ca9('0x4d'),'ui')[_0x9ca9('0x4e')](_0x9ca9('0x4f'),'u',_0x9ca9('0x50'));var _0x568ec1=squel['select']()[_0x9ca9('0x49')](_0x9ca9('0x51'),'i')['left_join']('cm_contacts','c',_0x9ca9('0x52'))[_0x9ca9('0x4e')]('users','o',_0x9ca9('0x53'))['left_join'](_0x9ca9('0x54'),'a',_0x9ca9('0x55'))[_0x9ca9('0x4e')](_0x9ca9('0x56'),'me',_0x9ca9('0x57'))[_0x9ca9('0x4e')](_0x9ca9('0x58'),'it',_0x9ca9('0x59'))['left_join'](_0x9ca9('0x4a'),'t',_0x9ca9('0x5a'));var _0x1ce7e6=squel[_0x9ca9('0x5b')]();var _0xf5c22d=[];var _0x367bf8=squel[_0x9ca9('0x5b')]();var _0x1f4375;if(_0x5c1b26[_0x9ca9('0x3c')][_0x9ca9('0x5c')]){_0x1f4375=as['parseSearch'](_0x5c1b26['query'][_0x9ca9('0x5c')]);var _0x131ea6=_0x1f4375[_0x9ca9('0x5d')];for(var _0xe8d527=0x0;_0xe8d527<_0x1f4375[_0x9ca9('0x5e')]['length'];_0xe8d527++){var _0x12236c=_0x1f4375[_0x9ca9('0x5e')][_0xe8d527];var _0x6693ed='i';var _0x190824=_[_0x9ca9('0x5f')](_0x785bf2,[_0x9ca9('0x2c'),_0x12236c[_0x9ca9('0x48')]]);if(!_0x190824){switch(_0x12236c['field']){case _0x9ca9('0x60'):if(_0x12236c['value']==0x1){_0x568ec1[_0x9ca9('0x61')]('`'+_0x12236c['field']+'`\x20=\x200');}else{_0x568ec1[_0x9ca9('0x61')]('`'+_0x12236c['field']+_0x9ca9('0x62'));}break;case'Contact':if(_0x12236c[_0x9ca9('0x63')]===_0x9ca9('0x64')){if(_0x12236c[_0x9ca9('0x65')]['split']('\x20')[_0x9ca9('0x42')]>0x1){_0x1ce7e6[_0x131ea6](_0x9ca9('0x66'),qs[_0x9ca9('0x67')](_0x12236c[_0x9ca9('0x65')]),null);}else{var _0x2f72d4='%'+_0x12236c[_0x9ca9('0x65')]+'%';_0x1ce7e6[_0x131ea6]('c.firstName\x20LIKE\x20?\x20OR\x20c.lastName\x20LIKE\x20?\x20OR\x20c.email\x20LIKE\x20?',_0x2f72d4,_0x2f72d4,_0x2f72d4);}}else{_0x190824=_[_0x9ca9('0x5f')](_0x785bf2,[_0x9ca9('0x2c'),'ContactId']);_0x12236c[_0x9ca9('0x48')]=_0x9ca9('0x68');_0x20d93a=as['buildExpression'](_0x6693ed,_0x190824[_0x9ca9('0x3a')],_0x12236c);_0x1ce7e6[_0x131ea6](_0x20d93a[_0x9ca9('0x69')],_0x20d93a[_0x9ca9('0x65')][_0x9ca9('0x6a')],_0x20d93a['value'][_0x9ca9('0x1d')]);}break;case _0x9ca9('0x6b'):var _0x5449a4=_0x12236c[_0x9ca9('0x65')]['split'](',')[_0x9ca9('0x2f')](function(_0x41ff5c){return Number(_0x41ff5c);});_0x5449a4[_0x9ca9('0x33')](function(_0x2912ed){_0x367bf8['or'](_0x9ca9('0x6c'),'%,'+_0x2912ed+',%');});_0xf5c22d=_['union'](_0xf5c22d,_0x5449a4);break;case _0x9ca9('0x6d'):if(_0x12236c[_0x9ca9('0x63')]==='$substring'){_0x1ce7e6[_0x131ea6](_0x9ca9('0x6e'),'%'+_0x12236c[_0x9ca9('0x65')]+'%',null);}else{_0x190824=_['find'](_0x785bf2,[_0x9ca9('0x2c'),_0x9ca9('0x6f')]);_0x12236c['field']=_0x9ca9('0x6f');_0x20d93a=as[_0x9ca9('0x70')](_0x6693ed,_0x190824[_0x9ca9('0x3a')],_0x12236c);_0x1ce7e6[_0x131ea6](_0x20d93a[_0x9ca9('0x69')],_0x20d93a[_0x9ca9('0x65')][_0x9ca9('0x6a')],_0x20d93a['value'][_0x9ca9('0x1d')]);}break;case _0x9ca9('0x71'):_0x20d93a=as[_0x9ca9('0x70')]('me',null,_0x12236c);_0x1ce7e6[_0x131ea6](_0x20d93a[_0x9ca9('0x69')],_0x20d93a[_0x9ca9('0x65')][_0x9ca9('0x6a')],_0x20d93a[_0x9ca9('0x65')][_0x9ca9('0x1d')]);break;}}else{var _0x20d93a=as[_0x9ca9('0x70')](_0x6693ed,_0x190824[_0x9ca9('0x3a')],_0x12236c);_0x1ce7e6[_0x131ea6](_0x20d93a['text'],_0x20d93a[_0x9ca9('0x65')][_0x9ca9('0x6a')],_0x20d93a[_0x9ca9('0x65')]['end']);}}}else{var _0x864acd=_(_0x5c1b26['query'])[_0x9ca9('0x3d')]()['map'](function(_0x150043){return _[_0x9ca9('0x72')](_0x785bf2,['name',_0x150043])?_0x150043:undefined;})[_0x9ca9('0x73')]()[_0x9ca9('0x65')]();if(!_['isEmpty'](_0x864acd)){_0x864acd[_0x9ca9('0x33')](function(_0x4d89dd){if(_0x4d89dd===_0x9ca9('0x74')){_0x568ec1[_0x9ca9('0x45')](_0x9ca9('0x75'),[][_0x9ca9('0x76')](_0x5c1b26[_0x9ca9('0x3c')][_0x4d89dd]));}else if(_0x4d89dd===_0x9ca9('0x77')){var _0x57fe4=JSON[_0x9ca9('0x78')](_0x5c1b26[_0x9ca9('0x3c')][_0x4d89dd])[_0x9ca9('0x79')];var _0xe7e0b6=JSON['parse'](_0x5c1b26[_0x9ca9('0x3c')][_0x4d89dd])['$lte'];_0x568ec1[_0x9ca9('0x45')](_0x9ca9('0x7a'),_0x57fe4,_0xe7e0b6);}else{if(_0x5c1b26[_0x9ca9('0x3c')][_0x4d89dd]===_0x9ca9('0x7b')){_0x568ec1[_0x9ca9('0x45')]('i.'+_0x4d89dd+_0x9ca9('0x7c'));}else{_0x568ec1['where']('i.'+_0x4d89dd+'\x20=\x20?',_0x5c1b26[_0x9ca9('0x3c')][_0x4d89dd]);}}});}if(_0x5c1b26[_0x9ca9('0x3c')][_0x9ca9('0x7d')]){if(_0x5c1b26['query'][_0x9ca9('0x7d')]==0x1){_0x568ec1[_0x9ca9('0x61')]('`unreadMessages`\x20=\x200');}else{_0x568ec1[_0x9ca9('0x61')]('`unreadMessages`\x20>\x200');}}if(_0x5c1b26[_0x9ca9('0x3c')][_0x9ca9('0x7e')]){_0xf5c22d=_['isArray'](_0x5c1b26[_0x9ca9('0x3c')][_0x9ca9('0x7e')])?_0x5c1b26[_0x9ca9('0x3c')]['tag']:new Array(_0x5c1b26[_0x9ca9('0x3c')][_0x9ca9('0x7e')]);_0xf5c22d[_0x9ca9('0x33')](function(_0x522af4){_0x367bf8['or'](_0x9ca9('0x6c'),'%,'+_0x522af4+',%');});}if(_0x5c1b26[_0x9ca9('0x3c')][_0x9ca9('0x7f')]){var _0x415b19=_0x5c1b26[_0x9ca9('0x3c')][_0x9ca9('0x7f')][_0x9ca9('0x80')]('\x5c','\x5c\x5c')[_0x9ca9('0x80')](/'/g,'\x27\x27');if(qs[_0x9ca9('0x81')](_0x415b19)){_0x1ce7e6['or']('i.id\x20LIKE\x20?',_0x415b19+'%')['or'](_0x9ca9('0x82'),_0x415b19+'%');}else{_0x1ce7e6['or'](_0x9ca9('0x83'),qs[_0x9ca9('0x67')](_0x415b19))['or'](_0x9ca9('0x84'),_0x415b19+'%');}}}_0x568ec1[_0x9ca9('0x45')](_0x1ce7e6);_0x568ec1['group'](_0x9ca9('0x85'));var _0x40e18c={'type':db[_0x9ca9('0x86')][_0x9ca9('0x87')][_0x9ca9('0x88')],'raw':!![]};var _0x5bc502=_0x568ec1[_0x9ca9('0x89')]();_0x5bc502['field']('i.id');_0x5bc502[_0x9ca9('0x48')](_0x9ca9('0x8a'),_0x9ca9('0x60'));if(_0x1bdd37[_0x9ca9('0x8b')]){_0x1bdd37[_0x9ca9('0x8b')]['forEach'](function(_0x498fd6){var _0x3690ef=_0x498fd6[0x0]===_0x9ca9('0x8c')?_0x498fd6[0x0]:'i.'+_0x498fd6[0x0];_0x568ec1[_0x9ca9('0x8b')](_0x3690ef,_0x498fd6[0x1]===_0x9ca9('0x8d')?![]:!![]);});}if(!_[_0x9ca9('0x8e')](_0xf5c22d)){_0x568ec1['having'](_0x367bf8);_0x5bc502[_0x9ca9('0x45')]('t.id\x20IN\x20?',_0xf5c22d);}BPromise[_0x9ca9('0x8f')]()[_0x9ca9('0x28')](function(){if(!_0x1f4375){if(_0x5c1b26[_0x9ca9('0x3c')][_0x9ca9('0x74')])return;_0x5bc502[_0x9ca9('0x45')](_0x9ca9('0x90'));_0x568ec1[_0x9ca9('0x45')](_0x9ca9('0x90'));return;}if(_0x5c1b26[_0x9ca9('0x91')][_0x9ca9('0x92')]!==_0x9ca9('0x93'))return;return _0x5c1b26[_0x9ca9('0x91')]['getSmsAccounts']({'attributes':['id'],'raw':!![]})[_0x9ca9('0x28')](function(_0x2a2f0c){if(_[_0x9ca9('0x8e')](_0x2a2f0c)){_0x5bc502[_0x9ca9('0x45')](_0x9ca9('0x94'));_0x568ec1['where'](_0x9ca9('0x94'));}else{_0x5bc502[_0x9ca9('0x45')](_0x9ca9('0x75'),_[_0x9ca9('0x2f')](_0x2a2f0c,'id'));_0x568ec1['where'](_0x9ca9('0x75'),_[_0x9ca9('0x2f')](_0x2a2f0c,'id'));}});})[_0x9ca9('0x28')](function(){if(_0x5c1b26[_0x9ca9('0x91')]['role']===_0x9ca9('0x93')&&!_0x1f4375&&!_0x5c1b26[_0x9ca9('0x3c')][_0x9ca9('0x74')])return[];return db['sequelize'][_0x9ca9('0x3c')](_0x5bc502['toString'](),_0x40e18c);})[_0x9ca9('0x28')](function(_0x2856a3){_0x4b990e[_0x9ca9('0x22')]=_0x2856a3[_0x9ca9('0x42')];if(_0x4b990e[_0x9ca9('0x22')]===0x0)return[];return db[_0x9ca9('0x95')][_0x9ca9('0x3c')](_0x5f193c[_0x9ca9('0x96')](),_0x40e18c)[_0x9ca9('0x28')](function(_0x1d946c){_0x122d0c=_[_0x9ca9('0x97')](_0x1d946c,'id');_0x40e18c=_[_0x9ca9('0x98')](_0x40e18c,{'model':db[_0x9ca9('0x37')],'mapToModel':!![],'raw':!![],'nest':!![]});if(_0x5c1b26[_0x9ca9('0x3c')][_0x9ca9('0x41')]){_0x1bdd37[_0x9ca9('0x40')]['forEach'](function(_0x29a5d9){_0x568ec1['field']('i.'+_0x29a5d9);});}else{_0x568ec1[_0x9ca9('0x48')]('SUM(me.read\x20=\x200\x20AND\x20me.direction\x20=\x20\x27in\x27)',_0x9ca9('0x60'));_0x568ec1[_0x9ca9('0x48')](_0x9ca9('0x99'),_0x9ca9('0x9a'));_0x568ec1[_0x9ca9('0x48')](_0x9ca9('0x9b'),_0x9ca9('0x9c'));_0x568ec1[_0x9ca9('0x48')]('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',_0x9ca9('0x8c'));_0x568ec1['field']('i.*');_0x568ec1['field']('c.firstName',_0x9ca9('0x9d'));_0x568ec1[_0x9ca9('0x48')](_0x9ca9('0x9e'),_0x9ca9('0x9f'));_0x568ec1[_0x9ca9('0x48')]('c.email','Contact.email');_0x568ec1[_0x9ca9('0x48')]('c.phone',_0x9ca9('0xa0'));_0x568ec1[_0x9ca9('0x48')](_0x9ca9('0xa1'),_0x9ca9('0xa2'));_0x568ec1['field']('c.fax',_0x9ca9('0xa3'));_0x568ec1[_0x9ca9('0x48')](_0x9ca9('0xa4'),_0x9ca9('0xa5'));_0x568ec1[_0x9ca9('0x48')](_0x9ca9('0xa6'),_0x9ca9('0xa7'));_0x568ec1[_0x9ca9('0x48')](_0x9ca9('0xa8'),_0x9ca9('0x31'));}if(_0x1bdd37[_0x9ca9('0x21')])_0x568ec1[_0x9ca9('0x21')](_0x1bdd37[_0x9ca9('0x21')]);if(_0x1bdd37['offset'])_0x568ec1['offset'](_0x1bdd37['offset']);return db[_0x9ca9('0x95')][_0x9ca9('0x3c')](_0x568ec1[_0x9ca9('0x96')](),_0x40e18c);})[_0x9ca9('0x28')](function(_0x1e522a){if(_0x1e522a['length']>0x0)_0x40b2af[_0x9ca9('0x45')](_0x9ca9('0xa9'),_[_0x9ca9('0x2f')](_0x1e522a,'id'));return db[_0x9ca9('0x95')][_0x9ca9('0x3c')](_0x40b2af[_0x9ca9('0x96')](),_0x40e18c)[_0x9ca9('0x28')](function(_0x256590){var _0x27f17c=_[_0x9ca9('0xaa')](_0x256590,_0x9ca9('0xab'));var _0x5d8aae=[];_0x1e522a[_0x9ca9('0x33')](function(_0x5c9fb1){_0x5d8aae[_0x9ca9('0x34')](updateSmsInteraction(_0x5c9fb1,_0x122d0c,_0x27f17c));});return BPromise[_0x9ca9('0xac')](_0x5d8aae);});});})[_0x9ca9('0x28')](function(_0x55683d){_0x4b990e['rows']=_0x55683d;return _0x4b990e;})[_0x9ca9('0x28')](respondWithFilteredResult(_0x403c25,_0x1bdd37))[_0x9ca9('0x35')](handleError(_0x403c25,null));};exports[_0x9ca9('0xad')]=function(_0x18300c,_0x12f85b){var _0xd290a3={'raw':![],'where':{'id':_0x18300c[_0x9ca9('0xae')]['id']}},_0x49be36={};_0x49be36[_0x9ca9('0x3b')]=_['keys'](db[_0x9ca9('0x37')][_0x9ca9('0x38')]);_0x49be36[_0x9ca9('0x3c')]=_[_0x9ca9('0x3d')](_0x18300c[_0x9ca9('0x3c')]);_0x49be36[_0x9ca9('0x3e')]=_[_0x9ca9('0x3f')](_0x49be36['model'],_0x49be36['query']);_0xd290a3['attributes']=_[_0x9ca9('0x3f')](_0x49be36[_0x9ca9('0x3b')],qs[_0x9ca9('0x41')](_0x18300c['query'][_0x9ca9('0x41')]));_0xd290a3[_0x9ca9('0x40')]=_0xd290a3[_0x9ca9('0x40')][_0x9ca9('0x42')]?_0xd290a3[_0x9ca9('0x40')]:_0x49be36['model'];if(_0x18300c[_0x9ca9('0x3c')]['includeAll']){_0xd290a3[_0x9ca9('0xaf')]=[{'all':!![]}];}_0xd290a3=_[_0x9ca9('0x98')]({},_0xd290a3,_0x18300c[_0x9ca9('0xb0')]);return db[_0x9ca9('0x37')][_0x9ca9('0x5f')](_0xd290a3)[_0x9ca9('0x28')](handleEntityNotFound(_0x12f85b,null))[_0x9ca9('0x28')](respondWithResult(_0x12f85b,null))['catch'](handleError(_0x12f85b,null));};exports[_0x9ca9('0xb1')]=function(_0x21a09a,_0x4a75d6){return db[_0x9ca9('0x37')][_0x9ca9('0xb1')](_0x21a09a[_0x9ca9('0x71')],{})[_0x9ca9('0x28')](respondWithResult(_0x4a75d6,0xc9))[_0x9ca9('0x35')](handleError(_0x4a75d6,null));};exports[_0x9ca9('0x27')]=function(_0x5986e9,_0x5b8027){if(_0x5986e9['body']['id']){delete _0x5986e9[_0x9ca9('0x71')]['id'];}return db['SmsInteraction']['find']({'where':{'id':_0x5986e9[_0x9ca9('0xae')]['id']}})[_0x9ca9('0x28')](handleEntityNotFound(_0x5b8027,null))[_0x9ca9('0x28')](saveUpdates(_0x5986e9[_0x9ca9('0x71')],null))[_0x9ca9('0x28')](respondWithResult(_0x5b8027,null))['catch'](handleError(_0x5b8027,null));};exports[_0x9ca9('0x29')]=function(_0x493a3f,_0x36bad6){return db[_0x9ca9('0x37')][_0x9ca9('0x5f')]({'where':{'id':_0x493a3f[_0x9ca9('0xae')]['id']}})[_0x9ca9('0x28')](handleEntityNotFound(_0x36bad6,null))[_0x9ca9('0x28')](removeEntity(_0x36bad6,null))['catch'](handleError(_0x36bad6,null));};exports[_0x9ca9('0xb2')]=function(_0x542ad4,_0x2770b6){return db[_0x9ca9('0x37')][_0x9ca9('0xb2')]()['then'](respondWithResult(_0x2770b6,null))[_0x9ca9('0x35')](handleError(_0x2770b6,null));};exports[_0x9ca9('0xb3')]=function(_0x3ccb64,_0x1ca6ce,_0x2785be){return db[_0x9ca9('0xb4')][_0x9ca9('0x5f')]({'where':{'id':_0x3ccb64[_0x9ca9('0xae')]['id']}})[_0x9ca9('0x28')](handleEntityNotFound(_0x1ca6ce,null))[_0x9ca9('0x28')](function(_0x1fc57b){if(_0x1fc57b){return _0x1fc57b[_0x9ca9('0xb3')](_0x3ccb64[_0x9ca9('0x71')][_0x9ca9('0xb5')],_[_0x9ca9('0xb6')](_0x3ccb64[_0x9ca9('0x71')],[_0x9ca9('0xb5'),'id'])||{});}})[_0x9ca9('0x28')](respondWithResult(_0x1ca6ce,null))[_0x9ca9('0x35')](handleError(_0x1ca6ce,null));};exports[_0x9ca9('0xb7')]=function(_0x4bf9ac,_0x4018d9,_0x154986){var _0x482be9={'raw':![],'where':{}};var _0x1f68d6={};var _0x4936cd={'count':0x0,'rows':[]};return db[_0x9ca9('0x37')][_0x9ca9('0xb8')]({'where':{'id':_0x4bf9ac[_0x9ca9('0xae')]['id']}})[_0x9ca9('0x28')](handleEntityNotFound(_0x4018d9,null))['then'](function(_0x52fe4d){if(_0x52fe4d){_0x1f68d6[_0x9ca9('0x3b')]=_['keys'](db[_0x9ca9('0xb4')][_0x9ca9('0x38')]);_0x1f68d6[_0x9ca9('0x3c')]=_[_0x9ca9('0x3d')](_0x4bf9ac['query']);_0x1f68d6[_0x9ca9('0x3e')]=_['intersection'](_0x1f68d6[_0x9ca9('0x3b')],_0x1f68d6[_0x9ca9('0x3c')]);_0x482be9[_0x9ca9('0x40')]=_[_0x9ca9('0x3f')](_0x1f68d6[_0x9ca9('0x3b')],qs[_0x9ca9('0x41')](_0x4bf9ac[_0x9ca9('0x3c')]['fields']));_0x482be9[_0x9ca9('0x40')]=_0x482be9[_0x9ca9('0x40')][_0x9ca9('0x42')]?_0x482be9[_0x9ca9('0x40')]:_0x1f68d6[_0x9ca9('0x3b')];if(!_0x4bf9ac['query'][_0x9ca9('0x43')](_0x9ca9('0xb9'))){_0x482be9[_0x9ca9('0x21')]=qs[_0x9ca9('0x21')](_0x4bf9ac['query']['limit']);_0x482be9[_0x9ca9('0x1f')]=qs['offset'](_0x4bf9ac['query'][_0x9ca9('0x1f')]);}_0x482be9[_0x9ca9('0x8b')]=qs[_0x9ca9('0x44')](_0x4bf9ac['query'][_0x9ca9('0x44')]);_0x482be9[_0x9ca9('0x45')]=qs['filters'](_[_0x9ca9('0x46')](_0x4bf9ac[_0x9ca9('0x3c')],_0x1f68d6[_0x9ca9('0x3e')]));_0x482be9[_0x9ca9('0x45')]['SmsInteractionId']=_0x52fe4d['id'];if(_0x4bf9ac['query'][_0x9ca9('0x7f')]){_0x482be9[_0x9ca9('0x45')]=_['merge'](_0x482be9[_0x9ca9('0x45')],{'$or':_[_0x9ca9('0x2f')](_0x482be9[_0x9ca9('0x40')],function(_0x3b50c9){var _0x3909c0={};_0x3909c0[_0x3b50c9]={'$like':'%'+_0x4bf9ac[_0x9ca9('0x3c')][_0x9ca9('0x7f')]+'%'};return _0x3909c0;})});}if(_0x4bf9ac[_0x9ca9('0x3c')][_0x9ca9('0x79')]){var _0x4b0a02=_0x4bf9ac[_0x9ca9('0x3c')][_0x9ca9('0x79')][_0x9ca9('0x32')](',');var _0x531181={};_0x531181[_0x4b0a02[0x0]]={'$gte':moment(_0x4b0a02[0x1])['format'](_0x9ca9('0xba'))};_0x482be9['where']=_[_0x9ca9('0x98')](_0x482be9[_0x9ca9('0x45')],_0x531181);}_0x482be9=_[_0x9ca9('0x98')]({},_0x482be9,_0x4bf9ac[_0x9ca9('0xb0')]);return db[_0x9ca9('0xb4')][_0x9ca9('0x22')]({'where':_0x482be9[_0x9ca9('0x45')]})[_0x9ca9('0x28')](function(_0x7345fa){_0x4936cd['count']=_0x7345fa;if(_0x4bf9ac['query'][_0x9ca9('0xbb')]){_0x482be9[_0x9ca9('0xaf')]=[{'all':!![]}];}return db['SmsMessage'][_0x9ca9('0xbc')](_0x482be9);})[_0x9ca9('0x28')](function(_0x53bc4f){_0x4936cd[_0x9ca9('0xbd')]=_0x53bc4f;return _0x4936cd;});}})[_0x9ca9('0x28')](respondWithFilteredResult(_0x4018d9,_0x482be9))[_0x9ca9('0x35')](handleError(_0x4018d9,null));};exports['addTags']=function(_0x5c85d5,_0x597821,_0x590654){return db['SmsInteraction'][_0x9ca9('0x5f')]({'where':{'id':_0x5c85d5[_0x9ca9('0xae')]['id']}})['then'](handleEntityNotFound(_0x597821,null))[_0x9ca9('0x28')](function(_0xfcd227){if(_0xfcd227){return _0xfcd227[_0x9ca9('0xbe')](_0x5c85d5['body'][_0x9ca9('0xb5')],_[_0x9ca9('0xb6')](_0x5c85d5[_0x9ca9('0x71')],[_0x9ca9('0xb5'),'id'])||{})[_0x9ca9('0xbf')](function(){return db[_0x9ca9('0x6b')][_0x9ca9('0xbc')]({'attributes':['id',_0x9ca9('0x2c'),_0x9ca9('0xc0')],'where':{'id':_0x5c85d5[_0x9ca9('0x71')]['ids']}});})[_0x9ca9('0x28')](function(_0x523095){socket[_0x9ca9('0xc1')](_0x9ca9('0xc2'),{'id':Number(_0x5c85d5[_0x9ca9('0xae')]['id']),'tags':_0x523095||[]});return{'id':Number(_0x5c85d5[_0x9ca9('0xae')]['id']),'tags':_0x523095||[]};});}})[_0x9ca9('0x28')](respondWithResult(_0x597821,null))[_0x9ca9('0x35')](handleError(_0x597821,null));};exports[_0x9ca9('0xc3')]=function(_0x1e2ce2,_0x4616b3,_0x57a300){return db['SmsInteraction'][_0x9ca9('0x5f')]({'where':{'id':_0x1e2ce2[_0x9ca9('0xae')]['id']}})[_0x9ca9('0x28')](handleEntityNotFound(_0x4616b3,null))[_0x9ca9('0x28')](function(_0x31e34d){if(_0x31e34d){return _0x31e34d[_0x9ca9('0xc3')](_0x1e2ce2[_0x9ca9('0x3c')][_0x9ca9('0xb5')]);}})[_0x9ca9('0x28')](respondWithStatusCode(_0x4616b3,null))[_0x9ca9('0x35')](handleError(_0x4616b3,null));};exports[_0x9ca9('0xc4')]=function(_0x25a7e3,_0x5d8098){var _0x5f452a=moment()[_0x9ca9('0xc5')]()[_0x9ca9('0x96')]();var _0x1ffc25=path[_0x9ca9('0xc6')](config['root'],_0x9ca9('0xc7'),_0x9ca9('0xc8'),'tmp');var _0x55f014=path[_0x9ca9('0xc6')](config[_0x9ca9('0xc9')],_0x9ca9('0xc7'),_0x9ca9('0xc8'),_0x9ca9('0xca'));var _0x1f8dd4=path[_0x9ca9('0xc6')](_0x1ffc25,_0x5f452a);var _0x29dbab=util[_0x9ca9('0xcb')](_0x9ca9('0xcc'),_0x25a7e3[_0x9ca9('0xae')]['id'],_0x5f452a);var _0x439456=path['join'](_0x1ffc25,_0x29dbab);var _0x252d78=[];_0x252d78[_0x9ca9('0x34')]({'model':db[_0x9ca9('0x6d')],'as':'User','attributes':['id',_0x9ca9('0x30')],'raw':!![]});_0x252d78[_0x9ca9('0x34')]({'model':db[_0x9ca9('0xcd')],'as':_0x9ca9('0xce'),'attributes':['id',_0x9ca9('0xcf'),_0x9ca9('0xd0')],'raw':!![]});var _0x35b4ff=[{'model':db['SmsMessage'],'as':_0x9ca9('0xd1'),'attributes':['id',_0x9ca9('0x71'),_0x9ca9('0x77'),_0x9ca9('0xd2'),'secret','read'],'include':_0x252d78}];_0x35b4ff[_0x9ca9('0x34')]({'model':db[_0x9ca9('0xd3')],'as':'Account','attributes':['id',_0x9ca9('0x2c')]});_0x35b4ff['push']({'model':db[_0x9ca9('0x6d')],'as':_0x9ca9('0xd4'),'attributes':['id',_0x9ca9('0x30')]});return db['SmsInteraction'][_0x9ca9('0x5f')]({'where':{'id':_0x25a7e3[_0x9ca9('0xae')]['id']},'include':_0x35b4ff})[_0x9ca9('0x28')](handleEntityNotFound(_0x5d8098,null))[_0x9ca9('0x28')](function(_0x161e76){if(_0x161e76){var _0x37dd49=_0x161e76[_0x9ca9('0xd5')]({'plain':!![]});fs[_0x9ca9('0xd6')](_0x1f8dd4);var _0x1f2883={'channel':_0x9ca9('0xd7'),'account':_0x37dd49['Account'][_0x9ca9('0x2c')],'agent':_0x37dd49[_0x9ca9('0xd4')]?_0x37dd49['Owner'][_0x9ca9('0x30')]:'N.A.','createdAt':moment(_0x37dd49[_0x9ca9('0x77')])[_0x9ca9('0xcb')](_0x9ca9('0xba'))['toString'](),'closedAt':_0x37dd49[_0x9ca9('0xd8')]?moment(_0x37dd49[_0x9ca9('0xd9')])[_0x9ca9('0xcb')](_0x9ca9('0xba'))[_0x9ca9('0x96')]():'','disposition':_0x37dd49[_0x9ca9('0xda')],'messages':_(_0x37dd49[_0x9ca9('0xd1')])[_0x9ca9('0x7f')]({'secret':![]})['map'](function(_0x2c4e66){return{'date':moment(_0x2c4e66[_0x9ca9('0x77')])[_0x9ca9('0xcb')](_0x9ca9('0xba'))[_0x9ca9('0x96')](),'sender':_0x2c4e66['direction']===_0x9ca9('0xdb')?_0x2c4e66[_0x9ca9('0x6d')]?_0x2c4e66[_0x9ca9('0x6d')][_0x9ca9('0x30')]:_0x9ca9('0xdc'):_0x2c4e66[_0x9ca9('0xce')][_0x9ca9('0xcf')]+(_0x2c4e66[_0x9ca9('0xce')][_0x9ca9('0xd0')]?'\x20'+_0x2c4e66[_0x9ca9('0xce')]['lastName']:''),'body':_0x2c4e66[_0x9ca9('0x71')],'direction':_0x2c4e66[_0x9ca9('0xd2')]===_0x9ca9('0xdb')?'A':'C','secret':_0x2c4e66[_0x9ca9('0xdd')],'read':_0x2c4e66[_0x9ca9('0x7d')]};})[_0x9ca9('0x65')]()};return ejs[_0x9ca9('0xde')](path[_0x9ca9('0xc6')](config[_0x9ca9('0xc9')],_0x9ca9('0xc7'),_0x9ca9('0xdf'),'downloadInteraction.ejs'),{'interaction':_0x1f2883})[_0x9ca9('0x28')](function(_0x377a10){var _0x160e5a=path[_0x9ca9('0xc6')](_0x1f8dd4,_0x9ca9('0xe0')+_0x37dd49['id']+'-'+_0x5f452a+_0x9ca9('0xe1'));var _0x3aa57b={'path':_0x160e5a,'channel':_0x9ca9('0xd7'),'interactionId':_0x37dd49['id']};return pdf['createPdfFromHTML'](_0x377a10,_0x3aa57b);})[_0x9ca9('0x28')](function(){return new BPromise(function(_0x3bea4a,_0x1ca694){zipdir(_0x1f8dd4,{'saveTo':_0x439456},function(_0x4f5d2f,_0xd47d97){if(_0x4f5d2f)return _0x1ca694(_0x4f5d2f);return _0x3bea4a(_0xd47d97);});})[_0x9ca9('0x28')](function(){return new BPromise(function(_0x495cf3,_0x3883de){rimraf(_0x1f8dd4,function(_0x382434){if(_0x382434)_0x3883de(_0x382434);return _0x495cf3();});});})[_0x9ca9('0x28')](function(){return _0x5d8098[_0x9ca9('0xc4')](_0x439456,_0x29dbab,function(_0x2c5176){if(_0x2c5176){console[_0x9ca9('0xe2')]('err',_0x2c5176);}else{fs[_0x9ca9('0xe3')](_0x439456);}});});});}else{return _0x5d8098[_0x9ca9('0x1b')](0xc8);}})[_0x9ca9('0x35')](handleError(_0x5d8098,null));};
\ No newline at end of file
index 9e5feca..7b2d496 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xcf66=['setDataValue','Users','map','findAll','unreadMessages','emit','catch','hasOwnProperty','events','../../mysqldb','SmsInteraction','SmsMessage','setMaxListeners','remove','getUsers'];(function(_0x313c96,_0x3cee6e){var _0x522f53=function(_0x8961e){while(--_0x8961e){_0x313c96['push'](_0x313c96['shift']());}};_0x522f53(++_0x3cee6e);}(_0xcf66,0x71));var _0x6cf6=function(_0x31a680,_0x4ffd36){_0x31a680=_0x31a680-0x0;var _0x1a025a=_0xcf66[_0x31a680];return _0x1a025a;};'use strict';var EventEmitter=require(_0x6cf6('0x0'));var SmsInteraction=require(_0x6cf6('0x1'))['db'][_0x6cf6('0x2')];var SmsMessage=require('../../mysqldb')['db'][_0x6cf6('0x3')];var SmsInteractionEvents=new EventEmitter();SmsInteractionEvents[_0x6cf6('0x4')](0x0);var events={'afterCreate':'save','afterUpdate':'update','afterDestroy':_0x6cf6('0x5')};function emitEvent(_0x45d0d8){return function(_0x57f22f,_0x39f1d6,_0x1fbedd){_0x57f22f[_0x6cf6('0x6')]({'attributes':['id'],'raw':!![]})['then'](function(_0x94c6a9){_0x57f22f[_0x6cf6('0x7')](_0x6cf6('0x8'),_0x94c6a9[_0x6cf6('0x9')](function(_0x175b18){return{'id':_0x175b18['id']};}));return SmsMessage[_0x6cf6('0xa')]({'where':{'SmsInteractionId':_0x57f22f['id'],'direction':'in','read':![]},'raw':!![]});})['then'](function(_0x58378c){_0x57f22f['setDataValue'](_0x6cf6('0xb'),_0x58378c['length']);SmsInteractionEvents[_0x6cf6('0xc')](_0x45d0d8+':'+_0x57f22f['id'],_0x57f22f);SmsInteractionEvents[_0x6cf6('0xc')](_0x45d0d8,_0x57f22f);_0x1fbedd(null);})[_0x6cf6('0xd')](_0x1fbedd(null));};}for(var e in events){if(events[_0x6cf6('0xe')](e)){var event=events[e];SmsInteraction['hook'](e,emitEvent(event));}}module['exports']=SmsInteractionEvents;
\ No newline at end of file
+var _0xab40=['remove','then','setDataValue','Users','unreadMessages','length','emit','catch','exports','events','../../mysqldb','setMaxListeners','save','update'];(function(_0x495a36,_0x5c3e57){var _0x37873a=function(_0x4dc49e){while(--_0x4dc49e){_0x495a36['push'](_0x495a36['shift']());}};_0x37873a(++_0x5c3e57);}(_0xab40,0xcd));var _0x0ab4=function(_0x625588,_0xcd1ad0){_0x625588=_0x625588-0x0;var _0x598619=_0xab40[_0x625588];return _0x598619;};'use strict';var EventEmitter=require(_0x0ab4('0x0'));var SmsInteraction=require(_0x0ab4('0x1'))['db']['SmsInteraction'];var SmsMessage=require('../../mysqldb')['db']['SmsMessage'];var SmsInteractionEvents=new EventEmitter();SmsInteractionEvents[_0x0ab4('0x2')](0x0);var events={'afterCreate':_0x0ab4('0x3'),'afterUpdate':_0x0ab4('0x4'),'afterDestroy':_0x0ab4('0x5')};function emitEvent(_0x14634a){return function(_0x57fac1,_0x5f01aa,_0x28b17a){_0x57fac1['getUsers']({'attributes':['id'],'raw':!![]})[_0x0ab4('0x6')](function(_0x46d16a){_0x57fac1[_0x0ab4('0x7')](_0x0ab4('0x8'),_0x46d16a['map'](function(_0x55263d){return{'id':_0x55263d['id']};}));return SmsMessage['findAll']({'where':{'SmsInteractionId':_0x57fac1['id'],'direction':'in','read':![]},'raw':!![]});})[_0x0ab4('0x6')](function(_0x30e726){_0x57fac1[_0x0ab4('0x7')](_0x0ab4('0x9'),_0x30e726[_0x0ab4('0xa')]);SmsInteractionEvents[_0x0ab4('0xb')](_0x14634a+':'+_0x57fac1['id'],_0x57fac1);SmsInteractionEvents[_0x0ab4('0xb')](_0x14634a,_0x57fac1);_0x28b17a(null);})[_0x0ab4('0xc')](_0x28b17a(null));};}for(var e in events){if(events['hasOwnProperty'](e)){var event=events[e];SmsInteraction['hook'](e,emitEvent(event));}}module[_0x0ab4('0xd')]=SmsInteractionEvents;
\ No newline at end of file
index 28e75ab..1c53568 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xdea9=['closedAt','format','lodash','util','../../config/logger','api','moment','bluebird','request-promise','./smsInteraction.attributes','define','SmsInteraction','sms_interactions','changed'];(function(_0xbf8ec1,_0x9169c8){var _0xc84567=function(_0x509094){while(--_0x509094){_0xbf8ec1['push'](_0xbf8ec1['shift']());}};_0xc84567(++_0x9169c8);}(_0xdea9,0x80));var _0x9dea=function(_0x2d7f0e,_0x3e6fbd){_0x2d7f0e=_0x2d7f0e-0x0;var _0x110b07=_0xdea9[_0x2d7f0e];return _0x110b07;};'use strict';var _=require(_0x9dea('0x0'));var util=require(_0x9dea('0x1'));var logger=require(_0x9dea('0x2'))(_0x9dea('0x3'));var moment=require(_0x9dea('0x4'));var BPromise=require(_0x9dea('0x5'));var rp=require(_0x9dea('0x6'));var fs=require('fs');var path=require('path');var rimraf=require('rimraf');var config=require('../../config/environment');var attributes=require(_0x9dea('0x7'));module['exports']=function(_0x27a4a2,_0x3c72cf){return _0x27a4a2[_0x9dea('0x8')](_0x9dea('0x9'),attributes,{'tableName':_0x9dea('0xa'),'paranoid':![],'indexes':[],'timestamps':!![],'hooks':{'beforeUpdate':function(_0xd39989,_0x3b89be,_0x5e68f8){if(_0xd39989[_0x9dea('0xb')]('closed')){_0xd39989[_0x9dea('0xc')]=moment()[_0x9dea('0xd')]('YYYY-MM-DD\x20HH:mm:ss');}_0x5e68f8(null,_0xd39989);}}});};
\ No newline at end of file
+var _0xd8ce=['util','../../config/logger','moment','request-promise','path','rimraf','../../config/environment','./smsInteraction.attributes','define','SmsInteraction','sms_interactions','changed','closedAt','YYYY-MM-DD\x20HH:mm:ss','lodash'];(function(_0x5608a3,_0x5b33c5){var _0x1ed50a=function(_0x959171){while(--_0x959171){_0x5608a3['push'](_0x5608a3['shift']());}};_0x1ed50a(++_0x5b33c5);}(_0xd8ce,0x1ee));var _0xed8c=function(_0x5ae8f7,_0x330d91){_0x5ae8f7=_0x5ae8f7-0x0;var _0x54c636=_0xd8ce[_0x5ae8f7];return _0x54c636;};'use strict';var _=require(_0xed8c('0x0'));var util=require(_0xed8c('0x1'));var logger=require(_0xed8c('0x2'))('api');var moment=require(_0xed8c('0x3'));var BPromise=require('bluebird');var rp=require(_0xed8c('0x4'));var fs=require('fs');var path=require(_0xed8c('0x5'));var rimraf=require(_0xed8c('0x6'));var config=require(_0xed8c('0x7'));var attributes=require(_0xed8c('0x8'));module['exports']=function(_0x459301,_0x1f900d){return _0x459301[_0xed8c('0x9')](_0xed8c('0xa'),attributes,{'tableName':_0xed8c('0xb'),'paranoid':![],'indexes':[],'timestamps':!![],'hooks':{'beforeUpdate':function(_0x116775,_0x58af18,_0x2120e4){if(_0x116775[_0xed8c('0xc')]('closed')){_0x116775[_0xed8c('0xd')]=moment()['format'](_0xed8c('0xe'));}_0x2120e4(null,_0x116775);}}});};
\ No newline at end of file
index ec688fe..c03b1e7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf2bd=['stringify','error','code','message','result','SmsInteraction','update','options','raw','attributes','limit','UpdateSmsInteraction','catch','find','addTags','body','ids','spread','AddTags','lodash','util','moment','bluebird','randomstring','ioredis','../../config/utils','../../config/logger','rpc','jayson/promise','defaults','redis','socket.io-emitter','register','request','then','info','SmsInteraction,\x20%s,\x20%s','request\x20sent','debug','SmsInteraction,\x20%s,\x20%s,\x20%s'];(function(_0x400452,_0x3ebc19){var _0x35f58b=function(_0x2a2da7){while(--_0x2a2da7){_0x400452['push'](_0x400452['shift']());}};_0x35f58b(++_0x3ebc19);}(_0xf2bd,0x1f3));var _0xdf2b=function(_0x19e35c,_0x29cd1e){_0x19e35c=_0x19e35c-0x0;var _0x3e1fe8=_0xf2bd[_0x19e35c];return _0x3e1fe8;};'use strict';var _=require(_0xdf2b('0x0'));var util=require(_0xdf2b('0x1'));var moment=require(_0xdf2b('0x2'));var BPromise=require(_0xdf2b('0x3'));var rs=require(_0xdf2b('0x4'));var fs=require('fs');var Redis=require(_0xdf2b('0x5'));var db=require('../../mysqldb')['db'];var utils=require(_0xdf2b('0x6'));var logger=require(_0xdf2b('0x7'))(_0xdf2b('0x8'));var config=require('../../config/environment');var jayson=require(_0xdf2b('0x9'));var client=jayson['client']['http']({'port':0x232a});config['redis']=_[_0xdf2b('0xa')](config[_0xdf2b('0xb')],{'host':'localhost','port':0x18eb});var socket=require(_0xdf2b('0xc'))(new Redis(config[_0xdf2b('0xb')]));require('./smsInteraction.socket')[_0xdf2b('0xd')](socket);function respondWithRpcPromise(_0x31e179,_0x1b8b26,_0x42f598){return new BPromise(function(_0x568bb9,_0x1936a3){return client[_0xdf2b('0xe')](_0x31e179,_0x42f598)[_0xdf2b('0xf')](function(_0x37b39a){logger[_0xdf2b('0x10')](_0xdf2b('0x11'),_0x1b8b26,_0xdf2b('0x12'));logger[_0xdf2b('0x13')](_0xdf2b('0x14'),_0x1b8b26,_0xdf2b('0x12'),JSON[_0xdf2b('0x15')](_0x37b39a));if(_0x37b39a[_0xdf2b('0x16')]){if(_0x37b39a[_0xdf2b('0x16')][_0xdf2b('0x17')]===0x1f4){logger[_0xdf2b('0x16')](_0xdf2b('0x11'),_0x1b8b26,_0x37b39a['error'][_0xdf2b('0x18')]);return _0x1936a3(_0x37b39a[_0xdf2b('0x16')][_0xdf2b('0x18')]);}logger[_0xdf2b('0x16')](_0xdf2b('0x11'),_0x1b8b26,_0x37b39a['error'][_0xdf2b('0x18')]);return _0x568bb9(_0x37b39a[_0xdf2b('0x16')][_0xdf2b('0x18')]);}else{logger[_0xdf2b('0x10')]('SmsInteraction,\x20%s,\x20%s',_0x1b8b26,_0xdf2b('0x12'));_0x568bb9(_0x37b39a[_0xdf2b('0x19')][_0xdf2b('0x18')]);}})['catch'](function(_0x14de5e){logger[_0xdf2b('0x16')](_0xdf2b('0x11'),_0x1b8b26,_0x14de5e);_0x1936a3(_0x14de5e);});});}exports['UpdateSmsInteraction']=function(_0x1e58ce){var _0x34330c=this;return new Promise(function(_0x5da171,_0x304f58){return db[_0xdf2b('0x1a')][_0xdf2b('0x1b')](_0x1e58ce['body'],{'raw':_0x1e58ce[_0xdf2b('0x1c')]?_0x1e58ce[_0xdf2b('0x1c')][_0xdf2b('0x1d')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x1e58ce[_0xdf2b('0x1c')]?_0x1e58ce[_0xdf2b('0x1c')]['where']||null:null,'attributes':_0x1e58ce[_0xdf2b('0x1c')]?_0x1e58ce[_0xdf2b('0x1c')][_0xdf2b('0x1e')]||null:null,'limit':_0x1e58ce[_0xdf2b('0x1c')]?_0x1e58ce[_0xdf2b('0x1c')][_0xdf2b('0x1f')]||null:null})[_0xdf2b('0xf')](function(_0x2bcd71){logger[_0xdf2b('0x10')](_0xdf2b('0x20'),_0x1e58ce);logger[_0xdf2b('0x13')]('UpdateSmsInteraction',_0x1e58ce,JSON[_0xdf2b('0x15')](_0x2bcd71));_0x5da171(_0x2bcd71);})[_0xdf2b('0x21')](function(_0x2fc4c9){logger['error'](_0xdf2b('0x20'),_0x2fc4c9['message'],_0x1e58ce);_0x304f58(_0x34330c[_0xdf2b('0x16')](0x1f4,_0x2fc4c9[_0xdf2b('0x18')]));});});};exports['AddTagsToSmsInteraction']=function(_0x30795f){return new Promise(function(_0x51dff6,_0x3a5e62){return db[_0xdf2b('0x1a')][_0xdf2b('0x22')]({'where':_0x30795f[_0xdf2b('0x1c')]?_0x30795f[_0xdf2b('0x1c')]['where']||null:null})[_0xdf2b('0xf')](function(_0x41c272){if(_0x41c272){return _0x41c272[_0xdf2b('0x23')](_0x30795f[_0xdf2b('0x24')]['ids'],_['omit'](_0x30795f[_0xdf2b('0x24')],[_0xdf2b('0x25'),'id'])||{});}})[_0xdf2b('0x26')](function(_0x2ad56b){logger[_0xdf2b('0x10')](_0xdf2b('0x27'),_0x30795f);logger[_0xdf2b('0x13')](_0xdf2b('0x27'),_0x30795f,JSON[_0xdf2b('0x15')](_0x2ad56b));_0x51dff6(_0x2ad56b);})[_0xdf2b('0x21')](function(_0xdb2e37){logger['error'](_0xdf2b('0x27'),_0xdb2e37[_0xdf2b('0x18')],_0x30795f);_0x3a5e62(_this[_0xdf2b('0x16')](0x1f4,_0xdb2e37['message']));});});};
\ No newline at end of file
+var _0x8626=['omit','spread','AddTags','lodash','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','client','http','redis','defaults','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','UpdateSmsInteraction','SmsInteraction','update','body','options','raw','attributes','catch','AddTagsToSmsInteraction','ids'];(function(_0x2132a9,_0xcd5273){var _0x2211c8=function(_0x1e9c37){while(--_0x1e9c37){_0x2132a9['push'](_0x2132a9['shift']());}};_0x2211c8(++_0xcd5273);}(_0x8626,0x17d));var _0x6862=function(_0xf1038e,_0x595e31){_0xf1038e=_0xf1038e-0x0;var _0xee55ba=_0x8626[_0xf1038e];return _0xee55ba;};'use strict';var _=require(_0x6862('0x0'));var util=require('util');var moment=require(_0x6862('0x1'));var BPromise=require(_0x6862('0x2'));var rs=require(_0x6862('0x3'));var fs=require('fs');var Redis=require(_0x6862('0x4'));var db=require(_0x6862('0x5'))['db'];var utils=require(_0x6862('0x6'));var logger=require(_0x6862('0x7'))(_0x6862('0x8'));var config=require('../../config/environment');var jayson=require('jayson/promise');var client=jayson[_0x6862('0x9')][_0x6862('0xa')]({'port':0x232a});config[_0x6862('0xb')]=_[_0x6862('0xc')](config['redis'],{'host':_0x6862('0xd'),'port':0x18eb});var socket=require(_0x6862('0xe'))(new Redis(config[_0x6862('0xb')]));require(_0x6862('0xf'))[_0x6862('0x10')](socket);function respondWithRpcPromise(_0x7597e,_0x36e278,_0x550183){return new BPromise(function(_0x4f4d08,_0xa3a9da){return client[_0x6862('0x11')](_0x7597e,_0x550183)[_0x6862('0x12')](function(_0x2adeed){logger[_0x6862('0x13')](_0x6862('0x14'),_0x36e278,_0x6862('0x15'));logger[_0x6862('0x16')](_0x6862('0x17'),_0x36e278,_0x6862('0x15'),JSON[_0x6862('0x18')](_0x2adeed));if(_0x2adeed[_0x6862('0x19')]){if(_0x2adeed['error'][_0x6862('0x1a')]===0x1f4){logger['error']('SmsInteraction,\x20%s,\x20%s',_0x36e278,_0x2adeed[_0x6862('0x19')][_0x6862('0x1b')]);return _0xa3a9da(_0x2adeed[_0x6862('0x19')][_0x6862('0x1b')]);}logger[_0x6862('0x19')](_0x6862('0x14'),_0x36e278,_0x2adeed[_0x6862('0x19')][_0x6862('0x1b')]);return _0x4f4d08(_0x2adeed['error'][_0x6862('0x1b')]);}else{logger[_0x6862('0x13')]('SmsInteraction,\x20%s,\x20%s',_0x36e278,'request\x20sent');_0x4f4d08(_0x2adeed[_0x6862('0x1c')]['message']);}})['catch'](function(_0x3e4ffc){logger['error'](_0x6862('0x14'),_0x36e278,_0x3e4ffc);_0xa3a9da(_0x3e4ffc);});});}exports[_0x6862('0x1d')]=function(_0x3ddc16){var _0x1bbe3f=this;return new Promise(function(_0x4a53bf,_0x438ff3){return db[_0x6862('0x1e')][_0x6862('0x1f')](_0x3ddc16[_0x6862('0x20')],{'raw':_0x3ddc16[_0x6862('0x21')]?_0x3ddc16[_0x6862('0x21')][_0x6862('0x22')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x3ddc16['options']?_0x3ddc16[_0x6862('0x21')]['where']||null:null,'attributes':_0x3ddc16[_0x6862('0x21')]?_0x3ddc16['options'][_0x6862('0x23')]||null:null,'limit':_0x3ddc16['options']?_0x3ddc16[_0x6862('0x21')]['limit']||null:null})['then'](function(_0x5da0f3){logger['info'](_0x6862('0x1d'),_0x3ddc16);logger['debug'](_0x6862('0x1d'),_0x3ddc16,JSON[_0x6862('0x18')](_0x5da0f3));_0x4a53bf(_0x5da0f3);})[_0x6862('0x24')](function(_0x371b80){logger[_0x6862('0x19')](_0x6862('0x1d'),_0x371b80[_0x6862('0x1b')],_0x3ddc16);_0x438ff3(_0x1bbe3f[_0x6862('0x19')](0x1f4,_0x371b80[_0x6862('0x1b')]));});});};exports[_0x6862('0x25')]=function(_0x25de5d){return new Promise(function(_0x3f945a,_0x5ace25){return db[_0x6862('0x1e')]['find']({'where':_0x25de5d['options']?_0x25de5d[_0x6862('0x21')]['where']||null:null})['then'](function(_0x24f8f7){if(_0x24f8f7){return _0x24f8f7['addTags'](_0x25de5d[_0x6862('0x20')][_0x6862('0x26')],_[_0x6862('0x27')](_0x25de5d['body'],[_0x6862('0x26'),'id'])||{});}})[_0x6862('0x28')](function(_0x4b20d2){logger[_0x6862('0x13')](_0x6862('0x29'),_0x25de5d);logger[_0x6862('0x16')](_0x6862('0x29'),_0x25de5d,JSON[_0x6862('0x18')](_0x4b20d2));_0x3f945a(_0x4b20d2);})[_0x6862('0x24')](function(_0x46d51b){logger['error'](_0x6862('0x29'),_0x46d51b[_0x6862('0x1b')],_0x25de5d);_0x5ace25(_this[_0x6862('0x19')](0x1f4,_0x46d51b[_0x6862('0x1b')]));});});};
\ No newline at end of file
index 9981943..4d31c8c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd43b=['save','remove','update','register','smsInteraction:'];(function(_0xe27675,_0x3b2d0b){var _0x3f3d3d=function(_0x103473){while(--_0x103473){_0xe27675['push'](_0xe27675['shift']());}};_0x3f3d3d(++_0x3b2d0b);}(_0xd43b,0x122));var _0xbd43=function(_0x57aaf4,_0x4bea1a){_0x57aaf4=_0x57aaf4-0x0;var _0x4a06d8=_0xd43b[_0x57aaf4];return _0x4a06d8;};'use strict';var SmsInteractionEvents=require('./smsInteraction.events');var events=[_0xbd43('0x0'),_0xbd43('0x1'),_0xbd43('0x2')];function createListener(_0x126a1a,_0x4edf57){return function(_0x24f533){_0x4edf57['emit'](_0x126a1a,_0x24f533);};}function removeListener(_0x175c09,_0x503a45){return function(){SmsInteractionEvents['removeListener'](_0x175c09,_0x503a45);};}exports[_0xbd43('0x3')]=function(_0x59e353){for(var _0x6be392=0x0,_0x2fb700=events['length'];_0x6be392<_0x2fb700;_0x6be392++){var _0x15f314=events[_0x6be392];var _0x86faea=createListener(_0xbd43('0x4')+_0x15f314,_0x59e353);SmsInteractionEvents['on'](_0x15f314,_0x86faea);}};
\ No newline at end of file
+var _0xdf2d=['length','./smsInteraction.events','save','remove','update','emit','removeListener','register'];(function(_0x7025b0,_0x9533f1){var _0x6e444c=function(_0x258fe9){while(--_0x258fe9){_0x7025b0['push'](_0x7025b0['shift']());}};_0x6e444c(++_0x9533f1);}(_0xdf2d,0xe9));var _0xddf2=function(_0x20ea1f,_0x1a816a){_0x20ea1f=_0x20ea1f-0x0;var _0x8794b5=_0xdf2d[_0x20ea1f];return _0x8794b5;};'use strict';var SmsInteractionEvents=require(_0xddf2('0x0'));var events=[_0xddf2('0x1'),_0xddf2('0x2'),_0xddf2('0x3')];function createListener(_0x6604c4,_0xc39472){return function(_0x2aabc7){_0xc39472[_0xddf2('0x4')](_0x6604c4,_0x2aabc7);};}function removeListener(_0x59b1ef,_0x348849){return function(){SmsInteractionEvents[_0xddf2('0x5')](_0x59b1ef,_0x348849);};}exports[_0xddf2('0x6')]=function(_0x3bf7b8){for(var _0x130bc5=0x0,_0x25e25d=events[_0xddf2('0x7')];_0x130bc5<_0x25e25d;_0x130bc5++){var _0x403c76=events[_0x130bc5];var _0x36b773=createListener('smsInteraction:'+_0x403c76,_0x3bf7b8);SmsInteractionEvents['on'](_0x403c76,_0x36b773);}};
\ No newline at end of file
index 0e32e2f..a485290 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd456=['./smsMessage.controller','get','isAuthenticated','index','describe','post','smsmessage:create','create','/:id/status','status','put','update','/:id/accept','accept','/:id/reject','reject','delete','/:id','destroy','exports','util','path','express','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment'];(function(_0x4628c6,_0x212c5e){var _0x181ddc=function(_0x36280a){while(--_0x36280a){_0x4628c6['push'](_0x4628c6['shift']());}};_0x181ddc(++_0x212c5e);}(_0xd456,0x107));var _0x6d45=function(_0x3061fd,_0x57e16f){_0x3061fd=_0x3061fd-0x0;var _0x312133=_0xd456[_0x3061fd];return _0x312133;};'use strict';var multer=require('multer');var util=require(_0x6d45('0x0'));var path=require(_0x6d45('0x1'));var timeout=require('connect-timeout');var express=require(_0x6d45('0x2'));var router=express['Router']();var fs_extra=require(_0x6d45('0x3'));var auth=require(_0x6d45('0x4'));var interaction=require(_0x6d45('0x5'));var config=require(_0x6d45('0x6'));var controller=require(_0x6d45('0x7'));router[_0x6d45('0x8')]('/',auth[_0x6d45('0x9')](),controller[_0x6d45('0xa')]);router[_0x6d45('0x8')]('/describe',auth[_0x6d45('0x9')](),controller[_0x6d45('0xb')]);router['get']('/:id',auth[_0x6d45('0x9')](),controller['show']);router[_0x6d45('0xc')]('/',auth[_0x6d45('0x9')](),interaction['tracked']('sms',_0x6d45('0xd')),controller[_0x6d45('0xe')]);router['post'](_0x6d45('0xf'),controller[_0x6d45('0x10')]);router[_0x6d45('0x11')]('/:id',auth[_0x6d45('0x9')](),controller[_0x6d45('0x12')]);router[_0x6d45('0x11')](_0x6d45('0x13'),auth[_0x6d45('0x9')](),controller[_0x6d45('0x14')]);router[_0x6d45('0x11')](_0x6d45('0x15'),auth[_0x6d45('0x9')](),controller[_0x6d45('0x16')]);router[_0x6d45('0x17')](_0x6d45('0x18'),auth[_0x6d45('0x9')](),controller[_0x6d45('0x19')]);module[_0x6d45('0x1a')]=router;
\ No newline at end of file
+var _0x2d87=['fs-extra','../../components/auth/service','../../config/environment','./smsMessage.controller','get','isAuthenticated','index','/describe','describe','post','tracked','sms','smsmessage:create','create','/:id/status','status','put','update','/:id/accept','reject','delete','/:id','destroy','exports','multer','util','Router'];(function(_0x8f7cb6,_0xf929c8){var _0xf4d3a1=function(_0x3e3d31){while(--_0x3e3d31){_0x8f7cb6['push'](_0x8f7cb6['shift']());}};_0xf4d3a1(++_0xf929c8);}(_0x2d87,0x84));var _0x72d8=function(_0x5b561d,_0x422b7c){_0x5b561d=_0x5b561d-0x0;var _0x431060=_0x2d87[_0x5b561d];return _0x431060;};'use strict';var multer=require(_0x72d8('0x0'));var util=require(_0x72d8('0x1'));var path=require('path');var timeout=require('connect-timeout');var express=require('express');var router=express[_0x72d8('0x2')]();var fs_extra=require(_0x72d8('0x3'));var auth=require(_0x72d8('0x4'));var interaction=require('../../components/interaction/service');var config=require(_0x72d8('0x5'));var controller=require(_0x72d8('0x6'));router[_0x72d8('0x7')]('/',auth[_0x72d8('0x8')](),controller[_0x72d8('0x9')]);router['get'](_0x72d8('0xa'),auth[_0x72d8('0x8')](),controller[_0x72d8('0xb')]);router[_0x72d8('0x7')]('/:id',auth[_0x72d8('0x8')](),controller['show']);router[_0x72d8('0xc')]('/',auth[_0x72d8('0x8')](),interaction[_0x72d8('0xd')](_0x72d8('0xe'),_0x72d8('0xf')),controller[_0x72d8('0x10')]);router['post'](_0x72d8('0x11'),controller[_0x72d8('0x12')]);router[_0x72d8('0x13')]('/:id',auth[_0x72d8('0x8')](),controller[_0x72d8('0x14')]);router['put'](_0x72d8('0x15'),auth[_0x72d8('0x8')](),controller['accept']);router['put']('/:id/reject',auth['isAuthenticated'](),controller[_0x72d8('0x16')]);router[_0x72d8('0x17')](_0x72d8('0x18'),auth[_0x72d8('0x8')](),controller[_0x72d8('0x19')]);module[_0x72d8('0x1a')]=router;
\ No newline at end of file
index 460fa6d..be80bdb 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xbf1e=['out','STRING','DATE','TEXT','BOOLEAN','ENUM'];(function(_0x4e9128,_0x203a92){var _0x28f1b1=function(_0xb4b155){while(--_0xb4b155){_0x4e9128['push'](_0x4e9128['shift']());}};_0x28f1b1(++_0x203a92);}(_0xbf1e,0x75));var _0xebf1=function(_0x435583,_0x19a12d){_0x435583=_0x435583-0x0;var _0x2f31=_0xbf1e[_0x435583];return _0x2f31;};'use strict';var Sequelize=require('sequelize');module['exports']={'body':{'type':Sequelize[_0xebf1('0x0')]('medium'),'allowNull':![]},'read':{'type':Sequelize[_0xebf1('0x1')],'defaultValue':![]},'direction':{'type':Sequelize[_0xebf1('0x2')]('in',_0xebf1('0x3')),'defaultValue':'out','allowNull':![]},'messageId':{'type':Sequelize[_0xebf1('0x4')](0xbe)},'phone':{'type':Sequelize[_0xebf1('0x4')]},'readAt':{'type':Sequelize[_0xebf1('0x5')]},'secret':{'type':Sequelize[_0xebf1('0x1')],'defaultValue':![]},'providerName':{'type':Sequelize[_0xebf1('0x4')]},'providerResponse':{'type':Sequelize[_0xebf1('0x0')]}};
\ No newline at end of file
+var _0x808f=['BOOLEAN','ENUM','out','STRING','exports','TEXT'];(function(_0x1575a6,_0x3604bd){var _0x453352=function(_0x39c52b){while(--_0x39c52b){_0x1575a6['push'](_0x1575a6['shift']());}};_0x453352(++_0x3604bd);}(_0x808f,0x1ea));var _0xf808=function(_0x3ecbe3,_0x85040f){_0x3ecbe3=_0x3ecbe3-0x0;var _0x17435f=_0x808f[_0x3ecbe3];return _0x17435f;};'use strict';var Sequelize=require('sequelize');module[_0xf808('0x0')]={'body':{'type':Sequelize[_0xf808('0x1')]('medium'),'allowNull':![]},'read':{'type':Sequelize[_0xf808('0x2')],'defaultValue':![]},'direction':{'type':Sequelize[_0xf808('0x3')]('in','out'),'defaultValue':_0xf808('0x4'),'allowNull':![]},'messageId':{'type':Sequelize[_0xf808('0x5')](0xbe)},'phone':{'type':Sequelize['STRING']},'readAt':{'type':Sequelize['DATE']},'secret':{'type':Sequelize[_0xf808('0x2')],'defaultValue':![]},'providerName':{'type':Sequelize[_0xf808('0x5')]},'providerResponse':{'type':Sequelize[_0xf808('0x1')]}};
\ No newline at end of file
index f88db67..040c49c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x184d=['event','EventManager','acceptmessage','../../config/logger','sms','[SMSMESSAGE:REJECT]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s','RejectMessage','rejectMessage','ContactId','QueryTypes','interface','motionChannel','rejectmessage','received\x20delivery\x20report\x20from','MessageSid','plivo','MessageUUID','messageId','indexOf','sent','delivered','Status','SmsAccount,\x20%s,\x20%s,\x20%s','plivio','inspect','infobip','results','groupName','DELIVERED','rimraf','bluebird','mustache','util','path','sox','to-csv','squel','crypto','desk.js','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/utils','../../config/environment','../../mysqldb','defaults','redis','localhost','socket.io-emitter','./smsMessage.socket','jayson/promise','client','http','then','info','SmsMessage,\x20%s,\x20%s','request\x20sent','debug','SmsMessage,\x20%s,\x20%s,\x20%s','stringify','error','code','message','sendStatus','status','end','json','offset','limit','undefined','count','set','Content-Range','apply','reject','save','update','stack','name','send','index','map','SmsMessage','type','key','query','keys','filters','model','attributes','intersection','fields','length','hasOwnProperty','sort','where','pick','merge','VIRTUAL','filter','includeAll','include','rows','show','params','rawAttributes','options','find','catch','create','body','destroy','describe','sms-interactions','accept','read','format','YYYY-MM-DD\x20HH:mm:ss','UserId','user','agent','SmsInteraction','SmsInteractionId','read1stAt','interaction','get','[SMSMESSAGE:ACCEPT]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s','role','null','AcceptMessage','acceptMessage','SELECT\x20*\x20FROM\x20cm_contacts\x20WHERE\x20id\x20=\x20','sequelize','Sequelize','contact','User','fullname','email','manual','SIP/%s','channel'];(function(_0x5638ec,_0x492e0c){var _0x508673=function(_0x5cb6fa){while(--_0x5cb6fa){_0x5638ec['push'](_0x5638ec['shift']());}};_0x508673(++_0x492e0c);}(_0x184d,0x1d0));var _0xd184=function(_0x599f41,_0x4db732){_0x599f41=_0x599f41-0x0;var _0x2e4d58=_0x184d[_0x599f41];return _0x2e4d58;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0xd184('0x0'));var zipdir=require('zip-dir');var jsonpatch=require('fast-json-patch');var rp=require('request-promise');var moment=require('moment');var BPromise=require(_0xd184('0x1'));var Mustache=require(_0xd184('0x2'));var util=require(_0xd184('0x3'));var path=require(_0xd184('0x4'));var sox=require(_0xd184('0x5'));var csv=require(_0xd184('0x6'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require('fs-extra');var _=require('lodash');var squel=require(_0xd184('0x7'));var crypto=require(_0xd184('0x8'));var jsforce=require('jsforce');var deskjs=require(_0xd184('0x9'));var toCsv=require('to-csv');var querystring=require('querystring');var Papa=require(_0xd184('0xa'));var Redis=require(_0xd184('0xb'));var authService=require(_0xd184('0xc'));var qs=require(_0xd184('0xd'));var as=require(_0xd184('0xe'));var hardwareService=require(_0xd184('0xf'));var logger=require('../../config/logger')(_0xd184('0x10'));var utils=require(_0xd184('0x11'));var config=require(_0xd184('0x12'));var licenseUtil=require('../../config/license/util');var db=require(_0xd184('0x13'))['db'];config['redis']=_[_0xd184('0x14')](config[_0xd184('0x15')],{'host':_0xd184('0x16'),'port':0x18eb});var socket=require(_0xd184('0x17'))(new Redis(config[_0xd184('0x15')]));require(_0xd184('0x18'))['register'](socket);var jayson=require(_0xd184('0x19'));var client=jayson[_0xd184('0x1a')][_0xd184('0x1b')]({'port':0x232c});var client9002=jayson[_0xd184('0x1a')][_0xd184('0x1b')]({'port':0x232a});function respondWithRpcPromise(_0x316f4a,_0x3fe670,_0x296db8,_0x28447b){return new BPromise(function(_0xf68691,_0x58560a){var _0x48203f=_0x28447b||client;return _0x48203f['request'](_0x316f4a,_0x296db8)[_0xd184('0x1c')](function(_0x43cd89){logger[_0xd184('0x1d')](_0xd184('0x1e'),_0x3fe670,_0xd184('0x1f'));logger[_0xd184('0x20')](_0xd184('0x21'),_0x3fe670,'request\x20sent',JSON[_0xd184('0x22')](_0x43cd89));if(_0x43cd89[_0xd184('0x23')]){if(_0x43cd89[_0xd184('0x23')][_0xd184('0x24')]===0x1f4){logger[_0xd184('0x23')](_0xd184('0x1e'),_0x3fe670,_0x43cd89['error'][_0xd184('0x25')]);return _0x58560a(_0x43cd89['error'][_0xd184('0x25')]);}logger[_0xd184('0x23')](_0xd184('0x1e'),_0x3fe670,_0x43cd89[_0xd184('0x23')][_0xd184('0x25')]);return _0xf68691(_0x43cd89[_0xd184('0x23')]['message']);}else{logger['info'](_0xd184('0x1e'),_0x3fe670,'request\x20sent');_0xf68691(_0x43cd89['result'][_0xd184('0x25')]);}})['catch'](function(_0x5ae859){logger[_0xd184('0x23')](_0xd184('0x1e'),_0x3fe670,_0x5ae859);_0x58560a(_0x5ae859);});});}function respondWithStatusCode(_0x4decc0,_0x74a77a){_0x74a77a=_0x74a77a||0xcc;return function(_0x49019f){if(_0x49019f){return _0x4decc0[_0xd184('0x26')](_0x74a77a);}return _0x4decc0[_0xd184('0x27')](_0x74a77a)[_0xd184('0x28')]();};}function respondWithResult(_0x1f8c99,_0x116254){_0x116254=_0x116254||0xc8;return function(_0x419dc3){if(_0x419dc3){return _0x1f8c99[_0xd184('0x27')](_0x116254)[_0xd184('0x29')](_0x419dc3);}};}function respondWithFilteredResult(_0x540b6d,_0x41017e){return function(_0x5a9390){if(_0x5a9390){var _0x253ce2=typeof _0x41017e[_0xd184('0x2a')]==='undefined'&&typeof _0x41017e[_0xd184('0x2b')]===_0xd184('0x2c');var _0x3dbdb7=_0x5a9390[_0xd184('0x2d')];var _0x202dd0=_0x253ce2?0x0:_0x41017e['offset'];var _0x3e37e7=_0x253ce2?_0x5a9390[_0xd184('0x2d')]:_0x41017e['offset']+_0x41017e[_0xd184('0x2b')];var _0x248832;if(_0x3e37e7>=_0x3dbdb7){_0x3e37e7=_0x3dbdb7;_0x248832=0xc8;}else{_0x248832=0xce;}_0x540b6d[_0xd184('0x27')](_0x248832);return _0x540b6d[_0xd184('0x2e')](_0xd184('0x2f'),_0x202dd0+'-'+_0x3e37e7+'/'+_0x3dbdb7)[_0xd184('0x29')](_0x5a9390);}return null;};}function patchUpdates(_0x2ed7b8){return function(_0x28bd1a){try{jsonpatch[_0xd184('0x30')](_0x28bd1a,_0x2ed7b8,!![]);}catch(_0x22668d){return BPromise[_0xd184('0x31')](_0x22668d);}return _0x28bd1a[_0xd184('0x32')]();};}function saveUpdates(_0x10d929,_0x5ed63c){return function(_0x5aa26f){if(_0x5aa26f){return _0x5aa26f[_0xd184('0x33')](_0x10d929)[_0xd184('0x1c')](function(_0x25017f){return _0x25017f;});}return null;};}function removeEntity(_0x292741,_0x3296b5){return function(_0x359375){if(_0x359375){return _0x359375['destroy']()[_0xd184('0x1c')](function(){_0x292741['status'](0xcc)[_0xd184('0x28')]();});}};}function handleEntityNotFound(_0x48100e,_0x45d9ca){return function(_0x2b1437){if(!_0x2b1437){_0x48100e['sendStatus'](0x194);}return _0x2b1437;};}function handleError(_0x1ec758,_0x3fedf2){_0x3fedf2=_0x3fedf2||0x1f4;return function(_0x407e47){logger[_0xd184('0x23')](_0x407e47[_0xd184('0x34')]);if(_0x407e47[_0xd184('0x35')]){delete _0x407e47['name'];}_0x1ec758['status'](_0x3fedf2)[_0xd184('0x36')](_0x407e47);};}exports[_0xd184('0x37')]=function(_0x4821e9,_0x1c01bd){var _0x262aa5={},_0x18eab9={},_0x3034d0={'count':0x0,'rows':[]};var _0x5989ee=_[_0xd184('0x38')](db[_0xd184('0x39')]['rawAttributes'],function(_0x3f72fa){return{'name':_0x3f72fa['fieldName'],'type':_0x3f72fa[_0xd184('0x3a')][_0xd184('0x3b')]};});_0x18eab9['model']=_[_0xd184('0x38')](_0x5989ee,_0xd184('0x35'));_0x18eab9[_0xd184('0x3c')]=_[_0xd184('0x3d')](_0x4821e9['query']);_0x18eab9[_0xd184('0x3e')]=_['intersection'](_0x18eab9[_0xd184('0x3f')],_0x18eab9['query']);_0x262aa5[_0xd184('0x40')]=_[_0xd184('0x41')](_0x18eab9[_0xd184('0x3f')],qs[_0xd184('0x42')](_0x4821e9[_0xd184('0x3c')][_0xd184('0x42')]));_0x262aa5['attributes']=_0x262aa5[_0xd184('0x40')][_0xd184('0x43')]?_0x262aa5[_0xd184('0x40')]:_0x18eab9[_0xd184('0x3f')];if(!_0x4821e9['query'][_0xd184('0x44')]('nolimit')){_0x262aa5[_0xd184('0x2b')]=qs[_0xd184('0x2b')](_0x4821e9[_0xd184('0x3c')][_0xd184('0x2b')]);_0x262aa5[_0xd184('0x2a')]=qs[_0xd184('0x2a')](_0x4821e9[_0xd184('0x3c')][_0xd184('0x2a')]);}_0x262aa5['order']=qs[_0xd184('0x45')](_0x4821e9[_0xd184('0x3c')][_0xd184('0x45')]);_0x262aa5[_0xd184('0x46')]=qs['filters'](_[_0xd184('0x47')](_0x4821e9['query'],_0x18eab9['filters']),_0x5989ee);if(_0x4821e9[_0xd184('0x3c')]['filter']){_0x262aa5['where']=_[_0xd184('0x48')](_0x262aa5[_0xd184('0x46')],{'$or':_[_0xd184('0x38')](_0x5989ee,function(_0x12998e){if(_0x12998e[_0xd184('0x3a')]!==_0xd184('0x49')){var _0x33e8e3={};_0x33e8e3[_0x12998e[_0xd184('0x35')]]={'$like':'%'+_0x4821e9[_0xd184('0x3c')][_0xd184('0x4a')]+'%'};return _0x33e8e3;}})});}_0x262aa5=_[_0xd184('0x48')]({},_0x262aa5,_0x4821e9['options']);var _0x3b4f31={'where':_0x262aa5[_0xd184('0x46')]};return db['SmsMessage']['count'](_0x3b4f31)[_0xd184('0x1c')](function(_0x1eabc9){_0x3034d0[_0xd184('0x2d')]=_0x1eabc9;if(_0x4821e9[_0xd184('0x3c')][_0xd184('0x4b')]){_0x262aa5[_0xd184('0x4c')]=[{'all':!![]}];}return db[_0xd184('0x39')]['findAll'](_0x262aa5);})['then'](function(_0x2f8880){_0x3034d0[_0xd184('0x4d')]=_0x2f8880;return _0x3034d0;})[_0xd184('0x1c')](respondWithFilteredResult(_0x1c01bd,_0x262aa5))['catch'](handleError(_0x1c01bd,null));};exports[_0xd184('0x4e')]=function(_0x3d335f,_0x9d239){var _0x1b16bd={'raw':!![],'where':{'id':_0x3d335f[_0xd184('0x4f')]['id']}},_0xfdfd5e={};_0xfdfd5e['model']=_['keys'](db[_0xd184('0x39')][_0xd184('0x50')]);_0xfdfd5e['query']=_[_0xd184('0x3d')](_0x3d335f['query']);_0xfdfd5e[_0xd184('0x3e')]=_[_0xd184('0x41')](_0xfdfd5e[_0xd184('0x3f')],_0xfdfd5e[_0xd184('0x3c')]);_0x1b16bd['attributes']=_['intersection'](_0xfdfd5e[_0xd184('0x3f')],qs[_0xd184('0x42')](_0x3d335f[_0xd184('0x3c')]['fields']));_0x1b16bd['attributes']=_0x1b16bd['attributes'][_0xd184('0x43')]?_0x1b16bd[_0xd184('0x40')]:_0xfdfd5e[_0xd184('0x3f')];if(_0x3d335f[_0xd184('0x3c')][_0xd184('0x4b')]){_0x1b16bd['include']=[{'all':!![]}];}_0x1b16bd=_[_0xd184('0x48')]({},_0x1b16bd,_0x3d335f[_0xd184('0x51')]);return db['SmsMessage'][_0xd184('0x52')](_0x1b16bd)[_0xd184('0x1c')](handleEntityNotFound(_0x9d239,null))[_0xd184('0x1c')](respondWithResult(_0x9d239,null))[_0xd184('0x53')](handleError(_0x9d239,null));};exports[_0xd184('0x54')]=function(_0x4e6c8e,_0x5adff3){return db[_0xd184('0x39')][_0xd184('0x54')](_0x4e6c8e[_0xd184('0x55')],{})[_0xd184('0x1c')](respondWithResult(_0x5adff3,0xc9))[_0xd184('0x53')](handleError(_0x5adff3,null));};exports['update']=function(_0x1c4294,_0x14b456){if(_0x1c4294[_0xd184('0x55')]['id']){delete _0x1c4294[_0xd184('0x55')]['id'];}return db[_0xd184('0x39')]['find']({'where':{'id':_0x1c4294[_0xd184('0x4f')]['id']}})['then'](handleEntityNotFound(_0x14b456,null))['then'](saveUpdates(_0x1c4294['body'],null))[_0xd184('0x1c')](respondWithResult(_0x14b456,null))[_0xd184('0x53')](handleError(_0x14b456,null));};exports[_0xd184('0x56')]=function(_0x33a8cc,_0x9a38b6){return db[_0xd184('0x39')][_0xd184('0x52')]({'where':{'id':_0x33a8cc['params']['id']}})[_0xd184('0x1c')](handleEntityNotFound(_0x9a38b6,null))[_0xd184('0x1c')](removeEntity(_0x9a38b6,null))[_0xd184('0x53')](handleError(_0x9a38b6,null));};exports['describe']=function(_0x6c4d4b,_0x269075){return db[_0xd184('0x39')][_0xd184('0x57')]()[_0xd184('0x1c')](respondWithResult(_0x269075,null))[_0xd184('0x53')](handleError(_0x269075,null));};var interaction_log=require('../../config/logger')(_0xd184('0x58'));exports[_0xd184('0x59')]=function(_0x339b91,_0x5612ce,_0x1e9181){var _0x166179={'agent':{},'channel':'sms'};if(_0x339b91[_0xd184('0x55')]['id']){delete _0x339b91[_0xd184('0x55')]['id'];}_0x339b91['body'][_0xd184('0x5a')]=!![];_0x339b91[_0xd184('0x55')]['readAt']=moment()[_0xd184('0x5b')](_0xd184('0x5c'));_0x339b91[_0xd184('0x55')][_0xd184('0x5d')]=_0x339b91[_0xd184('0x55')]['UserId']||_0x339b91[_0xd184('0x5e')]['id'];_0x166179[_0xd184('0x5f')]['id']=_0x339b91['body']['UserId'];return db['SmsMessage'][_0xd184('0x52')]({'where':{'id':_0x339b91['params']['id'],'UserId':null}})[_0xd184('0x1c')](handleEntityNotFound(_0x5612ce,null))[_0xd184('0x1c')](saveUpdates(_0x339b91['body'],null))['then'](function(_0x291900){if(_0x291900){_0x166179[_0xd184('0x25')]=_0x291900['get']({'plain':!![]});return db[_0xd184('0x60')][_0xd184('0x52')]({'where':{'id':_0x291900[_0xd184('0x61')]}});}return null;})[_0xd184('0x1c')](handleEntityNotFound(_0x5612ce,null))['then'](function(_0x49cf06){if(_0x49cf06){return _0x49cf06['update']({'UserId':_0x339b91['body'][_0xd184('0x5d')],'read1stAt':_['isNil'](_0x49cf06[_0xd184('0x62')])?moment()[_0xd184('0x5b')](_0xd184('0x5c')):undefined});}return null;})[_0xd184('0x1c')](function(_0x27b687){if(_0x27b687){_0x166179[_0xd184('0x63')]=_0x27b687[_0xd184('0x64')]({'plain':!![]});interaction_log['info'](_0xd184('0x65'),_0x339b91[_0xd184('0x5e')]['id'],_0x339b91[_0xd184('0x5e')][_0xd184('0x35')],_0x339b91[_0xd184('0x5e')][_0xd184('0x66')],_0x166179[_0xd184('0x63')]['id'],_0x339b91['body']?JSON[_0xd184('0x22')](_0x339b91['body']):_0xd184('0x67'));return respondWithRpcPromise(_0xd184('0x68'),_0xd184('0x69'),_0x166179);}return null;})[_0xd184('0x1c')](function(_0x30af91){var _0x2ea296=_0xd184('0x6a')+_0x30af91[_0xd184('0x25')]['ContactId'];return db[_0xd184('0x6b')][_0xd184('0x3c')](_0x2ea296,{'type':db[_0xd184('0x6c')]['QueryTypes']['SELECT'],'raw':!![]})['then'](function(_0x266a66){return _0x266a66;});})[_0xd184('0x1c')](function(_0x31da6f){if(_0x31da6f){_0x166179[_0xd184('0x25')][_0xd184('0x6d')]=_0x31da6f[0x0];if(!_0x339b91[_0xd184('0x55')]['UserId'])return;return db[_0xd184('0x6e')][_0xd184('0x52')]({'where':{'id':_0x339b91[_0xd184('0x55')][_0xd184('0x5d')],'role':_0xd184('0x5f')},'attributes':['id',_0xd184('0x35'),_0xd184('0x6f'),_0xd184('0x70'),'internal'],'raw':!![]});}return null;})[_0xd184('0x1c')](function(_0x45966e){if(!_0x45966e)return null;_0x166179['message'][_0xd184('0x5f')]=_0x45966e;return _0x166179;})[_0xd184('0x1c')](function(_0x3d78ca){if(_0x3d78ca){if(_0x339b91[_0xd184('0x55')][_0xd184('0x71')]){_0x166179['message']['interface']=util[_0xd184('0x5b')](_0xd184('0x72'),_0x339b91[_0xd184('0x5e')][_0xd184('0x35')]);_0x166179[_0xd184('0x25')][_0xd184('0x73')]=_0x166179[_0xd184('0x73')];_0x166179[_0xd184('0x25')]['motionChannel']=_0x166179[_0xd184('0x73')];_0x166179['message'][_0xd184('0x74')]=_0xd184('0x59');return respondWithRpcPromise(_0xd184('0x75'),'EventManager',{'event':_0xd184('0x76'),'message':_0x166179[_0xd184('0x25')]},client9002)[_0xd184('0x1c')](function(){return _0x166179;});}return _0x166179;}return null;})[_0xd184('0x1c')](respondWithResult(_0x5612ce,null))[_0xd184('0x53')](handleError(_0x5612ce,null));};var interaction_log=require(_0xd184('0x77'))('sms-interactions');exports[_0xd184('0x31')]=function(_0x2df80d,_0x219267,_0x4a5d12){var _0x4588c3={'agent':{},'channel':_0xd184('0x78')};if(_0x2df80d[_0xd184('0x55')]['id']){delete _0x2df80d[_0xd184('0x55')]['id'];}_0x2df80d[_0xd184('0x55')][_0xd184('0x5d')]=_0x2df80d['body'][_0xd184('0x5d')]||_0x2df80d['user']['id'];_0x4588c3[_0xd184('0x5f')]['id']=_0x2df80d[_0xd184('0x55')][_0xd184('0x5d')];return db[_0xd184('0x39')]['find']({'where':{'id':_0x2df80d[_0xd184('0x4f')]['id'],'UserId':null}})[_0xd184('0x1c')](handleEntityNotFound(_0x219267,null))[_0xd184('0x1c')](function(_0x3b6c59){if(_0x3b6c59){_0x4588c3[_0xd184('0x25')]=_0x3b6c59[_0xd184('0x64')]({'plain':!![]});return db[_0xd184('0x60')][_0xd184('0x52')]({'where':{'id':_0x3b6c59[_0xd184('0x61')]}});}return null;})[_0xd184('0x1c')](handleEntityNotFound(_0x219267,null))[_0xd184('0x1c')](function(_0x363b42){if(_0x363b42){_0x4588c3['interaction']=_0x363b42['get']({'plain':!![]});interaction_log[_0xd184('0x1d')](_0xd184('0x79'),_0x2df80d[_0xd184('0x5e')]['id'],_0x2df80d[_0xd184('0x5e')][_0xd184('0x35')],_0x2df80d[_0xd184('0x5e')][_0xd184('0x66')],_0x4588c3['interaction']['id'],_0x2df80d[_0xd184('0x55')]?JSON[_0xd184('0x22')](_0x2df80d['body']):_0xd184('0x67'));return respondWithRpcPromise(_0xd184('0x7a'),_0xd184('0x7b'),_0x4588c3);}return null;})[_0xd184('0x1c')](function(_0x5115f3){var _0x1aef44=_0xd184('0x6a')+_0x5115f3['message'][_0xd184('0x7c')];return db['sequelize'][_0xd184('0x3c')](_0x1aef44,{'type':db[_0xd184('0x6c')][_0xd184('0x7d')]['SELECT'],'raw':!![]})['then'](function(_0x409111){return _0x409111;});})[_0xd184('0x1c')](function(_0x36a0b1){if(_0x36a0b1){_0x4588c3[_0xd184('0x25')][_0xd184('0x6d')]=_0x36a0b1[0x0];if(!_0x2df80d['body'][_0xd184('0x5d')])return;return db[_0xd184('0x6e')][_0xd184('0x52')]({'where':{'id':_0x2df80d[_0xd184('0x55')]['UserId'],'role':'agent'},'attributes':['id',_0xd184('0x35'),_0xd184('0x6f'),_0xd184('0x70'),'internal'],'raw':!![]});}return null;})[_0xd184('0x1c')](function(_0x4d276a){if(!_0x4d276a)return null;_0x4588c3[_0xd184('0x25')][_0xd184('0x5f')]=_0x4d276a;return _0x4588c3;})[_0xd184('0x1c')](function(_0x72b7e7){if(_0x72b7e7){_0x72b7e7[_0xd184('0x25')][_0xd184('0x7e')]=util['format'](_0xd184('0x72'),_0x2df80d[_0xd184('0x5e')][_0xd184('0x35')]);_0x72b7e7[_0xd184('0x25')][_0xd184('0x73')]=_0x4588c3[_0xd184('0x73')];_0x72b7e7['message'][_0xd184('0x7f')]=_0x4588c3[_0xd184('0x73')];_0x72b7e7[_0xd184('0x25')][_0xd184('0x74')]=_0xd184('0x31');respondWithRpcPromise(_0xd184('0x75'),_0xd184('0x75'),{'event':_0xd184('0x80'),'message':_0x72b7e7[_0xd184('0x25')]},client9002);return _0x4588c3;}return null;})[_0xd184('0x1c')](respondWithResult(_0x219267,null))[_0xd184('0x53')](handleError(_0x219267,null));};exports[_0xd184('0x27')]=function(_0x277406,_0x19cb3f,_0x3a841d){if(_0x277406[_0xd184('0x55')]['id']){delete _0x277406[_0xd184('0x55')]['id'];}var _0x362218;return db[_0xd184('0x39')][_0xd184('0x52')]({'where':{'id':_0x277406[_0xd184('0x4f')]['id']}})['then'](handleEntityNotFound(_0x19cb3f,null))[_0xd184('0x1c')](function(_0x27a697){if(_0x27a697){_0x362218=_0x27a697;return db['SmsAccount'][_0xd184('0x52')]({'where':{'id':_0x27a697['SmsAccountId']}});}})['then'](handleEntityNotFound(_0x19cb3f,null))['then'](function(_0x5977ba){if(_0x5977ba){logger[_0xd184('0x20')](_0xd184('0x21'),_0xd184('0x27'),_0xd184('0x81'),_0x5977ba[_0xd184('0x3a')],util['inspect'](_0x277406[_0xd184('0x55')],{'showHidden':![],'depth':null}));switch(_0x5977ba[_0xd184('0x3a')]){case'twilio':if(_0x277406['body'][_0xd184('0x82')]&&_0x277406[_0xd184('0x55')][_0xd184('0x82')]===_0x362218['messageId']){return _0x362218[_0xd184('0x33')]({'read':!![]});}else{logger[_0xd184('0x23')]('SmsAccount,\x20%s,\x20%s,\x20%s','status','twilio',util['inspect'](_0x277406[_0xd184('0x55')],{'showHidden':![],'depth':null}));}break;case _0xd184('0x83'):if(_0x277406[_0xd184('0x55')][_0xd184('0x84')]&&_0x277406[_0xd184('0x55')][_0xd184('0x84')]===_0x362218[_0xd184('0x85')]&&_[_0xd184('0x86')]([_0xd184('0x87'),_0xd184('0x88')],_0x277406[_0xd184('0x55')][_0xd184('0x89')])>=0x0){return _0x362218[_0xd184('0x33')]({'read':!![]});}else{logger[_0xd184('0x23')](_0xd184('0x8a'),'status',_0xd184('0x8b'),util[_0xd184('0x8c')](_0x277406[_0xd184('0x55')],{'showHidden':![],'depth':null}));}break;case _0xd184('0x8d'):var _0x3a0884=_0x277406[_0xd184('0x55')][_0xd184('0x8e')][0x0];if(_0x3a0884[_0xd184('0x27')][_0xd184('0x8f')]===_0xd184('0x90')){return _0x362218[_0xd184('0x33')]({'read':!![]});}else{logger['error'](_0xd184('0x8a'),_0xd184('0x27'),'infobip',util[_0xd184('0x8c')](_0x277406[_0xd184('0x55')],{'showHidden':![],'depth':null}));}break;}return _0x362218;}})[_0xd184('0x1c')](respondWithResult(_0x19cb3f,null))['catch'](handleError(_0x19cb3f,null));};
\ No newline at end of file
+var _0x4c6d=['keys','filters','intersection','model','fields','attributes','length','hasOwnProperty','nolimit','order','sort','filter','where','merge','VIRTUAL','options','count','includeAll','rows','show','params','rawAttributes','include','find','create','body','update','describe','../../config/logger','sms-interactions','sms','read','format','YYYY-MM-DD\x20HH:mm:ss','UserId','get','SmsInteractionId','isNil','[SMSMESSAGE:ACCEPT]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s','user','interaction','stringify','AcceptMessage','acceptMessage','SELECT\x20*\x20FROM\x20cm_contacts\x20WHERE\x20id\x20=\x20','ContactId','Sequelize','QueryTypes','SELECT','internal','agent','manual','channel','event','EventManager','acceptmessage','SmsInteraction','[SMSMESSAGE:REJECT]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s','role','null','RejectMessage','rejectMessage','contact','User','fullname','email','interface','SIP/%s','rejectmessage','SmsAccount','SmsMessage,\x20%s,\x20%s,\x20%s','received\x20delivery\x20report\x20from','twilio','messageId','SmsAccount,\x20%s,\x20%s,\x20%s','inspect','plivo','MessageUUID','indexOf','sent','delivered','Status','plivio','infobip','results','groupName','DELIVERED','rimraf','zip-dir','fast-json-patch','request-promise','bluebird','mustache','util','path','fs-extra','squel','crypto','desk.js','querystring','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/environment','../../config/license/util','../../mysqldb','redis','localhost','register','jayson/promise','client','http','request','info','request\x20sent','debug','error','message','SmsMessage,\x20%s,\x20%s','result','catch','sendStatus','status','end','json','offset','limit','undefined','set','apply','reject','then','destroy','stack','name','send','index','map','SmsMessage','fieldName','type','key','query'];(function(_0x4bca89,_0x53ebec){var _0x326078=function(_0x58cb44){while(--_0x58cb44){_0x4bca89['push'](_0x4bca89['shift']());}};_0x326078(++_0x53ebec);}(_0x4c6d,0x179));var _0xd4c6=function(_0x49756a,_0x2bc007){_0x49756a=_0x49756a-0x0;var _0x125085=_0x4c6d[_0x49756a];return _0x125085;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0xd4c6('0x0'));var zipdir=require(_0xd4c6('0x1'));var jsonpatch=require(_0xd4c6('0x2'));var rp=require(_0xd4c6('0x3'));var moment=require('moment');var BPromise=require(_0xd4c6('0x4'));var Mustache=require(_0xd4c6('0x5'));var util=require(_0xd4c6('0x6'));var path=require(_0xd4c6('0x7'));var sox=require('sox');var csv=require('to-csv');var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0xd4c6('0x8'));var _=require('lodash');var squel=require(_0xd4c6('0x9'));var crypto=require(_0xd4c6('0xa'));var jsforce=require('jsforce');var deskjs=require(_0xd4c6('0xb'));var toCsv=require('to-csv');var querystring=require(_0xd4c6('0xc'));var Papa=require('papaparse');var Redis=require(_0xd4c6('0xd'));var authService=require('../../components/auth/service');var qs=require(_0xd4c6('0xe'));var as=require(_0xd4c6('0xf'));var hardwareService=require(_0xd4c6('0x10'));var logger=require('../../config/logger')(_0xd4c6('0x11'));var utils=require('../../config/utils');var config=require(_0xd4c6('0x12'));var licenseUtil=require(_0xd4c6('0x13'));var db=require(_0xd4c6('0x14'))['db'];config[_0xd4c6('0x15')]=_['defaults'](config[_0xd4c6('0x15')],{'host':_0xd4c6('0x16'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config['redis']));require('./smsMessage.socket')[_0xd4c6('0x17')](socket);var jayson=require(_0xd4c6('0x18'));var client=jayson[_0xd4c6('0x19')][_0xd4c6('0x1a')]({'port':0x232c});var client9002=jayson[_0xd4c6('0x19')][_0xd4c6('0x1a')]({'port':0x232a});function respondWithRpcPromise(_0x57372e,_0x69f6d3,_0x4666ba,_0x1ada8c){return new BPromise(function(_0x249257,_0x3d1c29){var _0x3a0aa4=_0x1ada8c||client;return _0x3a0aa4[_0xd4c6('0x1b')](_0x57372e,_0x4666ba)['then'](function(_0x5775fe){logger[_0xd4c6('0x1c')]('SmsMessage,\x20%s,\x20%s',_0x69f6d3,_0xd4c6('0x1d'));logger[_0xd4c6('0x1e')]('SmsMessage,\x20%s,\x20%s,\x20%s',_0x69f6d3,_0xd4c6('0x1d'),JSON['stringify'](_0x5775fe));if(_0x5775fe[_0xd4c6('0x1f')]){if(_0x5775fe[_0xd4c6('0x1f')]['code']===0x1f4){logger[_0xd4c6('0x1f')]('SmsMessage,\x20%s,\x20%s',_0x69f6d3,_0x5775fe['error'][_0xd4c6('0x20')]);return _0x3d1c29(_0x5775fe[_0xd4c6('0x1f')]['message']);}logger['error'](_0xd4c6('0x21'),_0x69f6d3,_0x5775fe[_0xd4c6('0x1f')][_0xd4c6('0x20')]);return _0x249257(_0x5775fe[_0xd4c6('0x1f')][_0xd4c6('0x20')]);}else{logger[_0xd4c6('0x1c')](_0xd4c6('0x21'),_0x69f6d3,_0xd4c6('0x1d'));_0x249257(_0x5775fe[_0xd4c6('0x22')]['message']);}})[_0xd4c6('0x23')](function(_0x3a36f7){logger[_0xd4c6('0x1f')]('SmsMessage,\x20%s,\x20%s',_0x69f6d3,_0x3a36f7);_0x3d1c29(_0x3a36f7);});});}function respondWithStatusCode(_0x44c818,_0x3f79b0){_0x3f79b0=_0x3f79b0||0xcc;return function(_0x3ab4ff){if(_0x3ab4ff){return _0x44c818[_0xd4c6('0x24')](_0x3f79b0);}return _0x44c818[_0xd4c6('0x25')](_0x3f79b0)[_0xd4c6('0x26')]();};}function respondWithResult(_0x442b7d,_0x20680c){_0x20680c=_0x20680c||0xc8;return function(_0x1f46a7){if(_0x1f46a7){return _0x442b7d[_0xd4c6('0x25')](_0x20680c)[_0xd4c6('0x27')](_0x1f46a7);}};}function respondWithFilteredResult(_0x1e9e9d,_0x18937a){return function(_0x52fce8){if(_0x52fce8){var _0x153d57=typeof _0x18937a[_0xd4c6('0x28')]==='undefined'&&typeof _0x18937a[_0xd4c6('0x29')]===_0xd4c6('0x2a');var _0x3f2955=_0x52fce8['count'];var _0x3f37bb=_0x153d57?0x0:_0x18937a[_0xd4c6('0x28')];var _0x476146=_0x153d57?_0x52fce8['count']:_0x18937a[_0xd4c6('0x28')]+_0x18937a[_0xd4c6('0x29')];var _0x895424;if(_0x476146>=_0x3f2955){_0x476146=_0x3f2955;_0x895424=0xc8;}else{_0x895424=0xce;}_0x1e9e9d['status'](_0x895424);return _0x1e9e9d[_0xd4c6('0x2b')]('Content-Range',_0x3f37bb+'-'+_0x476146+'/'+_0x3f2955)[_0xd4c6('0x27')](_0x52fce8);}return null;};}function patchUpdates(_0x591bcb){return function(_0x2a1b25){try{jsonpatch[_0xd4c6('0x2c')](_0x2a1b25,_0x591bcb,!![]);}catch(_0x4439ed){return BPromise[_0xd4c6('0x2d')](_0x4439ed);}return _0x2a1b25['save']();};}function saveUpdates(_0x38e64c,_0x4703d3){return function(_0x38b542){if(_0x38b542){return _0x38b542['update'](_0x38e64c)[_0xd4c6('0x2e')](function(_0x3b962b){return _0x3b962b;});}return null;};}function removeEntity(_0x57e3c9,_0x74d93c){return function(_0x520758){if(_0x520758){return _0x520758[_0xd4c6('0x2f')]()[_0xd4c6('0x2e')](function(){_0x57e3c9['status'](0xcc)[_0xd4c6('0x26')]();});}};}function handleEntityNotFound(_0xf2ab20,_0x22b8eb){return function(_0x5622e6){if(!_0x5622e6){_0xf2ab20[_0xd4c6('0x24')](0x194);}return _0x5622e6;};}function handleError(_0x32865a,_0x5c1ef4){_0x5c1ef4=_0x5c1ef4||0x1f4;return function(_0x1afddb){logger[_0xd4c6('0x1f')](_0x1afddb[_0xd4c6('0x30')]);if(_0x1afddb[_0xd4c6('0x31')]){delete _0x1afddb['name'];}_0x32865a[_0xd4c6('0x25')](_0x5c1ef4)[_0xd4c6('0x32')](_0x1afddb);};}exports[_0xd4c6('0x33')]=function(_0x3f753a,_0x1f8649){var _0x2f17b1={},_0x461f60={},_0xb5f887={'count':0x0,'rows':[]};var _0x20448a=_[_0xd4c6('0x34')](db[_0xd4c6('0x35')]['rawAttributes'],function(_0x17e6ee){return{'name':_0x17e6ee[_0xd4c6('0x36')],'type':_0x17e6ee[_0xd4c6('0x37')][_0xd4c6('0x38')]};});_0x461f60['model']=_[_0xd4c6('0x34')](_0x20448a,_0xd4c6('0x31'));_0x461f60[_0xd4c6('0x39')]=_[_0xd4c6('0x3a')](_0x3f753a[_0xd4c6('0x39')]);_0x461f60[_0xd4c6('0x3b')]=_[_0xd4c6('0x3c')](_0x461f60[_0xd4c6('0x3d')],_0x461f60[_0xd4c6('0x39')]);_0x2f17b1['attributes']=_[_0xd4c6('0x3c')](_0x461f60['model'],qs[_0xd4c6('0x3e')](_0x3f753a[_0xd4c6('0x39')][_0xd4c6('0x3e')]));_0x2f17b1[_0xd4c6('0x3f')]=_0x2f17b1[_0xd4c6('0x3f')][_0xd4c6('0x40')]?_0x2f17b1['attributes']:_0x461f60[_0xd4c6('0x3d')];if(!_0x3f753a[_0xd4c6('0x39')][_0xd4c6('0x41')](_0xd4c6('0x42'))){_0x2f17b1['limit']=qs['limit'](_0x3f753a[_0xd4c6('0x39')][_0xd4c6('0x29')]);_0x2f17b1[_0xd4c6('0x28')]=qs[_0xd4c6('0x28')](_0x3f753a['query'][_0xd4c6('0x28')]);}_0x2f17b1[_0xd4c6('0x43')]=qs[_0xd4c6('0x44')](_0x3f753a[_0xd4c6('0x39')][_0xd4c6('0x44')]);_0x2f17b1['where']=qs[_0xd4c6('0x3b')](_['pick'](_0x3f753a['query'],_0x461f60[_0xd4c6('0x3b')]),_0x20448a);if(_0x3f753a[_0xd4c6('0x39')][_0xd4c6('0x45')]){_0x2f17b1[_0xd4c6('0x46')]=_[_0xd4c6('0x47')](_0x2f17b1['where'],{'$or':_[_0xd4c6('0x34')](_0x20448a,function(_0x2c7851){if(_0x2c7851[_0xd4c6('0x37')]!==_0xd4c6('0x48')){var _0x44aab3={};_0x44aab3[_0x2c7851['name']]={'$like':'%'+_0x3f753a[_0xd4c6('0x39')]['filter']+'%'};return _0x44aab3;}})});}_0x2f17b1=_['merge']({},_0x2f17b1,_0x3f753a[_0xd4c6('0x49')]);var _0x364942={'where':_0x2f17b1[_0xd4c6('0x46')]};return db[_0xd4c6('0x35')][_0xd4c6('0x4a')](_0x364942)[_0xd4c6('0x2e')](function(_0x1b04df){_0xb5f887[_0xd4c6('0x4a')]=_0x1b04df;if(_0x3f753a[_0xd4c6('0x39')][_0xd4c6('0x4b')]){_0x2f17b1['include']=[{'all':!![]}];}return db[_0xd4c6('0x35')]['findAll'](_0x2f17b1);})['then'](function(_0x1b7a63){_0xb5f887[_0xd4c6('0x4c')]=_0x1b7a63;return _0xb5f887;})['then'](respondWithFilteredResult(_0x1f8649,_0x2f17b1))[_0xd4c6('0x23')](handleError(_0x1f8649,null));};exports[_0xd4c6('0x4d')]=function(_0x2bbba0,_0x282932){var _0x450ae0={'raw':!![],'where':{'id':_0x2bbba0[_0xd4c6('0x4e')]['id']}},_0x2c1013={};_0x2c1013[_0xd4c6('0x3d')]=_[_0xd4c6('0x3a')](db[_0xd4c6('0x35')][_0xd4c6('0x4f')]);_0x2c1013['query']=_[_0xd4c6('0x3a')](_0x2bbba0[_0xd4c6('0x39')]);_0x2c1013['filters']=_['intersection'](_0x2c1013[_0xd4c6('0x3d')],_0x2c1013['query']);_0x450ae0[_0xd4c6('0x3f')]=_[_0xd4c6('0x3c')](_0x2c1013['model'],qs[_0xd4c6('0x3e')](_0x2bbba0[_0xd4c6('0x39')]['fields']));_0x450ae0[_0xd4c6('0x3f')]=_0x450ae0[_0xd4c6('0x3f')][_0xd4c6('0x40')]?_0x450ae0['attributes']:_0x2c1013['model'];if(_0x2bbba0[_0xd4c6('0x39')][_0xd4c6('0x4b')]){_0x450ae0[_0xd4c6('0x50')]=[{'all':!![]}];}_0x450ae0=_['merge']({},_0x450ae0,_0x2bbba0[_0xd4c6('0x49')]);return db[_0xd4c6('0x35')][_0xd4c6('0x51')](_0x450ae0)['then'](handleEntityNotFound(_0x282932,null))[_0xd4c6('0x2e')](respondWithResult(_0x282932,null))[_0xd4c6('0x23')](handleError(_0x282932,null));};exports[_0xd4c6('0x52')]=function(_0x11fb95,_0x805e70){return db[_0xd4c6('0x35')][_0xd4c6('0x52')](_0x11fb95[_0xd4c6('0x53')],{})[_0xd4c6('0x2e')](respondWithResult(_0x805e70,0xc9))[_0xd4c6('0x23')](handleError(_0x805e70,null));};exports[_0xd4c6('0x54')]=function(_0x57dcdd,_0x2cefd2){if(_0x57dcdd[_0xd4c6('0x53')]['id']){delete _0x57dcdd[_0xd4c6('0x53')]['id'];}return db[_0xd4c6('0x35')][_0xd4c6('0x51')]({'where':{'id':_0x57dcdd[_0xd4c6('0x4e')]['id']}})[_0xd4c6('0x2e')](handleEntityNotFound(_0x2cefd2,null))['then'](saveUpdates(_0x57dcdd[_0xd4c6('0x53')],null))['then'](respondWithResult(_0x2cefd2,null))[_0xd4c6('0x23')](handleError(_0x2cefd2,null));};exports[_0xd4c6('0x2f')]=function(_0x125472,_0x4f3589){return db['SmsMessage'][_0xd4c6('0x51')]({'where':{'id':_0x125472[_0xd4c6('0x4e')]['id']}})[_0xd4c6('0x2e')](handleEntityNotFound(_0x4f3589,null))['then'](removeEntity(_0x4f3589,null))[_0xd4c6('0x23')](handleError(_0x4f3589,null));};exports['describe']=function(_0x3bf10a,_0x339eca){return db[_0xd4c6('0x35')][_0xd4c6('0x55')]()[_0xd4c6('0x2e')](respondWithResult(_0x339eca,null))[_0xd4c6('0x23')](handleError(_0x339eca,null));};var interaction_log=require(_0xd4c6('0x56'))(_0xd4c6('0x57'));exports['accept']=function(_0xe4c97,_0x36f95d,_0x214063){var _0x1329ff={'agent':{},'channel':_0xd4c6('0x58')};if(_0xe4c97[_0xd4c6('0x53')]['id']){delete _0xe4c97['body']['id'];}_0xe4c97['body'][_0xd4c6('0x59')]=!![];_0xe4c97[_0xd4c6('0x53')]['readAt']=moment()[_0xd4c6('0x5a')](_0xd4c6('0x5b'));_0xe4c97['body'][_0xd4c6('0x5c')]=_0xe4c97[_0xd4c6('0x53')][_0xd4c6('0x5c')]||_0xe4c97['user']['id'];_0x1329ff['agent']['id']=_0xe4c97['body'][_0xd4c6('0x5c')];return db['SmsMessage']['find']({'where':{'id':_0xe4c97[_0xd4c6('0x4e')]['id'],'UserId':null}})[_0xd4c6('0x2e')](handleEntityNotFound(_0x36f95d,null))[_0xd4c6('0x2e')](saveUpdates(_0xe4c97[_0xd4c6('0x53')],null))[_0xd4c6('0x2e')](function(_0x252a3d){if(_0x252a3d){_0x1329ff[_0xd4c6('0x20')]=_0x252a3d[_0xd4c6('0x5d')]({'plain':!![]});return db['SmsInteraction'][_0xd4c6('0x51')]({'where':{'id':_0x252a3d[_0xd4c6('0x5e')]}});}return null;})[_0xd4c6('0x2e')](handleEntityNotFound(_0x36f95d,null))['then'](function(_0x51d225){if(_0x51d225){return _0x51d225[_0xd4c6('0x54')]({'UserId':_0xe4c97[_0xd4c6('0x53')]['UserId'],'read1stAt':_[_0xd4c6('0x5f')](_0x51d225['read1stAt'])?moment()[_0xd4c6('0x5a')](_0xd4c6('0x5b')):undefined});}return null;})['then'](function(_0x51d9e6){if(_0x51d9e6){_0x1329ff['interaction']=_0x51d9e6[_0xd4c6('0x5d')]({'plain':!![]});interaction_log[_0xd4c6('0x1c')](_0xd4c6('0x60'),_0xe4c97[_0xd4c6('0x61')]['id'],_0xe4c97['user'][_0xd4c6('0x31')],_0xe4c97[_0xd4c6('0x61')]['role'],_0x1329ff[_0xd4c6('0x62')]['id'],_0xe4c97[_0xd4c6('0x53')]?JSON[_0xd4c6('0x63')](_0xe4c97['body']):'null');return respondWithRpcPromise(_0xd4c6('0x64'),_0xd4c6('0x65'),_0x1329ff);}return null;})['then'](function(_0x36d971){var _0x59ae19=_0xd4c6('0x66')+_0x36d971['message'][_0xd4c6('0x67')];return db['sequelize'][_0xd4c6('0x39')](_0x59ae19,{'type':db[_0xd4c6('0x68')][_0xd4c6('0x69')][_0xd4c6('0x6a')],'raw':!![]})[_0xd4c6('0x2e')](function(_0x3d4734){return _0x3d4734;});})['then'](function(_0x2d3be2){if(_0x2d3be2){_0x1329ff['message']['contact']=_0x2d3be2[0x0];if(!_0xe4c97['body'][_0xd4c6('0x5c')])return;return db['User'][_0xd4c6('0x51')]({'where':{'id':_0xe4c97['body'][_0xd4c6('0x5c')],'role':'agent'},'attributes':['id','name','fullname','email',_0xd4c6('0x6b')],'raw':!![]});}return null;})[_0xd4c6('0x2e')](function(_0x51ca8f){if(!_0x51ca8f)return null;_0x1329ff[_0xd4c6('0x20')][_0xd4c6('0x6c')]=_0x51ca8f;return _0x1329ff;})['then'](function(_0x579c19){if(_0x579c19){if(_0xe4c97[_0xd4c6('0x53')][_0xd4c6('0x6d')]){_0x1329ff[_0xd4c6('0x20')]['interface']=util[_0xd4c6('0x5a')]('SIP/%s',_0xe4c97[_0xd4c6('0x61')][_0xd4c6('0x31')]);_0x1329ff['message']['channel']=_0x1329ff[_0xd4c6('0x6e')];_0x1329ff[_0xd4c6('0x20')][_0xd4c6('0x6f')]='accept';return respondWithRpcPromise(_0xd4c6('0x70'),_0xd4c6('0x70'),{'event':_0xd4c6('0x71'),'message':_0x1329ff['message']},client9002)[_0xd4c6('0x2e')](function(){return _0x1329ff;});}return _0x1329ff;}return null;})[_0xd4c6('0x2e')](respondWithResult(_0x36f95d,null))[_0xd4c6('0x23')](handleError(_0x36f95d,null));};var interaction_log=require(_0xd4c6('0x56'))(_0xd4c6('0x57'));exports[_0xd4c6('0x2d')]=function(_0x454efe,_0x13469d,_0x13fe56){var _0x4022a9={'agent':{},'channel':_0xd4c6('0x58')};if(_0x454efe[_0xd4c6('0x53')]['id']){delete _0x454efe[_0xd4c6('0x53')]['id'];}_0x454efe['body'][_0xd4c6('0x5c')]=_0x454efe[_0xd4c6('0x53')][_0xd4c6('0x5c')]||_0x454efe[_0xd4c6('0x61')]['id'];_0x4022a9[_0xd4c6('0x6c')]['id']=_0x454efe[_0xd4c6('0x53')][_0xd4c6('0x5c')];return db[_0xd4c6('0x35')][_0xd4c6('0x51')]({'where':{'id':_0x454efe[_0xd4c6('0x4e')]['id'],'UserId':null}})[_0xd4c6('0x2e')](handleEntityNotFound(_0x13469d,null))[_0xd4c6('0x2e')](function(_0x2ee783){if(_0x2ee783){_0x4022a9[_0xd4c6('0x20')]=_0x2ee783['get']({'plain':!![]});return db[_0xd4c6('0x72')]['find']({'where':{'id':_0x2ee783[_0xd4c6('0x5e')]}});}return null;})[_0xd4c6('0x2e')](handleEntityNotFound(_0x13469d,null))[_0xd4c6('0x2e')](function(_0x3ae76e){if(_0x3ae76e){_0x4022a9[_0xd4c6('0x62')]=_0x3ae76e['get']({'plain':!![]});interaction_log[_0xd4c6('0x1c')](_0xd4c6('0x73'),_0x454efe[_0xd4c6('0x61')]['id'],_0x454efe[_0xd4c6('0x61')][_0xd4c6('0x31')],_0x454efe[_0xd4c6('0x61')][_0xd4c6('0x74')],_0x4022a9[_0xd4c6('0x62')]['id'],_0x454efe[_0xd4c6('0x53')]?JSON[_0xd4c6('0x63')](_0x454efe[_0xd4c6('0x53')]):_0xd4c6('0x75'));return respondWithRpcPromise(_0xd4c6('0x76'),_0xd4c6('0x77'),_0x4022a9);}return null;})['then'](function(_0x4528f1){var _0x3aa2df='SELECT\x20*\x20FROM\x20cm_contacts\x20WHERE\x20id\x20=\x20'+_0x4528f1[_0xd4c6('0x20')][_0xd4c6('0x67')];return db['sequelize'][_0xd4c6('0x39')](_0x3aa2df,{'type':db['Sequelize'][_0xd4c6('0x69')][_0xd4c6('0x6a')],'raw':!![]})['then'](function(_0xbd4687){return _0xbd4687;});})[_0xd4c6('0x2e')](function(_0x44e8f1){if(_0x44e8f1){_0x4022a9[_0xd4c6('0x20')][_0xd4c6('0x78')]=_0x44e8f1[0x0];if(!_0x454efe[_0xd4c6('0x53')]['UserId'])return;return db[_0xd4c6('0x79')][_0xd4c6('0x51')]({'where':{'id':_0x454efe[_0xd4c6('0x53')]['UserId'],'role':'agent'},'attributes':['id',_0xd4c6('0x31'),_0xd4c6('0x7a'),_0xd4c6('0x7b'),_0xd4c6('0x6b')],'raw':!![]});}return null;})['then'](function(_0x8fabe7){if(!_0x8fabe7)return null;_0x4022a9[_0xd4c6('0x20')][_0xd4c6('0x6c')]=_0x8fabe7;return _0x4022a9;})[_0xd4c6('0x2e')](function(_0x5a8890){if(_0x5a8890){_0x5a8890[_0xd4c6('0x20')][_0xd4c6('0x7c')]=util['format'](_0xd4c6('0x7d'),_0x454efe[_0xd4c6('0x61')][_0xd4c6('0x31')]);_0x5a8890[_0xd4c6('0x20')][_0xd4c6('0x6e')]=_0x4022a9[_0xd4c6('0x6e')];_0x5a8890['message'][_0xd4c6('0x6f')]=_0xd4c6('0x2d');respondWithRpcPromise('EventManager',_0xd4c6('0x70'),{'event':_0xd4c6('0x7e'),'message':_0x5a8890[_0xd4c6('0x20')]},client9002);return _0x4022a9;}return null;})[_0xd4c6('0x2e')](respondWithResult(_0x13469d,null))['catch'](handleError(_0x13469d,null));};exports[_0xd4c6('0x25')]=function(_0x3bcbe0,_0x54581d,_0x55a595){if(_0x3bcbe0['body']['id']){delete _0x3bcbe0[_0xd4c6('0x53')]['id'];}var _0x5cb533;return db['SmsMessage']['find']({'where':{'id':_0x3bcbe0[_0xd4c6('0x4e')]['id']}})[_0xd4c6('0x2e')](handleEntityNotFound(_0x54581d,null))[_0xd4c6('0x2e')](function(_0x81b8fa){if(_0x81b8fa){_0x5cb533=_0x81b8fa;return db[_0xd4c6('0x7f')][_0xd4c6('0x51')]({'where':{'id':_0x81b8fa['SmsAccountId']}});}})[_0xd4c6('0x2e')](handleEntityNotFound(_0x54581d,null))[_0xd4c6('0x2e')](function(_0xce7588){if(_0xce7588){logger[_0xd4c6('0x1e')](_0xd4c6('0x80'),_0xd4c6('0x25'),_0xd4c6('0x81'),_0xce7588[_0xd4c6('0x37')],util['inspect'](_0x3bcbe0[_0xd4c6('0x53')],{'showHidden':![],'depth':null}));switch(_0xce7588[_0xd4c6('0x37')]){case _0xd4c6('0x82'):if(_0x3bcbe0[_0xd4c6('0x53')]['MessageSid']&&_0x3bcbe0['body']['MessageSid']===_0x5cb533[_0xd4c6('0x83')]){return _0x5cb533[_0xd4c6('0x54')]({'read':!![]});}else{logger[_0xd4c6('0x1f')](_0xd4c6('0x84'),_0xd4c6('0x25'),_0xd4c6('0x82'),util[_0xd4c6('0x85')](_0x3bcbe0['body'],{'showHidden':![],'depth':null}));}break;case _0xd4c6('0x86'):if(_0x3bcbe0[_0xd4c6('0x53')][_0xd4c6('0x87')]&&_0x3bcbe0[_0xd4c6('0x53')]['MessageUUID']===_0x5cb533[_0xd4c6('0x83')]&&_[_0xd4c6('0x88')]([_0xd4c6('0x89'),_0xd4c6('0x8a')],_0x3bcbe0[_0xd4c6('0x53')][_0xd4c6('0x8b')])>=0x0){return _0x5cb533['update']({'read':!![]});}else{logger[_0xd4c6('0x1f')](_0xd4c6('0x84'),_0xd4c6('0x25'),_0xd4c6('0x8c'),util[_0xd4c6('0x85')](_0x3bcbe0['body'],{'showHidden':![],'depth':null}));}break;case _0xd4c6('0x8d'):var _0x26ac6f=_0x3bcbe0[_0xd4c6('0x53')][_0xd4c6('0x8e')][0x0];if(_0x26ac6f[_0xd4c6('0x25')][_0xd4c6('0x8f')]===_0xd4c6('0x90')){return _0x5cb533[_0xd4c6('0x54')]({'read':!![]});}else{logger['error']('SmsAccount,\x20%s,\x20%s,\x20%s','status',_0xd4c6('0x8d'),util[_0xd4c6('0x85')](_0x3bcbe0[_0xd4c6('0x53')],{'showHidden':![],'depth':null}));}break;}return _0x5cb533;}})[_0xd4c6('0x2e')](respondWithResult(_0x54581d,null))['catch'](handleError(_0x54581d,null));};
\ No newline at end of file
index 929440e..09a5b46 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xaf23=['hook','exports','events','../../mysqldb','SmsMessage','setMaxListeners','save','remove','emit','hasOwnProperty'];(function(_0xaa950f,_0x5ea43f){var _0x40ec63=function(_0x401e64){while(--_0x401e64){_0xaa950f['push'](_0xaa950f['shift']());}};_0x40ec63(++_0x5ea43f);}(_0xaf23,0x1d8));var _0x3af2=function(_0xe5c531,_0x192403){_0xe5c531=_0xe5c531-0x0;var _0x16c383=_0xaf23[_0xe5c531];return _0x16c383;};'use strict';var EventEmitter=require(_0x3af2('0x0'));var SmsMessage=require(_0x3af2('0x1'))['db'][_0x3af2('0x2')];var SmsMessageEvents=new EventEmitter();SmsMessageEvents[_0x3af2('0x3')](0x0);var events={'afterCreate':_0x3af2('0x4'),'afterUpdate':'update','afterDestroy':_0x3af2('0x5')};function emitEvent(_0xa76a7){return function(_0x4cc967,_0x428341,_0x24c863){SmsMessageEvents[_0x3af2('0x6')](_0xa76a7+':'+_0x4cc967['id'],_0x4cc967);SmsMessageEvents[_0x3af2('0x6')](_0xa76a7,_0x4cc967);_0x24c863(null);};}for(var e in events){if(events[_0x3af2('0x7')](e)){var event=events[e];SmsMessage[_0x3af2('0x8')](e,emitEvent(event));}}module[_0x3af2('0x9')]=SmsMessageEvents;
\ No newline at end of file
+var _0x735d=['save','update','remove','emit','hasOwnProperty','events','../../mysqldb','SmsMessage','setMaxListeners'];(function(_0x552a4d,_0x71057a){var _0x3a3f24=function(_0x4d5fab){while(--_0x4d5fab){_0x552a4d['push'](_0x552a4d['shift']());}};_0x3a3f24(++_0x71057a);}(_0x735d,0x19a));var _0xd735=function(_0x1aed80,_0x3ca6f6){_0x1aed80=_0x1aed80-0x0;var _0x43961e=_0x735d[_0x1aed80];return _0x43961e;};'use strict';var EventEmitter=require(_0xd735('0x0'));var SmsMessage=require(_0xd735('0x1'))['db'][_0xd735('0x2')];var SmsMessageEvents=new EventEmitter();SmsMessageEvents[_0xd735('0x3')](0x0);var events={'afterCreate':_0xd735('0x4'),'afterUpdate':_0xd735('0x5'),'afterDestroy':_0xd735('0x6')};function emitEvent(_0x10ce6e){return function(_0x1e46ac,_0x3a7cb4,_0x4e3886){SmsMessageEvents[_0xd735('0x7')](_0x10ce6e+':'+_0x1e46ac['id'],_0x1e46ac);SmsMessageEvents['emit'](_0x10ce6e,_0x1e46ac);_0x4e3886(null);};}for(var e in events){if(events[_0xd735('0x8')](e)){var event=events[e];SmsMessage['hook'](e,emitEvent(event));}}module['exports']=SmsMessageEvents;
\ No newline at end of file
index 13154b3..39a2e3b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8bdf=['clickSend','Missing\x20parameters:\x20username,\x20password','plivo','authId','remote','token','%s:%s','https://api.plivo.com/v1/Account/%s/Message/','message_uuid','baseUrl','/auth/1/session','application/json','infobip','csc','crypto','apiKey','sender','text','timestamp','keys','sort','length','createHash','md5','digest','hex','signature=','/external/get/send.php?','id_sms','Missing\x20parameters:\x20apiKey','clickatell','https://platform.clickatell.com/messages','uuid','UTF-8','apiMessageId','bandwidth','https://messaging.bandwidth.com/api/v2/users/','accountId','/messages','applicationId','intelepeer','https://api.intelepeer.com/_rest/v4/app/sms/send','Bearer\x20','code','message','https://api.intelepeer.com/_rest/v4/app/sms/mdr','refid','status','Token\x20not\x20received','finally','utf8mb4','lodash','util','../../config/logger','api','moment','request-promise','path','rimraf','../../config/environment','./smsMessage.attributes','exports','SmsMessage','sms_messages','messageId','body','FULLTEXT','models','get','direction','toLowerCase','secret','UserId','SmsInteraction','findOne','SmsInteractionId','then','catch','error','out','SmsAccount','find','type','twilio','accountSid','authToken','messages','phone','/api/sms/messages/','/status?token=','sid','update','afterCreate','inspect','Missing\x20parameters:\x20phone,\x20accountSid\x20or\x20authToken','skebby','username','password','smsMethod','login?username=','GET','sms','POST','user_key','session_key','total_sent','deliveryReport','read','SmsMessage,\x20%s,\x20%s,\x20%s','connectel','senderString','https://smsapi.connectel.se/api/v2/send/','requestid','clicksend','https://rest.clicksend.com/v3/sms/send','format','Basic\x20%s','toString','base64','http_code','data','queued_count','head','message_id'];(function(_0x55e08b,_0x421620){var _0xd1a7ff=function(_0x58c7ff){while(--_0x58c7ff){_0x55e08b['push'](_0x55e08b['shift']());}};_0xd1a7ff(++_0x421620);}(_0x8bdf,0x1a7));var _0xf8bd=function(_0x501510,_0x61caa9){_0x501510=_0x501510-0x0;var _0x1e6ee5=_0x8bdf[_0x501510];return _0x1e6ee5;};'use strict';var _=require(_0xf8bd('0x0'));var util=require(_0xf8bd('0x1'));var logger=require(_0xf8bd('0x2'))(_0xf8bd('0x3'));var moment=require(_0xf8bd('0x4'));var BPromise=require('bluebird');var rp=require(_0xf8bd('0x5'));var fs=require('fs');var path=require(_0xf8bd('0x6'));var rimraf=require(_0xf8bd('0x7'));var config=require(_0xf8bd('0x8'));var attributes=require(_0xf8bd('0x9'));module[_0xf8bd('0xa')]=function(_0x59eff9,_0x4ed701){return _0x59eff9['define'](_0xf8bd('0xb'),attributes,{'tableName':_0xf8bd('0xc'),'paranoid':![],'indexes':[{'name':_0xf8bd('0xd'),'fields':[_0xf8bd('0xd')]},{'name':'fti_sms_messages','fields':[_0xf8bd('0xe')],'type':_0xf8bd('0xf')}],'timestamps':!![],'hooks':{'afterCreate':function(_0x5d59e9,_0x1d1c53,_0x249ace){var _0x53cbc3=_0x59eff9[_0xf8bd('0x10')];var _0x2c99a6=_0x5d59e9[_0xf8bd('0x11')]({'plain':!![]});if(_0x2c99a6[_0xf8bd('0x12')]['toLowerCase']()==='in'||_0x2c99a6[_0xf8bd('0x12')][_0xf8bd('0x13')]()==='out'&&!_0x2c99a6[_0xf8bd('0x14')]&&!_['isNil'](_0x2c99a6[_0xf8bd('0x15')])){_0x53cbc3[_0xf8bd('0x16')][_0xf8bd('0x17')]({'where':{'id':_0x2c99a6[_0xf8bd('0x18')]}})[_0xf8bd('0x19')](function(_0xa0ee74){if(_0xa0ee74){_0xa0ee74['update']({'lastMsgAt':_0x2c99a6['createdAt'],'lastMsgDirection':_0x2c99a6['direction'][_0xf8bd('0x13')]()});}})[_0xf8bd('0x1a')](function(_0x54dc30){console[_0xf8bd('0x1b')](_0x54dc30);});}if(_0x2c99a6[_0xf8bd('0x12')]===_0xf8bd('0x1c')&&!_0x2c99a6[_0xf8bd('0x14')]){var _0x54cf43;_0x53cbc3[_0xf8bd('0x1d')][_0xf8bd('0x1e')]({'where':{'id':_0x2c99a6['SmsAccountId']},'raw':!![]})[_0xf8bd('0x19')](function(_0x1925bc){_0x54cf43=_0x1925bc;if(_0x54cf43&&_0x54cf43[_0xf8bd('0x1f')]){switch(_0x54cf43[_0xf8bd('0x1f')]){case _0xf8bd('0x20'):var _0x1b18db=require('twilio');if(_0x54cf43[_0xf8bd('0x21')]&&_0x54cf43[_0xf8bd('0x22')]&&_0x54cf43['phone']){var _0x116946=new _0x1b18db(_0x54cf43['accountSid'],_0x54cf43[_0xf8bd('0x22')]);_0x116946[_0xf8bd('0x23')]['create']({'body':_0x2c99a6[_0xf8bd('0xe')],'to':_0x2c99a6[_0xf8bd('0x24')],'from':_0x54cf43['phone'],'statusCallback':_0x54cf43['remote']+_0xf8bd('0x25')+_0x2c99a6['id']+_0xf8bd('0x26')+_0x54cf43['token']})[_0xf8bd('0x19')](function(_0x59d0b9){if(_0x59d0b9[_0xf8bd('0x27')]){return _0x5d59e9[_0xf8bd('0x28')]({'messageId':_0x59d0b9['sid']});}})[_0xf8bd('0x1a')](function(_0x4de830){logger[_0xf8bd('0x1b')]('SmsMessage,\x20%s,\x20%s,\x20%s',_0xf8bd('0x29'),'twilio',util[_0xf8bd('0x2a')](_0x4de830,{'showHidden':![],'depth':null}));});}else{logger['error']('SmsMessage,\x20%s,\x20%s,\x20%s',_0xf8bd('0x29'),'twilio',_0xf8bd('0x2b'));}break;case _0xf8bd('0x2c'):var _0x384f2e='https://api.skebby.it/API/v1.0/REST/';if(_0x54cf43[_0xf8bd('0x2d')]&&_0x54cf43[_0xf8bd('0x2e')]){var _0xa3ff13={'recipient':[_0x2c99a6[_0xf8bd('0x24')]],'message':_0x2c99a6['body'],'message_type':_0x54cf43['smsMethod']};if(_0x54cf43[_0xf8bd('0x2f')]&&_0x54cf43['smsMethod']!=='SI'){_0xa3ff13['sender']=_0x54cf43['phone'];}var _0x415eca={'url':_0x384f2e+_0xf8bd('0x30')+_0x54cf43[_0xf8bd('0x2d')]+'&password='+_0x54cf43[_0xf8bd('0x2e')],'method':_0xf8bd('0x31')};rp(_0x415eca)['then'](function(_0x588b4c){var _0xa1e73c=_0x588b4c['split'](';');var _0x257377={'user_key':_0xa1e73c[0x0],'session_key':_0xa1e73c[0x1]};_0x415eca={'url':_0x384f2e+_0xf8bd('0x32'),'method':_0xf8bd('0x33'),'headers':{'user_key':_0x257377[_0xf8bd('0x34')],'Session_key':_0x257377[_0xf8bd('0x35')]},'json':!![],'body':_0xa3ff13};return rp(_0x415eca);})[_0xf8bd('0x19')](function(_0x5b81ef){if(_0x5b81ef[_0xf8bd('0x36')]>=0x1){var _0x2e7144={'messageId':_0x5b81ef['internal_order_id']};if(_0x54cf43['smsMethod']!=='GP'||!_0x54cf43[_0xf8bd('0x37')]){_0x2e7144[_0xf8bd('0x38')]=!![];}return _0x5d59e9['update'](_0x2e7144);}else{return logger[_0xf8bd('0x1b')](_0xf8bd('0x39'),_0xf8bd('0x29'),_0xf8bd('0x2c'),util[_0xf8bd('0x2a')](_0x5b81ef,{'showHidden':![],'depth':null}));}})[_0xf8bd('0x1a')](function(_0x1b1fe7){return logger['error'](_0xf8bd('0x39'),_0xf8bd('0x29'),_0xf8bd('0x2c'),util[_0xf8bd('0x2a')](_0x1b1fe7,{'showHidden':![],'depth':null}));});}else{logger[_0xf8bd('0x1b')](_0xf8bd('0x39'),_0xf8bd('0x29'),'skebby','Missing\x20parameters:\x20username,\x20password');}break;case _0xf8bd('0x3a'):if(_0x54cf43['authToken']){var _0x430ecb={'recipient':_0x2c99a6[_0xf8bd('0x24')],'message':_0x2c99a6[_0xf8bd('0xe')],'sender':_0x54cf43[_0xf8bd('0x3b')]||_0x54cf43[_0xf8bd('0x24')],'authorization':_0x54cf43[_0xf8bd('0x22')]};var _0x1d1c53={'method':_0xf8bd('0x33'),'uri':_0xf8bd('0x3c'),'body':_0x430ecb,'json':!![]};rp(_0x1d1c53)[_0xf8bd('0x19')](function(_0x4e0e7e){var _0x55b92f={'messageId':_0x4e0e7e[_0xf8bd('0x3d')]};if(!_0x54cf43['deliveryReport']){_0x55b92f['read']=!![];}return _0x5d59e9[_0xf8bd('0x28')](_0x55b92f);})['catch'](function(_0x419b20){logger[_0xf8bd('0x1b')](_0xf8bd('0x39'),_0xf8bd('0x29'),_0xf8bd('0x3a'),util[_0xf8bd('0x2a')](_0x419b20,{'showHidden':![],'depth':null}));});}else{logger[_0xf8bd('0x1b')](_0xf8bd('0x39'),_0xf8bd('0x29'),_0xf8bd('0x3a'),'Missing\x20parameters:\x20authToken');}break;case _0xf8bd('0x3e'):if(_0x54cf43[_0xf8bd('0x2d')]&&_0x54cf43[_0xf8bd('0x2e')]){var _0x430ecb={'messages':[{'source':'xCALLY\x20Motion','to':_0x2c99a6[_0xf8bd('0x24')],'body':_0x2c99a6[_0xf8bd('0xe')],'from':_0x54cf43[_0xf8bd('0x3b')]||_0x54cf43[_0xf8bd('0x24')]}]};var _0x78b923=util['format']('%s:%s',_0x54cf43['username'],_0x54cf43['password']);var _0x1d1c53={'method':_0xf8bd('0x33'),'uri':_0xf8bd('0x3f'),'body':_0x430ecb,'headers':{'Authorization':util[_0xf8bd('0x40')](_0xf8bd('0x41'),new Buffer(_0x78b923)[_0xf8bd('0x42')](_0xf8bd('0x43')))},'json':!![]};rp(_0x1d1c53)[_0xf8bd('0x19')](function(_0x491782){if(_0x491782[_0xf8bd('0x44')]>=0xc8&&_0x491782[_0xf8bd('0x44')]<=0xce){if(_0x491782[_0xf8bd('0x45')]&&_0x491782[_0xf8bd('0x45')][_0xf8bd('0x46')]>0x0){var _0x37c175=_[_0xf8bd('0x47')](_0x491782[_0xf8bd('0x45')][_0xf8bd('0x23')]);var _0x542cbf={'messageId':_0x37c175[_0xf8bd('0x48')]};if(!_0x54cf43[_0xf8bd('0x37')]){_0x542cbf[_0xf8bd('0x38')]=!![];}return _0x5d59e9[_0xf8bd('0x28')](_0x542cbf);}else{logger[_0xf8bd('0x1b')](_0xf8bd('0x39'),_0xf8bd('0x29'),'clickSend',util[_0xf8bd('0x2a')](_0x491782,{'showHidden':![],'depth':null}));}}else{logger[_0xf8bd('0x1b')](_0xf8bd('0x39'),'afterCreate',_0xf8bd('0x49'),util['inspect'](_0x491782,{'showHidden':![],'depth':null}));}})[_0xf8bd('0x1a')](function(_0x3cebed){logger[_0xf8bd('0x1b')]('SmsMessage,\x20%s,\x20%s,\x20%s',_0xf8bd('0x29'),_0xf8bd('0x49'),util[_0xf8bd('0x2a')](_0x3cebed,{'showHidden':![],'depth':null}));});}else{logger[_0xf8bd('0x1b')](_0xf8bd('0x39'),_0xf8bd('0x29'),_0xf8bd('0x49'),_0xf8bd('0x4a'));}break;case _0xf8bd('0x4b'):if(_0x54cf43[_0xf8bd('0x4c')]&&_0x54cf43[_0xf8bd('0x22')]){var _0x430ecb={'dst':_0x2c99a6[_0xf8bd('0x24')],'text':_0x2c99a6[_0xf8bd('0xe')],'src':_0x54cf43[_0xf8bd('0x3b')]||_0x54cf43[_0xf8bd('0x24')],'url':_0x54cf43[_0xf8bd('0x4d')]+'/api/sms/messages/'+_0x2c99a6['id']+_0xf8bd('0x26')+_0x54cf43[_0xf8bd('0x4e')]};var _0x78b923=util[_0xf8bd('0x40')](_0xf8bd('0x4f'),_0x54cf43[_0xf8bd('0x4c')],_0x54cf43[_0xf8bd('0x22')]);var _0x1d1c53={'method':_0xf8bd('0x33'),'uri':util['format'](_0xf8bd('0x50'),_0x54cf43[_0xf8bd('0x4c')]),'body':_0x430ecb,'headers':{'Authorization':util[_0xf8bd('0x40')](_0xf8bd('0x41'),new Buffer(_0x78b923)[_0xf8bd('0x42')]('base64'))},'json':!![]};rp(_0x1d1c53)[_0xf8bd('0x19')](function(_0x1d004d){var _0x1e1021={'messageId':_0x1d004d[_0xf8bd('0x51')][0x0]};return _0x5d59e9[_0xf8bd('0x28')](_0x1e1021);})['catch'](function(_0x131505){logger[_0xf8bd('0x1b')](_0xf8bd('0x39'),_0xf8bd('0x29'),_0xf8bd('0x4b'),util['inspect'](_0x131505,{'showHidden':![],'depth':null}));});}else{logger[_0xf8bd('0x1b')]('SmsMessage,\x20%s,\x20%s,\x20%s',_0xf8bd('0x29'),_0xf8bd('0x4b'),'Missing\x20parameters:\x20authId,\x20authToken');}break;case'infobip':if(_0x54cf43['username']&&_0x54cf43['password']){if(_0x54cf43[_0xf8bd('0x52')]){var _0x49db58={'method':_0xf8bd('0x33'),'uri':_0x54cf43[_0xf8bd('0x52')]+_0xf8bd('0x53'),'body':{'username':_0x54cf43['username'],'password':_0x54cf43[_0xf8bd('0x2e')]},'json':!![]};return rp(_0x49db58)[_0xf8bd('0x19')](function(_0x415b00){var _0x17b594={'method':'POST','uri':_0x54cf43['baseUrl']+'/sms/2/text/advanced','body':{'messages':[{'from':_0x54cf43[_0xf8bd('0x24')],'destinations':[{'to':_0x2c99a6[_0xf8bd('0x24')]}],'text':_0x2c99a6[_0xf8bd('0xe')],'notifyUrl':_0x54cf43[_0xf8bd('0x4d')]+_0xf8bd('0x25')+_0x2c99a6['id']+'/status?token='+_0x54cf43[_0xf8bd('0x4e')],'notifyContentType':_0xf8bd('0x54'),'callbackData':_0x54cf43['phone']+';'+_0x2c99a6[_0xf8bd('0xe')]}]},'headers':{'Authorization':'IBSSO\x20'+_0x415b00[_0xf8bd('0x4e')]},'json':!![]};return rp(_0x17b594)[_0xf8bd('0x19')](function(_0x4affc9){if(_0x4affc9[_0xf8bd('0x23')]){var _0x98993b={'messageId':_0x4affc9[_0xf8bd('0x23')][0x0][_0xf8bd('0xd')]};if(!_0x54cf43[_0xf8bd('0x37')]){_0x98993b['read']=!![];}return _0x5d59e9[_0xf8bd('0x28')](_0x98993b);}else{return logger[_0xf8bd('0x1b')](_0xf8bd('0x39'),'afterCreate','infobip',util['inspect'](_0x4affc9,{'showHidden':![],'depth':null}));}});})[_0xf8bd('0x1a')](function(_0x52be0c){return logger['error'](_0xf8bd('0x39'),_0xf8bd('0x29'),_0xf8bd('0x55'),util[_0xf8bd('0x2a')](_0x52be0c,{'showHidden':![],'depth':null}));});}else{logger[_0xf8bd('0x1b')](_0xf8bd('0x39'),_0xf8bd('0x29'),_0xf8bd('0x55'),'Missing\x20parameters:\x20base_url');}}else{logger[_0xf8bd('0x1b')](_0xf8bd('0x39'),_0xf8bd('0x29'),_0xf8bd('0x55'),'Missing\x20parameters:\x20username,\x20password');}break;case _0xf8bd('0x56'):var _0x1fc8be=require(_0xf8bd('0x57'));if(_0x54cf43[_0xf8bd('0x58')]){var _0x14d091={};_0x14d091['login']=_0x54cf43[_0xf8bd('0x2d')];_0x14d091[_0xf8bd('0x24')]=_0x2c99a6[_0xf8bd('0x24')];_0x14d091[_0xf8bd('0x59')]=_0x54cf43[_0xf8bd('0x24')];_0x14d091[_0xf8bd('0x5a')]=_0x2c99a6[_0xf8bd('0xe')];_0x14d091[_0xf8bd('0x5b')]=+new Date();var _0x204dcc='';var _0x1844cd='';var _0x12805f=Object[_0xf8bd('0x5c')](_0x14d091);_0x12805f[_0xf8bd('0x5d')]();for(var _0x24fc79=0x0;_0x24fc79<_0x12805f[_0xf8bd('0x5e')];_0x24fc79++){if(_0x204dcc!=''){_0x204dcc+='&';}_0x204dcc+=_0x12805f[_0x24fc79]+'='+encodeURIComponent(_0x14d091[_0x12805f[_0x24fc79]]);_0x1844cd+=_0x14d091[_0x12805f[_0x24fc79]];}_0x1844cd+=_0x54cf43['apiKey'];_0x1844cd=_0x1fc8be[_0xf8bd('0x5f')](_0xf8bd('0x60'))['update'](_0x1844cd)[_0xf8bd('0x61')](_0xf8bd('0x62'));if(_0x204dcc!==''){_0x204dcc+='&';}_0x204dcc+=_0xf8bd('0x63')+_0x1844cd;var _0x415eca={'method':'GET','uri':_0x54cf43['baseUrl']+_0xf8bd('0x64')+_0x204dcc,'json':!![]};return rp(_0x415eca)[_0xf8bd('0x19')](function(_0x42b092){var _0x1f4ecd=Object['keys'](_0x42b092);if(_0x42b092[_0x1f4ecd[0x0]][_0xf8bd('0x1b')]&&parseInt(_0x42b092[_0x1f4ecd[0x0]][_0xf8bd('0x1b')])===0x0){var _0x4d6aad={'messageId':_0x42b092[_0x1f4ecd[0x0]][_0xf8bd('0x65')]};if(!_0x54cf43[_0xf8bd('0x37')]){_0x4d6aad[_0xf8bd('0x38')]=!![];}return _0x5d59e9[_0xf8bd('0x28')](_0x4d6aad);}else{return logger[_0xf8bd('0x1b')](_0xf8bd('0x39'),_0xf8bd('0x29'),'csc',util[_0xf8bd('0x2a')](_0x42b092['error'],{'showHidden':![],'depth':null}));}})[_0xf8bd('0x1a')](function(_0x1ed0b1){return logger[_0xf8bd('0x1b')]('SmsMessage,\x20%s,\x20%s,\x20%s','afterCreate','csc',util['inspect'](_0x1ed0b1,{'showHidden':![],'depth':null}));});}else{logger[_0xf8bd('0x1b')](_0xf8bd('0x39'),_0xf8bd('0x29'),'csc',_0xf8bd('0x66'));}break;case _0xf8bd('0x67'):if(_0x54cf43['apiKey']){var _0x5eba4a={'method':'POST','uri':_0xf8bd('0x68'),'headers':{'Authorization':_0x54cf43['apiKey']},'body':{'content':_0x2c99a6['body'],'to':[_0x2c99a6[_0xf8bd('0x24')]],'from':_0x54cf43[_0xf8bd('0x24')],'binary':![],'clientMessageId':_0xf8bd('0x69'),'charset':_0xf8bd('0x6a')},'json':!![]};rp(_0x5eba4a)['then'](function(_0x52c4db){if(!_0x52c4db[_0xf8bd('0x1b')]){var _0x43d143={'messageId':_0x52c4db[_0xf8bd('0x23')][0x0][_0xf8bd('0x6b')]};if(!_0x54cf43[_0xf8bd('0x37')]){_0x43d143[_0xf8bd('0x38')]=!![];}return _0x5d59e9[_0xf8bd('0x28')](_0x43d143);}else{return logger[_0xf8bd('0x1b')]('SmsMessage,\x20%s,\x20%s,\x20%s',_0xf8bd('0x29'),'clickatell',util[_0xf8bd('0x2a')](_0x52c4db[_0xf8bd('0x1b')],{'showHidden':![],'depth':null}));}})[_0xf8bd('0x1a')](function(_0x45d73c){return logger['error'](_0xf8bd('0x39'),_0xf8bd('0x29'),_0xf8bd('0x67'),util[_0xf8bd('0x2a')](_0x45d73c,{'showHidden':![],'depth':null}));});}else{logger[_0xf8bd('0x1b')](_0xf8bd('0x39'),'afterCreate',_0xf8bd('0x67'),_0xf8bd('0x66'));}break;case _0xf8bd('0x6c'):if(_0x54cf43['username']&&_0x54cf43[_0xf8bd('0x2e')]){var _0x78b923=util['format'](_0xf8bd('0x4f'),_0x54cf43[_0xf8bd('0x2d')],_0x54cf43['password']);var _0x1d1c53={'method':_0xf8bd('0x33'),'uri':_0xf8bd('0x6d')+_0x54cf43[_0xf8bd('0x6e')]+_0xf8bd('0x6f'),'body':{'to':[_0x2c99a6['phone']],'text':_0x2c99a6['body'],'from':_0x54cf43[_0xf8bd('0x24')],'applicationId':_0x54cf43[_0xf8bd('0x70')]},'headers':{'Authorization':util['format'](_0xf8bd('0x41'),new Buffer(_0x78b923)[_0xf8bd('0x42')]('base64'))},'json':!![]};rp(_0x1d1c53)[_0xf8bd('0x19')](function(_0x1b4598){if(_0x1b4598['id']){var _0x51c68f={'messageId':_0x1b4598['id']};return _0x5d59e9[_0xf8bd('0x28')](_0x51c68f);}else{logger[_0xf8bd('0x1b')](_0xf8bd('0x39'),'afterCreate',_0xf8bd('0x6c'),util['inspect'](_0x1b4598,{'showHidden':![],'depth':null}));}})['catch'](function(_0x206d91){logger['error'](_0xf8bd('0x39'),'afterCreate','bandwidth',util[_0xf8bd('0x2a')](_0x206d91,{'showHidden':![],'depth':null}));});}else{logger[_0xf8bd('0x1b')](_0xf8bd('0x39'),_0xf8bd('0x29'),_0xf8bd('0x6c'),_0xf8bd('0x4a'));}break;case _0xf8bd('0x71'):if(_0x54cf43[_0xf8bd('0x58')]){var _0x5a2414={};var _0x415eca={'method':_0xf8bd('0x33'),'uri':_0xf8bd('0x72'),'headers':{'Authorization':_0xf8bd('0x73')+_0x54cf43[_0xf8bd('0x58')],'Content-Type':_0xf8bd('0x54')},'body':{'from':_0x54cf43[_0xf8bd('0x24')],'to':_0x2c99a6['phone'],'text':_0x2c99a6[_0xf8bd('0xe')]},'json':!![]};return rp(_0x415eca)[_0xf8bd('0x19')](function(_0x10d1f3){if(_0x10d1f3[_0xf8bd('0x74')]==0xca){_0x5a2414[_0xf8bd('0x75')]=_0x10d1f3;var _0x34b720={'method':_0xf8bd('0x33'),'uri':_0xf8bd('0x76'),'headers':{'Authorization':_0xf8bd('0x73')+_0x54cf43[_0xf8bd('0x58')],'Content-Type':_0xf8bd('0x54')},'body':{'refid':_0x5a2414[_0xf8bd('0x75')][_0xf8bd('0x77')]},'json':!![]};return rp(_0x34b720)[_0xf8bd('0x19')](function(_0x64b363){_0x5a2414[_0xf8bd('0x78')]=_0x64b363;var _0x14c838={'messageId':_0x5a2414[_0xf8bd('0x75')][_0xf8bd('0x77')],'read':!![]};return _0x5d59e9[_0xf8bd('0x28')](_0x14c838);});}else{return logger['error'](_0xf8bd('0x39'),_0xf8bd('0x29'),_0xf8bd('0x71'),util[_0xf8bd('0x2a')](_0x10d1f3,{'showHidden':![],'depth':null}));}})[_0xf8bd('0x1a')](function(_0x4c9d6e){return logger[_0xf8bd('0x1b')]('SmsMessage,\x20%s,\x20%s,\x20%s',_0xf8bd('0x29'),'intelepeer',util['inspect'](_0x4c9d6e,{'showHidden':![],'depth':null}));});}else{return logger[_0xf8bd('0x1b')](_0xf8bd('0x39'),_0xf8bd('0x29'),'intelepeer',_0xf8bd('0x79'));}break;}}})[_0xf8bd('0x7a')](function(){_0x249ace();});}else{_0x249ace();}}},'charset':_0xf8bd('0x7b'),'collate':'utf8mb4_unicode_ci'});};
\ No newline at end of file
+var _0x4fdb=['Missing\x20parameters:\x20base_url','csc','login','sender','text','keys','sort','length','apiKey','md5','digest','hex','signature=','/external/get/send.php?','id_sms','https://platform.clickatell.com/messages','UTF-8','apiMessageId','clickatell','bandwidth','https://messaging.bandwidth.com/api/v2/users/','accountId','/messages','intelepeer','code','message','https://api.intelepeer.com/_rest/v4/app/sms/mdr','Bearer\x20','refid','status','Token\x20not\x20received','utf8mb4','utf8mb4_unicode_ci','lodash','util','../../config/logger','api','moment','bluebird','request-promise','path','rimraf','./smsMessage.attributes','SmsMessage','sms_messages','messageId','body','FULLTEXT','models','get','toLowerCase','direction','out','isNil','UserId','SmsInteraction','SmsInteractionId','then','update','createdAt','error','secret','SmsAccount','find','SmsAccountId','twilio','accountSid','authToken','phone','/api/sms/messages/','token','sid','catch','SmsMessage,\x20%s,\x20%s,\x20%s','afterCreate','skebby','https://api.skebby.it/API/v1.0/REST/','password','smsMethod','login?username=','&password=','GET','sms','POST','user_key','session_key','total_sent','internal_order_id','deliveryReport','read','Missing\x20parameters:\x20username,\x20password','https://smsapi.connectel.se/api/v2/send/','requestid','connectel','inspect','Missing\x20parameters:\x20authToken','clicksend','xCALLY\x20Motion','format','username','toString','base64','http_code','data','queued_count','head','message_id','clickSend','plivo','authId','/status?token=','%s:%s','https://api.plivo.com/v1/Account/%s/Message/','Basic\x20%s','message_uuid','Missing\x20parameters:\x20authId,\x20authToken','baseUrl','/auth/1/session','remote','application/json','IBSSO\x20','messages','infobip'];(function(_0x46dce0,_0x2e12a8){var _0x254615=function(_0x172af0){while(--_0x172af0){_0x46dce0['push'](_0x46dce0['shift']());}};_0x254615(++_0x2e12a8);}(_0x4fdb,0x9c));var _0xb4fd=function(_0x2ef08d,_0x5a7b55){_0x2ef08d=_0x2ef08d-0x0;var _0x13943a=_0x4fdb[_0x2ef08d];return _0x13943a;};'use strict';var _=require(_0xb4fd('0x0'));var util=require(_0xb4fd('0x1'));var logger=require(_0xb4fd('0x2'))(_0xb4fd('0x3'));var moment=require(_0xb4fd('0x4'));var BPromise=require(_0xb4fd('0x5'));var rp=require(_0xb4fd('0x6'));var fs=require('fs');var path=require(_0xb4fd('0x7'));var rimraf=require(_0xb4fd('0x8'));var config=require('../../config/environment');var attributes=require(_0xb4fd('0x9'));module['exports']=function(_0x14052b,_0x5d8b39){return _0x14052b['define'](_0xb4fd('0xa'),attributes,{'tableName':_0xb4fd('0xb'),'paranoid':![],'indexes':[{'name':_0xb4fd('0xc'),'fields':['messageId']},{'name':'fti_sms_messages','fields':[_0xb4fd('0xd')],'type':_0xb4fd('0xe')}],'timestamps':!![],'hooks':{'afterCreate':function(_0x18c0f7,_0x4eb1ae,_0x1e1e16){var _0x17ac4b=_0x14052b[_0xb4fd('0xf')];var _0x23b08f=_0x18c0f7[_0xb4fd('0x10')]({'plain':!![]});if(_0x23b08f['direction'][_0xb4fd('0x11')]()==='in'||_0x23b08f[_0xb4fd('0x12')][_0xb4fd('0x11')]()===_0xb4fd('0x13')&&!_0x23b08f['secret']&&!_[_0xb4fd('0x14')](_0x23b08f[_0xb4fd('0x15')])){_0x17ac4b[_0xb4fd('0x16')]['findOne']({'where':{'id':_0x23b08f[_0xb4fd('0x17')]}})[_0xb4fd('0x18')](function(_0xc35d8d){if(_0xc35d8d){_0xc35d8d[_0xb4fd('0x19')]({'lastMsgAt':_0x23b08f[_0xb4fd('0x1a')],'lastMsgDirection':_0x23b08f[_0xb4fd('0x12')][_0xb4fd('0x11')]()});}})['catch'](function(_0x2076d5){console[_0xb4fd('0x1b')](_0x2076d5);});}if(_0x23b08f[_0xb4fd('0x12')]===_0xb4fd('0x13')&&!_0x23b08f[_0xb4fd('0x1c')]){var _0x137e51;_0x17ac4b[_0xb4fd('0x1d')][_0xb4fd('0x1e')]({'where':{'id':_0x23b08f[_0xb4fd('0x1f')]},'raw':!![]})[_0xb4fd('0x18')](function(_0x19f7b0){_0x137e51=_0x19f7b0;if(_0x137e51&&_0x137e51['type']){switch(_0x137e51['type']){case'twilio':var _0x5c14c0=require(_0xb4fd('0x20'));if(_0x137e51[_0xb4fd('0x21')]&&_0x137e51[_0xb4fd('0x22')]&&_0x137e51[_0xb4fd('0x23')]){var _0x458133=new _0x5c14c0(_0x137e51[_0xb4fd('0x21')],_0x137e51[_0xb4fd('0x22')]);_0x458133['messages']['create']({'body':_0x23b08f[_0xb4fd('0xd')],'to':_0x23b08f[_0xb4fd('0x23')],'from':_0x137e51[_0xb4fd('0x23')],'statusCallback':_0x137e51['remote']+_0xb4fd('0x24')+_0x23b08f['id']+'/status?token='+_0x137e51[_0xb4fd('0x25')]})['then'](function(_0x2a9c8c){if(_0x2a9c8c[_0xb4fd('0x26')]){return _0x18c0f7[_0xb4fd('0x19')]({'messageId':_0x2a9c8c[_0xb4fd('0x26')]});}})[_0xb4fd('0x27')](function(_0x456f35){logger[_0xb4fd('0x1b')](_0xb4fd('0x28'),'afterCreate','twilio',util['inspect'](_0x456f35,{'showHidden':![],'depth':null}));});}else{logger[_0xb4fd('0x1b')]('SmsMessage,\x20%s,\x20%s,\x20%s',_0xb4fd('0x29'),'twilio','Missing\x20parameters:\x20phone,\x20accountSid\x20or\x20authToken');}break;case _0xb4fd('0x2a'):var _0x7c5313=_0xb4fd('0x2b');if(_0x137e51['username']&&_0x137e51[_0xb4fd('0x2c')]){var _0x477a53={'recipient':[_0x23b08f[_0xb4fd('0x23')]],'message':_0x23b08f[_0xb4fd('0xd')],'message_type':_0x137e51['smsMethod']};if(_0x137e51[_0xb4fd('0x2d')]&&_0x137e51[_0xb4fd('0x2d')]!=='SI'){_0x477a53['sender']=_0x137e51[_0xb4fd('0x23')];}var _0x57ce81={'url':_0x7c5313+_0xb4fd('0x2e')+_0x137e51['username']+_0xb4fd('0x2f')+_0x137e51[_0xb4fd('0x2c')],'method':_0xb4fd('0x30')};rp(_0x57ce81)['then'](function(_0x55eed3){var _0x4d7a63=_0x55eed3['split'](';');var _0x1eeb9c={'user_key':_0x4d7a63[0x0],'session_key':_0x4d7a63[0x1]};_0x57ce81={'url':_0x7c5313+_0xb4fd('0x31'),'method':_0xb4fd('0x32'),'headers':{'user_key':_0x1eeb9c[_0xb4fd('0x33')],'Session_key':_0x1eeb9c[_0xb4fd('0x34')]},'json':!![],'body':_0x477a53};return rp(_0x57ce81);})[_0xb4fd('0x18')](function(_0xbf95eb){if(_0xbf95eb[_0xb4fd('0x35')]>=0x1){var _0x16a08a={'messageId':_0xbf95eb[_0xb4fd('0x36')]};if(_0x137e51[_0xb4fd('0x2d')]!=='GP'||!_0x137e51[_0xb4fd('0x37')]){_0x16a08a[_0xb4fd('0x38')]=!![];}return _0x18c0f7[_0xb4fd('0x19')](_0x16a08a);}else{return logger[_0xb4fd('0x1b')](_0xb4fd('0x28'),_0xb4fd('0x29'),_0xb4fd('0x2a'),util['inspect'](_0xbf95eb,{'showHidden':![],'depth':null}));}})['catch'](function(_0x930751){return logger[_0xb4fd('0x1b')](_0xb4fd('0x28'),_0xb4fd('0x29'),_0xb4fd('0x2a'),util['inspect'](_0x930751,{'showHidden':![],'depth':null}));});}else{logger[_0xb4fd('0x1b')](_0xb4fd('0x28'),_0xb4fd('0x29'),_0xb4fd('0x2a'),_0xb4fd('0x39'));}break;case'connectel':if(_0x137e51[_0xb4fd('0x22')]){var _0x4bc6b2={'recipient':_0x23b08f[_0xb4fd('0x23')],'message':_0x23b08f[_0xb4fd('0xd')],'sender':_0x137e51['senderString']||_0x137e51['phone'],'authorization':_0x137e51[_0xb4fd('0x22')]};var _0x4eb1ae={'method':_0xb4fd('0x32'),'uri':_0xb4fd('0x3a'),'body':_0x4bc6b2,'json':!![]};rp(_0x4eb1ae)[_0xb4fd('0x18')](function(_0x2718a0){var _0x478cf3={'messageId':_0x2718a0[_0xb4fd('0x3b')]};if(!_0x137e51[_0xb4fd('0x37')]){_0x478cf3['read']=!![];}return _0x18c0f7[_0xb4fd('0x19')](_0x478cf3);})[_0xb4fd('0x27')](function(_0x17e024){logger[_0xb4fd('0x1b')]('SmsMessage,\x20%s,\x20%s,\x20%s',_0xb4fd('0x29'),_0xb4fd('0x3c'),util[_0xb4fd('0x3d')](_0x17e024,{'showHidden':![],'depth':null}));});}else{logger[_0xb4fd('0x1b')](_0xb4fd('0x28'),_0xb4fd('0x29'),'connectel',_0xb4fd('0x3e'));}break;case _0xb4fd('0x3f'):if(_0x137e51['username']&&_0x137e51[_0xb4fd('0x2c')]){var _0x4bc6b2={'messages':[{'source':_0xb4fd('0x40'),'to':_0x23b08f[_0xb4fd('0x23')],'body':_0x23b08f[_0xb4fd('0xd')],'from':_0x137e51['senderString']||_0x137e51[_0xb4fd('0x23')]}]};var _0x671ce5=util[_0xb4fd('0x41')]('%s:%s',_0x137e51[_0xb4fd('0x42')],_0x137e51['password']);var _0x4eb1ae={'method':_0xb4fd('0x32'),'uri':'https://rest.clicksend.com/v3/sms/send','body':_0x4bc6b2,'headers':{'Authorization':util[_0xb4fd('0x41')]('Basic\x20%s',new Buffer(_0x671ce5)[_0xb4fd('0x43')](_0xb4fd('0x44')))},'json':!![]};rp(_0x4eb1ae)[_0xb4fd('0x18')](function(_0x5500ef){if(_0x5500ef[_0xb4fd('0x45')]>=0xc8&&_0x5500ef[_0xb4fd('0x45')]<=0xce){if(_0x5500ef[_0xb4fd('0x46')]&&_0x5500ef[_0xb4fd('0x46')][_0xb4fd('0x47')]>0x0){var _0x3415cd=_[_0xb4fd('0x48')](_0x5500ef['data']['messages']);var _0x1595f2={'messageId':_0x3415cd[_0xb4fd('0x49')]};if(!_0x137e51[_0xb4fd('0x37')]){_0x1595f2[_0xb4fd('0x38')]=!![];}return _0x18c0f7['update'](_0x1595f2);}else{logger[_0xb4fd('0x1b')]('SmsMessage,\x20%s,\x20%s,\x20%s','afterCreate',_0xb4fd('0x4a'),util[_0xb4fd('0x3d')](_0x5500ef,{'showHidden':![],'depth':null}));}}else{logger['error'](_0xb4fd('0x28'),_0xb4fd('0x29'),'clickSend',util[_0xb4fd('0x3d')](_0x5500ef,{'showHidden':![],'depth':null}));}})[_0xb4fd('0x27')](function(_0x3b6014){logger['error']('SmsMessage,\x20%s,\x20%s,\x20%s',_0xb4fd('0x29'),_0xb4fd('0x4a'),util[_0xb4fd('0x3d')](_0x3b6014,{'showHidden':![],'depth':null}));});}else{logger[_0xb4fd('0x1b')]('SmsMessage,\x20%s,\x20%s,\x20%s',_0xb4fd('0x29'),_0xb4fd('0x4a'),'Missing\x20parameters:\x20username,\x20password');}break;case _0xb4fd('0x4b'):if(_0x137e51[_0xb4fd('0x4c')]&&_0x137e51[_0xb4fd('0x22')]){var _0x4bc6b2={'dst':_0x23b08f[_0xb4fd('0x23')],'text':_0x23b08f[_0xb4fd('0xd')],'src':_0x137e51['senderString']||_0x137e51[_0xb4fd('0x23')],'url':_0x137e51['remote']+'/api/sms/messages/'+_0x23b08f['id']+_0xb4fd('0x4d')+_0x137e51[_0xb4fd('0x25')]};var _0x671ce5=util[_0xb4fd('0x41')](_0xb4fd('0x4e'),_0x137e51[_0xb4fd('0x4c')],_0x137e51[_0xb4fd('0x22')]);var _0x4eb1ae={'method':_0xb4fd('0x32'),'uri':util[_0xb4fd('0x41')](_0xb4fd('0x4f'),_0x137e51[_0xb4fd('0x4c')]),'body':_0x4bc6b2,'headers':{'Authorization':util[_0xb4fd('0x41')](_0xb4fd('0x50'),new Buffer(_0x671ce5)[_0xb4fd('0x43')]('base64'))},'json':!![]};rp(_0x4eb1ae)['then'](function(_0x130a5b){var _0x7c85e8={'messageId':_0x130a5b[_0xb4fd('0x51')][0x0]};return _0x18c0f7[_0xb4fd('0x19')](_0x7c85e8);})[_0xb4fd('0x27')](function(_0x5d1625){logger['error'](_0xb4fd('0x28'),_0xb4fd('0x29'),'plivo',util['inspect'](_0x5d1625,{'showHidden':![],'depth':null}));});}else{logger['error'](_0xb4fd('0x28'),_0xb4fd('0x29'),_0xb4fd('0x4b'),_0xb4fd('0x52'));}break;case'infobip':if(_0x137e51['username']&&_0x137e51[_0xb4fd('0x2c')]){if(_0x137e51[_0xb4fd('0x53')]){var _0x22ec0d={'method':'POST','uri':_0x137e51[_0xb4fd('0x53')]+_0xb4fd('0x54'),'body':{'username':_0x137e51[_0xb4fd('0x42')],'password':_0x137e51[_0xb4fd('0x2c')]},'json':!![]};return rp(_0x22ec0d)['then'](function(_0x423112){var _0x16c8e6={'method':'POST','uri':_0x137e51[_0xb4fd('0x53')]+'/sms/2/text/advanced','body':{'messages':[{'from':_0x137e51[_0xb4fd('0x23')],'destinations':[{'to':_0x23b08f['phone']}],'text':_0x23b08f[_0xb4fd('0xd')],'notifyUrl':_0x137e51[_0xb4fd('0x55')]+_0xb4fd('0x24')+_0x23b08f['id']+_0xb4fd('0x4d')+_0x137e51[_0xb4fd('0x25')],'notifyContentType':_0xb4fd('0x56'),'callbackData':_0x137e51[_0xb4fd('0x23')]+';'+_0x23b08f[_0xb4fd('0xd')]}]},'headers':{'Authorization':_0xb4fd('0x57')+_0x423112[_0xb4fd('0x25')]},'json':!![]};return rp(_0x16c8e6)[_0xb4fd('0x18')](function(_0x40882b){if(_0x40882b[_0xb4fd('0x58')]){var _0x454acd={'messageId':_0x40882b['messages'][0x0][_0xb4fd('0xc')]};if(!_0x137e51['deliveryReport']){_0x454acd[_0xb4fd('0x38')]=!![];}return _0x18c0f7['update'](_0x454acd);}else{return logger[_0xb4fd('0x1b')](_0xb4fd('0x28'),_0xb4fd('0x29'),_0xb4fd('0x59'),util['inspect'](_0x40882b,{'showHidden':![],'depth':null}));}});})['catch'](function(_0x23333c){return logger['error'](_0xb4fd('0x28'),_0xb4fd('0x29'),_0xb4fd('0x59'),util['inspect'](_0x23333c,{'showHidden':![],'depth':null}));});}else{logger[_0xb4fd('0x1b')]('SmsMessage,\x20%s,\x20%s,\x20%s',_0xb4fd('0x29'),_0xb4fd('0x59'),_0xb4fd('0x5a'));}}else{logger[_0xb4fd('0x1b')]('SmsMessage,\x20%s,\x20%s,\x20%s',_0xb4fd('0x29'),'infobip',_0xb4fd('0x39'));}break;case _0xb4fd('0x5b'):var _0x28a12c=require('crypto');if(_0x137e51['apiKey']){var _0x571571={};_0x571571[_0xb4fd('0x5c')]=_0x137e51['username'];_0x571571[_0xb4fd('0x23')]=_0x23b08f['phone'];_0x571571[_0xb4fd('0x5d')]=_0x137e51[_0xb4fd('0x23')];_0x571571[_0xb4fd('0x5e')]=_0x23b08f[_0xb4fd('0xd')];_0x571571['timestamp']=+new Date();var _0x216173='';var _0x155942='';var _0x5b4ebe=Object[_0xb4fd('0x5f')](_0x571571);_0x5b4ebe[_0xb4fd('0x60')]();for(var _0x5a2bf1=0x0;_0x5a2bf1<_0x5b4ebe[_0xb4fd('0x61')];_0x5a2bf1++){if(_0x216173!=''){_0x216173+='&';}_0x216173+=_0x5b4ebe[_0x5a2bf1]+'='+encodeURIComponent(_0x571571[_0x5b4ebe[_0x5a2bf1]]);_0x155942+=_0x571571[_0x5b4ebe[_0x5a2bf1]];}_0x155942+=_0x137e51[_0xb4fd('0x62')];_0x155942=_0x28a12c['createHash'](_0xb4fd('0x63'))[_0xb4fd('0x19')](_0x155942)[_0xb4fd('0x64')](_0xb4fd('0x65'));if(_0x216173!==''){_0x216173+='&';}_0x216173+=_0xb4fd('0x66')+_0x155942;var _0x57ce81={'method':'GET','uri':_0x137e51[_0xb4fd('0x53')]+_0xb4fd('0x67')+_0x216173,'json':!![]};return rp(_0x57ce81)[_0xb4fd('0x18')](function(_0xb0c444){var _0x3596f7=Object[_0xb4fd('0x5f')](_0xb0c444);if(_0xb0c444[_0x3596f7[0x0]][_0xb4fd('0x1b')]&&parseInt(_0xb0c444[_0x3596f7[0x0]][_0xb4fd('0x1b')])===0x0){var _0x4042c1={'messageId':_0xb0c444[_0x3596f7[0x0]][_0xb4fd('0x68')]};if(!_0x137e51[_0xb4fd('0x37')]){_0x4042c1[_0xb4fd('0x38')]=!![];}return _0x18c0f7[_0xb4fd('0x19')](_0x4042c1);}else{return logger[_0xb4fd('0x1b')](_0xb4fd('0x28'),'afterCreate',_0xb4fd('0x5b'),util[_0xb4fd('0x3d')](_0xb0c444[_0xb4fd('0x1b')],{'showHidden':![],'depth':null}));}})['catch'](function(_0x462ae3){return logger['error'](_0xb4fd('0x28'),'afterCreate','csc',util['inspect'](_0x462ae3,{'showHidden':![],'depth':null}));});}else{logger[_0xb4fd('0x1b')]('SmsMessage,\x20%s,\x20%s,\x20%s','afterCreate',_0xb4fd('0x5b'),'Missing\x20parameters:\x20apiKey');}break;case'clickatell':if(_0x137e51[_0xb4fd('0x62')]){var _0x53e09a={'method':_0xb4fd('0x32'),'uri':_0xb4fd('0x69'),'headers':{'Authorization':_0x137e51[_0xb4fd('0x62')]},'body':{'content':_0x23b08f[_0xb4fd('0xd')],'to':[_0x23b08f[_0xb4fd('0x23')]],'from':_0x137e51['phone'],'binary':![],'clientMessageId':'uuid','charset':_0xb4fd('0x6a')},'json':!![]};rp(_0x53e09a)[_0xb4fd('0x18')](function(_0x4d44ff){if(!_0x4d44ff[_0xb4fd('0x1b')]){var _0xc5c8b7={'messageId':_0x4d44ff[_0xb4fd('0x58')][0x0][_0xb4fd('0x6b')]};if(!_0x137e51['deliveryReport']){_0xc5c8b7[_0xb4fd('0x38')]=!![];}return _0x18c0f7[_0xb4fd('0x19')](_0xc5c8b7);}else{return logger[_0xb4fd('0x1b')]('SmsMessage,\x20%s,\x20%s,\x20%s',_0xb4fd('0x29'),_0xb4fd('0x6c'),util['inspect'](_0x4d44ff[_0xb4fd('0x1b')],{'showHidden':![],'depth':null}));}})[_0xb4fd('0x27')](function(_0xc171d9){return logger[_0xb4fd('0x1b')](_0xb4fd('0x28'),_0xb4fd('0x29'),_0xb4fd('0x6c'),util[_0xb4fd('0x3d')](_0xc171d9,{'showHidden':![],'depth':null}));});}else{logger[_0xb4fd('0x1b')](_0xb4fd('0x28'),'afterCreate',_0xb4fd('0x6c'),'Missing\x20parameters:\x20apiKey');}break;case _0xb4fd('0x6d'):if(_0x137e51[_0xb4fd('0x42')]&&_0x137e51[_0xb4fd('0x2c')]){var _0x671ce5=util[_0xb4fd('0x41')](_0xb4fd('0x4e'),_0x137e51[_0xb4fd('0x42')],_0x137e51[_0xb4fd('0x2c')]);var _0x4eb1ae={'method':_0xb4fd('0x32'),'uri':_0xb4fd('0x6e')+_0x137e51[_0xb4fd('0x6f')]+_0xb4fd('0x70'),'body':{'to':[_0x23b08f[_0xb4fd('0x23')]],'text':_0x23b08f['body'],'from':_0x137e51[_0xb4fd('0x23')],'applicationId':_0x137e51['applicationId']},'headers':{'Authorization':util[_0xb4fd('0x41')]('Basic\x20%s',new Buffer(_0x671ce5)[_0xb4fd('0x43')]('base64'))},'json':!![]};rp(_0x4eb1ae)[_0xb4fd('0x18')](function(_0x57deab){if(_0x57deab['id']){var _0x3c5042={'messageId':_0x57deab['id']};return _0x18c0f7[_0xb4fd('0x19')](_0x3c5042);}else{logger['error'](_0xb4fd('0x28'),_0xb4fd('0x29'),_0xb4fd('0x6d'),util[_0xb4fd('0x3d')](_0x57deab,{'showHidden':![],'depth':null}));}})[_0xb4fd('0x27')](function(_0x9ead9e){logger[_0xb4fd('0x1b')](_0xb4fd('0x28'),_0xb4fd('0x29'),_0xb4fd('0x6d'),util['inspect'](_0x9ead9e,{'showHidden':![],'depth':null}));});}else{logger[_0xb4fd('0x1b')](_0xb4fd('0x28'),_0xb4fd('0x29'),_0xb4fd('0x6d'),'Missing\x20parameters:\x20username,\x20password');}break;case _0xb4fd('0x71'):if(_0x137e51[_0xb4fd('0x62')]){var _0x228d40={};var _0x57ce81={'method':'POST','uri':'https://api.intelepeer.com/_rest/v4/app/sms/send','headers':{'Authorization':'Bearer\x20'+_0x137e51[_0xb4fd('0x62')],'Content-Type':_0xb4fd('0x56')},'body':{'from':_0x137e51['phone'],'to':_0x23b08f[_0xb4fd('0x23')],'text':_0x23b08f[_0xb4fd('0xd')]},'json':!![]};return rp(_0x57ce81)[_0xb4fd('0x18')](function(_0x4b18f3){if(_0x4b18f3[_0xb4fd('0x72')]==0xca){_0x228d40[_0xb4fd('0x73')]=_0x4b18f3;var _0x2efa1a={'method':_0xb4fd('0x32'),'uri':_0xb4fd('0x74'),'headers':{'Authorization':_0xb4fd('0x75')+_0x137e51['apiKey'],'Content-Type':_0xb4fd('0x56')},'body':{'refid':_0x228d40[_0xb4fd('0x73')][_0xb4fd('0x76')]},'json':!![]};return rp(_0x2efa1a)[_0xb4fd('0x18')](function(_0x5b7898){_0x228d40[_0xb4fd('0x77')]=_0x5b7898;var _0x36241d={'messageId':_0x228d40[_0xb4fd('0x73')][_0xb4fd('0x76')],'read':!![]};return _0x18c0f7[_0xb4fd('0x19')](_0x36241d);});}else{return logger[_0xb4fd('0x1b')](_0xb4fd('0x28'),'afterCreate',_0xb4fd('0x71'),util[_0xb4fd('0x3d')](_0x4b18f3,{'showHidden':![],'depth':null}));}})[_0xb4fd('0x27')](function(_0x8313a8){return logger[_0xb4fd('0x1b')](_0xb4fd('0x28'),_0xb4fd('0x29'),_0xb4fd('0x71'),util[_0xb4fd('0x3d')](_0x8313a8,{'showHidden':![],'depth':null}));});}else{return logger['error'](_0xb4fd('0x28'),_0xb4fd('0x29'),'intelepeer',_0xb4fd('0x78'));}break;}}})['finally'](function(){_0x1e1e16();});}else{_0x1e1e16();}}},'charset':_0xb4fd('0x79'),'collate':_0xb4fd('0x7a')});};
\ No newline at end of file
index a3143b4..dd0b5f4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x22b6=['socket.io-emitter','register','request','then','debug','SmsMessage,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','SmsMessage,\x20%s,\x20%s','message','info','catch','CreateSmsMessage','SmsMessage','create','options','raw','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','http','redis','defaults','localhost'];(function(_0x38def2,_0x3a24bd){var _0x200d57=function(_0x423a59){while(--_0x423a59){_0x38def2['push'](_0x38def2['shift']());}};_0x200d57(++_0x3a24bd);}(_0x22b6,0x132));var _0x622b=function(_0x44b870,_0x31ac6c){_0x44b870=_0x44b870-0x0;var _0x313a73=_0x22b6[_0x44b870];return _0x313a73;};'use strict';var _=require('lodash');var util=require('util');var moment=require(_0x622b('0x0'));var BPromise=require(_0x622b('0x1'));var rs=require(_0x622b('0x2'));var fs=require('fs');var Redis=require(_0x622b('0x3'));var db=require(_0x622b('0x4'))['db'];var utils=require(_0x622b('0x5'));var logger=require(_0x622b('0x6'))(_0x622b('0x7'));var config=require(_0x622b('0x8'));var jayson=require(_0x622b('0x9'));var client=jayson['client'][_0x622b('0xa')]({'port':0x232a});config[_0x622b('0xb')]=_[_0x622b('0xc')](config['redis'],{'host':_0x622b('0xd'),'port':0x18eb});var socket=require(_0x622b('0xe'))(new Redis(config[_0x622b('0xb')]));require('./smsMessage.socket')[_0x622b('0xf')](socket);function respondWithRpcPromise(_0xed20fd,_0x377d34,_0xedfc36){return new BPromise(function(_0x16b172,_0x3db557){return client[_0x622b('0x10')](_0xed20fd,_0xedfc36)[_0x622b('0x11')](function(_0x5224e7){logger['info']('SmsMessage,\x20%s,\x20%s',_0x377d34,'request\x20sent');logger[_0x622b('0x12')](_0x622b('0x13'),_0x377d34,_0x622b('0x14'),JSON[_0x622b('0x15')](_0x5224e7));if(_0x5224e7[_0x622b('0x16')]){if(_0x5224e7[_0x622b('0x16')]['code']===0x1f4){logger['error'](_0x622b('0x17'),_0x377d34,_0x5224e7[_0x622b('0x16')][_0x622b('0x18')]);return _0x3db557(_0x5224e7['error'][_0x622b('0x18')]);}logger['error']('SmsMessage,\x20%s,\x20%s',_0x377d34,_0x5224e7[_0x622b('0x16')]['message']);return _0x16b172(_0x5224e7[_0x622b('0x16')]['message']);}else{logger[_0x622b('0x19')](_0x622b('0x17'),_0x377d34,'request\x20sent');_0x16b172(_0x5224e7['result'][_0x622b('0x18')]);}})[_0x622b('0x1a')](function(_0x513f26){logger[_0x622b('0x16')]('SmsMessage,\x20%s,\x20%s',_0x377d34,_0x513f26);_0x3db557(_0x513f26);});});}exports[_0x622b('0x1b')]=function(_0x47ed49){var _0x4931ab=this;return new Promise(function(_0x2eda2d,_0x4b3e96){return db[_0x622b('0x1c')][_0x622b('0x1d')](_0x47ed49['body'],{'raw':_0x47ed49[_0x622b('0x1e')]?_0x47ed49[_0x622b('0x1e')][_0x622b('0x1f')]===undefined?!![]:![]:!![]})[_0x622b('0x11')](function(_0x5ed275){logger[_0x622b('0x19')]('CreateSmsMessage',_0x47ed49);logger[_0x622b('0x12')](_0x622b('0x1b'),_0x47ed49,JSON[_0x622b('0x15')](_0x5ed275));_0x2eda2d(_0x5ed275);})['catch'](function(_0x4affce){logger[_0x622b('0x16')](_0x622b('0x1b'),_0x4affce['message'],_0x47ed49);_0x4b3e96(_0x4931ab['error'](0x1f4,_0x4affce[_0x622b('0x18')]));});});};
\ No newline at end of file
+var _0x2862=['http','defaults','redis','socket.io-emitter','./smsMessage.socket','register','request','then','info','SmsMessage,\x20%s,\x20%s','debug','request\x20sent','error','message','catch','CreateSmsMessage','SmsMessage','body','options','raw','stringify','lodash','util','moment','bluebird','ioredis','../../mysqldb','../../config/utils','rpc','jayson/promise','client'];(function(_0x59385f,_0x218c19){var _0x3502df=function(_0x80e493){while(--_0x80e493){_0x59385f['push'](_0x59385f['shift']());}};_0x3502df(++_0x218c19);}(_0x2862,0x10d));var _0x2286=function(_0x1f9319,_0x3bfb52){_0x1f9319=_0x1f9319-0x0;var _0x2f8168=_0x2862[_0x1f9319];return _0x2f8168;};'use strict';var _=require(_0x2286('0x0'));var util=require(_0x2286('0x1'));var moment=require(_0x2286('0x2'));var BPromise=require(_0x2286('0x3'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x2286('0x4'));var db=require(_0x2286('0x5'))['db'];var utils=require(_0x2286('0x6'));var logger=require('../../config/logger')(_0x2286('0x7'));var config=require('../../config/environment');var jayson=require(_0x2286('0x8'));var client=jayson[_0x2286('0x9')][_0x2286('0xa')]({'port':0x232a});config['redis']=_[_0x2286('0xb')](config[_0x2286('0xc')],{'host':'localhost','port':0x18eb});var socket=require(_0x2286('0xd'))(new Redis(config[_0x2286('0xc')]));require(_0x2286('0xe'))[_0x2286('0xf')](socket);function respondWithRpcPromise(_0xe038f7,_0x27d706,_0x207c24){return new BPromise(function(_0x4fc536,_0x247df2){return client[_0x2286('0x10')](_0xe038f7,_0x207c24)[_0x2286('0x11')](function(_0x1fa796){logger[_0x2286('0x12')](_0x2286('0x13'),_0x27d706,'request\x20sent');logger[_0x2286('0x14')]('SmsMessage,\x20%s,\x20%s,\x20%s',_0x27d706,_0x2286('0x15'),JSON['stringify'](_0x1fa796));if(_0x1fa796[_0x2286('0x16')]){if(_0x1fa796[_0x2286('0x16')]['code']===0x1f4){logger[_0x2286('0x16')](_0x2286('0x13'),_0x27d706,_0x1fa796[_0x2286('0x16')][_0x2286('0x17')]);return _0x247df2(_0x1fa796['error'][_0x2286('0x17')]);}logger[_0x2286('0x16')](_0x2286('0x13'),_0x27d706,_0x1fa796[_0x2286('0x16')][_0x2286('0x17')]);return _0x4fc536(_0x1fa796[_0x2286('0x16')]['message']);}else{logger[_0x2286('0x12')]('SmsMessage,\x20%s,\x20%s',_0x27d706,_0x2286('0x15'));_0x4fc536(_0x1fa796['result'][_0x2286('0x17')]);}})[_0x2286('0x18')](function(_0x526dcf){logger[_0x2286('0x16')](_0x2286('0x13'),_0x27d706,_0x526dcf);_0x247df2(_0x526dcf);});});}exports[_0x2286('0x19')]=function(_0xb9fbd6){var _0xbb33af=this;return new Promise(function(_0x450f2f,_0x3d4354){return db[_0x2286('0x1a')]['create'](_0xb9fbd6[_0x2286('0x1b')],{'raw':_0xb9fbd6['options']?_0xb9fbd6[_0x2286('0x1c')][_0x2286('0x1d')]===undefined?!![]:![]:!![]})[_0x2286('0x11')](function(_0xfd7eaa){logger[_0x2286('0x12')](_0x2286('0x19'),_0xb9fbd6);logger['debug'](_0x2286('0x19'),_0xb9fbd6,JSON[_0x2286('0x1e')](_0xfd7eaa));_0x450f2f(_0xfd7eaa);})[_0x2286('0x18')](function(_0x4620b2){logger[_0x2286('0x16')]('CreateSmsMessage',_0x4620b2['message'],_0xb9fbd6);_0x3d4354(_0xbb33af[_0x2286('0x16')](0x1f4,_0x4620b2[_0x2286('0x17')]));});});};
\ No newline at end of file
index ec86141..d2dea72 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4419=['length','./smsMessage.events','save','remove','update','register'];(function(_0x4565bf,_0x5ad9d6){var _0x5610ba=function(_0x170988){while(--_0x170988){_0x4565bf['push'](_0x4565bf['shift']());}};_0x5610ba(++_0x5ad9d6);}(_0x4419,0x127));var _0x9441=function(_0x3ebe29,_0x23b3e4){_0x3ebe29=_0x3ebe29-0x0;var _0x447891=_0x4419[_0x3ebe29];return _0x447891;};'use strict';var SmsMessageEvents=require(_0x9441('0x0'));var events=[_0x9441('0x1'),_0x9441('0x2'),_0x9441('0x3')];function createListener(_0x4050f7,_0x507c83){return function(_0xa8289b){_0x507c83['emit'](_0x4050f7,_0xa8289b);};}function removeListener(_0x5d43ca,_0xa609f){return function(){SmsMessageEvents['removeListener'](_0x5d43ca,_0xa609f);};}exports[_0x9441('0x4')]=function(_0x5abc45){for(var _0x3baaf1=0x0,_0x444b02=events[_0x9441('0x5')];_0x3baaf1<_0x444b02;_0x3baaf1++){var _0x316f89=events[_0x3baaf1];var _0x42d8ef=createListener('smsMessage:'+_0x316f89,_0x5abc45);SmsMessageEvents['on'](_0x316f89,_0x42d8ef);}};
\ No newline at end of file
+var _0x6140=['register','length','./smsMessage.events','save','remove','update','emit','removeListener'];(function(_0x2a5883,_0x47b82b){var _0x1639a2=function(_0x39a718){while(--_0x39a718){_0x2a5883['push'](_0x2a5883['shift']());}};_0x1639a2(++_0x47b82b);}(_0x6140,0xe2));var _0x0614=function(_0x4a0b21,_0x1d310d){_0x4a0b21=_0x4a0b21-0x0;var _0xbc48b8=_0x6140[_0x4a0b21];return _0xbc48b8;};'use strict';var SmsMessageEvents=require(_0x0614('0x0'));var events=[_0x0614('0x1'),_0x0614('0x2'),_0x0614('0x3')];function createListener(_0x255aa6,_0x3a69b7){return function(_0x280de6){_0x3a69b7[_0x0614('0x4')](_0x255aa6,_0x280de6);};}function removeListener(_0x11c7b3,_0x3c763c){return function(){SmsMessageEvents[_0x0614('0x5')](_0x11c7b3,_0x3c763c);};}exports[_0x0614('0x6')]=function(_0x457051){for(var _0x1bb0a8=0x0,_0x20086c=events[_0x0614('0x7')];_0x1bb0a8<_0x20086c;_0x1bb0a8++){var _0x9163ea=events[_0x1bb0a8];var _0x1ab4cc=createListener('smsMessage:'+_0x9163ea,_0x457051);SmsMessageEvents['on'](_0x9163ea,_0x1ab4cc);}};
\ No newline at end of file
index 331ae85..57c84ca 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0385=['../../components/interaction/service','../../config/environment','./smsQueue.controller','get','isAuthenticated','index','describe','/:id','show','getMembers','/:id/teams','getTeams','/:id/users','getAgents','post','create','addTeams','addAgents','destroy','removeTeams','delete','removeAgents','exports','multer','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service'];(function(_0x300a77,_0xa9458b){var _0x139ee3=function(_0x3fc548){while(--_0x3fc548){_0x300a77['push'](_0x300a77['shift']());}};_0x139ee3(++_0xa9458b);}(_0x0385,0x74));var _0x5038=function(_0x19b8a1,_0x349bbb){_0x19b8a1=_0x19b8a1-0x0;var _0x2b9fe3=_0x0385[_0x19b8a1];return _0x2b9fe3;};'use strict';var multer=require(_0x5038('0x0'));var util=require(_0x5038('0x1'));var path=require(_0x5038('0x2'));var timeout=require(_0x5038('0x3'));var express=require(_0x5038('0x4'));var router=express[_0x5038('0x5')]();var fs_extra=require(_0x5038('0x6'));var auth=require(_0x5038('0x7'));var interaction=require(_0x5038('0x8'));var config=require(_0x5038('0x9'));var controller=require(_0x5038('0xa'));router[_0x5038('0xb')]('/',auth[_0x5038('0xc')](),controller[_0x5038('0xd')]);router[_0x5038('0xb')]('/describe',auth[_0x5038('0xc')](),controller[_0x5038('0xe')]);router[_0x5038('0xb')](_0x5038('0xf'),auth[_0x5038('0xc')](),controller[_0x5038('0x10')]);router[_0x5038('0xb')]('/:id/members',auth[_0x5038('0xc')](),controller[_0x5038('0x11')]);router[_0x5038('0xb')](_0x5038('0x12'),auth[_0x5038('0xc')](),controller[_0x5038('0x13')]);router['get'](_0x5038('0x14'),auth['isAuthenticated'](),controller[_0x5038('0x15')]);router[_0x5038('0x16')]('/',auth[_0x5038('0xc')](),controller[_0x5038('0x17')]);router[_0x5038('0x16')](_0x5038('0x12'),auth['isAuthenticated'](),controller[_0x5038('0x18')]);router[_0x5038('0x16')]('/:id/users',auth[_0x5038('0xc')](),controller[_0x5038('0x19')]);router['put'](_0x5038('0xf'),auth[_0x5038('0xc')](),controller['update']);router['delete'](_0x5038('0xf'),auth[_0x5038('0xc')](),controller[_0x5038('0x1a')]);router['delete']('/:id/teams',auth[_0x5038('0xc')](),controller[_0x5038('0x1b')]);router[_0x5038('0x1c')]('/:id/users',auth[_0x5038('0xc')](),controller[_0x5038('0x1d')]);module[_0x5038('0x1e')]=router;
\ No newline at end of file
+var _0x6e92=['describe','/:id','getMembers','/:id/teams','getTeams','/:id/users','getAgents','post','addTeams','addAgents','put','update','destroy','delete','removeTeams','removeAgents','exports','util','path','connect-timeout','express','fs-extra','../../components/interaction/service','../../config/environment','get','isAuthenticated','index','/describe'];(function(_0x349284,_0x4ec6ad){var _0x164ee4=function(_0x491806){while(--_0x491806){_0x349284['push'](_0x349284['shift']());}};_0x164ee4(++_0x4ec6ad);}(_0x6e92,0xf1));var _0x26e9=function(_0x1e55d9,_0x5ce14a){_0x1e55d9=_0x1e55d9-0x0;var _0x6dc799=_0x6e92[_0x1e55d9];return _0x6dc799;};'use strict';var multer=require('multer');var util=require(_0x26e9('0x0'));var path=require(_0x26e9('0x1'));var timeout=require(_0x26e9('0x2'));var express=require(_0x26e9('0x3'));var router=express['Router']();var fs_extra=require(_0x26e9('0x4'));var auth=require('../../components/auth/service');var interaction=require(_0x26e9('0x5'));var config=require(_0x26e9('0x6'));var controller=require('./smsQueue.controller');router[_0x26e9('0x7')]('/',auth[_0x26e9('0x8')](),controller[_0x26e9('0x9')]);router[_0x26e9('0x7')](_0x26e9('0xa'),auth[_0x26e9('0x8')](),controller[_0x26e9('0xb')]);router[_0x26e9('0x7')](_0x26e9('0xc'),auth[_0x26e9('0x8')](),controller['show']);router[_0x26e9('0x7')]('/:id/members',auth[_0x26e9('0x8')](),controller[_0x26e9('0xd')]);router[_0x26e9('0x7')](_0x26e9('0xe'),auth['isAuthenticated'](),controller[_0x26e9('0xf')]);router[_0x26e9('0x7')](_0x26e9('0x10'),auth[_0x26e9('0x8')](),controller[_0x26e9('0x11')]);router[_0x26e9('0x12')]('/',auth['isAuthenticated'](),controller['create']);router[_0x26e9('0x12')](_0x26e9('0xe'),auth['isAuthenticated'](),controller[_0x26e9('0x13')]);router[_0x26e9('0x12')](_0x26e9('0x10'),auth[_0x26e9('0x8')](),controller[_0x26e9('0x14')]);router[_0x26e9('0x15')](_0x26e9('0xc'),auth[_0x26e9('0x8')](),controller[_0x26e9('0x16')]);router['delete'](_0x26e9('0xc'),auth[_0x26e9('0x8')](),controller[_0x26e9('0x17')]);router[_0x26e9('0x18')]('/:id/teams',auth[_0x26e9('0x8')](),controller[_0x26e9('0x19')]);router[_0x26e9('0x18')](_0x26e9('0x10'),auth[_0x26e9('0x8')](),controller[_0x26e9('0x1a')]);module[_0x26e9('0x1b')]=router;
\ No newline at end of file
index 64d1e28..643c711 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf79f=['beepall','roundrobin','STRING'];(function(_0x305d8c,_0x153576){var _0x1e6143=function(_0x30913b){while(--_0x30913b){_0x305d8c['push'](_0x305d8c['shift']());}};_0x1e6143(++_0x153576);}(_0xf79f,0x146));var _0xff79=function(_0x330d1f,_0x47c710){_0x330d1f=_0x330d1f-0x0;var _0x1df784=_0xf79f[_0x330d1f];return _0x1df784;};'use strict';var Sequelize=require('sequelize');module['exports']={'name':{'type':Sequelize[_0xff79('0x0')],'unique':'name','validate':{'notEmpty':!![],'is':/^[A-Za-z0-9\.\_]+$/i}},'description':{'type':Sequelize[_0xff79('0x0')]},'timeout':{'type':Sequelize['INTEGER'],'validate':{'min':0x1,'max':0x20c49b}},'strategy':{'type':Sequelize['ENUM']('rrmemory',_0xff79('0x1'),_0xff79('0x2'))}};
\ No newline at end of file
+var _0x685e=['name','INTEGER','roundrobin','exports','STRING'];(function(_0x1b349a,_0x22222c){var _0x5d1f7c=function(_0x368d7c){while(--_0x368d7c){_0x1b349a['push'](_0x1b349a['shift']());}};_0x5d1f7c(++_0x22222c);}(_0x685e,0x10c));var _0xe685=function(_0x3f465d,_0xbd2037){_0x3f465d=_0x3f465d-0x0;var _0x121ad1=_0x685e[_0x3f465d];return _0x121ad1;};'use strict';var Sequelize=require('sequelize');module[_0xe685('0x0')]={'name':{'type':Sequelize[_0xe685('0x1')],'unique':_0xe685('0x2'),'validate':{'notEmpty':!![],'is':/^[A-Za-z0-9\.\_]+$/i}},'description':{'type':Sequelize[_0xe685('0x1')]},'timeout':{'type':Sequelize[_0xe685('0x3')],'validate':{'min':0x1,'max':0x20c49b}},'strategy':{'type':Sequelize['ENUM']('rrmemory','beepall',_0xe685('0x4'))}};
\ No newline at end of file
index db5c2f1..13bb17a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x256e=['../../config/utils','../../config/environment','../../config/license/util','redis','localhost','./smsQueue.socket','register','sendStatus','status','end','json','limit','undefined','count','offset','set','Content-Range','save','update','then','get','SmsQueues','destroy','error','stack','name','send','index','rawAttributes','fieldName','key','model','map','query','filters','intersection','attributes','fields','length','nolimit','order','sort','filter','where','merge','VIRTUAL','options','SmsQueue','include','findAll','rows','catch','show','keys','includeAll','create','body','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','UserProfileSection','find','userProfileId','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','params','describe','getMembers','findOne','hasOwnProperty','SmsQueueId','UserSmsQueue','UserId','agent','smsPause','updatedAt','format','%s/%s','SIP','createdAt','Team','pick','getTeams','addTeams','User','online','interface','flatMap','Agents','sequelize','transaction','each','findOrCreate','forEach','emit','userSmsQueue:save','removeTeams','ids','select','field','tq.TeamId','from','team_has_sms_queues','user_has_teams','ut.TeamId\x20=\x20tq.TeamId','clone','ut.UserId\x20=\x20?','push','toString','QueryTypes','SELECT','includes','all','union','removeAgents','userSmsQueue:remove','addAgents','isArray','getAgents','eml-format','rimraf','zip-dir','fast-json-patch','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'];(function(_0x4ff1e9,_0xce4812){var _0x578903=function(_0x3f9d43){while(--_0x3f9d43){_0x4ff1e9['push'](_0x4ff1e9['shift']());}};_0x578903(++_0xce4812);}(_0x256e,0x105));var _0xe256=function(_0x334dd4,_0x4f27f7){_0x334dd4=_0x334dd4-0x0;var _0xb3c36=_0x256e[_0x334dd4];return _0xb3c36;};'use strict';var emlformat=require(_0xe256('0x0'));var rimraf=require(_0xe256('0x1'));var zipdir=require(_0xe256('0x2'));var jsonpatch=require(_0xe256('0x3'));var rp=require('request-promise');var moment=require(_0xe256('0x4'));var BPromise=require(_0xe256('0x5'));var Mustache=require(_0xe256('0x6'));var util=require('util');var path=require('path');var sox=require(_0xe256('0x7'));var csv=require(_0xe256('0x8'));var ejs=require(_0xe256('0x9'));var fs=require('fs');var fs_extra=require(_0xe256('0xa'));var _=require(_0xe256('0xb'));var squel=require(_0xe256('0xc'));var crypto=require(_0xe256('0xd'));var jsforce=require(_0xe256('0xe'));var deskjs=require(_0xe256('0xf'));var toCsv=require('to-csv');var querystring=require(_0xe256('0x10'));var Papa=require(_0xe256('0x11'));var Redis=require(_0xe256('0x12'));var authService=require(_0xe256('0x13'));var qs=require(_0xe256('0x14'));var as=require(_0xe256('0x15'));var hardwareService=require(_0xe256('0x16'));var logger=require(_0xe256('0x17'))(_0xe256('0x18'));var utils=require(_0xe256('0x19'));var config=require(_0xe256('0x1a'));var licenseUtil=require(_0xe256('0x1b'));var db=require('../../mysqldb')['db'];config[_0xe256('0x1c')]=_['defaults'](config[_0xe256('0x1c')],{'host':_0xe256('0x1d'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0xe256('0x1c')]));require(_0xe256('0x1e'))[_0xe256('0x1f')](socket);function respondWithStatusCode(_0xceece7,_0x4b34ab){_0x4b34ab=_0x4b34ab||0xcc;return function(_0x35361d){if(_0x35361d){return _0xceece7[_0xe256('0x20')](_0x4b34ab);}return _0xceece7[_0xe256('0x21')](_0x4b34ab)[_0xe256('0x22')]();};}function respondWithResult(_0x4b0ef1,_0x2b88cf){_0x2b88cf=_0x2b88cf||0xc8;return function(_0x271737){if(_0x271737){return _0x4b0ef1[_0xe256('0x21')](_0x2b88cf)[_0xe256('0x23')](_0x271737);}};}function respondWithFilteredResult(_0x216e95,_0x141bc5){return function(_0x5966cd){if(_0x5966cd){var _0x3da1ce=typeof _0x141bc5['offset']==='undefined'&&typeof _0x141bc5[_0xe256('0x24')]===_0xe256('0x25');var _0x576abe=_0x5966cd[_0xe256('0x26')];var _0x1aa109=_0x3da1ce?0x0:_0x141bc5[_0xe256('0x27')];var _0xb57b48=_0x3da1ce?_0x5966cd[_0xe256('0x26')]:_0x141bc5[_0xe256('0x27')]+_0x141bc5[_0xe256('0x24')];var _0x17fbfe;if(_0xb57b48>=_0x576abe){_0xb57b48=_0x576abe;_0x17fbfe=0xc8;}else{_0x17fbfe=0xce;}_0x216e95[_0xe256('0x21')](_0x17fbfe);return _0x216e95[_0xe256('0x28')](_0xe256('0x29'),_0x1aa109+'-'+_0xb57b48+'/'+_0x576abe)[_0xe256('0x23')](_0x5966cd);}return null;};}function patchUpdates(_0x1bcc60){return function(_0x4c59de){try{jsonpatch['apply'](_0x4c59de,_0x1bcc60,!![]);}catch(_0x27df88){return BPromise['reject'](_0x27df88);}return _0x4c59de[_0xe256('0x2a')]();};}function saveUpdates(_0x3feb91,_0x5de098){return function(_0x3180b5){if(_0x3180b5){return _0x3180b5[_0xe256('0x2b')](_0x3feb91)[_0xe256('0x2c')](function(_0x45c144){return _0x45c144;});}return null;};}function removeEntity(_0x8f803c,_0x17c279){return function(_0x30096e){if(_0x30096e){return _0x30096e['destroy']()[_0xe256('0x2c')](function(){var _0x51d3fa=_0x30096e[_0xe256('0x2d')]({'plain':!![]});var _0xf9dc69=_0xe256('0x2e');return db['UserProfileResource'][_0xe256('0x2f')]({'where':{'type':_0xf9dc69,'resourceId':_0x51d3fa['id']}})[_0xe256('0x2c')](function(){return _0x30096e;});})[_0xe256('0x2c')](function(){_0x8f803c['status'](0xcc)['end']();});}};}function handleEntityNotFound(_0x388844,_0x33e0b5){return function(_0x29a675){if(!_0x29a675){_0x388844[_0xe256('0x20')](0x194);}return _0x29a675;};}function handleError(_0x2b1194,_0x35b9a7){_0x35b9a7=_0x35b9a7||0x1f4;return function(_0x493454){logger[_0xe256('0x30')](_0x493454[_0xe256('0x31')]);if(_0x493454['name']){delete _0x493454[_0xe256('0x32')];}_0x2b1194['status'](_0x35b9a7)[_0xe256('0x33')](_0x493454);};}exports[_0xe256('0x34')]=function(_0x470eaa,_0x1291ff){var _0x21611b={},_0xa4f831={},_0x1cb334={'count':0x0,'rows':[]};var _0x4822e6=_['map'](db['SmsQueue'][_0xe256('0x35')],function(_0x3bd15d){return{'name':_0x3bd15d[_0xe256('0x36')],'type':_0x3bd15d['type'][_0xe256('0x37')]};});_0xa4f831[_0xe256('0x38')]=_[_0xe256('0x39')](_0x4822e6,_0xe256('0x32'));_0xa4f831[_0xe256('0x3a')]=_['keys'](_0x470eaa['query']);_0xa4f831[_0xe256('0x3b')]=_[_0xe256('0x3c')](_0xa4f831[_0xe256('0x38')],_0xa4f831[_0xe256('0x3a')]);_0x21611b[_0xe256('0x3d')]=_['intersection'](_0xa4f831[_0xe256('0x38')],qs[_0xe256('0x3e')](_0x470eaa['query'][_0xe256('0x3e')]));_0x21611b[_0xe256('0x3d')]=_0x21611b[_0xe256('0x3d')][_0xe256('0x3f')]?_0x21611b[_0xe256('0x3d')]:_0xa4f831[_0xe256('0x38')];if(!_0x470eaa[_0xe256('0x3a')]['hasOwnProperty'](_0xe256('0x40'))){_0x21611b[_0xe256('0x24')]=qs[_0xe256('0x24')](_0x470eaa[_0xe256('0x3a')]['limit']);_0x21611b['offset']=qs['offset'](_0x470eaa[_0xe256('0x3a')][_0xe256('0x27')]);}_0x21611b[_0xe256('0x41')]=qs[_0xe256('0x42')](_0x470eaa['query']['sort']);_0x21611b['where']=qs[_0xe256('0x3b')](_['pick'](_0x470eaa[_0xe256('0x3a')],_0xa4f831[_0xe256('0x3b')]),_0x4822e6);if(_0x470eaa['query'][_0xe256('0x43')]){_0x21611b[_0xe256('0x44')]=_[_0xe256('0x45')](_0x21611b['where'],{'$or':_[_0xe256('0x39')](_0x4822e6,function(_0x155543){if(_0x155543['type']!==_0xe256('0x46')){var _0x58b8f5={};_0x58b8f5[_0x155543['name']]={'$like':'%'+_0x470eaa['query'][_0xe256('0x43')]+'%'};return _0x58b8f5;}})});}_0x21611b=_[_0xe256('0x45')]({},_0x21611b,_0x470eaa[_0xe256('0x47')]);var _0x343e19={'where':_0x21611b[_0xe256('0x44')]};return db[_0xe256('0x48')][_0xe256('0x26')](_0x343e19)[_0xe256('0x2c')](function(_0x4e007b){_0x1cb334['count']=_0x4e007b;if(_0x470eaa[_0xe256('0x3a')]['includeAll']){_0x21611b[_0xe256('0x49')]=[{'all':!![]}];}return db[_0xe256('0x48')][_0xe256('0x4a')](_0x21611b);})[_0xe256('0x2c')](function(_0x168f02){_0x1cb334[_0xe256('0x4b')]=_0x168f02;return _0x1cb334;})[_0xe256('0x2c')](respondWithFilteredResult(_0x1291ff,_0x21611b))[_0xe256('0x4c')](handleError(_0x1291ff,null));};exports[_0xe256('0x4d')]=function(_0x970fc5,_0x385baa){var _0x16346a={'raw':!![],'where':{'id':_0x970fc5['params']['id']}},_0x32ce81={};_0x32ce81[_0xe256('0x38')]=_['keys'](db[_0xe256('0x48')][_0xe256('0x35')]);_0x32ce81[_0xe256('0x3a')]=_[_0xe256('0x4e')](_0x970fc5[_0xe256('0x3a')]);_0x32ce81[_0xe256('0x3b')]=_[_0xe256('0x3c')](_0x32ce81['model'],_0x32ce81[_0xe256('0x3a')]);_0x16346a['attributes']=_[_0xe256('0x3c')](_0x32ce81[_0xe256('0x38')],qs[_0xe256('0x3e')](_0x970fc5[_0xe256('0x3a')][_0xe256('0x3e')]));_0x16346a[_0xe256('0x3d')]=_0x16346a['attributes'][_0xe256('0x3f')]?_0x16346a['attributes']:_0x32ce81[_0xe256('0x38')];if(_0x970fc5['query'][_0xe256('0x4f')]){_0x16346a[_0xe256('0x49')]=[{'all':!![]}];}_0x16346a=_['merge']({},_0x16346a,_0x970fc5['options']);return db[_0xe256('0x48')]['find'](_0x16346a)[_0xe256('0x2c')](handleEntityNotFound(_0x385baa,null))[_0xe256('0x2c')](respondWithResult(_0x385baa,null))[_0xe256('0x4c')](handleError(_0x385baa,null));};exports[_0xe256('0x50')]=function(_0x87cfd5,_0x3b191f){return db[_0xe256('0x48')]['create'](_0x87cfd5[_0xe256('0x51')],{})['then'](function(_0x497708){var _0x44598d=_0x87cfd5[_0xe256('0x52')][_0xe256('0x2d')]({'plain':!![]});if(!_0x44598d)throw new Error(_0xe256('0x53'));if(_0x44598d['role']===_0xe256('0x52')){var _0x34f801=_0x497708[_0xe256('0x2d')]({'plain':!![]});var _0x1b3a9f='SmsQueues';return db[_0xe256('0x54')][_0xe256('0x55')]({'where':{'name':_0x1b3a9f,'userProfileId':_0x44598d[_0xe256('0x56')]},'raw':!![]})['then'](function(_0x2154b5){if(_0x2154b5&&_0x2154b5[_0xe256('0x57')]===0x0){return db['UserProfileResource'][_0xe256('0x50')]({'name':_0x34f801[_0xe256('0x32')],'resourceId':_0x34f801['id'],'type':_0x2154b5[_0xe256('0x32')],'sectionId':_0x2154b5['id']},{})[_0xe256('0x2c')](function(){return _0x497708;});}else{return _0x497708;}})['catch'](function(_0x5ad5fb){logger[_0xe256('0x30')](_0xe256('0x58'),_0x5ad5fb);throw _0x5ad5fb;});}return _0x497708;})[_0xe256('0x2c')](respondWithResult(_0x3b191f,0xc9))['catch'](handleError(_0x3b191f,null));};exports[_0xe256('0x2b')]=function(_0x2f2dc6,_0x4448af){if(_0x2f2dc6[_0xe256('0x51')]['id']){delete _0x2f2dc6[_0xe256('0x51')]['id'];}return db[_0xe256('0x48')][_0xe256('0x55')]({'where':{'id':_0x2f2dc6[_0xe256('0x59')]['id']}})[_0xe256('0x2c')](handleEntityNotFound(_0x4448af,null))['then'](saveUpdates(_0x2f2dc6[_0xe256('0x51')],null))[_0xe256('0x2c')](respondWithResult(_0x4448af,null))['catch'](handleError(_0x4448af,null));};exports[_0xe256('0x2f')]=function(_0x2deb96,_0x3f0ae7){return db[_0xe256('0x48')]['find']({'where':{'id':_0x2deb96[_0xe256('0x59')]['id']}})[_0xe256('0x2c')](handleEntityNotFound(_0x3f0ae7,null))[_0xe256('0x2c')](removeEntity(_0x3f0ae7,null))[_0xe256('0x4c')](handleError(_0x3f0ae7,null));};exports[_0xe256('0x5a')]=function(_0x2d0e18,_0x35df97){return db[_0xe256('0x48')]['describe']()['then'](respondWithResult(_0x35df97,null))[_0xe256('0x4c')](handleError(_0x35df97,null));};exports[_0xe256('0x5b')]=function(_0x45532b,_0x27b1a4,_0x40bbe3){var _0x3fc568={'raw':!![],'where':{}},_0x2ce961={},_0x493c21;return db[_0xe256('0x48')][_0xe256('0x5c')]({'where':{'id':_0x45532b['params']['id']}})[_0xe256('0x2c')](handleEntityNotFound(_0x27b1a4,null))[_0xe256('0x2c')](function(_0x387f14){if(_0x387f14){_0x493c21=_0x387f14[_0xe256('0x2d')]({'plain':!![]});_0x2ce961[_0xe256('0x38')]=_['keys'](db['UserSmsQueue'][_0xe256('0x35')]);_0x2ce961[_0xe256('0x3a')]=_[_0xe256('0x4e')](_0x45532b['query']);_0x2ce961[_0xe256('0x3b')]=_[_0xe256('0x3c')](_0x2ce961[_0xe256('0x38')],_0x2ce961[_0xe256('0x3a')]);_0x3fc568[_0xe256('0x3d')]=_[_0xe256('0x3c')](_0x2ce961[_0xe256('0x38')],qs[_0xe256('0x3e')](_0x45532b['query']['fields']));_0x3fc568[_0xe256('0x3d')]=_0x3fc568[_0xe256('0x3d')][_0xe256('0x3f')]?_0x3fc568[_0xe256('0x3d')]:_0x2ce961['model'];if(!_0x45532b[_0xe256('0x3a')][_0xe256('0x5d')](_0xe256('0x40'))){_0x3fc568[_0xe256('0x24')]=qs['limit'](_0x45532b[_0xe256('0x3a')][_0xe256('0x24')]);_0x3fc568['offset']=qs[_0xe256('0x27')](_0x45532b[_0xe256('0x3a')][_0xe256('0x27')]);}_0x3fc568['order']=qs[_0xe256('0x42')](_0x45532b[_0xe256('0x3a')][_0xe256('0x42')]);_0x3fc568[_0xe256('0x44')]=qs[_0xe256('0x3b')](_['pick'](_0x45532b['query'],_0x2ce961[_0xe256('0x3b')]));_0x3fc568[_0xe256('0x44')][_0xe256('0x5e')]=_0x387f14['id'];if(_0x45532b['query'][_0xe256('0x43')]){_0x3fc568[_0xe256('0x44')]=_[_0xe256('0x45')](_0x3fc568[_0xe256('0x44')],{'$or':_[_0xe256('0x39')](_0x3fc568['attributes'],function(_0x4c3a5b){var _0x1b4de6={};_0x1b4de6[_0x4c3a5b]={'$like':'%'+_0x45532b[_0xe256('0x3a')][_0xe256('0x43')]+'%'};return _0x1b4de6;})});}_0x3fc568=_[_0xe256('0x45')]({},_0x3fc568,_0x45532b[_0xe256('0x47')]);return db[_0xe256('0x5f')][_0xe256('0x4a')](_0x3fc568);}})['then'](function(_0x3f1fae){if(_0x3f1fae){return db['User']['findAndCountAll']({'where':{'id':_[_0xe256('0x39')](_0x3f1fae,_0xe256('0x60')),'role':_0xe256('0x61')},'attributes':['id',_0xe256('0x32'),_0xe256('0x62'),_0xe256('0x63'),'createdAt']});}})[_0xe256('0x2c')](function(_0x5e8ad2){if(_0x5e8ad2){return{'count':_0x5e8ad2[_0xe256('0x26')],'rows':_[_0xe256('0x39')](_0x5e8ad2[_0xe256('0x4b')],function(_0xb08823){return{'membername':_0xb08823[_0xe256('0x32')],'UserId':_0xb08823['id'],'queue_name':_0x493c21[_0xe256('0x32')],'SmsQueueId':_0x493c21['id'],'interface':util[_0xe256('0x64')](_0xe256('0x65'),_0xe256('0x66'),_0xb08823[_0xe256('0x32')]),'penalty':0x0,'paused':_0xb08823[_0xe256('0x62')],'createdAt':_0xb08823[_0xe256('0x67')],'updatedAt':_0xb08823[_0xe256('0x63')]};})};}else{return{'count':0x0,'rows':[]};}})['then'](respondWithFilteredResult(_0x27b1a4,_0x3fc568))['catch'](handleError(_0x27b1a4,null));};exports['getTeams']=function(_0x2cc94f,_0x215b3e,_0x27a43e){var _0x1a160c={};var _0x35f006={};var _0xbdc7a3;var _0x20ab46;return db[_0xe256('0x48')][_0xe256('0x5c')]({'where':{'id':_0x2cc94f[_0xe256('0x59')]['id']}})[_0xe256('0x2c')](handleEntityNotFound(_0x215b3e,null))[_0xe256('0x2c')](function(_0x2d304c){if(_0x2d304c){_0xbdc7a3=_0x2d304c;_0x35f006[_0xe256('0x38')]=_[_0xe256('0x4e')](db[_0xe256('0x68')][_0xe256('0x35')]);_0x35f006[_0xe256('0x3a')]=_['keys'](_0x2cc94f[_0xe256('0x3a')]);_0x35f006[_0xe256('0x3b')]=_[_0xe256('0x3c')](_0x35f006[_0xe256('0x38')],_0x35f006[_0xe256('0x3a')]);_0x1a160c[_0xe256('0x3d')]=_[_0xe256('0x3c')](_0x35f006[_0xe256('0x38')],qs[_0xe256('0x3e')](_0x2cc94f[_0xe256('0x3a')][_0xe256('0x3e')]));_0x1a160c[_0xe256('0x3d')]=_0x1a160c[_0xe256('0x3d')][_0xe256('0x3f')]?_0x1a160c[_0xe256('0x3d')]:_0x35f006[_0xe256('0x38')];_0x1a160c[_0xe256('0x41')]=qs[_0xe256('0x42')](_0x2cc94f['query'][_0xe256('0x42')]);_0x1a160c[_0xe256('0x44')]=qs[_0xe256('0x3b')](_[_0xe256('0x69')](_0x2cc94f[_0xe256('0x3a')],_0x35f006['filters']));if(_0x2cc94f[_0xe256('0x3a')][_0xe256('0x43')]){_0x1a160c[_0xe256('0x44')]=_['merge'](_0x1a160c['where'],{'$or':_[_0xe256('0x39')](_0x1a160c[_0xe256('0x3d')],function(_0x53bb38){var _0x5e6d57={};_0x5e6d57[_0x53bb38]={'$like':'%'+_0x2cc94f[_0xe256('0x3a')][_0xe256('0x43')]+'%'};return _0x5e6d57;})});}_0x1a160c=_['merge']({},_0x1a160c,_0x2cc94f[_0xe256('0x47')]);return _0xbdc7a3[_0xe256('0x6a')](_0x1a160c);}})['then'](function(_0xb58c20){if(_0xb58c20){_0x20ab46=_0xb58c20[_0xe256('0x3f')];if(!_0x2cc94f[_0xe256('0x3a')][_0xe256('0x5d')](_0xe256('0x40'))){_0x1a160c[_0xe256('0x24')]=qs[_0xe256('0x24')](_0x2cc94f[_0xe256('0x3a')]['limit']);_0x1a160c[_0xe256('0x27')]=qs[_0xe256('0x27')](_0x2cc94f[_0xe256('0x3a')][_0xe256('0x27')]);}return _0xbdc7a3['getTeams'](_0x1a160c);}})[_0xe256('0x2c')](function(_0x3135d7){if(_0x3135d7){return _0x3135d7?{'count':_0x20ab46,'rows':_0x3135d7}:null;}})['then'](respondWithResult(_0x215b3e,null))[_0xe256('0x4c')](handleError(_0x215b3e,null));};exports[_0xe256('0x6b')]=function(_0x4aa309,_0x2e9db5,_0xf6a04){var _0x284290=_0x4aa309[_0xe256('0x51')]['ids'];return db[_0xe256('0x68')][_0xe256('0x4a')]({'where':{'id':_0x284290},'attributes':['id'],'include':[{'model':db[_0xe256('0x6c')],'as':'Agents','attributes':['id',_0xe256('0x32'),_0xe256('0x6d'),'voicePause',_0xe256('0x6e')],'raw':!![]}]})[_0xe256('0x2c')](function(_0x30d77b){if(_0x30d77b){var _0x4d356e=_[_0xe256('0x6f')](_0x30d77b,function(_0xd437d){var _0x542b2c=_0xd437d['get']({'plain':!![]});return _0x542b2c[_0xe256('0x70')];});return db['SmsQueue'][_0xe256('0x55')]({'where':{'id':_0x4aa309['params']['id']}})[_0xe256('0x2c')](function(_0x20f8bf){return db[_0xe256('0x71')][_0xe256('0x72')](function(_0x1c39ce){return _0x20f8bf[_0xe256('0x6b')](_0x284290,{'transaction':_0x1c39ce})[_0xe256('0x2c')](function(){return BPromise[_0xe256('0x73')](_0x4d356e,function(_0x37cdb5){return db['UserSmsQueue'][_0xe256('0x74')]({'where':{'UserId':_0x37cdb5['id'],'SmsQueueId':_0x4aa309[_0xe256('0x59')]['id']},'transaction':_0x1c39ce});});})[_0xe256('0x2c')](function(){_0x4d356e[_0xe256('0x75')](function(_0x19ed61){socket[_0xe256('0x76')](_0xe256('0x77'),{'UserId':_0x19ed61['id'],'SmsQueueId':_0x20f8bf['id']});});});});});}})[_0xe256('0x2c')](respondWithStatusCode(_0x2e9db5,null))[_0xe256('0x4c')](handleError(_0x2e9db5,null));};exports[_0xe256('0x78')]=function(_0x2c8719,_0x60358f,_0x58a545){return db[_0xe256('0x68')]['findAll']({'where':{'id':_0x2c8719[_0xe256('0x3a')][_0xe256('0x79')]},'attributes':['id'],'include':[{'model':db[_0xe256('0x6c')],'as':_0xe256('0x70'),'attributes':['id'],'raw':!![]}]})[_0xe256('0x2c')](handleEntityNotFound(_0x60358f,null))[_0xe256('0x2c')](function(_0x32e5c0){var _0x35d9c2=_[_0xe256('0x39')](_0x32e5c0,'id');var _0x443afa=[];var _0x322b81=[];var _0x12cbb6=squel[_0xe256('0x7a')]();_0x12cbb6[_0xe256('0x7b')](_0xe256('0x7c'))[_0xe256('0x7d')](_0xe256('0x7e'),'tq')['join'](_0xe256('0x7f'),'ut',_0xe256('0x80'))['where']('SmsQueueId\x20=\x20?',_0x2c8719['params']['id']);for(var _0x933274=0x0;_0x933274<_0x32e5c0[_0xe256('0x3f')];_0x933274+=0x1){let _0x134d7e=_0x32e5c0[_0x933274];for(var _0x1191eb=0x0;_0x1191eb<_0x134d7e[_0xe256('0x70')][_0xe256('0x3f')];_0x1191eb+=0x1){let _0x6ae11a=_0x134d7e[_0xe256('0x70')][_0x1191eb];var _0x4f9baa=_0x12cbb6[_0xe256('0x81')]();_0x4f9baa['where'](_0xe256('0x82'),_0x6ae11a['id']);_0x322b81[_0xe256('0x83')](db[_0xe256('0x71')]['query'](_0x4f9baa[_0xe256('0x84')](),{'type':db[_0xe256('0x71')][_0xe256('0x85')][_0xe256('0x86')]})[_0xe256('0x2c')](function(_0x53c22a){if(_0x53c22a['length']===0x1){return _0x6ae11a['id'];}else{var _0x170656=_['every'](_[_0xe256('0x39')](_0x53c22a,'TeamId'),function(_0x40dddd){return _[_0xe256('0x87')](_0x35d9c2,_0x40dddd);});if(_0x170656){return _0x6ae11a['id'];}}}));}}return BPromise[_0xe256('0x88')](_0x322b81)['then'](function(_0xb41482){_0x443afa=_(_0x443afa)[_0xe256('0x89')](_0xb41482)['compact']()['value']();return db[_0xe256('0x48')][_0xe256('0x55')]({'where':{'id':_0x2c8719[_0xe256('0x59')]['id']}})[_0xe256('0x2c')](function(_0x1b7018){return db['sequelize'][_0xe256('0x72')](function(_0x2b8457){return _0x1b7018['removeTeams'](_0x2c8719[_0xe256('0x3a')][_0xe256('0x79')],{'transaction':_0x2b8457})['then'](function(){if(!_['isEmpty'](_0x443afa)){return _0x1b7018[_0xe256('0x8a')](_0x443afa,{'transaction':_0x2b8457});}})[_0xe256('0x2c')](function(){_0x443afa[_0xe256('0x75')](function(_0x1f63ef){socket['emit'](_0xe256('0x8b'),{'UserId':_0x1f63ef,'SmsQueueId':_0x1b7018['id']});});});});});});})[_0xe256('0x2c')](respondWithStatusCode(_0x60358f,null))[_0xe256('0x4c')](handleError(_0x60358f,null));};exports['addAgents']=function(_0x5a039e,_0x48c8e6,_0x18d7e0){return db[_0xe256('0x48')][_0xe256('0x55')]({'where':{'id':_0x5a039e[_0xe256('0x59')]['id']}})[_0xe256('0x2c')](handleEntityNotFound(_0x48c8e6,null))[_0xe256('0x2c')](function(_0x50e3d1){if(_0x50e3d1){return _0x50e3d1[_0xe256('0x8c')](_0x5a039e[_0xe256('0x51')]['ids'],_['omit'](_0x5a039e[_0xe256('0x51')],[_0xe256('0x79'),'id'])||{})['spread'](function(_0x1e4668){for(var _0x5519ae=0x0;_0x5519ae<_0x5a039e[_0xe256('0x51')]['ids'][_0xe256('0x3f')];_0x5519ae+=0x1){socket[_0xe256('0x76')](_0xe256('0x77'),{'UserId':Number(_0x5a039e[_0xe256('0x51')][_0xe256('0x79')][_0x5519ae]),'SmsQueueId':Number(_0x5a039e[_0xe256('0x59')]['id'])});}return _0x1e4668;});}})[_0xe256('0x2c')](respondWithResult(_0x48c8e6,null))[_0xe256('0x4c')](handleError(_0x48c8e6,null));};exports[_0xe256('0x8a')]=function(_0x74908c,_0x1d05f3,_0x57f614){return db[_0xe256('0x48')]['find']({'where':{'id':_0x74908c[_0xe256('0x59')]['id']}})['then'](handleEntityNotFound(_0x1d05f3,null))[_0xe256('0x2c')](function(_0x49e166){if(_0x49e166){return _0x49e166[_0xe256('0x8a')](_0x74908c[_0xe256('0x3a')]['ids'])[_0xe256('0x2c')](function(){if(_[_0xe256('0x8d')](_0x74908c['query'][_0xe256('0x79')])){for(var _0x58aea3=0x0;_0x58aea3<_0x74908c[_0xe256('0x3a')][_0xe256('0x79')][_0xe256('0x3f')];_0x58aea3+=0x1){socket[_0xe256('0x76')](_0xe256('0x8b'),{'UserId':Number(_0x74908c['query'][_0xe256('0x79')][_0x58aea3]),'SmsQueueId':Number(_0x74908c[_0xe256('0x59')]['id'])});}}else{socket['emit'](_0xe256('0x8b'),{'UserId':Number(_0x74908c[_0xe256('0x3a')][_0xe256('0x79')]),'SmsQueueId':Number(_0x74908c[_0xe256('0x59')]['id'])});}});}})[_0xe256('0x2c')](respondWithStatusCode(_0x1d05f3,null))[_0xe256('0x4c')](handleError(_0x1d05f3,null));};exports['getAgents']=function(_0x3922fd,_0x106cc3,_0x54ad8b){var _0x441627={};var _0x27fd6b={};var _0x2515cc;var _0x257d3e;return db[_0xe256('0x48')]['findOne']({'where':{'id':_0x3922fd[_0xe256('0x59')]['id']}})[_0xe256('0x2c')](handleEntityNotFound(_0x106cc3,null))[_0xe256('0x2c')](function(_0x5b43f9){if(_0x5b43f9){_0x2515cc=_0x5b43f9;_0x27fd6b[_0xe256('0x38')]=_[_0xe256('0x4e')](db[_0xe256('0x6c')]['rawAttributes']);_0x27fd6b[_0xe256('0x3a')]=_['keys'](_0x3922fd[_0xe256('0x3a')]);_0x27fd6b['filters']=_[_0xe256('0x3c')](_0x27fd6b[_0xe256('0x38')],_0x27fd6b[_0xe256('0x3a')]);_0x441627[_0xe256('0x3d')]=_[_0xe256('0x3c')](_0x27fd6b[_0xe256('0x38')],qs['fields'](_0x3922fd[_0xe256('0x3a')][_0xe256('0x3e')]));_0x441627[_0xe256('0x3d')]=_0x441627[_0xe256('0x3d')][_0xe256('0x3f')]?_0x441627[_0xe256('0x3d')]:_0x27fd6b[_0xe256('0x38')];_0x441627[_0xe256('0x41')]=qs[_0xe256('0x42')](_0x3922fd['query'][_0xe256('0x42')]);_0x441627['where']=qs[_0xe256('0x3b')](_[_0xe256('0x69')](_0x3922fd[_0xe256('0x3a')],_0x27fd6b['filters']));if(_0x3922fd[_0xe256('0x3a')][_0xe256('0x43')]){_0x441627['where']=_[_0xe256('0x45')](_0x441627['where'],{'$or':_[_0xe256('0x39')](_0x441627[_0xe256('0x3d')],function(_0x223439){var _0x3a196a={};_0x3a196a[_0x223439]={'$like':'%'+_0x3922fd[_0xe256('0x3a')]['filter']+'%'};return _0x3a196a;})});}_0x441627=_[_0xe256('0x45')]({},_0x441627,_0x3922fd[_0xe256('0x47')]);return _0x2515cc['getAgents'](_0x441627);}})[_0xe256('0x2c')](function(_0x2d2bdf){if(_0x2d2bdf){_0x257d3e=_0x2d2bdf[_0xe256('0x3f')];if(!_0x3922fd[_0xe256('0x3a')][_0xe256('0x5d')](_0xe256('0x40'))){_0x441627[_0xe256('0x24')]=qs['limit'](_0x3922fd[_0xe256('0x3a')][_0xe256('0x24')]);_0x441627['offset']=qs[_0xe256('0x27')](_0x3922fd[_0xe256('0x3a')][_0xe256('0x27')]);}return _0x2515cc[_0xe256('0x8e')](_0x441627);}})[_0xe256('0x2c')](function(_0x4a4802){if(_0x4a4802){return _0x4a4802?{'count':_0x257d3e,'rows':_0x4a4802}:null;}})[_0xe256('0x2c')](respondWithResult(_0x106cc3,null))[_0xe256('0x4c')](handleError(_0x106cc3,null));};
\ No newline at end of file
+var _0x9953=['role','UserProfileSection','userProfileId','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','update','body','find','params','describe','getMembers','UserSmsQueue','pick','SmsQueueId','User','agent','smsPause','updatedAt','%s/%s','SIP','createdAt','getTeams','findOne','nolimit','addTeams','ids','Team','Agents','online','voicePause','interface','flatMap','transaction','emit','removeTeams','select','field','from','team_has_sms_queues','join','SmsQueueId\x20=\x20?','clone','ut.UserId\x20=\x20?','push','sequelize','toString','QueryTypes','SELECT','every','all','union','compact','removeAgents','userSmsQueue:remove','addAgents','omit','getAgents','rimraf','zip-dir','fast-json-patch','moment','bluebird','mustache','util','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','redis','localhost','socket.io-emitter','register','sendStatus','status','offset','limit','undefined','count','Content-Range','json','then','destroy','get','SmsQueues','UserProfileResource','end','error','stack','name','send','index','SmsQueue','rawAttributes','type','key','model','map','query','keys','filters','intersection','attributes','fields','length','hasOwnProperty','order','sort','filter','where','VIRTUAL','merge','options','includeAll','include','findAll','rows','catch','create','user','Unable\x20to\x20retrieve\x20the\x20current\x20user'];(function(_0x2139fe,_0x3f259f){var _0x4bc055=function(_0xf328f1){while(--_0xf328f1){_0x2139fe['push'](_0x2139fe['shift']());}};_0x4bc055(++_0x3f259f);}(_0x9953,0x1d7));var _0x3995=function(_0x254f73,_0x532104){_0x254f73=_0x254f73-0x0;var _0x472f28=_0x9953[_0x254f73];return _0x472f28;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x3995('0x0'));var zipdir=require(_0x3995('0x1'));var jsonpatch=require(_0x3995('0x2'));var rp=require('request-promise');var moment=require(_0x3995('0x3'));var BPromise=require(_0x3995('0x4'));var Mustache=require(_0x3995('0x5'));var util=require(_0x3995('0x6'));var path=require(_0x3995('0x7'));var sox=require(_0x3995('0x8'));var csv=require('to-csv');var ejs=require(_0x3995('0x9'));var fs=require('fs');var fs_extra=require(_0x3995('0xa'));var _=require(_0x3995('0xb'));var squel=require(_0x3995('0xc'));var crypto=require(_0x3995('0xd'));var jsforce=require(_0x3995('0xe'));var deskjs=require(_0x3995('0xf'));var toCsv=require(_0x3995('0x10'));var querystring=require('querystring');var Papa=require(_0x3995('0x11'));var Redis=require(_0x3995('0x12'));var authService=require(_0x3995('0x13'));var qs=require(_0x3995('0x14'));var as=require(_0x3995('0x15'));var hardwareService=require(_0x3995('0x16'));var logger=require(_0x3995('0x17'))(_0x3995('0x18'));var utils=require(_0x3995('0x19'));var config=require(_0x3995('0x1a'));var licenseUtil=require(_0x3995('0x1b'));var db=require(_0x3995('0x1c'))['db'];config['redis']=_['defaults'](config[_0x3995('0x1d')],{'host':_0x3995('0x1e'),'port':0x18eb});var socket=require(_0x3995('0x1f'))(new Redis(config[_0x3995('0x1d')]));require('./smsQueue.socket')[_0x3995('0x20')](socket);function respondWithStatusCode(_0x2b45e2,_0x594907){_0x594907=_0x594907||0xcc;return function(_0x4cd5d4){if(_0x4cd5d4){return _0x2b45e2[_0x3995('0x21')](_0x594907);}return _0x2b45e2[_0x3995('0x22')](_0x594907)['end']();};}function respondWithResult(_0x2ac176,_0x5bb715){_0x5bb715=_0x5bb715||0xc8;return function(_0x4bf976){if(_0x4bf976){return _0x2ac176[_0x3995('0x22')](_0x5bb715)['json'](_0x4bf976);}};}function respondWithFilteredResult(_0x5d778d,_0x2f2447){return function(_0x7708d3){if(_0x7708d3){var _0x1e5c3b=typeof _0x2f2447[_0x3995('0x23')]==='undefined'&&typeof _0x2f2447[_0x3995('0x24')]===_0x3995('0x25');var _0x54cb15=_0x7708d3['count'];var _0x3ada52=_0x1e5c3b?0x0:_0x2f2447['offset'];var _0x51dffc=_0x1e5c3b?_0x7708d3[_0x3995('0x26')]:_0x2f2447['offset']+_0x2f2447['limit'];var _0x20f6e0;if(_0x51dffc>=_0x54cb15){_0x51dffc=_0x54cb15;_0x20f6e0=0xc8;}else{_0x20f6e0=0xce;}_0x5d778d[_0x3995('0x22')](_0x20f6e0);return _0x5d778d['set'](_0x3995('0x27'),_0x3ada52+'-'+_0x51dffc+'/'+_0x54cb15)[_0x3995('0x28')](_0x7708d3);}return null;};}function patchUpdates(_0x10af79){return function(_0x1ac3e5){try{jsonpatch['apply'](_0x1ac3e5,_0x10af79,!![]);}catch(_0x541a44){return BPromise['reject'](_0x541a44);}return _0x1ac3e5['save']();};}function saveUpdates(_0x9694ca,_0x6f504){return function(_0x1ae58c){if(_0x1ae58c){return _0x1ae58c['update'](_0x9694ca)[_0x3995('0x29')](function(_0x38379c){return _0x38379c;});}return null;};}function removeEntity(_0xd8d5b7,_0x26c11f){return function(_0x1c3ce9){if(_0x1c3ce9){return _0x1c3ce9[_0x3995('0x2a')]()['then'](function(){var _0x185289=_0x1c3ce9[_0x3995('0x2b')]({'plain':!![]});var _0x24d738=_0x3995('0x2c');return db[_0x3995('0x2d')][_0x3995('0x2a')]({'where':{'type':_0x24d738,'resourceId':_0x185289['id']}})['then'](function(){return _0x1c3ce9;});})[_0x3995('0x29')](function(){_0xd8d5b7[_0x3995('0x22')](0xcc)[_0x3995('0x2e')]();});}};}function handleEntityNotFound(_0x17ad01,_0x1c0592){return function(_0x4b252c){if(!_0x4b252c){_0x17ad01[_0x3995('0x21')](0x194);}return _0x4b252c;};}function handleError(_0x3e0f8f,_0xb3e50a){_0xb3e50a=_0xb3e50a||0x1f4;return function(_0x350a48){logger[_0x3995('0x2f')](_0x350a48[_0x3995('0x30')]);if(_0x350a48[_0x3995('0x31')]){delete _0x350a48[_0x3995('0x31')];}_0x3e0f8f[_0x3995('0x22')](_0xb3e50a)[_0x3995('0x32')](_0x350a48);};}exports[_0x3995('0x33')]=function(_0x4e133c,_0x1c3249){var _0x4472ac={},_0x120599={},_0x2bb7a3={'count':0x0,'rows':[]};var _0x5f59cb=_['map'](db[_0x3995('0x34')][_0x3995('0x35')],function(_0xf6d8da){return{'name':_0xf6d8da['fieldName'],'type':_0xf6d8da[_0x3995('0x36')][_0x3995('0x37')]};});_0x120599[_0x3995('0x38')]=_[_0x3995('0x39')](_0x5f59cb,_0x3995('0x31'));_0x120599[_0x3995('0x3a')]=_[_0x3995('0x3b')](_0x4e133c[_0x3995('0x3a')]);_0x120599[_0x3995('0x3c')]=_[_0x3995('0x3d')](_0x120599[_0x3995('0x38')],_0x120599['query']);_0x4472ac[_0x3995('0x3e')]=_[_0x3995('0x3d')](_0x120599[_0x3995('0x38')],qs[_0x3995('0x3f')](_0x4e133c[_0x3995('0x3a')][_0x3995('0x3f')]));_0x4472ac[_0x3995('0x3e')]=_0x4472ac[_0x3995('0x3e')][_0x3995('0x40')]?_0x4472ac[_0x3995('0x3e')]:_0x120599[_0x3995('0x38')];if(!_0x4e133c[_0x3995('0x3a')][_0x3995('0x41')]('nolimit')){_0x4472ac[_0x3995('0x24')]=qs[_0x3995('0x24')](_0x4e133c['query'][_0x3995('0x24')]);_0x4472ac['offset']=qs[_0x3995('0x23')](_0x4e133c[_0x3995('0x3a')][_0x3995('0x23')]);}_0x4472ac[_0x3995('0x42')]=qs['sort'](_0x4e133c[_0x3995('0x3a')][_0x3995('0x43')]);_0x4472ac['where']=qs[_0x3995('0x3c')](_['pick'](_0x4e133c[_0x3995('0x3a')],_0x120599[_0x3995('0x3c')]),_0x5f59cb);if(_0x4e133c[_0x3995('0x3a')][_0x3995('0x44')]){_0x4472ac[_0x3995('0x45')]=_['merge'](_0x4472ac[_0x3995('0x45')],{'$or':_[_0x3995('0x39')](_0x5f59cb,function(_0x1ce32f){if(_0x1ce32f[_0x3995('0x36')]!==_0x3995('0x46')){var _0x5f3ab2={};_0x5f3ab2[_0x1ce32f[_0x3995('0x31')]]={'$like':'%'+_0x4e133c[_0x3995('0x3a')][_0x3995('0x44')]+'%'};return _0x5f3ab2;}})});}_0x4472ac=_[_0x3995('0x47')]({},_0x4472ac,_0x4e133c[_0x3995('0x48')]);var _0x2d7c1c={'where':_0x4472ac['where']};return db['SmsQueue'][_0x3995('0x26')](_0x2d7c1c)[_0x3995('0x29')](function(_0x38f34e){_0x2bb7a3['count']=_0x38f34e;if(_0x4e133c[_0x3995('0x3a')][_0x3995('0x49')]){_0x4472ac[_0x3995('0x4a')]=[{'all':!![]}];}return db[_0x3995('0x34')][_0x3995('0x4b')](_0x4472ac);})[_0x3995('0x29')](function(_0x3e9f29){_0x2bb7a3[_0x3995('0x4c')]=_0x3e9f29;return _0x2bb7a3;})[_0x3995('0x29')](respondWithFilteredResult(_0x1c3249,_0x4472ac))[_0x3995('0x4d')](handleError(_0x1c3249,null));};exports['show']=function(_0x58d83f,_0x187b43){var _0x56e3c6={'raw':!![],'where':{'id':_0x58d83f['params']['id']}},_0x261825={};_0x261825['model']=_[_0x3995('0x3b')](db['SmsQueue'][_0x3995('0x35')]);_0x261825[_0x3995('0x3a')]=_[_0x3995('0x3b')](_0x58d83f[_0x3995('0x3a')]);_0x261825[_0x3995('0x3c')]=_['intersection'](_0x261825[_0x3995('0x38')],_0x261825[_0x3995('0x3a')]);_0x56e3c6[_0x3995('0x3e')]=_[_0x3995('0x3d')](_0x261825[_0x3995('0x38')],qs[_0x3995('0x3f')](_0x58d83f[_0x3995('0x3a')][_0x3995('0x3f')]));_0x56e3c6[_0x3995('0x3e')]=_0x56e3c6[_0x3995('0x3e')][_0x3995('0x40')]?_0x56e3c6[_0x3995('0x3e')]:_0x261825['model'];if(_0x58d83f[_0x3995('0x3a')]['includeAll']){_0x56e3c6[_0x3995('0x4a')]=[{'all':!![]}];}_0x56e3c6=_[_0x3995('0x47')]({},_0x56e3c6,_0x58d83f[_0x3995('0x48')]);return db['SmsQueue']['find'](_0x56e3c6)[_0x3995('0x29')](handleEntityNotFound(_0x187b43,null))['then'](respondWithResult(_0x187b43,null))[_0x3995('0x4d')](handleError(_0x187b43,null));};exports[_0x3995('0x4e')]=function(_0x5ea746,_0x2f5aa3){return db['SmsQueue'][_0x3995('0x4e')](_0x5ea746['body'],{})[_0x3995('0x29')](function(_0x346727){var _0x1f9661=_0x5ea746[_0x3995('0x4f')][_0x3995('0x2b')]({'plain':!![]});if(!_0x1f9661)throw new Error(_0x3995('0x50'));if(_0x1f9661[_0x3995('0x51')]===_0x3995('0x4f')){var _0x13b2bb=_0x346727[_0x3995('0x2b')]({'plain':!![]});var _0x9ee110=_0x3995('0x2c');return db[_0x3995('0x52')]['find']({'where':{'name':_0x9ee110,'userProfileId':_0x1f9661[_0x3995('0x53')]},'raw':!![]})[_0x3995('0x29')](function(_0x5f3e29){if(_0x5f3e29&&_0x5f3e29[_0x3995('0x54')]===0x0){return db[_0x3995('0x2d')]['create']({'name':_0x13b2bb[_0x3995('0x31')],'resourceId':_0x13b2bb['id'],'type':_0x5f3e29['name'],'sectionId':_0x5f3e29['id']},{})[_0x3995('0x29')](function(){return _0x346727;});}else{return _0x346727;}})[_0x3995('0x4d')](function(_0x3910de){logger['error'](_0x3995('0x55'),_0x3910de);throw _0x3910de;});}return _0x346727;})[_0x3995('0x29')](respondWithResult(_0x2f5aa3,0xc9))[_0x3995('0x4d')](handleError(_0x2f5aa3,null));};exports[_0x3995('0x56')]=function(_0x55bc87,_0x46b9df){if(_0x55bc87[_0x3995('0x57')]['id']){delete _0x55bc87['body']['id'];}return db['SmsQueue'][_0x3995('0x58')]({'where':{'id':_0x55bc87[_0x3995('0x59')]['id']}})[_0x3995('0x29')](handleEntityNotFound(_0x46b9df,null))[_0x3995('0x29')](saveUpdates(_0x55bc87[_0x3995('0x57')],null))[_0x3995('0x29')](respondWithResult(_0x46b9df,null))[_0x3995('0x4d')](handleError(_0x46b9df,null));};exports['destroy']=function(_0x2ffdec,_0x3853d2){return db[_0x3995('0x34')][_0x3995('0x58')]({'where':{'id':_0x2ffdec[_0x3995('0x59')]['id']}})[_0x3995('0x29')](handleEntityNotFound(_0x3853d2,null))[_0x3995('0x29')](removeEntity(_0x3853d2,null))[_0x3995('0x4d')](handleError(_0x3853d2,null));};exports['describe']=function(_0xd0208a,_0x343047){return db[_0x3995('0x34')][_0x3995('0x5a')]()[_0x3995('0x29')](respondWithResult(_0x343047,null))['catch'](handleError(_0x343047,null));};exports[_0x3995('0x5b')]=function(_0x48ab18,_0x3b0161,_0xf90a5b){var _0x151b4f={'raw':!![],'where':{}},_0x388675={},_0x518b63;return db[_0x3995('0x34')]['findOne']({'where':{'id':_0x48ab18[_0x3995('0x59')]['id']}})[_0x3995('0x29')](handleEntityNotFound(_0x3b0161,null))['then'](function(_0x347943){if(_0x347943){_0x518b63=_0x347943['get']({'plain':!![]});_0x388675[_0x3995('0x38')]=_[_0x3995('0x3b')](db[_0x3995('0x5c')][_0x3995('0x35')]);_0x388675[_0x3995('0x3a')]=_[_0x3995('0x3b')](_0x48ab18[_0x3995('0x3a')]);_0x388675[_0x3995('0x3c')]=_[_0x3995('0x3d')](_0x388675[_0x3995('0x38')],_0x388675[_0x3995('0x3a')]);_0x151b4f[_0x3995('0x3e')]=_[_0x3995('0x3d')](_0x388675[_0x3995('0x38')],qs[_0x3995('0x3f')](_0x48ab18[_0x3995('0x3a')][_0x3995('0x3f')]));_0x151b4f[_0x3995('0x3e')]=_0x151b4f['attributes'][_0x3995('0x40')]?_0x151b4f[_0x3995('0x3e')]:_0x388675[_0x3995('0x38')];if(!_0x48ab18[_0x3995('0x3a')]['hasOwnProperty']('nolimit')){_0x151b4f[_0x3995('0x24')]=qs[_0x3995('0x24')](_0x48ab18['query']['limit']);_0x151b4f[_0x3995('0x23')]=qs[_0x3995('0x23')](_0x48ab18[_0x3995('0x3a')][_0x3995('0x23')]);}_0x151b4f[_0x3995('0x42')]=qs[_0x3995('0x43')](_0x48ab18[_0x3995('0x3a')][_0x3995('0x43')]);_0x151b4f[_0x3995('0x45')]=qs['filters'](_[_0x3995('0x5d')](_0x48ab18[_0x3995('0x3a')],_0x388675[_0x3995('0x3c')]));_0x151b4f['where'][_0x3995('0x5e')]=_0x347943['id'];if(_0x48ab18[_0x3995('0x3a')][_0x3995('0x44')]){_0x151b4f[_0x3995('0x45')]=_[_0x3995('0x47')](_0x151b4f[_0x3995('0x45')],{'$or':_[_0x3995('0x39')](_0x151b4f[_0x3995('0x3e')],function(_0xc7339c){var _0x5f49c4={};_0x5f49c4[_0xc7339c]={'$like':'%'+_0x48ab18['query']['filter']+'%'};return _0x5f49c4;})});}_0x151b4f=_[_0x3995('0x47')]({},_0x151b4f,_0x48ab18[_0x3995('0x48')]);return db[_0x3995('0x5c')][_0x3995('0x4b')](_0x151b4f);}})[_0x3995('0x29')](function(_0x18b72e){if(_0x18b72e){return db[_0x3995('0x5f')]['findAndCountAll']({'where':{'id':_['map'](_0x18b72e,'UserId'),'role':_0x3995('0x60')},'attributes':['id','name',_0x3995('0x61'),_0x3995('0x62'),'createdAt']});}})['then'](function(_0x38cf5e){if(_0x38cf5e){return{'count':_0x38cf5e[_0x3995('0x26')],'rows':_['map'](_0x38cf5e['rows'],function(_0x58b67f){return{'membername':_0x58b67f[_0x3995('0x31')],'UserId':_0x58b67f['id'],'queue_name':_0x518b63['name'],'SmsQueueId':_0x518b63['id'],'interface':util['format'](_0x3995('0x63'),_0x3995('0x64'),_0x58b67f[_0x3995('0x31')]),'penalty':0x0,'paused':_0x58b67f[_0x3995('0x61')],'createdAt':_0x58b67f[_0x3995('0x65')],'updatedAt':_0x58b67f[_0x3995('0x62')]};})};}else{return{'count':0x0,'rows':[]};}})[_0x3995('0x29')](respondWithFilteredResult(_0x3b0161,_0x151b4f))[_0x3995('0x4d')](handleError(_0x3b0161,null));};exports[_0x3995('0x66')]=function(_0x26b274,_0x3a4306,_0x4075f1){var _0x2330bf={};var _0x1a9600={};var _0x59cd7e;var _0x591b91;return db[_0x3995('0x34')][_0x3995('0x67')]({'where':{'id':_0x26b274[_0x3995('0x59')]['id']}})[_0x3995('0x29')](handleEntityNotFound(_0x3a4306,null))[_0x3995('0x29')](function(_0x97586a){if(_0x97586a){_0x59cd7e=_0x97586a;_0x1a9600[_0x3995('0x38')]=_[_0x3995('0x3b')](db['Team'][_0x3995('0x35')]);_0x1a9600['query']=_[_0x3995('0x3b')](_0x26b274[_0x3995('0x3a')]);_0x1a9600[_0x3995('0x3c')]=_[_0x3995('0x3d')](_0x1a9600['model'],_0x1a9600[_0x3995('0x3a')]);_0x2330bf[_0x3995('0x3e')]=_['intersection'](_0x1a9600[_0x3995('0x38')],qs[_0x3995('0x3f')](_0x26b274['query'][_0x3995('0x3f')]));_0x2330bf[_0x3995('0x3e')]=_0x2330bf['attributes'][_0x3995('0x40')]?_0x2330bf['attributes']:_0x1a9600[_0x3995('0x38')];_0x2330bf['order']=qs[_0x3995('0x43')](_0x26b274[_0x3995('0x3a')][_0x3995('0x43')]);_0x2330bf[_0x3995('0x45')]=qs[_0x3995('0x3c')](_[_0x3995('0x5d')](_0x26b274[_0x3995('0x3a')],_0x1a9600[_0x3995('0x3c')]));if(_0x26b274['query'][_0x3995('0x44')]){_0x2330bf[_0x3995('0x45')]=_['merge'](_0x2330bf[_0x3995('0x45')],{'$or':_['map'](_0x2330bf[_0x3995('0x3e')],function(_0x43c5f9){var _0x5c9c99={};_0x5c9c99[_0x43c5f9]={'$like':'%'+_0x26b274[_0x3995('0x3a')][_0x3995('0x44')]+'%'};return _0x5c9c99;})});}_0x2330bf=_[_0x3995('0x47')]({},_0x2330bf,_0x26b274[_0x3995('0x48')]);return _0x59cd7e['getTeams'](_0x2330bf);}})['then'](function(_0x513049){if(_0x513049){_0x591b91=_0x513049[_0x3995('0x40')];if(!_0x26b274[_0x3995('0x3a')][_0x3995('0x41')](_0x3995('0x68'))){_0x2330bf[_0x3995('0x24')]=qs['limit'](_0x26b274[_0x3995('0x3a')][_0x3995('0x24')]);_0x2330bf[_0x3995('0x23')]=qs[_0x3995('0x23')](_0x26b274[_0x3995('0x3a')][_0x3995('0x23')]);}return _0x59cd7e['getTeams'](_0x2330bf);}})['then'](function(_0x2ce960){if(_0x2ce960){return _0x2ce960?{'count':_0x591b91,'rows':_0x2ce960}:null;}})[_0x3995('0x29')](respondWithResult(_0x3a4306,null))['catch'](handleError(_0x3a4306,null));};exports[_0x3995('0x69')]=function(_0x424c9f,_0x1bbe9c,_0x2df133){var _0x440b07=_0x424c9f[_0x3995('0x57')][_0x3995('0x6a')];return db[_0x3995('0x6b')][_0x3995('0x4b')]({'where':{'id':_0x440b07},'attributes':['id'],'include':[{'model':db['User'],'as':_0x3995('0x6c'),'attributes':['id',_0x3995('0x31'),_0x3995('0x6d'),_0x3995('0x6e'),_0x3995('0x6f')],'raw':!![]}]})[_0x3995('0x29')](function(_0x1a9734){if(_0x1a9734){var _0x4c84be=_[_0x3995('0x70')](_0x1a9734,function(_0x2d379a){var _0x4be035=_0x2d379a[_0x3995('0x2b')]({'plain':!![]});return _0x4be035[_0x3995('0x6c')];});return db[_0x3995('0x34')][_0x3995('0x58')]({'where':{'id':_0x424c9f[_0x3995('0x59')]['id']}})['then'](function(_0x2e0a77){return db['sequelize'][_0x3995('0x71')](function(_0x35e215){return _0x2e0a77['addTeams'](_0x440b07,{'transaction':_0x35e215})[_0x3995('0x29')](function(){return BPromise['each'](_0x4c84be,function(_0x12314e){return db['UserSmsQueue']['findOrCreate']({'where':{'UserId':_0x12314e['id'],'SmsQueueId':_0x424c9f[_0x3995('0x59')]['id']},'transaction':_0x35e215});});})[_0x3995('0x29')](function(){_0x4c84be['forEach'](function(_0x528816){socket[_0x3995('0x72')]('userSmsQueue:save',{'UserId':_0x528816['id'],'SmsQueueId':_0x2e0a77['id']});});});});});}})[_0x3995('0x29')](respondWithStatusCode(_0x1bbe9c,null))['catch'](handleError(_0x1bbe9c,null));};exports[_0x3995('0x73')]=function(_0x2c70f0,_0x3483e4,_0x1a5540){return db['Team'][_0x3995('0x4b')]({'where':{'id':_0x2c70f0[_0x3995('0x3a')][_0x3995('0x6a')]},'attributes':['id'],'include':[{'model':db[_0x3995('0x5f')],'as':_0x3995('0x6c'),'attributes':['id'],'raw':!![]}]})[_0x3995('0x29')](handleEntityNotFound(_0x3483e4,null))[_0x3995('0x29')](function(_0x24ec06){var _0x10c2bd=_[_0x3995('0x39')](_0x24ec06,'id');var _0x5da097=[];var _0x2a0e51=[];var _0x50eb1e=squel[_0x3995('0x74')]();_0x50eb1e[_0x3995('0x75')]('tq.TeamId')[_0x3995('0x76')](_0x3995('0x77'),'tq')[_0x3995('0x78')]('user_has_teams','ut','ut.TeamId\x20=\x20tq.TeamId')[_0x3995('0x45')](_0x3995('0x79'),_0x2c70f0[_0x3995('0x59')]['id']);for(var _0x106028=0x0;_0x106028<_0x24ec06[_0x3995('0x40')];_0x106028+=0x1){let _0xb7232a=_0x24ec06[_0x106028];for(var _0x26d914=0x0;_0x26d914<_0xb7232a['Agents'][_0x3995('0x40')];_0x26d914+=0x1){let _0x364ec0=_0xb7232a[_0x3995('0x6c')][_0x26d914];var _0x4f9e4e=_0x50eb1e[_0x3995('0x7a')]();_0x4f9e4e['where'](_0x3995('0x7b'),_0x364ec0['id']);_0x2a0e51[_0x3995('0x7c')](db[_0x3995('0x7d')][_0x3995('0x3a')](_0x4f9e4e[_0x3995('0x7e')](),{'type':db[_0x3995('0x7d')][_0x3995('0x7f')][_0x3995('0x80')]})[_0x3995('0x29')](function(_0x5bcb94){if(_0x5bcb94[_0x3995('0x40')]===0x1){return _0x364ec0['id'];}else{var _0x5c0994=_[_0x3995('0x81')](_[_0x3995('0x39')](_0x5bcb94,'TeamId'),function(_0x228827){return _['includes'](_0x10c2bd,_0x228827);});if(_0x5c0994){return _0x364ec0['id'];}}}));}}return BPromise[_0x3995('0x82')](_0x2a0e51)['then'](function(_0x3b82f4){_0x5da097=_(_0x5da097)[_0x3995('0x83')](_0x3b82f4)[_0x3995('0x84')]()['value']();return db[_0x3995('0x34')]['find']({'where':{'id':_0x2c70f0[_0x3995('0x59')]['id']}})[_0x3995('0x29')](function(_0x27c01a){return db[_0x3995('0x7d')]['transaction'](function(_0x43143c){return _0x27c01a[_0x3995('0x73')](_0x2c70f0['query']['ids'],{'transaction':_0x43143c})[_0x3995('0x29')](function(){if(!_['isEmpty'](_0x5da097)){return _0x27c01a[_0x3995('0x85')](_0x5da097,{'transaction':_0x43143c});}})[_0x3995('0x29')](function(){_0x5da097['forEach'](function(_0x17e417){socket[_0x3995('0x72')](_0x3995('0x86'),{'UserId':_0x17e417,'SmsQueueId':_0x27c01a['id']});});});});});});})[_0x3995('0x29')](respondWithStatusCode(_0x3483e4,null))['catch'](handleError(_0x3483e4,null));};exports[_0x3995('0x87')]=function(_0x8fd9b1,_0x36f9c7,_0x42b5d7){return db['SmsQueue'][_0x3995('0x58')]({'where':{'id':_0x8fd9b1[_0x3995('0x59')]['id']}})[_0x3995('0x29')](handleEntityNotFound(_0x36f9c7,null))[_0x3995('0x29')](function(_0xf55476){if(_0xf55476){return _0xf55476['addAgents'](_0x8fd9b1[_0x3995('0x57')][_0x3995('0x6a')],_[_0x3995('0x88')](_0x8fd9b1[_0x3995('0x57')],['ids','id'])||{})['spread'](function(_0xcc5523){for(var _0x2eb832=0x0;_0x2eb832<_0x8fd9b1[_0x3995('0x57')][_0x3995('0x6a')][_0x3995('0x40')];_0x2eb832+=0x1){socket[_0x3995('0x72')]('userSmsQueue:save',{'UserId':Number(_0x8fd9b1[_0x3995('0x57')][_0x3995('0x6a')][_0x2eb832]),'SmsQueueId':Number(_0x8fd9b1[_0x3995('0x59')]['id'])});}return _0xcc5523;});}})[_0x3995('0x29')](respondWithResult(_0x36f9c7,null))['catch'](handleError(_0x36f9c7,null));};exports[_0x3995('0x85')]=function(_0xfa715a,_0x3ac77e,_0x58129a){return db['SmsQueue']['find']({'where':{'id':_0xfa715a[_0x3995('0x59')]['id']}})[_0x3995('0x29')](handleEntityNotFound(_0x3ac77e,null))[_0x3995('0x29')](function(_0x2a2aed){if(_0x2a2aed){return _0x2a2aed[_0x3995('0x85')](_0xfa715a[_0x3995('0x3a')][_0x3995('0x6a')])[_0x3995('0x29')](function(){if(_['isArray'](_0xfa715a[_0x3995('0x3a')][_0x3995('0x6a')])){for(var _0x35c162=0x0;_0x35c162<_0xfa715a[_0x3995('0x3a')][_0x3995('0x6a')]['length'];_0x35c162+=0x1){socket[_0x3995('0x72')](_0x3995('0x86'),{'UserId':Number(_0xfa715a['query'][_0x3995('0x6a')][_0x35c162]),'SmsQueueId':Number(_0xfa715a[_0x3995('0x59')]['id'])});}}else{socket[_0x3995('0x72')](_0x3995('0x86'),{'UserId':Number(_0xfa715a['query']['ids']),'SmsQueueId':Number(_0xfa715a[_0x3995('0x59')]['id'])});}});}})[_0x3995('0x29')](respondWithStatusCode(_0x3ac77e,null))[_0x3995('0x4d')](handleError(_0x3ac77e,null));};exports[_0x3995('0x89')]=function(_0x43f801,_0x17693d,_0x422826){var _0x3ca0dd={};var _0x40e2ed={};var _0x3e453c;var _0x3f0c04;return db[_0x3995('0x34')][_0x3995('0x67')]({'where':{'id':_0x43f801[_0x3995('0x59')]['id']}})[_0x3995('0x29')](handleEntityNotFound(_0x17693d,null))[_0x3995('0x29')](function(_0xc1b063){if(_0xc1b063){_0x3e453c=_0xc1b063;_0x40e2ed[_0x3995('0x38')]=_['keys'](db[_0x3995('0x5f')]['rawAttributes']);_0x40e2ed[_0x3995('0x3a')]=_[_0x3995('0x3b')](_0x43f801[_0x3995('0x3a')]);_0x40e2ed[_0x3995('0x3c')]=_['intersection'](_0x40e2ed[_0x3995('0x38')],_0x40e2ed['query']);_0x3ca0dd[_0x3995('0x3e')]=_[_0x3995('0x3d')](_0x40e2ed[_0x3995('0x38')],qs[_0x3995('0x3f')](_0x43f801[_0x3995('0x3a')]['fields']));_0x3ca0dd[_0x3995('0x3e')]=_0x3ca0dd[_0x3995('0x3e')][_0x3995('0x40')]?_0x3ca0dd['attributes']:_0x40e2ed['model'];_0x3ca0dd[_0x3995('0x42')]=qs[_0x3995('0x43')](_0x43f801['query']['sort']);_0x3ca0dd[_0x3995('0x45')]=qs['filters'](_[_0x3995('0x5d')](_0x43f801[_0x3995('0x3a')],_0x40e2ed[_0x3995('0x3c')]));if(_0x43f801[_0x3995('0x3a')]['filter']){_0x3ca0dd[_0x3995('0x45')]=_[_0x3995('0x47')](_0x3ca0dd[_0x3995('0x45')],{'$or':_[_0x3995('0x39')](_0x3ca0dd[_0x3995('0x3e')],function(_0x554526){var _0x274e53={};_0x274e53[_0x554526]={'$like':'%'+_0x43f801['query'][_0x3995('0x44')]+'%'};return _0x274e53;})});}_0x3ca0dd=_[_0x3995('0x47')]({},_0x3ca0dd,_0x43f801[_0x3995('0x48')]);return _0x3e453c[_0x3995('0x89')](_0x3ca0dd);}})[_0x3995('0x29')](function(_0xa70dbf){if(_0xa70dbf){_0x3f0c04=_0xa70dbf[_0x3995('0x40')];if(!_0x43f801[_0x3995('0x3a')]['hasOwnProperty'](_0x3995('0x68'))){_0x3ca0dd['limit']=qs[_0x3995('0x24')](_0x43f801[_0x3995('0x3a')][_0x3995('0x24')]);_0x3ca0dd['offset']=qs[_0x3995('0x23')](_0x43f801[_0x3995('0x3a')][_0x3995('0x23')]);}return _0x3e453c[_0x3995('0x89')](_0x3ca0dd);}})['then'](function(_0x5028a5){if(_0x5028a5){return _0x5028a5?{'count':_0x3f0c04,'rows':_0x5028a5}:null;}})[_0x3995('0x29')](respondWithResult(_0x17693d,null))['catch'](handleError(_0x17693d,null));};
\ No newline at end of file
index ddcbd3a..15c0fc2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9f19=['update','remove','emit','hasOwnProperty','events','../../mysqldb','SmsQueue','setMaxListeners','save'];(function(_0x5d6456,_0x58ecc7){var _0x4d66c1=function(_0x4335e3){while(--_0x4335e3){_0x5d6456['push'](_0x5d6456['shift']());}};_0x4d66c1(++_0x58ecc7);}(_0x9f19,0x199));var _0x99f1=function(_0x4bc165,_0x45c66c){_0x4bc165=_0x4bc165-0x0;var _0x255e9b=_0x9f19[_0x4bc165];return _0x255e9b;};'use strict';var EventEmitter=require(_0x99f1('0x0'));var SmsQueue=require(_0x99f1('0x1'))['db'][_0x99f1('0x2')];var SmsQueueEvents=new EventEmitter();SmsQueueEvents[_0x99f1('0x3')](0x0);var events={'afterCreate':_0x99f1('0x4'),'afterUpdate':_0x99f1('0x5'),'afterDestroy':_0x99f1('0x6')};function emitEvent(_0x5754ca){return function(_0x575661,_0x4521e5,_0x44c893){SmsQueueEvents[_0x99f1('0x7')](_0x5754ca+':'+_0x575661['id'],_0x575661);SmsQueueEvents[_0x99f1('0x7')](_0x5754ca,_0x575661);_0x44c893(null);};}for(var e in events){if(events[_0x99f1('0x8')](e)){var event=events[e];SmsQueue['hook'](e,emitEvent(event));}}module['exports']=SmsQueueEvents;
\ No newline at end of file
+var _0x7e19=['../../mysqldb','setMaxListeners','update','remove','emit','hasOwnProperty','hook','exports'];(function(_0x292911,_0x279a2e){var _0x18dee9=function(_0x43ccf8){while(--_0x43ccf8){_0x292911['push'](_0x292911['shift']());}};_0x18dee9(++_0x279a2e);}(_0x7e19,0x110));var _0x97e1=function(_0x1cd615,_0x1ee1a2){_0x1cd615=_0x1cd615-0x0;var _0x40714c=_0x7e19[_0x1cd615];return _0x40714c;};'use strict';var EventEmitter=require('events');var SmsQueue=require(_0x97e1('0x0'))['db']['SmsQueue'];var SmsQueueEvents=new EventEmitter();SmsQueueEvents[_0x97e1('0x1')](0x0);var events={'afterCreate':'save','afterUpdate':_0x97e1('0x2'),'afterDestroy':_0x97e1('0x3')};function emitEvent(_0x5d1d97){return function(_0x55249a,_0xae9810,_0x4f186f){SmsQueueEvents[_0x97e1('0x4')](_0x5d1d97+':'+_0x55249a['id'],_0x55249a);SmsQueueEvents[_0x97e1('0x4')](_0x5d1d97,_0x55249a);_0x4f186f(null);};}for(var e in events){if(events[_0x97e1('0x5')](e)){var event=events[e];SmsQueue[_0x97e1('0x6')](e,emitEvent(event));}}module[_0x97e1('0x7')]=SmsQueueEvents;
\ No newline at end of file
index 46f0498..9ad350f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8b7f=['bluebird','request-promise','path','./smsQueue.attributes','exports','define','sms_queues','lodash','util','../../config/logger','api','moment'];(function(_0x28d18d,_0x55896b){var _0x470640=function(_0x57e78b){while(--_0x57e78b){_0x28d18d['push'](_0x28d18d['shift']());}};_0x470640(++_0x55896b);}(_0x8b7f,0xd3));var _0xf8b7=function(_0x592fc3,_0x4197fa){_0x592fc3=_0x592fc3-0x0;var _0x1e709d=_0x8b7f[_0x592fc3];return _0x1e709d;};'use strict';var _=require(_0xf8b7('0x0'));var util=require(_0xf8b7('0x1'));var logger=require(_0xf8b7('0x2'))(_0xf8b7('0x3'));var moment=require(_0xf8b7('0x4'));var BPromise=require(_0xf8b7('0x5'));var rp=require(_0xf8b7('0x6'));var fs=require('fs');var path=require(_0xf8b7('0x7'));var rimraf=require('rimraf');var config=require('../../config/environment');var attributes=require(_0xf8b7('0x8'));module[_0xf8b7('0x9')]=function(_0x12359a,_0x37a154){return _0x12359a[_0xf8b7('0xa')]('SmsQueue',attributes,{'tableName':_0xf8b7('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x5ea9=['moment','bluebird','request-promise','path','./smsQueue.attributes','exports','SmsQueue','sms_queues','lodash','util','../../config/logger'];(function(_0x57d3f1,_0x11b0b4){var _0x4e19b1=function(_0x4f6e09){while(--_0x4f6e09){_0x57d3f1['push'](_0x57d3f1['shift']());}};_0x4e19b1(++_0x11b0b4);}(_0x5ea9,0x194));var _0x95ea=function(_0x5a57a3,_0x2a7018){_0x5a57a3=_0x5a57a3-0x0;var _0x2ef960=_0x5ea9[_0x5a57a3];return _0x2ef960;};'use strict';var _=require(_0x95ea('0x0'));var util=require(_0x95ea('0x1'));var logger=require(_0x95ea('0x2'))('api');var moment=require(_0x95ea('0x3'));var BPromise=require(_0x95ea('0x4'));var rp=require(_0x95ea('0x5'));var fs=require('fs');var path=require(_0x95ea('0x6'));var rimraf=require('rimraf');var config=require('../../config/environment');var attributes=require(_0x95ea('0x7'));module[_0x95ea('0x8')]=function(_0x24acdf,_0xbf8a95){return _0x24acdf['define'](_0x95ea('0x9'),attributes,{'tableName':_0x95ea('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index f7ecd89..47479ea 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x221e=['SmsQueue,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','code','message','result','GetSmsQueue','findAll','options','where','attributes','limit','map','include','model','catch','ShowSmsQueue','SmsQueue','find','raw','lodash','util','bluebird','ioredis','../../mysqldb','../../config/utils','rpc','../../config/environment','jayson/promise','client','http','redis','defaults','socket.io-emitter','./smsQueue.socket','request','then','info','SmsQueue,\x20%s,\x20%s','debug'];(function(_0x42cae2,_0x284ef8){var _0x5f256f=function(_0x41abc8){while(--_0x41abc8){_0x42cae2['push'](_0x42cae2['shift']());}};_0x5f256f(++_0x284ef8);}(_0x221e,0x1d8));var _0xe221=function(_0x39096d,_0x51f8a0){_0x39096d=_0x39096d-0x0;var _0x13da4f=_0x221e[_0x39096d];return _0x13da4f;};'use strict';var _=require(_0xe221('0x0'));var util=require(_0xe221('0x1'));var moment=require('moment');var BPromise=require(_0xe221('0x2'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0xe221('0x3'));var db=require(_0xe221('0x4'))['db'];var utils=require(_0xe221('0x5'));var logger=require('../../config/logger')(_0xe221('0x6'));var config=require(_0xe221('0x7'));var jayson=require(_0xe221('0x8'));var client=jayson[_0xe221('0x9')][_0xe221('0xa')]({'port':0x232a});config[_0xe221('0xb')]=_[_0xe221('0xc')](config[_0xe221('0xb')],{'host':'localhost','port':0x18eb});var socket=require(_0xe221('0xd'))(new Redis(config[_0xe221('0xb')]));require(_0xe221('0xe'))['register'](socket);function respondWithRpcPromise(_0x57b0f2,_0x13c5aa,_0x3e189b){return new BPromise(function(_0x4e3824,_0x2aec7e){return client[_0xe221('0xf')](_0x57b0f2,_0x3e189b)[_0xe221('0x10')](function(_0xf1cae6){logger[_0xe221('0x11')](_0xe221('0x12'),_0x13c5aa,'request\x20sent');logger[_0xe221('0x13')](_0xe221('0x14'),_0x13c5aa,_0xe221('0x15'),JSON[_0xe221('0x16')](_0xf1cae6));if(_0xf1cae6[_0xe221('0x17')]){if(_0xf1cae6[_0xe221('0x17')][_0xe221('0x18')]===0x1f4){logger[_0xe221('0x17')](_0xe221('0x12'),_0x13c5aa,_0xf1cae6['error'][_0xe221('0x19')]);return _0x2aec7e(_0xf1cae6['error'][_0xe221('0x19')]);}logger['error']('SmsQueue,\x20%s,\x20%s',_0x13c5aa,_0xf1cae6[_0xe221('0x17')][_0xe221('0x19')]);return _0x4e3824(_0xf1cae6['error']['message']);}else{logger[_0xe221('0x11')](_0xe221('0x12'),_0x13c5aa,_0xe221('0x15'));_0x4e3824(_0xf1cae6[_0xe221('0x1a')][_0xe221('0x19')]);}})['catch'](function(_0x582843){logger['error'](_0xe221('0x12'),_0x13c5aa,_0x582843);_0x2aec7e(_0x582843);});});}exports[_0xe221('0x1b')]=function(_0x2dd89d){var _0xd6d698=this;return new Promise(function(_0x145678,_0x38bc8c){return db['SmsQueue'][_0xe221('0x1c')]({'raw':_0x2dd89d[_0xe221('0x1d')]?_0x2dd89d[_0xe221('0x1d')]['raw']===undefined?!![]:![]:!![],'where':_0x2dd89d[_0xe221('0x1d')]?_0x2dd89d[_0xe221('0x1d')][_0xe221('0x1e')]||null:null,'attributes':_0x2dd89d['options']?_0x2dd89d['options'][_0xe221('0x1f')]||null:null,'limit':_0x2dd89d[_0xe221('0x1d')]?_0x2dd89d['options'][_0xe221('0x20')]||null:null,'include':_0x2dd89d['options']?_0x2dd89d[_0xe221('0x1d')]['include']?_[_0xe221('0x21')](_0x2dd89d[_0xe221('0x1d')][_0xe221('0x22')],function(_0x14ddd7){return{'model':db[_0x14ddd7[_0xe221('0x23')]],'as':_0x14ddd7['as'],'attributes':_0x14ddd7[_0xe221('0x1f')],'include':_0x14ddd7[_0xe221('0x22')]?_[_0xe221('0x21')](_0x14ddd7['include'],function(_0x52a0ce){return{'model':db[_0x52a0ce[_0xe221('0x23')]],'as':_0x52a0ce['as'],'attributes':_0x52a0ce[_0xe221('0x1f')],'include':_0x52a0ce['include']?_['map'](_0x52a0ce[_0xe221('0x22')],function(_0x433b9f){return{'model':db[_0x433b9f['model']],'as':_0x433b9f['as'],'attributes':_0x433b9f['attributes']};}):[]};}):[]};}):[]:[]})[_0xe221('0x10')](function(_0x2c68b0){logger[_0xe221('0x11')](_0xe221('0x1b'),_0x2dd89d);logger[_0xe221('0x13')](_0xe221('0x1b'),_0x2dd89d,JSON[_0xe221('0x16')](_0x2c68b0));_0x145678(_0x2c68b0);})[_0xe221('0x24')](function(_0x23fe22){logger[_0xe221('0x17')]('GetSmsQueue',_0x23fe22['message'],_0x2dd89d);_0x38bc8c(_0xd6d698['error'](0x1f4,_0x23fe22[_0xe221('0x19')]));});});};exports[_0xe221('0x25')]=function(_0x327c3a){var _0xcdc15a=this;return new Promise(function(_0x31a13e,_0x13cabd){return db[_0xe221('0x26')][_0xe221('0x27')]({'raw':_0x327c3a[_0xe221('0x1d')]?_0x327c3a['options'][_0xe221('0x28')]===undefined?!![]:![]:!![],'where':_0x327c3a[_0xe221('0x1d')]?_0x327c3a[_0xe221('0x1d')][_0xe221('0x1e')]||null:null,'attributes':_0x327c3a[_0xe221('0x1d')]?_0x327c3a[_0xe221('0x1d')]['attributes']||null:null,'include':_0x327c3a[_0xe221('0x1d')]?_0x327c3a[_0xe221('0x1d')]['include']?_[_0xe221('0x21')](_0x327c3a[_0xe221('0x1d')][_0xe221('0x22')],function(_0x3b9281){return{'model':db[_0x3b9281[_0xe221('0x23')]],'as':_0x3b9281['as'],'attributes':_0x3b9281[_0xe221('0x1f')],'include':_0x3b9281[_0xe221('0x22')]?_[_0xe221('0x21')](_0x3b9281[_0xe221('0x22')],function(_0x3efe03){return{'model':db[_0x3efe03[_0xe221('0x23')]],'as':_0x3efe03['as'],'attributes':_0x3efe03['attributes'],'include':_0x3efe03[_0xe221('0x22')]?_[_0xe221('0x21')](_0x3efe03[_0xe221('0x22')],function(_0xb83a77){return{'model':db[_0xb83a77[_0xe221('0x23')]],'as':_0xb83a77['as'],'attributes':_0xb83a77['attributes']};}):[]};}):[]};}):[]:[]})[_0xe221('0x10')](function(_0x13a294){logger[_0xe221('0x11')](_0xe221('0x25'),_0x327c3a);logger[_0xe221('0x13')](_0xe221('0x25'),_0x327c3a,JSON['stringify'](_0x13a294));_0x31a13e(_0x13a294);})['catch'](function(_0x230354){logger[_0xe221('0x17')](_0xe221('0x25'),_0x230354[_0xe221('0x19')],_0x327c3a);_0x13cabd(_0xcdc15a[_0xe221('0x17')](0x1f4,_0x230354['message']));});});};
\ No newline at end of file
+var _0xa9da=['moment','bluebird','randomstring','../../config/utils','../../config/logger','rpc','jayson/promise','client','defaults','localhost','socket.io-emitter','redis','./smsQueue.socket','register','request','then','info','request\x20sent','debug','SmsQueue,\x20%s,\x20%s,\x20%s','stringify','error','code','message','SmsQueue,\x20%s,\x20%s','result','catch','GetSmsQueue','SmsQueue','options','where','include','map','model','attributes','ShowSmsQueue','find','lodash','util'];(function(_0x25ddc7,_0x3866a0){var _0x250226=function(_0x3a77d0){while(--_0x3a77d0){_0x25ddc7['push'](_0x25ddc7['shift']());}};_0x250226(++_0x3866a0);}(_0xa9da,0x1d2));var _0xaa9d=function(_0x3c53a2,_0x1e3b10){_0x3c53a2=_0x3c53a2-0x0;var _0x1d1292=_0xa9da[_0x3c53a2];return _0x1d1292;};'use strict';var _=require(_0xaa9d('0x0'));var util=require(_0xaa9d('0x1'));var moment=require(_0xaa9d('0x2'));var BPromise=require(_0xaa9d('0x3'));var rs=require(_0xaa9d('0x4'));var fs=require('fs');var Redis=require('ioredis');var db=require('../../mysqldb')['db'];var utils=require(_0xaa9d('0x5'));var logger=require(_0xaa9d('0x6'))(_0xaa9d('0x7'));var config=require('../../config/environment');var jayson=require(_0xaa9d('0x8'));var client=jayson[_0xaa9d('0x9')]['http']({'port':0x232a});config['redis']=_[_0xaa9d('0xa')](config['redis'],{'host':_0xaa9d('0xb'),'port':0x18eb});var socket=require(_0xaa9d('0xc'))(new Redis(config[_0xaa9d('0xd')]));require(_0xaa9d('0xe'))[_0xaa9d('0xf')](socket);function respondWithRpcPromise(_0x30b689,_0x4e8e25,_0x1d4179){return new BPromise(function(_0x130490,_0x4f7014){return client[_0xaa9d('0x10')](_0x30b689,_0x1d4179)[_0xaa9d('0x11')](function(_0x12d789){logger[_0xaa9d('0x12')]('SmsQueue,\x20%s,\x20%s',_0x4e8e25,_0xaa9d('0x13'));logger[_0xaa9d('0x14')](_0xaa9d('0x15'),_0x4e8e25,_0xaa9d('0x13'),JSON[_0xaa9d('0x16')](_0x12d789));if(_0x12d789[_0xaa9d('0x17')]){if(_0x12d789[_0xaa9d('0x17')][_0xaa9d('0x18')]===0x1f4){logger['error']('SmsQueue,\x20%s,\x20%s',_0x4e8e25,_0x12d789[_0xaa9d('0x17')][_0xaa9d('0x19')]);return _0x4f7014(_0x12d789[_0xaa9d('0x17')][_0xaa9d('0x19')]);}logger[_0xaa9d('0x17')](_0xaa9d('0x1a'),_0x4e8e25,_0x12d789[_0xaa9d('0x17')][_0xaa9d('0x19')]);return _0x130490(_0x12d789[_0xaa9d('0x17')][_0xaa9d('0x19')]);}else{logger[_0xaa9d('0x12')](_0xaa9d('0x1a'),_0x4e8e25,_0xaa9d('0x13'));_0x130490(_0x12d789[_0xaa9d('0x1b')][_0xaa9d('0x19')]);}})[_0xaa9d('0x1c')](function(_0x2801fe){logger[_0xaa9d('0x17')](_0xaa9d('0x1a'),_0x4e8e25,_0x2801fe);_0x4f7014(_0x2801fe);});});}exports[_0xaa9d('0x1d')]=function(_0x325f7b){var _0x35d3c3=this;return new Promise(function(_0x3565c5,_0x3fb478){return db[_0xaa9d('0x1e')]['findAll']({'raw':_0x325f7b[_0xaa9d('0x1f')]?_0x325f7b[_0xaa9d('0x1f')]['raw']===undefined?!![]:![]:!![],'where':_0x325f7b[_0xaa9d('0x1f')]?_0x325f7b['options'][_0xaa9d('0x20')]||null:null,'attributes':_0x325f7b[_0xaa9d('0x1f')]?_0x325f7b[_0xaa9d('0x1f')]['attributes']||null:null,'limit':_0x325f7b['options']?_0x325f7b['options']['limit']||null:null,'include':_0x325f7b[_0xaa9d('0x1f')]?_0x325f7b[_0xaa9d('0x1f')][_0xaa9d('0x21')]?_[_0xaa9d('0x22')](_0x325f7b[_0xaa9d('0x1f')][_0xaa9d('0x21')],function(_0x35c1b8){return{'model':db[_0x35c1b8[_0xaa9d('0x23')]],'as':_0x35c1b8['as'],'attributes':_0x35c1b8['attributes'],'include':_0x35c1b8[_0xaa9d('0x21')]?_[_0xaa9d('0x22')](_0x35c1b8[_0xaa9d('0x21')],function(_0x4425e3){return{'model':db[_0x4425e3[_0xaa9d('0x23')]],'as':_0x4425e3['as'],'attributes':_0x4425e3[_0xaa9d('0x24')],'include':_0x4425e3['include']?_[_0xaa9d('0x22')](_0x4425e3[_0xaa9d('0x21')],function(_0x48f996){return{'model':db[_0x48f996[_0xaa9d('0x23')]],'as':_0x48f996['as'],'attributes':_0x48f996[_0xaa9d('0x24')]};}):[]};}):[]};}):[]:[]})['then'](function(_0x44a4e3){logger[_0xaa9d('0x12')](_0xaa9d('0x1d'),_0x325f7b);logger[_0xaa9d('0x14')](_0xaa9d('0x1d'),_0x325f7b,JSON['stringify'](_0x44a4e3));_0x3565c5(_0x44a4e3);})[_0xaa9d('0x1c')](function(_0x890cc4){logger[_0xaa9d('0x17')](_0xaa9d('0x1d'),_0x890cc4['message'],_0x325f7b);_0x3fb478(_0x35d3c3['error'](0x1f4,_0x890cc4['message']));});});};exports[_0xaa9d('0x25')]=function(_0x35fac0){var _0x35824f=this;return new Promise(function(_0x2c0f1f,_0x5c7454){return db[_0xaa9d('0x1e')][_0xaa9d('0x26')]({'raw':_0x35fac0[_0xaa9d('0x1f')]?_0x35fac0[_0xaa9d('0x1f')]['raw']===undefined?!![]:![]:!![],'where':_0x35fac0[_0xaa9d('0x1f')]?_0x35fac0[_0xaa9d('0x1f')][_0xaa9d('0x20')]||null:null,'attributes':_0x35fac0[_0xaa9d('0x1f')]?_0x35fac0[_0xaa9d('0x1f')][_0xaa9d('0x24')]||null:null,'include':_0x35fac0['options']?_0x35fac0['options'][_0xaa9d('0x21')]?_[_0xaa9d('0x22')](_0x35fac0[_0xaa9d('0x1f')][_0xaa9d('0x21')],function(_0x2049a0){return{'model':db[_0x2049a0[_0xaa9d('0x23')]],'as':_0x2049a0['as'],'attributes':_0x2049a0[_0xaa9d('0x24')],'include':_0x2049a0['include']?_['map'](_0x2049a0[_0xaa9d('0x21')],function(_0x4701fe){return{'model':db[_0x4701fe[_0xaa9d('0x23')]],'as':_0x4701fe['as'],'attributes':_0x4701fe[_0xaa9d('0x24')],'include':_0x4701fe['include']?_[_0xaa9d('0x22')](_0x4701fe[_0xaa9d('0x21')],function(_0x3c6d95){return{'model':db[_0x3c6d95[_0xaa9d('0x23')]],'as':_0x3c6d95['as'],'attributes':_0x3c6d95[_0xaa9d('0x24')]};}):[]};}):[]};}):[]:[]})[_0xaa9d('0x11')](function(_0x1f2eb1){logger[_0xaa9d('0x12')]('ShowSmsQueue',_0x35fac0);logger['debug']('ShowSmsQueue',_0x35fac0,JSON[_0xaa9d('0x16')](_0x1f2eb1));_0x2c0f1f(_0x1f2eb1);})[_0xaa9d('0x1c')](function(_0x1eaacb){logger[_0xaa9d('0x17')](_0xaa9d('0x25'),_0x1eaacb[_0xaa9d('0x19')],_0x35fac0);_0x5c7454(_0x35824f[_0xaa9d('0x17')](0x1f4,_0x1eaacb['message']));});});};
\ No newline at end of file
index 2b97742..deec49d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xfb21=['save','remove','update','emit','removeListener','smsQueue:'];(function(_0x278f71,_0x2ab38f){var _0x222042=function(_0x1b1b03){while(--_0x1b1b03){_0x278f71['push'](_0x278f71['shift']());}};_0x222042(++_0x2ab38f);}(_0xfb21,0x120));var _0x1fb2=function(_0x1e1647,_0x44dd16){_0x1e1647=_0x1e1647-0x0;var _0x5039d4=_0xfb21[_0x1e1647];return _0x5039d4;};'use strict';var SmsQueueEvents=require('./smsQueue.events');var events=[_0x1fb2('0x0'),_0x1fb2('0x1'),_0x1fb2('0x2')];function createListener(_0x12c4a8,_0x11c45e){return function(_0xfa203b){_0x11c45e[_0x1fb2('0x3')](_0x12c4a8,_0xfa203b);};}function removeListener(_0x134392,_0x19f5f1){return function(){SmsQueueEvents[_0x1fb2('0x4')](_0x134392,_0x19f5f1);};}exports['register']=function(_0x5e1e80){for(var _0x65283d=0x0,_0x1b8ef2=events['length'];_0x65283d<_0x1b8ef2;_0x65283d++){var _0x113033=events[_0x65283d];var _0x2e86d4=createListener(_0x1fb2('0x5')+_0x113033,_0x5e1e80);SmsQueueEvents['on'](_0x113033,_0x2e86d4);}};
\ No newline at end of file
+var _0x7ae5=['register','length','smsQueue:','remove','update','removeListener'];(function(_0x230675,_0x2d414e){var _0x321db6=function(_0x29e9f6){while(--_0x29e9f6){_0x230675['push'](_0x230675['shift']());}};_0x321db6(++_0x2d414e);}(_0x7ae5,0x7b));var _0x57ae=function(_0x49d931,_0x121258){_0x49d931=_0x49d931-0x0;var _0x491a2a=_0x7ae5[_0x49d931];return _0x491a2a;};'use strict';var SmsQueueEvents=require('./smsQueue.events');var events=['save',_0x57ae('0x0'),_0x57ae('0x1')];function createListener(_0x5a0554,_0x145612){return function(_0x50e3ec){_0x145612['emit'](_0x5a0554,_0x50e3ec);};}function removeListener(_0x4f9d86,_0x444b3c){return function(){SmsQueueEvents[_0x57ae('0x2')](_0x4f9d86,_0x444b3c);};}exports[_0x57ae('0x3')]=function(_0x412fe1){for(var _0x43b367=0x0,_0x29786c=events[_0x57ae('0x4')];_0x43b367<_0x29786c;_0x43b367++){var _0x43b301=events[_0x43b367];var _0x4ba8e6=createListener(_0x57ae('0x5')+_0x43b301,_0x412fe1);SmsQueueEvents['on'](_0x43b301,_0x4ba8e6);}};
\ No newline at end of file
index 5dd9dfc..af4c38c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x661c=['destroy','multer','connect-timeout','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./smsQueueReport.controller','get','isAuthenticated','show','post','create','put','delete','/:id'];(function(_0x2b6b89,_0x172ec0){var _0x5aa6af=function(_0x19cd5e){while(--_0x19cd5e){_0x2b6b89['push'](_0x2b6b89['shift']());}};_0x5aa6af(++_0x172ec0);}(_0x661c,0x122));var _0xc661=function(_0x7e2eb0,_0x17cd58){_0x7e2eb0=_0x7e2eb0-0x0;var _0xd92de4=_0x661c[_0x7e2eb0];return _0xd92de4;};'use strict';var multer=require(_0xc661('0x0'));var util=require('util');var path=require('path');var timeout=require(_0xc661('0x1'));var express=require('express');var router=express[_0xc661('0x2')]();var fs_extra=require(_0xc661('0x3'));var auth=require(_0xc661('0x4'));var interaction=require(_0xc661('0x5'));var config=require(_0xc661('0x6'));var controller=require(_0xc661('0x7'));router[_0xc661('0x8')]('/',auth['isAuthenticated'](),controller['index']);router[_0xc661('0x8')]('/describe',auth[_0xc661('0x9')](),controller['describe']);router[_0xc661('0x8')]('/:id',auth[_0xc661('0x9')](),controller[_0xc661('0xa')]);router[_0xc661('0xb')]('/',auth[_0xc661('0x9')](),controller[_0xc661('0xc')]);router[_0xc661('0xd')]('/:id',auth[_0xc661('0x9')](),controller['update']);router[_0xc661('0xe')](_0xc661('0xf'),auth[_0xc661('0x9')](),controller[_0xc661('0x10')]);module['exports']=router;
\ No newline at end of file
+var _0xd829=['delete','exports','multer','util','connect-timeout','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','get','isAuthenticated','index','/describe','describe','/:id','show','post','create','put','update'];(function(_0x3d09a3,_0x3e73d0){var _0x33f34f=function(_0x3185c8){while(--_0x3185c8){_0x3d09a3['push'](_0x3d09a3['shift']());}};_0x33f34f(++_0x3e73d0);}(_0xd829,0x1d0));var _0x9d82=function(_0x1292df,_0x43826c){_0x1292df=_0x1292df-0x0;var _0x295d33=_0xd829[_0x1292df];return _0x295d33;};'use strict';var multer=require(_0x9d82('0x0'));var util=require(_0x9d82('0x1'));var path=require('path');var timeout=require(_0x9d82('0x2'));var express=require('express');var router=express[_0x9d82('0x3')]();var fs_extra=require(_0x9d82('0x4'));var auth=require(_0x9d82('0x5'));var interaction=require(_0x9d82('0x6'));var config=require(_0x9d82('0x7'));var controller=require('./smsQueueReport.controller');router[_0x9d82('0x8')]('/',auth[_0x9d82('0x9')](),controller[_0x9d82('0xa')]);router[_0x9d82('0x8')](_0x9d82('0xb'),auth[_0x9d82('0x9')](),controller[_0x9d82('0xc')]);router[_0x9d82('0x8')](_0x9d82('0xd'),auth[_0x9d82('0x9')](),controller[_0x9d82('0xe')]);router[_0x9d82('0xf')]('/',auth[_0x9d82('0x9')](),controller[_0x9d82('0x10')]);router[_0x9d82('0x11')](_0x9d82('0xd'),auth[_0x9d82('0x9')](),controller[_0x9d82('0x12')]);router[_0x9d82('0x13')](_0x9d82('0xd'),auth[_0x9d82('0x9')](),controller['destroy']);module[_0x9d82('0x14')]=router;
\ No newline at end of file
index 52ae72b..6251aee 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2e44=['STRING','DATE','moment','sequelize','exports'];(function(_0x75f869,_0x3690d6){var _0x10af8b=function(_0x22d3ff){while(--_0x22d3ff){_0x75f869['push'](_0x75f869['shift']());}};_0x10af8b(++_0x3690d6);}(_0x2e44,0x16a));var _0x42e4=function(_0x51dbba,_0x817f0d){_0x51dbba=_0x51dbba-0x0;var _0x34906d=_0x2e44[_0x51dbba];return _0x34906d;};'use strict';var moment=require(_0x42e4('0x0'));var Sequelize=require(_0x42e4('0x1'));module[_0x42e4('0x2')]={'uniqueid':{'type':Sequelize[_0x42e4('0x3')],'allowNull':![]},'from':{'type':Sequelize[_0x42e4('0x3')]},'joinAt':{'type':Sequelize[_0x42e4('0x4')]},'leaveAt':{'type':Sequelize[_0x42e4('0x4')]},'acceptAt':{'type':Sequelize['DATE']},'exitAt':{'type':Sequelize[_0x42e4('0x4')]},'reason':{'type':Sequelize[_0x42e4('0x3')]}};
\ No newline at end of file
+var _0xbc6c=['DATE','sequelize','STRING'];(function(_0x58999b,_0xea4695){var _0x5efc3a=function(_0x98de31){while(--_0x98de31){_0x58999b['push'](_0x58999b['shift']());}};_0x5efc3a(++_0xea4695);}(_0xbc6c,0x1b1));var _0xcbc6=function(_0x13ca50,_0x31e54f){_0x13ca50=_0x13ca50-0x0;var _0x2ec045=_0xbc6c[_0x13ca50];return _0x2ec045;};'use strict';var moment=require('moment');var Sequelize=require(_0xcbc6('0x0'));module['exports']={'uniqueid':{'type':Sequelize['STRING'],'allowNull':![]},'from':{'type':Sequelize[_0xcbc6('0x1')]},'joinAt':{'type':Sequelize[_0xcbc6('0x2')]},'leaveAt':{'type':Sequelize[_0xcbc6('0x2')]},'acceptAt':{'type':Sequelize[_0xcbc6('0x2')]},'exitAt':{'type':Sequelize[_0xcbc6('0x2')]},'reason':{'type':Sequelize[_0xcbc6('0x1')]}};
\ No newline at end of file
index 3053c1e..25e734d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xac5b=['filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','sort','where','filter','merge','map','options','includeAll','include','findAll','rows','catch','show','params','keys','find','create','body','destroy','describe','eml-format','rimraf','zip-dir','request-promise','util','path','to-csv','ejs','fs-extra','lodash','jsforce','querystring','../../components/parsers/qs','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../mysqldb','status','end','json','offset','undefined','count','limit','set','apply','reject','save','update','then','sendStatus','error','name','index','SmsQueueReport','rawAttributes','fieldName','type','model','query'];(function(_0x72da65,_0x12d023){var _0x76027c=function(_0x31ec0f){while(--_0x31ec0f){_0x72da65['push'](_0x72da65['shift']());}};_0x76027c(++_0x12d023);}(_0xac5b,0x16e));var _0xbac5=function(_0x5235a6,_0x680b76){_0x5235a6=_0x5235a6-0x0;var _0x1cf37e=_0xac5b[_0x5235a6];return _0x1cf37e;};'use strict';var emlformat=require(_0xbac5('0x0'));var rimraf=require(_0xbac5('0x1'));var zipdir=require(_0xbac5('0x2'));var jsonpatch=require('fast-json-patch');var rp=require(_0xbac5('0x3'));var moment=require('moment');var BPromise=require('bluebird');var Mustache=require('mustache');var util=require(_0xbac5('0x4'));var path=require(_0xbac5('0x5'));var sox=require('sox');var csv=require(_0xbac5('0x6'));var ejs=require(_0xbac5('0x7'));var fs=require('fs');var fs_extra=require(_0xbac5('0x8'));var _=require(_0xbac5('0x9'));var squel=require('squel');var crypto=require('crypto');var jsforce=require(_0xbac5('0xa'));var deskjs=require('desk.js');var toCsv=require(_0xbac5('0x6'));var querystring=require(_0xbac5('0xb'));var Papa=require('papaparse');var Redis=require('ioredis');var authService=require('../../components/auth/service');var qs=require(_0xbac5('0xc'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0xbac5('0xd'));var logger=require(_0xbac5('0xe'))(_0xbac5('0xf'));var utils=require(_0xbac5('0x10'));var config=require(_0xbac5('0x11'));var licenseUtil=require('../../config/license/util');var db=require(_0xbac5('0x12'))['db'];function respondWithStatusCode(_0x37aa36,_0x99c656){_0x99c656=_0x99c656||0xcc;return function(_0x17797f){if(_0x17797f){return _0x37aa36['sendStatus'](_0x99c656);}return _0x37aa36[_0xbac5('0x13')](_0x99c656)[_0xbac5('0x14')]();};}function respondWithResult(_0x3ed14b,_0xbf59f4){_0xbf59f4=_0xbf59f4||0xc8;return function(_0x1cb33e){if(_0x1cb33e){return _0x3ed14b['status'](_0xbf59f4)[_0xbac5('0x15')](_0x1cb33e);}};}function respondWithFilteredResult(_0x1c274a,_0x4ea10c){return function(_0x5f3727){if(_0x5f3727){var _0x2d9eb5=typeof _0x4ea10c[_0xbac5('0x16')]===_0xbac5('0x17')&&typeof _0x4ea10c['limit']===_0xbac5('0x17');var _0x26a8b9=_0x5f3727['count'];var _0x1266b1=_0x2d9eb5?0x0:_0x4ea10c[_0xbac5('0x16')];var _0x212ce9=_0x2d9eb5?_0x5f3727[_0xbac5('0x18')]:_0x4ea10c[_0xbac5('0x16')]+_0x4ea10c[_0xbac5('0x19')];var _0x56e573;if(_0x212ce9>=_0x26a8b9){_0x212ce9=_0x26a8b9;_0x56e573=0xc8;}else{_0x56e573=0xce;}_0x1c274a[_0xbac5('0x13')](_0x56e573);return _0x1c274a[_0xbac5('0x1a')]('Content-Range',_0x1266b1+'-'+_0x212ce9+'/'+_0x26a8b9)[_0xbac5('0x15')](_0x5f3727);}return null;};}function patchUpdates(_0x39ce60){return function(_0x346e24){try{jsonpatch[_0xbac5('0x1b')](_0x346e24,_0x39ce60,!![]);}catch(_0x239d20){return BPromise[_0xbac5('0x1c')](_0x239d20);}return _0x346e24[_0xbac5('0x1d')]();};}function saveUpdates(_0x386ecd,_0x12a7c7){return function(_0x136553){if(_0x136553){return _0x136553[_0xbac5('0x1e')](_0x386ecd)['then'](function(_0x151475){return _0x151475;});}return null;};}function removeEntity(_0xd531ea,_0x2b0ff3){return function(_0x35f675){if(_0x35f675){return _0x35f675['destroy']()[_0xbac5('0x1f')](function(){_0xd531ea['status'](0xcc)[_0xbac5('0x14')]();});}};}function handleEntityNotFound(_0x5602b3,_0x4c66ba){return function(_0x39b458){if(!_0x39b458){_0x5602b3[_0xbac5('0x20')](0x194);}return _0x39b458;};}function handleError(_0x324ae8,_0x22b992){_0x22b992=_0x22b992||0x1f4;return function(_0x234c8a){logger[_0xbac5('0x21')](_0x234c8a['stack']);if(_0x234c8a[_0xbac5('0x22')]){delete _0x234c8a[_0xbac5('0x22')];}_0x324ae8[_0xbac5('0x13')](_0x22b992)['send'](_0x234c8a);};}exports[_0xbac5('0x23')]=function(_0x178850,_0x36b446){var _0x2410af={},_0x5b4c26={},_0x3d62a2={'count':0x0,'rows':[]};var _0x19d1f0=_['map'](db[_0xbac5('0x24')][_0xbac5('0x25')],function(_0x2a3334){return{'name':_0x2a3334[_0xbac5('0x26')],'type':_0x2a3334[_0xbac5('0x27')]['key']};});_0x5b4c26[_0xbac5('0x28')]=_['map'](_0x19d1f0,'name');_0x5b4c26['query']=_['keys'](_0x178850[_0xbac5('0x29')]);_0x5b4c26[_0xbac5('0x2a')]=_[_0xbac5('0x2b')](_0x5b4c26['model'],_0x5b4c26['query']);_0x2410af[_0xbac5('0x2c')]=_[_0xbac5('0x2b')](_0x5b4c26[_0xbac5('0x28')],qs[_0xbac5('0x2d')](_0x178850[_0xbac5('0x29')][_0xbac5('0x2d')]));_0x2410af['attributes']=_0x2410af[_0xbac5('0x2c')][_0xbac5('0x2e')]?_0x2410af['attributes']:_0x5b4c26[_0xbac5('0x28')];if(!_0x178850[_0xbac5('0x29')][_0xbac5('0x2f')](_0xbac5('0x30'))){_0x2410af[_0xbac5('0x19')]=qs[_0xbac5('0x19')](_0x178850[_0xbac5('0x29')][_0xbac5('0x19')]);_0x2410af[_0xbac5('0x16')]=qs[_0xbac5('0x16')](_0x178850['query']['offset']);}_0x2410af['order']=qs[_0xbac5('0x31')](_0x178850[_0xbac5('0x29')][_0xbac5('0x31')]);_0x2410af[_0xbac5('0x32')]=qs[_0xbac5('0x2a')](_['pick'](_0x178850['query'],_0x5b4c26[_0xbac5('0x2a')]),_0x19d1f0);if(_0x178850['query'][_0xbac5('0x33')]){_0x2410af['where']=_[_0xbac5('0x34')](_0x2410af[_0xbac5('0x32')],{'$or':_[_0xbac5('0x35')](_0x19d1f0,function(_0x30585a){if(_0x30585a['type']!=='VIRTUAL'){var _0x1bfb6d={};_0x1bfb6d[_0x30585a['name']]={'$like':'%'+_0x178850['query']['filter']+'%'};return _0x1bfb6d;}})});}_0x2410af=_[_0xbac5('0x34')]({},_0x2410af,_0x178850[_0xbac5('0x36')]);var _0x28122f={'where':_0x2410af[_0xbac5('0x32')]};return db[_0xbac5('0x24')]['count'](_0x28122f)[_0xbac5('0x1f')](function(_0x2cb58c){_0x3d62a2['count']=_0x2cb58c;if(_0x178850['query'][_0xbac5('0x37')]){_0x2410af[_0xbac5('0x38')]=[{'all':!![]}];}return db['SmsQueueReport'][_0xbac5('0x39')](_0x2410af);})[_0xbac5('0x1f')](function(_0x3c285){_0x3d62a2[_0xbac5('0x3a')]=_0x3c285;return _0x3d62a2;})[_0xbac5('0x1f')](respondWithFilteredResult(_0x36b446,_0x2410af))[_0xbac5('0x3b')](handleError(_0x36b446,null));};exports[_0xbac5('0x3c')]=function(_0x22f05e,_0xafa70b){var _0x4ea0fb={'raw':!![],'where':{'id':_0x22f05e[_0xbac5('0x3d')]['id']}},_0x3279bb={};_0x3279bb[_0xbac5('0x28')]=_[_0xbac5('0x3e')](db[_0xbac5('0x24')][_0xbac5('0x25')]);_0x3279bb['query']=_[_0xbac5('0x3e')](_0x22f05e[_0xbac5('0x29')]);_0x3279bb['filters']=_['intersection'](_0x3279bb[_0xbac5('0x28')],_0x3279bb[_0xbac5('0x29')]);_0x4ea0fb[_0xbac5('0x2c')]=_[_0xbac5('0x2b')](_0x3279bb[_0xbac5('0x28')],qs[_0xbac5('0x2d')](_0x22f05e[_0xbac5('0x29')][_0xbac5('0x2d')]));_0x4ea0fb[_0xbac5('0x2c')]=_0x4ea0fb[_0xbac5('0x2c')][_0xbac5('0x2e')]?_0x4ea0fb['attributes']:_0x3279bb[_0xbac5('0x28')];if(_0x22f05e[_0xbac5('0x29')][_0xbac5('0x37')]){_0x4ea0fb[_0xbac5('0x38')]=[{'all':!![]}];}_0x4ea0fb=_[_0xbac5('0x34')]({},_0x4ea0fb,_0x22f05e[_0xbac5('0x36')]);return db['SmsQueueReport'][_0xbac5('0x3f')](_0x4ea0fb)[_0xbac5('0x1f')](handleEntityNotFound(_0xafa70b,null))[_0xbac5('0x1f')](respondWithResult(_0xafa70b,null))['catch'](handleError(_0xafa70b,null));};exports[_0xbac5('0x40')]=function(_0x193640,_0x2ae394){return db['SmsQueueReport'][_0xbac5('0x40')](_0x193640[_0xbac5('0x41')],{})['then'](respondWithResult(_0x2ae394,0xc9))[_0xbac5('0x3b')](handleError(_0x2ae394,null));};exports[_0xbac5('0x1e')]=function(_0x14fc72,_0x3f8935){if(_0x14fc72[_0xbac5('0x41')]['id']){delete _0x14fc72['body']['id'];}return db[_0xbac5('0x24')][_0xbac5('0x3f')]({'where':{'id':_0x14fc72[_0xbac5('0x3d')]['id']}})[_0xbac5('0x1f')](handleEntityNotFound(_0x3f8935,null))[_0xbac5('0x1f')](saveUpdates(_0x14fc72[_0xbac5('0x41')],null))['then'](respondWithResult(_0x3f8935,null))['catch'](handleError(_0x3f8935,null));};exports[_0xbac5('0x42')]=function(_0x5b2320,_0x129a5f){return db[_0xbac5('0x24')][_0xbac5('0x3f')]({'where':{'id':_0x5b2320[_0xbac5('0x3d')]['id']}})['then'](handleEntityNotFound(_0x129a5f,null))['then'](removeEntity(_0x129a5f,null))[_0xbac5('0x3b')](handleError(_0x129a5f,null));};exports['describe']=function(_0x3db92b,_0x1caab5){return db[_0xbac5('0x24')][_0xbac5('0x43')]()[_0xbac5('0x1f')](respondWithResult(_0x1caab5,null))[_0xbac5('0x3b')](handleError(_0x1caab5,null));};
\ No newline at end of file
+var _0x4a59=['name','index','map','SmsQueueReport','rawAttributes','key','model','query','keys','filters','intersection','attributes','fields','length','hasOwnProperty','order','sort','where','pick','VIRTUAL','filter','merge','options','includeAll','include','findAll','catch','params','find','create','body','update','describe','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','bluebird','mustache','util','path','sox','to-csv','fs-extra','lodash','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/license/util','../../mysqldb','sendStatus','status','json','undefined','limit','count','offset','set','apply','reject','save','then','destroy','end','error','stack'];(function(_0x2b49bc,_0x47b636){var _0x43cc65=function(_0x236ec3){while(--_0x236ec3){_0x2b49bc['push'](_0x2b49bc['shift']());}};_0x43cc65(++_0x47b636);}(_0x4a59,0x1e3));var _0x94a5=function(_0xb2045c,_0x3e4b56){_0xb2045c=_0xb2045c-0x0;var _0x396ea9=_0x4a59[_0xb2045c];return _0x396ea9;};'use strict';var emlformat=require(_0x94a5('0x0'));var rimraf=require(_0x94a5('0x1'));var zipdir=require(_0x94a5('0x2'));var jsonpatch=require(_0x94a5('0x3'));var rp=require(_0x94a5('0x4'));var moment=require('moment');var BPromise=require(_0x94a5('0x5'));var Mustache=require(_0x94a5('0x6'));var util=require(_0x94a5('0x7'));var path=require(_0x94a5('0x8'));var sox=require(_0x94a5('0x9'));var csv=require(_0x94a5('0xa'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x94a5('0xb'));var _=require(_0x94a5('0xc'));var squel=require('squel');var crypto=require(_0x94a5('0xd'));var jsforce=require(_0x94a5('0xe'));var deskjs=require(_0x94a5('0xf'));var toCsv=require('to-csv');var querystring=require(_0x94a5('0x10'));var Papa=require(_0x94a5('0x11'));var Redis=require(_0x94a5('0x12'));var authService=require('../../components/auth/service');var qs=require(_0x94a5('0x13'));var as=require(_0x94a5('0x14'));var hardwareService=require(_0x94a5('0x15'));var logger=require(_0x94a5('0x16'))(_0x94a5('0x17'));var utils=require('../../config/utils');var config=require('../../config/environment');var licenseUtil=require(_0x94a5('0x18'));var db=require(_0x94a5('0x19'))['db'];function respondWithStatusCode(_0x2ea1c3,_0x352421){_0x352421=_0x352421||0xcc;return function(_0x3c15ae){if(_0x3c15ae){return _0x2ea1c3[_0x94a5('0x1a')](_0x352421);}return _0x2ea1c3[_0x94a5('0x1b')](_0x352421)['end']();};}function respondWithResult(_0x1e251f,_0x475d14){_0x475d14=_0x475d14||0xc8;return function(_0x5718ae){if(_0x5718ae){return _0x1e251f[_0x94a5('0x1b')](_0x475d14)[_0x94a5('0x1c')](_0x5718ae);}};}function respondWithFilteredResult(_0xa538f2,_0x4f67a0){return function(_0x58c7c2){if(_0x58c7c2){var _0x3ebe29=typeof _0x4f67a0['offset']===_0x94a5('0x1d')&&typeof _0x4f67a0[_0x94a5('0x1e')]===_0x94a5('0x1d');var _0x445a96=_0x58c7c2[_0x94a5('0x1f')];var _0x55fb03=_0x3ebe29?0x0:_0x4f67a0[_0x94a5('0x20')];var _0x3600a5=_0x3ebe29?_0x58c7c2[_0x94a5('0x1f')]:_0x4f67a0['offset']+_0x4f67a0[_0x94a5('0x1e')];var _0x3285f1;if(_0x3600a5>=_0x445a96){_0x3600a5=_0x445a96;_0x3285f1=0xc8;}else{_0x3285f1=0xce;}_0xa538f2[_0x94a5('0x1b')](_0x3285f1);return _0xa538f2[_0x94a5('0x21')]('Content-Range',_0x55fb03+'-'+_0x3600a5+'/'+_0x445a96)[_0x94a5('0x1c')](_0x58c7c2);}return null;};}function patchUpdates(_0x15f29f){return function(_0x32a98c){try{jsonpatch[_0x94a5('0x22')](_0x32a98c,_0x15f29f,!![]);}catch(_0xd98ddb){return BPromise[_0x94a5('0x23')](_0xd98ddb);}return _0x32a98c[_0x94a5('0x24')]();};}function saveUpdates(_0x3f2fe2,_0x4fe06c){return function(_0x2c6dc7){if(_0x2c6dc7){return _0x2c6dc7['update'](_0x3f2fe2)[_0x94a5('0x25')](function(_0x4c08eb){return _0x4c08eb;});}return null;};}function removeEntity(_0x50d6c9,_0x2f1997){return function(_0x216d09){if(_0x216d09){return _0x216d09[_0x94a5('0x26')]()[_0x94a5('0x25')](function(){_0x50d6c9[_0x94a5('0x1b')](0xcc)[_0x94a5('0x27')]();});}};}function handleEntityNotFound(_0x290a14,_0x591654){return function(_0x197e0b){if(!_0x197e0b){_0x290a14[_0x94a5('0x1a')](0x194);}return _0x197e0b;};}function handleError(_0x353830,_0x96410b){_0x96410b=_0x96410b||0x1f4;return function(_0x50cc4c){logger[_0x94a5('0x28')](_0x50cc4c[_0x94a5('0x29')]);if(_0x50cc4c[_0x94a5('0x2a')]){delete _0x50cc4c[_0x94a5('0x2a')];}_0x353830[_0x94a5('0x1b')](_0x96410b)['send'](_0x50cc4c);};}exports[_0x94a5('0x2b')]=function(_0x496b25,_0x1d4e91){var _0x11c9b4={},_0x509e26={},_0x705805={'count':0x0,'rows':[]};var _0x468e36=_[_0x94a5('0x2c')](db[_0x94a5('0x2d')][_0x94a5('0x2e')],function(_0x521a7c){return{'name':_0x521a7c['fieldName'],'type':_0x521a7c['type'][_0x94a5('0x2f')]};});_0x509e26[_0x94a5('0x30')]=_[_0x94a5('0x2c')](_0x468e36,'name');_0x509e26[_0x94a5('0x31')]=_[_0x94a5('0x32')](_0x496b25[_0x94a5('0x31')]);_0x509e26[_0x94a5('0x33')]=_[_0x94a5('0x34')](_0x509e26[_0x94a5('0x30')],_0x509e26[_0x94a5('0x31')]);_0x11c9b4[_0x94a5('0x35')]=_[_0x94a5('0x34')](_0x509e26[_0x94a5('0x30')],qs[_0x94a5('0x36')](_0x496b25[_0x94a5('0x31')][_0x94a5('0x36')]));_0x11c9b4['attributes']=_0x11c9b4[_0x94a5('0x35')][_0x94a5('0x37')]?_0x11c9b4[_0x94a5('0x35')]:_0x509e26[_0x94a5('0x30')];if(!_0x496b25['query'][_0x94a5('0x38')]('nolimit')){_0x11c9b4[_0x94a5('0x1e')]=qs[_0x94a5('0x1e')](_0x496b25[_0x94a5('0x31')]['limit']);_0x11c9b4[_0x94a5('0x20')]=qs[_0x94a5('0x20')](_0x496b25[_0x94a5('0x31')][_0x94a5('0x20')]);}_0x11c9b4[_0x94a5('0x39')]=qs[_0x94a5('0x3a')](_0x496b25[_0x94a5('0x31')][_0x94a5('0x3a')]);_0x11c9b4[_0x94a5('0x3b')]=qs['filters'](_[_0x94a5('0x3c')](_0x496b25[_0x94a5('0x31')],_0x509e26[_0x94a5('0x33')]),_0x468e36);if(_0x496b25[_0x94a5('0x31')]['filter']){_0x11c9b4['where']=_['merge'](_0x11c9b4['where'],{'$or':_['map'](_0x468e36,function(_0x1bf5ee){if(_0x1bf5ee['type']!==_0x94a5('0x3d')){var _0x32f81d={};_0x32f81d[_0x1bf5ee[_0x94a5('0x2a')]]={'$like':'%'+_0x496b25[_0x94a5('0x31')][_0x94a5('0x3e')]+'%'};return _0x32f81d;}})});}_0x11c9b4=_[_0x94a5('0x3f')]({},_0x11c9b4,_0x496b25[_0x94a5('0x40')]);var _0xf23e7={'where':_0x11c9b4[_0x94a5('0x3b')]};return db[_0x94a5('0x2d')]['count'](_0xf23e7)['then'](function(_0x56cf67){_0x705805['count']=_0x56cf67;if(_0x496b25[_0x94a5('0x31')][_0x94a5('0x41')]){_0x11c9b4[_0x94a5('0x42')]=[{'all':!![]}];}return db['SmsQueueReport'][_0x94a5('0x43')](_0x11c9b4);})['then'](function(_0x49f79f){_0x705805['rows']=_0x49f79f;return _0x705805;})['then'](respondWithFilteredResult(_0x1d4e91,_0x11c9b4))[_0x94a5('0x44')](handleError(_0x1d4e91,null));};exports['show']=function(_0x218578,_0x7a3b19){var _0x569c60={'raw':!![],'where':{'id':_0x218578[_0x94a5('0x45')]['id']}},_0x1907c3={};_0x1907c3[_0x94a5('0x30')]=_[_0x94a5('0x32')](db[_0x94a5('0x2d')][_0x94a5('0x2e')]);_0x1907c3[_0x94a5('0x31')]=_[_0x94a5('0x32')](_0x218578[_0x94a5('0x31')]);_0x1907c3['filters']=_['intersection'](_0x1907c3[_0x94a5('0x30')],_0x1907c3[_0x94a5('0x31')]);_0x569c60['attributes']=_[_0x94a5('0x34')](_0x1907c3[_0x94a5('0x30')],qs[_0x94a5('0x36')](_0x218578[_0x94a5('0x31')][_0x94a5('0x36')]));_0x569c60['attributes']=_0x569c60[_0x94a5('0x35')][_0x94a5('0x37')]?_0x569c60[_0x94a5('0x35')]:_0x1907c3[_0x94a5('0x30')];if(_0x218578[_0x94a5('0x31')][_0x94a5('0x41')]){_0x569c60[_0x94a5('0x42')]=[{'all':!![]}];}_0x569c60=_[_0x94a5('0x3f')]({},_0x569c60,_0x218578[_0x94a5('0x40')]);return db[_0x94a5('0x2d')][_0x94a5('0x46')](_0x569c60)['then'](handleEntityNotFound(_0x7a3b19,null))[_0x94a5('0x25')](respondWithResult(_0x7a3b19,null))[_0x94a5('0x44')](handleError(_0x7a3b19,null));};exports[_0x94a5('0x47')]=function(_0x5b9a35,_0x350777){return db[_0x94a5('0x2d')][_0x94a5('0x47')](_0x5b9a35[_0x94a5('0x48')],{})['then'](respondWithResult(_0x350777,0xc9))['catch'](handleError(_0x350777,null));};exports[_0x94a5('0x49')]=function(_0x23af53,_0x387bec){if(_0x23af53[_0x94a5('0x48')]['id']){delete _0x23af53['body']['id'];}return db[_0x94a5('0x2d')][_0x94a5('0x46')]({'where':{'id':_0x23af53[_0x94a5('0x45')]['id']}})[_0x94a5('0x25')](handleEntityNotFound(_0x387bec,null))[_0x94a5('0x25')](saveUpdates(_0x23af53['body'],null))[_0x94a5('0x25')](respondWithResult(_0x387bec,null))[_0x94a5('0x44')](handleError(_0x387bec,null));};exports[_0x94a5('0x26')]=function(_0x4582d6,_0xc33a0e){return db[_0x94a5('0x2d')]['find']({'where':{'id':_0x4582d6[_0x94a5('0x45')]['id']}})['then'](handleEntityNotFound(_0xc33a0e,null))[_0x94a5('0x25')](removeEntity(_0xc33a0e,null))[_0x94a5('0x44')](handleError(_0xc33a0e,null));};exports[_0x94a5('0x4a')]=function(_0x3f370d,_0x860963){return db[_0x94a5('0x2d')][_0x94a5('0x4a')]()['then'](respondWithResult(_0x860963,null))[_0x94a5('0x44')](handleError(_0x860963,null));};
\ No newline at end of file
index 73db3d7..aae9397 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(_0x165a65,_0x244ebf){var _0x4b04d9=function(_0x15678d){while(--_0x15678d){_0x165a65['push'](_0x165a65['shift']());}};_0x4b04d9(++_0x244ebf);}(_0xb7e7,0x121));var _0x7b7e=function(_0x580576,_0x2f107d){_0x580576=_0x580576-0x0;var _0x3f55a0=_0xb7e7[_0x580576];return _0x3f55a0;};'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 _0xd8b0=['define','report_sms_queue','uniqueid','lodash','util','bluebird','request-promise','path','rimraf','../../config/environment'];(function(_0x5cfd3b,_0x2f59c9){var _0x276271=function(_0x4b37f7){while(--_0x4b37f7){_0x5cfd3b['push'](_0x5cfd3b['shift']());}};_0x276271(++_0x2f59c9);}(_0xd8b0,0xad));var _0x0d8b=function(_0x20a584,_0xe384a5){_0x20a584=_0x20a584-0x0;var _0x4b41a8=_0xd8b0[_0x20a584];return _0x4b41a8;};'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('./smsQueueReport.attributes');module['exports']=function(_0x3f8b6f,_0x227c63){return _0x3f8b6f[_0x0d8b('0x7')]('SmsQueueReport',attributes,{'tableName':_0x0d8b('0x8'),'paranoid':![],'indexes':[{'name':_0x0d8b('0x9'),'fields':['uniqueid']}],'timestamps':!![]});};
\ No newline at end of file
index 24bbbe2..ad0c7e0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x04e8=['SmsQueueReport','body','options','raw','stringify','UpdateSmsQueueReport','update','attributes','limit','util','moment','bluebird','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','client','http','then','info','SmsQueueReport,\x20%s,\x20%s','request\x20sent','debug','SmsQueueReport,\x20%s,\x20%s,\x20%s','error','code','message','result','catch','CreateSmsQueueReport'];(function(_0x19e35c,_0x29cd1e){var _0x3e1fe8=function(_0x17258b){while(--_0x17258b){_0x19e35c['push'](_0x19e35c['shift']());}};_0x3e1fe8(++_0x29cd1e);}(_0x04e8,0xe2));var _0x804e=function(_0x2be0e0,_0x4e67fd){_0x2be0e0=_0x2be0e0-0x0;var _0x219e5d=_0x04e8[_0x2be0e0];return _0x219e5d;};'use strict';var _=require('lodash');var util=require(_0x804e('0x0'));var moment=require(_0x804e('0x1'));var BPromise=require(_0x804e('0x2'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x804e('0x3'));var db=require(_0x804e('0x4'))['db'];var utils=require(_0x804e('0x5'));var logger=require(_0x804e('0x6'))(_0x804e('0x7'));var config=require('../../config/environment');var jayson=require('jayson/promise');var client=jayson[_0x804e('0x8')][_0x804e('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x5d3b40,_0x28513d,_0xfae84a){return new BPromise(function(_0x3bf035,_0x1aeb58){return client['request'](_0x5d3b40,_0xfae84a)[_0x804e('0xa')](function(_0x25c164){logger[_0x804e('0xb')](_0x804e('0xc'),_0x28513d,_0x804e('0xd'));logger[_0x804e('0xe')](_0x804e('0xf'),_0x28513d,_0x804e('0xd'),JSON['stringify'](_0x25c164));if(_0x25c164['error']){if(_0x25c164[_0x804e('0x10')][_0x804e('0x11')]===0x1f4){logger[_0x804e('0x10')](_0x804e('0xc'),_0x28513d,_0x25c164[_0x804e('0x10')][_0x804e('0x12')]);return _0x1aeb58(_0x25c164[_0x804e('0x10')]['message']);}logger['error'](_0x804e('0xc'),_0x28513d,_0x25c164[_0x804e('0x10')][_0x804e('0x12')]);return _0x3bf035(_0x25c164[_0x804e('0x10')][_0x804e('0x12')]);}else{logger[_0x804e('0xb')](_0x804e('0xc'),_0x28513d,_0x804e('0xd'));_0x3bf035(_0x25c164[_0x804e('0x13')][_0x804e('0x12')]);}})[_0x804e('0x14')](function(_0x27e29e){logger['error'](_0x804e('0xc'),_0x28513d,_0x27e29e);_0x1aeb58(_0x27e29e);});});}exports[_0x804e('0x15')]=function(_0x50b6f1){var _0x3832f8=this;return new Promise(function(_0x510959,_0x488bc9){return db[_0x804e('0x16')]['create'](_0x50b6f1[_0x804e('0x17')],{'raw':_0x50b6f1[_0x804e('0x18')]?_0x50b6f1[_0x804e('0x18')][_0x804e('0x19')]===undefined?!![]:![]:!![]})['then'](function(_0x392dd4){logger[_0x804e('0xb')]('CreateSmsQueueReport',_0x50b6f1);logger[_0x804e('0xe')](_0x804e('0x15'),_0x50b6f1,JSON[_0x804e('0x1a')](_0x392dd4));_0x510959(_0x392dd4);})[_0x804e('0x14')](function(_0x5b4e37){logger[_0x804e('0x10')](_0x804e('0x15'),_0x5b4e37[_0x804e('0x12')],_0x50b6f1);_0x488bc9(_0x3832f8['error'](0x1f4,_0x5b4e37[_0x804e('0x12')]));});});};exports[_0x804e('0x1b')]=function(_0xb9ecc4){var _0x3edce5=this;return new Promise(function(_0x3eaf9e,_0x2d7d2b){return db['SmsQueueReport'][_0x804e('0x1c')](_0xb9ecc4[_0x804e('0x17')],{'raw':_0xb9ecc4['options']?_0xb9ecc4[_0x804e('0x18')][_0x804e('0x19')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0xb9ecc4[_0x804e('0x18')]?_0xb9ecc4['options']['where']||null:null,'attributes':_0xb9ecc4[_0x804e('0x18')]?_0xb9ecc4[_0x804e('0x18')][_0x804e('0x1d')]||null:null,'limit':_0xb9ecc4[_0x804e('0x18')]?_0xb9ecc4[_0x804e('0x18')][_0x804e('0x1e')]||null:null})[_0x804e('0xa')](function(_0x5d79bd){logger[_0x804e('0xb')]('UpdateSmsQueueReport',_0xb9ecc4);logger['debug']('UpdateSmsQueueReport',_0xb9ecc4,JSON[_0x804e('0x1a')](_0x5d79bd));_0x3eaf9e(_0x5d79bd);})[_0x804e('0x14')](function(_0x1a0940){logger[_0x804e('0x10')](_0x804e('0x1b'),_0x1a0940[_0x804e('0x12')],_0xb9ecc4);_0x2d7d2b(_0x3edce5[_0x804e('0x10')](0x1f4,_0x1a0940[_0x804e('0x12')]));});});};
\ No newline at end of file
+var _0xda79=['create','body','options','SmsQueueReport','update','where','limit','UpdateSmsQueueReport','util','moment','bluebird','randomstring','ioredis','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','request','then','info','SmsQueueReport,\x20%s,\x20%s','debug','SmsQueueReport,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','code','message','result','catch','CreateSmsQueueReport'];(function(_0x2dafbe,_0x5d04de){var _0x58a45a=function(_0x50ac96){while(--_0x50ac96){_0x2dafbe['push'](_0x2dafbe['shift']());}};_0x58a45a(++_0x5d04de);}(_0xda79,0xf6));var _0x9da7=function(_0x5ddb1c,_0x5ea4df){_0x5ddb1c=_0x5ddb1c-0x0;var _0x354adc=_0xda79[_0x5ddb1c];return _0x354adc;};'use strict';var _=require('lodash');var util=require(_0x9da7('0x0'));var moment=require(_0x9da7('0x1'));var BPromise=require(_0x9da7('0x2'));var rs=require(_0x9da7('0x3'));var fs=require('fs');var Redis=require(_0x9da7('0x4'));var db=require('../../mysqldb')['db'];var utils=require(_0x9da7('0x5'));var logger=require(_0x9da7('0x6'))(_0x9da7('0x7'));var config=require(_0x9da7('0x8'));var jayson=require(_0x9da7('0x9'));var client=jayson[_0x9da7('0xa')][_0x9da7('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x5689c7,_0x1bb7cc,_0x147386){return new BPromise(function(_0x5e237d,_0xaf95b3){return client[_0x9da7('0xc')](_0x5689c7,_0x147386)[_0x9da7('0xd')](function(_0x337f17){logger[_0x9da7('0xe')](_0x9da7('0xf'),_0x1bb7cc,'request\x20sent');logger[_0x9da7('0x10')](_0x9da7('0x11'),_0x1bb7cc,_0x9da7('0x12'),JSON[_0x9da7('0x13')](_0x337f17));if(_0x337f17[_0x9da7('0x14')]){if(_0x337f17[_0x9da7('0x14')][_0x9da7('0x15')]===0x1f4){logger[_0x9da7('0x14')](_0x9da7('0xf'),_0x1bb7cc,_0x337f17[_0x9da7('0x14')]['message']);return _0xaf95b3(_0x337f17[_0x9da7('0x14')][_0x9da7('0x16')]);}logger[_0x9da7('0x14')]('SmsQueueReport,\x20%s,\x20%s',_0x1bb7cc,_0x337f17[_0x9da7('0x14')][_0x9da7('0x16')]);return _0x5e237d(_0x337f17[_0x9da7('0x14')]['message']);}else{logger['info'](_0x9da7('0xf'),_0x1bb7cc,_0x9da7('0x12'));_0x5e237d(_0x337f17[_0x9da7('0x17')][_0x9da7('0x16')]);}})[_0x9da7('0x18')](function(_0x4f4d94){logger[_0x9da7('0x14')](_0x9da7('0xf'),_0x1bb7cc,_0x4f4d94);_0xaf95b3(_0x4f4d94);});});}exports[_0x9da7('0x19')]=function(_0x42a5f8){var _0x4019bb=this;return new Promise(function(_0x50cae0,_0x338250){return db['SmsQueueReport'][_0x9da7('0x1a')](_0x42a5f8[_0x9da7('0x1b')],{'raw':_0x42a5f8[_0x9da7('0x1c')]?_0x42a5f8['options']['raw']===undefined?!![]:![]:!![]})[_0x9da7('0xd')](function(_0xb2fe56){logger['info']('CreateSmsQueueReport',_0x42a5f8);logger[_0x9da7('0x10')](_0x9da7('0x19'),_0x42a5f8,JSON[_0x9da7('0x13')](_0xb2fe56));_0x50cae0(_0xb2fe56);})[_0x9da7('0x18')](function(_0xa37ac5){logger[_0x9da7('0x14')](_0x9da7('0x19'),_0xa37ac5[_0x9da7('0x16')],_0x42a5f8);_0x338250(_0x4019bb[_0x9da7('0x14')](0x1f4,_0xa37ac5[_0x9da7('0x16')]));});});};exports['UpdateSmsQueueReport']=function(_0x2bf683){var _0x49cfa2=this;return new Promise(function(_0xfdf333,_0x285256){return db[_0x9da7('0x1d')][_0x9da7('0x1e')](_0x2bf683[_0x9da7('0x1b')],{'raw':_0x2bf683['options']?_0x2bf683[_0x9da7('0x1c')]['raw']===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x2bf683['options']?_0x2bf683[_0x9da7('0x1c')][_0x9da7('0x1f')]||null:null,'attributes':_0x2bf683[_0x9da7('0x1c')]?_0x2bf683[_0x9da7('0x1c')]['attributes']||null:null,'limit':_0x2bf683['options']?_0x2bf683[_0x9da7('0x1c')][_0x9da7('0x20')]||null:null})['then'](function(_0x2aa5c2){logger['info'](_0x9da7('0x21'),_0x2bf683);logger[_0x9da7('0x10')](_0x9da7('0x21'),_0x2bf683,JSON['stringify'](_0x2aa5c2));_0xfdf333(_0x2aa5c2);})[_0x9da7('0x18')](function(_0x406716){logger['error'](_0x9da7('0x21'),_0x406716[_0x9da7('0x16')],_0x2bf683);_0x285256(_0x49cfa2[_0x9da7('0x14')](0x1f4,_0x406716[_0x9da7('0x16')]));});});};
\ No newline at end of file
index 7a2e071..4f00d8d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4f17=['put','update','delete','/:id','destroy','exports','multer','path','connect-timeout','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','isAuthenticated','get','describe','post','create'];(function(_0x83f841,_0x4a76bb){var _0x1f4b73=function(_0x3f14df){while(--_0x3f14df){_0x83f841['push'](_0x83f841['shift']());}};_0x1f4b73(++_0x4a76bb);}(_0x4f17,0x9e));var _0x74f1=function(_0x8c1005,_0x1f3f16){_0x8c1005=_0x8c1005-0x0;var _0x175354=_0x4f17[_0x8c1005];return _0x175354;};'use strict';var multer=require(_0x74f1('0x0'));var util=require('util');var path=require(_0x74f1('0x1'));var timeout=require(_0x74f1('0x2'));var express=require('express');var router=express[_0x74f1('0x3')]();var fs_extra=require(_0x74f1('0x4'));var auth=require(_0x74f1('0x5'));var interaction=require(_0x74f1('0x6'));var config=require(_0x74f1('0x7'));var controller=require('./smsTransferReport.controller');router['get']('/',auth[_0x74f1('0x8')](),controller['index']);router[_0x74f1('0x9')]('/describe',auth[_0x74f1('0x8')](),controller[_0x74f1('0xa')]);router[_0x74f1('0x9')]('/:id',auth[_0x74f1('0x8')](),controller['show']);router[_0x74f1('0xb')]('/',auth['isAuthenticated'](),controller[_0x74f1('0xc')]);router[_0x74f1('0xd')]('/:id',auth['isAuthenticated'](),controller[_0x74f1('0xe')]);router[_0x74f1('0xf')](_0x74f1('0x10'),auth[_0x74f1('0x8')](),controller[_0x74f1('0x11')]);module[_0x74f1('0x12')]=router;
\ No newline at end of file
+var _0x9f5a=['delete','destroy','multer','util','path','connect-timeout','Router','fs-extra','../../components/auth/service','../../config/environment','get','isAuthenticated','/describe','describe','/:id','post','put'];(function(_0x1f25d2,_0x1b70a0){var _0x571982=function(_0x73987d){while(--_0x73987d){_0x1f25d2['push'](_0x1f25d2['shift']());}};_0x571982(++_0x1b70a0);}(_0x9f5a,0xbd));var _0xa9f5=function(_0x30203b,_0x2283a0){_0x30203b=_0x30203b-0x0;var _0x3ccad6=_0x9f5a[_0x30203b];return _0x3ccad6;};'use strict';var multer=require(_0xa9f5('0x0'));var util=require(_0xa9f5('0x1'));var path=require(_0xa9f5('0x2'));var timeout=require(_0xa9f5('0x3'));var express=require('express');var router=express[_0xa9f5('0x4')]();var fs_extra=require(_0xa9f5('0x5'));var auth=require(_0xa9f5('0x6'));var interaction=require('../../components/interaction/service');var config=require(_0xa9f5('0x7'));var controller=require('./smsTransferReport.controller');router[_0xa9f5('0x8')]('/',auth[_0xa9f5('0x9')](),controller['index']);router[_0xa9f5('0x8')](_0xa9f5('0xa'),auth[_0xa9f5('0x9')](),controller[_0xa9f5('0xb')]);router[_0xa9f5('0x8')](_0xa9f5('0xc'),auth[_0xa9f5('0x9')](),controller['show']);router[_0xa9f5('0xd')]('/',auth[_0xa9f5('0x9')](),controller['create']);router[_0xa9f5('0xe')](_0xa9f5('0xc'),auth['isAuthenticated'](),controller['update']);router[_0xa9f5('0xf')](_0xa9f5('0xc'),auth[_0xa9f5('0x9')](),controller[_0xa9f5('0x10')]);module['exports']=router;
\ No newline at end of file
index 4da6c88..c5a8cc8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xedd9=['account','agent','queue','NOW','sequelize','exports','STRING','ENUM'];(function(_0x2061eb,_0x26202a){var _0x1824e9=function(_0x4fceac){while(--_0x4fceac){_0x2061eb['push'](_0x2061eb['shift']());}};_0x1824e9(++_0x26202a);}(_0xedd9,0xfc));var _0x9edd=function(_0x2635a5,_0x5499e5){_0x2635a5=_0x2635a5-0x0;var _0x44197d=_0xedd9[_0x2635a5];return _0x44197d;};'use strict';var moment=require('moment');var Sequelize=require(_0x9edd('0x0'));module[_0x9edd('0x1')]={'uniqueid':{'type':Sequelize[_0x9edd('0x2')],'allowNull':![]},'type':{'type':Sequelize[_0x9edd('0x3')](_0x9edd('0x4'),_0x9edd('0x5'),_0x9edd('0x6')),'allowNull':![],'defaultValue':_0x9edd('0x6')},'transferredAt':{'type':Sequelize['DATE'],'allowNull':![],'defaultValue':Sequelize[_0x9edd('0x7')]}};
\ No newline at end of file
+var _0x008c=['ENUM','agent','queue','DATE','NOW','moment','sequelize','exports','STRING'];(function(_0x174346,_0x4737ec){var _0x28d068=function(_0x3023c5){while(--_0x3023c5){_0x174346['push'](_0x174346['shift']());}};_0x28d068(++_0x4737ec);}(_0x008c,0x188));var _0xc008=function(_0x30f395,_0x3629b5){_0x30f395=_0x30f395-0x0;var _0x2ea0ee=_0x008c[_0x30f395];return _0x2ea0ee;};'use strict';var moment=require(_0xc008('0x0'));var Sequelize=require(_0xc008('0x1'));module[_0xc008('0x2')]={'uniqueid':{'type':Sequelize[_0xc008('0x3')],'allowNull':![]},'type':{'type':Sequelize[_0xc008('0x4')]('account',_0xc008('0x5'),_0xc008('0x6')),'allowNull':![],'defaultValue':_0xc008('0x6')},'transferredAt':{'type':Sequelize[_0xc008('0x7')],'allowNull':![],'defaultValue':Sequelize[_0xc008('0x8')]}};
\ No newline at end of file
index 31b277d..a5f05bf 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5c2a=['../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','end','json','undefined','limit','count','offset','status','set','Content-Range','apply','update','then','error','name','index','map','SmsTransferReport','type','model','query','keys','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','sort','pick','filter','where','VIRTUAL','options','include','findAll','rows','catch','params','rawAttributes','includeAll','find','create','body','destroy','describe','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','bluebird','util','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api'];(function(_0x278c41,_0x479185){var _0x272a1f=function(_0x54b0cb){while(--_0x54b0cb){_0x278c41['push'](_0x278c41['shift']());}};_0x272a1f(++_0x479185);}(_0x5c2a,0x1e9));var _0xa5c2=function(_0x2dc343,_0xf015a2){_0x2dc343=_0x2dc343-0x0;var _0x51eac5=_0x5c2a[_0x2dc343];return _0x51eac5;};'use strict';var emlformat=require(_0xa5c2('0x0'));var rimraf=require(_0xa5c2('0x1'));var zipdir=require(_0xa5c2('0x2'));var jsonpatch=require(_0xa5c2('0x3'));var rp=require(_0xa5c2('0x4'));var moment=require('moment');var BPromise=require(_0xa5c2('0x5'));var Mustache=require('mustache');var util=require(_0xa5c2('0x6'));var path=require('path');var sox=require(_0xa5c2('0x7'));var csv=require(_0xa5c2('0x8'));var ejs=require(_0xa5c2('0x9'));var fs=require('fs');var fs_extra=require(_0xa5c2('0xa'));var _=require(_0xa5c2('0xb'));var squel=require(_0xa5c2('0xc'));var crypto=require(_0xa5c2('0xd'));var jsforce=require('jsforce');var deskjs=require('desk.js');var toCsv=require(_0xa5c2('0x8'));var querystring=require('querystring');var Papa=require(_0xa5c2('0xe'));var Redis=require(_0xa5c2('0xf'));var authService=require(_0xa5c2('0x10'));var qs=require(_0xa5c2('0x11'));var as=require(_0xa5c2('0x12'));var hardwareService=require(_0xa5c2('0x13'));var logger=require(_0xa5c2('0x14'))(_0xa5c2('0x15'));var utils=require(_0xa5c2('0x16'));var config=require(_0xa5c2('0x17'));var licenseUtil=require(_0xa5c2('0x18'));var db=require(_0xa5c2('0x19'))['db'];function respondWithStatusCode(_0x38fc9a,_0x6b2d4){_0x6b2d4=_0x6b2d4||0xcc;return function(_0x160546){if(_0x160546){return _0x38fc9a[_0xa5c2('0x1a')](_0x6b2d4);}return _0x38fc9a['status'](_0x6b2d4)[_0xa5c2('0x1b')]();};}function respondWithResult(_0x12ff1f,_0x419ead){_0x419ead=_0x419ead||0xc8;return function(_0xcbd4f3){if(_0xcbd4f3){return _0x12ff1f['status'](_0x419ead)[_0xa5c2('0x1c')](_0xcbd4f3);}};}function respondWithFilteredResult(_0x4b8cdc,_0x1dfc93){return function(_0x1601d2){if(_0x1601d2){var _0x3e4a8f=typeof _0x1dfc93['offset']===_0xa5c2('0x1d')&&typeof _0x1dfc93[_0xa5c2('0x1e')]===_0xa5c2('0x1d');var _0x138426=_0x1601d2['count'];var _0x40bfe5=_0x3e4a8f?0x0:_0x1dfc93['offset'];var _0x30ac22=_0x3e4a8f?_0x1601d2[_0xa5c2('0x1f')]:_0x1dfc93[_0xa5c2('0x20')]+_0x1dfc93[_0xa5c2('0x1e')];var _0x3196ee;if(_0x30ac22>=_0x138426){_0x30ac22=_0x138426;_0x3196ee=0xc8;}else{_0x3196ee=0xce;}_0x4b8cdc[_0xa5c2('0x21')](_0x3196ee);return _0x4b8cdc[_0xa5c2('0x22')](_0xa5c2('0x23'),_0x40bfe5+'-'+_0x30ac22+'/'+_0x138426)[_0xa5c2('0x1c')](_0x1601d2);}return null;};}function patchUpdates(_0x2a99cd){return function(_0x3d2e20){try{jsonpatch[_0xa5c2('0x24')](_0x3d2e20,_0x2a99cd,!![]);}catch(_0x50e226){return BPromise['reject'](_0x50e226);}return _0x3d2e20['save']();};}function saveUpdates(_0x3476a7,_0x55c048){return function(_0x14e55a){if(_0x14e55a){return _0x14e55a[_0xa5c2('0x25')](_0x3476a7)[_0xa5c2('0x26')](function(_0x5caf31){return _0x5caf31;});}return null;};}function removeEntity(_0x100ff3,_0x1516b8){return function(_0x4c7ba4){if(_0x4c7ba4){return _0x4c7ba4['destroy']()[_0xa5c2('0x26')](function(){_0x100ff3[_0xa5c2('0x21')](0xcc)[_0xa5c2('0x1b')]();});}};}function handleEntityNotFound(_0x56e656,_0x4f2a3c){return function(_0x2bdeee){if(!_0x2bdeee){_0x56e656[_0xa5c2('0x1a')](0x194);}return _0x2bdeee;};}function handleError(_0x1c94e5,_0x49cbae){_0x49cbae=_0x49cbae||0x1f4;return function(_0x4e14aa){logger[_0xa5c2('0x27')](_0x4e14aa['stack']);if(_0x4e14aa[_0xa5c2('0x28')]){delete _0x4e14aa[_0xa5c2('0x28')];}_0x1c94e5[_0xa5c2('0x21')](_0x49cbae)['send'](_0x4e14aa);};}exports[_0xa5c2('0x29')]=function(_0xd73eea,_0xd9c212){var _0x5164b8={},_0x4b2b71={},_0xb32212={'count':0x0,'rows':[]};var _0xa540c6=_[_0xa5c2('0x2a')](db[_0xa5c2('0x2b')]['rawAttributes'],function(_0x512a20){return{'name':_0x512a20['fieldName'],'type':_0x512a20[_0xa5c2('0x2c')]['key']};});_0x4b2b71[_0xa5c2('0x2d')]=_[_0xa5c2('0x2a')](_0xa540c6,'name');_0x4b2b71[_0xa5c2('0x2e')]=_[_0xa5c2('0x2f')](_0xd73eea[_0xa5c2('0x2e')]);_0x4b2b71[_0xa5c2('0x30')]=_[_0xa5c2('0x31')](_0x4b2b71[_0xa5c2('0x2d')],_0x4b2b71[_0xa5c2('0x2e')]);_0x5164b8[_0xa5c2('0x32')]=_['intersection'](_0x4b2b71[_0xa5c2('0x2d')],qs[_0xa5c2('0x33')](_0xd73eea[_0xa5c2('0x2e')][_0xa5c2('0x33')]));_0x5164b8[_0xa5c2('0x32')]=_0x5164b8[_0xa5c2('0x32')][_0xa5c2('0x34')]?_0x5164b8[_0xa5c2('0x32')]:_0x4b2b71[_0xa5c2('0x2d')];if(!_0xd73eea[_0xa5c2('0x2e')][_0xa5c2('0x35')](_0xa5c2('0x36'))){_0x5164b8[_0xa5c2('0x1e')]=qs[_0xa5c2('0x1e')](_0xd73eea[_0xa5c2('0x2e')][_0xa5c2('0x1e')]);_0x5164b8[_0xa5c2('0x20')]=qs['offset'](_0xd73eea['query'][_0xa5c2('0x20')]);}_0x5164b8['order']=qs['sort'](_0xd73eea[_0xa5c2('0x2e')][_0xa5c2('0x37')]);_0x5164b8['where']=qs[_0xa5c2('0x30')](_[_0xa5c2('0x38')](_0xd73eea[_0xa5c2('0x2e')],_0x4b2b71[_0xa5c2('0x30')]),_0xa540c6);if(_0xd73eea[_0xa5c2('0x2e')][_0xa5c2('0x39')]){_0x5164b8[_0xa5c2('0x3a')]=_['merge'](_0x5164b8[_0xa5c2('0x3a')],{'$or':_[_0xa5c2('0x2a')](_0xa540c6,function(_0x1917b3){if(_0x1917b3[_0xa5c2('0x2c')]!==_0xa5c2('0x3b')){var _0x481b45={};_0x481b45[_0x1917b3[_0xa5c2('0x28')]]={'$like':'%'+_0xd73eea[_0xa5c2('0x2e')][_0xa5c2('0x39')]+'%'};return _0x481b45;}})});}_0x5164b8=_['merge']({},_0x5164b8,_0xd73eea[_0xa5c2('0x3c')]);var _0x2d51bb={'where':_0x5164b8['where']};return db[_0xa5c2('0x2b')][_0xa5c2('0x1f')](_0x2d51bb)['then'](function(_0x412333){_0xb32212[_0xa5c2('0x1f')]=_0x412333;if(_0xd73eea[_0xa5c2('0x2e')]['includeAll']){_0x5164b8[_0xa5c2('0x3d')]=[{'all':!![]}];}return db[_0xa5c2('0x2b')][_0xa5c2('0x3e')](_0x5164b8);})[_0xa5c2('0x26')](function(_0x211e4b){_0xb32212[_0xa5c2('0x3f')]=_0x211e4b;return _0xb32212;})['then'](respondWithFilteredResult(_0xd9c212,_0x5164b8))[_0xa5c2('0x40')](handleError(_0xd9c212,null));};exports['show']=function(_0x17380f,_0x517210){var _0x368f15={'raw':!![],'where':{'id':_0x17380f[_0xa5c2('0x41')]['id']}},_0x1aa2a0={};_0x1aa2a0[_0xa5c2('0x2d')]=_[_0xa5c2('0x2f')](db['SmsTransferReport'][_0xa5c2('0x42')]);_0x1aa2a0['query']=_[_0xa5c2('0x2f')](_0x17380f[_0xa5c2('0x2e')]);_0x1aa2a0[_0xa5c2('0x30')]=_['intersection'](_0x1aa2a0[_0xa5c2('0x2d')],_0x1aa2a0[_0xa5c2('0x2e')]);_0x368f15[_0xa5c2('0x32')]=_[_0xa5c2('0x31')](_0x1aa2a0[_0xa5c2('0x2d')],qs['fields'](_0x17380f[_0xa5c2('0x2e')][_0xa5c2('0x33')]));_0x368f15[_0xa5c2('0x32')]=_0x368f15['attributes'][_0xa5c2('0x34')]?_0x368f15[_0xa5c2('0x32')]:_0x1aa2a0[_0xa5c2('0x2d')];if(_0x17380f[_0xa5c2('0x2e')][_0xa5c2('0x43')]){_0x368f15[_0xa5c2('0x3d')]=[{'all':!![]}];}_0x368f15=_['merge']({},_0x368f15,_0x17380f['options']);return db[_0xa5c2('0x2b')][_0xa5c2('0x44')](_0x368f15)[_0xa5c2('0x26')](handleEntityNotFound(_0x517210,null))[_0xa5c2('0x26')](respondWithResult(_0x517210,null))[_0xa5c2('0x40')](handleError(_0x517210,null));};exports[_0xa5c2('0x45')]=function(_0x1a5c63,_0x5ec21c){return db['SmsTransferReport'][_0xa5c2('0x45')](_0x1a5c63[_0xa5c2('0x46')],{})['then'](respondWithResult(_0x5ec21c,0xc9))[_0xa5c2('0x40')](handleError(_0x5ec21c,null));};exports[_0xa5c2('0x25')]=function(_0x3a1b83,_0x345207){if(_0x3a1b83['body']['id']){delete _0x3a1b83[_0xa5c2('0x46')]['id'];}return db[_0xa5c2('0x2b')][_0xa5c2('0x44')]({'where':{'id':_0x3a1b83[_0xa5c2('0x41')]['id']}})[_0xa5c2('0x26')](handleEntityNotFound(_0x345207,null))['then'](saveUpdates(_0x3a1b83['body'],null))['then'](respondWithResult(_0x345207,null))[_0xa5c2('0x40')](handleError(_0x345207,null));};exports[_0xa5c2('0x47')]=function(_0x1083cb,_0x8b5251){return db[_0xa5c2('0x2b')][_0xa5c2('0x44')]({'where':{'id':_0x1083cb[_0xa5c2('0x41')]['id']}})[_0xa5c2('0x26')](handleEntityNotFound(_0x8b5251,null))['then'](removeEntity(_0x8b5251,null))[_0xa5c2('0x40')](handleError(_0x8b5251,null));};exports[_0xa5c2('0x48')]=function(_0x5e775d,_0x17dfc9){return db['SmsTransferReport'][_0xa5c2('0x48')]()[_0xa5c2('0x26')](respondWithResult(_0x17dfc9,null))[_0xa5c2('0x40')](handleError(_0x17dfc9,null));};
\ No newline at end of file
+var _0xda28=['nolimit','where','pick','filter','merge','VIRTUAL','options','includeAll','include','findAll','rows','keys','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','squel','crypto','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/utils','../../config/environment','../../mysqldb','sendStatus','end','json','offset','limit','undefined','count','Content-Range','apply','save','update','destroy','then','status','error','stack','name','send','map','SmsTransferReport','rawAttributes','fieldName','type','key','model','query','filters','intersection','attributes','fields','length','hasOwnProperty'];(function(_0x35a3e5,_0x284e22){var _0x31e9ff=function(_0x6344f4){while(--_0x6344f4){_0x35a3e5['push'](_0x35a3e5['shift']());}};_0x31e9ff(++_0x284e22);}(_0xda28,0xf9));var _0x8da2=function(_0x3573a0,_0x24de20){_0x3573a0=_0x3573a0-0x0;var _0x10afad=_0xda28[_0x3573a0];return _0x10afad;};'use strict';var emlformat=require(_0x8da2('0x0'));var rimraf=require(_0x8da2('0x1'));var zipdir=require(_0x8da2('0x2'));var jsonpatch=require(_0x8da2('0x3'));var rp=require(_0x8da2('0x4'));var moment=require(_0x8da2('0x5'));var BPromise=require(_0x8da2('0x6'));var Mustache=require(_0x8da2('0x7'));var util=require('util');var path=require(_0x8da2('0x8'));var sox=require(_0x8da2('0x9'));var csv=require(_0x8da2('0xa'));var ejs=require(_0x8da2('0xb'));var fs=require('fs');var fs_extra=require(_0x8da2('0xc'));var _=require('lodash');var squel=require(_0x8da2('0xd'));var crypto=require(_0x8da2('0xe'));var jsforce=require('jsforce');var deskjs=require(_0x8da2('0xf'));var toCsv=require(_0x8da2('0xa'));var querystring=require(_0x8da2('0x10'));var Papa=require(_0x8da2('0x11'));var Redis=require(_0x8da2('0x12'));var authService=require(_0x8da2('0x13'));var qs=require(_0x8da2('0x14'));var as=require(_0x8da2('0x15'));var hardwareService=require(_0x8da2('0x16'));var logger=require('../../config/logger')(_0x8da2('0x17'));var utils=require(_0x8da2('0x18'));var config=require(_0x8da2('0x19'));var licenseUtil=require('../../config/license/util');var db=require(_0x8da2('0x1a'))['db'];function respondWithStatusCode(_0x1999da,_0x20c7aa){_0x20c7aa=_0x20c7aa||0xcc;return function(_0x1521b9){if(_0x1521b9){return _0x1999da[_0x8da2('0x1b')](_0x20c7aa);}return _0x1999da['status'](_0x20c7aa)[_0x8da2('0x1c')]();};}function respondWithResult(_0x458e7e,_0x550965){_0x550965=_0x550965||0xc8;return function(_0x1bef9c){if(_0x1bef9c){return _0x458e7e['status'](_0x550965)[_0x8da2('0x1d')](_0x1bef9c);}};}function respondWithFilteredResult(_0x459138,_0x1b1fbc){return function(_0x558fb5){if(_0x558fb5){var _0x5f361a=typeof _0x1b1fbc[_0x8da2('0x1e')]==='undefined'&&typeof _0x1b1fbc[_0x8da2('0x1f')]===_0x8da2('0x20');var _0x1d1352=_0x558fb5[_0x8da2('0x21')];var _0x2c5c18=_0x5f361a?0x0:_0x1b1fbc['offset'];var _0x4817b3=_0x5f361a?_0x558fb5['count']:_0x1b1fbc[_0x8da2('0x1e')]+_0x1b1fbc[_0x8da2('0x1f')];var _0x213028;if(_0x4817b3>=_0x1d1352){_0x4817b3=_0x1d1352;_0x213028=0xc8;}else{_0x213028=0xce;}_0x459138['status'](_0x213028);return _0x459138['set'](_0x8da2('0x22'),_0x2c5c18+'-'+_0x4817b3+'/'+_0x1d1352)['json'](_0x558fb5);}return null;};}function patchUpdates(_0x241c73){return function(_0xd5ff50){try{jsonpatch[_0x8da2('0x23')](_0xd5ff50,_0x241c73,!![]);}catch(_0x5539c3){return BPromise['reject'](_0x5539c3);}return _0xd5ff50[_0x8da2('0x24')]();};}function saveUpdates(_0x35896b,_0x3c423a){return function(_0x5f5c35){if(_0x5f5c35){return _0x5f5c35[_0x8da2('0x25')](_0x35896b)['then'](function(_0x26fd50){return _0x26fd50;});}return null;};}function removeEntity(_0x30b0c8,_0x18e355){return function(_0x217697){if(_0x217697){return _0x217697[_0x8da2('0x26')]()[_0x8da2('0x27')](function(){_0x30b0c8[_0x8da2('0x28')](0xcc)[_0x8da2('0x1c')]();});}};}function handleEntityNotFound(_0xae32b5,_0x2c66f){return function(_0x4d93e0){if(!_0x4d93e0){_0xae32b5[_0x8da2('0x1b')](0x194);}return _0x4d93e0;};}function handleError(_0xcfa0f9,_0x3bc603){_0x3bc603=_0x3bc603||0x1f4;return function(_0x486547){logger[_0x8da2('0x29')](_0x486547[_0x8da2('0x2a')]);if(_0x486547[_0x8da2('0x2b')]){delete _0x486547[_0x8da2('0x2b')];}_0xcfa0f9[_0x8da2('0x28')](_0x3bc603)[_0x8da2('0x2c')](_0x486547);};}exports['index']=function(_0x4e2957,_0x5a70c7){var _0x504888={},_0x1afa92={},_0x4ebb21={'count':0x0,'rows':[]};var _0x75f1d7=_[_0x8da2('0x2d')](db[_0x8da2('0x2e')][_0x8da2('0x2f')],function(_0x25c72b){return{'name':_0x25c72b[_0x8da2('0x30')],'type':_0x25c72b[_0x8da2('0x31')][_0x8da2('0x32')]};});_0x1afa92[_0x8da2('0x33')]=_['map'](_0x75f1d7,_0x8da2('0x2b'));_0x1afa92[_0x8da2('0x34')]=_['keys'](_0x4e2957['query']);_0x1afa92[_0x8da2('0x35')]=_[_0x8da2('0x36')](_0x1afa92[_0x8da2('0x33')],_0x1afa92[_0x8da2('0x34')]);_0x504888[_0x8da2('0x37')]=_[_0x8da2('0x36')](_0x1afa92[_0x8da2('0x33')],qs[_0x8da2('0x38')](_0x4e2957[_0x8da2('0x34')][_0x8da2('0x38')]));_0x504888['attributes']=_0x504888['attributes'][_0x8da2('0x39')]?_0x504888[_0x8da2('0x37')]:_0x1afa92[_0x8da2('0x33')];if(!_0x4e2957['query'][_0x8da2('0x3a')](_0x8da2('0x3b'))){_0x504888[_0x8da2('0x1f')]=qs[_0x8da2('0x1f')](_0x4e2957['query'][_0x8da2('0x1f')]);_0x504888[_0x8da2('0x1e')]=qs['offset'](_0x4e2957[_0x8da2('0x34')]['offset']);}_0x504888['order']=qs['sort'](_0x4e2957[_0x8da2('0x34')]['sort']);_0x504888[_0x8da2('0x3c')]=qs[_0x8da2('0x35')](_[_0x8da2('0x3d')](_0x4e2957[_0x8da2('0x34')],_0x1afa92['filters']),_0x75f1d7);if(_0x4e2957['query'][_0x8da2('0x3e')]){_0x504888['where']=_[_0x8da2('0x3f')](_0x504888[_0x8da2('0x3c')],{'$or':_[_0x8da2('0x2d')](_0x75f1d7,function(_0x5a4197){if(_0x5a4197[_0x8da2('0x31')]!==_0x8da2('0x40')){var _0x35bc09={};_0x35bc09[_0x5a4197['name']]={'$like':'%'+_0x4e2957['query'][_0x8da2('0x3e')]+'%'};return _0x35bc09;}})});}_0x504888=_[_0x8da2('0x3f')]({},_0x504888,_0x4e2957[_0x8da2('0x41')]);var _0x16854a={'where':_0x504888[_0x8da2('0x3c')]};return db[_0x8da2('0x2e')]['count'](_0x16854a)['then'](function(_0x568e5d){_0x4ebb21[_0x8da2('0x21')]=_0x568e5d;if(_0x4e2957['query'][_0x8da2('0x42')]){_0x504888[_0x8da2('0x43')]=[{'all':!![]}];}return db[_0x8da2('0x2e')][_0x8da2('0x44')](_0x504888);})[_0x8da2('0x27')](function(_0x245a5b){_0x4ebb21[_0x8da2('0x45')]=_0x245a5b;return _0x4ebb21;})['then'](respondWithFilteredResult(_0x5a70c7,_0x504888))['catch'](handleError(_0x5a70c7,null));};exports['show']=function(_0x46f4b3,_0xec728d){var _0x12365a={'raw':!![],'where':{'id':_0x46f4b3['params']['id']}},_0x455b3b={};_0x455b3b[_0x8da2('0x33')]=_[_0x8da2('0x46')](db[_0x8da2('0x2e')]['rawAttributes']);_0x455b3b[_0x8da2('0x34')]=_[_0x8da2('0x46')](_0x46f4b3[_0x8da2('0x34')]);_0x455b3b['filters']=_[_0x8da2('0x36')](_0x455b3b[_0x8da2('0x33')],_0x455b3b[_0x8da2('0x34')]);_0x12365a['attributes']=_[_0x8da2('0x36')](_0x455b3b['model'],qs[_0x8da2('0x38')](_0x46f4b3[_0x8da2('0x34')][_0x8da2('0x38')]));_0x12365a['attributes']=_0x12365a[_0x8da2('0x37')][_0x8da2('0x39')]?_0x12365a[_0x8da2('0x37')]:_0x455b3b[_0x8da2('0x33')];if(_0x46f4b3[_0x8da2('0x34')][_0x8da2('0x42')]){_0x12365a[_0x8da2('0x43')]=[{'all':!![]}];}_0x12365a=_[_0x8da2('0x3f')]({},_0x12365a,_0x46f4b3[_0x8da2('0x41')]);return db['SmsTransferReport'][_0x8da2('0x47')](_0x12365a)[_0x8da2('0x27')](handleEntityNotFound(_0xec728d,null))[_0x8da2('0x27')](respondWithResult(_0xec728d,null))[_0x8da2('0x48')](handleError(_0xec728d,null));};exports[_0x8da2('0x49')]=function(_0x1b0ac0,_0x53c66c){return db[_0x8da2('0x2e')]['create'](_0x1b0ac0[_0x8da2('0x4a')],{})[_0x8da2('0x27')](respondWithResult(_0x53c66c,0xc9))['catch'](handleError(_0x53c66c,null));};exports[_0x8da2('0x25')]=function(_0x51cefe,_0xa1c8b1){if(_0x51cefe[_0x8da2('0x4a')]['id']){delete _0x51cefe['body']['id'];}return db[_0x8da2('0x2e')][_0x8da2('0x47')]({'where':{'id':_0x51cefe[_0x8da2('0x4b')]['id']}})[_0x8da2('0x27')](handleEntityNotFound(_0xa1c8b1,null))[_0x8da2('0x27')](saveUpdates(_0x51cefe[_0x8da2('0x4a')],null))[_0x8da2('0x27')](respondWithResult(_0xa1c8b1,null))[_0x8da2('0x48')](handleError(_0xa1c8b1,null));};exports['destroy']=function(_0x1269a8,_0x4bf04e){return db[_0x8da2('0x2e')][_0x8da2('0x47')]({'where':{'id':_0x1269a8[_0x8da2('0x4b')]['id']}})[_0x8da2('0x27')](handleEntityNotFound(_0x4bf04e,null))[_0x8da2('0x27')](removeEntity(_0x4bf04e,null))['catch'](handleError(_0x4bf04e,null));};exports['describe']=function(_0x28f7b7,_0x4c0e3e){return db[_0x8da2('0x2e')][_0x8da2('0x4c')]()[_0x8da2('0x27')](respondWithResult(_0x4c0e3e,null))['catch'](handleError(_0x4c0e3e,null));};
\ No newline at end of file
index bb93095..f867fb5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xdee8=['rimraf','../../config/environment','./smsTransferReport.attributes','exports','SmsTransferReport','report_sms_transfer','uniqueid','lodash','../../config/logger','moment','bluebird','path'];(function(_0x377a39,_0x210428){var _0x564166=function(_0x2cf7cc){while(--_0x2cf7cc){_0x377a39['push'](_0x377a39['shift']());}};_0x564166(++_0x210428);}(_0xdee8,0x157));var _0x8dee=function(_0x2d21ab,_0x2dca0e){_0x2d21ab=_0x2d21ab-0x0;var _0x5f4bd2=_0xdee8[_0x2d21ab];return _0x5f4bd2;};'use strict';var _=require(_0x8dee('0x0'));var util=require('util');var logger=require(_0x8dee('0x1'))('api');var moment=require(_0x8dee('0x2'));var BPromise=require(_0x8dee('0x3'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x8dee('0x4'));var rimraf=require(_0x8dee('0x5'));var config=require(_0x8dee('0x6'));var attributes=require(_0x8dee('0x7'));module[_0x8dee('0x8')]=function(_0x2c766b,_0x36589f){return _0x2c766b['define'](_0x8dee('0x9'),attributes,{'tableName':_0x8dee('0xa'),'paranoid':![],'indexes':[{'name':'uniqueid','fields':[_0x8dee('0xb')]}],'timestamps':!![]});};
\ No newline at end of file
+var _0xeac6=['bluebird','request-promise','path','rimraf','../../config/environment','./smsTransferReport.attributes','exports','define','SmsTransferReport','uniqueid','lodash','util','../../config/logger','moment'];(function(_0x19b0eb,_0x21518f){var _0x1b50eb=function(_0x382fc3){while(--_0x382fc3){_0x19b0eb['push'](_0x19b0eb['shift']());}};_0x1b50eb(++_0x21518f);}(_0xeac6,0xc0));var _0x6eac=function(_0x1f1446,_0x8a5def){_0x1f1446=_0x1f1446-0x0;var _0x4cd62b=_0xeac6[_0x1f1446];return _0x4cd62b;};'use strict';var _=require(_0x6eac('0x0'));var util=require(_0x6eac('0x1'));var logger=require(_0x6eac('0x2'))('api');var moment=require(_0x6eac('0x3'));var BPromise=require(_0x6eac('0x4'));var rp=require(_0x6eac('0x5'));var fs=require('fs');var path=require(_0x6eac('0x6'));var rimraf=require(_0x6eac('0x7'));var config=require(_0x6eac('0x8'));var attributes=require(_0x6eac('0x9'));module[_0x6eac('0xa')]=function(_0xebef33,_0x429b19){return _0xebef33[_0x6eac('0xb')](_0x6eac('0xc'),attributes,{'tableName':'report_sms_transfer','paranoid':![],'indexes':[{'name':_0x6eac('0xd'),'fields':['uniqueid']}],'timestamps':!![]});};
\ No newline at end of file
index 534342f..fcc55ae 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3a0f=['info','SmsTransferReport,\x20%s,\x20%s','request\x20sent','debug','SmsTransferReport,\x20%s,\x20%s,\x20%s','stringify','error','message','result','catch','moment','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','request','then'];(function(_0x4d467f,_0x54d2e7){var _0x521bb5=function(_0x126081){while(--_0x126081){_0x4d467f['push'](_0x4d467f['shift']());}};_0x521bb5(++_0x54d2e7);}(_0x3a0f,0x145));var _0xf3a0=function(_0x5d42ab,_0x43d431){_0x5d42ab=_0x5d42ab-0x0;var _0x230850=_0x3a0f[_0x5d42ab];return _0x230850;};'use strict';var _=require('lodash');var util=require('util');var moment=require(_0xf3a0('0x0'));var BPromise=require('bluebird');var rs=require('randomstring');var fs=require('fs');var Redis=require(_0xf3a0('0x1'));var db=require(_0xf3a0('0x2'))['db'];var utils=require(_0xf3a0('0x3'));var logger=require(_0xf3a0('0x4'))(_0xf3a0('0x5'));var config=require(_0xf3a0('0x6'));var jayson=require(_0xf3a0('0x7'));var client=jayson[_0xf3a0('0x8')]['http']({'port':0x232a});function respondWithRpcPromise(_0x4736b7,_0x313b13,_0x3e550f){return new BPromise(function(_0xb2784d,_0x5d64bc){return client[_0xf3a0('0x9')](_0x4736b7,_0x3e550f)[_0xf3a0('0xa')](function(_0x214171){logger[_0xf3a0('0xb')](_0xf3a0('0xc'),_0x313b13,_0xf3a0('0xd'));logger[_0xf3a0('0xe')](_0xf3a0('0xf'),_0x313b13,'request\x20sent',JSON[_0xf3a0('0x10')](_0x214171));if(_0x214171[_0xf3a0('0x11')]){if(_0x214171[_0xf3a0('0x11')]['code']===0x1f4){logger[_0xf3a0('0x11')](_0xf3a0('0xc'),_0x313b13,_0x214171[_0xf3a0('0x11')]['message']);return _0x5d64bc(_0x214171['error'][_0xf3a0('0x12')]);}logger[_0xf3a0('0x11')](_0xf3a0('0xc'),_0x313b13,_0x214171[_0xf3a0('0x11')]['message']);return _0xb2784d(_0x214171[_0xf3a0('0x11')][_0xf3a0('0x12')]);}else{logger[_0xf3a0('0xb')](_0xf3a0('0xc'),_0x313b13,_0xf3a0('0xd'));_0xb2784d(_0x214171[_0xf3a0('0x13')][_0xf3a0('0x12')]);}})[_0xf3a0('0x14')](function(_0x59061a){logger['error'](_0xf3a0('0xc'),_0x313b13,_0x59061a);_0x5d64bc(_0x59061a);});});}
\ No newline at end of file
+var _0x9649=['bluebird','ioredis','../../mysqldb','../../config/logger','../../config/environment','jayson/promise','client','http','request','info','debug','SmsTransferReport,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','code','SmsTransferReport,\x20%s,\x20%s','message','catch','lodash','util','moment'];(function(_0x3a71b4,_0x3b49cc){var _0x566b92=function(_0x47e757){while(--_0x47e757){_0x3a71b4['push'](_0x3a71b4['shift']());}};_0x566b92(++_0x3b49cc);}(_0x9649,0x19f));var _0x9964=function(_0x21e044,_0x2fa206){_0x21e044=_0x21e044-0x0;var _0x3c03f4=_0x9649[_0x21e044];return _0x3c03f4;};'use strict';var _=require(_0x9964('0x0'));var util=require(_0x9964('0x1'));var moment=require(_0x9964('0x2'));var BPromise=require(_0x9964('0x3'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x9964('0x4'));var db=require(_0x9964('0x5'))['db'];var utils=require('../../config/utils');var logger=require(_0x9964('0x6'))('rpc');var config=require(_0x9964('0x7'));var jayson=require(_0x9964('0x8'));var client=jayson[_0x9964('0x9')][_0x9964('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x40c60b,_0x1338e7,_0x3fa639){return new BPromise(function(_0x4bec88,_0x45dda7){return client[_0x9964('0xb')](_0x40c60b,_0x3fa639)['then'](function(_0x10b88b){logger[_0x9964('0xc')]('SmsTransferReport,\x20%s,\x20%s',_0x1338e7,'request\x20sent');logger[_0x9964('0xd')](_0x9964('0xe'),_0x1338e7,_0x9964('0xf'),JSON[_0x9964('0x10')](_0x10b88b));if(_0x10b88b[_0x9964('0x11')]){if(_0x10b88b['error'][_0x9964('0x12')]===0x1f4){logger['error'](_0x9964('0x13'),_0x1338e7,_0x10b88b[_0x9964('0x11')]['message']);return _0x45dda7(_0x10b88b[_0x9964('0x11')][_0x9964('0x14')]);}logger['error'](_0x9964('0x13'),_0x1338e7,_0x10b88b[_0x9964('0x11')][_0x9964('0x14')]);return _0x4bec88(_0x10b88b[_0x9964('0x11')][_0x9964('0x14')]);}else{logger['info'](_0x9964('0x13'),_0x1338e7,_0x9964('0xf'));_0x4bec88(_0x10b88b['result'][_0x9964('0x14')]);}})[_0x9964('0x15')](function(_0x57fe55){logger[_0x9964('0x11')](_0x9964('0x13'),_0x1338e7,_0x57fe55);_0x45dda7(_0x57fe55);});});}
\ No newline at end of file
index 4f87ff7..d4dcc8e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8c3d=['path','express','Router','fs-extra','../../components/interaction/service','get','isAuthenticated','index','/:id/download','download','diskStorage','join','root','server/files/sounds/original/','originalname','replace','format','%s-%s%s','basename','extname','single','create','put','/:id','delete','exports','multer','util'];(function(_0x160c73,_0x2ee678){var _0xd9302=function(_0x169454){while(--_0x169454){_0x160c73['push'](_0x160c73['shift']());}};_0xd9302(++_0x2ee678);}(_0x8c3d,0x16a));var _0xd8c3=function(_0x2a6b55,_0x572485){_0x2a6b55=_0x2a6b55-0x0;var _0x3dd7fd=_0x8c3d[_0x2a6b55];return _0x3dd7fd;};'use strict';var multer=require(_0xd8c3('0x0'));var util=require(_0xd8c3('0x1'));var path=require(_0xd8c3('0x2'));var timeout=require('connect-timeout');var express=require(_0xd8c3('0x3'));var router=express[_0xd8c3('0x4')]();var fs_extra=require(_0xd8c3('0x5'));var auth=require('../../components/auth/service');var interaction=require(_0xd8c3('0x6'));var config=require('../../config/environment');var controller=require('./sound.controller');router[_0xd8c3('0x7')]('/',auth[_0xd8c3('0x8')](),controller[_0xd8c3('0x9')]);router[_0xd8c3('0x7')]('/:id',auth['isAuthenticated'](),controller['show']);router['get'](_0xd8c3('0xa'),auth['isAuthenticated'](),controller[_0xd8c3('0xb')]);var upload=multer({'storage':multer[_0xd8c3('0xc')]({'destination':function(_0x1678d5,_0x15a632,_0x5e64c1){_0x5e64c1(null,path[_0xd8c3('0xd')](config[_0xd8c3('0xe')],_0xd8c3('0xf')));},'filename':function(_0x233ba4,_0x294e33,_0x5c99b4){_0x294e33[_0xd8c3('0x10')]=_0x294e33['originalname'][_0xd8c3('0x11')](/[+@&\/\\#,+()$~%'":*?<>{}\s\\|]/g,'-');_0x5c99b4(null,util[_0xd8c3('0x12')](_0xd8c3('0x13'),path[_0xd8c3('0x14')](_0x294e33['originalname'],path[_0xd8c3('0x15')](_0x294e33[_0xd8c3('0x10')])),Date['now'](),path[_0xd8c3('0x15')](_0x294e33['originalname'])));}})});router['post']('/',upload[_0xd8c3('0x16')]('file'),controller[_0xd8c3('0x17')]);router[_0xd8c3('0x18')](_0xd8c3('0x19'),auth[_0xd8c3('0x8')](),controller['update']);router['delete']('/:id',auth[_0xd8c3('0x8')](),controller[_0xd8c3('0x1a')]);module[_0xd8c3('0x1b')]=router;
\ No newline at end of file
+var _0xb76d=['diskStorage','join','root','server/files/sounds/original/','originalname','replace','basename','extname','now','post','single','create','put','delete','multer','path','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','get','isAuthenticated','index','/:id','/:id/download','download'];(function(_0x237546,_0xa81b26){var _0x233e29=function(_0x728aa4){while(--_0x728aa4){_0x237546['push'](_0x237546['shift']());}};_0x233e29(++_0xa81b26);}(_0xb76d,0x126));var _0xdb76=function(_0x170fcf,_0x3fb1f9){_0x170fcf=_0x170fcf-0x0;var _0x25ebae=_0xb76d[_0x170fcf];return _0x25ebae;};'use strict';var multer=require(_0xdb76('0x0'));var util=require('util');var path=require(_0xdb76('0x1'));var timeout=require('connect-timeout');var express=require(_0xdb76('0x2'));var router=express[_0xdb76('0x3')]();var fs_extra=require(_0xdb76('0x4'));var auth=require(_0xdb76('0x5'));var interaction=require(_0xdb76('0x6'));var config=require(_0xdb76('0x7'));var controller=require('./sound.controller');router[_0xdb76('0x8')]('/',auth[_0xdb76('0x9')](),controller[_0xdb76('0xa')]);router[_0xdb76('0x8')](_0xdb76('0xb'),auth[_0xdb76('0x9')](),controller['show']);router[_0xdb76('0x8')](_0xdb76('0xc'),auth[_0xdb76('0x9')](),controller[_0xdb76('0xd')]);var upload=multer({'storage':multer[_0xdb76('0xe')]({'destination':function(_0x41e853,_0x49e93c,_0xbf21db){_0xbf21db(null,path[_0xdb76('0xf')](config[_0xdb76('0x10')],_0xdb76('0x11')));},'filename':function(_0x1d474f,_0x3d2dcd,_0x589474){_0x3d2dcd[_0xdb76('0x12')]=_0x3d2dcd[_0xdb76('0x12')][_0xdb76('0x13')](/[+@&\/\\#,+()$~%'":*?<>{}\s\\|]/g,'-');_0x589474(null,util['format']('%s-%s%s',path[_0xdb76('0x14')](_0x3d2dcd[_0xdb76('0x12')],path[_0xdb76('0x15')](_0x3d2dcd[_0xdb76('0x12')])),Date[_0xdb76('0x16')](),path[_0xdb76('0x15')](_0x3d2dcd[_0xdb76('0x12')])));}})});router[_0xdb76('0x17')]('/',upload[_0xdb76('0x18')]('file'),controller[_0xdb76('0x19')]);router[_0xdb76('0x1a')]('/:id',auth[_0xdb76('0x9')](),controller['update']);router[_0xdb76('0x1b')](_0xdb76('0xb'),auth[_0xdb76('0x9')](),controller[_0xdb76('0x1b')]);module['exports']=router;
\ No newline at end of file
index ad32f72..d8d9e9f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x331c=['exports','STRING','name','FLOAT','BIGINT','INTEGER','sequelize'];(function(_0x5c0d08,_0x2bad87){var _0x3dfb64=function(_0x270a7d){while(--_0x270a7d){_0x5c0d08['push'](_0x5c0d08['shift']());}};_0x3dfb64(++_0x2bad87);}(_0x331c,0xca));var _0xc331=function(_0xa1e3e3,_0x29fe0e){_0xa1e3e3=_0xa1e3e3-0x0;var _0xc980e9=_0x331c[_0xa1e3e3];return _0xc980e9;};'use strict';var Sequelize=require(_0xc331('0x0'));module[_0xc331('0x1')]={'name':{'type':Sequelize[_0xc331('0x2')],'unique':_0xc331('0x3'),'allowNull':![]},'save_name':{'type':Sequelize[_0xc331('0x2')]},'display_name':{'type':Sequelize['STRING'],'defaultValue':''},'description':{'type':Sequelize[_0xc331('0x2')]},'original_format':{'type':Sequelize[_0xc331('0x2')]},'original_duration':{'type':Sequelize[_0xc331('0x4')]},'original_sampleCount':{'type':Sequelize[_0xc331('0x5')]},'original_channelCount':{'type':Sequelize['INTEGER']},'original_bitRate':{'type':Sequelize['BIGINT']},'original_sampleRate':{'type':Sequelize[_0xc331('0x6')]},'converted_format':{'type':Sequelize['STRING']},'converted_duration':{'type':Sequelize[_0xc331('0x4')]},'converted_sampleCount':{'type':Sequelize[_0xc331('0x5')]},'converted_channelCount':{'type':Sequelize[_0xc331('0x6')]},'converted_bitRate':{'type':Sequelize[_0xc331('0x5')]},'converted_sampleRate':{'type':Sequelize['INTEGER']}};
\ No newline at end of file
+var _0xd2ce=['BIGINT','exports','name','STRING','FLOAT'];(function(_0x252884,_0x117ddf){var _0x4de0e6=function(_0x442519){while(--_0x442519){_0x252884['push'](_0x252884['shift']());}};_0x4de0e6(++_0x117ddf);}(_0xd2ce,0x13c));var _0xed2c=function(_0x484e36,_0x4482d8){_0x484e36=_0x484e36-0x0;var _0xafc85d=_0xd2ce[_0x484e36];return _0xafc85d;};'use strict';var Sequelize=require('sequelize');module[_0xed2c('0x0')]={'name':{'type':Sequelize['STRING'],'unique':_0xed2c('0x1'),'allowNull':![]},'save_name':{'type':Sequelize[_0xed2c('0x2')]},'display_name':{'type':Sequelize[_0xed2c('0x2')],'defaultValue':''},'description':{'type':Sequelize[_0xed2c('0x2')]},'original_format':{'type':Sequelize[_0xed2c('0x2')]},'original_duration':{'type':Sequelize[_0xed2c('0x3')]},'original_sampleCount':{'type':Sequelize[_0xed2c('0x4')]},'original_channelCount':{'type':Sequelize['INTEGER']},'original_bitRate':{'type':Sequelize[_0xed2c('0x4')]},'original_sampleRate':{'type':Sequelize['INTEGER']},'converted_format':{'type':Sequelize[_0xed2c('0x2')]},'converted_duration':{'type':Sequelize[_0xed2c('0x3')]},'converted_sampleCount':{'type':Sequelize[_0xed2c('0x4')]},'converted_channelCount':{'type':Sequelize['INTEGER']},'converted_bitRate':{'type':Sequelize[_0xed2c('0x4')]},'converted_sampleRate':{'type':Sequelize['INTEGER']}};
\ No newline at end of file
index 55d5933..cafd14b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x41e1=['fields','length','nolimit','sort','where','filters','pick','filter','merge','VIRTUAL','count','includeAll','catch','show','rawAttributes','include','options','find','save_name','converted_format','join','Sequelize','ValidationError','download','root','server/files/sounds/converted','format','%s.%s','create','basename','file','originalname','filename','extname','substring','wav','Sound\x20upload\x20filepath:\x20%s','info','Sound\x20upload\x20destination:\x20%s','unlinkSync','send','original_duration','duration','original_sampleCount','sampleCount','channelCount','original_bitRate','sampleRate','converted_channelCount','converted_bitRate','bitRate','converted_sampleRate','chmodSync','0777','body','role','userProfileId','Unable\x20to\x20retrieve\x20the\x20current\x20user','user','UserProfileSection','autoAssociation','UserProfileResource','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','start','description','server/files/sounds/original','rimraf','request-promise','bluebird','mustache','util','path','sox','to-csv','fs-extra','lodash','crypto','jsforce','querystring','ioredis','../../components/parsers/qs','../../config/license/hardware','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','json','offset','limit','set','Content-Range','apply','reject','save','update','then','destroy','get','Sounds','error','stack','name','map','Sound','fieldName','type','key','model','query','keys','intersection','attributes'];(function(_0x340373,_0xe6d0){var _0x35999a=function(_0x1c2893){while(--_0x1c2893){_0x340373['push'](_0x340373['shift']());}};_0x35999a(++_0xe6d0);}(_0x41e1,0xb5));var _0x141e=function(_0x54dc1b,_0x364402){_0x54dc1b=_0x54dc1b-0x0;var _0x161157=_0x41e1[_0x54dc1b];return _0x161157;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x141e('0x0'));var zipdir=require('zip-dir');var jsonpatch=require('fast-json-patch');var rp=require(_0x141e('0x1'));var moment=require('moment');var BPromise=require(_0x141e('0x2'));var Mustache=require(_0x141e('0x3'));var util=require(_0x141e('0x4'));var path=require(_0x141e('0x5'));var sox=require(_0x141e('0x6'));var csv=require(_0x141e('0x7'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x141e('0x8'));var _=require(_0x141e('0x9'));var squel=require('squel');var crypto=require(_0x141e('0xa'));var jsforce=require(_0x141e('0xb'));var deskjs=require('desk.js');var toCsv=require(_0x141e('0x7'));var querystring=require(_0x141e('0xc'));var Papa=require('papaparse');var Redis=require(_0x141e('0xd'));var authService=require('../../components/auth/service');var qs=require(_0x141e('0xe'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x141e('0xf'));var logger=require('../../config/logger')('api');var utils=require(_0x141e('0x10'));var config=require(_0x141e('0x11'));var licenseUtil=require(_0x141e('0x12'));var db=require(_0x141e('0x13'))['db'];function respondWithStatusCode(_0x17c16d,_0x3329c4){_0x3329c4=_0x3329c4||0xcc;return function(_0x1ffcf6){if(_0x1ffcf6){return _0x17c16d[_0x141e('0x14')](_0x3329c4);}return _0x17c16d[_0x141e('0x15')](_0x3329c4)[_0x141e('0x16')]();};}function respondWithResult(_0x4ec2b6,_0x513f31){_0x513f31=_0x513f31||0xc8;return function(_0x5707e9){if(_0x5707e9){return _0x4ec2b6['status'](_0x513f31)[_0x141e('0x17')](_0x5707e9);}};}function respondWithFilteredResult(_0x32cf4c,_0x1f1513){return function(_0xeca261){if(_0xeca261){var _0x12cf79=typeof _0x1f1513['offset']==='undefined'&&typeof _0x1f1513['limit']==='undefined';var _0x10d19f=_0xeca261['count'];var _0x399861=_0x12cf79?0x0:_0x1f1513[_0x141e('0x18')];var _0x1f2515=_0x12cf79?_0xeca261['count']:_0x1f1513[_0x141e('0x18')]+_0x1f1513[_0x141e('0x19')];var _0x3fc924;if(_0x1f2515>=_0x10d19f){_0x1f2515=_0x10d19f;_0x3fc924=0xc8;}else{_0x3fc924=0xce;}_0x32cf4c[_0x141e('0x15')](_0x3fc924);return _0x32cf4c[_0x141e('0x1a')](_0x141e('0x1b'),_0x399861+'-'+_0x1f2515+'/'+_0x10d19f)['json'](_0xeca261);}return null;};}function patchUpdates(_0x1cff54){return function(_0x50cc66){try{jsonpatch[_0x141e('0x1c')](_0x50cc66,_0x1cff54,!![]);}catch(_0x560974){return BPromise[_0x141e('0x1d')](_0x560974);}return _0x50cc66[_0x141e('0x1e')]();};}function saveUpdates(_0xd011b5,_0x3a7e70){return function(_0x469f90){if(_0x469f90){return _0x469f90[_0x141e('0x1f')](_0xd011b5)[_0x141e('0x20')](function(_0x4e0f6e){return _0x4e0f6e;});}return null;};}function removeEntity(_0x223045,_0x612e1b){return function(_0x2187f7){if(_0x2187f7){return _0x2187f7[_0x141e('0x21')]()[_0x141e('0x20')](function(){var _0x19bf3f=_0x2187f7[_0x141e('0x22')]({'plain':!![]});var _0x716af9=_0x141e('0x23');return db['UserProfileResource'][_0x141e('0x21')]({'where':{'type':_0x716af9,'resourceId':_0x19bf3f['id']}})['then'](function(){return _0x2187f7;});})[_0x141e('0x20')](function(){_0x223045[_0x141e('0x15')](0xcc)[_0x141e('0x16')]();});}};}function handleEntityNotFound(_0x2b17ac,_0x223ce3){return function(_0xb659e8){if(!_0xb659e8){_0x2b17ac[_0x141e('0x14')](0x194);}return _0xb659e8;};}function handleError(_0x1961f7,_0x35c098){_0x35c098=_0x35c098||0x1f4;return function(_0x43ed83){logger[_0x141e('0x24')](_0x43ed83[_0x141e('0x25')]);if(_0x43ed83[_0x141e('0x26')]){delete _0x43ed83[_0x141e('0x26')];}_0x1961f7[_0x141e('0x15')](_0x35c098)['send'](_0x43ed83);};}exports['index']=function(_0x17f63c,_0x4d9787){var _0x49e37c={},_0x2b01bc={},_0x1efff2={'count':0x0,'rows':[]};var _0x36cd65=_[_0x141e('0x27')](db[_0x141e('0x28')]['rawAttributes'],function(_0x5534b4){return{'name':_0x5534b4[_0x141e('0x29')],'type':_0x5534b4[_0x141e('0x2a')][_0x141e('0x2b')]};});_0x2b01bc[_0x141e('0x2c')]=_['map'](_0x36cd65,_0x141e('0x26'));_0x2b01bc[_0x141e('0x2d')]=_[_0x141e('0x2e')](_0x17f63c[_0x141e('0x2d')]);_0x2b01bc['filters']=_[_0x141e('0x2f')](_0x2b01bc['model'],_0x2b01bc[_0x141e('0x2d')]);_0x49e37c[_0x141e('0x30')]=_[_0x141e('0x2f')](_0x2b01bc[_0x141e('0x2c')],qs[_0x141e('0x31')](_0x17f63c[_0x141e('0x2d')][_0x141e('0x31')]));_0x49e37c[_0x141e('0x30')]=_0x49e37c[_0x141e('0x30')][_0x141e('0x32')]?_0x49e37c['attributes']:_0x2b01bc[_0x141e('0x2c')];if(!_0x17f63c[_0x141e('0x2d')]['hasOwnProperty'](_0x141e('0x33'))){_0x49e37c[_0x141e('0x19')]=qs[_0x141e('0x19')](_0x17f63c[_0x141e('0x2d')][_0x141e('0x19')]);_0x49e37c[_0x141e('0x18')]=qs[_0x141e('0x18')](_0x17f63c[_0x141e('0x2d')][_0x141e('0x18')]);}_0x49e37c['order']=qs['sort'](_0x17f63c['query'][_0x141e('0x34')]);_0x49e37c[_0x141e('0x35')]=qs[_0x141e('0x36')](_[_0x141e('0x37')](_0x17f63c[_0x141e('0x2d')],_0x2b01bc[_0x141e('0x36')]),_0x36cd65);if(_0x17f63c[_0x141e('0x2d')][_0x141e('0x38')]){_0x49e37c['where']=_[_0x141e('0x39')](_0x49e37c['where'],{'$or':_['map'](_0x36cd65,function(_0x4bd4d6){if(_0x4bd4d6[_0x141e('0x2a')]!==_0x141e('0x3a')){var _0x4be924={};_0x4be924[_0x4bd4d6['name']]={'$like':'%'+_0x17f63c[_0x141e('0x2d')][_0x141e('0x38')]+'%'};return _0x4be924;}})});}_0x49e37c=_['merge']({},_0x49e37c,_0x17f63c['options']);var _0x460da8={'where':_0x49e37c['where']};return db[_0x141e('0x28')]['count'](_0x460da8)[_0x141e('0x20')](function(_0x90397a){_0x1efff2[_0x141e('0x3b')]=_0x90397a;if(_0x17f63c['query'][_0x141e('0x3c')]){_0x49e37c['include']=[{'all':!![]}];}return db['Sound']['findAll'](_0x49e37c);})['then'](function(_0x23a06f){_0x1efff2['rows']=_0x23a06f;return _0x1efff2;})[_0x141e('0x20')](respondWithFilteredResult(_0x4d9787,_0x49e37c))[_0x141e('0x3d')](handleError(_0x4d9787,null));};exports[_0x141e('0x3e')]=function(_0x3a7d5d,_0xb267ad){var _0x4dea47={'raw':!![],'where':{'id':_0x3a7d5d['params']['id']}},_0x53b57b={};_0x53b57b['model']=_[_0x141e('0x2e')](db[_0x141e('0x28')][_0x141e('0x3f')]);_0x53b57b['query']=_['keys'](_0x3a7d5d[_0x141e('0x2d')]);_0x53b57b[_0x141e('0x36')]=_[_0x141e('0x2f')](_0x53b57b[_0x141e('0x2c')],_0x53b57b[_0x141e('0x2d')]);_0x4dea47[_0x141e('0x30')]=_[_0x141e('0x2f')](_0x53b57b[_0x141e('0x2c')],qs[_0x141e('0x31')](_0x3a7d5d[_0x141e('0x2d')][_0x141e('0x31')]));_0x4dea47['attributes']=_0x4dea47[_0x141e('0x30')][_0x141e('0x32')]?_0x4dea47[_0x141e('0x30')]:_0x53b57b[_0x141e('0x2c')];if(_0x3a7d5d[_0x141e('0x2d')][_0x141e('0x3c')]){_0x4dea47[_0x141e('0x40')]=[{'all':!![]}];}_0x4dea47=_[_0x141e('0x39')]({},_0x4dea47,_0x3a7d5d[_0x141e('0x41')]);return db[_0x141e('0x28')][_0x141e('0x42')](_0x4dea47)[_0x141e('0x20')](handleEntityNotFound(_0xb267ad,null))['then'](respondWithResult(_0xb267ad,null))[_0x141e('0x3d')](handleError(_0xb267ad,null));};exports['download']=function(_0x1524b8,_0x2fc9b8,_0x263326){return db[_0x141e('0x28')][_0x141e('0x42')]({'where':{'id':_0x1524b8['params']['id']},'attributes':[_0x141e('0x26'),_0x141e('0x43'),_0x141e('0x44')],'raw':!![]})[_0x141e('0x20')](handleEntityNotFound(_0x2fc9b8,null))[_0x141e('0x20')](function(_0x5f4f56){if(_0x5f4f56){if(!fs['existsSync'](path[_0x141e('0x45')](config['root'],'server/files/sounds/converted',_0x5f4f56[_0x141e('0x43')]+'.'+_0x5f4f56[_0x141e('0x44')]))){throw new db[(_0x141e('0x46'))][(_0x141e('0x47'))]('Sound\x20not\x20found');}return _0x2fc9b8[_0x141e('0x48')](path[_0x141e('0x45')](config[_0x141e('0x49')],_0x141e('0x4a'),util['format']('%s.%s',_0x5f4f56[_0x141e('0x43')],_0x5f4f56[_0x141e('0x44')])),util[_0x141e('0x4b')](_0x141e('0x4c'),_0x5f4f56[_0x141e('0x26')],_0x5f4f56[_0x141e('0x44')]));}return null;})[_0x141e('0x3d')](handleError(_0x2fc9b8,null));};exports[_0x141e('0x4d')]=function(_0x38d5aa,_0x56e880,_0x3c8255){var _0x26684c={'name':path[_0x141e('0x4e')](_0x38d5aa['file']['originalname'],path['extname'](_0x38d5aa[_0x141e('0x4f')][_0x141e('0x50')])),'save_name':path['basename'](_0x38d5aa[_0x141e('0x4f')][_0x141e('0x51')],path[_0x141e('0x52')](_0x38d5aa[_0x141e('0x4f')][_0x141e('0x51')])),'original_format':path[_0x141e('0x52')](_0x38d5aa['file']['originalname'])[_0x141e('0x53')](0x1),'converted_format':_0x141e('0x54')};var _0x22353b=path[_0x141e('0x45')](config['root'],'server/files/sounds/original',_0x38d5aa['file'][_0x141e('0x51')]);var _0x5d62fb=path['join'](config[_0x141e('0x49')],_0x141e('0x4a'),util['format'](_0x141e('0x4c'),path[_0x141e('0x4e')](_0x38d5aa[_0x141e('0x4f')][_0x141e('0x51')],path[_0x141e('0x52')](_0x38d5aa[_0x141e('0x4f')][_0x141e('0x51')])),_0x26684c[_0x141e('0x44')]));logger['info'](_0x141e('0x55'),_0x22353b);logger[_0x141e('0x56')](_0x141e('0x57'),_0x5d62fb);try{fs['chmodSync'](_0x22353b,parseInt('0777',0x8));var _0x5de8dd=sox['transcode'](_0x22353b,_0x5d62fb,{'sampleRate':0x1f40,'format':_0x141e('0x54'),'channelCount':0x1,'bitRate':0xc0*0x400,'compressionQuality':0x5});_0x5de8dd['on'](_0x141e('0x24'),function(_0x496a82){fs[_0x141e('0x58')](_0x22353b);_0x56e880[_0x141e('0x15')](0x1f4)[_0x141e('0x59')](_0x496a82);});_0x5de8dd['on']('src',function(_0xea6bdb){_0x26684c[_0x141e('0x5a')]=isNaN(_0xea6bdb[_0x141e('0x5b')])?null:_0xea6bdb[_0x141e('0x5b')]*0x3e8;_0x26684c[_0x141e('0x5c')]=isNaN(_0xea6bdb[_0x141e('0x5d')])?null:_0xea6bdb[_0x141e('0x5d')];_0x26684c['original_channelCount']=isNaN(_0xea6bdb['channelCount'])?null:_0xea6bdb[_0x141e('0x5e')];_0x26684c[_0x141e('0x5f')]=isNaN(_0xea6bdb['bitRate'])?null:_0xea6bdb['bitRate'];_0x26684c['original_sampleRate']=isNaN(_0xea6bdb['sampleRate'])?null:_0xea6bdb[_0x141e('0x60')];});_0x5de8dd['on']('dest',function(_0xf6db2b){_0x26684c['converted_duration']=isNaN(_0xf6db2b[_0x141e('0x5b')])?null:_0xf6db2b[_0x141e('0x5b')]*0x3e8;_0x26684c['converted_sampleCount']=isNaN(_0xf6db2b[_0x141e('0x5d')])?null:_0xf6db2b[_0x141e('0x5d')];_0x26684c[_0x141e('0x61')]=isNaN(_0xf6db2b['channelCount'])?null:_0xf6db2b[_0x141e('0x5e')];_0x26684c[_0x141e('0x62')]=isNaN(_0xf6db2b[_0x141e('0x63')])?null:_0xf6db2b[_0x141e('0x63')];_0x26684c[_0x141e('0x64')]=isNaN(_0xf6db2b['sampleRate'])?null:_0xf6db2b[_0x141e('0x60')];});_0x5de8dd['on'](_0x141e('0x16'),function(){fs[_0x141e('0x65')](_0x5d62fb,parseInt(_0x141e('0x66'),0x8));return db[_0x141e('0x28')]['create'](_0x26684c)[_0x141e('0x20')](function(_0x44fb63){var _0x45b543={'role':_0x38d5aa[_0x141e('0x67')][_0x141e('0x68')],'userProfileId':_0x38d5aa[_0x141e('0x67')][_0x141e('0x69')]};if(!_0x45b543)throw new Error(_0x141e('0x6a'));if(_0x45b543['role']===_0x141e('0x6b')){var _0x338173=_0x44fb63[_0x141e('0x22')]({'plain':!![]});return db[_0x141e('0x6c')][_0x141e('0x42')]({'where':{'name':_0x141e('0x23'),'userProfileId':_0x45b543[_0x141e('0x69')]},'raw':!![]})[_0x141e('0x20')](function(_0xca3741){if(_0xca3741&&_0xca3741[_0x141e('0x6d')]===0x0){return db[_0x141e('0x6e')]['create']({'name':_0x338173[_0x141e('0x26')],'resourceId':_0x338173['id'],'type':_0xca3741['name'],'sectionId':_0xca3741['id']},{})[_0x141e('0x20')](function(){return _0x44fb63;});}else{return _0x44fb63;}})['catch'](function(_0x52c743){logger[_0x141e('0x24')](_0x141e('0x6f'),_0x52c743);throw _0x52c743;});}return _0x44fb63;})[_0x141e('0x20')](respondWithResult(_0x56e880,null))[_0x141e('0x3d')](handleError(_0x56e880,null));});_0x5de8dd[_0x141e('0x70')]();}catch(_0x56d358){_0x56e880[_0x141e('0x15')](0x1f4)['send'](_0x56d358);}};exports[_0x141e('0x1f')]=function(_0x159621,_0x13f3c6,_0x5c6f39){return db['Sound'][_0x141e('0x42')]({'where':{'id':_0x159621['params']['id']}})['then'](handleEntityNotFound(_0x13f3c6,null))['then'](saveUpdates(_[_0x141e('0x37')](_0x159621['body'],[_0x141e('0x26'),_0x141e('0x71')]),null))[_0x141e('0x20')](respondWithResult(_0x13f3c6,null))[_0x141e('0x3d')](handleError(_0x13f3c6,null));};exports['delete']=function(_0x175be2,_0x503437,_0x3ef5c8){return db['Sound'][_0x141e('0x42')]({'where':{'id':_0x175be2['params']['id']}})[_0x141e('0x20')](function(_0x433064){if(_0x433064){return _0x433064[_0x141e('0x21')]();}})[_0x141e('0x20')](function(_0x420e33){var _0x43e0b4=path[_0x141e('0x45')](config['root'],_0x141e('0x72'),util['format'](_0x141e('0x4c'),_0x420e33[_0x141e('0x43')],_0x420e33['original_format']));var _0x164628=path[_0x141e('0x45')](config['root'],'server/files/sounds/converted',util['format'](_0x141e('0x4c'),_0x420e33['save_name'],_0x420e33[_0x141e('0x44')]));fs[_0x141e('0x58')](_0x43e0b4);fs[_0x141e('0x58')](_0x164628);return _0x420e33;})[_0x141e('0x20')](function(_0x3de663){if(_0x3de663){return _0x503437[_0x141e('0x15')](0xcc)[_0x141e('0x16')]();}})[_0x141e('0x20')](handleEntityNotFound(_0x503437,null))[_0x141e('0x3d')](handleError(_0x503437,null));};
\ No newline at end of file
+var _0x0e14=['ioredis','../../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','save','update','then','destroy','Sounds','UserProfileResource','error','stack','name','send','index','Sound','rawAttributes','type','key','map','query','keys','attributes','intersection','model','fields','hasOwnProperty','order','sort','where','pick','filters','filter','merge','VIRTUAL','options','includeAll','include','findAll','rows','show','params','length','find','catch','download','save_name','converted_format','join','root','server/files/sounds/converted','ValidationError','format','%s.%s','create','file','originalname','extname','basename','filename','substring','wav','server/files/sounds/original','info','Sound\x20upload\x20filepath:\x20%s','chmodSync','0777','transcode','src','original_duration','duration','sampleCount','original_channelCount','channelCount','bitRate','original_sampleRate','sampleRate','dest','converted_sampleCount','converted_channelCount','converted_bitRate','converted_sampleRate','body','role','userProfileId','Unable\x20to\x20retrieve\x20the\x20current\x20user','user','get','UserProfileSection','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','start','description','delete','unlinkSync','rimraf','zip-dir','request-promise','moment','bluebird','util','sox','to-csv','ejs','lodash','squel','crypto','desk.js','querystring','papaparse'];(function(_0x4b8f3c,_0x4392ee){var _0x2ad695=function(_0x4bc782){while(--_0x4bc782){_0x4b8f3c['push'](_0x4b8f3c['shift']());}};_0x2ad695(++_0x4392ee);}(_0x0e14,0x16b));var _0x40e1=function(_0x4c7fb5,_0x2548ef){_0x4c7fb5=_0x4c7fb5-0x0;var _0x2e10ac=_0x0e14[_0x4c7fb5];return _0x2e10ac;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x40e1('0x0'));var zipdir=require(_0x40e1('0x1'));var jsonpatch=require('fast-json-patch');var rp=require(_0x40e1('0x2'));var moment=require(_0x40e1('0x3'));var BPromise=require(_0x40e1('0x4'));var Mustache=require('mustache');var util=require(_0x40e1('0x5'));var path=require('path');var sox=require(_0x40e1('0x6'));var csv=require(_0x40e1('0x7'));var ejs=require(_0x40e1('0x8'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x40e1('0x9'));var squel=require(_0x40e1('0xa'));var crypto=require(_0x40e1('0xb'));var jsforce=require('jsforce');var deskjs=require(_0x40e1('0xc'));var toCsv=require('to-csv');var querystring=require(_0x40e1('0xd'));var Papa=require(_0x40e1('0xe'));var Redis=require(_0x40e1('0xf'));var authService=require(_0x40e1('0x10'));var qs=require(_0x40e1('0x11'));var as=require(_0x40e1('0x12'));var hardwareService=require(_0x40e1('0x13'));var logger=require('../../config/logger')(_0x40e1('0x14'));var utils=require(_0x40e1('0x15'));var config=require(_0x40e1('0x16'));var licenseUtil=require(_0x40e1('0x17'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x23d1bb,_0x47ae90){_0x47ae90=_0x47ae90||0xcc;return function(_0xdac011){if(_0xdac011){return _0x23d1bb[_0x40e1('0x18')](_0x47ae90);}return _0x23d1bb[_0x40e1('0x19')](_0x47ae90)[_0x40e1('0x1a')]();};}function respondWithResult(_0x298a02,_0x59dd52){_0x59dd52=_0x59dd52||0xc8;return function(_0x1c8e2b){if(_0x1c8e2b){return _0x298a02[_0x40e1('0x19')](_0x59dd52)[_0x40e1('0x1b')](_0x1c8e2b);}};}function respondWithFilteredResult(_0x39ad39,_0x12c5c8){return function(_0x359256){if(_0x359256){var _0x561680=typeof _0x12c5c8[_0x40e1('0x1c')]===_0x40e1('0x1d')&&typeof _0x12c5c8[_0x40e1('0x1e')]===_0x40e1('0x1d');var _0x265518=_0x359256[_0x40e1('0x1f')];var _0x4ebf2f=_0x561680?0x0:_0x12c5c8[_0x40e1('0x1c')];var _0x32196d=_0x561680?_0x359256[_0x40e1('0x1f')]:_0x12c5c8[_0x40e1('0x1c')]+_0x12c5c8[_0x40e1('0x1e')];var _0x40fd39;if(_0x32196d>=_0x265518){_0x32196d=_0x265518;_0x40fd39=0xc8;}else{_0x40fd39=0xce;}_0x39ad39[_0x40e1('0x19')](_0x40fd39);return _0x39ad39[_0x40e1('0x20')](_0x40e1('0x21'),_0x4ebf2f+'-'+_0x32196d+'/'+_0x265518)[_0x40e1('0x1b')](_0x359256);}return null;};}function patchUpdates(_0x4d7df5){return function(_0x3b8423){try{jsonpatch[_0x40e1('0x22')](_0x3b8423,_0x4d7df5,!![]);}catch(_0x3112ab){return BPromise['reject'](_0x3112ab);}return _0x3b8423[_0x40e1('0x23')]();};}function saveUpdates(_0x54a0a6,_0x181b47){return function(_0x2f1ac2){if(_0x2f1ac2){return _0x2f1ac2[_0x40e1('0x24')](_0x54a0a6)[_0x40e1('0x25')](function(_0x590c4d){return _0x590c4d;});}return null;};}function removeEntity(_0x2eed34,_0x569ba2){return function(_0x24c62a){if(_0x24c62a){return _0x24c62a[_0x40e1('0x26')]()[_0x40e1('0x25')](function(){var _0xcf05=_0x24c62a['get']({'plain':!![]});var _0x46b80c=_0x40e1('0x27');return db[_0x40e1('0x28')][_0x40e1('0x26')]({'where':{'type':_0x46b80c,'resourceId':_0xcf05['id']}})[_0x40e1('0x25')](function(){return _0x24c62a;});})[_0x40e1('0x25')](function(){_0x2eed34[_0x40e1('0x19')](0xcc)[_0x40e1('0x1a')]();});}};}function handleEntityNotFound(_0x3277e,_0x6607da){return function(_0x19b76b){if(!_0x19b76b){_0x3277e['sendStatus'](0x194);}return _0x19b76b;};}function handleError(_0x5e5444,_0x60dc00){_0x60dc00=_0x60dc00||0x1f4;return function(_0x15327f){logger[_0x40e1('0x29')](_0x15327f[_0x40e1('0x2a')]);if(_0x15327f[_0x40e1('0x2b')]){delete _0x15327f[_0x40e1('0x2b')];}_0x5e5444[_0x40e1('0x19')](_0x60dc00)[_0x40e1('0x2c')](_0x15327f);};}exports[_0x40e1('0x2d')]=function(_0x58af58,_0x1ac26b){var _0x20fb4a={},_0x590796={},_0x518bff={'count':0x0,'rows':[]};var _0x56d4a7=_['map'](db[_0x40e1('0x2e')][_0x40e1('0x2f')],function(_0x4e6b05){return{'name':_0x4e6b05['fieldName'],'type':_0x4e6b05[_0x40e1('0x30')][_0x40e1('0x31')]};});_0x590796['model']=_[_0x40e1('0x32')](_0x56d4a7,_0x40e1('0x2b'));_0x590796[_0x40e1('0x33')]=_[_0x40e1('0x34')](_0x58af58['query']);_0x590796['filters']=_['intersection'](_0x590796['model'],_0x590796[_0x40e1('0x33')]);_0x20fb4a[_0x40e1('0x35')]=_[_0x40e1('0x36')](_0x590796[_0x40e1('0x37')],qs[_0x40e1('0x38')](_0x58af58[_0x40e1('0x33')][_0x40e1('0x38')]));_0x20fb4a['attributes']=_0x20fb4a[_0x40e1('0x35')]['length']?_0x20fb4a[_0x40e1('0x35')]:_0x590796[_0x40e1('0x37')];if(!_0x58af58['query'][_0x40e1('0x39')]('nolimit')){_0x20fb4a[_0x40e1('0x1e')]=qs[_0x40e1('0x1e')](_0x58af58[_0x40e1('0x33')]['limit']);_0x20fb4a['offset']=qs[_0x40e1('0x1c')](_0x58af58[_0x40e1('0x33')]['offset']);}_0x20fb4a[_0x40e1('0x3a')]=qs[_0x40e1('0x3b')](_0x58af58[_0x40e1('0x33')]['sort']);_0x20fb4a[_0x40e1('0x3c')]=qs['filters'](_[_0x40e1('0x3d')](_0x58af58[_0x40e1('0x33')],_0x590796[_0x40e1('0x3e')]),_0x56d4a7);if(_0x58af58[_0x40e1('0x33')][_0x40e1('0x3f')]){_0x20fb4a[_0x40e1('0x3c')]=_[_0x40e1('0x40')](_0x20fb4a[_0x40e1('0x3c')],{'$or':_[_0x40e1('0x32')](_0x56d4a7,function(_0x233a31){if(_0x233a31[_0x40e1('0x30')]!==_0x40e1('0x41')){var _0xf40019={};_0xf40019[_0x233a31[_0x40e1('0x2b')]]={'$like':'%'+_0x58af58[_0x40e1('0x33')]['filter']+'%'};return _0xf40019;}})});}_0x20fb4a=_[_0x40e1('0x40')]({},_0x20fb4a,_0x58af58[_0x40e1('0x42')]);var _0x4e2abd={'where':_0x20fb4a[_0x40e1('0x3c')]};return db[_0x40e1('0x2e')][_0x40e1('0x1f')](_0x4e2abd)[_0x40e1('0x25')](function(_0x55a4ed){_0x518bff[_0x40e1('0x1f')]=_0x55a4ed;if(_0x58af58[_0x40e1('0x33')][_0x40e1('0x43')]){_0x20fb4a[_0x40e1('0x44')]=[{'all':!![]}];}return db['Sound'][_0x40e1('0x45')](_0x20fb4a);})['then'](function(_0x17458b){_0x518bff[_0x40e1('0x46')]=_0x17458b;return _0x518bff;})[_0x40e1('0x25')](respondWithFilteredResult(_0x1ac26b,_0x20fb4a))['catch'](handleError(_0x1ac26b,null));};exports[_0x40e1('0x47')]=function(_0xd59fbb,_0x5a762d){var _0xdaacbe={'raw':!![],'where':{'id':_0xd59fbb[_0x40e1('0x48')]['id']}},_0x2849a9={};_0x2849a9['model']=_[_0x40e1('0x34')](db['Sound'][_0x40e1('0x2f')]);_0x2849a9['query']=_['keys'](_0xd59fbb[_0x40e1('0x33')]);_0x2849a9[_0x40e1('0x3e')]=_[_0x40e1('0x36')](_0x2849a9['model'],_0x2849a9[_0x40e1('0x33')]);_0xdaacbe['attributes']=_[_0x40e1('0x36')](_0x2849a9[_0x40e1('0x37')],qs[_0x40e1('0x38')](_0xd59fbb['query'][_0x40e1('0x38')]));_0xdaacbe[_0x40e1('0x35')]=_0xdaacbe[_0x40e1('0x35')][_0x40e1('0x49')]?_0xdaacbe[_0x40e1('0x35')]:_0x2849a9[_0x40e1('0x37')];if(_0xd59fbb['query']['includeAll']){_0xdaacbe[_0x40e1('0x44')]=[{'all':!![]}];}_0xdaacbe=_[_0x40e1('0x40')]({},_0xdaacbe,_0xd59fbb[_0x40e1('0x42')]);return db[_0x40e1('0x2e')][_0x40e1('0x4a')](_0xdaacbe)[_0x40e1('0x25')](handleEntityNotFound(_0x5a762d,null))[_0x40e1('0x25')](respondWithResult(_0x5a762d,null))[_0x40e1('0x4b')](handleError(_0x5a762d,null));};exports[_0x40e1('0x4c')]=function(_0x3f4549,_0x5434cd,_0x570211){return db[_0x40e1('0x2e')]['find']({'where':{'id':_0x3f4549[_0x40e1('0x48')]['id']},'attributes':['name',_0x40e1('0x4d'),_0x40e1('0x4e')],'raw':!![]})[_0x40e1('0x25')](handleEntityNotFound(_0x5434cd,null))[_0x40e1('0x25')](function(_0x7869e8){if(_0x7869e8){if(!fs['existsSync'](path[_0x40e1('0x4f')](config[_0x40e1('0x50')],_0x40e1('0x51'),_0x7869e8['save_name']+'.'+_0x7869e8['converted_format']))){throw new db['Sequelize'][(_0x40e1('0x52'))]('Sound\x20not\x20found');}return _0x5434cd['download'](path[_0x40e1('0x4f')](config[_0x40e1('0x50')],_0x40e1('0x51'),util[_0x40e1('0x53')](_0x40e1('0x54'),_0x7869e8[_0x40e1('0x4d')],_0x7869e8['converted_format'])),util[_0x40e1('0x53')](_0x40e1('0x54'),_0x7869e8[_0x40e1('0x2b')],_0x7869e8[_0x40e1('0x4e')]));}return null;})['catch'](handleError(_0x5434cd,null));};exports[_0x40e1('0x55')]=function(_0x25ae9c,_0x4b1dbf,_0x1394c2){var _0x38450f={'name':path['basename'](_0x25ae9c[_0x40e1('0x56')][_0x40e1('0x57')],path[_0x40e1('0x58')](_0x25ae9c[_0x40e1('0x56')]['originalname'])),'save_name':path[_0x40e1('0x59')](_0x25ae9c[_0x40e1('0x56')][_0x40e1('0x5a')],path[_0x40e1('0x58')](_0x25ae9c[_0x40e1('0x56')][_0x40e1('0x5a')])),'original_format':path[_0x40e1('0x58')](_0x25ae9c['file'][_0x40e1('0x57')])[_0x40e1('0x5b')](0x1),'converted_format':_0x40e1('0x5c')};var _0x29b201=path[_0x40e1('0x4f')](config[_0x40e1('0x50')],_0x40e1('0x5d'),_0x25ae9c[_0x40e1('0x56')]['filename']);var _0xb1981c=path[_0x40e1('0x4f')](config['root'],_0x40e1('0x51'),util[_0x40e1('0x53')](_0x40e1('0x54'),path[_0x40e1('0x59')](_0x25ae9c[_0x40e1('0x56')]['filename'],path[_0x40e1('0x58')](_0x25ae9c[_0x40e1('0x56')][_0x40e1('0x5a')])),_0x38450f[_0x40e1('0x4e')]));logger[_0x40e1('0x5e')](_0x40e1('0x5f'),_0x29b201);logger[_0x40e1('0x5e')]('Sound\x20upload\x20destination:\x20%s',_0xb1981c);try{fs[_0x40e1('0x60')](_0x29b201,parseInt(_0x40e1('0x61'),0x8));var _0x157f9d=sox[_0x40e1('0x62')](_0x29b201,_0xb1981c,{'sampleRate':0x1f40,'format':'wav','channelCount':0x1,'bitRate':0xc0*0x400,'compressionQuality':0x5});_0x157f9d['on'](_0x40e1('0x29'),function(_0x16a7f){fs['unlinkSync'](_0x29b201);_0x4b1dbf[_0x40e1('0x19')](0x1f4)[_0x40e1('0x2c')](_0x16a7f);});_0x157f9d['on'](_0x40e1('0x63'),function(_0x1c3cfc){_0x38450f[_0x40e1('0x64')]=isNaN(_0x1c3cfc[_0x40e1('0x65')])?null:_0x1c3cfc[_0x40e1('0x65')]*0x3e8;_0x38450f['original_sampleCount']=isNaN(_0x1c3cfc[_0x40e1('0x66')])?null:_0x1c3cfc[_0x40e1('0x66')];_0x38450f[_0x40e1('0x67')]=isNaN(_0x1c3cfc[_0x40e1('0x68')])?null:_0x1c3cfc[_0x40e1('0x68')];_0x38450f['original_bitRate']=isNaN(_0x1c3cfc[_0x40e1('0x69')])?null:_0x1c3cfc[_0x40e1('0x69')];_0x38450f[_0x40e1('0x6a')]=isNaN(_0x1c3cfc['sampleRate'])?null:_0x1c3cfc[_0x40e1('0x6b')];});_0x157f9d['on'](_0x40e1('0x6c'),function(_0x142270){_0x38450f['converted_duration']=isNaN(_0x142270[_0x40e1('0x65')])?null:_0x142270[_0x40e1('0x65')]*0x3e8;_0x38450f[_0x40e1('0x6d')]=isNaN(_0x142270[_0x40e1('0x66')])?null:_0x142270[_0x40e1('0x66')];_0x38450f[_0x40e1('0x6e')]=isNaN(_0x142270[_0x40e1('0x68')])?null:_0x142270[_0x40e1('0x68')];_0x38450f[_0x40e1('0x6f')]=isNaN(_0x142270[_0x40e1('0x69')])?null:_0x142270[_0x40e1('0x69')];_0x38450f[_0x40e1('0x70')]=isNaN(_0x142270[_0x40e1('0x6b')])?null:_0x142270['sampleRate'];});_0x157f9d['on'](_0x40e1('0x1a'),function(){fs[_0x40e1('0x60')](_0xb1981c,parseInt(_0x40e1('0x61'),0x8));return db[_0x40e1('0x2e')]['create'](_0x38450f)[_0x40e1('0x25')](function(_0x4274e5){var _0x5bda3d={'role':_0x25ae9c[_0x40e1('0x71')][_0x40e1('0x72')],'userProfileId':_0x25ae9c[_0x40e1('0x71')][_0x40e1('0x73')]};if(!_0x5bda3d)throw new Error(_0x40e1('0x74'));if(_0x5bda3d[_0x40e1('0x72')]===_0x40e1('0x75')){var _0x3bc91f=_0x4274e5[_0x40e1('0x76')]({'plain':!![]});return db[_0x40e1('0x77')][_0x40e1('0x4a')]({'where':{'name':'Sounds','userProfileId':_0x5bda3d[_0x40e1('0x73')]},'raw':!![]})['then'](function(_0x3e4bce){if(_0x3e4bce&&_0x3e4bce[_0x40e1('0x78')]===0x0){return db[_0x40e1('0x28')][_0x40e1('0x55')]({'name':_0x3bc91f['name'],'resourceId':_0x3bc91f['id'],'type':_0x3e4bce[_0x40e1('0x2b')],'sectionId':_0x3e4bce['id']},{})[_0x40e1('0x25')](function(){return _0x4274e5;});}else{return _0x4274e5;}})[_0x40e1('0x4b')](function(_0x2eb746){logger[_0x40e1('0x29')](_0x40e1('0x79'),_0x2eb746);throw _0x2eb746;});}return _0x4274e5;})[_0x40e1('0x25')](respondWithResult(_0x4b1dbf,null))['catch'](handleError(_0x4b1dbf,null));});_0x157f9d[_0x40e1('0x7a')]();}catch(_0xc9e9b8){_0x4b1dbf[_0x40e1('0x19')](0x1f4)[_0x40e1('0x2c')](_0xc9e9b8);}};exports[_0x40e1('0x24')]=function(_0x49938a,_0x661755,_0x5cd863){return db[_0x40e1('0x2e')][_0x40e1('0x4a')]({'where':{'id':_0x49938a[_0x40e1('0x48')]['id']}})[_0x40e1('0x25')](handleEntityNotFound(_0x661755,null))[_0x40e1('0x25')](saveUpdates(_[_0x40e1('0x3d')](_0x49938a[_0x40e1('0x71')],['name',_0x40e1('0x7b')]),null))[_0x40e1('0x25')](respondWithResult(_0x661755,null))[_0x40e1('0x4b')](handleError(_0x661755,null));};exports[_0x40e1('0x7c')]=function(_0x245432,_0x905f42,_0x361826){return db[_0x40e1('0x2e')][_0x40e1('0x4a')]({'where':{'id':_0x245432[_0x40e1('0x48')]['id']}})['then'](function(_0x3355df){if(_0x3355df){return _0x3355df[_0x40e1('0x26')]();}})[_0x40e1('0x25')](function(_0xfad2d3){var _0x2a4485=path['join'](config[_0x40e1('0x50')],_0x40e1('0x5d'),util[_0x40e1('0x53')](_0x40e1('0x54'),_0xfad2d3[_0x40e1('0x4d')],_0xfad2d3['original_format']));var _0x42f0d1=path['join'](config[_0x40e1('0x50')],'server/files/sounds/converted',util[_0x40e1('0x53')](_0x40e1('0x54'),_0xfad2d3['save_name'],_0xfad2d3[_0x40e1('0x4e')]));fs['unlinkSync'](_0x2a4485);fs[_0x40e1('0x7d')](_0x42f0d1);return _0xfad2d3;})[_0x40e1('0x25')](function(_0x20d287){if(_0x20d287){return _0x905f42[_0x40e1('0x19')](0xcc)[_0x40e1('0x1a')]();}})['then'](handleEntityNotFound(_0x905f42,null))[_0x40e1('0x4b')](handleError(_0x905f42,null));};
\ No newline at end of file
index 5d61fcd..93ea7c2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb61f=['./sound.attributes','define','tools_sounds','lodash','util','../../config/logger','api','moment','bluebird','request-promise','path','rimraf','../../config/environment'];(function(_0x51e0ab,_0x468422){var _0x3f1661=function(_0x3318d8){while(--_0x3318d8){_0x51e0ab['push'](_0x51e0ab['shift']());}};_0x3f1661(++_0x468422);}(_0xb61f,0x9f));var _0xfb61=function(_0x1980c7,_0x3847d7){_0x1980c7=_0x1980c7-0x0;var _0x15218a=_0xb61f[_0x1980c7];return _0x15218a;};'use strict';var _=require(_0xfb61('0x0'));var util=require(_0xfb61('0x1'));var logger=require(_0xfb61('0x2'))(_0xfb61('0x3'));var moment=require(_0xfb61('0x4'));var BPromise=require(_0xfb61('0x5'));var rp=require(_0xfb61('0x6'));var fs=require('fs');var path=require(_0xfb61('0x7'));var rimraf=require(_0xfb61('0x8'));var config=require(_0xfb61('0x9'));var attributes=require(_0xfb61('0xa'));module['exports']=function(_0x16d9b4,_0x25b7cb){return _0x16d9b4[_0xfb61('0xb')]('Sound',attributes,{'tableName':_0xfb61('0xc'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xaed5=['exports','define','Sound','tools_sounds','lodash','util','../../config/logger','api','moment','bluebird','request-promise','path','rimraf','../../config/environment'];(function(_0x41352a,_0x246ea2){var _0x3e392f=function(_0x11a5a6){while(--_0x11a5a6){_0x41352a['push'](_0x41352a['shift']());}};_0x3e392f(++_0x246ea2);}(_0xaed5,0x17e));var _0x5aed=function(_0x3a8db6,_0x226f4a){_0x3a8db6=_0x3a8db6-0x0;var _0x317e4d=_0xaed5[_0x3a8db6];return _0x317e4d;};'use strict';var _=require(_0x5aed('0x0'));var util=require(_0x5aed('0x1'));var logger=require(_0x5aed('0x2'))(_0x5aed('0x3'));var moment=require(_0x5aed('0x4'));var BPromise=require(_0x5aed('0x5'));var rp=require(_0x5aed('0x6'));var fs=require('fs');var path=require(_0x5aed('0x7'));var rimraf=require(_0x5aed('0x8'));var config=require(_0x5aed('0x9'));var attributes=require('./sound.attributes');module[_0x5aed('0xa')]=function(_0x299449,_0x31a0d8){return _0x299449[_0x5aed('0xb')](_0x5aed('0xc'),attributes,{'tableName':_0x5aed('0xd'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index a792eb4..f13251e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x65f2=['../../config/utils','../../config/logger','rpc','../../config/environment','client','http','then','request\x20sent','Sound,\x20%s,\x20%s,\x20%s','stringify','code','error','Sound,\x20%s,\x20%s','message','info','result','catch','ShowSound','Sound','find','options','raw','attributes','include','map','model','debug','lodash','util','bluebird','randomstring','ioredis','../../mysqldb'];(function(_0x267709,_0x2a9112){var _0x595897=function(_0x565388){while(--_0x565388){_0x267709['push'](_0x267709['shift']());}};_0x595897(++_0x2a9112);}(_0x65f2,0x186));var _0x265f=function(_0x366316,_0xb0a1ce){_0x366316=_0x366316-0x0;var _0x4a351d=_0x65f2[_0x366316];return _0x4a351d;};'use strict';var _=require(_0x265f('0x0'));var util=require(_0x265f('0x1'));var moment=require('moment');var BPromise=require(_0x265f('0x2'));var rs=require(_0x265f('0x3'));var fs=require('fs');var Redis=require(_0x265f('0x4'));var db=require(_0x265f('0x5'))['db'];var utils=require(_0x265f('0x6'));var logger=require(_0x265f('0x7'))(_0x265f('0x8'));var config=require(_0x265f('0x9'));var jayson=require('jayson/promise');var client=jayson[_0x265f('0xa')][_0x265f('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x2f5fcd,_0x3c5fff,_0x310e6c){return new BPromise(function(_0x4becd6,_0x5c58f1){return client['request'](_0x2f5fcd,_0x310e6c)[_0x265f('0xc')](function(_0x5bd81e){logger['info']('Sound,\x20%s,\x20%s',_0x3c5fff,_0x265f('0xd'));logger['debug'](_0x265f('0xe'),_0x3c5fff,_0x265f('0xd'),JSON[_0x265f('0xf')](_0x5bd81e));if(_0x5bd81e['error']){if(_0x5bd81e['error'][_0x265f('0x10')]===0x1f4){logger[_0x265f('0x11')](_0x265f('0x12'),_0x3c5fff,_0x5bd81e[_0x265f('0x11')]['message']);return _0x5c58f1(_0x5bd81e['error'][_0x265f('0x13')]);}logger['error'](_0x265f('0x12'),_0x3c5fff,_0x5bd81e[_0x265f('0x11')][_0x265f('0x13')]);return _0x4becd6(_0x5bd81e['error'][_0x265f('0x13')]);}else{logger[_0x265f('0x14')](_0x265f('0x12'),_0x3c5fff,_0x265f('0xd'));_0x4becd6(_0x5bd81e[_0x265f('0x15')][_0x265f('0x13')]);}})[_0x265f('0x16')](function(_0x5b9f3f){logger[_0x265f('0x11')](_0x265f('0x12'),_0x3c5fff,_0x5b9f3f);_0x5c58f1(_0x5b9f3f);});});}exports[_0x265f('0x17')]=function(_0x50aa62){var _0x5846f6=this;return new Promise(function(_0x10e224,_0x27a5bf){return db[_0x265f('0x18')][_0x265f('0x19')]({'raw':_0x50aa62[_0x265f('0x1a')]?_0x50aa62[_0x265f('0x1a')][_0x265f('0x1b')]===undefined?!![]:![]:!![],'where':_0x50aa62[_0x265f('0x1a')]?_0x50aa62[_0x265f('0x1a')]['where']||null:null,'attributes':_0x50aa62[_0x265f('0x1a')]?_0x50aa62[_0x265f('0x1a')][_0x265f('0x1c')]||null:null,'include':_0x50aa62[_0x265f('0x1a')]?_0x50aa62['options'][_0x265f('0x1d')]?_[_0x265f('0x1e')](_0x50aa62[_0x265f('0x1a')][_0x265f('0x1d')],function(_0x210c89){return{'model':db[_0x210c89[_0x265f('0x1f')]],'as':_0x210c89['as'],'attributes':_0x210c89[_0x265f('0x1c')],'include':_0x210c89[_0x265f('0x1d')]?_[_0x265f('0x1e')](_0x210c89[_0x265f('0x1d')],function(_0x2e4f4d){return{'model':db[_0x2e4f4d[_0x265f('0x1f')]],'as':_0x2e4f4d['as'],'attributes':_0x2e4f4d['attributes'],'include':_0x2e4f4d[_0x265f('0x1d')]?_[_0x265f('0x1e')](_0x2e4f4d[_0x265f('0x1d')],function(_0x56f83b){return{'model':db[_0x56f83b[_0x265f('0x1f')]],'as':_0x56f83b['as'],'attributes':_0x56f83b[_0x265f('0x1c')]};}):[]};}):[]};}):[]:[]})[_0x265f('0xc')](function(_0x467ad6){logger[_0x265f('0x14')](_0x265f('0x17'),_0x50aa62);logger[_0x265f('0x20')](_0x265f('0x17'),_0x50aa62,JSON['stringify'](_0x467ad6));_0x10e224(_0x467ad6);})[_0x265f('0x16')](function(_0x5206ba){logger[_0x265f('0x11')](_0x265f('0x17'),_0x5206ba[_0x265f('0x13')],_0x50aa62);_0x27a5bf(_0x5846f6[_0x265f('0x11')](0x1f4,_0x5206ba['message']));});});};
\ No newline at end of file
+var _0x2289=['request','info','Sound,\x20%s,\x20%s','request\x20sent','stringify','error','message','result','catch','ShowSound','find','options','where','attributes','include','map','model','then','lodash','util','moment','bluebird','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','jayson/promise','http'];(function(_0x44449b,_0x5e16ea){var _0x1dde55=function(_0x3c50f0){while(--_0x3c50f0){_0x44449b['push'](_0x44449b['shift']());}};_0x1dde55(++_0x5e16ea);}(_0x2289,0x134));var _0x9228=function(_0x52278a,_0x207ce5){_0x52278a=_0x52278a-0x0;var _0x4e86b8=_0x2289[_0x52278a];return _0x4e86b8;};'use strict';var _=require(_0x9228('0x0'));var util=require(_0x9228('0x1'));var moment=require(_0x9228('0x2'));var BPromise=require(_0x9228('0x3'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x9228('0x4'));var db=require(_0x9228('0x5'))['db'];var utils=require(_0x9228('0x6'));var logger=require(_0x9228('0x7'))(_0x9228('0x8'));var config=require('../../config/environment');var jayson=require(_0x9228('0x9'));var client=jayson['client'][_0x9228('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x55d2f7,_0x56f127,_0x2607e4){return new BPromise(function(_0x2cd50f,_0xaa30a0){return client[_0x9228('0xb')](_0x55d2f7,_0x2607e4)['then'](function(_0x4c285c){logger[_0x9228('0xc')](_0x9228('0xd'),_0x56f127,_0x9228('0xe'));logger['debug']('Sound,\x20%s,\x20%s,\x20%s',_0x56f127,'request\x20sent',JSON[_0x9228('0xf')](_0x4c285c));if(_0x4c285c[_0x9228('0x10')]){if(_0x4c285c['error']['code']===0x1f4){logger[_0x9228('0x10')]('Sound,\x20%s,\x20%s',_0x56f127,_0x4c285c[_0x9228('0x10')][_0x9228('0x11')]);return _0xaa30a0(_0x4c285c[_0x9228('0x10')][_0x9228('0x11')]);}logger[_0x9228('0x10')](_0x9228('0xd'),_0x56f127,_0x4c285c[_0x9228('0x10')]['message']);return _0x2cd50f(_0x4c285c[_0x9228('0x10')][_0x9228('0x11')]);}else{logger[_0x9228('0xc')](_0x9228('0xd'),_0x56f127,_0x9228('0xe'));_0x2cd50f(_0x4c285c[_0x9228('0x12')]['message']);}})[_0x9228('0x13')](function(_0x19c797){logger[_0x9228('0x10')](_0x9228('0xd'),_0x56f127,_0x19c797);_0xaa30a0(_0x19c797);});});}exports[_0x9228('0x14')]=function(_0x3539f0){var _0x3233bd=this;return new Promise(function(_0x239bdb,_0x160532){return db['Sound'][_0x9228('0x15')]({'raw':_0x3539f0[_0x9228('0x16')]?_0x3539f0['options']['raw']===undefined?!![]:![]:!![],'where':_0x3539f0['options']?_0x3539f0[_0x9228('0x16')][_0x9228('0x17')]||null:null,'attributes':_0x3539f0[_0x9228('0x16')]?_0x3539f0[_0x9228('0x16')][_0x9228('0x18')]||null:null,'include':_0x3539f0['options']?_0x3539f0['options'][_0x9228('0x19')]?_[_0x9228('0x1a')](_0x3539f0[_0x9228('0x16')]['include'],function(_0x549125){return{'model':db[_0x549125[_0x9228('0x1b')]],'as':_0x549125['as'],'attributes':_0x549125[_0x9228('0x18')],'include':_0x549125[_0x9228('0x19')]?_[_0x9228('0x1a')](_0x549125[_0x9228('0x19')],function(_0x3f8f16){return{'model':db[_0x3f8f16[_0x9228('0x1b')]],'as':_0x3f8f16['as'],'attributes':_0x3f8f16['attributes'],'include':_0x3f8f16[_0x9228('0x19')]?_[_0x9228('0x1a')](_0x3f8f16[_0x9228('0x19')],function(_0x1f748b){return{'model':db[_0x1f748b[_0x9228('0x1b')]],'as':_0x1f748b['as'],'attributes':_0x1f748b[_0x9228('0x18')]};}):[]};}):[]};}):[]:[]})[_0x9228('0x1c')](function(_0x596ca6){logger[_0x9228('0xc')](_0x9228('0x14'),_0x3539f0);logger['debug']('ShowSound',_0x3539f0,JSON[_0x9228('0xf')](_0x596ca6));_0x239bdb(_0x596ca6);})[_0x9228('0x13')](function(_0x52de1f){logger['error'](_0x9228('0x14'),_0x52de1f[_0x9228('0x11')],_0x3539f0);_0x160532(_0x3233bd[_0x9228('0x10')](0x1f4,_0x52de1f[_0x9228('0x11')]));});});};
\ No newline at end of file
index 349bde2..6437be3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9ffd=['util','path','express','Router','fs-extra','../../components/auth/service','../../config/environment','./squareMessage.controller','isAuthenticated','index','get','/:id','show','post','create','delete','destroy','exports','multer'];(function(_0x34325b,_0x5e5afe){var _0x3da348=function(_0x3bf709){while(--_0x3bf709){_0x34325b['push'](_0x34325b['shift']());}};_0x3da348(++_0x5e5afe);}(_0x9ffd,0xaa));var _0xd9ff=function(_0xdfa403,_0x28e346){_0xdfa403=_0xdfa403-0x0;var _0x194139=_0x9ffd[_0xdfa403];return _0x194139;};'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('0xe')]('/',auth[_0xd9ff('0x9')](),controller[_0xd9ff('0xf')]);router['put']('/:id',auth['isAuthenticated'](),controller['update']);router[_0xd9ff('0x10')](_0xd9ff('0xc'),auth[_0xd9ff('0x9')](),controller[_0xd9ff('0x11')]);module[_0xd9ff('0x12')]=router;
\ No newline at end of file
+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(_0x43b5c1,_0x395dd9){var _0x1a3448=function(_0xda206e){while(--_0xda206e){_0x43b5c1['push'](_0x43b5c1['shift']());}};_0x1a3448(++_0x395dd9);}(_0xb7e7,0x121));var _0x7b7e=function(_0x2faddb,_0xc18b78){_0x2faddb=_0x2faddb-0x0;var _0x273c05=_0xb7e7[_0x2faddb];return _0x273c05;};'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
index 4d1ec63..608bf23 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x187e=['out','STRING','sequelize','TEXT','ENUM'];(function(_0x48ddbb,_0x43ef4f){var _0x1a43e4=function(_0x1f4bd8){while(--_0x1f4bd8){_0x48ddbb['push'](_0x48ddbb['shift']());}};_0x1a43e4(++_0x43ef4f);}(_0x187e,0x1c4));var _0xe187=function(_0x4c5e95,_0x476724){_0x4c5e95=_0x4c5e95-0x0;var _0x4e686e=_0x187e[_0x4c5e95];return _0x4e686e;};'use strict';var Sequelize=require(_0xe187('0x0'));module['exports']={'uniqueid':{'type':Sequelize['STRING']},'body':{'type':Sequelize[_0xe187('0x1')]('medium'),'allowNull':![]},'direction':{'type':Sequelize[_0xe187('0x2')]('in',_0xe187('0x3')),'defaultValue':'out','allowNull':![]},'providerName':{'type':Sequelize[_0xe187('0x4')]},'providerResponse':{'type':Sequelize[_0xe187('0x1')]}};
\ No newline at end of file
+var _0x206b=['out','STRING','sequelize','exports','TEXT','ENUM'];(function(_0x502c7d,_0x2f1285){var _0x30b7ed=function(_0x2d92f3){while(--_0x2d92f3){_0x502c7d['push'](_0x502c7d['shift']());}};_0x30b7ed(++_0x2f1285);}(_0x206b,0x170));var _0xb206=function(_0x3070d5,_0x1d3284){_0x3070d5=_0x3070d5-0x0;var _0x2067e6=_0x206b[_0x3070d5];return _0x2067e6;};'use strict';var Sequelize=require(_0xb206('0x0'));module[_0xb206('0x1')]={'uniqueid':{'type':Sequelize['STRING']},'body':{'type':Sequelize[_0xb206('0x2')]('medium'),'allowNull':![]},'direction':{'type':Sequelize[_0xb206('0x3')]('in',_0xb206('0x4')),'defaultValue':_0xb206('0x4'),'allowNull':![]},'providerName':{'type':Sequelize[_0xb206('0x5')]},'providerResponse':{'type':Sequelize[_0xb206('0x2')]}};
\ No newline at end of file
index d92cb70..5abf59a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xfef3=['../../mysqldb','sendStatus','end','json','offset','limit','undefined','count','status','set','Content-Range','apply','reject','save','update','destroy','stack','name','send','map','rawAttributes','fieldName','type','model','query','keys','filters','intersection','attributes','length','hasOwnProperty','nolimit','order','sort','where','filter','merge','VIRTUAL','options','SquareMessage','then','includeAll','include','findAll','rows','catch','show','params','fields','create','body','find','eml-format','zip-dir','request-promise','moment','mustache','util','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','api','../../config/utils','../../config/environment'];(function(_0x256b72,_0x340985){var _0x2183e3=function(_0xf7fd37){while(--_0xf7fd37){_0x256b72['push'](_0x256b72['shift']());}};_0x2183e3(++_0x340985);}(_0xfef3,0x118));var _0x3fef=function(_0x289cf5,_0x501dfc){_0x289cf5=_0x289cf5-0x0;var _0x1f316d=_0xfef3[_0x289cf5];return _0x1f316d;};'use strict';var emlformat=require(_0x3fef('0x0'));var rimraf=require('rimraf');var zipdir=require(_0x3fef('0x1'));var jsonpatch=require('fast-json-patch');var rp=require(_0x3fef('0x2'));var moment=require(_0x3fef('0x3'));var BPromise=require('bluebird');var Mustache=require(_0x3fef('0x4'));var util=require(_0x3fef('0x5'));var path=require('path');var sox=require(_0x3fef('0x6'));var csv=require(_0x3fef('0x7'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x3fef('0x8'));var _=require(_0x3fef('0x9'));var squel=require(_0x3fef('0xa'));var crypto=require(_0x3fef('0xb'));var jsforce=require(_0x3fef('0xc'));var deskjs=require(_0x3fef('0xd'));var toCsv=require(_0x3fef('0x7'));var querystring=require(_0x3fef('0xe'));var Papa=require(_0x3fef('0xf'));var Redis=require(_0x3fef('0x10'));var authService=require(_0x3fef('0x11'));var qs=require(_0x3fef('0x12'));var as=require(_0x3fef('0x13'));var hardwareService=require(_0x3fef('0x14'));var logger=require('../../config/logger')(_0x3fef('0x15'));var utils=require(_0x3fef('0x16'));var config=require(_0x3fef('0x17'));var licenseUtil=require('../../config/license/util');var db=require(_0x3fef('0x18'))['db'];function respondWithStatusCode(_0x4c4a47,_0x2c99ff){_0x2c99ff=_0x2c99ff||0xcc;return function(_0x3d2c2d){if(_0x3d2c2d){return _0x4c4a47[_0x3fef('0x19')](_0x2c99ff);}return _0x4c4a47['status'](_0x2c99ff)[_0x3fef('0x1a')]();};}function respondWithResult(_0x4be62f,_0x15b757){_0x15b757=_0x15b757||0xc8;return function(_0x14c053){if(_0x14c053){return _0x4be62f['status'](_0x15b757)[_0x3fef('0x1b')](_0x14c053);}};}function respondWithFilteredResult(_0x177e28,_0x40b479){return function(_0x79b617){if(_0x79b617){var _0x395df0=typeof _0x40b479[_0x3fef('0x1c')]==='undefined'&&typeof _0x40b479[_0x3fef('0x1d')]===_0x3fef('0x1e');var _0x1ec282=_0x79b617[_0x3fef('0x1f')];var _0x1613ad=_0x395df0?0x0:_0x40b479[_0x3fef('0x1c')];var _0x53d993=_0x395df0?_0x79b617[_0x3fef('0x1f')]:_0x40b479[_0x3fef('0x1c')]+_0x40b479['limit'];var _0x2c7f36;if(_0x53d993>=_0x1ec282){_0x53d993=_0x1ec282;_0x2c7f36=0xc8;}else{_0x2c7f36=0xce;}_0x177e28[_0x3fef('0x20')](_0x2c7f36);return _0x177e28[_0x3fef('0x21')](_0x3fef('0x22'),_0x1613ad+'-'+_0x53d993+'/'+_0x1ec282)[_0x3fef('0x1b')](_0x79b617);}return null;};}function patchUpdates(_0x2b5226){return function(_0x451d11){try{jsonpatch[_0x3fef('0x23')](_0x451d11,_0x2b5226,!![]);}catch(_0x124e7c){return BPromise[_0x3fef('0x24')](_0x124e7c);}return _0x451d11[_0x3fef('0x25')]();};}function saveUpdates(_0x3bb110,_0x2eb578){return function(_0x39a8ea){if(_0x39a8ea){return _0x39a8ea[_0x3fef('0x26')](_0x3bb110)['then'](function(_0x5b56de){return _0x5b56de;});}return null;};}function removeEntity(_0x50025f,_0x378b03){return function(_0x3ba38d){if(_0x3ba38d){return _0x3ba38d[_0x3fef('0x27')]()['then'](function(){_0x50025f[_0x3fef('0x20')](0xcc)['end']();});}};}function handleEntityNotFound(_0x45464b,_0x2c0848){return function(_0x64d3e6){if(!_0x64d3e6){_0x45464b[_0x3fef('0x19')](0x194);}return _0x64d3e6;};}function handleError(_0x30e17a,_0x492ea0){_0x492ea0=_0x492ea0||0x1f4;return function(_0x4b4dee){logger['error'](_0x4b4dee[_0x3fef('0x28')]);if(_0x4b4dee[_0x3fef('0x29')]){delete _0x4b4dee['name'];}_0x30e17a[_0x3fef('0x20')](_0x492ea0)[_0x3fef('0x2a')](_0x4b4dee);};}exports['index']=function(_0x30a954,_0x3bdf03){var _0xf892bb={},_0x2b73fb={},_0x3a1a0a={'count':0x0,'rows':[]};var _0x137849=_[_0x3fef('0x2b')](db['SquareMessage'][_0x3fef('0x2c')],function(_0xc20ce5){return{'name':_0xc20ce5[_0x3fef('0x2d')],'type':_0xc20ce5[_0x3fef('0x2e')]['key']};});_0x2b73fb[_0x3fef('0x2f')]=_['map'](_0x137849,_0x3fef('0x29'));_0x2b73fb[_0x3fef('0x30')]=_[_0x3fef('0x31')](_0x30a954[_0x3fef('0x30')]);_0x2b73fb[_0x3fef('0x32')]=_[_0x3fef('0x33')](_0x2b73fb[_0x3fef('0x2f')],_0x2b73fb[_0x3fef('0x30')]);_0xf892bb[_0x3fef('0x34')]=_[_0x3fef('0x33')](_0x2b73fb['model'],qs['fields'](_0x30a954[_0x3fef('0x30')]['fields']));_0xf892bb[_0x3fef('0x34')]=_0xf892bb[_0x3fef('0x34')][_0x3fef('0x35')]?_0xf892bb[_0x3fef('0x34')]:_0x2b73fb[_0x3fef('0x2f')];if(!_0x30a954[_0x3fef('0x30')][_0x3fef('0x36')](_0x3fef('0x37'))){_0xf892bb[_0x3fef('0x1d')]=qs[_0x3fef('0x1d')](_0x30a954[_0x3fef('0x30')][_0x3fef('0x1d')]);_0xf892bb[_0x3fef('0x1c')]=qs[_0x3fef('0x1c')](_0x30a954['query'][_0x3fef('0x1c')]);}_0xf892bb[_0x3fef('0x38')]=qs[_0x3fef('0x39')](_0x30a954[_0x3fef('0x30')][_0x3fef('0x39')]);_0xf892bb[_0x3fef('0x3a')]=qs['filters'](_['pick'](_0x30a954[_0x3fef('0x30')],_0x2b73fb[_0x3fef('0x32')]),_0x137849);if(_0x30a954[_0x3fef('0x30')][_0x3fef('0x3b')]){_0xf892bb[_0x3fef('0x3a')]=_[_0x3fef('0x3c')](_0xf892bb[_0x3fef('0x3a')],{'$or':_[_0x3fef('0x2b')](_0x137849,function(_0x1fa70f){if(_0x1fa70f[_0x3fef('0x2e')]!==_0x3fef('0x3d')){var _0x560aae={};_0x560aae[_0x1fa70f[_0x3fef('0x29')]]={'$like':'%'+_0x30a954[_0x3fef('0x30')]['filter']+'%'};return _0x560aae;}})});}_0xf892bb=_['merge']({},_0xf892bb,_0x30a954[_0x3fef('0x3e')]);var _0x3dda68={'where':_0xf892bb[_0x3fef('0x3a')]};return db[_0x3fef('0x3f')][_0x3fef('0x1f')](_0x3dda68)[_0x3fef('0x40')](function(_0x17aff8){_0x3a1a0a[_0x3fef('0x1f')]=_0x17aff8;if(_0x30a954['query'][_0x3fef('0x41')]){_0xf892bb[_0x3fef('0x42')]=[{'all':!![]}];}return db[_0x3fef('0x3f')][_0x3fef('0x43')](_0xf892bb);})[_0x3fef('0x40')](function(_0x2143ec){_0x3a1a0a[_0x3fef('0x44')]=_0x2143ec;return _0x3a1a0a;})[_0x3fef('0x40')](respondWithFilteredResult(_0x3bdf03,_0xf892bb))[_0x3fef('0x45')](handleError(_0x3bdf03,null));};exports[_0x3fef('0x46')]=function(_0x12867c,_0x254880){var _0x2e1d7f={'raw':!![],'where':{'id':_0x12867c[_0x3fef('0x47')]['id']}},_0x15d2c7={};_0x15d2c7['model']=_[_0x3fef('0x31')](db[_0x3fef('0x3f')][_0x3fef('0x2c')]);_0x15d2c7[_0x3fef('0x30')]=_[_0x3fef('0x31')](_0x12867c[_0x3fef('0x30')]);_0x15d2c7['filters']=_[_0x3fef('0x33')](_0x15d2c7['model'],_0x15d2c7[_0x3fef('0x30')]);_0x2e1d7f[_0x3fef('0x34')]=_['intersection'](_0x15d2c7[_0x3fef('0x2f')],qs['fields'](_0x12867c[_0x3fef('0x30')][_0x3fef('0x48')]));_0x2e1d7f[_0x3fef('0x34')]=_0x2e1d7f[_0x3fef('0x34')][_0x3fef('0x35')]?_0x2e1d7f[_0x3fef('0x34')]:_0x15d2c7[_0x3fef('0x2f')];if(_0x12867c[_0x3fef('0x30')][_0x3fef('0x41')]){_0x2e1d7f[_0x3fef('0x42')]=[{'all':!![]}];}_0x2e1d7f=_[_0x3fef('0x3c')]({},_0x2e1d7f,_0x12867c[_0x3fef('0x3e')]);return db[_0x3fef('0x3f')]['find'](_0x2e1d7f)[_0x3fef('0x40')](handleEntityNotFound(_0x254880,null))[_0x3fef('0x40')](respondWithResult(_0x254880,null))['catch'](handleError(_0x254880,null));};exports[_0x3fef('0x49')]=function(_0x4210d6,_0x2f00c0){return db['SquareMessage'][_0x3fef('0x49')](_0x4210d6[_0x3fef('0x4a')],{})['then'](respondWithResult(_0x2f00c0,0xc9))[_0x3fef('0x45')](handleError(_0x2f00c0,null));};exports['update']=function(_0x48322c,_0x15fb2c){if(_0x48322c['body']['id']){delete _0x48322c[_0x3fef('0x4a')]['id'];}return db[_0x3fef('0x3f')]['find']({'where':{'id':_0x48322c[_0x3fef('0x47')]['id']}})[_0x3fef('0x40')](handleEntityNotFound(_0x15fb2c,null))[_0x3fef('0x40')](saveUpdates(_0x48322c['body'],null))[_0x3fef('0x40')](respondWithResult(_0x15fb2c,null))[_0x3fef('0x45')](handleError(_0x15fb2c,null));};exports[_0x3fef('0x27')]=function(_0x5b1acb,_0x324f70){return db[_0x3fef('0x3f')][_0x3fef('0x4b')]({'where':{'id':_0x5b1acb[_0x3fef('0x47')]['id']}})[_0x3fef('0x40')](handleEntityNotFound(_0x324f70,null))['then'](removeEntity(_0x324f70,null))[_0x3fef('0x45')](handleError(_0x324f70,null));};
\ No newline at end of file
+var _0x84a3=['options','include','findAll','rows','catch','params','fields','includeAll','merge','create','body','find','destroy','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox','to-csv','ejs','fs-extra','crypto','jsforce','desk.js','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','../../config/logger','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','json','offset','undefined','count','set','apply','reject','save','update','then','end','error','stack','name','map','SquareMessage','rawAttributes','fieldName','type','key','model','query','keys','filters','intersection','attributes','length','hasOwnProperty','nolimit','limit','order','sort','where','pick','filter','VIRTUAL'];(function(_0x3ab928,_0x2b990b){var _0xf47692=function(_0x311b8e){while(--_0x311b8e){_0x3ab928['push'](_0x3ab928['shift']());}};_0xf47692(++_0x2b990b);}(_0x84a3,0x189));var _0x384a=function(_0x15f343,_0x3f2a3a){_0x15f343=_0x15f343-0x0;var _0xf837fb=_0x84a3[_0x15f343];return _0xf837fb;};'use strict';var emlformat=require(_0x384a('0x0'));var rimraf=require(_0x384a('0x1'));var zipdir=require(_0x384a('0x2'));var jsonpatch=require(_0x384a('0x3'));var rp=require(_0x384a('0x4'));var moment=require(_0x384a('0x5'));var BPromise=require(_0x384a('0x6'));var Mustache=require(_0x384a('0x7'));var util=require(_0x384a('0x8'));var path=require(_0x384a('0x9'));var sox=require(_0x384a('0xa'));var csv=require(_0x384a('0xb'));var ejs=require(_0x384a('0xc'));var fs=require('fs');var fs_extra=require(_0x384a('0xd'));var _=require('lodash');var squel=require('squel');var crypto=require(_0x384a('0xe'));var jsforce=require(_0x384a('0xf'));var deskjs=require(_0x384a('0x10'));var toCsv=require(_0x384a('0xb'));var querystring=require('querystring');var Papa=require('papaparse');var Redis=require(_0x384a('0x11'));var authService=require(_0x384a('0x12'));var qs=require('../../components/parsers/qs');var as=require(_0x384a('0x13'));var hardwareService=require('../../config/license/hardware');var logger=require(_0x384a('0x14'))('api');var utils=require(_0x384a('0x15'));var config=require(_0x384a('0x16'));var licenseUtil=require(_0x384a('0x17'));var db=require(_0x384a('0x18'))['db'];function respondWithStatusCode(_0x55b299,_0x2d35a6){_0x2d35a6=_0x2d35a6||0xcc;return function(_0x4b2ae0){if(_0x4b2ae0){return _0x55b299[_0x384a('0x19')](_0x2d35a6);}return _0x55b299[_0x384a('0x1a')](_0x2d35a6)['end']();};}function respondWithResult(_0x2652ee,_0x5b5dd6){_0x5b5dd6=_0x5b5dd6||0xc8;return function(_0x388214){if(_0x388214){return _0x2652ee[_0x384a('0x1a')](_0x5b5dd6)[_0x384a('0x1b')](_0x388214);}};}function respondWithFilteredResult(_0x5a9a3f,_0x5f0176){return function(_0x5dac38){if(_0x5dac38){var _0x5bd02e=typeof _0x5f0176[_0x384a('0x1c')]===_0x384a('0x1d')&&typeof _0x5f0176['limit']===_0x384a('0x1d');var _0xcfef46=_0x5dac38[_0x384a('0x1e')];var _0x2e50e4=_0x5bd02e?0x0:_0x5f0176[_0x384a('0x1c')];var _0x312020=_0x5bd02e?_0x5dac38[_0x384a('0x1e')]:_0x5f0176['offset']+_0x5f0176['limit'];var _0x53813d;if(_0x312020>=_0xcfef46){_0x312020=_0xcfef46;_0x53813d=0xc8;}else{_0x53813d=0xce;}_0x5a9a3f['status'](_0x53813d);return _0x5a9a3f[_0x384a('0x1f')]('Content-Range',_0x2e50e4+'-'+_0x312020+'/'+_0xcfef46)['json'](_0x5dac38);}return null;};}function patchUpdates(_0x17c6dc){return function(_0x3203ff){try{jsonpatch[_0x384a('0x20')](_0x3203ff,_0x17c6dc,!![]);}catch(_0x50a557){return BPromise[_0x384a('0x21')](_0x50a557);}return _0x3203ff[_0x384a('0x22')]();};}function saveUpdates(_0x2d197b,_0x153aa1){return function(_0x4a4f63){if(_0x4a4f63){return _0x4a4f63[_0x384a('0x23')](_0x2d197b)[_0x384a('0x24')](function(_0x51a537){return _0x51a537;});}return null;};}function removeEntity(_0x4693ac,_0x14cf2a){return function(_0x2cf7f3){if(_0x2cf7f3){return _0x2cf7f3['destroy']()[_0x384a('0x24')](function(){_0x4693ac[_0x384a('0x1a')](0xcc)[_0x384a('0x25')]();});}};}function handleEntityNotFound(_0x27a4e6,_0x27b001){return function(_0x157fb2){if(!_0x157fb2){_0x27a4e6[_0x384a('0x19')](0x194);}return _0x157fb2;};}function handleError(_0x432570,_0x363887){_0x363887=_0x363887||0x1f4;return function(_0x518cc2){logger[_0x384a('0x26')](_0x518cc2[_0x384a('0x27')]);if(_0x518cc2[_0x384a('0x28')]){delete _0x518cc2[_0x384a('0x28')];}_0x432570['status'](_0x363887)['send'](_0x518cc2);};}exports['index']=function(_0x3b08ba,_0x39893b){var _0x3151f8={},_0x43ac25={},_0x2fdd16={'count':0x0,'rows':[]};var _0x5ae33b=_[_0x384a('0x29')](db[_0x384a('0x2a')][_0x384a('0x2b')],function(_0x1850d0){return{'name':_0x1850d0[_0x384a('0x2c')],'type':_0x1850d0[_0x384a('0x2d')][_0x384a('0x2e')]};});_0x43ac25[_0x384a('0x2f')]=_['map'](_0x5ae33b,_0x384a('0x28'));_0x43ac25[_0x384a('0x30')]=_[_0x384a('0x31')](_0x3b08ba['query']);_0x43ac25[_0x384a('0x32')]=_[_0x384a('0x33')](_0x43ac25[_0x384a('0x2f')],_0x43ac25[_0x384a('0x30')]);_0x3151f8[_0x384a('0x34')]=_['intersection'](_0x43ac25['model'],qs['fields'](_0x3b08ba['query']['fields']));_0x3151f8[_0x384a('0x34')]=_0x3151f8[_0x384a('0x34')][_0x384a('0x35')]?_0x3151f8[_0x384a('0x34')]:_0x43ac25[_0x384a('0x2f')];if(!_0x3b08ba[_0x384a('0x30')][_0x384a('0x36')](_0x384a('0x37'))){_0x3151f8[_0x384a('0x38')]=qs[_0x384a('0x38')](_0x3b08ba[_0x384a('0x30')]['limit']);_0x3151f8[_0x384a('0x1c')]=qs[_0x384a('0x1c')](_0x3b08ba['query']['offset']);}_0x3151f8[_0x384a('0x39')]=qs[_0x384a('0x3a')](_0x3b08ba[_0x384a('0x30')][_0x384a('0x3a')]);_0x3151f8[_0x384a('0x3b')]=qs[_0x384a('0x32')](_[_0x384a('0x3c')](_0x3b08ba[_0x384a('0x30')],_0x43ac25[_0x384a('0x32')]),_0x5ae33b);if(_0x3b08ba['query'][_0x384a('0x3d')]){_0x3151f8[_0x384a('0x3b')]=_['merge'](_0x3151f8[_0x384a('0x3b')],{'$or':_['map'](_0x5ae33b,function(_0x38673f){if(_0x38673f[_0x384a('0x2d')]!==_0x384a('0x3e')){var _0x56aebf={};_0x56aebf[_0x38673f[_0x384a('0x28')]]={'$like':'%'+_0x3b08ba[_0x384a('0x30')][_0x384a('0x3d')]+'%'};return _0x56aebf;}})});}_0x3151f8=_['merge']({},_0x3151f8,_0x3b08ba[_0x384a('0x3f')]);var _0x50775c={'where':_0x3151f8[_0x384a('0x3b')]};return db[_0x384a('0x2a')][_0x384a('0x1e')](_0x50775c)[_0x384a('0x24')](function(_0x56e232){_0x2fdd16[_0x384a('0x1e')]=_0x56e232;if(_0x3b08ba[_0x384a('0x30')]['includeAll']){_0x3151f8[_0x384a('0x40')]=[{'all':!![]}];}return db[_0x384a('0x2a')][_0x384a('0x41')](_0x3151f8);})['then'](function(_0x4f1fae){_0x2fdd16[_0x384a('0x42')]=_0x4f1fae;return _0x2fdd16;})[_0x384a('0x24')](respondWithFilteredResult(_0x39893b,_0x3151f8))[_0x384a('0x43')](handleError(_0x39893b,null));};exports['show']=function(_0x440c95,_0x1494e0){var _0x995c64={'raw':!![],'where':{'id':_0x440c95[_0x384a('0x44')]['id']}},_0x4f33bf={};_0x4f33bf[_0x384a('0x2f')]=_[_0x384a('0x31')](db[_0x384a('0x2a')][_0x384a('0x2b')]);_0x4f33bf[_0x384a('0x30')]=_[_0x384a('0x31')](_0x440c95[_0x384a('0x30')]);_0x4f33bf[_0x384a('0x32')]=_[_0x384a('0x33')](_0x4f33bf['model'],_0x4f33bf[_0x384a('0x30')]);_0x995c64[_0x384a('0x34')]=_[_0x384a('0x33')](_0x4f33bf[_0x384a('0x2f')],qs[_0x384a('0x45')](_0x440c95['query'][_0x384a('0x45')]));_0x995c64[_0x384a('0x34')]=_0x995c64[_0x384a('0x34')][_0x384a('0x35')]?_0x995c64[_0x384a('0x34')]:_0x4f33bf['model'];if(_0x440c95['query'][_0x384a('0x46')]){_0x995c64['include']=[{'all':!![]}];}_0x995c64=_[_0x384a('0x47')]({},_0x995c64,_0x440c95[_0x384a('0x3f')]);return db[_0x384a('0x2a')]['find'](_0x995c64)[_0x384a('0x24')](handleEntityNotFound(_0x1494e0,null))[_0x384a('0x24')](respondWithResult(_0x1494e0,null))[_0x384a('0x43')](handleError(_0x1494e0,null));};exports['create']=function(_0x5970ab,_0x5ca4a1){return db[_0x384a('0x2a')][_0x384a('0x48')](_0x5970ab['body'],{})[_0x384a('0x24')](respondWithResult(_0x5ca4a1,0xc9))[_0x384a('0x43')](handleError(_0x5ca4a1,null));};exports[_0x384a('0x23')]=function(_0xa847ea,_0x624da2){if(_0xa847ea[_0x384a('0x49')]['id']){delete _0xa847ea[_0x384a('0x49')]['id'];}return db[_0x384a('0x2a')][_0x384a('0x4a')]({'where':{'id':_0xa847ea['params']['id']}})[_0x384a('0x24')](handleEntityNotFound(_0x624da2,null))[_0x384a('0x24')](saveUpdates(_0xa847ea[_0x384a('0x49')],null))['then'](respondWithResult(_0x624da2,null))[_0x384a('0x43')](handleError(_0x624da2,null));};exports[_0x384a('0x4b')]=function(_0x4cbd7b,_0x270f37){return db[_0x384a('0x2a')][_0x384a('0x4a')]({'where':{'id':_0x4cbd7b[_0x384a('0x44')]['id']}})[_0x384a('0x24')](handleEntityNotFound(_0x270f37,null))['then'](removeEntity(_0x270f37,null))[_0x384a('0x43')](handleError(_0x270f37,null));};
\ No newline at end of file
index 20d93cb..2897938 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe83d=['util','../../config/logger','bluebird','request-promise','path','../../config/environment','./squareMessage.attributes','exports','define','SquareMessage','lodash'];(function(_0x58e29f,_0x475e63){var _0x32a7ab=function(_0x1fe77b){while(--_0x1fe77b){_0x58e29f['push'](_0x58e29f['shift']());}};_0x32a7ab(++_0x475e63);}(_0xe83d,0x15f));var _0xde83=function(_0x4723ae,_0x2c0ee5){_0x4723ae=_0x4723ae-0x0;var _0x171e6a=_0xe83d[_0x4723ae];return _0x171e6a;};'use strict';var _=require(_0xde83('0x0'));var util=require(_0xde83('0x1'));var logger=require(_0xde83('0x2'))('api');var moment=require('moment');var BPromise=require(_0xde83('0x3'));var rp=require(_0xde83('0x4'));var fs=require('fs');var path=require(_0xde83('0x5'));var rimraf=require('rimraf');var config=require(_0xde83('0x6'));var attributes=require(_0xde83('0x7'));module[_0xde83('0x8')]=function(_0x2588a3,_0x18f5f1){return _0x2588a3[_0xde83('0x9')](_0xde83('0xa'),attributes,{'tableName':'square_messages','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x5c0c=['square_messages','util','../../config/logger','api','moment','bluebird','request-promise','rimraf','./squareMessage.attributes','exports','define','SquareMessage'];(function(_0x20a584,_0xe384a5){var _0x4b41a8=function(_0x2127c6){while(--_0x2127c6){_0x20a584['push'](_0x20a584['shift']());}};_0x4b41a8(++_0xe384a5);}(_0x5c0c,0x139));var _0xc5c0=function(_0x308368,_0x3c26f9){_0x308368=_0x308368-0x0;var _0x224038=_0x5c0c[_0x308368];return _0x224038;};'use strict';var _=require('lodash');var util=require(_0xc5c0('0x0'));var logger=require(_0xc5c0('0x1'))(_0xc5c0('0x2'));var moment=require(_0xc5c0('0x3'));var BPromise=require(_0xc5c0('0x4'));var rp=require(_0xc5c0('0x5'));var fs=require('fs');var path=require('path');var rimraf=require(_0xc5c0('0x6'));var config=require('../../config/environment');var attributes=require(_0xc5c0('0x7'));module[_0xc5c0('0x8')]=function(_0x4671a0,_0x3d3876){return _0x4671a0[_0xc5c0('0x9')](_0xc5c0('0xa'),attributes,{'tableName':_0xc5c0('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 91fdac2..4c8ac63 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3331=['rpc','../../config/environment','jayson/promise','client','http','request','then','SquareMessage,\x20%s,\x20%s','request\x20sent','error','code','message','info','result','catch','CreateSquareMessage','SquareMessage','create','body','options','debug','lodash','util','moment','randomstring','../../mysqldb','../../config/logger'];(function(_0x3c504b,_0x437693){var _0x2e5354=function(_0x456709){while(--_0x456709){_0x3c504b['push'](_0x3c504b['shift']());}};_0x2e5354(++_0x437693);}(_0x3331,0x1aa));var _0x1333=function(_0x3a0686,_0x37be22){_0x3a0686=_0x3a0686-0x0;var _0x124448=_0x3331[_0x3a0686];return _0x124448;};'use strict';var _=require(_0x1333('0x0'));var util=require(_0x1333('0x1'));var moment=require(_0x1333('0x2'));var BPromise=require('bluebird');var rs=require(_0x1333('0x3'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x1333('0x4'))['db'];var utils=require('../../config/utils');var logger=require(_0x1333('0x5'))(_0x1333('0x6'));var config=require(_0x1333('0x7'));var jayson=require(_0x1333('0x8'));var client=jayson[_0x1333('0x9')][_0x1333('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x8fea54,_0x352a0f,_0x3f45b6){return new BPromise(function(_0x2e8412,_0x2ed0b2){return client[_0x1333('0xb')](_0x8fea54,_0x3f45b6)[_0x1333('0xc')](function(_0x41f88c){logger['info'](_0x1333('0xd'),_0x352a0f,_0x1333('0xe'));logger['debug']('SquareMessage,\x20%s,\x20%s,\x20%s',_0x352a0f,'request\x20sent',JSON['stringify'](_0x41f88c));if(_0x41f88c[_0x1333('0xf')]){if(_0x41f88c[_0x1333('0xf')][_0x1333('0x10')]===0x1f4){logger[_0x1333('0xf')](_0x1333('0xd'),_0x352a0f,_0x41f88c['error'][_0x1333('0x11')]);return _0x2ed0b2(_0x41f88c[_0x1333('0xf')]['message']);}logger['error']('SquareMessage,\x20%s,\x20%s',_0x352a0f,_0x41f88c['error'][_0x1333('0x11')]);return _0x2e8412(_0x41f88c['error']['message']);}else{logger[_0x1333('0x12')]('SquareMessage,\x20%s,\x20%s',_0x352a0f,_0x1333('0xe'));_0x2e8412(_0x41f88c[_0x1333('0x13')]['message']);}})[_0x1333('0x14')](function(_0x29e873){logger[_0x1333('0xf')](_0x1333('0xd'),_0x352a0f,_0x29e873);_0x2ed0b2(_0x29e873);});});}exports[_0x1333('0x15')]=function(_0x96cf4a){var _0x3249f4=this;return new Promise(function(_0x1f0ee2,_0x5103f9){return db[_0x1333('0x16')][_0x1333('0x17')](_0x96cf4a[_0x1333('0x18')],{'raw':_0x96cf4a['options']?_0x96cf4a[_0x1333('0x19')]['raw']===undefined?!![]:![]:!![]})['then'](function(_0xc157ad){logger[_0x1333('0x12')](_0x1333('0x15'),_0x96cf4a);logger[_0x1333('0x1a')](_0x1333('0x15'),_0x96cf4a,JSON['stringify'](_0xc157ad));_0x1f0ee2(_0xc157ad);})[_0x1333('0x14')](function(_0x45a89e){logger[_0x1333('0xf')](_0x1333('0x15'),_0x45a89e['message'],_0x96cf4a);_0x5103f9(_0x3249f4[_0x1333('0xf')](0x1f4,_0x45a89e[_0x1333('0x11')]));});});};
\ No newline at end of file
+var _0x83f4=['client','http','request','info','request\x20sent','debug','SquareMessage,\x20%s,\x20%s,\x20%s','stringify','error','code','SquareMessage,\x20%s,\x20%s','message','catch','SquareMessage','create','body','options','raw','then','CreateSquareMessage','lodash','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','rpc','../../config/environment','jayson/promise'];(function(_0x492e1b,_0x4877ce){var _0x330a95=function(_0x2b1bdb){while(--_0x2b1bdb){_0x492e1b['push'](_0x492e1b['shift']());}};_0x330a95(++_0x4877ce);}(_0x83f4,0x122));var _0x483f=function(_0x34ff4d,_0x45b363){_0x34ff4d=_0x34ff4d-0x0;var _0xb7cfc3=_0x83f4[_0x34ff4d];return _0xb7cfc3;};'use strict';var _=require(_0x483f('0x0'));var util=require('util');var moment=require(_0x483f('0x1'));var BPromise=require(_0x483f('0x2'));var rs=require(_0x483f('0x3'));var fs=require('fs');var Redis=require(_0x483f('0x4'));var db=require(_0x483f('0x5'))['db'];var utils=require(_0x483f('0x6'));var logger=require('../../config/logger')(_0x483f('0x7'));var config=require(_0x483f('0x8'));var jayson=require(_0x483f('0x9'));var client=jayson[_0x483f('0xa')][_0x483f('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x544f5f,_0x2eb81d,_0x432419){return new BPromise(function(_0x23c9c0,_0xb4d09a){return client[_0x483f('0xc')](_0x544f5f,_0x432419)['then'](function(_0x23afeb){logger[_0x483f('0xd')]('SquareMessage,\x20%s,\x20%s',_0x2eb81d,_0x483f('0xe'));logger[_0x483f('0xf')](_0x483f('0x10'),_0x2eb81d,_0x483f('0xe'),JSON[_0x483f('0x11')](_0x23afeb));if(_0x23afeb[_0x483f('0x12')]){if(_0x23afeb[_0x483f('0x12')][_0x483f('0x13')]===0x1f4){logger[_0x483f('0x12')](_0x483f('0x14'),_0x2eb81d,_0x23afeb[_0x483f('0x12')][_0x483f('0x15')]);return _0xb4d09a(_0x23afeb['error']['message']);}logger[_0x483f('0x12')](_0x483f('0x14'),_0x2eb81d,_0x23afeb['error'][_0x483f('0x15')]);return _0x23c9c0(_0x23afeb[_0x483f('0x12')]['message']);}else{logger[_0x483f('0xd')](_0x483f('0x14'),_0x2eb81d,_0x483f('0xe'));_0x23c9c0(_0x23afeb['result'][_0x483f('0x15')]);}})[_0x483f('0x16')](function(_0x4d30b4){logger[_0x483f('0x12')]('SquareMessage,\x20%s,\x20%s',_0x2eb81d,_0x4d30b4);_0xb4d09a(_0x4d30b4);});});}exports['CreateSquareMessage']=function(_0x3e8557){var _0x2db381=this;return new Promise(function(_0x1d11b0,_0x1fd438){return db[_0x483f('0x17')][_0x483f('0x18')](_0x3e8557[_0x483f('0x19')],{'raw':_0x3e8557['options']?_0x3e8557[_0x483f('0x1a')][_0x483f('0x1b')]===undefined?!![]:![]:!![]})[_0x483f('0x1c')](function(_0x2928f9){logger[_0x483f('0xd')](_0x483f('0x1d'),_0x3e8557);logger[_0x483f('0xf')](_0x483f('0x1d'),_0x3e8557,JSON['stringify'](_0x2928f9));_0x1d11b0(_0x2928f9);})[_0x483f('0x16')](function(_0x2faffb){logger[_0x483f('0x12')](_0x483f('0x1d'),_0x2faffb[_0x483f('0x15')],_0x3e8557);_0x1fd438(_0x2db381[_0x483f('0x12')](0x1f4,_0x2faffb[_0x483f('0x15')]));});});};
\ No newline at end of file
index 348179d..493cbc2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xdbc6=['path','express','Router','../../components/auth/service','../../components/interaction/service','./squareOdbc.controller','get','isAuthenticated','index','show','/:id/test','15s','test','post','create','put','/:id','update','delete','destroy','exports','multer'];(function(_0x101e7b,_0x4ef05b){var _0x4995c0=function(_0x1a6488){while(--_0x1a6488){_0x101e7b['push'](_0x101e7b['shift']());}};_0x4995c0(++_0x4ef05b);}(_0xdbc6,0x11d));var _0x6dbc=function(_0x26086a,_0x49fcaf){_0x26086a=_0x26086a-0x0;var _0x1490d5=_0xdbc6[_0x26086a];return _0x1490d5;};'use strict';var multer=require(_0x6dbc('0x0'));var util=require('util');var path=require(_0x6dbc('0x1'));var timeout=require('connect-timeout');var express=require(_0x6dbc('0x2'));var router=express[_0x6dbc('0x3')]();var fs_extra=require('fs-extra');var auth=require(_0x6dbc('0x4'));var interaction=require(_0x6dbc('0x5'));var config=require('../../config/environment');var controller=require(_0x6dbc('0x6'));router[_0x6dbc('0x7')]('/',auth[_0x6dbc('0x8')](),controller[_0x6dbc('0x9')]);router[_0x6dbc('0x7')]('/:id',auth[_0x6dbc('0x8')](),controller[_0x6dbc('0xa')]);router[_0x6dbc('0x7')](_0x6dbc('0xb'),auth[_0x6dbc('0x8')](),timeout(_0x6dbc('0xc')),controller[_0x6dbc('0xd')]);router[_0x6dbc('0xe')]('/',auth[_0x6dbc('0x8')](),controller[_0x6dbc('0xf')]);router[_0x6dbc('0x10')](_0x6dbc('0x11'),auth[_0x6dbc('0x8')](),controller[_0x6dbc('0x12')]);router[_0x6dbc('0x13')](_0x6dbc('0x11'),auth[_0x6dbc('0x8')](),controller[_0x6dbc('0x14')]);module[_0x6dbc('0x15')]=router;
\ No newline at end of file
+var _0xcbed=['express','Router','./squareOdbc.controller','index','get','/:id','isAuthenticated','show','/:id/test','15s','create','put','update','delete','destroy','exports','util','connect-timeout'];(function(_0x3376cf,_0x4ecb0b){var _0x559549=function(_0x2a028c){while(--_0x2a028c){_0x3376cf['push'](_0x3376cf['shift']());}};_0x559549(++_0x4ecb0b);}(_0xcbed,0x1ae));var _0xdcbe=function(_0x1940ec,_0x28d385){_0x1940ec=_0x1940ec-0x0;var _0xeff9ae=_0xcbed[_0x1940ec];return _0xeff9ae;};'use strict';var multer=require('multer');var util=require(_0xdcbe('0x0'));var path=require('path');var timeout=require(_0xdcbe('0x1'));var express=require(_0xdcbe('0x2'));var router=express[_0xdcbe('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(_0xdcbe('0x4'));router['get']('/',auth['isAuthenticated'](),controller[_0xdcbe('0x5')]);router[_0xdcbe('0x6')](_0xdcbe('0x7'),auth[_0xdcbe('0x8')](),controller[_0xdcbe('0x9')]);router[_0xdcbe('0x6')](_0xdcbe('0xa'),auth['isAuthenticated'](),timeout(_0xdcbe('0xb')),controller['test']);router['post']('/',auth[_0xdcbe('0x8')](),controller[_0xdcbe('0xc')]);router[_0xdcbe('0xd')]('/:id',auth[_0xdcbe('0x8')](),controller[_0xdcbe('0xe')]);router[_0xdcbe('0xf')](_0xdcbe('0x7'),auth['isAuthenticated'](),controller[_0xdcbe('0x10')]);module[_0xdcbe('0x11')]=router;
\ No newline at end of file
index 3747425..d17c362 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4625=['STRING','sequelize'];(function(_0x2eff3b,_0x321a0a){var _0xdba2be=function(_0x214409){while(--_0x214409){_0x2eff3b['push'](_0x2eff3b['shift']());}};_0xdba2be(++_0x321a0a);}(_0x4625,0x1df));var _0x5462=function(_0x48129d,_0x1345d8){_0x48129d=_0x48129d-0x0;var _0x1dc6cf=_0x4625[_0x48129d];return _0x1dc6cf;};'use strict';var Sequelize=require(_0x5462('0x0'));module['exports']={'name':{'type':Sequelize[_0x5462('0x1')],'unique':'name','allowNull':![]},'dsn':{'type':Sequelize[_0x5462('0x1')]},'description':{'type':Sequelize[_0x5462('0x1')]}};
\ No newline at end of file
+var _0x8f28=['name','sequelize','STRING'];(function(_0x3e7df7,_0x1caa85){var _0x339670=function(_0x12d940){while(--_0x12d940){_0x3e7df7['push'](_0x3e7df7['shift']());}};_0x339670(++_0x1caa85);}(_0x8f28,0x17e));var _0x88f2=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x8f28[_0x3dd15e];return _0x231fd0;};'use strict';var Sequelize=require(_0x88f2('0x0'));module['exports']={'name':{'type':Sequelize[_0x88f2('0x1')],'unique':_0x88f2('0x2'),'allowNull':![]},'dsn':{'type':Sequelize[_0x88f2('0x1')]},'description':{'type':Sequelize[_0x88f2('0x1')]}};
\ No newline at end of file
index a0fbdab..c885782 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc567=['destroy','ODBC','UserProfileResource','end','error','stack','send','index','fieldName','key','model','map','name','query','keys','filters','intersection','fields','attributes','hasOwnProperty','nolimit','order','sort','pick','filter','merge','where','type','options','include','SquareOdbc','findAll','rows','catch','params','length','includeAll','find','create','body','user','get','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','UserProfileSection','userProfileId','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','dsn','odbc','openSync','closeSync','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','util','sox','to-csv','ejs','lodash','squel','crypto','desk.js','querystring','papaparse','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','api','../../config/utils','../../config/license/util','../../mysqldb','status','json','undefined','limit','count','offset','set','Content-Range','apply','reject','save','update','then'];(function(_0x577519,_0x346daf){var _0x5b12f7=function(_0x4aecb6){while(--_0x4aecb6){_0x577519['push'](_0x577519['shift']());}};_0x5b12f7(++_0x346daf);}(_0xc567,0x194));var _0x7c56=function(_0x34f58a,_0x1f9449){_0x34f58a=_0x34f58a-0x0;var _0x36909d=_0xc567[_0x34f58a];return _0x36909d;};'use strict';var emlformat=require(_0x7c56('0x0'));var rimraf=require(_0x7c56('0x1'));var zipdir=require(_0x7c56('0x2'));var jsonpatch=require(_0x7c56('0x3'));var rp=require(_0x7c56('0x4'));var moment=require(_0x7c56('0x5'));var BPromise=require('bluebird');var Mustache=require('mustache');var util=require(_0x7c56('0x6'));var path=require('path');var sox=require(_0x7c56('0x7'));var csv=require(_0x7c56('0x8'));var ejs=require(_0x7c56('0x9'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x7c56('0xa'));var squel=require(_0x7c56('0xb'));var crypto=require(_0x7c56('0xc'));var jsforce=require('jsforce');var deskjs=require(_0x7c56('0xd'));var toCsv=require(_0x7c56('0x8'));var querystring=require(_0x7c56('0xe'));var Papa=require(_0x7c56('0xf'));var Redis=require(_0x7c56('0x10'));var authService=require('../../components/auth/service');var qs=require(_0x7c56('0x11'));var as=require(_0x7c56('0x12'));var hardwareService=require('../../config/license/hardware');var logger=require('../../config/logger')(_0x7c56('0x13'));var utils=require(_0x7c56('0x14'));var config=require('../../config/environment');var licenseUtil=require(_0x7c56('0x15'));var db=require(_0x7c56('0x16'))['db'];function respondWithStatusCode(_0x2c94e8,_0x311c32){_0x311c32=_0x311c32||0xcc;return function(_0x2e5f14){if(_0x2e5f14){return _0x2c94e8['sendStatus'](_0x311c32);}return _0x2c94e8[_0x7c56('0x17')](_0x311c32)['end']();};}function respondWithResult(_0x4b7162,_0x555c68){_0x555c68=_0x555c68||0xc8;return function(_0x4b3a52){if(_0x4b3a52){return _0x4b7162[_0x7c56('0x17')](_0x555c68)[_0x7c56('0x18')](_0x4b3a52);}};}function respondWithFilteredResult(_0x1ef465,_0x1106fb){return function(_0x46f57e){if(_0x46f57e){var _0x2d8180=typeof _0x1106fb['offset']===_0x7c56('0x19')&&typeof _0x1106fb[_0x7c56('0x1a')]===_0x7c56('0x19');var _0x19ef44=_0x46f57e[_0x7c56('0x1b')];var _0x303b27=_0x2d8180?0x0:_0x1106fb[_0x7c56('0x1c')];var _0x1ec15b=_0x2d8180?_0x46f57e[_0x7c56('0x1b')]:_0x1106fb[_0x7c56('0x1c')]+_0x1106fb[_0x7c56('0x1a')];var _0x360c81;if(_0x1ec15b>=_0x19ef44){_0x1ec15b=_0x19ef44;_0x360c81=0xc8;}else{_0x360c81=0xce;}_0x1ef465[_0x7c56('0x17')](_0x360c81);return _0x1ef465[_0x7c56('0x1d')](_0x7c56('0x1e'),_0x303b27+'-'+_0x1ec15b+'/'+_0x19ef44)[_0x7c56('0x18')](_0x46f57e);}return null;};}function patchUpdates(_0x1205c2){return function(_0x2775d8){try{jsonpatch[_0x7c56('0x1f')](_0x2775d8,_0x1205c2,!![]);}catch(_0x568224){return BPromise[_0x7c56('0x20')](_0x568224);}return _0x2775d8[_0x7c56('0x21')]();};}function saveUpdates(_0x232616,_0x361125){return function(_0x28c3d9){if(_0x28c3d9){return _0x28c3d9[_0x7c56('0x22')](_0x232616)[_0x7c56('0x23')](function(_0x5663fd){return _0x5663fd;});}return null;};}function removeEntity(_0x2b0a24,_0x1ccac5){return function(_0x1ff2dc){if(_0x1ff2dc){return _0x1ff2dc[_0x7c56('0x24')]()['then'](function(){var _0x549a5c=_0x1ff2dc['get']({'plain':!![]});var _0xe1bc88=_0x7c56('0x25');return db[_0x7c56('0x26')][_0x7c56('0x24')]({'where':{'type':_0xe1bc88,'resourceId':_0x549a5c['id']}})['then'](function(){return _0x1ff2dc;});})[_0x7c56('0x23')](function(){_0x2b0a24['status'](0xcc)[_0x7c56('0x27')]();});}};}function handleEntityNotFound(_0x22880a,_0x3be36d){return function(_0x5bcb8f){if(!_0x5bcb8f){_0x22880a['sendStatus'](0x194);}return _0x5bcb8f;};}function handleError(_0x222fff,_0x379770){_0x379770=_0x379770||0x1f4;return function(_0x343454){logger[_0x7c56('0x28')](_0x343454[_0x7c56('0x29')]);if(_0x343454['name']){delete _0x343454['name'];}_0x222fff[_0x7c56('0x17')](_0x379770)[_0x7c56('0x2a')](_0x343454);};}exports[_0x7c56('0x2b')]=function(_0x1f612b,_0x54d914){var _0x3c5aaf={},_0x24e2e0={},_0x4a6475={'count':0x0,'rows':[]};var _0x509e80=_['map'](db['SquareOdbc']['rawAttributes'],function(_0x3842df){return{'name':_0x3842df[_0x7c56('0x2c')],'type':_0x3842df['type'][_0x7c56('0x2d')]};});_0x24e2e0[_0x7c56('0x2e')]=_[_0x7c56('0x2f')](_0x509e80,_0x7c56('0x30'));_0x24e2e0[_0x7c56('0x31')]=_[_0x7c56('0x32')](_0x1f612b[_0x7c56('0x31')]);_0x24e2e0[_0x7c56('0x33')]=_[_0x7c56('0x34')](_0x24e2e0['model'],_0x24e2e0[_0x7c56('0x31')]);_0x3c5aaf['attributes']=_[_0x7c56('0x34')](_0x24e2e0['model'],qs[_0x7c56('0x35')](_0x1f612b[_0x7c56('0x31')][_0x7c56('0x35')]));_0x3c5aaf[_0x7c56('0x36')]=_0x3c5aaf['attributes']['length']?_0x3c5aaf[_0x7c56('0x36')]:_0x24e2e0['model'];if(!_0x1f612b['query'][_0x7c56('0x37')](_0x7c56('0x38'))){_0x3c5aaf['limit']=qs['limit'](_0x1f612b[_0x7c56('0x31')][_0x7c56('0x1a')]);_0x3c5aaf[_0x7c56('0x1c')]=qs[_0x7c56('0x1c')](_0x1f612b['query'][_0x7c56('0x1c')]);}_0x3c5aaf[_0x7c56('0x39')]=qs[_0x7c56('0x3a')](_0x1f612b[_0x7c56('0x31')][_0x7c56('0x3a')]);_0x3c5aaf['where']=qs[_0x7c56('0x33')](_[_0x7c56('0x3b')](_0x1f612b[_0x7c56('0x31')],_0x24e2e0['filters']),_0x509e80);if(_0x1f612b['query'][_0x7c56('0x3c')]){_0x3c5aaf['where']=_[_0x7c56('0x3d')](_0x3c5aaf[_0x7c56('0x3e')],{'$or':_[_0x7c56('0x2f')](_0x509e80,function(_0x2403f9){if(_0x2403f9[_0x7c56('0x3f')]!=='VIRTUAL'){var _0x93443f={};_0x93443f[_0x2403f9[_0x7c56('0x30')]]={'$like':'%'+_0x1f612b[_0x7c56('0x31')][_0x7c56('0x3c')]+'%'};return _0x93443f;}})});}_0x3c5aaf=_[_0x7c56('0x3d')]({},_0x3c5aaf,_0x1f612b[_0x7c56('0x40')]);var _0x1229eb={'where':_0x3c5aaf[_0x7c56('0x3e')]};return db['SquareOdbc']['count'](_0x1229eb)[_0x7c56('0x23')](function(_0x5e621d){_0x4a6475[_0x7c56('0x1b')]=_0x5e621d;if(_0x1f612b['query']['includeAll']){_0x3c5aaf[_0x7c56('0x41')]=[{'all':!![]}];}return db[_0x7c56('0x42')][_0x7c56('0x43')](_0x3c5aaf);})[_0x7c56('0x23')](function(_0x3234d9){_0x4a6475[_0x7c56('0x44')]=_0x3234d9;return _0x4a6475;})[_0x7c56('0x23')](respondWithFilteredResult(_0x54d914,_0x3c5aaf))[_0x7c56('0x45')](handleError(_0x54d914,null));};exports['show']=function(_0x1516f9,_0x41b768){var _0x1416af={'raw':!![],'where':{'id':_0x1516f9[_0x7c56('0x46')]['id']}},_0x4f4eb5={};_0x4f4eb5['model']=_[_0x7c56('0x32')](db[_0x7c56('0x42')]['rawAttributes']);_0x4f4eb5[_0x7c56('0x31')]=_[_0x7c56('0x32')](_0x1516f9['query']);_0x4f4eb5['filters']=_[_0x7c56('0x34')](_0x4f4eb5[_0x7c56('0x2e')],_0x4f4eb5['query']);_0x1416af[_0x7c56('0x36')]=_[_0x7c56('0x34')](_0x4f4eb5[_0x7c56('0x2e')],qs[_0x7c56('0x35')](_0x1516f9[_0x7c56('0x31')][_0x7c56('0x35')]));_0x1416af['attributes']=_0x1416af[_0x7c56('0x36')][_0x7c56('0x47')]?_0x1416af['attributes']:_0x4f4eb5['model'];if(_0x1516f9[_0x7c56('0x31')][_0x7c56('0x48')]){_0x1416af[_0x7c56('0x41')]=[{'all':!![]}];}_0x1416af=_['merge']({},_0x1416af,_0x1516f9[_0x7c56('0x40')]);return db[_0x7c56('0x42')][_0x7c56('0x49')](_0x1416af)['then'](handleEntityNotFound(_0x41b768,null))['then'](respondWithResult(_0x41b768,null))[_0x7c56('0x45')](handleError(_0x41b768,null));};exports[_0x7c56('0x4a')]=function(_0x13d10e,_0x478b93){return db[_0x7c56('0x42')][_0x7c56('0x4a')](_0x13d10e[_0x7c56('0x4b')],{})[_0x7c56('0x23')](function(_0x5d5f06){var _0x212e8c=_0x13d10e[_0x7c56('0x4c')][_0x7c56('0x4d')]({'plain':!![]});if(!_0x212e8c)throw new Error(_0x7c56('0x4e'));if(_0x212e8c[_0x7c56('0x4f')]===_0x7c56('0x4c')){var _0x1b5635=_0x5d5f06[_0x7c56('0x4d')]({'plain':!![]});var _0x169ec0=_0x7c56('0x25');return db[_0x7c56('0x50')]['find']({'where':{'name':_0x169ec0,'userProfileId':_0x212e8c[_0x7c56('0x51')]},'raw':!![]})['then'](function(_0x14c0f6){if(_0x14c0f6&&_0x14c0f6[_0x7c56('0x52')]===0x0){return db[_0x7c56('0x26')][_0x7c56('0x4a')]({'name':_0x1b5635['name'],'resourceId':_0x1b5635['id'],'type':_0x14c0f6['name'],'sectionId':_0x14c0f6['id']},{})[_0x7c56('0x23')](function(){return _0x5d5f06;});}else{return _0x5d5f06;}})['catch'](function(_0x3b8d84){logger['error'](_0x7c56('0x53'),_0x3b8d84);throw _0x3b8d84;});}return _0x5d5f06;})[_0x7c56('0x23')](respondWithResult(_0x478b93,0xc9))[_0x7c56('0x45')](handleError(_0x478b93,null));};exports[_0x7c56('0x22')]=function(_0x4f27a6,_0x558a12){if(_0x4f27a6[_0x7c56('0x4b')]['id']){delete _0x4f27a6[_0x7c56('0x4b')]['id'];}return db[_0x7c56('0x42')][_0x7c56('0x49')]({'where':{'id':_0x4f27a6[_0x7c56('0x46')]['id']}})[_0x7c56('0x23')](handleEntityNotFound(_0x558a12,null))[_0x7c56('0x23')](saveUpdates(_0x4f27a6[_0x7c56('0x4b')],null))[_0x7c56('0x23')](respondWithResult(_0x558a12,null))[_0x7c56('0x45')](handleError(_0x558a12,null));};exports[_0x7c56('0x24')]=function(_0x21b74b,_0x5950ab){return db['SquareOdbc'][_0x7c56('0x49')]({'where':{'id':_0x21b74b['params']['id']}})['then'](handleEntityNotFound(_0x5950ab,null))['then'](removeEntity(_0x5950ab,null))[_0x7c56('0x45')](handleError(_0x5950ab,null));};exports['test']=function(_0x3e0078,_0x3382a6,_0x36476c){var _0x229932;return db[_0x7c56('0x42')][_0x7c56('0x49')]({'where':{'id':_0x3e0078[_0x7c56('0x46')]['id']},'attributes':['id',_0x7c56('0x54')]})[_0x7c56('0x23')](handleEntityNotFound(_0x3382a6,null))['then'](function(_0x13bc98){if(_0x13bc98){var _0x3028de=require(_0x7c56('0x55'))();_0x3028de[_0x7c56('0x56')](_0x13bc98[_0x7c56('0x54')]);_0x3028de[_0x7c56('0x57')]();return _0x13bc98;}})['then'](respondWithResult(_0x3382a6,null))['catch'](handleError(_0x3382a6,null));};
\ No newline at end of file
+var _0x4686=['fs-extra','squel','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','json','offset','undefined','limit','count','Content-Range','apply','reject','save','then','destroy','end','name','send','index','map','SquareOdbc','rawAttributes','fieldName','type','key','model','query','intersection','fields','attributes','length','hasOwnProperty','nolimit','order','sort','where','pick','filter','merge','includeAll','include','findAll','rows','catch','show','keys','filters','find','create','user','get','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','UserProfileSection','userProfileId','UserProfileResource','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','update','body','params','test','dsn','odbc','openSync','closeSync','eml-format','rimraf','request-promise','moment','bluebird','path','sox','to-csv'];(function(_0x1d31dc,_0x5ce700){var _0x579252=function(_0x85f3ce){while(--_0x85f3ce){_0x1d31dc['push'](_0x1d31dc['shift']());}};_0x579252(++_0x5ce700);}(_0x4686,0x1ab));var _0x6468=function(_0x541ec1,_0x5d3533){_0x541ec1=_0x541ec1-0x0;var _0xf95150=_0x4686[_0x541ec1];return _0xf95150;};'use strict';var emlformat=require(_0x6468('0x0'));var rimraf=require(_0x6468('0x1'));var zipdir=require('zip-dir');var jsonpatch=require('fast-json-patch');var rp=require(_0x6468('0x2'));var moment=require(_0x6468('0x3'));var BPromise=require(_0x6468('0x4'));var Mustache=require('mustache');var util=require('util');var path=require(_0x6468('0x5'));var sox=require(_0x6468('0x6'));var csv=require(_0x6468('0x7'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x6468('0x8'));var _=require('lodash');var squel=require(_0x6468('0x9'));var crypto=require(_0x6468('0xa'));var jsforce=require(_0x6468('0xb'));var deskjs=require(_0x6468('0xc'));var toCsv=require(_0x6468('0x7'));var querystring=require(_0x6468('0xd'));var Papa=require(_0x6468('0xe'));var Redis=require(_0x6468('0xf'));var authService=require('../../components/auth/service');var qs=require(_0x6468('0x10'));var as=require(_0x6468('0x11'));var hardwareService=require('../../config/license/hardware');var logger=require(_0x6468('0x12'))(_0x6468('0x13'));var utils=require(_0x6468('0x14'));var config=require(_0x6468('0x15'));var licenseUtil=require(_0x6468('0x16'));var db=require(_0x6468('0x17'))['db'];function respondWithStatusCode(_0x12790c,_0x1e6522){_0x1e6522=_0x1e6522||0xcc;return function(_0x2b20a2){if(_0x2b20a2){return _0x12790c[_0x6468('0x18')](_0x1e6522);}return _0x12790c[_0x6468('0x19')](_0x1e6522)['end']();};}function respondWithResult(_0x2923d3,_0x1ecb2b){_0x1ecb2b=_0x1ecb2b||0xc8;return function(_0x3a4ea7){if(_0x3a4ea7){return _0x2923d3[_0x6468('0x19')](_0x1ecb2b)[_0x6468('0x1a')](_0x3a4ea7);}};}function respondWithFilteredResult(_0xb2a88a,_0x584f04){return function(_0x102575){if(_0x102575){var _0x166cea=typeof _0x584f04[_0x6468('0x1b')]===_0x6468('0x1c')&&typeof _0x584f04[_0x6468('0x1d')]===_0x6468('0x1c');var _0x1364f8=_0x102575[_0x6468('0x1e')];var _0x59b735=_0x166cea?0x0:_0x584f04[_0x6468('0x1b')];var _0x3c20d7=_0x166cea?_0x102575[_0x6468('0x1e')]:_0x584f04[_0x6468('0x1b')]+_0x584f04[_0x6468('0x1d')];var _0x1924a6;if(_0x3c20d7>=_0x1364f8){_0x3c20d7=_0x1364f8;_0x1924a6=0xc8;}else{_0x1924a6=0xce;}_0xb2a88a[_0x6468('0x19')](_0x1924a6);return _0xb2a88a['set'](_0x6468('0x1f'),_0x59b735+'-'+_0x3c20d7+'/'+_0x1364f8)[_0x6468('0x1a')](_0x102575);}return null;};}function patchUpdates(_0x3380a9){return function(_0x4e30c2){try{jsonpatch[_0x6468('0x20')](_0x4e30c2,_0x3380a9,!![]);}catch(_0x4875fd){return BPromise[_0x6468('0x21')](_0x4875fd);}return _0x4e30c2[_0x6468('0x22')]();};}function saveUpdates(_0x42dd73,_0x1df4fc){return function(_0x2a1453){if(_0x2a1453){return _0x2a1453['update'](_0x42dd73)[_0x6468('0x23')](function(_0x3b454c){return _0x3b454c;});}return null;};}function removeEntity(_0x9e06dd,_0x541a5c){return function(_0x366c5a){if(_0x366c5a){return _0x366c5a[_0x6468('0x24')]()[_0x6468('0x23')](function(){var _0x461e2b=_0x366c5a['get']({'plain':!![]});var _0x24041d='ODBC';return db['UserProfileResource'][_0x6468('0x24')]({'where':{'type':_0x24041d,'resourceId':_0x461e2b['id']}})[_0x6468('0x23')](function(){return _0x366c5a;});})[_0x6468('0x23')](function(){_0x9e06dd[_0x6468('0x19')](0xcc)[_0x6468('0x25')]();});}};}function handleEntityNotFound(_0x5dd663,_0x265e48){return function(_0x3bfde0){if(!_0x3bfde0){_0x5dd663[_0x6468('0x18')](0x194);}return _0x3bfde0;};}function handleError(_0x2653a5,_0x4a0fa8){_0x4a0fa8=_0x4a0fa8||0x1f4;return function(_0x11926c){logger['error'](_0x11926c['stack']);if(_0x11926c[_0x6468('0x26')]){delete _0x11926c[_0x6468('0x26')];}_0x2653a5[_0x6468('0x19')](_0x4a0fa8)[_0x6468('0x27')](_0x11926c);};}exports[_0x6468('0x28')]=function(_0x5c1aea,_0x4bf886){var _0x4d70a5={},_0x5d1c5e={},_0x276578={'count':0x0,'rows':[]};var _0x35dace=_[_0x6468('0x29')](db[_0x6468('0x2a')][_0x6468('0x2b')],function(_0x1c576c){return{'name':_0x1c576c[_0x6468('0x2c')],'type':_0x1c576c[_0x6468('0x2d')][_0x6468('0x2e')]};});_0x5d1c5e[_0x6468('0x2f')]=_['map'](_0x35dace,_0x6468('0x26'));_0x5d1c5e[_0x6468('0x30')]=_['keys'](_0x5c1aea[_0x6468('0x30')]);_0x5d1c5e['filters']=_[_0x6468('0x31')](_0x5d1c5e[_0x6468('0x2f')],_0x5d1c5e[_0x6468('0x30')]);_0x4d70a5['attributes']=_[_0x6468('0x31')](_0x5d1c5e[_0x6468('0x2f')],qs['fields'](_0x5c1aea['query'][_0x6468('0x32')]));_0x4d70a5[_0x6468('0x33')]=_0x4d70a5[_0x6468('0x33')][_0x6468('0x34')]?_0x4d70a5[_0x6468('0x33')]:_0x5d1c5e[_0x6468('0x2f')];if(!_0x5c1aea[_0x6468('0x30')][_0x6468('0x35')](_0x6468('0x36'))){_0x4d70a5[_0x6468('0x1d')]=qs[_0x6468('0x1d')](_0x5c1aea['query'][_0x6468('0x1d')]);_0x4d70a5[_0x6468('0x1b')]=qs['offset'](_0x5c1aea[_0x6468('0x30')][_0x6468('0x1b')]);}_0x4d70a5[_0x6468('0x37')]=qs['sort'](_0x5c1aea['query'][_0x6468('0x38')]);_0x4d70a5[_0x6468('0x39')]=qs['filters'](_[_0x6468('0x3a')](_0x5c1aea[_0x6468('0x30')],_0x5d1c5e['filters']),_0x35dace);if(_0x5c1aea[_0x6468('0x30')][_0x6468('0x3b')]){_0x4d70a5['where']=_[_0x6468('0x3c')](_0x4d70a5['where'],{'$or':_[_0x6468('0x29')](_0x35dace,function(_0x3d3b9e){if(_0x3d3b9e['type']!=='VIRTUAL'){var _0x5deee2={};_0x5deee2[_0x3d3b9e[_0x6468('0x26')]]={'$like':'%'+_0x5c1aea['query'][_0x6468('0x3b')]+'%'};return _0x5deee2;}})});}_0x4d70a5=_[_0x6468('0x3c')]({},_0x4d70a5,_0x5c1aea['options']);var _0x272aec={'where':_0x4d70a5[_0x6468('0x39')]};return db['SquareOdbc']['count'](_0x272aec)[_0x6468('0x23')](function(_0x28c0e1){_0x276578['count']=_0x28c0e1;if(_0x5c1aea['query'][_0x6468('0x3d')]){_0x4d70a5[_0x6468('0x3e')]=[{'all':!![]}];}return db[_0x6468('0x2a')][_0x6468('0x3f')](_0x4d70a5);})['then'](function(_0x3edc62){_0x276578[_0x6468('0x40')]=_0x3edc62;return _0x276578;})[_0x6468('0x23')](respondWithFilteredResult(_0x4bf886,_0x4d70a5))[_0x6468('0x41')](handleError(_0x4bf886,null));};exports[_0x6468('0x42')]=function(_0x4419de,_0x2e588d){var _0x540edb={'raw':!![],'where':{'id':_0x4419de['params']['id']}},_0x58b0c7={};_0x58b0c7[_0x6468('0x2f')]=_[_0x6468('0x43')](db[_0x6468('0x2a')][_0x6468('0x2b')]);_0x58b0c7[_0x6468('0x30')]=_[_0x6468('0x43')](_0x4419de[_0x6468('0x30')]);_0x58b0c7[_0x6468('0x44')]=_[_0x6468('0x31')](_0x58b0c7[_0x6468('0x2f')],_0x58b0c7[_0x6468('0x30')]);_0x540edb[_0x6468('0x33')]=_['intersection'](_0x58b0c7['model'],qs[_0x6468('0x32')](_0x4419de['query'][_0x6468('0x32')]));_0x540edb[_0x6468('0x33')]=_0x540edb[_0x6468('0x33')][_0x6468('0x34')]?_0x540edb['attributes']:_0x58b0c7[_0x6468('0x2f')];if(_0x4419de[_0x6468('0x30')]['includeAll']){_0x540edb['include']=[{'all':!![]}];}_0x540edb=_[_0x6468('0x3c')]({},_0x540edb,_0x4419de['options']);return db[_0x6468('0x2a')][_0x6468('0x45')](_0x540edb)['then'](handleEntityNotFound(_0x2e588d,null))[_0x6468('0x23')](respondWithResult(_0x2e588d,null))[_0x6468('0x41')](handleError(_0x2e588d,null));};exports['create']=function(_0x193a98,_0x29f47a){return db[_0x6468('0x2a')][_0x6468('0x46')](_0x193a98['body'],{})[_0x6468('0x23')](function(_0x1d85c1){var _0x2f86d2=_0x193a98[_0x6468('0x47')][_0x6468('0x48')]({'plain':!![]});if(!_0x2f86d2)throw new Error(_0x6468('0x49'));if(_0x2f86d2[_0x6468('0x4a')]===_0x6468('0x47')){var _0x350f0b=_0x1d85c1[_0x6468('0x48')]({'plain':!![]});var _0x5ddf9c='ODBC';return db[_0x6468('0x4b')][_0x6468('0x45')]({'where':{'name':_0x5ddf9c,'userProfileId':_0x2f86d2[_0x6468('0x4c')]},'raw':!![]})[_0x6468('0x23')](function(_0x37ab2b){if(_0x37ab2b&&_0x37ab2b['autoAssociation']===0x0){return db[_0x6468('0x4d')][_0x6468('0x46')]({'name':_0x350f0b[_0x6468('0x26')],'resourceId':_0x350f0b['id'],'type':_0x37ab2b[_0x6468('0x26')],'sectionId':_0x37ab2b['id']},{})['then'](function(){return _0x1d85c1;});}else{return _0x1d85c1;}})[_0x6468('0x41')](function(_0x22064d){logger['error'](_0x6468('0x4e'),_0x22064d);throw _0x22064d;});}return _0x1d85c1;})[_0x6468('0x23')](respondWithResult(_0x29f47a,0xc9))[_0x6468('0x41')](handleError(_0x29f47a,null));};exports[_0x6468('0x4f')]=function(_0x129bd9,_0x16fb80){if(_0x129bd9[_0x6468('0x50')]['id']){delete _0x129bd9[_0x6468('0x50')]['id'];}return db[_0x6468('0x2a')][_0x6468('0x45')]({'where':{'id':_0x129bd9[_0x6468('0x51')]['id']}})[_0x6468('0x23')](handleEntityNotFound(_0x16fb80,null))['then'](saveUpdates(_0x129bd9[_0x6468('0x50')],null))[_0x6468('0x23')](respondWithResult(_0x16fb80,null))[_0x6468('0x41')](handleError(_0x16fb80,null));};exports[_0x6468('0x24')]=function(_0x4c4072,_0x197b70){return db[_0x6468('0x2a')][_0x6468('0x45')]({'where':{'id':_0x4c4072['params']['id']}})['then'](handleEntityNotFound(_0x197b70,null))[_0x6468('0x23')](removeEntity(_0x197b70,null))[_0x6468('0x41')](handleError(_0x197b70,null));};exports[_0x6468('0x52')]=function(_0x159c26,_0x3ffd13,_0x34699a){var _0x114277;return db[_0x6468('0x2a')][_0x6468('0x45')]({'where':{'id':_0x159c26['params']['id']},'attributes':['id',_0x6468('0x53')]})[_0x6468('0x23')](handleEntityNotFound(_0x3ffd13,null))[_0x6468('0x23')](function(_0x23a838){if(_0x23a838){var _0x1503de=require(_0x6468('0x54'))();_0x1503de[_0x6468('0x55')](_0x23a838['dsn']);_0x1503de[_0x6468('0x56')]();return _0x23a838;}})[_0x6468('0x23')](respondWithResult(_0x3ffd13,null))[_0x6468('0x41')](handleError(_0x3ffd13,null));};
\ No newline at end of file
index da5f723..ca6c52f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa919=['util','../../config/logger','bluebird','path','rimraf','../../config/environment','./squareOdbc.attributes','exports','define','SquareOdbc'];(function(_0x11005e,_0x20c3d2){var _0x29338f=function(_0x3384e9){while(--_0x3384e9){_0x11005e['push'](_0x11005e['shift']());}};_0x29338f(++_0x20c3d2);}(_0xa919,0x1ae));var _0x9a91=function(_0x20fc86,_0x5e450a){_0x20fc86=_0x20fc86-0x0;var _0x19df9e=_0xa919[_0x20fc86];return _0x19df9e;};'use strict';var _=require('lodash');var util=require(_0x9a91('0x0'));var logger=require(_0x9a91('0x1'))('api');var moment=require('moment');var BPromise=require(_0x9a91('0x2'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x9a91('0x3'));var rimraf=require(_0x9a91('0x4'));var config=require(_0x9a91('0x5'));var attributes=require(_0x9a91('0x6'));module[_0x9a91('0x7')]=function(_0x45de70,_0x403fcd){return _0x45de70[_0x9a91('0x8')](_0x9a91('0x9'),attributes,{'tableName':'square_odbc','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xf129=['../../config/environment','./squareOdbc.attributes','exports','define','SquareOdbc','square_odbc','../../config/logger','api','moment','request-promise','path','rimraf'];(function(_0x396284,_0x214988){var _0x36acf3=function(_0x391d0e){while(--_0x391d0e){_0x396284['push'](_0x396284['shift']());}};_0x36acf3(++_0x214988);}(_0xf129,0x156));var _0x9f12=function(_0x46fa97,_0x5daeed){_0x46fa97=_0x46fa97-0x0;var _0x1f89eb=_0xf129[_0x46fa97];return _0x1f89eb;};'use strict';var _=require('lodash');var util=require('util');var logger=require(_0x9f12('0x0'))(_0x9f12('0x1'));var moment=require(_0x9f12('0x2'));var BPromise=require('bluebird');var rp=require(_0x9f12('0x3'));var fs=require('fs');var path=require(_0x9f12('0x4'));var rimraf=require(_0x9f12('0x5'));var config=require(_0x9f12('0x6'));var attributes=require(_0x9f12('0x7'));module[_0x9f12('0x8')]=function(_0x1331ee,_0x42630c){return _0x1331ee[_0x9f12('0x9')](_0x9f12('0xa'),attributes,{'tableName':_0x9f12('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index feff33b..63263b5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc41b=['ioredis','../../config/utils','../../config/logger','../../config/environment','client','http','then','info','SquareOdbc,\x20%s,\x20%s','request\x20sent','debug','SquareOdbc,\x20%s,\x20%s,\x20%s','error','code','message','catch','ShowSquareOdbc','SquareOdbc','options','raw','where','attributes','include','map','model','stringify','lodash','moment','bluebird','randomstring'];(function(_0x1762b4,_0x33d836){var _0x29beda=function(_0x31c2fa){while(--_0x31c2fa){_0x1762b4['push'](_0x1762b4['shift']());}};_0x29beda(++_0x33d836);}(_0xc41b,0x182));var _0xbc41=function(_0x40a045,_0x516f0e){_0x40a045=_0x40a045-0x0;var _0x1a687c=_0xc41b[_0x40a045];return _0x1a687c;};'use strict';var _=require(_0xbc41('0x0'));var util=require('util');var moment=require(_0xbc41('0x1'));var BPromise=require(_0xbc41('0x2'));var rs=require(_0xbc41('0x3'));var fs=require('fs');var Redis=require(_0xbc41('0x4'));var db=require('../../mysqldb')['db'];var utils=require(_0xbc41('0x5'));var logger=require(_0xbc41('0x6'))('rpc');var config=require(_0xbc41('0x7'));var jayson=require('jayson/promise');var client=jayson[_0xbc41('0x8')][_0xbc41('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x43cc11,_0x1b9ed3,_0x2783ba){return new BPromise(function(_0x276801,_0x8fb3de){return client['request'](_0x43cc11,_0x2783ba)[_0xbc41('0xa')](function(_0x31b94a){logger[_0xbc41('0xb')](_0xbc41('0xc'),_0x1b9ed3,_0xbc41('0xd'));logger[_0xbc41('0xe')](_0xbc41('0xf'),_0x1b9ed3,_0xbc41('0xd'),JSON['stringify'](_0x31b94a));if(_0x31b94a[_0xbc41('0x10')]){if(_0x31b94a['error'][_0xbc41('0x11')]===0x1f4){logger[_0xbc41('0x10')]('SquareOdbc,\x20%s,\x20%s',_0x1b9ed3,_0x31b94a[_0xbc41('0x10')][_0xbc41('0x12')]);return _0x8fb3de(_0x31b94a[_0xbc41('0x10')][_0xbc41('0x12')]);}logger[_0xbc41('0x10')](_0xbc41('0xc'),_0x1b9ed3,_0x31b94a[_0xbc41('0x10')]['message']);return _0x276801(_0x31b94a[_0xbc41('0x10')]['message']);}else{logger['info'](_0xbc41('0xc'),_0x1b9ed3,'request\x20sent');_0x276801(_0x31b94a['result'][_0xbc41('0x12')]);}})[_0xbc41('0x13')](function(_0x45b0bb){logger[_0xbc41('0x10')](_0xbc41('0xc'),_0x1b9ed3,_0x45b0bb);_0x8fb3de(_0x45b0bb);});});}exports[_0xbc41('0x14')]=function(_0x3bc8a3){var _0x4a590e=this;return new Promise(function(_0xefb6c4,_0x55c97c){return db[_0xbc41('0x15')]['find']({'raw':_0x3bc8a3[_0xbc41('0x16')]?_0x3bc8a3[_0xbc41('0x16')][_0xbc41('0x17')]===undefined?!![]:![]:!![],'where':_0x3bc8a3[_0xbc41('0x16')]?_0x3bc8a3[_0xbc41('0x16')][_0xbc41('0x18')]||null:null,'attributes':_0x3bc8a3['options']?_0x3bc8a3[_0xbc41('0x16')][_0xbc41('0x19')]||null:null,'include':_0x3bc8a3[_0xbc41('0x16')]?_0x3bc8a3[_0xbc41('0x16')][_0xbc41('0x1a')]?_[_0xbc41('0x1b')](_0x3bc8a3[_0xbc41('0x16')][_0xbc41('0x1a')],function(_0x226026){return{'model':db[_0x226026[_0xbc41('0x1c')]],'as':_0x226026['as'],'attributes':_0x226026['attributes'],'include':_0x226026['include']?_[_0xbc41('0x1b')](_0x226026[_0xbc41('0x1a')],function(_0x58f0cc){return{'model':db[_0x58f0cc[_0xbc41('0x1c')]],'as':_0x58f0cc['as'],'attributes':_0x58f0cc[_0xbc41('0x19')],'include':_0x58f0cc[_0xbc41('0x1a')]?_[_0xbc41('0x1b')](_0x58f0cc[_0xbc41('0x1a')],function(_0x455128){return{'model':db[_0x455128[_0xbc41('0x1c')]],'as':_0x455128['as'],'attributes':_0x455128[_0xbc41('0x19')]};}):[]};}):[]};}):[]:[]})[_0xbc41('0xa')](function(_0x19933d){logger[_0xbc41('0xb')](_0xbc41('0x14'),_0x3bc8a3);logger['debug'](_0xbc41('0x14'),_0x3bc8a3,JSON[_0xbc41('0x1d')](_0x19933d));_0xefb6c4(_0x19933d);})[_0xbc41('0x13')](function(_0x59f033){logger['error'](_0xbc41('0x14'),_0x59f033[_0xbc41('0x12')],_0x3bc8a3);_0x55c97c(_0x4a590e[_0xbc41('0x10')](0x1f4,_0x59f033['message']));});});};
\ No newline at end of file
+var _0xf20a=['then','info','SquareOdbc,\x20%s,\x20%s','request\x20sent','debug','stringify','error','message','ShowSquareOdbc','SquareOdbc','find','options','raw','where','include','map','model','attributes','catch','lodash','util','moment','ioredis','../../mysqldb','../../config/utils','../../config/logger','../../config/environment','jayson/promise','client'];(function(_0x5ee287,_0x49b6a1){var _0x2a1adf=function(_0x4df52e){while(--_0x4df52e){_0x5ee287['push'](_0x5ee287['shift']());}};_0x2a1adf(++_0x49b6a1);}(_0xf20a,0xc1));var _0xaf20=function(_0x1433c5,_0x54f65d){_0x1433c5=_0x1433c5-0x0;var _0x36281e=_0xf20a[_0x1433c5];return _0x36281e;};'use strict';var _=require(_0xaf20('0x0'));var util=require(_0xaf20('0x1'));var moment=require(_0xaf20('0x2'));var BPromise=require('bluebird');var rs=require('randomstring');var fs=require('fs');var Redis=require(_0xaf20('0x3'));var db=require(_0xaf20('0x4'))['db'];var utils=require(_0xaf20('0x5'));var logger=require(_0xaf20('0x6'))('rpc');var config=require(_0xaf20('0x7'));var jayson=require(_0xaf20('0x8'));var client=jayson[_0xaf20('0x9')]['http']({'port':0x232a});function respondWithRpcPromise(_0x4c24e2,_0x181afa,_0x4bac15){return new BPromise(function(_0x416721,_0x117fa7){return client['request'](_0x4c24e2,_0x4bac15)[_0xaf20('0xa')](function(_0x5726b5){logger[_0xaf20('0xb')](_0xaf20('0xc'),_0x181afa,_0xaf20('0xd'));logger[_0xaf20('0xe')]('SquareOdbc,\x20%s,\x20%s,\x20%s',_0x181afa,_0xaf20('0xd'),JSON[_0xaf20('0xf')](_0x5726b5));if(_0x5726b5[_0xaf20('0x10')]){if(_0x5726b5['error']['code']===0x1f4){logger[_0xaf20('0x10')](_0xaf20('0xc'),_0x181afa,_0x5726b5[_0xaf20('0x10')][_0xaf20('0x11')]);return _0x117fa7(_0x5726b5[_0xaf20('0x10')][_0xaf20('0x11')]);}logger[_0xaf20('0x10')]('SquareOdbc,\x20%s,\x20%s',_0x181afa,_0x5726b5['error'][_0xaf20('0x11')]);return _0x416721(_0x5726b5[_0xaf20('0x10')][_0xaf20('0x11')]);}else{logger['info'](_0xaf20('0xc'),_0x181afa,_0xaf20('0xd'));_0x416721(_0x5726b5['result']['message']);}})['catch'](function(_0x502270){logger[_0xaf20('0x10')](_0xaf20('0xc'),_0x181afa,_0x502270);_0x117fa7(_0x502270);});});}exports[_0xaf20('0x12')]=function(_0x32f543){var _0x587aa4=this;return new Promise(function(_0x125cbf,_0xd75e4c){return db[_0xaf20('0x13')][_0xaf20('0x14')]({'raw':_0x32f543[_0xaf20('0x15')]?_0x32f543[_0xaf20('0x15')][_0xaf20('0x16')]===undefined?!![]:![]:!![],'where':_0x32f543['options']?_0x32f543[_0xaf20('0x15')][_0xaf20('0x17')]||null:null,'attributes':_0x32f543[_0xaf20('0x15')]?_0x32f543[_0xaf20('0x15')]['attributes']||null:null,'include':_0x32f543[_0xaf20('0x15')]?_0x32f543['options'][_0xaf20('0x18')]?_[_0xaf20('0x19')](_0x32f543['options'][_0xaf20('0x18')],function(_0x49dbb0){return{'model':db[_0x49dbb0[_0xaf20('0x1a')]],'as':_0x49dbb0['as'],'attributes':_0x49dbb0[_0xaf20('0x1b')],'include':_0x49dbb0[_0xaf20('0x18')]?_[_0xaf20('0x19')](_0x49dbb0[_0xaf20('0x18')],function(_0x43b7c6){return{'model':db[_0x43b7c6[_0xaf20('0x1a')]],'as':_0x43b7c6['as'],'attributes':_0x43b7c6['attributes'],'include':_0x43b7c6['include']?_[_0xaf20('0x19')](_0x43b7c6['include'],function(_0x1270bf){return{'model':db[_0x1270bf['model']],'as':_0x1270bf['as'],'attributes':_0x1270bf[_0xaf20('0x1b')]};}):[]};}):[]};}):[]:[]})[_0xaf20('0xa')](function(_0x2ef6ec){logger['info'](_0xaf20('0x12'),_0x32f543);logger['debug'](_0xaf20('0x12'),_0x32f543,JSON[_0xaf20('0xf')](_0x2ef6ec));_0x125cbf(_0x2ef6ec);})[_0xaf20('0x1c')](function(_0x3fab06){logger['error'](_0xaf20('0x12'),_0x3fab06['message'],_0x32f543);_0xd75e4c(_0x587aa4['error'](0x1f4,_0x3fab06[_0xaf20('0x11')]));});});};
\ No newline at end of file
index 58520af..8c35d16 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc19a=['getUsers','post','create','addUsers','put','destroy','exports','multer','util','path','connect-timeout','Router','fs-extra','../../components/auth/service','../../config/environment','./squareProject.controller','isAuthenticated','index','/:id','/:id/users'];(function(_0x5ce2e3,_0x3dc503){var _0x3b53ab=function(_0x1efe66){while(--_0x1efe66){_0x5ce2e3['push'](_0x5ce2e3['shift']());}};_0x3b53ab(++_0x3dc503);}(_0xc19a,0x7f));var _0xac19=function(_0x484ac4,_0x7dee03){_0x484ac4=_0x484ac4-0x0;var _0x850b86=_0xc19a[_0x484ac4];return _0x850b86;};'use strict';var multer=require(_0xac19('0x0'));var util=require(_0xac19('0x1'));var path=require(_0xac19('0x2'));var timeout=require(_0xac19('0x3'));var express=require('express');var router=express[_0xac19('0x4')]();var fs_extra=require(_0xac19('0x5'));var auth=require(_0xac19('0x6'));var interaction=require('../../components/interaction/service');var config=require(_0xac19('0x7'));var controller=require(_0xac19('0x8'));router['get']('/',auth[_0xac19('0x9')](),controller[_0xac19('0xa')]);router['get'](_0xac19('0xb'),auth['isAuthenticated'](),controller['show']);router['get'](_0xac19('0xc'),auth[_0xac19('0x9')](),controller[_0xac19('0xd')]);router[_0xac19('0xe')]('/',auth[_0xac19('0x9')](),controller[_0xac19('0xf')]);router[_0xac19('0xe')](_0xac19('0xc'),auth['isAuthenticated'](),controller[_0xac19('0x10')]);router[_0xac19('0x11')](_0xac19('0xb'),auth['isAuthenticated'](),controller['update']);router['delete']('/:id',auth[_0xac19('0x9')](),controller[_0xac19('0x12')]);router['delete']('/:id/users',auth[_0xac19('0x9')](),controller['removeUsers']);module[_0xac19('0x13')]=router;
\ No newline at end of file
+var _0x1c7c=['Router','../../components/auth/service','../../components/interaction/service','../../config/environment','./squareProject.controller','get','isAuthenticated','index','/:id','show','/:id/users','getUsers','post','addUsers','put','update','delete','destroy','removeUsers','exports','multer','util','path','connect-timeout'];(function(_0x2d9c6a,_0x59393d){var _0xf3c918=function(_0x4f3f26){while(--_0x4f3f26){_0x2d9c6a['push'](_0x2d9c6a['shift']());}};_0xf3c918(++_0x59393d);}(_0x1c7c,0x164));var _0xc1c7=function(_0x26574a,_0x306c12){_0x26574a=_0x26574a-0x0;var _0x2bbf32=_0x1c7c[_0x26574a];return _0x2bbf32;};'use strict';var multer=require(_0xc1c7('0x0'));var util=require(_0xc1c7('0x1'));var path=require(_0xc1c7('0x2'));var timeout=require(_0xc1c7('0x3'));var express=require('express');var router=express[_0xc1c7('0x4')]();var fs_extra=require('fs-extra');var auth=require(_0xc1c7('0x5'));var interaction=require(_0xc1c7('0x6'));var config=require(_0xc1c7('0x7'));var controller=require(_0xc1c7('0x8'));router[_0xc1c7('0x9')]('/',auth[_0xc1c7('0xa')](),controller[_0xc1c7('0xb')]);router[_0xc1c7('0x9')](_0xc1c7('0xc'),auth[_0xc1c7('0xa')](),controller[_0xc1c7('0xd')]);router[_0xc1c7('0x9')](_0xc1c7('0xe'),auth[_0xc1c7('0xa')](),controller[_0xc1c7('0xf')]);router[_0xc1c7('0x10')]('/',auth[_0xc1c7('0xa')](),controller['create']);router[_0xc1c7('0x10')](_0xc1c7('0xe'),auth['isAuthenticated'](),controller[_0xc1c7('0x11')]);router[_0xc1c7('0x12')](_0xc1c7('0xc'),auth['isAuthenticated'](),controller[_0xc1c7('0x13')]);router[_0xc1c7('0x14')](_0xc1c7('0xc'),auth[_0xc1c7('0xa')](),controller[_0xc1c7('0x15')]);router[_0xc1c7('0x14')](_0xc1c7('0xe'),auth[_0xc1c7('0xa')](),controller[_0xc1c7('0x16')]);module[_0xc1c7('0x17')]=router;
\ No newline at end of file
index 00dae7d..c7ef5b9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0ce2=['BLOB','getDataValue','preproduction','toString','utf8','long','production','DATE','sequelize','STRING','name','TEXT'];(function(_0x214ea2,_0xa9f0ed){var _0x3359a8=function(_0x2b68ef){while(--_0x2b68ef){_0x214ea2['push'](_0x214ea2['shift']());}};_0x3359a8(++_0xa9f0ed);}(_0x0ce2,0x1ac));var _0x20ce=function(_0x1facfa,_0x1acf7d){_0x1facfa=_0x1facfa-0x0;var _0x9ec701=_0x0ce2[_0x1facfa];return _0x9ec701;};'use strict';var Sequelize=require(_0x20ce('0x0'));module['exports']={'name':{'type':Sequelize[_0x20ce('0x1')],'unique':_0x20ce('0x2'),'allowNull':![]},'description':{'type':Sequelize[_0x20ce('0x1')]},'notes':{'type':Sequelize[_0x20ce('0x3')]},'preproduction':{'type':Sequelize[_0x20ce('0x4')]('long'),'get':function(){if(this[_0x20ce('0x5')](_0x20ce('0x6'))){return this['getDataValue'](_0x20ce('0x6'))[_0x20ce('0x7')](_0x20ce('0x8'));}}},'production':{'type':Sequelize[_0x20ce('0x4')](_0x20ce('0x9')),'get':function(){if(this[_0x20ce('0x5')](_0x20ce('0xa'))){return this[_0x20ce('0x5')](_0x20ce('0xa'))[_0x20ce('0x7')](_0x20ce('0x8'));}}},'savedAt':{'type':Sequelize[_0x20ce('0xb')]},'publishedAt':{'type':Sequelize[_0x20ce('0xb')]}};
\ No newline at end of file
+var _0xf77e=['BLOB','long','getDataValue','preproduction','toString','utf8','production','DATE','sequelize','exports','name','STRING','TEXT'];(function(_0x3756ca,_0x35714b){var _0x1d85aa=function(_0x52d6fc){while(--_0x52d6fc){_0x3756ca['push'](_0x3756ca['shift']());}};_0x1d85aa(++_0x35714b);}(_0xf77e,0x15a));var _0xef77=function(_0x3cf948,_0x48e130){_0x3cf948=_0x3cf948-0x0;var _0x550bca=_0xf77e[_0x3cf948];return _0x550bca;};'use strict';var Sequelize=require(_0xef77('0x0'));module[_0xef77('0x1')]={'name':{'type':Sequelize['STRING'],'unique':_0xef77('0x2'),'allowNull':![]},'description':{'type':Sequelize[_0xef77('0x3')]},'notes':{'type':Sequelize[_0xef77('0x4')]},'preproduction':{'type':Sequelize[_0xef77('0x5')](_0xef77('0x6')),'get':function(){if(this[_0xef77('0x7')](_0xef77('0x8'))){return this[_0xef77('0x7')](_0xef77('0x8'))[_0xef77('0x9')](_0xef77('0xa'));}}},'production':{'type':Sequelize[_0xef77('0x5')](_0xef77('0x6')),'get':function(){if(this['getDataValue'](_0xef77('0xb'))){return this[_0xef77('0x7')](_0xef77('0xb'))[_0xef77('0x9')](_0xef77('0xa'));}}},'savedAt':{'type':Sequelize[_0xef77('0xc')]},'publishedAt':{'type':Sequelize[_0xef77('0xc')]}};
\ No newline at end of file
index ab917d0..6992da2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6302=['attributes','hasOwnProperty','nolimit','order','sort','pick','where','merge','filter','includeAll','include','findAll','rows','catch','params','length','find','create','body','user','get','Unable\x20to\x20retrieve\x20the\x20current\x20user','UserProfileSection','autoAssociation','UserProfileResource','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','addUsers','omit','removeUsers','ids','isArray','emit','userSquareProject:remove','findOne','options','getUsers','eml-format','rimraf','zip-dir','request-promise','moment','bluebird','mustache','util','path','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','querystring','papaparse','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','defaults','redis','socket.io-emitter','./squareProject.socket','register','sendStatus','end','json','offset','undefined','limit','count','status','set','Content-Range','apply','update','then','destroy','error','stack','name','send','index','map','SquareProject','rawAttributes','fieldName','type','key','query','keys','filters','model','intersection','fields'];(function(_0x15d03f,_0x35d58b){var _0x38ff51=function(_0x40afc7){while(--_0x40afc7){_0x15d03f['push'](_0x15d03f['shift']());}};_0x38ff51(++_0x35d58b);}(_0x6302,0x1b0));var _0x2630=function(_0x21f175,_0x47b262){_0x21f175=_0x21f175-0x0;var _0x3bbfed=_0x6302[_0x21f175];return _0x3bbfed;};'use strict';var emlformat=require(_0x2630('0x0'));var rimraf=require(_0x2630('0x1'));var zipdir=require(_0x2630('0x2'));var jsonpatch=require('fast-json-patch');var rp=require(_0x2630('0x3'));var moment=require(_0x2630('0x4'));var BPromise=require(_0x2630('0x5'));var Mustache=require(_0x2630('0x6'));var util=require(_0x2630('0x7'));var path=require(_0x2630('0x8'));var sox=require(_0x2630('0x9'));var csv=require(_0x2630('0xa'));var ejs=require(_0x2630('0xb'));var fs=require('fs');var fs_extra=require(_0x2630('0xc'));var _=require(_0x2630('0xd'));var squel=require(_0x2630('0xe'));var crypto=require(_0x2630('0xf'));var jsforce=require(_0x2630('0x10'));var deskjs=require('desk.js');var toCsv=require(_0x2630('0xa'));var querystring=require(_0x2630('0x11'));var Papa=require(_0x2630('0x12'));var Redis=require(_0x2630('0x13'));var authService=require('../../components/auth/service');var qs=require(_0x2630('0x14'));var as=require(_0x2630('0x15'));var hardwareService=require(_0x2630('0x16'));var logger=require('../../config/logger')('api');var utils=require(_0x2630('0x17'));var config=require(_0x2630('0x18'));var licenseUtil=require(_0x2630('0x19'));var db=require(_0x2630('0x1a'))['db'];config['redis']=_[_0x2630('0x1b')](config[_0x2630('0x1c')],{'host':'localhost','port':0x18eb});var socket=require(_0x2630('0x1d'))(new Redis(config[_0x2630('0x1c')]));require(_0x2630('0x1e'))[_0x2630('0x1f')](socket);function respondWithStatusCode(_0x124874,_0x80a15b){_0x80a15b=_0x80a15b||0xcc;return function(_0x1caeed){if(_0x1caeed){return _0x124874[_0x2630('0x20')](_0x80a15b);}return _0x124874['status'](_0x80a15b)[_0x2630('0x21')]();};}function respondWithResult(_0x12f8ed,_0x266901){_0x266901=_0x266901||0xc8;return function(_0x314bd8){if(_0x314bd8){return _0x12f8ed['status'](_0x266901)[_0x2630('0x22')](_0x314bd8);}};}function respondWithFilteredResult(_0x3b6751,_0x8be84b){return function(_0x5253f1){if(_0x5253f1){var _0x5ed11d=typeof _0x8be84b[_0x2630('0x23')]===_0x2630('0x24')&&typeof _0x8be84b[_0x2630('0x25')]==='undefined';var _0x5c9623=_0x5253f1[_0x2630('0x26')];var _0x5e71bb=_0x5ed11d?0x0:_0x8be84b[_0x2630('0x23')];var _0x46e614=_0x5ed11d?_0x5253f1['count']:_0x8be84b[_0x2630('0x23')]+_0x8be84b[_0x2630('0x25')];var _0x442f25;if(_0x46e614>=_0x5c9623){_0x46e614=_0x5c9623;_0x442f25=0xc8;}else{_0x442f25=0xce;}_0x3b6751[_0x2630('0x27')](_0x442f25);return _0x3b6751[_0x2630('0x28')](_0x2630('0x29'),_0x5e71bb+'-'+_0x46e614+'/'+_0x5c9623)[_0x2630('0x22')](_0x5253f1);}return null;};}function patchUpdates(_0x31fbb7){return function(_0x1339cd){try{jsonpatch[_0x2630('0x2a')](_0x1339cd,_0x31fbb7,!![]);}catch(_0x19421d){return BPromise['reject'](_0x19421d);}return _0x1339cd['save']();};}function saveUpdates(_0x3636d8,_0x1c0af4){return function(_0x5c0837){if(_0x5c0837){return _0x5c0837[_0x2630('0x2b')](_0x3636d8)[_0x2630('0x2c')](function(_0x4dab83){return _0x4dab83;});}return null;};}function removeEntity(_0x1b7e14,_0x38a970){return function(_0x131595){if(_0x131595){return _0x131595[_0x2630('0x2d')]()[_0x2630('0x2c')](function(){var _0x43cae2=_0x131595['get']({'plain':!![]});var _0x1a0aa6='SquareProjects';return db['UserProfileResource'][_0x2630('0x2d')]({'where':{'type':_0x1a0aa6,'resourceId':_0x43cae2['id']}})[_0x2630('0x2c')](function(){return _0x131595;});})[_0x2630('0x2c')](function(){_0x1b7e14['status'](0xcc)[_0x2630('0x21')]();});}};}function handleEntityNotFound(_0x3a3bc5,_0x265df1){return function(_0x1e9041){if(!_0x1e9041){_0x3a3bc5[_0x2630('0x20')](0x194);}return _0x1e9041;};}function handleError(_0x481f76,_0x13f1f4){_0x13f1f4=_0x13f1f4||0x1f4;return function(_0x5c3359){logger[_0x2630('0x2e')](_0x5c3359[_0x2630('0x2f')]);if(_0x5c3359[_0x2630('0x30')]){delete _0x5c3359[_0x2630('0x30')];}_0x481f76[_0x2630('0x27')](_0x13f1f4)[_0x2630('0x31')](_0x5c3359);};}exports[_0x2630('0x32')]=function(_0x3c5f66,_0x237d25){var _0x47ed31={},_0x329f5f={},_0x5dd7d8={'count':0x0,'rows':[]};var _0x3bba2b=_[_0x2630('0x33')](db[_0x2630('0x34')][_0x2630('0x35')],function(_0x2a11b1){return{'name':_0x2a11b1[_0x2630('0x36')],'type':_0x2a11b1[_0x2630('0x37')][_0x2630('0x38')]};});_0x329f5f['model']=_['map'](_0x3bba2b,'name');_0x329f5f[_0x2630('0x39')]=_[_0x2630('0x3a')](_0x3c5f66[_0x2630('0x39')]);_0x329f5f[_0x2630('0x3b')]=_['intersection'](_0x329f5f[_0x2630('0x3c')],_0x329f5f[_0x2630('0x39')]);_0x47ed31['attributes']=_[_0x2630('0x3d')](_0x329f5f[_0x2630('0x3c')],qs['fields'](_0x3c5f66[_0x2630('0x39')][_0x2630('0x3e')]));_0x47ed31[_0x2630('0x3f')]=_0x47ed31[_0x2630('0x3f')]['length']?_0x47ed31[_0x2630('0x3f')]:_0x329f5f['model'];if(!_0x3c5f66[_0x2630('0x39')][_0x2630('0x40')](_0x2630('0x41'))){_0x47ed31[_0x2630('0x25')]=qs[_0x2630('0x25')](_0x3c5f66['query'][_0x2630('0x25')]);_0x47ed31[_0x2630('0x23')]=qs[_0x2630('0x23')](_0x3c5f66[_0x2630('0x39')][_0x2630('0x23')]);}_0x47ed31[_0x2630('0x42')]=qs[_0x2630('0x43')](_0x3c5f66[_0x2630('0x39')][_0x2630('0x43')]);_0x47ed31['where']=qs['filters'](_[_0x2630('0x44')](_0x3c5f66[_0x2630('0x39')],_0x329f5f['filters']),_0x3bba2b);if(_0x3c5f66[_0x2630('0x39')]['filter']){_0x47ed31[_0x2630('0x45')]=_[_0x2630('0x46')](_0x47ed31['where'],{'$or':_[_0x2630('0x33')](_0x3bba2b,function(_0x2e646c){if(_0x2e646c[_0x2630('0x37')]!=='VIRTUAL'){var _0x209f6c={};_0x209f6c[_0x2e646c['name']]={'$like':'%'+_0x3c5f66['query'][_0x2630('0x47')]+'%'};return _0x209f6c;}})});}_0x47ed31=_['merge']({},_0x47ed31,_0x3c5f66['options']);var _0x4ba6b7={'where':_0x47ed31['where']};return db[_0x2630('0x34')][_0x2630('0x26')](_0x4ba6b7)[_0x2630('0x2c')](function(_0x513d5f){_0x5dd7d8[_0x2630('0x26')]=_0x513d5f;if(_0x3c5f66[_0x2630('0x39')][_0x2630('0x48')]){_0x47ed31[_0x2630('0x49')]=[{'all':!![]}];}return db[_0x2630('0x34')][_0x2630('0x4a')](_0x47ed31);})[_0x2630('0x2c')](function(_0x25ef6e){_0x5dd7d8[_0x2630('0x4b')]=_0x25ef6e;return _0x5dd7d8;})[_0x2630('0x2c')](respondWithFilteredResult(_0x237d25,_0x47ed31))[_0x2630('0x4c')](handleError(_0x237d25,null));};exports['show']=function(_0x2a2fc7,_0x5cbe59){var _0x4aac95={'raw':![],'where':{'id':_0x2a2fc7[_0x2630('0x4d')]['id']}},_0x295411={};_0x295411[_0x2630('0x3c')]=_['keys'](db[_0x2630('0x34')][_0x2630('0x35')]);_0x295411[_0x2630('0x39')]=_['keys'](_0x2a2fc7[_0x2630('0x39')]);_0x295411[_0x2630('0x3b')]=_['intersection'](_0x295411['model'],_0x295411[_0x2630('0x39')]);_0x4aac95[_0x2630('0x3f')]=_[_0x2630('0x3d')](_0x295411['model'],qs[_0x2630('0x3e')](_0x2a2fc7[_0x2630('0x39')][_0x2630('0x3e')]));_0x4aac95['attributes']=_0x4aac95[_0x2630('0x3f')][_0x2630('0x4e')]?_0x4aac95[_0x2630('0x3f')]:_0x295411[_0x2630('0x3c')];if(_0x2a2fc7[_0x2630('0x39')][_0x2630('0x48')]){_0x4aac95[_0x2630('0x49')]=[{'all':!![]}];}_0x4aac95=_[_0x2630('0x46')]({},_0x4aac95,_0x2a2fc7['options']);return db[_0x2630('0x34')][_0x2630('0x4f')](_0x4aac95)[_0x2630('0x2c')](handleEntityNotFound(_0x5cbe59,null))['then'](respondWithResult(_0x5cbe59,null))[_0x2630('0x4c')](handleError(_0x5cbe59,null));};exports['create']=function(_0x7a86e0,_0x32d09){return db['SquareProject'][_0x2630('0x50')](_0x7a86e0[_0x2630('0x51')],{})[_0x2630('0x2c')](function(_0x384e4d){var _0x249b2f=_0x7a86e0[_0x2630('0x52')][_0x2630('0x53')]({'plain':!![]});if(!_0x249b2f)throw new Error(_0x2630('0x54'));if(_0x249b2f['role']===_0x2630('0x52')){var _0x44fff1=_0x384e4d[_0x2630('0x53')]({'plain':!![]});var _0x5c7bb6='SquareProjects';return db[_0x2630('0x55')]['find']({'where':{'name':_0x5c7bb6,'userProfileId':_0x249b2f['userProfileId']},'raw':!![]})[_0x2630('0x2c')](function(_0x387c06){if(_0x387c06&&_0x387c06[_0x2630('0x56')]===0x0){return db[_0x2630('0x57')][_0x2630('0x50')]({'name':_0x44fff1[_0x2630('0x30')],'resourceId':_0x44fff1['id'],'type':_0x387c06[_0x2630('0x30')],'sectionId':_0x387c06['id']},{})[_0x2630('0x2c')](function(){return _0x384e4d;});}else{return _0x384e4d;}})[_0x2630('0x4c')](function(_0x11b2c5){logger[_0x2630('0x2e')](_0x2630('0x58'),_0x11b2c5);throw _0x11b2c5;});}return _0x384e4d;})[_0x2630('0x2c')](respondWithResult(_0x32d09,0xc9))[_0x2630('0x4c')](handleError(_0x32d09,null));};exports[_0x2630('0x2b')]=function(_0x3e0449,_0x534ca8){if(_0x3e0449[_0x2630('0x51')]['id']){delete _0x3e0449['body']['id'];}return db[_0x2630('0x34')][_0x2630('0x4f')]({'where':{'id':_0x3e0449[_0x2630('0x4d')]['id']}})['then'](handleEntityNotFound(_0x534ca8,null))['then'](saveUpdates(_0x3e0449[_0x2630('0x51')],null))['then'](respondWithResult(_0x534ca8,null))[_0x2630('0x4c')](handleError(_0x534ca8,null));};exports[_0x2630('0x2d')]=function(_0x16baca,_0x2a9808){return db['SquareProject']['find']({'where':{'id':_0x16baca[_0x2630('0x4d')]['id']}})[_0x2630('0x2c')](handleEntityNotFound(_0x2a9808,null))[_0x2630('0x2c')](removeEntity(_0x2a9808,null))['catch'](handleError(_0x2a9808,null));};exports[_0x2630('0x59')]=function(_0x25b747,_0x454c34,_0x11c82f){return db[_0x2630('0x34')]['find']({'where':{'id':_0x25b747[_0x2630('0x4d')]['id']}})['then'](handleEntityNotFound(_0x454c34,null))[_0x2630('0x2c')](function(_0x4a429c){if(_0x4a429c){return _0x4a429c[_0x2630('0x59')](_0x25b747[_0x2630('0x51')]['ids'],_[_0x2630('0x5a')](_0x25b747[_0x2630('0x51')],['ids','id'])||{});}})[_0x2630('0x2c')](respondWithResult(_0x454c34,null))[_0x2630('0x4c')](handleError(_0x454c34,null));};exports[_0x2630('0x5b')]=function(_0x115ba4,_0x124083,_0x49b4c1){return db['SquareProject'][_0x2630('0x4f')]({'where':{'id':_0x115ba4[_0x2630('0x4d')]['id']}})[_0x2630('0x2c')](handleEntityNotFound(_0x124083,null))['then'](function(_0x3bde86){if(_0x3bde86){return _0x3bde86['removeUsers'](_0x115ba4['query'][_0x2630('0x5c')])[_0x2630('0x2c')](function(){if(_[_0x2630('0x5d')](_0x115ba4[_0x2630('0x39')]['ids'])){for(var _0x2efe7c=0x0;_0x2efe7c<_0x115ba4['query']['ids'][_0x2630('0x4e')];_0x2efe7c+=0x1){socket[_0x2630('0x5e')](_0x2630('0x5f'),{'UserId':Number(_0x115ba4[_0x2630('0x39')][_0x2630('0x5c')][_0x2efe7c]),'SquareProjectId':Number(_0x115ba4['params']['id'])});}}else{socket[_0x2630('0x5e')](_0x2630('0x5f'),{'UserId':Number(_0x115ba4[_0x2630('0x39')]['ids']),'SquareProjectId':Number(_0x115ba4[_0x2630('0x4d')]['id'])});}});}})[_0x2630('0x2c')](respondWithStatusCode(_0x124083,null))[_0x2630('0x4c')](handleError(_0x124083,null));};exports['getUsers']=function(_0x3ddba4,_0x51d916,_0x3413d1){var _0x5e3ba1={};var _0x520b29={};var _0x251111;var _0x2411ce;return db[_0x2630('0x34')][_0x2630('0x60')]({'where':{'id':_0x3ddba4[_0x2630('0x4d')]['id']}})['then'](handleEntityNotFound(_0x51d916,null))['then'](function(_0xda050c){if(_0xda050c){_0x251111=_0xda050c;_0x520b29[_0x2630('0x3c')]=_['keys'](db['User'][_0x2630('0x35')]);_0x520b29[_0x2630('0x39')]=_[_0x2630('0x3a')](_0x3ddba4[_0x2630('0x39')]);_0x520b29[_0x2630('0x3b')]=_[_0x2630('0x3d')](_0x520b29['model'],_0x520b29[_0x2630('0x39')]);_0x5e3ba1['attributes']=_[_0x2630('0x3d')](_0x520b29[_0x2630('0x3c')],qs[_0x2630('0x3e')](_0x3ddba4[_0x2630('0x39')][_0x2630('0x3e')]));_0x5e3ba1[_0x2630('0x3f')]=_0x5e3ba1[_0x2630('0x3f')][_0x2630('0x4e')]?_0x5e3ba1[_0x2630('0x3f')]:_0x520b29['model'];_0x5e3ba1[_0x2630('0x42')]=qs[_0x2630('0x43')](_0x3ddba4[_0x2630('0x39')][_0x2630('0x43')]);_0x5e3ba1[_0x2630('0x45')]=qs[_0x2630('0x3b')](_['pick'](_0x3ddba4[_0x2630('0x39')],_0x520b29[_0x2630('0x3b')]));if(_0x3ddba4[_0x2630('0x39')][_0x2630('0x47')]){_0x5e3ba1[_0x2630('0x45')]=_[_0x2630('0x46')](_0x5e3ba1['where'],{'$or':_[_0x2630('0x33')](_0x5e3ba1[_0x2630('0x3f')],function(_0xf8417d){var _0x522df7={};_0x522df7[_0xf8417d]={'$like':'%'+_0x3ddba4['query'][_0x2630('0x47')]+'%'};return _0x522df7;})});}_0x5e3ba1=_[_0x2630('0x46')]({},_0x5e3ba1,_0x3ddba4[_0x2630('0x61')]);return _0x251111['getUsers'](_0x5e3ba1);}})[_0x2630('0x2c')](function(_0x3caae0){if(_0x3caae0){_0x2411ce=_0x3caae0[_0x2630('0x4e')];if(!_0x3ddba4[_0x2630('0x39')][_0x2630('0x40')]('nolimit')){_0x5e3ba1[_0x2630('0x25')]=qs['limit'](_0x3ddba4[_0x2630('0x39')]['limit']);_0x5e3ba1['offset']=qs[_0x2630('0x23')](_0x3ddba4['query'][_0x2630('0x23')]);}return _0x251111[_0x2630('0x62')](_0x5e3ba1);}})[_0x2630('0x2c')](function(_0x5f1874){if(_0x5f1874){return _0x5f1874?{'count':_0x2411ce,'rows':_0x5f1874}:null;}})[_0x2630('0x2c')](respondWithResult(_0x51d916,null))[_0x2630('0x4c')](handleError(_0x51d916,null));};
\ No newline at end of file
+var _0x4a79=['order','sort','where','filter','options','includeAll','include','findAll','params','merge','find','create','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','SquareProjects','userProfileId','autoAssociation','catch','error','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','body','addUsers','omit','ids','removeUsers','isArray','length','emit','userSquareProject:remove','getUsers','findOne','User','nolimit','zip-dir','request-promise','moment','bluebird','util','path','ejs','fs-extra','squel','crypto','desk.js','to-csv','querystring','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/utils','../../config/license/util','redis','defaults','localhost','./squareProject.socket','register','sendStatus','status','end','offset','undefined','limit','count','set','json','apply','reject','save','update','then','get','UserProfileResource','destroy','name','send','SquareProject','rawAttributes','fieldName','type','key','model','map','query','keys','filters','intersection','fields','attributes','hasOwnProperty'];(function(_0x4a6a6b,_0x1909e3){var _0x3335a6=function(_0x1a944e){while(--_0x1a944e){_0x4a6a6b['push'](_0x4a6a6b['shift']());}};_0x3335a6(++_0x1909e3);}(_0x4a79,0x7b));var _0x94a7=function(_0x3b67e4,_0x2a5d46){_0x3b67e4=_0x3b67e4-0x0;var _0x21adcf=_0x4a79[_0x3b67e4];return _0x21adcf;};'use strict';var emlformat=require('eml-format');var rimraf=require('rimraf');var zipdir=require(_0x94a7('0x0'));var jsonpatch=require('fast-json-patch');var rp=require(_0x94a7('0x1'));var moment=require(_0x94a7('0x2'));var BPromise=require(_0x94a7('0x3'));var Mustache=require('mustache');var util=require(_0x94a7('0x4'));var path=require(_0x94a7('0x5'));var sox=require('sox');var csv=require('to-csv');var ejs=require(_0x94a7('0x6'));var fs=require('fs');var fs_extra=require(_0x94a7('0x7'));var _=require('lodash');var squel=require(_0x94a7('0x8'));var crypto=require(_0x94a7('0x9'));var jsforce=require('jsforce');var deskjs=require(_0x94a7('0xa'));var toCsv=require(_0x94a7('0xb'));var querystring=require(_0x94a7('0xc'));var Papa=require('papaparse');var Redis=require(_0x94a7('0xd'));var authService=require(_0x94a7('0xe'));var qs=require('../../components/parsers/qs');var as=require(_0x94a7('0xf'));var hardwareService=require(_0x94a7('0x10'));var logger=require('../../config/logger')('api');var utils=require(_0x94a7('0x11'));var config=require('../../config/environment');var licenseUtil=require(_0x94a7('0x12'));var db=require('../../mysqldb')['db'];config[_0x94a7('0x13')]=_[_0x94a7('0x14')](config['redis'],{'host':_0x94a7('0x15'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config['redis']));require(_0x94a7('0x16'))[_0x94a7('0x17')](socket);function respondWithStatusCode(_0x14f28b,_0x3ef06e){_0x3ef06e=_0x3ef06e||0xcc;return function(_0xf993ef){if(_0xf993ef){return _0x14f28b[_0x94a7('0x18')](_0x3ef06e);}return _0x14f28b[_0x94a7('0x19')](_0x3ef06e)[_0x94a7('0x1a')]();};}function respondWithResult(_0x48d15a,_0x307c95){_0x307c95=_0x307c95||0xc8;return function(_0x82c569){if(_0x82c569){return _0x48d15a[_0x94a7('0x19')](_0x307c95)['json'](_0x82c569);}};}function respondWithFilteredResult(_0x1390a0,_0xd5bcd0){return function(_0x1f472e){if(_0x1f472e){var _0x309b10=typeof _0xd5bcd0[_0x94a7('0x1b')]===_0x94a7('0x1c')&&typeof _0xd5bcd0[_0x94a7('0x1d')]===_0x94a7('0x1c');var _0x2faf2b=_0x1f472e[_0x94a7('0x1e')];var _0x504254=_0x309b10?0x0:_0xd5bcd0[_0x94a7('0x1b')];var _0x43ac14=_0x309b10?_0x1f472e[_0x94a7('0x1e')]:_0xd5bcd0['offset']+_0xd5bcd0[_0x94a7('0x1d')];var _0x4e3ed3;if(_0x43ac14>=_0x2faf2b){_0x43ac14=_0x2faf2b;_0x4e3ed3=0xc8;}else{_0x4e3ed3=0xce;}_0x1390a0['status'](_0x4e3ed3);return _0x1390a0[_0x94a7('0x1f')]('Content-Range',_0x504254+'-'+_0x43ac14+'/'+_0x2faf2b)[_0x94a7('0x20')](_0x1f472e);}return null;};}function patchUpdates(_0x430afa){return function(_0x575aff){try{jsonpatch[_0x94a7('0x21')](_0x575aff,_0x430afa,!![]);}catch(_0x50e823){return BPromise[_0x94a7('0x22')](_0x50e823);}return _0x575aff[_0x94a7('0x23')]();};}function saveUpdates(_0x4fb2b7,_0x57b545){return function(_0x502127){if(_0x502127){return _0x502127[_0x94a7('0x24')](_0x4fb2b7)[_0x94a7('0x25')](function(_0x4f3428){return _0x4f3428;});}return null;};}function removeEntity(_0x326db3,_0x2d0c1b){return function(_0x54db29){if(_0x54db29){return _0x54db29['destroy']()[_0x94a7('0x25')](function(){var _0x32dc90=_0x54db29[_0x94a7('0x26')]({'plain':!![]});var _0x1de354='SquareProjects';return db[_0x94a7('0x27')][_0x94a7('0x28')]({'where':{'type':_0x1de354,'resourceId':_0x32dc90['id']}})[_0x94a7('0x25')](function(){return _0x54db29;});})[_0x94a7('0x25')](function(){_0x326db3[_0x94a7('0x19')](0xcc)[_0x94a7('0x1a')]();});}};}function handleEntityNotFound(_0x434d9d,_0x2ebad0){return function(_0x10e855){if(!_0x10e855){_0x434d9d[_0x94a7('0x18')](0x194);}return _0x10e855;};}function handleError(_0x2b533d,_0x13746b){_0x13746b=_0x13746b||0x1f4;return function(_0x4307db){logger['error'](_0x4307db['stack']);if(_0x4307db[_0x94a7('0x29')]){delete _0x4307db['name'];}_0x2b533d[_0x94a7('0x19')](_0x13746b)[_0x94a7('0x2a')](_0x4307db);};}exports['index']=function(_0x358b4c,_0x1f6983){var _0x43a7ba={},_0x17ead7={},_0x299cfa={'count':0x0,'rows':[]};var _0x3ad00c=_['map'](db[_0x94a7('0x2b')][_0x94a7('0x2c')],function(_0x28c35c){return{'name':_0x28c35c[_0x94a7('0x2d')],'type':_0x28c35c[_0x94a7('0x2e')][_0x94a7('0x2f')]};});_0x17ead7[_0x94a7('0x30')]=_[_0x94a7('0x31')](_0x3ad00c,_0x94a7('0x29'));_0x17ead7[_0x94a7('0x32')]=_[_0x94a7('0x33')](_0x358b4c[_0x94a7('0x32')]);_0x17ead7[_0x94a7('0x34')]=_[_0x94a7('0x35')](_0x17ead7['model'],_0x17ead7[_0x94a7('0x32')]);_0x43a7ba['attributes']=_['intersection'](_0x17ead7[_0x94a7('0x30')],qs[_0x94a7('0x36')](_0x358b4c[_0x94a7('0x32')]['fields']));_0x43a7ba[_0x94a7('0x37')]=_0x43a7ba[_0x94a7('0x37')]['length']?_0x43a7ba[_0x94a7('0x37')]:_0x17ead7[_0x94a7('0x30')];if(!_0x358b4c[_0x94a7('0x32')][_0x94a7('0x38')]('nolimit')){_0x43a7ba['limit']=qs[_0x94a7('0x1d')](_0x358b4c[_0x94a7('0x32')][_0x94a7('0x1d')]);_0x43a7ba[_0x94a7('0x1b')]=qs[_0x94a7('0x1b')](_0x358b4c['query'][_0x94a7('0x1b')]);}_0x43a7ba[_0x94a7('0x39')]=qs['sort'](_0x358b4c[_0x94a7('0x32')][_0x94a7('0x3a')]);_0x43a7ba[_0x94a7('0x3b')]=qs[_0x94a7('0x34')](_['pick'](_0x358b4c['query'],_0x17ead7[_0x94a7('0x34')]),_0x3ad00c);if(_0x358b4c[_0x94a7('0x32')][_0x94a7('0x3c')]){_0x43a7ba[_0x94a7('0x3b')]=_['merge'](_0x43a7ba[_0x94a7('0x3b')],{'$or':_['map'](_0x3ad00c,function(_0x47cccb){if(_0x47cccb[_0x94a7('0x2e')]!=='VIRTUAL'){var _0x4cf579={};_0x4cf579[_0x47cccb[_0x94a7('0x29')]]={'$like':'%'+_0x358b4c[_0x94a7('0x32')]['filter']+'%'};return _0x4cf579;}})});}_0x43a7ba=_['merge']({},_0x43a7ba,_0x358b4c[_0x94a7('0x3d')]);var _0x1ae13e={'where':_0x43a7ba[_0x94a7('0x3b')]};return db[_0x94a7('0x2b')][_0x94a7('0x1e')](_0x1ae13e)[_0x94a7('0x25')](function(_0x41a9eb){_0x299cfa[_0x94a7('0x1e')]=_0x41a9eb;if(_0x358b4c[_0x94a7('0x32')][_0x94a7('0x3e')]){_0x43a7ba[_0x94a7('0x3f')]=[{'all':!![]}];}return db['SquareProject'][_0x94a7('0x40')](_0x43a7ba);})[_0x94a7('0x25')](function(_0x3964f3){_0x299cfa['rows']=_0x3964f3;return _0x299cfa;})[_0x94a7('0x25')](respondWithFilteredResult(_0x1f6983,_0x43a7ba))['catch'](handleError(_0x1f6983,null));};exports['show']=function(_0xd89c4,_0x50f8c0){var _0x444bb3={'raw':![],'where':{'id':_0xd89c4[_0x94a7('0x41')]['id']}},_0x5188a8={};_0x5188a8[_0x94a7('0x30')]=_['keys'](db[_0x94a7('0x2b')][_0x94a7('0x2c')]);_0x5188a8[_0x94a7('0x32')]=_[_0x94a7('0x33')](_0xd89c4[_0x94a7('0x32')]);_0x5188a8[_0x94a7('0x34')]=_[_0x94a7('0x35')](_0x5188a8[_0x94a7('0x30')],_0x5188a8[_0x94a7('0x32')]);_0x444bb3['attributes']=_['intersection'](_0x5188a8[_0x94a7('0x30')],qs['fields'](_0xd89c4['query'][_0x94a7('0x36')]));_0x444bb3[_0x94a7('0x37')]=_0x444bb3['attributes']['length']?_0x444bb3[_0x94a7('0x37')]:_0x5188a8['model'];if(_0xd89c4[_0x94a7('0x32')][_0x94a7('0x3e')]){_0x444bb3[_0x94a7('0x3f')]=[{'all':!![]}];}_0x444bb3=_[_0x94a7('0x42')]({},_0x444bb3,_0xd89c4['options']);return db[_0x94a7('0x2b')][_0x94a7('0x43')](_0x444bb3)[_0x94a7('0x25')](handleEntityNotFound(_0x50f8c0,null))[_0x94a7('0x25')](respondWithResult(_0x50f8c0,null))['catch'](handleError(_0x50f8c0,null));};exports['create']=function(_0xdb0a2e,_0x5089b4){return db[_0x94a7('0x2b')][_0x94a7('0x44')](_0xdb0a2e['body'],{})[_0x94a7('0x25')](function(_0x40ec42){var _0x146731=_0xdb0a2e['user'][_0x94a7('0x26')]({'plain':!![]});if(!_0x146731)throw new Error(_0x94a7('0x45'));if(_0x146731[_0x94a7('0x46')]==='user'){var _0x460ae3=_0x40ec42[_0x94a7('0x26')]({'plain':!![]});var _0x4c4387=_0x94a7('0x47');return db['UserProfileSection']['find']({'where':{'name':_0x4c4387,'userProfileId':_0x146731[_0x94a7('0x48')]},'raw':!![]})[_0x94a7('0x25')](function(_0x286cdf){if(_0x286cdf&&_0x286cdf[_0x94a7('0x49')]===0x0){return db[_0x94a7('0x27')][_0x94a7('0x44')]({'name':_0x460ae3[_0x94a7('0x29')],'resourceId':_0x460ae3['id'],'type':_0x286cdf[_0x94a7('0x29')],'sectionId':_0x286cdf['id']},{})[_0x94a7('0x25')](function(){return _0x40ec42;});}else{return _0x40ec42;}})[_0x94a7('0x4a')](function(_0x200cbf){logger[_0x94a7('0x4b')](_0x94a7('0x4c'),_0x200cbf);throw _0x200cbf;});}return _0x40ec42;})[_0x94a7('0x25')](respondWithResult(_0x5089b4,0xc9))[_0x94a7('0x4a')](handleError(_0x5089b4,null));};exports['update']=function(_0x6b925d,_0x50a723){if(_0x6b925d[_0x94a7('0x4d')]['id']){delete _0x6b925d['body']['id'];}return db[_0x94a7('0x2b')]['find']({'where':{'id':_0x6b925d[_0x94a7('0x41')]['id']}})[_0x94a7('0x25')](handleEntityNotFound(_0x50a723,null))[_0x94a7('0x25')](saveUpdates(_0x6b925d[_0x94a7('0x4d')],null))[_0x94a7('0x25')](respondWithResult(_0x50a723,null))['catch'](handleError(_0x50a723,null));};exports[_0x94a7('0x28')]=function(_0x5d5773,_0x9b1bee){return db[_0x94a7('0x2b')][_0x94a7('0x43')]({'where':{'id':_0x5d5773['params']['id']}})['then'](handleEntityNotFound(_0x9b1bee,null))[_0x94a7('0x25')](removeEntity(_0x9b1bee,null))[_0x94a7('0x4a')](handleError(_0x9b1bee,null));};exports[_0x94a7('0x4e')]=function(_0x5cd831,_0x2ec555,_0x428b12){return db['SquareProject'][_0x94a7('0x43')]({'where':{'id':_0x5cd831[_0x94a7('0x41')]['id']}})[_0x94a7('0x25')](handleEntityNotFound(_0x2ec555,null))['then'](function(_0x1ce989){if(_0x1ce989){return _0x1ce989[_0x94a7('0x4e')](_0x5cd831['body']['ids'],_[_0x94a7('0x4f')](_0x5cd831[_0x94a7('0x4d')],[_0x94a7('0x50'),'id'])||{});}})[_0x94a7('0x25')](respondWithResult(_0x2ec555,null))[_0x94a7('0x4a')](handleError(_0x2ec555,null));};exports[_0x94a7('0x51')]=function(_0x92dfe,_0x527b85,_0x2a2633){return db['SquareProject'][_0x94a7('0x43')]({'where':{'id':_0x92dfe[_0x94a7('0x41')]['id']}})['then'](handleEntityNotFound(_0x527b85,null))[_0x94a7('0x25')](function(_0x3dd82a){if(_0x3dd82a){return _0x3dd82a[_0x94a7('0x51')](_0x92dfe[_0x94a7('0x32')]['ids'])[_0x94a7('0x25')](function(){if(_[_0x94a7('0x52')](_0x92dfe[_0x94a7('0x32')][_0x94a7('0x50')])){for(var _0x1ebdff=0x0;_0x1ebdff<_0x92dfe['query'][_0x94a7('0x50')][_0x94a7('0x53')];_0x1ebdff+=0x1){socket[_0x94a7('0x54')](_0x94a7('0x55'),{'UserId':Number(_0x92dfe[_0x94a7('0x32')][_0x94a7('0x50')][_0x1ebdff]),'SquareProjectId':Number(_0x92dfe[_0x94a7('0x41')]['id'])});}}else{socket['emit'](_0x94a7('0x55'),{'UserId':Number(_0x92dfe[_0x94a7('0x32')]['ids']),'SquareProjectId':Number(_0x92dfe[_0x94a7('0x41')]['id'])});}});}})[_0x94a7('0x25')](respondWithStatusCode(_0x527b85,null))['catch'](handleError(_0x527b85,null));};exports[_0x94a7('0x56')]=function(_0x2325e1,_0x5de6b1,_0x38fc68){var _0x28199a={};var _0x4d9cc6={};var _0x42f8a3;var _0x22bbb7;return db['SquareProject'][_0x94a7('0x57')]({'where':{'id':_0x2325e1['params']['id']}})[_0x94a7('0x25')](handleEntityNotFound(_0x5de6b1,null))[_0x94a7('0x25')](function(_0x41e0ed){if(_0x41e0ed){_0x42f8a3=_0x41e0ed;_0x4d9cc6[_0x94a7('0x30')]=_[_0x94a7('0x33')](db[_0x94a7('0x58')][_0x94a7('0x2c')]);_0x4d9cc6[_0x94a7('0x32')]=_['keys'](_0x2325e1[_0x94a7('0x32')]);_0x4d9cc6[_0x94a7('0x34')]=_[_0x94a7('0x35')](_0x4d9cc6[_0x94a7('0x30')],_0x4d9cc6['query']);_0x28199a[_0x94a7('0x37')]=_['intersection'](_0x4d9cc6[_0x94a7('0x30')],qs['fields'](_0x2325e1[_0x94a7('0x32')][_0x94a7('0x36')]));_0x28199a[_0x94a7('0x37')]=_0x28199a[_0x94a7('0x37')][_0x94a7('0x53')]?_0x28199a['attributes']:_0x4d9cc6[_0x94a7('0x30')];_0x28199a[_0x94a7('0x39')]=qs[_0x94a7('0x3a')](_0x2325e1[_0x94a7('0x32')][_0x94a7('0x3a')]);_0x28199a[_0x94a7('0x3b')]=qs[_0x94a7('0x34')](_['pick'](_0x2325e1[_0x94a7('0x32')],_0x4d9cc6[_0x94a7('0x34')]));if(_0x2325e1['query']['filter']){_0x28199a['where']=_['merge'](_0x28199a[_0x94a7('0x3b')],{'$or':_['map'](_0x28199a['attributes'],function(_0x29a684){var _0x30d44a={};_0x30d44a[_0x29a684]={'$like':'%'+_0x2325e1['query']['filter']+'%'};return _0x30d44a;})});}_0x28199a=_['merge']({},_0x28199a,_0x2325e1[_0x94a7('0x3d')]);return _0x42f8a3[_0x94a7('0x56')](_0x28199a);}})[_0x94a7('0x25')](function(_0x3b113a){if(_0x3b113a){_0x22bbb7=_0x3b113a[_0x94a7('0x53')];if(!_0x2325e1[_0x94a7('0x32')][_0x94a7('0x38')](_0x94a7('0x59'))){_0x28199a['limit']=qs[_0x94a7('0x1d')](_0x2325e1[_0x94a7('0x32')][_0x94a7('0x1d')]);_0x28199a[_0x94a7('0x1b')]=qs[_0x94a7('0x1b')](_0x2325e1['query']['offset']);}return _0x42f8a3[_0x94a7('0x56')](_0x28199a);}})[_0x94a7('0x25')](function(_0xddc7ae){if(_0xddc7ae){return _0xddc7ae?{'count':_0x22bbb7,'rows':_0xddc7ae}:null;}})[_0x94a7('0x25')](respondWithResult(_0x5de6b1,null))[_0x94a7('0x4a')](handleError(_0x5de6b1,null));};
\ No newline at end of file
index 6eec74a..92ee94a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x140f=['update','emit','hasOwnProperty','events','../../mysqldb','SquareProject','save'];(function(_0x50007c,_0x1cbf11){var _0x5c1ec7=function(_0x52d038){while(--_0x52d038){_0x50007c['push'](_0x50007c['shift']());}};_0x5c1ec7(++_0x1cbf11);}(_0x140f,0x1ca));var _0xf140=function(_0x58afd5,_0x534a48){_0x58afd5=_0x58afd5-0x0;var _0x3e503b=_0x140f[_0x58afd5];return _0x3e503b;};'use strict';var EventEmitter=require(_0xf140('0x0'));var SquareProject=require(_0xf140('0x1'))['db'][_0xf140('0x2')];var SquareProjectEvents=new EventEmitter();SquareProjectEvents['setMaxListeners'](0x0);var events={'afterCreate':_0xf140('0x3'),'afterUpdate':_0xf140('0x4'),'afterDestroy':'remove'};function emitEvent(_0x1f6b2e){return function(_0x29437c,_0x3ead0b,_0x43cd7e){SquareProjectEvents[_0xf140('0x5')](_0x1f6b2e+':'+_0x29437c['id'],_0x29437c);SquareProjectEvents[_0xf140('0x5')](_0x1f6b2e,_0x29437c);_0x43cd7e(null);};}for(var e in events){if(events[_0xf140('0x6')](e)){var event=events[e];SquareProject['hook'](e,emitEvent(event));}}module['exports']=SquareProjectEvents;
\ No newline at end of file
+var _0x0b79=['../../mysqldb','SquareProject','setMaxListeners','remove','hasOwnProperty','hook','exports'];(function(_0x458ed7,_0xec5be7){var _0x4944e1=function(_0x1a1327){while(--_0x1a1327){_0x458ed7['push'](_0x458ed7['shift']());}};_0x4944e1(++_0xec5be7);}(_0x0b79,0x118));var _0x90b7=function(_0x11d5b9,_0x2ac4db){_0x11d5b9=_0x11d5b9-0x0;var _0x5c8f8b=_0x0b79[_0x11d5b9];return _0x5c8f8b;};'use strict';var EventEmitter=require('events');var SquareProject=require(_0x90b7('0x0'))['db'][_0x90b7('0x1')];var SquareProjectEvents=new EventEmitter();SquareProjectEvents[_0x90b7('0x2')](0x0);var events={'afterCreate':'save','afterUpdate':'update','afterDestroy':_0x90b7('0x3')};function emitEvent(_0x468747){return function(_0x3a019a,_0x2b8763,_0x2d4f0e){SquareProjectEvents['emit'](_0x468747+':'+_0x3a019a['id'],_0x3a019a);SquareProjectEvents['emit'](_0x468747,_0x3a019a);_0x2d4f0e(null);};}for(var e in events){if(events[_0x90b7('0x4')](e)){var event=events[e];SquareProject[_0x90b7('0x5')](e,emitEvent(event));}}module[_0x90b7('0x6')]=SquareProjectEvents;
\ No newline at end of file
index 1768537..e023ad1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd2b8=['bluebird','request-promise','path','rimraf','../../config/environment','./squareProject.attributes','exports','define','SquareProject','square_projects','changed','preproduction','savedAt','format','YYYY-MM-DD\x20HH:mm:ss','production','publishedAt','lodash','util','../../config/logger','api','moment'];(function(_0x17b5d5,_0x2f045c){var _0x5ad444=function(_0x2996c0){while(--_0x2996c0){_0x17b5d5['push'](_0x17b5d5['shift']());}};_0x5ad444(++_0x2f045c);}(_0xd2b8,0x119));var _0x8d2b=function(_0x1260e4,_0xd0021e){_0x1260e4=_0x1260e4-0x0;var _0xe01d5c=_0xd2b8[_0x1260e4];return _0xe01d5c;};'use strict';var _=require(_0x8d2b('0x0'));var util=require(_0x8d2b('0x1'));var logger=require(_0x8d2b('0x2'))(_0x8d2b('0x3'));var moment=require(_0x8d2b('0x4'));var BPromise=require(_0x8d2b('0x5'));var rp=require(_0x8d2b('0x6'));var fs=require('fs');var path=require(_0x8d2b('0x7'));var rimraf=require(_0x8d2b('0x8'));var config=require(_0x8d2b('0x9'));var attributes=require(_0x8d2b('0xa'));module[_0x8d2b('0xb')]=function(_0x38afdb,_0x224bf9){return _0x38afdb[_0x8d2b('0xc')](_0x8d2b('0xd'),attributes,{'tableName':_0x8d2b('0xe'),'paranoid':![],'indexes':[],'timestamps':!![],'hooks':{'beforeUpdate':function(_0x377ea4,_0x237e81,_0x1d432b){if(_0x377ea4[_0x8d2b('0xf')](_0x8d2b('0x10'))){_0x377ea4[_0x8d2b('0x11')]=moment()[_0x8d2b('0x12')](_0x8d2b('0x13'));}if(_0x377ea4[_0x8d2b('0xf')](_0x8d2b('0x14'))){_0x377ea4[_0x8d2b('0x15')]=moment()['format'](_0x8d2b('0x13'));}_0x1d432b(null,_0x377ea4);}}});};
\ No newline at end of file
+var _0x8d39=['path','rimraf','../../config/environment','exports','SquareProject','square_projects','preproduction','savedAt','format','YYYY-MM-DD\x20HH:mm:ss','changed','production','publishedAt','lodash','util','api','bluebird','request-promise'];(function(_0x154e17,_0x4b647b){var _0x21afa2=function(_0x83712){while(--_0x83712){_0x154e17['push'](_0x154e17['shift']());}};_0x21afa2(++_0x4b647b);}(_0x8d39,0x1bd));var _0x98d3=function(_0x1477ef,_0x54a5d6){_0x1477ef=_0x1477ef-0x0;var _0x164acd=_0x8d39[_0x1477ef];return _0x164acd;};'use strict';var _=require(_0x98d3('0x0'));var util=require(_0x98d3('0x1'));var logger=require('../../config/logger')(_0x98d3('0x2'));var moment=require('moment');var BPromise=require(_0x98d3('0x3'));var rp=require(_0x98d3('0x4'));var fs=require('fs');var path=require(_0x98d3('0x5'));var rimraf=require(_0x98d3('0x6'));var config=require(_0x98d3('0x7'));var attributes=require('./squareProject.attributes');module[_0x98d3('0x8')]=function(_0x5882bf,_0x4c6fc1){return _0x5882bf['define'](_0x98d3('0x9'),attributes,{'tableName':_0x98d3('0xa'),'paranoid':![],'indexes':[],'timestamps':!![],'hooks':{'beforeUpdate':function(_0xd35ab9,_0xa06e53,_0x1b7d24){if(_0xd35ab9['changed'](_0x98d3('0xb'))){_0xd35ab9[_0x98d3('0xc')]=moment()[_0x98d3('0xd')](_0x98d3('0xe'));}if(_0xd35ab9[_0x98d3('0xf')](_0x98d3('0x10'))){_0xd35ab9[_0x98d3('0x11')]=moment()['format'](_0x98d3('0xe'));}_0x1b7d24(null,_0xd35ab9);}}});};
\ No newline at end of file
index ea74f72..3b190ee 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6404=['randomstring','ioredis','../../mysqldb','../../config/logger','rpc','jayson/promise','client','http','defaults','redis','localhost','socket.io-emitter','register','request','then','request\x20sent','debug','SquareProject,\x20%s,\x20%s,\x20%s','stringify','error','code','SquareProject,\x20%s,\x20%s','message','info','result','catch','find','options','raw','where','attributes','include','map','model','ShowSquareProject','util','moment','bluebird'];(function(_0x56ebb5,_0x34c0f1){var _0x455a91=function(_0x41898d){while(--_0x41898d){_0x56ebb5['push'](_0x56ebb5['shift']());}};_0x455a91(++_0x34c0f1);}(_0x6404,0x107));var _0x4640=function(_0x42d85b,_0x38ff9e){_0x42d85b=_0x42d85b-0x0;var _0x70db81=_0x6404[_0x42d85b];return _0x70db81;};'use strict';var _=require('lodash');var util=require(_0x4640('0x0'));var moment=require(_0x4640('0x1'));var BPromise=require(_0x4640('0x2'));var rs=require(_0x4640('0x3'));var fs=require('fs');var Redis=require(_0x4640('0x4'));var db=require(_0x4640('0x5'))['db'];var utils=require('../../config/utils');var logger=require(_0x4640('0x6'))(_0x4640('0x7'));var config=require('../../config/environment');var jayson=require(_0x4640('0x8'));var client=jayson[_0x4640('0x9')][_0x4640('0xa')]({'port':0x232a});config['redis']=_[_0x4640('0xb')](config[_0x4640('0xc')],{'host':_0x4640('0xd'),'port':0x18eb});var socket=require(_0x4640('0xe'))(new Redis(config['redis']));require('./squareProject.socket')[_0x4640('0xf')](socket);function respondWithRpcPromise(_0x4338e9,_0x172cf3,_0xbbc423){return new BPromise(function(_0x218b9f,_0x55c354){return client[_0x4640('0x10')](_0x4338e9,_0xbbc423)[_0x4640('0x11')](function(_0x5f1167){logger['info']('SquareProject,\x20%s,\x20%s',_0x172cf3,_0x4640('0x12'));logger[_0x4640('0x13')](_0x4640('0x14'),_0x172cf3,_0x4640('0x12'),JSON[_0x4640('0x15')](_0x5f1167));if(_0x5f1167[_0x4640('0x16')]){if(_0x5f1167['error'][_0x4640('0x17')]===0x1f4){logger[_0x4640('0x16')](_0x4640('0x18'),_0x172cf3,_0x5f1167[_0x4640('0x16')][_0x4640('0x19')]);return _0x55c354(_0x5f1167['error'][_0x4640('0x19')]);}logger[_0x4640('0x16')](_0x4640('0x18'),_0x172cf3,_0x5f1167['error'][_0x4640('0x19')]);return _0x218b9f(_0x5f1167[_0x4640('0x16')][_0x4640('0x19')]);}else{logger[_0x4640('0x1a')](_0x4640('0x18'),_0x172cf3,'request\x20sent');_0x218b9f(_0x5f1167[_0x4640('0x1b')]['message']);}})[_0x4640('0x1c')](function(_0x4823d2){logger[_0x4640('0x16')](_0x4640('0x18'),_0x172cf3,_0x4823d2);_0x55c354(_0x4823d2);});});}exports['ShowSquareProject']=function(_0x403d02){var _0x91919f=this;return new Promise(function(_0x4835fb,_0x40e50b){return db['SquareProject'][_0x4640('0x1d')]({'raw':_0x403d02[_0x4640('0x1e')]?_0x403d02[_0x4640('0x1e')][_0x4640('0x1f')]===undefined?!![]:![]:!![],'where':_0x403d02[_0x4640('0x1e')]?_0x403d02['options'][_0x4640('0x20')]||null:null,'attributes':_0x403d02[_0x4640('0x1e')]?_0x403d02[_0x4640('0x1e')][_0x4640('0x21')]||null:null,'include':_0x403d02[_0x4640('0x1e')]?_0x403d02['options'][_0x4640('0x22')]?_['map'](_0x403d02['options'][_0x4640('0x22')],function(_0x5a962c){return{'model':db[_0x5a962c['model']],'as':_0x5a962c['as'],'attributes':_0x5a962c['attributes'],'include':_0x5a962c[_0x4640('0x22')]?_[_0x4640('0x23')](_0x5a962c[_0x4640('0x22')],function(_0xd5dba0){return{'model':db[_0xd5dba0[_0x4640('0x24')]],'as':_0xd5dba0['as'],'attributes':_0xd5dba0[_0x4640('0x21')],'include':_0xd5dba0[_0x4640('0x22')]?_[_0x4640('0x23')](_0xd5dba0['include'],function(_0x1282dd){return{'model':db[_0x1282dd['model']],'as':_0x1282dd['as'],'attributes':_0x1282dd[_0x4640('0x21')]};}):[]};}):[]};}):[]:[]})['then'](function(_0x1f13fd){logger[_0x4640('0x1a')]('ShowSquareProject',_0x403d02);logger[_0x4640('0x13')]('ShowSquareProject',_0x403d02,JSON[_0x4640('0x15')](_0x1f13fd));_0x4835fb(_0x1f13fd);})[_0x4640('0x1c')](function(_0x44bbbc){logger['error'](_0x4640('0x25'),_0x44bbbc['message'],_0x403d02);_0x40e50b(_0x91919f[_0x4640('0x16')](0x1f4,_0x44bbbc[_0x4640('0x19')]));});});};
\ No newline at end of file
+var _0xd40c=['randomstring','ioredis','../../mysqldb','../../config/logger','../../config/environment','jayson/promise','client','http','redis','defaults','./squareProject.socket','register','request','then','info','debug','SquareProject,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','code','SquareProject,\x20%s,\x20%s','message','result','catch','SquareProject','options','where','attributes','include','map','model','ShowSquareProject','lodash','util','moment','bluebird'];(function(_0x30546c,_0x513fb7){var _0x57a44b=function(_0x157db9){while(--_0x157db9){_0x30546c['push'](_0x30546c['shift']());}};_0x57a44b(++_0x513fb7);}(_0xd40c,0x16e));var _0xcd40=function(_0x40e7ad,_0x41a5de){_0x40e7ad=_0x40e7ad-0x0;var _0x114654=_0xd40c[_0x40e7ad];return _0x114654;};'use strict';var _=require(_0xcd40('0x0'));var util=require(_0xcd40('0x1'));var moment=require(_0xcd40('0x2'));var BPromise=require(_0xcd40('0x3'));var rs=require(_0xcd40('0x4'));var fs=require('fs');var Redis=require(_0xcd40('0x5'));var db=require(_0xcd40('0x6'))['db'];var utils=require('../../config/utils');var logger=require(_0xcd40('0x7'))('rpc');var config=require(_0xcd40('0x8'));var jayson=require(_0xcd40('0x9'));var client=jayson[_0xcd40('0xa')][_0xcd40('0xb')]({'port':0x232a});config[_0xcd40('0xc')]=_[_0xcd40('0xd')](config[_0xcd40('0xc')],{'host':'localhost','port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config['redis']));require(_0xcd40('0xe'))[_0xcd40('0xf')](socket);function respondWithRpcPromise(_0x451fda,_0x22ad81,_0x4effc3){return new BPromise(function(_0x5cb2fa,_0x4548ed){return client[_0xcd40('0x10')](_0x451fda,_0x4effc3)[_0xcd40('0x11')](function(_0x4b9f0a){logger[_0xcd40('0x12')]('SquareProject,\x20%s,\x20%s',_0x22ad81,'request\x20sent');logger[_0xcd40('0x13')](_0xcd40('0x14'),_0x22ad81,_0xcd40('0x15'),JSON[_0xcd40('0x16')](_0x4b9f0a));if(_0x4b9f0a[_0xcd40('0x17')]){if(_0x4b9f0a[_0xcd40('0x17')][_0xcd40('0x18')]===0x1f4){logger[_0xcd40('0x17')](_0xcd40('0x19'),_0x22ad81,_0x4b9f0a[_0xcd40('0x17')][_0xcd40('0x1a')]);return _0x4548ed(_0x4b9f0a[_0xcd40('0x17')][_0xcd40('0x1a')]);}logger[_0xcd40('0x17')](_0xcd40('0x19'),_0x22ad81,_0x4b9f0a[_0xcd40('0x17')]['message']);return _0x5cb2fa(_0x4b9f0a[_0xcd40('0x17')]['message']);}else{logger[_0xcd40('0x12')]('SquareProject,\x20%s,\x20%s',_0x22ad81,'request\x20sent');_0x5cb2fa(_0x4b9f0a[_0xcd40('0x1b')]['message']);}})[_0xcd40('0x1c')](function(_0xda3e23){logger[_0xcd40('0x17')](_0xcd40('0x19'),_0x22ad81,_0xda3e23);_0x4548ed(_0xda3e23);});});}exports['ShowSquareProject']=function(_0x13a253){var _0x5ac007=this;return new Promise(function(_0x4b022a,_0x5dbeae){return db[_0xcd40('0x1d')]['find']({'raw':_0x13a253[_0xcd40('0x1e')]?_0x13a253[_0xcd40('0x1e')]['raw']===undefined?!![]:![]:!![],'where':_0x13a253[_0xcd40('0x1e')]?_0x13a253[_0xcd40('0x1e')][_0xcd40('0x1f')]||null:null,'attributes':_0x13a253[_0xcd40('0x1e')]?_0x13a253[_0xcd40('0x1e')][_0xcd40('0x20')]||null:null,'include':_0x13a253[_0xcd40('0x1e')]?_0x13a253['options'][_0xcd40('0x21')]?_[_0xcd40('0x22')](_0x13a253[_0xcd40('0x1e')][_0xcd40('0x21')],function(_0x2c782b){return{'model':db[_0x2c782b['model']],'as':_0x2c782b['as'],'attributes':_0x2c782b[_0xcd40('0x20')],'include':_0x2c782b[_0xcd40('0x21')]?_['map'](_0x2c782b[_0xcd40('0x21')],function(_0x1ae810){return{'model':db[_0x1ae810['model']],'as':_0x1ae810['as'],'attributes':_0x1ae810[_0xcd40('0x20')],'include':_0x1ae810[_0xcd40('0x21')]?_['map'](_0x1ae810['include'],function(_0x3678f2){return{'model':db[_0x3678f2[_0xcd40('0x23')]],'as':_0x3678f2['as'],'attributes':_0x3678f2[_0xcd40('0x20')]};}):[]};}):[]};}):[]:[]})['then'](function(_0x76a3d0){logger[_0xcd40('0x12')](_0xcd40('0x24'),_0x13a253);logger[_0xcd40('0x13')]('ShowSquareProject',_0x13a253,JSON['stringify'](_0x76a3d0));_0x4b022a(_0x76a3d0);})[_0xcd40('0x1c')](function(_0x329933){logger[_0xcd40('0x17')](_0xcd40('0x24'),_0x329933[_0xcd40('0x1a')],_0x13a253);_0x5dbeae(_0x5ac007[_0xcd40('0x17')](0x1f4,_0x329933['message']));});});};
\ No newline at end of file
index 4189789..b79849c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7be1=['length','squareProject:','./squareProject.events','update','emit','removeListener','register'];(function(_0x5a01cb,_0x487b03){var _0x508fc9=function(_0x4b7c48){while(--_0x4b7c48){_0x5a01cb['push'](_0x5a01cb['shift']());}};_0x508fc9(++_0x487b03);}(_0x7be1,0x1bb));var _0x17be=function(_0x112147,_0x4e692e){_0x112147=_0x112147-0x0;var _0x3ba744=_0x7be1[_0x112147];return _0x3ba744;};'use strict';var SquareProjectEvents=require(_0x17be('0x0'));var events=['save','remove',_0x17be('0x1')];function createListener(_0x5f0d92,_0x1ea405){return function(_0x3ca01f){_0x1ea405[_0x17be('0x2')](_0x5f0d92,_0x3ca01f);};}function removeListener(_0x477328,_0x42e257){return function(){SquareProjectEvents[_0x17be('0x3')](_0x477328,_0x42e257);};}exports[_0x17be('0x4')]=function(_0x51ea15){for(var _0x4b68e0=0x0,_0xfc43d8=events[_0x17be('0x5')];_0x4b68e0<_0xfc43d8;_0x4b68e0++){var _0x38b991=events[_0x4b68e0];var _0x3ab5ce=createListener(_0x17be('0x6')+_0x38b991,_0x51ea15);SquareProjectEvents['on'](_0x38b991,_0x3ab5ce);}};
\ No newline at end of file
+var _0x4a57=['removeListener','register','squareProject:','./squareProject.events','remove','update','emit'];(function(_0x57b54c,_0x54ce0d){var _0x59cc19=function(_0xa33bc6){while(--_0xa33bc6){_0x57b54c['push'](_0x57b54c['shift']());}};_0x59cc19(++_0x54ce0d);}(_0x4a57,0x6c));var _0x74a5=function(_0x18f16b,_0x16647b){_0x18f16b=_0x18f16b-0x0;var _0x41195c=_0x4a57[_0x18f16b];return _0x41195c;};'use strict';var SquareProjectEvents=require(_0x74a5('0x0'));var events=['save',_0x74a5('0x1'),_0x74a5('0x2')];function createListener(_0x55c66a,_0x25e204){return function(_0x4916ed){_0x25e204[_0x74a5('0x3')](_0x55c66a,_0x4916ed);};}function removeListener(_0x23b876,_0x305597){return function(){SquareProjectEvents[_0x74a5('0x4')](_0x23b876,_0x305597);};}exports[_0x74a5('0x5')]=function(_0x15937f){for(var _0x388cc3=0x0,_0x5838a7=events['length'];_0x388cc3<_0x5838a7;_0x388cc3++){var _0xb4fe29=events[_0x388cc3];var _0x3faa68=createListener(_0x74a5('0x6')+_0xb4fe29,_0x15937f);SquareProjectEvents['on'](_0xb4fe29,_0x3faa68);}};
\ No newline at end of file
index 0399727..465d534 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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(_0x17118f,_0x467712){var _0x56cd46=function(_0x4ce856){while(--_0x4ce856){_0x17118f['push'](_0x17118f['shift']());}};_0x56cd46(++_0x467712);}(_0x1cb9,0x14e));var _0x91cb=function(_0x3a749e,_0x584499){_0x3a749e=_0x3a749e-0x0;var _0x5613fd=_0x1cb9[_0x3a749e];return _0x5613fd;};'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
+var _0xabce=['util','path','connect-timeout','express','../../components/auth/service','../../components/interaction/service','../../config/environment','isAuthenticated','get','show','download','post','create','put','/:id','update','delete','destroy','exports','multer'];(function(_0x42aee5,_0x13bff9){var _0x4e17b3=function(_0x9b1579){while(--_0x9b1579){_0x42aee5['push'](_0x42aee5['shift']());}};_0x4e17b3(++_0x13bff9);}(_0xabce,0x103));var _0xeabc=function(_0x6c993a,_0x5ea3ab){_0x6c993a=_0x6c993a-0x0;var _0x27f547=_0xabce[_0x6c993a];return _0x27f547;};'use strict';var multer=require(_0xeabc('0x0'));var util=require(_0xeabc('0x1'));var path=require(_0xeabc('0x2'));var timeout=require(_0xeabc('0x3'));var express=require(_0xeabc('0x4'));var router=express['Router']();var fs_extra=require('fs-extra');var auth=require(_0xeabc('0x5'));var interaction=require(_0xeabc('0x6'));var config=require(_0xeabc('0x7'));var controller=require('./squareRecording.controller');router['get']('/',auth[_0xeabc('0x8')](),controller['index']);router[_0xeabc('0x9')]('/:id',auth[_0xeabc('0x8')](),controller[_0xeabc('0xa')]);router[_0xeabc('0x9')]('/:id/download',auth[_0xeabc('0x8')](),controller[_0xeabc('0xb')]);router[_0xeabc('0xc')]('/',auth[_0xeabc('0x8')](),controller[_0xeabc('0xd')]);router[_0xeabc('0xe')](_0xeabc('0xf'),auth[_0xeabc('0x8')](),controller[_0xeabc('0x10')]);router[_0xeabc('0x11')](_0xeabc('0xf'),auth[_0xeabc('0x8')](),controller[_0xeabc('0x12')]);module[_0xeabc('0x13')]=router;
\ No newline at end of file
index 374997d..842c8d0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb138=['getDataValue','substring','lastIndexOf','sequelize','exports','STRING'];(function(_0x49ffe3,_0x514a25){var _0xb8bbfb=function(_0x2e0483){while(--_0x2e0483){_0x49ffe3['push'](_0x49ffe3['shift']());}};_0xb8bbfb(++_0x514a25);}(_0xb138,0x1dd));var _0x8b13=function(_0x8ff19e,_0x18a16a){_0x8ff19e=_0x8ff19e-0x0;var _0x5e94cd=_0xb138[_0x8ff19e];return _0x5e94cd;};'use strict';var Sequelize=require(_0x8b13('0x0'));module[_0x8b13('0x1')]={'uniqueid':{'type':Sequelize[_0x8b13('0x2')]},'callerid':{'type':Sequelize[_0x8b13('0x2')]},'calleridname':{'type':Sequelize[_0x8b13('0x2')]},'context':{'type':Sequelize[_0x8b13('0x2')]},'extension':{'type':Sequelize[_0x8b13('0x2')]},'priority':{'type':Sequelize['STRING']},'accountcode':{'type':Sequelize[_0x8b13('0x2')]},'dnid':{'type':Sequelize[_0x8b13('0x2')]},'projectName':{'type':Sequelize[_0x8b13('0x2')]},'saveName':{'type':Sequelize['STRING']},'filename':{'type':Sequelize[_0x8b13('0x2')]},'savePath':{'type':Sequelize[_0x8b13('0x2')]},'format':{'type':Sequelize['VIRTUAL'],'get':function(){var _0x3fdf4d='';var _0x33d1a7=this[_0x8b13('0x3')]('savePath');if(_0x33d1a7){_0x3fdf4d=_0x33d1a7[_0x8b13('0x4')](_0x33d1a7[_0x8b13('0x5')]('.'));}return _0x3fdf4d;}}};
\ No newline at end of file
+var _0xb138=['getDataValue','substring','lastIndexOf','sequelize','exports','STRING'];(function(_0x4643b0,_0x5be9b1){var _0x57ddc6=function(_0x1b3782){while(--_0x1b3782){_0x4643b0['push'](_0x4643b0['shift']());}};_0x57ddc6(++_0x5be9b1);}(_0xb138,0x1dd));var _0x8b13=function(_0x2b69d9,_0x41e8fa){_0x2b69d9=_0x2b69d9-0x0;var _0x17c12d=_0xb138[_0x2b69d9];return _0x17c12d;};'use strict';var Sequelize=require(_0x8b13('0x0'));module[_0x8b13('0x1')]={'uniqueid':{'type':Sequelize[_0x8b13('0x2')]},'callerid':{'type':Sequelize[_0x8b13('0x2')]},'calleridname':{'type':Sequelize[_0x8b13('0x2')]},'context':{'type':Sequelize[_0x8b13('0x2')]},'extension':{'type':Sequelize[_0x8b13('0x2')]},'priority':{'type':Sequelize['STRING']},'accountcode':{'type':Sequelize[_0x8b13('0x2')]},'dnid':{'type':Sequelize[_0x8b13('0x2')]},'projectName':{'type':Sequelize[_0x8b13('0x2')]},'saveName':{'type':Sequelize['STRING']},'filename':{'type':Sequelize[_0x8b13('0x2')]},'savePath':{'type':Sequelize[_0x8b13('0x2')]},'format':{'type':Sequelize['VIRTUAL'],'get':function(){var _0x3fdf4d='';var _0x33d1a7=this[_0x8b13('0x3')]('savePath');if(_0x33d1a7){_0x3fdf4d=_0x33d1a7[_0x8b13('0x4')](_0x33d1a7[_0x8b13('0x5')]('.'));}return _0x3fdf4d;}}};
\ No newline at end of file
index 59d461d..83d5256 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4288=['map','rawAttributes','fieldName','type','key','model','query','keys','filters','intersection','fields','attributes','length','hasOwnProperty','nolimit','limit','order','sort','pick','filter','where','VIRTUAL','options','SquareRecording','includeAll','rows','catch','show','params','include','merge','find','create','body','download','uniqueid','filename','format','%s.cypher','existsSync','decryptFile','secrets','recording','savePath','Sequelize','ValidationError','SquareRecording\x20not\x20found','extname','unlink','message','Not\x20found','Entity\x20not\x20found','isNil','File:\x20\x22','\x22\x20trovato\x20eseguo\x20la\x20cancellazione','unlinkSync','info','end','eml-format','rimraf','zip-dir','request-promise','moment','bluebird','util','path','sox','ejs','fs-extra','squel','crypto','desk.js','to-csv','querystring','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/license/util','../../mysqldb','sendStatus','status','json','undefined','count','offset','set','Content-Range','apply','reject','save','update','destroy','then','error','name','send','index'];(function(_0x3a5f60,_0x2e6eb8){var _0x50c997=function(_0x56285d){while(--_0x56285d){_0x3a5f60['push'](_0x3a5f60['shift']());}};_0x50c997(++_0x2e6eb8);}(_0x4288,0x163));var _0x8428=function(_0x11fcba,_0x46ac13){_0x11fcba=_0x11fcba-0x0;var _0x2c792a=_0x4288[_0x11fcba];return _0x2c792a;};'use strict';var emlformat=require(_0x8428('0x0'));var rimraf=require(_0x8428('0x1'));var zipdir=require(_0x8428('0x2'));var jsonpatch=require('fast-json-patch');var rp=require(_0x8428('0x3'));var moment=require(_0x8428('0x4'));var BPromise=require(_0x8428('0x5'));var Mustache=require('mustache');var util=require(_0x8428('0x6'));var path=require(_0x8428('0x7'));var sox=require(_0x8428('0x8'));var csv=require('to-csv');var ejs=require(_0x8428('0x9'));var fs=require('fs');var fs_extra=require(_0x8428('0xa'));var _=require('lodash');var squel=require(_0x8428('0xb'));var crypto=require(_0x8428('0xc'));var jsforce=require('jsforce');var deskjs=require(_0x8428('0xd'));var toCsv=require(_0x8428('0xe'));var querystring=require(_0x8428('0xf'));var Papa=require('papaparse');var Redis=require(_0x8428('0x10'));var authService=require('../../components/auth/service');var qs=require(_0x8428('0x11'));var as=require(_0x8428('0x12'));var hardwareService=require(_0x8428('0x13'));var logger=require('../../config/logger')(_0x8428('0x14'));var utils=require('../../config/utils');var config=require('../../config/environment');var licenseUtil=require(_0x8428('0x15'));var db=require(_0x8428('0x16'))['db'];function respondWithStatusCode(_0x2b85f8,_0xf12be5){_0xf12be5=_0xf12be5||0xcc;return function(_0x219339){if(_0x219339){return _0x2b85f8[_0x8428('0x17')](_0xf12be5);}return _0x2b85f8[_0x8428('0x18')](_0xf12be5)['end']();};}function respondWithResult(_0x215d45,_0x230514){_0x230514=_0x230514||0xc8;return function(_0x2563d0){if(_0x2563d0){return _0x215d45[_0x8428('0x18')](_0x230514)[_0x8428('0x19')](_0x2563d0);}};}function respondWithFilteredResult(_0x2ab4d9,_0x1d4198){return function(_0xf819a9){if(_0xf819a9){var _0x52ce98=typeof _0x1d4198['offset']===_0x8428('0x1a')&&typeof _0x1d4198['limit']===_0x8428('0x1a');var _0x44f3af=_0xf819a9[_0x8428('0x1b')];var _0x112288=_0x52ce98?0x0:_0x1d4198[_0x8428('0x1c')];var _0x18fd97=_0x52ce98?_0xf819a9[_0x8428('0x1b')]:_0x1d4198[_0x8428('0x1c')]+_0x1d4198['limit'];var _0x840ed9;if(_0x18fd97>=_0x44f3af){_0x18fd97=_0x44f3af;_0x840ed9=0xc8;}else{_0x840ed9=0xce;}_0x2ab4d9[_0x8428('0x18')](_0x840ed9);return _0x2ab4d9[_0x8428('0x1d')](_0x8428('0x1e'),_0x112288+'-'+_0x18fd97+'/'+_0x44f3af)[_0x8428('0x19')](_0xf819a9);}return null;};}function patchUpdates(_0x20c0e9){return function(_0x694024){try{jsonpatch[_0x8428('0x1f')](_0x694024,_0x20c0e9,!![]);}catch(_0xf0fa9e){return BPromise[_0x8428('0x20')](_0xf0fa9e);}return _0x694024[_0x8428('0x21')]();};}function saveUpdates(_0x5cdd29,_0x160a2b){return function(_0x9327f8){if(_0x9327f8){return _0x9327f8[_0x8428('0x22')](_0x5cdd29)['then'](function(_0x16a953){return _0x16a953;});}return null;};}function removeEntity(_0x426fbc,_0xd8e818){return function(_0x220924){if(_0x220924){return _0x220924[_0x8428('0x23')]()[_0x8428('0x24')](function(){_0x426fbc['status'](0xcc)['end']();});}};}function handleEntityNotFound(_0x4b4654,_0x5d5b66){return function(_0x5e9802){if(!_0x5e9802){_0x4b4654[_0x8428('0x17')](0x194);}return _0x5e9802;};}function handleError(_0x3401f7,_0x124351){_0x124351=_0x124351||0x1f4;return function(_0x207086){logger[_0x8428('0x25')](_0x207086['stack']);if(_0x207086[_0x8428('0x26')]){delete _0x207086[_0x8428('0x26')];}_0x3401f7['status'](_0x124351)[_0x8428('0x27')](_0x207086);};}exports[_0x8428('0x28')]=function(_0x17b18c,_0x201d78){var _0x38cc2b={},_0x29c5ff={},_0x268453={'count':0x0,'rows':[]};var _0x2eb53c=_[_0x8428('0x29')](db['SquareRecording'][_0x8428('0x2a')],function(_0x1751ec){return{'name':_0x1751ec[_0x8428('0x2b')],'type':_0x1751ec[_0x8428('0x2c')][_0x8428('0x2d')]};});_0x29c5ff[_0x8428('0x2e')]=_['map'](_0x2eb53c,_0x8428('0x26'));_0x29c5ff[_0x8428('0x2f')]=_[_0x8428('0x30')](_0x17b18c['query']);_0x29c5ff[_0x8428('0x31')]=_['intersection'](_0x29c5ff['model'],_0x29c5ff[_0x8428('0x2f')]);_0x38cc2b['attributes']=_[_0x8428('0x32')](_0x29c5ff[_0x8428('0x2e')],qs['fields'](_0x17b18c[_0x8428('0x2f')][_0x8428('0x33')]));_0x38cc2b[_0x8428('0x34')]=_0x38cc2b['attributes'][_0x8428('0x35')]?_0x38cc2b[_0x8428('0x34')]:_0x29c5ff[_0x8428('0x2e')];if(!_0x17b18c[_0x8428('0x2f')][_0x8428('0x36')](_0x8428('0x37'))){_0x38cc2b['limit']=qs['limit'](_0x17b18c[_0x8428('0x2f')][_0x8428('0x38')]);_0x38cc2b[_0x8428('0x1c')]=qs[_0x8428('0x1c')](_0x17b18c['query'][_0x8428('0x1c')]);}_0x38cc2b[_0x8428('0x39')]=qs[_0x8428('0x3a')](_0x17b18c[_0x8428('0x2f')]['sort']);_0x38cc2b['where']=qs['filters'](_[_0x8428('0x3b')](_0x17b18c[_0x8428('0x2f')],_0x29c5ff[_0x8428('0x31')]),_0x2eb53c);if(_0x17b18c['query'][_0x8428('0x3c')]){_0x38cc2b[_0x8428('0x3d')]=_['merge'](_0x38cc2b[_0x8428('0x3d')],{'$or':_[_0x8428('0x29')](_0x2eb53c,function(_0x54b02e){if(_0x54b02e[_0x8428('0x2c')]!==_0x8428('0x3e')){var _0x2769da={};_0x2769da[_0x54b02e['name']]={'$like':'%'+_0x17b18c[_0x8428('0x2f')][_0x8428('0x3c')]+'%'};return _0x2769da;}})});}_0x38cc2b=_['merge']({},_0x38cc2b,_0x17b18c[_0x8428('0x3f')]);var _0x286590={'where':_0x38cc2b['where']};return db[_0x8428('0x40')][_0x8428('0x1b')](_0x286590)[_0x8428('0x24')](function(_0x1a511f){_0x268453[_0x8428('0x1b')]=_0x1a511f;if(_0x17b18c[_0x8428('0x2f')][_0x8428('0x41')]){_0x38cc2b['include']=[{'all':!![]}];}return db[_0x8428('0x40')]['findAll'](_0x38cc2b);})[_0x8428('0x24')](function(_0x5c93e8){_0x268453[_0x8428('0x42')]=_0x5c93e8;return _0x268453;})['then'](respondWithFilteredResult(_0x201d78,_0x38cc2b))[_0x8428('0x43')](handleError(_0x201d78,null));};exports[_0x8428('0x44')]=function(_0x4b14fb,_0x18660f){var _0x2c5356={'raw':!![],'where':{'id':_0x4b14fb[_0x8428('0x45')]['id']}},_0x179f61={};_0x179f61[_0x8428('0x2e')]=_[_0x8428('0x30')](db['SquareRecording'][_0x8428('0x2a')]);_0x179f61[_0x8428('0x2f')]=_[_0x8428('0x30')](_0x4b14fb[_0x8428('0x2f')]);_0x179f61[_0x8428('0x31')]=_['intersection'](_0x179f61[_0x8428('0x2e')],_0x179f61[_0x8428('0x2f')]);_0x2c5356[_0x8428('0x34')]=_[_0x8428('0x32')](_0x179f61[_0x8428('0x2e')],qs[_0x8428('0x33')](_0x4b14fb[_0x8428('0x2f')][_0x8428('0x33')]));_0x2c5356[_0x8428('0x34')]=_0x2c5356[_0x8428('0x34')][_0x8428('0x35')]?_0x2c5356[_0x8428('0x34')]:_0x179f61[_0x8428('0x2e')];if(_0x4b14fb[_0x8428('0x2f')]['includeAll']){_0x2c5356[_0x8428('0x46')]=[{'all':!![]}];}_0x2c5356=_[_0x8428('0x47')]({},_0x2c5356,_0x4b14fb[_0x8428('0x3f')]);return db['SquareRecording'][_0x8428('0x48')](_0x2c5356)[_0x8428('0x24')](handleEntityNotFound(_0x18660f,null))[_0x8428('0x24')](respondWithResult(_0x18660f,null))[_0x8428('0x43')](handleError(_0x18660f,null));};exports[_0x8428('0x49')]=function(_0x1c2e11,_0x17e5f1){return db['SquareRecording'][_0x8428('0x49')](_0x1c2e11[_0x8428('0x4a')],{})[_0x8428('0x24')](respondWithResult(_0x17e5f1,0xc9))[_0x8428('0x43')](handleError(_0x17e5f1,null));};exports['update']=function(_0x5d5a52,_0xa1e440){if(_0x5d5a52[_0x8428('0x4a')]['id']){delete _0x5d5a52[_0x8428('0x4a')]['id'];}return db[_0x8428('0x40')][_0x8428('0x48')]({'where':{'id':_0x5d5a52[_0x8428('0x45')]['id']}})[_0x8428('0x24')](handleEntityNotFound(_0xa1e440,null))[_0x8428('0x24')](saveUpdates(_0x5d5a52[_0x8428('0x4a')],null))[_0x8428('0x24')](respondWithResult(_0xa1e440,null))[_0x8428('0x43')](handleError(_0xa1e440,null));};exports[_0x8428('0x4b')]=function(_0x545851,_0x1c11f0,_0x489e9d){var _0x3d441e=require('../../components/encryptor');var _0x47e15c=![];var _0x3e6712={};if(_0x545851['query']['type']&&_0x545851[_0x8428('0x2f')]['type']===_0x8428('0x4c')){_0x3e6712['uniqueid']=_0x545851['params']['id'];}else{_0x3e6712['id']=_0x545851[_0x8428('0x45')]['id'];}return db[_0x8428('0x40')][_0x8428('0x48')]({'where':_0x3e6712,'attributes':['id','savePath',_0x8428('0x4d')],'raw':!![]})[_0x8428('0x24')](handleEntityNotFound(_0x1c11f0,null))[_0x8428('0x24')](function(_0x1a8c8f){if(_0x1a8c8f){var _0x566812=_0x1a8c8f['savePath'];var _0x2ade3c=util[_0x8428('0x4e')](_0x8428('0x4f'),_0x566812);if(fs[_0x8428('0x50')](_0x2ade3c)){_0x47e15c=!![];return _0x3d441e[_0x8428('0x51')](_0x2ade3c,_0x566812,config[_0x8428('0x52')][_0x8428('0x53')])[_0x8428('0x24')](function(){return _0x1a8c8f;});}return _0x1a8c8f;}})['then'](function(_0x1fb278){if(_0x1fb278){var _0x177cd9=_0x1fb278[_0x8428('0x54')];if(!fs[_0x8428('0x50')](_0x177cd9)){throw new db[(_0x8428('0x55'))][(_0x8428('0x56'))](_0x8428('0x57'));}if(_0x1fb278[_0x8428('0x4d')]){return _0x1c11f0[_0x8428('0x4b')](_0x177cd9,_0x1fb278[_0x8428('0x4d')]+path[_0x8428('0x58')](_0x177cd9),function(){if(_0x47e15c){fs[_0x8428('0x59')](_0x177cd9);}});}else{return _0x1c11f0[_0x8428('0x4b')](_0x177cd9,function(_0xbb6972){if(_0x47e15c){fs['unlink'](_0x177cd9);}});}}})['catch'](function(_0x4f79d9){if(_0x4f79d9[_0x8428('0x5a')]===_0x8428('0x57')){_0x1c11f0[_0x8428('0x18')](0x194)[_0x8428('0x27')](_0x8428('0x5b'));}else{return handleError(_0x1c11f0,null);}});};exports[_0x8428('0x23')]=function(_0x17f4bd,_0x3433e1){return db[_0x8428('0x40')][_0x8428('0x48')]({'where':{'id':_0x17f4bd[_0x8428('0x45')]['id']}})[_0x8428('0x24')](function(_0x2d080e){if(_['isNil'](_0x2d080e)){throw new ReferenceError(_0x8428('0x5c'));}return _0x2d080e;})[_0x8428('0x24')](function(_0x1b764c){var _0x4865f3=_0x1b764c[_0x8428('0x54')];logger['info']('cancellazione\x20fisica\x20documento\x20%s',_0x4865f3);if(!_[_0x8428('0x5d')](_0x1b764c[_0x8428('0x54')])&&fs[_0x8428('0x50')](_0x4865f3)){logger['info'](_0x8428('0x5e')+_0x4865f3+_0x8428('0x5f'));fs[_0x8428('0x60')](_0x4865f3);}_0x4865f3=_0x4865f3+'.cypher';if(!_[_0x8428('0x5d')](_0x1b764c[_0x8428('0x54')])&&fs['existsSync'](_0x4865f3)){logger[_0x8428('0x61')](_0x8428('0x5e')+_0x4865f3+_0x8428('0x5f'));fs[_0x8428('0x60')](_0x4865f3);}return _0x1b764c;})['then'](function(_0x422751){if(!_0x422751)throw new InternalError();return _0x422751['destroy']();})[_0x8428('0x24')](function(){_0x3433e1[_0x8428('0x18')](0xcc)[_0x8428('0x62')]();})[_0x8428('0x43')](handleError(_0x3433e1,null));};
\ No newline at end of file
+var _0x9a5a=['show','include','find','catch','body','params','download','../../components/encryptor','uniqueid','savePath','filename','format','%s.cypher','existsSync','decryptFile','secrets','recording','Sequelize','ValidationError','SquareRecording\x20not\x20found','unlink','message','Not\x20found','destroy','Entity\x20not\x20found','info','cancellazione\x20fisica\x20documento\x20%s','isNil','\x22\x20trovato\x20eseguo\x20la\x20cancellazione','unlinkSync','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','sox','ejs','fs-extra','lodash','squel','desk.js','to-csv','querystring','../../components/auth/service','../../components/parsers/advancedSearch','../../config/logger','api','../../config/utils','../../mysqldb','sendStatus','status','end','json','offset','undefined','limit','count','set','apply','update','then','error','stack','name','send','map','SquareRecording','rawAttributes','fieldName','type','key','model','keys','query','filters','intersection','attributes','fields','length','nolimit','sort','where','pick','merge','VIRTUAL','filter','options','includeAll','findAll','rows'];(function(_0x320f98,_0x491faa){var _0xf2d2ea=function(_0x4e1233){while(--_0x4e1233){_0x320f98['push'](_0x320f98['shift']());}};_0xf2d2ea(++_0x491faa);}(_0x9a5a,0xda));var _0xa9a5=function(_0x3604a9,_0x1fc13a){_0x3604a9=_0x3604a9-0x0;var _0x2325f0=_0x9a5a[_0x3604a9];return _0x2325f0;};'use strict';var emlformat=require(_0xa9a5('0x0'));var rimraf=require(_0xa9a5('0x1'));var zipdir=require(_0xa9a5('0x2'));var jsonpatch=require(_0xa9a5('0x3'));var rp=require(_0xa9a5('0x4'));var moment=require(_0xa9a5('0x5'));var BPromise=require(_0xa9a5('0x6'));var Mustache=require(_0xa9a5('0x7'));var util=require(_0xa9a5('0x8'));var path=require('path');var sox=require(_0xa9a5('0x9'));var csv=require('to-csv');var ejs=require(_0xa9a5('0xa'));var fs=require('fs');var fs_extra=require(_0xa9a5('0xb'));var _=require(_0xa9a5('0xc'));var squel=require(_0xa9a5('0xd'));var crypto=require('crypto');var jsforce=require('jsforce');var deskjs=require(_0xa9a5('0xe'));var toCsv=require(_0xa9a5('0xf'));var querystring=require(_0xa9a5('0x10'));var Papa=require('papaparse');var Redis=require('ioredis');var authService=require(_0xa9a5('0x11'));var qs=require('../../components/parsers/qs');var as=require(_0xa9a5('0x12'));var hardwareService=require('../../config/license/hardware');var logger=require(_0xa9a5('0x13'))(_0xa9a5('0x14'));var utils=require(_0xa9a5('0x15'));var config=require('../../config/environment');var licenseUtil=require('../../config/license/util');var db=require(_0xa9a5('0x16'))['db'];function respondWithStatusCode(_0x387568,_0x2e8b1e){_0x2e8b1e=_0x2e8b1e||0xcc;return function(_0x39729b){if(_0x39729b){return _0x387568[_0xa9a5('0x17')](_0x2e8b1e);}return _0x387568[_0xa9a5('0x18')](_0x2e8b1e)[_0xa9a5('0x19')]();};}function respondWithResult(_0x489d7b,_0x5e7b6d){_0x5e7b6d=_0x5e7b6d||0xc8;return function(_0x2765b3){if(_0x2765b3){return _0x489d7b[_0xa9a5('0x18')](_0x5e7b6d)[_0xa9a5('0x1a')](_0x2765b3);}};}function respondWithFilteredResult(_0x2a5fb9,_0xd4d2df){return function(_0x4f8c98){if(_0x4f8c98){var _0x27d55f=typeof _0xd4d2df[_0xa9a5('0x1b')]===_0xa9a5('0x1c')&&typeof _0xd4d2df[_0xa9a5('0x1d')]==='undefined';var _0x3457ca=_0x4f8c98[_0xa9a5('0x1e')];var _0x5e3bcf=_0x27d55f?0x0:_0xd4d2df[_0xa9a5('0x1b')];var _0x1d2351=_0x27d55f?_0x4f8c98[_0xa9a5('0x1e')]:_0xd4d2df[_0xa9a5('0x1b')]+_0xd4d2df[_0xa9a5('0x1d')];var _0x178dbb;if(_0x1d2351>=_0x3457ca){_0x1d2351=_0x3457ca;_0x178dbb=0xc8;}else{_0x178dbb=0xce;}_0x2a5fb9[_0xa9a5('0x18')](_0x178dbb);return _0x2a5fb9[_0xa9a5('0x1f')]('Content-Range',_0x5e3bcf+'-'+_0x1d2351+'/'+_0x3457ca)['json'](_0x4f8c98);}return null;};}function patchUpdates(_0x31dab2){return function(_0x54358f){try{jsonpatch[_0xa9a5('0x20')](_0x54358f,_0x31dab2,!![]);}catch(_0x3e3046){return BPromise['reject'](_0x3e3046);}return _0x54358f['save']();};}function saveUpdates(_0x2f61f0,_0x1e30da){return function(_0x3199d2){if(_0x3199d2){return _0x3199d2[_0xa9a5('0x21')](_0x2f61f0)[_0xa9a5('0x22')](function(_0x578370){return _0x578370;});}return null;};}function removeEntity(_0x139511,_0x399b61){return function(_0x54743d){if(_0x54743d){return _0x54743d['destroy']()[_0xa9a5('0x22')](function(){_0x139511[_0xa9a5('0x18')](0xcc)[_0xa9a5('0x19')]();});}};}function handleEntityNotFound(_0x207e3f,_0x571ecc){return function(_0x5c4166){if(!_0x5c4166){_0x207e3f[_0xa9a5('0x17')](0x194);}return _0x5c4166;};}function handleError(_0x565b4d,_0x523e5e){_0x523e5e=_0x523e5e||0x1f4;return function(_0x4529df){logger[_0xa9a5('0x23')](_0x4529df[_0xa9a5('0x24')]);if(_0x4529df['name']){delete _0x4529df[_0xa9a5('0x25')];}_0x565b4d[_0xa9a5('0x18')](_0x523e5e)[_0xa9a5('0x26')](_0x4529df);};}exports['index']=function(_0x4a8fe4,_0x175b96){var _0x495184={},_0x25a5ac={},_0x4fe9ce={'count':0x0,'rows':[]};var _0x4da087=_[_0xa9a5('0x27')](db[_0xa9a5('0x28')][_0xa9a5('0x29')],function(_0x30ae94){return{'name':_0x30ae94[_0xa9a5('0x2a')],'type':_0x30ae94[_0xa9a5('0x2b')][_0xa9a5('0x2c')]};});_0x25a5ac[_0xa9a5('0x2d')]=_[_0xa9a5('0x27')](_0x4da087,'name');_0x25a5ac['query']=_[_0xa9a5('0x2e')](_0x4a8fe4[_0xa9a5('0x2f')]);_0x25a5ac[_0xa9a5('0x30')]=_[_0xa9a5('0x31')](_0x25a5ac[_0xa9a5('0x2d')],_0x25a5ac[_0xa9a5('0x2f')]);_0x495184[_0xa9a5('0x32')]=_[_0xa9a5('0x31')](_0x25a5ac[_0xa9a5('0x2d')],qs[_0xa9a5('0x33')](_0x4a8fe4['query']['fields']));_0x495184[_0xa9a5('0x32')]=_0x495184['attributes'][_0xa9a5('0x34')]?_0x495184[_0xa9a5('0x32')]:_0x25a5ac['model'];if(!_0x4a8fe4[_0xa9a5('0x2f')]['hasOwnProperty'](_0xa9a5('0x35'))){_0x495184[_0xa9a5('0x1d')]=qs[_0xa9a5('0x1d')](_0x4a8fe4[_0xa9a5('0x2f')][_0xa9a5('0x1d')]);_0x495184[_0xa9a5('0x1b')]=qs[_0xa9a5('0x1b')](_0x4a8fe4['query'][_0xa9a5('0x1b')]);}_0x495184['order']=qs['sort'](_0x4a8fe4[_0xa9a5('0x2f')][_0xa9a5('0x36')]);_0x495184[_0xa9a5('0x37')]=qs['filters'](_[_0xa9a5('0x38')](_0x4a8fe4[_0xa9a5('0x2f')],_0x25a5ac[_0xa9a5('0x30')]),_0x4da087);if(_0x4a8fe4[_0xa9a5('0x2f')]['filter']){_0x495184[_0xa9a5('0x37')]=_[_0xa9a5('0x39')](_0x495184[_0xa9a5('0x37')],{'$or':_[_0xa9a5('0x27')](_0x4da087,function(_0x3f9407){if(_0x3f9407[_0xa9a5('0x2b')]!==_0xa9a5('0x3a')){var _0x1a84a0={};_0x1a84a0[_0x3f9407[_0xa9a5('0x25')]]={'$like':'%'+_0x4a8fe4[_0xa9a5('0x2f')][_0xa9a5('0x3b')]+'%'};return _0x1a84a0;}})});}_0x495184=_[_0xa9a5('0x39')]({},_0x495184,_0x4a8fe4[_0xa9a5('0x3c')]);var _0x2837f3={'where':_0x495184[_0xa9a5('0x37')]};return db[_0xa9a5('0x28')][_0xa9a5('0x1e')](_0x2837f3)[_0xa9a5('0x22')](function(_0x38edeb){_0x4fe9ce[_0xa9a5('0x1e')]=_0x38edeb;if(_0x4a8fe4['query'][_0xa9a5('0x3d')]){_0x495184['include']=[{'all':!![]}];}return db[_0xa9a5('0x28')][_0xa9a5('0x3e')](_0x495184);})[_0xa9a5('0x22')](function(_0x231c13){_0x4fe9ce[_0xa9a5('0x3f')]=_0x231c13;return _0x4fe9ce;})['then'](respondWithFilteredResult(_0x175b96,_0x495184))['catch'](handleError(_0x175b96,null));};exports[_0xa9a5('0x40')]=function(_0x4183bc,_0x4e2024){var _0x34ac4e={'raw':!![],'where':{'id':_0x4183bc['params']['id']}},_0x1b7c5c={};_0x1b7c5c['model']=_[_0xa9a5('0x2e')](db[_0xa9a5('0x28')]['rawAttributes']);_0x1b7c5c[_0xa9a5('0x2f')]=_[_0xa9a5('0x2e')](_0x4183bc[_0xa9a5('0x2f')]);_0x1b7c5c[_0xa9a5('0x30')]=_[_0xa9a5('0x31')](_0x1b7c5c[_0xa9a5('0x2d')],_0x1b7c5c[_0xa9a5('0x2f')]);_0x34ac4e[_0xa9a5('0x32')]=_[_0xa9a5('0x31')](_0x1b7c5c[_0xa9a5('0x2d')],qs[_0xa9a5('0x33')](_0x4183bc[_0xa9a5('0x2f')][_0xa9a5('0x33')]));_0x34ac4e[_0xa9a5('0x32')]=_0x34ac4e[_0xa9a5('0x32')]['length']?_0x34ac4e[_0xa9a5('0x32')]:_0x1b7c5c[_0xa9a5('0x2d')];if(_0x4183bc[_0xa9a5('0x2f')][_0xa9a5('0x3d')]){_0x34ac4e[_0xa9a5('0x41')]=[{'all':!![]}];}_0x34ac4e=_[_0xa9a5('0x39')]({},_0x34ac4e,_0x4183bc[_0xa9a5('0x3c')]);return db['SquareRecording'][_0xa9a5('0x42')](_0x34ac4e)[_0xa9a5('0x22')](handleEntityNotFound(_0x4e2024,null))[_0xa9a5('0x22')](respondWithResult(_0x4e2024,null))['catch'](handleError(_0x4e2024,null));};exports['create']=function(_0x54cdc9,_0x2af793){return db[_0xa9a5('0x28')]['create'](_0x54cdc9['body'],{})[_0xa9a5('0x22')](respondWithResult(_0x2af793,0xc9))[_0xa9a5('0x43')](handleError(_0x2af793,null));};exports[_0xa9a5('0x21')]=function(_0x26c7f9,_0x43207f){if(_0x26c7f9['body']['id']){delete _0x26c7f9[_0xa9a5('0x44')]['id'];}return db[_0xa9a5('0x28')]['find']({'where':{'id':_0x26c7f9[_0xa9a5('0x45')]['id']}})['then'](handleEntityNotFound(_0x43207f,null))[_0xa9a5('0x22')](saveUpdates(_0x26c7f9[_0xa9a5('0x44')],null))['then'](respondWithResult(_0x43207f,null))[_0xa9a5('0x43')](handleError(_0x43207f,null));};exports[_0xa9a5('0x46')]=function(_0x6d2eba,_0x4b6ec1,_0x321a77){var _0x336c13=require(_0xa9a5('0x47'));var _0x53b002=![];var _0x267b9c={};if(_0x6d2eba[_0xa9a5('0x2f')][_0xa9a5('0x2b')]&&_0x6d2eba[_0xa9a5('0x2f')][_0xa9a5('0x2b')]==='uniqueid'){_0x267b9c[_0xa9a5('0x48')]=_0x6d2eba[_0xa9a5('0x45')]['id'];}else{_0x267b9c['id']=_0x6d2eba[_0xa9a5('0x45')]['id'];}return db[_0xa9a5('0x28')]['find']({'where':_0x267b9c,'attributes':['id',_0xa9a5('0x49'),_0xa9a5('0x4a')],'raw':!![]})[_0xa9a5('0x22')](handleEntityNotFound(_0x4b6ec1,null))['then'](function(_0x3a9399){if(_0x3a9399){var _0x4aabbf=_0x3a9399['savePath'];var _0x1be7dd=util[_0xa9a5('0x4b')](_0xa9a5('0x4c'),_0x4aabbf);if(fs[_0xa9a5('0x4d')](_0x1be7dd)){_0x53b002=!![];return _0x336c13[_0xa9a5('0x4e')](_0x1be7dd,_0x4aabbf,config[_0xa9a5('0x4f')][_0xa9a5('0x50')])[_0xa9a5('0x22')](function(){return _0x3a9399;});}return _0x3a9399;}})[_0xa9a5('0x22')](function(_0x1abe95){if(_0x1abe95){var _0x1b2aed=_0x1abe95[_0xa9a5('0x49')];if(!fs['existsSync'](_0x1b2aed)){throw new db[(_0xa9a5('0x51'))][(_0xa9a5('0x52'))](_0xa9a5('0x53'));}if(_0x1abe95['filename']){return _0x4b6ec1[_0xa9a5('0x46')](_0x1b2aed,_0x1abe95[_0xa9a5('0x4a')]+path['extname'](_0x1b2aed),function(){if(_0x53b002){fs[_0xa9a5('0x54')](_0x1b2aed);}});}else{return _0x4b6ec1[_0xa9a5('0x46')](_0x1b2aed,function(_0x47a644){if(_0x53b002){fs['unlink'](_0x1b2aed);}});}}})[_0xa9a5('0x43')](function(_0x511462){if(_0x511462[_0xa9a5('0x55')]===_0xa9a5('0x53')){_0x4b6ec1[_0xa9a5('0x18')](0x194)['send'](_0xa9a5('0x56'));}else{return handleError(_0x4b6ec1,null);}});};exports[_0xa9a5('0x57')]=function(_0x593903,_0x8a3ad8){return db[_0xa9a5('0x28')]['find']({'where':{'id':_0x593903['params']['id']}})['then'](function(_0x2e5751){if(_['isNil'](_0x2e5751)){throw new ReferenceError(_0xa9a5('0x58'));}return _0x2e5751;})[_0xa9a5('0x22')](function(_0xb0a5f0){var _0x2c7f30=_0xb0a5f0[_0xa9a5('0x49')];logger[_0xa9a5('0x59')](_0xa9a5('0x5a'),_0x2c7f30);if(!_[_0xa9a5('0x5b')](_0xb0a5f0[_0xa9a5('0x49')])&&fs[_0xa9a5('0x4d')](_0x2c7f30)){logger[_0xa9a5('0x59')]('File:\x20\x22'+_0x2c7f30+_0xa9a5('0x5c'));fs[_0xa9a5('0x5d')](_0x2c7f30);}_0x2c7f30=_0x2c7f30+'.cypher';if(!_['isNil'](_0xb0a5f0[_0xa9a5('0x49')])&&fs[_0xa9a5('0x4d')](_0x2c7f30)){logger[_0xa9a5('0x59')]('File:\x20\x22'+_0x2c7f30+_0xa9a5('0x5c'));fs[_0xa9a5('0x5d')](_0x2c7f30);}return _0xb0a5f0;})[_0xa9a5('0x22')](function(_0x2cb258){if(!_0x2cb258)throw new InternalError();return _0x2cb258[_0xa9a5('0x57')]();})['then'](function(){_0x8a3ad8[_0xa9a5('0x18')](0xcc)[_0xa9a5('0x19')]();})[_0xa9a5('0x43')](handleError(_0x8a3ad8,null));};
\ No newline at end of file
index cacbd02..6ed9932 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xfb11=['bluebird','path','../../config/environment','./squareRecording.attributes','SquareRecording','square_recordings','lodash','../../config/logger','api'];(function(_0x4e7b04,_0x34c706){var _0x3f8e87=function(_0x4e5047){while(--_0x4e5047){_0x4e7b04['push'](_0x4e7b04['shift']());}};_0x3f8e87(++_0x34c706);}(_0xfb11,0x1ad));var _0x1fb1=function(_0x8de54f,_0x271987){_0x8de54f=_0x8de54f-0x0;var _0x14cba4=_0xfb11[_0x8de54f];return _0x14cba4;};'use strict';var _=require(_0x1fb1('0x0'));var util=require('util');var logger=require(_0x1fb1('0x1'))(_0x1fb1('0x2'));var moment=require('moment');var BPromise=require(_0x1fb1('0x3'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x1fb1('0x4'));var rimraf=require('rimraf');var config=require(_0x1fb1('0x5'));var attributes=require(_0x1fb1('0x6'));module['exports']=function(_0x25d44f,_0x133727){return _0x25d44f['define'](_0x1fb1('0x7'),attributes,{'tableName':_0x1fb1('0x8'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xea4e=['request-promise','path','../../config/environment','./squareRecording.attributes','exports','define','SquareRecording','square_recordings','lodash','moment'];(function(_0x47a701,_0x49a0c8){var _0x20756a=function(_0x3e7092){while(--_0x3e7092){_0x47a701['push'](_0x47a701['shift']());}};_0x20756a(++_0x49a0c8);}(_0xea4e,0x10c));var _0xeea4=function(_0x2a9f4,_0x25c14a){_0x2a9f4=_0x2a9f4-0x0;var _0x3c39e0=_0xea4e[_0x2a9f4];return _0x3c39e0;};'use strict';var _=require(_0xeea4('0x0'));var util=require('util');var logger=require('../../config/logger')('api');var moment=require(_0xeea4('0x1'));var BPromise=require('bluebird');var rp=require(_0xeea4('0x2'));var fs=require('fs');var path=require(_0xeea4('0x3'));var rimraf=require('rimraf');var config=require(_0xeea4('0x4'));var attributes=require(_0xeea4('0x5'));module[_0xeea4('0x6')]=function(_0x12e419,_0x297af5){return _0x12e419[_0xeea4('0x7')](_0xeea4('0x8'),attributes,{'tableName':_0xeea4('0x9'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index fe9c2fb..5e5f1e3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6ded=['util','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','client','http','request','then','info','SquareRecording,\x20%s,\x20%s','request\x20sent','stringify','error','message','catch','SquareRecording','create','body','options','raw','CreateSquareRecording','debug','lodash'];(function(_0x2efaf6,_0x4cafd9){var _0x46bce0=function(_0xbcff7f){while(--_0xbcff7f){_0x2efaf6['push'](_0x2efaf6['shift']());}};_0x46bce0(++_0x4cafd9);}(_0x6ded,0x8b));var _0xd6de=function(_0x176b03,_0x5cfa82){_0x176b03=_0x176b03-0x0;var _0x305bd3=_0x6ded[_0x176b03];return _0x305bd3;};'use strict';var _=require(_0xd6de('0x0'));var util=require(_0xd6de('0x1'));var moment=require('moment');var BPromise=require(_0xd6de('0x2'));var rs=require(_0xd6de('0x3'));var fs=require('fs');var Redis=require(_0xd6de('0x4'));var db=require(_0xd6de('0x5'))['db'];var utils=require(_0xd6de('0x6'));var logger=require(_0xd6de('0x7'))(_0xd6de('0x8'));var config=require(_0xd6de('0x9'));var jayson=require('jayson/promise');var client=jayson[_0xd6de('0xa')][_0xd6de('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x2561ab,_0x564126,_0x2f6f65){return new BPromise(function(_0x54c533,_0x35135e){return client[_0xd6de('0xc')](_0x2561ab,_0x2f6f65)[_0xd6de('0xd')](function(_0x2b64c5){logger[_0xd6de('0xe')](_0xd6de('0xf'),_0x564126,_0xd6de('0x10'));logger['debug']('SquareRecording,\x20%s,\x20%s,\x20%s',_0x564126,'request\x20sent',JSON[_0xd6de('0x11')](_0x2b64c5));if(_0x2b64c5[_0xd6de('0x12')]){if(_0x2b64c5[_0xd6de('0x12')]['code']===0x1f4){logger[_0xd6de('0x12')]('SquareRecording,\x20%s,\x20%s',_0x564126,_0x2b64c5[_0xd6de('0x12')]['message']);return _0x35135e(_0x2b64c5['error'][_0xd6de('0x13')]);}logger['error']('SquareRecording,\x20%s,\x20%s',_0x564126,_0x2b64c5[_0xd6de('0x12')][_0xd6de('0x13')]);return _0x54c533(_0x2b64c5[_0xd6de('0x12')]['message']);}else{logger[_0xd6de('0xe')](_0xd6de('0xf'),_0x564126,_0xd6de('0x10'));_0x54c533(_0x2b64c5['result'][_0xd6de('0x13')]);}})[_0xd6de('0x14')](function(_0x7b6e02){logger[_0xd6de('0x12')](_0xd6de('0xf'),_0x564126,_0x7b6e02);_0x35135e(_0x7b6e02);});});}exports['CreateSquareRecording']=function(_0x47c5d5){var _0x3e394a=this;return new Promise(function(_0x59a58d,_0x5c8ea5){return db[_0xd6de('0x15')][_0xd6de('0x16')](_0x47c5d5[_0xd6de('0x17')],{'raw':_0x47c5d5[_0xd6de('0x18')]?_0x47c5d5['options'][_0xd6de('0x19')]===undefined?!![]:![]:!![]})[_0xd6de('0xd')](function(_0xa99a11){logger[_0xd6de('0xe')](_0xd6de('0x1a'),_0x47c5d5);logger[_0xd6de('0x1b')](_0xd6de('0x1a'),_0x47c5d5,JSON[_0xd6de('0x11')](_0xa99a11));_0x59a58d(_0xa99a11);})['catch'](function(_0x5b65f3){logger['error']('CreateSquareRecording',_0x5b65f3['message'],_0x47c5d5);_0x5c8ea5(_0x3e394a[_0xd6de('0x12')](0x1f4,_0x5b65f3[_0xd6de('0x13')]));});});};
\ No newline at end of file
+var _0x4168=['ioredis','../../config/logger','../../config/environment','jayson/promise','http','request','then','info','SquareRecording,\x20%s,\x20%s','debug','SquareRecording,\x20%s,\x20%s,\x20%s','stringify','code','error','message','request\x20sent','catch','create','body','options','raw','CreateSquareRecording','lodash','util','moment','bluebird','randomstring'];(function(_0x2de10c,_0x14a21e){var _0x9635ef=function(_0x368193){while(--_0x368193){_0x2de10c['push'](_0x2de10c['shift']());}};_0x9635ef(++_0x14a21e);}(_0x4168,0xd3));var _0x8416=function(_0x3020fc,_0x9cfb5a){_0x3020fc=_0x3020fc-0x0;var _0x1b4a55=_0x4168[_0x3020fc];return _0x1b4a55;};'use strict';var _=require(_0x8416('0x0'));var util=require(_0x8416('0x1'));var moment=require(_0x8416('0x2'));var BPromise=require(_0x8416('0x3'));var rs=require(_0x8416('0x4'));var fs=require('fs');var Redis=require(_0x8416('0x5'));var db=require('../../mysqldb')['db'];var utils=require('../../config/utils');var logger=require(_0x8416('0x6'))('rpc');var config=require(_0x8416('0x7'));var jayson=require(_0x8416('0x8'));var client=jayson['client'][_0x8416('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x25d684,_0x3e82ae,_0x48e304){return new BPromise(function(_0x46718b,_0x6ec6fe){return client[_0x8416('0xa')](_0x25d684,_0x48e304)[_0x8416('0xb')](function(_0x4620dd){logger[_0x8416('0xc')](_0x8416('0xd'),_0x3e82ae,'request\x20sent');logger[_0x8416('0xe')](_0x8416('0xf'),_0x3e82ae,'request\x20sent',JSON[_0x8416('0x10')](_0x4620dd));if(_0x4620dd['error']){if(_0x4620dd['error'][_0x8416('0x11')]===0x1f4){logger[_0x8416('0x12')](_0x8416('0xd'),_0x3e82ae,_0x4620dd[_0x8416('0x12')][_0x8416('0x13')]);return _0x6ec6fe(_0x4620dd['error'][_0x8416('0x13')]);}logger[_0x8416('0x12')](_0x8416('0xd'),_0x3e82ae,_0x4620dd['error']['message']);return _0x46718b(_0x4620dd[_0x8416('0x12')][_0x8416('0x13')]);}else{logger[_0x8416('0xc')]('SquareRecording,\x20%s,\x20%s',_0x3e82ae,_0x8416('0x14'));_0x46718b(_0x4620dd['result'][_0x8416('0x13')]);}})[_0x8416('0x15')](function(_0x6274b2){logger['error'](_0x8416('0xd'),_0x3e82ae,_0x6274b2);_0x6ec6fe(_0x6274b2);});});}exports['CreateSquareRecording']=function(_0x28409e){var _0xcdcb6e=this;return new Promise(function(_0x56ef0f,_0x5ebafb){return db['SquareRecording'][_0x8416('0x16')](_0x28409e[_0x8416('0x17')],{'raw':_0x28409e[_0x8416('0x18')]?_0x28409e['options'][_0x8416('0x19')]===undefined?!![]:![]:!![]})[_0x8416('0xb')](function(_0x47c33f){logger[_0x8416('0xc')](_0x8416('0x1a'),_0x28409e);logger[_0x8416('0xe')](_0x8416('0x1a'),_0x28409e,JSON[_0x8416('0x10')](_0x47c33f));_0x56ef0f(_0x47c33f);})[_0x8416('0x15')](function(_0x45f596){logger['error']('CreateSquareRecording',_0x45f596[_0x8416('0x13')],_0x28409e);_0x5ebafb(_0xcdcb6e['error'](0x1f4,_0x45f596[_0x8416('0x13')]));});});};
\ No newline at end of file
index 28f2b29..96b265d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xbaf0=['/:id','update','delete','exports','util','path','connect-timeout','express','Router','fs-extra','../../components/interaction/service','../../config/environment','./squareReport.controller','get','isAuthenticated','index','/describe','show','post','create','put'];(function(_0x335c81,_0x7c8498){var _0x3bbd9b=function(_0x16a3d5){while(--_0x16a3d5){_0x335c81['push'](_0x335c81['shift']());}};_0x3bbd9b(++_0x7c8498);}(_0xbaf0,0x12a));var _0x0baf=function(_0x19e35c,_0x29cd1e){_0x19e35c=_0x19e35c-0x0;var _0x3e1fe8=_0xbaf0[_0x19e35c];return _0x3e1fe8;};'use strict';var multer=require('multer');var util=require(_0x0baf('0x0'));var path=require(_0x0baf('0x1'));var timeout=require(_0x0baf('0x2'));var express=require(_0x0baf('0x3'));var router=express[_0x0baf('0x4')]();var fs_extra=require(_0x0baf('0x5'));var auth=require('../../components/auth/service');var interaction=require(_0x0baf('0x6'));var config=require(_0x0baf('0x7'));var controller=require(_0x0baf('0x8'));router[_0x0baf('0x9')]('/',auth[_0x0baf('0xa')](),controller[_0x0baf('0xb')]);router[_0x0baf('0x9')](_0x0baf('0xc'),auth[_0x0baf('0xa')](),controller['describe']);router[_0x0baf('0x9')]('/:id',auth[_0x0baf('0xa')](),controller[_0x0baf('0xd')]);router[_0x0baf('0xe')]('/',auth[_0x0baf('0xa')](),controller[_0x0baf('0xf')]);router[_0x0baf('0x10')](_0x0baf('0x11'),auth[_0x0baf('0xa')](),controller[_0x0baf('0x12')]);router[_0x0baf('0x13')](_0x0baf('0x11'),auth['isAuthenticated'](),controller['destroy']);module[_0x0baf('0x14')]=router;
\ No newline at end of file
+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','./squareReport.controller','get','isAuthenticated','index'];(function(_0x3e937a,_0x4bd097){var _0x23d0e2=function(_0x43e2da){while(--_0x43e2da){_0x3e937a['push'](_0x3e937a['shift']());}};_0x23d0e2(++_0x4bd097);}(_0xe706,0xa3));var _0x6e70=function(_0x41f59e,_0x5e916a){_0x41f59e=_0x41f59e-0x0;var _0x1d5e3=_0xe706[_0x41f59e];return _0x1d5e3;};'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
index 1ef3bab..fcdf47c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9a98=['DATE','BOOLEAN','STRING'];(function(_0x1a5de5,_0x105c88){var _0x499b81=function(_0x349dbb){while(--_0x349dbb){_0x1a5de5['push'](_0x1a5de5['shift']());}};_0x499b81(++_0x105c88);}(_0x9a98,0x134));var _0x89a9=function(_0x26aa7a,_0x1000ef){_0x26aa7a=_0x26aa7a-0x0;var _0x163c1e=_0x9a98[_0x26aa7a];return _0x163c1e;};'use strict';var Sequelize=require('sequelize');module['exports']={'network':{'type':Sequelize['STRING']},'network_script':{'type':Sequelize[_0x89a9('0x0')]},'request':{'type':Sequelize['STRING']},'channel':{'type':Sequelize[_0x89a9('0x0')]},'language':{'type':Sequelize[_0x89a9('0x0')]},'type':{'type':Sequelize[_0x89a9('0x0')]},'uniqueid':{'type':Sequelize[_0x89a9('0x0')]},'version':{'type':Sequelize[_0x89a9('0x0')]},'callerid':{'type':Sequelize[_0x89a9('0x0')]},'calleridname':{'type':Sequelize[_0x89a9('0x0')]},'callingpres':{'type':Sequelize[_0x89a9('0x0')]},'callingani2':{'type':Sequelize[_0x89a9('0x0')]},'callington':{'type':Sequelize[_0x89a9('0x0')]},'callingtns':{'type':Sequelize[_0x89a9('0x0')]},'dnid':{'type':Sequelize[_0x89a9('0x0')]},'rdnis':{'type':Sequelize[_0x89a9('0x0')]},'context':{'type':Sequelize[_0x89a9('0x0')]},'extension':{'type':Sequelize[_0x89a9('0x0')]},'priority':{'type':Sequelize[_0x89a9('0x0')]},'enhanced':{'type':Sequelize[_0x89a9('0x0')]},'accountcode':{'type':Sequelize[_0x89a9('0x0')]},'threadid':{'type':Sequelize['STRING']},'project_name':{'type':Sequelize[_0x89a9('0x0')]},'joinAt':{'type':Sequelize['DATE']},'leaveAt':{'type':Sequelize[_0x89a9('0x1')]},'bot':{'type':Sequelize[_0x89a9('0x2')],'defaultValue':![]}};
\ No newline at end of file
+var _0x6ad3=['BOOLEAN','sequelize','STRING','DATE'];(function(_0xe7d6b4,_0x5efa08){var _0x236a05=function(_0xe3bedc){while(--_0xe3bedc){_0xe7d6b4['push'](_0xe7d6b4['shift']());}};_0x236a05(++_0x5efa08);}(_0x6ad3,0xe5));var _0x36ad=function(_0x191f9d,_0x21976f){_0x191f9d=_0x191f9d-0x0;var _0x58e60d=_0x6ad3[_0x191f9d];return _0x58e60d;};'use strict';var Sequelize=require(_0x36ad('0x0'));module['exports']={'network':{'type':Sequelize[_0x36ad('0x1')]},'network_script':{'type':Sequelize[_0x36ad('0x1')]},'request':{'type':Sequelize[_0x36ad('0x1')]},'channel':{'type':Sequelize[_0x36ad('0x1')]},'language':{'type':Sequelize[_0x36ad('0x1')]},'type':{'type':Sequelize['STRING']},'uniqueid':{'type':Sequelize[_0x36ad('0x1')]},'version':{'type':Sequelize[_0x36ad('0x1')]},'callerid':{'type':Sequelize[_0x36ad('0x1')]},'calleridname':{'type':Sequelize[_0x36ad('0x1')]},'callingpres':{'type':Sequelize[_0x36ad('0x1')]},'callingani2':{'type':Sequelize[_0x36ad('0x1')]},'callington':{'type':Sequelize[_0x36ad('0x1')]},'callingtns':{'type':Sequelize[_0x36ad('0x1')]},'dnid':{'type':Sequelize[_0x36ad('0x1')]},'rdnis':{'type':Sequelize[_0x36ad('0x1')]},'context':{'type':Sequelize[_0x36ad('0x1')]},'extension':{'type':Sequelize[_0x36ad('0x1')]},'priority':{'type':Sequelize['STRING']},'enhanced':{'type':Sequelize['STRING']},'accountcode':{'type':Sequelize[_0x36ad('0x1')]},'threadid':{'type':Sequelize[_0x36ad('0x1')]},'project_name':{'type':Sequelize[_0x36ad('0x1')]},'joinAt':{'type':Sequelize[_0x36ad('0x2')]},'leaveAt':{'type':Sequelize['DATE']},'bot':{'type':Sequelize[_0x36ad('0x3')],'defaultValue':![]}};
\ No newline at end of file
index 36f1a8e..4f386a6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd462=['stack','name','map','SquareReport','rawAttributes','fieldName','key','model','query','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','where','filters','pick','filter','merge','type','options','count','includeAll','include','catch','params','keys','find','create','body','then','describe','eml-format','rimraf','fast-json-patch','moment','mustache','util','sox','to-csv','ejs','lodash','crypto','jsforce','desk.js','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','sendStatus','status','end','json','offset','undefined','limit','set','apply','save','update','destroy'];(function(_0x480d67,_0x3110a9){var _0x32752b=function(_0xb665ab){while(--_0xb665ab){_0x480d67['push'](_0x480d67['shift']());}};_0x32752b(++_0x3110a9);}(_0xd462,0xaa));var _0x2d46=function(_0x212bf5,_0x165cbd){_0x212bf5=_0x212bf5-0x0;var _0xfcad21=_0xd462[_0x212bf5];return _0xfcad21;};'use strict';var emlformat=require(_0x2d46('0x0'));var rimraf=require(_0x2d46('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0x2d46('0x2'));var rp=require('request-promise');var moment=require(_0x2d46('0x3'));var BPromise=require('bluebird');var Mustache=require(_0x2d46('0x4'));var util=require(_0x2d46('0x5'));var path=require('path');var sox=require(_0x2d46('0x6'));var csv=require(_0x2d46('0x7'));var ejs=require(_0x2d46('0x8'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x2d46('0x9'));var squel=require('squel');var crypto=require(_0x2d46('0xa'));var jsforce=require(_0x2d46('0xb'));var deskjs=require(_0x2d46('0xc'));var toCsv=require(_0x2d46('0x7'));var querystring=require('querystring');var Papa=require('papaparse');var Redis=require(_0x2d46('0xd'));var authService=require(_0x2d46('0xe'));var qs=require(_0x2d46('0xf'));var as=require(_0x2d46('0x10'));var hardwareService=require('../../config/license/hardware');var logger=require(_0x2d46('0x11'))(_0x2d46('0x12'));var utils=require(_0x2d46('0x13'));var config=require(_0x2d46('0x14'));var licenseUtil=require(_0x2d46('0x15'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x10e96f,_0x5500cc){_0x5500cc=_0x5500cc||0xcc;return function(_0x209030){if(_0x209030){return _0x10e96f[_0x2d46('0x16')](_0x5500cc);}return _0x10e96f[_0x2d46('0x17')](_0x5500cc)[_0x2d46('0x18')]();};}function respondWithResult(_0x2ab670,_0x5dfd43){_0x5dfd43=_0x5dfd43||0xc8;return function(_0x68c2fa){if(_0x68c2fa){return _0x2ab670['status'](_0x5dfd43)[_0x2d46('0x19')](_0x68c2fa);}};}function respondWithFilteredResult(_0x1d6883,_0x39d005){return function(_0x34f49d){if(_0x34f49d){var _0x2cd0d=typeof _0x39d005[_0x2d46('0x1a')]===_0x2d46('0x1b')&&typeof _0x39d005['limit']===_0x2d46('0x1b');var _0x68ae67=_0x34f49d['count'];var _0x17ed97=_0x2cd0d?0x0:_0x39d005[_0x2d46('0x1a')];var _0x37953b=_0x2cd0d?_0x34f49d['count']:_0x39d005[_0x2d46('0x1a')]+_0x39d005[_0x2d46('0x1c')];var _0x5bd4fb;if(_0x37953b>=_0x68ae67){_0x37953b=_0x68ae67;_0x5bd4fb=0xc8;}else{_0x5bd4fb=0xce;}_0x1d6883[_0x2d46('0x17')](_0x5bd4fb);return _0x1d6883[_0x2d46('0x1d')]('Content-Range',_0x17ed97+'-'+_0x37953b+'/'+_0x68ae67)[_0x2d46('0x19')](_0x34f49d);}return null;};}function patchUpdates(_0x4e4d3d){return function(_0x5f3fed){try{jsonpatch[_0x2d46('0x1e')](_0x5f3fed,_0x4e4d3d,!![]);}catch(_0x5e1a2c){return BPromise['reject'](_0x5e1a2c);}return _0x5f3fed[_0x2d46('0x1f')]();};}function saveUpdates(_0x889eea,_0x187f0b){return function(_0x1db9cf){if(_0x1db9cf){return _0x1db9cf[_0x2d46('0x20')](_0x889eea)['then'](function(_0x4ff34d){return _0x4ff34d;});}return null;};}function removeEntity(_0x1db4b1,_0x3de5af){return function(_0x17c4cf){if(_0x17c4cf){return _0x17c4cf[_0x2d46('0x21')]()['then'](function(){_0x1db4b1[_0x2d46('0x17')](0xcc)[_0x2d46('0x18')]();});}};}function handleEntityNotFound(_0x55d111,_0x33c5c1){return function(_0x563056){if(!_0x563056){_0x55d111[_0x2d46('0x16')](0x194);}return _0x563056;};}function handleError(_0x4481d0,_0x1081c7){_0x1081c7=_0x1081c7||0x1f4;return function(_0x4b25ff){logger['error'](_0x4b25ff[_0x2d46('0x22')]);if(_0x4b25ff['name']){delete _0x4b25ff[_0x2d46('0x23')];}_0x4481d0[_0x2d46('0x17')](_0x1081c7)['send'](_0x4b25ff);};}exports['index']=function(_0x2863bd,_0x107b78){var _0x34cdac={},_0x2e098e={},_0x4bed60={'count':0x0,'rows':[]};var _0x3c1791=_[_0x2d46('0x24')](db[_0x2d46('0x25')][_0x2d46('0x26')],function(_0x2d8fd5){return{'name':_0x2d8fd5[_0x2d46('0x27')],'type':_0x2d8fd5['type'][_0x2d46('0x28')]};});_0x2e098e[_0x2d46('0x29')]=_[_0x2d46('0x24')](_0x3c1791,_0x2d46('0x23'));_0x2e098e[_0x2d46('0x2a')]=_['keys'](_0x2863bd['query']);_0x2e098e['filters']=_[_0x2d46('0x2b')](_0x2e098e[_0x2d46('0x29')],_0x2e098e[_0x2d46('0x2a')]);_0x34cdac[_0x2d46('0x2c')]=_[_0x2d46('0x2b')](_0x2e098e['model'],qs[_0x2d46('0x2d')](_0x2863bd['query'][_0x2d46('0x2d')]));_0x34cdac['attributes']=_0x34cdac['attributes'][_0x2d46('0x2e')]?_0x34cdac[_0x2d46('0x2c')]:_0x2e098e['model'];if(!_0x2863bd[_0x2d46('0x2a')][_0x2d46('0x2f')](_0x2d46('0x30'))){_0x34cdac[_0x2d46('0x1c')]=qs[_0x2d46('0x1c')](_0x2863bd[_0x2d46('0x2a')][_0x2d46('0x1c')]);_0x34cdac[_0x2d46('0x1a')]=qs[_0x2d46('0x1a')](_0x2863bd[_0x2d46('0x2a')][_0x2d46('0x1a')]);}_0x34cdac[_0x2d46('0x31')]=qs['sort'](_0x2863bd[_0x2d46('0x2a')]['sort']);_0x34cdac[_0x2d46('0x32')]=qs[_0x2d46('0x33')](_[_0x2d46('0x34')](_0x2863bd[_0x2d46('0x2a')],_0x2e098e[_0x2d46('0x33')]),_0x3c1791);if(_0x2863bd['query'][_0x2d46('0x35')]){_0x34cdac['where']=_[_0x2d46('0x36')](_0x34cdac[_0x2d46('0x32')],{'$or':_['map'](_0x3c1791,function(_0x14c1e7){if(_0x14c1e7[_0x2d46('0x37')]!=='VIRTUAL'){var _0x27c13b={};_0x27c13b[_0x14c1e7[_0x2d46('0x23')]]={'$like':'%'+_0x2863bd[_0x2d46('0x2a')][_0x2d46('0x35')]+'%'};return _0x27c13b;}})});}_0x34cdac=_[_0x2d46('0x36')]({},_0x34cdac,_0x2863bd[_0x2d46('0x38')]);var _0x340db6={'where':_0x34cdac[_0x2d46('0x32')]};return db[_0x2d46('0x25')][_0x2d46('0x39')](_0x340db6)['then'](function(_0x488420){_0x4bed60[_0x2d46('0x39')]=_0x488420;if(_0x2863bd['query'][_0x2d46('0x3a')]){_0x34cdac[_0x2d46('0x3b')]=[{'all':!![]}];}return db[_0x2d46('0x25')]['findAll'](_0x34cdac);})['then'](function(_0x3cccfc){_0x4bed60['rows']=_0x3cccfc;return _0x4bed60;})['then'](respondWithFilteredResult(_0x107b78,_0x34cdac))[_0x2d46('0x3c')](handleError(_0x107b78,null));};exports['show']=function(_0x462b78,_0x1af4f6){var _0x56ee71={'raw':!![],'where':{'id':_0x462b78[_0x2d46('0x3d')]['id']}},_0x46d287={};_0x46d287[_0x2d46('0x29')]=_[_0x2d46('0x3e')](db['SquareReport'][_0x2d46('0x26')]);_0x46d287[_0x2d46('0x2a')]=_[_0x2d46('0x3e')](_0x462b78[_0x2d46('0x2a')]);_0x46d287[_0x2d46('0x33')]=_[_0x2d46('0x2b')](_0x46d287[_0x2d46('0x29')],_0x46d287[_0x2d46('0x2a')]);_0x56ee71[_0x2d46('0x2c')]=_[_0x2d46('0x2b')](_0x46d287['model'],qs['fields'](_0x462b78[_0x2d46('0x2a')]['fields']));_0x56ee71[_0x2d46('0x2c')]=_0x56ee71[_0x2d46('0x2c')][_0x2d46('0x2e')]?_0x56ee71[_0x2d46('0x2c')]:_0x46d287['model'];if(_0x462b78[_0x2d46('0x2a')][_0x2d46('0x3a')]){_0x56ee71[_0x2d46('0x3b')]=[{'all':!![]}];}_0x56ee71=_['merge']({},_0x56ee71,_0x462b78[_0x2d46('0x38')]);return db[_0x2d46('0x25')][_0x2d46('0x3f')](_0x56ee71)['then'](handleEntityNotFound(_0x1af4f6,null))['then'](respondWithResult(_0x1af4f6,null))[_0x2d46('0x3c')](handleError(_0x1af4f6,null));};exports[_0x2d46('0x40')]=function(_0x2207f1,_0x168e9b){return db[_0x2d46('0x25')]['create'](_0x2207f1['body'],{})['then'](respondWithResult(_0x168e9b,0xc9))[_0x2d46('0x3c')](handleError(_0x168e9b,null));};exports[_0x2d46('0x20')]=function(_0x3a4b1f,_0x316749){if(_0x3a4b1f[_0x2d46('0x41')]['id']){delete _0x3a4b1f['body']['id'];}return db[_0x2d46('0x25')][_0x2d46('0x3f')]({'where':{'id':_0x3a4b1f[_0x2d46('0x3d')]['id']}})['then'](handleEntityNotFound(_0x316749,null))[_0x2d46('0x42')](saveUpdates(_0x3a4b1f[_0x2d46('0x41')],null))['then'](respondWithResult(_0x316749,null))[_0x2d46('0x3c')](handleError(_0x316749,null));};exports['destroy']=function(_0x4f31a1,_0x2c6cf8){return db[_0x2d46('0x25')][_0x2d46('0x3f')]({'where':{'id':_0x4f31a1['params']['id']}})[_0x2d46('0x42')](handleEntityNotFound(_0x2c6cf8,null))[_0x2d46('0x42')](removeEntity(_0x2c6cf8,null))[_0x2d46('0x3c')](handleError(_0x2c6cf8,null));};exports[_0x2d46('0x43')]=function(_0x568cc4,_0x213f34){return db[_0x2d46('0x25')][_0x2d46('0x43')]()[_0x2d46('0x42')](respondWithResult(_0x213f34,null))['catch'](handleError(_0x213f34,null));};
\ No newline at end of file
+var _0x31dc=['options','SquareReport','include','rows','show','params','find','catch','body','describe','eml-format','rimraf','zip-dir','fast-json-patch','bluebird','mustache','util','sox','to-csv','fs-extra','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','sendStatus','status','end','offset','undefined','limit','count','set','Content-Range','json','reject','save','update','destroy','then','error','stack','name','index','map','fieldName','type','query','keys','filters','intersection','model','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','filter','VIRTUAL','merge'];(function(_0xf2725b,_0x41557e){var _0x560c1b=function(_0x1cab1a){while(--_0x1cab1a){_0xf2725b['push'](_0xf2725b['shift']());}};_0x560c1b(++_0x41557e);}(_0x31dc,0x132));var _0xc31d=function(_0x4d855e,_0x106b95){_0x4d855e=_0x4d855e-0x0;var _0x54a6c3=_0x31dc[_0x4d855e];return _0x54a6c3;};'use strict';var emlformat=require(_0xc31d('0x0'));var rimraf=require(_0xc31d('0x1'));var zipdir=require(_0xc31d('0x2'));var jsonpatch=require(_0xc31d('0x3'));var rp=require('request-promise');var moment=require('moment');var BPromise=require(_0xc31d('0x4'));var Mustache=require(_0xc31d('0x5'));var util=require(_0xc31d('0x6'));var path=require('path');var sox=require(_0xc31d('0x7'));var csv=require(_0xc31d('0x8'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0xc31d('0x9'));var _=require('lodash');var squel=require(_0xc31d('0xa'));var crypto=require(_0xc31d('0xb'));var jsforce=require(_0xc31d('0xc'));var deskjs=require(_0xc31d('0xd'));var toCsv=require(_0xc31d('0x8'));var querystring=require(_0xc31d('0xe'));var Papa=require(_0xc31d('0xf'));var Redis=require(_0xc31d('0x10'));var authService=require(_0xc31d('0x11'));var qs=require(_0xc31d('0x12'));var as=require(_0xc31d('0x13'));var hardwareService=require(_0xc31d('0x14'));var logger=require(_0xc31d('0x15'))('api');var utils=require(_0xc31d('0x16'));var config=require(_0xc31d('0x17'));var licenseUtil=require(_0xc31d('0x18'));var db=require(_0xc31d('0x19'))['db'];function respondWithStatusCode(_0x3dd5ea,_0x5333fd){_0x5333fd=_0x5333fd||0xcc;return function(_0x3905d8){if(_0x3905d8){return _0x3dd5ea[_0xc31d('0x1a')](_0x5333fd);}return _0x3dd5ea[_0xc31d('0x1b')](_0x5333fd)[_0xc31d('0x1c')]();};}function respondWithResult(_0x3fb6f4,_0x52caac){_0x52caac=_0x52caac||0xc8;return function(_0x100028){if(_0x100028){return _0x3fb6f4[_0xc31d('0x1b')](_0x52caac)['json'](_0x100028);}};}function respondWithFilteredResult(_0x4ad7b9,_0x31c10b){return function(_0x383f59){if(_0x383f59){var _0x193e06=typeof _0x31c10b[_0xc31d('0x1d')]===_0xc31d('0x1e')&&typeof _0x31c10b[_0xc31d('0x1f')]===_0xc31d('0x1e');var _0xfb03d7=_0x383f59[_0xc31d('0x20')];var _0x3bee12=_0x193e06?0x0:_0x31c10b[_0xc31d('0x1d')];var _0x193caa=_0x193e06?_0x383f59[_0xc31d('0x20')]:_0x31c10b['offset']+_0x31c10b[_0xc31d('0x1f')];var _0x1cd337;if(_0x193caa>=_0xfb03d7){_0x193caa=_0xfb03d7;_0x1cd337=0xc8;}else{_0x1cd337=0xce;}_0x4ad7b9[_0xc31d('0x1b')](_0x1cd337);return _0x4ad7b9[_0xc31d('0x21')](_0xc31d('0x22'),_0x3bee12+'-'+_0x193caa+'/'+_0xfb03d7)[_0xc31d('0x23')](_0x383f59);}return null;};}function patchUpdates(_0x41f050){return function(_0x36874f){try{jsonpatch['apply'](_0x36874f,_0x41f050,!![]);}catch(_0x48072f){return BPromise[_0xc31d('0x24')](_0x48072f);}return _0x36874f[_0xc31d('0x25')]();};}function saveUpdates(_0x5ebc56,_0x21d27e){return function(_0x1ccfdb){if(_0x1ccfdb){return _0x1ccfdb[_0xc31d('0x26')](_0x5ebc56)['then'](function(_0x3f9355){return _0x3f9355;});}return null;};}function removeEntity(_0x4c316d,_0x3111cc){return function(_0x1363e6){if(_0x1363e6){return _0x1363e6[_0xc31d('0x27')]()[_0xc31d('0x28')](function(){_0x4c316d[_0xc31d('0x1b')](0xcc)[_0xc31d('0x1c')]();});}};}function handleEntityNotFound(_0x36c68a,_0x5ea5da){return function(_0x502712){if(!_0x502712){_0x36c68a[_0xc31d('0x1a')](0x194);}return _0x502712;};}function handleError(_0x193f9b,_0x19b025){_0x19b025=_0x19b025||0x1f4;return function(_0x48e459){logger[_0xc31d('0x29')](_0x48e459[_0xc31d('0x2a')]);if(_0x48e459[_0xc31d('0x2b')]){delete _0x48e459[_0xc31d('0x2b')];}_0x193f9b[_0xc31d('0x1b')](_0x19b025)['send'](_0x48e459);};}exports[_0xc31d('0x2c')]=function(_0x611e0c,_0x17a3f1){var _0x23e4ee={},_0x527168={},_0x52671a={'count':0x0,'rows':[]};var _0x328007=_[_0xc31d('0x2d')](db['SquareReport']['rawAttributes'],function(_0x18a714){return{'name':_0x18a714[_0xc31d('0x2e')],'type':_0x18a714[_0xc31d('0x2f')]['key']};});_0x527168['model']=_[_0xc31d('0x2d')](_0x328007,_0xc31d('0x2b'));_0x527168[_0xc31d('0x30')]=_[_0xc31d('0x31')](_0x611e0c[_0xc31d('0x30')]);_0x527168[_0xc31d('0x32')]=_[_0xc31d('0x33')](_0x527168[_0xc31d('0x34')],_0x527168[_0xc31d('0x30')]);_0x23e4ee[_0xc31d('0x35')]=_[_0xc31d('0x33')](_0x527168[_0xc31d('0x34')],qs[_0xc31d('0x36')](_0x611e0c[_0xc31d('0x30')]['fields']));_0x23e4ee['attributes']=_0x23e4ee[_0xc31d('0x35')][_0xc31d('0x37')]?_0x23e4ee[_0xc31d('0x35')]:_0x527168['model'];if(!_0x611e0c['query'][_0xc31d('0x38')](_0xc31d('0x39'))){_0x23e4ee[_0xc31d('0x1f')]=qs[_0xc31d('0x1f')](_0x611e0c['query'][_0xc31d('0x1f')]);_0x23e4ee['offset']=qs[_0xc31d('0x1d')](_0x611e0c[_0xc31d('0x30')][_0xc31d('0x1d')]);}_0x23e4ee[_0xc31d('0x3a')]=qs[_0xc31d('0x3b')](_0x611e0c[_0xc31d('0x30')]['sort']);_0x23e4ee[_0xc31d('0x3c')]=qs[_0xc31d('0x32')](_['pick'](_0x611e0c['query'],_0x527168[_0xc31d('0x32')]),_0x328007);if(_0x611e0c[_0xc31d('0x30')][_0xc31d('0x3d')]){_0x23e4ee['where']=_['merge'](_0x23e4ee[_0xc31d('0x3c')],{'$or':_[_0xc31d('0x2d')](_0x328007,function(_0x378555){if(_0x378555[_0xc31d('0x2f')]!==_0xc31d('0x3e')){var _0x2db5ed={};_0x2db5ed[_0x378555[_0xc31d('0x2b')]]={'$like':'%'+_0x611e0c['query'][_0xc31d('0x3d')]+'%'};return _0x2db5ed;}})});}_0x23e4ee=_[_0xc31d('0x3f')]({},_0x23e4ee,_0x611e0c[_0xc31d('0x40')]);var _0x35b1a8={'where':_0x23e4ee[_0xc31d('0x3c')]};return db[_0xc31d('0x41')][_0xc31d('0x20')](_0x35b1a8)[_0xc31d('0x28')](function(_0x2bbf12){_0x52671a['count']=_0x2bbf12;if(_0x611e0c[_0xc31d('0x30')]['includeAll']){_0x23e4ee[_0xc31d('0x42')]=[{'all':!![]}];}return db[_0xc31d('0x41')]['findAll'](_0x23e4ee);})[_0xc31d('0x28')](function(_0x5d8610){_0x52671a[_0xc31d('0x43')]=_0x5d8610;return _0x52671a;})['then'](respondWithFilteredResult(_0x17a3f1,_0x23e4ee))['catch'](handleError(_0x17a3f1,null));};exports[_0xc31d('0x44')]=function(_0x5da1d7,_0x44918b){var _0x4b7ff4={'raw':!![],'where':{'id':_0x5da1d7[_0xc31d('0x45')]['id']}},_0x5a48a1={};_0x5a48a1[_0xc31d('0x34')]=_[_0xc31d('0x31')](db[_0xc31d('0x41')]['rawAttributes']);_0x5a48a1[_0xc31d('0x30')]=_['keys'](_0x5da1d7[_0xc31d('0x30')]);_0x5a48a1[_0xc31d('0x32')]=_['intersection'](_0x5a48a1['model'],_0x5a48a1[_0xc31d('0x30')]);_0x4b7ff4[_0xc31d('0x35')]=_[_0xc31d('0x33')](_0x5a48a1[_0xc31d('0x34')],qs[_0xc31d('0x36')](_0x5da1d7[_0xc31d('0x30')]['fields']));_0x4b7ff4['attributes']=_0x4b7ff4['attributes']['length']?_0x4b7ff4[_0xc31d('0x35')]:_0x5a48a1[_0xc31d('0x34')];if(_0x5da1d7[_0xc31d('0x30')]['includeAll']){_0x4b7ff4[_0xc31d('0x42')]=[{'all':!![]}];}_0x4b7ff4=_[_0xc31d('0x3f')]({},_0x4b7ff4,_0x5da1d7['options']);return db[_0xc31d('0x41')][_0xc31d('0x46')](_0x4b7ff4)[_0xc31d('0x28')](handleEntityNotFound(_0x44918b,null))[_0xc31d('0x28')](respondWithResult(_0x44918b,null))[_0xc31d('0x47')](handleError(_0x44918b,null));};exports['create']=function(_0x34ac4e,_0x3c1de0){return db[_0xc31d('0x41')]['create'](_0x34ac4e[_0xc31d('0x48')],{})[_0xc31d('0x28')](respondWithResult(_0x3c1de0,0xc9))[_0xc31d('0x47')](handleError(_0x3c1de0,null));};exports['update']=function(_0x2f3d12,_0x2a5c82){if(_0x2f3d12[_0xc31d('0x48')]['id']){delete _0x2f3d12[_0xc31d('0x48')]['id'];}return db[_0xc31d('0x41')][_0xc31d('0x46')]({'where':{'id':_0x2f3d12[_0xc31d('0x45')]['id']}})[_0xc31d('0x28')](handleEntityNotFound(_0x2a5c82,null))[_0xc31d('0x28')](saveUpdates(_0x2f3d12['body'],null))[_0xc31d('0x28')](respondWithResult(_0x2a5c82,null))['catch'](handleError(_0x2a5c82,null));};exports[_0xc31d('0x27')]=function(_0x5d3826,_0x23744a){return db['SquareReport']['find']({'where':{'id':_0x5d3826[_0xc31d('0x45')]['id']}})[_0xc31d('0x28')](handleEntityNotFound(_0x23744a,null))[_0xc31d('0x28')](removeEntity(_0x23744a,null))[_0xc31d('0x47')](handleError(_0x23744a,null));};exports[_0xc31d('0x49')]=function(_0x5198fc,_0x50582a){return db[_0xc31d('0x41')][_0xc31d('0x49')]()[_0xc31d('0x28')](respondWithResult(_0x50582a,null))[_0xc31d('0x47')](handleError(_0x50582a,null));};
\ No newline at end of file
index 7dbe462..c1d8264 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4a0d=['moment','bluebird','rimraf','../../config/environment','./squareReport.attributes','exports','SquareReport','report_square','uid_pname','project_name','leaveAt','lodash','api'];(function(_0x324503,_0x710f8){var _0x20f2f1=function(_0xfcdd3b){while(--_0xfcdd3b){_0x324503['push'](_0x324503['shift']());}};_0x20f2f1(++_0x710f8);}(_0x4a0d,0x102));var _0xd4a0=function(_0x13fb4f,_0x42f6af){_0x13fb4f=_0x13fb4f-0x0;var _0x298a4e=_0x4a0d[_0x13fb4f];return _0x298a4e;};'use strict';var _=require(_0xd4a0('0x0'));var util=require('util');var logger=require('../../config/logger')(_0xd4a0('0x1'));var moment=require(_0xd4a0('0x2'));var BPromise=require(_0xd4a0('0x3'));var rp=require('request-promise');var fs=require('fs');var path=require('path');var rimraf=require(_0xd4a0('0x4'));var config=require(_0xd4a0('0x5'));var attributes=require(_0xd4a0('0x6'));module[_0xd4a0('0x7')]=function(_0x5acdfb,_0x19a53e){return _0x5acdfb['define'](_0xd4a0('0x8'),attributes,{'tableName':_0xd4a0('0x9'),'paranoid':![],'indexes':[{'name':_0xd4a0('0xa'),'fields':['uniqueid',_0xd4a0('0xb')]},{'name':_0xd4a0('0xc'),'fields':[_0xd4a0('0xc')]}],'timestamps':!![]});};
\ No newline at end of file
+var _0x05a7=['../../config/environment','./squareReport.attributes','exports','SquareReport','report_square','uid_pname','uniqueid','project_name','leaveAt','lodash','util','../../config/logger','api','moment','bluebird','request-promise','path'];(function(_0x256b72,_0x340985){var _0x2183e3=function(_0xf7fd37){while(--_0xf7fd37){_0x256b72['push'](_0x256b72['shift']());}};_0x2183e3(++_0x340985);}(_0x05a7,0xa2));var _0x705a=function(_0x466f2e,_0x5e2a7f){_0x466f2e=_0x466f2e-0x0;var _0x22dfbb=_0x05a7[_0x466f2e];return _0x22dfbb;};'use strict';var _=require(_0x705a('0x0'));var util=require(_0x705a('0x1'));var logger=require(_0x705a('0x2'))(_0x705a('0x3'));var moment=require(_0x705a('0x4'));var BPromise=require(_0x705a('0x5'));var rp=require(_0x705a('0x6'));var fs=require('fs');var path=require(_0x705a('0x7'));var rimraf=require('rimraf');var config=require(_0x705a('0x8'));var attributes=require(_0x705a('0x9'));module[_0x705a('0xa')]=function(_0x27e649,_0x1029e4){return _0x27e649['define'](_0x705a('0xb'),attributes,{'tableName':_0x705a('0xc'),'paranoid':![],'indexes':[{'name':_0x705a('0xd'),'fields':[_0x705a('0xe'),_0x705a('0xf')]},{'name':_0x705a('0x10'),'fields':[_0x705a('0x10')]}],'timestamps':!![]});};
\ No newline at end of file
index b2fb40b..e504c39 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb2d1=['raw','catch','UpdateSquareReport','SquareReport','update','attributes','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','request','then','info','SquareReport,\x20%s,\x20%s','request\x20sent','debug','SquareReport,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','CreateSquareReport','create','body','options'];(function(_0x4d2993,_0x1c9473){var _0x427374=function(_0x149dfd){while(--_0x149dfd){_0x4d2993['push'](_0x4d2993['shift']());}};_0x427374(++_0x1c9473);}(_0xb2d1,0xb0));var _0x1b2d=function(_0xd0b415,_0x149675){_0xd0b415=_0xd0b415-0x0;var _0x2bdf2c=_0xb2d1[_0xd0b415];return _0x2bdf2c;};'use strict';var _=require('lodash');var util=require(_0x1b2d('0x0'));var moment=require(_0x1b2d('0x1'));var BPromise=require(_0x1b2d('0x2'));var rs=require(_0x1b2d('0x3'));var fs=require('fs');var Redis=require(_0x1b2d('0x4'));var db=require(_0x1b2d('0x5'))['db'];var utils=require('../../config/utils');var logger=require(_0x1b2d('0x6'))(_0x1b2d('0x7'));var config=require(_0x1b2d('0x8'));var jayson=require(_0x1b2d('0x9'));var client=jayson[_0x1b2d('0xa')][_0x1b2d('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x4381c2,_0x3df3dd,_0x2d6dca){return new BPromise(function(_0x2e453e,_0x551623){return client[_0x1b2d('0xc')](_0x4381c2,_0x2d6dca)[_0x1b2d('0xd')](function(_0x56f0b2){logger[_0x1b2d('0xe')](_0x1b2d('0xf'),_0x3df3dd,_0x1b2d('0x10'));logger[_0x1b2d('0x11')](_0x1b2d('0x12'),_0x3df3dd,_0x1b2d('0x10'),JSON[_0x1b2d('0x13')](_0x56f0b2));if(_0x56f0b2['error']){if(_0x56f0b2[_0x1b2d('0x14')][_0x1b2d('0x15')]===0x1f4){logger[_0x1b2d('0x14')](_0x1b2d('0xf'),_0x3df3dd,_0x56f0b2['error'][_0x1b2d('0x16')]);return _0x551623(_0x56f0b2[_0x1b2d('0x14')][_0x1b2d('0x16')]);}logger[_0x1b2d('0x14')](_0x1b2d('0xf'),_0x3df3dd,_0x56f0b2['error'][_0x1b2d('0x16')]);return _0x2e453e(_0x56f0b2[_0x1b2d('0x14')][_0x1b2d('0x16')]);}else{logger[_0x1b2d('0xe')](_0x1b2d('0xf'),_0x3df3dd,'request\x20sent');_0x2e453e(_0x56f0b2[_0x1b2d('0x17')][_0x1b2d('0x16')]);}})['catch'](function(_0x139b8e){logger[_0x1b2d('0x14')](_0x1b2d('0xf'),_0x3df3dd,_0x139b8e);_0x551623(_0x139b8e);});});}exports[_0x1b2d('0x18')]=function(_0x1fca33){var _0x2fdc07=this;return new Promise(function(_0x5782f4,_0x404762){return db['SquareReport'][_0x1b2d('0x19')](_0x1fca33[_0x1b2d('0x1a')],{'raw':_0x1fca33[_0x1b2d('0x1b')]?_0x1fca33[_0x1b2d('0x1b')][_0x1b2d('0x1c')]===undefined?!![]:![]:!![]})[_0x1b2d('0xd')](function(_0x2e310a){logger[_0x1b2d('0xe')](_0x1b2d('0x18'),_0x1fca33);logger[_0x1b2d('0x11')]('CreateSquareReport',_0x1fca33,JSON[_0x1b2d('0x13')](_0x2e310a));_0x5782f4(_0x2e310a);})[_0x1b2d('0x1d')](function(_0x54ea9d){logger[_0x1b2d('0x14')](_0x1b2d('0x18'),_0x54ea9d[_0x1b2d('0x16')],_0x1fca33);_0x404762(_0x2fdc07[_0x1b2d('0x14')](0x1f4,_0x54ea9d['message']));});});};exports[_0x1b2d('0x1e')]=function(_0x12d1b2){var _0x3811de=this;return new Promise(function(_0x58d783,_0xd0849a){return db[_0x1b2d('0x1f')][_0x1b2d('0x20')](_0x12d1b2['body'],{'raw':_0x12d1b2[_0x1b2d('0x1b')]?_0x12d1b2['options'][_0x1b2d('0x1c')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x12d1b2[_0x1b2d('0x1b')]?_0x12d1b2[_0x1b2d('0x1b')]['where']||null:null,'attributes':_0x12d1b2[_0x1b2d('0x1b')]?_0x12d1b2[_0x1b2d('0x1b')][_0x1b2d('0x21')]||null:null,'limit':_0x12d1b2[_0x1b2d('0x1b')]?_0x12d1b2[_0x1b2d('0x1b')]['limit']||null:null})[_0x1b2d('0xd')](function(_0x59ffa){logger[_0x1b2d('0xe')]('UpdateSquareReport',_0x12d1b2);logger['debug'](_0x1b2d('0x1e'),_0x12d1b2,JSON[_0x1b2d('0x13')](_0x59ffa));_0x58d783(_0x59ffa);})['catch'](function(_0x124b44){logger[_0x1b2d('0x14')](_0x1b2d('0x1e'),_0x124b44[_0x1b2d('0x16')],_0x12d1b2);_0xd0849a(_0x3811de[_0x1b2d('0x14')](0x1f4,_0x124b44[_0x1b2d('0x16')]));});});};
\ No newline at end of file
+var _0xbfd8=['CreateSquareReport','UpdateSquareReport','update','body','where','attributes','limit','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','client','request','then','SquareReport,\x20%s,\x20%s','debug','SquareReport,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','code','message','info','result','catch','SquareReport','create','options','raw'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0xbfd8,0x147));var _0x8bfd=function(_0x77c01a,_0x1e1d72){_0x77c01a=_0x77c01a-0x0;var _0x8cfd27=_0xbfd8[_0x77c01a];return _0x8cfd27;};'use strict';var _=require('lodash');var util=require('util');var moment=require('moment');var BPromise=require('bluebird');var rs=require(_0x8bfd('0x0'));var fs=require('fs');var Redis=require(_0x8bfd('0x1'));var db=require(_0x8bfd('0x2'))['db'];var utils=require(_0x8bfd('0x3'));var logger=require(_0x8bfd('0x4'))(_0x8bfd('0x5'));var config=require(_0x8bfd('0x6'));var jayson=require('jayson/promise');var client=jayson[_0x8bfd('0x7')]['http']({'port':0x232a});function respondWithRpcPromise(_0x194ecb,_0x1d3799,_0xa291d){return new BPromise(function(_0x11b6d0,_0x208f07){return client[_0x8bfd('0x8')](_0x194ecb,_0xa291d)[_0x8bfd('0x9')](function(_0x4ccb81){logger['info'](_0x8bfd('0xa'),_0x1d3799,'request\x20sent');logger[_0x8bfd('0xb')](_0x8bfd('0xc'),_0x1d3799,_0x8bfd('0xd'),JSON[_0x8bfd('0xe')](_0x4ccb81));if(_0x4ccb81[_0x8bfd('0xf')]){if(_0x4ccb81['error'][_0x8bfd('0x10')]===0x1f4){logger['error'](_0x8bfd('0xa'),_0x1d3799,_0x4ccb81[_0x8bfd('0xf')]['message']);return _0x208f07(_0x4ccb81[_0x8bfd('0xf')][_0x8bfd('0x11')]);}logger['error']('SquareReport,\x20%s,\x20%s',_0x1d3799,_0x4ccb81['error']['message']);return _0x11b6d0(_0x4ccb81[_0x8bfd('0xf')]['message']);}else{logger[_0x8bfd('0x12')](_0x8bfd('0xa'),_0x1d3799,_0x8bfd('0xd'));_0x11b6d0(_0x4ccb81[_0x8bfd('0x13')][_0x8bfd('0x11')]);}})[_0x8bfd('0x14')](function(_0x1f4513){logger[_0x8bfd('0xf')](_0x8bfd('0xa'),_0x1d3799,_0x1f4513);_0x208f07(_0x1f4513);});});}exports['CreateSquareReport']=function(_0x14c2b4){var _0x275fc0=this;return new Promise(function(_0x522c47,_0x1b2392){return db[_0x8bfd('0x15')][_0x8bfd('0x16')](_0x14c2b4['body'],{'raw':_0x14c2b4[_0x8bfd('0x17')]?_0x14c2b4[_0x8bfd('0x17')][_0x8bfd('0x18')]===undefined?!![]:![]:!![]})[_0x8bfd('0x9')](function(_0x56c2ac){logger[_0x8bfd('0x12')](_0x8bfd('0x19'),_0x14c2b4);logger[_0x8bfd('0xb')](_0x8bfd('0x19'),_0x14c2b4,JSON[_0x8bfd('0xe')](_0x56c2ac));_0x522c47(_0x56c2ac);})[_0x8bfd('0x14')](function(_0x56de7a){logger['error'](_0x8bfd('0x19'),_0x56de7a[_0x8bfd('0x11')],_0x14c2b4);_0x1b2392(_0x275fc0[_0x8bfd('0xf')](0x1f4,_0x56de7a[_0x8bfd('0x11')]));});});};exports[_0x8bfd('0x1a')]=function(_0x2f7221){var _0x2cabf1=this;return new Promise(function(_0x3a1374,_0x35a789){return db['SquareReport'][_0x8bfd('0x1b')](_0x2f7221[_0x8bfd('0x1c')],{'raw':_0x2f7221[_0x8bfd('0x17')]?_0x2f7221[_0x8bfd('0x17')][_0x8bfd('0x18')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x2f7221[_0x8bfd('0x17')]?_0x2f7221[_0x8bfd('0x17')][_0x8bfd('0x1d')]||null:null,'attributes':_0x2f7221[_0x8bfd('0x17')]?_0x2f7221[_0x8bfd('0x17')][_0x8bfd('0x1e')]||null:null,'limit':_0x2f7221['options']?_0x2f7221['options'][_0x8bfd('0x1f')]||null:null})['then'](function(_0x3cab0f){logger[_0x8bfd('0x12')](_0x8bfd('0x1a'),_0x2f7221);logger['debug'](_0x8bfd('0x1a'),_0x2f7221,JSON[_0x8bfd('0xe')](_0x3cab0f));_0x3a1374(_0x3cab0f);})[_0x8bfd('0x14')](function(_0x9ab06a){logger[_0x8bfd('0xf')]('UpdateSquareReport',_0x9ab06a['message'],_0x2f7221);_0x35a789(_0x2cabf1[_0x8bfd('0xf')](0x1f4,_0x9ab06a['message']));});});};
\ No newline at end of file
index 610bcb0..08bb70d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xcbd7=['connect-timeout','express','Router','../../components/auth/service','../../components/interaction/service','../../config/environment','./squareReportDetail.controller','get','index','isAuthenticated','describe','/:id','show','post','create','put','delete','destroy','exports','util','path'];(function(_0x416cdc,_0x213b87){var _0x1931ce=function(_0x1dc762){while(--_0x1dc762){_0x416cdc['push'](_0x416cdc['shift']());}};_0x1931ce(++_0x213b87);}(_0xcbd7,0x1b7));var _0x7cbd=function(_0x363750,_0x454aec){_0x363750=_0x363750-0x0;var _0x185602=_0xcbd7[_0x363750];return _0x185602;};'use strict';var multer=require('multer');var util=require(_0x7cbd('0x0'));var path=require(_0x7cbd('0x1'));var timeout=require(_0x7cbd('0x2'));var express=require(_0x7cbd('0x3'));var router=express[_0x7cbd('0x4')]();var fs_extra=require('fs-extra');var auth=require(_0x7cbd('0x5'));var interaction=require(_0x7cbd('0x6'));var config=require(_0x7cbd('0x7'));var controller=require(_0x7cbd('0x8'));router[_0x7cbd('0x9')]('/',auth['isAuthenticated'](),controller[_0x7cbd('0xa')]);router[_0x7cbd('0x9')]('/describe',auth[_0x7cbd('0xb')](),controller[_0x7cbd('0xc')]);router[_0x7cbd('0x9')](_0x7cbd('0xd'),auth[_0x7cbd('0xb')](),controller[_0x7cbd('0xe')]);router[_0x7cbd('0xf')]('/',auth[_0x7cbd('0xb')](),controller[_0x7cbd('0x10')]);router[_0x7cbd('0x11')](_0x7cbd('0xd'),auth[_0x7cbd('0xb')](),controller['update']);router[_0x7cbd('0x12')]('/:id',auth[_0x7cbd('0xb')](),controller[_0x7cbd('0x13')]);module[_0x7cbd('0x14')]=router;
\ No newline at end of file
+var _0x8fc1=['util','connect-timeout','express','Router','fs-extra','../../components/auth/service','./squareReportDetail.controller','get','isAuthenticated','index','/describe','describe','/:id','post','put','delete','destroy','exports','multer'];(function(_0x30d083,_0x3d2fab){var _0x2376b2=function(_0x258d87){while(--_0x258d87){_0x30d083['push'](_0x30d083['shift']());}};_0x2376b2(++_0x3d2fab);}(_0x8fc1,0x17b));var _0x18fc=function(_0x5e3cce,_0x2142f4){_0x5e3cce=_0x5e3cce-0x0;var _0x2786ee=_0x8fc1[_0x5e3cce];return _0x2786ee;};'use strict';var multer=require(_0x18fc('0x0'));var util=require(_0x18fc('0x1'));var path=require('path');var timeout=require(_0x18fc('0x2'));var express=require(_0x18fc('0x3'));var router=express[_0x18fc('0x4')]();var fs_extra=require(_0x18fc('0x5'));var auth=require(_0x18fc('0x6'));var interaction=require('../../components/interaction/service');var config=require('../../config/environment');var controller=require(_0x18fc('0x7'));router[_0x18fc('0x8')]('/',auth[_0x18fc('0x9')](),controller[_0x18fc('0xa')]);router[_0x18fc('0x8')](_0x18fc('0xb'),auth['isAuthenticated'](),controller[_0x18fc('0xc')]);router[_0x18fc('0x8')](_0x18fc('0xd'),auth['isAuthenticated'](),controller['show']);router[_0x18fc('0xe')]('/',auth[_0x18fc('0x9')](),controller['create']);router[_0x18fc('0xf')](_0x18fc('0xd'),auth['isAuthenticated'](),controller['update']);router[_0x18fc('0x10')](_0x18fc('0xd'),auth['isAuthenticated'](),controller[_0x18fc('0x11')]);module[_0x18fc('0x12')]=router;
\ No newline at end of file
index 8d81214..0ddcc82 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4505=['sequelize','exports','STRING','TEXT'];(function(_0x1ac595,_0x5d2081){var _0x455fff=function(_0x3043ee){while(--_0x3043ee){_0x1ac595['push'](_0x1ac595['shift']());}};_0x455fff(++_0x5d2081);}(_0x4505,0x78));var _0x5450=function(_0x363ef8,_0x4ecb1a){_0x363ef8=_0x363ef8-0x0;var _0x148822=_0x4505[_0x363ef8];return _0x148822;};'use strict';var Sequelize=require(_0x5450('0x0'));module[_0x5450('0x1')]={'uniqueid':{'type':Sequelize[_0x5450('0x2')]},'node':{'type':Sequelize['STRING']},'application':{'type':Sequelize[_0x5450('0x2')]},'data':{'type':Sequelize[_0x5450('0x3')]},'project_name':{'type':Sequelize[_0x5450('0x2')]},'callerid':{'type':Sequelize[_0x5450('0x2')]}};
\ No newline at end of file
+var _0xdace=['STRING','sequelize'];(function(_0x36436d,_0x20292c){var _0x34615d=function(_0x5447af){while(--_0x5447af){_0x36436d['push'](_0x36436d['shift']());}};_0x34615d(++_0x20292c);}(_0xdace,0xc5));var _0xedac=function(_0x234ae1,_0x42bdd6){_0x234ae1=_0x234ae1-0x0;var _0x227ba0=_0xdace[_0x234ae1];return _0x227ba0;};'use strict';var Sequelize=require(_0xedac('0x0'));module['exports']={'uniqueid':{'type':Sequelize[_0xedac('0x1')]},'node':{'type':Sequelize[_0xedac('0x1')]},'application':{'type':Sequelize[_0xedac('0x1')]},'data':{'type':Sequelize['TEXT']},'project_name':{'type':Sequelize[_0xedac('0x1')]},'callerid':{'type':Sequelize[_0xedac('0x1')]}};
\ No newline at end of file
index d04aa79..c7489c0 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','SquareDetailsReport','rawAttributes','fieldName','key','model','map','query','keys','filters','intersection','fields','attributes','length','hasOwnProperty','nolimit','sort','where','filter','merge'];(function(_0x5a3cf0,_0x160a68){var _0x5a64ee=function(_0x34cd1d){while(--_0x34cd1d){_0x5a3cf0['push'](_0x5a3cf0['shift']());}};_0x5a64ee(++_0x160a68);}(_0xa9e0,0x123));var _0x0a9e=function(_0x5447fd,_0x52a6b5){_0x5447fd=_0x5447fd-0x0;var _0x15b28a=_0xa9e0[_0x5447fd];return _0x15b28a;};'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['SquareDetailsReport'][_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 _0x446f=['undefined','limit','count','offset','set','apply','reject','update','then','destroy','error','stack','name','map','type','key','model','query','keys','attributes','fields','length','hasOwnProperty','nolimit','sort','where','pick','filters','filter','merge','VIRTUAL','options','includeAll','findAll','rows','catch','show','params','SquareDetailsReport','rawAttributes','intersection','include','create','body','find','describe','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','to-csv','fs-extra','lodash','squel','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','api','../../config/license/util','../../mysqldb','sendStatus','end','status','json'];(function(_0xd50f7d,_0x431488){var _0x1af670=function(_0x980e5b){while(--_0x980e5b){_0xd50f7d['push'](_0xd50f7d['shift']());}};_0x1af670(++_0x431488);}(_0x446f,0x1aa));var _0xf446=function(_0x1abded,_0xd2b6ef){_0x1abded=_0x1abded-0x0;var _0x2ed35a=_0x446f[_0x1abded];return _0x2ed35a;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0xf446('0x0'));var zipdir=require(_0xf446('0x1'));var jsonpatch=require(_0xf446('0x2'));var rp=require(_0xf446('0x3'));var moment=require(_0xf446('0x4'));var BPromise=require(_0xf446('0x5'));var Mustache=require(_0xf446('0x6'));var util=require(_0xf446('0x7'));var path=require(_0xf446('0x8'));var sox=require('sox');var csv=require(_0xf446('0x9'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0xf446('0xa'));var _=require(_0xf446('0xb'));var squel=require(_0xf446('0xc'));var crypto=require(_0xf446('0xd'));var jsforce=require(_0xf446('0xe'));var deskjs=require(_0xf446('0xf'));var toCsv=require(_0xf446('0x9'));var querystring=require(_0xf446('0x10'));var Papa=require(_0xf446('0x11'));var Redis=require(_0xf446('0x12'));var authService=require(_0xf446('0x13'));var qs=require(_0xf446('0x14'));var as=require(_0xf446('0x15'));var hardwareService=require('../../config/license/hardware');var logger=require(_0xf446('0x16'))(_0xf446('0x17'));var utils=require('../../config/utils');var config=require('../../config/environment');var licenseUtil=require(_0xf446('0x18'));var db=require(_0xf446('0x19'))['db'];function respondWithStatusCode(_0x500836,_0x544a60){_0x544a60=_0x544a60||0xcc;return function(_0x466b6d){if(_0x466b6d){return _0x500836[_0xf446('0x1a')](_0x544a60);}return _0x500836['status'](_0x544a60)[_0xf446('0x1b')]();};}function respondWithResult(_0x1cfe92,_0x345419){_0x345419=_0x345419||0xc8;return function(_0x24cc22){if(_0x24cc22){return _0x1cfe92[_0xf446('0x1c')](_0x345419)[_0xf446('0x1d')](_0x24cc22);}};}function respondWithFilteredResult(_0x54d596,_0x2bb33e){return function(_0x29d6fa){if(_0x29d6fa){var _0x3a7d04=typeof _0x2bb33e['offset']===_0xf446('0x1e')&&typeof _0x2bb33e[_0xf446('0x1f')]===_0xf446('0x1e');var _0x10a19d=_0x29d6fa[_0xf446('0x20')];var _0x260a53=_0x3a7d04?0x0:_0x2bb33e['offset'];var _0x1b8d4d=_0x3a7d04?_0x29d6fa[_0xf446('0x20')]:_0x2bb33e[_0xf446('0x21')]+_0x2bb33e['limit'];var _0x553331;if(_0x1b8d4d>=_0x10a19d){_0x1b8d4d=_0x10a19d;_0x553331=0xc8;}else{_0x553331=0xce;}_0x54d596['status'](_0x553331);return _0x54d596[_0xf446('0x22')]('Content-Range',_0x260a53+'-'+_0x1b8d4d+'/'+_0x10a19d)[_0xf446('0x1d')](_0x29d6fa);}return null;};}function patchUpdates(_0x586bae){return function(_0x382eba){try{jsonpatch[_0xf446('0x23')](_0x382eba,_0x586bae,!![]);}catch(_0x2a60ab){return BPromise[_0xf446('0x24')](_0x2a60ab);}return _0x382eba['save']();};}function saveUpdates(_0x45d771,_0x344311){return function(_0x33564d){if(_0x33564d){return _0x33564d[_0xf446('0x25')](_0x45d771)[_0xf446('0x26')](function(_0x2c1d27){return _0x2c1d27;});}return null;};}function removeEntity(_0x1de30e,_0xd7b720){return function(_0x527c8a){if(_0x527c8a){return _0x527c8a[_0xf446('0x27')]()[_0xf446('0x26')](function(){_0x1de30e['status'](0xcc)[_0xf446('0x1b')]();});}};}function handleEntityNotFound(_0x3feef0,_0x5d6b7b){return function(_0x50cc48){if(!_0x50cc48){_0x3feef0['sendStatus'](0x194);}return _0x50cc48;};}function handleError(_0x123e26,_0x19b76d){_0x19b76d=_0x19b76d||0x1f4;return function(_0x1a7437){logger[_0xf446('0x28')](_0x1a7437[_0xf446('0x29')]);if(_0x1a7437[_0xf446('0x2a')]){delete _0x1a7437[_0xf446('0x2a')];}_0x123e26[_0xf446('0x1c')](_0x19b76d)['send'](_0x1a7437);};}exports['index']=function(_0x478966,_0x1c92dd){var _0x1fefc4={},_0x4bc331={},_0x20dbd7={'count':0x0,'rows':[]};var _0x2a00af=_[_0xf446('0x2b')](db['SquareDetailsReport']['rawAttributes'],function(_0x3f1d93){return{'name':_0x3f1d93['fieldName'],'type':_0x3f1d93[_0xf446('0x2c')][_0xf446('0x2d')]};});_0x4bc331[_0xf446('0x2e')]=_[_0xf446('0x2b')](_0x2a00af,_0xf446('0x2a'));_0x4bc331[_0xf446('0x2f')]=_[_0xf446('0x30')](_0x478966[_0xf446('0x2f')]);_0x4bc331['filters']=_['intersection'](_0x4bc331[_0xf446('0x2e')],_0x4bc331['query']);_0x1fefc4[_0xf446('0x31')]=_['intersection'](_0x4bc331[_0xf446('0x2e')],qs['fields'](_0x478966[_0xf446('0x2f')][_0xf446('0x32')]));_0x1fefc4['attributes']=_0x1fefc4['attributes'][_0xf446('0x33')]?_0x1fefc4[_0xf446('0x31')]:_0x4bc331['model'];if(!_0x478966['query'][_0xf446('0x34')](_0xf446('0x35'))){_0x1fefc4[_0xf446('0x1f')]=qs[_0xf446('0x1f')](_0x478966[_0xf446('0x2f')][_0xf446('0x1f')]);_0x1fefc4[_0xf446('0x21')]=qs[_0xf446('0x21')](_0x478966[_0xf446('0x2f')][_0xf446('0x21')]);}_0x1fefc4['order']=qs[_0xf446('0x36')](_0x478966['query'][_0xf446('0x36')]);_0x1fefc4[_0xf446('0x37')]=qs['filters'](_[_0xf446('0x38')](_0x478966[_0xf446('0x2f')],_0x4bc331[_0xf446('0x39')]),_0x2a00af);if(_0x478966[_0xf446('0x2f')][_0xf446('0x3a')]){_0x1fefc4[_0xf446('0x37')]=_[_0xf446('0x3b')](_0x1fefc4[_0xf446('0x37')],{'$or':_[_0xf446('0x2b')](_0x2a00af,function(_0x2db846){if(_0x2db846[_0xf446('0x2c')]!==_0xf446('0x3c')){var _0x23717b={};_0x23717b[_0x2db846[_0xf446('0x2a')]]={'$like':'%'+_0x478966['query']['filter']+'%'};return _0x23717b;}})});}_0x1fefc4=_['merge']({},_0x1fefc4,_0x478966[_0xf446('0x3d')]);var _0x3ac053={'where':_0x1fefc4[_0xf446('0x37')]};return db['SquareDetailsReport']['count'](_0x3ac053)[_0xf446('0x26')](function(_0x3cf9f7){_0x20dbd7[_0xf446('0x20')]=_0x3cf9f7;if(_0x478966[_0xf446('0x2f')][_0xf446('0x3e')]){_0x1fefc4['include']=[{'all':!![]}];}return db['SquareDetailsReport'][_0xf446('0x3f')](_0x1fefc4);})[_0xf446('0x26')](function(_0x1409f9){_0x20dbd7[_0xf446('0x40')]=_0x1409f9;return _0x20dbd7;})[_0xf446('0x26')](respondWithFilteredResult(_0x1c92dd,_0x1fefc4))[_0xf446('0x41')](handleError(_0x1c92dd,null));};exports[_0xf446('0x42')]=function(_0x4081ec,_0x580418){var _0x56b7d6={'raw':!![],'where':{'id':_0x4081ec[_0xf446('0x43')]['id']}},_0x5e5355={};_0x5e5355['model']=_['keys'](db[_0xf446('0x44')][_0xf446('0x45')]);_0x5e5355[_0xf446('0x2f')]=_['keys'](_0x4081ec[_0xf446('0x2f')]);_0x5e5355['filters']=_[_0xf446('0x46')](_0x5e5355[_0xf446('0x2e')],_0x5e5355[_0xf446('0x2f')]);_0x56b7d6[_0xf446('0x31')]=_['intersection'](_0x5e5355[_0xf446('0x2e')],qs[_0xf446('0x32')](_0x4081ec['query'][_0xf446('0x32')]));_0x56b7d6[_0xf446('0x31')]=_0x56b7d6[_0xf446('0x31')][_0xf446('0x33')]?_0x56b7d6[_0xf446('0x31')]:_0x5e5355[_0xf446('0x2e')];if(_0x4081ec[_0xf446('0x2f')][_0xf446('0x3e')]){_0x56b7d6[_0xf446('0x47')]=[{'all':!![]}];}_0x56b7d6=_[_0xf446('0x3b')]({},_0x56b7d6,_0x4081ec['options']);return db[_0xf446('0x44')]['find'](_0x56b7d6)[_0xf446('0x26')](handleEntityNotFound(_0x580418,null))[_0xf446('0x26')](respondWithResult(_0x580418,null))[_0xf446('0x41')](handleError(_0x580418,null));};exports['create']=function(_0x3009b1,_0x5ebbbb){return db[_0xf446('0x44')][_0xf446('0x48')](_0x3009b1[_0xf446('0x49')],{})[_0xf446('0x26')](respondWithResult(_0x5ebbbb,0xc9))['catch'](handleError(_0x5ebbbb,null));};exports['update']=function(_0x5c22c5,_0x356fde){if(_0x5c22c5[_0xf446('0x49')]['id']){delete _0x5c22c5[_0xf446('0x49')]['id'];}return db['SquareDetailsReport']['find']({'where':{'id':_0x5c22c5['params']['id']}})['then'](handleEntityNotFound(_0x356fde,null))[_0xf446('0x26')](saveUpdates(_0x5c22c5[_0xf446('0x49')],null))[_0xf446('0x26')](respondWithResult(_0x356fde,null))[_0xf446('0x41')](handleError(_0x356fde,null));};exports[_0xf446('0x27')]=function(_0x249cab,_0x56e3da){return db[_0xf446('0x44')][_0xf446('0x4a')]({'where':{'id':_0x249cab[_0xf446('0x43')]['id']}})[_0xf446('0x26')](handleEntityNotFound(_0x56e3da,null))[_0xf446('0x26')](removeEntity(_0x56e3da,null))[_0xf446('0x41')](handleError(_0x56e3da,null));};exports[_0xf446('0x4b')]=function(_0x2b09f4,_0x15af83){return db[_0xf446('0x44')][_0xf446('0x4b')]()[_0xf446('0x26')](respondWithResult(_0x15af83,null))['catch'](handleError(_0x15af83,null));};
\ No newline at end of file
index d145937..b8cd02b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1df0=['SquareDetailsReport','report_square_details','lodash','../../config/logger','api','path','../../config/environment','./squareReportDetail.attributes','define'];(function(_0x4e5c4d,_0x133f95){var _0x4364fc=function(_0x241a88){while(--_0x241a88){_0x4e5c4d['push'](_0x4e5c4d['shift']());}};_0x4364fc(++_0x133f95);}(_0x1df0,0x119));var _0x01df=function(_0x36eaaa,_0x326732){_0x36eaaa=_0x36eaaa-0x0;var _0x461349=_0x1df0[_0x36eaaa];return _0x461349;};'use strict';var _=require(_0x01df('0x0'));var util=require('util');var logger=require(_0x01df('0x1'))(_0x01df('0x2'));var moment=require('moment');var BPromise=require('bluebird');var rp=require('request-promise');var fs=require('fs');var path=require(_0x01df('0x3'));var rimraf=require('rimraf');var config=require(_0x01df('0x4'));var attributes=require(_0x01df('0x5'));module['exports']=function(_0x480b86,_0x2c725a){return _0x480b86[_0x01df('0x6')](_0x01df('0x7'),attributes,{'tableName':_0x01df('0x8'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x860a=['bluebird','path','rimraf','../../config/environment','./squareReportDetail.attributes','exports','define','report_square_details','../../config/logger','api','moment'];(function(_0xeee53b,_0x448722){var _0x1067c6=function(_0x40801b){while(--_0x40801b){_0xeee53b['push'](_0xeee53b['shift']());}};_0x1067c6(++_0x448722);}(_0x860a,0x1e1));var _0xa860=function(_0x22e62a,_0x1ac163){_0x22e62a=_0x22e62a-0x0;var _0x5c7348=_0x860a[_0x22e62a];return _0x5c7348;};'use strict';var _=require('lodash');var util=require('util');var logger=require(_0xa860('0x0'))(_0xa860('0x1'));var moment=require(_0xa860('0x2'));var BPromise=require(_0xa860('0x3'));var rp=require('request-promise');var fs=require('fs');var path=require(_0xa860('0x4'));var rimraf=require(_0xa860('0x5'));var config=require(_0xa860('0x6'));var attributes=require(_0xa860('0x7'));module[_0xa860('0x8')]=function(_0x2bd5b0,_0xd47062){return _0x2bd5b0[_0xa860('0x9')]('SquareDetailsReport',attributes,{'tableName':_0xa860('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index d9de081..959407c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6cb4=['raw','then','CreateSquareDetailsReport','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','../../config/environment','client','request','info','request\x20sent','debug','stringify','error','SquareDetailsReport,\x20%s,\x20%s','message','result','catch','SquareDetailsReport','create','body','options'];(function(_0x47b58b,_0x41a189){var _0x46bebe=function(_0x22bbfa){while(--_0x22bbfa){_0x47b58b['push'](_0x47b58b['shift']());}};_0x46bebe(++_0x41a189);}(_0x6cb4,0xff));var _0x46cb=function(_0x269027,_0x22a5c7){_0x269027=_0x269027-0x0;var _0x304464=_0x6cb4[_0x269027];return _0x304464;};'use strict';var _=require(_0x46cb('0x0'));var util=require(_0x46cb('0x1'));var moment=require(_0x46cb('0x2'));var BPromise=require(_0x46cb('0x3'));var rs=require(_0x46cb('0x4'));var fs=require('fs');var Redis=require(_0x46cb('0x5'));var db=require(_0x46cb('0x6'))['db'];var utils=require(_0x46cb('0x7'));var logger=require(_0x46cb('0x8'))('rpc');var config=require(_0x46cb('0x9'));var jayson=require('jayson/promise');var client=jayson[_0x46cb('0xa')]['http']({'port':0x232a});function respondWithRpcPromise(_0x11262d,_0x148d0f,_0x31b35b){return new BPromise(function(_0x2d6c29,_0x24b4f5){return client[_0x46cb('0xb')](_0x11262d,_0x31b35b)['then'](function(_0x3d7663){logger[_0x46cb('0xc')]('SquareDetailsReport,\x20%s,\x20%s',_0x148d0f,_0x46cb('0xd'));logger[_0x46cb('0xe')]('SquareDetailsReport,\x20%s,\x20%s,\x20%s',_0x148d0f,_0x46cb('0xd'),JSON[_0x46cb('0xf')](_0x3d7663));if(_0x3d7663['error']){if(_0x3d7663['error']['code']===0x1f4){logger[_0x46cb('0x10')](_0x46cb('0x11'),_0x148d0f,_0x3d7663[_0x46cb('0x10')][_0x46cb('0x12')]);return _0x24b4f5(_0x3d7663['error'][_0x46cb('0x12')]);}logger[_0x46cb('0x10')](_0x46cb('0x11'),_0x148d0f,_0x3d7663[_0x46cb('0x10')][_0x46cb('0x12')]);return _0x2d6c29(_0x3d7663[_0x46cb('0x10')][_0x46cb('0x12')]);}else{logger[_0x46cb('0xc')](_0x46cb('0x11'),_0x148d0f,_0x46cb('0xd'));_0x2d6c29(_0x3d7663[_0x46cb('0x13')]['message']);}})[_0x46cb('0x14')](function(_0x5796d2){logger[_0x46cb('0x10')]('SquareDetailsReport,\x20%s,\x20%s',_0x148d0f,_0x5796d2);_0x24b4f5(_0x5796d2);});});}exports['CreateSquareDetailsReport']=function(_0x4e3454){var _0x1b6646=this;return new Promise(function(_0x1f2891,_0x4df1f0){return db[_0x46cb('0x15')][_0x46cb('0x16')](_0x4e3454[_0x46cb('0x17')],{'raw':_0x4e3454[_0x46cb('0x18')]?_0x4e3454[_0x46cb('0x18')][_0x46cb('0x19')]===undefined?!![]:![]:!![]})[_0x46cb('0x1a')](function(_0x149483){logger[_0x46cb('0xc')](_0x46cb('0x1b'),_0x4e3454);logger[_0x46cb('0xe')](_0x46cb('0x1b'),_0x4e3454,JSON[_0x46cb('0xf')](_0x149483));_0x1f2891(_0x149483);})[_0x46cb('0x14')](function(_0x1fb467){logger[_0x46cb('0x10')](_0x46cb('0x1b'),_0x1fb467[_0x46cb('0x12')],_0x4e3454);_0x4df1f0(_0x1b6646[_0x46cb('0x10')](0x1f4,_0x1fb467[_0x46cb('0x12')]));});});};
\ No newline at end of file
+var _0xe493=['randomstring','../../mysqldb','../../config/utils','rpc','jayson/promise','client','http','then','info','SquareDetailsReport,\x20%s,\x20%s','request\x20sent','debug','SquareDetailsReport,\x20%s,\x20%s,\x20%s','stringify','error','message','result','catch','CreateSquareDetailsReport','create','options','raw','lodash','util','moment','bluebird'];(function(_0x2e2eb0,_0x56c247){var _0x4aed3c=function(_0xaa2502){while(--_0xaa2502){_0x2e2eb0['push'](_0x2e2eb0['shift']());}};_0x4aed3c(++_0x56c247);}(_0xe493,0x7e));var _0x3e49=function(_0x49c7f7,_0x22dc85){_0x49c7f7=_0x49c7f7-0x0;var _0x34a6c3=_0xe493[_0x49c7f7];return _0x34a6c3;};'use strict';var _=require(_0x3e49('0x0'));var util=require(_0x3e49('0x1'));var moment=require(_0x3e49('0x2'));var BPromise=require(_0x3e49('0x3'));var rs=require(_0x3e49('0x4'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x3e49('0x5'))['db'];var utils=require(_0x3e49('0x6'));var logger=require('../../config/logger')(_0x3e49('0x7'));var config=require('../../config/environment');var jayson=require(_0x3e49('0x8'));var client=jayson[_0x3e49('0x9')][_0x3e49('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x3f7821,_0x12dd84,_0x3626b6){return new BPromise(function(_0x4e96ac,_0x56b767){return client['request'](_0x3f7821,_0x3626b6)[_0x3e49('0xb')](function(_0x8b8c0e){logger[_0x3e49('0xc')](_0x3e49('0xd'),_0x12dd84,_0x3e49('0xe'));logger[_0x3e49('0xf')](_0x3e49('0x10'),_0x12dd84,_0x3e49('0xe'),JSON[_0x3e49('0x11')](_0x8b8c0e));if(_0x8b8c0e[_0x3e49('0x12')]){if(_0x8b8c0e[_0x3e49('0x12')]['code']===0x1f4){logger[_0x3e49('0x12')](_0x3e49('0xd'),_0x12dd84,_0x8b8c0e['error'][_0x3e49('0x13')]);return _0x56b767(_0x8b8c0e[_0x3e49('0x12')]['message']);}logger[_0x3e49('0x12')](_0x3e49('0xd'),_0x12dd84,_0x8b8c0e['error'][_0x3e49('0x13')]);return _0x4e96ac(_0x8b8c0e[_0x3e49('0x12')][_0x3e49('0x13')]);}else{logger[_0x3e49('0xc')](_0x3e49('0xd'),_0x12dd84,_0x3e49('0xe'));_0x4e96ac(_0x8b8c0e[_0x3e49('0x14')][_0x3e49('0x13')]);}})[_0x3e49('0x15')](function(_0x1d9cce){logger[_0x3e49('0x12')](_0x3e49('0xd'),_0x12dd84,_0x1d9cce);_0x56b767(_0x1d9cce);});});}exports[_0x3e49('0x16')]=function(_0x3ae5f4){var _0x448c36=this;return new Promise(function(_0x4e1cdf,_0xf33205){return db['SquareDetailsReport'][_0x3e49('0x17')](_0x3ae5f4['body'],{'raw':_0x3ae5f4[_0x3e49('0x18')]?_0x3ae5f4['options'][_0x3e49('0x19')]===undefined?!![]:![]:!![]})[_0x3e49('0xb')](function(_0x420d7b){logger['info'](_0x3e49('0x16'),_0x3ae5f4);logger['debug'](_0x3e49('0x16'),_0x3ae5f4,JSON[_0x3e49('0x11')](_0x420d7b));_0x4e1cdf(_0x420d7b);})[_0x3e49('0x15')](function(_0x5e0f1d){logger['error'](_0x3e49('0x16'),_0x5e0f1d['message'],_0x3ae5f4);_0xf33205(_0x448c36[_0x3e49('0x12')](0x1f4,_0x5e0f1d[_0x3e49('0x13')]));});});};
\ No newline at end of file
index 8660640..a221595 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9196=['killProcess','exports','Router','get','isAuthenticated','index','/process/:pid/kill'];(function(_0x3181e4,_0x26451d){var _0x205922=function(_0x89abaa){while(--_0x89abaa){_0x3181e4['push'](_0x3181e4['shift']());}};_0x205922(++_0x26451d);}(_0x9196,0x128));var _0x6919=function(_0x456b57,_0x58691a){_0x456b57=_0x456b57-0x0;var _0x18f49f=_0x9196[_0x456b57];return _0x18f49f;};'use strict';var express=require('express');var router=express[_0x6919('0x0')]();var auth=require('../../components/auth/service');var controller=require('./system.controller');router[_0x6919('0x1')]('/',auth[_0x6919('0x2')](),controller[_0x6919('0x3')]);router[_0x6919('0x1')](_0x6919('0x4'),auth[_0x6919('0x2')](),controller[_0x6919('0x5')]);module[_0x6919('0x6')]=router;
\ No newline at end of file
+var _0xaa5f=['express','Router','./system.controller','get','/process/:pid/kill','killProcess','exports'];(function(_0x4fde08,_0x463a36){var _0x12e725=function(_0x2670c5){while(--_0x2670c5){_0x4fde08['push'](_0x4fde08['shift']());}};_0x12e725(++_0x463a36);}(_0xaa5f,0x1a4));var _0xfaa5=function(_0x1cd626,_0xc06b5a){_0x1cd626=_0x1cd626-0x0;var _0x2352e7=_0xaa5f[_0x1cd626];return _0x2352e7;};'use strict';var express=require(_0xfaa5('0x0'));var router=express[_0xfaa5('0x1')]();var auth=require('../../components/auth/service');var controller=require(_0xfaa5('0x2'));router['get']('/',auth['isAuthenticated'](),controller['index']);router[_0xfaa5('0x3')](_0xfaa5('0x4'),auth['isAuthenticated'](),controller[_0xfaa5('0x5')]);module[_0xfaa5('0x6')]=router;
\ No newline at end of file
index e0d38ef..b67cf20 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xda44=['<%-\x20name\x20%>,\x20%s,\x20%s,\x20%s','inspect','name','send','index','getAllData','status','json','killProcess','components/import/cm','format','params','pid','then','split','Process\x20with\x20pid\x20%s\x20not\x20found!','kill','catch','systeminformation','child_process','exec','../../config/logger','api','util','lodash'];(function(_0x3aac84,_0x51454b){var _0x3b9c71=function(_0x220df5){while(--_0x220df5){_0x3aac84['push'](_0x3aac84['shift']());}};_0x3b9c71(++_0x51454b);}(_0xda44,0x76));var _0x4da4=function(_0x3e5086,_0x48f4a2){_0x3e5086=_0x3e5086-0x0;var _0xfeb102=_0xda44[_0x3e5086];return _0xfeb102;};'use strict';var info=require(_0x4da4('0x0'));var exec=require(_0x4da4('0x1'))[_0x4da4('0x2')];var logger=require(_0x4da4('0x3'))(_0x4da4('0x4'));var util=require(_0x4da4('0x5'));var BPromise=require('bluebird');var _=require(_0x4da4('0x6'));function handleError(_0xc935c6,_0x42fdc2,_0x3c8832){_0x42fdc2=_0x42fdc2||0x1f4;return function(_0x26be4d){logger['error'](_0x4da4('0x7'),_0x3c8832,_0x42fdc2,util[_0x4da4('0x8')](_0x26be4d,{'showHidden':![],'depth':null}));delete _0x26be4d[_0x4da4('0x9')];_0xc935c6['status'](_0x42fdc2)[_0x4da4('0xa')](_0x26be4d);};}exports[_0x4da4('0xb')]=function(_0x344e9a,_0x2a4e79){return info[_0x4da4('0xc')]()['then'](function(_0x2b0891){return _0x2a4e79[_0x4da4('0xd')](0xc8)[_0x4da4('0xe')](_0x2b0891);})['catch'](function(_0x3513d8){return _0x2a4e79[_0x4da4('0xd')](0x1f4)[_0x4da4('0xe')](_0x3513d8);});};exports[_0x4da4('0xf')]=function(_0x1e1a7d,_0x151c23){var _0x59b9d3=[_0x4da4('0x10')];return new BPromise(function(_0x45292c,_0xcda715){return exec(util[_0x4da4('0x11')]('ps\x20-p\x20%s\x20-ww\x20-o\x20args',_0x1e1a7d[_0x4da4('0x12')][_0x4da4('0x13')]),function(_0x28a2cf,_0x49c0e0,_0x509dad){if(_0x28a2cf){return _0xcda715(_0x28a2cf);}return _0x45292c(_0x49c0e0);});})[_0x4da4('0x14')](function(_0x495c96){var _0x5dc841=![];var _0x22cdc9=_0x495c96[_0x4da4('0x15')](/\n/);for(var _0x25efad=0x0,_0x138092=_0x59b9d3['length'];_0x25efad<_0x138092,_0x5dc841===![];_0x25efad+=0x1){if(_0x495c96['indexOf'](_0x59b9d3[_0x25efad])>=0x0){_0x5dc841=!![];}}if(!_0x5dc841){throw new Error(util[_0x4da4('0x11')](_0x4da4('0x16'),_0x1e1a7d[_0x4da4('0x12')][_0x4da4('0x13')]));}process[_0x4da4('0x17')](_0x1e1a7d['params']['pid'],'SIGINT');return _0x151c23['status'](0xc8)[_0x4da4('0xe')]({'message':util['format']('Process\x20with\x20pid\x20%s\x20killed\x20correctly',_0x1e1a7d['params'][_0x4da4('0x13')])});})[_0x4da4('0x18')](handleError(_0x151c23,null,_0x4da4('0xf')));};
\ No newline at end of file
+var _0x2730=['pid','split','length','indexOf','format','Process\x20with\x20pid\x20%s\x20not\x20found!','params','kill','SIGINT','Process\x20with\x20pid\x20%s\x20killed\x20correctly','child_process','exec','../../config/logger','util','bluebird','lodash','error','<%-\x20name\x20%>,\x20%s,\x20%s,\x20%s','inspect','name','send','index','getAllData','then','status','catch','json','killProcess','components/import/cm','ps\x20-p\x20%s\x20-ww\x20-o\x20args'];(function(_0x2bb3f6,_0x25fde0){var _0x62b339=function(_0x53e014){while(--_0x53e014){_0x2bb3f6['push'](_0x2bb3f6['shift']());}};_0x62b339(++_0x25fde0);}(_0x2730,0x1cc));var _0x0273=function(_0x4565bf,_0x5ad9d6){_0x4565bf=_0x4565bf-0x0;var _0x5610ba=_0x2730[_0x4565bf];return _0x5610ba;};'use strict';var info=require('systeminformation');var exec=require(_0x0273('0x0'))[_0x0273('0x1')];var logger=require(_0x0273('0x2'))('api');var util=require(_0x0273('0x3'));var BPromise=require(_0x0273('0x4'));var _=require(_0x0273('0x5'));function handleError(_0x4fed32,_0x449163,_0x1feded){_0x449163=_0x449163||0x1f4;return function(_0x7a7739){logger[_0x0273('0x6')](_0x0273('0x7'),_0x1feded,_0x449163,util[_0x0273('0x8')](_0x7a7739,{'showHidden':![],'depth':null}));delete _0x7a7739[_0x0273('0x9')];_0x4fed32['status'](_0x449163)[_0x0273('0xa')](_0x7a7739);};}exports[_0x0273('0xb')]=function(_0x22ed5a,_0x223e58){return info[_0x0273('0xc')]()[_0x0273('0xd')](function(_0x21291f){return _0x223e58[_0x0273('0xe')](0xc8)['json'](_0x21291f);})[_0x0273('0xf')](function(_0x91aa85){return _0x223e58[_0x0273('0xe')](0x1f4)[_0x0273('0x10')](_0x91aa85);});};exports[_0x0273('0x11')]=function(_0x3ccdd1,_0x274e22){var _0xca6868=[_0x0273('0x12')];return new BPromise(function(_0x1036ac,_0x153bc9){return exec(util['format'](_0x0273('0x13'),_0x3ccdd1['params'][_0x0273('0x14')]),function(_0x127eb4,_0x914ee0,_0x28dafb){if(_0x127eb4){return _0x153bc9(_0x127eb4);}return _0x1036ac(_0x914ee0);});})['then'](function(_0xd0e8e1){var _0x267e5c=![];var _0x253c08=_0xd0e8e1[_0x0273('0x15')](/\n/);for(var _0xad57e0=0x0,_0x310713=_0xca6868[_0x0273('0x16')];_0xad57e0<_0x310713,_0x267e5c===![];_0xad57e0+=0x1){if(_0xd0e8e1[_0x0273('0x17')](_0xca6868[_0xad57e0])>=0x0){_0x267e5c=!![];}}if(!_0x267e5c){throw new Error(util[_0x0273('0x18')](_0x0273('0x19'),_0x3ccdd1[_0x0273('0x1a')]['pid']));}process[_0x0273('0x1b')](_0x3ccdd1[_0x0273('0x1a')][_0x0273('0x14')],_0x0273('0x1c'));return _0x274e22[_0x0273('0xe')](0xc8)[_0x0273('0x10')]({'message':util[_0x0273('0x18')](_0x0273('0x1d'),_0x3ccdd1[_0x0273('0x1a')][_0x0273('0x14')])});})['catch'](handleError(_0x274e22,null,_0x0273('0x11')));};
\ No newline at end of file
index a763387..ade9272 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7ace=['create','put','update','destroy','exports','multer','util','path','connect-timeout','express','Router','fs-extra','./tag.controller','get','isAuthenticated','index','/:id','show','post'];(function(_0x3355c0,_0x4b530b){var _0x5a3288=function(_0x46dad1){while(--_0x46dad1){_0x3355c0['push'](_0x3355c0['shift']());}};_0x5a3288(++_0x4b530b);}(_0x7ace,0xd6));var _0xe7ac=function(_0x3e5086,_0x48f4a2){_0x3e5086=_0x3e5086-0x0;var _0xfeb102=_0x7ace[_0x3e5086];return _0xfeb102;};'use strict';var multer=require(_0xe7ac('0x0'));var util=require(_0xe7ac('0x1'));var path=require(_0xe7ac('0x2'));var timeout=require(_0xe7ac('0x3'));var express=require(_0xe7ac('0x4'));var router=express[_0xe7ac('0x5')]();var fs_extra=require(_0xe7ac('0x6'));var auth=require('../../components/auth/service');var interaction=require('../../components/interaction/service');var config=require('../../config/environment');var controller=require(_0xe7ac('0x7'));router[_0xe7ac('0x8')]('/',auth[_0xe7ac('0x9')](),controller[_0xe7ac('0xa')]);router[_0xe7ac('0x8')](_0xe7ac('0xb'),auth[_0xe7ac('0x9')](),controller[_0xe7ac('0xc')]);router[_0xe7ac('0xd')]('/',auth['isAuthenticated'](),controller[_0xe7ac('0xe')]);router[_0xe7ac('0xf')](_0xe7ac('0xb'),auth[_0xe7ac('0x9')](),controller[_0xe7ac('0x10')]);router['delete'](_0xe7ac('0xb'),auth['isAuthenticated'](),controller[_0xe7ac('0x11')]);module[_0xe7ac('0x12')]=router;
\ No newline at end of file
+var _0x7c62=['Router','fs-extra','../../components/auth/service','../../components/interaction/service','./tag.controller','get','isAuthenticated','/:id','show','post','create','put','delete','destroy','exports','multer','util','connect-timeout','express'];(function(_0x3932e5,_0x43d0f3){var _0x5784e1=function(_0x3e0fae){while(--_0x3e0fae){_0x3932e5['push'](_0x3932e5['shift']());}};_0x5784e1(++_0x43d0f3);}(_0x7c62,0xa7));var _0x27c6=function(_0x1a97e4,_0x496b18){_0x1a97e4=_0x1a97e4-0x0;var _0x31682c=_0x7c62[_0x1a97e4];return _0x31682c;};'use strict';var multer=require(_0x27c6('0x0'));var util=require(_0x27c6('0x1'));var path=require('path');var timeout=require(_0x27c6('0x2'));var express=require(_0x27c6('0x3'));var router=express[_0x27c6('0x4')]();var fs_extra=require(_0x27c6('0x5'));var auth=require(_0x27c6('0x6'));var interaction=require(_0x27c6('0x7'));var config=require('../../config/environment');var controller=require(_0x27c6('0x8'));router[_0x27c6('0x9')]('/',auth[_0x27c6('0xa')](),controller['index']);router[_0x27c6('0x9')](_0x27c6('0xb'),auth[_0x27c6('0xa')](),controller[_0x27c6('0xc')]);router[_0x27c6('0xd')]('/',auth[_0x27c6('0xa')](),controller[_0x27c6('0xe')]);router[_0x27c6('0xf')](_0x27c6('0xb'),auth[_0x27c6('0xa')](),controller['update']);router[_0x27c6('0x10')](_0x27c6('0xb'),auth[_0x27c6('0xa')](),controller[_0x27c6('0x11')]);module[_0x27c6('0x12')]=router;
\ No newline at end of file
index 886165b..a96dbc2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb75c=['sequelize','exports','STRING'];(function(_0x405385,_0x56f573){var _0x43837b=function(_0x30e20e){while(--_0x30e20e){_0x405385['push'](_0x405385['shift']());}};_0x43837b(++_0x56f573);}(_0xb75c,0x1ce));var _0xcb75=function(_0x1eefd2,_0x1ae67e){_0x1eefd2=_0x1eefd2-0x0;var _0x40f926=_0xb75c[_0x1eefd2];return _0x40f926;};'use strict';var Sequelize=require(_0xcb75('0x0'));module[_0xcb75('0x1')]={'name':{'type':Sequelize[_0xcb75('0x2')],'unique':'name','allowNull':![],'validate':{'is':/[A-Za-z0-9._\\+*!-]+/,'notEmpty':!![]}},'color':{'type':Sequelize[_0xcb75('0x2')],'defaultValue':'#0091EA'},'description':{'type':Sequelize[_0xcb75('0x2')]}};
\ No newline at end of file
+var _0x0c71=['name','STRING','#0091EA','exports'];(function(_0x385ba1,_0x380b3c){var _0x5472b6=function(_0x3ba480){while(--_0x3ba480){_0x385ba1['push'](_0x385ba1['shift']());}};_0x5472b6(++_0x380b3c);}(_0x0c71,0xfb));var _0x10c7=function(_0x5c2ea4,_0x5ae547){_0x5c2ea4=_0x5c2ea4-0x0;var _0x534da3=_0x0c71[_0x5c2ea4];return _0x534da3;};'use strict';var Sequelize=require('sequelize');module[_0x10c7('0x0')]={'name':{'type':Sequelize['STRING'],'unique':_0x10c7('0x1'),'allowNull':![],'validate':{'is':/[A-Za-z0-9._\\+*!-]+/,'notEmpty':!![]}},'color':{'type':Sequelize[_0x10c7('0x2')],'defaultValue':_0x10c7('0x3')},'description':{'type':Sequelize['STRING']}};
\ No newline at end of file
index 4b6bd0d..8d42b5e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc36d=['error','stack','name','Tag','rawAttributes','fieldName','type','key','model','query','filters','intersection','fields','attributes','length','nolimit','sort','where','pick','filter','merge','map','VIRTUAL','includeAll','include','findAll','rows','catch','show','params','keys','options','find','create','body','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','get','UserProfileSection','userProfileId','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','mustache','util','sox','to-csv','ejs','fs-extra','lodash','crypto','jsforce','desk.js','papaparse','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/utils','../../mysqldb','status','end','json','limit','undefined','count','offset','Content-Range','apply','save','update','then','destroy','Tags','UserProfileResource'];(function(_0x2cc711,_0x300328){var _0x31a52e=function(_0x588378){while(--_0x588378){_0x2cc711['push'](_0x2cc711['shift']());}};_0x31a52e(++_0x300328);}(_0xc36d,0x7d));var _0xdc36=function(_0x228641,_0x25d636){_0x228641=_0x228641-0x0;var _0x5d5d78=_0xc36d[_0x228641];return _0x5d5d78;};'use strict';var emlformat=require(_0xdc36('0x0'));var rimraf=require(_0xdc36('0x1'));var zipdir=require(_0xdc36('0x2'));var jsonpatch=require(_0xdc36('0x3'));var rp=require(_0xdc36('0x4'));var moment=require(_0xdc36('0x5'));var BPromise=require('bluebird');var Mustache=require(_0xdc36('0x6'));var util=require(_0xdc36('0x7'));var path=require('path');var sox=require(_0xdc36('0x8'));var csv=require(_0xdc36('0x9'));var ejs=require(_0xdc36('0xa'));var fs=require('fs');var fs_extra=require(_0xdc36('0xb'));var _=require(_0xdc36('0xc'));var squel=require('squel');var crypto=require(_0xdc36('0xd'));var jsforce=require(_0xdc36('0xe'));var deskjs=require(_0xdc36('0xf'));var toCsv=require(_0xdc36('0x9'));var querystring=require('querystring');var Papa=require(_0xdc36('0x10'));var Redis=require(_0xdc36('0x11'));var authService=require('../../components/auth/service');var qs=require(_0xdc36('0x12'));var as=require(_0xdc36('0x13'));var hardwareService=require(_0xdc36('0x14'));var logger=require('../../config/logger')(_0xdc36('0x15'));var utils=require(_0xdc36('0x16'));var config=require('../../config/environment');var licenseUtil=require('../../config/license/util');var db=require(_0xdc36('0x17'))['db'];function respondWithStatusCode(_0x276692,_0x519fa5){_0x519fa5=_0x519fa5||0xcc;return function(_0x5d62ee){if(_0x5d62ee){return _0x276692['sendStatus'](_0x519fa5);}return _0x276692[_0xdc36('0x18')](_0x519fa5)[_0xdc36('0x19')]();};}function respondWithResult(_0x243d54,_0xae6ad3){_0xae6ad3=_0xae6ad3||0xc8;return function(_0x30803d){if(_0x30803d){return _0x243d54[_0xdc36('0x18')](_0xae6ad3)[_0xdc36('0x1a')](_0x30803d);}};}function respondWithFilteredResult(_0x809cf0,_0x57ebde){return function(_0x155cce){if(_0x155cce){var _0x526ac8=typeof _0x57ebde['offset']==='undefined'&&typeof _0x57ebde[_0xdc36('0x1b')]===_0xdc36('0x1c');var _0x5a498f=_0x155cce[_0xdc36('0x1d')];var _0x219a73=_0x526ac8?0x0:_0x57ebde[_0xdc36('0x1e')];var _0x225878=_0x526ac8?_0x155cce[_0xdc36('0x1d')]:_0x57ebde[_0xdc36('0x1e')]+_0x57ebde['limit'];var _0x3d4c4c;if(_0x225878>=_0x5a498f){_0x225878=_0x5a498f;_0x3d4c4c=0xc8;}else{_0x3d4c4c=0xce;}_0x809cf0[_0xdc36('0x18')](_0x3d4c4c);return _0x809cf0['set'](_0xdc36('0x1f'),_0x219a73+'-'+_0x225878+'/'+_0x5a498f)[_0xdc36('0x1a')](_0x155cce);}return null;};}function patchUpdates(_0x3f25f0){return function(_0x5f15ef){try{jsonpatch[_0xdc36('0x20')](_0x5f15ef,_0x3f25f0,!![]);}catch(_0x235a39){return BPromise['reject'](_0x235a39);}return _0x5f15ef[_0xdc36('0x21')]();};}function saveUpdates(_0x480277,_0x5a6e35){return function(_0x12f9d8){if(_0x12f9d8){return _0x12f9d8[_0xdc36('0x22')](_0x480277)[_0xdc36('0x23')](function(_0xda916b){return _0xda916b;});}return null;};}function removeEntity(_0x2d83c0,_0x34d261){return function(_0x14b595){if(_0x14b595){return _0x14b595[_0xdc36('0x24')]()['then'](function(){var _0x34057e=_0x14b595['get']({'plain':!![]});var _0x2338d7=_0xdc36('0x25');return db[_0xdc36('0x26')]['destroy']({'where':{'type':_0x2338d7,'resourceId':_0x34057e['id']}})[_0xdc36('0x23')](function(){return _0x14b595;});})[_0xdc36('0x23')](function(){_0x2d83c0[_0xdc36('0x18')](0xcc)['end']();});}};}function handleEntityNotFound(_0x28a005,_0x2f3b6a){return function(_0x2a596d){if(!_0x2a596d){_0x28a005['sendStatus'](0x194);}return _0x2a596d;};}function handleError(_0x3c39e3,_0x2dcef7){_0x2dcef7=_0x2dcef7||0x1f4;return function(_0x4b15b4){logger[_0xdc36('0x27')](_0x4b15b4[_0xdc36('0x28')]);if(_0x4b15b4['name']){delete _0x4b15b4[_0xdc36('0x29')];}_0x3c39e3['status'](_0x2dcef7)['send'](_0x4b15b4);};}exports['index']=function(_0x3b0839,_0x2f2bb4){var _0x4f57aa={},_0x13bf82={},_0x983eab={'count':0x0,'rows':[]};var _0x336447=_['map'](db[_0xdc36('0x2a')][_0xdc36('0x2b')],function(_0x1d010c){return{'name':_0x1d010c[_0xdc36('0x2c')],'type':_0x1d010c[_0xdc36('0x2d')][_0xdc36('0x2e')]};});_0x13bf82[_0xdc36('0x2f')]=_['map'](_0x336447,_0xdc36('0x29'));_0x13bf82[_0xdc36('0x30')]=_['keys'](_0x3b0839['query']);_0x13bf82[_0xdc36('0x31')]=_[_0xdc36('0x32')](_0x13bf82[_0xdc36('0x2f')],_0x13bf82['query']);_0x4f57aa['attributes']=_[_0xdc36('0x32')](_0x13bf82[_0xdc36('0x2f')],qs[_0xdc36('0x33')](_0x3b0839[_0xdc36('0x30')][_0xdc36('0x33')]));_0x4f57aa[_0xdc36('0x34')]=_0x4f57aa[_0xdc36('0x34')][_0xdc36('0x35')]?_0x4f57aa[_0xdc36('0x34')]:_0x13bf82[_0xdc36('0x2f')];if(!_0x3b0839[_0xdc36('0x30')]['hasOwnProperty'](_0xdc36('0x36'))){_0x4f57aa[_0xdc36('0x1b')]=qs[_0xdc36('0x1b')](_0x3b0839[_0xdc36('0x30')]['limit']);_0x4f57aa[_0xdc36('0x1e')]=qs[_0xdc36('0x1e')](_0x3b0839[_0xdc36('0x30')][_0xdc36('0x1e')]);}_0x4f57aa['order']=qs[_0xdc36('0x37')](_0x3b0839['query']['sort']);_0x4f57aa[_0xdc36('0x38')]=qs[_0xdc36('0x31')](_[_0xdc36('0x39')](_0x3b0839['query'],_0x13bf82[_0xdc36('0x31')]),_0x336447);if(_0x3b0839['query'][_0xdc36('0x3a')]){_0x4f57aa[_0xdc36('0x38')]=_[_0xdc36('0x3b')](_0x4f57aa['where'],{'$or':_[_0xdc36('0x3c')](_0x336447,function(_0x3394ca){if(_0x3394ca[_0xdc36('0x2d')]!==_0xdc36('0x3d')){var _0x50cf7b={};_0x50cf7b[_0x3394ca[_0xdc36('0x29')]]={'$like':'%'+_0x3b0839[_0xdc36('0x30')][_0xdc36('0x3a')]+'%'};return _0x50cf7b;}})});}_0x4f57aa=_['merge']({},_0x4f57aa,_0x3b0839['options']);var _0x2cefcf={'where':_0x4f57aa[_0xdc36('0x38')]};return db['Tag']['count'](_0x2cefcf)[_0xdc36('0x23')](function(_0x8f4c80){_0x983eab[_0xdc36('0x1d')]=_0x8f4c80;if(_0x3b0839[_0xdc36('0x30')][_0xdc36('0x3e')]){_0x4f57aa[_0xdc36('0x3f')]=[{'all':!![]}];}return db[_0xdc36('0x2a')][_0xdc36('0x40')](_0x4f57aa);})[_0xdc36('0x23')](function(_0x125f0e){_0x983eab[_0xdc36('0x41')]=_0x125f0e;return _0x983eab;})[_0xdc36('0x23')](respondWithFilteredResult(_0x2f2bb4,_0x4f57aa))[_0xdc36('0x42')](handleError(_0x2f2bb4,null));};exports[_0xdc36('0x43')]=function(_0x1f2604,_0x133166){var _0xc8cb3d={'raw':!![],'where':{'id':_0x1f2604[_0xdc36('0x44')]['id']}},_0x16dcb7={};_0x16dcb7[_0xdc36('0x2f')]=_[_0xdc36('0x45')](db[_0xdc36('0x2a')][_0xdc36('0x2b')]);_0x16dcb7[_0xdc36('0x30')]=_[_0xdc36('0x45')](_0x1f2604[_0xdc36('0x30')]);_0x16dcb7['filters']=_[_0xdc36('0x32')](_0x16dcb7[_0xdc36('0x2f')],_0x16dcb7['query']);_0xc8cb3d['attributes']=_[_0xdc36('0x32')](_0x16dcb7['model'],qs[_0xdc36('0x33')](_0x1f2604['query'][_0xdc36('0x33')]));_0xc8cb3d[_0xdc36('0x34')]=_0xc8cb3d[_0xdc36('0x34')][_0xdc36('0x35')]?_0xc8cb3d[_0xdc36('0x34')]:_0x16dcb7[_0xdc36('0x2f')];if(_0x1f2604[_0xdc36('0x30')][_0xdc36('0x3e')]){_0xc8cb3d[_0xdc36('0x3f')]=[{'all':!![]}];}_0xc8cb3d=_[_0xdc36('0x3b')]({},_0xc8cb3d,_0x1f2604[_0xdc36('0x46')]);return db[_0xdc36('0x2a')][_0xdc36('0x47')](_0xc8cb3d)[_0xdc36('0x23')](handleEntityNotFound(_0x133166,null))[_0xdc36('0x23')](respondWithResult(_0x133166,null))[_0xdc36('0x42')](handleError(_0x133166,null));};exports[_0xdc36('0x48')]=function(_0x3399cc,_0x562c86){return db['Tag'][_0xdc36('0x48')](_0x3399cc[_0xdc36('0x49')],{})[_0xdc36('0x23')](function(_0x45dd51){var _0x205f76=_0x3399cc[_0xdc36('0x4a')]['get']({'plain':!![]});if(!_0x205f76)throw new Error(_0xdc36('0x4b'));if(_0x205f76[_0xdc36('0x4c')]===_0xdc36('0x4a')){var _0x49f456=_0x45dd51[_0xdc36('0x4d')]({'plain':!![]});var _0x53ed42=_0xdc36('0x25');return db[_0xdc36('0x4e')][_0xdc36('0x47')]({'where':{'name':_0x53ed42,'userProfileId':_0x205f76[_0xdc36('0x4f')]},'raw':!![]})['then'](function(_0x2f1707){if(_0x2f1707&&_0x2f1707[_0xdc36('0x50')]===0x0){return db[_0xdc36('0x26')][_0xdc36('0x48')]({'name':_0x49f456[_0xdc36('0x29')],'resourceId':_0x49f456['id'],'type':_0x2f1707[_0xdc36('0x29')],'sectionId':_0x2f1707['id']},{})[_0xdc36('0x23')](function(){return _0x45dd51;});}else{return _0x45dd51;}})[_0xdc36('0x42')](function(_0x4abeaf){logger[_0xdc36('0x27')](_0xdc36('0x51'),_0x4abeaf);throw _0x4abeaf;});}return _0x45dd51;})[_0xdc36('0x23')](respondWithResult(_0x562c86,0xc9))[_0xdc36('0x42')](handleError(_0x562c86,null));};exports[_0xdc36('0x22')]=function(_0x187b00,_0x1e7332){if(_0x187b00[_0xdc36('0x49')]['id']){delete _0x187b00['body']['id'];}return db['Tag'][_0xdc36('0x47')]({'where':{'id':_0x187b00[_0xdc36('0x44')]['id']}})['then'](handleEntityNotFound(_0x1e7332,null))[_0xdc36('0x23')](saveUpdates(_0x187b00[_0xdc36('0x49')],null))['then'](respondWithResult(_0x1e7332,null))['catch'](handleError(_0x1e7332,null));};exports[_0xdc36('0x24')]=function(_0x5cf2ee,_0x4277b4){return db['Tag'][_0xdc36('0x47')]({'where':{'id':_0x5cf2ee['params']['id']}})['then'](handleEntityNotFound(_0x4277b4,null))[_0xdc36('0x23')](removeEntity(_0x4277b4,null))['catch'](handleError(_0x4277b4,null));};
\ No newline at end of file
+var _0xde64=['limit','count','set','Content-Range','apply','reject','save','then','destroy','get','Tags','error','stack','name','index','rawAttributes','fieldName','type','key','model','map','query','keys','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort','pick','filter','where','merge','includeAll','include','Tag','catch','params','options','find','create','body','user','role','UserProfileSection','userProfileId','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','update','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','mustache','util','to-csv','ejs','squel','crypto','jsforce','desk.js','querystring','ioredis','../../components/auth/service','../../components/parsers/qs','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../mysqldb','sendStatus','status','end','json','offset','undefined'];(function(_0x47b58b,_0x41a189){var _0x46bebe=function(_0x22bbfa){while(--_0x22bbfa){_0x47b58b['push'](_0x47b58b['shift']());}};_0x46bebe(++_0x41a189);}(_0xde64,0x17c));var _0x4de6=function(_0x38c499,_0xc451c7){_0x38c499=_0x38c499-0x0;var _0x2a7da4=_0xde64[_0x38c499];return _0x2a7da4;};'use strict';var emlformat=require(_0x4de6('0x0'));var rimraf=require(_0x4de6('0x1'));var zipdir=require(_0x4de6('0x2'));var jsonpatch=require(_0x4de6('0x3'));var rp=require(_0x4de6('0x4'));var moment=require(_0x4de6('0x5'));var BPromise=require('bluebird');var Mustache=require(_0x4de6('0x6'));var util=require(_0x4de6('0x7'));var path=require('path');var sox=require('sox');var csv=require(_0x4de6('0x8'));var ejs=require(_0x4de6('0x9'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require('lodash');var squel=require(_0x4de6('0xa'));var crypto=require(_0x4de6('0xb'));var jsforce=require(_0x4de6('0xc'));var deskjs=require(_0x4de6('0xd'));var toCsv=require(_0x4de6('0x8'));var querystring=require(_0x4de6('0xe'));var Papa=require('papaparse');var Redis=require(_0x4de6('0xf'));var authService=require(_0x4de6('0x10'));var qs=require(_0x4de6('0x11'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x4de6('0x12'));var logger=require(_0x4de6('0x13'))(_0x4de6('0x14'));var utils=require(_0x4de6('0x15'));var config=require(_0x4de6('0x16'));var licenseUtil=require('../../config/license/util');var db=require(_0x4de6('0x17'))['db'];function respondWithStatusCode(_0x3baa31,_0xb8e256){_0xb8e256=_0xb8e256||0xcc;return function(_0x509002){if(_0x509002){return _0x3baa31[_0x4de6('0x18')](_0xb8e256);}return _0x3baa31[_0x4de6('0x19')](_0xb8e256)[_0x4de6('0x1a')]();};}function respondWithResult(_0x2bd121,_0x58b0c1){_0x58b0c1=_0x58b0c1||0xc8;return function(_0x1ccfee){if(_0x1ccfee){return _0x2bd121[_0x4de6('0x19')](_0x58b0c1)[_0x4de6('0x1b')](_0x1ccfee);}};}function respondWithFilteredResult(_0x4dd3b5,_0x33fd67){return function(_0x54e2f2){if(_0x54e2f2){var _0x4cbb5c=typeof _0x33fd67[_0x4de6('0x1c')]===_0x4de6('0x1d')&&typeof _0x33fd67[_0x4de6('0x1e')]===_0x4de6('0x1d');var _0x37975a=_0x54e2f2[_0x4de6('0x1f')];var _0x324202=_0x4cbb5c?0x0:_0x33fd67['offset'];var _0x420f7c=_0x4cbb5c?_0x54e2f2[_0x4de6('0x1f')]:_0x33fd67[_0x4de6('0x1c')]+_0x33fd67[_0x4de6('0x1e')];var _0x167c7c;if(_0x420f7c>=_0x37975a){_0x420f7c=_0x37975a;_0x167c7c=0xc8;}else{_0x167c7c=0xce;}_0x4dd3b5[_0x4de6('0x19')](_0x167c7c);return _0x4dd3b5[_0x4de6('0x20')](_0x4de6('0x21'),_0x324202+'-'+_0x420f7c+'/'+_0x37975a)[_0x4de6('0x1b')](_0x54e2f2);}return null;};}function patchUpdates(_0x15c923){return function(_0x4c4d13){try{jsonpatch[_0x4de6('0x22')](_0x4c4d13,_0x15c923,!![]);}catch(_0x51ad13){return BPromise[_0x4de6('0x23')](_0x51ad13);}return _0x4c4d13[_0x4de6('0x24')]();};}function saveUpdates(_0x43771b,_0x5de99f){return function(_0xe1b69d){if(_0xe1b69d){return _0xe1b69d['update'](_0x43771b)[_0x4de6('0x25')](function(_0x385cae){return _0x385cae;});}return null;};}function removeEntity(_0x1a64e9,_0x5ddbab){return function(_0x478d83){if(_0x478d83){return _0x478d83[_0x4de6('0x26')]()[_0x4de6('0x25')](function(){var _0x3be904=_0x478d83[_0x4de6('0x27')]({'plain':!![]});var _0x25a76b=_0x4de6('0x28');return db['UserProfileResource'][_0x4de6('0x26')]({'where':{'type':_0x25a76b,'resourceId':_0x3be904['id']}})[_0x4de6('0x25')](function(){return _0x478d83;});})[_0x4de6('0x25')](function(){_0x1a64e9[_0x4de6('0x19')](0xcc)[_0x4de6('0x1a')]();});}};}function handleEntityNotFound(_0x281060,_0xa2b88c){return function(_0x7bc61e){if(!_0x7bc61e){_0x281060[_0x4de6('0x18')](0x194);}return _0x7bc61e;};}function handleError(_0x4f168b,_0x2065b4){_0x2065b4=_0x2065b4||0x1f4;return function(_0x2a5592){logger[_0x4de6('0x29')](_0x2a5592[_0x4de6('0x2a')]);if(_0x2a5592[_0x4de6('0x2b')]){delete _0x2a5592['name'];}_0x4f168b[_0x4de6('0x19')](_0x2065b4)['send'](_0x2a5592);};}exports[_0x4de6('0x2c')]=function(_0x2bfc77,_0x1df7c0){var _0x1b5607={},_0x592799={},_0x5593e8={'count':0x0,'rows':[]};var _0x530e04=_['map'](db['Tag'][_0x4de6('0x2d')],function(_0x1da3b1){return{'name':_0x1da3b1[_0x4de6('0x2e')],'type':_0x1da3b1[_0x4de6('0x2f')][_0x4de6('0x30')]};});_0x592799[_0x4de6('0x31')]=_[_0x4de6('0x32')](_0x530e04,_0x4de6('0x2b'));_0x592799[_0x4de6('0x33')]=_[_0x4de6('0x34')](_0x2bfc77[_0x4de6('0x33')]);_0x592799[_0x4de6('0x35')]=_[_0x4de6('0x36')](_0x592799[_0x4de6('0x31')],_0x592799[_0x4de6('0x33')]);_0x1b5607[_0x4de6('0x37')]=_[_0x4de6('0x36')](_0x592799[_0x4de6('0x31')],qs[_0x4de6('0x38')](_0x2bfc77[_0x4de6('0x33')][_0x4de6('0x38')]));_0x1b5607[_0x4de6('0x37')]=_0x1b5607[_0x4de6('0x37')][_0x4de6('0x39')]?_0x1b5607[_0x4de6('0x37')]:_0x592799[_0x4de6('0x31')];if(!_0x2bfc77[_0x4de6('0x33')][_0x4de6('0x3a')](_0x4de6('0x3b'))){_0x1b5607['limit']=qs[_0x4de6('0x1e')](_0x2bfc77[_0x4de6('0x33')][_0x4de6('0x1e')]);_0x1b5607[_0x4de6('0x1c')]=qs['offset'](_0x2bfc77[_0x4de6('0x33')][_0x4de6('0x1c')]);}_0x1b5607[_0x4de6('0x3c')]=qs[_0x4de6('0x3d')](_0x2bfc77['query'][_0x4de6('0x3d')]);_0x1b5607['where']=qs[_0x4de6('0x35')](_[_0x4de6('0x3e')](_0x2bfc77[_0x4de6('0x33')],_0x592799[_0x4de6('0x35')]),_0x530e04);if(_0x2bfc77[_0x4de6('0x33')][_0x4de6('0x3f')]){_0x1b5607[_0x4de6('0x40')]=_[_0x4de6('0x41')](_0x1b5607[_0x4de6('0x40')],{'$or':_[_0x4de6('0x32')](_0x530e04,function(_0x85581b){if(_0x85581b[_0x4de6('0x2f')]!=='VIRTUAL'){var _0x57a6ca={};_0x57a6ca[_0x85581b[_0x4de6('0x2b')]]={'$like':'%'+_0x2bfc77[_0x4de6('0x33')][_0x4de6('0x3f')]+'%'};return _0x57a6ca;}})});}_0x1b5607=_[_0x4de6('0x41')]({},_0x1b5607,_0x2bfc77['options']);var _0x5d07aa={'where':_0x1b5607[_0x4de6('0x40')]};return db['Tag'][_0x4de6('0x1f')](_0x5d07aa)['then'](function(_0x3696c8){_0x5593e8['count']=_0x3696c8;if(_0x2bfc77[_0x4de6('0x33')][_0x4de6('0x42')]){_0x1b5607[_0x4de6('0x43')]=[{'all':!![]}];}return db[_0x4de6('0x44')]['findAll'](_0x1b5607);})[_0x4de6('0x25')](function(_0x4049ed){_0x5593e8['rows']=_0x4049ed;return _0x5593e8;})['then'](respondWithFilteredResult(_0x1df7c0,_0x1b5607))[_0x4de6('0x45')](handleError(_0x1df7c0,null));};exports['show']=function(_0x118eb3,_0x3260bc){var _0x3f0f08={'raw':!![],'where':{'id':_0x118eb3[_0x4de6('0x46')]['id']}},_0x349688={};_0x349688[_0x4de6('0x31')]=_[_0x4de6('0x34')](db[_0x4de6('0x44')][_0x4de6('0x2d')]);_0x349688[_0x4de6('0x33')]=_[_0x4de6('0x34')](_0x118eb3[_0x4de6('0x33')]);_0x349688['filters']=_['intersection'](_0x349688['model'],_0x349688[_0x4de6('0x33')]);_0x3f0f08[_0x4de6('0x37')]=_['intersection'](_0x349688['model'],qs[_0x4de6('0x38')](_0x118eb3['query'][_0x4de6('0x38')]));_0x3f0f08[_0x4de6('0x37')]=_0x3f0f08['attributes'][_0x4de6('0x39')]?_0x3f0f08[_0x4de6('0x37')]:_0x349688[_0x4de6('0x31')];if(_0x118eb3[_0x4de6('0x33')][_0x4de6('0x42')]){_0x3f0f08['include']=[{'all':!![]}];}_0x3f0f08=_[_0x4de6('0x41')]({},_0x3f0f08,_0x118eb3[_0x4de6('0x47')]);return db[_0x4de6('0x44')][_0x4de6('0x48')](_0x3f0f08)[_0x4de6('0x25')](handleEntityNotFound(_0x3260bc,null))[_0x4de6('0x25')](respondWithResult(_0x3260bc,null))[_0x4de6('0x45')](handleError(_0x3260bc,null));};exports[_0x4de6('0x49')]=function(_0x698dcb,_0x3126f1){return db[_0x4de6('0x44')][_0x4de6('0x49')](_0x698dcb[_0x4de6('0x4a')],{})[_0x4de6('0x25')](function(_0x354558){var _0x12ce25=_0x698dcb[_0x4de6('0x4b')]['get']({'plain':!![]});if(!_0x12ce25)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0x12ce25[_0x4de6('0x4c')]===_0x4de6('0x4b')){var _0x524807=_0x354558[_0x4de6('0x27')]({'plain':!![]});var _0x191f93=_0x4de6('0x28');return db[_0x4de6('0x4d')][_0x4de6('0x48')]({'where':{'name':_0x191f93,'userProfileId':_0x12ce25[_0x4de6('0x4e')]},'raw':!![]})[_0x4de6('0x25')](function(_0x502e4d){if(_0x502e4d&&_0x502e4d[_0x4de6('0x4f')]===0x0){return db['UserProfileResource'][_0x4de6('0x49')]({'name':_0x524807[_0x4de6('0x2b')],'resourceId':_0x524807['id'],'type':_0x502e4d[_0x4de6('0x2b')],'sectionId':_0x502e4d['id']},{})[_0x4de6('0x25')](function(){return _0x354558;});}else{return _0x354558;}})[_0x4de6('0x45')](function(_0xac3eb5){logger[_0x4de6('0x29')](_0x4de6('0x50'),_0xac3eb5);throw _0xac3eb5;});}return _0x354558;})['then'](respondWithResult(_0x3126f1,0xc9))['catch'](handleError(_0x3126f1,null));};exports[_0x4de6('0x51')]=function(_0x198054,_0x61bc5d){if(_0x198054[_0x4de6('0x4a')]['id']){delete _0x198054['body']['id'];}return db[_0x4de6('0x44')][_0x4de6('0x48')]({'where':{'id':_0x198054[_0x4de6('0x46')]['id']}})['then'](handleEntityNotFound(_0x61bc5d,null))[_0x4de6('0x25')](saveUpdates(_0x198054['body'],null))[_0x4de6('0x25')](respondWithResult(_0x61bc5d,null))[_0x4de6('0x45')](handleError(_0x61bc5d,null));};exports['destroy']=function(_0x19f34a,_0x1b71cf){return db['Tag'][_0x4de6('0x48')]({'where':{'id':_0x19f34a[_0x4de6('0x46')]['id']}})[_0x4de6('0x25')](handleEntityNotFound(_0x1b71cf,null))[_0x4de6('0x25')](removeEntity(_0x1b71cf,null))[_0x4de6('0x45')](handleError(_0x1b71cf,null));};
\ No newline at end of file
index f488a27..ab9a4ba 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf878=['rimraf','../../config/environment','./tag.attributes','exports','define','Tag','tools_tags','lodash','api','bluebird','request-promise','path'];(function(_0x3aac2a,_0x8c2f22){var _0x586065=function(_0x3ca493){while(--_0x3ca493){_0x3aac2a['push'](_0x3aac2a['shift']());}};_0x586065(++_0x8c2f22);}(_0xf878,0xdf));var _0x8f87=function(_0x50dbaa,_0x4e4fb5){_0x50dbaa=_0x50dbaa-0x0;var _0x329f98=_0xf878[_0x50dbaa];return _0x329f98;};'use strict';var _=require(_0x8f87('0x0'));var util=require('util');var logger=require('../../config/logger')(_0x8f87('0x1'));var moment=require('moment');var BPromise=require(_0x8f87('0x2'));var rp=require(_0x8f87('0x3'));var fs=require('fs');var path=require(_0x8f87('0x4'));var rimraf=require(_0x8f87('0x5'));var config=require(_0x8f87('0x6'));var attributes=require(_0x8f87('0x7'));module[_0x8f87('0x8')]=function(_0x5b6769,_0x11d559){return _0x5b6769[_0x8f87('0x9')](_0x8f87('0xa'),attributes,{'tableName':_0x8f87('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x2043=['define','Tag','lodash','util','../../config/logger','bluebird','request-promise','path','rimraf','../../config/environment','./tag.attributes','exports'];(function(_0x22b05e,_0x34fcd6){var _0x241184=function(_0x3dd5a7){while(--_0x3dd5a7){_0x22b05e['push'](_0x22b05e['shift']());}};_0x241184(++_0x34fcd6);}(_0x2043,0x122));var _0x3204=function(_0x1df4f9,_0x48c851){_0x1df4f9=_0x1df4f9-0x0;var _0x54da04=_0x2043[_0x1df4f9];return _0x54da04;};'use strict';var _=require(_0x3204('0x0'));var util=require(_0x3204('0x1'));var logger=require(_0x3204('0x2'))('api');var moment=require('moment');var BPromise=require(_0x3204('0x3'));var rp=require(_0x3204('0x4'));var fs=require('fs');var path=require(_0x3204('0x5'));var rimraf=require(_0x3204('0x6'));var config=require(_0x3204('0x7'));var attributes=require(_0x3204('0x8'));module[_0x3204('0x9')]=function(_0x100314,_0x23c454){return _0x100314[_0x3204('0xa')](_0x3204('0xb'),attributes,{'tableName':'tools_tags','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index e6f053c..bd067b6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4d9e=['../../config/logger','../../config/environment','jayson/promise','client','http','request','then','info','request\x20sent','debug','Tag,\x20%s,\x20%s,\x20%s','stringify','error','Tag,\x20%s,\x20%s','message','catch','lodash','bluebird','ioredis','../../config/utils'];(function(_0x1305e3,_0x43a724){var _0x1068e9=function(_0x1bc555){while(--_0x1bc555){_0x1305e3['push'](_0x1305e3['shift']());}};_0x1068e9(++_0x43a724);}(_0x4d9e,0x18c));var _0xe4d9=function(_0x3be3ee,_0x3c24cc){_0x3be3ee=_0x3be3ee-0x0;var _0x5857cd=_0x4d9e[_0x3be3ee];return _0x5857cd;};'use strict';var _=require(_0xe4d9('0x0'));var util=require('util');var moment=require('moment');var BPromise=require(_0xe4d9('0x1'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0xe4d9('0x2'));var db=require('../../mysqldb')['db'];var utils=require(_0xe4d9('0x3'));var logger=require(_0xe4d9('0x4'))('rpc');var config=require(_0xe4d9('0x5'));var jayson=require(_0xe4d9('0x6'));var client=jayson[_0xe4d9('0x7')][_0xe4d9('0x8')]({'port':0x232a});function respondWithRpcPromise(_0x125dbc,_0x32222c,_0x54a63a){return new BPromise(function(_0x36316f,_0x1d3810){return client[_0xe4d9('0x9')](_0x125dbc,_0x54a63a)[_0xe4d9('0xa')](function(_0x3f8937){logger[_0xe4d9('0xb')]('Tag,\x20%s,\x20%s',_0x32222c,_0xe4d9('0xc'));logger[_0xe4d9('0xd')](_0xe4d9('0xe'),_0x32222c,_0xe4d9('0xc'),JSON[_0xe4d9('0xf')](_0x3f8937));if(_0x3f8937[_0xe4d9('0x10')]){if(_0x3f8937[_0xe4d9('0x10')]['code']===0x1f4){logger['error']('Tag,\x20%s,\x20%s',_0x32222c,_0x3f8937['error']['message']);return _0x1d3810(_0x3f8937['error']['message']);}logger['error'](_0xe4d9('0x11'),_0x32222c,_0x3f8937[_0xe4d9('0x10')][_0xe4d9('0x12')]);return _0x36316f(_0x3f8937['error'][_0xe4d9('0x12')]);}else{logger[_0xe4d9('0xb')](_0xe4d9('0x11'),_0x32222c,_0xe4d9('0xc'));_0x36316f(_0x3f8937['result'][_0xe4d9('0x12')]);}})[_0xe4d9('0x13')](function(_0x4687f8){logger['error']('Tag,\x20%s,\x20%s',_0x32222c,_0x4687f8);_0x1d3810(_0x4687f8);});});}
\ No newline at end of file
+var _0x4fdb=['ioredis','../../mysqldb','../../config/utils','../../config/logger','../../config/environment','client','then','info','request\x20sent','debug','Tag,\x20%s,\x20%s,\x20%s','stringify','error','code','Tag,\x20%s,\x20%s','message','result','catch','lodash','util','moment','bluebird','randomstring'];(function(_0x8d8f23,_0x8c1961){var _0x22bf54=function(_0x545096){while(--_0x545096){_0x8d8f23['push'](_0x8d8f23['shift']());}};_0x22bf54(++_0x8c1961);}(_0x4fdb,0x9c));var _0xb4fd=function(_0x2e20a9,_0x5636df){_0x2e20a9=_0x2e20a9-0x0;var _0x56adde=_0x4fdb[_0x2e20a9];return _0x56adde;};'use strict';var _=require(_0xb4fd('0x0'));var util=require(_0xb4fd('0x1'));var moment=require(_0xb4fd('0x2'));var BPromise=require(_0xb4fd('0x3'));var rs=require(_0xb4fd('0x4'));var fs=require('fs');var Redis=require(_0xb4fd('0x5'));var db=require(_0xb4fd('0x6'))['db'];var utils=require(_0xb4fd('0x7'));var logger=require(_0xb4fd('0x8'))('rpc');var config=require(_0xb4fd('0x9'));var jayson=require('jayson/promise');var client=jayson[_0xb4fd('0xa')]['http']({'port':0x232a});function respondWithRpcPromise(_0x53273f,_0x299bff,_0x3af8e3){return new BPromise(function(_0x1151b5,_0x52dca2){return client['request'](_0x53273f,_0x3af8e3)[_0xb4fd('0xb')](function(_0x4f9d18){logger[_0xb4fd('0xc')]('Tag,\x20%s,\x20%s',_0x299bff,_0xb4fd('0xd'));logger[_0xb4fd('0xe')](_0xb4fd('0xf'),_0x299bff,_0xb4fd('0xd'),JSON[_0xb4fd('0x10')](_0x4f9d18));if(_0x4f9d18['error']){if(_0x4f9d18[_0xb4fd('0x11')][_0xb4fd('0x12')]===0x1f4){logger[_0xb4fd('0x11')](_0xb4fd('0x13'),_0x299bff,_0x4f9d18['error'][_0xb4fd('0x14')]);return _0x52dca2(_0x4f9d18[_0xb4fd('0x11')][_0xb4fd('0x14')]);}logger['error'](_0xb4fd('0x13'),_0x299bff,_0x4f9d18[_0xb4fd('0x11')][_0xb4fd('0x14')]);return _0x1151b5(_0x4f9d18[_0xb4fd('0x11')][_0xb4fd('0x14')]);}else{logger[_0xb4fd('0xc')](_0xb4fd('0x13'),_0x299bff,'request\x20sent');_0x1151b5(_0x4f9d18[_0xb4fd('0x15')][_0xb4fd('0x14')]);}})[_0xb4fd('0x16')](function(_0x2d4701){logger[_0xb4fd('0x11')](_0xb4fd('0x13'),_0x299bff,_0x2d4701);_0x52dca2(_0x2d4701);});});}
\ No newline at end of file
index 68168f4..beceeaf 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(_0x2b10c6,_0x185590){_0x2b10c6=_0x2b10c6-0x0;var _0x3789d2=_0xa9e0[_0x2b10c6];return _0x3789d2;};'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(_0xfae23b,_0x2be4ba){var _0x200640=function(_0x4ae258){while(--_0x4ae258){_0xfae23b['push'](_0xfae23b['shift']());}};_0x200640(++_0x2be4ba);}(_0xa9e0,0x123));var _0x0a9e=function(_0x28947d,_0x4cc9c6){_0x28947d=_0x28947d-0x0;var _0x12d2ee=_0xa9e0[_0x28947d];return _0x12d2ee;};'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 8805820..68830d8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb10b=['name','sequelize','STRING'];(function(_0x1e58bf,_0x2579ea){var _0x233111=function(_0xa2875a){while(--_0xa2875a){_0x1e58bf['push'](_0x1e58bf['shift']());}};_0x233111(++_0x2579ea);}(_0xb10b,0x12a));var _0xbb10=function(_0x2a87e9,_0x25c03e){_0x2a87e9=_0x2a87e9-0x0;var _0x5de0e6=_0xb10b[_0x2a87e9];return _0x5de0e6;};'use strict';var Sequelize=require(_0xbb10('0x0'));module['exports']={'name':{'type':Sequelize[_0xbb10('0x1')],'allowNull':![],'unique':_0xbb10('0x2')},'description':{'type':Sequelize[_0xbb10('0x1')]}};
\ No newline at end of file
+var _0x757a=['exports','STRING'];(function(_0x466238,_0x113f96){var _0x4b7821=function(_0x9aa8ed){while(--_0x9aa8ed){_0x466238['push'](_0x466238['shift']());}};_0x4b7821(++_0x113f96);}(_0x757a,0xde));var _0xa757=function(_0x5c5a9c,_0x4b6392){_0x5c5a9c=_0x5c5a9c-0x0;var _0x86a2e3=_0x757a[_0x5c5a9c];return _0x86a2e3;};'use strict';var Sequelize=require('sequelize');module[_0xa757('0x0')]={'name':{'type':Sequelize[_0xa757('0x1')],'allowNull':![],'unique':'name'},'description':{'type':Sequelize['STRING']}};
\ No newline at end of file
index f251df4..57806c4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9c44=['redis','socket.io-emitter','./team.socket','register','sendStatus','end','status','offset','undefined','limit','count','set','reject','save','then','destroy','UserProfileResource','error','stack','name','index','map','Team','rawAttributes','type','key','model','keys','query','filters','attributes','intersection','fields','hasOwnProperty','nolimit','order','sort','where','pick','filter','merge','VIRTUAL','findAll','catch','show','params','includeAll','include','options','find','create','body','user','get','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','Teams','UserProfileSection','userProfileId','autoAssociation','update','channel','isValidChannel','Sequelize','ValidationError','capitalize','length','toLowerCase','Queues','addQueues','findOne','add','ids','removeQueues','Unknown\x20channel','remove','addAgents','isArray','Voice','Mail','Fax','Openchannel','Whatsapp','sequelize','transaction','through','penalty','User','findOrCreate','Queue:save','QueueId','online','interface','UserVoiceQueueRt','upsert','isNil','format','SIP/%s','voicePause','TeamVoiceQueue','all','TeamVoicePrefix','UserVoicePrefix','spread','removeAgents','Sms','emit','Queue:remove','VoicePrefixId','getAgents','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','defaults'];(function(_0x39a1c4,_0x132f31){var _0x4f46bf=function(_0x3d9f65){while(--_0x3d9f65){_0x39a1c4['push'](_0x39a1c4['shift']());}};_0x4f46bf(++_0x132f31);}(_0x9c44,0x178));var _0x49c4=function(_0x2d7f0e,_0x3e6fbd){_0x2d7f0e=_0x2d7f0e-0x0;var _0x110b07=_0x9c44[_0x2d7f0e];return _0x110b07;};'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'];config['redis']=_[_0x49c4('0x16')](config[_0x49c4('0x17')],{'host':'localhost','port':0x18eb});var socket=require(_0x49c4('0x18'))(new Redis(config[_0x49c4('0x17')]));require(_0x49c4('0x19'))[_0x49c4('0x1a')](socket);function respondWithStatusCode(_0x12777c,_0x18211c){_0x18211c=_0x18211c||0xcc;return function(_0x75ea8){if(_0x75ea8){return _0x12777c[_0x49c4('0x1b')](_0x18211c);}return _0x12777c['status'](_0x18211c)[_0x49c4('0x1c')]();};}function respondWithResult(_0x141003,_0x13a2db){_0x13a2db=_0x13a2db||0xc8;return function(_0x81e831){if(_0x81e831){return _0x141003[_0x49c4('0x1d')](_0x13a2db)['json'](_0x81e831);}};}function respondWithFilteredResult(_0x44e607,_0x2891f4){return function(_0x4c3253){if(_0x4c3253){var _0x512650=typeof _0x2891f4[_0x49c4('0x1e')]===_0x49c4('0x1f')&&typeof _0x2891f4[_0x49c4('0x20')]==='undefined';var _0x24856d=_0x4c3253['count'];var _0x2cbd50=_0x512650?0x0:_0x2891f4[_0x49c4('0x1e')];var _0xe31fcc=_0x512650?_0x4c3253[_0x49c4('0x21')]:_0x2891f4[_0x49c4('0x1e')]+_0x2891f4[_0x49c4('0x20')];var _0x280893;if(_0xe31fcc>=_0x24856d){_0xe31fcc=_0x24856d;_0x280893=0xc8;}else{_0x280893=0xce;}_0x44e607[_0x49c4('0x1d')](_0x280893);return _0x44e607[_0x49c4('0x22')]('Content-Range',_0x2cbd50+'-'+_0xe31fcc+'/'+_0x24856d)['json'](_0x4c3253);}return null;};}function patchUpdates(_0x57f502){return function(_0x1c99b1){try{jsonpatch['apply'](_0x1c99b1,_0x57f502,!![]);}catch(_0x592bb8){return BPromise[_0x49c4('0x23')](_0x592bb8);}return _0x1c99b1[_0x49c4('0x24')]();};}function saveUpdates(_0x26c640,_0xd335e4){return function(_0x4811c4){if(_0x4811c4){return _0x4811c4['update'](_0x26c640)[_0x49c4('0x25')](function(_0x9cb797){return _0x9cb797;});}return null;};}function removeEntity(_0x565423,_0x207358){return function(_0x43e014){if(_0x43e014){return _0x43e014[_0x49c4('0x26')]()[_0x49c4('0x25')](function(){var _0x531d92=_0x43e014['get']({'plain':!![]});var _0x449960='Teams';return db[_0x49c4('0x27')][_0x49c4('0x26')]({'where':{'type':_0x449960,'resourceId':_0x531d92['id']}})[_0x49c4('0x25')](function(){return _0x43e014;});})[_0x49c4('0x25')](function(){_0x565423['status'](0xcc)[_0x49c4('0x1c')]();});}};}function handleEntityNotFound(_0x2b2793,_0x46e04d){return function(_0x4f28a2){if(!_0x4f28a2){_0x2b2793[_0x49c4('0x1b')](0x194);}return _0x4f28a2;};}function handleError(_0x29f835,_0x26ba17){_0x26ba17=_0x26ba17||0x1f4;return function(_0x427b26){logger[_0x49c4('0x28')](_0x427b26[_0x49c4('0x29')]);if(_0x427b26[_0x49c4('0x2a')]){delete _0x427b26['name'];}_0x29f835['status'](_0x26ba17)['send'](_0x427b26);};}exports[_0x49c4('0x2b')]=function(_0x7ee704,_0x1eb035){var _0x27e467={},_0x28eb47={},_0x574fd3={'count':0x0,'rows':[]};var _0x38ad77=_[_0x49c4('0x2c')](db[_0x49c4('0x2d')][_0x49c4('0x2e')],function(_0x58e252){return{'name':_0x58e252['fieldName'],'type':_0x58e252[_0x49c4('0x2f')][_0x49c4('0x30')]};});_0x28eb47[_0x49c4('0x31')]=_[_0x49c4('0x2c')](_0x38ad77,_0x49c4('0x2a'));_0x28eb47['query']=_[_0x49c4('0x32')](_0x7ee704[_0x49c4('0x33')]);_0x28eb47[_0x49c4('0x34')]=_['intersection'](_0x28eb47['model'],_0x28eb47[_0x49c4('0x33')]);_0x27e467[_0x49c4('0x35')]=_[_0x49c4('0x36')](_0x28eb47[_0x49c4('0x31')],qs[_0x49c4('0x37')](_0x7ee704[_0x49c4('0x33')][_0x49c4('0x37')]));_0x27e467[_0x49c4('0x35')]=_0x27e467[_0x49c4('0x35')]['length']?_0x27e467[_0x49c4('0x35')]:_0x28eb47['model'];if(!_0x7ee704[_0x49c4('0x33')][_0x49c4('0x38')](_0x49c4('0x39'))){_0x27e467[_0x49c4('0x20')]=qs['limit'](_0x7ee704[_0x49c4('0x33')][_0x49c4('0x20')]);_0x27e467[_0x49c4('0x1e')]=qs['offset'](_0x7ee704[_0x49c4('0x33')][_0x49c4('0x1e')]);}_0x27e467[_0x49c4('0x3a')]=qs[_0x49c4('0x3b')](_0x7ee704[_0x49c4('0x33')][_0x49c4('0x3b')]);_0x27e467[_0x49c4('0x3c')]=qs[_0x49c4('0x34')](_[_0x49c4('0x3d')](_0x7ee704[_0x49c4('0x33')],_0x28eb47[_0x49c4('0x34')]),_0x38ad77);if(_0x7ee704['query'][_0x49c4('0x3e')]){_0x27e467[_0x49c4('0x3c')]=_[_0x49c4('0x3f')](_0x27e467[_0x49c4('0x3c')],{'$or':_[_0x49c4('0x2c')](_0x38ad77,function(_0x29dd5d){if(_0x29dd5d[_0x49c4('0x2f')]!==_0x49c4('0x40')){var _0x248c0a={};_0x248c0a[_0x29dd5d[_0x49c4('0x2a')]]={'$like':'%'+_0x7ee704[_0x49c4('0x33')][_0x49c4('0x3e')]+'%'};return _0x248c0a;}})});}_0x27e467=_[_0x49c4('0x3f')]({},_0x27e467,_0x7ee704['options']);var _0x212366={'where':_0x27e467['where']};return db[_0x49c4('0x2d')][_0x49c4('0x21')](_0x212366)[_0x49c4('0x25')](function(_0x1480da){_0x574fd3[_0x49c4('0x21')]=_0x1480da;if(_0x7ee704[_0x49c4('0x33')]['includeAll']){_0x27e467['include']=[{'all':!![]}];}return db[_0x49c4('0x2d')][_0x49c4('0x41')](_0x27e467);})[_0x49c4('0x25')](function(_0x117151){_0x574fd3['rows']=_0x117151;return _0x574fd3;})[_0x49c4('0x25')](respondWithFilteredResult(_0x1eb035,_0x27e467))[_0x49c4('0x42')](handleError(_0x1eb035,null));};exports[_0x49c4('0x43')]=function(_0x444270,_0x81a674){var _0x3bde49={'raw':![],'where':{'id':_0x444270[_0x49c4('0x44')]['id']}},_0x1a9593={};_0x1a9593[_0x49c4('0x31')]=_['keys'](db[_0x49c4('0x2d')]['rawAttributes']);_0x1a9593[_0x49c4('0x33')]=_[_0x49c4('0x32')](_0x444270[_0x49c4('0x33')]);_0x1a9593[_0x49c4('0x34')]=_[_0x49c4('0x36')](_0x1a9593['model'],_0x1a9593[_0x49c4('0x33')]);_0x3bde49[_0x49c4('0x35')]=_[_0x49c4('0x36')](_0x1a9593[_0x49c4('0x31')],qs[_0x49c4('0x37')](_0x444270[_0x49c4('0x33')][_0x49c4('0x37')]));_0x3bde49['attributes']=_0x3bde49[_0x49c4('0x35')]['length']?_0x3bde49[_0x49c4('0x35')]:_0x1a9593[_0x49c4('0x31')];if(_0x444270[_0x49c4('0x33')][_0x49c4('0x45')]){_0x3bde49[_0x49c4('0x46')]=[{'all':!![]}];}_0x3bde49=_[_0x49c4('0x3f')]({},_0x3bde49,_0x444270[_0x49c4('0x47')]);return db['Team'][_0x49c4('0x48')](_0x3bde49)[_0x49c4('0x25')](handleEntityNotFound(_0x81a674,null))['then'](respondWithResult(_0x81a674,null))[_0x49c4('0x42')](handleError(_0x81a674,null));};exports[_0x49c4('0x49')]=function(_0xfbe179,_0x242afc){return db['Team']['create'](_0xfbe179[_0x49c4('0x4a')],{})['then'](function(_0x4597c3){var _0x1f941f=_0xfbe179[_0x49c4('0x4b')][_0x49c4('0x4c')]({'plain':!![]});if(!_0x1f941f)throw new Error(_0x49c4('0x4d'));if(_0x1f941f[_0x49c4('0x4e')]===_0x49c4('0x4b')){var _0x563f0b=_0x4597c3[_0x49c4('0x4c')]({'plain':!![]});var _0x1550ce=_0x49c4('0x4f');return db[_0x49c4('0x50')][_0x49c4('0x48')]({'where':{'name':_0x1550ce,'userProfileId':_0x1f941f[_0x49c4('0x51')]},'raw':!![]})[_0x49c4('0x25')](function(_0x25d174){if(_0x25d174&&_0x25d174[_0x49c4('0x52')]===0x0){return db[_0x49c4('0x27')]['create']({'name':_0x563f0b['name'],'resourceId':_0x563f0b['id'],'type':_0x25d174[_0x49c4('0x2a')],'sectionId':_0x25d174['id']},{})[_0x49c4('0x25')](function(){return _0x4597c3;});}else{return _0x4597c3;}})['catch'](function(_0x59a8bc){logger[_0x49c4('0x28')]('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0x59a8bc);throw _0x59a8bc;});}return _0x4597c3;})['then'](respondWithResult(_0x242afc,0xc9))[_0x49c4('0x42')](handleError(_0x242afc,null));};exports[_0x49c4('0x53')]=function(_0x4a0a93,_0x38c480){if(_0x4a0a93[_0x49c4('0x4a')]['id']){delete _0x4a0a93[_0x49c4('0x4a')]['id'];}return db[_0x49c4('0x2d')]['find']({'where':{'id':_0x4a0a93[_0x49c4('0x44')]['id']}})[_0x49c4('0x25')](handleEntityNotFound(_0x38c480,null))[_0x49c4('0x25')](saveUpdates(_0x4a0a93[_0x49c4('0x4a')],null))[_0x49c4('0x25')](respondWithResult(_0x38c480,null))[_0x49c4('0x42')](handleError(_0x38c480,null));};exports['destroy']=function(_0x5c7ddd,_0x1ef0c1){return db[_0x49c4('0x2d')][_0x49c4('0x48')]({'where':{'id':_0x5c7ddd[_0x49c4('0x44')]['id']}})[_0x49c4('0x25')](handleEntityNotFound(_0x1ef0c1,null))[_0x49c4('0x25')](removeEntity(_0x1ef0c1,null))[_0x49c4('0x42')](handleError(_0x1ef0c1,null));};exports['getQueues']=function(_0x45d715,_0x33c9a6,_0x4ba4eb){return db[_0x49c4('0x2d')]['findOne']({'where':{'id':_0x45d715[_0x49c4('0x44')]['id']}})[_0x49c4('0x25')](handleEntityNotFound(_0x33c9a6,null))[_0x49c4('0x25')](function(_0x2fe89a){if(!_0x45d715[_0x49c4('0x33')][_0x49c4('0x54')]||!utils[_0x49c4('0x55')](_0x45d715[_0x49c4('0x33')]['channel'])){throw new db[(_0x49c4('0x56'))][(_0x49c4('0x57'))]('Unknown\x20channel');}var _0x10dec7={};var _0x299e74={};_0x299e74['model']=_[_0x49c4('0x32')](db[_[_0x49c4('0x58')](_0x45d715['query']['channel']['toLowerCase']())+'Queue'][_0x49c4('0x2e')]);_0x299e74['query']=_[_0x49c4('0x32')](_0x45d715[_0x49c4('0x33')]);_0x299e74['filters']=_[_0x49c4('0x36')](_0x299e74[_0x49c4('0x31')],_0x299e74['query']);_0x10dec7[_0x49c4('0x35')]=_[_0x49c4('0x36')](_0x299e74[_0x49c4('0x31')],qs[_0x49c4('0x37')](_0x45d715['query'][_0x49c4('0x37')]));_0x10dec7[_0x49c4('0x35')]=_0x10dec7[_0x49c4('0x35')][_0x49c4('0x59')]?_0x10dec7['attributes']:_0x299e74[_0x49c4('0x31')];_0x10dec7['limit']=qs['limit'](_0x45d715['query']['limit']);_0x10dec7[_0x49c4('0x1e')]=qs[_0x49c4('0x1e')](_0x45d715[_0x49c4('0x33')][_0x49c4('0x1e')]);_0x10dec7['order']=qs['sort'](_0x45d715[_0x49c4('0x33')][_0x49c4('0x3b')]);_0x10dec7[_0x49c4('0x3c')]=qs[_0x49c4('0x34')](_[_0x49c4('0x3d')](_0x45d715[_0x49c4('0x33')],_0x299e74[_0x49c4('0x34')]));_0x10dec7=_[_0x49c4('0x3f')]({},_0x10dec7,_0x45d715['options']);return _0x2fe89a[_0x49c4('0x4c')+_['capitalize'](_0x45d715[_0x49c4('0x33')][_0x49c4('0x54')][_0x49c4('0x5a')]())+_0x49c4('0x5b')](_0x10dec7);})[_0x49c4('0x25')](respondWithResult(_0x33c9a6,null))[_0x49c4('0x42')](handleError(_0x33c9a6,null));};exports[_0x49c4('0x5c')]=function(_0x3feb0b,_0x13d951,_0x1743d0){return db[_0x49c4('0x2d')][_0x49c4('0x5d')]({'where':{'id':_0x3feb0b[_0x49c4('0x44')]['id']}})[_0x49c4('0x25')](function(_0x2d5f63){if(_0x2d5f63){if(!_0x3feb0b[_0x49c4('0x4a')][_0x49c4('0x54')]||!utils[_0x49c4('0x55')](_0x3feb0b['body']['channel'])){throw new db[(_0x49c4('0x56'))][(_0x49c4('0x57'))]('Unknown\x20channel');}return _0x2d5f63[_0x49c4('0x5e')+_[_0x49c4('0x58')](_0x3feb0b[_0x49c4('0x4a')][_0x49c4('0x54')]['toLowerCase']())+'Queues'](_0x3feb0b['body'][_0x49c4('0x5f')]);}return null;})[_0x49c4('0x25')](handleEntityNotFound(_0x13d951,null))[_0x49c4('0x25')](respondWithStatusCode(_0x13d951,null))[_0x49c4('0x42')](handleError(_0x13d951,null));};exports[_0x49c4('0x60')]=function(_0x146706,_0x191afb,_0x3692a4){return db[_0x49c4('0x2d')]['findOne']({'where':{'id':_0x146706[_0x49c4('0x44')]['id']}})[_0x49c4('0x25')](function(_0x342f8f){if(_0x342f8f){if(!_0x146706['query'][_0x49c4('0x54')]||!utils[_0x49c4('0x55')](_0x146706[_0x49c4('0x33')][_0x49c4('0x54')])){throw new db[(_0x49c4('0x56'))][(_0x49c4('0x57'))](_0x49c4('0x61'));}return _0x342f8f[_0x49c4('0x62')+_['capitalize'](_0x146706[_0x49c4('0x33')][_0x49c4('0x54')][_0x49c4('0x5a')]())+_0x49c4('0x5b')](_0x146706[_0x49c4('0x33')]['ids']);}return null;})['then'](handleEntityNotFound(_0x191afb,null))[_0x49c4('0x25')](respondWithStatusCode(_0x191afb,null))['catch'](handleError(_0x191afb,null));};exports[_0x49c4('0x63')]=function(_0x558880,_0x23516e){var _0x27b77d=_[_0x49c4('0x64')](_0x558880[_0x49c4('0x4a')]['ids'])?_0x558880[_0x49c4('0x4a')][_0x49c4('0x5f')]:[_0x558880[_0x49c4('0x4a')][_0x49c4('0x5f')]];var _0x100bc4=_0x558880[_0x49c4('0x44')]['id'];return db[_0x49c4('0x2d')][_0x49c4('0x48')]({'where':{'id':_0x100bc4}})[_0x49c4('0x25')](handleEntityNotFound(_0x23516e,null))[_0x49c4('0x25')](function(_0x5e7f45){if(_0x5e7f45){var _0x228189=[_0x49c4('0x65'),'Chat',_0x49c4('0x66'),'Sms',_0x49c4('0x67'),_0x49c4('0x68'),_0x49c4('0x69')];return db[_0x49c4('0x6a')][_0x49c4('0x6b')](function(_0x58b90c){var _0x16f618=_[_0x49c4('0x2c')](_0x228189,function(_0x596a9e){var _0x2b5136={'attributes':['id',_0x49c4('0x2a')]};if(_0x596a9e==='Voice'){_0x2b5136[_0x49c4('0x6c')]={'attributes':[_0x49c4('0x6d')]};}return _0x5e7f45['get'+_0x596a9e+_0x49c4('0x5b')](_0x2b5136)[_0x49c4('0x25')](function(_0x25989a){var _0x33dc39=_['map'](_0x25989a,function(_0x999ae2){var _0x7212ce=_['map'](_0x27b77d,function(_0x45df7c){var _0x5f0188={'where':{'UserId':_0x45df7c,[_0x596a9e+'QueueId']:_0x999ae2['id']},'transaction':_0x58b90c};if(_0x596a9e===_0x49c4('0x65')){_0x5f0188['defaults']={'penalty':_0x999ae2['TeamVoiceQueue'][_0x49c4('0x6d')]};}return db[_0x49c4('0x6e')+_0x596a9e+'Queue'][_0x49c4('0x6f')](_0x5f0188)['then'](function(){socket['emit']('user'+_0x596a9e+_0x49c4('0x70'),{'UserId':_0x45df7c,[_0x596a9e+_0x49c4('0x71')]:_0x999ae2['id']});if(_0x596a9e!==_0x49c4('0x65')){return;}return db[_0x49c4('0x6e')]['findAll']({'where':{'id':_0x27b77d,'online':0x1},'attributes':['id','name',_0x49c4('0x72'),'voicePause',_0x49c4('0x73')],'raw':!![]})['then'](function(_0x4e381c){var _0x10a048=_[_0x49c4('0x2c')](_0x4e381c,function(_0x1076be){return db[_0x49c4('0x74')][_0x49c4('0x75')]({'membername':_0x1076be[_0x49c4('0x2a')],'UserId':_0x1076be['id'],'queue_name':_0x999ae2['name'],'VoiceQueueId':_0x999ae2['id'],'interface':_[_0x49c4('0x76')](_0x1076be[_0x49c4('0x73')])?util[_0x49c4('0x77')](_0x49c4('0x78'),_0x1076be[_0x49c4('0x2a')]):_0x1076be['interface'],'paused':_0x1076be[_0x49c4('0x79')]||![],'penalty':_0x999ae2[_0x49c4('0x7a')][_0x49c4('0x6d')]},{'transaction':_0x58b90c});});return Promise['all'](_0x10a048);});});});return Promise['all'](_0x7212ce);});return Promise[_0x49c4('0x7b')](_0x33dc39);})[_0x49c4('0x25')](function(){return db[_0x49c4('0x7c')][_0x49c4('0x5d')]({'where':{'teamId':_0x100bc4}})[_0x49c4('0x25')](function(_0x4e1c71){if(_0x4e1c71){var _0x83b5f2=_[_0x49c4('0x2c')](_0x27b77d,function(_0x191974){db[_0x49c4('0x7d')]['upsert']({'UserId':_0x191974,'VoicePrefixId':_0x4e1c71['VoicePrefixId']});});return Promise[_0x49c4('0x7b')](_0x83b5f2);}});});});return Promise[_0x49c4('0x7b')](_0x16f618)[_0x49c4('0x25')](function(){return _0x5e7f45[_0x49c4('0x63')](_0x27b77d,{'transaction':_0x58b90c})[_0x49c4('0x7e')](function(_0x5413d8){return _0x5413d8;});});});}})[_0x49c4('0x25')](respondWithResult(_0x23516e,null))[_0x49c4('0x42')](handleError(_0x23516e,null));};exports[_0x49c4('0x7f')]=function(_0x1b0111,_0x2cddc1){var _0x8f37e5=_['isArray'](_0x1b0111[_0x49c4('0x33')][_0x49c4('0x5f')])?_0x1b0111[_0x49c4('0x33')][_0x49c4('0x5f')]:[_0x1b0111['query']['ids']];var _0xa96f53=_0x1b0111['params']['id'];return db[_0x49c4('0x2d')]['find']({'where':{'id':_0xa96f53}})[_0x49c4('0x25')](handleEntityNotFound(_0x2cddc1,null))[_0x49c4('0x25')](function(_0x25afc3){if(_0x25afc3){var _0x20bec7=['Voice','Chat',_0x49c4('0x66'),_0x49c4('0x80'),_0x49c4('0x67'),'Openchannel','Whatsapp'];return db[_0x49c4('0x6a')]['transaction'](function(_0x5c4742){var _0x1b9473=_['map'](_0x20bec7,function(_0x22668b){var _0x3cfa95={'attributes':['id','name']};return _0x25afc3[_0x49c4('0x4c')+_0x22668b+_0x49c4('0x5b')](_0x3cfa95)['then'](function(_0x5428a9){var _0xdb9820=_['map'](_0x5428a9,function(_0x43fe1c){return _0x43fe1c[_0x49c4('0x7f')](_0x8f37e5,{'transaction':_0x5c4742})[_0x49c4('0x25')](function(){var _0x352733=_[_0x49c4('0x2c')](_0x8f37e5,function(_0x4483fc){socket[_0x49c4('0x81')]('user'+_0x22668b+_0x49c4('0x82'),{'UserId':Number(_0x4483fc),[_0x22668b+_0x49c4('0x71')]:_0x43fe1c['id']});if(_0x22668b!==_0x49c4('0x65')){return;}return db[_0x49c4('0x74')][_0x49c4('0x26')]({'where':{'VoiceQueueId':_0x43fe1c['id'],'UserId':_0x4483fc},'transaction':_0x5c4742});});return Promise['all'](_0x352733);});});return Promise[_0x49c4('0x7b')](_0xdb9820);});});return Promise['all'](_0x1b9473)[_0x49c4('0x25')](function(){return _0x25afc3[_0x49c4('0x7f')](_0x8f37e5,{'transaction':_0x5c4742});})[_0x49c4('0x25')](function(){return db[_0x49c4('0x7c')]['findOne']({'where':{'teamId':_0xa96f53}})[_0x49c4('0x25')](function(_0x139696){if(_0x139696){var _0x312b02=_[_0x49c4('0x2c')](_0x8f37e5,function(_0x332173){db[_0x49c4('0x7d')]['destroy']({'where':{'UserId':_0x332173,'VoicePrefixId':_0x139696[_0x49c4('0x83')]}});});return Promise['all'](_0x312b02);}});});});}})[_0x49c4('0x25')](respondWithStatusCode(_0x2cddc1,null))[_0x49c4('0x42')](handleError(_0x2cddc1,null));};exports[_0x49c4('0x84')]=function(_0x2722fe,_0x5d864b,_0x46eaa1){var _0x17e7c6={};var _0x5829bc={};var _0x1e0b7d;var _0x3c321f;return db['Team']['findOne']({'where':{'id':_0x2722fe[_0x49c4('0x44')]['id']}})[_0x49c4('0x25')](handleEntityNotFound(_0x5d864b,null))[_0x49c4('0x25')](function(_0x1aa3a3){if(_0x1aa3a3){_0x1e0b7d=_0x1aa3a3;_0x5829bc[_0x49c4('0x31')]=_[_0x49c4('0x32')](db[_0x49c4('0x6e')][_0x49c4('0x2e')]);_0x5829bc[_0x49c4('0x33')]=_[_0x49c4('0x32')](_0x2722fe[_0x49c4('0x33')]);_0x5829bc['filters']=_['intersection'](_0x5829bc[_0x49c4('0x31')],_0x5829bc[_0x49c4('0x33')]);_0x17e7c6[_0x49c4('0x35')]=_['intersection'](_0x5829bc[_0x49c4('0x31')],qs[_0x49c4('0x37')](_0x2722fe['query'][_0x49c4('0x37')]));_0x17e7c6['attributes']=_0x17e7c6[_0x49c4('0x35')][_0x49c4('0x59')]?_0x17e7c6[_0x49c4('0x35')]:_0x5829bc[_0x49c4('0x31')];_0x17e7c6['order']=qs[_0x49c4('0x3b')](_0x2722fe[_0x49c4('0x33')][_0x49c4('0x3b')]);_0x17e7c6[_0x49c4('0x3c')]=qs[_0x49c4('0x34')](_['pick'](_0x2722fe['query'],_0x5829bc['filters']));if(_0x2722fe[_0x49c4('0x33')][_0x49c4('0x3e')]){_0x17e7c6[_0x49c4('0x3c')]=_[_0x49c4('0x3f')](_0x17e7c6[_0x49c4('0x3c')],{'$or':_['map'](_0x17e7c6[_0x49c4('0x35')],function(_0x41ef7c){var _0x265dc3={};_0x265dc3[_0x41ef7c]={'$like':'%'+_0x2722fe[_0x49c4('0x33')]['filter']+'%'};return _0x265dc3;})});}_0x17e7c6=_[_0x49c4('0x3f')]({},_0x17e7c6,_0x2722fe[_0x49c4('0x47')]);return _0x1e0b7d[_0x49c4('0x84')](_0x17e7c6);}})[_0x49c4('0x25')](function(_0x2fda4f){if(_0x2fda4f){_0x3c321f=_0x2fda4f['length'];if(!_0x2722fe[_0x49c4('0x33')][_0x49c4('0x38')](_0x49c4('0x39'))){_0x17e7c6['limit']=qs[_0x49c4('0x20')](_0x2722fe[_0x49c4('0x33')][_0x49c4('0x20')]);_0x17e7c6['offset']=qs[_0x49c4('0x1e')](_0x2722fe['query']['offset']);}return _0x1e0b7d[_0x49c4('0x84')](_0x17e7c6);}})[_0x49c4('0x25')](function(_0x4ef4aa){if(_0x4ef4aa){return _0x4ef4aa?{'count':_0x3c321f,'rows':_0x4ef4aa}:null;}})[_0x49c4('0x25')](respondWithResult(_0x5d864b,null))[_0x49c4('0x42')](handleError(_0x5d864b,null));};
\ No newline at end of file
+var _0x6334=['key','model','query','keys','filters','attributes','intersection','fields','length','nolimit','limit','order','sort','where','pick','filter','merge','VIRTUAL','options','count','includeAll','include','findAll','rows','catch','show','params','find','create','body','user','get','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','UserProfileSection','autoAssociation','channel','isValidChannel','Sequelize','ValidationError','capitalize','toLowerCase','Queue','Queues','add','ids','removeQueues','findOne','Unknown\x20channel','remove','addAgents','Mail','Sms','Fax','Openchannel','Whatsapp','sequelize','through','penalty','QueueId','Voice','TeamVoiceQueue','User','findOrCreate','emit','Queue:save','online','voicePause','interface','UserVoiceQueueRt','upsert','isNil','format','all','spread','removeAgents','Chat','transaction','parse','Queue:remove','getAgents','hasOwnProperty','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','desk.js','papaparse','ioredis','../../components/auth/service','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','redis','defaults','localhost','socket.io-emitter','./team.socket','register','sendStatus','status','end','json','undefined','offset','set','Content-Range','apply','save','update','destroy','Teams','UserProfileResource','then','error','stack','name','send','index','map','Team','rawAttributes','fieldName','type'];(function(_0x290821,_0x2d7375){var _0x3a48aa=function(_0x45ffee){while(--_0x45ffee){_0x290821['push'](_0x290821['shift']());}};_0x3a48aa(++_0x2d7375);}(_0x6334,0x168));var _0x4633=function(_0x277af0,_0x1f0361){_0x277af0=_0x277af0-0x0;var _0x43bd7c=_0x6334[_0x277af0];return _0x43bd7c;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x4633('0x0'));var zipdir=require(_0x4633('0x1'));var jsonpatch=require(_0x4633('0x2'));var rp=require(_0x4633('0x3'));var moment=require(_0x4633('0x4'));var BPromise=require(_0x4633('0x5'));var Mustache=require(_0x4633('0x6'));var util=require(_0x4633('0x7'));var path=require('path');var sox=require(_0x4633('0x8'));var csv=require(_0x4633('0x9'));var ejs=require(_0x4633('0xa'));var fs=require('fs');var fs_extra=require(_0x4633('0xb'));var _=require(_0x4633('0xc'));var squel=require(_0x4633('0xd'));var crypto=require(_0x4633('0xe'));var jsforce=require('jsforce');var deskjs=require(_0x4633('0xf'));var toCsv=require(_0x4633('0x9'));var querystring=require('querystring');var Papa=require(_0x4633('0x10'));var Redis=require(_0x4633('0x11'));var authService=require(_0x4633('0x12'));var qs=require('../../components/parsers/qs');var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x4633('0x13'));var logger=require(_0x4633('0x14'))(_0x4633('0x15'));var utils=require(_0x4633('0x16'));var config=require(_0x4633('0x17'));var licenseUtil=require(_0x4633('0x18'));var db=require(_0x4633('0x19'))['db'];config[_0x4633('0x1a')]=_[_0x4633('0x1b')](config['redis'],{'host':_0x4633('0x1c'),'port':0x18eb});var socket=require(_0x4633('0x1d'))(new Redis(config[_0x4633('0x1a')]));require(_0x4633('0x1e'))[_0x4633('0x1f')](socket);function respondWithStatusCode(_0x2fc5a4,_0x317ba0){_0x317ba0=_0x317ba0||0xcc;return function(_0x43365e){if(_0x43365e){return _0x2fc5a4[_0x4633('0x20')](_0x317ba0);}return _0x2fc5a4[_0x4633('0x21')](_0x317ba0)[_0x4633('0x22')]();};}function respondWithResult(_0x16eb01,_0x55e85f){_0x55e85f=_0x55e85f||0xc8;return function(_0xcc1d64){if(_0xcc1d64){return _0x16eb01[_0x4633('0x21')](_0x55e85f)[_0x4633('0x23')](_0xcc1d64);}};}function respondWithFilteredResult(_0x1fd36f,_0x47811b){return function(_0x33224c){if(_0x33224c){var _0x2d144c=typeof _0x47811b['offset']===_0x4633('0x24')&&typeof _0x47811b['limit']===_0x4633('0x24');var _0x686372=_0x33224c['count'];var _0x548739=_0x2d144c?0x0:_0x47811b[_0x4633('0x25')];var _0x4e33fb=_0x2d144c?_0x33224c['count']:_0x47811b[_0x4633('0x25')]+_0x47811b['limit'];var _0x3868c1;if(_0x4e33fb>=_0x686372){_0x4e33fb=_0x686372;_0x3868c1=0xc8;}else{_0x3868c1=0xce;}_0x1fd36f[_0x4633('0x21')](_0x3868c1);return _0x1fd36f[_0x4633('0x26')](_0x4633('0x27'),_0x548739+'-'+_0x4e33fb+'/'+_0x686372)[_0x4633('0x23')](_0x33224c);}return null;};}function patchUpdates(_0x3e58cb){return function(_0x1fe2e6){try{jsonpatch[_0x4633('0x28')](_0x1fe2e6,_0x3e58cb,!![]);}catch(_0x3797c8){return BPromise['reject'](_0x3797c8);}return _0x1fe2e6[_0x4633('0x29')]();};}function saveUpdates(_0x1a5ecc,_0x17d319){return function(_0x5ede9a){if(_0x5ede9a){return _0x5ede9a[_0x4633('0x2a')](_0x1a5ecc)['then'](function(_0x388eab){return _0x388eab;});}return null;};}function removeEntity(_0x2e59d9,_0x300418){return function(_0x348f21){if(_0x348f21){return _0x348f21[_0x4633('0x2b')]()['then'](function(){var _0x25d356=_0x348f21['get']({'plain':!![]});var _0x18217d=_0x4633('0x2c');return db[_0x4633('0x2d')]['destroy']({'where':{'type':_0x18217d,'resourceId':_0x25d356['id']}})[_0x4633('0x2e')](function(){return _0x348f21;});})[_0x4633('0x2e')](function(){_0x2e59d9[_0x4633('0x21')](0xcc)[_0x4633('0x22')]();});}};}function handleEntityNotFound(_0x476908,_0x3dac85){return function(_0x2f25b2){if(!_0x2f25b2){_0x476908[_0x4633('0x20')](0x194);}return _0x2f25b2;};}function handleError(_0x42b53d,_0x37dc6e){_0x37dc6e=_0x37dc6e||0x1f4;return function(_0x3d0acb){logger[_0x4633('0x2f')](_0x3d0acb[_0x4633('0x30')]);if(_0x3d0acb[_0x4633('0x31')]){delete _0x3d0acb[_0x4633('0x31')];}_0x42b53d['status'](_0x37dc6e)[_0x4633('0x32')](_0x3d0acb);};}exports[_0x4633('0x33')]=function(_0x226ac9,_0x5212f3){var _0x223a55={},_0x5ca9cc={},_0x1bd78e={'count':0x0,'rows':[]};var _0x716eb8=_[_0x4633('0x34')](db[_0x4633('0x35')][_0x4633('0x36')],function(_0x581abc){return{'name':_0x581abc[_0x4633('0x37')],'type':_0x581abc[_0x4633('0x38')][_0x4633('0x39')]};});_0x5ca9cc[_0x4633('0x3a')]=_[_0x4633('0x34')](_0x716eb8,_0x4633('0x31'));_0x5ca9cc[_0x4633('0x3b')]=_[_0x4633('0x3c')](_0x226ac9[_0x4633('0x3b')]);_0x5ca9cc[_0x4633('0x3d')]=_['intersection'](_0x5ca9cc['model'],_0x5ca9cc[_0x4633('0x3b')]);_0x223a55[_0x4633('0x3e')]=_[_0x4633('0x3f')](_0x5ca9cc[_0x4633('0x3a')],qs[_0x4633('0x40')](_0x226ac9[_0x4633('0x3b')]['fields']));_0x223a55[_0x4633('0x3e')]=_0x223a55[_0x4633('0x3e')][_0x4633('0x41')]?_0x223a55['attributes']:_0x5ca9cc[_0x4633('0x3a')];if(!_0x226ac9[_0x4633('0x3b')]['hasOwnProperty'](_0x4633('0x42'))){_0x223a55[_0x4633('0x43')]=qs['limit'](_0x226ac9[_0x4633('0x3b')][_0x4633('0x43')]);_0x223a55['offset']=qs[_0x4633('0x25')](_0x226ac9['query'][_0x4633('0x25')]);}_0x223a55[_0x4633('0x44')]=qs[_0x4633('0x45')](_0x226ac9[_0x4633('0x3b')][_0x4633('0x45')]);_0x223a55[_0x4633('0x46')]=qs[_0x4633('0x3d')](_[_0x4633('0x47')](_0x226ac9['query'],_0x5ca9cc[_0x4633('0x3d')]),_0x716eb8);if(_0x226ac9[_0x4633('0x3b')][_0x4633('0x48')]){_0x223a55['where']=_[_0x4633('0x49')](_0x223a55[_0x4633('0x46')],{'$or':_[_0x4633('0x34')](_0x716eb8,function(_0x519259){if(_0x519259['type']!==_0x4633('0x4a')){var _0x1edecd={};_0x1edecd[_0x519259[_0x4633('0x31')]]={'$like':'%'+_0x226ac9['query']['filter']+'%'};return _0x1edecd;}})});}_0x223a55=_[_0x4633('0x49')]({},_0x223a55,_0x226ac9[_0x4633('0x4b')]);var _0x44e7ac={'where':_0x223a55[_0x4633('0x46')]};return db[_0x4633('0x35')][_0x4633('0x4c')](_0x44e7ac)[_0x4633('0x2e')](function(_0x4eb896){_0x1bd78e[_0x4633('0x4c')]=_0x4eb896;if(_0x226ac9[_0x4633('0x3b')][_0x4633('0x4d')]){_0x223a55[_0x4633('0x4e')]=[{'all':!![]}];}return db[_0x4633('0x35')][_0x4633('0x4f')](_0x223a55);})[_0x4633('0x2e')](function(_0x327091){_0x1bd78e[_0x4633('0x50')]=_0x327091;return _0x1bd78e;})['then'](respondWithFilteredResult(_0x5212f3,_0x223a55))[_0x4633('0x51')](handleError(_0x5212f3,null));};exports[_0x4633('0x52')]=function(_0x30b707,_0x479011){var _0x362eac={'raw':![],'where':{'id':_0x30b707[_0x4633('0x53')]['id']}},_0x1172ef={};_0x1172ef[_0x4633('0x3a')]=_[_0x4633('0x3c')](db[_0x4633('0x35')]['rawAttributes']);_0x1172ef[_0x4633('0x3b')]=_[_0x4633('0x3c')](_0x30b707['query']);_0x1172ef['filters']=_[_0x4633('0x3f')](_0x1172ef[_0x4633('0x3a')],_0x1172ef[_0x4633('0x3b')]);_0x362eac[_0x4633('0x3e')]=_[_0x4633('0x3f')](_0x1172ef[_0x4633('0x3a')],qs[_0x4633('0x40')](_0x30b707['query'][_0x4633('0x40')]));_0x362eac[_0x4633('0x3e')]=_0x362eac[_0x4633('0x3e')][_0x4633('0x41')]?_0x362eac[_0x4633('0x3e')]:_0x1172ef['model'];if(_0x30b707[_0x4633('0x3b')]['includeAll']){_0x362eac[_0x4633('0x4e')]=[{'all':!![]}];}_0x362eac=_[_0x4633('0x49')]({},_0x362eac,_0x30b707[_0x4633('0x4b')]);return db[_0x4633('0x35')][_0x4633('0x54')](_0x362eac)['then'](handleEntityNotFound(_0x479011,null))['then'](respondWithResult(_0x479011,null))['catch'](handleError(_0x479011,null));};exports['create']=function(_0x5d5c5a,_0xf5ae0e){return db[_0x4633('0x35')][_0x4633('0x55')](_0x5d5c5a[_0x4633('0x56')],{})[_0x4633('0x2e')](function(_0x3ffd4b){var _0x581f7c=_0x5d5c5a[_0x4633('0x57')][_0x4633('0x58')]({'plain':!![]});if(!_0x581f7c)throw new Error(_0x4633('0x59'));if(_0x581f7c[_0x4633('0x5a')]===_0x4633('0x57')){var _0x3536f3=_0x3ffd4b[_0x4633('0x58')]({'plain':!![]});var _0x4e3556=_0x4633('0x2c');return db[_0x4633('0x5b')][_0x4633('0x54')]({'where':{'name':_0x4e3556,'userProfileId':_0x581f7c['userProfileId']},'raw':!![]})[_0x4633('0x2e')](function(_0x293e6e){if(_0x293e6e&&_0x293e6e[_0x4633('0x5c')]===0x0){return db[_0x4633('0x2d')][_0x4633('0x55')]({'name':_0x3536f3[_0x4633('0x31')],'resourceId':_0x3536f3['id'],'type':_0x293e6e[_0x4633('0x31')],'sectionId':_0x293e6e['id']},{})[_0x4633('0x2e')](function(){return _0x3ffd4b;});}else{return _0x3ffd4b;}})[_0x4633('0x51')](function(_0x47f492){logger['error']('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0x47f492);throw _0x47f492;});}return _0x3ffd4b;})[_0x4633('0x2e')](respondWithResult(_0xf5ae0e,0xc9))[_0x4633('0x51')](handleError(_0xf5ae0e,null));};exports[_0x4633('0x2a')]=function(_0x34c22d,_0x11827b){if(_0x34c22d[_0x4633('0x56')]['id']){delete _0x34c22d['body']['id'];}return db[_0x4633('0x35')][_0x4633('0x54')]({'where':{'id':_0x34c22d[_0x4633('0x53')]['id']}})['then'](handleEntityNotFound(_0x11827b,null))[_0x4633('0x2e')](saveUpdates(_0x34c22d['body'],null))['then'](respondWithResult(_0x11827b,null))[_0x4633('0x51')](handleError(_0x11827b,null));};exports['destroy']=function(_0x40de25,_0x347b49){return db[_0x4633('0x35')][_0x4633('0x54')]({'where':{'id':_0x40de25[_0x4633('0x53')]['id']}})[_0x4633('0x2e')](handleEntityNotFound(_0x347b49,null))[_0x4633('0x2e')](removeEntity(_0x347b49,null))[_0x4633('0x51')](handleError(_0x347b49,null));};exports['getQueues']=function(_0x4a48f7,_0x2e6334,_0x5aa381){return db[_0x4633('0x35')]['findOne']({'where':{'id':_0x4a48f7[_0x4633('0x53')]['id']}})['then'](handleEntityNotFound(_0x2e6334,null))['then'](function(_0x4af1f5){if(!_0x4a48f7[_0x4633('0x3b')][_0x4633('0x5d')]||!utils[_0x4633('0x5e')](_0x4a48f7[_0x4633('0x3b')][_0x4633('0x5d')])){throw new db[(_0x4633('0x5f'))][(_0x4633('0x60'))]('Unknown\x20channel');}var _0x86a556={};var _0x20377b={};_0x20377b[_0x4633('0x3a')]=_['keys'](db[_[_0x4633('0x61')](_0x4a48f7[_0x4633('0x3b')][_0x4633('0x5d')][_0x4633('0x62')]())+_0x4633('0x63')]['rawAttributes']);_0x20377b['query']=_[_0x4633('0x3c')](_0x4a48f7[_0x4633('0x3b')]);_0x20377b[_0x4633('0x3d')]=_[_0x4633('0x3f')](_0x20377b[_0x4633('0x3a')],_0x20377b['query']);_0x86a556[_0x4633('0x3e')]=_[_0x4633('0x3f')](_0x20377b[_0x4633('0x3a')],qs['fields'](_0x4a48f7[_0x4633('0x3b')]['fields']));_0x86a556[_0x4633('0x3e')]=_0x86a556['attributes'][_0x4633('0x41')]?_0x86a556[_0x4633('0x3e')]:_0x20377b[_0x4633('0x3a')];_0x86a556[_0x4633('0x43')]=qs['limit'](_0x4a48f7[_0x4633('0x3b')][_0x4633('0x43')]);_0x86a556['offset']=qs[_0x4633('0x25')](_0x4a48f7[_0x4633('0x3b')][_0x4633('0x25')]);_0x86a556['order']=qs[_0x4633('0x45')](_0x4a48f7[_0x4633('0x3b')][_0x4633('0x45')]);_0x86a556[_0x4633('0x46')]=qs[_0x4633('0x3d')](_[_0x4633('0x47')](_0x4a48f7[_0x4633('0x3b')],_0x20377b[_0x4633('0x3d')]));_0x86a556=_[_0x4633('0x49')]({},_0x86a556,_0x4a48f7[_0x4633('0x4b')]);return _0x4af1f5[_0x4633('0x58')+_['capitalize'](_0x4a48f7[_0x4633('0x3b')][_0x4633('0x5d')][_0x4633('0x62')]())+_0x4633('0x64')](_0x86a556);})['then'](respondWithResult(_0x2e6334,null))['catch'](handleError(_0x2e6334,null));};exports['addQueues']=function(_0x3ed7cc,_0x5b455f,_0xc4fd40){return db[_0x4633('0x35')]['findOne']({'where':{'id':_0x3ed7cc[_0x4633('0x53')]['id']}})[_0x4633('0x2e')](function(_0x163b98){if(_0x163b98){if(!_0x3ed7cc[_0x4633('0x56')]['channel']||!utils[_0x4633('0x5e')](_0x3ed7cc[_0x4633('0x56')][_0x4633('0x5d')])){throw new db[(_0x4633('0x5f'))][(_0x4633('0x60'))]('Unknown\x20channel');}return _0x163b98[_0x4633('0x65')+_[_0x4633('0x61')](_0x3ed7cc[_0x4633('0x56')]['channel'][_0x4633('0x62')]())+_0x4633('0x64')](_0x3ed7cc[_0x4633('0x56')][_0x4633('0x66')]);}return null;})['then'](handleEntityNotFound(_0x5b455f,null))['then'](respondWithStatusCode(_0x5b455f,null))[_0x4633('0x51')](handleError(_0x5b455f,null));};exports[_0x4633('0x67')]=function(_0x82ec88,_0x5e6b5e,_0x44d9bb){return db['Team'][_0x4633('0x68')]({'where':{'id':_0x82ec88[_0x4633('0x53')]['id']}})['then'](function(_0x396bde){if(_0x396bde){if(!_0x82ec88[_0x4633('0x3b')]['channel']||!utils[_0x4633('0x5e')](_0x82ec88[_0x4633('0x3b')]['channel'])){throw new db[(_0x4633('0x5f'))][(_0x4633('0x60'))](_0x4633('0x69'));}return _0x396bde[_0x4633('0x6a')+_['capitalize'](_0x82ec88[_0x4633('0x3b')][_0x4633('0x5d')][_0x4633('0x62')]())+'Queues'](_0x82ec88[_0x4633('0x3b')][_0x4633('0x66')]);}return null;})[_0x4633('0x2e')](handleEntityNotFound(_0x5e6b5e,null))[_0x4633('0x2e')](respondWithStatusCode(_0x5e6b5e,null))[_0x4633('0x51')](handleError(_0x5e6b5e,null));};exports[_0x4633('0x6b')]=function(_0x34e681,_0x2ba7ed){return db[_0x4633('0x35')][_0x4633('0x54')]({'where':{'id':_0x34e681['params']['id']}})['then'](handleEntityNotFound(_0x2ba7ed,null))[_0x4633('0x2e')](function(_0x403589){if(_0x403589){var _0x55ee8e=['Voice','Chat',_0x4633('0x6c'),_0x4633('0x6d'),_0x4633('0x6e'),_0x4633('0x6f'),_0x4633('0x70')];return db[_0x4633('0x71')]['transaction'](function(_0x11d8eb){var _0x5e4df5=_[_0x4633('0x34')](_0x55ee8e,function(_0x276bf9){var _0x31e742={'attributes':['id',_0x4633('0x31')]};if(_0x276bf9==='Voice'){_0x31e742[_0x4633('0x72')]={'attributes':[_0x4633('0x73')]};}return _0x403589['get'+_0x276bf9+_0x4633('0x64')](_0x31e742)[_0x4633('0x2e')](function(_0xfe05f3){var _0xfce1a0=_[_0x4633('0x34')](_0xfe05f3,function(_0x2e92c8){var _0xdcddb7=_[_0x4633('0x34')](_0x34e681[_0x4633('0x56')]['ids'],function(_0x14cebf){var _0x50919a={'where':{'UserId':_0x14cebf,[_0x276bf9+_0x4633('0x74')]:_0x2e92c8['id']},'transaction':_0x11d8eb};if(_0x276bf9===_0x4633('0x75')){_0x50919a['defaults']={'penalty':_0x2e92c8[_0x4633('0x76')][_0x4633('0x73')]};}return db[_0x4633('0x77')+_0x276bf9+_0x4633('0x63')][_0x4633('0x78')](_0x50919a)['then'](function(){socket[_0x4633('0x79')](_0x4633('0x57')+_0x276bf9+_0x4633('0x7a'),{'UserId':_0x14cebf,[_0x276bf9+_0x4633('0x74')]:_0x2e92c8['id']});if(_0x276bf9!==_0x4633('0x75'))return;return db[_0x4633('0x77')][_0x4633('0x4f')]({'where':{'id':_0x34e681['body']['ids'],'online':0x1},'attributes':['id',_0x4633('0x31'),_0x4633('0x7b'),_0x4633('0x7c'),_0x4633('0x7d')],'raw':!![]})['then'](function(_0x421509){var _0x1ad5f4=_[_0x4633('0x34')](_0x421509,function(_0x3de621){return db[_0x4633('0x7e')][_0x4633('0x7f')]({'membername':_0x3de621[_0x4633('0x31')],'UserId':_0x3de621['id'],'queue_name':_0x2e92c8[_0x4633('0x31')],'VoiceQueueId':_0x2e92c8['id'],'interface':_[_0x4633('0x80')](_0x3de621[_0x4633('0x7d')])?util[_0x4633('0x81')]('SIP/%s',_0x3de621[_0x4633('0x31')]):_0x3de621['interface'],'paused':_0x3de621[_0x4633('0x7c')]||![],'penalty':_0x2e92c8[_0x4633('0x76')]['penalty']},{'transaction':_0x11d8eb});});return Promise['all'](_0x1ad5f4);});});});return Promise['all'](_0xdcddb7);});return Promise[_0x4633('0x82')](_0xfce1a0);});});return Promise['all'](_0x5e4df5)[_0x4633('0x2e')](function(){return _0x403589[_0x4633('0x6b')](_0x34e681[_0x4633('0x56')][_0x4633('0x66')],{'transaction':_0x11d8eb})[_0x4633('0x83')](function(_0x263912){return _0x263912;});});});}})['then'](respondWithResult(_0x2ba7ed,null))[_0x4633('0x51')](handleError(_0x2ba7ed,null));};exports[_0x4633('0x84')]=function(_0x296adf,_0x56020e){return db[_0x4633('0x35')]['find']({'where':{'id':_0x296adf['params']['id']}})[_0x4633('0x2e')](handleEntityNotFound(_0x56020e,null))[_0x4633('0x2e')](function(_0x3872e9){if(_0x3872e9){var _0x209534=[_0x4633('0x75'),_0x4633('0x85'),'Mail',_0x4633('0x6d'),_0x4633('0x6e'),'Openchannel',_0x4633('0x70')];return db['sequelize'][_0x4633('0x86')](function(_0x5978ac){var _0x440e20=_[_0x4633('0x34')](_0x209534,function(_0x2162c0){var _0xea845c={'attributes':['id',_0x4633('0x31')]};return _0x3872e9[_0x4633('0x58')+_0x2162c0+_0x4633('0x64')](_0xea845c)[_0x4633('0x2e')](function(_0x3ca5c4){var _0x1b4ced=_[_0x4633('0x34')](_0x3ca5c4,function(_0xabe642){return _0xabe642[_0x4633('0x84')](_0x296adf[_0x4633('0x3b')][_0x4633('0x66')],{'transaction':_0x5978ac})[_0x4633('0x2e')](function(){var _0x1de974=JSON[_0x4633('0x87')]('['+_0x296adf[_0x4633('0x3b')][_0x4633('0x66')]+']');var _0x51f116=_[_0x4633('0x34')](_0x1de974,function(_0x2ff755){socket[_0x4633('0x79')](_0x4633('0x57')+_0x2162c0+_0x4633('0x88'),{'UserId':Number(_0x2ff755),[_0x2162c0+_0x4633('0x74')]:_0xabe642['id']});if(_0x2162c0!=='Voice')return;return db[_0x4633('0x7e')][_0x4633('0x2b')]({'where':{'VoiceQueueId':_0xabe642['id'],'UserId':_0x2ff755},'transaction':_0x5978ac});});return Promise[_0x4633('0x82')](_0x51f116);});});return Promise[_0x4633('0x82')](_0x1b4ced);});});return Promise[_0x4633('0x82')](_0x440e20)[_0x4633('0x2e')](function(){return _0x3872e9[_0x4633('0x84')](_0x296adf[_0x4633('0x3b')][_0x4633('0x66')],{'transaction':_0x5978ac});});});}})[_0x4633('0x2e')](respondWithStatusCode(_0x56020e,null))[_0x4633('0x51')](handleError(_0x56020e,null));};exports[_0x4633('0x89')]=function(_0x1e1539,_0x52e394,_0x2b9cbd){var _0x3ce3ff={};var _0xa188cb={};var _0x5f9ff7;var _0x272ecb;return db[_0x4633('0x35')][_0x4633('0x68')]({'where':{'id':_0x1e1539[_0x4633('0x53')]['id']}})[_0x4633('0x2e')](handleEntityNotFound(_0x52e394,null))[_0x4633('0x2e')](function(_0x1d3ffa){if(_0x1d3ffa){_0x5f9ff7=_0x1d3ffa;_0xa188cb[_0x4633('0x3a')]=_[_0x4633('0x3c')](db[_0x4633('0x77')][_0x4633('0x36')]);_0xa188cb[_0x4633('0x3b')]=_['keys'](_0x1e1539[_0x4633('0x3b')]);_0xa188cb['filters']=_['intersection'](_0xa188cb[_0x4633('0x3a')],_0xa188cb['query']);_0x3ce3ff['attributes']=_['intersection'](_0xa188cb[_0x4633('0x3a')],qs[_0x4633('0x40')](_0x1e1539[_0x4633('0x3b')]['fields']));_0x3ce3ff[_0x4633('0x3e')]=_0x3ce3ff[_0x4633('0x3e')][_0x4633('0x41')]?_0x3ce3ff[_0x4633('0x3e')]:_0xa188cb[_0x4633('0x3a')];_0x3ce3ff[_0x4633('0x44')]=qs['sort'](_0x1e1539[_0x4633('0x3b')]['sort']);_0x3ce3ff[_0x4633('0x46')]=qs[_0x4633('0x3d')](_[_0x4633('0x47')](_0x1e1539[_0x4633('0x3b')],_0xa188cb['filters']));if(_0x1e1539[_0x4633('0x3b')][_0x4633('0x48')]){_0x3ce3ff[_0x4633('0x46')]=_[_0x4633('0x49')](_0x3ce3ff[_0x4633('0x46')],{'$or':_[_0x4633('0x34')](_0x3ce3ff[_0x4633('0x3e')],function(_0x5058d8){var _0x4fe5ed={};_0x4fe5ed[_0x5058d8]={'$like':'%'+_0x1e1539[_0x4633('0x3b')]['filter']+'%'};return _0x4fe5ed;})});}_0x3ce3ff=_[_0x4633('0x49')]({},_0x3ce3ff,_0x1e1539[_0x4633('0x4b')]);return _0x5f9ff7[_0x4633('0x89')](_0x3ce3ff);}})[_0x4633('0x2e')](function(_0x2dee28){if(_0x2dee28){_0x272ecb=_0x2dee28[_0x4633('0x41')];if(!_0x1e1539[_0x4633('0x3b')][_0x4633('0x8a')](_0x4633('0x42'))){_0x3ce3ff[_0x4633('0x43')]=qs[_0x4633('0x43')](_0x1e1539[_0x4633('0x3b')][_0x4633('0x43')]);_0x3ce3ff[_0x4633('0x25')]=qs[_0x4633('0x25')](_0x1e1539['query']['offset']);}return _0x5f9ff7[_0x4633('0x89')](_0x3ce3ff);}})[_0x4633('0x2e')](function(_0x5549c0){if(_0x5549c0){return _0x5549c0?{'count':_0x272ecb,'rows':_0x5549c0}:null;}})[_0x4633('0x2e')](respondWithResult(_0x52e394,null))[_0x4633('0x51')](handleError(_0x52e394,null));};
\ No newline at end of file
index 70694dd..ec34c35 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xab4b=['events','Team','setMaxListeners','save','emit','hasOwnProperty','exports'];(function(_0x29db25,_0x457467){var _0x48b1a5=function(_0x5cb05f){while(--_0x5cb05f){_0x29db25['push'](_0x29db25['shift']());}};_0x48b1a5(++_0x457467);}(_0xab4b,0x18f));var _0xbab4=function(_0x2c3bd9,_0x45f815){_0x2c3bd9=_0x2c3bd9-0x0;var _0x112e55=_0xab4b[_0x2c3bd9];return _0x112e55;};'use strict';var EventEmitter=require(_0xbab4('0x0'));var Team=require('../../mysqldb')['db'][_0xbab4('0x1')];var TeamEvents=new EventEmitter();TeamEvents[_0xbab4('0x2')](0x0);var events={'afterCreate':_0xbab4('0x3'),'afterUpdate':'update','afterDestroy':'remove'};function emitEvent(_0x4211a0){return function(_0x71673f,_0x1a12e9,_0x406583){TeamEvents[_0xbab4('0x4')](_0x4211a0+':'+_0x71673f['id'],_0x71673f);TeamEvents[_0xbab4('0x4')](_0x4211a0,_0x71673f);_0x406583(null);};}for(var e in events){if(events[_0xbab4('0x5')](e)){var event=events[e];Team['hook'](e,emitEvent(event));}}module[_0xbab4('0x6')]=TeamEvents;
\ No newline at end of file
+var _0x2123=['../../mysqldb','Team','setMaxListeners','save','update','emit','hasOwnProperty','hook'];(function(_0x4582c0,_0x2e3632){var _0xe169ea=function(_0x175930){while(--_0x175930){_0x4582c0['push'](_0x4582c0['shift']());}};_0xe169ea(++_0x2e3632);}(_0x2123,0xa0));var _0x3212=function(_0x487421,_0x521ec6){_0x487421=_0x487421-0x0;var _0x1c2c36=_0x2123[_0x487421];return _0x1c2c36;};'use strict';var EventEmitter=require('events');var Team=require(_0x3212('0x0'))['db'][_0x3212('0x1')];var TeamEvents=new EventEmitter();TeamEvents[_0x3212('0x2')](0x0);var events={'afterCreate':_0x3212('0x3'),'afterUpdate':_0x3212('0x4'),'afterDestroy':'remove'};function emitEvent(_0x23a481){return function(_0x61b41c,_0x55abfb,_0x3ee231){TeamEvents[_0x3212('0x5')](_0x23a481+':'+_0x61b41c['id'],_0x61b41c);TeamEvents[_0x3212('0x5')](_0x23a481,_0x61b41c);_0x3ee231(null);};}for(var e in events){if(events[_0x3212('0x6')](e)){var event=events[e];Team[_0x3212('0x7')](e,emitEvent(event));}}module['exports']=TeamEvents;
\ No newline at end of file
index ecee95b..3361775 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xfeb0=['util','../../config/logger','api','moment','path','rimraf','../../config/environment','./team.attributes','exports','define','teams'];(function(_0x528894,_0x103750){var _0x10d52c=function(_0x191697){while(--_0x191697){_0x528894['push'](_0x528894['shift']());}};_0x10d52c(++_0x103750);}(_0xfeb0,0xe7));var _0x0feb=function(_0xf458be,_0x1cf158){_0xf458be=_0xf458be-0x0;var _0x52b318=_0xfeb0[_0xf458be];return _0x52b318;};'use strict';var _=require('lodash');var util=require(_0x0feb('0x0'));var logger=require(_0x0feb('0x1'))(_0x0feb('0x2'));var moment=require(_0x0feb('0x3'));var BPromise=require('bluebird');var rp=require('request-promise');var fs=require('fs');var path=require(_0x0feb('0x4'));var rimraf=require(_0x0feb('0x5'));var config=require(_0x0feb('0x6'));var attributes=require(_0x0feb('0x7'));module[_0x0feb('0x8')]=function(_0x150492,_0x1d7449){return _0x150492[_0x0feb('0x9')]('Team',attributes,{'tableName':_0x0feb('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x0a9d=['Team','teams','util','../../config/logger','api','moment','bluebird','request-promise','path','../../config/environment','./team.attributes','exports','define'];(function(_0x3074c8,_0x5432f1){var _0x1bfe64=function(_0x16b194){while(--_0x16b194){_0x3074c8['push'](_0x3074c8['shift']());}};_0x1bfe64(++_0x5432f1);}(_0x0a9d,0x161));var _0xd0a9=function(_0x162372,_0x2bd3a4){_0x162372=_0x162372-0x0;var _0x38d2f6=_0x0a9d[_0x162372];return _0x38d2f6;};'use strict';var _=require('lodash');var util=require(_0xd0a9('0x0'));var logger=require(_0xd0a9('0x1'))(_0xd0a9('0x2'));var moment=require(_0xd0a9('0x3'));var BPromise=require(_0xd0a9('0x4'));var rp=require(_0xd0a9('0x5'));var fs=require('fs');var path=require(_0xd0a9('0x6'));var rimraf=require('rimraf');var config=require(_0xd0a9('0x7'));var attributes=require(_0xd0a9('0x8'));module[_0xd0a9('0x9')]=function(_0x8d93c3,_0x4ce3bb){return _0x8d93c3[_0xd0a9('0xa')](_0xd0a9('0xb'),attributes,{'tableName':_0xd0a9('0xc'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 8f151b5..7a4cb29 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9028=['catch','lodash','util','bluebird','randomstring','ioredis','../../mysqldb','../../config/logger','rpc','../../config/environment','client','http','redis','localhost','socket.io-emitter','request','then','info','Team,\x20%s,\x20%s','request\x20sent','debug','Team,\x20%s,\x20%s,\x20%s','stringify','error','message','result'];(function(_0x2dea24,_0x2fc021){var _0x309d58=function(_0x2eb89f){while(--_0x2eb89f){_0x2dea24['push'](_0x2dea24['shift']());}};_0x309d58(++_0x2fc021);}(_0x9028,0x16d));var _0x8902=function(_0x72af73,_0x1d2c23){_0x72af73=_0x72af73-0x0;var _0x12ca53=_0x9028[_0x72af73];return _0x12ca53;};'use strict';var _=require(_0x8902('0x0'));var util=require(_0x8902('0x1'));var moment=require('moment');var BPromise=require(_0x8902('0x2'));var rs=require(_0x8902('0x3'));var fs=require('fs');var Redis=require(_0x8902('0x4'));var db=require(_0x8902('0x5'))['db'];var utils=require('../../config/utils');var logger=require(_0x8902('0x6'))(_0x8902('0x7'));var config=require(_0x8902('0x8'));var jayson=require('jayson/promise');var client=jayson[_0x8902('0x9')][_0x8902('0xa')]({'port':0x232a});config[_0x8902('0xb')]=_['defaults'](config[_0x8902('0xb')],{'host':_0x8902('0xc'),'port':0x18eb});var socket=require(_0x8902('0xd'))(new Redis(config['redis']));require('./team.socket')['register'](socket);function respondWithRpcPromise(_0x5cb00c,_0xc8919f,_0x3cd5d6){return new BPromise(function(_0x16082d,_0xb22d23){return client[_0x8902('0xe')](_0x5cb00c,_0x3cd5d6)[_0x8902('0xf')](function(_0xb6c75e){logger[_0x8902('0x10')](_0x8902('0x11'),_0xc8919f,_0x8902('0x12'));logger[_0x8902('0x13')](_0x8902('0x14'),_0xc8919f,_0x8902('0x12'),JSON[_0x8902('0x15')](_0xb6c75e));if(_0xb6c75e['error']){if(_0xb6c75e[_0x8902('0x16')]['code']===0x1f4){logger[_0x8902('0x16')](_0x8902('0x11'),_0xc8919f,_0xb6c75e[_0x8902('0x16')][_0x8902('0x17')]);return _0xb22d23(_0xb6c75e['error'][_0x8902('0x17')]);}logger['error'](_0x8902('0x11'),_0xc8919f,_0xb6c75e[_0x8902('0x16')][_0x8902('0x17')]);return _0x16082d(_0xb6c75e[_0x8902('0x16')][_0x8902('0x17')]);}else{logger['info'](_0x8902('0x11'),_0xc8919f,_0x8902('0x12'));_0x16082d(_0xb6c75e[_0x8902('0x18')][_0x8902('0x17')]);}})[_0x8902('0x19')](function(_0x3239dd){logger[_0x8902('0x16')](_0x8902('0x11'),_0xc8919f,_0x3239dd);_0xb22d23(_0x3239dd);});});}
\ No newline at end of file
+var _0x85dc=['lodash','util','moment','bluebird','../../mysqldb','../../config/utils','../../config/logger','../../config/environment','jayson/promise','client','http','redis','defaults','localhost','register','request','debug','Team,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','code','Team,\x20%s,\x20%s','message','info','result','catch'];(function(_0x53a19f,_0x52188d){var _0x2b89de=function(_0x4ac8e4){while(--_0x4ac8e4){_0x53a19f['push'](_0x53a19f['shift']());}};_0x2b89de(++_0x52188d);}(_0x85dc,0x195));var _0xc85d=function(_0x4d498f,_0x4bd59d){_0x4d498f=_0x4d498f-0x0;var _0x1bd422=_0x85dc[_0x4d498f];return _0x1bd422;};'use strict';var _=require(_0xc85d('0x0'));var util=require(_0xc85d('0x1'));var moment=require(_0xc85d('0x2'));var BPromise=require(_0xc85d('0x3'));var rs=require('randomstring');var fs=require('fs');var Redis=require('ioredis');var db=require(_0xc85d('0x4'))['db'];var utils=require(_0xc85d('0x5'));var logger=require(_0xc85d('0x6'))('rpc');var config=require(_0xc85d('0x7'));var jayson=require(_0xc85d('0x8'));var client=jayson[_0xc85d('0x9')][_0xc85d('0xa')]({'port':0x232a});config[_0xc85d('0xb')]=_[_0xc85d('0xc')](config[_0xc85d('0xb')],{'host':_0xc85d('0xd'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0xc85d('0xb')]));require('./team.socket')[_0xc85d('0xe')](socket);function respondWithRpcPromise(_0x12c602,_0x2695c4,_0x583ea6){return new BPromise(function(_0x57a926,_0x4ea898){return client[_0xc85d('0xf')](_0x12c602,_0x583ea6)['then'](function(_0x198d0a){logger['info']('Team,\x20%s,\x20%s',_0x2695c4,'request\x20sent');logger[_0xc85d('0x10')](_0xc85d('0x11'),_0x2695c4,_0xc85d('0x12'),JSON[_0xc85d('0x13')](_0x198d0a));if(_0x198d0a['error']){if(_0x198d0a[_0xc85d('0x14')][_0xc85d('0x15')]===0x1f4){logger[_0xc85d('0x14')](_0xc85d('0x16'),_0x2695c4,_0x198d0a[_0xc85d('0x14')][_0xc85d('0x17')]);return _0x4ea898(_0x198d0a[_0xc85d('0x14')][_0xc85d('0x17')]);}logger['error'](_0xc85d('0x16'),_0x2695c4,_0x198d0a['error']['message']);return _0x57a926(_0x198d0a[_0xc85d('0x14')]['message']);}else{logger[_0xc85d('0x18')](_0xc85d('0x16'),_0x2695c4,_0xc85d('0x12'));_0x57a926(_0x198d0a[_0xc85d('0x19')][_0xc85d('0x17')]);}})[_0xc85d('0x1a')](function(_0x5748e2){logger['error'](_0xc85d('0x16'),_0x2695c4,_0x5748e2);_0x4ea898(_0x5748e2);});});}
\ No newline at end of file
index 3def6a1..76b45cf 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5451=['remove','emit','removeListener','save'];(function(_0x2308c1,_0x38f3cd){var _0x364fb6=function(_0x4c697f){while(--_0x4c697f){_0x2308c1['push'](_0x2308c1['shift']());}};_0x364fb6(++_0x38f3cd);}(_0x5451,0x16f));var _0x1545=function(_0x34c663,_0xbb144f){_0x34c663=_0x34c663-0x0;var _0x31d00d=_0x5451[_0x34c663];return _0x31d00d;};'use strict';var TeamEvents=require('./team.events');var events=[_0x1545('0x0'),_0x1545('0x1'),'update'];function createListener(_0x5b6b59,_0x174421){return function(_0x513e3c){_0x174421[_0x1545('0x2')](_0x5b6b59,_0x513e3c);};}function removeListener(_0x5db312,_0xc43ea0){return function(){TeamEvents[_0x1545('0x3')](_0x5db312,_0xc43ea0);};}exports['register']=function(_0x35e486){for(var _0x3494d2=0x0,_0x6ebef7=events['length'];_0x3494d2<_0x6ebef7;_0x3494d2++){var _0x3ac32b=events[_0x3494d2];var _0x16bb08=createListener('team:'+_0x3ac32b,_0x35e486);TeamEvents['on'](_0x3ac32b,_0x16bb08);}};
\ No newline at end of file
+var _0x3f81=['save','remove','update','emit','removeListener','register','length','team:','./team.events'];(function(_0x59d91d,_0x4a6bd6){var _0x13f485=function(_0x17c595){while(--_0x17c595){_0x59d91d['push'](_0x59d91d['shift']());}};_0x13f485(++_0x4a6bd6);}(_0x3f81,0x11f));var _0x13f8=function(_0x14fefd,_0x4cebd2){_0x14fefd=_0x14fefd-0x0;var _0x104a46=_0x3f81[_0x14fefd];return _0x104a46;};'use strict';var TeamEvents=require(_0x13f8('0x0'));var events=[_0x13f8('0x1'),_0x13f8('0x2'),_0x13f8('0x3')];function createListener(_0x36e024,_0x49756b){return function(_0xd994a1){_0x49756b[_0x13f8('0x4')](_0x36e024,_0xd994a1);};}function removeListener(_0x475011,_0x484e7b){return function(){TeamEvents[_0x13f8('0x5')](_0x475011,_0x484e7b);};}exports[_0x13f8('0x6')]=function(_0x46fd9a){for(var _0x1e329f=0x0,_0x1e9246=events[_0x13f8('0x7')];_0x1e329f<_0x1e9246;_0x1e329f++){var _0x41564a=events[_0x1e329f];var _0x2f90f4=createListener(_0x13f8('0x8')+_0x41564a,_0x46fd9a);TeamEvents['on'](_0x41564a,_0x2f90f4);}};
\ No newline at end of file
diff --git a/server/api/teamVoicePrefix/teamVoicePrefix.attributes.js b/server/api/teamVoicePrefix/teamVoicePrefix.attributes.js
deleted file mode 100644 (file)
index 5f87179..0000000
+++ /dev/null
@@ -1,18 +0,0 @@
-// *************************************************************************
-// *                                                                       *
-// * 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 _0xf403=['INTEGER','sequelize'];(function(_0x3b90ab,_0x174a22){var _0x206e92=function(_0x21fbd3){while(--_0x21fbd3){_0x3b90ab['push'](_0x3b90ab['shift']());}};_0x206e92(++_0x174a22);}(_0xf403,0x1d3));var _0x3f40=function(_0x1ed5ea,_0x592d84){_0x1ed5ea=_0x1ed5ea-0x0;var _0x411760=_0xf403[_0x1ed5ea];return _0x411760;};'use strict';var Sequelize=require(_0x3f40('0x0'));module['exports']={'TeamId':{'type':Sequelize[_0x3f40('0x1')]},'VoicePrefixId':{'type':Sequelize[_0x3f40('0x1')]}};
\ No newline at end of file
diff --git a/server/api/teamVoicePrefix/teamVoicePrefix.model.js b/server/api/teamVoicePrefix/teamVoicePrefix.model.js
deleted file mode 100644 (file)
index 449208e..0000000
+++ /dev/null
@@ -1,18 +0,0 @@
-// *************************************************************************
-// *                                                                       *
-// * 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 _0xae8e=['lodash','util','../../config/logger','api','moment','bluebird','request-promise','path','rimraf','../../config/environment','./teamVoicePrefix.attributes','exports','define','TeamVoicePrefix','team_has_voice_prefixes'];(function(_0x1f4dc4,_0x3c252b){var _0x3cf47e=function(_0x138d2a){while(--_0x138d2a){_0x1f4dc4['push'](_0x1f4dc4['shift']());}};_0x3cf47e(++_0x3c252b);}(_0xae8e,0xc3));var _0xeae8=function(_0x382760,_0x59c55f){_0x382760=_0x382760-0x0;var _0x3ca405=_0xae8e[_0x382760];return _0x3ca405;};'use strict';var _=require(_0xeae8('0x0'));var util=require(_0xeae8('0x1'));var logger=require(_0xeae8('0x2'))(_0xeae8('0x3'));var moment=require(_0xeae8('0x4'));var BPromise=require(_0xeae8('0x5'));var rp=require(_0xeae8('0x6'));var fs=require('fs');var path=require(_0xeae8('0x7'));var rimraf=require(_0xeae8('0x8'));var config=require(_0xeae8('0x9'));var attributes=require(_0xeae8('0xa'));module[_0xeae8('0xb')]=function(_0x23b0d7,_0x17345e){return _0x23b0d7[_0xeae8('0xc')](_0xeae8('0xd'),attributes,{'tableName':_0xeae8('0xe'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index f698d04..562ac4e 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(_0x114356,_0x561b7a){var _0xd46fa7=function(_0x4b93ef){while(--_0x4b93ef){_0x114356['push'](_0x114356['shift']());}};_0xd46fa7(++_0x561b7a);}(_0x9c44,0x178));var _0x49c4=function(_0x2641f9,_0x26715f){_0x2641f9=_0x2641f9-0x0;var _0x585741=_0x9c44[_0x2641f9];return _0x585741;};'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 _0xe706=['../../components/interaction/service','../../config/environment','exports','multer','util','path','express','Router','fs-extra','../../components/auth/service'];(function(_0x5782fe,_0xb97b65){var _0x33e9d1=function(_0x4f59eb){while(--_0x4f59eb){_0x5782fe['push'](_0x5782fe['shift']());}};_0x33e9d1(++_0xb97b65);}(_0xe706,0xa3));var _0x6e70=function(_0x44dc4c,_0x357e6a){_0x44dc4c=_0x44dc4c-0x0;var _0x4e644e=_0xe706[_0x44dc4c];return _0x4e644e;};'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 361e8b2..d539cc3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4e3d=['exports','sequelize'];(function(_0x189f21,_0x54f954){var _0x2a2eca=function(_0x18c452){while(--_0x18c452){_0x189f21['push'](_0x189f21['shift']());}};_0x2a2eca(++_0x54f954);}(_0x4e3d,0x12b));var _0xd4e3=function(_0x17d9e3,_0x1f969c){_0x17d9e3=_0x17d9e3-0x0;var _0x14192d=_0x4e3d[_0x17d9e3];return _0x14192d;};'use strict';var Sequelize=require(_0xd4e3('0x0'));module[_0xd4e3('0x1')]={'penalty':{'type':Sequelize['INTEGER'],'defaultValue':0x0}};
\ No newline at end of file
+var _0xf5f6=['sequelize','exports','INTEGER'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0xf5f6,0x84));var _0x6f5f=function(_0x518387,_0x1e2491){_0x518387=_0x518387-0x0;var _0x2f9e6b=_0xf5f6[_0x518387];return _0x2f9e6b;};'use strict';var Sequelize=require(_0x6f5f('0x0'));module[_0x6f5f('0x1')]={'penalty':{'type':Sequelize[_0x6f5f('0x2')],'defaultValue':0x0}};
\ No newline at end of file
index 48b6e3d..ae9f2d5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1de4=['path','../../config/environment','./teamVoiceQueue.attributes','define','TeamVoiceQueue','lodash','util','../../config/logger','api','bluebird','request-promise'];(function(_0x1cf0e1,_0x542798){var _0x2dbae4=function(_0x156208){while(--_0x156208){_0x1cf0e1['push'](_0x1cf0e1['shift']());}};_0x2dbae4(++_0x542798);}(_0x1de4,0x94));var _0x41de=function(_0x368161,_0x56df36){_0x368161=_0x368161-0x0;var _0x5f50e2=_0x1de4[_0x368161];return _0x5f50e2;};'use strict';var _=require(_0x41de('0x0'));var util=require(_0x41de('0x1'));var logger=require(_0x41de('0x2'))(_0x41de('0x3'));var moment=require('moment');var BPromise=require(_0x41de('0x4'));var rp=require(_0x41de('0x5'));var fs=require('fs');var path=require(_0x41de('0x6'));var rimraf=require('rimraf');var config=require(_0x41de('0x7'));var attributes=require(_0x41de('0x8'));module['exports']=function(_0x2e7196,_0x122565){return _0x2e7196[_0x41de('0x9')](_0x41de('0xa'),attributes,{'tableName':'team_has_voice_queues','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x2821=['bluebird','request-promise','path','rimraf','../../config/environment','./teamVoiceQueue.attributes','define','TeamVoiceQueue','team_has_voice_queues','lodash','util','../../config/logger','api','moment'];(function(_0xc4001c,_0x1bf8f0){var _0x49f7bc=function(_0x1059b8){while(--_0x1059b8){_0xc4001c['push'](_0xc4001c['shift']());}};_0x49f7bc(++_0x1bf8f0);}(_0x2821,0x87));var _0x1282=function(_0x1a0858,_0x276143){_0x1a0858=_0x1a0858-0x0;var _0x582395=_0x2821[_0x1a0858];return _0x582395;};'use strict';var _=require(_0x1282('0x0'));var util=require(_0x1282('0x1'));var logger=require(_0x1282('0x2'))(_0x1282('0x3'));var moment=require(_0x1282('0x4'));var BPromise=require(_0x1282('0x5'));var rp=require(_0x1282('0x6'));var fs=require('fs');var path=require(_0x1282('0x7'));var rimraf=require(_0x1282('0x8'));var config=require(_0x1282('0x9'));var attributes=require(_0x1282('0xa'));module['exports']=function(_0x31e0cf,_0x1843f2){return _0x31e0cf[_0x1282('0xb')](_0x1282('0xc'),attributes,{'tableName':_0x1282('0xd'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index cfb4795..ac5c266 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa6b3=['../../config/environment','jayson/promise','client','http','request','info','TeamVoiceQueue,\x20%s,\x20%s','request\x20sent','TeamVoiceQueue,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','util','bluebird','ioredis','../../mysqldb','../../config/logger','rpc'];(function(_0x3d789d,_0x534c06){var _0x464ae9=function(_0x4cd8d5){while(--_0x4cd8d5){_0x3d789d['push'](_0x3d789d['shift']());}};_0x464ae9(++_0x534c06);}(_0xa6b3,0x72));var _0x3a6b=function(_0x55f1b1,_0x21573e){_0x55f1b1=_0x55f1b1-0x0;var _0x95fe21=_0xa6b3[_0x55f1b1];return _0x95fe21;};'use strict';var _=require('lodash');var util=require(_0x3a6b('0x0'));var moment=require('moment');var BPromise=require(_0x3a6b('0x1'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x3a6b('0x2'));var db=require(_0x3a6b('0x3'))['db'];var utils=require('../../config/utils');var logger=require(_0x3a6b('0x4'))(_0x3a6b('0x5'));var config=require(_0x3a6b('0x6'));var jayson=require(_0x3a6b('0x7'));var client=jayson[_0x3a6b('0x8')][_0x3a6b('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x5b6e5c,_0x38bf9a,_0x2e9e61){return new BPromise(function(_0x1798fb,_0x43e67e){return client[_0x3a6b('0xa')](_0x5b6e5c,_0x2e9e61)['then'](function(_0x86a27d){logger[_0x3a6b('0xb')](_0x3a6b('0xc'),_0x38bf9a,_0x3a6b('0xd'));logger['debug'](_0x3a6b('0xe'),_0x38bf9a,'request\x20sent',JSON[_0x3a6b('0xf')](_0x86a27d));if(_0x86a27d[_0x3a6b('0x10')]){if(_0x86a27d['error'][_0x3a6b('0x11')]===0x1f4){logger[_0x3a6b('0x10')](_0x3a6b('0xc'),_0x38bf9a,_0x86a27d[_0x3a6b('0x10')][_0x3a6b('0x12')]);return _0x43e67e(_0x86a27d[_0x3a6b('0x10')][_0x3a6b('0x12')]);}logger[_0x3a6b('0x10')](_0x3a6b('0xc'),_0x38bf9a,_0x86a27d[_0x3a6b('0x10')][_0x3a6b('0x12')]);return _0x1798fb(_0x86a27d['error'][_0x3a6b('0x12')]);}else{logger[_0x3a6b('0xb')]('TeamVoiceQueue,\x20%s,\x20%s',_0x38bf9a,_0x3a6b('0xd'));_0x1798fb(_0x86a27d[_0x3a6b('0x13')][_0x3a6b('0x12')]);}})['catch'](function(_0x264acd){logger[_0x3a6b('0x10')]('TeamVoiceQueue,\x20%s,\x20%s',_0x38bf9a,_0x264acd);_0x43e67e(_0x264acd);});});}
\ No newline at end of file
+var _0x3dcd=['http','request','then','TeamVoiceQueue,\x20%s,\x20%s','request\x20sent','TeamVoiceQueue,\x20%s,\x20%s,\x20%s','stringify','error','code','message','info','result','catch','lodash','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','rpc','jayson/promise','client'];(function(_0x295f6d,_0x59bcbb){var _0x2e8e46=function(_0xd188b0){while(--_0xd188b0){_0x295f6d['push'](_0x295f6d['shift']());}};_0x2e8e46(++_0x59bcbb);}(_0x3dcd,0xc5));var _0xd3dc=function(_0x4d572e,_0x59ceb7){_0x4d572e=_0x4d572e-0x0;var _0x43a969=_0x3dcd[_0x4d572e];return _0x43a969;};'use strict';var _=require(_0xd3dc('0x0'));var util=require('util');var moment=require(_0xd3dc('0x1'));var BPromise=require(_0xd3dc('0x2'));var rs=require(_0xd3dc('0x3'));var fs=require('fs');var Redis=require(_0xd3dc('0x4'));var db=require(_0xd3dc('0x5'))['db'];var utils=require(_0xd3dc('0x6'));var logger=require('../../config/logger')(_0xd3dc('0x7'));var config=require('../../config/environment');var jayson=require(_0xd3dc('0x8'));var client=jayson[_0xd3dc('0x9')][_0xd3dc('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x41ffde,_0x2d62a9,_0x3a5165){return new BPromise(function(_0x40822a,_0x530406){return client[_0xd3dc('0xb')](_0x41ffde,_0x3a5165)[_0xd3dc('0xc')](function(_0x26c854){logger['info'](_0xd3dc('0xd'),_0x2d62a9,_0xd3dc('0xe'));logger['debug'](_0xd3dc('0xf'),_0x2d62a9,'request\x20sent',JSON[_0xd3dc('0x10')](_0x26c854));if(_0x26c854[_0xd3dc('0x11')]){if(_0x26c854['error'][_0xd3dc('0x12')]===0x1f4){logger[_0xd3dc('0x11')](_0xd3dc('0xd'),_0x2d62a9,_0x26c854['error'][_0xd3dc('0x13')]);return _0x530406(_0x26c854[_0xd3dc('0x11')][_0xd3dc('0x13')]);}logger[_0xd3dc('0x11')](_0xd3dc('0xd'),_0x2d62a9,_0x26c854['error'][_0xd3dc('0x13')]);return _0x40822a(_0x26c854[_0xd3dc('0x11')][_0xd3dc('0x13')]);}else{logger[_0xd3dc('0x14')](_0xd3dc('0xd'),_0x2d62a9,'request\x20sent');_0x40822a(_0x26c854[_0xd3dc('0x15')]['message']);}})[_0xd3dc('0x16')](function(_0x1ce024){logger['error'](_0xd3dc('0xd'),_0x2d62a9,_0x1ce024);_0x530406(_0x1ce024);});});}
\ No newline at end of file
index 9f132a5..317ad1f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x531a=['get','index','/:id','isAuthenticated','show','create','update','delete','destroy','multer','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment'];(function(_0x24e266,_0x50db4c){var _0x467075=function(_0x5d1f0a){while(--_0x5d1f0a){_0x24e266['push'](_0x24e266['shift']());}};_0x467075(++_0x50db4c);}(_0x531a,0x100));var _0xa531=function(_0x39ad4c,_0x2fa27e){_0x39ad4c=_0x39ad4c-0x0;var _0xf3314d=_0x531a[_0x39ad4c];return _0xf3314d;};'use strict';var multer=require(_0xa531('0x0'));var util=require(_0xa531('0x1'));var path=require(_0xa531('0x2'));var timeout=require(_0xa531('0x3'));var express=require(_0xa531('0x4'));var router=express[_0xa531('0x5')]();var fs_extra=require(_0xa531('0x6'));var auth=require(_0xa531('0x7'));var interaction=require(_0xa531('0x8'));var config=require(_0xa531('0x9'));var controller=require('./template.controller');router[_0xa531('0xa')]('/',auth['isAuthenticated'](),controller[_0xa531('0xb')]);router[_0xa531('0xa')](_0xa531('0xc'),auth[_0xa531('0xd')](),controller[_0xa531('0xe')]);router['post']('/',auth[_0xa531('0xd')](),controller[_0xa531('0xf')]);router['put'](_0xa531('0xc'),auth[_0xa531('0xd')](),controller[_0xa531('0x10')]);router[_0xa531('0x11')](_0xa531('0xc'),auth['isAuthenticated'](),controller[_0xa531('0x12')]);module['exports']=router;
\ No newline at end of file
+var _0xf79e=['put','/:id','update','delete','destroy','util','path','connect-timeout','Router','fs-extra','../../config/environment','./template.controller','get','isAuthenticated','index','post'];(function(_0x520a5a,_0x1ffb94){var _0x1fd80a=function(_0x38c9b6){while(--_0x38c9b6){_0x520a5a['push'](_0x520a5a['shift']());}};_0x1fd80a(++_0x1ffb94);}(_0xf79e,0x185));var _0xef79=function(_0x2fc40c,_0x37f7d0){_0x2fc40c=_0x2fc40c-0x0;var _0x55e890=_0xf79e[_0x2fc40c];return _0x55e890;};'use strict';var multer=require('multer');var util=require(_0xef79('0x0'));var path=require(_0xef79('0x1'));var timeout=require(_0xef79('0x2'));var express=require('express');var router=express[_0xef79('0x3')]();var fs_extra=require(_0xef79('0x4'));var auth=require('../../components/auth/service');var interaction=require('../../components/interaction/service');var config=require(_0xef79('0x5'));var controller=require(_0xef79('0x6'));router[_0xef79('0x7')]('/',auth[_0xef79('0x8')](),controller[_0xef79('0x9')]);router[_0xef79('0x7')]('/:id',auth[_0xef79('0x8')](),controller['show']);router[_0xef79('0xa')]('/',auth[_0xef79('0x8')](),controller['create']);router[_0xef79('0xb')](_0xef79('0xc'),auth[_0xef79('0x8')](),controller[_0xef79('0xd')]);router[_0xef79('0xe')](_0xef79('0xc'),auth[_0xef79('0x8')](),controller[_0xef79('0xf')]);module['exports']=router;
\ No newline at end of file
index b78db5f..294b847 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc5b7=['TEXT','sequelize','exports','STRING'];(function(_0x5dbb74,_0x37c5a2){var _0x5483c2=function(_0x351f8a){while(--_0x351f8a){_0x5dbb74['push'](_0x5dbb74['shift']());}};_0x5483c2(++_0x37c5a2);}(_0xc5b7,0x1e1));var _0x7c5b=function(_0x3100b5,_0x35c405){_0x3100b5=_0x3100b5-0x0;var _0x161d7d=_0xc5b7[_0x3100b5];return _0x161d7d;};'use strict';var Sequelize=require(_0x7c5b('0x0'));module[_0x7c5b('0x1')]={'name':{'type':Sequelize['STRING']},'description':{'type':Sequelize[_0x7c5b('0x2')]},'html':{'type':Sequelize[_0x7c5b('0x3')]}};
\ No newline at end of file
+var _0x0ed4=['exports','STRING','TEXT'];(function(_0x38a7ac,_0x45514b){var _0x53061a=function(_0x1d2469){while(--_0x1d2469){_0x38a7ac['push'](_0x38a7ac['shift']());}};_0x53061a(++_0x45514b);}(_0x0ed4,0x162));var _0x40ed=function(_0x1b270e,_0x3c3f37){_0x1b270e=_0x1b270e-0x0;var _0x271537=_0x0ed4[_0x1b270e];return _0x271537;};'use strict';var Sequelize=require('sequelize');module[_0x40ed('0x0')]={'name':{'type':Sequelize[_0x40ed('0x1')]},'description':{'type':Sequelize[_0x40ed('0x1')]},'html':{'type':Sequelize[_0x40ed('0x2')]}};
\ No newline at end of file
index 6c85588..63d977f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xfd31=['model','query','keys','attributes','intersection','fields','hasOwnProperty','nolimit','order','sort','pick','filters','filter','merge','where','type','VIRTUAL','includeAll','include','rows','params','options','find','catch','create','body','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','autoAssociation','error','update','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','sendStatus','status','end','json','undefined','limit','count','offset','set','save','then','get','Templates','UserProfileResource','destroy','name','send','index','map','Template','rawAttributes','fieldName','key'];(function(_0x8d52b4,_0x497f8f){var _0x4bf890=function(_0x3588f3){while(--_0x3588f3){_0x8d52b4['push'](_0x8d52b4['shift']());}};_0x4bf890(++_0x497f8f);}(_0xfd31,0x16c));var _0x1fd3=function(_0x1c6fce,_0x4e3269){_0x1c6fce=_0x1c6fce-0x0;var _0x432804=_0xfd31[_0x1c6fce];return _0x432804;};'use strict';var emlformat=require(_0x1fd3('0x0'));var rimraf=require(_0x1fd3('0x1'));var zipdir=require(_0x1fd3('0x2'));var jsonpatch=require(_0x1fd3('0x3'));var rp=require(_0x1fd3('0x4'));var moment=require(_0x1fd3('0x5'));var BPromise=require(_0x1fd3('0x6'));var Mustache=require(_0x1fd3('0x7'));var util=require(_0x1fd3('0x8'));var path=require(_0x1fd3('0x9'));var sox=require(_0x1fd3('0xa'));var csv=require(_0x1fd3('0xb'));var ejs=require(_0x1fd3('0xc'));var fs=require('fs');var fs_extra=require(_0x1fd3('0xd'));var _=require(_0x1fd3('0xe'));var squel=require(_0x1fd3('0xf'));var crypto=require(_0x1fd3('0x10'));var jsforce=require('jsforce');var deskjs=require(_0x1fd3('0x11'));var toCsv=require('to-csv');var querystring=require(_0x1fd3('0x12'));var Papa=require(_0x1fd3('0x13'));var Redis=require(_0x1fd3('0x14'));var authService=require(_0x1fd3('0x15'));var qs=require('../../components/parsers/qs');var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x1fd3('0x16'));var logger=require(_0x1fd3('0x17'))(_0x1fd3('0x18'));var utils=require(_0x1fd3('0x19'));var config=require(_0x1fd3('0x1a'));var licenseUtil=require(_0x1fd3('0x1b'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x468191,_0x4d18e6){_0x4d18e6=_0x4d18e6||0xcc;return function(_0xb6bbf1){if(_0xb6bbf1){return _0x468191[_0x1fd3('0x1c')](_0x4d18e6);}return _0x468191[_0x1fd3('0x1d')](_0x4d18e6)[_0x1fd3('0x1e')]();};}function respondWithResult(_0x54d9e5,_0x4a248b){_0x4a248b=_0x4a248b||0xc8;return function(_0x196212){if(_0x196212){return _0x54d9e5[_0x1fd3('0x1d')](_0x4a248b)[_0x1fd3('0x1f')](_0x196212);}};}function respondWithFilteredResult(_0x472bb5,_0x3695f0){return function(_0x8b150){if(_0x8b150){var _0x374229=typeof _0x3695f0['offset']===_0x1fd3('0x20')&&typeof _0x3695f0[_0x1fd3('0x21')]===_0x1fd3('0x20');var _0x5adbce=_0x8b150[_0x1fd3('0x22')];var _0x50e946=_0x374229?0x0:_0x3695f0[_0x1fd3('0x23')];var _0x513692=_0x374229?_0x8b150[_0x1fd3('0x22')]:_0x3695f0[_0x1fd3('0x23')]+_0x3695f0[_0x1fd3('0x21')];var _0x3c610b;if(_0x513692>=_0x5adbce){_0x513692=_0x5adbce;_0x3c610b=0xc8;}else{_0x3c610b=0xce;}_0x472bb5[_0x1fd3('0x1d')](_0x3c610b);return _0x472bb5[_0x1fd3('0x24')]('Content-Range',_0x50e946+'-'+_0x513692+'/'+_0x5adbce)['json'](_0x8b150);}return null;};}function patchUpdates(_0x64c453){return function(_0x48df75){try{jsonpatch['apply'](_0x48df75,_0x64c453,!![]);}catch(_0x1ee467){return BPromise['reject'](_0x1ee467);}return _0x48df75[_0x1fd3('0x25')]();};}function saveUpdates(_0x2cfa9a,_0x3b7768){return function(_0x320f45){if(_0x320f45){return _0x320f45['update'](_0x2cfa9a)[_0x1fd3('0x26')](function(_0x3c857e){return _0x3c857e;});}return null;};}function removeEntity(_0x2b2746,_0x528c91){return function(_0x1ef037){if(_0x1ef037){return _0x1ef037['destroy']()[_0x1fd3('0x26')](function(){var _0xe9cfec=_0x1ef037[_0x1fd3('0x27')]({'plain':!![]});var _0x504953=_0x1fd3('0x28');return db[_0x1fd3('0x29')][_0x1fd3('0x2a')]({'where':{'type':_0x504953,'resourceId':_0xe9cfec['id']}})[_0x1fd3('0x26')](function(){return _0x1ef037;});})[_0x1fd3('0x26')](function(){_0x2b2746[_0x1fd3('0x1d')](0xcc)[_0x1fd3('0x1e')]();});}};}function handleEntityNotFound(_0x5c9a67,_0x52f89c){return function(_0x281708){if(!_0x281708){_0x5c9a67[_0x1fd3('0x1c')](0x194);}return _0x281708;};}function handleError(_0x42c4c4,_0x54311c){_0x54311c=_0x54311c||0x1f4;return function(_0x381d7){logger['error'](_0x381d7['stack']);if(_0x381d7[_0x1fd3('0x2b')]){delete _0x381d7['name'];}_0x42c4c4[_0x1fd3('0x1d')](_0x54311c)[_0x1fd3('0x2c')](_0x381d7);};}exports[_0x1fd3('0x2d')]=function(_0x542326,_0x107c17){var _0x32a24c={},_0x2baa50={},_0x3593a1={'count':0x0,'rows':[]};var _0x142558=_[_0x1fd3('0x2e')](db[_0x1fd3('0x2f')][_0x1fd3('0x30')],function(_0x5ccd03){return{'name':_0x5ccd03[_0x1fd3('0x31')],'type':_0x5ccd03['type'][_0x1fd3('0x32')]};});_0x2baa50[_0x1fd3('0x33')]=_[_0x1fd3('0x2e')](_0x142558,_0x1fd3('0x2b'));_0x2baa50[_0x1fd3('0x34')]=_[_0x1fd3('0x35')](_0x542326[_0x1fd3('0x34')]);_0x2baa50['filters']=_['intersection'](_0x2baa50[_0x1fd3('0x33')],_0x2baa50[_0x1fd3('0x34')]);_0x32a24c[_0x1fd3('0x36')]=_[_0x1fd3('0x37')](_0x2baa50[_0x1fd3('0x33')],qs['fields'](_0x542326['query'][_0x1fd3('0x38')]));_0x32a24c[_0x1fd3('0x36')]=_0x32a24c[_0x1fd3('0x36')]['length']?_0x32a24c['attributes']:_0x2baa50[_0x1fd3('0x33')];if(!_0x542326[_0x1fd3('0x34')][_0x1fd3('0x39')](_0x1fd3('0x3a'))){_0x32a24c['limit']=qs[_0x1fd3('0x21')](_0x542326[_0x1fd3('0x34')]['limit']);_0x32a24c[_0x1fd3('0x23')]=qs[_0x1fd3('0x23')](_0x542326[_0x1fd3('0x34')][_0x1fd3('0x23')]);}_0x32a24c[_0x1fd3('0x3b')]=qs[_0x1fd3('0x3c')](_0x542326[_0x1fd3('0x34')][_0x1fd3('0x3c')]);_0x32a24c['where']=qs['filters'](_[_0x1fd3('0x3d')](_0x542326[_0x1fd3('0x34')],_0x2baa50[_0x1fd3('0x3e')]),_0x142558);if(_0x542326[_0x1fd3('0x34')][_0x1fd3('0x3f')]){_0x32a24c['where']=_[_0x1fd3('0x40')](_0x32a24c[_0x1fd3('0x41')],{'$or':_['map'](_0x142558,function(_0x3570ff){if(_0x3570ff[_0x1fd3('0x42')]!==_0x1fd3('0x43')){var _0x499cf1={};_0x499cf1[_0x3570ff[_0x1fd3('0x2b')]]={'$like':'%'+_0x542326[_0x1fd3('0x34')]['filter']+'%'};return _0x499cf1;}})});}_0x32a24c=_[_0x1fd3('0x40')]({},_0x32a24c,_0x542326['options']);var _0x10028f={'where':_0x32a24c[_0x1fd3('0x41')]};return db[_0x1fd3('0x2f')]['count'](_0x10028f)[_0x1fd3('0x26')](function(_0x3da365){_0x3593a1['count']=_0x3da365;if(_0x542326['query'][_0x1fd3('0x44')]){_0x32a24c[_0x1fd3('0x45')]=[{'all':!![]}];}return db[_0x1fd3('0x2f')]['findAll'](_0x32a24c);})[_0x1fd3('0x26')](function(_0x370852){_0x3593a1[_0x1fd3('0x46')]=_0x370852;return _0x3593a1;})[_0x1fd3('0x26')](respondWithFilteredResult(_0x107c17,_0x32a24c))['catch'](handleError(_0x107c17,null));};exports['show']=function(_0x597ab1,_0x411237){var _0x2217a4={'raw':!![],'where':{'id':_0x597ab1[_0x1fd3('0x47')]['id']}},_0x223d43={};_0x223d43[_0x1fd3('0x33')]=_[_0x1fd3('0x35')](db[_0x1fd3('0x2f')]['rawAttributes']);_0x223d43[_0x1fd3('0x34')]=_[_0x1fd3('0x35')](_0x597ab1[_0x1fd3('0x34')]);_0x223d43['filters']=_[_0x1fd3('0x37')](_0x223d43[_0x1fd3('0x33')],_0x223d43[_0x1fd3('0x34')]);_0x2217a4[_0x1fd3('0x36')]=_[_0x1fd3('0x37')](_0x223d43[_0x1fd3('0x33')],qs[_0x1fd3('0x38')](_0x597ab1[_0x1fd3('0x34')]['fields']));_0x2217a4[_0x1fd3('0x36')]=_0x2217a4[_0x1fd3('0x36')]['length']?_0x2217a4[_0x1fd3('0x36')]:_0x223d43[_0x1fd3('0x33')];if(_0x597ab1[_0x1fd3('0x34')][_0x1fd3('0x44')]){_0x2217a4[_0x1fd3('0x45')]=[{'all':!![]}];}_0x2217a4=_[_0x1fd3('0x40')]({},_0x2217a4,_0x597ab1[_0x1fd3('0x48')]);return db[_0x1fd3('0x2f')][_0x1fd3('0x49')](_0x2217a4)[_0x1fd3('0x26')](handleEntityNotFound(_0x411237,null))[_0x1fd3('0x26')](respondWithResult(_0x411237,null))[_0x1fd3('0x4a')](handleError(_0x411237,null));};exports[_0x1fd3('0x4b')]=function(_0x2b0fc8,_0x26f561){return db['Template'][_0x1fd3('0x4b')](_0x2b0fc8[_0x1fd3('0x4c')],{})[_0x1fd3('0x26')](function(_0x512baf){var _0x2177d9=_0x2b0fc8[_0x1fd3('0x4d')]['get']({'plain':!![]});if(!_0x2177d9)throw new Error(_0x1fd3('0x4e'));if(_0x2177d9[_0x1fd3('0x4f')]===_0x1fd3('0x4d')){var _0x3e927e=_0x512baf[_0x1fd3('0x27')]({'plain':!![]});var _0x51d478=_0x1fd3('0x28');return db['UserProfileSection']['find']({'where':{'name':_0x51d478,'userProfileId':_0x2177d9['userProfileId']},'raw':!![]})['then'](function(_0x4a1511){if(_0x4a1511&&_0x4a1511[_0x1fd3('0x50')]===0x0){return db[_0x1fd3('0x29')][_0x1fd3('0x4b')]({'name':_0x3e927e[_0x1fd3('0x2b')],'resourceId':_0x3e927e['id'],'type':_0x4a1511[_0x1fd3('0x2b')],'sectionId':_0x4a1511['id']},{})[_0x1fd3('0x26')](function(){return _0x512baf;});}else{return _0x512baf;}})['catch'](function(_0x21d09e){logger[_0x1fd3('0x51')]('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0x21d09e);throw _0x21d09e;});}return _0x512baf;})[_0x1fd3('0x26')](respondWithResult(_0x26f561,0xc9))[_0x1fd3('0x4a')](handleError(_0x26f561,null));};exports[_0x1fd3('0x52')]=function(_0x4fa212,_0x581b9e){if(_0x4fa212[_0x1fd3('0x4c')]['id']){delete _0x4fa212[_0x1fd3('0x4c')]['id'];}return db[_0x1fd3('0x2f')]['find']({'where':{'id':_0x4fa212[_0x1fd3('0x47')]['id']}})[_0x1fd3('0x26')](handleEntityNotFound(_0x581b9e,null))[_0x1fd3('0x26')](saveUpdates(_0x4fa212[_0x1fd3('0x4c')],null))['then'](respondWithResult(_0x581b9e,null))[_0x1fd3('0x4a')](handleError(_0x581b9e,null));};exports['destroy']=function(_0x7cbd7e,_0x2a7868){return db[_0x1fd3('0x2f')][_0x1fd3('0x49')]({'where':{'id':_0x7cbd7e[_0x1fd3('0x47')]['id']}})['then'](handleEntityNotFound(_0x2a7868,null))[_0x1fd3('0x26')](removeEntity(_0x2a7868,null))[_0x1fd3('0x4a')](handleError(_0x2a7868,null));};
\ No newline at end of file
+var _0x204b=['includeAll','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','Templates','find','autoAssociation','create','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','update','body','eml-format','rimraf','zip-dir','fast-json-patch','moment','bluebird','mustache','util','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/parsers/qs','../../config/license/hardware','../../config/logger','api','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','json','offset','undefined','count','set','Content-Range','apply','reject','save','then','destroy','get','end','error','stack','name','send','index','map','Template','rawAttributes','fieldName','key','model','keys','query','filters','intersection','attributes','hasOwnProperty','nolimit','limit','order','sort','pick','filter','where','merge','type','VIRTUAL','include','findAll','rows','catch','params','length'];(function(_0x25e77e,_0x1ed42e){var _0x12f277=function(_0x2d3cc7){while(--_0x2d3cc7){_0x25e77e['push'](_0x25e77e['shift']());}};_0x12f277(++_0x1ed42e);}(_0x204b,0x1b9));var _0xb204=function(_0x42cae2,_0x284ef8){_0x42cae2=_0x42cae2-0x0;var _0x5f256f=_0x204b[_0x42cae2];return _0x5f256f;};'use strict';var emlformat=require(_0xb204('0x0'));var rimraf=require(_0xb204('0x1'));var zipdir=require(_0xb204('0x2'));var jsonpatch=require(_0xb204('0x3'));var rp=require('request-promise');var moment=require(_0xb204('0x4'));var BPromise=require(_0xb204('0x5'));var Mustache=require(_0xb204('0x6'));var util=require(_0xb204('0x7'));var path=require('path');var sox=require(_0xb204('0x8'));var csv=require(_0xb204('0x9'));var ejs=require(_0xb204('0xa'));var fs=require('fs');var fs_extra=require(_0xb204('0xb'));var _=require(_0xb204('0xc'));var squel=require(_0xb204('0xd'));var crypto=require(_0xb204('0xe'));var jsforce=require(_0xb204('0xf'));var deskjs=require(_0xb204('0x10'));var toCsv=require(_0xb204('0x9'));var querystring=require(_0xb204('0x11'));var Papa=require(_0xb204('0x12'));var Redis=require(_0xb204('0x13'));var authService=require('../../components/auth/service');var qs=require(_0xb204('0x14'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0xb204('0x15'));var logger=require(_0xb204('0x16'))(_0xb204('0x17'));var utils=require('../../config/utils');var config=require(_0xb204('0x18'));var licenseUtil=require(_0xb204('0x19'));var db=require(_0xb204('0x1a'))['db'];function respondWithStatusCode(_0x2da318,_0x516cae){_0x516cae=_0x516cae||0xcc;return function(_0x4e8000){if(_0x4e8000){return _0x2da318[_0xb204('0x1b')](_0x516cae);}return _0x2da318[_0xb204('0x1c')](_0x516cae)['end']();};}function respondWithResult(_0x288c49,_0x123fc0){_0x123fc0=_0x123fc0||0xc8;return function(_0xf72ed){if(_0xf72ed){return _0x288c49['status'](_0x123fc0)[_0xb204('0x1d')](_0xf72ed);}};}function respondWithFilteredResult(_0x69836,_0x3cf48c){return function(_0x25c2a3){if(_0x25c2a3){var _0x464213=typeof _0x3cf48c[_0xb204('0x1e')]===_0xb204('0x1f')&&typeof _0x3cf48c['limit']===_0xb204('0x1f');var _0x3b4929=_0x25c2a3[_0xb204('0x20')];var _0x152798=_0x464213?0x0:_0x3cf48c[_0xb204('0x1e')];var _0x4aa972=_0x464213?_0x25c2a3[_0xb204('0x20')]:_0x3cf48c[_0xb204('0x1e')]+_0x3cf48c['limit'];var _0x9f56d1;if(_0x4aa972>=_0x3b4929){_0x4aa972=_0x3b4929;_0x9f56d1=0xc8;}else{_0x9f56d1=0xce;}_0x69836[_0xb204('0x1c')](_0x9f56d1);return _0x69836[_0xb204('0x21')](_0xb204('0x22'),_0x152798+'-'+_0x4aa972+'/'+_0x3b4929)['json'](_0x25c2a3);}return null;};}function patchUpdates(_0x587bad){return function(_0x1af66b){try{jsonpatch[_0xb204('0x23')](_0x1af66b,_0x587bad,!![]);}catch(_0x554ecc){return BPromise[_0xb204('0x24')](_0x554ecc);}return _0x1af66b[_0xb204('0x25')]();};}function saveUpdates(_0x4b8e6c,_0x1c8627){return function(_0x27bdef){if(_0x27bdef){return _0x27bdef['update'](_0x4b8e6c)[_0xb204('0x26')](function(_0x2dd5d7){return _0x2dd5d7;});}return null;};}function removeEntity(_0x15328e,_0x239d3c){return function(_0x7daca2){if(_0x7daca2){return _0x7daca2[_0xb204('0x27')]()[_0xb204('0x26')](function(){var _0x1432b4=_0x7daca2[_0xb204('0x28')]({'plain':!![]});var _0x48ca0c='Templates';return db['UserProfileResource'][_0xb204('0x27')]({'where':{'type':_0x48ca0c,'resourceId':_0x1432b4['id']}})[_0xb204('0x26')](function(){return _0x7daca2;});})[_0xb204('0x26')](function(){_0x15328e[_0xb204('0x1c')](0xcc)[_0xb204('0x29')]();});}};}function handleEntityNotFound(_0x3c0d3c,_0x402c04){return function(_0x22d9e8){if(!_0x22d9e8){_0x3c0d3c['sendStatus'](0x194);}return _0x22d9e8;};}function handleError(_0x23ba90,_0x21a46a){_0x21a46a=_0x21a46a||0x1f4;return function(_0x3db992){logger[_0xb204('0x2a')](_0x3db992[_0xb204('0x2b')]);if(_0x3db992['name']){delete _0x3db992[_0xb204('0x2c')];}_0x23ba90[_0xb204('0x1c')](_0x21a46a)[_0xb204('0x2d')](_0x3db992);};}exports[_0xb204('0x2e')]=function(_0x7c55b1,_0x8b73d8){var _0x1e1e66={},_0xf3c497={},_0x1ff9ff={'count':0x0,'rows':[]};var _0x568a9b=_[_0xb204('0x2f')](db[_0xb204('0x30')][_0xb204('0x31')],function(_0x3ad94b){return{'name':_0x3ad94b[_0xb204('0x32')],'type':_0x3ad94b['type'][_0xb204('0x33')]};});_0xf3c497[_0xb204('0x34')]=_[_0xb204('0x2f')](_0x568a9b,_0xb204('0x2c'));_0xf3c497['query']=_[_0xb204('0x35')](_0x7c55b1[_0xb204('0x36')]);_0xf3c497[_0xb204('0x37')]=_['intersection'](_0xf3c497['model'],_0xf3c497[_0xb204('0x36')]);_0x1e1e66['attributes']=_[_0xb204('0x38')](_0xf3c497[_0xb204('0x34')],qs['fields'](_0x7c55b1[_0xb204('0x36')]['fields']));_0x1e1e66[_0xb204('0x39')]=_0x1e1e66[_0xb204('0x39')]['length']?_0x1e1e66[_0xb204('0x39')]:_0xf3c497[_0xb204('0x34')];if(!_0x7c55b1[_0xb204('0x36')][_0xb204('0x3a')](_0xb204('0x3b'))){_0x1e1e66['limit']=qs[_0xb204('0x3c')](_0x7c55b1[_0xb204('0x36')][_0xb204('0x3c')]);_0x1e1e66[_0xb204('0x1e')]=qs[_0xb204('0x1e')](_0x7c55b1[_0xb204('0x36')]['offset']);}_0x1e1e66[_0xb204('0x3d')]=qs[_0xb204('0x3e')](_0x7c55b1['query'][_0xb204('0x3e')]);_0x1e1e66['where']=qs[_0xb204('0x37')](_[_0xb204('0x3f')](_0x7c55b1[_0xb204('0x36')],_0xf3c497['filters']),_0x568a9b);if(_0x7c55b1[_0xb204('0x36')][_0xb204('0x40')]){_0x1e1e66[_0xb204('0x41')]=_[_0xb204('0x42')](_0x1e1e66[_0xb204('0x41')],{'$or':_[_0xb204('0x2f')](_0x568a9b,function(_0x1b2a64){if(_0x1b2a64[_0xb204('0x43')]!==_0xb204('0x44')){var _0x18e907={};_0x18e907[_0x1b2a64['name']]={'$like':'%'+_0x7c55b1[_0xb204('0x36')]['filter']+'%'};return _0x18e907;}})});}_0x1e1e66=_[_0xb204('0x42')]({},_0x1e1e66,_0x7c55b1['options']);var _0x4403dd={'where':_0x1e1e66[_0xb204('0x41')]};return db['Template'][_0xb204('0x20')](_0x4403dd)[_0xb204('0x26')](function(_0x9b48f0){_0x1ff9ff['count']=_0x9b48f0;if(_0x7c55b1['query']['includeAll']){_0x1e1e66[_0xb204('0x45')]=[{'all':!![]}];}return db['Template'][_0xb204('0x46')](_0x1e1e66);})[_0xb204('0x26')](function(_0x17003a){_0x1ff9ff[_0xb204('0x47')]=_0x17003a;return _0x1ff9ff;})[_0xb204('0x26')](respondWithFilteredResult(_0x8b73d8,_0x1e1e66))[_0xb204('0x48')](handleError(_0x8b73d8,null));};exports['show']=function(_0x537660,_0x47ec95){var _0x40003b={'raw':!![],'where':{'id':_0x537660[_0xb204('0x49')]['id']}},_0x33a527={};_0x33a527['model']=_[_0xb204('0x35')](db[_0xb204('0x30')][_0xb204('0x31')]);_0x33a527['query']=_[_0xb204('0x35')](_0x537660['query']);_0x33a527[_0xb204('0x37')]=_['intersection'](_0x33a527[_0xb204('0x34')],_0x33a527[_0xb204('0x36')]);_0x40003b['attributes']=_['intersection'](_0x33a527['model'],qs['fields'](_0x537660[_0xb204('0x36')]['fields']));_0x40003b[_0xb204('0x39')]=_0x40003b[_0xb204('0x39')][_0xb204('0x4a')]?_0x40003b[_0xb204('0x39')]:_0x33a527[_0xb204('0x34')];if(_0x537660[_0xb204('0x36')][_0xb204('0x4b')]){_0x40003b[_0xb204('0x45')]=[{'all':!![]}];}_0x40003b=_[_0xb204('0x42')]({},_0x40003b,_0x537660['options']);return db[_0xb204('0x30')]['find'](_0x40003b)[_0xb204('0x26')](handleEntityNotFound(_0x47ec95,null))[_0xb204('0x26')](respondWithResult(_0x47ec95,null))[_0xb204('0x48')](handleError(_0x47ec95,null));};exports['create']=function(_0x292aea,_0x6f1402){return db['Template']['create'](_0x292aea['body'],{})[_0xb204('0x26')](function(_0x363e45){var _0x5177ac=_0x292aea[_0xb204('0x4c')][_0xb204('0x28')]({'plain':!![]});if(!_0x5177ac)throw new Error(_0xb204('0x4d'));if(_0x5177ac[_0xb204('0x4e')]===_0xb204('0x4c')){var _0x3c2ec2=_0x363e45[_0xb204('0x28')]({'plain':!![]});var _0xe60f39=_0xb204('0x4f');return db['UserProfileSection'][_0xb204('0x50')]({'where':{'name':_0xe60f39,'userProfileId':_0x5177ac['userProfileId']},'raw':!![]})['then'](function(_0x5345ed){if(_0x5345ed&&_0x5345ed[_0xb204('0x51')]===0x0){return db['UserProfileResource'][_0xb204('0x52')]({'name':_0x3c2ec2[_0xb204('0x2c')],'resourceId':_0x3c2ec2['id'],'type':_0x5345ed[_0xb204('0x2c')],'sectionId':_0x5345ed['id']},{})['then'](function(){return _0x363e45;});}else{return _0x363e45;}})[_0xb204('0x48')](function(_0x43f91f){logger['error'](_0xb204('0x53'),_0x43f91f);throw _0x43f91f;});}return _0x363e45;})['then'](respondWithResult(_0x6f1402,0xc9))[_0xb204('0x48')](handleError(_0x6f1402,null));};exports[_0xb204('0x54')]=function(_0x239998,_0x4ffe6d){if(_0x239998[_0xb204('0x55')]['id']){delete _0x239998[_0xb204('0x55')]['id'];}return db['Template'][_0xb204('0x50')]({'where':{'id':_0x239998['params']['id']}})[_0xb204('0x26')](handleEntityNotFound(_0x4ffe6d,null))['then'](saveUpdates(_0x239998['body'],null))[_0xb204('0x26')](respondWithResult(_0x4ffe6d,null))[_0xb204('0x48')](handleError(_0x4ffe6d,null));};exports[_0xb204('0x27')]=function(_0x346f91,_0x3c7e9b){return db['Template'][_0xb204('0x50')]({'where':{'id':_0x346f91[_0xb204('0x49')]['id']}})[_0xb204('0x26')](handleEntityNotFound(_0x3c7e9b,null))['then'](removeEntity(_0x3c7e9b,null))['catch'](handleError(_0x3c7e9b,null));};
\ No newline at end of file
index 9065a89..6c54ef3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc1bc=['lodash','util','api','moment','bluebird','request-promise','path','rimraf','../../config/environment','define','Template','tools_templates'];(function(_0x353cd3,_0xed6722){var _0xd43748=function(_0x20359b){while(--_0x20359b){_0x353cd3['push'](_0x353cd3['shift']());}};_0xd43748(++_0xed6722);}(_0xc1bc,0x108));var _0xcc1b=function(_0x14add3,_0x13ce8d){_0x14add3=_0x14add3-0x0;var _0x4a174f=_0xc1bc[_0x14add3];return _0x4a174f;};'use strict';var _=require(_0xcc1b('0x0'));var util=require(_0xcc1b('0x1'));var logger=require('../../config/logger')(_0xcc1b('0x2'));var moment=require(_0xcc1b('0x3'));var BPromise=require(_0xcc1b('0x4'));var rp=require(_0xcc1b('0x5'));var fs=require('fs');var path=require(_0xcc1b('0x6'));var rimraf=require(_0xcc1b('0x7'));var config=require(_0xcc1b('0x8'));var attributes=require('./template.attributes');module['exports']=function(_0x68fe1,_0x3e2457){return _0x68fe1[_0xcc1b('0x9')](_0xcc1b('0xa'),attributes,{'tableName':_0xcc1b('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x092f=['api','bluebird','request-promise','path','../../config/environment','./template.attributes','define','Template','lodash','util','../../config/logger'];(function(_0x58acc3,_0x50a3ee){var _0x1abf13=function(_0x44a87e){while(--_0x44a87e){_0x58acc3['push'](_0x58acc3['shift']());}};_0x1abf13(++_0x50a3ee);}(_0x092f,0x147));var _0xf092=function(_0x3b711c,_0x4b22dc){_0x3b711c=_0x3b711c-0x0;var _0x2685f0=_0x092f[_0x3b711c];return _0x2685f0;};'use strict';var _=require(_0xf092('0x0'));var util=require(_0xf092('0x1'));var logger=require(_0xf092('0x2'))(_0xf092('0x3'));var moment=require('moment');var BPromise=require(_0xf092('0x4'));var rp=require(_0xf092('0x5'));var fs=require('fs');var path=require(_0xf092('0x6'));var rimraf=require('rimraf');var config=require(_0xf092('0x7'));var attributes=require(_0xf092('0x8'));module['exports']=function(_0xea209f,_0x30a637){return _0xea209f[_0xf092('0x9')](_0xf092('0xa'),attributes,{'tableName':'tools_templates','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 14a8965..e458ba2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xaab2=['result','Template','findAll','options','attributes','limit','map','include','model','GetTemplate','stringify','catch','lodash','util','moment','bluebird','randomstring','ioredis','../../config/utils','../../config/logger','../../config/environment','jayson/promise','client','http','request','then','Template,\x20%s,\x20%s','debug','request\x20sent','error','code','message','info'];(function(_0x54af32,_0x18cc30){var _0x4a438b=function(_0x44066a){while(--_0x44066a){_0x54af32['push'](_0x54af32['shift']());}};_0x4a438b(++_0x18cc30);}(_0xaab2,0xf3));var _0x2aab=function(_0x14add3,_0x13ce8d){_0x14add3=_0x14add3-0x0;var _0x4a174f=_0xaab2[_0x14add3];return _0x4a174f;};'use strict';var _=require(_0x2aab('0x0'));var util=require(_0x2aab('0x1'));var moment=require(_0x2aab('0x2'));var BPromise=require(_0x2aab('0x3'));var rs=require(_0x2aab('0x4'));var fs=require('fs');var Redis=require(_0x2aab('0x5'));var db=require('../../mysqldb')['db'];var utils=require(_0x2aab('0x6'));var logger=require(_0x2aab('0x7'))('rpc');var config=require(_0x2aab('0x8'));var jayson=require(_0x2aab('0x9'));var client=jayson[_0x2aab('0xa')][_0x2aab('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x3031c8,_0x7386a8,_0xcc4002){return new BPromise(function(_0x509140,_0x199478){return client[_0x2aab('0xc')](_0x3031c8,_0xcc4002)[_0x2aab('0xd')](function(_0x55ff8c){logger['info'](_0x2aab('0xe'),_0x7386a8,'request\x20sent');logger[_0x2aab('0xf')]('Template,\x20%s,\x20%s,\x20%s',_0x7386a8,_0x2aab('0x10'),JSON['stringify'](_0x55ff8c));if(_0x55ff8c[_0x2aab('0x11')]){if(_0x55ff8c[_0x2aab('0x11')][_0x2aab('0x12')]===0x1f4){logger[_0x2aab('0x11')]('Template,\x20%s,\x20%s',_0x7386a8,_0x55ff8c[_0x2aab('0x11')][_0x2aab('0x13')]);return _0x199478(_0x55ff8c[_0x2aab('0x11')][_0x2aab('0x13')]);}logger['error'](_0x2aab('0xe'),_0x7386a8,_0x55ff8c[_0x2aab('0x11')][_0x2aab('0x13')]);return _0x509140(_0x55ff8c[_0x2aab('0x11')][_0x2aab('0x13')]);}else{logger[_0x2aab('0x14')]('Template,\x20%s,\x20%s',_0x7386a8,_0x2aab('0x10'));_0x509140(_0x55ff8c[_0x2aab('0x15')][_0x2aab('0x13')]);}})['catch'](function(_0x1fe6ca){logger[_0x2aab('0x11')](_0x2aab('0xe'),_0x7386a8,_0x1fe6ca);_0x199478(_0x1fe6ca);});});}exports['GetTemplate']=function(_0x16edb2){var _0x362324=this;return new Promise(function(_0x33f305,_0x335c11){return db[_0x2aab('0x16')][_0x2aab('0x17')]({'raw':_0x16edb2[_0x2aab('0x18')]?_0x16edb2[_0x2aab('0x18')]['raw']===undefined?!![]:![]:!![],'where':_0x16edb2['options']?_0x16edb2[_0x2aab('0x18')]['where']||null:null,'attributes':_0x16edb2['options']?_0x16edb2[_0x2aab('0x18')][_0x2aab('0x19')]||null:null,'limit':_0x16edb2[_0x2aab('0x18')]?_0x16edb2[_0x2aab('0x18')][_0x2aab('0x1a')]||null:null,'include':_0x16edb2['options']?_0x16edb2[_0x2aab('0x18')]['include']?_[_0x2aab('0x1b')](_0x16edb2['options'][_0x2aab('0x1c')],function(_0x357dbe){return{'model':db[_0x357dbe[_0x2aab('0x1d')]],'as':_0x357dbe['as'],'attributes':_0x357dbe[_0x2aab('0x19')],'include':_0x357dbe[_0x2aab('0x1c')]?_['map'](_0x357dbe[_0x2aab('0x1c')],function(_0x210719){return{'model':db[_0x210719[_0x2aab('0x1d')]],'as':_0x210719['as'],'attributes':_0x210719[_0x2aab('0x19')],'include':_0x210719['include']?_[_0x2aab('0x1b')](_0x210719['include'],function(_0x5315d3){return{'model':db[_0x5315d3[_0x2aab('0x1d')]],'as':_0x5315d3['as'],'attributes':_0x5315d3[_0x2aab('0x19')]};}):[]};}):[]};}):[]:[]})[_0x2aab('0xd')](function(_0x3e6ff3){logger[_0x2aab('0x14')]('GetTemplate',_0x16edb2);logger['debug'](_0x2aab('0x1e'),_0x16edb2,JSON[_0x2aab('0x1f')](_0x3e6ff3));_0x33f305(_0x3e6ff3);})[_0x2aab('0x20')](function(_0x6f2c97){logger[_0x2aab('0x11')](_0x2aab('0x1e'),_0x6f2c97['message'],_0x16edb2);_0x335c11(_0x362324['error'](0x1f4,_0x6f2c97[_0x2aab('0x13')]));});});};
\ No newline at end of file
+var _0x9089=['options','raw','where','attributes','limit','include','map','model','lodash','util','bluebird','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','http','request','then','Template,\x20%s,\x20%s','request\x20sent','debug','Template,\x20%s,\x20%s,\x20%s','stringify','error','code','message','info','result','catch','GetTemplate','Template','findAll'];(function(_0x49bbbf,_0x13dd12){var _0x2f33ed=function(_0x1de9b5){while(--_0x1de9b5){_0x49bbbf['push'](_0x49bbbf['shift']());}};_0x2f33ed(++_0x13dd12);}(_0x9089,0xf6));var _0x9908=function(_0x16d10f,_0x2ba2d5){_0x16d10f=_0x16d10f-0x0;var _0x50c823=_0x9089[_0x16d10f];return _0x50c823;};'use strict';var _=require(_0x9908('0x0'));var util=require(_0x9908('0x1'));var moment=require('moment');var BPromise=require(_0x9908('0x2'));var rs=require('randomstring');var fs=require('fs');var Redis=require('ioredis');var db=require(_0x9908('0x3'))['db'];var utils=require(_0x9908('0x4'));var logger=require(_0x9908('0x5'))(_0x9908('0x6'));var config=require(_0x9908('0x7'));var jayson=require(_0x9908('0x8'));var client=jayson['client'][_0x9908('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x2bd694,_0x3d10a9,_0x523fae){return new BPromise(function(_0x491630,_0x205b9f){return client[_0x9908('0xa')](_0x2bd694,_0x523fae)[_0x9908('0xb')](function(_0x5011cc){logger['info'](_0x9908('0xc'),_0x3d10a9,_0x9908('0xd'));logger[_0x9908('0xe')](_0x9908('0xf'),_0x3d10a9,_0x9908('0xd'),JSON[_0x9908('0x10')](_0x5011cc));if(_0x5011cc[_0x9908('0x11')]){if(_0x5011cc[_0x9908('0x11')][_0x9908('0x12')]===0x1f4){logger[_0x9908('0x11')](_0x9908('0xc'),_0x3d10a9,_0x5011cc[_0x9908('0x11')][_0x9908('0x13')]);return _0x205b9f(_0x5011cc[_0x9908('0x11')]['message']);}logger[_0x9908('0x11')](_0x9908('0xc'),_0x3d10a9,_0x5011cc[_0x9908('0x11')][_0x9908('0x13')]);return _0x491630(_0x5011cc['error'][_0x9908('0x13')]);}else{logger[_0x9908('0x14')]('Template,\x20%s,\x20%s',_0x3d10a9,_0x9908('0xd'));_0x491630(_0x5011cc[_0x9908('0x15')][_0x9908('0x13')]);}})[_0x9908('0x16')](function(_0x234a65){logger[_0x9908('0x11')]('Template,\x20%s,\x20%s',_0x3d10a9,_0x234a65);_0x205b9f(_0x234a65);});});}exports[_0x9908('0x17')]=function(_0x3cd743){var _0x563df9=this;return new Promise(function(_0x260729,_0x3db6ef){return db[_0x9908('0x18')][_0x9908('0x19')]({'raw':_0x3cd743['options']?_0x3cd743[_0x9908('0x1a')][_0x9908('0x1b')]===undefined?!![]:![]:!![],'where':_0x3cd743[_0x9908('0x1a')]?_0x3cd743[_0x9908('0x1a')][_0x9908('0x1c')]||null:null,'attributes':_0x3cd743['options']?_0x3cd743[_0x9908('0x1a')][_0x9908('0x1d')]||null:null,'limit':_0x3cd743['options']?_0x3cd743[_0x9908('0x1a')][_0x9908('0x1e')]||null:null,'include':_0x3cd743[_0x9908('0x1a')]?_0x3cd743['options'][_0x9908('0x1f')]?_[_0x9908('0x20')](_0x3cd743[_0x9908('0x1a')][_0x9908('0x1f')],function(_0x16bc4a){return{'model':db[_0x16bc4a[_0x9908('0x21')]],'as':_0x16bc4a['as'],'attributes':_0x16bc4a[_0x9908('0x1d')],'include':_0x16bc4a[_0x9908('0x1f')]?_[_0x9908('0x20')](_0x16bc4a['include'],function(_0x1bb9a8){return{'model':db[_0x1bb9a8['model']],'as':_0x1bb9a8['as'],'attributes':_0x1bb9a8['attributes'],'include':_0x1bb9a8[_0x9908('0x1f')]?_['map'](_0x1bb9a8[_0x9908('0x1f')],function(_0x526544){return{'model':db[_0x526544[_0x9908('0x21')]],'as':_0x526544['as'],'attributes':_0x526544['attributes']};}):[]};}):[]};}):[]:[]})[_0x9908('0xb')](function(_0x4da3d3){logger[_0x9908('0x14')]('GetTemplate',_0x3cd743);logger['debug'](_0x9908('0x17'),_0x3cd743,JSON['stringify'](_0x4da3d3));_0x260729(_0x4da3d3);})[_0x9908('0x16')](function(_0x43e9d0){logger[_0x9908('0x11')](_0x9908('0x17'),_0x43e9d0['message'],_0x3cd743);_0x3db6ef(_0x563df9[_0x9908('0x11')](0x1f4,_0x43e9d0['message']));});});};
\ No newline at end of file
index 1e834f6..9b7bf87 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xace6=['put','/:id','update','delete','exports','multer','util','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./trigger.controller','get','isAuthenticated','show','/:id/all_conditions','getAllConditions','getAnyConditions','/:id/actions','post','create','/:id/any_conditions','addAnyCondition','addAction'];(function(_0x320d21,_0x3c77f2){var _0x329434=function(_0x482f36){while(--_0x482f36){_0x320d21['push'](_0x320d21['shift']());}};_0x329434(++_0x3c77f2);}(_0xace6,0xd5));var _0x6ace=function(_0x20a584,_0xe384a5){_0x20a584=_0x20a584-0x0;var _0x4b41a8=_0xace6[_0x20a584];return _0x4b41a8;};'use strict';var multer=require(_0x6ace('0x0'));var util=require(_0x6ace('0x1'));var path=require('path');var timeout=require('connect-timeout');var express=require(_0x6ace('0x2'));var router=express[_0x6ace('0x3')]();var fs_extra=require(_0x6ace('0x4'));var auth=require(_0x6ace('0x5'));var interaction=require(_0x6ace('0x6'));var config=require(_0x6ace('0x7'));var controller=require(_0x6ace('0x8'));router[_0x6ace('0x9')]('/',auth[_0x6ace('0xa')](),controller['index']);router[_0x6ace('0x9')]('/:id',auth['isAuthenticated'](),controller[_0x6ace('0xb')]);router[_0x6ace('0x9')](_0x6ace('0xc'),auth[_0x6ace('0xa')](),controller[_0x6ace('0xd')]);router[_0x6ace('0x9')]('/:id/any_conditions',auth['isAuthenticated'](),controller[_0x6ace('0xe')]);router[_0x6ace('0x9')](_0x6ace('0xf'),auth['isAuthenticated'](),controller['getActions']);router[_0x6ace('0x10')]('/',auth[_0x6ace('0xa')](),controller[_0x6ace('0x11')]);router[_0x6ace('0x10')]('/:id/all_conditions',auth[_0x6ace('0xa')](),controller['addAllCondition']);router[_0x6ace('0x10')](_0x6ace('0x12'),auth[_0x6ace('0xa')](),controller[_0x6ace('0x13')]);router[_0x6ace('0x10')](_0x6ace('0xf'),auth['isAuthenticated'](),controller[_0x6ace('0x14')]);router[_0x6ace('0x15')](_0x6ace('0x16'),auth[_0x6ace('0xa')](),controller[_0x6ace('0x17')]);router[_0x6ace('0x18')](_0x6ace('0x16'),auth[_0x6ace('0xa')](),controller['destroy']);module[_0x6ace('0x19')]=router;
\ No newline at end of file
+var _0x147f=['index','show','getAllConditions','getAnyConditions','/:id/actions','getActions','create','/:id/all_conditions','addAllCondition','post','addAction','put','/:id','update','delete','destroy','exports','multer','util','path','express','Router','../../components/auth/service','../../components/interaction/service','../../config/environment','./trigger.controller','get','isAuthenticated'];(function(_0x4aebbd,_0x41f375){var _0x24f7b1=function(_0x34761f){while(--_0x34761f){_0x4aebbd['push'](_0x4aebbd['shift']());}};_0x24f7b1(++_0x41f375);}(_0x147f,0xd5));var _0xf147=function(_0x131dd9,_0x12d081){_0x131dd9=_0x131dd9-0x0;var _0x4ad5d7=_0x147f[_0x131dd9];return _0x4ad5d7;};'use strict';var multer=require(_0xf147('0x0'));var util=require(_0xf147('0x1'));var path=require(_0xf147('0x2'));var timeout=require('connect-timeout');var express=require(_0xf147('0x3'));var router=express[_0xf147('0x4')]();var fs_extra=require('fs-extra');var auth=require(_0xf147('0x5'));var interaction=require(_0xf147('0x6'));var config=require(_0xf147('0x7'));var controller=require(_0xf147('0x8'));router[_0xf147('0x9')]('/',auth[_0xf147('0xa')](),controller[_0xf147('0xb')]);router['get']('/:id',auth[_0xf147('0xa')](),controller[_0xf147('0xc')]);router[_0xf147('0x9')]('/:id/all_conditions',auth['isAuthenticated'](),controller[_0xf147('0xd')]);router[_0xf147('0x9')]('/:id/any_conditions',auth[_0xf147('0xa')](),controller[_0xf147('0xe')]);router[_0xf147('0x9')](_0xf147('0xf'),auth[_0xf147('0xa')](),controller[_0xf147('0x10')]);router['post']('/',auth['isAuthenticated'](),controller[_0xf147('0x11')]);router['post'](_0xf147('0x12'),auth[_0xf147('0xa')](),controller[_0xf147('0x13')]);router[_0xf147('0x14')]('/:id/any_conditions',auth[_0xf147('0xa')](),controller['addAnyCondition']);router[_0xf147('0x14')](_0xf147('0xf'),auth[_0xf147('0xa')](),controller[_0xf147('0x15')]);router[_0xf147('0x16')](_0xf147('0x17'),auth[_0xf147('0xa')](),controller[_0xf147('0x18')]);router[_0xf147('0x19')]('/:id',auth['isAuthenticated'](),controller[_0xf147('0x1a')]);module[_0xf147('0x1b')]=router;
\ No newline at end of file
index 16f6f4f..ab3fe4b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x423f=['exports','STRING','sequelize'];(function(_0x17dc3f,_0x511cb3){var _0x55dc74=function(_0x2dc9dc){while(--_0x2dc9dc){_0x17dc3f['push'](_0x17dc3f['shift']());}};_0x55dc74(++_0x511cb3);}(_0x423f,0x149));var _0xf423=function(_0x2a073c,_0x2f9f75){_0x2a073c=_0x2a073c-0x0;var _0x24bdf9=_0x423f[_0x2a073c];return _0x24bdf9;};'use strict';var Sequelize=require(_0xf423('0x0'));module[_0xf423('0x1')]={'name':{'type':Sequelize[_0xf423('0x2')]},'channel':{'type':Sequelize[_0xf423('0x2')]},'description':{'type':Sequelize['STRING']},'status':{'type':Sequelize['BOOLEAN'],'defaultValue':![]}};
\ No newline at end of file
+var _0x846f=['STRING','BOOLEAN','sequelize','exports'];(function(_0x1b515f,_0x52aa6b){var _0x66ff73=function(_0x2cc081){while(--_0x2cc081){_0x1b515f['push'](_0x1b515f['shift']());}};_0x66ff73(++_0x52aa6b);}(_0x846f,0x1ea));var _0xf846=function(_0x1b64f9,_0x44bbb5){_0x1b64f9=_0x1b64f9-0x0;var _0x54b795=_0x846f[_0x1b64f9];return _0x54b795;};'use strict';var Sequelize=require(_0xf846('0x0'));module[_0xf846('0x1')]={'name':{'type':Sequelize['STRING']},'channel':{'type':Sequelize[_0xf846('0x2')]},'description':{'type':Sequelize[_0xf846('0x2')]},'status':{'type':Sequelize[_0xf846('0x3')],'defaultValue':![]}};
\ No newline at end of file
index fc18bd2..759ba9f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x533c=['UserProfileSection','userProfileId','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','params','addAllCondition','addAnyCondition','Condition','getAllConditions','findOne','filter','nolimit','getAnyConditions','Action','getActions','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','bluebird','mustache','util','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','querystring','papaparse','../../components/auth/service','../../components/parsers/advancedSearch','../../config/logger','../../config/environment','../../mysqldb','status','json','offset','undefined','count','limit','set','Content-Range','apply','save','update','then','destroy','get','Triggers','end','sendStatus','error','stack','name','index','map','Trigger','rawAttributes','fieldName','query','filters','intersection','model','attributes','fields','hasOwnProperty','order','sort','where','pick','type','merge','options','includeAll','findAll','rows','catch','keys','length','include','find','create','body','user'];(function(_0x3327fd,_0x10dab6){var _0x2fa4f1=function(_0x318a0d){while(--_0x318a0d){_0x3327fd['push'](_0x3327fd['shift']());}};_0x2fa4f1(++_0x10dab6);}(_0x533c,0x114));var _0xc533=function(_0x34c158,_0x248375){_0x34c158=_0x34c158-0x0;var _0x468c84=_0x533c[_0x34c158];return _0x468c84;};'use strict';var emlformat=require(_0xc533('0x0'));var rimraf=require(_0xc533('0x1'));var zipdir=require(_0xc533('0x2'));var jsonpatch=require(_0xc533('0x3'));var rp=require(_0xc533('0x4'));var moment=require('moment');var BPromise=require(_0xc533('0x5'));var Mustache=require(_0xc533('0x6'));var util=require(_0xc533('0x7'));var path=require('path');var sox=require(_0xc533('0x8'));var csv=require(_0xc533('0x9'));var ejs=require(_0xc533('0xa'));var fs=require('fs');var fs_extra=require(_0xc533('0xb'));var _=require(_0xc533('0xc'));var squel=require(_0xc533('0xd'));var crypto=require(_0xc533('0xe'));var jsforce=require('jsforce');var deskjs=require('desk.js');var toCsv=require(_0xc533('0x9'));var querystring=require(_0xc533('0xf'));var Papa=require(_0xc533('0x10'));var Redis=require('ioredis');var authService=require(_0xc533('0x11'));var qs=require('../../components/parsers/qs');var as=require(_0xc533('0x12'));var hardwareService=require('../../config/license/hardware');var logger=require(_0xc533('0x13'))('api');var utils=require('../../config/utils');var config=require(_0xc533('0x14'));var licenseUtil=require('../../config/license/util');var db=require(_0xc533('0x15'))['db'];function respondWithStatusCode(_0x22079e,_0x50ff87){_0x50ff87=_0x50ff87||0xcc;return function(_0xc7006d){if(_0xc7006d){return _0x22079e['sendStatus'](_0x50ff87);}return _0x22079e[_0xc533('0x16')](_0x50ff87)['end']();};}function respondWithResult(_0x1a2580,_0x119bc4){_0x119bc4=_0x119bc4||0xc8;return function(_0xda53a8){if(_0xda53a8){return _0x1a2580[_0xc533('0x16')](_0x119bc4)[_0xc533('0x17')](_0xda53a8);}};}function respondWithFilteredResult(_0x55af55,_0x2cdbd8){return function(_0x342e9e){if(_0x342e9e){var _0x165680=typeof _0x2cdbd8[_0xc533('0x18')]===_0xc533('0x19')&&typeof _0x2cdbd8['limit']==='undefined';var _0x3276d3=_0x342e9e['count'];var _0xfa9595=_0x165680?0x0:_0x2cdbd8[_0xc533('0x18')];var _0x52f7b1=_0x165680?_0x342e9e[_0xc533('0x1a')]:_0x2cdbd8[_0xc533('0x18')]+_0x2cdbd8[_0xc533('0x1b')];var _0x29af12;if(_0x52f7b1>=_0x3276d3){_0x52f7b1=_0x3276d3;_0x29af12=0xc8;}else{_0x29af12=0xce;}_0x55af55['status'](_0x29af12);return _0x55af55[_0xc533('0x1c')](_0xc533('0x1d'),_0xfa9595+'-'+_0x52f7b1+'/'+_0x3276d3)[_0xc533('0x17')](_0x342e9e);}return null;};}function patchUpdates(_0x282bb3){return function(_0x120d78){try{jsonpatch[_0xc533('0x1e')](_0x120d78,_0x282bb3,!![]);}catch(_0x83fb73){return BPromise['reject'](_0x83fb73);}return _0x120d78[_0xc533('0x1f')]();};}function saveUpdates(_0x749633,_0x2bef5b){return function(_0x3f2429){if(_0x3f2429){return _0x3f2429[_0xc533('0x20')](_0x749633)[_0xc533('0x21')](function(_0x3a8480){return _0x3a8480;});}return null;};}function removeEntity(_0x37c40c,_0x29081d){return function(_0x665eda){if(_0x665eda){return _0x665eda[_0xc533('0x22')]()['then'](function(){var _0x5bda18=_0x665eda[_0xc533('0x23')]({'plain':!![]});var _0x398a6c=_0xc533('0x24');return db['UserProfileResource'][_0xc533('0x22')]({'where':{'type':_0x398a6c,'resourceId':_0x5bda18['id']}})['then'](function(){return _0x665eda;});})['then'](function(){_0x37c40c[_0xc533('0x16')](0xcc)[_0xc533('0x25')]();});}};}function handleEntityNotFound(_0x535c79,_0x1f3a13){return function(_0x5a35e2){if(!_0x5a35e2){_0x535c79[_0xc533('0x26')](0x194);}return _0x5a35e2;};}function handleError(_0x5a75bc,_0x50cf40){_0x50cf40=_0x50cf40||0x1f4;return function(_0x5334b6){logger[_0xc533('0x27')](_0x5334b6[_0xc533('0x28')]);if(_0x5334b6[_0xc533('0x29')]){delete _0x5334b6['name'];}_0x5a75bc['status'](_0x50cf40)['send'](_0x5334b6);};}exports[_0xc533('0x2a')]=function(_0x542b92,_0x20d01d){var _0x102e33={},_0x422983={},_0x4445e9={'count':0x0,'rows':[]};var _0x262dd0=_[_0xc533('0x2b')](db[_0xc533('0x2c')][_0xc533('0x2d')],function(_0x285e5f){return{'name':_0x285e5f[_0xc533('0x2e')],'type':_0x285e5f['type']['key']};});_0x422983['model']=_['map'](_0x262dd0,_0xc533('0x29'));_0x422983['query']=_['keys'](_0x542b92[_0xc533('0x2f')]);_0x422983[_0xc533('0x30')]=_[_0xc533('0x31')](_0x422983[_0xc533('0x32')],_0x422983[_0xc533('0x2f')]);_0x102e33[_0xc533('0x33')]=_[_0xc533('0x31')](_0x422983['model'],qs[_0xc533('0x34')](_0x542b92[_0xc533('0x2f')][_0xc533('0x34')]));_0x102e33[_0xc533('0x33')]=_0x102e33['attributes']['length']?_0x102e33[_0xc533('0x33')]:_0x422983[_0xc533('0x32')];if(!_0x542b92[_0xc533('0x2f')][_0xc533('0x35')]('nolimit')){_0x102e33[_0xc533('0x1b')]=qs[_0xc533('0x1b')](_0x542b92['query']['limit']);_0x102e33[_0xc533('0x18')]=qs[_0xc533('0x18')](_0x542b92[_0xc533('0x2f')][_0xc533('0x18')]);}_0x102e33[_0xc533('0x36')]=qs['sort'](_0x542b92[_0xc533('0x2f')][_0xc533('0x37')]);_0x102e33[_0xc533('0x38')]=qs['filters'](_[_0xc533('0x39')](_0x542b92[_0xc533('0x2f')],_0x422983[_0xc533('0x30')]),_0x262dd0);if(_0x542b92[_0xc533('0x2f')]['filter']){_0x102e33[_0xc533('0x38')]=_['merge'](_0x102e33[_0xc533('0x38')],{'$or':_[_0xc533('0x2b')](_0x262dd0,function(_0x4c3e50){if(_0x4c3e50[_0xc533('0x3a')]!=='VIRTUAL'){var _0x43fe71={};_0x43fe71[_0x4c3e50[_0xc533('0x29')]]={'$like':'%'+_0x542b92[_0xc533('0x2f')]['filter']+'%'};return _0x43fe71;}})});}_0x102e33=_[_0xc533('0x3b')]({},_0x102e33,_0x542b92[_0xc533('0x3c')]);var _0x5117ae={'where':_0x102e33['where']};return db[_0xc533('0x2c')][_0xc533('0x1a')](_0x5117ae)[_0xc533('0x21')](function(_0x567c05){_0x4445e9[_0xc533('0x1a')]=_0x567c05;if(_0x542b92[_0xc533('0x2f')][_0xc533('0x3d')]){_0x102e33['include']=[{'all':!![]}];}return db['Trigger'][_0xc533('0x3e')](_0x102e33);})[_0xc533('0x21')](function(_0x48b041){_0x4445e9[_0xc533('0x3f')]=_0x48b041;return _0x4445e9;})[_0xc533('0x21')](respondWithFilteredResult(_0x20d01d,_0x102e33))[_0xc533('0x40')](handleError(_0x20d01d,null));};exports['show']=function(_0x5ae741,_0x5cb1c1){var _0x31a2e6={'raw':![],'where':{'id':_0x5ae741['params']['id']}},_0x3a7d07={};_0x3a7d07[_0xc533('0x32')]=_['keys'](db[_0xc533('0x2c')][_0xc533('0x2d')]);_0x3a7d07['query']=_[_0xc533('0x41')](_0x5ae741[_0xc533('0x2f')]);_0x3a7d07[_0xc533('0x30')]=_[_0xc533('0x31')](_0x3a7d07[_0xc533('0x32')],_0x3a7d07[_0xc533('0x2f')]);_0x31a2e6[_0xc533('0x33')]=_['intersection'](_0x3a7d07[_0xc533('0x32')],qs[_0xc533('0x34')](_0x5ae741[_0xc533('0x2f')][_0xc533('0x34')]));_0x31a2e6['attributes']=_0x31a2e6[_0xc533('0x33')][_0xc533('0x42')]?_0x31a2e6['attributes']:_0x3a7d07[_0xc533('0x32')];if(_0x5ae741[_0xc533('0x2f')][_0xc533('0x3d')]){_0x31a2e6[_0xc533('0x43')]=[{'all':!![]}];}_0x31a2e6=_[_0xc533('0x3b')]({},_0x31a2e6,_0x5ae741['options']);return db[_0xc533('0x2c')][_0xc533('0x44')](_0x31a2e6)[_0xc533('0x21')](handleEntityNotFound(_0x5cb1c1,null))[_0xc533('0x21')](respondWithResult(_0x5cb1c1,null))['catch'](handleError(_0x5cb1c1,null));};exports[_0xc533('0x45')]=function(_0x3edbde,_0xf0e49a){return db[_0xc533('0x2c')][_0xc533('0x45')](_0x3edbde[_0xc533('0x46')],{})[_0xc533('0x21')](function(_0x40e2da){var _0x365ccc=_0x3edbde['user'][_0xc533('0x23')]({'plain':!![]});if(!_0x365ccc)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0x365ccc['role']===_0xc533('0x47')){var _0x20d3c8=_0x40e2da['get']({'plain':!![]});var _0x1ba4ff=_0xc533('0x24');return db[_0xc533('0x48')][_0xc533('0x44')]({'where':{'name':_0x1ba4ff,'userProfileId':_0x365ccc[_0xc533('0x49')]},'raw':!![]})[_0xc533('0x21')](function(_0x5287e2){if(_0x5287e2&&_0x5287e2[_0xc533('0x4a')]===0x0){return db['UserProfileResource'][_0xc533('0x45')]({'name':_0x20d3c8['name'],'resourceId':_0x20d3c8['id'],'type':_0x5287e2['name'],'sectionId':_0x5287e2['id']},{})[_0xc533('0x21')](function(){return _0x40e2da;});}else{return _0x40e2da;}})[_0xc533('0x40')](function(_0x696c10){logger['error'](_0xc533('0x4b'),_0x696c10);throw _0x696c10;});}return _0x40e2da;})[_0xc533('0x21')](respondWithResult(_0xf0e49a,0xc9))[_0xc533('0x40')](handleError(_0xf0e49a,null));};exports[_0xc533('0x20')]=function(_0x350d29,_0x3e83ad){if(_0x350d29[_0xc533('0x46')]['id']){delete _0x350d29[_0xc533('0x46')]['id'];}return db['Trigger'][_0xc533('0x44')]({'where':{'id':_0x350d29['params']['id']}})[_0xc533('0x21')](handleEntityNotFound(_0x3e83ad,null))[_0xc533('0x21')](saveUpdates(_0x350d29[_0xc533('0x46')],null))['then'](respondWithResult(_0x3e83ad,null))[_0xc533('0x40')](handleError(_0x3e83ad,null));};exports['destroy']=function(_0x360ab8,_0x29f597){return db['Trigger'][_0xc533('0x44')]({'where':{'id':_0x360ab8[_0xc533('0x4c')]['id']}})[_0xc533('0x21')](handleEntityNotFound(_0x29f597,null))[_0xc533('0x21')](removeEntity(_0x29f597,null))[_0xc533('0x40')](handleError(_0x29f597,null));};exports[_0xc533('0x4d')]=function(_0x56e186,_0x3fcec5,_0x49d72b){if(_0x56e186[_0xc533('0x46')]['id']){delete _0x56e186[_0xc533('0x46')]['id'];}return db[_0xc533('0x2c')][_0xc533('0x44')]({'where':{'id':_0x56e186[_0xc533('0x4c')]['id']}})[_0xc533('0x21')](handleEntityNotFound(_0x3fcec5,null))['then'](function(_0x23c756){if(_0x23c756){_0x56e186['body']['TriggerAllId']=_0x23c756['id'];return db['Condition'][_0xc533('0x45')](_0x56e186[_0xc533('0x46')]);}})[_0xc533('0x21')](respondWithResult(_0x3fcec5,null))[_0xc533('0x40')](handleError(_0x3fcec5,null));};exports[_0xc533('0x4e')]=function(_0x464502,_0x541043,_0x5cdc7a){if(_0x464502['body']['id']){delete _0x464502['body']['id'];}return db[_0xc533('0x2c')][_0xc533('0x44')]({'where':{'id':_0x464502[_0xc533('0x4c')]['id']}})[_0xc533('0x21')](handleEntityNotFound(_0x541043,null))[_0xc533('0x21')](function(_0x480b7b){if(_0x480b7b){_0x464502[_0xc533('0x46')]['TriggerAnyId']=_0x480b7b['id'];return db[_0xc533('0x4f')][_0xc533('0x45')](_0x464502[_0xc533('0x46')]);}})[_0xc533('0x21')](respondWithResult(_0x541043,null))[_0xc533('0x40')](handleError(_0x541043,null));};exports[_0xc533('0x50')]=function(_0xbf2c2c,_0x3e6899,_0x406676){var _0x179289={};var _0x22b359={};var _0x290b7d;var _0x5eb941;return db[_0xc533('0x2c')][_0xc533('0x51')]({'where':{'id':_0xbf2c2c[_0xc533('0x4c')]['id']}})[_0xc533('0x21')](handleEntityNotFound(_0x3e6899,null))[_0xc533('0x21')](function(_0x1126d0){if(_0x1126d0){_0x290b7d=_0x1126d0;_0x22b359[_0xc533('0x32')]=_[_0xc533('0x41')](db['Condition'][_0xc533('0x2d')]);_0x22b359[_0xc533('0x2f')]=_[_0xc533('0x41')](_0xbf2c2c[_0xc533('0x2f')]);_0x22b359[_0xc533('0x30')]=_[_0xc533('0x31')](_0x22b359[_0xc533('0x32')],_0x22b359['query']);_0x179289['attributes']=_[_0xc533('0x31')](_0x22b359[_0xc533('0x32')],qs[_0xc533('0x34')](_0xbf2c2c['query']['fields']));_0x179289['attributes']=_0x179289[_0xc533('0x33')][_0xc533('0x42')]?_0x179289[_0xc533('0x33')]:_0x22b359[_0xc533('0x32')];_0x179289[_0xc533('0x36')]=qs[_0xc533('0x37')](_0xbf2c2c[_0xc533('0x2f')][_0xc533('0x37')]);_0x179289[_0xc533('0x38')]=qs[_0xc533('0x30')](_[_0xc533('0x39')](_0xbf2c2c[_0xc533('0x2f')],_0x22b359['filters']));if(_0xbf2c2c['query']['filter']){_0x179289[_0xc533('0x38')]=_[_0xc533('0x3b')](_0x179289[_0xc533('0x38')],{'$or':_[_0xc533('0x2b')](_0x179289[_0xc533('0x33')],function(_0x2efe21){var _0x21dc06={};_0x21dc06[_0x2efe21]={'$like':'%'+_0xbf2c2c[_0xc533('0x2f')][_0xc533('0x52')]+'%'};return _0x21dc06;})});}_0x179289=_[_0xc533('0x3b')]({},_0x179289,_0xbf2c2c[_0xc533('0x3c')]);return _0x290b7d['getAllConditions'](_0x179289);}})[_0xc533('0x21')](function(_0x4f5091){if(_0x4f5091){_0x5eb941=_0x4f5091['length'];if(!_0xbf2c2c[_0xc533('0x2f')][_0xc533('0x35')](_0xc533('0x53'))){_0x179289[_0xc533('0x1b')]=qs[_0xc533('0x1b')](_0xbf2c2c['query']['limit']);_0x179289[_0xc533('0x18')]=qs[_0xc533('0x18')](_0xbf2c2c[_0xc533('0x2f')][_0xc533('0x18')]);}return _0x290b7d[_0xc533('0x50')](_0x179289);}})[_0xc533('0x21')](function(_0x5cc1a3){if(_0x5cc1a3){return _0x5cc1a3?{'count':_0x5eb941,'rows':_0x5cc1a3}:null;}})[_0xc533('0x21')](respondWithResult(_0x3e6899,null))[_0xc533('0x40')](handleError(_0x3e6899,null));};exports[_0xc533('0x54')]=function(_0x172cbf,_0x51bfa8,_0x190350){var _0x2b9fa7={};var _0x476a1a={};var _0x258bc6;var _0x448e4d;return db[_0xc533('0x2c')]['findOne']({'where':{'id':_0x172cbf[_0xc533('0x4c')]['id']}})[_0xc533('0x21')](handleEntityNotFound(_0x51bfa8,null))[_0xc533('0x21')](function(_0x1d0bc6){if(_0x1d0bc6){_0x258bc6=_0x1d0bc6;_0x476a1a[_0xc533('0x32')]=_[_0xc533('0x41')](db[_0xc533('0x4f')]['rawAttributes']);_0x476a1a['query']=_[_0xc533('0x41')](_0x172cbf[_0xc533('0x2f')]);_0x476a1a[_0xc533('0x30')]=_['intersection'](_0x476a1a[_0xc533('0x32')],_0x476a1a[_0xc533('0x2f')]);_0x2b9fa7[_0xc533('0x33')]=_['intersection'](_0x476a1a[_0xc533('0x32')],qs[_0xc533('0x34')](_0x172cbf[_0xc533('0x2f')]['fields']));_0x2b9fa7[_0xc533('0x33')]=_0x2b9fa7[_0xc533('0x33')][_0xc533('0x42')]?_0x2b9fa7[_0xc533('0x33')]:_0x476a1a['model'];_0x2b9fa7[_0xc533('0x36')]=qs[_0xc533('0x37')](_0x172cbf[_0xc533('0x2f')][_0xc533('0x37')]);_0x2b9fa7[_0xc533('0x38')]=qs[_0xc533('0x30')](_['pick'](_0x172cbf[_0xc533('0x2f')],_0x476a1a[_0xc533('0x30')]));if(_0x172cbf[_0xc533('0x2f')]['filter']){_0x2b9fa7[_0xc533('0x38')]=_['merge'](_0x2b9fa7[_0xc533('0x38')],{'$or':_[_0xc533('0x2b')](_0x2b9fa7[_0xc533('0x33')],function(_0x23b641){var _0x36ae09={};_0x36ae09[_0x23b641]={'$like':'%'+_0x172cbf[_0xc533('0x2f')][_0xc533('0x52')]+'%'};return _0x36ae09;})});}_0x2b9fa7=_['merge']({},_0x2b9fa7,_0x172cbf[_0xc533('0x3c')]);return _0x258bc6[_0xc533('0x54')](_0x2b9fa7);}})[_0xc533('0x21')](function(_0x1ebe1b){if(_0x1ebe1b){_0x448e4d=_0x1ebe1b[_0xc533('0x42')];if(!_0x172cbf[_0xc533('0x2f')][_0xc533('0x35')](_0xc533('0x53'))){_0x2b9fa7['limit']=qs[_0xc533('0x1b')](_0x172cbf[_0xc533('0x2f')][_0xc533('0x1b')]);_0x2b9fa7[_0xc533('0x18')]=qs['offset'](_0x172cbf['query'][_0xc533('0x18')]);}return _0x258bc6[_0xc533('0x54')](_0x2b9fa7);}})[_0xc533('0x21')](function(_0x591137){if(_0x591137){return _0x591137?{'count':_0x448e4d,'rows':_0x591137}:null;}})[_0xc533('0x21')](respondWithResult(_0x51bfa8,null))['catch'](handleError(_0x51bfa8,null));};exports['addAction']=function(_0x563cc8,_0x48eadc,_0x5cae11){if(_0x563cc8['body']['id']){delete _0x563cc8['body']['id'];}return db[_0xc533('0x2c')][_0xc533('0x44')]({'where':{'id':_0x563cc8[_0xc533('0x4c')]['id']}})[_0xc533('0x21')](handleEntityNotFound(_0x48eadc,null))[_0xc533('0x21')](function(_0x4135dd){if(_0x4135dd){_0x563cc8['body']['TriggerId']=_0x4135dd['id'];return db[_0xc533('0x55')]['create'](_0x563cc8[_0xc533('0x46')]);}})[_0xc533('0x21')](respondWithResult(_0x48eadc,null))[_0xc533('0x40')](handleError(_0x48eadc,null));};exports[_0xc533('0x56')]=function(_0x3d1e64,_0x3ac810,_0x53e64f){var _0x3a72ab={};var _0x2bacd1={};var _0x59f578;var _0x5dd204;return db[_0xc533('0x2c')][_0xc533('0x51')]({'where':{'id':_0x3d1e64[_0xc533('0x4c')]['id']}})[_0xc533('0x21')](handleEntityNotFound(_0x3ac810,null))[_0xc533('0x21')](function(_0xf34a06){if(_0xf34a06){_0x59f578=_0xf34a06;_0x2bacd1[_0xc533('0x32')]=_[_0xc533('0x41')](db['Action'][_0xc533('0x2d')]);_0x2bacd1['query']=_[_0xc533('0x41')](_0x3d1e64[_0xc533('0x2f')]);_0x2bacd1[_0xc533('0x30')]=_[_0xc533('0x31')](_0x2bacd1['model'],_0x2bacd1[_0xc533('0x2f')]);_0x3a72ab[_0xc533('0x33')]=_[_0xc533('0x31')](_0x2bacd1[_0xc533('0x32')],qs[_0xc533('0x34')](_0x3d1e64['query'][_0xc533('0x34')]));_0x3a72ab[_0xc533('0x33')]=_0x3a72ab[_0xc533('0x33')][_0xc533('0x42')]?_0x3a72ab[_0xc533('0x33')]:_0x2bacd1[_0xc533('0x32')];_0x3a72ab[_0xc533('0x36')]=qs[_0xc533('0x37')](_0x3d1e64[_0xc533('0x2f')][_0xc533('0x37')]);_0x3a72ab['where']=qs[_0xc533('0x30')](_[_0xc533('0x39')](_0x3d1e64[_0xc533('0x2f')],_0x2bacd1[_0xc533('0x30')]));if(_0x3d1e64[_0xc533('0x2f')][_0xc533('0x52')]){_0x3a72ab[_0xc533('0x38')]=_[_0xc533('0x3b')](_0x3a72ab[_0xc533('0x38')],{'$or':_[_0xc533('0x2b')](_0x3a72ab[_0xc533('0x33')],function(_0x127e94){var _0x32d7ec={};_0x32d7ec[_0x127e94]={'$like':'%'+_0x3d1e64[_0xc533('0x2f')]['filter']+'%'};return _0x32d7ec;})});}_0x3a72ab=_['merge']({},_0x3a72ab,_0x3d1e64[_0xc533('0x3c')]);return _0x59f578[_0xc533('0x56')](_0x3a72ab);}})[_0xc533('0x21')](function(_0xe759bb){if(_0xe759bb){_0x5dd204=_0xe759bb[_0xc533('0x42')];if(!_0x3d1e64['query'][_0xc533('0x35')](_0xc533('0x53'))){_0x3a72ab[_0xc533('0x1b')]=qs[_0xc533('0x1b')](_0x3d1e64[_0xc533('0x2f')][_0xc533('0x1b')]);_0x3a72ab[_0xc533('0x18')]=qs['offset'](_0x3d1e64[_0xc533('0x2f')][_0xc533('0x18')]);}return _0x59f578[_0xc533('0x56')](_0x3a72ab);}})[_0xc533('0x21')](function(_0x4931bf){if(_0x4931bf){return _0x4931bf?{'count':_0x5dd204,'rows':_0x4931bf}:null;}})[_0xc533('0x21')](respondWithResult(_0x3ac810,null))[_0xc533('0x40')](handleError(_0x3ac810,null));};
\ No newline at end of file
+var _0xf1f3=['fieldName','model','query','filters','attributes','intersection','fields','length','hasOwnProperty','nolimit','sort','pick','filter','where','merge','type','includeAll','include','catch','show','keys','rawAttributes','options','find','create','body','role','user','UserProfileSection','autoAssociation','params','TriggerAllId','Condition','TriggerAnyId','getAllConditions','findOne','order','getAnyConditions','addAction','Action','getActions','eml-format','rimraf','zip-dir','fast-json-patch','moment','bluebird','mustache','util','sox','to-csv','lodash','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/environment','../../config/license/util','sendStatus','status','json','offset','undefined','limit','count','set','reject','update','then','destroy','get','Triggers','UserProfileResource','end','error','stack','name','send','map','Trigger'];(function(_0x33a60f,_0x27b9ad){var _0x52a990=function(_0xc119ef){while(--_0xc119ef){_0x33a60f['push'](_0x33a60f['shift']());}};_0x52a990(++_0x27b9ad);}(_0xf1f3,0x1dc));var _0x3f1f=function(_0x4a16a7,_0x4250dc){_0x4a16a7=_0x4a16a7-0x0;var _0x5410d4=_0xf1f3[_0x4a16a7];return _0x5410d4;};'use strict';var emlformat=require(_0x3f1f('0x0'));var rimraf=require(_0x3f1f('0x1'));var zipdir=require(_0x3f1f('0x2'));var jsonpatch=require(_0x3f1f('0x3'));var rp=require('request-promise');var moment=require(_0x3f1f('0x4'));var BPromise=require(_0x3f1f('0x5'));var Mustache=require(_0x3f1f('0x6'));var util=require(_0x3f1f('0x7'));var path=require('path');var sox=require(_0x3f1f('0x8'));var csv=require(_0x3f1f('0x9'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x3f1f('0xa'));var squel=require('squel');var crypto=require(_0x3f1f('0xb'));var jsforce=require(_0x3f1f('0xc'));var deskjs=require(_0x3f1f('0xd'));var toCsv=require(_0x3f1f('0x9'));var querystring=require(_0x3f1f('0xe'));var Papa=require(_0x3f1f('0xf'));var Redis=require(_0x3f1f('0x10'));var authService=require(_0x3f1f('0x11'));var qs=require(_0x3f1f('0x12'));var as=require(_0x3f1f('0x13'));var hardwareService=require(_0x3f1f('0x14'));var logger=require('../../config/logger')(_0x3f1f('0x15'));var utils=require('../../config/utils');var config=require(_0x3f1f('0x16'));var licenseUtil=require(_0x3f1f('0x17'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x455a24,_0x4a3787){_0x4a3787=_0x4a3787||0xcc;return function(_0x39cdc0){if(_0x39cdc0){return _0x455a24[_0x3f1f('0x18')](_0x4a3787);}return _0x455a24[_0x3f1f('0x19')](_0x4a3787)['end']();};}function respondWithResult(_0x89fe92,_0x1a6884){_0x1a6884=_0x1a6884||0xc8;return function(_0x57bb59){if(_0x57bb59){return _0x89fe92[_0x3f1f('0x19')](_0x1a6884)[_0x3f1f('0x1a')](_0x57bb59);}};}function respondWithFilteredResult(_0x203320,_0x10549d){return function(_0x4ef683){if(_0x4ef683){var _0x473035=typeof _0x10549d[_0x3f1f('0x1b')]===_0x3f1f('0x1c')&&typeof _0x10549d[_0x3f1f('0x1d')]===_0x3f1f('0x1c');var _0x333197=_0x4ef683[_0x3f1f('0x1e')];var _0x5e39ab=_0x473035?0x0:_0x10549d['offset'];var _0x9cd512=_0x473035?_0x4ef683[_0x3f1f('0x1e')]:_0x10549d[_0x3f1f('0x1b')]+_0x10549d[_0x3f1f('0x1d')];var _0x247cef;if(_0x9cd512>=_0x333197){_0x9cd512=_0x333197;_0x247cef=0xc8;}else{_0x247cef=0xce;}_0x203320[_0x3f1f('0x19')](_0x247cef);return _0x203320[_0x3f1f('0x1f')]('Content-Range',_0x5e39ab+'-'+_0x9cd512+'/'+_0x333197)[_0x3f1f('0x1a')](_0x4ef683);}return null;};}function patchUpdates(_0x546e0e){return function(_0x209f08){try{jsonpatch['apply'](_0x209f08,_0x546e0e,!![]);}catch(_0x1394fe){return BPromise[_0x3f1f('0x20')](_0x1394fe);}return _0x209f08['save']();};}function saveUpdates(_0x27cf28,_0x147460){return function(_0x34247b){if(_0x34247b){return _0x34247b[_0x3f1f('0x21')](_0x27cf28)[_0x3f1f('0x22')](function(_0x5416a9){return _0x5416a9;});}return null;};}function removeEntity(_0x8711a5,_0x3178dd){return function(_0x33ac41){if(_0x33ac41){return _0x33ac41[_0x3f1f('0x23')]()[_0x3f1f('0x22')](function(){var _0x52e56c=_0x33ac41[_0x3f1f('0x24')]({'plain':!![]});var _0x10f419=_0x3f1f('0x25');return db[_0x3f1f('0x26')][_0x3f1f('0x23')]({'where':{'type':_0x10f419,'resourceId':_0x52e56c['id']}})['then'](function(){return _0x33ac41;});})[_0x3f1f('0x22')](function(){_0x8711a5[_0x3f1f('0x19')](0xcc)[_0x3f1f('0x27')]();});}};}function handleEntityNotFound(_0x2651cb,_0x4c27d0){return function(_0x1aa7ae){if(!_0x1aa7ae){_0x2651cb['sendStatus'](0x194);}return _0x1aa7ae;};}function handleError(_0xade88e,_0x1ba8ea){_0x1ba8ea=_0x1ba8ea||0x1f4;return function(_0x54c3c2){logger[_0x3f1f('0x28')](_0x54c3c2[_0x3f1f('0x29')]);if(_0x54c3c2['name']){delete _0x54c3c2[_0x3f1f('0x2a')];}_0xade88e['status'](_0x1ba8ea)[_0x3f1f('0x2b')](_0x54c3c2);};}exports['index']=function(_0x29fe36,_0xf3b815){var _0x5f40a6={},_0x1ca451={},_0x4a4968={'count':0x0,'rows':[]};var _0x25458e=_[_0x3f1f('0x2c')](db[_0x3f1f('0x2d')]['rawAttributes'],function(_0x505775){return{'name':_0x505775[_0x3f1f('0x2e')],'type':_0x505775['type']['key']};});_0x1ca451[_0x3f1f('0x2f')]=_['map'](_0x25458e,_0x3f1f('0x2a'));_0x1ca451[_0x3f1f('0x30')]=_['keys'](_0x29fe36['query']);_0x1ca451[_0x3f1f('0x31')]=_['intersection'](_0x1ca451[_0x3f1f('0x2f')],_0x1ca451[_0x3f1f('0x30')]);_0x5f40a6[_0x3f1f('0x32')]=_[_0x3f1f('0x33')](_0x1ca451[_0x3f1f('0x2f')],qs['fields'](_0x29fe36[_0x3f1f('0x30')][_0x3f1f('0x34')]));_0x5f40a6['attributes']=_0x5f40a6[_0x3f1f('0x32')][_0x3f1f('0x35')]?_0x5f40a6[_0x3f1f('0x32')]:_0x1ca451['model'];if(!_0x29fe36[_0x3f1f('0x30')][_0x3f1f('0x36')](_0x3f1f('0x37'))){_0x5f40a6[_0x3f1f('0x1d')]=qs[_0x3f1f('0x1d')](_0x29fe36['query'][_0x3f1f('0x1d')]);_0x5f40a6['offset']=qs[_0x3f1f('0x1b')](_0x29fe36[_0x3f1f('0x30')][_0x3f1f('0x1b')]);}_0x5f40a6['order']=qs[_0x3f1f('0x38')](_0x29fe36['query'][_0x3f1f('0x38')]);_0x5f40a6['where']=qs[_0x3f1f('0x31')](_[_0x3f1f('0x39')](_0x29fe36[_0x3f1f('0x30')],_0x1ca451[_0x3f1f('0x31')]),_0x25458e);if(_0x29fe36[_0x3f1f('0x30')][_0x3f1f('0x3a')]){_0x5f40a6[_0x3f1f('0x3b')]=_[_0x3f1f('0x3c')](_0x5f40a6[_0x3f1f('0x3b')],{'$or':_['map'](_0x25458e,function(_0x5edda3){if(_0x5edda3[_0x3f1f('0x3d')]!=='VIRTUAL'){var _0x3710a3={};_0x3710a3[_0x5edda3[_0x3f1f('0x2a')]]={'$like':'%'+_0x29fe36[_0x3f1f('0x30')][_0x3f1f('0x3a')]+'%'};return _0x3710a3;}})});}_0x5f40a6=_[_0x3f1f('0x3c')]({},_0x5f40a6,_0x29fe36['options']);var _0x2e7824={'where':_0x5f40a6['where']};return db[_0x3f1f('0x2d')]['count'](_0x2e7824)['then'](function(_0x5cb1be){_0x4a4968[_0x3f1f('0x1e')]=_0x5cb1be;if(_0x29fe36[_0x3f1f('0x30')][_0x3f1f('0x3e')]){_0x5f40a6[_0x3f1f('0x3f')]=[{'all':!![]}];}return db[_0x3f1f('0x2d')]['findAll'](_0x5f40a6);})[_0x3f1f('0x22')](function(_0x5179bc){_0x4a4968['rows']=_0x5179bc;return _0x4a4968;})[_0x3f1f('0x22')](respondWithFilteredResult(_0xf3b815,_0x5f40a6))[_0x3f1f('0x40')](handleError(_0xf3b815,null));};exports[_0x3f1f('0x41')]=function(_0x3ae3bf,_0x4825f0){var _0x3da86={'raw':![],'where':{'id':_0x3ae3bf['params']['id']}},_0x28320c={};_0x28320c[_0x3f1f('0x2f')]=_[_0x3f1f('0x42')](db[_0x3f1f('0x2d')][_0x3f1f('0x43')]);_0x28320c['query']=_[_0x3f1f('0x42')](_0x3ae3bf['query']);_0x28320c[_0x3f1f('0x31')]=_[_0x3f1f('0x33')](_0x28320c['model'],_0x28320c['query']);_0x3da86['attributes']=_['intersection'](_0x28320c[_0x3f1f('0x2f')],qs[_0x3f1f('0x34')](_0x3ae3bf[_0x3f1f('0x30')]['fields']));_0x3da86['attributes']=_0x3da86[_0x3f1f('0x32')][_0x3f1f('0x35')]?_0x3da86[_0x3f1f('0x32')]:_0x28320c[_0x3f1f('0x2f')];if(_0x3ae3bf[_0x3f1f('0x30')][_0x3f1f('0x3e')]){_0x3da86[_0x3f1f('0x3f')]=[{'all':!![]}];}_0x3da86=_[_0x3f1f('0x3c')]({},_0x3da86,_0x3ae3bf[_0x3f1f('0x44')]);return db[_0x3f1f('0x2d')][_0x3f1f('0x45')](_0x3da86)[_0x3f1f('0x22')](handleEntityNotFound(_0x4825f0,null))[_0x3f1f('0x22')](respondWithResult(_0x4825f0,null))[_0x3f1f('0x40')](handleError(_0x4825f0,null));};exports[_0x3f1f('0x46')]=function(_0x5d7a7e,_0x8fd96){return db[_0x3f1f('0x2d')][_0x3f1f('0x46')](_0x5d7a7e[_0x3f1f('0x47')],{})[_0x3f1f('0x22')](function(_0x498f8b){var _0x14b040=_0x5d7a7e['user'][_0x3f1f('0x24')]({'plain':!![]});if(!_0x14b040)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0x14b040[_0x3f1f('0x48')]===_0x3f1f('0x49')){var _0xc1a907=_0x498f8b[_0x3f1f('0x24')]({'plain':!![]});var _0xfe831c='Triggers';return db[_0x3f1f('0x4a')][_0x3f1f('0x45')]({'where':{'name':_0xfe831c,'userProfileId':_0x14b040['userProfileId']},'raw':!![]})[_0x3f1f('0x22')](function(_0x2650cf){if(_0x2650cf&&_0x2650cf[_0x3f1f('0x4b')]===0x0){return db[_0x3f1f('0x26')]['create']({'name':_0xc1a907[_0x3f1f('0x2a')],'resourceId':_0xc1a907['id'],'type':_0x2650cf[_0x3f1f('0x2a')],'sectionId':_0x2650cf['id']},{})[_0x3f1f('0x22')](function(){return _0x498f8b;});}else{return _0x498f8b;}})[_0x3f1f('0x40')](function(_0x2955d9){logger[_0x3f1f('0x28')]('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0x2955d9);throw _0x2955d9;});}return _0x498f8b;})['then'](respondWithResult(_0x8fd96,0xc9))[_0x3f1f('0x40')](handleError(_0x8fd96,null));};exports[_0x3f1f('0x21')]=function(_0x2773d8,_0x1f6b1e){if(_0x2773d8[_0x3f1f('0x47')]['id']){delete _0x2773d8['body']['id'];}return db[_0x3f1f('0x2d')][_0x3f1f('0x45')]({'where':{'id':_0x2773d8[_0x3f1f('0x4c')]['id']}})[_0x3f1f('0x22')](handleEntityNotFound(_0x1f6b1e,null))[_0x3f1f('0x22')](saveUpdates(_0x2773d8[_0x3f1f('0x47')],null))[_0x3f1f('0x22')](respondWithResult(_0x1f6b1e,null))['catch'](handleError(_0x1f6b1e,null));};exports[_0x3f1f('0x23')]=function(_0x444888,_0x1e2ae3){return db[_0x3f1f('0x2d')][_0x3f1f('0x45')]({'where':{'id':_0x444888[_0x3f1f('0x4c')]['id']}})['then'](handleEntityNotFound(_0x1e2ae3,null))[_0x3f1f('0x22')](removeEntity(_0x1e2ae3,null))[_0x3f1f('0x40')](handleError(_0x1e2ae3,null));};exports['addAllCondition']=function(_0x2d5582,_0x43e5c9,_0x404440){if(_0x2d5582['body']['id']){delete _0x2d5582[_0x3f1f('0x47')]['id'];}return db[_0x3f1f('0x2d')]['find']({'where':{'id':_0x2d5582[_0x3f1f('0x4c')]['id']}})[_0x3f1f('0x22')](handleEntityNotFound(_0x43e5c9,null))[_0x3f1f('0x22')](function(_0x40cc7e){if(_0x40cc7e){_0x2d5582[_0x3f1f('0x47')][_0x3f1f('0x4d')]=_0x40cc7e['id'];return db[_0x3f1f('0x4e')]['create'](_0x2d5582[_0x3f1f('0x47')]);}})[_0x3f1f('0x22')](respondWithResult(_0x43e5c9,null))[_0x3f1f('0x40')](handleError(_0x43e5c9,null));};exports['addAnyCondition']=function(_0xff859,_0x5c3a00,_0x18968d){if(_0xff859['body']['id']){delete _0xff859[_0x3f1f('0x47')]['id'];}return db['Trigger']['find']({'where':{'id':_0xff859['params']['id']}})[_0x3f1f('0x22')](handleEntityNotFound(_0x5c3a00,null))['then'](function(_0x5a014d){if(_0x5a014d){_0xff859[_0x3f1f('0x47')][_0x3f1f('0x4f')]=_0x5a014d['id'];return db[_0x3f1f('0x4e')][_0x3f1f('0x46')](_0xff859[_0x3f1f('0x47')]);}})[_0x3f1f('0x22')](respondWithResult(_0x5c3a00,null))[_0x3f1f('0x40')](handleError(_0x5c3a00,null));};exports[_0x3f1f('0x50')]=function(_0x3f1512,_0x30f567,_0x24903b){var _0x39f1b1={};var _0x3e8fef={};var _0x53b1da;var _0x4e67e4;return db[_0x3f1f('0x2d')][_0x3f1f('0x51')]({'where':{'id':_0x3f1512[_0x3f1f('0x4c')]['id']}})[_0x3f1f('0x22')](handleEntityNotFound(_0x30f567,null))['then'](function(_0x111ce6){if(_0x111ce6){_0x53b1da=_0x111ce6;_0x3e8fef[_0x3f1f('0x2f')]=_[_0x3f1f('0x42')](db[_0x3f1f('0x4e')]['rawAttributes']);_0x3e8fef['query']=_[_0x3f1f('0x42')](_0x3f1512[_0x3f1f('0x30')]);_0x3e8fef[_0x3f1f('0x31')]=_[_0x3f1f('0x33')](_0x3e8fef[_0x3f1f('0x2f')],_0x3e8fef['query']);_0x39f1b1['attributes']=_['intersection'](_0x3e8fef[_0x3f1f('0x2f')],qs[_0x3f1f('0x34')](_0x3f1512['query']['fields']));_0x39f1b1[_0x3f1f('0x32')]=_0x39f1b1[_0x3f1f('0x32')][_0x3f1f('0x35')]?_0x39f1b1[_0x3f1f('0x32')]:_0x3e8fef['model'];_0x39f1b1[_0x3f1f('0x52')]=qs['sort'](_0x3f1512[_0x3f1f('0x30')]['sort']);_0x39f1b1[_0x3f1f('0x3b')]=qs['filters'](_[_0x3f1f('0x39')](_0x3f1512[_0x3f1f('0x30')],_0x3e8fef[_0x3f1f('0x31')]));if(_0x3f1512[_0x3f1f('0x30')]['filter']){_0x39f1b1['where']=_[_0x3f1f('0x3c')](_0x39f1b1[_0x3f1f('0x3b')],{'$or':_['map'](_0x39f1b1[_0x3f1f('0x32')],function(_0x2fe03f){var _0x8c6617={};_0x8c6617[_0x2fe03f]={'$like':'%'+_0x3f1512['query'][_0x3f1f('0x3a')]+'%'};return _0x8c6617;})});}_0x39f1b1=_[_0x3f1f('0x3c')]({},_0x39f1b1,_0x3f1512['options']);return _0x53b1da['getAllConditions'](_0x39f1b1);}})[_0x3f1f('0x22')](function(_0x51e28d){if(_0x51e28d){_0x4e67e4=_0x51e28d[_0x3f1f('0x35')];if(!_0x3f1512[_0x3f1f('0x30')][_0x3f1f('0x36')](_0x3f1f('0x37'))){_0x39f1b1[_0x3f1f('0x1d')]=qs[_0x3f1f('0x1d')](_0x3f1512[_0x3f1f('0x30')][_0x3f1f('0x1d')]);_0x39f1b1[_0x3f1f('0x1b')]=qs[_0x3f1f('0x1b')](_0x3f1512[_0x3f1f('0x30')][_0x3f1f('0x1b')]);}return _0x53b1da[_0x3f1f('0x50')](_0x39f1b1);}})[_0x3f1f('0x22')](function(_0x3bce74){if(_0x3bce74){return _0x3bce74?{'count':_0x4e67e4,'rows':_0x3bce74}:null;}})[_0x3f1f('0x22')](respondWithResult(_0x30f567,null))[_0x3f1f('0x40')](handleError(_0x30f567,null));};exports['getAnyConditions']=function(_0xcb638a,_0x3721d3,_0x4eefc9){var _0x38a054={};var _0x2b7c7f={};var _0x18d07f;var _0x5ceb0f;return db[_0x3f1f('0x2d')][_0x3f1f('0x51')]({'where':{'id':_0xcb638a[_0x3f1f('0x4c')]['id']}})[_0x3f1f('0x22')](handleEntityNotFound(_0x3721d3,null))[_0x3f1f('0x22')](function(_0x4d3816){if(_0x4d3816){_0x18d07f=_0x4d3816;_0x2b7c7f[_0x3f1f('0x2f')]=_[_0x3f1f('0x42')](db[_0x3f1f('0x4e')][_0x3f1f('0x43')]);_0x2b7c7f[_0x3f1f('0x30')]=_['keys'](_0xcb638a[_0x3f1f('0x30')]);_0x2b7c7f[_0x3f1f('0x31')]=_[_0x3f1f('0x33')](_0x2b7c7f[_0x3f1f('0x2f')],_0x2b7c7f[_0x3f1f('0x30')]);_0x38a054[_0x3f1f('0x32')]=_[_0x3f1f('0x33')](_0x2b7c7f[_0x3f1f('0x2f')],qs[_0x3f1f('0x34')](_0xcb638a[_0x3f1f('0x30')]['fields']));_0x38a054[_0x3f1f('0x32')]=_0x38a054[_0x3f1f('0x32')][_0x3f1f('0x35')]?_0x38a054['attributes']:_0x2b7c7f[_0x3f1f('0x2f')];_0x38a054[_0x3f1f('0x52')]=qs[_0x3f1f('0x38')](_0xcb638a[_0x3f1f('0x30')][_0x3f1f('0x38')]);_0x38a054[_0x3f1f('0x3b')]=qs[_0x3f1f('0x31')](_[_0x3f1f('0x39')](_0xcb638a['query'],_0x2b7c7f['filters']));if(_0xcb638a[_0x3f1f('0x30')][_0x3f1f('0x3a')]){_0x38a054['where']=_[_0x3f1f('0x3c')](_0x38a054[_0x3f1f('0x3b')],{'$or':_[_0x3f1f('0x2c')](_0x38a054[_0x3f1f('0x32')],function(_0x3b5a4d){var _0x766240={};_0x766240[_0x3b5a4d]={'$like':'%'+_0xcb638a[_0x3f1f('0x30')][_0x3f1f('0x3a')]+'%'};return _0x766240;})});}_0x38a054=_[_0x3f1f('0x3c')]({},_0x38a054,_0xcb638a[_0x3f1f('0x44')]);return _0x18d07f[_0x3f1f('0x53')](_0x38a054);}})[_0x3f1f('0x22')](function(_0x2ea067){if(_0x2ea067){_0x5ceb0f=_0x2ea067['length'];if(!_0xcb638a[_0x3f1f('0x30')][_0x3f1f('0x36')](_0x3f1f('0x37'))){_0x38a054['limit']=qs['limit'](_0xcb638a[_0x3f1f('0x30')][_0x3f1f('0x1d')]);_0x38a054['offset']=qs[_0x3f1f('0x1b')](_0xcb638a['query'][_0x3f1f('0x1b')]);}return _0x18d07f[_0x3f1f('0x53')](_0x38a054);}})[_0x3f1f('0x22')](function(_0x57dff3){if(_0x57dff3){return _0x57dff3?{'count':_0x5ceb0f,'rows':_0x57dff3}:null;}})[_0x3f1f('0x22')](respondWithResult(_0x3721d3,null))['catch'](handleError(_0x3721d3,null));};exports[_0x3f1f('0x54')]=function(_0xfb057b,_0x3479c1,_0x16c535){if(_0xfb057b[_0x3f1f('0x47')]['id']){delete _0xfb057b[_0x3f1f('0x47')]['id'];}return db['Trigger'][_0x3f1f('0x45')]({'where':{'id':_0xfb057b[_0x3f1f('0x4c')]['id']}})[_0x3f1f('0x22')](handleEntityNotFound(_0x3479c1,null))['then'](function(_0x455857){if(_0x455857){_0xfb057b[_0x3f1f('0x47')]['TriggerId']=_0x455857['id'];return db['Action']['create'](_0xfb057b[_0x3f1f('0x47')]);}})[_0x3f1f('0x22')](respondWithResult(_0x3479c1,null))[_0x3f1f('0x40')](handleError(_0x3479c1,null));};exports['getActions']=function(_0x1f2073,_0x3bf8a8,_0x48309f){var _0x12836c={};var _0x2b0c38={};var _0xed667c;var _0x5741aa;return db[_0x3f1f('0x2d')][_0x3f1f('0x51')]({'where':{'id':_0x1f2073[_0x3f1f('0x4c')]['id']}})[_0x3f1f('0x22')](handleEntityNotFound(_0x3bf8a8,null))[_0x3f1f('0x22')](function(_0x452775){if(_0x452775){_0xed667c=_0x452775;_0x2b0c38[_0x3f1f('0x2f')]=_[_0x3f1f('0x42')](db[_0x3f1f('0x55')]['rawAttributes']);_0x2b0c38[_0x3f1f('0x30')]=_[_0x3f1f('0x42')](_0x1f2073[_0x3f1f('0x30')]);_0x2b0c38[_0x3f1f('0x31')]=_[_0x3f1f('0x33')](_0x2b0c38[_0x3f1f('0x2f')],_0x2b0c38['query']);_0x12836c[_0x3f1f('0x32')]=_[_0x3f1f('0x33')](_0x2b0c38[_0x3f1f('0x2f')],qs[_0x3f1f('0x34')](_0x1f2073['query'][_0x3f1f('0x34')]));_0x12836c['attributes']=_0x12836c[_0x3f1f('0x32')][_0x3f1f('0x35')]?_0x12836c[_0x3f1f('0x32')]:_0x2b0c38[_0x3f1f('0x2f')];_0x12836c['order']=qs[_0x3f1f('0x38')](_0x1f2073[_0x3f1f('0x30')]['sort']);_0x12836c[_0x3f1f('0x3b')]=qs['filters'](_['pick'](_0x1f2073[_0x3f1f('0x30')],_0x2b0c38[_0x3f1f('0x31')]));if(_0x1f2073[_0x3f1f('0x30')][_0x3f1f('0x3a')]){_0x12836c[_0x3f1f('0x3b')]=_[_0x3f1f('0x3c')](_0x12836c[_0x3f1f('0x3b')],{'$or':_['map'](_0x12836c[_0x3f1f('0x32')],function(_0x520251){var _0x1a1fea={};_0x1a1fea[_0x520251]={'$like':'%'+_0x1f2073[_0x3f1f('0x30')][_0x3f1f('0x3a')]+'%'};return _0x1a1fea;})});}_0x12836c=_[_0x3f1f('0x3c')]({},_0x12836c,_0x1f2073[_0x3f1f('0x44')]);return _0xed667c[_0x3f1f('0x56')](_0x12836c);}})['then'](function(_0x3ef1a5){if(_0x3ef1a5){_0x5741aa=_0x3ef1a5[_0x3f1f('0x35')];if(!_0x1f2073[_0x3f1f('0x30')]['hasOwnProperty'](_0x3f1f('0x37'))){_0x12836c[_0x3f1f('0x1d')]=qs[_0x3f1f('0x1d')](_0x1f2073[_0x3f1f('0x30')]['limit']);_0x12836c[_0x3f1f('0x1b')]=qs[_0x3f1f('0x1b')](_0x1f2073['query'][_0x3f1f('0x1b')]);}return _0xed667c['getActions'](_0x12836c);}})[_0x3f1f('0x22')](function(_0x2672e5){if(_0x2672e5){return _0x2672e5?{'count':_0x5741aa,'rows':_0x2672e5}:null;}})[_0x3f1f('0x22')](respondWithResult(_0x3bf8a8,null))[_0x3f1f('0x40')](handleError(_0x3bf8a8,null));};
\ No newline at end of file
index 5c80924..2234bfc 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x61a5=['lodash','../../config/logger','api','moment','bluebird','request-promise','rimraf','../../config/environment','exports','define','Trigger','tools_triggers'];(function(_0x5eb6ca,_0x5347e7){var _0x38b2d2=function(_0x73e320){while(--_0x73e320){_0x5eb6ca['push'](_0x5eb6ca['shift']());}};_0x38b2d2(++_0x5347e7);}(_0x61a5,0xf0));var _0x561a=function(_0x5756c6,_0x58290a){_0x5756c6=_0x5756c6-0x0;var _0x4b5806=_0x61a5[_0x5756c6];return _0x4b5806;};'use strict';var _=require(_0x561a('0x0'));var util=require('util');var logger=require(_0x561a('0x1'))(_0x561a('0x2'));var moment=require(_0x561a('0x3'));var BPromise=require(_0x561a('0x4'));var rp=require(_0x561a('0x5'));var fs=require('fs');var path=require('path');var rimraf=require(_0x561a('0x6'));var config=require(_0x561a('0x7'));var attributes=require('./trigger.attributes');module[_0x561a('0x8')]=function(_0x31f762,_0x24c89a){return _0x31f762[_0x561a('0x9')](_0x561a('0xa'),attributes,{'tableName':_0x561a('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x28aa=['tools_triggers','util','../../config/logger','api','moment','bluebird','request-promise','rimraf','../../config/environment','./trigger.attributes','exports','define','Trigger'];(function(_0x4912ea,_0x152b5f){var _0x442a38=function(_0x3a2a21){while(--_0x3a2a21){_0x4912ea['push'](_0x4912ea['shift']());}};_0x442a38(++_0x152b5f);}(_0x28aa,0xf8));var _0xa28a=function(_0x710815,_0x520da8){_0x710815=_0x710815-0x0;var _0x5b3b89=_0x28aa[_0x710815];return _0x5b3b89;};'use strict';var _=require('lodash');var util=require(_0xa28a('0x0'));var logger=require(_0xa28a('0x1'))(_0xa28a('0x2'));var moment=require(_0xa28a('0x3'));var BPromise=require(_0xa28a('0x4'));var rp=require(_0xa28a('0x5'));var fs=require('fs');var path=require('path');var rimraf=require(_0xa28a('0x6'));var config=require(_0xa28a('0x7'));var attributes=require(_0xa28a('0x8'));module[_0xa28a('0x9')]=function(_0x526dec,_0x1fbde2){return _0x526dec[_0xa28a('0xa')](_0xa28a('0xb'),attributes,{'tableName':_0xa28a('0xc'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index f574a00..3d349a0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xcc02=['result','catch','GetTrigger','Trigger','findAll','options','where','attributes','limit','include','map','model','debug','ShowTrigger','find','raw','lodash','util','moment','randomstring','ioredis','../../mysqldb','rpc','jayson/promise','client','http','request','then','info','Trigger,\x20%s,\x20%s','request\x20sent','stringify','error','code','message'];(function(_0x167cc1,_0x56ef5a){var _0x10bc4b=function(_0xd6a255){while(--_0xd6a255){_0x167cc1['push'](_0x167cc1['shift']());}};_0x10bc4b(++_0x56ef5a);}(_0xcc02,0x9c));var _0x2cc0=function(_0x19aa51,_0x7fd0b7){_0x19aa51=_0x19aa51-0x0;var _0x28469b=_0xcc02[_0x19aa51];return _0x28469b;};'use strict';var _=require(_0x2cc0('0x0'));var util=require(_0x2cc0('0x1'));var moment=require(_0x2cc0('0x2'));var BPromise=require('bluebird');var rs=require(_0x2cc0('0x3'));var fs=require('fs');var Redis=require(_0x2cc0('0x4'));var db=require(_0x2cc0('0x5'))['db'];var utils=require('../../config/utils');var logger=require('../../config/logger')(_0x2cc0('0x6'));var config=require('../../config/environment');var jayson=require(_0x2cc0('0x7'));var client=jayson[_0x2cc0('0x8')][_0x2cc0('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x58bf68,_0x2c158a,_0x32b7c7){return new BPromise(function(_0x4de1e5,_0x2ab285){return client[_0x2cc0('0xa')](_0x58bf68,_0x32b7c7)[_0x2cc0('0xb')](function(_0x575aa8){logger[_0x2cc0('0xc')](_0x2cc0('0xd'),_0x2c158a,_0x2cc0('0xe'));logger['debug']('Trigger,\x20%s,\x20%s,\x20%s',_0x2c158a,_0x2cc0('0xe'),JSON[_0x2cc0('0xf')](_0x575aa8));if(_0x575aa8['error']){if(_0x575aa8[_0x2cc0('0x10')][_0x2cc0('0x11')]===0x1f4){logger[_0x2cc0('0x10')](_0x2cc0('0xd'),_0x2c158a,_0x575aa8[_0x2cc0('0x10')]['message']);return _0x2ab285(_0x575aa8['error'][_0x2cc0('0x12')]);}logger[_0x2cc0('0x10')]('Trigger,\x20%s,\x20%s',_0x2c158a,_0x575aa8[_0x2cc0('0x10')]['message']);return _0x4de1e5(_0x575aa8['error']['message']);}else{logger[_0x2cc0('0xc')](_0x2cc0('0xd'),_0x2c158a,_0x2cc0('0xe'));_0x4de1e5(_0x575aa8[_0x2cc0('0x13')][_0x2cc0('0x12')]);}})[_0x2cc0('0x14')](function(_0x381078){logger[_0x2cc0('0x10')](_0x2cc0('0xd'),_0x2c158a,_0x381078);_0x2ab285(_0x381078);});});}exports[_0x2cc0('0x15')]=function(_0x4c1143){var _0x32aba9=this;return new Promise(function(_0x51c248,_0x451d9f){return db[_0x2cc0('0x16')][_0x2cc0('0x17')]({'raw':_0x4c1143[_0x2cc0('0x18')]?_0x4c1143['options']['raw']===undefined?!![]:![]:!![],'where':_0x4c1143[_0x2cc0('0x18')]?_0x4c1143['options'][_0x2cc0('0x19')]||null:null,'attributes':_0x4c1143['options']?_0x4c1143[_0x2cc0('0x18')][_0x2cc0('0x1a')]||null:null,'limit':_0x4c1143[_0x2cc0('0x18')]?_0x4c1143['options'][_0x2cc0('0x1b')]||null:null,'include':_0x4c1143[_0x2cc0('0x18')]?_0x4c1143['options'][_0x2cc0('0x1c')]?_[_0x2cc0('0x1d')](_0x4c1143[_0x2cc0('0x18')][_0x2cc0('0x1c')],function(_0x57339d){return{'model':db[_0x57339d[_0x2cc0('0x1e')]],'as':_0x57339d['as'],'attributes':_0x57339d[_0x2cc0('0x1a')],'include':_0x57339d[_0x2cc0('0x1c')]?_[_0x2cc0('0x1d')](_0x57339d[_0x2cc0('0x1c')],function(_0x50e067){return{'model':db[_0x50e067['model']],'as':_0x50e067['as'],'attributes':_0x50e067[_0x2cc0('0x1a')],'include':_0x50e067[_0x2cc0('0x1c')]?_[_0x2cc0('0x1d')](_0x50e067[_0x2cc0('0x1c')],function(_0xd01096){return{'model':db[_0xd01096[_0x2cc0('0x1e')]],'as':_0xd01096['as'],'attributes':_0xd01096['attributes']};}):[]};}):[]};}):[]:[]})[_0x2cc0('0xb')](function(_0x381abd){logger['info'](_0x2cc0('0x15'),_0x4c1143);logger[_0x2cc0('0x1f')](_0x2cc0('0x15'),_0x4c1143,JSON['stringify'](_0x381abd));_0x51c248(_0x381abd);})[_0x2cc0('0x14')](function(_0x573a9a){logger[_0x2cc0('0x10')](_0x2cc0('0x15'),_0x573a9a[_0x2cc0('0x12')],_0x4c1143);_0x451d9f(_0x32aba9['error'](0x1f4,_0x573a9a[_0x2cc0('0x12')]));});});};exports[_0x2cc0('0x20')]=function(_0x18e0de){var _0x253af7=this;return new Promise(function(_0x36a9cb,_0x15ddff){return db[_0x2cc0('0x16')][_0x2cc0('0x21')]({'raw':_0x18e0de[_0x2cc0('0x18')]?_0x18e0de[_0x2cc0('0x18')][_0x2cc0('0x22')]===undefined?!![]:![]:!![],'where':_0x18e0de[_0x2cc0('0x18')]?_0x18e0de['options']['where']||null:null,'attributes':_0x18e0de['options']?_0x18e0de[_0x2cc0('0x18')][_0x2cc0('0x1a')]||null:null,'include':_0x18e0de[_0x2cc0('0x18')]?_0x18e0de[_0x2cc0('0x18')][_0x2cc0('0x1c')]?_['map'](_0x18e0de['options'][_0x2cc0('0x1c')],function(_0x160dc2){return{'model':db[_0x160dc2[_0x2cc0('0x1e')]],'as':_0x160dc2['as'],'attributes':_0x160dc2['attributes'],'include':_0x160dc2['include']?_[_0x2cc0('0x1d')](_0x160dc2['include'],function(_0x39e2a2){return{'model':db[_0x39e2a2[_0x2cc0('0x1e')]],'as':_0x39e2a2['as'],'attributes':_0x39e2a2[_0x2cc0('0x1a')],'include':_0x39e2a2['include']?_[_0x2cc0('0x1d')](_0x39e2a2[_0x2cc0('0x1c')],function(_0x2a307b){return{'model':db[_0x2a307b[_0x2cc0('0x1e')]],'as':_0x2a307b['as'],'attributes':_0x2a307b['attributes']};}):[]};}):[]};}):[]:[]})[_0x2cc0('0xb')](function(_0x44e20e){logger[_0x2cc0('0xc')](_0x2cc0('0x20'),_0x18e0de);logger[_0x2cc0('0x1f')](_0x2cc0('0x20'),_0x18e0de,JSON[_0x2cc0('0xf')](_0x44e20e));_0x36a9cb(_0x44e20e);})[_0x2cc0('0x14')](function(_0xf0067c){logger[_0x2cc0('0x10')](_0x2cc0('0x20'),_0xf0067c[_0x2cc0('0x12')],_0x18e0de);_0x15ddff(_0x253af7[_0x2cc0('0x10')](0x1f4,_0xf0067c['message']));});});};
\ No newline at end of file
+var _0x4372=['catch','ShowTrigger','find','lodash','util','bluebird','randomstring','ioredis','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','then','Trigger,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','code','message','info','Trigger,\x20%s,\x20%s','result','GetTrigger','Trigger','findAll','options','raw','attributes','limit','include','map','model','debug'];(function(_0x5d3af2,_0x17ef1d){var _0x3d903f=function(_0x2a3323){while(--_0x2a3323){_0x5d3af2['push'](_0x5d3af2['shift']());}};_0x3d903f(++_0x17ef1d);}(_0x4372,0x6f));var _0x2437=function(_0x540041,_0x388ca0){_0x540041=_0x540041-0x0;var _0x5a4898=_0x4372[_0x540041];return _0x5a4898;};'use strict';var _=require(_0x2437('0x0'));var util=require(_0x2437('0x1'));var moment=require('moment');var BPromise=require(_0x2437('0x2'));var rs=require(_0x2437('0x3'));var fs=require('fs');var Redis=require(_0x2437('0x4'));var db=require('../../mysqldb')['db'];var utils=require(_0x2437('0x5'));var logger=require(_0x2437('0x6'))(_0x2437('0x7'));var config=require(_0x2437('0x8'));var jayson=require(_0x2437('0x9'));var client=jayson[_0x2437('0xa')][_0x2437('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x25590e,_0x435dbc,_0x53a4c0){return new BPromise(function(_0x592de8,_0x3d5048){return client['request'](_0x25590e,_0x53a4c0)[_0x2437('0xc')](function(_0x4a3ba6){logger['info']('Trigger,\x20%s,\x20%s',_0x435dbc,'request\x20sent');logger['debug'](_0x2437('0xd'),_0x435dbc,_0x2437('0xe'),JSON[_0x2437('0xf')](_0x4a3ba6));if(_0x4a3ba6[_0x2437('0x10')]){if(_0x4a3ba6[_0x2437('0x10')][_0x2437('0x11')]===0x1f4){logger[_0x2437('0x10')]('Trigger,\x20%s,\x20%s',_0x435dbc,_0x4a3ba6[_0x2437('0x10')][_0x2437('0x12')]);return _0x3d5048(_0x4a3ba6[_0x2437('0x10')][_0x2437('0x12')]);}logger[_0x2437('0x10')]('Trigger,\x20%s,\x20%s',_0x435dbc,_0x4a3ba6[_0x2437('0x10')][_0x2437('0x12')]);return _0x592de8(_0x4a3ba6[_0x2437('0x10')][_0x2437('0x12')]);}else{logger[_0x2437('0x13')](_0x2437('0x14'),_0x435dbc,_0x2437('0xe'));_0x592de8(_0x4a3ba6[_0x2437('0x15')][_0x2437('0x12')]);}})['catch'](function(_0x4d6242){logger['error'](_0x2437('0x14'),_0x435dbc,_0x4d6242);_0x3d5048(_0x4d6242);});});}exports[_0x2437('0x16')]=function(_0x4c3ffe){var _0x5cb233=this;return new Promise(function(_0x358de6,_0x328c11){return db[_0x2437('0x17')][_0x2437('0x18')]({'raw':_0x4c3ffe[_0x2437('0x19')]?_0x4c3ffe[_0x2437('0x19')][_0x2437('0x1a')]===undefined?!![]:![]:!![],'where':_0x4c3ffe['options']?_0x4c3ffe[_0x2437('0x19')]['where']||null:null,'attributes':_0x4c3ffe['options']?_0x4c3ffe[_0x2437('0x19')][_0x2437('0x1b')]||null:null,'limit':_0x4c3ffe[_0x2437('0x19')]?_0x4c3ffe['options'][_0x2437('0x1c')]||null:null,'include':_0x4c3ffe[_0x2437('0x19')]?_0x4c3ffe[_0x2437('0x19')][_0x2437('0x1d')]?_[_0x2437('0x1e')](_0x4c3ffe[_0x2437('0x19')]['include'],function(_0x5401a1){return{'model':db[_0x5401a1[_0x2437('0x1f')]],'as':_0x5401a1['as'],'attributes':_0x5401a1[_0x2437('0x1b')],'include':_0x5401a1[_0x2437('0x1d')]?_[_0x2437('0x1e')](_0x5401a1[_0x2437('0x1d')],function(_0x2b8aa1){return{'model':db[_0x2b8aa1[_0x2437('0x1f')]],'as':_0x2b8aa1['as'],'attributes':_0x2b8aa1['attributes'],'include':_0x2b8aa1[_0x2437('0x1d')]?_['map'](_0x2b8aa1['include'],function(_0x34199e){return{'model':db[_0x34199e[_0x2437('0x1f')]],'as':_0x34199e['as'],'attributes':_0x34199e[_0x2437('0x1b')]};}):[]};}):[]};}):[]:[]})[_0x2437('0xc')](function(_0x2c9ff2){logger[_0x2437('0x13')](_0x2437('0x16'),_0x4c3ffe);logger[_0x2437('0x20')]('GetTrigger',_0x4c3ffe,JSON[_0x2437('0xf')](_0x2c9ff2));_0x358de6(_0x2c9ff2);})[_0x2437('0x21')](function(_0x51606e){logger[_0x2437('0x10')]('GetTrigger',_0x51606e[_0x2437('0x12')],_0x4c3ffe);_0x328c11(_0x5cb233['error'](0x1f4,_0x51606e[_0x2437('0x12')]));});});};exports[_0x2437('0x22')]=function(_0x2a32d7){var _0x55e097=this;return new Promise(function(_0x43ac1c,_0x1751aa){return db[_0x2437('0x17')][_0x2437('0x23')]({'raw':_0x2a32d7[_0x2437('0x19')]?_0x2a32d7[_0x2437('0x19')][_0x2437('0x1a')]===undefined?!![]:![]:!![],'where':_0x2a32d7['options']?_0x2a32d7[_0x2437('0x19')]['where']||null:null,'attributes':_0x2a32d7['options']?_0x2a32d7['options']['attributes']||null:null,'include':_0x2a32d7[_0x2437('0x19')]?_0x2a32d7[_0x2437('0x19')]['include']?_[_0x2437('0x1e')](_0x2a32d7['options']['include'],function(_0x5764a7){return{'model':db[_0x5764a7[_0x2437('0x1f')]],'as':_0x5764a7['as'],'attributes':_0x5764a7[_0x2437('0x1b')],'include':_0x5764a7[_0x2437('0x1d')]?_[_0x2437('0x1e')](_0x5764a7[_0x2437('0x1d')],function(_0x1c91d1){return{'model':db[_0x1c91d1[_0x2437('0x1f')]],'as':_0x1c91d1['as'],'attributes':_0x1c91d1[_0x2437('0x1b')],'include':_0x1c91d1['include']?_[_0x2437('0x1e')](_0x1c91d1['include'],function(_0x37e36e){return{'model':db[_0x37e36e[_0x2437('0x1f')]],'as':_0x37e36e['as'],'attributes':_0x37e36e[_0x2437('0x1b')]};}):[]};}):[]};}):[]:[]})[_0x2437('0xc')](function(_0x6215bd){logger[_0x2437('0x13')](_0x2437('0x22'),_0x2a32d7);logger[_0x2437('0x20')](_0x2437('0x22'),_0x2a32d7,JSON[_0x2437('0xf')](_0x6215bd));_0x43ac1c(_0x6215bd);})['catch'](function(_0x48445b){logger['error'](_0x2437('0x22'),_0x48445b[_0x2437('0x12')],_0x2a32d7);_0x1751aa(_0x55e097[_0x2437('0x10')](0x1f4,_0x48445b[_0x2437('0x12')]));});});};
\ No newline at end of file
index a70caa1..9038073 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xee4c=['./trunk.controller','get','isAuthenticated','index','/:id','show','post','clone','create','put','delete','destroy','exports','multer','util','express','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment'];(function(_0x1fb4e1,_0x3d4ce6){var _0x22d1b0=function(_0x553822){while(--_0x553822){_0x1fb4e1['push'](_0x1fb4e1['shift']());}};_0x22d1b0(++_0x3d4ce6);}(_0xee4c,0x1b1));var _0xcee4=function(_0x3de8e0,_0x19f9e8){_0x3de8e0=_0x3de8e0-0x0;var _0x449213=_0xee4c[_0x3de8e0];return _0x449213;};'use strict';var multer=require(_0xcee4('0x0'));var util=require(_0xcee4('0x1'));var path=require('path');var timeout=require('connect-timeout');var express=require(_0xcee4('0x2'));var router=express['Router']();var fs_extra=require(_0xcee4('0x3'));var auth=require(_0xcee4('0x4'));var interaction=require(_0xcee4('0x5'));var config=require(_0xcee4('0x6'));var controller=require(_0xcee4('0x7'));router[_0xcee4('0x8')]('/',auth[_0xcee4('0x9')](),controller[_0xcee4('0xa')]);router['get'](_0xcee4('0xb'),auth[_0xcee4('0x9')](),controller[_0xcee4('0xc')]);router[_0xcee4('0xd')]('/:id/clone',auth[_0xcee4('0x9')](),controller[_0xcee4('0xe')]);router[_0xcee4('0xd')]('/',auth[_0xcee4('0x9')](),controller[_0xcee4('0xf')]);router[_0xcee4('0x10')](_0xcee4('0xb'),auth['isAuthenticated'](),controller['update']);router[_0xcee4('0x11')]('/:id',auth['isAuthenticated'](),controller[_0xcee4('0x12')]);module[_0xcee4('0x13')]=router;
\ No newline at end of file
+var _0xedf8=['post','/:id/clone','clone','create','put','update','delete','/:id','destroy','util','path','Router','../../components/auth/service','../../config/environment','./trunk.controller','get','isAuthenticated','index','show'];(function(_0x1800c3,_0x43bc0b){var _0x51c575=function(_0x3e0ee1){while(--_0x3e0ee1){_0x1800c3['push'](_0x1800c3['shift']());}};_0x51c575(++_0x43bc0b);}(_0xedf8,0x8e));var _0x8edf=function(_0x11ed76,_0x4436cf){_0x11ed76=_0x11ed76-0x0;var _0x33b552=_0xedf8[_0x11ed76];return _0x33b552;};'use strict';var multer=require('multer');var util=require(_0x8edf('0x0'));var path=require(_0x8edf('0x1'));var timeout=require('connect-timeout');var express=require('express');var router=express[_0x8edf('0x2')]();var fs_extra=require('fs-extra');var auth=require(_0x8edf('0x3'));var interaction=require('../../components/interaction/service');var config=require(_0x8edf('0x4'));var controller=require(_0x8edf('0x5'));router[_0x8edf('0x6')]('/',auth[_0x8edf('0x7')](),controller[_0x8edf('0x8')]);router[_0x8edf('0x6')]('/:id',auth['isAuthenticated'](),controller[_0x8edf('0x9')]);router[_0x8edf('0xa')](_0x8edf('0xb'),auth[_0x8edf('0x7')](),controller[_0x8edf('0xc')]);router[_0x8edf('0xa')]('/',auth['isAuthenticated'](),controller[_0x8edf('0xd')]);router[_0x8edf('0xe')]('/:id',auth[_0x8edf('0x7')](),controller[_0x8edf('0xf')]);router[_0x8edf('0x10')](_0x8edf('0x11'),auth['isAuthenticated'](),controller[_0x8edf('0x12')]);module['exports']=router;
\ No newline at end of file
index 19744b8..084bba2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8973=['update','force_rport,comedia','setDataValue','nat','String\x20is\x20deprecated.\x20Please\x20use\x20an\x20Array\x20as\x20[\x22force_rport\x22,\x20\x22comedia\x22]','ulaw;alaw;gsm','allow','String\x20is\x20deprecated.\x20Please\x20use\x20an\x20Array\x20as\x20[\x22ulaw\x22,\x20\x22alaw\x22,\x20\x22alaw\x22]','insecure','String\x20is\x20deprecated.\x20Please\x20use\x20an\x20Array\x20as\x20[\x22port\x22,\x20\x22invite\x22]','never','INTEGER','always','accept','refuse','originate','uac','uas','pai','fingerprint','certificate','active','passive','actpass','dynamic','update,nonat','BOOLEAN','STRING','name','friend','user','peer','from-voip-provider','ENUM','ALLOWED_NOT_SCREENED','ALLOWED_PASSED_SCREEN','ALLOWED_FAILED_SCREEN','ALLOWED','PROHIB_NOT_SCREENED','PROHIB_PASSED_SCREEN','PROHIB','join','transport','getDataValue','split','rfc2833','info','shortinfo','inband','auto','yes','nonat'];(function(_0x14add3,_0x13ce8d){var _0x4a174f=function(_0x2b3ed7){while(--_0x2b3ed7){_0x14add3['push'](_0x14add3['shift']());}};_0x4a174f(++_0x13ce8d);}(_0x8973,0xeb));var _0x3897=function(_0x24c9d9,_0x186eca){_0x24c9d9=_0x24c9d9-0x0;var _0x2080ba=_0x8973[_0x24c9d9];return _0x2080ba;};'use strict';var Sequelize=require('sequelize');module['exports']={'name':{'type':Sequelize[_0x3897('0x0')],'allowNull':![],'unique':_0x3897('0x1'),'validate':{'notEmpty':!![],'is':/^[A-Za-z0-9\.\_]+$/i}},'type':{'type':Sequelize['ENUM'](_0x3897('0x2'),_0x3897('0x3'),_0x3897('0x4')),'allowNull':![],'defaultValue':_0x3897('0x2')},'context':{'type':Sequelize[_0x3897('0x0')],'allowNull':![],'defaultValue':_0x3897('0x5')},'callingpres':{'type':Sequelize[_0x3897('0x6')](_0x3897('0x7'),_0x3897('0x8'),_0x3897('0x9'),_0x3897('0xa'),_0x3897('0xb'),_0x3897('0xc'),'PROHIB_FAILED_SCREEN',_0x3897('0xd'))},'deny':{'type':Sequelize[_0x3897('0x0')]},'permit':{'type':Sequelize[_0x3897('0x0')]},'secret':{'type':Sequelize['STRING']},'md5secret':{'type':Sequelize[_0x3897('0x0')]},'remotesecret':{'type':Sequelize[_0x3897('0x0')]},'transport':{'type':Sequelize['STRING'],'defaultValue':'udp','set':function(_0x435477){this['setDataValue']('transport',_0x435477?_0x435477[_0x3897('0xe')](','):null);},'get':function(){return this['getDataValue'](_0x3897('0xf'))?this[_0x3897('0x10')](_0x3897('0xf'))[_0x3897('0x11')](','):null;},'comment':'String\x20is\x20deprecated.\x20Please\x20use\x20an\x20Array\x20as\x20[\x22udp\x22,\x20\x22tcp\x22]'},'dtmfmode':{'type':Sequelize[_0x3897('0x6')](_0x3897('0x12'),_0x3897('0x13'),_0x3897('0x14'),_0x3897('0x15'),_0x3897('0x16')),'defaultValue':_0x3897('0x12')},'directmedia':{'type':Sequelize[_0x3897('0x6')](_0x3897('0x17'),'no',_0x3897('0x18'),_0x3897('0x19'),'outgoing'),'defaultValue':'no'},'directrtpsetup':{'type':Sequelize['ENUM'](_0x3897('0x17'),'no'),'defaultValue':'no'},'directmediapermit':{'type':Sequelize[_0x3897('0x0')]},'directmediadeny':{'type':Sequelize[_0x3897('0x0')]},'nat':{'type':Sequelize['STRING'],'defaultValue':_0x3897('0x1a'),'set':function(_0x58e1b8){this[_0x3897('0x1b')](_0x3897('0x1c'),_0x58e1b8?_0x58e1b8[_0x3897('0xe')](','):null);},'get':function(){return this['getDataValue'](_0x3897('0x1c'))?this['getDataValue'](_0x3897('0x1c'))[_0x3897('0x11')](','):null;},'comment':_0x3897('0x1d')},'callgroup':{'type':Sequelize[_0x3897('0x0')]},'namedcallgroup':{'type':Sequelize[_0x3897('0x0')]},'pickupgroup':{'type':Sequelize[_0x3897('0x0')]},'namedpickupgroup':{'type':Sequelize[_0x3897('0x0')]},'language':{'type':Sequelize['STRING'],'defaultValue':'en'},'tonezone':{'type':Sequelize[_0x3897('0x0')],'allowNull':!![]},'disallow':{'type':Sequelize[_0x3897('0x0')],'defaultValue':'all'},'allow':{'type':Sequelize[_0x3897('0x0')],'allowNull':![],'defaultValue':_0x3897('0x1e'),'set':function(_0x4c38c6){this[_0x3897('0x1b')](_0x3897('0x1f'),_0x4c38c6?_0x4c38c6[_0x3897('0xe')](';'):_0x3897('0x1e'));},'get':function(){return this['getDataValue'](_0x3897('0x1f'))?this[_0x3897('0x10')](_0x3897('0x1f'))[_0x3897('0x11')](';'):null;},'comment':_0x3897('0x20')},'autoframing':{'type':Sequelize['ENUM'](_0x3897('0x17'),'no')},'insecure':{'type':Sequelize['STRING'],'defaultValue':'port,invite','set':function(_0x5206d7){this[_0x3897('0x1b')](_0x3897('0x21'),_0x5206d7?_0x5206d7['join'](','):null);},'get':function(){return this[_0x3897('0x10')](_0x3897('0x21'))?this[_0x3897('0x10')]('insecure')[_0x3897('0x11')](','):null;},'comment':_0x3897('0x22')},'trustrpid':{'type':Sequelize[_0x3897('0x6')](_0x3897('0x17'),'no'),'defaultValue':'no'},'trust_id_outbound':{'type':Sequelize['ENUM'](_0x3897('0x17'),'no'),'defaultValue':'no'},'progressinband':{'type':Sequelize[_0x3897('0x6')](_0x3897('0x17'),'no',_0x3897('0x23'))},'promiscredir':{'type':Sequelize[_0x3897('0x6')](_0x3897('0x17'),'no')},'useclientcode':{'type':Sequelize[_0x3897('0x6')]('yes','no')},'accountcode':{'type':Sequelize[_0x3897('0x24')](0xb)},'setvar':{'type':Sequelize['STRING']},'callerid':{'type':Sequelize[_0x3897('0x0')],'defaultValue':'\x22\x22\x20<>'},'amaflags':{'type':Sequelize[_0x3897('0x0')]},'callcounter':{'type':Sequelize[_0x3897('0x6')](_0x3897('0x17'),'no'),'defaultValue':'yes'},'busylevel':{'type':Sequelize[_0x3897('0x24')](0xb)},'allowoverlap':{'type':Sequelize[_0x3897('0x6')](_0x3897('0x17'),'no')},'allowsubscribe':{'type':Sequelize[_0x3897('0x6')](_0x3897('0x17'),'no')},'allowtransfer':{'type':Sequelize[_0x3897('0x6')]('yes','no')},'ignoresdpversion':{'type':Sequelize[_0x3897('0x6')](_0x3897('0x17'),'no')},'subscribecontext':{'type':Sequelize[_0x3897('0x0')]},'template':{'type':Sequelize[_0x3897('0x0')]},'videosupport':{'type':Sequelize[_0x3897('0x6')](_0x3897('0x17'),'no',_0x3897('0x25')),'defaultValue':'no'},'maxcallbitrate':{'type':Sequelize[_0x3897('0x24')](0xb)},'rfc2833compensate':{'type':Sequelize[_0x3897('0x6')](_0x3897('0x17'),'no')},'mailbox':{'type':Sequelize['STRING']},'session_timers':{'type':Sequelize['ENUM'](_0x3897('0x26'),_0x3897('0x27'),_0x3897('0x28'))},'session_expires':{'type':Sequelize['INTEGER'](0xb)},'session_minse':{'type':Sequelize[_0x3897('0x24')](0xb)},'session_refresher':{'type':Sequelize['ENUM'](_0x3897('0x29'),_0x3897('0x2a')),'defaultValue':_0x3897('0x2a')},'t38pt_usertpsource':{'type':Sequelize['STRING']},'regexten':{'type':Sequelize[_0x3897('0x0')]},'fromdomain':{'type':Sequelize[_0x3897('0x0')]},'fromuser':{'type':Sequelize[_0x3897('0x0')]},'port':{'type':Sequelize[_0x3897('0x24')](0x5)},'qualify':{'type':Sequelize['ENUM'](_0x3897('0x17'),'no'),'defaultValue':_0x3897('0x17')},'keepalive':{'type':Sequelize[_0x3897('0x24')](0xb)},'defaultip':{'type':Sequelize['STRING']},'defaultuser':{'type':Sequelize[_0x3897('0x0')]},'rtptimeout':{'type':Sequelize['INTEGER'](0xb)},'rtpholdtimeout':{'type':Sequelize[_0x3897('0x24')](0xb)},'rtpkeepalive':{'type':Sequelize[_0x3897('0x24')](0xb)},'sendrpid':{'type':Sequelize['ENUM'](_0x3897('0x17'),'no',_0x3897('0x2b')),'defaultValue':'no'},'outboundproxy':{'type':Sequelize[_0x3897('0x0')]},'callbackextension':{'type':Sequelize[_0x3897('0x0')]},'timert1':{'type':Sequelize['INTEGER'](0xb)},'timerb':{'type':Sequelize['INTEGER'](0xb)},'qualifyfreq':{'type':Sequelize[_0x3897('0x24')](0xb)},'contactpermit':{'type':Sequelize[_0x3897('0x0')]},'contactdeny':{'type':Sequelize[_0x3897('0x0')]},'contactacl':{'type':Sequelize[_0x3897('0x0')]},'unsolicited_mailbox':{'type':Sequelize[_0x3897('0x0')]},'use_q850_reason':{'type':Sequelize[_0x3897('0x0')]},'maxforwards':{'type':Sequelize['INTEGER'](0xb)},'encryption':{'type':Sequelize['ENUM'](_0x3897('0x17'),'no'),'defaultValue':'no'},'avpf':{'type':Sequelize[_0x3897('0x6')](_0x3897('0x17'),'no')},'force_avp':{'type':Sequelize[_0x3897('0x6')](_0x3897('0x17'),'no')},'icesupport':{'type':Sequelize['ENUM'](_0x3897('0x17'),'no')},'dtlsenable':{'type':Sequelize[_0x3897('0x6')](_0x3897('0x17'),'no')},'dtlsverify':{'type':Sequelize[_0x3897('0x6')](_0x3897('0x17'),'no',_0x3897('0x2c'),_0x3897('0x2d'))},'dtlsrekey':{'type':Sequelize[_0x3897('0x24')](0xb)},'dtlscertfile':{'type':Sequelize[_0x3897('0x0')]},'dtlsprivatekey':{'type':Sequelize['STRING']},'dtlscipher':{'type':Sequelize[_0x3897('0x0')]},'dtlscafile':{'type':Sequelize[_0x3897('0x0')]},'dtlscapath':{'type':Sequelize[_0x3897('0x0')]},'dtlssetup':{'type':Sequelize[_0x3897('0x6')](_0x3897('0x2e'),_0x3897('0x2f'),_0x3897('0x30')),'allowNull':!![]},'dtlsfingerprint':{'type':Sequelize[_0x3897('0x0')]},'usereqphone':{'type':Sequelize[_0x3897('0x6')](_0x3897('0x17'),'no'),'defaultValue':'no'},'recordonfeature':{'type':Sequelize[_0x3897('0x0')]},'recordofffeature':{'type':Sequelize[_0x3897('0x0')]},'call_limit':{'type':Sequelize[_0x3897('0x24')](0xb),'defaultValue':0x3e8},'registertrying':{'type':Sequelize[_0x3897('0x6')]('yes','no')},'subscribemwi':{'type':Sequelize['ENUM'](_0x3897('0x17'),'no')},'vmexten':{'type':Sequelize[_0x3897('0x0')]},'mohinterpret':{'type':Sequelize[_0x3897('0x0')]},'mohsuggest':{'type':Sequelize[_0x3897('0x0')]},'parkinglot':{'type':Sequelize['STRING']},'description':{'type':Sequelize['STRING']},'host':{'type':Sequelize['STRING'],'defaultValue':_0x3897('0x31')},'canreinvite':{'type':Sequelize[_0x3897('0x6')]('yes','no',_0x3897('0x18'),'update',_0x3897('0x32')),'defaultValue':'no'},'registry':{'type':Sequelize['STRING']},'otherFields':{'type':Sequelize[_0x3897('0x0')]},'active':{'type':Sequelize[_0x3897('0x33')],'allowNull':![],'defaultValue':!![]},'t38pt_udptl':{'type':Sequelize[_0x3897('0x0')],'defaultValue':'no'}};
\ No newline at end of file
+var _0x48ab=['outgoing','nat','join','getDataValue','ulaw;alaw;gsm','allow','String\x20is\x20deprecated.\x20Please\x20use\x20an\x20Array\x20as\x20[\x22ulaw\x22,\x20\x22alaw\x22,\x20\x22alaw\x22]','port,invite','insecure','String\x20is\x20deprecated.\x20Please\x20use\x20an\x20Array\x20as\x20[\x22port\x22,\x20\x22invite\x22]','never','INTEGER','always','refuse','uac','uas','pai','fingerprint','certificate','active','passive','actpass','update,nonat','BOOLEAN','sequelize','exports','STRING','name','ENUM','friend','user','peer','from-voip-provider','ALLOWED_NOT_SCREENED','ALLOWED_PASSED_SCREEN','ALLOWED_FAILED_SCREEN','ALLOWED','PROHIB_NOT_SCREENED','PROHIB_PASSED_SCREEN','PROHIB_FAILED_SCREEN','PROHIB','udp','setDataValue','transport','split','rfc2833','shortinfo','auto','yes','nonat','update'];(function(_0x3fc79d,_0x559146){var _0x246b07=function(_0x3e05b7){while(--_0x3e05b7){_0x3fc79d['push'](_0x3fc79d['shift']());}};_0x246b07(++_0x559146);}(_0x48ab,0x17d));var _0xb48a=function(_0x3bf83f,_0x181cac){_0x3bf83f=_0x3bf83f-0x0;var _0x22c4a9=_0x48ab[_0x3bf83f];return _0x22c4a9;};'use strict';var Sequelize=require(_0xb48a('0x0'));module[_0xb48a('0x1')]={'name':{'type':Sequelize[_0xb48a('0x2')],'allowNull':![],'unique':_0xb48a('0x3'),'validate':{'notEmpty':!![],'is':/^[A-Za-z0-9\.\_]+$/i}},'type':{'type':Sequelize[_0xb48a('0x4')](_0xb48a('0x5'),_0xb48a('0x6'),_0xb48a('0x7')),'allowNull':![],'defaultValue':_0xb48a('0x5')},'context':{'type':Sequelize[_0xb48a('0x2')],'allowNull':![],'defaultValue':_0xb48a('0x8')},'callingpres':{'type':Sequelize[_0xb48a('0x4')](_0xb48a('0x9'),_0xb48a('0xa'),_0xb48a('0xb'),_0xb48a('0xc'),_0xb48a('0xd'),_0xb48a('0xe'),_0xb48a('0xf'),_0xb48a('0x10'))},'deny':{'type':Sequelize[_0xb48a('0x2')]},'permit':{'type':Sequelize['STRING']},'secret':{'type':Sequelize[_0xb48a('0x2')]},'md5secret':{'type':Sequelize[_0xb48a('0x2')]},'remotesecret':{'type':Sequelize[_0xb48a('0x2')]},'transport':{'type':Sequelize['STRING'],'defaultValue':_0xb48a('0x11'),'set':function(_0x36742c){this[_0xb48a('0x12')]('transport',_0x36742c?_0x36742c['join'](','):null);},'get':function(){return this['getDataValue'](_0xb48a('0x13'))?this['getDataValue'](_0xb48a('0x13'))[_0xb48a('0x14')](','):null;},'comment':'String\x20is\x20deprecated.\x20Please\x20use\x20an\x20Array\x20as\x20[\x22udp\x22,\x20\x22tcp\x22]'},'dtmfmode':{'type':Sequelize[_0xb48a('0x4')](_0xb48a('0x15'),'info',_0xb48a('0x16'),'inband',_0xb48a('0x17')),'defaultValue':_0xb48a('0x15')},'directmedia':{'type':Sequelize['ENUM'](_0xb48a('0x18'),'no',_0xb48a('0x19'),_0xb48a('0x1a'),_0xb48a('0x1b')),'defaultValue':'no'},'directrtpsetup':{'type':Sequelize[_0xb48a('0x4')]('yes','no'),'defaultValue':'no'},'directmediapermit':{'type':Sequelize[_0xb48a('0x2')]},'directmediadeny':{'type':Sequelize['STRING']},'nat':{'type':Sequelize[_0xb48a('0x2')],'defaultValue':'force_rport,comedia','set':function(_0x2d7ede){this[_0xb48a('0x12')](_0xb48a('0x1c'),_0x2d7ede?_0x2d7ede[_0xb48a('0x1d')](','):null);},'get':function(){return this['getDataValue'](_0xb48a('0x1c'))?this[_0xb48a('0x1e')](_0xb48a('0x1c'))[_0xb48a('0x14')](','):null;},'comment':'String\x20is\x20deprecated.\x20Please\x20use\x20an\x20Array\x20as\x20[\x22force_rport\x22,\x20\x22comedia\x22]'},'callgroup':{'type':Sequelize[_0xb48a('0x2')]},'namedcallgroup':{'type':Sequelize[_0xb48a('0x2')]},'pickupgroup':{'type':Sequelize[_0xb48a('0x2')]},'namedpickupgroup':{'type':Sequelize['STRING']},'language':{'type':Sequelize[_0xb48a('0x2')],'defaultValue':'en'},'tonezone':{'type':Sequelize[_0xb48a('0x2')],'allowNull':!![]},'disallow':{'type':Sequelize[_0xb48a('0x2')],'defaultValue':'all'},'allow':{'type':Sequelize[_0xb48a('0x2')],'allowNull':![],'defaultValue':_0xb48a('0x1f'),'set':function(_0x24dc94){this[_0xb48a('0x12')](_0xb48a('0x20'),_0x24dc94?_0x24dc94['join'](';'):_0xb48a('0x1f'));},'get':function(){return this[_0xb48a('0x1e')](_0xb48a('0x20'))?this[_0xb48a('0x1e')](_0xb48a('0x20'))[_0xb48a('0x14')](';'):null;},'comment':_0xb48a('0x21')},'autoframing':{'type':Sequelize[_0xb48a('0x4')](_0xb48a('0x18'),'no')},'insecure':{'type':Sequelize[_0xb48a('0x2')],'defaultValue':_0xb48a('0x22'),'set':function(_0x27748c){this['setDataValue']('insecure',_0x27748c?_0x27748c[_0xb48a('0x1d')](','):null);},'get':function(){return this[_0xb48a('0x1e')]('insecure')?this[_0xb48a('0x1e')](_0xb48a('0x23'))[_0xb48a('0x14')](','):null;},'comment':_0xb48a('0x24')},'trustrpid':{'type':Sequelize[_0xb48a('0x4')](_0xb48a('0x18'),'no'),'defaultValue':'no'},'trust_id_outbound':{'type':Sequelize['ENUM'](_0xb48a('0x18'),'no'),'defaultValue':'no'},'progressinband':{'type':Sequelize[_0xb48a('0x4')]('yes','no',_0xb48a('0x25'))},'promiscredir':{'type':Sequelize[_0xb48a('0x4')](_0xb48a('0x18'),'no')},'useclientcode':{'type':Sequelize[_0xb48a('0x4')](_0xb48a('0x18'),'no')},'accountcode':{'type':Sequelize['INTEGER'](0xb)},'setvar':{'type':Sequelize[_0xb48a('0x2')]},'callerid':{'type':Sequelize['STRING'],'defaultValue':'\x22\x22\x20<>'},'amaflags':{'type':Sequelize[_0xb48a('0x2')]},'callcounter':{'type':Sequelize[_0xb48a('0x4')](_0xb48a('0x18'),'no'),'defaultValue':_0xb48a('0x18')},'busylevel':{'type':Sequelize[_0xb48a('0x26')](0xb)},'allowoverlap':{'type':Sequelize[_0xb48a('0x4')](_0xb48a('0x18'),'no')},'allowsubscribe':{'type':Sequelize[_0xb48a('0x4')](_0xb48a('0x18'),'no')},'allowtransfer':{'type':Sequelize['ENUM'](_0xb48a('0x18'),'no')},'ignoresdpversion':{'type':Sequelize['ENUM']('yes','no')},'subscribecontext':{'type':Sequelize[_0xb48a('0x2')]},'template':{'type':Sequelize[_0xb48a('0x2')]},'videosupport':{'type':Sequelize[_0xb48a('0x4')](_0xb48a('0x18'),'no',_0xb48a('0x27')),'defaultValue':'no'},'maxcallbitrate':{'type':Sequelize[_0xb48a('0x26')](0xb)},'rfc2833compensate':{'type':Sequelize[_0xb48a('0x4')](_0xb48a('0x18'),'no')},'mailbox':{'type':Sequelize['STRING']},'session_timers':{'type':Sequelize[_0xb48a('0x4')]('accept',_0xb48a('0x28'),'originate')},'session_expires':{'type':Sequelize['INTEGER'](0xb)},'session_minse':{'type':Sequelize[_0xb48a('0x26')](0xb)},'session_refresher':{'type':Sequelize['ENUM'](_0xb48a('0x29'),_0xb48a('0x2a')),'defaultValue':_0xb48a('0x2a')},'t38pt_usertpsource':{'type':Sequelize[_0xb48a('0x2')]},'regexten':{'type':Sequelize[_0xb48a('0x2')]},'fromdomain':{'type':Sequelize['STRING']},'fromuser':{'type':Sequelize[_0xb48a('0x2')]},'port':{'type':Sequelize['INTEGER'](0x5)},'qualify':{'type':Sequelize[_0xb48a('0x4')]('yes','no'),'defaultValue':'yes'},'keepalive':{'type':Sequelize[_0xb48a('0x26')](0xb)},'defaultip':{'type':Sequelize[_0xb48a('0x2')]},'defaultuser':{'type':Sequelize[_0xb48a('0x2')]},'rtptimeout':{'type':Sequelize[_0xb48a('0x26')](0xb)},'rtpholdtimeout':{'type':Sequelize['INTEGER'](0xb)},'rtpkeepalive':{'type':Sequelize[_0xb48a('0x26')](0xb)},'sendrpid':{'type':Sequelize[_0xb48a('0x4')](_0xb48a('0x18'),'no',_0xb48a('0x2b')),'defaultValue':'no'},'outboundproxy':{'type':Sequelize[_0xb48a('0x2')]},'callbackextension':{'type':Sequelize[_0xb48a('0x2')]},'timert1':{'type':Sequelize['INTEGER'](0xb)},'timerb':{'type':Sequelize[_0xb48a('0x26')](0xb)},'qualifyfreq':{'type':Sequelize[_0xb48a('0x26')](0xb)},'contactpermit':{'type':Sequelize[_0xb48a('0x2')]},'contactdeny':{'type':Sequelize['STRING']},'contactacl':{'type':Sequelize[_0xb48a('0x2')]},'unsolicited_mailbox':{'type':Sequelize[_0xb48a('0x2')]},'use_q850_reason':{'type':Sequelize[_0xb48a('0x2')]},'maxforwards':{'type':Sequelize['INTEGER'](0xb)},'encryption':{'type':Sequelize[_0xb48a('0x4')](_0xb48a('0x18'),'no'),'defaultValue':'no'},'avpf':{'type':Sequelize['ENUM'](_0xb48a('0x18'),'no')},'force_avp':{'type':Sequelize['ENUM'](_0xb48a('0x18'),'no')},'icesupport':{'type':Sequelize[_0xb48a('0x4')]('yes','no')},'dtlsenable':{'type':Sequelize[_0xb48a('0x4')](_0xb48a('0x18'),'no')},'dtlsverify':{'type':Sequelize['ENUM']('yes','no',_0xb48a('0x2c'),_0xb48a('0x2d'))},'dtlsrekey':{'type':Sequelize[_0xb48a('0x26')](0xb)},'dtlscertfile':{'type':Sequelize['STRING']},'dtlsprivatekey':{'type':Sequelize[_0xb48a('0x2')]},'dtlscipher':{'type':Sequelize[_0xb48a('0x2')]},'dtlscafile':{'type':Sequelize['STRING']},'dtlscapath':{'type':Sequelize[_0xb48a('0x2')]},'dtlssetup':{'type':Sequelize[_0xb48a('0x4')](_0xb48a('0x2e'),_0xb48a('0x2f'),_0xb48a('0x30')),'allowNull':!![]},'dtlsfingerprint':{'type':Sequelize[_0xb48a('0x2')]},'usereqphone':{'type':Sequelize[_0xb48a('0x4')](_0xb48a('0x18'),'no'),'defaultValue':'no'},'recordonfeature':{'type':Sequelize[_0xb48a('0x2')]},'recordofffeature':{'type':Sequelize['STRING']},'call_limit':{'type':Sequelize['INTEGER'](0xb),'defaultValue':0x3e8},'registertrying':{'type':Sequelize[_0xb48a('0x4')](_0xb48a('0x18'),'no')},'subscribemwi':{'type':Sequelize[_0xb48a('0x4')](_0xb48a('0x18'),'no')},'vmexten':{'type':Sequelize[_0xb48a('0x2')]},'mohinterpret':{'type':Sequelize[_0xb48a('0x2')]},'mohsuggest':{'type':Sequelize[_0xb48a('0x2')]},'parkinglot':{'type':Sequelize['STRING']},'description':{'type':Sequelize[_0xb48a('0x2')]},'host':{'type':Sequelize[_0xb48a('0x2')],'defaultValue':'dynamic'},'canreinvite':{'type':Sequelize[_0xb48a('0x4')](_0xb48a('0x18'),'no',_0xb48a('0x19'),'update',_0xb48a('0x31')),'defaultValue':'no'},'registry':{'type':Sequelize[_0xb48a('0x2')]},'otherFields':{'type':Sequelize['STRING']},'active':{'type':Sequelize[_0xb48a('0x32')],'allowNull':![],'defaultValue':!![]},'t38pt_udptl':{'type':Sequelize[_0xb48a('0x2')],'defaultValue':'no'}};
\ No newline at end of file
index 3a33a86..e0e6eaf 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3e74=['map','Trunk','rawAttributes','fieldName','key','model','keys','query','filters','intersection','fields','attributes','length','nolimit','order','sort','pick','where','type','filter','merge','options','includeAll','include','findAll','params','clone','find','get','omit','createdAt','body','updatedAt','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','UserProfileSection','create','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','join','root','server/files/templates/trunk.ejs','utf8','readFileSync','server/files/templates/registry.ejs','render','/etc/asterisk/sip_xcally_trunks.conf','registry','/etc/asterisk/sip_xcally_registers.conf','Reload','chan_sip.so','writeFileSync','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','jayson/promise','client','http','request','then','info','debug','Trunk,\x20%s,\x20%s,\x20%s','request\x20sent','error','code','Trunk,\x20%s,\x20%s','message','result','catch','sendStatus','status','json','undefined','count','offset','limit','set','Content-Range','apply','reject','update','destroy','Trunks','UserProfileResource','stack','name','send','index'];(function(_0xf93a12,_0x186f62){var _0xeabcf2=function(_0x18e5eb){while(--_0x18e5eb){_0xf93a12['push'](_0xf93a12['shift']());}};_0xeabcf2(++_0x186f62);}(_0x3e74,0x175));var _0x43e7=function(_0xf8b559,_0x539a8a){_0xf8b559=_0xf8b559-0x0;var _0x1a7bdd=_0x3e74[_0xf8b559];return _0x1a7bdd;};'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'];var jayson=require(_0x43e7('0x15'));var client=jayson[_0x43e7('0x16')][_0x43e7('0x17')]({'port':0x232a});function respondWithRpcPromise(_0x4e008c,_0x583d85,_0x2fcb36,_0x21fdd3){return new BPromise(function(_0x44b0bd,_0x51b974){var _0x5e641c=_0x21fdd3||client;return _0x5e641c[_0x43e7('0x18')](_0x4e008c,_0x2fcb36)[_0x43e7('0x19')](function(_0x203378){logger[_0x43e7('0x1a')]('Trunk,\x20%s,\x20%s',_0x583d85,'request\x20sent');logger[_0x43e7('0x1b')](_0x43e7('0x1c'),_0x583d85,_0x43e7('0x1d'),JSON['stringify'](_0x203378));if(_0x203378['error']){if(_0x203378[_0x43e7('0x1e')][_0x43e7('0x1f')]===0x1f4){logger[_0x43e7('0x1e')](_0x43e7('0x20'),_0x583d85,_0x203378[_0x43e7('0x1e')][_0x43e7('0x21')]);return _0x51b974(_0x203378[_0x43e7('0x1e')][_0x43e7('0x21')]);}logger[_0x43e7('0x1e')](_0x43e7('0x20'),_0x583d85,_0x203378[_0x43e7('0x1e')][_0x43e7('0x21')]);return _0x44b0bd(_0x203378['error'][_0x43e7('0x21')]);}else{logger[_0x43e7('0x1a')]('Trunk,\x20%s,\x20%s',_0x583d85,_0x43e7('0x1d'));_0x44b0bd(_0x203378[_0x43e7('0x22')][_0x43e7('0x21')]);}})[_0x43e7('0x23')](function(_0x4077fb){logger[_0x43e7('0x1e')]('Trunk,\x20%s,\x20%s',_0x583d85,_0x4077fb);_0x51b974(_0x4077fb);});});}function respondWithStatusCode(_0x454359,_0x4eea52){_0x4eea52=_0x4eea52||0xcc;return function(_0x4c9df3){if(_0x4c9df3){return _0x454359[_0x43e7('0x24')](_0x4eea52);}return _0x454359[_0x43e7('0x25')](_0x4eea52)['end']();};}function respondWithResult(_0x1f0673,_0x4ca5cf){_0x4ca5cf=_0x4ca5cf||0xc8;return function(_0x326dab){if(_0x326dab){return _0x1f0673['status'](_0x4ca5cf)[_0x43e7('0x26')](_0x326dab);}};}function respondWithFilteredResult(_0x1b5f50,_0x20888b){return function(_0x405f85){if(_0x405f85){var _0x51f4d7=typeof _0x20888b['offset']===_0x43e7('0x27')&&typeof _0x20888b['limit']===_0x43e7('0x27');var _0x40dc8f=_0x405f85[_0x43e7('0x28')];var _0xb1fc63=_0x51f4d7?0x0:_0x20888b['offset'];var _0x33a1a5=_0x51f4d7?_0x405f85[_0x43e7('0x28')]:_0x20888b[_0x43e7('0x29')]+_0x20888b[_0x43e7('0x2a')];var _0x442c3b;if(_0x33a1a5>=_0x40dc8f){_0x33a1a5=_0x40dc8f;_0x442c3b=0xc8;}else{_0x442c3b=0xce;}_0x1b5f50[_0x43e7('0x25')](_0x442c3b);return _0x1b5f50[_0x43e7('0x2b')](_0x43e7('0x2c'),_0xb1fc63+'-'+_0x33a1a5+'/'+_0x40dc8f)[_0x43e7('0x26')](_0x405f85);}return null;};}function patchUpdates(_0x35dbcd){return function(_0x17df44){try{jsonpatch[_0x43e7('0x2d')](_0x17df44,_0x35dbcd,!![]);}catch(_0x2bde44){return BPromise[_0x43e7('0x2e')](_0x2bde44);}return _0x17df44['save']();};}function saveUpdates(_0x238321,_0x44f6b0){return function(_0x3b8f78){if(_0x3b8f78){return _0x3b8f78[_0x43e7('0x2f')](_0x238321)[_0x43e7('0x19')](function(_0x4c8650){return _0x4c8650;});}return null;};}function removeEntity(_0x1eba65,_0x49b83d){return function(_0x30d47e){if(_0x30d47e){return _0x30d47e[_0x43e7('0x30')]()['then'](function(){var _0x5a7342=_0x30d47e['get']({'plain':!![]});var _0xf8320=_0x43e7('0x31');return db[_0x43e7('0x32')][_0x43e7('0x30')]({'where':{'type':_0xf8320,'resourceId':_0x5a7342['id']}})[_0x43e7('0x19')](function(){return _0x30d47e;});})[_0x43e7('0x19')](function(){_0x1eba65['status'](0xcc)['end']();});}};}function handleEntityNotFound(_0x4ac23d,_0x59e5b2){return function(_0x4e8e86){if(!_0x4e8e86){_0x4ac23d['sendStatus'](0x194);}return _0x4e8e86;};}function handleError(_0x5cb753,_0x14d888){_0x14d888=_0x14d888||0x1f4;return function(_0x49cda6){logger[_0x43e7('0x1e')](_0x49cda6[_0x43e7('0x33')]);if(_0x49cda6[_0x43e7('0x34')]){delete _0x49cda6[_0x43e7('0x34')];}_0x5cb753[_0x43e7('0x25')](_0x14d888)[_0x43e7('0x35')](_0x49cda6);};}exports[_0x43e7('0x36')]=function(_0x4f1a5f,_0x5332d9){var _0x5d84f4={},_0xfa0474={},_0xfe70e9={'count':0x0,'rows':[]};var _0x199ff6=_[_0x43e7('0x37')](db[_0x43e7('0x38')][_0x43e7('0x39')],function(_0x1d4589){return{'name':_0x1d4589[_0x43e7('0x3a')],'type':_0x1d4589['type'][_0x43e7('0x3b')]};});_0xfa0474[_0x43e7('0x3c')]=_['map'](_0x199ff6,_0x43e7('0x34'));_0xfa0474['query']=_[_0x43e7('0x3d')](_0x4f1a5f[_0x43e7('0x3e')]);_0xfa0474[_0x43e7('0x3f')]=_[_0x43e7('0x40')](_0xfa0474[_0x43e7('0x3c')],_0xfa0474[_0x43e7('0x3e')]);_0x5d84f4['attributes']=_['intersection'](_0xfa0474[_0x43e7('0x3c')],qs[_0x43e7('0x41')](_0x4f1a5f[_0x43e7('0x3e')][_0x43e7('0x41')]));_0x5d84f4[_0x43e7('0x42')]=_0x5d84f4['attributes'][_0x43e7('0x43')]?_0x5d84f4[_0x43e7('0x42')]:_0xfa0474['model'];if(!_0x4f1a5f[_0x43e7('0x3e')]['hasOwnProperty'](_0x43e7('0x44'))){_0x5d84f4['limit']=qs[_0x43e7('0x2a')](_0x4f1a5f[_0x43e7('0x3e')][_0x43e7('0x2a')]);_0x5d84f4[_0x43e7('0x29')]=qs['offset'](_0x4f1a5f['query'][_0x43e7('0x29')]);}_0x5d84f4[_0x43e7('0x45')]=qs[_0x43e7('0x46')](_0x4f1a5f[_0x43e7('0x3e')]['sort']);_0x5d84f4['where']=qs['filters'](_[_0x43e7('0x47')](_0x4f1a5f['query'],_0xfa0474[_0x43e7('0x3f')]),_0x199ff6);if(_0x4f1a5f['query']['filter']){_0x5d84f4[_0x43e7('0x48')]=_['merge'](_0x5d84f4[_0x43e7('0x48')],{'$or':_[_0x43e7('0x37')](_0x199ff6,function(_0x257bd8){if(_0x257bd8[_0x43e7('0x49')]!=='VIRTUAL'){var _0x91f1e4={};_0x91f1e4[_0x257bd8[_0x43e7('0x34')]]={'$like':'%'+_0x4f1a5f[_0x43e7('0x3e')][_0x43e7('0x4a')]+'%'};return _0x91f1e4;}})});}_0x5d84f4=_[_0x43e7('0x4b')]({},_0x5d84f4,_0x4f1a5f[_0x43e7('0x4c')]);var _0x51eef4={'where':_0x5d84f4['where']};return db[_0x43e7('0x38')][_0x43e7('0x28')](_0x51eef4)[_0x43e7('0x19')](function(_0x4c00a8){_0xfe70e9['count']=_0x4c00a8;if(_0x4f1a5f['query'][_0x43e7('0x4d')]){_0x5d84f4[_0x43e7('0x4e')]=[{'all':!![]}];}return db['Trunk'][_0x43e7('0x4f')](_0x5d84f4);})[_0x43e7('0x19')](function(_0x3c96fe){_0xfe70e9['rows']=_0x3c96fe;return _0xfe70e9;})['then'](respondWithFilteredResult(_0x5332d9,_0x5d84f4))['catch'](handleError(_0x5332d9,null));};exports['show']=function(_0x214e7e,_0xe955fc){var _0x52fea5={'raw':![],'where':{'id':_0x214e7e[_0x43e7('0x50')]['id']}},_0x23e7cb={};_0x23e7cb[_0x43e7('0x3c')]=_[_0x43e7('0x3d')](db['Trunk'][_0x43e7('0x39')]);_0x23e7cb['query']=_['keys'](_0x214e7e[_0x43e7('0x3e')]);_0x23e7cb[_0x43e7('0x3f')]=_[_0x43e7('0x40')](_0x23e7cb[_0x43e7('0x3c')],_0x23e7cb[_0x43e7('0x3e')]);_0x52fea5[_0x43e7('0x42')]=_[_0x43e7('0x40')](_0x23e7cb[_0x43e7('0x3c')],qs[_0x43e7('0x41')](_0x214e7e[_0x43e7('0x3e')]['fields']));_0x52fea5[_0x43e7('0x42')]=_0x52fea5[_0x43e7('0x42')]['length']?_0x52fea5[_0x43e7('0x42')]:_0x23e7cb['model'];if(_0x214e7e[_0x43e7('0x3e')][_0x43e7('0x4d')]){_0x52fea5[_0x43e7('0x4e')]=[{'all':!![]}];}_0x52fea5=_[_0x43e7('0x4b')]({},_0x52fea5,_0x214e7e[_0x43e7('0x4c')]);return db['Trunk']['find'](_0x52fea5)[_0x43e7('0x19')](handleEntityNotFound(_0xe955fc,null))[_0x43e7('0x19')](respondWithResult(_0xe955fc,null))[_0x43e7('0x23')](handleError(_0xe955fc,null));};exports[_0x43e7('0x51')]=function(_0x23d835,_0x25bb44){var _0xa47464={'where':{'id':_0x23d835[_0x43e7('0x50')]['id']}},_0x44f8a0={};_0x44f8a0[_0x43e7('0x3c')]=_[_0x43e7('0x3d')](db['Trunk'][_0x43e7('0x39')]);_0xa47464[_0x43e7('0x42')]=_['intersection'](_0x44f8a0[_0x43e7('0x3c')],qs[_0x43e7('0x41')](_0x23d835[_0x43e7('0x3e')]['fields']));_0xa47464['attributes']=_0xa47464[_0x43e7('0x42')][_0x43e7('0x43')]?_0xa47464['attributes']:_0x44f8a0[_0x43e7('0x3c')];if(_0x23d835['query']['includeAll']){_0xa47464[_0x43e7('0x4e')]=[{'all':!![]}];}_0xa47464=_[_0x43e7('0x4b')]({},_0xa47464,_0x23d835[_0x43e7('0x4c')]);return db[_0x43e7('0x38')][_0x43e7('0x52')](_0xa47464)['then'](handleEntityNotFound(_0x25bb44,null))[_0x43e7('0x19')](function(_0xdb9fbe){if(_0xdb9fbe){var _0x4d89bd=_0xdb9fbe[_0x43e7('0x53')]({'plain':!![]});_0x4d89bd=qs[_0x43e7('0x54')](_0x4d89bd,['id',_0x43e7('0x55'),'updatedAt']);_0x23d835['body']=_['omit'](_0x23d835[_0x43e7('0x56')],['id',_0x43e7('0x55'),_0x43e7('0x57')]);return db[_0x43e7('0x38')]['create'](_['merge'](_0x4d89bd,_0x23d835[_0x43e7('0x56')]),{'include':_0x23d835[_0x43e7('0x3e')][_0x43e7('0x4d')]?[{'all':!![]}]:undefined})[_0x43e7('0x19')](function(_0x5ea0db){var _0x4438c0=_0x23d835[_0x43e7('0x58')][_0x43e7('0x53')]({'plain':!![]});if(!_0x4438c0)throw new Error(_0x43e7('0x59'));if(_0x4438c0[_0x43e7('0x5a')]===_0x43e7('0x58')){var _0x4665db=_0x5ea0db[_0x43e7('0x53')]({'plain':!![]});var _0x406155=_0x43e7('0x31');return db[_0x43e7('0x5b')]['find']({'where':{'name':_0x406155,'userProfileId':_0x4438c0['userProfileId']},'raw':!![]})[_0x43e7('0x19')](function(_0x58a3a8){if(_0x58a3a8&&_0x58a3a8['autoAssociation']===0x0){return db['UserProfileResource'][_0x43e7('0x5c')]({'name':_0x4665db[_0x43e7('0x34')],'resourceId':_0x4665db['id'],'type':_0x58a3a8['name'],'sectionId':_0x58a3a8['id']},{})[_0x43e7('0x19')](function(){return _0x5ea0db;});}else{return _0x5ea0db;}})[_0x43e7('0x23')](function(_0x1d8438){logger['error'](_0x43e7('0x5d'),_0x1d8438);throw _0x1d8438;});}return _0x5ea0db;});}})[_0x43e7('0x19')](respondWithResult(_0x25bb44,0xc9))[_0x43e7('0x23')](handleError(_0x25bb44,null));};exports[_0x43e7('0x5c')]=function(_0x2f43d7,_0x472a19,_0x1e02fa){var _0x515f01;return db[_0x43e7('0x38')][_0x43e7('0x5c')](_0x2f43d7[_0x43e7('0x56')],{'raw':!![]})['then'](function(_0x56b06d){_0x515f01=_0x56b06d;return db[_0x43e7('0x38')]['findAll']({'raw':!![]});})['then'](function(_0x1b793d){var _0x154e47=fs['readFileSync'](path[_0x43e7('0x5e')](config[_0x43e7('0x5f')],_0x43e7('0x60')),_0x43e7('0x61'));var _0x16499c=fs[_0x43e7('0x62')](path[_0x43e7('0x5e')](config['root'],_0x43e7('0x63')),_0x43e7('0x61'));var _0x4e5956=ejs[_0x43e7('0x64')](_0x154e47,{'trunks':_0x1b793d||[]});fs['writeFileSync'](_0x43e7('0x65'),_0x4e5956);if(_0x515f01[_0x43e7('0x66')]){var _0x37301b=ejs[_0x43e7('0x64')](_0x16499c,{'trunks':_0x1b793d||[]});fs['writeFileSync'](_0x43e7('0x67'),_0x37301b);}})[_0x43e7('0x19')](function(){return respondWithRpcPromise(_0x43e7('0x68'),'create',{'module':_0x43e7('0x69')});})[_0x43e7('0x19')](function(){var _0x219dc6=_0x2f43d7[_0x43e7('0x58')][_0x43e7('0x53')]({'plain':!![]});if(!_0x219dc6)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0x219dc6[_0x43e7('0x5a')]===_0x43e7('0x58')){var _0x35d133=_0x515f01[_0x43e7('0x53')]({'plain':!![]});return db[_0x43e7('0x5b')][_0x43e7('0x52')]({'where':{'name':_0x43e7('0x31'),'userProfileId':_0x219dc6['userProfileId']},'raw':!![]})['then'](function(_0x405faa){if(_0x405faa&&_0x405faa['autoAssociation']===0x0){return db['UserProfileResource']['create']({'name':_0x35d133[_0x43e7('0x34')],'resourceId':_0x35d133['id'],'type':_0x405faa[_0x43e7('0x34')],'sectionId':_0x405faa['id']},{})[_0x43e7('0x19')](function(){return _0x515f01;});}else{return _0x515f01;}})[_0x43e7('0x23')](function(_0x18713b){logger[_0x43e7('0x1e')]('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0x18713b);throw _0x18713b;});}return _0x515f01;})[_0x43e7('0x19')](respondWithResult(_0x472a19,0xc9))[_0x43e7('0x23')](handleError(_0x472a19,null));};exports[_0x43e7('0x2f')]=function(_0x5b4c76,_0x2abca0,_0xea84ec){var _0x184ae3;return db[_0x43e7('0x38')][_0x43e7('0x52')]({'where':{'id':_0x5b4c76[_0x43e7('0x50')]['id']}})[_0x43e7('0x19')](handleEntityNotFound(_0x2abca0,null))[_0x43e7('0x19')](saveUpdates(_0x5b4c76['body'],null))['then'](function(_0x55990c){if(_0x55990c){_0x184ae3=_0x55990c;return db[_0x43e7('0x38')][_0x43e7('0x4f')]({'raw':!![]});}})['then'](function(_0x3fe23f){if(_0x3fe23f){var _0x39a787=fs[_0x43e7('0x62')](path[_0x43e7('0x5e')](config['root'],'server/files/templates/trunk.ejs'),'utf8');var _0x177a7a=fs[_0x43e7('0x62')](path['join'](config['root'],_0x43e7('0x63')),_0x43e7('0x61'));var _0x3b7e5b=ejs['render'](_0x39a787,{'trunks':_0x3fe23f||[]});fs[_0x43e7('0x6a')](_0x43e7('0x65'),_0x3b7e5b);var _0x401654=ejs[_0x43e7('0x64')](_0x177a7a,{'trunks':_0x3fe23f||[]});fs['writeFileSync'](_0x43e7('0x67'),_0x401654);return respondWithRpcPromise('Reload',_0x43e7('0x2f'),{'module':_0x43e7('0x69')});}return null;})[_0x43e7('0x19')](function(_0x90667c){if(_0x90667c){return _0x184ae3;}})[_0x43e7('0x19')](respondWithResult(_0x2abca0,null))[_0x43e7('0x23')](handleError(_0x2abca0,null));};exports[_0x43e7('0x30')]=function(_0x5e8d4e,_0x109c86,_0x40257e){var _0x1aea4e;return db[_0x43e7('0x38')]['find']({'where':{'id':_0x5e8d4e['params']['id']}})['then'](handleEntityNotFound(_0x109c86,null))[_0x43e7('0x19')](removeEntity(_0x109c86,null))['then'](function(){return db[_0x43e7('0x38')][_0x43e7('0x4f')]({'raw':!![]});})[_0x43e7('0x19')](function(_0x7387f6){var _0xa75254=fs[_0x43e7('0x62')](path[_0x43e7('0x5e')](config[_0x43e7('0x5f')],_0x43e7('0x60')),_0x43e7('0x61'));var _0x3de22e=fs['readFileSync'](path[_0x43e7('0x5e')](config[_0x43e7('0x5f')],_0x43e7('0x63')),_0x43e7('0x61'));var _0x206e54=ejs['render'](_0xa75254,{'trunks':_0x7387f6});var _0x5e04ec=ejs[_0x43e7('0x64')](_0x3de22e,{'trunks':_0x7387f6});fs[_0x43e7('0x6a')]('/etc/asterisk/sip_xcally_trunks.conf',_0x206e54);fs[_0x43e7('0x6a')](_0x43e7('0x67'),_0x5e04ec);return respondWithRpcPromise('Reload','destroy',{'module':_0x43e7('0x69')});})[_0x43e7('0x23')](handleError(_0x109c86,null));};
\ No newline at end of file
+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(_0x35ded5,_0x4cd999){var _0x1bd1ee=function(_0xae2c9c){while(--_0xae2c9c){_0x35ded5['push'](_0x35ded5['shift']());}};_0x1bd1ee(++_0x4cd999);}(_0xa41a,0x6b));var _0xaa41=function(_0x364fc2,_0x5bf312){_0x364fc2=_0x364fc2-0x0;var _0x2b1f34=_0xa41a[_0x364fc2];return _0x2b1f34;};'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
index 935fe4c..292ff56 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb570=['tools_trunks','lodash','util','../../config/logger','api','bluebird','path','../../config/environment','./trunk.attributes','exports','define','Trunk'];(function(_0x39eb64,_0x3888e6){var _0x30f621=function(_0x5285a0){while(--_0x5285a0){_0x39eb64['push'](_0x39eb64['shift']());}};_0x30f621(++_0x3888e6);}(_0xb570,0xd9));var _0x0b57=function(_0xcfa694,_0x83ef13){_0xcfa694=_0xcfa694-0x0;var _0x4a89cc=_0xb570[_0xcfa694];return _0x4a89cc;};'use strict';var _=require(_0x0b57('0x0'));var util=require(_0x0b57('0x1'));var logger=require(_0x0b57('0x2'))(_0x0b57('0x3'));var moment=require('moment');var BPromise=require(_0x0b57('0x4'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x0b57('0x5'));var rimraf=require('rimraf');var config=require(_0x0b57('0x6'));var attributes=require(_0x0b57('0x7'));module[_0x0b57('0x8')]=function(_0x1c6ed7,_0x25fd08){return _0x1c6ed7[_0x0b57('0x9')](_0x0b57('0xa'),attributes,{'tableName':_0x0b57('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x5637=['moment','bluebird','request-promise','path','rimraf','../../config/environment','./trunk.attributes','define','Trunk','tools_trunks','util','../../config/logger'];(function(_0x122ef9,_0x451d2a){var _0x42fba0=function(_0x17c9d3){while(--_0x17c9d3){_0x122ef9['push'](_0x122ef9['shift']());}};_0x42fba0(++_0x451d2a);}(_0x5637,0x1ae));var _0x7563=function(_0x478b36,_0x359410){_0x478b36=_0x478b36-0x0;var _0x19f2a0=_0x5637[_0x478b36];return _0x19f2a0;};'use strict';var _=require('lodash');var util=require(_0x7563('0x0'));var logger=require(_0x7563('0x1'))('api');var moment=require(_0x7563('0x2'));var BPromise=require(_0x7563('0x3'));var rp=require(_0x7563('0x4'));var fs=require('fs');var path=require(_0x7563('0x5'));var rimraf=require(_0x7563('0x6'));var config=require(_0x7563('0x7'));var attributes=require(_0x7563('0x8'));module['exports']=function(_0x3cc628,_0x11be5d){return _0x3cc628[_0x7563('0x9')](_0x7563('0xa'),attributes,{'tableName':_0x7563('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 8556419..f725547 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0d32=['Trunk','findAll','options','where','attributes','limit','include','map','model','find','raw','ShowTrunk','util','moment','randomstring','ioredis','../../config/utils','../../config/logger','rpc','jayson/promise','client','http','request','then','info','request\x20sent','debug','Trunk,\x20%s,\x20%s,\x20%s','stringify','code','Trunk,\x20%s,\x20%s','error','message','catch','GetTrunk'];(function(_0x428173,_0x4dd09a){var _0x2694d2=function(_0x359fc2){while(--_0x359fc2){_0x428173['push'](_0x428173['shift']());}};_0x2694d2(++_0x4dd09a);}(_0x0d32,0x18d));var _0x20d3=function(_0x370fdb,_0x2afc29){_0x370fdb=_0x370fdb-0x0;var _0x5b9e16=_0x0d32[_0x370fdb];return _0x5b9e16;};'use strict';var _=require('lodash');var util=require(_0x20d3('0x0'));var moment=require(_0x20d3('0x1'));var BPromise=require('bluebird');var rs=require(_0x20d3('0x2'));var fs=require('fs');var Redis=require(_0x20d3('0x3'));var db=require('../../mysqldb')['db'];var utils=require(_0x20d3('0x4'));var logger=require(_0x20d3('0x5'))(_0x20d3('0x6'));var config=require('../../config/environment');var jayson=require(_0x20d3('0x7'));var client=jayson[_0x20d3('0x8')][_0x20d3('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x147b09,_0x5c24d5,_0x4cbc55){return new BPromise(function(_0x16d1a7,_0xc2cc57){return client[_0x20d3('0xa')](_0x147b09,_0x4cbc55)[_0x20d3('0xb')](function(_0x361dc9){logger[_0x20d3('0xc')]('Trunk,\x20%s,\x20%s',_0x5c24d5,_0x20d3('0xd'));logger[_0x20d3('0xe')](_0x20d3('0xf'),_0x5c24d5,_0x20d3('0xd'),JSON[_0x20d3('0x10')](_0x361dc9));if(_0x361dc9['error']){if(_0x361dc9['error'][_0x20d3('0x11')]===0x1f4){logger['error'](_0x20d3('0x12'),_0x5c24d5,_0x361dc9[_0x20d3('0x13')][_0x20d3('0x14')]);return _0xc2cc57(_0x361dc9[_0x20d3('0x13')]['message']);}logger[_0x20d3('0x13')](_0x20d3('0x12'),_0x5c24d5,_0x361dc9[_0x20d3('0x13')][_0x20d3('0x14')]);return _0x16d1a7(_0x361dc9[_0x20d3('0x13')][_0x20d3('0x14')]);}else{logger[_0x20d3('0xc')](_0x20d3('0x12'),_0x5c24d5,_0x20d3('0xd'));_0x16d1a7(_0x361dc9['result']['message']);}})[_0x20d3('0x15')](function(_0x3239f7){logger[_0x20d3('0x13')]('Trunk,\x20%s,\x20%s',_0x5c24d5,_0x3239f7);_0xc2cc57(_0x3239f7);});});}exports[_0x20d3('0x16')]=function(_0x1ce23d){var _0x4b2b5a=this;return new Promise(function(_0x4de0bc,_0x343dd4){return db[_0x20d3('0x17')][_0x20d3('0x18')]({'raw':_0x1ce23d[_0x20d3('0x19')]?_0x1ce23d['options']['raw']===undefined?!![]:![]:!![],'where':_0x1ce23d['options']?_0x1ce23d['options'][_0x20d3('0x1a')]||null:null,'attributes':_0x1ce23d['options']?_0x1ce23d[_0x20d3('0x19')][_0x20d3('0x1b')]||null:null,'limit':_0x1ce23d[_0x20d3('0x19')]?_0x1ce23d['options'][_0x20d3('0x1c')]||null:null,'include':_0x1ce23d[_0x20d3('0x19')]?_0x1ce23d['options'][_0x20d3('0x1d')]?_[_0x20d3('0x1e')](_0x1ce23d['options']['include'],function(_0x3e9fdc){return{'model':db[_0x3e9fdc[_0x20d3('0x1f')]],'as':_0x3e9fdc['as'],'attributes':_0x3e9fdc[_0x20d3('0x1b')],'include':_0x3e9fdc[_0x20d3('0x1d')]?_[_0x20d3('0x1e')](_0x3e9fdc[_0x20d3('0x1d')],function(_0x321c69){return{'model':db[_0x321c69['model']],'as':_0x321c69['as'],'attributes':_0x321c69[_0x20d3('0x1b')],'include':_0x321c69[_0x20d3('0x1d')]?_['map'](_0x321c69['include'],function(_0x171d6a){return{'model':db[_0x171d6a[_0x20d3('0x1f')]],'as':_0x171d6a['as'],'attributes':_0x171d6a[_0x20d3('0x1b')]};}):[]};}):[]};}):[]:[]})['then'](function(_0x422caf){logger['info'](_0x20d3('0x16'),_0x1ce23d);logger[_0x20d3('0xe')](_0x20d3('0x16'),_0x1ce23d,JSON[_0x20d3('0x10')](_0x422caf));_0x4de0bc(_0x422caf);})[_0x20d3('0x15')](function(_0x5928ac){logger['error'](_0x20d3('0x16'),_0x5928ac['message'],_0x1ce23d);_0x343dd4(_0x4b2b5a[_0x20d3('0x13')](0x1f4,_0x5928ac[_0x20d3('0x14')]));});});};exports['ShowTrunk']=function(_0x5f2307){var _0x20d5ca=this;return new Promise(function(_0x32ccff,_0x6a4519){return db[_0x20d3('0x17')][_0x20d3('0x20')]({'raw':_0x5f2307[_0x20d3('0x19')]?_0x5f2307[_0x20d3('0x19')][_0x20d3('0x21')]===undefined?!![]:![]:!![],'where':_0x5f2307[_0x20d3('0x19')]?_0x5f2307[_0x20d3('0x19')][_0x20d3('0x1a')]||null:null,'attributes':_0x5f2307[_0x20d3('0x19')]?_0x5f2307[_0x20d3('0x19')][_0x20d3('0x1b')]||null:null,'include':_0x5f2307['options']?_0x5f2307['options'][_0x20d3('0x1d')]?_[_0x20d3('0x1e')](_0x5f2307[_0x20d3('0x19')][_0x20d3('0x1d')],function(_0x33af30){return{'model':db[_0x33af30[_0x20d3('0x1f')]],'as':_0x33af30['as'],'attributes':_0x33af30[_0x20d3('0x1b')],'include':_0x33af30['include']?_[_0x20d3('0x1e')](_0x33af30['include'],function(_0x24027d){return{'model':db[_0x24027d['model']],'as':_0x24027d['as'],'attributes':_0x24027d[_0x20d3('0x1b')],'include':_0x24027d[_0x20d3('0x1d')]?_['map'](_0x24027d['include'],function(_0x3a260b){return{'model':db[_0x3a260b[_0x20d3('0x1f')]],'as':_0x3a260b['as'],'attributes':_0x3a260b[_0x20d3('0x1b')]};}):[]};}):[]};}):[]:[]})[_0x20d3('0xb')](function(_0x531f1c){logger[_0x20d3('0xc')](_0x20d3('0x22'),_0x5f2307);logger[_0x20d3('0xe')]('ShowTrunk',_0x5f2307,JSON['stringify'](_0x531f1c));_0x32ccff(_0x531f1c);})[_0x20d3('0x15')](function(_0x342162){logger[_0x20d3('0x13')](_0x20d3('0x22'),_0x342162[_0x20d3('0x14')],_0x5f2307);_0x6a4519(_0x20d5ca[_0x20d3('0x13')](0x1f4,_0x342162['message']));});});};
\ No newline at end of file
+var _0xfb6f=['find','raw','ShowTrunk','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','http','request','then','info','Trunk,\x20%s,\x20%s','request\x20sent','debug','Trunk,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','GetTrunk','findAll','options','where','attributes','limit','include','map','model','catch','Trunk'];(function(_0x30a831,_0x3db3dc){var _0x4f4171=function(_0x439e0e){while(--_0x439e0e){_0x30a831['push'](_0x30a831['shift']());}};_0x4f4171(++_0x3db3dc);}(_0xfb6f,0x189));var _0xffb6=function(_0x299e88,_0x303998){_0x299e88=_0x299e88-0x0;var _0x184dd4=_0xfb6f[_0x299e88];return _0x184dd4;};'use strict';var _=require(_0xffb6('0x0'));var util=require(_0xffb6('0x1'));var moment=require(_0xffb6('0x2'));var BPromise=require(_0xffb6('0x3'));var rs=require(_0xffb6('0x4'));var fs=require('fs');var Redis=require(_0xffb6('0x5'));var db=require(_0xffb6('0x6'))['db'];var utils=require(_0xffb6('0x7'));var logger=require(_0xffb6('0x8'))(_0xffb6('0x9'));var config=require(_0xffb6('0xa'));var jayson=require(_0xffb6('0xb'));var client=jayson['client'][_0xffb6('0xc')]({'port':0x232a});function respondWithRpcPromise(_0x2d46ea,_0x49d82d,_0x22f135){return new BPromise(function(_0x6bb371,_0x4d0cc2){return client[_0xffb6('0xd')](_0x2d46ea,_0x22f135)[_0xffb6('0xe')](function(_0xe3f73e){logger[_0xffb6('0xf')](_0xffb6('0x10'),_0x49d82d,_0xffb6('0x11'));logger[_0xffb6('0x12')](_0xffb6('0x13'),_0x49d82d,_0xffb6('0x11'),JSON[_0xffb6('0x14')](_0xe3f73e));if(_0xe3f73e[_0xffb6('0x15')]){if(_0xe3f73e[_0xffb6('0x15')][_0xffb6('0x16')]===0x1f4){logger[_0xffb6('0x15')]('Trunk,\x20%s,\x20%s',_0x49d82d,_0xe3f73e[_0xffb6('0x15')][_0xffb6('0x17')]);return _0x4d0cc2(_0xe3f73e[_0xffb6('0x15')][_0xffb6('0x17')]);}logger['error']('Trunk,\x20%s,\x20%s',_0x49d82d,_0xe3f73e[_0xffb6('0x15')][_0xffb6('0x17')]);return _0x6bb371(_0xe3f73e['error'][_0xffb6('0x17')]);}else{logger[_0xffb6('0xf')](_0xffb6('0x10'),_0x49d82d,_0xffb6('0x11'));_0x6bb371(_0xe3f73e[_0xffb6('0x18')][_0xffb6('0x17')]);}})['catch'](function(_0x22f95c){logger[_0xffb6('0x15')](_0xffb6('0x10'),_0x49d82d,_0x22f95c);_0x4d0cc2(_0x22f95c);});});}exports[_0xffb6('0x19')]=function(_0x1bc1c1){var _0x4e7ab2=this;return new Promise(function(_0x5e1f4e,_0x54e43f){return db['Trunk'][_0xffb6('0x1a')]({'raw':_0x1bc1c1[_0xffb6('0x1b')]?_0x1bc1c1['options']['raw']===undefined?!![]:![]:!![],'where':_0x1bc1c1[_0xffb6('0x1b')]?_0x1bc1c1[_0xffb6('0x1b')][_0xffb6('0x1c')]||null:null,'attributes':_0x1bc1c1['options']?_0x1bc1c1[_0xffb6('0x1b')][_0xffb6('0x1d')]||null:null,'limit':_0x1bc1c1[_0xffb6('0x1b')]?_0x1bc1c1[_0xffb6('0x1b')][_0xffb6('0x1e')]||null:null,'include':_0x1bc1c1[_0xffb6('0x1b')]?_0x1bc1c1[_0xffb6('0x1b')][_0xffb6('0x1f')]?_[_0xffb6('0x20')](_0x1bc1c1['options']['include'],function(_0x58adbe){return{'model':db[_0x58adbe[_0xffb6('0x21')]],'as':_0x58adbe['as'],'attributes':_0x58adbe[_0xffb6('0x1d')],'include':_0x58adbe[_0xffb6('0x1f')]?_['map'](_0x58adbe['include'],function(_0x3f11d3){return{'model':db[_0x3f11d3[_0xffb6('0x21')]],'as':_0x3f11d3['as'],'attributes':_0x3f11d3['attributes'],'include':_0x3f11d3[_0xffb6('0x1f')]?_[_0xffb6('0x20')](_0x3f11d3[_0xffb6('0x1f')],function(_0x2b05b0){return{'model':db[_0x2b05b0['model']],'as':_0x2b05b0['as'],'attributes':_0x2b05b0[_0xffb6('0x1d')]};}):[]};}):[]};}):[]:[]})[_0xffb6('0xe')](function(_0x13d2ea){logger['info'](_0xffb6('0x19'),_0x1bc1c1);logger[_0xffb6('0x12')]('GetTrunk',_0x1bc1c1,JSON['stringify'](_0x13d2ea));_0x5e1f4e(_0x13d2ea);})[_0xffb6('0x22')](function(_0x2e7f68){logger['error'](_0xffb6('0x19'),_0x2e7f68['message'],_0x1bc1c1);_0x54e43f(_0x4e7ab2[_0xffb6('0x15')](0x1f4,_0x2e7f68[_0xffb6('0x17')]));});});};exports['ShowTrunk']=function(_0x38b57b){var _0x143782=this;return new Promise(function(_0xa5dbe8,_0x5271d9){return db[_0xffb6('0x23')][_0xffb6('0x24')]({'raw':_0x38b57b[_0xffb6('0x1b')]?_0x38b57b[_0xffb6('0x1b')][_0xffb6('0x25')]===undefined?!![]:![]:!![],'where':_0x38b57b[_0xffb6('0x1b')]?_0x38b57b[_0xffb6('0x1b')][_0xffb6('0x1c')]||null:null,'attributes':_0x38b57b[_0xffb6('0x1b')]?_0x38b57b['options'][_0xffb6('0x1d')]||null:null,'include':_0x38b57b[_0xffb6('0x1b')]?_0x38b57b[_0xffb6('0x1b')][_0xffb6('0x1f')]?_['map'](_0x38b57b['options']['include'],function(_0x1a9f09){return{'model':db[_0x1a9f09[_0xffb6('0x21')]],'as':_0x1a9f09['as'],'attributes':_0x1a9f09[_0xffb6('0x1d')],'include':_0x1a9f09[_0xffb6('0x1f')]?_[_0xffb6('0x20')](_0x1a9f09['include'],function(_0xcde86a){return{'model':db[_0xcde86a[_0xffb6('0x21')]],'as':_0xcde86a['as'],'attributes':_0xcde86a[_0xffb6('0x1d')],'include':_0xcde86a['include']?_[_0xffb6('0x20')](_0xcde86a[_0xffb6('0x1f')],function(_0x2add63){return{'model':db[_0x2add63[_0xffb6('0x21')]],'as':_0x2add63['as'],'attributes':_0x2add63[_0xffb6('0x1d')]};}):[]};}):[]};}):[]:[]})[_0xffb6('0xe')](function(_0x1b644d){logger[_0xffb6('0xf')]('ShowTrunk',_0x38b57b);logger[_0xffb6('0x12')](_0xffb6('0x26'),_0x38b57b,JSON[_0xffb6('0x14')](_0x1b644d));_0xa5dbe8(_0x1b644d);})[_0xffb6('0x22')](function(_0x4d8f58){logger[_0xffb6('0x15')](_0xffb6('0x26'),_0x4d8f58[_0xffb6('0x17')],_0x38b57b);_0x5271d9(_0x143782[_0xffb6('0x15')](0x1f4,_0x4d8f58[_0xffb6('0x17')]));});});};
\ No newline at end of file
index 1396a25..3f8aa2a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6b5b=['/:id/fax_accounts','getFaxAccounts','/:id/mail_accounts','/:id/openchannel_accounts','getOpenchannelAccounts','/:id/sms_accounts','getSmsAccounts','/:id/chat_websites','getChatWebsites','/:id/whatsapp_accounts','getWhatsappAccounts','getSquareProjects','/:id/scheduled_calls','/:id/api_key','getApiKey','post','create','/create_many','bulkCreate','addQueues','diskStorage','join','server/files/images/','now','file','addAvatar','/:id/login','logout','/:id/pause','/:id/unpause','unpause','/:id/teams','addChatInteractions','/:id/fax_interactions','addFaxInteractions','/:id/sms_interactions','/:id/openchannel_interactions','addOpenchannelInteractions','/:id/whatsapp_interactions','addWhatsappInteractions','addFaxAccounts','addOpenchannelAccounts','addSmsAccounts','addChatWebsites','addWhatsappAccounts','addSquareProjects','createApiKey','update','put','/:id/password','changePassword','delete','removeQueues','removeTeams','destroy','/:id/chat_interactions','removeChatInteractions','/:id/mail_interactions','removeMailInteractions','removeSmsInteractions','removeWhatsappInteractions','removeFaxAccounts','removeMailAccounts','removeOpenchannelAccounts','removeChatWebsites','removeWhatsappAccounts','/:id/square_projects','removeSquareProjects','removeApiKey','exports','multer','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','index','get','/describe','isAuthenticated','describe','whoami','/presence','getPresence','/:id','show','/:id/avatar','getAvatar','/:id/open_tabs','getOpenTabs','/:id/contacts','getContacts','/:id/queues','getQueues','/:id/queues_rt','getVoiceQueuesRt','/:id/groups','/:id/recordings','getRecordings','/:id/screen_recordings','getScreenRecordings','getChatInteractions','getOpenchannelInteractions','/:id/mail/interactions','getMailInteractions','/:id/sms/interactions','getSmsInteractions','/:id/fax/interactions','getFaxInteractions','/:id/whatsapp/interactions','/:id/agents','getAgents','getVoicePrefixes'];(function(_0x1c1780,_0x93cb2){var _0x5eb4ae=function(_0x11a831){while(--_0x11a831){_0x1c1780['push'](_0x1c1780['shift']());}};_0x5eb4ae(++_0x93cb2);}(_0x6b5b,0x130));var _0xb6b5=function(_0x492d4a,_0x5cd9f4){_0x492d4a=_0x492d4a-0x0;var _0x6b5831=_0x6b5b[_0x492d4a];return _0x6b5831;};'use strict';var multer=require(_0xb6b5('0x0'));var util=require(_0xb6b5('0x1'));var path=require(_0xb6b5('0x2'));var timeout=require(_0xb6b5('0x3'));var express=require(_0xb6b5('0x4'));var router=express[_0xb6b5('0x5')]();var fs_extra=require(_0xb6b5('0x6'));var auth=require(_0xb6b5('0x7'));var interaction=require(_0xb6b5('0x8'));var config=require(_0xb6b5('0x9'));var controller=require('./user.controller');router['get']('/',auth['isAuthenticated'](),controller[_0xb6b5('0xa')]);router[_0xb6b5('0xb')](_0xb6b5('0xc'),auth[_0xb6b5('0xd')](),controller[_0xb6b5('0xe')]);router[_0xb6b5('0xb')]('/whoami',auth[_0xb6b5('0xd')](),controller[_0xb6b5('0xf')]);router['get'](_0xb6b5('0x10'),auth['isAuthenticated'](),controller[_0xb6b5('0x11')]);router['get'](_0xb6b5('0x12'),auth['isAuthenticated'](),controller[_0xb6b5('0x13')]);router[_0xb6b5('0xb')](_0xb6b5('0x14'),controller[_0xb6b5('0x15')]);router[_0xb6b5('0xb')](_0xb6b5('0x16'),auth['isAuthenticated'](),controller[_0xb6b5('0x17')]);router[_0xb6b5('0xb')](_0xb6b5('0x18'),auth[_0xb6b5('0xd')](),controller[_0xb6b5('0x19')]);router['get'](_0xb6b5('0x1a'),auth['isAuthenticated'](),controller[_0xb6b5('0x1b')]);router[_0xb6b5('0xb')](_0xb6b5('0x1c'),auth[_0xb6b5('0xd')](),controller[_0xb6b5('0x1d')]);router['get'](_0xb6b5('0x1e'),auth[_0xb6b5('0xd')](),controller['getGroups']);router[_0xb6b5('0xb')](_0xb6b5('0x1f'),auth[_0xb6b5('0xd')](),controller[_0xb6b5('0x20')]);router['get'](_0xb6b5('0x21'),auth[_0xb6b5('0xd')](),controller[_0xb6b5('0x22')]);router[_0xb6b5('0xb')]('/:id/chat/interactions',auth[_0xb6b5('0xd')](),controller[_0xb6b5('0x23')]);router[_0xb6b5('0xb')]('/:id/openchannel/interactions',auth[_0xb6b5('0xd')](),controller[_0xb6b5('0x24')]);router[_0xb6b5('0xb')](_0xb6b5('0x25'),auth[_0xb6b5('0xd')](),controller[_0xb6b5('0x26')]);router['get'](_0xb6b5('0x27'),auth[_0xb6b5('0xd')](),controller[_0xb6b5('0x28')]);router[_0xb6b5('0xb')](_0xb6b5('0x29'),auth[_0xb6b5('0xd')](),controller[_0xb6b5('0x2a')]);router['get'](_0xb6b5('0x2b'),auth[_0xb6b5('0xd')](),controller['getWhatsappInteractions']);router[_0xb6b5('0xb')]('/:id/teams',auth[_0xb6b5('0xd')](),controller['getTeams']);router[_0xb6b5('0xb')]('/:id/lists',auth[_0xb6b5('0xd')](),controller['getLists']);router[_0xb6b5('0xb')](_0xb6b5('0x2c'),auth[_0xb6b5('0xd')](),controller[_0xb6b5('0x2d')]);router['get']('/:id/prefixes',auth[_0xb6b5('0xd')](),controller[_0xb6b5('0x2e')]);router[_0xb6b5('0xb')](_0xb6b5('0x2f'),auth[_0xb6b5('0xd')](),controller[_0xb6b5('0x30')]);router[_0xb6b5('0xb')](_0xb6b5('0x31'),auth[_0xb6b5('0xd')](),controller['getMailAccounts']);router['get'](_0xb6b5('0x32'),auth[_0xb6b5('0xd')](),controller[_0xb6b5('0x33')]);router['get'](_0xb6b5('0x34'),auth[_0xb6b5('0xd')](),controller[_0xb6b5('0x35')]);router[_0xb6b5('0xb')](_0xb6b5('0x36'),auth[_0xb6b5('0xd')](),controller[_0xb6b5('0x37')]);router[_0xb6b5('0xb')](_0xb6b5('0x38'),auth['isAuthenticated'](),controller[_0xb6b5('0x39')]);router[_0xb6b5('0xb')]('/:id/square_projects',auth['isAuthenticated'](),controller[_0xb6b5('0x3a')]);router[_0xb6b5('0xb')](_0xb6b5('0x3b'),auth[_0xb6b5('0xd')](),controller['getScheduledCalls']);router[_0xb6b5('0xb')](_0xb6b5('0x3c'),auth[_0xb6b5('0xd')](),controller[_0xb6b5('0x3d')]);router[_0xb6b5('0x3e')](_0xb6b5('0x18'),auth[_0xb6b5('0xd')](),controller['addContacts']);router[_0xb6b5('0x3e')]('/',auth[_0xb6b5('0xd')](),controller[_0xb6b5('0x3f')]);router[_0xb6b5('0x3e')](_0xb6b5('0x40'),auth['isAuthenticated'](),controller[_0xb6b5('0x41')]);router[_0xb6b5('0x3e')](_0xb6b5('0x1a'),auth[_0xb6b5('0xd')](),controller[_0xb6b5('0x42')]);var upload=multer({'storage':multer[_0xb6b5('0x43')]({'destination':function(_0x43091c,_0x50f698,_0x20636f){_0x20636f(null,path[_0xb6b5('0x44')](config['root'],_0xb6b5('0x45')));},'filename':function(_0x575a2e,_0x36fd70,_0x184443){_0x184443(null,util['format']('%s-%s',Date[_0xb6b5('0x46')](),_0x36fd70['originalname']));}})});router[_0xb6b5('0x3e')]('/:id/avatar',upload['single'](_0xb6b5('0x47')),controller[_0xb6b5('0x48')]);router[_0xb6b5('0x3e')](_0xb6b5('0x49'),auth[_0xb6b5('0xd')](),controller['login']);router[_0xb6b5('0x3e')]('/:id/logout',auth[_0xb6b5('0xd')](),controller[_0xb6b5('0x4a')]);router['post'](_0xb6b5('0x4b'),auth['isAuthenticated'](),controller['pause']);router[_0xb6b5('0x3e')](_0xb6b5('0x4c'),auth['isAuthenticated'](),controller[_0xb6b5('0x4d')]);router['post'](_0xb6b5('0x4e'),auth[_0xb6b5('0xd')](),controller['addTeams']);router[_0xb6b5('0x3e')]('/:id/chat_interactions',auth['isAuthenticated'](),controller[_0xb6b5('0x4f')]);router[_0xb6b5('0x3e')]('/:id/mail_interactions',auth[_0xb6b5('0xd')](),controller['addMailInteractions']);router[_0xb6b5('0x3e')](_0xb6b5('0x50'),auth[_0xb6b5('0xd')](),controller[_0xb6b5('0x51')]);router[_0xb6b5('0x3e')](_0xb6b5('0x52'),auth['isAuthenticated'](),controller['addSmsInteractions']);router[_0xb6b5('0x3e')](_0xb6b5('0x53'),auth['isAuthenticated'](),controller[_0xb6b5('0x54')]);router[_0xb6b5('0x3e')](_0xb6b5('0x55'),auth['isAuthenticated'](),controller[_0xb6b5('0x56')]);router['post'](_0xb6b5('0x2f'),auth[_0xb6b5('0xd')](),controller[_0xb6b5('0x57')]);router[_0xb6b5('0x3e')](_0xb6b5('0x31'),auth[_0xb6b5('0xd')](),controller['addMailAccounts']);router[_0xb6b5('0x3e')](_0xb6b5('0x32'),auth[_0xb6b5('0xd')](),controller[_0xb6b5('0x58')]);router[_0xb6b5('0x3e')](_0xb6b5('0x34'),auth[_0xb6b5('0xd')](),controller[_0xb6b5('0x59')]);router[_0xb6b5('0x3e')]('/:id/chat_websites',auth[_0xb6b5('0xd')](),controller[_0xb6b5('0x5a')]);router[_0xb6b5('0x3e')](_0xb6b5('0x38'),auth[_0xb6b5('0xd')](),controller[_0xb6b5('0x5b')]);router[_0xb6b5('0x3e')]('/:id/square_projects',auth['isAuthenticated'](),controller[_0xb6b5('0x5c')]);router['post'](_0xb6b5('0x3c'),auth[_0xb6b5('0xd')](),controller[_0xb6b5('0x5d')]);router['put']('/:id',auth['isAuthenticated'](),controller[_0xb6b5('0x5e')]);router[_0xb6b5('0x5f')](_0xb6b5('0x60'),auth[_0xb6b5('0xd')](),controller[_0xb6b5('0x61')]);router[_0xb6b5('0x62')](_0xb6b5('0x1a'),auth[_0xb6b5('0xd')](),controller[_0xb6b5('0x63')]);router[_0xb6b5('0x62')]('/:id/teams',auth['isAuthenticated'](),controller[_0xb6b5('0x64')]);router[_0xb6b5('0x62')](_0xb6b5('0x12'),auth[_0xb6b5('0xd')](),controller[_0xb6b5('0x65')]);router['delete'](_0xb6b5('0x66'),auth[_0xb6b5('0xd')](),controller[_0xb6b5('0x67')]);router[_0xb6b5('0x62')](_0xb6b5('0x68'),auth[_0xb6b5('0xd')](),controller[_0xb6b5('0x69')]);router[_0xb6b5('0x62')]('/:id/fax_interactions',auth[_0xb6b5('0xd')](),controller['removeFaxInteractions']);router[_0xb6b5('0x62')](_0xb6b5('0x52'),auth[_0xb6b5('0xd')](),controller[_0xb6b5('0x6a')]);router[_0xb6b5('0x62')](_0xb6b5('0x53'),auth[_0xb6b5('0xd')](),controller['removeOpenchannelInteractions']);router[_0xb6b5('0x62')](_0xb6b5('0x55'),auth[_0xb6b5('0xd')](),controller[_0xb6b5('0x6b')]);router[_0xb6b5('0x62')](_0xb6b5('0x2f'),auth[_0xb6b5('0xd')](),controller[_0xb6b5('0x6c')]);router[_0xb6b5('0x62')]('/:id/mail_accounts',auth[_0xb6b5('0xd')](),controller[_0xb6b5('0x6d')]);router[_0xb6b5('0x62')](_0xb6b5('0x32'),auth[_0xb6b5('0xd')](),controller[_0xb6b5('0x6e')]);router[_0xb6b5('0x62')](_0xb6b5('0x34'),auth[_0xb6b5('0xd')](),controller['removeSmsAccounts']);router[_0xb6b5('0x62')]('/:id/chat_websites',auth['isAuthenticated'](),controller[_0xb6b5('0x6f')]);router[_0xb6b5('0x62')](_0xb6b5('0x38'),auth['isAuthenticated'](),controller[_0xb6b5('0x70')]);router[_0xb6b5('0x62')](_0xb6b5('0x71'),auth['isAuthenticated'](),controller[_0xb6b5('0x72')]);router[_0xb6b5('0x62')](_0xb6b5('0x3c'),auth[_0xb6b5('0xd')](),controller[_0xb6b5('0x73')]);module[_0xb6b5('0x74')]=router;
\ No newline at end of file
+var _0x6e6b=['whoami','/presence','getPresence','/:id','show','getAvatar','getOpenTabs','/:id/contacts','getContacts','/:id/queues','getQueues','/:id/groups','/:id/recordings','getRecordings','/:id/screen_recordings','/:id/chat/interactions','getChatInteractions','/:id/openchannel/interactions','getOpenchannelInteractions','/:id/mail/interactions','getMailInteractions','/:id/fax/interactions','getFaxInteractions','/:id/whatsapp/interactions','getWhatsappInteractions','/:id/lists','/:id/agents','getAgents','/:id/prefixes','getVoicePrefixes','/:id/fax_accounts','getFaxAccounts','/:id/mail_accounts','getMailAccounts','/:id/openchannel_accounts','getOpenchannelAccounts','/:id/sms_accounts','getSmsAccounts','getChatWebsites','/:id/whatsapp_accounts','getWhatsappAccounts','/:id/api_key','getApiKey','post','create','/create_many','bulkCreate','addQueues','diskStorage','join','root','server/files/images/','format','%s-%s','now','originalname','/:id/avatar','single','file','addAvatar','/:id/logout','logout','/:id/pause','pause','/:id/unpause','unpause','/:id/teams','addTeams','/:id/chat_interactions','/:id/sms_interactions','addSmsInteractions','/:id/openchannel_interactions','addOpenchannelInteractions','addWhatsappInteractions','addMailAccounts','addOpenchannelAccounts','addSmsAccounts','/:id/chat_websites','addChatWebsites','addWhatsappAccounts','/:id/square_projects','addSquareProjects','put','update','/:id/password','changePassword','delete','removeQueues','removeTeams','destroy','removeChatInteractions','/:id/mail_interactions','removeMailInteractions','removeSmsInteractions','removeOpenchannelInteractions','/:id/whatsapp_interactions','removeFaxAccounts','removeMailAccounts','removeOpenchannelAccounts','removeSmsAccounts','removeChatWebsites','removeSquareProjects','removeApiKey','exports','util','path','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','get','isAuthenticated','index','describe','/whoami'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x6e6b,0x68));var _0xb6e6=function(_0x427676,_0x3f4021){_0x427676=_0x427676-0x0;var _0x9ddbeb=_0x6e6b[_0x427676];return _0x9ddbeb;};'use strict';var multer=require('multer');var util=require(_0xb6e6('0x0'));var path=require(_0xb6e6('0x1'));var timeout=require('connect-timeout');var express=require(_0xb6e6('0x2'));var router=express[_0xb6e6('0x3')]();var fs_extra=require(_0xb6e6('0x4'));var auth=require(_0xb6e6('0x5'));var interaction=require(_0xb6e6('0x6'));var config=require(_0xb6e6('0x7'));var controller=require('./user.controller');router[_0xb6e6('0x8')]('/',auth[_0xb6e6('0x9')](),controller[_0xb6e6('0xa')]);router[_0xb6e6('0x8')]('/describe',auth['isAuthenticated'](),controller[_0xb6e6('0xb')]);router[_0xb6e6('0x8')](_0xb6e6('0xc'),auth[_0xb6e6('0x9')](),controller[_0xb6e6('0xd')]);router['get'](_0xb6e6('0xe'),auth[_0xb6e6('0x9')](),controller[_0xb6e6('0xf')]);router[_0xb6e6('0x8')](_0xb6e6('0x10'),auth['isAuthenticated'](),controller[_0xb6e6('0x11')]);router[_0xb6e6('0x8')]('/:id/avatar',controller[_0xb6e6('0x12')]);router[_0xb6e6('0x8')]('/:id/open_tabs',auth['isAuthenticated'](),controller[_0xb6e6('0x13')]);router['get'](_0xb6e6('0x14'),auth[_0xb6e6('0x9')](),controller[_0xb6e6('0x15')]);router[_0xb6e6('0x8')](_0xb6e6('0x16'),auth[_0xb6e6('0x9')](),controller[_0xb6e6('0x17')]);router['get']('/:id/queues_rt',auth[_0xb6e6('0x9')](),controller['getVoiceQueuesRt']);router[_0xb6e6('0x8')](_0xb6e6('0x18'),auth[_0xb6e6('0x9')](),controller['getGroups']);router[_0xb6e6('0x8')](_0xb6e6('0x19'),auth[_0xb6e6('0x9')](),controller[_0xb6e6('0x1a')]);router[_0xb6e6('0x8')](_0xb6e6('0x1b'),auth[_0xb6e6('0x9')](),controller['getScreenRecordings']);router['get'](_0xb6e6('0x1c'),auth[_0xb6e6('0x9')](),controller[_0xb6e6('0x1d')]);router['get'](_0xb6e6('0x1e'),auth['isAuthenticated'](),controller[_0xb6e6('0x1f')]);router['get'](_0xb6e6('0x20'),auth[_0xb6e6('0x9')](),controller[_0xb6e6('0x21')]);router[_0xb6e6('0x8')]('/:id/sms/interactions',auth['isAuthenticated'](),controller['getSmsInteractions']);router[_0xb6e6('0x8')](_0xb6e6('0x22'),auth['isAuthenticated'](),controller[_0xb6e6('0x23')]);router[_0xb6e6('0x8')](_0xb6e6('0x24'),auth[_0xb6e6('0x9')](),controller[_0xb6e6('0x25')]);router['get']('/:id/teams',auth[_0xb6e6('0x9')](),controller['getTeams']);router['get'](_0xb6e6('0x26'),auth[_0xb6e6('0x9')](),controller['getLists']);router['get'](_0xb6e6('0x27'),auth['isAuthenticated'](),controller[_0xb6e6('0x28')]);router[_0xb6e6('0x8')](_0xb6e6('0x29'),auth[_0xb6e6('0x9')](),controller[_0xb6e6('0x2a')]);router[_0xb6e6('0x8')](_0xb6e6('0x2b'),auth[_0xb6e6('0x9')](),controller[_0xb6e6('0x2c')]);router[_0xb6e6('0x8')](_0xb6e6('0x2d'),auth[_0xb6e6('0x9')](),controller[_0xb6e6('0x2e')]);router[_0xb6e6('0x8')](_0xb6e6('0x2f'),auth['isAuthenticated'](),controller[_0xb6e6('0x30')]);router[_0xb6e6('0x8')](_0xb6e6('0x31'),auth[_0xb6e6('0x9')](),controller[_0xb6e6('0x32')]);router['get']('/:id/chat_websites',auth['isAuthenticated'](),controller[_0xb6e6('0x33')]);router[_0xb6e6('0x8')](_0xb6e6('0x34'),auth[_0xb6e6('0x9')](),controller[_0xb6e6('0x35')]);router['get']('/:id/square_projects',auth[_0xb6e6('0x9')](),controller['getSquareProjects']);router[_0xb6e6('0x8')]('/:id/scheduled_calls',auth[_0xb6e6('0x9')](),controller['getScheduledCalls']);router[_0xb6e6('0x8')](_0xb6e6('0x36'),auth[_0xb6e6('0x9')](),controller[_0xb6e6('0x37')]);router['post'](_0xb6e6('0x14'),auth['isAuthenticated'](),controller['addContacts']);router[_0xb6e6('0x38')]('/',auth['isAuthenticated'](),controller[_0xb6e6('0x39')]);router['post'](_0xb6e6('0x3a'),auth[_0xb6e6('0x9')](),controller[_0xb6e6('0x3b')]);router[_0xb6e6('0x38')]('/:id/queues',auth[_0xb6e6('0x9')](),controller[_0xb6e6('0x3c')]);var upload=multer({'storage':multer[_0xb6e6('0x3d')]({'destination':function(_0x4ea662,_0x47cbf3,_0x24063d){_0x24063d(null,path[_0xb6e6('0x3e')](config[_0xb6e6('0x3f')],_0xb6e6('0x40')));},'filename':function(_0x39bc3e,_0x589c34,_0x3052d9){_0x3052d9(null,util[_0xb6e6('0x41')](_0xb6e6('0x42'),Date[_0xb6e6('0x43')](),_0x589c34[_0xb6e6('0x44')]));}})});router[_0xb6e6('0x38')](_0xb6e6('0x45'),upload[_0xb6e6('0x46')](_0xb6e6('0x47')),controller[_0xb6e6('0x48')]);router[_0xb6e6('0x38')]('/:id/login',auth[_0xb6e6('0x9')](),controller['login']);router[_0xb6e6('0x38')](_0xb6e6('0x49'),auth[_0xb6e6('0x9')](),controller[_0xb6e6('0x4a')]);router[_0xb6e6('0x38')](_0xb6e6('0x4b'),auth[_0xb6e6('0x9')](),controller[_0xb6e6('0x4c')]);router['post'](_0xb6e6('0x4d'),auth[_0xb6e6('0x9')](),controller[_0xb6e6('0x4e')]);router[_0xb6e6('0x38')](_0xb6e6('0x4f'),auth['isAuthenticated'](),controller[_0xb6e6('0x50')]);router[_0xb6e6('0x38')](_0xb6e6('0x51'),auth['isAuthenticated'](),controller['addChatInteractions']);router['post']('/:id/mail_interactions',auth[_0xb6e6('0x9')](),controller['addMailInteractions']);router[_0xb6e6('0x38')]('/:id/fax_interactions',auth[_0xb6e6('0x9')](),controller['addFaxInteractions']);router[_0xb6e6('0x38')](_0xb6e6('0x52'),auth[_0xb6e6('0x9')](),controller[_0xb6e6('0x53')]);router[_0xb6e6('0x38')](_0xb6e6('0x54'),auth[_0xb6e6('0x9')](),controller[_0xb6e6('0x55')]);router[_0xb6e6('0x38')]('/:id/whatsapp_interactions',auth['isAuthenticated'](),controller[_0xb6e6('0x56')]);router[_0xb6e6('0x38')](_0xb6e6('0x2b'),auth[_0xb6e6('0x9')](),controller['addFaxAccounts']);router[_0xb6e6('0x38')](_0xb6e6('0x2d'),auth['isAuthenticated'](),controller[_0xb6e6('0x57')]);router[_0xb6e6('0x38')](_0xb6e6('0x2f'),auth[_0xb6e6('0x9')](),controller[_0xb6e6('0x58')]);router[_0xb6e6('0x38')]('/:id/sms_accounts',auth[_0xb6e6('0x9')](),controller[_0xb6e6('0x59')]);router[_0xb6e6('0x38')](_0xb6e6('0x5a'),auth['isAuthenticated'](),controller[_0xb6e6('0x5b')]);router[_0xb6e6('0x38')](_0xb6e6('0x34'),auth['isAuthenticated'](),controller[_0xb6e6('0x5c')]);router['post'](_0xb6e6('0x5d'),auth[_0xb6e6('0x9')](),controller[_0xb6e6('0x5e')]);router[_0xb6e6('0x38')](_0xb6e6('0x36'),auth['isAuthenticated'](),controller['createApiKey']);router[_0xb6e6('0x5f')](_0xb6e6('0x10'),auth[_0xb6e6('0x9')](),controller[_0xb6e6('0x60')]);router[_0xb6e6('0x5f')](_0xb6e6('0x61'),auth[_0xb6e6('0x9')](),controller[_0xb6e6('0x62')]);router[_0xb6e6('0x63')](_0xb6e6('0x16'),auth[_0xb6e6('0x9')](),controller[_0xb6e6('0x64')]);router[_0xb6e6('0x63')](_0xb6e6('0x4f'),auth[_0xb6e6('0x9')](),controller[_0xb6e6('0x65')]);router[_0xb6e6('0x63')]('/:id',auth['isAuthenticated'](),controller[_0xb6e6('0x66')]);router[_0xb6e6('0x63')](_0xb6e6('0x51'),auth[_0xb6e6('0x9')](),controller[_0xb6e6('0x67')]);router[_0xb6e6('0x63')](_0xb6e6('0x68'),auth[_0xb6e6('0x9')](),controller[_0xb6e6('0x69')]);router[_0xb6e6('0x63')]('/:id/fax_interactions',auth[_0xb6e6('0x9')](),controller['removeFaxInteractions']);router[_0xb6e6('0x63')](_0xb6e6('0x52'),auth[_0xb6e6('0x9')](),controller[_0xb6e6('0x6a')]);router['delete'](_0xb6e6('0x54'),auth['isAuthenticated'](),controller[_0xb6e6('0x6b')]);router[_0xb6e6('0x63')](_0xb6e6('0x6c'),auth[_0xb6e6('0x9')](),controller['removeWhatsappInteractions']);router[_0xb6e6('0x63')](_0xb6e6('0x2b'),auth[_0xb6e6('0x9')](),controller[_0xb6e6('0x6d')]);router[_0xb6e6('0x63')]('/:id/mail_accounts',auth[_0xb6e6('0x9')](),controller[_0xb6e6('0x6e')]);router['delete']('/:id/openchannel_accounts',auth['isAuthenticated'](),controller[_0xb6e6('0x6f')]);router['delete'](_0xb6e6('0x31'),auth[_0xb6e6('0x9')](),controller[_0xb6e6('0x70')]);router['delete']('/:id/chat_websites',auth[_0xb6e6('0x9')](),controller[_0xb6e6('0x71')]);router['delete']('/:id/whatsapp_accounts',auth[_0xb6e6('0x9')](),controller['removeWhatsappAccounts']);router[_0xb6e6('0x63')]('/:id/square_projects',auth[_0xb6e6('0x9')](),controller[_0xb6e6('0x72')]);router['delete'](_0xb6e6('0x36'),auth[_0xb6e6('0x9')](),controller[_0xb6e6('0x73')]);module[_0xb6e6('0x74')]=router;
\ No newline at end of file
index 77dfbcb..9362e8a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x33af=['split','String\x20is\x20deprecated.\x20Please\x20use\x20an\x20Array\x20as\x20[\x22udp\x22,\x20\x22tcp\x22]','info','rfc2833','nonat','outgoing','yes','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','String\x20is\x20deprecated.\x20Please\x20use\x20an\x20Array\x20as\x20[\x22port\x22,\x20\x22invite\x22]','never','\x22\x22\x20<>','always','accept','refuse','originate','uac','uas','fingerprint','passive','actpass','update','TEXT','showWebBar','get','isArray','wss','encryption','avpf','force_avp','icesupport','dtlsenable','dtlsverify','dtlssetup','dtlscertfile','rtcp_mux','/etc/pki/tls/certs/motion.crt','dtlsprivatekey','map','permissions','phoneBarEnableScreenRecordingByAgent','string','true','false','screenrecording','blocked','blockedAt','loginAttempts','UNSIGNED','moment','lodash','exports','STRING','name','setDataValue','defaultuser','fullname','callerid','\x22%s\x22\x20<%s>','getDataValue','internal','email','toLowerCase','ENUM','admin','user','telephone','INTEGER','accountcode','format','DATE','BOOLEAN','DEFAULT\x20PAUSE','friend','peer','from-sip','ALLOWED_NOT_SCREENED','ALLOWED_PASSED_SCREEN','ALLOWED_FAILED_SCREEN','ALLOWED','PROHIB_NOT_SCREENED','PROHIB_PASSED_SCREEN','PROHIB_FAILED_SCREEN','udp','transport','join'];(function(_0x403f02,_0x94274a){var _0x1dc2ef=function(_0x3c7936){while(--_0x3c7936){_0x403f02['push'](_0x403f02['shift']());}};_0x1dc2ef(++_0x94274a);}(_0x33af,0xec));var _0xf33a=function(_0x47a5bd,_0x508329){_0x47a5bd=_0x47a5bd-0x0;var _0x5c2184=_0x33af[_0x47a5bd];return _0x5c2184;};'use strict';var Sequelize=require('sequelize');var moment=require(_0xf33a('0x0'));var util=require('util');var _=require(_0xf33a('0x1'));module[_0xf33a('0x2')]={'name':{'type':Sequelize[_0xf33a('0x3')],'allowNull':![],'unique':_0xf33a('0x4'),'validate':{'notEmpty':!![],'is':/^[A-Za-z0-9\.\_]+$/i},'set':function(_0x169f02){this[_0xf33a('0x5')]('name',_0x169f02);this[_0xf33a('0x5')](_0xf33a('0x6'),_0x169f02);},'comment':'The\x20name\x20of\x20the\x20user'},'fullname':{'type':Sequelize[_0xf33a('0x3')],'allowNull':![],'set':function(_0x384b14){this[_0xf33a('0x5')](_0xf33a('0x7'),_0x384b14);this[_0xf33a('0x5')](_0xf33a('0x8'),util['format'](_0xf33a('0x9'),_0x384b14,this[_0xf33a('0xa')](_0xf33a('0xb'))));}},'alias':{'type':Sequelize[_0xf33a('0x3')]},'email':{'type':Sequelize[_0xf33a('0x3')],'allowNull':![],'unique':_0xf33a('0xc'),'validate':{'isEmail':!![]},'set':function(_0x5074a2){if(_0x5074a2){this['setDataValue'](_0xf33a('0xc'),_0x5074a2[_0xf33a('0xd')]());}}},'role':{'type':Sequelize[_0xf33a('0xe')](_0xf33a('0xf'),_0xf33a('0x10'),'agent',_0xf33a('0x11')),'allowNull':![]},'password':{'type':Sequelize[_0xf33a('0x3')],'allowNull':![],'validate':{'notEmpty':!![]}},'provider':{'type':Sequelize['STRING'],'defaultValue':'local'},'internal':{'type':Sequelize[_0xf33a('0x12')](0xb),'allowNull':![],'unique':_0xf33a('0xb'),'set':function(_0x17043){this[_0xf33a('0x5')](_0xf33a('0xb'),_0x17043);this[_0xf33a('0x5')](_0xf33a('0x13'),_0x17043);this[_0xf33a('0x5')]('callerid',util[_0xf33a('0x14')]('\x22%s\x22\x20<%s>',this[_0xf33a('0xa')](_0xf33a('0x7')),_0x17043));}},'salt':{'type':Sequelize['STRING']},'phone':{'type':Sequelize[_0xf33a('0x3')]},'mobile':{'type':Sequelize[_0xf33a('0x3')]},'address':{'type':Sequelize['STRING']},'zipcode':{'type':Sequelize[_0xf33a('0x3')]},'userpic':{'type':Sequelize[_0xf33a('0x3')]},'city':{'type':Sequelize[_0xf33a('0x3')]},'country':{'type':Sequelize[_0xf33a('0x3')]},'online':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'lastLoginAt':{'type':Sequelize[_0xf33a('0x15')]},'voicePause':{'type':Sequelize[_0xf33a('0x16')],'defaultValue':![]},'chatPause':{'type':Sequelize[_0xf33a('0x16')],'defaultValue':![]},'mailPause':{'type':Sequelize[_0xf33a('0x16')],'defaultValue':![]},'faxPause':{'type':Sequelize[_0xf33a('0x16')],'defaultValue':![]},'smsPause':{'type':Sequelize[_0xf33a('0x16')],'defaultValue':![]},'whatsappPause':{'type':Sequelize[_0xf33a('0x16')],'defaultValue':![]},'openchannelPause':{'type':Sequelize[_0xf33a('0x16')],'defaultValue':![]},'pauseType':{'type':Sequelize[_0xf33a('0x3')],'defaultValue':_0xf33a('0x17')},'lastPauseAt':{'type':Sequelize['DATE']},'chatCapacity':{'type':Sequelize[_0xf33a('0x12')],'defaultValue':0x0},'mailCapacity':{'type':Sequelize[_0xf33a('0x12')],'defaultValue':0x0},'faxCapacity':{'type':Sequelize[_0xf33a('0x12')],'defaultValue':0x0},'smsCapacity':{'type':Sequelize[_0xf33a('0x12')],'defaultValue':0x0},'whatsappCapacity':{'type':Sequelize[_0xf33a('0x12')],'defaultValue':0x0},'openchannelCapacity':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'phoneBarAutoAnswer':{'type':Sequelize[_0xf33a('0x16')],'defaultValue':![]},'phoneBarEnableSettings':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]},'phoneBarListenPort':{'type':Sequelize[_0xf33a('0x12')](0x5),'defaultValue':0x1428},'phoneBarExpires':{'type':Sequelize[_0xf33a('0x12')](0x5),'defaultValue':0x78},'phoneBarRemoteControl':{'type':Sequelize[_0xf33a('0x16')],'defaultValue':![]},'phoneBarRemoteControlPort':{'type':Sequelize[_0xf33a('0x12')],'defaultValue':0x26a0},'phoneBarEnableRecording':{'type':Sequelize[_0xf33a('0x16')],'defaultValue':![]},'phoneBarRingInUse':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'chanspy':{'type':Sequelize[_0xf33a('0x16')],'defaultValue':![]},'description':{'type':Sequelize[_0xf33a('0x3')],'allowNull':!![]},'host':{'type':Sequelize['STRING'],'allowNull':!![],'defaultValue':'dynamic'},'ipaddr':{'type':Sequelize[_0xf33a('0x3')],'allowNull':!![]},'port':{'type':Sequelize['INTEGER'](0x5),'allowNull':!![]},'regseconds':{'type':Sequelize['INTEGER'](0xb),'allowNull':!![]},'fullcontact':{'type':Sequelize[_0xf33a('0x3')],'allowNull':!![]},'regserver':{'type':Sequelize['STRING'],'allowNull':!![]},'useragent':{'type':Sequelize[_0xf33a('0x3')],'allowNull':!![]},'lastms':{'type':Sequelize['INTEGER'](0xb),'allowNull':!![]},'type':{'type':Sequelize[_0xf33a('0xe')](_0xf33a('0x18'),_0xf33a('0x10'),_0xf33a('0x19')),'allowNull':!![],'defaultValue':_0xf33a('0x18')},'context':{'type':Sequelize[_0xf33a('0x3')],'allowNull':!![],'defaultValue':_0xf33a('0x1a')},'callingpres':{'type':Sequelize[_0xf33a('0xe')](_0xf33a('0x1b'),_0xf33a('0x1c'),_0xf33a('0x1d'),_0xf33a('0x1e'),_0xf33a('0x1f'),_0xf33a('0x20'),_0xf33a('0x21'),'PROHIB'),'allowNull':!![]},'deny':{'type':Sequelize[_0xf33a('0x3')],'allowNull':!![]},'permit':{'type':Sequelize[_0xf33a('0x3')],'allowNull':!![]},'secret':{'type':Sequelize[_0xf33a('0x3')],'allowNull':!![]},'md5secret':{'type':Sequelize[_0xf33a('0x3')],'allowNull':!![]},'remotesecret':{'type':Sequelize['STRING'],'allowNull':!![]},'transport':{'type':Sequelize[_0xf33a('0x3')],'allowNull':!![],'defaultValue':_0xf33a('0x22'),'set':function(_0x2d9a9d){this[_0xf33a('0x5')](_0xf33a('0x23'),_0x2d9a9d?_0x2d9a9d[_0xf33a('0x24')](','):null);},'get':function(){return this['getDataValue'](_0xf33a('0x23'))?this[_0xf33a('0xa')](_0xf33a('0x23'))[_0xf33a('0x25')](','):null;},'comment':_0xf33a('0x26')},'dtmfmode':{'type':Sequelize['ENUM']('rfc2833',_0xf33a('0x27'),'shortinfo','inband','auto'),'allowNull':!![],'defaultValue':_0xf33a('0x28')},'directmedia':{'type':Sequelize[_0xf33a('0xe')]('yes','no',_0xf33a('0x29'),'update',_0xf33a('0x2a')),'allowNull':!![],'defaultValue':'no'},'directrtpsetup':{'type':Sequelize[_0xf33a('0xe')](_0xf33a('0x2b'),'no'),'allowNull':!![],'defaultValue':'no'},'directmediapermit':{'type':Sequelize[_0xf33a('0x3')],'allowNull':!![]},'directmediadeny':{'type':Sequelize[_0xf33a('0x3')],'allowNull':!![]},'nat':{'type':Sequelize[_0xf33a('0x3')],'allowNull':!![],'defaultValue':'force_rport,comedia','set':function(_0x16ca8b){this[_0xf33a('0x5')]('nat',_0x16ca8b?_0x16ca8b[_0xf33a('0x24')](','):null);},'get':function(){return this[_0xf33a('0xa')](_0xf33a('0x2c'))?this['getDataValue'](_0xf33a('0x2c'))[_0xf33a('0x25')](','):null;},'comment':_0xf33a('0x2d')},'callgroup':{'type':Sequelize[_0xf33a('0x3')]},'namedcallgroup':{'type':Sequelize[_0xf33a('0x3')]},'pickupgroup':{'type':Sequelize[_0xf33a('0x3')]},'namedpickupgroup':{'type':Sequelize[_0xf33a('0x3')]},'language':{'type':Sequelize[_0xf33a('0x3')],'defaultValue':'en'},'tonezone':{'type':Sequelize[_0xf33a('0x3')]},'disallow':{'type':Sequelize['STRING'],'allowNull':![],'defaultValue':_0xf33a('0x2e')},'allow':{'type':Sequelize[_0xf33a('0x3')],'allowNull':![],'defaultValue':'ulaw;alaw;gsm','set':function(_0x1e8800){this['setDataValue']('allow',_0x1e8800?_0x1e8800[_0xf33a('0x24')](';'):_0xf33a('0x2f'));},'get':function(){return this['getDataValue'](_0xf33a('0x30'))?this[_0xf33a('0xa')](_0xf33a('0x30'))['split'](';'):null;},'comment':_0xf33a('0x31')},'autoframing':{'type':Sequelize[_0xf33a('0xe')]('yes','no'),'allowNull':!![]},'insecure':{'type':Sequelize[_0xf33a('0x3')],'allowNull':!![],'set':function(_0x20e57b){this[_0xf33a('0x5')](_0xf33a('0x32'),_0x20e57b?_0x20e57b[_0xf33a('0x24')](','):null);},'get':function(){return this['getDataValue'](_0xf33a('0x32'))?this[_0xf33a('0xa')](_0xf33a('0x32'))[_0xf33a('0x25')](','):null;},'comment':_0xf33a('0x33')},'trustrpid':{'type':Sequelize['ENUM'](_0xf33a('0x2b'),'no'),'allowNull':!![],'defaultValue':'no'},'trust_id_outbound':{'type':Sequelize[_0xf33a('0xe')](_0xf33a('0x2b'),'no'),'allowNull':!![],'defaultValue':'no'},'progressinband':{'type':Sequelize['ENUM'](_0xf33a('0x2b'),'no',_0xf33a('0x34')),'allowNull':!![]},'promiscredir':{'type':Sequelize[_0xf33a('0xe')](_0xf33a('0x2b'),'no'),'allowNull':!![]},'useclientcode':{'type':Sequelize[_0xf33a('0xe')](_0xf33a('0x2b'),'no'),'allowNull':!![]},'accountcode':{'type':Sequelize['INTEGER'](0xb),'allowNull':!![]},'setvar':{'type':Sequelize[_0xf33a('0x3')],'allowNull':!![]},'callerid':{'type':Sequelize[_0xf33a('0x3')],'allowNull':!![],'defaultValue':_0xf33a('0x35')},'amaflags':{'type':Sequelize[_0xf33a('0x3')],'allowNull':!![]},'callcounter':{'type':Sequelize[_0xf33a('0xe')]('yes','no'),'allowNull':!![],'defaultValue':_0xf33a('0x2b')},'busylevel':{'type':Sequelize[_0xf33a('0x12')](0xb),'allowNull':!![]},'allowoverlap':{'type':Sequelize[_0xf33a('0xe')]('yes','no'),'allowNull':!![]},'allowsubscribe':{'type':Sequelize[_0xf33a('0xe')](_0xf33a('0x2b'),'no'),'allowNull':!![]},'allowtransfer':{'type':Sequelize['ENUM']('yes','no'),'allowNull':!![]},'ignoresdpversion':{'type':Sequelize[_0xf33a('0xe')]('yes','no'),'allowNull':!![]},'subscribecontext':{'type':Sequelize[_0xf33a('0x3')],'allowNull':!![]},'template':{'type':Sequelize[_0xf33a('0x3')],'allowNull':!![]},'videosupport':{'type':Sequelize[_0xf33a('0xe')](_0xf33a('0x2b'),'no',_0xf33a('0x36')),'allowNull':!![],'defaultValue':'no'},'maxcallbitrate':{'type':Sequelize[_0xf33a('0x12')](0xb),'allowNull':!![]},'rfc2833compensate':{'type':Sequelize[_0xf33a('0xe')](_0xf33a('0x2b'),'no'),'allowNull':!![]},'mailbox':{'type':Sequelize[_0xf33a('0x3')],'allowNull':!![]},'session_timers':{'type':Sequelize[_0xf33a('0xe')](_0xf33a('0x37'),_0xf33a('0x38'),_0xf33a('0x39')),'allowNull':!![]},'session_expires':{'type':Sequelize[_0xf33a('0x12')](0xb),'allowNull':!![]},'session_minse':{'type':Sequelize[_0xf33a('0x12')](0xb),'allowNull':!![]},'session_refresher':{'type':Sequelize[_0xf33a('0xe')](_0xf33a('0x3a'),_0xf33a('0x3b')),'allowNull':!![],'defaultValue':_0xf33a('0x3b')},'t38pt_usertpsource':{'type':Sequelize[_0xf33a('0x3')],'allowNull':!![]},'regexten':{'type':Sequelize[_0xf33a('0x3')],'allowNull':!![]},'fromdomain':{'type':Sequelize[_0xf33a('0x3')],'allowNull':!![]},'fromuser':{'type':Sequelize[_0xf33a('0x3')],'allowNull':!![]},'qualify':{'type':Sequelize[_0xf33a('0xe')](_0xf33a('0x2b'),'no'),'allowNull':!![],'defaultValue':_0xf33a('0x2b')},'keepalive':{'type':Sequelize[_0xf33a('0x12')](0xb),'allowNull':!![]},'defaultip':{'type':Sequelize[_0xf33a('0x3')],'allowNull':!![]},'defaultuser':{'type':Sequelize[_0xf33a('0x3')],'allowNull':!![]},'rtptimeout':{'type':Sequelize['INTEGER'](0xb),'allowNull':!![]},'rtpholdtimeout':{'type':Sequelize[_0xf33a('0x12')](0xb),'allowNull':!![]},'rtpkeepalive':{'type':Sequelize[_0xf33a('0x12')](0xb),'allowNull':!![]},'sendrpid':{'type':Sequelize['ENUM'](_0xf33a('0x2b'),'no'),'allowNull':!![],'defaultValue':'no'},'outboundproxy':{'type':Sequelize[_0xf33a('0x3')],'allowNull':!![]},'callbackextension':{'type':Sequelize[_0xf33a('0x3')],'allowNull':!![]},'timert1':{'type':Sequelize['INTEGER'](0xb),'allowNull':!![]},'timerb':{'type':Sequelize[_0xf33a('0x12')](0xb),'allowNull':!![]},'qualifyfreq':{'type':Sequelize[_0xf33a('0x12')](0xb),'allowNull':!![]},'contactpermit':{'type':Sequelize[_0xf33a('0x3')],'allowNull':!![]},'contactdeny':{'type':Sequelize['STRING'],'allowNull':!![]},'contactacl':{'type':Sequelize[_0xf33a('0x3')],'allowNull':!![]},'unsolicited_mailbox':{'type':Sequelize['STRING'],'allowNull':!![]},'use_q850_reason':{'type':Sequelize[_0xf33a('0x3')],'allowNull':!![]},'maxforwards':{'type':Sequelize[_0xf33a('0x12')](0xb),'allowNull':!![]},'encryption':{'type':Sequelize['ENUM']('yes','no'),'allowNull':!![],'defaultValue':'no'},'avpf':{'type':Sequelize[_0xf33a('0xe')](_0xf33a('0x2b'),'no'),'allowNull':!![]},'force_avp':{'type':Sequelize[_0xf33a('0xe')]('yes','no'),'allowNull':!![]},'icesupport':{'type':Sequelize[_0xf33a('0xe')](_0xf33a('0x2b'),'no'),'allowNull':!![]},'dtlsenable':{'type':Sequelize[_0xf33a('0xe')](_0xf33a('0x2b'),'no'),'allowNull':!![]},'dtlsverify':{'type':Sequelize[_0xf33a('0xe')](_0xf33a('0x2b'),'no',_0xf33a('0x3c'),'certificate'),'allowNull':!![]},'dtlsrekey':{'type':Sequelize[_0xf33a('0x12')](0xb),'allowNull':!![]},'dtlscertfile':{'type':Sequelize['STRING'],'allowNull':!![]},'dtlsprivatekey':{'type':Sequelize['STRING'],'allowNull':!![]},'dtlscipher':{'type':Sequelize['STRING'],'allowNull':!![]},'dtlscafile':{'type':Sequelize[_0xf33a('0x3')],'allowNull':!![]},'dtlscapath':{'type':Sequelize[_0xf33a('0x3')],'allowNull':!![]},'dtlssetup':{'type':Sequelize[_0xf33a('0xe')]('active',_0xf33a('0x3d'),_0xf33a('0x3e')),'allowNull':!![]},'dtlsfingerprint':{'type':Sequelize[_0xf33a('0x3')],'allowNull':!![]},'usereqphone':{'type':Sequelize[_0xf33a('0xe')](_0xf33a('0x2b'),'no'),'allowNull':!![],'defaultValue':'no'},'recordonfeature':{'type':Sequelize['STRING'],'allowNull':!![]},'recordofffeature':{'type':Sequelize['STRING'],'allowNull':!![]},'call_limit':{'type':Sequelize['INTEGER'](0xb),'allowNull':!![],'defaultValue':0xa},'registertrying':{'type':Sequelize[_0xf33a('0xe')]('yes','no'),'allowNull':!![]},'subscribemwi':{'type':Sequelize[_0xf33a('0xe')](_0xf33a('0x2b'),'no'),'allowNull':!![]},'vmexten':{'type':Sequelize[_0xf33a('0x3')],'allowNull':!![]},'mohinterpret':{'type':Sequelize[_0xf33a('0x3')],'allowNull':!![]},'mohsuggest':{'type':Sequelize[_0xf33a('0x3')],'allowNull':!![]},'parkinglot':{'type':Sequelize[_0xf33a('0x3')],'allowNull':!![]},'canreinvite':{'type':Sequelize['ENUM'](_0xf33a('0x2b'),'no',_0xf33a('0x29'),_0xf33a('0x3f'),'update,nonat'),'allowNull':!![],'defaultValue':'no'},'loginInPause':{'type':Sequelize[_0xf33a('0x16')],'defaultValue':![]},'resetPasswordToken':{'type':Sequelize[_0xf33a('0x3')]},'resetPasswordExpires':{'type':Sequelize[_0xf33a('0x15')]},'passwordResetAt':{'type':Sequelize[_0xf33a('0x15')],'defaultValue':null},'previousPasswords':{'type':Sequelize[_0xf33a('0x40')]},'showWebBar':{'type':Sequelize[_0xf33a('0x12')],'defaultValue':0x0,'set':function(_0x473484){this[_0xf33a('0x5')](_0xf33a('0x41'),_0x473484);var _0x4b1b00=this[_0xf33a('0x42')]({'plain':!![]});switch(_0x473484){case 0x0:case 0x1:var _0x13cfbb=_0x4b1b00[_0xf33a('0x23')]?_[_0xf33a('0x43')](_0x4b1b00['transport'])?_0x4b1b00['transport'][_0xf33a('0x24')]():_0x4b1b00[_0xf33a('0x23')]:_0xf33a('0x22');if(_0x13cfbb===_0xf33a('0x44')){_0x13cfbb=_0xf33a('0x22');}this[_0xf33a('0x5')](_0xf33a('0x23'),_0x13cfbb);this[_0xf33a('0x5')](_0xf33a('0x45'),'no');this[_0xf33a('0x5')](_0xf33a('0x46'),null);this['setDataValue'](_0xf33a('0x47'),null);this[_0xf33a('0x5')](_0xf33a('0x48'),null);this[_0xf33a('0x5')](_0xf33a('0x49'),null);this[_0xf33a('0x5')](_0xf33a('0x4a'),null);this[_0xf33a('0x5')](_0xf33a('0x4b'),null);this['setDataValue'](_0xf33a('0x4c'),null);this[_0xf33a('0x5')]('dtlsprivatekey',null);this[_0xf33a('0x5')](_0xf33a('0x4d'),'no');break;case 0x2:this[_0xf33a('0x5')](_0xf33a('0x23'),_0xf33a('0x44'));this[_0xf33a('0x5')]('encryption',_0xf33a('0x2b'));this[_0xf33a('0x5')](_0xf33a('0x46'),_0xf33a('0x2b'));this[_0xf33a('0x5')](_0xf33a('0x47'),_0xf33a('0x2b'));this['setDataValue'](_0xf33a('0x48'),_0xf33a('0x2b'));this['setDataValue']('dtlsenable','yes');this[_0xf33a('0x5')](_0xf33a('0x4a'),'no');this[_0xf33a('0x5')](_0xf33a('0x4b'),_0xf33a('0x3e'));this[_0xf33a('0x5')](_0xf33a('0x4c'),_0x4b1b00[_0xf33a('0x4c')]||_0xf33a('0x4e'));this[_0xf33a('0x5')](_0xf33a('0x4f'),_0x4b1b00[_0xf33a('0x4f')]||'/etc/pki/tls/private/motion.key');this[_0xf33a('0x5')]('rtcp_mux','yes');break;default:}}},'permissions':{'type':Sequelize[_0xf33a('0x40')],'set':function(_0x25cc49){this[_0xf33a('0x5')]('permissions',_0x25cc49?_0x25cc49['join'](','):[]);},'get':function(){return this[_0xf33a('0xa')]('permissions')?_[_0xf33a('0x50')](this[_0xf33a('0xa')](_0xf33a('0x51'))[_0xf33a('0x25')](','),function(_0x2530e5){return parseInt(_0x2530e5,0xa);}):[];}},'phoneBarUnconditionalNumber':{'type':Sequelize['STRING']},'phoneBarNoReplyNumber':{'type':Sequelize['STRING']},'phoneBarBusyNumber':{'type':Sequelize[_0xf33a('0x3')]},'phoneBarUnconditional':{'type':Sequelize[_0xf33a('0x16')],'defaultValue':![]},'phoneBarNoReply':{'type':Sequelize[_0xf33a('0x16')],'defaultValue':![]},'phoneBarBusy':{'type':Sequelize[_0xf33a('0x16')],'defaultValue':![]},'phoneBarDnd':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]},'phoneBarUnansweredCallBadge':{'type':Sequelize[_0xf33a('0x16')],'defaultValue':!![]},'phoneBarEnableDtmfTone':{'type':Sequelize[_0xf33a('0x16')],'defaultValue':![]},'phoneBarAutoAnswerDelay':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'extensionMonitor':{'type':Sequelize[_0xf33a('0x3')],'defaultValue':''},'crudPermissions':{'type':Sequelize[_0xf33a('0x12')],'defaultValue':0x0},'rtcp_mux':{'type':Sequelize[_0xf33a('0xe')]('yes','no'),'defaultValue':'no'},'allowmessenger':{'type':Sequelize[_0xf33a('0x16')],'defaultValue':!![]},'phoneBarOutboundProxy':{'type':Sequelize[_0xf33a('0x3')]},'phoneBarEnableJaws':{'type':Sequelize[_0xf33a('0x16')],'defaultValue':![]},'phoneBarEnableScreenRecordingByAgent':{'type':Sequelize[_0xf33a('0x16')],'defaultValue':![]},'phoneBarEnableVideoRecording':{'type':Sequelize['VIRTUAL'],'get':function(){return this[_0xf33a('0xa')](_0xf33a('0x52'))?this[_0xf33a('0xa')]('phoneBarEnableScreenRecordingByAgent'):![];}},'phoneBarEnableAutomaticScreenRecording':{'type':Sequelize[_0xf33a('0x16')],'defaultValue':![]},'phoneBarPrefixRequired':{'type':Sequelize[_0xf33a('0x16')],'defaultValue':![]},'hotdesk':{'type':Sequelize[_0xf33a('0x16')],'defaultValue':![]},'interface':{'type':Sequelize[_0xf33a('0x3')],'defaultValue':null},'privacyEnabled':{'type':Sequelize[_0xf33a('0x16')],'defaultValue':![]},'apiKeyNonce':{'type':Sequelize[_0xf33a('0x3')],'allowNull':!![]},'apiKeyIat':{'type':Sequelize[_0xf33a('0x3')],'allowNull':!![]},'screenrecording':{'type':Sequelize[_0xf33a('0x16')],'defaultValue':![],'set':function(_0x39918a){if(typeof _0x39918a===_0xf33a('0x53')){var _0x137b75=_0x39918a==='1'?!![]:_0x39918a==='0'?![]:_0x39918a===_0xf33a('0x54')?!![]:_0x39918a===_0xf33a('0x55')?![]:![];this[_0xf33a('0x5')](_0xf33a('0x56'),_0x137b75);}else{this['setDataValue'](_0xf33a('0x56'),_0x39918a);}}},'blocked':{'type':Sequelize[_0xf33a('0x16')],'defaultValue':![],'set':function(_0x32cdfc){this[_0xf33a('0x5')](_0xf33a('0x57'),_0x32cdfc);if(_0x32cdfc===!![]){this[_0xf33a('0x5')](_0xf33a('0x58'),moment());this[_0xf33a('0x5')](_0xf33a('0x59'),0x0);}else{this[_0xf33a('0x5')](_0xf33a('0x58'),null);}}},'blockedAt':{'type':Sequelize[_0xf33a('0x15')],'defaultValue':null},'loginAttempts':{'type':Sequelize[_0xf33a('0x12')],'defaultValue':0x0},'disabled':{'type':Sequelize[_0xf33a('0x16')],'defaultValue':![]},'settingsEnabled':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]},'wssPort':{'type':Sequelize[_0xf33a('0x12')](0x5)[_0xf33a('0x5a')],'defaultValue':0x1f99},'downloadAttachments':{'type':Sequelize[_0xf33a('0x16')],'defaultValue':!![]},'downloadOmnichannelInteractions':{'type':Sequelize[_0xf33a('0x16')],'defaultValue':!![]},'downloadVoiceRecordings':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]}};
\ No newline at end of file
+var _0xabce=['util','lodash','exports','setDataValue','name','The\x20name\x20of\x20the\x20user','fullname','callerid','\x22%s\x22\x20<%s>','getDataValue','internal','STRING','email','toLowerCase','ENUM','admin','user','agent','telephone','local','INTEGER','accountcode','format','BOOLEAN','DEFAULT\x20PAUSE','DATE','dynamic','friend','peer','from-sip','ALLOWED_NOT_SCREENED','ALLOWED_PASSED_SCREEN','ALLOWED_FAILED_SCREEN','ALLOWED','PROHIB_PASSED_SCREEN','PROHIB','transport','split','String\x20is\x20deprecated.\x20Please\x20use\x20an\x20Array\x20as\x20[\x22udp\x22,\x20\x22tcp\x22]','info','shortinfo','rfc2833','nonat','update','outgoing','yes','force_rport,comedia','allow','insecure','String\x20is\x20deprecated.\x20Please\x20use\x20an\x20Array\x20as\x20[\x22port\x22,\x20\x22invite\x22]','never','always','accept','refuse','originate','uac','uas','fingerprint','certificate','passive','actpass','TEXT','showWebBar','get','isArray','udp','wss','encryption','icesupport','dtlsenable','dtlsverify','dtlssetup','dtlscertfile','dtlsprivatekey','rtcp_mux','avpf','/etc/pki/tls/private/motion.key','join','permissions','phoneBarEnableScreenRecordingByAgent','string','false','screenrecording','blockedAt','loginAttempts','sequelize','moment'];(function(_0x2d91c6,_0x10ae0e){var _0x3a8d19=function(_0x27a3ce){while(--_0x27a3ce){_0x2d91c6['push'](_0x2d91c6['shift']());}};_0x3a8d19(++_0x10ae0e);}(_0xabce,0x103));var _0xeabc=function(_0x2576d7,_0x167624){_0x2576d7=_0x2576d7-0x0;var _0x16a08c=_0xabce[_0x2576d7];return _0x16a08c;};'use strict';var Sequelize=require(_0xeabc('0x0'));var moment=require(_0xeabc('0x1'));var util=require(_0xeabc('0x2'));var _=require(_0xeabc('0x3'));module[_0xeabc('0x4')]={'name':{'type':Sequelize['STRING'],'allowNull':![],'unique':'name','validate':{'notEmpty':!![],'is':/^[A-Za-z0-9\.\_]+$/i},'set':function(_0x2e01eb){this[_0xeabc('0x5')](_0xeabc('0x6'),_0x2e01eb);this['setDataValue']('defaultuser',_0x2e01eb);},'comment':_0xeabc('0x7')},'fullname':{'type':Sequelize['STRING'],'allowNull':![],'set':function(_0x229ba4){this['setDataValue'](_0xeabc('0x8'),_0x229ba4);this[_0xeabc('0x5')](_0xeabc('0x9'),util['format'](_0xeabc('0xa'),_0x229ba4,this[_0xeabc('0xb')](_0xeabc('0xc'))));}},'alias':{'type':Sequelize[_0xeabc('0xd')]},'email':{'type':Sequelize[_0xeabc('0xd')],'allowNull':![],'unique':_0xeabc('0xe'),'validate':{'isEmail':!![]},'set':function(_0x111aaf){if(_0x111aaf){this[_0xeabc('0x5')](_0xeabc('0xe'),_0x111aaf[_0xeabc('0xf')]());}}},'role':{'type':Sequelize[_0xeabc('0x10')](_0xeabc('0x11'),_0xeabc('0x12'),_0xeabc('0x13'),_0xeabc('0x14')),'allowNull':![]},'password':{'type':Sequelize[_0xeabc('0xd')],'allowNull':![],'validate':{'notEmpty':!![]}},'provider':{'type':Sequelize['STRING'],'defaultValue':_0xeabc('0x15')},'internal':{'type':Sequelize[_0xeabc('0x16')](0xb),'allowNull':![],'unique':_0xeabc('0xc'),'set':function(_0x55f0de){this['setDataValue'](_0xeabc('0xc'),_0x55f0de);this[_0xeabc('0x5')](_0xeabc('0x17'),_0x55f0de);this['setDataValue'](_0xeabc('0x9'),util[_0xeabc('0x18')]('\x22%s\x22\x20<%s>',this['getDataValue'](_0xeabc('0x8')),_0x55f0de));}},'salt':{'type':Sequelize['STRING']},'phone':{'type':Sequelize[_0xeabc('0xd')]},'mobile':{'type':Sequelize[_0xeabc('0xd')]},'address':{'type':Sequelize[_0xeabc('0xd')]},'zipcode':{'type':Sequelize[_0xeabc('0xd')]},'userpic':{'type':Sequelize[_0xeabc('0xd')]},'city':{'type':Sequelize[_0xeabc('0xd')]},'country':{'type':Sequelize[_0xeabc('0xd')]},'online':{'type':Sequelize[_0xeabc('0x19')],'defaultValue':![]},'lastLoginAt':{'type':Sequelize['DATE']},'voicePause':{'type':Sequelize[_0xeabc('0x19')],'defaultValue':![]},'chatPause':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'mailPause':{'type':Sequelize[_0xeabc('0x19')],'defaultValue':![]},'faxPause':{'type':Sequelize[_0xeabc('0x19')],'defaultValue':![]},'smsPause':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'whatsappPause':{'type':Sequelize[_0xeabc('0x19')],'defaultValue':![]},'openchannelPause':{'type':Sequelize[_0xeabc('0x19')],'defaultValue':![]},'pauseType':{'type':Sequelize[_0xeabc('0xd')],'defaultValue':_0xeabc('0x1a')},'lastPauseAt':{'type':Sequelize[_0xeabc('0x1b')]},'chatCapacity':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'mailCapacity':{'type':Sequelize[_0xeabc('0x16')],'defaultValue':0x0},'faxCapacity':{'type':Sequelize[_0xeabc('0x16')],'defaultValue':0x0},'smsCapacity':{'type':Sequelize[_0xeabc('0x16')],'defaultValue':0x0},'whatsappCapacity':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'openchannelCapacity':{'type':Sequelize[_0xeabc('0x16')],'defaultValue':0x0},'phoneBarAutoAnswer':{'type':Sequelize[_0xeabc('0x19')],'defaultValue':![]},'phoneBarEnableSettings':{'type':Sequelize[_0xeabc('0x19')],'defaultValue':!![]},'phoneBarListenPort':{'type':Sequelize[_0xeabc('0x16')](0x5),'defaultValue':0x1428},'phoneBarExpires':{'type':Sequelize['INTEGER'](0x5),'defaultValue':0x78},'phoneBarRemoteControl':{'type':Sequelize[_0xeabc('0x19')],'defaultValue':![]},'phoneBarRemoteControlPort':{'type':Sequelize['INTEGER'],'defaultValue':0x26a0},'phoneBarEnableRecording':{'type':Sequelize[_0xeabc('0x19')],'defaultValue':![]},'phoneBarRingInUse':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'chanspy':{'type':Sequelize[_0xeabc('0x19')],'defaultValue':![]},'description':{'type':Sequelize[_0xeabc('0xd')],'allowNull':!![]},'host':{'type':Sequelize[_0xeabc('0xd')],'allowNull':!![],'defaultValue':_0xeabc('0x1c')},'ipaddr':{'type':Sequelize[_0xeabc('0xd')],'allowNull':!![]},'port':{'type':Sequelize[_0xeabc('0x16')](0x5),'allowNull':!![]},'regseconds':{'type':Sequelize[_0xeabc('0x16')](0xb),'allowNull':!![]},'fullcontact':{'type':Sequelize['STRING'],'allowNull':!![]},'regserver':{'type':Sequelize['STRING'],'allowNull':!![]},'useragent':{'type':Sequelize[_0xeabc('0xd')],'allowNull':!![]},'lastms':{'type':Sequelize['INTEGER'](0xb),'allowNull':!![]},'type':{'type':Sequelize[_0xeabc('0x10')](_0xeabc('0x1d'),'user',_0xeabc('0x1e')),'allowNull':!![],'defaultValue':_0xeabc('0x1d')},'context':{'type':Sequelize[_0xeabc('0xd')],'allowNull':!![],'defaultValue':_0xeabc('0x1f')},'callingpres':{'type':Sequelize[_0xeabc('0x10')](_0xeabc('0x20'),_0xeabc('0x21'),_0xeabc('0x22'),_0xeabc('0x23'),'PROHIB_NOT_SCREENED',_0xeabc('0x24'),'PROHIB_FAILED_SCREEN',_0xeabc('0x25')),'allowNull':!![]},'deny':{'type':Sequelize[_0xeabc('0xd')],'allowNull':!![]},'permit':{'type':Sequelize[_0xeabc('0xd')],'allowNull':!![]},'secret':{'type':Sequelize[_0xeabc('0xd')],'allowNull':!![]},'md5secret':{'type':Sequelize[_0xeabc('0xd')],'allowNull':!![]},'remotesecret':{'type':Sequelize[_0xeabc('0xd')],'allowNull':!![]},'transport':{'type':Sequelize[_0xeabc('0xd')],'allowNull':!![],'defaultValue':'udp','set':function(_0x78510a){this[_0xeabc('0x5')](_0xeabc('0x26'),_0x78510a?_0x78510a['join'](','):null);},'get':function(){return this[_0xeabc('0xb')](_0xeabc('0x26'))?this[_0xeabc('0xb')]('transport')[_0xeabc('0x27')](','):null;},'comment':_0xeabc('0x28')},'dtmfmode':{'type':Sequelize[_0xeabc('0x10')]('rfc2833',_0xeabc('0x29'),_0xeabc('0x2a'),'inband','auto'),'allowNull':!![],'defaultValue':_0xeabc('0x2b')},'directmedia':{'type':Sequelize[_0xeabc('0x10')]('yes','no',_0xeabc('0x2c'),_0xeabc('0x2d'),_0xeabc('0x2e')),'allowNull':!![],'defaultValue':'no'},'directrtpsetup':{'type':Sequelize[_0xeabc('0x10')](_0xeabc('0x2f'),'no'),'allowNull':!![],'defaultValue':'no'},'directmediapermit':{'type':Sequelize['STRING'],'allowNull':!![]},'directmediadeny':{'type':Sequelize[_0xeabc('0xd')],'allowNull':!![]},'nat':{'type':Sequelize['STRING'],'allowNull':!![],'defaultValue':_0xeabc('0x30'),'set':function(_0x2bda29){this[_0xeabc('0x5')]('nat',_0x2bda29?_0x2bda29['join'](','):null);},'get':function(){return this[_0xeabc('0xb')]('nat')?this[_0xeabc('0xb')]('nat')['split'](','):null;},'comment':'String\x20is\x20deprecated.\x20Please\x20use\x20an\x20Array\x20as\x20[\x22force_rport\x22,\x20\x22comedia\x22]'},'callgroup':{'type':Sequelize['STRING']},'namedcallgroup':{'type':Sequelize[_0xeabc('0xd')]},'pickupgroup':{'type':Sequelize['STRING']},'namedpickupgroup':{'type':Sequelize[_0xeabc('0xd')]},'language':{'type':Sequelize[_0xeabc('0xd')],'defaultValue':'en'},'tonezone':{'type':Sequelize['STRING']},'disallow':{'type':Sequelize[_0xeabc('0xd')],'allowNull':![],'defaultValue':'all'},'allow':{'type':Sequelize[_0xeabc('0xd')],'allowNull':![],'defaultValue':'ulaw;alaw;gsm','set':function(_0xbd7f03){this[_0xeabc('0x5')](_0xeabc('0x31'),_0xbd7f03?_0xbd7f03['join'](';'):'ulaw;alaw;gsm');},'get':function(){return this['getDataValue'](_0xeabc('0x31'))?this[_0xeabc('0xb')](_0xeabc('0x31'))['split'](';'):null;},'comment':'String\x20is\x20deprecated.\x20Please\x20use\x20an\x20Array\x20as\x20[\x22ulaw\x22,\x20\x22alaw\x22,\x20\x22gsm\x22]'},'autoframing':{'type':Sequelize[_0xeabc('0x10')](_0xeabc('0x2f'),'no'),'allowNull':!![]},'insecure':{'type':Sequelize['STRING'],'allowNull':!![],'set':function(_0xc6af4d){this['setDataValue'](_0xeabc('0x32'),_0xc6af4d?_0xc6af4d['join'](','):null);},'get':function(){return this['getDataValue']('insecure')?this[_0xeabc('0xb')](_0xeabc('0x32'))[_0xeabc('0x27')](','):null;},'comment':_0xeabc('0x33')},'trustrpid':{'type':Sequelize['ENUM'](_0xeabc('0x2f'),'no'),'allowNull':!![],'defaultValue':'no'},'trust_id_outbound':{'type':Sequelize['ENUM'](_0xeabc('0x2f'),'no'),'allowNull':!![],'defaultValue':'no'},'progressinband':{'type':Sequelize[_0xeabc('0x10')](_0xeabc('0x2f'),'no',_0xeabc('0x34')),'allowNull':!![]},'promiscredir':{'type':Sequelize[_0xeabc('0x10')]('yes','no'),'allowNull':!![]},'useclientcode':{'type':Sequelize['ENUM'](_0xeabc('0x2f'),'no'),'allowNull':!![]},'accountcode':{'type':Sequelize['INTEGER'](0xb),'allowNull':!![]},'setvar':{'type':Sequelize[_0xeabc('0xd')],'allowNull':!![]},'callerid':{'type':Sequelize[_0xeabc('0xd')],'allowNull':!![],'defaultValue':'\x22\x22\x20<>'},'amaflags':{'type':Sequelize[_0xeabc('0xd')],'allowNull':!![]},'callcounter':{'type':Sequelize[_0xeabc('0x10')](_0xeabc('0x2f'),'no'),'allowNull':!![],'defaultValue':_0xeabc('0x2f')},'busylevel':{'type':Sequelize[_0xeabc('0x16')](0xb),'allowNull':!![]},'allowoverlap':{'type':Sequelize[_0xeabc('0x10')](_0xeabc('0x2f'),'no'),'allowNull':!![]},'allowsubscribe':{'type':Sequelize['ENUM'](_0xeabc('0x2f'),'no'),'allowNull':!![]},'allowtransfer':{'type':Sequelize[_0xeabc('0x10')](_0xeabc('0x2f'),'no'),'allowNull':!![]},'ignoresdpversion':{'type':Sequelize[_0xeabc('0x10')](_0xeabc('0x2f'),'no'),'allowNull':!![]},'subscribecontext':{'type':Sequelize[_0xeabc('0xd')],'allowNull':!![]},'template':{'type':Sequelize[_0xeabc('0xd')],'allowNull':!![]},'videosupport':{'type':Sequelize[_0xeabc('0x10')](_0xeabc('0x2f'),'no',_0xeabc('0x35')),'allowNull':!![],'defaultValue':'no'},'maxcallbitrate':{'type':Sequelize['INTEGER'](0xb),'allowNull':!![]},'rfc2833compensate':{'type':Sequelize[_0xeabc('0x10')](_0xeabc('0x2f'),'no'),'allowNull':!![]},'mailbox':{'type':Sequelize[_0xeabc('0xd')],'allowNull':!![]},'session_timers':{'type':Sequelize[_0xeabc('0x10')](_0xeabc('0x36'),_0xeabc('0x37'),_0xeabc('0x38')),'allowNull':!![]},'session_expires':{'type':Sequelize['INTEGER'](0xb),'allowNull':!![]},'session_minse':{'type':Sequelize[_0xeabc('0x16')](0xb),'allowNull':!![]},'session_refresher':{'type':Sequelize[_0xeabc('0x10')](_0xeabc('0x39'),_0xeabc('0x3a')),'allowNull':!![],'defaultValue':_0xeabc('0x3a')},'t38pt_usertpsource':{'type':Sequelize['STRING'],'allowNull':!![]},'regexten':{'type':Sequelize[_0xeabc('0xd')],'allowNull':!![]},'fromdomain':{'type':Sequelize[_0xeabc('0xd')],'allowNull':!![]},'fromuser':{'type':Sequelize[_0xeabc('0xd')],'allowNull':!![]},'qualify':{'type':Sequelize[_0xeabc('0x10')]('yes','no'),'allowNull':!![],'defaultValue':_0xeabc('0x2f')},'keepalive':{'type':Sequelize[_0xeabc('0x16')](0xb),'allowNull':!![]},'defaultip':{'type':Sequelize['STRING'],'allowNull':!![]},'defaultuser':{'type':Sequelize[_0xeabc('0xd')],'allowNull':!![]},'rtptimeout':{'type':Sequelize['INTEGER'](0xb),'allowNull':!![]},'rtpholdtimeout':{'type':Sequelize[_0xeabc('0x16')](0xb),'allowNull':!![]},'rtpkeepalive':{'type':Sequelize['INTEGER'](0xb),'allowNull':!![]},'sendrpid':{'type':Sequelize[_0xeabc('0x10')](_0xeabc('0x2f'),'no'),'allowNull':!![],'defaultValue':'no'},'outboundproxy':{'type':Sequelize[_0xeabc('0xd')],'allowNull':!![]},'callbackextension':{'type':Sequelize[_0xeabc('0xd')],'allowNull':!![]},'timert1':{'type':Sequelize[_0xeabc('0x16')](0xb),'allowNull':!![]},'timerb':{'type':Sequelize[_0xeabc('0x16')](0xb),'allowNull':!![]},'qualifyfreq':{'type':Sequelize[_0xeabc('0x16')](0xb),'allowNull':!![]},'contactpermit':{'type':Sequelize[_0xeabc('0xd')],'allowNull':!![]},'contactdeny':{'type':Sequelize[_0xeabc('0xd')],'allowNull':!![]},'contactacl':{'type':Sequelize[_0xeabc('0xd')],'allowNull':!![]},'unsolicited_mailbox':{'type':Sequelize['STRING'],'allowNull':!![]},'use_q850_reason':{'type':Sequelize[_0xeabc('0xd')],'allowNull':!![]},'maxforwards':{'type':Sequelize[_0xeabc('0x16')](0xb),'allowNull':!![]},'encryption':{'type':Sequelize[_0xeabc('0x10')](_0xeabc('0x2f'),'no'),'allowNull':!![],'defaultValue':'no'},'avpf':{'type':Sequelize['ENUM'](_0xeabc('0x2f'),'no'),'allowNull':!![]},'force_avp':{'type':Sequelize[_0xeabc('0x10')](_0xeabc('0x2f'),'no'),'allowNull':!![]},'icesupport':{'type':Sequelize[_0xeabc('0x10')]('yes','no'),'allowNull':!![]},'dtlsenable':{'type':Sequelize[_0xeabc('0x10')](_0xeabc('0x2f'),'no'),'allowNull':!![]},'dtlsverify':{'type':Sequelize[_0xeabc('0x10')](_0xeabc('0x2f'),'no',_0xeabc('0x3b'),_0xeabc('0x3c')),'allowNull':!![]},'dtlsrekey':{'type':Sequelize[_0xeabc('0x16')](0xb),'allowNull':!![]},'dtlscertfile':{'type':Sequelize[_0xeabc('0xd')],'allowNull':!![]},'dtlsprivatekey':{'type':Sequelize[_0xeabc('0xd')],'allowNull':!![]},'dtlscipher':{'type':Sequelize['STRING'],'allowNull':!![]},'dtlscafile':{'type':Sequelize[_0xeabc('0xd')],'allowNull':!![]},'dtlscapath':{'type':Sequelize['STRING'],'allowNull':!![]},'dtlssetup':{'type':Sequelize['ENUM']('active',_0xeabc('0x3d'),_0xeabc('0x3e')),'allowNull':!![]},'dtlsfingerprint':{'type':Sequelize[_0xeabc('0xd')],'allowNull':!![]},'usereqphone':{'type':Sequelize[_0xeabc('0x10')](_0xeabc('0x2f'),'no'),'allowNull':!![],'defaultValue':'no'},'recordonfeature':{'type':Sequelize[_0xeabc('0xd')],'allowNull':!![]},'recordofffeature':{'type':Sequelize['STRING'],'allowNull':!![]},'call_limit':{'type':Sequelize[_0xeabc('0x16')](0xb),'allowNull':!![],'defaultValue':0xa},'registertrying':{'type':Sequelize[_0xeabc('0x10')](_0xeabc('0x2f'),'no'),'allowNull':!![]},'subscribemwi':{'type':Sequelize[_0xeabc('0x10')](_0xeabc('0x2f'),'no'),'allowNull':!![]},'vmexten':{'type':Sequelize[_0xeabc('0xd')],'allowNull':!![]},'mohinterpret':{'type':Sequelize[_0xeabc('0xd')],'allowNull':!![]},'mohsuggest':{'type':Sequelize[_0xeabc('0xd')],'allowNull':!![]},'parkinglot':{'type':Sequelize['STRING'],'allowNull':!![]},'canreinvite':{'type':Sequelize['ENUM'](_0xeabc('0x2f'),'no',_0xeabc('0x2c'),_0xeabc('0x2d'),'update,nonat'),'allowNull':!![],'defaultValue':'no'},'loginInPause':{'type':Sequelize[_0xeabc('0x19')],'defaultValue':![]},'resetPasswordToken':{'type':Sequelize['STRING']},'resetPasswordExpires':{'type':Sequelize['DATE']},'passwordResetAt':{'type':Sequelize[_0xeabc('0x1b')],'defaultValue':null},'previousPasswords':{'type':Sequelize[_0xeabc('0x3f')]},'showWebBar':{'type':Sequelize[_0xeabc('0x16')],'defaultValue':0x0,'set':function(_0x4f5451){this[_0xeabc('0x5')](_0xeabc('0x40'),_0x4f5451);var _0x520f4c=this[_0xeabc('0x41')]({'plain':!![]});switch(_0x4f5451){case 0x0:case 0x1:var _0x800880=_0x520f4c[_0xeabc('0x26')]?_[_0xeabc('0x42')](_0x520f4c[_0xeabc('0x26')])?_0x520f4c[_0xeabc('0x26')]['join']():_0x520f4c[_0xeabc('0x26')]:_0xeabc('0x43');if(_0x800880===_0xeabc('0x44')){_0x800880=_0xeabc('0x43');}this[_0xeabc('0x5')](_0xeabc('0x26'),_0x800880);this[_0xeabc('0x5')](_0xeabc('0x45'),'no');this[_0xeabc('0x5')]('avpf',null);this[_0xeabc('0x5')]('force_avp',null);this[_0xeabc('0x5')](_0xeabc('0x46'),null);this[_0xeabc('0x5')](_0xeabc('0x47'),null);this[_0xeabc('0x5')](_0xeabc('0x48'),null);this[_0xeabc('0x5')](_0xeabc('0x49'),null);this[_0xeabc('0x5')](_0xeabc('0x4a'),null);this['setDataValue'](_0xeabc('0x4b'),null);this[_0xeabc('0x5')](_0xeabc('0x4c'),'no');break;case 0x2:this[_0xeabc('0x5')]('transport',_0xeabc('0x44'));this['setDataValue']('encryption',_0xeabc('0x2f'));this[_0xeabc('0x5')](_0xeabc('0x4d'),_0xeabc('0x2f'));this['setDataValue']('force_avp',_0xeabc('0x2f'));this['setDataValue']('icesupport',_0xeabc('0x2f'));this['setDataValue']('dtlsenable',_0xeabc('0x2f'));this[_0xeabc('0x5')]('dtlsverify','no');this['setDataValue'](_0xeabc('0x49'),'actpass');this[_0xeabc('0x5')](_0xeabc('0x4a'),_0x520f4c['dtlscertfile']||'/etc/pki/tls/certs/motion.crt');this[_0xeabc('0x5')](_0xeabc('0x4b'),_0x520f4c[_0xeabc('0x4b')]||_0xeabc('0x4e'));this[_0xeabc('0x5')]('rtcp_mux','yes');break;default:}}},'permissions':{'type':Sequelize[_0xeabc('0x3f')],'set':function(_0x5c760d){this[_0xeabc('0x5')]('permissions',_0x5c760d?_0x5c760d[_0xeabc('0x4f')](','):[]);},'get':function(){return this['getDataValue'](_0xeabc('0x50'))?_['map'](this[_0xeabc('0xb')](_0xeabc('0x50'))[_0xeabc('0x27')](','),function(_0x36cc41){return parseInt(_0x36cc41,0xa);}):[];}},'phoneBarUnconditionalNumber':{'type':Sequelize['STRING']},'phoneBarNoReplyNumber':{'type':Sequelize[_0xeabc('0xd')]},'phoneBarBusyNumber':{'type':Sequelize['STRING']},'phoneBarUnconditional':{'type':Sequelize[_0xeabc('0x19')],'defaultValue':![]},'phoneBarNoReply':{'type':Sequelize[_0xeabc('0x19')],'defaultValue':![]},'phoneBarBusy':{'type':Sequelize[_0xeabc('0x19')],'defaultValue':![]},'phoneBarDnd':{'type':Sequelize[_0xeabc('0x19')],'defaultValue':!![]},'phoneBarUnansweredCallBadge':{'type':Sequelize[_0xeabc('0x19')],'defaultValue':!![]},'phoneBarEnableDtmfTone':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'phoneBarAutoAnswerDelay':{'type':Sequelize[_0xeabc('0x16')],'defaultValue':0x0},'extensionMonitor':{'type':Sequelize[_0xeabc('0xd')],'defaultValue':''},'crudPermissions':{'type':Sequelize[_0xeabc('0x16')],'defaultValue':0x0},'rtcp_mux':{'type':Sequelize[_0xeabc('0x10')]('yes','no'),'defaultValue':'no'},'allowmessenger':{'type':Sequelize[_0xeabc('0x19')],'defaultValue':!![]},'phoneBarOutboundProxy':{'type':Sequelize[_0xeabc('0xd')]},'phoneBarEnableJaws':{'type':Sequelize[_0xeabc('0x19')],'defaultValue':![]},'phoneBarEnableScreenRecordingByAgent':{'type':Sequelize[_0xeabc('0x19')],'defaultValue':![]},'phoneBarEnableVideoRecording':{'type':Sequelize['VIRTUAL'],'get':function(){return this[_0xeabc('0xb')](_0xeabc('0x51'))?this[_0xeabc('0xb')](_0xeabc('0x51')):![];}},'phoneBarEnableAutomaticScreenRecording':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'phoneBarPrefixRequired':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'hotdesk':{'type':Sequelize[_0xeabc('0x19')],'defaultValue':![]},'interface':{'type':Sequelize['STRING'],'defaultValue':null},'privacyEnabled':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'apiKeyNonce':{'type':Sequelize[_0xeabc('0xd')],'allowNull':!![]},'apiKeyIat':{'type':Sequelize[_0xeabc('0xd')],'allowNull':!![]},'screenrecording':{'type':Sequelize[_0xeabc('0x19')],'defaultValue':![],'set':function(_0x49679d){if(typeof _0x49679d===_0xeabc('0x52')){var _0x403b18=_0x49679d==='1'?!![]:_0x49679d==='0'?![]:_0x49679d==='true'?!![]:_0x49679d===_0xeabc('0x53')?![]:![];this[_0xeabc('0x5')](_0xeabc('0x54'),_0x403b18);}else{this[_0xeabc('0x5')](_0xeabc('0x54'),_0x49679d);}}},'blocked':{'type':Sequelize['BOOLEAN'],'defaultValue':![],'set':function(_0x3df657){this['setDataValue']('blocked',_0x3df657);if(_0x3df657===!![]){this['setDataValue'](_0xeabc('0x55'),moment());this[_0xeabc('0x5')](_0xeabc('0x56'),0x0);}else{this[_0xeabc('0x5')](_0xeabc('0x55'),null);}}},'blockedAt':{'type':Sequelize['DATE'],'defaultValue':null},'loginAttempts':{'type':Sequelize[_0xeabc('0x16')],'defaultValue':0x0},'disabled':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'settingsEnabled':{'type':Sequelize[_0xeabc('0x19')],'defaultValue':!![]},'wssPort':{'type':Sequelize[_0xeabc('0x16')](0x5)['UNSIGNED'],'defaultValue':0x1f99},'downloadAttachments':{'type':Sequelize[_0xeabc('0x19')],'defaultValue':!![]},'downloadOmnichannelInteractions':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]},'downloadVoiceRecordings':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]}};
\ No newline at end of file
index a7e7517..411cfac 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7f52=['removeQueues','Unknown\x20channel','remove','Queues','isArray','QueueId','Queue:remove','addAvatar','file','filename','getAvatar','join','root','server/files/images/logos/default_profile.png','download','existsSync','server/files/images/','userpic','getOpenTabs','chat','ChatOpenTabs','CHAT','FaxOpenTabs','FAX','createdAt','OpenchannelOpenTabs','OPENCHANNEL','MailOpenTabs','MAIL','SmsOpenTabs','SMS','WhatsappOpenTabs','WHATSAPP','getContacts','CmContact','order','sort','where','hasOwnProperty','CmList','List','Tag','Tags','color','tag','nolimit','Queue','pick','getVoiceQueuesRt','getGroups','getRecordings','VoiceRecording','UserId','ScreenRecording','getChatInteractions','ChatInteraction','getOpenchannelInteractions','OpenchannelInteraction','getSmsInteractions','SmsInteraction','getFaxInteractions','FaxInteraction','getWhatsappInteractions','login','phone','mobile','loginInPause','LOCAL/%s@from-sip/n','user:%s','user:forcelogout','headers','remoteAddress','socket','connection','User\x20not\x20found\x20or\x20not\x20allowed\x20to\x20perform\x20login\x20method','getVoiceQueues','UserVoiceQueue.penalty','upsert','MemberReport','forEach','YYYY-MM-DD\x20HH:mm:ss','getChannels','LOGIN','device','PAUSE','LOGININPAUSE','resolve','logout','QueuePause','pause','updateAttributes','DEFAULT\x20PAUSE','unpause','chatPause','openchannelPause','whatsapppause','pauseType','lastPauseAt','manual','%s%s','getTeams','addTeams','Team','setDataValue','Chat','getMailQueues','Sms','getWhatsappQueues','Whatsapp','Fax','getOpenchannelQueues','Openchannel','addAgent','getDataValue','Queue:save','UserVoicePrefix','removeTeams','Voice','getChatQueues','Mail','getFaxQueues','flatten','transaction','removeAgent','TeamVoicePrefix','getLists','getAgents','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','user_has_openchannel_interactions:save','removeOpenchannelInteractions','user_has_openchannel_interactions:remove','addWhatsappInteractions','removeWhatsappInteractions','VoicePrefix','getVoicePrefixes','FaxAccount','getFaxAccounts','addFaxAccounts','removeFaxAccounts','getMailAccounts','MailAccount','addMailAccounts','removeMailAccounts','OpenchannelAccount','getOpenchannelAccounts','addOpenchannelAccounts','getSmsAccounts','SmsAccount','addSmsAccounts','removeSmsAccounts','getChatWebsites','ChatWebsite','addChatWebsites','removeChatWebsites','getWhatsappAccounts','WhatsappAccount','addWhatsappAccounts','getSquareProjects','SquareProject','addSquareProjects','removeSquareProjects','getScheduledCalls','CmHopper','concat','$and','$gt','$lt','$ne','$eq','$not','$between','$in','$notIn','$like','$notLike','$iLike','$notILike','$overlap','$contains','$any','lastName','dialActive','getApiKey','retrieveApiKey','token','No\x20API\x20access\x20key\x20found!','You\x20don\x27t\x20have\x20sufficient\x20privileges\x20to\x20access\x20this\x20resource.','createApiKey','removeApiKey','apiKeyNonce','apiKeyIat','whoami','Unable\x20to\x20retrieve\x20the\x20current\x20user','teams','queues','isEmpty','col','toString','asc','desc','uniqBy','orderBy','Unable\x20to\x20retrieve\x20RPC\x20agents\x20(AMI)','result','Unable\x20to\x20retrieve\x20RPC\x20agents\x20(Routing)','offline','idle','unknown','voiceStatus','busy','slice','charAt','toUpperCase','QueryTypes','select','field','ui.','InteractionId','ui.createdAt','ui.UserId\x20=\x20?','bluebird','util','path','squel','jayson/promise','ioredis','../../components/auth/service','../../config/logger','api','../../config/environment','../../config/license/util','../../mysqldb','redis','./user.socket','register','defaults','client','http','request','then','info','User,\x20%s,\x20%s','request\x20sent','debug','User,\x20%s,\x20%s,\x20%s','stringify','error','code','message','catch','sendStatus','status','end','json','undefined','limit','count','offset','set','update','destroy','role','admin','Users','user','Agents','Telephones','telephone','filter','ignore','value','includes','find','name','stack','send','index','User','rawAttributes','fieldName','type','password','salt','includeAll','include','attributes','push','findAll','rows','openTabs','true','length','dataValues','fax','mail','openchannel','whatsapp','all','params','model','differenceBy','keys','query','filters','intersection','fields','merge','options','sms','body','describe','addContacts','omit','ids','internal','Setting','findById','max','isNil','min_internal','sequelize','SELECT','from','mailbox','VoiceMail','fullname','email','agent','permissions','101','102','103','113','110','105','106','107','109','111','114','115','Unauthorized.\x20You\x20must\x20be\x20an\x20administrator\x20in\x20order\x20to\x20create\x20an\x20user','Unauthorized.\x20You\x20must\x20be\x20an\x20administrator\x20in\x20order\x20to\x20create\x20another\x20administrator','userProfileId','create','autoAssociation','UserProfileResource','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','bulkCreate','some','Unauthorized.\x20You\x20must\x20be\x20an\x20administrator\x20in\x20order\x20to\x20create\x20an\x20administrator','checkUserLimits','UserProfileSection','map','changePassword','newPassword','Sequelize','ValidationError','Wrong\x20credentials','oldPassword','New\x20password\x20must\x20be\x20different\x20from\x20old\x20password','Invalid\x20body\x20format.\x20Use\x20newPassword','Unauthorized','findOne','securePassword','enforcePasswordHistory','passwordHistoryLimit','validatePasswordPattern','previousPasswords','validatePasswordHistory','addQueues','channel','online','voicePause','isValidChannel','capitalize','toLowerCase','penalty','spread','emit','voice','VoiceQueue','get','interface','format','SIP/%s','each','UserVoiceQueueRt'];(function(_0x1b5805,_0x1d1f54){var _0x4b0de6=function(_0x40de7b){while(--_0x40de7b){_0x1b5805['push'](_0x1b5805['shift']());}};_0x4b0de6(++_0x1d1f54);}(_0x7f52,0xec));var _0x27f5=function(_0x545d44,_0x405d26){_0x545d44=_0x545d44-0x0;var _0x2492d8=_0x7f52[_0x545d44];return _0x2492d8;};'use strict';var moment=require('moment');var BPromise=require(_0x27f5('0x0'));var util=require(_0x27f5('0x1'));var path=require(_0x27f5('0x2'));var fs=require('fs');var _=require('lodash');var squel=require(_0x27f5('0x3'));var jayson=require(_0x27f5('0x4'));var Redis=require(_0x27f5('0x5'));var authService=require(_0x27f5('0x6'));var qs=require('../../components/parsers/qs');var logger=require(_0x27f5('0x7'))(_0x27f5('0x8'));var utils=require('../../config/utils');var config=require(_0x27f5('0x9'));var licenseUtil=require(_0x27f5('0xa'));var db=require(_0x27f5('0xb'))['db'];var socket=require('socket.io-emitter')(new Redis(config[_0x27f5('0xc')]));require(_0x27f5('0xd'))[_0x27f5('0xe')](socket);config['redis']=_[_0x27f5('0xf')](config[_0x27f5('0xc')],{'host':'localhost','port':0x18eb});var client=jayson[_0x27f5('0x10')][_0x27f5('0x11')]({'port':0x232a});var values;function respondWithRpcPromise(_0x261a74,_0x2be02a,_0x4212e7,_0x24d9c5){return new BPromise(function(_0x115ef8,_0x1aebdb){var _0x113c83=_0x24d9c5||client;return _0x113c83[_0x27f5('0x12')](_0x261a74,_0x4212e7)[_0x27f5('0x13')](function(_0x2899cb){logger[_0x27f5('0x14')](_0x27f5('0x15'),_0x2be02a,_0x27f5('0x16'));logger[_0x27f5('0x17')](_0x27f5('0x18'),_0x2be02a,_0x27f5('0x16'),JSON[_0x27f5('0x19')](_0x2899cb));if(_0x2899cb[_0x27f5('0x1a')]){if(_0x2899cb[_0x27f5('0x1a')][_0x27f5('0x1b')]===0x1f4){logger['error']('User,\x20%s,\x20%s',_0x2be02a,_0x2899cb['error'][_0x27f5('0x1c')]);return _0x1aebdb(_0x2899cb[_0x27f5('0x1a')][_0x27f5('0x1c')]);}logger['error']('User,\x20%s,\x20%s',_0x2be02a,_0x2899cb[_0x27f5('0x1a')][_0x27f5('0x1c')]);return _0x115ef8(_0x2899cb[_0x27f5('0x1a')][_0x27f5('0x1c')]);}else{logger[_0x27f5('0x14')](_0x27f5('0x15'),_0x2be02a,_0x27f5('0x16'));_0x115ef8(_0x2899cb['result'][_0x27f5('0x1c')]);}})[_0x27f5('0x1d')](function(_0x1b0a89){logger[_0x27f5('0x1a')]('User,\x20%s,\x20%s',_0x2be02a,_0x1b0a89);_0x1aebdb(_0x1b0a89);});});}function respondWithStatusCode(_0x369b6c,_0x49165e){_0x49165e=_0x49165e||0xcc;return function(_0x22e9e3){if(_0x22e9e3){return _0x369b6c[_0x27f5('0x1e')](_0x49165e);}return _0x369b6c[_0x27f5('0x1f')](_0x49165e)[_0x27f5('0x20')]();};}function respondWithResult(_0x28f7eb,_0x2f289a){_0x2f289a=_0x2f289a||0xc8;return function(_0x28b79c){if(_0x28b79c){return _0x28f7eb['status'](_0x2f289a)[_0x27f5('0x21')](_0x28b79c);}};}function respondWithFilteredResult(_0x2746b9,_0x1ac695){return function(_0x26c054){if(_0x26c054){var _0x4b1264=typeof _0x1ac695['offset']===_0x27f5('0x22')&&typeof _0x1ac695[_0x27f5('0x23')]===_0x27f5('0x22');var _0x6457bc=_0x26c054[_0x27f5('0x24')];var _0x19ce84=_0x4b1264?0x0:_0x1ac695[_0x27f5('0x25')];var _0x1e07eb=_0x4b1264?_0x26c054[_0x27f5('0x24')]:_0x1ac695[_0x27f5('0x25')]+_0x1ac695[_0x27f5('0x23')];var _0x51a04d;if(_0x1e07eb>=_0x6457bc){_0x1e07eb=_0x6457bc;_0x51a04d=0xc8;}else{_0x51a04d=0xce;}_0x2746b9[_0x27f5('0x1f')](_0x51a04d);return _0x2746b9[_0x27f5('0x26')]('Content-Range',_0x19ce84+'-'+_0x1e07eb+'/'+_0x6457bc)['json'](_0x26c054);}return null;};}function saveUpdates(_0x57e456){return function(_0x2594e9){if(_0x2594e9){return _0x2594e9[_0x27f5('0x27')](_0x57e456)[_0x27f5('0x13')](function(_0x336d86){return _0x336d86;});}return null;};}function removeEntity(_0x58f2a2){return function(_0x7ea8d6){if(_0x7ea8d6){return _0x7ea8d6[_0x27f5('0x28')]()[_0x27f5('0x13')](function(){var _0x40fe3e=_0x7ea8d6['get']({'plain':!![]});if(_0x40fe3e[_0x27f5('0x29')]===_0x27f5('0x2a'))return;var _0x2d84c5=[{'name':_0x27f5('0x2b'),'value':_0x27f5('0x2c'),'ignore':!![]},{'name':_0x27f5('0x2d'),'value':'agent','ignore':![]},{'name':_0x27f5('0x2e'),'value':_0x27f5('0x2f'),'ignore':![]}];var _0x2a0a11=_(_0x2d84c5)[_0x27f5('0x30')](_0x27f5('0x31'))['map'](_0x27f5('0x32'))[_0x27f5('0x32')]();if(_[_0x27f5('0x33')](_0x2a0a11,_0x40fe3e[_0x27f5('0x29')])){return;}var _0x497c83=_[_0x27f5('0x34')](_0x2d84c5,[_0x27f5('0x32'),_0x40fe3e[_0x27f5('0x29')]])[_0x27f5('0x35')];return db['UserProfileResource'][_0x27f5('0x28')]({'where':{'type':_0x497c83,'resourceId':_0x40fe3e['id']}})[_0x27f5('0x13')](function(){return _0x7ea8d6;});})[_0x27f5('0x13')](function(){_0x58f2a2[_0x27f5('0x1f')](0xcc)[_0x27f5('0x20')]();});}};}function handleEntityNotFound(_0x1a55e1){return function(_0x22820e){if(!_0x22820e){_0x1a55e1[_0x27f5('0x1e')](0x194);}return _0x22820e;};}function handleError(_0x5f309e,_0x2da062){_0x2da062=_0x2da062||0x1f4;return function(_0x30e539){logger[_0x27f5('0x1a')](_0x30e539[_0x27f5('0x36')]);if(_0x30e539['name']){delete _0x30e539[_0x27f5('0x35')];}_0x5f309e['status'](_0x2da062)[_0x27f5('0x37')](_0x30e539);};}exports[_0x27f5('0x38')]=function(_0x1a87c6,_0x1ff8bf){var _0x4d7e73={},_0x2bedc3={'count':0x0,'rows':[]};var _0x1d3899=_(db[_0x27f5('0x39')][_0x27f5('0x3a')])['map'](function(_0x2fba50){return{'name':_0x2fba50[_0x27f5('0x3b')],'type':_0x2fba50[_0x27f5('0x3c')]['key']};})[_0x27f5('0x30')](function(_0x46ba55){return!_[_0x27f5('0x33')]([_0x27f5('0x3d'),_0x27f5('0x3e')],_0x46ba55['name']);})['value']();_0x4d7e73=qs['getOptions'](_0x1d3899,_0x1a87c6);var _0x5e6a1b={'where':_0x4d7e73['where']};return db[_0x27f5('0x39')][_0x27f5('0x24')](_0x5e6a1b)[_0x27f5('0x13')](function(_0x354a42){_0x2bedc3[_0x27f5('0x24')]=_0x354a42;if(_0x1a87c6['query'][_0x27f5('0x3f')]){_0x4d7e73[_0x27f5('0x40')]=[{'all':!![]}];}if(!_['includes'](_0x4d7e73[_0x27f5('0x41')],'id')){_0x4d7e73['attributes'][_0x27f5('0x42')]('id');}return db[_0x27f5('0x39')][_0x27f5('0x43')](_0x4d7e73);})[_0x27f5('0x13')](function(_0x2bc4d0){_0x2bedc3[_0x27f5('0x44')]=_0x2bc4d0;if(_0x1a87c6['query'][_0x27f5('0x45')]===_0x27f5('0x46')){var _0x1c6538=[];for(var _0x593f81=0x0;_0x593f81<_0x2bedc3[_0x27f5('0x44')][_0x27f5('0x47')];_0x593f81++){_0x1c6538[_0x27f5('0x42')](get_open_tabs('chat',_0x2bedc3['rows'][_0x593f81][_0x27f5('0x48')]));_0x1c6538[_0x27f5('0x42')](get_open_tabs('sms',_0x2bedc3[_0x27f5('0x44')][_0x593f81][_0x27f5('0x48')]));_0x1c6538[_0x27f5('0x42')](get_open_tabs(_0x27f5('0x49'),_0x2bedc3['rows'][_0x593f81][_0x27f5('0x48')]));_0x1c6538[_0x27f5('0x42')](get_open_tabs(_0x27f5('0x4a'),_0x2bedc3[_0x27f5('0x44')][_0x593f81][_0x27f5('0x48')]));_0x1c6538[_0x27f5('0x42')](get_open_tabs(_0x27f5('0x4b'),_0x2bedc3[_0x27f5('0x44')][_0x593f81]['dataValues']));_0x1c6538[_0x27f5('0x42')](get_open_tabs(_0x27f5('0x4c'),_0x2bedc3['rows'][_0x593f81][_0x27f5('0x48')]));}return BPromise[_0x27f5('0x4d')](_0x1c6538)[_0x27f5('0x13')](function(_0x35c9fe){return _0x2bedc3;});}else{return _0x2bedc3;}})[_0x27f5('0x13')](respondWithFilteredResult(_0x1ff8bf,_0x4d7e73))[_0x27f5('0x1d')](handleError(_0x1ff8bf,null));};exports['show']=function(_0x594e0e,_0x494a7e){var _0x496713={'raw':![],'where':{'id':_0x594e0e[_0x27f5('0x4e')]['id']}},_0x468a65={};_0x468a65[_0x27f5('0x4f')]=_[_0x27f5('0x50')](_[_0x27f5('0x51')](db['User'][_0x27f5('0x3a')]),[_0x27f5('0x3d'),_0x27f5('0x3e')]);_0x468a65[_0x27f5('0x52')]=_[_0x27f5('0x51')](_0x594e0e[_0x27f5('0x52')]);_0x468a65[_0x27f5('0x53')]=_['intersection'](_0x468a65[_0x27f5('0x4f')],_0x468a65[_0x27f5('0x52')]);_0x496713[_0x27f5('0x41')]=_[_0x27f5('0x54')](_0x468a65[_0x27f5('0x4f')],qs['fields'](_0x594e0e[_0x27f5('0x52')][_0x27f5('0x55')]));_0x496713[_0x27f5('0x41')]=_0x496713[_0x27f5('0x41')][_0x27f5('0x47')]?_0x496713[_0x27f5('0x41')]:_0x468a65[_0x27f5('0x4f')];if(_0x594e0e['query'][_0x27f5('0x3f')]){_0x496713[_0x27f5('0x40')]=[{'all':!![]}];}_0x496713=_[_0x27f5('0x56')]({},_0x496713,_0x594e0e[_0x27f5('0x57')]);if(!_[_0x27f5('0x33')](_0x496713[_0x27f5('0x41')],'id')){_0x496713[_0x27f5('0x41')][_0x27f5('0x42')]('id');}return db[_0x27f5('0x39')]['find'](_0x496713)[_0x27f5('0x13')](handleEntityNotFound(_0x494a7e,null))['then'](function(_0x32bba4){var _0x30461e=[];values=_0x32bba4;if(_0x594e0e[_0x27f5('0x52')]['openTabs']===_0x27f5('0x46')){_0x30461e['push'](get_open_tabs('chat',_0x32bba4[_0x27f5('0x48')]));_0x30461e['push'](get_open_tabs(_0x27f5('0x58'),_0x32bba4['dataValues']));_0x30461e[_0x27f5('0x42')](get_open_tabs(_0x27f5('0x4b'),_0x32bba4['dataValues']));_0x30461e['push'](get_open_tabs('whatsapp',_0x32bba4[_0x27f5('0x48')]));_0x30461e[_0x27f5('0x42')](get_open_tabs(_0x27f5('0x49'),_0x32bba4[_0x27f5('0x48')]));_0x30461e[_0x27f5('0x42')](get_open_tabs(_0x27f5('0x4a'),_0x32bba4['dataValues']));return BPromise[_0x27f5('0x4d')](_0x30461e);}else{return values;}})[_0x27f5('0x13')](function(_0x3a25f8){return values;})['then'](respondWithResult(_0x494a7e,null))[_0x27f5('0x1d')](handleError(_0x494a7e,null));};exports['update']=function(_0x3a8b77,_0x22ca6e){if(_0x3a8b77[_0x27f5('0x59')]['id']){delete _0x3a8b77['body']['id'];}delete _0x3a8b77['body'][_0x27f5('0x29')];return db[_0x27f5('0x39')][_0x27f5('0x34')]({'where':{'id':_0x3a8b77[_0x27f5('0x4e')]['id']}})[_0x27f5('0x13')](handleEntityNotFound(_0x22ca6e,null))[_0x27f5('0x13')](saveUpdates(_0x3a8b77['body'],null))['then'](respondWithResult(_0x22ca6e,null))[_0x27f5('0x1d')](handleError(_0x22ca6e,null));};exports[_0x27f5('0x5a')]=function(_0x11ac43,_0xd268cb){return db['User'][_0x27f5('0x5a')]()[_0x27f5('0x13')](respondWithResult(_0xd268cb,null))[_0x27f5('0x1d')](handleError(_0xd268cb,null));};exports['addContacts']=function(_0x3038c2,_0x1b6cde){return db[_0x27f5('0x39')][_0x27f5('0x34')]({'where':{'id':_0x3038c2[_0x27f5('0x4e')]['id']}})[_0x27f5('0x13')](handleEntityNotFound(_0x1b6cde,null))[_0x27f5('0x13')](function(_0x1f53d0){if(_0x1f53d0){return _0x1f53d0[_0x27f5('0x5b')](_0x3038c2[_0x27f5('0x59')]['ids'],_[_0x27f5('0x5c')](_0x3038c2['body'],[_0x27f5('0x5d'),'id'])||{});}})[_0x27f5('0x13')](respondWithResult(_0x1b6cde,null))['catch'](handleError(_0x1b6cde,null));};function validateUser(_0x5b60a1){return new BPromise(function(_0x469d78,_0x516ba3){if(_0x5b60a1[_0x27f5('0x5e')])return _0x469d78(_0x5b60a1);return db[_0x27f5('0x5f')][_0x27f5('0x60')](0x1)['then'](function(_0x559a3a){if(_0x559a3a['securePassword'])authService['validatePasswordPattern'](_0x5b60a1[_0x27f5('0x3d')]);db[_0x27f5('0x39')][_0x27f5('0x61')]('internal')['then'](function(_0x5691d3){if(_[_0x27f5('0x62')](_0x5691d3)){_0x5b60a1[_0x27f5('0x5e')]=_0x559a3a[_0x27f5('0x63')]||0x1;return;}if(_[_0x27f5('0x62')](_0x559a3a[_0x27f5('0x63')])||_0x559a3a[_0x27f5('0x63')]===_0x5691d3){_0x5b60a1[_0x27f5('0x5e')]=_0x5691d3+0x1;return;}if(_0x559a3a[_0x27f5('0x63')]>_0x5691d3){_0x5b60a1[_0x27f5('0x5e')]=_0x559a3a['min_internal'];return;}return db[_0x27f5('0x64')][_0x27f5('0x52')]('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)',{'type':db[_0x27f5('0x64')]['QueryTypes'][_0x27f5('0x65')]})[_0x27f5('0x13')](function(_0x39616b){if(_0x39616b&&_0x39616b[_0x27f5('0x47')]){for(var _0x1f2aac=0x0,_0x965c65=_0x39616b[_0x27f5('0x47')];_0x1f2aac<_0x965c65&&_[_0x27f5('0x62')](_0x5b60a1[_0x27f5('0x5e')]);_0x1f2aac++){if(_0x559a3a[_0x27f5('0x63')]<=_0x39616b[_0x1f2aac][_0x27f5('0x66')]){_0x5b60a1[_0x27f5('0x5e')]=_0x39616b[_0x1f2aac][_0x27f5('0x66')];}else if(_0x559a3a[_0x27f5('0x63')]>_0x39616b[_0x1f2aac][_0x27f5('0x66')]&&_0x559a3a['min_internal']<=_0x39616b[_0x1f2aac]['to']){_0x5b60a1['internal']=_0x559a3a['min_internal'];}}}if(_[_0x27f5('0x62')](_0x5b60a1[_0x27f5('0x5e')])){_0x5b60a1[_0x27f5('0x5e')]=_0x5691d3+0x1;}return _0x469d78(_0x5b60a1);});});})[_0x27f5('0x1d')](function(_0x1994cc){_0x516ba3(_0x1994cc);});});}function updateUser(_0x1578a1){return new BPromise(function(_0x3a3572,_0x420c2d){try{if(_0x1578a1['voicemail']){_0x1578a1[_0x27f5('0x67')]=_0x1578a1[_0x27f5('0x5e')];_0x1578a1[_0x27f5('0x68')]={'mailbox':_0x1578a1[_0x27f5('0x5e')],'password':_0x1578a1[_0x27f5('0x3d')],'fullname':_0x1578a1[_0x27f5('0x69')],'email':_0x1578a1[_0x27f5('0x6a')]};}if(_0x1578a1[_0x27f5('0x29')]===_0x27f5('0x6b')){if(!_0x1578a1[_0x27f5('0x6c')])_0x1578a1[_0x27f5('0x6c')]=[_0x27f5('0x6d'),_0x27f5('0x6e'),_0x27f5('0x6f'),_0x27f5('0x70'),_0x27f5('0x71'),'104',_0x27f5('0x72'),_0x27f5('0x73'),_0x27f5('0x74'),'108',_0x27f5('0x75'),'100',_0x27f5('0x76'),_0x27f5('0x77'),_0x27f5('0x78')];}_0x3a3572(_0x1578a1);}catch(_0xea9cf3){_0x420c2d(_0xea9cf3);}});}exports['create']=function(_0x68d68a,_0x4df84d){if(_0x68d68a[_0x27f5('0x2c')][_0x27f5('0x29')]==='agent')throw new Error('Unauthorized');if(_0x68d68a[_0x27f5('0x59')][_0x27f5('0x29')]===_0x27f5('0x2c')&&_0x68d68a[_0x27f5('0x2c')]['role']!==_0x27f5('0x2a')){throw new Error(_0x27f5('0x79'));}if(_0x68d68a['body'][_0x27f5('0x29')]===_0x27f5('0x2a')&&_0x68d68a[_0x27f5('0x2c')]['role']!==_0x27f5('0x2a')){throw new Error(_0x27f5('0x7a'));}return licenseUtil['checkUserLimits']([_0x68d68a[_0x27f5('0x59')]])[_0x27f5('0x13')](function(){return validateUser(_0x68d68a[_0x27f5('0x59')]);})[_0x27f5('0x13')](function(_0x4f844f){return updateUser(_0x4f844f)[_0x27f5('0x13')](function(_0x44b32b){if(_0x44b32b['role']===_0x27f5('0x2a')){_0x44b32b['settingsEnabled']=_0x68d68a[_0x27f5('0x2c')]['settingsEnabled'];delete _0x44b32b[_0x27f5('0x7b')];}return _0x44b32b;});})[_0x27f5('0x13')](function(_0x437108){return db[_0x27f5('0x39')][_0x27f5('0x7c')](_0x437108,{'include':[{'model':db['VoiceMail'],'as':_0x27f5('0x68')}]});})[_0x27f5('0x13')](function(_0x4f16cc){if(_0x68d68a[_0x27f5('0x59')][_0x27f5('0x29')]==='user')return _0x4f16cc;if(_0x68d68a[_0x27f5('0x2c')][_0x27f5('0x29')]!==_0x27f5('0x2c'))return _0x4f16cc;return db['UserProfileSection'][_0x27f5('0x34')]({'where':{'name':_0x4f16cc[_0x27f5('0x29')]===_0x27f5('0x6b')?_0x27f5('0x2d'):_0x27f5('0x2e'),'userProfileId':_0x68d68a['user'][_0x27f5('0x7b')]},'raw':!![]})[_0x27f5('0x13')](function(_0x4e46be){if(!_0x4e46be||_0x4e46be[_0x27f5('0x7d')]!=0x0)return _0x4f16cc;return db[_0x27f5('0x7e')]['create']({'name':_0x4f16cc['name'],'resourceId':_0x4f16cc['id'],'type':_0x4e46be[_0x27f5('0x35')],'sectionId':_0x4e46be['id']},{})['then'](function(){return _0x4f16cc;});})[_0x27f5('0x1d')](function(_0x3d93d8){logger[_0x27f5('0x1a')](_0x27f5('0x7f'),_0x3d93d8);throw _0x3d93d8;});})[_0x27f5('0x13')](respondWithResult(_0x4df84d,0xc9))[_0x27f5('0x1d')](handleError(_0x4df84d,null));};exports[_0x27f5('0x80')]=function(_0x35e771,_0x457244){var _0xf577ec=_0x35e771[_0x27f5('0x59')];var _0xf7469b=[];if(_0x35e771['user'][_0x27f5('0x29')]===_0x27f5('0x6b'))throw new Error('Unauthorized');if(_[_0x27f5('0x81')](_0xf577ec,[_0x27f5('0x29'),_0x27f5('0x2c')])&&_0x35e771[_0x27f5('0x2c')][_0x27f5('0x29')]!==_0x27f5('0x2a')){throw new Error(_0x27f5('0x79'));}if(_[_0x27f5('0x81')](_0xf577ec,['role',_0x27f5('0x2a')])&&_0x35e771[_0x27f5('0x2c')][_0x27f5('0x29')]!==_0x27f5('0x2a')){throw new Error(_0x27f5('0x82'));}return licenseUtil[_0x27f5('0x83')](_0xf577ec)[_0x27f5('0x13')](function(){return validateUser(_0xf577ec[0x0]);})[_0x27f5('0x13')](function(){for(var _0x590ea6=0x1;_0x590ea6<_0xf577ec[_0x27f5('0x47')];_0x590ea6++){var _0x33a6b6=_0xf577ec[_0x590ea6-0x1][_0x27f5('0x5e')];if(!_0xf577ec[_0x590ea6][_0x27f5('0x5e')])_0xf577ec[_0x590ea6][_0x27f5('0x5e')]=_0x33a6b6+0x1;_0xf7469b[_0x27f5('0x42')](validateUser(_0xf577ec[_0x590ea6]));}return BPromise[_0x27f5('0x4d')](_0xf7469b);})[_0x27f5('0x13')](function(){_0xf7469b=[];for(var _0x3035c0=0x0;_0x3035c0<_0xf577ec[_0x27f5('0x47')];_0x3035c0++){_0xf7469b[_0x27f5('0x42')](updateUser(_0xf577ec[_0x3035c0]));}return BPromise['all'](_0xf7469b);})['then'](function(){return BPromise['each'](_0xf577ec,function(_0x35ce3e){return db[_0x27f5('0x39')][_0x27f5('0x7c')](_0x35ce3e,{'include':[{'model':db[_0x27f5('0x68')],'as':'VoiceMail'}]})[_0x27f5('0x13')](function(_0xcbbd18){_0x35ce3e['id']=_0xcbbd18['id'];return _0x35ce3e;});});})[_0x27f5('0x13')](function(_0x14b0d5){if(_0x35e771[_0x27f5('0x59')][_0x27f5('0x29')]==='user')return _0x14b0d5;if(_0x35e771[_0x27f5('0x2c')][_0x27f5('0x29')]!==_0x27f5('0x2c'))return _0x14b0d5;var _0x4b5eb9=_[_0x27f5('0x81')](_0x14b0d5,function(_0x5f433e){return _0x5f433e[_0x27f5('0x29')]==='agent'||_0x5f433e[_0x27f5('0x29')]===_0x27f5('0x2f');});if(!_0x4b5eb9)return _0x14b0d5;return db[_0x27f5('0x84')][_0x27f5('0x43')]({'where':{'name':{'$or':[_0x27f5('0x2d'),_0x27f5('0x2e')]},'userProfileId':_0x35e771[_0x27f5('0x2c')][_0x27f5('0x7b')]},'raw':!![]})[_0x27f5('0x13')](function(_0x293977){if(_['isEmpty'](_0x293977)||!_[_0x27f5('0x81')](_0x293977,[_0x27f5('0x7d'),0x0]))return _0x14b0d5;_0xf7469b=[];var _0x46764c=_(_0x293977)[_0x27f5('0x85')](function(_0x57dbdc){if(_0x57dbdc[_0x27f5('0x7d')]===0x1)return;return _0x57dbdc[_0x27f5('0x35')]===_0x27f5('0x2d')?'agent':_0x27f5('0x2f');})['compact']()[_0x27f5('0x32')]();for(var _0x4e107f=0x0;_0x4e107f<_0x14b0d5[_0x27f5('0x47')];_0x4e107f++){if(!_['includes'](_0x46764c,_0x14b0d5[_0x4e107f][_0x27f5('0x29')]))return;var _0xa6bd0c=_0x14b0d5[_0x4e107f][_0x27f5('0x29')]===_0x27f5('0x6b')?_0x27f5('0x2d'):_0x27f5('0x2e');_0xf7469b['push'](db[_0x27f5('0x7e')]['create']({'name':_0x14b0d5[_0x4e107f][_0x27f5('0x35')],'resourceId':_0x14b0d5[_0x4e107f]['id'],'type':_0xa6bd0c,'sectionId':_[_0x27f5('0x34')](_0x293977,[_0x27f5('0x35'),_0xa6bd0c])['id']},{}));}return BPromise['all'](_0xf7469b);});})['then'](respondWithResult(_0x457244,0xc9))[_0x27f5('0x1d')](handleError(_0x457244,null));};exports[_0x27f5('0x86')]=function(_0x5bf59a,_0x4287f6){if(_0x5bf59a[_0x27f5('0x59')]['id']){delete _0x5bf59a[_0x27f5('0x59')]['id'];}return db[_0x27f5('0x39')][_0x27f5('0x34')]({'where':{'id':_0x5bf59a[_0x27f5('0x4e')]['id']}})[_0x27f5('0x13')](function(_0xa67ffe){if(!_0xa67ffe)return null;if(_0xa67ffe['id']===_0x5bf59a[_0x27f5('0x2c')]['id']){if(!_0x5bf59a[_0x27f5('0x59')]['oldPassword']||!_0x5bf59a[_0x27f5('0x59')][_0x27f5('0x87')]){throw new db[(_0x27f5('0x88'))][(_0x27f5('0x89'))]('Invalid\x20body\x20format.\x20Use\x20oldPassword\x20and\x20newPassword');}if(!_0xa67ffe['authenticate'](_0x5bf59a[_0x27f5('0x59')]['oldPassword'])){throw new db[(_0x27f5('0x88'))][(_0x27f5('0x89'))](_0x27f5('0x8a'));}if(_0x5bf59a[_0x27f5('0x59')][_0x27f5('0x8b')]===_0x5bf59a[_0x27f5('0x59')][_0x27f5('0x87')]){throw new db['Sequelize'][(_0x27f5('0x89'))](_0x27f5('0x8c'));}}else if(_0x5bf59a[_0x27f5('0x2c')][_0x27f5('0x29')]===_0x27f5('0x2a')){if(!_0x5bf59a[_0x27f5('0x59')][_0x27f5('0x87')]){throw new db[(_0x27f5('0x88'))][(_0x27f5('0x89'))](_0x27f5('0x8d'));}}else if(_0x5bf59a[_0x27f5('0x2c')]['role']===_0x27f5('0x2c')){if(!_0x5bf59a[_0x27f5('0x59')][_0x27f5('0x87')]){throw new db[(_0x27f5('0x88'))][(_0x27f5('0x89'))](_0x27f5('0x8d'));}if(_0xa67ffe[_0x27f5('0x29')]!=='agent'){throw new db[(_0x27f5('0x88'))][(_0x27f5('0x89'))]('Unauthorized');}}else{throw new db['Sequelize']['ValidationError'](_0x27f5('0x8e'));}return _0xa67ffe;})[_0x27f5('0x13')](handleEntityNotFound(_0x4287f6,null))[_0x27f5('0x13')](function(_0x4052ad){return db[_0x27f5('0x5f')][_0x27f5('0x8f')]({'attributes':['id',_0x27f5('0x90'),_0x27f5('0x91'),_0x27f5('0x92')]})[_0x27f5('0x13')](function(_0xb40a6f){if(_0xb40a6f[_0x27f5('0x90')])authService[_0x27f5('0x93')](_0x5bf59a['body']['newPassword']);if(!_0xb40a6f[_0x27f5('0x91')]||!_0x4052ad[_0x27f5('0x94')])return _0x4052ad;authService[_0x27f5('0x95')](_0x5bf59a['body']['newPassword'],_0x4052ad[_0x27f5('0x94')],_0xb40a6f[_0x27f5('0x92')]);return _0x4052ad;})[_0x27f5('0x13')](saveUpdates({'password':_0x5bf59a[_0x27f5('0x59')][_0x27f5('0x87')],'passwordResetAt':_0x5bf59a['user']['id']==_0x5bf59a[_0x27f5('0x4e')]['id']?moment():null,'previousPasswords':authService['updatePasswordsHistory'](_0x5bf59a['body'][_0x27f5('0x87')],_0x4052ad['previousPasswords'])},null));})[_0x27f5('0x13')](respondWithResult(_0x4287f6,null))['catch'](handleError(_0x4287f6,null));};exports[_0x27f5('0x96')]=function(_0x131afd,_0x439f79){var _0x248766=_0x131afd[_0x27f5('0x59')][_0x27f5('0x97')];return db[_0x27f5('0x39')][_0x27f5('0x34')]({'where':{'id':_0x131afd[_0x27f5('0x4e')]['id']},'attributes':['id','name',_0x27f5('0x29'),_0x27f5('0x98'),'loginInPause',_0x27f5('0x99'),'interface']})[_0x27f5('0x13')](handleEntityNotFound(_0x439f79,null))[_0x27f5('0x13')](function(_0x43b854){if(_0x43b854){if(!utils[_0x27f5('0x9a')](_0x248766)){throw new db[(_0x27f5('0x88'))][(_0x27f5('0x89'))]('Unknown\x20channel');}return _0x43b854['add'+_[_0x27f5('0x9b')](_0x248766[_0x27f5('0x9c')]())+'Queues'](_0x131afd['body'][_0x27f5('0x5d')],{'penalty':_0x131afd[_0x27f5('0x59')][_0x27f5('0x9d')]||0x0})[_0x27f5('0x9e')](function(_0x294807){for(var _0x11ed6d=0x0;_0x11ed6d<_0x131afd['body'][_0x27f5('0x5d')][_0x27f5('0x47')];_0x11ed6d+=0x1){var _0x3a9b51={'UserId':Number(_0x131afd[_0x27f5('0x4e')]['id'])};_0x3a9b51[_[_0x27f5('0x9b')](_0x248766[_0x27f5('0x9c')]())+'QueueId']=Number(_0x131afd[_0x27f5('0x59')][_0x27f5('0x5d')][_0x11ed6d]);socket[_0x27f5('0x9f')](_0x27f5('0x2c')+_['capitalize'](_0x248766[_0x27f5('0x9c')]())+'Queue:save',_0x3a9b51);}return _0x294807;})['then'](function(){if(_0x248766===_0x27f5('0xa0')){return db[_0x27f5('0xa1')]['findAll']({'where':{'id':_0x131afd['body']['ids']||[]},'raw':!![],'attributes':['id',_0x27f5('0x35')]});}})['then'](function(_0x259865){var _0x1ae0eb=_0x43b854[_0x27f5('0xa2')]({'plain':!![]});var _0x137653=[];if(_0x248766===_0x27f5('0xa0')&&_0x1ae0eb[_0x27f5('0x29')]==='agent'&&_0x1ae0eb[_0x27f5('0x98')]){for(var _0x143a2c=0x0;_0x143a2c<_0x259865['length'];_0x143a2c+=0x1){_0x137653[_0x27f5('0x42')]({'membername':_0x1ae0eb['name'],'UserId':_0x1ae0eb['id'],'queue_name':_0x259865[_0x143a2c][_0x27f5('0x35')],'VoiceQueueId':_0x259865[_0x143a2c]['id'],'interface':_[_0x27f5('0x62')](_0x1ae0eb[_0x27f5('0xa3')])?util[_0x27f5('0xa4')](_0x27f5('0xa5'),_0x1ae0eb[_0x27f5('0x35')]):_0x1ae0eb[_0x27f5('0xa3')],'paused':_0x1ae0eb[_0x27f5('0x99')]||![],'penalty':_0x131afd['body'][_0x27f5('0x9d')]||0x0});}return BPromise[_0x27f5('0xa6')](_0x137653,function(_0x1d22cc){return db[_0x27f5('0xa7')]['upsert'](_0x1d22cc);});}return _0x43b854;});}})[_0x27f5('0x13')](respondWithStatusCode(_0x439f79,null))[_0x27f5('0x1d')](handleError(_0x439f79,null));};exports[_0x27f5('0xa8')]=function(_0x1752ba,_0xb9eed9){var _0xe5bfde;return db[_0x27f5('0x39')]['find']({'where':{'id':_0x1752ba['params']['id']},'attributes':['id',_0x27f5('0x35'),'role']})[_0x27f5('0x13')](handleEntityNotFound(_0xb9eed9,null))[_0x27f5('0x13')](function(_0x13eb96){if(_0x13eb96){_0xe5bfde=_0x13eb96;if(!_0x1752ba[_0x27f5('0x52')]['channel']||!utils[_0x27f5('0x9a')](_0x1752ba['query']['channel'])){throw new db['Sequelize'][(_0x27f5('0x89'))](_0x27f5('0xa9'));}return _0x13eb96[_0x27f5('0xaa')+_[_0x27f5('0x9b')](_0x1752ba[_0x27f5('0x52')]['channel'][_0x27f5('0x9c')]())+_0x27f5('0xab')](_0x1752ba['query'][_0x27f5('0x5d')]);}})[_0x27f5('0x13')](function(_0xa12209){if(_[_0x27f5('0xac')](_0x1752ba['query'][_0x27f5('0x5d')])){for(var _0x2a3c3f=0x0;_0x2a3c3f<_0x1752ba['query']['ids'][_0x27f5('0x47')];_0x2a3c3f+=0x1){var _0x32a44a={'UserId':Number(_0x1752ba[_0x27f5('0x4e')]['id'])};_0x32a44a[_[_0x27f5('0x9b')](_0x1752ba[_0x27f5('0x52')][_0x27f5('0x97')][_0x27f5('0x9c')]())+_0x27f5('0xad')]=Number(_0x1752ba[_0x27f5('0x52')][_0x27f5('0x5d')][_0x2a3c3f]);socket[_0x27f5('0x9f')](_0x27f5('0x2c')+_[_0x27f5('0x9b')](_0x1752ba[_0x27f5('0x52')][_0x27f5('0x97')][_0x27f5('0x9c')]())+'Queue:remove',_0x32a44a);}}else{var _0x32a44a={'UserId':Number(_0x1752ba[_0x27f5('0x4e')]['id'])};_0x32a44a[_[_0x27f5('0x9b')](_0x1752ba[_0x27f5('0x52')]['channel']['toLowerCase']())+_0x27f5('0xad')]=Number(_0x1752ba[_0x27f5('0x52')][_0x27f5('0x5d')]);socket[_0x27f5('0x9f')](_0x27f5('0x2c')+_['capitalize'](_0x1752ba[_0x27f5('0x52')][_0x27f5('0x97')]['toLowerCase']())+_0x27f5('0xae'),_0x32a44a);}return _0xa12209;})['then'](function(){if(_0x1752ba[_0x27f5('0x52')]['channel']===_0x27f5('0xa0')){return db[_0x27f5('0xa7')][_0x27f5('0x28')]({'where':{'UserId':_0x1752ba[_0x27f5('0x4e')]['id'],'VoiceQueueId':_0x1752ba[_0x27f5('0x52')][_0x27f5('0x5d')]},'individualHooks':!![]})['then'](function(){return _0xe5bfde;});}return _0xe5bfde;})[_0x27f5('0x13')](respondWithStatusCode(_0xb9eed9,null))['catch'](handleError(_0xb9eed9,null));};exports[_0x27f5('0xaf')]=function(_0x15a725,_0x44ff3a){_0x15a725[_0x27f5('0x59')]['userpic']=_0x15a725[_0x27f5('0xb0')][_0x27f5('0xb1')];return db['User'][_0x27f5('0x34')]({'where':{'id':_0x15a725[_0x27f5('0x4e')]['id']}})[_0x27f5('0x13')](handleEntityNotFound(_0x44ff3a,null))[_0x27f5('0x13')](saveUpdates(_0x15a725['body'],null))[_0x27f5('0x13')](respondWithResult(_0x44ff3a,null))['catch'](handleError(_0x44ff3a,null));};exports[_0x27f5('0xb2')]=function(_0xc724b6,_0x30bf9e){var _0x2b5756=path[_0x27f5('0xb3')](config[_0x27f5('0xb4')],_0x27f5('0xb5'));return db[_0x27f5('0x39')][_0x27f5('0x34')]({'where':{'id':_0xc724b6[_0x27f5('0x4e')]['id']},'attributes':['id','userpic'],'raw':!![]})[_0x27f5('0x13')](handleEntityNotFound(_0x30bf9e,null))[_0x27f5('0x13')](function(_0x4ab3f4){if(_0x4ab3f4){if(_[_0x27f5('0x62')](_0x4ab3f4['userpic'])){return _0x30bf9e[_0x27f5('0xb6')](_0x2b5756);}else{if(!fs[_0x27f5('0xb7')](path[_0x27f5('0xb3')](config[_0x27f5('0xb4')],_0x27f5('0xb8'),_0x4ab3f4[_0x27f5('0xb9')]))){return _0x30bf9e[_0x27f5('0xb6')](_0x2b5756);}return _0x30bf9e['download'](path['join'](config[_0x27f5('0xb4')],_0x27f5('0xb8'),_0x4ab3f4[_0x27f5('0xb9')]));}}})[_0x27f5('0x1d')](handleError(_0x30bf9e,null));};exports[_0x27f5('0xba')]=function(_0x5ebf12,_0x17de75){return db[_0x27f5('0x39')][_0x27f5('0x34')]({'where':{'id':_0x5ebf12[_0x27f5('0x4e')]['id']},'attributes':['id']})[_0x27f5('0x13')](handleEntityNotFound(_0x17de75,null))['then'](function(_0x1f9791){var _0x2b155c=[];values=_0x1f9791[_0x27f5('0x48')];_0x2b155c[_0x27f5('0x42')](get_open_tabs(_0x27f5('0xbb'),_0x1f9791[_0x27f5('0x48')]));_0x2b155c[_0x27f5('0x42')](get_open_tabs(_0x27f5('0x58'),_0x1f9791[_0x27f5('0x48')]));_0x2b155c[_0x27f5('0x42')](get_open_tabs(_0x27f5('0x4b'),_0x1f9791[_0x27f5('0x48')]));_0x2b155c['push'](get_open_tabs('whatsapp',_0x1f9791['dataValues']));_0x2b155c[_0x27f5('0x42')](get_open_tabs(_0x27f5('0x49'),_0x1f9791[_0x27f5('0x48')]));_0x2b155c['push'](get_open_tabs(_0x27f5('0x4a'),_0x1f9791[_0x27f5('0x48')]));return BPromise[_0x27f5('0x4d')](_0x2b155c);})[_0x27f5('0x13')](function(_0x12d3e7){var _0x181c6b=[];if(_0x12d3e7){for(var _0x23fa3d=0x0;_0x23fa3d<values['ChatOpenTabs'][_0x27f5('0x47')];_0x23fa3d++){var _0x77dbf7=values[_0x27f5('0xbc')][_0x23fa3d];_0x181c6b[_0x27f5('0x42')]({'channel':_0x27f5('0xbd'),'id':_0x77dbf7['id'],'createdAt':_0x77dbf7['createdAt']});}for(var _0x23fa3d=0x0;_0x23fa3d<values[_0x27f5('0xbe')][_0x27f5('0x47')];_0x23fa3d++){var _0x77dbf7=values[_0x27f5('0xbe')][_0x23fa3d];_0x181c6b[_0x27f5('0x42')]({'channel':_0x27f5('0xbf'),'id':_0x77dbf7['id'],'createdAt':_0x77dbf7[_0x27f5('0xc0')]});}for(var _0x23fa3d=0x0;_0x23fa3d<values[_0x27f5('0xc1')][_0x27f5('0x47')];_0x23fa3d++){var _0x77dbf7=values['OpenchannelOpenTabs'][_0x23fa3d];_0x181c6b[_0x27f5('0x42')]({'channel':_0x27f5('0xc2'),'id':_0x77dbf7['id'],'createdAt':_0x77dbf7['createdAt']});}for(var _0x23fa3d=0x0;_0x23fa3d<values[_0x27f5('0xc3')][_0x27f5('0x47')];_0x23fa3d++){var _0x77dbf7=values['MailOpenTabs'][_0x23fa3d];_0x181c6b[_0x27f5('0x42')]({'channel':_0x27f5('0xc4'),'id':_0x77dbf7['id'],'createdAt':_0x77dbf7[_0x27f5('0xc0')]});}for(var _0x23fa3d=0x0;_0x23fa3d<values[_0x27f5('0xc5')][_0x27f5('0x47')];_0x23fa3d++){var _0x77dbf7=values['SmsOpenTabs'][_0x23fa3d];_0x181c6b['push']({'channel':_0x27f5('0xc6'),'id':_0x77dbf7['id'],'createdAt':_0x77dbf7[_0x27f5('0xc0')]});}for(var _0x23fa3d=0x0;_0x23fa3d<values['WhatsappOpenTabs'][_0x27f5('0x47')];_0x23fa3d++){var _0x77dbf7=values[_0x27f5('0xc7')][_0x23fa3d];_0x181c6b[_0x27f5('0x42')]({'channel':_0x27f5('0xc8'),'id':_0x77dbf7['id'],'createdAt':_0x77dbf7[_0x27f5('0xc0')]});}var _0x3a083a={'count':_0x181c6b[_0x27f5('0x47')],'rows':_0x181c6b};return _0x3a083a;}else return null;})[_0x27f5('0x13')](respondWithResult(_0x17de75,null))[_0x27f5('0x1d')](handleError(_0x17de75,null));};exports[_0x27f5('0xc9')]=function(_0x16f30e,_0xe94a3e){var _0x309d64={};var _0x39652a={};var _0xe4acd8;var _0x13bf20;return db['User']['findOne']({'where':{'id':_0x16f30e[_0x27f5('0x4e')]['id']}})[_0x27f5('0x13')](handleEntityNotFound(_0xe94a3e,null))[_0x27f5('0x13')](function(_0x1a2c96){if(_0x1a2c96){_0xe4acd8=_0x1a2c96;_0x39652a[_0x27f5('0x4f')]=_[_0x27f5('0x51')](db[_0x27f5('0xca')][_0x27f5('0x3a')]);_0x39652a[_0x27f5('0x52')]=_['keys'](_0x16f30e[_0x27f5('0x52')]);_0x39652a[_0x27f5('0x53')]=_[_0x27f5('0x54')](_0x39652a[_0x27f5('0x4f')],_0x39652a[_0x27f5('0x52')]);_0x309d64[_0x27f5('0x41')]=_[_0x27f5('0x54')](_0x39652a[_0x27f5('0x4f')],qs[_0x27f5('0x55')](_0x16f30e['query']['fields']));_0x309d64[_0x27f5('0x41')]=_0x309d64['attributes']['length']?_0x309d64['attributes']:_0x39652a[_0x27f5('0x4f')];_0x309d64[_0x27f5('0xcb')]=qs['sort'](_0x16f30e[_0x27f5('0x52')][_0x27f5('0xcc')]);_0x309d64['where']=qs['filters'](_['pick'](_0x16f30e[_0x27f5('0x52')],_0x39652a[_0x27f5('0x53')]));if(_0x16f30e[_0x27f5('0x52')][_0x27f5('0x30')]){_0x309d64['where']=_['merge'](_0x309d64[_0x27f5('0xcd')],{'$or':_[_0x27f5('0x85')](_0x309d64['attributes'],function(_0x4eb165){var _0x3cf0f5={};_0x3cf0f5[_0x4eb165]={'$like':'%'+_0x16f30e[_0x27f5('0x52')]['filter']+'%'};return _0x3cf0f5;})});}_0x309d64=_[_0x27f5('0x56')]({},_0x309d64,_0x16f30e['options']);return _0xe4acd8[_0x27f5('0xc9')](_0x309d64);}})[_0x27f5('0x13')](function(_0x537585){if(_0x537585){_0x13bf20=_0x537585['length'];if(_0x16f30e[_0x27f5('0x52')][_0x27f5('0xce')](_0x27f5('0x3f'))){_0x309d64[_0x27f5('0x40')]=[{'model':db[_0x27f5('0xcf')],'as':_0x27f5('0xd0'),'required':![]},{'model':db[_0x27f5('0xd1')],'as':_0x27f5('0xd2'),'attributes':['id',_0x27f5('0x35'),_0x27f5('0xd3')],'where':_0x16f30e['query'][_0x27f5('0xd4')]?{'id':_0x16f30e['query'][_0x27f5('0xd4')]}:undefined,'required':_0x16f30e[_0x27f5('0x52')][_0x27f5('0xd4')]?!![]:![]}];}if(!_0x16f30e[_0x27f5('0x52')][_0x27f5('0xce')](_0x27f5('0xd5'))){_0x309d64[_0x27f5('0x23')]=qs[_0x27f5('0x23')](_0x16f30e['query'][_0x27f5('0x23')]);_0x309d64[_0x27f5('0x25')]=qs[_0x27f5('0x25')](_0x16f30e[_0x27f5('0x52')][_0x27f5('0x25')]);}return _0xe4acd8['getContacts'](_0x309d64);}})[_0x27f5('0x13')](function(_0x4bb2c5){if(_0x4bb2c5){return _0x4bb2c5?{'count':_0x13bf20,'rows':_0x4bb2c5}:null;}})[_0x27f5('0x13')](respondWithResult(_0xe94a3e,null))[_0x27f5('0x1d')](handleError(_0xe94a3e,null));};exports['getQueues']=function(_0x303f7c,_0x3aa89f){var _0x7ed079;var _0x6234d5;var _0x36676d={};var _0x206047;return db['User'][_0x27f5('0x8f')]({'where':{'id':_0x303f7c['params']['id']},'attributes':['id',_0x27f5('0x35'),_0x27f5('0x29')]})['then'](handleEntityNotFound(_0x3aa89f,null))['then'](function(_0x2332f8){if(!utils[_0x27f5('0x9a')](_0x303f7c['query'][_0x27f5('0x97')])){throw new db['Sequelize'][(_0x27f5('0x89'))](_0x27f5('0xa9'));}_0x7ed079=_0x2332f8;var _0x27c10b={};_0x27c10b[_0x27f5('0x4f')]=_['keys'](db[_[_0x27f5('0x9b')](_0x303f7c['query'][_0x27f5('0x97')])+_0x27f5('0xd6')][_0x27f5('0x3a')]);_0x27c10b[_0x27f5('0x52')]=_[_0x27f5('0x51')](_0x303f7c['query']);_0x27c10b[_0x27f5('0x53')]=_[_0x27f5('0x54')](_0x27c10b[_0x27f5('0x4f')],_0x27c10b[_0x27f5('0x52')]);_0x36676d[_0x27f5('0x41')]=_['intersection'](_0x27c10b[_0x27f5('0x4f')],qs['fields'](_0x303f7c[_0x27f5('0x52')][_0x27f5('0x55')]));_0x36676d['attributes']=_0x36676d[_0x27f5('0x41')]['length']?_0x36676d['attributes']:_0x27c10b[_0x27f5('0x4f')];_0x36676d[_0x27f5('0xcb')]=qs['sort'](_0x303f7c[_0x27f5('0x52')][_0x27f5('0xcc')]);_0x36676d['where']=qs[_0x27f5('0x53')](_[_0x27f5('0xd7')](_0x303f7c[_0x27f5('0x52')],_0x27c10b['filters']));if(_0x303f7c[_0x27f5('0x52')]['filter']){_0x36676d[_0x27f5('0xcd')]=_[_0x27f5('0x56')](_0x36676d[_0x27f5('0xcd')],{'$or':_['map'](_0x36676d[_0x27f5('0x41')],function(_0x112c85){var _0x1233d1={};_0x1233d1[_0x112c85]={'$like':'%'+_0x303f7c[_0x27f5('0x52')]['filter']+'%'};return _0x1233d1;})});}_0x36676d=_['merge']({},_0x36676d,_0x303f7c[_0x27f5('0x57')]);switch(_0x7ed079['role']){case _0x27f5('0x2a'):return db[_[_0x27f5('0x9b')](_0x303f7c['query']['channel'])+_0x27f5('0xd6')]['findAll'](_0x36676d);case _0x27f5('0x2c'):case _0x27f5('0x6b'):return _0x7ed079['get'+_[_0x27f5('0x9b')](_0x303f7c['query'][_0x27f5('0x97')])+_0x27f5('0xab')](_0x36676d);default:throw new db[(_0x27f5('0x88'))]['ValidationError']('Unknown\x20role');}})[_0x27f5('0x13')](function(_0x4aefb4){_0x206047=_0x4aefb4[_0x27f5('0x47')];if(!_0x303f7c[_0x27f5('0x52')]['hasOwnProperty'](_0x27f5('0xd5'))){_0x36676d['limit']=qs[_0x27f5('0x23')](_0x303f7c[_0x27f5('0x52')][_0x27f5('0x23')]);_0x36676d['offset']=qs[_0x27f5('0x25')](_0x303f7c[_0x27f5('0x52')][_0x27f5('0x25')]);}switch(_0x7ed079[_0x27f5('0x29')]){case _0x27f5('0x2a'):return db[_['capitalize'](_0x303f7c[_0x27f5('0x52')][_0x27f5('0x97')])+_0x27f5('0xd6')]['findAll'](_0x36676d);case _0x27f5('0x2c'):case _0x27f5('0x6b'):return _0x7ed079['get'+_['capitalize'](_0x303f7c['query'][_0x27f5('0x97')])+_0x27f5('0xab')](_0x36676d);}})[_0x27f5('0x13')](function(_0x1b6e03){return{'count':_0x206047,'rows':_0x1b6e03};})[_0x27f5('0x13')](respondWithResult(_0x3aa89f,null))[_0x27f5('0x1d')](handleError(_0x3aa89f,null));};exports[_0x27f5('0xd8')]=function(_0x483a1c,_0x1060a4){var _0xca8033={};var _0x2c4214={};var _0x5f0651;var _0x4f4846;return db[_0x27f5('0x39')][_0x27f5('0x8f')]({'where':{'id':_0x483a1c[_0x27f5('0x4e')]['id']}})['then'](handleEntityNotFound(_0x1060a4,null))['then'](function(_0x2be3e4){if(_0x2be3e4){_0x5f0651=_0x2be3e4;_0x2c4214[_0x27f5('0x4f')]=_['keys'](db[_0x27f5('0xa7')][_0x27f5('0x3a')]);_0x2c4214[_0x27f5('0x52')]=_[_0x27f5('0x51')](_0x483a1c[_0x27f5('0x52')]);_0x2c4214[_0x27f5('0x53')]=_[_0x27f5('0x54')](_0x2c4214[_0x27f5('0x4f')],_0x2c4214[_0x27f5('0x52')]);_0xca8033[_0x27f5('0x41')]=_[_0x27f5('0x54')](_0x2c4214[_0x27f5('0x4f')],qs['fields'](_0x483a1c['query']['fields']));_0xca8033[_0x27f5('0x41')]=_0xca8033[_0x27f5('0x41')][_0x27f5('0x47')]?_0xca8033[_0x27f5('0x41')]:_0x2c4214[_0x27f5('0x4f')];_0xca8033[_0x27f5('0xcb')]=qs[_0x27f5('0xcc')](_0x483a1c[_0x27f5('0x52')][_0x27f5('0xcc')]);_0xca8033[_0x27f5('0xcd')]=qs[_0x27f5('0x53')](_[_0x27f5('0xd7')](_0x483a1c[_0x27f5('0x52')],_0x2c4214[_0x27f5('0x53')]));if(_0x483a1c[_0x27f5('0x52')][_0x27f5('0x30')]){_0xca8033['where']=_['merge'](_0xca8033[_0x27f5('0xcd')],{'$or':_[_0x27f5('0x85')](_0xca8033[_0x27f5('0x41')],function(_0xac839e){var _0x24a54c={};_0x24a54c[_0xac839e]={'$like':'%'+_0x483a1c[_0x27f5('0x52')][_0x27f5('0x30')]+'%'};return _0x24a54c;})});}_0xca8033=_[_0x27f5('0x56')]({},_0xca8033,_0x483a1c[_0x27f5('0x57')]);return _0x5f0651[_0x27f5('0xd8')](_0xca8033);}})[_0x27f5('0x13')](function(_0x30fb12){if(_0x30fb12){_0x4f4846=_0x30fb12[_0x27f5('0x47')];if(!_0x483a1c[_0x27f5('0x52')]['hasOwnProperty']('nolimit')){_0xca8033[_0x27f5('0x23')]=qs[_0x27f5('0x23')](_0x483a1c['query'][_0x27f5('0x23')]);_0xca8033[_0x27f5('0x25')]=qs[_0x27f5('0x25')](_0x483a1c[_0x27f5('0x52')]['offset']);}return _0x5f0651['getVoiceQueuesRt'](_0xca8033);}})[_0x27f5('0x13')](function(_0x436f43){if(_0x436f43){return _0x436f43?{'count':_0x4f4846,'rows':_0x436f43}:null;}})[_0x27f5('0x13')](respondWithResult(_0x1060a4,null))[_0x27f5('0x1d')](handleError(_0x1060a4,null));};exports['getGroups']=function(_0x1d38f6,_0x1e377b){var _0x207985={};var _0x2bee69={};var _0x4c4fd9;var _0x1fcb6e;return db[_0x27f5('0x39')][_0x27f5('0x8f')]({'where':{'id':_0x1d38f6[_0x27f5('0x4e')]['id']}})[_0x27f5('0x13')](handleEntityNotFound(_0x1e377b,null))[_0x27f5('0x13')](function(_0x219942){if(_0x219942){_0x4c4fd9=_0x219942;_0x2bee69[_0x27f5('0x4f')]=_[_0x27f5('0x51')](db['ChatGroup'][_0x27f5('0x3a')]);_0x2bee69['query']=_[_0x27f5('0x51')](_0x1d38f6[_0x27f5('0x52')]);_0x2bee69[_0x27f5('0x53')]=_[_0x27f5('0x54')](_0x2bee69[_0x27f5('0x4f')],_0x2bee69[_0x27f5('0x52')]);_0x207985[_0x27f5('0x41')]=_[_0x27f5('0x54')](_0x2bee69[_0x27f5('0x4f')],qs[_0x27f5('0x55')](_0x1d38f6[_0x27f5('0x52')][_0x27f5('0x55')]));_0x207985[_0x27f5('0x41')]=_0x207985[_0x27f5('0x41')]['length']?_0x207985[_0x27f5('0x41')]:_0x2bee69[_0x27f5('0x4f')];_0x207985['order']=qs[_0x27f5('0xcc')](_0x1d38f6[_0x27f5('0x52')][_0x27f5('0xcc')]);_0x207985[_0x27f5('0xcd')]=qs['filters'](_[_0x27f5('0xd7')](_0x1d38f6[_0x27f5('0x52')],_0x2bee69[_0x27f5('0x53')]));if(_0x1d38f6[_0x27f5('0x52')]['filter']){_0x207985['where']=_[_0x27f5('0x56')](_0x207985['where'],{'$or':_[_0x27f5('0x85')](_0x207985[_0x27f5('0x41')],function(_0xbcdd51){var _0x3196e6={};_0x3196e6[_0xbcdd51]={'$like':'%'+_0x1d38f6['query']['filter']+'%'};return _0x3196e6;})});}_0x207985=_[_0x27f5('0x56')]({},_0x207985,_0x1d38f6[_0x27f5('0x57')]);return _0x4c4fd9[_0x27f5('0xd9')](_0x207985);}})[_0x27f5('0x13')](function(_0xe83a5d){if(_0xe83a5d){_0x1fcb6e=_0xe83a5d[_0x27f5('0x47')];if(!_0x1d38f6[_0x27f5('0x52')][_0x27f5('0xce')](_0x27f5('0xd5'))){_0x207985[_0x27f5('0x23')]=qs[_0x27f5('0x23')](_0x1d38f6['query']['limit']);_0x207985[_0x27f5('0x25')]=qs['offset'](_0x1d38f6[_0x27f5('0x52')][_0x27f5('0x25')]);}return _0x4c4fd9['getGroups'](_0x207985);}})[_0x27f5('0x13')](function(_0x59a82b){if(_0x59a82b){return _0x59a82b?{'count':_0x1fcb6e,'rows':_0x59a82b}:null;}})[_0x27f5('0x13')](respondWithResult(_0x1e377b,null))[_0x27f5('0x1d')](handleError(_0x1e377b,null));};exports[_0x27f5('0xda')]=function(_0x817518,_0x169711){var _0x4e2d63={'raw':!![],'where':{}};var _0x136495={};var _0x54c110={'count':0x0,'rows':[]};return db[_0x27f5('0x39')][_0x27f5('0x8f')]({'where':{'id':_0x817518[_0x27f5('0x4e')]['id']}})['then'](handleEntityNotFound(_0x169711,null))[_0x27f5('0x13')](function(_0x4ac5ab){if(_0x4ac5ab){_0x136495[_0x27f5('0x4f')]=_[_0x27f5('0x51')](db[_0x27f5('0xdb')][_0x27f5('0x3a')]);_0x136495['query']=_[_0x27f5('0x51')](_0x817518[_0x27f5('0x52')]);_0x136495[_0x27f5('0x53')]=_[_0x27f5('0x54')](_0x136495[_0x27f5('0x4f')],_0x136495['query']);_0x4e2d63[_0x27f5('0x41')]=_[_0x27f5('0x54')](_0x136495[_0x27f5('0x4f')],qs[_0x27f5('0x55')](_0x817518[_0x27f5('0x52')]['fields']));_0x4e2d63[_0x27f5('0x41')]=_0x4e2d63[_0x27f5('0x41')]['length']?_0x4e2d63[_0x27f5('0x41')]:_0x136495[_0x27f5('0x4f')];if(!_0x817518['query'][_0x27f5('0xce')](_0x27f5('0xd5'))){_0x4e2d63['limit']=qs[_0x27f5('0x23')](_0x817518['query'][_0x27f5('0x23')]);_0x4e2d63[_0x27f5('0x25')]=qs['offset'](_0x817518['query'][_0x27f5('0x25')]);}_0x4e2d63[_0x27f5('0xcb')]=qs[_0x27f5('0xcc')](_0x817518[_0x27f5('0x52')][_0x27f5('0xcc')]);_0x4e2d63['where']=qs[_0x27f5('0x53')](_[_0x27f5('0xd7')](_0x817518[_0x27f5('0x52')],_0x136495[_0x27f5('0x53')]));_0x4e2d63[_0x27f5('0xcd')][_0x27f5('0xdc')]=_0x4ac5ab['id'];if(_0x817518[_0x27f5('0x52')][_0x27f5('0x30')]){_0x4e2d63['where']=_['merge'](_0x4e2d63['where'],{'$or':_[_0x27f5('0x85')](_0x4e2d63[_0x27f5('0x41')],function(_0x53c71c){var _0x230594={};_0x230594[_0x53c71c]={'$like':'%'+_0x817518[_0x27f5('0x52')][_0x27f5('0x30')]+'%'};return _0x230594;})});}_0x4e2d63=_[_0x27f5('0x56')]({},_0x4e2d63,_0x817518['options']);return db['VoiceRecording'][_0x27f5('0x24')]({'where':_0x4e2d63[_0x27f5('0xcd')]})[_0x27f5('0x13')](function(_0x28c9f5){_0x54c110[_0x27f5('0x24')]=_0x28c9f5;if(_0x817518['query'][_0x27f5('0x3f')]){_0x4e2d63[_0x27f5('0x40')]=[{'all':!![]}];}return db['VoiceRecording'][_0x27f5('0x43')](_0x4e2d63);})[_0x27f5('0x13')](function(_0x1f2d42){_0x54c110['rows']=_0x1f2d42;return _0x54c110;});}})[_0x27f5('0x13')](respondWithFilteredResult(_0x169711,_0x4e2d63))['catch'](handleError(_0x169711,null));};exports['getScreenRecordings']=function(_0x546809,_0x4463e7){var _0x5d4797={'raw':!![],'where':{}};var _0x563e32={};var _0x24f77d={'count':0x0,'rows':[]};return db[_0x27f5('0x39')][_0x27f5('0x8f')]({'where':{'id':_0x546809[_0x27f5('0x4e')]['id']}})[_0x27f5('0x13')](handleEntityNotFound(_0x4463e7,null))[_0x27f5('0x13')](function(_0x27b14e){if(_0x27b14e){_0x563e32[_0x27f5('0x4f')]=_[_0x27f5('0x51')](db[_0x27f5('0xdd')][_0x27f5('0x3a')]);_0x563e32[_0x27f5('0x52')]=_[_0x27f5('0x51')](_0x546809['query']);_0x563e32['filters']=_['intersection'](_0x563e32['model'],_0x563e32[_0x27f5('0x52')]);_0x5d4797[_0x27f5('0x41')]=_[_0x27f5('0x54')](_0x563e32[_0x27f5('0x4f')],qs[_0x27f5('0x55')](_0x546809[_0x27f5('0x52')]['fields']));_0x5d4797[_0x27f5('0x41')]=_0x5d4797[_0x27f5('0x41')][_0x27f5('0x47')]?_0x5d4797[_0x27f5('0x41')]:_0x563e32[_0x27f5('0x4f')];if(!_0x546809[_0x27f5('0x52')][_0x27f5('0xce')]('nolimit')){_0x5d4797[_0x27f5('0x23')]=qs[_0x27f5('0x23')](_0x546809['query'][_0x27f5('0x23')]);_0x5d4797[_0x27f5('0x25')]=qs[_0x27f5('0x25')](_0x546809[_0x27f5('0x52')][_0x27f5('0x25')]);}_0x5d4797[_0x27f5('0xcb')]=qs[_0x27f5('0xcc')](_0x546809[_0x27f5('0x52')][_0x27f5('0xcc')]);_0x5d4797['where']=qs[_0x27f5('0x53')](_[_0x27f5('0xd7')](_0x546809[_0x27f5('0x52')],_0x563e32['filters']));_0x5d4797[_0x27f5('0xcd')]['UserId']=_0x27b14e['id'];if(_0x546809[_0x27f5('0x52')][_0x27f5('0x30')]){_0x5d4797[_0x27f5('0xcd')]=_[_0x27f5('0x56')](_0x5d4797['where'],{'$or':_[_0x27f5('0x85')](_0x5d4797[_0x27f5('0x41')],function(_0x39b90e){var _0x2c49f7={};_0x2c49f7[_0x39b90e]={'$like':'%'+_0x546809[_0x27f5('0x52')][_0x27f5('0x30')]+'%'};return _0x2c49f7;})});}_0x5d4797=_[_0x27f5('0x56')]({},_0x5d4797,_0x546809[_0x27f5('0x57')]);return db[_0x27f5('0xdd')][_0x27f5('0x24')]({'where':_0x5d4797[_0x27f5('0xcd')]})[_0x27f5('0x13')](function(_0x2a1455){_0x24f77d[_0x27f5('0x24')]=_0x2a1455;if(_0x546809[_0x27f5('0x52')][_0x27f5('0x3f')]){_0x5d4797[_0x27f5('0x40')]=[{'all':!![]}];}return db['ScreenRecording'][_0x27f5('0x43')](_0x5d4797);})[_0x27f5('0x13')](function(_0xc774b2){_0x24f77d[_0x27f5('0x44')]=_0xc774b2;return _0x24f77d;});}})[_0x27f5('0x13')](respondWithFilteredResult(_0x4463e7,_0x5d4797))[_0x27f5('0x1d')](handleError(_0x4463e7,null));};exports[_0x27f5('0xde')]=function(_0x5818d1,_0x4be442){var _0x1d5853={};var _0x81cdbf={};var _0x12256e;var _0x266772;return db[_0x27f5('0x39')][_0x27f5('0x8f')]({'where':{'id':_0x5818d1[_0x27f5('0x4e')]['id']}})[_0x27f5('0x13')](handleEntityNotFound(_0x4be442,null))['then'](function(_0x14a259){if(_0x14a259){_0x12256e=_0x14a259;_0x81cdbf[_0x27f5('0x4f')]=_[_0x27f5('0x51')](db[_0x27f5('0xdf')]['rawAttributes']);_0x81cdbf[_0x27f5('0x52')]=_['keys'](_0x5818d1['query']);_0x81cdbf['filters']=_['intersection'](_0x81cdbf[_0x27f5('0x4f')],_0x81cdbf[_0x27f5('0x52')]);_0x1d5853['attributes']=_['intersection'](_0x81cdbf['model'],qs[_0x27f5('0x55')](_0x5818d1[_0x27f5('0x52')][_0x27f5('0x55')]));_0x1d5853[_0x27f5('0x41')]=_0x1d5853[_0x27f5('0x41')][_0x27f5('0x47')]?_0x1d5853[_0x27f5('0x41')]:_0x81cdbf[_0x27f5('0x4f')];_0x1d5853['order']=qs[_0x27f5('0xcc')](_0x5818d1[_0x27f5('0x52')][_0x27f5('0xcc')]);_0x1d5853['where']=qs[_0x27f5('0x53')](_['pick'](_0x5818d1[_0x27f5('0x52')],_0x81cdbf[_0x27f5('0x53')]));if(_0x5818d1[_0x27f5('0x52')][_0x27f5('0x30')]){_0x1d5853[_0x27f5('0xcd')]=_['merge'](_0x1d5853[_0x27f5('0xcd')],{'$or':_[_0x27f5('0x85')](_0x1d5853[_0x27f5('0x41')],function(_0x245c20){var _0x226649={};_0x226649[_0x245c20]={'$like':'%'+_0x5818d1[_0x27f5('0x52')][_0x27f5('0x30')]+'%'};return _0x226649;})});}_0x1d5853=_[_0x27f5('0x56')]({},_0x1d5853,_0x5818d1['options']);return _0x12256e[_0x27f5('0xde')](_0x1d5853);}})[_0x27f5('0x13')](function(_0x32c942){if(_0x32c942){_0x266772=_0x32c942['length'];if(!_0x5818d1[_0x27f5('0x52')][_0x27f5('0xce')]('nolimit')){_0x1d5853[_0x27f5('0x23')]=qs[_0x27f5('0x23')](_0x5818d1[_0x27f5('0x52')][_0x27f5('0x23')]);_0x1d5853[_0x27f5('0x25')]=qs[_0x27f5('0x25')](_0x5818d1[_0x27f5('0x52')]['offset']);}return _0x12256e[_0x27f5('0xde')](_0x1d5853);}})[_0x27f5('0x13')](function(_0x54e6b2){if(_0x54e6b2){return _0x54e6b2?{'count':_0x266772,'rows':_0x54e6b2}:null;}})[_0x27f5('0x13')](respondWithResult(_0x4be442,null))[_0x27f5('0x1d')](handleError(_0x4be442,null));};exports[_0x27f5('0xe0')]=function(_0x4323ab,_0x33f268){var _0x4cf884={};var _0x5f385f={};var _0x379050;var _0x538bf5;return db['User']['findOne']({'where':{'id':_0x4323ab[_0x27f5('0x4e')]['id']}})['then'](handleEntityNotFound(_0x33f268,null))['then'](function(_0x4e2890){if(_0x4e2890){_0x379050=_0x4e2890;_0x5f385f[_0x27f5('0x4f')]=_[_0x27f5('0x51')](db[_0x27f5('0xe1')][_0x27f5('0x3a')]);_0x5f385f['query']=_['keys'](_0x4323ab[_0x27f5('0x52')]);_0x5f385f[_0x27f5('0x53')]=_[_0x27f5('0x54')](_0x5f385f[_0x27f5('0x4f')],_0x5f385f[_0x27f5('0x52')]);_0x4cf884[_0x27f5('0x41')]=_[_0x27f5('0x54')](_0x5f385f[_0x27f5('0x4f')],qs[_0x27f5('0x55')](_0x4323ab[_0x27f5('0x52')][_0x27f5('0x55')]));_0x4cf884[_0x27f5('0x41')]=_0x4cf884[_0x27f5('0x41')][_0x27f5('0x47')]?_0x4cf884['attributes']:_0x5f385f[_0x27f5('0x4f')];_0x4cf884[_0x27f5('0xcb')]=qs[_0x27f5('0xcc')](_0x4323ab[_0x27f5('0x52')][_0x27f5('0xcc')]);_0x4cf884['where']=qs[_0x27f5('0x53')](_['pick'](_0x4323ab[_0x27f5('0x52')],_0x5f385f[_0x27f5('0x53')]));if(_0x4323ab[_0x27f5('0x52')][_0x27f5('0x30')]){_0x4cf884[_0x27f5('0xcd')]=_[_0x27f5('0x56')](_0x4cf884[_0x27f5('0xcd')],{'$or':_[_0x27f5('0x85')](_0x4cf884[_0x27f5('0x41')],function(_0x3f24f6){var _0x1f0aea={};_0x1f0aea[_0x3f24f6]={'$like':'%'+_0x4323ab[_0x27f5('0x52')]['filter']+'%'};return _0x1f0aea;})});}_0x4cf884=_[_0x27f5('0x56')]({},_0x4cf884,_0x4323ab[_0x27f5('0x57')]);return _0x379050[_0x27f5('0xe0')](_0x4cf884);}})[_0x27f5('0x13')](function(_0x2040b4){if(_0x2040b4){_0x538bf5=_0x2040b4['length'];if(!_0x4323ab['query'][_0x27f5('0xce')](_0x27f5('0xd5'))){_0x4cf884[_0x27f5('0x23')]=qs['limit'](_0x4323ab['query'][_0x27f5('0x23')]);_0x4cf884[_0x27f5('0x25')]=qs[_0x27f5('0x25')](_0x4323ab[_0x27f5('0x52')][_0x27f5('0x25')]);}return _0x379050[_0x27f5('0xe0')](_0x4cf884);}})[_0x27f5('0x13')](function(_0x2affa5){if(_0x2affa5){return _0x2affa5?{'count':_0x538bf5,'rows':_0x2affa5}:null;}})['then'](respondWithResult(_0x33f268,null))[_0x27f5('0x1d')](handleError(_0x33f268,null));};exports['getMailInteractions']=function(_0x21e6af,_0x920965){var _0x24d8c9={'raw':!![],'where':{}};var _0x4d09f2={};var _0xb74e07={'count':0x0,'rows':[]};return db[_0x27f5('0x39')]['findOne']({'where':{'id':_0x21e6af[_0x27f5('0x4e')]['id']}})[_0x27f5('0x13')](handleEntityNotFound(_0x920965,null))['then'](function(_0x2b753a){if(_0x2b753a){_0x4d09f2[_0x27f5('0x4f')]=_[_0x27f5('0x51')](db['MailInteraction'][_0x27f5('0x3a')]);_0x4d09f2[_0x27f5('0x52')]=_[_0x27f5('0x51')](_0x21e6af[_0x27f5('0x52')]);_0x4d09f2['filters']=_[_0x27f5('0x54')](_0x4d09f2['model'],_0x4d09f2[_0x27f5('0x52')]);_0x24d8c9['attributes']=_[_0x27f5('0x54')](_0x4d09f2[_0x27f5('0x4f')],qs[_0x27f5('0x55')](_0x21e6af[_0x27f5('0x52')][_0x27f5('0x55')]));_0x24d8c9[_0x27f5('0x41')]=_0x24d8c9[_0x27f5('0x41')][_0x27f5('0x47')]?_0x24d8c9[_0x27f5('0x41')]:_0x4d09f2['model'];if(!_0x21e6af[_0x27f5('0x52')][_0x27f5('0xce')](_0x27f5('0xd5'))){_0x24d8c9['limit']=qs[_0x27f5('0x23')](_0x21e6af[_0x27f5('0x52')]['limit']);_0x24d8c9[_0x27f5('0x25')]=qs[_0x27f5('0x25')](_0x21e6af[_0x27f5('0x52')][_0x27f5('0x25')]);}_0x24d8c9[_0x27f5('0xcb')]=qs[_0x27f5('0xcc')](_0x21e6af[_0x27f5('0x52')]['sort']);_0x24d8c9[_0x27f5('0xcd')]=qs[_0x27f5('0x53')](_[_0x27f5('0xd7')](_0x21e6af[_0x27f5('0x52')],_0x4d09f2[_0x27f5('0x53')]));_0x24d8c9['where'][_0x27f5('0xdc')]=_0x2b753a['id'];if(_0x21e6af[_0x27f5('0x52')][_0x27f5('0x30')]){_0x24d8c9[_0x27f5('0xcd')]=_[_0x27f5('0x56')](_0x24d8c9[_0x27f5('0xcd')],{'$or':_['map'](_0x24d8c9[_0x27f5('0x41')],function(_0x1268d6){var _0x32fb04={};_0x32fb04[_0x1268d6]={'$like':'%'+_0x21e6af[_0x27f5('0x52')][_0x27f5('0x30')]+'%'};return _0x32fb04;})});}_0x24d8c9=_[_0x27f5('0x56')]({},_0x24d8c9,_0x21e6af['options']);return db['MailInteraction'][_0x27f5('0x24')]({'where':_0x24d8c9[_0x27f5('0xcd')]})[_0x27f5('0x13')](function(_0x3a7e6d){_0xb74e07[_0x27f5('0x24')]=_0x3a7e6d;if(_0x21e6af[_0x27f5('0x52')][_0x27f5('0x3f')]){_0x24d8c9[_0x27f5('0x40')]=[{'all':!![]}];}return db['MailInteraction'][_0x27f5('0x43')](_0x24d8c9);})[_0x27f5('0x13')](function(_0x515d13){_0xb74e07[_0x27f5('0x44')]=_0x515d13;return _0xb74e07;});}})['then'](respondWithFilteredResult(_0x920965,_0x24d8c9))['catch'](handleError(_0x920965,null));};exports[_0x27f5('0xe2')]=function(_0x2a45a6,_0x473185){var _0x17e5d8={};var _0x24a161={};var _0x2e37b0;var _0x2938df;return db[_0x27f5('0x39')][_0x27f5('0x8f')]({'where':{'id':_0x2a45a6['params']['id']}})[_0x27f5('0x13')](handleEntityNotFound(_0x473185,null))[_0x27f5('0x13')](function(_0x291f91){if(_0x291f91){_0x2e37b0=_0x291f91;_0x24a161[_0x27f5('0x4f')]=_[_0x27f5('0x51')](db[_0x27f5('0xe3')][_0x27f5('0x3a')]);_0x24a161[_0x27f5('0x52')]=_[_0x27f5('0x51')](_0x2a45a6['query']);_0x24a161[_0x27f5('0x53')]=_['intersection'](_0x24a161['model'],_0x24a161[_0x27f5('0x52')]);_0x17e5d8[_0x27f5('0x41')]=_[_0x27f5('0x54')](_0x24a161[_0x27f5('0x4f')],qs[_0x27f5('0x55')](_0x2a45a6['query']['fields']));_0x17e5d8['attributes']=_0x17e5d8[_0x27f5('0x41')][_0x27f5('0x47')]?_0x17e5d8['attributes']:_0x24a161['model'];_0x17e5d8['order']=qs[_0x27f5('0xcc')](_0x2a45a6['query'][_0x27f5('0xcc')]);_0x17e5d8[_0x27f5('0xcd')]=qs[_0x27f5('0x53')](_[_0x27f5('0xd7')](_0x2a45a6['query'],_0x24a161[_0x27f5('0x53')]));if(_0x2a45a6[_0x27f5('0x52')][_0x27f5('0x30')]){_0x17e5d8[_0x27f5('0xcd')]=_[_0x27f5('0x56')](_0x17e5d8[_0x27f5('0xcd')],{'$or':_['map'](_0x17e5d8['attributes'],function(_0x2cc215){var _0x50f9b6={};_0x50f9b6[_0x2cc215]={'$like':'%'+_0x2a45a6['query'][_0x27f5('0x30')]+'%'};return _0x50f9b6;})});}_0x17e5d8=_['merge']({},_0x17e5d8,_0x2a45a6[_0x27f5('0x57')]);return _0x2e37b0[_0x27f5('0xe2')](_0x17e5d8);}})[_0x27f5('0x13')](function(_0x4362c1){if(_0x4362c1){_0x2938df=_0x4362c1[_0x27f5('0x47')];if(!_0x2a45a6[_0x27f5('0x52')][_0x27f5('0xce')](_0x27f5('0xd5'))){_0x17e5d8['limit']=qs[_0x27f5('0x23')](_0x2a45a6[_0x27f5('0x52')][_0x27f5('0x23')]);_0x17e5d8[_0x27f5('0x25')]=qs[_0x27f5('0x25')](_0x2a45a6[_0x27f5('0x52')][_0x27f5('0x25')]);}return _0x2e37b0[_0x27f5('0xe2')](_0x17e5d8);}})[_0x27f5('0x13')](function(_0x19295b){if(_0x19295b){return _0x19295b?{'count':_0x2938df,'rows':_0x19295b}:null;}})[_0x27f5('0x13')](respondWithResult(_0x473185,null))[_0x27f5('0x1d')](handleError(_0x473185,null));};exports[_0x27f5('0xe4')]=function(_0x3aff2e,_0x428cee){var _0xaece1={};var _0xf6696a={};var _0x1a40cc;var _0x3f7461;return db['User'][_0x27f5('0x8f')]({'where':{'id':_0x3aff2e[_0x27f5('0x4e')]['id']}})[_0x27f5('0x13')](handleEntityNotFound(_0x428cee,null))[_0x27f5('0x13')](function(_0x2ed414){if(_0x2ed414){_0x1a40cc=_0x2ed414;_0xf6696a[_0x27f5('0x4f')]=_[_0x27f5('0x51')](db[_0x27f5('0xe5')]['rawAttributes']);_0xf6696a[_0x27f5('0x52')]=_['keys'](_0x3aff2e[_0x27f5('0x52')]);_0xf6696a[_0x27f5('0x53')]=_[_0x27f5('0x54')](_0xf6696a[_0x27f5('0x4f')],_0xf6696a[_0x27f5('0x52')]);_0xaece1[_0x27f5('0x41')]=_[_0x27f5('0x54')](_0xf6696a[_0x27f5('0x4f')],qs['fields'](_0x3aff2e[_0x27f5('0x52')]['fields']));_0xaece1[_0x27f5('0x41')]=_0xaece1[_0x27f5('0x41')][_0x27f5('0x47')]?_0xaece1[_0x27f5('0x41')]:_0xf6696a[_0x27f5('0x4f')];_0xaece1['order']=qs['sort'](_0x3aff2e['query'][_0x27f5('0xcc')]);_0xaece1[_0x27f5('0xcd')]=qs[_0x27f5('0x53')](_['pick'](_0x3aff2e[_0x27f5('0x52')],_0xf6696a[_0x27f5('0x53')]));if(_0x3aff2e['query'][_0x27f5('0x30')]){_0xaece1['where']=_[_0x27f5('0x56')](_0xaece1['where'],{'$or':_[_0x27f5('0x85')](_0xaece1[_0x27f5('0x41')],function(_0x2afdb8){var _0x3c20cc={};_0x3c20cc[_0x2afdb8]={'$like':'%'+_0x3aff2e[_0x27f5('0x52')][_0x27f5('0x30')]+'%'};return _0x3c20cc;})});}_0xaece1=_['merge']({},_0xaece1,_0x3aff2e['options']);return _0x1a40cc[_0x27f5('0xe4')](_0xaece1);}})[_0x27f5('0x13')](function(_0x7ec353){if(_0x7ec353){_0x3f7461=_0x7ec353[_0x27f5('0x47')];if(!_0x3aff2e[_0x27f5('0x52')][_0x27f5('0xce')]('nolimit')){_0xaece1[_0x27f5('0x23')]=qs[_0x27f5('0x23')](_0x3aff2e[_0x27f5('0x52')][_0x27f5('0x23')]);_0xaece1[_0x27f5('0x25')]=qs[_0x27f5('0x25')](_0x3aff2e[_0x27f5('0x52')]['offset']);}return _0x1a40cc[_0x27f5('0xe4')](_0xaece1);}})['then'](function(_0x4f4a9f){if(_0x4f4a9f){return _0x4f4a9f?{'count':_0x3f7461,'rows':_0x4f4a9f}:null;}})[_0x27f5('0x13')](respondWithResult(_0x428cee,null))[_0x27f5('0x1d')](handleError(_0x428cee,null));};exports['getWhatsappInteractions']=function(_0x1bb8ff,_0x5837e0){var _0x3813e8={};var _0x5a3e6b={};var _0x511231;var _0x43f406;return db[_0x27f5('0x39')][_0x27f5('0x8f')]({'where':{'id':_0x1bb8ff[_0x27f5('0x4e')]['id']}})['then'](handleEntityNotFound(_0x5837e0,null))['then'](function(_0x4b58a0){if(_0x4b58a0){_0x511231=_0x4b58a0;_0x5a3e6b[_0x27f5('0x4f')]=_[_0x27f5('0x51')](db['WhatsappInteraction'][_0x27f5('0x3a')]);_0x5a3e6b[_0x27f5('0x52')]=_['keys'](_0x1bb8ff['query']);_0x5a3e6b['filters']=_[_0x27f5('0x54')](_0x5a3e6b[_0x27f5('0x4f')],_0x5a3e6b['query']);_0x3813e8[_0x27f5('0x41')]=_[_0x27f5('0x54')](_0x5a3e6b['model'],qs['fields'](_0x1bb8ff[_0x27f5('0x52')]['fields']));_0x3813e8['attributes']=_0x3813e8[_0x27f5('0x41')][_0x27f5('0x47')]?_0x3813e8[_0x27f5('0x41')]:_0x5a3e6b[_0x27f5('0x4f')];_0x3813e8[_0x27f5('0xcb')]=qs['sort'](_0x1bb8ff[_0x27f5('0x52')][_0x27f5('0xcc')]);_0x3813e8['where']=qs[_0x27f5('0x53')](_[_0x27f5('0xd7')](_0x1bb8ff[_0x27f5('0x52')],_0x5a3e6b['filters']));if(_0x1bb8ff[_0x27f5('0x52')][_0x27f5('0x30')]){_0x3813e8[_0x27f5('0xcd')]=_[_0x27f5('0x56')](_0x3813e8[_0x27f5('0xcd')],{'$or':_['map'](_0x3813e8[_0x27f5('0x41')],function(_0x5cbea9){var _0x2b3bac={};_0x2b3bac[_0x5cbea9]={'$like':'%'+_0x1bb8ff[_0x27f5('0x52')][_0x27f5('0x30')]+'%'};return _0x2b3bac;})});}_0x3813e8=_['merge']({},_0x3813e8,_0x1bb8ff[_0x27f5('0x57')]);return _0x511231[_0x27f5('0xe6')](_0x3813e8);}})[_0x27f5('0x13')](function(_0x58c035){if(_0x58c035){_0x43f406=_0x58c035[_0x27f5('0x47')];if(!_0x1bb8ff[_0x27f5('0x52')][_0x27f5('0xce')](_0x27f5('0xd5'))){_0x3813e8[_0x27f5('0x23')]=qs[_0x27f5('0x23')](_0x1bb8ff[_0x27f5('0x52')][_0x27f5('0x23')]);_0x3813e8['offset']=qs[_0x27f5('0x25')](_0x1bb8ff[_0x27f5('0x52')][_0x27f5('0x25')]);}return _0x511231[_0x27f5('0xe6')](_0x3813e8);}})['then'](function(_0x6c01cf){if(_0x6c01cf){return _0x6c01cf?{'count':_0x43f406,'rows':_0x6c01cf}:null;}})[_0x27f5('0x13')](respondWithResult(_0x5837e0,null))[_0x27f5('0x1d')](handleError(_0x5837e0,null));};exports[_0x27f5('0xe7')]=function(_0x5e2a9d,_0x120096,_0x37f0a2){var _0x216608;var _0x15460d;var _0x4a30aa;var _0x11b051=!_[_0x27f5('0x62')](_0x5e2a9d[_0x27f5('0x4e')]['id'])?_0x5e2a9d[_0x27f5('0x4e')]['id']:!_[_0x27f5('0x62')](_0x5e2a9d['user']['id'])?_0x5e2a9d[_0x27f5('0x2c')]['id']:null;return db[_0x27f5('0x39')][_0x27f5('0x34')]({'where':{'id':_0x11b051,'role':{'$or':[_0x27f5('0x2a'),_0x27f5('0x2c'),_0x27f5('0x6b')]}},'attributes':['id',_0x27f5('0x35'),_0x27f5('0xe8'),_0x27f5('0xe9'),'role',_0x27f5('0x5e'),_0x27f5('0xea')]})[_0x27f5('0x13')](function(_0x374f63){if(_0x374f63){if(_0x374f63[_0x27f5('0x29')]==='agent'){_0x216608=_0x374f63;if(_0x5e2a9d[_0x27f5('0x59')][_0x27f5('0xa3')]){_0x4a30aa=util[_0x27f5('0xa4')](_0x27f5('0xeb'),_0x216608[_0x5e2a9d['body']['interface']]);}else if(_0x5e2a9d['body']['intrf']){_0x4a30aa=util['format'](_0x27f5('0xa5'),_0x5e2a9d['body']['intrf']);}else{_0x4a30aa=util['format'](_0x27f5('0xa5'),_0x216608[_0x27f5('0x35')]);}socket['to'](util['format'](_0x27f5('0xec'),_0x216608[_0x27f5('0x35')]))[_0x27f5('0x9f')](_0x27f5('0xed'),{'user':{'id':_0x216608['id'],'name':_0x216608['name']},'ip':_0x5e2a9d[_0x27f5('0xee')]['x-forwarded-for']||_0x5e2a9d['connection'][_0x27f5('0xef')]||_0x5e2a9d[_0x27f5('0xf0')][_0x27f5('0xef')]||_0x5e2a9d[_0x27f5('0xf1')]['socket'][_0x27f5('0xef')]});return db[_0x27f5('0xa7')][_0x27f5('0x28')]({'where':{'membername':_0x216608[_0x27f5('0x35')]},'individualHooks':!![]});}}else{throw new db[(_0x27f5('0x88'))][(_0x27f5('0x89'))](_0x27f5('0xf2'));}})['then'](function(){if(_0x216608){return _0x216608[_0x27f5('0xf3')]({'raw':!![]});}})[_0x27f5('0x13')](function(_0x361fc0){if(_0x216608){var _0x2906eb=[];if(_0x361fc0){_0x15460d=_0x361fc0;if(_0x15460d[_0x27f5('0x47')]){for(var _0x2a16d0=0x0;_0x2a16d0<_0x15460d[_0x27f5('0x47')];_0x2a16d0++){_0x2906eb['push']({'membername':_0x216608[_0x27f5('0x35')],'UserId':_0x216608['id'],'queue_name':_0x15460d[_0x2a16d0][_0x27f5('0x35')],'VoiceQueueId':_0x15460d[_0x2a16d0]['id'],'interface':_0x4a30aa,'paused':_0x216608[_0x27f5('0xea')]||![],'penalty':_0x15460d[_0x2a16d0][_0x27f5('0xf4')]||0x0});}return BPromise['each'](_0x2906eb,function(_0x186f86){return db[_0x27f5('0xa7')][_0x27f5('0xf5')](_0x186f86);});}}}})[_0x27f5('0x13')](function(){if(_0x216608){return db[_0x27f5('0xf6')][_0x27f5('0x43')]({'where':{'membername':_0x216608['name'],'exitAt':null}});}})[_0x27f5('0x13')](function(_0x3ff01c){if(_0x216608){var _0x15a416=[];_0x3ff01c[_0x27f5('0xf7')](function(_0x1aa018){_0x15a416[_0x27f5('0x42')](_0x1aa018['update']({'exitAt':moment()['format'](_0x27f5('0xf8'))}));});return BPromise[_0x27f5('0x4d')](_0x15a416);}})[_0x27f5('0x13')](function(){if(_0x216608){var _0x5dffda=[];var _0x702d26=[];var _0x5a1477=utils[_0x27f5('0xf9')]();var _0x2660d9={'membername':_0x216608['name'],'interface':_0x4a30aa,'enterAt':moment()[_0x27f5('0xa4')](_0x27f5('0xf8')),'role':_0x216608[_0x27f5('0x29')],'internal':_0x216608[_0x27f5('0x5e')]};_0x5a1477[_0x27f5('0xf7')](function(_0x6b2917){_0x5dffda[_0x27f5('0x42')](_[_0x27f5('0x56')]({'channel':_0x6b2917,'type':_0x27f5('0xfa'),'data1':_0x5e2a9d[_0x27f5('0x59')][_0x27f5('0xfb')],'data2':_0x4a30aa},_0x2660d9));if(_0x216608[_0x27f5('0xea')]){_0x702d26[_0x27f5('0x42')](_[_0x27f5('0x56')]({'channel':_0x6b2917,'type':_0x27f5('0xfc'),'data1':_0x27f5('0xfd')},_0x2660d9));}});return db[_0x27f5('0xf6')][_0x27f5('0x80')](_0x5dffda['concat'](_0x702d26),{'individualHooks':!![]});}})[_0x27f5('0x13')](function(){if(_0x216608){return _0x216608[_0x27f5('0x27')]({'online':!![],'lastLoginAt':moment()[_0x27f5('0xa4')](_0x27f5('0xf8')),'voicePause':_0x216608[_0x27f5('0xea')]||![],'mailPause':_0x216608[_0x27f5('0xea')]||![],'chatPause':_0x216608[_0x27f5('0xea')]||![],'faxPause':_0x216608[_0x27f5('0xea')]||![],'smsPause':_0x216608[_0x27f5('0xea')]||![],'openchannelPause':_0x216608[_0x27f5('0xea')]||![],'whatsappPause':_0x216608[_0x27f5('0xea')]||![],'pauseType':_0x216608[_0x27f5('0xea')]?_0x27f5('0xfd'):null,'interface':_0x4a30aa,'lastPauseAt':moment()['format'](_0x27f5('0xf8'))});}})[_0x27f5('0x13')](function(_0x54d514){if(_0x5e2a9d['isMiddleware']){return _0x37f0a2();}else{return BPromise[_0x27f5('0xfe')](_0x54d514)[_0x27f5('0x13')](respondWithResult(_0x120096,null));}})[_0x27f5('0x1d')](handleError(_0x120096,null));};exports[_0x27f5('0xff')]=function(_0x51c3d9,_0x3959ea){var _0x227857;return db['User'][_0x27f5('0x34')]({'where':{'id':_0x51c3d9[_0x27f5('0x4e')]['id'],'role':_0x27f5('0x6b')},'attributes':['id',_0x27f5('0x35'),_0x27f5('0x29')]})[_0x27f5('0x13')](handleEntityNotFound(_0x3959ea,null))[_0x27f5('0x13')](function(_0x540eaa){if(_0x540eaa){_0x227857=_0x540eaa;return db[_0x27f5('0xa7')][_0x27f5('0x28')]({'where':{'membername':_0x227857['name']},'individualHooks':!![]});}})[_0x27f5('0x13')](function(){return db[_0x27f5('0xf6')][_0x27f5('0x43')]({'where':{'membername':_0x227857[_0x27f5('0x35')],'exitAt':null}});})[_0x27f5('0x13')](function(_0x162adc){var _0x4735b4=[];_0x162adc[_0x27f5('0xf7')](function(_0x450a59){_0x4735b4['push'](_0x450a59[_0x27f5('0x27')]({'exitAt':moment()[_0x27f5('0xa4')](_0x27f5('0xf8'))}));});return BPromise[_0x27f5('0x4d')](_0x4735b4);})[_0x27f5('0x13')](function(){return _0x227857[_0x27f5('0x27')]({'online':![],'voicePause':![],'mailPause':![],'chatPause':![],'faxPause':![],'smsPause':![],'openchannelPause':![],'whatsappPause':![],'interface':null});})['then'](respondWithResult(_0x3959ea,null))['catch'](handleError(_0x3959ea,null));};exports['pause']=function(_0x48b511,_0x181422){var _0xb5af8d;return db['UserVoiceQueueRt'][_0x27f5('0x27')]({'paused':0x1},{'where':{'UserId':_0x48b511[_0x27f5('0x4e')]['id']},'individualHooks':!![]})[_0x27f5('0x13')](function(){return db[_0x27f5('0x39')][_0x27f5('0x34')]({'where':{'id':_0x48b511[_0x27f5('0x4e')]['id'],'role':'agent'},'attributes':['id',_0x27f5('0x35'),_0x27f5('0x29'),_0x27f5('0x5e'),_0x27f5('0xa3')]});})[_0x27f5('0x13')](handleEntityNotFound(_0x181422,null))['then'](function(_0x37027c){if(_0x37027c){_0xb5af8d=_0x37027c;return respondWithRpcPromise(_0x27f5('0x100'),_0x27f5('0x101'),{'id':_0xb5af8d['id'],'name':_0xb5af8d[_0x27f5('0x35')],'pause':!![]});}})['then'](function(){if(_0xb5af8d){return db[_0x27f5('0xf6')][_0x27f5('0x43')]({'where':{'membername':_0xb5af8d[_0x27f5('0x35')],'type':_0x27f5('0xfc'),'exitAt':null}});}})[_0x27f5('0x13')](function(_0x966468){if(_0x966468[_0x27f5('0x47')]){var _0x1653dd=moment()['format'](_0x27f5('0xf8'));for(var _0x25cce8=0x0,_0x587173=_0x966468[_0x27f5('0x47')];_0x25cce8<_0x587173;_0x25cce8++){_0x966468[_0x25cce8][_0x27f5('0x102')]({'exitAt':_0x1653dd});}}})[_0x27f5('0x13')](function(){var _0x2fbc31=[];var _0x472b73=utils[_0x27f5('0xf9')]();_0x472b73[_0x27f5('0xf7')](function(_0x1a8902){_0x2fbc31['push']({'channel':_0x1a8902,'membername':_0xb5af8d[_0x27f5('0x35')],'interface':_[_0x27f5('0x62')](_0xb5af8d[_0x27f5('0xa3')])?util[_0x27f5('0xa4')](_0x27f5('0xa5'),_0xb5af8d[_0x27f5('0x35')]):_0xb5af8d[_0x27f5('0xa3')],'type':_0x27f5('0xfc'),'enterAt':moment()[_0x27f5('0xa4')](_0x27f5('0xf8')),'data1':_0x48b511[_0x27f5('0x59')][_0x27f5('0x3c')]||_0x27f5('0x103'),'role':_0xb5af8d['role'],'internal':_0xb5af8d[_0x27f5('0x5e')]});});return db['MemberReport'][_0x27f5('0x80')](_0x2fbc31,{'individualHooks':!![]});})[_0x27f5('0x13')](function(){return _0xb5af8d[_0x27f5('0x27')]({'voicePause':!![],'mailPause':!![],'chatPause':!![],'faxPause':!![],'smsPause':!![],'whatsappPause':!![],'openchannelPause':!![],'pauseType':_0x48b511[_0x27f5('0x59')][_0x27f5('0x3c')]||'DEFAULT\x20PAUSE','lastPauseAt':moment()[_0x27f5('0xa4')](_0x27f5('0xf8'))});})[_0x27f5('0x13')](respondWithResult(_0x181422,null))[_0x27f5('0x1d')](handleError(_0x181422,null));};exports[_0x27f5('0x104')]=function(_0x3a4f7e,_0x2ba571){var _0x14975f;return db[_0x27f5('0x39')][_0x27f5('0x34')]({'where':{'id':_0x3a4f7e[_0x27f5('0x4e')]['id']},'attributes':['id','name',_0x27f5('0x29'),_0x27f5('0x99'),'mailPause',_0x27f5('0x105'),'faxPause',_0x27f5('0x106'),'smsPause',_0x27f5('0x107'),_0x27f5('0x108'),_0x27f5('0x109')]})[_0x27f5('0x13')](handleEntityNotFound(_0x2ba571,null))[_0x27f5('0x13')](function(_0x1bd644){if(_0x1bd644){_0x14975f=_0x1bd644;if(_0x3a4f7e[_0x27f5('0x59')][_0x27f5('0x97')]&&!utils[_0x27f5('0x9a')](_0x3a4f7e[_0x27f5('0x59')]['channel'])){throw new db[(_0x27f5('0x88'))][(_0x27f5('0x89'))](_0x27f5('0xa9'));}switch(_0x3a4f7e['body'][_0x27f5('0x97')]){case'voice':return respondWithRpcPromise('QueuePause','unpause',{'id':_0x14975f['id'],'name':_0x14975f[_0x27f5('0x35')],'pause':![]})['then'](function(){return db[_0x27f5('0xa7')][_0x27f5('0x27')]({'paused':0x0},{'where':{'UserId':_0x14975f['id']},'individualHooks':!![]});})[_0x27f5('0x13')](function(){return db[_0x27f5('0xf6')][_0x27f5('0x34')]({'where':{'channel':_0x3a4f7e[_0x27f5('0x59')]['channel'],'membername':_0x14975f[_0x27f5('0x35')],'type':_0x27f5('0xfc'),'exitAt':null}});})['then'](function(_0x15da3f){if(_0x15da3f){return _0x15da3f['update']({'exitAt':moment()['format'](_0x27f5('0xf8')),'data2':_0x27f5('0x10a')},{'individualHooks':!![]});}return null;})['then'](function(){return _0x14975f[_0x27f5('0x27')]({'voicePause':![]});});case'mail':case _0x27f5('0xbb'):case _0x27f5('0x49'):case _0x27f5('0x58'):case _0x27f5('0x4c'):case _0x27f5('0x4b'):return db[_0x27f5('0xf6')][_0x27f5('0x34')]({'where':{'channel':_0x3a4f7e[_0x27f5('0x59')][_0x27f5('0x97')],'membername':_0x14975f[_0x27f5('0x35')],'type':'PAUSE','exitAt':null}})['then'](function(_0x2bd056){if(_0x2bd056){return _0x2bd056[_0x27f5('0x27')]({'exitAt':moment()['format']('YYYY-MM-DD\x20HH:mm:ss'),'data2':_0x27f5('0x10a')},{'individualHooks':!![]});}return null;})['then'](function(){var _0x4ca605={};_[_0x27f5('0x26')](_0x4ca605,util['format'](_0x27f5('0x10b'),_0x3a4f7e[_0x27f5('0x59')]['channel'],'Pause'),![]);return _0x14975f[_0x27f5('0x27')](_0x4ca605);});default:return respondWithRpcPromise(_0x27f5('0x100'),_0x27f5('0x104'),{'id':_0x14975f['id'],'name':_0x14975f['name'],'pause':![]})['then'](function(){return db[_0x27f5('0xa7')][_0x27f5('0x27')]({'paused':0x0},{'where':{'UserId':_0x14975f['id']}});})[_0x27f5('0x13')](function(){return db[_0x27f5('0xf6')][_0x27f5('0x43')]({'where':{'membername':_0x14975f[_0x27f5('0x35')],'type':'PAUSE','exitAt':null}});})[_0x27f5('0x13')](function(_0x1eba9b){var _0x247a32=[];_0x1eba9b[_0x27f5('0xf7')](function(_0x3da2ca){_0x247a32[_0x27f5('0x42')](_0x3da2ca[_0x27f5('0x27')]({'exitAt':moment()[_0x27f5('0xa4')]('YYYY-MM-DD\x20HH:mm:ss'),'data2':_0x27f5('0x10a')}));});return BPromise[_0x27f5('0x4d')](_0x247a32);})['then'](function(){return _0x14975f[_0x27f5('0x27')]({'voicePause':![],'mailPause':![],'chatPause':![],'faxPause':![],'smsPause':![],'whatsappPause':![],'openchannelPause':![]});});}}})['then'](respondWithResult(_0x2ba571,null))[_0x27f5('0x1d')](handleError(_0x2ba571,null));};exports[_0x27f5('0x10c')]=function(_0x3ae202,_0x3fd56f){var _0x284edc={};var _0x177531={};var _0x2fd5ae;var _0x48c2bf;return db[_0x27f5('0x39')][_0x27f5('0x8f')]({'where':{'id':_0x3ae202[_0x27f5('0x4e')]['id']}})[_0x27f5('0x13')](handleEntityNotFound(_0x3fd56f,null))[_0x27f5('0x13')](function(_0x460053){if(_0x460053){_0x2fd5ae=_0x460053;_0x177531[_0x27f5('0x4f')]=_['keys'](db['Team'][_0x27f5('0x3a')]);_0x177531[_0x27f5('0x52')]=_[_0x27f5('0x51')](_0x3ae202[_0x27f5('0x52')]);_0x177531[_0x27f5('0x53')]=_['intersection'](_0x177531['model'],_0x177531[_0x27f5('0x52')]);_0x284edc[_0x27f5('0x41')]=_['intersection'](_0x177531[_0x27f5('0x4f')],qs['fields'](_0x3ae202[_0x27f5('0x52')]['fields']));_0x284edc[_0x27f5('0x41')]=_0x284edc[_0x27f5('0x41')][_0x27f5('0x47')]?_0x284edc[_0x27f5('0x41')]:_0x177531[_0x27f5('0x4f')];_0x284edc['order']=qs[_0x27f5('0xcc')](_0x3ae202[_0x27f5('0x52')][_0x27f5('0xcc')]);_0x284edc[_0x27f5('0xcd')]=qs[_0x27f5('0x53')](_['pick'](_0x3ae202[_0x27f5('0x52')],_0x177531[_0x27f5('0x53')]));if(_0x3ae202[_0x27f5('0x52')]['filter']){_0x284edc[_0x27f5('0xcd')]=_['merge'](_0x284edc[_0x27f5('0xcd')],{'$or':_[_0x27f5('0x85')](_0x284edc[_0x27f5('0x41')],function(_0x9d3b0){var _0x55f37b={};_0x55f37b[_0x9d3b0]={'$like':'%'+_0x3ae202[_0x27f5('0x52')][_0x27f5('0x30')]+'%'};return _0x55f37b;})});}_0x284edc=_[_0x27f5('0x56')]({},_0x284edc,_0x3ae202[_0x27f5('0x57')]);return _0x2fd5ae[_0x27f5('0x10c')](_0x284edc);}})[_0x27f5('0x13')](function(_0x27617f){if(_0x27617f){_0x48c2bf=_0x27617f[_0x27f5('0x47')];if(!_0x3ae202[_0x27f5('0x52')][_0x27f5('0xce')](_0x27f5('0xd5'))){_0x284edc[_0x27f5('0x23')]=qs[_0x27f5('0x23')](_0x3ae202['query']['limit']);_0x284edc[_0x27f5('0x25')]=qs[_0x27f5('0x25')](_0x3ae202['query'][_0x27f5('0x25')]);}return _0x2fd5ae[_0x27f5('0x10c')](_0x284edc);}})[_0x27f5('0x13')](function(_0xeefcc7){if(_0xeefcc7){return _0xeefcc7?{'count':_0x48c2bf,'rows':_0xeefcc7}:null;}})[_0x27f5('0x13')](respondWithResult(_0x3fd56f,null))[_0x27f5('0x1d')](handleError(_0x3fd56f,null));};exports[_0x27f5('0x10d')]=function(_0x24ab52,_0x1baafc){return db[_0x27f5('0x39')]['find']({'where':{'id':_0x24ab52[_0x27f5('0x4e')]['id']}})[_0x27f5('0x13')](handleEntityNotFound(_0x1baafc,null))[_0x27f5('0x13')](function(_0x4adb22){if(_0x4adb22){var _0x27c529=_0x4adb22[_0x27f5('0xa2')]({'plain':!![]});return _0x4adb22[_0x27f5('0x10d')](_0x24ab52[_0x27f5('0x59')][_0x27f5('0x5d')],_[_0x27f5('0x5c')](_0x24ab52[_0x27f5('0x59')],['ids','id'])||{})[_0x27f5('0x13')](function(){for(var _0x998af1=0x0;_0x998af1<_0x24ab52[_0x27f5('0x59')][_0x27f5('0x5d')][_0x27f5('0x47')];_0x998af1++){var _0x3b2443=[];var _0x14f042={};db[_0x27f5('0x10e')]['findOne']({'where':{'id':_0x24ab52[_0x27f5('0x59')][_0x27f5('0x5d')][_0x998af1]}})[_0x27f5('0x13')](function(_0x460c1e){_0x14f042=_0x460c1e['dataValues'];_0x3b2443['push'](_0x460c1e[_0x27f5('0xf3')]()[_0x27f5('0x13')](function(_0x5571ab){for(var _0x4a0c53=0x0;_0x4a0c53<_0x5571ab[_0x27f5('0x47')];_0x4a0c53++){_0x5571ab[_0x4a0c53][_0x27f5('0x10f')](_0x27f5('0x97'),'Voice');}return _0x5571ab;}));_0x3b2443[_0x27f5('0x42')](_0x460c1e['getChatQueues']()[_0x27f5('0x13')](function(_0x4e1d72){for(var _0x17ff9c=0x0;_0x17ff9c<_0x4e1d72['length'];_0x17ff9c++){_0x4e1d72[_0x17ff9c][_0x27f5('0x10f')](_0x27f5('0x97'),_0x27f5('0x110'));}return _0x4e1d72;}));_0x3b2443[_0x27f5('0x42')](_0x460c1e[_0x27f5('0x111')]()[_0x27f5('0x13')](function(_0x56a9b5){for(var _0x18ccc0=0x0;_0x18ccc0<_0x56a9b5['length'];_0x18ccc0++){_0x56a9b5[_0x18ccc0][_0x27f5('0x10f')](_0x27f5('0x97'),'Mail');}return _0x56a9b5;}));_0x3b2443['push'](_0x460c1e['getSmsQueues']()[_0x27f5('0x13')](function(_0x131bea){for(var _0x2cabac=0x0;_0x2cabac<_0x131bea[_0x27f5('0x47')];_0x2cabac++){_0x131bea[_0x2cabac]['setDataValue'](_0x27f5('0x97'),_0x27f5('0x112'));}return _0x131bea;}));_0x3b2443[_0x27f5('0x42')](_0x460c1e[_0x27f5('0x113')]()[_0x27f5('0x13')](function(_0x286754){for(var _0x10d77f=0x0;_0x10d77f<_0x286754[_0x27f5('0x47')];_0x10d77f++){_0x286754[_0x10d77f][_0x27f5('0x10f')](_0x27f5('0x97'),_0x27f5('0x114'));}return _0x286754;}));_0x3b2443[_0x27f5('0x42')](_0x460c1e['getFaxQueues']()[_0x27f5('0x13')](function(_0x2c4b8c){for(var _0x8039de=0x0;_0x8039de<_0x2c4b8c[_0x27f5('0x47')];_0x8039de++){_0x2c4b8c[_0x8039de][_0x27f5('0x10f')](_0x27f5('0x97'),_0x27f5('0x115'));}return _0x2c4b8c;}));_0x3b2443[_0x27f5('0x42')](_0x460c1e[_0x27f5('0x116')]()[_0x27f5('0x13')](function(_0x59c1b9){for(var _0x147c62=0x0;_0x147c62<_0x59c1b9[_0x27f5('0x47')];_0x147c62++){_0x59c1b9[_0x147c62]['setDataValue'](_0x27f5('0x97'),_0x27f5('0x117'));}return _0x59c1b9;}));return BPromise['all'](_0x3b2443);})[_0x27f5('0x13')](function(_0x5372ec){var _0x2e8fb7=_['flatten'](_0x5372ec);_0x3b2443=[];return db[_0x27f5('0x64')]['transaction'](function(_0x1ba36b){for(var _0x4be22a=0x0;_0x4be22a<_0x2e8fb7['length'];_0x4be22a++){_0x3b2443[_0x27f5('0x42')](_0x2e8fb7[_0x4be22a][_0x27f5('0x118')](_0x27c529['id']),{'transaction':_0x1ba36b});}return BPromise[_0x27f5('0x4d')](_0x3b2443)[_0x27f5('0x13')](function(){if(_0x27c529[_0x27f5('0x98')]){return BPromise[_0x27f5('0xa6')](_['filter'](_0x2e8fb7,function(_0x50125f){return _0x50125f[_0x27f5('0x119')](_0x27f5('0x97'))==='Voice';}),function(_0x4f3289){return db[_0x27f5('0xa7')][_0x27f5('0xf5')]({'membername':_0x27c529['name'],'UserId':_0x27c529['id'],'queue_name':_0x4f3289[_0x27f5('0x35')],'VoiceQueueId':_0x4f3289['id'],'interface':_['isNil'](_0x27c529[_0x27f5('0xa3')])?util[_0x27f5('0xa4')]('SIP/%s',_0x27c529[_0x27f5('0x35')]):_0x27c529[_0x27f5('0xa3')],'paused':_0x27c529['voicePause']||![],'penalty':_0x27c529[_0x27f5('0x9d')]},{'transaction':_0x1ba36b});});}else{return;}})[_0x27f5('0x13')](function(){for(var _0x3dc6ba=0x0;_0x3dc6ba<_0x2e8fb7['length'];_0x3dc6ba++){var _0x4ff2c8=_0x2e8fb7[_0x3dc6ba][_0x27f5('0x119')](_0x27f5('0x97'));var _0x3535f2=_0x4ff2c8+_0x27f5('0xad');socket['emit'](_0x27f5('0x2c')+_0x4ff2c8+_0x27f5('0x11a'),{'UserId':_0x27c529['id'],['queueField']:_0x2e8fb7[_0x3dc6ba]['id']});}});});})[_0x27f5('0x13')](function(){db['TeamVoicePrefix'][_0x27f5('0x8f')]({'where':{'teamId':_0x14f042['id']}})[_0x27f5('0x13')](function(_0x3d6eb8){if(_0x3d6eb8){db[_0x27f5('0x11b')][_0x27f5('0x7c')]({'UserId':_0x24ab52['params']['id'],'VoicePrefixId':_0x3d6eb8['VoicePrefixId']});}});});}});}})[_0x27f5('0x13')](respondWithStatusCode(_0x1baafc,null))[_0x27f5('0x1d')](handleError(_0x1baafc,null));};exports[_0x27f5('0x11c')]=function(_0x7b1c44,_0x140056){return db[_0x27f5('0x39')]['findOne']({'where':{'id':_0x7b1c44[_0x27f5('0x4e')]['id']}})[_0x27f5('0x13')](handleEntityNotFound(_0x140056,null))[_0x27f5('0x13')](function(_0x4dac20){if(_0x4dac20){var _0x500c78=_0x4dac20['get']({'plain':!![]});var _0x265714=_0x7b1c44[_0x27f5('0x52')][_0x27f5('0x5d')];return _0x4dac20[_0x27f5('0x11c')](_0x265714)[_0x27f5('0x13')](function(){for(var _0x315459=0x0;_0x315459<_0x265714[_0x27f5('0x47')];_0x315459++){var _0x41d645=[];var _0x23539a={};db['Team'][_0x27f5('0x8f')]({'where':{'id':_0x265714[_0x315459]}})[_0x27f5('0x13')](function(_0x1d8a5d){_0x23539a=_0x1d8a5d[_0x27f5('0x48')];_0x41d645[_0x27f5('0x42')](_0x1d8a5d['getVoiceQueues']()[_0x27f5('0x13')](function(_0x1070b0){for(var _0x144844=0x0;_0x144844<_0x1070b0[_0x27f5('0x47')];_0x144844++){_0x1070b0[_0x144844][_0x27f5('0x10f')](_0x27f5('0x97'),_0x27f5('0x11d'));}return _0x1070b0;}));_0x41d645['push'](_0x1d8a5d[_0x27f5('0x11e')]()[_0x27f5('0x13')](function(_0x4af538){for(var _0x552d14=0x0;_0x552d14<_0x4af538[_0x27f5('0x47')];_0x552d14++){_0x4af538[_0x552d14][_0x27f5('0x10f')](_0x27f5('0x97'),_0x27f5('0x110'));}return _0x4af538;}));_0x41d645[_0x27f5('0x42')](_0x1d8a5d['getMailQueues']()[_0x27f5('0x13')](function(_0x57d926){for(var _0x58426f=0x0;_0x58426f<_0x57d926[_0x27f5('0x47')];_0x58426f++){_0x57d926[_0x58426f][_0x27f5('0x10f')](_0x27f5('0x97'),_0x27f5('0x11f'));}return _0x57d926;}));_0x41d645[_0x27f5('0x42')](_0x1d8a5d['getSmsQueues']()[_0x27f5('0x13')](function(_0x11598b){for(var _0x56a96a=0x0;_0x56a96a<_0x11598b[_0x27f5('0x47')];_0x56a96a++){_0x11598b[_0x56a96a][_0x27f5('0x10f')]('channel','Sms');}return _0x11598b;}));_0x41d645['push'](_0x1d8a5d[_0x27f5('0x113')]()[_0x27f5('0x13')](function(_0x253e45){for(var _0x480e66=0x0;_0x480e66<_0x253e45[_0x27f5('0x47')];_0x480e66++){_0x253e45[_0x480e66]['setDataValue'](_0x27f5('0x97'),_0x27f5('0x114'));}return _0x253e45;}));_0x41d645['push'](_0x1d8a5d[_0x27f5('0x120')]()[_0x27f5('0x13')](function(_0x5ecc97){for(var _0x469fb9=0x0;_0x469fb9<_0x5ecc97[_0x27f5('0x47')];_0x469fb9++){_0x5ecc97[_0x469fb9]['setDataValue'](_0x27f5('0x97'),_0x27f5('0x115'));}return _0x5ecc97;}));_0x41d645[_0x27f5('0x42')](_0x1d8a5d[_0x27f5('0x116')]()[_0x27f5('0x13')](function(_0x1c8bf0){for(var _0x2f583a=0x0;_0x2f583a<_0x1c8bf0[_0x27f5('0x47')];_0x2f583a++){_0x1c8bf0[_0x2f583a][_0x27f5('0x10f')]('channel',_0x27f5('0x117'));}return _0x1c8bf0;}));return BPromise[_0x27f5('0x4d')](_0x41d645);})[_0x27f5('0x13')](function(_0x27d4cd){var _0x2bbd21=_[_0x27f5('0x121')](_0x27d4cd);_0x41d645=[];return db[_0x27f5('0x64')][_0x27f5('0x122')](function(_0x18c669){for(var _0x23009e=0x0;_0x23009e<_0x2bbd21[_0x27f5('0x47')];_0x23009e++){_0x41d645[_0x27f5('0x42')](_0x2bbd21[_0x23009e][_0x27f5('0x123')](_0x500c78['id']),{'transaction':_0x18c669});}return BPromise['all'](_0x41d645)['then'](function(){if(_0x500c78[_0x27f5('0x98')]){return BPromise[_0x27f5('0xa6')](_[_0x27f5('0x30')](_0x2bbd21,function(_0x1ba0ef){return _0x1ba0ef['getDataValue'](_0x27f5('0x97'))===_0x27f5('0x11d');}),function(_0x447946){return db[_0x27f5('0xa7')][_0x27f5('0x28')]({'where':{'VoiceQueueId':_0x447946['id'],'UserId':_0x500c78['id']},'transaction':_0x18c669});});}else{return;}})[_0x27f5('0x13')](function(){db[_0x27f5('0x124')][_0x27f5('0x8f')]({'where':{'teamId':_0x23539a['id']}})['then'](function(_0x56dd11){if(_0x56dd11){return db[_0x27f5('0x11b')]['destroy']({'where':{'UserId':_0x500c78['id'],'VoicePrefixId':_0x56dd11[_0x27f5('0x48')]['VoicePrefixId']}});}});})[_0x27f5('0x13')](function(){for(var _0x1049a6=0x0;_0x1049a6<_0x2bbd21[_0x27f5('0x47')];_0x1049a6++){var _0x2f52db=_0x2bbd21[_0x1049a6][_0x27f5('0x119')](_0x27f5('0x97'));var _0x1afb88=_0x2f52db+_0x27f5('0xad');socket[_0x27f5('0x9f')](_0x27f5('0x2c')+_0x2f52db+'Queue:remove',{'UserId':_0x500c78['id'],['queueField']:_0x2bbd21[_0x1049a6]['id']});}});});});}});}})[_0x27f5('0x13')](respondWithStatusCode(_0x140056,null))[_0x27f5('0x1d')](handleError(_0x140056,null));};exports[_0x27f5('0x125')]=function(_0x4e1b0e,_0x223ba1){var _0xa4bf40={};var _0x56168d={};var _0x550955;var _0x436f45;return db['User'][_0x27f5('0x8f')]({'where':{'id':_0x4e1b0e[_0x27f5('0x4e')]['id']}})[_0x27f5('0x13')](handleEntityNotFound(_0x223ba1,null))[_0x27f5('0x13')](function(_0x58eb8f){if(_0x58eb8f){_0x550955=_0x58eb8f;_0x56168d[_0x27f5('0x4f')]=_[_0x27f5('0x51')](db[_0x27f5('0xcf')]['rawAttributes']);_0x56168d[_0x27f5('0x52')]=_[_0x27f5('0x51')](_0x4e1b0e[_0x27f5('0x52')]);_0x56168d[_0x27f5('0x53')]=_[_0x27f5('0x54')](_0x56168d[_0x27f5('0x4f')],_0x56168d['query']);_0xa4bf40[_0x27f5('0x41')]=_[_0x27f5('0x54')](_0x56168d[_0x27f5('0x4f')],qs['fields'](_0x4e1b0e['query'][_0x27f5('0x55')]));_0xa4bf40['attributes']=_0xa4bf40[_0x27f5('0x41')][_0x27f5('0x47')]?_0xa4bf40[_0x27f5('0x41')]:_0x56168d[_0x27f5('0x4f')];_0xa4bf40[_0x27f5('0xcb')]=qs[_0x27f5('0xcc')](_0x4e1b0e['query'][_0x27f5('0xcc')]);_0xa4bf40[_0x27f5('0xcd')]=qs[_0x27f5('0x53')](_[_0x27f5('0xd7')](_0x4e1b0e[_0x27f5('0x52')],_0x56168d[_0x27f5('0x53')]));if(_0x4e1b0e[_0x27f5('0x52')][_0x27f5('0x30')]){_0xa4bf40['where']=_[_0x27f5('0x56')](_0xa4bf40[_0x27f5('0xcd')],{'$or':_[_0x27f5('0x85')](_0xa4bf40[_0x27f5('0x41')],function(_0x3d3ffe){var _0x1c9c73={};_0x1c9c73[_0x3d3ffe]={'$like':'%'+_0x4e1b0e[_0x27f5('0x52')]['filter']+'%'};return _0x1c9c73;})});}_0xa4bf40=_[_0x27f5('0x56')]({},_0xa4bf40,_0x4e1b0e['options']);return _0x550955[_0x27f5('0x125')](_0xa4bf40);}})[_0x27f5('0x13')](function(_0x5efb06){if(_0x5efb06){_0x436f45=_0x5efb06[_0x27f5('0x47')];if(!_0x4e1b0e[_0x27f5('0x52')]['hasOwnProperty']('nolimit')){_0xa4bf40['limit']=qs[_0x27f5('0x23')](_0x4e1b0e[_0x27f5('0x52')][_0x27f5('0x23')]);_0xa4bf40['offset']=qs[_0x27f5('0x25')](_0x4e1b0e[_0x27f5('0x52')][_0x27f5('0x25')]);}return _0x550955[_0x27f5('0x125')](_0xa4bf40);}})[_0x27f5('0x13')](function(_0x27a80e){if(_0x27a80e){return _0x27a80e?{'count':_0x436f45,'rows':_0x27a80e}:null;}})['then'](respondWithResult(_0x223ba1,null))[_0x27f5('0x1d')](handleError(_0x223ba1,null));};exports[_0x27f5('0x126')]=function(_0x5f274c,_0x429726){var _0x362e93={};var _0x122437={};var _0x3ee813;var _0x47b3a1;return db[_0x27f5('0x39')][_0x27f5('0x8f')]({'where':{'id':_0x5f274c[_0x27f5('0x4e')]['id']}})[_0x27f5('0x13')](handleEntityNotFound(_0x429726,null))[_0x27f5('0x13')](function(_0xe67736){if(_0xe67736){_0x3ee813=_0xe67736;_0x122437[_0x27f5('0x4f')]=_[_0x27f5('0x51')](db['User']['rawAttributes']);_0x122437[_0x27f5('0x52')]=_['keys'](_0x5f274c['query']);_0x122437['filters']=_[_0x27f5('0x54')](_0x122437[_0x27f5('0x4f')],_0x122437['query']);_0x362e93[_0x27f5('0x41')]=_['intersection'](_0x122437['model'],qs['fields'](_0x5f274c[_0x27f5('0x52')][_0x27f5('0x55')]));_0x362e93[_0x27f5('0x41')]=_0x362e93['attributes']['length']?_0x362e93[_0x27f5('0x41')]:_0x122437[_0x27f5('0x4f')];_0x362e93[_0x27f5('0xcb')]=qs['sort'](_0x5f274c['query'][_0x27f5('0xcc')]);_0x362e93[_0x27f5('0xcd')]=qs[_0x27f5('0x53')](_[_0x27f5('0xd7')](_0x5f274c[_0x27f5('0x52')],_0x122437['filters']));if(_0x5f274c[_0x27f5('0x52')][_0x27f5('0x30')]){_0x362e93[_0x27f5('0xcd')]=_['merge'](_0x362e93[_0x27f5('0xcd')],{'$or':_[_0x27f5('0x85')](_0x362e93[_0x27f5('0x41')],function(_0x110cee){var _0x431a23={};_0x431a23[_0x110cee]={'$like':'%'+_0x5f274c[_0x27f5('0x52')]['filter']+'%'};return _0x431a23;})});}_0x362e93[_0x27f5('0x4f')]=db[_0x27f5('0x39')];_0x362e93['as']=_0x27f5('0x2d');_0x362e93=_[_0x27f5('0x56')]({},_0x362e93,_0x5f274c[_0x27f5('0x57')]);return _0x3ee813[_0x27f5('0xf3')]({'include':[_0x362e93]});}})[_0x27f5('0x13')](function(_0x888e5){if(_0x888e5){var _0x4a0f6a={},_0xa0df7b=[],_0x213adb=0x0;for(var _0x3af59e=0x0;_0x3af59e<_0x888e5[_0x27f5('0x47')];_0x3af59e+=0x1){for(var _0x36bad8=0x0,_0xadf13a;_0x36bad8<_0x888e5[_0x3af59e][_0x27f5('0x2d')][_0x27f5('0x47')];_0x36bad8+=0x1){_0xadf13a=_0x888e5[_0x3af59e]['Agents'][_0x36bad8][_0x27f5('0xa2')]({'plain':!![]});_0x4a0f6a[_0xadf13a['id']]=_0xadf13a;}}_0x4a0f6a=_['values'](_0x4a0f6a);for(var _0x4d4517=qs[_0x27f5('0x25')](_0x5f274c[_0x27f5('0x52')][_0x27f5('0x25')]);_0x4d4517<_0x4a0f6a[_0x27f5('0x47')]&&_0xa0df7b[_0x27f5('0x47')]<qs['limit'](_0x5f274c[_0x27f5('0x52')]['limit']);_0x4d4517+=0x1){if(_0x4a0f6a[_0x4d4517]){_0xa0df7b[_0x27f5('0x42')](_0x4a0f6a[_0x4d4517]);}}return{'count':_0x4a0f6a[_0x27f5('0x47')],'rows':_0xa0df7b};}})['then'](respondWithResult(_0x429726,null))[_0x27f5('0x1d')](handleError(_0x429726,null));};exports[_0x27f5('0x28')]=function(_0xa7554,_0x1d839a){if(_0xa7554[_0x27f5('0x2c')]['id']==_0xa7554['params']['id']){return _0x1d839a[_0x27f5('0x1f')](0x1f4)[_0x27f5('0x37')]({'message':'You\x20can\x27t\x20delete\x20yourself'});}return db[_0x27f5('0x39')][_0x27f5('0x34')]({'where':{'id':_0xa7554[_0x27f5('0x4e')]['id']}})[_0x27f5('0x13')](handleEntityNotFound(_0x1d839a,null))[_0x27f5('0x13')](removeEntity(_0x1d839a,null))['catch'](handleError(_0x1d839a,null));};exports[_0x27f5('0x127')]=function(_0x1b028f,_0x1c98a6){return db['User'][_0x27f5('0x34')]({'where':{'id':_0x1b028f[_0x27f5('0x4e')]['id']}})[_0x27f5('0x13')](handleEntityNotFound(_0x1c98a6,null))['then'](function(_0x1e4c5b){if(_0x1e4c5b){return _0x1e4c5b[_0x27f5('0x127')](_0x1b028f[_0x27f5('0x59')][_0x27f5('0x5d')],_[_0x27f5('0x5c')](_0x1b028f[_0x27f5('0x59')],[_0x27f5('0x5d'),'id'])||{})[_0x27f5('0x9e')](function(){for(var _0x702883=0x0;_0x702883<_0x1b028f[_0x27f5('0x59')][_0x27f5('0x5d')][_0x27f5('0x47')];_0x702883+=0x1){socket['emit'](_0x27f5('0x128'),{'ChatInteractionId':Number(_0x1b028f[_0x27f5('0x59')][_0x27f5('0x5d')][_0x702883]),'UserId':Number(_0x1b028f['params']['id'])});}return _0x1b028f['body'][_0x27f5('0x5d')];});}})[_0x27f5('0x13')](respondWithResult(_0x1c98a6,null))[_0x27f5('0x1d')](handleError(_0x1c98a6,null));};exports[_0x27f5('0x129')]=function(_0xbd8c44,_0x4c44d0){return db[_0x27f5('0x39')][_0x27f5('0x34')]({'where':{'id':_0xbd8c44['params']['id']}})[_0x27f5('0x13')](handleEntityNotFound(_0x4c44d0,null))[_0x27f5('0x13')](function(_0x2a2bad){if(_0x2a2bad){return _0x2a2bad[_0x27f5('0x129')](_0xbd8c44[_0x27f5('0x52')][_0x27f5('0x5d')])['then'](function(){if(_['isArray'](_0xbd8c44[_0x27f5('0x52')][_0x27f5('0x5d')])){for(var _0x471015=0x0;_0x471015<_0xbd8c44[_0x27f5('0x52')]['ids'][_0x27f5('0x47')];_0x471015+=0x1){socket['emit']('user_has_chat_interactions:remove',{'ChatInteractionId':Number(_0xbd8c44[_0x27f5('0x52')][_0x27f5('0x5d')][_0x471015]),'UserId':Number(_0xbd8c44[_0x27f5('0x4e')]['id'])});}}else{socket['emit'](_0x27f5('0x12a'),{'ChatInteractionId':Number(_0xbd8c44[_0x27f5('0x52')][_0x27f5('0x5d')]),'UserId':Number(_0xbd8c44[_0x27f5('0x4e')]['id'])});}});}})['then'](respondWithStatusCode(_0x4c44d0,null))['catch'](handleError(_0x4c44d0,null));};exports[_0x27f5('0x12b')]=function(_0x458824,_0x3e1e14){return db['User'][_0x27f5('0x34')]({'where':{'id':_0x458824[_0x27f5('0x4e')]['id']}})['then'](handleEntityNotFound(_0x3e1e14,null))[_0x27f5('0x13')](function(_0x43abdb){if(_0x43abdb){return _0x43abdb[_0x27f5('0x12b')](_0x458824[_0x27f5('0x59')][_0x27f5('0x5d')],_[_0x27f5('0x5c')](_0x458824[_0x27f5('0x59')],[_0x27f5('0x5d'),'id'])||{})[_0x27f5('0x9e')](function(){for(var _0x1620de=0x0;_0x1620de<_0x458824[_0x27f5('0x59')][_0x27f5('0x5d')][_0x27f5('0x47')];_0x1620de+=0x1){socket['emit'](_0x27f5('0x12c'),{'MailInteractionId':Number(_0x458824[_0x27f5('0x59')]['ids'][_0x1620de]),'UserId':Number(_0x458824['params']['id'])});}return _0x458824[_0x27f5('0x59')][_0x27f5('0x5d')];});}})[_0x27f5('0x13')](respondWithResult(_0x3e1e14,null))[_0x27f5('0x1d')](handleError(_0x3e1e14,null));};exports[_0x27f5('0x12d')]=function(_0x5dde6d,_0xb49928){return db[_0x27f5('0x39')][_0x27f5('0x34')]({'where':{'id':_0x5dde6d[_0x27f5('0x4e')]['id']}})['then'](handleEntityNotFound(_0xb49928,null))[_0x27f5('0x13')](function(_0x498946){if(_0x498946){return _0x498946[_0x27f5('0x12d')](_0x5dde6d['query'][_0x27f5('0x5d')])[_0x27f5('0x13')](function(){if(_['isArray'](_0x5dde6d['query']['ids'])){for(var _0x419705=0x0;_0x419705<_0x5dde6d[_0x27f5('0x52')][_0x27f5('0x5d')]['length'];_0x419705+=0x1){socket[_0x27f5('0x9f')](_0x27f5('0x12e'),{'MailInteractionId':Number(_0x5dde6d['query'][_0x27f5('0x5d')][_0x419705]),'UserId':Number(_0x5dde6d[_0x27f5('0x4e')]['id'])});}}else{socket[_0x27f5('0x9f')](_0x27f5('0x12e'),{'MailInteractionId':Number(_0x5dde6d[_0x27f5('0x52')][_0x27f5('0x5d')]),'UserId':Number(_0x5dde6d[_0x27f5('0x4e')]['id'])});}});}})[_0x27f5('0x13')](respondWithStatusCode(_0xb49928,null))[_0x27f5('0x1d')](handleError(_0xb49928,null));};exports['addFaxInteractions']=function(_0x30396c,_0x15c789){return db[_0x27f5('0x39')][_0x27f5('0x34')]({'where':{'id':_0x30396c['params']['id']}})[_0x27f5('0x13')](handleEntityNotFound(_0x15c789,null))[_0x27f5('0x13')](function(_0xe885a1){if(_0xe885a1){return _0xe885a1[_0x27f5('0x12f')](_0x30396c['body'][_0x27f5('0x5d')],_[_0x27f5('0x5c')](_0x30396c[_0x27f5('0x59')],[_0x27f5('0x5d'),'id'])||{})['spread'](function(){for(var _0x5a4d40=0x0;_0x5a4d40<_0x30396c['body'][_0x27f5('0x5d')][_0x27f5('0x47')];_0x5a4d40+=0x1){socket[_0x27f5('0x9f')](_0x27f5('0x130'),{'FaxInteractionId':Number(_0x30396c['body']['ids'][_0x5a4d40]),'UserId':Number(_0x30396c['params']['id'])});}return _0x30396c['body'][_0x27f5('0x5d')];});}})[_0x27f5('0x13')](respondWithResult(_0x15c789,null))[_0x27f5('0x1d')](handleError(_0x15c789,null));};exports[_0x27f5('0x131')]=function(_0x8b7f4,_0x37263c){return db[_0x27f5('0x39')][_0x27f5('0x34')]({'where':{'id':_0x8b7f4['params']['id']}})[_0x27f5('0x13')](handleEntityNotFound(_0x37263c,null))[_0x27f5('0x13')](function(_0x25ef1f){if(_0x25ef1f){return _0x25ef1f[_0x27f5('0x131')](_0x8b7f4[_0x27f5('0x52')]['ids'])[_0x27f5('0x13')](function(){if(_['isArray'](_0x8b7f4[_0x27f5('0x52')][_0x27f5('0x5d')])){for(var _0x37961f=0x0;_0x37961f<_0x8b7f4[_0x27f5('0x52')][_0x27f5('0x5d')][_0x27f5('0x47')];_0x37961f+=0x1){socket[_0x27f5('0x9f')](_0x27f5('0x132'),{'FaxInteractionId':Number(_0x8b7f4[_0x27f5('0x52')][_0x27f5('0x5d')][_0x37961f]),'UserId':Number(_0x8b7f4[_0x27f5('0x4e')]['id'])});}}else{socket['emit'](_0x27f5('0x132'),{'FaxInteractionId':Number(_0x8b7f4['query'][_0x27f5('0x5d')]),'UserId':Number(_0x8b7f4[_0x27f5('0x4e')]['id'])});}});}})[_0x27f5('0x13')](respondWithStatusCode(_0x37263c,null))[_0x27f5('0x1d')](handleError(_0x37263c,null));};exports[_0x27f5('0x133')]=function(_0x350390,_0x1e39df){return db['User']['find']({'where':{'id':_0x350390[_0x27f5('0x4e')]['id']}})[_0x27f5('0x13')](handleEntityNotFound(_0x1e39df,null))[_0x27f5('0x13')](function(_0x579463){if(_0x579463){return _0x579463[_0x27f5('0x133')](_0x350390['body'][_0x27f5('0x5d')],_[_0x27f5('0x5c')](_0x350390['body'],[_0x27f5('0x5d'),'id'])||{})['spread'](function(){for(var _0x6c08a=0x0;_0x6c08a<_0x350390[_0x27f5('0x59')]['ids'][_0x27f5('0x47')];_0x6c08a+=0x1){socket[_0x27f5('0x9f')](_0x27f5('0x134'),{'SmsInteractionId':Number(_0x350390[_0x27f5('0x59')][_0x27f5('0x5d')][_0x6c08a]),'UserId':Number(_0x350390[_0x27f5('0x4e')]['id'])});}return _0x350390[_0x27f5('0x59')][_0x27f5('0x5d')];});}})['then'](respondWithResult(_0x1e39df,null))['catch'](handleError(_0x1e39df,null));};exports['removeSmsInteractions']=function(_0x5f27a1,_0x19c182){return db[_0x27f5('0x39')]['find']({'where':{'id':_0x5f27a1[_0x27f5('0x4e')]['id']}})[_0x27f5('0x13')](handleEntityNotFound(_0x19c182,null))[_0x27f5('0x13')](function(_0x266785){if(_0x266785){return _0x266785[_0x27f5('0x135')](_0x5f27a1['query'][_0x27f5('0x5d')])[_0x27f5('0x13')](function(){if(_[_0x27f5('0xac')](_0x5f27a1['query'][_0x27f5('0x5d')])){for(var _0x487948=0x0;_0x487948<_0x5f27a1[_0x27f5('0x52')]['ids'][_0x27f5('0x47')];_0x487948+=0x1){socket[_0x27f5('0x9f')](_0x27f5('0x136'),{'SmsInteractionId':Number(_0x5f27a1[_0x27f5('0x52')]['ids'][_0x487948]),'UserId':Number(_0x5f27a1[_0x27f5('0x4e')]['id'])});}}else{socket[_0x27f5('0x9f')](_0x27f5('0x136'),{'SmsInteractionId':Number(_0x5f27a1[_0x27f5('0x52')][_0x27f5('0x5d')]),'UserId':Number(_0x5f27a1[_0x27f5('0x4e')]['id'])});}});}})['then'](respondWithStatusCode(_0x19c182,null))[_0x27f5('0x1d')](handleError(_0x19c182,null));};exports[_0x27f5('0x137')]=function(_0x7d4bbe,_0x307f56){return db[_0x27f5('0x39')][_0x27f5('0x34')]({'where':{'id':_0x7d4bbe[_0x27f5('0x4e')]['id']}})[_0x27f5('0x13')](handleEntityNotFound(_0x307f56,null))[_0x27f5('0x13')](function(_0x1bf28a){if(_0x1bf28a){return _0x1bf28a[_0x27f5('0x137')](_0x7d4bbe[_0x27f5('0x59')][_0x27f5('0x5d')],_[_0x27f5('0x5c')](_0x7d4bbe['body'],[_0x27f5('0x5d'),'id'])||{})[_0x27f5('0x9e')](function(){for(var _0x1d7784=0x0;_0x1d7784<_0x7d4bbe[_0x27f5('0x59')]['ids'][_0x27f5('0x47')];_0x1d7784+=0x1){socket[_0x27f5('0x9f')](_0x27f5('0x138'),{'OpenchannelInteractionId':Number(_0x7d4bbe[_0x27f5('0x59')]['ids'][_0x1d7784]),'UserId':Number(_0x7d4bbe[_0x27f5('0x4e')]['id'])});}return _0x7d4bbe['body'][_0x27f5('0x5d')];});}})[_0x27f5('0x13')](respondWithResult(_0x307f56,null))[_0x27f5('0x1d')](handleError(_0x307f56,null));};exports[_0x27f5('0x139')]=function(_0x172cc0,_0x307159){return db['User'][_0x27f5('0x34')]({'where':{'id':_0x172cc0[_0x27f5('0x4e')]['id']}})[_0x27f5('0x13')](handleEntityNotFound(_0x307159,null))['then'](function(_0x1f980c){if(_0x1f980c){return _0x1f980c[_0x27f5('0x139')](_0x172cc0[_0x27f5('0x52')][_0x27f5('0x5d')])[_0x27f5('0x13')](function(){if(_[_0x27f5('0xac')](_0x172cc0['query'][_0x27f5('0x5d')])){for(var _0x2a9eb3=0x0;_0x2a9eb3<_0x172cc0[_0x27f5('0x52')]['ids']['length'];_0x2a9eb3+=0x1){socket[_0x27f5('0x9f')](_0x27f5('0x13a'),{'OpenchannelInteractionId':Number(_0x172cc0['query'][_0x27f5('0x5d')][_0x2a9eb3]),'UserId':Number(_0x172cc0['params']['id'])});}}else{socket['emit'](_0x27f5('0x13a'),{'OpenchannelInteractionId':Number(_0x172cc0['query'][_0x27f5('0x5d')]),'UserId':Number(_0x172cc0[_0x27f5('0x4e')]['id'])});}});}})['then'](respondWithStatusCode(_0x307159,null))[_0x27f5('0x1d')](handleError(_0x307159,null));};exports[_0x27f5('0x13b')]=function(_0x1c1548,_0x4bdcb8){return db[_0x27f5('0x39')]['find']({'where':{'id':_0x1c1548[_0x27f5('0x4e')]['id']}})[_0x27f5('0x13')](handleEntityNotFound(_0x4bdcb8,null))[_0x27f5('0x13')](function(_0x17017d){if(_0x17017d){return _0x17017d[_0x27f5('0x13b')](_0x1c1548[_0x27f5('0x59')]['ids'],_[_0x27f5('0x5c')](_0x1c1548['body'],[_0x27f5('0x5d'),'id'])||{})['spread'](function(){for(var _0xaafd0e=0x0;_0xaafd0e<_0x1c1548[_0x27f5('0x59')][_0x27f5('0x5d')][_0x27f5('0x47')];_0xaafd0e+=0x1){socket[_0x27f5('0x9f')]('user_has_whatsapp_interactions:save',{'WhatsappInteractionId':Number(_0x1c1548['body'][_0x27f5('0x5d')][_0xaafd0e]),'UserId':Number(_0x1c1548['params']['id'])});}return _0x1c1548[_0x27f5('0x59')]['ids'];});}})['then'](respondWithResult(_0x4bdcb8,null))[_0x27f5('0x1d')](handleError(_0x4bdcb8,null));};exports[_0x27f5('0x13c')]=function(_0x122145,_0x854ff8){return db[_0x27f5('0x39')][_0x27f5('0x34')]({'where':{'id':_0x122145['params']['id']}})['then'](handleEntityNotFound(_0x854ff8,null))[_0x27f5('0x13')](function(_0x5048f2){if(_0x5048f2){return _0x5048f2[_0x27f5('0x13c')](_0x122145[_0x27f5('0x52')][_0x27f5('0x5d')]);}})['then'](respondWithStatusCode(_0x854ff8,null))['catch'](handleError(_0x854ff8,null));};exports['getVoicePrefixes']=function(_0x10f1e2,_0x43c615){var _0x25fb8b={};var _0x318d1f={};var _0x3dc3d6;var _0x2e44fd;return db['User'][_0x27f5('0x8f')]({'where':{'id':_0x10f1e2[_0x27f5('0x4e')]['id']}})[_0x27f5('0x13')](handleEntityNotFound(_0x43c615,null))['then'](function(_0x46769e){if(_0x46769e){_0x3dc3d6=_0x46769e;_0x318d1f[_0x27f5('0x4f')]=_[_0x27f5('0x51')](db[_0x27f5('0x13d')][_0x27f5('0x3a')]);_0x318d1f['query']=_['keys'](_0x10f1e2[_0x27f5('0x52')]);_0x318d1f[_0x27f5('0x53')]=_[_0x27f5('0x54')](_0x318d1f['model'],_0x318d1f[_0x27f5('0x52')]);_0x25fb8b['attributes']=_[_0x27f5('0x54')](_0x318d1f['model'],qs[_0x27f5('0x55')](_0x10f1e2[_0x27f5('0x52')]['fields']));_0x25fb8b[_0x27f5('0x41')]=_0x25fb8b[_0x27f5('0x41')][_0x27f5('0x47')]?_0x25fb8b['attributes']:_0x318d1f['model'];_0x25fb8b[_0x27f5('0xcb')]=qs['sort'](_0x10f1e2[_0x27f5('0x52')][_0x27f5('0xcc')]);_0x25fb8b['where']=qs['filters'](_[_0x27f5('0xd7')](_0x10f1e2[_0x27f5('0x52')],_0x318d1f[_0x27f5('0x53')]));if(_0x10f1e2[_0x27f5('0x52')][_0x27f5('0x30')]){_0x25fb8b['where']=_[_0x27f5('0x56')](_0x25fb8b['where'],{'$or':_[_0x27f5('0x85')](_0x25fb8b['attributes'],function(_0xaf3d42){var _0x191426={};_0x191426[_0xaf3d42]={'$like':'%'+_0x10f1e2[_0x27f5('0x52')]['filter']+'%'};return _0x191426;})});}_0x25fb8b=_['merge']({},_0x25fb8b,_0x10f1e2[_0x27f5('0x57')]);return _0x3dc3d6[_0x27f5('0x13e')](_0x25fb8b);}})[_0x27f5('0x13')](function(_0x39bc02){if(_0x39bc02){_0x2e44fd=_0x39bc02[_0x27f5('0x47')];if(!_0x10f1e2[_0x27f5('0x52')]['hasOwnProperty'](_0x27f5('0xd5'))){_0x25fb8b[_0x27f5('0x23')]=qs[_0x27f5('0x23')](_0x10f1e2[_0x27f5('0x52')][_0x27f5('0x23')]);_0x25fb8b[_0x27f5('0x25')]=qs[_0x27f5('0x25')](_0x10f1e2['query']['offset']);}return _0x3dc3d6[_0x27f5('0x13e')](_0x25fb8b);}})['then'](function(_0x5527c8){if(_0x5527c8){return _0x5527c8?{'count':_0x2e44fd,'rows':_0x5527c8}:null;}})['then'](respondWithResult(_0x43c615,null))[_0x27f5('0x1d')](handleError(_0x43c615,null));};exports['getFaxAccounts']=function(_0x2e44ea,_0x102359){var _0x376d76={};var _0x45df33={};var _0x25b3bf;var _0x510fe7;return db[_0x27f5('0x39')][_0x27f5('0x8f')]({'where':{'id':_0x2e44ea[_0x27f5('0x4e')]['id']}})['then'](handleEntityNotFound(_0x102359,null))['then'](function(_0x3ddd92){if(_0x3ddd92){_0x25b3bf=_0x3ddd92;_0x45df33[_0x27f5('0x4f')]=_[_0x27f5('0x51')](db[_0x27f5('0x13f')][_0x27f5('0x3a')]);_0x45df33['query']=_['keys'](_0x2e44ea[_0x27f5('0x52')]);_0x45df33[_0x27f5('0x53')]=_['intersection'](_0x45df33[_0x27f5('0x4f')],_0x45df33['query']);_0x376d76['attributes']=_['intersection'](_0x45df33[_0x27f5('0x4f')],qs['fields'](_0x2e44ea[_0x27f5('0x52')]['fields']));_0x376d76[_0x27f5('0x41')]=_0x376d76[_0x27f5('0x41')][_0x27f5('0x47')]?_0x376d76['attributes']:_0x45df33[_0x27f5('0x4f')];_0x376d76[_0x27f5('0xcb')]=qs[_0x27f5('0xcc')](_0x2e44ea[_0x27f5('0x52')][_0x27f5('0xcc')]);_0x376d76[_0x27f5('0xcd')]=qs[_0x27f5('0x53')](_[_0x27f5('0xd7')](_0x2e44ea[_0x27f5('0x52')],_0x45df33[_0x27f5('0x53')]));if(_0x2e44ea['query'][_0x27f5('0x30')]){_0x376d76[_0x27f5('0xcd')]=_['merge'](_0x376d76[_0x27f5('0xcd')],{'$or':_['map'](_0x376d76[_0x27f5('0x41')],function(_0x5967f9){var _0x15cde4={};_0x15cde4[_0x5967f9]={'$like':'%'+_0x2e44ea[_0x27f5('0x52')]['filter']+'%'};return _0x15cde4;})});}_0x376d76=_[_0x27f5('0x56')]({},_0x376d76,_0x2e44ea['options']);return _0x25b3bf[_0x27f5('0x140')](_0x376d76);}})['then'](function(_0x480df1){if(_0x480df1){_0x510fe7=_0x480df1[_0x27f5('0x47')];if(!_0x2e44ea['query'][_0x27f5('0xce')](_0x27f5('0xd5'))){_0x376d76[_0x27f5('0x23')]=qs[_0x27f5('0x23')](_0x2e44ea[_0x27f5('0x52')][_0x27f5('0x23')]);_0x376d76['offset']=qs[_0x27f5('0x25')](_0x2e44ea[_0x27f5('0x52')][_0x27f5('0x25')]);}return _0x25b3bf[_0x27f5('0x140')](_0x376d76);}})[_0x27f5('0x13')](function(_0x5f216e){if(_0x5f216e){return _0x5f216e?{'count':_0x510fe7,'rows':_0x5f216e}:null;}})[_0x27f5('0x13')](respondWithResult(_0x102359,null))[_0x27f5('0x1d')](handleError(_0x102359,null));};exports[_0x27f5('0x141')]=function(_0x2eae63,_0x2f5e8b){return db['User'][_0x27f5('0x34')]({'where':{'id':_0x2eae63[_0x27f5('0x4e')]['id']}})[_0x27f5('0x13')](handleEntityNotFound(_0x2f5e8b,null))[_0x27f5('0x13')](function(_0x8b02df){if(_0x8b02df){return _0x8b02df['addFaxAccounts'](_0x2eae63['body'][_0x27f5('0x5d')],_[_0x27f5('0x5c')](_0x2eae63[_0x27f5('0x59')],[_0x27f5('0x5d'),'id'])||{});}})[_0x27f5('0x13')](respondWithResult(_0x2f5e8b,null))[_0x27f5('0x1d')](handleError(_0x2f5e8b,null));};exports[_0x27f5('0x142')]=function(_0xbcb4,_0x365597){return db['User']['find']({'where':{'id':_0xbcb4[_0x27f5('0x4e')]['id']}})[_0x27f5('0x13')](handleEntityNotFound(_0x365597,null))[_0x27f5('0x13')](function(_0xc8a10){if(_0xc8a10){return _0xc8a10['removeFaxAccounts'](_0xbcb4[_0x27f5('0x52')][_0x27f5('0x5d')]);}})[_0x27f5('0x13')](respondWithStatusCode(_0x365597,null))[_0x27f5('0x1d')](handleError(_0x365597,null));};exports[_0x27f5('0x143')]=function(_0xa494b4,_0x35ccc3){var _0x40e7af={};var _0x241f9d={};var _0x1d7468;var _0x248e1a;return db[_0x27f5('0x39')][_0x27f5('0x8f')]({'where':{'id':_0xa494b4[_0x27f5('0x4e')]['id']}})[_0x27f5('0x13')](handleEntityNotFound(_0x35ccc3,null))[_0x27f5('0x13')](function(_0x33a4ff){if(_0x33a4ff){_0x1d7468=_0x33a4ff;_0x241f9d[_0x27f5('0x4f')]=_[_0x27f5('0x51')](db[_0x27f5('0x144')]['rawAttributes']);_0x241f9d[_0x27f5('0x52')]=_[_0x27f5('0x51')](_0xa494b4[_0x27f5('0x52')]);_0x241f9d['filters']=_['intersection'](_0x241f9d[_0x27f5('0x4f')],_0x241f9d[_0x27f5('0x52')]);_0x40e7af['attributes']=_[_0x27f5('0x54')](_0x241f9d[_0x27f5('0x4f')],qs[_0x27f5('0x55')](_0xa494b4['query'][_0x27f5('0x55')]));_0x40e7af['attributes']=_0x40e7af[_0x27f5('0x41')][_0x27f5('0x47')]?_0x40e7af['attributes']:_0x241f9d[_0x27f5('0x4f')];_0x40e7af['order']=qs['sort'](_0xa494b4[_0x27f5('0x52')][_0x27f5('0xcc')]);_0x40e7af[_0x27f5('0xcd')]=qs['filters'](_[_0x27f5('0xd7')](_0xa494b4[_0x27f5('0x52')],_0x241f9d[_0x27f5('0x53')]));if(_0xa494b4['query'][_0x27f5('0x30')]){_0x40e7af[_0x27f5('0xcd')]=_[_0x27f5('0x56')](_0x40e7af[_0x27f5('0xcd')],{'$or':_[_0x27f5('0x85')](_0x40e7af[_0x27f5('0x41')],function(_0xd9b50b){var _0x4abe97={};_0x4abe97[_0xd9b50b]={'$like':'%'+_0xa494b4[_0x27f5('0x52')][_0x27f5('0x30')]+'%'};return _0x4abe97;})});}_0x40e7af=_[_0x27f5('0x56')]({},_0x40e7af,_0xa494b4[_0x27f5('0x57')]);return _0x1d7468['getMailAccounts'](_0x40e7af);}})[_0x27f5('0x13')](function(_0x1f4873){if(_0x1f4873){_0x248e1a=_0x1f4873[_0x27f5('0x47')];if(!_0xa494b4[_0x27f5('0x52')][_0x27f5('0xce')]('nolimit')){_0x40e7af[_0x27f5('0x23')]=qs['limit'](_0xa494b4[_0x27f5('0x52')]['limit']);_0x40e7af[_0x27f5('0x25')]=qs[_0x27f5('0x25')](_0xa494b4[_0x27f5('0x52')][_0x27f5('0x25')]);}return _0x1d7468[_0x27f5('0x143')](_0x40e7af);}})[_0x27f5('0x13')](function(_0x869fe3){if(_0x869fe3){return _0x869fe3?{'count':_0x248e1a,'rows':_0x869fe3}:null;}})[_0x27f5('0x13')](respondWithResult(_0x35ccc3,null))[_0x27f5('0x1d')](handleError(_0x35ccc3,null));};exports[_0x27f5('0x145')]=function(_0x4bcbd4,_0x3055dc){return db['User'][_0x27f5('0x34')]({'where':{'id':_0x4bcbd4[_0x27f5('0x4e')]['id']}})[_0x27f5('0x13')](handleEntityNotFound(_0x3055dc,null))[_0x27f5('0x13')](function(_0x23cb63){if(_0x23cb63){return _0x23cb63[_0x27f5('0x145')](_0x4bcbd4['body']['ids'],_[_0x27f5('0x5c')](_0x4bcbd4[_0x27f5('0x59')],[_0x27f5('0x5d'),'id'])||{});}})[_0x27f5('0x13')](respondWithResult(_0x3055dc,null))[_0x27f5('0x1d')](handleError(_0x3055dc,null));};exports[_0x27f5('0x146')]=function(_0x59ad98,_0x3e2e83){return db[_0x27f5('0x39')][_0x27f5('0x34')]({'where':{'id':_0x59ad98[_0x27f5('0x4e')]['id']}})['then'](handleEntityNotFound(_0x3e2e83,null))['then'](function(_0x16720b){if(_0x16720b){return _0x16720b[_0x27f5('0x146')](_0x59ad98[_0x27f5('0x52')][_0x27f5('0x5d')]);}})[_0x27f5('0x13')](respondWithStatusCode(_0x3e2e83,null))[_0x27f5('0x1d')](handleError(_0x3e2e83,null));};exports['getOpenchannelAccounts']=function(_0x40e725,_0x2b859b){var _0x521d42={};var _0x514048={};var _0x591cb2;var _0x5db280;return db[_0x27f5('0x39')][_0x27f5('0x8f')]({'where':{'id':_0x40e725['params']['id']}})[_0x27f5('0x13')](handleEntityNotFound(_0x2b859b,null))['then'](function(_0x13ffee){if(_0x13ffee){_0x591cb2=_0x13ffee;_0x514048[_0x27f5('0x4f')]=_[_0x27f5('0x51')](db[_0x27f5('0x147')][_0x27f5('0x3a')]);_0x514048[_0x27f5('0x52')]=_[_0x27f5('0x51')](_0x40e725['query']);_0x514048[_0x27f5('0x53')]=_[_0x27f5('0x54')](_0x514048[_0x27f5('0x4f')],_0x514048['query']);_0x521d42['attributes']=_[_0x27f5('0x54')](_0x514048[_0x27f5('0x4f')],qs[_0x27f5('0x55')](_0x40e725['query'][_0x27f5('0x55')]));_0x521d42[_0x27f5('0x41')]=_0x521d42[_0x27f5('0x41')][_0x27f5('0x47')]?_0x521d42['attributes']:_0x514048[_0x27f5('0x4f')];_0x521d42[_0x27f5('0xcb')]=qs[_0x27f5('0xcc')](_0x40e725['query']['sort']);_0x521d42[_0x27f5('0xcd')]=qs[_0x27f5('0x53')](_[_0x27f5('0xd7')](_0x40e725[_0x27f5('0x52')],_0x514048['filters']));if(_0x40e725['query'][_0x27f5('0x30')]){_0x521d42[_0x27f5('0xcd')]=_[_0x27f5('0x56')](_0x521d42['where'],{'$or':_[_0x27f5('0x85')](_0x521d42[_0x27f5('0x41')],function(_0x53467f){var _0x26c4f7={};_0x26c4f7[_0x53467f]={'$like':'%'+_0x40e725[_0x27f5('0x52')][_0x27f5('0x30')]+'%'};return _0x26c4f7;})});}_0x521d42=_[_0x27f5('0x56')]({},_0x521d42,_0x40e725[_0x27f5('0x57')]);return _0x591cb2[_0x27f5('0x148')](_0x521d42);}})[_0x27f5('0x13')](function(_0x221190){if(_0x221190){_0x5db280=_0x221190['length'];if(!_0x40e725['query'][_0x27f5('0xce')]('nolimit')){_0x521d42[_0x27f5('0x23')]=qs[_0x27f5('0x23')](_0x40e725[_0x27f5('0x52')][_0x27f5('0x23')]);_0x521d42[_0x27f5('0x25')]=qs['offset'](_0x40e725[_0x27f5('0x52')][_0x27f5('0x25')]);}return _0x591cb2[_0x27f5('0x148')](_0x521d42);}})['then'](function(_0x49e4cb){if(_0x49e4cb){return _0x49e4cb?{'count':_0x5db280,'rows':_0x49e4cb}:null;}})[_0x27f5('0x13')](respondWithResult(_0x2b859b,null))[_0x27f5('0x1d')](handleError(_0x2b859b,null));};exports[_0x27f5('0x149')]=function(_0x5afe73,_0x4efe38){return db[_0x27f5('0x39')][_0x27f5('0x34')]({'where':{'id':_0x5afe73[_0x27f5('0x4e')]['id']}})[_0x27f5('0x13')](handleEntityNotFound(_0x4efe38,null))[_0x27f5('0x13')](function(_0x141367){if(_0x141367){return _0x141367['addOpenchannelAccounts'](_0x5afe73['body'][_0x27f5('0x5d')],_[_0x27f5('0x5c')](_0x5afe73[_0x27f5('0x59')],[_0x27f5('0x5d'),'id'])||{});}})['then'](respondWithResult(_0x4efe38,null))[_0x27f5('0x1d')](handleError(_0x4efe38,null));};exports['removeOpenchannelAccounts']=function(_0x2d4c76,_0x4b8c47){return db[_0x27f5('0x39')][_0x27f5('0x34')]({'where':{'id':_0x2d4c76[_0x27f5('0x4e')]['id']}})['then'](handleEntityNotFound(_0x4b8c47,null))[_0x27f5('0x13')](function(_0x311759){if(_0x311759){return _0x311759['removeOpenchannelAccounts'](_0x2d4c76[_0x27f5('0x52')]['ids']);}})[_0x27f5('0x13')](respondWithStatusCode(_0x4b8c47,null))['catch'](handleError(_0x4b8c47,null));};exports[_0x27f5('0x14a')]=function(_0xbbfe0d,_0x53ae24){var _0x42934d={};var _0x1d7509={};var _0x485304;var _0x1aa2ad;return db[_0x27f5('0x39')][_0x27f5('0x8f')]({'where':{'id':_0xbbfe0d['params']['id']}})[_0x27f5('0x13')](handleEntityNotFound(_0x53ae24,null))[_0x27f5('0x13')](function(_0x178506){if(_0x178506){_0x485304=_0x178506;_0x1d7509[_0x27f5('0x4f')]=_[_0x27f5('0x51')](db[_0x27f5('0x14b')][_0x27f5('0x3a')]);_0x1d7509[_0x27f5('0x52')]=_['keys'](_0xbbfe0d[_0x27f5('0x52')]);_0x1d7509['filters']=_[_0x27f5('0x54')](_0x1d7509[_0x27f5('0x4f')],_0x1d7509[_0x27f5('0x52')]);_0x42934d[_0x27f5('0x41')]=_[_0x27f5('0x54')](_0x1d7509[_0x27f5('0x4f')],qs['fields'](_0xbbfe0d['query']['fields']));_0x42934d[_0x27f5('0x41')]=_0x42934d[_0x27f5('0x41')][_0x27f5('0x47')]?_0x42934d['attributes']:_0x1d7509[_0x27f5('0x4f')];_0x42934d['order']=qs['sort'](_0xbbfe0d[_0x27f5('0x52')][_0x27f5('0xcc')]);_0x42934d['where']=qs[_0x27f5('0x53')](_['pick'](_0xbbfe0d[_0x27f5('0x52')],_0x1d7509['filters']));if(_0xbbfe0d[_0x27f5('0x52')][_0x27f5('0x30')]){_0x42934d[_0x27f5('0xcd')]=_[_0x27f5('0x56')](_0x42934d[_0x27f5('0xcd')],{'$or':_[_0x27f5('0x85')](_0x42934d[_0x27f5('0x41')],function(_0x5a0122){var _0x1bceb1={};_0x1bceb1[_0x5a0122]={'$like':'%'+_0xbbfe0d['query']['filter']+'%'};return _0x1bceb1;})});}_0x42934d=_[_0x27f5('0x56')]({},_0x42934d,_0xbbfe0d['options']);return _0x485304['getSmsAccounts'](_0x42934d);}})['then'](function(_0x524132){if(_0x524132){_0x1aa2ad=_0x524132[_0x27f5('0x47')];if(!_0xbbfe0d[_0x27f5('0x52')]['hasOwnProperty'](_0x27f5('0xd5'))){_0x42934d[_0x27f5('0x23')]=qs[_0x27f5('0x23')](_0xbbfe0d[_0x27f5('0x52')][_0x27f5('0x23')]);_0x42934d[_0x27f5('0x25')]=qs['offset'](_0xbbfe0d[_0x27f5('0x52')]['offset']);}return _0x485304[_0x27f5('0x14a')](_0x42934d);}})[_0x27f5('0x13')](function(_0x53eb0c){if(_0x53eb0c){return _0x53eb0c?{'count':_0x1aa2ad,'rows':_0x53eb0c}:null;}})[_0x27f5('0x13')](respondWithResult(_0x53ae24,null))[_0x27f5('0x1d')](handleError(_0x53ae24,null));};exports[_0x27f5('0x14c')]=function(_0x5c258b,_0x3f8728){return db[_0x27f5('0x39')][_0x27f5('0x34')]({'where':{'id':_0x5c258b[_0x27f5('0x4e')]['id']}})[_0x27f5('0x13')](handleEntityNotFound(_0x3f8728,null))['then'](function(_0x2188d5){if(_0x2188d5){return _0x2188d5['addSmsAccounts'](_0x5c258b[_0x27f5('0x59')]['ids'],_[_0x27f5('0x5c')](_0x5c258b[_0x27f5('0x59')],['ids','id'])||{});}})[_0x27f5('0x13')](respondWithResult(_0x3f8728,null))[_0x27f5('0x1d')](handleError(_0x3f8728,null));};exports[_0x27f5('0x14d')]=function(_0x482218,_0x40bd2c){return db[_0x27f5('0x39')][_0x27f5('0x34')]({'where':{'id':_0x482218[_0x27f5('0x4e')]['id']}})[_0x27f5('0x13')](handleEntityNotFound(_0x40bd2c,null))[_0x27f5('0x13')](function(_0x58e4bd){if(_0x58e4bd){return _0x58e4bd[_0x27f5('0x14d')](_0x482218[_0x27f5('0x52')]['ids']);}})[_0x27f5('0x13')](respondWithStatusCode(_0x40bd2c,null))[_0x27f5('0x1d')](handleError(_0x40bd2c,null));};exports[_0x27f5('0x14e')]=function(_0xd4376b,_0x2745c5){var _0x5944c6={};var _0xd7ee6={};var _0x4daaf4;var _0x54aa65;return db[_0x27f5('0x39')]['findOne']({'where':{'id':_0xd4376b['params']['id']}})['then'](handleEntityNotFound(_0x2745c5,null))['then'](function(_0x455d7a){if(_0x455d7a){_0x4daaf4=_0x455d7a;_0xd7ee6[_0x27f5('0x4f')]=_[_0x27f5('0x51')](db[_0x27f5('0x14f')]['rawAttributes']);_0xd7ee6[_0x27f5('0x52')]=_[_0x27f5('0x51')](_0xd4376b[_0x27f5('0x52')]);_0xd7ee6[_0x27f5('0x53')]=_[_0x27f5('0x54')](_0xd7ee6[_0x27f5('0x4f')],_0xd7ee6['query']);_0x5944c6['attributes']=_[_0x27f5('0x54')](_0xd7ee6['model'],qs[_0x27f5('0x55')](_0xd4376b[_0x27f5('0x52')][_0x27f5('0x55')]));_0x5944c6[_0x27f5('0x41')]=_0x5944c6[_0x27f5('0x41')][_0x27f5('0x47')]?_0x5944c6[_0x27f5('0x41')]:_0xd7ee6[_0x27f5('0x4f')];_0x5944c6[_0x27f5('0xcb')]=qs[_0x27f5('0xcc')](_0xd4376b[_0x27f5('0x52')][_0x27f5('0xcc')]);_0x5944c6[_0x27f5('0xcd')]=qs[_0x27f5('0x53')](_['pick'](_0xd4376b['query'],_0xd7ee6['filters']));if(_0xd4376b[_0x27f5('0x52')][_0x27f5('0x30')]){_0x5944c6[_0x27f5('0xcd')]=_[_0x27f5('0x56')](_0x5944c6['where'],{'$or':_[_0x27f5('0x85')](_0x5944c6[_0x27f5('0x41')],function(_0x372e52){var _0xa10f85={};_0xa10f85[_0x372e52]={'$like':'%'+_0xd4376b[_0x27f5('0x52')][_0x27f5('0x30')]+'%'};return _0xa10f85;})});}_0x5944c6=_[_0x27f5('0x56')]({},_0x5944c6,_0xd4376b[_0x27f5('0x57')]);return _0x4daaf4['getChatWebsites'](_0x5944c6);}})['then'](function(_0x3427d8){if(_0x3427d8){_0x54aa65=_0x3427d8[_0x27f5('0x47')];if(!_0xd4376b[_0x27f5('0x52')]['hasOwnProperty']('nolimit')){_0x5944c6[_0x27f5('0x23')]=qs['limit'](_0xd4376b['query'][_0x27f5('0x23')]);_0x5944c6[_0x27f5('0x25')]=qs[_0x27f5('0x25')](_0xd4376b['query'][_0x27f5('0x25')]);}return _0x4daaf4[_0x27f5('0x14e')](_0x5944c6);}})[_0x27f5('0x13')](function(_0x1e9b39){if(_0x1e9b39){return _0x1e9b39?{'count':_0x54aa65,'rows':_0x1e9b39}:null;}})[_0x27f5('0x13')](respondWithResult(_0x2745c5,null))[_0x27f5('0x1d')](handleError(_0x2745c5,null));};exports['addChatWebsites']=function(_0x10d969,_0x4bf8e9){return db[_0x27f5('0x39')][_0x27f5('0x34')]({'where':{'id':_0x10d969[_0x27f5('0x4e')]['id']}})[_0x27f5('0x13')](handleEntityNotFound(_0x4bf8e9,null))[_0x27f5('0x13')](function(_0x5855bd){if(_0x5855bd){return _0x5855bd[_0x27f5('0x150')](_0x10d969[_0x27f5('0x59')][_0x27f5('0x5d')],_['omit'](_0x10d969[_0x27f5('0x59')],[_0x27f5('0x5d'),'id'])||{});}})[_0x27f5('0x13')](respondWithResult(_0x4bf8e9,null))[_0x27f5('0x1d')](handleError(_0x4bf8e9,null));};exports[_0x27f5('0x151')]=function(_0x2bbefa,_0x1db6a0){return db[_0x27f5('0x39')][_0x27f5('0x34')]({'where':{'id':_0x2bbefa[_0x27f5('0x4e')]['id']}})['then'](handleEntityNotFound(_0x1db6a0,null))[_0x27f5('0x13')](function(_0x4b841c){if(_0x4b841c){return _0x4b841c[_0x27f5('0x151')](_0x2bbefa[_0x27f5('0x52')]['ids']);}})[_0x27f5('0x13')](respondWithStatusCode(_0x1db6a0,null))[_0x27f5('0x1d')](handleError(_0x1db6a0,null));};exports[_0x27f5('0x152')]=function(_0x5c24ac,_0x3e6646){var _0x287f59={};var _0x169378={};var _0x436846;var _0x438eb2;return db[_0x27f5('0x39')][_0x27f5('0x8f')]({'where':{'id':_0x5c24ac['params']['id']}})[_0x27f5('0x13')](handleEntityNotFound(_0x3e6646,null))['then'](function(_0x535908){if(_0x535908){_0x436846=_0x535908;_0x169378['model']=_[_0x27f5('0x51')](db[_0x27f5('0x153')][_0x27f5('0x3a')]);_0x169378[_0x27f5('0x52')]=_[_0x27f5('0x51')](_0x5c24ac[_0x27f5('0x52')]);_0x169378[_0x27f5('0x53')]=_[_0x27f5('0x54')](_0x169378['model'],_0x169378[_0x27f5('0x52')]);_0x287f59[_0x27f5('0x41')]=_[_0x27f5('0x54')](_0x169378[_0x27f5('0x4f')],qs['fields'](_0x5c24ac[_0x27f5('0x52')][_0x27f5('0x55')]));_0x287f59['attributes']=_0x287f59['attributes'][_0x27f5('0x47')]?_0x287f59[_0x27f5('0x41')]:_0x169378['model'];_0x287f59[_0x27f5('0xcb')]=qs['sort'](_0x5c24ac[_0x27f5('0x52')][_0x27f5('0xcc')]);_0x287f59['where']=qs[_0x27f5('0x53')](_['pick'](_0x5c24ac[_0x27f5('0x52')],_0x169378['filters']));if(_0x5c24ac[_0x27f5('0x52')][_0x27f5('0x30')]){_0x287f59[_0x27f5('0xcd')]=_['merge'](_0x287f59[_0x27f5('0xcd')],{'$or':_[_0x27f5('0x85')](_0x287f59[_0x27f5('0x41')],function(_0x3f8c1e){var _0x4b1ab6={};_0x4b1ab6[_0x3f8c1e]={'$like':'%'+_0x5c24ac['query'][_0x27f5('0x30')]+'%'};return _0x4b1ab6;})});}_0x287f59=_[_0x27f5('0x56')]({},_0x287f59,_0x5c24ac['options']);return _0x436846['getWhatsappAccounts'](_0x287f59);}})[_0x27f5('0x13')](function(_0x566aae){if(_0x566aae){_0x438eb2=_0x566aae[_0x27f5('0x47')];if(!_0x5c24ac[_0x27f5('0x52')]['hasOwnProperty'](_0x27f5('0xd5'))){_0x287f59[_0x27f5('0x23')]=qs['limit'](_0x5c24ac[_0x27f5('0x52')][_0x27f5('0x23')]);_0x287f59['offset']=qs[_0x27f5('0x25')](_0x5c24ac[_0x27f5('0x52')][_0x27f5('0x25')]);}return _0x436846[_0x27f5('0x152')](_0x287f59);}})['then'](function(_0x463e3e){if(_0x463e3e){return _0x463e3e?{'count':_0x438eb2,'rows':_0x463e3e}:null;}})[_0x27f5('0x13')](respondWithResult(_0x3e6646,null))[_0x27f5('0x1d')](handleError(_0x3e6646,null));};exports[_0x27f5('0x154')]=function(_0x35a7c9,_0x4f23b0){return db[_0x27f5('0x39')]['find']({'where':{'id':_0x35a7c9['params']['id']}})['then'](handleEntityNotFound(_0x4f23b0,null))['then'](function(_0x2071a4){if(_0x2071a4){return _0x2071a4[_0x27f5('0x154')](_0x35a7c9['body'][_0x27f5('0x5d')],_[_0x27f5('0x5c')](_0x35a7c9[_0x27f5('0x59')],['ids','id'])||{});}})[_0x27f5('0x13')](respondWithResult(_0x4f23b0,null))[_0x27f5('0x1d')](handleError(_0x4f23b0,null));};exports['removeWhatsappAccounts']=function(_0x135b6d,_0x549b0c){return db[_0x27f5('0x39')][_0x27f5('0x34')]({'where':{'id':_0x135b6d[_0x27f5('0x4e')]['id']}})['then'](handleEntityNotFound(_0x549b0c,null))[_0x27f5('0x13')](function(_0x109e6f){if(_0x109e6f){return _0x109e6f['removeWhatsappAccounts'](_0x135b6d[_0x27f5('0x52')][_0x27f5('0x5d')]);}})[_0x27f5('0x13')](respondWithStatusCode(_0x549b0c,null))['catch'](handleError(_0x549b0c,null));};exports[_0x27f5('0x155')]=function(_0x31ef14,_0x1622c3){var _0x14ee6f={};var _0x49edc7={};var _0x2677f7;var _0x41bf64;return db['User'][_0x27f5('0x8f')]({'where':{'id':_0x31ef14['params']['id']}})[_0x27f5('0x13')](handleEntityNotFound(_0x1622c3,null))['then'](function(_0x36fe27){if(_0x36fe27){_0x2677f7=_0x36fe27;_0x49edc7['model']=_['keys'](db[_0x27f5('0x156')][_0x27f5('0x3a')]);_0x49edc7[_0x27f5('0x52')]=_[_0x27f5('0x51')](_0x31ef14[_0x27f5('0x52')]);_0x49edc7[_0x27f5('0x53')]=_[_0x27f5('0x54')](_0x49edc7[_0x27f5('0x4f')],_0x49edc7[_0x27f5('0x52')]);_0x14ee6f['attributes']=_['intersection'](_0x49edc7[_0x27f5('0x4f')],qs['fields'](_0x31ef14[_0x27f5('0x52')][_0x27f5('0x55')]));_0x14ee6f[_0x27f5('0x41')]=_0x14ee6f[_0x27f5('0x41')][_0x27f5('0x47')]?_0x14ee6f[_0x27f5('0x41')]:_0x49edc7['model'];_0x14ee6f[_0x27f5('0xcb')]=qs[_0x27f5('0xcc')](_0x31ef14[_0x27f5('0x52')][_0x27f5('0xcc')]);_0x14ee6f[_0x27f5('0xcd')]=qs[_0x27f5('0x53')](_[_0x27f5('0xd7')](_0x31ef14[_0x27f5('0x52')],_0x49edc7[_0x27f5('0x53')]));if(_0x31ef14[_0x27f5('0x52')]['filter']){_0x14ee6f[_0x27f5('0xcd')]=_['merge'](_0x14ee6f[_0x27f5('0xcd')],{'$or':_[_0x27f5('0x85')](_0x14ee6f[_0x27f5('0x41')],function(_0x28adfe){var _0x42af13={};_0x42af13[_0x28adfe]={'$like':'%'+_0x31ef14[_0x27f5('0x52')]['filter']+'%'};return _0x42af13;})});}_0x14ee6f=_['merge']({},_0x14ee6f,_0x31ef14['options']);return _0x2677f7[_0x27f5('0x155')](_0x14ee6f);}})[_0x27f5('0x13')](function(_0x5b82f8){if(_0x5b82f8){_0x41bf64=_0x5b82f8[_0x27f5('0x47')];if(!_0x31ef14[_0x27f5('0x52')][_0x27f5('0xce')](_0x27f5('0xd5'))){_0x14ee6f[_0x27f5('0x23')]=qs[_0x27f5('0x23')](_0x31ef14[_0x27f5('0x52')]['limit']);_0x14ee6f[_0x27f5('0x25')]=qs[_0x27f5('0x25')](_0x31ef14['query']['offset']);}return _0x2677f7[_0x27f5('0x155')](_0x14ee6f);}})[_0x27f5('0x13')](function(_0x5abdb4){if(_0x5abdb4){return _0x5abdb4?{'count':_0x41bf64,'rows':_0x5abdb4}:null;}})[_0x27f5('0x13')](respondWithResult(_0x1622c3,null))[_0x27f5('0x1d')](handleError(_0x1622c3,null));};exports[_0x27f5('0x157')]=function(_0x177bf3,_0x5d692f){return db[_0x27f5('0x39')][_0x27f5('0x34')]({'where':{'id':_0x177bf3[_0x27f5('0x4e')]['id']}})['then'](handleEntityNotFound(_0x5d692f,null))['then'](function(_0x3697ee){if(_0x3697ee){return _0x3697ee[_0x27f5('0x157')](_0x177bf3['body'][_0x27f5('0x5d')],_[_0x27f5('0x5c')](_0x177bf3[_0x27f5('0x59')],['ids','id'])||{});}})['then'](respondWithResult(_0x5d692f,null))[_0x27f5('0x1d')](handleError(_0x5d692f,null));};exports['removeSquareProjects']=function(_0x512015,_0x2a327e){return db[_0x27f5('0x39')][_0x27f5('0x34')]({'where':{'id':_0x512015[_0x27f5('0x4e')]['id']}})[_0x27f5('0x13')](handleEntityNotFound(_0x2a327e,null))['then'](function(_0x2ac38a){if(_0x2ac38a){return _0x2ac38a[_0x27f5('0x158')](_0x512015['query'][_0x27f5('0x5d')]);}})[_0x27f5('0x13')](respondWithStatusCode(_0x2a327e,null))[_0x27f5('0x1d')](handleError(_0x2a327e,null));};exports[_0x27f5('0x159')]=function(_0x1aa7be,_0xa3e2b2){var _0x199eb3={},_0x59f931={},_0xaf35ad={'count':0x0,'rows':[]};var _0x54687f=db[_0x27f5('0x15a')][_0x27f5('0x3a')];_0x59f931[_0x27f5('0x4f')]=_[_0x27f5('0x51')](_0x54687f);_0x59f931[_0x27f5('0x52')]=_['keys'](_0x1aa7be[_0x27f5('0x52')]);_0x59f931[_0x27f5('0x53')]=_['intersection'](_0x59f931['model'],_0x59f931[_0x27f5('0x52')]);_0x59f931[_0x27f5('0x53')]=_[_0x27f5('0x15b')](_0x59f931['filters'],[_0x27f5('0x15c'),'$or',_0x27f5('0x15d'),'$gte',_0x27f5('0x15e'),'$lte',_0x27f5('0x15f'),_0x27f5('0x160'),_0x27f5('0x161'),_0x27f5('0x162'),'$notBetween',_0x27f5('0x163'),_0x27f5('0x164'),_0x27f5('0x165'),_0x27f5('0x166'),_0x27f5('0x167'),_0x27f5('0x168'),_0x27f5('0x165'),_0x27f5('0x169'),_0x27f5('0x16a'),'$contained',_0x27f5('0x16b')]);_0x199eb3[_0x27f5('0x41')]=_[_0x27f5('0x54')](_0x59f931[_0x27f5('0x4f')],qs[_0x27f5('0x55')](_0x1aa7be['query'][_0x27f5('0x55')]));_0x199eb3[_0x27f5('0x41')]=_0x199eb3['attributes'][_0x27f5('0x47')]?_0x199eb3['attributes']:_0x59f931['model'];if(!_0x1aa7be['query'][_0x27f5('0xce')](_0x27f5('0xd5'))){_0x199eb3[_0x27f5('0x23')]=qs[_0x27f5('0x23')](_0x1aa7be[_0x27f5('0x52')][_0x27f5('0x23')]);_0x199eb3['offset']=qs['offset'](_0x1aa7be['query']['offset']);}_0x199eb3['order']=qs['sort'](_0x1aa7be[_0x27f5('0x52')][_0x27f5('0xcc')]);_0x199eb3[_0x27f5('0xcd')]=qs[_0x27f5('0x53')](_[_0x27f5('0xd7')](_0x1aa7be[_0x27f5('0x52')],_0x59f931['filters']));if(_0x1aa7be[_0x27f5('0x52')][_0x27f5('0x30')]){_0x199eb3['where']=_[_0x27f5('0x56')](_0x199eb3[_0x27f5('0xcd')],{'$or':_[_0x27f5('0x85')](_0x199eb3[_0x27f5('0x41')],function(_0x39cbab){var _0x24fad9={};_0x24fad9[_0x39cbab]={'$like':'%'+_0x1aa7be['query'][_0x27f5('0x30')]+'%'};return _0x24fad9;})});}_0x199eb3[_0x27f5('0xcd')]={'$and':[_0x199eb3[_0x27f5('0xcd')],{'$or':[{'UserId':_0x1aa7be[_0x27f5('0x4e')]['id']},{'OwnerId':_0x1aa7be[_0x27f5('0x4e')]['id']}]}]};_0x199eb3=_[_0x27f5('0x56')]({},_0x199eb3,_0x1aa7be['options']);var _0x21427e={'where':_0x199eb3[_0x27f5('0xcd')]};return db['CmHopper'][_0x27f5('0x24')](_0x21427e)[_0x27f5('0x13')](function(_0x25d3d9){_0xaf35ad[_0x27f5('0x24')]=_0x25d3d9;if(_0x1aa7be[_0x27f5('0x52')]['includeAll']){_0x199eb3[_0x27f5('0x40')]=[{'attributes':['id','firstName',_0x27f5('0x16c'),_0x27f5('0xe8')],'model':db[_0x27f5('0xca')],'as':'Contact'},{'attributes':['id',_0x27f5('0x35'),_0x27f5('0x16d')],'model':db[_0x27f5('0xa1')],'as':_0x27f5('0xd6')}];}return db[_0x27f5('0x15a')][_0x27f5('0x43')](_0x199eb3);})[_0x27f5('0x13')](function(_0x2f04a7){_0xaf35ad[_0x27f5('0x44')]=_0x2f04a7;return _0xaf35ad;})['then'](respondWithFilteredResult(_0xa3e2b2,_0x199eb3))['catch'](handleError(_0xa3e2b2,null));};exports[_0x27f5('0x16e')]=function(_0xbf06f7,_0x1606d3){if(!_[_0x27f5('0x62')](_0xbf06f7[_0x27f5('0x2c')]['id'])&&(_0xbf06f7[_0x27f5('0x2c')][_0x27f5('0x29')]=='admin'||_0xbf06f7[_0x27f5('0x2c')][_0x27f5('0x29')]==_0x27f5('0x2c'))){return db[_0x27f5('0x39')][_0x27f5('0x8f')]({'where':{'id':_0xbf06f7[_0x27f5('0x4e')]['id']},'raw':!![]})[_0x27f5('0x13')](function(_0x4c71d3){return authService[_0x27f5('0x16f')](_0x4c71d3);})[_0x27f5('0x13')](function(_0x51e00e){if(_0x51e00e){return _0x1606d3['status'](0xc8)['json']({'api_key':_0x51e00e[_0x27f5('0x170')]});}else{return _0x1606d3['status'](0xcc)[_0x27f5('0x21')]({'message':_0x27f5('0x171')});}})[_0x27f5('0x1d')](handleError(_0x1606d3,0x193));}else{return _0x1606d3[_0x27f5('0x1f')](0x191)[_0x27f5('0x21')]({'message':_0x27f5('0x172')});}};exports[_0x27f5('0x173')]=function(_0x587f74,_0x5d06d5){if(!_[_0x27f5('0x62')](_0x587f74[_0x27f5('0x2c')]['id'])&&(_0x587f74[_0x27f5('0x2c')][_0x27f5('0x29')]==_0x27f5('0x2a')||_0x587f74[_0x27f5('0x2c')][_0x27f5('0x29')]=='user')){return db[_0x27f5('0x39')]['find']({'where':{'id':_0x587f74[_0x27f5('0x4e')]['id']}})['then'](function(_0x40eb65){return authService['generateApiKey'](_0x40eb65);})['then'](function(_0x516558){return db[_0x27f5('0x39')][_0x27f5('0x27')]({'apiKeyIat':_0x516558['iat'],'apiKeyNonce':_0x516558['nonce']},{'where':{'id':_0x587f74['params']['id']}})['then'](function(){return _0x5d06d5[_0x27f5('0x1f')](0xc8)[_0x27f5('0x21')]({'api_key':_0x516558[_0x27f5('0x170')]});});})['catch'](handleError(_0x5d06d5,0x193));}else{return _0x5d06d5[_0x27f5('0x1f')](0x191)[_0x27f5('0x21')]({'message':_0x27f5('0x172')});}};exports[_0x27f5('0x174')]=function(_0x220452,_0x257c7b){if(!_[_0x27f5('0x62')](_0x220452['user']['id'])&&(_0x220452[_0x27f5('0x2c')][_0x27f5('0x29')]=='admin'||_0x220452[_0x27f5('0x2c')][_0x27f5('0x29')]==_0x27f5('0x2c'))){return db[_0x27f5('0x39')]['find']({'where':{'id':_0x220452['params']['id']}})[_0x27f5('0x13')](handleEntityNotFound(_0x257c7b,null))[_0x27f5('0x13')](function(_0x4f0ca4){if(_0x4f0ca4&&_0x4f0ca4[_0x27f5('0x175')]&&_0x4f0ca4[_0x27f5('0x176')])return _0x4f0ca4;else throw{'message':'API\x20key\x20not\x20available'};})[_0x27f5('0x13')](function(_0xf5e428){return db['User']['update']({'apiKeyNonce':null,'apiKeyIat':null},{'where':{'id':_0x220452['params']['id']}});})[_0x27f5('0x13')](respondWithStatusCode(_0x257c7b,0xc8))[_0x27f5('0x1d')](handleError(_0x257c7b,0x193));}else{return _0x257c7b[_0x27f5('0x1f')](0x191)[_0x27f5('0x21')]({'message':_0x27f5('0x172')});}};exports[_0x27f5('0x177')]=function(_0x25cf33,_0x3c6d57){var _0x432ca9=_0x25cf33['user'][_0x27f5('0xa2')]({'plain':!![]});if(!_0x432ca9){return _0x3c6d57[_0x27f5('0x1f')](0x191)['send'](_0x27f5('0x178'));}else{return _0x3c6d57[_0x27f5('0x1f')](0xc8)['json'](_0x432ca9);}};exports['getPresence']=function(_0xfb88e0,_0x848042){var _0x2899c2={'offset':0x0},_0x5def57={'count':0x0,'rows':[]};Promise[_0x27f5('0xfe')]()[_0x27f5('0x13')](function(){if(!_0xfb88e0[_0x27f5('0x52')]['filter']&&!_0xfb88e0[_0x27f5('0x52')][_0x27f5('0x179')]&&!_0xfb88e0[_0x27f5('0x52')][_0x27f5('0x17a')])return[];return Promise[_0x27f5('0xfe')]()['then'](function(){var _0x3f98f2=[];if(!_[_0x27f5('0x17b')](_0xfb88e0[_0x27f5('0x52')][_0x27f5('0x179')])){_0x3f98f2[_0x27f5('0x42')](db['Team']['findAll']({'attributes':['id','name'],'where':{'id':_0xfb88e0[_0x27f5('0x52')][_0x27f5('0x179')]}}));}if(!_[_0x27f5('0x17b')](_0xfb88e0[_0x27f5('0x52')][_0x27f5('0x17a')])){_0x3f98f2[_0x27f5('0x42')](db[_0x27f5('0xa1')][_0x27f5('0x43')]({'attributes':['id',_0x27f5('0x35')],'type':'inbound','where':{'id':_0xfb88e0[_0x27f5('0x52')][_0x27f5('0x17a')]}}));}return Promise[_0x27f5('0x4d')](_0x3f98f2);})[_0x27f5('0x13')](function(_0x279599){var _0x2d504e=_[_0x27f5('0x121')](_0x279599)[_0x27f5('0x85')](function(_0x555abb){return _0x555abb[_0x27f5('0x126')]({'attributes':['id',_0x27f5('0x35'),_0x27f5('0x5e'),_0x27f5('0x98')],'raw':!![]});});return Promise[_0x27f5('0x4d')](_0x2d504e);})[_0x27f5('0x13')](function(_0x7ff69){var _0xa8adff=_[_0x27f5('0x121')](_0x7ff69);if(!_0xfb88e0[_0x27f5('0x52')][_0x27f5('0x30')])return _0xa8adff;if(_['isEmpty'](_0xa8adff)){return db[_0x27f5('0x39')][_0x27f5('0x43')]({'attributes':['id',_0x27f5('0x35'),'internal',_0x27f5('0x98')],'where':{'role':'agent','$or':[db['sequelize'][_0x27f5('0xcd')](db[_0x27f5('0x64')]['fn']('lower',db[_0x27f5('0x64')][_0x27f5('0x17c')]('name')),{'$like':'%'+_0xfb88e0['query'][_0x27f5('0x30')][_0x27f5('0x9c')]()+'%'}),{'internal':{'$like':'%'+_0xfb88e0['query'][_0x27f5('0x30')]+'%'}}]},'raw':!![]});}else{return _(_0xa8adff)[_0x27f5('0x121')]()[_0x27f5('0x30')](function(_0x2fa207){return _0x2fa207['name'][_0x27f5('0x9c')]()['includes'](_0xfb88e0['query']['filter'][_0x27f5('0x9c')]())||_0x2fa207[_0x27f5('0x5e')][_0x27f5('0x17d')]()[_0x27f5('0x33')](_0xfb88e0['query']['filter']);})['value']();}})[_0x27f5('0x13')](function(_0x34d9e0){var _0x15288c=_0x27f5('0x35');var _0x40405=_0x27f5('0x17e');if(_0xfb88e0[_0x27f5('0x52')]['sort']){var _0x40405=_0xfb88e0[_0x27f5('0x52')]['sort'][0x0]==='-'?_0x27f5('0x17f'):'asc';var _0x15288c=_0x40405===_0x27f5('0x17e')?_0xfb88e0[_0x27f5('0x52')][_0x27f5('0xcc')]:_0xfb88e0[_0x27f5('0x52')][_0x27f5('0xcc')]['substring'](0x1);}return _(_0x34d9e0)[_0x27f5('0x180')]('id')[_0x27f5('0x181')]([function(_0x192886){return _0x15288c===_0x27f5('0x35')?_0x192886[_0x15288c][_0x27f5('0x9c')]():_0x192886[_0x15288c];}],[_0x40405])[_0x27f5('0x85')](function(_0x51a222){return _['pick'](_0x51a222,['id',_0x27f5('0x35'),_0x27f5('0x5e'),_0x27f5('0x98')]);})['value']();})[_0x27f5('0x13')](function(_0x223858){return client[_0x27f5('0x12')](_0x27f5('0x2d'),_0xfb88e0)['then'](function(_0x116131){if(_0x116131[_0x27f5('0x1a')])throw new Error(_0x27f5('0x182'));var _0x32685=_0x116131[_0x27f5('0x183')];var _0x3a6769=jayson[_0x27f5('0x10')]['http']({'port':0x232c});return _0x3a6769['request'](_0x27f5('0x2d'),_0xfb88e0)[_0x27f5('0x13')](function(_0x119c48){if(_0x119c48[_0x27f5('0x1a')])throw new Error(_0x27f5('0x184'));var _0x4fcc30=_0x119c48[_0x27f5('0x183')];return _[_0x27f5('0x56')]({},_0x4fcc30,_0x32685);});})['then'](function(_0xcc3d73){return _['map'](_0x223858,function(_0x1f7243){var _0x235646=_[_0x27f5('0x34')](_0xcc3d73[_0x27f5('0x44')],['id',_0x1f7243['id']]);if(!_0x235646||!_0x1f7243[_0x27f5('0x98')]){_0x1f7243[_0x27f5('0x1f')]=_0x27f5('0x185');}else if(_0x235646['voicePause']){_0x1f7243['status']=_0x27f5('0x101');}else{_0x1f7243[_0x27f5('0x1f')]=_['includes']([_0x27f5('0x186'),_0x27f5('0x187'),'unavailable','ringing',null,undefined],_0x235646[_0x27f5('0x188')])?'online':_0x27f5('0x189');}return _0x1f7243;});});});})['then'](function(_0x590405){if(!_0xfb88e0[_0x27f5('0x52')][_0x27f5('0xce')](_0x27f5('0xd5'))){_0x2899c2[_0x27f5('0x23')]=qs[_0x27f5('0x23')](_0xfb88e0[_0x27f5('0x52')][_0x27f5('0x23')]||0xa);_0x2899c2[_0x27f5('0x25')]=qs[_0x27f5('0x25')](_0xfb88e0['query']['offset']);}_0x5def57[_0x27f5('0x24')]=_0x590405['length'];_0x5def57[_0x27f5('0x44')]=_0x2899c2[_0x27f5('0x23')]?_0x590405[_0x27f5('0x18a')](_0x2899c2[_0x27f5('0x25')],_0x2899c2['offset']+_0x2899c2['limit']):_0x590405;return _0x5def57;})[_0x27f5('0x13')](respondWithFilteredResult(_0x848042,_0x2899c2))['catch'](handleError(_0x848042,null));};function get_open_tabs(_0x39fcf4,_0x35418e){var _0x467cc8=_0x39fcf4[_0x27f5('0x18b')](0x0)[_0x27f5('0x18c')]()+_0x39fcf4[_0x27f5('0x18a')](0x1);var _0x14e0d9={'type':db[_0x27f5('0x88')][_0x27f5('0x18d')]['SELECT'],'raw':!![]};return new BPromise(function(_0x347f0d,_0x1ad995){var _0x11ea8e=squel[_0x27f5('0x18e')]()[_0x27f5('0x18f')](_0x27f5('0x190')+_0x467cc8+_0x27f5('0x191'),'id')[_0x27f5('0x18f')](_0x27f5('0x192'))[_0x27f5('0x66')]('user_has_'+_0x39fcf4+'_interactions','ui')[_0x27f5('0xcd')](_0x27f5('0x193'),_0x35418e['id']);return db[_0x27f5('0x64')][_0x27f5('0x52')](_0x11ea8e[_0x27f5('0x17d')](),_0x14e0d9)[_0x27f5('0x13')](function(_0x42bd87){_0x35418e[_0x467cc8+'OpenTabs']=_0x42bd87;_0x347f0d(_0x42bd87);})[_0x27f5('0x1d')](function(_0x25f73c){_0x1ad995(_0x25f73c);});});};
\ No newline at end of file
+var _0xa571=['Wrong\x20credentials','New\x20password\x20must\x20be\x20different\x20from\x20old\x20password','Invalid\x20body\x20format.\x20Use\x20newPassword','findOne','enforcePasswordHistory','passwordHistoryLimit','previousPasswords','updatePasswordsHistory','addQueues','loginInPause','voicePause','interface','isValidChannel','Unknown\x20channel','add','capitalize','penalty','toLowerCase','QueueId','emit','Queue:save','voice','VoiceQueue','online','SIP/%s','UserVoiceQueueRt','upsert','removeQueues','channel','remove','Queues','isArray','Queue:remove','addAvatar','userpic','filename','join','download','existsSync','root','server/files/images/','ChatOpenTabs','CHAT','FaxOpenTabs','FAX','createdAt','OpenchannelOpenTabs','OPENCHANNEL','MailOpenTabs','MAIL','SmsOpenTabs','SMS','WhatsappOpenTabs','WHATSAPP','getContacts','CmContact','filters','order','sort','pick','where','merge','options','include','CmList','List','Tag','Tags','color','tag','hasOwnProperty','nolimit','getQueues','Queue','getVoiceQueuesRt','ChatGroup','getRecordings','UserId','VoiceRecording','getScreenRecordings','ScreenRecording','ChatInteraction','getChatInteractions','getOpenchannelInteractions','OpenchannelInteraction','getMailInteractions','MailInteraction','getSmsInteractions','getFaxInteractions','FaxInteraction','WhatsappInteraction','getWhatsappInteractions','login','phone','mobile','format','intrf','user:forcelogout','x-forwarded-for','connection','remoteAddress','socket','User\x20not\x20found\x20or\x20not\x20allowed\x20to\x20perform\x20login\x20method','getVoiceQueues','MemberReport','forEach','YYYY-MM-DD\x20HH:mm:ss','getChannels','LOGIN','device','LOGININPAUSE','isMiddleware','resolve','logout','pause','PAUSE','updateAttributes','type','unpause','mailPause','faxPause','openchannelPause','smsPause','pauseType','QueuePause','manual','set','%s%s','Pause','getTeams','Team','addTeams','omit','setDataValue','Voice','getChatQueues','Chat','getMailQueues','Mail','Sms','getWhatsappQueues','Whatsapp','getFaxQueues','getOpenchannelQueues','Openchannel','flatten','transaction','addAgent','getDataValue','removeTeams','getSmsQueues','Fax','getLists','getAgents','values','addChatInteractions','spread','removeChatInteractions','user_has_chat_interactions:remove','addMailInteractions','user_has_mail_interactions:save','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','removeFaxAccounts','getMailAccounts','MailAccount','addMailAccounts','removeMailAccounts','OpenchannelAccount','getOpenchannelAccounts','addOpenchannelAccounts','removeOpenchannelAccounts','getSmsAccounts','SmsAccount','addSmsAccounts','removeSmsAccounts','getChatWebsites','ChatWebsite','addChatWebsites','removeChatWebsites','WhatsappAccount','getWhatsappAccounts','addWhatsappAccounts','removeWhatsappAccounts','SquareProject','getSquareProjects','addSquareProjects','removeSquareProjects','getScheduledCalls','CmHopper','concat','$and','$gt','$lt','$lte','$ne','$not','$between','$notBetween','$in','$notIn','$like','$notLike','$notILike','$overlap','$any','Contact','dialActive','getApiKey','retrieveApiKey','No\x20API\x20access\x20key\x20found!','You\x20don\x27t\x20have\x20sufficient\x20privileges\x20to\x20access\x20this\x20resource.','createApiKey','generateApiKey','iat','nonce','token','removeApiKey','apiKeyNonce','whoami','teams','queues','inbound','col','toString','asc','orderBy','Unable\x20to\x20retrieve\x20RPC\x20agents\x20(Routing)','offline','idle','unknown','unavailable','ringing','voiceStatus','busy','slice','charAt','toUpperCase','QueryTypes','select','ui.','InteractionId','field','ui.createdAt','user_has_','ui.UserId\x20=\x20?','moment','bluebird','util','path','squel','jayson/promise','../../components/parsers/qs','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','socket.io-emitter','./user.socket','register','redis','localhost','client','http','request','then','info','User,\x20%s,\x20%s','debug','request\x20sent','stringify','error','message','result','sendStatus','status','end','json','offset','undefined','limit','count','Content-Range','get','role','Users','user','Agents','agent','Telephones','telephone','filter','map','value','find','name','UserProfileResource','destroy','stack','send','index','fieldName','key','includes','salt','getOptions','User','includeAll','attributes','push','findAll','rows','query','openTabs','length','dataValues','sms','fax','mail','whatsapp','all','catch','show','params','model','differenceBy','keys','rawAttributes','password','intersection','fields','chat','openchannel','update','body','addContacts','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)','SELECT','from','voicemail','VoiceMail','fullname','permissions','101','102','103','113','104','105','107','108','109','100','111','114','115','create','Unauthorized','admin','Unauthorized.\x20You\x20must\x20be\x20an\x20administrator\x20in\x20order\x20to\x20create\x20an\x20user','Unauthorized.\x20You\x20must\x20be\x20an\x20administrator\x20in\x20order\x20to\x20create\x20another\x20administrator','settingsEnabled','userProfileId','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','bulkCreate','some','each','UserProfileSection','isEmpty','compact','changePassword','oldPassword','newPassword','Sequelize','ValidationError','Invalid\x20body\x20format.\x20Use\x20oldPassword\x20and\x20newPassword','authenticate'];(function(_0x574048,_0x1117b6){var _0xe704d5=function(_0x12f82e){while(--_0x12f82e){_0x574048['push'](_0x574048['shift']());}};_0xe704d5(++_0x1117b6);}(_0xa571,0x107));var _0x1a57=function(_0x49049b,_0x42a8b9){_0x49049b=_0x49049b-0x0;var _0x5e2a40=_0xa571[_0x49049b];return _0x5e2a40;};'use strict';var moment=require(_0x1a57('0x0'));var BPromise=require(_0x1a57('0x1'));var util=require(_0x1a57('0x2'));var path=require(_0x1a57('0x3'));var fs=require('fs');var _=require('lodash');var squel=require(_0x1a57('0x4'));var jayson=require(_0x1a57('0x5'));var Redis=require('ioredis');var authService=require('../../components/auth/service');var qs=require(_0x1a57('0x6'));var logger=require('../../config/logger')(_0x1a57('0x7'));var utils=require(_0x1a57('0x8'));var config=require(_0x1a57('0x9'));var licenseUtil=require(_0x1a57('0xa'));var db=require(_0x1a57('0xb'))['db'];var socket=require(_0x1a57('0xc'))(new Redis(config['redis']));require(_0x1a57('0xd'))[_0x1a57('0xe')](socket);config[_0x1a57('0xf')]=_['defaults'](config[_0x1a57('0xf')],{'host':_0x1a57('0x10'),'port':0x18eb});var client=jayson[_0x1a57('0x11')][_0x1a57('0x12')]({'port':0x232a});var values;function respondWithRpcPromise(_0x831937,_0x2980b2,_0x62cc63,_0x22c683){return new BPromise(function(_0x571607,_0x562fa4){var _0x2256af=_0x22c683||client;return _0x2256af[_0x1a57('0x13')](_0x831937,_0x62cc63)[_0x1a57('0x14')](function(_0x5ae643){logger[_0x1a57('0x15')](_0x1a57('0x16'),_0x2980b2,'request\x20sent');logger[_0x1a57('0x17')]('User,\x20%s,\x20%s,\x20%s',_0x2980b2,_0x1a57('0x18'),JSON[_0x1a57('0x19')](_0x5ae643));if(_0x5ae643[_0x1a57('0x1a')]){if(_0x5ae643[_0x1a57('0x1a')]['code']===0x1f4){logger[_0x1a57('0x1a')]('User,\x20%s,\x20%s',_0x2980b2,_0x5ae643['error'][_0x1a57('0x1b')]);return _0x562fa4(_0x5ae643[_0x1a57('0x1a')][_0x1a57('0x1b')]);}logger['error'](_0x1a57('0x16'),_0x2980b2,_0x5ae643[_0x1a57('0x1a')][_0x1a57('0x1b')]);return _0x571607(_0x5ae643['error'][_0x1a57('0x1b')]);}else{logger[_0x1a57('0x15')](_0x1a57('0x16'),_0x2980b2,_0x1a57('0x18'));_0x571607(_0x5ae643[_0x1a57('0x1c')]['message']);}})['catch'](function(_0x439844){logger[_0x1a57('0x1a')](_0x1a57('0x16'),_0x2980b2,_0x439844);_0x562fa4(_0x439844);});});}function respondWithStatusCode(_0x4d3e05,_0x5c200e){_0x5c200e=_0x5c200e||0xcc;return function(_0x51e271){if(_0x51e271){return _0x4d3e05[_0x1a57('0x1d')](_0x5c200e);}return _0x4d3e05[_0x1a57('0x1e')](_0x5c200e)[_0x1a57('0x1f')]();};}function respondWithResult(_0xee133b,_0x277d06){_0x277d06=_0x277d06||0xc8;return function(_0x39d3ce){if(_0x39d3ce){return _0xee133b[_0x1a57('0x1e')](_0x277d06)[_0x1a57('0x20')](_0x39d3ce);}};}function respondWithFilteredResult(_0x183ca3,_0x35d5dc){return function(_0x29e7cd){if(_0x29e7cd){var _0x36b17e=typeof _0x35d5dc[_0x1a57('0x21')]===_0x1a57('0x22')&&typeof _0x35d5dc[_0x1a57('0x23')]===_0x1a57('0x22');var _0x25c1e9=_0x29e7cd[_0x1a57('0x24')];var _0x27cfe1=_0x36b17e?0x0:_0x35d5dc[_0x1a57('0x21')];var _0x26584b=_0x36b17e?_0x29e7cd[_0x1a57('0x24')]:_0x35d5dc['offset']+_0x35d5dc['limit'];var _0x139d8c;if(_0x26584b>=_0x25c1e9){_0x26584b=_0x25c1e9;_0x139d8c=0xc8;}else{_0x139d8c=0xce;}_0x183ca3[_0x1a57('0x1e')](_0x139d8c);return _0x183ca3['set'](_0x1a57('0x25'),_0x27cfe1+'-'+_0x26584b+'/'+_0x25c1e9)['json'](_0x29e7cd);}return null;};}function saveUpdates(_0x2d8738){return function(_0x4a2901){if(_0x4a2901){return _0x4a2901['update'](_0x2d8738)[_0x1a57('0x14')](function(_0x274fe6){return _0x274fe6;});}return null;};}function removeEntity(_0x30527c){return function(_0xe49543){if(_0xe49543){return _0xe49543['destroy']()[_0x1a57('0x14')](function(){var _0x396832=_0xe49543[_0x1a57('0x26')]({'plain':!![]});if(_0x396832[_0x1a57('0x27')]==='admin')return;var _0xa42d2b=[{'name':_0x1a57('0x28'),'value':_0x1a57('0x29'),'ignore':!![]},{'name':_0x1a57('0x2a'),'value':_0x1a57('0x2b'),'ignore':![]},{'name':_0x1a57('0x2c'),'value':_0x1a57('0x2d'),'ignore':![]}];var _0x1e7f0d=_(_0xa42d2b)[_0x1a57('0x2e')]('ignore')[_0x1a57('0x2f')](_0x1a57('0x30'))['value']();if(_['includes'](_0x1e7f0d,_0x396832[_0x1a57('0x27')])){return;}var _0x136842=_[_0x1a57('0x31')](_0xa42d2b,[_0x1a57('0x30'),_0x396832[_0x1a57('0x27')]])[_0x1a57('0x32')];return db[_0x1a57('0x33')][_0x1a57('0x34')]({'where':{'type':_0x136842,'resourceId':_0x396832['id']}})[_0x1a57('0x14')](function(){return _0xe49543;});})[_0x1a57('0x14')](function(){_0x30527c[_0x1a57('0x1e')](0xcc)[_0x1a57('0x1f')]();});}};}function handleEntityNotFound(_0x12f3a7){return function(_0x1a6231){if(!_0x1a6231){_0x12f3a7[_0x1a57('0x1d')](0x194);}return _0x1a6231;};}function handleError(_0x12102f,_0x90b82e){_0x90b82e=_0x90b82e||0x1f4;return function(_0x43880d){logger['error'](_0x43880d[_0x1a57('0x35')]);if(_0x43880d[_0x1a57('0x32')]){delete _0x43880d[_0x1a57('0x32')];}_0x12102f[_0x1a57('0x1e')](_0x90b82e)[_0x1a57('0x36')](_0x43880d);};}exports[_0x1a57('0x37')]=function(_0x939976,_0x23d087){var _0x1b6514={},_0x490119={'count':0x0,'rows':[]};var _0x4c37af=_(db['User']['rawAttributes'])[_0x1a57('0x2f')](function(_0x14d619){return{'name':_0x14d619[_0x1a57('0x38')],'type':_0x14d619['type'][_0x1a57('0x39')]};})[_0x1a57('0x2e')](function(_0x2bce24){return!_[_0x1a57('0x3a')](['password',_0x1a57('0x3b')],_0x2bce24['name']);})[_0x1a57('0x30')]();_0x1b6514=qs[_0x1a57('0x3c')](_0x4c37af,_0x939976);var _0x33b1f3={'where':_0x1b6514['where']};return db[_0x1a57('0x3d')][_0x1a57('0x24')](_0x33b1f3)[_0x1a57('0x14')](function(_0x4519d0){_0x490119[_0x1a57('0x24')]=_0x4519d0;if(_0x939976['query'][_0x1a57('0x3e')]){_0x1b6514['include']=[{'all':!![]}];}if(!_['includes'](_0x1b6514[_0x1a57('0x3f')],'id')){_0x1b6514['attributes'][_0x1a57('0x40')]('id');}return db[_0x1a57('0x3d')][_0x1a57('0x41')](_0x1b6514);})['then'](function(_0x188a50){_0x490119[_0x1a57('0x42')]=_0x188a50;if(_0x939976[_0x1a57('0x43')][_0x1a57('0x44')]==='true'){var _0xc7bab4=[];for(var _0x150fb6=0x0;_0x150fb6<_0x490119['rows'][_0x1a57('0x45')];_0x150fb6++){_0xc7bab4['push'](get_open_tabs('chat',_0x490119[_0x1a57('0x42')][_0x150fb6][_0x1a57('0x46')]));_0xc7bab4[_0x1a57('0x40')](get_open_tabs(_0x1a57('0x47'),_0x490119['rows'][_0x150fb6][_0x1a57('0x46')]));_0xc7bab4[_0x1a57('0x40')](get_open_tabs(_0x1a57('0x48'),_0x490119[_0x1a57('0x42')][_0x150fb6][_0x1a57('0x46')]));_0xc7bab4['push'](get_open_tabs(_0x1a57('0x49'),_0x490119[_0x1a57('0x42')][_0x150fb6][_0x1a57('0x46')]));_0xc7bab4[_0x1a57('0x40')](get_open_tabs('openchannel',_0x490119[_0x1a57('0x42')][_0x150fb6]['dataValues']));_0xc7bab4[_0x1a57('0x40')](get_open_tabs(_0x1a57('0x4a'),_0x490119[_0x1a57('0x42')][_0x150fb6][_0x1a57('0x46')]));}return BPromise[_0x1a57('0x4b')](_0xc7bab4)[_0x1a57('0x14')](function(_0x28f629){return _0x490119;});}else{return _0x490119;}})[_0x1a57('0x14')](respondWithFilteredResult(_0x23d087,_0x1b6514))[_0x1a57('0x4c')](handleError(_0x23d087,null));};exports[_0x1a57('0x4d')]=function(_0x7413df,_0x136335){var _0x475088={'raw':![],'where':{'id':_0x7413df[_0x1a57('0x4e')]['id']}},_0x47f9da={};_0x47f9da[_0x1a57('0x4f')]=_[_0x1a57('0x50')](_[_0x1a57('0x51')](db[_0x1a57('0x3d')][_0x1a57('0x52')]),[_0x1a57('0x53'),_0x1a57('0x3b')]);_0x47f9da[_0x1a57('0x43')]=_[_0x1a57('0x51')](_0x7413df[_0x1a57('0x43')]);_0x47f9da['filters']=_[_0x1a57('0x54')](_0x47f9da[_0x1a57('0x4f')],_0x47f9da['query']);_0x475088[_0x1a57('0x3f')]=_[_0x1a57('0x54')](_0x47f9da['model'],qs[_0x1a57('0x55')](_0x7413df[_0x1a57('0x43')]['fields']));_0x475088['attributes']=_0x475088['attributes'][_0x1a57('0x45')]?_0x475088[_0x1a57('0x3f')]:_0x47f9da['model'];if(_0x7413df[_0x1a57('0x43')][_0x1a57('0x3e')]){_0x475088['include']=[{'all':!![]}];}_0x475088=_['merge']({},_0x475088,_0x7413df['options']);if(!_[_0x1a57('0x3a')](_0x475088[_0x1a57('0x3f')],'id')){_0x475088[_0x1a57('0x3f')][_0x1a57('0x40')]('id');}return db[_0x1a57('0x3d')][_0x1a57('0x31')](_0x475088)[_0x1a57('0x14')](handleEntityNotFound(_0x136335,null))[_0x1a57('0x14')](function(_0x516aff){var _0x5473cb=[];values=_0x516aff;if(_0x7413df['query']['openTabs']==='true'){_0x5473cb[_0x1a57('0x40')](get_open_tabs(_0x1a57('0x56'),_0x516aff[_0x1a57('0x46')]));_0x5473cb[_0x1a57('0x40')](get_open_tabs(_0x1a57('0x47'),_0x516aff[_0x1a57('0x46')]));_0x5473cb[_0x1a57('0x40')](get_open_tabs(_0x1a57('0x57'),_0x516aff['dataValues']));_0x5473cb['push'](get_open_tabs('whatsapp',_0x516aff[_0x1a57('0x46')]));_0x5473cb['push'](get_open_tabs(_0x1a57('0x48'),_0x516aff[_0x1a57('0x46')]));_0x5473cb[_0x1a57('0x40')](get_open_tabs(_0x1a57('0x49'),_0x516aff[_0x1a57('0x46')]));return BPromise[_0x1a57('0x4b')](_0x5473cb);}else{return values;}})[_0x1a57('0x14')](function(_0x561add){return values;})['then'](respondWithResult(_0x136335,null))['catch'](handleError(_0x136335,null));};exports[_0x1a57('0x58')]=function(_0x562775,_0x212440){if(_0x562775[_0x1a57('0x59')]['id']){delete _0x562775[_0x1a57('0x59')]['id'];}delete _0x562775[_0x1a57('0x59')][_0x1a57('0x27')];return db['User']['find']({'where':{'id':_0x562775[_0x1a57('0x4e')]['id']}})[_0x1a57('0x14')](handleEntityNotFound(_0x212440,null))[_0x1a57('0x14')](saveUpdates(_0x562775[_0x1a57('0x59')],null))[_0x1a57('0x14')](respondWithResult(_0x212440,null))[_0x1a57('0x4c')](handleError(_0x212440,null));};exports['describe']=function(_0x47db75,_0x3bf6dd){return db[_0x1a57('0x3d')]['describe']()['then'](respondWithResult(_0x3bf6dd,null))[_0x1a57('0x4c')](handleError(_0x3bf6dd,null));};exports[_0x1a57('0x5a')]=function(_0x31cb10,_0x10ceb8){return db[_0x1a57('0x3d')][_0x1a57('0x31')]({'where':{'id':_0x31cb10[_0x1a57('0x4e')]['id']}})['then'](handleEntityNotFound(_0x10ceb8,null))['then'](function(_0x2fbf49){if(_0x2fbf49){return _0x2fbf49[_0x1a57('0x5a')](_0x31cb10[_0x1a57('0x59')][_0x1a57('0x5b')],_['omit'](_0x31cb10[_0x1a57('0x59')],[_0x1a57('0x5b'),'id'])||{});}})[_0x1a57('0x14')](respondWithResult(_0x10ceb8,null))[_0x1a57('0x4c')](handleError(_0x10ceb8,null));};function validateUser(_0x1f4371){return new BPromise(function(_0x5ab7d1,_0x4aa36d){if(_0x1f4371['internal'])return _0x5ab7d1(_0x1f4371);return db[_0x1a57('0x5c')][_0x1a57('0x5d')](0x1)[_0x1a57('0x14')](function(_0x33ffe5){if(_0x33ffe5[_0x1a57('0x5e')])authService[_0x1a57('0x5f')](_0x1f4371[_0x1a57('0x53')]);db[_0x1a57('0x3d')]['max'](_0x1a57('0x60'))[_0x1a57('0x14')](function(_0x50ff89){if(_['isNil'](_0x50ff89)){_0x1f4371[_0x1a57('0x60')]=_0x33ffe5['min_internal']||0x1;return;}if(_[_0x1a57('0x61')](_0x33ffe5[_0x1a57('0x62')])||_0x33ffe5[_0x1a57('0x62')]===_0x50ff89){_0x1f4371[_0x1a57('0x60')]=_0x50ff89+0x1;return;}if(_0x33ffe5[_0x1a57('0x62')]>_0x50ff89){_0x1f4371[_0x1a57('0x60')]=_0x33ffe5[_0x1a57('0x62')];return;}return db[_0x1a57('0x63')]['query'](_0x1a57('0x64'),{'type':db[_0x1a57('0x63')]['QueryTypes'][_0x1a57('0x65')]})[_0x1a57('0x14')](function(_0x20b0d5){if(_0x20b0d5&&_0x20b0d5['length']){for(var _0x5c3eb8=0x0,_0x349c9d=_0x20b0d5[_0x1a57('0x45')];_0x5c3eb8<_0x349c9d&&_[_0x1a57('0x61')](_0x1f4371[_0x1a57('0x60')]);_0x5c3eb8++){if(_0x33ffe5['min_internal']<=_0x20b0d5[_0x5c3eb8][_0x1a57('0x66')]){_0x1f4371[_0x1a57('0x60')]=_0x20b0d5[_0x5c3eb8][_0x1a57('0x66')];}else if(_0x33ffe5[_0x1a57('0x62')]>_0x20b0d5[_0x5c3eb8][_0x1a57('0x66')]&&_0x33ffe5['min_internal']<=_0x20b0d5[_0x5c3eb8]['to']){_0x1f4371[_0x1a57('0x60')]=_0x33ffe5[_0x1a57('0x62')];}}}if(_[_0x1a57('0x61')](_0x1f4371[_0x1a57('0x60')])){_0x1f4371[_0x1a57('0x60')]=_0x50ff89+0x1;}return _0x5ab7d1(_0x1f4371);});});})[_0x1a57('0x4c')](function(_0x3c6fb4){_0x4aa36d(_0x3c6fb4);});});}function updateUser(_0x20b0f3){return new BPromise(function(_0x3cb5ca,_0x11b17c){try{if(_0x20b0f3[_0x1a57('0x67')]){_0x20b0f3['mailbox']=_0x20b0f3[_0x1a57('0x60')];_0x20b0f3[_0x1a57('0x68')]={'mailbox':_0x20b0f3['internal'],'password':_0x20b0f3[_0x1a57('0x53')],'fullname':_0x20b0f3[_0x1a57('0x69')],'email':_0x20b0f3['email']};}if(_0x20b0f3[_0x1a57('0x27')]===_0x1a57('0x2b')){if(!_0x20b0f3[_0x1a57('0x6a')])_0x20b0f3[_0x1a57('0x6a')]=[_0x1a57('0x6b'),_0x1a57('0x6c'),_0x1a57('0x6d'),_0x1a57('0x6e'),'110',_0x1a57('0x6f'),_0x1a57('0x70'),'106',_0x1a57('0x71'),_0x1a57('0x72'),_0x1a57('0x73'),_0x1a57('0x74'),_0x1a57('0x75'),_0x1a57('0x76'),_0x1a57('0x77')];}_0x3cb5ca(_0x20b0f3);}catch(_0xf61c1d){_0x11b17c(_0xf61c1d);}});}exports[_0x1a57('0x78')]=function(_0x58bc70,_0x3ebec){if(_0x58bc70[_0x1a57('0x29')][_0x1a57('0x27')]===_0x1a57('0x2b'))throw new Error(_0x1a57('0x79'));if(_0x58bc70['body'][_0x1a57('0x27')]===_0x1a57('0x29')&&_0x58bc70[_0x1a57('0x29')][_0x1a57('0x27')]!==_0x1a57('0x7a')){throw new Error(_0x1a57('0x7b'));}if(_0x58bc70[_0x1a57('0x59')][_0x1a57('0x27')]==='admin'&&_0x58bc70[_0x1a57('0x29')][_0x1a57('0x27')]!==_0x1a57('0x7a')){throw new Error(_0x1a57('0x7c'));}return licenseUtil['checkUserLimits']([_0x58bc70['body']])['then'](function(){return validateUser(_0x58bc70['body']);})['then'](function(_0x41cedf){return updateUser(_0x41cedf)[_0x1a57('0x14')](function(_0x5e640b){if(_0x5e640b[_0x1a57('0x27')]===_0x1a57('0x7a')){_0x5e640b['settingsEnabled']=_0x58bc70[_0x1a57('0x29')][_0x1a57('0x7d')];delete _0x5e640b[_0x1a57('0x7e')];}return _0x5e640b;});})[_0x1a57('0x14')](function(_0x56ddf7){return db[_0x1a57('0x3d')][_0x1a57('0x78')](_0x56ddf7,{'include':[{'model':db['VoiceMail'],'as':_0x1a57('0x68')}]});})[_0x1a57('0x14')](function(_0x42d41e){if(_0x58bc70[_0x1a57('0x59')][_0x1a57('0x27')]===_0x1a57('0x29'))return _0x42d41e;if(_0x58bc70[_0x1a57('0x29')]['role']!==_0x1a57('0x29'))return _0x42d41e;return db['UserProfileSection'][_0x1a57('0x31')]({'where':{'name':_0x42d41e[_0x1a57('0x27')]===_0x1a57('0x2b')?_0x1a57('0x2a'):'Telephones','userProfileId':_0x58bc70[_0x1a57('0x29')][_0x1a57('0x7e')]},'raw':!![]})[_0x1a57('0x14')](function(_0x5665ac){if(!_0x5665ac||_0x5665ac[_0x1a57('0x7f')]!=0x0)return _0x42d41e;return db[_0x1a57('0x33')][_0x1a57('0x78')]({'name':_0x42d41e['name'],'resourceId':_0x42d41e['id'],'type':_0x5665ac[_0x1a57('0x32')],'sectionId':_0x5665ac['id']},{})[_0x1a57('0x14')](function(){return _0x42d41e;});})[_0x1a57('0x4c')](function(_0x1899b5){logger[_0x1a57('0x1a')](_0x1a57('0x80'),_0x1899b5);throw _0x1899b5;});})[_0x1a57('0x14')](respondWithResult(_0x3ebec,0xc9))[_0x1a57('0x4c')](handleError(_0x3ebec,null));};exports[_0x1a57('0x81')]=function(_0xb45587,_0x29d8f6){var _0x5de7b1=_0xb45587[_0x1a57('0x59')];var _0x563182=[];if(_0xb45587[_0x1a57('0x29')]['role']==='agent')throw new Error('Unauthorized');if(_['some'](_0x5de7b1,[_0x1a57('0x27'),_0x1a57('0x29')])&&_0xb45587[_0x1a57('0x29')]['role']!==_0x1a57('0x7a')){throw new Error('Unauthorized.\x20You\x20must\x20be\x20an\x20administrator\x20in\x20order\x20to\x20create\x20an\x20user');}if(_[_0x1a57('0x82')](_0x5de7b1,[_0x1a57('0x27'),_0x1a57('0x7a')])&&_0xb45587[_0x1a57('0x29')][_0x1a57('0x27')]!==_0x1a57('0x7a')){throw new Error('Unauthorized.\x20You\x20must\x20be\x20an\x20administrator\x20in\x20order\x20to\x20create\x20an\x20administrator');}return licenseUtil['checkUserLimits'](_0x5de7b1)[_0x1a57('0x14')](function(){return validateUser(_0x5de7b1[0x0]);})['then'](function(){for(var _0x149f8d=0x1;_0x149f8d<_0x5de7b1[_0x1a57('0x45')];_0x149f8d++){var _0x541447=_0x5de7b1[_0x149f8d-0x1][_0x1a57('0x60')];if(!_0x5de7b1[_0x149f8d][_0x1a57('0x60')])_0x5de7b1[_0x149f8d]['internal']=_0x541447+0x1;_0x563182[_0x1a57('0x40')](validateUser(_0x5de7b1[_0x149f8d]));}return BPromise[_0x1a57('0x4b')](_0x563182);})['then'](function(){_0x563182=[];for(var _0x5ca9d6=0x0;_0x5ca9d6<_0x5de7b1[_0x1a57('0x45')];_0x5ca9d6++){_0x563182['push'](updateUser(_0x5de7b1[_0x5ca9d6]));}return BPromise[_0x1a57('0x4b')](_0x563182);})[_0x1a57('0x14')](function(){return BPromise[_0x1a57('0x83')](_0x5de7b1,function(_0x2b6899){return db[_0x1a57('0x3d')][_0x1a57('0x78')](_0x2b6899,{'include':[{'model':db[_0x1a57('0x68')],'as':'VoiceMail'}]})[_0x1a57('0x14')](function(_0x272589){_0x2b6899['id']=_0x272589['id'];return _0x2b6899;});});})[_0x1a57('0x14')](function(_0x5a68f1){if(_0xb45587['body']['role']===_0x1a57('0x29'))return _0x5a68f1;if(_0xb45587[_0x1a57('0x29')]['role']!=='user')return _0x5a68f1;var _0x2d473e=_[_0x1a57('0x82')](_0x5a68f1,function(_0x3661aa){return _0x3661aa['role']===_0x1a57('0x2b')||_0x3661aa[_0x1a57('0x27')]===_0x1a57('0x2d');});if(!_0x2d473e)return _0x5a68f1;return db[_0x1a57('0x84')]['findAll']({'where':{'name':{'$or':[_0x1a57('0x2a'),_0x1a57('0x2c')]},'userProfileId':_0xb45587[_0x1a57('0x29')][_0x1a57('0x7e')]},'raw':!![]})[_0x1a57('0x14')](function(_0x3ab79d){if(_[_0x1a57('0x85')](_0x3ab79d)||!_[_0x1a57('0x82')](_0x3ab79d,[_0x1a57('0x7f'),0x0]))return _0x5a68f1;_0x563182=[];var _0x5635ab=_(_0x3ab79d)[_0x1a57('0x2f')](function(_0x42d05f){if(_0x42d05f[_0x1a57('0x7f')]===0x1)return;return _0x42d05f[_0x1a57('0x32')]===_0x1a57('0x2a')?_0x1a57('0x2b'):_0x1a57('0x2d');})[_0x1a57('0x86')]()[_0x1a57('0x30')]();for(var _0x3d84dd=0x0;_0x3d84dd<_0x5a68f1[_0x1a57('0x45')];_0x3d84dd++){if(!_[_0x1a57('0x3a')](_0x5635ab,_0x5a68f1[_0x3d84dd][_0x1a57('0x27')]))return;var _0x5827c4=_0x5a68f1[_0x3d84dd][_0x1a57('0x27')]===_0x1a57('0x2b')?_0x1a57('0x2a'):_0x1a57('0x2c');_0x563182[_0x1a57('0x40')](db[_0x1a57('0x33')]['create']({'name':_0x5a68f1[_0x3d84dd][_0x1a57('0x32')],'resourceId':_0x5a68f1[_0x3d84dd]['id'],'type':_0x5827c4,'sectionId':_[_0x1a57('0x31')](_0x3ab79d,[_0x1a57('0x32'),_0x5827c4])['id']},{}));}return BPromise[_0x1a57('0x4b')](_0x563182);});})[_0x1a57('0x14')](respondWithResult(_0x29d8f6,0xc9))['catch'](handleError(_0x29d8f6,null));};exports[_0x1a57('0x87')]=function(_0x2f35c1,_0x5801bc){if(_0x2f35c1[_0x1a57('0x59')]['id']){delete _0x2f35c1[_0x1a57('0x59')]['id'];}return db[_0x1a57('0x3d')][_0x1a57('0x31')]({'where':{'id':_0x2f35c1['params']['id']}})['then'](function(_0x35b4e){if(!_0x35b4e)return null;if(_0x35b4e['id']===_0x2f35c1[_0x1a57('0x29')]['id']){if(!_0x2f35c1['body'][_0x1a57('0x88')]||!_0x2f35c1[_0x1a57('0x59')][_0x1a57('0x89')]){throw new db[(_0x1a57('0x8a'))][(_0x1a57('0x8b'))](_0x1a57('0x8c'));}if(!_0x35b4e[_0x1a57('0x8d')](_0x2f35c1[_0x1a57('0x59')][_0x1a57('0x88')])){throw new db[(_0x1a57('0x8a'))][(_0x1a57('0x8b'))](_0x1a57('0x8e'));}if(_0x2f35c1['body'][_0x1a57('0x88')]===_0x2f35c1[_0x1a57('0x59')][_0x1a57('0x89')]){throw new db[(_0x1a57('0x8a'))][(_0x1a57('0x8b'))](_0x1a57('0x8f'));}}else if(_0x2f35c1[_0x1a57('0x29')][_0x1a57('0x27')]===_0x1a57('0x7a')){if(!_0x2f35c1['body'][_0x1a57('0x89')]){throw new db[(_0x1a57('0x8a'))][(_0x1a57('0x8b'))](_0x1a57('0x90'));}}else if(_0x2f35c1[_0x1a57('0x29')][_0x1a57('0x27')]===_0x1a57('0x29')){if(!_0x2f35c1['body'][_0x1a57('0x89')]){throw new db[(_0x1a57('0x8a'))][(_0x1a57('0x8b'))](_0x1a57('0x90'));}if(_0x35b4e[_0x1a57('0x27')]!==_0x1a57('0x2b')){throw new db[(_0x1a57('0x8a'))][(_0x1a57('0x8b'))](_0x1a57('0x79'));}}else{throw new db[(_0x1a57('0x8a'))][(_0x1a57('0x8b'))]('Unauthorized');}return _0x35b4e;})['then'](handleEntityNotFound(_0x5801bc,null))[_0x1a57('0x14')](function(_0x49535e){return db[_0x1a57('0x5c')][_0x1a57('0x91')]({'attributes':['id',_0x1a57('0x5e'),_0x1a57('0x92'),_0x1a57('0x93')]})[_0x1a57('0x14')](function(_0x32628e){if(_0x32628e[_0x1a57('0x5e')])authService[_0x1a57('0x5f')](_0x2f35c1[_0x1a57('0x59')][_0x1a57('0x89')]);if(!_0x32628e[_0x1a57('0x92')]||!_0x49535e[_0x1a57('0x94')])return _0x49535e;authService['validatePasswordHistory'](_0x2f35c1['body'][_0x1a57('0x89')],_0x49535e['previousPasswords'],_0x32628e[_0x1a57('0x93')]);return _0x49535e;})[_0x1a57('0x14')](saveUpdates({'password':_0x2f35c1['body'][_0x1a57('0x89')],'passwordResetAt':_0x2f35c1[_0x1a57('0x29')]['id']==_0x2f35c1[_0x1a57('0x4e')]['id']?moment():null,'previousPasswords':authService[_0x1a57('0x95')](_0x2f35c1[_0x1a57('0x59')][_0x1a57('0x89')],_0x49535e[_0x1a57('0x94')])},null));})['then'](respondWithResult(_0x5801bc,null))[_0x1a57('0x4c')](handleError(_0x5801bc,null));};exports[_0x1a57('0x96')]=function(_0x4a8832,_0x2d37cd){var _0x10217b=_0x4a8832[_0x1a57('0x59')]['channel'];return db[_0x1a57('0x3d')]['find']({'where':{'id':_0x4a8832['params']['id']},'attributes':['id',_0x1a57('0x32'),'role','online',_0x1a57('0x97'),_0x1a57('0x98'),_0x1a57('0x99')]})[_0x1a57('0x14')](handleEntityNotFound(_0x2d37cd,null))['then'](function(_0x5dd03e){if(_0x5dd03e){if(!utils[_0x1a57('0x9a')](_0x10217b)){throw new db['Sequelize'][(_0x1a57('0x8b'))](_0x1a57('0x9b'));}return _0x5dd03e[_0x1a57('0x9c')+_[_0x1a57('0x9d')](_0x10217b['toLowerCase']())+'Queues'](_0x4a8832[_0x1a57('0x59')][_0x1a57('0x5b')],{'penalty':_0x4a8832[_0x1a57('0x59')][_0x1a57('0x9e')]||0x0})['spread'](function(_0x533af1){for(var _0x21306e=0x0;_0x21306e<_0x4a8832['body']['ids'][_0x1a57('0x45')];_0x21306e+=0x1){var _0x2c2bff={'UserId':Number(_0x4a8832[_0x1a57('0x4e')]['id'])};_0x2c2bff[_[_0x1a57('0x9d')](_0x10217b[_0x1a57('0x9f')]())+_0x1a57('0xa0')]=Number(_0x4a8832[_0x1a57('0x59')][_0x1a57('0x5b')][_0x21306e]);socket[_0x1a57('0xa1')](_0x1a57('0x29')+_[_0x1a57('0x9d')](_0x10217b[_0x1a57('0x9f')]())+_0x1a57('0xa2'),_0x2c2bff);}return _0x533af1;})['then'](function(){if(_0x10217b===_0x1a57('0xa3')){return db[_0x1a57('0xa4')][_0x1a57('0x41')]({'where':{'id':_0x4a8832[_0x1a57('0x59')][_0x1a57('0x5b')]||[]},'raw':!![],'attributes':['id',_0x1a57('0x32')]});}})[_0x1a57('0x14')](function(_0x11c12c){var _0x477007=_0x5dd03e[_0x1a57('0x26')]({'plain':!![]});var _0x50d72b=[];if(_0x10217b===_0x1a57('0xa3')&&_0x477007[_0x1a57('0x27')]===_0x1a57('0x2b')&&_0x477007[_0x1a57('0xa5')]){for(var _0x3ec6b1=0x0;_0x3ec6b1<_0x11c12c[_0x1a57('0x45')];_0x3ec6b1+=0x1){_0x50d72b[_0x1a57('0x40')]({'membername':_0x477007[_0x1a57('0x32')],'UserId':_0x477007['id'],'queue_name':_0x11c12c[_0x3ec6b1]['name'],'VoiceQueueId':_0x11c12c[_0x3ec6b1]['id'],'interface':_[_0x1a57('0x61')](_0x477007[_0x1a57('0x99')])?util['format'](_0x1a57('0xa6'),_0x477007[_0x1a57('0x32')]):_0x477007[_0x1a57('0x99')],'paused':_0x477007['voicePause']||![],'penalty':_0x4a8832[_0x1a57('0x59')]['penalty']||0x0});}return BPromise[_0x1a57('0x83')](_0x50d72b,function(_0x3b8469){return db[_0x1a57('0xa7')][_0x1a57('0xa8')](_0x3b8469);});}return _0x5dd03e;});}})[_0x1a57('0x14')](respondWithStatusCode(_0x2d37cd,null))['catch'](handleError(_0x2d37cd,null));};exports[_0x1a57('0xa9')]=function(_0x29b4bb,_0x2c058f){var _0x6ce861;return db[_0x1a57('0x3d')][_0x1a57('0x31')]({'where':{'id':_0x29b4bb[_0x1a57('0x4e')]['id']},'attributes':['id',_0x1a57('0x32'),_0x1a57('0x27')]})[_0x1a57('0x14')](handleEntityNotFound(_0x2c058f,null))[_0x1a57('0x14')](function(_0xf90b0c){if(_0xf90b0c){_0x6ce861=_0xf90b0c;if(!_0x29b4bb['query']['channel']||!utils[_0x1a57('0x9a')](_0x29b4bb['query'][_0x1a57('0xaa')])){throw new db[(_0x1a57('0x8a'))]['ValidationError'](_0x1a57('0x9b'));}return _0xf90b0c[_0x1a57('0xab')+_['capitalize'](_0x29b4bb[_0x1a57('0x43')]['channel'][_0x1a57('0x9f')]())+_0x1a57('0xac')](_0x29b4bb[_0x1a57('0x43')]['ids']);}})[_0x1a57('0x14')](function(_0x1b79bc){if(_[_0x1a57('0xad')](_0x29b4bb[_0x1a57('0x43')]['ids'])){for(var _0x85bec5=0x0;_0x85bec5<_0x29b4bb[_0x1a57('0x43')]['ids'][_0x1a57('0x45')];_0x85bec5+=0x1){var _0x4fa46c={'UserId':Number(_0x29b4bb[_0x1a57('0x4e')]['id'])};_0x4fa46c[_[_0x1a57('0x9d')](_0x29b4bb['query'][_0x1a57('0xaa')][_0x1a57('0x9f')]())+_0x1a57('0xa0')]=Number(_0x29b4bb['query'][_0x1a57('0x5b')][_0x85bec5]);socket[_0x1a57('0xa1')](_0x1a57('0x29')+_['capitalize'](_0x29b4bb['query'][_0x1a57('0xaa')][_0x1a57('0x9f')]())+_0x1a57('0xae'),_0x4fa46c);}}else{var _0x4fa46c={'UserId':Number(_0x29b4bb[_0x1a57('0x4e')]['id'])};_0x4fa46c[_['capitalize'](_0x29b4bb[_0x1a57('0x43')]['channel']['toLowerCase']())+_0x1a57('0xa0')]=Number(_0x29b4bb[_0x1a57('0x43')][_0x1a57('0x5b')]);socket[_0x1a57('0xa1')](_0x1a57('0x29')+_[_0x1a57('0x9d')](_0x29b4bb[_0x1a57('0x43')][_0x1a57('0xaa')]['toLowerCase']())+'Queue:remove',_0x4fa46c);}return _0x1b79bc;})['then'](function(){if(_0x29b4bb[_0x1a57('0x43')]['channel']===_0x1a57('0xa3')){return db['UserVoiceQueueRt'][_0x1a57('0x34')]({'where':{'UserId':_0x29b4bb[_0x1a57('0x4e')]['id'],'VoiceQueueId':_0x29b4bb[_0x1a57('0x43')][_0x1a57('0x5b')]},'individualHooks':!![]})[_0x1a57('0x14')](function(){return _0x6ce861;});}return _0x6ce861;})[_0x1a57('0x14')](respondWithStatusCode(_0x2c058f,null))['catch'](handleError(_0x2c058f,null));};exports[_0x1a57('0xaf')]=function(_0x3ca060,_0x320365){_0x3ca060[_0x1a57('0x59')][_0x1a57('0xb0')]=_0x3ca060['file'][_0x1a57('0xb1')];return db['User'][_0x1a57('0x31')]({'where':{'id':_0x3ca060[_0x1a57('0x4e')]['id']}})[_0x1a57('0x14')](handleEntityNotFound(_0x320365,null))[_0x1a57('0x14')](saveUpdates(_0x3ca060['body'],null))[_0x1a57('0x14')](respondWithResult(_0x320365,null))['catch'](handleError(_0x320365,null));};exports['getAvatar']=function(_0x353b04,_0x3e8755){var _0x1281c6=path[_0x1a57('0xb2')](config['root'],'server/files/images/logos/default_profile.png');return db[_0x1a57('0x3d')][_0x1a57('0x31')]({'where':{'id':_0x353b04['params']['id']},'attributes':['id',_0x1a57('0xb0')],'raw':!![]})['then'](handleEntityNotFound(_0x3e8755,null))[_0x1a57('0x14')](function(_0x263f14){if(_0x263f14){if(_[_0x1a57('0x61')](_0x263f14[_0x1a57('0xb0')])){return _0x3e8755[_0x1a57('0xb3')](_0x1281c6);}else{if(!fs[_0x1a57('0xb4')](path[_0x1a57('0xb2')](config[_0x1a57('0xb5')],_0x1a57('0xb6'),_0x263f14[_0x1a57('0xb0')]))){return _0x3e8755[_0x1a57('0xb3')](_0x1281c6);}return _0x3e8755[_0x1a57('0xb3')](path[_0x1a57('0xb2')](config[_0x1a57('0xb5')],_0x1a57('0xb6'),_0x263f14['userpic']));}}})['catch'](handleError(_0x3e8755,null));};exports['getOpenTabs']=function(_0x513c03,_0x2a7a4c){return db[_0x1a57('0x3d')]['find']({'where':{'id':_0x513c03['params']['id']},'attributes':['id']})[_0x1a57('0x14')](handleEntityNotFound(_0x2a7a4c,null))[_0x1a57('0x14')](function(_0x375418){var _0x3209b6=[];values=_0x375418[_0x1a57('0x46')];_0x3209b6['push'](get_open_tabs(_0x1a57('0x56'),_0x375418[_0x1a57('0x46')]));_0x3209b6[_0x1a57('0x40')](get_open_tabs(_0x1a57('0x47'),_0x375418[_0x1a57('0x46')]));_0x3209b6[_0x1a57('0x40')](get_open_tabs(_0x1a57('0x57'),_0x375418[_0x1a57('0x46')]));_0x3209b6['push'](get_open_tabs('whatsapp',_0x375418['dataValues']));_0x3209b6[_0x1a57('0x40')](get_open_tabs(_0x1a57('0x48'),_0x375418[_0x1a57('0x46')]));_0x3209b6[_0x1a57('0x40')](get_open_tabs(_0x1a57('0x49'),_0x375418[_0x1a57('0x46')]));return BPromise[_0x1a57('0x4b')](_0x3209b6);})[_0x1a57('0x14')](function(_0x394371){var _0x557a61=[];if(_0x394371){for(var _0x77db02=0x0;_0x77db02<values[_0x1a57('0xb7')][_0x1a57('0x45')];_0x77db02++){var _0x4ed630=values['ChatOpenTabs'][_0x77db02];_0x557a61[_0x1a57('0x40')]({'channel':_0x1a57('0xb8'),'id':_0x4ed630['id'],'createdAt':_0x4ed630['createdAt']});}for(var _0x77db02=0x0;_0x77db02<values[_0x1a57('0xb9')][_0x1a57('0x45')];_0x77db02++){var _0x4ed630=values['FaxOpenTabs'][_0x77db02];_0x557a61[_0x1a57('0x40')]({'channel':_0x1a57('0xba'),'id':_0x4ed630['id'],'createdAt':_0x4ed630[_0x1a57('0xbb')]});}for(var _0x77db02=0x0;_0x77db02<values[_0x1a57('0xbc')][_0x1a57('0x45')];_0x77db02++){var _0x4ed630=values['OpenchannelOpenTabs'][_0x77db02];_0x557a61[_0x1a57('0x40')]({'channel':_0x1a57('0xbd'),'id':_0x4ed630['id'],'createdAt':_0x4ed630[_0x1a57('0xbb')]});}for(var _0x77db02=0x0;_0x77db02<values[_0x1a57('0xbe')]['length'];_0x77db02++){var _0x4ed630=values[_0x1a57('0xbe')][_0x77db02];_0x557a61[_0x1a57('0x40')]({'channel':_0x1a57('0xbf'),'id':_0x4ed630['id'],'createdAt':_0x4ed630[_0x1a57('0xbb')]});}for(var _0x77db02=0x0;_0x77db02<values['SmsOpenTabs'][_0x1a57('0x45')];_0x77db02++){var _0x4ed630=values[_0x1a57('0xc0')][_0x77db02];_0x557a61[_0x1a57('0x40')]({'channel':_0x1a57('0xc1'),'id':_0x4ed630['id'],'createdAt':_0x4ed630[_0x1a57('0xbb')]});}for(var _0x77db02=0x0;_0x77db02<values[_0x1a57('0xc2')]['length'];_0x77db02++){var _0x4ed630=values[_0x1a57('0xc2')][_0x77db02];_0x557a61[_0x1a57('0x40')]({'channel':_0x1a57('0xc3'),'id':_0x4ed630['id'],'createdAt':_0x4ed630[_0x1a57('0xbb')]});}var _0x3ba469={'count':_0x557a61['length'],'rows':_0x557a61};return _0x3ba469;}else return null;})['then'](respondWithResult(_0x2a7a4c,null))[_0x1a57('0x4c')](handleError(_0x2a7a4c,null));};exports[_0x1a57('0xc4')]=function(_0x2f024b,_0x2a5e16){var _0x550f23={};var _0x4af782={};var _0x42e803;var _0x134919;return db[_0x1a57('0x3d')][_0x1a57('0x91')]({'where':{'id':_0x2f024b[_0x1a57('0x4e')]['id']}})[_0x1a57('0x14')](handleEntityNotFound(_0x2a5e16,null))[_0x1a57('0x14')](function(_0x5a881f){if(_0x5a881f){_0x42e803=_0x5a881f;_0x4af782[_0x1a57('0x4f')]=_['keys'](db[_0x1a57('0xc5')][_0x1a57('0x52')]);_0x4af782[_0x1a57('0x43')]=_[_0x1a57('0x51')](_0x2f024b[_0x1a57('0x43')]);_0x4af782[_0x1a57('0xc6')]=_['intersection'](_0x4af782[_0x1a57('0x4f')],_0x4af782['query']);_0x550f23[_0x1a57('0x3f')]=_['intersection'](_0x4af782[_0x1a57('0x4f')],qs[_0x1a57('0x55')](_0x2f024b['query'][_0x1a57('0x55')]));_0x550f23[_0x1a57('0x3f')]=_0x550f23[_0x1a57('0x3f')][_0x1a57('0x45')]?_0x550f23['attributes']:_0x4af782[_0x1a57('0x4f')];_0x550f23[_0x1a57('0xc7')]=qs[_0x1a57('0xc8')](_0x2f024b[_0x1a57('0x43')][_0x1a57('0xc8')]);_0x550f23['where']=qs[_0x1a57('0xc6')](_[_0x1a57('0xc9')](_0x2f024b[_0x1a57('0x43')],_0x4af782[_0x1a57('0xc6')]));if(_0x2f024b[_0x1a57('0x43')][_0x1a57('0x2e')]){_0x550f23[_0x1a57('0xca')]=_[_0x1a57('0xcb')](_0x550f23[_0x1a57('0xca')],{'$or':_['map'](_0x550f23[_0x1a57('0x3f')],function(_0x4b10b6){var _0x2f3159={};_0x2f3159[_0x4b10b6]={'$like':'%'+_0x2f024b[_0x1a57('0x43')]['filter']+'%'};return _0x2f3159;})});}_0x550f23=_[_0x1a57('0xcb')]({},_0x550f23,_0x2f024b[_0x1a57('0xcc')]);return _0x42e803[_0x1a57('0xc4')](_0x550f23);}})[_0x1a57('0x14')](function(_0x4c4b52){if(_0x4c4b52){_0x134919=_0x4c4b52[_0x1a57('0x45')];if(_0x2f024b[_0x1a57('0x43')]['hasOwnProperty'](_0x1a57('0x3e'))){_0x550f23[_0x1a57('0xcd')]=[{'model':db[_0x1a57('0xce')],'as':_0x1a57('0xcf'),'required':![]},{'model':db[_0x1a57('0xd0')],'as':_0x1a57('0xd1'),'attributes':['id',_0x1a57('0x32'),_0x1a57('0xd2')],'where':_0x2f024b['query'][_0x1a57('0xd3')]?{'id':_0x2f024b['query'][_0x1a57('0xd3')]}:undefined,'required':_0x2f024b[_0x1a57('0x43')][_0x1a57('0xd3')]?!![]:![]}];}if(!_0x2f024b[_0x1a57('0x43')][_0x1a57('0xd4')](_0x1a57('0xd5'))){_0x550f23[_0x1a57('0x23')]=qs[_0x1a57('0x23')](_0x2f024b['query'][_0x1a57('0x23')]);_0x550f23[_0x1a57('0x21')]=qs[_0x1a57('0x21')](_0x2f024b[_0x1a57('0x43')][_0x1a57('0x21')]);}return _0x42e803[_0x1a57('0xc4')](_0x550f23);}})['then'](function(_0x291d5d){if(_0x291d5d){return _0x291d5d?{'count':_0x134919,'rows':_0x291d5d}:null;}})[_0x1a57('0x14')](respondWithResult(_0x2a5e16,null))[_0x1a57('0x4c')](handleError(_0x2a5e16,null));};exports[_0x1a57('0xd6')]=function(_0x4b9f41,_0x3c0f17){var _0x169d6b;var _0x4a82dc;var _0x42f21b={};var _0x4920b8;return db['User'][_0x1a57('0x91')]({'where':{'id':_0x4b9f41[_0x1a57('0x4e')]['id']},'attributes':['id','name',_0x1a57('0x27')]})[_0x1a57('0x14')](handleEntityNotFound(_0x3c0f17,null))[_0x1a57('0x14')](function(_0xc4e347){if(!utils[_0x1a57('0x9a')](_0x4b9f41[_0x1a57('0x43')][_0x1a57('0xaa')])){throw new db[(_0x1a57('0x8a'))][(_0x1a57('0x8b'))]('Unknown\x20channel');}_0x169d6b=_0xc4e347;var _0x127a85={};_0x127a85[_0x1a57('0x4f')]=_[_0x1a57('0x51')](db[_[_0x1a57('0x9d')](_0x4b9f41[_0x1a57('0x43')][_0x1a57('0xaa')])+_0x1a57('0xd7')]['rawAttributes']);_0x127a85[_0x1a57('0x43')]=_[_0x1a57('0x51')](_0x4b9f41[_0x1a57('0x43')]);_0x127a85['filters']=_[_0x1a57('0x54')](_0x127a85[_0x1a57('0x4f')],_0x127a85[_0x1a57('0x43')]);_0x42f21b['attributes']=_[_0x1a57('0x54')](_0x127a85['model'],qs['fields'](_0x4b9f41['query'][_0x1a57('0x55')]));_0x42f21b[_0x1a57('0x3f')]=_0x42f21b[_0x1a57('0x3f')][_0x1a57('0x45')]?_0x42f21b['attributes']:_0x127a85[_0x1a57('0x4f')];_0x42f21b[_0x1a57('0xc7')]=qs[_0x1a57('0xc8')](_0x4b9f41['query'][_0x1a57('0xc8')]);_0x42f21b[_0x1a57('0xca')]=qs[_0x1a57('0xc6')](_[_0x1a57('0xc9')](_0x4b9f41['query'],_0x127a85[_0x1a57('0xc6')]));if(_0x4b9f41[_0x1a57('0x43')][_0x1a57('0x2e')]){_0x42f21b['where']=_[_0x1a57('0xcb')](_0x42f21b[_0x1a57('0xca')],{'$or':_[_0x1a57('0x2f')](_0x42f21b[_0x1a57('0x3f')],function(_0x396820){var _0x2c5c29={};_0x2c5c29[_0x396820]={'$like':'%'+_0x4b9f41[_0x1a57('0x43')][_0x1a57('0x2e')]+'%'};return _0x2c5c29;})});}_0x42f21b=_['merge']({},_0x42f21b,_0x4b9f41[_0x1a57('0xcc')]);switch(_0x169d6b[_0x1a57('0x27')]){case _0x1a57('0x7a'):return db[_[_0x1a57('0x9d')](_0x4b9f41[_0x1a57('0x43')]['channel'])+_0x1a57('0xd7')]['findAll'](_0x42f21b);case _0x1a57('0x29'):case _0x1a57('0x2b'):return _0x169d6b[_0x1a57('0x26')+_[_0x1a57('0x9d')](_0x4b9f41[_0x1a57('0x43')]['channel'])+'Queues'](_0x42f21b);default:throw new db[(_0x1a57('0x8a'))][(_0x1a57('0x8b'))]('Unknown\x20role');}})[_0x1a57('0x14')](function(_0x278fa7){_0x4920b8=_0x278fa7[_0x1a57('0x45')];if(!_0x4b9f41['query']['hasOwnProperty']('nolimit')){_0x42f21b[_0x1a57('0x23')]=qs['limit'](_0x4b9f41[_0x1a57('0x43')]['limit']);_0x42f21b[_0x1a57('0x21')]=qs[_0x1a57('0x21')](_0x4b9f41[_0x1a57('0x43')]['offset']);}switch(_0x169d6b['role']){case _0x1a57('0x7a'):return db[_[_0x1a57('0x9d')](_0x4b9f41[_0x1a57('0x43')][_0x1a57('0xaa')])+'Queue']['findAll'](_0x42f21b);case _0x1a57('0x29'):case _0x1a57('0x2b'):return _0x169d6b['get'+_[_0x1a57('0x9d')](_0x4b9f41[_0x1a57('0x43')][_0x1a57('0xaa')])+_0x1a57('0xac')](_0x42f21b);}})[_0x1a57('0x14')](function(_0x590a9c){return{'count':_0x4920b8,'rows':_0x590a9c};})['then'](respondWithResult(_0x3c0f17,null))[_0x1a57('0x4c')](handleError(_0x3c0f17,null));};exports[_0x1a57('0xd8')]=function(_0x5df6d5,_0x1138c3){var _0x5c8fbb={};var _0x52f51c={};var _0xb6d6db;var _0x330e26;return db[_0x1a57('0x3d')][_0x1a57('0x91')]({'where':{'id':_0x5df6d5['params']['id']}})[_0x1a57('0x14')](handleEntityNotFound(_0x1138c3,null))[_0x1a57('0x14')](function(_0xe8f796){if(_0xe8f796){_0xb6d6db=_0xe8f796;_0x52f51c[_0x1a57('0x4f')]=_['keys'](db[_0x1a57('0xa7')][_0x1a57('0x52')]);_0x52f51c[_0x1a57('0x43')]=_[_0x1a57('0x51')](_0x5df6d5[_0x1a57('0x43')]);_0x52f51c[_0x1a57('0xc6')]=_[_0x1a57('0x54')](_0x52f51c['model'],_0x52f51c[_0x1a57('0x43')]);_0x5c8fbb[_0x1a57('0x3f')]=_[_0x1a57('0x54')](_0x52f51c[_0x1a57('0x4f')],qs['fields'](_0x5df6d5['query'][_0x1a57('0x55')]));_0x5c8fbb[_0x1a57('0x3f')]=_0x5c8fbb[_0x1a57('0x3f')][_0x1a57('0x45')]?_0x5c8fbb[_0x1a57('0x3f')]:_0x52f51c[_0x1a57('0x4f')];_0x5c8fbb[_0x1a57('0xc7')]=qs[_0x1a57('0xc8')](_0x5df6d5['query']['sort']);_0x5c8fbb['where']=qs['filters'](_[_0x1a57('0xc9')](_0x5df6d5[_0x1a57('0x43')],_0x52f51c['filters']));if(_0x5df6d5[_0x1a57('0x43')][_0x1a57('0x2e')]){_0x5c8fbb[_0x1a57('0xca')]=_[_0x1a57('0xcb')](_0x5c8fbb[_0x1a57('0xca')],{'$or':_[_0x1a57('0x2f')](_0x5c8fbb[_0x1a57('0x3f')],function(_0x28cbf4){var _0x2e6b2c={};_0x2e6b2c[_0x28cbf4]={'$like':'%'+_0x5df6d5[_0x1a57('0x43')][_0x1a57('0x2e')]+'%'};return _0x2e6b2c;})});}_0x5c8fbb=_[_0x1a57('0xcb')]({},_0x5c8fbb,_0x5df6d5[_0x1a57('0xcc')]);return _0xb6d6db[_0x1a57('0xd8')](_0x5c8fbb);}})[_0x1a57('0x14')](function(_0x8ae8b9){if(_0x8ae8b9){_0x330e26=_0x8ae8b9[_0x1a57('0x45')];if(!_0x5df6d5['query'][_0x1a57('0xd4')](_0x1a57('0xd5'))){_0x5c8fbb[_0x1a57('0x23')]=qs['limit'](_0x5df6d5['query'][_0x1a57('0x23')]);_0x5c8fbb[_0x1a57('0x21')]=qs[_0x1a57('0x21')](_0x5df6d5[_0x1a57('0x43')][_0x1a57('0x21')]);}return _0xb6d6db['getVoiceQueuesRt'](_0x5c8fbb);}})[_0x1a57('0x14')](function(_0x1839ed){if(_0x1839ed){return _0x1839ed?{'count':_0x330e26,'rows':_0x1839ed}:null;}})[_0x1a57('0x14')](respondWithResult(_0x1138c3,null))['catch'](handleError(_0x1138c3,null));};exports['getGroups']=function(_0x164d91,_0xd84f23){var _0x23503a={};var _0x3fc4ef={};var _0xe9354e;var _0x236486;return db[_0x1a57('0x3d')][_0x1a57('0x91')]({'where':{'id':_0x164d91[_0x1a57('0x4e')]['id']}})['then'](handleEntityNotFound(_0xd84f23,null))['then'](function(_0x4ba800){if(_0x4ba800){_0xe9354e=_0x4ba800;_0x3fc4ef[_0x1a57('0x4f')]=_[_0x1a57('0x51')](db[_0x1a57('0xd9')][_0x1a57('0x52')]);_0x3fc4ef[_0x1a57('0x43')]=_[_0x1a57('0x51')](_0x164d91[_0x1a57('0x43')]);_0x3fc4ef[_0x1a57('0xc6')]=_[_0x1a57('0x54')](_0x3fc4ef[_0x1a57('0x4f')],_0x3fc4ef[_0x1a57('0x43')]);_0x23503a[_0x1a57('0x3f')]=_[_0x1a57('0x54')](_0x3fc4ef[_0x1a57('0x4f')],qs[_0x1a57('0x55')](_0x164d91[_0x1a57('0x43')][_0x1a57('0x55')]));_0x23503a['attributes']=_0x23503a[_0x1a57('0x3f')][_0x1a57('0x45')]?_0x23503a['attributes']:_0x3fc4ef[_0x1a57('0x4f')];_0x23503a[_0x1a57('0xc7')]=qs['sort'](_0x164d91[_0x1a57('0x43')]['sort']);_0x23503a[_0x1a57('0xca')]=qs[_0x1a57('0xc6')](_[_0x1a57('0xc9')](_0x164d91[_0x1a57('0x43')],_0x3fc4ef['filters']));if(_0x164d91[_0x1a57('0x43')][_0x1a57('0x2e')]){_0x23503a[_0x1a57('0xca')]=_['merge'](_0x23503a[_0x1a57('0xca')],{'$or':_[_0x1a57('0x2f')](_0x23503a['attributes'],function(_0x9a0693){var _0x24c43b={};_0x24c43b[_0x9a0693]={'$like':'%'+_0x164d91[_0x1a57('0x43')]['filter']+'%'};return _0x24c43b;})});}_0x23503a=_['merge']({},_0x23503a,_0x164d91[_0x1a57('0xcc')]);return _0xe9354e['getGroups'](_0x23503a);}})[_0x1a57('0x14')](function(_0x1410bc){if(_0x1410bc){_0x236486=_0x1410bc[_0x1a57('0x45')];if(!_0x164d91[_0x1a57('0x43')][_0x1a57('0xd4')]('nolimit')){_0x23503a[_0x1a57('0x23')]=qs[_0x1a57('0x23')](_0x164d91[_0x1a57('0x43')]['limit']);_0x23503a[_0x1a57('0x21')]=qs[_0x1a57('0x21')](_0x164d91[_0x1a57('0x43')][_0x1a57('0x21')]);}return _0xe9354e['getGroups'](_0x23503a);}})[_0x1a57('0x14')](function(_0x259ac5){if(_0x259ac5){return _0x259ac5?{'count':_0x236486,'rows':_0x259ac5}:null;}})[_0x1a57('0x14')](respondWithResult(_0xd84f23,null))[_0x1a57('0x4c')](handleError(_0xd84f23,null));};exports[_0x1a57('0xda')]=function(_0x69487c,_0x1fa3b8){var _0x56bb04={'raw':!![],'where':{}};var _0x14bbd8={};var _0x55ce49={'count':0x0,'rows':[]};return db[_0x1a57('0x3d')][_0x1a57('0x91')]({'where':{'id':_0x69487c[_0x1a57('0x4e')]['id']}})[_0x1a57('0x14')](handleEntityNotFound(_0x1fa3b8,null))[_0x1a57('0x14')](function(_0x412b0b){if(_0x412b0b){_0x14bbd8[_0x1a57('0x4f')]=_[_0x1a57('0x51')](db['VoiceRecording'][_0x1a57('0x52')]);_0x14bbd8[_0x1a57('0x43')]=_[_0x1a57('0x51')](_0x69487c[_0x1a57('0x43')]);_0x14bbd8[_0x1a57('0xc6')]=_[_0x1a57('0x54')](_0x14bbd8[_0x1a57('0x4f')],_0x14bbd8[_0x1a57('0x43')]);_0x56bb04[_0x1a57('0x3f')]=_[_0x1a57('0x54')](_0x14bbd8[_0x1a57('0x4f')],qs[_0x1a57('0x55')](_0x69487c[_0x1a57('0x43')]['fields']));_0x56bb04[_0x1a57('0x3f')]=_0x56bb04[_0x1a57('0x3f')]['length']?_0x56bb04[_0x1a57('0x3f')]:_0x14bbd8[_0x1a57('0x4f')];if(!_0x69487c[_0x1a57('0x43')]['hasOwnProperty'](_0x1a57('0xd5'))){_0x56bb04[_0x1a57('0x23')]=qs[_0x1a57('0x23')](_0x69487c[_0x1a57('0x43')][_0x1a57('0x23')]);_0x56bb04[_0x1a57('0x21')]=qs[_0x1a57('0x21')](_0x69487c['query'][_0x1a57('0x21')]);}_0x56bb04['order']=qs[_0x1a57('0xc8')](_0x69487c[_0x1a57('0x43')]['sort']);_0x56bb04['where']=qs[_0x1a57('0xc6')](_['pick'](_0x69487c['query'],_0x14bbd8[_0x1a57('0xc6')]));_0x56bb04[_0x1a57('0xca')][_0x1a57('0xdb')]=_0x412b0b['id'];if(_0x69487c[_0x1a57('0x43')]['filter']){_0x56bb04[_0x1a57('0xca')]=_[_0x1a57('0xcb')](_0x56bb04[_0x1a57('0xca')],{'$or':_[_0x1a57('0x2f')](_0x56bb04[_0x1a57('0x3f')],function(_0x1403c2){var _0x152da5={};_0x152da5[_0x1403c2]={'$like':'%'+_0x69487c[_0x1a57('0x43')][_0x1a57('0x2e')]+'%'};return _0x152da5;})});}_0x56bb04=_['merge']({},_0x56bb04,_0x69487c['options']);return db['VoiceRecording'][_0x1a57('0x24')]({'where':_0x56bb04[_0x1a57('0xca')]})['then'](function(_0x432592){_0x55ce49[_0x1a57('0x24')]=_0x432592;if(_0x69487c[_0x1a57('0x43')][_0x1a57('0x3e')]){_0x56bb04[_0x1a57('0xcd')]=[{'all':!![]}];}return db[_0x1a57('0xdc')][_0x1a57('0x41')](_0x56bb04);})['then'](function(_0x3a58c1){_0x55ce49['rows']=_0x3a58c1;return _0x55ce49;});}})['then'](respondWithFilteredResult(_0x1fa3b8,_0x56bb04))['catch'](handleError(_0x1fa3b8,null));};exports[_0x1a57('0xdd')]=function(_0x1b8da8,_0xaa7e37){var _0x5f0863={'raw':!![],'where':{}};var _0x13eaaf={};var _0x1423e0={'count':0x0,'rows':[]};return db[_0x1a57('0x3d')][_0x1a57('0x91')]({'where':{'id':_0x1b8da8['params']['id']}})[_0x1a57('0x14')](handleEntityNotFound(_0xaa7e37,null))['then'](function(_0x48e53f){if(_0x48e53f){_0x13eaaf['model']=_[_0x1a57('0x51')](db['ScreenRecording'][_0x1a57('0x52')]);_0x13eaaf['query']=_['keys'](_0x1b8da8['query']);_0x13eaaf['filters']=_[_0x1a57('0x54')](_0x13eaaf['model'],_0x13eaaf[_0x1a57('0x43')]);_0x5f0863['attributes']=_[_0x1a57('0x54')](_0x13eaaf[_0x1a57('0x4f')],qs['fields'](_0x1b8da8[_0x1a57('0x43')][_0x1a57('0x55')]));_0x5f0863[_0x1a57('0x3f')]=_0x5f0863[_0x1a57('0x3f')]['length']?_0x5f0863[_0x1a57('0x3f')]:_0x13eaaf['model'];if(!_0x1b8da8['query'][_0x1a57('0xd4')]('nolimit')){_0x5f0863[_0x1a57('0x23')]=qs[_0x1a57('0x23')](_0x1b8da8['query'][_0x1a57('0x23')]);_0x5f0863[_0x1a57('0x21')]=qs[_0x1a57('0x21')](_0x1b8da8[_0x1a57('0x43')][_0x1a57('0x21')]);}_0x5f0863[_0x1a57('0xc7')]=qs['sort'](_0x1b8da8['query'][_0x1a57('0xc8')]);_0x5f0863[_0x1a57('0xca')]=qs[_0x1a57('0xc6')](_['pick'](_0x1b8da8[_0x1a57('0x43')],_0x13eaaf['filters']));_0x5f0863[_0x1a57('0xca')][_0x1a57('0xdb')]=_0x48e53f['id'];if(_0x1b8da8[_0x1a57('0x43')][_0x1a57('0x2e')]){_0x5f0863[_0x1a57('0xca')]=_[_0x1a57('0xcb')](_0x5f0863[_0x1a57('0xca')],{'$or':_[_0x1a57('0x2f')](_0x5f0863[_0x1a57('0x3f')],function(_0x23d9f4){var _0x54a5fc={};_0x54a5fc[_0x23d9f4]={'$like':'%'+_0x1b8da8[_0x1a57('0x43')]['filter']+'%'};return _0x54a5fc;})});}_0x5f0863=_[_0x1a57('0xcb')]({},_0x5f0863,_0x1b8da8[_0x1a57('0xcc')]);return db[_0x1a57('0xde')][_0x1a57('0x24')]({'where':_0x5f0863[_0x1a57('0xca')]})[_0x1a57('0x14')](function(_0x39fed5){_0x1423e0[_0x1a57('0x24')]=_0x39fed5;if(_0x1b8da8['query'][_0x1a57('0x3e')]){_0x5f0863[_0x1a57('0xcd')]=[{'all':!![]}];}return db[_0x1a57('0xde')]['findAll'](_0x5f0863);})[_0x1a57('0x14')](function(_0x3e7d1f){_0x1423e0[_0x1a57('0x42')]=_0x3e7d1f;return _0x1423e0;});}})[_0x1a57('0x14')](respondWithFilteredResult(_0xaa7e37,_0x5f0863))[_0x1a57('0x4c')](handleError(_0xaa7e37,null));};exports['getChatInteractions']=function(_0x299755,_0x5a5528){var _0x29e82f={};var _0x125819={};var _0x4c72fb;var _0x48d5f1;return db[_0x1a57('0x3d')]['findOne']({'where':{'id':_0x299755[_0x1a57('0x4e')]['id']}})['then'](handleEntityNotFound(_0x5a5528,null))[_0x1a57('0x14')](function(_0x5840a6){if(_0x5840a6){_0x4c72fb=_0x5840a6;_0x125819['model']=_['keys'](db[_0x1a57('0xdf')][_0x1a57('0x52')]);_0x125819[_0x1a57('0x43')]=_[_0x1a57('0x51')](_0x299755['query']);_0x125819[_0x1a57('0xc6')]=_['intersection'](_0x125819[_0x1a57('0x4f')],_0x125819[_0x1a57('0x43')]);_0x29e82f[_0x1a57('0x3f')]=_[_0x1a57('0x54')](_0x125819[_0x1a57('0x4f')],qs[_0x1a57('0x55')](_0x299755[_0x1a57('0x43')][_0x1a57('0x55')]));_0x29e82f['attributes']=_0x29e82f[_0x1a57('0x3f')]['length']?_0x29e82f[_0x1a57('0x3f')]:_0x125819[_0x1a57('0x4f')];_0x29e82f['order']=qs[_0x1a57('0xc8')](_0x299755[_0x1a57('0x43')][_0x1a57('0xc8')]);_0x29e82f[_0x1a57('0xca')]=qs[_0x1a57('0xc6')](_[_0x1a57('0xc9')](_0x299755[_0x1a57('0x43')],_0x125819[_0x1a57('0xc6')]));if(_0x299755[_0x1a57('0x43')][_0x1a57('0x2e')]){_0x29e82f[_0x1a57('0xca')]=_[_0x1a57('0xcb')](_0x29e82f[_0x1a57('0xca')],{'$or':_['map'](_0x29e82f[_0x1a57('0x3f')],function(_0x52f399){var _0x348d1c={};_0x348d1c[_0x52f399]={'$like':'%'+_0x299755[_0x1a57('0x43')][_0x1a57('0x2e')]+'%'};return _0x348d1c;})});}_0x29e82f=_[_0x1a57('0xcb')]({},_0x29e82f,_0x299755[_0x1a57('0xcc')]);return _0x4c72fb[_0x1a57('0xe0')](_0x29e82f);}})[_0x1a57('0x14')](function(_0x3fdf5){if(_0x3fdf5){_0x48d5f1=_0x3fdf5[_0x1a57('0x45')];if(!_0x299755['query'][_0x1a57('0xd4')](_0x1a57('0xd5'))){_0x29e82f[_0x1a57('0x23')]=qs['limit'](_0x299755[_0x1a57('0x43')][_0x1a57('0x23')]);_0x29e82f[_0x1a57('0x21')]=qs[_0x1a57('0x21')](_0x299755[_0x1a57('0x43')][_0x1a57('0x21')]);}return _0x4c72fb[_0x1a57('0xe0')](_0x29e82f);}})[_0x1a57('0x14')](function(_0x19685a){if(_0x19685a){return _0x19685a?{'count':_0x48d5f1,'rows':_0x19685a}:null;}})['then'](respondWithResult(_0x5a5528,null))[_0x1a57('0x4c')](handleError(_0x5a5528,null));};exports[_0x1a57('0xe1')]=function(_0x4e80aa,_0x23b36e){var _0x2955c6={};var _0x4753f8={};var _0x4b72da;var _0x39d8e7;return db['User'][_0x1a57('0x91')]({'where':{'id':_0x4e80aa[_0x1a57('0x4e')]['id']}})[_0x1a57('0x14')](handleEntityNotFound(_0x23b36e,null))[_0x1a57('0x14')](function(_0x450621){if(_0x450621){_0x4b72da=_0x450621;_0x4753f8[_0x1a57('0x4f')]=_['keys'](db[_0x1a57('0xe2')]['rawAttributes']);_0x4753f8[_0x1a57('0x43')]=_['keys'](_0x4e80aa[_0x1a57('0x43')]);_0x4753f8['filters']=_[_0x1a57('0x54')](_0x4753f8[_0x1a57('0x4f')],_0x4753f8['query']);_0x2955c6['attributes']=_[_0x1a57('0x54')](_0x4753f8['model'],qs['fields'](_0x4e80aa[_0x1a57('0x43')][_0x1a57('0x55')]));_0x2955c6[_0x1a57('0x3f')]=_0x2955c6[_0x1a57('0x3f')][_0x1a57('0x45')]?_0x2955c6[_0x1a57('0x3f')]:_0x4753f8[_0x1a57('0x4f')];_0x2955c6[_0x1a57('0xc7')]=qs[_0x1a57('0xc8')](_0x4e80aa[_0x1a57('0x43')][_0x1a57('0xc8')]);_0x2955c6[_0x1a57('0xca')]=qs[_0x1a57('0xc6')](_[_0x1a57('0xc9')](_0x4e80aa['query'],_0x4753f8[_0x1a57('0xc6')]));if(_0x4e80aa[_0x1a57('0x43')][_0x1a57('0x2e')]){_0x2955c6[_0x1a57('0xca')]=_['merge'](_0x2955c6[_0x1a57('0xca')],{'$or':_['map'](_0x2955c6[_0x1a57('0x3f')],function(_0x4353f2){var _0x4ca874={};_0x4ca874[_0x4353f2]={'$like':'%'+_0x4e80aa['query'][_0x1a57('0x2e')]+'%'};return _0x4ca874;})});}_0x2955c6=_[_0x1a57('0xcb')]({},_0x2955c6,_0x4e80aa['options']);return _0x4b72da[_0x1a57('0xe1')](_0x2955c6);}})['then'](function(_0x2fcec7){if(_0x2fcec7){_0x39d8e7=_0x2fcec7[_0x1a57('0x45')];if(!_0x4e80aa[_0x1a57('0x43')]['hasOwnProperty'](_0x1a57('0xd5'))){_0x2955c6[_0x1a57('0x23')]=qs[_0x1a57('0x23')](_0x4e80aa[_0x1a57('0x43')][_0x1a57('0x23')]);_0x2955c6[_0x1a57('0x21')]=qs[_0x1a57('0x21')](_0x4e80aa['query'][_0x1a57('0x21')]);}return _0x4b72da['getOpenchannelInteractions'](_0x2955c6);}})[_0x1a57('0x14')](function(_0x86407d){if(_0x86407d){return _0x86407d?{'count':_0x39d8e7,'rows':_0x86407d}:null;}})[_0x1a57('0x14')](respondWithResult(_0x23b36e,null))[_0x1a57('0x4c')](handleError(_0x23b36e,null));};exports[_0x1a57('0xe3')]=function(_0x5497f6,_0x12cd3f){var _0xb36b80={'raw':!![],'where':{}};var _0x1e2bed={};var _0xc7ed3b={'count':0x0,'rows':[]};return db['User']['findOne']({'where':{'id':_0x5497f6['params']['id']}})[_0x1a57('0x14')](handleEntityNotFound(_0x12cd3f,null))[_0x1a57('0x14')](function(_0x9c32b0){if(_0x9c32b0){_0x1e2bed[_0x1a57('0x4f')]=_['keys'](db[_0x1a57('0xe4')][_0x1a57('0x52')]);_0x1e2bed[_0x1a57('0x43')]=_[_0x1a57('0x51')](_0x5497f6['query']);_0x1e2bed[_0x1a57('0xc6')]=_[_0x1a57('0x54')](_0x1e2bed['model'],_0x1e2bed[_0x1a57('0x43')]);_0xb36b80['attributes']=_[_0x1a57('0x54')](_0x1e2bed[_0x1a57('0x4f')],qs['fields'](_0x5497f6[_0x1a57('0x43')][_0x1a57('0x55')]));_0xb36b80[_0x1a57('0x3f')]=_0xb36b80['attributes'][_0x1a57('0x45')]?_0xb36b80[_0x1a57('0x3f')]:_0x1e2bed[_0x1a57('0x4f')];if(!_0x5497f6['query']['hasOwnProperty'](_0x1a57('0xd5'))){_0xb36b80[_0x1a57('0x23')]=qs[_0x1a57('0x23')](_0x5497f6[_0x1a57('0x43')][_0x1a57('0x23')]);_0xb36b80['offset']=qs[_0x1a57('0x21')](_0x5497f6[_0x1a57('0x43')][_0x1a57('0x21')]);}_0xb36b80[_0x1a57('0xc7')]=qs[_0x1a57('0xc8')](_0x5497f6[_0x1a57('0x43')][_0x1a57('0xc8')]);_0xb36b80[_0x1a57('0xca')]=qs['filters'](_[_0x1a57('0xc9')](_0x5497f6[_0x1a57('0x43')],_0x1e2bed[_0x1a57('0xc6')]));_0xb36b80['where']['UserId']=_0x9c32b0['id'];if(_0x5497f6[_0x1a57('0x43')]['filter']){_0xb36b80['where']=_[_0x1a57('0xcb')](_0xb36b80[_0x1a57('0xca')],{'$or':_['map'](_0xb36b80['attributes'],function(_0x5691dd){var _0x412111={};_0x412111[_0x5691dd]={'$like':'%'+_0x5497f6['query']['filter']+'%'};return _0x412111;})});}_0xb36b80=_[_0x1a57('0xcb')]({},_0xb36b80,_0x5497f6[_0x1a57('0xcc')]);return db[_0x1a57('0xe4')][_0x1a57('0x24')]({'where':_0xb36b80[_0x1a57('0xca')]})[_0x1a57('0x14')](function(_0x598583){_0xc7ed3b[_0x1a57('0x24')]=_0x598583;if(_0x5497f6[_0x1a57('0x43')][_0x1a57('0x3e')]){_0xb36b80[_0x1a57('0xcd')]=[{'all':!![]}];}return db['MailInteraction'][_0x1a57('0x41')](_0xb36b80);})[_0x1a57('0x14')](function(_0x127269){_0xc7ed3b[_0x1a57('0x42')]=_0x127269;return _0xc7ed3b;});}})[_0x1a57('0x14')](respondWithFilteredResult(_0x12cd3f,_0xb36b80))['catch'](handleError(_0x12cd3f,null));};exports[_0x1a57('0xe5')]=function(_0x5e58e3,_0x22bbc5){var _0x5498fc={};var _0x1b9dcb={};var _0x26870c;var _0x29c453;return db[_0x1a57('0x3d')][_0x1a57('0x91')]({'where':{'id':_0x5e58e3['params']['id']}})[_0x1a57('0x14')](handleEntityNotFound(_0x22bbc5,null))[_0x1a57('0x14')](function(_0x39e1c2){if(_0x39e1c2){_0x26870c=_0x39e1c2;_0x1b9dcb[_0x1a57('0x4f')]=_[_0x1a57('0x51')](db['SmsInteraction'][_0x1a57('0x52')]);_0x1b9dcb['query']=_['keys'](_0x5e58e3[_0x1a57('0x43')]);_0x1b9dcb['filters']=_[_0x1a57('0x54')](_0x1b9dcb[_0x1a57('0x4f')],_0x1b9dcb[_0x1a57('0x43')]);_0x5498fc[_0x1a57('0x3f')]=_[_0x1a57('0x54')](_0x1b9dcb['model'],qs[_0x1a57('0x55')](_0x5e58e3[_0x1a57('0x43')][_0x1a57('0x55')]));_0x5498fc[_0x1a57('0x3f')]=_0x5498fc['attributes'][_0x1a57('0x45')]?_0x5498fc[_0x1a57('0x3f')]:_0x1b9dcb[_0x1a57('0x4f')];_0x5498fc[_0x1a57('0xc7')]=qs[_0x1a57('0xc8')](_0x5e58e3['query']['sort']);_0x5498fc[_0x1a57('0xca')]=qs[_0x1a57('0xc6')](_[_0x1a57('0xc9')](_0x5e58e3[_0x1a57('0x43')],_0x1b9dcb['filters']));if(_0x5e58e3[_0x1a57('0x43')][_0x1a57('0x2e')]){_0x5498fc['where']=_[_0x1a57('0xcb')](_0x5498fc['where'],{'$or':_[_0x1a57('0x2f')](_0x5498fc['attributes'],function(_0x5cfdef){var _0x3498ee={};_0x3498ee[_0x5cfdef]={'$like':'%'+_0x5e58e3[_0x1a57('0x43')]['filter']+'%'};return _0x3498ee;})});}_0x5498fc=_[_0x1a57('0xcb')]({},_0x5498fc,_0x5e58e3[_0x1a57('0xcc')]);return _0x26870c[_0x1a57('0xe5')](_0x5498fc);}})[_0x1a57('0x14')](function(_0x140f1a){if(_0x140f1a){_0x29c453=_0x140f1a['length'];if(!_0x5e58e3[_0x1a57('0x43')]['hasOwnProperty'](_0x1a57('0xd5'))){_0x5498fc[_0x1a57('0x23')]=qs[_0x1a57('0x23')](_0x5e58e3[_0x1a57('0x43')]['limit']);_0x5498fc[_0x1a57('0x21')]=qs[_0x1a57('0x21')](_0x5e58e3[_0x1a57('0x43')][_0x1a57('0x21')]);}return _0x26870c[_0x1a57('0xe5')](_0x5498fc);}})[_0x1a57('0x14')](function(_0x3d5df0){if(_0x3d5df0){return _0x3d5df0?{'count':_0x29c453,'rows':_0x3d5df0}:null;}})['then'](respondWithResult(_0x22bbc5,null))[_0x1a57('0x4c')](handleError(_0x22bbc5,null));};exports[_0x1a57('0xe6')]=function(_0xeba53c,_0x43a33e){var _0x5636ea={};var _0x4fb81b={};var _0x2c7a67;var _0x2a2bae;return db['User'][_0x1a57('0x91')]({'where':{'id':_0xeba53c[_0x1a57('0x4e')]['id']}})[_0x1a57('0x14')](handleEntityNotFound(_0x43a33e,null))['then'](function(_0x12b08f){if(_0x12b08f){_0x2c7a67=_0x12b08f;_0x4fb81b[_0x1a57('0x4f')]=_[_0x1a57('0x51')](db[_0x1a57('0xe7')][_0x1a57('0x52')]);_0x4fb81b[_0x1a57('0x43')]=_['keys'](_0xeba53c[_0x1a57('0x43')]);_0x4fb81b[_0x1a57('0xc6')]=_[_0x1a57('0x54')](_0x4fb81b[_0x1a57('0x4f')],_0x4fb81b[_0x1a57('0x43')]);_0x5636ea['attributes']=_[_0x1a57('0x54')](_0x4fb81b['model'],qs[_0x1a57('0x55')](_0xeba53c[_0x1a57('0x43')][_0x1a57('0x55')]));_0x5636ea['attributes']=_0x5636ea['attributes'][_0x1a57('0x45')]?_0x5636ea[_0x1a57('0x3f')]:_0x4fb81b[_0x1a57('0x4f')];_0x5636ea[_0x1a57('0xc7')]=qs['sort'](_0xeba53c[_0x1a57('0x43')][_0x1a57('0xc8')]);_0x5636ea[_0x1a57('0xca')]=qs[_0x1a57('0xc6')](_[_0x1a57('0xc9')](_0xeba53c[_0x1a57('0x43')],_0x4fb81b[_0x1a57('0xc6')]));if(_0xeba53c[_0x1a57('0x43')]['filter']){_0x5636ea[_0x1a57('0xca')]=_['merge'](_0x5636ea['where'],{'$or':_[_0x1a57('0x2f')](_0x5636ea['attributes'],function(_0x1684a3){var _0x12f4f5={};_0x12f4f5[_0x1684a3]={'$like':'%'+_0xeba53c[_0x1a57('0x43')][_0x1a57('0x2e')]+'%'};return _0x12f4f5;})});}_0x5636ea=_[_0x1a57('0xcb')]({},_0x5636ea,_0xeba53c[_0x1a57('0xcc')]);return _0x2c7a67[_0x1a57('0xe6')](_0x5636ea);}})[_0x1a57('0x14')](function(_0x4dd633){if(_0x4dd633){_0x2a2bae=_0x4dd633[_0x1a57('0x45')];if(!_0xeba53c[_0x1a57('0x43')][_0x1a57('0xd4')](_0x1a57('0xd5'))){_0x5636ea[_0x1a57('0x23')]=qs['limit'](_0xeba53c['query'][_0x1a57('0x23')]);_0x5636ea[_0x1a57('0x21')]=qs[_0x1a57('0x21')](_0xeba53c[_0x1a57('0x43')]['offset']);}return _0x2c7a67['getFaxInteractions'](_0x5636ea);}})[_0x1a57('0x14')](function(_0x28a02e){if(_0x28a02e){return _0x28a02e?{'count':_0x2a2bae,'rows':_0x28a02e}:null;}})['then'](respondWithResult(_0x43a33e,null))[_0x1a57('0x4c')](handleError(_0x43a33e,null));};exports['getWhatsappInteractions']=function(_0x9ee15a,_0x27b2a4){var _0x121011={};var _0x3898b5={};var _0x5b9003;var _0x385fbf;return db['User'][_0x1a57('0x91')]({'where':{'id':_0x9ee15a[_0x1a57('0x4e')]['id']}})[_0x1a57('0x14')](handleEntityNotFound(_0x27b2a4,null))[_0x1a57('0x14')](function(_0xf72e91){if(_0xf72e91){_0x5b9003=_0xf72e91;_0x3898b5['model']=_['keys'](db[_0x1a57('0xe8')]['rawAttributes']);_0x3898b5[_0x1a57('0x43')]=_['keys'](_0x9ee15a[_0x1a57('0x43')]);_0x3898b5['filters']=_[_0x1a57('0x54')](_0x3898b5[_0x1a57('0x4f')],_0x3898b5['query']);_0x121011[_0x1a57('0x3f')]=_['intersection'](_0x3898b5[_0x1a57('0x4f')],qs[_0x1a57('0x55')](_0x9ee15a[_0x1a57('0x43')]['fields']));_0x121011[_0x1a57('0x3f')]=_0x121011[_0x1a57('0x3f')]['length']?_0x121011['attributes']:_0x3898b5[_0x1a57('0x4f')];_0x121011['order']=qs[_0x1a57('0xc8')](_0x9ee15a[_0x1a57('0x43')][_0x1a57('0xc8')]);_0x121011[_0x1a57('0xca')]=qs[_0x1a57('0xc6')](_[_0x1a57('0xc9')](_0x9ee15a['query'],_0x3898b5['filters']));if(_0x9ee15a[_0x1a57('0x43')][_0x1a57('0x2e')]){_0x121011[_0x1a57('0xca')]=_[_0x1a57('0xcb')](_0x121011[_0x1a57('0xca')],{'$or':_[_0x1a57('0x2f')](_0x121011[_0x1a57('0x3f')],function(_0x2edfa4){var _0x2a23d0={};_0x2a23d0[_0x2edfa4]={'$like':'%'+_0x9ee15a[_0x1a57('0x43')]['filter']+'%'};return _0x2a23d0;})});}_0x121011=_[_0x1a57('0xcb')]({},_0x121011,_0x9ee15a[_0x1a57('0xcc')]);return _0x5b9003[_0x1a57('0xe9')](_0x121011);}})[_0x1a57('0x14')](function(_0x437a19){if(_0x437a19){_0x385fbf=_0x437a19['length'];if(!_0x9ee15a[_0x1a57('0x43')]['hasOwnProperty']('nolimit')){_0x121011[_0x1a57('0x23')]=qs[_0x1a57('0x23')](_0x9ee15a[_0x1a57('0x43')][_0x1a57('0x23')]);_0x121011['offset']=qs[_0x1a57('0x21')](_0x9ee15a['query'][_0x1a57('0x21')]);}return _0x5b9003[_0x1a57('0xe9')](_0x121011);}})[_0x1a57('0x14')](function(_0x2d0144){if(_0x2d0144){return _0x2d0144?{'count':_0x385fbf,'rows':_0x2d0144}:null;}})[_0x1a57('0x14')](respondWithResult(_0x27b2a4,null))[_0x1a57('0x4c')](handleError(_0x27b2a4,null));};exports[_0x1a57('0xea')]=function(_0x252662,_0x240481,_0x186b8d){var _0x5c6d64;var _0x2b33ba;var _0x3b9a2;var _0x2499e7=!_[_0x1a57('0x61')](_0x252662['params']['id'])?_0x252662[_0x1a57('0x4e')]['id']:!_[_0x1a57('0x61')](_0x252662[_0x1a57('0x29')]['id'])?_0x252662['user']['id']:null;return db[_0x1a57('0x3d')][_0x1a57('0x31')]({'where':{'id':_0x2499e7,'role':{'$or':[_0x1a57('0x7a'),_0x1a57('0x29'),'agent']}},'attributes':['id',_0x1a57('0x32'),_0x1a57('0xeb'),_0x1a57('0xec'),'role',_0x1a57('0x60'),_0x1a57('0x97')]})['then'](function(_0x3a2a4a){if(_0x3a2a4a){if(_0x3a2a4a[_0x1a57('0x27')]===_0x1a57('0x2b')){_0x5c6d64=_0x3a2a4a;if(_0x252662[_0x1a57('0x59')][_0x1a57('0x99')]){_0x3b9a2=util[_0x1a57('0xed')]('LOCAL/%s@from-sip/n',_0x5c6d64[_0x252662['body'][_0x1a57('0x99')]]);}else if(_0x252662['body'][_0x1a57('0xee')]){_0x3b9a2=util[_0x1a57('0xed')](_0x1a57('0xa6'),_0x252662[_0x1a57('0x59')][_0x1a57('0xee')]);}else{_0x3b9a2=util['format'](_0x1a57('0xa6'),_0x5c6d64[_0x1a57('0x32')]);}socket['to'](util[_0x1a57('0xed')]('user:%s',_0x5c6d64[_0x1a57('0x32')]))[_0x1a57('0xa1')](_0x1a57('0xef'),{'user':{'id':_0x5c6d64['id'],'name':_0x5c6d64['name']},'ip':_0x252662['headers'][_0x1a57('0xf0')]||_0x252662[_0x1a57('0xf1')][_0x1a57('0xf2')]||_0x252662['socket'][_0x1a57('0xf2')]||_0x252662[_0x1a57('0xf1')][_0x1a57('0xf3')]['remoteAddress']});return db[_0x1a57('0xa7')][_0x1a57('0x34')]({'where':{'membername':_0x5c6d64['name']},'individualHooks':!![]});}}else{throw new db[(_0x1a57('0x8a'))]['ValidationError'](_0x1a57('0xf4'));}})[_0x1a57('0x14')](function(){if(_0x5c6d64){return _0x5c6d64[_0x1a57('0xf5')]({'raw':!![]});}})['then'](function(_0x565988){if(_0x5c6d64){var _0x118097=[];if(_0x565988){_0x2b33ba=_0x565988;if(_0x2b33ba[_0x1a57('0x45')]){for(var _0x2f671c=0x0;_0x2f671c<_0x2b33ba[_0x1a57('0x45')];_0x2f671c++){_0x118097[_0x1a57('0x40')]({'membername':_0x5c6d64[_0x1a57('0x32')],'UserId':_0x5c6d64['id'],'queue_name':_0x2b33ba[_0x2f671c][_0x1a57('0x32')],'VoiceQueueId':_0x2b33ba[_0x2f671c]['id'],'interface':_0x3b9a2,'paused':_0x5c6d64['loginInPause']||![],'penalty':_0x2b33ba[_0x2f671c]['UserVoiceQueue.penalty']||0x0});}return BPromise['each'](_0x118097,function(_0xba3c8a){return db[_0x1a57('0xa7')][_0x1a57('0xa8')](_0xba3c8a);});}}}})[_0x1a57('0x14')](function(){if(_0x5c6d64){return db[_0x1a57('0xf6')]['findAll']({'where':{'membername':_0x5c6d64['name'],'exitAt':null}});}})[_0x1a57('0x14')](function(_0x17a153){if(_0x5c6d64){var _0x29ee95=[];_0x17a153[_0x1a57('0xf7')](function(_0x364598){_0x29ee95['push'](_0x364598[_0x1a57('0x58')]({'exitAt':moment()[_0x1a57('0xed')](_0x1a57('0xf8'))}));});return BPromise[_0x1a57('0x4b')](_0x29ee95);}})[_0x1a57('0x14')](function(){if(_0x5c6d64){var _0x5a7f8d=[];var _0x44b634=[];var _0x5e3a2f=utils[_0x1a57('0xf9')]();var _0x27cc04={'membername':_0x5c6d64[_0x1a57('0x32')],'interface':_0x3b9a2,'enterAt':moment()[_0x1a57('0xed')](_0x1a57('0xf8')),'role':_0x5c6d64[_0x1a57('0x27')],'internal':_0x5c6d64['internal']};_0x5e3a2f[_0x1a57('0xf7')](function(_0x1f4cf8){_0x5a7f8d[_0x1a57('0x40')](_[_0x1a57('0xcb')]({'channel':_0x1f4cf8,'type':_0x1a57('0xfa'),'data1':_0x252662[_0x1a57('0x59')][_0x1a57('0xfb')],'data2':_0x3b9a2},_0x27cc04));if(_0x5c6d64[_0x1a57('0x97')]){_0x44b634[_0x1a57('0x40')](_[_0x1a57('0xcb')]({'channel':_0x1f4cf8,'type':'PAUSE','data1':_0x1a57('0xfc')},_0x27cc04));}});return db[_0x1a57('0xf6')][_0x1a57('0x81')](_0x5a7f8d['concat'](_0x44b634),{'individualHooks':!![]});}})[_0x1a57('0x14')](function(){if(_0x5c6d64){return _0x5c6d64[_0x1a57('0x58')]({'online':!![],'lastLoginAt':moment()[_0x1a57('0xed')](_0x1a57('0xf8')),'voicePause':_0x5c6d64[_0x1a57('0x97')]||![],'mailPause':_0x5c6d64['loginInPause']||![],'chatPause':_0x5c6d64[_0x1a57('0x97')]||![],'faxPause':_0x5c6d64['loginInPause']||![],'smsPause':_0x5c6d64[_0x1a57('0x97')]||![],'openchannelPause':_0x5c6d64[_0x1a57('0x97')]||![],'whatsappPause':_0x5c6d64[_0x1a57('0x97')]||![],'pauseType':_0x5c6d64[_0x1a57('0x97')]?'LOGININPAUSE':null,'interface':_0x3b9a2,'lastPauseAt':moment()['format'](_0x1a57('0xf8'))});}})[_0x1a57('0x14')](function(_0x2be8be){if(_0x252662[_0x1a57('0xfd')]){return _0x186b8d();}else{return BPromise[_0x1a57('0xfe')](_0x2be8be)[_0x1a57('0x14')](respondWithResult(_0x240481,null));}})[_0x1a57('0x4c')](handleError(_0x240481,null));};exports[_0x1a57('0xff')]=function(_0x23ec6f,_0x14c095){var _0x218398;return db[_0x1a57('0x3d')][_0x1a57('0x31')]({'where':{'id':_0x23ec6f[_0x1a57('0x4e')]['id'],'role':'agent'},'attributes':['id',_0x1a57('0x32'),_0x1a57('0x27')]})[_0x1a57('0x14')](handleEntityNotFound(_0x14c095,null))[_0x1a57('0x14')](function(_0x4ecc3e){if(_0x4ecc3e){_0x218398=_0x4ecc3e;return db['UserVoiceQueueRt'][_0x1a57('0x34')]({'where':{'membername':_0x218398[_0x1a57('0x32')]},'individualHooks':!![]});}})[_0x1a57('0x14')](function(){return db[_0x1a57('0xf6')][_0x1a57('0x41')]({'where':{'membername':_0x218398[_0x1a57('0x32')],'exitAt':null}});})[_0x1a57('0x14')](function(_0x374de1){var _0x54c5d3=[];_0x374de1[_0x1a57('0xf7')](function(_0x51e1a7){_0x54c5d3[_0x1a57('0x40')](_0x51e1a7[_0x1a57('0x58')]({'exitAt':moment()[_0x1a57('0xed')]('YYYY-MM-DD\x20HH:mm:ss')}));});return BPromise['all'](_0x54c5d3);})['then'](function(){return _0x218398[_0x1a57('0x58')]({'online':![],'voicePause':![],'mailPause':![],'chatPause':![],'faxPause':![],'smsPause':![],'openchannelPause':![],'whatsappPause':![],'interface':null});})[_0x1a57('0x14')](respondWithResult(_0x14c095,null))[_0x1a57('0x4c')](handleError(_0x14c095,null));};exports[_0x1a57('0x100')]=function(_0x405cfd,_0x5e9343){var _0xddd561;return db['UserVoiceQueueRt'][_0x1a57('0x58')]({'paused':0x1},{'where':{'UserId':_0x405cfd[_0x1a57('0x4e')]['id']},'individualHooks':!![]})[_0x1a57('0x14')](function(){return db[_0x1a57('0x3d')][_0x1a57('0x31')]({'where':{'id':_0x405cfd['params']['id'],'role':_0x1a57('0x2b')},'attributes':['id',_0x1a57('0x32'),'role',_0x1a57('0x60'),'interface']});})[_0x1a57('0x14')](handleEntityNotFound(_0x5e9343,null))['then'](function(_0x425730){if(_0x425730){_0xddd561=_0x425730;return respondWithRpcPromise('QueuePause',_0x1a57('0x100'),{'id':_0xddd561['id'],'name':_0xddd561[_0x1a57('0x32')],'pause':!![]});}})[_0x1a57('0x14')](function(){if(_0xddd561){return db[_0x1a57('0xf6')][_0x1a57('0x41')]({'where':{'membername':_0xddd561[_0x1a57('0x32')],'type':_0x1a57('0x101'),'exitAt':null}});}})[_0x1a57('0x14')](function(_0x3a8299){if(_0x3a8299[_0x1a57('0x45')]){var _0x356428=moment()['format'](_0x1a57('0xf8'));for(var _0x9ee424=0x0,_0x31745f=_0x3a8299[_0x1a57('0x45')];_0x9ee424<_0x31745f;_0x9ee424++){_0x3a8299[_0x9ee424][_0x1a57('0x102')]({'exitAt':_0x356428});}}})[_0x1a57('0x14')](function(){var _0x1a221a=[];var _0xad34be=utils[_0x1a57('0xf9')]();_0xad34be[_0x1a57('0xf7')](function(_0x9376a4){_0x1a221a[_0x1a57('0x40')]({'channel':_0x9376a4,'membername':_0xddd561['name'],'interface':_[_0x1a57('0x61')](_0xddd561[_0x1a57('0x99')])?util[_0x1a57('0xed')](_0x1a57('0xa6'),_0xddd561[_0x1a57('0x32')]):_0xddd561[_0x1a57('0x99')],'type':_0x1a57('0x101'),'enterAt':moment()[_0x1a57('0xed')](_0x1a57('0xf8')),'data1':_0x405cfd[_0x1a57('0x59')][_0x1a57('0x103')]||'DEFAULT\x20PAUSE','role':_0xddd561[_0x1a57('0x27')],'internal':_0xddd561[_0x1a57('0x60')]});});return db[_0x1a57('0xf6')][_0x1a57('0x81')](_0x1a221a,{'individualHooks':!![]});})[_0x1a57('0x14')](function(){return _0xddd561[_0x1a57('0x58')]({'voicePause':!![],'mailPause':!![],'chatPause':!![],'faxPause':!![],'smsPause':!![],'whatsappPause':!![],'openchannelPause':!![],'pauseType':_0x405cfd[_0x1a57('0x59')][_0x1a57('0x103')]||'DEFAULT\x20PAUSE','lastPauseAt':moment()['format'](_0x1a57('0xf8'))});})[_0x1a57('0x14')](respondWithResult(_0x5e9343,null))[_0x1a57('0x4c')](handleError(_0x5e9343,null));};exports[_0x1a57('0x104')]=function(_0x5d3258,_0x3dc0db){var _0x43a797;return db[_0x1a57('0x3d')]['find']({'where':{'id':_0x5d3258[_0x1a57('0x4e')]['id']},'attributes':['id',_0x1a57('0x32'),_0x1a57('0x27'),_0x1a57('0x98'),_0x1a57('0x105'),'chatPause',_0x1a57('0x106'),_0x1a57('0x107'),_0x1a57('0x108'),'whatsapppause',_0x1a57('0x109'),'lastPauseAt']})[_0x1a57('0x14')](handleEntityNotFound(_0x3dc0db,null))[_0x1a57('0x14')](function(_0x3f74e5){if(_0x3f74e5){_0x43a797=_0x3f74e5;if(_0x5d3258['body'][_0x1a57('0xaa')]&&!utils[_0x1a57('0x9a')](_0x5d3258[_0x1a57('0x59')]['channel'])){throw new db['Sequelize'][(_0x1a57('0x8b'))](_0x1a57('0x9b'));}switch(_0x5d3258[_0x1a57('0x59')][_0x1a57('0xaa')]){case _0x1a57('0xa3'):return respondWithRpcPromise(_0x1a57('0x10a'),_0x1a57('0x104'),{'id':_0x43a797['id'],'name':_0x43a797[_0x1a57('0x32')],'pause':![]})[_0x1a57('0x14')](function(){return db[_0x1a57('0xa7')]['update']({'paused':0x0},{'where':{'UserId':_0x43a797['id']},'individualHooks':!![]});})[_0x1a57('0x14')](function(){return db['MemberReport']['find']({'where':{'channel':_0x5d3258[_0x1a57('0x59')][_0x1a57('0xaa')],'membername':_0x43a797[_0x1a57('0x32')],'type':'PAUSE','exitAt':null}});})[_0x1a57('0x14')](function(_0x501b7a){if(_0x501b7a){return _0x501b7a[_0x1a57('0x58')]({'exitAt':moment()[_0x1a57('0xed')](_0x1a57('0xf8')),'data2':'manual'},{'individualHooks':!![]});}return null;})[_0x1a57('0x14')](function(){return _0x43a797[_0x1a57('0x58')]({'voicePause':![]});});case _0x1a57('0x49'):case _0x1a57('0x56'):case'fax':case _0x1a57('0x47'):case _0x1a57('0x4a'):case _0x1a57('0x57'):return db[_0x1a57('0xf6')][_0x1a57('0x31')]({'where':{'channel':_0x5d3258['body'][_0x1a57('0xaa')],'membername':_0x43a797[_0x1a57('0x32')],'type':'PAUSE','exitAt':null}})[_0x1a57('0x14')](function(_0x4c9aaf){if(_0x4c9aaf){return _0x4c9aaf[_0x1a57('0x58')]({'exitAt':moment()['format']('YYYY-MM-DD\x20HH:mm:ss'),'data2':_0x1a57('0x10b')},{'individualHooks':!![]});}return null;})['then'](function(){var _0x226ba9={};_[_0x1a57('0x10c')](_0x226ba9,util[_0x1a57('0xed')](_0x1a57('0x10d'),_0x5d3258[_0x1a57('0x59')][_0x1a57('0xaa')],_0x1a57('0x10e')),![]);return _0x43a797[_0x1a57('0x58')](_0x226ba9);});default:return respondWithRpcPromise(_0x1a57('0x10a'),'unpause',{'id':_0x43a797['id'],'name':_0x43a797[_0x1a57('0x32')],'pause':![]})[_0x1a57('0x14')](function(){return db[_0x1a57('0xa7')][_0x1a57('0x58')]({'paused':0x0},{'where':{'UserId':_0x43a797['id']}});})[_0x1a57('0x14')](function(){return db[_0x1a57('0xf6')][_0x1a57('0x41')]({'where':{'membername':_0x43a797[_0x1a57('0x32')],'type':'PAUSE','exitAt':null}});})[_0x1a57('0x14')](function(_0x11b304){var _0x883c07=[];_0x11b304[_0x1a57('0xf7')](function(_0x14b71f){_0x883c07[_0x1a57('0x40')](_0x14b71f[_0x1a57('0x58')]({'exitAt':moment()[_0x1a57('0xed')]('YYYY-MM-DD\x20HH:mm:ss'),'data2':_0x1a57('0x10b')}));});return BPromise[_0x1a57('0x4b')](_0x883c07);})['then'](function(){return _0x43a797['update']({'voicePause':![],'mailPause':![],'chatPause':![],'faxPause':![],'smsPause':![],'whatsappPause':![],'openchannelPause':![]});});}}})[_0x1a57('0x14')](respondWithResult(_0x3dc0db,null))[_0x1a57('0x4c')](handleError(_0x3dc0db,null));};exports[_0x1a57('0x10f')]=function(_0x580727,_0x5d6fc1){var _0x355b7f={};var _0x16f7fb={};var _0x4ec722;var _0x2946fa;return db[_0x1a57('0x3d')]['findOne']({'where':{'id':_0x580727['params']['id']}})[_0x1a57('0x14')](handleEntityNotFound(_0x5d6fc1,null))['then'](function(_0x4db2e8){if(_0x4db2e8){_0x4ec722=_0x4db2e8;_0x16f7fb[_0x1a57('0x4f')]=_[_0x1a57('0x51')](db[_0x1a57('0x110')][_0x1a57('0x52')]);_0x16f7fb[_0x1a57('0x43')]=_['keys'](_0x580727[_0x1a57('0x43')]);_0x16f7fb[_0x1a57('0xc6')]=_[_0x1a57('0x54')](_0x16f7fb['model'],_0x16f7fb[_0x1a57('0x43')]);_0x355b7f['attributes']=_['intersection'](_0x16f7fb[_0x1a57('0x4f')],qs[_0x1a57('0x55')](_0x580727[_0x1a57('0x43')][_0x1a57('0x55')]));_0x355b7f['attributes']=_0x355b7f[_0x1a57('0x3f')][_0x1a57('0x45')]?_0x355b7f['attributes']:_0x16f7fb['model'];_0x355b7f[_0x1a57('0xc7')]=qs['sort'](_0x580727[_0x1a57('0x43')][_0x1a57('0xc8')]);_0x355b7f[_0x1a57('0xca')]=qs['filters'](_[_0x1a57('0xc9')](_0x580727[_0x1a57('0x43')],_0x16f7fb[_0x1a57('0xc6')]));if(_0x580727['query'][_0x1a57('0x2e')]){_0x355b7f[_0x1a57('0xca')]=_['merge'](_0x355b7f[_0x1a57('0xca')],{'$or':_['map'](_0x355b7f[_0x1a57('0x3f')],function(_0x34c45c){var _0x1976e5={};_0x1976e5[_0x34c45c]={'$like':'%'+_0x580727[_0x1a57('0x43')][_0x1a57('0x2e')]+'%'};return _0x1976e5;})});}_0x355b7f=_[_0x1a57('0xcb')]({},_0x355b7f,_0x580727[_0x1a57('0xcc')]);return _0x4ec722['getTeams'](_0x355b7f);}})[_0x1a57('0x14')](function(_0x5b244d){if(_0x5b244d){_0x2946fa=_0x5b244d[_0x1a57('0x45')];if(!_0x580727[_0x1a57('0x43')][_0x1a57('0xd4')](_0x1a57('0xd5'))){_0x355b7f[_0x1a57('0x23')]=qs['limit'](_0x580727[_0x1a57('0x43')][_0x1a57('0x23')]);_0x355b7f['offset']=qs['offset'](_0x580727[_0x1a57('0x43')]['offset']);}return _0x4ec722[_0x1a57('0x10f')](_0x355b7f);}})['then'](function(_0x10364e){if(_0x10364e){return _0x10364e?{'count':_0x2946fa,'rows':_0x10364e}:null;}})[_0x1a57('0x14')](respondWithResult(_0x5d6fc1,null))['catch'](handleError(_0x5d6fc1,null));};exports[_0x1a57('0x111')]=function(_0x15eb37,_0x149304){return db[_0x1a57('0x3d')][_0x1a57('0x31')]({'where':{'id':_0x15eb37[_0x1a57('0x4e')]['id']}})[_0x1a57('0x14')](handleEntityNotFound(_0x149304,null))[_0x1a57('0x14')](function(_0x4bc3e6){if(_0x4bc3e6){var _0x600a23=_0x4bc3e6[_0x1a57('0x26')]({'plain':!![]});return _0x4bc3e6[_0x1a57('0x111')](_0x15eb37['body'][_0x1a57('0x5b')],_[_0x1a57('0x112')](_0x15eb37['body'],[_0x1a57('0x5b'),'id'])||{})[_0x1a57('0x14')](function(){for(var _0x17d02d=0x0;_0x17d02d<_0x15eb37[_0x1a57('0x59')][_0x1a57('0x5b')][_0x1a57('0x45')];_0x17d02d++){var _0x38a4c4=[];db[_0x1a57('0x110')][_0x1a57('0x91')]({'where':{'id':_0x15eb37[_0x1a57('0x59')]['ids'][_0x17d02d]}})['then'](function(_0x17de99){_0x38a4c4['push'](_0x17de99[_0x1a57('0xf5')]()[_0x1a57('0x14')](function(_0x90bb16){for(var _0x5a0d64=0x0;_0x5a0d64<_0x90bb16['length'];_0x5a0d64++){_0x90bb16[_0x5a0d64][_0x1a57('0x113')](_0x1a57('0xaa'),_0x1a57('0x114'));}return _0x90bb16;}));_0x38a4c4[_0x1a57('0x40')](_0x17de99[_0x1a57('0x115')]()['then'](function(_0x69f7ce){for(var _0x3c5184=0x0;_0x3c5184<_0x69f7ce['length'];_0x3c5184++){_0x69f7ce[_0x3c5184][_0x1a57('0x113')](_0x1a57('0xaa'),_0x1a57('0x116'));}return _0x69f7ce;}));_0x38a4c4[_0x1a57('0x40')](_0x17de99[_0x1a57('0x117')]()[_0x1a57('0x14')](function(_0x1d8607){for(var _0x1664a1=0x0;_0x1664a1<_0x1d8607[_0x1a57('0x45')];_0x1664a1++){_0x1d8607[_0x1664a1]['setDataValue'](_0x1a57('0xaa'),_0x1a57('0x118'));}return _0x1d8607;}));_0x38a4c4[_0x1a57('0x40')](_0x17de99['getSmsQueues']()[_0x1a57('0x14')](function(_0x3262c4){for(var _0x3f3acd=0x0;_0x3f3acd<_0x3262c4[_0x1a57('0x45')];_0x3f3acd++){_0x3262c4[_0x3f3acd]['setDataValue'](_0x1a57('0xaa'),_0x1a57('0x119'));}return _0x3262c4;}));_0x38a4c4[_0x1a57('0x40')](_0x17de99[_0x1a57('0x11a')]()[_0x1a57('0x14')](function(_0x3715d1){for(var _0x2e92fe=0x0;_0x2e92fe<_0x3715d1[_0x1a57('0x45')];_0x2e92fe++){_0x3715d1[_0x2e92fe][_0x1a57('0x113')](_0x1a57('0xaa'),_0x1a57('0x11b'));}return _0x3715d1;}));_0x38a4c4[_0x1a57('0x40')](_0x17de99[_0x1a57('0x11c')]()[_0x1a57('0x14')](function(_0x4ed82){for(var _0x303ad8=0x0;_0x303ad8<_0x4ed82['length'];_0x303ad8++){_0x4ed82[_0x303ad8][_0x1a57('0x113')](_0x1a57('0xaa'),'Fax');}return _0x4ed82;}));_0x38a4c4[_0x1a57('0x40')](_0x17de99[_0x1a57('0x11d')]()['then'](function(_0x95a369){for(var _0x2351f4=0x0;_0x2351f4<_0x95a369[_0x1a57('0x45')];_0x2351f4++){_0x95a369[_0x2351f4][_0x1a57('0x113')]('channel',_0x1a57('0x11e'));}return _0x95a369;}));return BPromise[_0x1a57('0x4b')](_0x38a4c4);})[_0x1a57('0x14')](function(_0x470700){var _0xca5628=_[_0x1a57('0x11f')](_0x470700);_0x38a4c4=[];return db[_0x1a57('0x63')][_0x1a57('0x120')](function(_0x591579){for(var _0x54ff4e=0x0;_0x54ff4e<_0xca5628[_0x1a57('0x45')];_0x54ff4e++){_0x38a4c4['push'](_0xca5628[_0x54ff4e][_0x1a57('0x121')](_0x600a23['id']),{'transaction':_0x591579});}return BPromise[_0x1a57('0x4b')](_0x38a4c4)[_0x1a57('0x14')](function(){if(_0x600a23['online']){return BPromise['each'](_[_0x1a57('0x2e')](_0xca5628,function(_0x2a3423){return _0x2a3423[_0x1a57('0x122')](_0x1a57('0xaa'))===_0x1a57('0x114');}),function(_0x550ddf){return db[_0x1a57('0xa7')][_0x1a57('0xa8')]({'membername':_0x600a23[_0x1a57('0x32')],'UserId':_0x600a23['id'],'queue_name':_0x550ddf['name'],'VoiceQueueId':_0x550ddf['id'],'interface':_['isNil'](_0x600a23['interface'])?util[_0x1a57('0xed')](_0x1a57('0xa6'),_0x600a23['name']):_0x600a23[_0x1a57('0x99')],'paused':_0x600a23[_0x1a57('0x98')]||![],'penalty':_0x600a23[_0x1a57('0x9e')]},{'transaction':_0x591579});});}else{return;}})['then'](function(){for(var _0x969913=0x0;_0x969913<_0xca5628[_0x1a57('0x45')];_0x969913++){var _0x2343d5=_0xca5628[_0x969913][_0x1a57('0x122')](_0x1a57('0xaa'));var _0x3e7f86=_0x2343d5+_0x1a57('0xa0');socket['emit'](_0x1a57('0x29')+_0x2343d5+_0x1a57('0xa2'),{'UserId':_0x600a23['id'],['queueField']:_0xca5628[_0x969913]['id']});}});});});}});}})[_0x1a57('0x14')](respondWithStatusCode(_0x149304,null))[_0x1a57('0x4c')](handleError(_0x149304,null));};exports[_0x1a57('0x123')]=function(_0x1e0025,_0x2f536b){return db[_0x1a57('0x3d')][_0x1a57('0x91')]({'where':{'id':_0x1e0025['params']['id']}})[_0x1a57('0x14')](handleEntityNotFound(_0x2f536b,null))[_0x1a57('0x14')](function(_0x309816){if(_0x309816){var _0x8a89d8=_0x309816['get']({'plain':!![]});var _0x548f7c=_0x1e0025[_0x1a57('0x43')][_0x1a57('0x5b')];return _0x309816[_0x1a57('0x123')](_0x548f7c)['then'](function(){for(var _0x522db1=0x0;_0x522db1<_0x548f7c[_0x1a57('0x45')];_0x522db1++){var _0x41d56b=[];db[_0x1a57('0x110')][_0x1a57('0x91')]({'where':{'id':_0x548f7c[_0x522db1]}})['then'](function(_0x4297bf){_0x41d56b[_0x1a57('0x40')](_0x4297bf[_0x1a57('0xf5')]()[_0x1a57('0x14')](function(_0x387345){for(var _0x444c9d=0x0;_0x444c9d<_0x387345[_0x1a57('0x45')];_0x444c9d++){_0x387345[_0x444c9d]['setDataValue']('channel',_0x1a57('0x114'));}return _0x387345;}));_0x41d56b[_0x1a57('0x40')](_0x4297bf[_0x1a57('0x115')]()[_0x1a57('0x14')](function(_0x3067aa){for(var _0xa80b2d=0x0;_0xa80b2d<_0x3067aa[_0x1a57('0x45')];_0xa80b2d++){_0x3067aa[_0xa80b2d][_0x1a57('0x113')](_0x1a57('0xaa'),_0x1a57('0x116'));}return _0x3067aa;}));_0x41d56b[_0x1a57('0x40')](_0x4297bf[_0x1a57('0x117')]()[_0x1a57('0x14')](function(_0x178f44){for(var _0x3eeb0c=0x0;_0x3eeb0c<_0x178f44[_0x1a57('0x45')];_0x3eeb0c++){_0x178f44[_0x3eeb0c][_0x1a57('0x113')](_0x1a57('0xaa'),'Mail');}return _0x178f44;}));_0x41d56b['push'](_0x4297bf[_0x1a57('0x124')]()[_0x1a57('0x14')](function(_0x2cce2c){for(var _0x4cd22b=0x0;_0x4cd22b<_0x2cce2c[_0x1a57('0x45')];_0x4cd22b++){_0x2cce2c[_0x4cd22b][_0x1a57('0x113')](_0x1a57('0xaa'),'Sms');}return _0x2cce2c;}));_0x41d56b[_0x1a57('0x40')](_0x4297bf[_0x1a57('0x11a')]()[_0x1a57('0x14')](function(_0x427565){for(var _0x257c87=0x0;_0x257c87<_0x427565[_0x1a57('0x45')];_0x257c87++){_0x427565[_0x257c87][_0x1a57('0x113')]('channel','Whatsapp');}return _0x427565;}));_0x41d56b[_0x1a57('0x40')](_0x4297bf[_0x1a57('0x11c')]()[_0x1a57('0x14')](function(_0x5de81d){for(var _0x671ca8=0x0;_0x671ca8<_0x5de81d['length'];_0x671ca8++){_0x5de81d[_0x671ca8]['setDataValue']('channel',_0x1a57('0x125'));}return _0x5de81d;}));_0x41d56b['push'](_0x4297bf[_0x1a57('0x11d')]()[_0x1a57('0x14')](function(_0x22244c){for(var _0x4867ba=0x0;_0x4867ba<_0x22244c['length'];_0x4867ba++){_0x22244c[_0x4867ba]['setDataValue'](_0x1a57('0xaa'),_0x1a57('0x11e'));}return _0x22244c;}));return BPromise['all'](_0x41d56b);})[_0x1a57('0x14')](function(_0x21dfa8){var _0x42a6de=_['flatten'](_0x21dfa8);_0x41d56b=[];return db[_0x1a57('0x63')]['transaction'](function(_0x322201){for(var _0x254927=0x0;_0x254927<_0x42a6de['length'];_0x254927++){_0x41d56b[_0x1a57('0x40')](_0x42a6de[_0x254927]['removeAgent'](_0x8a89d8['id']),{'transaction':_0x322201});}return BPromise[_0x1a57('0x4b')](_0x41d56b)[_0x1a57('0x14')](function(){if(_0x8a89d8[_0x1a57('0xa5')]){return BPromise[_0x1a57('0x83')](_[_0x1a57('0x2e')](_0x42a6de,function(_0x10975f){return _0x10975f[_0x1a57('0x122')](_0x1a57('0xaa'))===_0x1a57('0x114');}),function(_0x56ebac){return db['UserVoiceQueueRt']['destroy']({'where':{'VoiceQueueId':_0x56ebac['id'],'UserId':_0x8a89d8['id']},'transaction':_0x322201});});}else{return;}})['then'](function(){for(var _0x8f9aee=0x0;_0x8f9aee<_0x42a6de['length'];_0x8f9aee++){var _0xcf76a0=_0x42a6de[_0x8f9aee][_0x1a57('0x122')]('channel');var _0x4bc528=_0xcf76a0+_0x1a57('0xa0');socket[_0x1a57('0xa1')](_0x1a57('0x29')+_0xcf76a0+_0x1a57('0xae'),{'UserId':_0x8a89d8['id'],['queueField']:_0x42a6de[_0x8f9aee]['id']});}});});});}});}})[_0x1a57('0x14')](respondWithStatusCode(_0x2f536b,null))['catch'](handleError(_0x2f536b,null));};exports[_0x1a57('0x126')]=function(_0x2784a8,_0x3aae10){var _0x3ea61e={};var _0x489b67={};var _0x143def;var _0x2fb4ba;return db['User'][_0x1a57('0x91')]({'where':{'id':_0x2784a8[_0x1a57('0x4e')]['id']}})[_0x1a57('0x14')](handleEntityNotFound(_0x3aae10,null))[_0x1a57('0x14')](function(_0xcf07f0){if(_0xcf07f0){_0x143def=_0xcf07f0;_0x489b67[_0x1a57('0x4f')]=_['keys'](db['CmList']['rawAttributes']);_0x489b67['query']=_[_0x1a57('0x51')](_0x2784a8[_0x1a57('0x43')]);_0x489b67[_0x1a57('0xc6')]=_[_0x1a57('0x54')](_0x489b67[_0x1a57('0x4f')],_0x489b67['query']);_0x3ea61e[_0x1a57('0x3f')]=_[_0x1a57('0x54')](_0x489b67[_0x1a57('0x4f')],qs[_0x1a57('0x55')](_0x2784a8[_0x1a57('0x43')][_0x1a57('0x55')]));_0x3ea61e[_0x1a57('0x3f')]=_0x3ea61e[_0x1a57('0x3f')][_0x1a57('0x45')]?_0x3ea61e[_0x1a57('0x3f')]:_0x489b67[_0x1a57('0x4f')];_0x3ea61e[_0x1a57('0xc7')]=qs['sort'](_0x2784a8[_0x1a57('0x43')][_0x1a57('0xc8')]);_0x3ea61e['where']=qs[_0x1a57('0xc6')](_[_0x1a57('0xc9')](_0x2784a8[_0x1a57('0x43')],_0x489b67[_0x1a57('0xc6')]));if(_0x2784a8[_0x1a57('0x43')]['filter']){_0x3ea61e[_0x1a57('0xca')]=_[_0x1a57('0xcb')](_0x3ea61e['where'],{'$or':_['map'](_0x3ea61e[_0x1a57('0x3f')],function(_0x2e420d){var _0x5ac567={};_0x5ac567[_0x2e420d]={'$like':'%'+_0x2784a8[_0x1a57('0x43')][_0x1a57('0x2e')]+'%'};return _0x5ac567;})});}_0x3ea61e=_['merge']({},_0x3ea61e,_0x2784a8[_0x1a57('0xcc')]);return _0x143def[_0x1a57('0x126')](_0x3ea61e);}})[_0x1a57('0x14')](function(_0x1a4428){if(_0x1a4428){_0x2fb4ba=_0x1a4428[_0x1a57('0x45')];if(!_0x2784a8[_0x1a57('0x43')][_0x1a57('0xd4')]('nolimit')){_0x3ea61e[_0x1a57('0x23')]=qs['limit'](_0x2784a8['query'][_0x1a57('0x23')]);_0x3ea61e[_0x1a57('0x21')]=qs[_0x1a57('0x21')](_0x2784a8[_0x1a57('0x43')][_0x1a57('0x21')]);}return _0x143def[_0x1a57('0x126')](_0x3ea61e);}})[_0x1a57('0x14')](function(_0xc0527a){if(_0xc0527a){return _0xc0527a?{'count':_0x2fb4ba,'rows':_0xc0527a}:null;}})[_0x1a57('0x14')](respondWithResult(_0x3aae10,null))[_0x1a57('0x4c')](handleError(_0x3aae10,null));};exports[_0x1a57('0x127')]=function(_0x3d4ba4,_0x5756c3){var _0x599ce9={};var _0x7dab4d={};var _0x1b2858;var _0x5ae492;return db[_0x1a57('0x3d')]['findOne']({'where':{'id':_0x3d4ba4['params']['id']}})['then'](handleEntityNotFound(_0x5756c3,null))[_0x1a57('0x14')](function(_0x2690f3){if(_0x2690f3){_0x1b2858=_0x2690f3;_0x7dab4d[_0x1a57('0x4f')]=_[_0x1a57('0x51')](db[_0x1a57('0x3d')][_0x1a57('0x52')]);_0x7dab4d[_0x1a57('0x43')]=_[_0x1a57('0x51')](_0x3d4ba4[_0x1a57('0x43')]);_0x7dab4d[_0x1a57('0xc6')]=_['intersection'](_0x7dab4d[_0x1a57('0x4f')],_0x7dab4d[_0x1a57('0x43')]);_0x599ce9[_0x1a57('0x3f')]=_[_0x1a57('0x54')](_0x7dab4d[_0x1a57('0x4f')],qs[_0x1a57('0x55')](_0x3d4ba4[_0x1a57('0x43')][_0x1a57('0x55')]));_0x599ce9[_0x1a57('0x3f')]=_0x599ce9['attributes'][_0x1a57('0x45')]?_0x599ce9[_0x1a57('0x3f')]:_0x7dab4d[_0x1a57('0x4f')];_0x599ce9[_0x1a57('0xc7')]=qs['sort'](_0x3d4ba4[_0x1a57('0x43')][_0x1a57('0xc8')]);_0x599ce9[_0x1a57('0xca')]=qs[_0x1a57('0xc6')](_[_0x1a57('0xc9')](_0x3d4ba4[_0x1a57('0x43')],_0x7dab4d[_0x1a57('0xc6')]));if(_0x3d4ba4['query'][_0x1a57('0x2e')]){_0x599ce9[_0x1a57('0xca')]=_['merge'](_0x599ce9['where'],{'$or':_['map'](_0x599ce9['attributes'],function(_0x151db8){var _0x1520f1={};_0x1520f1[_0x151db8]={'$like':'%'+_0x3d4ba4[_0x1a57('0x43')][_0x1a57('0x2e')]+'%'};return _0x1520f1;})});}_0x599ce9[_0x1a57('0x4f')]=db[_0x1a57('0x3d')];_0x599ce9['as']=_0x1a57('0x2a');_0x599ce9=_[_0x1a57('0xcb')]({},_0x599ce9,_0x3d4ba4[_0x1a57('0xcc')]);return _0x1b2858[_0x1a57('0xf5')]({'include':[_0x599ce9]});}})['then'](function(_0x2574cd){if(_0x2574cd){var _0x11f5c9={},_0xf06a7d=[],_0xfa9268=0x0;for(var _0x12eeaa=0x0;_0x12eeaa<_0x2574cd['length'];_0x12eeaa+=0x1){for(var _0x297a3d=0x0,_0xc4422e;_0x297a3d<_0x2574cd[_0x12eeaa][_0x1a57('0x2a')][_0x1a57('0x45')];_0x297a3d+=0x1){_0xc4422e=_0x2574cd[_0x12eeaa][_0x1a57('0x2a')][_0x297a3d][_0x1a57('0x26')]({'plain':!![]});_0x11f5c9[_0xc4422e['id']]=_0xc4422e;}}_0x11f5c9=_[_0x1a57('0x128')](_0x11f5c9);for(var _0x3b5d8f=qs['offset'](_0x3d4ba4['query']['offset']);_0x3b5d8f<_0x11f5c9['length']&&_0xf06a7d[_0x1a57('0x45')]<qs[_0x1a57('0x23')](_0x3d4ba4['query'][_0x1a57('0x23')]);_0x3b5d8f+=0x1){if(_0x11f5c9[_0x3b5d8f]){_0xf06a7d[_0x1a57('0x40')](_0x11f5c9[_0x3b5d8f]);}}return{'count':_0x11f5c9['length'],'rows':_0xf06a7d};}})[_0x1a57('0x14')](respondWithResult(_0x5756c3,null))[_0x1a57('0x4c')](handleError(_0x5756c3,null));};exports[_0x1a57('0x34')]=function(_0x266d5e,_0x2841c1){if(_0x266d5e['user']['id']==_0x266d5e[_0x1a57('0x4e')]['id']){return _0x2841c1[_0x1a57('0x1e')](0x1f4)[_0x1a57('0x36')]({'message':'You\x20can\x27t\x20delete\x20yourself'});}return db[_0x1a57('0x3d')][_0x1a57('0x31')]({'where':{'id':_0x266d5e[_0x1a57('0x4e')]['id']}})[_0x1a57('0x14')](handleEntityNotFound(_0x2841c1,null))[_0x1a57('0x14')](removeEntity(_0x2841c1,null))['catch'](handleError(_0x2841c1,null));};exports[_0x1a57('0x129')]=function(_0xc8ab47,_0x2a79a6){return db[_0x1a57('0x3d')]['find']({'where':{'id':_0xc8ab47[_0x1a57('0x4e')]['id']}})[_0x1a57('0x14')](handleEntityNotFound(_0x2a79a6,null))['then'](function(_0x1c57df){if(_0x1c57df){return _0x1c57df[_0x1a57('0x129')](_0xc8ab47[_0x1a57('0x59')][_0x1a57('0x5b')],_[_0x1a57('0x112')](_0xc8ab47[_0x1a57('0x59')],[_0x1a57('0x5b'),'id'])||{})[_0x1a57('0x12a')](function(){for(var _0x726999=0x0;_0x726999<_0xc8ab47[_0x1a57('0x59')]['ids'][_0x1a57('0x45')];_0x726999+=0x1){socket[_0x1a57('0xa1')]('user_has_chat_interactions:save',{'ChatInteractionId':Number(_0xc8ab47['body'][_0x1a57('0x5b')][_0x726999]),'UserId':Number(_0xc8ab47['params']['id'])});}return _0xc8ab47[_0x1a57('0x59')][_0x1a57('0x5b')];});}})[_0x1a57('0x14')](respondWithResult(_0x2a79a6,null))[_0x1a57('0x4c')](handleError(_0x2a79a6,null));};exports['removeChatInteractions']=function(_0x330607,_0x2d3a43){return db['User'][_0x1a57('0x31')]({'where':{'id':_0x330607['params']['id']}})[_0x1a57('0x14')](handleEntityNotFound(_0x2d3a43,null))[_0x1a57('0x14')](function(_0x1f4de7){if(_0x1f4de7){return _0x1f4de7[_0x1a57('0x12b')](_0x330607['query']['ids'])['then'](function(){if(_[_0x1a57('0xad')](_0x330607[_0x1a57('0x43')][_0x1a57('0x5b')])){for(var _0x7c5987=0x0;_0x7c5987<_0x330607[_0x1a57('0x43')][_0x1a57('0x5b')][_0x1a57('0x45')];_0x7c5987+=0x1){socket['emit'](_0x1a57('0x12c'),{'ChatInteractionId':Number(_0x330607[_0x1a57('0x43')][_0x1a57('0x5b')][_0x7c5987]),'UserId':Number(_0x330607[_0x1a57('0x4e')]['id'])});}}else{socket[_0x1a57('0xa1')](_0x1a57('0x12c'),{'ChatInteractionId':Number(_0x330607['query'][_0x1a57('0x5b')]),'UserId':Number(_0x330607[_0x1a57('0x4e')]['id'])});}});}})['then'](respondWithStatusCode(_0x2d3a43,null))[_0x1a57('0x4c')](handleError(_0x2d3a43,null));};exports[_0x1a57('0x12d')]=function(_0x4e5ca3,_0xa0ec19){return db[_0x1a57('0x3d')][_0x1a57('0x31')]({'where':{'id':_0x4e5ca3[_0x1a57('0x4e')]['id']}})['then'](handleEntityNotFound(_0xa0ec19,null))['then'](function(_0x83ded){if(_0x83ded){return _0x83ded[_0x1a57('0x12d')](_0x4e5ca3['body'][_0x1a57('0x5b')],_[_0x1a57('0x112')](_0x4e5ca3[_0x1a57('0x59')],['ids','id'])||{})['spread'](function(){for(var _0x184c02=0x0;_0x184c02<_0x4e5ca3[_0x1a57('0x59')][_0x1a57('0x5b')][_0x1a57('0x45')];_0x184c02+=0x1){socket[_0x1a57('0xa1')](_0x1a57('0x12e'),{'MailInteractionId':Number(_0x4e5ca3[_0x1a57('0x59')]['ids'][_0x184c02]),'UserId':Number(_0x4e5ca3['params']['id'])});}return _0x4e5ca3[_0x1a57('0x59')][_0x1a57('0x5b')];});}})[_0x1a57('0x14')](respondWithResult(_0xa0ec19,null))[_0x1a57('0x4c')](handleError(_0xa0ec19,null));};exports['removeMailInteractions']=function(_0x5149cc,_0x38a27b){return db[_0x1a57('0x3d')]['find']({'where':{'id':_0x5149cc[_0x1a57('0x4e')]['id']}})[_0x1a57('0x14')](handleEntityNotFound(_0x38a27b,null))[_0x1a57('0x14')](function(_0x209f02){if(_0x209f02){return _0x209f02['removeMailInteractions'](_0x5149cc[_0x1a57('0x43')][_0x1a57('0x5b')])[_0x1a57('0x14')](function(){if(_['isArray'](_0x5149cc[_0x1a57('0x43')][_0x1a57('0x5b')])){for(var _0x315ad5=0x0;_0x315ad5<_0x5149cc[_0x1a57('0x43')]['ids']['length'];_0x315ad5+=0x1){socket[_0x1a57('0xa1')]('user_has_mail_interactions:remove',{'MailInteractionId':Number(_0x5149cc[_0x1a57('0x43')][_0x1a57('0x5b')][_0x315ad5]),'UserId':Number(_0x5149cc[_0x1a57('0x4e')]['id'])});}}else{socket[_0x1a57('0xa1')](_0x1a57('0x12f'),{'MailInteractionId':Number(_0x5149cc['query']['ids']),'UserId':Number(_0x5149cc[_0x1a57('0x4e')]['id'])});}});}})['then'](respondWithStatusCode(_0x38a27b,null))[_0x1a57('0x4c')](handleError(_0x38a27b,null));};exports['addFaxInteractions']=function(_0x9ad4c9,_0x4b3f66){return db[_0x1a57('0x3d')]['find']({'where':{'id':_0x9ad4c9[_0x1a57('0x4e')]['id']}})[_0x1a57('0x14')](handleEntityNotFound(_0x4b3f66,null))[_0x1a57('0x14')](function(_0x35932f){if(_0x35932f){return _0x35932f[_0x1a57('0x130')](_0x9ad4c9[_0x1a57('0x59')][_0x1a57('0x5b')],_[_0x1a57('0x112')](_0x9ad4c9[_0x1a57('0x59')],[_0x1a57('0x5b'),'id'])||{})[_0x1a57('0x12a')](function(){for(var _0x6a0323=0x0;_0x6a0323<_0x9ad4c9[_0x1a57('0x59')][_0x1a57('0x5b')][_0x1a57('0x45')];_0x6a0323+=0x1){socket[_0x1a57('0xa1')](_0x1a57('0x131'),{'FaxInteractionId':Number(_0x9ad4c9['body']['ids'][_0x6a0323]),'UserId':Number(_0x9ad4c9[_0x1a57('0x4e')]['id'])});}return _0x9ad4c9['body'][_0x1a57('0x5b')];});}})['then'](respondWithResult(_0x4b3f66,null))[_0x1a57('0x4c')](handleError(_0x4b3f66,null));};exports[_0x1a57('0x132')]=function(_0x4cf652,_0x39155b){return db[_0x1a57('0x3d')][_0x1a57('0x31')]({'where':{'id':_0x4cf652['params']['id']}})[_0x1a57('0x14')](handleEntityNotFound(_0x39155b,null))[_0x1a57('0x14')](function(_0x55bc72){if(_0x55bc72){return _0x55bc72[_0x1a57('0x132')](_0x4cf652['query']['ids'])['then'](function(){if(_['isArray'](_0x4cf652['query'][_0x1a57('0x5b')])){for(var _0x42f5b9=0x0;_0x42f5b9<_0x4cf652['query'][_0x1a57('0x5b')][_0x1a57('0x45')];_0x42f5b9+=0x1){socket[_0x1a57('0xa1')](_0x1a57('0x133'),{'FaxInteractionId':Number(_0x4cf652[_0x1a57('0x43')][_0x1a57('0x5b')][_0x42f5b9]),'UserId':Number(_0x4cf652[_0x1a57('0x4e')]['id'])});}}else{socket[_0x1a57('0xa1')](_0x1a57('0x133'),{'FaxInteractionId':Number(_0x4cf652['query'][_0x1a57('0x5b')]),'UserId':Number(_0x4cf652[_0x1a57('0x4e')]['id'])});}});}})[_0x1a57('0x14')](respondWithStatusCode(_0x39155b,null))[_0x1a57('0x4c')](handleError(_0x39155b,null));};exports[_0x1a57('0x134')]=function(_0x391ee6,_0x192f70){return db[_0x1a57('0x3d')][_0x1a57('0x31')]({'where':{'id':_0x391ee6[_0x1a57('0x4e')]['id']}})['then'](handleEntityNotFound(_0x192f70,null))['then'](function(_0x2f7b32){if(_0x2f7b32){return _0x2f7b32[_0x1a57('0x134')](_0x391ee6[_0x1a57('0x59')]['ids'],_[_0x1a57('0x112')](_0x391ee6[_0x1a57('0x59')],['ids','id'])||{})[_0x1a57('0x12a')](function(){for(var _0x44925d=0x0;_0x44925d<_0x391ee6[_0x1a57('0x59')][_0x1a57('0x5b')]['length'];_0x44925d+=0x1){socket[_0x1a57('0xa1')](_0x1a57('0x135'),{'SmsInteractionId':Number(_0x391ee6[_0x1a57('0x59')][_0x1a57('0x5b')][_0x44925d]),'UserId':Number(_0x391ee6[_0x1a57('0x4e')]['id'])});}return _0x391ee6[_0x1a57('0x59')]['ids'];});}})[_0x1a57('0x14')](respondWithResult(_0x192f70,null))[_0x1a57('0x4c')](handleError(_0x192f70,null));};exports[_0x1a57('0x136')]=function(_0x3d7135,_0x3e5544){return db[_0x1a57('0x3d')][_0x1a57('0x31')]({'where':{'id':_0x3d7135[_0x1a57('0x4e')]['id']}})[_0x1a57('0x14')](handleEntityNotFound(_0x3e5544,null))[_0x1a57('0x14')](function(_0x4b24c8){if(_0x4b24c8){return _0x4b24c8[_0x1a57('0x136')](_0x3d7135['query'][_0x1a57('0x5b')])[_0x1a57('0x14')](function(){if(_['isArray'](_0x3d7135[_0x1a57('0x43')]['ids'])){for(var _0x22ece1=0x0;_0x22ece1<_0x3d7135[_0x1a57('0x43')][_0x1a57('0x5b')][_0x1a57('0x45')];_0x22ece1+=0x1){socket[_0x1a57('0xa1')](_0x1a57('0x137'),{'SmsInteractionId':Number(_0x3d7135[_0x1a57('0x43')][_0x1a57('0x5b')][_0x22ece1]),'UserId':Number(_0x3d7135[_0x1a57('0x4e')]['id'])});}}else{socket[_0x1a57('0xa1')](_0x1a57('0x137'),{'SmsInteractionId':Number(_0x3d7135['query'][_0x1a57('0x5b')]),'UserId':Number(_0x3d7135[_0x1a57('0x4e')]['id'])});}});}})[_0x1a57('0x14')](respondWithStatusCode(_0x3e5544,null))[_0x1a57('0x4c')](handleError(_0x3e5544,null));};exports[_0x1a57('0x138')]=function(_0xfdb511,_0x4b65b3){return db[_0x1a57('0x3d')][_0x1a57('0x31')]({'where':{'id':_0xfdb511[_0x1a57('0x4e')]['id']}})[_0x1a57('0x14')](handleEntityNotFound(_0x4b65b3,null))['then'](function(_0x5409b7){if(_0x5409b7){return _0x5409b7[_0x1a57('0x138')](_0xfdb511[_0x1a57('0x59')][_0x1a57('0x5b')],_['omit'](_0xfdb511[_0x1a57('0x59')],[_0x1a57('0x5b'),'id'])||{})['spread'](function(){for(var _0x52c427=0x0;_0x52c427<_0xfdb511[_0x1a57('0x59')][_0x1a57('0x5b')][_0x1a57('0x45')];_0x52c427+=0x1){socket['emit']('user_has_openchannel_interactions:save',{'OpenchannelInteractionId':Number(_0xfdb511[_0x1a57('0x59')][_0x1a57('0x5b')][_0x52c427]),'UserId':Number(_0xfdb511[_0x1a57('0x4e')]['id'])});}return _0xfdb511[_0x1a57('0x59')]['ids'];});}})[_0x1a57('0x14')](respondWithResult(_0x4b65b3,null))['catch'](handleError(_0x4b65b3,null));};exports[_0x1a57('0x139')]=function(_0x400b5a,_0x2f782f){return db[_0x1a57('0x3d')][_0x1a57('0x31')]({'where':{'id':_0x400b5a[_0x1a57('0x4e')]['id']}})[_0x1a57('0x14')](handleEntityNotFound(_0x2f782f,null))[_0x1a57('0x14')](function(_0x1b6517){if(_0x1b6517){return _0x1b6517[_0x1a57('0x139')](_0x400b5a[_0x1a57('0x43')][_0x1a57('0x5b')])[_0x1a57('0x14')](function(){if(_[_0x1a57('0xad')](_0x400b5a[_0x1a57('0x43')][_0x1a57('0x5b')])){for(var _0x50c450=0x0;_0x50c450<_0x400b5a['query'][_0x1a57('0x5b')]['length'];_0x50c450+=0x1){socket['emit'](_0x1a57('0x13a'),{'OpenchannelInteractionId':Number(_0x400b5a[_0x1a57('0x43')][_0x1a57('0x5b')][_0x50c450]),'UserId':Number(_0x400b5a[_0x1a57('0x4e')]['id'])});}}else{socket[_0x1a57('0xa1')]('user_has_openchannel_interactions:remove',{'OpenchannelInteractionId':Number(_0x400b5a[_0x1a57('0x43')][_0x1a57('0x5b')]),'UserId':Number(_0x400b5a[_0x1a57('0x4e')]['id'])});}});}})[_0x1a57('0x14')](respondWithStatusCode(_0x2f782f,null))[_0x1a57('0x4c')](handleError(_0x2f782f,null));};exports['addWhatsappInteractions']=function(_0x109755,_0xa599f){return db['User'][_0x1a57('0x31')]({'where':{'id':_0x109755[_0x1a57('0x4e')]['id']}})[_0x1a57('0x14')](handleEntityNotFound(_0xa599f,null))[_0x1a57('0x14')](function(_0x1fafa8){if(_0x1fafa8){return _0x1fafa8[_0x1a57('0x13b')](_0x109755[_0x1a57('0x59')][_0x1a57('0x5b')],_['omit'](_0x109755[_0x1a57('0x59')],[_0x1a57('0x5b'),'id'])||{})[_0x1a57('0x12a')](function(){for(var _0x3415e9=0x0;_0x3415e9<_0x109755[_0x1a57('0x59')][_0x1a57('0x5b')]['length'];_0x3415e9+=0x1){socket[_0x1a57('0xa1')](_0x1a57('0x13c'),{'WhatsappInteractionId':Number(_0x109755[_0x1a57('0x59')][_0x1a57('0x5b')][_0x3415e9]),'UserId':Number(_0x109755['params']['id'])});}return _0x109755['body'][_0x1a57('0x5b')];});}})[_0x1a57('0x14')](respondWithResult(_0xa599f,null))[_0x1a57('0x4c')](handleError(_0xa599f,null));};exports[_0x1a57('0x13d')]=function(_0x3fe2d6,_0x2d4d46){return db[_0x1a57('0x3d')][_0x1a57('0x31')]({'where':{'id':_0x3fe2d6[_0x1a57('0x4e')]['id']}})[_0x1a57('0x14')](handleEntityNotFound(_0x2d4d46,null))[_0x1a57('0x14')](function(_0x26e55d){if(_0x26e55d){return _0x26e55d[_0x1a57('0x13d')](_0x3fe2d6[_0x1a57('0x43')]['ids']);}})['then'](respondWithStatusCode(_0x2d4d46,null))[_0x1a57('0x4c')](handleError(_0x2d4d46,null));};exports[_0x1a57('0x13e')]=function(_0x872cf5,_0x3c092e){var _0x42f824={};var _0x12acb0={};var _0x3730e0;var _0x530800;return db[_0x1a57('0x3d')][_0x1a57('0x91')]({'where':{'id':_0x872cf5['params']['id']}})['then'](handleEntityNotFound(_0x3c092e,null))['then'](function(_0x1d54c1){if(_0x1d54c1){_0x3730e0=_0x1d54c1;_0x12acb0[_0x1a57('0x4f')]=_[_0x1a57('0x51')](db[_0x1a57('0x13f')][_0x1a57('0x52')]);_0x12acb0[_0x1a57('0x43')]=_['keys'](_0x872cf5[_0x1a57('0x43')]);_0x12acb0[_0x1a57('0xc6')]=_['intersection'](_0x12acb0['model'],_0x12acb0[_0x1a57('0x43')]);_0x42f824[_0x1a57('0x3f')]=_[_0x1a57('0x54')](_0x12acb0[_0x1a57('0x4f')],qs['fields'](_0x872cf5[_0x1a57('0x43')][_0x1a57('0x55')]));_0x42f824[_0x1a57('0x3f')]=_0x42f824[_0x1a57('0x3f')][_0x1a57('0x45')]?_0x42f824['attributes']:_0x12acb0[_0x1a57('0x4f')];_0x42f824[_0x1a57('0xc7')]=qs[_0x1a57('0xc8')](_0x872cf5[_0x1a57('0x43')]['sort']);_0x42f824[_0x1a57('0xca')]=qs[_0x1a57('0xc6')](_[_0x1a57('0xc9')](_0x872cf5[_0x1a57('0x43')],_0x12acb0[_0x1a57('0xc6')]));if(_0x872cf5['query'][_0x1a57('0x2e')]){_0x42f824[_0x1a57('0xca')]=_[_0x1a57('0xcb')](_0x42f824[_0x1a57('0xca')],{'$or':_[_0x1a57('0x2f')](_0x42f824['attributes'],function(_0x3b9440){var _0x260aa5={};_0x260aa5[_0x3b9440]={'$like':'%'+_0x872cf5[_0x1a57('0x43')][_0x1a57('0x2e')]+'%'};return _0x260aa5;})});}_0x42f824=_[_0x1a57('0xcb')]({},_0x42f824,_0x872cf5[_0x1a57('0xcc')]);return _0x3730e0[_0x1a57('0x13e')](_0x42f824);}})[_0x1a57('0x14')](function(_0x28e225){if(_0x28e225){_0x530800=_0x28e225[_0x1a57('0x45')];if(!_0x872cf5[_0x1a57('0x43')]['hasOwnProperty'](_0x1a57('0xd5'))){_0x42f824[_0x1a57('0x23')]=qs[_0x1a57('0x23')](_0x872cf5[_0x1a57('0x43')]['limit']);_0x42f824['offset']=qs[_0x1a57('0x21')](_0x872cf5[_0x1a57('0x43')][_0x1a57('0x21')]);}return _0x3730e0[_0x1a57('0x13e')](_0x42f824);}})[_0x1a57('0x14')](function(_0x5722d0){if(_0x5722d0){return _0x5722d0?{'count':_0x530800,'rows':_0x5722d0}:null;}})['then'](respondWithResult(_0x3c092e,null))[_0x1a57('0x4c')](handleError(_0x3c092e,null));};exports[_0x1a57('0x140')]=function(_0x47f76b,_0x29a38c){var _0x23353c={};var _0x3569bc={};var _0x5681d9;var _0x4d8ddb;return db['User'][_0x1a57('0x91')]({'where':{'id':_0x47f76b[_0x1a57('0x4e')]['id']}})[_0x1a57('0x14')](handleEntityNotFound(_0x29a38c,null))['then'](function(_0x250e64){if(_0x250e64){_0x5681d9=_0x250e64;_0x3569bc[_0x1a57('0x4f')]=_[_0x1a57('0x51')](db[_0x1a57('0x141')][_0x1a57('0x52')]);_0x3569bc[_0x1a57('0x43')]=_[_0x1a57('0x51')](_0x47f76b[_0x1a57('0x43')]);_0x3569bc[_0x1a57('0xc6')]=_[_0x1a57('0x54')](_0x3569bc[_0x1a57('0x4f')],_0x3569bc[_0x1a57('0x43')]);_0x23353c['attributes']=_[_0x1a57('0x54')](_0x3569bc[_0x1a57('0x4f')],qs[_0x1a57('0x55')](_0x47f76b[_0x1a57('0x43')][_0x1a57('0x55')]));_0x23353c[_0x1a57('0x3f')]=_0x23353c[_0x1a57('0x3f')]['length']?_0x23353c[_0x1a57('0x3f')]:_0x3569bc[_0x1a57('0x4f')];_0x23353c['order']=qs[_0x1a57('0xc8')](_0x47f76b[_0x1a57('0x43')][_0x1a57('0xc8')]);_0x23353c[_0x1a57('0xca')]=qs['filters'](_[_0x1a57('0xc9')](_0x47f76b[_0x1a57('0x43')],_0x3569bc['filters']));if(_0x47f76b['query'][_0x1a57('0x2e')]){_0x23353c[_0x1a57('0xca')]=_[_0x1a57('0xcb')](_0x23353c[_0x1a57('0xca')],{'$or':_[_0x1a57('0x2f')](_0x23353c[_0x1a57('0x3f')],function(_0x13debd){var _0x31285d={};_0x31285d[_0x13debd]={'$like':'%'+_0x47f76b['query'][_0x1a57('0x2e')]+'%'};return _0x31285d;})});}_0x23353c=_['merge']({},_0x23353c,_0x47f76b[_0x1a57('0xcc')]);return _0x5681d9['getFaxAccounts'](_0x23353c);}})[_0x1a57('0x14')](function(_0x3c7dcc){if(_0x3c7dcc){_0x4d8ddb=_0x3c7dcc[_0x1a57('0x45')];if(!_0x47f76b['query']['hasOwnProperty'](_0x1a57('0xd5'))){_0x23353c['limit']=qs[_0x1a57('0x23')](_0x47f76b[_0x1a57('0x43')]['limit']);_0x23353c[_0x1a57('0x21')]=qs[_0x1a57('0x21')](_0x47f76b[_0x1a57('0x43')][_0x1a57('0x21')]);}return _0x5681d9['getFaxAccounts'](_0x23353c);}})[_0x1a57('0x14')](function(_0xcc7928){if(_0xcc7928){return _0xcc7928?{'count':_0x4d8ddb,'rows':_0xcc7928}:null;}})[_0x1a57('0x14')](respondWithResult(_0x29a38c,null))[_0x1a57('0x4c')](handleError(_0x29a38c,null));};exports['addFaxAccounts']=function(_0x204a4a,_0xfa6aca){return db[_0x1a57('0x3d')][_0x1a57('0x31')]({'where':{'id':_0x204a4a[_0x1a57('0x4e')]['id']}})['then'](handleEntityNotFound(_0xfa6aca,null))[_0x1a57('0x14')](function(_0x4098cf){if(_0x4098cf){return _0x4098cf['addFaxAccounts'](_0x204a4a[_0x1a57('0x59')]['ids'],_[_0x1a57('0x112')](_0x204a4a['body'],['ids','id'])||{});}})['then'](respondWithResult(_0xfa6aca,null))[_0x1a57('0x4c')](handleError(_0xfa6aca,null));};exports[_0x1a57('0x142')]=function(_0x129fa8,_0x4d4687){return db['User']['find']({'where':{'id':_0x129fa8[_0x1a57('0x4e')]['id']}})['then'](handleEntityNotFound(_0x4d4687,null))[_0x1a57('0x14')](function(_0x171ff9){if(_0x171ff9){return _0x171ff9[_0x1a57('0x142')](_0x129fa8['query']['ids']);}})['then'](respondWithStatusCode(_0x4d4687,null))[_0x1a57('0x4c')](handleError(_0x4d4687,null));};exports[_0x1a57('0x143')]=function(_0x1370a6,_0x198ad8){var _0x258c56={};var _0x1caa40={};var _0xe36029;var _0x4d16f2;return db[_0x1a57('0x3d')][_0x1a57('0x91')]({'where':{'id':_0x1370a6[_0x1a57('0x4e')]['id']}})[_0x1a57('0x14')](handleEntityNotFound(_0x198ad8,null))[_0x1a57('0x14')](function(_0x599354){if(_0x599354){_0xe36029=_0x599354;_0x1caa40[_0x1a57('0x4f')]=_[_0x1a57('0x51')](db[_0x1a57('0x144')][_0x1a57('0x52')]);_0x1caa40[_0x1a57('0x43')]=_[_0x1a57('0x51')](_0x1370a6[_0x1a57('0x43')]);_0x1caa40['filters']=_[_0x1a57('0x54')](_0x1caa40[_0x1a57('0x4f')],_0x1caa40['query']);_0x258c56['attributes']=_[_0x1a57('0x54')](_0x1caa40['model'],qs[_0x1a57('0x55')](_0x1370a6[_0x1a57('0x43')][_0x1a57('0x55')]));_0x258c56['attributes']=_0x258c56[_0x1a57('0x3f')][_0x1a57('0x45')]?_0x258c56[_0x1a57('0x3f')]:_0x1caa40[_0x1a57('0x4f')];_0x258c56[_0x1a57('0xc7')]=qs[_0x1a57('0xc8')](_0x1370a6['query']['sort']);_0x258c56[_0x1a57('0xca')]=qs[_0x1a57('0xc6')](_[_0x1a57('0xc9')](_0x1370a6[_0x1a57('0x43')],_0x1caa40[_0x1a57('0xc6')]));if(_0x1370a6[_0x1a57('0x43')]['filter']){_0x258c56[_0x1a57('0xca')]=_[_0x1a57('0xcb')](_0x258c56[_0x1a57('0xca')],{'$or':_[_0x1a57('0x2f')](_0x258c56[_0x1a57('0x3f')],function(_0x2ba71f){var _0x312bb2={};_0x312bb2[_0x2ba71f]={'$like':'%'+_0x1370a6[_0x1a57('0x43')][_0x1a57('0x2e')]+'%'};return _0x312bb2;})});}_0x258c56=_[_0x1a57('0xcb')]({},_0x258c56,_0x1370a6['options']);return _0xe36029[_0x1a57('0x143')](_0x258c56);}})['then'](function(_0x4930fb){if(_0x4930fb){_0x4d16f2=_0x4930fb[_0x1a57('0x45')];if(!_0x1370a6[_0x1a57('0x43')]['hasOwnProperty']('nolimit')){_0x258c56[_0x1a57('0x23')]=qs[_0x1a57('0x23')](_0x1370a6[_0x1a57('0x43')][_0x1a57('0x23')]);_0x258c56[_0x1a57('0x21')]=qs[_0x1a57('0x21')](_0x1370a6[_0x1a57('0x43')][_0x1a57('0x21')]);}return _0xe36029['getMailAccounts'](_0x258c56);}})[_0x1a57('0x14')](function(_0x2f7275){if(_0x2f7275){return _0x2f7275?{'count':_0x4d16f2,'rows':_0x2f7275}:null;}})[_0x1a57('0x14')](respondWithResult(_0x198ad8,null))[_0x1a57('0x4c')](handleError(_0x198ad8,null));};exports[_0x1a57('0x145')]=function(_0x50ab37,_0x34322e){return db[_0x1a57('0x3d')][_0x1a57('0x31')]({'where':{'id':_0x50ab37[_0x1a57('0x4e')]['id']}})[_0x1a57('0x14')](handleEntityNotFound(_0x34322e,null))[_0x1a57('0x14')](function(_0x1cbc42){if(_0x1cbc42){return _0x1cbc42[_0x1a57('0x145')](_0x50ab37[_0x1a57('0x59')][_0x1a57('0x5b')],_[_0x1a57('0x112')](_0x50ab37[_0x1a57('0x59')],[_0x1a57('0x5b'),'id'])||{});}})[_0x1a57('0x14')](respondWithResult(_0x34322e,null))['catch'](handleError(_0x34322e,null));};exports[_0x1a57('0x146')]=function(_0x482966,_0x1b749c){return db[_0x1a57('0x3d')]['find']({'where':{'id':_0x482966[_0x1a57('0x4e')]['id']}})[_0x1a57('0x14')](handleEntityNotFound(_0x1b749c,null))['then'](function(_0x10c567){if(_0x10c567){return _0x10c567['removeMailAccounts'](_0x482966[_0x1a57('0x43')][_0x1a57('0x5b')]);}})[_0x1a57('0x14')](respondWithStatusCode(_0x1b749c,null))[_0x1a57('0x4c')](handleError(_0x1b749c,null));};exports['getOpenchannelAccounts']=function(_0x368292,_0x13c700){var _0x1b4752={};var _0x5f38b8={};var _0x57fbe6;var _0x30df11;return db[_0x1a57('0x3d')]['findOne']({'where':{'id':_0x368292[_0x1a57('0x4e')]['id']}})[_0x1a57('0x14')](handleEntityNotFound(_0x13c700,null))[_0x1a57('0x14')](function(_0x4e943a){if(_0x4e943a){_0x57fbe6=_0x4e943a;_0x5f38b8[_0x1a57('0x4f')]=_[_0x1a57('0x51')](db[_0x1a57('0x147')][_0x1a57('0x52')]);_0x5f38b8[_0x1a57('0x43')]=_[_0x1a57('0x51')](_0x368292[_0x1a57('0x43')]);_0x5f38b8['filters']=_[_0x1a57('0x54')](_0x5f38b8[_0x1a57('0x4f')],_0x5f38b8[_0x1a57('0x43')]);_0x1b4752[_0x1a57('0x3f')]=_[_0x1a57('0x54')](_0x5f38b8[_0x1a57('0x4f')],qs[_0x1a57('0x55')](_0x368292[_0x1a57('0x43')][_0x1a57('0x55')]));_0x1b4752[_0x1a57('0x3f')]=_0x1b4752[_0x1a57('0x3f')]['length']?_0x1b4752[_0x1a57('0x3f')]:_0x5f38b8[_0x1a57('0x4f')];_0x1b4752[_0x1a57('0xc7')]=qs[_0x1a57('0xc8')](_0x368292[_0x1a57('0x43')]['sort']);_0x1b4752[_0x1a57('0xca')]=qs[_0x1a57('0xc6')](_[_0x1a57('0xc9')](_0x368292[_0x1a57('0x43')],_0x5f38b8['filters']));if(_0x368292['query']['filter']){_0x1b4752[_0x1a57('0xca')]=_[_0x1a57('0xcb')](_0x1b4752[_0x1a57('0xca')],{'$or':_[_0x1a57('0x2f')](_0x1b4752['attributes'],function(_0x4f28b6){var _0x2f610e={};_0x2f610e[_0x4f28b6]={'$like':'%'+_0x368292[_0x1a57('0x43')]['filter']+'%'};return _0x2f610e;})});}_0x1b4752=_['merge']({},_0x1b4752,_0x368292[_0x1a57('0xcc')]);return _0x57fbe6[_0x1a57('0x148')](_0x1b4752);}})[_0x1a57('0x14')](function(_0x4f2cc1){if(_0x4f2cc1){_0x30df11=_0x4f2cc1['length'];if(!_0x368292['query'][_0x1a57('0xd4')](_0x1a57('0xd5'))){_0x1b4752[_0x1a57('0x23')]=qs[_0x1a57('0x23')](_0x368292['query'][_0x1a57('0x23')]);_0x1b4752[_0x1a57('0x21')]=qs[_0x1a57('0x21')](_0x368292[_0x1a57('0x43')]['offset']);}return _0x57fbe6[_0x1a57('0x148')](_0x1b4752);}})[_0x1a57('0x14')](function(_0x23c140){if(_0x23c140){return _0x23c140?{'count':_0x30df11,'rows':_0x23c140}:null;}})['then'](respondWithResult(_0x13c700,null))[_0x1a57('0x4c')](handleError(_0x13c700,null));};exports[_0x1a57('0x149')]=function(_0x428dca,_0x316dde){return db[_0x1a57('0x3d')]['find']({'where':{'id':_0x428dca[_0x1a57('0x4e')]['id']}})['then'](handleEntityNotFound(_0x316dde,null))[_0x1a57('0x14')](function(_0xe4bed1){if(_0xe4bed1){return _0xe4bed1[_0x1a57('0x149')](_0x428dca[_0x1a57('0x59')][_0x1a57('0x5b')],_[_0x1a57('0x112')](_0x428dca[_0x1a57('0x59')],[_0x1a57('0x5b'),'id'])||{});}})['then'](respondWithResult(_0x316dde,null))['catch'](handleError(_0x316dde,null));};exports['removeOpenchannelAccounts']=function(_0x223b82,_0x3ab798){return db[_0x1a57('0x3d')][_0x1a57('0x31')]({'where':{'id':_0x223b82[_0x1a57('0x4e')]['id']}})[_0x1a57('0x14')](handleEntityNotFound(_0x3ab798,null))['then'](function(_0x5e92dd){if(_0x5e92dd){return _0x5e92dd[_0x1a57('0x14a')](_0x223b82[_0x1a57('0x43')][_0x1a57('0x5b')]);}})[_0x1a57('0x14')](respondWithStatusCode(_0x3ab798,null))[_0x1a57('0x4c')](handleError(_0x3ab798,null));};exports[_0x1a57('0x14b')]=function(_0x786df4,_0x24ff69){var _0x2866f6={};var _0x37d209={};var _0x309f69;var _0x5a92b4;return db['User'][_0x1a57('0x91')]({'where':{'id':_0x786df4[_0x1a57('0x4e')]['id']}})[_0x1a57('0x14')](handleEntityNotFound(_0x24ff69,null))[_0x1a57('0x14')](function(_0x2643ee){if(_0x2643ee){_0x309f69=_0x2643ee;_0x37d209['model']=_['keys'](db[_0x1a57('0x14c')][_0x1a57('0x52')]);_0x37d209['query']=_[_0x1a57('0x51')](_0x786df4[_0x1a57('0x43')]);_0x37d209[_0x1a57('0xc6')]=_[_0x1a57('0x54')](_0x37d209[_0x1a57('0x4f')],_0x37d209['query']);_0x2866f6[_0x1a57('0x3f')]=_[_0x1a57('0x54')](_0x37d209[_0x1a57('0x4f')],qs[_0x1a57('0x55')](_0x786df4[_0x1a57('0x43')][_0x1a57('0x55')]));_0x2866f6['attributes']=_0x2866f6[_0x1a57('0x3f')]['length']?_0x2866f6['attributes']:_0x37d209[_0x1a57('0x4f')];_0x2866f6[_0x1a57('0xc7')]=qs[_0x1a57('0xc8')](_0x786df4[_0x1a57('0x43')][_0x1a57('0xc8')]);_0x2866f6[_0x1a57('0xca')]=qs[_0x1a57('0xc6')](_['pick'](_0x786df4[_0x1a57('0x43')],_0x37d209['filters']));if(_0x786df4['query'][_0x1a57('0x2e')]){_0x2866f6[_0x1a57('0xca')]=_[_0x1a57('0xcb')](_0x2866f6[_0x1a57('0xca')],{'$or':_[_0x1a57('0x2f')](_0x2866f6[_0x1a57('0x3f')],function(_0x7093be){var _0x66d36d={};_0x66d36d[_0x7093be]={'$like':'%'+_0x786df4[_0x1a57('0x43')][_0x1a57('0x2e')]+'%'};return _0x66d36d;})});}_0x2866f6=_[_0x1a57('0xcb')]({},_0x2866f6,_0x786df4[_0x1a57('0xcc')]);return _0x309f69[_0x1a57('0x14b')](_0x2866f6);}})['then'](function(_0x458490){if(_0x458490){_0x5a92b4=_0x458490[_0x1a57('0x45')];if(!_0x786df4[_0x1a57('0x43')][_0x1a57('0xd4')](_0x1a57('0xd5'))){_0x2866f6['limit']=qs[_0x1a57('0x23')](_0x786df4['query'][_0x1a57('0x23')]);_0x2866f6[_0x1a57('0x21')]=qs[_0x1a57('0x21')](_0x786df4[_0x1a57('0x43')][_0x1a57('0x21')]);}return _0x309f69[_0x1a57('0x14b')](_0x2866f6);}})[_0x1a57('0x14')](function(_0x12b7fe){if(_0x12b7fe){return _0x12b7fe?{'count':_0x5a92b4,'rows':_0x12b7fe}:null;}})['then'](respondWithResult(_0x24ff69,null))[_0x1a57('0x4c')](handleError(_0x24ff69,null));};exports[_0x1a57('0x14d')]=function(_0x581fe5,_0xc657e7){return db[_0x1a57('0x3d')][_0x1a57('0x31')]({'where':{'id':_0x581fe5[_0x1a57('0x4e')]['id']}})['then'](handleEntityNotFound(_0xc657e7,null))[_0x1a57('0x14')](function(_0x423a10){if(_0x423a10){return _0x423a10['addSmsAccounts'](_0x581fe5[_0x1a57('0x59')][_0x1a57('0x5b')],_[_0x1a57('0x112')](_0x581fe5[_0x1a57('0x59')],['ids','id'])||{});}})[_0x1a57('0x14')](respondWithResult(_0xc657e7,null))[_0x1a57('0x4c')](handleError(_0xc657e7,null));};exports[_0x1a57('0x14e')]=function(_0x1d3acb,_0x373df4){return db[_0x1a57('0x3d')]['find']({'where':{'id':_0x1d3acb[_0x1a57('0x4e')]['id']}})[_0x1a57('0x14')](handleEntityNotFound(_0x373df4,null))[_0x1a57('0x14')](function(_0x5516f6){if(_0x5516f6){return _0x5516f6['removeSmsAccounts'](_0x1d3acb[_0x1a57('0x43')][_0x1a57('0x5b')]);}})[_0x1a57('0x14')](respondWithStatusCode(_0x373df4,null))[_0x1a57('0x4c')](handleError(_0x373df4,null));};exports[_0x1a57('0x14f')]=function(_0x83db00,_0x3c2887){var _0x434b35={};var _0x4f1053={};var _0x3bb21a;var _0xed6213;return db[_0x1a57('0x3d')]['findOne']({'where':{'id':_0x83db00[_0x1a57('0x4e')]['id']}})['then'](handleEntityNotFound(_0x3c2887,null))[_0x1a57('0x14')](function(_0x4a0475){if(_0x4a0475){_0x3bb21a=_0x4a0475;_0x4f1053[_0x1a57('0x4f')]=_[_0x1a57('0x51')](db[_0x1a57('0x150')]['rawAttributes']);_0x4f1053[_0x1a57('0x43')]=_[_0x1a57('0x51')](_0x83db00['query']);_0x4f1053[_0x1a57('0xc6')]=_[_0x1a57('0x54')](_0x4f1053[_0x1a57('0x4f')],_0x4f1053[_0x1a57('0x43')]);_0x434b35[_0x1a57('0x3f')]=_[_0x1a57('0x54')](_0x4f1053[_0x1a57('0x4f')],qs[_0x1a57('0x55')](_0x83db00[_0x1a57('0x43')][_0x1a57('0x55')]));_0x434b35[_0x1a57('0x3f')]=_0x434b35['attributes'][_0x1a57('0x45')]?_0x434b35[_0x1a57('0x3f')]:_0x4f1053['model'];_0x434b35[_0x1a57('0xc7')]=qs['sort'](_0x83db00[_0x1a57('0x43')][_0x1a57('0xc8')]);_0x434b35['where']=qs[_0x1a57('0xc6')](_['pick'](_0x83db00[_0x1a57('0x43')],_0x4f1053[_0x1a57('0xc6')]));if(_0x83db00[_0x1a57('0x43')][_0x1a57('0x2e')]){_0x434b35[_0x1a57('0xca')]=_[_0x1a57('0xcb')](_0x434b35[_0x1a57('0xca')],{'$or':_['map'](_0x434b35[_0x1a57('0x3f')],function(_0x29c51e){var _0x29bd71={};_0x29bd71[_0x29c51e]={'$like':'%'+_0x83db00[_0x1a57('0x43')][_0x1a57('0x2e')]+'%'};return _0x29bd71;})});}_0x434b35=_['merge']({},_0x434b35,_0x83db00[_0x1a57('0xcc')]);return _0x3bb21a[_0x1a57('0x14f')](_0x434b35);}})[_0x1a57('0x14')](function(_0x20b394){if(_0x20b394){_0xed6213=_0x20b394['length'];if(!_0x83db00[_0x1a57('0x43')][_0x1a57('0xd4')](_0x1a57('0xd5'))){_0x434b35[_0x1a57('0x23')]=qs['limit'](_0x83db00[_0x1a57('0x43')][_0x1a57('0x23')]);_0x434b35[_0x1a57('0x21')]=qs[_0x1a57('0x21')](_0x83db00['query'][_0x1a57('0x21')]);}return _0x3bb21a[_0x1a57('0x14f')](_0x434b35);}})['then'](function(_0x155f1b){if(_0x155f1b){return _0x155f1b?{'count':_0xed6213,'rows':_0x155f1b}:null;}})[_0x1a57('0x14')](respondWithResult(_0x3c2887,null))[_0x1a57('0x4c')](handleError(_0x3c2887,null));};exports['addChatWebsites']=function(_0x2df8bd,_0x6fbc83){return db[_0x1a57('0x3d')][_0x1a57('0x31')]({'where':{'id':_0x2df8bd['params']['id']}})['then'](handleEntityNotFound(_0x6fbc83,null))[_0x1a57('0x14')](function(_0x108695){if(_0x108695){return _0x108695[_0x1a57('0x151')](_0x2df8bd[_0x1a57('0x59')][_0x1a57('0x5b')],_[_0x1a57('0x112')](_0x2df8bd[_0x1a57('0x59')],[_0x1a57('0x5b'),'id'])||{});}})[_0x1a57('0x14')](respondWithResult(_0x6fbc83,null))[_0x1a57('0x4c')](handleError(_0x6fbc83,null));};exports[_0x1a57('0x152')]=function(_0x4f7d3e,_0x33d3ea){return db[_0x1a57('0x3d')][_0x1a57('0x31')]({'where':{'id':_0x4f7d3e[_0x1a57('0x4e')]['id']}})['then'](handleEntityNotFound(_0x33d3ea,null))['then'](function(_0x2268ae){if(_0x2268ae){return _0x2268ae[_0x1a57('0x152')](_0x4f7d3e[_0x1a57('0x43')]['ids']);}})[_0x1a57('0x14')](respondWithStatusCode(_0x33d3ea,null))[_0x1a57('0x4c')](handleError(_0x33d3ea,null));};exports['getWhatsappAccounts']=function(_0x5b1081,_0xa097d1){var _0x574acd={};var _0xf9a45b={};var _0x35dc81;var _0x39f2f7;return db[_0x1a57('0x3d')]['findOne']({'where':{'id':_0x5b1081[_0x1a57('0x4e')]['id']}})['then'](handleEntityNotFound(_0xa097d1,null))['then'](function(_0x3ef805){if(_0x3ef805){_0x35dc81=_0x3ef805;_0xf9a45b[_0x1a57('0x4f')]=_[_0x1a57('0x51')](db[_0x1a57('0x153')][_0x1a57('0x52')]);_0xf9a45b[_0x1a57('0x43')]=_[_0x1a57('0x51')](_0x5b1081[_0x1a57('0x43')]);_0xf9a45b[_0x1a57('0xc6')]=_[_0x1a57('0x54')](_0xf9a45b['model'],_0xf9a45b[_0x1a57('0x43')]);_0x574acd['attributes']=_[_0x1a57('0x54')](_0xf9a45b['model'],qs['fields'](_0x5b1081[_0x1a57('0x43')][_0x1a57('0x55')]));_0x574acd[_0x1a57('0x3f')]=_0x574acd[_0x1a57('0x3f')][_0x1a57('0x45')]?_0x574acd['attributes']:_0xf9a45b[_0x1a57('0x4f')];_0x574acd[_0x1a57('0xc7')]=qs[_0x1a57('0xc8')](_0x5b1081['query'][_0x1a57('0xc8')]);_0x574acd[_0x1a57('0xca')]=qs[_0x1a57('0xc6')](_[_0x1a57('0xc9')](_0x5b1081[_0x1a57('0x43')],_0xf9a45b['filters']));if(_0x5b1081[_0x1a57('0x43')][_0x1a57('0x2e')]){_0x574acd[_0x1a57('0xca')]=_['merge'](_0x574acd[_0x1a57('0xca')],{'$or':_['map'](_0x574acd['attributes'],function(_0x470604){var _0x305f31={};_0x305f31[_0x470604]={'$like':'%'+_0x5b1081[_0x1a57('0x43')][_0x1a57('0x2e')]+'%'};return _0x305f31;})});}_0x574acd=_[_0x1a57('0xcb')]({},_0x574acd,_0x5b1081[_0x1a57('0xcc')]);return _0x35dc81[_0x1a57('0x154')](_0x574acd);}})[_0x1a57('0x14')](function(_0x213d39){if(_0x213d39){_0x39f2f7=_0x213d39[_0x1a57('0x45')];if(!_0x5b1081[_0x1a57('0x43')][_0x1a57('0xd4')](_0x1a57('0xd5'))){_0x574acd['limit']=qs['limit'](_0x5b1081[_0x1a57('0x43')][_0x1a57('0x23')]);_0x574acd[_0x1a57('0x21')]=qs[_0x1a57('0x21')](_0x5b1081[_0x1a57('0x43')]['offset']);}return _0x35dc81[_0x1a57('0x154')](_0x574acd);}})[_0x1a57('0x14')](function(_0x1ae09d){if(_0x1ae09d){return _0x1ae09d?{'count':_0x39f2f7,'rows':_0x1ae09d}:null;}})['then'](respondWithResult(_0xa097d1,null))[_0x1a57('0x4c')](handleError(_0xa097d1,null));};exports[_0x1a57('0x155')]=function(_0x2e4d50,_0x5e61d2){return db['User']['find']({'where':{'id':_0x2e4d50['params']['id']}})[_0x1a57('0x14')](handleEntityNotFound(_0x5e61d2,null))[_0x1a57('0x14')](function(_0x503c37){if(_0x503c37){return _0x503c37['addWhatsappAccounts'](_0x2e4d50['body'][_0x1a57('0x5b')],_[_0x1a57('0x112')](_0x2e4d50[_0x1a57('0x59')],['ids','id'])||{});}})[_0x1a57('0x14')](respondWithResult(_0x5e61d2,null))[_0x1a57('0x4c')](handleError(_0x5e61d2,null));};exports[_0x1a57('0x156')]=function(_0x53b03b,_0x33888e){return db[_0x1a57('0x3d')]['find']({'where':{'id':_0x53b03b[_0x1a57('0x4e')]['id']}})[_0x1a57('0x14')](handleEntityNotFound(_0x33888e,null))[_0x1a57('0x14')](function(_0x1f1cf6){if(_0x1f1cf6){return _0x1f1cf6[_0x1a57('0x156')](_0x53b03b['query']['ids']);}})[_0x1a57('0x14')](respondWithStatusCode(_0x33888e,null))[_0x1a57('0x4c')](handleError(_0x33888e,null));};exports['getSquareProjects']=function(_0x37874f,_0x3fef29){var _0x488824={};var _0x8ac3a0={};var _0x328fec;var _0x5dee46;return db['User'][_0x1a57('0x91')]({'where':{'id':_0x37874f[_0x1a57('0x4e')]['id']}})[_0x1a57('0x14')](handleEntityNotFound(_0x3fef29,null))['then'](function(_0x307a40){if(_0x307a40){_0x328fec=_0x307a40;_0x8ac3a0['model']=_[_0x1a57('0x51')](db[_0x1a57('0x157')][_0x1a57('0x52')]);_0x8ac3a0['query']=_[_0x1a57('0x51')](_0x37874f[_0x1a57('0x43')]);_0x8ac3a0[_0x1a57('0xc6')]=_[_0x1a57('0x54')](_0x8ac3a0['model'],_0x8ac3a0['query']);_0x488824['attributes']=_[_0x1a57('0x54')](_0x8ac3a0[_0x1a57('0x4f')],qs[_0x1a57('0x55')](_0x37874f[_0x1a57('0x43')]['fields']));_0x488824[_0x1a57('0x3f')]=_0x488824[_0x1a57('0x3f')][_0x1a57('0x45')]?_0x488824[_0x1a57('0x3f')]:_0x8ac3a0['model'];_0x488824[_0x1a57('0xc7')]=qs[_0x1a57('0xc8')](_0x37874f[_0x1a57('0x43')]['sort']);_0x488824[_0x1a57('0xca')]=qs['filters'](_[_0x1a57('0xc9')](_0x37874f[_0x1a57('0x43')],_0x8ac3a0[_0x1a57('0xc6')]));if(_0x37874f[_0x1a57('0x43')][_0x1a57('0x2e')]){_0x488824[_0x1a57('0xca')]=_[_0x1a57('0xcb')](_0x488824[_0x1a57('0xca')],{'$or':_['map'](_0x488824[_0x1a57('0x3f')],function(_0x30d4dd){var _0x338661={};_0x338661[_0x30d4dd]={'$like':'%'+_0x37874f[_0x1a57('0x43')]['filter']+'%'};return _0x338661;})});}_0x488824=_[_0x1a57('0xcb')]({},_0x488824,_0x37874f['options']);return _0x328fec[_0x1a57('0x158')](_0x488824);}})['then'](function(_0x2cc7ea){if(_0x2cc7ea){_0x5dee46=_0x2cc7ea[_0x1a57('0x45')];if(!_0x37874f[_0x1a57('0x43')][_0x1a57('0xd4')](_0x1a57('0xd5'))){_0x488824[_0x1a57('0x23')]=qs[_0x1a57('0x23')](_0x37874f[_0x1a57('0x43')]['limit']);_0x488824[_0x1a57('0x21')]=qs[_0x1a57('0x21')](_0x37874f[_0x1a57('0x43')][_0x1a57('0x21')]);}return _0x328fec[_0x1a57('0x158')](_0x488824);}})['then'](function(_0x517159){if(_0x517159){return _0x517159?{'count':_0x5dee46,'rows':_0x517159}:null;}})[_0x1a57('0x14')](respondWithResult(_0x3fef29,null))[_0x1a57('0x4c')](handleError(_0x3fef29,null));};exports[_0x1a57('0x159')]=function(_0x1ccc05,_0x8eeab8){return db['User'][_0x1a57('0x31')]({'where':{'id':_0x1ccc05['params']['id']}})[_0x1a57('0x14')](handleEntityNotFound(_0x8eeab8,null))[_0x1a57('0x14')](function(_0x1b306f){if(_0x1b306f){return _0x1b306f[_0x1a57('0x159')](_0x1ccc05[_0x1a57('0x59')][_0x1a57('0x5b')],_[_0x1a57('0x112')](_0x1ccc05[_0x1a57('0x59')],[_0x1a57('0x5b'),'id'])||{});}})[_0x1a57('0x14')](respondWithResult(_0x8eeab8,null))[_0x1a57('0x4c')](handleError(_0x8eeab8,null));};exports['removeSquareProjects']=function(_0x5017dd,_0x3b7b28){return db[_0x1a57('0x3d')][_0x1a57('0x31')]({'where':{'id':_0x5017dd[_0x1a57('0x4e')]['id']}})[_0x1a57('0x14')](handleEntityNotFound(_0x3b7b28,null))[_0x1a57('0x14')](function(_0x195ed9){if(_0x195ed9){return _0x195ed9[_0x1a57('0x15a')](_0x5017dd['query'][_0x1a57('0x5b')]);}})[_0x1a57('0x14')](respondWithStatusCode(_0x3b7b28,null))[_0x1a57('0x4c')](handleError(_0x3b7b28,null));};exports[_0x1a57('0x15b')]=function(_0x36a2bb,_0x50273a){var _0x358bb8={},_0x2de02f={},_0x2171b4={'count':0x0,'rows':[]};var _0x189955=db[_0x1a57('0x15c')][_0x1a57('0x52')];_0x2de02f[_0x1a57('0x4f')]=_[_0x1a57('0x51')](_0x189955);_0x2de02f['query']=_[_0x1a57('0x51')](_0x36a2bb[_0x1a57('0x43')]);_0x2de02f[_0x1a57('0xc6')]=_[_0x1a57('0x54')](_0x2de02f[_0x1a57('0x4f')],_0x2de02f[_0x1a57('0x43')]);_0x2de02f[_0x1a57('0xc6')]=_[_0x1a57('0x15d')](_0x2de02f[_0x1a57('0xc6')],[_0x1a57('0x15e'),'$or',_0x1a57('0x15f'),'$gte',_0x1a57('0x160'),_0x1a57('0x161'),_0x1a57('0x162'),'$eq',_0x1a57('0x163'),_0x1a57('0x164'),_0x1a57('0x165'),_0x1a57('0x166'),_0x1a57('0x167'),_0x1a57('0x168'),_0x1a57('0x169'),'$iLike',_0x1a57('0x16a'),_0x1a57('0x168'),_0x1a57('0x16b'),'$contains','$contained',_0x1a57('0x16c')]);_0x358bb8['attributes']=_[_0x1a57('0x54')](_0x2de02f[_0x1a57('0x4f')],qs[_0x1a57('0x55')](_0x36a2bb['query'][_0x1a57('0x55')]));_0x358bb8['attributes']=_0x358bb8[_0x1a57('0x3f')][_0x1a57('0x45')]?_0x358bb8[_0x1a57('0x3f')]:_0x2de02f[_0x1a57('0x4f')];if(!_0x36a2bb[_0x1a57('0x43')]['hasOwnProperty'](_0x1a57('0xd5'))){_0x358bb8['limit']=qs[_0x1a57('0x23')](_0x36a2bb['query'][_0x1a57('0x23')]);_0x358bb8[_0x1a57('0x21')]=qs['offset'](_0x36a2bb[_0x1a57('0x43')][_0x1a57('0x21')]);}_0x358bb8[_0x1a57('0xc7')]=qs[_0x1a57('0xc8')](_0x36a2bb[_0x1a57('0x43')][_0x1a57('0xc8')]);_0x358bb8[_0x1a57('0xca')]=qs[_0x1a57('0xc6')](_[_0x1a57('0xc9')](_0x36a2bb['query'],_0x2de02f[_0x1a57('0xc6')]));if(_0x36a2bb[_0x1a57('0x43')][_0x1a57('0x2e')]){_0x358bb8[_0x1a57('0xca')]=_[_0x1a57('0xcb')](_0x358bb8['where'],{'$or':_[_0x1a57('0x2f')](_0x358bb8[_0x1a57('0x3f')],function(_0x355d6c){var _0x43ea7e={};_0x43ea7e[_0x355d6c]={'$like':'%'+_0x36a2bb[_0x1a57('0x43')]['filter']+'%'};return _0x43ea7e;})});}_0x358bb8[_0x1a57('0xca')]={'$and':[_0x358bb8[_0x1a57('0xca')],{'$or':[{'UserId':_0x36a2bb[_0x1a57('0x4e')]['id']},{'OwnerId':_0x36a2bb[_0x1a57('0x4e')]['id']}]}]};_0x358bb8=_[_0x1a57('0xcb')]({},_0x358bb8,_0x36a2bb[_0x1a57('0xcc')]);var _0x40faee={'where':_0x358bb8[_0x1a57('0xca')]};return db[_0x1a57('0x15c')][_0x1a57('0x24')](_0x40faee)[_0x1a57('0x14')](function(_0x46a44b){_0x2171b4['count']=_0x46a44b;if(_0x36a2bb['query'][_0x1a57('0x3e')]){_0x358bb8[_0x1a57('0xcd')]=[{'attributes':['id','firstName','lastName','phone'],'model':db[_0x1a57('0xc5')],'as':_0x1a57('0x16d')},{'attributes':['id',_0x1a57('0x32'),_0x1a57('0x16e')],'model':db['VoiceQueue'],'as':_0x1a57('0xd7')}];}return db[_0x1a57('0x15c')][_0x1a57('0x41')](_0x358bb8);})[_0x1a57('0x14')](function(_0x44592f){_0x2171b4[_0x1a57('0x42')]=_0x44592f;return _0x2171b4;})['then'](respondWithFilteredResult(_0x50273a,_0x358bb8))[_0x1a57('0x4c')](handleError(_0x50273a,null));};exports[_0x1a57('0x16f')]=function(_0x5adb4d,_0x4e27cf){if(!_[_0x1a57('0x61')](_0x5adb4d[_0x1a57('0x29')]['id'])&&(_0x5adb4d[_0x1a57('0x29')][_0x1a57('0x27')]==_0x1a57('0x7a')||_0x5adb4d[_0x1a57('0x29')][_0x1a57('0x27')]=='user')){return db['User']['findOne']({'where':{'id':_0x5adb4d['params']['id']},'raw':!![]})['then'](function(_0x31f404){return authService[_0x1a57('0x170')](_0x31f404);})[_0x1a57('0x14')](function(_0xe7e4dc){if(_0xe7e4dc){return _0x4e27cf[_0x1a57('0x1e')](0xc8)['json']({'api_key':_0xe7e4dc['token']});}else{return _0x4e27cf[_0x1a57('0x1e')](0xcc)[_0x1a57('0x20')]({'message':_0x1a57('0x171')});}})[_0x1a57('0x4c')](handleError(_0x4e27cf,0x193));}else{return _0x4e27cf[_0x1a57('0x1e')](0x191)[_0x1a57('0x20')]({'message':_0x1a57('0x172')});}};exports[_0x1a57('0x173')]=function(_0x4a0725,_0x28ee37){if(!_['isNil'](_0x4a0725[_0x1a57('0x29')]['id'])&&(_0x4a0725['user'][_0x1a57('0x27')]=='admin'||_0x4a0725[_0x1a57('0x29')][_0x1a57('0x27')]==_0x1a57('0x29'))){return db[_0x1a57('0x3d')][_0x1a57('0x31')]({'where':{'id':_0x4a0725[_0x1a57('0x4e')]['id']}})[_0x1a57('0x14')](function(_0x3cbbd5){return authService[_0x1a57('0x174')](_0x3cbbd5);})[_0x1a57('0x14')](function(_0x50345a){return db[_0x1a57('0x3d')]['update']({'apiKeyIat':_0x50345a[_0x1a57('0x175')],'apiKeyNonce':_0x50345a[_0x1a57('0x176')]},{'where':{'id':_0x4a0725[_0x1a57('0x4e')]['id']}})[_0x1a57('0x14')](function(){return _0x28ee37[_0x1a57('0x1e')](0xc8)[_0x1a57('0x20')]({'api_key':_0x50345a[_0x1a57('0x177')]});});})[_0x1a57('0x4c')](handleError(_0x28ee37,0x193));}else{return _0x28ee37['status'](0x191)[_0x1a57('0x20')]({'message':_0x1a57('0x172')});}};exports[_0x1a57('0x178')]=function(_0x2a3c0f,_0x1aa3dc){if(!_[_0x1a57('0x61')](_0x2a3c0f['user']['id'])&&(_0x2a3c0f[_0x1a57('0x29')][_0x1a57('0x27')]==_0x1a57('0x7a')||_0x2a3c0f[_0x1a57('0x29')]['role']=='user')){return db['User']['find']({'where':{'id':_0x2a3c0f[_0x1a57('0x4e')]['id']}})[_0x1a57('0x14')](handleEntityNotFound(_0x1aa3dc,null))[_0x1a57('0x14')](function(_0x4fadf0){if(_0x4fadf0&&_0x4fadf0[_0x1a57('0x179')]&&_0x4fadf0['apiKeyIat'])return _0x4fadf0;else throw{'message':'API\x20key\x20not\x20available'};})[_0x1a57('0x14')](function(_0x401b7f){return db[_0x1a57('0x3d')][_0x1a57('0x58')]({'apiKeyNonce':null,'apiKeyIat':null},{'where':{'id':_0x2a3c0f[_0x1a57('0x4e')]['id']}});})[_0x1a57('0x14')](respondWithStatusCode(_0x1aa3dc,0xc8))[_0x1a57('0x4c')](handleError(_0x1aa3dc,0x193));}else{return _0x1aa3dc[_0x1a57('0x1e')](0x191)['json']({'message':_0x1a57('0x172')});}};exports[_0x1a57('0x17a')]=function(_0xe9d96,_0x5a52c9){var _0x242cdf=_0xe9d96['user'][_0x1a57('0x26')]({'plain':!![]});if(!_0x242cdf){return _0x5a52c9[_0x1a57('0x1e')](0x191)[_0x1a57('0x36')]('Unable\x20to\x20retrieve\x20the\x20current\x20user');}else{return _0x5a52c9[_0x1a57('0x1e')](0xc8)[_0x1a57('0x20')](_0x242cdf);}};exports['getPresence']=function(_0x510c0a,_0xf0e723){var _0x11d2a8={'offset':0x0},_0x314541={'count':0x0,'rows':[]};Promise[_0x1a57('0xfe')]()[_0x1a57('0x14')](function(){if(!_0x510c0a['query'][_0x1a57('0x2e')]&&!_0x510c0a[_0x1a57('0x43')][_0x1a57('0x17b')]&&!_0x510c0a[_0x1a57('0x43')][_0x1a57('0x17c')])return[];return Promise['resolve']()[_0x1a57('0x14')](function(){var _0x2fbc88=[];if(!_[_0x1a57('0x85')](_0x510c0a[_0x1a57('0x43')][_0x1a57('0x17b')])){_0x2fbc88[_0x1a57('0x40')](db['Team'][_0x1a57('0x41')]({'attributes':['id',_0x1a57('0x32')],'where':{'id':_0x510c0a['query'][_0x1a57('0x17b')]}}));}if(!_[_0x1a57('0x85')](_0x510c0a[_0x1a57('0x43')]['queues'])){_0x2fbc88[_0x1a57('0x40')](db['VoiceQueue']['findAll']({'attributes':['id',_0x1a57('0x32')],'type':_0x1a57('0x17d'),'where':{'id':_0x510c0a[_0x1a57('0x43')]['queues']}}));}return Promise['all'](_0x2fbc88);})[_0x1a57('0x14')](function(_0x5acff9){var _0x134394=_[_0x1a57('0x11f')](_0x5acff9)[_0x1a57('0x2f')](function(_0xecc0e2){return _0xecc0e2['getAgents']({'attributes':['id',_0x1a57('0x32'),_0x1a57('0x60'),_0x1a57('0xa5')],'raw':!![]});});return Promise[_0x1a57('0x4b')](_0x134394);})[_0x1a57('0x14')](function(_0x3fbad8){var _0x432435=_[_0x1a57('0x11f')](_0x3fbad8);if(!_0x510c0a[_0x1a57('0x43')]['filter'])return _0x432435;if(_[_0x1a57('0x85')](_0x432435)){return db['User']['findAll']({'attributes':['id',_0x1a57('0x32'),'internal',_0x1a57('0xa5')],'where':{'role':_0x1a57('0x2b'),'$or':[db['sequelize']['where'](db['sequelize']['fn']('lower',db['sequelize'][_0x1a57('0x17e')](_0x1a57('0x32'))),{'$like':'%'+_0x510c0a[_0x1a57('0x43')][_0x1a57('0x2e')][_0x1a57('0x9f')]()+'%'}),{'internal':{'$like':'%'+_0x510c0a[_0x1a57('0x43')]['filter']+'%'}}]},'raw':!![]});}else{return _(_0x432435)[_0x1a57('0x11f')]()['filter'](function(_0xc8bc43){return _0xc8bc43['name'][_0x1a57('0x9f')]()[_0x1a57('0x3a')](_0x510c0a[_0x1a57('0x43')]['filter'][_0x1a57('0x9f')]())||_0xc8bc43[_0x1a57('0x60')][_0x1a57('0x17f')]()[_0x1a57('0x3a')](_0x510c0a[_0x1a57('0x43')][_0x1a57('0x2e')]);})['value']();}})[_0x1a57('0x14')](function(_0x213c26){var _0x2db299=_0x1a57('0x32');var _0xf4bd63=_0x1a57('0x180');if(_0x510c0a[_0x1a57('0x43')]['sort']){var _0xf4bd63=_0x510c0a[_0x1a57('0x43')][_0x1a57('0xc8')][0x0]==='-'?'desc':'asc';var _0x2db299=_0xf4bd63==='asc'?_0x510c0a['query'][_0x1a57('0xc8')]:_0x510c0a[_0x1a57('0x43')][_0x1a57('0xc8')]['substring'](0x1);}return _(_0x213c26)['uniqBy']('id')[_0x1a57('0x181')]([function(_0x35a957){return _0x2db299==='name'?_0x35a957[_0x2db299][_0x1a57('0x9f')]():_0x35a957[_0x2db299];}],[_0xf4bd63])[_0x1a57('0x2f')](function(_0x5580a3){return _[_0x1a57('0xc9')](_0x5580a3,['id','name',_0x1a57('0x60'),_0x1a57('0xa5')]);})['value']();})[_0x1a57('0x14')](function(_0xaa75ba){return client[_0x1a57('0x13')](_0x1a57('0x2a'),_0x510c0a)[_0x1a57('0x14')](function(_0x1e67aa){if(_0x1e67aa['error'])throw new Error('Unable\x20to\x20retrieve\x20RPC\x20agents\x20(AMI)');var _0x1c19e1=_0x1e67aa[_0x1a57('0x1c')];var _0x487e15=jayson[_0x1a57('0x11')][_0x1a57('0x12')]({'port':0x232c});return _0x487e15['request']('Agents',_0x510c0a)[_0x1a57('0x14')](function(_0x453918){if(_0x453918[_0x1a57('0x1a')])throw new Error(_0x1a57('0x182'));var _0x3c76d0=_0x453918[_0x1a57('0x1c')];return _['merge']({},_0x3c76d0,_0x1c19e1);});})[_0x1a57('0x14')](function(_0x1ee041){return _['map'](_0xaa75ba,function(_0x2228df){var _0x5d0f80=_[_0x1a57('0x31')](_0x1ee041[_0x1a57('0x42')],['id',_0x2228df['id']]);if(!_0x5d0f80||!_0x2228df[_0x1a57('0xa5')]){_0x2228df[_0x1a57('0x1e')]=_0x1a57('0x183');}else if(_0x5d0f80['voicePause']){_0x2228df[_0x1a57('0x1e')]=_0x1a57('0x100');}else{_0x2228df[_0x1a57('0x1e')]=_[_0x1a57('0x3a')]([_0x1a57('0x184'),_0x1a57('0x185'),_0x1a57('0x186'),_0x1a57('0x187'),null,undefined],_0x5d0f80[_0x1a57('0x188')])?'online':_0x1a57('0x189');}return _0x2228df;});});});})['then'](function(_0x522c4c){if(!_0x510c0a['query'][_0x1a57('0xd4')]('nolimit')){_0x11d2a8[_0x1a57('0x23')]=qs[_0x1a57('0x23')](_0x510c0a[_0x1a57('0x43')][_0x1a57('0x23')]||0xa);_0x11d2a8[_0x1a57('0x21')]=qs[_0x1a57('0x21')](_0x510c0a[_0x1a57('0x43')]['offset']);}_0x314541[_0x1a57('0x24')]=_0x522c4c['length'];_0x314541[_0x1a57('0x42')]=_0x11d2a8[_0x1a57('0x23')]?_0x522c4c[_0x1a57('0x18a')](_0x11d2a8[_0x1a57('0x21')],_0x11d2a8[_0x1a57('0x21')]+_0x11d2a8[_0x1a57('0x23')]):_0x522c4c;return _0x314541;})[_0x1a57('0x14')](respondWithFilteredResult(_0xf0e723,_0x11d2a8))[_0x1a57('0x4c')](handleError(_0xf0e723,null));};function get_open_tabs(_0x47b7f7,_0x5a1c2f){var _0x5718b3=_0x47b7f7[_0x1a57('0x18b')](0x0)[_0x1a57('0x18c')]()+_0x47b7f7['slice'](0x1);var _0x3e2f67={'type':db[_0x1a57('0x8a')][_0x1a57('0x18d')]['SELECT'],'raw':!![]};return new BPromise(function(_0x370a5d,_0x1f1a8a){var _0x5b1aeb=squel[_0x1a57('0x18e')]()['field'](_0x1a57('0x18f')+_0x5718b3+_0x1a57('0x190'),'id')[_0x1a57('0x191')](_0x1a57('0x192'))['from'](_0x1a57('0x193')+_0x47b7f7+'_interactions','ui')[_0x1a57('0xca')](_0x1a57('0x194'),_0x5a1c2f['id']);return db[_0x1a57('0x63')][_0x1a57('0x43')](_0x5b1aeb[_0x1a57('0x17f')](),_0x3e2f67)['then'](function(_0x1c486d){_0x5a1c2f[_0x5718b3+'OpenTabs']=_0x1c486d;_0x370a5d(_0x1c486d);})[_0x1a57('0x4c')](function(_0x350925){_0x1f1a8a(_0x350925);});});};
\ No newline at end of file
index 6f4d64c..57ce6e6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd224=['emit','hook','exports','events','../../mysqldb','User','setMaxListeners','save','update'];(function(_0x673bab,_0x3f0afc){var _0xf2199a=function(_0x314b33){while(--_0x314b33){_0x673bab['push'](_0x673bab['shift']());}};_0xf2199a(++_0x3f0afc);}(_0xd224,0x1d7));var _0x4d22=function(_0x55157d,_0x313e59){_0x55157d=_0x55157d-0x0;var _0x312f21=_0xd224[_0x55157d];return _0x312f21;};'use strict';var EventEmitter=require(_0x4d22('0x0'));var User=require(_0x4d22('0x1'))['db'][_0x4d22('0x2')];var UserEvents=new EventEmitter();UserEvents[_0x4d22('0x3')](0x0);var events={'afterCreate':_0x4d22('0x4'),'afterUpdate':_0x4d22('0x5'),'afterDestroy':'remove'};function emitEvent(_0x43a9d6){return function(_0x1a50c4,_0x138d6b,_0x2e7fd6){UserEvents[_0x4d22('0x6')](_0x43a9d6+':'+_0x1a50c4['id'],_0x1a50c4);UserEvents['emit'](_0x43a9d6,_0x1a50c4);_0x2e7fd6(null);};}for(var e in events){if(events['hasOwnProperty'](e)){var event=events[e];User[_0x4d22('0x7')](e,emitEvent(event));}}module[_0x4d22('0x8')]=UserEvents;
\ No newline at end of file
+var _0x434e=['exports','../../mysqldb','User','save','update','hasOwnProperty','hook'];(function(_0x9db5d3,_0x4eea5e){var _0x477a81=function(_0x28e774){while(--_0x28e774){_0x9db5d3['push'](_0x9db5d3['shift']());}};_0x477a81(++_0x4eea5e);}(_0x434e,0xef));var _0xe434=function(_0x197185,_0x251145){_0x197185=_0x197185-0x0;var _0x2c8af1=_0x434e[_0x197185];return _0x2c8af1;};'use strict';var EventEmitter=require('events');var User=require(_0xe434('0x0'))['db'][_0xe434('0x1')];var UserEvents=new EventEmitter();UserEvents['setMaxListeners'](0x0);var events={'afterCreate':_0xe434('0x2'),'afterUpdate':_0xe434('0x3'),'afterDestroy':'remove'};function emitEvent(_0x56db00){return function(_0x160b0d,_0x5e581b,_0x548ba8){UserEvents['emit'](_0x56db00+':'+_0x160b0d['id'],_0x160b0d);UserEvents['emit'](_0x56db00,_0x160b0d);_0x548ba8(null);};}for(var e in events){if(events[_0xe434('0x4')](e)){var event=events[e];User[_0xe434('0x5')](e,emitEvent(event));}}module[_0xe434('0x6')]=UserEvents;
\ No newline at end of file
index 0fc5941..a9346fd 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf56f=['./user.attributes','length','context','from-sip','system','%s%s','prefix','push','merge','Set','format','record','MixMonitor','${UNIQUEID}.%s,a','recordingFormat','Authenticate','password','ChanSpy','SIP/%s,%s','name','options','join','StopMixMonitor','wav','WAV','gsm','CDR(type)=internal','extensionMonitor','includes','_XCALLY_MIXMONITOR_UNIQUEID=${UNIQUEID}','_XCALLY_MIXMONITOR_FORMAT=%s','Dial','Hangup','priority','defaults','VoiceChanSpy','then','internal','concat','exports','models','define','User','users','utf8_bin','undefined','resolve','UserProfile','find','userProfileId','privacyEnabled','updateMd5Password','catch','changed','VoiceExtension','chanspy','destroy','bulkCreate','encryptPassword','function','toString','base64','salt','pbkdf2Sync','sha1','pbkdf2','indexOf','Invalid\x20password','makeSalt',':asterisk:','md5secret','crypto','util','md5'];(function(_0x190c5a,_0x57b92e){var _0x474d45=function(_0x377877){while(--_0x377877){_0x190c5a['push'](_0x190c5a['shift']());}};_0x474d45(++_0x57b92e);}(_0xf56f,0x91));var _0xff56=function(_0x3305de,_0x16582f){_0x3305de=_0x3305de-0x0;var _0x3b5a84=_0xf56f[_0x3305de];return _0x3b5a84;};'use strict';var BPromise=require('bluebird');var crypto=require(_0xff56('0x0'));var util=require(_0xff56('0x1'));var md5=require(_0xff56('0x2'));var _=require('lodash');var attributes=require(_0xff56('0x3'));var authTypes=['google'];var validatePresenceOf=function(_0x5032dd){return _0x5032dd&&_0x5032dd[_0xff56('0x4')];};var getChanSpyApplications=function(_0x3094e1,_0x2cd812,_0x26af8d){var _0x3c6cfb={'context':_0x3094e1[_0xff56('0x5')]||_0xff56('0x6'),'type':_0xff56('0x7'),'isApp':![],'UserId':_0x3094e1['id']};var _0x21b7f3=[];for(var _0x154d1b=0x0,_0x525d07=0x1;_0x154d1b<_0x26af8d[_0xff56('0x4')];_0x154d1b++,_0x525d07=0x1){var _0x4334b9={'exten':util['format'](_0xff56('0x8'),_0x26af8d[_0x154d1b][_0xff56('0x9')],_0x2cd812),'ChanSpyId':_0x26af8d[_0x154d1b]['id']};_0x21b7f3[_0xff56('0xa')](_[_0xff56('0xb')]({'app':_0xff56('0xc'),'appdata':util[_0xff56('0xd')]('CDR(type)=%s','chanspy'),'priority':_0x525d07++},_0x3c6cfb,_0x4334b9));if(_0x26af8d[_0x154d1b][_0xff56('0xe')]){_0x21b7f3[_0xff56('0xa')](_[_0xff56('0xb')]({'app':_0xff56('0xf'),'appdata':util[_0xff56('0xd')](_0xff56('0x10'),_0x26af8d[_0x154d1b][_0xff56('0x11')]),'priority':_0x525d07++},_0x3c6cfb,_0x4334b9));}if(_0x26af8d[_0x154d1b]['auth']){_0x21b7f3[_0xff56('0xa')](_[_0xff56('0xb')]({'app':_0xff56('0x12'),'appdata':_0x26af8d[_0x154d1b][_0xff56('0x13')],'priority':_0x525d07++},_0x3c6cfb,_0x4334b9));}_0x21b7f3[_0xff56('0xa')](_[_0xff56('0xb')]({'app':_0xff56('0x14'),'appdata':util[_0xff56('0xd')](_0xff56('0x15'),_0x3094e1[_0xff56('0x16')],_0x26af8d[_0x154d1b][_0xff56('0x17')]?_0x26af8d[_0x154d1b][_0xff56('0x17')][_0xff56('0x18')](''):''),'priority':_0x525d07++},_0x3c6cfb,_0x4334b9));if(_0x26af8d[_0x154d1b]['record']){_0x21b7f3['push'](_[_0xff56('0xb')]({'app':_0xff56('0x19'),'priority':_0x525d07++},_0x3c6cfb,_0x4334b9));}}return _0x21b7f3;};var getUserApplications=function(_0x37f62e,_0x515ceb){var _0x1b1291=[_0xff56('0x1a'),_0xff56('0x1b'),_0xff56('0x1c')];var _0x456ed2={'context':_0x37f62e[_0xff56('0x5')]||'from-sip','exten':_0x515ceb,'type':_0xff56('0x7'),'isApp':![],'UserId':_0x37f62e['id']};var _0x1219cb=[{'app':'Set','appdata':_0xff56('0x1d')}];if(_0x37f62e[_0xff56('0x1e')]&&_[_0xff56('0x1f')](_0x1b1291,_0x37f62e[_0xff56('0x1e')])){_0x1219cb[_0xff56('0xa')]({'app':'Set','appdata':_0xff56('0x20')});_0x1219cb[_0xff56('0xa')]({'app':'Set','appdata':util[_0xff56('0xd')](_0xff56('0x21'),_0x37f62e[_0xff56('0x1e')])});_0x1219cb['push']({'app':'Dial','appdata':util[_0xff56('0xd')]('SIP/%s,,tTxXU(xcally-mixmonitor-context)',_0x37f62e['name'])});}else{_0x1219cb[_0xff56('0xa')]({'app':_0xff56('0x22'),'appdata':util[_0xff56('0xd')]('SIP/%s,,tTxX',_0x37f62e[_0xff56('0x16')])});}_0x1219cb['push']({'app':_0xff56('0x23')});for(var _0x24e330=0x0;_0x24e330<_0x1219cb[_0xff56('0x4')];_0x24e330++){_0x1219cb[_0x24e330][_0xff56('0x24')]=_0x24e330+0x1;_0x1219cb[_0x24e330]=_[_0xff56('0x25')](_0x1219cb[_0x24e330],_0x456ed2);}return _0x1219cb;};var getChanSpyPromise=function(_0xbf4663,_0x24e60d){return new BPromise(function(_0x3e921e,_0x7fed25){return _0xbf4663[_0xff56('0x26')]['findAll']()[_0xff56('0x27')](function(_0x3ad471){if(_0x3ad471){var _0x483fe8=getChanSpyApplications(_0x24e60d,_0x24e60d[_0xff56('0x28')],_0x3ad471);if(_0x24e60d['internal']!=_0x24e60d['name']){_0x483fe8=_0x483fe8[_0xff56('0x29')](getChanSpyApplications(_0x24e60d,_0x24e60d[_0xff56('0x16')],_0x3ad471));}return _0x3e921e(_0x483fe8);}return _0x3e921e([]);})['catch'](function(_0x117bb3){_0x7fed25(_0x117bb3);});});};module[_0xff56('0x2a')]=function(_0xffc7df,_0x4a2219){var _0x4c1b36=_0xffc7df[_0xff56('0x2b')];return _0xffc7df[_0xff56('0x2c')](_0xff56('0x2d'),attributes,{'tableName':_0xff56('0x2e'),'charset':'utf8','collate':_0xff56('0x2f'),'hooks':{'beforeCreate':function(_0x17cd6a,_0x59a779,_0x24a0a1){var _0xd85d5c=typeof _0x17cd6a['userProfileId']===_0xff56('0x30')?BPromise[_0xff56('0x31')](null):_0x4c1b36[_0xff56('0x32')][_0xff56('0x33')]({'where':{'id':_0x17cd6a[_0xff56('0x34')]}});_0xd85d5c[_0xff56('0x27')](function(_0x39ee21){if(_0x39ee21){_0x17cd6a[_0xff56('0x35')]=_0x39ee21[_0xff56('0x35')];}})[_0xff56('0x27')](function(){_0x17cd6a[_0xff56('0x36')]();_0x17cd6a['updatePassword'](_0x24a0a1);})[_0xff56('0x37')](function(_0x30430b){_0x24a0a1(_0x30430b);});},'beforeUpdate':function(_0x30e735,_0x246948,_0x23f1b4){Promise[_0xff56('0x31')]()['then'](function(){if(_0x30e735[_0xff56('0x38')](_0xff56('0x34'))===![])return;return _0x4c1b36[_0xff56('0x32')][_0xff56('0x33')]({'where':{'id':_0x30e735[_0xff56('0x34')]}})['then'](function(_0x742db1){if(_0x742db1)_0x30e735[_0xff56('0x35')]=_0x742db1[_0xff56('0x35')];return;});})['then'](function(){if(_0x30e735[_0xff56('0x38')](_0xff56('0x13'))){_0x30e735[_0xff56('0x36')]();return _0x30e735['updatePassword'](_0x23f1b4);}_0x23f1b4();})[_0xff56('0x37')](function(_0x3e85e7){_0x23f1b4(_0x3e85e7);});},'afterCreate':function(_0x24c1c7,_0x772026,_0xcfceae){var _0x1463b3=getUserApplications(_0x24c1c7,_0x24c1c7[_0xff56('0x28')]);if(_0x24c1c7[_0xff56('0x28')]!=_0x24c1c7[_0xff56('0x16')]){_0x1463b3=_0x1463b3[_0xff56('0x29')](getUserApplications(_0x24c1c7,_0x24c1c7[_0xff56('0x16')]));}return _0x4c1b36[_0xff56('0x39')]['bulkCreate'](_0x1463b3)[_0xff56('0x27')](function(){if(_0x24c1c7[_0xff56('0x3a')]){return getChanSpyPromise(_0x4c1b36,_0x24c1c7);}})['then'](function(_0x53cf43){if(_0x53cf43&&_0x53cf43[_0xff56('0x4')]){return _0x4c1b36[_0xff56('0x39')]['bulkCreate'](_0x53cf43);}})[_0xff56('0x27')](function(){_0xcfceae();})['catch'](function(_0x1c3984){_0xcfceae(_0x1c3984);});},'afterUpdate':function(_0x4419cb,_0x2bd420,_0x2a67b8){return BPromise['resolve']()[_0xff56('0x27')](function(){if(_0x4419cb[_0xff56('0x38')](_0xff56('0x3a'))||_0x4419cb[_0xff56('0x38')](_0xff56('0x5'))){return _0x4c1b36['VoiceExtension'][_0xff56('0x3b')]({'where':{'UserId':_0x4419cb['id'],'type':_0xff56('0x7'),'ChanSpyId':{'$ne':null}}})[_0xff56('0x27')](function(){if(_0x4419cb[_0xff56('0x3a')]){return getChanSpyPromise(_0x4c1b36,_0x4419cb)[_0xff56('0x27')](function(_0x1710b1){if(_0x1710b1&&_0x1710b1[_0xff56('0x4')]){return _0x4c1b36[_0xff56('0x39')][_0xff56('0x3c')](_0x1710b1);}});}});}})[_0xff56('0x27')](function(){if(_0x4419cb['changed']('extensionMonitor')||_0x4419cb[_0xff56('0x38')]('context')){return _0x4c1b36[_0xff56('0x39')][_0xff56('0x3b')]({'where':{'UserId':_0x4419cb['id'],'type':_0xff56('0x7'),'ChanSpyId':null}})['then'](function(){var _0x2c46ee=getUserApplications(_0x4419cb,_0x4419cb['internal']);if(_0x4419cb['internal']!=_0x4419cb[_0xff56('0x16')]){_0x2c46ee=_0x2c46ee['concat'](getUserApplications(_0x4419cb,_0x4419cb[_0xff56('0x16')]));}return _0x4c1b36[_0xff56('0x39')][_0xff56('0x3c')](_0x2c46ee);});}})['then'](function(){_0x2a67b8();})['catch'](function(_0x225709){_0x2a67b8(_0x225709);});},'afterDestroy':function(_0x20d25e,_0x2b908e){return _0x4c1b36['VoiceExtension']['destroy']({'where':{'UserId':_0x20d25e['id'],'type':_0xff56('0x7')}});}},'instanceMethods':{'authenticate':function(_0x14ea0c,_0x289f63){if(!_0x289f63){return this[_0xff56('0x13')]===this['encryptPassword'](_0x14ea0c);}var _0x4d3044=this;this[_0xff56('0x3d')](_0x14ea0c,function(_0x30c68d,_0x3c0b8d){if(_0x30c68d){_0x289f63(_0x30c68d);}if(_0x4d3044[_0xff56('0x13')]===_0x3c0b8d){_0x289f63(null,!![]);}else{_0x289f63(null,![]);}});},'makeSalt':function(_0x312e34,_0x8dba4c){var _0x49a4a9=0x10;if(typeof arguments[0x0]===_0xff56('0x3e')){_0x8dba4c=arguments[0x0];_0x312e34=_0x49a4a9;}else if(typeof arguments[0x1]===_0xff56('0x3e')){_0x8dba4c=arguments[0x1];}else{throw new Error('Missing\x20Callback');}if(!_0x312e34){_0x312e34=_0x49a4a9;}return crypto['randomBytes'](_0x312e34,function(_0x1cc5b6,_0xa20313){if(_0x1cc5b6){_0x8dba4c(_0x1cc5b6);}return _0x8dba4c(null,_0xa20313[_0xff56('0x3f')](_0xff56('0x40')));});},'encryptPassword':function(_0x3e0677,_0x50ea69){if(!_0x3e0677||!this[_0xff56('0x41')]){return _0x50ea69?_0x50ea69(null):null;}var _0x46554e=0x2710;var _0x117e98=0x40;var _0xe944f4=new Buffer(this[_0xff56('0x41')],_0xff56('0x40'));if(!_0x50ea69){return crypto[_0xff56('0x42')](_0x3e0677,_0xe944f4,_0x46554e,_0x117e98,_0xff56('0x43'))[_0xff56('0x3f')](_0xff56('0x40'));}return crypto[_0xff56('0x44')](_0x3e0677,_0xe944f4,_0x46554e,_0x117e98,_0xff56('0x43'),function(_0x4754ac,_0x303251){if(_0x4754ac){_0x50ea69(_0x4754ac);}return _0x50ea69(null,_0x303251[_0xff56('0x3f')](_0xff56('0x40')));});},'updatePassword':function(_0x5622ce){if(!this['password']){return _0x5622ce(null);}if(!validatePresenceOf(this[_0xff56('0x13')])&&authTypes[_0xff56('0x45')](this['provider'])===-0x1){_0x5622ce(new Error(_0xff56('0x46')));}var _0x3414e5=this;this[_0xff56('0x47')](function(_0x58538f,_0x2b9243){if(_0x58538f){return _0x5622ce(_0x58538f);}_0x3414e5[_0xff56('0x41')]=_0x2b9243;_0x3414e5[_0xff56('0x3d')](_0x3414e5['password'],function(_0x1a6385,_0x48af9b){if(_0x1a6385){_0x5622ce(_0x1a6385);}_0x3414e5[_0xff56('0x13')]=_0x48af9b;_0x5622ce(null);});});},'updateMd5Password':function(){this['md5secret']=md5(this[_0xff56('0x16')]+_0xff56('0x48')+this[_0xff56('0x13')]);return this[_0xff56('0x49')];}}});};
\ No newline at end of file
+var _0xcf4b=['%s%s','push','Set','format','chanspy','record','merge','${UNIQUEID}.%s,a','recordingFormat','auth','password','ChanSpy','name','options','join','StopMixMonitor','wav','WAV','gsm','extensionMonitor','SIP/%s,,tTxXU(xcally-mixmonitor-context)','priority','defaults','then','exports','models','utf8','utf8_bin','userProfileId','undefined','resolve','UserProfile','find','privacyEnabled','updateMd5Password','updatePassword','catch','changed','internal','bulkCreate','VoiceExtension','destroy','encryptPassword','function','randomBytes','toString','salt','pbkdf2Sync','sha1','base64','indexOf',':asterisk:','md5secret','bluebird','crypto','util','md5','./user.attributes','length','context','from-sip','system'];(function(_0x11b3f4,_0x371c17){var _0x47af1d=function(_0x11d38d){while(--_0x11d38d){_0x11b3f4['push'](_0x11b3f4['shift']());}};_0x47af1d(++_0x371c17);}(_0xcf4b,0xef));var _0xbcf4=function(_0x402354,_0x20ff6e){_0x402354=_0x402354-0x0;var _0x4bd91f=_0xcf4b[_0x402354];return _0x4bd91f;};'use strict';var BPromise=require(_0xbcf4('0x0'));var crypto=require(_0xbcf4('0x1'));var util=require(_0xbcf4('0x2'));var md5=require(_0xbcf4('0x3'));var _=require('lodash');var attributes=require(_0xbcf4('0x4'));var authTypes=['google'];var validatePresenceOf=function(_0xf46183){return _0xf46183&&_0xf46183[_0xbcf4('0x5')];};var getChanSpyApplications=function(_0x52e6f3,_0x25224d,_0x23ad40){var _0x27bfc3={'context':_0x52e6f3[_0xbcf4('0x6')]||_0xbcf4('0x7'),'type':_0xbcf4('0x8'),'isApp':![],'UserId':_0x52e6f3['id']};var _0x32f021=[];for(var _0x1081c2=0x0,_0x5db545=0x1;_0x1081c2<_0x23ad40[_0xbcf4('0x5')];_0x1081c2++,_0x5db545=0x1){var _0x602d5c={'exten':util['format'](_0xbcf4('0x9'),_0x23ad40[_0x1081c2]['prefix'],_0x25224d),'ChanSpyId':_0x23ad40[_0x1081c2]['id']};_0x32f021[_0xbcf4('0xa')](_['merge']({'app':_0xbcf4('0xb'),'appdata':util[_0xbcf4('0xc')]('CDR(type)=%s',_0xbcf4('0xd')),'priority':_0x5db545++},_0x27bfc3,_0x602d5c));if(_0x23ad40[_0x1081c2][_0xbcf4('0xe')]){_0x32f021['push'](_[_0xbcf4('0xf')]({'app':'MixMonitor','appdata':util[_0xbcf4('0xc')](_0xbcf4('0x10'),_0x23ad40[_0x1081c2][_0xbcf4('0x11')]),'priority':_0x5db545++},_0x27bfc3,_0x602d5c));}if(_0x23ad40[_0x1081c2][_0xbcf4('0x12')]){_0x32f021[_0xbcf4('0xa')](_['merge']({'app':'Authenticate','appdata':_0x23ad40[_0x1081c2][_0xbcf4('0x13')],'priority':_0x5db545++},_0x27bfc3,_0x602d5c));}_0x32f021[_0xbcf4('0xa')](_['merge']({'app':_0xbcf4('0x14'),'appdata':util[_0xbcf4('0xc')]('SIP/%s,%s',_0x52e6f3[_0xbcf4('0x15')],_0x23ad40[_0x1081c2][_0xbcf4('0x16')]?_0x23ad40[_0x1081c2][_0xbcf4('0x16')][_0xbcf4('0x17')](''):''),'priority':_0x5db545++},_0x27bfc3,_0x602d5c));if(_0x23ad40[_0x1081c2][_0xbcf4('0xe')]){_0x32f021[_0xbcf4('0xa')](_[_0xbcf4('0xf')]({'app':_0xbcf4('0x18'),'priority':_0x5db545++},_0x27bfc3,_0x602d5c));}}return _0x32f021;};var getUserApplications=function(_0x5c84dd,_0xa33b89){var _0x33850b=[_0xbcf4('0x19'),_0xbcf4('0x1a'),_0xbcf4('0x1b')];var _0x2dce4d={'context':_0x5c84dd[_0xbcf4('0x6')]||_0xbcf4('0x7'),'exten':_0xa33b89,'type':_0xbcf4('0x8'),'isApp':![],'UserId':_0x5c84dd['id']};var _0x2af715=[{'app':_0xbcf4('0xb'),'appdata':'CDR(type)=internal'}];if(_0x5c84dd['extensionMonitor']&&_['includes'](_0x33850b,_0x5c84dd[_0xbcf4('0x1c')])){_0x2af715[_0xbcf4('0xa')]({'app':_0xbcf4('0xb'),'appdata':'_XCALLY_MIXMONITOR_UNIQUEID=${UNIQUEID}'});_0x2af715[_0xbcf4('0xa')]({'app':_0xbcf4('0xb'),'appdata':util[_0xbcf4('0xc')]('_XCALLY_MIXMONITOR_FORMAT=%s',_0x5c84dd[_0xbcf4('0x1c')])});_0x2af715['push']({'app':'Dial','appdata':util[_0xbcf4('0xc')](_0xbcf4('0x1d'),_0x5c84dd[_0xbcf4('0x15')])});}else{_0x2af715['push']({'app':'Dial','appdata':util['format']('SIP/%s,,tTxX',_0x5c84dd[_0xbcf4('0x15')])});}_0x2af715['push']({'app':'Hangup'});for(var _0x297fad=0x0;_0x297fad<_0x2af715[_0xbcf4('0x5')];_0x297fad++){_0x2af715[_0x297fad][_0xbcf4('0x1e')]=_0x297fad+0x1;_0x2af715[_0x297fad]=_[_0xbcf4('0x1f')](_0x2af715[_0x297fad],_0x2dce4d);}return _0x2af715;};var getChanSpyPromise=function(_0x2c3043,_0x206e7a){return new BPromise(function(_0x57c131,_0x105d08){return _0x2c3043['VoiceChanSpy']['findAll']()[_0xbcf4('0x20')](function(_0x211334){if(_0x211334){var _0x4eebc7=getChanSpyApplications(_0x206e7a,_0x206e7a['internal'],_0x211334);if(_0x206e7a['internal']!=_0x206e7a['name']){_0x4eebc7=_0x4eebc7['concat'](getChanSpyApplications(_0x206e7a,_0x206e7a[_0xbcf4('0x15')],_0x211334));}return _0x57c131(_0x4eebc7);}return _0x57c131([]);})['catch'](function(_0x20fa45){_0x105d08(_0x20fa45);});});};module[_0xbcf4('0x21')]=function(_0xdbcc27,_0x310553){var _0x4e22c9=_0xdbcc27[_0xbcf4('0x22')];return _0xdbcc27['define']('User',attributes,{'tableName':'users','charset':_0xbcf4('0x23'),'collate':_0xbcf4('0x24'),'hooks':{'beforeCreate':function(_0x4c3e1c,_0x421d77,_0x5eac86){var _0x1aabb9=typeof _0x4c3e1c[_0xbcf4('0x25')]===_0xbcf4('0x26')?BPromise[_0xbcf4('0x27')](null):_0x4e22c9[_0xbcf4('0x28')][_0xbcf4('0x29')]({'where':{'id':_0x4c3e1c[_0xbcf4('0x25')]}});_0x1aabb9['then'](function(_0x1d3ad6){if(_0x1d3ad6){_0x4c3e1c[_0xbcf4('0x2a')]=_0x1d3ad6['privacyEnabled'];}})['then'](function(){_0x4c3e1c[_0xbcf4('0x2b')]();_0x4c3e1c[_0xbcf4('0x2c')](_0x5eac86);})[_0xbcf4('0x2d')](function(_0x366848){_0x5eac86(_0x366848);});},'beforeUpdate':function(_0x126bb9,_0x2a64eb,_0xa4ed7b){Promise['resolve']()['then'](function(){if(_0x126bb9[_0xbcf4('0x2e')]('userProfileId')===![])return;return _0x4e22c9[_0xbcf4('0x28')][_0xbcf4('0x29')]({'where':{'id':_0x126bb9[_0xbcf4('0x25')]}})[_0xbcf4('0x20')](function(_0xfa5dd8){if(_0xfa5dd8)_0x126bb9['privacyEnabled']=_0xfa5dd8['privacyEnabled'];return;});})[_0xbcf4('0x20')](function(){if(_0x126bb9[_0xbcf4('0x2e')](_0xbcf4('0x13'))){_0x126bb9['updateMd5Password']();return _0x126bb9[_0xbcf4('0x2c')](_0xa4ed7b);}_0xa4ed7b();})['catch'](function(_0x26bdb6){_0xa4ed7b(_0x26bdb6);});},'afterCreate':function(_0x3ea65c,_0x2ceb47,_0x4c0aa1){var _0x484f84=getUserApplications(_0x3ea65c,_0x3ea65c[_0xbcf4('0x2f')]);if(_0x3ea65c[_0xbcf4('0x2f')]!=_0x3ea65c['name']){_0x484f84=_0x484f84['concat'](getUserApplications(_0x3ea65c,_0x3ea65c[_0xbcf4('0x15')]));}return _0x4e22c9['VoiceExtension'][_0xbcf4('0x30')](_0x484f84)['then'](function(){if(_0x3ea65c['chanspy']){return getChanSpyPromise(_0x4e22c9,_0x3ea65c);}})[_0xbcf4('0x20')](function(_0x3b4f7c){if(_0x3b4f7c&&_0x3b4f7c[_0xbcf4('0x5')]){return _0x4e22c9['VoiceExtension'][_0xbcf4('0x30')](_0x3b4f7c);}})[_0xbcf4('0x20')](function(){_0x4c0aa1();})['catch'](function(_0x594c94){_0x4c0aa1(_0x594c94);});},'afterUpdate':function(_0xd954e3,_0x1ec1cc,_0x5d557e){return BPromise[_0xbcf4('0x27')]()[_0xbcf4('0x20')](function(){if(_0xd954e3[_0xbcf4('0x2e')](_0xbcf4('0xd'))||_0xd954e3[_0xbcf4('0x2e')](_0xbcf4('0x6'))){return _0x4e22c9[_0xbcf4('0x31')][_0xbcf4('0x32')]({'where':{'UserId':_0xd954e3['id'],'type':_0xbcf4('0x8'),'ChanSpyId':{'$ne':null}}})[_0xbcf4('0x20')](function(){if(_0xd954e3[_0xbcf4('0xd')]){return getChanSpyPromise(_0x4e22c9,_0xd954e3)[_0xbcf4('0x20')](function(_0x3e93b9){if(_0x3e93b9&&_0x3e93b9[_0xbcf4('0x5')]){return _0x4e22c9[_0xbcf4('0x31')][_0xbcf4('0x30')](_0x3e93b9);}});}});}})[_0xbcf4('0x20')](function(){if(_0xd954e3[_0xbcf4('0x2e')](_0xbcf4('0x1c'))||_0xd954e3[_0xbcf4('0x2e')](_0xbcf4('0x6'))){return _0x4e22c9[_0xbcf4('0x31')]['destroy']({'where':{'UserId':_0xd954e3['id'],'type':'system','ChanSpyId':null}})[_0xbcf4('0x20')](function(){var _0xc38544=getUserApplications(_0xd954e3,_0xd954e3[_0xbcf4('0x2f')]);if(_0xd954e3[_0xbcf4('0x2f')]!=_0xd954e3['name']){_0xc38544=_0xc38544['concat'](getUserApplications(_0xd954e3,_0xd954e3[_0xbcf4('0x15')]));}return _0x4e22c9['VoiceExtension'][_0xbcf4('0x30')](_0xc38544);});}})['then'](function(){_0x5d557e();})[_0xbcf4('0x2d')](function(_0x3544d1){_0x5d557e(_0x3544d1);});},'afterDestroy':function(_0xc98a83,_0x205f14){return _0x4e22c9[_0xbcf4('0x31')][_0xbcf4('0x32')]({'where':{'UserId':_0xc98a83['id'],'type':'system'}});}},'instanceMethods':{'authenticate':function(_0x406d05,_0x1dce08){if(!_0x1dce08){return this[_0xbcf4('0x13')]===this[_0xbcf4('0x33')](_0x406d05);}var _0x303275=this;this['encryptPassword'](_0x406d05,function(_0x2afdec,_0x38d6cf){if(_0x2afdec){_0x1dce08(_0x2afdec);}if(_0x303275['password']===_0x38d6cf){_0x1dce08(null,!![]);}else{_0x1dce08(null,![]);}});},'makeSalt':function(_0x1ce056,_0x42b850){var _0x7763c7=0x10;if(typeof arguments[0x0]===_0xbcf4('0x34')){_0x42b850=arguments[0x0];_0x1ce056=_0x7763c7;}else if(typeof arguments[0x1]===_0xbcf4('0x34')){_0x42b850=arguments[0x1];}else{throw new Error('Missing\x20Callback');}if(!_0x1ce056){_0x1ce056=_0x7763c7;}return crypto[_0xbcf4('0x35')](_0x1ce056,function(_0x39b289,_0x558597){if(_0x39b289){_0x42b850(_0x39b289);}return _0x42b850(null,_0x558597[_0xbcf4('0x36')]('base64'));});},'encryptPassword':function(_0x4c0320,_0x2daeed){if(!_0x4c0320||!this[_0xbcf4('0x37')]){return _0x2daeed?_0x2daeed(null):null;}var _0x1eb9b7=0x2710;var _0x28888f=0x40;var _0x21979a=new Buffer(this['salt'],'base64');if(!_0x2daeed){return crypto[_0xbcf4('0x38')](_0x4c0320,_0x21979a,_0x1eb9b7,_0x28888f,_0xbcf4('0x39'))['toString'](_0xbcf4('0x3a'));}return crypto['pbkdf2'](_0x4c0320,_0x21979a,_0x1eb9b7,_0x28888f,_0xbcf4('0x39'),function(_0x47f4fd,_0x177775){if(_0x47f4fd){_0x2daeed(_0x47f4fd);}return _0x2daeed(null,_0x177775[_0xbcf4('0x36')](_0xbcf4('0x3a')));});},'updatePassword':function(_0x5670c7){if(!this[_0xbcf4('0x13')]){return _0x5670c7(null);}if(!validatePresenceOf(this[_0xbcf4('0x13')])&&authTypes[_0xbcf4('0x3b')](this['provider'])===-0x1){_0x5670c7(new Error('Invalid\x20password'));}var _0x5348fa=this;this['makeSalt'](function(_0x3ed8a4,_0x2e818a){if(_0x3ed8a4){return _0x5670c7(_0x3ed8a4);}_0x5348fa[_0xbcf4('0x37')]=_0x2e818a;_0x5348fa[_0xbcf4('0x33')](_0x5348fa[_0xbcf4('0x13')],function(_0x56d360,_0x4da6f9){if(_0x56d360){_0x5670c7(_0x56d360);}_0x5348fa[_0xbcf4('0x13')]=_0x4da6f9;_0x5670c7(null);});});},'updateMd5Password':function(){this['md5secret']=md5(this[_0xbcf4('0x15')]+_0xbcf4('0x3c')+this['password']);return this[_0xbcf4('0x3d')];}}});};
\ No newline at end of file
index 53d1319..962ae22 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x543a=['model','map','debug','ShowUser','find','PauseUser','where','name','role','interface','UserVoiceQueueRt','update','MemberReport','PAUSE','length','format','YYYY-MM-DD\x20HH:mm:ss','updateAttributes','push','isNil','SIP/%s','body','type','DEFAULT\x20PAUSE','internal','bulkCreate','UnpauseUser','findOne','channel','Unknown\x20channel','voice','mail','fax','sms','openchannel','whatsapp','system','set','%s%s','forEach','all','LogoutUser','destroy','LoginUser','mobile','phone','count','agent','../../config/license/util','agents','Maximum\x20login\x20has\x20been\x20reached','upsert','loginInPause','UserVoiceQueue.penalty','getChannels','merge','LOGIN','callysquare','LOGININPAUSE','concat','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/environment','jayson/promise','client','http','redis','./user.socket','register','request','then','info','User,\x20%s,\x20%s','User,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','code','message','result','catch','GetUser','User','findAll','options','raw','attributes','include'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x543a,0x153));var _0xa543=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x543a[_0x3dd15e];return _0x231fd0;};'use strict';var _=require('lodash');var util=require(_0xa543('0x0'));var moment=require(_0xa543('0x1'));var BPromise=require(_0xa543('0x2'));var rs=require(_0xa543('0x3'));var fs=require('fs');var Redis=require(_0xa543('0x4'));var db=require(_0xa543('0x5'))['db'];var utils=require(_0xa543('0x6'));var logger=require('../../config/logger')('rpc');var config=require(_0xa543('0x7'));var jayson=require(_0xa543('0x8'));var client=jayson[_0xa543('0x9')][_0xa543('0xa')]({'port':0x232a});config[_0xa543('0xb')]=_['defaults'](config[_0xa543('0xb')],{'host':'localhost','port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0xa543('0xb')]));require(_0xa543('0xc'))[_0xa543('0xd')](socket);function respondWithRpcPromise(_0x249667,_0x46f216,_0x47ed56){return new BPromise(function(_0x19defa,_0x3af9a5){return client[_0xa543('0xe')](_0x249667,_0x47ed56)[_0xa543('0xf')](function(_0xe6b104){logger[_0xa543('0x10')](_0xa543('0x11'),_0x46f216,'request\x20sent');logger['debug'](_0xa543('0x12'),_0x46f216,_0xa543('0x13'),JSON[_0xa543('0x14')](_0xe6b104));if(_0xe6b104[_0xa543('0x15')]){if(_0xe6b104[_0xa543('0x15')][_0xa543('0x16')]===0x1f4){logger[_0xa543('0x15')](_0xa543('0x11'),_0x46f216,_0xe6b104[_0xa543('0x15')][_0xa543('0x17')]);return _0x3af9a5(_0xe6b104[_0xa543('0x15')][_0xa543('0x17')]);}logger['error'](_0xa543('0x11'),_0x46f216,_0xe6b104[_0xa543('0x15')][_0xa543('0x17')]);return _0x19defa(_0xe6b104['error'][_0xa543('0x17')]);}else{logger[_0xa543('0x10')](_0xa543('0x11'),_0x46f216,_0xa543('0x13'));_0x19defa(_0xe6b104[_0xa543('0x18')][_0xa543('0x17')]);}})[_0xa543('0x19')](function(_0x13c14d){logger[_0xa543('0x15')](_0xa543('0x11'),_0x46f216,_0x13c14d);_0x3af9a5(_0x13c14d);});});}exports[_0xa543('0x1a')]=function(_0x37a7b0){var _0x3fcfa2=this;return new Promise(function(_0x2c0605,_0x45cf42){return db[_0xa543('0x1b')][_0xa543('0x1c')]({'raw':_0x37a7b0[_0xa543('0x1d')]?_0x37a7b0[_0xa543('0x1d')][_0xa543('0x1e')]===undefined?!![]:![]:!![],'where':_0x37a7b0[_0xa543('0x1d')]?_0x37a7b0[_0xa543('0x1d')]['where']||null:null,'attributes':_0x37a7b0['options']?_0x37a7b0[_0xa543('0x1d')][_0xa543('0x1f')]||null:null,'limit':_0x37a7b0[_0xa543('0x1d')]?_0x37a7b0[_0xa543('0x1d')]['limit']||null:null,'include':_0x37a7b0[_0xa543('0x1d')]?_0x37a7b0['options'][_0xa543('0x20')]?_['map'](_0x37a7b0[_0xa543('0x1d')][_0xa543('0x20')],function(_0x475343){return{'model':db[_0x475343[_0xa543('0x21')]],'as':_0x475343['as'],'attributes':_0x475343['attributes'],'include':_0x475343['include']?_['map'](_0x475343['include'],function(_0x593506){return{'model':db[_0x593506[_0xa543('0x21')]],'as':_0x593506['as'],'attributes':_0x593506['attributes'],'include':_0x593506['include']?_[_0xa543('0x22')](_0x593506['include'],function(_0xb7c3b1){return{'model':db[_0xb7c3b1[_0xa543('0x21')]],'as':_0xb7c3b1['as'],'attributes':_0xb7c3b1['attributes']};}):[]};}):[]};}):[]:[]})[_0xa543('0xf')](function(_0x575251){logger[_0xa543('0x10')](_0xa543('0x1a'),_0x37a7b0);logger[_0xa543('0x23')]('GetUser',_0x37a7b0,JSON[_0xa543('0x14')](_0x575251));_0x2c0605(_0x575251);})[_0xa543('0x19')](function(_0x991b4){logger[_0xa543('0x15')](_0xa543('0x1a'),_0x991b4[_0xa543('0x17')],_0x37a7b0);_0x45cf42(_0x3fcfa2['error'](0x1f4,_0x991b4[_0xa543('0x17')]));});});};exports[_0xa543('0x24')]=function(_0x389520){var _0x56d8fb=this;return new Promise(function(_0x4f9506,_0x3b8089){return db['User'][_0xa543('0x25')]({'raw':_0x389520[_0xa543('0x1d')]?_0x389520[_0xa543('0x1d')]['raw']===undefined?!![]:![]:!![],'where':_0x389520['options']?_0x389520[_0xa543('0x1d')]['where']||null:null,'attributes':_0x389520[_0xa543('0x1d')]?_0x389520['options'][_0xa543('0x1f')]||null:null,'include':_0x389520['options']?_0x389520[_0xa543('0x1d')][_0xa543('0x20')]?_[_0xa543('0x22')](_0x389520[_0xa543('0x1d')]['include'],function(_0x2419af){return{'model':db[_0x2419af['model']],'as':_0x2419af['as'],'attributes':_0x2419af[_0xa543('0x1f')],'include':_0x2419af[_0xa543('0x20')]?_[_0xa543('0x22')](_0x2419af[_0xa543('0x20')],function(_0x40670f){return{'model':db[_0x40670f[_0xa543('0x21')]],'as':_0x40670f['as'],'attributes':_0x40670f['attributes'],'include':_0x40670f[_0xa543('0x20')]?_[_0xa543('0x22')](_0x40670f[_0xa543('0x20')],function(_0x40809f){return{'model':db[_0x40809f[_0xa543('0x21')]],'as':_0x40809f['as'],'attributes':_0x40809f[_0xa543('0x1f')]};}):[]};}):[]};}):[]:[]})[_0xa543('0xf')](function(_0x494a0c){logger['info'](_0xa543('0x24'),_0x389520);logger[_0xa543('0x23')](_0xa543('0x24'),_0x389520,JSON[_0xa543('0x14')](_0x494a0c));_0x4f9506(_0x494a0c);})[_0xa543('0x19')](function(_0x185727){logger[_0xa543('0x15')](_0xa543('0x24'),_0x185727[_0xa543('0x17')],_0x389520);_0x3b8089(_0x56d8fb[_0xa543('0x15')](0x1f4,_0x185727[_0xa543('0x17')]));});});};exports[_0xa543('0x26')]=function(_0x173635){var _0x38cadf=this;return new Promise(function(_0x55a8ed,_0x1b9ed3){var _0x24b936;return db[_0xa543('0x1b')][_0xa543('0x25')]({'where':_0x173635['options'][_0xa543('0x27')]||{},'attributes':['id',_0xa543('0x28'),_0xa543('0x29'),'internal',_0xa543('0x2a')]})['then'](function(_0x349f1b){if(_0x349f1b){_0x24b936=_0x349f1b;return db[_0xa543('0x2b')][_0xa543('0x2c')]({'paused':0x1},{'where':{'UserId':_0x24b936['id']},'individualHooks':!![]});}})[_0xa543('0xf')](function(){if(_0x24b936){return db[_0xa543('0x2d')]['findAll']({'where':{'membername':_0x24b936[_0xa543('0x28')],'type':_0xa543('0x2e'),'exitAt':null}});}})['then'](function(_0x27f4f8){if(_0x24b936){if(_0x27f4f8&&_0x27f4f8[_0xa543('0x2f')]){var _0x5dee89=moment()[_0xa543('0x30')](_0xa543('0x31'));for(var _0x1d0bcb=0x0,_0x4e0a01=_0x27f4f8[_0xa543('0x2f')];_0x1d0bcb<_0x4e0a01;_0x1d0bcb++){_0x27f4f8[_0x1d0bcb][_0xa543('0x32')]({'exitAt':_0x5dee89});}}}})[_0xa543('0xf')](function(){if(_0x24b936){var _0x570e14=[];var _0x57b7d4=utils['getChannels']();_0x57b7d4['forEach'](function(_0x164eb9){_0x570e14[_0xa543('0x33')]({'channel':_0x164eb9,'membername':_0x24b936['name'],'interface':_[_0xa543('0x34')](_0x24b936[_0xa543('0x2a')])?util['format'](_0xa543('0x35'),_0x24b936['name']):_0x24b936['interface'],'type':_0xa543('0x2e'),'enterAt':moment()[_0xa543('0x30')](_0xa543('0x31')),'data1':_0x173635[_0xa543('0x36')][_0xa543('0x37')]||_0xa543('0x38'),'role':_0x24b936[_0xa543('0x29')],'internal':_0x24b936[_0xa543('0x39')],'uniqueid':_0x173635['body']['uniqueid']||null});});return db[_0xa543('0x2d')][_0xa543('0x3a')](_0x570e14,{'individualHooks':!![]});}})[_0xa543('0xf')](function(){if(_0x24b936){return _0x24b936[_0xa543('0x2c')]({'voicePause':!![],'mailPause':!![],'chatPause':!![],'faxPause':!![],'smsPause':!![],'openchannelPause':!![],'whatsappPause':!![],'pauseType':_0x173635[_0xa543('0x36')][_0xa543('0x37')]||_0xa543('0x38'),'lastPauseAt':moment()[_0xa543('0x30')](_0xa543('0x31'))});}})[_0xa543('0xf')](function(_0x2aaed4){_0x55a8ed(_0x2aaed4);})[_0xa543('0x19')](function(_0x4ada1e){_0x1b9ed3(_0x38cadf[_0xa543('0x15')](0x1f4,_0x4ada1e[_0xa543('0x17')]));});});};exports[_0xa543('0x3b')]=function(_0x13dcc7){var _0x1db14b=this;return new Promise(function(_0x18b783,_0x4b4295){var _0x4c18a0;return db['User'][_0xa543('0x3c')]({'where':_0x13dcc7['options'][_0xa543('0x27')]||{},'attributes':['id',_0xa543('0x28')]})[_0xa543('0xf')](function(_0x413dee){if(_0x413dee){_0x4c18a0=_0x413dee;if(_0x13dcc7[_0xa543('0x36')]['channel']&&!utils['isValidChannel'](_0x13dcc7[_0xa543('0x36')][_0xa543('0x3d')])){throw new Error(_0xa543('0x3e'));}switch(_0x13dcc7[_0xa543('0x36')][_0xa543('0x3d')]){case _0xa543('0x3f'):return db[_0xa543('0x2b')][_0xa543('0x2c')]({'paused':0x0},{'where':{'UserId':_0x4c18a0['id']}})[_0xa543('0xf')](function(){return db['MemberReport'][_0xa543('0x25')]({'where':{'channel':_0x13dcc7['body'][_0xa543('0x3d')],'membername':_0x4c18a0[_0xa543('0x28')],'type':_0xa543('0x2e'),'exitAt':null}});})[_0xa543('0xf')](function(_0x23fa93){if(_0x23fa93){return _0x23fa93[_0xa543('0x2c')]({'exitAt':moment()[_0xa543('0x30')](_0xa543('0x31')),'data2':'system'},{'individualHooks':!![]});}return null;})[_0xa543('0xf')](function(){return _0x4c18a0['update']({'voicePause':![]});});case _0xa543('0x40'):case'chat':case _0xa543('0x41'):case _0xa543('0x42'):case _0xa543('0x43'):case _0xa543('0x44'):return db[_0xa543('0x2d')][_0xa543('0x25')]({'where':{'channel':_0x13dcc7[_0xa543('0x36')][_0xa543('0x3d')],'membername':_0x4c18a0['name'],'type':'PAUSE','exitAt':null}})['then'](function(_0x2a329e){return _0x2a329e['update']({'exitAt':moment()[_0xa543('0x30')](_0xa543('0x31')),'data2':_0xa543('0x45')},{'individualHooks':!![]});})[_0xa543('0xf')](function(){var _0x25a953={};_[_0xa543('0x46')](_0x25a953,util[_0xa543('0x30')](_0xa543('0x47'),_0x13dcc7[_0xa543('0x36')][_0xa543('0x3d')],'Pause'),![]);return _0x4c18a0[_0xa543('0x2c')](_0x25a953);});default:return db[_0xa543('0x2b')]['update']({'paused':0x0},{'where':{'UserId':_0x4c18a0['id']}})[_0xa543('0xf')](function(){return db[_0xa543('0x2d')][_0xa543('0x1c')]({'where':{'membername':_0x4c18a0['name'],'type':_0xa543('0x2e'),'exitAt':null}});})[_0xa543('0xf')](function(_0x297cbb){var _0x2b80b1=[];_0x297cbb[_0xa543('0x48')](function(_0x5ca180){_0x2b80b1[_0xa543('0x33')](_0x5ca180[_0xa543('0x2c')]({'exitAt':moment()[_0xa543('0x30')](_0xa543('0x31')),'data2':_0xa543('0x45')}));});return BPromise[_0xa543('0x49')](_0x2b80b1);})[_0xa543('0xf')](function(){return _0x4c18a0[_0xa543('0x2c')]({'voicePause':![],'mailPause':![],'chatPause':![],'faxPause':![],'smsPause':![],'openchannelPause':![],'whatsappPause':![]});});}}})[_0xa543('0xf')](function(_0x115b9d){_0x18b783(_0x115b9d);})[_0xa543('0x19')](function(_0x41d7e4){_0x4b4295(_0x1db14b[_0xa543('0x15')](0x1f4,_0x41d7e4[_0xa543('0x17')]));});});};exports[_0xa543('0x4a')]=function(_0x309676){var _0x59b351=this;return new Promise(function(_0x2e71ce,_0x222fec){var _0x349b98;return db['User'][_0xa543('0x3c')]({'where':_0x309676[_0xa543('0x1d')][_0xa543('0x27')]||{},'attributes':['id',_0xa543('0x28')]})['then'](function(_0x8ecc2e){if(_0x8ecc2e){_0x349b98=_0x8ecc2e;return db['UserVoiceQueueRt'][_0xa543('0x4b')]({'where':{'membername':_0x349b98['name']},'individualHooks':!![]});}})[_0xa543('0xf')](function(){if(_0x349b98){return db[_0xa543('0x2d')][_0xa543('0x1c')]({'where':{'membername':_0x349b98[_0xa543('0x28')],'exitAt':null}});}})[_0xa543('0xf')](function(_0x5119c3){if(_0x349b98){if(_0x5119c3&&_0x5119c3['length']){var _0x55e11b=[];_0x5119c3[_0xa543('0x48')](function(_0x5541b4){_0x55e11b['push'](_0x5541b4[_0xa543('0x2c')]({'exitAt':moment()[_0xa543('0x30')](_0xa543('0x31'))}));});return BPromise[_0xa543('0x49')](_0x55e11b);}}})[_0xa543('0xf')](function(){if(_0x349b98){return _0x349b98['update']({'online':![],'voicePause':![],'mailPause':![],'chatPause':![],'faxPause':![],'smsPause':![],'openchannelPause':![]});}})[_0xa543('0xf')](function(_0x4f3982){_0x2e71ce(_0x4f3982);})[_0xa543('0x19')](function(_0x2ccce2){_0x222fec(_0x59b351['error'](0x1f4,_0x2ccce2[_0xa543('0x17')]));});});};exports[_0xa543('0x4c')]=function(_0x29ed8f){var _0x501ee4=this;return new Promise(function(_0x3c5624,_0x511b19){var _0x809887;var _0x303125;var _0x2be10f;var _0x24f484;return db[_0xa543('0x1b')]['findOne']({'where':_0x29ed8f[_0xa543('0x1d')][_0xa543('0x27')]||{},'attributes':['id',_0xa543('0x28'),_0xa543('0x29'),_0xa543('0x4d'),_0xa543('0x4e'),_0xa543('0x39'),'loginInPause',_0xa543('0x2a')]})[_0xa543('0xf')](function(_0xb4e38a){if(_0xb4e38a){_0x809887=_0xb4e38a;_0x24f484=_0x29ed8f[_0xa543('0x36')][_0xa543('0x2a')]?_0x29ed8f['body'][_0xa543('0x2a')]:util[_0xa543('0x30')](_0xa543('0x35'),_0x809887[_0xa543('0x28')]);return db['User'][_0xa543('0x4f')]({'where':{'role':_0xa543('0x50'),'online':!![],'id':{'$ne':_0x809887['id']}}});}})['then'](function(_0x99d611){if(_0x99d611){_0x2be10f=_0x99d611;return require(_0xa543('0x51'))['getLicense']();}})['then'](function(_0x4d63e9){if(_0x4d63e9&&_0x4d63e9['agents']&&_0x2be10f>=_0x4d63e9[_0xa543('0x52')]){throw new Error(_0xa543('0x53'));}})[_0xa543('0xf')](function(){if(_0x809887){return db[_0xa543('0x2b')][_0xa543('0x4b')]({'where':{'membername':_0x809887[_0xa543('0x28')]},'individualHooks':!![]});}})[_0xa543('0xf')](function(){if(_0x809887){return _0x809887['getVoiceQueues']({'raw':!![]});}})[_0xa543('0xf')](function(_0x1dbb9a){if(_0x809887){if(_0x1dbb9a){var _0x24a014=[];_0x303125=_0x1dbb9a;if(_0x303125[_0xa543('0x2f')]){for(var _0x2e41e1=0x0;_0x2e41e1<_0x303125[_0xa543('0x2f')];_0x2e41e1++){_0x24a014[_0xa543('0x33')](db[_0xa543('0x2b')][_0xa543('0x54')]({'membername':_0x809887[_0xa543('0x28')],'UserId':_0x809887['id'],'queue_name':_0x303125[_0x2e41e1][_0xa543('0x28')],'VoiceQueueId':_0x303125[_0x2e41e1]['id'],'interface':_0x24f484,'paused':_0x809887[_0xa543('0x55')]||![],'penalty':_0x303125[_0x2e41e1][_0xa543('0x56')]||0x0}));}return BPromise[_0xa543('0x49')](_0x24a014);}}}})[_0xa543('0xf')](function(){if(_0x809887){return db[_0xa543('0x2d')][_0xa543('0x1c')]({'where':{'membername':_0x809887['name'],'exitAt':null}});}})[_0xa543('0xf')](function(_0x4c732c){if(_0x809887){if(_0x4c732c&&_0x4c732c['length']){var _0x22a238=[];_0x4c732c[_0xa543('0x48')](function(_0x5bcd6d){_0x22a238[_0xa543('0x33')](_0x5bcd6d[_0xa543('0x2c')]({'exitAt':moment()[_0xa543('0x30')]('YYYY-MM-DD\x20HH:mm:ss')}));});return BPromise[_0xa543('0x49')](_0x22a238);}}})['then'](function(_0x5923d3){if(_0x809887){var _0x173561=[];var _0x2daa94=[];var _0x4c0a38=utils[_0xa543('0x57')]();var _0x24e74b={'membername':_0x809887['name'],'interface':_0x24f484,'enterAt':moment()[_0xa543('0x30')](_0xa543('0x31')),'role':_0x809887['role'],'internal':_0x809887[_0xa543('0x39')]};_0x4c0a38[_0xa543('0x48')](function(_0x4c1974){_0x173561['push'](_[_0xa543('0x58')]({'channel':_0x4c1974,'type':_0xa543('0x59'),'data1':_0xa543('0x5a'),'data2':_0x24f484},_0x24e74b));if(_0x809887[_0xa543('0x55')]){_0x2daa94['push'](_['merge']({'channel':_0x4c1974,'type':_0xa543('0x2e'),'data1':_0xa543('0x5b')},_0x24e74b));}});return db[_0xa543('0x2d')][_0xa543('0x3a')](_0x173561[_0xa543('0x5c')](_0x2daa94),{'individualHooks':!![]});}})[_0xa543('0xf')](function(){if(_0x809887){return _0x809887[_0xa543('0x2c')]({'online':!![],'lastLoginAt':moment()[_0xa543('0x30')](_0xa543('0x31')),'voicePause':_0x809887['loginInPause']||![],'mailPause':_0x809887['loginInPause']||![],'chatPause':_0x809887['loginInPause']||![],'faxPause':_0x809887[_0xa543('0x55')]||![],'smsPause':_0x809887[_0xa543('0x55')]||![],'openchannelPause':_0x809887[_0xa543('0x55')]||![],'pauseType':_0x809887['loginInPause']?_0xa543('0x5b'):null,'lastPauseAt':moment()['format'](_0xa543('0x31')),'interface':_0x24f484});}})[_0xa543('0xf')](function(_0x5cf2b9){_0x3c5624(_0x5cf2b9);})[_0xa543('0x19')](function(_0x5b5cd3){_0x511b19(_0x501ee4[_0xa543('0x15')](0x1f4,_0x5b5cd3[_0xa543('0x17')]));});});};
\ No newline at end of file
+var _0x1aff=['find','where','role','internal','interface','UserVoiceQueueRt','update','MemberReport','name','PAUSE','length','YYYY-MM-DD\x20HH:mm:ss','updateAttributes','getChannels','push','isNil','format','SIP/%s','DEFAULT\x20PAUSE','body','uniqueid','bulkCreate','type','UnpauseUser','findOne','channel','isValidChannel','Unknown\x20channel','system','mail','fax','sms','whatsapp','set','Pause','forEach','all','LogoutUser','destroy','phone','count','agent','../../config/license/util','getLicense','agents','Maximum\x20login\x20has\x20been\x20reached','getVoiceQueues','upsert','loginInPause','merge','LOGIN','callysquare','LOGININPAUSE','concat','util','moment','bluebird','randomstring','ioredis','../../config/logger','rpc','../../config/environment','redis','defaults','localhost','socket.io-emitter','./user.socket','info','request\x20sent','debug','User,\x20%s,\x20%s,\x20%s','stringify','error','User,\x20%s,\x20%s','message','GetUser','User','findAll','options','raw','attributes','limit','include','model','map','then','catch','ShowUser'];(function(_0x4f6a9e,_0x5358cc){var _0x31a345=function(_0x26e7c4){while(--_0x26e7c4){_0x4f6a9e['push'](_0x4f6a9e['shift']());}};_0x31a345(++_0x5358cc);}(_0x1aff,0x1ee));var _0xf1af=function(_0x1529e9,_0x336073){_0x1529e9=_0x1529e9-0x0;var _0x2e7b91=_0x1aff[_0x1529e9];return _0x2e7b91;};'use strict';var _=require('lodash');var util=require(_0xf1af('0x0'));var moment=require(_0xf1af('0x1'));var BPromise=require(_0xf1af('0x2'));var rs=require(_0xf1af('0x3'));var fs=require('fs');var Redis=require(_0xf1af('0x4'));var db=require('../../mysqldb')['db'];var utils=require('../../config/utils');var logger=require(_0xf1af('0x5'))(_0xf1af('0x6'));var config=require(_0xf1af('0x7'));var jayson=require('jayson/promise');var client=jayson['client']['http']({'port':0x232a});config[_0xf1af('0x8')]=_[_0xf1af('0x9')](config['redis'],{'host':_0xf1af('0xa'),'port':0x18eb});var socket=require(_0xf1af('0xb'))(new Redis(config[_0xf1af('0x8')]));require(_0xf1af('0xc'))['register'](socket);function respondWithRpcPromise(_0x96214,_0x4d714a,_0x450687){return new BPromise(function(_0xa92686,_0xdd2420){return client['request'](_0x96214,_0x450687)['then'](function(_0xfff3e1){logger[_0xf1af('0xd')]('User,\x20%s,\x20%s',_0x4d714a,_0xf1af('0xe'));logger[_0xf1af('0xf')](_0xf1af('0x10'),_0x4d714a,_0xf1af('0xe'),JSON[_0xf1af('0x11')](_0xfff3e1));if(_0xfff3e1[_0xf1af('0x12')]){if(_0xfff3e1[_0xf1af('0x12')]['code']===0x1f4){logger['error'](_0xf1af('0x13'),_0x4d714a,_0xfff3e1[_0xf1af('0x12')][_0xf1af('0x14')]);return _0xdd2420(_0xfff3e1['error']['message']);}logger['error'](_0xf1af('0x13'),_0x4d714a,_0xfff3e1[_0xf1af('0x12')][_0xf1af('0x14')]);return _0xa92686(_0xfff3e1[_0xf1af('0x12')]['message']);}else{logger[_0xf1af('0xd')](_0xf1af('0x13'),_0x4d714a,'request\x20sent');_0xa92686(_0xfff3e1['result'][_0xf1af('0x14')]);}})['catch'](function(_0x449387){logger[_0xf1af('0x12')](_0xf1af('0x13'),_0x4d714a,_0x449387);_0xdd2420(_0x449387);});});}exports[_0xf1af('0x15')]=function(_0x2b681e){var _0x26233e=this;return new Promise(function(_0x3daa1a,_0x479e4f){return db[_0xf1af('0x16')][_0xf1af('0x17')]({'raw':_0x2b681e[_0xf1af('0x18')]?_0x2b681e[_0xf1af('0x18')][_0xf1af('0x19')]===undefined?!![]:![]:!![],'where':_0x2b681e[_0xf1af('0x18')]?_0x2b681e['options']['where']||null:null,'attributes':_0x2b681e['options']?_0x2b681e[_0xf1af('0x18')][_0xf1af('0x1a')]||null:null,'limit':_0x2b681e[_0xf1af('0x18')]?_0x2b681e[_0xf1af('0x18')][_0xf1af('0x1b')]||null:null,'include':_0x2b681e[_0xf1af('0x18')]?_0x2b681e[_0xf1af('0x18')][_0xf1af('0x1c')]?_['map'](_0x2b681e['options'][_0xf1af('0x1c')],function(_0x52532a){return{'model':db[_0x52532a[_0xf1af('0x1d')]],'as':_0x52532a['as'],'attributes':_0x52532a[_0xf1af('0x1a')],'include':_0x52532a['include']?_[_0xf1af('0x1e')](_0x52532a[_0xf1af('0x1c')],function(_0x223493){return{'model':db[_0x223493[_0xf1af('0x1d')]],'as':_0x223493['as'],'attributes':_0x223493[_0xf1af('0x1a')],'include':_0x223493[_0xf1af('0x1c')]?_[_0xf1af('0x1e')](_0x223493[_0xf1af('0x1c')],function(_0x1ff25b){return{'model':db[_0x1ff25b['model']],'as':_0x1ff25b['as'],'attributes':_0x1ff25b[_0xf1af('0x1a')]};}):[]};}):[]};}):[]:[]})[_0xf1af('0x1f')](function(_0x5ac3ff){logger[_0xf1af('0xd')]('GetUser',_0x2b681e);logger[_0xf1af('0xf')](_0xf1af('0x15'),_0x2b681e,JSON[_0xf1af('0x11')](_0x5ac3ff));_0x3daa1a(_0x5ac3ff);})[_0xf1af('0x20')](function(_0x42ac53){logger[_0xf1af('0x12')](_0xf1af('0x15'),_0x42ac53[_0xf1af('0x14')],_0x2b681e);_0x479e4f(_0x26233e[_0xf1af('0x12')](0x1f4,_0x42ac53[_0xf1af('0x14')]));});});};exports[_0xf1af('0x21')]=function(_0x50f5b4){var _0x445dc2=this;return new Promise(function(_0x24a0db,_0x49d6a1){return db[_0xf1af('0x16')][_0xf1af('0x22')]({'raw':_0x50f5b4[_0xf1af('0x18')]?_0x50f5b4[_0xf1af('0x18')][_0xf1af('0x19')]===undefined?!![]:![]:!![],'where':_0x50f5b4['options']?_0x50f5b4[_0xf1af('0x18')][_0xf1af('0x23')]||null:null,'attributes':_0x50f5b4[_0xf1af('0x18')]?_0x50f5b4[_0xf1af('0x18')][_0xf1af('0x1a')]||null:null,'include':_0x50f5b4['options']?_0x50f5b4[_0xf1af('0x18')][_0xf1af('0x1c')]?_[_0xf1af('0x1e')](_0x50f5b4[_0xf1af('0x18')][_0xf1af('0x1c')],function(_0x34cd54){return{'model':db[_0x34cd54['model']],'as':_0x34cd54['as'],'attributes':_0x34cd54[_0xf1af('0x1a')],'include':_0x34cd54[_0xf1af('0x1c')]?_[_0xf1af('0x1e')](_0x34cd54[_0xf1af('0x1c')],function(_0x47bea6){return{'model':db[_0x47bea6['model']],'as':_0x47bea6['as'],'attributes':_0x47bea6['attributes'],'include':_0x47bea6[_0xf1af('0x1c')]?_['map'](_0x47bea6[_0xf1af('0x1c')],function(_0x9849cc){return{'model':db[_0x9849cc[_0xf1af('0x1d')]],'as':_0x9849cc['as'],'attributes':_0x9849cc['attributes']};}):[]};}):[]};}):[]:[]})[_0xf1af('0x1f')](function(_0x423df0){logger[_0xf1af('0xd')](_0xf1af('0x21'),_0x50f5b4);logger[_0xf1af('0xf')](_0xf1af('0x21'),_0x50f5b4,JSON[_0xf1af('0x11')](_0x423df0));_0x24a0db(_0x423df0);})[_0xf1af('0x20')](function(_0x335ac7){logger[_0xf1af('0x12')](_0xf1af('0x21'),_0x335ac7[_0xf1af('0x14')],_0x50f5b4);_0x49d6a1(_0x445dc2[_0xf1af('0x12')](0x1f4,_0x335ac7['message']));});});};exports['PauseUser']=function(_0x479e4d){var _0x4bb0a6=this;return new Promise(function(_0x474781,_0xca9c80){var _0x8c1fb5;return db[_0xf1af('0x16')][_0xf1af('0x22')]({'where':_0x479e4d[_0xf1af('0x18')][_0xf1af('0x23')]||{},'attributes':['id','name',_0xf1af('0x24'),_0xf1af('0x25'),_0xf1af('0x26')]})[_0xf1af('0x1f')](function(_0x267b39){if(_0x267b39){_0x8c1fb5=_0x267b39;return db[_0xf1af('0x27')][_0xf1af('0x28')]({'paused':0x1},{'where':{'UserId':_0x8c1fb5['id']},'individualHooks':!![]});}})[_0xf1af('0x1f')](function(){if(_0x8c1fb5){return db[_0xf1af('0x29')][_0xf1af('0x17')]({'where':{'membername':_0x8c1fb5[_0xf1af('0x2a')],'type':_0xf1af('0x2b'),'exitAt':null}});}})[_0xf1af('0x1f')](function(_0x127a01){if(_0x8c1fb5){if(_0x127a01&&_0x127a01[_0xf1af('0x2c')]){var _0x10cb50=moment()['format'](_0xf1af('0x2d'));for(var _0x5a99c9=0x0,_0x54338f=_0x127a01['length'];_0x5a99c9<_0x54338f;_0x5a99c9++){_0x127a01[_0x5a99c9][_0xf1af('0x2e')]({'exitAt':_0x10cb50});}}}})['then'](function(){if(_0x8c1fb5){var _0x3ca4a3=[];var _0x493aea=utils[_0xf1af('0x2f')]();_0x493aea['forEach'](function(_0x5cfb15){_0x3ca4a3[_0xf1af('0x30')]({'channel':_0x5cfb15,'membername':_0x8c1fb5[_0xf1af('0x2a')],'interface':_[_0xf1af('0x31')](_0x8c1fb5['interface'])?util[_0xf1af('0x32')](_0xf1af('0x33'),_0x8c1fb5[_0xf1af('0x2a')]):_0x8c1fb5[_0xf1af('0x26')],'type':_0xf1af('0x2b'),'enterAt':moment()[_0xf1af('0x32')]('YYYY-MM-DD\x20HH:mm:ss'),'data1':_0x479e4d['body']['type']||_0xf1af('0x34'),'role':_0x8c1fb5[_0xf1af('0x24')],'internal':_0x8c1fb5[_0xf1af('0x25')],'uniqueid':_0x479e4d[_0xf1af('0x35')][_0xf1af('0x36')]||null});});return db[_0xf1af('0x29')][_0xf1af('0x37')](_0x3ca4a3,{'individualHooks':!![]});}})[_0xf1af('0x1f')](function(){if(_0x8c1fb5){return _0x8c1fb5[_0xf1af('0x28')]({'voicePause':!![],'mailPause':!![],'chatPause':!![],'faxPause':!![],'smsPause':!![],'openchannelPause':!![],'whatsappPause':!![],'pauseType':_0x479e4d[_0xf1af('0x35')][_0xf1af('0x38')]||_0xf1af('0x34'),'lastPauseAt':moment()[_0xf1af('0x32')]('YYYY-MM-DD\x20HH:mm:ss')});}})['then'](function(_0x5e9bcc){_0x474781(_0x5e9bcc);})['catch'](function(_0x3b46c6){_0xca9c80(_0x4bb0a6['error'](0x1f4,_0x3b46c6[_0xf1af('0x14')]));});});};exports[_0xf1af('0x39')]=function(_0x46a710){var _0x13a57d=this;return new Promise(function(_0x4975f8,_0x4c213a){var _0x4f71b9;return db[_0xf1af('0x16')][_0xf1af('0x3a')]({'where':_0x46a710[_0xf1af('0x18')]['where']||{},'attributes':['id',_0xf1af('0x2a')]})[_0xf1af('0x1f')](function(_0x12c209){if(_0x12c209){_0x4f71b9=_0x12c209;if(_0x46a710[_0xf1af('0x35')][_0xf1af('0x3b')]&&!utils[_0xf1af('0x3c')](_0x46a710['body'][_0xf1af('0x3b')])){throw new Error(_0xf1af('0x3d'));}switch(_0x46a710[_0xf1af('0x35')]['channel']){case'voice':return db[_0xf1af('0x27')][_0xf1af('0x28')]({'paused':0x0},{'where':{'UserId':_0x4f71b9['id']}})[_0xf1af('0x1f')](function(){return db[_0xf1af('0x29')][_0xf1af('0x22')]({'where':{'channel':_0x46a710[_0xf1af('0x35')]['channel'],'membername':_0x4f71b9[_0xf1af('0x2a')],'type':_0xf1af('0x2b'),'exitAt':null}});})[_0xf1af('0x1f')](function(_0x5cdf80){if(_0x5cdf80){return _0x5cdf80[_0xf1af('0x28')]({'exitAt':moment()['format'](_0xf1af('0x2d')),'data2':_0xf1af('0x3e')},{'individualHooks':!![]});}return null;})[_0xf1af('0x1f')](function(){return _0x4f71b9[_0xf1af('0x28')]({'voicePause':![]});});case _0xf1af('0x3f'):case'chat':case _0xf1af('0x40'):case _0xf1af('0x41'):case'openchannel':case _0xf1af('0x42'):return db[_0xf1af('0x29')][_0xf1af('0x22')]({'where':{'channel':_0x46a710[_0xf1af('0x35')][_0xf1af('0x3b')],'membername':_0x4f71b9['name'],'type':'PAUSE','exitAt':null}})[_0xf1af('0x1f')](function(_0x57f27a){return _0x57f27a[_0xf1af('0x28')]({'exitAt':moment()[_0xf1af('0x32')](_0xf1af('0x2d')),'data2':_0xf1af('0x3e')},{'individualHooks':!![]});})['then'](function(){var _0x5842ee={};_[_0xf1af('0x43')](_0x5842ee,util[_0xf1af('0x32')]('%s%s',_0x46a710[_0xf1af('0x35')][_0xf1af('0x3b')],_0xf1af('0x44')),![]);return _0x4f71b9[_0xf1af('0x28')](_0x5842ee);});default:return db[_0xf1af('0x27')][_0xf1af('0x28')]({'paused':0x0},{'where':{'UserId':_0x4f71b9['id']}})[_0xf1af('0x1f')](function(){return db[_0xf1af('0x29')][_0xf1af('0x17')]({'where':{'membername':_0x4f71b9[_0xf1af('0x2a')],'type':_0xf1af('0x2b'),'exitAt':null}});})[_0xf1af('0x1f')](function(_0x497ea6){var _0x5b582d=[];_0x497ea6[_0xf1af('0x45')](function(_0x3e3ffe){_0x5b582d[_0xf1af('0x30')](_0x3e3ffe[_0xf1af('0x28')]({'exitAt':moment()[_0xf1af('0x32')](_0xf1af('0x2d')),'data2':'system'}));});return BPromise[_0xf1af('0x46')](_0x5b582d);})['then'](function(){return _0x4f71b9[_0xf1af('0x28')]({'voicePause':![],'mailPause':![],'chatPause':![],'faxPause':![],'smsPause':![],'openchannelPause':![],'whatsappPause':![]});});}}})['then'](function(_0x48c703){_0x4975f8(_0x48c703);})[_0xf1af('0x20')](function(_0x4b207c){_0x4c213a(_0x13a57d[_0xf1af('0x12')](0x1f4,_0x4b207c[_0xf1af('0x14')]));});});};exports[_0xf1af('0x47')]=function(_0x1c49a2){var _0xb2655a=this;return new Promise(function(_0x5c7b37,_0x17d606){var _0x6cde84;return db[_0xf1af('0x16')][_0xf1af('0x3a')]({'where':_0x1c49a2['options']['where']||{},'attributes':['id',_0xf1af('0x2a')]})[_0xf1af('0x1f')](function(_0x5643b2){if(_0x5643b2){_0x6cde84=_0x5643b2;return db['UserVoiceQueueRt'][_0xf1af('0x48')]({'where':{'membername':_0x6cde84[_0xf1af('0x2a')]},'individualHooks':!![]});}})[_0xf1af('0x1f')](function(){if(_0x6cde84){return db[_0xf1af('0x29')][_0xf1af('0x17')]({'where':{'membername':_0x6cde84[_0xf1af('0x2a')],'exitAt':null}});}})[_0xf1af('0x1f')](function(_0x4811f7){if(_0x6cde84){if(_0x4811f7&&_0x4811f7[_0xf1af('0x2c')]){var _0xe2ee4a=[];_0x4811f7[_0xf1af('0x45')](function(_0x1a1f3b){_0xe2ee4a[_0xf1af('0x30')](_0x1a1f3b['update']({'exitAt':moment()[_0xf1af('0x32')](_0xf1af('0x2d'))}));});return BPromise[_0xf1af('0x46')](_0xe2ee4a);}}})[_0xf1af('0x1f')](function(){if(_0x6cde84){return _0x6cde84[_0xf1af('0x28')]({'online':![],'voicePause':![],'mailPause':![],'chatPause':![],'faxPause':![],'smsPause':![],'openchannelPause':![]});}})['then'](function(_0x2ce642){_0x5c7b37(_0x2ce642);})['catch'](function(_0x4d9882){_0x17d606(_0xb2655a[_0xf1af('0x12')](0x1f4,_0x4d9882[_0xf1af('0x14')]));});});};exports['LoginUser']=function(_0x537cee){var _0x7fb5c9=this;return new Promise(function(_0x7d7e4a,_0x1e2ca1){var _0x1f370a;var _0x4add3e;var _0x204943;var _0x30489d;return db[_0xf1af('0x16')]['findOne']({'where':_0x537cee[_0xf1af('0x18')][_0xf1af('0x23')]||{},'attributes':['id',_0xf1af('0x2a'),_0xf1af('0x24'),'mobile',_0xf1af('0x49'),_0xf1af('0x25'),'loginInPause',_0xf1af('0x26')]})['then'](function(_0x26465){if(_0x26465){_0x1f370a=_0x26465;_0x30489d=_0x537cee[_0xf1af('0x35')][_0xf1af('0x26')]?_0x537cee[_0xf1af('0x35')]['interface']:util[_0xf1af('0x32')](_0xf1af('0x33'),_0x1f370a[_0xf1af('0x2a')]);return db[_0xf1af('0x16')][_0xf1af('0x4a')]({'where':{'role':_0xf1af('0x4b'),'online':!![],'id':{'$ne':_0x1f370a['id']}}});}})[_0xf1af('0x1f')](function(_0x195e33){if(_0x195e33){_0x204943=_0x195e33;return require(_0xf1af('0x4c'))[_0xf1af('0x4d')]();}})[_0xf1af('0x1f')](function(_0x452728){if(_0x452728&&_0x452728[_0xf1af('0x4e')]&&_0x204943>=_0x452728[_0xf1af('0x4e')]){throw new Error(_0xf1af('0x4f'));}})[_0xf1af('0x1f')](function(){if(_0x1f370a){return db['UserVoiceQueueRt'][_0xf1af('0x48')]({'where':{'membername':_0x1f370a[_0xf1af('0x2a')]},'individualHooks':!![]});}})[_0xf1af('0x1f')](function(){if(_0x1f370a){return _0x1f370a[_0xf1af('0x50')]({'raw':!![]});}})['then'](function(_0x41cf95){if(_0x1f370a){if(_0x41cf95){var _0x1c34cd=[];_0x4add3e=_0x41cf95;if(_0x4add3e[_0xf1af('0x2c')]){for(var _0x207cb2=0x0;_0x207cb2<_0x4add3e[_0xf1af('0x2c')];_0x207cb2++){_0x1c34cd[_0xf1af('0x30')](db[_0xf1af('0x27')][_0xf1af('0x51')]({'membername':_0x1f370a['name'],'UserId':_0x1f370a['id'],'queue_name':_0x4add3e[_0x207cb2][_0xf1af('0x2a')],'VoiceQueueId':_0x4add3e[_0x207cb2]['id'],'interface':_0x30489d,'paused':_0x1f370a[_0xf1af('0x52')]||![],'penalty':_0x4add3e[_0x207cb2]['UserVoiceQueue.penalty']||0x0}));}return BPromise['all'](_0x1c34cd);}}}})[_0xf1af('0x1f')](function(){if(_0x1f370a){return db[_0xf1af('0x29')][_0xf1af('0x17')]({'where':{'membername':_0x1f370a['name'],'exitAt':null}});}})['then'](function(_0x1430f2){if(_0x1f370a){if(_0x1430f2&&_0x1430f2[_0xf1af('0x2c')]){var _0x777b77=[];_0x1430f2[_0xf1af('0x45')](function(_0x52a539){_0x777b77[_0xf1af('0x30')](_0x52a539[_0xf1af('0x28')]({'exitAt':moment()[_0xf1af('0x32')](_0xf1af('0x2d'))}));});return BPromise[_0xf1af('0x46')](_0x777b77);}}})[_0xf1af('0x1f')](function(_0x4bc98b){if(_0x1f370a){var _0x57b9a3=[];var _0x52f6b4=[];var _0x318c9d=utils[_0xf1af('0x2f')]();var _0x3d5d82={'membername':_0x1f370a['name'],'interface':_0x30489d,'enterAt':moment()[_0xf1af('0x32')](_0xf1af('0x2d')),'role':_0x1f370a[_0xf1af('0x24')],'internal':_0x1f370a[_0xf1af('0x25')]};_0x318c9d[_0xf1af('0x45')](function(_0x2c9555){_0x57b9a3[_0xf1af('0x30')](_[_0xf1af('0x53')]({'channel':_0x2c9555,'type':_0xf1af('0x54'),'data1':_0xf1af('0x55'),'data2':_0x30489d},_0x3d5d82));if(_0x1f370a[_0xf1af('0x52')]){_0x52f6b4[_0xf1af('0x30')](_[_0xf1af('0x53')]({'channel':_0x2c9555,'type':_0xf1af('0x2b'),'data1':_0xf1af('0x56')},_0x3d5d82));}});return db[_0xf1af('0x29')][_0xf1af('0x37')](_0x57b9a3[_0xf1af('0x57')](_0x52f6b4),{'individualHooks':!![]});}})[_0xf1af('0x1f')](function(){if(_0x1f370a){return _0x1f370a['update']({'online':!![],'lastLoginAt':moment()[_0xf1af('0x32')]('YYYY-MM-DD\x20HH:mm:ss'),'voicePause':_0x1f370a[_0xf1af('0x52')]||![],'mailPause':_0x1f370a[_0xf1af('0x52')]||![],'chatPause':_0x1f370a[_0xf1af('0x52')]||![],'faxPause':_0x1f370a[_0xf1af('0x52')]||![],'smsPause':_0x1f370a[_0xf1af('0x52')]||![],'openchannelPause':_0x1f370a[_0xf1af('0x52')]||![],'pauseType':_0x1f370a[_0xf1af('0x52')]?_0xf1af('0x56'):null,'lastPauseAt':moment()[_0xf1af('0x32')](_0xf1af('0x2d')),'interface':_0x30489d});}})[_0xf1af('0x1f')](function(_0x220b99){_0x7d7e4a(_0x220b99);})[_0xf1af('0x20')](function(_0x187b38){_0x1e2ca1(_0x7fb5c9[_0xf1af('0x12')](0x1f4,_0x187b38['message']));});});};
\ No newline at end of file
index 3db8f9e..8219601 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9308=['emit','removeListener','register','length','./user.events','save','remove','update'];(function(_0x42f3a6,_0x45285c){var _0xdf3c33=function(_0x5cc2ec){while(--_0x5cc2ec){_0x42f3a6['push'](_0x42f3a6['shift']());}};_0xdf3c33(++_0x45285c);}(_0x9308,0x13c));var _0x8930=function(_0x2641f9,_0x26715f){_0x2641f9=_0x2641f9-0x0;var _0x585741=_0x9308[_0x2641f9];return _0x585741;};'use strict';var UserEvents=require(_0x8930('0x0'));var events=[_0x8930('0x1'),_0x8930('0x2'),_0x8930('0x3')];function createListener(_0x1b89c5,_0x2a33aa){return function(_0x427d68){_0x2a33aa[_0x8930('0x4')](_0x1b89c5,_0x427d68);};}function removeListener(_0x4ef63c,_0x4c896b){return function(){UserEvents[_0x8930('0x5')](_0x4ef63c,_0x4c896b);};}exports[_0x8930('0x6')]=function(_0x3c6483){for(var _0x4bb4bb=0x0,_0x37bc98=events[_0x8930('0x7')];_0x4bb4bb<_0x37bc98;_0x4bb4bb++){var _0xbd7ec6=events[_0x4bb4bb];var _0x46698f=createListener('user:'+_0xbd7ec6,_0x3c6483);UserEvents['on'](_0xbd7ec6,_0x46698f);}};
\ No newline at end of file
+var _0x4af8=['user:','save','remove','update','emit','removeListener','length'];(function(_0x88cd7b,_0x4c884c){var _0x56fcc8=function(_0x513b3d){while(--_0x513b3d){_0x88cd7b['push'](_0x88cd7b['shift']());}};_0x56fcc8(++_0x4c884c);}(_0x4af8,0xe1));var _0x84af=function(_0x5c351c,_0x2046d8){_0x5c351c=_0x5c351c-0x0;var _0x26f3b3=_0x4af8[_0x5c351c];return _0x26f3b3;};'use strict';var UserEvents=require('./user.events');var events=[_0x84af('0x0'),_0x84af('0x1'),_0x84af('0x2')];function createListener(_0xf9fc7,_0x29f8e1){return function(_0x215387){_0x29f8e1[_0x84af('0x3')](_0xf9fc7,_0x215387);};}function removeListener(_0x4775ea,_0x5bbe9f){return function(){UserEvents[_0x84af('0x4')](_0x4775ea,_0x5bbe9f);};}exports['register']=function(_0x227ff0){for(var _0xf72cf3=0x0,_0x39c831=events[_0x84af('0x5')];_0xf72cf3<_0x39c831;_0xf72cf3++){var _0x2c1837=events[_0xf72cf3];var _0x5d166a=createListener(_0x84af('0x6')+_0x2c1837,_0x227ff0);UserEvents['on'](_0x2c1837,_0x5d166a);}};
\ No newline at end of file
index 52b04e3..cdae3a8 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(_0x1ddefd,_0x8ef8a6){var _0x506aa8=function(_0x278f6d){while(--_0x278f6d){_0x1ddefd['push'](_0x1ddefd['shift']());}};_0x506aa8(++_0x8ef8a6);}(_0xe706,0xa3));var _0x6e70=function(_0x526786,_0x105cbf){_0x526786=_0x526786-0x0;var _0x3a512d=_0xe706[_0x526786];return _0x3a512d;};'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 _0xe706=['../../components/interaction/service','../../config/environment','exports','multer','util','path','express','Router','fs-extra','../../components/auth/service'];(function(_0x47ea78,_0x29dd32){var _0x11c0c7=function(_0x4cf6e8){while(--_0x4cf6e8){_0x47ea78['push'](_0x47ea78['shift']());}};_0x11c0c7(++_0x29dd32);}(_0xe706,0xa3));var _0x6e70=function(_0x543a4e,_0x544f2e){_0x543a4e=_0x543a4e-0x0;var _0x27a3a9=_0xe706[_0x543a4e];return _0x27a3a9;};'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 d9af569..5f62732 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9438=['sequelize','exports','INTEGER'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x9438,0x1cb));var _0x8943=function(_0xa54029,_0x109f17){_0xa54029=_0xa54029-0x0;var _0x46b535=_0x9438[_0xa54029];return _0x46b535;};'use strict';var Sequelize=require(_0x8943('0x0'));module[_0x8943('0x1')]={'penalty':{'type':Sequelize[_0x8943('0x2')],'defaultValue':0x0}};
\ No newline at end of file
+var _0x1061=['sequelize'];(function(_0xf3a8e,_0x332fc9){var _0x36c459=function(_0x2a24fb){while(--_0x2a24fb){_0xf3a8e['push'](_0xf3a8e['shift']());}};_0x36c459(++_0x332fc9);}(_0x1061,0x1b5));var _0x1106=function(_0x52ddce,_0x4acd7f){_0x52ddce=_0x52ddce-0x0;var _0x59cc1d=_0x1061[_0x52ddce];return _0x59cc1d;};'use strict';var Sequelize=require(_0x1106('0x0'));module['exports']={'penalty':{'type':Sequelize['INTEGER'],'defaultValue':0x0}};
\ No newline at end of file
index bda17d0..0bc44ed 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2e10=['util','../../config/logger','api','moment','request-promise','path','rimraf','../../config/environment','exports'];(function(_0x42e887,_0xd64733){var _0x226761=function(_0x51ba62){while(--_0x51ba62){_0x42e887['push'](_0x42e887['shift']());}};_0x226761(++_0xd64733);}(_0x2e10,0xcf));var _0x02e1=function(_0x4192e6,_0x2a88d4){_0x4192e6=_0x4192e6-0x0;var _0x51a85a=_0x2e10[_0x4192e6];return _0x51a85a;};'use strict';var _=require('lodash');var util=require(_0x02e1('0x0'));var logger=require(_0x02e1('0x1'))(_0x02e1('0x2'));var moment=require(_0x02e1('0x3'));var BPromise=require('bluebird');var rp=require(_0x02e1('0x4'));var fs=require('fs');var path=require(_0x02e1('0x5'));var rimraf=require(_0x02e1('0x6'));var config=require(_0x02e1('0x7'));var attributes=require('./userChatQueue.attributes');module[_0x02e1('0x8')]=function(_0x388b9c,_0x102857){return _0x388b9c['define']('UserChatQueue',attributes,{'tableName':'user_has_chat_queues','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x2903=['util','../../config/logger','api','moment','bluebird','request-promise','path','rimraf','../../config/environment','./userChatQueue.attributes','UserChatQueue','user_has_chat_queues','lodash'];(function(_0x321faa,_0x4b1134){var _0x4e26a6=function(_0x2d7474){while(--_0x2d7474){_0x321faa['push'](_0x321faa['shift']());}};_0x4e26a6(++_0x4b1134);}(_0x2903,0x151));var _0x3290=function(_0x5c2e3e,_0x26ecd3){_0x5c2e3e=_0x5c2e3e-0x0;var _0x53f64a=_0x2903[_0x5c2e3e];return _0x53f64a;};'use strict';var _=require(_0x3290('0x0'));var util=require(_0x3290('0x1'));var logger=require(_0x3290('0x2'))(_0x3290('0x3'));var moment=require(_0x3290('0x4'));var BPromise=require(_0x3290('0x5'));var rp=require(_0x3290('0x6'));var fs=require('fs');var path=require(_0x3290('0x7'));var rimraf=require(_0x3290('0x8'));var config=require(_0x3290('0x9'));var attributes=require(_0x3290('0xa'));module['exports']=function(_0xa82c3c,_0x2b795e){return _0xa82c3c['define'](_0x3290('0xb'),attributes,{'tableName':_0x3290('0xc'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 560ac2f..8315e81 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1b6d=['rpc','../../config/environment','jayson/promise','client','http','request','then','info','UserChatQueue,\x20%s,\x20%s','request\x20sent','debug','UserChatQueue,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','lodash','util','moment','bluebird','ioredis','../../mysqldb','../../config/utils','../../config/logger'];(function(_0x4ccd32,_0x3b11c9){var _0x30b693=function(_0x1b816f){while(--_0x1b816f){_0x4ccd32['push'](_0x4ccd32['shift']());}};_0x30b693(++_0x3b11c9);}(_0x1b6d,0x8e));var _0xd1b6=function(_0x2c91e9,_0x2fb965){_0x2c91e9=_0x2c91e9-0x0;var _0x13f0ff=_0x1b6d[_0x2c91e9];return _0x13f0ff;};'use strict';var _=require(_0xd1b6('0x0'));var util=require(_0xd1b6('0x1'));var moment=require(_0xd1b6('0x2'));var BPromise=require(_0xd1b6('0x3'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0xd1b6('0x4'));var db=require(_0xd1b6('0x5'))['db'];var utils=require(_0xd1b6('0x6'));var logger=require(_0xd1b6('0x7'))(_0xd1b6('0x8'));var config=require(_0xd1b6('0x9'));var jayson=require(_0xd1b6('0xa'));var client=jayson[_0xd1b6('0xb')][_0xd1b6('0xc')]({'port':0x232a});function respondWithRpcPromise(_0x42726e,_0x500c4d,_0x537cd9){return new BPromise(function(_0x3f9022,_0x1e13ac){return client[_0xd1b6('0xd')](_0x42726e,_0x537cd9)[_0xd1b6('0xe')](function(_0x474c59){logger[_0xd1b6('0xf')](_0xd1b6('0x10'),_0x500c4d,_0xd1b6('0x11'));logger[_0xd1b6('0x12')](_0xd1b6('0x13'),_0x500c4d,_0xd1b6('0x11'),JSON[_0xd1b6('0x14')](_0x474c59));if(_0x474c59[_0xd1b6('0x15')]){if(_0x474c59[_0xd1b6('0x15')][_0xd1b6('0x16')]===0x1f4){logger[_0xd1b6('0x15')](_0xd1b6('0x10'),_0x500c4d,_0x474c59[_0xd1b6('0x15')][_0xd1b6('0x17')]);return _0x1e13ac(_0x474c59[_0xd1b6('0x15')]['message']);}logger['error']('UserChatQueue,\x20%s,\x20%s',_0x500c4d,_0x474c59[_0xd1b6('0x15')][_0xd1b6('0x17')]);return _0x3f9022(_0x474c59['error'][_0xd1b6('0x17')]);}else{logger['info'](_0xd1b6('0x10'),_0x500c4d,_0xd1b6('0x11'));_0x3f9022(_0x474c59[_0xd1b6('0x18')][_0xd1b6('0x17')]);}})['catch'](function(_0x25b9cb){logger['error'](_0xd1b6('0x10'),_0x500c4d,_0x25b9cb);_0x1e13ac(_0x25b9cb);});});}
\ No newline at end of file
+var _0x6021=['bluebird','randomstring','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','request','info','UserChatQueue,\x20%s,\x20%s','debug','UserChatQueue,\x20%s,\x20%s,\x20%s','request\x20sent','error','code','message','lodash','util','moment'];(function(_0x1e0c5c,_0x5d37c5){var _0x4d07db=function(_0x244282){while(--_0x244282){_0x1e0c5c['push'](_0x1e0c5c['shift']());}};_0x4d07db(++_0x5d37c5);}(_0x6021,0x18d));var _0x1602=function(_0x348878,_0x137f89){_0x348878=_0x348878-0x0;var _0x4066a1=_0x6021[_0x348878];return _0x4066a1;};'use strict';var _=require(_0x1602('0x0'));var util=require(_0x1602('0x1'));var moment=require(_0x1602('0x2'));var BPromise=require(_0x1602('0x3'));var rs=require(_0x1602('0x4'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x1602('0x5'))['db'];var utils=require(_0x1602('0x6'));var logger=require(_0x1602('0x7'))(_0x1602('0x8'));var config=require(_0x1602('0x9'));var jayson=require(_0x1602('0xa'));var client=jayson['client']['http']({'port':0x232a});function respondWithRpcPromise(_0x560329,_0xcc4b1e,_0x5a23d0){return new BPromise(function(_0x12e391,_0x1844eb){return client[_0x1602('0xb')](_0x560329,_0x5a23d0)['then'](function(_0x29a9bb){logger[_0x1602('0xc')](_0x1602('0xd'),_0xcc4b1e,'request\x20sent');logger[_0x1602('0xe')](_0x1602('0xf'),_0xcc4b1e,_0x1602('0x10'),JSON['stringify'](_0x29a9bb));if(_0x29a9bb[_0x1602('0x11')]){if(_0x29a9bb[_0x1602('0x11')][_0x1602('0x12')]===0x1f4){logger[_0x1602('0x11')](_0x1602('0xd'),_0xcc4b1e,_0x29a9bb[_0x1602('0x11')]['message']);return _0x1844eb(_0x29a9bb[_0x1602('0x11')]['message']);}logger['error']('UserChatQueue,\x20%s,\x20%s',_0xcc4b1e,_0x29a9bb[_0x1602('0x11')][_0x1602('0x13')]);return _0x12e391(_0x29a9bb[_0x1602('0x11')]['message']);}else{logger[_0x1602('0xc')](_0x1602('0xd'),_0xcc4b1e,_0x1602('0x10'));_0x12e391(_0x29a9bb['result'][_0x1602('0x13')]);}})['catch'](function(_0x59df2e){logger[_0x1602('0x11')](_0x1602('0xd'),_0xcc4b1e,_0x59df2e);_0x1844eb(_0x59df2e);});});}
\ No newline at end of file
index 17233f5..ede3cb1 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(_0x54ef08,_0x2a1f3b){var _0x2b714f=function(_0x503121){while(--_0x503121){_0x54ef08['push'](_0x54ef08['shift']());}};_0x2b714f(++_0x2a1f3b);}(_0xa9e0,0x123));var _0x0a9e=function(_0x5ddb1c,_0x5ea4df){_0x5ddb1c=_0x5ddb1c-0x0;var _0x354adc=_0xa9e0[_0x5ddb1c];return _0x354adc;};'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 _0x0713=['../../config/environment','exports','path','connect-timeout','express','Router','fs-extra','../../components/interaction/service'];(function(_0x3fe0e1,_0x37f734){var _0x50ab03=function(_0x5b46fa){while(--_0x5b46fa){_0x3fe0e1['push'](_0x3fe0e1['shift']());}};_0x50ab03(++_0x37f734);}(_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 89e8d55..f29242f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x673c=['sequelize','exports','INTEGER'];(function(_0x20a584,_0xe384a5){var _0x4b41a8=function(_0x2127c6){while(--_0x2127c6){_0x20a584['push'](_0x20a584['shift']());}};_0x4b41a8(++_0xe384a5);}(_0x673c,0xde));var _0xc673=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x673c[_0x3dd15e];return _0x231fd0;};'use strict';var Sequelize=require(_0xc673('0x0'));module[_0xc673('0x1')]={'penalty':{'type':Sequelize[_0xc673('0x2')],'defaultValue':0x0},'assigned':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'queue':{'type':Sequelize['STRING']}};
\ No newline at end of file
+var _0x9c58=['STRING','sequelize','exports','INTEGER'];(function(_0x1af649,_0x30562f){var _0x57798c=function(_0xd96c3){while(--_0xd96c3){_0x1af649['push'](_0x1af649['shift']());}};_0x57798c(++_0x30562f);}(_0x9c58,0xf5));var _0x89c5=function(_0x122ef9,_0x451d2a){_0x122ef9=_0x122ef9-0x0;var _0x42fba0=_0x9c58[_0x122ef9];return _0x42fba0;};'use strict';var Sequelize=require(_0x89c5('0x0'));module[_0x89c5('0x1')]={'penalty':{'type':Sequelize[_0x89c5('0x2')],'defaultValue':0x0},'assigned':{'type':Sequelize[_0x89c5('0x2')],'defaultValue':0x0},'queue':{'type':Sequelize[_0x89c5('0x3')]}};
\ No newline at end of file
index 2d98bda..02442ab 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9abc=['rimraf','../../config/environment','./userFaxQueue.attributes','UserFaxQueue','user_has_fax_queues','util','../../config/logger','api','moment','bluebird','request-promise','path'];(function(_0x5ea194,_0x27bc08){var _0x4c20c3=function(_0x386a24){while(--_0x386a24){_0x5ea194['push'](_0x5ea194['shift']());}};_0x4c20c3(++_0x27bc08);}(_0x9abc,0x101));var _0xc9ab=function(_0x23e130,_0x22e464){_0x23e130=_0x23e130-0x0;var _0x345451=_0x9abc[_0x23e130];return _0x345451;};'use strict';var _=require('lodash');var util=require(_0xc9ab('0x0'));var logger=require(_0xc9ab('0x1'))(_0xc9ab('0x2'));var moment=require(_0xc9ab('0x3'));var BPromise=require(_0xc9ab('0x4'));var rp=require(_0xc9ab('0x5'));var fs=require('fs');var path=require(_0xc9ab('0x6'));var rimraf=require(_0xc9ab('0x7'));var config=require(_0xc9ab('0x8'));var attributes=require(_0xc9ab('0x9'));module['exports']=function(_0x153fde,_0x3c83e5){return _0x153fde['define'](_0xc9ab('0xa'),attributes,{'tableName':_0xc9ab('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x650f=['../../config/logger','moment','bluebird','request-promise','path','rimraf','../../config/environment','./userFaxQueue.attributes','exports','UserFaxQueue','user_has_fax_queues','lodash','util'];(function(_0x14add3,_0x13ce8d){var _0x4a174f=function(_0x2b3ed7){while(--_0x2b3ed7){_0x14add3['push'](_0x14add3['shift']());}};_0x4a174f(++_0x13ce8d);}(_0x650f,0x80));var _0xf650=function(_0xb89943,_0x226560){_0xb89943=_0xb89943-0x0;var _0x179c17=_0x650f[_0xb89943];return _0x179c17;};'use strict';var _=require(_0xf650('0x0'));var util=require(_0xf650('0x1'));var logger=require(_0xf650('0x2'))('api');var moment=require(_0xf650('0x3'));var BPromise=require(_0xf650('0x4'));var rp=require(_0xf650('0x5'));var fs=require('fs');var path=require(_0xf650('0x6'));var rimraf=require(_0xf650('0x7'));var config=require(_0xf650('0x8'));var attributes=require(_0xf650('0x9'));module[_0xf650('0xa')]=function(_0x35fa7f,_0x20c949){return _0x35fa7f['define'](_0xf650('0xb'),attributes,{'tableName':_0xf650('0xc'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 1da3ca5..bcb055c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4815=['request\x20sent','debug','UserFaxQueue,\x20%s,\x20%s,\x20%s','error','code','message','result','catch','bluebird','randomstring','../../config/utils','../../config/logger','rpc','../../config/environment','client','http','then','info','UserFaxQueue,\x20%s,\x20%s'];(function(_0x4289cf,_0x306b72){var _0x1888fd=function(_0x2baf88){while(--_0x2baf88){_0x4289cf['push'](_0x4289cf['shift']());}};_0x1888fd(++_0x306b72);}(_0x4815,0x171));var _0x5481=function(_0x498c81,_0x12259a){_0x498c81=_0x498c81-0x0;var _0x38e19d=_0x4815[_0x498c81];return _0x38e19d;};'use strict';var _=require('lodash');var util=require('util');var moment=require('moment');var BPromise=require(_0x5481('0x0'));var rs=require(_0x5481('0x1'));var fs=require('fs');var Redis=require('ioredis');var db=require('../../mysqldb')['db'];var utils=require(_0x5481('0x2'));var logger=require(_0x5481('0x3'))(_0x5481('0x4'));var config=require(_0x5481('0x5'));var jayson=require('jayson/promise');var client=jayson[_0x5481('0x6')][_0x5481('0x7')]({'port':0x232a});function respondWithRpcPromise(_0x56cac5,_0x238f7f,_0x305623){return new BPromise(function(_0x1095db,_0x3158eb){return client['request'](_0x56cac5,_0x305623)[_0x5481('0x8')](function(_0x2c89c7){logger[_0x5481('0x9')](_0x5481('0xa'),_0x238f7f,_0x5481('0xb'));logger[_0x5481('0xc')](_0x5481('0xd'),_0x238f7f,_0x5481('0xb'),JSON['stringify'](_0x2c89c7));if(_0x2c89c7[_0x5481('0xe')]){if(_0x2c89c7[_0x5481('0xe')][_0x5481('0xf')]===0x1f4){logger[_0x5481('0xe')](_0x5481('0xa'),_0x238f7f,_0x2c89c7['error'][_0x5481('0x10')]);return _0x3158eb(_0x2c89c7[_0x5481('0xe')][_0x5481('0x10')]);}logger[_0x5481('0xe')]('UserFaxQueue,\x20%s,\x20%s',_0x238f7f,_0x2c89c7[_0x5481('0xe')][_0x5481('0x10')]);return _0x1095db(_0x2c89c7['error']['message']);}else{logger[_0x5481('0x9')](_0x5481('0xa'),_0x238f7f,_0x5481('0xb'));_0x1095db(_0x2c89c7[_0x5481('0x11')]['message']);}})[_0x5481('0x12')](function(_0x240cae){logger['error']('UserFaxQueue,\x20%s,\x20%s',_0x238f7f,_0x240cae);_0x3158eb(_0x240cae);});});}
\ No newline at end of file
+var _0x7e6f=['ioredis','../../mysqldb','../../config/utils','../../config/environment','jayson/promise','client','http','then','info','UserFaxQueue,\x20%s,\x20%s','debug','UserFaxQueue,\x20%s,\x20%s,\x20%s','request\x20sent','error','message','catch','lodash','util','moment','bluebird','randomstring'];(function(_0x56a5ac,_0x4031a1){var _0x293a88=function(_0x283c7f){while(--_0x283c7f){_0x56a5ac['push'](_0x56a5ac['shift']());}};_0x293a88(++_0x4031a1);}(_0x7e6f,0xa3));var _0xf7e6=function(_0x1b21db,_0x20a970){_0x1b21db=_0x1b21db-0x0;var _0x420d16=_0x7e6f[_0x1b21db];return _0x420d16;};'use strict';var _=require(_0xf7e6('0x0'));var util=require(_0xf7e6('0x1'));var moment=require(_0xf7e6('0x2'));var BPromise=require(_0xf7e6('0x3'));var rs=require(_0xf7e6('0x4'));var fs=require('fs');var Redis=require(_0xf7e6('0x5'));var db=require(_0xf7e6('0x6'))['db'];var utils=require(_0xf7e6('0x7'));var logger=require('../../config/logger')('rpc');var config=require(_0xf7e6('0x8'));var jayson=require(_0xf7e6('0x9'));var client=jayson[_0xf7e6('0xa')][_0xf7e6('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x53de86,_0xa57f22,_0x3a901b){return new BPromise(function(_0x4f0d71,_0x45f75a){return client['request'](_0x53de86,_0x3a901b)[_0xf7e6('0xc')](function(_0x49741e){logger[_0xf7e6('0xd')](_0xf7e6('0xe'),_0xa57f22,'request\x20sent');logger[_0xf7e6('0xf')](_0xf7e6('0x10'),_0xa57f22,_0xf7e6('0x11'),JSON['stringify'](_0x49741e));if(_0x49741e[_0xf7e6('0x12')]){if(_0x49741e['error']['code']===0x1f4){logger[_0xf7e6('0x12')](_0xf7e6('0xe'),_0xa57f22,_0x49741e[_0xf7e6('0x12')][_0xf7e6('0x13')]);return _0x45f75a(_0x49741e['error'][_0xf7e6('0x13')]);}logger['error'](_0xf7e6('0xe'),_0xa57f22,_0x49741e[_0xf7e6('0x12')][_0xf7e6('0x13')]);return _0x4f0d71(_0x49741e[_0xf7e6('0x12')][_0xf7e6('0x13')]);}else{logger['info'](_0xf7e6('0xe'),_0xa57f22,_0xf7e6('0x11'));_0x4f0d71(_0x49741e['result'][_0xf7e6('0x13')]);}})[_0xf7e6('0x14')](function(_0x42afa7){logger[_0xf7e6('0x12')](_0xf7e6('0xe'),_0xa57f22,_0x42afa7);_0x45f75a(_0x42afa7);});});}
\ No newline at end of file
index 09edb76..c94374d 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(_0x423046,_0x80bfc9){var _0x2618a5=function(_0x460f70){while(--_0x460f70){_0x423046['push'](_0x423046['shift']());}};_0x2618a5(++_0x80bfc9);}(_0xe706,0xa3));var _0x6e70=function(_0x2fa488,_0x408715){_0x2fa488=_0x2fa488-0x0;var _0x1ec0a9=_0xe706[_0x2fa488];return _0x1ec0a9;};'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 _0xcb91=['express','Router','../../components/auth/service','../../components/interaction/service','exports','path','connect-timeout'];(function(_0x5c8cbb,_0x55700e){var _0x2b99a7=function(_0x500a50){while(--_0x500a50){_0x5c8cbb['push'](_0x5c8cbb['shift']());}};_0x2b99a7(++_0x55700e);}(_0xcb91,0x1a9));var _0x1cb9=function(_0x35da42,_0x5c2610){_0x35da42=_0x35da42-0x0;var _0x370035=_0xcb91[_0x35da42];return _0x370035;};'use strict';var multer=require('multer');var util=require('util');var path=require(_0x1cb9('0x0'));var timeout=require(_0x1cb9('0x1'));var express=require(_0x1cb9('0x2'));var router=express[_0x1cb9('0x3')]();var fs_extra=require('fs-extra');var auth=require(_0x1cb9('0x4'));var interaction=require(_0x1cb9('0x5'));var config=require('../../config/environment');module[_0x1cb9('0x6')]=router;
\ No newline at end of file
index 4e51f25..9006424 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x864a=['sequelize','INTEGER'];(function(_0x14add3,_0x13ce8d){var _0x4a174f=function(_0x2b3ed7){while(--_0x2b3ed7){_0x14add3['push'](_0x14add3['shift']());}};_0x4a174f(++_0x13ce8d);}(_0x864a,0x172));var _0xa864=function(_0x166f09,_0x3b53b6){_0x166f09=_0x166f09-0x0;var _0x4b2551=_0x864a[_0x166f09];return _0x4b2551;};'use strict';var Sequelize=require(_0xa864('0x0'));module['exports']={'penalty':{'type':Sequelize[_0xa864('0x1')],'defaultValue':0x0}};
\ No newline at end of file
+'use strict';var Sequelize=require('sequelize');module['exports']={'penalty':{'type':Sequelize['INTEGER'],'defaultValue':0x0}};
\ No newline at end of file
index 8baa875..fcb1d6b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc5fa=['../../config/environment','exports','define','UserMailQueue','user_has_mail_queues','util','api','moment','request-promise','rimraf'];(function(_0x368f17,_0x412bf1){var _0x2cf5f1=function(_0x557e74){while(--_0x557e74){_0x368f17['push'](_0x368f17['shift']());}};_0x2cf5f1(++_0x412bf1);}(_0xc5fa,0x1a9));var _0xac5f=function(_0x551f99,_0x5812fc){_0x551f99=_0x551f99-0x0;var _0x368105=_0xc5fa[_0x551f99];return _0x368105;};'use strict';var _=require('lodash');var util=require(_0xac5f('0x0'));var logger=require('../../config/logger')(_0xac5f('0x1'));var moment=require(_0xac5f('0x2'));var BPromise=require('bluebird');var rp=require(_0xac5f('0x3'));var fs=require('fs');var path=require('path');var rimraf=require(_0xac5f('0x4'));var config=require(_0xac5f('0x5'));var attributes=require('./userMailQueue.attributes');module[_0xac5f('0x6')]=function(_0x4aed68,_0xb81e60){return _0x4aed68[_0xac5f('0x7')](_0xac5f('0x8'),attributes,{'tableName':_0xac5f('0x9'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x014d=['rimraf','../../config/environment','exports','define','UserMailQueue','user_has_mail_queues','../../config/logger','api','moment','bluebird','request-promise','path'];(function(_0x1d464b,_0x3ca312){var _0x17deea=function(_0x5bfa10){while(--_0x5bfa10){_0x1d464b['push'](_0x1d464b['shift']());}};_0x17deea(++_0x3ca312);}(_0x014d,0xa2));var _0xd014=function(_0x280861,_0x532b77){_0x280861=_0x280861-0x0;var _0x573dad=_0x014d[_0x280861];return _0x573dad;};'use strict';var _=require('lodash');var util=require('util');var logger=require(_0xd014('0x0'))(_0xd014('0x1'));var moment=require(_0xd014('0x2'));var BPromise=require(_0xd014('0x3'));var rp=require(_0xd014('0x4'));var fs=require('fs');var path=require(_0xd014('0x5'));var rimraf=require(_0xd014('0x6'));var config=require(_0xd014('0x7'));var attributes=require('./userMailQueue.attributes');module[_0xd014('0x8')]=function(_0xb81621,_0x57d481){return _0xb81621[_0xd014('0x9')](_0xd014('0xa'),attributes,{'tableName':_0xd014('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index ea24879..56f075c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6aa7=['result','catch','lodash','moment','bluebird','randomstring','ioredis','../../config/utils','../../config/logger','rpc','client','request','then','info','UserMailQueue,\x20%s,\x20%s','request\x20sent','debug','UserMailQueue,\x20%s,\x20%s,\x20%s','stringify','error','code','message'];(function(_0x528a33,_0x5915dc){var _0x2e0dc8=function(_0x77f7c9){while(--_0x77f7c9){_0x528a33['push'](_0x528a33['shift']());}};_0x2e0dc8(++_0x5915dc);}(_0x6aa7,0x178));var _0x76aa=function(_0x140786,_0x48bcd6){_0x140786=_0x140786-0x0;var _0x1fccac=_0x6aa7[_0x140786];return _0x1fccac;};'use strict';var _=require(_0x76aa('0x0'));var util=require('util');var moment=require(_0x76aa('0x1'));var BPromise=require(_0x76aa('0x2'));var rs=require(_0x76aa('0x3'));var fs=require('fs');var Redis=require(_0x76aa('0x4'));var db=require('../../mysqldb')['db'];var utils=require(_0x76aa('0x5'));var logger=require(_0x76aa('0x6'))(_0x76aa('0x7'));var config=require('../../config/environment');var jayson=require('jayson/promise');var client=jayson[_0x76aa('0x8')]['http']({'port':0x232a});function respondWithRpcPromise(_0x32dee5,_0x36d12b,_0xa9b695){return new BPromise(function(_0x56d6bc,_0x3dae33){return client[_0x76aa('0x9')](_0x32dee5,_0xa9b695)[_0x76aa('0xa')](function(_0x557d69){logger[_0x76aa('0xb')](_0x76aa('0xc'),_0x36d12b,_0x76aa('0xd'));logger[_0x76aa('0xe')](_0x76aa('0xf'),_0x36d12b,_0x76aa('0xd'),JSON[_0x76aa('0x10')](_0x557d69));if(_0x557d69[_0x76aa('0x11')]){if(_0x557d69[_0x76aa('0x11')][_0x76aa('0x12')]===0x1f4){logger['error'](_0x76aa('0xc'),_0x36d12b,_0x557d69['error'][_0x76aa('0x13')]);return _0x3dae33(_0x557d69[_0x76aa('0x11')][_0x76aa('0x13')]);}logger[_0x76aa('0x11')](_0x76aa('0xc'),_0x36d12b,_0x557d69['error']['message']);return _0x56d6bc(_0x557d69[_0x76aa('0x11')]['message']);}else{logger[_0x76aa('0xb')](_0x76aa('0xc'),_0x36d12b,'request\x20sent');_0x56d6bc(_0x557d69[_0x76aa('0x14')]['message']);}})[_0x76aa('0x15')](function(_0x5181d2){logger[_0x76aa('0x11')](_0x76aa('0xc'),_0x36d12b,_0x5181d2);_0x3dae33(_0x5181d2);});});}
\ No newline at end of file
+var _0x3e74=['rpc','../../config/environment','jayson/promise','client','http','request','request\x20sent','debug','error','UserMailQueue,\x20%s,\x20%s','message','info','catch','lodash','moment','bluebird','randomstring','../../config/utils'];(function(_0x1f0a12,_0xe1d970){var _0x371295=function(_0x4d633d){while(--_0x4d633d){_0x1f0a12['push'](_0x1f0a12['shift']());}};_0x371295(++_0xe1d970);}(_0x3e74,0x175));var _0x43e7=function(_0x952ccd,_0x43b7a8){_0x952ccd=_0x952ccd-0x0;var _0x56bb96=_0x3e74[_0x952ccd];return _0x56bb96;};'use strict';var _=require(_0x43e7('0x0'));var util=require('util');var moment=require(_0x43e7('0x1'));var BPromise=require(_0x43e7('0x2'));var rs=require(_0x43e7('0x3'));var fs=require('fs');var Redis=require('ioredis');var db=require('../../mysqldb')['db'];var utils=require(_0x43e7('0x4'));var logger=require('../../config/logger')(_0x43e7('0x5'));var config=require(_0x43e7('0x6'));var jayson=require(_0x43e7('0x7'));var client=jayson[_0x43e7('0x8')][_0x43e7('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x503698,_0x45a0d1,_0x3491d6){return new BPromise(function(_0x2ede2d,_0x8528fc){return client[_0x43e7('0xa')](_0x503698,_0x3491d6)['then'](function(_0x212c6c){logger['info']('UserMailQueue,\x20%s,\x20%s',_0x45a0d1,_0x43e7('0xb'));logger[_0x43e7('0xc')]('UserMailQueue,\x20%s,\x20%s,\x20%s',_0x45a0d1,_0x43e7('0xb'),JSON['stringify'](_0x212c6c));if(_0x212c6c[_0x43e7('0xd')]){if(_0x212c6c[_0x43e7('0xd')]['code']===0x1f4){logger[_0x43e7('0xd')](_0x43e7('0xe'),_0x45a0d1,_0x212c6c[_0x43e7('0xd')][_0x43e7('0xf')]);return _0x8528fc(_0x212c6c['error']['message']);}logger[_0x43e7('0xd')](_0x43e7('0xe'),_0x45a0d1,_0x212c6c[_0x43e7('0xd')]['message']);return _0x2ede2d(_0x212c6c['error'][_0x43e7('0xf')]);}else{logger[_0x43e7('0x10')](_0x43e7('0xe'),_0x45a0d1,_0x43e7('0xb'));_0x2ede2d(_0x212c6c['result']['message']);}})[_0x43e7('0x11')](function(_0x264575){logger[_0x43e7('0xd')]('UserMailQueue,\x20%s,\x20%s',_0x45a0d1,_0x264575);_0x8528fc(_0x264575);});});}
\ No newline at end of file
index 9fdd529..9619223 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb53d=['../../components/interaction/service','../../config/environment','exports','util'];(function(_0x100f05,_0x4a53a1){var _0x497d35=function(_0x28b241){while(--_0x28b241){_0x100f05['push'](_0x100f05['shift']());}};_0x497d35(++_0x4a53a1);}(_0xb53d,0xb3));var _0xdb53=function(_0x3bbbd2,_0x506692){_0x3bbbd2=_0x3bbbd2-0x0;var _0x18ad2e=_0xb53d[_0x3bbbd2];return _0x18ad2e;};'use strict';var multer=require('multer');var util=require(_0xdb53('0x0'));var path=require('path');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(_0xdb53('0x1'));var config=require(_0xdb53('0x2'));var controller=require('./userNotification.controller');router['post']('/',auth['isAuthenticated'](),controller['sendUserNotification']);module[_0xdb53('0x3')]=router;
\ No newline at end of file
+var _0x280d=['../../components/auth/service','../../components/interaction/service','../../config/environment','./userNotification.controller','post','isAuthenticated','sendUserNotification','exports','multer','util','path','express','fs-extra'];(function(_0x18a529,_0x2bea53){var _0x216fb8=function(_0x537d25){while(--_0x537d25){_0x18a529['push'](_0x18a529['shift']());}};_0x216fb8(++_0x2bea53);}(_0x280d,0xbe));var _0xd280=function(_0x26b125,_0x497be4){_0x26b125=_0x26b125-0x0;var _0x2ea8ec=_0x280d[_0x26b125];return _0x2ea8ec;};'use strict';var multer=require(_0xd280('0x0'));var util=require(_0xd280('0x1'));var path=require(_0xd280('0x2'));var timeout=require('connect-timeout');var express=require(_0xd280('0x3'));var router=express['Router']();var fs_extra=require(_0xd280('0x4'));var auth=require(_0xd280('0x5'));var interaction=require(_0xd280('0x6'));var config=require(_0xd280('0x7'));var controller=require(_0xd280('0x8'));router[_0xd280('0x9')]('/',auth[_0xd280('0xa')](),controller[_0xd280('0xb')]);module[_0xd280('0xc')]=router;
\ No newline at end of file
index c1f9892..2eea980 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xcaf6=['exports','TEXT','STRING','sequelize'];(function(_0x3522b5,_0x303246){var _0x21c3ac=function(_0x53d2a4){while(--_0x53d2a4){_0x3522b5['push'](_0x3522b5['shift']());}};_0x21c3ac(++_0x303246);}(_0xcaf6,0x1af));var _0x6caf=function(_0xb24a3e,_0x4a3594){_0xb24a3e=_0xb24a3e-0x0;var _0x4038d7=_0xcaf6[_0xb24a3e];return _0x4038d7;};'use strict';var Sequelize=require(_0x6caf('0x0'));module[_0x6caf('0x1')]={'body':{'type':Sequelize[_0x6caf('0x2')]},'senderName':{'type':Sequelize[_0x6caf('0x3')]},'recipientsId':{'type':Sequelize[_0x6caf('0x2')]},'recipientsDescription':{'type':Sequelize['STRING']},'beep':{'type':Sequelize['BOOLEAN']}};
\ No newline at end of file
+var _0x17c5=['TEXT','exports','STRING'];(function(_0x5d6456,_0x58ecc7){var _0x4d66c1=function(_0x4335e3){while(--_0x4335e3){_0x5d6456['push'](_0x5d6456['shift']());}};_0x4d66c1(++_0x58ecc7);}(_0x17c5,0xe5));var _0x517c=function(_0x41fef3,_0x4c9eff){_0x41fef3=_0x41fef3-0x0;var _0x8ee292=_0x17c5[_0x41fef3];return _0x8ee292;};'use strict';var Sequelize=require('sequelize');module[_0x517c('0x0')]={'body':{'type':Sequelize['TEXT']},'senderName':{'type':Sequelize[_0x517c('0x1')]},'recipientsId':{'type':Sequelize[_0x517c('0x2')]},'recipientsDescription':{'type':Sequelize[_0x517c('0x1')]},'beep':{'type':Sequelize['BOOLEAN']}};
\ No newline at end of file
index bbbb5ec..3a60e51 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x43b3=['senderName','user','fullname','isEmpty','beep','recipientsId','sortBy','sequelize','UserNotification','create','recipientsDescription','forEach','recipient','emit','catch','Template','findOne','html','Invalid\x20\x27TemplateId\x27\x20parameter','render','union','ids','queue','replace','Queue','push','all','flatten','map','eml-format','rimraf','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox','to-csv','lodash','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','redis','localhost','socket.io-emitter','./userNotification.socket','register','sendStatus','status','end','offset','limit','undefined','count','set','json','apply','save','update','then','destroy','error','stack','name','send','sendUserNotification','body','text','hasOwnProperty','ValidationError','Must\x20specify\x20at\x20least\x20one\x20argument\x20for\x20\x27text\x27\x20or\x20\x27TemplateId\x27','TemplateId','view','Missing\x20\x27view\x27\x20parameter','Sequelize','Missing\x20\x27recipients\x27\x20parameter','parse','Invalid\x20\x27recipients\x27\x20object','faxqueue','openchannelqueue','smsqueue','voicequeue','whatsappqueue','team','includes','model','toLowerCase'];(function(_0x4d45c1,_0x2beda1){var _0x244478=function(_0x11304c){while(--_0x11304c){_0x4d45c1['push'](_0x4d45c1['shift']());}};_0x244478(++_0x2beda1);}(_0x43b3,0x82));var _0x343b=function(_0x289951,_0x192af2){_0x289951=_0x289951-0x0;var _0x2a9b09=_0x43b3[_0x289951];return _0x2a9b09;};'use strict';var emlformat=require(_0x343b('0x0'));var rimraf=require(_0x343b('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0x343b('0x2'));var rp=require(_0x343b('0x3'));var moment=require(_0x343b('0x4'));var BPromise=require(_0x343b('0x5'));var Mustache=require(_0x343b('0x6'));var util=require(_0x343b('0x7'));var path=require(_0x343b('0x8'));var sox=require(_0x343b('0x9'));var csv=require(_0x343b('0xa'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x343b('0xb'));var squel=require('squel');var crypto=require(_0x343b('0xc'));var jsforce=require(_0x343b('0xd'));var deskjs=require(_0x343b('0xe'));var toCsv=require(_0x343b('0xa'));var querystring=require('querystring');var Papa=require(_0x343b('0xf'));var Redis=require(_0x343b('0x10'));var authService=require(_0x343b('0x11'));var qs=require(_0x343b('0x12'));var as=require(_0x343b('0x13'));var hardwareService=require(_0x343b('0x14'));var logger=require(_0x343b('0x15'))(_0x343b('0x16'));var utils=require(_0x343b('0x17'));var config=require(_0x343b('0x18'));var licenseUtil=require(_0x343b('0x19'));var db=require(_0x343b('0x1a'))['db'];config['redis']=_['defaults'](config[_0x343b('0x1b')],{'host':_0x343b('0x1c'),'port':0x18eb});var socket=require(_0x343b('0x1d'))(new Redis(config[_0x343b('0x1b')]));require(_0x343b('0x1e'))[_0x343b('0x1f')](socket);function respondWithStatusCode(_0x1b77c2,_0x5a77d6){_0x5a77d6=_0x5a77d6||0xcc;return function(_0x4c1414){if(_0x4c1414){return _0x1b77c2[_0x343b('0x20')](_0x5a77d6);}return _0x1b77c2[_0x343b('0x21')](_0x5a77d6)[_0x343b('0x22')]();};}function respondWithResult(_0x196538,_0x6fca75){_0x6fca75=_0x6fca75||0xc8;return function(_0x13f8e0){if(_0x13f8e0){return _0x196538[_0x343b('0x21')](_0x6fca75)['json'](_0x13f8e0);}};}function respondWithFilteredResult(_0xaa4661,_0x436040){return function(_0x5c41b0){if(_0x5c41b0){var _0x91f674=typeof _0x436040[_0x343b('0x23')]==='undefined'&&typeof _0x436040[_0x343b('0x24')]===_0x343b('0x25');var _0x5391fc=_0x5c41b0['count'];var _0x417a04=_0x91f674?0x0:_0x436040[_0x343b('0x23')];var _0x30fee1=_0x91f674?_0x5c41b0[_0x343b('0x26')]:_0x436040['offset']+_0x436040[_0x343b('0x24')];var _0x26e5ad;if(_0x30fee1>=_0x5391fc){_0x30fee1=_0x5391fc;_0x26e5ad=0xc8;}else{_0x26e5ad=0xce;}_0xaa4661[_0x343b('0x21')](_0x26e5ad);return _0xaa4661[_0x343b('0x27')]('Content-Range',_0x417a04+'-'+_0x30fee1+'/'+_0x5391fc)[_0x343b('0x28')](_0x5c41b0);}return null;};}function patchUpdates(_0x108bdb){return function(_0x2c9de2){try{jsonpatch[_0x343b('0x29')](_0x2c9de2,_0x108bdb,!![]);}catch(_0x470a61){return BPromise['reject'](_0x470a61);}return _0x2c9de2[_0x343b('0x2a')]();};}function saveUpdates(_0x18da96,_0x33a213){return function(_0xb8d9c){if(_0xb8d9c){return _0xb8d9c[_0x343b('0x2b')](_0x18da96)[_0x343b('0x2c')](function(_0x209d54){return _0x209d54;});}return null;};}function removeEntity(_0x302a82,_0x7b6834){return function(_0x2c2421){if(_0x2c2421){return _0x2c2421[_0x343b('0x2d')]()['then'](function(){_0x302a82[_0x343b('0x21')](0xcc)[_0x343b('0x22')]();});}};}function handleEntityNotFound(_0x54ee0f,_0x102b0f){return function(_0x33b6d6){if(!_0x33b6d6){_0x54ee0f[_0x343b('0x20')](0x194);}return _0x33b6d6;};}function handleError(_0x476c62,_0x1e42b0){_0x1e42b0=_0x1e42b0||0x1f4;return function(_0x2b57bd){logger[_0x343b('0x2e')](_0x2b57bd[_0x343b('0x2f')]);if(_0x2b57bd['name']){delete _0x2b57bd[_0x343b('0x30')];}_0x476c62['status'](_0x1e42b0)[_0x343b('0x31')](_0x2b57bd);};}exports[_0x343b('0x32')]=function(_0x5067bd,_0x2058c3,_0x4b056a){if(!_0x5067bd[_0x343b('0x33')]['hasOwnProperty'](_0x343b('0x34'))&&!_0x5067bd[_0x343b('0x33')][_0x343b('0x35')]('TemplateId')){throw new db['Sequelize'][(_0x343b('0x36'))](_0x343b('0x37'));}else{if(_0x5067bd['body'][_0x343b('0x35')](_0x343b('0x38'))&&!_0x5067bd['body'][_0x343b('0x35')](_0x343b('0x39'))){throw new db['Sequelize'][(_0x343b('0x36'))](_0x343b('0x3a'));}if(!_0x5067bd[_0x343b('0x33')][_0x343b('0x35')]('recipients')){throw new db[(_0x343b('0x3b'))][(_0x343b('0x36'))](_0x343b('0x3c'));}else{try{var _0x527d4f=JSON[_0x343b('0x3d')](_0x5067bd[_0x343b('0x33')]['recipients']);}catch(_0x5162c2){logger[_0x343b('0x2e')](_0x5162c2);throw new db['Sequelize'][(_0x343b('0x36'))](_0x343b('0x3e'));}var _0x1c56fc=['chatqueue',_0x343b('0x3f'),'mailqueue',_0x343b('0x40'),_0x343b('0x41'),_0x343b('0x42'),_0x343b('0x43'),_0x343b('0x44'),'user'];if(_['some'](_0x527d4f,function(_0x8da6d9){return!_[_0x343b('0x45')](_0x1c56fc,_0x8da6d9[_0x343b('0x46')][_0x343b('0x47')]());})){throw new db[(_0x343b('0x3b'))][(_0x343b('0x36'))]('Invalid\x20model\x20in\x20\x27recipients\x27\x20object');}}}var _0x1fb154={};_0x1fb154[_0x343b('0x48')]=_0x5067bd[_0x343b('0x33')][_0x343b('0x35')](_0x343b('0x48'))?_0x5067bd[_0x343b('0x33')][_0x343b('0x48')]:_0x5067bd[_0x343b('0x49')][_0x343b('0x4a')];_0x1fb154['recipientsDescription']=_[_0x343b('0x4b')](_0x5067bd[_0x343b('0x33')]['recipientsDescription'])?null:_0x5067bd['body']['recipientsDescription'];_0x1fb154[_0x343b('0x4c')]=_0x5067bd[_0x343b('0x33')][_0x343b('0x4c')]||![];_0x1fb154['SenderId']=_0x5067bd[_0x343b('0x49')]['id'];return getContent(_0x5067bd['body'])[_0x343b('0x2c')](function(_0xa932){_0x1fb154[_0x343b('0x33')]=_0xa932;return getRecipients(_0x527d4f);})[_0x343b('0x2c')](function(_0x5bb3cb){_0x1fb154[_0x343b('0x4d')]=_[_0x343b('0x4e')](_0x5bb3cb)['join'](',');return db[_0x343b('0x4f')]['transaction'](function(_0x518d13){return db[_0x343b('0x50')][_0x343b('0x51')](_0x1fb154,{'raw':!![],'transaction':_0x518d13})[_0x343b('0x2c')](function(_0x3e5dd0){var _0x12b7e9={'sender':_0x1fb154[_0x343b('0x48')],'description':_0x1fb154[_0x343b('0x52')],'content':_0x1fb154[_0x343b('0x33')],'beep':_0x1fb154['beep']};_0x5bb3cb[_0x343b('0x53')](function(_0x53e931){_0x12b7e9[_0x343b('0x54')]=_0x53e931;socket[_0x343b('0x55')]('userNotification:send',_0x12b7e9);});return _0x3e5dd0;});});})[_0x343b('0x2c')](respondWithResult(_0x2058c3,0xc9))[_0x343b('0x56')](handleError(_0x2058c3,null));};function getContent(_0x3f8e28){return new BPromise(function(_0xccc1da,_0x56f3e1){if(_0x3f8e28[_0x343b('0x34')]){_0xccc1da(_0x3f8e28[_0x343b('0x34')]);return;}return db[_0x343b('0x57')][_0x343b('0x58')]({'attributes':[_0x343b('0x59')],'where':{'id':_0x3f8e28[_0x343b('0x38')]},'raw':!![]})[_0x343b('0x2c')](function(_0x330848){if(!_0x330848)throw new db[(_0x343b('0x3b'))]['ValidationError'](_0x343b('0x5a'));var _0x946a01=Mustache[_0x343b('0x5b')](_0x330848['html'],_0x3f8e28[_0x343b('0x39')]);_0xccc1da(_0x946a01);})[_0x343b('0x56')](function(_0xed5a42){_0x56f3e1(_0xed5a42);});});}function getRecipients(_0x2f6355){return new BPromise(function(_0x293f5b,_0xf6bfb4){var _0x25ac17=[];var _0x3e2731=[];_0x2f6355[_0x343b('0x53')](function(_0x1c3d59){var _0xfc8355=_['startCase'](_0x1c3d59[_0x343b('0x46')][_0x343b('0x47')]());if(_0xfc8355==='User'){_0x25ac17=_[_0x343b('0x5c')](_0x25ac17,_0x1c3d59[_0x343b('0x5d')]);}else{if(_[_0x343b('0x45')](_0xfc8355,_0x343b('0x5e')))_0xfc8355=_0xfc8355[_0x343b('0x5f')](_0x343b('0x5e'),_0x343b('0x60'));_0x1c3d59[_0x343b('0x5d')]['forEach'](function(_0x12168c){_0x3e2731[_0x343b('0x61')](getAgents(_0xfc8355,_0x12168c));});}});return BPromise[_0x343b('0x62')](_0x3e2731)[_0x343b('0x2c')](function(_0x59acd9){_0x25ac17=_[_0x343b('0x5c')](_0x25ac17,_[_0x343b('0x63')](_0x59acd9));_0x293f5b(_0x25ac17);})[_0x343b('0x56')](function(_0x36cfa5){_0xf6bfb4(_0x36cfa5);});});}function getAgents(_0x33b5e0,_0x1573bf){return new BPromise(function(_0x1bb02,_0x4a934a){return db[_0x33b5e0][_0x343b('0x58')]({'where':{'id':_0x1573bf}})[_0x343b('0x2c')](function(_0x3af4b0){return _0x3af4b0['getAgents']({'attributes':['id'],'raw':!![]})['then'](function(_0x1b8832){var _0x388321=_[_0x343b('0x64')](_0x1b8832,'id');_0x1bb02(_0x388321);});})[_0x343b('0x56')](function(_0x2cc4ed){_0x4a934a(_0x2cc4ed);});});}
\ No newline at end of file
+var _0x67d8=['forEach','emit','userNotification:send','catch','Template','html','Invalid\x20\x27TemplateId\x27\x20parameter','render','startCase','ids','queue','replace','Queue','push','all','union','flatten','findOne','getAgents','map','rimraf','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox','ejs','lodash','squel','crypto','jsforce','desk.js','to-csv','papaparse','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','redis','./userNotification.socket','register','sendStatus','status','end','json','undefined','limit','offset','count','set','Content-Range','apply','reject','update','then','destroy','error','send','sendUserNotification','hasOwnProperty','text','body','TemplateId','Sequelize','ValidationError','view','Missing\x20\x27view\x27\x20parameter','recipients','Missing\x20\x27recipients\x27\x20parameter','parse','Invalid\x20\x27recipients\x27\x20object','chatqueue','faxqueue','mailqueue','smsqueue','some','includes','model','toLowerCase','senderName','user','fullname','recipientsDescription','isEmpty','beep','SenderId','recipientsId','sortBy','join','sequelize','transaction','UserNotification','create'];(function(_0x16f7f2,_0x5b89fa){var _0x57345a=function(_0xdccd72){while(--_0xdccd72){_0x16f7f2['push'](_0x16f7f2['shift']());}};_0x57345a(++_0x5b89fa);}(_0x67d8,0x1ac));var _0x867d=function(_0x19a68d,_0x15f391){_0x19a68d=_0x19a68d-0x0;var _0x345c26=_0x67d8[_0x19a68d];return _0x345c26;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x867d('0x0'));var zipdir=require('zip-dir');var jsonpatch=require(_0x867d('0x1'));var rp=require(_0x867d('0x2'));var moment=require(_0x867d('0x3'));var BPromise=require(_0x867d('0x4'));var Mustache=require(_0x867d('0x5'));var util=require(_0x867d('0x6'));var path=require(_0x867d('0x7'));var sox=require(_0x867d('0x8'));var csv=require('to-csv');var ejs=require(_0x867d('0x9'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x867d('0xa'));var squel=require(_0x867d('0xb'));var crypto=require(_0x867d('0xc'));var jsforce=require(_0x867d('0xd'));var deskjs=require(_0x867d('0xe'));var toCsv=require(_0x867d('0xf'));var querystring=require('querystring');var Papa=require(_0x867d('0x10'));var Redis=require(_0x867d('0x11'));var authService=require('../../components/auth/service');var qs=require(_0x867d('0x12'));var as=require(_0x867d('0x13'));var hardwareService=require(_0x867d('0x14'));var logger=require(_0x867d('0x15'))(_0x867d('0x16'));var utils=require(_0x867d('0x17'));var config=require(_0x867d('0x18'));var licenseUtil=require(_0x867d('0x19'));var db=require(_0x867d('0x1a'))['db'];config[_0x867d('0x1b')]=_['defaults'](config[_0x867d('0x1b')],{'host':'localhost','port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0x867d('0x1b')]));require(_0x867d('0x1c'))[_0x867d('0x1d')](socket);function respondWithStatusCode(_0x540542,_0x1474e7){_0x1474e7=_0x1474e7||0xcc;return function(_0x58686e){if(_0x58686e){return _0x540542[_0x867d('0x1e')](_0x1474e7);}return _0x540542[_0x867d('0x1f')](_0x1474e7)[_0x867d('0x20')]();};}function respondWithResult(_0x170ff6,_0x33adbb){_0x33adbb=_0x33adbb||0xc8;return function(_0x254d83){if(_0x254d83){return _0x170ff6[_0x867d('0x1f')](_0x33adbb)[_0x867d('0x21')](_0x254d83);}};}function respondWithFilteredResult(_0x5a5838,_0x17e574){return function(_0x4ff732){if(_0x4ff732){var _0x2ff465=typeof _0x17e574['offset']===_0x867d('0x22')&&typeof _0x17e574[_0x867d('0x23')]===_0x867d('0x22');var _0x2c977e=_0x4ff732['count'];var _0x52d4a2=_0x2ff465?0x0:_0x17e574[_0x867d('0x24')];var _0xfac90e=_0x2ff465?_0x4ff732[_0x867d('0x25')]:_0x17e574[_0x867d('0x24')]+_0x17e574[_0x867d('0x23')];var _0x44fd19;if(_0xfac90e>=_0x2c977e){_0xfac90e=_0x2c977e;_0x44fd19=0xc8;}else{_0x44fd19=0xce;}_0x5a5838[_0x867d('0x1f')](_0x44fd19);return _0x5a5838[_0x867d('0x26')](_0x867d('0x27'),_0x52d4a2+'-'+_0xfac90e+'/'+_0x2c977e)['json'](_0x4ff732);}return null;};}function patchUpdates(_0x3cdc01){return function(_0xa6d601){try{jsonpatch[_0x867d('0x28')](_0xa6d601,_0x3cdc01,!![]);}catch(_0xe69d7c){return BPromise[_0x867d('0x29')](_0xe69d7c);}return _0xa6d601['save']();};}function saveUpdates(_0x29e8bb,_0x2cb5f1){return function(_0x1f1ad3){if(_0x1f1ad3){return _0x1f1ad3[_0x867d('0x2a')](_0x29e8bb)[_0x867d('0x2b')](function(_0x4d377c){return _0x4d377c;});}return null;};}function removeEntity(_0x5a8e51,_0x37974f){return function(_0x5e76a5){if(_0x5e76a5){return _0x5e76a5[_0x867d('0x2c')]()['then'](function(){_0x5a8e51[_0x867d('0x1f')](0xcc)[_0x867d('0x20')]();});}};}function handleEntityNotFound(_0x56f592,_0x230419){return function(_0x1425a2){if(!_0x1425a2){_0x56f592[_0x867d('0x1e')](0x194);}return _0x1425a2;};}function handleError(_0x33009f,_0x5b396b){_0x5b396b=_0x5b396b||0x1f4;return function(_0x10b9e9){logger[_0x867d('0x2d')](_0x10b9e9['stack']);if(_0x10b9e9['name']){delete _0x10b9e9['name'];}_0x33009f[_0x867d('0x1f')](_0x5b396b)[_0x867d('0x2e')](_0x10b9e9);};}exports[_0x867d('0x2f')]=function(_0x175e52,_0x1f88c7,_0x47e505){if(!_0x175e52['body'][_0x867d('0x30')](_0x867d('0x31'))&&!_0x175e52[_0x867d('0x32')][_0x867d('0x30')](_0x867d('0x33'))){throw new db[(_0x867d('0x34'))][(_0x867d('0x35'))]('Must\x20specify\x20at\x20least\x20one\x20argument\x20for\x20\x27text\x27\x20or\x20\x27TemplateId\x27');}else{if(_0x175e52[_0x867d('0x32')]['hasOwnProperty'](_0x867d('0x33'))&&!_0x175e52[_0x867d('0x32')][_0x867d('0x30')](_0x867d('0x36'))){throw new db[(_0x867d('0x34'))][(_0x867d('0x35'))](_0x867d('0x37'));}if(!_0x175e52[_0x867d('0x32')][_0x867d('0x30')](_0x867d('0x38'))){throw new db[(_0x867d('0x34'))][(_0x867d('0x35'))](_0x867d('0x39'));}else{try{var _0x364367=JSON[_0x867d('0x3a')](_0x175e52[_0x867d('0x32')]['recipients']);}catch(_0x50a0b0){logger[_0x867d('0x2d')](_0x50a0b0);throw new db[(_0x867d('0x34'))][(_0x867d('0x35'))](_0x867d('0x3b'));}var _0x9cfae6=[_0x867d('0x3c'),_0x867d('0x3d'),_0x867d('0x3e'),'openchannelqueue',_0x867d('0x3f'),'voicequeue','whatsappqueue','team','user'];if(_[_0x867d('0x40')](_0x364367,function(_0x1d0d0e){return!_[_0x867d('0x41')](_0x9cfae6,_0x1d0d0e[_0x867d('0x42')][_0x867d('0x43')]());})){throw new db[(_0x867d('0x34'))][(_0x867d('0x35'))]('Invalid\x20model\x20in\x20\x27recipients\x27\x20object');}}}var _0x1a6e9d={};_0x1a6e9d[_0x867d('0x44')]=_0x175e52[_0x867d('0x32')][_0x867d('0x30')](_0x867d('0x44'))?_0x175e52[_0x867d('0x32')]['senderName']:_0x175e52[_0x867d('0x45')][_0x867d('0x46')];_0x1a6e9d[_0x867d('0x47')]=_[_0x867d('0x48')](_0x175e52[_0x867d('0x32')][_0x867d('0x47')])?null:_0x175e52['body'][_0x867d('0x47')];_0x1a6e9d[_0x867d('0x49')]=_0x175e52[_0x867d('0x32')][_0x867d('0x49')]||![];_0x1a6e9d[_0x867d('0x4a')]=_0x175e52['user']['id'];return getContent(_0x175e52[_0x867d('0x32')])[_0x867d('0x2b')](function(_0x3a47e1){_0x1a6e9d[_0x867d('0x32')]=_0x3a47e1;return getRecipients(_0x364367);})[_0x867d('0x2b')](function(_0x2d15e5){_0x1a6e9d[_0x867d('0x4b')]=_[_0x867d('0x4c')](_0x2d15e5)[_0x867d('0x4d')](',');return db[_0x867d('0x4e')][_0x867d('0x4f')](function(_0x167e31){return db[_0x867d('0x50')][_0x867d('0x51')](_0x1a6e9d,{'raw':!![],'transaction':_0x167e31})[_0x867d('0x2b')](function(_0x467c40){var _0x29607e={'sender':_0x1a6e9d[_0x867d('0x44')],'description':_0x1a6e9d[_0x867d('0x47')],'content':_0x1a6e9d['body'],'beep':_0x1a6e9d[_0x867d('0x49')]};_0x2d15e5[_0x867d('0x52')](function(_0x54f81b){_0x29607e['recipient']=_0x54f81b;socket[_0x867d('0x53')](_0x867d('0x54'),_0x29607e);});return _0x467c40;});});})['then'](respondWithResult(_0x1f88c7,0xc9))[_0x867d('0x55')](handleError(_0x1f88c7,null));};function getContent(_0xadbb51){return new BPromise(function(_0x15fc98,_0x17337e){if(_0xadbb51[_0x867d('0x31')]){_0x15fc98(_0xadbb51[_0x867d('0x31')]);return;}return db[_0x867d('0x56')]['findOne']({'attributes':[_0x867d('0x57')],'where':{'id':_0xadbb51[_0x867d('0x33')]},'raw':!![]})['then'](function(_0x1d6bfd){if(!_0x1d6bfd)throw new db[(_0x867d('0x34'))]['ValidationError'](_0x867d('0x58'));var _0x42f2f5=Mustache[_0x867d('0x59')](_0x1d6bfd[_0x867d('0x57')],_0xadbb51['view']);_0x15fc98(_0x42f2f5);})[_0x867d('0x55')](function(_0x5d1cc1){_0x17337e(_0x5d1cc1);});});}function getRecipients(_0x54569c){return new BPromise(function(_0x7c03f4,_0x570040){var _0x115c51=[];var _0x2aec29=[];_0x54569c[_0x867d('0x52')](function(_0x33f4a2){var _0x40d353=_[_0x867d('0x5a')](_0x33f4a2[_0x867d('0x42')]['toLowerCase']());if(_0x40d353==='User'){_0x115c51=_['union'](_0x115c51,_0x33f4a2[_0x867d('0x5b')]);}else{if(_['includes'](_0x40d353,_0x867d('0x5c')))_0x40d353=_0x40d353[_0x867d('0x5d')](_0x867d('0x5c'),_0x867d('0x5e'));_0x33f4a2['ids'][_0x867d('0x52')](function(_0x1bd7cc){_0x2aec29[_0x867d('0x5f')](getAgents(_0x40d353,_0x1bd7cc));});}});return BPromise[_0x867d('0x60')](_0x2aec29)['then'](function(_0x5a8fe7){_0x115c51=_[_0x867d('0x61')](_0x115c51,_[_0x867d('0x62')](_0x5a8fe7));_0x7c03f4(_0x115c51);})[_0x867d('0x55')](function(_0xe4adfd){_0x570040(_0xe4adfd);});});}function getAgents(_0x4cce30,_0x466173){return new BPromise(function(_0x1f0afb,_0x20f4f2){return db[_0x4cce30][_0x867d('0x63')]({'where':{'id':_0x466173}})['then'](function(_0x15e264){return _0x15e264[_0x867d('0x64')]({'attributes':['id'],'raw':!![]})['then'](function(_0x838982){var _0x5d46f4=_[_0x867d('0x65')](_0x838982,'id');_0x1f0afb(_0x5d46f4);});})[_0x867d('0x55')](function(_0x5a0202){_0x20f4f2(_0x5a0202);});});}
\ No newline at end of file
index 01d979f..31c72b3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1db1=['UserNotification','setMaxListeners','save','emit','hasOwnProperty','hook','exports','events','../../mysqldb'];(function(_0x13f07d,_0x46988a){var _0x379383=function(_0x585010){while(--_0x585010){_0x13f07d['push'](_0x13f07d['shift']());}};_0x379383(++_0x46988a);}(_0x1db1,0x130));var _0x11db=function(_0x104b9f,_0xbcee5){_0x104b9f=_0x104b9f-0x0;var _0x11c30c=_0x1db1[_0x104b9f];return _0x11c30c;};'use strict';var EventEmitter=require(_0x11db('0x0'));var UserNotification=require(_0x11db('0x1'))['db'][_0x11db('0x2')];var UserNotificationEvents=new EventEmitter();UserNotificationEvents[_0x11db('0x3')](0x0);var events={'afterCreate':_0x11db('0x4'),'afterUpdate':'update','afterDestroy':'remove'};function emitEvent(_0x30aea4){return function(_0x5584d7,_0x2985af,_0x498581){UserNotificationEvents[_0x11db('0x5')](_0x30aea4+':'+_0x5584d7['id'],_0x5584d7);UserNotificationEvents[_0x11db('0x5')](_0x30aea4,_0x5584d7);_0x498581(null);};}for(var e in events){if(events[_0x11db('0x6')](e)){var event=events[e];UserNotification[_0x11db('0x7')](e,emitEvent(event));}}module[_0x11db('0x8')]=UserNotificationEvents;
\ No newline at end of file
+var _0x62fc=['hasOwnProperty','hook','exports','../../mysqldb','update','remove','emit'];(function(_0x171b64,_0x1dc8e2){var _0x359757=function(_0x274d6a){while(--_0x274d6a){_0x171b64['push'](_0x171b64['shift']());}};_0x359757(++_0x1dc8e2);}(_0x62fc,0x17d));var _0xc62f=function(_0xb41839,_0xcffb71){_0xb41839=_0xb41839-0x0;var _0x25aa68=_0x62fc[_0xb41839];return _0x25aa68;};'use strict';var EventEmitter=require('events');var UserNotification=require(_0xc62f('0x0'))['db']['UserNotification'];var UserNotificationEvents=new EventEmitter();UserNotificationEvents['setMaxListeners'](0x0);var events={'afterCreate':'save','afterUpdate':_0xc62f('0x1'),'afterDestroy':_0xc62f('0x2')};function emitEvent(_0x421f74){return function(_0x40fd8b,_0x4a0859,_0x289d24){UserNotificationEvents[_0xc62f('0x3')](_0x421f74+':'+_0x40fd8b['id'],_0x40fd8b);UserNotificationEvents['emit'](_0x421f74,_0x40fd8b);_0x289d24(null);};}for(var e in events){if(events[_0xc62f('0x4')](e)){var event=events[e];UserNotification[_0xc62f('0x5')](e,emitEvent(event));}}module[_0xc62f('0x6')]=UserNotificationEvents;
\ No newline at end of file
index f798c24..0bab536 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf41e=['util','../../config/logger','api','moment','bluebird','request-promise','path','./userNotification.attributes','exports','utf8mb4','utf8mb4_unicode_ci','lodash'];(function(_0x18f29a,_0x34c5b4){var _0x4f8f82=function(_0x17e2ab){while(--_0x17e2ab){_0x18f29a['push'](_0x18f29a['shift']());}};_0x4f8f82(++_0x34c5b4);}(_0xf41e,0x167));var _0xef41=function(_0x33f743,_0x23d0f0){_0x33f743=_0x33f743-0x0;var _0xbf0c58=_0xf41e[_0x33f743];return _0xbf0c58;};'use strict';var _=require(_0xef41('0x0'));var util=require(_0xef41('0x1'));var logger=require(_0xef41('0x2'))(_0xef41('0x3'));var moment=require(_0xef41('0x4'));var BPromise=require(_0xef41('0x5'));var rp=require(_0xef41('0x6'));var fs=require('fs');var path=require(_0xef41('0x7'));var rimraf=require('rimraf');var config=require('../../config/environment');var attributes=require(_0xef41('0x8'));module[_0xef41('0x9')]=function(_0x385172,_0x57325f){return _0x385172['define']('UserNotification',attributes,{'tableName':'userNotifications','paranoid':![],'indexes':[],'timestamps':!![],'charset':_0xef41('0xa'),'collate':_0xef41('0xb')});};
\ No newline at end of file
+var _0xc2b7=['UserNotification','utf8mb4','utf8mb4_unicode_ci','lodash','util','api','moment','bluebird','../../config/environment','exports','define'];(function(_0x4f860b,_0x5b4af4){var _0x31e9b7=function(_0x14bdd5){while(--_0x14bdd5){_0x4f860b['push'](_0x4f860b['shift']());}};_0x31e9b7(++_0x5b4af4);}(_0xc2b7,0x137));var _0x7c2b=function(_0x4607df,_0x2417ee){_0x4607df=_0x4607df-0x0;var _0x498af0=_0xc2b7[_0x4607df];return _0x498af0;};'use strict';var _=require(_0x7c2b('0x0'));var util=require(_0x7c2b('0x1'));var logger=require('../../config/logger')(_0x7c2b('0x2'));var moment=require(_0x7c2b('0x3'));var BPromise=require(_0x7c2b('0x4'));var rp=require('request-promise');var fs=require('fs');var path=require('path');var rimraf=require('rimraf');var config=require(_0x7c2b('0x5'));var attributes=require('./userNotification.attributes');module[_0x7c2b('0x6')]=function(_0x5a00d5,_0x4ea90e){return _0x5a00d5[_0x7c2b('0x7')](_0x7c2b('0x8'),attributes,{'tableName':'userNotifications','paranoid':![],'indexes':[],'timestamps':!![],'charset':_0x7c2b('0x9'),'collate':_0x7c2b('0xa')});};
\ No newline at end of file
index 54d50a6..86e9dea 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1c99=['../../config/utils','../../config/logger','../../config/environment','jayson/promise','client','http','redis','defaults','localhost','socket.io-emitter','./userNotification.socket','then','info','UserNotification,\x20%s,\x20%s','request\x20sent','debug','UserNotification,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','lodash','moment','bluebird','../../mysqldb'];(function(_0x344a3f,_0x579a22){var _0x264712=function(_0x34c9f0){while(--_0x34c9f0){_0x344a3f['push'](_0x344a3f['shift']());}};_0x264712(++_0x579a22);}(_0x1c99,0xd4));var _0x91c9=function(_0x1f83a5,_0x59843f){_0x1f83a5=_0x1f83a5-0x0;var _0x45edf0=_0x1c99[_0x1f83a5];return _0x45edf0;};'use strict';var _=require(_0x91c9('0x0'));var util=require('util');var moment=require(_0x91c9('0x1'));var BPromise=require(_0x91c9('0x2'));var rs=require('randomstring');var fs=require('fs');var Redis=require('ioredis');var db=require(_0x91c9('0x3'))['db'];var utils=require(_0x91c9('0x4'));var logger=require(_0x91c9('0x5'))('rpc');var config=require(_0x91c9('0x6'));var jayson=require(_0x91c9('0x7'));var client=jayson[_0x91c9('0x8')][_0x91c9('0x9')]({'port':0x232a});config[_0x91c9('0xa')]=_[_0x91c9('0xb')](config[_0x91c9('0xa')],{'host':_0x91c9('0xc'),'port':0x18eb});var socket=require(_0x91c9('0xd'))(new Redis(config[_0x91c9('0xa')]));require(_0x91c9('0xe'))['register'](socket);function respondWithRpcPromise(_0x1d440f,_0x33d041,_0xee608f){return new BPromise(function(_0x2e7aa3,_0x3f18d6){return client['request'](_0x1d440f,_0xee608f)[_0x91c9('0xf')](function(_0x837c52){logger[_0x91c9('0x10')](_0x91c9('0x11'),_0x33d041,_0x91c9('0x12'));logger[_0x91c9('0x13')](_0x91c9('0x14'),_0x33d041,_0x91c9('0x12'),JSON[_0x91c9('0x15')](_0x837c52));if(_0x837c52[_0x91c9('0x16')]){if(_0x837c52[_0x91c9('0x16')][_0x91c9('0x17')]===0x1f4){logger['error'](_0x91c9('0x11'),_0x33d041,_0x837c52[_0x91c9('0x16')][_0x91c9('0x18')]);return _0x3f18d6(_0x837c52[_0x91c9('0x16')][_0x91c9('0x18')]);}logger['error'](_0x91c9('0x11'),_0x33d041,_0x837c52[_0x91c9('0x16')][_0x91c9('0x18')]);return _0x2e7aa3(_0x837c52[_0x91c9('0x16')][_0x91c9('0x18')]);}else{logger['info'](_0x91c9('0x11'),_0x33d041,'request\x20sent');_0x2e7aa3(_0x837c52[_0x91c9('0x19')][_0x91c9('0x18')]);}})[_0x91c9('0x1a')](function(_0x492a8d){logger[_0x91c9('0x16')](_0x91c9('0x11'),_0x33d041,_0x492a8d);_0x3f18d6(_0x492a8d);});});}
\ No newline at end of file
+var _0x54a7=['./userNotification.socket','register','request','info','UserNotification,\x20%s,\x20%s','debug','request\x20sent','error','code','message','result','catch','moment','ioredis','../../config/utils','rpc','../../config/environment','client','http','redis','defaults','localhost','socket.io-emitter'];(function(_0x20742a,_0x3ee7bc){var _0x4fbe07=function(_0xd89988){while(--_0xd89988){_0x20742a['push'](_0x20742a['shift']());}};_0x4fbe07(++_0x3ee7bc);}(_0x54a7,0x1c1));var _0x754a=function(_0xbf6d3a,_0x5ba754){_0xbf6d3a=_0xbf6d3a-0x0;var _0xd6a43f=_0x54a7[_0xbf6d3a];return _0xd6a43f;};'use strict';var _=require('lodash');var util=require('util');var moment=require(_0x754a('0x0'));var BPromise=require('bluebird');var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x754a('0x1'));var db=require('../../mysqldb')['db'];var utils=require(_0x754a('0x2'));var logger=require('../../config/logger')(_0x754a('0x3'));var config=require(_0x754a('0x4'));var jayson=require('jayson/promise');var client=jayson[_0x754a('0x5')][_0x754a('0x6')]({'port':0x232a});config[_0x754a('0x7')]=_[_0x754a('0x8')](config['redis'],{'host':_0x754a('0x9'),'port':0x18eb});var socket=require(_0x754a('0xa'))(new Redis(config[_0x754a('0x7')]));require(_0x754a('0xb'))[_0x754a('0xc')](socket);function respondWithRpcPromise(_0x2bb286,_0xabfd9d,_0xdef747){return new BPromise(function(_0x1bfcc4,_0x5e845d){return client[_0x754a('0xd')](_0x2bb286,_0xdef747)['then'](function(_0x3b406a){logger[_0x754a('0xe')](_0x754a('0xf'),_0xabfd9d,'request\x20sent');logger[_0x754a('0x10')]('UserNotification,\x20%s,\x20%s,\x20%s',_0xabfd9d,_0x754a('0x11'),JSON['stringify'](_0x3b406a));if(_0x3b406a[_0x754a('0x12')]){if(_0x3b406a[_0x754a('0x12')][_0x754a('0x13')]===0x1f4){logger['error'](_0x754a('0xf'),_0xabfd9d,_0x3b406a[_0x754a('0x12')]['message']);return _0x5e845d(_0x3b406a[_0x754a('0x12')]['message']);}logger[_0x754a('0x12')](_0x754a('0xf'),_0xabfd9d,_0x3b406a[_0x754a('0x12')]['message']);return _0x1bfcc4(_0x3b406a[_0x754a('0x12')][_0x754a('0x14')]);}else{logger[_0x754a('0xe')]('UserNotification,\x20%s,\x20%s',_0xabfd9d,_0x754a('0x11'));_0x1bfcc4(_0x3b406a[_0x754a('0x15')]['message']);}})[_0x754a('0x16')](function(_0x2843f1){logger['error'](_0x754a('0xf'),_0xabfd9d,_0x2843f1);_0x5e845d(_0x2843f1);});});}
\ No newline at end of file
index 5711e6c..82e5107 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4cc1=['remove','length','userNotification:','./userNotification.events','save'];(function(_0x5169a0,_0x394909){var _0x4058a1=function(_0x20fc62){while(--_0x20fc62){_0x5169a0['push'](_0x5169a0['shift']());}};_0x4058a1(++_0x394909);}(_0x4cc1,0x17a));var _0x14cc=function(_0x1d558c,_0x1e497c){_0x1d558c=_0x1d558c-0x0;var _0x15767d=_0x4cc1[_0x1d558c];return _0x15767d;};'use strict';var UserNotificationEvents=require(_0x14cc('0x0'));var events=[_0x14cc('0x1'),_0x14cc('0x2'),'update'];function createListener(_0x3c046e,_0x415442){return function(_0x55b4ae){_0x415442['emit'](_0x3c046e,_0x55b4ae);};}function removeListener(_0x37ad15,_0x4355bc){return function(){UserNotificationEvents['removeListener'](_0x37ad15,_0x4355bc);};}exports['register']=function(_0x67e2fd){for(var _0x1e84e0=0x0,_0x2cbfcd=events[_0x14cc('0x3')];_0x1e84e0<_0x2cbfcd;_0x1e84e0++){var _0x1dbcd0=events[_0x1e84e0];var _0x47093d=createListener(_0x14cc('0x4')+_0x1dbcd0,_0x67e2fd);UserNotificationEvents['on'](_0x1dbcd0,_0x47093d);}};
\ No newline at end of file
+var _0x1852=['length','userNotification:','./userNotification.events','save','remove','update','emit','removeListener'];(function(_0x243217,_0x522951){var _0x478029=function(_0x18d053){while(--_0x18d053){_0x243217['push'](_0x243217['shift']());}};_0x478029(++_0x522951);}(_0x1852,0xca));var _0x2185=function(_0x2308d4,_0x5db32b){_0x2308d4=_0x2308d4-0x0;var _0x2c485d=_0x1852[_0x2308d4];return _0x2c485d;};'use strict';var UserNotificationEvents=require(_0x2185('0x0'));var events=[_0x2185('0x1'),_0x2185('0x2'),_0x2185('0x3')];function createListener(_0x214910,_0x23f4e0){return function(_0x1cef4b){_0x23f4e0[_0x2185('0x4')](_0x214910,_0x1cef4b);};}function removeListener(_0x1d9e7e,_0x3463f3){return function(){UserNotificationEvents[_0x2185('0x5')](_0x1d9e7e,_0x3463f3);};}exports['register']=function(_0xc2bcaa){for(var _0x5df4aa=0x0,_0x5e5401=events[_0x2185('0x6')];_0x5df4aa<_0x5e5401;_0x5df4aa++){var _0x4a3303=events[_0x5df4aa];var _0x3240fb=createListener(_0x2185('0x7')+_0x4a3303,_0xc2bcaa);UserNotificationEvents['on'](_0x4a3303,_0x3240fb);}};
\ No newline at end of file
index 735882d..94fe041 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(_0x3d5307,_0x2d6817){var _0x46140c=function(_0x59ba0d){while(--_0x59ba0d){_0x3d5307['push'](_0x3d5307['shift']());}};_0x46140c(++_0x2d6817);}(_0xa9e0,0x123));var _0x0a9e=function(_0x3635ce,_0x33a6f9){_0x3635ce=_0x3635ce-0x0;var _0x97ecd0=_0xa9e0[_0x3635ce];return _0x97ecd0;};'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 _0x0713=['../../config/environment','exports','path','connect-timeout','express','Router','fs-extra','../../components/interaction/service'];(function(_0xc82ba9,_0x59657c){var _0x5f3823=function(_0x293bbb){while(--_0x293bbb){_0xc82ba9['push'](_0xc82ba9['shift']());}};_0x5f3823(++_0x59657c);}(_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 f96759d..4c27128 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xadaa=['exports','INTEGER'];(function(_0x5a2162,_0x5a90a3){var _0x4561a7=function(_0x11849e){while(--_0x11849e){_0x5a2162['push'](_0x5a2162['shift']());}};_0x4561a7(++_0x5a90a3);}(_0xadaa,0x1ea));var _0xaada=function(_0x2ec81d,_0x1fb112){_0x2ec81d=_0x2ec81d-0x0;var _0xaf7a05=_0xadaa[_0x2ec81d];return _0xaf7a05;};'use strict';var Sequelize=require('sequelize');module[_0xaada('0x0')]={'penalty':{'type':Sequelize[_0xaada('0x1')],'defaultValue':0x0}};
\ No newline at end of file
+var _0x0add=['exports','INTEGER','sequelize'];(function(_0xce144a,_0x34fea7){var _0x447c0e=function(_0x584ac8){while(--_0x584ac8){_0xce144a['push'](_0xce144a['shift']());}};_0x447c0e(++_0x34fea7);}(_0x0add,0x122));var _0xd0ad=function(_0x43a6cd,_0x503d1a){_0x43a6cd=_0x43a6cd-0x0;var _0x5acb36=_0x0add[_0x43a6cd];return _0x5acb36;};'use strict';var Sequelize=require(_0xd0ad('0x0'));module[_0xd0ad('0x1')]={'penalty':{'type':Sequelize[_0xd0ad('0x2')],'defaultValue':0x0}};
\ No newline at end of file
index 617d5e9..103981f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8708=['user_has_openchannel_queues','lodash','util','../../config/logger','api','moment','bluebird','rimraf','../../config/environment','./userOpenchannelQueue.attributes','define','UserOpenchannelQueue'];(function(_0x4579d4,_0x668edd){var _0x1ff39e=function(_0x565aee){while(--_0x565aee){_0x4579d4['push'](_0x4579d4['shift']());}};_0x1ff39e(++_0x668edd);}(_0x8708,0x1e1));var _0x8870=function(_0x53ccf2,_0x13cb67){_0x53ccf2=_0x53ccf2-0x0;var _0x5a2964=_0x8708[_0x53ccf2];return _0x5a2964;};'use strict';var _=require(_0x8870('0x0'));var util=require(_0x8870('0x1'));var logger=require(_0x8870('0x2'))(_0x8870('0x3'));var moment=require(_0x8870('0x4'));var BPromise=require(_0x8870('0x5'));var rp=require('request-promise');var fs=require('fs');var path=require('path');var rimraf=require(_0x8870('0x6'));var config=require(_0x8870('0x7'));var attributes=require(_0x8870('0x8'));module['exports']=function(_0x32b688,_0x3875d9){return _0x32b688[_0x8870('0x9')](_0x8870('0xa'),attributes,{'tableName':_0x8870('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x487e=['request-promise','path','rimraf','./userOpenchannelQueue.attributes','exports','define','UserOpenchannelQueue','user_has_openchannel_queues','util','moment','bluebird'];(function(_0x21a1c7,_0x13963f){var _0x54b176=function(_0x25195d){while(--_0x25195d){_0x21a1c7['push'](_0x21a1c7['shift']());}};_0x54b176(++_0x13963f);}(_0x487e,0x131));var _0xe487=function(_0xc59953,_0x4a13d7){_0xc59953=_0xc59953-0x0;var _0x505678=_0x487e[_0xc59953];return _0x505678;};'use strict';var _=require('lodash');var util=require(_0xe487('0x0'));var logger=require('../../config/logger')('api');var moment=require(_0xe487('0x1'));var BPromise=require(_0xe487('0x2'));var rp=require(_0xe487('0x3'));var fs=require('fs');var path=require(_0xe487('0x4'));var rimraf=require(_0xe487('0x5'));var config=require('../../config/environment');var attributes=require(_0xe487('0x6'));module[_0xe487('0x7')]=function(_0x4bb557,_0x2b76b6){return _0x4bb557[_0xe487('0x8')](_0xe487('0x9'),attributes,{'tableName':_0xe487('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 060edd0..d7d3a0c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7fba=['../../mysqldb','../../config/utils','../../config/logger','jayson/promise','client','http','info','UserOpenchannelQueue,\x20%s,\x20%s','request\x20sent','debug','UserOpenchannelQueue,\x20%s,\x20%s,\x20%s','error','code','message','catch','lodash','util','moment','randomstring','ioredis'];(function(_0x5baac8,_0x111054){var _0x1c5a00=function(_0xec88f3){while(--_0xec88f3){_0x5baac8['push'](_0x5baac8['shift']());}};_0x1c5a00(++_0x111054);}(_0x7fba,0xff));var _0xa7fb=function(_0x48e6a1,_0x37db37){_0x48e6a1=_0x48e6a1-0x0;var _0xb7f804=_0x7fba[_0x48e6a1];return _0xb7f804;};'use strict';var _=require(_0xa7fb('0x0'));var util=require(_0xa7fb('0x1'));var moment=require(_0xa7fb('0x2'));var BPromise=require('bluebird');var rs=require(_0xa7fb('0x3'));var fs=require('fs');var Redis=require(_0xa7fb('0x4'));var db=require(_0xa7fb('0x5'))['db'];var utils=require(_0xa7fb('0x6'));var logger=require(_0xa7fb('0x7'))('rpc');var config=require('../../config/environment');var jayson=require(_0xa7fb('0x8'));var client=jayson[_0xa7fb('0x9')][_0xa7fb('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x3220d6,_0x2acd40,_0x1d51cd){return new BPromise(function(_0x592e36,_0x233d51){return client['request'](_0x3220d6,_0x1d51cd)['then'](function(_0xc9fe54){logger[_0xa7fb('0xb')](_0xa7fb('0xc'),_0x2acd40,_0xa7fb('0xd'));logger[_0xa7fb('0xe')](_0xa7fb('0xf'),_0x2acd40,_0xa7fb('0xd'),JSON['stringify'](_0xc9fe54));if(_0xc9fe54[_0xa7fb('0x10')]){if(_0xc9fe54['error'][_0xa7fb('0x11')]===0x1f4){logger[_0xa7fb('0x10')]('UserOpenchannelQueue,\x20%s,\x20%s',_0x2acd40,_0xc9fe54[_0xa7fb('0x10')][_0xa7fb('0x12')]);return _0x233d51(_0xc9fe54[_0xa7fb('0x10')][_0xa7fb('0x12')]);}logger[_0xa7fb('0x10')](_0xa7fb('0xc'),_0x2acd40,_0xc9fe54[_0xa7fb('0x10')][_0xa7fb('0x12')]);return _0x592e36(_0xc9fe54[_0xa7fb('0x10')][_0xa7fb('0x12')]);}else{logger[_0xa7fb('0xb')](_0xa7fb('0xc'),_0x2acd40,_0xa7fb('0xd'));_0x592e36(_0xc9fe54['result'][_0xa7fb('0x12')]);}})[_0xa7fb('0x13')](function(_0x3ddca9){logger[_0xa7fb('0x10')]('UserOpenchannelQueue,\x20%s,\x20%s',_0x2acd40,_0x3ddca9);_0x233d51(_0x3ddca9);});});}
\ No newline at end of file
+var _0x7f9f=['rpc','client','http','request','then','info','UserOpenchannelQueue,\x20%s,\x20%s','request\x20sent','UserOpenchannelQueue,\x20%s,\x20%s,\x20%s','error','code','message','result','catch','lodash','moment','bluebird','randomstring','../../mysqldb','../../config/utils'];(function(_0x91c10a,_0x46cbc3){var _0x35ec2d=function(_0x57e217){while(--_0x57e217){_0x91c10a['push'](_0x91c10a['shift']());}};_0x35ec2d(++_0x46cbc3);}(_0x7f9f,0x18a));var _0xf7f9=function(_0x3a2555,_0x519e6b){_0x3a2555=_0x3a2555-0x0;var _0x5eadbe=_0x7f9f[_0x3a2555];return _0x5eadbe;};'use strict';var _=require(_0xf7f9('0x0'));var util=require('util');var moment=require(_0xf7f9('0x1'));var BPromise=require(_0xf7f9('0x2'));var rs=require(_0xf7f9('0x3'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0xf7f9('0x4'))['db'];var utils=require(_0xf7f9('0x5'));var logger=require('../../config/logger')(_0xf7f9('0x6'));var config=require('../../config/environment');var jayson=require('jayson/promise');var client=jayson[_0xf7f9('0x7')][_0xf7f9('0x8')]({'port':0x232a});function respondWithRpcPromise(_0xfdbced,_0x12e44e,_0xdc090a){return new BPromise(function(_0x3bded9,_0x60ed8e){return client[_0xf7f9('0x9')](_0xfdbced,_0xdc090a)[_0xf7f9('0xa')](function(_0x2256ff){logger[_0xf7f9('0xb')](_0xf7f9('0xc'),_0x12e44e,_0xf7f9('0xd'));logger['debug'](_0xf7f9('0xe'),_0x12e44e,'request\x20sent',JSON['stringify'](_0x2256ff));if(_0x2256ff[_0xf7f9('0xf')]){if(_0x2256ff[_0xf7f9('0xf')][_0xf7f9('0x10')]===0x1f4){logger['error'](_0xf7f9('0xc'),_0x12e44e,_0x2256ff[_0xf7f9('0xf')][_0xf7f9('0x11')]);return _0x60ed8e(_0x2256ff[_0xf7f9('0xf')][_0xf7f9('0x11')]);}logger['error'](_0xf7f9('0xc'),_0x12e44e,_0x2256ff[_0xf7f9('0xf')]['message']);return _0x3bded9(_0x2256ff[_0xf7f9('0xf')][_0xf7f9('0x11')]);}else{logger[_0xf7f9('0xb')]('UserOpenchannelQueue,\x20%s,\x20%s',_0x12e44e,_0xf7f9('0xd'));_0x3bded9(_0x2256ff[_0xf7f9('0x12')][_0xf7f9('0x11')]);}})[_0xf7f9('0x13')](function(_0x585e49){logger[_0xf7f9('0xf')](_0xf7f9('0xc'),_0x12e44e,_0x585e49);_0x60ed8e(_0x585e49);});});}
\ No newline at end of file
index 86dfb49..e5aa0e9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0417=['addSections','addResources','put','update','/:id','destroy','delete','removeSections','removeResources','exports','multer','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','./userProfile.controller','get','isAuthenticated','index','/describe','show','/:id/sections','getSections','/:id/resources','getResources','post','create'];(function(_0x251d01,_0x2468c5){var _0x5bd7a4=function(_0x77900d){while(--_0x77900d){_0x251d01['push'](_0x251d01['shift']());}};_0x5bd7a4(++_0x2468c5);}(_0x0417,0xfa));var _0x7041=function(_0xd2b53a,_0x339403){_0xd2b53a=_0xd2b53a-0x0;var _0x3c5094=_0x0417[_0xd2b53a];return _0x3c5094;};'use strict';var multer=require(_0x7041('0x0'));var util=require(_0x7041('0x1'));var path=require(_0x7041('0x2'));var timeout=require(_0x7041('0x3'));var express=require(_0x7041('0x4'));var router=express[_0x7041('0x5')]();var fs_extra=require(_0x7041('0x6'));var auth=require(_0x7041('0x7'));var interaction=require('../../components/interaction/service');var config=require('../../config/environment');var controller=require(_0x7041('0x8'));router[_0x7041('0x9')]('/',auth[_0x7041('0xa')](),controller[_0x7041('0xb')]);router[_0x7041('0x9')](_0x7041('0xc'),auth[_0x7041('0xa')](),controller['describe']);router[_0x7041('0x9')]('/:id',auth[_0x7041('0xa')](),controller[_0x7041('0xd')]);router[_0x7041('0x9')](_0x7041('0xe'),auth[_0x7041('0xa')](),controller[_0x7041('0xf')]);router[_0x7041('0x9')](_0x7041('0x10'),auth[_0x7041('0xa')](),controller[_0x7041('0x11')]);router[_0x7041('0x12')]('/',auth[_0x7041('0xa')](),controller[_0x7041('0x13')]);router[_0x7041('0x12')]('/:id/clone',auth[_0x7041('0xa')](),controller['clone']);router[_0x7041('0x12')](_0x7041('0xe'),auth[_0x7041('0xa')](),controller[_0x7041('0x14')]);router[_0x7041('0x12')](_0x7041('0x10'),auth[_0x7041('0xa')](),controller[_0x7041('0x15')]);router[_0x7041('0x16')]('/:id',auth[_0x7041('0xa')](),controller[_0x7041('0x17')]);router['delete'](_0x7041('0x18'),auth[_0x7041('0xa')](),controller[_0x7041('0x19')]);router[_0x7041('0x1a')]('/:id/sections',auth[_0x7041('0xa')](),controller[_0x7041('0x1b')]);router[_0x7041('0x1a')](_0x7041('0x10'),auth[_0x7041('0xa')](),controller[_0x7041('0x1c')]);module[_0x7041('0x1d')]=router;
\ No newline at end of file
+var _0x4481=['path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./userProfile.controller','get','isAuthenticated','index','/describe','describe','/:id','getSections','/:id/resources','getResources','post','create','/:id/clone','clone','/:id/sections','addSections','update','delete','destroy','removeSections','removeResources','multer','util'];(function(_0xbca1b1,_0x33f0ce){var _0x4e1686=function(_0x58a80c){while(--_0x58a80c){_0xbca1b1['push'](_0xbca1b1['shift']());}};_0x4e1686(++_0x33f0ce);}(_0x4481,0xd7));var _0x1448=function(_0x2a44ad,_0x2bccbd){_0x2a44ad=_0x2a44ad-0x0;var _0x17eabb=_0x4481[_0x2a44ad];return _0x17eabb;};'use strict';var multer=require(_0x1448('0x0'));var util=require(_0x1448('0x1'));var path=require(_0x1448('0x2'));var timeout=require(_0x1448('0x3'));var express=require(_0x1448('0x4'));var router=express[_0x1448('0x5')]();var fs_extra=require(_0x1448('0x6'));var auth=require(_0x1448('0x7'));var interaction=require(_0x1448('0x8'));var config=require(_0x1448('0x9'));var controller=require(_0x1448('0xa'));router[_0x1448('0xb')]('/',auth[_0x1448('0xc')](),controller[_0x1448('0xd')]);router[_0x1448('0xb')](_0x1448('0xe'),auth[_0x1448('0xc')](),controller[_0x1448('0xf')]);router[_0x1448('0xb')](_0x1448('0x10'),auth[_0x1448('0xc')](),controller['show']);router[_0x1448('0xb')]('/:id/sections',auth[_0x1448('0xc')](),controller[_0x1448('0x11')]);router[_0x1448('0xb')](_0x1448('0x12'),auth[_0x1448('0xc')](),controller[_0x1448('0x13')]);router[_0x1448('0x14')]('/',auth['isAuthenticated'](),controller[_0x1448('0x15')]);router[_0x1448('0x14')](_0x1448('0x16'),auth['isAuthenticated'](),controller[_0x1448('0x17')]);router[_0x1448('0x14')](_0x1448('0x18'),auth[_0x1448('0xc')](),controller[_0x1448('0x19')]);router[_0x1448('0x14')](_0x1448('0x12'),auth[_0x1448('0xc')](),controller['addResources']);router['put']('/:id',auth[_0x1448('0xc')](),controller[_0x1448('0x1a')]);router[_0x1448('0x1b')]('/:id',auth[_0x1448('0xc')](),controller[_0x1448('0x1c')]);router[_0x1448('0x1b')]('/:id/sections',auth[_0x1448('0xc')](),controller[_0x1448('0x1d')]);router[_0x1448('0x1b')](_0x1448('0x12'),auth[_0x1448('0xc')](),controller[_0x1448('0x1e')]);module['exports']=router;
\ No newline at end of file
index d78e58a..dea2e36 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x804c=['split','STRING','BOOLEAN','sequelize','exports','name','getDataValue','crudPermissions'];(function(_0x15a634,_0x4feb86){var _0xf4f7a0=function(_0x31d9fe){while(--_0x31d9fe){_0x15a634['push'](_0x15a634['shift']());}};_0xf4f7a0(++_0x4feb86);}(_0x804c,0x83));var _0xc804=function(_0x458be8,_0x32d78a){_0x458be8=_0x458be8-0x0;var _0xa97852=_0x804c[_0x458be8];return _0xa97852;};'use strict';var Sequelize=require(_0xc804('0x0'));module[_0xc804('0x1')]={'name':{'type':Sequelize['STRING'],'allowNull':![],'unique':_0xc804('0x2')},'crudPermissions':{'type':Sequelize['STRING'],'set':function(_0x54830f){this['setDataValue']('crudPermissions',_0x54830f?_0x54830f['join'](''):[]);},'get':function(){return this['getDataValue']('crudPermissions')?this[_0xc804('0x3')](_0xc804('0x4'))[_0xc804('0x5')](''):[];},'allowNull':![],'defaultValue':'r'},'description':{'type':Sequelize[_0xc804('0x6')],'allowNull':!![]},'privacyEnabled':{'type':Sequelize[_0xc804('0x7')],'defaultValue':![]},'downloadAttachments':{'type':Sequelize[_0xc804('0x7')],'defaultValue':!![]},'downloadCallySquareRecordings':{'type':Sequelize[_0xc804('0x7')],'defaultValue':!![]},'downloadContactManagerLists':{'type':Sequelize[_0xc804('0x7')],'defaultValue':!![]},'downloadJscriptySessions':{'type':Sequelize[_0xc804('0x7')],'defaultValue':!![]},'downloadOmnichannelInteractions':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]},'downloadScreenRecordings':{'type':Sequelize[_0xc804('0x7')],'defaultValue':!![]},'downloadVoiceRecordings':{'type':Sequelize[_0xc804('0x7')],'defaultValue':!![]}};
\ No newline at end of file
+var _0x06fa=['BOOLEAN','sequelize','exports','name','STRING','setDataValue','crudPermissions','join','getDataValue','split'];(function(_0x3b1317,_0x41be7b){var _0x5283c6=function(_0x244fcb){while(--_0x244fcb){_0x3b1317['push'](_0x3b1317['shift']());}};_0x5283c6(++_0x41be7b);}(_0x06fa,0x141));var _0xa06f=function(_0x46a00a,_0x1ebb84){_0x46a00a=_0x46a00a-0x0;var _0x2fc495=_0x06fa[_0x46a00a];return _0x2fc495;};'use strict';var Sequelize=require(_0xa06f('0x0'));module[_0xa06f('0x1')]={'name':{'type':Sequelize['STRING'],'allowNull':![],'unique':_0xa06f('0x2')},'crudPermissions':{'type':Sequelize[_0xa06f('0x3')],'set':function(_0x1b8952){this[_0xa06f('0x4')](_0xa06f('0x5'),_0x1b8952?_0x1b8952[_0xa06f('0x6')](''):[]);},'get':function(){return this[_0xa06f('0x7')]('crudPermissions')?this[_0xa06f('0x7')](_0xa06f('0x5'))[_0xa06f('0x8')](''):[];},'allowNull':![],'defaultValue':'r'},'description':{'type':Sequelize['STRING'],'allowNull':!![]},'privacyEnabled':{'type':Sequelize[_0xa06f('0x9')],'defaultValue':![]},'downloadAttachments':{'type':Sequelize[_0xa06f('0x9')],'defaultValue':!![]},'downloadCallySquareRecordings':{'type':Sequelize[_0xa06f('0x9')],'defaultValue':!![]},'downloadContactManagerLists':{'type':Sequelize[_0xa06f('0x9')],'defaultValue':!![]},'downloadJscriptySessions':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]},'downloadOmnichannelInteractions':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]},'downloadScreenRecordings':{'type':Sequelize[_0xa06f('0x9')],'defaultValue':!![]},'downloadVoiceRecordings':{'type':Sequelize[_0xa06f('0x9')],'defaultValue':!![]}};
\ No newline at end of file
index 05b161b..e8a6bb4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xfb0b=['options','find','create','body','clone','get','createdAt','updatedAt','crudPermissions','UserProfileSection','autoAssociation','UserProfileResource','omit','sectionId','Resources','destroy','describe','transaction','userProfileId','each','removeSections','ids','getSections','enabled','includes','isEmpty','subsections','findOne','Dashboard','forEach','push','resourceId','Plugin','addResources','sequelize','removeResources','getResources','Missing\x20section\x20parameter','No\x20User\x20Profile\x20found\x20for\x20id\x20','eml-format','rimraf','zip-dir','request-promise','moment','util','sox','to-csv','ejs','fs-extra','lodash','squel','jsforce','desk.js','querystring','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','../../config/utils','../../config/license/util','../../mysqldb','redis','defaults','localhost','sendStatus','status','end','json','offset','limit','undefined','count','set','reject','save','update','then','error','stack','name','send','index','map','UserProfile','rawAttributes','fieldName','type','key','query','keys','filters','intersection','model','attributes','fields','length','hasOwnProperty','nolimit','sort','where','pick','filter','merge','includeAll','include','findAll','rows','catch','show','params'];(function(_0x1035c1,_0x2d8583){var _0x308d67=function(_0x58ddb6){while(--_0x58ddb6){_0x1035c1['push'](_0x1035c1['shift']());}};_0x308d67(++_0x2d8583);}(_0xfb0b,0x94));var _0xbfb0=function(_0x135e32,_0x880d3a){_0x135e32=_0x135e32-0x0;var _0x2cbb45=_0xfb0b[_0x135e32];return _0x2cbb45;};'use strict';var emlformat=require(_0xbfb0('0x0'));var rimraf=require(_0xbfb0('0x1'));var zipdir=require(_0xbfb0('0x2'));var jsonpatch=require('fast-json-patch');var rp=require(_0xbfb0('0x3'));var moment=require(_0xbfb0('0x4'));var BPromise=require('bluebird');var Mustache=require('mustache');var util=require(_0xbfb0('0x5'));var path=require('path');var sox=require(_0xbfb0('0x6'));var csv=require(_0xbfb0('0x7'));var ejs=require(_0xbfb0('0x8'));var fs=require('fs');var fs_extra=require(_0xbfb0('0x9'));var _=require(_0xbfb0('0xa'));var squel=require(_0xbfb0('0xb'));var crypto=require('crypto');var jsforce=require(_0xbfb0('0xc'));var deskjs=require(_0xbfb0('0xd'));var toCsv=require(_0xbfb0('0x7'));var querystring=require(_0xbfb0('0xe'));var Papa=require('papaparse');var Redis=require('ioredis');var authService=require('../../components/auth/service');var qs=require('../../components/parsers/qs');var as=require(_0xbfb0('0xf'));var hardwareService=require(_0xbfb0('0x10'));var logger=require(_0xbfb0('0x11'))('api');var utils=require(_0xbfb0('0x12'));var config=require('../../config/environment');var licenseUtil=require(_0xbfb0('0x13'));var db=require(_0xbfb0('0x14'))['db'];config[_0xbfb0('0x15')]=_[_0xbfb0('0x16')](config[_0xbfb0('0x15')],{'host':_0xbfb0('0x17'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0xbfb0('0x15')]));require('./userProfile.socket')['register'](socket);function respondWithStatusCode(_0x47e716,_0x141e62){_0x141e62=_0x141e62||0xcc;return function(_0x2c9768){if(_0x2c9768){return _0x47e716[_0xbfb0('0x18')](_0x141e62);}return _0x47e716[_0xbfb0('0x19')](_0x141e62)[_0xbfb0('0x1a')]();};}function respondWithResult(_0x213994,_0x2470cf){_0x2470cf=_0x2470cf||0xc8;return function(_0x2d8773){if(_0x2d8773){return _0x213994[_0xbfb0('0x19')](_0x2470cf)[_0xbfb0('0x1b')](_0x2d8773);}};}function respondWithFilteredResult(_0x2496b8,_0x4e48b1){return function(_0x5c8a1e){if(_0x5c8a1e){var _0x3319a1=typeof _0x4e48b1[_0xbfb0('0x1c')]==='undefined'&&typeof _0x4e48b1[_0xbfb0('0x1d')]===_0xbfb0('0x1e');var _0x4a6a88=_0x5c8a1e[_0xbfb0('0x1f')];var _0x4b4878=_0x3319a1?0x0:_0x4e48b1[_0xbfb0('0x1c')];var _0x4350fe=_0x3319a1?_0x5c8a1e[_0xbfb0('0x1f')]:_0x4e48b1[_0xbfb0('0x1c')]+_0x4e48b1['limit'];var _0x31c2eb;if(_0x4350fe>=_0x4a6a88){_0x4350fe=_0x4a6a88;_0x31c2eb=0xc8;}else{_0x31c2eb=0xce;}_0x2496b8['status'](_0x31c2eb);return _0x2496b8[_0xbfb0('0x20')]('Content-Range',_0x4b4878+'-'+_0x4350fe+'/'+_0x4a6a88)[_0xbfb0('0x1b')](_0x5c8a1e);}return null;};}function patchUpdates(_0x4cae5a){return function(_0x2fe191){try{jsonpatch['apply'](_0x2fe191,_0x4cae5a,!![]);}catch(_0x278b3d){return BPromise[_0xbfb0('0x21')](_0x278b3d);}return _0x2fe191[_0xbfb0('0x22')]();};}function saveUpdates(_0x3ab347,_0x515d0f){return function(_0x2efb2a){if(_0x2efb2a){return _0x2efb2a[_0xbfb0('0x23')](_0x3ab347)['then'](function(_0x4e86c8){return _0x4e86c8;});}return null;};}function removeEntity(_0x1625e3,_0x1e4a2e){return function(_0x39c5f8){if(_0x39c5f8){return _0x39c5f8['destroy']()[_0xbfb0('0x24')](function(){_0x1625e3['status'](0xcc)[_0xbfb0('0x1a')]();});}};}function handleEntityNotFound(_0x46dac3,_0x250ce8){return function(_0x402db3){if(!_0x402db3){_0x46dac3[_0xbfb0('0x18')](0x194);}return _0x402db3;};}function handleError(_0x1d0e8d,_0xb41263){_0xb41263=_0xb41263||0x1f4;return function(_0x57ab45){logger[_0xbfb0('0x25')](_0x57ab45[_0xbfb0('0x26')]);if(_0x57ab45[_0xbfb0('0x27')]){delete _0x57ab45[_0xbfb0('0x27')];}_0x1d0e8d['status'](_0xb41263)[_0xbfb0('0x28')](_0x57ab45);};}exports[_0xbfb0('0x29')]=function(_0x4e511c,_0x188c90){var _0x6ba12c={},_0x41ad24={},_0x1a5623={'count':0x0,'rows':[]};var _0x4a720c=_[_0xbfb0('0x2a')](db[_0xbfb0('0x2b')][_0xbfb0('0x2c')],function(_0x3f7353){return{'name':_0x3f7353[_0xbfb0('0x2d')],'type':_0x3f7353[_0xbfb0('0x2e')][_0xbfb0('0x2f')]};});_0x41ad24['model']=_['map'](_0x4a720c,'name');_0x41ad24[_0xbfb0('0x30')]=_[_0xbfb0('0x31')](_0x4e511c[_0xbfb0('0x30')]);_0x41ad24[_0xbfb0('0x32')]=_[_0xbfb0('0x33')](_0x41ad24[_0xbfb0('0x34')],_0x41ad24[_0xbfb0('0x30')]);_0x6ba12c[_0xbfb0('0x35')]=_['intersection'](_0x41ad24['model'],qs['fields'](_0x4e511c[_0xbfb0('0x30')][_0xbfb0('0x36')]));_0x6ba12c[_0xbfb0('0x35')]=_0x6ba12c[_0xbfb0('0x35')][_0xbfb0('0x37')]?_0x6ba12c['attributes']:_0x41ad24['model'];if(!_0x4e511c[_0xbfb0('0x30')][_0xbfb0('0x38')](_0xbfb0('0x39'))){_0x6ba12c[_0xbfb0('0x1d')]=qs[_0xbfb0('0x1d')](_0x4e511c[_0xbfb0('0x30')][_0xbfb0('0x1d')]);_0x6ba12c[_0xbfb0('0x1c')]=qs[_0xbfb0('0x1c')](_0x4e511c[_0xbfb0('0x30')]['offset']);}_0x6ba12c['order']=qs[_0xbfb0('0x3a')](_0x4e511c[_0xbfb0('0x30')]['sort']);_0x6ba12c[_0xbfb0('0x3b')]=qs['filters'](_[_0xbfb0('0x3c')](_0x4e511c[_0xbfb0('0x30')],_0x41ad24['filters']),_0x4a720c);if(_0x4e511c['query'][_0xbfb0('0x3d')]){_0x6ba12c[_0xbfb0('0x3b')]=_['merge'](_0x6ba12c[_0xbfb0('0x3b')],{'$or':_['map'](_0x4a720c,function(_0x21da9c){if(_0x21da9c['type']!=='VIRTUAL'){var _0x1af0a0={};_0x1af0a0[_0x21da9c[_0xbfb0('0x27')]]={'$like':'%'+_0x4e511c[_0xbfb0('0x30')][_0xbfb0('0x3d')]+'%'};return _0x1af0a0;}})});}_0x6ba12c=_[_0xbfb0('0x3e')]({},_0x6ba12c,_0x4e511c['options']);var _0x4240a={'where':_0x6ba12c[_0xbfb0('0x3b')]};return db[_0xbfb0('0x2b')][_0xbfb0('0x1f')](_0x4240a)[_0xbfb0('0x24')](function(_0x90da0c){_0x1a5623[_0xbfb0('0x1f')]=_0x90da0c;if(_0x4e511c[_0xbfb0('0x30')][_0xbfb0('0x3f')]){_0x6ba12c[_0xbfb0('0x40')]=[{'all':!![]}];}return db[_0xbfb0('0x2b')][_0xbfb0('0x41')](_0x6ba12c);})[_0xbfb0('0x24')](function(_0x3caaf3){_0x1a5623[_0xbfb0('0x42')]=_0x3caaf3;return _0x1a5623;})[_0xbfb0('0x24')](respondWithFilteredResult(_0x188c90,_0x6ba12c))[_0xbfb0('0x43')](handleError(_0x188c90,null));};exports[_0xbfb0('0x44')]=function(_0x5af02d,_0xa7f6c3){var _0x1401bb={'raw':![],'where':{'id':_0x5af02d[_0xbfb0('0x45')]['id']}},_0x2769d3={};_0x2769d3[_0xbfb0('0x34')]=_[_0xbfb0('0x31')](db[_0xbfb0('0x2b')][_0xbfb0('0x2c')]);_0x2769d3[_0xbfb0('0x30')]=_[_0xbfb0('0x31')](_0x5af02d['query']);_0x2769d3['filters']=_[_0xbfb0('0x33')](_0x2769d3[_0xbfb0('0x34')],_0x2769d3['query']);_0x1401bb['attributes']=_[_0xbfb0('0x33')](_0x2769d3[_0xbfb0('0x34')],qs[_0xbfb0('0x36')](_0x5af02d[_0xbfb0('0x30')][_0xbfb0('0x36')]));_0x1401bb[_0xbfb0('0x35')]=_0x1401bb['attributes'][_0xbfb0('0x37')]?_0x1401bb[_0xbfb0('0x35')]:_0x2769d3[_0xbfb0('0x34')];if(_0x5af02d[_0xbfb0('0x30')][_0xbfb0('0x3f')]){_0x1401bb[_0xbfb0('0x40')]=[{'all':!![]}];}_0x1401bb=_[_0xbfb0('0x3e')]({},_0x1401bb,_0x5af02d[_0xbfb0('0x46')]);return db[_0xbfb0('0x2b')][_0xbfb0('0x47')](_0x1401bb)[_0xbfb0('0x24')](handleEntityNotFound(_0xa7f6c3,null))[_0xbfb0('0x24')](respondWithResult(_0xa7f6c3,null))[_0xbfb0('0x43')](handleError(_0xa7f6c3,null));};exports[_0xbfb0('0x48')]=function(_0x2845da,_0xf085ab){return db[_0xbfb0('0x2b')][_0xbfb0('0x48')](_0x2845da[_0xbfb0('0x49')],{})[_0xbfb0('0x24')](respondWithResult(_0xf085ab,0xc9))[_0xbfb0('0x43')](handleError(_0xf085ab,null));};exports[_0xbfb0('0x4a')]=function(_0x3f1972,_0x35b22e){var _0x59dd29={'where':{'id':_0x3f1972[_0xbfb0('0x45')]['id']}},_0x41c1d4={};_0x41c1d4[_0xbfb0('0x34')]=_[_0xbfb0('0x31')](db[_0xbfb0('0x2b')][_0xbfb0('0x2c')]);_0x59dd29[_0xbfb0('0x35')]=_['intersection'](_0x41c1d4[_0xbfb0('0x34')],qs[_0xbfb0('0x36')](_0x3f1972[_0xbfb0('0x30')]['fields']));_0x59dd29[_0xbfb0('0x35')]=_0x59dd29['attributes'][_0xbfb0('0x37')]?_0x59dd29[_0xbfb0('0x35')]:_0x41c1d4[_0xbfb0('0x34')];if(_0x3f1972[_0xbfb0('0x30')]['includeAll']){_0x59dd29[_0xbfb0('0x40')]=[{'all':!![]}];}_0x59dd29=_[_0xbfb0('0x3e')]({},_0x59dd29,_0x3f1972['options']);return db[_0xbfb0('0x2b')][_0xbfb0('0x47')](_0x59dd29)['then'](handleEntityNotFound(_0x35b22e,null))['then'](function(_0x531726){if(_0x531726){var _0x14bb38=_0x531726[_0xbfb0('0x4b')]({'plain':!![]});_0x14bb38=qs['omit'](_0x14bb38,['id',_0xbfb0('0x4c'),_0xbfb0('0x4d'),_0xbfb0('0x4e')]);_0x3f1972[_0xbfb0('0x49')]=_['omit'](_0x3f1972[_0xbfb0('0x49')],['id',_0xbfb0('0x4c'),_0xbfb0('0x4d')]);return db['sequelize']['transaction'](function(_0x5d3fac){return db['UserProfile'][_0xbfb0('0x48')](_[_0xbfb0('0x3e')](_0x14bb38,_0x3f1972[_0xbfb0('0x49')]),{'include':_0x3f1972[_0xbfb0('0x30')][_0xbfb0('0x3f')]?[{'all':!![]}]:undefined,'transaction':_0x5d3fac})[_0xbfb0('0x24')](function(_0x228e38){var _0x4f1b7d=_0x228e38[_0xbfb0('0x4b')]({'plain':!![]});return db[_0xbfb0('0x4f')][_0xbfb0('0x41')]({'where':{'userProfileId':_0x3f1972[_0xbfb0('0x45')]['id']},'raw':!![]})[_0xbfb0('0x24')](function(_0xbf35e0){if(_0xbf35e0){return BPromise['each'](_0xbf35e0,function(_0x22eb16){return new BPromise(function(_0x459f45,_0x5dbdb0){if(_0x22eb16[_0xbfb0('0x50')]===null||_0x22eb16[_0xbfb0('0x50')]===0x1)_0x459f45(null);return db[_0xbfb0('0x51')][_0xbfb0('0x41')]({'where':{'sectionId':_0x22eb16['id']},'raw':!![]})['then'](function(_0x15815d){var _0x1dda6d=_[_0xbfb0('0x2a')](_0x15815d,function(_0x16c8aa){return qs[_0xbfb0('0x52')](_0x16c8aa,['id',_0xbfb0('0x4c'),'updatedAt',_0xbfb0('0x53')]);});_0x459f45(_0x1dda6d);})[_0xbfb0('0x43')](function(_0x2d1084){_0x5dbdb0(_0x2d1084);});})[_0xbfb0('0x24')](function(_0xd15af3){var _0x51a1dc=qs[_0xbfb0('0x52')](_0x22eb16,['id',_0xbfb0('0x4c'),_0xbfb0('0x4d')]);_0x51a1dc['userProfileId']=_0x4f1b7d['id'];if(_0xd15af3)_0x51a1dc[_0xbfb0('0x54')]=_0xd15af3;return _0x51a1dc;})['then'](function(_0x215558){return db[_0xbfb0('0x4f')]['create'](_0x215558,{'include':[{'model':db[_0xbfb0('0x51')],'as':_0xbfb0('0x54')}],'raw':!![],'transaction':_0x5d3fac});});})['then'](function(){return _0x4f1b7d;});}});});});}})['then'](respondWithResult(_0x35b22e,0xc9))[_0xbfb0('0x43')](handleError(_0x35b22e,null));};exports['update']=function(_0x50b071,_0x21ebc0){if(_0x50b071[_0xbfb0('0x49')]['id']){delete _0x50b071[_0xbfb0('0x49')]['id'];}return db[_0xbfb0('0x2b')]['find']({'where':{'id':_0x50b071['params']['id']}})[_0xbfb0('0x24')](handleEntityNotFound(_0x21ebc0,null))['then'](saveUpdates(_0x50b071['body'],null))[_0xbfb0('0x24')](respondWithResult(_0x21ebc0,null))[_0xbfb0('0x43')](handleError(_0x21ebc0,null));};exports[_0xbfb0('0x55')]=function(_0x13ded2,_0x43febb){return db[_0xbfb0('0x2b')]['find']({'where':{'id':_0x13ded2[_0xbfb0('0x45')]['id']}})[_0xbfb0('0x24')](handleEntityNotFound(_0x43febb,null))[_0xbfb0('0x24')](removeEntity(_0x43febb,null))[_0xbfb0('0x43')](handleError(_0x43febb,null));};exports[_0xbfb0('0x56')]=function(_0x462929,_0x29e1d6){return db['UserProfile'][_0xbfb0('0x56')]()[_0xbfb0('0x24')](respondWithResult(_0x29e1d6,null))[_0xbfb0('0x43')](handleError(_0x29e1d6,null));};exports['addSections']=function(_0x477a2e,_0x32c4e1){var _0x39405f=_0x477a2e[_0xbfb0('0x49')];return db[_0xbfb0('0x2b')]['find']({'where':{'id':_0x477a2e[_0xbfb0('0x45')]['id']}})[_0xbfb0('0x24')](handleEntityNotFound(_0x32c4e1,null))['then'](function(_0x4998c5){if(_0x4998c5){return db['sequelize'][_0xbfb0('0x57')](function(_0x196d99){return db[_0xbfb0('0x4f')][_0xbfb0('0x55')]({'where':{'userProfileId':_0x477a2e['params']['id'],'sectionId':_[_0xbfb0('0x2a')](_0x39405f,function(_0x184c36){return _0x184c36[_0xbfb0('0x53')];})},'transaction':_0x196d99})[_0xbfb0('0x24')](function(){var _0x324584=_[_0xbfb0('0x2a')](_0x39405f,function(_0x398e76){_0x398e76[_0xbfb0('0x58')]=_0x477a2e[_0xbfb0('0x45')]['id'];return _0x398e76;});var _0x233106=[];return BPromise[_0xbfb0('0x59')](_0x324584,function(_0x2e8566){return db[_0xbfb0('0x4f')]['create'](_0x2e8566,{'include':[{'model':db[_0xbfb0('0x51')],'as':_0xbfb0('0x54')}],'raw':!![],'transaction':_0x196d99})[_0xbfb0('0x24')](function(_0xd15cc1){_0x233106['push'](_0xd15cc1[_0xbfb0('0x4b')]({'plain':!![]}));});})['then'](function(){return _0x233106;});});});}})[_0xbfb0('0x24')](function(_0x281b9a){return _0x281b9a;})[_0xbfb0('0x24')](respondWithResult(_0x32c4e1,null))['catch'](handleError(_0x32c4e1,null));};exports[_0xbfb0('0x5a')]=function(_0x39b74d,_0x14aef5){var _0x1e21ce;return db['UserProfile'][_0xbfb0('0x47')]({'where':{'id':_0x39b74d[_0xbfb0('0x45')]['id']},'attributes':['id','name']})[_0xbfb0('0x24')](handleEntityNotFound(_0x14aef5,null))[_0xbfb0('0x24')](function(_0x1fb32c){if(_0x1fb32c){_0x1e21ce=_0x1fb32c;return db[_0xbfb0('0x4f')]['destroy']({'where':{'userProfileId':_0x39b74d['params']['id'],'sectionId':_0x39b74d[_0xbfb0('0x30')][_0xbfb0('0x5b')]}});}})[_0xbfb0('0x24')](function(){return _0x1e21ce;})['then'](respondWithStatusCode(_0x14aef5,null))[_0xbfb0('0x43')](handleError(_0x14aef5,null));};exports[_0xbfb0('0x5c')]=function(_0x5356c2,_0x349ec0){var _0x457823=[];var _0x26082d=[];return db[_0xbfb0('0x4f')][_0xbfb0('0x41')]({'where':{'userProfileId':_0x5356c2[_0xbfb0('0x45')]['id']},'raw':!![]})[_0xbfb0('0x24')](function(_0x298306){_0x457823=_['filter'](_0x298306,function(_0x3ad529){return _0x3ad529[_0xbfb0('0x5d')]===0x1||_[_0xbfb0('0x5e')]([0x3eb,0x709],_0x3ad529[_0xbfb0('0x53')]);});if(!_[_0xbfb0('0x5f')](_0x457823)){return _['map'](_0x457823,function(_0x35f9ac){return _0x35f9ac[_0xbfb0('0x53')];});}else{return;}})[_0xbfb0('0x24')](function(_0x1124ce){if(_0x1124ce)_0x26082d=_0x1124ce;if(_[_0xbfb0('0x5e')](_0x26082d,0x64)){var _0xf9fed8=_[_0xbfb0('0x47')](_0x457823,{'sectionId':0x64});return hasDefaultDashboard(_0xf9fed8)['then'](function(_0x8db0a8){return _[_0xbfb0('0x2a')](_0x457823,function(_0x34ffa3){if(_0x34ffa3[_0xbfb0('0x53')]===0x64){_0x34ffa3['subsections']=_0x8db0a8;}return _0x34ffa3;});});}else{return;}})[_0xbfb0('0x24')](function(_0x7ca2e6){if(_0x7ca2e6)_0x457823=_0x7ca2e6;if(_['includes'](_0x26082d,0x3eb)){var _0x5bf319=_['find'](_0x457823,{'sectionId':0x3eb});return getCustomDashboards(_0x5bf319)['then'](function(_0x1e2e67){return _['map'](_0x457823,function(_0x5ee0cd){if(_0x5bf319[_0xbfb0('0x5d')]){if(_0x5ee0cd['sectionId']===0x3eb){_0x5ee0cd['subsections']=_0x1e2e67;}}else{if(_0x5ee0cd[_0xbfb0('0x53')]===0x64){_0x5ee0cd[_0xbfb0('0x60')]=_0x1e2e67;}}return _0x5ee0cd;});});}else{return;}})['then'](function(_0x1f892f){if(_0x1f892f)_0x457823=_0x1f892f;if(_[_0xbfb0('0x5e')](_0x26082d,0x709)){var _0x5c0ada=_[_0xbfb0('0x47')](_0x457823,{'sectionId':0x709});return getPlugins(_0x5c0ada)[_0xbfb0('0x24')](function(_0x59f1f2){if(_0x5c0ada[_0xbfb0('0x5d')]){return _[_0xbfb0('0x2a')](_0x457823,function(_0x2efed0){if(_0x2efed0[_0xbfb0('0x53')]===0x709){_0x2efed0[_0xbfb0('0x60')]=_0x59f1f2;}return _0x2efed0;});}else{var _0x55d480={'sectionId':0x76c,'enabled':0x1,'subsections':_0x59f1f2};var _0x4188b5=_[_0xbfb0('0x2a')](_0x457823);_0x4188b5['push'](_0x55d480);return _0x4188b5;}});}else{return;}})[_0xbfb0('0x24')](function(_0x308f7b){if(_0x308f7b)_0x457823=_0x308f7b;return _[_0xbfb0('0x3d')](_0x457823,[_0xbfb0('0x5d'),0x1]);})[_0xbfb0('0x24')](respondWithResult(_0x349ec0,null))[_0xbfb0('0x43')](handleError(_0x349ec0,null));};function hasDefaultDashboard(_0x123f24){var _0x53c883=[0x65];return new BPromise(function(_0x5b0df5,_0x3444c1){try{if(_0x123f24[_0xbfb0('0x50')]){_0x5b0df5(_0x53c883);}else{return db['UserProfileResource'][_0xbfb0('0x61')]({'where':{'sectionId':_0x123f24['id']},'raw':!![]})['then'](function(_0x589e74){_0x589e74?_0x5b0df5(_0x53c883):_0x5b0df5();});}}catch(_0xce6ca8){_0x3444c1(_0xce6ca8);}});}function getCustomDashboards(_0x3a3d6c){var _0x201d4a=[];return new BPromise(function(_0x219768,_0x1f4572){try{if(_0x3a3d6c[_0xbfb0('0x50')]){return db[_0xbfb0('0x62')][_0xbfb0('0x41')]({'raw':!![]})[_0xbfb0('0x24')](function(_0xeaa6ff){_0xeaa6ff[_0xbfb0('0x63')](function(_0x2dfa11){_0x201d4a[_0xbfb0('0x64')](_0x2dfa11['id']+0x1869f);});_0x219768(_0x201d4a);});}else{return db['UserProfileResource'][_0xbfb0('0x41')]({'where':{'sectionId':_0x3a3d6c['id']},'raw':!![]})[_0xbfb0('0x24')](function(_0x5f2ad7){_0x5f2ad7[_0xbfb0('0x63')](function(_0x1cc637){_0x201d4a[_0xbfb0('0x64')](_0x1cc637[_0xbfb0('0x65')]+0x1869f);});_0x219768(_0x201d4a);});}}catch(_0x440324){_0x1f4572(_0x440324);}});}function getPlugins(_0x4bcd2f){var _0x3e711c=[];return new BPromise(function(_0x51115b,_0x396d19){try{if(_0x4bcd2f[_0xbfb0('0x50')]){return db[_0xbfb0('0x66')][_0xbfb0('0x41')]({'raw':!![]})[_0xbfb0('0x24')](function(_0xf1773a){_0xf1773a[_0xbfb0('0x63')](function(_0x2095b3){_0x3e711c[_0xbfb0('0x64')](_0x2095b3['id']+0x15b38);});_0x51115b(_0x3e711c);});}else{return db['UserProfileResource'][_0xbfb0('0x41')]({'where':{'sectionId':_0x4bcd2f['id']},'raw':!![]})['then'](function(_0x278410){_0x278410[_0xbfb0('0x63')](function(_0x450656){_0x3e711c['push'](_0x450656['resourceId']+0x15b38);});_0x51115b(_0x3e711c);});}}catch(_0x37d1b4){_0x396d19(_0x37d1b4);}});}exports[_0xbfb0('0x67')]=function(_0x29efef,_0x5ed8bc){return db[_0xbfb0('0x2b')][_0xbfb0('0x47')]({'where':{'id':_0x29efef['params']['id']}})[_0xbfb0('0x24')](handleEntityNotFound(_0x5ed8bc,null))['then'](function(_0x5d4dd3){if(_0x5d4dd3){return db[_0xbfb0('0x68')]['transaction'](function(_0x1cb991){return db[_0xbfb0('0x4f')][_0xbfb0('0x41')]({'where':{'userProfileId':_0x29efef[_0xbfb0('0x45')]['id']},'attributes':['id'],'raw':!![]})[_0xbfb0('0x24')](function(_0x22d09f){if(_0x22d09f){return db['UserProfileSection'][_0xbfb0('0x55')]({'where':{'userProfileId':_0x29efef[_0xbfb0('0x45')]['id'],'id':_['map'](_0x22d09f,function(_0x1817b0){return _0x1817b0['id'];})},'transaction':_0x1cb991});}})['then'](function(_0x17e22a){var _0x144bc9=_[_0xbfb0('0x2a')](_0x29efef[_0xbfb0('0x49')],function(_0x1b1252){_0x1b1252[_0xbfb0('0x58')]=_0x29efef[_0xbfb0('0x45')]['id'];return _0x1b1252;});return db[_0xbfb0('0x4f')]['bulkCreate'](_0x144bc9,{'raw':!![],'transaction':_0x1cb991});})['then'](function(_0x5cf9d4){var _0x4c02d9=_[_0xbfb0('0x3d')](_['map'](_0x5cf9d4,function(_0x355aba){return _0x355aba[_0xbfb0('0x4b')]({'plain':!![]});}),{'includeAll':![]});if(_0x4c02d9){return db[_0xbfb0('0x4f')][_0xbfb0('0x41')]({'where':{'userProfileId':_0x29efef['params']['id'],'sectionId':_[_0xbfb0('0x2a')](_0x4c02d9,function(_0x124b22){return _0x124b22[_0xbfb0('0x53')];})},'attributes':['id',_0xbfb0('0x53')],'raw':!![]})['then'](function(_0x324443){var _0x4cd4d6=_[_0xbfb0('0x2a')](_0x29efef[_0xbfb0('0x49')],function(_0x21f491){_0x21f491['userProfileId']=_0x29efef[_0xbfb0('0x45')]['id'];return _0x21f491;});return db[_0xbfb0('0x51')]['bulkCreate'](_0x4cd4d6,{'raw':!![],'transaction':_0x1cb991});});}})[_0xbfb0('0x43')](handleError(_0x5ed8bc,null));});}})['then'](function(_0x7cc924){var _0x2e38fc=_[_0xbfb0('0x2a')](_0x7cc924,function(_0x388742){return _0x388742['get']({'plain':!![]});});})[_0xbfb0('0x24')](respondWithResult(_0x5ed8bc,null))[_0xbfb0('0x43')](handleError(_0x5ed8bc,null));};exports[_0xbfb0('0x69')]=function(_0x52d7f6,_0x56a2f1,_0x465dc7){return db[_0xbfb0('0x2b')][_0xbfb0('0x47')]({'where':{'id':_0x52d7f6[_0xbfb0('0x45')]['id']}})['then'](handleEntityNotFound(_0x56a2f1,null))[_0xbfb0('0x24')](function(_0x2a4145){if(_0x2a4145){return _0x2a4145[_0xbfb0('0x69')](_0x52d7f6[_0xbfb0('0x30')][_0xbfb0('0x5b')]);}})[_0xbfb0('0x24')](respondWithStatusCode(_0x56a2f1,null))[_0xbfb0('0x43')](handleError(_0x56a2f1,null));};exports[_0xbfb0('0x6a')]=function(_0x5fc2de,_0x5e35b7){var _0x37bf3e={};if(!_0x5fc2de[_0xbfb0('0x30')]['section'])throw new Error(_0xbfb0('0x6b'));if(!_0x5fc2de[_0xbfb0('0x30')][_0xbfb0('0x38')](_0xbfb0('0x39'))){_0x37bf3e[_0xbfb0('0x1d')]=qs[_0xbfb0('0x1d')](_0x5fc2de[_0xbfb0('0x30')][_0xbfb0('0x1d')]);_0x37bf3e['offset']=qs['offset'](_0x5fc2de[_0xbfb0('0x30')]['offset']);}return db[_0xbfb0('0x2b')]['find']({'where':{'id':_0x5fc2de['params']['id']}})[_0xbfb0('0x24')](function(_0x24ae1c){if(!_0x24ae1c)throw new Error(_0xbfb0('0x6c')+_0x5fc2de[_0xbfb0('0x45')]['id']);return db['UserProfile'][_0xbfb0('0x6a')](_0x5fc2de);})['then'](respondWithFilteredResult(_0x5e35b7,_0x37bf3e))['catch'](handleError(_0x5e35b7,null));};
\ No newline at end of file
+var _0x4bd3=['body','createdAt','sequelize','each','autoAssociation','UserProfileResource','sectionId','UserProfileSection','Resources','update','describe','addSections','transaction','userProfileId','push','removeSections','ids','getSections','includes','subsections','enabled','findOne','Dashboard','forEach','Plugin','resourceId','addResources','bulkCreate','removeResources','getResources','section','Missing\x20section\x20parameter','No\x20User\x20Profile\x20found\x20for\x20id\x20','eml-format','zip-dir','fast-json-patch','mustache','util','path','to-csv','ejs','lodash','squel','jsforce','desk.js','querystring','papaparse','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','../../config/environment','redis','defaults','localhost','socket.io-emitter','./userProfile.socket','register','end','status','json','offset','limit','undefined','count','set','Content-Range','reject','then','destroy','error','stack','name','send','index','UserProfile','rawAttributes','fieldName','key','model','map','query','keys','filters','attributes','fields','hasOwnProperty','nolimit','order','sort','pick','filter','where','type','VIRTUAL','merge','options','include','findAll','rows','params','intersection','length','includeAll','find','create','catch','clone','get','omit','updatedAt','crudPermissions'];(function(_0x1d24eb,_0x12295b){var _0x1dc576=function(_0x4d5770){while(--_0x4d5770){_0x1d24eb['push'](_0x1d24eb['shift']());}};_0x1dc576(++_0x12295b);}(_0x4bd3,0x174));var _0x34bd=function(_0x30bd53,_0x464d9e){_0x30bd53=_0x30bd53-0x0;var _0x38c4d5=_0x4bd3[_0x30bd53];return _0x38c4d5;};'use strict';var emlformat=require(_0x34bd('0x0'));var rimraf=require('rimraf');var zipdir=require(_0x34bd('0x1'));var jsonpatch=require(_0x34bd('0x2'));var rp=require('request-promise');var moment=require('moment');var BPromise=require('bluebird');var Mustache=require(_0x34bd('0x3'));var util=require(_0x34bd('0x4'));var path=require(_0x34bd('0x5'));var sox=require('sox');var csv=require(_0x34bd('0x6'));var ejs=require(_0x34bd('0x7'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x34bd('0x8'));var squel=require(_0x34bd('0x9'));var crypto=require('crypto');var jsforce=require(_0x34bd('0xa'));var deskjs=require(_0x34bd('0xb'));var toCsv=require(_0x34bd('0x6'));var querystring=require(_0x34bd('0xc'));var Papa=require(_0x34bd('0xd'));var Redis=require(_0x34bd('0xe'));var authService=require('../../components/auth/service');var qs=require(_0x34bd('0xf'));var as=require(_0x34bd('0x10'));var hardwareService=require(_0x34bd('0x11'));var logger=require(_0x34bd('0x12'))('api');var utils=require('../../config/utils');var config=require(_0x34bd('0x13'));var licenseUtil=require('../../config/license/util');var db=require('../../mysqldb')['db'];config[_0x34bd('0x14')]=_[_0x34bd('0x15')](config[_0x34bd('0x14')],{'host':_0x34bd('0x16'),'port':0x18eb});var socket=require(_0x34bd('0x17'))(new Redis(config[_0x34bd('0x14')]));require(_0x34bd('0x18'))[_0x34bd('0x19')](socket);function respondWithStatusCode(_0xf6d2f2,_0x59ed5d){_0x59ed5d=_0x59ed5d||0xcc;return function(_0x3fa6a8){if(_0x3fa6a8){return _0xf6d2f2['sendStatus'](_0x59ed5d);}return _0xf6d2f2['status'](_0x59ed5d)[_0x34bd('0x1a')]();};}function respondWithResult(_0x30b3f2,_0x280c1a){_0x280c1a=_0x280c1a||0xc8;return function(_0x2dc917){if(_0x2dc917){return _0x30b3f2[_0x34bd('0x1b')](_0x280c1a)[_0x34bd('0x1c')](_0x2dc917);}};}function respondWithFilteredResult(_0xd39d72,_0x1c12e8){return function(_0x3b4bf8){if(_0x3b4bf8){var _0x72b197=typeof _0x1c12e8[_0x34bd('0x1d')]==='undefined'&&typeof _0x1c12e8[_0x34bd('0x1e')]===_0x34bd('0x1f');var _0x265e70=_0x3b4bf8[_0x34bd('0x20')];var _0x3976e4=_0x72b197?0x0:_0x1c12e8[_0x34bd('0x1d')];var _0x288638=_0x72b197?_0x3b4bf8[_0x34bd('0x20')]:_0x1c12e8[_0x34bd('0x1d')]+_0x1c12e8['limit'];var _0x15c0d1;if(_0x288638>=_0x265e70){_0x288638=_0x265e70;_0x15c0d1=0xc8;}else{_0x15c0d1=0xce;}_0xd39d72[_0x34bd('0x1b')](_0x15c0d1);return _0xd39d72[_0x34bd('0x21')](_0x34bd('0x22'),_0x3976e4+'-'+_0x288638+'/'+_0x265e70)[_0x34bd('0x1c')](_0x3b4bf8);}return null;};}function patchUpdates(_0x5e0c06){return function(_0x582772){try{jsonpatch['apply'](_0x582772,_0x5e0c06,!![]);}catch(_0x4edf84){return BPromise[_0x34bd('0x23')](_0x4edf84);}return _0x582772['save']();};}function saveUpdates(_0x10fc4b,_0x1c2282){return function(_0x428140){if(_0x428140){return _0x428140['update'](_0x10fc4b)[_0x34bd('0x24')](function(_0x14479a){return _0x14479a;});}return null;};}function removeEntity(_0x4f0dff,_0x457006){return function(_0x5be702){if(_0x5be702){return _0x5be702[_0x34bd('0x25')]()[_0x34bd('0x24')](function(){_0x4f0dff[_0x34bd('0x1b')](0xcc)[_0x34bd('0x1a')]();});}};}function handleEntityNotFound(_0x56baf7,_0x45b4eb){return function(_0x3fe8b0){if(!_0x3fe8b0){_0x56baf7['sendStatus'](0x194);}return _0x3fe8b0;};}function handleError(_0x27747e,_0x510a30){_0x510a30=_0x510a30||0x1f4;return function(_0x16581f){logger[_0x34bd('0x26')](_0x16581f[_0x34bd('0x27')]);if(_0x16581f[_0x34bd('0x28')]){delete _0x16581f[_0x34bd('0x28')];}_0x27747e['status'](_0x510a30)[_0x34bd('0x29')](_0x16581f);};}exports[_0x34bd('0x2a')]=function(_0x56d3b9,_0x5d1662){var _0x38bdba={},_0xca9897={},_0xd176f7={'count':0x0,'rows':[]};var _0x536b2c=_['map'](db[_0x34bd('0x2b')][_0x34bd('0x2c')],function(_0x1387b5){return{'name':_0x1387b5[_0x34bd('0x2d')],'type':_0x1387b5['type'][_0x34bd('0x2e')]};});_0xca9897[_0x34bd('0x2f')]=_[_0x34bd('0x30')](_0x536b2c,_0x34bd('0x28'));_0xca9897[_0x34bd('0x31')]=_[_0x34bd('0x32')](_0x56d3b9['query']);_0xca9897[_0x34bd('0x33')]=_['intersection'](_0xca9897[_0x34bd('0x2f')],_0xca9897[_0x34bd('0x31')]);_0x38bdba[_0x34bd('0x34')]=_['intersection'](_0xca9897[_0x34bd('0x2f')],qs[_0x34bd('0x35')](_0x56d3b9['query'][_0x34bd('0x35')]));_0x38bdba[_0x34bd('0x34')]=_0x38bdba[_0x34bd('0x34')]['length']?_0x38bdba[_0x34bd('0x34')]:_0xca9897[_0x34bd('0x2f')];if(!_0x56d3b9['query'][_0x34bd('0x36')](_0x34bd('0x37'))){_0x38bdba[_0x34bd('0x1e')]=qs[_0x34bd('0x1e')](_0x56d3b9[_0x34bd('0x31')][_0x34bd('0x1e')]);_0x38bdba['offset']=qs['offset'](_0x56d3b9['query'][_0x34bd('0x1d')]);}_0x38bdba[_0x34bd('0x38')]=qs['sort'](_0x56d3b9['query'][_0x34bd('0x39')]);_0x38bdba['where']=qs['filters'](_[_0x34bd('0x3a')](_0x56d3b9[_0x34bd('0x31')],_0xca9897[_0x34bd('0x33')]),_0x536b2c);if(_0x56d3b9[_0x34bd('0x31')][_0x34bd('0x3b')]){_0x38bdba['where']=_['merge'](_0x38bdba[_0x34bd('0x3c')],{'$or':_['map'](_0x536b2c,function(_0xce6bc6){if(_0xce6bc6[_0x34bd('0x3d')]!==_0x34bd('0x3e')){var _0x15d62d={};_0x15d62d[_0xce6bc6[_0x34bd('0x28')]]={'$like':'%'+_0x56d3b9['query'][_0x34bd('0x3b')]+'%'};return _0x15d62d;}})});}_0x38bdba=_[_0x34bd('0x3f')]({},_0x38bdba,_0x56d3b9[_0x34bd('0x40')]);var _0x1b86e1={'where':_0x38bdba['where']};return db[_0x34bd('0x2b')]['count'](_0x1b86e1)[_0x34bd('0x24')](function(_0x560282){_0xd176f7['count']=_0x560282;if(_0x56d3b9[_0x34bd('0x31')]['includeAll']){_0x38bdba[_0x34bd('0x41')]=[{'all':!![]}];}return db[_0x34bd('0x2b')][_0x34bd('0x42')](_0x38bdba);})[_0x34bd('0x24')](function(_0x26d73e){_0xd176f7[_0x34bd('0x43')]=_0x26d73e;return _0xd176f7;})[_0x34bd('0x24')](respondWithFilteredResult(_0x5d1662,_0x38bdba))['catch'](handleError(_0x5d1662,null));};exports['show']=function(_0x547f97,_0xede936){var _0x3e4d4d={'raw':![],'where':{'id':_0x547f97[_0x34bd('0x44')]['id']}},_0x22ebf4={};_0x22ebf4['model']=_[_0x34bd('0x32')](db[_0x34bd('0x2b')][_0x34bd('0x2c')]);_0x22ebf4[_0x34bd('0x31')]=_[_0x34bd('0x32')](_0x547f97['query']);_0x22ebf4[_0x34bd('0x33')]=_['intersection'](_0x22ebf4['model'],_0x22ebf4[_0x34bd('0x31')]);_0x3e4d4d['attributes']=_[_0x34bd('0x45')](_0x22ebf4[_0x34bd('0x2f')],qs[_0x34bd('0x35')](_0x547f97[_0x34bd('0x31')][_0x34bd('0x35')]));_0x3e4d4d['attributes']=_0x3e4d4d['attributes'][_0x34bd('0x46')]?_0x3e4d4d['attributes']:_0x22ebf4[_0x34bd('0x2f')];if(_0x547f97[_0x34bd('0x31')][_0x34bd('0x47')]){_0x3e4d4d['include']=[{'all':!![]}];}_0x3e4d4d=_['merge']({},_0x3e4d4d,_0x547f97['options']);return db['UserProfile'][_0x34bd('0x48')](_0x3e4d4d)['then'](handleEntityNotFound(_0xede936,null))[_0x34bd('0x24')](respondWithResult(_0xede936,null))['catch'](handleError(_0xede936,null));};exports[_0x34bd('0x49')]=function(_0x1d01d7,_0x1fa341){return db[_0x34bd('0x2b')][_0x34bd('0x49')](_0x1d01d7['body'],{})[_0x34bd('0x24')](respondWithResult(_0x1fa341,0xc9))[_0x34bd('0x4a')](handleError(_0x1fa341,null));};exports[_0x34bd('0x4b')]=function(_0x1e60d,_0x173da0){var _0x4be4fa={'where':{'id':_0x1e60d[_0x34bd('0x44')]['id']}},_0x14833b={};_0x14833b['model']=_[_0x34bd('0x32')](db[_0x34bd('0x2b')]['rawAttributes']);_0x4be4fa['attributes']=_[_0x34bd('0x45')](_0x14833b['model'],qs['fields'](_0x1e60d[_0x34bd('0x31')][_0x34bd('0x35')]));_0x4be4fa['attributes']=_0x4be4fa['attributes']['length']?_0x4be4fa['attributes']:_0x14833b[_0x34bd('0x2f')];if(_0x1e60d[_0x34bd('0x31')]['includeAll']){_0x4be4fa['include']=[{'all':!![]}];}_0x4be4fa=_['merge']({},_0x4be4fa,_0x1e60d[_0x34bd('0x40')]);return db[_0x34bd('0x2b')]['find'](_0x4be4fa)[_0x34bd('0x24')](handleEntityNotFound(_0x173da0,null))[_0x34bd('0x24')](function(_0x3f714b){if(_0x3f714b){var _0x2c4064=_0x3f714b[_0x34bd('0x4c')]({'plain':!![]});_0x2c4064=qs[_0x34bd('0x4d')](_0x2c4064,['id','createdAt',_0x34bd('0x4e'),_0x34bd('0x4f')]);_0x1e60d[_0x34bd('0x50')]=_[_0x34bd('0x4d')](_0x1e60d['body'],['id',_0x34bd('0x51'),'updatedAt']);return db[_0x34bd('0x52')]['transaction'](function(_0x2560e8){return db[_0x34bd('0x2b')][_0x34bd('0x49')](_[_0x34bd('0x3f')](_0x2c4064,_0x1e60d[_0x34bd('0x50')]),{'include':_0x1e60d[_0x34bd('0x31')][_0x34bd('0x47')]?[{'all':!![]}]:undefined,'transaction':_0x2560e8})[_0x34bd('0x24')](function(_0x4768f8){var _0x3b1dd5=_0x4768f8[_0x34bd('0x4c')]({'plain':!![]});return db['UserProfileSection'][_0x34bd('0x42')]({'where':{'userProfileId':_0x1e60d['params']['id']},'raw':!![]})[_0x34bd('0x24')](function(_0x4f2091){if(_0x4f2091){return BPromise[_0x34bd('0x53')](_0x4f2091,function(_0x50ed7f){return new BPromise(function(_0x1d85d0,_0x274ec9){if(_0x50ed7f[_0x34bd('0x54')]===null||_0x50ed7f[_0x34bd('0x54')]===0x1)_0x1d85d0(null);return db[_0x34bd('0x55')][_0x34bd('0x42')]({'where':{'sectionId':_0x50ed7f['id']},'raw':!![]})[_0x34bd('0x24')](function(_0xeffa5d){var _0x432291=_[_0x34bd('0x30')](_0xeffa5d,function(_0x25a505){return qs[_0x34bd('0x4d')](_0x25a505,['id',_0x34bd('0x51'),_0x34bd('0x4e'),_0x34bd('0x56')]);});_0x1d85d0(_0x432291);})['catch'](function(_0x5c5766){_0x274ec9(_0x5c5766);});})[_0x34bd('0x24')](function(_0x79e6b4){var _0x352f17=qs[_0x34bd('0x4d')](_0x50ed7f,['id',_0x34bd('0x51'),'updatedAt']);_0x352f17['userProfileId']=_0x3b1dd5['id'];if(_0x79e6b4)_0x352f17['Resources']=_0x79e6b4;return _0x352f17;})['then'](function(_0x24c635){return db[_0x34bd('0x57')]['create'](_0x24c635,{'include':[{'model':db[_0x34bd('0x55')],'as':_0x34bd('0x58')}],'raw':!![],'transaction':_0x2560e8});});})[_0x34bd('0x24')](function(){return _0x3b1dd5;});}});});});}})['then'](respondWithResult(_0x173da0,0xc9))[_0x34bd('0x4a')](handleError(_0x173da0,null));};exports[_0x34bd('0x59')]=function(_0x2fac2a,_0x344be3){if(_0x2fac2a[_0x34bd('0x50')]['id']){delete _0x2fac2a[_0x34bd('0x50')]['id'];}return db[_0x34bd('0x2b')][_0x34bd('0x48')]({'where':{'id':_0x2fac2a['params']['id']}})['then'](handleEntityNotFound(_0x344be3,null))[_0x34bd('0x24')](saveUpdates(_0x2fac2a['body'],null))[_0x34bd('0x24')](respondWithResult(_0x344be3,null))[_0x34bd('0x4a')](handleError(_0x344be3,null));};exports[_0x34bd('0x25')]=function(_0x58a6eb,_0x4e5ea1){return db[_0x34bd('0x2b')][_0x34bd('0x48')]({'where':{'id':_0x58a6eb[_0x34bd('0x44')]['id']}})['then'](handleEntityNotFound(_0x4e5ea1,null))['then'](removeEntity(_0x4e5ea1,null))[_0x34bd('0x4a')](handleError(_0x4e5ea1,null));};exports[_0x34bd('0x5a')]=function(_0x32c61f,_0x1f408a){return db[_0x34bd('0x2b')][_0x34bd('0x5a')]()[_0x34bd('0x24')](respondWithResult(_0x1f408a,null))[_0x34bd('0x4a')](handleError(_0x1f408a,null));};exports[_0x34bd('0x5b')]=function(_0x4f397f,_0x4d3118){var _0x3878a0=_0x4f397f['body'];return db[_0x34bd('0x2b')][_0x34bd('0x48')]({'where':{'id':_0x4f397f[_0x34bd('0x44')]['id']}})[_0x34bd('0x24')](handleEntityNotFound(_0x4d3118,null))['then'](function(_0x50ae2e){if(_0x50ae2e){return db[_0x34bd('0x52')][_0x34bd('0x5c')](function(_0x38e91){return db['UserProfileSection'][_0x34bd('0x25')]({'where':{'userProfileId':_0x4f397f['params']['id'],'sectionId':_[_0x34bd('0x30')](_0x3878a0,function(_0x35d9be){return _0x35d9be[_0x34bd('0x56')];})},'transaction':_0x38e91})['then'](function(){var _0x353fe9=_['map'](_0x3878a0,function(_0x5d96b9){_0x5d96b9[_0x34bd('0x5d')]=_0x4f397f[_0x34bd('0x44')]['id'];return _0x5d96b9;});var _0x29a259=[];return BPromise['each'](_0x353fe9,function(_0x3f909d){return db[_0x34bd('0x57')][_0x34bd('0x49')](_0x3f909d,{'include':[{'model':db['UserProfileResource'],'as':_0x34bd('0x58')}],'raw':!![],'transaction':_0x38e91})[_0x34bd('0x24')](function(_0x385ab3){_0x29a259[_0x34bd('0x5e')](_0x385ab3[_0x34bd('0x4c')]({'plain':!![]}));});})[_0x34bd('0x24')](function(){return _0x29a259;});});});}})[_0x34bd('0x24')](function(_0x2297f6){return _0x2297f6;})[_0x34bd('0x24')](respondWithResult(_0x4d3118,null))[_0x34bd('0x4a')](handleError(_0x4d3118,null));};exports[_0x34bd('0x5f')]=function(_0x59e377,_0x24e164){var _0x507806;return db[_0x34bd('0x2b')]['find']({'where':{'id':_0x59e377[_0x34bd('0x44')]['id']},'attributes':['id',_0x34bd('0x28')]})[_0x34bd('0x24')](handleEntityNotFound(_0x24e164,null))[_0x34bd('0x24')](function(_0x3e426d){if(_0x3e426d){_0x507806=_0x3e426d;return db[_0x34bd('0x57')][_0x34bd('0x25')]({'where':{'userProfileId':_0x59e377[_0x34bd('0x44')]['id'],'sectionId':_0x59e377[_0x34bd('0x31')][_0x34bd('0x60')]}});}})['then'](function(){return _0x507806;})['then'](respondWithStatusCode(_0x24e164,null))[_0x34bd('0x4a')](handleError(_0x24e164,null));};exports[_0x34bd('0x61')]=function(_0xfc56a3,_0x5b60b4){var _0x5e7c84=[];var _0x5758da=[];return db[_0x34bd('0x57')][_0x34bd('0x42')]({'where':{'userProfileId':_0xfc56a3[_0x34bd('0x44')]['id']},'raw':!![]})[_0x34bd('0x24')](function(_0x7fef8b){_0x5e7c84=_['filter'](_0x7fef8b,function(_0x16a79f){return _0x16a79f['enabled']===0x1||_[_0x34bd('0x62')]([0x3eb,0x709],_0x16a79f[_0x34bd('0x56')]);});if(!_['isEmpty'](_0x5e7c84)){return _[_0x34bd('0x30')](_0x5e7c84,function(_0x5df452){return _0x5df452[_0x34bd('0x56')];});}else{return;}})['then'](function(_0x4c513a){if(_0x4c513a)_0x5758da=_0x4c513a;if(_['includes'](_0x5758da,0x64)){var _0x397396=_[_0x34bd('0x48')](_0x5e7c84,{'sectionId':0x64});return hasDefaultDashboard(_0x397396)[_0x34bd('0x24')](function(_0x35d257){return _[_0x34bd('0x30')](_0x5e7c84,function(_0x34bb6d){if(_0x34bb6d[_0x34bd('0x56')]===0x64){_0x34bb6d[_0x34bd('0x63')]=_0x35d257;}return _0x34bb6d;});});}else{return;}})['then'](function(_0x62b35){if(_0x62b35)_0x5e7c84=_0x62b35;if(_[_0x34bd('0x62')](_0x5758da,0x3eb)){var _0x2674b9=_['find'](_0x5e7c84,{'sectionId':0x3eb});return getCustomDashboards(_0x2674b9)['then'](function(_0x49c5c3){return _[_0x34bd('0x30')](_0x5e7c84,function(_0x2a60c1){if(_0x2674b9['enabled']){if(_0x2a60c1[_0x34bd('0x56')]===0x3eb){_0x2a60c1['subsections']=_0x49c5c3;}}else{if(_0x2a60c1[_0x34bd('0x56')]===0x64){_0x2a60c1[_0x34bd('0x63')]=_0x49c5c3;}}return _0x2a60c1;});});}else{return;}})[_0x34bd('0x24')](function(_0x4c6508){if(_0x4c6508)_0x5e7c84=_0x4c6508;if(_[_0x34bd('0x62')](_0x5758da,0x709)){var _0x4a05cb=_[_0x34bd('0x48')](_0x5e7c84,{'sectionId':0x709});return getPlugins(_0x4a05cb)[_0x34bd('0x24')](function(_0x3a087c){if(_0x4a05cb[_0x34bd('0x64')]){return _[_0x34bd('0x30')](_0x5e7c84,function(_0x1c25a5){if(_0x1c25a5[_0x34bd('0x56')]===0x709){_0x1c25a5[_0x34bd('0x63')]=_0x3a087c;}return _0x1c25a5;});}else{var _0x200da1={'sectionId':0x76c,'enabled':0x1,'subsections':_0x3a087c};var _0x3a9650=_[_0x34bd('0x30')](_0x5e7c84);_0x3a9650[_0x34bd('0x5e')](_0x200da1);return _0x3a9650;}});}else{return;}})[_0x34bd('0x24')](function(_0x48d9b9){if(_0x48d9b9)_0x5e7c84=_0x48d9b9;return _['filter'](_0x5e7c84,[_0x34bd('0x64'),0x1]);})[_0x34bd('0x24')](respondWithResult(_0x5b60b4,null))[_0x34bd('0x4a')](handleError(_0x5b60b4,null));};function hasDefaultDashboard(_0x384bf0){var _0x36aca5=[0x65];return new BPromise(function(_0x49455c,_0x1799dd){try{if(_0x384bf0[_0x34bd('0x54')]){_0x49455c(_0x36aca5);}else{return db[_0x34bd('0x55')][_0x34bd('0x65')]({'where':{'sectionId':_0x384bf0['id']},'raw':!![]})['then'](function(_0x2b838a){_0x2b838a?_0x49455c(_0x36aca5):_0x49455c();});}}catch(_0x572ac2){_0x1799dd(_0x572ac2);}});}function getCustomDashboards(_0x5e329b){var _0x49ba99=[];return new BPromise(function(_0x59a5cf,_0x325f8a){try{if(_0x5e329b[_0x34bd('0x54')]){return db[_0x34bd('0x66')]['findAll']({'raw':!![]})[_0x34bd('0x24')](function(_0x21588f){_0x21588f[_0x34bd('0x67')](function(_0x2b27c7){_0x49ba99[_0x34bd('0x5e')](_0x2b27c7['id']+0x1869f);});_0x59a5cf(_0x49ba99);});}else{return db[_0x34bd('0x55')][_0x34bd('0x42')]({'where':{'sectionId':_0x5e329b['id']},'raw':!![]})[_0x34bd('0x24')](function(_0x86a995){_0x86a995[_0x34bd('0x67')](function(_0x4451ef){_0x49ba99['push'](_0x4451ef['resourceId']+0x1869f);});_0x59a5cf(_0x49ba99);});}}catch(_0x26620a){_0x325f8a(_0x26620a);}});}function getPlugins(_0x50f8e7){var _0xbe3d9c=[];return new BPromise(function(_0x384905,_0x2e2ba1){try{if(_0x50f8e7[_0x34bd('0x54')]){return db[_0x34bd('0x68')][_0x34bd('0x42')]({'raw':!![]})[_0x34bd('0x24')](function(_0xf45fee){_0xf45fee['forEach'](function(_0x8d35a9){_0xbe3d9c[_0x34bd('0x5e')](_0x8d35a9['id']+0x15b38);});_0x384905(_0xbe3d9c);});}else{return db[_0x34bd('0x55')]['findAll']({'where':{'sectionId':_0x50f8e7['id']},'raw':!![]})[_0x34bd('0x24')](function(_0x4022a0){_0x4022a0[_0x34bd('0x67')](function(_0x4502e6){_0xbe3d9c['push'](_0x4502e6[_0x34bd('0x69')]+0x15b38);});_0x384905(_0xbe3d9c);});}}catch(_0x3fe460){_0x2e2ba1(_0x3fe460);}});}exports[_0x34bd('0x6a')]=function(_0x5f2e77,_0xd504ea){return db[_0x34bd('0x2b')][_0x34bd('0x48')]({'where':{'id':_0x5f2e77[_0x34bd('0x44')]['id']}})[_0x34bd('0x24')](handleEntityNotFound(_0xd504ea,null))[_0x34bd('0x24')](function(_0x4b4347){if(_0x4b4347){return db[_0x34bd('0x52')][_0x34bd('0x5c')](function(_0x19d537){return db[_0x34bd('0x57')][_0x34bd('0x42')]({'where':{'userProfileId':_0x5f2e77[_0x34bd('0x44')]['id']},'attributes':['id'],'raw':!![]})[_0x34bd('0x24')](function(_0x171d0c){if(_0x171d0c){return db[_0x34bd('0x57')][_0x34bd('0x25')]({'where':{'userProfileId':_0x5f2e77[_0x34bd('0x44')]['id'],'id':_[_0x34bd('0x30')](_0x171d0c,function(_0xeecfb4){return _0xeecfb4['id'];})},'transaction':_0x19d537});}})[_0x34bd('0x24')](function(_0x47a050){var _0x70c6a9=_['map'](_0x5f2e77[_0x34bd('0x50')],function(_0x29a09c){_0x29a09c[_0x34bd('0x5d')]=_0x5f2e77[_0x34bd('0x44')]['id'];return _0x29a09c;});return db[_0x34bd('0x57')][_0x34bd('0x6b')](_0x70c6a9,{'raw':!![],'transaction':_0x19d537});})[_0x34bd('0x24')](function(_0x32de85){var _0x5addf9=_[_0x34bd('0x3b')](_[_0x34bd('0x30')](_0x32de85,function(_0x3efd93){return _0x3efd93['get']({'plain':!![]});}),{'includeAll':![]});if(_0x5addf9){return db[_0x34bd('0x57')][_0x34bd('0x42')]({'where':{'userProfileId':_0x5f2e77[_0x34bd('0x44')]['id'],'sectionId':_[_0x34bd('0x30')](_0x5addf9,function(_0x57b075){return _0x57b075[_0x34bd('0x56')];})},'attributes':['id',_0x34bd('0x56')],'raw':!![]})[_0x34bd('0x24')](function(_0xda9ff9){var _0x2b8917=_['map'](_0x5f2e77[_0x34bd('0x50')],function(_0x4b067d){_0x4b067d['userProfileId']=_0x5f2e77[_0x34bd('0x44')]['id'];return _0x4b067d;});return db[_0x34bd('0x55')][_0x34bd('0x6b')](_0x2b8917,{'raw':!![],'transaction':_0x19d537});});}})['catch'](handleError(_0xd504ea,null));});}})[_0x34bd('0x24')](function(_0x5cea3e){var _0x270d7e=_[_0x34bd('0x30')](_0x5cea3e,function(_0x5e9e73){return _0x5e9e73['get']({'plain':!![]});});})['then'](respondWithResult(_0xd504ea,null))[_0x34bd('0x4a')](handleError(_0xd504ea,null));};exports[_0x34bd('0x6c')]=function(_0x563e11,_0x476c1f,_0x56093c){return db[_0x34bd('0x2b')][_0x34bd('0x48')]({'where':{'id':_0x563e11[_0x34bd('0x44')]['id']}})[_0x34bd('0x24')](handleEntityNotFound(_0x476c1f,null))[_0x34bd('0x24')](function(_0x459be1){if(_0x459be1){return _0x459be1[_0x34bd('0x6c')](_0x563e11[_0x34bd('0x31')]['ids']);}})[_0x34bd('0x24')](respondWithStatusCode(_0x476c1f,null))[_0x34bd('0x4a')](handleError(_0x476c1f,null));};exports[_0x34bd('0x6d')]=function(_0x2e9d66,_0x2f8e79){var _0xa42b8e={};if(!_0x2e9d66[_0x34bd('0x31')][_0x34bd('0x6e')])throw new Error(_0x34bd('0x6f'));if(!_0x2e9d66[_0x34bd('0x31')]['hasOwnProperty'](_0x34bd('0x37'))){_0xa42b8e['limit']=qs['limit'](_0x2e9d66[_0x34bd('0x31')][_0x34bd('0x1e')]);_0xa42b8e[_0x34bd('0x1d')]=qs[_0x34bd('0x1d')](_0x2e9d66['query'][_0x34bd('0x1d')]);}return db[_0x34bd('0x2b')][_0x34bd('0x48')]({'where':{'id':_0x2e9d66[_0x34bd('0x44')]['id']}})['then'](function(_0x5d0e56){if(!_0x5d0e56)throw new Error(_0x34bd('0x70')+_0x2e9d66[_0x34bd('0x44')]['id']);return db['UserProfile'][_0x34bd('0x6d')](_0x2e9d66);})[_0x34bd('0x24')](respondWithFilteredResult(_0x2f8e79,_0xa42b8e))['catch'](handleError(_0x2f8e79,null));};
\ No newline at end of file
index 2bf0c8a..acd20b8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5f2f=['remove','emit','hasOwnProperty','hook','exports','events','../../mysqldb','UserProfile','setMaxListeners','save','update'];(function(_0x46bac9,_0x44383f){var _0x4ebe14=function(_0x20112e){while(--_0x20112e){_0x46bac9['push'](_0x46bac9['shift']());}};_0x4ebe14(++_0x44383f);}(_0x5f2f,0x73));var _0xf5f2=function(_0x434a49,_0x232425){_0x434a49=_0x434a49-0x0;var _0x426baf=_0x5f2f[_0x434a49];return _0x426baf;};'use strict';var EventEmitter=require(_0xf5f2('0x0'));var UserProfile=require(_0xf5f2('0x1'))['db'][_0xf5f2('0x2')];var UserProfileEvents=new EventEmitter();UserProfileEvents[_0xf5f2('0x3')](0x0);var events={'afterCreate':_0xf5f2('0x4'),'afterUpdate':_0xf5f2('0x5'),'afterDestroy':_0xf5f2('0x6')};function emitEvent(_0x107cf){return function(_0x501fbd,_0x4854b6,_0x1665c7){UserProfileEvents[_0xf5f2('0x7')](_0x107cf+':'+_0x501fbd['id'],_0x501fbd);UserProfileEvents[_0xf5f2('0x7')](_0x107cf,_0x501fbd);_0x1665c7(null);};}for(var e in events){if(events[_0xf5f2('0x8')](e)){var event=events[e];UserProfile[_0xf5f2('0x9')](e,emitEvent(event));}}module[_0xf5f2('0xa')]=UserProfileEvents;
\ No newline at end of file
+var _0x430c=['update','emit','hasOwnProperty','exports','events','setMaxListeners','save'];(function(_0x49cfb0,_0x430675){var _0x56954e=function(_0x401391){while(--_0x401391){_0x49cfb0['push'](_0x49cfb0['shift']());}};_0x56954e(++_0x430675);}(_0x430c,0x1a1));var _0xc430=function(_0x3c2b2e,_0x3e6e53){_0x3c2b2e=_0x3c2b2e-0x0;var _0x27a338=_0x430c[_0x3c2b2e];return _0x27a338;};'use strict';var EventEmitter=require(_0xc430('0x0'));var UserProfile=require('../../mysqldb')['db']['UserProfile'];var UserProfileEvents=new EventEmitter();UserProfileEvents[_0xc430('0x1')](0x0);var events={'afterCreate':_0xc430('0x2'),'afterUpdate':_0xc430('0x3'),'afterDestroy':'remove'};function emitEvent(_0x4f0118){return function(_0x5ccda6,_0x47d8b9,_0x338a82){UserProfileEvents[_0xc430('0x4')](_0x4f0118+':'+_0x5ccda6['id'],_0x5ccda6);UserProfileEvents['emit'](_0x4f0118,_0x5ccda6);_0x338a82(null);};}for(var e in events){if(events[_0xc430('0x5')](e)){var event=events[e];UserProfile['hook'](e,emitEvent(event));}}module[_0xc430('0x6')]=UserProfileEvents;
\ No newline at end of file
index 4855a4c..18fe386 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5d17=['Dashboard','intervals','Interval','pauses','Pause','scheduler','sounds','Sound','tags','Tag','templates','Template','triggers','Trigger','Trunk','Variable','Plugin','extractedreports','Reports','metrics','AnalyticMetric','charAt','toUpperCase','slice','QueryTypes','SELECT','ui.','InteractionId','from','where','ui.UserId\x20=\x20?','sequelize','query','OpenTabs','catch','define','user_profiles','section','mergeResources','Invalid\x20section\x20\x27','isEmpty','push','UserProfileSection','find','params','ignore','autoAssociation','all','keys','filters','intersection','attributes','fields','length','hasOwnProperty','limit','offset','order','sort','pick','merge','key','VIRTUAL','foreignKey','forEach','options','include','reportType','default','DefaultReports','custom','CustomReports','count','rows','includeAll','Tags','color','ThroughTags','tag','openTabs','true','chat','dataValues','sms','fax','mail','whatsapp','lodash','./userProfile.attributes','exports','filter','field','value','findAll','associatedResources','model','map','name','resolve','UserProfileResource','then','AnalyticExtractedReport','type','resourceId','childModel','SquareProject','odbc','squarerecordings','SquareRecording','projectName','projects','JscriptyProject','contacts','parentSections','Lists','lists','CmList','companies','CmCompany','globalcustomfields','CmCustomField','chatqueues','ChatQueue','faxqueues','faxaccounts','FaxAccount','inboundroutes','internalroutes','VoiceExtension','contexts','VoiceMail','voicerecordings','VoiceRecording','Agents','membername','User','agent','Telephones','queue','VoiceQueue','inbound','QueueCampaigns','VoiceMusicOnHold','chanspies','voiceprefixes','VoicePrefix','ivrcampaigns','Campaign','mailqueues','MailQueue','mailaccounts','MailAccount','mailsubstatuses','MailSubstatus','openchannelqueues','OpenchannelQueue','openchannelaccounts','OpenchannelAccount','smsqueues','smsaccounts','SmsAccount','whatsappqueues','WhatsappQueue','whatsappaccounts','WhatsappAccount','Team','voicequeues','queuecampaigns','VoiceQueues','users','agents','telephones','admin','user','zendeskaccounts','ZendeskAccount','SalesforceAccount','freshdeskaccounts','FreshdeskAccount','sugarcrmaccounts','deskaccounts','DeskAccount','zohoaccounts','ZohoAccount','vtigeraccounts','cannedanswers','CannedAnswer','dispositions','Disposition'];(function(_0x24061a,_0x1c9f4d){var _0x82054e=function(_0x2ec346){while(--_0x2ec346){_0x24061a['push'](_0x24061a['shift']());}};_0x82054e(++_0x1c9f4d);}(_0x5d17,0x114));var _0x75d1=function(_0xf60cd0,_0x34bf81){_0xf60cd0=_0xf60cd0-0x0;var _0x32ad56=_0x5d17[_0xf60cd0];return _0x32ad56;};'use strict';var _=require(_0x75d1('0x0'));var attributes=require(_0x75d1('0x1'));var qs=require('../../components/parsers/qs');var squel=require('squel');module[_0x75d1('0x2')]=function(_0x426717){var _0x1c9ba6=_0x426717['models'];function _0x177460(_0x45d03a,_0x387e35){return new Promise(function(_0x32bd45,_0x56ac0a){if(!_0x387e35)return _0x32bd45(null);var _0x458681=_0x387e35[_0x75d1('0x3')]?{[_0x387e35[_0x75d1('0x3')][_0x75d1('0x4')]]:_0x387e35[_0x75d1('0x3')][_0x75d1('0x5')]}:undefined;return _0x1c9ba6[_0x45d03a][_0x75d1('0x6')]({'where':_0x458681,'raw':!![]})['then'](function(_0x4cf632){_0x387e35[_0x75d1('0x7')]=_['map'](_0x4cf632,'id');_0x32bd45(_0x387e35);})['catch'](function(_0x120b53){_0x56ac0a(_0x120b53);});});}function _0x2b75c6(_0x4d4aa1,_0x13d274){return new Promise(function(_0x3d7e39,_0x28b9b4){var _0xe07f4a=_0x4d4aa1[_0x75d1('0x3')]?{[_0x4d4aa1[_0x75d1('0x3')]['field']]:_0x4d4aa1[_0x75d1('0x3')][_0x75d1('0x5')]}:undefined;return _0x1c9ba6[_0x4d4aa1[_0x75d1('0x8')]][_0x75d1('0x6')]({'where':_0xe07f4a,'raw':!![]})['then'](function(_0x553697){_0x13d274['associatedResources']=_[_0x75d1('0x9')](_0x553697,function(_0x12fa32){return _0x12fa32[_0x75d1('0xa')];});_0x3d7e39(_0x13d274);})['catch'](function(_0x1f9620){_0x28b9b4(_0x1f9620);});});}function _0x3fff9b(_0x1d30f3,_0x269e82,_0x1160ca){if(!_0x269e82)return Promise[_0x75d1('0xb')](null);return new Promise(function(_0x2845bc,_0x59dead){return _0x1c9ba6[_0x75d1('0xc')][_0x75d1('0x6')]({'where':{'sectionId':_0x269e82['id']},'raw':!![]})[_0x75d1('0xd')](function(_0x5761db){if(_0x1d30f3['field']&&_0x1d30f3[_0x75d1('0x4')]!=='id'){_0x269e82[_0x75d1('0x7')]=_['map'](_0x5761db,function(_0x31eb88){return _0x31eb88[_0x1d30f3[_0x75d1('0x4')]];});}else{if(_0x1160ca===_0x75d1('0xe')){_0x269e82[_0x75d1('0x7')]=_[_0x75d1('0x9')](_0x5761db,function(_0xac6a24){return{'id':_0xac6a24['resourceId'],'type':_0xac6a24[_0x75d1('0xf')]};});}else{_0x269e82[_0x75d1('0x7')]=_['map'](_0x5761db,function(_0x1cb58c){return _0x1cb58c[_0x75d1('0x10')];});}}_0x2845bc(_0x269e82);})['catch'](function(_0x2c0c21){_0x59dead(_0x2c0c21);});});}function _0x5e70ec(_0x3a85c0,_0xc256af){var _0x345cf5={'parentSections':[]};switch(_0x3a85c0['toLowerCase']()){case'squareprojects':_0x345cf5[_0x75d1('0x11')]=_0x75d1('0x12');break;case _0x75d1('0x13'):_0x345cf5[_0x75d1('0x11')]='SquareOdbc';break;case _0x75d1('0x14'):_0x345cf5[_0x75d1('0x11')]=_0x75d1('0x15');_0x345cf5['parentSections']=[{'name':'SquareProjects','field':'name','foreignKey':_0x75d1('0x16')}];break;case _0x75d1('0x17'):_0x345cf5[_0x75d1('0x11')]=_0x75d1('0x18');break;case _0x75d1('0x19'):_0x345cf5['childModel']='CmContact';_0x345cf5[_0x75d1('0x1a')]=[{'name':_0x75d1('0x1b'),'field':'id','foreignKey':'ListId'}];break;case _0x75d1('0x1c'):_0x345cf5['childModel']=_0x75d1('0x1d');break;case _0x75d1('0x1e'):_0x345cf5[_0x75d1('0x11')]=_0x75d1('0x1f');break;case _0x75d1('0x20'):_0x345cf5['childModel']=_0x75d1('0x21');break;case _0x75d1('0x22'):_0x345cf5[_0x75d1('0x11')]=_0x75d1('0x23');break;case'chatwebsites':_0x345cf5[_0x75d1('0x11')]='ChatWebsite';break;case _0x75d1('0x24'):_0x345cf5[_0x75d1('0x11')]='FaxQueue';break;case _0x75d1('0x25'):_0x345cf5[_0x75d1('0x11')]=_0x75d1('0x26');break;case _0x75d1('0x27'):case _0x75d1('0x28'):case'outboundroutes':_0x345cf5[_0x75d1('0x11')]=_0x75d1('0x29');break;case _0x75d1('0x2a'):_0x345cf5[_0x75d1('0x11')]='VoiceContext';break;case'voicemails':_0x345cf5['childModel']=_0x75d1('0x2b');break;case _0x75d1('0x2c'):_0x345cf5[_0x75d1('0x11')]=_0x75d1('0x2d');_0x345cf5[_0x75d1('0x1a')]=[{'name':_0x75d1('0x2e'),'field':_0x75d1('0xa'),'foreignKey':_0x75d1('0x2f'),'model':_0x75d1('0x30'),'filter':{'field':'role','value':[_0x75d1('0x31')]}},{'name':_0x75d1('0x32'),'field':_0x75d1('0xa'),'foreignKey':_0x75d1('0x2f'),'model':_0x75d1('0x30'),'filter':{'field':'role','value':['telephone']}},{'name':'VoiceQueues','field':_0x75d1('0xa'),'foreignKey':_0x75d1('0x33'),'model':_0x75d1('0x34'),'filter':{'field':_0x75d1('0xf'),'value':[_0x75d1('0x35')]}},{'name':_0x75d1('0x36'),'field':'name','foreignKey':'queue','model':'VoiceQueue','filter':{'field':_0x75d1('0xf'),'value':['outbound']}}];break;case'musiconholds':_0x345cf5[_0x75d1('0x11')]=_0x75d1('0x37');break;case _0x75d1('0x38'):_0x345cf5[_0x75d1('0x11')]='VoiceChanSpy';break;case _0x75d1('0x39'):_0x345cf5[_0x75d1('0x11')]=_0x75d1('0x3a');break;case _0x75d1('0x3b'):_0x345cf5[_0x75d1('0x11')]=_0x75d1('0x3c');break;case _0x75d1('0x3d'):_0x345cf5[_0x75d1('0x11')]=_0x75d1('0x3e');break;case _0x75d1('0x3f'):_0x345cf5[_0x75d1('0x11')]=_0x75d1('0x40');break;case _0x75d1('0x41'):_0x345cf5[_0x75d1('0x11')]=_0x75d1('0x42');break;case _0x75d1('0x43'):_0x345cf5[_0x75d1('0x11')]=_0x75d1('0x44');break;case _0x75d1('0x45'):_0x345cf5[_0x75d1('0x11')]=_0x75d1('0x46');break;case _0x75d1('0x47'):_0x345cf5['childModel']='SmsQueue';break;case _0x75d1('0x48'):_0x345cf5[_0x75d1('0x11')]=_0x75d1('0x49');break;case _0x75d1('0x4a'):_0x345cf5['childModel']=_0x75d1('0x4b');break;case _0x75d1('0x4c'):_0x345cf5[_0x75d1('0x11')]=_0x75d1('0x4d');break;case'teams':_0x345cf5[_0x75d1('0x11')]=_0x75d1('0x4e');break;case _0x75d1('0x4f'):case _0x75d1('0x50'):_0x345cf5['childModel']=_0x75d1('0x34');if(_0xc256af){_0x345cf5['parentSections']=[{'name':_0x75d1('0x51')},{'name':_0x75d1('0x36')}];}break;case _0x75d1('0x52'):case _0x75d1('0x53'):case _0x75d1('0x54'):_0x345cf5[_0x75d1('0x11')]='User';if(_0xc256af){_0x345cf5[_0x75d1('0x1a')]=[{'name':'Users','filter':{'field':'role','value':[_0x75d1('0x55'),_0x75d1('0x56')]},'ignore':!![]},{'name':_0x75d1('0x2e')},{'name':_0x75d1('0x32')}];}break;case _0x75d1('0x57'):_0x345cf5[_0x75d1('0x11')]=_0x75d1('0x58');break;case'salesforceaccounts':_0x345cf5['childModel']=_0x75d1('0x59');break;case _0x75d1('0x5a'):_0x345cf5['childModel']=_0x75d1('0x5b');break;case _0x75d1('0x5c'):_0x345cf5[_0x75d1('0x11')]='SugarcrmAccount';break;case _0x75d1('0x5d'):_0x345cf5[_0x75d1('0x11')]=_0x75d1('0x5e');break;case _0x75d1('0x5f'):_0x345cf5[_0x75d1('0x11')]=_0x75d1('0x60');break;case _0x75d1('0x61'):_0x345cf5['childModel']=_0x75d1('0x30');break;case _0x75d1('0x62'):_0x345cf5[_0x75d1('0x11')]=_0x75d1('0x63');break;case _0x75d1('0x64'):_0x345cf5[_0x75d1('0x11')]=_0x75d1('0x65');break;case'customdashboards':_0x345cf5[_0x75d1('0x11')]=_0x75d1('0x66');break;case _0x75d1('0x67'):_0x345cf5['childModel']=_0x75d1('0x68');break;case _0x75d1('0x69'):_0x345cf5[_0x75d1('0x11')]=_0x75d1('0x6a');break;case _0x75d1('0x6b'):_0x345cf5[_0x75d1('0x11')]='Schedule';break;case _0x75d1('0x6c'):_0x345cf5[_0x75d1('0x11')]=_0x75d1('0x6d');break;case _0x75d1('0x6e'):_0x345cf5[_0x75d1('0x11')]=_0x75d1('0x6f');break;case _0x75d1('0x70'):_0x345cf5[_0x75d1('0x11')]=_0x75d1('0x71');break;case _0x75d1('0x72'):_0x345cf5[_0x75d1('0x11')]=_0x75d1('0x73');break;case'trunks':_0x345cf5['childModel']=_0x75d1('0x74');break;case'variables':_0x345cf5[_0x75d1('0x11')]=_0x75d1('0x75');break;case'plugins':_0x345cf5[_0x75d1('0x11')]=_0x75d1('0x76');break;case _0x75d1('0x77'):_0x345cf5[_0x75d1('0x11')]=_0x75d1('0xe');_0x345cf5[_0x75d1('0x1a')]=[{'name':_0x75d1('0x78'),'field':'id','foreignKey':'reportId'}];break;case _0x75d1('0x79'):_0x345cf5[_0x75d1('0x11')]=_0x75d1('0x7a');break;}return _0x345cf5;}function _0x4d095f(_0x20008a,_0x434512){var _0x41f98f=_0x20008a[_0x75d1('0x7b')](0x0)[_0x75d1('0x7c')]()+_0x20008a[_0x75d1('0x7d')](0x1);var _0x4fdcd8={'type':_0x1c9ba6['Sequelize'][_0x75d1('0x7e')][_0x75d1('0x7f')],'raw':!![]};return new Promise(function(_0xd6a332,_0x49d9ca){var _0x1d7de1=squel['select']()[_0x75d1('0x4')](_0x75d1('0x80')+_0x41f98f+_0x75d1('0x81'),'id')[_0x75d1('0x4')]('ui.createdAt')[_0x75d1('0x82')]('user_has_'+_0x20008a+'_interactions','ui')[_0x75d1('0x83')](_0x75d1('0x84'),_0x434512['id']);return _0x1c9ba6[_0x75d1('0x85')][_0x75d1('0x86')](_0x1d7de1['toString'](),_0x4fdcd8)['then'](function(_0x91aec3){_0x434512[_0x41f98f+_0x75d1('0x87')]=_0x91aec3;_0xd6a332(_0x91aec3);})[_0x75d1('0x88')](function(_0x1a52fa){_0x49d9ca(_0x1a52fa);});});}return _0x426717[_0x75d1('0x89')]('UserProfile',attributes,{'tableName':_0x75d1('0x8a'),'paranoid':![],'indexes':[],'timestamps':!![],'classMethods':{'getResources':function(_0x44173c){var _0x227e19={'raw':![],'where':{}};var _0x3c6bd7={};var _0x38cb83={'count':0x0,'rows':[]};var _0x32d022=_0x44173c[_0x75d1('0x86')][_0x75d1('0x8b')];var _0x40f50b=_0x44173c[_0x75d1('0x86')][_0x75d1('0x8c')]||![];var _0x59c1f1=_0x5e70ec(_0x32d022,_0x40f50b);if(!_0x59c1f1[_0x75d1('0x11')])throw new Error(_0x75d1('0x8d')+_0x32d022+'\x27');var _0x109473=[{'name':_0x32d022}];if(!_[_0x75d1('0x8e')](_0x59c1f1[_0x75d1('0x1a')]))_0x109473=_0x59c1f1[_0x75d1('0x1a')];var _0x126517=[];for(var _0x56af03=0x0;_0x56af03<_0x109473['length'];_0x56af03++){_0x126517[_0x75d1('0x8f')](_0x1c9ba6[_0x75d1('0x90')][_0x75d1('0x91')]({'where':{'userProfileId':_0x44173c[_0x75d1('0x92')]['id'],'name':_0x109473[_0x56af03][_0x75d1('0xa')]},'raw':!![]}));}return Promise['all'](_0x126517)['then'](function(_0x15c5e8){var _0x3754d5=_['filter'](_0x15c5e8,function(_0xcc79ee){return _0xcc79ee?_0xcc79ee:undefined;});var _0x29b1f4=_[_0x75d1('0x3')](_0x109473,[_0x75d1('0x93'),!![]]);var _0x17a41e=_[_0x75d1('0x8e')](_0x3754d5)&&_['isEmpty'](_0x29b1f4)?null:_['union'](_0x29b1f4,_0x3754d5);if(!_0x17a41e)return null;var _0x2c0452=[];for(var _0x3fad5c=0x0;_0x3fad5c<_0x17a41e['length'];_0x3fad5c++){var _0x45e61a=_['find'](_0x109473,function(_0x37098c){return _0x17a41e[_0x3fad5c]?_0x37098c[_0x75d1('0xa')]===_0x17a41e[_0x3fad5c][_0x75d1('0xa')]:null;});if(_0x45e61a){if(_0x17a41e[_0x3fad5c]['ignore']){_0x2c0452[_0x75d1('0x8f')](_0x177460(_0x59c1f1[_0x75d1('0x11')],_0x17a41e[_0x3fad5c]));}else{if(!_0x17a41e[_0x3fad5c][_0x75d1('0x94')]){_0x2c0452[_0x75d1('0x8f')](_0x3fff9b(_0x45e61a,_0x17a41e[_0x3fad5c],_0x59c1f1[_0x75d1('0x11')]));}else{if(_0x45e61a['model']){_0x2c0452['push'](_0x2b75c6(_0x45e61a,_0x17a41e[_0x3fad5c]));}}}}}return Promise[_0x75d1('0x95')](_0x2c0452);})['then'](function(_0x3f15f3){var _0xf29a9f=_0x3f15f3;var _0x223eec=null;if(_0xf29a9f){_0x223eec=_0xf29a9f['length']===0x1?_0xf29a9f[0x0]:null;}if(!_0x223eec&&!_0xf29a9f)return _0x38cb83;var _0x4dcc2d=_0x1c9ba6[_0x59c1f1[_0x75d1('0x11')]]['rawAttributes'];_0x3c6bd7[_0x75d1('0x8')]=_[_0x75d1('0x96')](_0x4dcc2d);_0x3c6bd7[_0x75d1('0x86')]=_['keys'](_0x44173c[_0x75d1('0x86')]);_0x3c6bd7[_0x75d1('0x97')]=_[_0x75d1('0x98')](_0x3c6bd7[_0x75d1('0x8')],_0x3c6bd7[_0x75d1('0x86')]);_0x227e19[_0x75d1('0x99')]=_[_0x75d1('0x98')](_0x3c6bd7[_0x75d1('0x8')],qs[_0x75d1('0x9a')](_0x44173c[_0x75d1('0x86')][_0x75d1('0x9a')]));_0x227e19[_0x75d1('0x99')]=_0x227e19[_0x75d1('0x99')][_0x75d1('0x9b')]?_0x227e19['attributes']:_0x3c6bd7['model'];if(!_0x44173c[_0x75d1('0x86')][_0x75d1('0x9c')]('nolimit')){_0x227e19[_0x75d1('0x9d')]=qs['limit'](_0x44173c['query']['limit']);_0x227e19[_0x75d1('0x9e')]=qs[_0x75d1('0x9e')](_0x44173c[_0x75d1('0x86')][_0x75d1('0x9e')]);}_0x227e19[_0x75d1('0x9f')]=qs['sort'](_0x44173c[_0x75d1('0x86')][_0x75d1('0xa0')]);_0x227e19[_0x75d1('0x83')]=qs[_0x75d1('0x97')](_[_0x75d1('0xa1')](_0x44173c['query'],_0x3c6bd7[_0x75d1('0x97')]));if(_0x44173c['query'][_0x75d1('0x3')]){_0x227e19[_0x75d1('0x83')]=_[_0x75d1('0xa2')](_0x227e19['where'],{'$or':_['map'](_0x4dcc2d,function(_0x4e88e9){if(_0x4e88e9[_0x75d1('0xf')][_0x75d1('0xa3')]!==_0x75d1('0xa4')){var _0x22caf3={};_0x22caf3[_0x4e88e9[_0x75d1('0x4')]]={'$like':'%'+_0x44173c[_0x75d1('0x86')]['filter']+'%'};return _0x22caf3;}})});}var _0x3bc70d=[];var _0x30508a=null;var _0x51b0c0={};if(_0x223eec){_0x30508a=_[_0x75d1('0x91')](_0x109473,['name',_0x223eec['name']]);if(_0x30508a['field']){_0x51b0c0={};if(_0x59c1f1[_0x75d1('0x11')]==='AnalyticExtractedReport'){_0x51b0c0[_0x30508a['foreignKey']]=_[_0x75d1('0x9')](_0x223eec['associatedResources'],'id');}else{_0x51b0c0[_0x30508a[_0x75d1('0xa5')]]=_0x223eec[_0x75d1('0x7')];}_0x3bc70d[_0x75d1('0x8f')](_0x51b0c0);}else{_0x227e19[_0x75d1('0x83')]['id']=_0x223eec[_0x75d1('0x7')];}}else{for(var _0x1aa806=0x0;_0x1aa806<_0xf29a9f[_0x75d1('0x9b')];_0x1aa806++){_0x30508a=_[_0x75d1('0x91')](_0x109473,['name',_0xf29a9f[_0x1aa806][_0x75d1('0xa')]]);if(_0x30508a['field']){_0x51b0c0={};_0x51b0c0[_0x30508a[_0x75d1('0xa5')]]=_0xf29a9f[_0x1aa806][_0x75d1('0x7')];_0x3bc70d[_0x75d1('0x8f')](_0x51b0c0);}else{if(!_0x227e19['where']['id'])_0x227e19[_0x75d1('0x83')]['id']=[];_0xf29a9f[_0x1aa806][_0x75d1('0x7')][_0x75d1('0xa6')](function(_0x13ff2f){_0x227e19[_0x75d1('0x83')]['id'][_0x75d1('0x8f')](_0x13ff2f);});}}}if(!_[_0x75d1('0x8e')](_0x3bc70d)){_0x227e19['where']=_[_0x75d1('0xa2')](_0x227e19[_0x75d1('0x83')],{'$and':{'$or':_0x3bc70d}});}_0x227e19=_[_0x75d1('0xa2')]({},_0x227e19,_0x44173c[_0x75d1('0xa7')]);if(_0x223eec&&!_0x223eec[_0x75d1('0x94')]&&_0x59c1f1['childModel']==='AnalyticExtractedReport'){if(_0x44173c[_0x75d1('0x86')]['includeAll']){_0x227e19[_0x75d1('0xa8')]=[{'all':!![]}];}return _0x1c9ba6[_0x59c1f1[_0x75d1('0x11')]][_0x75d1('0x6')](_0x227e19)[_0x75d1('0xd')](function(_0x498137){var _0x576ff0=[];_0x498137[_0x75d1('0xa6')](function(_0x37c682){var _0x2cf6e0;switch(_0x37c682[_0x75d1('0xa9')]){case _0x75d1('0xaa'):_0x2cf6e0=_['find'](_0x223eec[_0x75d1('0x7')],function(_0x3aa79e){return _0x3aa79e['id']===_0x37c682['reportId']&&_0x3aa79e[_0x75d1('0xf')]===_0x75d1('0xab');});break;case _0x75d1('0xac'):_0x2cf6e0=_[_0x75d1('0x91')](_0x223eec[_0x75d1('0x7')],function(_0x6eccd8){return _0x6eccd8['id']===_0x37c682['reportId']&&_0x6eccd8[_0x75d1('0xf')]===_0x75d1('0xad');});break;}if(_0x2cf6e0)_0x576ff0[_0x75d1('0x8f')](_0x37c682);});_0x38cb83[_0x75d1('0xae')]=_0x576ff0[_0x75d1('0x9b')];_0x38cb83[_0x75d1('0xaf')]=_0x576ff0;return _0x38cb83;});}else{return _0x1c9ba6[_0x59c1f1['childModel']][_0x75d1('0xae')]({'where':_0x227e19['where']})[_0x75d1('0xd')](function(_0x400d3a){_0x38cb83[_0x75d1('0xae')]=_0x400d3a;if(_0x44173c[_0x75d1('0x86')][_0x75d1('0xb0')]){if(_0x59c1f1[_0x75d1('0x11')]==='CmContact'){_0x227e19[_0x75d1('0xa8')]=[{'model':_0x1c9ba6[_0x75d1('0x6f')],'as':_0x75d1('0xb1'),'attributes':['id','name',_0x75d1('0xb2')],'required':_0x44173c[_0x75d1('0x86')]['tag']?!![]:![]},{'model':_0x1c9ba6[_0x75d1('0x6f')],'as':_0x75d1('0xb3'),'attributes':['id',_0x75d1('0xa'),_0x75d1('0xb2')],'through':_0x44173c[_0x75d1('0x86')][_0x75d1('0xb4')]?{'attributes':[],'where':{'TagId':_0x44173c[_0x75d1('0x86')][_0x75d1('0xb4')]||undefined}}:{},'required':_0x44173c[_0x75d1('0x86')]['tag']?!![]:![]}];}else{_0x227e19[_0x75d1('0xa8')]=[{'all':!![]}];}}return _0x1c9ba6[_0x59c1f1[_0x75d1('0x11')]]['findAll'](_0x227e19);})[_0x75d1('0xd')](function(_0x2e9cf1){_0x38cb83['rows']=_0x2e9cf1;if(_0x32d022==='Agents'&&_0x44173c[_0x75d1('0x86')][_0x75d1('0xb5')]===_0x75d1('0xb6')){var _0x1f3a7e=[];for(var _0x533eb0=0x0;_0x533eb0<_0x38cb83[_0x75d1('0xaf')]['length'];_0x533eb0++){_0x1f3a7e[_0x75d1('0x8f')](_0x4d095f(_0x75d1('0xb7'),_0x38cb83[_0x75d1('0xaf')][_0x533eb0][_0x75d1('0xb8')]));_0x1f3a7e[_0x75d1('0x8f')](_0x4d095f(_0x75d1('0xb9'),_0x38cb83[_0x75d1('0xaf')][_0x533eb0][_0x75d1('0xb8')]));_0x1f3a7e[_0x75d1('0x8f')](_0x4d095f(_0x75d1('0xba'),_0x38cb83[_0x75d1('0xaf')][_0x533eb0][_0x75d1('0xb8')]));_0x1f3a7e[_0x75d1('0x8f')](_0x4d095f(_0x75d1('0xbb'),_0x38cb83[_0x75d1('0xaf')][_0x533eb0][_0x75d1('0xb8')]));_0x1f3a7e[_0x75d1('0x8f')](_0x4d095f('openchannel',_0x38cb83[_0x75d1('0xaf')][_0x533eb0][_0x75d1('0xb8')]));_0x1f3a7e[_0x75d1('0x8f')](_0x4d095f(_0x75d1('0xbc'),_0x38cb83[_0x75d1('0xaf')][_0x533eb0][_0x75d1('0xb8')]));}return Promise[_0x75d1('0x95')](_0x1f3a7e)['then'](function(){return _0x38cb83;});}return _0x38cb83;});}});}}});};
\ No newline at end of file
+var _0x4137=['metrics','toUpperCase','slice','Sequelize','QueryTypes','select','ui.','InteractionId','from','_interactions','where','ui.UserId\x20=\x20?','sequelize','define','user_profiles','query','section','mergeResources','isEmpty','length','push','UserProfileSection','params','ignore','find','all','rawAttributes','model','keys','filters','intersection','fields','attributes','hasOwnProperty','nolimit','limit','offset','order','sort','pick','merge','key','VIRTUAL','foreignKey','forEach','options','includeAll','include','reportType','default','DefaultReports','custom','reportId','CustomReports','count','Tags','color','tag','Agents','openTabs','true','chat','rows','dataValues','sms','mail','whatsapp','lodash','./userProfile.attributes','../../components/parsers/qs','squel','exports','models','filter','field','value','findAll','associatedResources','catch','then','map','UserProfileResource','AnalyticExtractedReport','resourceId','type','toLowerCase','squareprojects','childModel','SquareProject','odbc','squarerecordings','SquareRecording','parentSections','SquareProjects','projectName','projects','JscriptyProject','contacts','ListId','lists','CmList','companies','globalcustomfields','CmCustomField','chatqueues','ChatQueue','chatwebsites','ChatWebsite','faxqueues','FaxQueue','faxaccounts','FaxAccount','internalroutes','outboundroutes','contexts','VoiceContext','voicemails','voicerecordings','VoiceRecording','name','role','Telephones','membername','User','VoiceQueues','queue','VoiceQueue','inbound','QueueCampaigns','outbound','MailQueue','mailaccounts','MailAccount','openchannelqueues','OpenchannelQueue','openchannelaccounts','OpenchannelAccount','smsqueues','SmsQueue','smsaccounts','SmsAccount','whatsappqueues','WhatsappQueue','whatsappaccounts','WhatsappAccount','teams','Team','voicequeues','queuecampaigns','users','agents','telephones','Users','admin','user','zendeskaccounts','salesforceaccounts','freshdeskaccounts','sugarcrmaccounts','SugarcrmAccount','deskaccounts','DeskAccount','zohoaccounts','ZohoAccount','vtigeraccounts','Disposition','customdashboards','Dashboard','Interval','Sound','tags','Tag','Template','triggers','Trigger','Trunk','variables','Variable','plugins','extractedreports','Reports'];(function(_0x4e1c70,_0x4f539c){var _0x5415c1=function(_0x6dcb31){while(--_0x6dcb31){_0x4e1c70['push'](_0x4e1c70['shift']());}};_0x5415c1(++_0x4f539c);}(_0x4137,0xf8));var _0x7413=function(_0x57b54c,_0x54ce0d){_0x57b54c=_0x57b54c-0x0;var _0x59cc19=_0x4137[_0x57b54c];return _0x59cc19;};'use strict';var _=require(_0x7413('0x0'));var attributes=require(_0x7413('0x1'));var qs=require(_0x7413('0x2'));var squel=require(_0x7413('0x3'));module[_0x7413('0x4')]=function(_0x410971){var _0x2e6df7=_0x410971[_0x7413('0x5')];function _0x258255(_0x3dc48a,_0x451a96){return new Promise(function(_0x3bb181,_0x4fbade){if(!_0x451a96)return _0x3bb181(null);var _0xc808cd=_0x451a96[_0x7413('0x6')]?{[_0x451a96[_0x7413('0x6')][_0x7413('0x7')]]:_0x451a96['filter'][_0x7413('0x8')]}:undefined;return _0x2e6df7[_0x3dc48a][_0x7413('0x9')]({'where':_0xc808cd,'raw':!![]})['then'](function(_0x422bf5){_0x451a96[_0x7413('0xa')]=_['map'](_0x422bf5,'id');_0x3bb181(_0x451a96);})[_0x7413('0xb')](function(_0x427b3b){_0x4fbade(_0x427b3b);});});}function _0x737ab4(_0x3e026b,_0x14212d){return new Promise(function(_0x5a1e62,_0xa25d72){var _0x32034c=_0x3e026b['filter']?{[_0x3e026b[_0x7413('0x6')][_0x7413('0x7')]]:_0x3e026b[_0x7413('0x6')]['value']}:undefined;return _0x2e6df7[_0x3e026b['model']]['findAll']({'where':_0x32034c,'raw':!![]})[_0x7413('0xc')](function(_0x336c4c){_0x14212d['associatedResources']=_[_0x7413('0xd')](_0x336c4c,function(_0x45bef0){return _0x45bef0['name'];});_0x5a1e62(_0x14212d);})[_0x7413('0xb')](function(_0x50f301){_0xa25d72(_0x50f301);});});}function _0x4b9a5b(_0x26501b,_0x568d1f,_0x195c72){if(!_0x568d1f)return Promise['resolve'](null);return new Promise(function(_0x2036b6,_0x3230d8){return _0x2e6df7[_0x7413('0xe')][_0x7413('0x9')]({'where':{'sectionId':_0x568d1f['id']},'raw':!![]})[_0x7413('0xc')](function(_0x26dafe){if(_0x26501b['field']&&_0x26501b[_0x7413('0x7')]!=='id'){_0x568d1f[_0x7413('0xa')]=_[_0x7413('0xd')](_0x26dafe,function(_0xfe5b8c){return _0xfe5b8c[_0x26501b['field']];});}else{if(_0x195c72===_0x7413('0xf')){_0x568d1f[_0x7413('0xa')]=_[_0x7413('0xd')](_0x26dafe,function(_0x20d3d2){return{'id':_0x20d3d2[_0x7413('0x10')],'type':_0x20d3d2[_0x7413('0x11')]};});}else{_0x568d1f[_0x7413('0xa')]=_[_0x7413('0xd')](_0x26dafe,function(_0x56a06a){return _0x56a06a['resourceId'];});}}_0x2036b6(_0x568d1f);})[_0x7413('0xb')](function(_0x599654){_0x3230d8(_0x599654);});});}function _0x1585ba(_0x372944,_0x3b0c81){var _0x2fc0f4={'parentSections':[]};switch(_0x372944[_0x7413('0x12')]()){case _0x7413('0x13'):_0x2fc0f4[_0x7413('0x14')]=_0x7413('0x15');break;case _0x7413('0x16'):_0x2fc0f4['childModel']='SquareOdbc';break;case _0x7413('0x17'):_0x2fc0f4['childModel']=_0x7413('0x18');_0x2fc0f4[_0x7413('0x19')]=[{'name':_0x7413('0x1a'),'field':'name','foreignKey':_0x7413('0x1b')}];break;case _0x7413('0x1c'):_0x2fc0f4[_0x7413('0x14')]=_0x7413('0x1d');break;case _0x7413('0x1e'):_0x2fc0f4[_0x7413('0x14')]='CmContact';_0x2fc0f4[_0x7413('0x19')]=[{'name':'Lists','field':'id','foreignKey':_0x7413('0x1f')}];break;case _0x7413('0x20'):_0x2fc0f4[_0x7413('0x14')]=_0x7413('0x21');break;case _0x7413('0x22'):_0x2fc0f4[_0x7413('0x14')]='CmCompany';break;case _0x7413('0x23'):_0x2fc0f4[_0x7413('0x14')]=_0x7413('0x24');break;case _0x7413('0x25'):_0x2fc0f4[_0x7413('0x14')]=_0x7413('0x26');break;case _0x7413('0x27'):_0x2fc0f4['childModel']=_0x7413('0x28');break;case _0x7413('0x29'):_0x2fc0f4[_0x7413('0x14')]=_0x7413('0x2a');break;case _0x7413('0x2b'):_0x2fc0f4['childModel']=_0x7413('0x2c');break;case'inboundroutes':case _0x7413('0x2d'):case _0x7413('0x2e'):_0x2fc0f4[_0x7413('0x14')]='VoiceExtension';break;case _0x7413('0x2f'):_0x2fc0f4['childModel']=_0x7413('0x30');break;case _0x7413('0x31'):_0x2fc0f4['childModel']='VoiceMail';break;case _0x7413('0x32'):_0x2fc0f4[_0x7413('0x14')]=_0x7413('0x33');_0x2fc0f4['parentSections']=[{'name':'Agents','field':_0x7413('0x34'),'foreignKey':'membername','model':'User','filter':{'field':_0x7413('0x35'),'value':['agent']}},{'name':_0x7413('0x36'),'field':_0x7413('0x34'),'foreignKey':_0x7413('0x37'),'model':_0x7413('0x38'),'filter':{'field':_0x7413('0x35'),'value':['telephone']}},{'name':_0x7413('0x39'),'field':_0x7413('0x34'),'foreignKey':_0x7413('0x3a'),'model':_0x7413('0x3b'),'filter':{'field':_0x7413('0x11'),'value':[_0x7413('0x3c')]}},{'name':_0x7413('0x3d'),'field':_0x7413('0x34'),'foreignKey':_0x7413('0x3a'),'model':_0x7413('0x3b'),'filter':{'field':_0x7413('0x11'),'value':[_0x7413('0x3e')]}}];break;case'musiconholds':_0x2fc0f4[_0x7413('0x14')]='VoiceMusicOnHold';break;case'chanspies':_0x2fc0f4['childModel']='VoiceChanSpy';break;case'voiceprefixes':_0x2fc0f4[_0x7413('0x14')]='VoicePrefix';break;case'ivrcampaigns':_0x2fc0f4[_0x7413('0x14')]='Campaign';break;case'mailqueues':_0x2fc0f4[_0x7413('0x14')]=_0x7413('0x3f');break;case _0x7413('0x40'):_0x2fc0f4[_0x7413('0x14')]=_0x7413('0x41');break;case'mailsubstatuses':_0x2fc0f4[_0x7413('0x14')]='MailSubstatus';break;case _0x7413('0x42'):_0x2fc0f4[_0x7413('0x14')]=_0x7413('0x43');break;case _0x7413('0x44'):_0x2fc0f4[_0x7413('0x14')]=_0x7413('0x45');break;case _0x7413('0x46'):_0x2fc0f4[_0x7413('0x14')]=_0x7413('0x47');break;case _0x7413('0x48'):_0x2fc0f4[_0x7413('0x14')]=_0x7413('0x49');break;case _0x7413('0x4a'):_0x2fc0f4['childModel']=_0x7413('0x4b');break;case _0x7413('0x4c'):_0x2fc0f4[_0x7413('0x14')]=_0x7413('0x4d');break;case _0x7413('0x4e'):_0x2fc0f4[_0x7413('0x14')]=_0x7413('0x4f');break;case _0x7413('0x50'):case _0x7413('0x51'):_0x2fc0f4[_0x7413('0x14')]=_0x7413('0x3b');if(_0x3b0c81){_0x2fc0f4['parentSections']=[{'name':_0x7413('0x39')},{'name':'QueueCampaigns'}];}break;case _0x7413('0x52'):case _0x7413('0x53'):case _0x7413('0x54'):_0x2fc0f4[_0x7413('0x14')]=_0x7413('0x38');if(_0x3b0c81){_0x2fc0f4[_0x7413('0x19')]=[{'name':_0x7413('0x55'),'filter':{'field':_0x7413('0x35'),'value':[_0x7413('0x56'),_0x7413('0x57')]},'ignore':!![]},{'name':'Agents'},{'name':'Telephones'}];}break;case _0x7413('0x58'):_0x2fc0f4['childModel']='ZendeskAccount';break;case _0x7413('0x59'):_0x2fc0f4[_0x7413('0x14')]='SalesforceAccount';break;case _0x7413('0x5a'):_0x2fc0f4['childModel']='FreshdeskAccount';break;case _0x7413('0x5b'):_0x2fc0f4['childModel']=_0x7413('0x5c');break;case _0x7413('0x5d'):_0x2fc0f4[_0x7413('0x14')]=_0x7413('0x5e');break;case _0x7413('0x5f'):_0x2fc0f4[_0x7413('0x14')]=_0x7413('0x60');break;case _0x7413('0x61'):_0x2fc0f4[_0x7413('0x14')]=_0x7413('0x38');break;case'cannedanswers':_0x2fc0f4[_0x7413('0x14')]='CannedAnswer';break;case'dispositions':_0x2fc0f4['childModel']=_0x7413('0x62');break;case _0x7413('0x63'):_0x2fc0f4[_0x7413('0x14')]=_0x7413('0x64');break;case'intervals':_0x2fc0f4['childModel']=_0x7413('0x65');break;case'pauses':_0x2fc0f4[_0x7413('0x14')]='Pause';break;case'scheduler':_0x2fc0f4['childModel']='Schedule';break;case'sounds':_0x2fc0f4[_0x7413('0x14')]=_0x7413('0x66');break;case _0x7413('0x67'):_0x2fc0f4[_0x7413('0x14')]=_0x7413('0x68');break;case'templates':_0x2fc0f4[_0x7413('0x14')]=_0x7413('0x69');break;case _0x7413('0x6a'):_0x2fc0f4['childModel']=_0x7413('0x6b');break;case'trunks':_0x2fc0f4['childModel']=_0x7413('0x6c');break;case _0x7413('0x6d'):_0x2fc0f4[_0x7413('0x14')]=_0x7413('0x6e');break;case _0x7413('0x6f'):_0x2fc0f4[_0x7413('0x14')]='Plugin';break;case _0x7413('0x70'):_0x2fc0f4['childModel']=_0x7413('0xf');_0x2fc0f4['parentSections']=[{'name':_0x7413('0x71'),'field':'id','foreignKey':'reportId'}];break;case _0x7413('0x72'):_0x2fc0f4[_0x7413('0x14')]='AnalyticMetric';break;}return _0x2fc0f4;}function _0x269976(_0x549623,_0xf01452){var _0x2a5db6=_0x549623['charAt'](0x0)[_0x7413('0x73')]()+_0x549623[_0x7413('0x74')](0x1);var _0x59d639={'type':_0x2e6df7[_0x7413('0x75')][_0x7413('0x76')]['SELECT'],'raw':!![]};return new Promise(function(_0xf4641,_0x28eaf4){var _0x34211b=squel[_0x7413('0x77')]()[_0x7413('0x7')](_0x7413('0x78')+_0x2a5db6+_0x7413('0x79'),'id')[_0x7413('0x7')]('ui.createdAt')[_0x7413('0x7a')]('user_has_'+_0x549623+_0x7413('0x7b'),'ui')[_0x7413('0x7c')](_0x7413('0x7d'),_0xf01452['id']);return _0x2e6df7[_0x7413('0x7e')]['query'](_0x34211b['toString'](),_0x59d639)['then'](function(_0x56b090){_0xf01452[_0x2a5db6+'OpenTabs']=_0x56b090;_0xf4641(_0x56b090);})[_0x7413('0xb')](function(_0x1c00e6){_0x28eaf4(_0x1c00e6);});});}return _0x410971[_0x7413('0x7f')]('UserProfile',attributes,{'tableName':_0x7413('0x80'),'paranoid':![],'indexes':[],'timestamps':!![],'classMethods':{'getResources':function(_0xb7dd83){var _0x12544d={'raw':![],'where':{}};var _0x36a3ff={};var _0xecf96b={'count':0x0,'rows':[]};var _0x3db284=_0xb7dd83[_0x7413('0x81')][_0x7413('0x82')];var _0x1ec131=_0xb7dd83[_0x7413('0x81')][_0x7413('0x83')]||![];var _0x1264f3=_0x1585ba(_0x3db284,_0x1ec131);if(!_0x1264f3[_0x7413('0x14')])throw new Error('Invalid\x20section\x20\x27'+_0x3db284+'\x27');var _0x25eafd=[{'name':_0x3db284}];if(!_[_0x7413('0x84')](_0x1264f3['parentSections']))_0x25eafd=_0x1264f3[_0x7413('0x19')];var _0x1e76f1=[];for(var _0x521682=0x0;_0x521682<_0x25eafd[_0x7413('0x85')];_0x521682++){_0x1e76f1[_0x7413('0x86')](_0x2e6df7[_0x7413('0x87')]['find']({'where':{'userProfileId':_0xb7dd83[_0x7413('0x88')]['id'],'name':_0x25eafd[_0x521682][_0x7413('0x34')]},'raw':!![]}));}return Promise['all'](_0x1e76f1)[_0x7413('0xc')](function(_0x4ffcbc){var _0x537458=_[_0x7413('0x6')](_0x4ffcbc,function(_0xbd74d9){return _0xbd74d9?_0xbd74d9:undefined;});var _0x167c6b=_[_0x7413('0x6')](_0x25eafd,[_0x7413('0x89'),!![]]);var _0x10333e=_[_0x7413('0x84')](_0x537458)&&_[_0x7413('0x84')](_0x167c6b)?null:_['union'](_0x167c6b,_0x537458);if(!_0x10333e)return null;var _0x437b5d=[];for(var _0x595da6=0x0;_0x595da6<_0x10333e[_0x7413('0x85')];_0x595da6++){var _0x3deb37=_[_0x7413('0x8a')](_0x25eafd,function(_0x3054f5){return _0x10333e[_0x595da6]?_0x3054f5[_0x7413('0x34')]===_0x10333e[_0x595da6][_0x7413('0x34')]:null;});if(_0x3deb37){if(_0x10333e[_0x595da6][_0x7413('0x89')]){_0x437b5d[_0x7413('0x86')](_0x258255(_0x1264f3[_0x7413('0x14')],_0x10333e[_0x595da6]));}else{if(!_0x10333e[_0x595da6]['autoAssociation']){_0x437b5d[_0x7413('0x86')](_0x4b9a5b(_0x3deb37,_0x10333e[_0x595da6],_0x1264f3[_0x7413('0x14')]));}else{if(_0x3deb37['model']){_0x437b5d[_0x7413('0x86')](_0x737ab4(_0x3deb37,_0x10333e[_0x595da6]));}}}}}return Promise[_0x7413('0x8b')](_0x437b5d);})['then'](function(_0x2be9b1){var _0x4b676a=_0x2be9b1;var _0xcbc6e=null;if(_0x4b676a){_0xcbc6e=_0x4b676a[_0x7413('0x85')]===0x1?_0x4b676a[0x0]:null;}if(!_0xcbc6e&&!_0x4b676a)return _0xecf96b;var _0x54f03d=_0x2e6df7[_0x1264f3['childModel']][_0x7413('0x8c')];_0x36a3ff[_0x7413('0x8d')]=_[_0x7413('0x8e')](_0x54f03d);_0x36a3ff['query']=_[_0x7413('0x8e')](_0xb7dd83[_0x7413('0x81')]);_0x36a3ff[_0x7413('0x8f')]=_[_0x7413('0x90')](_0x36a3ff[_0x7413('0x8d')],_0x36a3ff[_0x7413('0x81')]);_0x12544d['attributes']=_[_0x7413('0x90')](_0x36a3ff[_0x7413('0x8d')],qs[_0x7413('0x91')](_0xb7dd83['query'][_0x7413('0x91')]));_0x12544d[_0x7413('0x92')]=_0x12544d[_0x7413('0x92')][_0x7413('0x85')]?_0x12544d[_0x7413('0x92')]:_0x36a3ff[_0x7413('0x8d')];if(!_0xb7dd83[_0x7413('0x81')][_0x7413('0x93')](_0x7413('0x94'))){_0x12544d['limit']=qs[_0x7413('0x95')](_0xb7dd83[_0x7413('0x81')][_0x7413('0x95')]);_0x12544d[_0x7413('0x96')]=qs[_0x7413('0x96')](_0xb7dd83[_0x7413('0x81')]['offset']);}_0x12544d[_0x7413('0x97')]=qs['sort'](_0xb7dd83['query'][_0x7413('0x98')]);_0x12544d[_0x7413('0x7c')]=qs['filters'](_[_0x7413('0x99')](_0xb7dd83[_0x7413('0x81')],_0x36a3ff[_0x7413('0x8f')]));if(_0xb7dd83[_0x7413('0x81')][_0x7413('0x6')]){_0x12544d[_0x7413('0x7c')]=_[_0x7413('0x9a')](_0x12544d[_0x7413('0x7c')],{'$or':_['map'](_0x54f03d,function(_0xe4b4a4){if(_0xe4b4a4['type'][_0x7413('0x9b')]!==_0x7413('0x9c')){var _0x516030={};_0x516030[_0xe4b4a4[_0x7413('0x7')]]={'$like':'%'+_0xb7dd83[_0x7413('0x81')][_0x7413('0x6')]+'%'};return _0x516030;}})});}var _0x300a17=[];var _0xdf132c=null;var _0x3920b5={};if(_0xcbc6e){_0xdf132c=_[_0x7413('0x8a')](_0x25eafd,[_0x7413('0x34'),_0xcbc6e[_0x7413('0x34')]]);if(_0xdf132c[_0x7413('0x7')]){_0x3920b5={};if(_0x1264f3['childModel']===_0x7413('0xf')){_0x3920b5[_0xdf132c[_0x7413('0x9d')]]=_['map'](_0xcbc6e['associatedResources'],'id');}else{_0x3920b5[_0xdf132c['foreignKey']]=_0xcbc6e[_0x7413('0xa')];}_0x300a17['push'](_0x3920b5);}else{_0x12544d[_0x7413('0x7c')]['id']=_0xcbc6e[_0x7413('0xa')];}}else{for(var _0x121b1a=0x0;_0x121b1a<_0x4b676a[_0x7413('0x85')];_0x121b1a++){_0xdf132c=_[_0x7413('0x8a')](_0x25eafd,[_0x7413('0x34'),_0x4b676a[_0x121b1a][_0x7413('0x34')]]);if(_0xdf132c[_0x7413('0x7')]){_0x3920b5={};_0x3920b5[_0xdf132c[_0x7413('0x9d')]]=_0x4b676a[_0x121b1a]['associatedResources'];_0x300a17[_0x7413('0x86')](_0x3920b5);}else{if(!_0x12544d[_0x7413('0x7c')]['id'])_0x12544d[_0x7413('0x7c')]['id']=[];_0x4b676a[_0x121b1a]['associatedResources'][_0x7413('0x9e')](function(_0x3c3676){_0x12544d[_0x7413('0x7c')]['id'][_0x7413('0x86')](_0x3c3676);});}}}if(!_[_0x7413('0x84')](_0x300a17)){_0x12544d[_0x7413('0x7c')]=_[_0x7413('0x9a')](_0x12544d[_0x7413('0x7c')],{'$and':{'$or':_0x300a17}});}_0x12544d=_[_0x7413('0x9a')]({},_0x12544d,_0xb7dd83[_0x7413('0x9f')]);if(_0xcbc6e&&!_0xcbc6e['autoAssociation']&&_0x1264f3[_0x7413('0x14')]===_0x7413('0xf')){if(_0xb7dd83['query'][_0x7413('0xa0')]){_0x12544d[_0x7413('0xa1')]=[{'all':!![]}];}return _0x2e6df7[_0x1264f3['childModel']][_0x7413('0x9')](_0x12544d)[_0x7413('0xc')](function(_0x230191){var _0x47fbf0=[];_0x230191[_0x7413('0x9e')](function(_0x5a44bd){var _0x466ec8;switch(_0x5a44bd[_0x7413('0xa2')]){case _0x7413('0xa3'):_0x466ec8=_[_0x7413('0x8a')](_0xcbc6e[_0x7413('0xa')],function(_0x371464){return _0x371464['id']===_0x5a44bd['reportId']&&_0x371464[_0x7413('0x11')]===_0x7413('0xa4');});break;case _0x7413('0xa5'):_0x466ec8=_[_0x7413('0x8a')](_0xcbc6e[_0x7413('0xa')],function(_0x55059e){return _0x55059e['id']===_0x5a44bd[_0x7413('0xa6')]&&_0x55059e[_0x7413('0x11')]===_0x7413('0xa7');});break;}if(_0x466ec8)_0x47fbf0[_0x7413('0x86')](_0x5a44bd);});_0xecf96b[_0x7413('0xa8')]=_0x47fbf0['length'];_0xecf96b['rows']=_0x47fbf0;return _0xecf96b;});}else{return _0x2e6df7[_0x1264f3[_0x7413('0x14')]][_0x7413('0xa8')]({'where':_0x12544d[_0x7413('0x7c')]})[_0x7413('0xc')](function(_0x4ec202){_0xecf96b['count']=_0x4ec202;if(_0xb7dd83[_0x7413('0x81')][_0x7413('0xa0')]){if(_0x1264f3[_0x7413('0x14')]==='CmContact'){_0x12544d['include']=[{'model':_0x2e6df7[_0x7413('0x68')],'as':_0x7413('0xa9'),'attributes':['id',_0x7413('0x34'),_0x7413('0xaa')],'required':_0xb7dd83[_0x7413('0x81')][_0x7413('0xab')]?!![]:![]},{'model':_0x2e6df7[_0x7413('0x68')],'as':'ThroughTags','attributes':['id','name',_0x7413('0xaa')],'through':_0xb7dd83[_0x7413('0x81')]['tag']?{'attributes':[],'where':{'TagId':_0xb7dd83[_0x7413('0x81')][_0x7413('0xab')]||undefined}}:{},'required':_0xb7dd83[_0x7413('0x81')][_0x7413('0xab')]?!![]:![]}];}else{_0x12544d[_0x7413('0xa1')]=[{'all':!![]}];}}return _0x2e6df7[_0x1264f3[_0x7413('0x14')]][_0x7413('0x9')](_0x12544d);})[_0x7413('0xc')](function(_0x3cffbb){_0xecf96b['rows']=_0x3cffbb;if(_0x3db284===_0x7413('0xac')&&_0xb7dd83[_0x7413('0x81')][_0x7413('0xad')]===_0x7413('0xae')){var _0xccd480=[];for(var _0x20ffaf=0x0;_0x20ffaf<_0xecf96b['rows']['length'];_0x20ffaf++){_0xccd480['push'](_0x269976(_0x7413('0xaf'),_0xecf96b[_0x7413('0xb0')][_0x20ffaf][_0x7413('0xb1')]));_0xccd480[_0x7413('0x86')](_0x269976(_0x7413('0xb2'),_0xecf96b[_0x7413('0xb0')][_0x20ffaf][_0x7413('0xb1')]));_0xccd480[_0x7413('0x86')](_0x269976('fax',_0xecf96b[_0x7413('0xb0')][_0x20ffaf]['dataValues']));_0xccd480[_0x7413('0x86')](_0x269976(_0x7413('0xb3'),_0xecf96b[_0x7413('0xb0')][_0x20ffaf][_0x7413('0xb1')]));_0xccd480[_0x7413('0x86')](_0x269976('openchannel',_0xecf96b[_0x7413('0xb0')][_0x20ffaf][_0x7413('0xb1')]));_0xccd480[_0x7413('0x86')](_0x269976(_0x7413('0xb4'),_0xecf96b[_0x7413('0xb0')][_0x20ffaf][_0x7413('0xb1')]));}return Promise[_0x7413('0x8b')](_0xccd480)[_0x7413('0xc')](function(){return _0xecf96b;});}return _0xecf96b;});}});}}});};
\ No newline at end of file
index bd6732b..a2f8f72 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x63a6=['../../config/logger','rpc','../../config/environment','redis','defaults','socket.io-emitter','./userProfile.socket','request','then','info','UserProfile,\x20%s,\x20%s','request\x20sent','error','code','message','util','moment','randomstring','ioredis','../../config/utils'];(function(_0x347689,_0x41c76e){var _0x49a1d8=function(_0xd53f62){while(--_0xd53f62){_0x347689['push'](_0x347689['shift']());}};_0x49a1d8(++_0x41c76e);}(_0x63a6,0x1c7));var _0x663a=function(_0x2b0275,_0x3fe1fe){_0x2b0275=_0x2b0275-0x0;var _0x43708e=_0x63a6[_0x2b0275];return _0x43708e;};'use strict';var _=require('lodash');var util=require(_0x663a('0x0'));var moment=require(_0x663a('0x1'));var BPromise=require('bluebird');var rs=require(_0x663a('0x2'));var fs=require('fs');var Redis=require(_0x663a('0x3'));var db=require('../../mysqldb')['db'];var utils=require(_0x663a('0x4'));var logger=require(_0x663a('0x5'))(_0x663a('0x6'));var config=require(_0x663a('0x7'));var jayson=require('jayson/promise');var client=jayson['client']['http']({'port':0x232a});config[_0x663a('0x8')]=_[_0x663a('0x9')](config['redis'],{'host':'localhost','port':0x18eb});var socket=require(_0x663a('0xa'))(new Redis(config[_0x663a('0x8')]));require(_0x663a('0xb'))['register'](socket);function respondWithRpcPromise(_0x57b9f6,_0x19513c,_0x7495bc){return new BPromise(function(_0xf05b3e,_0x38ca44){return client[_0x663a('0xc')](_0x57b9f6,_0x7495bc)[_0x663a('0xd')](function(_0x479dab){logger[_0x663a('0xe')](_0x663a('0xf'),_0x19513c,_0x663a('0x10'));logger['debug']('UserProfile,\x20%s,\x20%s,\x20%s',_0x19513c,_0x663a('0x10'),JSON['stringify'](_0x479dab));if(_0x479dab['error']){if(_0x479dab[_0x663a('0x11')][_0x663a('0x12')]===0x1f4){logger['error'](_0x663a('0xf'),_0x19513c,_0x479dab['error'][_0x663a('0x13')]);return _0x38ca44(_0x479dab[_0x663a('0x11')][_0x663a('0x13')]);}logger[_0x663a('0x11')](_0x663a('0xf'),_0x19513c,_0x479dab['error'][_0x663a('0x13')]);return _0xf05b3e(_0x479dab['error'][_0x663a('0x13')]);}else{logger[_0x663a('0xe')](_0x663a('0xf'),_0x19513c,_0x663a('0x10'));_0xf05b3e(_0x479dab['result'][_0x663a('0x13')]);}})['catch'](function(_0x51f325){logger['error'](_0x663a('0xf'),_0x19513c,_0x51f325);_0x38ca44(_0x51f325);});});}
\ No newline at end of file
+var _0xa9fc=['request\x20sent','debug','UserProfile,\x20%s,\x20%s,\x20%s','stringify','error','code','UserProfile,\x20%s,\x20%s','result','message','catch','lodash','util','moment','bluebird','randomstring','../../mysqldb','../../config/logger','rpc','http','defaults','redis','localhost','socket.io-emitter','./userProfile.socket','register','request','info'];(function(_0x1fe100,_0x3874e3){var _0x581d5d=function(_0x4c0950){while(--_0x4c0950){_0x1fe100['push'](_0x1fe100['shift']());}};_0x581d5d(++_0x3874e3);}(_0xa9fc,0x19f));var _0xca9f=function(_0x544099,_0x372b30){_0x544099=_0x544099-0x0;var _0x20ab09=_0xa9fc[_0x544099];return _0x20ab09;};'use strict';var _=require(_0xca9f('0x0'));var util=require(_0xca9f('0x1'));var moment=require(_0xca9f('0x2'));var BPromise=require(_0xca9f('0x3'));var rs=require(_0xca9f('0x4'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0xca9f('0x5'))['db'];var utils=require('../../config/utils');var logger=require(_0xca9f('0x6'))(_0xca9f('0x7'));var config=require('../../config/environment');var jayson=require('jayson/promise');var client=jayson['client'][_0xca9f('0x8')]({'port':0x232a});config['redis']=_[_0xca9f('0x9')](config[_0xca9f('0xa')],{'host':_0xca9f('0xb'),'port':0x18eb});var socket=require(_0xca9f('0xc'))(new Redis(config[_0xca9f('0xa')]));require(_0xca9f('0xd'))[_0xca9f('0xe')](socket);function respondWithRpcPromise(_0x5ae48c,_0x5cd1db,_0x2bdf62){return new BPromise(function(_0x4326a5,_0x2f0af9){return client[_0xca9f('0xf')](_0x5ae48c,_0x2bdf62)['then'](function(_0x41bca1){logger[_0xca9f('0x10')]('UserProfile,\x20%s,\x20%s',_0x5cd1db,_0xca9f('0x11'));logger[_0xca9f('0x12')](_0xca9f('0x13'),_0x5cd1db,_0xca9f('0x11'),JSON[_0xca9f('0x14')](_0x41bca1));if(_0x41bca1[_0xca9f('0x15')]){if(_0x41bca1[_0xca9f('0x15')][_0xca9f('0x16')]===0x1f4){logger[_0xca9f('0x15')](_0xca9f('0x17'),_0x5cd1db,_0x41bca1['error']['message']);return _0x2f0af9(_0x41bca1[_0xca9f('0x15')]['message']);}logger['error'](_0xca9f('0x17'),_0x5cd1db,_0x41bca1[_0xca9f('0x15')]['message']);return _0x4326a5(_0x41bca1[_0xca9f('0x15')]['message']);}else{logger[_0xca9f('0x10')]('UserProfile,\x20%s,\x20%s',_0x5cd1db,_0xca9f('0x11'));_0x4326a5(_0x41bca1[_0xca9f('0x18')][_0xca9f('0x19')]);}})[_0xca9f('0x1a')](function(_0x25008f){logger['error'](_0xca9f('0x17'),_0x5cd1db,_0x25008f);_0x2f0af9(_0x25008f);});});}
\ No newline at end of file
index 82c8bfd..309c0a3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xde0c=['length','./userProfile.events','save','remove'];(function(_0x2c4672,_0x34805c){var _0x55ac4a=function(_0x220d89){while(--_0x220d89){_0x2c4672['push'](_0x2c4672['shift']());}};_0x55ac4a(++_0x34805c);}(_0xde0c,0xf5));var _0xcde0=function(_0xd5a62c,_0x24a527){_0xd5a62c=_0xd5a62c-0x0;var _0x22fe5e=_0xde0c[_0xd5a62c];return _0x22fe5e;};'use strict';var UserProfileEvents=require(_0xcde0('0x0'));var events=[_0xcde0('0x1'),_0xcde0('0x2'),'update'];function createListener(_0x2247b3,_0x4b9e78){return function(_0x318e9f){_0x4b9e78['emit'](_0x2247b3,_0x318e9f);};}function removeListener(_0x111613,_0x5e398e){return function(){UserProfileEvents['removeListener'](_0x111613,_0x5e398e);};}exports['register']=function(_0x432632){for(var _0x56c6e9=0x0,_0x1682bf=events[_0xcde0('0x3')];_0x56c6e9<_0x1682bf;_0x56c6e9++){var _0x30e6f7=events[_0x56c6e9];var _0x8c5206=createListener('userProfile:'+_0x30e6f7,_0x432632);UserProfileEvents['on'](_0x30e6f7,_0x8c5206);}};
\ No newline at end of file
+var _0x7b77=['update','emit','removeListener','register','length','userProfile:','./userProfile.events','save','remove'];(function(_0x599f41,_0x4db732){var _0x2e4d58=function(_0x14c882){while(--_0x14c882){_0x599f41['push'](_0x599f41['shift']());}};_0x2e4d58(++_0x4db732);}(_0x7b77,0x165));var _0x77b7=function(_0x22b68a,_0x2bffc3){_0x22b68a=_0x22b68a-0x0;var _0x1ac67a=_0x7b77[_0x22b68a];return _0x1ac67a;};'use strict';var UserProfileEvents=require(_0x77b7('0x0'));var events=[_0x77b7('0x1'),_0x77b7('0x2'),_0x77b7('0x3')];function createListener(_0x1057a7,_0x4b0864){return function(_0x561f5f){_0x4b0864[_0x77b7('0x4')](_0x1057a7,_0x561f5f);};}function removeListener(_0x23550b,_0x9c8a14){return function(){UserProfileEvents[_0x77b7('0x5')](_0x23550b,_0x9c8a14);};}exports[_0x77b7('0x6')]=function(_0x2a6fbd){for(var _0x1028d7=0x0,_0x28ac0e=events[_0x77b7('0x7')];_0x1028d7<_0x28ac0e;_0x1028d7++){var _0x311a4b=events[_0x1028d7];var _0x12dcec=createListener(_0x77b7('0x8')+_0x311a4b,_0x2a6fbd);UserProfileEvents['on'](_0x311a4b,_0x12dcec);}};
\ No newline at end of file
index 6dba7db..6fa5f93 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8e20=['isAuthenticated','index','/describe','describe','/:id','show','put','update','delete','destroy','exports','multer','util','path','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./userProfileResource.controller','get'];(function(_0x510299,_0xa7d236){var _0x463422=function(_0x3aec77){while(--_0x3aec77){_0x510299['push'](_0x510299['shift']());}};_0x463422(++_0xa7d236);}(_0x8e20,0x1c3));var _0x08e2=function(_0x7b173,_0x539d7f){_0x7b173=_0x7b173-0x0;var _0x1c598c=_0x8e20[_0x7b173];return _0x1c598c;};'use strict';var multer=require(_0x08e2('0x0'));var util=require(_0x08e2('0x1'));var path=require(_0x08e2('0x2'));var timeout=require('connect-timeout');var express=require(_0x08e2('0x3'));var router=express[_0x08e2('0x4')]();var fs_extra=require(_0x08e2('0x5'));var auth=require(_0x08e2('0x6'));var interaction=require(_0x08e2('0x7'));var config=require(_0x08e2('0x8'));var controller=require(_0x08e2('0x9'));router[_0x08e2('0xa')]('/',auth[_0x08e2('0xb')](),controller[_0x08e2('0xc')]);router['get'](_0x08e2('0xd'),auth[_0x08e2('0xb')](),controller[_0x08e2('0xe')]);router[_0x08e2('0xa')](_0x08e2('0xf'),auth[_0x08e2('0xb')](),controller[_0x08e2('0x10')]);router['post']('/',auth[_0x08e2('0xb')](),controller['create']);router[_0x08e2('0x11')](_0x08e2('0xf'),auth[_0x08e2('0xb')](),controller[_0x08e2('0x12')]);router[_0x08e2('0x13')]('/:id',auth[_0x08e2('0xb')](),controller[_0x08e2('0x14')]);module[_0x08e2('0x15')]=router;
\ No newline at end of file
+var _0x1ca1=['../../config/environment','./userProfileResource.controller','get','isAuthenticated','/describe','describe','/:id','show','post','create','put','delete','destroy','exports','multer','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service'];(function(_0x1c616b,_0x3aedb4){var _0x5ec86c=function(_0x4bd2b5){while(--_0x4bd2b5){_0x1c616b['push'](_0x1c616b['shift']());}};_0x5ec86c(++_0x3aedb4);}(_0x1ca1,0x98));var _0x11ca=function(_0x300638,_0x2ce184){_0x300638=_0x300638-0x0;var _0x2f9f9c=_0x1ca1[_0x300638];return _0x2f9f9c;};'use strict';var multer=require(_0x11ca('0x0'));var util=require(_0x11ca('0x1'));var path=require(_0x11ca('0x2'));var timeout=require(_0x11ca('0x3'));var express=require(_0x11ca('0x4'));var router=express[_0x11ca('0x5')]();var fs_extra=require(_0x11ca('0x6'));var auth=require(_0x11ca('0x7'));var interaction=require(_0x11ca('0x8'));var config=require(_0x11ca('0x9'));var controller=require(_0x11ca('0xa'));router[_0x11ca('0xb')]('/',auth[_0x11ca('0xc')](),controller['index']);router[_0x11ca('0xb')](_0x11ca('0xd'),auth[_0x11ca('0xc')](),controller[_0x11ca('0xe')]);router[_0x11ca('0xb')](_0x11ca('0xf'),auth[_0x11ca('0xc')](),controller[_0x11ca('0x10')]);router[_0x11ca('0x11')]('/',auth['isAuthenticated'](),controller[_0x11ca('0x12')]);router[_0x11ca('0x13')](_0x11ca('0xf'),auth[_0x11ca('0xc')](),controller['update']);router[_0x11ca('0x14')](_0x11ca('0xf'),auth[_0x11ca('0xc')](),controller[_0x11ca('0x15')]);module[_0x11ca('0x16')]=router;
\ No newline at end of file
index 59a186a..d09f043 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5102=['sequelize','STRING'];(function(_0x32cf0d,_0x4e8556){var _0x198f90=function(_0xfe0f68){while(--_0xfe0f68){_0x32cf0d['push'](_0x32cf0d['shift']());}};_0x198f90(++_0x4e8556);}(_0x5102,0x8c));var _0x2510=function(_0x2dea24,_0x2fc021){_0x2dea24=_0x2dea24-0x0;var _0x309d58=_0x5102[_0x2dea24];return _0x309d58;};'use strict';var Sequelize=require(_0x2510('0x0'));module['exports']={'name':{'type':Sequelize[_0x2510('0x1')],'allowNull':![]},'resourceId':{'type':Sequelize['INTEGER'],'allowNull':![]},'type':{'type':Sequelize[_0x2510('0x1')],'allowNull':![]}};
\ No newline at end of file
+var _0x0dff=['exports','STRING','INTEGER','sequelize'];(function(_0x1fbb3c,_0x30006e){var _0x5e1375=function(_0x17d485){while(--_0x17d485){_0x1fbb3c['push'](_0x1fbb3c['shift']());}};_0x5e1375(++_0x30006e);}(_0x0dff,0x1b7));var _0xf0df=function(_0x3bfe5b,_0x6525a7){_0x3bfe5b=_0x3bfe5b-0x0;var _0x256404=_0x0dff[_0x3bfe5b];return _0x256404;};'use strict';var Sequelize=require(_0xf0df('0x0'));module[_0xf0df('0x1')]={'name':{'type':Sequelize[_0xf0df('0x2')],'allowNull':![]},'resourceId':{'type':Sequelize[_0xf0df('0x3')],'allowNull':![]},'type':{'type':Sequelize['STRING'],'allowNull':![]}};
\ No newline at end of file
index f3a5299..1f5ae8e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc2c7=['merge','VIRTUAL','options','includeAll','include','findAll','rows','catch','keys','find','params','describe','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','to-csv','ejs','fs-extra','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','json','offset','limit','count','set','Content-Range','reject','save','update','destroy','then','error','name','send','index','map','UserProfileResource','rawAttributes','fieldName','type','key','model','query','filters','intersection','fields','attributes','length','hasOwnProperty','nolimit','order','sort','filter','where'];(function(_0x5d9db,_0x3a929f){var _0x396aea=function(_0x2e7e4c){while(--_0x2e7e4c){_0x5d9db['push'](_0x5d9db['shift']());}};_0x396aea(++_0x3a929f);}(_0xc2c7,0x134));var _0x7c2c=function(_0x40056c,_0x22e931){_0x40056c=_0x40056c-0x0;var _0x19c182=_0xc2c7[_0x40056c];return _0x19c182;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x7c2c('0x0'));var zipdir=require(_0x7c2c('0x1'));var jsonpatch=require(_0x7c2c('0x2'));var rp=require(_0x7c2c('0x3'));var moment=require(_0x7c2c('0x4'));var BPromise=require(_0x7c2c('0x5'));var Mustache=require(_0x7c2c('0x6'));var util=require(_0x7c2c('0x7'));var path=require('path');var sox=require('sox');var csv=require(_0x7c2c('0x8'));var ejs=require(_0x7c2c('0x9'));var fs=require('fs');var fs_extra=require(_0x7c2c('0xa'));var _=require('lodash');var squel=require('squel');var crypto=require('crypto');var jsforce=require(_0x7c2c('0xb'));var deskjs=require(_0x7c2c('0xc'));var toCsv=require(_0x7c2c('0x8'));var querystring=require(_0x7c2c('0xd'));var Papa=require(_0x7c2c('0xe'));var Redis=require('ioredis');var authService=require(_0x7c2c('0xf'));var qs=require(_0x7c2c('0x10'));var as=require(_0x7c2c('0x11'));var hardwareService=require(_0x7c2c('0x12'));var logger=require(_0x7c2c('0x13'))(_0x7c2c('0x14'));var utils=require(_0x7c2c('0x15'));var config=require(_0x7c2c('0x16'));var licenseUtil=require(_0x7c2c('0x17'));var db=require(_0x7c2c('0x18'))['db'];function respondWithStatusCode(_0xae8441,_0x45847d){_0x45847d=_0x45847d||0xcc;return function(_0x68398a){if(_0x68398a){return _0xae8441[_0x7c2c('0x19')](_0x45847d);}return _0xae8441[_0x7c2c('0x1a')](_0x45847d)[_0x7c2c('0x1b')]();};}function respondWithResult(_0x4c4aaf,_0x5b5729){_0x5b5729=_0x5b5729||0xc8;return function(_0x102778){if(_0x102778){return _0x4c4aaf[_0x7c2c('0x1a')](_0x5b5729)[_0x7c2c('0x1c')](_0x102778);}};}function respondWithFilteredResult(_0x5ae94f,_0x11424c){return function(_0x206ecd){if(_0x206ecd){var _0x5e55e0=typeof _0x11424c[_0x7c2c('0x1d')]==='undefined'&&typeof _0x11424c[_0x7c2c('0x1e')]==='undefined';var _0x342ea2=_0x206ecd[_0x7c2c('0x1f')];var _0x14453f=_0x5e55e0?0x0:_0x11424c[_0x7c2c('0x1d')];var _0x17df4a=_0x5e55e0?_0x206ecd[_0x7c2c('0x1f')]:_0x11424c[_0x7c2c('0x1d')]+_0x11424c[_0x7c2c('0x1e')];var _0x2d356e;if(_0x17df4a>=_0x342ea2){_0x17df4a=_0x342ea2;_0x2d356e=0xc8;}else{_0x2d356e=0xce;}_0x5ae94f[_0x7c2c('0x1a')](_0x2d356e);return _0x5ae94f[_0x7c2c('0x20')](_0x7c2c('0x21'),_0x14453f+'-'+_0x17df4a+'/'+_0x342ea2)['json'](_0x206ecd);}return null;};}function patchUpdates(_0x1c5491){return function(_0x4adb62){try{jsonpatch['apply'](_0x4adb62,_0x1c5491,!![]);}catch(_0x15ae33){return BPromise[_0x7c2c('0x22')](_0x15ae33);}return _0x4adb62[_0x7c2c('0x23')]();};}function saveUpdates(_0x38ae30,_0x41552f){return function(_0x1883b5){if(_0x1883b5){return _0x1883b5[_0x7c2c('0x24')](_0x38ae30)['then'](function(_0x10c356){return _0x10c356;});}return null;};}function removeEntity(_0x4dedd8,_0x302c93){return function(_0x57f510){if(_0x57f510){return _0x57f510[_0x7c2c('0x25')]()[_0x7c2c('0x26')](function(){_0x4dedd8[_0x7c2c('0x1a')](0xcc)['end']();});}};}function handleEntityNotFound(_0x4d6ec7,_0x31a50c){return function(_0x30c53e){if(!_0x30c53e){_0x4d6ec7[_0x7c2c('0x19')](0x194);}return _0x30c53e;};}function handleError(_0x150690,_0x31d8f3){_0x31d8f3=_0x31d8f3||0x1f4;return function(_0xa8e145){logger[_0x7c2c('0x27')](_0xa8e145['stack']);if(_0xa8e145[_0x7c2c('0x28')]){delete _0xa8e145[_0x7c2c('0x28')];}_0x150690[_0x7c2c('0x1a')](_0x31d8f3)[_0x7c2c('0x29')](_0xa8e145);};}exports[_0x7c2c('0x2a')]=function(_0x1f8846,_0xf2bfd1){var _0x26f472={},_0xa040ff={},_0x5769ec={'count':0x0,'rows':[]};var _0x465ad6=_[_0x7c2c('0x2b')](db[_0x7c2c('0x2c')][_0x7c2c('0x2d')],function(_0x53ad23){return{'name':_0x53ad23[_0x7c2c('0x2e')],'type':_0x53ad23[_0x7c2c('0x2f')][_0x7c2c('0x30')]};});_0xa040ff[_0x7c2c('0x31')]=_[_0x7c2c('0x2b')](_0x465ad6,_0x7c2c('0x28'));_0xa040ff[_0x7c2c('0x32')]=_['keys'](_0x1f8846[_0x7c2c('0x32')]);_0xa040ff[_0x7c2c('0x33')]=_[_0x7c2c('0x34')](_0xa040ff[_0x7c2c('0x31')],_0xa040ff[_0x7c2c('0x32')]);_0x26f472['attributes']=_['intersection'](_0xa040ff[_0x7c2c('0x31')],qs['fields'](_0x1f8846['query'][_0x7c2c('0x35')]));_0x26f472[_0x7c2c('0x36')]=_0x26f472[_0x7c2c('0x36')][_0x7c2c('0x37')]?_0x26f472['attributes']:_0xa040ff[_0x7c2c('0x31')];if(!_0x1f8846[_0x7c2c('0x32')][_0x7c2c('0x38')](_0x7c2c('0x39'))){_0x26f472[_0x7c2c('0x1e')]=qs[_0x7c2c('0x1e')](_0x1f8846[_0x7c2c('0x32')][_0x7c2c('0x1e')]);_0x26f472[_0x7c2c('0x1d')]=qs[_0x7c2c('0x1d')](_0x1f8846[_0x7c2c('0x32')][_0x7c2c('0x1d')]);}_0x26f472[_0x7c2c('0x3a')]=qs['sort'](_0x1f8846['query'][_0x7c2c('0x3b')]);_0x26f472['where']=qs['filters'](_['pick'](_0x1f8846[_0x7c2c('0x32')],_0xa040ff[_0x7c2c('0x33')]),_0x465ad6);if(_0x1f8846[_0x7c2c('0x32')][_0x7c2c('0x3c')]){_0x26f472[_0x7c2c('0x3d')]=_[_0x7c2c('0x3e')](_0x26f472[_0x7c2c('0x3d')],{'$or':_[_0x7c2c('0x2b')](_0x465ad6,function(_0x2b6520){if(_0x2b6520[_0x7c2c('0x2f')]!==_0x7c2c('0x3f')){var _0x58696a={};_0x58696a[_0x2b6520['name']]={'$like':'%'+_0x1f8846[_0x7c2c('0x32')][_0x7c2c('0x3c')]+'%'};return _0x58696a;}})});}_0x26f472=_[_0x7c2c('0x3e')]({},_0x26f472,_0x1f8846[_0x7c2c('0x40')]);var _0x5e8c96={'where':_0x26f472[_0x7c2c('0x3d')]};return db[_0x7c2c('0x2c')][_0x7c2c('0x1f')](_0x5e8c96)[_0x7c2c('0x26')](function(_0x18e288){_0x5769ec[_0x7c2c('0x1f')]=_0x18e288;if(_0x1f8846[_0x7c2c('0x32')][_0x7c2c('0x41')]){_0x26f472[_0x7c2c('0x42')]=[{'all':!![]}];}return db['UserProfileResource'][_0x7c2c('0x43')](_0x26f472);})['then'](function(_0x2c3f40){_0x5769ec[_0x7c2c('0x44')]=_0x2c3f40;return _0x5769ec;})['then'](respondWithFilteredResult(_0xf2bfd1,_0x26f472))[_0x7c2c('0x45')](handleError(_0xf2bfd1,null));};exports['show']=function(_0x3014fb,_0x33b2be){var _0x9b9813={'raw':![],'where':{'id':_0x3014fb['params']['id']}},_0x26351e={};_0x26351e[_0x7c2c('0x31')]=_['keys'](db['UserProfileResource'][_0x7c2c('0x2d')]);_0x26351e[_0x7c2c('0x32')]=_[_0x7c2c('0x46')](_0x3014fb['query']);_0x26351e[_0x7c2c('0x33')]=_[_0x7c2c('0x34')](_0x26351e['model'],_0x26351e[_0x7c2c('0x32')]);_0x9b9813['attributes']=_[_0x7c2c('0x34')](_0x26351e[_0x7c2c('0x31')],qs['fields'](_0x3014fb['query'][_0x7c2c('0x35')]));_0x9b9813[_0x7c2c('0x36')]=_0x9b9813['attributes'][_0x7c2c('0x37')]?_0x9b9813['attributes']:_0x26351e['model'];if(_0x3014fb[_0x7c2c('0x32')][_0x7c2c('0x41')]){_0x9b9813[_0x7c2c('0x42')]=[{'all':!![]}];}_0x9b9813=_[_0x7c2c('0x3e')]({},_0x9b9813,_0x3014fb[_0x7c2c('0x40')]);return db[_0x7c2c('0x2c')][_0x7c2c('0x47')](_0x9b9813)[_0x7c2c('0x26')](handleEntityNotFound(_0x33b2be,null))[_0x7c2c('0x26')](respondWithResult(_0x33b2be,null))['catch'](handleError(_0x33b2be,null));};exports['create']=function(_0xeb067b,_0x3091bd){return db[_0x7c2c('0x2c')]['create'](_0xeb067b['body'],{})[_0x7c2c('0x26')](respondWithResult(_0x3091bd,0xc9))[_0x7c2c('0x45')](handleError(_0x3091bd,null));};exports[_0x7c2c('0x24')]=function(_0x2b79d5,_0x5f3de8){if(_0x2b79d5['body']['id']){delete _0x2b79d5['body']['id'];}return db[_0x7c2c('0x2c')][_0x7c2c('0x47')]({'where':{'id':_0x2b79d5[_0x7c2c('0x48')]['id']}})[_0x7c2c('0x26')](handleEntityNotFound(_0x5f3de8,null))[_0x7c2c('0x26')](saveUpdates(_0x2b79d5['body'],null))[_0x7c2c('0x26')](respondWithResult(_0x5f3de8,null))[_0x7c2c('0x45')](handleError(_0x5f3de8,null));};exports['destroy']=function(_0x19621a,_0x56e09d){return db[_0x7c2c('0x2c')][_0x7c2c('0x47')]({'where':{'id':_0x19621a[_0x7c2c('0x48')]['id']}})['then'](handleEntityNotFound(_0x56e09d,null))['then'](removeEntity(_0x56e09d,null))[_0x7c2c('0x45')](handleError(_0x56e09d,null));};exports['describe']=function(_0x13e0bf,_0x11d337){return db['UserProfileResource'][_0x7c2c('0x49')]()[_0x7c2c('0x26')](respondWithResult(_0x11d337,null))['catch'](handleError(_0x11d337,null));};
\ No newline at end of file
+var _0x687b=['options','include','findAll','rows','show','length','includeAll','merge','find','catch','create','body','params','describe','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','UserProfileResource','rawAttributes','fieldName','type','model','query','keys','filters','intersection','attributes','fields','hasOwnProperty','nolimit','order','sort','where','filter','VIRTUAL'];(function(_0x5a776b,_0x46f785){var _0xbbef59=function(_0x38313e){while(--_0x38313e){_0x5a776b['push'](_0x5a776b['shift']());}};_0xbbef59(++_0x46f785);}(_0x687b,0x14a));var _0xb687=function(_0x49e2b8,_0x5cf700){_0x49e2b8=_0x49e2b8-0x0;var _0x1f2213=_0x687b[_0x49e2b8];return _0x1f2213;};'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['UserProfileResource'][_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['UserProfileResource']['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));};exports[_0xb687('0x4e')]=function(_0x2342f6,_0x4f5784){return db['UserProfileResource']['describe']()['then'](respondWithResult(_0x4f5784,null))[_0xb687('0x4a')](handleError(_0x4f5784,null));};
\ No newline at end of file
index 2228946..ad536d5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2792=['rimraf','./userProfileResource.attributes','exports','define','UserProfileResource','user_profile_has_resources','compositeIndex','sectionId','lodash','util','../../config/logger','api','moment','bluebird','path'];(function(_0x26390c,_0x4e887d){var _0x34c3a0=function(_0x415669){while(--_0x415669){_0x26390c['push'](_0x26390c['shift']());}};_0x34c3a0(++_0x4e887d);}(_0x2792,0x8f));var _0x2279=function(_0x437546,_0x334f47){_0x437546=_0x437546-0x0;var _0x36b04f=_0x2792[_0x437546];return _0x36b04f;};'use strict';var _=require(_0x2279('0x0'));var util=require(_0x2279('0x1'));var logger=require(_0x2279('0x2'))(_0x2279('0x3'));var moment=require(_0x2279('0x4'));var BPromise=require(_0x2279('0x5'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x2279('0x6'));var rimraf=require(_0x2279('0x7'));var config=require('../../config/environment');var attributes=require(_0x2279('0x8'));module[_0x2279('0x9')]=function(_0x132b87,_0x14503){return _0x132b87[_0x2279('0xa')](_0x2279('0xb'),attributes,{'tableName':_0x2279('0xc'),'paranoid':![],'indexes':[{'name':_0x2279('0xd'),'fields':['resourceId',_0x2279('0xe')]}],'timestamps':!![]});};
\ No newline at end of file
+var _0x9360=['./userProfileResource.attributes','exports','define','UserProfileResource','user_profile_has_resources','resourceId','sectionId','util','../../config/logger','api','moment','bluebird','request-promise','path','rimraf','../../config/environment'];(function(_0x4e86f8,_0x52dd3e){var _0x5e1d45=function(_0x20694e){while(--_0x20694e){_0x4e86f8['push'](_0x4e86f8['shift']());}};_0x5e1d45(++_0x52dd3e);}(_0x9360,0x67));var _0x0936=function(_0x122ef9,_0x451d2a){_0x122ef9=_0x122ef9-0x0;var _0x42fba0=_0x9360[_0x122ef9];return _0x42fba0;};'use strict';var _=require('lodash');var util=require(_0x0936('0x0'));var logger=require(_0x0936('0x1'))(_0x0936('0x2'));var moment=require(_0x0936('0x3'));var BPromise=require(_0x0936('0x4'));var rp=require(_0x0936('0x5'));var fs=require('fs');var path=require(_0x0936('0x6'));var rimraf=require(_0x0936('0x7'));var config=require(_0x0936('0x8'));var attributes=require(_0x0936('0x9'));module[_0x0936('0xa')]=function(_0x3064e3,_0x443646){return _0x3064e3[_0x0936('0xb')](_0x0936('0xc'),attributes,{'tableName':_0x0936('0xd'),'paranoid':![],'indexes':[{'name':'compositeIndex','fields':[_0x0936('0xe'),_0x0936('0xf')]}],'timestamps':!![]});};
\ No newline at end of file
index 60bf9e3..959366b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xcf34=['http','request','then','UserProfileResource,\x20%s,\x20%s','request\x20sent','debug','UserProfileResource,\x20%s,\x20%s,\x20%s','stringify','error','code','message','info','catch','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','jayson/promise'];(function(_0x3cffb5,_0x32fde0){var _0x549e34=function(_0x58b9b9){while(--_0x58b9b9){_0x3cffb5['push'](_0x3cffb5['shift']());}};_0x549e34(++_0x32fde0);}(_0xcf34,0x15d));var _0x4cf3=function(_0x2bb452,_0x2dbbc0){_0x2bb452=_0x2bb452-0x0;var _0x5f50a6=_0xcf34[_0x2bb452];return _0x5f50a6;};'use strict';var _=require(_0x4cf3('0x0'));var util=require(_0x4cf3('0x1'));var moment=require(_0x4cf3('0x2'));var BPromise=require(_0x4cf3('0x3'));var rs=require(_0x4cf3('0x4'));var fs=require('fs');var Redis=require(_0x4cf3('0x5'));var db=require(_0x4cf3('0x6'))['db'];var utils=require(_0x4cf3('0x7'));var logger=require(_0x4cf3('0x8'))(_0x4cf3('0x9'));var config=require('../../config/environment');var jayson=require(_0x4cf3('0xa'));var client=jayson['client'][_0x4cf3('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x2ca10e,_0x57c026,_0x2f56a1){return new BPromise(function(_0x20a300,_0x489dc2){return client[_0x4cf3('0xc')](_0x2ca10e,_0x2f56a1)[_0x4cf3('0xd')](function(_0x454c81){logger['info'](_0x4cf3('0xe'),_0x57c026,_0x4cf3('0xf'));logger[_0x4cf3('0x10')](_0x4cf3('0x11'),_0x57c026,_0x4cf3('0xf'),JSON[_0x4cf3('0x12')](_0x454c81));if(_0x454c81[_0x4cf3('0x13')]){if(_0x454c81[_0x4cf3('0x13')][_0x4cf3('0x14')]===0x1f4){logger[_0x4cf3('0x13')](_0x4cf3('0xe'),_0x57c026,_0x454c81[_0x4cf3('0x13')][_0x4cf3('0x15')]);return _0x489dc2(_0x454c81[_0x4cf3('0x13')][_0x4cf3('0x15')]);}logger[_0x4cf3('0x13')]('UserProfileResource,\x20%s,\x20%s',_0x57c026,_0x454c81[_0x4cf3('0x13')]['message']);return _0x20a300(_0x454c81[_0x4cf3('0x13')][_0x4cf3('0x15')]);}else{logger[_0x4cf3('0x16')](_0x4cf3('0xe'),_0x57c026,_0x4cf3('0xf'));_0x20a300(_0x454c81['result']['message']);}})[_0x4cf3('0x17')](function(_0x1d34e7){logger[_0x4cf3('0x13')](_0x4cf3('0xe'),_0x57c026,_0x1d34e7);_0x489dc2(_0x1d34e7);});});}
\ No newline at end of file
+var _0x05d8=['UserProfileResource,\x20%s,\x20%s','request\x20sent','stringify','error','code','message','result','catch','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/logger','rpc','../../config/environment','jayson/promise','http','request','info'];(function(_0x4feafc,_0x24822e){var _0x44bfcc=function(_0x383bd3){while(--_0x383bd3){_0x4feafc['push'](_0x4feafc['shift']());}};_0x44bfcc(++_0x24822e);}(_0x05d8,0xc5));var _0x805d=function(_0x2df507,_0x553862){_0x2df507=_0x2df507-0x0;var _0x1f7167=_0x05d8[_0x2df507];return _0x1f7167;};'use strict';var _=require('lodash');var util=require(_0x805d('0x0'));var moment=require(_0x805d('0x1'));var BPromise=require(_0x805d('0x2'));var rs=require(_0x805d('0x3'));var fs=require('fs');var Redis=require(_0x805d('0x4'));var db=require(_0x805d('0x5'))['db'];var utils=require('../../config/utils');var logger=require(_0x805d('0x6'))(_0x805d('0x7'));var config=require(_0x805d('0x8'));var jayson=require(_0x805d('0x9'));var client=jayson['client'][_0x805d('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x3608e5,_0x3cfc50,_0x4af5ad){return new BPromise(function(_0x765729,_0x5ad604){return client[_0x805d('0xb')](_0x3608e5,_0x4af5ad)['then'](function(_0x183202){logger[_0x805d('0xc')](_0x805d('0xd'),_0x3cfc50,_0x805d('0xe'));logger['debug']('UserProfileResource,\x20%s,\x20%s,\x20%s',_0x3cfc50,_0x805d('0xe'),JSON[_0x805d('0xf')](_0x183202));if(_0x183202[_0x805d('0x10')]){if(_0x183202[_0x805d('0x10')][_0x805d('0x11')]===0x1f4){logger[_0x805d('0x10')](_0x805d('0xd'),_0x3cfc50,_0x183202[_0x805d('0x10')][_0x805d('0x12')]);return _0x5ad604(_0x183202[_0x805d('0x10')][_0x805d('0x12')]);}logger[_0x805d('0x10')](_0x805d('0xd'),_0x3cfc50,_0x183202[_0x805d('0x10')][_0x805d('0x12')]);return _0x765729(_0x183202[_0x805d('0x10')][_0x805d('0x12')]);}else{logger[_0x805d('0xc')](_0x805d('0xd'),_0x3cfc50,_0x805d('0xe'));_0x765729(_0x183202[_0x805d('0x13')][_0x805d('0x12')]);}})[_0x805d('0x14')](function(_0x2fcc2a){logger['error'](_0x805d('0xd'),_0x3cfc50,_0x2fcc2a);_0x5ad604(_0x2fcc2a);});});}
\ No newline at end of file
index 4e12661..7b04e5b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd51c=['destroy','path','connect-timeout','express','Router','../../components/auth/service','./userProfileSection.controller','get','isAuthenticated','index','describe','/:id','post','create','update','delete'];(function(_0x13687c,_0x611c33){var _0x3a2c69=function(_0x17fa80){while(--_0x17fa80){_0x13687c['push'](_0x13687c['shift']());}};_0x3a2c69(++_0x611c33);}(_0xd51c,0x161));var _0xcd51=function(_0x584641,_0x72fa72){_0x584641=_0x584641-0x0;var _0x40ed9e=_0xd51c[_0x584641];return _0x40ed9e;};'use strict';var multer=require('multer');var util=require('util');var path=require(_0xcd51('0x0'));var timeout=require(_0xcd51('0x1'));var express=require(_0xcd51('0x2'));var router=express[_0xcd51('0x3')]();var fs_extra=require('fs-extra');var auth=require(_0xcd51('0x4'));var interaction=require('../../components/interaction/service');var config=require('../../config/environment');var controller=require(_0xcd51('0x5'));router[_0xcd51('0x6')]('/',auth[_0xcd51('0x7')](),controller[_0xcd51('0x8')]);router[_0xcd51('0x6')]('/describe',auth[_0xcd51('0x7')](),controller[_0xcd51('0x9')]);router['get'](_0xcd51('0xa'),auth[_0xcd51('0x7')](),controller['show']);router[_0xcd51('0xb')]('/',auth[_0xcd51('0x7')](),controller[_0xcd51('0xc')]);router['put']('/:id',auth['isAuthenticated'](),controller[_0xcd51('0xd')]);router[_0xcd51('0xe')](_0xcd51('0xa'),auth[_0xcd51('0x7')](),controller[_0xcd51('0xf')]);module['exports']=router;
\ No newline at end of file
+var _0x95bb=['describe','/:id','post','put','update','delete','destroy','multer','util','path','connect-timeout','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./userProfileSection.controller','get','isAuthenticated'];(function(_0x3103c3,_0x3cc4ec){var _0x1f2c83=function(_0x46e5a5){while(--_0x46e5a5){_0x3103c3['push'](_0x3103c3['shift']());}};_0x1f2c83(++_0x3cc4ec);}(_0x95bb,0x8c));var _0xb95b=function(_0x435dbf,_0x24306a){_0x435dbf=_0x435dbf-0x0;var _0x87214b=_0x95bb[_0x435dbf];return _0x87214b;};'use strict';var multer=require(_0xb95b('0x0'));var util=require(_0xb95b('0x1'));var path=require(_0xb95b('0x2'));var timeout=require(_0xb95b('0x3'));var express=require('express');var router=express[_0xb95b('0x4')]();var fs_extra=require(_0xb95b('0x5'));var auth=require(_0xb95b('0x6'));var interaction=require(_0xb95b('0x7'));var config=require(_0xb95b('0x8'));var controller=require(_0xb95b('0x9'));router[_0xb95b('0xa')]('/',auth[_0xb95b('0xb')](),controller['index']);router[_0xb95b('0xa')]('/describe',auth[_0xb95b('0xb')](),controller[_0xb95b('0xc')]);router[_0xb95b('0xa')](_0xb95b('0xd'),auth['isAuthenticated'](),controller['show']);router[_0xb95b('0xe')]('/',auth[_0xb95b('0xb')](),controller['create']);router[_0xb95b('0xf')](_0xb95b('0xd'),auth[_0xb95b('0xb')](),controller[_0xb95b('0x10')]);router[_0xb95b('0x11')](_0xb95b('0xd'),auth[_0xb95b('0xb')](),controller[_0xb95b('0x12')]);module['exports']=router;
\ No newline at end of file
index add1be3..0d99311 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xda3f=['join','getDataValue','crudPermissions','split','exports','STRING','BOOLEAN','setDataValue'];(function(_0x386e61,_0x337680){var _0x1f9ab2=function(_0x3db0ad){while(--_0x3db0ad){_0x386e61['push'](_0x386e61['shift']());}};_0x1f9ab2(++_0x337680);}(_0xda3f,0xec));var _0xfda3=function(_0x2f5f4c,_0x19740f){_0x2f5f4c=_0x2f5f4c-0x0;var _0x3a2c2a=_0xda3f[_0x2f5f4c];return _0x3a2c2a;};'use strict';var Sequelize=require('sequelize');module[_0xfda3('0x0')]={'name':{'type':Sequelize[_0xfda3('0x1')],'allowNull':![]},'category':{'type':Sequelize['STRING'],'allowNull':![]},'sectionId':{'type':Sequelize['INTEGER'],'allowNull':![]},'enabled':{'type':Sequelize['BOOLEAN'],'defaultValue':null},'autoAssociation':{'type':Sequelize[_0xfda3('0x2')],'defaultValue':null},'crudPermissions':{'type':Sequelize['STRING'],'set':function(_0x36dc71){this[_0xfda3('0x3')]('crudPermissions',_0x36dc71?_0x36dc71[_0xfda3('0x4')](''):[]);},'get':function(){return this[_0xfda3('0x5')]('crudPermissions')?this['getDataValue'](_0xfda3('0x6'))[_0xfda3('0x7')](''):[];}}};
\ No newline at end of file
+var _0xa30a=['exports','STRING','INTEGER','BOOLEAN','setDataValue','crudPermissions','getDataValue','split','sequelize'];(function(_0x550d12,_0x5384bd){var _0x12103d=function(_0x2a9834){while(--_0x2a9834){_0x550d12['push'](_0x550d12['shift']());}};_0x12103d(++_0x5384bd);}(_0xa30a,0xd7));var _0xaa30=function(_0x14add3,_0x13ce8d){_0x14add3=_0x14add3-0x0;var _0x4a174f=_0xa30a[_0x14add3];return _0x4a174f;};'use strict';var Sequelize=require(_0xaa30('0x0'));module[_0xaa30('0x1')]={'name':{'type':Sequelize[_0xaa30('0x2')],'allowNull':![]},'category':{'type':Sequelize['STRING'],'allowNull':![]},'sectionId':{'type':Sequelize[_0xaa30('0x3')],'allowNull':![]},'enabled':{'type':Sequelize[_0xaa30('0x4')],'defaultValue':null},'autoAssociation':{'type':Sequelize[_0xaa30('0x4')],'defaultValue':null},'crudPermissions':{'type':Sequelize[_0xaa30('0x2')],'set':function(_0x2a9b06){this[_0xaa30('0x5')](_0xaa30('0x6'),_0x2a9b06?_0x2a9b06['join'](''):[]);},'get':function(){return this[_0xaa30('0x7')]('crudPermissions')?this[_0xaa30('0x7')](_0xaa30('0x6'))[_0xaa30('0x8')](''):[];}}};
\ No newline at end of file
index 01e1a58..1dc472c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xff3b=['apply','reject','save','update','then','destroy','error','stack','name','index','map','type','key','model','query','keys','intersection','fields','attributes','nolimit','order','sort','pick','filters','filter','where','VIRTUAL','merge','include','findAll','rows','params','UserProfileSection','rawAttributes','find','catch','create','body','describe','rimraf','zip-dir','fast-json-patch','request-promise','bluebird','util','path','to-csv','ejs','fs-extra','lodash','squel','querystring','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','offset','undefined','limit','count','set','Content-Range','json'];(function(_0x14d19b,_0x5de038){var _0x455d60=function(_0x38f5da){while(--_0x38f5da){_0x14d19b['push'](_0x14d19b['shift']());}};_0x455d60(++_0x5de038);}(_0xff3b,0x1dd));var _0xbff3=function(_0x40d0cc,_0x44ab18){_0x40d0cc=_0x40d0cc-0x0;var _0x1b14ab=_0xff3b[_0x40d0cc];return _0x1b14ab;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0xbff3('0x0'));var zipdir=require(_0xbff3('0x1'));var jsonpatch=require(_0xbff3('0x2'));var rp=require(_0xbff3('0x3'));var moment=require('moment');var BPromise=require(_0xbff3('0x4'));var Mustache=require('mustache');var util=require(_0xbff3('0x5'));var path=require(_0xbff3('0x6'));var sox=require('sox');var csv=require(_0xbff3('0x7'));var ejs=require(_0xbff3('0x8'));var fs=require('fs');var fs_extra=require(_0xbff3('0x9'));var _=require(_0xbff3('0xa'));var squel=require(_0xbff3('0xb'));var crypto=require('crypto');var jsforce=require('jsforce');var deskjs=require('desk.js');var toCsv=require(_0xbff3('0x7'));var querystring=require(_0xbff3('0xc'));var Papa=require(_0xbff3('0xd'));var Redis=require(_0xbff3('0xe'));var authService=require(_0xbff3('0xf'));var qs=require(_0xbff3('0x10'));var as=require(_0xbff3('0x11'));var hardwareService=require('../../config/license/hardware');var logger=require(_0xbff3('0x12'))(_0xbff3('0x13'));var utils=require(_0xbff3('0x14'));var config=require(_0xbff3('0x15'));var licenseUtil=require(_0xbff3('0x16'));var db=require(_0xbff3('0x17'))['db'];function respondWithStatusCode(_0x307ed6,_0x26bca2){_0x26bca2=_0x26bca2||0xcc;return function(_0x54625d){if(_0x54625d){return _0x307ed6[_0xbff3('0x18')](_0x26bca2);}return _0x307ed6['status'](_0x26bca2)[_0xbff3('0x19')]();};}function respondWithResult(_0x59e4eb,_0x5a5e0e){_0x5a5e0e=_0x5a5e0e||0xc8;return function(_0x5cd6fb){if(_0x5cd6fb){return _0x59e4eb[_0xbff3('0x1a')](_0x5a5e0e)['json'](_0x5cd6fb);}};}function respondWithFilteredResult(_0x197e7d,_0x4d4546){return function(_0x1f5d5a){if(_0x1f5d5a){var _0x1894af=typeof _0x4d4546[_0xbff3('0x1b')]===_0xbff3('0x1c')&&typeof _0x4d4546[_0xbff3('0x1d')]===_0xbff3('0x1c');var _0x59df2e=_0x1f5d5a[_0xbff3('0x1e')];var _0x3c5815=_0x1894af?0x0:_0x4d4546['offset'];var _0x565402=_0x1894af?_0x1f5d5a[_0xbff3('0x1e')]:_0x4d4546[_0xbff3('0x1b')]+_0x4d4546[_0xbff3('0x1d')];var _0x3e6bf3;if(_0x565402>=_0x59df2e){_0x565402=_0x59df2e;_0x3e6bf3=0xc8;}else{_0x3e6bf3=0xce;}_0x197e7d[_0xbff3('0x1a')](_0x3e6bf3);return _0x197e7d[_0xbff3('0x1f')](_0xbff3('0x20'),_0x3c5815+'-'+_0x565402+'/'+_0x59df2e)[_0xbff3('0x21')](_0x1f5d5a);}return null;};}function patchUpdates(_0xced55a){return function(_0x51d03d){try{jsonpatch[_0xbff3('0x22')](_0x51d03d,_0xced55a,!![]);}catch(_0xc37a64){return BPromise[_0xbff3('0x23')](_0xc37a64);}return _0x51d03d[_0xbff3('0x24')]();};}function saveUpdates(_0x1e3b8f,_0x28c606){return function(_0x45ede5){if(_0x45ede5){return _0x45ede5[_0xbff3('0x25')](_0x1e3b8f)[_0xbff3('0x26')](function(_0x4ff0ba){return _0x4ff0ba;});}return null;};}function removeEntity(_0x5a73a9,_0x5d8cc5){return function(_0x2d2bb7){if(_0x2d2bb7){return _0x2d2bb7[_0xbff3('0x27')]()[_0xbff3('0x26')](function(){_0x5a73a9['status'](0xcc)['end']();});}};}function handleEntityNotFound(_0x53d587,_0x3c6109){return function(_0x544645){if(!_0x544645){_0x53d587['sendStatus'](0x194);}return _0x544645;};}function handleError(_0x556d3c,_0x4511ab){_0x4511ab=_0x4511ab||0x1f4;return function(_0x3d0bb1){logger[_0xbff3('0x28')](_0x3d0bb1[_0xbff3('0x29')]);if(_0x3d0bb1[_0xbff3('0x2a')]){delete _0x3d0bb1[_0xbff3('0x2a')];}_0x556d3c[_0xbff3('0x1a')](_0x4511ab)['send'](_0x3d0bb1);};}exports[_0xbff3('0x2b')]=function(_0x141252,_0x4c3c57){var _0xf78bbb={},_0x4f5c20={},_0x5bb0e5={'count':0x0,'rows':[]};var _0x419a02=_[_0xbff3('0x2c')](db['UserProfileSection']['rawAttributes'],function(_0xaa770d){return{'name':_0xaa770d['fieldName'],'type':_0xaa770d[_0xbff3('0x2d')][_0xbff3('0x2e')]};});_0x4f5c20[_0xbff3('0x2f')]=_[_0xbff3('0x2c')](_0x419a02,_0xbff3('0x2a'));_0x4f5c20[_0xbff3('0x30')]=_[_0xbff3('0x31')](_0x141252[_0xbff3('0x30')]);_0x4f5c20['filters']=_[_0xbff3('0x32')](_0x4f5c20[_0xbff3('0x2f')],_0x4f5c20[_0xbff3('0x30')]);_0xf78bbb['attributes']=_[_0xbff3('0x32')](_0x4f5c20[_0xbff3('0x2f')],qs['fields'](_0x141252[_0xbff3('0x30')][_0xbff3('0x33')]));_0xf78bbb[_0xbff3('0x34')]=_0xf78bbb[_0xbff3('0x34')]['length']?_0xf78bbb['attributes']:_0x4f5c20[_0xbff3('0x2f')];if(!_0x141252[_0xbff3('0x30')]['hasOwnProperty'](_0xbff3('0x35'))){_0xf78bbb[_0xbff3('0x1d')]=qs[_0xbff3('0x1d')](_0x141252[_0xbff3('0x30')][_0xbff3('0x1d')]);_0xf78bbb[_0xbff3('0x1b')]=qs[_0xbff3('0x1b')](_0x141252[_0xbff3('0x30')]['offset']);}_0xf78bbb[_0xbff3('0x36')]=qs[_0xbff3('0x37')](_0x141252[_0xbff3('0x30')][_0xbff3('0x37')]);_0xf78bbb['where']=qs['filters'](_[_0xbff3('0x38')](_0x141252[_0xbff3('0x30')],_0x4f5c20[_0xbff3('0x39')]),_0x419a02);if(_0x141252[_0xbff3('0x30')][_0xbff3('0x3a')]){_0xf78bbb[_0xbff3('0x3b')]=_['merge'](_0xf78bbb[_0xbff3('0x3b')],{'$or':_[_0xbff3('0x2c')](_0x419a02,function(_0x199e84){if(_0x199e84[_0xbff3('0x2d')]!==_0xbff3('0x3c')){var _0x5a4446={};_0x5a4446[_0x199e84[_0xbff3('0x2a')]]={'$like':'%'+_0x141252[_0xbff3('0x30')]['filter']+'%'};return _0x5a4446;}})});}_0xf78bbb=_[_0xbff3('0x3d')]({},_0xf78bbb,_0x141252['options']);var _0x52fb2c={'where':_0xf78bbb['where']};return db['UserProfileSection']['count'](_0x52fb2c)[_0xbff3('0x26')](function(_0x578fe1){_0x5bb0e5[_0xbff3('0x1e')]=_0x578fe1;if(_0x141252['query']['includeAll']){_0xf78bbb[_0xbff3('0x3e')]=[{'all':!![]}];}return db['UserProfileSection'][_0xbff3('0x3f')](_0xf78bbb);})[_0xbff3('0x26')](function(_0x3c5c07){_0x5bb0e5[_0xbff3('0x40')]=_0x3c5c07;return _0x5bb0e5;})[_0xbff3('0x26')](respondWithFilteredResult(_0x4c3c57,_0xf78bbb))['catch'](handleError(_0x4c3c57,null));};exports['show']=function(_0x5c0fac,_0x5bcf44){var _0x318f69={'raw':![],'where':{'id':_0x5c0fac[_0xbff3('0x41')]['id']}},_0x28ffb1={};_0x28ffb1['model']=_[_0xbff3('0x31')](db[_0xbff3('0x42')][_0xbff3('0x43')]);_0x28ffb1[_0xbff3('0x30')]=_[_0xbff3('0x31')](_0x5c0fac[_0xbff3('0x30')]);_0x28ffb1['filters']=_['intersection'](_0x28ffb1[_0xbff3('0x2f')],_0x28ffb1['query']);_0x318f69[_0xbff3('0x34')]=_[_0xbff3('0x32')](_0x28ffb1['model'],qs[_0xbff3('0x33')](_0x5c0fac[_0xbff3('0x30')][_0xbff3('0x33')]));_0x318f69[_0xbff3('0x34')]=_0x318f69[_0xbff3('0x34')]['length']?_0x318f69[_0xbff3('0x34')]:_0x28ffb1[_0xbff3('0x2f')];if(_0x5c0fac['query']['includeAll']){_0x318f69['include']=[{'all':!![]}];}_0x318f69=_[_0xbff3('0x3d')]({},_0x318f69,_0x5c0fac['options']);return db[_0xbff3('0x42')][_0xbff3('0x44')](_0x318f69)['then'](handleEntityNotFound(_0x5bcf44,null))[_0xbff3('0x26')](respondWithResult(_0x5bcf44,null))[_0xbff3('0x45')](handleError(_0x5bcf44,null));};exports[_0xbff3('0x46')]=function(_0x4fa6f9,_0x2889ff){return db[_0xbff3('0x42')][_0xbff3('0x46')](_0x4fa6f9[_0xbff3('0x47')],{})[_0xbff3('0x26')](respondWithResult(_0x2889ff,0xc9))['catch'](handleError(_0x2889ff,null));};exports[_0xbff3('0x25')]=function(_0x478808,_0x4376ed){if(_0x478808[_0xbff3('0x47')]['id']){delete _0x478808['body']['id'];}return db[_0xbff3('0x42')][_0xbff3('0x44')]({'where':{'id':_0x478808[_0xbff3('0x41')]['id']}})['then'](handleEntityNotFound(_0x4376ed,null))[_0xbff3('0x26')](saveUpdates(_0x478808[_0xbff3('0x47')],null))[_0xbff3('0x26')](respondWithResult(_0x4376ed,null))[_0xbff3('0x45')](handleError(_0x4376ed,null));};exports[_0xbff3('0x27')]=function(_0x5e6ed8,_0x164b09){return db[_0xbff3('0x42')]['find']({'where':{'id':_0x5e6ed8['params']['id']}})[_0xbff3('0x26')](handleEntityNotFound(_0x164b09,null))[_0xbff3('0x26')](removeEntity(_0x164b09,null))[_0xbff3('0x45')](handleError(_0x164b09,null));};exports[_0xbff3('0x48')]=function(_0x5e7301,_0x5c3118){return db[_0xbff3('0x42')][_0xbff3('0x48')]()[_0xbff3('0x26')](respondWithResult(_0x5c3118,null))[_0xbff3('0x45')](handleError(_0x5c3118,null));};
\ No newline at end of file
+var _0x8f53=['../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','../../config/utils','../../mysqldb','sendStatus','end','status','undefined','limit','count','offset','Content-Range','apply','save','then','destroy','stack','name','send','index','map','UserProfileSection','fieldName','type','key','query','keys','filters','intersection','attributes','model','fields','length','hasOwnProperty','nolimit','order','sort','where','pick','filter','VIRTUAL','merge','options','includeAll','include','findAll','rows','params','find','catch','update','body','describe','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','sox','to-csv','ejs','fs-extra','lodash','squel','jsforce','querystring','papaparse','ioredis'];(function(_0x46c15b,_0x1677db){var _0x40e2da=function(_0x97c389){while(--_0x97c389){_0x46c15b['push'](_0x46c15b['shift']());}};_0x40e2da(++_0x1677db);}(_0x8f53,0xcb));var _0x38f5=function(_0x14add3,_0x13ce8d){_0x14add3=_0x14add3-0x0;var _0x4a174f=_0x8f53[_0x14add3];return _0x4a174f;};'use strict';var emlformat=require(_0x38f5('0x0'));var rimraf=require(_0x38f5('0x1'));var zipdir=require(_0x38f5('0x2'));var jsonpatch=require(_0x38f5('0x3'));var rp=require(_0x38f5('0x4'));var moment=require(_0x38f5('0x5'));var BPromise=require(_0x38f5('0x6'));var Mustache=require(_0x38f5('0x7'));var util=require(_0x38f5('0x8'));var path=require('path');var sox=require(_0x38f5('0x9'));var csv=require(_0x38f5('0xa'));var ejs=require(_0x38f5('0xb'));var fs=require('fs');var fs_extra=require(_0x38f5('0xc'));var _=require(_0x38f5('0xd'));var squel=require(_0x38f5('0xe'));var crypto=require('crypto');var jsforce=require(_0x38f5('0xf'));var deskjs=require('desk.js');var toCsv=require(_0x38f5('0xa'));var querystring=require(_0x38f5('0x10'));var Papa=require(_0x38f5('0x11'));var Redis=require(_0x38f5('0x12'));var authService=require(_0x38f5('0x13'));var qs=require(_0x38f5('0x14'));var as=require(_0x38f5('0x15'));var hardwareService=require('../../config/license/hardware');var logger=require(_0x38f5('0x16'))('api');var utils=require(_0x38f5('0x17'));var config=require('../../config/environment');var licenseUtil=require('../../config/license/util');var db=require(_0x38f5('0x18'))['db'];function respondWithStatusCode(_0x5c083f,_0x4fd490){_0x4fd490=_0x4fd490||0xcc;return function(_0x56934c){if(_0x56934c){return _0x5c083f[_0x38f5('0x19')](_0x4fd490);}return _0x5c083f['status'](_0x4fd490)[_0x38f5('0x1a')]();};}function respondWithResult(_0x5ce62b,_0x5d56dc){_0x5d56dc=_0x5d56dc||0xc8;return function(_0x2cc29d){if(_0x2cc29d){return _0x5ce62b[_0x38f5('0x1b')](_0x5d56dc)['json'](_0x2cc29d);}};}function respondWithFilteredResult(_0x35059c,_0x2d0241){return function(_0x2ebd36){if(_0x2ebd36){var _0x4bab37=typeof _0x2d0241['offset']===_0x38f5('0x1c')&&typeof _0x2d0241[_0x38f5('0x1d')]===_0x38f5('0x1c');var _0x5f6f85=_0x2ebd36[_0x38f5('0x1e')];var _0x5b7f74=_0x4bab37?0x0:_0x2d0241[_0x38f5('0x1f')];var _0x1486ff=_0x4bab37?_0x2ebd36[_0x38f5('0x1e')]:_0x2d0241[_0x38f5('0x1f')]+_0x2d0241[_0x38f5('0x1d')];var _0x5d0f72;if(_0x1486ff>=_0x5f6f85){_0x1486ff=_0x5f6f85;_0x5d0f72=0xc8;}else{_0x5d0f72=0xce;}_0x35059c[_0x38f5('0x1b')](_0x5d0f72);return _0x35059c['set'](_0x38f5('0x20'),_0x5b7f74+'-'+_0x1486ff+'/'+_0x5f6f85)['json'](_0x2ebd36);}return null;};}function patchUpdates(_0x1a2c7a){return function(_0x5234e4){try{jsonpatch[_0x38f5('0x21')](_0x5234e4,_0x1a2c7a,!![]);}catch(_0x80d50a){return BPromise['reject'](_0x80d50a);}return _0x5234e4[_0x38f5('0x22')]();};}function saveUpdates(_0x4b085b,_0x15858c){return function(_0x4eb017){if(_0x4eb017){return _0x4eb017['update'](_0x4b085b)[_0x38f5('0x23')](function(_0x4547dc){return _0x4547dc;});}return null;};}function removeEntity(_0xc1ad68,_0x570d64){return function(_0x580e72){if(_0x580e72){return _0x580e72[_0x38f5('0x24')]()[_0x38f5('0x23')](function(){_0xc1ad68[_0x38f5('0x1b')](0xcc)[_0x38f5('0x1a')]();});}};}function handleEntityNotFound(_0x2180c6,_0x4ec7e0){return function(_0x35d87b){if(!_0x35d87b){_0x2180c6['sendStatus'](0x194);}return _0x35d87b;};}function handleError(_0x377a30,_0x29bbe2){_0x29bbe2=_0x29bbe2||0x1f4;return function(_0x5c1da5){logger['error'](_0x5c1da5[_0x38f5('0x25')]);if(_0x5c1da5[_0x38f5('0x26')]){delete _0x5c1da5['name'];}_0x377a30[_0x38f5('0x1b')](_0x29bbe2)[_0x38f5('0x27')](_0x5c1da5);};}exports[_0x38f5('0x28')]=function(_0x4b1a8b,_0x12acfe){var _0x1af8d7={},_0x589017={},_0x4b2d4c={'count':0x0,'rows':[]};var _0x335289=_[_0x38f5('0x29')](db[_0x38f5('0x2a')]['rawAttributes'],function(_0x59a207){return{'name':_0x59a207[_0x38f5('0x2b')],'type':_0x59a207[_0x38f5('0x2c')][_0x38f5('0x2d')]};});_0x589017['model']=_[_0x38f5('0x29')](_0x335289,'name');_0x589017[_0x38f5('0x2e')]=_[_0x38f5('0x2f')](_0x4b1a8b[_0x38f5('0x2e')]);_0x589017[_0x38f5('0x30')]=_[_0x38f5('0x31')](_0x589017['model'],_0x589017[_0x38f5('0x2e')]);_0x1af8d7[_0x38f5('0x32')]=_['intersection'](_0x589017[_0x38f5('0x33')],qs['fields'](_0x4b1a8b[_0x38f5('0x2e')][_0x38f5('0x34')]));_0x1af8d7[_0x38f5('0x32')]=_0x1af8d7[_0x38f5('0x32')][_0x38f5('0x35')]?_0x1af8d7[_0x38f5('0x32')]:_0x589017['model'];if(!_0x4b1a8b[_0x38f5('0x2e')][_0x38f5('0x36')](_0x38f5('0x37'))){_0x1af8d7[_0x38f5('0x1d')]=qs[_0x38f5('0x1d')](_0x4b1a8b[_0x38f5('0x2e')][_0x38f5('0x1d')]);_0x1af8d7[_0x38f5('0x1f')]=qs[_0x38f5('0x1f')](_0x4b1a8b[_0x38f5('0x2e')][_0x38f5('0x1f')]);}_0x1af8d7[_0x38f5('0x38')]=qs[_0x38f5('0x39')](_0x4b1a8b[_0x38f5('0x2e')]['sort']);_0x1af8d7[_0x38f5('0x3a')]=qs[_0x38f5('0x30')](_[_0x38f5('0x3b')](_0x4b1a8b[_0x38f5('0x2e')],_0x589017[_0x38f5('0x30')]),_0x335289);if(_0x4b1a8b[_0x38f5('0x2e')][_0x38f5('0x3c')]){_0x1af8d7[_0x38f5('0x3a')]=_['merge'](_0x1af8d7[_0x38f5('0x3a')],{'$or':_[_0x38f5('0x29')](_0x335289,function(_0x5a2782){if(_0x5a2782[_0x38f5('0x2c')]!==_0x38f5('0x3d')){var _0x1dc68e={};_0x1dc68e[_0x5a2782['name']]={'$like':'%'+_0x4b1a8b[_0x38f5('0x2e')][_0x38f5('0x3c')]+'%'};return _0x1dc68e;}})});}_0x1af8d7=_[_0x38f5('0x3e')]({},_0x1af8d7,_0x4b1a8b[_0x38f5('0x3f')]);var _0x64c2e5={'where':_0x1af8d7[_0x38f5('0x3a')]};return db[_0x38f5('0x2a')][_0x38f5('0x1e')](_0x64c2e5)['then'](function(_0x2b1dce){_0x4b2d4c['count']=_0x2b1dce;if(_0x4b1a8b[_0x38f5('0x2e')][_0x38f5('0x40')]){_0x1af8d7[_0x38f5('0x41')]=[{'all':!![]}];}return db['UserProfileSection'][_0x38f5('0x42')](_0x1af8d7);})[_0x38f5('0x23')](function(_0x4e8013){_0x4b2d4c[_0x38f5('0x43')]=_0x4e8013;return _0x4b2d4c;})[_0x38f5('0x23')](respondWithFilteredResult(_0x12acfe,_0x1af8d7))['catch'](handleError(_0x12acfe,null));};exports['show']=function(_0x1885f3,_0x631675){var _0x36740d={'raw':![],'where':{'id':_0x1885f3[_0x38f5('0x44')]['id']}},_0x2e7cd8={};_0x2e7cd8[_0x38f5('0x33')]=_['keys'](db[_0x38f5('0x2a')]['rawAttributes']);_0x2e7cd8[_0x38f5('0x2e')]=_[_0x38f5('0x2f')](_0x1885f3['query']);_0x2e7cd8[_0x38f5('0x30')]=_[_0x38f5('0x31')](_0x2e7cd8[_0x38f5('0x33')],_0x2e7cd8[_0x38f5('0x2e')]);_0x36740d[_0x38f5('0x32')]=_[_0x38f5('0x31')](_0x2e7cd8[_0x38f5('0x33')],qs[_0x38f5('0x34')](_0x1885f3['query'][_0x38f5('0x34')]));_0x36740d['attributes']=_0x36740d[_0x38f5('0x32')]['length']?_0x36740d[_0x38f5('0x32')]:_0x2e7cd8[_0x38f5('0x33')];if(_0x1885f3[_0x38f5('0x2e')]['includeAll']){_0x36740d['include']=[{'all':!![]}];}_0x36740d=_[_0x38f5('0x3e')]({},_0x36740d,_0x1885f3[_0x38f5('0x3f')]);return db['UserProfileSection'][_0x38f5('0x45')](_0x36740d)[_0x38f5('0x23')](handleEntityNotFound(_0x631675,null))['then'](respondWithResult(_0x631675,null))[_0x38f5('0x46')](handleError(_0x631675,null));};exports['create']=function(_0x2cdbaf,_0x36603f){return db[_0x38f5('0x2a')]['create'](_0x2cdbaf['body'],{})['then'](respondWithResult(_0x36603f,0xc9))[_0x38f5('0x46')](handleError(_0x36603f,null));};exports[_0x38f5('0x47')]=function(_0x316529,_0x112dd5){if(_0x316529[_0x38f5('0x48')]['id']){delete _0x316529['body']['id'];}return db['UserProfileSection']['find']({'where':{'id':_0x316529[_0x38f5('0x44')]['id']}})['then'](handleEntityNotFound(_0x112dd5,null))[_0x38f5('0x23')](saveUpdates(_0x316529[_0x38f5('0x48')],null))[_0x38f5('0x23')](respondWithResult(_0x112dd5,null))[_0x38f5('0x46')](handleError(_0x112dd5,null));};exports[_0x38f5('0x24')]=function(_0x37f347,_0x4fbd3f){return db['UserProfileSection'][_0x38f5('0x45')]({'where':{'id':_0x37f347['params']['id']}})[_0x38f5('0x23')](handleEntityNotFound(_0x4fbd3f,null))['then'](removeEntity(_0x4fbd3f,null))[_0x38f5('0x46')](handleError(_0x4fbd3f,null));};exports[_0x38f5('0x49')]=function(_0x5853e1,_0x1fe565){return db[_0x38f5('0x2a')]['describe']()[_0x38f5('0x23')](respondWithResult(_0x1fe565,null))[_0x38f5('0x46')](handleError(_0x1fe565,null));};
\ No newline at end of file
index 16862bf..6db5a52 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb745=['compositeIndex','lodash','util','../../config/logger','api','moment','bluebird','rimraf','./userProfileSection.attributes','exports','UserProfileSection'];(function(_0x6f114,_0x2ac0f9){var _0x40546b=function(_0x3902ac){while(--_0x3902ac){_0x6f114['push'](_0x6f114['shift']());}};_0x40546b(++_0x2ac0f9);}(_0xb745,0x198));var _0x5b74=function(_0x5e93f3,_0x57e9c3){_0x5e93f3=_0x5e93f3-0x0;var _0x183e24=_0xb745[_0x5e93f3];return _0x183e24;};'use strict';var _=require(_0x5b74('0x0'));var util=require(_0x5b74('0x1'));var logger=require(_0x5b74('0x2'))(_0x5b74('0x3'));var moment=require(_0x5b74('0x4'));var BPromise=require(_0x5b74('0x5'));var rp=require('request-promise');var fs=require('fs');var path=require('path');var rimraf=require(_0x5b74('0x6'));var config=require('../../config/environment');var attributes=require(_0x5b74('0x7'));module[_0x5b74('0x8')]=function(_0x4680b8,_0x5356ea){return _0x4680b8['define'](_0x5b74('0x9'),attributes,{'tableName':'user_profile_has_sections','paranoid':![],'indexes':[{'name':_0x5b74('0xa'),'fields':['sectionId','userProfileId']}],'timestamps':!![]});};
\ No newline at end of file
+var _0x677b=['util','../../config/logger','moment','request-promise','../../config/environment','./userProfileSection.attributes','exports','UserProfileSection','user_profile_has_sections','compositeIndex','sectionId','lodash'];(function(_0x3343c6,_0x3947f1){var _0x38e8e7=function(_0x56a412){while(--_0x56a412){_0x3343c6['push'](_0x3343c6['shift']());}};_0x38e8e7(++_0x3947f1);}(_0x677b,0x1d3));var _0xb677=function(_0x1e3c16,_0x372caa){_0x1e3c16=_0x1e3c16-0x0;var _0x47a0c9=_0x677b[_0x1e3c16];return _0x47a0c9;};'use strict';var _=require(_0xb677('0x0'));var util=require(_0xb677('0x1'));var logger=require(_0xb677('0x2'))('api');var moment=require(_0xb677('0x3'));var BPromise=require('bluebird');var rp=require(_0xb677('0x4'));var fs=require('fs');var path=require('path');var rimraf=require('rimraf');var config=require(_0xb677('0x5'));var attributes=require(_0xb677('0x6'));module[_0xb677('0x7')]=function(_0x4679c5,_0x4d251c){return _0x4679c5['define'](_0xb677('0x8'),attributes,{'tableName':_0xb677('0x9'),'paranoid':![],'indexes':[{'name':_0xb677('0xa'),'fields':[_0xb677('0xb'),'userProfileId']}],'timestamps':!![]});};
\ No newline at end of file
index 67ced70..2a3eb73 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9206=['randomstring','ioredis','../../config/logger','rpc','client','then','info','UserProfileSection,\x20%s,\x20%s','request\x20sent','debug','UserProfileSection,\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);}(_0x9206,0x176));var _0x6920=function(_0x2738a4,_0x5cbd70){_0x2738a4=_0x2738a4-0x0;var _0x24ddf1=_0x9206[_0x2738a4];return _0x24ddf1;};'use strict';var _=require(_0x6920('0x0'));var util=require(_0x6920('0x1'));var moment=require(_0x6920('0x2'));var BPromise=require(_0x6920('0x3'));var rs=require(_0x6920('0x4'));var fs=require('fs');var Redis=require(_0x6920('0x5'));var db=require('../../mysqldb')['db'];var utils=require('../../config/utils');var logger=require(_0x6920('0x6'))(_0x6920('0x7'));var config=require('../../config/environment');var jayson=require('jayson/promise');var client=jayson[_0x6920('0x8')]['http']({'port':0x232a});function respondWithRpcPromise(_0x21fb21,_0x31966d,_0x2aad51){return new BPromise(function(_0xef5d38,_0x56bb75){return client['request'](_0x21fb21,_0x2aad51)[_0x6920('0x9')](function(_0xc578c6){logger[_0x6920('0xa')](_0x6920('0xb'),_0x31966d,_0x6920('0xc'));logger[_0x6920('0xd')](_0x6920('0xe'),_0x31966d,_0x6920('0xc'),JSON[_0x6920('0xf')](_0xc578c6));if(_0xc578c6[_0x6920('0x10')]){if(_0xc578c6[_0x6920('0x10')][_0x6920('0x11')]===0x1f4){logger[_0x6920('0x10')]('UserProfileSection,\x20%s,\x20%s',_0x31966d,_0xc578c6['error'][_0x6920('0x12')]);return _0x56bb75(_0xc578c6[_0x6920('0x10')]['message']);}logger[_0x6920('0x10')](_0x6920('0xb'),_0x31966d,_0xc578c6[_0x6920('0x10')][_0x6920('0x12')]);return _0xef5d38(_0xc578c6[_0x6920('0x10')]['message']);}else{logger[_0x6920('0xa')](_0x6920('0xb'),_0x31966d,_0x6920('0xc'));_0xef5d38(_0xc578c6[_0x6920('0x13')][_0x6920('0x12')]);}})[_0x6920('0x14')](function(_0x3452a4){logger[_0x6920('0x10')](_0x6920('0xb'),_0x31966d,_0x3452a4);_0x56bb75(_0x3452a4);});});}
\ No newline at end of file
+var _0xe5e0=['jayson/promise','client','request','then','request\x20sent','debug','stringify','error','code','UserProfileSection,\x20%s,\x20%s','message','info','result','catch','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','../../config/environment'];(function(_0x371485,_0x589744){var _0x3f6b22=function(_0x5dbb2e){while(--_0x5dbb2e){_0x371485['push'](_0x371485['shift']());}};_0x3f6b22(++_0x589744);}(_0xe5e0,0x1be));var _0x0e5e=function(_0x4c21ac,_0x535a0a){_0x4c21ac=_0x4c21ac-0x0;var _0x86ee6f=_0xe5e0[_0x4c21ac];return _0x86ee6f;};'use strict';var _=require(_0x0e5e('0x0'));var util=require(_0x0e5e('0x1'));var moment=require(_0x0e5e('0x2'));var BPromise=require(_0x0e5e('0x3'));var rs=require(_0x0e5e('0x4'));var fs=require('fs');var Redis=require(_0x0e5e('0x5'));var db=require(_0x0e5e('0x6'))['db'];var utils=require(_0x0e5e('0x7'));var logger=require(_0x0e5e('0x8'))('rpc');var config=require(_0x0e5e('0x9'));var jayson=require(_0x0e5e('0xa'));var client=jayson[_0x0e5e('0xb')]['http']({'port':0x232a});function respondWithRpcPromise(_0x4b9800,_0x437362,_0x827738){return new BPromise(function(_0x4093cc,_0x6eba1c){return client[_0x0e5e('0xc')](_0x4b9800,_0x827738)[_0x0e5e('0xd')](function(_0x4b8feb){logger['info']('UserProfileSection,\x20%s,\x20%s',_0x437362,_0x0e5e('0xe'));logger[_0x0e5e('0xf')]('UserProfileSection,\x20%s,\x20%s,\x20%s',_0x437362,'request\x20sent',JSON[_0x0e5e('0x10')](_0x4b8feb));if(_0x4b8feb[_0x0e5e('0x11')]){if(_0x4b8feb[_0x0e5e('0x11')][_0x0e5e('0x12')]===0x1f4){logger['error'](_0x0e5e('0x13'),_0x437362,_0x4b8feb[_0x0e5e('0x11')]['message']);return _0x6eba1c(_0x4b8feb[_0x0e5e('0x11')][_0x0e5e('0x14')]);}logger[_0x0e5e('0x11')]('UserProfileSection,\x20%s,\x20%s',_0x437362,_0x4b8feb[_0x0e5e('0x11')][_0x0e5e('0x14')]);return _0x4093cc(_0x4b8feb[_0x0e5e('0x11')][_0x0e5e('0x14')]);}else{logger[_0x0e5e('0x15')](_0x0e5e('0x13'),_0x437362,'request\x20sent');_0x4093cc(_0x4b8feb[_0x0e5e('0x16')][_0x0e5e('0x14')]);}})[_0x0e5e('0x17')](function(_0x245920){logger[_0x0e5e('0x11')]('UserProfileSection,\x20%s,\x20%s',_0x437362,_0x245920);_0x6eba1c(_0x245920);});});}
\ No newline at end of file
index a057271..d4a43db 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(_0x34d520,_0x195f31){var _0x47736d=function(_0xe69d76){while(--_0xe69d76){_0x34d520['push'](_0x34d520['shift']());}};_0x47736d(++_0x195f31);}(_0x70e0,0x17b));var _0x070e=function(_0xc4a247,_0x1be9d9){_0xc4a247=_0xc4a247-0x0;var _0x23b904=_0x70e0[_0xc4a247];return _0x23b904;};'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 _0xd8b0=['Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','multer','util'];(function(_0x42fbdd,_0xbb21a3){var _0x525b95=function(_0x330481){while(--_0x330481){_0x42fbdd['push'](_0x42fbdd['shift']());}};_0x525b95(++_0xbb21a3);}(_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 d49b39a..30dfa8c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x49d4=['INTEGER','sequelize','exports'];(function(_0x43a69b,_0x55babd){var _0x4f3ba5=function(_0x4e770d){while(--_0x4e770d){_0x43a69b['push'](_0x43a69b['shift']());}};_0x4f3ba5(++_0x55babd);}(_0x49d4,0x6d));var _0x449d=function(_0x3f8a0c,_0x5050d3){_0x3f8a0c=_0x3f8a0c-0x0;var _0x261a8c=_0x49d4[_0x3f8a0c];return _0x261a8c;};'use strict';var Sequelize=require(_0x449d('0x0'));module[_0x449d('0x1')]={'penalty':{'type':Sequelize[_0x449d('0x2')],'defaultValue':0x0}};
\ No newline at end of file
+var _0xb4ce=['INTEGER','exports'];(function(_0x5ce76c,_0x5a0f9f){var _0x5c2d0e=function(_0x121f90){while(--_0x121f90){_0x5ce76c['push'](_0x5ce76c['shift']());}};_0x5c2d0e(++_0x5a0f9f);}(_0xb4ce,0x103));var _0xeb4c=function(_0x140cf5,_0x54b26e){_0x140cf5=_0x140cf5-0x0;var _0x3f25f7=_0xb4ce[_0x140cf5];return _0x3f25f7;};'use strict';var Sequelize=require('sequelize');module[_0xeb4c('0x0')]={'penalty':{'type':Sequelize[_0xeb4c('0x1')],'defaultValue':0x0}};
\ No newline at end of file
index a258089..e4840a7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xadb5=['bluebird','path','rimraf','../../config/environment','exports','define','UserSmsQueue','user_has_sms_queues','util','api','moment'];(function(_0x166926,_0xb1aa5e){var _0x52b0b0=function(_0x40dd2c){while(--_0x40dd2c){_0x166926['push'](_0x166926['shift']());}};_0x52b0b0(++_0xb1aa5e);}(_0xadb5,0xad));var _0x5adb=function(_0x1c87a9,_0x12e266){_0x1c87a9=_0x1c87a9-0x0;var _0x382281=_0xadb5[_0x1c87a9];return _0x382281;};'use strict';var _=require('lodash');var util=require(_0x5adb('0x0'));var logger=require('../../config/logger')(_0x5adb('0x1'));var moment=require(_0x5adb('0x2'));var BPromise=require(_0x5adb('0x3'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x5adb('0x4'));var rimraf=require(_0x5adb('0x5'));var config=require(_0x5adb('0x6'));var attributes=require('./userSmsQueue.attributes');module[_0x5adb('0x7')]=function(_0x168d89,_0x3e2555){return _0x168d89[_0x5adb('0x8')](_0x5adb('0x9'),attributes,{'tableName':_0x5adb('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x82c4=['UserSmsQueue','user_has_sms_queues','lodash','util','../../config/logger','api','moment','bluebird','request-promise','rimraf','./userSmsQueue.attributes','define'];(function(_0x49052b,_0x3ba709){var _0x48c045=function(_0x41ac38){while(--_0x41ac38){_0x49052b['push'](_0x49052b['shift']());}};_0x48c045(++_0x3ba709);}(_0x82c4,0x1ca));var _0x482c=function(_0x4bf497,_0x30f242){_0x4bf497=_0x4bf497-0x0;var _0xb5f818=_0x82c4[_0x4bf497];return _0xb5f818;};'use strict';var _=require(_0x482c('0x0'));var util=require(_0x482c('0x1'));var logger=require(_0x482c('0x2'))(_0x482c('0x3'));var moment=require(_0x482c('0x4'));var BPromise=require(_0x482c('0x5'));var rp=require(_0x482c('0x6'));var fs=require('fs');var path=require('path');var rimraf=require(_0x482c('0x7'));var config=require('../../config/environment');var attributes=require(_0x482c('0x8'));module['exports']=function(_0x477cf4,_0x5d7c76){return _0x477cf4[_0x482c('0x9')](_0x482c('0xa'),attributes,{'tableName':_0x482c('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 8c00071..0e322c8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7025=['request','then','UserSmsQueue,\x20%s,\x20%s','request\x20sent','UserSmsQueue,\x20%s,\x20%s,\x20%s','stringify','code','error','message','info','result','catch','lodash','util','moment','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http'];(function(_0x4c16d2,_0x203d43){var _0x20fd37=function(_0x25b54e){while(--_0x25b54e){_0x4c16d2['push'](_0x4c16d2['shift']());}};_0x20fd37(++_0x203d43);}(_0x7025,0xa2));var _0x5702=function(_0x5f4153,_0x17d951){_0x5f4153=_0x5f4153-0x0;var _0x329bce=_0x7025[_0x5f4153];return _0x329bce;};'use strict';var _=require(_0x5702('0x0'));var util=require(_0x5702('0x1'));var moment=require(_0x5702('0x2'));var BPromise=require('bluebird');var rs=require(_0x5702('0x3'));var fs=require('fs');var Redis=require(_0x5702('0x4'));var db=require(_0x5702('0x5'))['db'];var utils=require(_0x5702('0x6'));var logger=require(_0x5702('0x7'))(_0x5702('0x8'));var config=require(_0x5702('0x9'));var jayson=require(_0x5702('0xa'));var client=jayson[_0x5702('0xb')][_0x5702('0xc')]({'port':0x232a});function respondWithRpcPromise(_0x26117e,_0x3d5f5a,_0x158cd2){return new BPromise(function(_0x4bb5fb,_0x3ce374){return client[_0x5702('0xd')](_0x26117e,_0x158cd2)[_0x5702('0xe')](function(_0x68fbb7){logger['info'](_0x5702('0xf'),_0x3d5f5a,_0x5702('0x10'));logger['debug'](_0x5702('0x11'),_0x3d5f5a,_0x5702('0x10'),JSON[_0x5702('0x12')](_0x68fbb7));if(_0x68fbb7['error']){if(_0x68fbb7['error'][_0x5702('0x13')]===0x1f4){logger['error'](_0x5702('0xf'),_0x3d5f5a,_0x68fbb7[_0x5702('0x14')][_0x5702('0x15')]);return _0x3ce374(_0x68fbb7[_0x5702('0x14')]['message']);}logger['error'](_0x5702('0xf'),_0x3d5f5a,_0x68fbb7[_0x5702('0x14')][_0x5702('0x15')]);return _0x4bb5fb(_0x68fbb7['error'][_0x5702('0x15')]);}else{logger[_0x5702('0x16')](_0x5702('0xf'),_0x3d5f5a,'request\x20sent');_0x4bb5fb(_0x68fbb7[_0x5702('0x17')][_0x5702('0x15')]);}})[_0x5702('0x18')](function(_0x152e7f){logger['error'](_0x5702('0xf'),_0x3d5f5a,_0x152e7f);_0x3ce374(_0x152e7f);});});}
\ No newline at end of file
+var _0x30e8=['info','UserSmsQueue,\x20%s,\x20%s,\x20%s','stringify','code','error','UserSmsQueue,\x20%s,\x20%s','message','result','catch','util','moment','bluebird','../../mysqldb','../../config/logger','rpc','jayson/promise','client','http','request','then'];(function(_0x29f9f6,_0x3b3f8c){var _0x5e33bd=function(_0x3bb041){while(--_0x3bb041){_0x29f9f6['push'](_0x29f9f6['shift']());}};_0x5e33bd(++_0x3b3f8c);}(_0x30e8,0x135));var _0x830e=function(_0x26e325,_0x17f357){_0x26e325=_0x26e325-0x0;var _0x11cd87=_0x30e8[_0x26e325];return _0x11cd87;};'use strict';var _=require('lodash');var util=require(_0x830e('0x0'));var moment=require(_0x830e('0x1'));var BPromise=require(_0x830e('0x2'));var rs=require('randomstring');var fs=require('fs');var Redis=require('ioredis');var db=require(_0x830e('0x3'))['db'];var utils=require('../../config/utils');var logger=require(_0x830e('0x4'))(_0x830e('0x5'));var config=require('../../config/environment');var jayson=require(_0x830e('0x6'));var client=jayson[_0x830e('0x7')][_0x830e('0x8')]({'port':0x232a});function respondWithRpcPromise(_0x39030,_0x45784c,_0x2c17a1){return new BPromise(function(_0x39379c,_0x151c1c){return client[_0x830e('0x9')](_0x39030,_0x2c17a1)[_0x830e('0xa')](function(_0x31c559){logger[_0x830e('0xb')]('UserSmsQueue,\x20%s,\x20%s',_0x45784c,'request\x20sent');logger['debug'](_0x830e('0xc'),_0x45784c,'request\x20sent',JSON[_0x830e('0xd')](_0x31c559));if(_0x31c559['error']){if(_0x31c559['error'][_0x830e('0xe')]===0x1f4){logger[_0x830e('0xf')](_0x830e('0x10'),_0x45784c,_0x31c559[_0x830e('0xf')][_0x830e('0x11')]);return _0x151c1c(_0x31c559[_0x830e('0xf')]['message']);}logger[_0x830e('0xf')](_0x830e('0x10'),_0x45784c,_0x31c559[_0x830e('0xf')][_0x830e('0x11')]);return _0x39379c(_0x31c559['error'][_0x830e('0x11')]);}else{logger['info']('UserSmsQueue,\x20%s,\x20%s',_0x45784c,'request\x20sent');_0x39379c(_0x31c559[_0x830e('0x12')][_0x830e('0x11')]);}})[_0x830e('0x13')](function(_0x5f4a9d){logger[_0x830e('0xf')](_0x830e('0x10'),_0x45784c,_0x5f4a9d);_0x151c1c(_0x5f4a9d);});});}
\ No newline at end of file
diff --git a/server/api/userVoicePrefix/userVoicePrefix.attributes.js b/server/api/userVoicePrefix/userVoicePrefix.attributes.js
deleted file mode 100644 (file)
index 8d94a00..0000000
+++ /dev/null
@@ -1,18 +0,0 @@
-// *************************************************************************
-// *                                                                       *
-// * 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 _0x8525=['INTEGER','sequelize','exports'];(function(_0x2bd0d5,_0x4ace31){var _0x3a963e=function(_0x254974){while(--_0x254974){_0x2bd0d5['push'](_0x2bd0d5['shift']());}};_0x3a963e(++_0x4ace31);}(_0x8525,0x1c3));var _0x5852=function(_0x57b54c,_0x54ce0d){_0x57b54c=_0x57b54c-0x0;var _0x59cc19=_0x8525[_0x57b54c];return _0x59cc19;};'use strict';var Sequelize=require(_0x5852('0x0'));module[_0x5852('0x1')]={'UserId':{'type':Sequelize[_0x5852('0x2')]},'VoicePrefixId':{'type':Sequelize[_0x5852('0x2')]}};
\ No newline at end of file
diff --git a/server/api/userVoicePrefix/userVoicePrefix.model.js b/server/api/userVoicePrefix/userVoicePrefix.model.js
deleted file mode 100644 (file)
index efb9f09..0000000
+++ /dev/null
@@ -1,18 +0,0 @@
-// *************************************************************************
-// *                                                                       *
-// * 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 _0xa9e0=['../../config/environment','./userVoicePrefix.attributes','exports','define','UserVoicePrefix','lodash','util','../../config/logger','bluebird','path','rimraf'];(function(_0x349f68,_0x186bec){var _0x467ff6=function(_0x58c8a9){while(--_0x58c8a9){_0x349f68['push'](_0x349f68['shift']());}};_0x467ff6(++_0x186bec);}(_0xa9e0,0x123));var _0x0a9e=function(_0x12d033,_0x25fa2f){_0x12d033=_0x12d033-0x0;var _0x3b4e80=_0xa9e0[_0x12d033];return _0x3b4e80;};'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 0fa9426..1291e6b 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(_0x55bf8d,_0x35b2b8){var _0xe1ebc9=function(_0x328d82){while(--_0x328d82){_0x55bf8d['push'](_0x55bf8d['shift']());}};_0xe1ebc9(++_0x35b2b8);}(_0xe706,0xa3));var _0x6e70=function(_0x13992d,_0x3029ea){_0x13992d=_0x13992d-0x0;var _0x3d15bf=_0xe706[_0x13992d];return _0x3d15bf;};'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 _0xd8b0=['Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','multer','util'];(function(_0x1716e5,_0x55b565){var _0x282173=function(_0x441fb7){while(--_0x441fb7){_0x1716e5['push'](_0x1716e5['shift']());}};_0x282173(++_0x55b565);}(_0xd8b0,0xad));var _0x0d8b=function(_0xa464c9,_0x7c86d8){_0xa464c9=_0xa464c9-0x0;var _0x3d73c4=_0xd8b0[_0xa464c9];return _0x3d73c4;};'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 8972e94..89cf2d3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa9be=['INTEGER'];(function(_0x356c98,_0x577053){var _0x555ec2=function(_0x48f3f9){while(--_0x48f3f9){_0x356c98['push'](_0x356c98['shift']());}};_0x555ec2(++_0x577053);}(_0xa9be,0x1b2));var _0xea9b=function(_0x5b4311,_0xf1045e){_0x5b4311=_0x5b4311-0x0;var _0x3a7fe8=_0xa9be[_0x5b4311];return _0x3a7fe8;};'use strict';var Sequelize=require('sequelize');module['exports']={'penalty':{'type':Sequelize[_0xea9b('0x0')],'defaultValue':0x0}};
\ No newline at end of file
+var _0x1b39=['INTEGER','sequelize','exports'];(function(_0x255840,_0x411b6e){var _0x40dad5=function(_0x258d8d){while(--_0x258d8d){_0x255840['push'](_0x255840['shift']());}};_0x40dad5(++_0x411b6e);}(_0x1b39,0x100));var _0x91b3=function(_0x4a9fb1,_0x273043){_0x4a9fb1=_0x4a9fb1-0x0;var _0x348672=_0x1b39[_0x4a9fb1];return _0x348672;};'use strict';var Sequelize=require(_0x91b3('0x0'));module[_0x91b3('0x1')]={'penalty':{'type':Sequelize[_0x91b3('0x2')],'defaultValue':0x0}};
\ No newline at end of file
index 0890836..3d7b5f9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd8cc=['user_has_voice_queues','lodash','util','moment','bluebird','request-promise','path','../../config/environment','./userVoiceQueue.attributes','UserVoiceQueue'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0xd8cc,0xc9));var _0xcd8c=function(_0x107f10,_0x5529f2){_0x107f10=_0x107f10-0x0;var _0x811cab=_0xd8cc[_0x107f10];return _0x811cab;};'use strict';var _=require(_0xcd8c('0x0'));var util=require(_0xcd8c('0x1'));var logger=require('../../config/logger')('api');var moment=require(_0xcd8c('0x2'));var BPromise=require(_0xcd8c('0x3'));var rp=require(_0xcd8c('0x4'));var fs=require('fs');var path=require(_0xcd8c('0x5'));var rimraf=require('rimraf');var config=require(_0xcd8c('0x6'));var attributes=require(_0xcd8c('0x7'));module['exports']=function(_0x5776fc,_0x233d52){return _0x5776fc['define'](_0xcd8c('0x8'),attributes,{'tableName':_0xcd8c('0x9'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x9041=['../../config/environment','./userVoiceQueue.attributes','exports','define','user_has_voice_queues','lodash','../../config/logger','api','path','rimraf'];(function(_0x1f83a5,_0x59843f){var _0x45edf0=function(_0x431e25){while(--_0x431e25){_0x1f83a5['push'](_0x1f83a5['shift']());}};_0x45edf0(++_0x59843f);}(_0x9041,0x1a9));var _0x1904=function(_0x32f3f9,_0x42a1bc){_0x32f3f9=_0x32f3f9-0x0;var _0x40fd0c=_0x9041[_0x32f3f9];return _0x40fd0c;};'use strict';var _=require(_0x1904('0x0'));var util=require('util');var logger=require(_0x1904('0x1'))(_0x1904('0x2'));var moment=require('moment');var BPromise=require('bluebird');var rp=require('request-promise');var fs=require('fs');var path=require(_0x1904('0x3'));var rimraf=require(_0x1904('0x4'));var config=require(_0x1904('0x5'));var attributes=require(_0x1904('0x6'));module[_0x1904('0x7')]=function(_0x1acb75,_0x3fe1cc){return _0x1acb75[_0x1904('0x8')]('UserVoiceQueue',attributes,{'tableName':_0x1904('0x9'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 386ebaa..35a9d8a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1ef2=['then','info','debug','request\x20sent','stringify','error','code','message','UserVoiceQueue,\x20%s,\x20%s','result','catch','lodash','util','moment','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','http'];(function(_0x4d062a,_0x1436be){var _0x2bcf7b=function(_0x1002c7){while(--_0x1002c7){_0x4d062a['push'](_0x4d062a['shift']());}};_0x2bcf7b(++_0x1436be);}(_0x1ef2,0x19b));var _0x21ef=function(_0x29ca80,_0x5530ca){_0x29ca80=_0x29ca80-0x0;var _0x5b54db=_0x1ef2[_0x29ca80];return _0x5b54db;};'use strict';var _=require(_0x21ef('0x0'));var util=require(_0x21ef('0x1'));var moment=require(_0x21ef('0x2'));var BPromise=require('bluebird');var rs=require('randomstring');var fs=require('fs');var Redis=require('ioredis');var db=require(_0x21ef('0x3'))['db'];var utils=require(_0x21ef('0x4'));var logger=require(_0x21ef('0x5'))(_0x21ef('0x6'));var config=require(_0x21ef('0x7'));var jayson=require('jayson/promise');var client=jayson['client'][_0x21ef('0x8')]({'port':0x232a});function respondWithRpcPromise(_0x48187e,_0x11fc83,_0x1f7a40){return new BPromise(function(_0xf3b50e,_0xe9b6bc){return client['request'](_0x48187e,_0x1f7a40)[_0x21ef('0x9')](function(_0x3926b4){logger[_0x21ef('0xa')]('UserVoiceQueue,\x20%s,\x20%s',_0x11fc83,'request\x20sent');logger[_0x21ef('0xb')]('UserVoiceQueue,\x20%s,\x20%s,\x20%s',_0x11fc83,_0x21ef('0xc'),JSON[_0x21ef('0xd')](_0x3926b4));if(_0x3926b4['error']){if(_0x3926b4[_0x21ef('0xe')][_0x21ef('0xf')]===0x1f4){logger[_0x21ef('0xe')]('UserVoiceQueue,\x20%s,\x20%s',_0x11fc83,_0x3926b4[_0x21ef('0xe')][_0x21ef('0x10')]);return _0xe9b6bc(_0x3926b4[_0x21ef('0xe')][_0x21ef('0x10')]);}logger[_0x21ef('0xe')]('UserVoiceQueue,\x20%s,\x20%s',_0x11fc83,_0x3926b4[_0x21ef('0xe')][_0x21ef('0x10')]);return _0xf3b50e(_0x3926b4[_0x21ef('0xe')][_0x21ef('0x10')]);}else{logger[_0x21ef('0xa')](_0x21ef('0x11'),_0x11fc83,_0x21ef('0xc'));_0xf3b50e(_0x3926b4[_0x21ef('0x12')][_0x21ef('0x10')]);}})[_0x21ef('0x13')](function(_0x3842db){logger['error']('UserVoiceQueue,\x20%s,\x20%s',_0x11fc83,_0x3842db);_0xe9b6bc(_0x3842db);});});}
\ No newline at end of file
+var _0x70ec=['rpc','../../config/environment','jayson/promise','request','then','info','UserVoiceQueue,\x20%s,\x20%s','request\x20sent','debug','UserVoiceQueue,\x20%s,\x20%s,\x20%s','stringify','error','message','result','lodash','util','moment','randomstring','../../mysqldb','../../config/utils'];(function(_0x27c76e,_0xe5a06a){var _0x5cc3c0=function(_0x39a749){while(--_0x39a749){_0x27c76e['push'](_0x27c76e['shift']());}};_0x5cc3c0(++_0xe5a06a);}(_0x70ec,0x13a));var _0xc70e=function(_0x17d9e3,_0x1f969c){_0x17d9e3=_0x17d9e3-0x0;var _0x14192d=_0x70ec[_0x17d9e3];return _0x14192d;};'use strict';var _=require(_0xc70e('0x0'));var util=require(_0xc70e('0x1'));var moment=require(_0xc70e('0x2'));var BPromise=require('bluebird');var rs=require(_0xc70e('0x3'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0xc70e('0x4'))['db'];var utils=require(_0xc70e('0x5'));var logger=require('../../config/logger')(_0xc70e('0x6'));var config=require(_0xc70e('0x7'));var jayson=require(_0xc70e('0x8'));var client=jayson['client']['http']({'port':0x232a});function respondWithRpcPromise(_0x54bc39,_0x5d2c7c,_0x3300f5){return new BPromise(function(_0x1a67a4,_0x3272b3){return client[_0xc70e('0x9')](_0x54bc39,_0x3300f5)[_0xc70e('0xa')](function(_0x9e0319){logger[_0xc70e('0xb')](_0xc70e('0xc'),_0x5d2c7c,_0xc70e('0xd'));logger[_0xc70e('0xe')](_0xc70e('0xf'),_0x5d2c7c,_0xc70e('0xd'),JSON[_0xc70e('0x10')](_0x9e0319));if(_0x9e0319[_0xc70e('0x11')]){if(_0x9e0319[_0xc70e('0x11')]['code']===0x1f4){logger[_0xc70e('0x11')](_0xc70e('0xc'),_0x5d2c7c,_0x9e0319[_0xc70e('0x11')]['message']);return _0x3272b3(_0x9e0319[_0xc70e('0x11')]['message']);}logger['error']('UserVoiceQueue,\x20%s,\x20%s',_0x5d2c7c,_0x9e0319[_0xc70e('0x11')]['message']);return _0x1a67a4(_0x9e0319[_0xc70e('0x11')][_0xc70e('0x12')]);}else{logger[_0xc70e('0xb')](_0xc70e('0xc'),_0x5d2c7c,'request\x20sent');_0x1a67a4(_0x9e0319[_0xc70e('0x13')][_0xc70e('0x12')]);}})['catch'](function(_0x311b16){logger[_0xc70e('0x11')]('UserVoiceQueue,\x20%s,\x20%s',_0x5d2c7c,_0x311b16);_0x3272b3(_0x311b16);});});}
\ No newline at end of file
index f0651c5..d558686 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(_0x207a02,_0x278c56){var _0xd995c3=function(_0x24e415){while(--_0x24e415){_0x207a02['push'](_0x207a02['shift']());}};_0xd995c3(++_0x278c56);}(_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 _0x9c44=['express','Router','fs-extra','../../components/auth/service','exports','path','connect-timeout'];(function(_0xf30651,_0x964c8){var _0x5382a0=function(_0x29d618){while(--_0x29d618){_0xf30651['push'](_0xf30651['shift']());}};_0x5382a0(++_0x964c8);}(_0x9c44,0x178));var _0x49c4=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x9c44[_0x3dd15e];return _0x231fd0;};'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 c2b0e0e..41c03e0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6215=['INTEGER','sequelize','exports','Required\x20by\x20Asterisk','STRING','queue_interface'];(function(_0x36e3ed,_0x35d495){var _0xdfd304=function(_0x10caad){while(--_0x10caad){_0x36e3ed['push'](_0x36e3ed['shift']());}};_0xdfd304(++_0x35d495);}(_0x6215,0x13f));var _0x5621=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x6215[_0x3dd15e];return _0x231fd0;};'use strict';var Sequelize=require(_0x5621('0x0'));module[_0x5621('0x1')]={'uniqueid':{'type':Sequelize['INTEGER'],'primaryKey':!![],'autoIncrement':!![],'comment':_0x5621('0x2')},'membername':{'type':Sequelize[_0x5621('0x3')],'allowNull':![],'comment':_0x5621('0x2')},'UserId':{'type':Sequelize['INTEGER'],'allowNull':![]},'queue_name':{'type':Sequelize[_0x5621('0x3')],'allowNull':![],'unique':_0x5621('0x4'),'comment':_0x5621('0x2')},'VoiceQueueId':{'type':Sequelize[_0x5621('0x5')],'allowNull':![]},'interface':{'type':Sequelize[_0x5621('0x3')],'allowNull':![],'unique':_0x5621('0x4'),'comment':_0x5621('0x2')},'penalty':{'type':Sequelize[_0x5621('0x5')](0xb),'defaultValue':0x0,'comment':_0x5621('0x2')},'paused':{'type':Sequelize[_0x5621('0x5')](0xb),'defaultValue':0x0,'comment':_0x5621('0x2')}};
\ No newline at end of file
+var _0xe66a=['queue_interface','exports','INTEGER','Required\x20by\x20Asterisk','STRING'];(function(_0x5c883f,_0x38f092){var _0x4210cc=function(_0x51be71){while(--_0x51be71){_0x5c883f['push'](_0x5c883f['shift']());}};_0x4210cc(++_0x38f092);}(_0xe66a,0x11e));var _0xae66=function(_0x284359,_0x290d6e){_0x284359=_0x284359-0x0;var _0x592dc4=_0xe66a[_0x284359];return _0x592dc4;};'use strict';var Sequelize=require('sequelize');module[_0xae66('0x0')]={'uniqueid':{'type':Sequelize[_0xae66('0x1')],'primaryKey':!![],'autoIncrement':!![],'comment':_0xae66('0x2')},'membername':{'type':Sequelize[_0xae66('0x3')],'allowNull':![],'comment':_0xae66('0x2')},'UserId':{'type':Sequelize['INTEGER'],'allowNull':![]},'queue_name':{'type':Sequelize['STRING'],'allowNull':![],'unique':_0xae66('0x4'),'comment':_0xae66('0x2')},'VoiceQueueId':{'type':Sequelize[_0xae66('0x1')],'allowNull':![]},'interface':{'type':Sequelize[_0xae66('0x3')],'allowNull':![],'unique':'queue_interface','comment':_0xae66('0x2')},'penalty':{'type':Sequelize[_0xae66('0x1')](0xb),'defaultValue':0x0,'comment':_0xae66('0x2')},'paused':{'type':Sequelize['INTEGER'](0xb),'defaultValue':0x0,'comment':_0xae66('0x2')}};
\ No newline at end of file
index 42d23b0..31f52c4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb965=['UserVoiceQueueRt','setMaxListeners','save','remove','emit','events','../../mysqldb'];(function(_0x2641f9,_0x26715f){var _0x585741=function(_0x2d1462){while(--_0x2d1462){_0x2641f9['push'](_0x2641f9['shift']());}};_0x585741(++_0x26715f);}(_0xb965,0x1a2));var _0x5b96=function(_0x2d9b45,_0x21ddf0){_0x2d9b45=_0x2d9b45-0x0;var _0x13817f=_0xb965[_0x2d9b45];return _0x13817f;};'use strict';var EventEmitter=require(_0x5b96('0x0'));var UserVoiceQueueRt=require(_0x5b96('0x1'))['db'][_0x5b96('0x2')];var UserVoiceQueueRtEvents=new EventEmitter();UserVoiceQueueRtEvents[_0x5b96('0x3')](0x0);var events={'afterCreate':_0x5b96('0x4'),'afterUpdate':'update','afterDestroy':_0x5b96('0x5')};function emitEvent(_0x104a41){return function(_0x11019e,_0x501d18,_0x25beae){UserVoiceQueueRtEvents[_0x5b96('0x6')](_0x104a41+':'+_0x11019e['id'],_0x11019e);UserVoiceQueueRtEvents[_0x5b96('0x6')](_0x104a41,_0x11019e);_0x25beae(null);};}for(var e in events){if(events['hasOwnProperty'](e)){var event=events[e];UserVoiceQueueRt['hook'](e,emitEvent(event));}}module['exports']=UserVoiceQueueRtEvents;
\ No newline at end of file
+var _0x0dfd=['emit','hasOwnProperty','exports','events','UserVoiceQueueRt','setMaxListeners','update','remove'];(function(_0x44868b,_0x399444){var _0x190b30=function(_0x2885c0){while(--_0x2885c0){_0x44868b['push'](_0x44868b['shift']());}};_0x190b30(++_0x399444);}(_0x0dfd,0xd3));var _0xd0df=function(_0x2ab857,_0x5d3853){_0x2ab857=_0x2ab857-0x0;var _0x523303=_0x0dfd[_0x2ab857];return _0x523303;};'use strict';var EventEmitter=require(_0xd0df('0x0'));var UserVoiceQueueRt=require('../../mysqldb')['db'][_0xd0df('0x1')];var UserVoiceQueueRtEvents=new EventEmitter();UserVoiceQueueRtEvents[_0xd0df('0x2')](0x0);var events={'afterCreate':'save','afterUpdate':_0xd0df('0x3'),'afterDestroy':_0xd0df('0x4')};function emitEvent(_0x53e989){return function(_0x29d93c,_0x10aad3,_0x27f725){UserVoiceQueueRtEvents[_0xd0df('0x5')](_0x53e989+':'+_0x29d93c['id'],_0x29d93c);UserVoiceQueueRtEvents[_0xd0df('0x5')](_0x53e989,_0x29d93c);_0x27f725(null);};}for(var e in events){if(events[_0xd0df('0x6')](e)){var event=events[e];UserVoiceQueueRt['hook'](e,emitEvent(event));}}module[_0xd0df('0x7')]=UserVoiceQueueRtEvents;
\ No newline at end of file
index 8b90b87..514d6be 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7186=['define','UserVoiceQueueRt','util','../../config/logger','api','moment','rimraf','../../config/environment','./userVoiceQueueRt.attributes','exports'];(function(_0xc69fda,_0x367f93){var _0x721842=function(_0x521bf7){while(--_0x521bf7){_0xc69fda['push'](_0xc69fda['shift']());}};_0x721842(++_0x367f93);}(_0x7186,0x84));var _0x6718=function(_0x29fe79,_0x4a57d4){_0x29fe79=_0x29fe79-0x0;var _0x5b9700=_0x7186[_0x29fe79];return _0x5b9700;};'use strict';var _=require('lodash');var util=require(_0x6718('0x0'));var logger=require(_0x6718('0x1'))(_0x6718('0x2'));var moment=require(_0x6718('0x3'));var BPromise=require('bluebird');var rp=require('request-promise');var fs=require('fs');var path=require('path');var rimraf=require(_0x6718('0x4'));var config=require(_0x6718('0x5'));var attributes=require(_0x6718('0x6'));module[_0x6718('0x7')]=function(_0x1cdb2b,_0xabcbb8){return _0x1cdb2b[_0x6718('0x8')](_0x6718('0x9'),attributes,{'tableName':'user_has_voice_queues_rt','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x6e8e=['../../config/logger','api','moment','bluebird','request-promise','path','rimraf','../../config/environment','./userVoiceQueueRt.attributes','exports','define','UserVoiceQueueRt','util'];(function(_0x52f315,_0x116ee9){var _0x2147bc=function(_0x5509d7){while(--_0x5509d7){_0x52f315['push'](_0x52f315['shift']());}};_0x2147bc(++_0x116ee9);}(_0x6e8e,0x1b9));var _0xe6e8=function(_0x1873bf,_0x41c35f){_0x1873bf=_0x1873bf-0x0;var _0x3fdfd4=_0x6e8e[_0x1873bf];return _0x3fdfd4;};'use strict';var _=require('lodash');var util=require(_0xe6e8('0x0'));var logger=require(_0xe6e8('0x1'))(_0xe6e8('0x2'));var moment=require(_0xe6e8('0x3'));var BPromise=require(_0xe6e8('0x4'));var rp=require(_0xe6e8('0x5'));var fs=require('fs');var path=require(_0xe6e8('0x6'));var rimraf=require(_0xe6e8('0x7'));var config=require(_0xe6e8('0x8'));var attributes=require(_0xe6e8('0x9'));module[_0xe6e8('0xa')]=function(_0x4e04b0,_0x461a15){return _0x4e04b0[_0xe6e8('0xb')](_0xe6e8('0xc'),attributes,{'tableName':'user_has_voice_queues_rt','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 6322a07..b21dba5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x32da=['request\x20sent','debug','error','code','message','result','catch','GetVoiceQueueRtPauses','findAll','options','where','sequelize','COUNT','`paused`\x20=\x201,\x201,\x20null','stringify','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','../../config/environment','jayson/promise','client','http','redis','defaults','localhost','socket.io-emitter','./userVoiceQueueRt.socket','request','then','info','UserVoiceQueueRt,\x20%s,\x20%s'];(function(_0x1f754b,_0x51ab4e){var _0x11385c=function(_0x265341){while(--_0x265341){_0x1f754b['push'](_0x1f754b['shift']());}};_0x11385c(++_0x51ab4e);}(_0x32da,0xc3));var _0xa32d=function(_0x49b6e2,_0x1adbb7){_0x49b6e2=_0x49b6e2-0x0;var _0x52b882=_0x32da[_0x49b6e2];return _0x52b882;};'use strict';var _=require('lodash');var util=require(_0xa32d('0x0'));var moment=require(_0xa32d('0x1'));var BPromise=require(_0xa32d('0x2'));var rs=require(_0xa32d('0x3'));var fs=require('fs');var Redis=require(_0xa32d('0x4'));var db=require(_0xa32d('0x5'))['db'];var utils=require(_0xa32d('0x6'));var logger=require(_0xa32d('0x7'))('rpc');var config=require(_0xa32d('0x8'));var jayson=require(_0xa32d('0x9'));var client=jayson[_0xa32d('0xa')][_0xa32d('0xb')]({'port':0x232a});config[_0xa32d('0xc')]=_[_0xa32d('0xd')](config[_0xa32d('0xc')],{'host':_0xa32d('0xe'),'port':0x18eb});var socket=require(_0xa32d('0xf'))(new Redis(config[_0xa32d('0xc')]));require(_0xa32d('0x10'))['register'](socket);function respondWithRpcPromise(_0x3cf16b,_0x498df9,_0x1afd36){return new BPromise(function(_0x862e5c,_0x578255){return client[_0xa32d('0x11')](_0x3cf16b,_0x1afd36)[_0xa32d('0x12')](function(_0x17a9f2){logger[_0xa32d('0x13')](_0xa32d('0x14'),_0x498df9,_0xa32d('0x15'));logger[_0xa32d('0x16')]('UserVoiceQueueRt,\x20%s,\x20%s,\x20%s',_0x498df9,_0xa32d('0x15'),JSON['stringify'](_0x17a9f2));if(_0x17a9f2[_0xa32d('0x17')]){if(_0x17a9f2[_0xa32d('0x17')][_0xa32d('0x18')]===0x1f4){logger['error']('UserVoiceQueueRt,\x20%s,\x20%s',_0x498df9,_0x17a9f2['error'][_0xa32d('0x19')]);return _0x578255(_0x17a9f2[_0xa32d('0x17')][_0xa32d('0x19')]);}logger[_0xa32d('0x17')]('UserVoiceQueueRt,\x20%s,\x20%s',_0x498df9,_0x17a9f2[_0xa32d('0x17')][_0xa32d('0x19')]);return _0x862e5c(_0x17a9f2[_0xa32d('0x17')][_0xa32d('0x19')]);}else{logger[_0xa32d('0x13')]('UserVoiceQueueRt,\x20%s,\x20%s',_0x498df9,_0xa32d('0x15'));_0x862e5c(_0x17a9f2[_0xa32d('0x1a')][_0xa32d('0x19')]);}})[_0xa32d('0x1b')](function(_0x2d8c55){logger[_0xa32d('0x17')](_0xa32d('0x14'),_0x498df9,_0x2d8c55);_0x578255(_0x2d8c55);});});}exports[_0xa32d('0x1c')]=function(_0x3b8ad5){var _0x5e6b28=this;return new Promise(function(_0x311b68,_0x33bb85){return db['UserVoiceQueueRt'][_0xa32d('0x1d')]({'raw':_0x3b8ad5[_0xa32d('0x1e')]?_0x3b8ad5[_0xa32d('0x1e')]['raw']===undefined?!![]:![]:!![],'where':_0x3b8ad5[_0xa32d('0x1e')]?_0x3b8ad5['options'][_0xa32d('0x1f')]||null:null,'attributes':[[db[_0xa32d('0x20')]['fn'](_0xa32d('0x21'),db[_0xa32d('0x20')]['fn']('IF',db[_0xa32d('0x20')]['literal'](_0xa32d('0x22')))),'outboundQueuePauses']]})[_0xa32d('0x12')](function(_0x47adfc){logger[_0xa32d('0x13')](_0xa32d('0x1c'),_0x3b8ad5);logger[_0xa32d('0x16')](_0xa32d('0x1c'),_0x3b8ad5,JSON[_0xa32d('0x23')](_0x47adfc));_0x311b68(_0x47adfc);})[_0xa32d('0x1b')](function(_0x586c35){logger[_0xa32d('0x17')](_0xa32d('0x1c'),_0x586c35[_0xa32d('0x19')],_0x3b8ad5);_0x33bb85(_0x5e6b28[_0xa32d('0x17')](0x1f4,_0x586c35['message']));});});};
\ No newline at end of file
+var _0x87f9=['options','raw','where','sequelize','literal','`paused`\x20=\x201,\x201,\x20null','outboundQueuePauses','then','util','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','http','defaults','redis','localhost','socket.io-emitter','./userVoiceQueueRt.socket','register','request','info','UserVoiceQueueRt,\x20%s,\x20%s','request\x20sent','debug','stringify','error','code','message','result','catch','GetVoiceQueueRtPauses','findAll'];(function(_0x3d1082,_0x5b6160){var _0x1dc252=function(_0x490738){while(--_0x490738){_0x3d1082['push'](_0x3d1082['shift']());}};_0x1dc252(++_0x5b6160);}(_0x87f9,0x194));var _0x987f=function(_0x55f8b4,_0x43f30d){_0x55f8b4=_0x55f8b4-0x0;var _0x2475f9=_0x87f9[_0x55f8b4];return _0x2475f9;};'use strict';var _=require('lodash');var util=require(_0x987f('0x0'));var moment=require('moment');var BPromise=require(_0x987f('0x1'));var rs=require(_0x987f('0x2'));var fs=require('fs');var Redis=require(_0x987f('0x3'));var db=require(_0x987f('0x4'))['db'];var utils=require(_0x987f('0x5'));var logger=require(_0x987f('0x6'))(_0x987f('0x7'));var config=require('../../config/environment');var jayson=require('jayson/promise');var client=jayson['client'][_0x987f('0x8')]({'port':0x232a});config['redis']=_[_0x987f('0x9')](config[_0x987f('0xa')],{'host':_0x987f('0xb'),'port':0x18eb});var socket=require(_0x987f('0xc'))(new Redis(config[_0x987f('0xa')]));require(_0x987f('0xd'))[_0x987f('0xe')](socket);function respondWithRpcPromise(_0x3ef9b4,_0x3eaa6c,_0x39acfb){return new BPromise(function(_0x1316cb,_0x18f9fc){return client[_0x987f('0xf')](_0x3ef9b4,_0x39acfb)['then'](function(_0x165b66){logger[_0x987f('0x10')](_0x987f('0x11'),_0x3eaa6c,_0x987f('0x12'));logger[_0x987f('0x13')]('UserVoiceQueueRt,\x20%s,\x20%s,\x20%s',_0x3eaa6c,_0x987f('0x12'),JSON[_0x987f('0x14')](_0x165b66));if(_0x165b66[_0x987f('0x15')]){if(_0x165b66[_0x987f('0x15')][_0x987f('0x16')]===0x1f4){logger[_0x987f('0x15')](_0x987f('0x11'),_0x3eaa6c,_0x165b66[_0x987f('0x15')][_0x987f('0x17')]);return _0x18f9fc(_0x165b66[_0x987f('0x15')][_0x987f('0x17')]);}logger[_0x987f('0x15')]('UserVoiceQueueRt,\x20%s,\x20%s',_0x3eaa6c,_0x165b66['error'][_0x987f('0x17')]);return _0x1316cb(_0x165b66[_0x987f('0x15')]['message']);}else{logger['info'](_0x987f('0x11'),_0x3eaa6c,_0x987f('0x12'));_0x1316cb(_0x165b66[_0x987f('0x18')][_0x987f('0x17')]);}})[_0x987f('0x19')](function(_0xc4e1ec){logger['error'](_0x987f('0x11'),_0x3eaa6c,_0xc4e1ec);_0x18f9fc(_0xc4e1ec);});});}exports[_0x987f('0x1a')]=function(_0x2028ca){var _0x38ea3c=this;return new Promise(function(_0x795925,_0xbf39fd){return db['UserVoiceQueueRt'][_0x987f('0x1b')]({'raw':_0x2028ca[_0x987f('0x1c')]?_0x2028ca[_0x987f('0x1c')][_0x987f('0x1d')]===undefined?!![]:![]:!![],'where':_0x2028ca[_0x987f('0x1c')]?_0x2028ca[_0x987f('0x1c')][_0x987f('0x1e')]||null:null,'attributes':[[db['sequelize']['fn']('COUNT',db[_0x987f('0x1f')]['fn']('IF',db['sequelize'][_0x987f('0x20')](_0x987f('0x21')))),_0x987f('0x22')]]})[_0x987f('0x23')](function(_0x13dec2){logger[_0x987f('0x10')]('GetVoiceQueueRtPauses',_0x2028ca);logger[_0x987f('0x13')](_0x987f('0x1a'),_0x2028ca,JSON[_0x987f('0x14')](_0x13dec2));_0x795925(_0x13dec2);})[_0x987f('0x19')](function(_0x390e2f){logger[_0x987f('0x15')](_0x987f('0x1a'),_0x390e2f[_0x987f('0x17')],_0x2028ca);_0xbf39fd(_0x38ea3c[_0x987f('0x15')](0x1f4,_0x390e2f[_0x987f('0x17')]));});});};
\ No newline at end of file
index c58dca3..0043d58 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1cb9=['update','emit','removeListener','register','length','./userVoiceQueueRt.events','remove'];(function(_0x13ce0c,_0x3f2a0d){var _0x4388fb=function(_0x27db4b){while(--_0x27db4b){_0x13ce0c['push'](_0x13ce0c['shift']());}};_0x4388fb(++_0x3f2a0d);}(_0x1cb9,0x14e));var _0x91cb=function(_0xed5c27,_0x189be7){_0xed5c27=_0xed5c27-0x0;var _0x6bf225=_0x1cb9[_0xed5c27];return _0x6bf225;};'use strict';var UserVoiceQueueRtEvents=require(_0x91cb('0x0'));var events=['save',_0x91cb('0x1'),_0x91cb('0x2')];function createListener(_0x2b1894,_0x351bdb){return function(_0x57ea48){_0x351bdb[_0x91cb('0x3')](_0x2b1894,_0x57ea48);};}function removeListener(_0x2b7314,_0x5652cd){return function(){UserVoiceQueueRtEvents[_0x91cb('0x4')](_0x2b7314,_0x5652cd);};}exports[_0x91cb('0x5')]=function(_0x186dc3){for(var _0x28543e=0x0,_0x3b9d98=events[_0x91cb('0x6')];_0x28543e<_0x3b9d98;_0x28543e++){var _0x4c1f56=events[_0x28543e];var _0x15c517=createListener('userVoiceQueueRt:'+_0x4c1f56,_0x186dc3);UserVoiceQueueRtEvents['on'](_0x4c1f56,_0x15c517);}};
\ No newline at end of file
+var _0x0b3d=['removeListener','register','length','userVoiceQueueRt:','./userVoiceQueueRt.events','remove'];(function(_0x2706da,_0x3856f5){var _0x3ba87e=function(_0x479a79){while(--_0x479a79){_0x2706da['push'](_0x2706da['shift']());}};_0x3ba87e(++_0x3856f5);}(_0x0b3d,0x76));var _0xd0b3=function(_0x3c4d2a,_0x1e5816){_0x3c4d2a=_0x3c4d2a-0x0;var _0x596a0b=_0x0b3d[_0x3c4d2a];return _0x596a0b;};'use strict';var UserVoiceQueueRtEvents=require(_0xd0b3('0x0'));var events=['save',_0xd0b3('0x1'),'update'];function createListener(_0x44585b,_0x5cd26e){return function(_0x2e82a6){_0x5cd26e['emit'](_0x44585b,_0x2e82a6);};}function removeListener(_0x372f08,_0x50faaa){return function(){UserVoiceQueueRtEvents[_0xd0b3('0x2')](_0x372f08,_0x50faaa);};}exports[_0xd0b3('0x3')]=function(_0x5b80df){for(var _0x2968c9=0x0,_0x5bc883=events[_0xd0b3('0x4')];_0x2968c9<_0x5bc883;_0x2968c9++){var _0x5f3196=events[_0x2968c9];var _0x5ab5b2=createListener(_0xd0b3('0x5')+_0x5f3196,_0x5b80df);UserVoiceQueueRtEvents['on'](_0x5f3196,_0x5ab5b2);}};
\ No newline at end of file
index 9bc9d6f..5e8313e 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(_0x10fd20,_0x762192){var _0x3fe432=function(_0x350020){while(--_0x350020){_0x10fd20['push'](_0x10fd20['shift']());}};_0x3fe432(++_0x762192);}(_0x70e0,0x17b));var _0x070e=function(_0x376089,_0x234636){_0x376089=_0x376089-0x0;var _0x3a8dfa=_0x70e0[_0x376089];return _0x3a8dfa;};'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 _0x9c44=['express','Router','fs-extra','../../components/auth/service','exports','path','connect-timeout'];(function(_0x2ce286,_0x4104e4){var _0x4c471f=function(_0x43326c){while(--_0x43326c){_0x2ce286['push'](_0x2ce286['shift']());}};_0x4c471f(++_0x4104e4);}(_0x9c44,0x178));var _0x49c4=function(_0x2d2c16,_0x4e88b6){_0x2d2c16=_0x2d2c16-0x0;var _0x53f2fb=_0x9c44[_0x2d2c16];return _0x53f2fb;};'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 c6b3aa9..7c0d757 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd334=['exports','INTEGER'];(function(_0x2b9a92,_0x3d6d6e){var _0x13db56=function(_0x37ad5b){while(--_0x37ad5b){_0x2b9a92['push'](_0x2b9a92['shift']());}};_0x13db56(++_0x3d6d6e);}(_0xd334,0x1b8));var _0x4d33=function(_0x491a7f,_0x28bb80){_0x491a7f=_0x491a7f-0x0;var _0x3d8f44=_0xd334[_0x491a7f];return _0x3d8f44;};'use strict';var Sequelize=require('sequelize');module[_0x4d33('0x0')]={'penalty':{'type':Sequelize[_0x4d33('0x1')],'defaultValue':0x0}};
\ No newline at end of file
+var _0x2599=['exports','sequelize'];(function(_0x1eda20,_0x1149f4){var _0x31b953=function(_0x25f0d8){while(--_0x25f0d8){_0x1eda20['push'](_0x1eda20['shift']());}};_0x31b953(++_0x1149f4);}(_0x2599,0x117));var _0x9259=function(_0x15d7bc,_0x82b17){_0x15d7bc=_0x15d7bc-0x0;var _0x1866a7=_0x2599[_0x15d7bc];return _0x1866a7;};'use strict';var Sequelize=require(_0x9259('0x0'));module[_0x9259('0x1')]={'penalty':{'type':Sequelize['INTEGER'],'defaultValue':0x0}};
\ No newline at end of file
index 5f4d72a..f7fc82f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb4b4=['rimraf','define','../../config/logger','api','bluebird','request-promise'];(function(_0x82865c,_0x194410){var _0x5ccda8=function(_0x1521b8){while(--_0x1521b8){_0x82865c['push'](_0x82865c['shift']());}};_0x5ccda8(++_0x194410);}(_0xb4b4,0x1b8));var _0x4b4b=function(_0x50a0c2,_0x4befab){_0x50a0c2=_0x50a0c2-0x0;var _0x5ebadd=_0xb4b4[_0x50a0c2];return _0x5ebadd;};'use strict';var _=require('lodash');var util=require('util');var logger=require(_0x4b4b('0x0'))(_0x4b4b('0x1'));var moment=require('moment');var BPromise=require(_0x4b4b('0x2'));var rp=require(_0x4b4b('0x3'));var fs=require('fs');var path=require('path');var rimraf=require(_0x4b4b('0x4'));var config=require('../../config/environment');var attributes=require('./userWhatsappQueue.attributes');module['exports']=function(_0xe65ca,_0x4fd7b6){return _0xe65ca[_0x4b4b('0x5')]('UserWhatsappQueue',attributes,{'tableName':'user_has_whatsapp_queues','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x2c45=['request-promise','path','rimraf','./userWhatsappQueue.attributes','exports','define','UserWhatsappQueue','user_has_whatsapp_queues','lodash','util','../../config/logger','moment','bluebird'];(function(_0x57b54c,_0x54ce0d){var _0x59cc19=function(_0xa33bc6){while(--_0xa33bc6){_0x57b54c['push'](_0x57b54c['shift']());}};_0x59cc19(++_0x54ce0d);}(_0x2c45,0x8a));var _0x52c4=function(_0x28b50f,_0x179872){_0x28b50f=_0x28b50f-0x0;var _0x59a7d2=_0x2c45[_0x28b50f];return _0x59a7d2;};'use strict';var _=require(_0x52c4('0x0'));var util=require(_0x52c4('0x1'));var logger=require(_0x52c4('0x2'))('api');var moment=require(_0x52c4('0x3'));var BPromise=require(_0x52c4('0x4'));var rp=require(_0x52c4('0x5'));var fs=require('fs');var path=require(_0x52c4('0x6'));var rimraf=require(_0x52c4('0x7'));var config=require('../../config/environment');var attributes=require(_0x52c4('0x8'));module[_0x52c4('0x9')]=function(_0x49d1da,_0xf540c7){return _0x49d1da[_0x52c4('0xa')](_0x52c4('0xb'),attributes,{'tableName':_0x52c4('0xc'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 61c1327..5ddf220 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7ab8=['../../config/environment','client','then','request\x20sent','debug','UserWhatsappQueue,\x20%s,\x20%s,\x20%s','stringify','error','code','UserWhatsappQueue,\x20%s,\x20%s','message','info','result','catch','lodash','util','moment','ioredis','../../mysqldb','../../config/utils','../../config/logger'];(function(_0x211bc3,_0x5860c8){var _0x34c9a2=function(_0x4bfa37){while(--_0x4bfa37){_0x211bc3['push'](_0x211bc3['shift']());}};_0x34c9a2(++_0x5860c8);}(_0x7ab8,0x11f));var _0x87ab=function(_0x122ef9,_0x451d2a){_0x122ef9=_0x122ef9-0x0;var _0x42fba0=_0x7ab8[_0x122ef9];return _0x42fba0;};'use strict';var _=require(_0x87ab('0x0'));var util=require(_0x87ab('0x1'));var moment=require(_0x87ab('0x2'));var BPromise=require('bluebird');var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x87ab('0x3'));var db=require(_0x87ab('0x4'))['db'];var utils=require(_0x87ab('0x5'));var logger=require(_0x87ab('0x6'))('rpc');var config=require(_0x87ab('0x7'));var jayson=require('jayson/promise');var client=jayson[_0x87ab('0x8')]['http']({'port':0x232a});function respondWithRpcPromise(_0x227d36,_0x79ce89,_0x55712a){return new BPromise(function(_0x48215d,_0x1b6ed3){return client['request'](_0x227d36,_0x55712a)[_0x87ab('0x9')](function(_0x2e1e04){logger['info']('UserWhatsappQueue,\x20%s,\x20%s',_0x79ce89,_0x87ab('0xa'));logger[_0x87ab('0xb')](_0x87ab('0xc'),_0x79ce89,_0x87ab('0xa'),JSON[_0x87ab('0xd')](_0x2e1e04));if(_0x2e1e04[_0x87ab('0xe')]){if(_0x2e1e04[_0x87ab('0xe')][_0x87ab('0xf')]===0x1f4){logger[_0x87ab('0xe')](_0x87ab('0x10'),_0x79ce89,_0x2e1e04[_0x87ab('0xe')][_0x87ab('0x11')]);return _0x1b6ed3(_0x2e1e04[_0x87ab('0xe')][_0x87ab('0x11')]);}logger[_0x87ab('0xe')](_0x87ab('0x10'),_0x79ce89,_0x2e1e04['error'][_0x87ab('0x11')]);return _0x48215d(_0x2e1e04[_0x87ab('0xe')][_0x87ab('0x11')]);}else{logger[_0x87ab('0x12')](_0x87ab('0x10'),_0x79ce89,_0x87ab('0xa'));_0x48215d(_0x2e1e04[_0x87ab('0x13')][_0x87ab('0x11')]);}})[_0x87ab('0x14')](function(_0x31b8a2){logger['error'](_0x87ab('0x10'),_0x79ce89,_0x31b8a2);_0x1b6ed3(_0x31b8a2);});});}
\ No newline at end of file
+var _0x4ad1=['util','bluebird','randomstring','../../mysqldb','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','request','then','UserWhatsappQueue,\x20%s,\x20%s','request\x20sent','debug','UserWhatsappQueue,\x20%s,\x20%s,\x20%s','error','message','info','catch','lodash'];(function(_0x372515,_0xdd11f){var _0xa3bf4e=function(_0x212cc8){while(--_0x212cc8){_0x372515['push'](_0x372515['shift']());}};_0xa3bf4e(++_0xdd11f);}(_0x4ad1,0x68));var _0x14ad=function(_0x393f0e,_0x5cf860){_0x393f0e=_0x393f0e-0x0;var _0x4f5333=_0x4ad1[_0x393f0e];return _0x4f5333;};'use strict';var _=require(_0x14ad('0x0'));var util=require(_0x14ad('0x1'));var moment=require('moment');var BPromise=require(_0x14ad('0x2'));var rs=require(_0x14ad('0x3'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x14ad('0x4'))['db'];var utils=require('../../config/utils');var logger=require(_0x14ad('0x5'))(_0x14ad('0x6'));var config=require(_0x14ad('0x7'));var jayson=require(_0x14ad('0x8'));var client=jayson[_0x14ad('0x9')][_0x14ad('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x4e3e6d,_0x49b81b,_0x290ef1){return new BPromise(function(_0x57ec07,_0x46bd9a){return client[_0x14ad('0xb')](_0x4e3e6d,_0x290ef1)[_0x14ad('0xc')](function(_0x2d59b8){logger['info'](_0x14ad('0xd'),_0x49b81b,_0x14ad('0xe'));logger[_0x14ad('0xf')](_0x14ad('0x10'),_0x49b81b,'request\x20sent',JSON['stringify'](_0x2d59b8));if(_0x2d59b8['error']){if(_0x2d59b8['error']['code']===0x1f4){logger[_0x14ad('0x11')](_0x14ad('0xd'),_0x49b81b,_0x2d59b8['error'][_0x14ad('0x12')]);return _0x46bd9a(_0x2d59b8['error'][_0x14ad('0x12')]);}logger[_0x14ad('0x11')](_0x14ad('0xd'),_0x49b81b,_0x2d59b8[_0x14ad('0x11')][_0x14ad('0x12')]);return _0x57ec07(_0x2d59b8[_0x14ad('0x11')][_0x14ad('0x12')]);}else{logger[_0x14ad('0x13')](_0x14ad('0xd'),_0x49b81b,_0x14ad('0xe'));_0x57ec07(_0x2d59b8['result'][_0x14ad('0x12')]);}})[_0x14ad('0x14')](function(_0x38af6e){logger[_0x14ad('0x11')]('UserWhatsappQueue,\x20%s,\x20%s',_0x49b81b,_0x38af6e);_0x46bd9a(_0x38af6e);});});}
\ No newline at end of file
index 7728010..ee31c4e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8a9c=['exports','multer','util','path','connect-timeout','express','fs-extra','../../components/auth/service','../../config/environment','./variable.controller','get','index','/:id','isAuthenticated','show','post','create','put','update','delete'];(function(_0x30221e,_0x5a14e2){var _0x5160b7=function(_0x22fc8b){while(--_0x22fc8b){_0x30221e['push'](_0x30221e['shift']());}};_0x5160b7(++_0x5a14e2);}(_0x8a9c,0x12d));var _0xc8a9=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x8a9c[_0x3dd15e];return _0x231fd0;};'use strict';var multer=require(_0xc8a9('0x0'));var util=require(_0xc8a9('0x1'));var path=require(_0xc8a9('0x2'));var timeout=require(_0xc8a9('0x3'));var express=require(_0xc8a9('0x4'));var router=express['Router']();var fs_extra=require(_0xc8a9('0x5'));var auth=require(_0xc8a9('0x6'));var interaction=require('../../components/interaction/service');var config=require(_0xc8a9('0x7'));var controller=require(_0xc8a9('0x8'));router[_0xc8a9('0x9')]('/',auth['isAuthenticated'](),controller[_0xc8a9('0xa')]);router[_0xc8a9('0x9')](_0xc8a9('0xb'),auth[_0xc8a9('0xc')](),controller[_0xc8a9('0xd')]);router[_0xc8a9('0xe')]('/',auth[_0xc8a9('0xc')](),controller[_0xc8a9('0xf')]);router[_0xc8a9('0x10')]('/:id',auth['isAuthenticated'](),controller[_0xc8a9('0x11')]);router[_0xc8a9('0x12')]('/:id',auth[_0xc8a9('0xc')](),controller['destroy']);module[_0xc8a9('0x13')]=router;
\ No newline at end of file
+var _0x44d4=['exports','multer','express','Router','../../config/environment','./variable.controller','get','isAuthenticated','index','/:id','show','create','put','update','delete','destroy'];(function(_0x43d11d,_0xccff91){var _0x38cd08=function(_0x131ae2){while(--_0x131ae2){_0x43d11d['push'](_0x43d11d['shift']());}};_0x38cd08(++_0xccff91);}(_0x44d4,0x161));var _0x444d=function(_0x3abe6a,_0xdd7b1a){_0x3abe6a=_0x3abe6a-0x0;var _0x2fc39e=_0x44d4[_0x3abe6a];return _0x2fc39e;};'use strict';var multer=require(_0x444d('0x0'));var util=require('util');var path=require('path');var timeout=require('connect-timeout');var express=require(_0x444d('0x1'));var router=express[_0x444d('0x2')]();var fs_extra=require('fs-extra');var auth=require('../../components/auth/service');var interaction=require('../../components/interaction/service');var config=require(_0x444d('0x3'));var controller=require(_0x444d('0x4'));router[_0x444d('0x5')]('/',auth[_0x444d('0x6')](),controller[_0x444d('0x7')]);router[_0x444d('0x5')](_0x444d('0x8'),auth['isAuthenticated'](),controller[_0x444d('0x9')]);router['post']('/',auth[_0x444d('0x6')](),controller[_0x444d('0xa')]);router[_0x444d('0xb')](_0x444d('0x8'),auth[_0x444d('0x6')](),controller[_0x444d('0xc')]);router[_0x444d('0xd')](_0x444d('0x8'),auth[_0x444d('0x6')](),controller[_0x444d('0xe')]);module[_0x444d('0xf')]=router;
\ No newline at end of file
index cbe2958..fdb95b8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x48db=['sequelize','exports','STRING','name'];(function(_0x311909,_0x414bf7){var _0x8d3163=function(_0x226f55){while(--_0x226f55){_0x311909['push'](_0x311909['shift']());}};_0x8d3163(++_0x414bf7);}(_0x48db,0x1e4));var _0xb48d=function(_0x4990a0,_0x55f91d){_0x4990a0=_0x4990a0-0x0;var _0x395784=_0x48db[_0x4990a0];return _0x395784;};'use strict';var Sequelize=require(_0xb48d('0x0'));module[_0xb48d('0x1')]={'name':{'type':Sequelize[_0xb48d('0x2')],'unique':_0xb48d('0x3'),'allowNull':![],'validate':{'notEmpty':!![]}},'description':{'type':Sequelize['STRING']}};
\ No newline at end of file
+var _0xc3c4=['STRING','name','sequelize'];(function(_0x37dc01,_0x5e2a1e){var _0x60b07b=function(_0x18d2c7){while(--_0x18d2c7){_0x37dc01['push'](_0x37dc01['shift']());}};_0x60b07b(++_0x5e2a1e);}(_0xc3c4,0xf5));var _0x4c3c=function(_0xdb5e6,_0x4b5902){_0xdb5e6=_0xdb5e6-0x0;var _0x324ad5=_0xc3c4[_0xdb5e6];return _0x324ad5;};'use strict';var Sequelize=require(_0x4c3c('0x0'));module['exports']={'name':{'type':Sequelize[_0x4c3c('0x1')],'unique':_0x4c3c('0x2'),'allowNull':![],'validate':{'notEmpty':!![]}},'description':{'type':Sequelize[_0x4c3c('0x1')]}};
\ No newline at end of file
index b303973..b8ef6ff 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xbe06=['Variable','rawAttributes','fieldName','type','key','model','map','query','keys','filters','intersection','attributes','fields','length','hasOwnProperty','sort','where','pick','filter','merge','options','includeAll','include','findAll','catch','params','find','create','body','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','UserProfileSection','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','eml-format','zip-dir','fast-json-patch','request-promise','bluebird','mustache','path','sox','to-csv','ejs','lodash','squel','crypto','jsforce','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../config/license/hardware','../../config/logger','../../config/utils','../../config/environment','../../config/license/util','sendStatus','status','end','json','offset','undefined','count','limit','Content-Range','apply','reject','save','then','destroy','get','Variables','UserProfileResource','error','stack','name','index'];(function(_0x18d6fb,_0x36e181){var _0x194b7f=function(_0x25f542){while(--_0x25f542){_0x18d6fb['push'](_0x18d6fb['shift']());}};_0x194b7f(++_0x36e181);}(_0xbe06,0x10f));var _0x6be0=function(_0x2fa157,_0x5376b){_0x2fa157=_0x2fa157-0x0;var _0x3c0392=_0xbe06[_0x2fa157];return _0x3c0392;};'use strict';var emlformat=require(_0x6be0('0x0'));var rimraf=require('rimraf');var zipdir=require(_0x6be0('0x1'));var jsonpatch=require(_0x6be0('0x2'));var rp=require(_0x6be0('0x3'));var moment=require('moment');var BPromise=require(_0x6be0('0x4'));var Mustache=require(_0x6be0('0x5'));var util=require('util');var path=require(_0x6be0('0x6'));var sox=require(_0x6be0('0x7'));var csv=require(_0x6be0('0x8'));var ejs=require(_0x6be0('0x9'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x6be0('0xa'));var squel=require(_0x6be0('0xb'));var crypto=require(_0x6be0('0xc'));var jsforce=require(_0x6be0('0xd'));var deskjs=require('desk.js');var toCsv=require(_0x6be0('0x8'));var querystring=require(_0x6be0('0xe'));var Papa=require(_0x6be0('0xf'));var Redis=require(_0x6be0('0x10'));var authService=require(_0x6be0('0x11'));var qs=require(_0x6be0('0x12'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x6be0('0x13'));var logger=require(_0x6be0('0x14'))('api');var utils=require(_0x6be0('0x15'));var config=require(_0x6be0('0x16'));var licenseUtil=require(_0x6be0('0x17'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x305b1b,_0x1acd0f){_0x1acd0f=_0x1acd0f||0xcc;return function(_0x431210){if(_0x431210){return _0x305b1b[_0x6be0('0x18')](_0x1acd0f);}return _0x305b1b[_0x6be0('0x19')](_0x1acd0f)[_0x6be0('0x1a')]();};}function respondWithResult(_0x53a699,_0x2ea30b){_0x2ea30b=_0x2ea30b||0xc8;return function(_0x5b6da6){if(_0x5b6da6){return _0x53a699[_0x6be0('0x19')](_0x2ea30b)[_0x6be0('0x1b')](_0x5b6da6);}};}function respondWithFilteredResult(_0x3377c5,_0x4ae77e){return function(_0x580a95){if(_0x580a95){var _0x29dd93=typeof _0x4ae77e[_0x6be0('0x1c')]===_0x6be0('0x1d')&&typeof _0x4ae77e['limit']===_0x6be0('0x1d');var _0xa4bf71=_0x580a95[_0x6be0('0x1e')];var _0x3f2873=_0x29dd93?0x0:_0x4ae77e[_0x6be0('0x1c')];var _0x2807a7=_0x29dd93?_0x580a95[_0x6be0('0x1e')]:_0x4ae77e[_0x6be0('0x1c')]+_0x4ae77e[_0x6be0('0x1f')];var _0x22182e;if(_0x2807a7>=_0xa4bf71){_0x2807a7=_0xa4bf71;_0x22182e=0xc8;}else{_0x22182e=0xce;}_0x3377c5[_0x6be0('0x19')](_0x22182e);return _0x3377c5['set'](_0x6be0('0x20'),_0x3f2873+'-'+_0x2807a7+'/'+_0xa4bf71)[_0x6be0('0x1b')](_0x580a95);}return null;};}function patchUpdates(_0x1d3b11){return function(_0x30ac24){try{jsonpatch[_0x6be0('0x21')](_0x30ac24,_0x1d3b11,!![]);}catch(_0x5b815a){return BPromise[_0x6be0('0x22')](_0x5b815a);}return _0x30ac24[_0x6be0('0x23')]();};}function saveUpdates(_0x20cb54,_0x44196e){return function(_0x37953d){if(_0x37953d){return _0x37953d['update'](_0x20cb54)[_0x6be0('0x24')](function(_0x4cd275){return _0x4cd275;});}return null;};}function removeEntity(_0x4be0c6,_0x5e7db1){return function(_0x5012ff){if(_0x5012ff){return _0x5012ff[_0x6be0('0x25')]()[_0x6be0('0x24')](function(){var _0x32dfbc=_0x5012ff[_0x6be0('0x26')]({'plain':!![]});var _0x3a18db=_0x6be0('0x27');return db[_0x6be0('0x28')][_0x6be0('0x25')]({'where':{'type':_0x3a18db,'resourceId':_0x32dfbc['id']}})[_0x6be0('0x24')](function(){return _0x5012ff;});})['then'](function(){_0x4be0c6[_0x6be0('0x19')](0xcc)[_0x6be0('0x1a')]();});}};}function handleEntityNotFound(_0x12674b,_0x385fa3){return function(_0x3b5a48){if(!_0x3b5a48){_0x12674b[_0x6be0('0x18')](0x194);}return _0x3b5a48;};}function handleError(_0x1cd557,_0x4fa9c6){_0x4fa9c6=_0x4fa9c6||0x1f4;return function(_0x1c5940){logger[_0x6be0('0x29')](_0x1c5940[_0x6be0('0x2a')]);if(_0x1c5940[_0x6be0('0x2b')]){delete _0x1c5940['name'];}_0x1cd557['status'](_0x4fa9c6)['send'](_0x1c5940);};}exports[_0x6be0('0x2c')]=function(_0x54a4a2,_0x55ee59){var _0x68a497={},_0x1b682d={},_0x2b5f2a={'count':0x0,'rows':[]};var _0x25d26f=_['map'](db[_0x6be0('0x2d')][_0x6be0('0x2e')],function(_0x25ef5b){return{'name':_0x25ef5b[_0x6be0('0x2f')],'type':_0x25ef5b[_0x6be0('0x30')][_0x6be0('0x31')]};});_0x1b682d[_0x6be0('0x32')]=_[_0x6be0('0x33')](_0x25d26f,_0x6be0('0x2b'));_0x1b682d[_0x6be0('0x34')]=_[_0x6be0('0x35')](_0x54a4a2[_0x6be0('0x34')]);_0x1b682d[_0x6be0('0x36')]=_[_0x6be0('0x37')](_0x1b682d[_0x6be0('0x32')],_0x1b682d[_0x6be0('0x34')]);_0x68a497[_0x6be0('0x38')]=_['intersection'](_0x1b682d[_0x6be0('0x32')],qs[_0x6be0('0x39')](_0x54a4a2[_0x6be0('0x34')]['fields']));_0x68a497[_0x6be0('0x38')]=_0x68a497[_0x6be0('0x38')][_0x6be0('0x3a')]?_0x68a497[_0x6be0('0x38')]:_0x1b682d[_0x6be0('0x32')];if(!_0x54a4a2[_0x6be0('0x34')][_0x6be0('0x3b')]('nolimit')){_0x68a497['limit']=qs[_0x6be0('0x1f')](_0x54a4a2[_0x6be0('0x34')]['limit']);_0x68a497[_0x6be0('0x1c')]=qs[_0x6be0('0x1c')](_0x54a4a2[_0x6be0('0x34')][_0x6be0('0x1c')]);}_0x68a497['order']=qs['sort'](_0x54a4a2[_0x6be0('0x34')][_0x6be0('0x3c')]);_0x68a497[_0x6be0('0x3d')]=qs['filters'](_[_0x6be0('0x3e')](_0x54a4a2['query'],_0x1b682d[_0x6be0('0x36')]),_0x25d26f);if(_0x54a4a2[_0x6be0('0x34')][_0x6be0('0x3f')]){_0x68a497[_0x6be0('0x3d')]=_['merge'](_0x68a497[_0x6be0('0x3d')],{'$or':_[_0x6be0('0x33')](_0x25d26f,function(_0x4bb82f){if(_0x4bb82f[_0x6be0('0x30')]!=='VIRTUAL'){var _0x1602a8={};_0x1602a8[_0x4bb82f[_0x6be0('0x2b')]]={'$like':'%'+_0x54a4a2[_0x6be0('0x34')][_0x6be0('0x3f')]+'%'};return _0x1602a8;}})});}_0x68a497=_[_0x6be0('0x40')]({},_0x68a497,_0x54a4a2[_0x6be0('0x41')]);var _0x5691ce={'where':_0x68a497[_0x6be0('0x3d')]};return db[_0x6be0('0x2d')]['count'](_0x5691ce)['then'](function(_0x5847a3){_0x2b5f2a[_0x6be0('0x1e')]=_0x5847a3;if(_0x54a4a2[_0x6be0('0x34')][_0x6be0('0x42')]){_0x68a497[_0x6be0('0x43')]=[{'all':!![]}];}return db[_0x6be0('0x2d')][_0x6be0('0x44')](_0x68a497);})[_0x6be0('0x24')](function(_0x3d0287){_0x2b5f2a['rows']=_0x3d0287;return _0x2b5f2a;})[_0x6be0('0x24')](respondWithFilteredResult(_0x55ee59,_0x68a497))[_0x6be0('0x45')](handleError(_0x55ee59,null));};exports['show']=function(_0x2414f1,_0x451044){var _0x4bd099={'raw':!![],'where':{'id':_0x2414f1[_0x6be0('0x46')]['id']}},_0x3bfb38={};_0x3bfb38['model']=_[_0x6be0('0x35')](db['Variable'][_0x6be0('0x2e')]);_0x3bfb38[_0x6be0('0x34')]=_['keys'](_0x2414f1[_0x6be0('0x34')]);_0x3bfb38['filters']=_[_0x6be0('0x37')](_0x3bfb38['model'],_0x3bfb38[_0x6be0('0x34')]);_0x4bd099[_0x6be0('0x38')]=_[_0x6be0('0x37')](_0x3bfb38[_0x6be0('0x32')],qs[_0x6be0('0x39')](_0x2414f1[_0x6be0('0x34')][_0x6be0('0x39')]));_0x4bd099['attributes']=_0x4bd099[_0x6be0('0x38')]['length']?_0x4bd099[_0x6be0('0x38')]:_0x3bfb38[_0x6be0('0x32')];if(_0x2414f1[_0x6be0('0x34')][_0x6be0('0x42')]){_0x4bd099[_0x6be0('0x43')]=[{'all':!![]}];}_0x4bd099=_[_0x6be0('0x40')]({},_0x4bd099,_0x2414f1['options']);return db[_0x6be0('0x2d')][_0x6be0('0x47')](_0x4bd099)['then'](handleEntityNotFound(_0x451044,null))[_0x6be0('0x24')](respondWithResult(_0x451044,null))[_0x6be0('0x45')](handleError(_0x451044,null));};exports[_0x6be0('0x48')]=function(_0x403852,_0x1cb225){return db[_0x6be0('0x2d')][_0x6be0('0x48')](_0x403852[_0x6be0('0x49')],{})[_0x6be0('0x24')](function(_0x3493b6){var _0x35bf10=_0x403852['user'][_0x6be0('0x26')]({'plain':!![]});if(!_0x35bf10)throw new Error(_0x6be0('0x4a'));if(_0x35bf10[_0x6be0('0x4b')]==='user'){var _0x4289f1=_0x3493b6['get']({'plain':!![]});var _0x571437=_0x6be0('0x27');return db[_0x6be0('0x4c')][_0x6be0('0x47')]({'where':{'name':_0x571437,'userProfileId':_0x35bf10['userProfileId']},'raw':!![]})['then'](function(_0x2f9aa1){if(_0x2f9aa1&&_0x2f9aa1[_0x6be0('0x4d')]===0x0){return db[_0x6be0('0x28')][_0x6be0('0x48')]({'name':_0x4289f1[_0x6be0('0x2b')],'resourceId':_0x4289f1['id'],'type':_0x2f9aa1[_0x6be0('0x2b')],'sectionId':_0x2f9aa1['id']},{})[_0x6be0('0x24')](function(){return _0x3493b6;});}else{return _0x3493b6;}})[_0x6be0('0x45')](function(_0x4229e8){logger[_0x6be0('0x29')](_0x6be0('0x4e'),_0x4229e8);throw _0x4229e8;});}return _0x3493b6;})[_0x6be0('0x24')](respondWithResult(_0x1cb225,0xc9))[_0x6be0('0x45')](handleError(_0x1cb225,null));};exports['update']=function(_0x416b9a,_0x2a75eb){if(_0x416b9a[_0x6be0('0x49')]['id']){delete _0x416b9a[_0x6be0('0x49')]['id'];}return db[_0x6be0('0x2d')][_0x6be0('0x47')]({'where':{'id':_0x416b9a[_0x6be0('0x46')]['id']}})['then'](handleEntityNotFound(_0x2a75eb,null))[_0x6be0('0x24')](saveUpdates(_0x416b9a[_0x6be0('0x49')],null))['then'](respondWithResult(_0x2a75eb,null))['catch'](handleError(_0x2a75eb,null));};exports[_0x6be0('0x25')]=function(_0x12ecdb,_0x4d55d9){return db[_0x6be0('0x2d')]['find']({'where':{'id':_0x12ecdb[_0x6be0('0x46')]['id']}})['then'](handleEntityNotFound(_0x4d55d9,null))[_0x6be0('0x24')](removeEntity(_0x4d55d9,null))['catch'](handleError(_0x4d55d9,null));};
\ No newline at end of file
+var _0xd674=['reject','update','then','destroy','get','Variables','UserProfileResource','stack','name','send','map','rawAttributes','fieldName','type','model','query','keys','intersection','attributes','length','nolimit','order','sort','where','filters','pick','merge','VIRTUAL','filter','options','Variable','count','includeAll','findAll','catch','show','params','include','find','create','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','UserProfileSection','autoAssociation','eml-format','rimraf','zip-dir','request-promise','bluebird','mustache','util','to-csv','fs-extra','lodash','squel','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','sendStatus','status','end','json','offset','undefined','limit','Content-Range','apply'];(function(_0xe7281f,_0x2d77c3){var _0x90dc99=function(_0x1e335b){while(--_0x1e335b){_0xe7281f['push'](_0xe7281f['shift']());}};_0x90dc99(++_0x2d77c3);}(_0xd674,0xc7));var _0x4d67=function(_0x53fb44,_0x36e73e){_0x53fb44=_0x53fb44-0x0;var _0x5a0790=_0xd674[_0x53fb44];return _0x5a0790;};'use strict';var emlformat=require(_0x4d67('0x0'));var rimraf=require(_0x4d67('0x1'));var zipdir=require(_0x4d67('0x2'));var jsonpatch=require('fast-json-patch');var rp=require(_0x4d67('0x3'));var moment=require('moment');var BPromise=require(_0x4d67('0x4'));var Mustache=require(_0x4d67('0x5'));var util=require(_0x4d67('0x6'));var path=require('path');var sox=require('sox');var csv=require(_0x4d67('0x7'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x4d67('0x8'));var _=require(_0x4d67('0x9'));var squel=require(_0x4d67('0xa'));var crypto=require('crypto');var jsforce=require('jsforce');var deskjs=require(_0x4d67('0xb'));var toCsv=require(_0x4d67('0x7'));var querystring=require('querystring');var Papa=require(_0x4d67('0xc'));var Redis=require(_0x4d67('0xd'));var authService=require(_0x4d67('0xe'));var qs=require(_0x4d67('0xf'));var as=require(_0x4d67('0x10'));var hardwareService=require(_0x4d67('0x11'));var logger=require(_0x4d67('0x12'))(_0x4d67('0x13'));var utils=require('../../config/utils');var config=require(_0x4d67('0x14'));var licenseUtil=require(_0x4d67('0x15'));var db=require(_0x4d67('0x16'))['db'];function respondWithStatusCode(_0x236ce8,_0x29c51d){_0x29c51d=_0x29c51d||0xcc;return function(_0x1ba47d){if(_0x1ba47d){return _0x236ce8[_0x4d67('0x17')](_0x29c51d);}return _0x236ce8[_0x4d67('0x18')](_0x29c51d)[_0x4d67('0x19')]();};}function respondWithResult(_0x26b804,_0x1433a5){_0x1433a5=_0x1433a5||0xc8;return function(_0x39a691){if(_0x39a691){return _0x26b804[_0x4d67('0x18')](_0x1433a5)[_0x4d67('0x1a')](_0x39a691);}};}function respondWithFilteredResult(_0x570027,_0x2ca3fb){return function(_0x46943d){if(_0x46943d){var _0x4213e3=typeof _0x2ca3fb[_0x4d67('0x1b')]===_0x4d67('0x1c')&&typeof _0x2ca3fb['limit']===_0x4d67('0x1c');var _0x307bf3=_0x46943d['count'];var _0xf6908d=_0x4213e3?0x0:_0x2ca3fb[_0x4d67('0x1b')];var _0x302025=_0x4213e3?_0x46943d['count']:_0x2ca3fb['offset']+_0x2ca3fb[_0x4d67('0x1d')];var _0x2168d4;if(_0x302025>=_0x307bf3){_0x302025=_0x307bf3;_0x2168d4=0xc8;}else{_0x2168d4=0xce;}_0x570027[_0x4d67('0x18')](_0x2168d4);return _0x570027['set'](_0x4d67('0x1e'),_0xf6908d+'-'+_0x302025+'/'+_0x307bf3)[_0x4d67('0x1a')](_0x46943d);}return null;};}function patchUpdates(_0x4b6473){return function(_0x25d79c){try{jsonpatch[_0x4d67('0x1f')](_0x25d79c,_0x4b6473,!![]);}catch(_0x37db3c){return BPromise[_0x4d67('0x20')](_0x37db3c);}return _0x25d79c['save']();};}function saveUpdates(_0x26a337,_0x218ec0){return function(_0x5c2acd){if(_0x5c2acd){return _0x5c2acd[_0x4d67('0x21')](_0x26a337)[_0x4d67('0x22')](function(_0x6fa7c1){return _0x6fa7c1;});}return null;};}function removeEntity(_0x397995,_0xb43090){return function(_0x3ae7fb){if(_0x3ae7fb){return _0x3ae7fb[_0x4d67('0x23')]()['then'](function(){var _0x1706d5=_0x3ae7fb[_0x4d67('0x24')]({'plain':!![]});var _0xc9999a=_0x4d67('0x25');return db[_0x4d67('0x26')][_0x4d67('0x23')]({'where':{'type':_0xc9999a,'resourceId':_0x1706d5['id']}})[_0x4d67('0x22')](function(){return _0x3ae7fb;});})[_0x4d67('0x22')](function(){_0x397995[_0x4d67('0x18')](0xcc)[_0x4d67('0x19')]();});}};}function handleEntityNotFound(_0x5374ad,_0x53dea3){return function(_0x187339){if(!_0x187339){_0x5374ad['sendStatus'](0x194);}return _0x187339;};}function handleError(_0x3a9a1d,_0x49e093){_0x49e093=_0x49e093||0x1f4;return function(_0x315ef9){logger['error'](_0x315ef9[_0x4d67('0x27')]);if(_0x315ef9[_0x4d67('0x28')]){delete _0x315ef9['name'];}_0x3a9a1d[_0x4d67('0x18')](_0x49e093)[_0x4d67('0x29')](_0x315ef9);};}exports['index']=function(_0x1c79f8,_0x386ba1){var _0x588bbf={},_0x3c9935={},_0x5df07a={'count':0x0,'rows':[]};var _0x1e082f=_[_0x4d67('0x2a')](db['Variable'][_0x4d67('0x2b')],function(_0x22fc77){return{'name':_0x22fc77[_0x4d67('0x2c')],'type':_0x22fc77[_0x4d67('0x2d')]['key']};});_0x3c9935[_0x4d67('0x2e')]=_[_0x4d67('0x2a')](_0x1e082f,'name');_0x3c9935[_0x4d67('0x2f')]=_[_0x4d67('0x30')](_0x1c79f8['query']);_0x3c9935['filters']=_[_0x4d67('0x31')](_0x3c9935[_0x4d67('0x2e')],_0x3c9935['query']);_0x588bbf[_0x4d67('0x32')]=_[_0x4d67('0x31')](_0x3c9935[_0x4d67('0x2e')],qs['fields'](_0x1c79f8[_0x4d67('0x2f')]['fields']));_0x588bbf[_0x4d67('0x32')]=_0x588bbf[_0x4d67('0x32')][_0x4d67('0x33')]?_0x588bbf[_0x4d67('0x32')]:_0x3c9935[_0x4d67('0x2e')];if(!_0x1c79f8[_0x4d67('0x2f')]['hasOwnProperty'](_0x4d67('0x34'))){_0x588bbf['limit']=qs[_0x4d67('0x1d')](_0x1c79f8[_0x4d67('0x2f')]['limit']);_0x588bbf[_0x4d67('0x1b')]=qs[_0x4d67('0x1b')](_0x1c79f8['query'][_0x4d67('0x1b')]);}_0x588bbf[_0x4d67('0x35')]=qs[_0x4d67('0x36')](_0x1c79f8[_0x4d67('0x2f')]['sort']);_0x588bbf[_0x4d67('0x37')]=qs[_0x4d67('0x38')](_[_0x4d67('0x39')](_0x1c79f8[_0x4d67('0x2f')],_0x3c9935['filters']),_0x1e082f);if(_0x1c79f8[_0x4d67('0x2f')]['filter']){_0x588bbf['where']=_[_0x4d67('0x3a')](_0x588bbf[_0x4d67('0x37')],{'$or':_[_0x4d67('0x2a')](_0x1e082f,function(_0x425a6f){if(_0x425a6f[_0x4d67('0x2d')]!==_0x4d67('0x3b')){var _0x2f771c={};_0x2f771c[_0x425a6f[_0x4d67('0x28')]]={'$like':'%'+_0x1c79f8['query'][_0x4d67('0x3c')]+'%'};return _0x2f771c;}})});}_0x588bbf=_['merge']({},_0x588bbf,_0x1c79f8[_0x4d67('0x3d')]);var _0x36318f={'where':_0x588bbf[_0x4d67('0x37')]};return db[_0x4d67('0x3e')][_0x4d67('0x3f')](_0x36318f)[_0x4d67('0x22')](function(_0x20bc62){_0x5df07a[_0x4d67('0x3f')]=_0x20bc62;if(_0x1c79f8[_0x4d67('0x2f')][_0x4d67('0x40')]){_0x588bbf['include']=[{'all':!![]}];}return db['Variable'][_0x4d67('0x41')](_0x588bbf);})[_0x4d67('0x22')](function(_0x4a4465){_0x5df07a['rows']=_0x4a4465;return _0x5df07a;})[_0x4d67('0x22')](respondWithFilteredResult(_0x386ba1,_0x588bbf))[_0x4d67('0x42')](handleError(_0x386ba1,null));};exports[_0x4d67('0x43')]=function(_0x18d080,_0x318685){var _0x4cd929={'raw':!![],'where':{'id':_0x18d080[_0x4d67('0x44')]['id']}},_0xfd4dad={};_0xfd4dad['model']=_[_0x4d67('0x30')](db[_0x4d67('0x3e')][_0x4d67('0x2b')]);_0xfd4dad[_0x4d67('0x2f')]=_[_0x4d67('0x30')](_0x18d080[_0x4d67('0x2f')]);_0xfd4dad['filters']=_['intersection'](_0xfd4dad[_0x4d67('0x2e')],_0xfd4dad[_0x4d67('0x2f')]);_0x4cd929[_0x4d67('0x32')]=_[_0x4d67('0x31')](_0xfd4dad['model'],qs['fields'](_0x18d080[_0x4d67('0x2f')]['fields']));_0x4cd929['attributes']=_0x4cd929['attributes'][_0x4d67('0x33')]?_0x4cd929[_0x4d67('0x32')]:_0xfd4dad[_0x4d67('0x2e')];if(_0x18d080['query'][_0x4d67('0x40')]){_0x4cd929[_0x4d67('0x45')]=[{'all':!![]}];}_0x4cd929=_[_0x4d67('0x3a')]({},_0x4cd929,_0x18d080[_0x4d67('0x3d')]);return db['Variable'][_0x4d67('0x46')](_0x4cd929)[_0x4d67('0x22')](handleEntityNotFound(_0x318685,null))[_0x4d67('0x22')](respondWithResult(_0x318685,null))['catch'](handleError(_0x318685,null));};exports[_0x4d67('0x47')]=function(_0xcc48b7,_0x3e9e02){return db['Variable'][_0x4d67('0x47')](_0xcc48b7['body'],{})[_0x4d67('0x22')](function(_0xe340df){var _0x13aa6f=_0xcc48b7[_0x4d67('0x48')][_0x4d67('0x24')]({'plain':!![]});if(!_0x13aa6f)throw new Error(_0x4d67('0x49'));if(_0x13aa6f[_0x4d67('0x4a')]===_0x4d67('0x48')){var _0x482a6a=_0xe340df[_0x4d67('0x24')]({'plain':!![]});var _0x278200=_0x4d67('0x25');return db[_0x4d67('0x4b')]['find']({'where':{'name':_0x278200,'userProfileId':_0x13aa6f['userProfileId']},'raw':!![]})['then'](function(_0x1a890b){if(_0x1a890b&&_0x1a890b[_0x4d67('0x4c')]===0x0){return db['UserProfileResource']['create']({'name':_0x482a6a['name'],'resourceId':_0x482a6a['id'],'type':_0x1a890b[_0x4d67('0x28')],'sectionId':_0x1a890b['id']},{})['then'](function(){return _0xe340df;});}else{return _0xe340df;}})[_0x4d67('0x42')](function(_0x30619f){logger['error']('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0x30619f);throw _0x30619f;});}return _0xe340df;})['then'](respondWithResult(_0x3e9e02,0xc9))[_0x4d67('0x42')](handleError(_0x3e9e02,null));};exports[_0x4d67('0x21')]=function(_0x5283f3,_0x2eeb5c){if(_0x5283f3['body']['id']){delete _0x5283f3['body']['id'];}return db[_0x4d67('0x3e')][_0x4d67('0x46')]({'where':{'id':_0x5283f3[_0x4d67('0x44')]['id']}})[_0x4d67('0x22')](handleEntityNotFound(_0x2eeb5c,null))[_0x4d67('0x22')](saveUpdates(_0x5283f3['body'],null))[_0x4d67('0x22')](respondWithResult(_0x2eeb5c,null))[_0x4d67('0x42')](handleError(_0x2eeb5c,null));};exports['destroy']=function(_0x20021f,_0x567cb9){return db['Variable'][_0x4d67('0x46')]({'where':{'id':_0x20021f[_0x4d67('0x44')]['id']}})[_0x4d67('0x22')](handleEntityNotFound(_0x567cb9,null))[_0x4d67('0x22')](removeEntity(_0x567cb9,null))['catch'](handleError(_0x567cb9,null));};
\ No newline at end of file
index 3ce1b28..0ee4d32 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa1c5=['bluebird','request-promise','rimraf','../../config/environment','./variable.attributes','exports','define','tools_variables','lodash','util','../../config/logger'];(function(_0x39096d,_0x51f8a0){var _0x13da4f=function(_0x11e6b2){while(--_0x11e6b2){_0x39096d['push'](_0x39096d['shift']());}};_0x13da4f(++_0x51f8a0);}(_0xa1c5,0xd9));var _0x5a1c=function(_0x5c77c7,_0x44c3bb){_0x5c77c7=_0x5c77c7-0x0;var _0x9f8e82=_0xa1c5[_0x5c77c7];return _0x9f8e82;};'use strict';var _=require(_0x5a1c('0x0'));var util=require(_0x5a1c('0x1'));var logger=require(_0x5a1c('0x2'))('api');var moment=require('moment');var BPromise=require(_0x5a1c('0x3'));var rp=require(_0x5a1c('0x4'));var fs=require('fs');var path=require('path');var rimraf=require(_0x5a1c('0x5'));var config=require(_0x5a1c('0x6'));var attributes=require(_0x5a1c('0x7'));module[_0x5a1c('0x8')]=function(_0x5af5c8,_0x36392c){return _0x5af5c8[_0x5a1c('0x9')]('Variable',attributes,{'tableName':_0x5a1c('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x0ade=['path','rimraf','../../config/environment','./variable.attributes','exports','define','tools_variables','lodash','util','../../config/logger','api','bluebird','request-promise'];(function(_0x211ebc,_0x94231e){var _0x4bb25c=function(_0x2bb0e8){while(--_0x2bb0e8){_0x211ebc['push'](_0x211ebc['shift']());}};_0x4bb25c(++_0x94231e);}(_0x0ade,0x173));var _0xe0ad=function(_0x3f9033,_0x171e08){_0x3f9033=_0x3f9033-0x0;var _0x2818b6=_0x0ade[_0x3f9033];return _0x2818b6;};'use strict';var _=require(_0xe0ad('0x0'));var util=require(_0xe0ad('0x1'));var logger=require(_0xe0ad('0x2'))(_0xe0ad('0x3'));var moment=require('moment');var BPromise=require(_0xe0ad('0x4'));var rp=require(_0xe0ad('0x5'));var fs=require('fs');var path=require(_0xe0ad('0x6'));var rimraf=require(_0xe0ad('0x7'));var config=require(_0xe0ad('0x8'));var attributes=require(_0xe0ad('0x9'));module[_0xe0ad('0xa')]=function(_0x3cd221,_0x6ffc2a){return _0x3cd221[_0xe0ad('0xb')]('Variable',attributes,{'tableName':_0xe0ad('0xc'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index b24d461..9055533 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5fc3=['info','request\x20sent','debug','stringify','error','code','message','Variable,\x20%s,\x20%s','result','catch','ShowVariable','find','options','where','attributes','include','map','model','lodash','util','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','rpc','../../config/environment','jayson/promise','request','then'];(function(_0x2f2ed0,_0x1c6435){var _0x250b0d=function(_0x1909c1){while(--_0x1909c1){_0x2f2ed0['push'](_0x2f2ed0['shift']());}};_0x250b0d(++_0x1c6435);}(_0x5fc3,0xa8));var _0x35fc=function(_0x38841c,_0x1af0bf){_0x38841c=_0x38841c-0x0;var _0x500610=_0x5fc3[_0x38841c];return _0x500610;};'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')]('Variable,\x20%s,\x20%s',_0x508b32,_0x35fc('0xd'));logger[_0x35fc('0xe')]('Variable,\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']('Variable,\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);});});}exports[_0x35fc('0x16')]=function(_0x553677){var _0x41e165=this;return new Promise(function(_0x363e47,_0x2e513b){return db['Variable'][_0x35fc('0x17')]({'raw':_0x553677[_0x35fc('0x18')]?_0x553677[_0x35fc('0x18')]['raw']===undefined?!![]:![]:!![],'where':_0x553677[_0x35fc('0x18')]?_0x553677[_0x35fc('0x18')][_0x35fc('0x19')]||null:null,'attributes':_0x553677[_0x35fc('0x18')]?_0x553677[_0x35fc('0x18')][_0x35fc('0x1a')]||null:null,'include':_0x553677[_0x35fc('0x18')]?_0x553677[_0x35fc('0x18')][_0x35fc('0x1b')]?_[_0x35fc('0x1c')](_0x553677['options'][_0x35fc('0x1b')],function(_0xd5399f){return{'model':db[_0xd5399f[_0x35fc('0x1d')]],'as':_0xd5399f['as'],'attributes':_0xd5399f[_0x35fc('0x1a')],'include':_0xd5399f[_0x35fc('0x1b')]?_['map'](_0xd5399f[_0x35fc('0x1b')],function(_0x4c587a){return{'model':db[_0x4c587a['model']],'as':_0x4c587a['as'],'attributes':_0x4c587a[_0x35fc('0x1a')],'include':_0x4c587a[_0x35fc('0x1b')]?_[_0x35fc('0x1c')](_0x4c587a['include'],function(_0x4086e9){return{'model':db[_0x4086e9['model']],'as':_0x4086e9['as'],'attributes':_0x4086e9[_0x35fc('0x1a')]};}):[]};}):[]};}):[]:[]})[_0x35fc('0xb')](function(_0x5cb986){logger['info'](_0x35fc('0x16'),_0x553677);logger['debug'](_0x35fc('0x16'),_0x553677,JSON[_0x35fc('0xf')](_0x5cb986));_0x363e47(_0x5cb986);})['catch'](function(_0x26b7cb){logger[_0x35fc('0x10')](_0x35fc('0x16'),_0x26b7cb[_0x35fc('0x12')],_0x553677);_0x2e513b(_0x41e165[_0x35fc('0x10')](0x1f4,_0x26b7cb[_0x35fc('0x12')]));});});};
\ No newline at end of file
+var _0x1cb9=['include','map','model','then','lodash','moment','bluebird','randomstring','ioredis','../../config/utils','../../config/logger','../../config/environment','jayson/promise','client','http','request','info','Variable,\x20%s,\x20%s','request\x20sent','debug','Variable,\x20%s,\x20%s,\x20%s','stringify','error','message','result','catch','ShowVariable','Variable','options','attributes'];(function(_0x2abd13,_0x501317){var _0x5ad645=function(_0x55ae11){while(--_0x55ae11){_0x2abd13['push'](_0x2abd13['shift']());}};_0x5ad645(++_0x501317);}(_0x1cb9,0x14e));var _0x91cb=function(_0x305bc3,_0x108ed7){_0x305bc3=_0x305bc3-0x0;var _0x195016=_0x1cb9[_0x305bc3];return _0x195016;};'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')]('Variable,\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);});});}exports[_0x91cb('0x16')]=function(_0x1cd34b){var _0xcd1a78=this;return new Promise(function(_0x5cc1c3,_0x3fba4f){return db[_0x91cb('0x17')]['find']({'raw':_0x1cd34b[_0x91cb('0x18')]?_0x1cd34b['options']['raw']===undefined?!![]:![]:!![],'where':_0x1cd34b[_0x91cb('0x18')]?_0x1cd34b[_0x91cb('0x18')]['where']||null:null,'attributes':_0x1cd34b['options']?_0x1cd34b['options'][_0x91cb('0x19')]||null:null,'include':_0x1cd34b[_0x91cb('0x18')]?_0x1cd34b[_0x91cb('0x18')][_0x91cb('0x1a')]?_['map'](_0x1cd34b[_0x91cb('0x18')][_0x91cb('0x1a')],function(_0x1fa837){return{'model':db[_0x1fa837['model']],'as':_0x1fa837['as'],'attributes':_0x1fa837[_0x91cb('0x19')],'include':_0x1fa837[_0x91cb('0x1a')]?_[_0x91cb('0x1b')](_0x1fa837[_0x91cb('0x1a')],function(_0x3ca500){return{'model':db[_0x3ca500[_0x91cb('0x1c')]],'as':_0x3ca500['as'],'attributes':_0x3ca500[_0x91cb('0x19')],'include':_0x3ca500[_0x91cb('0x1a')]?_[_0x91cb('0x1b')](_0x3ca500['include'],function(_0x59bf3a){return{'model':db[_0x59bf3a[_0x91cb('0x1c')]],'as':_0x59bf3a['as'],'attributes':_0x59bf3a['attributes']};}):[]};}):[]};}):[]:[]})[_0x91cb('0x1d')](function(_0x34d372){logger[_0x91cb('0xc')]('ShowVariable',_0x1cd34b);logger[_0x91cb('0xf')]('ShowVariable',_0x1cd34b,JSON[_0x91cb('0x11')](_0x34d372));_0x5cc1c3(_0x34d372);})[_0x91cb('0x15')](function(_0x3b3ee6){logger[_0x91cb('0x12')](_0x91cb('0x16'),_0x3b3ee6['message'],_0x1cd34b);_0x3fba4f(_0xcd1a78[_0x91cb('0x12')](0x1f4,_0x3b3ee6['message']));});});};
\ No newline at end of file
index 40adc76..7de9190 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe1db=['canUpdate','fetch','/pull','isAuthenticated','pull','/restart','restart','/migrations','migrations','exports','express','Router','../../components/auth/service','get','index'];(function(_0x42020e,_0x4b92fb){var _0x561551=function(_0xf8216){while(--_0xf8216){_0x42020e['push'](_0x42020e['shift']());}};_0x561551(++_0x4b92fb);}(_0xe1db,0x1ae));var _0xbe1d=function(_0x4bdaec,_0x40765e){_0x4bdaec=_0x4bdaec-0x0;var _0x1aa6d8=_0xe1db[_0x4bdaec];return _0x1aa6d8;};'use strict';var express=require(_0xbe1d('0x0'));var router=express[_0xbe1d('0x1')]();var auth=require(_0xbe1d('0x2'));var controller=require('./version.controller');router[_0xbe1d('0x3')]('/',controller[_0xbe1d('0x4')]);router[_0xbe1d('0x3')]('/fetch',auth['isAuthenticated'](),auth[_0xbe1d('0x5')](),controller[_0xbe1d('0x6')]);router['get']('/reset',auth['isAuthenticated'](),auth['canUpdate'](),controller['reset']);router['get'](_0xbe1d('0x7'),auth[_0xbe1d('0x8')](),auth[_0xbe1d('0x5')](),controller[_0xbe1d('0x9')]);router[_0xbe1d('0x3')](_0xbe1d('0xa'),auth[_0xbe1d('0x8')](),controller[_0xbe1d('0xb')]);router[_0xbe1d('0x3')](_0xbe1d('0xc'),controller[_0xbe1d('0xd')]);module[_0xbe1d('0xe')]=router;
\ No newline at end of file
+var _0x595c=['canUpdate','fetch','reset','get','/pull','pull','/restart','restart','/migrations','migrations','exports','express','../../components/auth/service','./version.controller','index','/fetch','isAuthenticated'];(function(_0x2b10c6,_0x185590){var _0x3789d2=function(_0x272987){while(--_0x272987){_0x2b10c6['push'](_0x2b10c6['shift']());}};_0x3789d2(++_0x185590);}(_0x595c,0x14e));var _0xc595=function(_0x3d71f5,_0x4a29a4){_0x3d71f5=_0x3d71f5-0x0;var _0x53eef4=_0x595c[_0x3d71f5];return _0x53eef4;};'use strict';var express=require(_0xc595('0x0'));var router=express['Router']();var auth=require(_0xc595('0x1'));var controller=require(_0xc595('0x2'));router['get']('/',controller[_0xc595('0x3')]);router['get'](_0xc595('0x4'),auth[_0xc595('0x5')](),auth[_0xc595('0x6')](),controller[_0xc595('0x7')]);router['get']('/reset',auth[_0xc595('0x5')](),auth['canUpdate'](),controller[_0xc595('0x8')]);router[_0xc595('0x9')](_0xc595('0xa'),auth[_0xc595('0x5')](),auth['canUpdate'](),controller[_0xc595('0xb')]);router[_0xc595('0x9')](_0xc595('0xc'),auth[_0xc595('0x5')](),controller[_0xc595('0xd')]);router['get'](_0xc595('0xe'),controller[_0xc595('0xf')]);module[_0xc595('0x10')]=router;
\ No newline at end of file
index e7131c2..1b7bf28 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc006=['Database\x20already\x20up-to-date','umzug','path','lodash','pkginfo','version','compare-versions','child_process','exec','../../mysqldb','../../config/environment','../../config/pm2','../../config/logger','update','simple-git','index','exports','query','latest','tags','2.0.0','status','json','fetch','origin','master','error','info','git\x20fetch','reset','--hard','git\x20reset\x20--hard\x20FETCH_HEAD','pull','npm\x20install\x20--production','restart','motion2','then','pm2\x20restart\x20motion\x20%s','Your\x20system\x20has\x20been\x20restart\x20successfully','catch','migrations','root','server','length','replace','.js','push','sequelize','getQueryInterface','constructor','Migration\x20tried\x20to\x20use\x20old\x20style\x20\x22done\x22\x20callback.\x20Please\x20upgrade\x20to\x20\x22umzug\x22\x20and\x20return\x20a\x20promise\x20instead.','join','map','Database\x20migrated\x20successfully\x20from\x20version\x20','last','UniqueConstraintError'];(function(_0x2fe1fb,_0x2f445b){var _0x52a0b9=function(_0x4e3895){while(--_0x4e3895){_0x2fe1fb['push'](_0x2fe1fb['shift']());}};_0x52a0b9(++_0x2f445b);}(_0xc006,0xa9));var _0x6c00=function(_0x236209,_0x51b840){_0x236209=_0x236209-0x0;var _0x2afd5b=_0xc006[_0x236209];return _0x2afd5b;};'use strict';var Umzug=require(_0x6c00('0x0'));var path=require(_0x6c00('0x1'));var fs=require('fs');var _=require(_0x6c00('0x2'));var pkginfo=require(_0x6c00('0x3'))(module,_0x6c00('0x4'));var compareVersions=require(_0x6c00('0x5'));var exec=require(_0x6c00('0x6'))[_0x6c00('0x7')];var db=require(_0x6c00('0x8'))['db'];var config=require(_0x6c00('0x9'));var pm2=require(_0x6c00('0xa'));var logger=require(_0x6c00('0xb'))(_0x6c00('0xc'));var git=require(_0x6c00('0xd'))(config['root']);exports[_0x6c00('0xe')]=function(_0x6ab812,_0x29d8b7){var _0x3150fa={'current':module[_0x6c00('0xf')][_0x6c00('0x4')],'phonebar':0x2};if(_0x6ab812[_0x6c00('0x10')]&&_0x6ab812[_0x6c00('0x10')][_0x6c00('0x11')]){return git['fetch']()[_0x6c00('0x12')](function(_0x29647f,_0x3dae41){_0x3150fa[_0x6c00('0x11')]=(_0x29647f?module[_0x6c00('0xf')][_0x6c00('0x4')]:_0x3dae41[_0x6c00('0x11')])||_0x6c00('0x13');return _0x29d8b7[_0x6c00('0x14')](0xc8)[_0x6c00('0x15')](_0x3150fa);});}else{return _0x29d8b7[_0x6c00('0x14')](0xc8)[_0x6c00('0x15')](_0x3150fa);}};exports['fetch']=function(_0x425894,_0x3526b4){return git[_0x6c00('0x16')]([_0x6c00('0x17'),_0x6c00('0x18')],function(_0x2d63b9){if(_0x2d63b9){logger[_0x6c00('0x19')](_0x2d63b9);return _0x3526b4[_0x6c00('0x14')](0x1f4)[_0x6c00('0x15')](_0x2d63b9);}logger[_0x6c00('0x1a')](_0x6c00('0x1b'));return _0x3526b4['status'](0xc8)[_0x6c00('0x15')]({'output':'git\x20fetch\x20origin\x20master'});});};exports[_0x6c00('0x1c')]=function(_0x26bb1f,_0x128b44){return git['reset']([_0x6c00('0x1d'),'FETCH_HEAD'],function(_0x1dbe63){if(_0x1dbe63){logger[_0x6c00('0x19')](_0x1dbe63);return _0x128b44[_0x6c00('0x14')](0x1f4)[_0x6c00('0x15')](_0x1dbe63);}logger[_0x6c00('0x1a')](_0x6c00('0x1e'));return _0x128b44['status'](0xc8)['json']({'output':'git\x20reset\x20--hard'});});};exports[_0x6c00('0x1f')]=function(_0x129a21,_0x369e47){exec(_0x6c00('0x20'),function(_0x1caccd,_0x23c27d,_0x316480){logger[_0x6c00('0x1a')](_0x23c27d);logger[_0x6c00('0x1a')](_0x316480);if(_0x1caccd){logger['error'](_0x1caccd);return _0x369e47['status'](0x1f4)[_0x6c00('0x15')](_0x1caccd);}return _0x369e47[_0x6c00('0x14')](0xc8)[_0x6c00('0x15')]({'output':_0x23c27d});});};exports[_0x6c00('0x21')]=function(_0xc7af2b,_0x542b16){return pm2['restart'](_0x6c00('0x22'))[_0x6c00('0x23')](function(_0x54fa07){logger[_0x6c00('0x1a')](_0x6c00('0x24'),_0x54fa07);return _0x542b16[_0x6c00('0x14')](0xc8)[_0x6c00('0x15')]({'output':_0x6c00('0x25')});})[_0x6c00('0x26')](function(_0x4774da){logger['error'](_0x4774da);return _0x542b16[_0x6c00('0x14')](0x1f4)[_0x6c00('0x15')](_0x4774da);});};exports[_0x6c00('0x27')]=function(_0x5996db,_0x2f733a){var _0xb8f8ce=fs['readdirSync'](path['join'](config[_0x6c00('0x28')],_0x6c00('0x29'),_0x6c00('0x27')));var _0x43ed1c=[];for(var _0x35cff8=0x0;_0x35cff8<_0xb8f8ce[_0x6c00('0x2a')];_0x35cff8++){var _0x9d278e=_0xb8f8ce[_0x35cff8][_0x6c00('0x2b')](_0x6c00('0x2c'),'');if(compareVersions(module['exports'][_0x6c00('0x4')],_0x9d278e)===-0x1){_0x43ed1c[_0x6c00('0x2d')](_0x9d278e);}}if(_0x43ed1c[_0x6c00('0x2a')]){var _0x50d738=_0x43ed1c['sort'](compareVersions);var _0x282aa2=new Umzug({'storage':_0x6c00('0x2e'),'storageOptions':{'model':db['Migration'],'modelName':'Migration','columnName':_0x6c00('0x4')},'migrations':{'params':[db['sequelize'][_0x6c00('0x2f')](),db[_0x6c00('0x2e')][_0x6c00('0x30')],function(){throw new Error(_0x6c00('0x31'));}],'path':path[_0x6c00('0x32')](config[_0x6c00('0x28')],_0x6c00('0x29'),_0x6c00('0x27')),'pattern':/\.js$/}});_0x282aa2['up']({'migrations':_[_0x6c00('0x33')](_0x50d738,function(_0x3808fa){return _0x3808fa+_0x6c00('0x2c');})})[_0x6c00('0x23')](function(){return _0x2f733a[_0x6c00('0x14')](0xc8)[_0x6c00('0x15')]({'output':_0x6c00('0x34')+module[_0x6c00('0xf')][_0x6c00('0x4')]+'\x20to\x20'+_[_0x6c00('0x35')](_0x50d738),'migrations':_[_0x6c00('0x32')](_0x50d738)});})[_0x6c00('0x26')](function(_0x153fe8){if(_0x153fe8 instanceof db[_0x6c00('0x2e')][_0x6c00('0x36')]){return _0x2f733a[_0x6c00('0x14')](0xc8)['json']({'output':_0x6c00('0x37')});}else{return _0x2f733a[_0x6c00('0x14')](0x1f4)[_0x6c00('0x15')](_0x153fe8);}});}else{return _0x2f733a['status'](0xc8)[_0x6c00('0x15')]({'output':_0x6c00('0x37')});}};
\ No newline at end of file
+var _0x0700=['info','git\x20reset\x20--hard\x20FETCH_HEAD','git\x20reset\x20--hard','pull','npm\x20install\x20--production','restart','motion2','then','catch','migrations','length','replace','.js','push','sort','sequelize','Migration','getQueryInterface','join','map','Database\x20migrated\x20successfully\x20from\x20version\x20','last','Database\x20already\x20up-to-date','umzug','path','pkginfo','version','child_process','exec','../../mysqldb','../../config/environment','../../config/pm2','../../config/logger','update','root','exports','query','latest','fetch','2.0.0','status','json','error','git\x20fetch','git\x20fetch\x20origin\x20master','reset','--hard','FETCH_HEAD'];(function(_0x522578,_0xd6fa8){var _0x240fbe=function(_0x1438c0){while(--_0x1438c0){_0x522578['push'](_0x522578['shift']());}};_0x240fbe(++_0xd6fa8);}(_0x0700,0x137));var _0x0070=function(_0xeec88a,_0x1edb25){_0xeec88a=_0xeec88a-0x0;var _0x38d217=_0x0700[_0xeec88a];return _0x38d217;};'use strict';var Umzug=require(_0x0070('0x0'));var path=require(_0x0070('0x1'));var fs=require('fs');var _=require('lodash');var pkginfo=require(_0x0070('0x2'))(module,_0x0070('0x3'));var compareVersions=require('compare-versions');var exec=require(_0x0070('0x4'))[_0x0070('0x5')];var db=require(_0x0070('0x6'))['db'];var config=require(_0x0070('0x7'));var pm2=require(_0x0070('0x8'));var logger=require(_0x0070('0x9'))(_0x0070('0xa'));var git=require('simple-git')(config[_0x0070('0xb')]);exports['index']=function(_0x2eccfd,_0x468ec7){var _0x336091={'current':module[_0x0070('0xc')][_0x0070('0x3')],'phonebar':0x2};if(_0x2eccfd[_0x0070('0xd')]&&_0x2eccfd[_0x0070('0xd')][_0x0070('0xe')]){return git[_0x0070('0xf')]()['tags'](function(_0x22eff0,_0x2d2378){_0x336091['latest']=(_0x22eff0?module[_0x0070('0xc')][_0x0070('0x3')]:_0x2d2378['latest'])||_0x0070('0x10');return _0x468ec7[_0x0070('0x11')](0xc8)[_0x0070('0x12')](_0x336091);});}else{return _0x468ec7[_0x0070('0x11')](0xc8)[_0x0070('0x12')](_0x336091);}};exports[_0x0070('0xf')]=function(_0x4bbdd6,_0x261935){return git['fetch'](['origin','master'],function(_0x88f745){if(_0x88f745){logger[_0x0070('0x13')](_0x88f745);return _0x261935[_0x0070('0x11')](0x1f4)[_0x0070('0x12')](_0x88f745);}logger['info'](_0x0070('0x14'));return _0x261935[_0x0070('0x11')](0xc8)[_0x0070('0x12')]({'output':_0x0070('0x15')});});};exports[_0x0070('0x16')]=function(_0x27e32c,_0x4f6a67){return git['reset']([_0x0070('0x17'),_0x0070('0x18')],function(_0xd831e2){if(_0xd831e2){logger[_0x0070('0x13')](_0xd831e2);return _0x4f6a67['status'](0x1f4)[_0x0070('0x12')](_0xd831e2);}logger[_0x0070('0x19')](_0x0070('0x1a'));return _0x4f6a67[_0x0070('0x11')](0xc8)[_0x0070('0x12')]({'output':_0x0070('0x1b')});});};exports[_0x0070('0x1c')]=function(_0x1ffbff,_0x32cdc4){exec(_0x0070('0x1d'),function(_0x14b714,_0x293096,_0x4b5428){logger['info'](_0x293096);logger[_0x0070('0x19')](_0x4b5428);if(_0x14b714){logger[_0x0070('0x13')](_0x14b714);return _0x32cdc4['status'](0x1f4)[_0x0070('0x12')](_0x14b714);}return _0x32cdc4[_0x0070('0x11')](0xc8)[_0x0070('0x12')]({'output':_0x293096});});};exports[_0x0070('0x1e')]=function(_0x572f2f,_0x138ecf){return pm2[_0x0070('0x1e')](_0x0070('0x1f'))[_0x0070('0x20')](function(_0x14f62f){logger[_0x0070('0x19')]('pm2\x20restart\x20motion\x20%s',_0x14f62f);return _0x138ecf[_0x0070('0x11')](0xc8)[_0x0070('0x12')]({'output':'Your\x20system\x20has\x20been\x20restart\x20successfully'});})[_0x0070('0x21')](function(_0x46cb13){logger[_0x0070('0x13')](_0x46cb13);return _0x138ecf[_0x0070('0x11')](0x1f4)[_0x0070('0x12')](_0x46cb13);});};exports[_0x0070('0x22')]=function(_0x4c4142,_0x163c69){var _0x3df829=fs['readdirSync'](path['join'](config[_0x0070('0xb')],'server','migrations'));var _0x1053ac=[];for(var _0x467ee9=0x0;_0x467ee9<_0x3df829[_0x0070('0x23')];_0x467ee9++){var _0x35525f=_0x3df829[_0x467ee9][_0x0070('0x24')](_0x0070('0x25'),'');if(compareVersions(module['exports'][_0x0070('0x3')],_0x35525f)===-0x1){_0x1053ac[_0x0070('0x26')](_0x35525f);}}if(_0x1053ac[_0x0070('0x23')]){var _0x118d5a=_0x1053ac[_0x0070('0x27')](compareVersions);var _0x4f9302=new Umzug({'storage':_0x0070('0x28'),'storageOptions':{'model':db[_0x0070('0x29')],'modelName':_0x0070('0x29'),'columnName':_0x0070('0x3')},'migrations':{'params':[db['sequelize'][_0x0070('0x2a')](),db[_0x0070('0x28')]['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[_0x0070('0x2b')](config[_0x0070('0xb')],'server',_0x0070('0x22')),'pattern':/\.js$/}});_0x4f9302['up']({'migrations':_[_0x0070('0x2c')](_0x118d5a,function(_0x1e9e82){return _0x1e9e82+_0x0070('0x25');})})['then'](function(){return _0x163c69[_0x0070('0x11')](0xc8)[_0x0070('0x12')]({'output':_0x0070('0x2d')+module[_0x0070('0xc')][_0x0070('0x3')]+'\x20to\x20'+_[_0x0070('0x2e')](_0x118d5a),'migrations':_[_0x0070('0x2b')](_0x118d5a)});})['catch'](function(_0x35755a){if(_0x35755a instanceof db[_0x0070('0x28')]['UniqueConstraintError']){return _0x163c69[_0x0070('0x11')](0xc8)[_0x0070('0x12')]({'output':_0x0070('0x2f')});}else{return _0x163c69[_0x0070('0x11')](0x1f4)[_0x0070('0x12')](_0x35755a);}});}else{return _0x163c69['status'](0xc8)['json']({'output':_0x0070('0x2f')});}};
\ No newline at end of file
index b76cab5..f0f04bf 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2de0=['create','put','delete','destroy','exports','multer','path','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./voiceAgentReport.controller','get','isAuthenticated','index','/:id','post'];(function(_0x2fa08a,_0x256a2e){var _0x5b0108=function(_0x57b560){while(--_0x57b560){_0x2fa08a['push'](_0x2fa08a['shift']());}};_0x5b0108(++_0x256a2e);}(_0x2de0,0x8a));var _0x02de=function(_0xf149af,_0x5a85f9){_0xf149af=_0xf149af-0x0;var _0x20ecbb=_0x2de0[_0xf149af];return _0x20ecbb;};'use strict';var multer=require(_0x02de('0x0'));var util=require('util');var path=require(_0x02de('0x1'));var timeout=require('connect-timeout');var express=require(_0x02de('0x2'));var router=express[_0x02de('0x3')]();var fs_extra=require(_0x02de('0x4'));var auth=require(_0x02de('0x5'));var interaction=require(_0x02de('0x6'));var config=require(_0x02de('0x7'));var controller=require(_0x02de('0x8'));router[_0x02de('0x9')]('/',auth[_0x02de('0xa')](),controller[_0x02de('0xb')]);router[_0x02de('0x9')]('/describe',auth['isAuthenticated'](),controller['describe']);router['get'](_0x02de('0xc'),auth[_0x02de('0xa')](),controller['show']);router[_0x02de('0xd')]('/',auth[_0x02de('0xa')](),controller[_0x02de('0xe')]);router[_0x02de('0xf')](_0x02de('0xc'),auth[_0x02de('0xa')](),controller['update']);router[_0x02de('0x10')](_0x02de('0xc'),auth[_0x02de('0xa')](),controller[_0x02de('0x11')]);module[_0x02de('0x12')]=router;
\ No newline at end of file
+var _0xad47=['/:id','show','post','create','put','update','delete','destroy','exports','util','connect-timeout','express','fs-extra','../../components/auth/service','../../config/environment','get','isAuthenticated','index','/describe','describe'];(function(_0x37dbc6,_0x4a777d){var _0x5d636a=function(_0x408529){while(--_0x408529){_0x37dbc6['push'](_0x37dbc6['shift']());}};_0x5d636a(++_0x4a777d);}(_0xad47,0x135));var _0x7ad4=function(_0x39c734,_0x2f3e06){_0x39c734=_0x39c734-0x0;var _0xb2a2f9=_0xad47[_0x39c734];return _0xb2a2f9;};'use strict';var multer=require('multer');var util=require(_0x7ad4('0x0'));var path=require('path');var timeout=require(_0x7ad4('0x1'));var express=require(_0x7ad4('0x2'));var router=express['Router']();var fs_extra=require(_0x7ad4('0x3'));var auth=require(_0x7ad4('0x4'));var interaction=require('../../components/interaction/service');var config=require(_0x7ad4('0x5'));var controller=require('./voiceAgentReport.controller');router[_0x7ad4('0x6')]('/',auth[_0x7ad4('0x7')](),controller[_0x7ad4('0x8')]);router['get'](_0x7ad4('0x9'),auth['isAuthenticated'](),controller[_0x7ad4('0xa')]);router[_0x7ad4('0x6')](_0x7ad4('0xb'),auth['isAuthenticated'](),controller[_0x7ad4('0xc')]);router[_0x7ad4('0xd')]('/',auth[_0x7ad4('0x7')](),controller[_0x7ad4('0xe')]);router[_0x7ad4('0xf')](_0x7ad4('0xb'),auth['isAuthenticated'](),controller[_0x7ad4('0x10')]);router[_0x7ad4('0x11')](_0x7ad4('0xb'),auth[_0x7ad4('0x7')](),controller[_0x7ad4('0x12')]);module[_0x7ad4('0x13')]=router;
\ No newline at end of file
index cc3ed4c..13e5896 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x235b=['FORWARD,\x20BLIND,\x20ATTENDED','sequelize','STRING','DATE','INTEGER','BOOLEAN'];(function(_0x54a5e0,_0x35a2ec){var _0x44f8a6=function(_0xdaec63){while(--_0xdaec63){_0x54a5e0['push'](_0x54a5e0['shift']());}};_0x44f8a6(++_0x35a2ec);}(_0x235b,0x1ed));var _0xb235=function(_0xabdbe0,_0x96a3d){_0xabdbe0=_0xabdbe0-0x0;var _0x5ab376=_0x235b[_0xabdbe0];return _0x5ab376;};'use strict';var Sequelize=require(_0xb235('0x0'));module['exports']={'type':{'type':Sequelize['STRING']},'uniqueid':{'type':Sequelize[_0xb235('0x1')]},'calleridnum':{'type':Sequelize[_0xb235('0x1')]},'calleridname':{'type':Sequelize[_0xb235('0x1')]},'queue':{'type':Sequelize[_0xb235('0x1')]},'interface':{'type':Sequelize[_0xb235('0x1')]},'membername':{'type':Sequelize[_0xb235('0x1')]},'agentcalledAt':{'type':Sequelize['DATE']},'agentconnectAt':{'type':Sequelize[_0xb235('0x2')]},'agentcompleteAt':{'type':Sequelize[_0xb235('0x2')]},'agentringnoanswerAt':{'type':Sequelize[_0xb235('0x2')]},'agentdumpAt':{'type':Sequelize['DATE']},'holdtime':{'type':Sequelize[_0xb235('0x3')]},'agentcomplete':{'type':Sequelize[_0xb235('0x4')],'defaultValue':![]},'agentringnoanswer':{'type':Sequelize[_0xb235('0x4')],'defaultValue':![]},'agentdump':{'type':Sequelize[_0xb235('0x4')],'defaultValue':![]},'talktime':{'type':Sequelize[_0xb235('0x3')]},'agentacw':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'acwtime':{'type':Sequelize['INTEGER']},'reason':{'type':Sequelize[_0xb235('0x1')]},'lastevent':{'type':Sequelize[_0xb235('0x1')]},'channel':{'type':Sequelize[_0xb235('0x1')]},'channelstate':{'type':Sequelize[_0xb235('0x3')]},'channelstatedesc':{'type':Sequelize[_0xb235('0x1')]},'connectedlinenum':{'type':Sequelize[_0xb235('0x1')]},'connectedlinename':{'type':Sequelize[_0xb235('0x1')]},'language':{'type':Sequelize[_0xb235('0x1')]},'accountcode':{'type':Sequelize['STRING']},'context':{'type':Sequelize[_0xb235('0x1')]},'exten':{'type':Sequelize[_0xb235('0x1')]},'priority':{'type':Sequelize[_0xb235('0x1')]},'destchannel':{'type':Sequelize['STRING']},'destchannelstate':{'type':Sequelize[_0xb235('0x3')]},'destchannelstatedesc':{'type':Sequelize['STRING']},'destcalleridnum':{'type':Sequelize[_0xb235('0x1')]},'destcalleridname':{'type':Sequelize[_0xb235('0x1')]},'destconnectedlinenum':{'type':Sequelize[_0xb235('0x1')]},'destconnectedlinename':{'type':Sequelize[_0xb235('0x1')]},'destlanguage':{'type':Sequelize[_0xb235('0x1')]},'destaccountcode':{'type':Sequelize[_0xb235('0x1')]},'destcontext':{'type':Sequelize[_0xb235('0x1')]},'destexten':{'type':Sequelize['STRING']},'destpriority':{'type':Sequelize[_0xb235('0x1')]},'destuniqueid':{'type':Sequelize[_0xb235('0x1')]},'answeredelsewheredestinationuniqueid':{'type':Sequelize[_0xb235('0x1')]},'answeredelsewheremembername':{'type':Sequelize[_0xb235('0x1')]},'transfer':{'type':Sequelize[_0xb235('0x4')],'defaultValue':![]},'transfertype':{'type':Sequelize[_0xb235('0x1')],'comment':_0xb235('0x5')},'transferexten':{'type':Sequelize[_0xb235('0x1')]},'transferuniqueid':{'type':Sequelize[_0xb235('0x1')]},'agententerreason':{'type':Sequelize[_0xb235('0x3')],'defaultValue':0x0}};
\ No newline at end of file
+var _0xb9be=['FORWARD,\x20BLIND,\x20ATTENDED','sequelize','exports','STRING','DATE','BOOLEAN','INTEGER'];(function(_0x57ed17,_0x274a74){var _0x56a432=function(_0x556ea9){while(--_0x556ea9){_0x57ed17['push'](_0x57ed17['shift']());}};_0x56a432(++_0x274a74);}(_0xb9be,0xc5));var _0xeb9b=function(_0x504df1,_0x289598){_0x504df1=_0x504df1-0x0;var _0x1063b5=_0xb9be[_0x504df1];return _0x1063b5;};'use strict';var Sequelize=require(_0xeb9b('0x0'));module[_0xeb9b('0x1')]={'type':{'type':Sequelize[_0xeb9b('0x2')]},'uniqueid':{'type':Sequelize[_0xeb9b('0x2')]},'calleridnum':{'type':Sequelize[_0xeb9b('0x2')]},'calleridname':{'type':Sequelize[_0xeb9b('0x2')]},'queue':{'type':Sequelize[_0xeb9b('0x2')]},'interface':{'type':Sequelize[_0xeb9b('0x2')]},'membername':{'type':Sequelize[_0xeb9b('0x2')]},'agentcalledAt':{'type':Sequelize['DATE']},'agentconnectAt':{'type':Sequelize['DATE']},'agentcompleteAt':{'type':Sequelize[_0xeb9b('0x3')]},'agentringnoanswerAt':{'type':Sequelize[_0xeb9b('0x3')]},'agentdumpAt':{'type':Sequelize[_0xeb9b('0x3')]},'holdtime':{'type':Sequelize['INTEGER']},'agentcomplete':{'type':Sequelize[_0xeb9b('0x4')],'defaultValue':![]},'agentringnoanswer':{'type':Sequelize[_0xeb9b('0x4')],'defaultValue':![]},'agentdump':{'type':Sequelize[_0xeb9b('0x4')],'defaultValue':![]},'talktime':{'type':Sequelize[_0xeb9b('0x5')]},'agentacw':{'type':Sequelize[_0xeb9b('0x4')],'defaultValue':![]},'acwtime':{'type':Sequelize[_0xeb9b('0x5')]},'reason':{'type':Sequelize[_0xeb9b('0x2')]},'lastevent':{'type':Sequelize[_0xeb9b('0x2')]},'channel':{'type':Sequelize[_0xeb9b('0x2')]},'channelstate':{'type':Sequelize['INTEGER']},'channelstatedesc':{'type':Sequelize[_0xeb9b('0x2')]},'connectedlinenum':{'type':Sequelize['STRING']},'connectedlinename':{'type':Sequelize['STRING']},'language':{'type':Sequelize[_0xeb9b('0x2')]},'accountcode':{'type':Sequelize[_0xeb9b('0x2')]},'context':{'type':Sequelize['STRING']},'exten':{'type':Sequelize[_0xeb9b('0x2')]},'priority':{'type':Sequelize[_0xeb9b('0x2')]},'destchannel':{'type':Sequelize[_0xeb9b('0x2')]},'destchannelstate':{'type':Sequelize[_0xeb9b('0x5')]},'destchannelstatedesc':{'type':Sequelize['STRING']},'destcalleridnum':{'type':Sequelize['STRING']},'destcalleridname':{'type':Sequelize['STRING']},'destconnectedlinenum':{'type':Sequelize[_0xeb9b('0x2')]},'destconnectedlinename':{'type':Sequelize[_0xeb9b('0x2')]},'destlanguage':{'type':Sequelize[_0xeb9b('0x2')]},'destaccountcode':{'type':Sequelize['STRING']},'destcontext':{'type':Sequelize['STRING']},'destexten':{'type':Sequelize['STRING']},'destpriority':{'type':Sequelize[_0xeb9b('0x2')]},'destuniqueid':{'type':Sequelize[_0xeb9b('0x2')]},'answeredelsewheredestinationuniqueid':{'type':Sequelize[_0xeb9b('0x2')]},'answeredelsewheremembername':{'type':Sequelize[_0xeb9b('0x2')]},'transfer':{'type':Sequelize[_0xeb9b('0x4')],'defaultValue':![]},'transfertype':{'type':Sequelize[_0xeb9b('0x2')],'comment':_0xeb9b('0x6')},'transferexten':{'type':Sequelize['STRING']},'transferuniqueid':{'type':Sequelize[_0xeb9b('0x2')]},'agententerreason':{'type':Sequelize[_0xeb9b('0x5')],'defaultValue':0x0}};
\ No newline at end of file
index 2b906cb..6ed6988 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(_0x1b6c6d,_0x2983b0){var _0x290d9d=function(_0x5b9779){while(--_0x5b9779){_0x1b6c6d['push'](_0x1b6c6d['shift']());}};_0x290d9d(++_0x2983b0);}(_0xa9e0,0x123));var _0x0a9e=function(_0x3a6efd,_0x2a5102){_0x3a6efd=_0x3a6efd-0x0;var _0x487b9a=_0xa9e0[_0x3a6efd];return _0x487b9a;};'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(_0x39e283,_0x247e6b){var _0x7de89f=function(_0x2f8c50){while(--_0x2f8c50){_0x39e283['push'](_0x39e283['shift']());}};_0x7de89f(++_0x247e6b);}(_0xa9e0,0x123));var _0x0a9e=function(_0x1b828b,_0x344400){_0x1b828b=_0x1b828b-0x0;var _0x98da1a=_0xa9e0[_0x1b828b];return _0x98da1a;};'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 3abe7a2..953ec3e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc090=['define','report_agent','uniqueid','destuniqueid','lodash','util','../../config/logger','api','moment','bluebird','request-promise','path','rimraf','./voiceAgentReport.attributes','exports'];(function(_0x47411e,_0x1f503f){var _0x2b8ae1=function(_0x3d8d03){while(--_0x3d8d03){_0x47411e['push'](_0x47411e['shift']());}};_0x2b8ae1(++_0x1f503f);}(_0xc090,0x112));var _0x0c09=function(_0x4d5bf7,_0x33eeac){_0x4d5bf7=_0x4d5bf7-0x0;var _0x3a5b42=_0xc090[_0x4d5bf7];return _0x3a5b42;};'use strict';var _=require(_0x0c09('0x0'));var util=require(_0x0c09('0x1'));var logger=require(_0x0c09('0x2'))(_0x0c09('0x3'));var moment=require(_0x0c09('0x4'));var BPromise=require(_0x0c09('0x5'));var rp=require(_0x0c09('0x6'));var fs=require('fs');var path=require(_0x0c09('0x7'));var rimraf=require(_0x0c09('0x8'));var config=require('../../config/environment');var attributes=require(_0x0c09('0x9'));module[_0x0c09('0xa')]=function(_0x4f3f48,_0x49a403){return _0x4f3f48[_0x0c09('0xb')]('VoiceAgentReport',attributes,{'tableName':_0x0c09('0xc'),'paranoid':![],'indexes':[{'fields':[_0x0c09('0xd'),_0x0c09('0xe')]}],'timestamps':!![]});};
\ No newline at end of file
+var _0x1cb9=['api','moment','bluebird','path','rimraf','./voiceAgentReport.attributes','exports','define','VoiceAgentReport','uniqueid','lodash','../../config/logger'];(function(_0x50a0c2,_0x4befab){var _0x5ebadd=function(_0x3a3342){while(--_0x3a3342){_0x50a0c2['push'](_0x50a0c2['shift']());}};_0x5ebadd(++_0x4befab);}(_0x1cb9,0x14e));var _0x91cb=function(_0x36fc00,_0x17f537){_0x36fc00=_0x36fc00-0x0;var _0x4aebe9=_0x1cb9[_0x36fc00];return _0x4aebe9;};'use strict';var _=require(_0x91cb('0x0'));var util=require('util');var logger=require(_0x91cb('0x1'))(_0x91cb('0x2'));var moment=require(_0x91cb('0x3'));var BPromise=require(_0x91cb('0x4'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x91cb('0x5'));var rimraf=require(_0x91cb('0x6'));var config=require('../../config/environment');var attributes=require(_0x91cb('0x7'));module[_0x91cb('0x8')]=function(_0x186dc3,_0x28543e){return _0x186dc3[_0x91cb('0x9')](_0x91cb('0xa'),attributes,{'tableName':'report_agent','paranoid':![],'indexes':[{'fields':[_0x91cb('0xb'),'destuniqueid']}],'timestamps':!![]});};
\ No newline at end of file
index 59a7bd8..455714a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xdb9f=['rpc','client','then','info','request\x20sent','VoiceAgentReport,\x20%s,\x20%s,\x20%s','stringify','error','code','VoiceAgentReport,\x20%s,\x20%s','message','catch','body','options','raw','CreateVoiceAgentReport','UpdateVoiceAgentReport','VoiceAgentReport','update','where','attributes','limit','debug','lodash','util','moment','randomstring','../../config/logger'];(function(_0x321bb2,_0x202794){var _0x9c12ed=function(_0x263dd3){while(--_0x263dd3){_0x321bb2['push'](_0x321bb2['shift']());}};_0x9c12ed(++_0x202794);}(_0xdb9f,0x12f));var _0xfdb9=function(_0x2ef44b,_0x553359){_0x2ef44b=_0x2ef44b-0x0;var _0x2405b9=_0xdb9f[_0x2ef44b];return _0x2405b9;};'use strict';var _=require(_0xfdb9('0x0'));var util=require(_0xfdb9('0x1'));var moment=require(_0xfdb9('0x2'));var BPromise=require('bluebird');var rs=require(_0xfdb9('0x3'));var fs=require('fs');var Redis=require('ioredis');var db=require('../../mysqldb')['db'];var utils=require('../../config/utils');var logger=require(_0xfdb9('0x4'))(_0xfdb9('0x5'));var config=require('../../config/environment');var jayson=require('jayson/promise');var client=jayson[_0xfdb9('0x6')]['http']({'port':0x232a});function respondWithRpcPromise(_0x3e1db2,_0x567d9f,_0x26cb3f){return new BPromise(function(_0x14ef43,_0x5ebc3c){return client['request'](_0x3e1db2,_0x26cb3f)[_0xfdb9('0x7')](function(_0x1ed99c){logger[_0xfdb9('0x8')]('VoiceAgentReport,\x20%s,\x20%s',_0x567d9f,_0xfdb9('0x9'));logger['debug'](_0xfdb9('0xa'),_0x567d9f,'request\x20sent',JSON[_0xfdb9('0xb')](_0x1ed99c));if(_0x1ed99c[_0xfdb9('0xc')]){if(_0x1ed99c[_0xfdb9('0xc')][_0xfdb9('0xd')]===0x1f4){logger[_0xfdb9('0xc')](_0xfdb9('0xe'),_0x567d9f,_0x1ed99c['error'][_0xfdb9('0xf')]);return _0x5ebc3c(_0x1ed99c[_0xfdb9('0xc')]['message']);}logger[_0xfdb9('0xc')]('VoiceAgentReport,\x20%s,\x20%s',_0x567d9f,_0x1ed99c[_0xfdb9('0xc')]['message']);return _0x14ef43(_0x1ed99c['error']['message']);}else{logger['info'](_0xfdb9('0xe'),_0x567d9f,_0xfdb9('0x9'));_0x14ef43(_0x1ed99c['result']['message']);}})[_0xfdb9('0x10')](function(_0x21a419){logger[_0xfdb9('0xc')](_0xfdb9('0xe'),_0x567d9f,_0x21a419);_0x5ebc3c(_0x21a419);});});}exports['CreateVoiceAgentReport']=function(_0x179e88){var _0x591642=this;return new Promise(function(_0x428f43,_0x28308e){return db['VoiceAgentReport']['create'](_0x179e88[_0xfdb9('0x11')],{'raw':_0x179e88[_0xfdb9('0x12')]?_0x179e88[_0xfdb9('0x12')][_0xfdb9('0x13')]===undefined?!![]:![]:!![]})[_0xfdb9('0x7')](function(_0x519ebe){logger['info'](_0xfdb9('0x14'),_0x179e88);logger['debug'](_0xfdb9('0x14'),_0x179e88,JSON[_0xfdb9('0xb')](_0x519ebe));_0x428f43(_0x519ebe);})[_0xfdb9('0x10')](function(_0x2a00f3){logger['error']('CreateVoiceAgentReport',_0x2a00f3[_0xfdb9('0xf')],_0x179e88);_0x28308e(_0x591642[_0xfdb9('0xc')](0x1f4,_0x2a00f3[_0xfdb9('0xf')]));});});};exports[_0xfdb9('0x15')]=function(_0x59b2b8){var _0x502bac=this;return new Promise(function(_0x670739,_0x4a77f9){return db[_0xfdb9('0x16')][_0xfdb9('0x17')](_0x59b2b8[_0xfdb9('0x11')],{'raw':_0x59b2b8[_0xfdb9('0x12')]?_0x59b2b8[_0xfdb9('0x12')][_0xfdb9('0x13')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x59b2b8[_0xfdb9('0x12')]?_0x59b2b8[_0xfdb9('0x12')][_0xfdb9('0x18')]||null:null,'attributes':_0x59b2b8['options']?_0x59b2b8[_0xfdb9('0x12')][_0xfdb9('0x19')]||null:null,'limit':_0x59b2b8[_0xfdb9('0x12')]?_0x59b2b8[_0xfdb9('0x12')][_0xfdb9('0x1a')]||null:null})['then'](function(_0x566cc3){logger[_0xfdb9('0x8')](_0xfdb9('0x15'),_0x59b2b8);logger[_0xfdb9('0x1b')](_0xfdb9('0x15'),_0x59b2b8,JSON[_0xfdb9('0xb')](_0x566cc3));_0x670739(_0x566cc3);})['catch'](function(_0x29ef8a){logger['error'](_0xfdb9('0x15'),_0x29ef8a['message'],_0x59b2b8);_0x4a77f9(_0x502bac[_0xfdb9('0xc')](0x1f4,_0x29ef8a[_0xfdb9('0xf')]));});});};
\ No newline at end of file
+var _0x0e67=['raw','then','catch','UpdateVoiceAgentReport','update','where','attributes','limit','lodash','util','randomstring','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','request','info','VoiceAgentReport,\x20%s,\x20%s','request\x20sent','debug','VoiceAgentReport,\x20%s,\x20%s,\x20%s','code','error','message','result','CreateVoiceAgentReport','VoiceAgentReport','create','body','options'];(function(_0x820843,_0x4b6f7e){var _0x2077c2=function(_0x26e103){while(--_0x26e103){_0x820843['push'](_0x820843['shift']());}};_0x2077c2(++_0x4b6f7e);}(_0x0e67,0xe8));var _0x70e6=function(_0x13a690,_0x734e){_0x13a690=_0x13a690-0x0;var _0x4e085f=_0x0e67[_0x13a690];return _0x4e085f;};'use strict';var _=require(_0x70e6('0x0'));var util=require(_0x70e6('0x1'));var moment=require('moment');var BPromise=require('bluebird');var rs=require(_0x70e6('0x2'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x70e6('0x3'))['db'];var utils=require(_0x70e6('0x4'));var logger=require(_0x70e6('0x5'))(_0x70e6('0x6'));var config=require(_0x70e6('0x7'));var jayson=require(_0x70e6('0x8'));var client=jayson['client']['http']({'port':0x232a});function respondWithRpcPromise(_0x2a17b8,_0x3e7bbc,_0x2ea408){return new BPromise(function(_0x318d83,_0x2b25c4){return client[_0x70e6('0x9')](_0x2a17b8,_0x2ea408)['then'](function(_0x3b3922){logger[_0x70e6('0xa')](_0x70e6('0xb'),_0x3e7bbc,_0x70e6('0xc'));logger[_0x70e6('0xd')](_0x70e6('0xe'),_0x3e7bbc,_0x70e6('0xc'),JSON['stringify'](_0x3b3922));if(_0x3b3922['error']){if(_0x3b3922['error'][_0x70e6('0xf')]===0x1f4){logger[_0x70e6('0x10')](_0x70e6('0xb'),_0x3e7bbc,_0x3b3922['error'][_0x70e6('0x11')]);return _0x2b25c4(_0x3b3922[_0x70e6('0x10')][_0x70e6('0x11')]);}logger['error'](_0x70e6('0xb'),_0x3e7bbc,_0x3b3922[_0x70e6('0x10')][_0x70e6('0x11')]);return _0x318d83(_0x3b3922['error'][_0x70e6('0x11')]);}else{logger[_0x70e6('0xa')](_0x70e6('0xb'),_0x3e7bbc,_0x70e6('0xc'));_0x318d83(_0x3b3922[_0x70e6('0x12')][_0x70e6('0x11')]);}})['catch'](function(_0x2d1923){logger[_0x70e6('0x10')](_0x70e6('0xb'),_0x3e7bbc,_0x2d1923);_0x2b25c4(_0x2d1923);});});}exports[_0x70e6('0x13')]=function(_0x1132c0){var _0x57d6d3=this;return new Promise(function(_0x2ed7b8,_0xd92e17){return db[_0x70e6('0x14')][_0x70e6('0x15')](_0x1132c0[_0x70e6('0x16')],{'raw':_0x1132c0[_0x70e6('0x17')]?_0x1132c0[_0x70e6('0x17')][_0x70e6('0x18')]===undefined?!![]:![]:!![]})[_0x70e6('0x19')](function(_0x5e0e06){logger['info'](_0x70e6('0x13'),_0x1132c0);logger[_0x70e6('0xd')](_0x70e6('0x13'),_0x1132c0,JSON['stringify'](_0x5e0e06));_0x2ed7b8(_0x5e0e06);})[_0x70e6('0x1a')](function(_0x4a22de){logger[_0x70e6('0x10')](_0x70e6('0x13'),_0x4a22de[_0x70e6('0x11')],_0x1132c0);_0xd92e17(_0x57d6d3[_0x70e6('0x10')](0x1f4,_0x4a22de[_0x70e6('0x11')]));});});};exports[_0x70e6('0x1b')]=function(_0x4d4054){var _0x14212b=this;return new Promise(function(_0xcbec20,_0x581ddd){return db['VoiceAgentReport'][_0x70e6('0x1c')](_0x4d4054[_0x70e6('0x16')],{'raw':_0x4d4054[_0x70e6('0x17')]?_0x4d4054['options'][_0x70e6('0x18')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x4d4054[_0x70e6('0x17')]?_0x4d4054[_0x70e6('0x17')][_0x70e6('0x1d')]||null:null,'attributes':_0x4d4054[_0x70e6('0x17')]?_0x4d4054[_0x70e6('0x17')][_0x70e6('0x1e')]||null:null,'limit':_0x4d4054['options']?_0x4d4054['options'][_0x70e6('0x1f')]||null:null})[_0x70e6('0x19')](function(_0x382962){logger[_0x70e6('0xa')](_0x70e6('0x1b'),_0x4d4054);logger[_0x70e6('0xd')](_0x70e6('0x1b'),_0x4d4054,JSON['stringify'](_0x382962));_0xcbec20(_0x382962);})[_0x70e6('0x1a')](function(_0x44a2eb){logger[_0x70e6('0x10')](_0x70e6('0x1b'),_0x44a2eb['message'],_0x4d4054);_0x581ddd(_0x14212b[_0x70e6('0x10')](0x1f4,_0x44a2eb[_0x70e6('0x11')]));});});};
\ No newline at end of file
index 04638c2..72d3af5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb4c7=['post','create','put','update','destroy','exports','multer','util','path','connect-timeout','express','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./voiceCallReport.controller','isAuthenticated','index','get','describe','/:id','show'];(function(_0x1f406c,_0x293390){var _0x39b122=function(_0x5ed21b){while(--_0x5ed21b){_0x1f406c['push'](_0x1f406c['shift']());}};_0x39b122(++_0x293390);}(_0xb4c7,0x1ea));var _0x7b4c=function(_0x177f78,_0x268830){_0x177f78=_0x177f78-0x0;var _0x41a6b7=_0xb4c7[_0x177f78];return _0x41a6b7;};'use strict';var multer=require(_0x7b4c('0x0'));var util=require(_0x7b4c('0x1'));var path=require(_0x7b4c('0x2'));var timeout=require(_0x7b4c('0x3'));var express=require(_0x7b4c('0x4'));var router=express['Router']();var fs_extra=require(_0x7b4c('0x5'));var auth=require(_0x7b4c('0x6'));var interaction=require(_0x7b4c('0x7'));var config=require(_0x7b4c('0x8'));var controller=require(_0x7b4c('0x9'));router['get']('/',auth[_0x7b4c('0xa')](),controller[_0x7b4c('0xb')]);router[_0x7b4c('0xc')]('/describe',auth[_0x7b4c('0xa')](),controller[_0x7b4c('0xd')]);router['get'](_0x7b4c('0xe'),auth[_0x7b4c('0xa')](),controller[_0x7b4c('0xf')]);router[_0x7b4c('0x10')]('/',auth[_0x7b4c('0xa')](),controller[_0x7b4c('0x11')]);router[_0x7b4c('0x12')](_0x7b4c('0xe'),auth[_0x7b4c('0xa')](),controller[_0x7b4c('0x13')]);router['delete']('/:id',auth[_0x7b4c('0xa')](),controller[_0x7b4c('0x14')]);module[_0x7b4c('0x15')]=router;
\ No newline at end of file
+var _0xe5b3=['../../config/environment','./voiceCallReport.controller','get','index','isAuthenticated','describe','/:id','post','create','put','update','destroy','exports','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service'];(function(_0x2c74b9,_0xcbfb24){var _0x3e50cd=function(_0x1381d8){while(--_0x1381d8){_0x2c74b9['push'](_0x2c74b9['shift']());}};_0x3e50cd(++_0xcbfb24);}(_0xe5b3,0x133));var _0x3e5b=function(_0x53b4d7,_0x524015){_0x53b4d7=_0x53b4d7-0x0;var _0x4f2cd5=_0xe5b3[_0x53b4d7];return _0x4f2cd5;};'use strict';var multer=require('multer');var util=require(_0x3e5b('0x0'));var path=require(_0x3e5b('0x1'));var timeout=require(_0x3e5b('0x2'));var express=require(_0x3e5b('0x3'));var router=express[_0x3e5b('0x4')]();var fs_extra=require(_0x3e5b('0x5'));var auth=require(_0x3e5b('0x6'));var interaction=require(_0x3e5b('0x7'));var config=require(_0x3e5b('0x8'));var controller=require(_0x3e5b('0x9'));router[_0x3e5b('0xa')]('/',auth['isAuthenticated'](),controller[_0x3e5b('0xb')]);router[_0x3e5b('0xa')]('/describe',auth[_0x3e5b('0xc')](),controller[_0x3e5b('0xd')]);router[_0x3e5b('0xa')](_0x3e5b('0xe'),auth['isAuthenticated'](),controller['show']);router[_0x3e5b('0xf')]('/',auth[_0x3e5b('0xc')](),controller[_0x3e5b('0x10')]);router[_0x3e5b('0x11')](_0x3e5b('0xe'),auth['isAuthenticated'](),controller[_0x3e5b('0x12')]);router['delete'](_0x3e5b('0xe'),auth[_0x3e5b('0xc')](),controller[_0x3e5b('0x13')]);module[_0x3e5b('0x14')]=router;
\ No newline at end of file
index 99b31af..cd34868 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x51f9=['outbound-fax','dialer','STRING','TEXT','DATE','INTEGER','sequelize','exports','ENUM','inbound','internal','inbound-fax'];(function(_0xcfeaee,_0x13b10f){var _0x39196c=function(_0x5d061d){while(--_0x5d061d){_0xcfeaee['push'](_0xcfeaee['shift']());}};_0x39196c(++_0x13b10f);}(_0x51f9,0x132));var _0x951f=function(_0xd39959,_0x302d09){_0xd39959=_0xd39959-0x0;var _0x1ff69c=_0x51f9[_0xd39959];return _0x1ff69c;};'use strict';var Sequelize=require(_0x951f('0x0'));module[_0x951f('0x1')]={'uniqueid':{'type':Sequelize['STRING']},'type':{'type':Sequelize[_0x951f('0x2')](_0x951f('0x3'),_0x951f('0x4'),'outbound',_0x951f('0x5'),_0x951f('0x6'),_0x951f('0x7'))},'tag':{'type':Sequelize[_0x951f('0x8')]},'accountcode':{'type':Sequelize[_0x951f('0x8')]},'source':{'type':Sequelize[_0x951f('0x8')]},'destination':{'type':Sequelize[_0x951f('0x8')]},'destinationcontext':{'type':Sequelize['STRING']},'callerid':{'type':Sequelize[_0x951f('0x8')]},'channel':{'type':Sequelize[_0x951f('0x8')]},'destinationchannel':{'type':Sequelize[_0x951f('0x8')]},'lastapplication':{'type':Sequelize[_0x951f('0x8')]},'lastdata':{'type':Sequelize[_0x951f('0x9')]},'starttime':{'type':Sequelize[_0x951f('0xa')]},'systemanswertime':{'type':Sequelize[_0x951f('0xa')]},'answertime':{'type':Sequelize[_0x951f('0xa')]},'endtime':{'type':Sequelize[_0x951f('0xa')]},'duration':{'type':Sequelize[_0x951f('0xb')]},'billableseconds':{'type':Sequelize[_0x951f('0xb')]},'mohtime':{'type':Sequelize[_0x951f('0xb')],'defaultValue':0x0},'disposition':{'type':Sequelize[_0x951f('0x8')]},'amaflags':{'type':Sequelize[_0x951f('0x8')]},'userfield':{'type':Sequelize[_0x951f('0x8')]},'userDisposition':{'type':Sequelize[_0x951f('0x8')]},'userSecondDisposition':{'type':Sequelize['STRING']},'userThirdDisposition':{'type':Sequelize['STRING']},'note':{'type':Sequelize[_0x951f('0x8')]},'prefix':{'type':Sequelize[_0x951f('0x8')]},'routeid':{'type':Sequelize[_0x951f('0xb')]},'sipcallid':{'type':Sequelize['STRING']}};
\ No newline at end of file
+var _0xbecf=['inbound','internal','inbound-fax','outbound-fax','dialer','TEXT','DATE','INTEGER','STRING','ENUM'];(function(_0x529f1c,_0x437ed1){var _0x4d57ab=function(_0x39d479){while(--_0x39d479){_0x529f1c['push'](_0x529f1c['shift']());}};_0x4d57ab(++_0x437ed1);}(_0xbecf,0x15c));var _0xfbec=function(_0x30de51,_0x3f76f8){_0x30de51=_0x30de51-0x0;var _0xf7b237=_0xbecf[_0x30de51];return _0xf7b237;};'use strict';var Sequelize=require('sequelize');module['exports']={'uniqueid':{'type':Sequelize[_0xfbec('0x0')]},'type':{'type':Sequelize[_0xfbec('0x1')](_0xfbec('0x2'),_0xfbec('0x3'),'outbound',_0xfbec('0x4'),_0xfbec('0x5'),_0xfbec('0x6'))},'tag':{'type':Sequelize[_0xfbec('0x0')]},'accountcode':{'type':Sequelize[_0xfbec('0x0')]},'source':{'type':Sequelize['STRING']},'destination':{'type':Sequelize[_0xfbec('0x0')]},'destinationcontext':{'type':Sequelize[_0xfbec('0x0')]},'callerid':{'type':Sequelize[_0xfbec('0x0')]},'channel':{'type':Sequelize[_0xfbec('0x0')]},'destinationchannel':{'type':Sequelize[_0xfbec('0x0')]},'lastapplication':{'type':Sequelize[_0xfbec('0x0')]},'lastdata':{'type':Sequelize[_0xfbec('0x7')]},'starttime':{'type':Sequelize[_0xfbec('0x8')]},'systemanswertime':{'type':Sequelize[_0xfbec('0x8')]},'answertime':{'type':Sequelize['DATE']},'endtime':{'type':Sequelize['DATE']},'duration':{'type':Sequelize['INTEGER']},'billableseconds':{'type':Sequelize[_0xfbec('0x9')]},'mohtime':{'type':Sequelize[_0xfbec('0x9')],'defaultValue':0x0},'disposition':{'type':Sequelize[_0xfbec('0x0')]},'amaflags':{'type':Sequelize[_0xfbec('0x0')]},'userfield':{'type':Sequelize[_0xfbec('0x0')]},'userDisposition':{'type':Sequelize['STRING']},'userSecondDisposition':{'type':Sequelize[_0xfbec('0x0')]},'userThirdDisposition':{'type':Sequelize[_0xfbec('0x0')]},'note':{'type':Sequelize[_0xfbec('0x0')]},'prefix':{'type':Sequelize[_0xfbec('0x0')]},'routeid':{'type':Sequelize['INTEGER']},'sipcallid':{'type':Sequelize[_0xfbec('0x0')]}};
\ No newline at end of file
index a3968d1..9f78683 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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(_0x2272b5,_0x362458){var _0x110156=function(_0x5c2e32){while(--_0x5c2e32){_0x2272b5['push'](_0x2272b5['shift']());}};_0x110156(++_0x362458);}(_0x2ef3,0xba));var _0x32ef=function(_0x5c85a6,_0x8f6702){_0x5c85a6=_0x5c85a6-0x0;var _0x2b64b0=_0x2ef3[_0x5c85a6];return _0x2b64b0;};'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
+var _0x5f66=['../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/license/util','sendStatus','status','end','json','undefined','limit','count','offset','Content-Range','apply','reject','save','destroy','then','error','name','send','index','map','VoiceCallReport','rawAttributes','fieldName','model','keys','query','filters','intersection','fields','attributes','length','hasOwnProperty','nolimit','order','sort','filter','merge','type','VIRTUAL','includeAll','include','fullname','alias','User','rows','catch','show','params','find','create','body','describe','uniqueid','rimraf','fast-json-patch','request-promise','moment','bluebird','mustache','path','to-csv','ejs','squel','crypto','jsforce','desk.js','querystring','../../components/auth/service','../../components/parsers/qs'];(function(_0x1035c1,_0x2d8583){var _0x308d67=function(_0x58ddb6){while(--_0x58ddb6){_0x1035c1['push'](_0x1035c1['shift']());}};_0x308d67(++_0x2d8583);}(_0x5f66,0x1a0));var _0x65f6=function(_0x278e3c,_0x1c9cfd){_0x278e3c=_0x278e3c-0x0;var _0x3e2d9b=_0x5f66[_0x278e3c];return _0x3e2d9b;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x65f6('0x0'));var zipdir=require('zip-dir');var jsonpatch=require(_0x65f6('0x1'));var rp=require(_0x65f6('0x2'));var moment=require(_0x65f6('0x3'));var BPromise=require(_0x65f6('0x4'));var Mustache=require(_0x65f6('0x5'));var util=require('util');var path=require(_0x65f6('0x6'));var sox=require('sox');var csv=require(_0x65f6('0x7'));var ejs=require(_0x65f6('0x8'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require('lodash');var squel=require(_0x65f6('0x9'));var crypto=require(_0x65f6('0xa'));var jsforce=require(_0x65f6('0xb'));var deskjs=require(_0x65f6('0xc'));var toCsv=require(_0x65f6('0x7'));var querystring=require(_0x65f6('0xd'));var Papa=require('papaparse');var Redis=require('ioredis');var authService=require(_0x65f6('0xe'));var qs=require(_0x65f6('0xf'));var as=require(_0x65f6('0x10'));var hardwareService=require(_0x65f6('0x11'));var logger=require('../../config/logger')(_0x65f6('0x12'));var utils=require('../../config/utils');var config=require('../../config/environment');var licenseUtil=require(_0x65f6('0x13'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x419819,_0x4862a5){_0x4862a5=_0x4862a5||0xcc;return function(_0x2f964a){if(_0x2f964a){return _0x419819[_0x65f6('0x14')](_0x4862a5);}return _0x419819[_0x65f6('0x15')](_0x4862a5)[_0x65f6('0x16')]();};}function respondWithResult(_0x369f96,_0x1d29fd){_0x1d29fd=_0x1d29fd||0xc8;return function(_0x44144b){if(_0x44144b){return _0x369f96[_0x65f6('0x15')](_0x1d29fd)[_0x65f6('0x17')](_0x44144b);}};}function respondWithFilteredResult(_0x3440af,_0x59154e){return function(_0x19b9ff){if(_0x19b9ff){var _0x49a913=typeof _0x59154e['offset']===_0x65f6('0x18')&&typeof _0x59154e[_0x65f6('0x19')]===_0x65f6('0x18');var _0x1c955c=_0x19b9ff[_0x65f6('0x1a')];var _0x1f974c=_0x49a913?0x0:_0x59154e[_0x65f6('0x1b')];var _0x18380e=_0x49a913?_0x19b9ff['count']:_0x59154e['offset']+_0x59154e[_0x65f6('0x19')];var _0x5b4055;if(_0x18380e>=_0x1c955c){_0x18380e=_0x1c955c;_0x5b4055=0xc8;}else{_0x5b4055=0xce;}_0x3440af['status'](_0x5b4055);return _0x3440af['set'](_0x65f6('0x1c'),_0x1f974c+'-'+_0x18380e+'/'+_0x1c955c)[_0x65f6('0x17')](_0x19b9ff);}return null;};}function patchUpdates(_0x5114a4){return function(_0x39e19f){try{jsonpatch[_0x65f6('0x1d')](_0x39e19f,_0x5114a4,!![]);}catch(_0xbee6a4){return BPromise[_0x65f6('0x1e')](_0xbee6a4);}return _0x39e19f[_0x65f6('0x1f')]();};}function saveUpdates(_0xc139c2,_0x581374){return function(_0x197a49){if(_0x197a49){return _0x197a49['update'](_0xc139c2)['then'](function(_0x212247){return _0x212247;});}return null;};}function removeEntity(_0xd173f4,_0x524e42){return function(_0x1eeaaa){if(_0x1eeaaa){return _0x1eeaaa[_0x65f6('0x20')]()[_0x65f6('0x21')](function(){_0xd173f4[_0x65f6('0x15')](0xcc)['end']();});}};}function handleEntityNotFound(_0x9d7bb0,_0x59ea32){return function(_0x20a161){if(!_0x20a161){_0x9d7bb0['sendStatus'](0x194);}return _0x20a161;};}function handleError(_0x5cb131,_0x4fde2f){_0x4fde2f=_0x4fde2f||0x1f4;return function(_0x29abdb){logger[_0x65f6('0x22')](_0x29abdb['stack']);if(_0x29abdb[_0x65f6('0x23')]){delete _0x29abdb[_0x65f6('0x23')];}_0x5cb131['status'](_0x4fde2f)[_0x65f6('0x24')](_0x29abdb);};}exports[_0x65f6('0x25')]=function(_0x28d0df,_0x559330){var _0x4ac04b={},_0x488d36={},_0x266cfe={'count':0x0,'rows':[]};var _0x3c032f=_[_0x65f6('0x26')](db[_0x65f6('0x27')][_0x65f6('0x28')],function(_0x14a387){return{'name':_0x14a387[_0x65f6('0x29')],'type':_0x14a387['type']['key']};});_0x488d36[_0x65f6('0x2a')]=_[_0x65f6('0x26')](_0x3c032f,'name');_0x488d36['query']=_[_0x65f6('0x2b')](_0x28d0df[_0x65f6('0x2c')]);_0x488d36[_0x65f6('0x2d')]=_[_0x65f6('0x2e')](_0x488d36[_0x65f6('0x2a')],_0x488d36[_0x65f6('0x2c')]);_0x4ac04b['attributes']=_[_0x65f6('0x2e')](_0x488d36[_0x65f6('0x2a')],qs[_0x65f6('0x2f')](_0x28d0df['query'][_0x65f6('0x2f')]));_0x4ac04b[_0x65f6('0x30')]=_0x4ac04b[_0x65f6('0x30')][_0x65f6('0x31')]?_0x4ac04b[_0x65f6('0x30')]:_0x488d36[_0x65f6('0x2a')];if(!_0x28d0df['query'][_0x65f6('0x32')](_0x65f6('0x33'))){_0x4ac04b['limit']=qs[_0x65f6('0x19')](_0x28d0df['query'][_0x65f6('0x19')]);_0x4ac04b['offset']=qs[_0x65f6('0x1b')](_0x28d0df[_0x65f6('0x2c')]['offset']);}_0x4ac04b[_0x65f6('0x34')]=qs[_0x65f6('0x35')](_0x28d0df[_0x65f6('0x2c')]['sort']);_0x4ac04b['where']=qs[_0x65f6('0x2d')](_['pick'](_0x28d0df[_0x65f6('0x2c')],_0x488d36['filters']),_0x3c032f);if(_0x28d0df[_0x65f6('0x2c')][_0x65f6('0x36')]){_0x4ac04b['where']=_[_0x65f6('0x37')](_0x4ac04b['where'],{'$or':_['map'](_0x3c032f,function(_0x71b16b){if(_0x71b16b[_0x65f6('0x38')]!==_0x65f6('0x39')){var _0x313be5={};_0x313be5[_0x71b16b[_0x65f6('0x23')]]={'$like':'%'+_0x28d0df[_0x65f6('0x2c')][_0x65f6('0x36')]+'%'};return _0x313be5;}})});}_0x4ac04b=_[_0x65f6('0x37')]({},_0x4ac04b,_0x28d0df['options']);var _0x3aa254={'where':_0x4ac04b['where']};return db[_0x65f6('0x27')][_0x65f6('0x1a')](_0x3aa254)[_0x65f6('0x21')](function(_0x2ea7f7){_0x266cfe['count']=_0x2ea7f7;if(_0x28d0df[_0x65f6('0x2c')][_0x65f6('0x3a')]){_0x4ac04b[_0x65f6('0x3b')]=[{'attributes':['id',_0x65f6('0x23'),_0x65f6('0x3c'),_0x65f6('0x3d')],'model':db[_0x65f6('0x3e')],'as':_0x65f6('0x3e')}];}return db[_0x65f6('0x27')]['findAll'](_0x4ac04b);})[_0x65f6('0x21')](function(_0x400ed2){_0x266cfe[_0x65f6('0x3f')]=_0x400ed2;return _0x266cfe;})[_0x65f6('0x21')](respondWithFilteredResult(_0x559330,_0x4ac04b))[_0x65f6('0x40')](handleError(_0x559330,null));};exports[_0x65f6('0x41')]=function(_0xe0b72d,_0x2e91e8){var _0x461393={'raw':!![],'where':{'id':_0xe0b72d[_0x65f6('0x42')]['id']}},_0x2abbed={};_0x2abbed[_0x65f6('0x2a')]=_[_0x65f6('0x2b')](db[_0x65f6('0x27')][_0x65f6('0x28')]);_0x2abbed[_0x65f6('0x2c')]=_['keys'](_0xe0b72d[_0x65f6('0x2c')]);_0x2abbed[_0x65f6('0x2d')]=_[_0x65f6('0x2e')](_0x2abbed[_0x65f6('0x2a')],_0x2abbed['query']);_0x461393[_0x65f6('0x30')]=_[_0x65f6('0x2e')](_0x2abbed[_0x65f6('0x2a')],qs['fields'](_0xe0b72d[_0x65f6('0x2c')][_0x65f6('0x2f')]));_0x461393[_0x65f6('0x30')]=_0x461393[_0x65f6('0x30')]['length']?_0x461393[_0x65f6('0x30')]:_0x2abbed['model'];if(_0xe0b72d[_0x65f6('0x2c')][_0x65f6('0x3a')]){_0x461393['include']=[{'all':!![]}];}_0x461393=_[_0x65f6('0x37')]({},_0x461393,_0xe0b72d['options']);return db[_0x65f6('0x27')][_0x65f6('0x43')](_0x461393)[_0x65f6('0x21')](handleEntityNotFound(_0x2e91e8,null))[_0x65f6('0x21')](respondWithResult(_0x2e91e8,null))[_0x65f6('0x40')](handleError(_0x2e91e8,null));};exports[_0x65f6('0x44')]=function(_0x4d30c5,_0x51bf6c){return db[_0x65f6('0x27')][_0x65f6('0x44')](_0x4d30c5[_0x65f6('0x45')],{})[_0x65f6('0x21')](respondWithResult(_0x51bf6c,0xc9))[_0x65f6('0x40')](handleError(_0x51bf6c,null));};exports[_0x65f6('0x20')]=function(_0x149c28,_0x41690c){return db[_0x65f6('0x27')]['find']({'where':{'id':_0x149c28[_0x65f6('0x42')]['id']}})[_0x65f6('0x21')](handleEntityNotFound(_0x41690c,null))[_0x65f6('0x21')](removeEntity(_0x41690c,null))['catch'](handleError(_0x41690c,null));};exports[_0x65f6('0x46')]=function(_0x42d453,_0x49ba5a){return db[_0x65f6('0x27')][_0x65f6('0x46')]()['then'](respondWithResult(_0x49ba5a,null))[_0x65f6('0x40')](handleError(_0x49ba5a,null));};exports['update']=function(_0x247be3,_0x3b241f){if(_0x247be3[_0x65f6('0x45')]['uniqueid']){delete _0x247be3[_0x65f6('0x45')][_0x65f6('0x47')];}return db['VoiceCallReport'][_0x65f6('0x43')]({'where':{'uniqueid':_0x247be3[_0x65f6('0x42')]['id'],'UserId':{'$or':[null,_0x247be3['user']['id']]}}})[_0x65f6('0x21')](handleEntityNotFound(_0x3b241f,null))[_0x65f6('0x21')](saveUpdates(_0x247be3[_0x65f6('0x45')],null))[_0x65f6('0x21')](respondWithResult(_0x3b241f,null))[_0x65f6('0x40')](handleError(_0x3b241f,null));};
\ No newline at end of file
index 945476d..d9b5fcd 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1e31=['util','../../config/logger','api','moment','rimraf','../../config/environment','./voiceCallReport.attributes','define','VoiceCallReport','report_call','uniqueid','lodash'];(function(_0x39da5f,_0xeae36a){var _0x4b9844=function(_0x43b489){while(--_0x43b489){_0x39da5f['push'](_0x39da5f['shift']());}};_0x4b9844(++_0xeae36a);}(_0x1e31,0x113));var _0x11e3=function(_0x6e3633,_0x45e50f){_0x6e3633=_0x6e3633-0x0;var _0x35e118=_0x1e31[_0x6e3633];return _0x35e118;};'use strict';var _=require(_0x11e3('0x0'));var util=require(_0x11e3('0x1'));var logger=require(_0x11e3('0x2'))(_0x11e3('0x3'));var moment=require(_0x11e3('0x4'));var BPromise=require('bluebird');var rp=require('request-promise');var fs=require('fs');var path=require('path');var rimraf=require(_0x11e3('0x5'));var config=require(_0x11e3('0x6'));var attributes=require(_0x11e3('0x7'));module['exports']=function(_0x5d76dd,_0x15973b){return _0x5d76dd[_0x11e3('0x8')](_0x11e3('0x9'),attributes,{'tableName':_0x11e3('0xa'),'paranoid':![],'indexes':[{'fields':[_0x11e3('0xb')]}],'timestamps':!![]});};
\ No newline at end of file
+var _0x7284=['../../config/logger','api','moment','bluebird','request-promise','path','./voiceCallReport.attributes','exports','define','VoiceCallReport','report_call','uniqueid','lodash'];(function(_0x411add,_0x1aed38){var _0x238242=function(_0x4a1cd5){while(--_0x4a1cd5){_0x411add['push'](_0x411add['shift']());}};_0x238242(++_0x1aed38);}(_0x7284,0x9b));var _0x4728=function(_0x5897c0,_0x588caf){_0x5897c0=_0x5897c0-0x0;var _0x530488=_0x7284[_0x5897c0];return _0x530488;};'use strict';var _=require(_0x4728('0x0'));var util=require('util');var logger=require(_0x4728('0x1'))(_0x4728('0x2'));var moment=require(_0x4728('0x3'));var BPromise=require(_0x4728('0x4'));var rp=require(_0x4728('0x5'));var fs=require('fs');var path=require(_0x4728('0x6'));var rimraf=require('rimraf');var config=require('../../config/environment');var attributes=require(_0x4728('0x7'));module[_0x4728('0x8')]=function(_0x20a72e,_0x4698a9){return _0x20a72e[_0x4728('0x9')](_0x4728('0xa'),attributes,{'tableName':_0x4728('0xb'),'paranoid':![],'indexes':[{'fields':[_0x4728('0xc')]}],'timestamps':!![]});};
\ No newline at end of file
index 937884e..20241c2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0036=['rpc','../../config/environment','jayson/promise','client','http','request','then','info','VoiceCallReport,\x20%s,\x20%s','request\x20sent','debug','stringify','error','code','message','catch','GetVoiceCallReport','findAll','options','raw','where','attributes','limit','map','include','model','body','CreateVoiceCallReport','VoiceCallReport','update','UpdateVoiceCallReport','lodash','util','moment','bluebird','randomstring','../../mysqldb','../../config/utils','../../config/logger'];(function(_0x43eef8,_0x3aabd9){var _0x19b33b=function(_0x55d537){while(--_0x55d537){_0x43eef8['push'](_0x43eef8['shift']());}};_0x19b33b(++_0x3aabd9);}(_0x0036,0xbb));var _0x6003=function(_0x2aa8e9,_0x4b842d){_0x2aa8e9=_0x2aa8e9-0x0;var _0x2dd811=_0x0036[_0x2aa8e9];return _0x2dd811;};'use strict';var _=require(_0x6003('0x0'));var util=require(_0x6003('0x1'));var moment=require(_0x6003('0x2'));var BPromise=require(_0x6003('0x3'));var rs=require(_0x6003('0x4'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x6003('0x5'))['db'];var utils=require(_0x6003('0x6'));var logger=require(_0x6003('0x7'))(_0x6003('0x8'));var config=require(_0x6003('0x9'));var jayson=require(_0x6003('0xa'));var client=jayson[_0x6003('0xb')][_0x6003('0xc')]({'port':0x232a});function respondWithRpcPromise(_0x566ff2,_0x460544,_0x20c963){return new BPromise(function(_0x6bdd68,_0x37bf72){return client[_0x6003('0xd')](_0x566ff2,_0x20c963)[_0x6003('0xe')](function(_0x109197){logger[_0x6003('0xf')](_0x6003('0x10'),_0x460544,_0x6003('0x11'));logger[_0x6003('0x12')]('VoiceCallReport,\x20%s,\x20%s,\x20%s',_0x460544,_0x6003('0x11'),JSON[_0x6003('0x13')](_0x109197));if(_0x109197[_0x6003('0x14')]){if(_0x109197[_0x6003('0x14')][_0x6003('0x15')]===0x1f4){logger['error']('VoiceCallReport,\x20%s,\x20%s',_0x460544,_0x109197[_0x6003('0x14')][_0x6003('0x16')]);return _0x37bf72(_0x109197[_0x6003('0x14')]['message']);}logger[_0x6003('0x14')](_0x6003('0x10'),_0x460544,_0x109197[_0x6003('0x14')][_0x6003('0x16')]);return _0x6bdd68(_0x109197[_0x6003('0x14')][_0x6003('0x16')]);}else{logger[_0x6003('0xf')](_0x6003('0x10'),_0x460544,'request\x20sent');_0x6bdd68(_0x109197['result']['message']);}})[_0x6003('0x17')](function(_0x3e280e){logger[_0x6003('0x14')]('VoiceCallReport,\x20%s,\x20%s',_0x460544,_0x3e280e);_0x37bf72(_0x3e280e);});});}exports[_0x6003('0x18')]=function(_0x3348f1){var _0x3fc0cd=this;return new Promise(function(_0x2ea674,_0x49dc92){return db['VoiceCallReport'][_0x6003('0x19')]({'raw':_0x3348f1[_0x6003('0x1a')]?_0x3348f1['options'][_0x6003('0x1b')]===undefined?!![]:![]:!![],'where':_0x3348f1[_0x6003('0x1a')]?_0x3348f1[_0x6003('0x1a')][_0x6003('0x1c')]||null:null,'attributes':_0x3348f1[_0x6003('0x1a')]?_0x3348f1[_0x6003('0x1a')][_0x6003('0x1d')]||null:null,'limit':_0x3348f1[_0x6003('0x1a')]?_0x3348f1['options'][_0x6003('0x1e')]||null:null,'include':_0x3348f1[_0x6003('0x1a')]?_0x3348f1[_0x6003('0x1a')]['include']?_[_0x6003('0x1f')](_0x3348f1[_0x6003('0x1a')][_0x6003('0x20')],function(_0x283069){return{'model':db[_0x283069['model']],'as':_0x283069['as'],'attributes':_0x283069[_0x6003('0x1d')],'include':_0x283069[_0x6003('0x20')]?_[_0x6003('0x1f')](_0x283069[_0x6003('0x20')],function(_0x8028fa){return{'model':db[_0x8028fa['model']],'as':_0x8028fa['as'],'attributes':_0x8028fa[_0x6003('0x1d')],'include':_0x8028fa[_0x6003('0x20')]?_[_0x6003('0x1f')](_0x8028fa[_0x6003('0x20')],function(_0x5a5958){return{'model':db[_0x5a5958[_0x6003('0x21')]],'as':_0x5a5958['as'],'attributes':_0x5a5958[_0x6003('0x1d')]};}):[]};}):[]};}):[]:[]})[_0x6003('0xe')](function(_0x381440){logger['info'](_0x6003('0x18'),_0x3348f1);logger[_0x6003('0x12')](_0x6003('0x18'),_0x3348f1,JSON[_0x6003('0x13')](_0x381440));_0x2ea674(_0x381440);})['catch'](function(_0xd5c10d){logger[_0x6003('0x14')](_0x6003('0x18'),_0xd5c10d[_0x6003('0x16')],_0x3348f1);_0x49dc92(_0x3fc0cd[_0x6003('0x14')](0x1f4,_0xd5c10d[_0x6003('0x16')]));});});};exports['CreateVoiceCallReport']=function(_0x385a47){var _0x3b95de=this;return new Promise(function(_0x23b111,_0x54dbf9){return db['VoiceCallReport']['create'](_0x385a47[_0x6003('0x22')],{'raw':_0x385a47[_0x6003('0x1a')]?_0x385a47['options'][_0x6003('0x1b')]===undefined?!![]:![]:!![]})[_0x6003('0xe')](function(_0x1e9bad){logger[_0x6003('0xf')](_0x6003('0x23'),_0x385a47);logger[_0x6003('0x12')](_0x6003('0x23'),_0x385a47,JSON[_0x6003('0x13')](_0x1e9bad));_0x23b111(_0x1e9bad);})[_0x6003('0x17')](function(_0x390be5){logger[_0x6003('0x14')]('CreateVoiceCallReport',_0x390be5[_0x6003('0x16')],_0x385a47);_0x54dbf9(_0x3b95de[_0x6003('0x14')](0x1f4,_0x390be5[_0x6003('0x16')]));});});};exports['UpdateVoiceCallReport']=function(_0x4b2e65){var _0x22c050=this;return new Promise(function(_0x31a865,_0x20ca0e){return db[_0x6003('0x24')][_0x6003('0x25')](_0x4b2e65[_0x6003('0x22')],{'raw':_0x4b2e65[_0x6003('0x1a')]?_0x4b2e65[_0x6003('0x1a')][_0x6003('0x1b')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x4b2e65['options']?_0x4b2e65[_0x6003('0x1a')][_0x6003('0x1c')]||null:null,'attributes':_0x4b2e65['options']?_0x4b2e65[_0x6003('0x1a')]['attributes']||null:null,'limit':_0x4b2e65[_0x6003('0x1a')]?_0x4b2e65['options'][_0x6003('0x1e')]||null:null})[_0x6003('0xe')](function(_0x17ad3e){logger[_0x6003('0xf')]('UpdateVoiceCallReport',_0x4b2e65);logger[_0x6003('0x12')]('UpdateVoiceCallReport',_0x4b2e65,JSON['stringify'](_0x17ad3e));_0x31a865(_0x17ad3e);})[_0x6003('0x17')](function(_0x26cdac){logger['error'](_0x6003('0x26'),_0x26cdac[_0x6003('0x16')],_0x4b2e65);_0x20ca0e(_0x22c050[_0x6003('0x14')](0x1f4,_0x26cdac['message']));});});};
\ No newline at end of file
+var _0x621e=['UpdateVoiceCallReport','raw','limit','lodash','util','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/environment','jayson/promise','request','then','VoiceCallReport,\x20%s,\x20%s','request\x20sent','VoiceCallReport,\x20%s,\x20%s,\x20%s','error','code','message','info','result','GetVoiceCallReport','findAll','options','where','attributes','include','map','model','stringify','catch','CreateVoiceCallReport','VoiceCallReport','debug'];(function(_0x4c6eaa,_0x391f8b){var _0x403439=function(_0x3dd4e7){while(--_0x3dd4e7){_0x4c6eaa['push'](_0x4c6eaa['shift']());}};_0x403439(++_0x391f8b);}(_0x621e,0xd5));var _0xe621=function(_0x59f0d1,_0x1974f5){_0x59f0d1=_0x59f0d1-0x0;var _0x4d0486=_0x621e[_0x59f0d1];return _0x4d0486;};'use strict';var _=require(_0xe621('0x0'));var util=require(_0xe621('0x1'));var moment=require('moment');var BPromise=require(_0xe621('0x2'));var rs=require(_0xe621('0x3'));var fs=require('fs');var Redis=require(_0xe621('0x4'));var db=require(_0xe621('0x5'))['db'];var utils=require(_0xe621('0x6'));var logger=require('../../config/logger')('rpc');var config=require(_0xe621('0x7'));var jayson=require(_0xe621('0x8'));var client=jayson['client']['http']({'port':0x232a});function respondWithRpcPromise(_0x2c6648,_0x2c3f6c,_0x1f4181){return new BPromise(function(_0x3b8f0a,_0x4498b8){return client[_0xe621('0x9')](_0x2c6648,_0x1f4181)[_0xe621('0xa')](function(_0x43373e){logger['info'](_0xe621('0xb'),_0x2c3f6c,_0xe621('0xc'));logger['debug'](_0xe621('0xd'),_0x2c3f6c,_0xe621('0xc'),JSON['stringify'](_0x43373e));if(_0x43373e[_0xe621('0xe')]){if(_0x43373e[_0xe621('0xe')][_0xe621('0xf')]===0x1f4){logger[_0xe621('0xe')](_0xe621('0xb'),_0x2c3f6c,_0x43373e['error'][_0xe621('0x10')]);return _0x4498b8(_0x43373e[_0xe621('0xe')]['message']);}logger[_0xe621('0xe')]('VoiceCallReport,\x20%s,\x20%s',_0x2c3f6c,_0x43373e['error'][_0xe621('0x10')]);return _0x3b8f0a(_0x43373e['error'][_0xe621('0x10')]);}else{logger[_0xe621('0x11')](_0xe621('0xb'),_0x2c3f6c,_0xe621('0xc'));_0x3b8f0a(_0x43373e[_0xe621('0x12')][_0xe621('0x10')]);}})['catch'](function(_0x1684b8){logger['error']('VoiceCallReport,\x20%s,\x20%s',_0x2c3f6c,_0x1684b8);_0x4498b8(_0x1684b8);});});}exports[_0xe621('0x13')]=function(_0x40c18a){var _0x1b4f7a=this;return new Promise(function(_0x6e06e2,_0x2614ef){return db['VoiceCallReport'][_0xe621('0x14')]({'raw':_0x40c18a[_0xe621('0x15')]?_0x40c18a['options']['raw']===undefined?!![]:![]:!![],'where':_0x40c18a[_0xe621('0x15')]?_0x40c18a['options'][_0xe621('0x16')]||null:null,'attributes':_0x40c18a[_0xe621('0x15')]?_0x40c18a[_0xe621('0x15')][_0xe621('0x17')]||null:null,'limit':_0x40c18a['options']?_0x40c18a[_0xe621('0x15')]['limit']||null:null,'include':_0x40c18a[_0xe621('0x15')]?_0x40c18a[_0xe621('0x15')][_0xe621('0x18')]?_[_0xe621('0x19')](_0x40c18a[_0xe621('0x15')][_0xe621('0x18')],function(_0x5ab6cc){return{'model':db[_0x5ab6cc[_0xe621('0x1a')]],'as':_0x5ab6cc['as'],'attributes':_0x5ab6cc['attributes'],'include':_0x5ab6cc[_0xe621('0x18')]?_[_0xe621('0x19')](_0x5ab6cc[_0xe621('0x18')],function(_0x178976){return{'model':db[_0x178976[_0xe621('0x1a')]],'as':_0x178976['as'],'attributes':_0x178976['attributes'],'include':_0x178976[_0xe621('0x18')]?_['map'](_0x178976[_0xe621('0x18')],function(_0x3e2dc6){return{'model':db[_0x3e2dc6['model']],'as':_0x3e2dc6['as'],'attributes':_0x3e2dc6[_0xe621('0x17')]};}):[]};}):[]};}):[]:[]})[_0xe621('0xa')](function(_0x53ac66){logger[_0xe621('0x11')](_0xe621('0x13'),_0x40c18a);logger['debug'](_0xe621('0x13'),_0x40c18a,JSON[_0xe621('0x1b')](_0x53ac66));_0x6e06e2(_0x53ac66);})[_0xe621('0x1c')](function(_0x85c9ae){logger['error'](_0xe621('0x13'),_0x85c9ae[_0xe621('0x10')],_0x40c18a);_0x2614ef(_0x1b4f7a[_0xe621('0xe')](0x1f4,_0x85c9ae['message']));});});};exports[_0xe621('0x1d')]=function(_0x2a0e55){var _0x518418=this;return new Promise(function(_0x53c3af,_0x2b2a18){return db[_0xe621('0x1e')]['create'](_0x2a0e55['body'],{'raw':_0x2a0e55['options']?_0x2a0e55['options']['raw']===undefined?!![]:![]:!![]})[_0xe621('0xa')](function(_0x202b6d){logger[_0xe621('0x11')](_0xe621('0x1d'),_0x2a0e55);logger[_0xe621('0x1f')](_0xe621('0x1d'),_0x2a0e55,JSON[_0xe621('0x1b')](_0x202b6d));_0x53c3af(_0x202b6d);})[_0xe621('0x1c')](function(_0x5603e5){logger[_0xe621('0xe')](_0xe621('0x1d'),_0x5603e5[_0xe621('0x10')],_0x2a0e55);_0x2b2a18(_0x518418[_0xe621('0xe')](0x1f4,_0x5603e5['message']));});});};exports[_0xe621('0x20')]=function(_0x4ac1c8){var _0x1cd4d9=this;return new Promise(function(_0x26602c,_0x289805){return db[_0xe621('0x1e')]['update'](_0x4ac1c8['body'],{'raw':_0x4ac1c8[_0xe621('0x15')]?_0x4ac1c8['options'][_0xe621('0x21')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x4ac1c8[_0xe621('0x15')]?_0x4ac1c8[_0xe621('0x15')]['where']||null:null,'attributes':_0x4ac1c8[_0xe621('0x15')]?_0x4ac1c8[_0xe621('0x15')][_0xe621('0x17')]||null:null,'limit':_0x4ac1c8[_0xe621('0x15')]?_0x4ac1c8[_0xe621('0x15')][_0xe621('0x22')]||null:null})['then'](function(_0x29bf49){logger[_0xe621('0x11')](_0xe621('0x20'),_0x4ac1c8);logger[_0xe621('0x1f')](_0xe621('0x20'),_0x4ac1c8,JSON[_0xe621('0x1b')](_0x29bf49));_0x26602c(_0x29bf49);})['catch'](function(_0x433319){logger[_0xe621('0xe')](_0xe621('0x20'),_0x433319[_0xe621('0x10')],_0x4ac1c8);_0x289805(_0x1cd4d9[_0xe621('0xe')](0x1f4,_0x433319['message']));});});};
\ No newline at end of file
index 09a495d..d1d12a5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x32bf=['get','isAuthenticated','index','/:id','post','create','put','update','delete','destroy','exports','util','path','connect-timeout','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./voiceChanSpy.controller'];(function(_0x8a3e1c,_0x123d59){var _0x23cec1=function(_0x1399bc){while(--_0x1399bc){_0x8a3e1c['push'](_0x8a3e1c['shift']());}};_0x23cec1(++_0x123d59);}(_0x32bf,0x83));var _0xf32b=function(_0x1cfe79,_0x331bb3){_0x1cfe79=_0x1cfe79-0x0;var _0x4d10ac=_0x32bf[_0x1cfe79];return _0x4d10ac;};'use strict';var multer=require('multer');var util=require(_0xf32b('0x0'));var path=require(_0xf32b('0x1'));var timeout=require(_0xf32b('0x2'));var express=require('express');var router=express[_0xf32b('0x3')]();var fs_extra=require(_0xf32b('0x4'));var auth=require(_0xf32b('0x5'));var interaction=require(_0xf32b('0x6'));var config=require(_0xf32b('0x7'));var controller=require(_0xf32b('0x8'));router[_0xf32b('0x9')]('/',auth[_0xf32b('0xa')](),controller[_0xf32b('0xb')]);router[_0xf32b('0x9')](_0xf32b('0xc'),auth[_0xf32b('0xa')](),controller['show']);router[_0xf32b('0xd')]('/',auth[_0xf32b('0xa')](),controller[_0xf32b('0xe')]);router[_0xf32b('0xf')]('/:id',auth['isAuthenticated'](),controller[_0xf32b('0x10')]);router[_0xf32b('0x11')](_0xf32b('0xc'),auth[_0xf32b('0xa')](),controller[_0xf32b('0x12')]);module[_0xf32b('0x13')]=router;
\ No newline at end of file
+var _0x8bb5=['Router','fs-extra','../../components/interaction/service','../../config/environment','./voiceChanSpy.controller','isAuthenticated','get','/:id','show','create','put','update','destroy','multer','path','connect-timeout','express'];(function(_0x1da46b,_0x109ac4){var _0x3a94ef=function(_0x31a2b4){while(--_0x31a2b4){_0x1da46b['push'](_0x1da46b['shift']());}};_0x3a94ef(++_0x109ac4);}(_0x8bb5,0x1b6));var _0x58bb=function(_0x109b85,_0x480ebe){_0x109b85=_0x109b85-0x0;var _0x5949bc=_0x8bb5[_0x109b85];return _0x5949bc;};'use strict';var multer=require(_0x58bb('0x0'));var util=require('util');var path=require(_0x58bb('0x1'));var timeout=require(_0x58bb('0x2'));var express=require(_0x58bb('0x3'));var router=express[_0x58bb('0x4')]();var fs_extra=require(_0x58bb('0x5'));var auth=require('../../components/auth/service');var interaction=require(_0x58bb('0x6'));var config=require(_0x58bb('0x7'));var controller=require(_0x58bb('0x8'));router['get']('/',auth[_0x58bb('0x9')](),controller['index']);router[_0x58bb('0xa')](_0x58bb('0xb'),auth[_0x58bb('0x9')](),controller[_0x58bb('0xc')]);router['post']('/',auth[_0x58bb('0x9')](),controller[_0x58bb('0xd')]);router[_0x58bb('0xe')]('/:id',auth['isAuthenticated'](),controller[_0x58bb('0xf')]);router['delete'](_0x58bb('0xb'),auth[_0x58bb('0x9')](),controller[_0x58bb('0x10')]);module['exports']=router;
\ No newline at end of file
index 34d4428..e881562 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xfdfe=['options','getDataValue','split','BOOLEAN','sequelize','STRING','name','setDataValue','join'];(function(_0x4eef2e,_0x5ada27){var _0x344f05=function(_0x5348f0){while(--_0x5348f0){_0x4eef2e['push'](_0x4eef2e['shift']());}};_0x344f05(++_0x5ada27);}(_0xfdfe,0x1f3));var _0xefdf=function(_0x377afc,_0x3605e4){_0x377afc=_0x377afc-0x0;var _0x16d8c1=_0xfdfe[_0x377afc];return _0x16d8c1;};'use strict';var Sequelize=require(_0xefdf('0x0'));module['exports']={'name':{'type':Sequelize['STRING']},'prefix':{'type':Sequelize[_0xefdf('0x1')],'unique':_0xefdf('0x2'),'allowNull':![]},'options':{'type':Sequelize[_0xefdf('0x1')],'set':function(_0x5a0f26){this[_0xefdf('0x3')]('options',_0x5a0f26?_0x5a0f26[_0xefdf('0x4')](''):[]);},'get':function(){return this['getDataValue'](_0xefdf('0x5'))?this[_0xefdf('0x6')](_0xefdf('0x5'))[_0xefdf('0x7')](''):[];}},'auth':{'type':Sequelize[_0xefdf('0x8')],'defaultValue':![]},'password':{'type':Sequelize['STRING']},'record':{'type':Sequelize[_0xefdf('0x8')],'defaultValue':![]},'recordingFormat':{'type':Sequelize[_0xefdf('0x1')]},'description':{'type':Sequelize[_0xefdf('0x1')]}};
\ No newline at end of file
+var _0x0c74=['options','BOOLEAN','exports','STRING','setDataValue','getDataValue'];(function(_0x2dafbe,_0x5d04de){var _0x58a45a=function(_0x50ac96){while(--_0x50ac96){_0x2dafbe['push'](_0x2dafbe['shift']());}};_0x58a45a(++_0x5d04de);}(_0x0c74,0x146));var _0x40c7=function(_0x2a3cb2,_0x55280a){_0x2a3cb2=_0x2a3cb2-0x0;var _0x4120af=_0x0c74[_0x2a3cb2];return _0x4120af;};'use strict';var Sequelize=require('sequelize');module[_0x40c7('0x0')]={'name':{'type':Sequelize[_0x40c7('0x1')]},'prefix':{'type':Sequelize[_0x40c7('0x1')],'unique':'name','allowNull':![]},'options':{'type':Sequelize[_0x40c7('0x1')],'set':function(_0x3a197c){this[_0x40c7('0x2')]('options',_0x3a197c?_0x3a197c['join'](''):[]);},'get':function(){return this[_0x40c7('0x3')]('options')?this[_0x40c7('0x3')](_0x40c7('0x4'))['split'](''):[];}},'auth':{'type':Sequelize[_0x40c7('0x5')],'defaultValue':![]},'password':{'type':Sequelize[_0x40c7('0x1')]},'record':{'type':Sequelize[_0x40c7('0x5')],'defaultValue':![]},'recordingFormat':{'type':Sequelize[_0x40c7('0x1')]},'description':{'type':Sequelize[_0x40c7('0x1')]}};
\ No newline at end of file
index 00b674f..a6e9baa 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1bca=['order','sort','where','pick','filters','filter','merge','options','includeAll','include','findAll','rows','catch','params','VoiceChanSpy','rawAttributes','find','create','body','role','user','get','userProfileId','autoAssociation','UserProfileResource','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','rimraf','request-promise','bluebird','mustache','util','sox','to-csv','ejs','fs-extra','squel','crypto','jsforce','desk.js','querystring','papaparse','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','sendStatus','status','end','json','offset','undefined','limit','count','Content-Range','apply','save','update','destroy','then','ChanSpies','error','name','send','map','type','key','model','keys','query','intersection','fields','attributes','length','hasOwnProperty'];(function(_0x522fbe,_0x5cdd62){var _0x247cc2=function(_0x3ddd77){while(--_0x3ddd77){_0x522fbe['push'](_0x522fbe['shift']());}};_0x247cc2(++_0x5cdd62);}(_0x1bca,0xb6));var _0xa1bc=function(_0x487939,_0x3d173a){_0x487939=_0x487939-0x0;var _0x31e946=_0x1bca[_0x487939];return _0x31e946;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0xa1bc('0x0'));var zipdir=require('zip-dir');var jsonpatch=require('fast-json-patch');var rp=require(_0xa1bc('0x1'));var moment=require('moment');var BPromise=require(_0xa1bc('0x2'));var Mustache=require(_0xa1bc('0x3'));var util=require(_0xa1bc('0x4'));var path=require('path');var sox=require(_0xa1bc('0x5'));var csv=require(_0xa1bc('0x6'));var ejs=require(_0xa1bc('0x7'));var fs=require('fs');var fs_extra=require(_0xa1bc('0x8'));var _=require('lodash');var squel=require(_0xa1bc('0x9'));var crypto=require(_0xa1bc('0xa'));var jsforce=require(_0xa1bc('0xb'));var deskjs=require(_0xa1bc('0xc'));var toCsv=require(_0xa1bc('0x6'));var querystring=require(_0xa1bc('0xd'));var Papa=require(_0xa1bc('0xe'));var Redis=require('ioredis');var authService=require(_0xa1bc('0xf'));var qs=require(_0xa1bc('0x10'));var as=require(_0xa1bc('0x11'));var hardwareService=require(_0xa1bc('0x12'));var logger=require(_0xa1bc('0x13'))(_0xa1bc('0x14'));var utils=require(_0xa1bc('0x15'));var config=require(_0xa1bc('0x16'));var licenseUtil=require('../../config/license/util');var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x1f65bc,_0x37913b){_0x37913b=_0x37913b||0xcc;return function(_0x2b38cf){if(_0x2b38cf){return _0x1f65bc[_0xa1bc('0x17')](_0x37913b);}return _0x1f65bc[_0xa1bc('0x18')](_0x37913b)[_0xa1bc('0x19')]();};}function respondWithResult(_0x165acf,_0x2c5f01){_0x2c5f01=_0x2c5f01||0xc8;return function(_0xe0d028){if(_0xe0d028){return _0x165acf[_0xa1bc('0x18')](_0x2c5f01)[_0xa1bc('0x1a')](_0xe0d028);}};}function respondWithFilteredResult(_0x5a22e0,_0x565bc2){return function(_0xdb513d){if(_0xdb513d){var _0xf8c08e=typeof _0x565bc2[_0xa1bc('0x1b')]===_0xa1bc('0x1c')&&typeof _0x565bc2[_0xa1bc('0x1d')]===_0xa1bc('0x1c');var _0x36b899=_0xdb513d[_0xa1bc('0x1e')];var _0x4765be=_0xf8c08e?0x0:_0x565bc2['offset'];var _0x510046=_0xf8c08e?_0xdb513d[_0xa1bc('0x1e')]:_0x565bc2[_0xa1bc('0x1b')]+_0x565bc2[_0xa1bc('0x1d')];var _0x2b0410;if(_0x510046>=_0x36b899){_0x510046=_0x36b899;_0x2b0410=0xc8;}else{_0x2b0410=0xce;}_0x5a22e0['status'](_0x2b0410);return _0x5a22e0['set'](_0xa1bc('0x1f'),_0x4765be+'-'+_0x510046+'/'+_0x36b899)[_0xa1bc('0x1a')](_0xdb513d);}return null;};}function patchUpdates(_0x322703){return function(_0x95a766){try{jsonpatch[_0xa1bc('0x20')](_0x95a766,_0x322703,!![]);}catch(_0x3e8cd7){return BPromise['reject'](_0x3e8cd7);}return _0x95a766[_0xa1bc('0x21')]();};}function saveUpdates(_0xc81195,_0x1e4f4e){return function(_0x4fdf7d){if(_0x4fdf7d){return _0x4fdf7d[_0xa1bc('0x22')](_0xc81195)['then'](function(_0x10636d){return _0x10636d;});}return null;};}function removeEntity(_0x44f952,_0x23d67d){return function(_0x2a77a2){if(_0x2a77a2){return _0x2a77a2[_0xa1bc('0x23')]()[_0xa1bc('0x24')](function(){var _0x4f53f2=_0x2a77a2['get']({'plain':!![]});var _0x3cc2e0=_0xa1bc('0x25');return db['UserProfileResource'][_0xa1bc('0x23')]({'where':{'type':_0x3cc2e0,'resourceId':_0x4f53f2['id']}})[_0xa1bc('0x24')](function(){return _0x2a77a2;});})[_0xa1bc('0x24')](function(){_0x44f952[_0xa1bc('0x18')](0xcc)[_0xa1bc('0x19')]();});}};}function handleEntityNotFound(_0x2a89ba,_0x5a579f){return function(_0x4fdfd7){if(!_0x4fdfd7){_0x2a89ba[_0xa1bc('0x17')](0x194);}return _0x4fdfd7;};}function handleError(_0xa2137e,_0x1874dc){_0x1874dc=_0x1874dc||0x1f4;return function(_0x1270f5){logger[_0xa1bc('0x26')](_0x1270f5['stack']);if(_0x1270f5[_0xa1bc('0x27')]){delete _0x1270f5['name'];}_0xa2137e[_0xa1bc('0x18')](_0x1874dc)[_0xa1bc('0x28')](_0x1270f5);};}exports['index']=function(_0x4f0593,_0x4a120c){var _0x3500d0={},_0x4b8a88={},_0x1fe2a5={'count':0x0,'rows':[]};var _0x3b79a9=_[_0xa1bc('0x29')](db['VoiceChanSpy']['rawAttributes'],function(_0x1e68ba){return{'name':_0x1e68ba['fieldName'],'type':_0x1e68ba[_0xa1bc('0x2a')][_0xa1bc('0x2b')]};});_0x4b8a88[_0xa1bc('0x2c')]=_['map'](_0x3b79a9,'name');_0x4b8a88['query']=_[_0xa1bc('0x2d')](_0x4f0593[_0xa1bc('0x2e')]);_0x4b8a88['filters']=_[_0xa1bc('0x2f')](_0x4b8a88[_0xa1bc('0x2c')],_0x4b8a88[_0xa1bc('0x2e')]);_0x3500d0['attributes']=_[_0xa1bc('0x2f')](_0x4b8a88[_0xa1bc('0x2c')],qs[_0xa1bc('0x30')](_0x4f0593['query'][_0xa1bc('0x30')]));_0x3500d0[_0xa1bc('0x31')]=_0x3500d0[_0xa1bc('0x31')][_0xa1bc('0x32')]?_0x3500d0[_0xa1bc('0x31')]:_0x4b8a88[_0xa1bc('0x2c')];if(!_0x4f0593[_0xa1bc('0x2e')][_0xa1bc('0x33')]('nolimit')){_0x3500d0[_0xa1bc('0x1d')]=qs[_0xa1bc('0x1d')](_0x4f0593[_0xa1bc('0x2e')][_0xa1bc('0x1d')]);_0x3500d0['offset']=qs[_0xa1bc('0x1b')](_0x4f0593[_0xa1bc('0x2e')]['offset']);}_0x3500d0[_0xa1bc('0x34')]=qs[_0xa1bc('0x35')](_0x4f0593[_0xa1bc('0x2e')][_0xa1bc('0x35')]);_0x3500d0[_0xa1bc('0x36')]=qs['filters'](_[_0xa1bc('0x37')](_0x4f0593[_0xa1bc('0x2e')],_0x4b8a88[_0xa1bc('0x38')]),_0x3b79a9);if(_0x4f0593[_0xa1bc('0x2e')][_0xa1bc('0x39')]){_0x3500d0['where']=_[_0xa1bc('0x3a')](_0x3500d0[_0xa1bc('0x36')],{'$or':_[_0xa1bc('0x29')](_0x3b79a9,function(_0x34fbfb){if(_0x34fbfb[_0xa1bc('0x2a')]!=='VIRTUAL'){var _0x479438={};_0x479438[_0x34fbfb['name']]={'$like':'%'+_0x4f0593[_0xa1bc('0x2e')]['filter']+'%'};return _0x479438;}})});}_0x3500d0=_[_0xa1bc('0x3a')]({},_0x3500d0,_0x4f0593[_0xa1bc('0x3b')]);var _0x33e402={'where':_0x3500d0[_0xa1bc('0x36')]};return db['VoiceChanSpy'][_0xa1bc('0x1e')](_0x33e402)['then'](function(_0x482d37){_0x1fe2a5[_0xa1bc('0x1e')]=_0x482d37;if(_0x4f0593['query'][_0xa1bc('0x3c')]){_0x3500d0[_0xa1bc('0x3d')]=[{'all':!![]}];}return db['VoiceChanSpy'][_0xa1bc('0x3e')](_0x3500d0);})['then'](function(_0x1544c8){_0x1fe2a5[_0xa1bc('0x3f')]=_0x1544c8;return _0x1fe2a5;})[_0xa1bc('0x24')](respondWithFilteredResult(_0x4a120c,_0x3500d0))[_0xa1bc('0x40')](handleError(_0x4a120c,null));};exports['show']=function(_0x2b0e95,_0x46c69d){var _0x50fde9={'raw':![],'where':{'id':_0x2b0e95[_0xa1bc('0x41')]['id']}},_0x982b40={};_0x982b40[_0xa1bc('0x2c')]=_[_0xa1bc('0x2d')](db[_0xa1bc('0x42')][_0xa1bc('0x43')]);_0x982b40[_0xa1bc('0x2e')]=_[_0xa1bc('0x2d')](_0x2b0e95[_0xa1bc('0x2e')]);_0x982b40[_0xa1bc('0x38')]=_[_0xa1bc('0x2f')](_0x982b40[_0xa1bc('0x2c')],_0x982b40[_0xa1bc('0x2e')]);_0x50fde9[_0xa1bc('0x31')]=_['intersection'](_0x982b40[_0xa1bc('0x2c')],qs['fields'](_0x2b0e95[_0xa1bc('0x2e')][_0xa1bc('0x30')]));_0x50fde9[_0xa1bc('0x31')]=_0x50fde9[_0xa1bc('0x31')]['length']?_0x50fde9['attributes']:_0x982b40['model'];if(_0x2b0e95['query']['includeAll']){_0x50fde9[_0xa1bc('0x3d')]=[{'all':!![]}];}_0x50fde9=_['merge']({},_0x50fde9,_0x2b0e95[_0xa1bc('0x3b')]);return db[_0xa1bc('0x42')][_0xa1bc('0x44')](_0x50fde9)[_0xa1bc('0x24')](handleEntityNotFound(_0x46c69d,null))['then'](respondWithResult(_0x46c69d,null))[_0xa1bc('0x40')](handleError(_0x46c69d,null));};exports[_0xa1bc('0x45')]=function(_0x3fa784,_0x3eb3d7){return db[_0xa1bc('0x42')]['create'](_0x3fa784[_0xa1bc('0x46')],{})[_0xa1bc('0x24')](function(_0x36c784){var _0xfa3afd=_0x3fa784['user']['get']({'plain':!![]});if(!_0xfa3afd)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0xfa3afd[_0xa1bc('0x47')]===_0xa1bc('0x48')){var _0x5b3b1=_0x36c784[_0xa1bc('0x49')]({'plain':!![]});var _0x14bad4='ChanSpies';return db['UserProfileSection'][_0xa1bc('0x44')]({'where':{'name':_0x14bad4,'userProfileId':_0xfa3afd[_0xa1bc('0x4a')]},'raw':!![]})[_0xa1bc('0x24')](function(_0x2bc1cb){if(_0x2bc1cb&&_0x2bc1cb[_0xa1bc('0x4b')]===0x0){return db[_0xa1bc('0x4c')][_0xa1bc('0x45')]({'name':_0x5b3b1[_0xa1bc('0x27')],'resourceId':_0x5b3b1['id'],'type':_0x2bc1cb[_0xa1bc('0x27')],'sectionId':_0x2bc1cb['id']},{})['then'](function(){return _0x36c784;});}else{return _0x36c784;}})[_0xa1bc('0x40')](function(_0xd80e5d){logger['error'](_0xa1bc('0x4d'),_0xd80e5d);throw _0xd80e5d;});}return _0x36c784;})[_0xa1bc('0x24')](respondWithResult(_0x3eb3d7,0xc9))[_0xa1bc('0x40')](handleError(_0x3eb3d7,null));};exports[_0xa1bc('0x22')]=function(_0xb14552,_0x5a9c2c){if(_0xb14552['body']['id']){delete _0xb14552['body']['id'];}return db[_0xa1bc('0x42')][_0xa1bc('0x44')]({'where':{'id':_0xb14552[_0xa1bc('0x41')]['id']}})[_0xa1bc('0x24')](handleEntityNotFound(_0x5a9c2c,null))['then'](saveUpdates(_0xb14552[_0xa1bc('0x46')],null))[_0xa1bc('0x24')](respondWithResult(_0x5a9c2c,null))['catch'](handleError(_0x5a9c2c,null));};exports[_0xa1bc('0x23')]=function(_0x5a02cf,_0x5c5719){return db['VoiceChanSpy'][_0xa1bc('0x44')]({'where':{'id':_0x5a02cf[_0xa1bc('0x41')]['id']}})['then'](handleEntityNotFound(_0x5c5719,null))[_0xa1bc('0x24')](removeEntity(_0x5c5719,null))[_0xa1bc('0x40')](handleError(_0x5c5719,null));};
\ No newline at end of file
+var _0x81a5=['../../config/license/hardware','../../config/logger','api','../../config/environment','sendStatus','end','status','json','offset','limit','undefined','count','set','Content-Range','reject','save','update','then','get','ChanSpies','stack','name','send','index','map','rawAttributes','type','key','model','query','keys','filters','intersection','fields','attributes','length','hasOwnProperty','order','sort','where','pick','filter','merge','VIRTUAL','include','VoiceChanSpy','rows','catch','show','params','options','find','create','body','Unable\x20to\x20retrieve\x20the\x20current\x20user','user','userProfileId','UserProfileResource','error','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','destroy','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','mustache','ejs','lodash','squel','crypto','jsforce','desk.js','to-csv','querystring','papaparse','../../components/auth/service','../../components/parsers/advancedSearch'];(function(_0xdc37a1,_0x53ebb9){var _0x99b4fe=function(_0x2811e3){while(--_0x2811e3){_0xdc37a1['push'](_0xdc37a1['shift']());}};_0x99b4fe(++_0x53ebb9);}(_0x81a5,0x1c8));var _0x581a=function(_0x4cf87c,_0x1cfb29){_0x4cf87c=_0x4cf87c-0x0;var _0xd0d7c7=_0x81a5[_0x4cf87c];return _0xd0d7c7;};'use strict';var emlformat=require(_0x581a('0x0'));var rimraf=require(_0x581a('0x1'));var zipdir=require(_0x581a('0x2'));var jsonpatch=require(_0x581a('0x3'));var rp=require(_0x581a('0x4'));var moment=require(_0x581a('0x5'));var BPromise=require('bluebird');var Mustache=require(_0x581a('0x6'));var util=require('util');var path=require('path');var sox=require('sox');var csv=require('to-csv');var ejs=require(_0x581a('0x7'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x581a('0x8'));var squel=require(_0x581a('0x9'));var crypto=require(_0x581a('0xa'));var jsforce=require(_0x581a('0xb'));var deskjs=require(_0x581a('0xc'));var toCsv=require(_0x581a('0xd'));var querystring=require(_0x581a('0xe'));var Papa=require(_0x581a('0xf'));var Redis=require('ioredis');var authService=require(_0x581a('0x10'));var qs=require('../../components/parsers/qs');var as=require(_0x581a('0x11'));var hardwareService=require(_0x581a('0x12'));var logger=require(_0x581a('0x13'))(_0x581a('0x14'));var utils=require('../../config/utils');var config=require(_0x581a('0x15'));var licenseUtil=require('../../config/license/util');var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x5dac2a,_0x48a2e3){_0x48a2e3=_0x48a2e3||0xcc;return function(_0x96c299){if(_0x96c299){return _0x5dac2a[_0x581a('0x16')](_0x48a2e3);}return _0x5dac2a['status'](_0x48a2e3)[_0x581a('0x17')]();};}function respondWithResult(_0x35166e,_0x896740){_0x896740=_0x896740||0xc8;return function(_0xcaab1f){if(_0xcaab1f){return _0x35166e[_0x581a('0x18')](_0x896740)[_0x581a('0x19')](_0xcaab1f);}};}function respondWithFilteredResult(_0x24b133,_0x405164){return function(_0x4a2449){if(_0x4a2449){var _0x11f50b=typeof _0x405164[_0x581a('0x1a')]==='undefined'&&typeof _0x405164[_0x581a('0x1b')]===_0x581a('0x1c');var _0x2679da=_0x4a2449[_0x581a('0x1d')];var _0x5b0970=_0x11f50b?0x0:_0x405164[_0x581a('0x1a')];var _0x2fb5b7=_0x11f50b?_0x4a2449['count']:_0x405164['offset']+_0x405164[_0x581a('0x1b')];var _0x24b475;if(_0x2fb5b7>=_0x2679da){_0x2fb5b7=_0x2679da;_0x24b475=0xc8;}else{_0x24b475=0xce;}_0x24b133[_0x581a('0x18')](_0x24b475);return _0x24b133[_0x581a('0x1e')](_0x581a('0x1f'),_0x5b0970+'-'+_0x2fb5b7+'/'+_0x2679da)[_0x581a('0x19')](_0x4a2449);}return null;};}function patchUpdates(_0x19e468){return function(_0x33d03f){try{jsonpatch['apply'](_0x33d03f,_0x19e468,!![]);}catch(_0x44eb17){return BPromise[_0x581a('0x20')](_0x44eb17);}return _0x33d03f[_0x581a('0x21')]();};}function saveUpdates(_0x4f619d,_0x4ffe49){return function(_0x1c5f4f){if(_0x1c5f4f){return _0x1c5f4f[_0x581a('0x22')](_0x4f619d)[_0x581a('0x23')](function(_0x223bbb){return _0x223bbb;});}return null;};}function removeEntity(_0x58c2b8,_0x41a2c2){return function(_0x62a721){if(_0x62a721){return _0x62a721['destroy']()[_0x581a('0x23')](function(){var _0x3ce207=_0x62a721[_0x581a('0x24')]({'plain':!![]});var _0x9f9947=_0x581a('0x25');return db['UserProfileResource']['destroy']({'where':{'type':_0x9f9947,'resourceId':_0x3ce207['id']}})[_0x581a('0x23')](function(){return _0x62a721;});})['then'](function(){_0x58c2b8['status'](0xcc)[_0x581a('0x17')]();});}};}function handleEntityNotFound(_0x2a71d9,_0x1edf48){return function(_0x4c9422){if(!_0x4c9422){_0x2a71d9[_0x581a('0x16')](0x194);}return _0x4c9422;};}function handleError(_0x4839c3,_0x111ec2){_0x111ec2=_0x111ec2||0x1f4;return function(_0x2136fb){logger['error'](_0x2136fb[_0x581a('0x26')]);if(_0x2136fb[_0x581a('0x27')]){delete _0x2136fb[_0x581a('0x27')];}_0x4839c3[_0x581a('0x18')](_0x111ec2)[_0x581a('0x28')](_0x2136fb);};}exports[_0x581a('0x29')]=function(_0x1ac86e,_0x38e3c7){var _0x20a604={},_0x247b43={},_0x5aa2a1={'count':0x0,'rows':[]};var _0x23e4f1=_[_0x581a('0x2a')](db['VoiceChanSpy'][_0x581a('0x2b')],function(_0x1b359b){return{'name':_0x1b359b['fieldName'],'type':_0x1b359b[_0x581a('0x2c')][_0x581a('0x2d')]};});_0x247b43[_0x581a('0x2e')]=_[_0x581a('0x2a')](_0x23e4f1,_0x581a('0x27'));_0x247b43[_0x581a('0x2f')]=_[_0x581a('0x30')](_0x1ac86e[_0x581a('0x2f')]);_0x247b43[_0x581a('0x31')]=_[_0x581a('0x32')](_0x247b43['model'],_0x247b43['query']);_0x20a604['attributes']=_[_0x581a('0x32')](_0x247b43[_0x581a('0x2e')],qs[_0x581a('0x33')](_0x1ac86e['query']['fields']));_0x20a604[_0x581a('0x34')]=_0x20a604[_0x581a('0x34')][_0x581a('0x35')]?_0x20a604[_0x581a('0x34')]:_0x247b43['model'];if(!_0x1ac86e[_0x581a('0x2f')][_0x581a('0x36')]('nolimit')){_0x20a604[_0x581a('0x1b')]=qs[_0x581a('0x1b')](_0x1ac86e['query'][_0x581a('0x1b')]);_0x20a604[_0x581a('0x1a')]=qs[_0x581a('0x1a')](_0x1ac86e['query'][_0x581a('0x1a')]);}_0x20a604[_0x581a('0x37')]=qs[_0x581a('0x38')](_0x1ac86e[_0x581a('0x2f')][_0x581a('0x38')]);_0x20a604[_0x581a('0x39')]=qs[_0x581a('0x31')](_[_0x581a('0x3a')](_0x1ac86e[_0x581a('0x2f')],_0x247b43[_0x581a('0x31')]),_0x23e4f1);if(_0x1ac86e['query'][_0x581a('0x3b')]){_0x20a604[_0x581a('0x39')]=_[_0x581a('0x3c')](_0x20a604[_0x581a('0x39')],{'$or':_[_0x581a('0x2a')](_0x23e4f1,function(_0x313b49){if(_0x313b49[_0x581a('0x2c')]!==_0x581a('0x3d')){var _0x236adc={};_0x236adc[_0x313b49['name']]={'$like':'%'+_0x1ac86e[_0x581a('0x2f')][_0x581a('0x3b')]+'%'};return _0x236adc;}})});}_0x20a604=_[_0x581a('0x3c')]({},_0x20a604,_0x1ac86e['options']);var _0x481d41={'where':_0x20a604['where']};return db['VoiceChanSpy'][_0x581a('0x1d')](_0x481d41)[_0x581a('0x23')](function(_0x174aa4){_0x5aa2a1['count']=_0x174aa4;if(_0x1ac86e[_0x581a('0x2f')]['includeAll']){_0x20a604[_0x581a('0x3e')]=[{'all':!![]}];}return db[_0x581a('0x3f')]['findAll'](_0x20a604);})['then'](function(_0x473a1f){_0x5aa2a1[_0x581a('0x40')]=_0x473a1f;return _0x5aa2a1;})['then'](respondWithFilteredResult(_0x38e3c7,_0x20a604))[_0x581a('0x41')](handleError(_0x38e3c7,null));};exports[_0x581a('0x42')]=function(_0xfbc04d,_0x96aa0d){var _0x1a25a1={'raw':![],'where':{'id':_0xfbc04d[_0x581a('0x43')]['id']}},_0x1a2072={};_0x1a2072[_0x581a('0x2e')]=_[_0x581a('0x30')](db[_0x581a('0x3f')][_0x581a('0x2b')]);_0x1a2072[_0x581a('0x2f')]=_['keys'](_0xfbc04d['query']);_0x1a2072[_0x581a('0x31')]=_[_0x581a('0x32')](_0x1a2072[_0x581a('0x2e')],_0x1a2072[_0x581a('0x2f')]);_0x1a25a1[_0x581a('0x34')]=_['intersection'](_0x1a2072[_0x581a('0x2e')],qs[_0x581a('0x33')](_0xfbc04d[_0x581a('0x2f')][_0x581a('0x33')]));_0x1a25a1[_0x581a('0x34')]=_0x1a25a1[_0x581a('0x34')][_0x581a('0x35')]?_0x1a25a1['attributes']:_0x1a2072[_0x581a('0x2e')];if(_0xfbc04d[_0x581a('0x2f')]['includeAll']){_0x1a25a1['include']=[{'all':!![]}];}_0x1a25a1=_['merge']({},_0x1a25a1,_0xfbc04d[_0x581a('0x44')]);return db[_0x581a('0x3f')][_0x581a('0x45')](_0x1a25a1)['then'](handleEntityNotFound(_0x96aa0d,null))[_0x581a('0x23')](respondWithResult(_0x96aa0d,null))[_0x581a('0x41')](handleError(_0x96aa0d,null));};exports[_0x581a('0x46')]=function(_0x3b80ca,_0x26c2d2){return db[_0x581a('0x3f')][_0x581a('0x46')](_0x3b80ca[_0x581a('0x47')],{})[_0x581a('0x23')](function(_0x2513eb){var _0x2c8c68=_0x3b80ca['user'][_0x581a('0x24')]({'plain':!![]});if(!_0x2c8c68)throw new Error(_0x581a('0x48'));if(_0x2c8c68['role']===_0x581a('0x49')){var _0x181818=_0x2513eb[_0x581a('0x24')]({'plain':!![]});var _0x2aa9c9=_0x581a('0x25');return db['UserProfileSection'][_0x581a('0x45')]({'where':{'name':_0x2aa9c9,'userProfileId':_0x2c8c68[_0x581a('0x4a')]},'raw':!![]})['then'](function(_0x315a73){if(_0x315a73&&_0x315a73['autoAssociation']===0x0){return db[_0x581a('0x4b')][_0x581a('0x46')]({'name':_0x181818[_0x581a('0x27')],'resourceId':_0x181818['id'],'type':_0x315a73[_0x581a('0x27')],'sectionId':_0x315a73['id']},{})['then'](function(){return _0x2513eb;});}else{return _0x2513eb;}})[_0x581a('0x41')](function(_0xca8463){logger[_0x581a('0x4c')](_0x581a('0x4d'),_0xca8463);throw _0xca8463;});}return _0x2513eb;})[_0x581a('0x23')](respondWithResult(_0x26c2d2,0xc9))[_0x581a('0x41')](handleError(_0x26c2d2,null));};exports[_0x581a('0x22')]=function(_0x2ec6f7,_0x70286a){if(_0x2ec6f7[_0x581a('0x47')]['id']){delete _0x2ec6f7[_0x581a('0x47')]['id'];}return db[_0x581a('0x3f')]['find']({'where':{'id':_0x2ec6f7[_0x581a('0x43')]['id']}})[_0x581a('0x23')](handleEntityNotFound(_0x70286a,null))[_0x581a('0x23')](saveUpdates(_0x2ec6f7[_0x581a('0x47')],null))[_0x581a('0x23')](respondWithResult(_0x70286a,null))[_0x581a('0x41')](handleError(_0x70286a,null));};exports[_0x581a('0x4e')]=function(_0x2d26aa,_0x101f79){return db[_0x581a('0x3f')][_0x581a('0x45')]({'where':{'id':_0x2d26aa['params']['id']}})[_0x581a('0x23')](handleEntityNotFound(_0x101f79,null))[_0x581a('0x23')](removeEntity(_0x101f79,null))[_0x581a('0x41')](handleError(_0x101f79,null));};
\ No newline at end of file
index 298e703..01ba8c8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc53f=['format','${UNIQUEID}.%s,a','auth','Authenticate','password','ChanSpy','name','options','join','StopMixMonitor','length','concat','User','internal','agent','then','catch','VoiceExtension','destroy','lodash','util','./voiceChanSpy.attributes','from-sip','%s%s','prefix','system','merge','Set','chanspy','record','push'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0xc53f,0x12a));var _0xfc53=function(_0x521929,_0x479be5){_0x521929=_0x521929-0x0;var _0x632436=_0xc53f[_0x521929];return _0x632436;};'use strict';var _=require(_0xfc53('0x0'));var util=require(_0xfc53('0x1'));var BPromise=require('bluebird');var attributes=require(_0xfc53('0x2'));var getUserApplications=function(_0x119c7e,_0x37bc3a,_0x42c3a7){var _0x43ca35=0x1;var _0x2a1c49=[];var _0x2f9049={'context':_0x37bc3a['context']||_0xfc53('0x3'),'exten':util['format'](_0xfc53('0x4'),_0x119c7e[_0xfc53('0x5')],_0x42c3a7),'type':_0xfc53('0x6'),'isApp':![],'ChanSpyId':_0x119c7e['id'],'UserId':_0x37bc3a['id']};_0x2a1c49['push'](_[_0xfc53('0x7')]({'app':_0xfc53('0x8'),'appdata':util['format']('CDR(type)=%s',_0xfc53('0x9')),'priority':_0x43ca35++},_0x2f9049));if(_0x119c7e[_0xfc53('0xa')]){_0x2a1c49[_0xfc53('0xb')](_[_0xfc53('0x7')]({'app':'MixMonitor','appdata':util[_0xfc53('0xc')](_0xfc53('0xd'),_0x119c7e['recordingFormat']),'priority':_0x43ca35++},_0x2f9049));}if(_0x119c7e[_0xfc53('0xe')]){_0x2a1c49[_0xfc53('0xb')](_['merge']({'app':_0xfc53('0xf'),'appdata':_0x119c7e[_0xfc53('0x10')],'priority':_0x43ca35++},_0x2f9049));}_0x2a1c49['push'](_[_0xfc53('0x7')]({'app':_0xfc53('0x11'),'appdata':util[_0xfc53('0xc')]('SIP/%s,%s',_0x37bc3a[_0xfc53('0x12')],_0x119c7e['options']?_0x119c7e[_0xfc53('0x13')][_0xfc53('0x14')](''):''),'priority':_0x43ca35++},_0x2f9049));if(_0x119c7e[_0xfc53('0xa')]){_0x2a1c49['push'](_[_0xfc53('0x7')]({'app':_0xfc53('0x15'),'priority':_0x43ca35++},_0x2f9049));}return _0x2a1c49;};var getChanSpyApplications=function(_0x38841b,_0xe5229f){var _0x182602=[];for(var _0x5bd059=0x0,_0x20f111=0x1;_0x5bd059<_0xe5229f[_0xfc53('0x16')];_0x5bd059++,_0x20f111=0x1){_0x182602=_0x182602[_0xfc53('0x17')](getUserApplications(_0x38841b,_0xe5229f[_0x5bd059],_0xe5229f[_0x5bd059]['internal']));if(_0xe5229f[_0x5bd059]['internal']!=_0xe5229f[_0x5bd059]['name']){_0x182602=_0x182602['concat'](getUserApplications(_0x38841b,_0xe5229f[_0x5bd059],_0xe5229f[_0x5bd059]['name']));}}return _0x182602;};var getChanSpyPromise=function(_0x1d0733,_0x56cb7a){return new BPromise(function(_0x4d21e0,_0x1f1718){return _0x1d0733[_0xfc53('0x18')]['findAll']({'attributes':['id',_0xfc53('0x12'),_0xfc53('0x19')],'where':{'role':_0xfc53('0x1a'),'chanspy':!![]},'raw':!![]})[_0xfc53('0x1b')](function(_0x547666){if(_0x547666){return _0x4d21e0(getChanSpyApplications(_0x56cb7a,_0x547666));}return _0x4d21e0([]);})[_0xfc53('0x1c')](function(_0x5b022a){_0x1f1718(_0x5b022a);});});};module['exports']=function(_0x49864d,_0x508a14){var _0x236998=_0x49864d['models'];return _0x49864d['define']('VoiceChanSpy',attributes,{'tableName':'voice_chanspy','paranoid':![],'indexes':[],'timestamps':!![],'hooks':{'afterCreate':function(_0x17e2d5,_0x3a94c7,_0x5b1d08){return getChanSpyPromise(_0x236998,_0x17e2d5)['then'](function(_0x1d6b58){if(_0x1d6b58&&_0x1d6b58['length']){return _0x236998[_0xfc53('0x1d')]['bulkCreate'](_0x1d6b58);}})[_0xfc53('0x1b')](function(){_0x5b1d08();})[_0xfc53('0x1c')](function(_0x1cf361){_0x5b1d08(_0x1cf361);});},'afterUpdate':function(_0x216879,_0x52cd5c,_0x109f97){return _0x236998[_0xfc53('0x1d')][_0xfc53('0x1e')]({'where':{'ChanSpyId':_0x216879['id']}})[_0xfc53('0x1b')](function(){return getChanSpyPromise(_0x236998,_0x216879);})[_0xfc53('0x1b')](function(_0x25cb0b){if(_0x25cb0b&&_0x25cb0b[_0xfc53('0x16')]){return _0x236998[_0xfc53('0x1d')]['bulkCreate'](_0x25cb0b);}})['then'](function(){_0x109f97();})[_0xfc53('0x1c')](function(_0x3c6c89){_0x109f97(_0x3c6c89);});},'afterDestroy':function(_0x430e51,_0x58b910,_0x1728aa){return _0x236998[_0xfc53('0x1d')][_0xfc53('0x1e')]({'where':{'ChanSpyId':_0x430e51['id']}})[_0xfc53('0x1b')](function(){_0x1728aa();})['catch'](function(_0x112a01){_0x1728aa(_0x112a01);});}}});};
\ No newline at end of file
+var _0x53f4=['findAll','agent','then','catch','define','VoiceChanSpy','voice_chanspy','VoiceExtension','bulkCreate','destroy','util','bluebird','./voiceChanSpy.attributes','context','from-sip','format','%s%s','prefix','system','push','merge','Set','CDR(type)=%s','chanspy','record','MixMonitor','${UNIQUEID}.%s,a','recordingFormat','auth','Authenticate','password','SIP/%s,%s','name','options','StopMixMonitor','length','concat','internal'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x53f4,0x186));var _0x453f=function(_0x40570f,_0x3fb4fd){_0x40570f=_0x40570f-0x0;var _0x4f1ad9=_0x53f4[_0x40570f];return _0x4f1ad9;};'use strict';var _=require('lodash');var util=require(_0x453f('0x0'));var BPromise=require(_0x453f('0x1'));var attributes=require(_0x453f('0x2'));var getUserApplications=function(_0x1e1886,_0x5c37f5,_0x126ef6){var _0x3051d2=0x1;var _0x162bf5=[];var _0x5277c7={'context':_0x5c37f5[_0x453f('0x3')]||_0x453f('0x4'),'exten':util[_0x453f('0x5')](_0x453f('0x6'),_0x1e1886[_0x453f('0x7')],_0x126ef6),'type':_0x453f('0x8'),'isApp':![],'ChanSpyId':_0x1e1886['id'],'UserId':_0x5c37f5['id']};_0x162bf5[_0x453f('0x9')](_[_0x453f('0xa')]({'app':_0x453f('0xb'),'appdata':util[_0x453f('0x5')](_0x453f('0xc'),_0x453f('0xd')),'priority':_0x3051d2++},_0x5277c7));if(_0x1e1886[_0x453f('0xe')]){_0x162bf5['push'](_[_0x453f('0xa')]({'app':_0x453f('0xf'),'appdata':util['format'](_0x453f('0x10'),_0x1e1886[_0x453f('0x11')]),'priority':_0x3051d2++},_0x5277c7));}if(_0x1e1886[_0x453f('0x12')]){_0x162bf5['push'](_[_0x453f('0xa')]({'app':_0x453f('0x13'),'appdata':_0x1e1886[_0x453f('0x14')],'priority':_0x3051d2++},_0x5277c7));}_0x162bf5[_0x453f('0x9')](_['merge']({'app':'ChanSpy','appdata':util[_0x453f('0x5')](_0x453f('0x15'),_0x5c37f5[_0x453f('0x16')],_0x1e1886[_0x453f('0x17')]?_0x1e1886['options']['join'](''):''),'priority':_0x3051d2++},_0x5277c7));if(_0x1e1886[_0x453f('0xe')]){_0x162bf5[_0x453f('0x9')](_[_0x453f('0xa')]({'app':_0x453f('0x18'),'priority':_0x3051d2++},_0x5277c7));}return _0x162bf5;};var getChanSpyApplications=function(_0x4f359b,_0x512369){var _0x5a4664=[];for(var _0x7dccf4=0x0,_0x58def4=0x1;_0x7dccf4<_0x512369[_0x453f('0x19')];_0x7dccf4++,_0x58def4=0x1){_0x5a4664=_0x5a4664[_0x453f('0x1a')](getUserApplications(_0x4f359b,_0x512369[_0x7dccf4],_0x512369[_0x7dccf4][_0x453f('0x1b')]));if(_0x512369[_0x7dccf4][_0x453f('0x1b')]!=_0x512369[_0x7dccf4]['name']){_0x5a4664=_0x5a4664[_0x453f('0x1a')](getUserApplications(_0x4f359b,_0x512369[_0x7dccf4],_0x512369[_0x7dccf4]['name']));}}return _0x5a4664;};var getChanSpyPromise=function(_0x419275,_0x55ddb5){return new BPromise(function(_0x357906,_0x20279f){return _0x419275['User'][_0x453f('0x1c')]({'attributes':['id','name',_0x453f('0x1b')],'where':{'role':_0x453f('0x1d'),'chanspy':!![]},'raw':!![]})[_0x453f('0x1e')](function(_0x11fbcf){if(_0x11fbcf){return _0x357906(getChanSpyApplications(_0x55ddb5,_0x11fbcf));}return _0x357906([]);})[_0x453f('0x1f')](function(_0x48c7ea){_0x20279f(_0x48c7ea);});});};module['exports']=function(_0x39af57,_0x86348e){var _0x446402=_0x39af57['models'];return _0x39af57[_0x453f('0x20')](_0x453f('0x21'),attributes,{'tableName':_0x453f('0x22'),'paranoid':![],'indexes':[],'timestamps':!![],'hooks':{'afterCreate':function(_0xf352de,_0x5f4f1e,_0x4c33bf){return getChanSpyPromise(_0x446402,_0xf352de)[_0x453f('0x1e')](function(_0xd2a603){if(_0xd2a603&&_0xd2a603[_0x453f('0x19')]){return _0x446402[_0x453f('0x23')][_0x453f('0x24')](_0xd2a603);}})[_0x453f('0x1e')](function(){_0x4c33bf();})[_0x453f('0x1f')](function(_0x1eec91){_0x4c33bf(_0x1eec91);});},'afterUpdate':function(_0x5de4c3,_0x4e0283,_0x83e2d4){return _0x446402[_0x453f('0x23')][_0x453f('0x25')]({'where':{'ChanSpyId':_0x5de4c3['id']}})[_0x453f('0x1e')](function(){return getChanSpyPromise(_0x446402,_0x5de4c3);})[_0x453f('0x1e')](function(_0x106ce2){if(_0x106ce2&&_0x106ce2['length']){return _0x446402[_0x453f('0x23')]['bulkCreate'](_0x106ce2);}})[_0x453f('0x1e')](function(){_0x83e2d4();})[_0x453f('0x1f')](function(_0x49b5f8){_0x83e2d4(_0x49b5f8);});},'afterDestroy':function(_0x569bcb,_0x50f9e5,_0x3b8be8){return _0x446402[_0x453f('0x23')]['destroy']({'where':{'ChanSpyId':_0x569bcb['id']}})[_0x453f('0x1e')](function(){_0x3b8be8();})['catch'](function(_0x19d27e){_0x3b8be8(_0x19d27e);});}}});};
\ No newline at end of file
index 15d918a..08431b5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x765e=['../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','request','then','info','request\x20sent','debug','VoiceChanSpy,\x20%s,\x20%s,\x20%s','stringify','error','VoiceChanSpy,\x20%s,\x20%s','message','result','catch','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x765e,0x131));var _0xe765=function(_0x5ef189,_0x5d683e){_0x5ef189=_0x5ef189-0x0;var _0x182295=_0x765e[_0x5ef189];return _0x182295;};'use strict';var _=require(_0xe765('0x0'));var util=require(_0xe765('0x1'));var moment=require(_0xe765('0x2'));var BPromise=require(_0xe765('0x3'));var rs=require(_0xe765('0x4'));var fs=require('fs');var Redis=require(_0xe765('0x5'));var db=require(_0xe765('0x6'))['db'];var utils=require(_0xe765('0x7'));var logger=require(_0xe765('0x8'))(_0xe765('0x9'));var config=require(_0xe765('0xa'));var jayson=require(_0xe765('0xb'));var client=jayson[_0xe765('0xc')][_0xe765('0xd')]({'port':0x232a});function respondWithRpcPromise(_0xdd89e7,_0x504542,_0x35d891){return new BPromise(function(_0x28e955,_0x27b0f4){return client[_0xe765('0xe')](_0xdd89e7,_0x35d891)[_0xe765('0xf')](function(_0x41801f){logger[_0xe765('0x10')]('VoiceChanSpy,\x20%s,\x20%s',_0x504542,_0xe765('0x11'));logger[_0xe765('0x12')](_0xe765('0x13'),_0x504542,'request\x20sent',JSON[_0xe765('0x14')](_0x41801f));if(_0x41801f['error']){if(_0x41801f['error']['code']===0x1f4){logger[_0xe765('0x15')](_0xe765('0x16'),_0x504542,_0x41801f[_0xe765('0x15')][_0xe765('0x17')]);return _0x27b0f4(_0x41801f[_0xe765('0x15')]['message']);}logger[_0xe765('0x15')](_0xe765('0x16'),_0x504542,_0x41801f[_0xe765('0x15')][_0xe765('0x17')]);return _0x28e955(_0x41801f[_0xe765('0x15')]['message']);}else{logger['info'](_0xe765('0x16'),_0x504542,_0xe765('0x11'));_0x28e955(_0x41801f[_0xe765('0x18')]['message']);}})[_0xe765('0x19')](function(_0x36aca3){logger[_0xe765('0x15')](_0xe765('0x16'),_0x504542,_0x36aca3);_0x27b0f4(_0x36aca3);});});}
\ No newline at end of file
+var _0x1be1=['stringify','error','code','message','result','catch','moment','bluebird','ioredis','../../mysqldb','../../config/utils','../../config/logger','../../config/environment','jayson/promise','client','request','then','info','VoiceChanSpy,\x20%s,\x20%s','debug','VoiceChanSpy,\x20%s,\x20%s,\x20%s','request\x20sent'];(function(_0x4ea69d,_0x290f53){var _0x5318e0=function(_0x18e081){while(--_0x18e081){_0x4ea69d['push'](_0x4ea69d['shift']());}};_0x5318e0(++_0x290f53);}(_0x1be1,0x192));var _0x11be=function(_0x259526,_0x59e687){_0x259526=_0x259526-0x0;var _0x2b20c2=_0x1be1[_0x259526];return _0x2b20c2;};'use strict';var _=require('lodash');var util=require('util');var moment=require(_0x11be('0x0'));var BPromise=require(_0x11be('0x1'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x11be('0x2'));var db=require(_0x11be('0x3'))['db'];var utils=require(_0x11be('0x4'));var logger=require(_0x11be('0x5'))('rpc');var config=require(_0x11be('0x6'));var jayson=require(_0x11be('0x7'));var client=jayson[_0x11be('0x8')]['http']({'port':0x232a});function respondWithRpcPromise(_0xfe8c62,_0x497730,_0x18f661){return new BPromise(function(_0x11fc15,_0x246772){return client[_0x11be('0x9')](_0xfe8c62,_0x18f661)[_0x11be('0xa')](function(_0x5f3d04){logger[_0x11be('0xb')](_0x11be('0xc'),_0x497730,'request\x20sent');logger[_0x11be('0xd')](_0x11be('0xe'),_0x497730,_0x11be('0xf'),JSON[_0x11be('0x10')](_0x5f3d04));if(_0x5f3d04['error']){if(_0x5f3d04[_0x11be('0x11')][_0x11be('0x12')]===0x1f4){logger[_0x11be('0x11')]('VoiceChanSpy,\x20%s,\x20%s',_0x497730,_0x5f3d04[_0x11be('0x11')][_0x11be('0x13')]);return _0x246772(_0x5f3d04['error'][_0x11be('0x13')]);}logger['error']('VoiceChanSpy,\x20%s,\x20%s',_0x497730,_0x5f3d04['error']['message']);return _0x11fc15(_0x5f3d04['error']['message']);}else{logger['info'](_0x11be('0xc'),_0x497730,'request\x20sent');_0x11fc15(_0x5f3d04[_0x11be('0x14')][_0x11be('0x13')]);}})[_0x11be('0x15')](function(_0x216b8c){logger['error'](_0x11be('0xc'),_0x497730,_0x216b8c);_0x246772(_0x216b8c);});});}
\ No newline at end of file
index a767cb3..d368d47 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd197=['/:id','destroy','exports','multer','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','./voiceContext.controller','isAuthenticated','index','show','create','update','delete'];(function(_0x192396,_0x143451){var _0x2f50db=function(_0x4367ab){while(--_0x4367ab){_0x192396['push'](_0x192396['shift']());}};_0x2f50db(++_0x143451);}(_0xd197,0xfa));var _0x7d19=function(_0x50b383,_0x271261){_0x50b383=_0x50b383-0x0;var _0x557b3e=_0xd197[_0x50b383];return _0x557b3e;};'use strict';var multer=require(_0x7d19('0x0'));var util=require(_0x7d19('0x1'));var path=require(_0x7d19('0x2'));var timeout=require(_0x7d19('0x3'));var express=require(_0x7d19('0x4'));var router=express[_0x7d19('0x5')]();var fs_extra=require(_0x7d19('0x6'));var auth=require(_0x7d19('0x7'));var interaction=require(_0x7d19('0x8'));var config=require('../../config/environment');var controller=require(_0x7d19('0x9'));router['get']('/',auth[_0x7d19('0xa')](),controller[_0x7d19('0xb')]);router['get']('/:id',auth[_0x7d19('0xa')](),controller[_0x7d19('0xc')]);router['post']('/',auth[_0x7d19('0xa')](),controller[_0x7d19('0xd')]);router['put']('/:id',auth['isAuthenticated'](),controller[_0x7d19('0xe')]);router[_0x7d19('0xf')](_0x7d19('0x10'),auth[_0x7d19('0xa')](),controller[_0x7d19('0x11')]);module[_0x7d19('0x12')]=router;
\ No newline at end of file
+var _0xe9f3=['/:id','update','destroy','exports','multer','path','express','fs-extra','../../components/auth/service','../../components/interaction/service','get','isAuthenticated','index','show','post','put'];(function(_0xa09242,_0x13dfdc){var _0x411cd0=function(_0x88dbe4){while(--_0x88dbe4){_0xa09242['push'](_0xa09242['shift']());}};_0x411cd0(++_0x13dfdc);}(_0xe9f3,0x1d4));var _0x3e9f=function(_0x1ac38e,_0xac814c){_0x1ac38e=_0x1ac38e-0x0;var _0xfc7d2e=_0xe9f3[_0x1ac38e];return _0xfc7d2e;};'use strict';var multer=require(_0x3e9f('0x0'));var util=require('util');var path=require(_0x3e9f('0x1'));var timeout=require('connect-timeout');var express=require(_0x3e9f('0x2'));var router=express['Router']();var fs_extra=require(_0x3e9f('0x3'));var auth=require(_0x3e9f('0x4'));var interaction=require(_0x3e9f('0x5'));var config=require('../../config/environment');var controller=require('./voiceContext.controller');router[_0x3e9f('0x6')]('/',auth[_0x3e9f('0x7')](),controller[_0x3e9f('0x8')]);router['get']('/:id',auth[_0x3e9f('0x7')](),controller[_0x3e9f('0x9')]);router[_0x3e9f('0xa')]('/',auth[_0x3e9f('0x7')](),controller['create']);router[_0x3e9f('0xb')](_0x3e9f('0xc'),auth['isAuthenticated'](),controller[_0x3e9f('0xd')]);router['delete']('/:id',auth[_0x3e9f('0x7')](),controller[_0x3e9f('0xe')]);module[_0x3e9f('0xf')]=router;
\ No newline at end of file
index bcade38..93a8246 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc5a0=['BOOLEAN','sequelize','exports','STRING','name'];(function(_0x5783f4,_0x4a9e0a){var _0x28e380=function(_0x1ffc49){while(--_0x1ffc49){_0x5783f4['push'](_0x5783f4['shift']());}};_0x28e380(++_0x4a9e0a);}(_0xc5a0,0x191));var _0x0c5a=function(_0xcf9801,_0x59d006){_0xcf9801=_0xcf9801-0x0;var _0x330bae=_0xc5a0[_0xcf9801];return _0x330bae;};'use strict';var Sequelize=require(_0x0c5a('0x0'));module[_0x0c5a('0x1')]={'name':{'type':Sequelize[_0x0c5a('0x2')],'unique':_0x0c5a('0x3')},'description':{'type':Sequelize[_0x0c5a('0x2')],'allowNull':!![]},'defaultEntry':{'type':Sequelize[_0x0c5a('0x4')],'defaultValue':0x0}};
\ No newline at end of file
+var _0xbb27=['sequelize','exports','STRING','name','BOOLEAN'];(function(_0x4b2863,_0x494899){var _0x567d67=function(_0x751f03){while(--_0x751f03){_0x4b2863['push'](_0x4b2863['shift']());}};_0x567d67(++_0x494899);}(_0xbb27,0xd2));var _0x7bb2=function(_0x502c7d,_0x2f1285){_0x502c7d=_0x502c7d-0x0;var _0x30b7ed=_0xbb27[_0x502c7d];return _0x30b7ed;};'use strict';var Sequelize=require(_0x7bb2('0x0'));module[_0x7bb2('0x1')]={'name':{'type':Sequelize[_0x7bb2('0x2')],'unique':_0x7bb2('0x3')},'description':{'type':Sequelize[_0x7bb2('0x2')],'allowNull':!![]},'defaultEntry':{'type':Sequelize[_0x7bb2('0x4')],'defaultValue':0x0}};
\ No newline at end of file
index b06f62c..979c206 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf760=['debug','VoiceContext,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','status','end','json','undefined','limit','count','offset','set','Content-Range','apply','save','update','get','Contexts','UserProfileResource','destroy','stack','name','send','index','VoiceContext','rawAttributes','key','model','map','keys','query','filters','intersection','attributes','fields','length','hasOwnProperty','order','sort','where','pick','filter','VIRTUAL','merge','options','includeAll','include','findAll','rows','show','params','create','body','readFileSync','root','utf8','render','writeFileSync','/etc/asterisk/extensions_xcally_contexts.conf','Reload','user','role','autoAssociation','join','server/files/templates/context.ejs','chan_sip.so','find','eml-format','rimraf','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox','to-csv','ejs','fs-extra','lodash','desk.js','querystring','papaparse','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/environment','../../mysqldb','client','http','then','info','VoiceContext,\x20%s,\x20%s','request\x20sent'];(function(_0x97c841,_0x1dd733){var _0x3548f1=function(_0x1b7c2d){while(--_0x1b7c2d){_0x97c841['push'](_0x97c841['shift']());}};_0x3548f1(++_0x1dd733);}(_0xf760,0x176));var _0x0f76=function(_0x2acdd1,_0x1bc76){_0x2acdd1=_0x2acdd1-0x0;var _0xe0735a=_0xf760[_0x2acdd1];return _0xe0735a;};'use strict';var emlformat=require(_0x0f76('0x0'));var rimraf=require(_0x0f76('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0x0f76('0x2'));var rp=require(_0x0f76('0x3'));var moment=require(_0x0f76('0x4'));var BPromise=require(_0x0f76('0x5'));var Mustache=require(_0x0f76('0x6'));var util=require(_0x0f76('0x7'));var path=require(_0x0f76('0x8'));var sox=require(_0x0f76('0x9'));var csv=require(_0x0f76('0xa'));var ejs=require(_0x0f76('0xb'));var fs=require('fs');var fs_extra=require(_0x0f76('0xc'));var _=require(_0x0f76('0xd'));var squel=require('squel');var crypto=require('crypto');var jsforce=require('jsforce');var deskjs=require(_0x0f76('0xe'));var toCsv=require('to-csv');var querystring=require(_0x0f76('0xf'));var Papa=require(_0x0f76('0x10'));var Redis=require('ioredis');var authService=require('../../components/auth/service');var qs=require(_0x0f76('0x11'));var as=require(_0x0f76('0x12'));var hardwareService=require(_0x0f76('0x13'));var logger=require(_0x0f76('0x14'))(_0x0f76('0x15'));var utils=require('../../config/utils');var config=require(_0x0f76('0x16'));var licenseUtil=require('../../config/license/util');var db=require(_0x0f76('0x17'))['db'];var jayson=require('jayson/promise');var client=jayson[_0x0f76('0x18')][_0x0f76('0x19')]({'port':0x232a});function respondWithRpcPromise(_0xeff97e,_0x20b012,_0x20b2e4,_0x1a3714){return new BPromise(function(_0x2914b2,_0x304a54){var _0x1de0db=_0x1a3714||client;return _0x1de0db['request'](_0xeff97e,_0x20b2e4)[_0x0f76('0x1a')](function(_0x46a793){logger[_0x0f76('0x1b')](_0x0f76('0x1c'),_0x20b012,_0x0f76('0x1d'));logger[_0x0f76('0x1e')](_0x0f76('0x1f'),_0x20b012,_0x0f76('0x1d'),JSON[_0x0f76('0x20')](_0x46a793));if(_0x46a793[_0x0f76('0x21')]){if(_0x46a793[_0x0f76('0x21')][_0x0f76('0x22')]===0x1f4){logger[_0x0f76('0x21')](_0x0f76('0x1c'),_0x20b012,_0x46a793[_0x0f76('0x21')][_0x0f76('0x23')]);return _0x304a54(_0x46a793[_0x0f76('0x21')][_0x0f76('0x23')]);}logger[_0x0f76('0x21')]('VoiceContext,\x20%s,\x20%s',_0x20b012,_0x46a793[_0x0f76('0x21')][_0x0f76('0x23')]);return _0x2914b2(_0x46a793[_0x0f76('0x21')][_0x0f76('0x23')]);}else{logger[_0x0f76('0x1b')](_0x0f76('0x1c'),_0x20b012,'request\x20sent');_0x2914b2(_0x46a793[_0x0f76('0x24')][_0x0f76('0x23')]);}})[_0x0f76('0x25')](function(_0x25f527){logger[_0x0f76('0x21')](_0x0f76('0x1c'),_0x20b012,_0x25f527);_0x304a54(_0x25f527);});});}function respondWithStatusCode(_0x3a997a,_0x4f670a){_0x4f670a=_0x4f670a||0xcc;return function(_0x1a06d6){if(_0x1a06d6){return _0x3a997a['sendStatus'](_0x4f670a);}return _0x3a997a[_0x0f76('0x26')](_0x4f670a)[_0x0f76('0x27')]();};}function respondWithResult(_0x4f58c5,_0x5f3587){_0x5f3587=_0x5f3587||0xc8;return function(_0x406592){if(_0x406592){return _0x4f58c5[_0x0f76('0x26')](_0x5f3587)[_0x0f76('0x28')](_0x406592);}};}function respondWithFilteredResult(_0x3fd11a,_0x557c8c){return function(_0x81249a){if(_0x81249a){var _0x4b4e53=typeof _0x557c8c['offset']===_0x0f76('0x29')&&typeof _0x557c8c[_0x0f76('0x2a')]==='undefined';var _0x11150c=_0x81249a[_0x0f76('0x2b')];var _0x3bf6a4=_0x4b4e53?0x0:_0x557c8c[_0x0f76('0x2c')];var _0x243496=_0x4b4e53?_0x81249a[_0x0f76('0x2b')]:_0x557c8c['offset']+_0x557c8c[_0x0f76('0x2a')];var _0x15b524;if(_0x243496>=_0x11150c){_0x243496=_0x11150c;_0x15b524=0xc8;}else{_0x15b524=0xce;}_0x3fd11a[_0x0f76('0x26')](_0x15b524);return _0x3fd11a[_0x0f76('0x2d')](_0x0f76('0x2e'),_0x3bf6a4+'-'+_0x243496+'/'+_0x11150c)[_0x0f76('0x28')](_0x81249a);}return null;};}function patchUpdates(_0x29668a){return function(_0x45e534){try{jsonpatch[_0x0f76('0x2f')](_0x45e534,_0x29668a,!![]);}catch(_0x27db9c){return BPromise['reject'](_0x27db9c);}return _0x45e534[_0x0f76('0x30')]();};}function saveUpdates(_0x52e6f9,_0x18c55b){return function(_0x269d66){if(_0x269d66){return _0x269d66[_0x0f76('0x31')](_0x52e6f9)['then'](function(_0x51e411){return _0x51e411;});}return null;};}function removeEntity(_0x2f5b17,_0x3b5340){return function(_0x472b14){if(_0x472b14){return _0x472b14['destroy']()[_0x0f76('0x1a')](function(){var _0x3e8f59=_0x472b14[_0x0f76('0x32')]({'plain':!![]});var _0x2ac2fe=_0x0f76('0x33');return db[_0x0f76('0x34')][_0x0f76('0x35')]({'where':{'type':_0x2ac2fe,'resourceId':_0x3e8f59['id']}})['then'](function(){return _0x472b14;});})[_0x0f76('0x1a')](function(){_0x2f5b17[_0x0f76('0x26')](0xcc)[_0x0f76('0x27')]();});}};}function handleEntityNotFound(_0x314f82,_0x60d4b0){return function(_0x3946b4){if(!_0x3946b4){_0x314f82['sendStatus'](0x194);}return _0x3946b4;};}function handleError(_0x16ef0a,_0xb33b12){_0xb33b12=_0xb33b12||0x1f4;return function(_0x248d91){logger[_0x0f76('0x21')](_0x248d91[_0x0f76('0x36')]);if(_0x248d91[_0x0f76('0x37')]){delete _0x248d91['name'];}_0x16ef0a[_0x0f76('0x26')](_0xb33b12)[_0x0f76('0x38')](_0x248d91);};}exports[_0x0f76('0x39')]=function(_0x350f4a,_0x429428){var _0x214a7a={},_0x495b2b={},_0x2a63bd={'count':0x0,'rows':[]};var _0xea6a1e=_['map'](db[_0x0f76('0x3a')][_0x0f76('0x3b')],function(_0x2a2fd0){return{'name':_0x2a2fd0['fieldName'],'type':_0x2a2fd0['type'][_0x0f76('0x3c')]};});_0x495b2b[_0x0f76('0x3d')]=_[_0x0f76('0x3e')](_0xea6a1e,'name');_0x495b2b['query']=_[_0x0f76('0x3f')](_0x350f4a[_0x0f76('0x40')]);_0x495b2b[_0x0f76('0x41')]=_[_0x0f76('0x42')](_0x495b2b['model'],_0x495b2b[_0x0f76('0x40')]);_0x214a7a[_0x0f76('0x43')]=_[_0x0f76('0x42')](_0x495b2b[_0x0f76('0x3d')],qs[_0x0f76('0x44')](_0x350f4a[_0x0f76('0x40')][_0x0f76('0x44')]));_0x214a7a[_0x0f76('0x43')]=_0x214a7a[_0x0f76('0x43')][_0x0f76('0x45')]?_0x214a7a[_0x0f76('0x43')]:_0x495b2b['model'];if(!_0x350f4a[_0x0f76('0x40')][_0x0f76('0x46')]('nolimit')){_0x214a7a[_0x0f76('0x2a')]=qs[_0x0f76('0x2a')](_0x350f4a[_0x0f76('0x40')][_0x0f76('0x2a')]);_0x214a7a['offset']=qs[_0x0f76('0x2c')](_0x350f4a['query'][_0x0f76('0x2c')]);}_0x214a7a[_0x0f76('0x47')]=qs[_0x0f76('0x48')](_0x350f4a[_0x0f76('0x40')][_0x0f76('0x48')]);_0x214a7a[_0x0f76('0x49')]=qs[_0x0f76('0x41')](_[_0x0f76('0x4a')](_0x350f4a['query'],_0x495b2b['filters']),_0xea6a1e);if(_0x350f4a['query'][_0x0f76('0x4b')]){_0x214a7a['where']=_['merge'](_0x214a7a[_0x0f76('0x49')],{'$or':_['map'](_0xea6a1e,function(_0x3fcf02){if(_0x3fcf02['type']!==_0x0f76('0x4c')){var _0x28ae7e={};_0x28ae7e[_0x3fcf02[_0x0f76('0x37')]]={'$like':'%'+_0x350f4a[_0x0f76('0x40')][_0x0f76('0x4b')]+'%'};return _0x28ae7e;}})});}_0x214a7a=_[_0x0f76('0x4d')]({},_0x214a7a,_0x350f4a[_0x0f76('0x4e')]);var _0x5af7e3={'where':_0x214a7a['where']};return db[_0x0f76('0x3a')]['count'](_0x5af7e3)['then'](function(_0x3f55dc){_0x2a63bd[_0x0f76('0x2b')]=_0x3f55dc;if(_0x350f4a[_0x0f76('0x40')][_0x0f76('0x4f')]){_0x214a7a[_0x0f76('0x50')]=[{'all':!![]}];}return db[_0x0f76('0x3a')][_0x0f76('0x51')](_0x214a7a);})[_0x0f76('0x1a')](function(_0x279a28){_0x2a63bd[_0x0f76('0x52')]=_0x279a28;return _0x2a63bd;})[_0x0f76('0x1a')](respondWithFilteredResult(_0x429428,_0x214a7a))['catch'](handleError(_0x429428,null));};exports[_0x0f76('0x53')]=function(_0x54420b,_0x317abe){var _0x3a2951={'raw':![],'where':{'id':_0x54420b[_0x0f76('0x54')]['id']}},_0x55cf2b={};_0x55cf2b[_0x0f76('0x3d')]=_[_0x0f76('0x3f')](db[_0x0f76('0x3a')][_0x0f76('0x3b')]);_0x55cf2b['query']=_[_0x0f76('0x3f')](_0x54420b[_0x0f76('0x40')]);_0x55cf2b[_0x0f76('0x41')]=_['intersection'](_0x55cf2b[_0x0f76('0x3d')],_0x55cf2b[_0x0f76('0x40')]);_0x3a2951['attributes']=_[_0x0f76('0x42')](_0x55cf2b[_0x0f76('0x3d')],qs[_0x0f76('0x44')](_0x54420b[_0x0f76('0x40')]['fields']));_0x3a2951[_0x0f76('0x43')]=_0x3a2951[_0x0f76('0x43')][_0x0f76('0x45')]?_0x3a2951[_0x0f76('0x43')]:_0x55cf2b[_0x0f76('0x3d')];if(_0x54420b['query'][_0x0f76('0x4f')]){_0x3a2951['include']=[{'all':!![]}];}_0x3a2951=_['merge']({},_0x3a2951,_0x54420b['options']);return db[_0x0f76('0x3a')]['find'](_0x3a2951)[_0x0f76('0x1a')](handleEntityNotFound(_0x317abe,null))[_0x0f76('0x1a')](respondWithResult(_0x317abe,null))[_0x0f76('0x25')](handleError(_0x317abe,null));};exports[_0x0f76('0x55')]=function(_0x21dbaf,_0x4b8f49,_0x5f5354){var _0x3e11b3;return db[_0x0f76('0x3a')][_0x0f76('0x55')](_0x21dbaf[_0x0f76('0x56')],{'raw':!![]})[_0x0f76('0x1a')](function(_0x3272d0){_0x3e11b3=_0x3272d0;return db[_0x0f76('0x3a')][_0x0f76('0x51')]({'raw':!![]});})[_0x0f76('0x1a')](function(_0x3d351a){var _0x474586=fs[_0x0f76('0x57')](path['join'](config[_0x0f76('0x58')],'server/files/templates/context.ejs'),_0x0f76('0x59'));var _0x33d96d=ejs[_0x0f76('0x5a')](_0x474586,{'contexts':_0x3d351a||[]});fs[_0x0f76('0x5b')](_0x0f76('0x5c'),_0x33d96d);})[_0x0f76('0x1a')](function(){return respondWithRpcPromise(_0x0f76('0x5d'),_0x0f76('0x55'),{'module':'chan_sip.so'});})['then'](function(){var _0x35adb6=_0x21dbaf[_0x0f76('0x5e')]['get']({'plain':!![]});if(!_0x35adb6)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0x35adb6[_0x0f76('0x5f')]===_0x0f76('0x5e')){var _0x217a5a=_0x3e11b3[_0x0f76('0x32')]({'plain':!![]});return db['UserProfileSection']['find']({'where':{'name':'Contexts','userProfileId':_0x35adb6['userProfileId']},'raw':!![]})['then'](function(_0x561651){if(_0x561651&&_0x561651[_0x0f76('0x60')]===0x0){return db[_0x0f76('0x34')]['create']({'name':_0x217a5a[_0x0f76('0x37')],'resourceId':_0x217a5a['id'],'type':_0x561651[_0x0f76('0x37')],'sectionId':_0x561651['id']},{})[_0x0f76('0x1a')](function(){return _0x3e11b3;});}else{return _0x3e11b3;}})[_0x0f76('0x25')](function(_0x1af405){logger[_0x0f76('0x21')]('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0x1af405);throw _0x1af405;});}return _0x3e11b3;})[_0x0f76('0x1a')](respondWithResult(_0x4b8f49,0xc9))[_0x0f76('0x25')](handleError(_0x4b8f49,null));};exports[_0x0f76('0x31')]=function(_0x387c48,_0x42f843,_0xfdec81){var _0x179cb7;return db[_0x0f76('0x3a')]['find']({'where':{'id':_0x387c48[_0x0f76('0x54')]['id']}})[_0x0f76('0x1a')](handleEntityNotFound(_0x42f843,null))[_0x0f76('0x1a')](saveUpdates(_0x387c48[_0x0f76('0x56')],null))[_0x0f76('0x1a')](function(_0x4abdb5){if(_0x4abdb5){_0x179cb7=_0x4abdb5;return db['VoiceContext'][_0x0f76('0x51')]({'raw':!![]});}})[_0x0f76('0x1a')](function(_0x2317d8){var _0x6df3a2=fs[_0x0f76('0x57')](path[_0x0f76('0x61')](config[_0x0f76('0x58')],_0x0f76('0x62')),'utf8');var _0x2a51bb=ejs[_0x0f76('0x5a')](_0x6df3a2,{'contexts':_0x2317d8||[]});fs[_0x0f76('0x5b')](_0x0f76('0x5c'),_0x2a51bb);})[_0x0f76('0x1a')](function(){return respondWithRpcPromise(_0x0f76('0x5d'),_0x0f76('0x31'),{'module':_0x0f76('0x63')});})[_0x0f76('0x1a')](function(){return _0x179cb7;})['then'](respondWithResult(_0x42f843,null))[_0x0f76('0x25')](handleError(_0x42f843,null));};exports[_0x0f76('0x35')]=function(_0x3058a0,_0x4426db,_0x106f39){var _0x3049bf;return db['VoiceContext'][_0x0f76('0x64')]({'where':{'id':_0x3058a0[_0x0f76('0x54')]['id']}})[_0x0f76('0x1a')](handleEntityNotFound(_0x4426db,null))[_0x0f76('0x1a')](removeEntity(_0x4426db,null))['then'](function(){return db[_0x0f76('0x3a')][_0x0f76('0x51')]({'raw':!![]});})[_0x0f76('0x1a')](function(_0x1e90a3){var _0x4d9b2f=fs[_0x0f76('0x57')](path['join'](config[_0x0f76('0x58')],'server/files/templates/context.ejs'),'utf8');var _0xbac853=ejs[_0x0f76('0x5a')](_0x4d9b2f,{'contexts':_0x1e90a3});fs[_0x0f76('0x5b')](_0x0f76('0x5c'),_0xbac853);return respondWithRpcPromise('Reload','destroy',{'module':_0x0f76('0x63')});})['catch'](handleError(_0x4426db,null));};
\ No newline at end of file
+var _0xb337=['keys','query','filters','intersection','attributes','fields','order','sort','where','pick','filter','merge','VIRTUAL','options','includeAll','findAll','rows','catch','show','params','length','create','root','server/files/templates/context.ejs','render','writeFileSync','/etc/asterisk/extensions_xcally_contexts.conf','Reload','chan_sip.so','user','get','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','UserProfileSection','userProfileId','autoAssociation','UserProfileResource','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','find','body','readFileSync','join','utf8','eml-format','zip-dir','fast-json-patch','request-promise','moment','bluebird','util','sox','to-csv','ejs','squel','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../config/license/hardware','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','jayson/promise','client','http','request','info','VoiceContext,\x20%s,\x20%s','request\x20sent','debug','VoiceContext,\x20%s,\x20%s,\x20%s','stringify','error','code','message','end','status','json','offset','undefined','limit','count','set','reject','save','destroy','then','Contexts','stack','index','VoiceContext','fieldName','type','key','model','map','name'];(function(_0x2d7f0e,_0x3e6fbd){var _0x110b07=function(_0x557b00){while(--_0x557b00){_0x2d7f0e['push'](_0x2d7f0e['shift']());}};_0x110b07(++_0x3e6fbd);}(_0xb337,0xf5));var _0x7b33=function(_0x30aaa0,_0x2e4e0f){_0x30aaa0=_0x30aaa0-0x0;var _0x383563=_0xb337[_0x30aaa0];return _0x383563;};'use strict';var emlformat=require(_0x7b33('0x0'));var rimraf=require('rimraf');var zipdir=require(_0x7b33('0x1'));var jsonpatch=require(_0x7b33('0x2'));var rp=require(_0x7b33('0x3'));var moment=require(_0x7b33('0x4'));var BPromise=require(_0x7b33('0x5'));var Mustache=require('mustache');var util=require(_0x7b33('0x6'));var path=require('path');var sox=require(_0x7b33('0x7'));var csv=require(_0x7b33('0x8'));var ejs=require(_0x7b33('0x9'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require('lodash');var squel=require(_0x7b33('0xa'));var crypto=require(_0x7b33('0xb'));var jsforce=require(_0x7b33('0xc'));var deskjs=require(_0x7b33('0xd'));var toCsv=require(_0x7b33('0x8'));var querystring=require(_0x7b33('0xe'));var Papa=require(_0x7b33('0xf'));var Redis=require(_0x7b33('0x10'));var authService=require('../../components/auth/service');var qs=require('../../components/parsers/qs');var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x7b33('0x11'));var logger=require('../../config/logger')(_0x7b33('0x12'));var utils=require(_0x7b33('0x13'));var config=require(_0x7b33('0x14'));var licenseUtil=require(_0x7b33('0x15'));var db=require(_0x7b33('0x16'))['db'];var jayson=require(_0x7b33('0x17'));var client=jayson[_0x7b33('0x18')][_0x7b33('0x19')]({'port':0x232a});function respondWithRpcPromise(_0x1f6e7d,_0x29c3d9,_0x13f619,_0x5ac82f){return new BPromise(function(_0x3c07fa,_0x59f9d1){var _0x4ea7db=_0x5ac82f||client;return _0x4ea7db[_0x7b33('0x1a')](_0x1f6e7d,_0x13f619)['then'](function(_0x515fd3){logger[_0x7b33('0x1b')](_0x7b33('0x1c'),_0x29c3d9,_0x7b33('0x1d'));logger[_0x7b33('0x1e')](_0x7b33('0x1f'),_0x29c3d9,_0x7b33('0x1d'),JSON[_0x7b33('0x20')](_0x515fd3));if(_0x515fd3[_0x7b33('0x21')]){if(_0x515fd3[_0x7b33('0x21')][_0x7b33('0x22')]===0x1f4){logger[_0x7b33('0x21')](_0x7b33('0x1c'),_0x29c3d9,_0x515fd3[_0x7b33('0x21')][_0x7b33('0x23')]);return _0x59f9d1(_0x515fd3[_0x7b33('0x21')][_0x7b33('0x23')]);}logger[_0x7b33('0x21')](_0x7b33('0x1c'),_0x29c3d9,_0x515fd3[_0x7b33('0x21')][_0x7b33('0x23')]);return _0x3c07fa(_0x515fd3['error']['message']);}else{logger[_0x7b33('0x1b')]('VoiceContext,\x20%s,\x20%s',_0x29c3d9,_0x7b33('0x1d'));_0x3c07fa(_0x515fd3['result'][_0x7b33('0x23')]);}})['catch'](function(_0x59f5e5){logger[_0x7b33('0x21')](_0x7b33('0x1c'),_0x29c3d9,_0x59f5e5);_0x59f9d1(_0x59f5e5);});});}function respondWithStatusCode(_0x3bb40c,_0x278cd2){_0x278cd2=_0x278cd2||0xcc;return function(_0x285cd1){if(_0x285cd1){return _0x3bb40c['sendStatus'](_0x278cd2);}return _0x3bb40c['status'](_0x278cd2)[_0x7b33('0x24')]();};}function respondWithResult(_0x2aba17,_0x59f891){_0x59f891=_0x59f891||0xc8;return function(_0x492dca){if(_0x492dca){return _0x2aba17[_0x7b33('0x25')](_0x59f891)[_0x7b33('0x26')](_0x492dca);}};}function respondWithFilteredResult(_0x229460,_0x48c5c7){return function(_0x20aa50){if(_0x20aa50){var _0x52579d=typeof _0x48c5c7[_0x7b33('0x27')]===_0x7b33('0x28')&&typeof _0x48c5c7[_0x7b33('0x29')]===_0x7b33('0x28');var _0x3896c4=_0x20aa50['count'];var _0x51d80d=_0x52579d?0x0:_0x48c5c7['offset'];var _0x5ebe58=_0x52579d?_0x20aa50[_0x7b33('0x2a')]:_0x48c5c7['offset']+_0x48c5c7[_0x7b33('0x29')];var _0x109898;if(_0x5ebe58>=_0x3896c4){_0x5ebe58=_0x3896c4;_0x109898=0xc8;}else{_0x109898=0xce;}_0x229460[_0x7b33('0x25')](_0x109898);return _0x229460[_0x7b33('0x2b')]('Content-Range',_0x51d80d+'-'+_0x5ebe58+'/'+_0x3896c4)[_0x7b33('0x26')](_0x20aa50);}return null;};}function patchUpdates(_0x2fa22f){return function(_0x45fb7c){try{jsonpatch['apply'](_0x45fb7c,_0x2fa22f,!![]);}catch(_0x421f9d){return BPromise[_0x7b33('0x2c')](_0x421f9d);}return _0x45fb7c[_0x7b33('0x2d')]();};}function saveUpdates(_0x1da013,_0x375e53){return function(_0x511f92){if(_0x511f92){return _0x511f92['update'](_0x1da013)['then'](function(_0x12d695){return _0x12d695;});}return null;};}function removeEntity(_0x7a468e,_0x49d6b6){return function(_0x263bef){if(_0x263bef){return _0x263bef[_0x7b33('0x2e')]()[_0x7b33('0x2f')](function(){var _0x150c8f=_0x263bef['get']({'plain':!![]});var _0xaea3c4=_0x7b33('0x30');return db['UserProfileResource'][_0x7b33('0x2e')]({'where':{'type':_0xaea3c4,'resourceId':_0x150c8f['id']}})[_0x7b33('0x2f')](function(){return _0x263bef;});})[_0x7b33('0x2f')](function(){_0x7a468e[_0x7b33('0x25')](0xcc)[_0x7b33('0x24')]();});}};}function handleEntityNotFound(_0x45b50a,_0x4f9026){return function(_0x390f28){if(!_0x390f28){_0x45b50a['sendStatus'](0x194);}return _0x390f28;};}function handleError(_0x46623c,_0x150acb){_0x150acb=_0x150acb||0x1f4;return function(_0x155fbb){logger[_0x7b33('0x21')](_0x155fbb[_0x7b33('0x31')]);if(_0x155fbb['name']){delete _0x155fbb['name'];}_0x46623c[_0x7b33('0x25')](_0x150acb)['send'](_0x155fbb);};}exports[_0x7b33('0x32')]=function(_0x3a988c,_0xbc4ae){var _0x4d36db={},_0x40835a={},_0x3d590b={'count':0x0,'rows':[]};var _0x176554=_['map'](db[_0x7b33('0x33')]['rawAttributes'],function(_0x578383){return{'name':_0x578383[_0x7b33('0x34')],'type':_0x578383[_0x7b33('0x35')][_0x7b33('0x36')]};});_0x40835a[_0x7b33('0x37')]=_[_0x7b33('0x38')](_0x176554,_0x7b33('0x39'));_0x40835a['query']=_[_0x7b33('0x3a')](_0x3a988c[_0x7b33('0x3b')]);_0x40835a[_0x7b33('0x3c')]=_[_0x7b33('0x3d')](_0x40835a['model'],_0x40835a[_0x7b33('0x3b')]);_0x4d36db[_0x7b33('0x3e')]=_[_0x7b33('0x3d')](_0x40835a[_0x7b33('0x37')],qs[_0x7b33('0x3f')](_0x3a988c[_0x7b33('0x3b')][_0x7b33('0x3f')]));_0x4d36db[_0x7b33('0x3e')]=_0x4d36db['attributes']['length']?_0x4d36db[_0x7b33('0x3e')]:_0x40835a[_0x7b33('0x37')];if(!_0x3a988c[_0x7b33('0x3b')]['hasOwnProperty']('nolimit')){_0x4d36db[_0x7b33('0x29')]=qs['limit'](_0x3a988c[_0x7b33('0x3b')]['limit']);_0x4d36db[_0x7b33('0x27')]=qs['offset'](_0x3a988c[_0x7b33('0x3b')][_0x7b33('0x27')]);}_0x4d36db[_0x7b33('0x40')]=qs[_0x7b33('0x41')](_0x3a988c[_0x7b33('0x3b')][_0x7b33('0x41')]);_0x4d36db[_0x7b33('0x42')]=qs[_0x7b33('0x3c')](_[_0x7b33('0x43')](_0x3a988c[_0x7b33('0x3b')],_0x40835a[_0x7b33('0x3c')]),_0x176554);if(_0x3a988c[_0x7b33('0x3b')][_0x7b33('0x44')]){_0x4d36db[_0x7b33('0x42')]=_[_0x7b33('0x45')](_0x4d36db['where'],{'$or':_['map'](_0x176554,function(_0x11fab7){if(_0x11fab7[_0x7b33('0x35')]!==_0x7b33('0x46')){var _0x3d0452={};_0x3d0452[_0x11fab7[_0x7b33('0x39')]]={'$like':'%'+_0x3a988c[_0x7b33('0x3b')]['filter']+'%'};return _0x3d0452;}})});}_0x4d36db=_[_0x7b33('0x45')]({},_0x4d36db,_0x3a988c[_0x7b33('0x47')]);var _0x4d0830={'where':_0x4d36db[_0x7b33('0x42')]};return db[_0x7b33('0x33')][_0x7b33('0x2a')](_0x4d0830)['then'](function(_0x4cda1e){_0x3d590b[_0x7b33('0x2a')]=_0x4cda1e;if(_0x3a988c[_0x7b33('0x3b')][_0x7b33('0x48')]){_0x4d36db['include']=[{'all':!![]}];}return db[_0x7b33('0x33')][_0x7b33('0x49')](_0x4d36db);})['then'](function(_0x48184e){_0x3d590b[_0x7b33('0x4a')]=_0x48184e;return _0x3d590b;})[_0x7b33('0x2f')](respondWithFilteredResult(_0xbc4ae,_0x4d36db))[_0x7b33('0x4b')](handleError(_0xbc4ae,null));};exports[_0x7b33('0x4c')]=function(_0x4ed29f,_0x6af46){var _0xdcde01={'raw':![],'where':{'id':_0x4ed29f[_0x7b33('0x4d')]['id']}},_0x24fe61={};_0x24fe61[_0x7b33('0x37')]=_['keys'](db['VoiceContext']['rawAttributes']);_0x24fe61[_0x7b33('0x3b')]=_[_0x7b33('0x3a')](_0x4ed29f['query']);_0x24fe61[_0x7b33('0x3c')]=_[_0x7b33('0x3d')](_0x24fe61[_0x7b33('0x37')],_0x24fe61['query']);_0xdcde01[_0x7b33('0x3e')]=_[_0x7b33('0x3d')](_0x24fe61[_0x7b33('0x37')],qs[_0x7b33('0x3f')](_0x4ed29f['query'][_0x7b33('0x3f')]));_0xdcde01[_0x7b33('0x3e')]=_0xdcde01[_0x7b33('0x3e')][_0x7b33('0x4e')]?_0xdcde01[_0x7b33('0x3e')]:_0x24fe61[_0x7b33('0x37')];if(_0x4ed29f[_0x7b33('0x3b')][_0x7b33('0x48')]){_0xdcde01['include']=[{'all':!![]}];}_0xdcde01=_['merge']({},_0xdcde01,_0x4ed29f['options']);return db[_0x7b33('0x33')]['find'](_0xdcde01)[_0x7b33('0x2f')](handleEntityNotFound(_0x6af46,null))['then'](respondWithResult(_0x6af46,null))[_0x7b33('0x4b')](handleError(_0x6af46,null));};exports[_0x7b33('0x4f')]=function(_0xd4bc81,_0x27c84b,_0x3f816f){var _0x41ba11;return db['VoiceContext'][_0x7b33('0x4f')](_0xd4bc81['body'],{'raw':!![]})[_0x7b33('0x2f')](function(_0x3f27b0){_0x41ba11=_0x3f27b0;return db[_0x7b33('0x33')]['findAll']({'raw':!![]});})[_0x7b33('0x2f')](function(_0x251cca){var _0x2f9658=fs['readFileSync'](path['join'](config[_0x7b33('0x50')],_0x7b33('0x51')),'utf8');var _0x4687fa=ejs[_0x7b33('0x52')](_0x2f9658,{'contexts':_0x251cca||[]});fs[_0x7b33('0x53')](_0x7b33('0x54'),_0x4687fa);})[_0x7b33('0x2f')](function(){return respondWithRpcPromise(_0x7b33('0x55'),_0x7b33('0x4f'),{'module':_0x7b33('0x56')});})['then'](function(){var _0x2ad746=_0xd4bc81[_0x7b33('0x57')][_0x7b33('0x58')]({'plain':!![]});if(!_0x2ad746)throw new Error(_0x7b33('0x59'));if(_0x2ad746[_0x7b33('0x5a')]===_0x7b33('0x57')){var _0x3a84e4=_0x41ba11['get']({'plain':!![]});return db[_0x7b33('0x5b')]['find']({'where':{'name':_0x7b33('0x30'),'userProfileId':_0x2ad746[_0x7b33('0x5c')]},'raw':!![]})[_0x7b33('0x2f')](function(_0x4e9d9c){if(_0x4e9d9c&&_0x4e9d9c[_0x7b33('0x5d')]===0x0){return db[_0x7b33('0x5e')][_0x7b33('0x4f')]({'name':_0x3a84e4[_0x7b33('0x39')],'resourceId':_0x3a84e4['id'],'type':_0x4e9d9c[_0x7b33('0x39')],'sectionId':_0x4e9d9c['id']},{})['then'](function(){return _0x41ba11;});}else{return _0x41ba11;}})[_0x7b33('0x4b')](function(_0x53a0b4){logger[_0x7b33('0x21')](_0x7b33('0x5f'),_0x53a0b4);throw _0x53a0b4;});}return _0x41ba11;})[_0x7b33('0x2f')](respondWithResult(_0x27c84b,0xc9))[_0x7b33('0x4b')](handleError(_0x27c84b,null));};exports['update']=function(_0xab25e4,_0xf1e3ff,_0x134a73){var _0x445110;return db['VoiceContext'][_0x7b33('0x60')]({'where':{'id':_0xab25e4[_0x7b33('0x4d')]['id']}})['then'](handleEntityNotFound(_0xf1e3ff,null))['then'](saveUpdates(_0xab25e4[_0x7b33('0x61')],null))[_0x7b33('0x2f')](function(_0x2e3f1b){if(_0x2e3f1b){_0x445110=_0x2e3f1b;return db[_0x7b33('0x33')][_0x7b33('0x49')]({'raw':!![]});}})[_0x7b33('0x2f')](function(_0x3147ec){var _0xaf7c72=fs[_0x7b33('0x62')](path[_0x7b33('0x63')](config[_0x7b33('0x50')],'server/files/templates/context.ejs'),_0x7b33('0x64'));var _0x1c0eb1=ejs['render'](_0xaf7c72,{'contexts':_0x3147ec||[]});fs['writeFileSync'](_0x7b33('0x54'),_0x1c0eb1);})['then'](function(){return respondWithRpcPromise('Reload','update',{'module':_0x7b33('0x56')});})[_0x7b33('0x2f')](function(){return _0x445110;})[_0x7b33('0x2f')](respondWithResult(_0xf1e3ff,null))[_0x7b33('0x4b')](handleError(_0xf1e3ff,null));};exports[_0x7b33('0x2e')]=function(_0x12ad82,_0x4189b9,_0x40f700){var _0x4b58d7;return db['VoiceContext']['find']({'where':{'id':_0x12ad82[_0x7b33('0x4d')]['id']}})[_0x7b33('0x2f')](handleEntityNotFound(_0x4189b9,null))[_0x7b33('0x2f')](removeEntity(_0x4189b9,null))[_0x7b33('0x2f')](function(){return db[_0x7b33('0x33')][_0x7b33('0x49')]({'raw':!![]});})[_0x7b33('0x2f')](function(_0x530ca2){var _0x33738a=fs[_0x7b33('0x62')](path['join'](config[_0x7b33('0x50')],_0x7b33('0x51')),'utf8');var _0x363830=ejs[_0x7b33('0x52')](_0x33738a,{'contexts':_0x530ca2});fs[_0x7b33('0x53')](_0x7b33('0x54'),_0x363830);return respondWithRpcPromise(_0x7b33('0x55'),_0x7b33('0x2e'),{'module':_0x7b33('0x56')});})[_0x7b33('0x4b')](handleError(_0x4189b9,null));};
\ No newline at end of file
index 6c6a795..9f94f30 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0189=['exports','define','VoiceContext','voice_contexts','lodash','util','../../config/logger','api','moment','path','rimraf','./voiceContext.attributes'];(function(_0x3b8e68,_0x4b254c){var _0x1cdd68=function(_0x13d130){while(--_0x13d130){_0x3b8e68['push'](_0x3b8e68['shift']());}};_0x1cdd68(++_0x4b254c);}(_0x0189,0x178));var _0x9018=function(_0x3e1567,_0x3983f7){_0x3e1567=_0x3e1567-0x0;var _0x174fbe=_0x0189[_0x3e1567];return _0x174fbe;};'use strict';var _=require(_0x9018('0x0'));var util=require(_0x9018('0x1'));var logger=require(_0x9018('0x2'))(_0x9018('0x3'));var moment=require(_0x9018('0x4'));var BPromise=require('bluebird');var rp=require('request-promise');var fs=require('fs');var path=require(_0x9018('0x5'));var rimraf=require(_0x9018('0x6'));var config=require('../../config/environment');var attributes=require(_0x9018('0x7'));module[_0x9018('0x8')]=function(_0x4b83fb,_0x2592f4){return _0x4b83fb[_0x9018('0x9')](_0x9018('0xa'),attributes,{'tableName':_0x9018('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xcfaa=['lodash','util','../../config/logger','api','bluebird','request-promise','path','../../config/environment','./voiceContext.attributes','exports','voice_contexts'];(function(_0x1694f5,_0x49b7c3){var _0x5b4321=function(_0x58c183){while(--_0x58c183){_0x1694f5['push'](_0x1694f5['shift']());}};_0x5b4321(++_0x49b7c3);}(_0xcfaa,0xdc));var _0xacfa=function(_0x17d5e9,_0x30d19c){_0x17d5e9=_0x17d5e9-0x0;var _0xda2301=_0xcfaa[_0x17d5e9];return _0xda2301;};'use strict';var _=require(_0xacfa('0x0'));var util=require(_0xacfa('0x1'));var logger=require(_0xacfa('0x2'))(_0xacfa('0x3'));var moment=require('moment');var BPromise=require(_0xacfa('0x4'));var rp=require(_0xacfa('0x5'));var fs=require('fs');var path=require(_0xacfa('0x6'));var rimraf=require('rimraf');var config=require(_0xacfa('0x7'));var attributes=require(_0xacfa('0x8'));module[_0xacfa('0x9')]=function(_0x363969,_0x23af05){return _0x363969['define']('VoiceContext',attributes,{'tableName':_0xacfa('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index b8ceafa..124788e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1339=['error','code','message','info','result','catch','lodash','util','bluebird','randomstring','../../config/utils','../../config/logger','../../config/environment','jayson/promise','client','http','request','VoiceContext,\x20%s,\x20%s','request\x20sent','debug','VoiceContext,\x20%s,\x20%s,\x20%s'];(function(_0x23678c,_0x46a0ec){var _0x207665=function(_0x586436){while(--_0x586436){_0x23678c['push'](_0x23678c['shift']());}};_0x207665(++_0x46a0ec);}(_0x1339,0x1bf));var _0x9133=function(_0x7cd746,_0x38c454){_0x7cd746=_0x7cd746-0x0;var _0x4a386c=_0x1339[_0x7cd746];return _0x4a386c;};'use strict';var _=require(_0x9133('0x0'));var util=require(_0x9133('0x1'));var moment=require('moment');var BPromise=require(_0x9133('0x2'));var rs=require(_0x9133('0x3'));var fs=require('fs');var Redis=require('ioredis');var db=require('../../mysqldb')['db'];var utils=require(_0x9133('0x4'));var logger=require(_0x9133('0x5'))('rpc');var config=require(_0x9133('0x6'));var jayson=require(_0x9133('0x7'));var client=jayson[_0x9133('0x8')][_0x9133('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x81460c,_0x524719,_0x4c7852){return new BPromise(function(_0x2c37ce,_0x5762bc){return client[_0x9133('0xa')](_0x81460c,_0x4c7852)['then'](function(_0x41af31){logger['info'](_0x9133('0xb'),_0x524719,_0x9133('0xc'));logger[_0x9133('0xd')](_0x9133('0xe'),_0x524719,'request\x20sent',JSON['stringify'](_0x41af31));if(_0x41af31['error']){if(_0x41af31[_0x9133('0xf')][_0x9133('0x10')]===0x1f4){logger[_0x9133('0xf')]('VoiceContext,\x20%s,\x20%s',_0x524719,_0x41af31[_0x9133('0xf')][_0x9133('0x11')]);return _0x5762bc(_0x41af31[_0x9133('0xf')][_0x9133('0x11')]);}logger[_0x9133('0xf')](_0x9133('0xb'),_0x524719,_0x41af31[_0x9133('0xf')][_0x9133('0x11')]);return _0x2c37ce(_0x41af31[_0x9133('0xf')]['message']);}else{logger[_0x9133('0x12')]('VoiceContext,\x20%s,\x20%s',_0x524719,'request\x20sent');_0x2c37ce(_0x41af31[_0x9133('0x13')][_0x9133('0x11')]);}})[_0x9133('0x14')](function(_0x34432e){logger[_0x9133('0xf')](_0x9133('0xb'),_0x524719,_0x34432e);_0x5762bc(_0x34432e);});});}
\ No newline at end of file
+var _0x4171=['jayson/promise','http','info','VoiceContext,\x20%s,\x20%s','request\x20sent','debug','VoiceContext,\x20%s,\x20%s,\x20%s','stringify','error','message','result','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','rpc'];(function(_0x1d76a2,_0xe93ed7){var _0x4a3248=function(_0x10fc29){while(--_0x10fc29){_0x1d76a2['push'](_0x1d76a2['shift']());}};_0x4a3248(++_0xe93ed7);}(_0x4171,0x6a));var _0x1417=function(_0x4cc29f,_0x4041ef){_0x4cc29f=_0x4cc29f-0x0;var _0x4ab53c=_0x4171[_0x4cc29f];return _0x4ab53c;};'use strict';var _=require('lodash');var util=require(_0x1417('0x0'));var moment=require(_0x1417('0x1'));var BPromise=require(_0x1417('0x2'));var rs=require(_0x1417('0x3'));var fs=require('fs');var Redis=require(_0x1417('0x4'));var db=require(_0x1417('0x5'))['db'];var utils=require(_0x1417('0x6'));var logger=require('../../config/logger')(_0x1417('0x7'));var config=require('../../config/environment');var jayson=require(_0x1417('0x8'));var client=jayson['client'][_0x1417('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x35c775,_0x3e2a7d,_0x2e8ef8){return new BPromise(function(_0x4b713a,_0x49dc2b){return client['request'](_0x35c775,_0x2e8ef8)['then'](function(_0x57f09e){logger[_0x1417('0xa')](_0x1417('0xb'),_0x3e2a7d,_0x1417('0xc'));logger[_0x1417('0xd')](_0x1417('0xe'),_0x3e2a7d,_0x1417('0xc'),JSON[_0x1417('0xf')](_0x57f09e));if(_0x57f09e[_0x1417('0x10')]){if(_0x57f09e['error']['code']===0x1f4){logger[_0x1417('0x10')](_0x1417('0xb'),_0x3e2a7d,_0x57f09e[_0x1417('0x10')]['message']);return _0x49dc2b(_0x57f09e[_0x1417('0x10')][_0x1417('0x11')]);}logger[_0x1417('0x10')]('VoiceContext,\x20%s,\x20%s',_0x3e2a7d,_0x57f09e[_0x1417('0x10')][_0x1417('0x11')]);return _0x4b713a(_0x57f09e[_0x1417('0x10')][_0x1417('0x11')]);}else{logger[_0x1417('0xa')](_0x1417('0xb'),_0x3e2a7d,'request\x20sent');_0x4b713a(_0x57f09e[_0x1417('0x12')][_0x1417('0x11')]);}})['catch'](function(_0x121119){logger[_0x1417('0x10')](_0x1417('0xb'),_0x3e2a7d,_0x121119);_0x49dc2b(_0x121119);});});}
\ No newline at end of file
index 75178a7..c2aacee 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xcef4=['delete','destroy','exports','multer','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./voiceDialReport.controller','get','isAuthenticated','index','post','create','put','/:id','update'];(function(_0x4dc7b9,_0x319d5a){var _0x3ab114=function(_0x51a9df){while(--_0x51a9df){_0x4dc7b9['push'](_0x4dc7b9['shift']());}};_0x3ab114(++_0x319d5a);}(_0xcef4,0x1e9));var _0x4cef=function(_0xce6f11,_0x3c3137){_0xce6f11=_0xce6f11-0x0;var _0x35b709=_0xcef4[_0xce6f11];return _0x35b709;};'use strict';var multer=require(_0x4cef('0x0'));var util=require('util');var path=require('path');var timeout=require('connect-timeout');var express=require('express');var router=express[_0x4cef('0x1')]();var fs_extra=require(_0x4cef('0x2'));var auth=require(_0x4cef('0x3'));var interaction=require(_0x4cef('0x4'));var config=require(_0x4cef('0x5'));var controller=require(_0x4cef('0x6'));router[_0x4cef('0x7')]('/',auth[_0x4cef('0x8')](),controller[_0x4cef('0x9')]);router['get']('/describe',auth[_0x4cef('0x8')](),controller['describe']);router[_0x4cef('0x7')]('/:id',auth['isAuthenticated'](),controller['show']);router[_0x4cef('0xa')]('/',auth[_0x4cef('0x8')](),controller[_0x4cef('0xb')]);router[_0x4cef('0xc')](_0x4cef('0xd'),auth[_0x4cef('0x8')](),controller[_0x4cef('0xe')]);router[_0x4cef('0xf')](_0x4cef('0xd'),auth[_0x4cef('0x8')](),controller[_0x4cef('0x10')]);module[_0x4cef('0x11')]=router;
\ No newline at end of file
+var _0xa16a=['post','create','update','delete','destroy','exports','multer','util','path','connect-timeout','Router','../../components/interaction/service','../../config/environment','get','isAuthenticated','index','/describe','describe','/:id','show'];(function(_0x4be4fb,_0x5c03d9){var _0x321e5b=function(_0x22b440){while(--_0x22b440){_0x4be4fb['push'](_0x4be4fb['shift']());}};_0x321e5b(++_0x5c03d9);}(_0xa16a,0x1aa));var _0xaa16=function(_0xf44d98,_0x12a472){_0xf44d98=_0xf44d98-0x0;var _0x5ebb04=_0xa16a[_0xf44d98];return _0x5ebb04;};'use strict';var multer=require(_0xaa16('0x0'));var util=require(_0xaa16('0x1'));var path=require(_0xaa16('0x2'));var timeout=require(_0xaa16('0x3'));var express=require('express');var router=express[_0xaa16('0x4')]();var fs_extra=require('fs-extra');var auth=require('../../components/auth/service');var interaction=require(_0xaa16('0x5'));var config=require(_0xaa16('0x6'));var controller=require('./voiceDialReport.controller');router[_0xaa16('0x7')]('/',auth[_0xaa16('0x8')](),controller[_0xaa16('0x9')]);router['get'](_0xaa16('0xa'),auth[_0xaa16('0x8')](),controller[_0xaa16('0xb')]);router['get'](_0xaa16('0xc'),auth[_0xaa16('0x8')](),controller[_0xaa16('0xd')]);router[_0xaa16('0xe')]('/',auth['isAuthenticated'](),controller[_0xaa16('0xf')]);router['put']('/:id',auth[_0xaa16('0x8')](),controller[_0xaa16('0x10')]);router[_0xaa16('0x11')](_0xaa16('0xc'),auth[_0xaa16('0x8')](),controller[_0xaa16('0x12')]);module[_0xaa16('0x13')]=router;
\ No newline at end of file
index 391e9b2..61b46c9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6aa7=['called,connect,complete','sequelize','STRING','INTEGER','DATE'];(function(_0x34d8b0,_0x3ba6f4){var _0x39ba9e=function(_0xd6d98d){while(--_0xd6d98d){_0x34d8b0['push'](_0x34d8b0['shift']());}};_0x39ba9e(++_0x3ba6f4);}(_0x6aa7,0x178));var _0x76aa=function(_0x5e87b1,_0x3fbadf){_0x5e87b1=_0x5e87b1-0x0;var _0x43fe86=_0x6aa7[_0x5e87b1];return _0x43fe86;};'use strict';var Sequelize=require(_0x76aa('0x0'));module['exports']={'privilege':{'type':Sequelize[_0x76aa('0x1')]},'channel':{'type':Sequelize[_0x76aa('0x1')]},'channelstate':{'type':Sequelize[_0x76aa('0x2')]},'channelstatedesc':{'type':Sequelize[_0x76aa('0x1')]},'calleridnum':{'type':Sequelize['STRING']},'calleridname':{'type':Sequelize[_0x76aa('0x1')]},'connectedlinenum':{'type':Sequelize[_0x76aa('0x1')]},'connectedlinename':{'type':Sequelize[_0x76aa('0x1')]},'language':{'type':Sequelize['STRING']},'accountcode':{'type':Sequelize['STRING']},'context':{'type':Sequelize[_0x76aa('0x1')]},'exten':{'type':Sequelize['STRING']},'priority':{'type':Sequelize[_0x76aa('0x2')]},'uniqueid':{'type':Sequelize[_0x76aa('0x1')]},'linkedid':{'type':Sequelize[_0x76aa('0x1')]},'destchannel':{'type':Sequelize['STRING']},'destchannelstate':{'type':Sequelize[_0x76aa('0x2')]},'destchannelstatedesc':{'type':Sequelize[_0x76aa('0x1')]},'destcalleridnum':{'type':Sequelize[_0x76aa('0x1')]},'destcalleridname':{'type':Sequelize['STRING']},'destconnectedlinenum':{'type':Sequelize[_0x76aa('0x1')]},'destconnectedlinename':{'type':Sequelize[_0x76aa('0x1')]},'destlanguage':{'type':Sequelize[_0x76aa('0x1')]},'destaccountcode':{'type':Sequelize[_0x76aa('0x1')]},'destcontext':{'type':Sequelize[_0x76aa('0x1')]},'destexten':{'type':Sequelize[_0x76aa('0x1')]},'destpriority':{'type':Sequelize[_0x76aa('0x2')]},'destuniqueid':{'type':Sequelize[_0x76aa('0x1')]},'destlinkedid':{'type':Sequelize[_0x76aa('0x1')]},'dialstring':{'type':Sequelize[_0x76aa('0x1')]},'dialstatus':{'type':Sequelize['STRING']},'starttime':{'type':Sequelize[_0x76aa('0x3')]},'answertime':{'type':Sequelize['DATE']},'endtime':{'type':Sequelize[_0x76aa('0x3')]},'lastevent':{'type':Sequelize[_0x76aa('0x1')],'comment':_0x76aa('0x4')},'routeId':{'type':Sequelize[_0x76aa('0x2')]},'duration':{'type':Sequelize[_0x76aa('0x2')]},'holdtime':{'type':Sequelize['INTEGER']},'billableseconds':{'type':Sequelize['INTEGER']}};
\ No newline at end of file
+var _0x9c44=['STRING','INTEGER','DATE','called,connect,complete'];(function(_0x2c91e9,_0x2fb965){var _0x13f0ff=function(_0xb39edf){while(--_0xb39edf){_0x2c91e9['push'](_0x2c91e9['shift']());}};_0x13f0ff(++_0x2fb965);}(_0x9c44,0x178));var _0x49c4=function(_0x4b369d,_0x265eb8){_0x4b369d=_0x4b369d-0x0;var _0x571a98=_0x9c44[_0x4b369d];return _0x571a98;};'use strict';var Sequelize=require('sequelize');module['exports']={'privilege':{'type':Sequelize[_0x49c4('0x0')]},'channel':{'type':Sequelize[_0x49c4('0x0')]},'channelstate':{'type':Sequelize[_0x49c4('0x1')]},'channelstatedesc':{'type':Sequelize[_0x49c4('0x0')]},'calleridnum':{'type':Sequelize[_0x49c4('0x0')]},'calleridname':{'type':Sequelize[_0x49c4('0x0')]},'connectedlinenum':{'type':Sequelize['STRING']},'connectedlinename':{'type':Sequelize['STRING']},'language':{'type':Sequelize[_0x49c4('0x0')]},'accountcode':{'type':Sequelize['STRING']},'context':{'type':Sequelize[_0x49c4('0x0')]},'exten':{'type':Sequelize[_0x49c4('0x0')]},'priority':{'type':Sequelize[_0x49c4('0x1')]},'uniqueid':{'type':Sequelize[_0x49c4('0x0')]},'linkedid':{'type':Sequelize[_0x49c4('0x0')]},'destchannel':{'type':Sequelize['STRING']},'destchannelstate':{'type':Sequelize[_0x49c4('0x1')]},'destchannelstatedesc':{'type':Sequelize[_0x49c4('0x0')]},'destcalleridnum':{'type':Sequelize[_0x49c4('0x0')]},'destcalleridname':{'type':Sequelize[_0x49c4('0x0')]},'destconnectedlinenum':{'type':Sequelize['STRING']},'destconnectedlinename':{'type':Sequelize['STRING']},'destlanguage':{'type':Sequelize[_0x49c4('0x0')]},'destaccountcode':{'type':Sequelize[_0x49c4('0x0')]},'destcontext':{'type':Sequelize['STRING']},'destexten':{'type':Sequelize[_0x49c4('0x0')]},'destpriority':{'type':Sequelize[_0x49c4('0x1')]},'destuniqueid':{'type':Sequelize['STRING']},'destlinkedid':{'type':Sequelize['STRING']},'dialstring':{'type':Sequelize[_0x49c4('0x0')]},'dialstatus':{'type':Sequelize[_0x49c4('0x0')]},'starttime':{'type':Sequelize['DATE']},'answertime':{'type':Sequelize[_0x49c4('0x2')]},'endtime':{'type':Sequelize[_0x49c4('0x2')]},'lastevent':{'type':Sequelize['STRING'],'comment':_0x49c4('0x3')},'routeId':{'type':Sequelize[_0x49c4('0x1')]},'duration':{'type':Sequelize[_0x49c4('0x1')]},'holdtime':{'type':Sequelize[_0x49c4('0x1')]},'billableseconds':{'type':Sequelize[_0x49c4('0x1')]}};
\ No newline at end of file
index 8ca2d7b..c6ad59f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc1ca=['fs-extra','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','end','json','limit','undefined','count','offset','Content-Range','apply','reject','save','update','then','destroy','error','name','send','index','map','rawAttributes','fieldName','key','model','query','keys','filters','intersection','attributes','fields','length','nolimit','order','sort','where','pick','filter','merge','type','VIRTUAL','options','VoiceDialReport','includeAll','include','findAll','rows','catch','show','params','find','create','body','describe','eml-format','rimraf','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','to-csv','ejs'];(function(_0x34325b,_0x5e5afe){var _0x3da348=function(_0x3bf709){while(--_0x3bf709){_0x34325b['push'](_0x34325b['shift']());}};_0x3da348(++_0x5e5afe);}(_0xc1ca,0x97));var _0xac1c=function(_0x2e597d,_0x2abc56){_0x2e597d=_0x2e597d-0x0;var _0x382322=_0xc1ca[_0x2e597d];return _0x382322;};'use strict';var emlformat=require(_0xac1c('0x0'));var rimraf=require(_0xac1c('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0xac1c('0x2'));var rp=require(_0xac1c('0x3'));var moment=require(_0xac1c('0x4'));var BPromise=require(_0xac1c('0x5'));var Mustache=require(_0xac1c('0x6'));var util=require(_0xac1c('0x7'));var path=require(_0xac1c('0x8'));var sox=require('sox');var csv=require(_0xac1c('0x9'));var ejs=require(_0xac1c('0xa'));var fs=require('fs');var fs_extra=require(_0xac1c('0xb'));var _=require('lodash');var squel=require(_0xac1c('0xc'));var crypto=require('crypto');var jsforce=require(_0xac1c('0xd'));var deskjs=require(_0xac1c('0xe'));var toCsv=require(_0xac1c('0x9'));var querystring=require(_0xac1c('0xf'));var Papa=require(_0xac1c('0x10'));var Redis=require(_0xac1c('0x11'));var authService=require(_0xac1c('0x12'));var qs=require(_0xac1c('0x13'));var as=require(_0xac1c('0x14'));var hardwareService=require(_0xac1c('0x15'));var logger=require(_0xac1c('0x16'))(_0xac1c('0x17'));var utils=require(_0xac1c('0x18'));var config=require(_0xac1c('0x19'));var licenseUtil=require(_0xac1c('0x1a'));var db=require(_0xac1c('0x1b'))['db'];function respondWithStatusCode(_0x346ada,_0x47a513){_0x47a513=_0x47a513||0xcc;return function(_0x5042cf){if(_0x5042cf){return _0x346ada[_0xac1c('0x1c')](_0x47a513);}return _0x346ada[_0xac1c('0x1d')](_0x47a513)[_0xac1c('0x1e')]();};}function respondWithResult(_0x9ae3af,_0x37833a){_0x37833a=_0x37833a||0xc8;return function(_0x14b773){if(_0x14b773){return _0x9ae3af[_0xac1c('0x1d')](_0x37833a)[_0xac1c('0x1f')](_0x14b773);}};}function respondWithFilteredResult(_0x1ee21b,_0x10b0fc){return function(_0x1cbe72){if(_0x1cbe72){var _0x3b28b9=typeof _0x10b0fc['offset']==='undefined'&&typeof _0x10b0fc[_0xac1c('0x20')]===_0xac1c('0x21');var _0x5ec8cb=_0x1cbe72[_0xac1c('0x22')];var _0x51199b=_0x3b28b9?0x0:_0x10b0fc[_0xac1c('0x23')];var _0x408ab8=_0x3b28b9?_0x1cbe72['count']:_0x10b0fc[_0xac1c('0x23')]+_0x10b0fc[_0xac1c('0x20')];var _0x5080ee;if(_0x408ab8>=_0x5ec8cb){_0x408ab8=_0x5ec8cb;_0x5080ee=0xc8;}else{_0x5080ee=0xce;}_0x1ee21b[_0xac1c('0x1d')](_0x5080ee);return _0x1ee21b['set'](_0xac1c('0x24'),_0x51199b+'-'+_0x408ab8+'/'+_0x5ec8cb)[_0xac1c('0x1f')](_0x1cbe72);}return null;};}function patchUpdates(_0x4400f4){return function(_0x5efa07){try{jsonpatch[_0xac1c('0x25')](_0x5efa07,_0x4400f4,!![]);}catch(_0x290717){return BPromise[_0xac1c('0x26')](_0x290717);}return _0x5efa07[_0xac1c('0x27')]();};}function saveUpdates(_0x4e7c51,_0x47d132){return function(_0x1f10ad){if(_0x1f10ad){return _0x1f10ad[_0xac1c('0x28')](_0x4e7c51)[_0xac1c('0x29')](function(_0x297484){return _0x297484;});}return null;};}function removeEntity(_0x274a13,_0x31ab74){return function(_0x1259a8){if(_0x1259a8){return _0x1259a8[_0xac1c('0x2a')]()[_0xac1c('0x29')](function(){_0x274a13[_0xac1c('0x1d')](0xcc)[_0xac1c('0x1e')]();});}};}function handleEntityNotFound(_0x40b6a7,_0x5b4715){return function(_0x3d118d){if(!_0x3d118d){_0x40b6a7[_0xac1c('0x1c')](0x194);}return _0x3d118d;};}function handleError(_0x2a8b2c,_0x15dbf6){_0x15dbf6=_0x15dbf6||0x1f4;return function(_0x26056e){logger[_0xac1c('0x2b')](_0x26056e['stack']);if(_0x26056e[_0xac1c('0x2c')]){delete _0x26056e[_0xac1c('0x2c')];}_0x2a8b2c[_0xac1c('0x1d')](_0x15dbf6)[_0xac1c('0x2d')](_0x26056e);};}exports[_0xac1c('0x2e')]=function(_0x21c1bb,_0x4674ac){var _0xf7e7f={},_0x10295a={},_0x2aad01={'count':0x0,'rows':[]};var _0x129c63=_[_0xac1c('0x2f')](db['VoiceDialReport'][_0xac1c('0x30')],function(_0x2101df){return{'name':_0x2101df[_0xac1c('0x31')],'type':_0x2101df['type'][_0xac1c('0x32')]};});_0x10295a[_0xac1c('0x33')]=_[_0xac1c('0x2f')](_0x129c63,_0xac1c('0x2c'));_0x10295a[_0xac1c('0x34')]=_[_0xac1c('0x35')](_0x21c1bb[_0xac1c('0x34')]);_0x10295a[_0xac1c('0x36')]=_[_0xac1c('0x37')](_0x10295a[_0xac1c('0x33')],_0x10295a[_0xac1c('0x34')]);_0xf7e7f[_0xac1c('0x38')]=_['intersection'](_0x10295a[_0xac1c('0x33')],qs[_0xac1c('0x39')](_0x21c1bb[_0xac1c('0x34')][_0xac1c('0x39')]));_0xf7e7f['attributes']=_0xf7e7f[_0xac1c('0x38')][_0xac1c('0x3a')]?_0xf7e7f['attributes']:_0x10295a[_0xac1c('0x33')];if(!_0x21c1bb[_0xac1c('0x34')]['hasOwnProperty'](_0xac1c('0x3b'))){_0xf7e7f[_0xac1c('0x20')]=qs[_0xac1c('0x20')](_0x21c1bb['query'][_0xac1c('0x20')]);_0xf7e7f['offset']=qs['offset'](_0x21c1bb[_0xac1c('0x34')]['offset']);}_0xf7e7f[_0xac1c('0x3c')]=qs[_0xac1c('0x3d')](_0x21c1bb[_0xac1c('0x34')][_0xac1c('0x3d')]);_0xf7e7f[_0xac1c('0x3e')]=qs[_0xac1c('0x36')](_[_0xac1c('0x3f')](_0x21c1bb[_0xac1c('0x34')],_0x10295a[_0xac1c('0x36')]),_0x129c63);if(_0x21c1bb[_0xac1c('0x34')][_0xac1c('0x40')]){_0xf7e7f[_0xac1c('0x3e')]=_[_0xac1c('0x41')](_0xf7e7f['where'],{'$or':_['map'](_0x129c63,function(_0x3edf36){if(_0x3edf36[_0xac1c('0x42')]!==_0xac1c('0x43')){var _0x286cb0={};_0x286cb0[_0x3edf36[_0xac1c('0x2c')]]={'$like':'%'+_0x21c1bb[_0xac1c('0x34')][_0xac1c('0x40')]+'%'};return _0x286cb0;}})});}_0xf7e7f=_[_0xac1c('0x41')]({},_0xf7e7f,_0x21c1bb[_0xac1c('0x44')]);var _0x4ebb62={'where':_0xf7e7f[_0xac1c('0x3e')]};return db[_0xac1c('0x45')][_0xac1c('0x22')](_0x4ebb62)['then'](function(_0x39705c){_0x2aad01['count']=_0x39705c;if(_0x21c1bb['query'][_0xac1c('0x46')]){_0xf7e7f[_0xac1c('0x47')]=[{'all':!![]}];}return db[_0xac1c('0x45')][_0xac1c('0x48')](_0xf7e7f);})[_0xac1c('0x29')](function(_0x39af14){_0x2aad01[_0xac1c('0x49')]=_0x39af14;return _0x2aad01;})[_0xac1c('0x29')](respondWithFilteredResult(_0x4674ac,_0xf7e7f))[_0xac1c('0x4a')](handleError(_0x4674ac,null));};exports[_0xac1c('0x4b')]=function(_0x5f5158,_0x41fda1){var _0x41baab={'raw':!![],'where':{'id':_0x5f5158[_0xac1c('0x4c')]['id']}},_0x5532ca={};_0x5532ca[_0xac1c('0x33')]=_['keys'](db['VoiceDialReport']['rawAttributes']);_0x5532ca[_0xac1c('0x34')]=_[_0xac1c('0x35')](_0x5f5158[_0xac1c('0x34')]);_0x5532ca[_0xac1c('0x36')]=_[_0xac1c('0x37')](_0x5532ca[_0xac1c('0x33')],_0x5532ca[_0xac1c('0x34')]);_0x41baab[_0xac1c('0x38')]=_[_0xac1c('0x37')](_0x5532ca['model'],qs[_0xac1c('0x39')](_0x5f5158['query'][_0xac1c('0x39')]));_0x41baab[_0xac1c('0x38')]=_0x41baab[_0xac1c('0x38')][_0xac1c('0x3a')]?_0x41baab[_0xac1c('0x38')]:_0x5532ca[_0xac1c('0x33')];if(_0x5f5158[_0xac1c('0x34')]['includeAll']){_0x41baab[_0xac1c('0x47')]=[{'all':!![]}];}_0x41baab=_[_0xac1c('0x41')]({},_0x41baab,_0x5f5158[_0xac1c('0x44')]);return db[_0xac1c('0x45')][_0xac1c('0x4d')](_0x41baab)[_0xac1c('0x29')](handleEntityNotFound(_0x41fda1,null))[_0xac1c('0x29')](respondWithResult(_0x41fda1,null))[_0xac1c('0x4a')](handleError(_0x41fda1,null));};exports[_0xac1c('0x4e')]=function(_0x5bac37,_0x4601f9){return db[_0xac1c('0x45')][_0xac1c('0x4e')](_0x5bac37[_0xac1c('0x4f')],{})[_0xac1c('0x29')](respondWithResult(_0x4601f9,0xc9))[_0xac1c('0x4a')](handleError(_0x4601f9,null));};exports[_0xac1c('0x28')]=function(_0x2c737d,_0x1a0fcb){if(_0x2c737d[_0xac1c('0x4f')]['id']){delete _0x2c737d[_0xac1c('0x4f')]['id'];}return db[_0xac1c('0x45')][_0xac1c('0x4d')]({'where':{'id':_0x2c737d[_0xac1c('0x4c')]['id']}})['then'](handleEntityNotFound(_0x1a0fcb,null))[_0xac1c('0x29')](saveUpdates(_0x2c737d[_0xac1c('0x4f')],null))['then'](respondWithResult(_0x1a0fcb,null))[_0xac1c('0x4a')](handleError(_0x1a0fcb,null));};exports[_0xac1c('0x2a')]=function(_0x1c7840,_0x4544d8){return db['VoiceDialReport']['find']({'where':{'id':_0x1c7840[_0xac1c('0x4c')]['id']}})[_0xac1c('0x29')](handleEntityNotFound(_0x4544d8,null))[_0xac1c('0x29')](removeEntity(_0x4544d8,null))[_0xac1c('0x4a')](handleError(_0x4544d8,null));};exports[_0xac1c('0x50')]=function(_0x16592a,_0x324eff){return db[_0xac1c('0x45')]['describe']()[_0xac1c('0x29')](respondWithResult(_0x324eff,null))[_0xac1c('0x4a')](handleError(_0x324eff,null));};
\ No newline at end of file
+var _0x4458=['desk.js','to-csv','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','api','../../config/utils','../../config/environment','status','json','offset','undefined','count','limit','set','Content-Range','apply','reject','save','update','then','error','stack','name','send','index','map','VoiceDialReport','fieldName','type','query','model','intersection','fields','attributes','length','hasOwnProperty','nolimit','sort','where','filters','pick','filter','merge','options','includeAll','include','findAll','rows','catch','params','keys','rawAttributes','find','create','body','describe','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','path','fs-extra','lodash','jsforce'];(function(_0x260817,_0x136715){var _0x4d4621=function(_0x177ddc){while(--_0x177ddc){_0x260817['push'](_0x260817['shift']());}};_0x4d4621(++_0x136715);}(_0x4458,0x1a4));var _0x8445=function(_0x1d9246,_0x354366){_0x1d9246=_0x1d9246-0x0;var _0x1f9141=_0x4458[_0x1d9246];return _0x1f9141;};'use strict';var emlformat=require(_0x8445('0x0'));var rimraf=require(_0x8445('0x1'));var zipdir=require(_0x8445('0x2'));var jsonpatch=require(_0x8445('0x3'));var rp=require(_0x8445('0x4'));var moment=require(_0x8445('0x5'));var BPromise=require(_0x8445('0x6'));var Mustache=require(_0x8445('0x7'));var util=require('util');var path=require(_0x8445('0x8'));var sox=require('sox');var csv=require('to-csv');var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x8445('0x9'));var _=require(_0x8445('0xa'));var squel=require('squel');var crypto=require('crypto');var jsforce=require(_0x8445('0xb'));var deskjs=require(_0x8445('0xc'));var toCsv=require(_0x8445('0xd'));var querystring=require(_0x8445('0xe'));var Papa=require(_0x8445('0xf'));var Redis=require(_0x8445('0x10'));var authService=require(_0x8445('0x11'));var qs=require(_0x8445('0x12'));var as=require(_0x8445('0x13'));var hardwareService=require('../../config/license/hardware');var logger=require('../../config/logger')(_0x8445('0x14'));var utils=require(_0x8445('0x15'));var config=require(_0x8445('0x16'));var licenseUtil=require('../../config/license/util');var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x1da4b0,_0x4fe49a){_0x4fe49a=_0x4fe49a||0xcc;return function(_0x5bf92e){if(_0x5bf92e){return _0x1da4b0['sendStatus'](_0x4fe49a);}return _0x1da4b0[_0x8445('0x17')](_0x4fe49a)['end']();};}function respondWithResult(_0x5b31b2,_0x231492){_0x231492=_0x231492||0xc8;return function(_0x17d495){if(_0x17d495){return _0x5b31b2['status'](_0x231492)[_0x8445('0x18')](_0x17d495);}};}function respondWithFilteredResult(_0x4772d5,_0x7e59f1){return function(_0x25f424){if(_0x25f424){var _0x97c403=typeof _0x7e59f1[_0x8445('0x19')]===_0x8445('0x1a')&&typeof _0x7e59f1['limit']===_0x8445('0x1a');var _0x1ac552=_0x25f424[_0x8445('0x1b')];var _0x153336=_0x97c403?0x0:_0x7e59f1['offset'];var _0x46decf=_0x97c403?_0x25f424['count']:_0x7e59f1[_0x8445('0x19')]+_0x7e59f1[_0x8445('0x1c')];var _0x19bb64;if(_0x46decf>=_0x1ac552){_0x46decf=_0x1ac552;_0x19bb64=0xc8;}else{_0x19bb64=0xce;}_0x4772d5[_0x8445('0x17')](_0x19bb64);return _0x4772d5[_0x8445('0x1d')](_0x8445('0x1e'),_0x153336+'-'+_0x46decf+'/'+_0x1ac552)[_0x8445('0x18')](_0x25f424);}return null;};}function patchUpdates(_0x5e8d12){return function(_0x9704f1){try{jsonpatch[_0x8445('0x1f')](_0x9704f1,_0x5e8d12,!![]);}catch(_0x56b22c){return BPromise[_0x8445('0x20')](_0x56b22c);}return _0x9704f1[_0x8445('0x21')]();};}function saveUpdates(_0x4471f5,_0x4ffa2d){return function(_0x43709d){if(_0x43709d){return _0x43709d[_0x8445('0x22')](_0x4471f5)[_0x8445('0x23')](function(_0x85bc0b){return _0x85bc0b;});}return null;};}function removeEntity(_0x599dab,_0x59fa20){return function(_0x810a){if(_0x810a){return _0x810a['destroy']()['then'](function(){_0x599dab[_0x8445('0x17')](0xcc)['end']();});}};}function handleEntityNotFound(_0x4ff584,_0x2efe93){return function(_0x356945){if(!_0x356945){_0x4ff584['sendStatus'](0x194);}return _0x356945;};}function handleError(_0x522b74,_0x406299){_0x406299=_0x406299||0x1f4;return function(_0x3a3af5){logger[_0x8445('0x24')](_0x3a3af5[_0x8445('0x25')]);if(_0x3a3af5[_0x8445('0x26')]){delete _0x3a3af5[_0x8445('0x26')];}_0x522b74['status'](_0x406299)[_0x8445('0x27')](_0x3a3af5);};}exports[_0x8445('0x28')]=function(_0x57ce4e,_0x2846d5){var _0x3eaed5={},_0x32b528={},_0x5ce3b6={'count':0x0,'rows':[]};var _0x5beeaa=_[_0x8445('0x29')](db[_0x8445('0x2a')]['rawAttributes'],function(_0x3d01c0){return{'name':_0x3d01c0[_0x8445('0x2b')],'type':_0x3d01c0[_0x8445('0x2c')]['key']};});_0x32b528['model']=_['map'](_0x5beeaa,_0x8445('0x26'));_0x32b528[_0x8445('0x2d')]=_['keys'](_0x57ce4e[_0x8445('0x2d')]);_0x32b528['filters']=_['intersection'](_0x32b528[_0x8445('0x2e')],_0x32b528[_0x8445('0x2d')]);_0x3eaed5['attributes']=_[_0x8445('0x2f')](_0x32b528[_0x8445('0x2e')],qs[_0x8445('0x30')](_0x57ce4e[_0x8445('0x2d')]['fields']));_0x3eaed5['attributes']=_0x3eaed5[_0x8445('0x31')][_0x8445('0x32')]?_0x3eaed5[_0x8445('0x31')]:_0x32b528[_0x8445('0x2e')];if(!_0x57ce4e[_0x8445('0x2d')][_0x8445('0x33')](_0x8445('0x34'))){_0x3eaed5[_0x8445('0x1c')]=qs[_0x8445('0x1c')](_0x57ce4e['query'][_0x8445('0x1c')]);_0x3eaed5[_0x8445('0x19')]=qs[_0x8445('0x19')](_0x57ce4e[_0x8445('0x2d')]['offset']);}_0x3eaed5['order']=qs[_0x8445('0x35')](_0x57ce4e[_0x8445('0x2d')]['sort']);_0x3eaed5[_0x8445('0x36')]=qs[_0x8445('0x37')](_[_0x8445('0x38')](_0x57ce4e[_0x8445('0x2d')],_0x32b528['filters']),_0x5beeaa);if(_0x57ce4e[_0x8445('0x2d')][_0x8445('0x39')]){_0x3eaed5[_0x8445('0x36')]=_[_0x8445('0x3a')](_0x3eaed5[_0x8445('0x36')],{'$or':_[_0x8445('0x29')](_0x5beeaa,function(_0x8699be){if(_0x8699be[_0x8445('0x2c')]!=='VIRTUAL'){var _0x181a75={};_0x181a75[_0x8699be[_0x8445('0x26')]]={'$like':'%'+_0x57ce4e['query'][_0x8445('0x39')]+'%'};return _0x181a75;}})});}_0x3eaed5=_[_0x8445('0x3a')]({},_0x3eaed5,_0x57ce4e[_0x8445('0x3b')]);var _0x2ae790={'where':_0x3eaed5[_0x8445('0x36')]};return db['VoiceDialReport'][_0x8445('0x1b')](_0x2ae790)[_0x8445('0x23')](function(_0x4cc490){_0x5ce3b6[_0x8445('0x1b')]=_0x4cc490;if(_0x57ce4e['query'][_0x8445('0x3c')]){_0x3eaed5[_0x8445('0x3d')]=[{'all':!![]}];}return db[_0x8445('0x2a')][_0x8445('0x3e')](_0x3eaed5);})['then'](function(_0x181b2f){_0x5ce3b6[_0x8445('0x3f')]=_0x181b2f;return _0x5ce3b6;})[_0x8445('0x23')](respondWithFilteredResult(_0x2846d5,_0x3eaed5))[_0x8445('0x40')](handleError(_0x2846d5,null));};exports['show']=function(_0x2ca1ea,_0x39b505){var _0x234e20={'raw':!![],'where':{'id':_0x2ca1ea[_0x8445('0x41')]['id']}},_0x9e646a={};_0x9e646a['model']=_[_0x8445('0x42')](db[_0x8445('0x2a')][_0x8445('0x43')]);_0x9e646a[_0x8445('0x2d')]=_[_0x8445('0x42')](_0x2ca1ea['query']);_0x9e646a[_0x8445('0x37')]=_[_0x8445('0x2f')](_0x9e646a[_0x8445('0x2e')],_0x9e646a[_0x8445('0x2d')]);_0x234e20['attributes']=_[_0x8445('0x2f')](_0x9e646a[_0x8445('0x2e')],qs[_0x8445('0x30')](_0x2ca1ea[_0x8445('0x2d')][_0x8445('0x30')]));_0x234e20['attributes']=_0x234e20['attributes'][_0x8445('0x32')]?_0x234e20[_0x8445('0x31')]:_0x9e646a[_0x8445('0x2e')];if(_0x2ca1ea[_0x8445('0x2d')][_0x8445('0x3c')]){_0x234e20[_0x8445('0x3d')]=[{'all':!![]}];}_0x234e20=_[_0x8445('0x3a')]({},_0x234e20,_0x2ca1ea['options']);return db[_0x8445('0x2a')][_0x8445('0x44')](_0x234e20)[_0x8445('0x23')](handleEntityNotFound(_0x39b505,null))['then'](respondWithResult(_0x39b505,null))[_0x8445('0x40')](handleError(_0x39b505,null));};exports['create']=function(_0x30a2da,_0x2dd10b){return db[_0x8445('0x2a')][_0x8445('0x45')](_0x30a2da[_0x8445('0x46')],{})[_0x8445('0x23')](respondWithResult(_0x2dd10b,0xc9))['catch'](handleError(_0x2dd10b,null));};exports[_0x8445('0x22')]=function(_0x21b402,_0x2efa12){if(_0x21b402[_0x8445('0x46')]['id']){delete _0x21b402['body']['id'];}return db[_0x8445('0x2a')][_0x8445('0x44')]({'where':{'id':_0x21b402['params']['id']}})[_0x8445('0x23')](handleEntityNotFound(_0x2efa12,null))[_0x8445('0x23')](saveUpdates(_0x21b402[_0x8445('0x46')],null))[_0x8445('0x23')](respondWithResult(_0x2efa12,null))[_0x8445('0x40')](handleError(_0x2efa12,null));};exports['destroy']=function(_0xbe27c7,_0x36b5eb){return db['VoiceDialReport'][_0x8445('0x44')]({'where':{'id':_0xbe27c7['params']['id']}})[_0x8445('0x23')](handleEntityNotFound(_0x36b5eb,null))['then'](removeEntity(_0x36b5eb,null))[_0x8445('0x40')](handleError(_0x36b5eb,null));};exports[_0x8445('0x47')]=function(_0x5d5bc2,_0x5a5f9b){return db[_0x8445('0x2a')]['describe']()[_0x8445('0x23')](respondWithResult(_0x5a5f9b,null))[_0x8445('0x40')](handleError(_0x5a5f9b,null));};
\ No newline at end of file
index 44d1811..b4c6fae 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x476f=['path','../../config/environment','exports','VoiceDialReport','report_dial','lodash','api','moment','bluebird','request-promise'];(function(_0x3d91d3,_0x1a5568){var _0x321efc=function(_0x544a62){while(--_0x544a62){_0x3d91d3['push'](_0x3d91d3['shift']());}};_0x321efc(++_0x1a5568);}(_0x476f,0xf5));var _0xf476=function(_0x24dd94,_0x26c2fc){_0x24dd94=_0x24dd94-0x0;var _0x492fc0=_0x476f[_0x24dd94];return _0x492fc0;};'use strict';var _=require(_0xf476('0x0'));var util=require('util');var logger=require('../../config/logger')(_0xf476('0x1'));var moment=require(_0xf476('0x2'));var BPromise=require(_0xf476('0x3'));var rp=require(_0xf476('0x4'));var fs=require('fs');var path=require(_0xf476('0x5'));var rimraf=require('rimraf');var config=require(_0xf476('0x6'));var attributes=require('./voiceDialReport.attributes');module[_0xf476('0x7')]=function(_0x32ac66,_0x24bb3c){return _0x32ac66['define'](_0xf476('0x8'),attributes,{'tableName':_0xf476('0x9'),'paranoid':![],'indexes':[{'fields':['uniqueid']}],'timestamps':!![]});};
\ No newline at end of file
+var _0xb719=['path','../../config/environment','./voiceDialReport.attributes','exports','define','VoiceDialReport','lodash','util','../../config/logger','api','moment','bluebird','request-promise'];(function(_0x49e7c4,_0x1f935c){var _0x2c5330=function(_0x494d91){while(--_0x494d91){_0x49e7c4['push'](_0x49e7c4['shift']());}};_0x2c5330(++_0x1f935c);}(_0xb719,0x1f4));var _0x9b71=function(_0x425d5e,_0x3b9040){_0x425d5e=_0x425d5e-0x0;var _0x3cc67b=_0xb719[_0x425d5e];return _0x3cc67b;};'use strict';var _=require(_0x9b71('0x0'));var util=require(_0x9b71('0x1'));var logger=require(_0x9b71('0x2'))(_0x9b71('0x3'));var moment=require(_0x9b71('0x4'));var BPromise=require(_0x9b71('0x5'));var rp=require(_0x9b71('0x6'));var fs=require('fs');var path=require(_0x9b71('0x7'));var rimraf=require('rimraf');var config=require(_0x9b71('0x8'));var attributes=require(_0x9b71('0x9'));module[_0x9b71('0xa')]=function(_0x5c2367,_0x2e26ae){return _0x5c2367[_0x9b71('0xb')](_0x9b71('0xc'),attributes,{'tableName':'report_dial','paranoid':![],'indexes':[{'fields':['uniqueid']}],'timestamps':!![]});};
\ No newline at end of file
index b33459b..d449d26 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0871=['UpdateVoiceDialReport','lodash','util','bluebird','randomstring','ioredis','../../mysqldb','rpc','../../config/environment','request','then','info','VoiceDialReport,\x20%s,\x20%s','debug','request\x20sent','error','code','message','result','catch','CreateVoiceDialReport','create','body','options','update','raw','where','attributes','limit'];(function(_0x58afd5,_0x534a48){var _0x3e503b=function(_0x27ba44){while(--_0x27ba44){_0x58afd5['push'](_0x58afd5['shift']());}};_0x3e503b(++_0x534a48);}(_0x0871,0x1b4));var _0x1087=function(_0x4f9b18,_0x2cb5ca){_0x4f9b18=_0x4f9b18-0x0;var _0x29f20c=_0x0871[_0x4f9b18];return _0x29f20c;};'use strict';var _=require(_0x1087('0x0'));var util=require(_0x1087('0x1'));var moment=require('moment');var BPromise=require(_0x1087('0x2'));var rs=require(_0x1087('0x3'));var fs=require('fs');var Redis=require(_0x1087('0x4'));var db=require(_0x1087('0x5'))['db'];var utils=require('../../config/utils');var logger=require('../../config/logger')(_0x1087('0x6'));var config=require(_0x1087('0x7'));var jayson=require('jayson/promise');var client=jayson['client']['http']({'port':0x232a});function respondWithRpcPromise(_0x140421,_0x716524,_0x397257){return new BPromise(function(_0x23d4db,_0x45b70e){return client[_0x1087('0x8')](_0x140421,_0x397257)[_0x1087('0x9')](function(_0x1067a3){logger[_0x1087('0xa')](_0x1087('0xb'),_0x716524,'request\x20sent');logger[_0x1087('0xc')]('VoiceDialReport,\x20%s,\x20%s,\x20%s',_0x716524,_0x1087('0xd'),JSON['stringify'](_0x1067a3));if(_0x1067a3[_0x1087('0xe')]){if(_0x1067a3[_0x1087('0xe')][_0x1087('0xf')]===0x1f4){logger['error'](_0x1087('0xb'),_0x716524,_0x1067a3[_0x1087('0xe')]['message']);return _0x45b70e(_0x1067a3[_0x1087('0xe')][_0x1087('0x10')]);}logger[_0x1087('0xe')](_0x1087('0xb'),_0x716524,_0x1067a3[_0x1087('0xe')][_0x1087('0x10')]);return _0x23d4db(_0x1067a3[_0x1087('0xe')]['message']);}else{logger[_0x1087('0xa')](_0x1087('0xb'),_0x716524,_0x1087('0xd'));_0x23d4db(_0x1067a3[_0x1087('0x11')][_0x1087('0x10')]);}})[_0x1087('0x12')](function(_0x6a16b5){logger[_0x1087('0xe')](_0x1087('0xb'),_0x716524,_0x6a16b5);_0x45b70e(_0x6a16b5);});});}exports[_0x1087('0x13')]=function(_0xd62c03){var _0x92dea=this;return new Promise(function(_0x1da4e3,_0x338afc){return db['VoiceDialReport'][_0x1087('0x14')](_0xd62c03[_0x1087('0x15')],{'raw':_0xd62c03[_0x1087('0x16')]?_0xd62c03[_0x1087('0x16')]['raw']===undefined?!![]:![]:!![]})[_0x1087('0x9')](function(_0x5eb237){logger[_0x1087('0xa')]('CreateVoiceDialReport',_0xd62c03);logger['debug'](_0x1087('0x13'),_0xd62c03,JSON['stringify'](_0x5eb237));_0x1da4e3(_0x5eb237);})[_0x1087('0x12')](function(_0x3b05d1){logger['error'](_0x1087('0x13'),_0x3b05d1[_0x1087('0x10')],_0xd62c03);_0x338afc(_0x92dea[_0x1087('0xe')](0x1f4,_0x3b05d1[_0x1087('0x10')]));});});};exports['UpdateVoiceDialReport']=function(_0x1e1211){var _0xae3a2a=this;return new Promise(function(_0x166c3c,_0x3478d7){return db['VoiceDialReport'][_0x1087('0x17')](_0x1e1211[_0x1087('0x15')],{'raw':_0x1e1211[_0x1087('0x16')]?_0x1e1211['options'][_0x1087('0x18')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x1e1211[_0x1087('0x16')]?_0x1e1211[_0x1087('0x16')][_0x1087('0x19')]||null:null,'attributes':_0x1e1211[_0x1087('0x16')]?_0x1e1211[_0x1087('0x16')][_0x1087('0x1a')]||null:null,'limit':_0x1e1211['options']?_0x1e1211['options'][_0x1087('0x1b')]||null:null})[_0x1087('0x9')](function(_0x233ef7){logger[_0x1087('0xa')](_0x1087('0x1c'),_0x1e1211);logger[_0x1087('0xc')](_0x1087('0x1c'),_0x1e1211,JSON['stringify'](_0x233ef7));_0x166c3c(_0x233ef7);})[_0x1087('0x12')](function(_0x2e2ece){logger[_0x1087('0xe')](_0x1087('0x1c'),_0x2e2ece[_0x1087('0x10')],_0x1e1211);_0x3478d7(_0xae3a2a[_0x1087('0xe')](0x1f4,_0x2e2ece[_0x1087('0x10')]));});});};
\ No newline at end of file
+var _0x8a3b=['ioredis','../../config/utils','../../config/logger','rpc','client','request','then','info','VoiceDialReport,\x20%s,\x20%s','request\x20sent','debug','VoiceDialReport,\x20%s,\x20%s,\x20%s','stringify','error','code','message','catch','CreateVoiceDialReport','create','body','options','raw','UpdateVoiceDialReport','update','where','attributes','lodash','util','moment','randomstring'];(function(_0xe73080,_0x24c56d){var _0x12cbc4=function(_0x1377e2){while(--_0x1377e2){_0xe73080['push'](_0xe73080['shift']());}};_0x12cbc4(++_0x24c56d);}(_0x8a3b,0x164));var _0xb8a3=function(_0x1cfa0d,_0x4391f2){_0x1cfa0d=_0x1cfa0d-0x0;var _0xe33279=_0x8a3b[_0x1cfa0d];return _0xe33279;};'use strict';var _=require(_0xb8a3('0x0'));var util=require(_0xb8a3('0x1'));var moment=require(_0xb8a3('0x2'));var BPromise=require('bluebird');var rs=require(_0xb8a3('0x3'));var fs=require('fs');var Redis=require(_0xb8a3('0x4'));var db=require('../../mysqldb')['db'];var utils=require(_0xb8a3('0x5'));var logger=require(_0xb8a3('0x6'))(_0xb8a3('0x7'));var config=require('../../config/environment');var jayson=require('jayson/promise');var client=jayson[_0xb8a3('0x8')]['http']({'port':0x232a});function respondWithRpcPromise(_0x1dc9cb,_0x2d430f,_0x45b661){return new BPromise(function(_0x2038d7,_0xb6ffd2){return client[_0xb8a3('0x9')](_0x1dc9cb,_0x45b661)[_0xb8a3('0xa')](function(_0xf944ae){logger[_0xb8a3('0xb')](_0xb8a3('0xc'),_0x2d430f,_0xb8a3('0xd'));logger[_0xb8a3('0xe')](_0xb8a3('0xf'),_0x2d430f,_0xb8a3('0xd'),JSON[_0xb8a3('0x10')](_0xf944ae));if(_0xf944ae[_0xb8a3('0x11')]){if(_0xf944ae['error'][_0xb8a3('0x12')]===0x1f4){logger[_0xb8a3('0x11')](_0xb8a3('0xc'),_0x2d430f,_0xf944ae[_0xb8a3('0x11')]['message']);return _0xb6ffd2(_0xf944ae[_0xb8a3('0x11')]['message']);}logger[_0xb8a3('0x11')]('VoiceDialReport,\x20%s,\x20%s',_0x2d430f,_0xf944ae[_0xb8a3('0x11')][_0xb8a3('0x13')]);return _0x2038d7(_0xf944ae[_0xb8a3('0x11')][_0xb8a3('0x13')]);}else{logger['info']('VoiceDialReport,\x20%s,\x20%s',_0x2d430f,_0xb8a3('0xd'));_0x2038d7(_0xf944ae['result'][_0xb8a3('0x13')]);}})[_0xb8a3('0x14')](function(_0x1a7953){logger[_0xb8a3('0x11')](_0xb8a3('0xc'),_0x2d430f,_0x1a7953);_0xb6ffd2(_0x1a7953);});});}exports[_0xb8a3('0x15')]=function(_0x89e960){var _0x11427c=this;return new Promise(function(_0x567a80,_0x32c46b){return db['VoiceDialReport'][_0xb8a3('0x16')](_0x89e960[_0xb8a3('0x17')],{'raw':_0x89e960[_0xb8a3('0x18')]?_0x89e960[_0xb8a3('0x18')][_0xb8a3('0x19')]===undefined?!![]:![]:!![]})[_0xb8a3('0xa')](function(_0x255699){logger[_0xb8a3('0xb')](_0xb8a3('0x15'),_0x89e960);logger[_0xb8a3('0xe')](_0xb8a3('0x15'),_0x89e960,JSON[_0xb8a3('0x10')](_0x255699));_0x567a80(_0x255699);})[_0xb8a3('0x14')](function(_0x218db3){logger['error'](_0xb8a3('0x15'),_0x218db3[_0xb8a3('0x13')],_0x89e960);_0x32c46b(_0x11427c[_0xb8a3('0x11')](0x1f4,_0x218db3[_0xb8a3('0x13')]));});});};exports[_0xb8a3('0x1a')]=function(_0x263eab){var _0x262960=this;return new Promise(function(_0x7318ca,_0x5cb9a3){return db['VoiceDialReport'][_0xb8a3('0x1b')](_0x263eab[_0xb8a3('0x17')],{'raw':_0x263eab[_0xb8a3('0x18')]?_0x263eab[_0xb8a3('0x18')][_0xb8a3('0x19')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x263eab[_0xb8a3('0x18')]?_0x263eab[_0xb8a3('0x18')][_0xb8a3('0x1c')]||null:null,'attributes':_0x263eab[_0xb8a3('0x18')]?_0x263eab[_0xb8a3('0x18')][_0xb8a3('0x1d')]||null:null,'limit':_0x263eab[_0xb8a3('0x18')]?_0x263eab['options']['limit']||null:null})['then'](function(_0x45ec51){logger[_0xb8a3('0xb')](_0xb8a3('0x1a'),_0x263eab);logger[_0xb8a3('0xe')](_0xb8a3('0x1a'),_0x263eab,JSON[_0xb8a3('0x10')](_0x45ec51));_0x7318ca(_0x45ec51);})[_0xb8a3('0x14')](function(_0x1dc3bc){logger[_0xb8a3('0x11')]('UpdateVoiceDialReport',_0x1dc3bc[_0xb8a3('0x13')],_0x263eab);_0x5cb9a3(_0x262960[_0xb8a3('0x11')](0x1f4,_0x1dc3bc[_0xb8a3('0x13')]));});});};
\ No newline at end of file
index 641a17a..49c38cf 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2fdc=['create','/:id/applications','/:id','update','destroy','exports','multer','path','connect-timeout','Router','fs-extra','../../components/auth/service','get','isAuthenticated','show'];(function(_0x2e1fbe,_0x60f6e3){var _0xf13cee=function(_0x30740d){while(--_0x30740d){_0x2e1fbe['push'](_0x2e1fbe['shift']());}};_0xf13cee(++_0x60f6e3);}(_0x2fdc,0x6f));var _0xc2fd=function(_0x599e60,_0x5b6519){_0x599e60=_0x599e60-0x0;var _0x468e19=_0x2fdc[_0x599e60];return _0x468e19;};'use strict';var multer=require(_0xc2fd('0x0'));var util=require('util');var path=require(_0xc2fd('0x1'));var timeout=require(_0xc2fd('0x2'));var express=require('express');var router=express[_0xc2fd('0x3')]();var fs_extra=require(_0xc2fd('0x4'));var auth=require(_0xc2fd('0x5'));var interaction=require('../../components/interaction/service');var config=require('../../config/environment');var controller=require('./voiceExtension.controller');router[_0xc2fd('0x6')]('/',auth[_0xc2fd('0x7')](),controller['index']);router[_0xc2fd('0x6')]('/:id',auth['isAuthenticated'](),controller[_0xc2fd('0x8')]);router['post']('/',auth[_0xc2fd('0x7')](),controller[_0xc2fd('0x9')]);router['post'](_0xc2fd('0xa'),auth[_0xc2fd('0x7')](),controller['addApplications']);router['put'](_0xc2fd('0xb'),auth[_0xc2fd('0x7')](),controller[_0xc2fd('0xc')]);router['delete'](_0xc2fd('0xb'),auth[_0xc2fd('0x7')](),controller[_0xc2fd('0xd')]);module[_0xc2fd('0xe')]=router;
\ No newline at end of file
+var _0xee3f=['express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./voiceExtension.controller','get','isAuthenticated','index','show','post','create','/:id/applications','addApplications','put','/:id','update','delete','exports','multer','util','path'];(function(_0x583e6f,_0x428ae2){var _0x158dad=function(_0x27f214){while(--_0x27f214){_0x583e6f['push'](_0x583e6f['shift']());}};_0x158dad(++_0x428ae2);}(_0xee3f,0x184));var _0xfee3=function(_0x12095d,_0x47c760){_0x12095d=_0x12095d-0x0;var _0x415172=_0xee3f[_0x12095d];return _0x415172;};'use strict';var multer=require(_0xfee3('0x0'));var util=require(_0xfee3('0x1'));var path=require(_0xfee3('0x2'));var timeout=require('connect-timeout');var express=require(_0xfee3('0x3'));var router=express[_0xfee3('0x4')]();var fs_extra=require(_0xfee3('0x5'));var auth=require(_0xfee3('0x6'));var interaction=require(_0xfee3('0x7'));var config=require(_0xfee3('0x8'));var controller=require(_0xfee3('0x9'));router[_0xfee3('0xa')]('/',auth[_0xfee3('0xb')](),controller[_0xfee3('0xc')]);router['get']('/:id',auth[_0xfee3('0xb')](),controller[_0xfee3('0xd')]);router[_0xfee3('0xe')]('/',auth[_0xfee3('0xb')](),controller[_0xfee3('0xf')]);router[_0xfee3('0xe')](_0xfee3('0x10'),auth['isAuthenticated'](),controller[_0xfee3('0x11')]);router[_0xfee3('0x12')](_0xfee3('0x13'),auth[_0xfee3('0xb')](),controller[_0xfee3('0x14')]);router[_0xfee3('0x15')](_0xfee3('0x13'),auth[_0xfee3('0xb')](),controller['destroy']);module[_0xfee3('0x16')]=router;
\ No newline at end of file
index fa7eb5f..7268c1b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x14e6=['exports','STRING','compositeIndex','NoOp','ENUM','inbound','outbound','internal','inbound-fax','outbound-fax','*,*,*,*','INTEGER','BOOLEAN','wav','getDataValue','sequelize'];(function(_0x51b29c,_0x56d9e7){var _0x4ace5f=function(_0x257c95){while(--_0x257c95){_0x51b29c['push'](_0x51b29c['shift']());}};_0x4ace5f(++_0x56d9e7);}(_0x14e6,0x15f));var _0x614e=function(_0x1a7edf,_0x5c4e04){_0x1a7edf=_0x1a7edf-0x0;var _0x56c1d9=_0x14e6[_0x1a7edf];return _0x56c1d9;};'use strict';var Sequelize=require(_0x614e('0x0'));module[_0x614e('0x1')]={'context':{'type':Sequelize[_0x614e('0x2')],'allowNull':![],'unique':_0x614e('0x3'),'validate':{'notEmpty':!![],'is':/[A-Za-z0-9._\+*!\-\[\]]+$/i}},'exten':{'type':Sequelize[_0x614e('0x2')],'allowNull':![],'unique':_0x614e('0x3')},'priority':{'type':Sequelize[_0x614e('0x2')],'allowNull':![],'defaultValue':'1','unique':_0x614e('0x3')},'tag':{'type':Sequelize[_0x614e('0x2')],'allowNull':![],'defaultValue':'--'},'app':{'type':Sequelize[_0x614e('0x2')],'allowNull':![],'defaultValue':_0x614e('0x4')},'appdata':{'type':Sequelize[_0x614e('0x2')](0x1000),'allowNull':!![],'defaultValue':''},'type':{'type':Sequelize[_0x614e('0x5')](_0x614e('0x6'),_0x614e('0x7'),_0x614e('0x8'),_0x614e('0x9'),_0x614e('0xa'),'system','any'),'allowNull':![]},'description':{'type':Sequelize['STRING']},'interval':{'type':Sequelize[_0x614e('0x2')],'allowNull':![],'defaultValue':_0x614e('0xb')},'IntervalId':{'type':Sequelize[_0x614e('0xc')]},'isApp':{'type':Sequelize[_0x614e('0xd')],'allowNull':![],'defaultValue':![]},'appType':{'type':Sequelize[_0x614e('0x2')],'defaultValue':null},'callerID':{'type':Sequelize['STRING'],'allowNull':!![]},'record':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'cutdigits':{'type':Sequelize[_0x614e('0xc')]},'recordingFormat':{'type':Sequelize[_0x614e('0x2')],'defaultValue':_0x614e('0xe')},'answer':{'type':Sequelize[_0x614e('0xd')],'defaultValue':!![]},'name':{'type':Sequelize['VIRTUAL'],'get':function(_0x24786e){return this[_0x614e('0xf')]('exten');}},'alias':{'type':Sequelize[_0x614e('0x2')],'allowNull':!![]}};
\ No newline at end of file
+var _0x962d=['NoOp','ENUM','inbound','outbound','internal','system','any','*,*,*,*','INTEGER','BOOLEAN','wav','VIRTUAL','exten','sequelize','compositeIndex','STRING'];(function(_0x26f66e,_0x252307){var _0x81a238=function(_0x257a8f){while(--_0x257a8f){_0x26f66e['push'](_0x26f66e['shift']());}};_0x81a238(++_0x252307);}(_0x962d,0x1cd));var _0xd962=function(_0x561771,_0x554760){_0x561771=_0x561771-0x0;var _0x54d16e=_0x962d[_0x561771];return _0x54d16e;};'use strict';var Sequelize=require(_0xd962('0x0'));module['exports']={'context':{'type':Sequelize['STRING'],'allowNull':![],'unique':'compositeIndex','validate':{'notEmpty':!![],'is':/[A-Za-z0-9._\+*!\-\[\]]+$/i}},'exten':{'type':Sequelize['STRING'],'allowNull':![],'unique':_0xd962('0x1')},'priority':{'type':Sequelize[_0xd962('0x2')],'allowNull':![],'defaultValue':'1','unique':_0xd962('0x1')},'tag':{'type':Sequelize['STRING'],'allowNull':![],'defaultValue':'--'},'app':{'type':Sequelize['STRING'],'allowNull':![],'defaultValue':_0xd962('0x3')},'appdata':{'type':Sequelize[_0xd962('0x2')](0x1000),'allowNull':!![],'defaultValue':''},'type':{'type':Sequelize[_0xd962('0x4')](_0xd962('0x5'),_0xd962('0x6'),_0xd962('0x7'),'inbound-fax','outbound-fax',_0xd962('0x8'),_0xd962('0x9')),'allowNull':![]},'description':{'type':Sequelize['STRING']},'interval':{'type':Sequelize['STRING'],'allowNull':![],'defaultValue':_0xd962('0xa')},'IntervalId':{'type':Sequelize[_0xd962('0xb')]},'isApp':{'type':Sequelize[_0xd962('0xc')],'allowNull':![],'defaultValue':![]},'appType':{'type':Sequelize[_0xd962('0x2')],'defaultValue':null},'callerID':{'type':Sequelize[_0xd962('0x2')],'allowNull':!![]},'record':{'type':Sequelize[_0xd962('0xc')],'defaultValue':![]},'cutdigits':{'type':Sequelize[_0xd962('0xb')]},'recordingFormat':{'type':Sequelize['STRING'],'defaultValue':_0xd962('0xd')},'answer':{'type':Sequelize[_0xd962('0xc')],'defaultValue':!![]},'name':{'type':Sequelize[_0xd962('0xe')],'get':function(_0xca34b0){return this['getDataValue'](_0xd962('0xf'));}},'alias':{'type':Sequelize[_0xd962('0x2')],'allowNull':!![]}};
\ No newline at end of file
index 1f13c12..3ae35f9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7a56=['keys','include','destroy','create','body','outbound','exten','concat','user','get','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','inbound','InternalRoutes','UserProfileSection','userProfileId','autoAssociation','UserProfileResource','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','params','context','description','recordingFormat','cutdigits','mandatoryDisposition','alias','addApplications','findOne','sequelize','transaction','VoiceExtensionId','isApp','rewriteDial','true','createRouting','bulkCreate','findAndCountAll','cast(priority\x20as\x20unsigned)','eml-format','zip-dir','fast-json-patch','request-promise','bluebird','util','to-csv','ejs','fs-extra','lodash','squel','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','redis','defaults','localhost','socket.io-emitter','./voiceExtension.socket','register','sendStatus','status','json','offset','undefined','limit','count','set','Content-Range','apply','save','update','then','InboundRoutes','internal','filter','ignore','map','value','includes','find','error','name','send','index','VoiceExtension','rawAttributes','fieldName','type','key','model','query','filters','intersection','fields','attributes','length','hasOwnProperty','order','sort','merge','where','VIRTUAL','options','includeAll','rows','catch','show'];(function(_0x3eb492,_0x18311c){var _0x20cfd8=function(_0x34f1fb){while(--_0x34f1fb){_0x3eb492['push'](_0x3eb492['shift']());}};_0x20cfd8(++_0x18311c);}(_0x7a56,0x10e));var _0x67a5=function(_0x374c3d,_0xa807b5){_0x374c3d=_0x374c3d-0x0;var _0x46b1a8=_0x7a56[_0x374c3d];return _0x46b1a8;};'use strict';var emlformat=require(_0x67a5('0x0'));var rimraf=require('rimraf');var zipdir=require(_0x67a5('0x1'));var jsonpatch=require(_0x67a5('0x2'));var rp=require(_0x67a5('0x3'));var moment=require('moment');var BPromise=require(_0x67a5('0x4'));var Mustache=require('mustache');var util=require(_0x67a5('0x5'));var path=require('path');var sox=require('sox');var csv=require(_0x67a5('0x6'));var ejs=require(_0x67a5('0x7'));var fs=require('fs');var fs_extra=require(_0x67a5('0x8'));var _=require(_0x67a5('0x9'));var squel=require(_0x67a5('0xa'));var crypto=require('crypto');var jsforce=require(_0x67a5('0xb'));var deskjs=require(_0x67a5('0xc'));var toCsv=require(_0x67a5('0x6'));var querystring=require(_0x67a5('0xd'));var Papa=require(_0x67a5('0xe'));var Redis=require(_0x67a5('0xf'));var authService=require(_0x67a5('0x10'));var qs=require(_0x67a5('0x11'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require('../../config/license/hardware');var logger=require(_0x67a5('0x12'))(_0x67a5('0x13'));var utils=require(_0x67a5('0x14'));var config=require(_0x67a5('0x15'));var licenseUtil=require(_0x67a5('0x16'));var db=require(_0x67a5('0x17'))['db'];config[_0x67a5('0x18')]=_[_0x67a5('0x19')](config[_0x67a5('0x18')],{'host':_0x67a5('0x1a'),'port':0x18eb});var socket=require(_0x67a5('0x1b'))(new Redis(config[_0x67a5('0x18')]));require(_0x67a5('0x1c'))[_0x67a5('0x1d')](socket);function respondWithStatusCode(_0x14cb01,_0x1ccfee){_0x1ccfee=_0x1ccfee||0xcc;return function(_0x32af6){if(_0x32af6){return _0x14cb01[_0x67a5('0x1e')](_0x1ccfee);}return _0x14cb01[_0x67a5('0x1f')](_0x1ccfee)['end']();};}function respondWithResult(_0x115711,_0x984456){_0x984456=_0x984456||0xc8;return function(_0x289074){if(_0x289074){return _0x115711[_0x67a5('0x1f')](_0x984456)[_0x67a5('0x20')](_0x289074);}};}function respondWithFilteredResult(_0x7e722a,_0x33143f){return function(_0x4de8d1){if(_0x4de8d1){var _0x3c3829=typeof _0x33143f[_0x67a5('0x21')]===_0x67a5('0x22')&&typeof _0x33143f[_0x67a5('0x23')]==='undefined';var _0x5f40e1=_0x4de8d1[_0x67a5('0x24')];var _0x400354=_0x3c3829?0x0:_0x33143f[_0x67a5('0x21')];var _0x473944=_0x3c3829?_0x4de8d1[_0x67a5('0x24')]:_0x33143f[_0x67a5('0x21')]+_0x33143f['limit'];var _0x2f4f95;if(_0x473944>=_0x5f40e1){_0x473944=_0x5f40e1;_0x2f4f95=0xc8;}else{_0x2f4f95=0xce;}_0x7e722a[_0x67a5('0x1f')](_0x2f4f95);return _0x7e722a[_0x67a5('0x25')](_0x67a5('0x26'),_0x400354+'-'+_0x473944+'/'+_0x5f40e1)['json'](_0x4de8d1);}return null;};}function patchUpdates(_0x12fe1c){return function(_0x473be7){try{jsonpatch[_0x67a5('0x27')](_0x473be7,_0x12fe1c,!![]);}catch(_0x2f53d1){return BPromise['reject'](_0x2f53d1);}return _0x473be7[_0x67a5('0x28')]();};}function saveUpdates(_0x14becb,_0x167551){return function(_0x43c553){if(_0x43c553){return _0x43c553[_0x67a5('0x29')](_0x14becb)['then'](function(_0x5641a4){return _0x5641a4;});}return null;};}function removeEntity(_0x11bdd7,_0x27b876){return function(_0x48e8d2){if(_0x48e8d2){return _0x48e8d2['destroy']()[_0x67a5('0x2a')](function(){var _0x4ceab6=_0x48e8d2['get']({'plain':!![]});var _0x2390a1=[{'name':_0x67a5('0x2b'),'value':'inbound','ignore':![]},{'name':'OutboundRoutes','value':'outbound','ignore':![]},{'name':'InternalRoutes','value':_0x67a5('0x2c'),'ignore':![]}];var _0x3c20ef=_(_0x2390a1)[_0x67a5('0x2d')](_0x67a5('0x2e'))[_0x67a5('0x2f')](_0x67a5('0x30'))[_0x67a5('0x30')]();if(_[_0x67a5('0x31')](_0x3c20ef,_0x4ceab6['type'])){return;}var _0x58b752=_[_0x67a5('0x32')](_0x2390a1,[_0x67a5('0x30'),_0x4ceab6['type']])['name'];return db['UserProfileResource']['destroy']({'where':{'type':_0x58b752,'resourceId':_0x4ceab6['id']}})[_0x67a5('0x2a')](function(){return _0x48e8d2;});})[_0x67a5('0x2a')](function(){_0x11bdd7[_0x67a5('0x1f')](0xcc)['end']();});}};}function handleEntityNotFound(_0x55421b,_0x1b6af9){return function(_0x460b1e){if(!_0x460b1e){_0x55421b[_0x67a5('0x1e')](0x194);}return _0x460b1e;};}function handleError(_0x14e88d,_0x4da469){_0x4da469=_0x4da469||0x1f4;return function(_0x1cee7c){logger[_0x67a5('0x33')](_0x1cee7c['stack']);if(_0x1cee7c[_0x67a5('0x34')]){delete _0x1cee7c[_0x67a5('0x34')];}_0x14e88d['status'](_0x4da469)[_0x67a5('0x35')](_0x1cee7c);};}exports[_0x67a5('0x36')]=function(_0xde4ce7,_0x3bad81){var _0x467372={},_0xbe0f91={},_0x90feee={'count':0x0,'rows':[]};var _0x556b0a=_[_0x67a5('0x2f')](db[_0x67a5('0x37')][_0x67a5('0x38')],function(_0x3b41b2){return{'name':_0x3b41b2[_0x67a5('0x39')],'type':_0x3b41b2[_0x67a5('0x3a')][_0x67a5('0x3b')]};});_0xbe0f91[_0x67a5('0x3c')]=_[_0x67a5('0x2f')](_0x556b0a,_0x67a5('0x34'));_0xbe0f91[_0x67a5('0x3d')]=_['keys'](_0xde4ce7[_0x67a5('0x3d')]);_0xbe0f91[_0x67a5('0x3e')]=_[_0x67a5('0x3f')](_0xbe0f91[_0x67a5('0x3c')],_0xbe0f91[_0x67a5('0x3d')]);_0x467372['attributes']=_[_0x67a5('0x3f')](_0xbe0f91[_0x67a5('0x3c')],qs[_0x67a5('0x40')](_0xde4ce7[_0x67a5('0x3d')][_0x67a5('0x40')]));_0x467372[_0x67a5('0x41')]=_0x467372['attributes'][_0x67a5('0x42')]?_0x467372[_0x67a5('0x41')]:_0xbe0f91['model'];if(!_0xde4ce7['query'][_0x67a5('0x43')]('nolimit')){_0x467372[_0x67a5('0x23')]=qs[_0x67a5('0x23')](_0xde4ce7[_0x67a5('0x3d')]['limit']);_0x467372[_0x67a5('0x21')]=qs['offset'](_0xde4ce7['query'][_0x67a5('0x21')]);}_0x467372[_0x67a5('0x44')]=qs[_0x67a5('0x45')](_0xde4ce7['query']['sort']);_0x467372['where']=qs[_0x67a5('0x3e')](_['pick'](_0xde4ce7['query'],_0xbe0f91[_0x67a5('0x3e')]),_0x556b0a);if(_0xde4ce7[_0x67a5('0x3d')][_0x67a5('0x2d')]){_0x467372['where']=_[_0x67a5('0x46')](_0x467372[_0x67a5('0x47')],{'$or':_[_0x67a5('0x2f')](_0x556b0a,function(_0x31f011){if(_0x31f011['type']!==_0x67a5('0x48')){var _0x137c14={};_0x137c14[_0x31f011[_0x67a5('0x34')]]={'$like':'%'+_0xde4ce7[_0x67a5('0x3d')][_0x67a5('0x2d')]+'%'};return _0x137c14;}})});}_0x467372=_[_0x67a5('0x46')]({},_0x467372,_0xde4ce7[_0x67a5('0x49')]);var _0x1dcc01={'where':_0x467372['where']};return db[_0x67a5('0x37')][_0x67a5('0x24')](_0x1dcc01)[_0x67a5('0x2a')](function(_0x1901e1){_0x90feee['count']=_0x1901e1;if(_0xde4ce7[_0x67a5('0x3d')][_0x67a5('0x4a')]){_0x467372['include']=[{'all':!![]}];}return db[_0x67a5('0x37')]['findAll'](_0x467372);})[_0x67a5('0x2a')](function(_0x507c20){_0x90feee[_0x67a5('0x4b')]=_0x507c20;return _0x90feee;})['then'](respondWithFilteredResult(_0x3bad81,_0x467372))[_0x67a5('0x4c')](handleError(_0x3bad81,null));};exports[_0x67a5('0x4d')]=function(_0x117174,_0x4dc48e){var _0xb395be={'raw':![],'where':{'id':_0x117174['params']['id']}},_0x40553d={};_0x40553d[_0x67a5('0x3c')]=_[_0x67a5('0x4e')](db['VoiceExtension'][_0x67a5('0x38')]);_0x40553d[_0x67a5('0x3d')]=_[_0x67a5('0x4e')](_0x117174['query']);_0x40553d[_0x67a5('0x3e')]=_[_0x67a5('0x3f')](_0x40553d[_0x67a5('0x3c')],_0x40553d[_0x67a5('0x3d')]);_0xb395be[_0x67a5('0x41')]=_['intersection'](_0x40553d[_0x67a5('0x3c')],qs['fields'](_0x117174['query'][_0x67a5('0x40')]));_0xb395be[_0x67a5('0x41')]=_0xb395be['attributes'][_0x67a5('0x42')]?_0xb395be[_0x67a5('0x41')]:_0x40553d[_0x67a5('0x3c')];if(_0x117174[_0x67a5('0x3d')]['includeAll']){_0xb395be[_0x67a5('0x4f')]=[{'all':!![]}];}_0xb395be=_[_0x67a5('0x46')]({},_0xb395be,_0x117174[_0x67a5('0x49')]);return db[_0x67a5('0x37')][_0x67a5('0x32')](_0xb395be)[_0x67a5('0x2a')](handleEntityNotFound(_0x4dc48e,null))[_0x67a5('0x2a')](respondWithResult(_0x4dc48e,null))[_0x67a5('0x4c')](handleError(_0x4dc48e,null));};exports[_0x67a5('0x50')]=function(_0x5873d4,_0x5540c7){return db[_0x67a5('0x37')][_0x67a5('0x32')]({'where':{'id':_0x5873d4['params']['id']}})[_0x67a5('0x2a')](handleEntityNotFound(_0x5540c7,null))[_0x67a5('0x2a')](removeEntity(_0x5540c7,null))[_0x67a5('0x4c')](handleError(_0x5540c7,null));};exports[_0x67a5('0x51')]=function(_0x512311,_0x4d072b){if(_0x512311[_0x67a5('0x52')][_0x67a5('0x3a')]===_0x67a5('0x53')&&!_['startsWith'](_0x512311['body'][_0x67a5('0x54')],'_')){_0x512311[_0x67a5('0x52')][_0x67a5('0x54')]='_'[_0x67a5('0x55')](_0x512311[_0x67a5('0x52')][_0x67a5('0x54')]);}return db[_0x67a5('0x37')]['create'](_0x512311[_0x67a5('0x52')],{'raw':![]})[_0x67a5('0x2a')](function(_0x73fb21){var _0x119c6a=_0x512311[_0x67a5('0x56')][_0x67a5('0x57')]({'plain':!![]});if(!_0x119c6a)throw new Error(_0x67a5('0x58'));if(_0x119c6a[_0x67a5('0x59')]==='user'){var _0x40e8a9=_0x73fb21[_0x67a5('0x57')]({'plain':!![]});var _0x588017=[{'name':_0x67a5('0x2b'),'value':_0x67a5('0x5a')},{'name':'OutboundRoutes','value':_0x67a5('0x53')},{'name':_0x67a5('0x5b'),'value':_0x67a5('0x2c')}];var _0x45d131=_[_0x67a5('0x32')](_0x588017,[_0x67a5('0x30'),_0x40e8a9[_0x67a5('0x3a')]])[_0x67a5('0x34')];return db[_0x67a5('0x5c')]['find']({'where':{'name':_0x45d131,'userProfileId':_0x119c6a[_0x67a5('0x5d')]},'raw':!![]})[_0x67a5('0x2a')](function(_0x4b0c76){if(_0x4b0c76&&_0x4b0c76[_0x67a5('0x5e')]===0x0){return db[_0x67a5('0x5f')][_0x67a5('0x51')]({'name':_0x40e8a9[_0x67a5('0x34')],'resourceId':_0x40e8a9['id'],'type':_0x4b0c76[_0x67a5('0x34')],'sectionId':_0x4b0c76['id']},{})[_0x67a5('0x2a')](function(){return _0x73fb21;});}else{return _0x73fb21;}})[_0x67a5('0x4c')](function(_0x28912a){logger[_0x67a5('0x33')](_0x67a5('0x60'),_0x28912a);throw _0x28912a;});}return _0x73fb21;})[_0x67a5('0x2a')](respondWithResult(_0x4d072b,0xc9))[_0x67a5('0x4c')](handleError(_0x4d072b,null));};exports[_0x67a5('0x29')]=function(_0x1dfe66,_0x38becf){if(_0x1dfe66[_0x67a5('0x52')]['id']){delete _0x1dfe66[_0x67a5('0x52')]['id'];}return db['VoiceExtension']['find']({'where':{'id':_0x1dfe66[_0x67a5('0x61')]['id']}})['then'](handleEntityNotFound(_0x38becf,null))[_0x67a5('0x2a')](function(_0x18620f){if(_0x18620f){return db[_0x67a5('0x37')]['update'](_['pick'](_0x1dfe66[_0x67a5('0x52')],[_0x67a5('0x54'),_0x67a5('0x62'),_0x67a5('0x63'),_0x67a5('0x64'),_0x67a5('0x65'),_0x67a5('0x66'),_0x67a5('0x67')]),{'where':{'context':_0x18620f[_0x67a5('0x62')],'exten':_0x18620f[_0x67a5('0x54')]},'individualHooks':!![]})[_0x67a5('0x2a')](function(_0x5f0130){return _0x5f0130;});}return null;})[_0x67a5('0x2a')](respondWithStatusCode(_0x38becf,null))[_0x67a5('0x4c')](handleError(_0x38becf,null));};exports[_0x67a5('0x68')]=function(_0x12c10b,_0x459fc4){return db['VoiceExtension'][_0x67a5('0x69')]({'where':{'id':_0x12c10b[_0x67a5('0x61')]['id']}})['then'](function(_0x18b285){if(_0x18b285){return db[_0x67a5('0x6a')][_0x67a5('0x6b')](function(_0x5775f5){return db[_0x67a5('0x37')]['destroy']({'where':{'VoiceExtensionId':_0x12c10b[_0x67a5('0x61')]['id']},'transaction':_0x5775f5})[_0x67a5('0x2a')](function(){var _0x4cad42=_[_0x67a5('0x2f')](_0x12c10b['body'],function(_0x5b5f76){_0x5b5f76[_0x67a5('0x6c')]=_0x12c10b[_0x67a5('0x61')]['id'];_0x5b5f76[_0x67a5('0x6d')]=!![];return _0x5b5f76;});var _0x2c1d8d=_0x12c10b['query']['rewriteDial']&&_0x12c10b[_0x67a5('0x3d')][_0x67a5('0x6e')]['toLowerCase']()===_0x67a5('0x6f')?!![]:![];return _0x18b285[_0x67a5('0x70')](_0x4cad42,_0x2c1d8d);})[_0x67a5('0x2a')](function(_0x2c2991){return db[_0x67a5('0x37')][_0x67a5('0x71')](_0x2c2991,{'transaction':_0x5775f5});});})['then'](function(){return db[_0x67a5('0x37')][_0x67a5('0x72')]({'where':{'isApp':!![],'VoiceExtensionId':_0x12c10b[_0x67a5('0x61')]['id']},'order':_0x67a5('0x73')});});}})[_0x67a5('0x2a')](respondWithResult(_0x459fc4,null))['catch'](handleError(_0x459fc4,null));};
\ No newline at end of file
+var _0x5cb1=['InboundRoutes','inbound','outbound','InternalRoutes','internal','filter','ignore','value','includes','type','find','name','UserProfileResource','error','stack','index','VoiceExtension','rawAttributes','fieldName','key','model','map','query','keys','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','limit','order','sort','pick','merge','VIRTUAL','options','include','findAll','catch','show','includeAll','create','startsWith','body','exten','concat','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','UserProfileSection','userProfileId','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','params','context','description','cutdigits','mandatoryDisposition','addApplications','findOne','transaction','VoiceExtensionId','isApp','rewriteDial','toLowerCase','true','createRouting','bulkCreate','findAndCountAll','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox','ejs','fs-extra','lodash','squel','jsforce','querystring','papaparse','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/utils','../../config/license/util','../../mysqldb','redis','defaults','localhost','./voiceExtension.socket','register','sendStatus','status','end','offset','undefined','count','set','Content-Range','apply','reject','save','update','then','destroy','get'];(function(_0x1a007a,_0x5f3509){var _0x1b3ea8=function(_0x26e958){while(--_0x26e958){_0x1a007a['push'](_0x1a007a['shift']());}};_0x1b3ea8(++_0x5f3509);}(_0x5cb1,0xb9));var _0x15cb=function(_0x3e750b,_0x2070d9){_0x3e750b=_0x3e750b-0x0;var _0x1e2ac3=_0x5cb1[_0x3e750b];return _0x1e2ac3;};'use strict';var emlformat=require(_0x15cb('0x0'));var rimraf=require(_0x15cb('0x1'));var zipdir=require(_0x15cb('0x2'));var jsonpatch=require(_0x15cb('0x3'));var rp=require(_0x15cb('0x4'));var moment=require(_0x15cb('0x5'));var BPromise=require(_0x15cb('0x6'));var Mustache=require(_0x15cb('0x7'));var util=require(_0x15cb('0x8'));var path=require(_0x15cb('0x9'));var sox=require(_0x15cb('0xa'));var csv=require('to-csv');var ejs=require(_0x15cb('0xb'));var fs=require('fs');var fs_extra=require(_0x15cb('0xc'));var _=require(_0x15cb('0xd'));var squel=require(_0x15cb('0xe'));var crypto=require('crypto');var jsforce=require(_0x15cb('0xf'));var deskjs=require('desk.js');var toCsv=require('to-csv');var querystring=require(_0x15cb('0x10'));var Papa=require(_0x15cb('0x11'));var Redis=require(_0x15cb('0x12'));var authService=require('../../components/auth/service');var qs=require(_0x15cb('0x13'));var as=require(_0x15cb('0x14'));var hardwareService=require(_0x15cb('0x15'));var logger=require('../../config/logger')('api');var utils=require(_0x15cb('0x16'));var config=require('../../config/environment');var licenseUtil=require(_0x15cb('0x17'));var db=require(_0x15cb('0x18'))['db'];config[_0x15cb('0x19')]=_[_0x15cb('0x1a')](config[_0x15cb('0x19')],{'host':_0x15cb('0x1b'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0x15cb('0x19')]));require(_0x15cb('0x1c'))[_0x15cb('0x1d')](socket);function respondWithStatusCode(_0x252a6f,_0x59a657){_0x59a657=_0x59a657||0xcc;return function(_0x1073ee){if(_0x1073ee){return _0x252a6f[_0x15cb('0x1e')](_0x59a657);}return _0x252a6f[_0x15cb('0x1f')](_0x59a657)[_0x15cb('0x20')]();};}function respondWithResult(_0x49486b,_0x2d735b){_0x2d735b=_0x2d735b||0xc8;return function(_0x1fb63b){if(_0x1fb63b){return _0x49486b[_0x15cb('0x1f')](_0x2d735b)['json'](_0x1fb63b);}};}function respondWithFilteredResult(_0x478dd2,_0x207cd5){return function(_0x28109b){if(_0x28109b){var _0x19bb77=typeof _0x207cd5[_0x15cb('0x21')]===_0x15cb('0x22')&&typeof _0x207cd5['limit']===_0x15cb('0x22');var _0x7ddd79=_0x28109b[_0x15cb('0x23')];var _0xec487f=_0x19bb77?0x0:_0x207cd5[_0x15cb('0x21')];var _0x4bc436=_0x19bb77?_0x28109b[_0x15cb('0x23')]:_0x207cd5[_0x15cb('0x21')]+_0x207cd5['limit'];var _0x335134;if(_0x4bc436>=_0x7ddd79){_0x4bc436=_0x7ddd79;_0x335134=0xc8;}else{_0x335134=0xce;}_0x478dd2['status'](_0x335134);return _0x478dd2[_0x15cb('0x24')](_0x15cb('0x25'),_0xec487f+'-'+_0x4bc436+'/'+_0x7ddd79)['json'](_0x28109b);}return null;};}function patchUpdates(_0x2f67e8){return function(_0x4ab9dc){try{jsonpatch[_0x15cb('0x26')](_0x4ab9dc,_0x2f67e8,!![]);}catch(_0x1bb5c0){return BPromise[_0x15cb('0x27')](_0x1bb5c0);}return _0x4ab9dc[_0x15cb('0x28')]();};}function saveUpdates(_0x3787d5,_0x27b3f2){return function(_0xa05918){if(_0xa05918){return _0xa05918[_0x15cb('0x29')](_0x3787d5)[_0x15cb('0x2a')](function(_0x3ab254){return _0x3ab254;});}return null;};}function removeEntity(_0x2e2f6b,_0x39d0df){return function(_0x20c45a){if(_0x20c45a){return _0x20c45a[_0x15cb('0x2b')]()['then'](function(){var _0x5baf8f=_0x20c45a[_0x15cb('0x2c')]({'plain':!![]});var _0x4343eb=[{'name':_0x15cb('0x2d'),'value':_0x15cb('0x2e'),'ignore':![]},{'name':'OutboundRoutes','value':_0x15cb('0x2f'),'ignore':![]},{'name':_0x15cb('0x30'),'value':_0x15cb('0x31'),'ignore':![]}];var _0x4f7052=_(_0x4343eb)[_0x15cb('0x32')](_0x15cb('0x33'))['map']('value')[_0x15cb('0x34')]();if(_[_0x15cb('0x35')](_0x4f7052,_0x5baf8f[_0x15cb('0x36')])){return;}var _0x422385=_[_0x15cb('0x37')](_0x4343eb,['value',_0x5baf8f[_0x15cb('0x36')]])[_0x15cb('0x38')];return db[_0x15cb('0x39')][_0x15cb('0x2b')]({'where':{'type':_0x422385,'resourceId':_0x5baf8f['id']}})[_0x15cb('0x2a')](function(){return _0x20c45a;});})[_0x15cb('0x2a')](function(){_0x2e2f6b['status'](0xcc)[_0x15cb('0x20')]();});}};}function handleEntityNotFound(_0x4b2f9f,_0xa789dd){return function(_0x529fd0){if(!_0x529fd0){_0x4b2f9f[_0x15cb('0x1e')](0x194);}return _0x529fd0;};}function handleError(_0x1aa29d,_0x462329){_0x462329=_0x462329||0x1f4;return function(_0x366d9c){logger[_0x15cb('0x3a')](_0x366d9c[_0x15cb('0x3b')]);if(_0x366d9c['name']){delete _0x366d9c[_0x15cb('0x38')];}_0x1aa29d[_0x15cb('0x1f')](_0x462329)['send'](_0x366d9c);};}exports[_0x15cb('0x3c')]=function(_0x4dcf99,_0x23018a){var _0x5bbef1={},_0x42d727={},_0x3f77f6={'count':0x0,'rows':[]};var _0x243a3e=_['map'](db[_0x15cb('0x3d')][_0x15cb('0x3e')],function(_0x573057){return{'name':_0x573057[_0x15cb('0x3f')],'type':_0x573057['type'][_0x15cb('0x40')]};});_0x42d727[_0x15cb('0x41')]=_[_0x15cb('0x42')](_0x243a3e,_0x15cb('0x38'));_0x42d727[_0x15cb('0x43')]=_[_0x15cb('0x44')](_0x4dcf99['query']);_0x42d727[_0x15cb('0x45')]=_[_0x15cb('0x46')](_0x42d727['model'],_0x42d727[_0x15cb('0x43')]);_0x5bbef1[_0x15cb('0x47')]=_['intersection'](_0x42d727[_0x15cb('0x41')],qs[_0x15cb('0x48')](_0x4dcf99[_0x15cb('0x43')][_0x15cb('0x48')]));_0x5bbef1[_0x15cb('0x47')]=_0x5bbef1['attributes'][_0x15cb('0x49')]?_0x5bbef1['attributes']:_0x42d727['model'];if(!_0x4dcf99[_0x15cb('0x43')][_0x15cb('0x4a')](_0x15cb('0x4b'))){_0x5bbef1[_0x15cb('0x4c')]=qs[_0x15cb('0x4c')](_0x4dcf99[_0x15cb('0x43')][_0x15cb('0x4c')]);_0x5bbef1[_0x15cb('0x21')]=qs[_0x15cb('0x21')](_0x4dcf99[_0x15cb('0x43')][_0x15cb('0x21')]);}_0x5bbef1[_0x15cb('0x4d')]=qs[_0x15cb('0x4e')](_0x4dcf99['query'][_0x15cb('0x4e')]);_0x5bbef1['where']=qs[_0x15cb('0x45')](_[_0x15cb('0x4f')](_0x4dcf99[_0x15cb('0x43')],_0x42d727['filters']),_0x243a3e);if(_0x4dcf99[_0x15cb('0x43')][_0x15cb('0x32')]){_0x5bbef1['where']=_[_0x15cb('0x50')](_0x5bbef1['where'],{'$or':_['map'](_0x243a3e,function(_0x2f51cd){if(_0x2f51cd[_0x15cb('0x36')]!==_0x15cb('0x51')){var _0x6a92c5={};_0x6a92c5[_0x2f51cd[_0x15cb('0x38')]]={'$like':'%'+_0x4dcf99[_0x15cb('0x43')][_0x15cb('0x32')]+'%'};return _0x6a92c5;}})});}_0x5bbef1=_[_0x15cb('0x50')]({},_0x5bbef1,_0x4dcf99[_0x15cb('0x52')]);var _0x11bc0c={'where':_0x5bbef1['where']};return db['VoiceExtension'][_0x15cb('0x23')](_0x11bc0c)['then'](function(_0x2e285a){_0x3f77f6[_0x15cb('0x23')]=_0x2e285a;if(_0x4dcf99[_0x15cb('0x43')]['includeAll']){_0x5bbef1[_0x15cb('0x53')]=[{'all':!![]}];}return db['VoiceExtension'][_0x15cb('0x54')](_0x5bbef1);})[_0x15cb('0x2a')](function(_0x14b02c){_0x3f77f6['rows']=_0x14b02c;return _0x3f77f6;})[_0x15cb('0x2a')](respondWithFilteredResult(_0x23018a,_0x5bbef1))[_0x15cb('0x55')](handleError(_0x23018a,null));};exports[_0x15cb('0x56')]=function(_0x389ea2,_0x1e78cc){var _0x3022b6={'raw':![],'where':{'id':_0x389ea2['params']['id']}},_0x50f2bf={};_0x50f2bf['model']=_[_0x15cb('0x44')](db[_0x15cb('0x3d')][_0x15cb('0x3e')]);_0x50f2bf[_0x15cb('0x43')]=_[_0x15cb('0x44')](_0x389ea2['query']);_0x50f2bf[_0x15cb('0x45')]=_['intersection'](_0x50f2bf['model'],_0x50f2bf['query']);_0x3022b6[_0x15cb('0x47')]=_[_0x15cb('0x46')](_0x50f2bf['model'],qs[_0x15cb('0x48')](_0x389ea2[_0x15cb('0x43')]['fields']));_0x3022b6[_0x15cb('0x47')]=_0x3022b6['attributes'][_0x15cb('0x49')]?_0x3022b6['attributes']:_0x50f2bf[_0x15cb('0x41')];if(_0x389ea2['query'][_0x15cb('0x57')]){_0x3022b6[_0x15cb('0x53')]=[{'all':!![]}];}_0x3022b6=_[_0x15cb('0x50')]({},_0x3022b6,_0x389ea2[_0x15cb('0x52')]);return db[_0x15cb('0x3d')][_0x15cb('0x37')](_0x3022b6)[_0x15cb('0x2a')](handleEntityNotFound(_0x1e78cc,null))[_0x15cb('0x2a')](respondWithResult(_0x1e78cc,null))[_0x15cb('0x55')](handleError(_0x1e78cc,null));};exports[_0x15cb('0x2b')]=function(_0x558a6c,_0x462b0d){return db[_0x15cb('0x3d')][_0x15cb('0x37')]({'where':{'id':_0x558a6c['params']['id']}})[_0x15cb('0x2a')](handleEntityNotFound(_0x462b0d,null))[_0x15cb('0x2a')](removeEntity(_0x462b0d,null))['catch'](handleError(_0x462b0d,null));};exports[_0x15cb('0x58')]=function(_0x4e02a5,_0xb9c45b){if(_0x4e02a5['body'][_0x15cb('0x36')]==='outbound'&&!_[_0x15cb('0x59')](_0x4e02a5[_0x15cb('0x5a')][_0x15cb('0x5b')],'_')){_0x4e02a5[_0x15cb('0x5a')][_0x15cb('0x5b')]='_'[_0x15cb('0x5c')](_0x4e02a5[_0x15cb('0x5a')]['exten']);}return db[_0x15cb('0x3d')][_0x15cb('0x58')](_0x4e02a5[_0x15cb('0x5a')],{'raw':![]})['then'](function(_0x4a688b){var _0xa0fcab=_0x4e02a5[_0x15cb('0x5d')][_0x15cb('0x2c')]({'plain':!![]});if(!_0xa0fcab)throw new Error(_0x15cb('0x5e'));if(_0xa0fcab[_0x15cb('0x5f')]===_0x15cb('0x5d')){var _0x287cd3=_0x4a688b['get']({'plain':!![]});var _0x132531=[{'name':'InboundRoutes','value':_0x15cb('0x2e')},{'name':'OutboundRoutes','value':_0x15cb('0x2f')},{'name':_0x15cb('0x30'),'value':_0x15cb('0x31')}];var _0x45773d=_['find'](_0x132531,[_0x15cb('0x34'),_0x287cd3[_0x15cb('0x36')]])['name'];return db[_0x15cb('0x60')][_0x15cb('0x37')]({'where':{'name':_0x45773d,'userProfileId':_0xa0fcab[_0x15cb('0x61')]},'raw':!![]})[_0x15cb('0x2a')](function(_0x3b35ce){if(_0x3b35ce&&_0x3b35ce['autoAssociation']===0x0){return db['UserProfileResource']['create']({'name':_0x287cd3[_0x15cb('0x38')],'resourceId':_0x287cd3['id'],'type':_0x3b35ce['name'],'sectionId':_0x3b35ce['id']},{})[_0x15cb('0x2a')](function(){return _0x4a688b;});}else{return _0x4a688b;}})[_0x15cb('0x55')](function(_0x4959c6){logger[_0x15cb('0x3a')](_0x15cb('0x62'),_0x4959c6);throw _0x4959c6;});}return _0x4a688b;})[_0x15cb('0x2a')](respondWithResult(_0xb9c45b,0xc9))['catch'](handleError(_0xb9c45b,null));};exports[_0x15cb('0x29')]=function(_0xb72af3,_0x182b8e){if(_0xb72af3[_0x15cb('0x5a')]['id']){delete _0xb72af3[_0x15cb('0x5a')]['id'];}return db[_0x15cb('0x3d')]['find']({'where':{'id':_0xb72af3[_0x15cb('0x63')]['id']}})[_0x15cb('0x2a')](handleEntityNotFound(_0x182b8e,null))[_0x15cb('0x2a')](function(_0x50f678){if(_0x50f678){return db[_0x15cb('0x3d')][_0x15cb('0x29')](_['pick'](_0xb72af3[_0x15cb('0x5a')],[_0x15cb('0x5b'),_0x15cb('0x64'),_0x15cb('0x65'),'recordingFormat',_0x15cb('0x66'),_0x15cb('0x67'),'alias']),{'where':{'context':_0x50f678[_0x15cb('0x64')],'exten':_0x50f678[_0x15cb('0x5b')]},'individualHooks':!![]})['then'](function(_0x5486ab){return _0x5486ab;});}return null;})[_0x15cb('0x2a')](respondWithStatusCode(_0x182b8e,null))[_0x15cb('0x55')](handleError(_0x182b8e,null));};exports[_0x15cb('0x68')]=function(_0x313a39,_0x61a959){return db[_0x15cb('0x3d')][_0x15cb('0x69')]({'where':{'id':_0x313a39[_0x15cb('0x63')]['id']}})[_0x15cb('0x2a')](function(_0x57d2df){if(_0x57d2df){return db['sequelize'][_0x15cb('0x6a')](function(_0x1d4877){return db[_0x15cb('0x3d')][_0x15cb('0x2b')]({'where':{'VoiceExtensionId':_0x313a39['params']['id']},'transaction':_0x1d4877})[_0x15cb('0x2a')](function(){var _0x36e6e5=_['map'](_0x313a39[_0x15cb('0x5a')],function(_0x2816af){_0x2816af[_0x15cb('0x6b')]=_0x313a39[_0x15cb('0x63')]['id'];_0x2816af[_0x15cb('0x6c')]=!![];return _0x2816af;});var _0x1bfec1=_0x313a39['query'][_0x15cb('0x6d')]&&_0x313a39[_0x15cb('0x43')][_0x15cb('0x6d')][_0x15cb('0x6e')]()===_0x15cb('0x6f')?!![]:![];return _0x57d2df[_0x15cb('0x70')](_0x36e6e5,_0x1bfec1);})[_0x15cb('0x2a')](function(_0x4da7a0){return db[_0x15cb('0x3d')][_0x15cb('0x71')](_0x4da7a0,{'transaction':_0x1d4877});});})[_0x15cb('0x2a')](function(){return db[_0x15cb('0x3d')][_0x15cb('0x72')]({'where':{'isApp':!![],'VoiceExtensionId':_0x313a39[_0x15cb('0x63')]['id']},'order':'cast(priority\x20as\x20unsigned)'});});}})['then'](respondWithResult(_0x61a959,null))['catch'](handleError(_0x61a959,null));};
\ No newline at end of file
index 468b6b2..97f966b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc4bd=['hook','exports','events','../../mysqldb','VoiceExtension','update','emit','hasOwnProperty'];(function(_0x200c95,_0x387ecb){var _0xef7c28=function(_0x21ca4c){while(--_0x21ca4c){_0x200c95['push'](_0x200c95['shift']());}};_0xef7c28(++_0x387ecb);}(_0xc4bd,0xea));var _0xdc4b=function(_0x225611,_0x578755){_0x225611=_0x225611-0x0;var _0x5c402c=_0xc4bd[_0x225611];return _0x5c402c;};'use strict';var EventEmitter=require(_0xdc4b('0x0'));var VoiceExtension=require(_0xdc4b('0x1'))['db'][_0xdc4b('0x2')];var VoiceExtensionEvents=new EventEmitter();VoiceExtensionEvents['setMaxListeners'](0x0);var events={'afterCreate':'save','afterUpdate':_0xdc4b('0x3'),'afterDestroy':'remove'};function emitEvent(_0x2f81b3){return function(_0x549cfc,_0x5320bb,_0x5a6cc5){VoiceExtensionEvents[_0xdc4b('0x4')](_0x2f81b3+':'+_0x549cfc['id'],_0x549cfc);VoiceExtensionEvents['emit'](_0x2f81b3,_0x549cfc);_0x5a6cc5(null);};}for(var e in events){if(events[_0xdc4b('0x5')](e)){var event=events[e];VoiceExtension[_0xdc4b('0x6')](e,emitEvent(event));}}module[_0xdc4b('0x7')]=VoiceExtensionEvents;
\ No newline at end of file
+var _0x0d41=['exports','events','../../mysqldb','VoiceExtension','setMaxListeners','save','update','remove','emit','hook'];(function(_0x4f5de4,_0x286cb4){var _0x57b780=function(_0x489554){while(--_0x489554){_0x4f5de4['push'](_0x4f5de4['shift']());}};_0x57b780(++_0x286cb4);}(_0x0d41,0x187));var _0x10d4=function(_0x2be39e,_0x2f4217){_0x2be39e=_0x2be39e-0x0;var _0x21a5a8=_0x0d41[_0x2be39e];return _0x21a5a8;};'use strict';var EventEmitter=require(_0x10d4('0x0'));var VoiceExtension=require(_0x10d4('0x1'))['db'][_0x10d4('0x2')];var VoiceExtensionEvents=new EventEmitter();VoiceExtensionEvents[_0x10d4('0x3')](0x0);var events={'afterCreate':_0x10d4('0x4'),'afterUpdate':_0x10d4('0x5'),'afterDestroy':_0x10d4('0x6')};function emitEvent(_0x2bcd13){return function(_0x2f47a1,_0x53afa0,_0x3125a9){VoiceExtensionEvents[_0x10d4('0x7')](_0x2bcd13+':'+_0x2f47a1['id'],_0x2f47a1);VoiceExtensionEvents[_0x10d4('0x7')](_0x2bcd13,_0x2f47a1);_0x3125a9(null);};}for(var e in events){if(events['hasOwnProperty'](e)){var event=events[e];VoiceExtension[_0x10d4('0x8')](e,emitEvent(event));}}module[_0x10d4('0x9')]=VoiceExtensionEvents;
\ No newline at end of file
index 0b26a8c..a30fdbc 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x586a=['push','inbound','CDR(routeid)=','XCALLY-MOTION-PROGRESS=0','MONITOR_OPTIONS=ab','outbound','CDR(destination)=','cutdigits','${EXTEN:','${EXTEN}','ExecIf','$[${LEN(${CDR(prefix)})}\x20>\x200]?Goto(','CDR(prefix)=noprefix','outboundrouteid=','hasOwnProperty','recordingFormat','none','_XCALLY_MIXMONITOR_UNIQUEID=${UNIQUEID}','_XCALLY_MIXMONITOR_FORMAT=','wav','trunk','timeout','options','url','split','length','name','param','phone','prefix','SIP','join','indexOf','U(xcally-mixmonitor-context)','isEmpty','Interval','findAll','interval','IntervalId','then','*,*,*,*','intervals','map','filter','toLowerCase','tag','CDR(tag)=','$[${LEN(${PREFIX-CALLERIDALL})}\x20>\x200]?Set(CALLERID(all)=${PREFIX-CALLERIDALL}):','Set(CALLERID(all)=','NoOp(No\x20number\x20available)','answer','queue','playback','app','appType','custom','$[${XCALLY-MOTION-ANSWER}=0]?Answer','$[${XCALLY-MOTION-PROGRESS}=0]?Progress','GotoIfTime',',${EXTEN},','appdata','priority','last','concat','VoiceExtension','Hangup','util','lodash','./voiceExtension.attributes','exports','models','Set','type','context','NoOp','alias','CDR(routeAlias)=','No\x20alias\x20set','exten'];(function(_0x231e16,_0x67347b){var _0x570a7c=function(_0x2c35b4){while(--_0x2c35b4){_0x231e16['push'](_0x231e16['shift']());}};_0x570a7c(++_0x67347b);}(_0x586a,0x1cd));var _0xa586=function(_0x15779d,_0x247a4b){_0x15779d=_0x15779d-0x0;var _0x1bb357=_0x586a[_0x15779d];return _0x1bb357;};'use strict';var util=require(_0xa586('0x0'));var _=require(_0xa586('0x1'));var attributes=require(_0xa586('0x2'));module[_0xa586('0x3')]=function(_0x100f4d){var _0x1ae67b=_0x100f4d[_0xa586('0x4')];function _0x1f2633(_0x24582d){var _0x597447=0x2;var _0x3ae95d=[{'type':_0x24582d['type'],'app':_0xa586('0x5'),'appdata':'CDR(type)='+_0x24582d[_0xa586('0x6')],'context':_0x24582d[_0xa586('0x7')],'exten':_0x24582d['exten'],'priority':_0x597447++,'VoiceExtensionId':_0x24582d['id']},{'type':_0x24582d[_0xa586('0x6')],'app':_0x24582d['alias']?_0xa586('0x5'):_0xa586('0x8'),'appdata':_0x24582d[_0xa586('0x9')]?_0xa586('0xa')+_0x24582d[_0xa586('0x9')]:_0xa586('0xb'),'context':_0x24582d['context'],'exten':_0x24582d[_0xa586('0xc')],'priority':_0x597447++,'VoiceExtensionId':_0x24582d['id']}];if(_0x24582d[_0xa586('0x6')]==='inbound'){_0x3ae95d[_0xa586('0xd')]({'type':_0xa586('0xe'),'app':'Set','appdata':_0xa586('0xf')+_0x24582d['id'],'context':_0x24582d[_0xa586('0x7')],'exten':_0x24582d[_0xa586('0xc')],'priority':_0x597447++,'VoiceExtensionId':_0x24582d['id']});}_0x3ae95d[_0xa586('0xd')]({'type':_0x24582d[_0xa586('0x6')],'app':_0xa586('0x5'),'appdata':'XCALLY-MOTION-ANSWER=0','context':_0x24582d[_0xa586('0x7')],'exten':_0x24582d['exten'],'priority':_0x597447++,'VoiceExtensionId':_0x24582d['id']},{'type':_0x24582d['type'],'app':_0xa586('0x5'),'appdata':_0xa586('0x10'),'context':_0x24582d[_0xa586('0x7')],'exten':_0x24582d['exten'],'priority':_0x597447++,'VoiceExtensionId':_0x24582d['id']},{'type':_0x24582d['type'],'app':_0xa586('0x5'),'appdata':_0xa586('0x11'),'context':_0x24582d['context'],'exten':_0x24582d[_0xa586('0xc')],'priority':_0x597447++,'VoiceExtensionId':_0x24582d['id']});return _0x3ae95d;}function _0x296676(_0x120c5c){var _0x3c485a=0x2;var _0x27c503=[{'type':_0xa586('0x12'),'app':_0xa586('0x5'),'appdata':'CDR(type)=outbound','context':_0x120c5c[_0xa586('0x7')],'exten':_0x120c5c[_0xa586('0xc')],'priority':_0x3c485a++,'VoiceExtensionId':_0x120c5c['id']},{'type':'outbound','app':_0x120c5c[_0xa586('0x9')]?'Set':'NoOp','appdata':_0x120c5c[_0xa586('0x9')]?'CDR(routeAlias)='+_0x120c5c['alias']:_0xa586('0xb'),'context':_0x120c5c[_0xa586('0x7')],'exten':_0x120c5c[_0xa586('0xc')],'priority':_0x3c485a++,'VoiceExtensionId':_0x120c5c['id']},{'type':_0xa586('0x12'),'app':_0xa586('0x5'),'appdata':_0xa586('0x13')+(_0x120c5c[_0xa586('0x14')]?_0xa586('0x15')+_0x120c5c[_0xa586('0x14')]+'}':_0xa586('0x16')),'context':_0x120c5c[_0xa586('0x7')],'exten':_0x120c5c['exten'],'priority':_0x3c485a++,'VoiceExtensionId':_0x120c5c['id']},{'type':'outbound','app':_0xa586('0x5'),'appdata':_0xa586('0xf')+_0x120c5c['id'],'context':_0x120c5c[_0xa586('0x7')],'exten':_0x120c5c[_0xa586('0xc')],'priority':_0x3c485a++,'VoiceExtensionId':_0x120c5c['id']},{'type':_0xa586('0x12'),'app':_0xa586('0x17'),'appdata':_0xa586('0x18')+(_0x3c485a+0x2)+'):Goto('+(_0x3c485a+0x1)+')','context':_0x120c5c[_0xa586('0x7')],'exten':_0x120c5c['exten'],'priority':_0x3c485a++,'VoiceExtensionId':_0x120c5c['id']},{'type':'outbound','app':_0xa586('0x5'),'appdata':_0x120c5c[_0xa586('0x14')]?'CDR(prefix)=${EXTEN:0:'+_0x120c5c[_0xa586('0x14')]+'}':_0xa586('0x19'),'context':_0x120c5c[_0xa586('0x7')],'exten':_0x120c5c[_0xa586('0xc')],'priority':_0x3c485a++,'VoiceExtensionId':_0x120c5c['id']},{'type':'outbound','app':_0xa586('0x5'),'appdata':'XCALLY-MOTION-ANSWER=0','context':_0x120c5c[_0xa586('0x7')],'exten':_0x120c5c['exten'],'priority':_0x3c485a++,'VoiceExtensionId':_0x120c5c['id']},{'type':_0xa586('0x12'),'app':_0xa586('0x5'),'appdata':_0xa586('0x10'),'context':_0x120c5c[_0xa586('0x7')],'exten':_0x120c5c[_0xa586('0xc')],'priority':_0x3c485a++,'VoiceExtensionId':_0x120c5c['id']},{'type':_0xa586('0x12'),'app':_0xa586('0x5'),'appdata':_0xa586('0x11'),'context':_0x120c5c[_0xa586('0x7')],'exten':_0x120c5c[_0xa586('0xc')],'priority':_0x3c485a++,'VoiceExtensionId':_0x120c5c['id']},{'type':_0xa586('0x12'),'app':_0xa586('0x5'),'appdata':_0xa586('0x1a')+_0x120c5c['id'],'context':_0x120c5c[_0xa586('0x7')],'exten':_0x120c5c[_0xa586('0xc')],'priority':_0x3c485a++,'VoiceExtensionId':_0x120c5c['id']}];if(_0x120c5c[_0xa586('0x1b')](_0xa586('0x1c'))&&_0x120c5c['recordingFormat']!==_0xa586('0x1d')){_0x27c503[_0xa586('0xd')]({'type':_0xa586('0x12'),'app':_0xa586('0x5'),'appdata':_0xa586('0x1e'),'context':_0x120c5c[_0xa586('0x7')],'exten':_0x120c5c[_0xa586('0xc')],'priority':_0x3c485a++,'VoiceExtensionId':_0x120c5c['id']},{'type':_0xa586('0x12'),'app':_0xa586('0x5'),'appdata':_0xa586('0x1f')+_0x120c5c[_0xa586('0x1c')]||_0xa586('0x20'),'context':_0x120c5c['context'],'exten':_0x120c5c[_0xa586('0xc')],'priority':_0x3c485a++,'VoiceExtensionId':_0x120c5c['id']});}return _0x27c503;}function _0x396771(_0xef9251){var _0x54d633=[{'name':_0xa586('0x21'),'param':0x0},{'name':_0xa586('0x22'),'param':0x1},{'name':_0xa586('0x23'),'param':0x2},{'name':_0xa586('0x24'),'param':0x3}];var _0x4fc16d={};var _0x12fbe4=_0xef9251[_0xa586('0x25')](',');var _0x1f2070=[];for(var _0x47e67e=0x0;_0x47e67e<_0x54d633[_0xa586('0x26')];_0x47e67e++){switch(_0x54d633[_0x47e67e][_0xa586('0x27')]){case _0xa586('0x21'):_0x4fc16d['trunk']=_0x12fbe4[_0x54d633[_0x47e67e][_0xa586('0x28')]][_0xa586('0x25')]('/')[0x1];_0x4fc16d[_0xa586('0x29')]=_0x12fbe4[_0x54d633[_0x47e67e]['param']][_0xa586('0x25')]('/')[0x2];_0x4fc16d[_0xa586('0x2a')]=_0x4fc16d[_0xa586('0x29')]?_0x4fc16d[_0xa586('0x29')][_0xa586('0x25')]('$')[0x0]:undefined;_0x4fc16d[_0xa586('0x29')]=route[_0xa586('0x14')]?(_0x4fc16d['prefix']||'')+'${EXTEN:'+route[_0xa586('0x14')]+'}':(_0x4fc16d[_0xa586('0x2a')]||'')+_0xa586('0x16');_0x1f2070[_0x54d633[_0x47e67e][_0xa586('0x28')]]=[_0xa586('0x2b'),_0x4fc16d[_0xa586('0x21')],_0x4fc16d[_0xa586('0x29')]][_0xa586('0x2c')]('/');break;case _0xa586('0x23'):_0x4fc16d[_0xa586('0x23')]=_0x12fbe4[_0x54d633[_0x47e67e]['param']];if(route[_0xa586('0x1c')]!=='none'){if(_0x4fc16d[_0xa586('0x23')][_0xa586('0x2d')](_0xa586('0x2e'))<0x0){_0x4fc16d[_0xa586('0x23')]+=_0xa586('0x2e');}}else{_0x4fc16d[_0xa586('0x23')]=_0x4fc16d[_0xa586('0x23')]['replace']('U(xcally-mixmonitor-context)','');}_0x1f2070[_0x54d633[_0x47e67e][_0xa586('0x28')]]=_0x4fc16d[_0xa586('0x23')];break;default:_0x1f2070[_0x54d633[_0x47e67e]['param']]=_0x12fbe4[_0x54d633[_0x47e67e]['param']];}}return _0x1f2070['join'](',');}function _0x2c5313(_0x5d8298,_0x45ff3c,_0x54b23d,_0x2f8be1){return new Promise(function(_0x3ab5d3,_0x5ca202){var _0x331707=[];if(_[_0xa586('0x2f')](_0x45ff3c))return _0x3ab5d3(_0x331707);_0x1ae67b[_0xa586('0x30')][_0xa586('0x31')]({'attributes':['id',_0xa586('0x32'),_0xa586('0x33')],'raw':!![]})[_0xa586('0x34')](function(_0x2dff85){for(var _0x525b70=0x0,_0x58ee26=0x0;_0x525b70<_0x45ff3c['length'];_0x525b70++,_0x58ee26=0x0){var _0x497f1b=_0x45ff3c[_0x525b70];var _0x1e076d=[];var _0x31c70b=[];if(_0x497f1b[_0xa586('0x32')]!==_0xa586('0x35')){_0x497f1b['intervals']=[_0x497f1b[_0xa586('0x32')]];}else{_0x497f1b[_0xa586('0x36')]=_0x497f1b[_0xa586('0x33')]?_[_0xa586('0x37')](_[_0xa586('0x38')](_0x2dff85,{'IntervalId':_0x497f1b[_0xa586('0x33')]}),_0xa586('0x32')):[];}_0x497f1b['context']=_0x5d8298[_0xa586('0x7')];_0x497f1b[_0xa586('0xc')]=_0x5d8298['exten'];if(_0x497f1b['type'])_0x497f1b[_0xa586('0x6')]=_0x497f1b['type'][_0xa586('0x39')]();if(_0x5d8298[_0xa586('0x6')]===_0xa586('0x12')){if(_0x497f1b['hasOwnProperty']('tag')&&_0x497f1b[_0xa586('0x3a')]&&_0x497f1b['tag']!=='--'){_0x1e076d[_0xa586('0xd')]({'type':_0x497f1b[_0xa586('0x6')]['toLowerCase'](),'app':'Set','appdata':_0xa586('0x3b')+_0x497f1b[_0xa586('0x3a')],'context':_0x5d8298[_0xa586('0x7')],'exten':_0x5d8298[_0xa586('0xc')],'priority':_0x497f1b[_0xa586('0x36')]['length']+_0x54b23d+_0x58ee26++,'VoiceExtensionId':_0x5d8298['id']});}_0x1e076d[_0xa586('0xd')]({'type':_0x497f1b[_0xa586('0x6')][_0xa586('0x39')](),'app':'ExecIf','appdata':_0xa586('0x3c')+(_0x497f1b['callerID']?_0xa586('0x3d')+_0x497f1b['callerID']+')':_0xa586('0x3e')),'context':_0x5d8298[_0xa586('0x7')],'exten':_0x5d8298[_0xa586('0xc')],'priority':_0x497f1b[_0xa586('0x36')]['length']+_0x54b23d+_0x58ee26++,'VoiceExtensionId':_0x5d8298['id']});}else{if(_0x497f1b[_0xa586('0x1b')](_0xa586('0x3f'))){if([_0xa586('0x40'),_0xa586('0x41')]['includes'](_0x497f1b[_0xa586('0x42')][_0xa586('0x39')]())&&_0x497f1b[_0xa586('0x43')]!==_0xa586('0x44')){if(_0x497f1b[_0xa586('0x3f')]){_0x1e076d[_0xa586('0xd')]({'type':_0x497f1b[_0xa586('0x6')][_0xa586('0x39')](),'app':_0xa586('0x17'),'appdata':_0xa586('0x45'),'context':_0x5d8298[_0xa586('0x7')],'exten':_0x5d8298[_0xa586('0xc')],'priority':_0x497f1b['intervals'][_0xa586('0x26')]+_0x54b23d+_0x58ee26++,'VoiceExtensionId':_0x5d8298['id']});_0x1e076d[_0xa586('0xd')]({'type':_0x497f1b[_0xa586('0x6')][_0xa586('0x39')](),'app':'Set','appdata':'XCALLY-MOTION-ANSWER=1','context':_0x5d8298[_0xa586('0x7')],'exten':_0x5d8298[_0xa586('0xc')],'priority':_0x497f1b[_0xa586('0x36')]['length']+_0x54b23d+_0x58ee26++,'VoiceExtensionId':_0x5d8298['id']});}else{_0x1e076d[_0xa586('0xd')]({'type':_0x497f1b[_0xa586('0x6')][_0xa586('0x39')](),'app':_0xa586('0x17'),'appdata':_0xa586('0x46'),'context':_0x5d8298[_0xa586('0x7')],'exten':_0x5d8298['exten'],'priority':_0x497f1b[_0xa586('0x36')][_0xa586('0x26')]+_0x54b23d+_0x58ee26++,'VoiceExtensionId':_0x5d8298['id']});_0x1e076d[_0xa586('0xd')]({'type':_0x497f1b[_0xa586('0x6')][_0xa586('0x39')](),'app':_0xa586('0x5'),'appdata':'XCALLY-MOTION-PROGRESS=1','context':_0x5d8298[_0xa586('0x7')],'exten':_0x5d8298[_0xa586('0xc')],'priority':_0x497f1b['intervals']['length']+_0x54b23d+_0x58ee26++,'VoiceExtensionId':_0x5d8298['id']});}}}}for(var _0x5d784f=0x0;_0x5d784f<_0x497f1b['intervals']['length'];_0x5d784f++){var _0x2ff556=_0x54b23d+_0x497f1b[_0xa586('0x36')][_0xa586('0x26')];var _0x8a2b10=_0x5d784f===_0x497f1b[_0xa586('0x36')][_0xa586('0x26')]-0x1?_0x54b23d+_0x1e076d[_0xa586('0x26')]+_0x31c70b['length']+0x2:_0x54b23d+_0x5d784f+0x1;_0x1e076d['splice'](_0x5d784f,0x0,{'type':_0x5d8298[_0xa586('0x6')],'app':_0xa586('0x47'),'appdata':_0x497f1b[_0xa586('0x36')][_0x5d784f]+'?'+_0x5d8298[_0xa586('0x7')]+',${EXTEN},'+_0x2ff556+':'+_0x5d8298[_0xa586('0x7')]+_0xa586('0x48')+_0x8a2b10,'exten':_0x5d8298[_0xa586('0xc')],'context':_0x5d8298[_0xa586('0x7')],'priority':_0x54b23d+_0x5d784f,'VoiceExtensionId':_0x5d8298['id']});}if(_0x2f8be1&&_0x497f1b[_0xa586('0x43')]==='outboundDial')_0x497f1b[_0xa586('0x49')]=_0x396771(_0x497f1b[_0xa586('0x49')]);_0x497f1b[_0xa586('0x4a')]=_0x1e076d[_0xa586('0x26')]?_[_0xa586('0x4b')](_0x1e076d)[_0xa586('0x4a')]+0x1:_0x54b23d;_0x331707=_[_0xa586('0x4c')](_0x331707,_0x1e076d,[_0x497f1b],_0x31c70b);_0x54b23d=_[_0xa586('0x4b')](_0x331707)[_0xa586('0x4a')]+0x1;}return _0x3ab5d3(_0x331707);})['catch'](function(_0x108d32){_0x5ca202(_0x108d32);});});}return _0x100f4d['define'](_0xa586('0x4d'),attributes,{'tableName':'voice_extensions','paranoid':![],'indexes':[],'timestamps':!![],'instanceMethods':{'createRouting':function(_0x4ba18a,_0x3c46db){var _0x5a4e18=this;var _0x1e71b2=_0x5a4e18['type']==='outbound'?_0x296676(_0x5a4e18):_0x1f2633(_0x5a4e18);return _0x2c5313(_0x5a4e18,_0x4ba18a,_[_0xa586('0x4b')](_0x1e71b2)[_0xa586('0x4a')]+0x1,_0x3c46db)['then'](function(_0x23a8c3){var _0x2d65c3=_[_0xa586('0x4c')](_0x1e71b2,_0x23a8c3);_0x2d65c3[_0xa586('0xd')]({'type':_0x5a4e18[_0xa586('0x6')],'app':_0xa586('0x4e'),'exten':_0x5a4e18['exten'],'context':_0x5a4e18[_0xa586('0x7')],'priority':_['last'](_0x2d65c3)[_0xa586('0x4a')]+0x1,'VoiceExtensionId':_0x5a4e18['id']});return _0x2d65c3;});}}});};
\ No newline at end of file
+var _0x6394=['_XCALLY_MIXMONITOR_UNIQUEID=${UNIQUEID}','trunk','options','split','length','name','param','phone','prefix','indexOf','U(xcally-mixmonitor-context)','replace','join','isEmpty','findAll','interval','IntervalId','then','*,*,*,*','intervals','toLowerCase','tag','CDR(tag)=','$[${LEN(${PREFIX-CALLERIDALL})}\x20>\x200]?Set(CALLERID(all)=${PREFIX-CALLERIDALL}):','Set(CALLERID(all)=','callerID','NoOp(No\x20number\x20available)','answer','queue','playback','app','appType','custom','XCALLY-MOTION-ANSWER=1','XCALLY-MOTION-PROGRESS=1','splice','GotoIfTime',',${EXTEN},','outboundDial','appdata','priority','concat','catch','define','VoiceExtension','last','Hangup','lodash','./voiceExtension.attributes','models','type','CDR(type)=','context','exten','alias','Set','No\x20alias\x20set','inbound','push','CDR(routeid)=','XCALLY-MOTION-ANSWER=0','XCALLY-MOTION-PROGRESS=0','MONITOR_OPTIONS=ab','outbound','CDR(type)=outbound','NoOp','CDR(destination)=','cutdigits','${EXTEN:','ExecIf','$[${LEN(${CDR(prefix)})}\x20>\x200]?Goto(','CDR(prefix)=${EXTEN:0:','outboundrouteid=','hasOwnProperty','recordingFormat','none'];(function(_0x336976,_0x855191){var _0xd7102e=function(_0x15fd6d){while(--_0x15fd6d){_0x336976['push'](_0x336976['shift']());}};_0xd7102e(++_0x855191);}(_0x6394,0x7b));var _0x4639=function(_0x487654,_0x1782aa){_0x487654=_0x487654-0x0;var _0x31b87a=_0x6394[_0x487654];return _0x31b87a;};'use strict';var util=require('util');var _=require(_0x4639('0x0'));var attributes=require(_0x4639('0x1'));module['exports']=function(_0x1ab959){var _0x33008f=_0x1ab959[_0x4639('0x2')];function _0x215b11(_0x4b6476){var _0x1dfd41=0x2;var _0x19d836=[{'type':_0x4b6476[_0x4639('0x3')],'app':'Set','appdata':_0x4639('0x4')+_0x4b6476[_0x4639('0x3')],'context':_0x4b6476[_0x4639('0x5')],'exten':_0x4b6476[_0x4639('0x6')],'priority':_0x1dfd41++,'VoiceExtensionId':_0x4b6476['id']},{'type':_0x4b6476[_0x4639('0x3')],'app':_0x4b6476[_0x4639('0x7')]?_0x4639('0x8'):'NoOp','appdata':_0x4b6476[_0x4639('0x7')]?'CDR(routeAlias)='+_0x4b6476[_0x4639('0x7')]:_0x4639('0x9'),'context':_0x4b6476[_0x4639('0x5')],'exten':_0x4b6476['exten'],'priority':_0x1dfd41++,'VoiceExtensionId':_0x4b6476['id']}];if(_0x4b6476[_0x4639('0x3')]===_0x4639('0xa')){_0x19d836[_0x4639('0xb')]({'type':_0x4639('0xa'),'app':_0x4639('0x8'),'appdata':_0x4639('0xc')+_0x4b6476['id'],'context':_0x4b6476[_0x4639('0x5')],'exten':_0x4b6476[_0x4639('0x6')],'priority':_0x1dfd41++,'VoiceExtensionId':_0x4b6476['id']});}_0x19d836[_0x4639('0xb')]({'type':_0x4b6476['type'],'app':'Set','appdata':_0x4639('0xd'),'context':_0x4b6476['context'],'exten':_0x4b6476[_0x4639('0x6')],'priority':_0x1dfd41++,'VoiceExtensionId':_0x4b6476['id']},{'type':_0x4b6476['type'],'app':_0x4639('0x8'),'appdata':_0x4639('0xe'),'context':_0x4b6476[_0x4639('0x5')],'exten':_0x4b6476[_0x4639('0x6')],'priority':_0x1dfd41++,'VoiceExtensionId':_0x4b6476['id']},{'type':_0x4b6476[_0x4639('0x3')],'app':'Set','appdata':_0x4639('0xf'),'context':_0x4b6476[_0x4639('0x5')],'exten':_0x4b6476['exten'],'priority':_0x1dfd41++,'VoiceExtensionId':_0x4b6476['id']});return _0x19d836;}function _0x596170(_0x537d32){var _0x52a0b0=0x2;var _0x550fe5=[{'type':_0x4639('0x10'),'app':_0x4639('0x8'),'appdata':_0x4639('0x11'),'context':_0x537d32[_0x4639('0x5')],'exten':_0x537d32[_0x4639('0x6')],'priority':_0x52a0b0++,'VoiceExtensionId':_0x537d32['id']},{'type':_0x4639('0x10'),'app':_0x537d32[_0x4639('0x7')]?_0x4639('0x8'):_0x4639('0x12'),'appdata':_0x537d32[_0x4639('0x7')]?'CDR(routeAlias)='+_0x537d32[_0x4639('0x7')]:_0x4639('0x9'),'context':_0x537d32[_0x4639('0x5')],'exten':_0x537d32[_0x4639('0x6')],'priority':_0x52a0b0++,'VoiceExtensionId':_0x537d32['id']},{'type':_0x4639('0x10'),'app':_0x4639('0x8'),'appdata':_0x4639('0x13')+(_0x537d32[_0x4639('0x14')]?_0x4639('0x15')+_0x537d32[_0x4639('0x14')]+'}':'${EXTEN}'),'context':_0x537d32[_0x4639('0x5')],'exten':_0x537d32[_0x4639('0x6')],'priority':_0x52a0b0++,'VoiceExtensionId':_0x537d32['id']},{'type':'outbound','app':_0x4639('0x8'),'appdata':_0x4639('0xc')+_0x537d32['id'],'context':_0x537d32[_0x4639('0x5')],'exten':_0x537d32[_0x4639('0x6')],'priority':_0x52a0b0++,'VoiceExtensionId':_0x537d32['id']},{'type':_0x4639('0x10'),'app':_0x4639('0x16'),'appdata':_0x4639('0x17')+(_0x52a0b0+0x2)+'):Goto('+(_0x52a0b0+0x1)+')','context':_0x537d32['context'],'exten':_0x537d32[_0x4639('0x6')],'priority':_0x52a0b0++,'VoiceExtensionId':_0x537d32['id']},{'type':_0x4639('0x10'),'app':'Set','appdata':_0x537d32[_0x4639('0x14')]?_0x4639('0x18')+_0x537d32[_0x4639('0x14')]+'}':'CDR(prefix)=noprefix','context':_0x537d32[_0x4639('0x5')],'exten':_0x537d32['exten'],'priority':_0x52a0b0++,'VoiceExtensionId':_0x537d32['id']},{'type':_0x4639('0x10'),'app':'Set','appdata':'XCALLY-MOTION-ANSWER=0','context':_0x537d32['context'],'exten':_0x537d32[_0x4639('0x6')],'priority':_0x52a0b0++,'VoiceExtensionId':_0x537d32['id']},{'type':_0x4639('0x10'),'app':_0x4639('0x8'),'appdata':'XCALLY-MOTION-PROGRESS=0','context':_0x537d32[_0x4639('0x5')],'exten':_0x537d32[_0x4639('0x6')],'priority':_0x52a0b0++,'VoiceExtensionId':_0x537d32['id']},{'type':_0x4639('0x10'),'app':'Set','appdata':_0x4639('0xf'),'context':_0x537d32[_0x4639('0x5')],'exten':_0x537d32[_0x4639('0x6')],'priority':_0x52a0b0++,'VoiceExtensionId':_0x537d32['id']},{'type':_0x4639('0x10'),'app':'Set','appdata':_0x4639('0x19')+_0x537d32['id'],'context':_0x537d32['context'],'exten':_0x537d32[_0x4639('0x6')],'priority':_0x52a0b0++,'VoiceExtensionId':_0x537d32['id']}];if(_0x537d32[_0x4639('0x1a')](_0x4639('0x1b'))&&_0x537d32[_0x4639('0x1b')]!==_0x4639('0x1c')){_0x550fe5[_0x4639('0xb')]({'type':'outbound','app':'Set','appdata':_0x4639('0x1d'),'context':_0x537d32[_0x4639('0x5')],'exten':_0x537d32[_0x4639('0x6')],'priority':_0x52a0b0++,'VoiceExtensionId':_0x537d32['id']},{'type':_0x4639('0x10'),'app':'Set','appdata':'_XCALLY_MIXMONITOR_FORMAT='+_0x537d32[_0x4639('0x1b')]||'wav','context':_0x537d32[_0x4639('0x5')],'exten':_0x537d32['exten'],'priority':_0x52a0b0++,'VoiceExtensionId':_0x537d32['id']});}return _0x550fe5;}function _0x51818a(_0x2b0aca){var _0x46f074=[{'name':_0x4639('0x1e'),'param':0x0},{'name':'timeout','param':0x1},{'name':_0x4639('0x1f'),'param':0x2},{'name':'url','param':0x3}];var _0x32ad84={};var _0x123323=_0x2b0aca[_0x4639('0x20')](',');var _0x3ad812=[];for(var _0x2f744c=0x0;_0x2f744c<_0x46f074[_0x4639('0x21')];_0x2f744c++){switch(_0x46f074[_0x2f744c][_0x4639('0x22')]){case _0x4639('0x1e'):_0x32ad84['trunk']=_0x123323[_0x46f074[_0x2f744c][_0x4639('0x23')]][_0x4639('0x20')]('/')[0x1];_0x32ad84['phone']=_0x123323[_0x46f074[_0x2f744c]['param']][_0x4639('0x20')]('/')[0x2];_0x32ad84['prefix']=_0x32ad84[_0x4639('0x24')]?_0x32ad84['phone'][_0x4639('0x20')]('$')[0x0]:undefined;_0x32ad84[_0x4639('0x24')]=route[_0x4639('0x14')]?(_0x32ad84[_0x4639('0x25')]||'')+_0x4639('0x15')+route[_0x4639('0x14')]+'}':(_0x32ad84[_0x4639('0x25')]||'')+'${EXTEN}';_0x3ad812[_0x46f074[_0x2f744c]['param']]=['SIP',_0x32ad84[_0x4639('0x1e')],_0x32ad84['phone']]['join']('/');break;case'options':_0x32ad84['options']=_0x123323[_0x46f074[_0x2f744c][_0x4639('0x23')]];if(route[_0x4639('0x1b')]!==_0x4639('0x1c')){if(_0x32ad84[_0x4639('0x1f')][_0x4639('0x26')](_0x4639('0x27'))<0x0){_0x32ad84['options']+='U(xcally-mixmonitor-context)';}}else{_0x32ad84[_0x4639('0x1f')]=_0x32ad84[_0x4639('0x1f')][_0x4639('0x28')](_0x4639('0x27'),'');}_0x3ad812[_0x46f074[_0x2f744c][_0x4639('0x23')]]=_0x32ad84[_0x4639('0x1f')];break;default:_0x3ad812[_0x46f074[_0x2f744c][_0x4639('0x23')]]=_0x123323[_0x46f074[_0x2f744c]['param']];}}return _0x3ad812[_0x4639('0x29')](',');}function _0x50931a(_0x55e1a5,_0x57c30c,_0x111b83,_0x57570b){return new Promise(function(_0x4e0d1d,_0x2987aa){var _0x2c78cd=[];if(_[_0x4639('0x2a')](_0x57c30c))return _0x4e0d1d(_0x2c78cd);_0x33008f['Interval'][_0x4639('0x2b')]({'attributes':['id',_0x4639('0x2c'),_0x4639('0x2d')],'raw':!![]})[_0x4639('0x2e')](function(_0x4fa807){for(var _0x21234f=0x0,_0x5181cd=0x0;_0x21234f<_0x57c30c[_0x4639('0x21')];_0x21234f++,_0x5181cd=0x0){var _0x103ffb=_0x57c30c[_0x21234f];var _0x181453=[];var _0x4d5ac3=[];if(_0x103ffb['interval']!==_0x4639('0x2f')){_0x103ffb[_0x4639('0x30')]=[_0x103ffb[_0x4639('0x2c')]];}else{_0x103ffb[_0x4639('0x30')]=_0x103ffb[_0x4639('0x2d')]?_['map'](_['filter'](_0x4fa807,{'IntervalId':_0x103ffb['IntervalId']}),'interval'):[];}_0x103ffb[_0x4639('0x5')]=_0x55e1a5[_0x4639('0x5')];_0x103ffb['exten']=_0x55e1a5[_0x4639('0x6')];if(_0x103ffb[_0x4639('0x3')])_0x103ffb[_0x4639('0x3')]=_0x103ffb[_0x4639('0x3')][_0x4639('0x31')]();if(_0x55e1a5[_0x4639('0x3')]===_0x4639('0x10')){if(_0x103ffb[_0x4639('0x1a')](_0x4639('0x32'))&&_0x103ffb['tag']&&_0x103ffb['tag']!=='--'){_0x181453['push']({'type':_0x103ffb[_0x4639('0x3')][_0x4639('0x31')](),'app':'Set','appdata':_0x4639('0x33')+_0x103ffb[_0x4639('0x32')],'context':_0x55e1a5[_0x4639('0x5')],'exten':_0x55e1a5[_0x4639('0x6')],'priority':_0x103ffb[_0x4639('0x30')][_0x4639('0x21')]+_0x111b83+_0x5181cd++,'VoiceExtensionId':_0x55e1a5['id']});}_0x181453[_0x4639('0xb')]({'type':_0x103ffb[_0x4639('0x3')][_0x4639('0x31')](),'app':_0x4639('0x16'),'appdata':_0x4639('0x34')+(_0x103ffb['callerID']?_0x4639('0x35')+_0x103ffb[_0x4639('0x36')]+')':_0x4639('0x37')),'context':_0x55e1a5[_0x4639('0x5')],'exten':_0x55e1a5[_0x4639('0x6')],'priority':_0x103ffb[_0x4639('0x30')]['length']+_0x111b83+_0x5181cd++,'VoiceExtensionId':_0x55e1a5['id']});}else{if(_0x103ffb[_0x4639('0x1a')](_0x4639('0x38'))){if([_0x4639('0x39'),_0x4639('0x3a')]['includes'](_0x103ffb[_0x4639('0x3b')][_0x4639('0x31')]())&&_0x103ffb[_0x4639('0x3c')]!==_0x4639('0x3d')){if(_0x103ffb[_0x4639('0x38')]){_0x181453[_0x4639('0xb')]({'type':_0x103ffb[_0x4639('0x3')]['toLowerCase'](),'app':_0x4639('0x16'),'appdata':'$[${XCALLY-MOTION-ANSWER}=0]?Answer','context':_0x55e1a5[_0x4639('0x5')],'exten':_0x55e1a5[_0x4639('0x6')],'priority':_0x103ffb[_0x4639('0x30')]['length']+_0x111b83+_0x5181cd++,'VoiceExtensionId':_0x55e1a5['id']});_0x181453[_0x4639('0xb')]({'type':_0x103ffb[_0x4639('0x3')]['toLowerCase'](),'app':'Set','appdata':_0x4639('0x3e'),'context':_0x55e1a5[_0x4639('0x5')],'exten':_0x55e1a5['exten'],'priority':_0x103ffb['intervals'][_0x4639('0x21')]+_0x111b83+_0x5181cd++,'VoiceExtensionId':_0x55e1a5['id']});}else{_0x181453[_0x4639('0xb')]({'type':_0x103ffb[_0x4639('0x3')][_0x4639('0x31')](),'app':_0x4639('0x16'),'appdata':'$[${XCALLY-MOTION-PROGRESS}=0]?Progress','context':_0x55e1a5[_0x4639('0x5')],'exten':_0x55e1a5[_0x4639('0x6')],'priority':_0x103ffb[_0x4639('0x30')][_0x4639('0x21')]+_0x111b83+_0x5181cd++,'VoiceExtensionId':_0x55e1a5['id']});_0x181453[_0x4639('0xb')]({'type':_0x103ffb[_0x4639('0x3')]['toLowerCase'](),'app':'Set','appdata':_0x4639('0x3f'),'context':_0x55e1a5[_0x4639('0x5')],'exten':_0x55e1a5[_0x4639('0x6')],'priority':_0x103ffb['intervals']['length']+_0x111b83+_0x5181cd++,'VoiceExtensionId':_0x55e1a5['id']});}}}}for(var _0x3bdef8=0x0;_0x3bdef8<_0x103ffb[_0x4639('0x30')][_0x4639('0x21')];_0x3bdef8++){var _0x44609a=_0x111b83+_0x103ffb[_0x4639('0x30')]['length'];var _0x4136df=_0x3bdef8===_0x103ffb[_0x4639('0x30')][_0x4639('0x21')]-0x1?_0x111b83+_0x181453[_0x4639('0x21')]+_0x4d5ac3[_0x4639('0x21')]+0x2:_0x111b83+_0x3bdef8+0x1;_0x181453[_0x4639('0x40')](_0x3bdef8,0x0,{'type':_0x55e1a5['type'],'app':_0x4639('0x41'),'appdata':_0x103ffb['intervals'][_0x3bdef8]+'?'+_0x55e1a5[_0x4639('0x5')]+',${EXTEN},'+_0x44609a+':'+_0x55e1a5[_0x4639('0x5')]+_0x4639('0x42')+_0x4136df,'exten':_0x55e1a5['exten'],'context':_0x55e1a5[_0x4639('0x5')],'priority':_0x111b83+_0x3bdef8,'VoiceExtensionId':_0x55e1a5['id']});}if(_0x57570b&&_0x103ffb[_0x4639('0x3c')]===_0x4639('0x43'))_0x103ffb['appdata']=_0x51818a(_0x103ffb[_0x4639('0x44')]);_0x103ffb['priority']=_0x181453[_0x4639('0x21')]?_['last'](_0x181453)[_0x4639('0x45')]+0x1:_0x111b83;_0x2c78cd=_[_0x4639('0x46')](_0x2c78cd,_0x181453,[_0x103ffb],_0x4d5ac3);_0x111b83=_['last'](_0x2c78cd)[_0x4639('0x45')]+0x1;}return _0x4e0d1d(_0x2c78cd);})[_0x4639('0x47')](function(_0x7e8d5a){_0x2987aa(_0x7e8d5a);});});}return _0x1ab959[_0x4639('0x48')](_0x4639('0x49'),attributes,{'tableName':'voice_extensions','paranoid':![],'indexes':[],'timestamps':!![],'instanceMethods':{'createRouting':function(_0x3e5197,_0x47164c){var _0x1dcd1e=this;var _0x34e7d1=_0x1dcd1e[_0x4639('0x3')]===_0x4639('0x10')?_0x596170(_0x1dcd1e):_0x215b11(_0x1dcd1e);return _0x50931a(_0x1dcd1e,_0x3e5197,_[_0x4639('0x4a')](_0x34e7d1)[_0x4639('0x45')]+0x1,_0x47164c)['then'](function(_0x4691d9){var _0x93f132=_['concat'](_0x34e7d1,_0x4691d9);_0x93f132[_0x4639('0xb')]({'type':_0x1dcd1e[_0x4639('0x3')],'app':_0x4639('0x4b'),'exten':_0x1dcd1e[_0x4639('0x6')],'context':_0x1dcd1e[_0x4639('0x5')],'priority':_[_0x4639('0x4a')](_0x93f132)[_0x4639('0x45')]+0x1,'VoiceExtensionId':_0x1dcd1e['id']});return _0x93f132;});}}});};
\ No newline at end of file
index 4142ba5..34e50d8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe314=['include','map','model','GetVoiceExtension','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','http','redis','defaults','localhost','socket.io-emitter','./voiceExtension.socket','register','request','then','info','VoiceExtension,\x20%s,\x20%s','request\x20sent','debug','VoiceExtension,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','VoiceExtension','findAll','options','where','attributes','limit'];(function(_0x177671,_0x147488){var _0x542537=function(_0x44878f){while(--_0x44878f){_0x177671['push'](_0x177671['shift']());}};_0x542537(++_0x147488);}(_0xe314,0x7c));var _0x4e31=function(_0x444127,_0x27d1e9){_0x444127=_0x444127-0x0;var _0x5855c0=_0xe314[_0x444127];return _0x5855c0;};'use strict';var _=require('lodash');var util=require(_0x4e31('0x0'));var moment=require(_0x4e31('0x1'));var BPromise=require(_0x4e31('0x2'));var rs=require(_0x4e31('0x3'));var fs=require('fs');var Redis=require(_0x4e31('0x4'));var db=require(_0x4e31('0x5'))['db'];var utils=require(_0x4e31('0x6'));var logger=require(_0x4e31('0x7'))(_0x4e31('0x8'));var config=require(_0x4e31('0x9'));var jayson=require('jayson/promise');var client=jayson['client'][_0x4e31('0xa')]({'port':0x232a});config[_0x4e31('0xb')]=_[_0x4e31('0xc')](config[_0x4e31('0xb')],{'host':_0x4e31('0xd'),'port':0x18eb});var socket=require(_0x4e31('0xe'))(new Redis(config['redis']));require(_0x4e31('0xf'))[_0x4e31('0x10')](socket);function respondWithRpcPromise(_0x1c5ba0,_0x412fbe,_0x4e822f){return new BPromise(function(_0x36389d,_0xd0bbe0){return client[_0x4e31('0x11')](_0x1c5ba0,_0x4e822f)[_0x4e31('0x12')](function(_0x16405c){logger[_0x4e31('0x13')](_0x4e31('0x14'),_0x412fbe,_0x4e31('0x15'));logger[_0x4e31('0x16')](_0x4e31('0x17'),_0x412fbe,_0x4e31('0x15'),JSON[_0x4e31('0x18')](_0x16405c));if(_0x16405c[_0x4e31('0x19')]){if(_0x16405c[_0x4e31('0x19')][_0x4e31('0x1a')]===0x1f4){logger[_0x4e31('0x19')](_0x4e31('0x14'),_0x412fbe,_0x16405c[_0x4e31('0x19')]['message']);return _0xd0bbe0(_0x16405c[_0x4e31('0x19')][_0x4e31('0x1b')]);}logger['error'](_0x4e31('0x14'),_0x412fbe,_0x16405c[_0x4e31('0x19')][_0x4e31('0x1b')]);return _0x36389d(_0x16405c['error'][_0x4e31('0x1b')]);}else{logger[_0x4e31('0x13')](_0x4e31('0x14'),_0x412fbe,'request\x20sent');_0x36389d(_0x16405c[_0x4e31('0x1c')][_0x4e31('0x1b')]);}})[_0x4e31('0x1d')](function(_0x5b7670){logger[_0x4e31('0x19')](_0x4e31('0x14'),_0x412fbe,_0x5b7670);_0xd0bbe0(_0x5b7670);});});}exports['GetVoiceExtension']=function(_0x496dad){var _0xba444d=this;return new Promise(function(_0x248bae,_0x38dd6c){return db[_0x4e31('0x1e')][_0x4e31('0x1f')]({'raw':_0x496dad[_0x4e31('0x20')]?_0x496dad[_0x4e31('0x20')]['raw']===undefined?!![]:![]:!![],'where':_0x496dad[_0x4e31('0x20')]?_0x496dad[_0x4e31('0x20')][_0x4e31('0x21')]||null:null,'attributes':_0x496dad['options']?_0x496dad[_0x4e31('0x20')][_0x4e31('0x22')]||null:null,'limit':_0x496dad[_0x4e31('0x20')]?_0x496dad[_0x4e31('0x20')][_0x4e31('0x23')]||null:null,'include':_0x496dad['options']?_0x496dad[_0x4e31('0x20')][_0x4e31('0x24')]?_[_0x4e31('0x25')](_0x496dad['options'][_0x4e31('0x24')],function(_0xe7e0f8){return{'model':db[_0xe7e0f8[_0x4e31('0x26')]],'as':_0xe7e0f8['as'],'attributes':_0xe7e0f8[_0x4e31('0x22')],'include':_0xe7e0f8[_0x4e31('0x24')]?_[_0x4e31('0x25')](_0xe7e0f8[_0x4e31('0x24')],function(_0x2e9efa){return{'model':db[_0x2e9efa[_0x4e31('0x26')]],'as':_0x2e9efa['as'],'attributes':_0x2e9efa[_0x4e31('0x22')],'include':_0x2e9efa[_0x4e31('0x24')]?_['map'](_0x2e9efa[_0x4e31('0x24')],function(_0x3b74b0){return{'model':db[_0x3b74b0['model']],'as':_0x3b74b0['as'],'attributes':_0x3b74b0[_0x4e31('0x22')]};}):[]};}):[]};}):[]:[]})[_0x4e31('0x12')](function(_0x522374){logger[_0x4e31('0x13')]('GetVoiceExtension',_0x496dad);logger[_0x4e31('0x16')](_0x4e31('0x27'),_0x496dad,JSON['stringify'](_0x522374));_0x248bae(_0x522374);})[_0x4e31('0x1d')](function(_0x446df6){logger[_0x4e31('0x19')](_0x4e31('0x27'),_0x446df6[_0x4e31('0x1b')],_0x496dad);_0x38dd6c(_0xba444d[_0x4e31('0x19')](0x1f4,_0x446df6[_0x4e31('0x1b')]));});});};
\ No newline at end of file
+var _0x06f4=['rpc','../../config/environment','jayson/promise','client','redis','localhost','socket.io-emitter','./voiceExtension.socket','request','info','request\x20sent','debug','VoiceExtension,\x20%s,\x20%s,\x20%s','stringify','error','code','VoiceExtension,\x20%s,\x20%s','message','result','catch','findAll','options','where','limit','include','map','attributes','model','then','GetVoiceExtension','lodash','util','bluebird','randomstring','../../config/utils'];(function(_0x3d0ae2,_0x5a6350){var _0x48dbb4=function(_0x243887){while(--_0x243887){_0x3d0ae2['push'](_0x3d0ae2['shift']());}};_0x48dbb4(++_0x5a6350);}(_0x06f4,0x136));var _0x406f=function(_0x4f617f,_0x14caa3){_0x4f617f=_0x4f617f-0x0;var _0x185906=_0x06f4[_0x4f617f];return _0x185906;};'use strict';var _=require(_0x406f('0x0'));var util=require(_0x406f('0x1'));var moment=require('moment');var BPromise=require(_0x406f('0x2'));var rs=require(_0x406f('0x3'));var fs=require('fs');var Redis=require('ioredis');var db=require('../../mysqldb')['db'];var utils=require(_0x406f('0x4'));var logger=require('../../config/logger')(_0x406f('0x5'));var config=require(_0x406f('0x6'));var jayson=require(_0x406f('0x7'));var client=jayson[_0x406f('0x8')]['http']({'port':0x232a});config[_0x406f('0x9')]=_['defaults'](config[_0x406f('0x9')],{'host':_0x406f('0xa'),'port':0x18eb});var socket=require(_0x406f('0xb'))(new Redis(config['redis']));require(_0x406f('0xc'))['register'](socket);function respondWithRpcPromise(_0x5b46bf,_0xd817eb,_0x56edc2){return new BPromise(function(_0x28c5a5,_0x4e0e96){return client[_0x406f('0xd')](_0x5b46bf,_0x56edc2)['then'](function(_0xb2c62d){logger[_0x406f('0xe')]('VoiceExtension,\x20%s,\x20%s',_0xd817eb,_0x406f('0xf'));logger[_0x406f('0x10')](_0x406f('0x11'),_0xd817eb,_0x406f('0xf'),JSON[_0x406f('0x12')](_0xb2c62d));if(_0xb2c62d[_0x406f('0x13')]){if(_0xb2c62d[_0x406f('0x13')][_0x406f('0x14')]===0x1f4){logger[_0x406f('0x13')](_0x406f('0x15'),_0xd817eb,_0xb2c62d[_0x406f('0x13')]['message']);return _0x4e0e96(_0xb2c62d[_0x406f('0x13')][_0x406f('0x16')]);}logger[_0x406f('0x13')]('VoiceExtension,\x20%s,\x20%s',_0xd817eb,_0xb2c62d[_0x406f('0x13')][_0x406f('0x16')]);return _0x28c5a5(_0xb2c62d['error']['message']);}else{logger[_0x406f('0xe')](_0x406f('0x15'),_0xd817eb,'request\x20sent');_0x28c5a5(_0xb2c62d[_0x406f('0x17')]['message']);}})[_0x406f('0x18')](function(_0x3ad3fe){logger[_0x406f('0x13')](_0x406f('0x15'),_0xd817eb,_0x3ad3fe);_0x4e0e96(_0x3ad3fe);});});}exports['GetVoiceExtension']=function(_0x492c68){var _0x422fe2=this;return new Promise(function(_0x5476d2,_0x33dd5f){return db['VoiceExtension'][_0x406f('0x19')]({'raw':_0x492c68[_0x406f('0x1a')]?_0x492c68[_0x406f('0x1a')]['raw']===undefined?!![]:![]:!![],'where':_0x492c68['options']?_0x492c68['options'][_0x406f('0x1b')]||null:null,'attributes':_0x492c68[_0x406f('0x1a')]?_0x492c68[_0x406f('0x1a')]['attributes']||null:null,'limit':_0x492c68[_0x406f('0x1a')]?_0x492c68['options'][_0x406f('0x1c')]||null:null,'include':_0x492c68[_0x406f('0x1a')]?_0x492c68[_0x406f('0x1a')][_0x406f('0x1d')]?_[_0x406f('0x1e')](_0x492c68['options']['include'],function(_0x81589c){return{'model':db[_0x81589c['model']],'as':_0x81589c['as'],'attributes':_0x81589c[_0x406f('0x1f')],'include':_0x81589c[_0x406f('0x1d')]?_['map'](_0x81589c['include'],function(_0x1b837d){return{'model':db[_0x1b837d['model']],'as':_0x1b837d['as'],'attributes':_0x1b837d[_0x406f('0x1f')],'include':_0x1b837d[_0x406f('0x1d')]?_[_0x406f('0x1e')](_0x1b837d[_0x406f('0x1d')],function(_0x2c439b){return{'model':db[_0x2c439b[_0x406f('0x20')]],'as':_0x2c439b['as'],'attributes':_0x2c439b[_0x406f('0x1f')]};}):[]};}):[]};}):[]:[]})[_0x406f('0x21')](function(_0x5ec2ed){logger['info'](_0x406f('0x22'),_0x492c68);logger[_0x406f('0x10')](_0x406f('0x22'),_0x492c68,JSON[_0x406f('0x12')](_0x5ec2ed));_0x5476d2(_0x5ec2ed);})['catch'](function(_0x543248){logger[_0x406f('0x13')](_0x406f('0x22'),_0x543248['message'],_0x492c68);_0x33dd5f(_0x422fe2['error'](0x1f4,_0x543248[_0x406f('0x16')]));});});};
\ No newline at end of file
index 8e090e9..944af6d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7fbe=['length','voiceExtension:','remove','update','emit','removeListener','register'];(function(_0x4969ee,_0x1691f7){var _0x3772dd=function(_0x4d54f6){while(--_0x4d54f6){_0x4969ee['push'](_0x4969ee['shift']());}};_0x3772dd(++_0x1691f7);}(_0x7fbe,0x1ec));var _0xe7fb=function(_0x1a9b87,_0x4b9987){_0x1a9b87=_0x1a9b87-0x0;var _0x3e5a50=_0x7fbe[_0x1a9b87];return _0x3e5a50;};'use strict';var VoiceExtensionEvents=require('./voiceExtension.events');var events=['save',_0xe7fb('0x0'),_0xe7fb('0x1')];function createListener(_0x294c21,_0x1703d5){return function(_0x517d3a){_0x1703d5[_0xe7fb('0x2')](_0x294c21,_0x517d3a);};}function removeListener(_0x11d2c4,_0x4524ff){return function(){VoiceExtensionEvents[_0xe7fb('0x3')](_0x11d2c4,_0x4524ff);};}exports[_0xe7fb('0x4')]=function(_0x290172){for(var _0x12d1b0=0x0,_0x24cd67=events[_0xe7fb('0x5')];_0x12d1b0<_0x24cd67;_0x12d1b0++){var _0x5ad75b=events[_0x12d1b0];var _0x213ebc=createListener(_0xe7fb('0x6')+_0x5ad75b,_0x290172);VoiceExtensionEvents['on'](_0x5ad75b,_0x213ebc);}};
\ No newline at end of file
+var _0x0295=['emit','removeListener','register','voiceExtension:','./voiceExtension.events','update'];(function(_0x9bdd6f,_0x45231c){var _0x2facc7=function(_0x345bf9){while(--_0x345bf9){_0x9bdd6f['push'](_0x9bdd6f['shift']());}};_0x2facc7(++_0x45231c);}(_0x0295,0x1f0));var _0x5029=function(_0x424bd3,_0x8760d8){_0x424bd3=_0x424bd3-0x0;var _0x1fdade=_0x0295[_0x424bd3];return _0x1fdade;};'use strict';var VoiceExtensionEvents=require(_0x5029('0x0'));var events=['save','remove',_0x5029('0x1')];function createListener(_0x4f552a,_0x53c2e1){return function(_0x315589){_0x53c2e1[_0x5029('0x2')](_0x4f552a,_0x315589);};}function removeListener(_0x157a4f,_0x3d0af1){return function(){VoiceExtensionEvents[_0x5029('0x3')](_0x157a4f,_0x3d0af1);};}exports[_0x5029('0x4')]=function(_0x200217){for(var _0x215955=0x0,_0x5b3cd=events['length'];_0x215955<_0x5b3cd;_0x215955++){var _0x54978f=events[_0x215955];var _0x4ee867=createListener(_0x5029('0x5')+_0x54978f,_0x200217);VoiceExtensionEvents['on'](_0x54978f,_0x4ee867);}};
\ No newline at end of file
index 757699f..35f6bd5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x53ec=['update','destroy','exports','multer','util','path','connect-timeout','express','Router','../../components/auth/service','../../config/environment','./voiceMail.controller','isAuthenticated','get','/:id','show','/:id/messages','getMessages','post','create','put'];(function(_0x5d1124,_0x40cea5){var _0x5cda88=function(_0x567830){while(--_0x567830){_0x5d1124['push'](_0x5d1124['shift']());}};_0x5cda88(++_0x40cea5);}(_0x53ec,0x192));var _0xc53e=function(_0x3a2e8c,_0x4001d3){_0x3a2e8c=_0x3a2e8c-0x0;var _0x588177=_0x53ec[_0x3a2e8c];return _0x588177;};'use strict';var multer=require(_0xc53e('0x0'));var util=require(_0xc53e('0x1'));var path=require(_0xc53e('0x2'));var timeout=require(_0xc53e('0x3'));var express=require(_0xc53e('0x4'));var router=express[_0xc53e('0x5')]();var fs_extra=require('fs-extra');var auth=require(_0xc53e('0x6'));var interaction=require('../../components/interaction/service');var config=require(_0xc53e('0x7'));var controller=require(_0xc53e('0x8'));router['get']('/',auth[_0xc53e('0x9')](),controller['index']);router[_0xc53e('0xa')](_0xc53e('0xb'),auth['isAuthenticated'](),controller[_0xc53e('0xc')]);router[_0xc53e('0xa')](_0xc53e('0xd'),auth[_0xc53e('0x9')](),controller[_0xc53e('0xe')]);router[_0xc53e('0xf')]('/',auth[_0xc53e('0x9')](),controller[_0xc53e('0x10')]);router[_0xc53e('0x11')]('/:id',auth['isAuthenticated'](),controller[_0xc53e('0x12')]);router['delete']('/:id',auth[_0xc53e('0x9')](),controller[_0xc53e('0x13')]);module[_0xc53e('0x14')]=router;
\ No newline at end of file
+var _0x5430=['Router','../../components/interaction/service','get','isAuthenticated','index','/:id','show','/:id/messages','getMessages','post','create','put','update','delete','destroy','exports','multer','util','path','connect-timeout','express'];(function(_0x55821d,_0x27a22e){var _0x58ea8a=function(_0x5bdd3d){while(--_0x5bdd3d){_0x55821d['push'](_0x55821d['shift']());}};_0x58ea8a(++_0x27a22e);}(_0x5430,0x10c));var _0x0543=function(_0x4046e5,_0x28f216){_0x4046e5=_0x4046e5-0x0;var _0x40d4db=_0x5430[_0x4046e5];return _0x40d4db;};'use strict';var multer=require(_0x0543('0x0'));var util=require(_0x0543('0x1'));var path=require(_0x0543('0x2'));var timeout=require(_0x0543('0x3'));var express=require(_0x0543('0x4'));var router=express[_0x0543('0x5')]();var fs_extra=require('fs-extra');var auth=require('../../components/auth/service');var interaction=require(_0x0543('0x6'));var config=require('../../config/environment');var controller=require('./voiceMail.controller');router[_0x0543('0x7')]('/',auth[_0x0543('0x8')](),controller[_0x0543('0x9')]);router[_0x0543('0x7')](_0x0543('0xa'),auth['isAuthenticated'](),controller[_0x0543('0xb')]);router[_0x0543('0x7')](_0x0543('0xc'),auth[_0x0543('0x8')](),controller[_0x0543('0xd')]);router[_0x0543('0xe')]('/',auth['isAuthenticated'](),controller[_0x0543('0xf')]);router[_0x0543('0x10')]('/:id',auth[_0x0543('0x8')](),controller[_0x0543('0x11')]);router[_0x0543('0x12')](_0x0543('0xa'),auth[_0x0543('0x8')](),controller[_0x0543('0x13')]);module[_0x0543('0x14')]=router;
\ No newline at end of file
index fc49ca8..21c104d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x124c=['yes','TIMESTAMP','INTEGER','VIRTUAL','\x20-\x20','sequelize','exports','STRING','from-voicemail','string','trim','central','ENUM'];(function(_0x5f1895,_0x3d9bed){var _0xba076b=function(_0x30551b){while(--_0x30551b){_0x5f1895['push'](_0x5f1895['shift']());}};_0xba076b(++_0x3d9bed);}(_0x124c,0x1f3));var _0xc124=function(_0x49e29b,_0x45b68a){_0x49e29b=_0x49e29b-0x0;var _0x1e4e27=_0x124c[_0x49e29b];return _0x1e4e27;};'use strict';var Sequelize=require(_0xc124('0x0'));module[_0xc124('0x1')]={'customer_id':{'type':Sequelize['STRING']},'context':{'type':Sequelize[_0xc124('0x2')],'defaultValue':_0xc124('0x3'),'unique':'contest_mailbox'},'mailbox':{'type':Sequelize['STRING'],'defaultValue':'','allowNull':![],'unique':'contest_mailbox'},'password':{'type':Sequelize['STRING']},'fullname':{'type':Sequelize['STRING']},'email':{'type':Sequelize[_0xc124('0x2')],'validate':{'isEmail':!![]},'set':function(_0x249ac2){this['setDataValue']('email',typeof _0x249ac2===_0xc124('0x4')&&_0x249ac2[_0xc124('0x5')]()?_0x249ac2['trim']():null);}},'pager':{'type':Sequelize[_0xc124('0x2')]},'tz':{'type':Sequelize['STRING'],'defaultValue':_0xc124('0x6')},'attach':{'type':Sequelize[_0xc124('0x7')](_0xc124('0x8'),'no'),'defaultValue':_0xc124('0x8'),'allowNull':![]},'saycid':{'type':Sequelize[_0xc124('0x7')](_0xc124('0x8'),'no'),'defaultValue':'yes','allowNull':![]},'dialout':{'type':Sequelize['STRING']},'callback':{'type':Sequelize['STRING']},'review':{'type':Sequelize[_0xc124('0x7')](_0xc124('0x8'),'no'),'defaultValue':'no','allowNull':![]},'operator':{'type':Sequelize[_0xc124('0x7')](_0xc124('0x8'),'no'),'defaultValue':'no','allowNull':![]},'envelope':{'type':Sequelize[_0xc124('0x7')]('yes','no'),'defaultValue':'no','allowNull':![]},'sayduration':{'type':Sequelize[_0xc124('0x7')]('yes','no'),'defaultValue':'no','allowNull':![]},'saydurationm':{'type':'TINYINT(4)','defaultValue':0x1,'allowNull':![]},'sendvoicemail':{'type':Sequelize[_0xc124('0x7')](_0xc124('0x8'),'no'),'defaultValue':'no','allowNull':![]},'delete':{'type':Sequelize[_0xc124('0x7')]('yes','no'),'defaultValue':'no','allowNull':![]},'nextaftercmd':{'type':Sequelize['ENUM']('yes','no'),'defaultValue':_0xc124('0x8'),'allowNull':![]},'forcename':{'type':Sequelize['ENUM'](_0xc124('0x8'),'no'),'defaultValue':'no','allowNull':![]},'forcegreetings':{'type':Sequelize[_0xc124('0x7')]('yes','no'),'defaultValue':'no','allowNull':![]},'hidefromdir':{'type':Sequelize['ENUM'](_0xc124('0x8'),'no'),'defaultValue':_0xc124('0x8'),'allowNull':![]},'stamp':{'type':_0xc124('0x9')},'emailsubject':{'type':Sequelize[_0xc124('0x2')]},'emailbody':{'type':Sequelize[_0xc124('0x2')]},'maxsecs':{'type':Sequelize[_0xc124('0xa')](0xff),'defaultValue':0xb4,'allowNull':![]},'maxmsg':{'type':Sequelize[_0xc124('0xa')](0xff),'defaultValue':0x64,'allowNull':![]},'name':{'type':Sequelize[_0xc124('0xb')],'get':function(){return this['getDataValue']('fullname')+_0xc124('0xc')+this['getDataValue']('mailbox');}}};
\ No newline at end of file
+var _0xdaf0=['INTEGER','getDataValue','fullname','\x20-\x20','mailbox','STRING','from-voicemail','contest_mailbox','setDataValue','string','trim','central','ENUM','yes','TINYINT(4)'];(function(_0x3b0731,_0xcf9925){var _0x4204d7=function(_0x635ac5){while(--_0x635ac5){_0x3b0731['push'](_0x3b0731['shift']());}};_0x4204d7(++_0xcf9925);}(_0xdaf0,0x140));var _0x0daf=function(_0x7825c6,_0x1e6c1e){_0x7825c6=_0x7825c6-0x0;var _0x25a11d=_0xdaf0[_0x7825c6];return _0x25a11d;};'use strict';var Sequelize=require('sequelize');module['exports']={'customer_id':{'type':Sequelize[_0x0daf('0x0')]},'context':{'type':Sequelize[_0x0daf('0x0')],'defaultValue':_0x0daf('0x1'),'unique':_0x0daf('0x2')},'mailbox':{'type':Sequelize[_0x0daf('0x0')],'defaultValue':'','allowNull':![],'unique':_0x0daf('0x2')},'password':{'type':Sequelize[_0x0daf('0x0')]},'fullname':{'type':Sequelize[_0x0daf('0x0')]},'email':{'type':Sequelize['STRING'],'validate':{'isEmail':!![]},'set':function(_0x466e51){this[_0x0daf('0x3')]('email',typeof _0x466e51===_0x0daf('0x4')&&_0x466e51['trim']()?_0x466e51[_0x0daf('0x5')]():null);}},'pager':{'type':Sequelize[_0x0daf('0x0')]},'tz':{'type':Sequelize[_0x0daf('0x0')],'defaultValue':_0x0daf('0x6')},'attach':{'type':Sequelize[_0x0daf('0x7')]('yes','no'),'defaultValue':_0x0daf('0x8'),'allowNull':![]},'saycid':{'type':Sequelize[_0x0daf('0x7')](_0x0daf('0x8'),'no'),'defaultValue':'yes','allowNull':![]},'dialout':{'type':Sequelize['STRING']},'callback':{'type':Sequelize[_0x0daf('0x0')]},'review':{'type':Sequelize[_0x0daf('0x7')](_0x0daf('0x8'),'no'),'defaultValue':'no','allowNull':![]},'operator':{'type':Sequelize[_0x0daf('0x7')](_0x0daf('0x8'),'no'),'defaultValue':'no','allowNull':![]},'envelope':{'type':Sequelize[_0x0daf('0x7')]('yes','no'),'defaultValue':'no','allowNull':![]},'sayduration':{'type':Sequelize[_0x0daf('0x7')](_0x0daf('0x8'),'no'),'defaultValue':'no','allowNull':![]},'saydurationm':{'type':_0x0daf('0x9'),'defaultValue':0x1,'allowNull':![]},'sendvoicemail':{'type':Sequelize[_0x0daf('0x7')](_0x0daf('0x8'),'no'),'defaultValue':'no','allowNull':![]},'delete':{'type':Sequelize[_0x0daf('0x7')]('yes','no'),'defaultValue':'no','allowNull':![]},'nextaftercmd':{'type':Sequelize[_0x0daf('0x7')](_0x0daf('0x8'),'no'),'defaultValue':_0x0daf('0x8'),'allowNull':![]},'forcename':{'type':Sequelize[_0x0daf('0x7')](_0x0daf('0x8'),'no'),'defaultValue':'no','allowNull':![]},'forcegreetings':{'type':Sequelize[_0x0daf('0x7')](_0x0daf('0x8'),'no'),'defaultValue':'no','allowNull':![]},'hidefromdir':{'type':Sequelize[_0x0daf('0x7')](_0x0daf('0x8'),'no'),'defaultValue':_0x0daf('0x8'),'allowNull':![]},'stamp':{'type':'TIMESTAMP'},'emailsubject':{'type':Sequelize[_0x0daf('0x0')]},'emailbody':{'type':Sequelize[_0x0daf('0x0')]},'maxsecs':{'type':Sequelize['INTEGER'](0xff),'defaultValue':0xb4,'allowNull':![]},'maxmsg':{'type':Sequelize[_0x0daf('0xa')](0xff),'defaultValue':0x64,'allowNull':![]},'name':{'type':Sequelize['VIRTUAL'],'get':function(){return this[_0x0daf('0xb')](_0x0daf('0xc'))+_0x0daf('0xd')+this[_0x0daf('0xb')](_0x0daf('0xe'));}}};
\ No newline at end of file
index 128a9e3..768199a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xbfcc=['stack','name','send','index','map','VoiceMail','rawAttributes','fieldName','type','key','keys','query','filters','attributes','intersection','model','fields','hasOwnProperty','order','sort','where','pick','filter','merge','VIRTUAL','options','includeAll','include','findAll','rows','show','params','length','find','body','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','UserProfileSection','userProfileId','create','catch','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','update','getMessages','nolimit','VoiceMailMessage','eml-format','fast-json-patch','request-promise','moment','bluebird','to-csv','ejs','lodash','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','sendStatus','end','status','limit','undefined','offset','count','set','Content-Range','json','reject','then','destroy','get','Voicemails','UserProfileResource','error'];(function(_0x591c37,_0x2d97d3){var _0x5e54a6=function(_0x4798c5){while(--_0x4798c5){_0x591c37['push'](_0x591c37['shift']());}};_0x5e54a6(++_0x2d97d3);}(_0xbfcc,0x1dd));var _0xcbfc=function(_0x13e741,_0x5d3c24){_0x13e741=_0x13e741-0x0;var _0x3f8bb3=_0xbfcc[_0x13e741];return _0x3f8bb3;};'use strict';var emlformat=require(_0xcbfc('0x0'));var rimraf=require('rimraf');var zipdir=require('zip-dir');var jsonpatch=require(_0xcbfc('0x1'));var rp=require(_0xcbfc('0x2'));var moment=require(_0xcbfc('0x3'));var BPromise=require(_0xcbfc('0x4'));var Mustache=require('mustache');var util=require('util');var path=require('path');var sox=require('sox');var csv=require(_0xcbfc('0x5'));var ejs=require(_0xcbfc('0x6'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0xcbfc('0x7'));var squel=require('squel');var crypto=require(_0xcbfc('0x8'));var jsforce=require(_0xcbfc('0x9'));var deskjs=require(_0xcbfc('0xa'));var toCsv=require(_0xcbfc('0x5'));var querystring=require('querystring');var Papa=require(_0xcbfc('0xb'));var Redis=require(_0xcbfc('0xc'));var authService=require(_0xcbfc('0xd'));var qs=require(_0xcbfc('0xe'));var as=require(_0xcbfc('0xf'));var hardwareService=require(_0xcbfc('0x10'));var logger=require('../../config/logger')(_0xcbfc('0x11'));var utils=require(_0xcbfc('0x12'));var config=require(_0xcbfc('0x13'));var licenseUtil=require(_0xcbfc('0x14'));var db=require(_0xcbfc('0x15'))['db'];function respondWithStatusCode(_0x4e8b34,_0x3bfd05){_0x3bfd05=_0x3bfd05||0xcc;return function(_0x86f67c){if(_0x86f67c){return _0x4e8b34[_0xcbfc('0x16')](_0x3bfd05);}return _0x4e8b34['status'](_0x3bfd05)[_0xcbfc('0x17')]();};}function respondWithResult(_0x3ec338,_0x2f2bdd){_0x2f2bdd=_0x2f2bdd||0xc8;return function(_0x45a5cc){if(_0x45a5cc){return _0x3ec338[_0xcbfc('0x18')](_0x2f2bdd)['json'](_0x45a5cc);}};}function respondWithFilteredResult(_0x3c69ed,_0x1963de){return function(_0x1ec8c4){if(_0x1ec8c4){var _0x4317e4=typeof _0x1963de['offset']==='undefined'&&typeof _0x1963de[_0xcbfc('0x19')]===_0xcbfc('0x1a');var _0xa65368=_0x1ec8c4['count'];var _0x5b078f=_0x4317e4?0x0:_0x1963de[_0xcbfc('0x1b')];var _0x99b59d=_0x4317e4?_0x1ec8c4[_0xcbfc('0x1c')]:_0x1963de['offset']+_0x1963de[_0xcbfc('0x19')];var _0x552777;if(_0x99b59d>=_0xa65368){_0x99b59d=_0xa65368;_0x552777=0xc8;}else{_0x552777=0xce;}_0x3c69ed[_0xcbfc('0x18')](_0x552777);return _0x3c69ed[_0xcbfc('0x1d')](_0xcbfc('0x1e'),_0x5b078f+'-'+_0x99b59d+'/'+_0xa65368)[_0xcbfc('0x1f')](_0x1ec8c4);}return null;};}function patchUpdates(_0x25c167){return function(_0x2653b1){try{jsonpatch['apply'](_0x2653b1,_0x25c167,!![]);}catch(_0x9c79da){return BPromise[_0xcbfc('0x20')](_0x9c79da);}return _0x2653b1['save']();};}function saveUpdates(_0x1da958,_0x5a449b){return function(_0x4cc8b3){if(_0x4cc8b3){return _0x4cc8b3['update'](_0x1da958)[_0xcbfc('0x21')](function(_0x4a0fcb){return _0x4a0fcb;});}return null;};}function removeEntity(_0x4a1915,_0x1b3e42){return function(_0x34cffa){if(_0x34cffa){return _0x34cffa[_0xcbfc('0x22')]()[_0xcbfc('0x21')](function(){var _0x49f5bf=_0x34cffa[_0xcbfc('0x23')]({'plain':!![]});var _0x51284a=_0xcbfc('0x24');return db[_0xcbfc('0x25')]['destroy']({'where':{'type':_0x51284a,'resourceId':_0x49f5bf['id']}})[_0xcbfc('0x21')](function(){return _0x34cffa;});})[_0xcbfc('0x21')](function(){_0x4a1915['status'](0xcc)[_0xcbfc('0x17')]();});}};}function handleEntityNotFound(_0x3c3afd,_0x2f7549){return function(_0x41f3b8){if(!_0x41f3b8){_0x3c3afd['sendStatus'](0x194);}return _0x41f3b8;};}function handleError(_0x29f896,_0x1ec530){_0x1ec530=_0x1ec530||0x1f4;return function(_0x4f632a){logger[_0xcbfc('0x26')](_0x4f632a[_0xcbfc('0x27')]);if(_0x4f632a[_0xcbfc('0x28')]){delete _0x4f632a[_0xcbfc('0x28')];}_0x29f896[_0xcbfc('0x18')](_0x1ec530)[_0xcbfc('0x29')](_0x4f632a);};}exports[_0xcbfc('0x2a')]=function(_0x5366cf,_0x41b68b){var _0x433300={},_0x3f9d20={},_0x20a378={'count':0x0,'rows':[]};var _0x500a0b=_[_0xcbfc('0x2b')](db[_0xcbfc('0x2c')][_0xcbfc('0x2d')],function(_0x245986){return{'name':_0x245986[_0xcbfc('0x2e')],'type':_0x245986[_0xcbfc('0x2f')][_0xcbfc('0x30')]};});_0x3f9d20['model']=_[_0xcbfc('0x2b')](_0x500a0b,_0xcbfc('0x28'));_0x3f9d20['query']=_[_0xcbfc('0x31')](_0x5366cf[_0xcbfc('0x32')]);_0x3f9d20[_0xcbfc('0x33')]=_['intersection'](_0x3f9d20['model'],_0x3f9d20['query']);_0x433300[_0xcbfc('0x34')]=_[_0xcbfc('0x35')](_0x3f9d20[_0xcbfc('0x36')],qs[_0xcbfc('0x37')](_0x5366cf[_0xcbfc('0x32')][_0xcbfc('0x37')]));_0x433300[_0xcbfc('0x34')]=_0x433300[_0xcbfc('0x34')]['length']?_0x433300[_0xcbfc('0x34')]:_0x3f9d20[_0xcbfc('0x36')];if(!_0x5366cf['query'][_0xcbfc('0x38')]('nolimit')){_0x433300[_0xcbfc('0x19')]=qs[_0xcbfc('0x19')](_0x5366cf[_0xcbfc('0x32')]['limit']);_0x433300[_0xcbfc('0x1b')]=qs['offset'](_0x5366cf['query'][_0xcbfc('0x1b')]);}_0x433300[_0xcbfc('0x39')]=qs[_0xcbfc('0x3a')](_0x5366cf[_0xcbfc('0x32')][_0xcbfc('0x3a')]);_0x433300[_0xcbfc('0x3b')]=qs[_0xcbfc('0x33')](_[_0xcbfc('0x3c')](_0x5366cf['query'],_0x3f9d20[_0xcbfc('0x33')]),_0x500a0b);if(_0x5366cf['query'][_0xcbfc('0x3d')]){_0x433300[_0xcbfc('0x3b')]=_[_0xcbfc('0x3e')](_0x433300[_0xcbfc('0x3b')],{'$or':_['map'](_0x500a0b,function(_0x5306e9){if(_0x5306e9[_0xcbfc('0x2f')]!==_0xcbfc('0x3f')){var _0x404f46={};_0x404f46[_0x5306e9[_0xcbfc('0x28')]]={'$like':'%'+_0x5366cf[_0xcbfc('0x32')]['filter']+'%'};return _0x404f46;}})});}_0x433300=_[_0xcbfc('0x3e')]({},_0x433300,_0x5366cf[_0xcbfc('0x40')]);var _0xf2da32={'where':_0x433300['where']};return db[_0xcbfc('0x2c')][_0xcbfc('0x1c')](_0xf2da32)[_0xcbfc('0x21')](function(_0x4ca55c){_0x20a378[_0xcbfc('0x1c')]=_0x4ca55c;if(_0x5366cf[_0xcbfc('0x32')][_0xcbfc('0x41')]){_0x433300[_0xcbfc('0x42')]=[{'all':!![]}];}return db[_0xcbfc('0x2c')][_0xcbfc('0x43')](_0x433300);})[_0xcbfc('0x21')](function(_0x561544){_0x20a378[_0xcbfc('0x44')]=_0x561544;return _0x20a378;})[_0xcbfc('0x21')](respondWithFilteredResult(_0x41b68b,_0x433300))['catch'](handleError(_0x41b68b,null));};exports[_0xcbfc('0x45')]=function(_0x50a01c,_0x17b87b){var _0xdc0521={'raw':!![],'where':{'id':_0x50a01c[_0xcbfc('0x46')]['id']}},_0xd609ec={};_0xd609ec[_0xcbfc('0x36')]=_[_0xcbfc('0x31')](db['VoiceMail'][_0xcbfc('0x2d')]);_0xd609ec[_0xcbfc('0x32')]=_[_0xcbfc('0x31')](_0x50a01c[_0xcbfc('0x32')]);_0xd609ec[_0xcbfc('0x33')]=_[_0xcbfc('0x35')](_0xd609ec[_0xcbfc('0x36')],_0xd609ec['query']);_0xdc0521[_0xcbfc('0x34')]=_[_0xcbfc('0x35')](_0xd609ec['model'],qs[_0xcbfc('0x37')](_0x50a01c[_0xcbfc('0x32')][_0xcbfc('0x37')]));_0xdc0521['attributes']=_0xdc0521[_0xcbfc('0x34')][_0xcbfc('0x47')]?_0xdc0521[_0xcbfc('0x34')]:_0xd609ec[_0xcbfc('0x36')];if(_0x50a01c[_0xcbfc('0x32')][_0xcbfc('0x41')]){_0xdc0521[_0xcbfc('0x42')]=[{'all':!![]}];}_0xdc0521=_['merge']({},_0xdc0521,_0x50a01c['options']);return db[_0xcbfc('0x2c')][_0xcbfc('0x48')](_0xdc0521)[_0xcbfc('0x21')](handleEntityNotFound(_0x17b87b,null))[_0xcbfc('0x21')](respondWithResult(_0x17b87b,null))['catch'](handleError(_0x17b87b,null));};exports['create']=function(_0x2e89bf,_0xe5c5ef){return db[_0xcbfc('0x2c')]['create'](_0x2e89bf[_0xcbfc('0x49')],{})[_0xcbfc('0x21')](function(_0x4446b7){var _0x4b3096=_0x2e89bf[_0xcbfc('0x4a')][_0xcbfc('0x23')]({'plain':!![]});if(!_0x4b3096)throw new Error(_0xcbfc('0x4b'));if(_0x4b3096[_0xcbfc('0x4c')]===_0xcbfc('0x4a')){var _0xd9976d=_0x4446b7[_0xcbfc('0x23')]({'plain':!![]});var _0x374998=_0xcbfc('0x24');return db[_0xcbfc('0x4d')]['find']({'where':{'name':_0x374998,'userProfileId':_0x4b3096[_0xcbfc('0x4e')]},'raw':!![]})[_0xcbfc('0x21')](function(_0x44cc11){if(_0x44cc11&&_0x44cc11['autoAssociation']===0x0){return db[_0xcbfc('0x25')][_0xcbfc('0x4f')]({'name':_0xd9976d['name'],'resourceId':_0xd9976d['id'],'type':_0x44cc11[_0xcbfc('0x28')],'sectionId':_0x44cc11['id']},{})[_0xcbfc('0x21')](function(){return _0x4446b7;});}else{return _0x4446b7;}})[_0xcbfc('0x50')](function(_0x25e48d){logger['error'](_0xcbfc('0x51'),_0x25e48d);throw _0x25e48d;});}return _0x4446b7;})[_0xcbfc('0x21')](respondWithResult(_0xe5c5ef,0xc9))['catch'](handleError(_0xe5c5ef,null));};exports[_0xcbfc('0x52')]=function(_0x34db13,_0x3ed9f0){if(_0x34db13[_0xcbfc('0x49')]['id']){delete _0x34db13[_0xcbfc('0x49')]['id'];}return db[_0xcbfc('0x2c')][_0xcbfc('0x48')]({'where':{'id':_0x34db13[_0xcbfc('0x46')]['id']}})[_0xcbfc('0x21')](handleEntityNotFound(_0x3ed9f0,null))[_0xcbfc('0x21')](saveUpdates(_0x34db13['body'],null))[_0xcbfc('0x21')](respondWithResult(_0x3ed9f0,null))['catch'](handleError(_0x3ed9f0,null));};exports['destroy']=function(_0x4a10e6,_0x4239da){return db[_0xcbfc('0x2c')][_0xcbfc('0x48')]({'where':{'id':_0x4a10e6[_0xcbfc('0x46')]['id']}})[_0xcbfc('0x21')](handleEntityNotFound(_0x4239da,null))[_0xcbfc('0x21')](removeEntity(_0x4239da,null))[_0xcbfc('0x50')](handleError(_0x4239da,null));};exports[_0xcbfc('0x53')]=function(_0x4d2df1,_0x9e0c38,_0xf5f5e1){return db[_0xcbfc('0x2c')]['findOne']({'where':{'id':_0x4d2df1[_0xcbfc('0x46')]['id']}})[_0xcbfc('0x21')](handleEntityNotFound(_0x9e0c38,null))[_0xcbfc('0x21')](function(_0x3b526f){var _0x1ed350;var _0x310b78={},_0x34ec1d={};_0x34ec1d['model']=_[_0xcbfc('0x31')](db['VoiceMailMessage'][_0xcbfc('0x2d')]);_0x34ec1d[_0xcbfc('0x32')]=_['keys'](_0x4d2df1[_0xcbfc('0x32')]);_0x34ec1d['filters']=_[_0xcbfc('0x35')](_0x34ec1d[_0xcbfc('0x36')],_0x34ec1d[_0xcbfc('0x32')]);_0x310b78[_0xcbfc('0x34')]=_[_0xcbfc('0x35')](_0x34ec1d[_0xcbfc('0x36')],qs['fields'](_0x4d2df1[_0xcbfc('0x32')][_0xcbfc('0x37')]));_0x310b78['attributes']=_0x310b78[_0xcbfc('0x34')][_0xcbfc('0x47')]?_0x310b78[_0xcbfc('0x34')]:_0x34ec1d[_0xcbfc('0x36')];if(!_0x4d2df1[_0xcbfc('0x32')][_0xcbfc('0x38')](_0xcbfc('0x54'))){_0x310b78[_0xcbfc('0x19')]=qs['limit'](_0x4d2df1[_0xcbfc('0x32')][_0xcbfc('0x19')]);_0x310b78[_0xcbfc('0x1b')]=qs[_0xcbfc('0x1b')](_0x4d2df1[_0xcbfc('0x32')][_0xcbfc('0x1b')]);}_0x310b78[_0xcbfc('0x39')]=qs[_0xcbfc('0x3a')](_0x4d2df1[_0xcbfc('0x32')][_0xcbfc('0x3a')]);_0x310b78['where']=qs[_0xcbfc('0x33')](_[_0xcbfc('0x3c')](_0x4d2df1['query'],_0x34ec1d[_0xcbfc('0x33')]));if(_0x4d2df1['query']['filter']){_0x310b78[_0xcbfc('0x3b')]=_[_0xcbfc('0x3e')](_0x310b78[_0xcbfc('0x3b')],{'$or':_[_0xcbfc('0x2b')](_0x310b78[_0xcbfc('0x34')],function(_0x4d8d2a){var _0x53babd={};_0x53babd[_0x4d8d2a]={'$like':'%'+_0x4d2df1[_0xcbfc('0x32')][_0xcbfc('0x3d')]+'%'};return _0x53babd;})});}_0x310b78[_0xcbfc('0x3b')]=_[_0xcbfc('0x3e')](_0x310b78[_0xcbfc('0x3b')],{'mailboxuser':_0x3b526f['mailbox']});_0x310b78=_[_0xcbfc('0x3e')]({},_0x310b78,_0x4d2df1[_0xcbfc('0x40')]);return db[_0xcbfc('0x55')]['findAndCountAll'](_0x310b78)['then'](respondWithFilteredResult(_0x9e0c38,_0x310b78));})['catch'](handleError(_0x9e0c38,null));};
\ No newline at end of file
+var _0x4fc2=['nolimit','mailbox','VoiceMailMessage','eml-format','rimraf','zip-dir','fast-json-patch','moment','bluebird','mustache','path','sox','ejs','fs-extra','squel','crypto','jsforce','desk.js','to-csv','querystring','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/license/util','../../mysqldb','sendStatus','status','end','json','offset','undefined','limit','count','Content-Range','save','update','destroy','then','get','Voicemails','UserProfileResource','stack','name','send','map','VoiceMail','fieldName','key','model','query','filters','attributes','intersection','fields','length','hasOwnProperty','order','sort','where','pick','filter','type','merge','options','includeAll','findAll','rows','show','params','keys','rawAttributes','include','find','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','userProfileId','autoAssociation','create','catch','error','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','body','getMessages','findOne'];(function(_0x47106a,_0xb4ea8){var _0x120d01=function(_0x1f82bd){while(--_0x1f82bd){_0x47106a['push'](_0x47106a['shift']());}};_0x120d01(++_0xb4ea8);}(_0x4fc2,0x111));var _0x24fc=function(_0xf335a7,_0x7933f0){_0xf335a7=_0xf335a7-0x0;var _0x411ecd=_0x4fc2[_0xf335a7];return _0x411ecd;};'use strict';var emlformat=require(_0x24fc('0x0'));var rimraf=require(_0x24fc('0x1'));var zipdir=require(_0x24fc('0x2'));var jsonpatch=require(_0x24fc('0x3'));var rp=require('request-promise');var moment=require(_0x24fc('0x4'));var BPromise=require(_0x24fc('0x5'));var Mustache=require(_0x24fc('0x6'));var util=require('util');var path=require(_0x24fc('0x7'));var sox=require(_0x24fc('0x8'));var csv=require('to-csv');var ejs=require(_0x24fc('0x9'));var fs=require('fs');var fs_extra=require(_0x24fc('0xa'));var _=require('lodash');var squel=require(_0x24fc('0xb'));var crypto=require(_0x24fc('0xc'));var jsforce=require(_0x24fc('0xd'));var deskjs=require(_0x24fc('0xe'));var toCsv=require(_0x24fc('0xf'));var querystring=require(_0x24fc('0x10'));var Papa=require('papaparse');var Redis=require(_0x24fc('0x11'));var authService=require(_0x24fc('0x12'));var qs=require(_0x24fc('0x13'));var as=require(_0x24fc('0x14'));var hardwareService=require(_0x24fc('0x15'));var logger=require(_0x24fc('0x16'))(_0x24fc('0x17'));var utils=require(_0x24fc('0x18'));var config=require('../../config/environment');var licenseUtil=require(_0x24fc('0x19'));var db=require(_0x24fc('0x1a'))['db'];function respondWithStatusCode(_0x5cc65e,_0x306873){_0x306873=_0x306873||0xcc;return function(_0x76cb25){if(_0x76cb25){return _0x5cc65e[_0x24fc('0x1b')](_0x306873);}return _0x5cc65e[_0x24fc('0x1c')](_0x306873)[_0x24fc('0x1d')]();};}function respondWithResult(_0x326276,_0x537b5c){_0x537b5c=_0x537b5c||0xc8;return function(_0x2a0971){if(_0x2a0971){return _0x326276[_0x24fc('0x1c')](_0x537b5c)[_0x24fc('0x1e')](_0x2a0971);}};}function respondWithFilteredResult(_0x42cbe8,_0x4acd36){return function(_0x2ac989){if(_0x2ac989){var _0x588543=typeof _0x4acd36[_0x24fc('0x1f')]===_0x24fc('0x20')&&typeof _0x4acd36[_0x24fc('0x21')]===_0x24fc('0x20');var _0x25cb40=_0x2ac989['count'];var _0x23873c=_0x588543?0x0:_0x4acd36[_0x24fc('0x1f')];var _0x6cfa0a=_0x588543?_0x2ac989[_0x24fc('0x22')]:_0x4acd36['offset']+_0x4acd36[_0x24fc('0x21')];var _0x4073e0;if(_0x6cfa0a>=_0x25cb40){_0x6cfa0a=_0x25cb40;_0x4073e0=0xc8;}else{_0x4073e0=0xce;}_0x42cbe8[_0x24fc('0x1c')](_0x4073e0);return _0x42cbe8['set'](_0x24fc('0x23'),_0x23873c+'-'+_0x6cfa0a+'/'+_0x25cb40)[_0x24fc('0x1e')](_0x2ac989);}return null;};}function patchUpdates(_0xbf1d6b){return function(_0x2d0e3d){try{jsonpatch['apply'](_0x2d0e3d,_0xbf1d6b,!![]);}catch(_0x323beb){return BPromise['reject'](_0x323beb);}return _0x2d0e3d[_0x24fc('0x24')]();};}function saveUpdates(_0x591c8f,_0x3ed464){return function(_0x44c121){if(_0x44c121){return _0x44c121[_0x24fc('0x25')](_0x591c8f)['then'](function(_0x313a25){return _0x313a25;});}return null;};}function removeEntity(_0x552035,_0x35a9c7){return function(_0x2bb93a){if(_0x2bb93a){return _0x2bb93a[_0x24fc('0x26')]()[_0x24fc('0x27')](function(){var _0x3296fc=_0x2bb93a[_0x24fc('0x28')]({'plain':!![]});var _0x3f0875=_0x24fc('0x29');return db[_0x24fc('0x2a')][_0x24fc('0x26')]({'where':{'type':_0x3f0875,'resourceId':_0x3296fc['id']}})['then'](function(){return _0x2bb93a;});})[_0x24fc('0x27')](function(){_0x552035[_0x24fc('0x1c')](0xcc)[_0x24fc('0x1d')]();});}};}function handleEntityNotFound(_0x5bb4c8,_0xf2f77d){return function(_0x3d1ec8){if(!_0x3d1ec8){_0x5bb4c8[_0x24fc('0x1b')](0x194);}return _0x3d1ec8;};}function handleError(_0x290f84,_0x8f2528){_0x8f2528=_0x8f2528||0x1f4;return function(_0x443796){logger['error'](_0x443796[_0x24fc('0x2b')]);if(_0x443796[_0x24fc('0x2c')]){delete _0x443796[_0x24fc('0x2c')];}_0x290f84[_0x24fc('0x1c')](_0x8f2528)[_0x24fc('0x2d')](_0x443796);};}exports['index']=function(_0x55c27f,_0x4e6f73){var _0x3df6f4={},_0x574ba3={},_0x3f2464={'count':0x0,'rows':[]};var _0x3e6389=_[_0x24fc('0x2e')](db[_0x24fc('0x2f')]['rawAttributes'],function(_0x66eec0){return{'name':_0x66eec0[_0x24fc('0x30')],'type':_0x66eec0['type'][_0x24fc('0x31')]};});_0x574ba3[_0x24fc('0x32')]=_['map'](_0x3e6389,'name');_0x574ba3[_0x24fc('0x33')]=_['keys'](_0x55c27f[_0x24fc('0x33')]);_0x574ba3[_0x24fc('0x34')]=_['intersection'](_0x574ba3[_0x24fc('0x32')],_0x574ba3[_0x24fc('0x33')]);_0x3df6f4[_0x24fc('0x35')]=_[_0x24fc('0x36')](_0x574ba3[_0x24fc('0x32')],qs[_0x24fc('0x37')](_0x55c27f[_0x24fc('0x33')][_0x24fc('0x37')]));_0x3df6f4[_0x24fc('0x35')]=_0x3df6f4['attributes'][_0x24fc('0x38')]?_0x3df6f4[_0x24fc('0x35')]:_0x574ba3[_0x24fc('0x32')];if(!_0x55c27f[_0x24fc('0x33')][_0x24fc('0x39')]('nolimit')){_0x3df6f4['limit']=qs[_0x24fc('0x21')](_0x55c27f['query'][_0x24fc('0x21')]);_0x3df6f4[_0x24fc('0x1f')]=qs[_0x24fc('0x1f')](_0x55c27f[_0x24fc('0x33')]['offset']);}_0x3df6f4[_0x24fc('0x3a')]=qs['sort'](_0x55c27f[_0x24fc('0x33')][_0x24fc('0x3b')]);_0x3df6f4[_0x24fc('0x3c')]=qs[_0x24fc('0x34')](_[_0x24fc('0x3d')](_0x55c27f['query'],_0x574ba3[_0x24fc('0x34')]),_0x3e6389);if(_0x55c27f[_0x24fc('0x33')][_0x24fc('0x3e')]){_0x3df6f4[_0x24fc('0x3c')]=_['merge'](_0x3df6f4[_0x24fc('0x3c')],{'$or':_[_0x24fc('0x2e')](_0x3e6389,function(_0x56306e){if(_0x56306e[_0x24fc('0x3f')]!=='VIRTUAL'){var _0x320f7b={};_0x320f7b[_0x56306e[_0x24fc('0x2c')]]={'$like':'%'+_0x55c27f[_0x24fc('0x33')][_0x24fc('0x3e')]+'%'};return _0x320f7b;}})});}_0x3df6f4=_[_0x24fc('0x40')]({},_0x3df6f4,_0x55c27f[_0x24fc('0x41')]);var _0x77b959={'where':_0x3df6f4[_0x24fc('0x3c')]};return db['VoiceMail'][_0x24fc('0x22')](_0x77b959)[_0x24fc('0x27')](function(_0x32f72c){_0x3f2464['count']=_0x32f72c;if(_0x55c27f[_0x24fc('0x33')][_0x24fc('0x42')]){_0x3df6f4['include']=[{'all':!![]}];}return db[_0x24fc('0x2f')][_0x24fc('0x43')](_0x3df6f4);})[_0x24fc('0x27')](function(_0x5e4e9b){_0x3f2464[_0x24fc('0x44')]=_0x5e4e9b;return _0x3f2464;})[_0x24fc('0x27')](respondWithFilteredResult(_0x4e6f73,_0x3df6f4))['catch'](handleError(_0x4e6f73,null));};exports[_0x24fc('0x45')]=function(_0x169982,_0x158f7b){var _0x2a0ac4={'raw':!![],'where':{'id':_0x169982[_0x24fc('0x46')]['id']}},_0x4c8dad={};_0x4c8dad[_0x24fc('0x32')]=_[_0x24fc('0x47')](db[_0x24fc('0x2f')][_0x24fc('0x48')]);_0x4c8dad['query']=_[_0x24fc('0x47')](_0x169982[_0x24fc('0x33')]);_0x4c8dad[_0x24fc('0x34')]=_[_0x24fc('0x36')](_0x4c8dad['model'],_0x4c8dad[_0x24fc('0x33')]);_0x2a0ac4[_0x24fc('0x35')]=_['intersection'](_0x4c8dad['model'],qs[_0x24fc('0x37')](_0x169982['query']['fields']));_0x2a0ac4[_0x24fc('0x35')]=_0x2a0ac4['attributes'][_0x24fc('0x38')]?_0x2a0ac4[_0x24fc('0x35')]:_0x4c8dad[_0x24fc('0x32')];if(_0x169982['query'][_0x24fc('0x42')]){_0x2a0ac4[_0x24fc('0x49')]=[{'all':!![]}];}_0x2a0ac4=_[_0x24fc('0x40')]({},_0x2a0ac4,_0x169982[_0x24fc('0x41')]);return db[_0x24fc('0x2f')][_0x24fc('0x4a')](_0x2a0ac4)[_0x24fc('0x27')](handleEntityNotFound(_0x158f7b,null))[_0x24fc('0x27')](respondWithResult(_0x158f7b,null))['catch'](handleError(_0x158f7b,null));};exports['create']=function(_0x266378,_0x2f1a99){return db[_0x24fc('0x2f')]['create'](_0x266378['body'],{})[_0x24fc('0x27')](function(_0x213439){var _0x179a60=_0x266378[_0x24fc('0x4b')][_0x24fc('0x28')]({'plain':!![]});if(!_0x179a60)throw new Error(_0x24fc('0x4c'));if(_0x179a60[_0x24fc('0x4d')]===_0x24fc('0x4b')){var _0x1671b0=_0x213439[_0x24fc('0x28')]({'plain':!![]});var _0x434700=_0x24fc('0x29');return db['UserProfileSection'][_0x24fc('0x4a')]({'where':{'name':_0x434700,'userProfileId':_0x179a60[_0x24fc('0x4e')]},'raw':!![]})[_0x24fc('0x27')](function(_0xb0fc00){if(_0xb0fc00&&_0xb0fc00[_0x24fc('0x4f')]===0x0){return db['UserProfileResource'][_0x24fc('0x50')]({'name':_0x1671b0['name'],'resourceId':_0x1671b0['id'],'type':_0xb0fc00[_0x24fc('0x2c')],'sectionId':_0xb0fc00['id']},{})[_0x24fc('0x27')](function(){return _0x213439;});}else{return _0x213439;}})[_0x24fc('0x51')](function(_0x41ddfb){logger[_0x24fc('0x52')](_0x24fc('0x53'),_0x41ddfb);throw _0x41ddfb;});}return _0x213439;})['then'](respondWithResult(_0x2f1a99,0xc9))[_0x24fc('0x51')](handleError(_0x2f1a99,null));};exports[_0x24fc('0x25')]=function(_0xc49d9f,_0x31a2ef){if(_0xc49d9f[_0x24fc('0x54')]['id']){delete _0xc49d9f[_0x24fc('0x54')]['id'];}return db['VoiceMail'][_0x24fc('0x4a')]({'where':{'id':_0xc49d9f[_0x24fc('0x46')]['id']}})[_0x24fc('0x27')](handleEntityNotFound(_0x31a2ef,null))[_0x24fc('0x27')](saveUpdates(_0xc49d9f[_0x24fc('0x54')],null))[_0x24fc('0x27')](respondWithResult(_0x31a2ef,null))[_0x24fc('0x51')](handleError(_0x31a2ef,null));};exports['destroy']=function(_0xd673f8,_0x11690f){return db['VoiceMail'][_0x24fc('0x4a')]({'where':{'id':_0xd673f8[_0x24fc('0x46')]['id']}})[_0x24fc('0x27')](handleEntityNotFound(_0x11690f,null))[_0x24fc('0x27')](removeEntity(_0x11690f,null))[_0x24fc('0x51')](handleError(_0x11690f,null));};exports[_0x24fc('0x55')]=function(_0x50302e,_0x28a44c,_0x4a0524){return db[_0x24fc('0x2f')][_0x24fc('0x56')]({'where':{'id':_0x50302e['params']['id']}})[_0x24fc('0x27')](handleEntityNotFound(_0x28a44c,null))['then'](function(_0x1c1f74){var _0x595c47;var _0xdff811={},_0x27b612={};_0x27b612['model']=_[_0x24fc('0x47')](db['VoiceMailMessage'][_0x24fc('0x48')]);_0x27b612[_0x24fc('0x33')]=_['keys'](_0x50302e[_0x24fc('0x33')]);_0x27b612[_0x24fc('0x34')]=_[_0x24fc('0x36')](_0x27b612[_0x24fc('0x32')],_0x27b612[_0x24fc('0x33')]);_0xdff811['attributes']=_[_0x24fc('0x36')](_0x27b612[_0x24fc('0x32')],qs[_0x24fc('0x37')](_0x50302e[_0x24fc('0x33')][_0x24fc('0x37')]));_0xdff811['attributes']=_0xdff811['attributes'][_0x24fc('0x38')]?_0xdff811[_0x24fc('0x35')]:_0x27b612['model'];if(!_0x50302e['query'][_0x24fc('0x39')](_0x24fc('0x57'))){_0xdff811[_0x24fc('0x21')]=qs[_0x24fc('0x21')](_0x50302e['query'][_0x24fc('0x21')]);_0xdff811[_0x24fc('0x1f')]=qs[_0x24fc('0x1f')](_0x50302e[_0x24fc('0x33')][_0x24fc('0x1f')]);}_0xdff811[_0x24fc('0x3a')]=qs[_0x24fc('0x3b')](_0x50302e[_0x24fc('0x33')][_0x24fc('0x3b')]);_0xdff811[_0x24fc('0x3c')]=qs[_0x24fc('0x34')](_[_0x24fc('0x3d')](_0x50302e[_0x24fc('0x33')],_0x27b612[_0x24fc('0x34')]));if(_0x50302e[_0x24fc('0x33')]['filter']){_0xdff811[_0x24fc('0x3c')]=_[_0x24fc('0x40')](_0xdff811[_0x24fc('0x3c')],{'$or':_[_0x24fc('0x2e')](_0xdff811[_0x24fc('0x35')],function(_0x2eb6dc){var _0x10d148={};_0x10d148[_0x2eb6dc]={'$like':'%'+_0x50302e[_0x24fc('0x33')]['filter']+'%'};return _0x10d148;})});}_0xdff811[_0x24fc('0x3c')]=_[_0x24fc('0x40')](_0xdff811[_0x24fc('0x3c')],{'mailboxuser':_0x1c1f74[_0x24fc('0x58')]});_0xdff811=_['merge']({},_0xdff811,_0x50302e[_0x24fc('0x41')]);return db[_0x24fc('0x59')]['findAndCountAll'](_0xdff811)['then'](respondWithFilteredResult(_0x28a44c,_0xdff811));})['catch'](handleError(_0x28a44c,null));};
\ No newline at end of file
index f21706b..5040fa9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa2a4=['bluebird','request-promise','path','exports','define','VoiceMail','mailbox_context','mailbox','context','lodash','util','../../config/logger','api'];(function(_0x54b75c,_0x2d3b45){var _0x4ac0e2=function(_0x1e7a59){while(--_0x1e7a59){_0x54b75c['push'](_0x54b75c['shift']());}};_0x4ac0e2(++_0x2d3b45);}(_0xa2a4,0xe6));var _0x4a2a=function(_0xcdb7aa,_0x23732e){_0xcdb7aa=_0xcdb7aa-0x0;var _0xe88a50=_0xa2a4[_0xcdb7aa];return _0xe88a50;};'use strict';var _=require(_0x4a2a('0x0'));var util=require(_0x4a2a('0x1'));var logger=require(_0x4a2a('0x2'))(_0x4a2a('0x3'));var moment=require('moment');var BPromise=require(_0x4a2a('0x4'));var rp=require(_0x4a2a('0x5'));var fs=require('fs');var path=require(_0x4a2a('0x6'));var rimraf=require('rimraf');var config=require('../../config/environment');var attributes=require('./voiceMail.attributes');module[_0x4a2a('0x7')]=function(_0x22bff7,_0x180738){return _0x22bff7[_0x4a2a('0x8')](_0x4a2a('0x9'),attributes,{'tableName':'voice_voicemail','paranoid':![],'indexes':[{'name':_0x4a2a('0xa'),'fields':[_0x4a2a('0xb'),_0x4a2a('0xc')]}],'timestamps':!![]});};
\ No newline at end of file
+var _0xab10=['rimraf','./voiceMail.attributes','define','VoiceMail','voice_voicemail','mailbox_context','mailbox','context','lodash','util','../../config/logger','api','moment','bluebird','request-promise'];(function(_0x469899,_0x87f311){var _0x4b0b6b=function(_0x1f7ac1){while(--_0x1f7ac1){_0x469899['push'](_0x469899['shift']());}};_0x4b0b6b(++_0x87f311);}(_0xab10,0x125));var _0x0ab1=function(_0x3d6f0f,_0x551565){_0x3d6f0f=_0x3d6f0f-0x0;var _0x1a4fff=_0xab10[_0x3d6f0f];return _0x1a4fff;};'use strict';var _=require(_0x0ab1('0x0'));var util=require(_0x0ab1('0x1'));var logger=require(_0x0ab1('0x2'))(_0x0ab1('0x3'));var moment=require(_0x0ab1('0x4'));var BPromise=require(_0x0ab1('0x5'));var rp=require(_0x0ab1('0x6'));var fs=require('fs');var path=require('path');var rimraf=require(_0x0ab1('0x7'));var config=require('../../config/environment');var attributes=require(_0x0ab1('0x8'));module['exports']=function(_0x42634e,_0x15a20f){return _0x42634e[_0x0ab1('0x9')](_0x0ab1('0xa'),attributes,{'tableName':_0x0ab1('0xb'),'paranoid':![],'indexes':[{'name':_0x0ab1('0xc'),'fields':[_0x0ab1('0xd'),_0x0ab1('0xe')]}],'timestamps':!![]});};
\ No newline at end of file
index 0bd6b70..93f74ef 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4529=['error','code','VoiceMail,\x20%s,\x20%s','message','result','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/environment','jayson/promise','http','request','info','debug','VoiceMail,\x20%s,\x20%s,\x20%s','request\x20sent','stringify'];(function(_0x9d639c,_0x524dbe){var _0x1671de=function(_0x27888e){while(--_0x27888e){_0x9d639c['push'](_0x9d639c['shift']());}};_0x1671de(++_0x524dbe);}(_0x4529,0xf7));var _0x9452=function(_0x8527b0,_0x6ef0d5){_0x8527b0=_0x8527b0-0x0;var _0x34d3fd=_0x4529[_0x8527b0];return _0x34d3fd;};'use strict';var _=require(_0x9452('0x0'));var util=require(_0x9452('0x1'));var moment=require(_0x9452('0x2'));var BPromise=require(_0x9452('0x3'));var rs=require(_0x9452('0x4'));var fs=require('fs');var Redis=require(_0x9452('0x5'));var db=require(_0x9452('0x6'))['db'];var utils=require(_0x9452('0x7'));var logger=require('../../config/logger')('rpc');var config=require(_0x9452('0x8'));var jayson=require(_0x9452('0x9'));var client=jayson['client'][_0x9452('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x2d2425,_0x432645,_0x3cb178){return new BPromise(function(_0x45958c,_0x4f35db){return client[_0x9452('0xb')](_0x2d2425,_0x3cb178)['then'](function(_0xa9f001){logger[_0x9452('0xc')]('VoiceMail,\x20%s,\x20%s',_0x432645,'request\x20sent');logger[_0x9452('0xd')](_0x9452('0xe'),_0x432645,_0x9452('0xf'),JSON[_0x9452('0x10')](_0xa9f001));if(_0xa9f001[_0x9452('0x11')]){if(_0xa9f001[_0x9452('0x11')][_0x9452('0x12')]===0x1f4){logger[_0x9452('0x11')](_0x9452('0x13'),_0x432645,_0xa9f001[_0x9452('0x11')][_0x9452('0x14')]);return _0x4f35db(_0xa9f001[_0x9452('0x11')]['message']);}logger[_0x9452('0x11')](_0x9452('0x13'),_0x432645,_0xa9f001[_0x9452('0x11')][_0x9452('0x14')]);return _0x45958c(_0xa9f001['error'][_0x9452('0x14')]);}else{logger[_0x9452('0xc')]('VoiceMail,\x20%s,\x20%s',_0x432645,_0x9452('0xf'));_0x45958c(_0xa9f001[_0x9452('0x15')]['message']);}})['catch'](function(_0x26a552){logger[_0x9452('0x11')](_0x9452('0x13'),_0x432645,_0x26a552);_0x4f35db(_0x26a552);});});}
\ No newline at end of file
+var _0x6bac=['request\x20sent','debug','VoiceMail,\x20%s,\x20%s,\x20%s','error','code','message','result','catch','lodash','moment','bluebird','randomstring','../../mysqldb','../../config/logger','rpc','../../config/environment','jayson/promise','http','request','then','info','VoiceMail,\x20%s,\x20%s'];(function(_0x473d1e,_0x4df799){var _0x503be9=function(_0x4bcfff){while(--_0x4bcfff){_0x473d1e['push'](_0x473d1e['shift']());}};_0x503be9(++_0x4df799);}(_0x6bac,0x1d6));var _0xc6ba=function(_0xc9082b,_0x506bfd){_0xc9082b=_0xc9082b-0x0;var _0x28919e=_0x6bac[_0xc9082b];return _0x28919e;};'use strict';var _=require(_0xc6ba('0x0'));var util=require('util');var moment=require(_0xc6ba('0x1'));var BPromise=require(_0xc6ba('0x2'));var rs=require(_0xc6ba('0x3'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0xc6ba('0x4'))['db'];var utils=require('../../config/utils');var logger=require(_0xc6ba('0x5'))(_0xc6ba('0x6'));var config=require(_0xc6ba('0x7'));var jayson=require(_0xc6ba('0x8'));var client=jayson['client'][_0xc6ba('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x3431fd,_0x281144,_0x69f927){return new BPromise(function(_0x4cd54a,_0x4a09ff){return client[_0xc6ba('0xa')](_0x3431fd,_0x69f927)[_0xc6ba('0xb')](function(_0x39acec){logger[_0xc6ba('0xc')](_0xc6ba('0xd'),_0x281144,_0xc6ba('0xe'));logger[_0xc6ba('0xf')](_0xc6ba('0x10'),_0x281144,_0xc6ba('0xe'),JSON['stringify'](_0x39acec));if(_0x39acec[_0xc6ba('0x11')]){if(_0x39acec['error'][_0xc6ba('0x12')]===0x1f4){logger[_0xc6ba('0x11')](_0xc6ba('0xd'),_0x281144,_0x39acec[_0xc6ba('0x11')][_0xc6ba('0x13')]);return _0x4a09ff(_0x39acec[_0xc6ba('0x11')]['message']);}logger['error'](_0xc6ba('0xd'),_0x281144,_0x39acec['error'][_0xc6ba('0x13')]);return _0x4cd54a(_0x39acec['error'][_0xc6ba('0x13')]);}else{logger[_0xc6ba('0xc')]('VoiceMail,\x20%s,\x20%s',_0x281144,'request\x20sent');_0x4cd54a(_0x39acec[_0xc6ba('0x14')][_0xc6ba('0x13')]);}})[_0xc6ba('0x15')](function(_0x4bfbfa){logger[_0xc6ba('0x11')](_0xc6ba('0xd'),_0x281144,_0x4bfbfa);_0x4a09ff(_0x4bfbfa);});});}
\ No newline at end of file
index e2b8b52..b8e8a09 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8491=['/:id/download','post','create','update','delete','exports','multer','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','get','isAuthenticated','index','/:id','show'];(function(_0x29f7e2,_0x3e30f6){var _0x3a81e6=function(_0x4f16f7){while(--_0x4f16f7){_0x29f7e2['push'](_0x29f7e2['shift']());}};_0x3a81e6(++_0x3e30f6);}(_0x8491,0x1aa));var _0x1849=function(_0x45783c,_0x49c56d){_0x45783c=_0x45783c-0x0;var _0x1161da=_0x8491[_0x45783c];return _0x1161da;};'use strict';var multer=require(_0x1849('0x0'));var util=require(_0x1849('0x1'));var path=require(_0x1849('0x2'));var timeout=require(_0x1849('0x3'));var express=require(_0x1849('0x4'));var router=express[_0x1849('0x5')]();var fs_extra=require(_0x1849('0x6'));var auth=require(_0x1849('0x7'));var interaction=require(_0x1849('0x8'));var config=require('../../config/environment');var controller=require('./voiceMailMessage.controller');router[_0x1849('0x9')]('/',auth[_0x1849('0xa')](),controller[_0x1849('0xb')]);router[_0x1849('0x9')](_0x1849('0xc'),auth[_0x1849('0xa')](),controller[_0x1849('0xd')]);router[_0x1849('0x9')](_0x1849('0xe'),auth['isAuthenticated'](),controller['download']);router[_0x1849('0xf')]('/',auth[_0x1849('0xa')](),controller[_0x1849('0x10')]);router['put'](_0x1849('0xc'),auth[_0x1849('0xa')](),controller[_0x1849('0x11')]);router[_0x1849('0x12')]('/:id',auth[_0x1849('0xa')](),controller['destroy']);module[_0x1849('0x13')]=router;
\ No newline at end of file
+var _0xc83b=['post','put','update','delete','destroy','exports','multer','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./voiceMailMessage.controller','get','isAuthenticated','/:id','show','download'];(function(_0x3990af,_0x28dfc6){var _0x259474=function(_0x4c38f3){while(--_0x4c38f3){_0x3990af['push'](_0x3990af['shift']());}};_0x259474(++_0x28dfc6);}(_0xc83b,0x1d4));var _0xbc83=function(_0x5ea81f,_0x465b4e){_0x5ea81f=_0x5ea81f-0x0;var _0x38fbcc=_0xc83b[_0x5ea81f];return _0x38fbcc;};'use strict';var multer=require(_0xbc83('0x0'));var util=require('util');var path=require(_0xbc83('0x1'));var timeout=require(_0xbc83('0x2'));var express=require(_0xbc83('0x3'));var router=express[_0xbc83('0x4')]();var fs_extra=require(_0xbc83('0x5'));var auth=require(_0xbc83('0x6'));var interaction=require(_0xbc83('0x7'));var config=require(_0xbc83('0x8'));var controller=require(_0xbc83('0x9'));router[_0xbc83('0xa')]('/',auth[_0xbc83('0xb')](),controller['index']);router['get'](_0xbc83('0xc'),auth['isAuthenticated'](),controller[_0xbc83('0xd')]);router[_0xbc83('0xa')]('/:id/download',auth[_0xbc83('0xb')](),controller[_0xbc83('0xe')]);router[_0xbc83('0xf')]('/',auth[_0xbc83('0xb')](),controller['create']);router[_0xbc83('0x10')]('/:id',auth[_0xbc83('0xb')](),controller[_0xbc83('0x11')]);router[_0xbc83('0x12')](_0xbc83('0xc'),auth['isAuthenticated'](),controller[_0xbc83('0x13')]);module[_0xbc83('0x14')]=router;
\ No newline at end of file
index b56f177..3682548 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8260=['exports','VIRTUAL','getDataValue','INTEGER','STRING','BLOB','TIMESTAMP','literal','sequelize'];(function(_0x230896,_0x2294fb){var _0x2e549f=function(_0xac9513){while(--_0xac9513){_0x230896['push'](_0x230896['shift']());}};_0x2e549f(++_0x2294fb);}(_0x8260,0x128));var _0x0826=function(_0x310d56,_0x581328){_0x310d56=_0x310d56-0x0;var _0x8759c7=_0x8260[_0x310d56];return _0x8759c7;};'use strict';var Sequelize=require(_0x0826('0x0'));module[_0x0826('0x1')]={'name':{'type':Sequelize[_0x0826('0x2')],'get':function(_0x3953ff){return this[_0x0826('0x3')]('id');}},'msgnum':{'type':Sequelize[_0x0826('0x4')](0xb),'defaultValue':0x0,'allowNull':![]},'dir':{'type':Sequelize['STRING'],'defaultValue':''},'context':{'type':Sequelize[_0x0826('0x5')],'defaultValue':''},'macrocontext':{'type':Sequelize[_0x0826('0x5')],'defaultValue':''},'callerid':{'type':Sequelize[_0x0826('0x5')],'defaultValue':''},'origtime':{'type':Sequelize['STRING'],'defaultValue':''},'duration':{'type':Sequelize[_0x0826('0x5')],'defaultValue':''},'mailboxuser':{'type':Sequelize['STRING'],'defaultValue':''},'mailboxcontext':{'type':Sequelize[_0x0826('0x5')],'defaultValue':''},'recording':{'type':Sequelize[_0x0826('0x6')]('long'),'defaultValue':null},'flag':{'type':Sequelize[_0x0826('0x5')],'defaultValue':''},'msg_id':{'type':Sequelize[_0x0826('0x5')],'defaultValue':''},'stamp':{'type':_0x0826('0x7'),'defaultValue':Sequelize[_0x0826('0x8')]('CURRENT_TIMESTAMP\x20ON\x20UPDATE\x20CURRENT_TIMESTAMP')}};
\ No newline at end of file
+var _0xc215=['INTEGER','STRING','BLOB','long','TIMESTAMP','literal','CURRENT_TIMESTAMP\x20ON\x20UPDATE\x20CURRENT_TIMESTAMP','sequelize','exports','VIRTUAL'];(function(_0x4ac32e,_0x60ea80){var _0x30f0d4=function(_0x30ce62){while(--_0x30ce62){_0x4ac32e['push'](_0x4ac32e['shift']());}};_0x30f0d4(++_0x60ea80);}(_0xc215,0x129));var _0x5c21=function(_0x19e35c,_0x29cd1e){_0x19e35c=_0x19e35c-0x0;var _0x3e1fe8=_0xc215[_0x19e35c];return _0x3e1fe8;};'use strict';var Sequelize=require(_0x5c21('0x0'));module[_0x5c21('0x1')]={'name':{'type':Sequelize[_0x5c21('0x2')],'get':function(_0x85079f){return this['getDataValue']('id');}},'msgnum':{'type':Sequelize[_0x5c21('0x3')](0xb),'defaultValue':0x0,'allowNull':![]},'dir':{'type':Sequelize[_0x5c21('0x4')],'defaultValue':''},'context':{'type':Sequelize[_0x5c21('0x4')],'defaultValue':''},'macrocontext':{'type':Sequelize[_0x5c21('0x4')],'defaultValue':''},'callerid':{'type':Sequelize[_0x5c21('0x4')],'defaultValue':''},'origtime':{'type':Sequelize['STRING'],'defaultValue':''},'duration':{'type':Sequelize['STRING'],'defaultValue':''},'mailboxuser':{'type':Sequelize[_0x5c21('0x4')],'defaultValue':''},'mailboxcontext':{'type':Sequelize[_0x5c21('0x4')],'defaultValue':''},'recording':{'type':Sequelize[_0x5c21('0x5')](_0x5c21('0x6')),'defaultValue':null},'flag':{'type':Sequelize[_0x5c21('0x4')],'defaultValue':''},'msg_id':{'type':Sequelize[_0x5c21('0x4')],'defaultValue':''},'stamp':{'type':_0x5c21('0x7'),'defaultValue':Sequelize[_0x5c21('0x8')](_0x5c21('0x9'))}};
\ No newline at end of file
index 6fe7010..68e2def 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd79b=['find','catch','create','body','recording','Sequelize','ValidationError','VoiceMailMessage\x20not\x20found','audio/wav','attachment','msg_id','attachment;\x20filename=\x22','eml-format','fast-json-patch','request-promise','bluebird','mustache','util','sox','to-csv','ejs','lodash','squel','crypto','jsforce','desk.js','papaparse','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../mysqldb','sendStatus','status','json','offset','undefined','count','limit','set','Content-Range','reject','update','then','destroy','end','error','stack','send','index','map','VoiceMailMessage','rawAttributes','fieldName','type','key','model','name','keys','query','filters','intersection','fields','attributes','length','hasOwnProperty','nolimit','order','sort','where','pick','filter','merge','VIRTUAL','options','findAll','rows','params'];(function(_0x1bb6aa,_0x40fe82){var _0x2ef28e=function(_0x32b4eb){while(--_0x32b4eb){_0x1bb6aa['push'](_0x1bb6aa['shift']());}};_0x2ef28e(++_0x40fe82);}(_0xd79b,0x1a1));var _0xbd79=function(_0xe66b90,_0x234632){_0xe66b90=_0xe66b90-0x0;var _0x104441=_0xd79b[_0xe66b90];return _0x104441;};'use strict';var emlformat=require(_0xbd79('0x0'));var rimraf=require('rimraf');var zipdir=require('zip-dir');var jsonpatch=require(_0xbd79('0x1'));var rp=require(_0xbd79('0x2'));var moment=require('moment');var BPromise=require(_0xbd79('0x3'));var Mustache=require(_0xbd79('0x4'));var util=require(_0xbd79('0x5'));var path=require('path');var sox=require(_0xbd79('0x6'));var csv=require(_0xbd79('0x7'));var ejs=require(_0xbd79('0x8'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0xbd79('0x9'));var squel=require(_0xbd79('0xa'));var crypto=require(_0xbd79('0xb'));var jsforce=require(_0xbd79('0xc'));var deskjs=require(_0xbd79('0xd'));var toCsv=require(_0xbd79('0x7'));var querystring=require('querystring');var Papa=require(_0xbd79('0xe'));var Redis=require('ioredis');var authService=require(_0xbd79('0xf'));var qs=require(_0xbd79('0x10'));var as=require(_0xbd79('0x11'));var hardwareService=require(_0xbd79('0x12'));var logger=require(_0xbd79('0x13'))(_0xbd79('0x14'));var utils=require(_0xbd79('0x15'));var config=require('../../config/environment');var licenseUtil=require('../../config/license/util');var db=require(_0xbd79('0x16'))['db'];function respondWithStatusCode(_0xc61f5c,_0xb35030){_0xb35030=_0xb35030||0xcc;return function(_0x2a2e6a){if(_0x2a2e6a){return _0xc61f5c[_0xbd79('0x17')](_0xb35030);}return _0xc61f5c[_0xbd79('0x18')](_0xb35030)['end']();};}function respondWithResult(_0x4b81df,_0x34e239){_0x34e239=_0x34e239||0xc8;return function(_0x327cf6){if(_0x327cf6){return _0x4b81df[_0xbd79('0x18')](_0x34e239)[_0xbd79('0x19')](_0x327cf6);}};}function respondWithFilteredResult(_0x3d32e6,_0x263b1e){return function(_0x2a9c4a){if(_0x2a9c4a){var _0x5acbc9=typeof _0x263b1e[_0xbd79('0x1a')]===_0xbd79('0x1b')&&typeof _0x263b1e['limit']===_0xbd79('0x1b');var _0x3a7ebd=_0x2a9c4a[_0xbd79('0x1c')];var _0x392cd8=_0x5acbc9?0x0:_0x263b1e[_0xbd79('0x1a')];var _0x300fba=_0x5acbc9?_0x2a9c4a['count']:_0x263b1e[_0xbd79('0x1a')]+_0x263b1e[_0xbd79('0x1d')];var _0x1437d6;if(_0x300fba>=_0x3a7ebd){_0x300fba=_0x3a7ebd;_0x1437d6=0xc8;}else{_0x1437d6=0xce;}_0x3d32e6[_0xbd79('0x18')](_0x1437d6);return _0x3d32e6[_0xbd79('0x1e')](_0xbd79('0x1f'),_0x392cd8+'-'+_0x300fba+'/'+_0x3a7ebd)[_0xbd79('0x19')](_0x2a9c4a);}return null;};}function patchUpdates(_0x588947){return function(_0x195595){try{jsonpatch['apply'](_0x195595,_0x588947,!![]);}catch(_0x21ae7d){return BPromise[_0xbd79('0x20')](_0x21ae7d);}return _0x195595['save']();};}function saveUpdates(_0x36dfd6,_0x2d8dd3){return function(_0x301b08){if(_0x301b08){return _0x301b08[_0xbd79('0x21')](_0x36dfd6)[_0xbd79('0x22')](function(_0x21bec0){return _0x21bec0;});}return null;};}function removeEntity(_0x4724ae,_0x1e8933){return function(_0x33c92e){if(_0x33c92e){return _0x33c92e[_0xbd79('0x23')]()[_0xbd79('0x22')](function(){_0x4724ae[_0xbd79('0x18')](0xcc)[_0xbd79('0x24')]();});}};}function handleEntityNotFound(_0x1e4915,_0x77f068){return function(_0x1f2942){if(!_0x1f2942){_0x1e4915[_0xbd79('0x17')](0x194);}return _0x1f2942;};}function handleError(_0x21c0b7,_0x1580b0){_0x1580b0=_0x1580b0||0x1f4;return function(_0x4393f4){logger[_0xbd79('0x25')](_0x4393f4[_0xbd79('0x26')]);if(_0x4393f4['name']){delete _0x4393f4['name'];}_0x21c0b7[_0xbd79('0x18')](_0x1580b0)[_0xbd79('0x27')](_0x4393f4);};}exports[_0xbd79('0x28')]=function(_0xd8f948,_0x317ede){var _0x4df989={},_0x160f9d={},_0x2f7ae6={'count':0x0,'rows':[]};var _0x281ba8=_[_0xbd79('0x29')](db[_0xbd79('0x2a')][_0xbd79('0x2b')],function(_0x17fff1){return{'name':_0x17fff1[_0xbd79('0x2c')],'type':_0x17fff1[_0xbd79('0x2d')][_0xbd79('0x2e')]};});_0x160f9d[_0xbd79('0x2f')]=_['differenceBy'](_[_0xbd79('0x29')](_0x281ba8,_0xbd79('0x30')),['name']);_0x160f9d['query']=_[_0xbd79('0x31')](_0xd8f948[_0xbd79('0x32')]);_0x160f9d[_0xbd79('0x33')]=_['intersection'](_0x160f9d[_0xbd79('0x2f')],_0x160f9d['query']);_0x4df989['attributes']=_[_0xbd79('0x34')](_0x160f9d[_0xbd79('0x2f')],qs['fields'](_0xd8f948[_0xbd79('0x32')][_0xbd79('0x35')]));_0x4df989[_0xbd79('0x36')]=_0x4df989[_0xbd79('0x36')][_0xbd79('0x37')]?_0x4df989['attributes']:_0x160f9d[_0xbd79('0x2f')];if(!_0xd8f948['query'][_0xbd79('0x38')](_0xbd79('0x39'))){_0x4df989[_0xbd79('0x1d')]=qs[_0xbd79('0x1d')](_0xd8f948['query']['limit']);_0x4df989[_0xbd79('0x1a')]=qs[_0xbd79('0x1a')](_0xd8f948[_0xbd79('0x32')]['offset']);}_0x4df989[_0xbd79('0x3a')]=qs[_0xbd79('0x3b')](_0xd8f948[_0xbd79('0x32')]['sort']);_0x4df989[_0xbd79('0x3c')]=qs[_0xbd79('0x33')](_[_0xbd79('0x3d')](_0xd8f948[_0xbd79('0x32')],_0x160f9d[_0xbd79('0x33')]),_0x281ba8);if(_0xd8f948[_0xbd79('0x32')][_0xbd79('0x3e')]){_0x4df989[_0xbd79('0x3c')]=_[_0xbd79('0x3f')](_0x4df989[_0xbd79('0x3c')],{'$or':_[_0xbd79('0x29')](_0x281ba8,function(_0x172246){if(_0x172246['type']!==_0xbd79('0x40')){var _0x13e3d5={};_0x13e3d5[_0x172246['name']]={'$like':'%'+_0xd8f948[_0xbd79('0x32')][_0xbd79('0x3e')]+'%'};return _0x13e3d5;}})});}_0x4df989=_[_0xbd79('0x3f')]({},_0x4df989,_0xd8f948[_0xbd79('0x41')]);var _0x11f82f={'where':_0x4df989['where']};return db[_0xbd79('0x2a')][_0xbd79('0x1c')](_0x11f82f)[_0xbd79('0x22')](function(_0x1f5029){_0x2f7ae6[_0xbd79('0x1c')]=_0x1f5029;if(_0xd8f948[_0xbd79('0x32')]['includeAll']){_0x4df989['include']=[{'all':!![]}];}return db['VoiceMailMessage'][_0xbd79('0x42')](_0x4df989);})[_0xbd79('0x22')](function(_0x3f2272){_0x2f7ae6[_0xbd79('0x43')]=_0x3f2272;return _0x2f7ae6;})[_0xbd79('0x22')](respondWithFilteredResult(_0x317ede,_0x4df989))['catch'](handleError(_0x317ede,null));};exports['show']=function(_0xc1873b,_0x176535){var _0x3d465f={'raw':!![],'where':{'id':_0xc1873b[_0xbd79('0x44')]['id']}},_0x3f1e0f={};_0x3f1e0f['model']=_[_0xbd79('0x31')](db[_0xbd79('0x2a')][_0xbd79('0x2b')]);_0x3f1e0f['query']=_[_0xbd79('0x31')](_0xc1873b[_0xbd79('0x32')]);_0x3f1e0f[_0xbd79('0x33')]=_[_0xbd79('0x34')](_0x3f1e0f['model'],_0x3f1e0f['query']);_0x3d465f[_0xbd79('0x36')]=_[_0xbd79('0x34')](_0x3f1e0f[_0xbd79('0x2f')],qs[_0xbd79('0x35')](_0xc1873b[_0xbd79('0x32')][_0xbd79('0x35')]));_0x3d465f[_0xbd79('0x36')]=_0x3d465f[_0xbd79('0x36')][_0xbd79('0x37')]?_0x3d465f['attributes']:_0x3f1e0f[_0xbd79('0x2f')];if(_0xc1873b['query']['includeAll']){_0x3d465f['include']=[{'all':!![]}];}_0x3d465f=_['merge']({},_0x3d465f,_0xc1873b['options']);return db[_0xbd79('0x2a')][_0xbd79('0x45')](_0x3d465f)['then'](handleEntityNotFound(_0x176535,null))[_0xbd79('0x22')](respondWithResult(_0x176535,null))[_0xbd79('0x46')](handleError(_0x176535,null));};exports[_0xbd79('0x47')]=function(_0x528c27,_0x496816){return db[_0xbd79('0x2a')][_0xbd79('0x47')](_0x528c27[_0xbd79('0x48')],{})['then'](respondWithResult(_0x496816,0xc9))[_0xbd79('0x46')](handleError(_0x496816,null));};exports['update']=function(_0x19d82c,_0xa69aa3){if(_0x19d82c[_0xbd79('0x48')]['id']){delete _0x19d82c[_0xbd79('0x48')]['id'];}return db[_0xbd79('0x2a')]['find']({'where':{'id':_0x19d82c[_0xbd79('0x44')]['id']}})[_0xbd79('0x22')](handleEntityNotFound(_0xa69aa3,null))[_0xbd79('0x22')](saveUpdates(_0x19d82c[_0xbd79('0x48')],null))[_0xbd79('0x22')](respondWithResult(_0xa69aa3,null))['catch'](handleError(_0xa69aa3,null));};exports[_0xbd79('0x23')]=function(_0x128631,_0x260211){return db[_0xbd79('0x2a')][_0xbd79('0x45')]({'where':{'id':_0x128631[_0xbd79('0x44')]['id']}})[_0xbd79('0x22')](handleEntityNotFound(_0x260211,null))[_0xbd79('0x22')](removeEntity(_0x260211,null))[_0xbd79('0x46')](handleError(_0x260211,null));};exports['download']=function(_0x438ef4,_0x1430af,_0x52e765){return db['VoiceMailMessage'][_0xbd79('0x45')]({'where':{'id':_0x438ef4[_0xbd79('0x44')]['id']},'attributes':['id',_0xbd79('0x49'),'msg_id']})[_0xbd79('0x22')](handleEntityNotFound(_0x1430af,null))[_0xbd79('0x22')](function(_0x17f71e){if(_0x17f71e){if(!_0x17f71e[_0xbd79('0x49')]){throw new db[(_0xbd79('0x4a'))][(_0xbd79('0x4b'))](_0xbd79('0x4c'));}var _0x284a81={'Content-Type':_0xbd79('0x4d'),'Content-Disposition':_0xbd79('0x4e')};if(_0x17f71e[_0xbd79('0x4f')]){_0x284a81['Content-Disposition']=_0xbd79('0x50')+_0x17f71e[_0xbd79('0x4f')]+'.wav\x22';}_0x1430af[_0xbd79('0x1e')](_0x284a81);return _0x1430af[_0xbd79('0x27')](new Buffer(_0x17f71e[_0xbd79('0x49')]));}})[_0xbd79('0x46')](handleError(_0x1430af,null));};
\ No newline at end of file
+var _0x2ac4=['mustache','util','path','ejs','lodash','crypto','jsforce','desk.js','to-csv','querystring','papaparse','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','status','end','offset','undefined','limit','count','Content-Range','json','save','update','then','destroy','error','stack','name','send','map','rawAttributes','type','key','differenceBy','query','keys','model','attributes','intersection','fields','length','nolimit','order','sort','filters','pick','filter','where','merge','options','includeAll','include','VoiceMailMessage','findAll','rows','catch','show','params','body','find','msg_id','recording','Sequelize','ValidationError','VoiceMailMessage\x20not\x20found','audio/wav','attachment','attachment;\x20filename=\x22','.wav\x22','set','rimraf','zip-dir','fast-json-patch','bluebird'];(function(_0x4e6fb2,_0x3cf23e){var _0x2f1636=function(_0x53c7eb){while(--_0x53c7eb){_0x4e6fb2['push'](_0x4e6fb2['shift']());}};_0x2f1636(++_0x3cf23e);}(_0x2ac4,0x13c));var _0x42ac=function(_0x443520,_0x2fe333){_0x443520=_0x443520-0x0;var _0x20afa5=_0x2ac4[_0x443520];return _0x20afa5;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x42ac('0x0'));var zipdir=require(_0x42ac('0x1'));var jsonpatch=require(_0x42ac('0x2'));var rp=require('request-promise');var moment=require('moment');var BPromise=require(_0x42ac('0x3'));var Mustache=require(_0x42ac('0x4'));var util=require(_0x42ac('0x5'));var path=require(_0x42ac('0x6'));var sox=require('sox');var csv=require('to-csv');var ejs=require(_0x42ac('0x7'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x42ac('0x8'));var squel=require('squel');var crypto=require(_0x42ac('0x9'));var jsforce=require(_0x42ac('0xa'));var deskjs=require(_0x42ac('0xb'));var toCsv=require(_0x42ac('0xc'));var querystring=require(_0x42ac('0xd'));var Papa=require(_0x42ac('0xe'));var Redis=require('ioredis');var authService=require('../../components/auth/service');var qs=require(_0x42ac('0xf'));var as=require(_0x42ac('0x10'));var hardwareService=require(_0x42ac('0x11'));var logger=require('../../config/logger')(_0x42ac('0x12'));var utils=require(_0x42ac('0x13'));var config=require(_0x42ac('0x14'));var licenseUtil=require(_0x42ac('0x15'));var db=require(_0x42ac('0x16'))['db'];function respondWithStatusCode(_0x5dc76f,_0x1f49cc){_0x1f49cc=_0x1f49cc||0xcc;return function(_0x2df346){if(_0x2df346){return _0x5dc76f['sendStatus'](_0x1f49cc);}return _0x5dc76f[_0x42ac('0x17')](_0x1f49cc)[_0x42ac('0x18')]();};}function respondWithResult(_0x45ac03,_0x161037){_0x161037=_0x161037||0xc8;return function(_0x214788){if(_0x214788){return _0x45ac03[_0x42ac('0x17')](_0x161037)['json'](_0x214788);}};}function respondWithFilteredResult(_0x438369,_0x287aa5){return function(_0x4ef153){if(_0x4ef153){var _0x1c76c8=typeof _0x287aa5[_0x42ac('0x19')]===_0x42ac('0x1a')&&typeof _0x287aa5[_0x42ac('0x1b')]===_0x42ac('0x1a');var _0x556b8e=_0x4ef153[_0x42ac('0x1c')];var _0x81caa4=_0x1c76c8?0x0:_0x287aa5['offset'];var _0x5d92ca=_0x1c76c8?_0x4ef153['count']:_0x287aa5[_0x42ac('0x19')]+_0x287aa5['limit'];var _0x55173e;if(_0x5d92ca>=_0x556b8e){_0x5d92ca=_0x556b8e;_0x55173e=0xc8;}else{_0x55173e=0xce;}_0x438369[_0x42ac('0x17')](_0x55173e);return _0x438369['set'](_0x42ac('0x1d'),_0x81caa4+'-'+_0x5d92ca+'/'+_0x556b8e)[_0x42ac('0x1e')](_0x4ef153);}return null;};}function patchUpdates(_0x13f2b5){return function(_0x10ba5f){try{jsonpatch['apply'](_0x10ba5f,_0x13f2b5,!![]);}catch(_0x5f1628){return BPromise['reject'](_0x5f1628);}return _0x10ba5f[_0x42ac('0x1f')]();};}function saveUpdates(_0x3a2ed0,_0x4e798b){return function(_0x11b2a8){if(_0x11b2a8){return _0x11b2a8[_0x42ac('0x20')](_0x3a2ed0)[_0x42ac('0x21')](function(_0x1d2546){return _0x1d2546;});}return null;};}function removeEntity(_0x33ea9f,_0x4e87f1){return function(_0x42fac5){if(_0x42fac5){return _0x42fac5[_0x42ac('0x22')]()[_0x42ac('0x21')](function(){_0x33ea9f[_0x42ac('0x17')](0xcc)['end']();});}};}function handleEntityNotFound(_0x4838b4,_0x289345){return function(_0x586819){if(!_0x586819){_0x4838b4['sendStatus'](0x194);}return _0x586819;};}function handleError(_0x3bccd8,_0xf0969){_0xf0969=_0xf0969||0x1f4;return function(_0x2a9ac0){logger[_0x42ac('0x23')](_0x2a9ac0[_0x42ac('0x24')]);if(_0x2a9ac0[_0x42ac('0x25')]){delete _0x2a9ac0[_0x42ac('0x25')];}_0x3bccd8[_0x42ac('0x17')](_0xf0969)[_0x42ac('0x26')](_0x2a9ac0);};}exports['index']=function(_0x4d9ed4,_0x202089){var _0x218fb7={},_0x42cfdc={},_0x5d8039={'count':0x0,'rows':[]};var _0x2fd63e=_[_0x42ac('0x27')](db['VoiceMailMessage'][_0x42ac('0x28')],function(_0x1d5c51){return{'name':_0x1d5c51['fieldName'],'type':_0x1d5c51[_0x42ac('0x29')][_0x42ac('0x2a')]};});_0x42cfdc['model']=_[_0x42ac('0x2b')](_[_0x42ac('0x27')](_0x2fd63e,_0x42ac('0x25')),[_0x42ac('0x25')]);_0x42cfdc[_0x42ac('0x2c')]=_[_0x42ac('0x2d')](_0x4d9ed4[_0x42ac('0x2c')]);_0x42cfdc['filters']=_['intersection'](_0x42cfdc[_0x42ac('0x2e')],_0x42cfdc['query']);_0x218fb7[_0x42ac('0x2f')]=_[_0x42ac('0x30')](_0x42cfdc['model'],qs[_0x42ac('0x31')](_0x4d9ed4['query'][_0x42ac('0x31')]));_0x218fb7[_0x42ac('0x2f')]=_0x218fb7[_0x42ac('0x2f')][_0x42ac('0x32')]?_0x218fb7['attributes']:_0x42cfdc[_0x42ac('0x2e')];if(!_0x4d9ed4['query']['hasOwnProperty'](_0x42ac('0x33'))){_0x218fb7[_0x42ac('0x1b')]=qs[_0x42ac('0x1b')](_0x4d9ed4['query'][_0x42ac('0x1b')]);_0x218fb7['offset']=qs[_0x42ac('0x19')](_0x4d9ed4['query'][_0x42ac('0x19')]);}_0x218fb7[_0x42ac('0x34')]=qs[_0x42ac('0x35')](_0x4d9ed4[_0x42ac('0x2c')][_0x42ac('0x35')]);_0x218fb7['where']=qs[_0x42ac('0x36')](_[_0x42ac('0x37')](_0x4d9ed4[_0x42ac('0x2c')],_0x42cfdc['filters']),_0x2fd63e);if(_0x4d9ed4['query'][_0x42ac('0x38')]){_0x218fb7[_0x42ac('0x39')]=_[_0x42ac('0x3a')](_0x218fb7[_0x42ac('0x39')],{'$or':_['map'](_0x2fd63e,function(_0x50acc7){if(_0x50acc7[_0x42ac('0x29')]!=='VIRTUAL'){var _0x2fc798={};_0x2fc798[_0x50acc7[_0x42ac('0x25')]]={'$like':'%'+_0x4d9ed4[_0x42ac('0x2c')][_0x42ac('0x38')]+'%'};return _0x2fc798;}})});}_0x218fb7=_['merge']({},_0x218fb7,_0x4d9ed4[_0x42ac('0x3b')]);var _0x371383={'where':_0x218fb7['where']};return db['VoiceMailMessage'][_0x42ac('0x1c')](_0x371383)['then'](function(_0x14bcca){_0x5d8039[_0x42ac('0x1c')]=_0x14bcca;if(_0x4d9ed4['query'][_0x42ac('0x3c')]){_0x218fb7[_0x42ac('0x3d')]=[{'all':!![]}];}return db[_0x42ac('0x3e')][_0x42ac('0x3f')](_0x218fb7);})['then'](function(_0x20dd03){_0x5d8039[_0x42ac('0x40')]=_0x20dd03;return _0x5d8039;})['then'](respondWithFilteredResult(_0x202089,_0x218fb7))[_0x42ac('0x41')](handleError(_0x202089,null));};exports[_0x42ac('0x42')]=function(_0x25d270,_0x30f3e2){var _0x210c21={'raw':!![],'where':{'id':_0x25d270[_0x42ac('0x43')]['id']}},_0x3be982={};_0x3be982[_0x42ac('0x2e')]=_[_0x42ac('0x2d')](db[_0x42ac('0x3e')]['rawAttributes']);_0x3be982['query']=_['keys'](_0x25d270['query']);_0x3be982[_0x42ac('0x36')]=_[_0x42ac('0x30')](_0x3be982['model'],_0x3be982[_0x42ac('0x2c')]);_0x210c21[_0x42ac('0x2f')]=_['intersection'](_0x3be982[_0x42ac('0x2e')],qs[_0x42ac('0x31')](_0x25d270[_0x42ac('0x2c')]['fields']));_0x210c21['attributes']=_0x210c21[_0x42ac('0x2f')][_0x42ac('0x32')]?_0x210c21['attributes']:_0x3be982[_0x42ac('0x2e')];if(_0x25d270[_0x42ac('0x2c')]['includeAll']){_0x210c21[_0x42ac('0x3d')]=[{'all':!![]}];}_0x210c21=_[_0x42ac('0x3a')]({},_0x210c21,_0x25d270[_0x42ac('0x3b')]);return db['VoiceMailMessage']['find'](_0x210c21)[_0x42ac('0x21')](handleEntityNotFound(_0x30f3e2,null))['then'](respondWithResult(_0x30f3e2,null))[_0x42ac('0x41')](handleError(_0x30f3e2,null));};exports['create']=function(_0x36ff79,_0x2d4b71){return db[_0x42ac('0x3e')]['create'](_0x36ff79[_0x42ac('0x44')],{})[_0x42ac('0x21')](respondWithResult(_0x2d4b71,0xc9))[_0x42ac('0x41')](handleError(_0x2d4b71,null));};exports['update']=function(_0x280931,_0x2ee081){if(_0x280931[_0x42ac('0x44')]['id']){delete _0x280931[_0x42ac('0x44')]['id'];}return db[_0x42ac('0x3e')]['find']({'where':{'id':_0x280931[_0x42ac('0x43')]['id']}})[_0x42ac('0x21')](handleEntityNotFound(_0x2ee081,null))[_0x42ac('0x21')](saveUpdates(_0x280931[_0x42ac('0x44')],null))[_0x42ac('0x21')](respondWithResult(_0x2ee081,null))[_0x42ac('0x41')](handleError(_0x2ee081,null));};exports['destroy']=function(_0x4a35a3,_0x417c2c){return db[_0x42ac('0x3e')][_0x42ac('0x45')]({'where':{'id':_0x4a35a3[_0x42ac('0x43')]['id']}})[_0x42ac('0x21')](handleEntityNotFound(_0x417c2c,null))[_0x42ac('0x21')](removeEntity(_0x417c2c,null))[_0x42ac('0x41')](handleError(_0x417c2c,null));};exports['download']=function(_0x1af221,_0x13e20f,_0x4cb28f){return db['VoiceMailMessage'][_0x42ac('0x45')]({'where':{'id':_0x1af221[_0x42ac('0x43')]['id']},'attributes':['id','recording',_0x42ac('0x46')]})[_0x42ac('0x21')](handleEntityNotFound(_0x13e20f,null))[_0x42ac('0x21')](function(_0x26123b){if(_0x26123b){if(!_0x26123b[_0x42ac('0x47')]){throw new db[(_0x42ac('0x48'))][(_0x42ac('0x49'))](_0x42ac('0x4a'));}var _0x302225={'Content-Type':_0x42ac('0x4b'),'Content-Disposition':_0x42ac('0x4c')};if(_0x26123b[_0x42ac('0x46')]){_0x302225['Content-Disposition']=_0x42ac('0x4d')+_0x26123b['msg_id']+_0x42ac('0x4e');}_0x13e20f[_0x42ac('0x4f')](_0x302225);return _0x13e20f[_0x42ac('0x26')](new Buffer(_0x26123b[_0x42ac('0x47')]));}})['catch'](handleError(_0x13e20f,null));};
\ No newline at end of file
index ad191a1..2ac3cab 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4aeb=['./voiceMailMessage.attributes','exports','define','VoiceMailMessage','voice_voicemail_messages','dir','lodash','util','../../config/logger','api','bluebird','request-promise','path','rimraf','../../config/environment'];(function(_0x229300,_0x2471ad){var _0x3178b1=function(_0x357477){while(--_0x357477){_0x229300['push'](_0x229300['shift']());}};_0x3178b1(++_0x2471ad);}(_0x4aeb,0x9c));var _0xb4ae=function(_0x50797c,_0x4bc847){_0x50797c=_0x50797c-0x0;var _0x11f52d=_0x4aeb[_0x50797c];return _0x11f52d;};'use strict';var _=require(_0xb4ae('0x0'));var util=require(_0xb4ae('0x1'));var logger=require(_0xb4ae('0x2'))(_0xb4ae('0x3'));var moment=require('moment');var BPromise=require(_0xb4ae('0x4'));var rp=require(_0xb4ae('0x5'));var fs=require('fs');var path=require(_0xb4ae('0x6'));var rimraf=require(_0xb4ae('0x7'));var config=require(_0xb4ae('0x8'));var attributes=require(_0xb4ae('0x9'));module[_0xb4ae('0xa')]=function(_0x195736,_0x2caade){return _0x195736[_0xb4ae('0xb')](_0xb4ae('0xc'),attributes,{'tableName':_0xb4ae('0xd'),'paranoid':![],'indexes':[{'name':_0xb4ae('0xe'),'fields':['dir']}],'timestamps':![]});};
\ No newline at end of file
+var _0x7a38=['util','../../config/logger','api','path','rimraf','../../config/environment','./voiceMailMessage.attributes','exports','define','voice_voicemail_messages','dir','lodash'];(function(_0x460dae,_0x3a907f){var _0x36e6d0=function(_0x447057){while(--_0x447057){_0x460dae['push'](_0x460dae['shift']());}};_0x36e6d0(++_0x3a907f);}(_0x7a38,0x173));var _0x87a3=function(_0x30f366,_0xa156ec){_0x30f366=_0x30f366-0x0;var _0x3b605c=_0x7a38[_0x30f366];return _0x3b605c;};'use strict';var _=require(_0x87a3('0x0'));var util=require(_0x87a3('0x1'));var logger=require(_0x87a3('0x2'))(_0x87a3('0x3'));var moment=require('moment');var BPromise=require('bluebird');var rp=require('request-promise');var fs=require('fs');var path=require(_0x87a3('0x4'));var rimraf=require(_0x87a3('0x5'));var config=require(_0x87a3('0x6'));var attributes=require(_0x87a3('0x7'));module[_0x87a3('0x8')]=function(_0x15f204,_0x334acc){return _0x15f204[_0x87a3('0x9')]('VoiceMailMessage',attributes,{'tableName':_0x87a3('0xa'),'paranoid':![],'indexes':[{'name':_0x87a3('0xb'),'fields':['dir']}],'timestamps':![]});};
\ No newline at end of file
index 029f84b..79134f1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3ae6=['../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','request','VoiceMailMessage,\x20%s,\x20%s','VoiceMailMessage,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','code','message','info','result','catch','lodash','util','moment','bluebird','randomstring','ioredis'];(function(_0x299924,_0x42b3c7){var _0x5881c7=function(_0x5b5fef){while(--_0x5b5fef){_0x299924['push'](_0x299924['shift']());}};_0x5881c7(++_0x42b3c7);}(_0x3ae6,0x13c));var _0x63ae=function(_0x3914f4,_0x5efe98){_0x3914f4=_0x3914f4-0x0;var _0x36e01e=_0x3ae6[_0x3914f4];return _0x36e01e;};'use strict';var _=require(_0x63ae('0x0'));var util=require(_0x63ae('0x1'));var moment=require(_0x63ae('0x2'));var BPromise=require(_0x63ae('0x3'));var rs=require(_0x63ae('0x4'));var fs=require('fs');var Redis=require(_0x63ae('0x5'));var db=require('../../mysqldb')['db'];var utils=require(_0x63ae('0x6'));var logger=require(_0x63ae('0x7'))(_0x63ae('0x8'));var config=require(_0x63ae('0x9'));var jayson=require(_0x63ae('0xa'));var client=jayson[_0x63ae('0xb')]['http']({'port':0x232a});function respondWithRpcPromise(_0xffe08a,_0xffffde,_0x12ba0e){return new BPromise(function(_0xefee0b,_0x16bdb6){return client[_0x63ae('0xc')](_0xffe08a,_0x12ba0e)['then'](function(_0x5925a1){logger['info'](_0x63ae('0xd'),_0xffffde,'request\x20sent');logger['debug'](_0x63ae('0xe'),_0xffffde,_0x63ae('0xf'),JSON[_0x63ae('0x10')](_0x5925a1));if(_0x5925a1['error']){if(_0x5925a1[_0x63ae('0x11')][_0x63ae('0x12')]===0x1f4){logger[_0x63ae('0x11')](_0x63ae('0xd'),_0xffffde,_0x5925a1['error'][_0x63ae('0x13')]);return _0x16bdb6(_0x5925a1[_0x63ae('0x11')]['message']);}logger[_0x63ae('0x11')](_0x63ae('0xd'),_0xffffde,_0x5925a1[_0x63ae('0x11')][_0x63ae('0x13')]);return _0xefee0b(_0x5925a1[_0x63ae('0x11')]['message']);}else{logger[_0x63ae('0x14')](_0x63ae('0xd'),_0xffffde,_0x63ae('0xf'));_0xefee0b(_0x5925a1[_0x63ae('0x15')]['message']);}})[_0x63ae('0x16')](function(_0x9cf347){logger[_0x63ae('0x11')](_0x63ae('0xd'),_0xffffde,_0x9cf347);_0x16bdb6(_0x9cf347);});});}
\ No newline at end of file
+var _0x39a6=['bluebird','randomstring','ioredis','../../mysqldb','../../config/logger','rpc','client','http','request','then','VoiceMailMessage,\x20%s,\x20%s','debug','error','code','message','info','request\x20sent','result','catch','lodash','moment'];(function(_0x1cc1bc,_0x1067e6){var _0x1700aa=function(_0x2e761f){while(--_0x2e761f){_0x1cc1bc['push'](_0x1cc1bc['shift']());}};_0x1700aa(++_0x1067e6);}(_0x39a6,0x1a2));var _0x639a=function(_0x33b388,_0xb7b657){_0x33b388=_0x33b388-0x0;var _0x9f027b=_0x39a6[_0x33b388];return _0x9f027b;};'use strict';var _=require(_0x639a('0x0'));var util=require('util');var moment=require(_0x639a('0x1'));var BPromise=require(_0x639a('0x2'));var rs=require(_0x639a('0x3'));var fs=require('fs');var Redis=require(_0x639a('0x4'));var db=require(_0x639a('0x5'))['db'];var utils=require('../../config/utils');var logger=require(_0x639a('0x6'))(_0x639a('0x7'));var config=require('../../config/environment');var jayson=require('jayson/promise');var client=jayson[_0x639a('0x8')][_0x639a('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x409ff8,_0x10a43f,_0x52d907){return new BPromise(function(_0xd1bdf4,_0x326ecd){return client[_0x639a('0xa')](_0x409ff8,_0x52d907)[_0x639a('0xb')](function(_0xd98ab4){logger['info'](_0x639a('0xc'),_0x10a43f,'request\x20sent');logger[_0x639a('0xd')]('VoiceMailMessage,\x20%s,\x20%s,\x20%s',_0x10a43f,'request\x20sent',JSON['stringify'](_0xd98ab4));if(_0xd98ab4[_0x639a('0xe')]){if(_0xd98ab4[_0x639a('0xe')][_0x639a('0xf')]===0x1f4){logger[_0x639a('0xe')](_0x639a('0xc'),_0x10a43f,_0xd98ab4[_0x639a('0xe')][_0x639a('0x10')]);return _0x326ecd(_0xd98ab4[_0x639a('0xe')]['message']);}logger[_0x639a('0xe')](_0x639a('0xc'),_0x10a43f,_0xd98ab4[_0x639a('0xe')][_0x639a('0x10')]);return _0xd1bdf4(_0xd98ab4[_0x639a('0xe')]['message']);}else{logger[_0x639a('0x11')](_0x639a('0xc'),_0x10a43f,_0x639a('0x12'));_0xd1bdf4(_0xd98ab4[_0x639a('0x13')]['message']);}})[_0x639a('0x14')](function(_0x16a91f){logger['error'](_0x639a('0xc'),_0x10a43f,_0x16a91f);_0x326ecd(_0x16a91f);});});}
\ No newline at end of file
index b15ef11..0ca18e5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3df6=['index','/:id','isAuthenticated','show','get','getSounds','post','addSound','put','update','delete','destroy','removeSound','exports','multer','util','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./voiceMusicOnHold.controller'];(function(_0x3bf3e8,_0x261d81){var _0x45419c=function(_0x2215aa){while(--_0x2215aa){_0x3bf3e8['push'](_0x3bf3e8['shift']());}};_0x45419c(++_0x261d81);}(_0x3df6,0xe6));var _0x63df=function(_0x1fa71f,_0x5d6ae7){_0x1fa71f=_0x1fa71f-0x0;var _0x86e86a=_0x3df6[_0x1fa71f];return _0x86e86a;};'use strict';var multer=require(_0x63df('0x0'));var util=require(_0x63df('0x1'));var path=require('path');var timeout=require(_0x63df('0x2'));var express=require(_0x63df('0x3'));var router=express[_0x63df('0x4')]();var fs_extra=require(_0x63df('0x5'));var auth=require(_0x63df('0x6'));var interaction=require(_0x63df('0x7'));var config=require(_0x63df('0x8'));var controller=require(_0x63df('0x9'));router['get']('/',auth['isAuthenticated'](),controller[_0x63df('0xa')]);router['get'](_0x63df('0xb'),auth[_0x63df('0xc')](),controller[_0x63df('0xd')]);router[_0x63df('0xe')]('/:id/sounds',auth[_0x63df('0xc')](),controller[_0x63df('0xf')]);router[_0x63df('0x10')]('/',auth['isAuthenticated'](),controller['create']);router[_0x63df('0x10')]('/:id/sounds',auth[_0x63df('0xc')](),controller[_0x63df('0x11')]);router[_0x63df('0x12')](_0x63df('0xb'),auth[_0x63df('0xc')](),controller[_0x63df('0x13')]);router[_0x63df('0x14')](_0x63df('0xb'),auth[_0x63df('0xc')](),controller[_0x63df('0x15')]);router[_0x63df('0x14')]('/:id/sounds/:id2',auth[_0x63df('0xc')](),controller[_0x63df('0x16')]);module[_0x63df('0x17')]=router;
\ No newline at end of file
+var _0xa1c9=['../../config/environment','get','isAuthenticated','index','/:id','show','/:id/sounds','post','create','addSound','put','delete','removeSound','exports','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service'];(function(_0x15db63,_0x250e81){var _0xea3986=function(_0x538707){while(--_0x538707){_0x15db63['push'](_0x15db63['shift']());}};_0xea3986(++_0x250e81);}(_0xa1c9,0x142));var _0x9a1c=function(_0x28c752,_0x238454){_0x28c752=_0x28c752-0x0;var _0x30cd6c=_0xa1c9[_0x28c752];return _0x30cd6c;};'use strict';var multer=require('multer');var util=require(_0x9a1c('0x0'));var path=require(_0x9a1c('0x1'));var timeout=require(_0x9a1c('0x2'));var express=require(_0x9a1c('0x3'));var router=express[_0x9a1c('0x4')]();var fs_extra=require(_0x9a1c('0x5'));var auth=require(_0x9a1c('0x6'));var interaction=require(_0x9a1c('0x7'));var config=require(_0x9a1c('0x8'));var controller=require('./voiceMusicOnHold.controller');router[_0x9a1c('0x9')]('/',auth[_0x9a1c('0xa')](),controller[_0x9a1c('0xb')]);router[_0x9a1c('0x9')](_0x9a1c('0xc'),auth[_0x9a1c('0xa')](),controller[_0x9a1c('0xd')]);router[_0x9a1c('0x9')](_0x9a1c('0xe'),auth[_0x9a1c('0xa')](),controller['getSounds']);router[_0x9a1c('0xf')]('/',auth[_0x9a1c('0xa')](),controller[_0x9a1c('0x10')]);router['post'](_0x9a1c('0xe'),auth[_0x9a1c('0xa')](),controller[_0x9a1c('0x11')]);router[_0x9a1c('0x12')](_0x9a1c('0xc'),auth['isAuthenticated'](),controller['update']);router[_0x9a1c('0x13')](_0x9a1c('0xc'),auth[_0x9a1c('0xa')](),controller['destroy']);router[_0x9a1c('0x13')]('/:id/sounds/:id2',auth[_0x9a1c('0xa')](),controller[_0x9a1c('0x14')]);module[_0x9a1c('0x15')]=router;
\ No newline at end of file
index 501b197..c109c09 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5d2e=['mp3','alpha','TIMESTAMP','BOOLEAN','sequelize','STRING','name','custom','files','quietmp3nb','quietmp3'];(function(_0x159aa1,_0x503933){var _0x573201=function(_0x3e9cdc){while(--_0x3e9cdc){_0x159aa1['push'](_0x159aa1['shift']());}};_0x573201(++_0x503933);}(_0x5d2e,0x1e8));var _0xe5d2=function(_0x24061a,_0x1c9f4d){_0x24061a=_0x24061a-0x0;var _0x82054e=_0x5d2e[_0x24061a];return _0x82054e;};'use strict';var Sequelize=require(_0xe5d2('0x0'));module['exports']={'name':{'type':Sequelize[_0xe5d2('0x1')],'allowNull':![],'unique':_0xe5d2('0x2')},'mode':{'type':Sequelize['ENUM'](_0xe5d2('0x3'),_0xe5d2('0x4'),'mp3nb',_0xe5d2('0x5'),_0xe5d2('0x6'),_0xe5d2('0x7')),'allowNull':!![],'defaultValue':_0xe5d2('0x4')},'directory':{'type':Sequelize[_0xe5d2('0x1')],'allowNull':!![]},'application':{'type':Sequelize[_0xe5d2('0x1')],'allowNull':!![]},'digit':{'type':Sequelize[_0xe5d2('0x1')],'allowNull':!![]},'sort':{'type':Sequelize[_0xe5d2('0x1')],'allowNull':!![],'defaultValue':_0xe5d2('0x8')},'format':{'type':Sequelize['STRING'],'allowNull':!![]},'stamp':{'type':_0xe5d2('0x9')},'defaultEntry':{'type':Sequelize[_0xe5d2('0xa')],'defaultValue':0x0}};
\ No newline at end of file
+var _0x79a1=['STRING','TIMESTAMP','BOOLEAN','sequelize','exports','name','custom','files','mp3nb','quietmp3nb','quietmp3','mp3'];(function(_0x5525dd,_0x102198){var _0x2ed0b9=function(_0x317059){while(--_0x317059){_0x5525dd['push'](_0x5525dd['shift']());}};_0x2ed0b9(++_0x102198);}(_0x79a1,0x18f));var _0x179a=function(_0x5bf4f0,_0x305f5f){_0x5bf4f0=_0x5bf4f0-0x0;var _0x9b958e=_0x79a1[_0x5bf4f0];return _0x9b958e;};'use strict';var Sequelize=require(_0x179a('0x0'));module[_0x179a('0x1')]={'name':{'type':Sequelize['STRING'],'allowNull':![],'unique':_0x179a('0x2')},'mode':{'type':Sequelize['ENUM'](_0x179a('0x3'),_0x179a('0x4'),_0x179a('0x5'),_0x179a('0x6'),_0x179a('0x7'),_0x179a('0x8')),'allowNull':!![],'defaultValue':'files'},'directory':{'type':Sequelize[_0x179a('0x9')],'allowNull':!![]},'application':{'type':Sequelize[_0x179a('0x9')],'allowNull':!![]},'digit':{'type':Sequelize[_0x179a('0x9')],'allowNull':!![]},'sort':{'type':Sequelize[_0x179a('0x9')],'allowNull':!![],'defaultValue':'alpha'},'format':{'type':Sequelize[_0x179a('0x9')],'allowNull':!![]},'stamp':{'type':_0x179a('0xa')},'defaultEntry':{'type':Sequelize[_0x179a('0xb')],'defaultValue':0x0}};
\ No newline at end of file
index 4a58913..352196d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xec0d=['options','include','findAll','rows','catch','show','params','keys','includeAll','find','update','body','create','transaction','mode','files','join','server/files/moh','mkdirSync','directory','user','get','Unable\x20to\x20retrieve\x20the\x20current\x20user','userProfileId','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','forEach','unlinkSync','Sequelize','message','addSound','sequelize','Sound','findOne','save_name','converted_format','createdAt','root','server/files/sounds/converted','%s.%s','basename','format','removeSound','id2','getSounds','rawAttributes','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','mustache','path','sox','to-csv','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/utils','../../config/environment','../../config/license/util','sendStatus','status','end','json','undefined','limit','count','offset','Content-Range','apply','then','destroy','MusicOnHolds','UserProfileResource','error','stack','name','send','index','map','VoiceMusicOnHold','fieldName','type','key','query','filters','intersection','model','attributes','fields','length','hasOwnProperty','nolimit','order','sort','pick','filter','where','merge'];(function(_0x40a045,_0x516f0e){var _0x1a687c=function(_0x48c9fe){while(--_0x48c9fe){_0x40a045['push'](_0x40a045['shift']());}};_0x1a687c(++_0x516f0e);}(_0xec0d,0x97));var _0xdec0=function(_0x807812,_0x33cddb){_0x807812=_0x807812-0x0;var _0x5c6946=_0xec0d[_0x807812];return _0x5c6946;};'use strict';var emlformat=require(_0xdec0('0x0'));var rimraf=require(_0xdec0('0x1'));var zipdir=require(_0xdec0('0x2'));var jsonpatch=require(_0xdec0('0x3'));var rp=require(_0xdec0('0x4'));var moment=require(_0xdec0('0x5'));var BPromise=require('bluebird');var Mustache=require(_0xdec0('0x6'));var util=require('util');var path=require(_0xdec0('0x7'));var sox=require(_0xdec0('0x8'));var csv=require(_0xdec0('0x9'));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(_0xdec0('0xa'));var toCsv=require('to-csv');var querystring=require(_0xdec0('0xb'));var Papa=require(_0xdec0('0xc'));var Redis=require(_0xdec0('0xd'));var authService=require(_0xdec0('0xe'));var qs=require(_0xdec0('0xf'));var as=require(_0xdec0('0x10'));var hardwareService=require('../../config/license/hardware');var logger=require('../../config/logger')('api');var utils=require(_0xdec0('0x11'));var config=require(_0xdec0('0x12'));var licenseUtil=require(_0xdec0('0x13'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x99bfe0,_0x4a8473){_0x4a8473=_0x4a8473||0xcc;return function(_0x436021){if(_0x436021){return _0x99bfe0[_0xdec0('0x14')](_0x4a8473);}return _0x99bfe0[_0xdec0('0x15')](_0x4a8473)[_0xdec0('0x16')]();};}function respondWithResult(_0x4fe568,_0x4b6a12){_0x4b6a12=_0x4b6a12||0xc8;return function(_0x59a2b9){if(_0x59a2b9){return _0x4fe568[_0xdec0('0x15')](_0x4b6a12)[_0xdec0('0x17')](_0x59a2b9);}};}function respondWithFilteredResult(_0x4b0423,_0x169030){return function(_0x139c3a){if(_0x139c3a){var _0x572392=typeof _0x169030['offset']===_0xdec0('0x18')&&typeof _0x169030[_0xdec0('0x19')]===_0xdec0('0x18');var _0xe9fcc2=_0x139c3a[_0xdec0('0x1a')];var _0x30e820=_0x572392?0x0:_0x169030[_0xdec0('0x1b')];var _0x385a0a=_0x572392?_0x139c3a[_0xdec0('0x1a')]:_0x169030[_0xdec0('0x1b')]+_0x169030['limit'];var _0x377305;if(_0x385a0a>=_0xe9fcc2){_0x385a0a=_0xe9fcc2;_0x377305=0xc8;}else{_0x377305=0xce;}_0x4b0423[_0xdec0('0x15')](_0x377305);return _0x4b0423['set'](_0xdec0('0x1c'),_0x30e820+'-'+_0x385a0a+'/'+_0xe9fcc2)[_0xdec0('0x17')](_0x139c3a);}return null;};}function patchUpdates(_0x2099b7){return function(_0x3f4b50){try{jsonpatch[_0xdec0('0x1d')](_0x3f4b50,_0x2099b7,!![]);}catch(_0x789ab0){return BPromise['reject'](_0x789ab0);}return _0x3f4b50['save']();};}function saveUpdates(_0x3b7cfa,_0x22a856){return function(_0x27481d){if(_0x27481d){return _0x27481d['update'](_0x3b7cfa)[_0xdec0('0x1e')](function(_0x5a7f49){return _0x5a7f49;});}return null;};}function removeEntity(_0x337796,_0x54fd5d){return function(_0x57656b){if(_0x57656b){return _0x57656b[_0xdec0('0x1f')]()['then'](function(){var _0x3d33cc=_0x57656b['get']({'plain':!![]});var _0x106e11=_0xdec0('0x20');return db[_0xdec0('0x21')][_0xdec0('0x1f')]({'where':{'type':_0x106e11,'resourceId':_0x3d33cc['id']}})[_0xdec0('0x1e')](function(){return _0x57656b;});})[_0xdec0('0x1e')](function(){_0x337796[_0xdec0('0x15')](0xcc)[_0xdec0('0x16')]();});}};}function handleEntityNotFound(_0x331da0,_0x2aab73){return function(_0x241bd2){if(!_0x241bd2){_0x331da0[_0xdec0('0x14')](0x194);}return _0x241bd2;};}function handleError(_0x4104ce,_0x458a12){_0x458a12=_0x458a12||0x1f4;return function(_0x76228b){logger[_0xdec0('0x22')](_0x76228b[_0xdec0('0x23')]);if(_0x76228b[_0xdec0('0x24')]){delete _0x76228b[_0xdec0('0x24')];}_0x4104ce[_0xdec0('0x15')](_0x458a12)[_0xdec0('0x25')](_0x76228b);};}exports[_0xdec0('0x26')]=function(_0x40e6d6,_0x4388b5){var _0x2914b1={},_0x25f7f3={},_0x2f3aae={'count':0x0,'rows':[]};var _0x281345=_[_0xdec0('0x27')](db[_0xdec0('0x28')]['rawAttributes'],function(_0x12edf2){return{'name':_0x12edf2[_0xdec0('0x29')],'type':_0x12edf2[_0xdec0('0x2a')][_0xdec0('0x2b')]};});_0x25f7f3['model']=_[_0xdec0('0x27')](_0x281345,'name');_0x25f7f3[_0xdec0('0x2c')]=_['keys'](_0x40e6d6[_0xdec0('0x2c')]);_0x25f7f3[_0xdec0('0x2d')]=_[_0xdec0('0x2e')](_0x25f7f3[_0xdec0('0x2f')],_0x25f7f3[_0xdec0('0x2c')]);_0x2914b1[_0xdec0('0x30')]=_[_0xdec0('0x2e')](_0x25f7f3['model'],qs[_0xdec0('0x31')](_0x40e6d6[_0xdec0('0x2c')][_0xdec0('0x31')]));_0x2914b1['attributes']=_0x2914b1[_0xdec0('0x30')][_0xdec0('0x32')]?_0x2914b1['attributes']:_0x25f7f3[_0xdec0('0x2f')];if(!_0x40e6d6[_0xdec0('0x2c')][_0xdec0('0x33')](_0xdec0('0x34'))){_0x2914b1[_0xdec0('0x19')]=qs['limit'](_0x40e6d6[_0xdec0('0x2c')]['limit']);_0x2914b1[_0xdec0('0x1b')]=qs[_0xdec0('0x1b')](_0x40e6d6[_0xdec0('0x2c')][_0xdec0('0x1b')]);}_0x2914b1[_0xdec0('0x35')]=qs[_0xdec0('0x36')](_0x40e6d6[_0xdec0('0x2c')][_0xdec0('0x36')]);delete _0x40e6d6[_0xdec0('0x2c')][_0xdec0('0x36')];_0x2914b1['where']=qs[_0xdec0('0x2d')](_[_0xdec0('0x37')](_0x40e6d6['query'],_0x25f7f3[_0xdec0('0x2d')]),_0x281345);if(_0x40e6d6[_0xdec0('0x2c')][_0xdec0('0x38')]){_0x2914b1[_0xdec0('0x39')]=_[_0xdec0('0x3a')](_0x2914b1['where'],{'$or':_[_0xdec0('0x27')](_0x281345,function(_0x1e2b01){if(_0x1e2b01['type']!=='VIRTUAL'){var _0x4fd390={};_0x4fd390[_0x1e2b01[_0xdec0('0x24')]]={'$like':'%'+_0x40e6d6['query']['filter']+'%'};return _0x4fd390;}})});}_0x2914b1=_[_0xdec0('0x3a')]({},_0x2914b1,_0x40e6d6[_0xdec0('0x3b')]);var _0x3e32cc={'where':_0x2914b1['where']};return db[_0xdec0('0x28')][_0xdec0('0x1a')](_0x3e32cc)['then'](function(_0x180e25){_0x2f3aae[_0xdec0('0x1a')]=_0x180e25;if(_0x40e6d6[_0xdec0('0x2c')]['includeAll']){_0x2914b1[_0xdec0('0x3c')]=[{'all':!![]}];}return db[_0xdec0('0x28')][_0xdec0('0x3d')](_0x2914b1);})['then'](function(_0x25ce75){_0x2f3aae[_0xdec0('0x3e')]=_0x25ce75;return _0x2f3aae;})[_0xdec0('0x1e')](respondWithFilteredResult(_0x4388b5,_0x2914b1))[_0xdec0('0x3f')](handleError(_0x4388b5,null));};exports[_0xdec0('0x40')]=function(_0x55ad44,_0xa4c4f2){var _0x47e664={'raw':![],'where':{'id':_0x55ad44[_0xdec0('0x41')]['id']}},_0x214cb3={};_0x214cb3[_0xdec0('0x2f')]=_[_0xdec0('0x42')](db[_0xdec0('0x28')]['rawAttributes']);_0x214cb3['query']=_[_0xdec0('0x42')](_0x55ad44[_0xdec0('0x2c')]);_0x214cb3[_0xdec0('0x2d')]=_[_0xdec0('0x2e')](_0x214cb3[_0xdec0('0x2f')],_0x214cb3['query']);_0x47e664[_0xdec0('0x30')]=_['intersection'](_0x214cb3[_0xdec0('0x2f')],qs[_0xdec0('0x31')](_0x55ad44['query'][_0xdec0('0x31')]));_0x47e664[_0xdec0('0x30')]=_0x47e664['attributes'][_0xdec0('0x32')]?_0x47e664[_0xdec0('0x30')]:_0x214cb3[_0xdec0('0x2f')];if(_0x55ad44[_0xdec0('0x2c')][_0xdec0('0x43')]){_0x47e664[_0xdec0('0x3c')]=[{'all':!![]}];}_0x47e664=_[_0xdec0('0x3a')]({},_0x47e664,_0x55ad44[_0xdec0('0x3b')]);return db[_0xdec0('0x28')][_0xdec0('0x44')](_0x47e664)[_0xdec0('0x1e')](handleEntityNotFound(_0xa4c4f2,null))[_0xdec0('0x1e')](respondWithResult(_0xa4c4f2,null))[_0xdec0('0x3f')](handleError(_0xa4c4f2,null));};exports[_0xdec0('0x45')]=function(_0x14852f,_0x31558f){if(_0x14852f['body']['id']){delete _0x14852f[_0xdec0('0x46')]['id'];}return db['VoiceMusicOnHold'][_0xdec0('0x44')]({'where':{'id':_0x14852f[_0xdec0('0x41')]['id']}})[_0xdec0('0x1e')](handleEntityNotFound(_0x31558f,null))['then'](saveUpdates(_0x14852f['body'],null))[_0xdec0('0x1e')](respondWithResult(_0x31558f,null))['catch'](handleError(_0x31558f,null));};exports[_0xdec0('0x47')]=function(_0x3c6950,_0x49bbde,_0x2406fd){return db['sequelize'][_0xdec0('0x48')](function(_0x2bada0){if(_0x3c6950[_0xdec0('0x46')][_0xdec0('0x49')]===_0xdec0('0x4a')){_0x3c6950[_0xdec0('0x46')]['directory']=path[_0xdec0('0x4b')](config['root'],_0xdec0('0x4c'),_0x3c6950[_0xdec0('0x46')]['name']);}return db[_0xdec0('0x28')]['create'](_0x3c6950[_0xdec0('0x46')],{'transaction':_0x2bada0})[_0xdec0('0x1e')](function(_0xd9d2c9){if(_0x3c6950[_0xdec0('0x46')]['mode']===_0xdec0('0x4a')){fs[_0xdec0('0x4d')](_0xd9d2c9[_0xdec0('0x4e')],parseInt('0777',0x8));}var _0x2366b3=_0x3c6950[_0xdec0('0x4f')][_0xdec0('0x50')]({'plain':!![]});if(!_0x2366b3)throw new Error(_0xdec0('0x51'));if(_0x2366b3['role']===_0xdec0('0x4f')){var _0x1212bb=_0xd9d2c9[_0xdec0('0x50')]({'plain':!![]});return db['UserProfileSection'][_0xdec0('0x44')]({'where':{'name':_0xdec0('0x20'),'userProfileId':_0x2366b3[_0xdec0('0x52')]},'raw':!![]})['then'](function(_0x35e4e4){if(_0x35e4e4&&_0x35e4e4[_0xdec0('0x53')]===0x0){return db[_0xdec0('0x21')]['create']({'name':_0x1212bb['name'],'resourceId':_0x1212bb['id'],'type':_0x35e4e4['name'],'sectionId':_0x35e4e4['id']},{})['then'](function(){return _0xd9d2c9;});}else{return _0xd9d2c9;}})[_0xdec0('0x3f')](function(_0x51fda9){logger[_0xdec0('0x22')](_0xdec0('0x54'),_0x51fda9);});}return _0xd9d2c9;});})[_0xdec0('0x1e')](respondWithResult(_0x49bbde,0xc9))[_0xdec0('0x3f')](handleError(_0x49bbde,null));};exports[_0xdec0('0x1f')]=function(_0x339ee5,_0xfab21b,_0x1a5ab1){var _0x41786b;return db['VoiceMusicOnHold'][_0xdec0('0x44')]({'where':{'id':_0x339ee5[_0xdec0('0x41')]['id']}})[_0xdec0('0x1e')](function(_0x290d8c){if(_0x290d8c){return db['sequelize']['transaction'](function(_0x1d69ec){return _0x290d8c[_0xdec0('0x1f')]({'transaction':_0x1d69ec,'raw':!![]})[_0xdec0('0x1e')](function(_0x5f4fd){if(_0x5f4fd[_0xdec0('0x4e')]){fs['readdirSync'](_0x5f4fd[_0xdec0('0x4e')])[_0xdec0('0x55')](function(_0x1b0cd9){fs[_0xdec0('0x56')](path['join'](_0x5f4fd['directory'],_0x1b0cd9));});fs['rmdirSync'](_0x5f4fd[_0xdec0('0x4e')]);}return _0x5f4fd;});})['catch'](function(_0x123801){throw new db[(_0xdec0('0x57'))]['ValidationError'](_0x123801[_0xdec0('0x58')]);});}})[_0xdec0('0x1e')](handleEntityNotFound(_0xfab21b,null))[_0xdec0('0x1e')](removeEntity(_0xfab21b,null))[_0xdec0('0x3f')](handleError(_0xfab21b,null));};exports[_0xdec0('0x59')]=function(_0x1ad02d,_0x1388b7,_0x5e9982){return db[_0xdec0('0x5a')][_0xdec0('0x48')](function(_0x347592){var _0x460337;return db[_0xdec0('0x28')][_0xdec0('0x44')]({'where':{'id':_0x1ad02d['params']['id']}})[_0xdec0('0x1e')](function(_0x27eb9e){if(_0x27eb9e){_0x460337=_0x27eb9e;return _0x27eb9e[_0xdec0('0x59')](_0x1ad02d[_0xdec0('0x46')]['id'],{'transaction':_0x347592});}})['then'](function(_0x1c504d){if(_0x1c504d){return db[_0xdec0('0x5b')][_0xdec0('0x5c')]({'where':{'id':_0x1ad02d[_0xdec0('0x46')]['id']},'attributes':['id',_0xdec0('0x24'),_0xdec0('0x5d'),_0xdec0('0x5e'),_0xdec0('0x5f')],'raw':!![]});}})[_0xdec0('0x1e')](function(_0x458187){if(_0x458187){var _0x28c3c6=path['join'](config[_0xdec0('0x60')],_0xdec0('0x61'),util['format'](_0xdec0('0x62'),path[_0xdec0('0x63')](_0x458187[_0xdec0('0x5d')],path['extname'](_0x458187['save_name'])),_0x458187['converted_format']));var _0x4a35c7=path['join'](config[_0xdec0('0x60')],'server/files/moh',_0x460337[_0xdec0('0x24')],util[_0xdec0('0x64')](_0xdec0('0x62'),_0x458187[_0xdec0('0x24')],_0x458187[_0xdec0('0x5e')]));fs['symlinkSync'](_0x28c3c6,_0x4a35c7);return _0x458187;}})['catch'](function(_0x25ded0){throw new db[(_0xdec0('0x57'))]['ValidationError'](_0x25ded0['message']);});})[_0xdec0('0x1e')](handleEntityNotFound(_0x1388b7,null))['then'](respondWithResult(_0x1388b7,0xc9))['catch'](handleError(_0x1388b7,null));};exports[_0xdec0('0x65')]=function(_0x4403f0,_0x292425,_0x336bd0){return db[_0xdec0('0x5a')][_0xdec0('0x48')](function(_0x5b9132){var _0x6faa57;return db['VoiceMusicOnHold'][_0xdec0('0x5c')]({'where':{'id':_0x4403f0['params']['id']}})['then'](handleEntityNotFound(_0x292425,null))[_0xdec0('0x1e')](function(_0x285089){if(_0x285089){_0x6faa57=_0x285089;return _0x285089['removeSound'](_0x4403f0[_0xdec0('0x41')][_0xdec0('0x66')]);}})['then'](function(_0x3cd7b6){if(_0x3cd7b6){return db[_0xdec0('0x5b')]['findOne']({'where':{'id':_0x4403f0[_0xdec0('0x41')][_0xdec0('0x66')]},'attributes':['id',_0xdec0('0x24'),'save_name',_0xdec0('0x5e'),_0xdec0('0x5f')],'raw':!![]});}})[_0xdec0('0x1e')](function(_0x1160c1){if(_0x1160c1){fs[_0xdec0('0x56')](path[_0xdec0('0x4b')](_0x6faa57[_0xdec0('0x4e')],util[_0xdec0('0x64')](_0xdec0('0x62'),_0x1160c1[_0xdec0('0x24')],_0x1160c1[_0xdec0('0x5e')])));return _0x1160c1;}})['catch'](function(_0x59ecf5){throw new db[(_0xdec0('0x57'))]['ValidationError'](_0x59ecf5[_0xdec0('0x58')]);});})[_0xdec0('0x1e')](handleEntityNotFound(_0x292425,null))[_0xdec0('0x1e')](respondWithStatusCode(_0x292425,0xcc))[_0xdec0('0x3f')](handleError(_0x292425,null));};exports[_0xdec0('0x67')]=function(_0x56cdb4,_0x4f773a,_0x547836){var _0xa1d8a={};var _0x953fa3={};var _0x3a1c5a;var _0x45cd2d;return db[_0xdec0('0x28')][_0xdec0('0x5c')]({'where':{'id':_0x56cdb4[_0xdec0('0x41')]['id']}})[_0xdec0('0x1e')](handleEntityNotFound(_0x4f773a,null))['then'](function(_0x39d34a){if(_0x39d34a){_0x3a1c5a=_0x39d34a;_0x953fa3[_0xdec0('0x2f')]=_[_0xdec0('0x42')](db[_0xdec0('0x5b')][_0xdec0('0x68')]);_0x953fa3[_0xdec0('0x2c')]=_['keys'](_0x56cdb4[_0xdec0('0x2c')]);_0x953fa3[_0xdec0('0x2d')]=_[_0xdec0('0x2e')](_0x953fa3['model'],_0x953fa3['query']);_0xa1d8a['attributes']=_[_0xdec0('0x2e')](_0x953fa3[_0xdec0('0x2f')],qs[_0xdec0('0x31')](_0x56cdb4[_0xdec0('0x2c')]['fields']));_0xa1d8a['attributes']=_0xa1d8a[_0xdec0('0x30')][_0xdec0('0x32')]?_0xa1d8a['attributes']:_0x953fa3[_0xdec0('0x2f')];_0xa1d8a['order']=qs[_0xdec0('0x36')](_0x56cdb4[_0xdec0('0x2c')][_0xdec0('0x36')]);_0xa1d8a['where']=qs['filters'](_[_0xdec0('0x37')](_0x56cdb4[_0xdec0('0x2c')],_0x953fa3[_0xdec0('0x2d')]));if(_0x56cdb4[_0xdec0('0x2c')][_0xdec0('0x38')]){_0xa1d8a[_0xdec0('0x39')]=_[_0xdec0('0x3a')](_0xa1d8a[_0xdec0('0x39')],{'$or':_[_0xdec0('0x27')](_0xa1d8a['attributes'],function(_0x1b2434){var _0x42d67d={};_0x42d67d[_0x1b2434]={'$like':'%'+_0x56cdb4[_0xdec0('0x2c')]['filter']+'%'};return _0x42d67d;})});}_0xa1d8a=_[_0xdec0('0x3a')]({},_0xa1d8a,_0x56cdb4[_0xdec0('0x3b')]);return _0x3a1c5a[_0xdec0('0x67')](_0xa1d8a);}})[_0xdec0('0x1e')](function(_0x293a2f){if(_0x293a2f){_0x45cd2d=_0x293a2f['length'];if(!_0x56cdb4[_0xdec0('0x2c')]['hasOwnProperty'](_0xdec0('0x34'))){_0xa1d8a[_0xdec0('0x19')]=qs[_0xdec0('0x19')](_0x56cdb4[_0xdec0('0x2c')][_0xdec0('0x19')]);_0xa1d8a[_0xdec0('0x1b')]=qs[_0xdec0('0x1b')](_0x56cdb4[_0xdec0('0x2c')][_0xdec0('0x1b')]);}return _0x3a1c5a['getSounds'](_0xa1d8a);}})[_0xdec0('0x1e')](function(_0x254413){if(_0x254413){return _0x254413?{'count':_0x45cd2d,'rows':_0x254413}:null;}})['then'](respondWithResult(_0x4f773a,null))['catch'](handleError(_0x4f773a,null));};
\ No newline at end of file
+var _0xcd49=['autoAssociation','error','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','transaction','readdirSync','forEach','rmdirSync','ValidationError','message','addSound','findOne','createdAt','format','%s.%s','basename','save_name','extname','converted_format','symlinkSync','Sequelize','removeSound','id2','Sound','unlinkSync','getSounds','rimraf','moment','mustache','util','path','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','papaparse','ioredis','../../components/parsers/qs','../../config/license/hardware','../../config/logger','api','../../config/environment','../../config/license/util','../../mysqldb','status','end','json','undefined','count','offset','limit','set','Content-Range','apply','reject','update','destroy','get','MusicOnHolds','UserProfileResource','then','sendStatus','stack','name','send','index','map','VoiceMusicOnHold','rawAttributes','fieldName','type','key','model','query','keys','intersection','fields','attributes','hasOwnProperty','nolimit','order','sort','where','filters','pick','filter','merge','VIRTUAL','options','includeAll','include','findAll','rows','catch','show','length','find','body','params','create','sequelize','mode','files','directory','join','root','server/files/moh','mkdirSync','0777','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','UserProfileSection','userProfileId'];(function(_0x3355cc,_0x52192f){var _0x4aa227=function(_0x29225b){while(--_0x29225b){_0x3355cc['push'](_0x3355cc['shift']());}};_0x4aa227(++_0x52192f);}(_0xcd49,0x105));var _0x9cd4=function(_0x4a7631,_0x2c85b9){_0x4a7631=_0x4a7631-0x0;var _0x1a5a6f=_0xcd49[_0x4a7631];return _0x1a5a6f;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x9cd4('0x0'));var zipdir=require('zip-dir');var jsonpatch=require('fast-json-patch');var rp=require('request-promise');var moment=require(_0x9cd4('0x1'));var BPromise=require('bluebird');var Mustache=require(_0x9cd4('0x2'));var util=require(_0x9cd4('0x3'));var path=require(_0x9cd4('0x4'));var sox=require(_0x9cd4('0x5'));var csv=require(_0x9cd4('0x6'));var ejs=require(_0x9cd4('0x7'));var fs=require('fs');var fs_extra=require(_0x9cd4('0x8'));var _=require(_0x9cd4('0x9'));var squel=require(_0x9cd4('0xa'));var crypto=require(_0x9cd4('0xb'));var jsforce=require(_0x9cd4('0xc'));var deskjs=require(_0x9cd4('0xd'));var toCsv=require(_0x9cd4('0x6'));var querystring=require('querystring');var Papa=require(_0x9cd4('0xe'));var Redis=require(_0x9cd4('0xf'));var authService=require('../../components/auth/service');var qs=require(_0x9cd4('0x10'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x9cd4('0x11'));var logger=require(_0x9cd4('0x12'))(_0x9cd4('0x13'));var utils=require('../../config/utils');var config=require(_0x9cd4('0x14'));var licenseUtil=require(_0x9cd4('0x15'));var db=require(_0x9cd4('0x16'))['db'];function respondWithStatusCode(_0x171e51,_0x40b515){_0x40b515=_0x40b515||0xcc;return function(_0x1b3dd1){if(_0x1b3dd1){return _0x171e51['sendStatus'](_0x40b515);}return _0x171e51[_0x9cd4('0x17')](_0x40b515)[_0x9cd4('0x18')]();};}function respondWithResult(_0x21c9d7,_0x1a0985){_0x1a0985=_0x1a0985||0xc8;return function(_0x3c0b00){if(_0x3c0b00){return _0x21c9d7[_0x9cd4('0x17')](_0x1a0985)[_0x9cd4('0x19')](_0x3c0b00);}};}function respondWithFilteredResult(_0x313354,_0x3d0ddb){return function(_0x333be0){if(_0x333be0){var _0x59b9d5=typeof _0x3d0ddb['offset']===_0x9cd4('0x1a')&&typeof _0x3d0ddb['limit']===_0x9cd4('0x1a');var _0x48daaa=_0x333be0[_0x9cd4('0x1b')];var _0x3668cd=_0x59b9d5?0x0:_0x3d0ddb['offset'];var _0x3182f9=_0x59b9d5?_0x333be0['count']:_0x3d0ddb[_0x9cd4('0x1c')]+_0x3d0ddb[_0x9cd4('0x1d')];var _0x102bb2;if(_0x3182f9>=_0x48daaa){_0x3182f9=_0x48daaa;_0x102bb2=0xc8;}else{_0x102bb2=0xce;}_0x313354[_0x9cd4('0x17')](_0x102bb2);return _0x313354[_0x9cd4('0x1e')](_0x9cd4('0x1f'),_0x3668cd+'-'+_0x3182f9+'/'+_0x48daaa)[_0x9cd4('0x19')](_0x333be0);}return null;};}function patchUpdates(_0x142fc6){return function(_0x5d9357){try{jsonpatch[_0x9cd4('0x20')](_0x5d9357,_0x142fc6,!![]);}catch(_0x4383cd){return BPromise[_0x9cd4('0x21')](_0x4383cd);}return _0x5d9357['save']();};}function saveUpdates(_0x405ae0,_0x6d4f15){return function(_0x341765){if(_0x341765){return _0x341765[_0x9cd4('0x22')](_0x405ae0)['then'](function(_0x1a86c7){return _0x1a86c7;});}return null;};}function removeEntity(_0x5536b1,_0x213bda){return function(_0x598029){if(_0x598029){return _0x598029[_0x9cd4('0x23')]()['then'](function(){var _0x2d910a=_0x598029[_0x9cd4('0x24')]({'plain':!![]});var _0x15a794=_0x9cd4('0x25');return db[_0x9cd4('0x26')]['destroy']({'where':{'type':_0x15a794,'resourceId':_0x2d910a['id']}})[_0x9cd4('0x27')](function(){return _0x598029;});})[_0x9cd4('0x27')](function(){_0x5536b1[_0x9cd4('0x17')](0xcc)[_0x9cd4('0x18')]();});}};}function handleEntityNotFound(_0x529c38,_0x35ffc1){return function(_0x3966d6){if(!_0x3966d6){_0x529c38[_0x9cd4('0x28')](0x194);}return _0x3966d6;};}function handleError(_0x188002,_0x3e3cd1){_0x3e3cd1=_0x3e3cd1||0x1f4;return function(_0x21c7a6){logger['error'](_0x21c7a6[_0x9cd4('0x29')]);if(_0x21c7a6[_0x9cd4('0x2a')]){delete _0x21c7a6['name'];}_0x188002[_0x9cd4('0x17')](_0x3e3cd1)[_0x9cd4('0x2b')](_0x21c7a6);};}exports[_0x9cd4('0x2c')]=function(_0x5e535f,_0x576c2d){var _0x527e32={},_0x48eea2={},_0x3df714={'count':0x0,'rows':[]};var _0x48a330=_[_0x9cd4('0x2d')](db[_0x9cd4('0x2e')][_0x9cd4('0x2f')],function(_0x43ece3){return{'name':_0x43ece3[_0x9cd4('0x30')],'type':_0x43ece3[_0x9cd4('0x31')][_0x9cd4('0x32')]};});_0x48eea2[_0x9cd4('0x33')]=_[_0x9cd4('0x2d')](_0x48a330,'name');_0x48eea2[_0x9cd4('0x34')]=_[_0x9cd4('0x35')](_0x5e535f[_0x9cd4('0x34')]);_0x48eea2['filters']=_['intersection'](_0x48eea2['model'],_0x48eea2[_0x9cd4('0x34')]);_0x527e32['attributes']=_[_0x9cd4('0x36')](_0x48eea2[_0x9cd4('0x33')],qs[_0x9cd4('0x37')](_0x5e535f[_0x9cd4('0x34')]['fields']));_0x527e32['attributes']=_0x527e32[_0x9cd4('0x38')]['length']?_0x527e32[_0x9cd4('0x38')]:_0x48eea2[_0x9cd4('0x33')];if(!_0x5e535f[_0x9cd4('0x34')][_0x9cd4('0x39')](_0x9cd4('0x3a'))){_0x527e32['limit']=qs[_0x9cd4('0x1d')](_0x5e535f[_0x9cd4('0x34')][_0x9cd4('0x1d')]);_0x527e32[_0x9cd4('0x1c')]=qs[_0x9cd4('0x1c')](_0x5e535f[_0x9cd4('0x34')][_0x9cd4('0x1c')]);}_0x527e32[_0x9cd4('0x3b')]=qs[_0x9cd4('0x3c')](_0x5e535f['query'][_0x9cd4('0x3c')]);delete _0x5e535f['query']['sort'];_0x527e32[_0x9cd4('0x3d')]=qs[_0x9cd4('0x3e')](_[_0x9cd4('0x3f')](_0x5e535f[_0x9cd4('0x34')],_0x48eea2[_0x9cd4('0x3e')]),_0x48a330);if(_0x5e535f[_0x9cd4('0x34')][_0x9cd4('0x40')]){_0x527e32[_0x9cd4('0x3d')]=_[_0x9cd4('0x41')](_0x527e32['where'],{'$or':_[_0x9cd4('0x2d')](_0x48a330,function(_0x2f90f9){if(_0x2f90f9[_0x9cd4('0x31')]!==_0x9cd4('0x42')){var _0x1e011a={};_0x1e011a[_0x2f90f9[_0x9cd4('0x2a')]]={'$like':'%'+_0x5e535f[_0x9cd4('0x34')][_0x9cd4('0x40')]+'%'};return _0x1e011a;}})});}_0x527e32=_['merge']({},_0x527e32,_0x5e535f[_0x9cd4('0x43')]);var _0x319d2a={'where':_0x527e32[_0x9cd4('0x3d')]};return db[_0x9cd4('0x2e')]['count'](_0x319d2a)[_0x9cd4('0x27')](function(_0x480772){_0x3df714['count']=_0x480772;if(_0x5e535f[_0x9cd4('0x34')][_0x9cd4('0x44')]){_0x527e32[_0x9cd4('0x45')]=[{'all':!![]}];}return db['VoiceMusicOnHold'][_0x9cd4('0x46')](_0x527e32);})[_0x9cd4('0x27')](function(_0x5975b5){_0x3df714[_0x9cd4('0x47')]=_0x5975b5;return _0x3df714;})[_0x9cd4('0x27')](respondWithFilteredResult(_0x576c2d,_0x527e32))[_0x9cd4('0x48')](handleError(_0x576c2d,null));};exports[_0x9cd4('0x49')]=function(_0x516cf1,_0x19ef00){var _0x2407e1={'raw':![],'where':{'id':_0x516cf1['params']['id']}},_0x4804df={};_0x4804df[_0x9cd4('0x33')]=_[_0x9cd4('0x35')](db[_0x9cd4('0x2e')][_0x9cd4('0x2f')]);_0x4804df[_0x9cd4('0x34')]=_[_0x9cd4('0x35')](_0x516cf1[_0x9cd4('0x34')]);_0x4804df[_0x9cd4('0x3e')]=_[_0x9cd4('0x36')](_0x4804df[_0x9cd4('0x33')],_0x4804df[_0x9cd4('0x34')]);_0x2407e1[_0x9cd4('0x38')]=_[_0x9cd4('0x36')](_0x4804df['model'],qs[_0x9cd4('0x37')](_0x516cf1[_0x9cd4('0x34')][_0x9cd4('0x37')]));_0x2407e1[_0x9cd4('0x38')]=_0x2407e1[_0x9cd4('0x38')][_0x9cd4('0x4a')]?_0x2407e1['attributes']:_0x4804df[_0x9cd4('0x33')];if(_0x516cf1[_0x9cd4('0x34')][_0x9cd4('0x44')]){_0x2407e1[_0x9cd4('0x45')]=[{'all':!![]}];}_0x2407e1=_[_0x9cd4('0x41')]({},_0x2407e1,_0x516cf1[_0x9cd4('0x43')]);return db[_0x9cd4('0x2e')][_0x9cd4('0x4b')](_0x2407e1)[_0x9cd4('0x27')](handleEntityNotFound(_0x19ef00,null))[_0x9cd4('0x27')](respondWithResult(_0x19ef00,null))[_0x9cd4('0x48')](handleError(_0x19ef00,null));};exports[_0x9cd4('0x22')]=function(_0x3b247d,_0x504a89){if(_0x3b247d[_0x9cd4('0x4c')]['id']){delete _0x3b247d[_0x9cd4('0x4c')]['id'];}return db['VoiceMusicOnHold']['find']({'where':{'id':_0x3b247d[_0x9cd4('0x4d')]['id']}})[_0x9cd4('0x27')](handleEntityNotFound(_0x504a89,null))['then'](saveUpdates(_0x3b247d[_0x9cd4('0x4c')],null))[_0x9cd4('0x27')](respondWithResult(_0x504a89,null))[_0x9cd4('0x48')](handleError(_0x504a89,null));};exports[_0x9cd4('0x4e')]=function(_0x2d1dd0,_0x1c7d46,_0x4b32ed){return db[_0x9cd4('0x4f')]['transaction'](function(_0x428880){if(_0x2d1dd0['body'][_0x9cd4('0x50')]===_0x9cd4('0x51')){_0x2d1dd0['body'][_0x9cd4('0x52')]=path[_0x9cd4('0x53')](config[_0x9cd4('0x54')],_0x9cd4('0x55'),_0x2d1dd0['body'][_0x9cd4('0x2a')]);}return db[_0x9cd4('0x2e')][_0x9cd4('0x4e')](_0x2d1dd0[_0x9cd4('0x4c')],{'transaction':_0x428880})['then'](function(_0x669c3){if(_0x2d1dd0[_0x9cd4('0x4c')]['mode']==='files'){fs[_0x9cd4('0x56')](_0x669c3['directory'],parseInt(_0x9cd4('0x57'),0x8));}var _0x334e43=_0x2d1dd0[_0x9cd4('0x58')][_0x9cd4('0x24')]({'plain':!![]});if(!_0x334e43)throw new Error(_0x9cd4('0x59'));if(_0x334e43[_0x9cd4('0x5a')]===_0x9cd4('0x58')){var _0x17fcad=_0x669c3[_0x9cd4('0x24')]({'plain':!![]});return db[_0x9cd4('0x5b')][_0x9cd4('0x4b')]({'where':{'name':'MusicOnHolds','userProfileId':_0x334e43[_0x9cd4('0x5c')]},'raw':!![]})[_0x9cd4('0x27')](function(_0x4d20f6){if(_0x4d20f6&&_0x4d20f6[_0x9cd4('0x5d')]===0x0){return db[_0x9cd4('0x26')][_0x9cd4('0x4e')]({'name':_0x17fcad[_0x9cd4('0x2a')],'resourceId':_0x17fcad['id'],'type':_0x4d20f6['name'],'sectionId':_0x4d20f6['id']},{})['then'](function(){return _0x669c3;});}else{return _0x669c3;}})[_0x9cd4('0x48')](function(_0x5e22c8){logger[_0x9cd4('0x5e')](_0x9cd4('0x5f'),_0x5e22c8);});}return _0x669c3;});})[_0x9cd4('0x27')](respondWithResult(_0x1c7d46,0xc9))['catch'](handleError(_0x1c7d46,null));};exports[_0x9cd4('0x23')]=function(_0x1c9700,_0x4d16a0,_0x48ef32){var _0x1a80ca;return db['VoiceMusicOnHold'][_0x9cd4('0x4b')]({'where':{'id':_0x1c9700[_0x9cd4('0x4d')]['id']}})[_0x9cd4('0x27')](function(_0x432822){if(_0x432822){return db['sequelize'][_0x9cd4('0x60')](function(_0x1690a0){return _0x432822[_0x9cd4('0x23')]({'transaction':_0x1690a0,'raw':!![]})[_0x9cd4('0x27')](function(_0x46a0f9){if(_0x46a0f9[_0x9cd4('0x52')]){fs[_0x9cd4('0x61')](_0x46a0f9[_0x9cd4('0x52')])[_0x9cd4('0x62')](function(_0x1b1c4b){fs['unlinkSync'](path[_0x9cd4('0x53')](_0x46a0f9['directory'],_0x1b1c4b));});fs[_0x9cd4('0x63')](_0x46a0f9['directory']);}return _0x46a0f9;});})[_0x9cd4('0x48')](function(_0x490d61){throw new db['Sequelize'][(_0x9cd4('0x64'))](_0x490d61[_0x9cd4('0x65')]);});}})['then'](handleEntityNotFound(_0x4d16a0,null))[_0x9cd4('0x27')](removeEntity(_0x4d16a0,null))['catch'](handleError(_0x4d16a0,null));};exports[_0x9cd4('0x66')]=function(_0x220975,_0x9c854e,_0x1df279){return db[_0x9cd4('0x4f')][_0x9cd4('0x60')](function(_0x18f69f){var _0x5cbaa2;return db[_0x9cd4('0x2e')][_0x9cd4('0x4b')]({'where':{'id':_0x220975['params']['id']}})['then'](function(_0x43338f){if(_0x43338f){_0x5cbaa2=_0x43338f;return _0x43338f[_0x9cd4('0x66')](_0x220975['body']['id'],{'transaction':_0x18f69f});}})[_0x9cd4('0x27')](function(_0x4cca9a){if(_0x4cca9a){return db['Sound'][_0x9cd4('0x67')]({'where':{'id':_0x220975[_0x9cd4('0x4c')]['id']},'attributes':['id',_0x9cd4('0x2a'),'save_name','converted_format',_0x9cd4('0x68')],'raw':!![]});}})['then'](function(_0x211ec2){if(_0x211ec2){var _0x358a5d=path[_0x9cd4('0x53')](config[_0x9cd4('0x54')],'server/files/sounds/converted',util[_0x9cd4('0x69')](_0x9cd4('0x6a'),path[_0x9cd4('0x6b')](_0x211ec2[_0x9cd4('0x6c')],path[_0x9cd4('0x6d')](_0x211ec2[_0x9cd4('0x6c')])),_0x211ec2[_0x9cd4('0x6e')]));var _0x2917e4=path[_0x9cd4('0x53')](config[_0x9cd4('0x54')],_0x9cd4('0x55'),_0x5cbaa2[_0x9cd4('0x2a')],util[_0x9cd4('0x69')](_0x9cd4('0x6a'),_0x211ec2[_0x9cd4('0x2a')],_0x211ec2['converted_format']));fs[_0x9cd4('0x6f')](_0x358a5d,_0x2917e4);return _0x211ec2;}})[_0x9cd4('0x48')](function(_0x51422d){throw new db[(_0x9cd4('0x70'))][(_0x9cd4('0x64'))](_0x51422d['message']);});})[_0x9cd4('0x27')](handleEntityNotFound(_0x9c854e,null))[_0x9cd4('0x27')](respondWithResult(_0x9c854e,0xc9))['catch'](handleError(_0x9c854e,null));};exports['removeSound']=function(_0x1dee39,_0x2001e2,_0x3aa180){return db[_0x9cd4('0x4f')][_0x9cd4('0x60')](function(_0x37dc6e){var _0x511bcc;return db[_0x9cd4('0x2e')][_0x9cd4('0x67')]({'where':{'id':_0x1dee39[_0x9cd4('0x4d')]['id']}})['then'](handleEntityNotFound(_0x2001e2,null))[_0x9cd4('0x27')](function(_0x20af6b){if(_0x20af6b){_0x511bcc=_0x20af6b;return _0x20af6b[_0x9cd4('0x71')](_0x1dee39[_0x9cd4('0x4d')][_0x9cd4('0x72')]);}})[_0x9cd4('0x27')](function(_0x36301c){if(_0x36301c){return db[_0x9cd4('0x73')]['findOne']({'where':{'id':_0x1dee39[_0x9cd4('0x4d')]['id2']},'attributes':['id','name','save_name',_0x9cd4('0x6e'),_0x9cd4('0x68')],'raw':!![]});}})[_0x9cd4('0x27')](function(_0x2493fa){if(_0x2493fa){fs[_0x9cd4('0x74')](path[_0x9cd4('0x53')](_0x511bcc['directory'],util[_0x9cd4('0x69')]('%s.%s',_0x2493fa[_0x9cd4('0x2a')],_0x2493fa[_0x9cd4('0x6e')])));return _0x2493fa;}})['catch'](function(_0x4aa423){throw new db[(_0x9cd4('0x70'))][(_0x9cd4('0x64'))](_0x4aa423[_0x9cd4('0x65')]);});})[_0x9cd4('0x27')](handleEntityNotFound(_0x2001e2,null))['then'](respondWithStatusCode(_0x2001e2,0xcc))[_0x9cd4('0x48')](handleError(_0x2001e2,null));};exports[_0x9cd4('0x75')]=function(_0x7eb6ef,_0x8fdb28,_0x25726e){var _0xd6e8d4={};var _0x584518={};var _0xbafe7c;var _0x26ceaf;return db[_0x9cd4('0x2e')]['findOne']({'where':{'id':_0x7eb6ef[_0x9cd4('0x4d')]['id']}})[_0x9cd4('0x27')](handleEntityNotFound(_0x8fdb28,null))[_0x9cd4('0x27')](function(_0x201016){if(_0x201016){_0xbafe7c=_0x201016;_0x584518[_0x9cd4('0x33')]=_[_0x9cd4('0x35')](db[_0x9cd4('0x73')]['rawAttributes']);_0x584518[_0x9cd4('0x34')]=_['keys'](_0x7eb6ef[_0x9cd4('0x34')]);_0x584518[_0x9cd4('0x3e')]=_[_0x9cd4('0x36')](_0x584518[_0x9cd4('0x33')],_0x584518[_0x9cd4('0x34')]);_0xd6e8d4[_0x9cd4('0x38')]=_[_0x9cd4('0x36')](_0x584518[_0x9cd4('0x33')],qs['fields'](_0x7eb6ef[_0x9cd4('0x34')][_0x9cd4('0x37')]));_0xd6e8d4[_0x9cd4('0x38')]=_0xd6e8d4['attributes'][_0x9cd4('0x4a')]?_0xd6e8d4[_0x9cd4('0x38')]:_0x584518[_0x9cd4('0x33')];_0xd6e8d4['order']=qs[_0x9cd4('0x3c')](_0x7eb6ef[_0x9cd4('0x34')][_0x9cd4('0x3c')]);_0xd6e8d4[_0x9cd4('0x3d')]=qs[_0x9cd4('0x3e')](_[_0x9cd4('0x3f')](_0x7eb6ef[_0x9cd4('0x34')],_0x584518[_0x9cd4('0x3e')]));if(_0x7eb6ef[_0x9cd4('0x34')][_0x9cd4('0x40')]){_0xd6e8d4['where']=_[_0x9cd4('0x41')](_0xd6e8d4[_0x9cd4('0x3d')],{'$or':_[_0x9cd4('0x2d')](_0xd6e8d4[_0x9cd4('0x38')],function(_0x2d6bb8){var _0x53aa9d={};_0x53aa9d[_0x2d6bb8]={'$like':'%'+_0x7eb6ef[_0x9cd4('0x34')]['filter']+'%'};return _0x53aa9d;})});}_0xd6e8d4=_['merge']({},_0xd6e8d4,_0x7eb6ef[_0x9cd4('0x43')]);return _0xbafe7c[_0x9cd4('0x75')](_0xd6e8d4);}})[_0x9cd4('0x27')](function(_0x2eb704){if(_0x2eb704){_0x26ceaf=_0x2eb704['length'];if(!_0x7eb6ef[_0x9cd4('0x34')][_0x9cd4('0x39')](_0x9cd4('0x3a'))){_0xd6e8d4[_0x9cd4('0x1d')]=qs['limit'](_0x7eb6ef['query'][_0x9cd4('0x1d')]);_0xd6e8d4['offset']=qs['offset'](_0x7eb6ef['query'][_0x9cd4('0x1c')]);}return _0xbafe7c[_0x9cd4('0x75')](_0xd6e8d4);}})[_0x9cd4('0x27')](function(_0x33096c){if(_0x33096c){return _0x33096c?{'count':_0x26ceaf,'rows':_0x33096c}:null;}})[_0x9cd4('0x27')](respondWithResult(_0x8fdb28,null))[_0x9cd4('0x48')](handleError(_0x8fdb28,null));};
\ No newline at end of file
index 23decb9..a25099e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4571=['./voiceMusicOnHold.attributes','exports','define','VoiceMusicOnHold','voice_musiconhold','lodash','util','../../config/logger','api','moment','bluebird','request-promise','path','../../config/environment'];(function(_0x71dfdc,_0x4599b4){var _0x575c51=function(_0x491cbe){while(--_0x491cbe){_0x71dfdc['push'](_0x71dfdc['shift']());}};_0x575c51(++_0x4599b4);}(_0x4571,0x67));var _0x1457=function(_0x5bd426,_0x4878e5){_0x5bd426=_0x5bd426-0x0;var _0x23a7eb=_0x4571[_0x5bd426];return _0x23a7eb;};'use strict';var _=require(_0x1457('0x0'));var util=require(_0x1457('0x1'));var logger=require(_0x1457('0x2'))(_0x1457('0x3'));var moment=require(_0x1457('0x4'));var BPromise=require(_0x1457('0x5'));var rp=require(_0x1457('0x6'));var fs=require('fs');var path=require(_0x1457('0x7'));var rimraf=require('rimraf');var config=require(_0x1457('0x8'));var attributes=require(_0x1457('0x9'));module[_0x1457('0xa')]=function(_0x11ad89,_0x1758ab){return _0x11ad89[_0x1457('0xb')](_0x1457('0xc'),attributes,{'tableName':_0x1457('0xd'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x246f=['../../config/environment','exports','define','VoiceMusicOnHold','voice_musiconhold','lodash','../../config/logger','moment','request-promise','path','rimraf'];(function(_0x7b6e5e,_0xcfad73){var _0x5937c=function(_0x55e448){while(--_0x55e448){_0x7b6e5e['push'](_0x7b6e5e['shift']());}};_0x5937c(++_0xcfad73);}(_0x246f,0x186));var _0xf246=function(_0x10949a,_0x2b7dba){_0x10949a=_0x10949a-0x0;var _0x3e7746=_0x246f[_0x10949a];return _0x3e7746;};'use strict';var _=require(_0xf246('0x0'));var util=require('util');var logger=require(_0xf246('0x1'))('api');var moment=require(_0xf246('0x2'));var BPromise=require('bluebird');var rp=require(_0xf246('0x3'));var fs=require('fs');var path=require(_0xf246('0x4'));var rimraf=require(_0xf246('0x5'));var config=require(_0xf246('0x6'));var attributes=require('./voiceMusicOnHold.attributes');module[_0xf246('0x7')]=function(_0x5ca205,_0x312772){return _0x5ca205[_0xf246('0x8')](_0xf246('0x9'),attributes,{'tableName':_0xf246('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 92edd8f..6a0826e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xcb91=['stringify','error','code','message','catch','moment','bluebird','randomstring','ioredis','../../config/utils','../../config/logger','../../config/environment','jayson/promise','http','request','info','VoiceMusicOnHold,\x20%s,\x20%s','request\x20sent','debug','VoiceMusicOnHold,\x20%s,\x20%s,\x20%s'];(function(_0x30eb2d,_0x6514d0){var _0xe85f16=function(_0x7dc928){while(--_0x7dc928){_0x30eb2d['push'](_0x30eb2d['shift']());}};_0xe85f16(++_0x6514d0);}(_0xcb91,0x1a9));var _0x1cb9=function(_0x2d34d6,_0x397ff9){_0x2d34d6=_0x2d34d6-0x0;var _0x1d3d12=_0xcb91[_0x2d34d6];return _0x1d3d12;};'use strict';var _=require('lodash');var util=require('util');var moment=require(_0x1cb9('0x0'));var BPromise=require(_0x1cb9('0x1'));var rs=require(_0x1cb9('0x2'));var fs=require('fs');var Redis=require(_0x1cb9('0x3'));var db=require('../../mysqldb')['db'];var utils=require(_0x1cb9('0x4'));var logger=require(_0x1cb9('0x5'))('rpc');var config=require(_0x1cb9('0x6'));var jayson=require(_0x1cb9('0x7'));var client=jayson['client'][_0x1cb9('0x8')]({'port':0x232a});function respondWithRpcPromise(_0x3f7deb,_0x4ffe20,_0x38737d){return new BPromise(function(_0x12567c,_0x59d1be){return client[_0x1cb9('0x9')](_0x3f7deb,_0x38737d)['then'](function(_0x567139){logger[_0x1cb9('0xa')](_0x1cb9('0xb'),_0x4ffe20,_0x1cb9('0xc'));logger[_0x1cb9('0xd')](_0x1cb9('0xe'),_0x4ffe20,'request\x20sent',JSON[_0x1cb9('0xf')](_0x567139));if(_0x567139[_0x1cb9('0x10')]){if(_0x567139[_0x1cb9('0x10')][_0x1cb9('0x11')]===0x1f4){logger[_0x1cb9('0x10')]('VoiceMusicOnHold,\x20%s,\x20%s',_0x4ffe20,_0x567139['error']['message']);return _0x59d1be(_0x567139[_0x1cb9('0x10')][_0x1cb9('0x12')]);}logger[_0x1cb9('0x10')](_0x1cb9('0xb'),_0x4ffe20,_0x567139['error'][_0x1cb9('0x12')]);return _0x12567c(_0x567139[_0x1cb9('0x10')][_0x1cb9('0x12')]);}else{logger[_0x1cb9('0xa')](_0x1cb9('0xb'),_0x4ffe20,'request\x20sent');_0x12567c(_0x567139['result'][_0x1cb9('0x12')]);}})[_0x1cb9('0x13')](function(_0x3904b7){logger[_0x1cb9('0x10')](_0x1cb9('0xb'),_0x4ffe20,_0x3904b7);_0x59d1be(_0x3904b7);});});}
\ 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(_0x58511d,_0x39d04f){var _0x4da722=function(_0x1e84e7){while(--_0x1e84e7){_0x58511d['push'](_0x58511d['shift']());}};_0x4da722(++_0x39d04f);}(_0x34e8,0x12c));var _0x834e=function(_0x23265a,_0x283035){_0x23265a=_0x23265a-0x0;var _0x1d0506=_0x34e8[_0x23265a];return _0x1d0506;};'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 d7bcc79..76159ab 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe4d9=['create','addAgents','addTeams','put','delete','destroy','removeAgents','removeTeams','exports','multer','util','path','express','../../components/auth/service','../../components/interaction/service','./voicePrefix.controller','get','index','describe','/:id','isAuthenticated','/:id/users','getAgents','/:id/teams','getTeams','post'];(function(_0x25008a,_0x1fd163){var _0x2a4d1b=function(_0x5232a3){while(--_0x5232a3){_0x25008a['push'](_0x25008a['shift']());}};_0x2a4d1b(++_0x1fd163);}(_0xe4d9,0x141));var _0x9e4d=function(_0x1baba4,_0x14f5fa){_0x1baba4=_0x1baba4-0x0;var _0x364022=_0xe4d9[_0x1baba4];return _0x364022;};'use strict';var multer=require(_0x9e4d('0x0'));var util=require(_0x9e4d('0x1'));var path=require(_0x9e4d('0x2'));var timeout=require('connect-timeout');var express=require(_0x9e4d('0x3'));var router=express['Router']();var fs_extra=require('fs-extra');var auth=require(_0x9e4d('0x4'));var interaction=require(_0x9e4d('0x5'));var config=require('../../config/environment');var controller=require(_0x9e4d('0x6'));router[_0x9e4d('0x7')]('/',auth['isAuthenticated'](),controller[_0x9e4d('0x8')]);router[_0x9e4d('0x7')]('/describe',auth['isAuthenticated'](),controller[_0x9e4d('0x9')]);router['get'](_0x9e4d('0xa'),auth[_0x9e4d('0xb')](),controller['show']);router[_0x9e4d('0x7')](_0x9e4d('0xc'),auth[_0x9e4d('0xb')](),controller[_0x9e4d('0xd')]);router[_0x9e4d('0x7')](_0x9e4d('0xe'),auth[_0x9e4d('0xb')](),controller[_0x9e4d('0xf')]);router[_0x9e4d('0x10')]('/',auth[_0x9e4d('0xb')](),controller[_0x9e4d('0x11')]);router[_0x9e4d('0x10')](_0x9e4d('0xc'),auth[_0x9e4d('0xb')](),controller[_0x9e4d('0x12')]);router['post'](_0x9e4d('0xe'),auth[_0x9e4d('0xb')](),controller[_0x9e4d('0x13')]);router[_0x9e4d('0x14')](_0x9e4d('0xa'),auth[_0x9e4d('0xb')](),controller['update']);router[_0x9e4d('0x15')](_0x9e4d('0xa'),auth[_0x9e4d('0xb')](),controller[_0x9e4d('0x16')]);router[_0x9e4d('0x15')](_0x9e4d('0xc'),auth['isAuthenticated'](),controller[_0x9e4d('0x17')]);router['delete']('/:id/teams',auth[_0x9e4d('0xb')](),controller[_0x9e4d('0x18')]);module[_0x9e4d('0x19')]=router;
\ No newline at end of file
+var _0xf8be=['express','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./voicePrefix.controller','get','isAuthenticated','index','/describe','describe','/:id','show','/:id/users','getAgents','post','create','addAgents','put','update','delete','destroy','removeAgents','exports','util','connect-timeout'];(function(_0x57a9ca,_0x434c80){var _0x446ece=function(_0x8a5b6f){while(--_0x8a5b6f){_0x57a9ca['push'](_0x57a9ca['shift']());}};_0x446ece(++_0x434c80);}(_0xf8be,0x11c));var _0xef8b=function(_0x53010f,_0x46fd1a){_0x53010f=_0x53010f-0x0;var _0x152f0f=_0xf8be[_0x53010f];return _0x152f0f;};'use strict';var multer=require('multer');var util=require(_0xef8b('0x0'));var path=require('path');var timeout=require(_0xef8b('0x1'));var express=require(_0xef8b('0x2'));var router=express['Router']();var fs_extra=require(_0xef8b('0x3'));var auth=require(_0xef8b('0x4'));var interaction=require(_0xef8b('0x5'));var config=require(_0xef8b('0x6'));var controller=require(_0xef8b('0x7'));router[_0xef8b('0x8')]('/',auth[_0xef8b('0x9')](),controller[_0xef8b('0xa')]);router['get'](_0xef8b('0xb'),auth[_0xef8b('0x9')](),controller[_0xef8b('0xc')]);router[_0xef8b('0x8')](_0xef8b('0xd'),auth[_0xef8b('0x9')](),controller[_0xef8b('0xe')]);router[_0xef8b('0x8')](_0xef8b('0xf'),auth[_0xef8b('0x9')](),controller[_0xef8b('0x10')]);router[_0xef8b('0x11')]('/',auth[_0xef8b('0x9')](),controller[_0xef8b('0x12')]);router['post'](_0xef8b('0xf'),auth[_0xef8b('0x9')](),controller[_0xef8b('0x13')]);router[_0xef8b('0x14')]('/:id',auth[_0xef8b('0x9')](),controller[_0xef8b('0x15')]);router[_0xef8b('0x16')](_0xef8b('0xd'),auth[_0xef8b('0x9')](),controller[_0xef8b('0x17')]);router[_0xef8b('0x16')]('/:id/users',auth['isAuthenticated'](),controller[_0xef8b('0x18')]);module[_0xef8b('0x19')]=router;
\ No newline at end of file
index 4bb5496..8a97aec 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9a48=['INTEGER','sequelize','name','VIRTUAL','system-','getDataValue','STRING'];(function(_0x20ff04,_0x15589c){var _0x2536fa=function(_0x27a21a){while(--_0x27a21a){_0x20ff04['push'](_0x20ff04['shift']());}};_0x2536fa(++_0x15589c);}(_0x9a48,0x14a));var _0x89a4=function(_0x2467b8,_0x584199){_0x2467b8=_0x2467b8-0x0;var _0x5d3095=_0x9a48[_0x2467b8];return _0x5d3095;};'use strict';var Sequelize=require(_0x89a4('0x0'));module['exports']={'name':{'type':Sequelize['STRING'],'allowNull':![],'unique':_0x89a4('0x1')},'prefix':{'type':Sequelize[_0x89a4('0x2')],'get':function(_0x4bf613){return _0x89a4('0x3')+this[_0x89a4('0x4')](_0x89a4('0x1'))+'-';}},'description':{'type':Sequelize[_0x89a4('0x5')]},'callerIdAll':{'type':Sequelize[_0x89a4('0x5')]},'VoiceExtensionId':{'type':Sequelize[_0x89a4('0x6')]}};
\ No newline at end of file
+var _0x20c2=['VIRTUAL','sequelize','STRING','name'];(function(_0x154940,_0x1b13bb){var _0x3741af=function(_0x4786d0){while(--_0x4786d0){_0x154940['push'](_0x154940['shift']());}};_0x3741af(++_0x1b13bb);}(_0x20c2,0xc9));var _0x220c=function(_0x20a584,_0xe384a5){_0x20a584=_0x20a584-0x0;var _0x4b41a8=_0x20c2[_0x20a584];return _0x4b41a8;};'use strict';var Sequelize=require(_0x220c('0x0'));module['exports']={'name':{'type':Sequelize[_0x220c('0x1')],'allowNull':![],'unique':_0x220c('0x2')},'prefix':{'type':Sequelize[_0x220c('0x3')],'get':function(_0x40dcc5){return'system-'+this['getDataValue'](_0x220c('0x2'))+'-';}},'description':{'type':Sequelize['STRING']},'callerIdAll':{'type':Sequelize[_0x220c('0x1')]},'VoiceExtensionId':{'type':Sequelize['INTEGER']}};
\ No newline at end of file
index 9cff904..cbcaefd 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe1e3=['union','compact','value','isEmpty','forEach','eml-format','rimraf','fast-json-patch','bluebird','util','path','sox','to-csv','ejs','fs-extra','squel','crypto','jsforce','desk.js','querystring','../../components/parsers/qs','../../config/license/hardware','../../config/logger','api','../../config/environment','localhost','./voicePrefix.socket','register','sendStatus','status','offset','undefined','count','limit','Content-Range','json','reject','update','then','UserProfileResource','destroy','end','name','index','rawAttributes','fieldName','type','key','model','map','keys','query','intersection','attributes','fields','hasOwnProperty','nolimit','order','sort','where','pick','filter','VIRTUAL','options','VoicePrefix','includeAll','findAll','rows','show','filters','length','merge','find','catch','params','describe','create','get','VoiceExtension','VoiceExtensionId','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','UserProfileSection','VoicePrefixes','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','context','from-sip','exten','system','description','appdata','NoOp','Voice\x20Prefix','VoicePrefixId','prefix','push','CDR(prefix)=','callerIdAll','Set','PREFIX-CALLERIDALL=','goto','${EXTEN:','charAt','body','system-','sequelize','transaction','findById','addAgents','ids','omit','spread','emit','userVoicePrefix:save','removeAgents','userVoicePrefix:remove','getAgents','User','getTeams','findOne','Team','addTeams','Agents','online','voicePause','interface','flatMap','TeamVoicePrefix','each','UserVoicePrefix','removeTeams','select','tq.TeamId','team_has_voice_prefixes','join','user_has_teams','ut.TeamId\x20=\x20tq.TeamId','clone','ut.UserId\x20=\x20?','toString','QueryTypes','SELECT','every','includes','all'];(function(_0xc69530,_0x57c174){var _0x148a92=function(_0x409d97){while(--_0x409d97){_0xc69530['push'](_0xc69530['shift']());}};_0x148a92(++_0x57c174);}(_0xe1e3,0x1bb));var _0x3e1e=function(_0x2a8e48,_0x5ca147){_0x2a8e48=_0x2a8e48-0x0;var _0x1ecb7e=_0xe1e3[_0x2a8e48];return _0x1ecb7e;};'use strict';var emlformat=require(_0x3e1e('0x0'));var rimraf=require(_0x3e1e('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0x3e1e('0x2'));var rp=require('request-promise');var moment=require('moment');var BPromise=require(_0x3e1e('0x3'));var Mustache=require('mustache');var util=require(_0x3e1e('0x4'));var path=require(_0x3e1e('0x5'));var sox=require(_0x3e1e('0x6'));var csv=require(_0x3e1e('0x7'));var ejs=require(_0x3e1e('0x8'));var fs=require('fs');var fs_extra=require(_0x3e1e('0x9'));var _=require('lodash');var squel=require(_0x3e1e('0xa'));var crypto=require(_0x3e1e('0xb'));var jsforce=require(_0x3e1e('0xc'));var deskjs=require(_0x3e1e('0xd'));var toCsv=require(_0x3e1e('0x7'));var querystring=require(_0x3e1e('0xe'));var Papa=require('papaparse');var Redis=require('ioredis');var authService=require('../../components/auth/service');var qs=require(_0x3e1e('0xf'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x3e1e('0x10'));var logger=require(_0x3e1e('0x11'))(_0x3e1e('0x12'));var utils=require('../../config/utils');var config=require(_0x3e1e('0x13'));var licenseUtil=require('../../config/license/util');var db=require('../../mysqldb')['db'];config['redis']=_['defaults'](config['redis'],{'host':_0x3e1e('0x14'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config['redis']));require(_0x3e1e('0x15'))[_0x3e1e('0x16')](socket);function respondWithStatusCode(_0x78ee54,_0x50f221){_0x50f221=_0x50f221||0xcc;return function(_0x5b34ec){if(_0x5b34ec){return _0x78ee54[_0x3e1e('0x17')](_0x50f221);}return _0x78ee54[_0x3e1e('0x18')](_0x50f221)['end']();};}function respondWithResult(_0x26cb35,_0x1f0af9){_0x1f0af9=_0x1f0af9||0xc8;return function(_0x570212){if(_0x570212){return _0x26cb35[_0x3e1e('0x18')](_0x1f0af9)['json'](_0x570212);}};}function respondWithFilteredResult(_0x23228c,_0x247daa){return function(_0x1d786c){if(_0x1d786c){var _0x39eaa7=typeof _0x247daa[_0x3e1e('0x19')]===_0x3e1e('0x1a')&&typeof _0x247daa['limit']==='undefined';var _0x4a9497=_0x1d786c[_0x3e1e('0x1b')];var _0x30acbf=_0x39eaa7?0x0:_0x247daa[_0x3e1e('0x19')];var _0x57c660=_0x39eaa7?_0x1d786c[_0x3e1e('0x1b')]:_0x247daa['offset']+_0x247daa[_0x3e1e('0x1c')];var _0x33ec1d;if(_0x57c660>=_0x4a9497){_0x57c660=_0x4a9497;_0x33ec1d=0xc8;}else{_0x33ec1d=0xce;}_0x23228c[_0x3e1e('0x18')](_0x33ec1d);return _0x23228c['set'](_0x3e1e('0x1d'),_0x30acbf+'-'+_0x57c660+'/'+_0x4a9497)[_0x3e1e('0x1e')](_0x1d786c);}return null;};}function patchUpdates(_0xefa098){return function(_0x55dc62){try{jsonpatch['apply'](_0x55dc62,_0xefa098,!![]);}catch(_0x13d7ac){return BPromise[_0x3e1e('0x1f')](_0x13d7ac);}return _0x55dc62['save']();};}function saveUpdates(_0x60e6bc,_0x56ae51){return function(_0x164b15){if(_0x164b15){return _0x164b15[_0x3e1e('0x20')](_0x60e6bc)[_0x3e1e('0x21')](function(_0x159212){return _0x159212;});}return null;};}function removeEntity(_0x43d583,_0x21c898){return function(_0x4ee2b5){if(_0x4ee2b5){return _0x4ee2b5['destroy']()[_0x3e1e('0x21')](function(){var _0x541ef1=_0x4ee2b5['get']({'plain':!![]});var _0x4be84e='VoicePrefixes';return db[_0x3e1e('0x22')][_0x3e1e('0x23')]({'where':{'type':_0x4be84e,'resourceId':_0x541ef1['id']}})['then'](function(){return _0x4ee2b5;});})[_0x3e1e('0x21')](function(){_0x43d583['status'](0xcc)[_0x3e1e('0x24')]();});}};}function handleEntityNotFound(_0x176bb4,_0x53a6ff){return function(_0x43e029){if(!_0x43e029){_0x176bb4[_0x3e1e('0x17')](0x194);}return _0x43e029;};}function handleError(_0x45ed0e,_0x4d3695){_0x4d3695=_0x4d3695||0x1f4;return function(_0xdef39){logger['error'](_0xdef39['stack']);if(_0xdef39['name']){delete _0xdef39[_0x3e1e('0x25')];}_0x45ed0e['status'](_0x4d3695)['send'](_0xdef39);};}exports[_0x3e1e('0x26')]=function(_0x468336,_0x1c57c2){var _0x233b18={},_0xc9762c={},_0x54df5a={'count':0x0,'rows':[]};var _0x5522ba=_['map'](db['VoicePrefix'][_0x3e1e('0x27')],function(_0x417419){return{'name':_0x417419[_0x3e1e('0x28')],'type':_0x417419[_0x3e1e('0x29')][_0x3e1e('0x2a')]};});_0xc9762c[_0x3e1e('0x2b')]=_[_0x3e1e('0x2c')](_0x5522ba,_0x3e1e('0x25'));_0xc9762c['query']=_[_0x3e1e('0x2d')](_0x468336[_0x3e1e('0x2e')]);_0xc9762c['filters']=_[_0x3e1e('0x2f')](_0xc9762c[_0x3e1e('0x2b')],_0xc9762c[_0x3e1e('0x2e')]);_0x233b18[_0x3e1e('0x30')]=_['intersection'](_0xc9762c['model'],qs[_0x3e1e('0x31')](_0x468336[_0x3e1e('0x2e')]['fields']));_0x233b18[_0x3e1e('0x30')]=_0x233b18[_0x3e1e('0x30')]['length']?_0x233b18[_0x3e1e('0x30')]:_0xc9762c[_0x3e1e('0x2b')];if(!_0x468336[_0x3e1e('0x2e')][_0x3e1e('0x32')](_0x3e1e('0x33'))){_0x233b18['limit']=qs[_0x3e1e('0x1c')](_0x468336[_0x3e1e('0x2e')][_0x3e1e('0x1c')]);_0x233b18[_0x3e1e('0x19')]=qs['offset'](_0x468336[_0x3e1e('0x2e')][_0x3e1e('0x19')]);}_0x233b18[_0x3e1e('0x34')]=qs[_0x3e1e('0x35')](_0x468336[_0x3e1e('0x2e')][_0x3e1e('0x35')]);_0x233b18[_0x3e1e('0x36')]=qs['filters'](_[_0x3e1e('0x37')](_0x468336['query'],_0xc9762c['filters']),_0x5522ba);if(_0x468336[_0x3e1e('0x2e')][_0x3e1e('0x38')]){_0x233b18[_0x3e1e('0x36')]=_['merge'](_0x233b18[_0x3e1e('0x36')],{'$or':_[_0x3e1e('0x2c')](_0x5522ba,function(_0x4d372a){if(_0x4d372a[_0x3e1e('0x29')]!==_0x3e1e('0x39')){var _0x4b3d0f={};_0x4b3d0f[_0x4d372a['name']]={'$like':'%'+_0x468336[_0x3e1e('0x2e')]['filter']+'%'};return _0x4b3d0f;}})});}_0x233b18=_['merge']({},_0x233b18,_0x468336[_0x3e1e('0x3a')]);var _0x3d4a8d={'where':_0x233b18[_0x3e1e('0x36')]};return db[_0x3e1e('0x3b')][_0x3e1e('0x1b')](_0x3d4a8d)['then'](function(_0x5b32ad){_0x54df5a[_0x3e1e('0x1b')]=_0x5b32ad;if(_0x468336[_0x3e1e('0x2e')][_0x3e1e('0x3c')]){_0x233b18['include']=[{'all':!![]}];}return db[_0x3e1e('0x3b')][_0x3e1e('0x3d')](_0x233b18);})[_0x3e1e('0x21')](function(_0x4ad5fd){_0x54df5a[_0x3e1e('0x3e')]=_0x4ad5fd;return _0x54df5a;})['then'](respondWithFilteredResult(_0x1c57c2,_0x233b18))['catch'](handleError(_0x1c57c2,null));};exports[_0x3e1e('0x3f')]=function(_0x9053cd,_0x2a1373){var _0x3d6627={'raw':![],'where':{'id':_0x9053cd['params']['id']}},_0x4a2cfb={};_0x4a2cfb['model']=_['keys'](db[_0x3e1e('0x3b')][_0x3e1e('0x27')]);_0x4a2cfb['query']=_['keys'](_0x9053cd[_0x3e1e('0x2e')]);_0x4a2cfb[_0x3e1e('0x40')]=_[_0x3e1e('0x2f')](_0x4a2cfb['model'],_0x4a2cfb[_0x3e1e('0x2e')]);_0x3d6627['attributes']=_[_0x3e1e('0x2f')](_0x4a2cfb[_0x3e1e('0x2b')],qs[_0x3e1e('0x31')](_0x9053cd[_0x3e1e('0x2e')][_0x3e1e('0x31')]));_0x3d6627[_0x3e1e('0x30')]=_0x3d6627['attributes'][_0x3e1e('0x41')]?_0x3d6627[_0x3e1e('0x30')]:_0x4a2cfb['model'];if(_0x9053cd[_0x3e1e('0x2e')][_0x3e1e('0x3c')]){_0x3d6627['include']=[{'all':!![]}];}_0x3d6627=_[_0x3e1e('0x42')]({},_0x3d6627,_0x9053cd[_0x3e1e('0x3a')]);return db[_0x3e1e('0x3b')][_0x3e1e('0x43')](_0x3d6627)['then'](handleEntityNotFound(_0x2a1373,null))[_0x3e1e('0x21')](respondWithResult(_0x2a1373,null))[_0x3e1e('0x44')](handleError(_0x2a1373,null));};exports[_0x3e1e('0x23')]=function(_0xb086d4,_0x4bce83){return db[_0x3e1e('0x3b')][_0x3e1e('0x43')]({'where':{'id':_0xb086d4[_0x3e1e('0x45')]['id']}})[_0x3e1e('0x21')](handleEntityNotFound(_0x4bce83,null))[_0x3e1e('0x21')](removeEntity(_0x4bce83,null))[_0x3e1e('0x44')](handleError(_0x4bce83,null));};exports[_0x3e1e('0x46')]=function(_0x238a7d,_0x5df608){return db[_0x3e1e('0x3b')]['describe']()['then'](respondWithResult(_0x5df608,null))['catch'](handleError(_0x5df608,null));};exports[_0x3e1e('0x47')]=function(_0x17641c,_0x5147a2){var _0x13b076;return db['sequelize']['transaction'](function(_0x3eaf76){return db['VoicePrefix']['create'](_0x17641c['body'],{'transaction':_0x3eaf76})[_0x3e1e('0x21')](function(_0xe577b2){_0x13b076=_0xe577b2[_0x3e1e('0x48')]({'plain':!![]});return db[_0x3e1e('0x49')][_0x3e1e('0x43')]({'where':{'id':_0x13b076[_0x3e1e('0x4a')]},'raw':!![]})[_0x3e1e('0x21')](function(_0x5b71a6){return createVoicePrefixExtensions(_0x13b076,_0x5b71a6,_0x3eaf76);});});})[_0x3e1e('0x21')](function(){var _0x5f5587=_0x17641c[_0x3e1e('0x4b')][_0x3e1e('0x48')]({'plain':!![]});if(!_0x5f5587)throw new Error(_0x3e1e('0x4c'));if(_0x5f5587['role']==='user'){var _0xba8d16=_0x13b076;return db[_0x3e1e('0x4d')]['find']({'where':{'name':_0x3e1e('0x4e'),'userProfileId':_0x5f5587['userProfileId']},'raw':!![]})['then'](function(_0x284cc7){if(_0x284cc7&&_0x284cc7[_0x3e1e('0x4f')]===0x0){return db['UserProfileResource'][_0x3e1e('0x47')]({'name':_0xba8d16['name'],'resourceId':_0xba8d16['id'],'type':_0x284cc7['name'],'sectionId':_0x284cc7['id']},{})[_0x3e1e('0x21')](function(){return _0x13b076;});}else{return _0x13b076;}})['catch'](function(_0x3ab043){logger['error'](_0x3e1e('0x50'),_0x3ab043);throw _0x3ab043;});}return _0x13b076;})['then'](respondWithResult(_0x5147a2,null))[_0x3e1e('0x44')](handleError(_0x5147a2,null));};function Extension(_0x8a4987,_0x48be40,_0x4dfc6d,_0x499abc){this[_0x3e1e('0x51')]=_0x3e1e('0x52');this[_0x3e1e('0x53')]=_0x8a4987;this['app']=_0x4dfc6d;this[_0x3e1e('0x29')]=_0x3e1e('0x54');this[_0x3e1e('0x55')]='Voice\x20Prefix\x20Extension';this['priority']=_0x48be40;this[_0x3e1e('0x56')]=_0x499abc;}function createVoicePrefixExtensions(_0x48f406,_0x3b97a2,_0x6c0364){return new BPromise(function(_0x13eefb,_0x5a76c2){var _0x2bdd35=new Extension(formatPrefixName(_0x48f406['prefix']),0x1,_0x3e1e('0x57'),_0x3e1e('0x58'));_0x2bdd35['VoicePrefixId']=_0x48f406['id'];return db[_0x3e1e('0x49')]['create'](_0x2bdd35,{'transaction':_0x6c0364})[_0x3e1e('0x21')](function(_0x574c30){var _0x4dafe9=_0x574c30['get']({'plain':!![]});var _0x31062e=_[_0x3e1e('0x2c')](addVoicePrefixExtensions(_0x48f406,_0x3b97a2),function(_0x3457a1){_0x3457a1['VoiceExtensionId']=_0x4dafe9['id'];_0x3457a1[_0x3e1e('0x59')]=_0x48f406['id'];return _0x3457a1;});return db[_0x3e1e('0x49')]['bulkCreate'](_0x31062e,{'transaction':_0x6c0364})[_0x3e1e('0x21')](function(_0x583535){if(!_0x583535){return _0x5a76c2('Extensions\x20creation\x20failed');}else{return _0x13eefb(_0x583535);}})['catch'](function(_0x182da4){return _0x5a76c2(_0x182da4);});});;});};function addVoicePrefixExtensions(_0x3e6e12,_0x384ee6){var _0x4b0944=[];var _0x35d915=formatPrefixName(_0x3e6e12[_0x3e1e('0x5a')]);_0x4b0944[_0x3e1e('0x5b')](new Extension(_0x35d915,0x2,'Set',_0x3e1e('0x5c')+_0x3e6e12[_0x3e1e('0x25')]));if(_0x3e6e12[_0x3e1e('0x5d')]){_0x4b0944[_0x3e1e('0x5b')](new Extension(_0x35d915,0x3,_0x3e1e('0x5e'),_0x3e1e('0x5f')+_0x3e6e12[_0x3e1e('0x5d')]));}else{_0x4b0944[_0x3e1e('0x5b')](new Extension(_0x35d915,0x3,'NoOp','No\x20callerid\x20available'));}_0x4b0944[_0x3e1e('0x5b')](new Extension(_0x35d915,0x4,_0x3e1e('0x60'),_0x384ee6[_0x3e1e('0x51')]+','+_0x3e1e('0x61')+(0x8+_0x3e6e12[_0x3e1e('0x25')][_0x3e1e('0x41')])+'}'+','+0x1));return _0x4b0944;}function formatPrefixName(_0x35c9c3){var _0x112a22='_';for(var _0x2b78d5=0x0;_0x2b78d5<_0x35c9c3[_0x3e1e('0x41')];_0x2b78d5++){if(_0x35c9c3[_0x3e1e('0x62')](_0x2b78d5)=='-'){_0x112a22+=_0x35c9c3[_0x3e1e('0x62')](_0x2b78d5);}else{_0x112a22+='['+_0x35c9c3['charAt'](_0x2b78d5)+']';}}_0x112a22+='.';return _0x112a22;}exports['update']=function(_0x20bc4d,_0x29ddc4,_0x477e64){var _0x1d6135=_0x20bc4d[_0x3e1e('0x63')];_0x1d6135['prefix']=_0x3e1e('0x64')+_0x1d6135[_0x3e1e('0x25')]+'-';return db[_0x3e1e('0x65')][_0x3e1e('0x66')](function(_0x522637){return db['VoicePrefix'][_0x3e1e('0x20')](_0x1d6135,{'where':{'id':_0x1d6135['id']},'transaction':_0x522637})[_0x3e1e('0x21')](function(){return db[_0x3e1e('0x49')][_0x3e1e('0x23')]({'where':{'VoicePrefixId':_0x1d6135['id']},'transaction':_0x522637})[_0x3e1e('0x21')](function(){return db[_0x3e1e('0x49')]['find']({'where':{'id':_0x1d6135[_0x3e1e('0x4a')]},'raw':!![]})[_0x3e1e('0x21')](function(_0x34f093){return createVoicePrefixExtensions(_0x1d6135,_0x34f093,_0x522637);});});});})[_0x3e1e('0x21')](function(){return db[_0x3e1e('0x3b')][_0x3e1e('0x67')](_0x1d6135['id']);})['then'](respondWithResult(_0x29ddc4,null))[_0x3e1e('0x44')](handleError(_0x29ddc4,null));};exports[_0x3e1e('0x68')]=function(_0x4b78de,_0x109407,_0x2aef1b){return db[_0x3e1e('0x3b')]['find']({'where':{'id':_0x4b78de[_0x3e1e('0x45')]['id']}})['then'](handleEntityNotFound(_0x109407,null))[_0x3e1e('0x21')](function(_0x17c054){if(_0x17c054){return _0x17c054['addAgents'](_0x4b78de[_0x3e1e('0x63')][_0x3e1e('0x69')],_[_0x3e1e('0x6a')](_0x4b78de[_0x3e1e('0x63')],['ids','id'])||{})[_0x3e1e('0x6b')](function(_0x4a7dcc){for(var _0x2d6bb0=0x0;_0x2d6bb0<_0x4b78de[_0x3e1e('0x63')][_0x3e1e('0x69')][_0x3e1e('0x41')];_0x2d6bb0+=0x1){socket[_0x3e1e('0x6c')](_0x3e1e('0x6d'),{'UserId':Number(_0x4b78de['body'][_0x3e1e('0x69')][_0x2d6bb0]),'VoicePrefixId':Number(_0x4b78de[_0x3e1e('0x45')]['id'])});}return _0x4a7dcc;});}})[_0x3e1e('0x21')](respondWithResult(_0x109407,null))[_0x3e1e('0x44')](handleError(_0x109407,null));};exports['removeAgents']=function(_0x1ddf4a,_0x11eb0a,_0x437724){return db[_0x3e1e('0x3b')]['find']({'where':{'id':_0x1ddf4a[_0x3e1e('0x45')]['id']}})[_0x3e1e('0x21')](handleEntityNotFound(_0x11eb0a,null))[_0x3e1e('0x21')](function(_0x2161a4){if(_0x2161a4){return _0x2161a4[_0x3e1e('0x6e')](_0x1ddf4a[_0x3e1e('0x2e')]['ids'])['then'](function(){if(_['isArray'](_0x1ddf4a[_0x3e1e('0x2e')]['ids'])){for(var _0x321aa4=0x0;_0x321aa4<_0x1ddf4a['query'][_0x3e1e('0x69')][_0x3e1e('0x41')];_0x321aa4+=0x1){socket[_0x3e1e('0x6c')](_0x3e1e('0x6f'),{'UserId':Number(_0x1ddf4a['query'][_0x3e1e('0x69')][_0x321aa4]),'VoicePrefixId':Number(_0x1ddf4a['params']['id'])});}}else{socket[_0x3e1e('0x6c')]('userVoicePrefix:remove',{'UserId':Number(_0x1ddf4a[_0x3e1e('0x2e')][_0x3e1e('0x69')]),'VoicePrefixId':Number(_0x1ddf4a['params']['id'])});}});}})[_0x3e1e('0x21')](respondWithStatusCode(_0x11eb0a,null))[_0x3e1e('0x44')](handleError(_0x11eb0a,null));};exports[_0x3e1e('0x70')]=function(_0x4ad5e2,_0x53ba1b,_0x185a4d){var _0x20bb6d={};var _0x120618={};var _0x4dac94;var _0x2fced0;return db['VoicePrefix']['findOne']({'where':{'id':_0x4ad5e2['params']['id']}})[_0x3e1e('0x21')](handleEntityNotFound(_0x53ba1b,null))['then'](function(_0x44c0ee){if(_0x44c0ee){_0x4dac94=_0x44c0ee;_0x120618[_0x3e1e('0x2b')]=_[_0x3e1e('0x2d')](db[_0x3e1e('0x71')][_0x3e1e('0x27')]);_0x120618[_0x3e1e('0x2e')]=_[_0x3e1e('0x2d')](_0x4ad5e2[_0x3e1e('0x2e')]);_0x120618[_0x3e1e('0x40')]=_['intersection'](_0x120618['model'],_0x120618[_0x3e1e('0x2e')]);_0x20bb6d[_0x3e1e('0x30')]=_[_0x3e1e('0x2f')](_0x120618[_0x3e1e('0x2b')],qs[_0x3e1e('0x31')](_0x4ad5e2[_0x3e1e('0x2e')][_0x3e1e('0x31')]));_0x20bb6d[_0x3e1e('0x30')]=_0x20bb6d[_0x3e1e('0x30')]['length']?_0x20bb6d[_0x3e1e('0x30')]:_0x120618[_0x3e1e('0x2b')];_0x20bb6d[_0x3e1e('0x34')]=qs[_0x3e1e('0x35')](_0x4ad5e2[_0x3e1e('0x2e')][_0x3e1e('0x35')]);_0x20bb6d[_0x3e1e('0x36')]=qs[_0x3e1e('0x40')](_[_0x3e1e('0x37')](_0x4ad5e2[_0x3e1e('0x2e')],_0x120618[_0x3e1e('0x40')]));if(_0x4ad5e2[_0x3e1e('0x2e')]['filter']){_0x20bb6d[_0x3e1e('0x36')]=_[_0x3e1e('0x42')](_0x20bb6d['where'],{'$or':_[_0x3e1e('0x2c')](_0x20bb6d[_0x3e1e('0x30')],function(_0x1b7e29){var _0x292efb={};_0x292efb[_0x1b7e29]={'$like':'%'+_0x4ad5e2['query'][_0x3e1e('0x38')]+'%'};return _0x292efb;})});}_0x20bb6d=_[_0x3e1e('0x42')]({},_0x20bb6d,_0x4ad5e2[_0x3e1e('0x3a')]);return _0x4dac94[_0x3e1e('0x70')](_0x20bb6d);}})[_0x3e1e('0x21')](function(_0x285f83){if(_0x285f83){_0x2fced0=_0x285f83[_0x3e1e('0x41')];if(!_0x4ad5e2[_0x3e1e('0x2e')]['hasOwnProperty'](_0x3e1e('0x33'))){_0x20bb6d['limit']=qs[_0x3e1e('0x1c')](_0x4ad5e2[_0x3e1e('0x2e')][_0x3e1e('0x1c')]);_0x20bb6d[_0x3e1e('0x19')]=qs['offset'](_0x4ad5e2[_0x3e1e('0x2e')]['offset']);}return _0x4dac94[_0x3e1e('0x70')](_0x20bb6d);}})['then'](function(_0x1be666){if(_0x1be666){return _0x1be666?{'count':_0x2fced0,'rows':_0x1be666}:null;}})[_0x3e1e('0x21')](respondWithResult(_0x53ba1b,null))['catch'](handleError(_0x53ba1b,null));};exports[_0x3e1e('0x72')]=function(_0x1ed174,_0x54723b,_0x3d2406){var _0x2f07d3={};var _0x3b6af5={};var _0x23c86b;var _0x38a5b0;return db[_0x3e1e('0x3b')][_0x3e1e('0x73')]({'where':{'id':_0x1ed174['params']['id']}})[_0x3e1e('0x21')](handleEntityNotFound(_0x54723b,null))[_0x3e1e('0x21')](function(_0x5c5d32){if(_0x5c5d32){_0x23c86b=_0x5c5d32;_0x3b6af5[_0x3e1e('0x2b')]=_[_0x3e1e('0x2d')](db[_0x3e1e('0x74')]['rawAttributes']);_0x3b6af5[_0x3e1e('0x2e')]=_[_0x3e1e('0x2d')](_0x1ed174[_0x3e1e('0x2e')]);_0x3b6af5['filters']=_[_0x3e1e('0x2f')](_0x3b6af5['model'],_0x3b6af5[_0x3e1e('0x2e')]);_0x2f07d3[_0x3e1e('0x30')]=_[_0x3e1e('0x2f')](_0x3b6af5[_0x3e1e('0x2b')],qs[_0x3e1e('0x31')](_0x1ed174['query'][_0x3e1e('0x31')]));_0x2f07d3[_0x3e1e('0x30')]=_0x2f07d3[_0x3e1e('0x30')][_0x3e1e('0x41')]?_0x2f07d3[_0x3e1e('0x30')]:_0x3b6af5[_0x3e1e('0x2b')];_0x2f07d3[_0x3e1e('0x34')]=qs[_0x3e1e('0x35')](_0x1ed174[_0x3e1e('0x2e')]['sort']);_0x2f07d3[_0x3e1e('0x36')]=qs[_0x3e1e('0x40')](_[_0x3e1e('0x37')](_0x1ed174[_0x3e1e('0x2e')],_0x3b6af5[_0x3e1e('0x40')]));if(_0x1ed174['query'][_0x3e1e('0x38')]){_0x2f07d3[_0x3e1e('0x36')]=_[_0x3e1e('0x42')](_0x2f07d3[_0x3e1e('0x36')],{'$or':_[_0x3e1e('0x2c')](_0x2f07d3[_0x3e1e('0x30')],function(_0x1047de){var _0xe0eeab={};_0xe0eeab[_0x1047de]={'$like':'%'+_0x1ed174[_0x3e1e('0x2e')]['filter']+'%'};return _0xe0eeab;})});}_0x2f07d3=_[_0x3e1e('0x42')]({},_0x2f07d3,_0x1ed174[_0x3e1e('0x3a')]);return _0x23c86b['getTeams'](_0x2f07d3);}})[_0x3e1e('0x21')](function(_0x537072){if(_0x537072){_0x38a5b0=_0x537072[_0x3e1e('0x41')];if(!_0x1ed174[_0x3e1e('0x2e')][_0x3e1e('0x32')](_0x3e1e('0x33'))){_0x2f07d3[_0x3e1e('0x1c')]=qs[_0x3e1e('0x1c')](_0x1ed174[_0x3e1e('0x2e')][_0x3e1e('0x1c')]);_0x2f07d3[_0x3e1e('0x19')]=qs[_0x3e1e('0x19')](_0x1ed174['query']['offset']);}return _0x23c86b[_0x3e1e('0x72')](_0x2f07d3);}})[_0x3e1e('0x21')](function(_0x548cba){if(_0x548cba){return _0x548cba?{'count':_0x38a5b0,'rows':_0x548cba}:null;}})[_0x3e1e('0x21')](respondWithResult(_0x54723b,null))[_0x3e1e('0x44')](handleError(_0x54723b,null));};exports[_0x3e1e('0x75')]=function(_0x4a33f5,_0x5a6cb2,_0x2ec5e9){var _0xbfc033=_0x4a33f5[_0x3e1e('0x63')]['ids'];var _0x3049c4;return db['Team']['findAll']({'where':{'id':_0xbfc033},'attributes':['id'],'include':[{'model':db[_0x3e1e('0x71')],'as':_0x3e1e('0x76'),'attributes':['id','name',_0x3e1e('0x77'),_0x3e1e('0x78'),_0x3e1e('0x79')],'raw':!![]}]})[_0x3e1e('0x21')](function(_0x1ca30f){if(_0x1ca30f){_0x3049c4=_0x1ca30f;var _0x285ae4=_[_0x3e1e('0x7a')](_0x1ca30f,function(_0x32c3cf){var _0x201d18=_0x32c3cf[_0x3e1e('0x48')]({'plain':!![]});return _0x201d18[_0x3e1e('0x76')];});return db['VoicePrefix']['find']({'where':{'id':_0x4a33f5[_0x3e1e('0x45')]['id']}})[_0x3e1e('0x21')](function(_0x416b06){return db[_0x3e1e('0x65')]['transaction'](function(_0x2dea8b){return _0x416b06[_0x3e1e('0x75')](_0xbfc033,{'transaction':_0x2dea8b})['then'](function(){return BPromise['each'](_0x3049c4,function(_0x34c4c8){return db[_0x3e1e('0x7b')]['upsert']({'TeamId':_0x34c4c8['id'],'VoicePrefixId':_0x4a33f5[_0x3e1e('0x45')]['id']},{'transaction':_0x2dea8b});});})[_0x3e1e('0x21')](function(){return BPromise[_0x3e1e('0x7c')](_0x285ae4,function(_0x4332db){return db[_0x3e1e('0x7d')]['findOrCreate']({'where':{'UserId':_0x4332db['id'],'VoicePrefixId':_0x4a33f5[_0x3e1e('0x45')]['id']},'transaction':_0x2dea8b});});})[_0x3e1e('0x21')](function(){_0x285ae4['forEach'](function(_0x838800){socket['emit']('userVoicePrefix:save',{'UserId':_0x838800['id'],'VoicePrefixId':_0x416b06['id']});});});});});}})[_0x3e1e('0x21')](respondWithStatusCode(_0x5a6cb2,null))[_0x3e1e('0x44')](handleError(_0x5a6cb2,null));};exports[_0x3e1e('0x7e')]=function(_0xe57be2,_0x3ad5b0,_0x5788ea){return db[_0x3e1e('0x74')][_0x3e1e('0x3d')]({'where':{'id':_0xe57be2[_0x3e1e('0x2e')][_0x3e1e('0x69')]},'attributes':['id'],'include':[{'model':db[_0x3e1e('0x71')],'as':_0x3e1e('0x76'),'attributes':['id'],'raw':!![]}]})[_0x3e1e('0x21')](handleEntityNotFound(_0x3ad5b0,null))['then'](function(_0x2511d2){var _0x2d29d7=_[_0x3e1e('0x2c')](_0x2511d2,'id');var _0x161aa2=[];var _0x61318=[];var _0x20fa70=squel[_0x3e1e('0x7f')]();_0x20fa70['field'](_0x3e1e('0x80'))['from'](_0x3e1e('0x81'),'tq')[_0x3e1e('0x82')](_0x3e1e('0x83'),'ut',_0x3e1e('0x84'))[_0x3e1e('0x36')]('VoicePrefixId\x20=\x20?',_0xe57be2[_0x3e1e('0x45')]['id']);for(var _0x463428=0x0;_0x463428<_0x2511d2[_0x3e1e('0x41')];_0x463428+=0x1){let _0x5c6ba6=_0x2511d2[_0x463428];for(var _0x37eb53=0x0;_0x37eb53<_0x5c6ba6[_0x3e1e('0x76')]['length'];_0x37eb53+=0x1){let _0x3ae731=_0x5c6ba6['Agents'][_0x37eb53];var _0x2a2e80=_0x20fa70[_0x3e1e('0x85')]();_0x2a2e80[_0x3e1e('0x36')](_0x3e1e('0x86'),_0x3ae731['id']);_0x61318['push'](db[_0x3e1e('0x65')][_0x3e1e('0x2e')](_0x2a2e80[_0x3e1e('0x87')](),{'type':db[_0x3e1e('0x65')][_0x3e1e('0x88')][_0x3e1e('0x89')]})[_0x3e1e('0x21')](function(_0x415c88){if(_0x415c88[_0x3e1e('0x41')]===0x1){return _0x3ae731['id'];}else{var _0x187048=_[_0x3e1e('0x8a')](_[_0x3e1e('0x2c')](_0x415c88,'TeamId'),function(_0x244a5d){return _[_0x3e1e('0x8b')](_0x2d29d7,_0x244a5d);});if(_0x187048){return _0x3ae731['id'];}}}));}}return BPromise[_0x3e1e('0x8c')](_0x61318)[_0x3e1e('0x21')](function(_0x4afad1){_0x161aa2=_(_0x161aa2)[_0x3e1e('0x8d')](_0x4afad1)[_0x3e1e('0x8e')]()[_0x3e1e('0x8f')]();return db[_0x3e1e('0x3b')]['find']({'where':{'id':_0xe57be2[_0x3e1e('0x45')]['id']}})[_0x3e1e('0x21')](function(_0x5ef204){return db[_0x3e1e('0x65')][_0x3e1e('0x66')](function(_0x487d3f){return _0x5ef204[_0x3e1e('0x7e')](_0xe57be2[_0x3e1e('0x2e')][_0x3e1e('0x69')],{'transaction':_0x487d3f})[_0x3e1e('0x21')](function(){if(!_[_0x3e1e('0x90')](_0x161aa2)){return _0x5ef204['removeAgents'](_0x161aa2,{'transaction':_0x487d3f});}})[_0x3e1e('0x21')](function(){_0x161aa2[_0x3e1e('0x91')](function(_0x22d774){socket['emit'](_0x3e1e('0x6f'),{'UserId':_0x22d774,'VoicePrefixId':_0x5ef204['id']});});});});});});})[_0x3e1e('0x21')](respondWithStatusCode(_0x3ad5b0,null))[_0x3e1e('0x44')](handleError(_0x3ad5b0,null));};
\ No newline at end of file
+var _0x438a=['description','Voice\x20Prefix\x20Extension','priority','appdata','prefix','Voice\x20Prefix','VoicePrefixId','bulkCreate','push','Set','CDR(prefix)=','callerIdAll','NoOp','charAt','system-','addAgents','omit','ids','spread','emit','userVoicePrefix:save','removeAgents','isArray','userVoicePrefix:remove','findOne','getAgents','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','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/license/util','redis','socket.io-emitter','./voicePrefix.socket','sendStatus','status','end','json','limit','undefined','offset','count','Content-Range','apply','reject','save','update','then','destroy','get','error','stack','name','send','map','VoicePrefix','rawAttributes','fieldName','type','model','keys','query','intersection','fields','attributes','length','hasOwnProperty','order','sort','where','pick','filters','filter','merge','options','include','findAll','catch','includeAll','find','params','describe','sequelize','transaction','create','body','VoiceExtension','VoiceExtensionId','user','UserProfileSection','VoicePrefixes','userProfileId','autoAssociation','UserProfileResource','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','context','from-sip','exten','app','system'];(function(_0x55cdee,_0x36ee3d){var _0x28433f=function(_0x23829d){while(--_0x23829d){_0x55cdee['push'](_0x55cdee['shift']());}};_0x28433f(++_0x36ee3d);}(_0x438a,0x18b));var _0xa438=function(_0x4bca3a,_0x2948ab){_0x4bca3a=_0x4bca3a-0x0;var _0x297831=_0x438a[_0x4bca3a];return _0x297831;};'use strict';var emlformat=require(_0xa438('0x0'));var rimraf=require(_0xa438('0x1'));var zipdir=require(_0xa438('0x2'));var jsonpatch=require(_0xa438('0x3'));var rp=require(_0xa438('0x4'));var moment=require(_0xa438('0x5'));var BPromise=require(_0xa438('0x6'));var Mustache=require(_0xa438('0x7'));var util=require(_0xa438('0x8'));var path=require(_0xa438('0x9'));var sox=require(_0xa438('0xa'));var csv=require(_0xa438('0xb'));var ejs=require(_0xa438('0xc'));var fs=require('fs');var fs_extra=require(_0xa438('0xd'));var _=require(_0xa438('0xe'));var squel=require(_0xa438('0xf'));var crypto=require(_0xa438('0x10'));var jsforce=require(_0xa438('0x11'));var deskjs=require(_0xa438('0x12'));var toCsv=require(_0xa438('0xb'));var querystring=require(_0xa438('0x13'));var Papa=require(_0xa438('0x14'));var Redis=require('ioredis');var authService=require('../../components/auth/service');var qs=require(_0xa438('0x15'));var as=require(_0xa438('0x16'));var hardwareService=require(_0xa438('0x17'));var logger=require(_0xa438('0x18'))(_0xa438('0x19'));var utils=require(_0xa438('0x1a'));var config=require('../../config/environment');var licenseUtil=require(_0xa438('0x1b'));var db=require('../../mysqldb')['db'];config[_0xa438('0x1c')]=_['defaults'](config[_0xa438('0x1c')],{'host':'localhost','port':0x18eb});var socket=require(_0xa438('0x1d'))(new Redis(config[_0xa438('0x1c')]));require(_0xa438('0x1e'))['register'](socket);function respondWithStatusCode(_0x3238f7,_0x779987){_0x779987=_0x779987||0xcc;return function(_0x3f4f39){if(_0x3f4f39){return _0x3238f7[_0xa438('0x1f')](_0x779987);}return _0x3238f7[_0xa438('0x20')](_0x779987)[_0xa438('0x21')]();};}function respondWithResult(_0x420939,_0x342a06){_0x342a06=_0x342a06||0xc8;return function(_0x5727af){if(_0x5727af){return _0x420939[_0xa438('0x20')](_0x342a06)[_0xa438('0x22')](_0x5727af);}};}function respondWithFilteredResult(_0x10e2b2,_0x316477){return function(_0x379f5f){if(_0x379f5f){var _0x32a667=typeof _0x316477['offset']==='undefined'&&typeof _0x316477[_0xa438('0x23')]===_0xa438('0x24');var _0x159406=_0x379f5f['count'];var _0xd10746=_0x32a667?0x0:_0x316477[_0xa438('0x25')];var _0x422dbc=_0x32a667?_0x379f5f[_0xa438('0x26')]:_0x316477['offset']+_0x316477[_0xa438('0x23')];var _0x3d9ce9;if(_0x422dbc>=_0x159406){_0x422dbc=_0x159406;_0x3d9ce9=0xc8;}else{_0x3d9ce9=0xce;}_0x10e2b2[_0xa438('0x20')](_0x3d9ce9);return _0x10e2b2['set'](_0xa438('0x27'),_0xd10746+'-'+_0x422dbc+'/'+_0x159406)[_0xa438('0x22')](_0x379f5f);}return null;};}function patchUpdates(_0xfb9a7c){return function(_0x2bb687){try{jsonpatch[_0xa438('0x28')](_0x2bb687,_0xfb9a7c,!![]);}catch(_0x266410){return BPromise[_0xa438('0x29')](_0x266410);}return _0x2bb687[_0xa438('0x2a')]();};}function saveUpdates(_0x3c50e0,_0x3b15bf){return function(_0x318e39){if(_0x318e39){return _0x318e39[_0xa438('0x2b')](_0x3c50e0)[_0xa438('0x2c')](function(_0x7a7426){return _0x7a7426;});}return null;};}function removeEntity(_0x32f193,_0x34f6bc){return function(_0x294f00){if(_0x294f00){return _0x294f00[_0xa438('0x2d')]()[_0xa438('0x2c')](function(){var _0x47a4e7=_0x294f00[_0xa438('0x2e')]({'plain':!![]});var _0x5c09c7='VoicePrefixes';return db['UserProfileResource'][_0xa438('0x2d')]({'where':{'type':_0x5c09c7,'resourceId':_0x47a4e7['id']}})[_0xa438('0x2c')](function(){return _0x294f00;});})[_0xa438('0x2c')](function(){_0x32f193[_0xa438('0x20')](0xcc)[_0xa438('0x21')]();});}};}function handleEntityNotFound(_0x1efe91,_0x3a1be5){return function(_0x22b18f){if(!_0x22b18f){_0x1efe91['sendStatus'](0x194);}return _0x22b18f;};}function handleError(_0x24947a,_0x542833){_0x542833=_0x542833||0x1f4;return function(_0x593d01){logger[_0xa438('0x2f')](_0x593d01[_0xa438('0x30')]);if(_0x593d01[_0xa438('0x31')]){delete _0x593d01['name'];}_0x24947a[_0xa438('0x20')](_0x542833)[_0xa438('0x32')](_0x593d01);};}exports['index']=function(_0x6236a7,_0x5075ae){var _0x2c8b75={},_0x48a219={},_0x109730={'count':0x0,'rows':[]};var _0x2e7138=_[_0xa438('0x33')](db[_0xa438('0x34')][_0xa438('0x35')],function(_0x578519){return{'name':_0x578519[_0xa438('0x36')],'type':_0x578519[_0xa438('0x37')]['key']};});_0x48a219[_0xa438('0x38')]=_[_0xa438('0x33')](_0x2e7138,_0xa438('0x31'));_0x48a219['query']=_[_0xa438('0x39')](_0x6236a7[_0xa438('0x3a')]);_0x48a219['filters']=_[_0xa438('0x3b')](_0x48a219['model'],_0x48a219[_0xa438('0x3a')]);_0x2c8b75['attributes']=_[_0xa438('0x3b')](_0x48a219['model'],qs[_0xa438('0x3c')](_0x6236a7[_0xa438('0x3a')][_0xa438('0x3c')]));_0x2c8b75['attributes']=_0x2c8b75[_0xa438('0x3d')][_0xa438('0x3e')]?_0x2c8b75['attributes']:_0x48a219[_0xa438('0x38')];if(!_0x6236a7[_0xa438('0x3a')][_0xa438('0x3f')]('nolimit')){_0x2c8b75[_0xa438('0x23')]=qs[_0xa438('0x23')](_0x6236a7[_0xa438('0x3a')][_0xa438('0x23')]);_0x2c8b75['offset']=qs[_0xa438('0x25')](_0x6236a7[_0xa438('0x3a')][_0xa438('0x25')]);}_0x2c8b75[_0xa438('0x40')]=qs[_0xa438('0x41')](_0x6236a7[_0xa438('0x3a')]['sort']);_0x2c8b75[_0xa438('0x42')]=qs['filters'](_[_0xa438('0x43')](_0x6236a7['query'],_0x48a219[_0xa438('0x44')]),_0x2e7138);if(_0x6236a7[_0xa438('0x3a')][_0xa438('0x45')]){_0x2c8b75[_0xa438('0x42')]=_['merge'](_0x2c8b75[_0xa438('0x42')],{'$or':_[_0xa438('0x33')](_0x2e7138,function(_0x22e705){if(_0x22e705['type']!=='VIRTUAL'){var _0x38f1f4={};_0x38f1f4[_0x22e705[_0xa438('0x31')]]={'$like':'%'+_0x6236a7[_0xa438('0x3a')]['filter']+'%'};return _0x38f1f4;}})});}_0x2c8b75=_[_0xa438('0x46')]({},_0x2c8b75,_0x6236a7[_0xa438('0x47')]);var _0x3837e4={'where':_0x2c8b75['where']};return db[_0xa438('0x34')][_0xa438('0x26')](_0x3837e4)[_0xa438('0x2c')](function(_0x423715){_0x109730[_0xa438('0x26')]=_0x423715;if(_0x6236a7[_0xa438('0x3a')]['includeAll']){_0x2c8b75[_0xa438('0x48')]=[{'all':!![]}];}return db['VoicePrefix'][_0xa438('0x49')](_0x2c8b75);})['then'](function(_0x50df19){_0x109730['rows']=_0x50df19;return _0x109730;})[_0xa438('0x2c')](respondWithFilteredResult(_0x5075ae,_0x2c8b75))[_0xa438('0x4a')](handleError(_0x5075ae,null));};exports['show']=function(_0x537182,_0x9447d8){var _0x1c610d={'raw':![],'where':{'id':_0x537182['params']['id']}},_0x2b6aa8={};_0x2b6aa8[_0xa438('0x38')]=_[_0xa438('0x39')](db[_0xa438('0x34')][_0xa438('0x35')]);_0x2b6aa8[_0xa438('0x3a')]=_[_0xa438('0x39')](_0x537182[_0xa438('0x3a')]);_0x2b6aa8[_0xa438('0x44')]=_[_0xa438('0x3b')](_0x2b6aa8[_0xa438('0x38')],_0x2b6aa8['query']);_0x1c610d[_0xa438('0x3d')]=_[_0xa438('0x3b')](_0x2b6aa8[_0xa438('0x38')],qs[_0xa438('0x3c')](_0x537182[_0xa438('0x3a')]['fields']));_0x1c610d[_0xa438('0x3d')]=_0x1c610d[_0xa438('0x3d')]['length']?_0x1c610d[_0xa438('0x3d')]:_0x2b6aa8[_0xa438('0x38')];if(_0x537182[_0xa438('0x3a')][_0xa438('0x4b')]){_0x1c610d['include']=[{'all':!![]}];}_0x1c610d=_[_0xa438('0x46')]({},_0x1c610d,_0x537182[_0xa438('0x47')]);return db[_0xa438('0x34')][_0xa438('0x4c')](_0x1c610d)[_0xa438('0x2c')](handleEntityNotFound(_0x9447d8,null))[_0xa438('0x2c')](respondWithResult(_0x9447d8,null))['catch'](handleError(_0x9447d8,null));};exports[_0xa438('0x2d')]=function(_0x13b058,_0x4cdc7f){return db['VoicePrefix'][_0xa438('0x4c')]({'where':{'id':_0x13b058[_0xa438('0x4d')]['id']}})[_0xa438('0x2c')](handleEntityNotFound(_0x4cdc7f,null))[_0xa438('0x2c')](removeEntity(_0x4cdc7f,null))[_0xa438('0x4a')](handleError(_0x4cdc7f,null));};exports[_0xa438('0x4e')]=function(_0x7692ad,_0x2b6932){return db[_0xa438('0x34')]['describe']()[_0xa438('0x2c')](respondWithResult(_0x2b6932,null))[_0xa438('0x4a')](handleError(_0x2b6932,null));};exports['create']=function(_0x290099,_0x38e249){var _0x514e7c;return db[_0xa438('0x4f')][_0xa438('0x50')](function(_0x2d0387){return db[_0xa438('0x34')][_0xa438('0x51')](_0x290099[_0xa438('0x52')],{'transaction':_0x2d0387})['then'](function(_0x2f3d1e){_0x514e7c=_0x2f3d1e[_0xa438('0x2e')]({'plain':!![]});return db[_0xa438('0x53')]['find']({'where':{'id':_0x514e7c[_0xa438('0x54')]},'raw':!![]})[_0xa438('0x2c')](function(_0x14a65c){return createVoicePrefixExtensions(_0x514e7c,_0x14a65c,_0x2d0387);});});})[_0xa438('0x2c')](function(){var _0x654403=_0x290099[_0xa438('0x55')][_0xa438('0x2e')]({'plain':!![]});if(!_0x654403)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0x654403['role']==='user'){var _0x3c17cd=_0x514e7c;return db[_0xa438('0x56')][_0xa438('0x4c')]({'where':{'name':_0xa438('0x57'),'userProfileId':_0x654403[_0xa438('0x58')]},'raw':!![]})[_0xa438('0x2c')](function(_0xc47d6d){if(_0xc47d6d&&_0xc47d6d[_0xa438('0x59')]===0x0){return db[_0xa438('0x5a')]['create']({'name':_0x3c17cd['name'],'resourceId':_0x3c17cd['id'],'type':_0xc47d6d[_0xa438('0x31')],'sectionId':_0xc47d6d['id']},{})[_0xa438('0x2c')](function(){return _0x514e7c;});}else{return _0x514e7c;}})[_0xa438('0x4a')](function(_0x5c17cf){logger['error'](_0xa438('0x5b'),_0x5c17cf);throw _0x5c17cf;});}return _0x514e7c;})[_0xa438('0x2c')](respondWithResult(_0x38e249,null))['catch'](handleError(_0x38e249,null));};function Extension(_0x2ddf25,_0x515406,_0x2b85f8,_0x41223d){this[_0xa438('0x5c')]=_0xa438('0x5d');this[_0xa438('0x5e')]=_0x2ddf25;this[_0xa438('0x5f')]=_0x2b85f8;this[_0xa438('0x37')]=_0xa438('0x60');this[_0xa438('0x61')]=_0xa438('0x62');this[_0xa438('0x63')]=_0x515406;this[_0xa438('0x64')]=_0x41223d;}function createVoicePrefixExtensions(_0x207676,_0x6dbd7d,_0x465e86){return new BPromise(function(_0x5f048b,_0x4c4267){var _0x1b90f8=new Extension(formatPrefixName(_0x207676[_0xa438('0x65')]),0x1,'NoOp',_0xa438('0x66'));_0x1b90f8[_0xa438('0x67')]=_0x207676['id'];return db[_0xa438('0x53')][_0xa438('0x51')](_0x1b90f8,{'transaction':_0x465e86})['then'](function(_0xacf284){var _0x3483f9=_0xacf284[_0xa438('0x2e')]({'plain':!![]});var _0x2e9c8f=_[_0xa438('0x33')](addVoicePrefixExtensions(_0x207676,_0x6dbd7d),function(_0xedf2b4){_0xedf2b4['VoiceExtensionId']=_0x3483f9['id'];_0xedf2b4[_0xa438('0x67')]=_0x207676['id'];return _0xedf2b4;});return db[_0xa438('0x53')][_0xa438('0x68')](_0x2e9c8f,{'transaction':_0x465e86})[_0xa438('0x2c')](function(_0x5d9250){if(!_0x5d9250){return _0x4c4267('Extensions\x20creation\x20failed');}else{return _0x5f048b(_0x5d9250);}})[_0xa438('0x4a')](function(_0x40b0cf){return _0x4c4267(_0x40b0cf);});});;});};function addVoicePrefixExtensions(_0x3df9b9,_0x266d52){var _0x4543ea=[];var _0x16daf7=formatPrefixName(_0x3df9b9[_0xa438('0x65')]);_0x4543ea[_0xa438('0x69')](new Extension(_0x16daf7,0x2,_0xa438('0x6a'),_0xa438('0x6b')+_0x3df9b9[_0xa438('0x31')]));if(_0x3df9b9[_0xa438('0x6c')]){_0x4543ea[_0xa438('0x69')](new Extension(_0x16daf7,0x3,_0xa438('0x6a'),'PREFIX-CALLERIDALL='+_0x3df9b9[_0xa438('0x6c')]));}else{_0x4543ea[_0xa438('0x69')](new Extension(_0x16daf7,0x3,_0xa438('0x6d'),'No\x20callerid\x20available'));}_0x4543ea[_0xa438('0x69')](new Extension(_0x16daf7,0x4,'goto',_0x266d52[_0xa438('0x5c')]+','+'${EXTEN:'+(0x8+_0x3df9b9[_0xa438('0x31')][_0xa438('0x3e')])+'}'+','+0x1));return _0x4543ea;}function formatPrefixName(_0x21a2bf){var _0x26ad57='_';for(var _0x463265=0x0;_0x463265<_0x21a2bf[_0xa438('0x3e')];_0x463265++){if(_0x21a2bf[_0xa438('0x6e')](_0x463265)=='-'){_0x26ad57+=_0x21a2bf['charAt'](_0x463265);}else{_0x26ad57+='['+_0x21a2bf[_0xa438('0x6e')](_0x463265)+']';}}_0x26ad57+='.';return _0x26ad57;}exports[_0xa438('0x2b')]=function(_0x137cfe,_0x5dd730,_0xf71e34){var _0xd12c16=_0x137cfe['body'];_0xd12c16['prefix']=_0xa438('0x6f')+_0xd12c16[_0xa438('0x31')]+'-';return db[_0xa438('0x4f')][_0xa438('0x50')](function(_0x9ee61e){return db[_0xa438('0x34')][_0xa438('0x2b')](_0xd12c16,{'where':{'id':_0xd12c16['id']},'transaction':_0x9ee61e})['then'](function(){return db[_0xa438('0x53')][_0xa438('0x2d')]({'where':{'VoicePrefixId':_0xd12c16['id']},'transaction':_0x9ee61e})[_0xa438('0x2c')](function(){return db['VoiceExtension'][_0xa438('0x4c')]({'where':{'id':_0xd12c16[_0xa438('0x54')]},'raw':!![]})[_0xa438('0x2c')](function(_0x3df6d4){return createVoicePrefixExtensions(_0xd12c16,_0x3df6d4,_0x9ee61e);});});});})[_0xa438('0x2c')](function(){return db[_0xa438('0x34')]['findById'](_0xd12c16['id']);})[_0xa438('0x2c')](respondWithResult(_0x5dd730,null))[_0xa438('0x4a')](handleError(_0x5dd730,null));};exports[_0xa438('0x70')]=function(_0x4dcf7b,_0x66a1bf,_0x360c40){return db[_0xa438('0x34')][_0xa438('0x4c')]({'where':{'id':_0x4dcf7b[_0xa438('0x4d')]['id']}})['then'](handleEntityNotFound(_0x66a1bf,null))[_0xa438('0x2c')](function(_0x2ac08f){if(_0x2ac08f){return _0x2ac08f[_0xa438('0x70')](_0x4dcf7b[_0xa438('0x52')]['ids'],_[_0xa438('0x71')](_0x4dcf7b[_0xa438('0x52')],[_0xa438('0x72'),'id'])||{})[_0xa438('0x73')](function(_0x32dacd){for(var _0x2c63ca=0x0;_0x2c63ca<_0x4dcf7b['body']['ids'][_0xa438('0x3e')];_0x2c63ca+=0x1){socket[_0xa438('0x74')](_0xa438('0x75'),{'UserId':Number(_0x4dcf7b[_0xa438('0x52')][_0xa438('0x72')][_0x2c63ca]),'VoicePrefixId':Number(_0x4dcf7b[_0xa438('0x4d')]['id'])});}return _0x32dacd;});}})[_0xa438('0x2c')](respondWithResult(_0x66a1bf,null))['catch'](handleError(_0x66a1bf,null));};exports[_0xa438('0x76')]=function(_0x22c48c,_0x34fea8,_0x840900){return db[_0xa438('0x34')][_0xa438('0x4c')]({'where':{'id':_0x22c48c[_0xa438('0x4d')]['id']}})[_0xa438('0x2c')](handleEntityNotFound(_0x34fea8,null))[_0xa438('0x2c')](function(_0x45b429){if(_0x45b429){return _0x45b429['removeAgents'](_0x22c48c['query'][_0xa438('0x72')])[_0xa438('0x2c')](function(){if(_[_0xa438('0x77')](_0x22c48c['query'][_0xa438('0x72')])){for(var _0x2d8195=0x0;_0x2d8195<_0x22c48c['query']['ids'][_0xa438('0x3e')];_0x2d8195+=0x1){socket['emit'](_0xa438('0x78'),{'UserId':Number(_0x22c48c[_0xa438('0x3a')][_0xa438('0x72')][_0x2d8195]),'VoicePrefixId':Number(_0x22c48c['params']['id'])});}}else{socket[_0xa438('0x74')](_0xa438('0x78'),{'UserId':Number(_0x22c48c[_0xa438('0x3a')]['ids']),'VoicePrefixId':Number(_0x22c48c[_0xa438('0x4d')]['id'])});}});}})[_0xa438('0x2c')](respondWithStatusCode(_0x34fea8,null))[_0xa438('0x4a')](handleError(_0x34fea8,null));};exports['getAgents']=function(_0x215a97,_0x46e991,_0x54abb0){var _0xd60037={};var _0x413682={};var _0x19ced3;var _0x108132;return db[_0xa438('0x34')][_0xa438('0x79')]({'where':{'id':_0x215a97[_0xa438('0x4d')]['id']}})[_0xa438('0x2c')](handleEntityNotFound(_0x46e991,null))['then'](function(_0x3a78bb){if(_0x3a78bb){_0x19ced3=_0x3a78bb;_0x413682[_0xa438('0x38')]=_[_0xa438('0x39')](db['User'][_0xa438('0x35')]);_0x413682['query']=_['keys'](_0x215a97[_0xa438('0x3a')]);_0x413682[_0xa438('0x44')]=_[_0xa438('0x3b')](_0x413682[_0xa438('0x38')],_0x413682['query']);_0xd60037[_0xa438('0x3d')]=_['intersection'](_0x413682[_0xa438('0x38')],qs['fields'](_0x215a97[_0xa438('0x3a')]['fields']));_0xd60037[_0xa438('0x3d')]=_0xd60037[_0xa438('0x3d')][_0xa438('0x3e')]?_0xd60037['attributes']:_0x413682[_0xa438('0x38')];_0xd60037['order']=qs[_0xa438('0x41')](_0x215a97[_0xa438('0x3a')][_0xa438('0x41')]);_0xd60037['where']=qs[_0xa438('0x44')](_[_0xa438('0x43')](_0x215a97['query'],_0x413682[_0xa438('0x44')]));if(_0x215a97[_0xa438('0x3a')][_0xa438('0x45')]){_0xd60037[_0xa438('0x42')]=_[_0xa438('0x46')](_0xd60037[_0xa438('0x42')],{'$or':_[_0xa438('0x33')](_0xd60037[_0xa438('0x3d')],function(_0x993cff){var _0x802cc7={};_0x802cc7[_0x993cff]={'$like':'%'+_0x215a97[_0xa438('0x3a')][_0xa438('0x45')]+'%'};return _0x802cc7;})});}_0xd60037=_['merge']({},_0xd60037,_0x215a97['options']);return _0x19ced3[_0xa438('0x7a')](_0xd60037);}})[_0xa438('0x2c')](function(_0x1d5fcb){if(_0x1d5fcb){_0x108132=_0x1d5fcb['length'];if(!_0x215a97[_0xa438('0x3a')][_0xa438('0x3f')]('nolimit')){_0xd60037[_0xa438('0x23')]=qs[_0xa438('0x23')](_0x215a97[_0xa438('0x3a')][_0xa438('0x23')]);_0xd60037[_0xa438('0x25')]=qs['offset'](_0x215a97[_0xa438('0x3a')][_0xa438('0x25')]);}return _0x19ced3[_0xa438('0x7a')](_0xd60037);}})['then'](function(_0x31379a){if(_0x31379a){return _0x31379a?{'count':_0x108132,'rows':_0x31379a}:null;}})['then'](respondWithResult(_0x46e991,null))[_0xa438('0x4a')](handleError(_0x46e991,null));};
\ No newline at end of file
index 19a7685..f5bed86 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6913=['emit','hasOwnProperty','exports','events','../../mysqldb','VoicePrefix','setMaxListeners','save','remove'];(function(_0x20a584,_0xe384a5){var _0x4b41a8=function(_0x2127c6){while(--_0x2127c6){_0x20a584['push'](_0x20a584['shift']());}};_0x4b41a8(++_0xe384a5);}(_0x6913,0xed));var _0x3691=function(_0x564c87,_0x15dc3c){_0x564c87=_0x564c87-0x0;var _0x4a97ea=_0x6913[_0x564c87];return _0x4a97ea;};'use strict';var EventEmitter=require(_0x3691('0x0'));var VoicePrefix=require(_0x3691('0x1'))['db'][_0x3691('0x2')];var VoicePrefixEvents=new EventEmitter();VoicePrefixEvents[_0x3691('0x3')](0x0);var events={'afterCreate':_0x3691('0x4'),'afterUpdate':'update','afterDestroy':_0x3691('0x5')};function emitEvent(_0x57c792){return function(_0x4fb96e,_0x64a546,_0x51abae){VoicePrefixEvents[_0x3691('0x6')](_0x57c792+':'+_0x4fb96e['id'],_0x4fb96e);VoicePrefixEvents['emit'](_0x57c792,_0x4fb96e);_0x51abae(null);};}for(var e in events){if(events[_0x3691('0x7')](e)){var event=events[e];VoicePrefix['hook'](e,emitEvent(event));}}module[_0x3691('0x8')]=VoicePrefixEvents;
\ No newline at end of file
+var _0x16c3=['remove','emit','hasOwnProperty','exports','events','../../mysqldb','setMaxListeners','save','update'];(function(_0x5cb1af,_0x4bdc8c){var _0x8d7940=function(_0x3db70a){while(--_0x3db70a){_0x5cb1af['push'](_0x5cb1af['shift']());}};_0x8d7940(++_0x4bdc8c);}(_0x16c3,0x1e1));var _0x316c=function(_0x9697bb,_0x9d5d65){_0x9697bb=_0x9697bb-0x0;var _0x280019=_0x16c3[_0x9697bb];return _0x280019;};'use strict';var EventEmitter=require(_0x316c('0x0'));var VoicePrefix=require(_0x316c('0x1'))['db']['VoicePrefix'];var VoicePrefixEvents=new EventEmitter();VoicePrefixEvents[_0x316c('0x2')](0x0);var events={'afterCreate':_0x316c('0x3'),'afterUpdate':_0x316c('0x4'),'afterDestroy':_0x316c('0x5')};function emitEvent(_0x165560){return function(_0xb05549,_0x200233,_0x4b47ff){VoicePrefixEvents['emit'](_0x165560+':'+_0xb05549['id'],_0xb05549);VoicePrefixEvents[_0x316c('0x6')](_0x165560,_0xb05549);_0x4b47ff(null);};}for(var e in events){if(events[_0x316c('0x7')](e)){var event=events[e];VoicePrefix['hook'](e,emitEvent(event));}}module[_0x316c('0x8')]=VoicePrefixEvents;
\ No newline at end of file
index c9434cf..a08a4dc 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6b6a=['bluebird','path','rimraf','../../config/environment','exports','define','voice_prefixes','util','api','moment'];(function(_0x1f188f,_0x29ad78){var _0x488519=function(_0x406c9a){while(--_0x406c9a){_0x1f188f['push'](_0x1f188f['shift']());}};_0x488519(++_0x29ad78);}(_0x6b6a,0x129));var _0xa6b6=function(_0x5e2be7,_0x54d69c){_0x5e2be7=_0x5e2be7-0x0;var _0x18997a=_0x6b6a[_0x5e2be7];return _0x18997a;};'use strict';var _=require('lodash');var util=require(_0xa6b6('0x0'));var logger=require('../../config/logger')(_0xa6b6('0x1'));var moment=require(_0xa6b6('0x2'));var BPromise=require(_0xa6b6('0x3'));var rp=require('request-promise');var fs=require('fs');var path=require(_0xa6b6('0x4'));var rimraf=require(_0xa6b6('0x5'));var config=require(_0xa6b6('0x6'));var attributes=require('./voicePrefix.attributes');module[_0xa6b6('0x7')]=function(_0x5859f6,_0x3ef99d){return _0x5859f6[_0xa6b6('0x8')]('VoicePrefix',attributes,{'tableName':_0xa6b6('0x9'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x9a0b=['lodash','util','../../config/logger','moment','path','../../config/environment','./voicePrefix.attributes','exports','VoicePrefix','voice_prefixes'];(function(_0x7179ba,_0x37504f){var _0x4ad820=function(_0x131107){while(--_0x131107){_0x7179ba['push'](_0x7179ba['shift']());}};_0x4ad820(++_0x37504f);}(_0x9a0b,0xf0));var _0xb9a0=function(_0x5eb585,_0x3c12fd){_0x5eb585=_0x5eb585-0x0;var _0x100205=_0x9a0b[_0x5eb585];return _0x100205;};'use strict';var _=require(_0xb9a0('0x0'));var util=require(_0xb9a0('0x1'));var logger=require(_0xb9a0('0x2'))('api');var moment=require(_0xb9a0('0x3'));var BPromise=require('bluebird');var rp=require('request-promise');var fs=require('fs');var path=require(_0xb9a0('0x4'));var rimraf=require('rimraf');var config=require(_0xb9a0('0x5'));var attributes=require(_0xb9a0('0x6'));module[_0xb9a0('0x7')]=function(_0x58e694,_0x507dd4){return _0x58e694['define'](_0xb9a0('0x8'),attributes,{'tableName':_0xb9a0('0x9'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 02a2ec4..fbdec57 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xbbbc=['localhost','socket.io-emitter','./voicePrefix.socket','request','info','request\x20sent','VoicePrefix,\x20%s,\x20%s,\x20%s','stringify','error','VoicePrefix,\x20%s,\x20%s','message','result','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/logger','rpc','../../config/environment','jayson/promise','client','redis','defaults'];(function(_0x1bae0b,_0x4158de){var _0x4c581a=function(_0x482d71){while(--_0x482d71){_0x1bae0b['push'](_0x1bae0b['shift']());}};_0x4c581a(++_0x4158de);}(_0xbbbc,0xf6));var _0xcbbb=function(_0x4bf8ec,_0x3a8467){_0x4bf8ec=_0x4bf8ec-0x0;var _0x22786c=_0xbbbc[_0x4bf8ec];return _0x22786c;};'use strict';var _=require(_0xcbbb('0x0'));var util=require(_0xcbbb('0x1'));var moment=require(_0xcbbb('0x2'));var BPromise=require(_0xcbbb('0x3'));var rs=require(_0xcbbb('0x4'));var fs=require('fs');var Redis=require(_0xcbbb('0x5'));var db=require(_0xcbbb('0x6'))['db'];var utils=require('../../config/utils');var logger=require(_0xcbbb('0x7'))(_0xcbbb('0x8'));var config=require(_0xcbbb('0x9'));var jayson=require(_0xcbbb('0xa'));var client=jayson[_0xcbbb('0xb')]['http']({'port':0x232a});config[_0xcbbb('0xc')]=_[_0xcbbb('0xd')](config[_0xcbbb('0xc')],{'host':_0xcbbb('0xe'),'port':0x18eb});var socket=require(_0xcbbb('0xf'))(new Redis(config[_0xcbbb('0xc')]));require(_0xcbbb('0x10'))['register'](socket);function respondWithRpcPromise(_0x225156,_0x4b0138,_0x5893f9){return new BPromise(function(_0x107c35,_0x56c7d0){return client[_0xcbbb('0x11')](_0x225156,_0x5893f9)['then'](function(_0x3766c2){logger[_0xcbbb('0x12')]('VoicePrefix,\x20%s,\x20%s',_0x4b0138,_0xcbbb('0x13'));logger['debug'](_0xcbbb('0x14'),_0x4b0138,'request\x20sent',JSON[_0xcbbb('0x15')](_0x3766c2));if(_0x3766c2[_0xcbbb('0x16')]){if(_0x3766c2[_0xcbbb('0x16')]['code']===0x1f4){logger[_0xcbbb('0x16')](_0xcbbb('0x17'),_0x4b0138,_0x3766c2[_0xcbbb('0x16')][_0xcbbb('0x18')]);return _0x56c7d0(_0x3766c2['error']['message']);}logger[_0xcbbb('0x16')](_0xcbbb('0x17'),_0x4b0138,_0x3766c2[_0xcbbb('0x16')][_0xcbbb('0x18')]);return _0x107c35(_0x3766c2['error'][_0xcbbb('0x18')]);}else{logger['info'](_0xcbbb('0x17'),_0x4b0138,_0xcbbb('0x13'));_0x107c35(_0x3766c2[_0xcbbb('0x19')]['message']);}})['catch'](function(_0x4bcd9a){logger[_0xcbbb('0x16')](_0xcbbb('0x17'),_0x4b0138,_0x4bcd9a);_0x56c7d0(_0x4bcd9a);});});}
\ No newline at end of file
+var _0xc6ac=['http','defaults','redis','localhost','./voicePrefix.socket','register','request','info','VoicePrefix,\x20%s,\x20%s','VoicePrefix,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','code','error','message','result','catch','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client'];(function(_0x17d9e3,_0x1f969c){var _0x14192d=function(_0x159745){while(--_0x159745){_0x17d9e3['push'](_0x17d9e3['shift']());}};_0x14192d(++_0x1f969c);}(_0xc6ac,0x15b));var _0xcc6a=function(_0x4b8d17,_0x2f7260){_0x4b8d17=_0x4b8d17-0x0;var _0x34c3d1=_0xc6ac[_0x4b8d17];return _0x34c3d1;};'use strict';var _=require(_0xcc6a('0x0'));var util=require(_0xcc6a('0x1'));var moment=require(_0xcc6a('0x2'));var BPromise=require(_0xcc6a('0x3'));var rs=require(_0xcc6a('0x4'));var fs=require('fs');var Redis=require(_0xcc6a('0x5'));var db=require(_0xcc6a('0x6'))['db'];var utils=require(_0xcc6a('0x7'));var logger=require(_0xcc6a('0x8'))(_0xcc6a('0x9'));var config=require(_0xcc6a('0xa'));var jayson=require(_0xcc6a('0xb'));var client=jayson[_0xcc6a('0xc')][_0xcc6a('0xd')]({'port':0x232a});config['redis']=_[_0xcc6a('0xe')](config[_0xcc6a('0xf')],{'host':_0xcc6a('0x10'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0xcc6a('0xf')]));require(_0xcc6a('0x11'))[_0xcc6a('0x12')](socket);function respondWithRpcPromise(_0x463ebb,_0x3eb04a,_0x5e91a2){return new BPromise(function(_0x30a004,_0x290119){return client[_0xcc6a('0x13')](_0x463ebb,_0x5e91a2)['then'](function(_0x1d91a5){logger[_0xcc6a('0x14')](_0xcc6a('0x15'),_0x3eb04a,'request\x20sent');logger['debug'](_0xcc6a('0x16'),_0x3eb04a,_0xcc6a('0x17'),JSON[_0xcc6a('0x18')](_0x1d91a5));if(_0x1d91a5['error']){if(_0x1d91a5['error'][_0xcc6a('0x19')]===0x1f4){logger[_0xcc6a('0x1a')](_0xcc6a('0x15'),_0x3eb04a,_0x1d91a5[_0xcc6a('0x1a')][_0xcc6a('0x1b')]);return _0x290119(_0x1d91a5[_0xcc6a('0x1a')][_0xcc6a('0x1b')]);}logger[_0xcc6a('0x1a')]('VoicePrefix,\x20%s,\x20%s',_0x3eb04a,_0x1d91a5['error']['message']);return _0x30a004(_0x1d91a5[_0xcc6a('0x1a')][_0xcc6a('0x1b')]);}else{logger[_0xcc6a('0x14')](_0xcc6a('0x15'),_0x3eb04a,_0xcc6a('0x17'));_0x30a004(_0x1d91a5[_0xcc6a('0x1c')][_0xcc6a('0x1b')]);}})[_0xcc6a('0x1d')](function(_0x374e51){logger[_0xcc6a('0x1a')](_0xcc6a('0x15'),_0x3eb04a,_0x374e51);_0x290119(_0x374e51);});});}
\ No newline at end of file
index 6858245..190f0b0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa446=['register','voicePrefix:','./voicePrefix.events','save','update','emit','removeListener'];(function(_0x432fca,_0xb0b1b5){var _0x3adba4=function(_0x5e3ae4){while(--_0x5e3ae4){_0x432fca['push'](_0x432fca['shift']());}};_0x3adba4(++_0xb0b1b5);}(_0xa446,0xc6));var _0x6a44=function(_0x58ec46,_0x4e79c2){_0x58ec46=_0x58ec46-0x0;var _0x1495d1=_0xa446[_0x58ec46];return _0x1495d1;};'use strict';var VoicePrefixEvents=require(_0x6a44('0x0'));var events=[_0x6a44('0x1'),'remove',_0x6a44('0x2')];function createListener(_0x549473,_0x45c6e2){return function(_0x4c400a){_0x45c6e2[_0x6a44('0x3')](_0x549473,_0x4c400a);};}function removeListener(_0x4f4586,_0x3a8c6f){return function(){VoicePrefixEvents[_0x6a44('0x4')](_0x4f4586,_0x3a8c6f);};}exports[_0x6a44('0x5')]=function(_0x1bcc30){for(var _0x1fc85d=0x0,_0x417c8c=events['length'];_0x1fc85d<_0x417c8c;_0x1fc85d++){var _0x1569ec=events[_0x1fc85d];var _0x36a426=createListener(_0x6a44('0x6')+_0x1569ec,_0x1bcc30);VoicePrefixEvents['on'](_0x1569ec,_0x36a426);}};
\ No newline at end of file
+var _0xffdc=['length','./voicePrefix.events','save','update','emit','removeListener'];(function(_0x42cae2,_0x284ef8){var _0x5f256f=function(_0x41abc8){while(--_0x41abc8){_0x42cae2['push'](_0x42cae2['shift']());}};_0x5f256f(++_0x284ef8);}(_0xffdc,0x7f));var _0xcffd=function(_0x2a2e72,_0x1de962){_0x2a2e72=_0x2a2e72-0x0;var _0x3cfb4a=_0xffdc[_0x2a2e72];return _0x3cfb4a;};'use strict';var VoicePrefixEvents=require(_0xcffd('0x0'));var events=[_0xcffd('0x1'),'remove',_0xcffd('0x2')];function createListener(_0x2df854,_0x5d6a91){return function(_0x31166d){_0x5d6a91[_0xcffd('0x3')](_0x2df854,_0x31166d);};}function removeListener(_0x37c566,_0x3a2c59){return function(){VoicePrefixEvents[_0xcffd('0x4')](_0x37c566,_0x3a2c59);};}exports['register']=function(_0x1a1bce){for(var _0x963fad=0x0,_0x12e830=events[_0xcffd('0x5')];_0x963fad<_0x12e830;_0x963fad++){var _0x199df3=events[_0x963fad];var _0x463334=createListener('voicePrefix:'+_0x199df3,_0x1a1bce);VoicePrefixEvents['on'](_0x199df3,_0x463334);}};
\ No newline at end of file
index 67a48bb..a380ab2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9258=['getLists','/:id/blacklists','getBlackLists','post','/:id/clone','clone','/:id/users','addLists','addBlackLists','put','delete','/:id','removeTeams','removeAgents','removeBlackLists','multer','util','path','connect-timeout','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','get','index','isAuthenticated','show','/:id/hoppers','getHoppers','/:id/hopper_histories','getHopperHistories','/:id/hopper_black','getHopperBlacks','/:id/teams','getTeams','getAgents','/:id/members','getMembers'];(function(_0x57fa0b,_0x5df1ce){var _0x18669f=function(_0xb09fcc){while(--_0xb09fcc){_0x57fa0b['push'](_0x57fa0b['shift']());}};_0x18669f(++_0x5df1ce);}(_0x9258,0x16e));var _0x8925=function(_0x2b764f,_0x151872){_0x2b764f=_0x2b764f-0x0;var _0x4c90b2=_0x9258[_0x2b764f];return _0x4c90b2;};'use strict';var multer=require(_0x8925('0x0'));var util=require(_0x8925('0x1'));var path=require(_0x8925('0x2'));var timeout=require(_0x8925('0x3'));var express=require('express');var router=express[_0x8925('0x4')]();var fs_extra=require(_0x8925('0x5'));var auth=require(_0x8925('0x6'));var interaction=require(_0x8925('0x7'));var config=require(_0x8925('0x8'));var controller=require('./voiceQueue.controller');router[_0x8925('0x9')]('/',auth['isAuthenticated'](),controller[_0x8925('0xa')]);router[_0x8925('0x9')]('/:id',auth[_0x8925('0xb')](),controller[_0x8925('0xc')]);router['get'](_0x8925('0xd'),auth[_0x8925('0xb')](),controller[_0x8925('0xe')]);router[_0x8925('0x9')](_0x8925('0xf'),auth[_0x8925('0xb')](),controller[_0x8925('0x10')]);router[_0x8925('0x9')]('/:id/hopper_finals',auth[_0x8925('0xb')](),controller['getHopperFinals']);router[_0x8925('0x9')](_0x8925('0x11'),auth[_0x8925('0xb')](),controller[_0x8925('0x12')]);router[_0x8925('0x9')](_0x8925('0x13'),auth[_0x8925('0xb')](),controller[_0x8925('0x14')]);router[_0x8925('0x9')]('/:id/users',auth[_0x8925('0xb')](),controller[_0x8925('0x15')]);router[_0x8925('0x9')](_0x8925('0x16'),auth[_0x8925('0xb')](),controller[_0x8925('0x17')]);router[_0x8925('0x9')]('/:id/lists',auth[_0x8925('0xb')](),controller[_0x8925('0x18')]);router[_0x8925('0x9')](_0x8925('0x19'),auth['isAuthenticated'](),controller[_0x8925('0x1a')]);router[_0x8925('0x1b')]('/',auth[_0x8925('0xb')](),controller['create']);router[_0x8925('0x1b')](_0x8925('0x1c'),auth[_0x8925('0xb')](),controller[_0x8925('0x1d')]);router[_0x8925('0x1b')]('/:id/teams',auth['isAuthenticated'](),controller['addTeams']);router[_0x8925('0x1b')](_0x8925('0x1e'),auth[_0x8925('0xb')](),controller['addAgents']);router[_0x8925('0x1b')]('/:id/lists',auth['isAuthenticated'](),controller[_0x8925('0x1f')]);router['post'](_0x8925('0x19'),auth[_0x8925('0xb')](),controller[_0x8925('0x20')]);router[_0x8925('0x21')]('/:id',auth['isAuthenticated'](),controller['update']);router[_0x8925('0x22')](_0x8925('0x23'),auth[_0x8925('0xb')](),controller['destroy']);router[_0x8925('0x22')](_0x8925('0x13'),auth['isAuthenticated'](),controller[_0x8925('0x24')]);router['delete'](_0x8925('0x1e'),auth['isAuthenticated'](),controller[_0x8925('0x25')]);router[_0x8925('0x22')]('/:id/lists',auth[_0x8925('0xb')](),controller['removeLists']);router[_0x8925('0x22')]('/:id/blacklists',auth['isAuthenticated'](),controller[_0x8925('0x26')]);module['exports']=router;
\ No newline at end of file
+var _0x7cd5=['getLists','post','create','/:id/clone','clone','addTeams','addAgents','addLists','addBlackLists','update','delete','removeTeams','removeAgents','removeLists','/:id/blacklists','removeBlackLists','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./voiceQueue.controller','get','isAuthenticated','/:id','show','/:id/hoppers','/:id/hopper_histories','getHopperFinals','/:id/hopper_black','getHopperBlacks','/:id/teams','/:id/users','getAgents','getMembers','/:id/lists'];(function(_0xa6cc5c,_0x239c99){var _0x44803d=function(_0x515b6e){while(--_0x515b6e){_0xa6cc5c['push'](_0xa6cc5c['shift']());}};_0x44803d(++_0x239c99);}(_0x7cd5,0x1d8));var _0x57cd=function(_0x2a6e5e,_0x56f7ef){_0x2a6e5e=_0x2a6e5e-0x0;var _0x4bbc15=_0x7cd5[_0x2a6e5e];return _0x4bbc15;};'use strict';var multer=require('multer');var util=require('util');var path=require('path');var timeout=require(_0x57cd('0x0'));var express=require(_0x57cd('0x1'));var router=express[_0x57cd('0x2')]();var fs_extra=require(_0x57cd('0x3'));var auth=require(_0x57cd('0x4'));var interaction=require(_0x57cd('0x5'));var config=require(_0x57cd('0x6'));var controller=require(_0x57cd('0x7'));router[_0x57cd('0x8')]('/',auth[_0x57cd('0x9')](),controller['index']);router[_0x57cd('0x8')](_0x57cd('0xa'),auth[_0x57cd('0x9')](),controller[_0x57cd('0xb')]);router[_0x57cd('0x8')](_0x57cd('0xc'),auth['isAuthenticated'](),controller['getHoppers']);router[_0x57cd('0x8')](_0x57cd('0xd'),auth['isAuthenticated'](),controller['getHopperHistories']);router[_0x57cd('0x8')]('/:id/hopper_finals',auth['isAuthenticated'](),controller[_0x57cd('0xe')]);router[_0x57cd('0x8')](_0x57cd('0xf'),auth['isAuthenticated'](),controller[_0x57cd('0x10')]);router[_0x57cd('0x8')](_0x57cd('0x11'),auth['isAuthenticated'](),controller['getTeams']);router[_0x57cd('0x8')](_0x57cd('0x12'),auth[_0x57cd('0x9')](),controller[_0x57cd('0x13')]);router[_0x57cd('0x8')]('/:id/members',auth['isAuthenticated'](),controller[_0x57cd('0x14')]);router[_0x57cd('0x8')](_0x57cd('0x15'),auth[_0x57cd('0x9')](),controller[_0x57cd('0x16')]);router[_0x57cd('0x8')]('/:id/blacklists',auth[_0x57cd('0x9')](),controller['getBlackLists']);router[_0x57cd('0x17')]('/',auth[_0x57cd('0x9')](),controller[_0x57cd('0x18')]);router[_0x57cd('0x17')](_0x57cd('0x19'),auth[_0x57cd('0x9')](),controller[_0x57cd('0x1a')]);router[_0x57cd('0x17')](_0x57cd('0x11'),auth['isAuthenticated'](),controller[_0x57cd('0x1b')]);router[_0x57cd('0x17')](_0x57cd('0x12'),auth[_0x57cd('0x9')](),controller[_0x57cd('0x1c')]);router[_0x57cd('0x17')](_0x57cd('0x15'),auth[_0x57cd('0x9')](),controller[_0x57cd('0x1d')]);router['post']('/:id/blacklists',auth[_0x57cd('0x9')](),controller[_0x57cd('0x1e')]);router['put'](_0x57cd('0xa'),auth['isAuthenticated'](),controller[_0x57cd('0x1f')]);router[_0x57cd('0x20')](_0x57cd('0xa'),auth[_0x57cd('0x9')](),controller['destroy']);router[_0x57cd('0x20')](_0x57cd('0x11'),auth[_0x57cd('0x9')](),controller[_0x57cd('0x21')]);router['delete'](_0x57cd('0x12'),auth[_0x57cd('0x9')](),controller[_0x57cd('0x22')]);router[_0x57cd('0x20')](_0x57cd('0x15'),auth[_0x57cd('0x9')](),controller[_0x57cd('0x23')]);router[_0x57cd('0x20')](_0x57cd('0x24'),auth[_0x57cd('0x9')](),controller[_0x57cd('0x25')]);module['exports']=router;
\ No newline at end of file
index 31aedf4..fe066b4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5024=['#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\x20(min:1,\x20max:999)','#AgentReject\x20Retry\x20(min:1,\x20max:999)','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','ENUM','fewestcalls','rrmemory','linear','ringall','strategy','getDataValue','type','dialMethod','booked','roundrobin','progressive','predictive','power','INTEGER','yes','all','TEXT','setDataValue','join','periodic_announce','split','joinempty','leavewhenempty','wrapuptime','BOOLEAN','Active/Disactive\x20Campaign','preview','Dial\x20Method.','UNSIGNED','Max\x209999\x20channels,\x200\x20means\x20unlimited.','Max\x209999\x20member\x20in\x20queue(min:1,\x20max:9999),\x200\x20means\x20unlimited.','Power\x20Level:\x20Calls\x20for\x20agents\x20(min:1,\x20max:10).','dropRate','Only\x20for\x20predictive\x20method.','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)','#NoAnswer\x20Retry\x20(min:1,\x20max:999)','NoAnswer\x20Retry\x20Frequency\x20Minutes\x20(min:1,\x20max:99999)','#Global\x20Max\x20Retry\x20(min:1,\x20max:999)','never','onlyIfOpen','always','#AMD\x20Initial\x20Silence','#AMD\x20Greeting','#AMD\x20Total\x20Analysis\x20Time','#AMD\x20Between\x20Words\x20Silence','#AMD\x20Maximum\x20Number\x20Of\x20Words','#AMD\x20Silence\x20Threshold\x20(min:0,\x20max:32767)','#RecallMe\x20Timeout\x20(min:1)','Active/Disactive\x20Recall\x20In\x20Queue','DESC','ASC','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)'];(function(_0x5d2172,_0x49dc5e){var _0x42190b=function(_0x313ab0){while(--_0x313ab0){_0x5d2172['push'](_0x5d2172['shift']());}};_0x42190b(++_0x49dc5e);}(_0x5024,0xf7));var _0x4502=function(_0x5388fb,_0x371f76){_0x5388fb=_0x5388fb-0x0;var _0xefcd8=_0x5024[_0x5388fb];return _0xefcd8;};'use strict';var Sequelize=require(_0x4502('0x0'));module[_0x4502('0x1')]={'name':{'type':Sequelize[_0x4502('0x2')],'allowNull':![],'unique':_0x4502('0x3'),'validate':{'notEmpty':!![],'is':/^[A-Za-z0-9\.\_]+$/i}},'type':{'type':Sequelize['ENUM'](_0x4502('0x4'),_0x4502('0x5')),'allowNull':![],'defaultValue':_0x4502('0x4')},'musiconhold':{'type':Sequelize[_0x4502('0x2')],'defaultValue':_0x4502('0x6')},'announce':{'type':Sequelize[_0x4502('0x2')],'defaultValue':''},'strategy':{'type':Sequelize[_0x4502('0x7')]('rr','ringall','leastrecent',_0x4502('0x8'),'random',_0x4502('0x9'),_0x4502('0xa'),'wrandom','rrordered'),'allowNull':![],'defaultValue':_0x4502('0xb'),'set':function(_0x2fe973){this['setDataValue'](_0x4502('0xc'),_0x2fe973?_0x2fe973:_0x4502('0x9'));},'get':function(){var _0x4ae910=this[_0x4502('0xd')](_0x4502('0xe'));var _0x270fd9=this[_0x4502('0xd')](_0x4502('0xf'));var _0x44b3fb=this['getDataValue'](_0x4502('0xc'));if(_0x4ae910==='inbound'){return _0x44b3fb;}if(_0x270fd9===_0x4502('0x10')&&_0x44b3fb===_0x4502('0x9')||_0x270fd9==='booked'&&_0x44b3fb===_0x4502('0x11')){return _0x44b3fb;}if(_0x270fd9===_0x4502('0x12')||_0x270fd9===_0x4502('0x13')||_0x270fd9===_0x4502('0x14')){return _0x44b3fb;}return null;}},'servicelevel':{'type':Sequelize[_0x4502('0x15')](0xb),'defaultValue':0x0},'context':{'type':Sequelize[_0x4502('0x2')],'defaultValue':null},'penaltymemberslimit':{'type':Sequelize['INTEGER'](0xb)},'timeout':{'type':Sequelize[_0x4502('0x15')](0xb),'defaultValue':0xf},'retry':{'type':Sequelize[_0x4502('0x15')](0xb),'defaultValue':0x2},'timeoutpriority':{'type':Sequelize['STRING']},'weight':{'type':Sequelize[_0x4502('0x15')](0xb),'allowNull':!![],'defaultValue':0x0},'wrapuptime':{'type':Sequelize[_0x4502('0x15')](0xb),'defaultValue':0x0},'autofill':{'type':Sequelize[_0x4502('0x7')](_0x4502('0x16'),'no'),'defaultValue':'yes'},'autopause':{'type':Sequelize[_0x4502('0x7')](_0x4502('0x16'),'no',_0x4502('0x17')),'defaultValue':'no'},'autopausedelay':{'type':Sequelize['INTEGER'](0xb)},'autopausebusy':{'type':Sequelize['ENUM'](_0x4502('0x16'),'no'),'defaultValue':'no'},'autopauseunavail':{'type':Sequelize[_0x4502('0x7')](_0x4502('0x16'),'no'),'defaultValue':'no'},'maxlen':{'type':Sequelize[_0x4502('0x15')](0xb),'defaultValue':0x0},'setinterfacevar':{'type':Sequelize[_0x4502('0x7')]('yes','no'),'defaultValue':'no'},'setqueueentryvar':{'type':Sequelize['ENUM'](_0x4502('0x16'),'no'),'defautValue':'no'},'setqueuevar':{'type':Sequelize[_0x4502('0x7')]('yes','no'),'defaultValue':'no'},'eventmemberstatus':{'type':Sequelize['ENUM'](_0x4502('0x16'),'no'),'defaultValue':'no'},'membermacro':{'type':Sequelize['STRING'],'allowNull':!![]},'membergosub':{'type':Sequelize[_0x4502('0x2')],'allowNull':!![]},'announce_frequency':{'type':Sequelize[_0x4502('0x15')](0xb),'defaultValue':0x0},'min_announce_frequency':{'type':Sequelize[_0x4502('0x15')](0xb),'defaultValue':0x0},'periodic_announce_frequency':{'type':Sequelize[_0x4502('0x15')](0xb),'defaultValue':0x0},'random_periodic_announce':{'type':Sequelize[_0x4502('0x7')](_0x4502('0x16'),'no'),'defaultValue':'no'},'relative_periodic_announce':{'type':Sequelize[_0x4502('0x7')](_0x4502('0x16'),'no'),'defaultValue':_0x4502('0x16')},'announce_holdtime':{'type':Sequelize[_0x4502('0x7')](_0x4502('0x16'),'no','once'),'defaultValue':'no'},'announce_position':{'type':Sequelize[_0x4502('0x2')],'defaultValue':'no'},'announce_to_first_user':{'type':Sequelize[_0x4502('0x7')](_0x4502('0x16'),'no')},'announce_position_limit':{'type':Sequelize[_0x4502('0x15')](0xb)},'announce_round_seconds':{'type':Sequelize[_0x4502('0x7')]('0','5','10','15','20','30'),'defaultValue':'0'},'monitor_format':{'type':Sequelize[_0x4502('0x2')],'defaultValue':''},'monitor_type':{'type':Sequelize[_0x4502('0x2')]},'queue_youarenext':{'type':Sequelize[_0x4502('0x2')],'defaultValue':null},'queue_thereare':{'type':Sequelize[_0x4502('0x2')],'defaultValue':null},'queue_callswaiting':{'type':Sequelize[_0x4502('0x2')],'defaultValue':null},'queue_holdtime':{'type':Sequelize[_0x4502('0x2')],'defaultValue':null},'queue_minute':{'type':Sequelize[_0x4502('0x2')],'allowNull':!![],'defaultValue':null},'queue_minutes':{'type':Sequelize[_0x4502('0x2')],'defaultValue':null},'queue_seconds':{'type':Sequelize[_0x4502('0x2')],'defaultValue':null},'queue_thankyou':{'type':Sequelize['STRING'],'defaultValue':null},'queue_reporthold':{'type':Sequelize['STRING']},'queue_quantity1':{'type':Sequelize[_0x4502('0x2')]},'queue_quantity2':{'type':Sequelize[_0x4502('0x2')]},'queue_periodic_announce':{'type':Sequelize[_0x4502('0x2')]},'queue_less_than':{'type':Sequelize['STRING']},'periodic_announce':{'type':Sequelize[_0x4502('0x18')],'set':function(_0x211d83){this[_0x4502('0x19')]('periodic_announce',_0x211d83?_0x211d83[_0x4502('0x1a')](','):[]);},'get':function(){return this[_0x4502('0xd')](_0x4502('0x1b'))?this[_0x4502('0xd')](_0x4502('0x1b'))[_0x4502('0x1c')](','):[];}},'joinempty':{'type':Sequelize[_0x4502('0x2')],'defaultValue':_0x4502('0x16'),'set':function(_0x40500f){this[_0x4502('0x19')](_0x4502('0x1d'),_0x40500f?_0x40500f[_0x4502('0x1a')](','):undefined);},'get':function(){return this[_0x4502('0xd')](_0x4502('0x1d'))?this['getDataValue']('joinempty')['split'](','):undefined;}},'leavewhenempty':{'type':Sequelize['STRING'],'defaultValue':'no','set':function(_0x10827a){this[_0x4502('0x19')](_0x4502('0x1e'),_0x10827a?_0x10827a[_0x4502('0x1a')](','):undefined);},'get':function(){return this[_0x4502('0xd')](_0x4502('0x1e'))?this[_0x4502('0xd')](_0x4502('0x1e'))[_0x4502('0x1c')](','):undefined;}},'reportholdtime':{'type':Sequelize['ENUM'](_0x4502('0x16'),'no'),'defaultValue':'no'},'ringinuse':{'type':Sequelize['ENUM']('yes','no'),'defaultValue':'no'},'memberdelay':{'type':Sequelize[_0x4502('0x15')](0xb),'defaultValue':0x0},'timeoutrestart':{'type':Sequelize[_0x4502('0x7')](_0x4502('0x16'),'no'),'defaultValue':'no'},'defaultrule':{'type':Sequelize['STRING']},'description':{'type':Sequelize['STRING']},'acw':{'type':Sequelize['BOOLEAN'],'defaultValue':0x0,'set':function(_0x9d4bed){this[_0x4502('0x19')]('acw',_0x9d4bed);if(_0x9d4bed){if(this[_0x4502('0xd')](_0x4502('0x1f'))<0x2){this['setDataValue'](_0x4502('0x1f'),0x2);}}}},'acwTimeout':{'type':Sequelize[_0x4502('0x15')](0xb),'defaultValue':0xa},'dialActive':{'type':Sequelize[_0x4502('0x20')],'defaultValue':0x0,'comment':_0x4502('0x21')},'dialMethod':{'type':Sequelize[_0x4502('0x7')](_0x4502('0x22'),'progressive','power',_0x4502('0x13'),_0x4502('0x10')),'defaultValue':'progressive','comment':_0x4502('0x23')},'dialLimitChannel':{'type':Sequelize['INTEGER'](0x4)[_0x4502('0x24')],'defaultValue':0x0,'validate':{'min':0x0,'max':0x270f},'comment':_0x4502('0x25')},'dialLimitQueue':{'type':Sequelize['INTEGER'](0x4)[_0x4502('0x24')],'defaultValue':0x0,'validate':{'min':0x0,'max':0x270f},'comment':_0x4502('0x26')},'dialPowerLevel':{'type':Sequelize['FLOAT'](0x2)[_0x4502('0x24')],'defaultValue':0x1,'validate':{'min':0x1,'max':0xa},'comment':_0x4502('0x27')},'dialPredictiveOptimization':{'type':Sequelize['ENUM']('agentBusyFactor',_0x4502('0x28')),'defaultValue':_0x4502('0x28'),'comment':_0x4502('0x29')},'dialPredictiveOptimizationPercentage':{'type':Sequelize['FLOAT'](0x2)[_0x4502('0x24')],'defaultValue':0x3,'validate':{'min':0x1,'max':0x5f},'comment':'Predictive\x20Optimization\x20Percentage\x20(min:\x201,\x20max:\x2095)'},'dialPredictiveInterval':{'type':Sequelize[_0x4502('0x15')](0x3)['UNSIGNED'],'defaultValue':0xa,'validate':{'min':0x5,'max':0x1e},'comment':_0x4502('0x2a')},'dialOriginateCallerIdName':{'type':Sequelize[_0x4502('0x2')]},'dialOriginateCallerIdNumber':{'type':Sequelize[_0x4502('0x2')]},'dialOriginateTimeout':{'type':Sequelize[_0x4502('0x15')](0x3)[_0x4502('0x24')],'defaultValue':0x1e,'validate':{'min':0x1,'max':0x3e7},'comment':'Originate\x20Timeout\x20Seconds\x20(min:1,\x20max:999)'},'dialQueueOptions':{'type':Sequelize[_0x4502('0x2')],'defaultValue':_0x4502('0x2b'),'comment':_0x4502('0x2c')},'dialQueueTimeout':{'type':Sequelize[_0x4502('0x15')](0x3)['UNSIGNED'],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':_0x4502('0x2d')},'dialQueueProject':{'type':Sequelize['STRING'],'comment':_0x4502('0x2e')},'dialCongestionMaxRetry':{'type':Sequelize[_0x4502('0x15')](0x3)['UNSIGNED'],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':_0x4502('0x2f')},'dialCongestionRetryFrequency':{'type':Sequelize[_0x4502('0x15')](0x5)[_0x4502('0x24')],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':_0x4502('0x30')},'dialBusyMaxRetry':{'type':Sequelize['INTEGER'](0x3)[_0x4502('0x24')],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':'#Busy\x20Retry\x20(min:1,\x20max:999)'},'dialBusyRetryFrequency':{'type':Sequelize['INTEGER'](0x5)[_0x4502('0x24')],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':'Busy\x20Retry\x20Frequency\x20Minutes\x20(min:1,\x20max:99999)'},'dialNoAnswerMaxRetry':{'type':Sequelize[_0x4502('0x15')](0x3)[_0x4502('0x24')],'defaultValue':0x3,'comment':_0x4502('0x31')},'dialNoAnswerRetryFrequency':{'type':Sequelize[_0x4502('0x15')](0x5)['UNSIGNED'],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':_0x4502('0x32')},'dialGlobalMaxRetry':{'type':Sequelize[_0x4502('0x15')](0x3)['UNSIGNED'],'validate':{'min':0x1,'max':0x3e7},'defaultValue':0x4,'comment':_0x4502('0x33')},'dialTimezone':{'type':Sequelize['STRING'],'defaultValue':null},'dialGlobalInterval':{'type':Sequelize[_0x4502('0x2')],'defaultValue':'07:00-22:00,*,*,*'},'dialPrefix':{'type':Sequelize[_0x4502('0x2')],'defaultValue':null},'dialCheckDuplicateType':{'type':Sequelize[_0x4502('0x7')]('always',_0x4502('0x34'),_0x4502('0x35')),'defaultValue':_0x4502('0x36')},'dialAMDActive':{'type':Sequelize['BOOLEAN'],'defaultValue':0x0,'comment':'Active/Disactive\x20AMD'},'dialAMDInitialSilence':{'type':Sequelize['INTEGER'](0x9)[_0x4502('0x24')],'defaultValue':0x9c4,'validate':{'min':0x0},'comment':_0x4502('0x37')},'dialAMDGreeting':{'type':Sequelize['INTEGER'](0x9)['UNSIGNED'],'defaultValue':0x5dc,'validate':{'min':0x0},'comment':_0x4502('0x38')},'dialAMDAfterGreetingSilence':{'type':Sequelize['INTEGER'](0x9)['UNSIGNED'],'defaultValue':0x320,'validate':{'min':0x0},'comment':'#AMD\x20After\x20Greeting\x20Silence'},'dialAMDTotalAnalysisTime':{'type':Sequelize[_0x4502('0x15')](0x9)[_0x4502('0x24')],'defaultValue':0x1388,'validate':{'min':0x0},'comment':_0x4502('0x39')},'dialAMDMinWordLength':{'type':Sequelize['INTEGER'](0x9)[_0x4502('0x24')],'defaultValue':0x64,'validate':{'min':0x0},'comment':'#AMD\x20Min\x20Word\x20Length'},'dialAMDBetweenWordsSilence':{'type':Sequelize['INTEGER'](0x9)['UNSIGNED'],'defaultValue':0x32,'validate':{'min':0x0},'comment':_0x4502('0x3a')},'dialAMDMaximumNumberOfWords':{'type':Sequelize[_0x4502('0x15')](0x9)[_0x4502('0x24')],'defaultValue':0x3,'validate':{'min':0x0},'comment':_0x4502('0x3b')},'dialAMDSilenceThreshold':{'type':Sequelize[_0x4502('0x15')](0x5)[_0x4502('0x24')],'validate':{'min':0x0,'max':0x7fff},'defaultValue':0x100,'comment':_0x4502('0x3c')},'dialAMDMaximumWordLength':{'type':Sequelize['INTEGER'](0x9)[_0x4502('0x24')],'defaultValue':0x1388,'validate':{'min':0x0},'comment':'#AMD\x20Maximum\x20Word\x20Length'},'dialRecallMeTimeout':{'type':Sequelize[_0x4502('0x15')](0x5)[_0x4502('0x24')],'validate':{'min':0x1},'defaultValue':0x1e,'comment':_0x4502('0x3d')},'dialRecallInQueue':{'type':Sequelize[_0x4502('0x20')],'defaultValue':0x0,'comment':_0x4502('0x3e')},'dialOrderByScheduledAt':{'type':Sequelize[_0x4502('0x7')](_0x4502('0x3f'),_0x4502('0x40')),'defaultValue':'DESC'},'dialQueueProject2':{'type':Sequelize[_0x4502('0x2')],'comment':_0x4502('0x2e')},'dialAgiAfterHangupClient':{'type':Sequelize[_0x4502('0x20')],'defaultValue':![]},'dialAgiAfterHangupAgent':{'type':Sequelize[_0x4502('0x20')],'defaultValue':![]},'dialRandomLastDigitCallerIdNumber':{'type':Sequelize['INTEGER'](0x3)[_0x4502('0x24')],'validate':{'min':0x0,'max':0xf},'defaultValue':0x0,'comment':_0x4502('0x41')},'dialCutDigit':{'type':Sequelize[_0x4502('0x15')](0x3)[_0x4502('0x24')],'validate':{'min':0x0,'max':0xf},'defaultValue':0x0,'comment':_0x4502('0x42')},'dialNoSuchNumberMaxRetry':{'type':Sequelize[_0x4502('0x15')](0x3)[_0x4502('0x24')],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':_0x4502('0x43')},'dialNoSuchNumberRetryFrequency':{'type':Sequelize[_0x4502('0x15')](0x5)[_0x4502('0x24')],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':_0x4502('0x44')},'dialDropMaxRetry':{'type':Sequelize[_0x4502('0x15')](0x3)['UNSIGNED'],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':_0x4502('0x45')},'dialDropRetryFrequency':{'type':Sequelize['INTEGER'](0x5)[_0x4502('0x24')],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':_0x4502('0x46')},'dialAbandonedMaxRetry':{'type':Sequelize['INTEGER'](0x3)[_0x4502('0x24')],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':_0x4502('0x47')},'dialAbandonedRetryFrequency':{'type':Sequelize['INTEGER'](0x5)['UNSIGNED'],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':_0x4502('0x48')},'dialMachineMaxRetry':{'type':Sequelize[_0x4502('0x15')](0x3)[_0x4502('0x24')],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':_0x4502('0x49')},'dialMachineRetryFrequency':{'type':Sequelize[_0x4502('0x15')](0x5)[_0x4502('0x24')],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':'Machine\x20Retry\x20Frequency\x20Minutes\x20(min:1,\x20max:99999)'},'dialAgentRejectMaxRetry':{'type':Sequelize[_0x4502('0x15')](0x3)[_0x4502('0x24')],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':_0x4502('0x4a')},'dialAgentRejectRetryFrequency':{'type':Sequelize[_0x4502('0x15')](0x5)[_0x4502('0x24')],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':_0x4502('0x4b')},'mandatoryDispositionPauseId':{'type':Sequelize[_0x4502('0x15')],'allowNull':!![],'comment':_0x4502('0x4c')},'mandatoryDisposition':{'type':Sequelize[_0x4502('0x20')],'defaultValue':![],'comment':'Enabled/disables\x20mandatory\x20dispo\x20on\x20a\x20queue','set':function(_0x1d3cf3){if(!_0x1d3cf3)this[_0x4502('0x19')](_0x4502('0x4d'),null);this[_0x4502('0x19')](_0x4502('0x4e'),_0x1d3cf3);}},'dialPredictiveIntervalMaxThreshold':{'type':Sequelize['INTEGER'](0x3)[_0x4502('0x24')],'defaultValue':0x14,'validate':{'min':0x1,'max':0x64}},'dialPredictiveIntervalMinThreshold':{'type':Sequelize[_0x4502('0x15')](0x3)[_0x4502('0x24')],'defaultValue':0xa,'validate':{'min':0x1,'max':0x64}}};
\ No newline at end of file
+var _0x05dc=['Max\x209999\x20member\x20in\x20queue(min:1,\x20max:9999),\x200\x20means\x20unlimited.','FLOAT','Power\x20Level:\x20Calls\x20for\x20agents\x20(min:1,\x20max:10).','agentBusyFactor','dropRate','Only\x20for\x20predictive\x20method.','Predictive\x20Optimization\x20Percentage\x20(min:\x201,\x20max:\x2095)','Interval\x20Predictive\x20Minutes\x20(min:5\x20max:30)','Originate\x20Timeout\x20Seconds\x20(min:1,\x20max:999)','tTxX','https://wiki.asterisk.org/wiki/display/AST/Asterisk+13+Application_Queue','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)','NoAnswer\x20Retry\x20Frequency\x20Minutes\x20(min:1,\x20max:99999)','07:00-22:00,*,*,*','always','never','onlyIfOpen','BOOLEAN','#AMD\x20After\x20Greeting\x20Silence','#AMD\x20Total\x20Analysis\x20Time','#AMD\x20Between\x20Words\x20Silence','#AMD\x20Maximum\x20Number\x20Of\x20Words','#AMD\x20Silence\x20Threshold\x20(min:0,\x20max:32767)','#AMD\x20Maximum\x20Word\x20Length','ASC','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\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\x20(min:1,\x20max:999)','AgentReject\x20Retry\x20Frequency\x20Minutes\x20(min:1,\x20max:99999)','Enabled/disables\x20mandatory\x20dispo\x20on\x20a\x20queue','mandatoryDispositionPauseId','sequelize','exports','STRING','name','ENUM','outbound','inbound','default','fewestcalls','random','rrmemory','linear','wrandom','rrordered','ringall','setDataValue','strategy','type','getDataValue','booked','roundrobin','INTEGER','yes','all','once','TEXT','join','periodic_announce','joinempty','split','leavewhenempty','acw','wrapuptime','Active/Disactive\x20Campaign','preview','progressive','power','predictive','Dial\x20Method.','UNSIGNED','Max\x209999\x20channels,\x200\x20means\x20unlimited.'];(function(_0x16dd98,_0x11d346){var _0xfc7fb3=function(_0x40d7d8){while(--_0x40d7d8){_0x16dd98['push'](_0x16dd98['shift']());}};_0xfc7fb3(++_0x11d346);}(_0x05dc,0xcd));var _0xc05d=function(_0x1c270a,_0x378796){_0x1c270a=_0x1c270a-0x0;var _0x2607b8=_0x05dc[_0x1c270a];return _0x2607b8;};'use strict';var Sequelize=require(_0xc05d('0x0'));module[_0xc05d('0x1')]={'name':{'type':Sequelize[_0xc05d('0x2')],'allowNull':![],'unique':_0xc05d('0x3'),'validate':{'notEmpty':!![],'is':/^[A-Za-z0-9\.\_]+$/i}},'type':{'type':Sequelize[_0xc05d('0x4')]('inbound',_0xc05d('0x5')),'allowNull':![],'defaultValue':_0xc05d('0x6')},'musiconhold':{'type':Sequelize['STRING'],'defaultValue':_0xc05d('0x7')},'announce':{'type':Sequelize['STRING'],'defaultValue':''},'strategy':{'type':Sequelize[_0xc05d('0x4')]('rr','ringall','leastrecent',_0xc05d('0x8'),_0xc05d('0x9'),_0xc05d('0xa'),_0xc05d('0xb'),_0xc05d('0xc'),_0xc05d('0xd')),'allowNull':![],'defaultValue':_0xc05d('0xe'),'set':function(_0x51325e){this[_0xc05d('0xf')](_0xc05d('0x10'),_0x51325e?_0x51325e:_0xc05d('0xa'));},'get':function(){var _0x3a958f=this['getDataValue'](_0xc05d('0x11'));var _0x4ec359=this['getDataValue']('dialMethod');var _0x62b4e3=this[_0xc05d('0x12')]('strategy');if(_0x3a958f===_0xc05d('0x6')){return _0x62b4e3;}if(_0x4ec359===_0xc05d('0x13')&&_0x62b4e3==='rrmemory'||_0x4ec359===_0xc05d('0x13')&&_0x62b4e3===_0xc05d('0x14')){return _0x62b4e3;}if(_0x4ec359==='progressive'||_0x4ec359==='predictive'||_0x4ec359==='power'){return _0x62b4e3;}return null;}},'servicelevel':{'type':Sequelize[_0xc05d('0x15')](0xb),'defaultValue':0x0},'context':{'type':Sequelize[_0xc05d('0x2')],'defaultValue':null},'penaltymemberslimit':{'type':Sequelize[_0xc05d('0x15')](0xb)},'timeout':{'type':Sequelize[_0xc05d('0x15')](0xb),'defaultValue':0xf},'retry':{'type':Sequelize[_0xc05d('0x15')](0xb),'defaultValue':0x2},'timeoutpriority':{'type':Sequelize[_0xc05d('0x2')]},'weight':{'type':Sequelize[_0xc05d('0x15')](0xb),'allowNull':!![],'defaultValue':0x0},'wrapuptime':{'type':Sequelize[_0xc05d('0x15')](0xb),'defaultValue':0x0},'autofill':{'type':Sequelize[_0xc05d('0x4')](_0xc05d('0x16'),'no'),'defaultValue':_0xc05d('0x16')},'autopause':{'type':Sequelize['ENUM']('yes','no',_0xc05d('0x17')),'defaultValue':'no'},'autopausedelay':{'type':Sequelize[_0xc05d('0x15')](0xb)},'autopausebusy':{'type':Sequelize[_0xc05d('0x4')]('yes','no'),'defaultValue':'no'},'autopauseunavail':{'type':Sequelize['ENUM'](_0xc05d('0x16'),'no'),'defaultValue':'no'},'maxlen':{'type':Sequelize[_0xc05d('0x15')](0xb),'defaultValue':0x0},'setinterfacevar':{'type':Sequelize['ENUM'](_0xc05d('0x16'),'no'),'defaultValue':'no'},'setqueueentryvar':{'type':Sequelize[_0xc05d('0x4')](_0xc05d('0x16'),'no'),'defautValue':'no'},'setqueuevar':{'type':Sequelize[_0xc05d('0x4')](_0xc05d('0x16'),'no'),'defaultValue':'no'},'eventmemberstatus':{'type':Sequelize[_0xc05d('0x4')](_0xc05d('0x16'),'no'),'defaultValue':'no'},'membermacro':{'type':Sequelize[_0xc05d('0x2')],'allowNull':!![]},'membergosub':{'type':Sequelize['STRING'],'allowNull':!![]},'announce_frequency':{'type':Sequelize['INTEGER'](0xb),'defaultValue':0x0},'min_announce_frequency':{'type':Sequelize[_0xc05d('0x15')](0xb),'defaultValue':0x0},'periodic_announce_frequency':{'type':Sequelize['INTEGER'](0xb),'defaultValue':0x0},'random_periodic_announce':{'type':Sequelize[_0xc05d('0x4')]('yes','no'),'defaultValue':'no'},'relative_periodic_announce':{'type':Sequelize[_0xc05d('0x4')]('yes','no'),'defaultValue':_0xc05d('0x16')},'announce_holdtime':{'type':Sequelize[_0xc05d('0x4')](_0xc05d('0x16'),'no',_0xc05d('0x18')),'defaultValue':'no'},'announce_position':{'type':Sequelize[_0xc05d('0x2')],'defaultValue':'no'},'announce_to_first_user':{'type':Sequelize[_0xc05d('0x4')]('yes','no')},'announce_position_limit':{'type':Sequelize['INTEGER'](0xb)},'announce_round_seconds':{'type':Sequelize[_0xc05d('0x4')]('0','5','10','15','20','30'),'defaultValue':'0'},'monitor_format':{'type':Sequelize['STRING'],'defaultValue':''},'monitor_type':{'type':Sequelize[_0xc05d('0x2')]},'queue_youarenext':{'type':Sequelize[_0xc05d('0x2')],'defaultValue':null},'queue_thereare':{'type':Sequelize[_0xc05d('0x2')],'defaultValue':null},'queue_callswaiting':{'type':Sequelize['STRING'],'defaultValue':null},'queue_holdtime':{'type':Sequelize[_0xc05d('0x2')],'defaultValue':null},'queue_minute':{'type':Sequelize[_0xc05d('0x2')],'allowNull':!![],'defaultValue':null},'queue_minutes':{'type':Sequelize[_0xc05d('0x2')],'defaultValue':null},'queue_seconds':{'type':Sequelize[_0xc05d('0x2')],'defaultValue':null},'queue_thankyou':{'type':Sequelize[_0xc05d('0x2')],'defaultValue':null},'queue_reporthold':{'type':Sequelize[_0xc05d('0x2')]},'queue_quantity1':{'type':Sequelize[_0xc05d('0x2')]},'queue_quantity2':{'type':Sequelize[_0xc05d('0x2')]},'queue_periodic_announce':{'type':Sequelize[_0xc05d('0x2')]},'queue_less_than':{'type':Sequelize[_0xc05d('0x2')]},'periodic_announce':{'type':Sequelize[_0xc05d('0x19')],'set':function(_0x5555cb){this['setDataValue']('periodic_announce',_0x5555cb?_0x5555cb[_0xc05d('0x1a')](','):[]);},'get':function(){return this['getDataValue'](_0xc05d('0x1b'))?this[_0xc05d('0x12')](_0xc05d('0x1b'))['split'](','):[];}},'joinempty':{'type':Sequelize[_0xc05d('0x2')],'defaultValue':_0xc05d('0x16'),'set':function(_0x130b66){this[_0xc05d('0xf')](_0xc05d('0x1c'),_0x130b66?_0x130b66[_0xc05d('0x1a')](','):undefined);},'get':function(){return this[_0xc05d('0x12')](_0xc05d('0x1c'))?this['getDataValue'](_0xc05d('0x1c'))[_0xc05d('0x1d')](','):undefined;}},'leavewhenempty':{'type':Sequelize['STRING'],'defaultValue':'no','set':function(_0x480b4c){this[_0xc05d('0xf')](_0xc05d('0x1e'),_0x480b4c?_0x480b4c[_0xc05d('0x1a')](','):undefined);},'get':function(){return this[_0xc05d('0x12')]('leavewhenempty')?this[_0xc05d('0x12')](_0xc05d('0x1e'))[_0xc05d('0x1d')](','):undefined;}},'reportholdtime':{'type':Sequelize['ENUM'](_0xc05d('0x16'),'no'),'defaultValue':'no'},'ringinuse':{'type':Sequelize[_0xc05d('0x4')](_0xc05d('0x16'),'no'),'defaultValue':'no'},'memberdelay':{'type':Sequelize[_0xc05d('0x15')](0xb),'defaultValue':0x0},'timeoutrestart':{'type':Sequelize[_0xc05d('0x4')]('yes','no'),'defaultValue':'no'},'defaultrule':{'type':Sequelize[_0xc05d('0x2')]},'description':{'type':Sequelize[_0xc05d('0x2')]},'acw':{'type':Sequelize['BOOLEAN'],'defaultValue':0x0,'set':function(_0x4ae95f){this['setDataValue'](_0xc05d('0x1f'),_0x4ae95f);if(_0x4ae95f){if(this['getDataValue']('wrapuptime')<0x2){this[_0xc05d('0xf')](_0xc05d('0x20'),0x2);}}}},'acwTimeout':{'type':Sequelize[_0xc05d('0x15')](0xb),'defaultValue':0xa},'dialActive':{'type':Sequelize['BOOLEAN'],'defaultValue':0x0,'comment':_0xc05d('0x21')},'dialMethod':{'type':Sequelize[_0xc05d('0x4')](_0xc05d('0x22'),_0xc05d('0x23'),_0xc05d('0x24'),_0xc05d('0x25'),'booked'),'defaultValue':_0xc05d('0x23'),'comment':_0xc05d('0x26')},'dialLimitChannel':{'type':Sequelize[_0xc05d('0x15')](0x4)[_0xc05d('0x27')],'defaultValue':0x0,'validate':{'min':0x0,'max':0x270f},'comment':_0xc05d('0x28')},'dialLimitQueue':{'type':Sequelize[_0xc05d('0x15')](0x4)['UNSIGNED'],'defaultValue':0x0,'validate':{'min':0x0,'max':0x270f},'comment':_0xc05d('0x29')},'dialPowerLevel':{'type':Sequelize[_0xc05d('0x2a')](0x2)['UNSIGNED'],'defaultValue':0x1,'validate':{'min':0x1,'max':0xa},'comment':_0xc05d('0x2b')},'dialPredictiveOptimization':{'type':Sequelize[_0xc05d('0x4')](_0xc05d('0x2c'),_0xc05d('0x2d')),'defaultValue':_0xc05d('0x2d'),'comment':_0xc05d('0x2e')},'dialPredictiveOptimizationPercentage':{'type':Sequelize['FLOAT'](0x2)[_0xc05d('0x27')],'defaultValue':0x3,'validate':{'min':0x1,'max':0x5f},'comment':_0xc05d('0x2f')},'dialPredictiveInterval':{'type':Sequelize[_0xc05d('0x15')](0x3)['UNSIGNED'],'defaultValue':0xa,'validate':{'min':0x5,'max':0x1e},'comment':_0xc05d('0x30')},'dialOriginateCallerIdName':{'type':Sequelize[_0xc05d('0x2')]},'dialOriginateCallerIdNumber':{'type':Sequelize[_0xc05d('0x2')]},'dialOriginateTimeout':{'type':Sequelize[_0xc05d('0x15')](0x3)[_0xc05d('0x27')],'defaultValue':0x1e,'validate':{'min':0x1,'max':0x3e7},'comment':_0xc05d('0x31')},'dialQueueOptions':{'type':Sequelize[_0xc05d('0x2')],'defaultValue':_0xc05d('0x32'),'comment':_0xc05d('0x33')},'dialQueueTimeout':{'type':Sequelize[_0xc05d('0x15')](0x3)[_0xc05d('0x27')],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':'Queue\x20Timeout\x20Seconds\x20(min:1,\x20max:999)'},'dialQueueProject':{'type':Sequelize[_0xc05d('0x2')],'comment':'AGI\x20queue\x20option\x20(use:\x20agi://127.0.0.1/square,<project_name>)'},'dialCongestionMaxRetry':{'type':Sequelize[_0xc05d('0x15')](0x3)[_0xc05d('0x27')],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':'#Congestion\x20Retry\x20(min:1,\x20max:999)'},'dialCongestionRetryFrequency':{'type':Sequelize[_0xc05d('0x15')](0x5)[_0xc05d('0x27')],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':_0xc05d('0x34')},'dialBusyMaxRetry':{'type':Sequelize[_0xc05d('0x15')](0x3)[_0xc05d('0x27')],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':_0xc05d('0x35')},'dialBusyRetryFrequency':{'type':Sequelize['INTEGER'](0x5)['UNSIGNED'],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':_0xc05d('0x36')},'dialNoAnswerMaxRetry':{'type':Sequelize[_0xc05d('0x15')](0x3)['UNSIGNED'],'defaultValue':0x3,'comment':_0xc05d('0x37')},'dialNoAnswerRetryFrequency':{'type':Sequelize['INTEGER'](0x5)[_0xc05d('0x27')],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':_0xc05d('0x38')},'dialGlobalMaxRetry':{'type':Sequelize[_0xc05d('0x15')](0x3)[_0xc05d('0x27')],'validate':{'min':0x1,'max':0x3e7},'defaultValue':0x4,'comment':'#Global\x20Max\x20Retry\x20(min:1,\x20max:999)'},'dialTimezone':{'type':Sequelize['STRING'],'defaultValue':null},'dialGlobalInterval':{'type':Sequelize[_0xc05d('0x2')],'defaultValue':_0xc05d('0x39')},'dialPrefix':{'type':Sequelize['STRING'],'defaultValue':null},'dialCheckDuplicateType':{'type':Sequelize['ENUM'](_0xc05d('0x3a'),_0xc05d('0x3b'),_0xc05d('0x3c')),'defaultValue':_0xc05d('0x3a')},'dialAMDActive':{'type':Sequelize[_0xc05d('0x3d')],'defaultValue':0x0,'comment':'Active/Disactive\x20AMD'},'dialAMDInitialSilence':{'type':Sequelize[_0xc05d('0x15')](0x9)[_0xc05d('0x27')],'defaultValue':0x9c4,'validate':{'min':0x0},'comment':'#AMD\x20Initial\x20Silence'},'dialAMDGreeting':{'type':Sequelize[_0xc05d('0x15')](0x9)['UNSIGNED'],'defaultValue':0x5dc,'validate':{'min':0x0},'comment':'#AMD\x20Greeting'},'dialAMDAfterGreetingSilence':{'type':Sequelize['INTEGER'](0x9)['UNSIGNED'],'defaultValue':0x320,'validate':{'min':0x0},'comment':_0xc05d('0x3e')},'dialAMDTotalAnalysisTime':{'type':Sequelize[_0xc05d('0x15')](0x9)['UNSIGNED'],'defaultValue':0x1388,'validate':{'min':0x0},'comment':_0xc05d('0x3f')},'dialAMDMinWordLength':{'type':Sequelize[_0xc05d('0x15')](0x9)[_0xc05d('0x27')],'defaultValue':0x64,'validate':{'min':0x0},'comment':'#AMD\x20Min\x20Word\x20Length'},'dialAMDBetweenWordsSilence':{'type':Sequelize['INTEGER'](0x9)[_0xc05d('0x27')],'defaultValue':0x32,'validate':{'min':0x0},'comment':_0xc05d('0x40')},'dialAMDMaximumNumberOfWords':{'type':Sequelize[_0xc05d('0x15')](0x9)[_0xc05d('0x27')],'defaultValue':0x3,'validate':{'min':0x0},'comment':_0xc05d('0x41')},'dialAMDSilenceThreshold':{'type':Sequelize[_0xc05d('0x15')](0x5)[_0xc05d('0x27')],'validate':{'min':0x0,'max':0x7fff},'defaultValue':0x100,'comment':_0xc05d('0x42')},'dialAMDMaximumWordLength':{'type':Sequelize['INTEGER'](0x9)[_0xc05d('0x27')],'defaultValue':0x1388,'validate':{'min':0x0},'comment':_0xc05d('0x43')},'dialRecallMeTimeout':{'type':Sequelize[_0xc05d('0x15')](0x5)[_0xc05d('0x27')],'validate':{'min':0x1},'defaultValue':0x1e,'comment':'#RecallMe\x20Timeout\x20(min:1)'},'dialRecallInQueue':{'type':Sequelize[_0xc05d('0x3d')],'defaultValue':0x0,'comment':'Active/Disactive\x20Recall\x20In\x20Queue'},'dialOrderByScheduledAt':{'type':Sequelize[_0xc05d('0x4')]('DESC',_0xc05d('0x44')),'defaultValue':'DESC'},'dialQueueProject2':{'type':Sequelize[_0xc05d('0x2')],'comment':_0xc05d('0x45')},'dialAgiAfterHangupClient':{'type':Sequelize[_0xc05d('0x3d')],'defaultValue':![]},'dialAgiAfterHangupAgent':{'type':Sequelize[_0xc05d('0x3d')],'defaultValue':![]},'dialRandomLastDigitCallerIdNumber':{'type':Sequelize[_0xc05d('0x15')](0x3)['UNSIGNED'],'validate':{'min':0x0,'max':0xf},'defaultValue':0x0,'comment':_0xc05d('0x46')},'dialCutDigit':{'type':Sequelize[_0xc05d('0x15')](0x3)[_0xc05d('0x27')],'validate':{'min':0x0,'max':0xf},'defaultValue':0x0,'comment':_0xc05d('0x47')},'dialNoSuchNumberMaxRetry':{'type':Sequelize[_0xc05d('0x15')](0x3)[_0xc05d('0x27')],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':_0xc05d('0x48')},'dialNoSuchNumberRetryFrequency':{'type':Sequelize['INTEGER'](0x5)['UNSIGNED'],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':_0xc05d('0x49')},'dialDropMaxRetry':{'type':Sequelize[_0xc05d('0x15')](0x3)[_0xc05d('0x27')],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':_0xc05d('0x4a')},'dialDropRetryFrequency':{'type':Sequelize[_0xc05d('0x15')](0x5)[_0xc05d('0x27')],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':_0xc05d('0x4b')},'dialAbandonedMaxRetry':{'type':Sequelize[_0xc05d('0x15')](0x3)[_0xc05d('0x27')],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':_0xc05d('0x4c')},'dialAbandonedRetryFrequency':{'type':Sequelize['INTEGER'](0x5)[_0xc05d('0x27')],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':_0xc05d('0x4d')},'dialMachineMaxRetry':{'type':Sequelize[_0xc05d('0x15')](0x3)[_0xc05d('0x27')],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':_0xc05d('0x4e')},'dialMachineRetryFrequency':{'type':Sequelize['INTEGER'](0x5)[_0xc05d('0x27')],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':'Machine\x20Retry\x20Frequency\x20Minutes\x20(min:1,\x20max:99999)'},'dialAgentRejectMaxRetry':{'type':Sequelize[_0xc05d('0x15')](0x3)['UNSIGNED'],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':'#AgentReject\x20Retry\x20(min:1,\x20max:999)'},'dialAgentRejectRetryFrequency':{'type':Sequelize[_0xc05d('0x15')](0x5)['UNSIGNED'],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':_0xc05d('0x4f')},'mandatoryDispositionPauseId':{'type':Sequelize[_0xc05d('0x15')],'allowNull':!![],'comment':'Status\x20to\x20put\x20when\x20mandatory\x20disposition\x20is\x20enabled'},'mandatoryDisposition':{'type':Sequelize[_0xc05d('0x3d')],'defaultValue':![],'comment':_0xc05d('0x50'),'set':function(_0x562c5a){if(!_0x562c5a)this[_0xc05d('0xf')](_0xc05d('0x51'),null);this[_0xc05d('0xf')]('mandatoryDisposition',_0x562c5a);}},'dialPredictiveIntervalMaxThreshold':{'type':Sequelize[_0xc05d('0x15')](0x3)['UNSIGNED'],'defaultValue':0x14,'validate':{'min':0x1,'max':0x64}},'dialPredictiveIntervalMinThreshold':{'type':Sequelize['INTEGER'](0x3)[_0xc05d('0x27')],'defaultValue':0xa,'validate':{'min':0x1,'max':0x64}}};
\ No newline at end of file
index f8eca9b..d1250d0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9c8f=['sendStatus','status','end','json','undefined','limit','count','offset','Content-Range','apply','update','then','destroy','get','VoiceQueues','inbound','outbound','filter','map','value','includes','type','name','UserProfileResource','stack','send','index','VoiceQueue','rawAttributes','fieldName','key','model','query','filters','intersection','fields','attributes','length','nolimit','order','sort','where','pick','VIRTUAL','merge','includeAll','include','findAll','catch','show','keys','options','find','create','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','UserProfileSection','userProfileId','autoAssociation','error','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','clone','omit','createdAt','body','updatedAt','QueueCampaigns','params','getHoppers','findOne','CmHopper','hasOwnProperty','rows','getHopperHistories','CmHopperHistory','VoiceQueueId','getHopperFinals','CmHopperFinal','CmHopperBlack','getTeams','addTeams','Team','User','online','voicePause','flatMap','Agents','forEach','penalty','sequelize','transaction','each','upsert','UserVoiceQueue','findOrCreate','UserVoiceQueueRt','interface','SIP/%s','emit','userVoiceQueue:save','ids','select','field','from','team_has_voice_queues','join','user_has_teams','VoiceQueueId\x20=\x20?','ut.UserId\x20=\x20?','push','toString','QueryTypes','every','all','union','compact','isEmpty','removeAgents','userVoiceQueue:remove','addAgents','isNil','isArray','getAgents','getMembers','getLists','CmList','addLists','spread','dialCheckDuplicateType','always','into','cm_hopper','fromQuery','phone','scheduledAt','ListId','NOW()','ContactId','CmListId','deletedAt\x20IS\x20NULL','ListId\x20=\x20?','phone\x20IS\x20NOT\x20NULL','phone\x20NOT\x20IN\x20(?)','COALESCE(calleridnum,\x27\x27)','COALESCE(phone,\x27\x27)','onlyIfOpen','cm_contacts','insert','removeLists','getBlackLists','addBlackLists','cm_hopper_black','removeBlackLists','rimraf','zip-dir','request-promise','moment','bluebird','mustache','util','path','sox','ejs','lodash','squel','crypto','jsforce','desk.js','to-csv','querystring','papaparse','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','../../config/utils','../../config/license/util','../../mysqldb','redis','defaults','localhost','socket.io-emitter','./voiceQueue.socket','register'];(function(_0xb400d3,_0x3297d1){var _0x745322=function(_0x5579b4){while(--_0x5579b4){_0xb400d3['push'](_0xb400d3['shift']());}};_0x745322(++_0x3297d1);}(_0x9c8f,0x153));var _0xf9c8=function(_0x296809,_0x1c9665){_0x296809=_0x296809-0x0;var _0x18c0d3=_0x9c8f[_0x296809];return _0x18c0d3;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0xf9c8('0x0'));var zipdir=require(_0xf9c8('0x1'));var jsonpatch=require('fast-json-patch');var rp=require(_0xf9c8('0x2'));var moment=require(_0xf9c8('0x3'));var BPromise=require(_0xf9c8('0x4'));var Mustache=require(_0xf9c8('0x5'));var util=require(_0xf9c8('0x6'));var path=require(_0xf9c8('0x7'));var sox=require(_0xf9c8('0x8'));var csv=require('to-csv');var ejs=require(_0xf9c8('0x9'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0xf9c8('0xa'));var squel=require(_0xf9c8('0xb'));var crypto=require(_0xf9c8('0xc'));var jsforce=require(_0xf9c8('0xd'));var deskjs=require(_0xf9c8('0xe'));var toCsv=require(_0xf9c8('0xf'));var querystring=require(_0xf9c8('0x10'));var Papa=require(_0xf9c8('0x11'));var Redis=require('ioredis');var authService=require('../../components/auth/service');var qs=require(_0xf9c8('0x12'));var as=require(_0xf9c8('0x13'));var hardwareService=require(_0xf9c8('0x14'));var logger=require(_0xf9c8('0x15'))('api');var utils=require(_0xf9c8('0x16'));var config=require('../../config/environment');var licenseUtil=require(_0xf9c8('0x17'));var db=require(_0xf9c8('0x18'))['db'];config[_0xf9c8('0x19')]=_[_0xf9c8('0x1a')](config[_0xf9c8('0x19')],{'host':_0xf9c8('0x1b'),'port':0x18eb});var socket=require(_0xf9c8('0x1c'))(new Redis(config[_0xf9c8('0x19')]));require(_0xf9c8('0x1d'))[_0xf9c8('0x1e')](socket);function respondWithStatusCode(_0x26b522,_0x459a1c){_0x459a1c=_0x459a1c||0xcc;return function(_0xcf01ff){if(_0xcf01ff){return _0x26b522[_0xf9c8('0x1f')](_0x459a1c);}return _0x26b522[_0xf9c8('0x20')](_0x459a1c)[_0xf9c8('0x21')]();};}function respondWithResult(_0x11f66c,_0x3398a7){_0x3398a7=_0x3398a7||0xc8;return function(_0x5027e4){if(_0x5027e4){return _0x11f66c[_0xf9c8('0x20')](_0x3398a7)[_0xf9c8('0x22')](_0x5027e4);}};}function respondWithFilteredResult(_0xd2666d,_0x59ffef){return function(_0x1d3ced){if(_0x1d3ced){var _0x437253=typeof _0x59ffef['offset']===_0xf9c8('0x23')&&typeof _0x59ffef[_0xf9c8('0x24')]===_0xf9c8('0x23');var _0x1e8d66=_0x1d3ced[_0xf9c8('0x25')];var _0x5730ac=_0x437253?0x0:_0x59ffef[_0xf9c8('0x26')];var _0x4bb816=_0x437253?_0x1d3ced[_0xf9c8('0x25')]:_0x59ffef[_0xf9c8('0x26')]+_0x59ffef[_0xf9c8('0x24')];var _0x4d54aa;if(_0x4bb816>=_0x1e8d66){_0x4bb816=_0x1e8d66;_0x4d54aa=0xc8;}else{_0x4d54aa=0xce;}_0xd2666d['status'](_0x4d54aa);return _0xd2666d['set'](_0xf9c8('0x27'),_0x5730ac+'-'+_0x4bb816+'/'+_0x1e8d66)[_0xf9c8('0x22')](_0x1d3ced);}return null;};}function patchUpdates(_0x2218a3){return function(_0x5dcbb6){try{jsonpatch[_0xf9c8('0x28')](_0x5dcbb6,_0x2218a3,!![]);}catch(_0x5edeea){return BPromise['reject'](_0x5edeea);}return _0x5dcbb6['save']();};}function saveUpdates(_0x5cc36d,_0x3526a8){return function(_0xb3b355){if(_0xb3b355){return _0xb3b355[_0xf9c8('0x29')](_0x5cc36d)[_0xf9c8('0x2a')](function(_0x2a9e54){return _0x2a9e54;});}return null;};}function removeEntity(_0x3394ea,_0x419a72){return function(_0x58bb4f){if(_0x58bb4f){return _0x58bb4f[_0xf9c8('0x2b')]()[_0xf9c8('0x2a')](function(){var _0x2cbdbf=_0x58bb4f[_0xf9c8('0x2c')]({'plain':!![]});var _0x21a6ba=[{'name':_0xf9c8('0x2d'),'value':_0xf9c8('0x2e'),'ignore':![]},{'name':'QueueCampaigns','value':_0xf9c8('0x2f'),'ignore':![]}];var _0x50146d=_(_0x21a6ba)[_0xf9c8('0x30')]('ignore')[_0xf9c8('0x31')](_0xf9c8('0x32'))['value']();if(_[_0xf9c8('0x33')](_0x50146d,_0x2cbdbf['type'])){return;}var _0xe5bd1=_['find'](_0x21a6ba,[_0xf9c8('0x32'),_0x2cbdbf[_0xf9c8('0x34')]])[_0xf9c8('0x35')];return db[_0xf9c8('0x36')][_0xf9c8('0x2b')]({'where':{'type':_0xe5bd1,'resourceId':_0x2cbdbf['id']}})['then'](function(){return _0x58bb4f;});})[_0xf9c8('0x2a')](function(){_0x3394ea[_0xf9c8('0x20')](0xcc)[_0xf9c8('0x21')]();});}};}function handleEntityNotFound(_0x39fe00,_0x2adb0a){return function(_0x2b5347){if(!_0x2b5347){_0x39fe00[_0xf9c8('0x1f')](0x194);}return _0x2b5347;};}function handleError(_0x59b782,_0x1e2ffe){_0x1e2ffe=_0x1e2ffe||0x1f4;return function(_0x113010){logger['error'](_0x113010[_0xf9c8('0x37')]);if(_0x113010[_0xf9c8('0x35')]){delete _0x113010[_0xf9c8('0x35')];}_0x59b782['status'](_0x1e2ffe)[_0xf9c8('0x38')](_0x113010);};}exports[_0xf9c8('0x39')]=function(_0x1650b4,_0x48ab06){var _0x4d9617={},_0x4996cf={},_0x586b19={'count':0x0,'rows':[]};var _0x543627=_[_0xf9c8('0x31')](db[_0xf9c8('0x3a')][_0xf9c8('0x3b')],function(_0x3385d5){return{'name':_0x3385d5[_0xf9c8('0x3c')],'type':_0x3385d5[_0xf9c8('0x34')][_0xf9c8('0x3d')]};});_0x4996cf[_0xf9c8('0x3e')]=_[_0xf9c8('0x31')](_0x543627,'name');_0x4996cf[_0xf9c8('0x3f')]=_['keys'](_0x1650b4[_0xf9c8('0x3f')]);_0x4996cf[_0xf9c8('0x40')]=_[_0xf9c8('0x41')](_0x4996cf[_0xf9c8('0x3e')],_0x4996cf['query']);_0x4d9617['attributes']=_[_0xf9c8('0x41')](_0x4996cf[_0xf9c8('0x3e')],qs[_0xf9c8('0x42')](_0x1650b4['query']['fields']));_0x4d9617[_0xf9c8('0x43')]=_0x4d9617['attributes'][_0xf9c8('0x44')]?_0x4d9617[_0xf9c8('0x43')]:_0x4996cf[_0xf9c8('0x3e')];if(!_0x1650b4[_0xf9c8('0x3f')]['hasOwnProperty'](_0xf9c8('0x45'))){_0x4d9617[_0xf9c8('0x24')]=qs[_0xf9c8('0x24')](_0x1650b4[_0xf9c8('0x3f')]['limit']);_0x4d9617['offset']=qs['offset'](_0x1650b4[_0xf9c8('0x3f')][_0xf9c8('0x26')]);}_0x4d9617[_0xf9c8('0x46')]=qs[_0xf9c8('0x47')](_0x1650b4[_0xf9c8('0x3f')][_0xf9c8('0x47')]);_0x4d9617[_0xf9c8('0x48')]=qs[_0xf9c8('0x40')](_[_0xf9c8('0x49')](_0x1650b4['query'],_0x4996cf[_0xf9c8('0x40')]),_0x543627);if(_0x1650b4['query'][_0xf9c8('0x30')]){_0x4d9617[_0xf9c8('0x48')]=_['merge'](_0x4d9617['where'],{'$or':_[_0xf9c8('0x31')](_0x543627,function(_0x519d4d){if(_0x519d4d[_0xf9c8('0x34')]!==_0xf9c8('0x4a')){var _0x341dc9={};_0x341dc9[_0x519d4d['name']]={'$like':'%'+_0x1650b4[_0xf9c8('0x3f')][_0xf9c8('0x30')]+'%'};return _0x341dc9;}})});}_0x4d9617=_[_0xf9c8('0x4b')]({},_0x4d9617,_0x1650b4['options']);var _0xb04ba1={'where':_0x4d9617['where']};return db[_0xf9c8('0x3a')][_0xf9c8('0x25')](_0xb04ba1)[_0xf9c8('0x2a')](function(_0x3b12b5){_0x586b19['count']=_0x3b12b5;if(_0x1650b4['query'][_0xf9c8('0x4c')]){_0x4d9617[_0xf9c8('0x4d')]=[{'all':!![]}];}return db[_0xf9c8('0x3a')][_0xf9c8('0x4e')](_0x4d9617);})[_0xf9c8('0x2a')](function(_0x2bce11){_0x586b19['rows']=_0x2bce11;return _0x586b19;})['then'](respondWithFilteredResult(_0x48ab06,_0x4d9617))[_0xf9c8('0x4f')](handleError(_0x48ab06,null));};exports[_0xf9c8('0x50')]=function(_0x519832,_0x130cc2){var _0x4d93ec={'raw':![],'where':{'id':_0x519832['params']['id']}},_0xb0aa74={};_0xb0aa74[_0xf9c8('0x3e')]=_[_0xf9c8('0x51')](db[_0xf9c8('0x3a')][_0xf9c8('0x3b')]);_0xb0aa74['query']=_[_0xf9c8('0x51')](_0x519832[_0xf9c8('0x3f')]);_0xb0aa74[_0xf9c8('0x40')]=_[_0xf9c8('0x41')](_0xb0aa74['model'],_0xb0aa74[_0xf9c8('0x3f')]);_0x4d93ec[_0xf9c8('0x43')]=_[_0xf9c8('0x41')](_0xb0aa74['model'],qs[_0xf9c8('0x42')](_0x519832[_0xf9c8('0x3f')][_0xf9c8('0x42')]));_0x4d93ec[_0xf9c8('0x43')]=_0x4d93ec[_0xf9c8('0x43')]['length']?_0x4d93ec['attributes']:_0xb0aa74[_0xf9c8('0x3e')];if(_0x519832[_0xf9c8('0x3f')][_0xf9c8('0x4c')]){_0x4d93ec[_0xf9c8('0x4d')]=[{'all':!![]}];}_0x4d93ec=_[_0xf9c8('0x4b')]({},_0x4d93ec,_0x519832[_0xf9c8('0x52')]);return db['VoiceQueue'][_0xf9c8('0x53')](_0x4d93ec)[_0xf9c8('0x2a')](handleEntityNotFound(_0x130cc2,null))[_0xf9c8('0x2a')](respondWithResult(_0x130cc2,null))[_0xf9c8('0x4f')](handleError(_0x130cc2,null));};exports[_0xf9c8('0x54')]=function(_0xe2ab14,_0xbadf98){return db[_0xf9c8('0x3a')][_0xf9c8('0x54')](_0xe2ab14['body'],{})[_0xf9c8('0x2a')](function(_0x49fec0){var _0x218b04=_0xe2ab14[_0xf9c8('0x55')][_0xf9c8('0x2c')]({'plain':!![]});if(!_0x218b04)throw new Error(_0xf9c8('0x56'));if(_0x218b04[_0xf9c8('0x57')]==='user'){var _0x59efbc=_0x49fec0[_0xf9c8('0x2c')]({'plain':!![]});var _0xc00377=[{'name':_0xf9c8('0x2d'),'value':_0xf9c8('0x2e')},{'name':'QueueCampaigns','value':_0xf9c8('0x2f')}];var _0x2bdb31=_[_0xf9c8('0x53')](_0xc00377,[_0xf9c8('0x32'),_0x59efbc[_0xf9c8('0x34')]])[_0xf9c8('0x35')];return db[_0xf9c8('0x58')]['find']({'where':{'name':_0x2bdb31,'userProfileId':_0x218b04[_0xf9c8('0x59')]},'raw':!![]})[_0xf9c8('0x2a')](function(_0xca3ab6){if(_0xca3ab6&&_0xca3ab6[_0xf9c8('0x5a')]===0x0){return db[_0xf9c8('0x36')][_0xf9c8('0x54')]({'name':_0x59efbc[_0xf9c8('0x35')],'resourceId':_0x59efbc['id'],'type':_0xca3ab6[_0xf9c8('0x35')],'sectionId':_0xca3ab6['id']},{})[_0xf9c8('0x2a')](function(){return _0x49fec0;});}else{return _0x49fec0;}})[_0xf9c8('0x4f')](function(_0x414ee8){logger[_0xf9c8('0x5b')](_0xf9c8('0x5c'),_0x414ee8);throw _0x414ee8;});}return _0x49fec0;})[_0xf9c8('0x2a')](respondWithResult(_0xbadf98,0xc9))['catch'](handleError(_0xbadf98,null));};exports[_0xf9c8('0x5d')]=function(_0x557cd5,_0x583ac4){var _0x2d9613={'where':{'id':_0x557cd5['params']['id']}},_0x23c59b={};_0x23c59b[_0xf9c8('0x3e')]=_[_0xf9c8('0x51')](db[_0xf9c8('0x3a')][_0xf9c8('0x3b')]);_0x2d9613['attributes']=_[_0xf9c8('0x41')](_0x23c59b[_0xf9c8('0x3e')],qs[_0xf9c8('0x42')](_0x557cd5[_0xf9c8('0x3f')][_0xf9c8('0x42')]));_0x2d9613[_0xf9c8('0x43')]=_0x2d9613['attributes'][_0xf9c8('0x44')]?_0x2d9613[_0xf9c8('0x43')]:_0x23c59b[_0xf9c8('0x3e')];if(_0x557cd5[_0xf9c8('0x3f')][_0xf9c8('0x4c')]){_0x2d9613[_0xf9c8('0x4d')]=[{'all':!![]}];}_0x2d9613=_[_0xf9c8('0x4b')]({},_0x2d9613,_0x557cd5['options']);return db[_0xf9c8('0x3a')][_0xf9c8('0x53')](_0x2d9613)[_0xf9c8('0x2a')](handleEntityNotFound(_0x583ac4,null))[_0xf9c8('0x2a')](function(_0x2204c2){if(_0x2204c2){var _0x205925=_0x2204c2[_0xf9c8('0x2c')]({'plain':!![]});_0x205925=qs[_0xf9c8('0x5e')](_0x205925,['id',_0xf9c8('0x5f'),'updatedAt']);_0x557cd5[_0xf9c8('0x60')]=_[_0xf9c8('0x5e')](_0x557cd5['body'],['id',_0xf9c8('0x5f'),_0xf9c8('0x61')]);return db['VoiceQueue'][_0xf9c8('0x54')](_[_0xf9c8('0x4b')](_0x205925,_0x557cd5[_0xf9c8('0x60')]),{'include':_0x557cd5[_0xf9c8('0x3f')][_0xf9c8('0x4c')]?[{'all':!![]}]:undefined})[_0xf9c8('0x2a')](function(_0x5a1e44){var _0x263a62=_0x557cd5[_0xf9c8('0x55')][_0xf9c8('0x2c')]({'plain':!![]});if(!_0x263a62)throw new Error(_0xf9c8('0x56'));if(_0x263a62[_0xf9c8('0x57')]===_0xf9c8('0x55')){var _0x58e175=_0x5a1e44[_0xf9c8('0x2c')]({'plain':!![]});var _0x590673=[{'name':'VoiceQueues','value':_0xf9c8('0x2e')},{'name':_0xf9c8('0x62'),'value':'outbound'}];var _0x59f0fb=_[_0xf9c8('0x53')](_0x590673,[_0xf9c8('0x32'),_0x58e175[_0xf9c8('0x34')]])[_0xf9c8('0x35')];return db['UserProfileSection'][_0xf9c8('0x53')]({'where':{'name':_0x59f0fb,'userProfileId':_0x263a62['userProfileId']},'raw':!![]})[_0xf9c8('0x2a')](function(_0x2a024b){if(_0x2a024b&&_0x2a024b['autoAssociation']===0x0){return db[_0xf9c8('0x36')][_0xf9c8('0x54')]({'name':_0x58e175[_0xf9c8('0x35')],'resourceId':_0x58e175['id'],'type':_0x2a024b[_0xf9c8('0x35')],'sectionId':_0x2a024b['id']},{})[_0xf9c8('0x2a')](function(){return _0x5a1e44;});}else{return _0x5a1e44;}})['catch'](function(_0x223582){logger[_0xf9c8('0x5b')]('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0x223582);throw _0x223582;});}return _0x5a1e44;});}})[_0xf9c8('0x2a')](respondWithResult(_0x583ac4,0xc9))[_0xf9c8('0x4f')](handleError(_0x583ac4,null));};exports[_0xf9c8('0x29')]=function(_0xca201c,_0x2fdd06){if(_0xca201c[_0xf9c8('0x60')]['id']){delete _0xca201c[_0xf9c8('0x60')]['id'];}return db[_0xf9c8('0x3a')][_0xf9c8('0x53')]({'where':{'id':_0xca201c['params']['id']}})[_0xf9c8('0x2a')](handleEntityNotFound(_0x2fdd06,null))[_0xf9c8('0x2a')](saveUpdates(_0xca201c[_0xf9c8('0x60')],null))[_0xf9c8('0x2a')](respondWithResult(_0x2fdd06,null))[_0xf9c8('0x4f')](handleError(_0x2fdd06,null));};exports['destroy']=function(_0x1136c9,_0x5826b9){return db[_0xf9c8('0x3a')][_0xf9c8('0x53')]({'where':{'id':_0x1136c9[_0xf9c8('0x63')]['id']}})['then'](handleEntityNotFound(_0x5826b9,null))[_0xf9c8('0x2a')](removeEntity(_0x5826b9,null))[_0xf9c8('0x4f')](handleError(_0x5826b9,null));};exports[_0xf9c8('0x64')]=function(_0x347ed7,_0x51f4d4,_0x28f5cf){var _0x4658d6={'raw':![],'where':{}};var _0x3164c5={};var _0x4c2e46={'count':0x0,'rows':[]};return db[_0xf9c8('0x3a')][_0xf9c8('0x65')]({'where':{'id':_0x347ed7['params']['id']}})[_0xf9c8('0x2a')](handleEntityNotFound(_0x51f4d4,null))[_0xf9c8('0x2a')](function(_0x479ef7){if(_0x479ef7){_0x3164c5[_0xf9c8('0x3e')]=_['keys'](db[_0xf9c8('0x66')][_0xf9c8('0x3b')]);_0x3164c5[_0xf9c8('0x3f')]=_['keys'](_0x347ed7[_0xf9c8('0x3f')]);_0x3164c5['filters']=_[_0xf9c8('0x41')](_0x3164c5['model'],_0x3164c5[_0xf9c8('0x3f')]);_0x4658d6[_0xf9c8('0x43')]=_[_0xf9c8('0x41')](_0x3164c5[_0xf9c8('0x3e')],qs[_0xf9c8('0x42')](_0x347ed7['query'][_0xf9c8('0x42')]));_0x4658d6[_0xf9c8('0x43')]=_0x4658d6[_0xf9c8('0x43')]['length']?_0x4658d6[_0xf9c8('0x43')]:_0x3164c5[_0xf9c8('0x3e')];if(!_0x347ed7[_0xf9c8('0x3f')][_0xf9c8('0x67')](_0xf9c8('0x45'))){_0x4658d6['limit']=qs[_0xf9c8('0x24')](_0x347ed7['query'][_0xf9c8('0x24')]);_0x4658d6['offset']=qs[_0xf9c8('0x26')](_0x347ed7[_0xf9c8('0x3f')][_0xf9c8('0x26')]);}_0x4658d6[_0xf9c8('0x46')]=qs['sort'](_0x347ed7[_0xf9c8('0x3f')][_0xf9c8('0x47')]);_0x4658d6['where']=qs[_0xf9c8('0x40')](_[_0xf9c8('0x49')](_0x347ed7[_0xf9c8('0x3f')],_0x3164c5['filters']));_0x4658d6[_0xf9c8('0x48')]['VoiceQueueId']=_0x479ef7['id'];if(_0x347ed7[_0xf9c8('0x3f')][_0xf9c8('0x30')]){_0x4658d6['where']=_[_0xf9c8('0x4b')](_0x4658d6[_0xf9c8('0x48')],{'$or':_[_0xf9c8('0x31')](_0x4658d6['attributes'],function(_0x59e5ed){var _0x257d3b={};_0x257d3b[_0x59e5ed]={'$like':'%'+_0x347ed7[_0xf9c8('0x3f')][_0xf9c8('0x30')]+'%'};return _0x257d3b;})});}_0x4658d6=_[_0xf9c8('0x4b')]({},_0x4658d6,_0x347ed7[_0xf9c8('0x52')]);return db[_0xf9c8('0x66')][_0xf9c8('0x25')]({'where':_0x4658d6['where']})[_0xf9c8('0x2a')](function(_0x5d365d){_0x4c2e46['count']=_0x5d365d;if(_0x347ed7[_0xf9c8('0x3f')][_0xf9c8('0x4c')]){_0x4658d6[_0xf9c8('0x4d')]=[{'all':!![]}];}return db[_0xf9c8('0x66')]['findAll'](_0x4658d6);})[_0xf9c8('0x2a')](function(_0x40a16a){_0x4c2e46[_0xf9c8('0x68')]=_0x40a16a;return _0x4c2e46;});}})[_0xf9c8('0x2a')](respondWithFilteredResult(_0x51f4d4,_0x4658d6))[_0xf9c8('0x4f')](handleError(_0x51f4d4,null));};exports[_0xf9c8('0x69')]=function(_0x2c70ae,_0x479d25,_0x5cd2da){var _0x4646fe={'raw':!![],'where':{}};var _0x38ec80={};var _0x7eb1d7={'count':0x0,'rows':[]};return db[_0xf9c8('0x3a')][_0xf9c8('0x65')]({'where':{'id':_0x2c70ae[_0xf9c8('0x63')]['id']}})[_0xf9c8('0x2a')](handleEntityNotFound(_0x479d25,null))[_0xf9c8('0x2a')](function(_0x19b5be){if(_0x19b5be){_0x38ec80[_0xf9c8('0x3e')]=_[_0xf9c8('0x51')](db[_0xf9c8('0x6a')][_0xf9c8('0x3b')]);_0x38ec80[_0xf9c8('0x3f')]=_[_0xf9c8('0x51')](_0x2c70ae[_0xf9c8('0x3f')]);_0x38ec80['filters']=_[_0xf9c8('0x41')](_0x38ec80[_0xf9c8('0x3e')],_0x38ec80[_0xf9c8('0x3f')]);_0x4646fe['attributes']=_[_0xf9c8('0x41')](_0x38ec80[_0xf9c8('0x3e')],qs[_0xf9c8('0x42')](_0x2c70ae[_0xf9c8('0x3f')][_0xf9c8('0x42')]));_0x4646fe[_0xf9c8('0x43')]=_0x4646fe[_0xf9c8('0x43')]['length']?_0x4646fe[_0xf9c8('0x43')]:_0x38ec80['model'];if(!_0x2c70ae['query'][_0xf9c8('0x67')]('nolimit')){_0x4646fe[_0xf9c8('0x24')]=qs['limit'](_0x2c70ae[_0xf9c8('0x3f')][_0xf9c8('0x24')]);_0x4646fe[_0xf9c8('0x26')]=qs[_0xf9c8('0x26')](_0x2c70ae[_0xf9c8('0x3f')][_0xf9c8('0x26')]);}_0x4646fe[_0xf9c8('0x46')]=qs[_0xf9c8('0x47')](_0x2c70ae[_0xf9c8('0x3f')]['sort']);_0x4646fe[_0xf9c8('0x48')]=qs[_0xf9c8('0x40')](_['pick'](_0x2c70ae[_0xf9c8('0x3f')],_0x38ec80[_0xf9c8('0x40')]));_0x4646fe[_0xf9c8('0x48')][_0xf9c8('0x6b')]=_0x19b5be['id'];if(_0x2c70ae[_0xf9c8('0x3f')][_0xf9c8('0x30')]){_0x4646fe[_0xf9c8('0x48')]=_[_0xf9c8('0x4b')](_0x4646fe[_0xf9c8('0x48')],{'$or':_[_0xf9c8('0x31')](_0x4646fe[_0xf9c8('0x43')],function(_0x54a569){var _0x2e7b7b={};_0x2e7b7b[_0x54a569]={'$like':'%'+_0x2c70ae[_0xf9c8('0x3f')][_0xf9c8('0x30')]+'%'};return _0x2e7b7b;})});}_0x4646fe=_[_0xf9c8('0x4b')]({},_0x4646fe,_0x2c70ae[_0xf9c8('0x52')]);return db['CmHopperHistory'][_0xf9c8('0x25')]({'where':_0x4646fe[_0xf9c8('0x48')]})['then'](function(_0x352aca){_0x7eb1d7[_0xf9c8('0x25')]=_0x352aca;if(_0x2c70ae[_0xf9c8('0x3f')][_0xf9c8('0x4c')]){_0x4646fe[_0xf9c8('0x4d')]=[{'all':!![]}];}return db[_0xf9c8('0x6a')][_0xf9c8('0x4e')](_0x4646fe);})['then'](function(_0x5c7930){_0x7eb1d7['rows']=_0x5c7930;return _0x7eb1d7;});}})[_0xf9c8('0x2a')](respondWithFilteredResult(_0x479d25,_0x4646fe))[_0xf9c8('0x4f')](handleError(_0x479d25,null));};exports[_0xf9c8('0x6c')]=function(_0xe26b8,_0x3b87c0,_0x139e86){var _0x484388={'raw':!![],'where':{}};var _0x2bdeca={};var _0x3c3500={'count':0x0,'rows':[]};return db['VoiceQueue'][_0xf9c8('0x65')]({'where':{'id':_0xe26b8[_0xf9c8('0x63')]['id']}})[_0xf9c8('0x2a')](handleEntityNotFound(_0x3b87c0,null))[_0xf9c8('0x2a')](function(_0x3bf3da){if(_0x3bf3da){_0x2bdeca['model']=_['keys'](db[_0xf9c8('0x6d')]['rawAttributes']);_0x2bdeca[_0xf9c8('0x3f')]=_[_0xf9c8('0x51')](_0xe26b8['query']);_0x2bdeca[_0xf9c8('0x40')]=_[_0xf9c8('0x41')](_0x2bdeca['model'],_0x2bdeca['query']);_0x484388[_0xf9c8('0x43')]=_[_0xf9c8('0x41')](_0x2bdeca[_0xf9c8('0x3e')],qs[_0xf9c8('0x42')](_0xe26b8['query'][_0xf9c8('0x42')]));_0x484388[_0xf9c8('0x43')]=_0x484388['attributes'][_0xf9c8('0x44')]?_0x484388[_0xf9c8('0x43')]:_0x2bdeca[_0xf9c8('0x3e')];if(!_0xe26b8['query'][_0xf9c8('0x67')]('nolimit')){_0x484388[_0xf9c8('0x24')]=qs['limit'](_0xe26b8[_0xf9c8('0x3f')][_0xf9c8('0x24')]);_0x484388[_0xf9c8('0x26')]=qs[_0xf9c8('0x26')](_0xe26b8[_0xf9c8('0x3f')][_0xf9c8('0x26')]);}_0x484388[_0xf9c8('0x46')]=qs[_0xf9c8('0x47')](_0xe26b8[_0xf9c8('0x3f')]['sort']);_0x484388[_0xf9c8('0x48')]=qs[_0xf9c8('0x40')](_[_0xf9c8('0x49')](_0xe26b8[_0xf9c8('0x3f')],_0x2bdeca[_0xf9c8('0x40')]));_0x484388['where'][_0xf9c8('0x6b')]=_0x3bf3da['id'];if(_0xe26b8[_0xf9c8('0x3f')][_0xf9c8('0x30')]){_0x484388['where']=_[_0xf9c8('0x4b')](_0x484388['where'],{'$or':_['map'](_0x484388['attributes'],function(_0x8e02dc){var _0x475b2d={};_0x475b2d[_0x8e02dc]={'$like':'%'+_0xe26b8['query']['filter']+'%'};return _0x475b2d;})});}_0x484388=_[_0xf9c8('0x4b')]({},_0x484388,_0xe26b8[_0xf9c8('0x52')]);return db[_0xf9c8('0x6d')]['count']({'where':_0x484388[_0xf9c8('0x48')]})[_0xf9c8('0x2a')](function(_0x30f7c8){_0x3c3500[_0xf9c8('0x25')]=_0x30f7c8;if(_0xe26b8[_0xf9c8('0x3f')][_0xf9c8('0x4c')]){_0x484388[_0xf9c8('0x4d')]=[{'all':!![]}];}return db[_0xf9c8('0x6d')][_0xf9c8('0x4e')](_0x484388);})['then'](function(_0x33b8cf){_0x3c3500[_0xf9c8('0x68')]=_0x33b8cf;return _0x3c3500;});}})[_0xf9c8('0x2a')](respondWithFilteredResult(_0x3b87c0,_0x484388))[_0xf9c8('0x4f')](handleError(_0x3b87c0,null));};exports['getHopperBlacks']=function(_0x53fda6,_0x1105f7,_0x322103){var _0x424806={'raw':!![],'where':{}};var _0x5e4f86={};var _0x15f630={'count':0x0,'rows':[]};return db[_0xf9c8('0x3a')][_0xf9c8('0x65')]({'where':{'id':_0x53fda6[_0xf9c8('0x63')]['id']}})[_0xf9c8('0x2a')](handleEntityNotFound(_0x1105f7,null))['then'](function(_0x4a284e){if(_0x4a284e){_0x5e4f86['model']=_[_0xf9c8('0x51')](db[_0xf9c8('0x6e')]['rawAttributes']);_0x5e4f86[_0xf9c8('0x3f')]=_[_0xf9c8('0x51')](_0x53fda6['query']);_0x5e4f86[_0xf9c8('0x40')]=_[_0xf9c8('0x41')](_0x5e4f86['model'],_0x5e4f86['query']);_0x424806[_0xf9c8('0x43')]=_[_0xf9c8('0x41')](_0x5e4f86[_0xf9c8('0x3e')],qs[_0xf9c8('0x42')](_0x53fda6['query'][_0xf9c8('0x42')]));_0x424806[_0xf9c8('0x43')]=_0x424806['attributes'][_0xf9c8('0x44')]?_0x424806[_0xf9c8('0x43')]:_0x5e4f86[_0xf9c8('0x3e')];if(!_0x53fda6[_0xf9c8('0x3f')][_0xf9c8('0x67')](_0xf9c8('0x45'))){_0x424806[_0xf9c8('0x24')]=qs[_0xf9c8('0x24')](_0x53fda6['query'][_0xf9c8('0x24')]);_0x424806[_0xf9c8('0x26')]=qs[_0xf9c8('0x26')](_0x53fda6['query'][_0xf9c8('0x26')]);}_0x424806[_0xf9c8('0x46')]=qs[_0xf9c8('0x47')](_0x53fda6[_0xf9c8('0x3f')][_0xf9c8('0x47')]);_0x424806[_0xf9c8('0x48')]=qs[_0xf9c8('0x40')](_['pick'](_0x53fda6[_0xf9c8('0x3f')],_0x5e4f86[_0xf9c8('0x40')]));_0x424806[_0xf9c8('0x48')][_0xf9c8('0x6b')]=_0x4a284e['id'];if(_0x53fda6[_0xf9c8('0x3f')][_0xf9c8('0x30')]){_0x424806[_0xf9c8('0x48')]=_['merge'](_0x424806[_0xf9c8('0x48')],{'$or':_[_0xf9c8('0x31')](_0x424806[_0xf9c8('0x43')],function(_0x4f9e45){var _0x4009a5={};_0x4009a5[_0x4f9e45]={'$like':'%'+_0x53fda6[_0xf9c8('0x3f')][_0xf9c8('0x30')]+'%'};return _0x4009a5;})});}_0x424806=_[_0xf9c8('0x4b')]({},_0x424806,_0x53fda6['options']);return db[_0xf9c8('0x6e')][_0xf9c8('0x25')]({'where':_0x424806['where']})[_0xf9c8('0x2a')](function(_0xd82d34){_0x15f630[_0xf9c8('0x25')]=_0xd82d34;if(_0x53fda6['query'][_0xf9c8('0x4c')]){_0x424806[_0xf9c8('0x4d')]=[{'all':!![]}];}return db[_0xf9c8('0x6e')][_0xf9c8('0x4e')](_0x424806);})[_0xf9c8('0x2a')](function(_0x389447){_0x15f630[_0xf9c8('0x68')]=_0x389447;return _0x15f630;});}})[_0xf9c8('0x2a')](respondWithFilteredResult(_0x1105f7,_0x424806))[_0xf9c8('0x4f')](handleError(_0x1105f7,null));};exports['getTeams']=function(_0x544971,_0x4fc2cc,_0x4a1679){var _0x1e3488={};var _0x34f597={};var _0x51b7a3;var _0x2f680a;return db[_0xf9c8('0x3a')][_0xf9c8('0x65')]({'where':{'id':_0x544971['params']['id']}})[_0xf9c8('0x2a')](handleEntityNotFound(_0x4fc2cc,null))[_0xf9c8('0x2a')](function(_0x249d4c){if(_0x249d4c){_0x51b7a3=_0x249d4c;_0x34f597['model']=_[_0xf9c8('0x51')](db['Team']['rawAttributes']);_0x34f597[_0xf9c8('0x3f')]=_['keys'](_0x544971[_0xf9c8('0x3f')]);_0x34f597[_0xf9c8('0x40')]=_[_0xf9c8('0x41')](_0x34f597['model'],_0x34f597[_0xf9c8('0x3f')]);_0x1e3488[_0xf9c8('0x43')]=_['intersection'](_0x34f597['model'],qs[_0xf9c8('0x42')](_0x544971[_0xf9c8('0x3f')][_0xf9c8('0x42')]));_0x1e3488['attributes']=_0x1e3488[_0xf9c8('0x43')][_0xf9c8('0x44')]?_0x1e3488[_0xf9c8('0x43')]:_0x34f597[_0xf9c8('0x3e')];_0x1e3488[_0xf9c8('0x46')]=qs[_0xf9c8('0x47')](_0x544971[_0xf9c8('0x3f')][_0xf9c8('0x47')]);_0x1e3488[_0xf9c8('0x48')]=qs[_0xf9c8('0x40')](_[_0xf9c8('0x49')](_0x544971[_0xf9c8('0x3f')],_0x34f597[_0xf9c8('0x40')]));if(_0x544971[_0xf9c8('0x3f')][_0xf9c8('0x30')]){_0x1e3488[_0xf9c8('0x48')]=_[_0xf9c8('0x4b')](_0x1e3488[_0xf9c8('0x48')],{'$or':_[_0xf9c8('0x31')](_0x1e3488[_0xf9c8('0x43')],function(_0xe46c25){var _0x5e0d5a={};_0x5e0d5a[_0xe46c25]={'$like':'%'+_0x544971[_0xf9c8('0x3f')]['filter']+'%'};return _0x5e0d5a;})});}_0x1e3488=_[_0xf9c8('0x4b')]({},_0x1e3488,_0x544971[_0xf9c8('0x52')]);return _0x51b7a3[_0xf9c8('0x6f')](_0x1e3488);}})[_0xf9c8('0x2a')](function(_0x15e75a){if(_0x15e75a){_0x2f680a=_0x15e75a['length'];if(!_0x544971['query'][_0xf9c8('0x67')]('nolimit')){_0x1e3488[_0xf9c8('0x24')]=qs['limit'](_0x544971[_0xf9c8('0x3f')][_0xf9c8('0x24')]);_0x1e3488[_0xf9c8('0x26')]=qs[_0xf9c8('0x26')](_0x544971[_0xf9c8('0x3f')]['offset']);}return _0x51b7a3['getTeams'](_0x1e3488);}})[_0xf9c8('0x2a')](function(_0x3f7dfc){if(_0x3f7dfc){return _0x3f7dfc?{'count':_0x2f680a,'rows':_0x3f7dfc}:null;}})['then'](respondWithResult(_0x4fc2cc,null))[_0xf9c8('0x4f')](handleError(_0x4fc2cc,null));};exports[_0xf9c8('0x70')]=function(_0xe81cf1,_0x269622,_0x27176f){var _0x49aaa6=_0xe81cf1[_0xf9c8('0x60')]['teams'];var _0x575a15=_[_0xf9c8('0x31')](_0x49aaa6,'id');return db[_0xf9c8('0x71')][_0xf9c8('0x4e')]({'where':{'id':_0x575a15},'attributes':['id'],'include':[{'model':db[_0xf9c8('0x72')],'as':'Agents','attributes':['id',_0xf9c8('0x35'),_0xf9c8('0x73'),_0xf9c8('0x74'),'interface'],'raw':!![]}]})[_0xf9c8('0x2a')](function(_0x43e1e7){if(_0x43e1e7){var _0x13a60a=_[_0xf9c8('0x75')](_0x43e1e7,function(_0x4f8d92){var _0x7b6a8e=_0x4f8d92[_0xf9c8('0x2c')]({'plain':!![]});_0x7b6a8e[_0xf9c8('0x76')][_0xf9c8('0x77')](function(_0x905c0b){_0x905c0b[_0xf9c8('0x78')]=_[_0xf9c8('0x53')](_0x49aaa6,{'id':_0x7b6a8e['id']})['penalty'];});return _0x7b6a8e[_0xf9c8('0x76')];});return db[_0xf9c8('0x3a')]['find']({'where':{'id':_0xe81cf1['params']['id']}})[_0xf9c8('0x2a')](function(_0x12f4d5){return db[_0xf9c8('0x79')][_0xf9c8('0x7a')](function(_0x34da77){return _0x12f4d5[_0xf9c8('0x70')](_0x575a15,{'transaction':_0x34da77})['then'](function(){return BPromise[_0xf9c8('0x7b')](_0x49aaa6,function(_0x343bf7){return db['TeamVoiceQueue'][_0xf9c8('0x7c')]({'TeamId':_0x343bf7['id'],'VoiceQueueId':_0xe81cf1[_0xf9c8('0x63')]['id'],'penalty':_0x343bf7[_0xf9c8('0x78')]},{'transaction':_0x34da77});});})[_0xf9c8('0x2a')](function(){return BPromise[_0xf9c8('0x7b')](_0x13a60a,function(_0x3a0297){return db[_0xf9c8('0x7d')][_0xf9c8('0x7e')]({'where':{'UserId':_0x3a0297['id'],'VoiceQueueId':_0xe81cf1['params']['id']},'defaults':{'penalty':_0x3a0297[_0xf9c8('0x78')]},'transaction':_0x34da77});});})[_0xf9c8('0x2a')](function(){return BPromise[_0xf9c8('0x7b')](_[_0xf9c8('0x30')](_0x13a60a,{'online':!![]}),function(_0x48754c){return db[_0xf9c8('0x7f')][_0xf9c8('0x7c')]({'membername':_0x48754c[_0xf9c8('0x35')],'UserId':_0x48754c['id'],'queue_name':_0x12f4d5['name'],'VoiceQueueId':_0x12f4d5['id'],'interface':_['isNil'](_0x48754c[_0xf9c8('0x80')])?util['format'](_0xf9c8('0x81'),_0x48754c[_0xf9c8('0x35')]):_0x48754c['interface'],'paused':_0x48754c[_0xf9c8('0x74')]||![],'penalty':_0x48754c[_0xf9c8('0x78')]},{'transaction':_0x34da77});});})['then'](function(){_0x13a60a['forEach'](function(_0x4d8ffb){socket[_0xf9c8('0x82')](_0xf9c8('0x83'),{'UserId':_0x4d8ffb['id'],'VoiceQueueId':_0x12f4d5['id']});});});});});}})[_0xf9c8('0x2a')](respondWithStatusCode(_0x269622,null))[_0xf9c8('0x4f')](handleError(_0x269622,null));};exports['removeTeams']=function(_0x296216,_0x5a2237,_0x2d653e){return db[_0xf9c8('0x71')]['findAll']({'where':{'id':_0x296216[_0xf9c8('0x3f')][_0xf9c8('0x84')]},'attributes':['id'],'include':[{'model':db[_0xf9c8('0x72')],'as':_0xf9c8('0x76'),'attributes':['id'],'raw':!![]}]})[_0xf9c8('0x2a')](handleEntityNotFound(_0x5a2237,null))[_0xf9c8('0x2a')](function(_0x1a554b){var _0x119ca5=_[_0xf9c8('0x31')](_0x1a554b,'id');var _0x42d439=[];var _0x5a51ab=[];var _0x32c8eb=squel[_0xf9c8('0x85')]();_0x32c8eb[_0xf9c8('0x86')]('tq.TeamId')[_0xf9c8('0x87')](_0xf9c8('0x88'),'tq')[_0xf9c8('0x89')](_0xf9c8('0x8a'),'ut','ut.TeamId\x20=\x20tq.TeamId')['where'](_0xf9c8('0x8b'),_0x296216[_0xf9c8('0x63')]['id']);for(var _0x11421e=0x0;_0x11421e<_0x1a554b[_0xf9c8('0x44')];_0x11421e+=0x1){let _0x3292dc=_0x1a554b[_0x11421e];for(var _0x294d12=0x0;_0x294d12<_0x3292dc['Agents']['length'];_0x294d12+=0x1){let _0x55976b=_0x3292dc[_0xf9c8('0x76')][_0x294d12];var _0x4c36ee=_0x32c8eb[_0xf9c8('0x5d')]();_0x4c36ee[_0xf9c8('0x48')](_0xf9c8('0x8c'),_0x55976b['id']);_0x5a51ab[_0xf9c8('0x8d')](db['sequelize'][_0xf9c8('0x3f')](_0x4c36ee[_0xf9c8('0x8e')](),{'type':db[_0xf9c8('0x79')][_0xf9c8('0x8f')]['SELECT']})['then'](function(_0x37b467){if(_0x37b467[_0xf9c8('0x44')]===0x1){return _0x55976b['id'];}else{var _0x2acfd9=_[_0xf9c8('0x90')](_['map'](_0x37b467,'TeamId'),function(_0x2fbd5b){return _['includes'](_0x119ca5,_0x2fbd5b);});if(_0x2acfd9){return _0x55976b['id'];}}}));}}return BPromise[_0xf9c8('0x91')](_0x5a51ab)['then'](function(_0x5c2ea6){_0x42d439=_(_0x42d439)[_0xf9c8('0x92')](_0x5c2ea6)[_0xf9c8('0x93')]()[_0xf9c8('0x32')]();return db[_0xf9c8('0x3a')][_0xf9c8('0x53')]({'where':{'id':_0x296216[_0xf9c8('0x63')]['id']}})[_0xf9c8('0x2a')](function(_0x570f34){return db[_0xf9c8('0x79')][_0xf9c8('0x7a')](function(_0x3f8814){return _0x570f34['removeTeams'](_0x296216[_0xf9c8('0x3f')][_0xf9c8('0x84')],{'transaction':_0x3f8814})['then'](function(){if(!_[_0xf9c8('0x94')](_0x42d439)){return _0x570f34[_0xf9c8('0x95')](_0x42d439,{'transaction':_0x3f8814})[_0xf9c8('0x2a')](function(){return db[_0xf9c8('0x7f')][_0xf9c8('0x2b')]({'where':{'VoiceQueueId':_0x296216[_0xf9c8('0x63')]['id'],'UserId':_0x42d439},'transaction':_0x3f8814});});}})[_0xf9c8('0x2a')](function(){_0x42d439['forEach'](function(_0x351b90){socket[_0xf9c8('0x82')](_0xf9c8('0x96'),{'UserId':_0x351b90,'VoiceQueueId':_0x570f34['id']});});});});});});})[_0xf9c8('0x2a')](respondWithStatusCode(_0x5a2237,null))[_0xf9c8('0x4f')](handleError(_0x5a2237,null));};exports[_0xf9c8('0x97')]=function(_0x198e32,_0x55b564,_0x4d4c1e){var _0xb076b9,_0x3e049c;return db[_0xf9c8('0x3a')][_0xf9c8('0x53')]({'where':{'id':_0x198e32[_0xf9c8('0x63')]['id']}})['then'](handleEntityNotFound(_0x55b564,null))[_0xf9c8('0x2a')](function(_0x29eb73){if(_0x29eb73){_0x3e049c=_0x29eb73;return _0x29eb73[_0xf9c8('0x97')](_0x198e32['body'][_0xf9c8('0x84')],_[_0xf9c8('0x5e')](_0x198e32[_0xf9c8('0x60')],[_0xf9c8('0x84'),'id'])||{})['spread'](function(_0x33230a){for(var _0x4059a9=0x0;_0x4059a9<_0x198e32[_0xf9c8('0x60')][_0xf9c8('0x84')]['length'];_0x4059a9+=0x1){socket[_0xf9c8('0x82')](_0xf9c8('0x83'),{'UserId':Number(_0x198e32[_0xf9c8('0x60')]['ids'][_0x4059a9]),'VoiceQueueId':Number(_0x198e32[_0xf9c8('0x63')]['id'])});}return _0x33230a;});}})[_0xf9c8('0x2a')](function(_0x35580a){_0xb076b9=_0x35580a||[];if(_0x3e049c){return db[_0xf9c8('0x72')][_0xf9c8('0x4e')]({'where':{'id':_0x198e32[_0xf9c8('0x60')]['ids']},'attributes':['id',_0xf9c8('0x35'),_0xf9c8('0x73'),_0xf9c8('0x74'),_0xf9c8('0x80')],'raw':!![]});}})[_0xf9c8('0x2a')](function(_0x4bd026){if(!_[_0xf9c8('0x94')](_0x4bd026)){var _0x48ca60=[];for(var _0x556038=0x0;_0x556038<_0x4bd026[_0xf9c8('0x44')];_0x556038++){if(_0x4bd026[_0x556038]['online']){_0x48ca60[_0xf9c8('0x8d')](db[_0xf9c8('0x7f')][_0xf9c8('0x7c')]({'membername':_0x4bd026[_0x556038][_0xf9c8('0x35')],'UserId':_0x4bd026[_0x556038]['id'],'queue_name':_0x3e049c[_0xf9c8('0x35')],'VoiceQueueId':_0x3e049c['id'],'interface':_[_0xf9c8('0x98')](_0x4bd026[_0x556038][_0xf9c8('0x80')])?util['format'](_0xf9c8('0x81'),_0x4bd026[_0x556038][_0xf9c8('0x35')]):_0x4bd026[_0x556038]['interface'],'paused':_0x4bd026[_0x556038][_0xf9c8('0x74')]||![],'penalty':_0x198e32['body']['penalty']||0x0}));}}return BPromise[_0xf9c8('0x91')](_0x48ca60);}})['then'](function(){return _0xb076b9;})[_0xf9c8('0x2a')](respondWithResult(_0x55b564,null))['catch'](handleError(_0x55b564,null));};exports[_0xf9c8('0x95')]=function(_0x3d81b1,_0x3ac129,_0x3d7419){return db['VoiceQueue'][_0xf9c8('0x53')]({'where':{'id':_0x3d81b1[_0xf9c8('0x63')]['id']}})[_0xf9c8('0x2a')](handleEntityNotFound(_0x3ac129,null))[_0xf9c8('0x2a')](function(_0x21f3a0){if(_0x21f3a0){return _0x21f3a0[_0xf9c8('0x95')](_0x3d81b1[_0xf9c8('0x3f')]['ids'])[_0xf9c8('0x2a')](function(){if(_[_0xf9c8('0x99')](_0x3d81b1[_0xf9c8('0x3f')]['ids'])){for(var _0x3702f5=0x0;_0x3702f5<_0x3d81b1[_0xf9c8('0x3f')][_0xf9c8('0x84')][_0xf9c8('0x44')];_0x3702f5+=0x1){socket[_0xf9c8('0x82')](_0xf9c8('0x96'),{'UserId':Number(_0x3d81b1['query'][_0xf9c8('0x84')][_0x3702f5]),'VoiceQueueId':Number(_0x3d81b1[_0xf9c8('0x63')]['id'])});}}else{socket['emit']('userVoiceQueue:remove',{'UserId':Number(_0x3d81b1['query'][_0xf9c8('0x84')]),'VoiceQueueId':Number(_0x3d81b1[_0xf9c8('0x63')]['id'])});}});}})[_0xf9c8('0x2a')](function(_0x167200){return db['UserVoiceQueueRt'][_0xf9c8('0x2b')]({'where':{'VoiceQueueId':_0x3d81b1[_0xf9c8('0x63')]['id'],'UserId':_0x3d81b1['query']['ids']}})[_0xf9c8('0x2a')](function(){return _0x167200;});})[_0xf9c8('0x2a')](respondWithStatusCode(_0x3ac129,null))['catch'](handleError(_0x3ac129,null));};exports['getAgents']=function(_0x5dc660,_0x5c03ef,_0x1b8544){var _0x5b63c3={};var _0x5873e8={};var _0x5f0c09;var _0x3f81a5;return db['VoiceQueue']['findOne']({'where':{'id':_0x5dc660[_0xf9c8('0x63')]['id']}})[_0xf9c8('0x2a')](handleEntityNotFound(_0x5c03ef,null))[_0xf9c8('0x2a')](function(_0x275c8f){if(_0x275c8f){_0x5f0c09=_0x275c8f;_0x5873e8[_0xf9c8('0x3e')]=_[_0xf9c8('0x51')](db[_0xf9c8('0x72')][_0xf9c8('0x3b')]);_0x5873e8[_0xf9c8('0x3f')]=_[_0xf9c8('0x51')](_0x5dc660[_0xf9c8('0x3f')]);_0x5873e8[_0xf9c8('0x40')]=_['intersection'](_0x5873e8[_0xf9c8('0x3e')],_0x5873e8[_0xf9c8('0x3f')]);_0x5b63c3['attributes']=_[_0xf9c8('0x41')](_0x5873e8[_0xf9c8('0x3e')],qs[_0xf9c8('0x42')](_0x5dc660[_0xf9c8('0x3f')]['fields']));_0x5b63c3[_0xf9c8('0x43')]=_0x5b63c3[_0xf9c8('0x43')][_0xf9c8('0x44')]?_0x5b63c3['attributes']:_0x5873e8[_0xf9c8('0x3e')];_0x5b63c3[_0xf9c8('0x46')]=qs['sort'](_0x5dc660[_0xf9c8('0x3f')][_0xf9c8('0x47')]);_0x5b63c3[_0xf9c8('0x48')]=qs[_0xf9c8('0x40')](_[_0xf9c8('0x49')](_0x5dc660['query'],_0x5873e8['filters']));if(_0x5dc660[_0xf9c8('0x3f')][_0xf9c8('0x30')]){_0x5b63c3[_0xf9c8('0x48')]=_[_0xf9c8('0x4b')](_0x5b63c3[_0xf9c8('0x48')],{'$or':_[_0xf9c8('0x31')](_0x5b63c3['attributes'],function(_0x3e0a9a){var _0x170a1d={};_0x170a1d[_0x3e0a9a]={'$like':'%'+_0x5dc660[_0xf9c8('0x3f')][_0xf9c8('0x30')]+'%'};return _0x170a1d;})});}_0x5b63c3=_['merge']({},_0x5b63c3,_0x5dc660[_0xf9c8('0x52')]);return _0x5f0c09[_0xf9c8('0x9a')](_0x5b63c3);}})[_0xf9c8('0x2a')](function(_0x3b9ff1){if(_0x3b9ff1){_0x3f81a5=_0x3b9ff1[_0xf9c8('0x44')];if(!_0x5dc660['query']['hasOwnProperty'](_0xf9c8('0x45'))){_0x5b63c3[_0xf9c8('0x24')]=qs[_0xf9c8('0x24')](_0x5dc660[_0xf9c8('0x3f')][_0xf9c8('0x24')]);_0x5b63c3[_0xf9c8('0x26')]=qs[_0xf9c8('0x26')](_0x5dc660[_0xf9c8('0x3f')][_0xf9c8('0x26')]);}return _0x5f0c09['getAgents'](_0x5b63c3);}})['then'](function(_0x2e4c98){if(_0x2e4c98){return _0x2e4c98?{'count':_0x3f81a5,'rows':_0x2e4c98}:null;}})['then'](respondWithResult(_0x5c03ef,null))[_0xf9c8('0x4f')](handleError(_0x5c03ef,null));};exports[_0xf9c8('0x9b')]=function(_0x58909e,_0x1f09f9,_0x2fef08){var _0x2c26cb={};var _0x27a62f={};var _0x469ec5;var _0x3d0a00;return db['VoiceQueue'][_0xf9c8('0x65')]({'where':{'id':_0x58909e[_0xf9c8('0x63')]['id']}})['then'](handleEntityNotFound(_0x1f09f9,null))['then'](function(_0x5d710f){if(_0x5d710f){_0x469ec5=_0x5d710f;_0x27a62f[_0xf9c8('0x3e')]=_[_0xf9c8('0x51')](db[_0xf9c8('0x7f')][_0xf9c8('0x3b')]);_0x27a62f[_0xf9c8('0x3f')]=_[_0xf9c8('0x51')](_0x58909e[_0xf9c8('0x3f')]);_0x27a62f['filters']=_[_0xf9c8('0x41')](_0x27a62f['model'],_0x27a62f['query']);_0x2c26cb[_0xf9c8('0x43')]=_['intersection'](_0x27a62f[_0xf9c8('0x3e')],qs['fields'](_0x58909e[_0xf9c8('0x3f')][_0xf9c8('0x42')]));_0x2c26cb[_0xf9c8('0x43')]=_0x2c26cb[_0xf9c8('0x43')][_0xf9c8('0x44')]?_0x2c26cb[_0xf9c8('0x43')]:_0x27a62f['model'];_0x2c26cb[_0xf9c8('0x46')]=qs[_0xf9c8('0x47')](_0x58909e['query'][_0xf9c8('0x47')]);_0x2c26cb[_0xf9c8('0x48')]=qs['filters'](_[_0xf9c8('0x49')](_0x58909e[_0xf9c8('0x3f')],_0x27a62f['filters']));if(_0x58909e[_0xf9c8('0x3f')]['filter']){_0x2c26cb[_0xf9c8('0x48')]=_[_0xf9c8('0x4b')](_0x2c26cb['where'],{'$or':_[_0xf9c8('0x31')](_0x2c26cb[_0xf9c8('0x43')],function(_0xcfb7ca){var _0x4b57fe={};_0x4b57fe[_0xcfb7ca]={'$like':'%'+_0x58909e['query'][_0xf9c8('0x30')]+'%'};return _0x4b57fe;})});}_0x2c26cb=_['merge']({},_0x2c26cb,_0x58909e['options']);return _0x469ec5[_0xf9c8('0x9b')](_0x2c26cb);}})[_0xf9c8('0x2a')](function(_0x9f77c8){if(_0x9f77c8){_0x3d0a00=_0x9f77c8[_0xf9c8('0x44')];if(!_0x58909e['query'][_0xf9c8('0x67')](_0xf9c8('0x45'))){_0x2c26cb[_0xf9c8('0x24')]=qs[_0xf9c8('0x24')](_0x58909e['query']['limit']);_0x2c26cb['offset']=qs[_0xf9c8('0x26')](_0x58909e[_0xf9c8('0x3f')]['offset']);}return _0x469ec5[_0xf9c8('0x9b')](_0x2c26cb);}})['then'](function(_0x524446){return _0x524446?{'count':_0x3d0a00,'rows':_0x524446}:null;})[_0xf9c8('0x2a')](respondWithResult(_0x1f09f9,null))[_0xf9c8('0x4f')](handleError(_0x1f09f9,null));};exports[_0xf9c8('0x9c')]=function(_0x416d9f,_0x1c09bc,_0x51579f){var _0x2d206d={};var _0x20e7f5={};var _0x38e221;var _0x330d0f;return db[_0xf9c8('0x3a')]['findOne']({'where':{'id':_0x416d9f[_0xf9c8('0x63')]['id']}})['then'](handleEntityNotFound(_0x1c09bc,null))[_0xf9c8('0x2a')](function(_0x51cb96){if(_0x51cb96){_0x38e221=_0x51cb96;_0x20e7f5[_0xf9c8('0x3e')]=_[_0xf9c8('0x51')](db[_0xf9c8('0x9d')][_0xf9c8('0x3b')]);_0x20e7f5[_0xf9c8('0x3f')]=_[_0xf9c8('0x51')](_0x416d9f[_0xf9c8('0x3f')]);_0x20e7f5[_0xf9c8('0x40')]=_['intersection'](_0x20e7f5['model'],_0x20e7f5['query']);_0x2d206d['attributes']=_['intersection'](_0x20e7f5['model'],qs['fields'](_0x416d9f[_0xf9c8('0x3f')][_0xf9c8('0x42')]));_0x2d206d[_0xf9c8('0x43')]=_0x2d206d[_0xf9c8('0x43')][_0xf9c8('0x44')]?_0x2d206d[_0xf9c8('0x43')]:_0x20e7f5[_0xf9c8('0x3e')];_0x2d206d[_0xf9c8('0x46')]=qs[_0xf9c8('0x47')](_0x416d9f[_0xf9c8('0x3f')][_0xf9c8('0x47')]);_0x2d206d[_0xf9c8('0x48')]=qs['filters'](_[_0xf9c8('0x49')](_0x416d9f[_0xf9c8('0x3f')],_0x20e7f5['filters']));if(_0x416d9f[_0xf9c8('0x3f')][_0xf9c8('0x30')]){_0x2d206d[_0xf9c8('0x48')]=_[_0xf9c8('0x4b')](_0x2d206d[_0xf9c8('0x48')],{'$or':_['map'](_0x2d206d['attributes'],function(_0xc582cf){var _0x23f2b9={};_0x23f2b9[_0xc582cf]={'$like':'%'+_0x416d9f[_0xf9c8('0x3f')]['filter']+'%'};return _0x23f2b9;})});}_0x2d206d=_[_0xf9c8('0x4b')]({},_0x2d206d,_0x416d9f[_0xf9c8('0x52')]);return _0x38e221[_0xf9c8('0x9c')](_0x2d206d);}})[_0xf9c8('0x2a')](function(_0x4d0c86){if(_0x4d0c86){_0x330d0f=_0x4d0c86['length'];if(!_0x416d9f['query'][_0xf9c8('0x67')](_0xf9c8('0x45'))){_0x2d206d[_0xf9c8('0x24')]=qs[_0xf9c8('0x24')](_0x416d9f[_0xf9c8('0x3f')][_0xf9c8('0x24')]);_0x2d206d['offset']=qs[_0xf9c8('0x26')](_0x416d9f['query']['offset']);}return _0x38e221[_0xf9c8('0x9c')](_0x2d206d);}})[_0xf9c8('0x2a')](function(_0x1bea6a){if(_0x1bea6a){return _0x1bea6a?{'count':_0x330d0f,'rows':_0x1bea6a}:null;}})[_0xf9c8('0x2a')](respondWithResult(_0x1c09bc,null))[_0xf9c8('0x4f')](handleError(_0x1c09bc,null));};exports[_0xf9c8('0x9e')]=function(_0x4a700e,_0x183275,_0x28041e){var _0x42160b,_0x2fc0fc;return db['VoiceQueue']['find']({'where':{'id':_0x4a700e[_0xf9c8('0x63')]['id']}})['then'](handleEntityNotFound(_0x183275,null))['then'](function(_0x3f484d){if(_0x3f484d){_0x2fc0fc=_0x3f484d;return _0x3f484d[_0xf9c8('0x9e')](_0x4a700e[_0xf9c8('0x60')][_0xf9c8('0x84')],_[_0xf9c8('0x5e')](_0x4a700e[_0xf9c8('0x60')],[_0xf9c8('0x84'),'id'])||{});}return null;})[_0xf9c8('0x9f')](function(_0x28b219){var _0x5739d1;_0x42160b=_0x28b219||[];var _0x67c1fa=[];if(_0x28b219){for(var _0x5f2fd0=0x0;_0x5f2fd0<_0x28b219[_0xf9c8('0x44')];_0x5f2fd0+=0x1){var _0x1566c6=_0x28b219[_0x5f2fd0][_0xf9c8('0x2c')]({'plain':!![]});_0x2fc0fc[_0xf9c8('0xa0')]=_0x4a700e[_0xf9c8('0x60')][_0xf9c8('0xa0')]?_0x4a700e[_0xf9c8('0x60')][_0xf9c8('0xa0')]:_0x2fc0fc[_0xf9c8('0xa0')];switch(_0x2fc0fc['dialCheckDuplicateType']){case _0xf9c8('0xa1'):_0x5739d1=squel['insert']()[_0xf9c8('0xa2')](_0xf9c8('0xa3'))[_0xf9c8('0xa4')]([_0xf9c8('0xa5'),_0xf9c8('0xa6'),'ContactId',_0xf9c8('0xa7'),_0xf9c8('0x6b'),_0xf9c8('0x5f'),_0xf9c8('0x61')],squel[_0xf9c8('0x85')]()['field'](_0xf9c8('0xa5'),_0xf9c8('0xa5'))[_0xf9c8('0x86')](_0xf9c8('0xa8'),'scheduledAt')[_0xf9c8('0x86')]('id',_0xf9c8('0xa9'))[_0xf9c8('0x86')](_0x1566c6[_0xf9c8('0xaa')][_0xf9c8('0x8e')](),_0xf9c8('0xa7'))['field'](_0x4a700e['params']['id']['toString'](),'VoiceQueueId')[_0xf9c8('0x86')](_0xf9c8('0xa8'),_0xf9c8('0x5f'))[_0xf9c8('0x86')](_0xf9c8('0xa8'),_0xf9c8('0x61'))[_0xf9c8('0x87')]('cm_contacts')[_0xf9c8('0x48')](_0xf9c8('0xab'))[_0xf9c8('0x48')](_0xf9c8('0xac'),_0x1566c6['CmListId'][_0xf9c8('0x8e')]())['where'](_0xf9c8('0xad'))['where'](_0xf9c8('0xae'),squel[_0xf9c8('0x85')]()['field'](_0xf9c8('0xaf'))['from']('cm_hopper_final')[_0xf9c8('0x48')]('VoiceQueueId\x20=\x20?',_0x4a700e[_0xf9c8('0x63')]['id'][_0xf9c8('0x8e')]()))['where'](_0xf9c8('0xae'),squel[_0xf9c8('0x85')]()['field'](_0xf9c8('0xb0'))['from']('cm_hopper')[_0xf9c8('0x48')](_0xf9c8('0x8b'),_0x4a700e['params']['id'][_0xf9c8('0x8e')]())))['toString']();break;case _0xf9c8('0xb1'):_0x5739d1=squel['insert']()[_0xf9c8('0xa2')]('cm_hopper')['fromQuery']([_0xf9c8('0xa5'),'scheduledAt','ContactId',_0xf9c8('0xa7'),_0xf9c8('0x6b'),'createdAt',_0xf9c8('0x61')],squel['select']()['field']('phone',_0xf9c8('0xa5'))['field'](_0xf9c8('0xa8'),_0xf9c8('0xa6'))[_0xf9c8('0x86')]('id',_0xf9c8('0xa9'))[_0xf9c8('0x86')](_0x1566c6[_0xf9c8('0xaa')]['toString'](),_0xf9c8('0xa7'))[_0xf9c8('0x86')](_0x4a700e[_0xf9c8('0x63')]['id']['toString'](),'VoiceQueueId')[_0xf9c8('0x86')](_0xf9c8('0xa8'),_0xf9c8('0x5f'))[_0xf9c8('0x86')](_0xf9c8('0xa8'),_0xf9c8('0x61'))['from'](_0xf9c8('0xb2'))[_0xf9c8('0x48')](_0xf9c8('0xab'))['where'](_0xf9c8('0xac'),_0x1566c6['CmListId']['toString']())[_0xf9c8('0x48')](_0xf9c8('0xad'))[_0xf9c8('0x48')](_0xf9c8('0xae'),squel['select']()[_0xf9c8('0x86')](_0xf9c8('0xb0'))['from']('cm_hopper')[_0xf9c8('0x48')](_0xf9c8('0x8b'),_0x4a700e[_0xf9c8('0x63')]['id']['toString']())))[_0xf9c8('0x8e')]();break;default:_0x5739d1=squel[_0xf9c8('0xb3')]()[_0xf9c8('0xa2')](_0xf9c8('0xa3'))[_0xf9c8('0xa4')](['phone','scheduledAt','ContactId',_0xf9c8('0xa7'),_0xf9c8('0x6b'),_0xf9c8('0x5f'),_0xf9c8('0x61')],squel[_0xf9c8('0x85')]()[_0xf9c8('0x86')]('phone','phone')[_0xf9c8('0x86')](_0xf9c8('0xa8'),_0xf9c8('0xa6'))[_0xf9c8('0x86')]('id',_0xf9c8('0xa9'))[_0xf9c8('0x86')](_0x1566c6[_0xf9c8('0xaa')][_0xf9c8('0x8e')](),_0xf9c8('0xa7'))['field'](_0x4a700e[_0xf9c8('0x63')]['id'][_0xf9c8('0x8e')](),'VoiceQueueId')[_0xf9c8('0x86')](_0xf9c8('0xa8'),'createdAt')[_0xf9c8('0x86')]('NOW()',_0xf9c8('0x61'))[_0xf9c8('0x87')](_0xf9c8('0xb2'))['where'](_0xf9c8('0xab'))[_0xf9c8('0x48')](_0xf9c8('0xac'),_0x1566c6[_0xf9c8('0xaa')][_0xf9c8('0x8e')]())['where'](_0xf9c8('0xad')))[_0xf9c8('0x8e')]();}_0x67c1fa['push'](db[_0xf9c8('0x79')][_0xf9c8('0x3f')](_0x5739d1));}return BPromise[_0xf9c8('0x91')](_0x67c1fa);}})[_0xf9c8('0x2a')](function(){return _0x42160b;})[_0xf9c8('0x2a')](respondWithResult(_0x183275,null))[_0xf9c8('0x4f')](handleError(_0x183275,null));};exports['removeLists']=function(_0xf7964d,_0x1ed1a6,_0x14535a){return db[_0xf9c8('0x3a')][_0xf9c8('0x53')]({'where':{'id':_0xf7964d[_0xf9c8('0x63')]['id']}})['then'](handleEntityNotFound(_0x1ed1a6,null))[_0xf9c8('0x2a')](function(_0xeec43){if(_0xeec43){return _0xeec43[_0xf9c8('0xb4')](_0xf7964d[_0xf9c8('0x3f')][_0xf9c8('0x84')]);}})['then'](function(_0x4e6b0a){if(_0x4e6b0a){return db[_0xf9c8('0x66')][_0xf9c8('0x2b')]({'where':{'ListId':_0xf7964d[_0xf9c8('0x3f')]['ids'],'VoiceQueueId':_0xf7964d['params']['id']}})[_0xf9c8('0x2a')](function(){return _0x4e6b0a;});}})['then'](respondWithStatusCode(_0x1ed1a6,null))['catch'](handleError(_0x1ed1a6,null));};exports['getBlackLists']=function(_0x20ccba,_0x40f958,_0x1291dd){var _0x247006={};var _0x4adaf2={};var _0x5e959d;var _0x54135f;return db['VoiceQueue'][_0xf9c8('0x65')]({'where':{'id':_0x20ccba['params']['id']}})[_0xf9c8('0x2a')](handleEntityNotFound(_0x40f958,null))['then'](function(_0x2bbf0b){if(_0x2bbf0b){_0x5e959d=_0x2bbf0b;_0x4adaf2[_0xf9c8('0x3e')]=_['keys'](db[_0xf9c8('0x9d')][_0xf9c8('0x3b')]);_0x4adaf2[_0xf9c8('0x3f')]=_[_0xf9c8('0x51')](_0x20ccba['query']);_0x4adaf2[_0xf9c8('0x40')]=_[_0xf9c8('0x41')](_0x4adaf2[_0xf9c8('0x3e')],_0x4adaf2['query']);_0x247006[_0xf9c8('0x43')]=_['intersection'](_0x4adaf2[_0xf9c8('0x3e')],qs[_0xf9c8('0x42')](_0x20ccba[_0xf9c8('0x3f')][_0xf9c8('0x42')]));_0x247006[_0xf9c8('0x43')]=_0x247006[_0xf9c8('0x43')][_0xf9c8('0x44')]?_0x247006[_0xf9c8('0x43')]:_0x4adaf2[_0xf9c8('0x3e')];_0x247006[_0xf9c8('0x46')]=qs[_0xf9c8('0x47')](_0x20ccba[_0xf9c8('0x3f')][_0xf9c8('0x47')]);_0x247006['where']=qs[_0xf9c8('0x40')](_[_0xf9c8('0x49')](_0x20ccba[_0xf9c8('0x3f')],_0x4adaf2[_0xf9c8('0x40')]));if(_0x20ccba['query'][_0xf9c8('0x30')]){_0x247006[_0xf9c8('0x48')]=_[_0xf9c8('0x4b')](_0x247006[_0xf9c8('0x48')],{'$or':_[_0xf9c8('0x31')](_0x247006[_0xf9c8('0x43')],function(_0x150943){var _0x176a2f={};_0x176a2f[_0x150943]={'$like':'%'+_0x20ccba[_0xf9c8('0x3f')][_0xf9c8('0x30')]+'%'};return _0x176a2f;})});}_0x247006=_[_0xf9c8('0x4b')]({},_0x247006,_0x20ccba[_0xf9c8('0x52')]);return _0x5e959d[_0xf9c8('0xb5')](_0x247006);}})['then'](function(_0x37480b){if(_0x37480b){_0x54135f=_0x37480b[_0xf9c8('0x44')];if(!_0x20ccba[_0xf9c8('0x3f')][_0xf9c8('0x67')](_0xf9c8('0x45'))){_0x247006[_0xf9c8('0x24')]=qs[_0xf9c8('0x24')](_0x20ccba[_0xf9c8('0x3f')]['limit']);_0x247006[_0xf9c8('0x26')]=qs[_0xf9c8('0x26')](_0x20ccba[_0xf9c8('0x3f')][_0xf9c8('0x26')]);}return _0x5e959d['getBlackLists'](_0x247006);}})[_0xf9c8('0x2a')](function(_0x3169f1){if(_0x3169f1){return _0x3169f1?{'count':_0x54135f,'rows':_0x3169f1}:null;}})[_0xf9c8('0x2a')](respondWithResult(_0x40f958,null))[_0xf9c8('0x4f')](handleError(_0x40f958,null));};exports['addBlackLists']=function(_0x2f0354,_0x5696d5,_0x53ff66){var _0x3fed94,_0x233703;return db[_0xf9c8('0x3a')][_0xf9c8('0x53')]({'where':{'id':_0x2f0354['params']['id']}})[_0xf9c8('0x2a')](handleEntityNotFound(_0x5696d5,null))[_0xf9c8('0x2a')](function(_0x17461b){if(_0x17461b){_0x233703=_0x17461b;return _0x17461b[_0xf9c8('0xb6')](_0x2f0354['body'][_0xf9c8('0x84')],_[_0xf9c8('0x5e')](_0x2f0354[_0xf9c8('0x60')],[_0xf9c8('0x84'),'id'])||{});}return null;})[_0xf9c8('0x9f')](function(_0x9fe786){var _0x41a907;_0x3fed94=_0x9fe786||[];var _0x459784=[];if(_0x9fe786){for(var _0x411cf7=0x0;_0x411cf7<_0x9fe786[_0xf9c8('0x44')];_0x411cf7+=0x1){var _0x2fc716=_0x9fe786[_0x411cf7][_0xf9c8('0x2c')]({'plain':!![]});_0x41a907=squel[_0xf9c8('0xb3')]()[_0xf9c8('0xa2')](_0xf9c8('0xb7'))[_0xf9c8('0xa4')]([_0xf9c8('0xa5'),_0xf9c8('0xa9'),_0xf9c8('0xa7'),'VoiceQueueId','createdAt',_0xf9c8('0x61')],squel[_0xf9c8('0x85')]()[_0xf9c8('0x86')]('phone',_0xf9c8('0xa5'))[_0xf9c8('0x86')]('id',_0xf9c8('0xa9'))['field'](_0x2fc716['CmListId'][_0xf9c8('0x8e')](),'ListId')[_0xf9c8('0x86')](_0x2f0354[_0xf9c8('0x63')]['id']['toString'](),_0xf9c8('0x6b'))[_0xf9c8('0x86')](_0xf9c8('0xa8'),'createdAt')[_0xf9c8('0x86')]('NOW()',_0xf9c8('0x61'))[_0xf9c8('0x87')](_0xf9c8('0xb2'))[_0xf9c8('0x48')]('deletedAt\x20IS\x20NULL')[_0xf9c8('0x48')](_0xf9c8('0xac'),_0x2fc716['CmListId'][_0xf9c8('0x8e')]())[_0xf9c8('0x48')]('phone\x20IS\x20NOT\x20NULL'))[_0xf9c8('0x8e')]();_0x459784['push'](db[_0xf9c8('0x79')][_0xf9c8('0x3f')](_0x41a907));}return BPromise['all'](_0x459784);}})[_0xf9c8('0x2a')](function(){return _0x3fed94;})[_0xf9c8('0x2a')](respondWithResult(_0x5696d5,null))[_0xf9c8('0x4f')](handleError(_0x5696d5,null));};exports[_0xf9c8('0xb8')]=function(_0x1dc9d,_0x4e1f21,_0x46fb68){return db[_0xf9c8('0x3a')][_0xf9c8('0x53')]({'where':{'id':_0x1dc9d[_0xf9c8('0x63')]['id']}})[_0xf9c8('0x2a')](handleEntityNotFound(_0x4e1f21,null))[_0xf9c8('0x2a')](function(_0x54c051){if(_0x54c051){return _0x54c051['removeBlackLists'](_0x1dc9d[_0xf9c8('0x3f')]['ids']);}})[_0xf9c8('0x2a')](function(_0x2704f2){if(_0x2704f2){return db[_0xf9c8('0x6e')][_0xf9c8('0x2b')]({'where':{'ListId':_0x1dc9d['query'][_0xf9c8('0x84')],'VoiceQueueId':_0x1dc9d[_0xf9c8('0x63')]['id']}})[_0xf9c8('0x2a')](function(){return _0x2704f2;});}})[_0xf9c8('0x2a')](respondWithStatusCode(_0x4e1f21,null))['catch'](handleError(_0x4e1f21,null));};
\ No newline at end of file
+var _0xf49a=['keys','filters','intersection','fields','attributes','length','hasOwnProperty','sort','where','merge','options','includeAll','rows','show','rawAttributes','include','catch','create','body','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','find','userProfileId','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','clone','params','omit','createdAt','updatedAt','UserProfileSection','getHoppers','order','pick','CmHopper','findAll','getHopperHistories','CmHopperHistory','nolimit','VoiceQueueId','getHopperFinals','findOne','CmHopperFinal','getHopperBlacks','CmHopperBlack','getTeams','Team','addTeams','teams','Agents','voicePause','interface','flatMap','forEach','sequelize','transaction','each','upsert','penalty','UserVoiceQueue','findOrCreate','UserVoiceQueueRt','isNil','format','SIP/%s','emit','userVoiceQueue:save','ids','User','select','field','tq.TeamId','from','team_has_voice_queues','join','ut.UserId\x20=\x20?','push','QueryTypes','union','removeTeams','removeAgents','addAgents','spread','online','all','isArray','userVoiceQueue:remove','getAgents','getMembers','CmList','getLists','addLists','dialCheckDuplicateType','insert','into','fromQuery','ListId','phone','NOW()','scheduledAt','ContactId','CmListId','toString','cm_contacts','ListId\x20=\x20?','phone\x20IS\x20NOT\x20NULL','phone\x20NOT\x20IN\x20(?)','COALESCE(calleridnum,\x27\x27)','cm_hopper_final','VoiceQueueId\x20=\x20?','COALESCE(phone,\x27\x27)','cm_hopper','onlyIfOpen','deletedAt\x20IS\x20NULL','removeLists','getBlackLists','addBlackLists','cm_hopper_black','removeBlackLists','eml-format','rimraf','request-promise','moment','bluebird','util','to-csv','ejs','fs-extra','squel','jsforce','desk.js','querystring','papaparse','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','redis','defaults','socket.io-emitter','./voiceQueue.socket','register','status','offset','undefined','count','limit','set','Content-Range','json','apply','reject','save','update','then','destroy','get','VoiceQueues','inbound','QueueCampaigns','outbound','filter','ignore','map','value','includes','type','name','UserProfileResource','end','error','stack','send','index','VoiceQueue','fieldName','key','model','query'];(function(_0x34e51c,_0x1f46b0){var _0x31643c=function(_0x1db6dd){while(--_0x1db6dd){_0x34e51c['push'](_0x34e51c['shift']());}};_0x31643c(++_0x1f46b0);}(_0xf49a,0x12f));var _0xaf49=function(_0x4e18bb,_0x2b28df){_0x4e18bb=_0x4e18bb-0x0;var _0x5ebf1f=_0xf49a[_0x4e18bb];return _0x5ebf1f;};'use strict';var emlformat=require(_0xaf49('0x0'));var rimraf=require(_0xaf49('0x1'));var zipdir=require('zip-dir');var jsonpatch=require('fast-json-patch');var rp=require(_0xaf49('0x2'));var moment=require(_0xaf49('0x3'));var BPromise=require(_0xaf49('0x4'));var Mustache=require('mustache');var util=require(_0xaf49('0x5'));var path=require('path');var sox=require('sox');var csv=require(_0xaf49('0x6'));var ejs=require(_0xaf49('0x7'));var fs=require('fs');var fs_extra=require(_0xaf49('0x8'));var _=require('lodash');var squel=require(_0xaf49('0x9'));var crypto=require('crypto');var jsforce=require(_0xaf49('0xa'));var deskjs=require(_0xaf49('0xb'));var toCsv=require(_0xaf49('0x6'));var querystring=require(_0xaf49('0xc'));var Papa=require(_0xaf49('0xd'));var Redis=require(_0xaf49('0xe'));var authService=require('../../components/auth/service');var qs=require(_0xaf49('0xf'));var as=require(_0xaf49('0x10'));var hardwareService=require('../../config/license/hardware');var logger=require('../../config/logger')('api');var utils=require(_0xaf49('0x11'));var config=require(_0xaf49('0x12'));var licenseUtil=require(_0xaf49('0x13'));var db=require(_0xaf49('0x14'))['db'];config[_0xaf49('0x15')]=_[_0xaf49('0x16')](config['redis'],{'host':'localhost','port':0x18eb});var socket=require(_0xaf49('0x17'))(new Redis(config[_0xaf49('0x15')]));require(_0xaf49('0x18'))[_0xaf49('0x19')](socket);function respondWithStatusCode(_0xb76a27,_0x1d0169){_0x1d0169=_0x1d0169||0xcc;return function(_0x3a752d){if(_0x3a752d){return _0xb76a27['sendStatus'](_0x1d0169);}return _0xb76a27[_0xaf49('0x1a')](_0x1d0169)['end']();};}function respondWithResult(_0x22d0e8,_0x46054d){_0x46054d=_0x46054d||0xc8;return function(_0x5d79e6){if(_0x5d79e6){return _0x22d0e8[_0xaf49('0x1a')](_0x46054d)['json'](_0x5d79e6);}};}function respondWithFilteredResult(_0x460af1,_0x4b7946){return function(_0x31d179){if(_0x31d179){var _0x1174a1=typeof _0x4b7946[_0xaf49('0x1b')]===_0xaf49('0x1c')&&typeof _0x4b7946['limit']==='undefined';var _0x4a6862=_0x31d179['count'];var _0x227f7a=_0x1174a1?0x0:_0x4b7946[_0xaf49('0x1b')];var _0x49af61=_0x1174a1?_0x31d179[_0xaf49('0x1d')]:_0x4b7946[_0xaf49('0x1b')]+_0x4b7946[_0xaf49('0x1e')];var _0x16b71b;if(_0x49af61>=_0x4a6862){_0x49af61=_0x4a6862;_0x16b71b=0xc8;}else{_0x16b71b=0xce;}_0x460af1[_0xaf49('0x1a')](_0x16b71b);return _0x460af1[_0xaf49('0x1f')](_0xaf49('0x20'),_0x227f7a+'-'+_0x49af61+'/'+_0x4a6862)[_0xaf49('0x21')](_0x31d179);}return null;};}function patchUpdates(_0x13eb19){return function(_0x55f424){try{jsonpatch[_0xaf49('0x22')](_0x55f424,_0x13eb19,!![]);}catch(_0x229e89){return BPromise[_0xaf49('0x23')](_0x229e89);}return _0x55f424[_0xaf49('0x24')]();};}function saveUpdates(_0x12ca8d,_0x12f503){return function(_0x51a6b4){if(_0x51a6b4){return _0x51a6b4[_0xaf49('0x25')](_0x12ca8d)[_0xaf49('0x26')](function(_0x529ab4){return _0x529ab4;});}return null;};}function removeEntity(_0x37ab14,_0x43be21){return function(_0x5f436c){if(_0x5f436c){return _0x5f436c[_0xaf49('0x27')]()['then'](function(){var _0x818a65=_0x5f436c[_0xaf49('0x28')]({'plain':!![]});var _0x173edd=[{'name':_0xaf49('0x29'),'value':_0xaf49('0x2a'),'ignore':![]},{'name':_0xaf49('0x2b'),'value':_0xaf49('0x2c'),'ignore':![]}];var _0x1c0ba6=_(_0x173edd)[_0xaf49('0x2d')](_0xaf49('0x2e'))[_0xaf49('0x2f')](_0xaf49('0x30'))[_0xaf49('0x30')]();if(_[_0xaf49('0x31')](_0x1c0ba6,_0x818a65[_0xaf49('0x32')])){return;}var _0x929ba1=_['find'](_0x173edd,[_0xaf49('0x30'),_0x818a65[_0xaf49('0x32')]])[_0xaf49('0x33')];return db[_0xaf49('0x34')][_0xaf49('0x27')]({'where':{'type':_0x929ba1,'resourceId':_0x818a65['id']}})['then'](function(){return _0x5f436c;});})[_0xaf49('0x26')](function(){_0x37ab14['status'](0xcc)[_0xaf49('0x35')]();});}};}function handleEntityNotFound(_0x258701,_0x54dcc0){return function(_0x3540dc){if(!_0x3540dc){_0x258701['sendStatus'](0x194);}return _0x3540dc;};}function handleError(_0x5a637e,_0xb4b6ed){_0xb4b6ed=_0xb4b6ed||0x1f4;return function(_0x29313d){logger[_0xaf49('0x36')](_0x29313d[_0xaf49('0x37')]);if(_0x29313d['name']){delete _0x29313d['name'];}_0x5a637e[_0xaf49('0x1a')](_0xb4b6ed)[_0xaf49('0x38')](_0x29313d);};}exports[_0xaf49('0x39')]=function(_0x4e0d4d,_0x40a580){var _0x4656a3={},_0x56e878={},_0x387c82={'count':0x0,'rows':[]};var _0x2a6a72=_['map'](db[_0xaf49('0x3a')]['rawAttributes'],function(_0x383368){return{'name':_0x383368[_0xaf49('0x3b')],'type':_0x383368[_0xaf49('0x32')][_0xaf49('0x3c')]};});_0x56e878[_0xaf49('0x3d')]=_[_0xaf49('0x2f')](_0x2a6a72,_0xaf49('0x33'));_0x56e878[_0xaf49('0x3e')]=_[_0xaf49('0x3f')](_0x4e0d4d['query']);_0x56e878[_0xaf49('0x40')]=_[_0xaf49('0x41')](_0x56e878['model'],_0x56e878['query']);_0x4656a3['attributes']=_[_0xaf49('0x41')](_0x56e878['model'],qs['fields'](_0x4e0d4d['query'][_0xaf49('0x42')]));_0x4656a3[_0xaf49('0x43')]=_0x4656a3['attributes'][_0xaf49('0x44')]?_0x4656a3['attributes']:_0x56e878['model'];if(!_0x4e0d4d['query'][_0xaf49('0x45')]('nolimit')){_0x4656a3[_0xaf49('0x1e')]=qs[_0xaf49('0x1e')](_0x4e0d4d['query']['limit']);_0x4656a3[_0xaf49('0x1b')]=qs[_0xaf49('0x1b')](_0x4e0d4d['query'][_0xaf49('0x1b')]);}_0x4656a3['order']=qs[_0xaf49('0x46')](_0x4e0d4d[_0xaf49('0x3e')][_0xaf49('0x46')]);_0x4656a3['where']=qs[_0xaf49('0x40')](_['pick'](_0x4e0d4d['query'],_0x56e878[_0xaf49('0x40')]),_0x2a6a72);if(_0x4e0d4d[_0xaf49('0x3e')][_0xaf49('0x2d')]){_0x4656a3[_0xaf49('0x47')]=_[_0xaf49('0x48')](_0x4656a3[_0xaf49('0x47')],{'$or':_[_0xaf49('0x2f')](_0x2a6a72,function(_0x3e4d6c){if(_0x3e4d6c[_0xaf49('0x32')]!=='VIRTUAL'){var _0x4daca4={};_0x4daca4[_0x3e4d6c[_0xaf49('0x33')]]={'$like':'%'+_0x4e0d4d['query'][_0xaf49('0x2d')]+'%'};return _0x4daca4;}})});}_0x4656a3=_['merge']({},_0x4656a3,_0x4e0d4d[_0xaf49('0x49')]);var _0xfcd4f1={'where':_0x4656a3[_0xaf49('0x47')]};return db[_0xaf49('0x3a')][_0xaf49('0x1d')](_0xfcd4f1)[_0xaf49('0x26')](function(_0x336214){_0x387c82[_0xaf49('0x1d')]=_0x336214;if(_0x4e0d4d[_0xaf49('0x3e')][_0xaf49('0x4a')]){_0x4656a3['include']=[{'all':!![]}];}return db['VoiceQueue']['findAll'](_0x4656a3);})[_0xaf49('0x26')](function(_0x5728cb){_0x387c82[_0xaf49('0x4b')]=_0x5728cb;return _0x387c82;})[_0xaf49('0x26')](respondWithFilteredResult(_0x40a580,_0x4656a3))['catch'](handleError(_0x40a580,null));};exports[_0xaf49('0x4c')]=function(_0x3e6ba2,_0x55743d){var _0x3547f7={'raw':![],'where':{'id':_0x3e6ba2['params']['id']}},_0x20b416={};_0x20b416[_0xaf49('0x3d')]=_[_0xaf49('0x3f')](db[_0xaf49('0x3a')][_0xaf49('0x4d')]);_0x20b416[_0xaf49('0x3e')]=_['keys'](_0x3e6ba2[_0xaf49('0x3e')]);_0x20b416[_0xaf49('0x40')]=_[_0xaf49('0x41')](_0x20b416[_0xaf49('0x3d')],_0x20b416['query']);_0x3547f7[_0xaf49('0x43')]=_['intersection'](_0x20b416[_0xaf49('0x3d')],qs[_0xaf49('0x42')](_0x3e6ba2[_0xaf49('0x3e')][_0xaf49('0x42')]));_0x3547f7[_0xaf49('0x43')]=_0x3547f7[_0xaf49('0x43')][_0xaf49('0x44')]?_0x3547f7[_0xaf49('0x43')]:_0x20b416['model'];if(_0x3e6ba2['query'][_0xaf49('0x4a')]){_0x3547f7[_0xaf49('0x4e')]=[{'all':!![]}];}_0x3547f7=_['merge']({},_0x3547f7,_0x3e6ba2[_0xaf49('0x49')]);return db[_0xaf49('0x3a')]['find'](_0x3547f7)[_0xaf49('0x26')](handleEntityNotFound(_0x55743d,null))[_0xaf49('0x26')](respondWithResult(_0x55743d,null))[_0xaf49('0x4f')](handleError(_0x55743d,null));};exports[_0xaf49('0x50')]=function(_0x3b44e0,_0x4af4ec){return db[_0xaf49('0x3a')][_0xaf49('0x50')](_0x3b44e0[_0xaf49('0x51')],{})[_0xaf49('0x26')](function(_0x3f3cbe){var _0x2c4a1b=_0x3b44e0[_0xaf49('0x52')][_0xaf49('0x28')]({'plain':!![]});if(!_0x2c4a1b)throw new Error(_0xaf49('0x53'));if(_0x2c4a1b[_0xaf49('0x54')]==='user'){var _0xea216b=_0x3f3cbe[_0xaf49('0x28')]({'plain':!![]});var _0x92739c=[{'name':_0xaf49('0x29'),'value':_0xaf49('0x2a')},{'name':_0xaf49('0x2b'),'value':'outbound'}];var _0x157236=_[_0xaf49('0x55')](_0x92739c,[_0xaf49('0x30'),_0xea216b[_0xaf49('0x32')]])['name'];return db['UserProfileSection'][_0xaf49('0x55')]({'where':{'name':_0x157236,'userProfileId':_0x2c4a1b[_0xaf49('0x56')]},'raw':!![]})[_0xaf49('0x26')](function(_0x9d6bf7){if(_0x9d6bf7&&_0x9d6bf7[_0xaf49('0x57')]===0x0){return db[_0xaf49('0x34')][_0xaf49('0x50')]({'name':_0xea216b[_0xaf49('0x33')],'resourceId':_0xea216b['id'],'type':_0x9d6bf7[_0xaf49('0x33')],'sectionId':_0x9d6bf7['id']},{})['then'](function(){return _0x3f3cbe;});}else{return _0x3f3cbe;}})[_0xaf49('0x4f')](function(_0x5c5232){logger[_0xaf49('0x36')](_0xaf49('0x58'),_0x5c5232);throw _0x5c5232;});}return _0x3f3cbe;})[_0xaf49('0x26')](respondWithResult(_0x4af4ec,0xc9))['catch'](handleError(_0x4af4ec,null));};exports[_0xaf49('0x59')]=function(_0x5bd09e,_0x3ff4f6){var _0x1e813b={'where':{'id':_0x5bd09e[_0xaf49('0x5a')]['id']}},_0x42e59f={};_0x42e59f[_0xaf49('0x3d')]=_['keys'](db['VoiceQueue'][_0xaf49('0x4d')]);_0x1e813b[_0xaf49('0x43')]=_[_0xaf49('0x41')](_0x42e59f[_0xaf49('0x3d')],qs[_0xaf49('0x42')](_0x5bd09e[_0xaf49('0x3e')][_0xaf49('0x42')]));_0x1e813b[_0xaf49('0x43')]=_0x1e813b['attributes']['length']?_0x1e813b[_0xaf49('0x43')]:_0x42e59f[_0xaf49('0x3d')];if(_0x5bd09e[_0xaf49('0x3e')][_0xaf49('0x4a')]){_0x1e813b['include']=[{'all':!![]}];}_0x1e813b=_[_0xaf49('0x48')]({},_0x1e813b,_0x5bd09e[_0xaf49('0x49')]);return db[_0xaf49('0x3a')]['find'](_0x1e813b)[_0xaf49('0x26')](handleEntityNotFound(_0x3ff4f6,null))[_0xaf49('0x26')](function(_0x837d30){if(_0x837d30){var _0x3a19cb=_0x837d30[_0xaf49('0x28')]({'plain':!![]});_0x3a19cb=qs[_0xaf49('0x5b')](_0x3a19cb,['id',_0xaf49('0x5c'),_0xaf49('0x5d')]);_0x5bd09e[_0xaf49('0x51')]=_[_0xaf49('0x5b')](_0x5bd09e[_0xaf49('0x51')],['id',_0xaf49('0x5c'),_0xaf49('0x5d')]);return db['VoiceQueue'][_0xaf49('0x50')](_[_0xaf49('0x48')](_0x3a19cb,_0x5bd09e[_0xaf49('0x51')]),{'include':_0x5bd09e[_0xaf49('0x3e')][_0xaf49('0x4a')]?[{'all':!![]}]:undefined})[_0xaf49('0x26')](function(_0x329754){var _0x544e5b=_0x5bd09e[_0xaf49('0x52')][_0xaf49('0x28')]({'plain':!![]});if(!_0x544e5b)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0x544e5b['role']===_0xaf49('0x52')){var _0x2f2771=_0x329754[_0xaf49('0x28')]({'plain':!![]});var _0x5ea8c1=[{'name':'VoiceQueues','value':_0xaf49('0x2a')},{'name':'QueueCampaigns','value':_0xaf49('0x2c')}];var _0x204d84=_[_0xaf49('0x55')](_0x5ea8c1,['value',_0x2f2771['type']])[_0xaf49('0x33')];return db[_0xaf49('0x5e')][_0xaf49('0x55')]({'where':{'name':_0x204d84,'userProfileId':_0x544e5b[_0xaf49('0x56')]},'raw':!![]})['then'](function(_0x425e68){if(_0x425e68&&_0x425e68[_0xaf49('0x57')]===0x0){return db[_0xaf49('0x34')][_0xaf49('0x50')]({'name':_0x2f2771[_0xaf49('0x33')],'resourceId':_0x2f2771['id'],'type':_0x425e68[_0xaf49('0x33')],'sectionId':_0x425e68['id']},{})[_0xaf49('0x26')](function(){return _0x329754;});}else{return _0x329754;}})[_0xaf49('0x4f')](function(_0x3a4cf4){logger[_0xaf49('0x36')](_0xaf49('0x58'),_0x3a4cf4);throw _0x3a4cf4;});}return _0x329754;});}})[_0xaf49('0x26')](respondWithResult(_0x3ff4f6,0xc9))['catch'](handleError(_0x3ff4f6,null));};exports[_0xaf49('0x25')]=function(_0xba7e70,_0x4665e2){if(_0xba7e70[_0xaf49('0x51')]['id']){delete _0xba7e70['body']['id'];}return db[_0xaf49('0x3a')][_0xaf49('0x55')]({'where':{'id':_0xba7e70[_0xaf49('0x5a')]['id']}})[_0xaf49('0x26')](handleEntityNotFound(_0x4665e2,null))[_0xaf49('0x26')](saveUpdates(_0xba7e70[_0xaf49('0x51')],null))[_0xaf49('0x26')](respondWithResult(_0x4665e2,null))[_0xaf49('0x4f')](handleError(_0x4665e2,null));};exports[_0xaf49('0x27')]=function(_0xc7438c,_0x8c59f9){return db[_0xaf49('0x3a')]['find']({'where':{'id':_0xc7438c[_0xaf49('0x5a')]['id']}})[_0xaf49('0x26')](handleEntityNotFound(_0x8c59f9,null))[_0xaf49('0x26')](removeEntity(_0x8c59f9,null))[_0xaf49('0x4f')](handleError(_0x8c59f9,null));};exports[_0xaf49('0x5f')]=function(_0x31d559,_0x290fbe,_0x36b52c){var _0x2f643f={'raw':![],'where':{}};var _0xb889f9={};var _0x41751d={'count':0x0,'rows':[]};return db[_0xaf49('0x3a')]['findOne']({'where':{'id':_0x31d559[_0xaf49('0x5a')]['id']}})[_0xaf49('0x26')](handleEntityNotFound(_0x290fbe,null))[_0xaf49('0x26')](function(_0x2509ca){if(_0x2509ca){_0xb889f9[_0xaf49('0x3d')]=_[_0xaf49('0x3f')](db['CmHopper'][_0xaf49('0x4d')]);_0xb889f9[_0xaf49('0x3e')]=_['keys'](_0x31d559[_0xaf49('0x3e')]);_0xb889f9[_0xaf49('0x40')]=_[_0xaf49('0x41')](_0xb889f9['model'],_0xb889f9['query']);_0x2f643f[_0xaf49('0x43')]=_[_0xaf49('0x41')](_0xb889f9[_0xaf49('0x3d')],qs[_0xaf49('0x42')](_0x31d559[_0xaf49('0x3e')]['fields']));_0x2f643f[_0xaf49('0x43')]=_0x2f643f['attributes'][_0xaf49('0x44')]?_0x2f643f[_0xaf49('0x43')]:_0xb889f9[_0xaf49('0x3d')];if(!_0x31d559['query']['hasOwnProperty']('nolimit')){_0x2f643f[_0xaf49('0x1e')]=qs[_0xaf49('0x1e')](_0x31d559[_0xaf49('0x3e')]['limit']);_0x2f643f['offset']=qs[_0xaf49('0x1b')](_0x31d559[_0xaf49('0x3e')][_0xaf49('0x1b')]);}_0x2f643f[_0xaf49('0x60')]=qs[_0xaf49('0x46')](_0x31d559[_0xaf49('0x3e')][_0xaf49('0x46')]);_0x2f643f[_0xaf49('0x47')]=qs['filters'](_[_0xaf49('0x61')](_0x31d559[_0xaf49('0x3e')],_0xb889f9[_0xaf49('0x40')]));_0x2f643f[_0xaf49('0x47')]['VoiceQueueId']=_0x2509ca['id'];if(_0x31d559[_0xaf49('0x3e')]['filter']){_0x2f643f['where']=_['merge'](_0x2f643f[_0xaf49('0x47')],{'$or':_[_0xaf49('0x2f')](_0x2f643f['attributes'],function(_0xab2ca2){var _0x5432ed={};_0x5432ed[_0xab2ca2]={'$like':'%'+_0x31d559['query'][_0xaf49('0x2d')]+'%'};return _0x5432ed;})});}_0x2f643f=_[_0xaf49('0x48')]({},_0x2f643f,_0x31d559[_0xaf49('0x49')]);return db[_0xaf49('0x62')][_0xaf49('0x1d')]({'where':_0x2f643f[_0xaf49('0x47')]})[_0xaf49('0x26')](function(_0x3dcc67){_0x41751d[_0xaf49('0x1d')]=_0x3dcc67;if(_0x31d559[_0xaf49('0x3e')][_0xaf49('0x4a')]){_0x2f643f[_0xaf49('0x4e')]=[{'all':!![]}];}return db[_0xaf49('0x62')][_0xaf49('0x63')](_0x2f643f);})[_0xaf49('0x26')](function(_0x944da7){_0x41751d[_0xaf49('0x4b')]=_0x944da7;return _0x41751d;});}})['then'](respondWithFilteredResult(_0x290fbe,_0x2f643f))[_0xaf49('0x4f')](handleError(_0x290fbe,null));};exports[_0xaf49('0x64')]=function(_0x234c3f,_0x36f84d,_0x84bf53){var _0x37cb1f={'raw':!![],'where':{}};var _0x373d8e={};var _0x55f54e={'count':0x0,'rows':[]};return db[_0xaf49('0x3a')]['findOne']({'where':{'id':_0x234c3f[_0xaf49('0x5a')]['id']}})[_0xaf49('0x26')](handleEntityNotFound(_0x36f84d,null))[_0xaf49('0x26')](function(_0x1b265d){if(_0x1b265d){_0x373d8e[_0xaf49('0x3d')]=_[_0xaf49('0x3f')](db[_0xaf49('0x65')][_0xaf49('0x4d')]);_0x373d8e[_0xaf49('0x3e')]=_[_0xaf49('0x3f')](_0x234c3f[_0xaf49('0x3e')]);_0x373d8e[_0xaf49('0x40')]=_[_0xaf49('0x41')](_0x373d8e[_0xaf49('0x3d')],_0x373d8e[_0xaf49('0x3e')]);_0x37cb1f[_0xaf49('0x43')]=_['intersection'](_0x373d8e['model'],qs[_0xaf49('0x42')](_0x234c3f['query']['fields']));_0x37cb1f[_0xaf49('0x43')]=_0x37cb1f[_0xaf49('0x43')][_0xaf49('0x44')]?_0x37cb1f[_0xaf49('0x43')]:_0x373d8e[_0xaf49('0x3d')];if(!_0x234c3f[_0xaf49('0x3e')]['hasOwnProperty'](_0xaf49('0x66'))){_0x37cb1f[_0xaf49('0x1e')]=qs[_0xaf49('0x1e')](_0x234c3f[_0xaf49('0x3e')][_0xaf49('0x1e')]);_0x37cb1f['offset']=qs[_0xaf49('0x1b')](_0x234c3f[_0xaf49('0x3e')][_0xaf49('0x1b')]);}_0x37cb1f['order']=qs[_0xaf49('0x46')](_0x234c3f['query'][_0xaf49('0x46')]);_0x37cb1f[_0xaf49('0x47')]=qs[_0xaf49('0x40')](_[_0xaf49('0x61')](_0x234c3f[_0xaf49('0x3e')],_0x373d8e[_0xaf49('0x40')]));_0x37cb1f[_0xaf49('0x47')][_0xaf49('0x67')]=_0x1b265d['id'];if(_0x234c3f[_0xaf49('0x3e')][_0xaf49('0x2d')]){_0x37cb1f[_0xaf49('0x47')]=_[_0xaf49('0x48')](_0x37cb1f[_0xaf49('0x47')],{'$or':_[_0xaf49('0x2f')](_0x37cb1f['attributes'],function(_0x4ccb02){var _0x5c0cbb={};_0x5c0cbb[_0x4ccb02]={'$like':'%'+_0x234c3f[_0xaf49('0x3e')][_0xaf49('0x2d')]+'%'};return _0x5c0cbb;})});}_0x37cb1f=_[_0xaf49('0x48')]({},_0x37cb1f,_0x234c3f[_0xaf49('0x49')]);return db[_0xaf49('0x65')][_0xaf49('0x1d')]({'where':_0x37cb1f[_0xaf49('0x47')]})[_0xaf49('0x26')](function(_0x5147b7){_0x55f54e[_0xaf49('0x1d')]=_0x5147b7;if(_0x234c3f[_0xaf49('0x3e')]['includeAll']){_0x37cb1f[_0xaf49('0x4e')]=[{'all':!![]}];}return db[_0xaf49('0x65')][_0xaf49('0x63')](_0x37cb1f);})[_0xaf49('0x26')](function(_0x310d1f){_0x55f54e[_0xaf49('0x4b')]=_0x310d1f;return _0x55f54e;});}})[_0xaf49('0x26')](respondWithFilteredResult(_0x36f84d,_0x37cb1f))['catch'](handleError(_0x36f84d,null));};exports[_0xaf49('0x68')]=function(_0xaad4b9,_0x12b9a5,_0x3ceef3){var _0x395016={'raw':!![],'where':{}};var _0x2503f9={};var _0x13696e={'count':0x0,'rows':[]};return db['VoiceQueue'][_0xaf49('0x69')]({'where':{'id':_0xaad4b9[_0xaf49('0x5a')]['id']}})[_0xaf49('0x26')](handleEntityNotFound(_0x12b9a5,null))[_0xaf49('0x26')](function(_0x1c5e82){if(_0x1c5e82){_0x2503f9[_0xaf49('0x3d')]=_[_0xaf49('0x3f')](db['CmHopperFinal'][_0xaf49('0x4d')]);_0x2503f9[_0xaf49('0x3e')]=_[_0xaf49('0x3f')](_0xaad4b9[_0xaf49('0x3e')]);_0x2503f9[_0xaf49('0x40')]=_[_0xaf49('0x41')](_0x2503f9['model'],_0x2503f9[_0xaf49('0x3e')]);_0x395016[_0xaf49('0x43')]=_[_0xaf49('0x41')](_0x2503f9[_0xaf49('0x3d')],qs[_0xaf49('0x42')](_0xaad4b9['query']['fields']));_0x395016[_0xaf49('0x43')]=_0x395016[_0xaf49('0x43')][_0xaf49('0x44')]?_0x395016[_0xaf49('0x43')]:_0x2503f9[_0xaf49('0x3d')];if(!_0xaad4b9[_0xaf49('0x3e')]['hasOwnProperty']('nolimit')){_0x395016['limit']=qs[_0xaf49('0x1e')](_0xaad4b9[_0xaf49('0x3e')][_0xaf49('0x1e')]);_0x395016[_0xaf49('0x1b')]=qs[_0xaf49('0x1b')](_0xaad4b9[_0xaf49('0x3e')][_0xaf49('0x1b')]);}_0x395016['order']=qs[_0xaf49('0x46')](_0xaad4b9[_0xaf49('0x3e')][_0xaf49('0x46')]);_0x395016['where']=qs[_0xaf49('0x40')](_[_0xaf49('0x61')](_0xaad4b9[_0xaf49('0x3e')],_0x2503f9[_0xaf49('0x40')]));_0x395016[_0xaf49('0x47')][_0xaf49('0x67')]=_0x1c5e82['id'];if(_0xaad4b9['query'][_0xaf49('0x2d')]){_0x395016[_0xaf49('0x47')]=_[_0xaf49('0x48')](_0x395016[_0xaf49('0x47')],{'$or':_[_0xaf49('0x2f')](_0x395016['attributes'],function(_0x15fba2){var _0x4057bc={};_0x4057bc[_0x15fba2]={'$like':'%'+_0xaad4b9['query'][_0xaf49('0x2d')]+'%'};return _0x4057bc;})});}_0x395016=_[_0xaf49('0x48')]({},_0x395016,_0xaad4b9[_0xaf49('0x49')]);return db[_0xaf49('0x6a')][_0xaf49('0x1d')]({'where':_0x395016[_0xaf49('0x47')]})['then'](function(_0x5c821b){_0x13696e['count']=_0x5c821b;if(_0xaad4b9[_0xaf49('0x3e')][_0xaf49('0x4a')]){_0x395016['include']=[{'all':!![]}];}return db[_0xaf49('0x6a')]['findAll'](_0x395016);})['then'](function(_0x4985d5){_0x13696e[_0xaf49('0x4b')]=_0x4985d5;return _0x13696e;});}})[_0xaf49('0x26')](respondWithFilteredResult(_0x12b9a5,_0x395016))['catch'](handleError(_0x12b9a5,null));};exports[_0xaf49('0x6b')]=function(_0x2df1f0,_0x2902e8,_0x12b9a6){var _0x220eb3={'raw':!![],'where':{}};var _0x3bd643={};var _0x4fdfa3={'count':0x0,'rows':[]};return db[_0xaf49('0x3a')][_0xaf49('0x69')]({'where':{'id':_0x2df1f0[_0xaf49('0x5a')]['id']}})[_0xaf49('0x26')](handleEntityNotFound(_0x2902e8,null))['then'](function(_0x43960a){if(_0x43960a){_0x3bd643[_0xaf49('0x3d')]=_[_0xaf49('0x3f')](db[_0xaf49('0x6c')][_0xaf49('0x4d')]);_0x3bd643[_0xaf49('0x3e')]=_[_0xaf49('0x3f')](_0x2df1f0[_0xaf49('0x3e')]);_0x3bd643[_0xaf49('0x40')]=_[_0xaf49('0x41')](_0x3bd643[_0xaf49('0x3d')],_0x3bd643[_0xaf49('0x3e')]);_0x220eb3['attributes']=_[_0xaf49('0x41')](_0x3bd643['model'],qs[_0xaf49('0x42')](_0x2df1f0['query']['fields']));_0x220eb3[_0xaf49('0x43')]=_0x220eb3['attributes']['length']?_0x220eb3[_0xaf49('0x43')]:_0x3bd643['model'];if(!_0x2df1f0[_0xaf49('0x3e')][_0xaf49('0x45')](_0xaf49('0x66'))){_0x220eb3[_0xaf49('0x1e')]=qs[_0xaf49('0x1e')](_0x2df1f0['query'][_0xaf49('0x1e')]);_0x220eb3[_0xaf49('0x1b')]=qs[_0xaf49('0x1b')](_0x2df1f0['query'][_0xaf49('0x1b')]);}_0x220eb3[_0xaf49('0x60')]=qs[_0xaf49('0x46')](_0x2df1f0['query'][_0xaf49('0x46')]);_0x220eb3[_0xaf49('0x47')]=qs[_0xaf49('0x40')](_['pick'](_0x2df1f0[_0xaf49('0x3e')],_0x3bd643[_0xaf49('0x40')]));_0x220eb3[_0xaf49('0x47')]['VoiceQueueId']=_0x43960a['id'];if(_0x2df1f0[_0xaf49('0x3e')][_0xaf49('0x2d')]){_0x220eb3[_0xaf49('0x47')]=_[_0xaf49('0x48')](_0x220eb3[_0xaf49('0x47')],{'$or':_[_0xaf49('0x2f')](_0x220eb3[_0xaf49('0x43')],function(_0x6fe288){var _0x495ae3={};_0x495ae3[_0x6fe288]={'$like':'%'+_0x2df1f0[_0xaf49('0x3e')][_0xaf49('0x2d')]+'%'};return _0x495ae3;})});}_0x220eb3=_['merge']({},_0x220eb3,_0x2df1f0[_0xaf49('0x49')]);return db[_0xaf49('0x6c')][_0xaf49('0x1d')]({'where':_0x220eb3[_0xaf49('0x47')]})[_0xaf49('0x26')](function(_0x5e096f){_0x4fdfa3[_0xaf49('0x1d')]=_0x5e096f;if(_0x2df1f0[_0xaf49('0x3e')][_0xaf49('0x4a')]){_0x220eb3[_0xaf49('0x4e')]=[{'all':!![]}];}return db[_0xaf49('0x6c')][_0xaf49('0x63')](_0x220eb3);})[_0xaf49('0x26')](function(_0x2cb1ec){_0x4fdfa3[_0xaf49('0x4b')]=_0x2cb1ec;return _0x4fdfa3;});}})['then'](respondWithFilteredResult(_0x2902e8,_0x220eb3))[_0xaf49('0x4f')](handleError(_0x2902e8,null));};exports[_0xaf49('0x6d')]=function(_0x10e82a,_0x210a2f,_0x2b7988){var _0x29f8ea={};var _0x2fc3f7={};var _0xdd4c80;var _0x32c2eb;return db[_0xaf49('0x3a')]['findOne']({'where':{'id':_0x10e82a[_0xaf49('0x5a')]['id']}})['then'](handleEntityNotFound(_0x210a2f,null))[_0xaf49('0x26')](function(_0x10ee12){if(_0x10ee12){_0xdd4c80=_0x10ee12;_0x2fc3f7[_0xaf49('0x3d')]=_[_0xaf49('0x3f')](db[_0xaf49('0x6e')][_0xaf49('0x4d')]);_0x2fc3f7['query']=_[_0xaf49('0x3f')](_0x10e82a['query']);_0x2fc3f7[_0xaf49('0x40')]=_[_0xaf49('0x41')](_0x2fc3f7[_0xaf49('0x3d')],_0x2fc3f7[_0xaf49('0x3e')]);_0x29f8ea['attributes']=_[_0xaf49('0x41')](_0x2fc3f7['model'],qs['fields'](_0x10e82a[_0xaf49('0x3e')][_0xaf49('0x42')]));_0x29f8ea[_0xaf49('0x43')]=_0x29f8ea['attributes'][_0xaf49('0x44')]?_0x29f8ea[_0xaf49('0x43')]:_0x2fc3f7[_0xaf49('0x3d')];_0x29f8ea[_0xaf49('0x60')]=qs[_0xaf49('0x46')](_0x10e82a['query']['sort']);_0x29f8ea[_0xaf49('0x47')]=qs[_0xaf49('0x40')](_[_0xaf49('0x61')](_0x10e82a[_0xaf49('0x3e')],_0x2fc3f7[_0xaf49('0x40')]));if(_0x10e82a[_0xaf49('0x3e')][_0xaf49('0x2d')]){_0x29f8ea['where']=_[_0xaf49('0x48')](_0x29f8ea['where'],{'$or':_['map'](_0x29f8ea[_0xaf49('0x43')],function(_0x23c524){var _0x226e05={};_0x226e05[_0x23c524]={'$like':'%'+_0x10e82a['query'][_0xaf49('0x2d')]+'%'};return _0x226e05;})});}_0x29f8ea=_[_0xaf49('0x48')]({},_0x29f8ea,_0x10e82a['options']);return _0xdd4c80[_0xaf49('0x6d')](_0x29f8ea);}})['then'](function(_0xa9ea81){if(_0xa9ea81){_0x32c2eb=_0xa9ea81[_0xaf49('0x44')];if(!_0x10e82a[_0xaf49('0x3e')][_0xaf49('0x45')](_0xaf49('0x66'))){_0x29f8ea[_0xaf49('0x1e')]=qs[_0xaf49('0x1e')](_0x10e82a['query'][_0xaf49('0x1e')]);_0x29f8ea[_0xaf49('0x1b')]=qs[_0xaf49('0x1b')](_0x10e82a[_0xaf49('0x3e')]['offset']);}return _0xdd4c80[_0xaf49('0x6d')](_0x29f8ea);}})[_0xaf49('0x26')](function(_0x22bea9){if(_0x22bea9){return _0x22bea9?{'count':_0x32c2eb,'rows':_0x22bea9}:null;}})[_0xaf49('0x26')](respondWithResult(_0x210a2f,null))[_0xaf49('0x4f')](handleError(_0x210a2f,null));};exports[_0xaf49('0x6f')]=function(_0x3c7927,_0x51e67c,_0x4244a7){var _0x4fb8ed=_0x3c7927['body'][_0xaf49('0x70')];var _0x178832=_[_0xaf49('0x2f')](_0x4fb8ed,'id');return db['Team'][_0xaf49('0x63')]({'where':{'id':_0x178832},'attributes':['id'],'include':[{'model':db['User'],'as':_0xaf49('0x71'),'attributes':['id','name','online',_0xaf49('0x72'),_0xaf49('0x73')],'raw':!![]}]})[_0xaf49('0x26')](function(_0x4cfc03){if(_0x4cfc03){var _0x1bb39d=_[_0xaf49('0x74')](_0x4cfc03,function(_0x10d697){var _0x4a080a=_0x10d697[_0xaf49('0x28')]({'plain':!![]});_0x4a080a['Agents'][_0xaf49('0x75')](function(_0x59493d){_0x59493d['penalty']=_[_0xaf49('0x55')](_0x4fb8ed,{'id':_0x4a080a['id']})['penalty'];});return _0x4a080a[_0xaf49('0x71')];});return db[_0xaf49('0x3a')][_0xaf49('0x55')]({'where':{'id':_0x3c7927['params']['id']}})[_0xaf49('0x26')](function(_0x318b21){return db[_0xaf49('0x76')][_0xaf49('0x77')](function(_0x24b6bd){return _0x318b21[_0xaf49('0x6f')](_0x178832,{'transaction':_0x24b6bd})[_0xaf49('0x26')](function(){return BPromise[_0xaf49('0x78')](_0x4fb8ed,function(_0x181e99){return db['TeamVoiceQueue'][_0xaf49('0x79')]({'TeamId':_0x181e99['id'],'VoiceQueueId':_0x3c7927[_0xaf49('0x5a')]['id'],'penalty':_0x181e99[_0xaf49('0x7a')]},{'transaction':_0x24b6bd});});})[_0xaf49('0x26')](function(){return BPromise[_0xaf49('0x78')](_0x1bb39d,function(_0x5942fb){return db[_0xaf49('0x7b')][_0xaf49('0x7c')]({'where':{'UserId':_0x5942fb['id'],'VoiceQueueId':_0x3c7927[_0xaf49('0x5a')]['id']},'defaults':{'penalty':_0x5942fb['penalty']},'transaction':_0x24b6bd});});})[_0xaf49('0x26')](function(){return BPromise[_0xaf49('0x78')](_[_0xaf49('0x2d')](_0x1bb39d,{'online':!![]}),function(_0x5e3358){return db[_0xaf49('0x7d')][_0xaf49('0x79')]({'membername':_0x5e3358[_0xaf49('0x33')],'UserId':_0x5e3358['id'],'queue_name':_0x318b21[_0xaf49('0x33')],'VoiceQueueId':_0x318b21['id'],'interface':_[_0xaf49('0x7e')](_0x5e3358[_0xaf49('0x73')])?util[_0xaf49('0x7f')](_0xaf49('0x80'),_0x5e3358[_0xaf49('0x33')]):_0x5e3358['interface'],'paused':_0x5e3358['voicePause']||![],'penalty':_0x5e3358[_0xaf49('0x7a')]},{'transaction':_0x24b6bd});});})[_0xaf49('0x26')](function(){_0x1bb39d[_0xaf49('0x75')](function(_0x96b77c){socket[_0xaf49('0x81')](_0xaf49('0x82'),{'UserId':_0x96b77c['id'],'VoiceQueueId':_0x318b21['id']});});});});});}})[_0xaf49('0x26')](respondWithStatusCode(_0x51e67c,null))[_0xaf49('0x4f')](handleError(_0x51e67c,null));};exports['removeTeams']=function(_0xd15ca4,_0x2367a5,_0x1602cb){return db[_0xaf49('0x6e')][_0xaf49('0x63')]({'where':{'id':_0xd15ca4[_0xaf49('0x3e')][_0xaf49('0x83')]},'attributes':['id'],'include':[{'model':db[_0xaf49('0x84')],'as':_0xaf49('0x71'),'attributes':['id'],'raw':!![]}]})[_0xaf49('0x26')](handleEntityNotFound(_0x2367a5,null))[_0xaf49('0x26')](function(_0x568003){var _0x577b97=_[_0xaf49('0x2f')](_0x568003,'id');var _0x4ea8c1=[];var _0x21ccdf=[];var _0x894dd6=squel[_0xaf49('0x85')]();_0x894dd6[_0xaf49('0x86')](_0xaf49('0x87'))[_0xaf49('0x88')](_0xaf49('0x89'),'tq')[_0xaf49('0x8a')]('user_has_teams','ut','ut.TeamId\x20=\x20tq.TeamId')[_0xaf49('0x47')]('VoiceQueueId\x20=\x20?',_0xd15ca4['params']['id']);for(var _0x5a2188=0x0;_0x5a2188<_0x568003[_0xaf49('0x44')];_0x5a2188+=0x1){let _0x5866ae=_0x568003[_0x5a2188];for(var _0x4f4b37=0x0;_0x4f4b37<_0x5866ae[_0xaf49('0x71')][_0xaf49('0x44')];_0x4f4b37+=0x1){let _0x30273e=_0x5866ae[_0xaf49('0x71')][_0x4f4b37];var _0x103ef1=_0x894dd6[_0xaf49('0x59')]();_0x103ef1['where'](_0xaf49('0x8b'),_0x30273e['id']);_0x21ccdf[_0xaf49('0x8c')](db[_0xaf49('0x76')][_0xaf49('0x3e')](_0x103ef1['toString'](),{'type':db[_0xaf49('0x76')][_0xaf49('0x8d')]['SELECT']})['then'](function(_0x5841ef){if(_0x5841ef['length']===0x1){return _0x30273e['id'];}else{var _0x27e72f=_['every'](_[_0xaf49('0x2f')](_0x5841ef,'TeamId'),function(_0x20c650){return _['includes'](_0x577b97,_0x20c650);});if(_0x27e72f){return _0x30273e['id'];}}}));}}return BPromise['all'](_0x21ccdf)['then'](function(_0x3463f6){_0x4ea8c1=_(_0x4ea8c1)[_0xaf49('0x8e')](_0x3463f6)['compact']()[_0xaf49('0x30')]();return db[_0xaf49('0x3a')][_0xaf49('0x55')]({'where':{'id':_0xd15ca4[_0xaf49('0x5a')]['id']}})[_0xaf49('0x26')](function(_0x20e953){return db[_0xaf49('0x76')][_0xaf49('0x77')](function(_0x430964){return _0x20e953[_0xaf49('0x8f')](_0xd15ca4[_0xaf49('0x3e')][_0xaf49('0x83')],{'transaction':_0x430964})[_0xaf49('0x26')](function(){if(!_['isEmpty'](_0x4ea8c1)){return _0x20e953[_0xaf49('0x90')](_0x4ea8c1,{'transaction':_0x430964})[_0xaf49('0x26')](function(){return db['UserVoiceQueueRt']['destroy']({'where':{'VoiceQueueId':_0xd15ca4[_0xaf49('0x5a')]['id'],'UserId':_0x4ea8c1},'transaction':_0x430964});});}})[_0xaf49('0x26')](function(){_0x4ea8c1['forEach'](function(_0x2f4786){socket[_0xaf49('0x81')]('userVoiceQueue:remove',{'UserId':_0x2f4786,'VoiceQueueId':_0x20e953['id']});});});});});});})[_0xaf49('0x26')](respondWithStatusCode(_0x2367a5,null))[_0xaf49('0x4f')](handleError(_0x2367a5,null));};exports[_0xaf49('0x91')]=function(_0xd3278b,_0x1713f7,_0x5ba608){var _0x4daf2a,_0x1f5857;return db[_0xaf49('0x3a')][_0xaf49('0x55')]({'where':{'id':_0xd3278b['params']['id']}})[_0xaf49('0x26')](handleEntityNotFound(_0x1713f7,null))[_0xaf49('0x26')](function(_0x2f77e9){if(_0x2f77e9){_0x1f5857=_0x2f77e9;return _0x2f77e9['addAgents'](_0xd3278b[_0xaf49('0x51')][_0xaf49('0x83')],_[_0xaf49('0x5b')](_0xd3278b[_0xaf49('0x51')],[_0xaf49('0x83'),'id'])||{})[_0xaf49('0x92')](function(_0x5c3a5e){for(var _0xadeac=0x0;_0xadeac<_0xd3278b[_0xaf49('0x51')][_0xaf49('0x83')][_0xaf49('0x44')];_0xadeac+=0x1){socket[_0xaf49('0x81')](_0xaf49('0x82'),{'UserId':Number(_0xd3278b[_0xaf49('0x51')][_0xaf49('0x83')][_0xadeac]),'VoiceQueueId':Number(_0xd3278b[_0xaf49('0x5a')]['id'])});}return _0x5c3a5e;});}})[_0xaf49('0x26')](function(_0x13312e){_0x4daf2a=_0x13312e||[];if(_0x1f5857){return db['User'][_0xaf49('0x63')]({'where':{'id':_0xd3278b['body']['ids']},'attributes':['id',_0xaf49('0x33'),_0xaf49('0x93'),_0xaf49('0x72'),'interface'],'raw':!![]});}})[_0xaf49('0x26')](function(_0x1b6758){if(!_['isEmpty'](_0x1b6758)){var _0x436395=[];for(var _0x2d6ce6=0x0;_0x2d6ce6<_0x1b6758[_0xaf49('0x44')];_0x2d6ce6++){if(_0x1b6758[_0x2d6ce6][_0xaf49('0x93')]){_0x436395[_0xaf49('0x8c')](db[_0xaf49('0x7d')][_0xaf49('0x79')]({'membername':_0x1b6758[_0x2d6ce6]['name'],'UserId':_0x1b6758[_0x2d6ce6]['id'],'queue_name':_0x1f5857['name'],'VoiceQueueId':_0x1f5857['id'],'interface':_[_0xaf49('0x7e')](_0x1b6758[_0x2d6ce6][_0xaf49('0x73')])?util[_0xaf49('0x7f')](_0xaf49('0x80'),_0x1b6758[_0x2d6ce6][_0xaf49('0x33')]):_0x1b6758[_0x2d6ce6]['interface'],'paused':_0x1b6758[_0x2d6ce6][_0xaf49('0x72')]||![],'penalty':_0xd3278b[_0xaf49('0x51')][_0xaf49('0x7a')]||0x0}));}}return BPromise[_0xaf49('0x94')](_0x436395);}})['then'](function(){return _0x4daf2a;})['then'](respondWithResult(_0x1713f7,null))[_0xaf49('0x4f')](handleError(_0x1713f7,null));};exports[_0xaf49('0x90')]=function(_0x40c15e,_0x2c8205,_0x4a2077){return db[_0xaf49('0x3a')][_0xaf49('0x55')]({'where':{'id':_0x40c15e[_0xaf49('0x5a')]['id']}})[_0xaf49('0x26')](handleEntityNotFound(_0x2c8205,null))['then'](function(_0x4a699f){if(_0x4a699f){return _0x4a699f[_0xaf49('0x90')](_0x40c15e[_0xaf49('0x3e')][_0xaf49('0x83')])[_0xaf49('0x26')](function(){if(_[_0xaf49('0x95')](_0x40c15e[_0xaf49('0x3e')][_0xaf49('0x83')])){for(var _0x3ede72=0x0;_0x3ede72<_0x40c15e[_0xaf49('0x3e')][_0xaf49('0x83')][_0xaf49('0x44')];_0x3ede72+=0x1){socket[_0xaf49('0x81')](_0xaf49('0x96'),{'UserId':Number(_0x40c15e[_0xaf49('0x3e')][_0xaf49('0x83')][_0x3ede72]),'VoiceQueueId':Number(_0x40c15e[_0xaf49('0x5a')]['id'])});}}else{socket[_0xaf49('0x81')](_0xaf49('0x96'),{'UserId':Number(_0x40c15e[_0xaf49('0x3e')][_0xaf49('0x83')]),'VoiceQueueId':Number(_0x40c15e['params']['id'])});}});}})[_0xaf49('0x26')](function(_0x495db7){return db[_0xaf49('0x7d')][_0xaf49('0x27')]({'where':{'VoiceQueueId':_0x40c15e[_0xaf49('0x5a')]['id'],'UserId':_0x40c15e[_0xaf49('0x3e')][_0xaf49('0x83')]}})[_0xaf49('0x26')](function(){return _0x495db7;});})[_0xaf49('0x26')](respondWithStatusCode(_0x2c8205,null))[_0xaf49('0x4f')](handleError(_0x2c8205,null));};exports[_0xaf49('0x97')]=function(_0x1bdf8d,_0x38c103,_0x29048c){var _0x121701={};var _0x500e1e={};var _0x2f4822;var _0x2623be;return db[_0xaf49('0x3a')][_0xaf49('0x69')]({'where':{'id':_0x1bdf8d[_0xaf49('0x5a')]['id']}})[_0xaf49('0x26')](handleEntityNotFound(_0x38c103,null))[_0xaf49('0x26')](function(_0x1a0d2b){if(_0x1a0d2b){_0x2f4822=_0x1a0d2b;_0x500e1e[_0xaf49('0x3d')]=_[_0xaf49('0x3f')](db[_0xaf49('0x84')][_0xaf49('0x4d')]);_0x500e1e[_0xaf49('0x3e')]=_['keys'](_0x1bdf8d['query']);_0x500e1e[_0xaf49('0x40')]=_[_0xaf49('0x41')](_0x500e1e[_0xaf49('0x3d')],_0x500e1e[_0xaf49('0x3e')]);_0x121701[_0xaf49('0x43')]=_[_0xaf49('0x41')](_0x500e1e[_0xaf49('0x3d')],qs[_0xaf49('0x42')](_0x1bdf8d[_0xaf49('0x3e')][_0xaf49('0x42')]));_0x121701['attributes']=_0x121701[_0xaf49('0x43')][_0xaf49('0x44')]?_0x121701['attributes']:_0x500e1e[_0xaf49('0x3d')];_0x121701[_0xaf49('0x60')]=qs[_0xaf49('0x46')](_0x1bdf8d[_0xaf49('0x3e')][_0xaf49('0x46')]);_0x121701[_0xaf49('0x47')]=qs[_0xaf49('0x40')](_[_0xaf49('0x61')](_0x1bdf8d['query'],_0x500e1e[_0xaf49('0x40')]));if(_0x1bdf8d[_0xaf49('0x3e')][_0xaf49('0x2d')]){_0x121701['where']=_[_0xaf49('0x48')](_0x121701[_0xaf49('0x47')],{'$or':_[_0xaf49('0x2f')](_0x121701[_0xaf49('0x43')],function(_0x173081){var _0x3c41d1={};_0x3c41d1[_0x173081]={'$like':'%'+_0x1bdf8d[_0xaf49('0x3e')]['filter']+'%'};return _0x3c41d1;})});}_0x121701=_[_0xaf49('0x48')]({},_0x121701,_0x1bdf8d[_0xaf49('0x49')]);return _0x2f4822[_0xaf49('0x97')](_0x121701);}})['then'](function(_0x29ad70){if(_0x29ad70){_0x2623be=_0x29ad70['length'];if(!_0x1bdf8d[_0xaf49('0x3e')][_0xaf49('0x45')](_0xaf49('0x66'))){_0x121701[_0xaf49('0x1e')]=qs['limit'](_0x1bdf8d[_0xaf49('0x3e')][_0xaf49('0x1e')]);_0x121701[_0xaf49('0x1b')]=qs[_0xaf49('0x1b')](_0x1bdf8d[_0xaf49('0x3e')]['offset']);}return _0x2f4822[_0xaf49('0x97')](_0x121701);}})['then'](function(_0x4cfbc1){if(_0x4cfbc1){return _0x4cfbc1?{'count':_0x2623be,'rows':_0x4cfbc1}:null;}})[_0xaf49('0x26')](respondWithResult(_0x38c103,null))[_0xaf49('0x4f')](handleError(_0x38c103,null));};exports[_0xaf49('0x98')]=function(_0x343e20,_0x5d1d25,_0xd08832){var _0xa7b909={};var _0x3c444f={};var _0x4358b2;var _0x4c2efa;return db[_0xaf49('0x3a')]['findOne']({'where':{'id':_0x343e20['params']['id']}})[_0xaf49('0x26')](handleEntityNotFound(_0x5d1d25,null))[_0xaf49('0x26')](function(_0x54a9f0){if(_0x54a9f0){_0x4358b2=_0x54a9f0;_0x3c444f[_0xaf49('0x3d')]=_['keys'](db[_0xaf49('0x7d')][_0xaf49('0x4d')]);_0x3c444f['query']=_['keys'](_0x343e20[_0xaf49('0x3e')]);_0x3c444f[_0xaf49('0x40')]=_[_0xaf49('0x41')](_0x3c444f[_0xaf49('0x3d')],_0x3c444f[_0xaf49('0x3e')]);_0xa7b909[_0xaf49('0x43')]=_[_0xaf49('0x41')](_0x3c444f['model'],qs[_0xaf49('0x42')](_0x343e20[_0xaf49('0x3e')]['fields']));_0xa7b909['attributes']=_0xa7b909[_0xaf49('0x43')]['length']?_0xa7b909[_0xaf49('0x43')]:_0x3c444f[_0xaf49('0x3d')];_0xa7b909['order']=qs[_0xaf49('0x46')](_0x343e20['query'][_0xaf49('0x46')]);_0xa7b909[_0xaf49('0x47')]=qs['filters'](_[_0xaf49('0x61')](_0x343e20[_0xaf49('0x3e')],_0x3c444f[_0xaf49('0x40')]));if(_0x343e20['query'][_0xaf49('0x2d')]){_0xa7b909['where']=_[_0xaf49('0x48')](_0xa7b909[_0xaf49('0x47')],{'$or':_[_0xaf49('0x2f')](_0xa7b909[_0xaf49('0x43')],function(_0x2814e1){var _0x11e69f={};_0x11e69f[_0x2814e1]={'$like':'%'+_0x343e20[_0xaf49('0x3e')][_0xaf49('0x2d')]+'%'};return _0x11e69f;})});}_0xa7b909=_['merge']({},_0xa7b909,_0x343e20[_0xaf49('0x49')]);return _0x4358b2[_0xaf49('0x98')](_0xa7b909);}})[_0xaf49('0x26')](function(_0xdaa478){if(_0xdaa478){_0x4c2efa=_0xdaa478[_0xaf49('0x44')];if(!_0x343e20['query'][_0xaf49('0x45')](_0xaf49('0x66'))){_0xa7b909[_0xaf49('0x1e')]=qs[_0xaf49('0x1e')](_0x343e20[_0xaf49('0x3e')][_0xaf49('0x1e')]);_0xa7b909[_0xaf49('0x1b')]=qs[_0xaf49('0x1b')](_0x343e20['query'][_0xaf49('0x1b')]);}return _0x4358b2[_0xaf49('0x98')](_0xa7b909);}})[_0xaf49('0x26')](function(_0x1712fa){return _0x1712fa?{'count':_0x4c2efa,'rows':_0x1712fa}:null;})['then'](respondWithResult(_0x5d1d25,null))[_0xaf49('0x4f')](handleError(_0x5d1d25,null));};exports['getLists']=function(_0x2088e0,_0x3b90d1,_0x4f22fc){var _0x33831e={};var _0x25dc8f={};var _0x2e612f;var _0x1bc473;return db[_0xaf49('0x3a')]['findOne']({'where':{'id':_0x2088e0[_0xaf49('0x5a')]['id']}})[_0xaf49('0x26')](handleEntityNotFound(_0x3b90d1,null))[_0xaf49('0x26')](function(_0x18f2be){if(_0x18f2be){_0x2e612f=_0x18f2be;_0x25dc8f[_0xaf49('0x3d')]=_[_0xaf49('0x3f')](db[_0xaf49('0x99')][_0xaf49('0x4d')]);_0x25dc8f['query']=_[_0xaf49('0x3f')](_0x2088e0[_0xaf49('0x3e')]);_0x25dc8f[_0xaf49('0x40')]=_[_0xaf49('0x41')](_0x25dc8f[_0xaf49('0x3d')],_0x25dc8f[_0xaf49('0x3e')]);_0x33831e[_0xaf49('0x43')]=_[_0xaf49('0x41')](_0x25dc8f[_0xaf49('0x3d')],qs['fields'](_0x2088e0['query']['fields']));_0x33831e[_0xaf49('0x43')]=_0x33831e[_0xaf49('0x43')][_0xaf49('0x44')]?_0x33831e['attributes']:_0x25dc8f[_0xaf49('0x3d')];_0x33831e['order']=qs[_0xaf49('0x46')](_0x2088e0[_0xaf49('0x3e')][_0xaf49('0x46')]);_0x33831e[_0xaf49('0x47')]=qs[_0xaf49('0x40')](_[_0xaf49('0x61')](_0x2088e0[_0xaf49('0x3e')],_0x25dc8f[_0xaf49('0x40')]));if(_0x2088e0[_0xaf49('0x3e')][_0xaf49('0x2d')]){_0x33831e[_0xaf49('0x47')]=_['merge'](_0x33831e[_0xaf49('0x47')],{'$or':_['map'](_0x33831e['attributes'],function(_0x1344b8){var _0x3961ef={};_0x3961ef[_0x1344b8]={'$like':'%'+_0x2088e0[_0xaf49('0x3e')][_0xaf49('0x2d')]+'%'};return _0x3961ef;})});}_0x33831e=_['merge']({},_0x33831e,_0x2088e0[_0xaf49('0x49')]);return _0x2e612f['getLists'](_0x33831e);}})[_0xaf49('0x26')](function(_0x3e18ae){if(_0x3e18ae){_0x1bc473=_0x3e18ae[_0xaf49('0x44')];if(!_0x2088e0[_0xaf49('0x3e')]['hasOwnProperty'](_0xaf49('0x66'))){_0x33831e[_0xaf49('0x1e')]=qs[_0xaf49('0x1e')](_0x2088e0[_0xaf49('0x3e')][_0xaf49('0x1e')]);_0x33831e[_0xaf49('0x1b')]=qs[_0xaf49('0x1b')](_0x2088e0[_0xaf49('0x3e')]['offset']);}return _0x2e612f[_0xaf49('0x9a')](_0x33831e);}})['then'](function(_0x33ccbd){if(_0x33ccbd){return _0x33ccbd?{'count':_0x1bc473,'rows':_0x33ccbd}:null;}})[_0xaf49('0x26')](respondWithResult(_0x3b90d1,null))['catch'](handleError(_0x3b90d1,null));};exports['addLists']=function(_0x787a86,_0xada0ac,_0x511df8){var _0x4cfdb9,_0x5eff21;return db['VoiceQueue']['find']({'where':{'id':_0x787a86[_0xaf49('0x5a')]['id']}})[_0xaf49('0x26')](handleEntityNotFound(_0xada0ac,null))['then'](function(_0x224bf4){if(_0x224bf4){_0x5eff21=_0x224bf4;return _0x224bf4[_0xaf49('0x9b')](_0x787a86[_0xaf49('0x51')][_0xaf49('0x83')],_[_0xaf49('0x5b')](_0x787a86[_0xaf49('0x51')],['ids','id'])||{});}return null;})['spread'](function(_0x377555){var _0xfcec29;_0x4cfdb9=_0x377555||[];var _0x32b12=[];if(_0x377555){for(var _0x5a18ff=0x0;_0x5a18ff<_0x377555[_0xaf49('0x44')];_0x5a18ff+=0x1){var _0x4e776c=_0x377555[_0x5a18ff]['get']({'plain':!![]});_0x5eff21[_0xaf49('0x9c')]=_0x787a86[_0xaf49('0x51')][_0xaf49('0x9c')]?_0x787a86[_0xaf49('0x51')][_0xaf49('0x9c')]:_0x5eff21[_0xaf49('0x9c')];switch(_0x5eff21[_0xaf49('0x9c')]){case'always':_0xfcec29=squel[_0xaf49('0x9d')]()[_0xaf49('0x9e')]('cm_hopper')[_0xaf49('0x9f')](['phone','scheduledAt','ContactId',_0xaf49('0xa0'),_0xaf49('0x67'),_0xaf49('0x5c'),_0xaf49('0x5d')],squel[_0xaf49('0x85')]()[_0xaf49('0x86')](_0xaf49('0xa1'),_0xaf49('0xa1'))[_0xaf49('0x86')](_0xaf49('0xa2'),_0xaf49('0xa3'))[_0xaf49('0x86')]('id',_0xaf49('0xa4'))[_0xaf49('0x86')](_0x4e776c[_0xaf49('0xa5')][_0xaf49('0xa6')](),'ListId')[_0xaf49('0x86')](_0x787a86[_0xaf49('0x5a')]['id']['toString'](),'VoiceQueueId')[_0xaf49('0x86')](_0xaf49('0xa2'),'createdAt')[_0xaf49('0x86')]('NOW()','updatedAt')[_0xaf49('0x88')](_0xaf49('0xa7'))[_0xaf49('0x47')]('deletedAt\x20IS\x20NULL')[_0xaf49('0x47')](_0xaf49('0xa8'),_0x4e776c[_0xaf49('0xa5')][_0xaf49('0xa6')]())['where'](_0xaf49('0xa9'))['where'](_0xaf49('0xaa'),squel['select']()['field'](_0xaf49('0xab'))[_0xaf49('0x88')](_0xaf49('0xac'))[_0xaf49('0x47')](_0xaf49('0xad'),_0x787a86[_0xaf49('0x5a')]['id'][_0xaf49('0xa6')]()))[_0xaf49('0x47')](_0xaf49('0xaa'),squel[_0xaf49('0x85')]()['field'](_0xaf49('0xae'))[_0xaf49('0x88')](_0xaf49('0xaf'))[_0xaf49('0x47')](_0xaf49('0xad'),_0x787a86['params']['id']['toString']())))[_0xaf49('0xa6')]();break;case _0xaf49('0xb0'):_0xfcec29=squel[_0xaf49('0x9d')]()[_0xaf49('0x9e')](_0xaf49('0xaf'))[_0xaf49('0x9f')](['phone','scheduledAt',_0xaf49('0xa4'),'ListId',_0xaf49('0x67'),'createdAt',_0xaf49('0x5d')],squel[_0xaf49('0x85')]()[_0xaf49('0x86')](_0xaf49('0xa1'),_0xaf49('0xa1'))['field'](_0xaf49('0xa2'),_0xaf49('0xa3'))[_0xaf49('0x86')]('id',_0xaf49('0xa4'))[_0xaf49('0x86')](_0x4e776c[_0xaf49('0xa5')][_0xaf49('0xa6')](),_0xaf49('0xa0'))[_0xaf49('0x86')](_0x787a86['params']['id'][_0xaf49('0xa6')](),_0xaf49('0x67'))['field'](_0xaf49('0xa2'),_0xaf49('0x5c'))[_0xaf49('0x86')](_0xaf49('0xa2'),_0xaf49('0x5d'))['from']('cm_contacts')['where'](_0xaf49('0xb1'))[_0xaf49('0x47')]('ListId\x20=\x20?',_0x4e776c[_0xaf49('0xa5')][_0xaf49('0xa6')]())[_0xaf49('0x47')]('phone\x20IS\x20NOT\x20NULL')[_0xaf49('0x47')](_0xaf49('0xaa'),squel[_0xaf49('0x85')]()[_0xaf49('0x86')](_0xaf49('0xae'))[_0xaf49('0x88')]('cm_hopper')[_0xaf49('0x47')]('VoiceQueueId\x20=\x20?',_0x787a86[_0xaf49('0x5a')]['id'][_0xaf49('0xa6')]())))['toString']();break;default:_0xfcec29=squel[_0xaf49('0x9d')]()[_0xaf49('0x9e')](_0xaf49('0xaf'))[_0xaf49('0x9f')]([_0xaf49('0xa1'),'scheduledAt','ContactId',_0xaf49('0xa0'),_0xaf49('0x67'),_0xaf49('0x5c'),_0xaf49('0x5d')],squel[_0xaf49('0x85')]()[_0xaf49('0x86')](_0xaf49('0xa1'),'phone')[_0xaf49('0x86')]('NOW()',_0xaf49('0xa3'))[_0xaf49('0x86')]('id',_0xaf49('0xa4'))[_0xaf49('0x86')](_0x4e776c[_0xaf49('0xa5')][_0xaf49('0xa6')](),_0xaf49('0xa0'))[_0xaf49('0x86')](_0x787a86[_0xaf49('0x5a')]['id']['toString'](),_0xaf49('0x67'))['field'](_0xaf49('0xa2'),_0xaf49('0x5c'))['field'](_0xaf49('0xa2'),_0xaf49('0x5d'))['from'](_0xaf49('0xa7'))['where'](_0xaf49('0xb1'))[_0xaf49('0x47')](_0xaf49('0xa8'),_0x4e776c['CmListId'][_0xaf49('0xa6')]())['where']('phone\x20IS\x20NOT\x20NULL'))[_0xaf49('0xa6')]();}_0x32b12[_0xaf49('0x8c')](db['sequelize'][_0xaf49('0x3e')](_0xfcec29));}return BPromise[_0xaf49('0x94')](_0x32b12);}})[_0xaf49('0x26')](function(){return _0x4cfdb9;})[_0xaf49('0x26')](respondWithResult(_0xada0ac,null))[_0xaf49('0x4f')](handleError(_0xada0ac,null));};exports[_0xaf49('0xb2')]=function(_0x333efe,_0x3987c4,_0x3b78c6){return db[_0xaf49('0x3a')]['find']({'where':{'id':_0x333efe[_0xaf49('0x5a')]['id']}})[_0xaf49('0x26')](handleEntityNotFound(_0x3987c4,null))[_0xaf49('0x26')](function(_0x398f9a){if(_0x398f9a){return _0x398f9a[_0xaf49('0xb2')](_0x333efe[_0xaf49('0x3e')][_0xaf49('0x83')]);}})[_0xaf49('0x26')](function(_0x155219){if(_0x155219){return db[_0xaf49('0x62')]['destroy']({'where':{'ListId':_0x333efe[_0xaf49('0x3e')]['ids'],'VoiceQueueId':_0x333efe['params']['id']}})[_0xaf49('0x26')](function(){return _0x155219;});}})[_0xaf49('0x26')](respondWithStatusCode(_0x3987c4,null))['catch'](handleError(_0x3987c4,null));};exports['getBlackLists']=function(_0x4bd6e8,_0x2dad5d,_0x47640b){var _0x7f6b70={};var _0x145175={};var _0x2bc4e6;var _0x2347d5;return db[_0xaf49('0x3a')][_0xaf49('0x69')]({'where':{'id':_0x4bd6e8[_0xaf49('0x5a')]['id']}})[_0xaf49('0x26')](handleEntityNotFound(_0x2dad5d,null))[_0xaf49('0x26')](function(_0x330a3f){if(_0x330a3f){_0x2bc4e6=_0x330a3f;_0x145175['model']=_['keys'](db[_0xaf49('0x99')][_0xaf49('0x4d')]);_0x145175[_0xaf49('0x3e')]=_['keys'](_0x4bd6e8[_0xaf49('0x3e')]);_0x145175[_0xaf49('0x40')]=_[_0xaf49('0x41')](_0x145175[_0xaf49('0x3d')],_0x145175['query']);_0x7f6b70[_0xaf49('0x43')]=_[_0xaf49('0x41')](_0x145175[_0xaf49('0x3d')],qs[_0xaf49('0x42')](_0x4bd6e8[_0xaf49('0x3e')][_0xaf49('0x42')]));_0x7f6b70['attributes']=_0x7f6b70[_0xaf49('0x43')][_0xaf49('0x44')]?_0x7f6b70[_0xaf49('0x43')]:_0x145175['model'];_0x7f6b70[_0xaf49('0x60')]=qs[_0xaf49('0x46')](_0x4bd6e8[_0xaf49('0x3e')][_0xaf49('0x46')]);_0x7f6b70[_0xaf49('0x47')]=qs[_0xaf49('0x40')](_[_0xaf49('0x61')](_0x4bd6e8[_0xaf49('0x3e')],_0x145175[_0xaf49('0x40')]));if(_0x4bd6e8[_0xaf49('0x3e')][_0xaf49('0x2d')]){_0x7f6b70[_0xaf49('0x47')]=_[_0xaf49('0x48')](_0x7f6b70[_0xaf49('0x47')],{'$or':_[_0xaf49('0x2f')](_0x7f6b70['attributes'],function(_0x112b7b){var _0x3a60c5={};_0x3a60c5[_0x112b7b]={'$like':'%'+_0x4bd6e8[_0xaf49('0x3e')][_0xaf49('0x2d')]+'%'};return _0x3a60c5;})});}_0x7f6b70=_[_0xaf49('0x48')]({},_0x7f6b70,_0x4bd6e8[_0xaf49('0x49')]);return _0x2bc4e6[_0xaf49('0xb3')](_0x7f6b70);}})['then'](function(_0x1c3d1f){if(_0x1c3d1f){_0x2347d5=_0x1c3d1f['length'];if(!_0x4bd6e8[_0xaf49('0x3e')][_0xaf49('0x45')](_0xaf49('0x66'))){_0x7f6b70[_0xaf49('0x1e')]=qs['limit'](_0x4bd6e8[_0xaf49('0x3e')][_0xaf49('0x1e')]);_0x7f6b70[_0xaf49('0x1b')]=qs[_0xaf49('0x1b')](_0x4bd6e8[_0xaf49('0x3e')]['offset']);}return _0x2bc4e6[_0xaf49('0xb3')](_0x7f6b70);}})[_0xaf49('0x26')](function(_0x5c50c7){if(_0x5c50c7){return _0x5c50c7?{'count':_0x2347d5,'rows':_0x5c50c7}:null;}})[_0xaf49('0x26')](respondWithResult(_0x2dad5d,null))['catch'](handleError(_0x2dad5d,null));};exports[_0xaf49('0xb4')]=function(_0xe3b268,_0x457e99,_0x2aed75){var _0x5b9a8f,_0x4f001e;return db['VoiceQueue'][_0xaf49('0x55')]({'where':{'id':_0xe3b268['params']['id']}})['then'](handleEntityNotFound(_0x457e99,null))[_0xaf49('0x26')](function(_0x249649){if(_0x249649){_0x4f001e=_0x249649;return _0x249649[_0xaf49('0xb4')](_0xe3b268[_0xaf49('0x51')]['ids'],_['omit'](_0xe3b268[_0xaf49('0x51')],[_0xaf49('0x83'),'id'])||{});}return null;})['spread'](function(_0x38e9ab){var _0x1426ea;_0x5b9a8f=_0x38e9ab||[];var _0x3eee79=[];if(_0x38e9ab){for(var _0x482537=0x0;_0x482537<_0x38e9ab['length'];_0x482537+=0x1){var _0x3f0106=_0x38e9ab[_0x482537]['get']({'plain':!![]});_0x1426ea=squel[_0xaf49('0x9d')]()['into'](_0xaf49('0xb5'))[_0xaf49('0x9f')]([_0xaf49('0xa1'),_0xaf49('0xa4'),_0xaf49('0xa0'),_0xaf49('0x67'),_0xaf49('0x5c'),_0xaf49('0x5d')],squel['select']()[_0xaf49('0x86')](_0xaf49('0xa1'),_0xaf49('0xa1'))[_0xaf49('0x86')]('id',_0xaf49('0xa4'))[_0xaf49('0x86')](_0x3f0106[_0xaf49('0xa5')][_0xaf49('0xa6')](),_0xaf49('0xa0'))['field'](_0xe3b268['params']['id']['toString'](),_0xaf49('0x67'))[_0xaf49('0x86')](_0xaf49('0xa2'),'createdAt')[_0xaf49('0x86')](_0xaf49('0xa2'),_0xaf49('0x5d'))[_0xaf49('0x88')]('cm_contacts')['where']('deletedAt\x20IS\x20NULL')[_0xaf49('0x47')](_0xaf49('0xa8'),_0x3f0106['CmListId']['toString']())[_0xaf49('0x47')](_0xaf49('0xa9')))[_0xaf49('0xa6')]();_0x3eee79[_0xaf49('0x8c')](db['sequelize'][_0xaf49('0x3e')](_0x1426ea));}return BPromise[_0xaf49('0x94')](_0x3eee79);}})[_0xaf49('0x26')](function(){return _0x5b9a8f;})[_0xaf49('0x26')](respondWithResult(_0x457e99,null))[_0xaf49('0x4f')](handleError(_0x457e99,null));};exports[_0xaf49('0xb6')]=function(_0x5d18f8,_0x3f7b6a,_0x348e04){return db[_0xaf49('0x3a')]['find']({'where':{'id':_0x5d18f8[_0xaf49('0x5a')]['id']}})[_0xaf49('0x26')](handleEntityNotFound(_0x3f7b6a,null))[_0xaf49('0x26')](function(_0x34a768){if(_0x34a768){return _0x34a768[_0xaf49('0xb6')](_0x5d18f8[_0xaf49('0x3e')][_0xaf49('0x83')]);}})[_0xaf49('0x26')](function(_0x553160){if(_0x553160){return db[_0xaf49('0x6c')][_0xaf49('0x27')]({'where':{'ListId':_0x5d18f8[_0xaf49('0x3e')][_0xaf49('0x83')],'VoiceQueueId':_0x5d18f8['params']['id']}})[_0xaf49('0x26')](function(){return _0x553160;});}})[_0xaf49('0x26')](respondWithStatusCode(_0x3f7b6a,null))[_0xaf49('0x4f')](handleError(_0x3f7b6a,null));};
\ No newline at end of file
index df968d1..68e9243 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x867e=['emit','hasOwnProperty','hook','exports','events','../../mysqldb','VoiceQueue','setMaxListeners','save','update','remove'];(function(_0x321bb2,_0x202794){var _0x9c12ed=function(_0x263dd3){while(--_0x263dd3){_0x321bb2['push'](_0x321bb2['shift']());}};_0x9c12ed(++_0x202794);}(_0x867e,0x1c7));var _0xe867=function(_0x2f628d,_0x2a9414){_0x2f628d=_0x2f628d-0x0;var _0x3f1b76=_0x867e[_0x2f628d];return _0x3f1b76;};'use strict';var EventEmitter=require(_0xe867('0x0'));var VoiceQueue=require(_0xe867('0x1'))['db'][_0xe867('0x2')];var VoiceQueueEvents=new EventEmitter();VoiceQueueEvents[_0xe867('0x3')](0x0);var events={'afterCreate':_0xe867('0x4'),'afterUpdate':_0xe867('0x5'),'afterDestroy':_0xe867('0x6')};function emitEvent(_0x45beea){return function(_0x51b6d9,_0x24b831,_0x32bf2a){VoiceQueueEvents['emit'](_0x45beea+':'+_0x51b6d9['id'],_0x51b6d9);VoiceQueueEvents[_0xe867('0x7')](_0x45beea,_0x51b6d9);_0x32bf2a(null);};}for(var e in events){if(events[_0xe867('0x8')](e)){var event=events[e];VoiceQueue[_0xe867('0x9')](e,emitEvent(event));}}module[_0xe867('0xa')]=VoiceQueueEvents;
\ No newline at end of file
+var _0x9e85=['VoiceQueue','setMaxListeners','emit','hasOwnProperty','hook','exports','events'];(function(_0x348b31,_0x5ef4df){var _0x227148=function(_0x5f44f3){while(--_0x5f44f3){_0x348b31['push'](_0x348b31['shift']());}};_0x227148(++_0x5ef4df);}(_0x9e85,0x18e));var _0x59e8=function(_0x2d808d,_0x355367){_0x2d808d=_0x2d808d-0x0;var _0x34066f=_0x9e85[_0x2d808d];return _0x34066f;};'use strict';var EventEmitter=require(_0x59e8('0x0'));var VoiceQueue=require('../../mysqldb')['db'][_0x59e8('0x1')];var VoiceQueueEvents=new EventEmitter();VoiceQueueEvents[_0x59e8('0x2')](0x0);var events={'afterCreate':'save','afterUpdate':'update','afterDestroy':'remove'};function emitEvent(_0x21dc6b){return function(_0x8093f,_0x391eca,_0x3b3d55){VoiceQueueEvents[_0x59e8('0x3')](_0x21dc6b+':'+_0x8093f['id'],_0x8093f);VoiceQueueEvents[_0x59e8('0x3')](_0x21dc6b,_0x8093f);_0x3b3d55(null);};}for(var e in events){if(events[_0x59e8('0x4')](e)){var event=events[e];VoiceQueue[_0x59e8('0x5')](e,emitEvent(event));}}module[_0x59e8('0x6')]=VoiceQueueEvents;
\ No newline at end of file
index fb7ca42..52c6fda 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa9e0=['../../config/environment','./voiceQueue.attributes','exports','define','VoiceQueue','lodash','util','../../config/logger','bluebird','path','rimraf'];(function(_0xf6e29e,_0x4d2ee5){var _0x133175=function(_0x25a352){while(--_0x25a352){_0xf6e29e['push'](_0xf6e29e['shift']());}};_0x133175(++_0x4d2ee5);}(_0xa9e0,0x123));var _0x0a9e=function(_0x6c993a,_0x5ea3ab){_0x6c993a=_0x6c993a-0x0;var _0x27f547=_0xa9e0[_0x6c993a];return _0x27f547;};'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':'voice_queues','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x3e74=['exports','VoiceQueue','voice_queues','lodash','../../config/logger','api','moment','path','../../config/environment','./voiceQueue.attributes'];(function(_0x128239,_0x30a688){var _0x5543df=function(_0x251c03){while(--_0x251c03){_0x128239['push'](_0x128239['shift']());}};_0x5543df(++_0x30a688);}(_0x3e74,0x175));var _0x43e7=function(_0x9fc2a5,_0x253698){_0x9fc2a5=_0x9fc2a5-0x0;var _0x28f852=_0x3e74[_0x9fc2a5];return _0x28f852;};'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
index e39faf1..b5b75d8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x06f6=['stringify','catch','ShowVoiceQueue','VoiceQueue','find','raw','moment','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/environment','jayson/promise','client','http','redis','defaults','localhost','./voiceQueue.socket','register','request','then','info','VoiceQueue,\x20%s,\x20%s','request\x20sent','debug','VoiceQueue,\x20%s,\x20%s,\x20%s','error','message','result','GetVoiceQueue','findAll','options','where','attributes','map','model','include'];(function(_0x167fac,_0x59d7b1){var _0x469974=function(_0x8dddcb){while(--_0x8dddcb){_0x167fac['push'](_0x167fac['shift']());}};_0x469974(++_0x59d7b1);}(_0x06f6,0x136));var _0x606f=function(_0x4063a3,_0x1707db){_0x4063a3=_0x4063a3-0x0;var _0x1ff7d5=_0x06f6[_0x4063a3];return _0x1ff7d5;};'use strict';var _=require('lodash');var util=require('util');var moment=require(_0x606f('0x0'));var BPromise=require('bluebird');var rs=require(_0x606f('0x1'));var fs=require('fs');var Redis=require(_0x606f('0x2'));var db=require(_0x606f('0x3'))['db'];var utils=require(_0x606f('0x4'));var logger=require('../../config/logger')('rpc');var config=require(_0x606f('0x5'));var jayson=require(_0x606f('0x6'));var client=jayson[_0x606f('0x7')][_0x606f('0x8')]({'port':0x232a});config[_0x606f('0x9')]=_[_0x606f('0xa')](config[_0x606f('0x9')],{'host':_0x606f('0xb'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0x606f('0x9')]));require(_0x606f('0xc'))[_0x606f('0xd')](socket);function respondWithRpcPromise(_0x1f38ab,_0x4146d3,_0x2f1aad){return new BPromise(function(_0x26a257,_0x41f1f0){return client[_0x606f('0xe')](_0x1f38ab,_0x2f1aad)[_0x606f('0xf')](function(_0x5e11e9){logger[_0x606f('0x10')](_0x606f('0x11'),_0x4146d3,_0x606f('0x12'));logger[_0x606f('0x13')](_0x606f('0x14'),_0x4146d3,_0x606f('0x12'),JSON['stringify'](_0x5e11e9));if(_0x5e11e9['error']){if(_0x5e11e9[_0x606f('0x15')]['code']===0x1f4){logger[_0x606f('0x15')](_0x606f('0x11'),_0x4146d3,_0x5e11e9[_0x606f('0x15')][_0x606f('0x16')]);return _0x41f1f0(_0x5e11e9['error'][_0x606f('0x16')]);}logger[_0x606f('0x15')](_0x606f('0x11'),_0x4146d3,_0x5e11e9[_0x606f('0x15')][_0x606f('0x16')]);return _0x26a257(_0x5e11e9['error'][_0x606f('0x16')]);}else{logger['info'](_0x606f('0x11'),_0x4146d3,'request\x20sent');_0x26a257(_0x5e11e9[_0x606f('0x17')]['message']);}})['catch'](function(_0x4a4c60){logger[_0x606f('0x15')](_0x606f('0x11'),_0x4146d3,_0x4a4c60);_0x41f1f0(_0x4a4c60);});});}exports[_0x606f('0x18')]=function(_0x2c0308){var _0x1e57e3=this;return new Promise(function(_0x10a9c0,_0x34c4cb){return db['VoiceQueue'][_0x606f('0x19')]({'raw':_0x2c0308[_0x606f('0x1a')]?_0x2c0308['options']['raw']===undefined?!![]:![]:!![],'where':_0x2c0308[_0x606f('0x1a')]?_0x2c0308[_0x606f('0x1a')][_0x606f('0x1b')]||null:null,'attributes':_0x2c0308[_0x606f('0x1a')]?_0x2c0308[_0x606f('0x1a')][_0x606f('0x1c')]||null:null,'limit':_0x2c0308[_0x606f('0x1a')]?_0x2c0308[_0x606f('0x1a')]['limit']||null:null,'include':_0x2c0308[_0x606f('0x1a')]?_0x2c0308['options']['include']?_[_0x606f('0x1d')](_0x2c0308[_0x606f('0x1a')]['include'],function(_0x56e119){return{'model':db[_0x56e119[_0x606f('0x1e')]],'as':_0x56e119['as'],'attributes':_0x56e119['attributes'],'include':_0x56e119[_0x606f('0x1f')]?_[_0x606f('0x1d')](_0x56e119[_0x606f('0x1f')],function(_0x281088){return{'model':db[_0x281088[_0x606f('0x1e')]],'as':_0x281088['as'],'attributes':_0x281088[_0x606f('0x1c')],'include':_0x281088[_0x606f('0x1f')]?_[_0x606f('0x1d')](_0x281088['include'],function(_0x57b84a){return{'model':db[_0x57b84a[_0x606f('0x1e')]],'as':_0x57b84a['as'],'attributes':_0x57b84a[_0x606f('0x1c')]};}):[]};}):[]};}):[]:[]})[_0x606f('0xf')](function(_0x18c575){logger['info']('GetVoiceQueue',_0x2c0308);logger[_0x606f('0x13')](_0x606f('0x18'),_0x2c0308,JSON[_0x606f('0x20')](_0x18c575));_0x10a9c0(_0x18c575);})[_0x606f('0x21')](function(_0x261c1f){logger[_0x606f('0x15')](_0x606f('0x18'),_0x261c1f['message'],_0x2c0308);_0x34c4cb(_0x1e57e3['error'](0x1f4,_0x261c1f[_0x606f('0x16')]));});});};exports[_0x606f('0x22')]=function(_0x59684d){var _0x287a23=this;return new Promise(function(_0x57c731,_0x4eeb85){return db[_0x606f('0x23')][_0x606f('0x24')]({'raw':_0x59684d[_0x606f('0x1a')]?_0x59684d[_0x606f('0x1a')][_0x606f('0x25')]===undefined?!![]:![]:!![],'where':_0x59684d[_0x606f('0x1a')]?_0x59684d['options'][_0x606f('0x1b')]||null:null,'attributes':_0x59684d[_0x606f('0x1a')]?_0x59684d[_0x606f('0x1a')][_0x606f('0x1c')]||null:null,'include':_0x59684d['options']?_0x59684d[_0x606f('0x1a')][_0x606f('0x1f')]?_[_0x606f('0x1d')](_0x59684d[_0x606f('0x1a')][_0x606f('0x1f')],function(_0x2d8be5){return{'model':db[_0x2d8be5[_0x606f('0x1e')]],'as':_0x2d8be5['as'],'attributes':_0x2d8be5[_0x606f('0x1c')],'include':_0x2d8be5[_0x606f('0x1f')]?_[_0x606f('0x1d')](_0x2d8be5['include'],function(_0x5e3a57){return{'model':db[_0x5e3a57['model']],'as':_0x5e3a57['as'],'attributes':_0x5e3a57['attributes'],'include':_0x5e3a57[_0x606f('0x1f')]?_[_0x606f('0x1d')](_0x5e3a57[_0x606f('0x1f')],function(_0x305733){return{'model':db[_0x305733['model']],'as':_0x305733['as'],'attributes':_0x305733[_0x606f('0x1c')]};}):[]};}):[]};}):[]:[]})[_0x606f('0xf')](function(_0x3ce768){logger[_0x606f('0x10')](_0x606f('0x22'),_0x59684d);logger[_0x606f('0x13')](_0x606f('0x22'),_0x59684d,JSON['stringify'](_0x3ce768));_0x57c731(_0x3ce768);})[_0x606f('0x21')](function(_0x20623b){logger[_0x606f('0x15')](_0x606f('0x22'),_0x20623b[_0x606f('0x16')],_0x59684d);_0x4eeb85(_0x287a23['error'](0x1f4,_0x20623b[_0x606f('0x16')]));});});};
\ No newline at end of file
+var _0x6423=['attributes','limit','include','model','map','stringify','ShowVoiceQueue','find','debug','lodash','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','http','redis','defaults','socket.io-emitter','./voiceQueue.socket','register','request','then','info','VoiceQueue,\x20%s,\x20%s','request\x20sent','VoiceQueue,\x20%s,\x20%s,\x20%s','error','code','message','result','catch','GetVoiceQueue','VoiceQueue','options','raw','where'];(function(_0x4d07cc,_0x587613){var _0x42de3b=function(_0x201f78){while(--_0x201f78){_0x4d07cc['push'](_0x4d07cc['shift']());}};_0x42de3b(++_0x587613);}(_0x6423,0x1d7));var _0x3642=function(_0x350032,_0x379799){_0x350032=_0x350032-0x0;var _0x46505e=_0x6423[_0x350032];return _0x46505e;};'use strict';var _=require(_0x3642('0x0'));var util=require('util');var moment=require(_0x3642('0x1'));var BPromise=require(_0x3642('0x2'));var rs=require(_0x3642('0x3'));var fs=require('fs');var Redis=require(_0x3642('0x4'));var db=require(_0x3642('0x5'))['db'];var utils=require(_0x3642('0x6'));var logger=require(_0x3642('0x7'))(_0x3642('0x8'));var config=require(_0x3642('0x9'));var jayson=require(_0x3642('0xa'));var client=jayson['client'][_0x3642('0xb')]({'port':0x232a});config[_0x3642('0xc')]=_[_0x3642('0xd')](config[_0x3642('0xc')],{'host':'localhost','port':0x18eb});var socket=require(_0x3642('0xe'))(new Redis(config[_0x3642('0xc')]));require(_0x3642('0xf'))[_0x3642('0x10')](socket);function respondWithRpcPromise(_0xe83ed6,_0x1a3fae,_0x2a8b1d){return new BPromise(function(_0x380481,_0x2c2577){return client[_0x3642('0x11')](_0xe83ed6,_0x2a8b1d)[_0x3642('0x12')](function(_0x13b3df){logger[_0x3642('0x13')](_0x3642('0x14'),_0x1a3fae,_0x3642('0x15'));logger['debug'](_0x3642('0x16'),_0x1a3fae,'request\x20sent',JSON['stringify'](_0x13b3df));if(_0x13b3df[_0x3642('0x17')]){if(_0x13b3df[_0x3642('0x17')][_0x3642('0x18')]===0x1f4){logger[_0x3642('0x17')](_0x3642('0x14'),_0x1a3fae,_0x13b3df['error'][_0x3642('0x19')]);return _0x2c2577(_0x13b3df['error'][_0x3642('0x19')]);}logger[_0x3642('0x17')](_0x3642('0x14'),_0x1a3fae,_0x13b3df[_0x3642('0x17')][_0x3642('0x19')]);return _0x380481(_0x13b3df['error'][_0x3642('0x19')]);}else{logger[_0x3642('0x13')](_0x3642('0x14'),_0x1a3fae,_0x3642('0x15'));_0x380481(_0x13b3df[_0x3642('0x1a')][_0x3642('0x19')]);}})[_0x3642('0x1b')](function(_0x194217){logger[_0x3642('0x17')]('VoiceQueue,\x20%s,\x20%s',_0x1a3fae,_0x194217);_0x2c2577(_0x194217);});});}exports[_0x3642('0x1c')]=function(_0x5e9c65){var _0x4cba05=this;return new Promise(function(_0xa68703,_0x3584fd){return db[_0x3642('0x1d')]['findAll']({'raw':_0x5e9c65[_0x3642('0x1e')]?_0x5e9c65[_0x3642('0x1e')][_0x3642('0x1f')]===undefined?!![]:![]:!![],'where':_0x5e9c65[_0x3642('0x1e')]?_0x5e9c65['options'][_0x3642('0x20')]||null:null,'attributes':_0x5e9c65['options']?_0x5e9c65[_0x3642('0x1e')][_0x3642('0x21')]||null:null,'limit':_0x5e9c65[_0x3642('0x1e')]?_0x5e9c65[_0x3642('0x1e')][_0x3642('0x22')]||null:null,'include':_0x5e9c65['options']?_0x5e9c65['options']['include']?_['map'](_0x5e9c65[_0x3642('0x1e')][_0x3642('0x23')],function(_0x342f39){return{'model':db[_0x342f39[_0x3642('0x24')]],'as':_0x342f39['as'],'attributes':_0x342f39[_0x3642('0x21')],'include':_0x342f39[_0x3642('0x23')]?_[_0x3642('0x25')](_0x342f39[_0x3642('0x23')],function(_0x1f09b4){return{'model':db[_0x1f09b4[_0x3642('0x24')]],'as':_0x1f09b4['as'],'attributes':_0x1f09b4[_0x3642('0x21')],'include':_0x1f09b4[_0x3642('0x23')]?_[_0x3642('0x25')](_0x1f09b4[_0x3642('0x23')],function(_0x510145){return{'model':db[_0x510145[_0x3642('0x24')]],'as':_0x510145['as'],'attributes':_0x510145[_0x3642('0x21')]};}):[]};}):[]};}):[]:[]})['then'](function(_0x4b63a2){logger[_0x3642('0x13')](_0x3642('0x1c'),_0x5e9c65);logger['debug'](_0x3642('0x1c'),_0x5e9c65,JSON[_0x3642('0x26')](_0x4b63a2));_0xa68703(_0x4b63a2);})[_0x3642('0x1b')](function(_0x109068){logger[_0x3642('0x17')]('GetVoiceQueue',_0x109068[_0x3642('0x19')],_0x5e9c65);_0x3584fd(_0x4cba05[_0x3642('0x17')](0x1f4,_0x109068[_0x3642('0x19')]));});});};exports[_0x3642('0x27')]=function(_0x31920f){var _0x5cbe3f=this;return new Promise(function(_0x1665ac,_0x3d67d3){return db['VoiceQueue'][_0x3642('0x28')]({'raw':_0x31920f['options']?_0x31920f[_0x3642('0x1e')][_0x3642('0x1f')]===undefined?!![]:![]:!![],'where':_0x31920f[_0x3642('0x1e')]?_0x31920f[_0x3642('0x1e')][_0x3642('0x20')]||null:null,'attributes':_0x31920f['options']?_0x31920f[_0x3642('0x1e')][_0x3642('0x21')]||null:null,'include':_0x31920f[_0x3642('0x1e')]?_0x31920f['options']['include']?_[_0x3642('0x25')](_0x31920f[_0x3642('0x1e')][_0x3642('0x23')],function(_0x1e50af){return{'model':db[_0x1e50af[_0x3642('0x24')]],'as':_0x1e50af['as'],'attributes':_0x1e50af[_0x3642('0x21')],'include':_0x1e50af[_0x3642('0x23')]?_[_0x3642('0x25')](_0x1e50af[_0x3642('0x23')],function(_0x21983f){return{'model':db[_0x21983f[_0x3642('0x24')]],'as':_0x21983f['as'],'attributes':_0x21983f[_0x3642('0x21')],'include':_0x21983f[_0x3642('0x23')]?_['map'](_0x21983f[_0x3642('0x23')],function(_0x2f5366){return{'model':db[_0x2f5366[_0x3642('0x24')]],'as':_0x2f5366['as'],'attributes':_0x2f5366['attributes']};}):[]};}):[]};}):[]:[]})[_0x3642('0x12')](function(_0x3d3ac7){logger[_0x3642('0x13')](_0x3642('0x27'),_0x31920f);logger[_0x3642('0x29')](_0x3642('0x27'),_0x31920f,JSON[_0x3642('0x26')](_0x3d3ac7));_0x1665ac(_0x3d3ac7);})[_0x3642('0x1b')](function(_0x4094f6){logger[_0x3642('0x17')](_0x3642('0x27'),_0x4094f6[_0x3642('0x19')],_0x31920f);_0x3d67d3(_0x5cbe3f['error'](0x1f4,_0x4094f6[_0x3642('0x19')]));});});};
\ No newline at end of file
index b87d2cb..95a4d2b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x32ee=['removeListener','register','voiceQueue:','save','emit'];(function(_0x1104b1,_0x12f072){var _0x489c26=function(_0x1f76d2){while(--_0x1f76d2){_0x1104b1['push'](_0x1104b1['shift']());}};_0x489c26(++_0x12f072);}(_0x32ee,0x76));var _0xe32e=function(_0x58fa79,_0x5f1b52){_0x58fa79=_0x58fa79-0x0;var _0x124bed=_0x32ee[_0x58fa79];return _0x124bed;};'use strict';var VoiceQueueEvents=require('./voiceQueue.events');var events=[_0xe32e('0x0'),'remove','update'];function createListener(_0x38afb8,_0x3ae548){return function(_0x53dc6a){_0x3ae548[_0xe32e('0x1')](_0x38afb8,_0x53dc6a);};}function removeListener(_0x1e57a8,_0x5f508d){return function(){VoiceQueueEvents[_0xe32e('0x2')](_0x1e57a8,_0x5f508d);};}exports[_0xe32e('0x3')]=function(_0x200967){for(var _0x5e7bc0=0x0,_0xa42cf3=events['length'];_0x5e7bc0<_0xa42cf3;_0x5e7bc0++){var _0x37f7da=events[_0x5e7bc0];var _0x3e1141=createListener(_0xe32e('0x4')+_0x37f7da,_0x200967);VoiceQueueEvents['on'](_0x37f7da,_0x3e1141);}};
\ No newline at end of file
+var _0xb02a=['length','./voiceQueue.events','save','remove','emit','register'];(function(_0x5d70fb,_0x4e1e99){var _0x36f5de=function(_0x332d58){while(--_0x332d58){_0x5d70fb['push'](_0x5d70fb['shift']());}};_0x36f5de(++_0x4e1e99);}(_0xb02a,0x19f));var _0xab02=function(_0x1fb605,_0x5acc80){_0x1fb605=_0x1fb605-0x0;var _0x2fe580=_0xb02a[_0x1fb605];return _0x2fe580;};'use strict';var VoiceQueueEvents=require(_0xab02('0x0'));var events=[_0xab02('0x1'),_0xab02('0x2'),'update'];function createListener(_0x1a5259,_0x2442ec){return function(_0x124b63){_0x2442ec[_0xab02('0x3')](_0x1a5259,_0x124b63);};}function removeListener(_0x4e7e01,_0x438e0b){return function(){VoiceQueueEvents['removeListener'](_0x4e7e01,_0x438e0b);};}exports[_0xab02('0x4')]=function(_0x4c7050){for(var _0x9b1985=0x0,_0x4fad3c=events[_0xab02('0x5')];_0x9b1985<_0x4fad3c;_0x9b1985++){var _0x51e7df=events[_0x9b1985];var _0x4ae43c=createListener('voiceQueue:'+_0x51e7df,_0x4c7050);VoiceQueueEvents['on'](_0x51e7df,_0x4ae43c);}};
\ No newline at end of file
index a0627fd..28cd1c1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8a21=['/describe','describe','/index','getVoiceQueuesReport','get','/:id','isAuthenticated','show','post','create','put','destroy','exports','util','path','connect-timeout','express','Router','../../components/auth/service','../../config/environment','./voiceQueueReport.controller','index'];(function(_0x13900b,_0x4fa588){var _0xccf4b6=function(_0x4c974e){while(--_0x4c974e){_0x13900b['push'](_0x13900b['shift']());}};_0xccf4b6(++_0x4fa588);}(_0x8a21,0xbd));var _0x18a2=function(_0x5566b7,_0x4e9e2c){_0x5566b7=_0x5566b7-0x0;var _0x1c7ea7=_0x8a21[_0x5566b7];return _0x1c7ea7;};'use strict';var multer=require('multer');var util=require(_0x18a2('0x0'));var path=require(_0x18a2('0x1'));var timeout=require(_0x18a2('0x2'));var express=require(_0x18a2('0x3'));var router=express[_0x18a2('0x4')]();var fs_extra=require('fs-extra');var auth=require(_0x18a2('0x5'));var interaction=require('../../components/interaction/service');var config=require(_0x18a2('0x6'));var controller=require(_0x18a2('0x7'));router['get']('/',auth['isAuthenticated'](),controller[_0x18a2('0x8')]);router['get'](_0x18a2('0x9'),auth['isAuthenticated'](),controller[_0x18a2('0xa')]);router['get'](_0x18a2('0xb'),auth['isAuthenticated'](),controller[_0x18a2('0xc')]);router[_0x18a2('0xd')](_0x18a2('0xe'),auth[_0x18a2('0xf')](),controller[_0x18a2('0x10')]);router[_0x18a2('0x11')]('/',auth[_0x18a2('0xf')](),controller[_0x18a2('0x12')]);router[_0x18a2('0x13')](_0x18a2('0xe'),auth[_0x18a2('0xf')](),controller['update']);router['delete']('/:id',auth[_0x18a2('0xf')](),controller[_0x18a2('0x14')]);module[_0x18a2('0x15')]=router;
\ No newline at end of file
+var _0x0d50=['isAuthenticated','index','/describe','describe','/index','getVoiceQueuesReport','/:id','show','post','put','update','delete','destroy','exports','multer','util','path','express','Router','../../components/auth/service','../../components/interaction/service','../../config/environment','./voiceQueueReport.controller','get'];(function(_0x3f2ff0,_0x3af4fa){var _0x511a25=function(_0x2c0ca4){while(--_0x2c0ca4){_0x3f2ff0['push'](_0x3f2ff0['shift']());}};_0x511a25(++_0x3af4fa);}(_0x0d50,0xce));var _0x00d5=function(_0x37c054,_0x1cf983){_0x37c054=_0x37c054-0x0;var _0x20e5ef=_0x0d50[_0x37c054];return _0x20e5ef;};'use strict';var multer=require(_0x00d5('0x0'));var util=require(_0x00d5('0x1'));var path=require(_0x00d5('0x2'));var timeout=require('connect-timeout');var express=require(_0x00d5('0x3'));var router=express[_0x00d5('0x4')]();var fs_extra=require('fs-extra');var auth=require(_0x00d5('0x5'));var interaction=require(_0x00d5('0x6'));var config=require(_0x00d5('0x7'));var controller=require(_0x00d5('0x8'));router[_0x00d5('0x9')]('/',auth[_0x00d5('0xa')](),controller[_0x00d5('0xb')]);router['get'](_0x00d5('0xc'),auth[_0x00d5('0xa')](),controller[_0x00d5('0xd')]);router['get'](_0x00d5('0xe'),auth[_0x00d5('0xa')](),controller[_0x00d5('0xf')]);router[_0x00d5('0x9')](_0x00d5('0x10'),auth[_0x00d5('0xa')](),controller[_0x00d5('0x11')]);router[_0x00d5('0x12')]('/',auth[_0x00d5('0xa')](),controller['create']);router[_0x00d5('0x13')]('/:id',auth[_0x00d5('0xa')](),controller[_0x00d5('0x14')]);router[_0x00d5('0x15')](_0x00d5('0x10'),auth[_0x00d5('0xa')](),controller[_0x00d5('0x16')]);module[_0x00d5('0x17')]=router;
\ No newline at end of file
index e329c65..ee70af0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2290=['diff','holdtime','INTEGER','BOOLEAN','exports','STRING','DATE','getDataValue','format','YYYY-MM-DD\x20HH:mm:ss'];(function(_0x452fc4,_0xbd75c2){var _0x2aaeb0=function(_0x42de3e){while(--_0x42de3e){_0x452fc4['push'](_0x452fc4['shift']());}};_0x2aaeb0(++_0xbd75c2);}(_0x2290,0x158));var _0x0229=function(_0x38e318,_0x2b3fb0){_0x38e318=_0x38e318-0x0;var _0x5215a8=_0x2290[_0x38e318];return _0x5215a8;};'use strict';var Sequelize=require('sequelize');var moment=require('moment');module[_0x0229('0x0')]={'type':{'type':Sequelize[_0x0229('0x1')]},'uniqueid':{'type':Sequelize[_0x0229('0x1')]},'calleridnum':{'type':Sequelize['STRING']},'calleridname':{'type':Sequelize[_0x0229('0x1')]},'queue':{'type':Sequelize[_0x0229('0x1')]},'queuecallerjoinAt':{'type':Sequelize[_0x0229('0x2')]},'queuecallerleaveAt':{'type':Sequelize[_0x0229('0x2')],'set':function(_0x21a4ad){var _0x1a89f9=moment(_0x21a4ad);var _0x2f3fc6=moment(this[_0x0229('0x3')]('queuecallerjoinAt'))[_0x0229('0x4')](_0x0229('0x5'));var _0x5a501c=_0x1a89f9[_0x0229('0x6')](_0x2f3fc6,'seconds');this['setDataValue']('queuecallerleaveAt',_0x21a4ad);this['setDataValue'](_0x0229('0x7'),_0x5a501c||null);}},'position':{'type':Sequelize[_0x0229('0x8')]},'count':{'type':Sequelize[_0x0229('0x8')]},'queuecallerabandon':{'type':Sequelize[_0x0229('0x9')],'defaultValue':![]},'queuecallerabandonAt':{'type':Sequelize[_0x0229('0x2')]},'queuecallercomplete':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'queuecallercompleteAt':{'type':Sequelize[_0x0229('0x2')]},'queuecallerexit':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'queuecallerexitAt':{'type':Sequelize['DATE']},'queuecallerexitreason':{'type':Sequelize[_0x0229('0x1')],'comment':'COMPLETEDBYCALLER,\x20COMPLETEDBYAGENT,\x20FORWARDTRANFER,\x20BLINDTRANSFER,\x20ATTENDEDTRANSFER,\x20EXITWITHKEY,\x20TIMEOUT'},'originalposition':{'type':Sequelize[_0x0229('0x8')]},'channel':{'type':Sequelize[_0x0229('0x1')]},'connectedlinenum':{'type':Sequelize[_0x0229('0x1')]},'connectedlinename':{'type':Sequelize[_0x0229('0x1')]},'accountcode':{'type':Sequelize[_0x0229('0x1')]},'context':{'type':Sequelize['STRING']},'exten':{'type':Sequelize[_0x0229('0x1')]},'priority':{'type':Sequelize[_0x0229('0x1')]},'holdtime':{'type':Sequelize[_0x0229('0x8')]},'mohtime':{'type':Sequelize[_0x0229('0x8')],'defaultValue':0x0},'assigned':{'type':Sequelize[_0x0229('0x9')],'defaultValue':![]},'lastAssignedTo':{'type':Sequelize['STRING']},'transfer':{'type':Sequelize[_0x0229('0x9')],'defaultValue':![]},'transfertype':{'type':Sequelize[_0x0229('0x1')],'comment':'FORWARD,\x20BLIND,\x20ATTENDED'},'transferexten':{'type':Sequelize[_0x0229('0x1')]},'transferuniqueid':{'type':Sequelize['STRING']},'disposition':{'type':Sequelize['STRING']},'secondDisposition':{'type':Sequelize[_0x0229('0x1')]},'thirdDisposition':{'type':Sequelize[_0x0229('0x1')]},'queuecallerenterreason':{'type':Sequelize['INTEGER'],'defaultValue':0x0}};
\ No newline at end of file
+var _0x054c=['INTEGER','BOOLEAN','COMPLETEDBYCALLER,\x20COMPLETEDBYAGENT,\x20FORWARDTRANFER,\x20BLINDTRANSFER,\x20ATTENDEDTRANSFER,\x20EXITWITHKEY,\x20TIMEOUT','FORWARD,\x20BLIND,\x20ATTENDED','sequelize','moment','exports','STRING','DATE','getDataValue','queuecallerjoinAt','format','diff','seconds','holdtime'];(function(_0x289bea,_0xb4241a){var _0x137f26=function(_0x3969ac){while(--_0x3969ac){_0x289bea['push'](_0x289bea['shift']());}};_0x137f26(++_0xb4241a);}(_0x054c,0x18a));var _0xc054=function(_0x2d1857,_0x3e81c8){_0x2d1857=_0x2d1857-0x0;var _0xe82f9e=_0x054c[_0x2d1857];return _0xe82f9e;};'use strict';var Sequelize=require(_0xc054('0x0'));var moment=require(_0xc054('0x1'));module[_0xc054('0x2')]={'type':{'type':Sequelize[_0xc054('0x3')]},'uniqueid':{'type':Sequelize['STRING']},'calleridnum':{'type':Sequelize[_0xc054('0x3')]},'calleridname':{'type':Sequelize[_0xc054('0x3')]},'queue':{'type':Sequelize[_0xc054('0x3')]},'queuecallerjoinAt':{'type':Sequelize['DATE']},'queuecallerleaveAt':{'type':Sequelize[_0xc054('0x4')],'set':function(_0x175eab){var _0x448d0d=moment(_0x175eab);var _0x597fb9=moment(this[_0xc054('0x5')](_0xc054('0x6')))[_0xc054('0x7')]('YYYY-MM-DD\x20HH:mm:ss');var _0x5b13b=_0x448d0d[_0xc054('0x8')](_0x597fb9,_0xc054('0x9'));this['setDataValue']('queuecallerleaveAt',_0x175eab);this['setDataValue'](_0xc054('0xa'),_0x5b13b||null);}},'position':{'type':Sequelize[_0xc054('0xb')]},'count':{'type':Sequelize[_0xc054('0xb')]},'queuecallerabandon':{'type':Sequelize[_0xc054('0xc')],'defaultValue':![]},'queuecallerabandonAt':{'type':Sequelize[_0xc054('0x4')]},'queuecallercomplete':{'type':Sequelize[_0xc054('0xc')],'defaultValue':![]},'queuecallercompleteAt':{'type':Sequelize[_0xc054('0x4')]},'queuecallerexit':{'type':Sequelize[_0xc054('0xc')],'defaultValue':![]},'queuecallerexitAt':{'type':Sequelize['DATE']},'queuecallerexitreason':{'type':Sequelize['STRING'],'comment':_0xc054('0xd')},'originalposition':{'type':Sequelize[_0xc054('0xb')]},'channel':{'type':Sequelize['STRING']},'connectedlinenum':{'type':Sequelize[_0xc054('0x3')]},'connectedlinename':{'type':Sequelize['STRING']},'accountcode':{'type':Sequelize['STRING']},'context':{'type':Sequelize['STRING']},'exten':{'type':Sequelize[_0xc054('0x3')]},'priority':{'type':Sequelize[_0xc054('0x3')]},'holdtime':{'type':Sequelize[_0xc054('0xb')]},'mohtime':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'assigned':{'type':Sequelize[_0xc054('0xc')],'defaultValue':![]},'lastAssignedTo':{'type':Sequelize['STRING']},'transfer':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'transfertype':{'type':Sequelize[_0xc054('0x3')],'comment':_0xc054('0xe')},'transferexten':{'type':Sequelize[_0xc054('0x3')]},'transferuniqueid':{'type':Sequelize[_0xc054('0x3')]},'disposition':{'type':Sequelize[_0xc054('0x3')]},'secondDisposition':{'type':Sequelize[_0xc054('0x3')]},'thirdDisposition':{'type':Sequelize['STRING']},'queuecallerenterreason':{'type':Sequelize['INTEGER'],'defaultValue':0x0}};
\ No newline at end of file
index a250190..5bcafdd 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4fb3=['update','then','destroy','sendStatus','error','stack','name','send','index','VoiceQueueReport','type','key','model','map','query','keys','intersection','attributes','fields','length','nolimit','sort','where','filters','VIRTUAL','options','includeAll','include','findAll','rows','catch','show','rawAttributes','merge','find','body','params','describe','hasOwnProperty','filter','getVoiceQueuesReport','eml-format','rimraf','fast-json-patch','request-promise','moment','mustache','util','sox','ejs','fs-extra','squel','crypto','jsforce','desk.js','to-csv','querystring','ioredis','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','redis','defaults','localhost','./voiceQueueReport.socket','register','status','end','json','offset','limit','count','set','Content-Range','apply','reject'];(function(_0x4ddcdf,_0x2da2e3){var _0x39af0d=function(_0x572246){while(--_0x572246){_0x4ddcdf['push'](_0x4ddcdf['shift']());}};_0x39af0d(++_0x2da2e3);}(_0x4fb3,0x1b9));var _0x34fb=function(_0x48a394,_0x440f98){_0x48a394=_0x48a394-0x0;var _0x56c7e8=_0x4fb3[_0x48a394];return _0x56c7e8;};'use strict';var emlformat=require(_0x34fb('0x0'));var rimraf=require(_0x34fb('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0x34fb('0x2'));var rp=require(_0x34fb('0x3'));var moment=require(_0x34fb('0x4'));var BPromise=require('bluebird');var Mustache=require(_0x34fb('0x5'));var util=require(_0x34fb('0x6'));var path=require('path');var sox=require(_0x34fb('0x7'));var csv=require('to-csv');var ejs=require(_0x34fb('0x8'));var fs=require('fs');var fs_extra=require(_0x34fb('0x9'));var _=require('lodash');var squel=require(_0x34fb('0xa'));var crypto=require(_0x34fb('0xb'));var jsforce=require(_0x34fb('0xc'));var deskjs=require(_0x34fb('0xd'));var toCsv=require(_0x34fb('0xe'));var querystring=require(_0x34fb('0xf'));var Papa=require('papaparse');var Redis=require(_0x34fb('0x10'));var authService=require('../../components/auth/service');var qs=require('../../components/parsers/qs');var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x34fb('0x11'));var logger=require(_0x34fb('0x12'))(_0x34fb('0x13'));var utils=require(_0x34fb('0x14'));var config=require(_0x34fb('0x15'));var licenseUtil=require(_0x34fb('0x16'));var db=require(_0x34fb('0x17'))['db'];config[_0x34fb('0x18')]=_[_0x34fb('0x19')](config[_0x34fb('0x18')],{'host':_0x34fb('0x1a'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config['redis']));require(_0x34fb('0x1b'))[_0x34fb('0x1c')](socket);function respondWithStatusCode(_0x212558,_0x2f715f){_0x2f715f=_0x2f715f||0xcc;return function(_0x2eba58){if(_0x2eba58){return _0x212558['sendStatus'](_0x2f715f);}return _0x212558[_0x34fb('0x1d')](_0x2f715f)[_0x34fb('0x1e')]();};}function respondWithResult(_0x3a54df,_0x2b8f2a){_0x2b8f2a=_0x2b8f2a||0xc8;return function(_0x3881a9){if(_0x3881a9){return _0x3a54df[_0x34fb('0x1d')](_0x2b8f2a)[_0x34fb('0x1f')](_0x3881a9);}};}function respondWithFilteredResult(_0x323e8f,_0x5a7340){return function(_0x54fc1b){if(_0x54fc1b){var _0x51ac17=typeof _0x5a7340[_0x34fb('0x20')]==='undefined'&&typeof _0x5a7340[_0x34fb('0x21')]==='undefined';var _0x5a1b35=_0x54fc1b[_0x34fb('0x22')];var _0x46524f=_0x51ac17?0x0:_0x5a7340[_0x34fb('0x20')];var _0x29eb95=_0x51ac17?_0x54fc1b[_0x34fb('0x22')]:_0x5a7340['offset']+_0x5a7340[_0x34fb('0x21')];var _0x1e502c;if(_0x29eb95>=_0x5a1b35){_0x29eb95=_0x5a1b35;_0x1e502c=0xc8;}else{_0x1e502c=0xce;}_0x323e8f[_0x34fb('0x1d')](_0x1e502c);return _0x323e8f[_0x34fb('0x23')](_0x34fb('0x24'),_0x46524f+'-'+_0x29eb95+'/'+_0x5a1b35)[_0x34fb('0x1f')](_0x54fc1b);}return null;};}function patchUpdates(_0xe0386d){return function(_0x4c590b){try{jsonpatch[_0x34fb('0x25')](_0x4c590b,_0xe0386d,!![]);}catch(_0x2ac39e){return BPromise[_0x34fb('0x26')](_0x2ac39e);}return _0x4c590b['save']();};}function saveUpdates(_0x551f30,_0x489789){return function(_0x544750){if(_0x544750){return _0x544750[_0x34fb('0x27')](_0x551f30)[_0x34fb('0x28')](function(_0x5cd8b2){return _0x5cd8b2;});}return null;};}function removeEntity(_0x540d1c,_0x26f555){return function(_0xf0a4e6){if(_0xf0a4e6){return _0xf0a4e6[_0x34fb('0x29')]()[_0x34fb('0x28')](function(){_0x540d1c['status'](0xcc)['end']();});}};}function handleEntityNotFound(_0x2463c4,_0x26e452){return function(_0x155bc1){if(!_0x155bc1){_0x2463c4[_0x34fb('0x2a')](0x194);}return _0x155bc1;};}function handleError(_0x296274,_0x3017a5){_0x3017a5=_0x3017a5||0x1f4;return function(_0x13e3ef){logger[_0x34fb('0x2b')](_0x13e3ef[_0x34fb('0x2c')]);if(_0x13e3ef[_0x34fb('0x2d')]){delete _0x13e3ef['name'];}_0x296274[_0x34fb('0x1d')](_0x3017a5)[_0x34fb('0x2e')](_0x13e3ef);};}exports[_0x34fb('0x2f')]=function(_0x2487d3,_0x224d01){var _0x5dd58b={},_0x4126e7={},_0x2f227e={'count':0x0,'rows':[]};var _0x3193fe=_['map'](db[_0x34fb('0x30')]['rawAttributes'],function(_0x4393c6){return{'name':_0x4393c6['fieldName'],'type':_0x4393c6[_0x34fb('0x31')][_0x34fb('0x32')]};});_0x4126e7[_0x34fb('0x33')]=_[_0x34fb('0x34')](_0x3193fe,_0x34fb('0x2d'));_0x4126e7[_0x34fb('0x35')]=_[_0x34fb('0x36')](_0x2487d3[_0x34fb('0x35')]);_0x4126e7['filters']=_[_0x34fb('0x37')](_0x4126e7[_0x34fb('0x33')],_0x4126e7['query']);_0x5dd58b[_0x34fb('0x38')]=_[_0x34fb('0x37')](_0x4126e7['model'],qs[_0x34fb('0x39')](_0x2487d3['query'][_0x34fb('0x39')]));_0x5dd58b['attributes']=_0x5dd58b['attributes'][_0x34fb('0x3a')]?_0x5dd58b[_0x34fb('0x38')]:_0x4126e7[_0x34fb('0x33')];if(!_0x2487d3[_0x34fb('0x35')]['hasOwnProperty'](_0x34fb('0x3b'))){_0x5dd58b['limit']=qs[_0x34fb('0x21')](_0x2487d3['query']['limit']);_0x5dd58b[_0x34fb('0x20')]=qs[_0x34fb('0x20')](_0x2487d3[_0x34fb('0x35')][_0x34fb('0x20')]);}_0x5dd58b['order']=qs[_0x34fb('0x3c')](_0x2487d3[_0x34fb('0x35')][_0x34fb('0x3c')]);_0x5dd58b[_0x34fb('0x3d')]=qs[_0x34fb('0x3e')](_['pick'](_0x2487d3[_0x34fb('0x35')],_0x4126e7[_0x34fb('0x3e')]),_0x3193fe);if(_0x2487d3['query']['filter']){_0x5dd58b[_0x34fb('0x3d')]=_['merge'](_0x5dd58b[_0x34fb('0x3d')],{'$or':_[_0x34fb('0x34')](_0x3193fe,function(_0x3b4838){if(_0x3b4838['type']!==_0x34fb('0x3f')){var _0x56609a={};_0x56609a[_0x3b4838['name']]={'$like':'%'+_0x2487d3['query']['filter']+'%'};return _0x56609a;}})});}_0x5dd58b=_['merge']({},_0x5dd58b,_0x2487d3[_0x34fb('0x40')]);var _0x552a98={'where':_0x5dd58b[_0x34fb('0x3d')]};return db[_0x34fb('0x30')][_0x34fb('0x22')](_0x552a98)[_0x34fb('0x28')](function(_0x14249b){_0x2f227e[_0x34fb('0x22')]=_0x14249b;if(_0x2487d3[_0x34fb('0x35')][_0x34fb('0x41')]){_0x5dd58b[_0x34fb('0x42')]=[{'all':!![]}];}return db[_0x34fb('0x30')][_0x34fb('0x43')](_0x5dd58b);})[_0x34fb('0x28')](function(_0x1f43ba){_0x2f227e[_0x34fb('0x44')]=_0x1f43ba;return _0x2f227e;})[_0x34fb('0x28')](respondWithFilteredResult(_0x224d01,_0x5dd58b))[_0x34fb('0x45')](handleError(_0x224d01,null));};exports[_0x34fb('0x46')]=function(_0x1b3b14,_0x558104){var _0x1f73d0={'raw':![],'where':{'id':_0x1b3b14['params']['id']}},_0x4bfb90={};_0x4bfb90[_0x34fb('0x33')]=_['keys'](db[_0x34fb('0x30')][_0x34fb('0x47')]);_0x4bfb90[_0x34fb('0x35')]=_[_0x34fb('0x36')](_0x1b3b14[_0x34fb('0x35')]);_0x4bfb90[_0x34fb('0x3e')]=_[_0x34fb('0x37')](_0x4bfb90[_0x34fb('0x33')],_0x4bfb90[_0x34fb('0x35')]);_0x1f73d0[_0x34fb('0x38')]=_['intersection'](_0x4bfb90[_0x34fb('0x33')],qs[_0x34fb('0x39')](_0x1b3b14['query'][_0x34fb('0x39')]));_0x1f73d0['attributes']=_0x1f73d0[_0x34fb('0x38')][_0x34fb('0x3a')]?_0x1f73d0[_0x34fb('0x38')]:_0x4bfb90[_0x34fb('0x33')];if(_0x1b3b14['query'][_0x34fb('0x41')]){_0x1f73d0[_0x34fb('0x42')]=[{'all':!![]}];}_0x1f73d0=_[_0x34fb('0x48')]({},_0x1f73d0,_0x1b3b14[_0x34fb('0x40')]);return db['VoiceQueueReport'][_0x34fb('0x49')](_0x1f73d0)['then'](handleEntityNotFound(_0x558104,null))[_0x34fb('0x28')](respondWithResult(_0x558104,null))[_0x34fb('0x45')](handleError(_0x558104,null));};exports['create']=function(_0x141009,_0x4a2763){return db['VoiceQueueReport']['create'](_0x141009['body'],{})[_0x34fb('0x28')](respondWithResult(_0x4a2763,0xc9))['catch'](handleError(_0x4a2763,null));};exports[_0x34fb('0x27')]=function(_0x129882,_0x3fae78){if(_0x129882['body']['id']){delete _0x129882[_0x34fb('0x4a')]['id'];}return db[_0x34fb('0x30')][_0x34fb('0x49')]({'where':{'id':_0x129882[_0x34fb('0x4b')]['id']}})[_0x34fb('0x28')](handleEntityNotFound(_0x3fae78,null))[_0x34fb('0x28')](saveUpdates(_0x129882[_0x34fb('0x4a')],null))[_0x34fb('0x28')](respondWithResult(_0x3fae78,null))[_0x34fb('0x45')](handleError(_0x3fae78,null));};exports[_0x34fb('0x29')]=function(_0x525f6e,_0x5e913f){return db[_0x34fb('0x30')]['find']({'where':{'id':_0x525f6e[_0x34fb('0x4b')]['id']}})['then'](handleEntityNotFound(_0x5e913f,null))[_0x34fb('0x28')](removeEntity(_0x5e913f,null))[_0x34fb('0x45')](handleError(_0x5e913f,null));};exports[_0x34fb('0x4c')]=function(_0x43a8df,_0x3a4e1e){return db['VoiceQueueReport'][_0x34fb('0x4c')]()['then'](respondWithResult(_0x3a4e1e,null))[_0x34fb('0x45')](handleError(_0x3a4e1e,null));};exports['getVoiceQueuesReport']=function(_0x527b43,_0x3bca90){var _0x2bfe4c={},_0x39b84f={},_0x4958f8={'count':0x0,'rows':[]};_0x39b84f[_0x34fb('0x33')]=_[_0x34fb('0x36')](db['VoiceQueueReport'][_0x34fb('0x47')]);_0x39b84f[_0x34fb('0x35')]=_['keys'](_0x527b43[_0x34fb('0x35')]);_0x39b84f['filters']=_[_0x34fb('0x37')](_0x39b84f[_0x34fb('0x33')],_0x39b84f[_0x34fb('0x35')]);_0x2bfe4c[_0x34fb('0x38')]=_[_0x34fb('0x37')](_0x39b84f[_0x34fb('0x33')],qs[_0x34fb('0x39')](_0x527b43[_0x34fb('0x35')][_0x34fb('0x39')]));_0x2bfe4c[_0x34fb('0x38')]=_0x2bfe4c[_0x34fb('0x38')]['length']?_0x2bfe4c[_0x34fb('0x38')]:_0x39b84f[_0x34fb('0x33')];if(!_0x527b43[_0x34fb('0x35')][_0x34fb('0x4d')]('nolimit')){_0x2bfe4c[_0x34fb('0x21')]=qs[_0x34fb('0x21')](_0x527b43[_0x34fb('0x35')][_0x34fb('0x21')]);_0x2bfe4c[_0x34fb('0x20')]=qs['offset'](_0x527b43['query'][_0x34fb('0x20')]);}_0x2bfe4c['order']=qs[_0x34fb('0x3c')](_0x527b43[_0x34fb('0x35')][_0x34fb('0x3c')]);_0x2bfe4c[_0x34fb('0x3d')]=qs[_0x34fb('0x3e')](_['pick'](_0x527b43['query'],_0x39b84f[_0x34fb('0x3e')]));if(_0x527b43[_0x34fb('0x35')][_0x34fb('0x4e')]){_0x2bfe4c[_0x34fb('0x3d')]=_[_0x34fb('0x48')](_0x2bfe4c['where'],{'$or':_[_0x34fb('0x34')](_0x2bfe4c['attributes'],function(_0x3255c9){var _0x174d9e={};_0x174d9e[_0x3255c9]={'$like':'%'+_0x527b43['query'][_0x34fb('0x4e')]+'%'};return _0x174d9e;})});}_0x2bfe4c=_['merge']({},_0x2bfe4c,_0x527b43[_0x34fb('0x40')]);var _0x566b51={'where':_0x2bfe4c[_0x34fb('0x3d')]};return db[_0x34fb('0x30')][_0x34fb('0x22')](_0x566b51)['then'](function(_0x2394db){_0x4958f8[_0x34fb('0x22')]=_0x2394db;if(_0x527b43['query'][_0x34fb('0x41')]){_0x2bfe4c[_0x34fb('0x42')]=[{'all':!![]}];}return db['VoiceQueueReport']['findAll'](_0x2bfe4c);})[_0x34fb('0x28')](function(_0x3feb87){_0x4958f8['rows']=_0x3feb87;return _0x4958f8;})[_0x34fb('0x28')](respondWithFilteredResult(_0x3bca90,_0x2bfe4c,_0x34fb('0x4f')))[_0x34fb('0x45')](handleError(_0x3bca90,null,_0x34fb('0x4f')));};
\ No newline at end of file
+var _0x8f9a=['fields','length','nolimit','order','sort','where','pick','merge','filter','includeAll','include','findAll','rows','catch','show','params','keys','options','find','create','body','destroy','describe','rawAttributes','hasOwnProperty','getVoiceQueuesReport','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','path','ejs','lodash','squel','crypto','jsforce','desk.js','querystring','ioredis','../../components/auth/service','../../components/parsers/qs','../../config/license/hardware','../../config/logger','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','redis','defaults','localhost','socket.io-emitter','./voiceQueueReport.socket','register','status','end','json','offset','undefined','count','limit','Content-Range','apply','save','update','then','error','name','send','index','map','VoiceQueueReport','fieldName','type','key','query','filters','model','attributes','intersection'];(function(_0x176317,_0x4897b3){var _0xef2759=function(_0x581e2b){while(--_0x581e2b){_0x176317['push'](_0x176317['shift']());}};_0xef2759(++_0x4897b3);}(_0x8f9a,0xc0));var _0xa8f9=function(_0xe4db4b,_0x54f6af){_0xe4db4b=_0xe4db4b-0x0;var _0x5d7ac0=_0x8f9a[_0xe4db4b];return _0x5d7ac0;};'use strict';var emlformat=require(_0xa8f9('0x0'));var rimraf=require(_0xa8f9('0x1'));var zipdir=require(_0xa8f9('0x2'));var jsonpatch=require(_0xa8f9('0x3'));var rp=require(_0xa8f9('0x4'));var moment=require(_0xa8f9('0x5'));var BPromise=require(_0xa8f9('0x6'));var Mustache=require(_0xa8f9('0x7'));var util=require('util');var path=require(_0xa8f9('0x8'));var sox=require('sox');var csv=require('to-csv');var ejs=require(_0xa8f9('0x9'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0xa8f9('0xa'));var squel=require(_0xa8f9('0xb'));var crypto=require(_0xa8f9('0xc'));var jsforce=require(_0xa8f9('0xd'));var deskjs=require(_0xa8f9('0xe'));var toCsv=require('to-csv');var querystring=require(_0xa8f9('0xf'));var Papa=require('papaparse');var Redis=require(_0xa8f9('0x10'));var authService=require(_0xa8f9('0x11'));var qs=require(_0xa8f9('0x12'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0xa8f9('0x13'));var logger=require(_0xa8f9('0x14'))('api');var utils=require(_0xa8f9('0x15'));var config=require(_0xa8f9('0x16'));var licenseUtil=require(_0xa8f9('0x17'));var db=require(_0xa8f9('0x18'))['db'];config[_0xa8f9('0x19')]=_[_0xa8f9('0x1a')](config[_0xa8f9('0x19')],{'host':_0xa8f9('0x1b'),'port':0x18eb});var socket=require(_0xa8f9('0x1c'))(new Redis(config[_0xa8f9('0x19')]));require(_0xa8f9('0x1d'))[_0xa8f9('0x1e')](socket);function respondWithStatusCode(_0xecd3a,_0x182f03){_0x182f03=_0x182f03||0xcc;return function(_0x556881){if(_0x556881){return _0xecd3a['sendStatus'](_0x182f03);}return _0xecd3a[_0xa8f9('0x1f')](_0x182f03)[_0xa8f9('0x20')]();};}function respondWithResult(_0x2b9798,_0x4bca90){_0x4bca90=_0x4bca90||0xc8;return function(_0x32bd28){if(_0x32bd28){return _0x2b9798[_0xa8f9('0x1f')](_0x4bca90)[_0xa8f9('0x21')](_0x32bd28);}};}function respondWithFilteredResult(_0x2f6915,_0x7ab762){return function(_0x5369ff){if(_0x5369ff){var _0x22d9fe=typeof _0x7ab762[_0xa8f9('0x22')]===_0xa8f9('0x23')&&typeof _0x7ab762['limit']==='undefined';var _0x58efb6=_0x5369ff['count'];var _0x2b6984=_0x22d9fe?0x0:_0x7ab762['offset'];var _0x111197=_0x22d9fe?_0x5369ff[_0xa8f9('0x24')]:_0x7ab762[_0xa8f9('0x22')]+_0x7ab762[_0xa8f9('0x25')];var _0x55f51a;if(_0x111197>=_0x58efb6){_0x111197=_0x58efb6;_0x55f51a=0xc8;}else{_0x55f51a=0xce;}_0x2f6915[_0xa8f9('0x1f')](_0x55f51a);return _0x2f6915['set'](_0xa8f9('0x26'),_0x2b6984+'-'+_0x111197+'/'+_0x58efb6)[_0xa8f9('0x21')](_0x5369ff);}return null;};}function patchUpdates(_0x28333b){return function(_0xd252d7){try{jsonpatch[_0xa8f9('0x27')](_0xd252d7,_0x28333b,!![]);}catch(_0x382fad){return BPromise['reject'](_0x382fad);}return _0xd252d7[_0xa8f9('0x28')]();};}function saveUpdates(_0x5e5b0d,_0x55e150){return function(_0xb0e303){if(_0xb0e303){return _0xb0e303[_0xa8f9('0x29')](_0x5e5b0d)[_0xa8f9('0x2a')](function(_0x4a07f6){return _0x4a07f6;});}return null;};}function removeEntity(_0x38bb66,_0x15d70d){return function(_0x1f1f3a){if(_0x1f1f3a){return _0x1f1f3a['destroy']()[_0xa8f9('0x2a')](function(){_0x38bb66[_0xa8f9('0x1f')](0xcc)[_0xa8f9('0x20')]();});}};}function handleEntityNotFound(_0xb99409,_0x1074f3){return function(_0x207186){if(!_0x207186){_0xb99409['sendStatus'](0x194);}return _0x207186;};}function handleError(_0x3c09a0,_0x18536b){_0x18536b=_0x18536b||0x1f4;return function(_0x1097fa){logger[_0xa8f9('0x2b')](_0x1097fa['stack']);if(_0x1097fa[_0xa8f9('0x2c')]){delete _0x1097fa[_0xa8f9('0x2c')];}_0x3c09a0[_0xa8f9('0x1f')](_0x18536b)[_0xa8f9('0x2d')](_0x1097fa);};}exports[_0xa8f9('0x2e')]=function(_0x500113,_0x124c19){var _0x6a615d={},_0x11a887={},_0x13fc15={'count':0x0,'rows':[]};var _0x5b87f1=_[_0xa8f9('0x2f')](db[_0xa8f9('0x30')]['rawAttributes'],function(_0x282cec){return{'name':_0x282cec[_0xa8f9('0x31')],'type':_0x282cec[_0xa8f9('0x32')][_0xa8f9('0x33')]};});_0x11a887['model']=_[_0xa8f9('0x2f')](_0x5b87f1,'name');_0x11a887[_0xa8f9('0x34')]=_['keys'](_0x500113[_0xa8f9('0x34')]);_0x11a887[_0xa8f9('0x35')]=_['intersection'](_0x11a887[_0xa8f9('0x36')],_0x11a887[_0xa8f9('0x34')]);_0x6a615d[_0xa8f9('0x37')]=_[_0xa8f9('0x38')](_0x11a887[_0xa8f9('0x36')],qs[_0xa8f9('0x39')](_0x500113['query']['fields']));_0x6a615d['attributes']=_0x6a615d[_0xa8f9('0x37')][_0xa8f9('0x3a')]?_0x6a615d['attributes']:_0x11a887[_0xa8f9('0x36')];if(!_0x500113[_0xa8f9('0x34')]['hasOwnProperty'](_0xa8f9('0x3b'))){_0x6a615d['limit']=qs[_0xa8f9('0x25')](_0x500113[_0xa8f9('0x34')][_0xa8f9('0x25')]);_0x6a615d['offset']=qs[_0xa8f9('0x22')](_0x500113[_0xa8f9('0x34')][_0xa8f9('0x22')]);}_0x6a615d[_0xa8f9('0x3c')]=qs['sort'](_0x500113['query'][_0xa8f9('0x3d')]);_0x6a615d[_0xa8f9('0x3e')]=qs[_0xa8f9('0x35')](_[_0xa8f9('0x3f')](_0x500113[_0xa8f9('0x34')],_0x11a887[_0xa8f9('0x35')]),_0x5b87f1);if(_0x500113['query']['filter']){_0x6a615d[_0xa8f9('0x3e')]=_[_0xa8f9('0x40')](_0x6a615d[_0xa8f9('0x3e')],{'$or':_[_0xa8f9('0x2f')](_0x5b87f1,function(_0x2336df){if(_0x2336df[_0xa8f9('0x32')]!=='VIRTUAL'){var _0x271f56={};_0x271f56[_0x2336df[_0xa8f9('0x2c')]]={'$like':'%'+_0x500113['query'][_0xa8f9('0x41')]+'%'};return _0x271f56;}})});}_0x6a615d=_[_0xa8f9('0x40')]({},_0x6a615d,_0x500113['options']);var _0x238473={'where':_0x6a615d['where']};return db[_0xa8f9('0x30')][_0xa8f9('0x24')](_0x238473)[_0xa8f9('0x2a')](function(_0x5225ac){_0x13fc15[_0xa8f9('0x24')]=_0x5225ac;if(_0x500113[_0xa8f9('0x34')][_0xa8f9('0x42')]){_0x6a615d[_0xa8f9('0x43')]=[{'all':!![]}];}return db['VoiceQueueReport'][_0xa8f9('0x44')](_0x6a615d);})[_0xa8f9('0x2a')](function(_0x44aa23){_0x13fc15[_0xa8f9('0x45')]=_0x44aa23;return _0x13fc15;})[_0xa8f9('0x2a')](respondWithFilteredResult(_0x124c19,_0x6a615d))[_0xa8f9('0x46')](handleError(_0x124c19,null));};exports[_0xa8f9('0x47')]=function(_0x25852c,_0xca11f){var _0x1f2254={'raw':![],'where':{'id':_0x25852c[_0xa8f9('0x48')]['id']}},_0x440076={};_0x440076[_0xa8f9('0x36')]=_[_0xa8f9('0x49')](db[_0xa8f9('0x30')]['rawAttributes']);_0x440076[_0xa8f9('0x34')]=_[_0xa8f9('0x49')](_0x25852c[_0xa8f9('0x34')]);_0x440076[_0xa8f9('0x35')]=_[_0xa8f9('0x38')](_0x440076[_0xa8f9('0x36')],_0x440076[_0xa8f9('0x34')]);_0x1f2254[_0xa8f9('0x37')]=_[_0xa8f9('0x38')](_0x440076[_0xa8f9('0x36')],qs[_0xa8f9('0x39')](_0x25852c[_0xa8f9('0x34')][_0xa8f9('0x39')]));_0x1f2254[_0xa8f9('0x37')]=_0x1f2254['attributes'][_0xa8f9('0x3a')]?_0x1f2254[_0xa8f9('0x37')]:_0x440076[_0xa8f9('0x36')];if(_0x25852c[_0xa8f9('0x34')][_0xa8f9('0x42')]){_0x1f2254['include']=[{'all':!![]}];}_0x1f2254=_['merge']({},_0x1f2254,_0x25852c[_0xa8f9('0x4a')]);return db['VoiceQueueReport'][_0xa8f9('0x4b')](_0x1f2254)[_0xa8f9('0x2a')](handleEntityNotFound(_0xca11f,null))[_0xa8f9('0x2a')](respondWithResult(_0xca11f,null))[_0xa8f9('0x46')](handleError(_0xca11f,null));};exports[_0xa8f9('0x4c')]=function(_0x3aa806,_0x1c2f8e){return db[_0xa8f9('0x30')][_0xa8f9('0x4c')](_0x3aa806[_0xa8f9('0x4d')],{})[_0xa8f9('0x2a')](respondWithResult(_0x1c2f8e,0xc9))[_0xa8f9('0x46')](handleError(_0x1c2f8e,null));};exports[_0xa8f9('0x29')]=function(_0x4a5ef4,_0x467923){if(_0x4a5ef4[_0xa8f9('0x4d')]['id']){delete _0x4a5ef4['body']['id'];}return db[_0xa8f9('0x30')][_0xa8f9('0x4b')]({'where':{'id':_0x4a5ef4[_0xa8f9('0x48')]['id']}})[_0xa8f9('0x2a')](handleEntityNotFound(_0x467923,null))[_0xa8f9('0x2a')](saveUpdates(_0x4a5ef4['body'],null))[_0xa8f9('0x2a')](respondWithResult(_0x467923,null))[_0xa8f9('0x46')](handleError(_0x467923,null));};exports[_0xa8f9('0x4e')]=function(_0x4bfdbd,_0x462268){return db[_0xa8f9('0x30')][_0xa8f9('0x4b')]({'where':{'id':_0x4bfdbd['params']['id']}})[_0xa8f9('0x2a')](handleEntityNotFound(_0x462268,null))[_0xa8f9('0x2a')](removeEntity(_0x462268,null))[_0xa8f9('0x46')](handleError(_0x462268,null));};exports[_0xa8f9('0x4f')]=function(_0x3c154e,_0x28315e){return db['VoiceQueueReport'][_0xa8f9('0x4f')]()['then'](respondWithResult(_0x28315e,null))[_0xa8f9('0x46')](handleError(_0x28315e,null));};exports['getVoiceQueuesReport']=function(_0x478b64,_0xbc1ebe){var _0x52524c={},_0x29099f={},_0x2c5dc1={'count':0x0,'rows':[]};_0x29099f['model']=_[_0xa8f9('0x49')](db[_0xa8f9('0x30')][_0xa8f9('0x50')]);_0x29099f[_0xa8f9('0x34')]=_['keys'](_0x478b64['query']);_0x29099f[_0xa8f9('0x35')]=_[_0xa8f9('0x38')](_0x29099f[_0xa8f9('0x36')],_0x29099f[_0xa8f9('0x34')]);_0x52524c[_0xa8f9('0x37')]=_[_0xa8f9('0x38')](_0x29099f[_0xa8f9('0x36')],qs[_0xa8f9('0x39')](_0x478b64[_0xa8f9('0x34')][_0xa8f9('0x39')]));_0x52524c['attributes']=_0x52524c[_0xa8f9('0x37')][_0xa8f9('0x3a')]?_0x52524c[_0xa8f9('0x37')]:_0x29099f[_0xa8f9('0x36')];if(!_0x478b64[_0xa8f9('0x34')][_0xa8f9('0x51')](_0xa8f9('0x3b'))){_0x52524c[_0xa8f9('0x25')]=qs[_0xa8f9('0x25')](_0x478b64[_0xa8f9('0x34')][_0xa8f9('0x25')]);_0x52524c['offset']=qs[_0xa8f9('0x22')](_0x478b64[_0xa8f9('0x34')][_0xa8f9('0x22')]);}_0x52524c[_0xa8f9('0x3c')]=qs['sort'](_0x478b64[_0xa8f9('0x34')][_0xa8f9('0x3d')]);_0x52524c[_0xa8f9('0x3e')]=qs[_0xa8f9('0x35')](_[_0xa8f9('0x3f')](_0x478b64[_0xa8f9('0x34')],_0x29099f[_0xa8f9('0x35')]));if(_0x478b64[_0xa8f9('0x34')]['filter']){_0x52524c['where']=_[_0xa8f9('0x40')](_0x52524c[_0xa8f9('0x3e')],{'$or':_[_0xa8f9('0x2f')](_0x52524c[_0xa8f9('0x37')],function(_0x313d14){var _0xd006de={};_0xd006de[_0x313d14]={'$like':'%'+_0x478b64[_0xa8f9('0x34')]['filter']+'%'};return _0xd006de;})});}_0x52524c=_[_0xa8f9('0x40')]({},_0x52524c,_0x478b64[_0xa8f9('0x4a')]);var _0x3a649a={'where':_0x52524c[_0xa8f9('0x3e')]};return db['VoiceQueueReport'][_0xa8f9('0x24')](_0x3a649a)['then'](function(_0x35fc88){_0x2c5dc1[_0xa8f9('0x24')]=_0x35fc88;if(_0x478b64[_0xa8f9('0x34')]['includeAll']){_0x52524c[_0xa8f9('0x43')]=[{'all':!![]}];}return db[_0xa8f9('0x30')][_0xa8f9('0x44')](_0x52524c);})['then'](function(_0x3dbbb0){_0x2c5dc1[_0xa8f9('0x45')]=_0x3dbbb0;return _0x2c5dc1;})[_0xa8f9('0x2a')](respondWithFilteredResult(_0xbc1ebe,_0x52524c,_0xa8f9('0x52')))[_0xa8f9('0x46')](handleError(_0xbc1ebe,null,_0xa8f9('0x52')));};
\ No newline at end of file
index 5ccbbf7..43d449b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb1fa=['setMaxListeners','save','update','emit','hasOwnProperty','../../mysqldb','VoiceQueueReport'];(function(_0x532d78,_0x25b6a8){var _0x5990c4=function(_0x3f23fe){while(--_0x3f23fe){_0x532d78['push'](_0x532d78['shift']());}};_0x5990c4(++_0x25b6a8);}(_0xb1fa,0x132));var _0xab1f=function(_0x57f019,_0x44e536){_0x57f019=_0x57f019-0x0;var _0x461b3b=_0xb1fa[_0x57f019];return _0x461b3b;};'use strict';var EventEmitter=require('events');var VoiceQueueReport=require(_0xab1f('0x0'))['db'][_0xab1f('0x1')];var VoiceQueueReportEvents=new EventEmitter();VoiceQueueReportEvents[_0xab1f('0x2')](0x0);var events={'afterCreate':_0xab1f('0x3'),'afterUpdate':_0xab1f('0x4'),'afterDestroy':'remove'};function emitEvent(_0x3635c0){return function(_0x52a92f,_0x56d486,_0x3cb17e){VoiceQueueReportEvents[_0xab1f('0x5')](_0x3635c0+':'+_0x52a92f['id'],_0x52a92f);VoiceQueueReportEvents[_0xab1f('0x5')](_0x3635c0,_0x52a92f);_0x3cb17e(null);};}for(var e in events){if(events[_0xab1f('0x6')](e)){var event=events[e];VoiceQueueReport['hook'](e,emitEvent(event));}}module['exports']=VoiceQueueReportEvents;
\ No newline at end of file
+var _0xc3bf=['exports','events','../../mysqldb','VoiceQueueReport','setMaxListeners','save','update','remove','emit','hasOwnProperty'];(function(_0x30b073,_0x47e9a5){var _0x53ff1d=function(_0x55be73){while(--_0x55be73){_0x30b073['push'](_0x30b073['shift']());}};_0x53ff1d(++_0x47e9a5);}(_0xc3bf,0x14b));var _0xfc3b=function(_0x3cf5c7,_0x898e42){_0x3cf5c7=_0x3cf5c7-0x0;var _0x2681f2=_0xc3bf[_0x3cf5c7];return _0x2681f2;};'use strict';var EventEmitter=require(_0xfc3b('0x0'));var VoiceQueueReport=require(_0xfc3b('0x1'))['db'][_0xfc3b('0x2')];var VoiceQueueReportEvents=new EventEmitter();VoiceQueueReportEvents[_0xfc3b('0x3')](0x0);var events={'afterCreate':_0xfc3b('0x4'),'afterUpdate':_0xfc3b('0x5'),'afterDestroy':_0xfc3b('0x6')};function emitEvent(_0x1ecd8c){return function(_0x102639,_0x81fb5a,_0x33af8b){VoiceQueueReportEvents[_0xfc3b('0x7')](_0x1ecd8c+':'+_0x102639['id'],_0x102639);VoiceQueueReportEvents[_0xfc3b('0x7')](_0x1ecd8c,_0x102639);_0x33af8b(null);};}for(var e in events){if(events[_0xfc3b('0x8')](e)){var event=events[e];VoiceQueueReport['hook'](e,emitEvent(event));}}module[_0xfc3b('0x9')]=VoiceQueueReportEvents;
\ No newline at end of file
index dc4cad3..584e64e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xbc4b=['path','./voiceQueueReport.attributes','define','VoiceQueueReport','report_queue','uniqueid','calleridnum','lodash','util','../../config/logger','api','moment','request-promise'];(function(_0xd52072,_0x269c52){var _0x2f75a6=function(_0x539ee2){while(--_0x539ee2){_0xd52072['push'](_0xd52072['shift']());}};_0x2f75a6(++_0x269c52);}(_0xbc4b,0xd7));var _0xbbc4=function(_0xc96746,_0x3f6425){_0xc96746=_0xc96746-0x0;var _0x37b2ea=_0xbc4b[_0xc96746];return _0x37b2ea;};'use strict';var _=require(_0xbbc4('0x0'));var util=require(_0xbbc4('0x1'));var logger=require(_0xbbc4('0x2'))(_0xbbc4('0x3'));var moment=require(_0xbbc4('0x4'));var BPromise=require('bluebird');var rp=require(_0xbbc4('0x5'));var fs=require('fs');var path=require(_0xbbc4('0x6'));var rimraf=require('rimraf');var config=require('../../config/environment');var attributes=require(_0xbbc4('0x7'));module['exports']=function(_0x4c9675,_0x4ca670){return _0x4c9675[_0xbbc4('0x8')](_0xbbc4('0x9'),attributes,{'tableName':_0xbbc4('0xa'),'paranoid':![],'indexes':[{'fields':[_0xbbc4('0xb')]},{'fields':[_0xbbc4('0xc')]}],'timestamps':!![]});};
\ No newline at end of file
+var _0xa40b=['bluebird','path','rimraf','../../config/environment','./voiceQueueReport.attributes','define','report_queue','uniqueid','lodash','api','moment'];(function(_0x115b91,_0x50ef17){var _0x306060=function(_0x547979){while(--_0x547979){_0x115b91['push'](_0x115b91['shift']());}};_0x306060(++_0x50ef17);}(_0xa40b,0x147));var _0xba40=function(_0x2d4cb8,_0x2c18f0){_0x2d4cb8=_0x2d4cb8-0x0;var _0x333a07=_0xa40b[_0x2d4cb8];return _0x333a07;};'use strict';var _=require(_0xba40('0x0'));var util=require('util');var logger=require('../../config/logger')(_0xba40('0x1'));var moment=require(_0xba40('0x2'));var BPromise=require(_0xba40('0x3'));var rp=require('request-promise');var fs=require('fs');var path=require(_0xba40('0x4'));var rimraf=require(_0xba40('0x5'));var config=require(_0xba40('0x6'));var attributes=require(_0xba40('0x7'));module['exports']=function(_0x1fa3ff,_0x55ab13){return _0x1fa3ff[_0xba40('0x8')]('VoiceQueueReport',attributes,{'tableName':_0xba40('0x9'),'paranoid':![],'indexes':[{'fields':[_0xba40('0xa')]},{'fields':['calleridnum']}],'timestamps':!![]});};
\ No newline at end of file
index c9686d9..e79646d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x00dc=['code','message','result','catch','GetVoiceQueueReport','findAll','options','raw','where','attributes','include','model','map','CreateVoiceQueueReport','VoiceQueueReport','create','body','UpdateVoiceQueueReport','update','limit','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/logger','rpc','jayson/promise','http','redis','defaults','socket.io-emitter','then','info','VoiceQueueReport,\x20%s,\x20%s','request\x20sent','debug','VoiceQueueReport,\x20%s,\x20%s,\x20%s','stringify','error'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x00dc,0x1b8));var _0xc00d=function(_0x3b380d,_0x4bf247){_0x3b380d=_0x3b380d-0x0;var _0x54502b=_0x00dc[_0x3b380d];return _0x54502b;};'use strict';var _=require(_0xc00d('0x0'));var util=require(_0xc00d('0x1'));var moment=require(_0xc00d('0x2'));var BPromise=require(_0xc00d('0x3'));var rs=require(_0xc00d('0x4'));var fs=require('fs');var Redis=require(_0xc00d('0x5'));var db=require(_0xc00d('0x6'))['db'];var utils=require('../../config/utils');var logger=require(_0xc00d('0x7'))(_0xc00d('0x8'));var config=require('../../config/environment');var jayson=require(_0xc00d('0x9'));var client=jayson['client'][_0xc00d('0xa')]({'port':0x232a});config[_0xc00d('0xb')]=_[_0xc00d('0xc')](config[_0xc00d('0xb')],{'host':'localhost','port':0x18eb});var socket=require(_0xc00d('0xd'))(new Redis(config[_0xc00d('0xb')]));require('./voiceQueueReport.socket')['register'](socket);function respondWithRpcPromise(_0x5f4f6d,_0x3ee241,_0x4c9fbf){return new BPromise(function(_0x4a1b23,_0x6633d5){return client['request'](_0x5f4f6d,_0x4c9fbf)[_0xc00d('0xe')](function(_0x36464f){logger[_0xc00d('0xf')](_0xc00d('0x10'),_0x3ee241,_0xc00d('0x11'));logger[_0xc00d('0x12')](_0xc00d('0x13'),_0x3ee241,_0xc00d('0x11'),JSON[_0xc00d('0x14')](_0x36464f));if(_0x36464f[_0xc00d('0x15')]){if(_0x36464f['error'][_0xc00d('0x16')]===0x1f4){logger[_0xc00d('0x15')](_0xc00d('0x10'),_0x3ee241,_0x36464f[_0xc00d('0x15')][_0xc00d('0x17')]);return _0x6633d5(_0x36464f[_0xc00d('0x15')]['message']);}logger[_0xc00d('0x15')](_0xc00d('0x10'),_0x3ee241,_0x36464f[_0xc00d('0x15')][_0xc00d('0x17')]);return _0x4a1b23(_0x36464f[_0xc00d('0x15')][_0xc00d('0x17')]);}else{logger[_0xc00d('0xf')](_0xc00d('0x10'),_0x3ee241,'request\x20sent');_0x4a1b23(_0x36464f[_0xc00d('0x18')][_0xc00d('0x17')]);}})[_0xc00d('0x19')](function(_0x21047a){logger[_0xc00d('0x15')](_0xc00d('0x10'),_0x3ee241,_0x21047a);_0x6633d5(_0x21047a);});});}exports[_0xc00d('0x1a')]=function(_0x3bc1f7){var _0x385712=this;return new Promise(function(_0x2fdffe,_0x2f02dd){return db['VoiceQueueReport'][_0xc00d('0x1b')]({'raw':_0x3bc1f7[_0xc00d('0x1c')]?_0x3bc1f7['options'][_0xc00d('0x1d')]===undefined?!![]:![]:!![],'where':_0x3bc1f7[_0xc00d('0x1c')]?_0x3bc1f7[_0xc00d('0x1c')][_0xc00d('0x1e')]||null:null,'attributes':_0x3bc1f7['options']?_0x3bc1f7['options'][_0xc00d('0x1f')]||null:null,'limit':_0x3bc1f7[_0xc00d('0x1c')]?_0x3bc1f7[_0xc00d('0x1c')]['limit']||null:null,'include':_0x3bc1f7[_0xc00d('0x1c')]?_0x3bc1f7[_0xc00d('0x1c')][_0xc00d('0x20')]?_['map'](_0x3bc1f7[_0xc00d('0x1c')][_0xc00d('0x20')],function(_0x5dfcd6){return{'model':db[_0x5dfcd6[_0xc00d('0x21')]],'as':_0x5dfcd6['as'],'attributes':_0x5dfcd6[_0xc00d('0x1f')],'include':_0x5dfcd6[_0xc00d('0x20')]?_['map'](_0x5dfcd6[_0xc00d('0x20')],function(_0x4ecb02){return{'model':db[_0x4ecb02['model']],'as':_0x4ecb02['as'],'attributes':_0x4ecb02[_0xc00d('0x1f')],'include':_0x4ecb02['include']?_[_0xc00d('0x22')](_0x4ecb02[_0xc00d('0x20')],function(_0x237251){return{'model':db[_0x237251[_0xc00d('0x21')]],'as':_0x237251['as'],'attributes':_0x237251[_0xc00d('0x1f')]};}):[]};}):[]};}):[]:[]})['then'](function(_0x2b8629){logger[_0xc00d('0xf')](_0xc00d('0x1a'),_0x3bc1f7);logger['debug'](_0xc00d('0x1a'),_0x3bc1f7,JSON[_0xc00d('0x14')](_0x2b8629));_0x2fdffe(_0x2b8629);})[_0xc00d('0x19')](function(_0x164383){logger['error']('GetVoiceQueueReport',_0x164383[_0xc00d('0x17')],_0x3bc1f7);_0x2f02dd(_0x385712[_0xc00d('0x15')](0x1f4,_0x164383[_0xc00d('0x17')]));});});};exports[_0xc00d('0x23')]=function(_0x1fc226){var _0x44878f=this;return new Promise(function(_0x1fd91b,_0x4e6cd2){return db[_0xc00d('0x24')][_0xc00d('0x25')](_0x1fc226[_0xc00d('0x26')],{'raw':_0x1fc226[_0xc00d('0x1c')]?_0x1fc226[_0xc00d('0x1c')]['raw']===undefined?!![]:![]:!![]})[_0xc00d('0xe')](function(_0xa77032){logger[_0xc00d('0xf')](_0xc00d('0x23'),_0x1fc226);logger[_0xc00d('0x12')](_0xc00d('0x23'),_0x1fc226,JSON[_0xc00d('0x14')](_0xa77032));_0x1fd91b(_0xa77032);})['catch'](function(_0x54a4c4){logger['error']('CreateVoiceQueueReport',_0x54a4c4[_0xc00d('0x17')],_0x1fc226);_0x4e6cd2(_0x44878f[_0xc00d('0x15')](0x1f4,_0x54a4c4[_0xc00d('0x17')]));});});};exports[_0xc00d('0x27')]=function(_0x434376){var _0x3f8e7f=this;return new Promise(function(_0x300551,_0x52a03a){return db['VoiceQueueReport'][_0xc00d('0x28')](_0x434376['body'],{'raw':_0x434376[_0xc00d('0x1c')]?_0x434376[_0xc00d('0x1c')][_0xc00d('0x1d')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x434376[_0xc00d('0x1c')]?_0x434376[_0xc00d('0x1c')]['where']||null:null,'attributes':_0x434376[_0xc00d('0x1c')]?_0x434376[_0xc00d('0x1c')][_0xc00d('0x1f')]||null:null,'limit':_0x434376[_0xc00d('0x1c')]?_0x434376['options'][_0xc00d('0x29')]||null:null})['then'](function(_0x2cb2ec){logger[_0xc00d('0xf')](_0xc00d('0x27'),_0x434376);logger[_0xc00d('0x12')](_0xc00d('0x27'),_0x434376,JSON[_0xc00d('0x14')](_0x2cb2ec));_0x300551(_0x2cb2ec);})['catch'](function(_0x31fcc4){logger[_0xc00d('0x15')](_0xc00d('0x27'),_0x31fcc4['message'],_0x434376);_0x52a03a(_0x3f8e7f[_0xc00d('0x15')](0x1f4,_0x31fcc4['message']));});});};
\ No newline at end of file
+var _0xe956=['update','where','UpdateVoiceQueueReport','lodash','util','moment','randomstring','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','http','redis','localhost','socket.io-emitter','./voiceQueueReport.socket','register','request','then','info','VoiceQueueReport,\x20%s,\x20%s','debug','stringify','error','code','message','result','catch','GetVoiceQueueReport','VoiceQueueReport','options','raw','attributes','limit','include','map','model','CreateVoiceQueueReport','create','body'];(function(_0x15c389,_0x1e57d0){var _0x4a2544=function(_0x24368d){while(--_0x24368d){_0x15c389['push'](_0x15c389['shift']());}};_0x4a2544(++_0x1e57d0);}(_0xe956,0xab));var _0x6e95=function(_0x3d596a,_0x2872a6){_0x3d596a=_0x3d596a-0x0;var _0x466200=_0xe956[_0x3d596a];return _0x466200;};'use strict';var _=require(_0x6e95('0x0'));var util=require(_0x6e95('0x1'));var moment=require(_0x6e95('0x2'));var BPromise=require('bluebird');var rs=require(_0x6e95('0x3'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x6e95('0x4'))['db'];var utils=require(_0x6e95('0x5'));var logger=require(_0x6e95('0x6'))(_0x6e95('0x7'));var config=require(_0x6e95('0x8'));var jayson=require(_0x6e95('0x9'));var client=jayson['client'][_0x6e95('0xa')]({'port':0x232a});config[_0x6e95('0xb')]=_['defaults'](config[_0x6e95('0xb')],{'host':_0x6e95('0xc'),'port':0x18eb});var socket=require(_0x6e95('0xd'))(new Redis(config['redis']));require(_0x6e95('0xe'))[_0x6e95('0xf')](socket);function respondWithRpcPromise(_0x3f8ca2,_0x1c3b63,_0x4eb4e4){return new BPromise(function(_0x235d7c,_0x341573){return client[_0x6e95('0x10')](_0x3f8ca2,_0x4eb4e4)[_0x6e95('0x11')](function(_0x10f461){logger[_0x6e95('0x12')](_0x6e95('0x13'),_0x1c3b63,'request\x20sent');logger[_0x6e95('0x14')]('VoiceQueueReport,\x20%s,\x20%s,\x20%s',_0x1c3b63,'request\x20sent',JSON[_0x6e95('0x15')](_0x10f461));if(_0x10f461[_0x6e95('0x16')]){if(_0x10f461[_0x6e95('0x16')][_0x6e95('0x17')]===0x1f4){logger[_0x6e95('0x16')](_0x6e95('0x13'),_0x1c3b63,_0x10f461['error'][_0x6e95('0x18')]);return _0x341573(_0x10f461[_0x6e95('0x16')][_0x6e95('0x18')]);}logger[_0x6e95('0x16')](_0x6e95('0x13'),_0x1c3b63,_0x10f461[_0x6e95('0x16')][_0x6e95('0x18')]);return _0x235d7c(_0x10f461[_0x6e95('0x16')][_0x6e95('0x18')]);}else{logger[_0x6e95('0x12')](_0x6e95('0x13'),_0x1c3b63,'request\x20sent');_0x235d7c(_0x10f461[_0x6e95('0x19')][_0x6e95('0x18')]);}})[_0x6e95('0x1a')](function(_0x4a5e35){logger['error'](_0x6e95('0x13'),_0x1c3b63,_0x4a5e35);_0x341573(_0x4a5e35);});});}exports[_0x6e95('0x1b')]=function(_0x2a18aa){var _0x2fa4ce=this;return new Promise(function(_0x420a22,_0x51ee68){return db[_0x6e95('0x1c')]['findAll']({'raw':_0x2a18aa[_0x6e95('0x1d')]?_0x2a18aa['options'][_0x6e95('0x1e')]===undefined?!![]:![]:!![],'where':_0x2a18aa[_0x6e95('0x1d')]?_0x2a18aa[_0x6e95('0x1d')]['where']||null:null,'attributes':_0x2a18aa[_0x6e95('0x1d')]?_0x2a18aa[_0x6e95('0x1d')][_0x6e95('0x1f')]||null:null,'limit':_0x2a18aa[_0x6e95('0x1d')]?_0x2a18aa['options'][_0x6e95('0x20')]||null:null,'include':_0x2a18aa[_0x6e95('0x1d')]?_0x2a18aa[_0x6e95('0x1d')][_0x6e95('0x21')]?_['map'](_0x2a18aa[_0x6e95('0x1d')][_0x6e95('0x21')],function(_0xb4a9ca){return{'model':db[_0xb4a9ca['model']],'as':_0xb4a9ca['as'],'attributes':_0xb4a9ca[_0x6e95('0x1f')],'include':_0xb4a9ca['include']?_[_0x6e95('0x22')](_0xb4a9ca[_0x6e95('0x21')],function(_0x3196f9){return{'model':db[_0x3196f9['model']],'as':_0x3196f9['as'],'attributes':_0x3196f9[_0x6e95('0x1f')],'include':_0x3196f9[_0x6e95('0x21')]?_['map'](_0x3196f9['include'],function(_0x22e60e){return{'model':db[_0x22e60e[_0x6e95('0x23')]],'as':_0x22e60e['as'],'attributes':_0x22e60e[_0x6e95('0x1f')]};}):[]};}):[]};}):[]:[]})[_0x6e95('0x11')](function(_0x3f8344){logger[_0x6e95('0x12')]('GetVoiceQueueReport',_0x2a18aa);logger['debug'](_0x6e95('0x1b'),_0x2a18aa,JSON['stringify'](_0x3f8344));_0x420a22(_0x3f8344);})[_0x6e95('0x1a')](function(_0x1e4b9a){logger['error']('GetVoiceQueueReport',_0x1e4b9a[_0x6e95('0x18')],_0x2a18aa);_0x51ee68(_0x2fa4ce['error'](0x1f4,_0x1e4b9a[_0x6e95('0x18')]));});});};exports[_0x6e95('0x24')]=function(_0x10a25a){var _0x4780b0=this;return new Promise(function(_0x4f0147,_0x1d1c87){return db[_0x6e95('0x1c')][_0x6e95('0x25')](_0x10a25a[_0x6e95('0x26')],{'raw':_0x10a25a['options']?_0x10a25a[_0x6e95('0x1d')][_0x6e95('0x1e')]===undefined?!![]:![]:!![]})['then'](function(_0x4b675d){logger[_0x6e95('0x12')](_0x6e95('0x24'),_0x10a25a);logger[_0x6e95('0x14')](_0x6e95('0x24'),_0x10a25a,JSON[_0x6e95('0x15')](_0x4b675d));_0x4f0147(_0x4b675d);})[_0x6e95('0x1a')](function(_0x2a8f6e){logger[_0x6e95('0x16')](_0x6e95('0x24'),_0x2a8f6e[_0x6e95('0x18')],_0x10a25a);_0x1d1c87(_0x4780b0['error'](0x1f4,_0x2a8f6e[_0x6e95('0x18')]));});});};exports['UpdateVoiceQueueReport']=function(_0x26cab7){var _0x5db702=this;return new Promise(function(_0x3e6450,_0xa0b996){return db[_0x6e95('0x1c')][_0x6e95('0x27')](_0x26cab7[_0x6e95('0x26')],{'raw':_0x26cab7[_0x6e95('0x1d')]?_0x26cab7[_0x6e95('0x1d')][_0x6e95('0x1e')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x26cab7[_0x6e95('0x1d')]?_0x26cab7[_0x6e95('0x1d')][_0x6e95('0x28')]||null:null,'attributes':_0x26cab7[_0x6e95('0x1d')]?_0x26cab7['options'][_0x6e95('0x1f')]||null:null,'limit':_0x26cab7[_0x6e95('0x1d')]?_0x26cab7['options'][_0x6e95('0x20')]||null:null})[_0x6e95('0x11')](function(_0x2a26b4){logger[_0x6e95('0x12')](_0x6e95('0x29'),_0x26cab7);logger[_0x6e95('0x14')]('UpdateVoiceQueueReport',_0x26cab7,JSON['stringify'](_0x2a26b4));_0x3e6450(_0x2a26b4);})[_0x6e95('0x1a')](function(_0x3bf4d1){logger['error'](_0x6e95('0x29'),_0x3bf4d1[_0x6e95('0x18')],_0x26cab7);_0xa0b996(_0x5db702[_0x6e95('0x16')](0x1f4,_0x3bf4d1['message']));});});};
\ No newline at end of file
index 263273f..1e1e5bb 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8c52=['./voiceQueueReport.events','remove','update','emit','removeListener','register','voiceQueueReport:'];(function(_0x1ecc33,_0x45f609){var _0x1d634e=function(_0x2e3c6a){while(--_0x2e3c6a){_0x1ecc33['push'](_0x1ecc33['shift']());}};_0x1d634e(++_0x45f609);}(_0x8c52,0x7e));var _0x28c5=function(_0x5bd948,_0x478409){_0x5bd948=_0x5bd948-0x0;var _0x52771a=_0x8c52[_0x5bd948];return _0x52771a;};'use strict';var VoiceQueueReportEvents=require(_0x28c5('0x0'));var events=['save',_0x28c5('0x1'),_0x28c5('0x2')];function createListener(_0x3d994a,_0x37c10f){return function(_0x398f22){_0x37c10f[_0x28c5('0x3')](_0x3d994a,_0x398f22);};}function removeListener(_0x412a0a,_0x3b6b48){return function(){VoiceQueueReportEvents[_0x28c5('0x4')](_0x412a0a,_0x3b6b48);};}exports[_0x28c5('0x5')]=function(_0x209f3d){for(var _0x3b5c38=0x0,_0x53584d=events['length'];_0x3b5c38<_0x53584d;_0x3b5c38++){var _0x5d9299=events[_0x3b5c38];var _0x5099e8=createListener(_0x28c5('0x6')+_0x5d9299,_0x209f3d);VoiceQueueReportEvents['on'](_0x5d9299,_0x5099e8);}};
\ No newline at end of file
+var _0x5fdc=['./voiceQueueReport.events','update','emit','removeListener','register','length','voiceQueueReport:'];(function(_0x17e5ff,_0x1a3038){var _0x1d0f39=function(_0x1f095c){while(--_0x1f095c){_0x17e5ff['push'](_0x17e5ff['shift']());}};_0x1d0f39(++_0x1a3038);}(_0x5fdc,0xcb));var _0xc5fd=function(_0x165518,_0x3e63ef){_0x165518=_0x165518-0x0;var _0x3629e9=_0x5fdc[_0x165518];return _0x3629e9;};'use strict';var VoiceQueueReportEvents=require(_0xc5fd('0x0'));var events=['save','remove',_0xc5fd('0x1')];function createListener(_0x3dc4c0,_0x1e042a){return function(_0x517c4c){_0x1e042a[_0xc5fd('0x2')](_0x3dc4c0,_0x517c4c);};}function removeListener(_0x2a36a4,_0x3d4575){return function(){VoiceQueueReportEvents[_0xc5fd('0x3')](_0x2a36a4,_0x3d4575);};}exports[_0xc5fd('0x4')]=function(_0x2a2f9c){for(var _0x34d4d5=0x0,_0x2146df=events[_0xc5fd('0x5')];_0x34d4d5<_0x2146df;_0x34d4d5++){var _0x13d010=events[_0x34d4d5];var _0x494fb3=createListener(_0xc5fd('0x6')+_0x13d010,_0x2a2f9c);VoiceQueueReportEvents['on'](_0x13d010,_0x494fb3);}};
\ No newline at end of file
index 787286f..474d874 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2a31=['connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./voiceQueuesLog.controller','get','isAuthenticated','index','/:id','show','put','update','delete','destroy','exports','multer','util','path'];(function(_0x3dcb37,_0x30d756){var _0x392b5e=function(_0x7d1ccd){while(--_0x7d1ccd){_0x3dcb37['push'](_0x3dcb37['shift']());}};_0x392b5e(++_0x30d756);}(_0x2a31,0xe4));var _0x12a3=function(_0x15bc81,_0x4d4f77){_0x15bc81=_0x15bc81-0x0;var _0x59440e=_0x2a31[_0x15bc81];return _0x59440e;};'use strict';var multer=require(_0x12a3('0x0'));var util=require(_0x12a3('0x1'));var path=require(_0x12a3('0x2'));var timeout=require(_0x12a3('0x3'));var express=require(_0x12a3('0x4'));var router=express[_0x12a3('0x5')]();var fs_extra=require(_0x12a3('0x6'));var auth=require(_0x12a3('0x7'));var interaction=require(_0x12a3('0x8'));var config=require(_0x12a3('0x9'));var controller=require(_0x12a3('0xa'));router[_0x12a3('0xb')]('/',auth[_0x12a3('0xc')](),controller[_0x12a3('0xd')]);router['get'](_0x12a3('0xe'),auth['isAuthenticated'](),controller[_0x12a3('0xf')]);router['post']('/',auth[_0x12a3('0xc')](),controller['create']);router[_0x12a3('0x10')]('/:id',auth[_0x12a3('0xc')](),controller[_0x12a3('0x11')]);router[_0x12a3('0x12')]('/:id',auth['isAuthenticated'](),controller[_0x12a3('0x13')]);module[_0x12a3('0x14')]=router;
\ No newline at end of file
+var _0x9366=['show','put','/:id','update','delete','exports','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../config/environment','./voiceQueuesLog.controller','get','isAuthenticated','index'];(function(_0x2abc3d,_0x48edca){var _0x252745=function(_0x32bb6f){while(--_0x32bb6f){_0x2abc3d['push'](_0x2abc3d['shift']());}};_0x252745(++_0x48edca);}(_0x9366,0x14a));var _0x6936=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x9366[_0x3dd15e];return _0x231fd0;};'use strict';var multer=require('multer');var util=require(_0x6936('0x0'));var path=require(_0x6936('0x1'));var timeout=require(_0x6936('0x2'));var express=require(_0x6936('0x3'));var router=express[_0x6936('0x4')]();var fs_extra=require(_0x6936('0x5'));var auth=require(_0x6936('0x6'));var interaction=require('../../components/interaction/service');var config=require(_0x6936('0x7'));var controller=require(_0x6936('0x8'));router[_0x6936('0x9')]('/',auth[_0x6936('0xa')](),controller[_0x6936('0xb')]);router['get']('/:id',auth[_0x6936('0xa')](),controller[_0x6936('0xc')]);router['post']('/',auth['isAuthenticated'](),controller['create']);router[_0x6936('0xd')](_0x6936('0xe'),auth[_0x6936('0xa')](),controller[_0x6936('0xf')]);router[_0x6936('0x10')]('/:id',auth[_0x6936('0xa')](),controller['destroy']);module[_0x6936('0x11')]=router;
\ No newline at end of file
index 2940ee7..2acfbb6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1f52=['sequelize','moment','STRING','format'];(function(_0xac151d,_0x4ea1d2){var _0x111dba=function(_0x13d7f4){while(--_0x13d7f4){_0xac151d['push'](_0xac151d['shift']());}};_0x111dba(++_0x4ea1d2);}(_0x1f52,0x74));var _0x21f5=function(_0x55d1ac,_0x5c91c5){_0x55d1ac=_0x55d1ac-0x0;var _0x18459c=_0x1f52[_0x55d1ac];return _0x18459c;};'use strict';var Sequelize=require(_0x21f5('0x0'));var moment=require(_0x21f5('0x1'));module['exports']={'time':{'type':Sequelize[_0x21f5('0x2')]},'callid':{'type':Sequelize[_0x21f5('0x2')],'allowNull':![],'defaultValue':''},'queuename':{'type':Sequelize[_0x21f5('0x2')],'allowNull':![],'defaultValue':''},'agent':{'type':Sequelize['STRING'],'allowNull':![],'defaultValue':''},'event':{'type':Sequelize[_0x21f5('0x2')],'allowNull':![],'defaultValue':''},'data':{'type':Sequelize['STRING'],'allowNull':![],'defaultValue':''},'data1':{'type':Sequelize['STRING'],'allowNull':![],'defaultValue':''},'data2':{'type':Sequelize['STRING'],'allowNull':![],'defaultValue':''},'data3':{'type':Sequelize[_0x21f5('0x2')],'allowNull':![],'defaultValue':''},'data4':{'type':Sequelize[_0x21f5('0x2')],'allowNull':![],'defaultValue':''},'data5':{'type':Sequelize[_0x21f5('0x2')],'allowNull':![],'defaultValue':''},'dtm':{'type':Sequelize['DATE'],'allowNull':![],'defaultValue':moment()[_0x21f5('0x3')]('YYYY-MM-DD\x20HH:mm:ss')}};
\ No newline at end of file
+var _0x9fce=['STRING','format','YYYY-MM-DD\x20HH:mm:ss','sequelize','moment','exports'];(function(_0x5e6cb8,_0x1d1eb5){var _0x41754f=function(_0x5ef4ef){while(--_0x5ef4ef){_0x5e6cb8['push'](_0x5e6cb8['shift']());}};_0x41754f(++_0x1d1eb5);}(_0x9fce,0x99));var _0xe9fc=function(_0x5d88c0,_0x5d7d83){_0x5d88c0=_0x5d88c0-0x0;var _0x1b40f0=_0x9fce[_0x5d88c0];return _0x1b40f0;};'use strict';var Sequelize=require(_0xe9fc('0x0'));var moment=require(_0xe9fc('0x1'));module[_0xe9fc('0x2')]={'time':{'type':Sequelize[_0xe9fc('0x3')]},'callid':{'type':Sequelize[_0xe9fc('0x3')],'allowNull':![],'defaultValue':''},'queuename':{'type':Sequelize[_0xe9fc('0x3')],'allowNull':![],'defaultValue':''},'agent':{'type':Sequelize[_0xe9fc('0x3')],'allowNull':![],'defaultValue':''},'event':{'type':Sequelize[_0xe9fc('0x3')],'allowNull':![],'defaultValue':''},'data':{'type':Sequelize[_0xe9fc('0x3')],'allowNull':![],'defaultValue':''},'data1':{'type':Sequelize[_0xe9fc('0x3')],'allowNull':![],'defaultValue':''},'data2':{'type':Sequelize[_0xe9fc('0x3')],'allowNull':![],'defaultValue':''},'data3':{'type':Sequelize[_0xe9fc('0x3')],'allowNull':![],'defaultValue':''},'data4':{'type':Sequelize[_0xe9fc('0x3')],'allowNull':![],'defaultValue':''},'data5':{'type':Sequelize[_0xe9fc('0x3')],'allowNull':![],'defaultValue':''},'dtm':{'type':Sequelize['DATE'],'allowNull':![],'defaultValue':moment()[_0xe9fc('0x4')](_0xe9fc('0x5'))}};
\ No newline at end of file
index 2c0da11..0a1d886 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x360a=['stack','send','index','VoiceQueuesLog','fieldName','type','key','map','name','query','keys','filters','intersection','model','attributes','length','hasOwnProperty','sort','where','pick','filter','merge','VIRTUAL','options','findAll','rows','catch','show','params','rawAttributes','fields','include','find','create','body','eml-format','rimraf','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox','to-csv','fs-extra','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','end','status','json','offset','undefined','limit','count','Content-Range','apply','reject','save','update','then','destroy'];(function(_0x5d830f,_0x3f4134){var _0x37c848=function(_0x39cd73){while(--_0x39cd73){_0x5d830f['push'](_0x5d830f['shift']());}};_0x37c848(++_0x3f4134);}(_0x360a,0x1a4));var _0xa360=function(_0xa464c9,_0x7c86d8){_0xa464c9=_0xa464c9-0x0;var _0x3d73c4=_0x360a[_0xa464c9];return _0x3d73c4;};'use strict';var emlformat=require(_0xa360('0x0'));var rimraf=require(_0xa360('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0xa360('0x2'));var rp=require(_0xa360('0x3'));var moment=require(_0xa360('0x4'));var BPromise=require(_0xa360('0x5'));var Mustache=require(_0xa360('0x6'));var util=require(_0xa360('0x7'));var path=require(_0xa360('0x8'));var sox=require(_0xa360('0x9'));var csv=require(_0xa360('0xa'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0xa360('0xb'));var _=require(_0xa360('0xc'));var squel=require(_0xa360('0xd'));var crypto=require(_0xa360('0xe'));var jsforce=require('jsforce');var deskjs=require('desk.js');var toCsv=require('to-csv');var querystring=require(_0xa360('0xf'));var Papa=require(_0xa360('0x10'));var Redis=require(_0xa360('0x11'));var authService=require(_0xa360('0x12'));var qs=require('../../components/parsers/qs');var as=require(_0xa360('0x13'));var hardwareService=require(_0xa360('0x14'));var logger=require(_0xa360('0x15'))(_0xa360('0x16'));var utils=require(_0xa360('0x17'));var config=require(_0xa360('0x18'));var licenseUtil=require(_0xa360('0x19'));var db=require(_0xa360('0x1a'))['db'];function respondWithStatusCode(_0x1223ef,_0x1a7ae0){_0x1a7ae0=_0x1a7ae0||0xcc;return function(_0x1e36fd){if(_0x1e36fd){return _0x1223ef[_0xa360('0x1b')](_0x1a7ae0);}return _0x1223ef['status'](_0x1a7ae0)[_0xa360('0x1c')]();};}function respondWithResult(_0x32c505,_0x3a2bd1){_0x3a2bd1=_0x3a2bd1||0xc8;return function(_0x12461b){if(_0x12461b){return _0x32c505[_0xa360('0x1d')](_0x3a2bd1)[_0xa360('0x1e')](_0x12461b);}};}function respondWithFilteredResult(_0x2561d9,_0x1c3123){return function(_0x4d421b){if(_0x4d421b){var _0x188609=typeof _0x1c3123[_0xa360('0x1f')]===_0xa360('0x20')&&typeof _0x1c3123[_0xa360('0x21')]==='undefined';var _0x4fc7aa=_0x4d421b[_0xa360('0x22')];var _0x367688=_0x188609?0x0:_0x1c3123['offset'];var _0x44f995=_0x188609?_0x4d421b[_0xa360('0x22')]:_0x1c3123[_0xa360('0x1f')]+_0x1c3123['limit'];var _0x223951;if(_0x44f995>=_0x4fc7aa){_0x44f995=_0x4fc7aa;_0x223951=0xc8;}else{_0x223951=0xce;}_0x2561d9[_0xa360('0x1d')](_0x223951);return _0x2561d9['set'](_0xa360('0x23'),_0x367688+'-'+_0x44f995+'/'+_0x4fc7aa)[_0xa360('0x1e')](_0x4d421b);}return null;};}function patchUpdates(_0x8552fd){return function(_0x4ff25f){try{jsonpatch[_0xa360('0x24')](_0x4ff25f,_0x8552fd,!![]);}catch(_0x8ddd9d){return BPromise[_0xa360('0x25')](_0x8ddd9d);}return _0x4ff25f[_0xa360('0x26')]();};}function saveUpdates(_0x227509,_0x59a4ba){return function(_0xd2822f){if(_0xd2822f){return _0xd2822f[_0xa360('0x27')](_0x227509)[_0xa360('0x28')](function(_0x31b33b){return _0x31b33b;});}return null;};}function removeEntity(_0xa69bf,_0x318341){return function(_0x517894){if(_0x517894){return _0x517894[_0xa360('0x29')]()[_0xa360('0x28')](function(){_0xa69bf[_0xa360('0x1d')](0xcc)['end']();});}};}function handleEntityNotFound(_0x573141,_0x327503){return function(_0x14517c){if(!_0x14517c){_0x573141[_0xa360('0x1b')](0x194);}return _0x14517c;};}function handleError(_0x2891a3,_0x27da17){_0x27da17=_0x27da17||0x1f4;return function(_0x18b68c){logger['error'](_0x18b68c[_0xa360('0x2a')]);if(_0x18b68c['name']){delete _0x18b68c['name'];}_0x2891a3[_0xa360('0x1d')](_0x27da17)[_0xa360('0x2b')](_0x18b68c);};}exports[_0xa360('0x2c')]=function(_0x1784aa,_0x2f4e55){var _0x59ea58={},_0x7d4ec2={},_0x34d28b={'count':0x0,'rows':[]};var _0x5eff32=_['map'](db[_0xa360('0x2d')]['rawAttributes'],function(_0x2c4bbd){return{'name':_0x2c4bbd[_0xa360('0x2e')],'type':_0x2c4bbd[_0xa360('0x2f')][_0xa360('0x30')]};});_0x7d4ec2['model']=_[_0xa360('0x31')](_0x5eff32,_0xa360('0x32'));_0x7d4ec2[_0xa360('0x33')]=_[_0xa360('0x34')](_0x1784aa[_0xa360('0x33')]);_0x7d4ec2[_0xa360('0x35')]=_[_0xa360('0x36')](_0x7d4ec2[_0xa360('0x37')],_0x7d4ec2[_0xa360('0x33')]);_0x59ea58[_0xa360('0x38')]=_[_0xa360('0x36')](_0x7d4ec2[_0xa360('0x37')],qs['fields'](_0x1784aa[_0xa360('0x33')]['fields']));_0x59ea58[_0xa360('0x38')]=_0x59ea58[_0xa360('0x38')][_0xa360('0x39')]?_0x59ea58[_0xa360('0x38')]:_0x7d4ec2[_0xa360('0x37')];if(!_0x1784aa[_0xa360('0x33')][_0xa360('0x3a')]('nolimit')){_0x59ea58[_0xa360('0x21')]=qs[_0xa360('0x21')](_0x1784aa['query'][_0xa360('0x21')]);_0x59ea58[_0xa360('0x1f')]=qs[_0xa360('0x1f')](_0x1784aa[_0xa360('0x33')][_0xa360('0x1f')]);}_0x59ea58['order']=qs[_0xa360('0x3b')](_0x1784aa[_0xa360('0x33')][_0xa360('0x3b')]);_0x59ea58[_0xa360('0x3c')]=qs[_0xa360('0x35')](_[_0xa360('0x3d')](_0x1784aa[_0xa360('0x33')],_0x7d4ec2[_0xa360('0x35')]),_0x5eff32);if(_0x1784aa['query'][_0xa360('0x3e')]){_0x59ea58[_0xa360('0x3c')]=_[_0xa360('0x3f')](_0x59ea58[_0xa360('0x3c')],{'$or':_[_0xa360('0x31')](_0x5eff32,function(_0xd171e6){if(_0xd171e6[_0xa360('0x2f')]!==_0xa360('0x40')){var _0x4d2253={};_0x4d2253[_0xd171e6[_0xa360('0x32')]]={'$like':'%'+_0x1784aa[_0xa360('0x33')][_0xa360('0x3e')]+'%'};return _0x4d2253;}})});}_0x59ea58=_['merge']({},_0x59ea58,_0x1784aa[_0xa360('0x41')]);var _0x44713d={'where':_0x59ea58[_0xa360('0x3c')]};return db['VoiceQueuesLog'][_0xa360('0x22')](_0x44713d)['then'](function(_0x7f28b8){_0x34d28b[_0xa360('0x22')]=_0x7f28b8;if(_0x1784aa['query']['includeAll']){_0x59ea58['include']=[{'all':!![]}];}return db[_0xa360('0x2d')][_0xa360('0x42')](_0x59ea58);})[_0xa360('0x28')](function(_0x29eb29){_0x34d28b[_0xa360('0x43')]=_0x29eb29;return _0x34d28b;})['then'](respondWithFilteredResult(_0x2f4e55,_0x59ea58))[_0xa360('0x44')](handleError(_0x2f4e55,null));};exports[_0xa360('0x45')]=function(_0xb61bb8,_0x5b7725){var _0x3fac6a={'raw':!![],'where':{'id':_0xb61bb8[_0xa360('0x46')]['id']}},_0x1c6cfb={};_0x1c6cfb[_0xa360('0x37')]=_['keys'](db[_0xa360('0x2d')][_0xa360('0x47')]);_0x1c6cfb[_0xa360('0x33')]=_['keys'](_0xb61bb8[_0xa360('0x33')]);_0x1c6cfb[_0xa360('0x35')]=_[_0xa360('0x36')](_0x1c6cfb['model'],_0x1c6cfb['query']);_0x3fac6a[_0xa360('0x38')]=_['intersection'](_0x1c6cfb[_0xa360('0x37')],qs['fields'](_0xb61bb8['query'][_0xa360('0x48')]));_0x3fac6a['attributes']=_0x3fac6a[_0xa360('0x38')][_0xa360('0x39')]?_0x3fac6a[_0xa360('0x38')]:_0x1c6cfb[_0xa360('0x37')];if(_0xb61bb8[_0xa360('0x33')]['includeAll']){_0x3fac6a[_0xa360('0x49')]=[{'all':!![]}];}_0x3fac6a=_['merge']({},_0x3fac6a,_0xb61bb8[_0xa360('0x41')]);return db['VoiceQueuesLog'][_0xa360('0x4a')](_0x3fac6a)[_0xa360('0x28')](handleEntityNotFound(_0x5b7725,null))['then'](respondWithResult(_0x5b7725,null))[_0xa360('0x44')](handleError(_0x5b7725,null));};exports[_0xa360('0x4b')]=function(_0x5066ac,_0x45d645){return db[_0xa360('0x2d')][_0xa360('0x4b')](_0x5066ac[_0xa360('0x4c')],{})['then'](respondWithResult(_0x45d645,0xc9))[_0xa360('0x44')](handleError(_0x45d645,null));};exports['update']=function(_0x53a8f4,_0x31ab6c){if(_0x53a8f4['body']['id']){delete _0x53a8f4[_0xa360('0x4c')]['id'];}return db[_0xa360('0x2d')][_0xa360('0x4a')]({'where':{'id':_0x53a8f4[_0xa360('0x46')]['id']}})['then'](handleEntityNotFound(_0x31ab6c,null))[_0xa360('0x28')](saveUpdates(_0x53a8f4[_0xa360('0x4c')],null))[_0xa360('0x28')](respondWithResult(_0x31ab6c,null))[_0xa360('0x44')](handleError(_0x31ab6c,null));};exports['destroy']=function(_0x2d9787,_0xaa1e9a){return db[_0xa360('0x2d')][_0xa360('0x4a')]({'where':{'id':_0x2d9787[_0xa360('0x46')]['id']}})[_0xa360('0x28')](handleEntityNotFound(_0xaa1e9a,null))[_0xa360('0x28')](removeEntity(_0xaa1e9a,null))[_0xa360('0x44')](handleError(_0xaa1e9a,null));};
\ No newline at end of file
+var _0xf1a1=['attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','pick','merge','type','VIRTUAL','filter','options','VoiceQueuesLog','count','includeAll','rows','catch','params','keys','create','body','find','eml-format','zip-dir','request-promise','moment','bluebird','util','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/utils','../../config/environment','../../config/license/util','sendStatus','status','end','json','offset','limit','set','apply','reject','update','then','destroy','send','index','map','rawAttributes','fieldName','key','model','name','query','filters','intersection'];(function(_0x411fb2,_0x3ffec0){var _0xb804a3=function(_0x52107a){while(--_0x52107a){_0x411fb2['push'](_0x411fb2['shift']());}};_0xb804a3(++_0x3ffec0);}(_0xf1a1,0x1c2));var _0x1f1a=function(_0x56b285,_0x4449a2){_0x56b285=_0x56b285-0x0;var _0x261f91=_0xf1a1[_0x56b285];return _0x261f91;};'use strict';var emlformat=require(_0x1f1a('0x0'));var rimraf=require('rimraf');var zipdir=require(_0x1f1a('0x1'));var jsonpatch=require('fast-json-patch');var rp=require(_0x1f1a('0x2'));var moment=require(_0x1f1a('0x3'));var BPromise=require(_0x1f1a('0x4'));var Mustache=require('mustache');var util=require(_0x1f1a('0x5'));var path=require('path');var sox=require(_0x1f1a('0x6'));var csv=require(_0x1f1a('0x7'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x1f1a('0x8'));var _=require(_0x1f1a('0x9'));var squel=require(_0x1f1a('0xa'));var crypto=require(_0x1f1a('0xb'));var jsforce=require(_0x1f1a('0xc'));var deskjs=require('desk.js');var toCsv=require(_0x1f1a('0x7'));var querystring=require('querystring');var Papa=require(_0x1f1a('0xd'));var Redis=require(_0x1f1a('0xe'));var authService=require(_0x1f1a('0xf'));var qs=require(_0x1f1a('0x10'));var as=require(_0x1f1a('0x11'));var hardwareService=require(_0x1f1a('0x12'));var logger=require(_0x1f1a('0x13'))(_0x1f1a('0x14'));var utils=require(_0x1f1a('0x15'));var config=require(_0x1f1a('0x16'));var licenseUtil=require(_0x1f1a('0x17'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x40947f,_0x215dd1){_0x215dd1=_0x215dd1||0xcc;return function(_0x3ba245){if(_0x3ba245){return _0x40947f[_0x1f1a('0x18')](_0x215dd1);}return _0x40947f[_0x1f1a('0x19')](_0x215dd1)[_0x1f1a('0x1a')]();};}function respondWithResult(_0x52043c,_0x3c7947){_0x3c7947=_0x3c7947||0xc8;return function(_0x426643){if(_0x426643){return _0x52043c[_0x1f1a('0x19')](_0x3c7947)[_0x1f1a('0x1b')](_0x426643);}};}function respondWithFilteredResult(_0x5b8de7,_0x3bb3b6){return function(_0x54ca66){if(_0x54ca66){var _0x4e2bb8=typeof _0x3bb3b6[_0x1f1a('0x1c')]==='undefined'&&typeof _0x3bb3b6['limit']==='undefined';var _0x2fdf2a=_0x54ca66['count'];var _0x2f9ce0=_0x4e2bb8?0x0:_0x3bb3b6[_0x1f1a('0x1c')];var _0x2392eb=_0x4e2bb8?_0x54ca66['count']:_0x3bb3b6['offset']+_0x3bb3b6[_0x1f1a('0x1d')];var _0x142294;if(_0x2392eb>=_0x2fdf2a){_0x2392eb=_0x2fdf2a;_0x142294=0xc8;}else{_0x142294=0xce;}_0x5b8de7[_0x1f1a('0x19')](_0x142294);return _0x5b8de7[_0x1f1a('0x1e')]('Content-Range',_0x2f9ce0+'-'+_0x2392eb+'/'+_0x2fdf2a)['json'](_0x54ca66);}return null;};}function patchUpdates(_0x3163f2){return function(_0x14f34f){try{jsonpatch[_0x1f1a('0x1f')](_0x14f34f,_0x3163f2,!![]);}catch(_0x250637){return BPromise[_0x1f1a('0x20')](_0x250637);}return _0x14f34f['save']();};}function saveUpdates(_0x1e1777,_0x1e5f2f){return function(_0x47b001){if(_0x47b001){return _0x47b001[_0x1f1a('0x21')](_0x1e1777)[_0x1f1a('0x22')](function(_0x93c87d){return _0x93c87d;});}return null;};}function removeEntity(_0x212526,_0x26136d){return function(_0x1ba3de){if(_0x1ba3de){return _0x1ba3de[_0x1f1a('0x23')]()['then'](function(){_0x212526['status'](0xcc)['end']();});}};}function handleEntityNotFound(_0x3c9698,_0x1df74d){return function(_0x293aa0){if(!_0x293aa0){_0x3c9698['sendStatus'](0x194);}return _0x293aa0;};}function handleError(_0x2e9f21,_0x27997c){_0x27997c=_0x27997c||0x1f4;return function(_0x39f109){logger['error'](_0x39f109['stack']);if(_0x39f109['name']){delete _0x39f109['name'];}_0x2e9f21[_0x1f1a('0x19')](_0x27997c)[_0x1f1a('0x24')](_0x39f109);};}exports[_0x1f1a('0x25')]=function(_0x546f96,_0x595ba1){var _0xc8ec51={},_0x4c0c59={},_0x281cd8={'count':0x0,'rows':[]};var _0x458514=_[_0x1f1a('0x26')](db['VoiceQueuesLog'][_0x1f1a('0x27')],function(_0x4e6a3f){return{'name':_0x4e6a3f[_0x1f1a('0x28')],'type':_0x4e6a3f['type'][_0x1f1a('0x29')]};});_0x4c0c59[_0x1f1a('0x2a')]=_[_0x1f1a('0x26')](_0x458514,_0x1f1a('0x2b'));_0x4c0c59['query']=_['keys'](_0x546f96[_0x1f1a('0x2c')]);_0x4c0c59[_0x1f1a('0x2d')]=_[_0x1f1a('0x2e')](_0x4c0c59[_0x1f1a('0x2a')],_0x4c0c59['query']);_0xc8ec51[_0x1f1a('0x2f')]=_[_0x1f1a('0x2e')](_0x4c0c59[_0x1f1a('0x2a')],qs[_0x1f1a('0x30')](_0x546f96['query']['fields']));_0xc8ec51[_0x1f1a('0x2f')]=_0xc8ec51[_0x1f1a('0x2f')][_0x1f1a('0x31')]?_0xc8ec51[_0x1f1a('0x2f')]:_0x4c0c59[_0x1f1a('0x2a')];if(!_0x546f96[_0x1f1a('0x2c')][_0x1f1a('0x32')](_0x1f1a('0x33'))){_0xc8ec51[_0x1f1a('0x1d')]=qs[_0x1f1a('0x1d')](_0x546f96[_0x1f1a('0x2c')][_0x1f1a('0x1d')]);_0xc8ec51[_0x1f1a('0x1c')]=qs[_0x1f1a('0x1c')](_0x546f96[_0x1f1a('0x2c')][_0x1f1a('0x1c')]);}_0xc8ec51[_0x1f1a('0x34')]=qs[_0x1f1a('0x35')](_0x546f96['query'][_0x1f1a('0x35')]);_0xc8ec51[_0x1f1a('0x36')]=qs[_0x1f1a('0x2d')](_[_0x1f1a('0x37')](_0x546f96[_0x1f1a('0x2c')],_0x4c0c59[_0x1f1a('0x2d')]),_0x458514);if(_0x546f96[_0x1f1a('0x2c')]['filter']){_0xc8ec51[_0x1f1a('0x36')]=_[_0x1f1a('0x38')](_0xc8ec51[_0x1f1a('0x36')],{'$or':_[_0x1f1a('0x26')](_0x458514,function(_0x3e1e94){if(_0x3e1e94[_0x1f1a('0x39')]!==_0x1f1a('0x3a')){var _0x5c4222={};_0x5c4222[_0x3e1e94[_0x1f1a('0x2b')]]={'$like':'%'+_0x546f96['query'][_0x1f1a('0x3b')]+'%'};return _0x5c4222;}})});}_0xc8ec51=_['merge']({},_0xc8ec51,_0x546f96[_0x1f1a('0x3c')]);var _0x5ccb5b={'where':_0xc8ec51[_0x1f1a('0x36')]};return db[_0x1f1a('0x3d')]['count'](_0x5ccb5b)[_0x1f1a('0x22')](function(_0x22fac8){_0x281cd8[_0x1f1a('0x3e')]=_0x22fac8;if(_0x546f96[_0x1f1a('0x2c')][_0x1f1a('0x3f')]){_0xc8ec51['include']=[{'all':!![]}];}return db[_0x1f1a('0x3d')]['findAll'](_0xc8ec51);})[_0x1f1a('0x22')](function(_0x3b1008){_0x281cd8[_0x1f1a('0x40')]=_0x3b1008;return _0x281cd8;})['then'](respondWithFilteredResult(_0x595ba1,_0xc8ec51))[_0x1f1a('0x41')](handleError(_0x595ba1,null));};exports['show']=function(_0x27f6d4,_0x372b08){var _0x4c3c3c={'raw':!![],'where':{'id':_0x27f6d4[_0x1f1a('0x42')]['id']}},_0x469d56={};_0x469d56[_0x1f1a('0x2a')]=_[_0x1f1a('0x43')](db[_0x1f1a('0x3d')][_0x1f1a('0x27')]);_0x469d56[_0x1f1a('0x2c')]=_[_0x1f1a('0x43')](_0x27f6d4[_0x1f1a('0x2c')]);_0x469d56[_0x1f1a('0x2d')]=_['intersection'](_0x469d56[_0x1f1a('0x2a')],_0x469d56['query']);_0x4c3c3c[_0x1f1a('0x2f')]=_[_0x1f1a('0x2e')](_0x469d56['model'],qs[_0x1f1a('0x30')](_0x27f6d4[_0x1f1a('0x2c')]['fields']));_0x4c3c3c[_0x1f1a('0x2f')]=_0x4c3c3c[_0x1f1a('0x2f')][_0x1f1a('0x31')]?_0x4c3c3c[_0x1f1a('0x2f')]:_0x469d56[_0x1f1a('0x2a')];if(_0x27f6d4['query'][_0x1f1a('0x3f')]){_0x4c3c3c['include']=[{'all':!![]}];}_0x4c3c3c=_[_0x1f1a('0x38')]({},_0x4c3c3c,_0x27f6d4[_0x1f1a('0x3c')]);return db[_0x1f1a('0x3d')]['find'](_0x4c3c3c)['then'](handleEntityNotFound(_0x372b08,null))['then'](respondWithResult(_0x372b08,null))[_0x1f1a('0x41')](handleError(_0x372b08,null));};exports[_0x1f1a('0x44')]=function(_0x117393,_0x15904b){return db[_0x1f1a('0x3d')][_0x1f1a('0x44')](_0x117393[_0x1f1a('0x45')],{})[_0x1f1a('0x22')](respondWithResult(_0x15904b,0xc9))[_0x1f1a('0x41')](handleError(_0x15904b,null));};exports[_0x1f1a('0x21')]=function(_0x3942c8,_0x500d19){if(_0x3942c8[_0x1f1a('0x45')]['id']){delete _0x3942c8['body']['id'];}return db[_0x1f1a('0x3d')][_0x1f1a('0x46')]({'where':{'id':_0x3942c8[_0x1f1a('0x42')]['id']}})[_0x1f1a('0x22')](handleEntityNotFound(_0x500d19,null))['then'](saveUpdates(_0x3942c8[_0x1f1a('0x45')],null))[_0x1f1a('0x22')](respondWithResult(_0x500d19,null))[_0x1f1a('0x41')](handleError(_0x500d19,null));};exports[_0x1f1a('0x23')]=function(_0x5d90af,_0x1e8d47){return db[_0x1f1a('0x3d')][_0x1f1a('0x46')]({'where':{'id':_0x5d90af[_0x1f1a('0x42')]['id']}})[_0x1f1a('0x22')](handleEntityNotFound(_0x1e8d47,null))[_0x1f1a('0x22')](removeEntity(_0x1e8d47,null))[_0x1f1a('0x41')](handleError(_0x1e8d47,null));};
\ No newline at end of file
index 5997b8c..17e8860 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1571=['../../config/environment','./voiceQueuesLog.attributes','exports','event','util','api','moment','request-promise','path'];(function(_0x5b6654,_0x5bd6ea){var _0x2b9c13=function(_0x35fa3d){while(--_0x35fa3d){_0x5b6654['push'](_0x5b6654['shift']());}};_0x2b9c13(++_0x5bd6ea);}(_0x1571,0x199));var _0x1157=function(_0x3d1807,_0x4fabc2){_0x3d1807=_0x3d1807-0x0;var _0x2b15c0=_0x1571[_0x3d1807];return _0x2b15c0;};'use strict';var _=require('lodash');var util=require(_0x1157('0x0'));var logger=require('../../config/logger')(_0x1157('0x1'));var moment=require(_0x1157('0x2'));var BPromise=require('bluebird');var rp=require(_0x1157('0x3'));var fs=require('fs');var path=require(_0x1157('0x4'));var rimraf=require('rimraf');var config=require(_0x1157('0x5'));var attributes=require(_0x1157('0x6'));module[_0x1157('0x7')]=function(_0x2f0a3f,_0xa59bd6){return _0x2f0a3f['define']('VoiceQueuesLog',attributes,{'tableName':'voice_queues_log','paranoid':![],'indexes':[{'name':'event_dtm','fields':[_0x1157('0x8'),'dtm']}],'timestamps':![]});};
\ No newline at end of file
+var _0x49cb=['path','rimraf','../../config/environment','./voiceQueuesLog.attributes','exports','define','VoiceQueuesLog','voice_queues_log','event_dtm','event','lodash','util','../../config/logger','api','moment','bluebird','request-promise'];(function(_0x4fd017,_0x2b96e2){var _0x8c376b=function(_0xca2887){while(--_0xca2887){_0x4fd017['push'](_0x4fd017['shift']());}};_0x8c376b(++_0x2b96e2);}(_0x49cb,0x1e6));var _0xb49c=function(_0x4b0bb1,_0x51e0a9){_0x4b0bb1=_0x4b0bb1-0x0;var _0x496740=_0x49cb[_0x4b0bb1];return _0x496740;};'use strict';var _=require(_0xb49c('0x0'));var util=require(_0xb49c('0x1'));var logger=require(_0xb49c('0x2'))(_0xb49c('0x3'));var moment=require(_0xb49c('0x4'));var BPromise=require(_0xb49c('0x5'));var rp=require(_0xb49c('0x6'));var fs=require('fs');var path=require(_0xb49c('0x7'));var rimraf=require(_0xb49c('0x8'));var config=require(_0xb49c('0x9'));var attributes=require(_0xb49c('0xa'));module[_0xb49c('0xb')]=function(_0x32f52b,_0x5eee6f){return _0x32f52b[_0xb49c('0xc')](_0xb49c('0xd'),attributes,{'tableName':_0xb49c('0xe'),'paranoid':![],'indexes':[{'name':_0xb49c('0xf'),'fields':[_0xb49c('0x10'),'dtm']}],'timestamps':![]});};
\ No newline at end of file
index 4760af2..11159f5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd6e1=['error','message','result','catch','lodash','moment','bluebird','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','http','request','then','info','VoiceQueuesLog,\x20%s,\x20%s','debug','VoiceQueuesLog,\x20%s,\x20%s,\x20%s','request\x20sent','stringify'];(function(_0x3e0dea,_0x484614){var _0x20e26c=function(_0x19eb41){while(--_0x19eb41){_0x3e0dea['push'](_0x3e0dea['shift']());}};_0x20e26c(++_0x484614);}(_0xd6e1,0x17a));var _0x1d6e=function(_0x4565bf,_0x5ad9d6){_0x4565bf=_0x4565bf-0x0;var _0x5610ba=_0xd6e1[_0x4565bf];return _0x5610ba;};'use strict';var _=require(_0x1d6e('0x0'));var util=require('util');var moment=require(_0x1d6e('0x1'));var BPromise=require(_0x1d6e('0x2'));var rs=require('randomstring');var fs=require('fs');var Redis=require('ioredis');var db=require(_0x1d6e('0x3'))['db'];var utils=require(_0x1d6e('0x4'));var logger=require(_0x1d6e('0x5'))(_0x1d6e('0x6'));var config=require(_0x1d6e('0x7'));var jayson=require(_0x1d6e('0x8'));var client=jayson['client'][_0x1d6e('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x568f32,_0x38bb53,_0x5e0987){return new BPromise(function(_0x35ee30,_0x39e4a3){return client[_0x1d6e('0xa')](_0x568f32,_0x5e0987)[_0x1d6e('0xb')](function(_0x80634d){logger[_0x1d6e('0xc')](_0x1d6e('0xd'),_0x38bb53,'request\x20sent');logger[_0x1d6e('0xe')](_0x1d6e('0xf'),_0x38bb53,_0x1d6e('0x10'),JSON[_0x1d6e('0x11')](_0x80634d));if(_0x80634d[_0x1d6e('0x12')]){if(_0x80634d[_0x1d6e('0x12')]['code']===0x1f4){logger[_0x1d6e('0x12')](_0x1d6e('0xd'),_0x38bb53,_0x80634d[_0x1d6e('0x12')][_0x1d6e('0x13')]);return _0x39e4a3(_0x80634d[_0x1d6e('0x12')]['message']);}logger[_0x1d6e('0x12')](_0x1d6e('0xd'),_0x38bb53,_0x80634d[_0x1d6e('0x12')]['message']);return _0x35ee30(_0x80634d[_0x1d6e('0x12')]['message']);}else{logger['info'](_0x1d6e('0xd'),_0x38bb53,'request\x20sent');_0x35ee30(_0x80634d[_0x1d6e('0x14')][_0x1d6e('0x13')]);}})[_0x1d6e('0x15')](function(_0x269861){logger[_0x1d6e('0x12')]('VoiceQueuesLog,\x20%s,\x20%s',_0x38bb53,_0x269861);_0x39e4a3(_0x269861);});});}
\ No newline at end of file
+var _0xa8fd=['bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','jayson/promise','client','http','request','then','info','VoiceQueuesLog,\x20%s,\x20%s','request\x20sent','error','message','result','catch','util','moment'];(function(_0x375325,_0x57a850){var _0x228f57=function(_0x2ad744){while(--_0x2ad744){_0x375325['push'](_0x375325['shift']());}};_0x228f57(++_0x57a850);}(_0xa8fd,0x17a));var _0xda8f=function(_0x503ba7,_0xe5e1b5){_0x503ba7=_0x503ba7-0x0;var _0x221f30=_0xa8fd[_0x503ba7];return _0x221f30;};'use strict';var _=require('lodash');var util=require(_0xda8f('0x0'));var moment=require(_0xda8f('0x1'));var BPromise=require(_0xda8f('0x2'));var rs=require(_0xda8f('0x3'));var fs=require('fs');var Redis=require(_0xda8f('0x4'));var db=require(_0xda8f('0x5'))['db'];var utils=require(_0xda8f('0x6'));var logger=require(_0xda8f('0x7'))('rpc');var config=require('../../config/environment');var jayson=require(_0xda8f('0x8'));var client=jayson[_0xda8f('0x9')][_0xda8f('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x5e9bf2,_0x53ef1f,_0x5ee116){return new BPromise(function(_0x4c248e,_0x3f1f6b){return client[_0xda8f('0xb')](_0x5e9bf2,_0x5ee116)[_0xda8f('0xc')](function(_0x5f23b0){logger[_0xda8f('0xd')](_0xda8f('0xe'),_0x53ef1f,_0xda8f('0xf'));logger['debug']('VoiceQueuesLog,\x20%s,\x20%s,\x20%s',_0x53ef1f,_0xda8f('0xf'),JSON['stringify'](_0x5f23b0));if(_0x5f23b0[_0xda8f('0x10')]){if(_0x5f23b0[_0xda8f('0x10')]['code']===0x1f4){logger[_0xda8f('0x10')]('VoiceQueuesLog,\x20%s,\x20%s',_0x53ef1f,_0x5f23b0[_0xda8f('0x10')][_0xda8f('0x11')]);return _0x3f1f6b(_0x5f23b0[_0xda8f('0x10')][_0xda8f('0x11')]);}logger[_0xda8f('0x10')]('VoiceQueuesLog,\x20%s,\x20%s',_0x53ef1f,_0x5f23b0[_0xda8f('0x10')]['message']);return _0x4c248e(_0x5f23b0[_0xda8f('0x10')]['message']);}else{logger[_0xda8f('0xd')](_0xda8f('0xe'),_0x53ef1f,_0xda8f('0xf'));_0x4c248e(_0x5f23b0[_0xda8f('0x12')][_0xda8f('0x11')]);}})[_0xda8f('0x13')](function(_0x3194d2){logger[_0xda8f('0x10')](_0xda8f('0xe'),_0x53ef1f,_0x3194d2);_0x3f1f6b(_0x3194d2);});});}
\ No newline at end of file
index d1df385..9f6e93e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5fae=['Router','../../components/auth/service','../../components/interaction/service','./voiceRecording.controller','isAuthenticated','index','/describe','get','show','/:id/downloads','/:id/transcribe','downloadTranscribe','create','post','runTranscribe','put','/:id','update','delete','destroy','exports','multer','path','connect-timeout','express'];(function(_0x14a119,_0x4110b5){var _0x2690a5=function(_0x13e833){while(--_0x13e833){_0x14a119['push'](_0x14a119['shift']());}};_0x2690a5(++_0x4110b5);}(_0x5fae,0x1be));var _0xe5fa=function(_0x4fd5e3,_0x4279a7){_0x4fd5e3=_0x4fd5e3-0x0;var _0x4b0750=_0x5fae[_0x4fd5e3];return _0x4b0750;};'use strict';var multer=require(_0xe5fa('0x0'));var util=require('util');var path=require(_0xe5fa('0x1'));var timeout=require(_0xe5fa('0x2'));var express=require(_0xe5fa('0x3'));var router=express[_0xe5fa('0x4')]();var fs_extra=require('fs-extra');var auth=require(_0xe5fa('0x5'));var interaction=require(_0xe5fa('0x6'));var config=require('../../config/environment');var controller=require(_0xe5fa('0x7'));router['get']('/',auth[_0xe5fa('0x8')](),controller[_0xe5fa('0x9')]);router['get'](_0xe5fa('0xa'),auth[_0xe5fa('0x8')](),controller['describe']);router[_0xe5fa('0xb')]('/:id',auth[_0xe5fa('0x8')](),controller[_0xe5fa('0xc')]);router[_0xe5fa('0xb')]('/:id/download',auth[_0xe5fa('0x8')](),controller['download']);router[_0xe5fa('0xb')](_0xe5fa('0xd'),controller['downloads']);router[_0xe5fa('0xb')](_0xe5fa('0xe'),auth['isAuthenticated'](),controller[_0xe5fa('0xf')]);router['post']('/',auth[_0xe5fa('0x8')](),controller[_0xe5fa('0x10')]);router[_0xe5fa('0x11')](_0xe5fa('0xe'),auth[_0xe5fa('0x8')](),controller[_0xe5fa('0x12')]);router[_0xe5fa('0x13')](_0xe5fa('0x14'),auth[_0xe5fa('0x8')](),controller[_0xe5fa('0x15')]);router[_0xe5fa('0x16')](_0xe5fa('0x14'),auth[_0xe5fa('0x8')](),controller[_0xe5fa('0x17')]);module[_0xe5fa('0x18')]=router;
\ No newline at end of file
+var _0xd234=['./voiceRecording.controller','isAuthenticated','index','get','/describe','describe','/:id','/:id/download','download','/:id/downloads','downloads','/:id/transcribe','post','runTranscribe','update','delete','exports','multer','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service'];(function(_0x2af5ec,_0x5cf1f8){var _0xd144aa=function(_0x1a1c81){while(--_0x1a1c81){_0x2af5ec['push'](_0x2af5ec['shift']());}};_0xd144aa(++_0x5cf1f8);}(_0xd234,0xe1));var _0x4d23=function(_0x3f3062,_0x82c574){_0x3f3062=_0x3f3062-0x0;var _0x22afe0=_0xd234[_0x3f3062];return _0x22afe0;};'use strict';var multer=require(_0x4d23('0x0'));var util=require(_0x4d23('0x1'));var path=require(_0x4d23('0x2'));var timeout=require(_0x4d23('0x3'));var express=require(_0x4d23('0x4'));var router=express[_0x4d23('0x5')]();var fs_extra=require(_0x4d23('0x6'));var auth=require(_0x4d23('0x7'));var interaction=require(_0x4d23('0x8'));var config=require('../../config/environment');var controller=require(_0x4d23('0x9'));router['get']('/',auth[_0x4d23('0xa')](),controller[_0x4d23('0xb')]);router[_0x4d23('0xc')](_0x4d23('0xd'),auth[_0x4d23('0xa')](),controller[_0x4d23('0xe')]);router['get'](_0x4d23('0xf'),auth['isAuthenticated'](),controller['show']);router[_0x4d23('0xc')](_0x4d23('0x10'),auth[_0x4d23('0xa')](),controller[_0x4d23('0x11')]);router[_0x4d23('0xc')](_0x4d23('0x12'),controller[_0x4d23('0x13')]);router[_0x4d23('0xc')](_0x4d23('0x14'),auth['isAuthenticated'](),controller['downloadTranscribe']);router[_0x4d23('0x15')]('/',auth[_0x4d23('0xa')](),controller['create']);router[_0x4d23('0x15')](_0x4d23('0x14'),auth[_0x4d23('0xa')](),controller[_0x4d23('0x16')]);router['put']('/:id',auth['isAuthenticated'](),controller[_0x4d23('0x17')]);router[_0x4d23('0x18')]('/:id',auth[_0x4d23('0xa')](),controller['destroy']);module[_0x4d23('0x19')]=router;
\ No newline at end of file
index 33d1258..cb993cd 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(_0x39096d,_0x51f8a0){var _0x13da4f=function(_0x11e6b2){while(--_0x11e6b2){_0x39096d['push'](_0x39096d['shift']());}};_0x13da4f(++_0x51f8a0);}(_0xa9e0,0x123));var _0x0a9e=function(_0x25bea7,_0x49ab45){_0x25bea7=_0x25bea7-0x0;var _0x175952=_0xa9e0[_0x25bea7];return _0x175952;};'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(_0xbd08b4,_0x4790ed){var _0x314f1e=function(_0x161589){while(--_0x161589){_0xbd08b4['push'](_0xbd08b4['shift']());}};_0x314f1e(++_0x4790ed);}(_0xa9e0,0x123));var _0x0a9e=function(_0x9aada2,_0xd2d349){_0x9aada2=_0x9aada2-0x0;var _0x196dff=_0xa9e0[_0x9aada2];return _0x196dff;};'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 1ff9f80..ed981d0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1dc9=['to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','querystring','aws-sdk','uuid/v4','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','json','undefined','limit','count','offset','apply','reject','save','update','then','destroy','end','error','stack','name','send','index','map','VoiceRecording','fieldName','type','key','model','differenceBy','format','query','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort','filters','pick','filter','merge','where','VIRTUAL','includeAll','findAll','show','params','keys','include','options','catch','create','body','find','describe','download','../../components/encryptor','uniqueid','value','%s.cypher','existsSync','decryptFile','secrets','recording','VoiceRecording\x20not\x20found','filename','extname','message','downloads','sequelize','MD5','token','$and','push','Sequelize','unlink','isNil','Entity\x20not\x20found','cancellazione\x20fisica\x20documento\x20%s','info','File:\x20\x22','unlinkSync','.cypher','\x22\x20trovato\x20eseguo\x20la\x20cancellazione','listBuckets','createBucket','upload','TranscribeService','[RUNTRANSCRIPT][%d]\x20Starting\x20voice\x20recording\x20upload\x20in\x20bucket\x20%s','readFileSync','[RUNTRANSCRIPT][%d]\x20Voice\x20recording\x20uploaded\x20in\x20bucket\x20%s\x20(%s)','Location','bucket','location','[RUNTRANSCRIPT][%d]\x20Transcription\x20job\x20%s\x20created','TranscriptionJob','TranscriptionJobName','transcribeName','transcribeStatus','TranscriptionJobStatus','runTranscribe','findOne','ValidationError','Voice\x20Recording\x20not\x20found','Setting','transcribe','transcribeAccountId','transcribeRegion','Transcribe\x20not\x20configured','sentiment','sentimentRegion','language','Cloud\x20Provider\x20not\x20available','data1','data2','Buckets','Name','[RUNTRANSCRIPT][%d]\x20Bucket\x20%s\x20not\x20available','NEW','[RUNTRANSCRIPT][%d]\x20Transcript\x20action\x20already\x20requested','IN_PROGRESS','tempSentiment','runSentiment','updateAttributes','writeFile','downloadTranscribe','fileText','root','/server/files/transcribes/transcribe_','.txt','Transcript\x20not\x20available','eml-format','rimraf','fast-json-patch','request-promise','moment','util','path','sox'];(function(_0x544072,_0xc41ee1){var _0x590bf6=function(_0x41107f){while(--_0x41107f){_0x544072['push'](_0x544072['shift']());}};_0x590bf6(++_0xc41ee1);}(_0x1dc9,0x132));var _0x91dc=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x1dc9[_0x3dd15e];return _0x231fd0;};'use strict';var emlformat=require(_0x91dc('0x0'));var rimraf=require(_0x91dc('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0x91dc('0x2'));var rp=require(_0x91dc('0x3'));var moment=require(_0x91dc('0x4'));var BPromise=require('bluebird');var Mustache=require('mustache');var util=require(_0x91dc('0x5'));var path=require(_0x91dc('0x6'));var sox=require(_0x91dc('0x7'));var csv=require(_0x91dc('0x8'));var ejs=require(_0x91dc('0x9'));var fs=require('fs');var fs_extra=require(_0x91dc('0xa'));var _=require(_0x91dc('0xb'));var squel=require(_0x91dc('0xc'));var crypto=require(_0x91dc('0xd'));var jsforce=require(_0x91dc('0xe'));var deskjs=require(_0x91dc('0xf'));var toCsv=require('to-csv');var querystring=require(_0x91dc('0x10'));var Papa=require('papaparse');var AWS=require(_0x91dc('0x11'));var uuidv4=require(_0x91dc('0x12'));var Redis=require(_0x91dc('0x13'));var authService=require(_0x91dc('0x14'));var qs=require('../../components/parsers/qs');var as=require(_0x91dc('0x15'));var hardwareService=require('../../config/license/hardware');var logger=require('../../config/logger')(_0x91dc('0x16'));var utils=require(_0x91dc('0x17'));var config=require(_0x91dc('0x18'));var licenseUtil=require(_0x91dc('0x19'));var db=require(_0x91dc('0x1a'))['db'];function respondWithStatusCode(_0x292322,_0x1e23d9){_0x1e23d9=_0x1e23d9||0xcc;return function(_0x2c1219){if(_0x2c1219){return _0x292322[_0x91dc('0x1b')](_0x1e23d9);}return _0x292322[_0x91dc('0x1c')](_0x1e23d9)['end']();};}function respondWithResult(_0x1a0c27,_0x42f953){_0x42f953=_0x42f953||0xc8;return function(_0x4b4711){if(_0x4b4711){return _0x1a0c27[_0x91dc('0x1c')](_0x42f953)[_0x91dc('0x1d')](_0x4b4711);}};}function respondWithFilteredResult(_0x10a4c2,_0x4c8e2c){return function(_0x59e9f0){if(_0x59e9f0){var _0x105146=typeof _0x4c8e2c['offset']===_0x91dc('0x1e')&&typeof _0x4c8e2c[_0x91dc('0x1f')]===_0x91dc('0x1e');var _0x2be721=_0x59e9f0[_0x91dc('0x20')];var _0x3a6a78=_0x105146?0x0:_0x4c8e2c[_0x91dc('0x21')];var _0x16bbc7=_0x105146?_0x59e9f0[_0x91dc('0x20')]:_0x4c8e2c[_0x91dc('0x21')]+_0x4c8e2c[_0x91dc('0x1f')];var _0x94d80d;if(_0x16bbc7>=_0x2be721){_0x16bbc7=_0x2be721;_0x94d80d=0xc8;}else{_0x94d80d=0xce;}_0x10a4c2['status'](_0x94d80d);return _0x10a4c2['set']('Content-Range',_0x3a6a78+'-'+_0x16bbc7+'/'+_0x2be721)[_0x91dc('0x1d')](_0x59e9f0);}return null;};}function patchUpdates(_0x1454ea){return function(_0x188119){try{jsonpatch[_0x91dc('0x22')](_0x188119,_0x1454ea,!![]);}catch(_0x4f4e84){return BPromise[_0x91dc('0x23')](_0x4f4e84);}return _0x188119[_0x91dc('0x24')]();};}function saveUpdates(_0x31acc6,_0x528530){return function(_0x20e746){if(_0x20e746){return _0x20e746[_0x91dc('0x25')](_0x31acc6)[_0x91dc('0x26')](function(_0x307ddb){return _0x307ddb;});}return null;};}function removeEntity(_0x13d2a2,_0x41c7ee){return function(_0x5764c6){if(_0x5764c6){return _0x5764c6[_0x91dc('0x27')]()[_0x91dc('0x26')](function(){_0x13d2a2[_0x91dc('0x1c')](0xcc)[_0x91dc('0x28')]();});}};}function handleEntityNotFound(_0x585b85,_0x53a0ba){return function(_0x34a3cb){if(!_0x34a3cb){_0x585b85[_0x91dc('0x1b')](0x194);}return _0x34a3cb;};}function handleError(_0x1c0223,_0x1ed23e){_0x1ed23e=_0x1ed23e||0x1f4;return function(_0x907b7e){logger[_0x91dc('0x29')](_0x907b7e[_0x91dc('0x2a')]);if(_0x907b7e['name']){delete _0x907b7e[_0x91dc('0x2b')];}_0x1c0223[_0x91dc('0x1c')](_0x1ed23e)[_0x91dc('0x2c')](_0x907b7e);};}exports[_0x91dc('0x2d')]=function(_0x15007e,_0x28e7f2){var _0x19c914={},_0x43e877={},_0x4a1393={'count':0x0,'rows':[]};var _0x1079a0=_[_0x91dc('0x2e')](db[_0x91dc('0x2f')]['rawAttributes'],function(_0x285805){return{'name':_0x285805[_0x91dc('0x30')],'type':_0x285805[_0x91dc('0x31')][_0x91dc('0x32')]};});_0x43e877[_0x91dc('0x33')]=_[_0x91dc('0x34')](_[_0x91dc('0x2e')](_0x1079a0,'name'),[_0x91dc('0x35')]);_0x43e877['query']=_['keys'](_0x15007e[_0x91dc('0x36')]);_0x43e877['filters']=_[_0x91dc('0x37')](_0x43e877[_0x91dc('0x33')],_0x43e877['query']);_0x19c914[_0x91dc('0x38')]=_['intersection'](_0x43e877[_0x91dc('0x33')],qs[_0x91dc('0x39')](_0x15007e[_0x91dc('0x36')][_0x91dc('0x39')]));_0x19c914[_0x91dc('0x38')]=_0x19c914[_0x91dc('0x38')][_0x91dc('0x3a')]?_0x19c914[_0x91dc('0x38')]:_0x43e877[_0x91dc('0x33')];if(!_0x15007e[_0x91dc('0x36')][_0x91dc('0x3b')](_0x91dc('0x3c'))){_0x19c914[_0x91dc('0x1f')]=qs[_0x91dc('0x1f')](_0x15007e[_0x91dc('0x36')]['limit']);_0x19c914['offset']=qs[_0x91dc('0x21')](_0x15007e[_0x91dc('0x36')][_0x91dc('0x21')]);}_0x19c914[_0x91dc('0x3d')]=qs['sort'](_0x15007e['query'][_0x91dc('0x3e')]);_0x19c914['where']=qs[_0x91dc('0x3f')](_[_0x91dc('0x40')](_0x15007e['query'],_0x43e877[_0x91dc('0x3f')]),_0x1079a0);if(_0x15007e[_0x91dc('0x36')][_0x91dc('0x41')]){_0x19c914['where']=_[_0x91dc('0x42')](_0x19c914[_0x91dc('0x43')],{'$or':_['map'](_0x1079a0,function(_0x23c10d){if(_0x23c10d['type']!==_0x91dc('0x44')){var _0x5deeab={};_0x5deeab[_0x23c10d['name']]={'$like':'%'+_0x15007e['query'][_0x91dc('0x41')]+'%'};return _0x5deeab;}})});}_0x19c914=_[_0x91dc('0x42')]({},_0x19c914,_0x15007e['options']);var _0x733c72={'where':_0x19c914['where']};return db[_0x91dc('0x2f')][_0x91dc('0x20')](_0x733c72)[_0x91dc('0x26')](function(_0x1617a2){_0x4a1393[_0x91dc('0x20')]=_0x1617a2;if(_0x15007e[_0x91dc('0x36')][_0x91dc('0x45')]){_0x19c914['include']=[{'all':!![]}];}return db[_0x91dc('0x2f')][_0x91dc('0x46')](_0x19c914);})[_0x91dc('0x26')](function(_0x25237a){_0x4a1393['rows']=_0x25237a;return _0x4a1393;})[_0x91dc('0x26')](respondWithFilteredResult(_0x28e7f2,_0x19c914))['catch'](handleError(_0x28e7f2,null));};exports[_0x91dc('0x47')]=function(_0x419ade,_0x13c978){var _0x1ced08={'raw':![],'where':{'id':_0x419ade[_0x91dc('0x48')]['id']}},_0x4dd168={};_0x4dd168[_0x91dc('0x33')]=_[_0x91dc('0x49')](db[_0x91dc('0x2f')]['rawAttributes']);_0x4dd168[_0x91dc('0x36')]=_[_0x91dc('0x49')](_0x419ade[_0x91dc('0x36')]);_0x4dd168[_0x91dc('0x3f')]=_[_0x91dc('0x37')](_0x4dd168[_0x91dc('0x33')],_0x4dd168[_0x91dc('0x36')]);_0x1ced08[_0x91dc('0x38')]=_[_0x91dc('0x37')](_0x4dd168['model'],qs['fields'](_0x419ade[_0x91dc('0x36')][_0x91dc('0x39')]));_0x1ced08[_0x91dc('0x38')]=_0x1ced08[_0x91dc('0x38')]['length']?_0x1ced08[_0x91dc('0x38')]:_0x4dd168[_0x91dc('0x33')];if(_0x419ade[_0x91dc('0x36')][_0x91dc('0x45')]){_0x1ced08[_0x91dc('0x4a')]=[{'all':!![]}];}_0x1ced08=_[_0x91dc('0x42')]({},_0x1ced08,_0x419ade[_0x91dc('0x4b')]);return db['VoiceRecording']['find'](_0x1ced08)[_0x91dc('0x26')](handleEntityNotFound(_0x13c978,null))[_0x91dc('0x26')](respondWithResult(_0x13c978,null))[_0x91dc('0x4c')](handleError(_0x13c978,null));};exports['create']=function(_0x58049c,_0x16f60a){return db[_0x91dc('0x2f')][_0x91dc('0x4d')](_0x58049c['body'],{})[_0x91dc('0x26')](respondWithResult(_0x16f60a,0xc9))[_0x91dc('0x4c')](handleError(_0x16f60a,null));};exports[_0x91dc('0x25')]=function(_0x525e21,_0x3f29bd){if(_0x525e21[_0x91dc('0x4e')]['id']){delete _0x525e21['body']['id'];}return db[_0x91dc('0x2f')][_0x91dc('0x4f')]({'where':{'id':_0x525e21[_0x91dc('0x48')]['id']}})['then'](handleEntityNotFound(_0x3f29bd,null))['then'](saveUpdates(_0x525e21[_0x91dc('0x4e')],null))[_0x91dc('0x26')](respondWithResult(_0x3f29bd,null))['catch'](handleError(_0x3f29bd,null));};exports[_0x91dc('0x50')]=function(_0x421fb8,_0x5cf1e4){return db[_0x91dc('0x2f')][_0x91dc('0x50')]()[_0x91dc('0x26')](respondWithResult(_0x5cf1e4,null))[_0x91dc('0x4c')](handleError(_0x5cf1e4,null));};exports[_0x91dc('0x51')]=function(_0x406f09,_0x2a4473,_0x16858b){var _0x3d2b9b=require(_0x91dc('0x52'));var _0x11ce45=![];var _0x42df5b={};if(_0x406f09[_0x91dc('0x36')]['type']&&_0x406f09[_0x91dc('0x36')][_0x91dc('0x31')]===_0x91dc('0x53')){_0x42df5b[_0x91dc('0x53')]=_0x406f09['params']['id'];}else{_0x42df5b['id']=_0x406f09[_0x91dc('0x48')]['id'];}return db[_0x91dc('0x2f')][_0x91dc('0x4f')]({'where':_0x42df5b,'attributes':['id',_0x91dc('0x54')],'raw':!![]})[_0x91dc('0x26')](handleEntityNotFound(_0x2a4473,null))['then'](function(_0x48d9ab){if(_0x48d9ab){var _0x1d1b6e=_0x48d9ab[_0x91dc('0x54')];var _0x5c6a19=util[_0x91dc('0x35')](_0x91dc('0x55'),_0x1d1b6e);if(fs[_0x91dc('0x56')](_0x5c6a19)){_0x11ce45=!![];return _0x3d2b9b[_0x91dc('0x57')](_0x5c6a19,_0x1d1b6e,config[_0x91dc('0x58')][_0x91dc('0x59')])['then'](function(){return _0x48d9ab;});}return _0x48d9ab;}})[_0x91dc('0x26')](function(_0x43eaa6){if(_0x43eaa6){var _0x1fd28e=_0x43eaa6['value'];if(!fs[_0x91dc('0x56')](_0x1fd28e)){throw new db['Sequelize']['ValidationError'](_0x91dc('0x5a'));}if(_0x43eaa6[_0x91dc('0x5b')]){return _0x2a4473[_0x91dc('0x51')](_0x1fd28e,_0x43eaa6[_0x91dc('0x5b')]+path[_0x91dc('0x5c')](_0x1fd28e),function(){if(_0x11ce45){fs['unlink'](_0x1fd28e);}});}else{return _0x2a4473[_0x91dc('0x51')](_0x1fd28e,function(_0x453fe2){if(_0x11ce45){fs['unlink'](_0x1fd28e);}});}}})['catch'](function(_0x103c83){if(_0x103c83[_0x91dc('0x5d')]==='VoiceRecording\x20not\x20found'){_0x2a4473[_0x91dc('0x1c')](0x194)['send']('Not\x20found');}else{return handleError(_0x2a4473,null);}});};exports[_0x91dc('0x5e')]=function(_0x226b7d,_0x19350f,_0x50f2e5){var _0x1c10a9=require(_0x91dc('0x52'));var _0x551a7e=![];var _0x530a62={'$and':[db[_0x91dc('0x5f')][_0x91dc('0x43')](db['sequelize']['fn'](_0x91dc('0x60'),db[_0x91dc('0x5f')]['col'](_0x91dc('0x53'))),_0x226b7d[_0x91dc('0x36')][_0x91dc('0x61')])]};if(_0x226b7d[_0x91dc('0x36')][_0x91dc('0x31')]&&_0x226b7d[_0x91dc('0x36')]['type']==='uniqueid'){_0x530a62[_0x91dc('0x62')][_0x91dc('0x63')]({'uniqueid':_0x226b7d[_0x91dc('0x48')]['id']});}else{_0x530a62[_0x91dc('0x62')][_0x91dc('0x63')]({'id':_0x226b7d[_0x91dc('0x48')]['id']});}return db['VoiceRecording'][_0x91dc('0x4f')]({'where':_0x530a62,'attributes':['id',_0x91dc('0x54')],'raw':!![]})[_0x91dc('0x26')](handleEntityNotFound(_0x19350f,null))['then'](function(_0x16369b){if(_0x16369b){var _0x15b928=util[_0x91dc('0x35')]('%s.cypher',_0x16369b[_0x91dc('0x54')]);if(fs[_0x91dc('0x56')](_0x15b928)){_0x551a7e=!![];return _0x1c10a9[_0x91dc('0x57')](_0x15b928,_0x16369b[_0x91dc('0x54')],config[_0x91dc('0x58')][_0x91dc('0x59')])[_0x91dc('0x26')](function(){return _0x16369b;});}return _0x16369b;}})[_0x91dc('0x26')](function(_0x5c6665){if(_0x5c6665){if(!fs[_0x91dc('0x56')](_0x5c6665['value'])){throw new db[(_0x91dc('0x64'))]['ValidationError'](_0x91dc('0x5a'));}if(_0x5c6665['filename']){return _0x19350f[_0x91dc('0x51')](_0x5c6665[_0x91dc('0x54')],_0x5c6665['filename']+path[_0x91dc('0x5c')](_0x5c6665[_0x91dc('0x54')]),function(){if(_0x551a7e){fs[_0x91dc('0x65')](_0x5c6665[_0x91dc('0x54')]);}});}else{return _0x19350f[_0x91dc('0x51')](_0x5c6665[_0x91dc('0x54')],function(_0x2d5bb4){if(_0x551a7e){fs[_0x91dc('0x65')](_0x5c6665[_0x91dc('0x54')]);}});}}})[_0x91dc('0x4c')](handleError(_0x19350f,null));};exports[_0x91dc('0x27')]=function(_0x2b496e,_0x1668eb){return db[_0x91dc('0x2f')]['find']({'where':{'id':_0x2b496e['params']['id']}})[_0x91dc('0x26')](function(_0x4b08c3){if(_[_0x91dc('0x66')](_0x4b08c3)){throw new ReferenceError(_0x91dc('0x67'));}return _0x4b08c3;})[_0x91dc('0x26')](function(_0x17ca8c){var _0x4425b8=_0x17ca8c[_0x91dc('0x54')];logger['info'](_0x91dc('0x68'),_0x4425b8);if(!_[_0x91dc('0x66')](_0x17ca8c[_0x91dc('0x54')])&&fs[_0x91dc('0x56')](_0x4425b8)){logger[_0x91dc('0x69')](_0x91dc('0x6a')+_0x4425b8+'\x22\x20trovato\x20eseguo\x20la\x20cancellazione');fs[_0x91dc('0x6b')](_0x4425b8);}_0x4425b8=_0x4425b8+_0x91dc('0x6c');if(!_[_0x91dc('0x66')](_0x17ca8c['value'])&&fs[_0x91dc('0x56')](_0x4425b8)){logger[_0x91dc('0x69')]('File:\x20\x22'+_0x4425b8+_0x91dc('0x6d'));fs[_0x91dc('0x6b')](_0x4425b8);}return _0x17ca8c;})[_0x91dc('0x26')](function(_0x517906){if(!_0x517906)throw new InternalError();return _0x517906[_0x91dc('0x27')]();})['then'](function(){_0x1668eb['status'](0xcc)[_0x91dc('0x28')]();})[_0x91dc('0x4c')](handleError(_0x1668eb,null));};function getBucketslist(_0x4711ae,_0x212530,_0x16e795){return new Promise(function(_0x5dd14a,_0xd6e7f0){var _0x29282c=new AWS['S3']({'accessKeyId':_0x212530,'secretAccessKey':_0x4711ae,'region':_0x16e795});_0x29282c[_0x91dc('0x6e')]({},function(_0x72173c,_0x307edb){if(_0x72173c){return _0xd6e7f0(_0x72173c);}else{return _0x5dd14a(_0x307edb);}});});}function createBucket(_0x6f5089,_0x5b5b46,_0x28942c,_0x315d08){return new Promise(function(_0x4c1800,_0x1f2b89){var _0x5efe16=new AWS['S3']({'accessKeyId':_0x5b5b46,'secretAccessKey':_0x6f5089,'region':_0x28942c});_0x5efe16[_0x91dc('0x6f')]({'Bucket':_0x315d08},function(_0x1d3483,_0x8b66aa){if(_0x1d3483){return _0x1f2b89(_0x1d3483);}else{return _0x4c1800(_0x8b66aa);}});});}function uploadFile(_0x4c74ce,_0x1f5cec,_0x2ef2af,_0x30bbbe,_0x18305a,_0x6dbea0){return new Promise(function(_0x205725,_0x93b5a6){var _0xd5e86a=new AWS['S3']({'accessKeyId':_0x1f5cec,'secretAccessKey':_0x4c74ce,'region':_0x2ef2af});_0xd5e86a[_0x91dc('0x70')]({'Bucket':_0x30bbbe,'Key':_0x18305a,'Body':_0x6dbea0},function(_0x4e20eb,_0x2fa6ce){if(_0x4e20eb){return _0x93b5a6(_0x4e20eb);}else{return _0x205725(_0x2fa6ce);}});});}function startTranscribe(_0x215c6e,_0x228c0c,_0xc50491,_0x35696b,_0x22e152,_0x555c66){return new Promise(function(_0xe42203,_0x2fdd97){var _0x2e76ed=new AWS[(_0x91dc('0x71'))]({'accessKeyId':_0x228c0c,'secretAccessKey':_0x215c6e,'region':_0xc50491});_0x2e76ed['startTranscriptionJob']({'TranscriptionJobName':_0x35696b,'LanguageCode':_0x22e152,'Media':{'MediaFileUri':_0x555c66}},function(_0x531f11,_0x4871d1){if(_0x531f11){return _0x2fdd97(_0x531f11);}else{return _0xe42203(_0x4871d1);}});});}function transcribe(_0x435fbf,_0x279b9c,_0xbfa7e,_0x59ff1b,_0x5f407d,_0x23773a,_0x5f8898){return new Promise(function(_0x41de0f,_0x31f3c4){var _0x3ed166={};logger[_0x91dc('0x69')](util[_0x91dc('0x35')](_0x91dc('0x72'),_0x435fbf,_0x5f407d));return uploadFile(_0x279b9c,_0xbfa7e,_0x59ff1b,_0x5f407d,path['basename'](_0x23773a),fs[_0x91dc('0x73')](_0x23773a))['then'](function(_0x273089){logger[_0x91dc('0x69')](util[_0x91dc('0x35')](_0x91dc('0x74'),_0x435fbf,_0x5f407d,_0x273089[_0x91dc('0x75')]));_0x3ed166[_0x91dc('0x76')]=_0x273089['Bucket'];_0x3ed166[_0x91dc('0x77')]=_0x273089[_0x91dc('0x75')];logger[_0x91dc('0x69')](util['format']('[RUNTRANSCRIPT][%d]\x20Sending\x20transcribe\x20request',_0x435fbf));return startTranscribe(_0x279b9c,_0xbfa7e,_0x59ff1b,uuidv4(),_0x5f8898,_0x273089[_0x91dc('0x75')]);})[_0x91dc('0x26')](function(_0x4bb7ef){logger[_0x91dc('0x69')](util[_0x91dc('0x35')](_0x91dc('0x78'),_0x435fbf,_0x4bb7ef[_0x91dc('0x79')][_0x91dc('0x7a')]));_0x3ed166[_0x91dc('0x7b')]=_0x4bb7ef[_0x91dc('0x79')][_0x91dc('0x7a')];_0x3ed166[_0x91dc('0x7c')]=_0x4bb7ef[_0x91dc('0x79')][_0x91dc('0x7d')];return _0x41de0f(_0x3ed166);})[_0x91dc('0x4c')](function(_0x5c9198){return _0x31f3c4(_0x5c9198);});});}exports[_0x91dc('0x7e')]=function(_0x4649cb,_0xd273d5,_0x122e21){var _0x3080f0;var _0x1a89d2;var _0x2a661b;var _0x4b2ce4=require('../../components/encryptor');return db[_0x91dc('0x2f')][_0x91dc('0x7f')]({'where':{'id':_0x4649cb[_0x91dc('0x48')]['id']}})['then'](function(_0x519eda){if(_0x519eda){var _0x588dd0=util[_0x91dc('0x35')](_0x91dc('0x55'),_0x519eda[_0x91dc('0x54')]);if(fs[_0x91dc('0x56')](_0x588dd0)){cypher=!![];return _0x4b2ce4[_0x91dc('0x57')](_0x588dd0,_0x519eda[_0x91dc('0x54')],config[_0x91dc('0x58')][_0x91dc('0x59')])[_0x91dc('0x26')](function(){return _0x519eda;});}return _0x519eda;}})['then'](function(_0x4ea249){if(!_0x4ea249){throw new db[(_0x91dc('0x64'))][(_0x91dc('0x80'))](_0x91dc('0x81'));}_0x1a89d2=_0x4ea249;return db[_0x91dc('0x82')][_0x91dc('0x7f')]({'where':{'id':0x1}});})['then'](handleEntityNotFound(_0xd273d5,null))[_0x91dc('0x26')](function(_0x4c42e1){if(_0x4c42e1){_0x3080f0=_0x4c42e1;if(!_0x3080f0[_0x91dc('0x83')]||!_0x3080f0[_0x91dc('0x84')]||!_0x3080f0[_0x91dc('0x85')]||!_0x3080f0['language']||!_0x3080f0[_0x91dc('0x76')]){throw new db['Sequelize']['ValidationError'](_0x91dc('0x86'));}if(_0x4649cb[_0x91dc('0x4e')]['runSentiment']&&(!_0x3080f0[_0x91dc('0x87')]||!_0x3080f0['sentimentAccountId']||!_0x3080f0[_0x91dc('0x88')]||!_0x3080f0[_0x91dc('0x89')]||!_0x3080f0[_0x91dc('0x76')])){throw new db[(_0x91dc('0x64'))]['ValidationError']('Sentiment\x20Analysis\x20not\x20configured');}return db['CloudProvider'][_0x91dc('0x7f')]({'where':{'id':_0x3080f0['transcribeAccountId']}});}})[_0x91dc('0x26')](function(_0x31d447){if(!_0x31d447){throw new db['Sequelize']['ValidationError'](_0x91dc('0x8a'));}if(!_0x31d447[_0x91dc('0x8b')]||!_0x31d447[_0x91dc('0x8c')]){throw new db[(_0x91dc('0x64'))][(_0x91dc('0x80'))]('Cloud\x20Provider\x20not\x20configured');}_0x2a661b=_0x31d447;return getBucketslist(_0x2a661b[_0x91dc('0x8b')],_0x2a661b['data2'],_0x3080f0[_0x91dc('0x85')]);})[_0x91dc('0x26')](function(_0x44378a){if(_0x44378a&&_0x44378a['Buckets']){var _0x377f1d=_[_0x91dc('0x4f')](_0x44378a[_0x91dc('0x8d')],function(_0x228bd0){return _0x228bd0[_0x91dc('0x8e')]===_0x3080f0['bucket'];});if(!_0x377f1d){logger[_0x91dc('0x69')](util['format'](_0x91dc('0x8f'),_0x4649cb[_0x91dc('0x48')]['id'],_0x3080f0['bucket']));return createBucket(_0x2a661b[_0x91dc('0x8b')],_0x2a661b[_0x91dc('0x8c')],_0x3080f0['transcribeRegion'],_0x3080f0['bucket']);}logger[_0x91dc('0x69')](util[_0x91dc('0x35')]('[RUNTRANSCRIPT][%d]\x20Bucket\x20%s\x20available',_0x4649cb[_0x91dc('0x48')]['id'],_0x3080f0[_0x91dc('0x76')]));return;}})[_0x91dc('0x26')](function(_0x5cf1f5){if(_0x1a89d2[_0x91dc('0x7c')]===_0x91dc('0x90')){return transcribe(_0x4649cb[_0x91dc('0x48')]['id'],_0x2a661b['data1'],_0x2a661b['data2'],_0x3080f0[_0x91dc('0x85')],_0x3080f0[_0x91dc('0x76')],_0x1a89d2[_0x91dc('0x54')],_0x3080f0[_0x91dc('0x89')]);}else{logger[_0x91dc('0x69')](util['format'](_0x91dc('0x91'),_0x4649cb[_0x91dc('0x48')]['id']));return{'transcribeStatus':_0x91dc('0x92')};}})[_0x91dc('0x26')](function(_0x3df3e1){if(_0x3df3e1){_0x3df3e1[_0x91dc('0x93')]=_0x4649cb[_0x91dc('0x4e')][_0x91dc('0x94')];return _0x1a89d2[_0x91dc('0x95')](_0x3df3e1);}})[_0x91dc('0x26')](respondWithResult(_0xd273d5,null))['catch'](handleError(_0xd273d5,null));};function writeFile(_0xbe7034,_0x26ee2d){return new Promise(function(_0x424772,_0x3e54ad){fs[_0x91dc('0x96')](_0x26ee2d,_0xbe7034,function(_0x48ed99,_0x240544){if(_0x48ed99){return _0x3e54ad(_0x48ed99);}else{return _0x424772(_0x240544);}});});}exports[_0x91dc('0x97')]=function(_0x1e1bdc,_0x242453,_0x21bb64){return db[_0x91dc('0x2f')][_0x91dc('0x7f')]({'where':{'id':_0x1e1bdc['params']['id']}})[_0x91dc('0x26')](handleEntityNotFound(_0x242453))[_0x91dc('0x26')](function(_0x1e35dd){if(_0x1e35dd&&_0x1e35dd[_0x91dc('0x98')]){var _0x29803b=_0x1e35dd[_0x91dc('0x98')];var _0x2a0c95=config[_0x91dc('0x99')]+_0x91dc('0x9a')+_0x1e35dd['id']+_0x91dc('0x9b');if(fs[_0x91dc('0x56')](_0x2a0c95)){return _0x2a0c95;}return writeFile(_0x29803b,_0x2a0c95)[_0x91dc('0x26')](function(){return _0x2a0c95;});}else{throw new db[(_0x91dc('0x64'))][(_0x91dc('0x80'))](_0x91dc('0x9c'));}})[_0x91dc('0x26')](function(_0x40b8b8){return _0x242453[_0x91dc('0x51')](_0x40b8b8);})[_0x91dc('0x4c')](handleError(_0x242453));};
\ No newline at end of file
+var _0x9cfb=['Transcribe\x20not\x20configured','runSentiment','sentiment','sentimentAccountId','sentimentRegion','CloudProvider','Cloud\x20Provider\x20not\x20available','data2','Cloud\x20Provider\x20not\x20configured','data1','Buckets','Name','[RUNTRANSCRIPT][%d]\x20Bucket\x20%s\x20not\x20available','NEW','[RUNTRANSCRIPT][%d]\x20Transcript\x20action\x20already\x20requested','IN_PROGRESS','tempSentiment','updateAttributes','writeFile','fileText','root','/server/files/transcribes/transcribe_','.txt','zip-dir','fast-json-patch','request-promise','bluebird','mustache','util','sox','to-csv','ejs','lodash','crypto','jsforce','querystring','aws-sdk','uuid/v4','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/environment','../../mysqldb','status','offset','undefined','limit','count','set','Content-Range','json','apply','reject','save','update','destroy','then','end','sendStatus','error','stack','name','index','map','VoiceRecording','rawAttributes','fieldName','key','model','differenceBy','query','keys','filters','intersection','attributes','fields','hasOwnProperty','nolimit','order','sort','pick','where','type','VIRTUAL','merge','includeAll','include','findAll','rows','show','params','length','options','find','catch','create','body','describe','download','uniqueid','value','format','existsSync','decryptFile','secrets','recording','Sequelize','filename','extname','unlink','message','VoiceRecording\x20not\x20found','send','Not\x20found','downloads','../../components/encryptor','sequelize','MD5','col','token','$and','push','ValidationError','isNil','info','cancellazione\x20fisica\x20documento\x20%s','File:\x20\x22','\x22\x20trovato\x20eseguo\x20la\x20cancellazione','unlinkSync','.cypher','upload','[RUNTRANSCRIPT][%d]\x20Starting\x20voice\x20recording\x20upload\x20in\x20bucket\x20%s','basename','Location','Bucket','location','[RUNTRANSCRIPT][%d]\x20Sending\x20transcribe\x20request','[RUNTRANSCRIPT][%d]\x20Transcription\x20job\x20%s\x20created','TranscriptionJob','TranscriptionJobName','transcribeName','transcribeStatus','TranscriptionJobStatus','runTranscribe','findOne','Setting','transcribe','transcribeAccountId','transcribeRegion','language','bucket'];(function(_0xdea41a,_0x552987){var _0x15d0d8=function(_0x1e0d0b){while(--_0x1e0d0b){_0xdea41a['push'](_0xdea41a['shift']());}};_0x15d0d8(++_0x552987);}(_0x9cfb,0x14d));var _0xb9cf=function(_0x3bde45,_0x7da7a8){_0x3bde45=_0x3bde45-0x0;var _0x3bddf9=_0x9cfb[_0x3bde45];return _0x3bddf9;};'use strict';var emlformat=require('eml-format');var rimraf=require('rimraf');var zipdir=require(_0xb9cf('0x0'));var jsonpatch=require(_0xb9cf('0x1'));var rp=require(_0xb9cf('0x2'));var moment=require('moment');var BPromise=require(_0xb9cf('0x3'));var Mustache=require(_0xb9cf('0x4'));var util=require(_0xb9cf('0x5'));var path=require('path');var sox=require(_0xb9cf('0x6'));var csv=require(_0xb9cf('0x7'));var ejs=require(_0xb9cf('0x8'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0xb9cf('0x9'));var squel=require('squel');var crypto=require(_0xb9cf('0xa'));var jsforce=require(_0xb9cf('0xb'));var deskjs=require('desk.js');var toCsv=require(_0xb9cf('0x7'));var querystring=require(_0xb9cf('0xc'));var Papa=require('papaparse');var AWS=require(_0xb9cf('0xd'));var uuidv4=require(_0xb9cf('0xe'));var Redis=require(_0xb9cf('0xf'));var authService=require(_0xb9cf('0x10'));var qs=require(_0xb9cf('0x11'));var as=require(_0xb9cf('0x12'));var hardwareService=require(_0xb9cf('0x13'));var logger=require(_0xb9cf('0x14'))(_0xb9cf('0x15'));var utils=require('../../config/utils');var config=require(_0xb9cf('0x16'));var licenseUtil=require('../../config/license/util');var db=require(_0xb9cf('0x17'))['db'];function respondWithStatusCode(_0x53b2aa,_0xf61a16){_0xf61a16=_0xf61a16||0xcc;return function(_0xf88422){if(_0xf88422){return _0x53b2aa['sendStatus'](_0xf61a16);}return _0x53b2aa[_0xb9cf('0x18')](_0xf61a16)['end']();};}function respondWithResult(_0x1bae30,_0x27cacd){_0x27cacd=_0x27cacd||0xc8;return function(_0x1af700){if(_0x1af700){return _0x1bae30[_0xb9cf('0x18')](_0x27cacd)['json'](_0x1af700);}};}function respondWithFilteredResult(_0x5e040c,_0x388a89){return function(_0x2a745d){if(_0x2a745d){var _0x1654bc=typeof _0x388a89[_0xb9cf('0x19')]===_0xb9cf('0x1a')&&typeof _0x388a89[_0xb9cf('0x1b')]===_0xb9cf('0x1a');var _0x1290ac=_0x2a745d[_0xb9cf('0x1c')];var _0x552abe=_0x1654bc?0x0:_0x388a89[_0xb9cf('0x19')];var _0x3cd3c9=_0x1654bc?_0x2a745d[_0xb9cf('0x1c')]:_0x388a89[_0xb9cf('0x19')]+_0x388a89['limit'];var _0x1eac9c;if(_0x3cd3c9>=_0x1290ac){_0x3cd3c9=_0x1290ac;_0x1eac9c=0xc8;}else{_0x1eac9c=0xce;}_0x5e040c[_0xb9cf('0x18')](_0x1eac9c);return _0x5e040c[_0xb9cf('0x1d')](_0xb9cf('0x1e'),_0x552abe+'-'+_0x3cd3c9+'/'+_0x1290ac)[_0xb9cf('0x1f')](_0x2a745d);}return null;};}function patchUpdates(_0x42c32b){return function(_0x2b52e7){try{jsonpatch[_0xb9cf('0x20')](_0x2b52e7,_0x42c32b,!![]);}catch(_0x3ed48d){return BPromise[_0xb9cf('0x21')](_0x3ed48d);}return _0x2b52e7[_0xb9cf('0x22')]();};}function saveUpdates(_0xe911ea,_0x52dd3d){return function(_0x47a871){if(_0x47a871){return _0x47a871[_0xb9cf('0x23')](_0xe911ea)['then'](function(_0x14b691){return _0x14b691;});}return null;};}function removeEntity(_0x1b8984,_0x5b0075){return function(_0x277eca){if(_0x277eca){return _0x277eca[_0xb9cf('0x24')]()[_0xb9cf('0x25')](function(){_0x1b8984[_0xb9cf('0x18')](0xcc)[_0xb9cf('0x26')]();});}};}function handleEntityNotFound(_0x1ce3d7,_0x2c6582){return function(_0x4978d2){if(!_0x4978d2){_0x1ce3d7[_0xb9cf('0x27')](0x194);}return _0x4978d2;};}function handleError(_0xcc1eb9,_0x433a1c){_0x433a1c=_0x433a1c||0x1f4;return function(_0x5e9eea){logger[_0xb9cf('0x28')](_0x5e9eea[_0xb9cf('0x29')]);if(_0x5e9eea[_0xb9cf('0x2a')]){delete _0x5e9eea[_0xb9cf('0x2a')];}_0xcc1eb9[_0xb9cf('0x18')](_0x433a1c)['send'](_0x5e9eea);};}exports[_0xb9cf('0x2b')]=function(_0x152470,_0x1b41ef){var _0x5cca01={},_0x4c90e0={},_0x2e8e1a={'count':0x0,'rows':[]};var _0x31d164=_[_0xb9cf('0x2c')](db[_0xb9cf('0x2d')][_0xb9cf('0x2e')],function(_0x615dcf){return{'name':_0x615dcf[_0xb9cf('0x2f')],'type':_0x615dcf['type'][_0xb9cf('0x30')]};});_0x4c90e0[_0xb9cf('0x31')]=_[_0xb9cf('0x32')](_[_0xb9cf('0x2c')](_0x31d164,_0xb9cf('0x2a')),['format']);_0x4c90e0[_0xb9cf('0x33')]=_[_0xb9cf('0x34')](_0x152470['query']);_0x4c90e0[_0xb9cf('0x35')]=_[_0xb9cf('0x36')](_0x4c90e0['model'],_0x4c90e0['query']);_0x5cca01[_0xb9cf('0x37')]=_['intersection'](_0x4c90e0['model'],qs[_0xb9cf('0x38')](_0x152470[_0xb9cf('0x33')][_0xb9cf('0x38')]));_0x5cca01['attributes']=_0x5cca01[_0xb9cf('0x37')]['length']?_0x5cca01['attributes']:_0x4c90e0[_0xb9cf('0x31')];if(!_0x152470[_0xb9cf('0x33')][_0xb9cf('0x39')](_0xb9cf('0x3a'))){_0x5cca01[_0xb9cf('0x1b')]=qs[_0xb9cf('0x1b')](_0x152470['query'][_0xb9cf('0x1b')]);_0x5cca01[_0xb9cf('0x19')]=qs[_0xb9cf('0x19')](_0x152470[_0xb9cf('0x33')][_0xb9cf('0x19')]);}_0x5cca01[_0xb9cf('0x3b')]=qs[_0xb9cf('0x3c')](_0x152470[_0xb9cf('0x33')][_0xb9cf('0x3c')]);_0x5cca01['where']=qs[_0xb9cf('0x35')](_[_0xb9cf('0x3d')](_0x152470['query'],_0x4c90e0['filters']),_0x31d164);if(_0x152470[_0xb9cf('0x33')]['filter']){_0x5cca01['where']=_['merge'](_0x5cca01[_0xb9cf('0x3e')],{'$or':_['map'](_0x31d164,function(_0x297796){if(_0x297796[_0xb9cf('0x3f')]!==_0xb9cf('0x40')){var _0x33306e={};_0x33306e[_0x297796[_0xb9cf('0x2a')]]={'$like':'%'+_0x152470['query']['filter']+'%'};return _0x33306e;}})});}_0x5cca01=_[_0xb9cf('0x41')]({},_0x5cca01,_0x152470['options']);var _0x389339={'where':_0x5cca01[_0xb9cf('0x3e')]};return db[_0xb9cf('0x2d')][_0xb9cf('0x1c')](_0x389339)[_0xb9cf('0x25')](function(_0x3e6504){_0x2e8e1a[_0xb9cf('0x1c')]=_0x3e6504;if(_0x152470[_0xb9cf('0x33')][_0xb9cf('0x42')]){_0x5cca01[_0xb9cf('0x43')]=[{'all':!![]}];}return db[_0xb9cf('0x2d')][_0xb9cf('0x44')](_0x5cca01);})[_0xb9cf('0x25')](function(_0x1eedca){_0x2e8e1a[_0xb9cf('0x45')]=_0x1eedca;return _0x2e8e1a;})['then'](respondWithFilteredResult(_0x1b41ef,_0x5cca01))['catch'](handleError(_0x1b41ef,null));};exports[_0xb9cf('0x46')]=function(_0x31d049,_0x395515){var _0x5245e5={'raw':![],'where':{'id':_0x31d049[_0xb9cf('0x47')]['id']}},_0x5435d1={};_0x5435d1[_0xb9cf('0x31')]=_[_0xb9cf('0x34')](db['VoiceRecording'][_0xb9cf('0x2e')]);_0x5435d1['query']=_[_0xb9cf('0x34')](_0x31d049[_0xb9cf('0x33')]);_0x5435d1[_0xb9cf('0x35')]=_[_0xb9cf('0x36')](_0x5435d1['model'],_0x5435d1[_0xb9cf('0x33')]);_0x5245e5[_0xb9cf('0x37')]=_[_0xb9cf('0x36')](_0x5435d1[_0xb9cf('0x31')],qs[_0xb9cf('0x38')](_0x31d049[_0xb9cf('0x33')][_0xb9cf('0x38')]));_0x5245e5[_0xb9cf('0x37')]=_0x5245e5['attributes'][_0xb9cf('0x48')]?_0x5245e5[_0xb9cf('0x37')]:_0x5435d1['model'];if(_0x31d049[_0xb9cf('0x33')][_0xb9cf('0x42')]){_0x5245e5[_0xb9cf('0x43')]=[{'all':!![]}];}_0x5245e5=_[_0xb9cf('0x41')]({},_0x5245e5,_0x31d049[_0xb9cf('0x49')]);return db[_0xb9cf('0x2d')][_0xb9cf('0x4a')](_0x5245e5)[_0xb9cf('0x25')](handleEntityNotFound(_0x395515,null))['then'](respondWithResult(_0x395515,null))[_0xb9cf('0x4b')](handleError(_0x395515,null));};exports[_0xb9cf('0x4c')]=function(_0x5d7cfc,_0x34f799){return db[_0xb9cf('0x2d')]['create'](_0x5d7cfc[_0xb9cf('0x4d')],{})['then'](respondWithResult(_0x34f799,0xc9))[_0xb9cf('0x4b')](handleError(_0x34f799,null));};exports[_0xb9cf('0x23')]=function(_0x227e2b,_0x1eb128){if(_0x227e2b[_0xb9cf('0x4d')]['id']){delete _0x227e2b['body']['id'];}return db['VoiceRecording'][_0xb9cf('0x4a')]({'where':{'id':_0x227e2b[_0xb9cf('0x47')]['id']}})[_0xb9cf('0x25')](handleEntityNotFound(_0x1eb128,null))[_0xb9cf('0x25')](saveUpdates(_0x227e2b[_0xb9cf('0x4d')],null))[_0xb9cf('0x25')](respondWithResult(_0x1eb128,null))[_0xb9cf('0x4b')](handleError(_0x1eb128,null));};exports[_0xb9cf('0x4e')]=function(_0x2eabb4,_0x265149){return db['VoiceRecording'][_0xb9cf('0x4e')]()[_0xb9cf('0x25')](respondWithResult(_0x265149,null))[_0xb9cf('0x4b')](handleError(_0x265149,null));};exports[_0xb9cf('0x4f')]=function(_0x27f883,_0x3e6eef,_0x560bf9){var _0x1c6c4c=require('../../components/encryptor');var _0x436451=![];var _0x17a649={};if(_0x27f883[_0xb9cf('0x33')][_0xb9cf('0x3f')]&&_0x27f883['query']['type']==='uniqueid'){_0x17a649[_0xb9cf('0x50')]=_0x27f883[_0xb9cf('0x47')]['id'];}else{_0x17a649['id']=_0x27f883[_0xb9cf('0x47')]['id'];}return db[_0xb9cf('0x2d')][_0xb9cf('0x4a')]({'where':_0x17a649,'attributes':['id',_0xb9cf('0x51')],'raw':!![]})[_0xb9cf('0x25')](handleEntityNotFound(_0x3e6eef,null))['then'](function(_0x10f10e){if(_0x10f10e){var _0x31f4c7=_0x10f10e[_0xb9cf('0x51')];var _0x4cc814=util[_0xb9cf('0x52')]('%s.cypher',_0x31f4c7);if(fs[_0xb9cf('0x53')](_0x4cc814)){_0x436451=!![];return _0x1c6c4c[_0xb9cf('0x54')](_0x4cc814,_0x31f4c7,config[_0xb9cf('0x55')][_0xb9cf('0x56')])[_0xb9cf('0x25')](function(){return _0x10f10e;});}return _0x10f10e;}})['then'](function(_0x577e45){if(_0x577e45){var _0x4175d7=_0x577e45['value'];if(!fs[_0xb9cf('0x53')](_0x4175d7)){throw new db[(_0xb9cf('0x57'))]['ValidationError']('VoiceRecording\x20not\x20found');}if(_0x577e45[_0xb9cf('0x58')]){return _0x3e6eef[_0xb9cf('0x4f')](_0x4175d7,_0x577e45[_0xb9cf('0x58')]+path[_0xb9cf('0x59')](_0x4175d7),function(){if(_0x436451){fs[_0xb9cf('0x5a')](_0x4175d7);}});}else{return _0x3e6eef[_0xb9cf('0x4f')](_0x4175d7,function(_0x1eb647){if(_0x436451){fs[_0xb9cf('0x5a')](_0x4175d7);}});}}})['catch'](function(_0x43f681){if(_0x43f681[_0xb9cf('0x5b')]===_0xb9cf('0x5c')){_0x3e6eef[_0xb9cf('0x18')](0x194)[_0xb9cf('0x5d')](_0xb9cf('0x5e'));}else{return handleError(_0x3e6eef,null);}});};exports[_0xb9cf('0x5f')]=function(_0x24fe5b,_0x34864b,_0x1e35d9){var _0x4cb22e=require(_0xb9cf('0x60'));var _0x3fb097=![];var _0x502175={'$and':[db['sequelize']['where'](db[_0xb9cf('0x61')]['fn'](_0xb9cf('0x62'),db[_0xb9cf('0x61')][_0xb9cf('0x63')](_0xb9cf('0x50'))),_0x24fe5b[_0xb9cf('0x33')][_0xb9cf('0x64')])]};if(_0x24fe5b[_0xb9cf('0x33')]['type']&&_0x24fe5b[_0xb9cf('0x33')][_0xb9cf('0x3f')]===_0xb9cf('0x50')){_0x502175[_0xb9cf('0x65')][_0xb9cf('0x66')]({'uniqueid':_0x24fe5b[_0xb9cf('0x47')]['id']});}else{_0x502175['$and'][_0xb9cf('0x66')]({'id':_0x24fe5b[_0xb9cf('0x47')]['id']});}return db[_0xb9cf('0x2d')][_0xb9cf('0x4a')]({'where':_0x502175,'attributes':['id','value'],'raw':!![]})['then'](handleEntityNotFound(_0x34864b,null))[_0xb9cf('0x25')](function(_0x580a3d){if(_0x580a3d){var _0x2261fc=util['format']('%s.cypher',_0x580a3d[_0xb9cf('0x51')]);if(fs[_0xb9cf('0x53')](_0x2261fc)){_0x3fb097=!![];return _0x4cb22e[_0xb9cf('0x54')](_0x2261fc,_0x580a3d[_0xb9cf('0x51')],config[_0xb9cf('0x55')][_0xb9cf('0x56')])['then'](function(){return _0x580a3d;});}return _0x580a3d;}})[_0xb9cf('0x25')](function(_0x59fbc5){if(_0x59fbc5){if(!fs['existsSync'](_0x59fbc5[_0xb9cf('0x51')])){throw new db[(_0xb9cf('0x57'))][(_0xb9cf('0x67'))]('VoiceRecording\x20not\x20found');}if(_0x59fbc5[_0xb9cf('0x58')]){return _0x34864b['download'](_0x59fbc5[_0xb9cf('0x51')],_0x59fbc5[_0xb9cf('0x58')]+path['extname'](_0x59fbc5['value']),function(){if(_0x3fb097){fs[_0xb9cf('0x5a')](_0x59fbc5[_0xb9cf('0x51')]);}});}else{return _0x34864b['download'](_0x59fbc5[_0xb9cf('0x51')],function(_0x1b35bf){if(_0x3fb097){fs[_0xb9cf('0x5a')](_0x59fbc5['value']);}});}}})[_0xb9cf('0x4b')](handleError(_0x34864b,null));};exports[_0xb9cf('0x24')]=function(_0xbf4b9d,_0x5c5c1b){return db[_0xb9cf('0x2d')][_0xb9cf('0x4a')]({'where':{'id':_0xbf4b9d[_0xb9cf('0x47')]['id']}})['then'](function(_0x4a07c9){if(_[_0xb9cf('0x68')](_0x4a07c9)){throw new ReferenceError('Entity\x20not\x20found');}return _0x4a07c9;})[_0xb9cf('0x25')](function(_0x2aebea){var _0x145333=_0x2aebea[_0xb9cf('0x51')];logger[_0xb9cf('0x69')](_0xb9cf('0x6a'),_0x145333);if(!_['isNil'](_0x2aebea[_0xb9cf('0x51')])&&fs[_0xb9cf('0x53')](_0x145333)){logger[_0xb9cf('0x69')](_0xb9cf('0x6b')+_0x145333+_0xb9cf('0x6c'));fs[_0xb9cf('0x6d')](_0x145333);}_0x145333=_0x145333+_0xb9cf('0x6e');if(!_[_0xb9cf('0x68')](_0x2aebea[_0xb9cf('0x51')])&&fs[_0xb9cf('0x53')](_0x145333)){logger[_0xb9cf('0x69')]('File:\x20\x22'+_0x145333+_0xb9cf('0x6c'));fs[_0xb9cf('0x6d')](_0x145333);}return _0x2aebea;})[_0xb9cf('0x25')](function(_0x101f47){if(!_0x101f47)throw new InternalError();return _0x101f47[_0xb9cf('0x24')]();})['then'](function(){_0x5c5c1b['status'](0xcc)[_0xb9cf('0x26')]();})[_0xb9cf('0x4b')](handleError(_0x5c5c1b,null));};function getBucketslist(_0xe9e1,_0x4ba4b2,_0x4affce){return new Promise(function(_0x530252,_0x400caa){var _0x54afa3=new AWS['S3']({'accessKeyId':_0x4ba4b2,'secretAccessKey':_0xe9e1,'region':_0x4affce});_0x54afa3['listBuckets']({},function(_0x2ac219,_0x6f15c3){if(_0x2ac219){return _0x400caa(_0x2ac219);}else{return _0x530252(_0x6f15c3);}});});}function createBucket(_0x1faf45,_0x219901,_0x3f92ea,_0x3e1a5a){return new Promise(function(_0x1f2e56,_0x3082bd){var _0x536f86=new AWS['S3']({'accessKeyId':_0x219901,'secretAccessKey':_0x1faf45,'region':_0x3f92ea});_0x536f86['createBucket']({'Bucket':_0x3e1a5a},function(_0x554427,_0x1c29b2){if(_0x554427){return _0x3082bd(_0x554427);}else{return _0x1f2e56(_0x1c29b2);}});});}function uploadFile(_0x2d2e02,_0x3015e1,_0x465693,_0x43eb37,_0x23d768,_0x30e1b2){return new Promise(function(_0x5cf404,_0x2dbfdd){var _0x2d7da1=new AWS['S3']({'accessKeyId':_0x3015e1,'secretAccessKey':_0x2d2e02,'region':_0x465693});_0x2d7da1[_0xb9cf('0x6f')]({'Bucket':_0x43eb37,'Key':_0x23d768,'Body':_0x30e1b2},function(_0x2c8aeb,_0x1f40f8){if(_0x2c8aeb){return _0x2dbfdd(_0x2c8aeb);}else{return _0x5cf404(_0x1f40f8);}});});}function startTranscribe(_0x1364f5,_0x33d7fe,_0x31c910,_0xab96e1,_0x22f761,_0x5405a0){return new Promise(function(_0xd0bd0d,_0x1b42fd){var _0x2d65f4=new AWS['TranscribeService']({'accessKeyId':_0x33d7fe,'secretAccessKey':_0x1364f5,'region':_0x31c910});_0x2d65f4['startTranscriptionJob']({'TranscriptionJobName':_0xab96e1,'LanguageCode':_0x22f761,'Media':{'MediaFileUri':_0x5405a0}},function(_0xb67e9c,_0x4b7c79){if(_0xb67e9c){return _0x1b42fd(_0xb67e9c);}else{return _0xd0bd0d(_0x4b7c79);}});});}function transcribe(_0x23936a,_0x50354a,_0x36cdfd,_0x574a48,_0x4cb142,_0x4c3b92,_0x189b8e){return new Promise(function(_0x297646,_0x21b577){var _0x4d297c={};logger[_0xb9cf('0x69')](util['format'](_0xb9cf('0x70'),_0x23936a,_0x4cb142));return uploadFile(_0x50354a,_0x36cdfd,_0x574a48,_0x4cb142,path[_0xb9cf('0x71')](_0x4c3b92),fs['readFileSync'](_0x4c3b92))[_0xb9cf('0x25')](function(_0x4194e2){logger[_0xb9cf('0x69')](util['format']('[RUNTRANSCRIPT][%d]\x20Voice\x20recording\x20uploaded\x20in\x20bucket\x20%s\x20(%s)',_0x23936a,_0x4cb142,_0x4194e2[_0xb9cf('0x72')]));_0x4d297c['bucket']=_0x4194e2[_0xb9cf('0x73')];_0x4d297c[_0xb9cf('0x74')]=_0x4194e2[_0xb9cf('0x72')];logger['info'](util[_0xb9cf('0x52')](_0xb9cf('0x75'),_0x23936a));return startTranscribe(_0x50354a,_0x36cdfd,_0x574a48,uuidv4(),_0x189b8e,_0x4194e2[_0xb9cf('0x72')]);})[_0xb9cf('0x25')](function(_0x440e7d){logger[_0xb9cf('0x69')](util[_0xb9cf('0x52')](_0xb9cf('0x76'),_0x23936a,_0x440e7d[_0xb9cf('0x77')][_0xb9cf('0x78')]));_0x4d297c[_0xb9cf('0x79')]=_0x440e7d['TranscriptionJob'][_0xb9cf('0x78')];_0x4d297c[_0xb9cf('0x7a')]=_0x440e7d['TranscriptionJob'][_0xb9cf('0x7b')];return _0x297646(_0x4d297c);})[_0xb9cf('0x4b')](function(_0x28c016){return _0x21b577(_0x28c016);});});}exports[_0xb9cf('0x7c')]=function(_0x4a3385,_0xff5317,_0x450e49){var _0xda20f6;var _0x1683d1;var _0x3db98c;var _0x174ead=require(_0xb9cf('0x60'));return db[_0xb9cf('0x2d')][_0xb9cf('0x7d')]({'where':{'id':_0x4a3385['params']['id']}})[_0xb9cf('0x25')](function(_0x5b8833){if(_0x5b8833){var _0xe5a78=util[_0xb9cf('0x52')]('%s.cypher',_0x5b8833[_0xb9cf('0x51')]);if(fs['existsSync'](_0xe5a78)){cypher=!![];return _0x174ead['decryptFile'](_0xe5a78,_0x5b8833[_0xb9cf('0x51')],config['secrets'][_0xb9cf('0x56')])[_0xb9cf('0x25')](function(){return _0x5b8833;});}return _0x5b8833;}})[_0xb9cf('0x25')](function(_0x1b189a){if(!_0x1b189a){throw new db['Sequelize']['ValidationError']('Voice\x20Recording\x20not\x20found');}_0x1683d1=_0x1b189a;return db[_0xb9cf('0x7e')][_0xb9cf('0x7d')]({'where':{'id':0x1}});})[_0xb9cf('0x25')](handleEntityNotFound(_0xff5317,null))[_0xb9cf('0x25')](function(_0x28c2d9){if(_0x28c2d9){_0xda20f6=_0x28c2d9;if(!_0xda20f6[_0xb9cf('0x7f')]||!_0xda20f6[_0xb9cf('0x80')]||!_0xda20f6[_0xb9cf('0x81')]||!_0xda20f6[_0xb9cf('0x82')]||!_0xda20f6[_0xb9cf('0x83')]){throw new db[(_0xb9cf('0x57'))][(_0xb9cf('0x67'))](_0xb9cf('0x84'));}if(_0x4a3385[_0xb9cf('0x4d')][_0xb9cf('0x85')]&&(!_0xda20f6[_0xb9cf('0x86')]||!_0xda20f6[_0xb9cf('0x87')]||!_0xda20f6[_0xb9cf('0x88')]||!_0xda20f6['language']||!_0xda20f6[_0xb9cf('0x83')])){throw new db['Sequelize']['ValidationError']('Sentiment\x20Analysis\x20not\x20configured');}return db[_0xb9cf('0x89')][_0xb9cf('0x7d')]({'where':{'id':_0xda20f6[_0xb9cf('0x80')]}});}})[_0xb9cf('0x25')](function(_0x3bc4c1){if(!_0x3bc4c1){throw new db['Sequelize'][(_0xb9cf('0x67'))](_0xb9cf('0x8a'));}if(!_0x3bc4c1['data1']||!_0x3bc4c1[_0xb9cf('0x8b')]){throw new db['Sequelize']['ValidationError'](_0xb9cf('0x8c'));}_0x3db98c=_0x3bc4c1;return getBucketslist(_0x3db98c[_0xb9cf('0x8d')],_0x3db98c['data2'],_0xda20f6[_0xb9cf('0x81')]);})[_0xb9cf('0x25')](function(_0x540355){if(_0x540355&&_0x540355[_0xb9cf('0x8e')]){var _0x2520b8=_['find'](_0x540355[_0xb9cf('0x8e')],function(_0x4a06f4){return _0x4a06f4[_0xb9cf('0x8f')]===_0xda20f6[_0xb9cf('0x83')];});if(!_0x2520b8){logger['info'](util['format'](_0xb9cf('0x90'),_0x4a3385[_0xb9cf('0x47')]['id'],_0xda20f6[_0xb9cf('0x83')]));return createBucket(_0x3db98c[_0xb9cf('0x8d')],_0x3db98c[_0xb9cf('0x8b')],_0xda20f6[_0xb9cf('0x81')],_0xda20f6['bucket']);}logger[_0xb9cf('0x69')](util[_0xb9cf('0x52')]('[RUNTRANSCRIPT][%d]\x20Bucket\x20%s\x20available',_0x4a3385[_0xb9cf('0x47')]['id'],_0xda20f6[_0xb9cf('0x83')]));return;}})[_0xb9cf('0x25')](function(_0x3ab403){if(_0x1683d1[_0xb9cf('0x7a')]===_0xb9cf('0x91')){return transcribe(_0x4a3385[_0xb9cf('0x47')]['id'],_0x3db98c[_0xb9cf('0x8d')],_0x3db98c[_0xb9cf('0x8b')],_0xda20f6[_0xb9cf('0x81')],_0xda20f6['bucket'],_0x1683d1[_0xb9cf('0x51')],_0xda20f6[_0xb9cf('0x82')]);}else{logger[_0xb9cf('0x69')](util[_0xb9cf('0x52')](_0xb9cf('0x92'),_0x4a3385[_0xb9cf('0x47')]['id']));return{'transcribeStatus':_0xb9cf('0x93')};}})['then'](function(_0x3d5471){if(_0x3d5471){_0x3d5471[_0xb9cf('0x94')]=_0x4a3385[_0xb9cf('0x4d')][_0xb9cf('0x85')];return _0x1683d1[_0xb9cf('0x95')](_0x3d5471);}})[_0xb9cf('0x25')](respondWithResult(_0xff5317,null))[_0xb9cf('0x4b')](handleError(_0xff5317,null));};function writeFile(_0x44d2db,_0x182f4a){return new Promise(function(_0x20f92d,_0x5ada2c){fs[_0xb9cf('0x96')](_0x182f4a,_0x44d2db,function(_0x3d6fd0,_0x2bbdbe){if(_0x3d6fd0){return _0x5ada2c(_0x3d6fd0);}else{return _0x20f92d(_0x2bbdbe);}});});}exports['downloadTranscribe']=function(_0x20b8b3,_0x5996ef,_0x304000){return db[_0xb9cf('0x2d')][_0xb9cf('0x7d')]({'where':{'id':_0x20b8b3['params']['id']}})[_0xb9cf('0x25')](handleEntityNotFound(_0x5996ef))[_0xb9cf('0x25')](function(_0x46dd46){if(_0x46dd46&&_0x46dd46[_0xb9cf('0x97')]){var _0x21fc4c=_0x46dd46[_0xb9cf('0x97')];var _0x58fe7b=config[_0xb9cf('0x98')]+_0xb9cf('0x99')+_0x46dd46['id']+_0xb9cf('0x9a');if(fs[_0xb9cf('0x53')](_0x58fe7b)){return _0x58fe7b;}return writeFile(_0x21fc4c,_0x58fe7b)['then'](function(){return _0x58fe7b;});}else{throw new db[(_0xb9cf('0x57'))][(_0xb9cf('0x67'))]('Transcript\x20not\x20available');}})['then'](function(_0x3c3188){return _0x5996ef[_0xb9cf('0x4f')](_0x3c3188);})[_0xb9cf('0x4b')](handleError(_0x5996ef));};
\ No newline at end of file
index 5809654..ca57a67 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x635b=['util','../../config/logger','moment','bluebird','request-promise','./voiceRecording.attributes','define','VoiceRecording','voice_recordings','uniqueid','lodash'];(function(_0x28fcc4,_0xa29325){var _0x46580e=function(_0xfd1b0){while(--_0xfd1b0){_0x28fcc4['push'](_0x28fcc4['shift']());}};_0x46580e(++_0xa29325);}(_0x635b,0x16a));var _0xb635=function(_0x39dc7b,_0x1eaf90){_0x39dc7b=_0x39dc7b-0x0;var _0x53d2e8=_0x635b[_0x39dc7b];return _0x53d2e8;};'use strict';var _=require(_0xb635('0x0'));var util=require(_0xb635('0x1'));var logger=require(_0xb635('0x2'))('api');var moment=require(_0xb635('0x3'));var BPromise=require(_0xb635('0x4'));var rp=require(_0xb635('0x5'));var fs=require('fs');var path=require('path');var rimraf=require('rimraf');var config=require('../../config/environment');var attributes=require(_0xb635('0x6'));module['exports']=function(_0x304add,_0x4d81c2){return _0x304add[_0xb635('0x7')](_0xb635('0x8'),attributes,{'tableName':_0xb635('0x9'),'paranoid':![],'indexes':[{'name':_0xb635('0xa'),'fields':[_0xb635('0xa')]}],'timestamps':!![]});};
\ No newline at end of file
+var _0xae7e=['path','../../config/environment','./voiceRecording.attributes','exports','define','VoiceRecording','voice_recordings','uniqueid','lodash','api','moment','bluebird','request-promise'];(function(_0x45ca29,_0x2a4995){var _0x7e08bb=function(_0x3cbbcd){while(--_0x3cbbcd){_0x45ca29['push'](_0x45ca29['shift']());}};_0x7e08bb(++_0x2a4995);}(_0xae7e,0xf2));var _0xeae7=function(_0x14add3,_0x13ce8d){_0x14add3=_0x14add3-0x0;var _0x4a174f=_0xae7e[_0x14add3];return _0x4a174f;};'use strict';var _=require(_0xeae7('0x0'));var util=require('util');var logger=require('../../config/logger')(_0xeae7('0x1'));var moment=require(_0xeae7('0x2'));var BPromise=require(_0xeae7('0x3'));var rp=require(_0xeae7('0x4'));var fs=require('fs');var path=require(_0xeae7('0x5'));var rimraf=require('rimraf');var config=require(_0xeae7('0x6'));var attributes=require(_0xeae7('0x7'));module[_0xeae7('0x8')]=function(_0x1ebeae,_0x327af6){return _0x1ebeae[_0xeae7('0x9')](_0xeae7('0xa'),attributes,{'tableName':_0xeae7('0xb'),'paranoid':![],'indexes':[{'name':'uniqueid','fields':[_0xeae7('0xc')]}],'timestamps':!![]});};
\ No newline at end of file
index 8e96c84..8d1eda0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0b0e=['secrets','recording','CreateVoiceRecording\x20file\x20encrypted','CreateVoiceRecording','lodash','moment','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','request','then','info','VoiceRecording,\x20%s,\x20%s','debug','VoiceRecording,\x20%s,\x20%s,\x20%s','stringify','error','message','request\x20sent','result','catch','update','options','where','attributes','UpdateVoiceRecording','../../components/encryptor','Setting','callRecordingEncryption','VoiceRecording','create','body','existsSync','format','encryptFile','value'];(function(_0x3a68f5,_0x31edbb){var _0x290ccf=function(_0x45ffa1){while(--_0x45ffa1){_0x3a68f5['push'](_0x3a68f5['shift']());}};_0x290ccf(++_0x31edbb);}(_0x0b0e,0x187));var _0xe0b0=function(_0x101134,_0x1ed1d3){_0x101134=_0x101134-0x0;var _0xc47acc=_0x0b0e[_0x101134];return _0xc47acc;};'use strict';var _=require(_0xe0b0('0x0'));var util=require('util');var moment=require(_0xe0b0('0x1'));var BPromise=require('bluebird');var rs=require(_0xe0b0('0x2'));var fs=require('fs');var Redis=require(_0xe0b0('0x3'));var db=require(_0xe0b0('0x4'))['db'];var utils=require(_0xe0b0('0x5'));var logger=require(_0xe0b0('0x6'))(_0xe0b0('0x7'));var config=require(_0xe0b0('0x8'));var jayson=require(_0xe0b0('0x9'));var client=jayson[_0xe0b0('0xa')][_0xe0b0('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x219b1c,_0x5cf9cc,_0x50be7f){return new BPromise(function(_0x11effc,_0x435060){return client[_0xe0b0('0xc')](_0x219b1c,_0x50be7f)[_0xe0b0('0xd')](function(_0x4c24f9){logger[_0xe0b0('0xe')](_0xe0b0('0xf'),_0x5cf9cc,'request\x20sent');logger[_0xe0b0('0x10')](_0xe0b0('0x11'),_0x5cf9cc,'request\x20sent',JSON[_0xe0b0('0x12')](_0x4c24f9));if(_0x4c24f9[_0xe0b0('0x13')]){if(_0x4c24f9[_0xe0b0('0x13')]['code']===0x1f4){logger[_0xe0b0('0x13')](_0xe0b0('0xf'),_0x5cf9cc,_0x4c24f9[_0xe0b0('0x13')][_0xe0b0('0x14')]);return _0x435060(_0x4c24f9[_0xe0b0('0x13')]['message']);}logger[_0xe0b0('0x13')](_0xe0b0('0xf'),_0x5cf9cc,_0x4c24f9[_0xe0b0('0x13')][_0xe0b0('0x14')]);return _0x11effc(_0x4c24f9[_0xe0b0('0x13')]['message']);}else{logger[_0xe0b0('0xe')]('VoiceRecording,\x20%s,\x20%s',_0x5cf9cc,_0xe0b0('0x15'));_0x11effc(_0x4c24f9[_0xe0b0('0x16')]['message']);}})[_0xe0b0('0x17')](function(_0x4a4cc0){logger[_0xe0b0('0x13')](_0xe0b0('0xf'),_0x5cf9cc,_0x4a4cc0);_0x435060(_0x4a4cc0);});});}exports['UpdateVoiceRecording']=function(_0x54a3eb){var _0x46bb44=this;return new Promise(function(_0x50a441,_0x4df8da){return db['VoiceRecording'][_0xe0b0('0x18')](_0x54a3eb['body'],{'raw':_0x54a3eb['options']?_0x54a3eb[_0xe0b0('0x19')]['raw']===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x54a3eb[_0xe0b0('0x19')]?_0x54a3eb['options'][_0xe0b0('0x1a')]||null:null,'attributes':_0x54a3eb[_0xe0b0('0x19')]?_0x54a3eb[_0xe0b0('0x19')][_0xe0b0('0x1b')]||null:null,'limit':_0x54a3eb[_0xe0b0('0x19')]?_0x54a3eb['options']['limit']||null:null})[_0xe0b0('0xd')](function(_0x5512bb){logger[_0xe0b0('0xe')](_0xe0b0('0x1c'),_0x54a3eb);logger['debug'](_0xe0b0('0x1c'),_0x54a3eb,JSON['stringify'](_0x5512bb));_0x50a441(_0x5512bb);})[_0xe0b0('0x17')](function(_0x49a727){logger[_0xe0b0('0x13')]('UpdateVoiceRecording',_0x49a727[_0xe0b0('0x14')],_0x54a3eb);_0x4df8da(_0x46bb44['error'](0x1f4,_0x49a727[_0xe0b0('0x14')]));});});};exports['CreateVoiceRecording']=function(_0x3c221d){var _0x5c5317=this;return new Promise(function(_0x362aba,_0x3c3bc2){var _0x1f1ebd=require(_0xe0b0('0x1d'));var _0x3ec2;return db[_0xe0b0('0x1e')]['findOne']({'attributes':['id',_0xe0b0('0x1f')],'where':{'id':0x1},'raw':!![]})[_0xe0b0('0xd')](function(_0x5b7a64){_0x3ec2=_0x5b7a64;return db[_0xe0b0('0x20')][_0xe0b0('0x21')](_0x3c221d[_0xe0b0('0x22')]);})[_0xe0b0('0xd')](function(_0x3cdbd5){if(_0x3ec2[_0xe0b0('0x1f')]&&fs[_0xe0b0('0x23')](_0x3cdbd5['value'])){var _0x1854b8=util[_0xe0b0('0x24')]('%s.cypher',_0x3cdbd5['value']);return _0x1f1ebd[_0xe0b0('0x25')](_0x3cdbd5[_0xe0b0('0x26')],_0x1854b8,config[_0xe0b0('0x27')][_0xe0b0('0x28')])[_0xe0b0('0xd')](function(){fs['unlink'](_0x3cdbd5[_0xe0b0('0x26')]);logger[_0xe0b0('0xe')](_0xe0b0('0x29'));return _0x3cdbd5;});}return _0x3cdbd5;})[_0xe0b0('0xd')](function(_0x27158f){logger['info'](_0xe0b0('0x2a'),_0x3c221d);logger[_0xe0b0('0x10')](_0xe0b0('0x2a'),_0x3c221d,JSON[_0xe0b0('0x12')](_0x27158f));_0x362aba(_0x27158f);})[_0xe0b0('0x17')](function(_0x12eeb8){logger[_0xe0b0('0x13')](_0xe0b0('0x2a'),_0x12eeb8[_0xe0b0('0x14')],_0x3c221d);_0x3c3bc2(_0x5c5317[_0xe0b0('0x13')](0x1f4,_0x12eeb8[_0xe0b0('0x14')]));});});};
\ No newline at end of file
+var _0xcf2f=['request','VoiceRecording,\x20%s,\x20%s','request\x20sent','VoiceRecording,\x20%s,\x20%s,\x20%s','stringify','error','message','info','result','catch','UpdateVoiceRecording','VoiceRecording','update','options','where','attributes','limit','CreateVoiceRecording','../../components/encryptor','Setting','findOne','callRecordingEncryption','create','body','existsSync','value','format','%s.cypher','encryptFile','recording','then','unlink','lodash','util','moment','bluebird','randomstring','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http'];(function(_0x4d5f07,_0x28120f){var _0x38787d=function(_0x376ee3){while(--_0x376ee3){_0x4d5f07['push'](_0x4d5f07['shift']());}};_0x38787d(++_0x28120f);}(_0xcf2f,0xa7));var _0xfcf2=function(_0x58faf0,_0x155add){_0x58faf0=_0x58faf0-0x0;var _0x12d75f=_0xcf2f[_0x58faf0];return _0x12d75f;};'use strict';var _=require(_0xfcf2('0x0'));var util=require(_0xfcf2('0x1'));var moment=require(_0xfcf2('0x2'));var BPromise=require(_0xfcf2('0x3'));var rs=require(_0xfcf2('0x4'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0xfcf2('0x5'))['db'];var utils=require(_0xfcf2('0x6'));var logger=require(_0xfcf2('0x7'))(_0xfcf2('0x8'));var config=require(_0xfcf2('0x9'));var jayson=require(_0xfcf2('0xa'));var client=jayson[_0xfcf2('0xb')][_0xfcf2('0xc')]({'port':0x232a});function respondWithRpcPromise(_0x41d4bd,_0x157f48,_0x16b6b2){return new BPromise(function(_0x34f444,_0xb4c510){return client[_0xfcf2('0xd')](_0x41d4bd,_0x16b6b2)['then'](function(_0x575f33){logger['info'](_0xfcf2('0xe'),_0x157f48,_0xfcf2('0xf'));logger['debug'](_0xfcf2('0x10'),_0x157f48,_0xfcf2('0xf'),JSON[_0xfcf2('0x11')](_0x575f33));if(_0x575f33[_0xfcf2('0x12')]){if(_0x575f33['error']['code']===0x1f4){logger[_0xfcf2('0x12')](_0xfcf2('0xe'),_0x157f48,_0x575f33[_0xfcf2('0x12')][_0xfcf2('0x13')]);return _0xb4c510(_0x575f33['error'][_0xfcf2('0x13')]);}logger['error']('VoiceRecording,\x20%s,\x20%s',_0x157f48,_0x575f33['error'][_0xfcf2('0x13')]);return _0x34f444(_0x575f33['error'][_0xfcf2('0x13')]);}else{logger[_0xfcf2('0x14')](_0xfcf2('0xe'),_0x157f48,_0xfcf2('0xf'));_0x34f444(_0x575f33[_0xfcf2('0x15')][_0xfcf2('0x13')]);}})[_0xfcf2('0x16')](function(_0x4d64ce){logger[_0xfcf2('0x12')](_0xfcf2('0xe'),_0x157f48,_0x4d64ce);_0xb4c510(_0x4d64ce);});});}exports[_0xfcf2('0x17')]=function(_0x581d78){var _0xd87472=this;return new Promise(function(_0x1b3c89,_0x33eaa7){return db[_0xfcf2('0x18')][_0xfcf2('0x19')](_0x581d78['body'],{'raw':_0x581d78[_0xfcf2('0x1a')]?_0x581d78[_0xfcf2('0x1a')]['raw']===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x581d78[_0xfcf2('0x1a')]?_0x581d78[_0xfcf2('0x1a')][_0xfcf2('0x1b')]||null:null,'attributes':_0x581d78[_0xfcf2('0x1a')]?_0x581d78[_0xfcf2('0x1a')][_0xfcf2('0x1c')]||null:null,'limit':_0x581d78[_0xfcf2('0x1a')]?_0x581d78[_0xfcf2('0x1a')][_0xfcf2('0x1d')]||null:null})['then'](function(_0x3790ed){logger[_0xfcf2('0x14')](_0xfcf2('0x17'),_0x581d78);logger['debug'](_0xfcf2('0x17'),_0x581d78,JSON[_0xfcf2('0x11')](_0x3790ed));_0x1b3c89(_0x3790ed);})['catch'](function(_0x3c3774){logger[_0xfcf2('0x12')]('UpdateVoiceRecording',_0x3c3774[_0xfcf2('0x13')],_0x581d78);_0x33eaa7(_0xd87472[_0xfcf2('0x12')](0x1f4,_0x3c3774[_0xfcf2('0x13')]));});});};exports[_0xfcf2('0x1e')]=function(_0x5bb384){var _0x1deca3=this;return new Promise(function(_0x448222,_0x2a9d64){var _0x3779ee=require(_0xfcf2('0x1f'));var _0x2b1d60;return db[_0xfcf2('0x20')][_0xfcf2('0x21')]({'attributes':['id',_0xfcf2('0x22')],'where':{'id':0x1},'raw':!![]})['then'](function(_0x4c2935){_0x2b1d60=_0x4c2935;return db[_0xfcf2('0x18')][_0xfcf2('0x23')](_0x5bb384[_0xfcf2('0x24')]);})['then'](function(_0x560898){if(_0x2b1d60['callRecordingEncryption']&&fs[_0xfcf2('0x25')](_0x560898[_0xfcf2('0x26')])){var _0x40c1ae=util[_0xfcf2('0x27')](_0xfcf2('0x28'),_0x560898[_0xfcf2('0x26')]);return _0x3779ee[_0xfcf2('0x29')](_0x560898['value'],_0x40c1ae,config['secrets'][_0xfcf2('0x2a')])[_0xfcf2('0x2b')](function(){fs[_0xfcf2('0x2c')](_0x560898[_0xfcf2('0x26')]);logger['info']('CreateVoiceRecording\x20file\x20encrypted');return _0x560898;});}return _0x560898;})[_0xfcf2('0x2b')](function(_0x5310e6){logger[_0xfcf2('0x14')](_0xfcf2('0x1e'),_0x5bb384);logger['debug'](_0xfcf2('0x1e'),_0x5bb384,JSON[_0xfcf2('0x11')](_0x5310e6));_0x448222(_0x5310e6);})[_0xfcf2('0x16')](function(_0x4046c6){logger[_0xfcf2('0x12')](_0xfcf2('0x1e'),_0x4046c6[_0xfcf2('0x13')],_0x5bb384);_0x2a9d64(_0x1deca3['error'](0x1f4,_0x4046c6[_0xfcf2('0x13')]));});});};
\ No newline at end of file
index 4d953ac..1547121 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3eb8=['./voiceTransferReport.controller','isAuthenticated','index','get','describe','/:id','show','post','create','put','destroy','multer','util','path','connect-timeout','express','Router','../../components/auth/service','../../config/environment'];(function(_0x20a584,_0xe384a5){var _0x4b41a8=function(_0x2127c6){while(--_0x2127c6){_0x20a584['push'](_0x20a584['shift']());}};_0x4b41a8(++_0xe384a5);}(_0x3eb8,0x1e6));var _0x83eb=function(_0x17406a,_0x1e2320){_0x17406a=_0x17406a-0x0;var _0x1501ff=_0x3eb8[_0x17406a];return _0x1501ff;};'use strict';var multer=require(_0x83eb('0x0'));var util=require(_0x83eb('0x1'));var path=require(_0x83eb('0x2'));var timeout=require(_0x83eb('0x3'));var express=require(_0x83eb('0x4'));var router=express[_0x83eb('0x5')]();var fs_extra=require('fs-extra');var auth=require(_0x83eb('0x6'));var interaction=require('../../components/interaction/service');var config=require(_0x83eb('0x7'));var controller=require(_0x83eb('0x8'));router['get']('/',auth[_0x83eb('0x9')](),controller[_0x83eb('0xa')]);router[_0x83eb('0xb')]('/describe',auth[_0x83eb('0x9')](),controller[_0x83eb('0xc')]);router[_0x83eb('0xb')](_0x83eb('0xd'),auth['isAuthenticated'](),controller[_0x83eb('0xe')]);router[_0x83eb('0xf')]('/',auth[_0x83eb('0x9')](),controller[_0x83eb('0x10')]);router[_0x83eb('0x11')](_0x83eb('0xd'),auth[_0x83eb('0x9')](),controller['update']);router['delete'](_0x83eb('0xd'),auth[_0x83eb('0x9')](),controller[_0x83eb('0x12')]);module['exports']=router;
\ No newline at end of file
+var _0xb55c=['describe','show','post','put','/:id','exports','util','connect-timeout','Router','fs-extra','../../components/auth/service','../../config/environment','./voiceTransferReport.controller','get','isAuthenticated','index','/describe'];(function(_0x55abd9,_0x1148af){var _0x3e5669=function(_0x6f2105){while(--_0x6f2105){_0x55abd9['push'](_0x55abd9['shift']());}};_0x3e5669(++_0x1148af);}(_0xb55c,0x7d));var _0xcb55=function(_0x14634f,_0x5ed190){_0x14634f=_0x14634f-0x0;var _0x5021f9=_0xb55c[_0x14634f];return _0x5021f9;};'use strict';var multer=require('multer');var util=require(_0xcb55('0x0'));var path=require('path');var timeout=require(_0xcb55('0x1'));var express=require('express');var router=express[_0xcb55('0x2')]();var fs_extra=require(_0xcb55('0x3'));var auth=require(_0xcb55('0x4'));var interaction=require('../../components/interaction/service');var config=require(_0xcb55('0x5'));var controller=require(_0xcb55('0x6'));router[_0xcb55('0x7')]('/',auth[_0xcb55('0x8')](),controller[_0xcb55('0x9')]);router[_0xcb55('0x7')](_0xcb55('0xa'),auth['isAuthenticated'](),controller[_0xcb55('0xb')]);router[_0xcb55('0x7')]('/:id',auth[_0xcb55('0x8')](),controller[_0xcb55('0xc')]);router[_0xcb55('0xd')]('/',auth[_0xcb55('0x8')](),controller['create']);router[_0xcb55('0xe')](_0xcb55('0xf'),auth[_0xcb55('0x8')](),controller['update']);router['delete'](_0xcb55('0xf'),auth[_0xcb55('0x8')](),controller['destroy']);module[_0xcb55('0x10')]=router;
\ No newline at end of file
index 7d2b7cb..f1b38cb 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6358=['Yes','sequelize','moment','exports','blind','attended','STRING','ENUM'];(function(_0x2f257e,_0x49af2c){var _0x16293c=function(_0x59f6d9){while(--_0x59f6d9){_0x2f257e['push'](_0x2f257e['shift']());}};_0x16293c(++_0x49af2c);}(_0x6358,0x1d1));var _0x8635=function(_0x305bc6,_0x3d76ff){_0x305bc6=_0x305bc6-0x0;var _0x249df6=_0x6358[_0x305bc6];return _0x249df6;};'use strict';var Sequelize=require(_0x8635('0x0'));var moment=require(_0x8635('0x1'));module[_0x8635('0x2')]={'type':{'type':Sequelize['ENUM'](_0x8635('0x3'),_0x8635('0x4'))},'result':{'type':Sequelize[_0x8635('0x5')]},'transfererchannel':{'type':Sequelize['STRING']},'transferercalleridnum':{'type':Sequelize[_0x8635('0x5')]},'transferercalleridname':{'type':Sequelize[_0x8635('0x5')]},'transfererconnectedlinenum':{'type':Sequelize['STRING']},'transfererconnectedlinename':{'type':Sequelize[_0x8635('0x5')]},'transfereraccountcode':{'type':Sequelize[_0x8635('0x5')]},'transferercontext':{'type':Sequelize[_0x8635('0x5')]},'transfererexten':{'type':Sequelize[_0x8635('0x5')]},'transfererlinkedid':{'type':Sequelize['STRING']},'transfereechannel':{'type':Sequelize['STRING']},'transfereecalleridnum':{'type':Sequelize[_0x8635('0x5')]},'transfereecalleridname':{'type':Sequelize[_0x8635('0x5')]},'transfereeconnectedlinenum':{'type':Sequelize[_0x8635('0x5')]},'transfereeconnectedlinename':{'type':Sequelize[_0x8635('0x5')]},'transfereeaccountcode':{'type':Sequelize[_0x8635('0x5')]},'transfereecontext':{'type':Sequelize[_0x8635('0x5')]},'transfereeexten':{'type':Sequelize[_0x8635('0x5')]},'transfereelinkedid':{'type':Sequelize[_0x8635('0x5')]},'isexternal':{'type':Sequelize[_0x8635('0x6')](_0x8635('0x7'),'No')},'context':{'type':Sequelize[_0x8635('0x5')]},'extension':{'type':Sequelize[_0x8635('0x5')]}};
\ No newline at end of file
+var _0xaadd=['ENUM','blind','attended','STRING','Yes','sequelize','moment'];(function(_0x44376c,_0x123e78){var _0x3746c7=function(_0x4327ec){while(--_0x4327ec){_0x44376c['push'](_0x44376c['shift']());}};_0x3746c7(++_0x123e78);}(_0xaadd,0xde));var _0xdaad=function(_0x5f08a6,_0x400121){_0x5f08a6=_0x5f08a6-0x0;var _0x5d0641=_0xaadd[_0x5f08a6];return _0x5d0641;};'use strict';var Sequelize=require(_0xdaad('0x0'));var moment=require(_0xdaad('0x1'));module['exports']={'type':{'type':Sequelize[_0xdaad('0x2')](_0xdaad('0x3'),_0xdaad('0x4'))},'result':{'type':Sequelize[_0xdaad('0x5')]},'transfererchannel':{'type':Sequelize[_0xdaad('0x5')]},'transferercalleridnum':{'type':Sequelize[_0xdaad('0x5')]},'transferercalleridname':{'type':Sequelize['STRING']},'transfererconnectedlinenum':{'type':Sequelize[_0xdaad('0x5')]},'transfererconnectedlinename':{'type':Sequelize[_0xdaad('0x5')]},'transfereraccountcode':{'type':Sequelize[_0xdaad('0x5')]},'transferercontext':{'type':Sequelize[_0xdaad('0x5')]},'transfererexten':{'type':Sequelize[_0xdaad('0x5')]},'transfererlinkedid':{'type':Sequelize['STRING']},'transfereechannel':{'type':Sequelize[_0xdaad('0x5')]},'transfereecalleridnum':{'type':Sequelize[_0xdaad('0x5')]},'transfereecalleridname':{'type':Sequelize[_0xdaad('0x5')]},'transfereeconnectedlinenum':{'type':Sequelize['STRING']},'transfereeconnectedlinename':{'type':Sequelize[_0xdaad('0x5')]},'transfereeaccountcode':{'type':Sequelize[_0xdaad('0x5')]},'transfereecontext':{'type':Sequelize['STRING']},'transfereeexten':{'type':Sequelize[_0xdaad('0x5')]},'transfereelinkedid':{'type':Sequelize[_0xdaad('0x5')]},'isexternal':{'type':Sequelize[_0xdaad('0x2')](_0xdaad('0x6'),'No')},'context':{'type':Sequelize['STRING']},'extension':{'type':Sequelize['STRING']}};
\ No newline at end of file
index be91238..0f0d3d0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1124=['filters','intersection','attributes','fields','nolimit','sort','pick','where','merge','VIRTUAL','filter','options','includeAll','include','VoiceTransferReport','rows','catch','params','find','create','body','describe','rimraf','zip-dir','request-promise','moment','bluebird','mustache','util','path','sox','fs-extra','lodash','squel','crypto','jsforce','desk.js','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','sendStatus','status','end','json','offset','limit','count','set','Content-Range','apply','reject','update','then','destroy','error','stack','name','send','index','map','rawAttributes','type','key','model','query','keys'];(function(_0x4d82ea,_0x4d459f){var _0x257f4a=function(_0x424c4f){while(--_0x424c4f){_0x4d82ea['push'](_0x4d82ea['shift']());}};_0x257f4a(++_0x4d459f);}(_0x1124,0x14a));var _0x4112=function(_0x43472e,_0x5c7271){_0x43472e=_0x43472e-0x0;var _0x487606=_0x1124[_0x43472e];return _0x487606;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x4112('0x0'));var zipdir=require(_0x4112('0x1'));var jsonpatch=require('fast-json-patch');var rp=require(_0x4112('0x2'));var moment=require(_0x4112('0x3'));var BPromise=require(_0x4112('0x4'));var Mustache=require(_0x4112('0x5'));var util=require(_0x4112('0x6'));var path=require(_0x4112('0x7'));var sox=require(_0x4112('0x8'));var csv=require('to-csv');var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x4112('0x9'));var _=require(_0x4112('0xa'));var squel=require(_0x4112('0xb'));var crypto=require(_0x4112('0xc'));var jsforce=require(_0x4112('0xd'));var deskjs=require(_0x4112('0xe'));var toCsv=require(_0x4112('0xf'));var querystring=require(_0x4112('0x10'));var Papa=require(_0x4112('0x11'));var Redis=require(_0x4112('0x12'));var authService=require(_0x4112('0x13'));var qs=require(_0x4112('0x14'));var as=require(_0x4112('0x15'));var hardwareService=require(_0x4112('0x16'));var logger=require(_0x4112('0x17'))(_0x4112('0x18'));var utils=require(_0x4112('0x19'));var config=require(_0x4112('0x1a'));var licenseUtil=require(_0x4112('0x1b'));var db=require(_0x4112('0x1c'))['db'];function respondWithStatusCode(_0x55a480,_0x5bc207){_0x5bc207=_0x5bc207||0xcc;return function(_0x5590c0){if(_0x5590c0){return _0x55a480[_0x4112('0x1d')](_0x5bc207);}return _0x55a480[_0x4112('0x1e')](_0x5bc207)[_0x4112('0x1f')]();};}function respondWithResult(_0x34bc39,_0x27664a){_0x27664a=_0x27664a||0xc8;return function(_0x1508c9){if(_0x1508c9){return _0x34bc39[_0x4112('0x1e')](_0x27664a)[_0x4112('0x20')](_0x1508c9);}};}function respondWithFilteredResult(_0x38dbba,_0x48aac0){return function(_0xf8535e){if(_0xf8535e){var _0x357957=typeof _0x48aac0[_0x4112('0x21')]==='undefined'&&typeof _0x48aac0[_0x4112('0x22')]==='undefined';var _0x2d391b=_0xf8535e[_0x4112('0x23')];var _0x92839c=_0x357957?0x0:_0x48aac0['offset'];var _0x50e78a=_0x357957?_0xf8535e[_0x4112('0x23')]:_0x48aac0[_0x4112('0x21')]+_0x48aac0[_0x4112('0x22')];var _0x6f53fa;if(_0x50e78a>=_0x2d391b){_0x50e78a=_0x2d391b;_0x6f53fa=0xc8;}else{_0x6f53fa=0xce;}_0x38dbba[_0x4112('0x1e')](_0x6f53fa);return _0x38dbba[_0x4112('0x24')](_0x4112('0x25'),_0x92839c+'-'+_0x50e78a+'/'+_0x2d391b)['json'](_0xf8535e);}return null;};}function patchUpdates(_0x5017da){return function(_0x3422b8){try{jsonpatch[_0x4112('0x26')](_0x3422b8,_0x5017da,!![]);}catch(_0x3a2505){return BPromise[_0x4112('0x27')](_0x3a2505);}return _0x3422b8['save']();};}function saveUpdates(_0x4e69cb,_0x3679fc){return function(_0x398448){if(_0x398448){return _0x398448[_0x4112('0x28')](_0x4e69cb)[_0x4112('0x29')](function(_0xda38e3){return _0xda38e3;});}return null;};}function removeEntity(_0x481577,_0x4e47a8){return function(_0x505c26){if(_0x505c26){return _0x505c26[_0x4112('0x2a')]()[_0x4112('0x29')](function(){_0x481577[_0x4112('0x1e')](0xcc)[_0x4112('0x1f')]();});}};}function handleEntityNotFound(_0x3af899,_0x1fb2fc){return function(_0x322e3e){if(!_0x322e3e){_0x3af899[_0x4112('0x1d')](0x194);}return _0x322e3e;};}function handleError(_0x34de69,_0x55a4c2){_0x55a4c2=_0x55a4c2||0x1f4;return function(_0xb9f18b){logger[_0x4112('0x2b')](_0xb9f18b[_0x4112('0x2c')]);if(_0xb9f18b[_0x4112('0x2d')]){delete _0xb9f18b[_0x4112('0x2d')];}_0x34de69['status'](_0x55a4c2)[_0x4112('0x2e')](_0xb9f18b);};}exports[_0x4112('0x2f')]=function(_0x4c4e0a,_0x5dd684){var _0x2f4f4c={},_0x280c20={},_0x555899={'count':0x0,'rows':[]};var _0x305ec9=_[_0x4112('0x30')](db['VoiceTransferReport'][_0x4112('0x31')],function(_0x8b8429){return{'name':_0x8b8429['fieldName'],'type':_0x8b8429[_0x4112('0x32')][_0x4112('0x33')]};});_0x280c20[_0x4112('0x34')]=_['map'](_0x305ec9,_0x4112('0x2d'));_0x280c20[_0x4112('0x35')]=_[_0x4112('0x36')](_0x4c4e0a[_0x4112('0x35')]);_0x280c20[_0x4112('0x37')]=_[_0x4112('0x38')](_0x280c20[_0x4112('0x34')],_0x280c20[_0x4112('0x35')]);_0x2f4f4c[_0x4112('0x39')]=_['intersection'](_0x280c20[_0x4112('0x34')],qs[_0x4112('0x3a')](_0x4c4e0a['query'][_0x4112('0x3a')]));_0x2f4f4c[_0x4112('0x39')]=_0x2f4f4c[_0x4112('0x39')]['length']?_0x2f4f4c[_0x4112('0x39')]:_0x280c20[_0x4112('0x34')];if(!_0x4c4e0a['query']['hasOwnProperty'](_0x4112('0x3b'))){_0x2f4f4c['limit']=qs[_0x4112('0x22')](_0x4c4e0a['query'][_0x4112('0x22')]);_0x2f4f4c['offset']=qs[_0x4112('0x21')](_0x4c4e0a[_0x4112('0x35')][_0x4112('0x21')]);}_0x2f4f4c['order']=qs['sort'](_0x4c4e0a['query'][_0x4112('0x3c')]);_0x2f4f4c['where']=qs[_0x4112('0x37')](_[_0x4112('0x3d')](_0x4c4e0a[_0x4112('0x35')],_0x280c20[_0x4112('0x37')]),_0x305ec9);if(_0x4c4e0a[_0x4112('0x35')]['filter']){_0x2f4f4c[_0x4112('0x3e')]=_[_0x4112('0x3f')](_0x2f4f4c[_0x4112('0x3e')],{'$or':_[_0x4112('0x30')](_0x305ec9,function(_0x1218fd){if(_0x1218fd['type']!==_0x4112('0x40')){var _0x289eb2={};_0x289eb2[_0x1218fd[_0x4112('0x2d')]]={'$like':'%'+_0x4c4e0a[_0x4112('0x35')][_0x4112('0x41')]+'%'};return _0x289eb2;}})});}_0x2f4f4c=_[_0x4112('0x3f')]({},_0x2f4f4c,_0x4c4e0a[_0x4112('0x42')]);var _0x36eb90={'where':_0x2f4f4c['where']};return db['VoiceTransferReport'][_0x4112('0x23')](_0x36eb90)[_0x4112('0x29')](function(_0x5b5120){_0x555899[_0x4112('0x23')]=_0x5b5120;if(_0x4c4e0a[_0x4112('0x35')][_0x4112('0x43')]){_0x2f4f4c[_0x4112('0x44')]=[{'all':!![]}];}return db[_0x4112('0x45')]['findAll'](_0x2f4f4c);})['then'](function(_0x193499){_0x555899[_0x4112('0x46')]=_0x193499;return _0x555899;})[_0x4112('0x29')](respondWithFilteredResult(_0x5dd684,_0x2f4f4c))[_0x4112('0x47')](handleError(_0x5dd684,null));};exports['show']=function(_0x7051b1,_0x5521a4){var _0x509fad={'raw':!![],'where':{'id':_0x7051b1[_0x4112('0x48')]['id']}},_0x5ec55a={};_0x5ec55a[_0x4112('0x34')]=_[_0x4112('0x36')](db[_0x4112('0x45')][_0x4112('0x31')]);_0x5ec55a['query']=_['keys'](_0x7051b1[_0x4112('0x35')]);_0x5ec55a['filters']=_['intersection'](_0x5ec55a[_0x4112('0x34')],_0x5ec55a[_0x4112('0x35')]);_0x509fad['attributes']=_[_0x4112('0x38')](_0x5ec55a[_0x4112('0x34')],qs[_0x4112('0x3a')](_0x7051b1[_0x4112('0x35')][_0x4112('0x3a')]));_0x509fad[_0x4112('0x39')]=_0x509fad[_0x4112('0x39')]['length']?_0x509fad[_0x4112('0x39')]:_0x5ec55a[_0x4112('0x34')];if(_0x7051b1[_0x4112('0x35')][_0x4112('0x43')]){_0x509fad[_0x4112('0x44')]=[{'all':!![]}];}_0x509fad=_['merge']({},_0x509fad,_0x7051b1[_0x4112('0x42')]);return db[_0x4112('0x45')][_0x4112('0x49')](_0x509fad)[_0x4112('0x29')](handleEntityNotFound(_0x5521a4,null))[_0x4112('0x29')](respondWithResult(_0x5521a4,null))['catch'](handleError(_0x5521a4,null));};exports[_0x4112('0x4a')]=function(_0x10544e,_0x19663b){return db[_0x4112('0x45')][_0x4112('0x4a')](_0x10544e['body'],{})[_0x4112('0x29')](respondWithResult(_0x19663b,0xc9))[_0x4112('0x47')](handleError(_0x19663b,null));};exports[_0x4112('0x28')]=function(_0x289e11,_0x140ff0){if(_0x289e11[_0x4112('0x4b')]['id']){delete _0x289e11[_0x4112('0x4b')]['id'];}return db[_0x4112('0x45')][_0x4112('0x49')]({'where':{'id':_0x289e11[_0x4112('0x48')]['id']}})['then'](handleEntityNotFound(_0x140ff0,null))[_0x4112('0x29')](saveUpdates(_0x289e11[_0x4112('0x4b')],null))['then'](respondWithResult(_0x140ff0,null))['catch'](handleError(_0x140ff0,null));};exports[_0x4112('0x2a')]=function(_0x485d30,_0x51e5eb){return db[_0x4112('0x45')][_0x4112('0x49')]({'where':{'id':_0x485d30[_0x4112('0x48')]['id']}})['then'](handleEntityNotFound(_0x51e5eb,null))['then'](removeEntity(_0x51e5eb,null))[_0x4112('0x47')](handleError(_0x51e5eb,null));};exports['describe']=function(_0x15f47c,_0x1d1743){return db[_0x4112('0x45')][_0x4112('0x4c')]()[_0x4112('0x29')](respondWithResult(_0x1d1743,null))[_0x4112('0x47')](handleError(_0x1d1743,null));};
\ No newline at end of file
+var _0xee42=['undefined','limit','count','status','set','Content-Range','reject','save','then','name','send','index','map','rawAttributes','fieldName','key','query','filters','intersection','model','attributes','fields','length','nolimit','order','sort','where','pick','filter','merge','type','VIRTUAL','options','VoiceTransferReport','include','catch','show','params','keys','includeAll','find','create','body','update','describe','eml-format','zip-dir','fast-json-patch','moment','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/license/hardware','../../config/logger','../../config/utils','../../config/environment','../../config/license/util','sendStatus','end','json','offset'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0xee42,0x155));var _0x2ee4=function(_0x341e0f,_0x4a09d0){_0x341e0f=_0x341e0f-0x0;var _0x59555a=_0xee42[_0x341e0f];return _0x59555a;};'use strict';var emlformat=require(_0x2ee4('0x0'));var rimraf=require('rimraf');var zipdir=require(_0x2ee4('0x1'));var jsonpatch=require(_0x2ee4('0x2'));var rp=require('request-promise');var moment=require(_0x2ee4('0x3'));var BPromise=require('bluebird');var Mustache=require(_0x2ee4('0x4'));var util=require(_0x2ee4('0x5'));var path=require(_0x2ee4('0x6'));var sox=require(_0x2ee4('0x7'));var csv=require(_0x2ee4('0x8'));var ejs=require(_0x2ee4('0x9'));var fs=require('fs');var fs_extra=require(_0x2ee4('0xa'));var _=require('lodash');var squel=require(_0x2ee4('0xb'));var crypto=require(_0x2ee4('0xc'));var jsforce=require('jsforce');var deskjs=require(_0x2ee4('0xd'));var toCsv=require(_0x2ee4('0x8'));var querystring=require(_0x2ee4('0xe'));var Papa=require(_0x2ee4('0xf'));var Redis=require(_0x2ee4('0x10'));var authService=require(_0x2ee4('0x11'));var qs=require(_0x2ee4('0x12'));var as=require(_0x2ee4('0x13'));var hardwareService=require(_0x2ee4('0x14'));var logger=require(_0x2ee4('0x15'))('api');var utils=require(_0x2ee4('0x16'));var config=require(_0x2ee4('0x17'));var licenseUtil=require(_0x2ee4('0x18'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x4028b5,_0x276a76){_0x276a76=_0x276a76||0xcc;return function(_0xcc99e6){if(_0xcc99e6){return _0x4028b5[_0x2ee4('0x19')](_0x276a76);}return _0x4028b5['status'](_0x276a76)[_0x2ee4('0x1a')]();};}function respondWithResult(_0x15bed5,_0x156f13){_0x156f13=_0x156f13||0xc8;return function(_0x3fac9d){if(_0x3fac9d){return _0x15bed5['status'](_0x156f13)[_0x2ee4('0x1b')](_0x3fac9d);}};}function respondWithFilteredResult(_0x4b0bf3,_0x66aadd){return function(_0xad1a66){if(_0xad1a66){var _0xe2b84f=typeof _0x66aadd[_0x2ee4('0x1c')]===_0x2ee4('0x1d')&&typeof _0x66aadd[_0x2ee4('0x1e')]===_0x2ee4('0x1d');var _0x303a31=_0xad1a66['count'];var _0xf9350a=_0xe2b84f?0x0:_0x66aadd[_0x2ee4('0x1c')];var _0x3a6dd9=_0xe2b84f?_0xad1a66[_0x2ee4('0x1f')]:_0x66aadd[_0x2ee4('0x1c')]+_0x66aadd[_0x2ee4('0x1e')];var _0x35b5e5;if(_0x3a6dd9>=_0x303a31){_0x3a6dd9=_0x303a31;_0x35b5e5=0xc8;}else{_0x35b5e5=0xce;}_0x4b0bf3[_0x2ee4('0x20')](_0x35b5e5);return _0x4b0bf3[_0x2ee4('0x21')](_0x2ee4('0x22'),_0xf9350a+'-'+_0x3a6dd9+'/'+_0x303a31)[_0x2ee4('0x1b')](_0xad1a66);}return null;};}function patchUpdates(_0x25cede){return function(_0xb8c3c9){try{jsonpatch['apply'](_0xb8c3c9,_0x25cede,!![]);}catch(_0xd876f4){return BPromise[_0x2ee4('0x23')](_0xd876f4);}return _0xb8c3c9[_0x2ee4('0x24')]();};}function saveUpdates(_0x29d0b6,_0x25f616){return function(_0x3df497){if(_0x3df497){return _0x3df497['update'](_0x29d0b6)[_0x2ee4('0x25')](function(_0xa41319){return _0xa41319;});}return null;};}function removeEntity(_0x17a827,_0x54c0a5){return function(_0x1f0ba7){if(_0x1f0ba7){return _0x1f0ba7['destroy']()[_0x2ee4('0x25')](function(){_0x17a827[_0x2ee4('0x20')](0xcc)[_0x2ee4('0x1a')]();});}};}function handleEntityNotFound(_0x152ca2,_0x3a41e4){return function(_0x97e97d){if(!_0x97e97d){_0x152ca2['sendStatus'](0x194);}return _0x97e97d;};}function handleError(_0x59bcb7,_0x5c8e43){_0x5c8e43=_0x5c8e43||0x1f4;return function(_0x361ee9){logger['error'](_0x361ee9['stack']);if(_0x361ee9['name']){delete _0x361ee9[_0x2ee4('0x26')];}_0x59bcb7[_0x2ee4('0x20')](_0x5c8e43)[_0x2ee4('0x27')](_0x361ee9);};}exports[_0x2ee4('0x28')]=function(_0x486f98,_0x4012c5){var _0x4f9b57={},_0x45ca70={},_0x2d28e3={'count':0x0,'rows':[]};var _0x3aa6b5=_[_0x2ee4('0x29')](db['VoiceTransferReport'][_0x2ee4('0x2a')],function(_0x327a3b){return{'name':_0x327a3b[_0x2ee4('0x2b')],'type':_0x327a3b['type'][_0x2ee4('0x2c')]};});_0x45ca70['model']=_['map'](_0x3aa6b5,_0x2ee4('0x26'));_0x45ca70[_0x2ee4('0x2d')]=_['keys'](_0x486f98[_0x2ee4('0x2d')]);_0x45ca70[_0x2ee4('0x2e')]=_[_0x2ee4('0x2f')](_0x45ca70[_0x2ee4('0x30')],_0x45ca70[_0x2ee4('0x2d')]);_0x4f9b57[_0x2ee4('0x31')]=_[_0x2ee4('0x2f')](_0x45ca70[_0x2ee4('0x30')],qs[_0x2ee4('0x32')](_0x486f98[_0x2ee4('0x2d')][_0x2ee4('0x32')]));_0x4f9b57[_0x2ee4('0x31')]=_0x4f9b57[_0x2ee4('0x31')][_0x2ee4('0x33')]?_0x4f9b57['attributes']:_0x45ca70[_0x2ee4('0x30')];if(!_0x486f98[_0x2ee4('0x2d')]['hasOwnProperty'](_0x2ee4('0x34'))){_0x4f9b57[_0x2ee4('0x1e')]=qs[_0x2ee4('0x1e')](_0x486f98['query'][_0x2ee4('0x1e')]);_0x4f9b57[_0x2ee4('0x1c')]=qs['offset'](_0x486f98['query']['offset']);}_0x4f9b57[_0x2ee4('0x35')]=qs[_0x2ee4('0x36')](_0x486f98[_0x2ee4('0x2d')][_0x2ee4('0x36')]);_0x4f9b57[_0x2ee4('0x37')]=qs['filters'](_[_0x2ee4('0x38')](_0x486f98[_0x2ee4('0x2d')],_0x45ca70[_0x2ee4('0x2e')]),_0x3aa6b5);if(_0x486f98[_0x2ee4('0x2d')][_0x2ee4('0x39')]){_0x4f9b57['where']=_[_0x2ee4('0x3a')](_0x4f9b57['where'],{'$or':_[_0x2ee4('0x29')](_0x3aa6b5,function(_0x3c70b5){if(_0x3c70b5[_0x2ee4('0x3b')]!==_0x2ee4('0x3c')){var _0x40b35e={};_0x40b35e[_0x3c70b5[_0x2ee4('0x26')]]={'$like':'%'+_0x486f98['query']['filter']+'%'};return _0x40b35e;}})});}_0x4f9b57=_['merge']({},_0x4f9b57,_0x486f98[_0x2ee4('0x3d')]);var _0x49e625={'where':_0x4f9b57[_0x2ee4('0x37')]};return db[_0x2ee4('0x3e')]['count'](_0x49e625)[_0x2ee4('0x25')](function(_0x382b16){_0x2d28e3['count']=_0x382b16;if(_0x486f98['query']['includeAll']){_0x4f9b57[_0x2ee4('0x3f')]=[{'all':!![]}];}return db[_0x2ee4('0x3e')]['findAll'](_0x4f9b57);})[_0x2ee4('0x25')](function(_0x4159bd){_0x2d28e3['rows']=_0x4159bd;return _0x2d28e3;})[_0x2ee4('0x25')](respondWithFilteredResult(_0x4012c5,_0x4f9b57))[_0x2ee4('0x40')](handleError(_0x4012c5,null));};exports[_0x2ee4('0x41')]=function(_0x45fd79,_0x58a0e3){var _0x5979f8={'raw':!![],'where':{'id':_0x45fd79[_0x2ee4('0x42')]['id']}},_0x385efd={};_0x385efd[_0x2ee4('0x30')]=_[_0x2ee4('0x43')](db[_0x2ee4('0x3e')]['rawAttributes']);_0x385efd['query']=_[_0x2ee4('0x43')](_0x45fd79[_0x2ee4('0x2d')]);_0x385efd[_0x2ee4('0x2e')]=_['intersection'](_0x385efd[_0x2ee4('0x30')],_0x385efd[_0x2ee4('0x2d')]);_0x5979f8[_0x2ee4('0x31')]=_['intersection'](_0x385efd[_0x2ee4('0x30')],qs[_0x2ee4('0x32')](_0x45fd79[_0x2ee4('0x2d')][_0x2ee4('0x32')]));_0x5979f8['attributes']=_0x5979f8[_0x2ee4('0x31')][_0x2ee4('0x33')]?_0x5979f8[_0x2ee4('0x31')]:_0x385efd[_0x2ee4('0x30')];if(_0x45fd79[_0x2ee4('0x2d')][_0x2ee4('0x44')]){_0x5979f8[_0x2ee4('0x3f')]=[{'all':!![]}];}_0x5979f8=_[_0x2ee4('0x3a')]({},_0x5979f8,_0x45fd79[_0x2ee4('0x3d')]);return db[_0x2ee4('0x3e')][_0x2ee4('0x45')](_0x5979f8)[_0x2ee4('0x25')](handleEntityNotFound(_0x58a0e3,null))['then'](respondWithResult(_0x58a0e3,null))['catch'](handleError(_0x58a0e3,null));};exports[_0x2ee4('0x46')]=function(_0x2b322e,_0x421915){return db['VoiceTransferReport'][_0x2ee4('0x46')](_0x2b322e[_0x2ee4('0x47')],{})[_0x2ee4('0x25')](respondWithResult(_0x421915,0xc9))[_0x2ee4('0x40')](handleError(_0x421915,null));};exports[_0x2ee4('0x48')]=function(_0x1087ae,_0x1c212d){if(_0x1087ae[_0x2ee4('0x47')]['id']){delete _0x1087ae[_0x2ee4('0x47')]['id'];}return db[_0x2ee4('0x3e')]['find']({'where':{'id':_0x1087ae[_0x2ee4('0x42')]['id']}})[_0x2ee4('0x25')](handleEntityNotFound(_0x1c212d,null))[_0x2ee4('0x25')](saveUpdates(_0x1087ae[_0x2ee4('0x47')],null))['then'](respondWithResult(_0x1c212d,null))[_0x2ee4('0x40')](handleError(_0x1c212d,null));};exports['destroy']=function(_0x56a4a7,_0x4266d4){return db[_0x2ee4('0x3e')][_0x2ee4('0x45')]({'where':{'id':_0x56a4a7[_0x2ee4('0x42')]['id']}})[_0x2ee4('0x25')](handleEntityNotFound(_0x4266d4,null))[_0x2ee4('0x25')](removeEntity(_0x4266d4,null))[_0x2ee4('0x40')](handleError(_0x4266d4,null));};exports[_0x2ee4('0x49')]=function(_0xae3e6e,_0x15d36c){return db['VoiceTransferReport'][_0x2ee4('0x49')]()[_0x2ee4('0x25')](respondWithResult(_0x15d36c,null))[_0x2ee4('0x40')](handleError(_0x15d36c,null));};
\ No newline at end of file
index d26ca5f..1850a19 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x44d3=['./voiceTransferReport.attributes','exports','define','VoiceTransferReport','report_call_transfer','lodash','util','../../config/logger','api','path','../../config/environment'];(function(_0x1da32c,_0x4b3f39){var _0x1efd83=function(_0x3aa22f){while(--_0x3aa22f){_0x1da32c['push'](_0x1da32c['shift']());}};_0x1efd83(++_0x4b3f39);}(_0x44d3,0x89));var _0x344d=function(_0x1d2742,_0x2df633){_0x1d2742=_0x1d2742-0x0;var _0x2730f8=_0x44d3[_0x1d2742];return _0x2730f8;};'use strict';var _=require(_0x344d('0x0'));var util=require(_0x344d('0x1'));var logger=require(_0x344d('0x2'))(_0x344d('0x3'));var moment=require('moment');var BPromise=require('bluebird');var rp=require('request-promise');var fs=require('fs');var path=require(_0x344d('0x4'));var rimraf=require('rimraf');var config=require(_0x344d('0x5'));var attributes=require(_0x344d('0x6'));module[_0x344d('0x7')]=function(_0x305006,_0xc52493){return _0x305006[_0x344d('0x8')](_0x344d('0x9'),attributes,{'tableName':_0x344d('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x9713=['util','../../config/logger','api','bluebird','request-promise','rimraf','./voiceTransferReport.attributes','exports','VoiceTransferReport','report_call_transfer','lodash'];(function(_0x4a3605,_0x1da6cf){var _0xf79a39=function(_0x574f2e){while(--_0x574f2e){_0x4a3605['push'](_0x4a3605['shift']());}};_0xf79a39(++_0x1da6cf);}(_0x9713,0x83));var _0x3971=function(_0x5092e2,_0x187ea4){_0x5092e2=_0x5092e2-0x0;var _0x3d4730=_0x9713[_0x5092e2];return _0x3d4730;};'use strict';var _=require(_0x3971('0x0'));var util=require(_0x3971('0x1'));var logger=require(_0x3971('0x2'))(_0x3971('0x3'));var moment=require('moment');var BPromise=require(_0x3971('0x4'));var rp=require(_0x3971('0x5'));var fs=require('fs');var path=require('path');var rimraf=require(_0x3971('0x6'));var config=require('../../config/environment');var attributes=require(_0x3971('0x7'));module[_0x3971('0x8')]=function(_0x52edca,_0x4bcdc7){return _0x52edca['define'](_0x3971('0x9'),attributes,{'tableName':_0x3971('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index c0c7be1..44e391f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5b77=['randomstring','ioredis','../../config/utils','rpc','../../config/environment','jayson/promise','client','http','request','request\x20sent','VoiceTransferReport,\x20%s,\x20%s,\x20%s','stringify','error','code','VoiceTransferReport,\x20%s,\x20%s','message','info','result','catch','CreateVoiceTransferReport','VoiceTransferReport','body','options','raw','lodash','util','moment','bluebird'];(function(_0x5ebcc2,_0x7ac56b){var _0xb43585=function(_0x1d999b){while(--_0x1d999b){_0x5ebcc2['push'](_0x5ebcc2['shift']());}};_0xb43585(++_0x7ac56b);}(_0x5b77,0x1bc));var _0x75b7=function(_0x18425f,_0x81b36f){_0x18425f=_0x18425f-0x0;var _0x25bbef=_0x5b77[_0x18425f];return _0x25bbef;};'use strict';var _=require(_0x75b7('0x0'));var util=require(_0x75b7('0x1'));var moment=require(_0x75b7('0x2'));var BPromise=require(_0x75b7('0x3'));var rs=require(_0x75b7('0x4'));var fs=require('fs');var Redis=require(_0x75b7('0x5'));var db=require('../../mysqldb')['db'];var utils=require(_0x75b7('0x6'));var logger=require('../../config/logger')(_0x75b7('0x7'));var config=require(_0x75b7('0x8'));var jayson=require(_0x75b7('0x9'));var client=jayson[_0x75b7('0xa')][_0x75b7('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x5733ea,_0x432a6b,_0x17f1f3){return new BPromise(function(_0x26d5b9,_0x28f1e8){return client[_0x75b7('0xc')](_0x5733ea,_0x17f1f3)['then'](function(_0x1c0fae){logger['info']('VoiceTransferReport,\x20%s,\x20%s',_0x432a6b,_0x75b7('0xd'));logger['debug'](_0x75b7('0xe'),_0x432a6b,'request\x20sent',JSON[_0x75b7('0xf')](_0x1c0fae));if(_0x1c0fae['error']){if(_0x1c0fae[_0x75b7('0x10')][_0x75b7('0x11')]===0x1f4){logger[_0x75b7('0x10')](_0x75b7('0x12'),_0x432a6b,_0x1c0fae[_0x75b7('0x10')][_0x75b7('0x13')]);return _0x28f1e8(_0x1c0fae['error'][_0x75b7('0x13')]);}logger[_0x75b7('0x10')]('VoiceTransferReport,\x20%s,\x20%s',_0x432a6b,_0x1c0fae[_0x75b7('0x10')][_0x75b7('0x13')]);return _0x26d5b9(_0x1c0fae[_0x75b7('0x10')][_0x75b7('0x13')]);}else{logger[_0x75b7('0x14')](_0x75b7('0x12'),_0x432a6b,'request\x20sent');_0x26d5b9(_0x1c0fae[_0x75b7('0x15')]['message']);}})[_0x75b7('0x16')](function(_0x34ef57){logger[_0x75b7('0x10')](_0x75b7('0x12'),_0x432a6b,_0x34ef57);_0x28f1e8(_0x34ef57);});});}exports[_0x75b7('0x17')]=function(_0xa2db11){var _0x38e984=this;return new Promise(function(_0x1bbbba,_0x57ab87){return db[_0x75b7('0x18')]['create'](_0xa2db11[_0x75b7('0x19')],{'raw':_0xa2db11[_0x75b7('0x1a')]?_0xa2db11[_0x75b7('0x1a')][_0x75b7('0x1b')]===undefined?!![]:![]:!![]})['then'](function(_0x4ef23d){logger['info']('CreateVoiceTransferReport',_0xa2db11);logger['debug'](_0x75b7('0x17'),_0xa2db11,JSON[_0x75b7('0xf')](_0x4ef23d));_0x1bbbba(_0x4ef23d);})[_0x75b7('0x16')](function(_0x406cb8){logger['error'](_0x75b7('0x17'),_0x406cb8[_0x75b7('0x13')],_0xa2db11);_0x57ab87(_0x38e984[_0x75b7('0x10')](0x1f4,_0x406cb8[_0x75b7('0x13')]));});});};
\ No newline at end of file
+var _0xcc54=['VoiceTransferReport,\x20%s,\x20%s','request\x20sent','debug','VoiceTransferReport,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','CreateVoiceTransferReport','VoiceTransferReport','create','body','options','raw','lodash','util','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','../../config/environment','jayson/promise','client','http','request','then','info'];(function(_0x19950b,_0x53d0d7){var _0x3c6b41=function(_0x3924ad){while(--_0x3924ad){_0x19950b['push'](_0x19950b['shift']());}};_0x3c6b41(++_0x53d0d7);}(_0xcc54,0x8c));var _0x4cc5=function(_0x14db53,_0x3374b7){_0x14db53=_0x14db53-0x0;var _0x451312=_0xcc54[_0x14db53];return _0x451312;};'use strict';var _=require(_0x4cc5('0x0'));var util=require(_0x4cc5('0x1'));var moment=require('moment');var BPromise=require(_0x4cc5('0x2'));var rs=require(_0x4cc5('0x3'));var fs=require('fs');var Redis=require(_0x4cc5('0x4'));var db=require(_0x4cc5('0x5'))['db'];var utils=require(_0x4cc5('0x6'));var logger=require(_0x4cc5('0x7'))('rpc');var config=require(_0x4cc5('0x8'));var jayson=require(_0x4cc5('0x9'));var client=jayson[_0x4cc5('0xa')][_0x4cc5('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x7ecf3f,_0x446ed5,_0x91e5fe){return new BPromise(function(_0x3ff83d,_0x2ac3cd){return client[_0x4cc5('0xc')](_0x7ecf3f,_0x91e5fe)[_0x4cc5('0xd')](function(_0x2c96c0){logger[_0x4cc5('0xe')](_0x4cc5('0xf'),_0x446ed5,_0x4cc5('0x10'));logger[_0x4cc5('0x11')](_0x4cc5('0x12'),_0x446ed5,_0x4cc5('0x10'),JSON[_0x4cc5('0x13')](_0x2c96c0));if(_0x2c96c0['error']){if(_0x2c96c0[_0x4cc5('0x14')][_0x4cc5('0x15')]===0x1f4){logger['error'](_0x4cc5('0xf'),_0x446ed5,_0x2c96c0[_0x4cc5('0x14')][_0x4cc5('0x16')]);return _0x2ac3cd(_0x2c96c0['error'][_0x4cc5('0x16')]);}logger[_0x4cc5('0x14')](_0x4cc5('0xf'),_0x446ed5,_0x2c96c0[_0x4cc5('0x14')][_0x4cc5('0x16')]);return _0x3ff83d(_0x2c96c0[_0x4cc5('0x14')][_0x4cc5('0x16')]);}else{logger['info'](_0x4cc5('0xf'),_0x446ed5,_0x4cc5('0x10'));_0x3ff83d(_0x2c96c0[_0x4cc5('0x17')][_0x4cc5('0x16')]);}})[_0x4cc5('0x18')](function(_0x1951c3){logger[_0x4cc5('0x14')]('VoiceTransferReport,\x20%s,\x20%s',_0x446ed5,_0x1951c3);_0x2ac3cd(_0x1951c3);});});}exports[_0x4cc5('0x19')]=function(_0x215731){var _0x5bedff=this;return new Promise(function(_0x2ff1c0,_0x1da953){return db[_0x4cc5('0x1a')][_0x4cc5('0x1b')](_0x215731[_0x4cc5('0x1c')],{'raw':_0x215731[_0x4cc5('0x1d')]?_0x215731['options'][_0x4cc5('0x1e')]===undefined?!![]:![]:!![]})['then'](function(_0x3dab05){logger[_0x4cc5('0xe')](_0x4cc5('0x19'),_0x215731);logger[_0x4cc5('0x11')]('CreateVoiceTransferReport',_0x215731,JSON['stringify'](_0x3dab05));_0x2ff1c0(_0x3dab05);})[_0x4cc5('0x18')](function(_0x57c695){logger[_0x4cc5('0x14')](_0x4cc5('0x19'),_0x57c695['message'],_0x215731);_0x1da953(_0x5bedff[_0x4cc5('0x14')](0x1f4,_0x57c695['message']));});});};
\ No newline at end of file
index 8b8ac3e..96ed7a7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9ecb=['/hold','hold','/unhold','calls','/transfer','transfer','exports','express','Router','../../components/auth/service','canUpdate','originate','post','/hangup','isAuthenticated','hangup','/answer','answer'];(function(_0x20a791,_0x49718f){var _0xe0f198=function(_0x26e103){while(--_0x26e103){_0x20a791['push'](_0x20a791['shift']());}};_0xe0f198(++_0x49718f);}(_0x9ecb,0x16f));var _0xb9ec=function(_0x25387a,_0xf535c){_0x25387a=_0x25387a-0x0;var _0x25ecaf=_0x9ecb[_0x25387a];return _0x25ecaf;};'use strict';var express=require(_0xb9ec('0x0'));var router=express[_0xb9ec('0x1')]();var auth=require(_0xb9ec('0x2'));var controller=require('./webbar.controller');router['post']('/originate',auth['isAuthenticated'](),auth[_0xb9ec('0x3')](),controller[_0xb9ec('0x4')]);router[_0xb9ec('0x5')](_0xb9ec('0x6'),auth[_0xb9ec('0x7')](),auth[_0xb9ec('0x3')](),controller[_0xb9ec('0x8')]);router[_0xb9ec('0x5')](_0xb9ec('0x9'),auth['isAuthenticated'](),auth[_0xb9ec('0x3')](),controller[_0xb9ec('0xa')]);router['post'](_0xb9ec('0xb'),auth['isAuthenticated'](),auth[_0xb9ec('0x3')](),controller[_0xb9ec('0xc')]);router[_0xb9ec('0x5')](_0xb9ec('0xd'),auth[_0xb9ec('0x7')](),auth[_0xb9ec('0x3')](),controller['unhold']);router[_0xb9ec('0x5')]('/calls',auth['isAuthenticated'](),auth[_0xb9ec('0x3')](),controller[_0xb9ec('0xe')]);router['post'](_0xb9ec('0xf'),auth['isAuthenticated'](),auth[_0xb9ec('0x3')](),controller[_0xb9ec('0x10')]);module[_0xb9ec('0x11')]=router;
\ No newline at end of file
+var _0xb626=['post','/originate','isAuthenticated','canUpdate','originate','hangup','answer','hold','/unhold','/transfer','transfer','express','../../components/auth/service'];(function(_0x2dafbe,_0x5d04de){var _0x58a45a=function(_0x50ac96){while(--_0x50ac96){_0x2dafbe['push'](_0x2dafbe['shift']());}};_0x58a45a(++_0x5d04de);}(_0xb626,0xa7));var _0x6b62=function(_0x543824,_0x5f4897){_0x543824=_0x543824-0x0;var _0x2d1863=_0xb626[_0x543824];return _0x2d1863;};'use strict';var express=require(_0x6b62('0x0'));var router=express['Router']();var auth=require(_0x6b62('0x1'));var controller=require('./webbar.controller');router[_0x6b62('0x2')](_0x6b62('0x3'),auth[_0x6b62('0x4')](),auth[_0x6b62('0x5')](),controller[_0x6b62('0x6')]);router['post']('/hangup',auth[_0x6b62('0x4')](),auth['canUpdate'](),controller[_0x6b62('0x7')]);router[_0x6b62('0x2')]('/answer',auth[_0x6b62('0x4')](),auth['canUpdate'](),controller[_0x6b62('0x8')]);router['post']('/hold',auth[_0x6b62('0x4')](),auth[_0x6b62('0x5')](),controller[_0x6b62('0x9')]);router[_0x6b62('0x2')](_0x6b62('0xa'),auth[_0x6b62('0x4')](),auth[_0x6b62('0x5')](),controller['unhold']);router[_0x6b62('0x2')]('/calls',auth[_0x6b62('0x4')](),auth[_0x6b62('0x5')](),controller['calls']);router['post'](_0x6b62('0xb'),auth[_0x6b62('0x4')](),auth[_0x6b62('0x5')](),controller[_0x6b62('0xc')]);module['exports']=router;
\ No newline at end of file
index aab9ead..02ca348 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6953=['calls','calls\x20fired:','VoiceChannels','conference','conference\x20fired:','webbar:conference','transfer','transferNumber','transfer\x20executed!','path','lodash','bluebird','client','http','../../config/logger','ioredis','defaults','redis','localhost','socket.io-emitter','number','string','userId\x20is\x20required','sessionId\x20is\x20required','transferNumber\x20is\x20required','info','stringify','log','handleError:','error','stack','name','status','send','NotFound','request','message','catch','findOne','then','all','filter','rows','UserId','sessionId','length','\x20not\x20found!','originate','originate\x20fired:','validate','json','body','userId','entityFound:','user:%s','webbar:originate','hangup','hangup\x20fired:','format','hangup\x20executed!','answer','answer\x20fired:','webbar:answer','answer\x20executed!','hold\x20fired:','webbar:hold','webbar:unhold','unhold\x20executed!'];(function(_0x18a06e,_0x14bc20){var _0x50f782=function(_0x199a34){while(--_0x199a34){_0x18a06e['push'](_0x18a06e['shift']());}};_0x50f782(++_0x14bc20);}(_0x6953,0x91));var _0x3695=function(_0x3299ca,_0x297ce0){_0x3299ca=_0x3299ca-0x0;var _0xf069db=_0x6953[_0x3299ca];return _0xf069db;};'use strict';var path=require(_0x3695('0x0'));var fs=require('fs');var _=require(_0x3695('0x1'));var db=require('../../mysqldb')['db'];var config=require('../../config/environment');var util=require('util');var BPromise=require(_0x3695('0x2'));var jayson=require('jayson/promise');var amiClient=jayson[_0x3695('0x3')][_0x3695('0x4')]({'port':0x232a});var logger=require(_0x3695('0x5'))('webbarapi');var Redis=require(_0x3695('0x6'));config['redis']=_[_0x3695('0x7')](config[_0x3695('0x8')],{'host':_0x3695('0x9'),'port':0x18eb});var io=require(_0x3695('0xa'))(new Redis(config[_0x3695('0x8')]));var Schema=require('validate');var originateValidation=new Schema({'userId':{'type':_0x3695('0xb'),'required':[!![],'userId\x20is\x20required']},'callNumber':{'type':_0x3695('0xc'),'required':[!![],'callNumber\x20is\x20required']},'callerId':{'type':'string'},'callbackUrl':{'type':_0x3695('0xc')}});var hangupValidation=new Schema({'userId':{'type':'number','required':[!![],_0x3695('0xd')]},'sessionId':{'type':_0x3695('0xc'),'required':![]}});var answerValidation=new Schema({'userId':{'type':_0x3695('0xb'),'required':[!![],_0x3695('0xd')]},'sessionId':{'type':_0x3695('0xc'),'required':![]}});var transferValidation=new Schema({'userId':{'type':_0x3695('0xb'),'required':[!![],'userId\x20is\x20required']},'sessionId':{'type':_0x3695('0xc'),'required':[!![],_0x3695('0xe')]},'transferNumber':{'type':_0x3695('0xc'),'required':[!![],_0x3695('0xf')]}});var holdValidation=new Schema({'userId':{'type':_0x3695('0xb'),'required':[!![],_0x3695('0xd')]},'sessionId':{'type':_0x3695('0xc'),'required':![]}});var unholdValidation=new Schema({'userId':{'type':_0x3695('0xb'),'required':[!![],_0x3695('0xd')]},'sessionId':{'type':_0x3695('0xc'),'required':![]}});var callsValidation=new Schema({'userId':{'type':_0x3695('0xb'),'required':[!![],'userId\x20is\x20required']}});var conferenceValidation=new Schema({'userId':{'type':_0x3695('0xb'),'required':[!![],_0x3695('0xd')]}});function emit(_0x2cdd3,_0x3cb320,_0x367191){logger[_0x3695('0x10')](_0x2cdd3,_0x3cb320,JSON[_0x3695('0x11')](_0x367191));io['to'](_0x2cdd3)['emit'](_0x3cb320,_0x367191);}function handleError(_0x717ee4){return function(_0x5edf8d){console[_0x3695('0x12')](_0x3695('0x13'),_0x5edf8d,_0x5edf8d instanceof RangeError);logger[_0x3695('0x14')](_0x5edf8d[_0x3695('0x15')]);if(_0x5edf8d instanceof RangeError){if(_0x5edf8d[_0x3695('0x16')]){delete _0x5edf8d['name'];}_0x717ee4[_0x3695('0x17')](0x194)[_0x3695('0x18')](_0x5edf8d);}else{if(_0x5edf8d[_0x3695('0x16')]){delete _0x5edf8d[_0x3695('0x16')];}_0x717ee4[_0x3695('0x17')](0x1f4)[_0x3695('0x18')](_0x5edf8d);}};}function checkError(){return function(_0x34b0fc){if(!_0x34b0fc){throw new RangeError(_0x3695('0x19'));}return _0x34b0fc;};}function respondWithRpcPromise(_0x1f267a,_0xbbffe2){return new BPromise(function(_0x1b97d2,_0xf2c747){var _0x459f33=amiClient;return _0x459f33[_0x3695('0x1a')](_0x1f267a,_0xbbffe2)['then'](function(_0x42648c){if(_0x42648c[_0x3695('0x14')]){if(_0x42648c['error']['code']===0x1f4){return _0xf2c747(_0x42648c[_0x3695('0x14')][_0x3695('0x1b')]);}return _0x1b97d2(_0x42648c[_0x3695('0x14')][_0x3695('0x1b')]);}else{_0x1b97d2(_0x42648c['result']);}})[_0x3695('0x1c')](function(_0x48c2fd){_0xf2c747(_0x48c2fd);});});}function getAgent(_0xeddb06){return db['User'][_0x3695('0x1d')]({'where':{'id':_0xeddb06,'role':'agent'}})[_0x3695('0x1e')](checkError());}function getAgentCheckSession(_0x19f834,_0x462ff0){return new BPromise(function(_0x18a474,_0x3d4442){var _0x31fdf3=respondWithRpcPromise('VoiceChannels');var _0x2be6ee=getAgent(_0x19f834);Promise[_0x3695('0x1f')]([_0x31fdf3,_0x2be6ee])['then'](function(_0x392107){var _0x4d0742=_0x392107[0x0];var _0x39c39f=_0x392107[0x1];var _0x399bc6=_[_0x3695('0x20')](_0x4d0742[_0x3695('0x21')],function(_0x30a5ba){return _0x30a5ba[_0x3695('0x22')]==_0x39c39f['id']&&_0x30a5ba[_0x3695('0x23')]==_0x462ff0;});if(_0x399bc6[_0x3695('0x24')]==0x1){_0x18a474(_0x39c39f);}else{_0x3d4442(new RangeError('sessionId\x20'+_0x462ff0+_0x3695('0x25')));}});});}exports[_0x3695('0x26')]=function(_0xe6455e,_0x4c604f){logger['info'](_0x3695('0x27'),_0xe6455e['body']);var _0x12dbce=originateValidation[_0x3695('0x28')](_0xe6455e['body']);if(_0x12dbce[_0x3695('0x24')]>0x0){return _0x4c604f['status'](0x190)[_0x3695('0x29')](_0x12dbce);}var _0x197396=_0xe6455e[_0x3695('0x2a')][_0x3695('0x2b')];var _0x30eab2=_0xe6455e[_0x3695('0x2a')]['callNumber'];var _0x3ab2a0=_0xe6455e[_0x3695('0x2a')]['callerId'];var _0x2e657e=_0xe6455e[_0x3695('0x2a')]['callbackUrl'];return getAgent(_0x197396)['then'](function(_0x4c359d){logger['info'](_0x3695('0x2c'),_0x4c359d[_0x3695('0x16')]);emit(util['format'](_0x3695('0x2d'),_0x4c359d[_0x3695('0x16')]),_0x3695('0x2e'),{'callNumber':_0x30eab2,'callerId':_0x3ab2a0,'callbackUrl':_0x2e657e});return _0x4c604f[_0x3695('0x17')](0xc8)['json']({'error':![],'message':'originate\x20executed!'});})[_0x3695('0x1c')](handleError(_0x4c604f));};exports[_0x3695('0x2f')]=function(_0x59c271,_0x12ebe9){logger[_0x3695('0x10')](_0x3695('0x30'),_0x59c271[_0x3695('0x2a')]);var _0xaee5e8=hangupValidation[_0x3695('0x28')](_0x59c271[_0x3695('0x2a')]);if(_0xaee5e8[_0x3695('0x24')]>0x0){return _0x12ebe9[_0x3695('0x17')](0x190)[_0x3695('0x29')](_0xaee5e8);}var _0x460b49=_0x59c271[_0x3695('0x2a')][_0x3695('0x2b')];var _0x1d0fa0=_0x59c271[_0x3695('0x2a')][_0x3695('0x23')];return getAgent(_0x460b49)['then'](function(_0x775d39){logger[_0x3695('0x10')](_0x3695('0x2c'),_0x775d39[_0x3695('0x16')]);emit(util[_0x3695('0x31')](_0x3695('0x2d'),_0x775d39[_0x3695('0x16')]),'webbar:hangup',{'sessionId':_0x1d0fa0});return _0x12ebe9[_0x3695('0x17')](0xc8)[_0x3695('0x29')]({'error':![],'message':_0x3695('0x32')});})['catch'](handleError(_0x12ebe9));};exports[_0x3695('0x33')]=function(_0x454e86,_0x3ffc79){logger[_0x3695('0x10')](_0x3695('0x34'),_0x454e86[_0x3695('0x2a')]);var _0x4261d1=answerValidation['validate'](_0x454e86[_0x3695('0x2a')]);if(_0x4261d1['length']>0x0){return _0x3ffc79['status'](0x190)[_0x3695('0x29')](_0x4261d1);}var _0x51f403=_0x454e86[_0x3695('0x2a')][_0x3695('0x2b')];var _0x65f4b3=_0x454e86[_0x3695('0x2a')]['sessionId'];return getAgent(_0x51f403)[_0x3695('0x1e')](function(_0x34cbd8){logger[_0x3695('0x10')]('entityFound:',_0x34cbd8[_0x3695('0x16')]);emit(util[_0x3695('0x31')](_0x3695('0x2d'),_0x34cbd8[_0x3695('0x16')]),_0x3695('0x35'),{'sessionId':_0x65f4b3});return _0x3ffc79[_0x3695('0x17')](0xc8)[_0x3695('0x29')]({'error':![],'message':_0x3695('0x36')});})[_0x3695('0x1c')](handleError(_0x3ffc79));};exports['hold']=function(_0x57bf10,_0x1a021e){logger[_0x3695('0x10')](_0x3695('0x37'),_0x57bf10['body']);var _0x1c8fc3=holdValidation[_0x3695('0x28')](_0x57bf10[_0x3695('0x2a')]);if(_0x1c8fc3['length']>0x0){return _0x1a021e[_0x3695('0x17')](0x190)[_0x3695('0x29')](_0x1c8fc3);}var _0x3d6a61=_0x57bf10[_0x3695('0x2a')][_0x3695('0x2b')];var _0x567d5e=_0x57bf10[_0x3695('0x2a')][_0x3695('0x23')];return getAgent(_0x3d6a61)[_0x3695('0x1e')](function(_0x361a9f){logger['info'](_0x3695('0x2c'),_0x361a9f['name']);emit(util['format'](_0x3695('0x2d'),_0x361a9f[_0x3695('0x16')]),_0x3695('0x38'),{'sessionId':_0x567d5e});return _0x1a021e[_0x3695('0x17')](0xc8)[_0x3695('0x29')]({'error':![],'message':'hold\x20executed!'});})['catch'](handleError(_0x1a021e));};exports['unhold']=function(_0x5173b8,_0x5eeaca){logger['info']('unhold\x20fired:',_0x5173b8['body']);var _0x3b1c1c=unholdValidation[_0x3695('0x28')](_0x5173b8['body']);if(_0x3b1c1c[_0x3695('0x24')]>0x0){return _0x5eeaca[_0x3695('0x17')](0x190)['json'](_0x3b1c1c);}var _0x4a0a78=_0x5173b8[_0x3695('0x2a')][_0x3695('0x2b')];var _0x1a61d6=_0x5173b8['body'][_0x3695('0x23')];return getAgent(_0x4a0a78)[_0x3695('0x1e')](function(_0x1422f0){logger[_0x3695('0x10')](_0x3695('0x2c'),_0x1422f0[_0x3695('0x16')]);emit(util[_0x3695('0x31')](_0x3695('0x2d'),_0x1422f0[_0x3695('0x16')]),_0x3695('0x39'),{'sessionId':_0x1a61d6});return _0x5eeaca[_0x3695('0x17')](0xc8)[_0x3695('0x29')]({'error':![],'message':_0x3695('0x3a')});})[_0x3695('0x1c')](handleError(_0x5eeaca));};exports[_0x3695('0x3b')]=function(_0x63771a,_0x441997){logger[_0x3695('0x10')](_0x3695('0x3c'),_0x441997[_0x3695('0x2a')]);var _0x42a960=callsValidation[_0x3695('0x28')](_0x63771a[_0x3695('0x2a')]);if(_0x42a960['length']>0x0){return _0x441997['status'](0x190)[_0x3695('0x29')](_0x42a960);}var _0xea6f22=_0x63771a['body'][_0x3695('0x2b')];var _0x43f6f5=respondWithRpcPromise(_0x3695('0x3d'));var _0x357564=getAgent(_0xea6f22);return Promise[_0x3695('0x1f')]([_0x43f6f5,_0x357564])[_0x3695('0x1e')](function(_0x38d20c){var _0x9a8d31=_0x38d20c[0x0];var _0x520fd3=_0x38d20c[0x1];var _0x29c8a3=_['filter'](_0x9a8d31[_0x3695('0x21')],function(_0x3098f7){return _0x3098f7[_0x3695('0x22')]==_0x520fd3['id'];});return _0x441997[_0x3695('0x17')](0xc8)[_0x3695('0x29')]({'count':_0x29c8a3['length'],'rows':_0x29c8a3});})[_0x3695('0x1c')](handleError(_0x441997));};exports[_0x3695('0x3e')]=function(_0xf18f60,_0x55f673){logger[_0x3695('0x10')](_0x3695('0x3f'),_0xf18f60['body']);var _0x47cd30=conferenceValidation[_0x3695('0x28')](_0xf18f60['body']);if(_0x47cd30['length']>0x0){return _0x55f673[_0x3695('0x17')](0x190)[_0x3695('0x29')](_0x47cd30);}var _0xade517=_0xf18f60[_0x3695('0x2a')][_0x3695('0x2b')];return getAgent(_0xade517)['then'](function(_0x3250f1){logger[_0x3695('0x10')](_0x3695('0x2c'),_0x3250f1['name']);emit(util[_0x3695('0x31')](_0x3695('0x2d'),_0x3250f1[_0x3695('0x16')]),_0x3695('0x40'));return _0x55f673[_0x3695('0x17')](0xc8)[_0x3695('0x29')]({'error':![],'message':'conference\x20executed!'});})[_0x3695('0x1c')](handleError(_0x55f673));};exports[_0x3695('0x41')]=function(_0x41e8de,_0x2551fd){logger[_0x3695('0x10')]('transfer\x20fired:',_0x41e8de[_0x3695('0x2a')]);var _0x19b3e3=transferValidation[_0x3695('0x28')](_0x41e8de[_0x3695('0x2a')]);if(_0x19b3e3[_0x3695('0x24')]>0x0){return _0x2551fd[_0x3695('0x17')](0x190)['json'](_0x19b3e3);}var _0x1effea=_0x41e8de[_0x3695('0x2a')]['userId'];var _0x4e7d7a=_0x41e8de[_0x3695('0x2a')][_0x3695('0x23')];var _0x1b500b=_0x41e8de['body'][_0x3695('0x42')];return getAgent(_0x1effea)[_0x3695('0x1e')](function(_0x1bd95d){logger[_0x3695('0x10')](_0x3695('0x2c'),_0x1bd95d['name']);emit(util[_0x3695('0x31')]('user:%s',_0x1bd95d['name']),'webbar:transfer',{'sessionId':_0x4e7d7a,'transferNumber':_0x1b500b});return _0x2551fd[_0x3695('0x17')](0xc8)[_0x3695('0x29')]({'error':![],'message':_0x3695('0x43')});})[_0x3695('0x1c')](handleError(_0x2551fd));};
\ No newline at end of file
+var _0x07c3=['error','name','send','status','NotFound','request','then','code','message','catch','User','findOne','agent','VoiceChannels','all','rows','UserId','sessionId','length','sessionId\x20','\x20not\x20found!','originate','originate\x20fired:','body','json','callbackUrl','entityFound:','format','webbar:originate','originate\x20executed!','hangup','hangup\x20fired:','userId','user:%s','webbar:hangup','hangup\x20executed!','answer','webbar:answer','answer\x20executed!','hold','hold\x20fired:','webbar:hold','hold\x20executed!','unhold\x20fired:','unhold\x20executed!','calls\x20fired:','filter','conference\x20fired:','webbar:conference','transfer\x20fired:','webbar:transfer','transfer\x20executed!','path','lodash','../../mysqldb','../../config/environment','util','bluebird','jayson/promise','client','../../config/logger','webbarapi','ioredis','redis','defaults','localhost','socket.io-emitter','validate','number','userId\x20is\x20required','string','callNumber\x20is\x20required','sessionId\x20is\x20required','transferNumber\x20is\x20required','info','stringify','emit','log','handleError:'];(function(_0x36792a,_0xdf39cb){var _0x35a602=function(_0x2f05de){while(--_0x2f05de){_0x36792a['push'](_0x36792a['shift']());}};_0x35a602(++_0xdf39cb);}(_0x07c3,0x1bf));var _0x307c=function(_0x16bf05,_0x4f70da){_0x16bf05=_0x16bf05-0x0;var _0xbcf546=_0x07c3[_0x16bf05];return _0xbcf546;};'use strict';var path=require(_0x307c('0x0'));var fs=require('fs');var _=require(_0x307c('0x1'));var db=require(_0x307c('0x2'))['db'];var config=require(_0x307c('0x3'));var util=require(_0x307c('0x4'));var BPromise=require(_0x307c('0x5'));var jayson=require(_0x307c('0x6'));var amiClient=jayson[_0x307c('0x7')]['http']({'port':0x232a});var logger=require(_0x307c('0x8'))(_0x307c('0x9'));var Redis=require(_0x307c('0xa'));config[_0x307c('0xb')]=_[_0x307c('0xc')](config[_0x307c('0xb')],{'host':_0x307c('0xd'),'port':0x18eb});var io=require(_0x307c('0xe'))(new Redis(config[_0x307c('0xb')]));var Schema=require(_0x307c('0xf'));var originateValidation=new Schema({'userId':{'type':_0x307c('0x10'),'required':[!![],_0x307c('0x11')]},'callNumber':{'type':_0x307c('0x12'),'required':[!![],_0x307c('0x13')]},'callerId':{'type':_0x307c('0x12')},'callbackUrl':{'type':'string'}});var hangupValidation=new Schema({'userId':{'type':_0x307c('0x10'),'required':[!![],_0x307c('0x11')]},'sessionId':{'type':_0x307c('0x12'),'required':![]}});var answerValidation=new Schema({'userId':{'type':_0x307c('0x10'),'required':[!![],'userId\x20is\x20required']},'sessionId':{'type':'string','required':![]}});var transferValidation=new Schema({'userId':{'type':_0x307c('0x10'),'required':[!![],'userId\x20is\x20required']},'sessionId':{'type':_0x307c('0x12'),'required':[!![],_0x307c('0x14')]},'transferNumber':{'type':'string','required':[!![],_0x307c('0x15')]}});var holdValidation=new Schema({'userId':{'type':_0x307c('0x10'),'required':[!![],_0x307c('0x11')]},'sessionId':{'type':_0x307c('0x12'),'required':![]}});var unholdValidation=new Schema({'userId':{'type':_0x307c('0x10'),'required':[!![],_0x307c('0x11')]},'sessionId':{'type':_0x307c('0x12'),'required':![]}});var callsValidation=new Schema({'userId':{'type':_0x307c('0x10'),'required':[!![],_0x307c('0x11')]}});var conferenceValidation=new Schema({'userId':{'type':_0x307c('0x10'),'required':[!![],_0x307c('0x11')]}});function emit(_0x424a74,_0x53e2f4,_0x2a3edc){logger[_0x307c('0x16')](_0x424a74,_0x53e2f4,JSON[_0x307c('0x17')](_0x2a3edc));io['to'](_0x424a74)[_0x307c('0x18')](_0x53e2f4,_0x2a3edc);}function handleError(_0x301e1a){return function(_0x2e21a6){console[_0x307c('0x19')](_0x307c('0x1a'),_0x2e21a6,_0x2e21a6 instanceof RangeError);logger[_0x307c('0x1b')](_0x2e21a6['stack']);if(_0x2e21a6 instanceof RangeError){if(_0x2e21a6['name']){delete _0x2e21a6[_0x307c('0x1c')];}_0x301e1a['status'](0x194)[_0x307c('0x1d')](_0x2e21a6);}else{if(_0x2e21a6['name']){delete _0x2e21a6['name'];}_0x301e1a[_0x307c('0x1e')](0x1f4)[_0x307c('0x1d')](_0x2e21a6);}};}function checkError(){return function(_0x5eb73d){if(!_0x5eb73d){throw new RangeError(_0x307c('0x1f'));}return _0x5eb73d;};}function respondWithRpcPromise(_0xa79b24,_0x5b640f){return new BPromise(function(_0x1cdc48,_0x45fe2){var _0x574622=amiClient;return _0x574622[_0x307c('0x20')](_0xa79b24,_0x5b640f)[_0x307c('0x21')](function(_0x9a66a0){if(_0x9a66a0[_0x307c('0x1b')]){if(_0x9a66a0[_0x307c('0x1b')][_0x307c('0x22')]===0x1f4){return _0x45fe2(_0x9a66a0[_0x307c('0x1b')][_0x307c('0x23')]);}return _0x1cdc48(_0x9a66a0[_0x307c('0x1b')][_0x307c('0x23')]);}else{_0x1cdc48(_0x9a66a0['result']);}})[_0x307c('0x24')](function(_0x58c383){_0x45fe2(_0x58c383);});});}function getAgent(_0x598d43){return db[_0x307c('0x25')][_0x307c('0x26')]({'where':{'id':_0x598d43,'role':_0x307c('0x27')}})[_0x307c('0x21')](checkError());}function getAgentCheckSession(_0x25dede,_0x1591d1){return new BPromise(function(_0x4fd125,_0x1fbdda){var _0x181fa2=respondWithRpcPromise(_0x307c('0x28'));var _0x54da33=getAgent(_0x25dede);Promise[_0x307c('0x29')]([_0x181fa2,_0x54da33])[_0x307c('0x21')](function(_0xcb6ae6){var _0x12d9a9=_0xcb6ae6[0x0];var _0x3a58ec=_0xcb6ae6[0x1];var _0x1e5da0=_['filter'](_0x12d9a9[_0x307c('0x2a')],function(_0x1e448e){return _0x1e448e[_0x307c('0x2b')]==_0x3a58ec['id']&&_0x1e448e[_0x307c('0x2c')]==_0x1591d1;});if(_0x1e5da0[_0x307c('0x2d')]==0x1){_0x4fd125(_0x3a58ec);}else{_0x1fbdda(new RangeError(_0x307c('0x2e')+_0x1591d1+_0x307c('0x2f')));}});});}exports[_0x307c('0x30')]=function(_0x12b5f4,_0x55f4c0){logger[_0x307c('0x16')](_0x307c('0x31'),_0x12b5f4[_0x307c('0x32')]);var _0x1a706a=originateValidation[_0x307c('0xf')](_0x12b5f4[_0x307c('0x32')]);if(_0x1a706a[_0x307c('0x2d')]>0x0){return _0x55f4c0[_0x307c('0x1e')](0x190)[_0x307c('0x33')](_0x1a706a);}var _0x4338e2=_0x12b5f4[_0x307c('0x32')]['userId'];var _0x107518=_0x12b5f4[_0x307c('0x32')]['callNumber'];var _0x383e25=_0x12b5f4[_0x307c('0x32')]['callerId'];var _0x4fa969=_0x12b5f4['body'][_0x307c('0x34')];return getAgent(_0x4338e2)[_0x307c('0x21')](function(_0x878c8c){logger[_0x307c('0x16')](_0x307c('0x35'),_0x878c8c[_0x307c('0x1c')]);emit(util[_0x307c('0x36')]('user:%s',_0x878c8c[_0x307c('0x1c')]),_0x307c('0x37'),{'callNumber':_0x107518,'callerId':_0x383e25,'callbackUrl':_0x4fa969});return _0x55f4c0[_0x307c('0x1e')](0xc8)[_0x307c('0x33')]({'error':![],'message':_0x307c('0x38')});})[_0x307c('0x24')](handleError(_0x55f4c0));};exports[_0x307c('0x39')]=function(_0x5da51b,_0x5f085a){logger['info'](_0x307c('0x3a'),_0x5da51b[_0x307c('0x32')]);var _0x4e2873=hangupValidation['validate'](_0x5da51b[_0x307c('0x32')]);if(_0x4e2873['length']>0x0){return _0x5f085a[_0x307c('0x1e')](0x190)[_0x307c('0x33')](_0x4e2873);}var _0x31e3fa=_0x5da51b[_0x307c('0x32')][_0x307c('0x3b')];var _0x70fc50=_0x5da51b[_0x307c('0x32')][_0x307c('0x2c')];return getAgent(_0x31e3fa)['then'](function(_0x2d7544){logger['info'](_0x307c('0x35'),_0x2d7544['name']);emit(util[_0x307c('0x36')](_0x307c('0x3c'),_0x2d7544[_0x307c('0x1c')]),_0x307c('0x3d'),{'sessionId':_0x70fc50});return _0x5f085a[_0x307c('0x1e')](0xc8)[_0x307c('0x33')]({'error':![],'message':_0x307c('0x3e')});})[_0x307c('0x24')](handleError(_0x5f085a));};exports[_0x307c('0x3f')]=function(_0x1f645e,_0xaa4479){logger[_0x307c('0x16')]('answer\x20fired:',_0x1f645e['body']);var _0x3c8758=answerValidation[_0x307c('0xf')](_0x1f645e[_0x307c('0x32')]);if(_0x3c8758[_0x307c('0x2d')]>0x0){return _0xaa4479[_0x307c('0x1e')](0x190)[_0x307c('0x33')](_0x3c8758);}var _0x4a7f36=_0x1f645e['body'][_0x307c('0x3b')];var _0x5d7d0d=_0x1f645e[_0x307c('0x32')][_0x307c('0x2c')];return getAgent(_0x4a7f36)[_0x307c('0x21')](function(_0x4de79e){logger[_0x307c('0x16')](_0x307c('0x35'),_0x4de79e[_0x307c('0x1c')]);emit(util[_0x307c('0x36')](_0x307c('0x3c'),_0x4de79e['name']),_0x307c('0x40'),{'sessionId':_0x5d7d0d});return _0xaa4479[_0x307c('0x1e')](0xc8)['json']({'error':![],'message':_0x307c('0x41')});})[_0x307c('0x24')](handleError(_0xaa4479));};exports[_0x307c('0x42')]=function(_0x195b90,_0x3a9013){logger[_0x307c('0x16')](_0x307c('0x43'),_0x195b90['body']);var _0x3dee68=holdValidation[_0x307c('0xf')](_0x195b90[_0x307c('0x32')]);if(_0x3dee68['length']>0x0){return _0x3a9013[_0x307c('0x1e')](0x190)[_0x307c('0x33')](_0x3dee68);}var _0x2ced73=_0x195b90[_0x307c('0x32')]['userId'];var _0xa1faa0=_0x195b90['body']['sessionId'];return getAgent(_0x2ced73)['then'](function(_0x26081b){logger[_0x307c('0x16')](_0x307c('0x35'),_0x26081b[_0x307c('0x1c')]);emit(util['format'](_0x307c('0x3c'),_0x26081b[_0x307c('0x1c')]),_0x307c('0x44'),{'sessionId':_0xa1faa0});return _0x3a9013[_0x307c('0x1e')](0xc8)[_0x307c('0x33')]({'error':![],'message':_0x307c('0x45')});})[_0x307c('0x24')](handleError(_0x3a9013));};exports['unhold']=function(_0x50876a,_0x1f41c9){logger[_0x307c('0x16')](_0x307c('0x46'),_0x50876a[_0x307c('0x32')]);var _0x4006da=unholdValidation[_0x307c('0xf')](_0x50876a[_0x307c('0x32')]);if(_0x4006da['length']>0x0){return _0x1f41c9['status'](0x190)[_0x307c('0x33')](_0x4006da);}var _0x6d04b8=_0x50876a[_0x307c('0x32')][_0x307c('0x3b')];var _0x46f257=_0x50876a['body']['sessionId'];return getAgent(_0x6d04b8)['then'](function(_0x41cae0){logger[_0x307c('0x16')]('entityFound:',_0x41cae0[_0x307c('0x1c')]);emit(util[_0x307c('0x36')](_0x307c('0x3c'),_0x41cae0['name']),'webbar:unhold',{'sessionId':_0x46f257});return _0x1f41c9['status'](0xc8)[_0x307c('0x33')]({'error':![],'message':_0x307c('0x47')});})['catch'](handleError(_0x1f41c9));};exports['calls']=function(_0x46b41e,_0x38d1ff){logger['info'](_0x307c('0x48'),_0x38d1ff[_0x307c('0x32')]);var _0xd27876=callsValidation[_0x307c('0xf')](_0x46b41e['body']);if(_0xd27876[_0x307c('0x2d')]>0x0){return _0x38d1ff[_0x307c('0x1e')](0x190)[_0x307c('0x33')](_0xd27876);}var _0x3c2b3d=_0x46b41e[_0x307c('0x32')][_0x307c('0x3b')];var _0x34d223=respondWithRpcPromise(_0x307c('0x28'));var _0x560d36=getAgent(_0x3c2b3d);return Promise[_0x307c('0x29')]([_0x34d223,_0x560d36])[_0x307c('0x21')](function(_0x5d9fb4){var _0x55ecb7=_0x5d9fb4[0x0];var _0x10efed=_0x5d9fb4[0x1];var _0xe1ddea=_[_0x307c('0x49')](_0x55ecb7[_0x307c('0x2a')],function(_0x55c268){return _0x55c268['UserId']==_0x10efed['id'];});return _0x38d1ff[_0x307c('0x1e')](0xc8)[_0x307c('0x33')]({'count':_0xe1ddea['length'],'rows':_0xe1ddea});})['catch'](handleError(_0x38d1ff));};exports['conference']=function(_0x2bc93a,_0x3b68d2){logger[_0x307c('0x16')](_0x307c('0x4a'),_0x2bc93a[_0x307c('0x32')]);var _0xfe43a2=conferenceValidation['validate'](_0x2bc93a[_0x307c('0x32')]);if(_0xfe43a2[_0x307c('0x2d')]>0x0){return _0x3b68d2[_0x307c('0x1e')](0x190)[_0x307c('0x33')](_0xfe43a2);}var _0x54bfb3=_0x2bc93a[_0x307c('0x32')]['userId'];return getAgent(_0x54bfb3)[_0x307c('0x21')](function(_0x15d37b){logger['info'](_0x307c('0x35'),_0x15d37b['name']);emit(util[_0x307c('0x36')](_0x307c('0x3c'),_0x15d37b['name']),_0x307c('0x4b'));return _0x3b68d2[_0x307c('0x1e')](0xc8)[_0x307c('0x33')]({'error':![],'message':'conference\x20executed!'});})['catch'](handleError(_0x3b68d2));};exports['transfer']=function(_0x38cdfb,_0x32cc40){logger['info'](_0x307c('0x4c'),_0x38cdfb[_0x307c('0x32')]);var _0x580983=transferValidation['validate'](_0x38cdfb[_0x307c('0x32')]);if(_0x580983['length']>0x0){return _0x32cc40[_0x307c('0x1e')](0x190)['json'](_0x580983);}var _0x4307a9=_0x38cdfb['body'][_0x307c('0x3b')];var _0xa82555=_0x38cdfb['body'][_0x307c('0x2c')];var _0x12e471=_0x38cdfb['body']['transferNumber'];return getAgent(_0x4307a9)['then'](function(_0x27d0b2){logger[_0x307c('0x16')](_0x307c('0x35'),_0x27d0b2['name']);emit(util[_0x307c('0x36')](_0x307c('0x3c'),_0x27d0b2[_0x307c('0x1c')]),_0x307c('0x4d'),{'sessionId':_0xa82555,'transferNumber':_0x12e471});return _0x32cc40[_0x307c('0x1e')](0xc8)[_0x307c('0x33')]({'error':![],'message':_0x307c('0x4e')});})[_0x307c('0x24')](handleError(_0x32cc40));};
\ No newline at end of file
index 3978613..8b91b80 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe2fe=['removeAgents','exports','multer','connect-timeout','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','get','isAuthenticated','/describe','describe','/:id','/:id/dispositions','getAgents','/:id/applications','getApplications','post','addDisposition','/:id/canned_answers','addAnswer','/:id/users','addAgents','addApplications','/:id/notify','notify','send','put','destroy','delete','removeDispositions','removeAnswers'];(function(_0x1facfa,_0x1acf7d){var _0x9ec701=function(_0x115e37){while(--_0x115e37){_0x1facfa['push'](_0x1facfa['shift']());}};_0x9ec701(++_0x1acf7d);}(_0xe2fe,0x86));var _0xee2f=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0xe2fe[_0x3dd15e];return _0x231fd0;};'use strict';var multer=require(_0xee2f('0x0'));var util=require('util');var path=require('path');var timeout=require(_0xee2f('0x1'));var express=require('express');var router=express[_0xee2f('0x2')]();var fs_extra=require(_0xee2f('0x3'));var auth=require(_0xee2f('0x4'));var interaction=require(_0xee2f('0x5'));var config=require(_0xee2f('0x6'));var controller=require('./whatsappAccount.controller');router[_0xee2f('0x7')]('/',auth[_0xee2f('0x8')](),controller['index']);router[_0xee2f('0x7')](_0xee2f('0x9'),auth['isAuthenticated'](),controller[_0xee2f('0xa')]);router['get'](_0xee2f('0xb'),auth[_0xee2f('0x8')](),controller['show']);router[_0xee2f('0x7')](_0xee2f('0xc'),auth['isAuthenticated'](),controller['getDispositions']);router['get']('/:id/canned_answers',auth[_0xee2f('0x8')](),controller['getAnswers']);router['get']('/:id/users',auth[_0xee2f('0x8')](),controller[_0xee2f('0xd')]);router[_0xee2f('0x7')](_0xee2f('0xe'),auth[_0xee2f('0x8')](),controller[_0xee2f('0xf')]);router['post']('/',auth[_0xee2f('0x8')](),controller['create']);router[_0xee2f('0x10')](_0xee2f('0xc'),auth['isAuthenticated'](),controller[_0xee2f('0x11')]);router[_0xee2f('0x10')](_0xee2f('0x12'),auth[_0xee2f('0x8')](),controller[_0xee2f('0x13')]);router['post'](_0xee2f('0x14'),auth['isAuthenticated'](),controller[_0xee2f('0x15')]);router[_0xee2f('0x10')]('/:id/applications',auth['isAuthenticated'](),controller[_0xee2f('0x16')]);router['post'](_0xee2f('0x17'),controller[_0xee2f('0x18')]);router[_0xee2f('0x10')]('/:id/send',auth[_0xee2f('0x8')](),controller[_0xee2f('0x19')]);router[_0xee2f('0x1a')](_0xee2f('0xb'),auth[_0xee2f('0x8')](),controller['update']);router['delete'](_0xee2f('0xb'),auth[_0xee2f('0x8')](),controller[_0xee2f('0x1b')]);router[_0xee2f('0x1c')](_0xee2f('0xc'),auth[_0xee2f('0x8')](),controller[_0xee2f('0x1d')]);router['delete'](_0xee2f('0x12'),auth[_0xee2f('0x8')](),controller[_0xee2f('0x1e')]);router[_0xee2f('0x1c')](_0xee2f('0x14'),auth[_0xee2f('0x8')](),controller[_0xee2f('0x1f')]);module[_0xee2f('0x20')]=router;
\ No newline at end of file
+var _0x8952=['getAgents','/:id/applications','create','/:id/dispositions','addDisposition','post','/:id/canned_answers','addAnswer','/:id/users','addAgents','addApplications','/:id/notify','notify','send','put','update','delete','destroy','removeAgents','util','path','connect-timeout','express','Router','../../components/auth/service','../../components/interaction/service','../../config/environment','get','isAuthenticated','index','describe','/:id','getAnswers'];(function(_0x14e364,_0xa31983){var _0x9b3288=function(_0x24d6c5){while(--_0x24d6c5){_0x14e364['push'](_0x14e364['shift']());}};_0x9b3288(++_0xa31983);}(_0x8952,0x17e));var _0x2895=function(_0x46a63f,_0x2ba3cc){_0x46a63f=_0x46a63f-0x0;var _0x55069a=_0x8952[_0x46a63f];return _0x55069a;};'use strict';var multer=require('multer');var util=require(_0x2895('0x0'));var path=require(_0x2895('0x1'));var timeout=require(_0x2895('0x2'));var express=require(_0x2895('0x3'));var router=express[_0x2895('0x4')]();var fs_extra=require('fs-extra');var auth=require(_0x2895('0x5'));var interaction=require(_0x2895('0x6'));var config=require(_0x2895('0x7'));var controller=require('./whatsappAccount.controller');router[_0x2895('0x8')]('/',auth[_0x2895('0x9')](),controller[_0x2895('0xa')]);router['get']('/describe',auth[_0x2895('0x9')](),controller[_0x2895('0xb')]);router[_0x2895('0x8')](_0x2895('0xc'),auth[_0x2895('0x9')](),controller['show']);router[_0x2895('0x8')]('/:id/dispositions',auth[_0x2895('0x9')](),controller['getDispositions']);router['get']('/:id/canned_answers',auth[_0x2895('0x9')](),controller[_0x2895('0xd')]);router[_0x2895('0x8')]('/:id/users',auth[_0x2895('0x9')](),controller[_0x2895('0xe')]);router['get'](_0x2895('0xf'),auth[_0x2895('0x9')](),controller['getApplications']);router['post']('/',auth[_0x2895('0x9')](),controller[_0x2895('0x10')]);router['post'](_0x2895('0x11'),auth[_0x2895('0x9')](),controller[_0x2895('0x12')]);router[_0x2895('0x13')](_0x2895('0x14'),auth[_0x2895('0x9')](),controller[_0x2895('0x15')]);router[_0x2895('0x13')](_0x2895('0x16'),auth[_0x2895('0x9')](),controller[_0x2895('0x17')]);router[_0x2895('0x13')](_0x2895('0xf'),auth[_0x2895('0x9')](),controller[_0x2895('0x18')]);router[_0x2895('0x13')](_0x2895('0x19'),controller[_0x2895('0x1a')]);router['post']('/:id/send',auth['isAuthenticated'](),controller[_0x2895('0x1b')]);router[_0x2895('0x1c')](_0x2895('0xc'),auth['isAuthenticated'](),controller[_0x2895('0x1d')]);router[_0x2895('0x1e')](_0x2895('0xc'),auth[_0x2895('0x9')](),controller[_0x2895('0x1f')]);router['delete'](_0x2895('0x11'),auth[_0x2895('0x9')](),controller['removeDispositions']);router[_0x2895('0x1e')](_0x2895('0x14'),auth[_0x2895('0x9')](),controller['removeAnswers']);router['delete'](_0x2895('0x16'),auth[_0x2895('0x9')](),controller[_0x2895('0x20')]);module['exports']=router;
\ No newline at end of file
index ca22c5e..4038580 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf340=['exports','STRING','name','generate','twilio','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','mandatoryDispositionPauseId','setDataValue','mandatoryDisposition','sequelize','randomstring'];(function(_0x232425,_0x5bb675){var _0x48b53d=function(_0x238292){while(--_0x238292){_0x232425['push'](_0x232425['shift']());}};_0x48b53d(++_0x5bb675);}(_0xf340,0xae));var _0x0f34=function(_0x3aaa70,_0x3125e2){_0x3aaa70=_0x3aaa70-0x0;var _0x351963=_0xf340[_0x3aaa70];return _0x351963;};'use strict';var Sequelize=require(_0x0f34('0x0'));var rs=require(_0x0f34('0x1'));module[_0x0f34('0x2')]={'name':{'type':Sequelize[_0x0f34('0x3')],'unique':_0x0f34('0x4'),'allowNull':![]},'key':{'type':Sequelize[_0x0f34('0x3')],'allowNull':![]},'remote':{'type':Sequelize[_0x0f34('0x3')],'allowNull':![]},'token':{'type':Sequelize['STRING'],'defaultValue':function(){return rs[_0x0f34('0x5')]();}},'phone':{'type':Sequelize[_0x0f34('0x3')]},'type':{'type':Sequelize['ENUM'](_0x0f34('0x6'))},'accountSid':{'type':Sequelize[_0x0f34('0x3')]},'authToken':{'type':Sequelize[_0x0f34('0x3')]},'notificationTemplate':{'type':Sequelize[_0x0f34('0x7')],'defaultValue':function(){return _0x0f34('0x8');}},'notificationSound':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'notificationShake':{'type':Sequelize[_0x0f34('0x9')],'defaultValue':![]},'waitForTheAssignedAgent':{'type':Sequelize['INTEGER'],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0xa},'queueTransfer':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'queueTransferTimeout':{'type':Sequelize[_0x0f34('0xa')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0x12c},'agentTransfer':{'type':Sequelize[_0x0f34('0x9')],'defaultValue':![]},'agentTransferTimeout':{'type':Sequelize['INTEGER'],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0x12c},'mandatoryDispositionPauseId':{'type':Sequelize[_0x0f34('0xa')],'comment':_0x0f34('0xb')},'mandatoryDisposition':{'type':Sequelize[_0x0f34('0x9')],'defaultValue':![],'comment':_0x0f34('0xc'),'set':function(_0x4eb21f){if(!_0x4eb21f){this['setDataValue'](_0x0f34('0xd'),null);}this[_0x0f34('0xe')](_0x0f34('0xf'),_0x4eb21f);}},'description':{'type':Sequelize['STRING']}};
\ No newline at end of file
+var _0xf57e=['name','generate','ENUM','twilio','BOOLEAN','INTEGER','Status\x20to\x20put\x20when\x20mandatory\x20disposition\x20is\x20enabled','setDataValue','sequelize','randomstring','exports','STRING'];(function(_0x4b84bf,_0x344c66){var _0x29debc=function(_0x16cac8){while(--_0x16cac8){_0x4b84bf['push'](_0x4b84bf['shift']());}};_0x29debc(++_0x344c66);}(_0xf57e,0xec));var _0xef57=function(_0x2f8138,_0x2441b7){_0x2f8138=_0x2f8138-0x0;var _0x36fd78=_0xf57e[_0x2f8138];return _0x36fd78;};'use strict';var Sequelize=require(_0xef57('0x0'));var rs=require(_0xef57('0x1'));module[_0xef57('0x2')]={'name':{'type':Sequelize[_0xef57('0x3')],'unique':_0xef57('0x4'),'allowNull':![]},'key':{'type':Sequelize['STRING'],'allowNull':![]},'remote':{'type':Sequelize[_0xef57('0x3')],'allowNull':![]},'token':{'type':Sequelize[_0xef57('0x3')],'defaultValue':function(){return rs[_0xef57('0x5')]();}},'phone':{'type':Sequelize['STRING']},'type':{'type':Sequelize[_0xef57('0x6')](_0xef57('0x7'))},'accountSid':{'type':Sequelize['STRING']},'authToken':{'type':Sequelize[_0xef57('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[_0xef57('0x8')],'defaultValue':![]},'notificationShake':{'type':Sequelize[_0xef57('0x8')],'defaultValue':![]},'waitForTheAssignedAgent':{'type':Sequelize['INTEGER'],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0xa},'queueTransfer':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'queueTransferTimeout':{'type':Sequelize[_0xef57('0x9')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0x12c},'agentTransfer':{'type':Sequelize[_0xef57('0x8')],'defaultValue':![]},'agentTransferTimeout':{'type':Sequelize[_0xef57('0x9')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0x12c},'mandatoryDispositionPauseId':{'type':Sequelize[_0xef57('0x9')],'comment':_0xef57('0xa')},'mandatoryDisposition':{'type':Sequelize[_0xef57('0x8')],'defaultValue':![],'comment':'Enabled/disables\x20mandatory\x20dispo\x20on\x20a\x20queue','set':function(_0x1e944d){if(!_0x1e944d){this['setDataValue']('mandatoryDispositionPauseId',null);}this[_0xef57('0xb')]('mandatoryDisposition',_0x1e944d);}},'description':{'type':Sequelize[_0xef57('0x3')]}};
\ No newline at end of file
index 301e516..f3f1d4e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x378c=['end','offset','undefined','count','limit','Content-Range','json','apply','reject','save','get','WhatsappAccounts','UserProfileResource','stack','name','send','index','Pause','mandatoryDispositionPause','map','WhatsappAccount','rawAttributes','fieldName','type','key','model','query','keys','filters','attributes','intersection','fields','length','hasOwnProperty','nolimit','order','sort','where','pick','filter','merge','VIRTUAL','options','includeAll','include','findAll','rows','show','params','find','create','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','UserProfileSection','userProfileId','catch','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','destroy','describe','addDisposition','body','WhatsappAccountId','getDispositions','findOne','Disposition','removeDispositions','ids','addAnswer','CannedAnswer','removeAnswers','addAgents','omit','spread','emit','userWhatsappAccount:save','removeAgents','userWhatsappAccount:remove','getAgents','addApplications','transaction','WhatsappApplication','bulkCreate','findAndCountAll','priority','notify','whatsapp','account','applications','orderBy','Applications','asc','CmContact','Sequelize','no\x20available\x20attributes','difference','updatedAt','createdAt','CompanyId','mobile','From','replace','whatsapp:','Body','messageId','MessageSid','isNil','ValidationError','from\x20is\x20mandatory','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','from','CmList','ListId','Contacts','DESC','list','contact','WhatsappInteraction','interaction','created','push','close','WhatsappMessage','ContactId','AttachmentId','UserId','User','agent','waitForTheAssignedAgent','*,*,*,*','startRouting','Start','receiveMessage','entity\x20found','debug','WhatsappAccount,\x20%s,\x20%s,\x20%s,\x20%s','twilio','Content-Type','text/xml','<?xml\x20version=\x221.0\x22\x20encoding=\x22UTF-8\x22?>\x0a<Response></Response>','to\x20is\x20mandatory','List','dataValues','Messages','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','bluebird','mustache','util','path','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','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','redis','defaults','localhost','./whatsappAccount.socket','register','jayson/promise','client','request','then','info','request\x20sent','WhatsappAccount,\x20%s,\x20%s,\x20%s','stringify','error','code','message','WhatsappAccount,\x20%s,\x20%s','result','sendStatus','status'];(function(_0x311663,_0xa2d437){var _0x4f165d=function(_0x155427){while(--_0x155427){_0x311663['push'](_0x311663['shift']());}};_0x4f165d(++_0xa2d437);}(_0x378c,0x159));var _0xc378=function(_0x59ee6f,_0x450239){_0x59ee6f=_0x59ee6f-0x0;var _0x4c0979=_0x378c[_0x59ee6f];return _0x4c0979;};'use strict';var emlformat=require(_0xc378('0x0'));var rimraf=require(_0xc378('0x1'));var zipdir=require(_0xc378('0x2'));var jsonpatch=require(_0xc378('0x3'));var rp=require(_0xc378('0x4'));var moment=require('moment');var BPromise=require(_0xc378('0x5'));var Mustache=require(_0xc378('0x6'));var util=require(_0xc378('0x7'));var path=require(_0xc378('0x8'));var sox=require(_0xc378('0x9'));var csv=require(_0xc378('0xa'));var ejs=require(_0xc378('0xb'));var fs=require('fs');var fs_extra=require(_0xc378('0xc'));var _=require(_0xc378('0xd'));var squel=require(_0xc378('0xe'));var crypto=require(_0xc378('0xf'));var jsforce=require('jsforce');var deskjs=require(_0xc378('0x10'));var toCsv=require(_0xc378('0xa'));var querystring=require('querystring');var Papa=require(_0xc378('0x11'));var Redis=require(_0xc378('0x12'));var authService=require(_0xc378('0x13'));var qs=require(_0xc378('0x14'));var as=require(_0xc378('0x15'));var hardwareService=require(_0xc378('0x16'));var logger=require(_0xc378('0x17'))(_0xc378('0x18'));var utils=require(_0xc378('0x19'));var config=require(_0xc378('0x1a'));var licenseUtil=require(_0xc378('0x1b'));var db=require(_0xc378('0x1c'))['db'];config[_0xc378('0x1d')]=_[_0xc378('0x1e')](config[_0xc378('0x1d')],{'host':_0xc378('0x1f'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0xc378('0x1d')]));require(_0xc378('0x20'))[_0xc378('0x21')](socket);var jayson=require(_0xc378('0x22'));var client=jayson[_0xc378('0x23')]['http']({'port':0x232c});function respondWithRpcPromise(_0x2187d0,_0x2a912f,_0x483e96,_0x427069){return new BPromise(function(_0x5bc25b,_0x1af40e){var _0x8866a6=_0x427069||client;return _0x8866a6[_0xc378('0x24')](_0x2187d0,_0x483e96)[_0xc378('0x25')](function(_0x33f217){logger[_0xc378('0x26')]('WhatsappAccount,\x20%s,\x20%s',_0x2a912f,_0xc378('0x27'));logger['debug'](_0xc378('0x28'),_0x2a912f,_0xc378('0x27'),JSON[_0xc378('0x29')](_0x33f217));if(_0x33f217['error']){if(_0x33f217[_0xc378('0x2a')][_0xc378('0x2b')]===0x1f4){logger[_0xc378('0x2a')]('WhatsappAccount,\x20%s,\x20%s',_0x2a912f,_0x33f217['error'][_0xc378('0x2c')]);return _0x1af40e(_0x33f217[_0xc378('0x2a')][_0xc378('0x2c')]);}logger[_0xc378('0x2a')](_0xc378('0x2d'),_0x2a912f,_0x33f217[_0xc378('0x2a')][_0xc378('0x2c')]);return _0x5bc25b(_0x33f217[_0xc378('0x2a')][_0xc378('0x2c')]);}else{logger['info'](_0xc378('0x2d'),_0x2a912f,_0xc378('0x27'));_0x5bc25b(_0x33f217[_0xc378('0x2e')][_0xc378('0x2c')]);}})['catch'](function(_0x40bacd){logger[_0xc378('0x2a')]('WhatsappAccount,\x20%s,\x20%s',_0x2a912f,_0x40bacd);_0x1af40e(_0x40bacd);});});}function respondWithStatusCode(_0x5789c5,_0x6c50cb){_0x6c50cb=_0x6c50cb||0xcc;return function(_0x2b4611){if(_0x2b4611){return _0x5789c5[_0xc378('0x2f')](_0x6c50cb);}return _0x5789c5[_0xc378('0x30')](_0x6c50cb)[_0xc378('0x31')]();};}function respondWithResult(_0x5eadce,_0x4980f0){_0x4980f0=_0x4980f0||0xc8;return function(_0x287080){if(_0x287080){return _0x5eadce[_0xc378('0x30')](_0x4980f0)['json'](_0x287080);}};}function respondWithFilteredResult(_0x3d1587,_0x1e359a){return function(_0x3b5dae){if(_0x3b5dae){var _0x1e3a72=typeof _0x1e359a[_0xc378('0x32')]===_0xc378('0x33')&&typeof _0x1e359a['limit']===_0xc378('0x33');var _0x4da8ac=_0x3b5dae[_0xc378('0x34')];var _0x5aeb2e=_0x1e3a72?0x0:_0x1e359a[_0xc378('0x32')];var _0xa07ecc=_0x1e3a72?_0x3b5dae[_0xc378('0x34')]:_0x1e359a[_0xc378('0x32')]+_0x1e359a[_0xc378('0x35')];var _0x3bc6c3;if(_0xa07ecc>=_0x4da8ac){_0xa07ecc=_0x4da8ac;_0x3bc6c3=0xc8;}else{_0x3bc6c3=0xce;}_0x3d1587[_0xc378('0x30')](_0x3bc6c3);return _0x3d1587['set'](_0xc378('0x36'),_0x5aeb2e+'-'+_0xa07ecc+'/'+_0x4da8ac)[_0xc378('0x37')](_0x3b5dae);}return null;};}function patchUpdates(_0x5ec95d){return function(_0x54e1da){try{jsonpatch[_0xc378('0x38')](_0x54e1da,_0x5ec95d,!![]);}catch(_0x522cf7){return BPromise[_0xc378('0x39')](_0x522cf7);}return _0x54e1da[_0xc378('0x3a')]();};}function saveUpdates(_0x5504fd,_0xeb1f82){return function(_0x436189){if(_0x436189){return _0x436189['update'](_0x5504fd)[_0xc378('0x25')](function(_0x15f2f4){return _0x15f2f4;});}return null;};}function removeEntity(_0x139386,_0x51c206){return function(_0x45027e){if(_0x45027e){return _0x45027e['destroy']()[_0xc378('0x25')](function(){var _0x194bf8=_0x45027e[_0xc378('0x3b')]({'plain':!![]});var _0x1f4267=_0xc378('0x3c');return db[_0xc378('0x3d')]['destroy']({'where':{'type':_0x1f4267,'resourceId':_0x194bf8['id']}})[_0xc378('0x25')](function(){return _0x45027e;});})[_0xc378('0x25')](function(){_0x139386[_0xc378('0x30')](0xcc)[_0xc378('0x31')]();});}};}function handleEntityNotFound(_0x281e18,_0x127635){return function(_0x3e2bcf){if(!_0x3e2bcf){_0x281e18['sendStatus'](0x194);}return _0x3e2bcf;};}function handleError(_0x10bcc5,_0x4eb04d){_0x4eb04d=_0x4eb04d||0x1f4;return function(_0x52944a){logger['error'](_0x52944a[_0xc378('0x3e')]);if(_0x52944a[_0xc378('0x3f')]){delete _0x52944a[_0xc378('0x3f')];}_0x10bcc5['status'](_0x4eb04d)[_0xc378('0x40')](_0x52944a);};}exports[_0xc378('0x41')]=function(_0x379194,_0x1f3abb){var _0x38ba31={'include':[{'model':db[_0xc378('0x42')],'as':_0xc378('0x43')}]},_0x5974c1={},_0x17a2a5={'count':0x0,'rows':[]};var _0x1343d2=_[_0xc378('0x44')](db[_0xc378('0x45')][_0xc378('0x46')],function(_0x564711){return{'name':_0x564711[_0xc378('0x47')],'type':_0x564711[_0xc378('0x48')][_0xc378('0x49')]};});_0x5974c1[_0xc378('0x4a')]=_[_0xc378('0x44')](_0x1343d2,'name');_0x5974c1[_0xc378('0x4b')]=_[_0xc378('0x4c')](_0x379194['query']);_0x5974c1[_0xc378('0x4d')]=_['intersection'](_0x5974c1['model'],_0x5974c1[_0xc378('0x4b')]);_0x38ba31[_0xc378('0x4e')]=_[_0xc378('0x4f')](_0x5974c1[_0xc378('0x4a')],qs[_0xc378('0x50')](_0x379194[_0xc378('0x4b')][_0xc378('0x50')]));_0x38ba31[_0xc378('0x4e')]=_0x38ba31[_0xc378('0x4e')][_0xc378('0x51')]?_0x38ba31[_0xc378('0x4e')]:_0x5974c1[_0xc378('0x4a')];if(!_0x379194[_0xc378('0x4b')][_0xc378('0x52')](_0xc378('0x53'))){_0x38ba31[_0xc378('0x35')]=qs['limit'](_0x379194['query'][_0xc378('0x35')]);_0x38ba31[_0xc378('0x32')]=qs[_0xc378('0x32')](_0x379194[_0xc378('0x4b')][_0xc378('0x32')]);}_0x38ba31[_0xc378('0x54')]=qs[_0xc378('0x55')](_0x379194[_0xc378('0x4b')][_0xc378('0x55')]);_0x38ba31[_0xc378('0x56')]=qs[_0xc378('0x4d')](_[_0xc378('0x57')](_0x379194[_0xc378('0x4b')],_0x5974c1[_0xc378('0x4d')]),_0x1343d2);if(_0x379194[_0xc378('0x4b')][_0xc378('0x58')]){_0x38ba31['where']=_[_0xc378('0x59')](_0x38ba31[_0xc378('0x56')],{'$or':_[_0xc378('0x44')](_0x1343d2,function(_0x28cbbe){if(_0x28cbbe[_0xc378('0x48')]!==_0xc378('0x5a')){var _0x11a807={};_0x11a807[_0x28cbbe[_0xc378('0x3f')]]={'$like':'%'+_0x379194[_0xc378('0x4b')][_0xc378('0x58')]+'%'};return _0x11a807;}})});}_0x38ba31=_[_0xc378('0x59')]({},_0x38ba31,_0x379194[_0xc378('0x5b')]);var _0xa5a044={'where':_0x38ba31[_0xc378('0x56')]};return db[_0xc378('0x45')][_0xc378('0x34')](_0xa5a044)['then'](function(_0x57b8fa){_0x17a2a5['count']=_0x57b8fa;if(_0x379194[_0xc378('0x4b')][_0xc378('0x5c')]){_0x38ba31[_0xc378('0x5d')]=[{'all':!![]}];}return db[_0xc378('0x45')][_0xc378('0x5e')](_0x38ba31);})[_0xc378('0x25')](function(_0x4df1ca){_0x17a2a5[_0xc378('0x5f')]=_0x4df1ca;return _0x17a2a5;})[_0xc378('0x25')](respondWithFilteredResult(_0x1f3abb,_0x38ba31))['catch'](handleError(_0x1f3abb,null));};exports[_0xc378('0x60')]=function(_0x44fb59,_0x8f7057){var _0x3abce1={'raw':![],'where':{'id':_0x44fb59[_0xc378('0x61')]['id']},'include':[{'model':db['Pause'],'as':_0xc378('0x43')}]},_0x3d189b={};_0x3d189b[_0xc378('0x4a')]=_[_0xc378('0x4c')](db[_0xc378('0x45')][_0xc378('0x46')]);_0x3d189b[_0xc378('0x4b')]=_[_0xc378('0x4c')](_0x44fb59[_0xc378('0x4b')]);_0x3d189b[_0xc378('0x4d')]=_[_0xc378('0x4f')](_0x3d189b[_0xc378('0x4a')],_0x3d189b[_0xc378('0x4b')]);_0x3abce1[_0xc378('0x4e')]=_['intersection'](_0x3d189b[_0xc378('0x4a')],qs[_0xc378('0x50')](_0x44fb59[_0xc378('0x4b')][_0xc378('0x50')]));_0x3abce1['attributes']=_0x3abce1['attributes']['length']?_0x3abce1[_0xc378('0x4e')]:_0x3d189b['model'];if(_0x44fb59[_0xc378('0x4b')][_0xc378('0x5c')]){_0x3abce1[_0xc378('0x5d')]=[{'all':!![]}];}_0x3abce1=_[_0xc378('0x59')]({},_0x3abce1,_0x44fb59['options']);return db[_0xc378('0x45')][_0xc378('0x62')](_0x3abce1)['then'](handleEntityNotFound(_0x8f7057,null))[_0xc378('0x25')](respondWithResult(_0x8f7057,null))['catch'](handleError(_0x8f7057,null));};exports[_0xc378('0x63')]=function(_0x54c8e4,_0x510e58){return db[_0xc378('0x45')][_0xc378('0x63')](_0x54c8e4['body'],{})[_0xc378('0x25')](function(_0x12ecaf){var _0x4348ca=_0x54c8e4[_0xc378('0x64')]['get']({'plain':!![]});if(!_0x4348ca)throw new Error(_0xc378('0x65'));if(_0x4348ca[_0xc378('0x66')]===_0xc378('0x64')){var _0x221523=_0x12ecaf[_0xc378('0x3b')]({'plain':!![]});var _0x37cc26='WhatsappAccounts';return db[_0xc378('0x67')][_0xc378('0x62')]({'where':{'name':_0x37cc26,'userProfileId':_0x4348ca[_0xc378('0x68')]},'raw':!![]})['then'](function(_0x514e01){if(_0x514e01&&_0x514e01['autoAssociation']===0x0){return db[_0xc378('0x3d')][_0xc378('0x63')]({'name':_0x221523[_0xc378('0x3f')],'resourceId':_0x221523['id'],'type':_0x514e01[_0xc378('0x3f')],'sectionId':_0x514e01['id']},{})[_0xc378('0x25')](function(){return _0x12ecaf;});}else{return _0x12ecaf;}})[_0xc378('0x69')](function(_0x27114e){logger[_0xc378('0x2a')](_0xc378('0x6a'),_0x27114e);throw _0x27114e;});}return _0x12ecaf;})['then'](respondWithResult(_0x510e58,0xc9))[_0xc378('0x69')](handleError(_0x510e58,null));};exports['update']=function(_0x1fac8e,_0x52a899){if(_0x1fac8e['body']['id']){delete _0x1fac8e['body']['id'];}return db[_0xc378('0x45')]['find']({'where':{'id':_0x1fac8e['params']['id']},'include':[{'model':db[_0xc378('0x42')],'as':_0xc378('0x43')}]})['then'](handleEntityNotFound(_0x52a899,null))['then'](saveUpdates(_0x1fac8e['body'],null))[_0xc378('0x25')](respondWithResult(_0x52a899,null))[_0xc378('0x69')](handleError(_0x52a899,null));};exports[_0xc378('0x6b')]=function(_0x239e2f,_0x1e82d8){return db[_0xc378('0x45')]['find']({'where':{'id':_0x239e2f[_0xc378('0x61')]['id']}})[_0xc378('0x25')](handleEntityNotFound(_0x1e82d8,null))[_0xc378('0x25')](removeEntity(_0x1e82d8,null))['catch'](handleError(_0x1e82d8,null));};exports[_0xc378('0x6c')]=function(_0x1ef5c2,_0x4346e4){return db[_0xc378('0x45')]['describe']()[_0xc378('0x25')](respondWithResult(_0x4346e4,null))[_0xc378('0x69')](handleError(_0x4346e4,null));};exports[_0xc378('0x6d')]=function(_0x4f7127,_0xdfa0fa,_0x1ab226){if(_0x4f7127[_0xc378('0x6e')]['id']){delete _0x4f7127[_0xc378('0x6e')]['id'];}return db['WhatsappAccount'][_0xc378('0x62')]({'where':{'id':_0x4f7127[_0xc378('0x61')]['id']}})[_0xc378('0x25')](handleEntityNotFound(_0xdfa0fa,null))[_0xc378('0x25')](function(_0x22193d){if(_0x22193d){_0x4f7127[_0xc378('0x6e')][_0xc378('0x6f')]=_0x22193d['id'];return db['Disposition'][_0xc378('0x63')](_0x4f7127['body']);}})[_0xc378('0x25')](respondWithResult(_0xdfa0fa,null))[_0xc378('0x69')](handleError(_0xdfa0fa,null));};exports[_0xc378('0x70')]=function(_0x3b5b9c,_0x4ba7e5,_0x5638b8){var _0x2b7eb8={'raw':![],'where':{}};var _0x4189de={};var _0x18dcfe={'count':0x0,'rows':[]};return db[_0xc378('0x45')][_0xc378('0x71')]({'where':{'id':_0x3b5b9c['params']['id']}})['then'](handleEntityNotFound(_0x4ba7e5,null))[_0xc378('0x25')](function(_0x3527e1){if(_0x3527e1){_0x4189de[_0xc378('0x4a')]=_[_0xc378('0x4c')](db[_0xc378('0x72')][_0xc378('0x46')]);_0x4189de[_0xc378('0x4b')]=_[_0xc378('0x4c')](_0x3b5b9c[_0xc378('0x4b')]);_0x4189de['filters']=_[_0xc378('0x4f')](_0x4189de[_0xc378('0x4a')],_0x4189de[_0xc378('0x4b')]);_0x2b7eb8[_0xc378('0x4e')]=_[_0xc378('0x4f')](_0x4189de[_0xc378('0x4a')],qs[_0xc378('0x50')](_0x3b5b9c[_0xc378('0x4b')][_0xc378('0x50')]));_0x2b7eb8[_0xc378('0x4e')]=_0x2b7eb8[_0xc378('0x4e')][_0xc378('0x51')]?_0x2b7eb8[_0xc378('0x4e')]:_0x4189de[_0xc378('0x4a')];if(!_0x3b5b9c[_0xc378('0x4b')][_0xc378('0x52')](_0xc378('0x53'))){_0x2b7eb8[_0xc378('0x35')]=qs[_0xc378('0x35')](_0x3b5b9c[_0xc378('0x4b')][_0xc378('0x35')]);_0x2b7eb8[_0xc378('0x32')]=qs['offset'](_0x3b5b9c['query'][_0xc378('0x32')]);}_0x2b7eb8['order']=qs[_0xc378('0x55')](_0x3b5b9c[_0xc378('0x4b')][_0xc378('0x55')]);_0x2b7eb8[_0xc378('0x56')]=qs[_0xc378('0x4d')](_['pick'](_0x3b5b9c[_0xc378('0x4b')],_0x4189de[_0xc378('0x4d')]));_0x2b7eb8[_0xc378('0x56')]['WhatsappAccountId']=_0x3527e1['id'];if(_0x3b5b9c[_0xc378('0x4b')][_0xc378('0x58')]){_0x2b7eb8[_0xc378('0x56')]=_[_0xc378('0x59')](_0x2b7eb8[_0xc378('0x56')],{'$or':_[_0xc378('0x44')](_0x2b7eb8[_0xc378('0x4e')],function(_0xcca62b){var _0x4e51a4={};_0x4e51a4[_0xcca62b]={'$like':'%'+_0x3b5b9c[_0xc378('0x4b')][_0xc378('0x58')]+'%'};return _0x4e51a4;})});}_0x2b7eb8=_[_0xc378('0x59')]({},_0x2b7eb8,_0x3b5b9c['options']);return db[_0xc378('0x72')]['count']({'where':_0x2b7eb8[_0xc378('0x56')]})['then'](function(_0x42828c){_0x18dcfe[_0xc378('0x34')]=_0x42828c;if(_0x3b5b9c[_0xc378('0x4b')][_0xc378('0x5c')]){_0x2b7eb8[_0xc378('0x5d')]=[{'all':!![]}];}return db['Disposition'][_0xc378('0x5e')](_0x2b7eb8);})[_0xc378('0x25')](function(_0x5258d0){_0x18dcfe[_0xc378('0x5f')]=_0x5258d0;return _0x18dcfe;});}})[_0xc378('0x25')](respondWithFilteredResult(_0x4ba7e5,_0x2b7eb8))[_0xc378('0x69')](handleError(_0x4ba7e5,null));};exports[_0xc378('0x73')]=function(_0xc4e66c,_0x25b655,_0x5d5fca){return db[_0xc378('0x45')][_0xc378('0x62')]({'where':{'id':_0xc4e66c[_0xc378('0x61')]['id']}})[_0xc378('0x25')](handleEntityNotFound(_0x25b655,null))[_0xc378('0x25')](function(_0x53c82c){if(_0x53c82c){return _0x53c82c[_0xc378('0x73')](_0xc4e66c['query'][_0xc378('0x74')]);}})[_0xc378('0x25')](respondWithStatusCode(_0x25b655,null))[_0xc378('0x69')](handleError(_0x25b655,null));};exports[_0xc378('0x75')]=function(_0x1a90c8,_0x168362,_0x489835){if(_0x1a90c8[_0xc378('0x6e')]['id']){delete _0x1a90c8[_0xc378('0x6e')]['id'];}return db[_0xc378('0x45')][_0xc378('0x62')]({'where':{'id':_0x1a90c8[_0xc378('0x61')]['id']}})[_0xc378('0x25')](handleEntityNotFound(_0x168362,null))[_0xc378('0x25')](function(_0x47e0bc){if(_0x47e0bc){_0x1a90c8[_0xc378('0x6e')][_0xc378('0x6f')]=_0x47e0bc['id'];return db['CannedAnswer'][_0xc378('0x63')](_0x1a90c8['body']);}})[_0xc378('0x25')](respondWithResult(_0x168362,null))[_0xc378('0x69')](handleError(_0x168362,null));};exports['getAnswers']=function(_0x3ff61c,_0x36b4cf,_0x587547){var _0x4d8db0={'raw':![],'where':{}};var _0x1a9b47={};var _0x3d4050={'count':0x0,'rows':[]};return db[_0xc378('0x45')]['findOne']({'where':{'id':_0x3ff61c['params']['id']}})['then'](handleEntityNotFound(_0x36b4cf,null))[_0xc378('0x25')](function(_0x5928e1){if(_0x5928e1){_0x1a9b47[_0xc378('0x4a')]=_[_0xc378('0x4c')](db[_0xc378('0x76')]['rawAttributes']);_0x1a9b47['query']=_[_0xc378('0x4c')](_0x3ff61c[_0xc378('0x4b')]);_0x1a9b47[_0xc378('0x4d')]=_[_0xc378('0x4f')](_0x1a9b47[_0xc378('0x4a')],_0x1a9b47[_0xc378('0x4b')]);_0x4d8db0[_0xc378('0x4e')]=_[_0xc378('0x4f')](_0x1a9b47[_0xc378('0x4a')],qs[_0xc378('0x50')](_0x3ff61c[_0xc378('0x4b')][_0xc378('0x50')]));_0x4d8db0[_0xc378('0x4e')]=_0x4d8db0[_0xc378('0x4e')]['length']?_0x4d8db0[_0xc378('0x4e')]:_0x1a9b47[_0xc378('0x4a')];if(!_0x3ff61c[_0xc378('0x4b')][_0xc378('0x52')](_0xc378('0x53'))){_0x4d8db0[_0xc378('0x35')]=qs['limit'](_0x3ff61c[_0xc378('0x4b')]['limit']);_0x4d8db0['offset']=qs[_0xc378('0x32')](_0x3ff61c['query'][_0xc378('0x32')]);}_0x4d8db0[_0xc378('0x54')]=qs[_0xc378('0x55')](_0x3ff61c[_0xc378('0x4b')][_0xc378('0x55')]);_0x4d8db0['where']=qs[_0xc378('0x4d')](_[_0xc378('0x57')](_0x3ff61c[_0xc378('0x4b')],_0x1a9b47[_0xc378('0x4d')]));_0x4d8db0[_0xc378('0x56')][_0xc378('0x6f')]=_0x5928e1['id'];if(_0x3ff61c['query'][_0xc378('0x58')]){_0x4d8db0['where']=_['merge'](_0x4d8db0['where'],{'$or':_['map'](_0x4d8db0[_0xc378('0x4e')],function(_0x23e539){var _0x5c028a={};_0x5c028a[_0x23e539]={'$like':'%'+_0x3ff61c[_0xc378('0x4b')][_0xc378('0x58')]+'%'};return _0x5c028a;})});}_0x4d8db0=_[_0xc378('0x59')]({},_0x4d8db0,_0x3ff61c[_0xc378('0x5b')]);return db[_0xc378('0x76')][_0xc378('0x34')]({'where':_0x4d8db0['where']})[_0xc378('0x25')](function(_0x9592a8){_0x3d4050[_0xc378('0x34')]=_0x9592a8;if(_0x3ff61c['query']['includeAll']){_0x4d8db0[_0xc378('0x5d')]=[{'all':!![]}];}return db[_0xc378('0x76')][_0xc378('0x5e')](_0x4d8db0);})[_0xc378('0x25')](function(_0x3c2c6d){_0x3d4050[_0xc378('0x5f')]=_0x3c2c6d;return _0x3d4050;});}})[_0xc378('0x25')](respondWithFilteredResult(_0x36b4cf,_0x4d8db0))[_0xc378('0x69')](handleError(_0x36b4cf,null));};exports[_0xc378('0x77')]=function(_0x46277b,_0x7ad50c,_0x213739){return db[_0xc378('0x45')][_0xc378('0x62')]({'where':{'id':_0x46277b[_0xc378('0x61')]['id']}})[_0xc378('0x25')](handleEntityNotFound(_0x7ad50c,null))[_0xc378('0x25')](function(_0x4a6591){if(_0x4a6591){return _0x4a6591[_0xc378('0x77')](_0x46277b[_0xc378('0x4b')][_0xc378('0x74')]);}})[_0xc378('0x25')](respondWithStatusCode(_0x7ad50c,null))['catch'](handleError(_0x7ad50c,null));};exports[_0xc378('0x78')]=function(_0x3dcfad,_0x2cc239,_0x28e7ae){return db[_0xc378('0x45')][_0xc378('0x62')]({'where':{'id':_0x3dcfad[_0xc378('0x61')]['id']}})[_0xc378('0x25')](handleEntityNotFound(_0x2cc239,null))[_0xc378('0x25')](function(_0x1283e8){if(_0x1283e8){return _0x1283e8[_0xc378('0x78')](_0x3dcfad[_0xc378('0x6e')][_0xc378('0x74')],_[_0xc378('0x79')](_0x3dcfad['body'],[_0xc378('0x74'),'id'])||{})[_0xc378('0x7a')](function(_0x4da2d3){for(var _0x838083=0x0;_0x838083<_0x3dcfad['body']['ids']['length'];_0x838083+=0x1){socket[_0xc378('0x7b')](_0xc378('0x7c'),{'UserId':Number(_0x3dcfad[_0xc378('0x6e')][_0xc378('0x74')][_0x838083]),'WhatsappAccountId':Number(_0x3dcfad[_0xc378('0x61')]['id'])});}return _0x4da2d3;});}})['then'](respondWithResult(_0x2cc239,null))[_0xc378('0x69')](handleError(_0x2cc239,null));};exports['removeAgents']=function(_0x55b001,_0x2060b7,_0x301e32){return db[_0xc378('0x45')]['find']({'where':{'id':_0x55b001[_0xc378('0x61')]['id']}})[_0xc378('0x25')](handleEntityNotFound(_0x2060b7,null))[_0xc378('0x25')](function(_0x52e82b){if(_0x52e82b){return _0x52e82b[_0xc378('0x7d')](_0x55b001[_0xc378('0x4b')][_0xc378('0x74')])[_0xc378('0x25')](function(){if(_['isArray'](_0x55b001['query'][_0xc378('0x74')])){for(var _0x2df66e=0x0;_0x2df66e<_0x55b001['query'][_0xc378('0x74')]['length'];_0x2df66e+=0x1){socket['emit'](_0xc378('0x7e'),{'UserId':Number(_0x55b001[_0xc378('0x4b')][_0xc378('0x74')][_0x2df66e]),'WhatsappAccountId':Number(_0x55b001[_0xc378('0x61')]['id'])});}}else{socket[_0xc378('0x7b')]('userWhatsappAccount:remove',{'UserId':Number(_0x55b001[_0xc378('0x4b')]['ids']),'WhatsappAccountId':Number(_0x55b001[_0xc378('0x61')]['id'])});}});}})[_0xc378('0x25')](respondWithStatusCode(_0x2060b7,null))[_0xc378('0x69')](handleError(_0x2060b7,null));};exports[_0xc378('0x7f')]=function(_0x5e95ab,_0x47669e,_0x34856e){var _0x32ff0c={};var _0x419e9a={};var _0x44e1eb;var _0x59d2ee;return db['WhatsappAccount']['findOne']({'where':{'id':_0x5e95ab[_0xc378('0x61')]['id']}})[_0xc378('0x25')](handleEntityNotFound(_0x47669e,null))[_0xc378('0x25')](function(_0x443b0b){if(_0x443b0b){_0x44e1eb=_0x443b0b;_0x419e9a[_0xc378('0x4a')]=_[_0xc378('0x4c')](db['User'][_0xc378('0x46')]);_0x419e9a[_0xc378('0x4b')]=_[_0xc378('0x4c')](_0x5e95ab[_0xc378('0x4b')]);_0x419e9a[_0xc378('0x4d')]=_[_0xc378('0x4f')](_0x419e9a[_0xc378('0x4a')],_0x419e9a[_0xc378('0x4b')]);_0x32ff0c['attributes']=_[_0xc378('0x4f')](_0x419e9a[_0xc378('0x4a')],qs['fields'](_0x5e95ab['query'][_0xc378('0x50')]));_0x32ff0c[_0xc378('0x4e')]=_0x32ff0c[_0xc378('0x4e')]['length']?_0x32ff0c[_0xc378('0x4e')]:_0x419e9a[_0xc378('0x4a')];_0x32ff0c[_0xc378('0x54')]=qs[_0xc378('0x55')](_0x5e95ab[_0xc378('0x4b')][_0xc378('0x55')]);_0x32ff0c[_0xc378('0x56')]=qs[_0xc378('0x4d')](_[_0xc378('0x57')](_0x5e95ab[_0xc378('0x4b')],_0x419e9a['filters']));if(_0x5e95ab[_0xc378('0x4b')][_0xc378('0x58')]){_0x32ff0c[_0xc378('0x56')]=_['merge'](_0x32ff0c[_0xc378('0x56')],{'$or':_[_0xc378('0x44')](_0x32ff0c[_0xc378('0x4e')],function(_0x1e9c4e){var _0x582718={};_0x582718[_0x1e9c4e]={'$like':'%'+_0x5e95ab['query'][_0xc378('0x58')]+'%'};return _0x582718;})});}_0x32ff0c=_[_0xc378('0x59')]({},_0x32ff0c,_0x5e95ab['options']);return _0x44e1eb[_0xc378('0x7f')](_0x32ff0c);}})['then'](function(_0x3be843){if(_0x3be843){_0x59d2ee=_0x3be843['length'];if(!_0x5e95ab[_0xc378('0x4b')][_0xc378('0x52')](_0xc378('0x53'))){_0x32ff0c[_0xc378('0x35')]=qs['limit'](_0x5e95ab[_0xc378('0x4b')][_0xc378('0x35')]);_0x32ff0c[_0xc378('0x32')]=qs[_0xc378('0x32')](_0x5e95ab[_0xc378('0x4b')][_0xc378('0x32')]);}return _0x44e1eb[_0xc378('0x7f')](_0x32ff0c);}})['then'](function(_0x46af9f){if(_0x46af9f){return _0x46af9f?{'count':_0x59d2ee,'rows':_0x46af9f}:null;}})[_0xc378('0x25')](respondWithResult(_0x47669e,null))[_0xc378('0x69')](handleError(_0x47669e,null));};exports[_0xc378('0x80')]=function(_0x50dea2,_0x365cde,_0x5c5e7e){return db[_0xc378('0x45')][_0xc378('0x71')]({'where':{'id':_0x50dea2[_0xc378('0x61')]['id']}})['then'](handleEntityNotFound(_0x365cde,null))[_0xc378('0x25')](function(_0x1cf557){if(_0x1cf557){return db['sequelize'][_0xc378('0x81')](function(_0x2ff15a){return db[_0xc378('0x82')][_0xc378('0x6b')]({'where':{'WhatsappAccountId':_0x50dea2[_0xc378('0x61')]['id']},'transaction':_0x2ff15a})[_0xc378('0x25')](function(_0x471858){var _0x577847=_['map'](_0x50dea2[_0xc378('0x6e')],function(_0x18d9f2){_0x18d9f2[_0xc378('0x6f')]=_0x50dea2[_0xc378('0x61')]['id'];return _0x18d9f2;});return db[_0xc378('0x82')][_0xc378('0x83')](_0x577847,{'transaction':_0x2ff15a});});})[_0xc378('0x25')](function(){return db[_0xc378('0x82')][_0xc378('0x84')]({'where':{'WhatsappAccountId':_0x50dea2[_0xc378('0x61')]['id']},'order':_0xc378('0x85')});});}})[_0xc378('0x25')](respondWithResult(_0x365cde,null))['catch'](handleError(_0x365cde,null));};exports['getApplications']=function(_0x3d9ec2,_0x42b562,_0x30c8e8){var _0x3315b9={};var _0x4c7158={};var _0x4e836f;var _0xf67f78;return db[_0xc378('0x45')][_0xc378('0x71')]({'where':{'id':_0x3d9ec2[_0xc378('0x61')]['id']}})[_0xc378('0x25')](handleEntityNotFound(_0x42b562,null))['then'](function(_0x3c40ca){if(_0x3c40ca){_0x4e836f=_0x3c40ca;_0x4c7158['model']=_['keys'](db['WhatsappApplication']['rawAttributes']);_0x4c7158[_0xc378('0x4b')]=_['keys'](_0x3d9ec2[_0xc378('0x4b')]);_0x4c7158[_0xc378('0x4d')]=_[_0xc378('0x4f')](_0x4c7158[_0xc378('0x4a')],_0x4c7158[_0xc378('0x4b')]);_0x3315b9['attributes']=_['intersection'](_0x4c7158[_0xc378('0x4a')],qs[_0xc378('0x50')](_0x3d9ec2[_0xc378('0x4b')]['fields']));_0x3315b9['attributes']=_0x3315b9[_0xc378('0x4e')][_0xc378('0x51')]?_0x3315b9[_0xc378('0x4e')]:_0x4c7158['model'];_0x3315b9[_0xc378('0x54')]=qs[_0xc378('0x55')](_0x3d9ec2['query'][_0xc378('0x55')]);_0x3315b9[_0xc378('0x56')]=qs[_0xc378('0x4d')](_[_0xc378('0x57')](_0x3d9ec2[_0xc378('0x4b')],_0x4c7158['filters']));if(_0x3d9ec2[_0xc378('0x4b')][_0xc378('0x58')]){_0x3315b9['where']=_[_0xc378('0x59')](_0x3315b9['where'],{'$or':_[_0xc378('0x44')](_0x3315b9['attributes'],function(_0x10bc85){var _0x355f68={};_0x355f68[_0x10bc85]={'$like':'%'+_0x3d9ec2[_0xc378('0x4b')]['filter']+'%'};return _0x355f68;})});}_0x3315b9=_['merge']({},_0x3315b9,_0x3d9ec2[_0xc378('0x5b')]);return _0x4e836f['getApplications'](_0x3315b9);}})[_0xc378('0x25')](function(_0x31ae03){if(_0x31ae03){_0xf67f78=_0x31ae03[_0xc378('0x51')];if(!_0x3d9ec2[_0xc378('0x4b')][_0xc378('0x52')](_0xc378('0x53'))){_0x3315b9[_0xc378('0x35')]=qs['limit'](_0x3d9ec2[_0xc378('0x4b')][_0xc378('0x35')]);_0x3315b9['offset']=qs[_0xc378('0x32')](_0x3d9ec2[_0xc378('0x4b')][_0xc378('0x32')]);}return _0x4e836f['getApplications'](_0x3315b9);}})[_0xc378('0x25')](function(_0x451593){if(_0x451593){return _0x451593?{'count':_0xf67f78,'rows':_0x451593}:null;}})['then'](respondWithResult(_0x42b562,null))[_0xc378('0x69')](handleError(_0x42b562,null));};exports[_0xc378('0x86')]=function(_0x154c42,_0x39d359,_0x44e137){var _0x4db111={'channel':_0xc378('0x87')};var _0x3b3293=[];var _0x56cdb1=[];var _0x1df965={};return db[_0xc378('0x45')][_0xc378('0x62')]({'where':{'id':_0x154c42[_0xc378('0x61')]['id']},'include':[{'model':db[_0xc378('0x82')],'as':'Applications'}]})['then'](handleEntityNotFound(_0x39d359,null))['then'](function(_0x32fb8c){_0x4db111[_0xc378('0x88')]=_0x32fb8c;_0x4db111[_0xc378('0x89')]=_[_0xc378('0x8a')](_0x32fb8c[_0xc378('0x8b')],[_0xc378('0x85')],[_0xc378('0x8c')]);if(_0x4db111['account']['Applications']){delete _0x4db111[_0xc378('0x88')]['Applications'];}return db[_0xc378('0x8d')][_0xc378('0x6c')]();})[_0xc378('0x25')](function(_0x1f0aa8){if(!_0x1f0aa8){throw new db[(_0xc378('0x8e'))]['ValidationError'](_0xc378('0x8f'));}_0x3b3293=_[_0xc378('0x90')](_[_0xc378('0x4c')](_0x1f0aa8),['createdAt',_0xc378('0x91')]);_0x56cdb1=_[_0xc378('0x90')](_[_0xc378('0x4c')](_0x1f0aa8),[_0xc378('0x92'),'updatedAt',_0xc378('0x93'),'ListId']);_0x4db111[_0xc378('0x6e')]={'mapKey':_0xc378('0x94')};if(_0x4db111[_0xc378('0x88')][_0xc378('0x48')]&&_0x4db111['account'][_0xc378('0x48')]==='twilio'){_0x4db111[_0xc378('0x6e')]['from']=_0x154c42['body'][_0xc378('0x95')][_0xc378('0x96')](_0xc378('0x97'),'');_0x4db111[_0xc378('0x6e')][_0xc378('0x6e')]=_0x154c42[_0xc378('0x6e')][_0xc378('0x98')];_0x4db111['body'][_0xc378('0x99')]=_0x154c42[_0xc378('0x6e')][_0xc378('0x9a')];}if(_0x4db111[_0xc378('0x6e')]['id']){delete _0x4db111[_0xc378('0x6e')]['id'];}if(_[_0xc378('0x9b')](_0x4db111['body']['from'])){throw new db[(_0xc378('0x8e'))][(_0xc378('0x9c'))](_0xc378('0x9d'));}if(_[_0xc378('0x9b')](_0x4db111[_0xc378('0x6e')][_0xc378('0x6e')])||_0x4db111[_0xc378('0x6e')][_0xc378('0x6e')]===''){throw new db[(_0xc378('0x8e'))][(_0xc378('0x9c'))](_0xc378('0x9e'));}if(_[_0xc378('0x9b')](_0x4db111[_0xc378('0x6e')][_0xc378('0x9f')])){throw new db[(_0xc378('0x8e'))][(_0xc378('0x9c'))](_0xc378('0xa0')+_0x56cdb1);}if(!_[_0xc378('0xa1')](_0x56cdb1,_0x4db111['body']['mapKey'])){throw new db[(_0xc378('0x8e'))][(_0xc378('0x9c'))](_0xc378('0xa2')+_0x56cdb1);}_0x1df965[_0x4db111[_0xc378('0x6e')]['mapKey']]=_0x4db111[_0xc378('0x6e')][_0xc378('0xa3')];return db[_0xc378('0xa4')]['find']({'where':{'id':_0x4db111['account'][_0xc378('0xa5')]},'include':[{'model':db[_0xc378('0x8d')],'as':_0xc378('0xa6'),'where':_0x1df965,'limit':0x1,'order':[[_0xc378('0x91'),_0xc378('0xa7')]]}]});})[_0xc378('0x25')](handleEntityNotFound(_0x39d359,null))[_0xc378('0x25')](function(_0x128d41){if(_0x128d41){_0x4db111[_0xc378('0xa8')]=_[_0xc378('0x79')](_0x128d41,[_0xc378('0xa6')]);if(_0x128d41[_0xc378('0xa6')]['length']){return _0x128d41['Contacts'][0x0];}var _0x4e68a4=_['defaults'](_0x4db111[_0xc378('0x6e')],{'firstName':_0x4db111['body']['from'],'ListId':_0x128d41['id']});_0x4e68a4[_0x4db111[_0xc378('0x6e')][_0xc378('0x9f')]]=_0x4db111[_0xc378('0x6e')]['from'];return db[_0xc378('0x8d')][_0xc378('0x63')](_0x4e68a4,{'fields':_0x3b3293,'raw':!![]});}})['then'](handleEntityNotFound(_0x39d359,null))['then'](function(_0x47f96d){if(_0x47f96d){_0x4db111[_0xc378('0xa9')]=_0x47f96d;var _0x18df6e={'ContactId':_0x47f96d['id'],'phone':_0x4db111[_0xc378('0x6e')][_0xc378('0xa3')],'WhatsappAccountId':_0x154c42[_0xc378('0x61')]['id']};var _0x363acc={'ContactId':_0x47f96d['id'],'WhatsappAccountId':_0x154c42[_0xc378('0x61')]['id'],'closed':![]};return db[_0xc378('0xaa')][_0xc378('0x62')]({'where':_0x363acc})['then'](function(_0x386a8c){if(_0x386a8c){return[_0x386a8c,![]];}return db['WhatsappInteraction'][_0xc378('0x63')](_0x18df6e)['then'](function(_0x40e340){return[_0x40e340,!![]];});});}})[_0xc378('0x7a')](function(_0x17a667,_0x340368){_0x4db111['interaction']=_0x17a667[_0xc378('0x3b')]({'plain':!![]});_0x4db111[_0xc378('0xab')][_0xc378('0xac')]=![];if(_0x340368){if(_0x4db111[_0xc378('0x88')]['autoclose']){_0x4db111[_0xc378('0x89')][_0xc378('0xad')]({'id':0x0,'priority':_0x4db111[_0xc378('0x89')][_0xc378('0x51')]+0x1,'app':_0xc378('0xae'),'appdata':'unmanaged','interval':'*,*,*,*'});}_0x4db111[_0xc378('0xab')]['created']=!![];}return db[_0xc378('0xaf')]['create']({'phone':_0x4db111[_0xc378('0x6e')][_0xc378('0xa3')],'messageId':_0x4db111[_0xc378('0x6e')][_0xc378('0x99')],'body':_0x4db111[_0xc378('0x6e')][_0xc378('0x6e')],'WhatsappAccountId':_0x154c42[_0xc378('0x61')]['id'],'WhatsappInteractionId':_0x17a667['id'],'direction':'in','ContactId':_0x17a667[_0xc378('0xb0')],'AttachmentId':_0x4db111['body'][_0xc378('0xb1')]});})[_0xc378('0x25')](function(_0x535ac4){_0x4db111['message']=_0x535ac4;if(_0x4db111[_0xc378('0xab')][_0xc378('0xb2')]){return db[_0xc378('0xb3')][_0xc378('0x62')]({'attributes':['id',_0xc378('0x3f')],'where':{'id':_0x4db111['interaction'][_0xc378('0xb2')]}})[_0xc378('0x25')](function(_0x8ee385){if(_0x8ee385){_0x4db111[_0xc378('0x89')]['unshift']({'id':0x0,'priority':0x0,'app':_0xc378('0xb4'),'appdata':_0x8ee385[_0xc378('0x3f')]+','+(_0x4db111[_0xc378('0x88')][_0xc378('0xb5')]||0xa),'interval':_0xc378('0xb6')});}return respondWithRpcPromise('Start',_0xc378('0xb7'),_0x4db111);});}return respondWithRpcPromise(_0xc378('0xb8'),_0xc378('0xb7'),_0x4db111);})['then'](function(_0x3b73ab){if(_0x3b73ab){var _0x5455bd=0xc8;var _0x505e80=_0xc378('0xb9');logger[_0xc378('0x26')]('WhatsappAccount,\x20%s,\x20%s,\x20%s',_0x505e80,_0x5455bd,_0xc378('0xba'));logger[_0xc378('0xbb')](_0xc378('0xbc'),_0x505e80,_0x5455bd,_0xc378('0xba'),JSON['stringify'](_0x3b73ab));if(_0x4db111[_0xc378('0x88')][_0xc378('0x48')]===_0xc378('0xbd')){return _0x39d359[_0xc378('0x30')](_0x5455bd)['set'](_0xc378('0xbe'),_0xc378('0xbf'))[_0xc378('0x40')](_0xc378('0xc0'));}else{return _0x39d359[_0xc378('0x30')](_0x5455bd)[_0xc378('0x37')](_0x3b73ab);}}})[_0xc378('0x69')](handleError(_0x39d359,null));};exports[_0xc378('0x40')]=function(_0x567206,_0x5519ba,_0x1e8ef4){var _0x562df9,_0xea49d1,_0x428272;if(_[_0xc378('0x9b')](_0x567206[_0xc378('0x6e')][_0xc378('0x6e')])||_0x567206[_0xc378('0x6e')][_0xc378('0x6e')]===''){throw new db[(_0xc378('0x8e'))][(_0xc378('0x9c'))](_0xc378('0x9e'));}if(_[_0xc378('0x9b')](_0x567206[_0xc378('0x6e')]['to'])){throw new db[(_0xc378('0x8e'))][(_0xc378('0x9c'))](_0xc378('0xc1'));}_0x562df9=_0x567206[_0xc378('0x6e')]['to'];return db[_0xc378('0x45')]['find']({'where':{'id':_0x567206[_0xc378('0x61')]['id']},'include':[{'model':db[_0xc378('0xa4')],'as':_0xc378('0xc2'),'include':[{'model':db[_0xc378('0x8d')],'as':_0xc378('0xa6'),'where':{'mobile':_0x562df9},'limit':0x1,'order':[[_0xc378('0x91'),'DESC']]}]}]})[_0xc378('0x25')](handleEntityNotFound(_0x5519ba,null))[_0xc378('0x25')](function(_0x3f9683){if(_0x3f9683&&_0x3f9683[_0xc378('0xc2')]){_0xea49d1=_0x3f9683[_0xc378('0x3b')]({'plain':!![]});if(_0xea49d1[_0xc378('0xc2')]&&_0xea49d1['List'][_0xc378('0xa6')][_0xc378('0x51')]){return _0xea49d1[_0xc378('0xc2')][_0xc378('0xa6')][0x0];}return db[_0xc378('0x8d')][_0xc378('0x63')](_[_0xc378('0x1e')](_0x567206[_0xc378('0x6e')],{'firstName':_0x562df9,'mobile':_0x562df9,'phone':_0x562df9,'ListId':_0xea49d1[_0xc378('0xa5')]}));}})[_0xc378('0x25')](handleEntityNotFound(_0x5519ba,null))[_0xc378('0x25')](function(_0x3ec46f){if(_0x3ec46f){_0x428272=_0x3ec46f;return db[_0xc378('0xaa')][_0xc378('0x62')]({'where':{'ContactId':_0x428272['id'],'closed':![],'WhatsappAccountId':_0xea49d1['id']}})[_0xc378('0x25')](function(_0x518a61){if(_0x518a61){return[_0x518a61,![]];}return db['WhatsappInteraction'][_0xc378('0x63')]({'UserId':_0x567206['user']['id'],'ContactId':_0x428272['id'],'WhatsappAccountId':_0xea49d1['id'],'phone':_0x562df9,'firstMsgDirection':'out','Messages':[_[_0xc378('0x59')](_0x567206[_0xc378('0x6e')],{'read':![],'body':_0x567206[_0xc378('0x6e')][_0xc378('0x6e')],'phone':_0x562df9,'WhatsappAccountId':_0xea49d1['id'],'UserId':_0x567206['user']['id'],'ContactId':_0x428272['id']})]},{'include':[{'model':db['WhatsappMessage'],'as':'Messages'}]})['then'](function(_0x77561b){return[_0x77561b,!![]];});});}})[_0xc378('0x7a')](function(_0x4a3cf7,_0x376f16){if(_0x376f16){return _0x4a3cf7;}return db[_0xc378('0xaf')][_0xc378('0x63')](_['merge'](_0x567206[_0xc378('0x6e')],{'read':![],'body':_0x567206[_0xc378('0x6e')][_0xc378('0x6e')],'phone':_0x562df9,'WhatsappAccountId':_0xea49d1['id'],'WhatsappInteractionId':_0x4a3cf7['id'],'UserId':_0x567206['user']['id'],'ContactId':_0x428272['id']}))['then'](function(_0x224eb5){_0x4a3cf7[_0xc378('0xc3')][_0xc378('0xc4')]=[];_0x4a3cf7[_0xc378('0xc3')]['Messages'][_0xc378('0xad')](_0x224eb5[_0xc378('0xc3')]);return _0x4a3cf7;});})['then'](respondWithResult(_0x5519ba,null))[_0xc378('0x69')](handleError(_0x5519ba,null));};
\ No newline at end of file
+var _0xe509=['stringify','Content-Type','text/xml','<?xml\x20version=\x221.0\x22\x20encoding=\x22UTF-8\x22?>\x0a<Response></Response>','to\x20is\x20mandatory','List','out','Messages','dataValues','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','mustache','util','path','ejs','lodash','squel','jsforce','desk.js','papaparse','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../mysqldb','redis','localhost','socket.io-emitter','./whatsappAccount.socket','jayson/promise','client','http','info','WhatsappAccount,\x20%s,\x20%s','debug','WhatsappAccount,\x20%s,\x20%s,\x20%s','request\x20sent','error','message','result','catch','sendStatus','status','end','json','offset','undefined','limit','count','set','Content-Range','apply','reject','save','update','then','get','WhatsappAccounts','UserProfileResource','destroy','stack','name','send','index','Pause','map','WhatsappAccount','key','model','query','keys','intersection','fields','attributes','length','hasOwnProperty','order','sort','where','pick','filters','type','VIRTUAL','filter','merge','options','includeAll','include','rows','params','mandatoryDispositionPause','rawAttributes','find','create','user','role','UserProfileSection','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','body','describe','addDisposition','WhatsappAccountId','Disposition','getDispositions','findOne','findAll','removeDispositions','ids','addAnswer','CannedAnswer','getAnswers','nolimit','removeAnswers','addAgents','removeAgents','userWhatsappAccount:remove','emit','getAgents','addApplications','sequelize','transaction','bulkCreate','WhatsappApplication','findAndCountAll','priority','getApplications','notify','whatsapp','Applications','account','applications','asc','Sequelize','ValidationError','difference','createdAt','updatedAt','CompanyId','mobile','twilio','from','From','replace','whatsapp:','Body','isNil','from\x20is\x20mandatory','body\x20is\x20mandatory\x20and\x20not\x20empty','mapKey','mapKey\x20is\x20mandatory,\x20please\x20use\x20one\x20of\x20these:\x20','includes','CmList','ListId','CmContact','Contacts','DESC','list','defaults','contact','WhatsappInteraction','interaction','autoclose','push','close','unmanaged','*,*,*,*','WhatsappMessage','ContactId','AttachmentId','UserId','User','unshift','waitForTheAssignedAgent','Start','startRouting','entity\x20found'];(function(_0xecc333,_0x3333f0){var _0x5ef316=function(_0x36b3e3){while(--_0x36b3e3){_0xecc333['push'](_0xecc333['shift']());}};_0x5ef316(++_0x3333f0);}(_0xe509,0xc0));var _0x9e50=function(_0x50f392,_0x1d8441){_0x50f392=_0x50f392-0x0;var _0x5926f2=_0xe509[_0x50f392];return _0x5926f2;};'use strict';var emlformat=require(_0x9e50('0x0'));var rimraf=require(_0x9e50('0x1'));var zipdir=require(_0x9e50('0x2'));var jsonpatch=require(_0x9e50('0x3'));var rp=require(_0x9e50('0x4'));var moment=require(_0x9e50('0x5'));var BPromise=require('bluebird');var Mustache=require(_0x9e50('0x6'));var util=require(_0x9e50('0x7'));var path=require(_0x9e50('0x8'));var sox=require('sox');var csv=require('to-csv');var ejs=require(_0x9e50('0x9'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x9e50('0xa'));var squel=require(_0x9e50('0xb'));var crypto=require('crypto');var jsforce=require(_0x9e50('0xc'));var deskjs=require(_0x9e50('0xd'));var toCsv=require('to-csv');var querystring=require('querystring');var Papa=require(_0x9e50('0xe'));var Redis=require('ioredis');var authService=require('../../components/auth/service');var qs=require('../../components/parsers/qs');var as=require(_0x9e50('0xf'));var hardwareService=require(_0x9e50('0x10'));var logger=require(_0x9e50('0x11'))(_0x9e50('0x12'));var utils=require(_0x9e50('0x13'));var config=require(_0x9e50('0x14'));var licenseUtil=require('../../config/license/util');var db=require(_0x9e50('0x15'))['db'];config[_0x9e50('0x16')]=_['defaults'](config[_0x9e50('0x16')],{'host':_0x9e50('0x17'),'port':0x18eb});var socket=require(_0x9e50('0x18'))(new Redis(config[_0x9e50('0x16')]));require(_0x9e50('0x19'))['register'](socket);var jayson=require(_0x9e50('0x1a'));var client=jayson[_0x9e50('0x1b')][_0x9e50('0x1c')]({'port':0x232c});function respondWithRpcPromise(_0x5cab26,_0x401028,_0x5b504d,_0x2d2685){return new BPromise(function(_0x28c007,_0x59d0dc){var _0x52f338=_0x2d2685||client;return _0x52f338['request'](_0x5cab26,_0x5b504d)['then'](function(_0xb8bd74){logger[_0x9e50('0x1d')](_0x9e50('0x1e'),_0x401028,'request\x20sent');logger[_0x9e50('0x1f')](_0x9e50('0x20'),_0x401028,_0x9e50('0x21'),JSON['stringify'](_0xb8bd74));if(_0xb8bd74[_0x9e50('0x22')]){if(_0xb8bd74[_0x9e50('0x22')]['code']===0x1f4){logger[_0x9e50('0x22')](_0x9e50('0x1e'),_0x401028,_0xb8bd74[_0x9e50('0x22')][_0x9e50('0x23')]);return _0x59d0dc(_0xb8bd74['error']['message']);}logger['error']('WhatsappAccount,\x20%s,\x20%s',_0x401028,_0xb8bd74['error']['message']);return _0x28c007(_0xb8bd74[_0x9e50('0x22')][_0x9e50('0x23')]);}else{logger[_0x9e50('0x1d')](_0x9e50('0x1e'),_0x401028,_0x9e50('0x21'));_0x28c007(_0xb8bd74[_0x9e50('0x24')]['message']);}})[_0x9e50('0x25')](function(_0x2d7e44){logger[_0x9e50('0x22')](_0x9e50('0x1e'),_0x401028,_0x2d7e44);_0x59d0dc(_0x2d7e44);});});}function respondWithStatusCode(_0x58730c,_0x333a5f){_0x333a5f=_0x333a5f||0xcc;return function(_0x51957b){if(_0x51957b){return _0x58730c[_0x9e50('0x26')](_0x333a5f);}return _0x58730c[_0x9e50('0x27')](_0x333a5f)[_0x9e50('0x28')]();};}function respondWithResult(_0x26fdc8,_0x4759ab){_0x4759ab=_0x4759ab||0xc8;return function(_0x3fc487){if(_0x3fc487){return _0x26fdc8[_0x9e50('0x27')](_0x4759ab)[_0x9e50('0x29')](_0x3fc487);}};}function respondWithFilteredResult(_0x6c095a,_0x434fad){return function(_0x5df340){if(_0x5df340){var _0xd1b869=typeof _0x434fad[_0x9e50('0x2a')]===_0x9e50('0x2b')&&typeof _0x434fad[_0x9e50('0x2c')]===_0x9e50('0x2b');var _0x2c18a8=_0x5df340[_0x9e50('0x2d')];var _0x119ec3=_0xd1b869?0x0:_0x434fad[_0x9e50('0x2a')];var _0x40d4b6=_0xd1b869?_0x5df340[_0x9e50('0x2d')]:_0x434fad[_0x9e50('0x2a')]+_0x434fad[_0x9e50('0x2c')];var _0xc07766;if(_0x40d4b6>=_0x2c18a8){_0x40d4b6=_0x2c18a8;_0xc07766=0xc8;}else{_0xc07766=0xce;}_0x6c095a[_0x9e50('0x27')](_0xc07766);return _0x6c095a[_0x9e50('0x2e')](_0x9e50('0x2f'),_0x119ec3+'-'+_0x40d4b6+'/'+_0x2c18a8)[_0x9e50('0x29')](_0x5df340);}return null;};}function patchUpdates(_0x18bf0b){return function(_0x2f8c70){try{jsonpatch[_0x9e50('0x30')](_0x2f8c70,_0x18bf0b,!![]);}catch(_0xa46379){return BPromise[_0x9e50('0x31')](_0xa46379);}return _0x2f8c70[_0x9e50('0x32')]();};}function saveUpdates(_0x7c4e2f,_0x34af53){return function(_0x1ed9d0){if(_0x1ed9d0){return _0x1ed9d0[_0x9e50('0x33')](_0x7c4e2f)[_0x9e50('0x34')](function(_0x5bfa26){return _0x5bfa26;});}return null;};}function removeEntity(_0x4ab1de,_0x5a0f5c){return function(_0x2adb33){if(_0x2adb33){return _0x2adb33['destroy']()[_0x9e50('0x34')](function(){var _0x9ec78b=_0x2adb33[_0x9e50('0x35')]({'plain':!![]});var _0x9a4806=_0x9e50('0x36');return db[_0x9e50('0x37')][_0x9e50('0x38')]({'where':{'type':_0x9a4806,'resourceId':_0x9ec78b['id']}})[_0x9e50('0x34')](function(){return _0x2adb33;});})['then'](function(){_0x4ab1de['status'](0xcc)[_0x9e50('0x28')]();});}};}function handleEntityNotFound(_0x24d584,_0x34a600){return function(_0x2c3f24){if(!_0x2c3f24){_0x24d584[_0x9e50('0x26')](0x194);}return _0x2c3f24;};}function handleError(_0x35c486,_0x26935e){_0x26935e=_0x26935e||0x1f4;return function(_0x4eff52){logger['error'](_0x4eff52[_0x9e50('0x39')]);if(_0x4eff52[_0x9e50('0x3a')]){delete _0x4eff52[_0x9e50('0x3a')];}_0x35c486[_0x9e50('0x27')](_0x26935e)[_0x9e50('0x3b')](_0x4eff52);};}exports[_0x9e50('0x3c')]=function(_0x50f904,_0x45cd51){var _0x166652={'include':[{'model':db[_0x9e50('0x3d')],'as':'mandatoryDispositionPause'}]},_0x24aed5={},_0x4f7758={'count':0x0,'rows':[]};var _0x24f40d=_[_0x9e50('0x3e')](db[_0x9e50('0x3f')]['rawAttributes'],function(_0x13bb97){return{'name':_0x13bb97['fieldName'],'type':_0x13bb97['type'][_0x9e50('0x40')]};});_0x24aed5[_0x9e50('0x41')]=_[_0x9e50('0x3e')](_0x24f40d,_0x9e50('0x3a'));_0x24aed5[_0x9e50('0x42')]=_[_0x9e50('0x43')](_0x50f904[_0x9e50('0x42')]);_0x24aed5['filters']=_[_0x9e50('0x44')](_0x24aed5[_0x9e50('0x41')],_0x24aed5[_0x9e50('0x42')]);_0x166652['attributes']=_['intersection'](_0x24aed5[_0x9e50('0x41')],qs[_0x9e50('0x45')](_0x50f904[_0x9e50('0x42')]['fields']));_0x166652[_0x9e50('0x46')]=_0x166652['attributes'][_0x9e50('0x47')]?_0x166652['attributes']:_0x24aed5[_0x9e50('0x41')];if(!_0x50f904[_0x9e50('0x42')][_0x9e50('0x48')]('nolimit')){_0x166652['limit']=qs['limit'](_0x50f904[_0x9e50('0x42')][_0x9e50('0x2c')]);_0x166652[_0x9e50('0x2a')]=qs[_0x9e50('0x2a')](_0x50f904[_0x9e50('0x42')]['offset']);}_0x166652[_0x9e50('0x49')]=qs[_0x9e50('0x4a')](_0x50f904[_0x9e50('0x42')]['sort']);_0x166652[_0x9e50('0x4b')]=qs['filters'](_[_0x9e50('0x4c')](_0x50f904['query'],_0x24aed5[_0x9e50('0x4d')]),_0x24f40d);if(_0x50f904[_0x9e50('0x42')]['filter']){_0x166652[_0x9e50('0x4b')]=_['merge'](_0x166652['where'],{'$or':_['map'](_0x24f40d,function(_0x3fe9ab){if(_0x3fe9ab[_0x9e50('0x4e')]!==_0x9e50('0x4f')){var _0x3722aa={};_0x3722aa[_0x3fe9ab[_0x9e50('0x3a')]]={'$like':'%'+_0x50f904[_0x9e50('0x42')][_0x9e50('0x50')]+'%'};return _0x3722aa;}})});}_0x166652=_[_0x9e50('0x51')]({},_0x166652,_0x50f904[_0x9e50('0x52')]);var _0x395533={'where':_0x166652[_0x9e50('0x4b')]};return db[_0x9e50('0x3f')][_0x9e50('0x2d')](_0x395533)['then'](function(_0x143df7){_0x4f7758[_0x9e50('0x2d')]=_0x143df7;if(_0x50f904[_0x9e50('0x42')][_0x9e50('0x53')]){_0x166652[_0x9e50('0x54')]=[{'all':!![]}];}return db[_0x9e50('0x3f')]['findAll'](_0x166652);})[_0x9e50('0x34')](function(_0x542005){_0x4f7758[_0x9e50('0x55')]=_0x542005;return _0x4f7758;})[_0x9e50('0x34')](respondWithFilteredResult(_0x45cd51,_0x166652))[_0x9e50('0x25')](handleError(_0x45cd51,null));};exports['show']=function(_0xe99c88,_0x171d49){var _0x2a0871={'raw':![],'where':{'id':_0xe99c88[_0x9e50('0x56')]['id']},'include':[{'model':db[_0x9e50('0x3d')],'as':_0x9e50('0x57')}]},_0x4703e1={};_0x4703e1[_0x9e50('0x41')]=_[_0x9e50('0x43')](db[_0x9e50('0x3f')][_0x9e50('0x58')]);_0x4703e1[_0x9e50('0x42')]=_[_0x9e50('0x43')](_0xe99c88[_0x9e50('0x42')]);_0x4703e1['filters']=_['intersection'](_0x4703e1[_0x9e50('0x41')],_0x4703e1[_0x9e50('0x42')]);_0x2a0871[_0x9e50('0x46')]=_[_0x9e50('0x44')](_0x4703e1['model'],qs[_0x9e50('0x45')](_0xe99c88[_0x9e50('0x42')][_0x9e50('0x45')]));_0x2a0871[_0x9e50('0x46')]=_0x2a0871[_0x9e50('0x46')]['length']?_0x2a0871[_0x9e50('0x46')]:_0x4703e1[_0x9e50('0x41')];if(_0xe99c88[_0x9e50('0x42')]['includeAll']){_0x2a0871[_0x9e50('0x54')]=[{'all':!![]}];}_0x2a0871=_[_0x9e50('0x51')]({},_0x2a0871,_0xe99c88[_0x9e50('0x52')]);return db[_0x9e50('0x3f')][_0x9e50('0x59')](_0x2a0871)[_0x9e50('0x34')](handleEntityNotFound(_0x171d49,null))[_0x9e50('0x34')](respondWithResult(_0x171d49,null))[_0x9e50('0x25')](handleError(_0x171d49,null));};exports[_0x9e50('0x5a')]=function(_0x261273,_0x45d280){return db[_0x9e50('0x3f')]['create'](_0x261273['body'],{})[_0x9e50('0x34')](function(_0x551d00){var _0x58d77f=_0x261273[_0x9e50('0x5b')][_0x9e50('0x35')]({'plain':!![]});if(!_0x58d77f)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0x58d77f[_0x9e50('0x5c')]==='user'){var _0x14548a=_0x551d00[_0x9e50('0x35')]({'plain':!![]});var _0x2f0b9e=_0x9e50('0x36');return db[_0x9e50('0x5d')][_0x9e50('0x59')]({'where':{'name':_0x2f0b9e,'userProfileId':_0x58d77f['userProfileId']},'raw':!![]})['then'](function(_0x1ea9a2){if(_0x1ea9a2&&_0x1ea9a2[_0x9e50('0x5e')]===0x0){return db[_0x9e50('0x37')][_0x9e50('0x5a')]({'name':_0x14548a['name'],'resourceId':_0x14548a['id'],'type':_0x1ea9a2[_0x9e50('0x3a')],'sectionId':_0x1ea9a2['id']},{})[_0x9e50('0x34')](function(){return _0x551d00;});}else{return _0x551d00;}})['catch'](function(_0x4caf17){logger['error'](_0x9e50('0x5f'),_0x4caf17);throw _0x4caf17;});}return _0x551d00;})[_0x9e50('0x34')](respondWithResult(_0x45d280,0xc9))[_0x9e50('0x25')](handleError(_0x45d280,null));};exports[_0x9e50('0x33')]=function(_0x51c558,_0x17ed42){if(_0x51c558[_0x9e50('0x60')]['id']){delete _0x51c558['body']['id'];}return db['WhatsappAccount'][_0x9e50('0x59')]({'where':{'id':_0x51c558[_0x9e50('0x56')]['id']},'include':[{'model':db['Pause'],'as':'mandatoryDispositionPause'}]})[_0x9e50('0x34')](handleEntityNotFound(_0x17ed42,null))[_0x9e50('0x34')](saveUpdates(_0x51c558[_0x9e50('0x60')],null))['then'](respondWithResult(_0x17ed42,null))[_0x9e50('0x25')](handleError(_0x17ed42,null));};exports[_0x9e50('0x38')]=function(_0x2f032f,_0x360a9e){return db[_0x9e50('0x3f')][_0x9e50('0x59')]({'where':{'id':_0x2f032f[_0x9e50('0x56')]['id']}})['then'](handleEntityNotFound(_0x360a9e,null))['then'](removeEntity(_0x360a9e,null))['catch'](handleError(_0x360a9e,null));};exports['describe']=function(_0x1fcbef,_0x2b2e57){return db[_0x9e50('0x3f')][_0x9e50('0x61')]()['then'](respondWithResult(_0x2b2e57,null))[_0x9e50('0x25')](handleError(_0x2b2e57,null));};exports[_0x9e50('0x62')]=function(_0x242d1e,_0x5ee7da,_0x1466bd){if(_0x242d1e[_0x9e50('0x60')]['id']){delete _0x242d1e[_0x9e50('0x60')]['id'];}return db[_0x9e50('0x3f')]['find']({'where':{'id':_0x242d1e[_0x9e50('0x56')]['id']}})['then'](handleEntityNotFound(_0x5ee7da,null))['then'](function(_0x54d2ca){if(_0x54d2ca){_0x242d1e[_0x9e50('0x60')][_0x9e50('0x63')]=_0x54d2ca['id'];return db[_0x9e50('0x64')][_0x9e50('0x5a')](_0x242d1e[_0x9e50('0x60')]);}})[_0x9e50('0x34')](respondWithResult(_0x5ee7da,null))['catch'](handleError(_0x5ee7da,null));};exports[_0x9e50('0x65')]=function(_0x3507ef,_0x429b6e,_0x83160a){var _0x4cd783={'raw':![],'where':{}};var _0x44fba5={};var _0x37ecc9={'count':0x0,'rows':[]};return db[_0x9e50('0x3f')][_0x9e50('0x66')]({'where':{'id':_0x3507ef[_0x9e50('0x56')]['id']}})[_0x9e50('0x34')](handleEntityNotFound(_0x429b6e,null))[_0x9e50('0x34')](function(_0x174bc9){if(_0x174bc9){_0x44fba5[_0x9e50('0x41')]=_['keys'](db[_0x9e50('0x64')][_0x9e50('0x58')]);_0x44fba5[_0x9e50('0x42')]=_[_0x9e50('0x43')](_0x3507ef[_0x9e50('0x42')]);_0x44fba5[_0x9e50('0x4d')]=_[_0x9e50('0x44')](_0x44fba5[_0x9e50('0x41')],_0x44fba5['query']);_0x4cd783['attributes']=_[_0x9e50('0x44')](_0x44fba5[_0x9e50('0x41')],qs[_0x9e50('0x45')](_0x3507ef[_0x9e50('0x42')][_0x9e50('0x45')]));_0x4cd783[_0x9e50('0x46')]=_0x4cd783[_0x9e50('0x46')][_0x9e50('0x47')]?_0x4cd783[_0x9e50('0x46')]:_0x44fba5[_0x9e50('0x41')];if(!_0x3507ef[_0x9e50('0x42')][_0x9e50('0x48')]('nolimit')){_0x4cd783['limit']=qs[_0x9e50('0x2c')](_0x3507ef[_0x9e50('0x42')][_0x9e50('0x2c')]);_0x4cd783[_0x9e50('0x2a')]=qs[_0x9e50('0x2a')](_0x3507ef[_0x9e50('0x42')]['offset']);}_0x4cd783[_0x9e50('0x49')]=qs['sort'](_0x3507ef[_0x9e50('0x42')]['sort']);_0x4cd783[_0x9e50('0x4b')]=qs['filters'](_[_0x9e50('0x4c')](_0x3507ef[_0x9e50('0x42')],_0x44fba5[_0x9e50('0x4d')]));_0x4cd783[_0x9e50('0x4b')][_0x9e50('0x63')]=_0x174bc9['id'];if(_0x3507ef[_0x9e50('0x42')][_0x9e50('0x50')]){_0x4cd783['where']=_[_0x9e50('0x51')](_0x4cd783['where'],{'$or':_['map'](_0x4cd783[_0x9e50('0x46')],function(_0xf01549){var _0x3b7f45={};_0x3b7f45[_0xf01549]={'$like':'%'+_0x3507ef[_0x9e50('0x42')]['filter']+'%'};return _0x3b7f45;})});}_0x4cd783=_[_0x9e50('0x51')]({},_0x4cd783,_0x3507ef['options']);return db[_0x9e50('0x64')]['count']({'where':_0x4cd783[_0x9e50('0x4b')]})['then'](function(_0x847944){_0x37ecc9[_0x9e50('0x2d')]=_0x847944;if(_0x3507ef[_0x9e50('0x42')][_0x9e50('0x53')]){_0x4cd783[_0x9e50('0x54')]=[{'all':!![]}];}return db['Disposition'][_0x9e50('0x67')](_0x4cd783);})[_0x9e50('0x34')](function(_0x49455f){_0x37ecc9[_0x9e50('0x55')]=_0x49455f;return _0x37ecc9;});}})['then'](respondWithFilteredResult(_0x429b6e,_0x4cd783))[_0x9e50('0x25')](handleError(_0x429b6e,null));};exports[_0x9e50('0x68')]=function(_0x37a999,_0x4bd106,_0x35c73b){return db[_0x9e50('0x3f')][_0x9e50('0x59')]({'where':{'id':_0x37a999[_0x9e50('0x56')]['id']}})[_0x9e50('0x34')](handleEntityNotFound(_0x4bd106,null))['then'](function(_0x4d019a){if(_0x4d019a){return _0x4d019a[_0x9e50('0x68')](_0x37a999[_0x9e50('0x42')][_0x9e50('0x69')]);}})[_0x9e50('0x34')](respondWithStatusCode(_0x4bd106,null))[_0x9e50('0x25')](handleError(_0x4bd106,null));};exports[_0x9e50('0x6a')]=function(_0x5a0114,_0x24d70d,_0x846fa5){if(_0x5a0114[_0x9e50('0x60')]['id']){delete _0x5a0114['body']['id'];}return db[_0x9e50('0x3f')][_0x9e50('0x59')]({'where':{'id':_0x5a0114[_0x9e50('0x56')]['id']}})[_0x9e50('0x34')](handleEntityNotFound(_0x24d70d,null))[_0x9e50('0x34')](function(_0x53cadb){if(_0x53cadb){_0x5a0114[_0x9e50('0x60')][_0x9e50('0x63')]=_0x53cadb['id'];return db[_0x9e50('0x6b')]['create'](_0x5a0114[_0x9e50('0x60')]);}})[_0x9e50('0x34')](respondWithResult(_0x24d70d,null))[_0x9e50('0x25')](handleError(_0x24d70d,null));};exports[_0x9e50('0x6c')]=function(_0x4d8e6b,_0x4afab5,_0x102574){var _0x179b58={'raw':![],'where':{}};var _0x158622={};var _0x3499e0={'count':0x0,'rows':[]};return db[_0x9e50('0x3f')][_0x9e50('0x66')]({'where':{'id':_0x4d8e6b[_0x9e50('0x56')]['id']}})[_0x9e50('0x34')](handleEntityNotFound(_0x4afab5,null))[_0x9e50('0x34')](function(_0xb25eab){if(_0xb25eab){_0x158622[_0x9e50('0x41')]=_[_0x9e50('0x43')](db[_0x9e50('0x6b')]['rawAttributes']);_0x158622['query']=_[_0x9e50('0x43')](_0x4d8e6b[_0x9e50('0x42')]);_0x158622[_0x9e50('0x4d')]=_[_0x9e50('0x44')](_0x158622[_0x9e50('0x41')],_0x158622[_0x9e50('0x42')]);_0x179b58[_0x9e50('0x46')]=_[_0x9e50('0x44')](_0x158622['model'],qs['fields'](_0x4d8e6b[_0x9e50('0x42')][_0x9e50('0x45')]));_0x179b58[_0x9e50('0x46')]=_0x179b58[_0x9e50('0x46')][_0x9e50('0x47')]?_0x179b58['attributes']:_0x158622[_0x9e50('0x41')];if(!_0x4d8e6b['query'][_0x9e50('0x48')](_0x9e50('0x6d'))){_0x179b58[_0x9e50('0x2c')]=qs['limit'](_0x4d8e6b[_0x9e50('0x42')][_0x9e50('0x2c')]);_0x179b58[_0x9e50('0x2a')]=qs[_0x9e50('0x2a')](_0x4d8e6b[_0x9e50('0x42')][_0x9e50('0x2a')]);}_0x179b58[_0x9e50('0x49')]=qs[_0x9e50('0x4a')](_0x4d8e6b[_0x9e50('0x42')][_0x9e50('0x4a')]);_0x179b58[_0x9e50('0x4b')]=qs[_0x9e50('0x4d')](_['pick'](_0x4d8e6b['query'],_0x158622[_0x9e50('0x4d')]));_0x179b58['where'][_0x9e50('0x63')]=_0xb25eab['id'];if(_0x4d8e6b[_0x9e50('0x42')][_0x9e50('0x50')]){_0x179b58[_0x9e50('0x4b')]=_['merge'](_0x179b58[_0x9e50('0x4b')],{'$or':_[_0x9e50('0x3e')](_0x179b58[_0x9e50('0x46')],function(_0x2af386){var _0x512a53={};_0x512a53[_0x2af386]={'$like':'%'+_0x4d8e6b['query']['filter']+'%'};return _0x512a53;})});}_0x179b58=_[_0x9e50('0x51')]({},_0x179b58,_0x4d8e6b[_0x9e50('0x52')]);return db[_0x9e50('0x6b')][_0x9e50('0x2d')]({'where':_0x179b58[_0x9e50('0x4b')]})['then'](function(_0x140b9c){_0x3499e0[_0x9e50('0x2d')]=_0x140b9c;if(_0x4d8e6b[_0x9e50('0x42')][_0x9e50('0x53')]){_0x179b58[_0x9e50('0x54')]=[{'all':!![]}];}return db[_0x9e50('0x6b')][_0x9e50('0x67')](_0x179b58);})[_0x9e50('0x34')](function(_0x6343db){_0x3499e0[_0x9e50('0x55')]=_0x6343db;return _0x3499e0;});}})['then'](respondWithFilteredResult(_0x4afab5,_0x179b58))[_0x9e50('0x25')](handleError(_0x4afab5,null));};exports[_0x9e50('0x6e')]=function(_0x2faf2f,_0x4fcfbb,_0xa28ee3){return db['WhatsappAccount']['find']({'where':{'id':_0x2faf2f[_0x9e50('0x56')]['id']}})[_0x9e50('0x34')](handleEntityNotFound(_0x4fcfbb,null))[_0x9e50('0x34')](function(_0x39d316){if(_0x39d316){return _0x39d316[_0x9e50('0x6e')](_0x2faf2f[_0x9e50('0x42')][_0x9e50('0x69')]);}})['then'](respondWithStatusCode(_0x4fcfbb,null))[_0x9e50('0x25')](handleError(_0x4fcfbb,null));};exports[_0x9e50('0x6f')]=function(_0x29dd7b,_0x46e7c3,_0x3c0dda){return db['WhatsappAccount'][_0x9e50('0x59')]({'where':{'id':_0x29dd7b[_0x9e50('0x56')]['id']}})[_0x9e50('0x34')](handleEntityNotFound(_0x46e7c3,null))[_0x9e50('0x34')](function(_0x4b8af0){if(_0x4b8af0){return _0x4b8af0['addAgents'](_0x29dd7b[_0x9e50('0x60')][_0x9e50('0x69')],_['omit'](_0x29dd7b['body'],[_0x9e50('0x69'),'id'])||{})['spread'](function(_0x2c341f){for(var _0x40e7ba=0x0;_0x40e7ba<_0x29dd7b[_0x9e50('0x60')][_0x9e50('0x69')]['length'];_0x40e7ba+=0x1){socket['emit']('userWhatsappAccount:save',{'UserId':Number(_0x29dd7b[_0x9e50('0x60')][_0x9e50('0x69')][_0x40e7ba]),'WhatsappAccountId':Number(_0x29dd7b['params']['id'])});}return _0x2c341f;});}})[_0x9e50('0x34')](respondWithResult(_0x46e7c3,null))[_0x9e50('0x25')](handleError(_0x46e7c3,null));};exports['removeAgents']=function(_0x2cc37d,_0x35c2fd,_0xe64f87){return db[_0x9e50('0x3f')][_0x9e50('0x59')]({'where':{'id':_0x2cc37d[_0x9e50('0x56')]['id']}})['then'](handleEntityNotFound(_0x35c2fd,null))['then'](function(_0x3294d3){if(_0x3294d3){return _0x3294d3[_0x9e50('0x70')](_0x2cc37d[_0x9e50('0x42')][_0x9e50('0x69')])['then'](function(){if(_['isArray'](_0x2cc37d[_0x9e50('0x42')][_0x9e50('0x69')])){for(var _0x263d85=0x0;_0x263d85<_0x2cc37d[_0x9e50('0x42')][_0x9e50('0x69')][_0x9e50('0x47')];_0x263d85+=0x1){socket['emit'](_0x9e50('0x71'),{'UserId':Number(_0x2cc37d[_0x9e50('0x42')][_0x9e50('0x69')][_0x263d85]),'WhatsappAccountId':Number(_0x2cc37d[_0x9e50('0x56')]['id'])});}}else{socket[_0x9e50('0x72')](_0x9e50('0x71'),{'UserId':Number(_0x2cc37d[_0x9e50('0x42')][_0x9e50('0x69')]),'WhatsappAccountId':Number(_0x2cc37d['params']['id'])});}});}})['then'](respondWithStatusCode(_0x35c2fd,null))[_0x9e50('0x25')](handleError(_0x35c2fd,null));};exports[_0x9e50('0x73')]=function(_0x40fc39,_0x3c0d51,_0x39538f){var _0x1683a0={};var _0x1b91bf={};var _0x96b267;var _0xfbd3d7;return db[_0x9e50('0x3f')][_0x9e50('0x66')]({'where':{'id':_0x40fc39[_0x9e50('0x56')]['id']}})[_0x9e50('0x34')](handleEntityNotFound(_0x3c0d51,null))[_0x9e50('0x34')](function(_0x48e775){if(_0x48e775){_0x96b267=_0x48e775;_0x1b91bf[_0x9e50('0x41')]=_[_0x9e50('0x43')](db['User'][_0x9e50('0x58')]);_0x1b91bf[_0x9e50('0x42')]=_[_0x9e50('0x43')](_0x40fc39[_0x9e50('0x42')]);_0x1b91bf[_0x9e50('0x4d')]=_[_0x9e50('0x44')](_0x1b91bf['model'],_0x1b91bf[_0x9e50('0x42')]);_0x1683a0[_0x9e50('0x46')]=_['intersection'](_0x1b91bf[_0x9e50('0x41')],qs[_0x9e50('0x45')](_0x40fc39[_0x9e50('0x42')][_0x9e50('0x45')]));_0x1683a0[_0x9e50('0x46')]=_0x1683a0[_0x9e50('0x46')]['length']?_0x1683a0[_0x9e50('0x46')]:_0x1b91bf[_0x9e50('0x41')];_0x1683a0['order']=qs[_0x9e50('0x4a')](_0x40fc39[_0x9e50('0x42')][_0x9e50('0x4a')]);_0x1683a0[_0x9e50('0x4b')]=qs[_0x9e50('0x4d')](_[_0x9e50('0x4c')](_0x40fc39[_0x9e50('0x42')],_0x1b91bf[_0x9e50('0x4d')]));if(_0x40fc39[_0x9e50('0x42')][_0x9e50('0x50')]){_0x1683a0['where']=_[_0x9e50('0x51')](_0x1683a0[_0x9e50('0x4b')],{'$or':_['map'](_0x1683a0[_0x9e50('0x46')],function(_0x273fe8){var _0x41fc7f={};_0x41fc7f[_0x273fe8]={'$like':'%'+_0x40fc39[_0x9e50('0x42')][_0x9e50('0x50')]+'%'};return _0x41fc7f;})});}_0x1683a0=_[_0x9e50('0x51')]({},_0x1683a0,_0x40fc39[_0x9e50('0x52')]);return _0x96b267['getAgents'](_0x1683a0);}})[_0x9e50('0x34')](function(_0x5c1d9d){if(_0x5c1d9d){_0xfbd3d7=_0x5c1d9d['length'];if(!_0x40fc39[_0x9e50('0x42')][_0x9e50('0x48')](_0x9e50('0x6d'))){_0x1683a0[_0x9e50('0x2c')]=qs['limit'](_0x40fc39[_0x9e50('0x42')][_0x9e50('0x2c')]);_0x1683a0[_0x9e50('0x2a')]=qs['offset'](_0x40fc39[_0x9e50('0x42')][_0x9e50('0x2a')]);}return _0x96b267[_0x9e50('0x73')](_0x1683a0);}})[_0x9e50('0x34')](function(_0x470cd6){if(_0x470cd6){return _0x470cd6?{'count':_0xfbd3d7,'rows':_0x470cd6}:null;}})[_0x9e50('0x34')](respondWithResult(_0x3c0d51,null))[_0x9e50('0x25')](handleError(_0x3c0d51,null));};exports[_0x9e50('0x74')]=function(_0x47d086,_0x4f9007,_0x35ecf4){return db[_0x9e50('0x3f')]['findOne']({'where':{'id':_0x47d086[_0x9e50('0x56')]['id']}})[_0x9e50('0x34')](handleEntityNotFound(_0x4f9007,null))[_0x9e50('0x34')](function(_0x1eb93a){if(_0x1eb93a){return db[_0x9e50('0x75')][_0x9e50('0x76')](function(_0x5f8a1c){return db['WhatsappApplication'][_0x9e50('0x38')]({'where':{'WhatsappAccountId':_0x47d086[_0x9e50('0x56')]['id']},'transaction':_0x5f8a1c})['then'](function(_0x2db91b){var _0x18e28e=_['map'](_0x47d086['body'],function(_0x2e80fe){_0x2e80fe[_0x9e50('0x63')]=_0x47d086[_0x9e50('0x56')]['id'];return _0x2e80fe;});return db['WhatsappApplication'][_0x9e50('0x77')](_0x18e28e,{'transaction':_0x5f8a1c});});})[_0x9e50('0x34')](function(){return db[_0x9e50('0x78')][_0x9e50('0x79')]({'where':{'WhatsappAccountId':_0x47d086[_0x9e50('0x56')]['id']},'order':_0x9e50('0x7a')});});}})['then'](respondWithResult(_0x4f9007,null))[_0x9e50('0x25')](handleError(_0x4f9007,null));};exports['getApplications']=function(_0x53b778,_0x101094,_0x9c7efe){var _0x2e729f={};var _0x1a5ca1={};var _0x36ae8d;var _0x53a961;return db[_0x9e50('0x3f')][_0x9e50('0x66')]({'where':{'id':_0x53b778[_0x9e50('0x56')]['id']}})[_0x9e50('0x34')](handleEntityNotFound(_0x101094,null))[_0x9e50('0x34')](function(_0x5b87e5){if(_0x5b87e5){_0x36ae8d=_0x5b87e5;_0x1a5ca1['model']=_[_0x9e50('0x43')](db['WhatsappApplication'][_0x9e50('0x58')]);_0x1a5ca1['query']=_[_0x9e50('0x43')](_0x53b778[_0x9e50('0x42')]);_0x1a5ca1['filters']=_[_0x9e50('0x44')](_0x1a5ca1['model'],_0x1a5ca1[_0x9e50('0x42')]);_0x2e729f[_0x9e50('0x46')]=_[_0x9e50('0x44')](_0x1a5ca1[_0x9e50('0x41')],qs[_0x9e50('0x45')](_0x53b778[_0x9e50('0x42')]['fields']));_0x2e729f['attributes']=_0x2e729f[_0x9e50('0x46')][_0x9e50('0x47')]?_0x2e729f[_0x9e50('0x46')]:_0x1a5ca1[_0x9e50('0x41')];_0x2e729f[_0x9e50('0x49')]=qs[_0x9e50('0x4a')](_0x53b778[_0x9e50('0x42')]['sort']);_0x2e729f[_0x9e50('0x4b')]=qs[_0x9e50('0x4d')](_[_0x9e50('0x4c')](_0x53b778['query'],_0x1a5ca1[_0x9e50('0x4d')]));if(_0x53b778[_0x9e50('0x42')][_0x9e50('0x50')]){_0x2e729f[_0x9e50('0x4b')]=_[_0x9e50('0x51')](_0x2e729f[_0x9e50('0x4b')],{'$or':_[_0x9e50('0x3e')](_0x2e729f[_0x9e50('0x46')],function(_0x4cb78f){var _0x504292={};_0x504292[_0x4cb78f]={'$like':'%'+_0x53b778[_0x9e50('0x42')][_0x9e50('0x50')]+'%'};return _0x504292;})});}_0x2e729f=_[_0x9e50('0x51')]({},_0x2e729f,_0x53b778[_0x9e50('0x52')]);return _0x36ae8d[_0x9e50('0x7b')](_0x2e729f);}})[_0x9e50('0x34')](function(_0x23d602){if(_0x23d602){_0x53a961=_0x23d602[_0x9e50('0x47')];if(!_0x53b778[_0x9e50('0x42')][_0x9e50('0x48')]('nolimit')){_0x2e729f['limit']=qs['limit'](_0x53b778['query']['limit']);_0x2e729f[_0x9e50('0x2a')]=qs[_0x9e50('0x2a')](_0x53b778[_0x9e50('0x42')][_0x9e50('0x2a')]);}return _0x36ae8d[_0x9e50('0x7b')](_0x2e729f);}})[_0x9e50('0x34')](function(_0x597972){if(_0x597972){return _0x597972?{'count':_0x53a961,'rows':_0x597972}:null;}})[_0x9e50('0x34')](respondWithResult(_0x101094,null))[_0x9e50('0x25')](handleError(_0x101094,null));};exports[_0x9e50('0x7c')]=function(_0x431984,_0x1f96e2,_0x3dc48e){var _0x544dda={'channel':_0x9e50('0x7d')};var _0x8603b6=[];var _0x78cf63=[];var _0x17ac2c={};return db[_0x9e50('0x3f')][_0x9e50('0x59')]({'where':{'id':_0x431984[_0x9e50('0x56')]['id']},'include':[{'model':db[_0x9e50('0x78')],'as':_0x9e50('0x7e')}]})[_0x9e50('0x34')](handleEntityNotFound(_0x1f96e2,null))['then'](function(_0x5a9bb3){_0x544dda[_0x9e50('0x7f')]=_0x5a9bb3;_0x544dda[_0x9e50('0x80')]=_['orderBy'](_0x5a9bb3['Applications'],[_0x9e50('0x7a')],[_0x9e50('0x81')]);if(_0x544dda[_0x9e50('0x7f')][_0x9e50('0x7e')]){delete _0x544dda['account']['Applications'];}return db['CmContact'][_0x9e50('0x61')]();})['then'](function(_0x11e360){if(!_0x11e360){throw new db[(_0x9e50('0x82'))][(_0x9e50('0x83'))]('no\x20available\x20attributes');}_0x8603b6=_[_0x9e50('0x84')](_['keys'](_0x11e360),[_0x9e50('0x85'),_0x9e50('0x86')]);_0x78cf63=_[_0x9e50('0x84')](_[_0x9e50('0x43')](_0x11e360),[_0x9e50('0x85'),_0x9e50('0x86'),_0x9e50('0x87'),'ListId']);_0x544dda[_0x9e50('0x60')]={'mapKey':_0x9e50('0x88')};if(_0x544dda[_0x9e50('0x7f')][_0x9e50('0x4e')]&&_0x544dda['account'][_0x9e50('0x4e')]===_0x9e50('0x89')){_0x544dda['body'][_0x9e50('0x8a')]=_0x431984[_0x9e50('0x60')][_0x9e50('0x8b')][_0x9e50('0x8c')](_0x9e50('0x8d'),'');_0x544dda[_0x9e50('0x60')][_0x9e50('0x60')]=_0x431984[_0x9e50('0x60')][_0x9e50('0x8e')];_0x544dda['body']['messageId']=_0x431984[_0x9e50('0x60')]['MessageSid'];}if(_0x544dda[_0x9e50('0x60')]['id']){delete _0x544dda[_0x9e50('0x60')]['id'];}if(_[_0x9e50('0x8f')](_0x544dda[_0x9e50('0x60')][_0x9e50('0x8a')])){throw new db[(_0x9e50('0x82'))]['ValidationError'](_0x9e50('0x90'));}if(_[_0x9e50('0x8f')](_0x544dda['body'][_0x9e50('0x60')])||_0x544dda[_0x9e50('0x60')][_0x9e50('0x60')]===''){throw new db[(_0x9e50('0x82'))][(_0x9e50('0x83'))](_0x9e50('0x91'));}if(_[_0x9e50('0x8f')](_0x544dda[_0x9e50('0x60')][_0x9e50('0x92')])){throw new db[(_0x9e50('0x82'))]['ValidationError'](_0x9e50('0x93')+_0x78cf63);}if(!_[_0x9e50('0x94')](_0x78cf63,_0x544dda[_0x9e50('0x60')][_0x9e50('0x92')])){throw new db[(_0x9e50('0x82'))][(_0x9e50('0x83'))]('mapKey\x20invalid,\x20please\x20use\x20one\x20of\x20these:\x20'+_0x78cf63);}_0x17ac2c[_0x544dda[_0x9e50('0x60')][_0x9e50('0x92')]]=_0x544dda[_0x9e50('0x60')][_0x9e50('0x8a')];return db[_0x9e50('0x95')][_0x9e50('0x59')]({'where':{'id':_0x544dda[_0x9e50('0x7f')][_0x9e50('0x96')]},'include':[{'model':db[_0x9e50('0x97')],'as':_0x9e50('0x98'),'where':_0x17ac2c,'limit':0x1,'order':[[_0x9e50('0x86'),_0x9e50('0x99')]]}]});})[_0x9e50('0x34')](handleEntityNotFound(_0x1f96e2,null))[_0x9e50('0x34')](function(_0x3ca729){if(_0x3ca729){_0x544dda[_0x9e50('0x9a')]=_['omit'](_0x3ca729,[_0x9e50('0x98')]);if(_0x3ca729[_0x9e50('0x98')][_0x9e50('0x47')]){return _0x3ca729[_0x9e50('0x98')][0x0];}var _0x2bcc84=_[_0x9e50('0x9b')](_0x544dda[_0x9e50('0x60')],{'firstName':_0x544dda['body'][_0x9e50('0x8a')],'ListId':_0x3ca729['id']});_0x2bcc84[_0x544dda[_0x9e50('0x60')][_0x9e50('0x92')]]=_0x544dda['body']['from'];return db[_0x9e50('0x97')][_0x9e50('0x5a')](_0x2bcc84,{'fields':_0x8603b6,'raw':!![]});}})[_0x9e50('0x34')](handleEntityNotFound(_0x1f96e2,null))[_0x9e50('0x34')](function(_0x4d242e){if(_0x4d242e){_0x544dda[_0x9e50('0x9c')]=_0x4d242e;var _0x5e8164={'ContactId':_0x4d242e['id'],'phone':_0x544dda[_0x9e50('0x60')][_0x9e50('0x8a')],'WhatsappAccountId':_0x431984['params']['id']};var _0x33a54d={'ContactId':_0x4d242e['id'],'WhatsappAccountId':_0x431984[_0x9e50('0x56')]['id'],'closed':![]};return db['WhatsappInteraction'][_0x9e50('0x59')]({'where':_0x33a54d})[_0x9e50('0x34')](function(_0x13cd3e){if(_0x13cd3e){return[_0x13cd3e,![]];}return db[_0x9e50('0x9d')]['create'](_0x5e8164)[_0x9e50('0x34')](function(_0x2b5da1){return[_0x2b5da1,!![]];});});}})['spread'](function(_0x15135a,_0x1d4e29){_0x544dda[_0x9e50('0x9e')]=_0x15135a[_0x9e50('0x35')]({'plain':!![]});_0x544dda[_0x9e50('0x9e')]['created']=![];if(_0x1d4e29){if(_0x544dda[_0x9e50('0x7f')][_0x9e50('0x9f')]){_0x544dda['applications'][_0x9e50('0xa0')]({'id':0x0,'priority':_0x544dda[_0x9e50('0x80')][_0x9e50('0x47')]+0x1,'app':_0x9e50('0xa1'),'appdata':_0x9e50('0xa2'),'interval':_0x9e50('0xa3')});}_0x544dda[_0x9e50('0x9e')]['created']=!![];}return db[_0x9e50('0xa4')][_0x9e50('0x5a')]({'phone':_0x544dda[_0x9e50('0x60')]['from'],'messageId':_0x544dda['body']['messageId'],'body':_0x544dda['body'][_0x9e50('0x60')],'WhatsappAccountId':_0x431984['params']['id'],'WhatsappInteractionId':_0x15135a['id'],'direction':'in','ContactId':_0x15135a[_0x9e50('0xa5')],'AttachmentId':_0x544dda['body'][_0x9e50('0xa6')]});})['then'](function(_0x11be37){_0x544dda['message']=_0x11be37;if(_0x544dda[_0x9e50('0x9e')][_0x9e50('0xa7')]){return db[_0x9e50('0xa8')][_0x9e50('0x59')]({'attributes':['id',_0x9e50('0x3a')],'where':{'id':_0x544dda['interaction'][_0x9e50('0xa7')]}})[_0x9e50('0x34')](function(_0x3ac0e1){if(_0x3ac0e1){_0x544dda[_0x9e50('0x80')][_0x9e50('0xa9')]({'id':0x0,'priority':0x0,'app':'agent','appdata':_0x3ac0e1['name']+','+(_0x544dda[_0x9e50('0x7f')][_0x9e50('0xaa')]||0xa),'interval':_0x9e50('0xa3')});}return respondWithRpcPromise(_0x9e50('0xab'),_0x9e50('0xac'),_0x544dda);});}return respondWithRpcPromise(_0x9e50('0xab'),_0x9e50('0xac'),_0x544dda);})[_0x9e50('0x34')](function(_0x31f94e){if(_0x31f94e){var _0x417d5b=0xc8;var _0x2f23b3='receiveMessage';logger[_0x9e50('0x1d')](_0x9e50('0x20'),_0x2f23b3,_0x417d5b,_0x9e50('0xad'));logger[_0x9e50('0x1f')]('WhatsappAccount,\x20%s,\x20%s,\x20%s,\x20%s',_0x2f23b3,_0x417d5b,_0x9e50('0xad'),JSON[_0x9e50('0xae')](_0x31f94e));if(_0x544dda[_0x9e50('0x7f')][_0x9e50('0x4e')]===_0x9e50('0x89')){return _0x1f96e2[_0x9e50('0x27')](_0x417d5b)[_0x9e50('0x2e')](_0x9e50('0xaf'),_0x9e50('0xb0'))[_0x9e50('0x3b')](_0x9e50('0xb1'));}else{return _0x1f96e2[_0x9e50('0x27')](_0x417d5b)[_0x9e50('0x29')](_0x31f94e);}}})['catch'](handleError(_0x1f96e2,null));};exports[_0x9e50('0x3b')]=function(_0x1f8a98,_0x3f1e76,_0x35e4ab){var _0x26d665,_0x464324,_0xf7f31e;if(_[_0x9e50('0x8f')](_0x1f8a98['body'][_0x9e50('0x60')])||_0x1f8a98[_0x9e50('0x60')][_0x9e50('0x60')]===''){throw new db[(_0x9e50('0x82'))][(_0x9e50('0x83'))](_0x9e50('0x91'));}if(_[_0x9e50('0x8f')](_0x1f8a98[_0x9e50('0x60')]['to'])){throw new db['Sequelize']['ValidationError'](_0x9e50('0xb2'));}_0x26d665=_0x1f8a98[_0x9e50('0x60')]['to'];return db[_0x9e50('0x3f')][_0x9e50('0x59')]({'where':{'id':_0x1f8a98[_0x9e50('0x56')]['id']},'include':[{'model':db['CmList'],'as':'List','include':[{'model':db['CmContact'],'as':'Contacts','where':{'mobile':_0x26d665},'limit':0x1,'order':[[_0x9e50('0x86'),_0x9e50('0x99')]]}]}]})[_0x9e50('0x34')](handleEntityNotFound(_0x3f1e76,null))['then'](function(_0x23272a){if(_0x23272a&&_0x23272a[_0x9e50('0xb3')]){_0x464324=_0x23272a['get']({'plain':!![]});if(_0x464324[_0x9e50('0xb3')]&&_0x464324[_0x9e50('0xb3')][_0x9e50('0x98')]['length']){return _0x464324[_0x9e50('0xb3')]['Contacts'][0x0];}return db[_0x9e50('0x97')][_0x9e50('0x5a')](_['defaults'](_0x1f8a98[_0x9e50('0x60')],{'firstName':_0x26d665,'mobile':_0x26d665,'phone':_0x26d665,'ListId':_0x464324[_0x9e50('0x96')]}));}})[_0x9e50('0x34')](handleEntityNotFound(_0x3f1e76,null))[_0x9e50('0x34')](function(_0x273796){if(_0x273796){_0xf7f31e=_0x273796;return db[_0x9e50('0x9d')]['find']({'where':{'ContactId':_0xf7f31e['id'],'closed':![],'WhatsappAccountId':_0x464324['id']}})[_0x9e50('0x34')](function(_0xc0ca62){if(_0xc0ca62){return[_0xc0ca62,![]];}return db[_0x9e50('0x9d')]['create']({'UserId':_0x1f8a98[_0x9e50('0x5b')]['id'],'ContactId':_0xf7f31e['id'],'WhatsappAccountId':_0x464324['id'],'phone':_0x26d665,'firstMsgDirection':_0x9e50('0xb4'),'Messages':[_[_0x9e50('0x51')](_0x1f8a98[_0x9e50('0x60')],{'read':![],'body':_0x1f8a98[_0x9e50('0x60')]['body'],'phone':_0x26d665,'WhatsappAccountId':_0x464324['id'],'UserId':_0x1f8a98[_0x9e50('0x5b')]['id'],'ContactId':_0xf7f31e['id']})]},{'include':[{'model':db[_0x9e50('0xa4')],'as':_0x9e50('0xb5')}]})['then'](function(_0x10f33a){return[_0x10f33a,!![]];});});}})['spread'](function(_0x17c233,_0x1f4571){if(_0x1f4571){return _0x17c233;}return db[_0x9e50('0xa4')][_0x9e50('0x5a')](_[_0x9e50('0x51')](_0x1f8a98['body'],{'read':![],'body':_0x1f8a98['body']['body'],'phone':_0x26d665,'WhatsappAccountId':_0x464324['id'],'WhatsappInteractionId':_0x17c233['id'],'UserId':_0x1f8a98[_0x9e50('0x5b')]['id'],'ContactId':_0xf7f31e['id']}))[_0x9e50('0x34')](function(_0x21daeb){_0x17c233[_0x9e50('0xb6')][_0x9e50('0xb5')]=[];_0x17c233['dataValues']['Messages'][_0x9e50('0xa0')](_0x21daeb[_0x9e50('0xb6')]);return _0x17c233;});})[_0x9e50('0x34')](respondWithResult(_0x3f1e76,null))[_0x9e50('0x25')](handleError(_0x3f1e76,null));};
\ No newline at end of file
index cfc9089..062b68c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xfd49=['../../mysqldb','WhatsappAccount','save','remove','emit','hasOwnProperty','exports','events'];(function(_0x46babf,_0x378e6b){var _0x1709fa=function(_0x392aa0){while(--_0x392aa0){_0x46babf['push'](_0x46babf['shift']());}};_0x1709fa(++_0x378e6b);}(_0xfd49,0xd7));var _0x9fd4=function(_0x4decf5,_0x487c4f){_0x4decf5=_0x4decf5-0x0;var _0x3a25f3=_0xfd49[_0x4decf5];return _0x3a25f3;};'use strict';var EventEmitter=require(_0x9fd4('0x0'));var WhatsappAccount=require(_0x9fd4('0x1'))['db'][_0x9fd4('0x2')];var WhatsappAccountEvents=new EventEmitter();WhatsappAccountEvents['setMaxListeners'](0x0);var events={'afterCreate':_0x9fd4('0x3'),'afterUpdate':'update','afterDestroy':_0x9fd4('0x4')};function emitEvent(_0x145906){return function(_0x56ea5d,_0x5df3dd,_0x435598){WhatsappAccountEvents[_0x9fd4('0x5')](_0x145906+':'+_0x56ea5d['id'],_0x56ea5d);WhatsappAccountEvents[_0x9fd4('0x5')](_0x145906,_0x56ea5d);_0x435598(null);};}for(var e in events){if(events[_0x9fd4('0x6')](e)){var event=events[e];WhatsappAccount['hook'](e,emitEvent(event));}}module[_0x9fd4('0x7')]=WhatsappAccountEvents;
\ No newline at end of file
+var _0xc018=['remove','emit','hasOwnProperty','exports','events','setMaxListeners','save'];(function(_0x56e7be,_0x5680a4){var _0xc011c0=function(_0x56929a){while(--_0x56929a){_0x56e7be['push'](_0x56e7be['shift']());}};_0xc011c0(++_0x5680a4);}(_0xc018,0x66));var _0x8c01=function(_0x15b01b,_0x6163a0){_0x15b01b=_0x15b01b-0x0;var _0x3055cc=_0xc018[_0x15b01b];return _0x3055cc;};'use strict';var EventEmitter=require(_0x8c01('0x0'));var WhatsappAccount=require('../../mysqldb')['db']['WhatsappAccount'];var WhatsappAccountEvents=new EventEmitter();WhatsappAccountEvents[_0x8c01('0x1')](0x0);var events={'afterCreate':_0x8c01('0x2'),'afterUpdate':'update','afterDestroy':_0x8c01('0x3')};function emitEvent(_0x45024c){return function(_0x3633fa,_0x4afecf,_0x248fb2){WhatsappAccountEvents['emit'](_0x45024c+':'+_0x3633fa['id'],_0x3633fa);WhatsappAccountEvents[_0x8c01('0x4')](_0x45024c,_0x3633fa);_0x248fb2(null);};}for(var e in events){if(events[_0x8c01('0x5')](e)){var event=events[e];WhatsappAccount['hook'](e,emitEvent(event));}}module[_0x8c01('0x6')]=WhatsappAccountEvents;
\ No newline at end of file
index 5ef1101..7727a2e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4739=['WhatsappAccount','whatsapp_accounts','lodash','util','api','moment','bluebird','path','rimraf','../../config/environment'];(function(_0x5d2d13,_0x25efe7){var _0x3a921f=function(_0x23a213){while(--_0x23a213){_0x5d2d13['push'](_0x5d2d13['shift']());}};_0x3a921f(++_0x25efe7);}(_0x4739,0x1d8));var _0x9473=function(_0x56d858,_0x244d44){_0x56d858=_0x56d858-0x0;var _0x427d38=_0x4739[_0x56d858];return _0x427d38;};'use strict';var _=require(_0x9473('0x0'));var util=require(_0x9473('0x1'));var logger=require('../../config/logger')(_0x9473('0x2'));var moment=require(_0x9473('0x3'));var BPromise=require(_0x9473('0x4'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x9473('0x5'));var rimraf=require(_0x9473('0x6'));var config=require(_0x9473('0x7'));var attributes=require('./whatsappAccount.attributes');module['exports']=function(_0x69e46e,_0x594b4e){return _0x69e46e['define'](_0x9473('0x8'),attributes,{'tableName':_0x9473('0x9'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x4be0=['request-promise','path','rimraf','../../config/environment','./whatsappAccount.attributes','exports','define','whatsapp_accounts','lodash','util','../../config/logger','api','moment','bluebird'];(function(_0x2aa6cd,_0x27a894){var _0x332d67=function(_0x539eb8){while(--_0x539eb8){_0x2aa6cd['push'](_0x2aa6cd['shift']());}};_0x332d67(++_0x27a894);}(_0x4be0,0x182));var _0x04be=function(_0x221159,_0x30a62d){_0x221159=_0x221159-0x0;var _0x1c301d=_0x4be0[_0x221159];return _0x1c301d;};'use strict';var _=require(_0x04be('0x0'));var util=require(_0x04be('0x1'));var logger=require(_0x04be('0x2'))(_0x04be('0x3'));var moment=require(_0x04be('0x4'));var BPromise=require(_0x04be('0x5'));var rp=require(_0x04be('0x6'));var fs=require('fs');var path=require(_0x04be('0x7'));var rimraf=require(_0x04be('0x8'));var config=require(_0x04be('0x9'));var attributes=require(_0x04be('0xa'));module[_0x04be('0xb')]=function(_0x23ee1e,_0xdb38c5){return _0x23ee1e[_0x04be('0xc')]('WhatsappAccount',attributes,{'tableName':_0x04be('0xd'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 1746985..d2ac2ab 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x80c2=['then','info','request\x20sent','debug','WhatsappAccount,\x20%s,\x20%s,\x20%s','stringify','error','code','WhatsappAccount,\x20%s,\x20%s','message','result','ShowWhatsappAccount','find','options','attributes','include','model','map','lodash','util','moment','bluebird','../../mysqldb','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','redis','defaults','socket.io-emitter','./whatsappAccount.socket','register','request'];(function(_0x583cab,_0x3c45d9){var _0x4f7982=function(_0xbddb6){while(--_0xbddb6){_0x583cab['push'](_0x583cab['shift']());}};_0x4f7982(++_0x3c45d9);}(_0x80c2,0x1b6));var _0x280c=function(_0x48e9ce,_0x41c3d8){_0x48e9ce=_0x48e9ce-0x0;var _0xc8322a=_0x80c2[_0x48e9ce];return _0xc8322a;};'use strict';var _=require(_0x280c('0x0'));var util=require(_0x280c('0x1'));var moment=require(_0x280c('0x2'));var BPromise=require(_0x280c('0x3'));var rs=require('randomstring');var fs=require('fs');var Redis=require('ioredis');var db=require(_0x280c('0x4'))['db'];var utils=require('../../config/utils');var logger=require(_0x280c('0x5'))(_0x280c('0x6'));var config=require(_0x280c('0x7'));var jayson=require(_0x280c('0x8'));var client=jayson[_0x280c('0x9')][_0x280c('0xa')]({'port':0x232a});config[_0x280c('0xb')]=_[_0x280c('0xc')](config[_0x280c('0xb')],{'host':'localhost','port':0x18eb});var socket=require(_0x280c('0xd'))(new Redis(config[_0x280c('0xb')]));require(_0x280c('0xe'))[_0x280c('0xf')](socket);function respondWithRpcPromise(_0x5392cf,_0x4a0919,_0x5cb902){return new BPromise(function(_0x49ab29,_0x340fa6){return client[_0x280c('0x10')](_0x5392cf,_0x5cb902)[_0x280c('0x11')](function(_0x200d3d){logger[_0x280c('0x12')]('WhatsappAccount,\x20%s,\x20%s',_0x4a0919,_0x280c('0x13'));logger[_0x280c('0x14')](_0x280c('0x15'),_0x4a0919,_0x280c('0x13'),JSON[_0x280c('0x16')](_0x200d3d));if(_0x200d3d[_0x280c('0x17')]){if(_0x200d3d[_0x280c('0x17')][_0x280c('0x18')]===0x1f4){logger['error'](_0x280c('0x19'),_0x4a0919,_0x200d3d[_0x280c('0x17')][_0x280c('0x1a')]);return _0x340fa6(_0x200d3d[_0x280c('0x17')][_0x280c('0x1a')]);}logger[_0x280c('0x17')](_0x280c('0x19'),_0x4a0919,_0x200d3d[_0x280c('0x17')][_0x280c('0x1a')]);return _0x49ab29(_0x200d3d[_0x280c('0x17')][_0x280c('0x1a')]);}else{logger['info']('WhatsappAccount,\x20%s,\x20%s',_0x4a0919,_0x280c('0x13'));_0x49ab29(_0x200d3d[_0x280c('0x1b')]['message']);}})['catch'](function(_0x395d85){logger['error'](_0x280c('0x19'),_0x4a0919,_0x395d85);_0x340fa6(_0x395d85);});});}exports[_0x280c('0x1c')]=function(_0x2aa4f0){var _0x1e147e=this;return new Promise(function(_0x39b5c7,_0x42eed6){return db['WhatsappAccount'][_0x280c('0x1d')]({'raw':_0x2aa4f0[_0x280c('0x1e')]?_0x2aa4f0[_0x280c('0x1e')]['raw']===undefined?!![]:![]:!![],'where':_0x2aa4f0[_0x280c('0x1e')]?_0x2aa4f0[_0x280c('0x1e')]['where']||null:null,'attributes':_0x2aa4f0[_0x280c('0x1e')]?_0x2aa4f0[_0x280c('0x1e')][_0x280c('0x1f')]||null:null,'include':_0x2aa4f0[_0x280c('0x1e')]?_0x2aa4f0[_0x280c('0x1e')][_0x280c('0x20')]?_['map'](_0x2aa4f0[_0x280c('0x1e')]['include'],function(_0x5150ad){return{'model':db[_0x5150ad[_0x280c('0x21')]],'as':_0x5150ad['as'],'attributes':_0x5150ad['attributes'],'include':_0x5150ad[_0x280c('0x20')]?_['map'](_0x5150ad[_0x280c('0x20')],function(_0x4b152e){return{'model':db[_0x4b152e['model']],'as':_0x4b152e['as'],'attributes':_0x4b152e[_0x280c('0x1f')],'include':_0x4b152e['include']?_[_0x280c('0x22')](_0x4b152e[_0x280c('0x20')],function(_0x3e3044){return{'model':db[_0x3e3044['model']],'as':_0x3e3044['as'],'attributes':_0x3e3044[_0x280c('0x1f')]};}):[]};}):[]};}):[]:[]})[_0x280c('0x11')](function(_0x5d7972){logger[_0x280c('0x12')]('ShowWhatsappAccount',_0x2aa4f0);logger[_0x280c('0x14')](_0x280c('0x1c'),_0x2aa4f0,JSON['stringify'](_0x5d7972));_0x39b5c7(_0x5d7972);})['catch'](function(_0x122097){logger[_0x280c('0x17')](_0x280c('0x1c'),_0x122097[_0x280c('0x1a')],_0x2aa4f0);_0x42eed6(_0x1e147e[_0x280c('0x17')](0x1f4,_0x122097[_0x280c('0x1a')]));});});};
\ No newline at end of file
+var _0x242e=['../../config/utils','../../config/environment','jayson/promise','client','http','redis','localhost','register','then','info','WhatsappAccount,\x20%s,\x20%s','request\x20sent','WhatsappAccount,\x20%s,\x20%s,\x20%s','error','code','message','result','catch','ShowWhatsappAccount','WhatsappAccount','find','options','raw','where','attributes','include','map','model','debug','stringify','lodash','moment','bluebird','ioredis','../../mysqldb'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x242e,0x1e5));var _0xe242=function(_0x413feb,_0x10477f){_0x413feb=_0x413feb-0x0;var _0x40ee88=_0x242e[_0x413feb];return _0x40ee88;};'use strict';var _=require(_0xe242('0x0'));var util=require('util');var moment=require(_0xe242('0x1'));var BPromise=require(_0xe242('0x2'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0xe242('0x3'));var db=require(_0xe242('0x4'))['db'];var utils=require(_0xe242('0x5'));var logger=require('../../config/logger')('rpc');var config=require(_0xe242('0x6'));var jayson=require(_0xe242('0x7'));var client=jayson[_0xe242('0x8')][_0xe242('0x9')]({'port':0x232a});config[_0xe242('0xa')]=_['defaults'](config['redis'],{'host':_0xe242('0xb'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config['redis']));require('./whatsappAccount.socket')[_0xe242('0xc')](socket);function respondWithRpcPromise(_0x5b06f5,_0x7af1d8,_0xdb21ab){return new BPromise(function(_0x56e526,_0x458bc9){return client['request'](_0x5b06f5,_0xdb21ab)[_0xe242('0xd')](function(_0x546016){logger[_0xe242('0xe')](_0xe242('0xf'),_0x7af1d8,_0xe242('0x10'));logger['debug'](_0xe242('0x11'),_0x7af1d8,_0xe242('0x10'),JSON['stringify'](_0x546016));if(_0x546016['error']){if(_0x546016[_0xe242('0x12')][_0xe242('0x13')]===0x1f4){logger[_0xe242('0x12')](_0xe242('0xf'),_0x7af1d8,_0x546016[_0xe242('0x12')][_0xe242('0x14')]);return _0x458bc9(_0x546016[_0xe242('0x12')]['message']);}logger[_0xe242('0x12')]('WhatsappAccount,\x20%s,\x20%s',_0x7af1d8,_0x546016[_0xe242('0x12')][_0xe242('0x14')]);return _0x56e526(_0x546016[_0xe242('0x12')][_0xe242('0x14')]);}else{logger[_0xe242('0xe')](_0xe242('0xf'),_0x7af1d8,_0xe242('0x10'));_0x56e526(_0x546016[_0xe242('0x15')][_0xe242('0x14')]);}})[_0xe242('0x16')](function(_0x4242f8){logger['error'](_0xe242('0xf'),_0x7af1d8,_0x4242f8);_0x458bc9(_0x4242f8);});});}exports[_0xe242('0x17')]=function(_0x3be74c){var _0x5e697b=this;return new Promise(function(_0x4d2aa2,_0x4ae358){return db[_0xe242('0x18')][_0xe242('0x19')]({'raw':_0x3be74c[_0xe242('0x1a')]?_0x3be74c[_0xe242('0x1a')][_0xe242('0x1b')]===undefined?!![]:![]:!![],'where':_0x3be74c[_0xe242('0x1a')]?_0x3be74c[_0xe242('0x1a')][_0xe242('0x1c')]||null:null,'attributes':_0x3be74c[_0xe242('0x1a')]?_0x3be74c['options'][_0xe242('0x1d')]||null:null,'include':_0x3be74c[_0xe242('0x1a')]?_0x3be74c[_0xe242('0x1a')][_0xe242('0x1e')]?_[_0xe242('0x1f')](_0x3be74c[_0xe242('0x1a')][_0xe242('0x1e')],function(_0x26d2d8){return{'model':db[_0x26d2d8[_0xe242('0x20')]],'as':_0x26d2d8['as'],'attributes':_0x26d2d8[_0xe242('0x1d')],'include':_0x26d2d8['include']?_[_0xe242('0x1f')](_0x26d2d8[_0xe242('0x1e')],function(_0x1f4af2){return{'model':db[_0x1f4af2[_0xe242('0x20')]],'as':_0x1f4af2['as'],'attributes':_0x1f4af2[_0xe242('0x1d')],'include':_0x1f4af2[_0xe242('0x1e')]?_['map'](_0x1f4af2[_0xe242('0x1e')],function(_0x5a5fb1){return{'model':db[_0x5a5fb1[_0xe242('0x20')]],'as':_0x5a5fb1['as'],'attributes':_0x5a5fb1[_0xe242('0x1d')]};}):[]};}):[]};}):[]:[]})['then'](function(_0x51ffd5){logger[_0xe242('0xe')]('ShowWhatsappAccount',_0x3be74c);logger[_0xe242('0x21')](_0xe242('0x17'),_0x3be74c,JSON[_0xe242('0x22')](_0x51ffd5));_0x4d2aa2(_0x51ffd5);})[_0xe242('0x16')](function(_0x4d4681){logger[_0xe242('0x12')](_0xe242('0x17'),_0x4d4681[_0xe242('0x14')],_0x3be74c);_0x4ae358(_0x5e697b[_0xe242('0x12')](0x1f4,_0x4d4681[_0xe242('0x14')]));});});};
\ No newline at end of file
index efadfd2..e8f29e2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xbda9=['remove','update','emit','removeListener','register','length','whatsappAccount:','save'];(function(_0x1a98fe,_0x337eba){var _0xb6129f=function(_0x3b4856){while(--_0x3b4856){_0x1a98fe['push'](_0x1a98fe['shift']());}};_0xb6129f(++_0x337eba);}(_0xbda9,0x127));var _0x9bda=function(_0x3893ad,_0x3b3a57){_0x3893ad=_0x3893ad-0x0;var _0x411ac2=_0xbda9[_0x3893ad];return _0x411ac2;};'use strict';var WhatsappAccountEvents=require('./whatsappAccount.events');var events=[_0x9bda('0x0'),_0x9bda('0x1'),_0x9bda('0x2')];function createListener(_0x226af9,_0x22de4d){return function(_0x18b9b8){_0x22de4d[_0x9bda('0x3')](_0x226af9,_0x18b9b8);};}function removeListener(_0x5e26a0,_0x1c1910){return function(){WhatsappAccountEvents[_0x9bda('0x4')](_0x5e26a0,_0x1c1910);};}exports[_0x9bda('0x5')]=function(_0x21a4d9){for(var _0x20c012=0x0,_0xc459b3=events[_0x9bda('0x6')];_0x20c012<_0xc459b3;_0x20c012++){var _0x13da9e=events[_0x20c012];var _0x535cab=createListener(_0x9bda('0x7')+_0x13da9e,_0x21a4d9);WhatsappAccountEvents['on'](_0x13da9e,_0x535cab);}};
\ No newline at end of file
+var _0xa851=['emit','length','whatsappAccount:','save','update'];(function(_0x460f81,_0x553431){var _0x423f0d=function(_0x267a6b){while(--_0x267a6b){_0x460f81['push'](_0x460f81['shift']());}};_0x423f0d(++_0x553431);}(_0xa851,0x1ca));var _0x1a85=function(_0x544f46,_0x168b65){_0x544f46=_0x544f46-0x0;var _0x21e7f2=_0xa851[_0x544f46];return _0x21e7f2;};'use strict';var WhatsappAccountEvents=require('./whatsappAccount.events');var events=[_0x1a85('0x0'),'remove',_0x1a85('0x1')];function createListener(_0x492035,_0x36ba8e){return function(_0x4d2166){_0x36ba8e[_0x1a85('0x2')](_0x492035,_0x4d2166);};}function removeListener(_0x26b43a,_0x589373){return function(){WhatsappAccountEvents['removeListener'](_0x26b43a,_0x589373);};}exports['register']=function(_0xdf1a1f){for(var _0x586de3=0x0,_0x24cd51=events[_0x1a85('0x3')];_0x586de3<_0x24cd51;_0x586de3++){var _0x427904=events[_0x586de3];var _0x2f37d3=createListener(_0x1a85('0x4')+_0x427904,_0xdf1a1f);WhatsappAccountEvents['on'](_0x427904,_0x2f37d3);}};
\ No newline at end of file
index 9a69b52..5067270 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe891=['../../components/auth/service','../../config/environment','get','isAuthenticated','index','/:id','show','post','update','delete','destroy','multer','util','path','connect-timeout','express','Router'];(function(_0x2ce166,_0x1ed7ae){var _0x2471ea=function(_0x2a1d89){while(--_0x2a1d89){_0x2ce166['push'](_0x2ce166['shift']());}};_0x2471ea(++_0x1ed7ae);}(_0xe891,0x11b));var _0x1e89=function(_0x513731,_0x40433b){_0x513731=_0x513731-0x0;var _0x20b143=_0xe891[_0x513731];return _0x20b143;};'use strict';var multer=require(_0x1e89('0x0'));var util=require(_0x1e89('0x1'));var path=require(_0x1e89('0x2'));var timeout=require(_0x1e89('0x3'));var express=require(_0x1e89('0x4'));var router=express[_0x1e89('0x5')]();var fs_extra=require('fs-extra');var auth=require(_0x1e89('0x6'));var interaction=require('../../components/interaction/service');var config=require(_0x1e89('0x7'));var controller=require('./whatsappApplication.controller');router[_0x1e89('0x8')]('/',auth[_0x1e89('0x9')](),controller[_0x1e89('0xa')]);router['get'](_0x1e89('0xb'),auth[_0x1e89('0x9')](),controller[_0x1e89('0xc')]);router[_0x1e89('0xd')]('/',auth['isAuthenticated'](),controller['create']);router['put'](_0x1e89('0xb'),auth['isAuthenticated'](),controller[_0x1e89('0xe')]);router[_0x1e89('0xf')](_0x1e89('0xb'),auth['isAuthenticated'](),controller[_0x1e89('0x10')]);module['exports']=router;
\ No newline at end of file
+var _0xde60=['create','update','delete','destroy','multer','path','Router','fs-extra','../../components/auth/service','./whatsappApplication.controller','isAuthenticated','index','get','/:id','show','post'];(function(_0x4a94bd,_0x31b0d1){var _0x41a18d=function(_0x2a4b51){while(--_0x2a4b51){_0x4a94bd['push'](_0x4a94bd['shift']());}};_0x41a18d(++_0x31b0d1);}(_0xde60,0xa4));var _0x0de6=function(_0x5e8965,_0x744744){_0x5e8965=_0x5e8965-0x0;var _0x5efd03=_0xde60[_0x5e8965];return _0x5efd03;};'use strict';var multer=require(_0x0de6('0x0'));var util=require('util');var path=require(_0x0de6('0x1'));var timeout=require('connect-timeout');var express=require('express');var router=express[_0x0de6('0x2')]();var fs_extra=require(_0x0de6('0x3'));var auth=require(_0x0de6('0x4'));var interaction=require('../../components/interaction/service');var config=require('../../config/environment');var controller=require(_0x0de6('0x5'));router['get']('/',auth[_0x0de6('0x6')](),controller[_0x0de6('0x7')]);router[_0x0de6('0x8')](_0x0de6('0x9'),auth['isAuthenticated'](),controller[_0x0de6('0xa')]);router[_0x0de6('0xb')]('/',auth[_0x0de6('0x6')](),controller[_0x0de6('0xc')]);router['put'](_0x0de6('0x9'),auth[_0x0de6('0x6')](),controller[_0x0de6('0xd')]);router[_0x0de6('0xe')](_0x0de6('0x9'),auth[_0x0de6('0x6')](),controller[_0x0de6('0xf')]);module['exports']=router;
\ No newline at end of file
index ec7e420..a343e5f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2265=['INTEGER','STRING','noop','TEXT','*,*,*,*','sequelize','exports'];(function(_0x4a9fb1,_0x273043){var _0x348672=function(_0x142b69){while(--_0x142b69){_0x4a9fb1['push'](_0x4a9fb1['shift']());}};_0x348672(++_0x273043);}(_0x2265,0xfa));var _0x5226=function(_0x4cf98e,_0xba4b79){_0x4cf98e=_0x4cf98e-0x0;var _0x1623ac=_0x2265[_0x4cf98e];return _0x1623ac;};'use strict';var Sequelize=require(_0x5226('0x0'));module[_0x5226('0x1')]={'priority':{'type':Sequelize[_0x5226('0x2')],'allowNull':![]},'app':{'type':Sequelize[_0x5226('0x3')],'allowNull':![],'defaultValue':_0x5226('0x4')},'appdata':{'type':Sequelize[_0x5226('0x5')]()},'description':{'type':Sequelize[_0x5226('0x3')]},'interval':{'type':Sequelize[_0x5226('0x3')],'defaultValue':_0x5226('0x6')}};
\ No newline at end of file
+var _0x0290=['*,*,*,*','sequelize','exports','STRING','noop','TEXT'];(function(_0x2d99e1,_0x1997a7){var _0x47725c=function(_0x3a56d1){while(--_0x3a56d1){_0x2d99e1['push'](_0x2d99e1['shift']());}};_0x47725c(++_0x1997a7);}(_0x0290,0x157));var _0x0029=function(_0x2dafbe,_0x5d04de){_0x2dafbe=_0x2dafbe-0x0;var _0x58a45a=_0x0290[_0x2dafbe];return _0x58a45a;};'use strict';var Sequelize=require(_0x0029('0x0'));module[_0x0029('0x1')]={'priority':{'type':Sequelize['INTEGER'],'allowNull':![]},'app':{'type':Sequelize[_0x0029('0x2')],'allowNull':![],'defaultValue':_0x0029('0x3')},'appdata':{'type':Sequelize[_0x0029('0x4')]()},'description':{'type':Sequelize['STRING']},'interval':{'type':Sequelize[_0x0029('0x2')],'defaultValue':_0x0029('0x5')}};
\ No newline at end of file
index d1179f0..1105c30 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4bd3=['offset','undefined','limit','count','set','Content-Range','reject','save','destroy','then','error','name','send','index','map','WhatsappApplication','fieldName','type','key','query','keys','intersection','model','attributes','length','nolimit','order','sort','filters','where','VIRTUAL','filter','options','includeAll','show','params','include','catch','create','update','body','find','eml-format','zip-dir','fast-json-patch','mustache','util','path','to-csv','ejs','lodash','squel','jsforce','desk.js','querystring','papaparse','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','../../config/environment','sendStatus','status','end','json'];(function(_0x4e0e49,_0x13359d){var _0x171f90=function(_0x486845){while(--_0x486845){_0x4e0e49['push'](_0x4e0e49['shift']());}};_0x171f90(++_0x13359d);}(_0x4bd3,0x174));var _0x34bd=function(_0x25a1da,_0x7d20ce){_0x25a1da=_0x25a1da-0x0;var _0x3bb61f=_0x4bd3[_0x25a1da];return _0x3bb61f;};'use strict';var emlformat=require(_0x34bd('0x0'));var rimraf=require('rimraf');var zipdir=require(_0x34bd('0x1'));var jsonpatch=require(_0x34bd('0x2'));var rp=require('request-promise');var moment=require('moment');var BPromise=require('bluebird');var Mustache=require(_0x34bd('0x3'));var util=require(_0x34bd('0x4'));var path=require(_0x34bd('0x5'));var sox=require('sox');var csv=require(_0x34bd('0x6'));var ejs=require(_0x34bd('0x7'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x34bd('0x8'));var squel=require(_0x34bd('0x9'));var crypto=require('crypto');var jsforce=require(_0x34bd('0xa'));var deskjs=require(_0x34bd('0xb'));var toCsv=require(_0x34bd('0x6'));var querystring=require(_0x34bd('0xc'));var Papa=require(_0x34bd('0xd'));var Redis=require(_0x34bd('0xe'));var authService=require('../../components/auth/service');var qs=require(_0x34bd('0xf'));var as=require(_0x34bd('0x10'));var hardwareService=require(_0x34bd('0x11'));var logger=require(_0x34bd('0x12'))('api');var utils=require('../../config/utils');var config=require(_0x34bd('0x13'));var licenseUtil=require('../../config/license/util');var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x275d80,_0x1f19b9){_0x1f19b9=_0x1f19b9||0xcc;return function(_0x282af4){if(_0x282af4){return _0x275d80[_0x34bd('0x14')](_0x1f19b9);}return _0x275d80[_0x34bd('0x15')](_0x1f19b9)[_0x34bd('0x16')]();};}function respondWithResult(_0x4134ee,_0x236f6b){_0x236f6b=_0x236f6b||0xc8;return function(_0xf6d2f2){if(_0xf6d2f2){return _0x4134ee['status'](_0x236f6b)[_0x34bd('0x17')](_0xf6d2f2);}};}function respondWithFilteredResult(_0x4d4955,_0x4e3886){return function(_0x6638ed){if(_0x6638ed){var _0x30b3f2=typeof _0x4e3886[_0x34bd('0x18')]===_0x34bd('0x19')&&typeof _0x4e3886[_0x34bd('0x1a')]===_0x34bd('0x19');var _0xd39d72=_0x6638ed[_0x34bd('0x1b')];var _0x3b4bf8=_0x30b3f2?0x0:_0x4e3886[_0x34bd('0x18')];var _0x4b5ebb=_0x30b3f2?_0x6638ed['count']:_0x4e3886[_0x34bd('0x18')]+_0x4e3886[_0x34bd('0x1a')];var _0x265e70;if(_0x4b5ebb>=_0xd39d72){_0x4b5ebb=_0xd39d72;_0x265e70=0xc8;}else{_0x265e70=0xce;}_0x4d4955[_0x34bd('0x15')](_0x265e70);return _0x4d4955[_0x34bd('0x1c')](_0x34bd('0x1d'),_0x3b4bf8+'-'+_0x4b5ebb+'/'+_0xd39d72)[_0x34bd('0x17')](_0x6638ed);}return null;};}function patchUpdates(_0x3d5f76){return function(_0x130bd0){try{jsonpatch['apply'](_0x130bd0,_0x3d5f76,!![]);}catch(_0x15c0d1){return BPromise[_0x34bd('0x1e')](_0x15c0d1);}return _0x130bd0[_0x34bd('0x1f')]();};}function saveUpdates(_0x14254b,_0x463224){return function(_0x5e0c06){if(_0x5e0c06){return _0x5e0c06['update'](_0x14254b)['then'](function(_0x4edf84){return _0x4edf84;});}return null;};}function removeEntity(_0x3dafe8,_0x503a60){return function(_0x10fc4b){if(_0x10fc4b){return _0x10fc4b[_0x34bd('0x20')]()[_0x34bd('0x21')](function(){_0x3dafe8['status'](0xcc)[_0x34bd('0x16')]();});}};}function handleEntityNotFound(_0x14479a,_0x4f0dff){return function(_0x457006){if(!_0x457006){_0x14479a['sendStatus'](0x194);}return _0x457006;};}function handleError(_0x29bda8,_0xb256e8){_0xb256e8=_0xb256e8||0x1f4;return function(_0x264c94){logger[_0x34bd('0x22')](_0x264c94['stack']);if(_0x264c94[_0x34bd('0x23')]){delete _0x264c94[_0x34bd('0x23')];}_0x29bda8['status'](_0xb256e8)[_0x34bd('0x24')](_0x264c94);};}exports[_0x34bd('0x25')]=function(_0x16581f,_0x3f675c){var _0x26b8e7={},_0x4500c8={},_0x177d43={'count':0x0,'rows':[]};var _0x58b431=_[_0x34bd('0x26')](db[_0x34bd('0x27')]['rawAttributes'],function(_0x5d1662){return{'name':_0x5d1662[_0x34bd('0x28')],'type':_0x5d1662[_0x34bd('0x29')][_0x34bd('0x2a')]};});_0x4500c8['model']=_['map'](_0x58b431,_0x34bd('0x23'));_0x4500c8[_0x34bd('0x2b')]=_[_0x34bd('0x2c')](_0x16581f[_0x34bd('0x2b')]);_0x4500c8['filters']=_[_0x34bd('0x2d')](_0x4500c8[_0x34bd('0x2e')],_0x4500c8[_0x34bd('0x2b')]);_0x26b8e7[_0x34bd('0x2f')]=_[_0x34bd('0x2d')](_0x4500c8[_0x34bd('0x2e')],qs['fields'](_0x16581f[_0x34bd('0x2b')]['fields']));_0x26b8e7[_0x34bd('0x2f')]=_0x26b8e7[_0x34bd('0x2f')][_0x34bd('0x30')]?_0x26b8e7['attributes']:_0x4500c8[_0x34bd('0x2e')];if(!_0x16581f[_0x34bd('0x2b')]['hasOwnProperty'](_0x34bd('0x31'))){_0x26b8e7[_0x34bd('0x1a')]=qs[_0x34bd('0x1a')](_0x16581f['query'][_0x34bd('0x1a')]);_0x26b8e7[_0x34bd('0x18')]=qs['offset'](_0x16581f[_0x34bd('0x2b')][_0x34bd('0x18')]);}_0x26b8e7[_0x34bd('0x32')]=qs[_0x34bd('0x33')](_0x16581f[_0x34bd('0x2b')][_0x34bd('0x33')]);_0x26b8e7['where']=qs['filters'](_['pick'](_0x16581f[_0x34bd('0x2b')],_0x4500c8[_0x34bd('0x34')]),_0x58b431);if(_0x16581f['query']['filter']){_0x26b8e7[_0x34bd('0x35')]=_['merge'](_0x26b8e7['where'],{'$or':_[_0x34bd('0x26')](_0x58b431,function(_0xb5a456){if(_0xb5a456[_0x34bd('0x29')]!==_0x34bd('0x36')){var _0x2af1af={};_0x2af1af[_0xb5a456['name']]={'$like':'%'+_0x16581f['query'][_0x34bd('0x37')]+'%'};return _0x2af1af;}})});}_0x26b8e7=_['merge']({},_0x26b8e7,_0x16581f[_0x34bd('0x38')]);var _0x2c9b7a={'where':_0x26b8e7[_0x34bd('0x35')]};return db[_0x34bd('0x27')][_0x34bd('0x1b')](_0x2c9b7a)['then'](function(_0x282297){_0x177d43[_0x34bd('0x1b')]=_0x282297;if(_0x16581f[_0x34bd('0x2b')][_0x34bd('0x39')]){_0x26b8e7['include']=[{'all':!![]}];}return db[_0x34bd('0x27')]['findAll'](_0x26b8e7);})[_0x34bd('0x21')](function(_0x560282){_0x177d43['rows']=_0x560282;return _0x177d43;})[_0x34bd('0x21')](respondWithFilteredResult(_0x3f675c,_0x26b8e7))['catch'](handleError(_0x3f675c,null));};exports[_0x34bd('0x3a')]=function(_0x3d3b96,_0x18e9f6){var _0x42a424={'raw':!![],'where':{'id':_0x3d3b96[_0x34bd('0x3b')]['id']}},_0x26d73e={};_0x26d73e[_0x34bd('0x2e')]=_['keys'](db['WhatsappApplication']['rawAttributes']);_0x26d73e[_0x34bd('0x2b')]=_[_0x34bd('0x2c')](_0x3d3b96[_0x34bd('0x2b')]);_0x26d73e[_0x34bd('0x34')]=_['intersection'](_0x26d73e[_0x34bd('0x2e')],_0x26d73e[_0x34bd('0x2b')]);_0x42a424[_0x34bd('0x2f')]=_[_0x34bd('0x2d')](_0x26d73e[_0x34bd('0x2e')],qs['fields'](_0x3d3b96[_0x34bd('0x2b')]['fields']));_0x42a424['attributes']=_0x42a424[_0x34bd('0x2f')]['length']?_0x42a424[_0x34bd('0x2f')]:_0x26d73e[_0x34bd('0x2e')];if(_0x3d3b96[_0x34bd('0x2b')][_0x34bd('0x39')]){_0x42a424[_0x34bd('0x3c')]=[{'all':!![]}];}_0x42a424=_['merge']({},_0x42a424,_0x3d3b96['options']);return db[_0x34bd('0x27')]['find'](_0x42a424)[_0x34bd('0x21')](handleEntityNotFound(_0x18e9f6,null))[_0x34bd('0x21')](respondWithResult(_0x18e9f6,null))[_0x34bd('0x3d')](handleError(_0x18e9f6,null));};exports['create']=function(_0x4ad00c,_0x4f96dd){return db['WhatsappApplication'][_0x34bd('0x3e')](_0x4ad00c['body'],{})[_0x34bd('0x21')](respondWithResult(_0x4f96dd,0xc9))['catch'](handleError(_0x4f96dd,null));};exports[_0x34bd('0x3f')]=function(_0x1d01d7,_0x1fa341){if(_0x1d01d7[_0x34bd('0x40')]['id']){delete _0x1d01d7[_0x34bd('0x40')]['id'];}return db['WhatsappApplication'][_0x34bd('0x41')]({'where':{'id':_0x1d01d7[_0x34bd('0x3b')]['id']}})[_0x34bd('0x21')](handleEntityNotFound(_0x1fa341,null))[_0x34bd('0x21')](saveUpdates(_0x1d01d7[_0x34bd('0x40')],null))['then'](respondWithResult(_0x1fa341,null))[_0x34bd('0x3d')](handleError(_0x1fa341,null));};exports[_0x34bd('0x20')]=function(_0x5bcce5,_0x1fc735){return db[_0x34bd('0x27')]['find']({'where':{'id':_0x5bcce5['params']['id']}})[_0x34bd('0x21')](handleEntityNotFound(_0x1fc735,null))['then'](removeEntity(_0x1fc735,null))['catch'](handleError(_0x1fc735,null));};
\ No newline at end of file
+var _0x7374=['to-csv','querystring','papaparse','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','end','status','offset','limit','undefined','count','set','Content-Range','json','apply','reject','save','update','then','destroy','error','name','map','WhatsappApplication','rawAttributes','fieldName','type','key','model','query','keys','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','sort','where','pick','filter','merge','VIRTUAL','options','includeAll','include','findAll','rows','catch','show','params','find','body','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','bluebird','mustache','util','path','ejs','fs-extra','lodash','squel','jsforce','desk.js'];(function(_0x2e1248,_0x3511fe){var _0x2df12a=function(_0x316d12){while(--_0x316d12){_0x2e1248['push'](_0x2e1248['shift']());}};_0x2df12a(++_0x3511fe);}(_0x7374,0x1b9));var _0x4737=function(_0x28b015,_0x1d5220){_0x28b015=_0x28b015-0x0;var _0x2801aa=_0x7374[_0x28b015];return _0x2801aa;};'use strict';var emlformat=require(_0x4737('0x0'));var rimraf=require(_0x4737('0x1'));var zipdir=require(_0x4737('0x2'));var jsonpatch=require(_0x4737('0x3'));var rp=require(_0x4737('0x4'));var moment=require('moment');var BPromise=require(_0x4737('0x5'));var Mustache=require(_0x4737('0x6'));var util=require(_0x4737('0x7'));var path=require(_0x4737('0x8'));var sox=require('sox');var csv=require('to-csv');var ejs=require(_0x4737('0x9'));var fs=require('fs');var fs_extra=require(_0x4737('0xa'));var _=require(_0x4737('0xb'));var squel=require(_0x4737('0xc'));var crypto=require('crypto');var jsforce=require(_0x4737('0xd'));var deskjs=require(_0x4737('0xe'));var toCsv=require(_0x4737('0xf'));var querystring=require(_0x4737('0x10'));var Papa=require(_0x4737('0x11'));var Redis=require('ioredis');var authService=require(_0x4737('0x12'));var qs=require(_0x4737('0x13'));var as=require(_0x4737('0x14'));var hardwareService=require('../../config/license/hardware');var logger=require('../../config/logger')(_0x4737('0x15'));var utils=require(_0x4737('0x16'));var config=require(_0x4737('0x17'));var licenseUtil=require(_0x4737('0x18'));var db=require(_0x4737('0x19'))['db'];function respondWithStatusCode(_0xe662e8,_0x438f1d){_0x438f1d=_0x438f1d||0xcc;return function(_0xa7c11){if(_0xa7c11){return _0xe662e8[_0x4737('0x1a')](_0x438f1d);}return _0xe662e8['status'](_0x438f1d)[_0x4737('0x1b')]();};}function respondWithResult(_0x301753,_0x69f87b){_0x69f87b=_0x69f87b||0xc8;return function(_0xc7fceb){if(_0xc7fceb){return _0x301753[_0x4737('0x1c')](_0x69f87b)['json'](_0xc7fceb);}};}function respondWithFilteredResult(_0x4c1a5a,_0xeb4aa2){return function(_0x48a8c3){if(_0x48a8c3){var _0x470ed4=typeof _0xeb4aa2[_0x4737('0x1d')]==='undefined'&&typeof _0xeb4aa2[_0x4737('0x1e')]===_0x4737('0x1f');var _0xef032a=_0x48a8c3['count'];var _0x2d2c32=_0x470ed4?0x0:_0xeb4aa2['offset'];var _0x37b74d=_0x470ed4?_0x48a8c3[_0x4737('0x20')]:_0xeb4aa2[_0x4737('0x1d')]+_0xeb4aa2[_0x4737('0x1e')];var _0x1b2183;if(_0x37b74d>=_0xef032a){_0x37b74d=_0xef032a;_0x1b2183=0xc8;}else{_0x1b2183=0xce;}_0x4c1a5a['status'](_0x1b2183);return _0x4c1a5a[_0x4737('0x21')](_0x4737('0x22'),_0x2d2c32+'-'+_0x37b74d+'/'+_0xef032a)[_0x4737('0x23')](_0x48a8c3);}return null;};}function patchUpdates(_0x354b71){return function(_0x54c899){try{jsonpatch[_0x4737('0x24')](_0x54c899,_0x354b71,!![]);}catch(_0x5d9ed4){return BPromise[_0x4737('0x25')](_0x5d9ed4);}return _0x54c899[_0x4737('0x26')]();};}function saveUpdates(_0x4c1292,_0x67fac){return function(_0x1c004f){if(_0x1c004f){return _0x1c004f[_0x4737('0x27')](_0x4c1292)[_0x4737('0x28')](function(_0x56d82f){return _0x56d82f;});}return null;};}function removeEntity(_0x116ef4,_0x2ce99e){return function(_0x49eddf){if(_0x49eddf){return _0x49eddf[_0x4737('0x29')]()['then'](function(){_0x116ef4[_0x4737('0x1c')](0xcc)[_0x4737('0x1b')]();});}};}function handleEntityNotFound(_0x3df6c5,_0x10685f){return function(_0xe8e844){if(!_0xe8e844){_0x3df6c5[_0x4737('0x1a')](0x194);}return _0xe8e844;};}function handleError(_0x542c14,_0x1cc0c7){_0x1cc0c7=_0x1cc0c7||0x1f4;return function(_0x52c764){logger[_0x4737('0x2a')](_0x52c764['stack']);if(_0x52c764[_0x4737('0x2b')]){delete _0x52c764[_0x4737('0x2b')];}_0x542c14[_0x4737('0x1c')](_0x1cc0c7)['send'](_0x52c764);};}exports['index']=function(_0x2d7486,_0x43d44a){var _0x14e4a2={},_0x2d587c={},_0x235f7b={'count':0x0,'rows':[]};var _0x5d6a2a=_[_0x4737('0x2c')](db[_0x4737('0x2d')][_0x4737('0x2e')],function(_0x31f2cd){return{'name':_0x31f2cd[_0x4737('0x2f')],'type':_0x31f2cd[_0x4737('0x30')][_0x4737('0x31')]};});_0x2d587c[_0x4737('0x32')]=_['map'](_0x5d6a2a,_0x4737('0x2b'));_0x2d587c[_0x4737('0x33')]=_[_0x4737('0x34')](_0x2d7486[_0x4737('0x33')]);_0x2d587c[_0x4737('0x35')]=_[_0x4737('0x36')](_0x2d587c[_0x4737('0x32')],_0x2d587c[_0x4737('0x33')]);_0x14e4a2[_0x4737('0x37')]=_['intersection'](_0x2d587c['model'],qs[_0x4737('0x38')](_0x2d7486[_0x4737('0x33')]['fields']));_0x14e4a2[_0x4737('0x37')]=_0x14e4a2[_0x4737('0x37')][_0x4737('0x39')]?_0x14e4a2[_0x4737('0x37')]:_0x2d587c[_0x4737('0x32')];if(!_0x2d7486[_0x4737('0x33')][_0x4737('0x3a')](_0x4737('0x3b'))){_0x14e4a2[_0x4737('0x1e')]=qs[_0x4737('0x1e')](_0x2d7486['query'][_0x4737('0x1e')]);_0x14e4a2[_0x4737('0x1d')]=qs[_0x4737('0x1d')](_0x2d7486[_0x4737('0x33')]['offset']);}_0x14e4a2['order']=qs[_0x4737('0x3c')](_0x2d7486['query'][_0x4737('0x3c')]);_0x14e4a2[_0x4737('0x3d')]=qs['filters'](_[_0x4737('0x3e')](_0x2d7486[_0x4737('0x33')],_0x2d587c[_0x4737('0x35')]),_0x5d6a2a);if(_0x2d7486[_0x4737('0x33')][_0x4737('0x3f')]){_0x14e4a2[_0x4737('0x3d')]=_[_0x4737('0x40')](_0x14e4a2['where'],{'$or':_[_0x4737('0x2c')](_0x5d6a2a,function(_0x133744){if(_0x133744[_0x4737('0x30')]!==_0x4737('0x41')){var _0x658ea3={};_0x658ea3[_0x133744[_0x4737('0x2b')]]={'$like':'%'+_0x2d7486['query'][_0x4737('0x3f')]+'%'};return _0x658ea3;}})});}_0x14e4a2=_[_0x4737('0x40')]({},_0x14e4a2,_0x2d7486[_0x4737('0x42')]);var _0x4bd105={'where':_0x14e4a2['where']};return db[_0x4737('0x2d')][_0x4737('0x20')](_0x4bd105)['then'](function(_0x27bc72){_0x235f7b[_0x4737('0x20')]=_0x27bc72;if(_0x2d7486[_0x4737('0x33')][_0x4737('0x43')]){_0x14e4a2[_0x4737('0x44')]=[{'all':!![]}];}return db[_0x4737('0x2d')][_0x4737('0x45')](_0x14e4a2);})[_0x4737('0x28')](function(_0x90fea6){_0x235f7b[_0x4737('0x46')]=_0x90fea6;return _0x235f7b;})[_0x4737('0x28')](respondWithFilteredResult(_0x43d44a,_0x14e4a2))[_0x4737('0x47')](handleError(_0x43d44a,null));};exports[_0x4737('0x48')]=function(_0x1d3620,_0x5eccca){var _0x28ca8a={'raw':!![],'where':{'id':_0x1d3620[_0x4737('0x49')]['id']}},_0xce2e64={};_0xce2e64[_0x4737('0x32')]=_[_0x4737('0x34')](db[_0x4737('0x2d')][_0x4737('0x2e')]);_0xce2e64[_0x4737('0x33')]=_[_0x4737('0x34')](_0x1d3620['query']);_0xce2e64[_0x4737('0x35')]=_[_0x4737('0x36')](_0xce2e64[_0x4737('0x32')],_0xce2e64['query']);_0x28ca8a[_0x4737('0x37')]=_[_0x4737('0x36')](_0xce2e64[_0x4737('0x32')],qs[_0x4737('0x38')](_0x1d3620[_0x4737('0x33')]['fields']));_0x28ca8a['attributes']=_0x28ca8a[_0x4737('0x37')][_0x4737('0x39')]?_0x28ca8a[_0x4737('0x37')]:_0xce2e64[_0x4737('0x32')];if(_0x1d3620[_0x4737('0x33')]['includeAll']){_0x28ca8a[_0x4737('0x44')]=[{'all':!![]}];}_0x28ca8a=_[_0x4737('0x40')]({},_0x28ca8a,_0x1d3620[_0x4737('0x42')]);return db[_0x4737('0x2d')][_0x4737('0x4a')](_0x28ca8a)[_0x4737('0x28')](handleEntityNotFound(_0x5eccca,null))[_0x4737('0x28')](respondWithResult(_0x5eccca,null))['catch'](handleError(_0x5eccca,null));};exports['create']=function(_0x4a78d,_0x2ba038){return db[_0x4737('0x2d')]['create'](_0x4a78d[_0x4737('0x4b')],{})['then'](respondWithResult(_0x2ba038,0xc9))[_0x4737('0x47')](handleError(_0x2ba038,null));};exports[_0x4737('0x27')]=function(_0x2f63d8,_0xffb923){if(_0x2f63d8[_0x4737('0x4b')]['id']){delete _0x2f63d8[_0x4737('0x4b')]['id'];}return db[_0x4737('0x2d')][_0x4737('0x4a')]({'where':{'id':_0x2f63d8[_0x4737('0x49')]['id']}})['then'](handleEntityNotFound(_0xffb923,null))[_0x4737('0x28')](saveUpdates(_0x2f63d8[_0x4737('0x4b')],null))[_0x4737('0x28')](respondWithResult(_0xffb923,null))['catch'](handleError(_0xffb923,null));};exports[_0x4737('0x29')]=function(_0x3608b2,_0x1ffd12){return db['WhatsappApplication'][_0x4737('0x4a')]({'where':{'id':_0x3608b2[_0x4737('0x49')]['id']}})[_0x4737('0x28')](handleEntityNotFound(_0x1ffd12,null))[_0x4737('0x28')](removeEntity(_0x1ffd12,null))[_0x4737('0x47')](handleError(_0x1ffd12,null));};
\ No newline at end of file
index 1577f9b..140357b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3248=['WhatsappApplication','whatsapp_applications','utf8mb4_unicode_ci','lodash','util','../../config/logger','api','moment','bluebird','request-promise','../../config/environment','./whatsappApplication.attributes','define'];(function(_0x28caf4,_0x797e55){var _0x503f93=function(_0x1dca13){while(--_0x1dca13){_0x28caf4['push'](_0x28caf4['shift']());}};_0x503f93(++_0x797e55);}(_0x3248,0x1b0));var _0x8324=function(_0x52431f,_0x38a354){_0x52431f=_0x52431f-0x0;var _0x5845e1=_0x3248[_0x52431f];return _0x5845e1;};'use strict';var _=require(_0x8324('0x0'));var util=require(_0x8324('0x1'));var logger=require(_0x8324('0x2'))(_0x8324('0x3'));var moment=require(_0x8324('0x4'));var BPromise=require(_0x8324('0x5'));var rp=require(_0x8324('0x6'));var fs=require('fs');var path=require('path');var rimraf=require('rimraf');var config=require(_0x8324('0x7'));var attributes=require(_0x8324('0x8'));module['exports']=function(_0x18edd2,_0x283f5f){return _0x18edd2[_0x8324('0x9')](_0x8324('0xa'),attributes,{'tableName':_0x8324('0xb'),'paranoid':![],'indexes':[],'timestamps':!![],'charset':'utf8mb4','collate':_0x8324('0xc')});};
\ No newline at end of file
+var _0x2d17=['api','moment','request-promise','path','../../config/environment','exports','define','whatsapp_applications','utf8mb4','utf8mb4_unicode_ci','lodash','util'];(function(_0x22c495,_0x8dbd8){var _0xdd8429=function(_0x316ad1){while(--_0x316ad1){_0x22c495['push'](_0x22c495['shift']());}};_0xdd8429(++_0x8dbd8);}(_0x2d17,0x17e));var _0x72d1=function(_0x218712,_0x8a181b){_0x218712=_0x218712-0x0;var _0x5d3cc9=_0x2d17[_0x218712];return _0x5d3cc9;};'use strict';var _=require(_0x72d1('0x0'));var util=require(_0x72d1('0x1'));var logger=require('../../config/logger')(_0x72d1('0x2'));var moment=require(_0x72d1('0x3'));var BPromise=require('bluebird');var rp=require(_0x72d1('0x4'));var fs=require('fs');var path=require(_0x72d1('0x5'));var rimraf=require('rimraf');var config=require(_0x72d1('0x6'));var attributes=require('./whatsappApplication.attributes');module[_0x72d1('0x7')]=function(_0x50f551,_0x139ba0){return _0x50f551[_0x72d1('0x8')]('WhatsappApplication',attributes,{'tableName':_0x72d1('0x9'),'paranoid':![],'indexes':[],'timestamps':!![],'charset':_0x72d1('0xa'),'collate':_0x72d1('0xb')});};
\ No newline at end of file
index f013ab0..80f04d5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd2ea=['../../config/environment','jayson/promise','client','request','WhatsappApplication,\x20%s,\x20%s','request\x20sent','debug','WhatsappApplication,\x20%s,\x20%s,\x20%s','stringify','error','code','message','info','result','catch','lodash','util','moment','bluebird','randomstring','../../mysqldb','../../config/utils','../../config/logger','rpc'];(function(_0x2bc184,_0x526954){var _0x3b25f1=function(_0x113531){while(--_0x113531){_0x2bc184['push'](_0x2bc184['shift']());}};_0x3b25f1(++_0x526954);}(_0xd2ea,0x15f));var _0xad2e=function(_0x22fde9,_0x562673){_0x22fde9=_0x22fde9-0x0;var _0x2280d9=_0xd2ea[_0x22fde9];return _0x2280d9;};'use strict';var _=require(_0xad2e('0x0'));var util=require(_0xad2e('0x1'));var moment=require(_0xad2e('0x2'));var BPromise=require(_0xad2e('0x3'));var rs=require(_0xad2e('0x4'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0xad2e('0x5'))['db'];var utils=require(_0xad2e('0x6'));var logger=require(_0xad2e('0x7'))(_0xad2e('0x8'));var config=require(_0xad2e('0x9'));var jayson=require(_0xad2e('0xa'));var client=jayson[_0xad2e('0xb')]['http']({'port':0x232a});function respondWithRpcPromise(_0x3b5170,_0x3e3d1f,_0x2ff7b2){return new BPromise(function(_0x5710ac,_0x1e0e9e){return client[_0xad2e('0xc')](_0x3b5170,_0x2ff7b2)['then'](function(_0x1eed2f){logger['info'](_0xad2e('0xd'),_0x3e3d1f,_0xad2e('0xe'));logger[_0xad2e('0xf')](_0xad2e('0x10'),_0x3e3d1f,'request\x20sent',JSON[_0xad2e('0x11')](_0x1eed2f));if(_0x1eed2f['error']){if(_0x1eed2f[_0xad2e('0x12')][_0xad2e('0x13')]===0x1f4){logger[_0xad2e('0x12')](_0xad2e('0xd'),_0x3e3d1f,_0x1eed2f['error'][_0xad2e('0x14')]);return _0x1e0e9e(_0x1eed2f['error'][_0xad2e('0x14')]);}logger['error']('WhatsappApplication,\x20%s,\x20%s',_0x3e3d1f,_0x1eed2f['error']['message']);return _0x5710ac(_0x1eed2f[_0xad2e('0x12')][_0xad2e('0x14')]);}else{logger[_0xad2e('0x15')](_0xad2e('0xd'),_0x3e3d1f,_0xad2e('0xe'));_0x5710ac(_0x1eed2f[_0xad2e('0x16')][_0xad2e('0x14')]);}})[_0xad2e('0x17')](function(_0xd40b31){logger[_0xad2e('0x12')](_0xad2e('0xd'),_0x3e3d1f,_0xd40b31);_0x1e0e9e(_0xd40b31);});});}
\ No newline at end of file
+var _0x99e9=['../../mysqldb','../../config/utils','../../config/logger','../../config/environment','client','http','request','then','info','WhatsappApplication,\x20%s,\x20%s','request\x20sent','debug','WhatsappApplication,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','util','moment','bluebird','randomstring'];(function(_0x190725,_0x4c879f){var _0x4fe2de=function(_0x1d7d72){while(--_0x1d7d72){_0x190725['push'](_0x190725['shift']());}};_0x4fe2de(++_0x4c879f);}(_0x99e9,0xb4));var _0x999e=function(_0x3d5df9,_0x5b3623){_0x3d5df9=_0x3d5df9-0x0;var _0x50ba39=_0x99e9[_0x3d5df9];return _0x50ba39;};'use strict';var _=require('lodash');var util=require(_0x999e('0x0'));var moment=require(_0x999e('0x1'));var BPromise=require(_0x999e('0x2'));var rs=require(_0x999e('0x3'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x999e('0x4'))['db'];var utils=require(_0x999e('0x5'));var logger=require(_0x999e('0x6'))('rpc');var config=require(_0x999e('0x7'));var jayson=require('jayson/promise');var client=jayson[_0x999e('0x8')][_0x999e('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x100330,_0x18f337,_0x5c1c17){return new BPromise(function(_0x46aeae,_0x38a692){return client[_0x999e('0xa')](_0x100330,_0x5c1c17)[_0x999e('0xb')](function(_0x2c38cf){logger[_0x999e('0xc')](_0x999e('0xd'),_0x18f337,_0x999e('0xe'));logger[_0x999e('0xf')](_0x999e('0x10'),_0x18f337,_0x999e('0xe'),JSON[_0x999e('0x11')](_0x2c38cf));if(_0x2c38cf[_0x999e('0x12')]){if(_0x2c38cf[_0x999e('0x12')][_0x999e('0x13')]===0x1f4){logger[_0x999e('0x12')](_0x999e('0xd'),_0x18f337,_0x2c38cf['error'][_0x999e('0x14')]);return _0x38a692(_0x2c38cf['error'][_0x999e('0x14')]);}logger[_0x999e('0x12')](_0x999e('0xd'),_0x18f337,_0x2c38cf['error'][_0x999e('0x14')]);return _0x46aeae(_0x2c38cf['error'][_0x999e('0x14')]);}else{logger['info']('WhatsappApplication,\x20%s,\x20%s',_0x18f337,_0x999e('0xe'));_0x46aeae(_0x2c38cf[_0x999e('0x15')][_0x999e('0x14')]);}})[_0x999e('0x16')](function(_0x1e9bff){logger[_0x999e('0x12')]('WhatsappApplication,\x20%s,\x20%s',_0x18f337,_0x1e9bff);_0x38a692(_0x1e9bff);});});}
\ No newline at end of file
index f088da4..30344ed 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe0ae=['update','delete','destroy','/:id/tags','exports','path','connect-timeout','Router','../../components/auth/service','../../components/interaction/service','./whatsappInteraction.controller','index','get','/describe','isAuthenticated','show','/:id/messages','getMessages','post','addMessage','tracked','whatsapp','whatsappinteraction:addtags','addTags','/:id','whatsappinteraction:update'];(function(_0x42a281,_0x1b15e2){var _0x49a7c7=function(_0x2cf0d3){while(--_0x2cf0d3){_0x42a281['push'](_0x42a281['shift']());}};_0x49a7c7(++_0x1b15e2);}(_0xe0ae,0xa1));var _0xee0a=function(_0x58e469,_0x95ee3e){_0x58e469=_0x58e469-0x0;var _0x4c01c5=_0xe0ae[_0x58e469];return _0x4c01c5;};'use strict';var multer=require('multer');var util=require('util');var path=require(_0xee0a('0x0'));var timeout=require(_0xee0a('0x1'));var express=require('express');var router=express[_0xee0a('0x2')]();var fs_extra=require('fs-extra');var auth=require(_0xee0a('0x3'));var interaction=require(_0xee0a('0x4'));var config=require('../../config/environment');var controller=require(_0xee0a('0x5'));router['get']('/',auth['isAuthenticated'](),controller[_0xee0a('0x6')]);router[_0xee0a('0x7')](_0xee0a('0x8'),auth[_0xee0a('0x9')](),controller['describe']);router[_0xee0a('0x7')]('/:id',auth['isAuthenticated'](),controller[_0xee0a('0xa')]);router[_0xee0a('0x7')](_0xee0a('0xb'),auth['isAuthenticated'](),controller[_0xee0a('0xc')]);router[_0xee0a('0x7')]('/:id/download',auth[_0xee0a('0x9')](),controller['download']);router[_0xee0a('0xd')]('/',auth[_0xee0a('0x9')](),controller['create']);router[_0xee0a('0xd')]('/:id/messages',auth[_0xee0a('0x9')](),controller[_0xee0a('0xe')]);router['post']('/:id/tags',auth[_0xee0a('0x9')](),interaction[_0xee0a('0xf')](_0xee0a('0x10'),_0xee0a('0x11')),controller[_0xee0a('0x12')]);router['put'](_0xee0a('0x13'),auth[_0xee0a('0x9')](),interaction['tracked'](_0xee0a('0x10'),_0xee0a('0x14')),controller[_0xee0a('0x15')]);router[_0xee0a('0x16')]('/:id',auth[_0xee0a('0x9')](),interaction[_0xee0a('0xf')](_0xee0a('0x10'),'whatsappinteraction:destroy'),controller[_0xee0a('0x17')]);router[_0xee0a('0x16')](_0xee0a('0x18'),auth[_0xee0a('0x9')](),controller['removeTags']);module[_0xee0a('0x19')]=router;
\ No newline at end of file
+var _0xbfe8=['connect-timeout','express','../../components/auth/service','../../components/interaction/service','./whatsappInteraction.controller','get','isAuthenticated','/describe','describe','/:id','show','/:id/messages','getMessages','/:id/download','post','create','/:id/tags','tracked','whatsapp','addTags','put','delete','whatsappinteraction:destroy','destroy','exports','util'];(function(_0x3de10f,_0x40ebfb){var _0x2b6bc5=function(_0xa4ed30){while(--_0xa4ed30){_0x3de10f['push'](_0x3de10f['shift']());}};_0x2b6bc5(++_0x40ebfb);}(_0xbfe8,0x1b9));var _0x8bfe=function(_0x3b73d1,_0x238eb4){_0x3b73d1=_0x3b73d1-0x0;var _0x5d1ab5=_0xbfe8[_0x3b73d1];return _0x5d1ab5;};'use strict';var multer=require('multer');var util=require(_0x8bfe('0x0'));var path=require('path');var timeout=require(_0x8bfe('0x1'));var express=require(_0x8bfe('0x2'));var router=express['Router']();var fs_extra=require('fs-extra');var auth=require(_0x8bfe('0x3'));var interaction=require(_0x8bfe('0x4'));var config=require('../../config/environment');var controller=require(_0x8bfe('0x5'));router[_0x8bfe('0x6')]('/',auth[_0x8bfe('0x7')](),controller['index']);router[_0x8bfe('0x6')](_0x8bfe('0x8'),auth[_0x8bfe('0x7')](),controller[_0x8bfe('0x9')]);router[_0x8bfe('0x6')](_0x8bfe('0xa'),auth[_0x8bfe('0x7')](),controller[_0x8bfe('0xb')]);router[_0x8bfe('0x6')](_0x8bfe('0xc'),auth[_0x8bfe('0x7')](),controller[_0x8bfe('0xd')]);router[_0x8bfe('0x6')](_0x8bfe('0xe'),auth[_0x8bfe('0x7')](),controller['download']);router[_0x8bfe('0xf')]('/',auth['isAuthenticated'](),controller[_0x8bfe('0x10')]);router[_0x8bfe('0xf')](_0x8bfe('0xc'),auth['isAuthenticated'](),controller['addMessage']);router[_0x8bfe('0xf')](_0x8bfe('0x11'),auth[_0x8bfe('0x7')](),interaction[_0x8bfe('0x12')](_0x8bfe('0x13'),'whatsappinteraction:addtags'),controller[_0x8bfe('0x14')]);router[_0x8bfe('0x15')]('/:id',auth[_0x8bfe('0x7')](),interaction[_0x8bfe('0x12')](_0x8bfe('0x13'),'whatsappinteraction:update'),controller['update']);router[_0x8bfe('0x16')]('/:id',auth['isAuthenticated'](),interaction[_0x8bfe('0x12')](_0x8bfe('0x13'),_0x8bfe('0x17')),controller[_0x8bfe('0x18')]);router[_0x8bfe('0x16')](_0x8bfe('0x11'),auth[_0x8bfe('0x7')](),controller['removeTags']);module[_0x8bfe('0x19')]=router;
\ No newline at end of file
index e5fb882..4346116 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb715=['moment','BOOLEAN','DATE','STRING','out'];(function(_0x4b94b4,_0x174bbf){var _0x1597ce=function(_0x26fef1){while(--_0x26fef1){_0x4b94b4['push'](_0x4b94b4['shift']());}};_0x1597ce(++_0x174bbf);}(_0xb715,0x16d));var _0x5b71=function(_0x5de1d7,_0xde54ae){_0x5de1d7=_0x5de1d7-0x0;var _0x1593f0=_0xb715[_0x5de1d7];return _0x1593f0;};'use strict';var Sequelize=require('sequelize');var moment=require(_0x5b71('0x0'));module['exports']={'closed':{'type':Sequelize[_0x5b71('0x1')],'defaultValue':![]},'closedAt':{'type':Sequelize[_0x5b71('0x2')]},'disposition':{'type':Sequelize['STRING']},'secondDisposition':{'type':Sequelize[_0x5b71('0x3')]},'thirdDisposition':{'type':Sequelize['STRING']},'note':{'type':Sequelize[_0x5b71('0x3')]},'phone':{'type':Sequelize[_0x5b71('0x3')]},'read1stAt':{'type':Sequelize['DATE']},'firstMsgDirection':{'type':Sequelize['ENUM']('in',_0x5b71('0x4')),'defaultValue':'in','allowNull':![]},'lastMsgAt':{'type':Sequelize[_0x5b71('0x2')]},'lastMsgDirection':{'type':Sequelize['ENUM']('in','out'),'defaultValue':'in','allowNull':![]},'autoreplyExecuted':{'type':Sequelize[_0x5b71('0x1')],'defaultValue':![]}};
\ No newline at end of file
+var _0x7923=['moment','exports','BOOLEAN','DATE','STRING','ENUM','out','sequelize'];(function(_0x8cbcf4,_0x493954){var _0x4cf381=function(_0xe27711){while(--_0xe27711){_0x8cbcf4['push'](_0x8cbcf4['shift']());}};_0x4cf381(++_0x493954);}(_0x7923,0x8f));var _0x3792=function(_0xd591b0,_0x5be2d5){_0xd591b0=_0xd591b0-0x0;var _0x3ffd25=_0x7923[_0xd591b0];return _0x3ffd25;};'use strict';var Sequelize=require(_0x3792('0x0'));var moment=require(_0x3792('0x1'));module[_0x3792('0x2')]={'closed':{'type':Sequelize[_0x3792('0x3')],'defaultValue':![]},'closedAt':{'type':Sequelize[_0x3792('0x4')]},'disposition':{'type':Sequelize[_0x3792('0x5')]},'secondDisposition':{'type':Sequelize[_0x3792('0x5')]},'thirdDisposition':{'type':Sequelize['STRING']},'note':{'type':Sequelize[_0x3792('0x5')]},'phone':{'type':Sequelize['STRING']},'read1stAt':{'type':Sequelize['DATE']},'firstMsgDirection':{'type':Sequelize[_0x3792('0x6')]('in','out'),'defaultValue':'in','allowNull':![]},'lastMsgAt':{'type':Sequelize[_0x3792('0x4')]},'lastMsgDirection':{'type':Sequelize[_0x3792('0x6')]('in',_0x3792('0x7')),'defaultValue':'in','allowNull':![]},'autoreplyExecuted':{'type':Sequelize['BOOLEAN'],'defaultValue':![]}};
\ No newline at end of file
index 88a17cb..70412b1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2333=['omit','spread','Tag','emit','whatsappInteractionTags:save','removeTags','unix','join','root','server','files','attachments','transcript-%d-%s.zip','CmContact','Contact','lastName','Attachment','Messages','direction','secret','Account','Owner','mkdirSync','Whatsapp','N.A.','closed','closedAt','format','YYYY-MM-DD\x20HH:mm:ss','basename','existsSync','createReadStream','createWriteStream','out','System','firstName','read','renderFile','views','downloadInteraction.ejs','transcript-','.pdf','log','unlinkSync','eml-format','rimraf','request-promise','moment','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','../../components/export/pdf','../../config/license/hardware','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','redis','defaults','localhost','socket.io-emitter','./whatsappInteraction.socket','register','sendStatus','status','json','offset','count','limit','set','Content-Range','apply','reject','update','destroy','end','error','stack','name','send','Users','map','fullname','TagIds','Tags','forEach','push','then','rawAttributes','fieldName','type','key','model','keys','query','intersection','fields','length','hasOwnProperty','nolimit','sort','where','pick','filters','select','field','color','from','tools_tags','u.id','u.fullname','ui.WhatsappInteractionId','user_has_whatsapp_interactions','left_join','u.id\x20=\x20ui.UserId','cm_contacts','c.id\x20=\x20i.ContactId\x20AND\x20c.deletedAt\x20IS\x20NULL','users','o.id\x20=\x20i.UserId','whatsapp_accounts','a.id\x20=\x20i.WhatsappAccountId','me.WhatsappInteractionId\x20=\x20i.id','whatsapp_interaction_has_tags','it.WhatsappInteractionId\x20=\x20i.id','t.id\x20=\x20it.TagId','expr','search','sqlOperator','conditions','find','unreadMessages','having','`\x20=\x200','`\x20>\x200','operator','split','value','c.firstName\x20LIKE\x20?\x20OR\x20c.lastName\x20LIKE\x20?\x20OR\x20c.email\x20LIKE\x20?','ContactId','text','start','CONCAT(\x27,\x27,\x20`TagIds`,\x20\x27,\x27)\x20LIKE\x20?','union','User','$substring','UserId','buildExpression','body','compact','WhatsappAccountId','i.WhatsappAccountId\x20IN\x20?','concat','createdAt','parse','$gte','$lte','i.createdAt\x20BETWEEN\x20?\x20AND\x20?','null','\x20=\x20?','tag','filter','replace','isNumeric','MATCH\x20(me.body)\x20AGAINST\x20(?\x20IN\x20BOOLEAN\x20MODE)','getFullTextValue','CONCAT(c.firstName,\x20\x27\x20\x27,\x20c.lastName)\x20LIKE\x20?','group','i.id','Sequelize','QueryTypes','SELECT','SUM(me.read\x20=\x200\x20AND\x20me.direction\x20=\x20\x27in\x27)','order','contactName','DESC','isEmpty','t.id\x20IN\x20?','i.WhatsappAccountId\x20IS\x20NOT\x20NULL','user','agent','i.WhatsappAccountId\x20IS\x20NULL','role','sequelize','keyBy','merge','WhatsappInteraction','attributes','a.key','Account.key','a.mandatoryDisposition','Account.mandatoryDisposition','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','i.*','c.firstName','c.email','Contact.email','c.phone','Contact.phone','Contact.mobile','c.fax','Contact.fax','o.fullname','Owner.fullname','o.internal','Owner.internal','toString','WhatsappInteractionId','rows','catch','includeAll','options','create','params','describe','WhatsappMessage','ids','getMessages','findOne','include','findAll','addTags','setTags'];(function(_0x310448,_0x59f6bd){var _0xc0124b=function(_0x311d94){while(--_0x311d94){_0x310448['push'](_0x310448['shift']());}};_0xc0124b(++_0x59f6bd);}(_0x2333,0x11a));var _0x3233=function(_0x3471bc,_0xf67887){_0x3471bc=_0x3471bc-0x0;var _0x26fa10=_0x2333[_0x3471bc];return _0x26fa10;};'use strict';var emlformat=require(_0x3233('0x0'));var rimraf=require(_0x3233('0x1'));var zipdir=require('zip-dir');var jsonpatch=require('fast-json-patch');var rp=require(_0x3233('0x2'));var moment=require(_0x3233('0x3'));var BPromise=require('bluebird');var Mustache=require(_0x3233('0x4'));var util=require(_0x3233('0x5'));var path=require(_0x3233('0x6'));var sox=require(_0x3233('0x7'));var csv=require(_0x3233('0x8'));var ejs=require(_0x3233('0x9'));var fs=require('fs');var fs_extra=require(_0x3233('0xa'));var _=require(_0x3233('0xb'));var squel=require(_0x3233('0xc'));var crypto=require(_0x3233('0xd'));var jsforce=require(_0x3233('0xe'));var deskjs=require(_0x3233('0xf'));var toCsv=require(_0x3233('0x8'));var querystring=require(_0x3233('0x10'));var Papa=require(_0x3233('0x11'));var Redis=require(_0x3233('0x12'));var authService=require(_0x3233('0x13'));var qs=require(_0x3233('0x14'));var as=require(_0x3233('0x15'));var pdf=require(_0x3233('0x16'));var hardwareService=require(_0x3233('0x17'));var logger=require('../../config/logger')(_0x3233('0x18'));var utils=require(_0x3233('0x19'));var config=require(_0x3233('0x1a'));var licenseUtil=require(_0x3233('0x1b'));var db=require(_0x3233('0x1c'))['db'];config[_0x3233('0x1d')]=_[_0x3233('0x1e')](config[_0x3233('0x1d')],{'host':_0x3233('0x1f'),'port':0x18eb});var socket=require(_0x3233('0x20'))(new Redis(config[_0x3233('0x1d')]));require(_0x3233('0x21'))[_0x3233('0x22')](socket);function respondWithStatusCode(_0x562756,_0x5bef7e){_0x5bef7e=_0x5bef7e||0xcc;return function(_0xc71f65){if(_0xc71f65){return _0x562756[_0x3233('0x23')](_0x5bef7e);}return _0x562756[_0x3233('0x24')](_0x5bef7e)['end']();};}function respondWithResult(_0x198c7,_0x357fbd){_0x357fbd=_0x357fbd||0xc8;return function(_0x127227){if(_0x127227){return _0x198c7['status'](_0x357fbd)[_0x3233('0x25')](_0x127227);}};}function respondWithFilteredResult(_0x425e6f,_0x55fa30){return function(_0x38a9c0){if(_0x38a9c0){var _0x58420c=typeof _0x55fa30[_0x3233('0x26')]==='undefined'&&typeof _0x55fa30['limit']==='undefined';var _0x298f71=_0x38a9c0['count'];var _0x199f20=_0x58420c?0x0:_0x55fa30['offset'];var _0x305227=_0x58420c?_0x38a9c0[_0x3233('0x27')]:_0x55fa30[_0x3233('0x26')]+_0x55fa30[_0x3233('0x28')];var _0x51dfaa;if(_0x305227>=_0x298f71){_0x305227=_0x298f71;_0x51dfaa=0xc8;}else{_0x51dfaa=0xce;}_0x425e6f[_0x3233('0x24')](_0x51dfaa);return _0x425e6f[_0x3233('0x29')](_0x3233('0x2a'),_0x199f20+'-'+_0x305227+'/'+_0x298f71)['json'](_0x38a9c0);}return null;};}function patchUpdates(_0x290d77){return function(_0x495c1a){try{jsonpatch[_0x3233('0x2b')](_0x495c1a,_0x290d77,!![]);}catch(_0xa73f3e){return BPromise[_0x3233('0x2c')](_0xa73f3e);}return _0x495c1a['save']();};}function saveUpdates(_0x3ca20d,_0x55aa7b){return function(_0x33916b){if(_0x33916b){return _0x33916b[_0x3233('0x2d')](_0x3ca20d)['then'](function(_0x3351d3){return _0x3351d3;});}return null;};}function removeEntity(_0x49a421,_0x50871d){return function(_0x430e8e){if(_0x430e8e){return _0x430e8e[_0x3233('0x2e')]()['then'](function(){_0x49a421[_0x3233('0x24')](0xcc)[_0x3233('0x2f')]();});}};}function handleEntityNotFound(_0x27cec8,_0x4251e9){return function(_0x7471fd){if(!_0x7471fd){_0x27cec8['sendStatus'](0x194);}return _0x7471fd;};}function handleError(_0x43ae4b,_0xd4171b){_0xd4171b=_0xd4171b||0x1f4;return function(_0xabcf54){logger[_0x3233('0x30')](_0xabcf54[_0x3233('0x31')]);if(_0xabcf54[_0x3233('0x32')]){delete _0xabcf54[_0x3233('0x32')];}_0x43ae4b[_0x3233('0x24')](_0xd4171b)[_0x3233('0x33')](_0xabcf54);};}function getInteractionUsers(_0x5a35b5,_0x392e56){return new BPromise(function(_0xbcf692,_0x559515){try{if(_0x392e56[_0x5a35b5['id']]){_0x5a35b5[_0x3233('0x34')]=_[_0x3233('0x35')](_0x392e56[_0x5a35b5['id']],function(_0x53b6fe){return{'id':_0x53b6fe['id'],'fullname':_0x53b6fe[_0x3233('0x36')]};});}}catch(_0xe2af9c){_0x559515(_0xe2af9c);}_0xbcf692(_0x5a35b5);});}function getInteractionTags(_0x54947b,_0x25abd1){return new BPromise(function(_0xfb5932,_0x5eeee0){try{if(_0x54947b[_0x3233('0x37')]){_0x54947b[_0x3233('0x38')]=[];_0x54947b['TagIds']['split'](',')[_0x3233('0x39')](function(_0x4abf70){_0x54947b[_0x3233('0x38')][_0x3233('0x3a')](_0x25abd1[_0x4abf70]);});}delete _0x54947b['TagIds'];}catch(_0x21a4e6){_0x5eeee0(_0x21a4e6);}_0xfb5932(_0x54947b);});}function updateWhatsappInteraction(_0x861264,_0x36eab7,_0xb6438f){return new BPromise(function(_0xa35766,_0x127f67){return getInteractionUsers(_0x861264,_0xb6438f)['then'](function(_0x4eec1a){return getInteractionTags(_0x4eec1a,_0x36eab7);})[_0x3233('0x3b')](function(_0x3c2ab8){_0xa35766(_0x3c2ab8);})['catch'](function(_0x28717b){_0x127f67(_0x28717b);});});}exports['index']=function(_0x19a131,_0x15bdeb){var _0x470d2e={},_0x5f4be0={},_0xd30b2b={'count':0x0,'rows':[]};var _0xe97e1b=_[_0x3233('0x35')](db['WhatsappInteraction'][_0x3233('0x3c')],function(_0x461eb7){return{'name':_0x461eb7[_0x3233('0x3d')],'type':_0x461eb7[_0x3233('0x3e')][_0x3233('0x3f')]};});_0x5f4be0[_0x3233('0x40')]=_[_0x3233('0x35')](_0xe97e1b,_0x3233('0x32'));_0x5f4be0['query']=_[_0x3233('0x41')](_0x19a131[_0x3233('0x42')]);_0x5f4be0['filters']=_[_0x3233('0x43')](_0x5f4be0['model'],_0x5f4be0[_0x3233('0x42')]);_0x470d2e['attributes']=_[_0x3233('0x43')](_0x5f4be0[_0x3233('0x40')],qs[_0x3233('0x44')](_0x19a131[_0x3233('0x42')][_0x3233('0x44')]));_0x470d2e['attributes']=_0x470d2e['attributes'][_0x3233('0x45')]?_0x470d2e['attributes']:_0x5f4be0[_0x3233('0x40')];if(!_0x19a131[_0x3233('0x42')][_0x3233('0x46')](_0x3233('0x47'))){_0x470d2e[_0x3233('0x28')]=qs[_0x3233('0x28')](_0x19a131['query'][_0x3233('0x28')]);_0x470d2e[_0x3233('0x26')]=qs[_0x3233('0x26')](_0x19a131['query']['offset']);}_0x470d2e['order']=qs[_0x3233('0x48')](_0x19a131[_0x3233('0x42')][_0x3233('0x48')]);_0x470d2e[_0x3233('0x49')]=qs['filters'](_[_0x3233('0x4a')](_0x19a131['query'],_0x5f4be0[_0x3233('0x4b')]),_0xe97e1b);var _0x1fea90=[];var _0x4b5e4b=squel[_0x3233('0x4c')]()[_0x3233('0x4d')]('id')[_0x3233('0x4d')](_0x3233('0x32'))[_0x3233('0x4d')](_0x3233('0x4e'))[_0x3233('0x4f')](_0x3233('0x50'));var _0x3cefd2=squel['select']()[_0x3233('0x4d')](_0x3233('0x51'))[_0x3233('0x4d')](_0x3233('0x52'))[_0x3233('0x4d')](_0x3233('0x53'))[_0x3233('0x4f')](_0x3233('0x54'),'ui')[_0x3233('0x55')]('users','u',_0x3233('0x56'));var _0x20ef5e=squel[_0x3233('0x4c')]()['from']('whatsapp_interactions','i')[_0x3233('0x55')](_0x3233('0x57'),'c',_0x3233('0x58'))[_0x3233('0x55')](_0x3233('0x59'),'o',_0x3233('0x5a'))[_0x3233('0x55')](_0x3233('0x5b'),'a',_0x3233('0x5c'))['left_join']('whatsapp_messages','me',_0x3233('0x5d'))['left_join'](_0x3233('0x5e'),'it',_0x3233('0x5f'))[_0x3233('0x55')]('tools_tags','t',_0x3233('0x60'));var _0x37001b=squel[_0x3233('0x61')]();var _0x967a4f=[];var _0x521458=squel[_0x3233('0x61')]();var _0x43bd6e;if(_0x19a131[_0x3233('0x42')][_0x3233('0x62')]){_0x43bd6e=as['parseSearch'](_0x19a131['query'][_0x3233('0x62')]);var _0x8f809=_0x43bd6e[_0x3233('0x63')];for(var _0x1171b2=0x0;_0x1171b2<_0x43bd6e['conditions'][_0x3233('0x45')];_0x1171b2++){var _0x5ded3d=_0x43bd6e[_0x3233('0x64')][_0x1171b2];var _0x30ffa1='i';var _0x2304e0=_[_0x3233('0x65')](_0xe97e1b,[_0x3233('0x32'),_0x5ded3d['field']]);if(!_0x2304e0){switch(_0x5ded3d[_0x3233('0x4d')]){case _0x3233('0x66'):if(_0x5ded3d['value']==0x1){_0x20ef5e[_0x3233('0x67')]('`'+_0x5ded3d[_0x3233('0x4d')]+_0x3233('0x68'));}else{_0x20ef5e['having']('`'+_0x5ded3d['field']+_0x3233('0x69'));}break;case'Contact':if(_0x5ded3d[_0x3233('0x6a')]==='$substring'){if(_0x5ded3d['value'][_0x3233('0x6b')]('\x20')['length']>0x1){_0x37001b[_0x8f809]('MATCH\x20(c.firstName,\x20c.lastName,\x20c.phone,\x20c.mobile,\x20c.fax,\x20c.email)\x20AGAINST\x20(?\x20IN\x20BOOLEAN\x20MODE)',qs['getFullTextValue'](_0x5ded3d[_0x3233('0x6c')]),null);}else{var _0x287d10='%'+_0x5ded3d[_0x3233('0x6c')]+'%';_0x37001b[_0x8f809](_0x3233('0x6d'),_0x287d10,_0x287d10,_0x287d10);}}else{_0x2304e0=_[_0x3233('0x65')](_0xe97e1b,['name',_0x3233('0x6e')]);_0x5ded3d[_0x3233('0x4d')]=_0x3233('0x6e');_0x152867=as['buildExpression'](_0x30ffa1,_0x2304e0[_0x3233('0x3e')],_0x5ded3d);_0x37001b[_0x8f809](_0x152867[_0x3233('0x6f')],_0x152867[_0x3233('0x6c')][_0x3233('0x70')],_0x152867['value'][_0x3233('0x2f')]);}break;case'Tag':var _0x4235f7=_0x5ded3d[_0x3233('0x6c')][_0x3233('0x6b')](',')[_0x3233('0x35')](function(_0x531d97){return Number(_0x531d97);});_0x4235f7[_0x3233('0x39')](function(_0x33c791){_0x521458['or'](_0x3233('0x71'),'%,'+_0x33c791+',%');});_0x967a4f=_[_0x3233('0x72')](_0x967a4f,_0x4235f7);break;case _0x3233('0x73'):if(_0x5ded3d[_0x3233('0x6a')]===_0x3233('0x74')){_0x37001b[_0x8f809]('CONCAT_WS(\x27\x20\x27,\x20o.name,\x20o.fullname)\x20LIKE\x20?','%'+_0x5ded3d[_0x3233('0x6c')]+'%',null);}else{_0x2304e0=_[_0x3233('0x65')](_0xe97e1b,[_0x3233('0x32'),_0x3233('0x75')]);_0x5ded3d[_0x3233('0x4d')]=_0x3233('0x75');_0x152867=as[_0x3233('0x76')](_0x30ffa1,_0x2304e0[_0x3233('0x3e')],_0x5ded3d);_0x37001b[_0x8f809](_0x152867['text'],_0x152867[_0x3233('0x6c')]['start'],_0x152867[_0x3233('0x6c')][_0x3233('0x2f')]);}break;case _0x3233('0x77'):_0x152867=as[_0x3233('0x76')]('me',null,_0x5ded3d);_0x37001b[_0x8f809](_0x152867[_0x3233('0x6f')],_0x152867[_0x3233('0x6c')][_0x3233('0x70')],_0x152867[_0x3233('0x6c')]['end']);break;}}else{var _0x152867=as[_0x3233('0x76')](_0x30ffa1,_0x2304e0['type'],_0x5ded3d);_0x37001b[_0x8f809](_0x152867[_0x3233('0x6f')],_0x152867['value'][_0x3233('0x70')],_0x152867[_0x3233('0x6c')][_0x3233('0x2f')]);}}}else{var _0x262a21=_(_0x19a131['query'])[_0x3233('0x41')]()[_0x3233('0x35')](function(_0x15c784){return _['some'](_0xe97e1b,[_0x3233('0x32'),_0x15c784])?_0x15c784:undefined;})[_0x3233('0x78')]()[_0x3233('0x6c')]();if(!_['isEmpty'](_0x262a21)){_0x262a21[_0x3233('0x39')](function(_0x136dc5){if(_0x136dc5===_0x3233('0x79')){_0x20ef5e[_0x3233('0x49')](_0x3233('0x7a'),[][_0x3233('0x7b')](_0x19a131[_0x3233('0x42')][_0x136dc5]));}else if(_0x136dc5===_0x3233('0x7c')){var _0x4b450e=JSON[_0x3233('0x7d')](_0x19a131[_0x3233('0x42')][_0x136dc5])[_0x3233('0x7e')];var _0x33cc85=JSON[_0x3233('0x7d')](_0x19a131['query'][_0x136dc5])[_0x3233('0x7f')];_0x20ef5e[_0x3233('0x49')](_0x3233('0x80'),_0x4b450e,_0x33cc85);}else{if(_0x19a131[_0x3233('0x42')][_0x136dc5]===_0x3233('0x81')){_0x20ef5e[_0x3233('0x49')]('i.'+_0x136dc5+'\x20IS\x20NULL');}else{_0x20ef5e['where']('i.'+_0x136dc5+_0x3233('0x82'),_0x19a131[_0x3233('0x42')][_0x136dc5]);}}});}if(_0x19a131[_0x3233('0x42')]['read']){if(_0x19a131['query']['read']==0x1){_0x20ef5e[_0x3233('0x67')]('`unreadMessages`\x20=\x200');}else{_0x20ef5e['having']('`unreadMessages`\x20>\x200');}}if(_0x19a131[_0x3233('0x42')]['tag']){_0x967a4f=_['isArray'](_0x19a131[_0x3233('0x42')][_0x3233('0x83')])?_0x19a131[_0x3233('0x42')][_0x3233('0x83')]:new Array(_0x19a131[_0x3233('0x42')][_0x3233('0x83')]);_0x967a4f[_0x3233('0x39')](function(_0x7dbbad){_0x521458['or']('CONCAT(\x27,\x27,\x20`TagIds`,\x20\x27,\x27)\x20LIKE\x20?','%,'+_0x7dbbad+',%');});}if(_0x19a131[_0x3233('0x42')][_0x3233('0x84')]){var _0x30dfb6=_0x19a131['query'][_0x3233('0x84')][_0x3233('0x85')]('\x5c','\x5c\x5c')[_0x3233('0x85')](/'/g,'\x27\x27');if(qs[_0x3233('0x86')](_0x30dfb6)){_0x37001b['or']('i.id\x20LIKE\x20?',_0x30dfb6+'%')['or']('i.phone\x20LIKE\x20?',_0x30dfb6+'%');}else{_0x37001b['or'](_0x3233('0x87'),qs[_0x3233('0x88')](_0x30dfb6))['or'](_0x3233('0x89'),_0x30dfb6+'%');}}}_0x20ef5e['where'](_0x37001b);_0x20ef5e[_0x3233('0x8a')](_0x3233('0x8b'));var _0x2032eb={'type':db[_0x3233('0x8c')][_0x3233('0x8d')][_0x3233('0x8e')],'raw':!![]};var _0x38f267=_0x20ef5e['clone']();_0x38f267[_0x3233('0x4d')](_0x3233('0x8b'));_0x38f267[_0x3233('0x4d')](_0x3233('0x8f'),_0x3233('0x66'));if(_0x470d2e[_0x3233('0x90')]){_0x470d2e[_0x3233('0x90')][_0x3233('0x39')](function(_0x409fa1){var _0x47cca3=_0x409fa1[0x0]===_0x3233('0x91')?_0x409fa1[0x0]:'i.'+_0x409fa1[0x0];_0x20ef5e[_0x3233('0x90')](_0x47cca3,_0x409fa1[0x1]===_0x3233('0x92')?![]:!![]);});}if(!_[_0x3233('0x93')](_0x967a4f)){_0x20ef5e[_0x3233('0x67')](_0x521458);_0x38f267[_0x3233('0x49')](_0x3233('0x94'),_0x967a4f);}BPromise['resolve']()['then'](function(){if(!_0x43bd6e){if(_0x19a131['query'][_0x3233('0x79')])return;_0x38f267[_0x3233('0x49')](_0x3233('0x95'));_0x20ef5e[_0x3233('0x49')](_0x3233('0x95'));return;}if(_0x19a131[_0x3233('0x96')]['role']!==_0x3233('0x97'))return;return _0x19a131[_0x3233('0x96')]['getWhatsappAccounts']({'attributes':['id'],'raw':!![]})[_0x3233('0x3b')](function(_0x2762d1){if(_[_0x3233('0x93')](_0x2762d1)){_0x38f267['where'](_0x3233('0x98'));_0x20ef5e[_0x3233('0x49')](_0x3233('0x98'));}else{_0x38f267[_0x3233('0x49')](_0x3233('0x7a'),_[_0x3233('0x35')](_0x2762d1,'id'));_0x20ef5e[_0x3233('0x49')](_0x3233('0x7a'),_[_0x3233('0x35')](_0x2762d1,'id'));}});})[_0x3233('0x3b')](function(){if(_0x19a131[_0x3233('0x96')][_0x3233('0x99')]===_0x3233('0x97')&&!_0x43bd6e&&!_0x19a131[_0x3233('0x42')][_0x3233('0x79')])return[];return db[_0x3233('0x9a')][_0x3233('0x42')](_0x38f267['toString'](),_0x2032eb);})['then'](function(_0x28c755){_0xd30b2b[_0x3233('0x27')]=_0x28c755[_0x3233('0x45')];if(_0xd30b2b['count']===0x0)return[];return db[_0x3233('0x9a')][_0x3233('0x42')](_0x4b5e4b['toString'](),_0x2032eb)[_0x3233('0x3b')](function(_0x3c6f81){_0x1fea90=_[_0x3233('0x9b')](_0x3c6f81,'id');_0x2032eb=_[_0x3233('0x9c')](_0x2032eb,{'model':db[_0x3233('0x9d')],'mapToModel':!![],'raw':!![],'nest':!![]});if(_0x19a131['query'][_0x3233('0x44')]){_0x470d2e[_0x3233('0x9e')]['forEach'](function(_0x263b82){_0x20ef5e[_0x3233('0x4d')]('i.'+_0x263b82);});}else{_0x20ef5e[_0x3233('0x4d')](_0x3233('0x8f'),'unreadMessages');_0x20ef5e[_0x3233('0x4d')](_0x3233('0x9f'),_0x3233('0xa0'));_0x20ef5e[_0x3233('0x4d')](_0x3233('0xa1'),_0x3233('0xa2'));_0x20ef5e[_0x3233('0x4d')](_0x3233('0xa3'),_0x3233('0x91'));_0x20ef5e[_0x3233('0x4d')](_0x3233('0xa4'));_0x20ef5e['field'](_0x3233('0xa5'),'Contact.firstName');_0x20ef5e['field']('c.lastName','Contact.lastName');_0x20ef5e[_0x3233('0x4d')](_0x3233('0xa6'),_0x3233('0xa7'));_0x20ef5e[_0x3233('0x4d')](_0x3233('0xa8'),_0x3233('0xa9'));_0x20ef5e[_0x3233('0x4d')]('c.mobile',_0x3233('0xaa'));_0x20ef5e[_0x3233('0x4d')](_0x3233('0xab'),_0x3233('0xac'));_0x20ef5e[_0x3233('0x4d')](_0x3233('0xad'),_0x3233('0xae'));_0x20ef5e['field'](_0x3233('0xaf'),_0x3233('0xb0'));_0x20ef5e[_0x3233('0x4d')]('GROUP_CONCAT(DISTINCT\x20t.id)','TagIds');}if(_0x470d2e[_0x3233('0x28')])_0x20ef5e['limit'](_0x470d2e[_0x3233('0x28')]);if(_0x470d2e[_0x3233('0x26')])_0x20ef5e[_0x3233('0x26')](_0x470d2e[_0x3233('0x26')]);return db[_0x3233('0x9a')][_0x3233('0x42')](_0x20ef5e['toString'](),_0x2032eb);})[_0x3233('0x3b')](function(_0x2df1d3){if(_0x2df1d3['length']>0x0)_0x3cefd2[_0x3233('0x49')]('ui.WhatsappInteractionId\x20IN\x20?',_[_0x3233('0x35')](_0x2df1d3,'id'));return db[_0x3233('0x9a')][_0x3233('0x42')](_0x3cefd2[_0x3233('0xb1')](),_0x2032eb)[_0x3233('0x3b')](function(_0x488d05){var _0x517a44=_['groupBy'](_0x488d05,_0x3233('0xb2'));var _0x452930=[];_0x2df1d3[_0x3233('0x39')](function(_0x2fbb1c){_0x452930[_0x3233('0x3a')](updateWhatsappInteraction(_0x2fbb1c,_0x1fea90,_0x517a44));});return BPromise['all'](_0x452930);});});})['then'](function(_0x17cc8d){_0xd30b2b[_0x3233('0xb3')]=_0x17cc8d;return _0xd30b2b;})['then'](respondWithFilteredResult(_0x15bdeb,_0x470d2e))[_0x3233('0xb4')](handleError(_0x15bdeb,null));};exports['show']=function(_0x543080,_0x352602){var _0x2b5371={'raw':![],'where':{'id':_0x543080['params']['id']}},_0x544e84={};_0x544e84[_0x3233('0x40')]=_[_0x3233('0x41')](db['WhatsappInteraction'][_0x3233('0x3c')]);_0x544e84['query']=_[_0x3233('0x41')](_0x543080[_0x3233('0x42')]);_0x544e84[_0x3233('0x4b')]=_[_0x3233('0x43')](_0x544e84['model'],_0x544e84[_0x3233('0x42')]);_0x2b5371[_0x3233('0x9e')]=_['intersection'](_0x544e84['model'],qs[_0x3233('0x44')](_0x543080[_0x3233('0x42')][_0x3233('0x44')]));_0x2b5371[_0x3233('0x9e')]=_0x2b5371[_0x3233('0x9e')][_0x3233('0x45')]?_0x2b5371[_0x3233('0x9e')]:_0x544e84[_0x3233('0x40')];if(_0x543080[_0x3233('0x42')][_0x3233('0xb5')]){_0x2b5371['include']=[{'all':!![]}];}_0x2b5371=_[_0x3233('0x9c')]({},_0x2b5371,_0x543080[_0x3233('0xb6')]);return db['WhatsappInteraction'][_0x3233('0x65')](_0x2b5371)[_0x3233('0x3b')](handleEntityNotFound(_0x352602,null))[_0x3233('0x3b')](respondWithResult(_0x352602,null))['catch'](handleError(_0x352602,null));};exports[_0x3233('0xb7')]=function(_0x55b8b0,_0x576263){return db['WhatsappInteraction'][_0x3233('0xb7')](_0x55b8b0['body'],{})[_0x3233('0x3b')](respondWithResult(_0x576263,0xc9))['catch'](handleError(_0x576263,null));};exports[_0x3233('0x2d')]=function(_0x4b0415,_0x498a6b){if(_0x4b0415[_0x3233('0x77')]['id']){delete _0x4b0415[_0x3233('0x77')]['id'];}return db['WhatsappInteraction'][_0x3233('0x65')]({'where':{'id':_0x4b0415[_0x3233('0xb8')]['id']}})[_0x3233('0x3b')](handleEntityNotFound(_0x498a6b,null))[_0x3233('0x3b')](saveUpdates(_0x4b0415[_0x3233('0x77')],null))[_0x3233('0x3b')](respondWithResult(_0x498a6b,null))[_0x3233('0xb4')](handleError(_0x498a6b,null));};exports['destroy']=function(_0x283fe5,_0x57a648){return db['WhatsappInteraction']['find']({'where':{'id':_0x283fe5['params']['id']}})['then'](handleEntityNotFound(_0x57a648,null))['then'](removeEntity(_0x57a648,null))[_0x3233('0xb4')](handleError(_0x57a648,null));};exports[_0x3233('0xb9')]=function(_0x11353d,_0x1b18cb){return db[_0x3233('0x9d')][_0x3233('0xb9')]()[_0x3233('0x3b')](respondWithResult(_0x1b18cb,null))[_0x3233('0xb4')](handleError(_0x1b18cb,null));};exports['addMessage']=function(_0x3a4fb6,_0x33639a,_0x2ca7cf){return db[_0x3233('0xba')][_0x3233('0x65')]({'where':{'id':_0x3a4fb6[_0x3233('0xb8')]['id']}})[_0x3233('0x3b')](handleEntityNotFound(_0x33639a,null))[_0x3233('0x3b')](function(_0x351e58){if(_0x351e58){return _0x351e58['addMessage'](_0x3a4fb6[_0x3233('0x77')][_0x3233('0xbb')],_['omit'](_0x3a4fb6[_0x3233('0x77')],['ids','id'])||{});}})[_0x3233('0x3b')](respondWithResult(_0x33639a,null))[_0x3233('0xb4')](handleError(_0x33639a,null));};exports[_0x3233('0xbc')]=function(_0x19eb9c,_0x1dd733,_0x4f90a3){var _0x48f9c1={'raw':![],'where':{}};var _0x30d03e={};var _0x42515a={'count':0x0,'rows':[]};return db['WhatsappInteraction'][_0x3233('0xbd')]({'where':{'id':_0x19eb9c[_0x3233('0xb8')]['id']}})[_0x3233('0x3b')](handleEntityNotFound(_0x1dd733,null))['then'](function(_0xd1e5a7){if(_0xd1e5a7){_0x30d03e[_0x3233('0x40')]=_[_0x3233('0x41')](db[_0x3233('0xba')][_0x3233('0x3c')]);_0x30d03e[_0x3233('0x42')]=_['keys'](_0x19eb9c[_0x3233('0x42')]);_0x30d03e[_0x3233('0x4b')]=_['intersection'](_0x30d03e[_0x3233('0x40')],_0x30d03e[_0x3233('0x42')]);_0x48f9c1[_0x3233('0x9e')]=_[_0x3233('0x43')](_0x30d03e[_0x3233('0x40')],qs['fields'](_0x19eb9c['query'][_0x3233('0x44')]));_0x48f9c1[_0x3233('0x9e')]=_0x48f9c1[_0x3233('0x9e')]['length']?_0x48f9c1['attributes']:_0x30d03e[_0x3233('0x40')];if(!_0x19eb9c[_0x3233('0x42')][_0x3233('0x46')](_0x3233('0x47'))){_0x48f9c1[_0x3233('0x28')]=qs['limit'](_0x19eb9c['query'][_0x3233('0x28')]);_0x48f9c1[_0x3233('0x26')]=qs[_0x3233('0x26')](_0x19eb9c['query'][_0x3233('0x26')]);}_0x48f9c1[_0x3233('0x90')]=qs[_0x3233('0x48')](_0x19eb9c['query'][_0x3233('0x48')]);_0x48f9c1[_0x3233('0x49')]=qs[_0x3233('0x4b')](_[_0x3233('0x4a')](_0x19eb9c['query'],_0x30d03e['filters']));_0x48f9c1[_0x3233('0x49')][_0x3233('0xb2')]=_0xd1e5a7['id'];if(_0x19eb9c[_0x3233('0x42')][_0x3233('0x84')]){_0x48f9c1[_0x3233('0x49')]=_[_0x3233('0x9c')](_0x48f9c1['where'],{'$or':_['map'](_0x48f9c1[_0x3233('0x9e')],function(_0x29f654){var _0x5d1e0f={};_0x5d1e0f[_0x29f654]={'$like':'%'+_0x19eb9c['query'][_0x3233('0x84')]+'%'};return _0x5d1e0f;})});}if(_0x19eb9c[_0x3233('0x42')][_0x3233('0x7e')]){var _0x5084a3=_0x19eb9c[_0x3233('0x42')][_0x3233('0x7e')][_0x3233('0x6b')](',');var _0x3f81b5={};_0x3f81b5[_0x5084a3[0x0]]={'$gte':moment(_0x5084a3[0x1])['format']('YYYY-MM-DD\x20HH:mm:ss')};_0x48f9c1['where']=_[_0x3233('0x9c')](_0x48f9c1['where'],_0x3f81b5);}_0x48f9c1=_[_0x3233('0x9c')]({},_0x48f9c1,_0x19eb9c['options']);return db[_0x3233('0xba')][_0x3233('0x27')]({'where':_0x48f9c1[_0x3233('0x49')]})[_0x3233('0x3b')](function(_0x475282){_0x42515a[_0x3233('0x27')]=_0x475282;if(_0x19eb9c['query'][_0x3233('0xb5')]){_0x48f9c1[_0x3233('0xbe')]=[{'all':!![]}];}return db[_0x3233('0xba')][_0x3233('0xbf')](_0x48f9c1);})[_0x3233('0x3b')](function(_0x37be69){_0x42515a[_0x3233('0xb3')]=_0x37be69;return _0x42515a;});}})[_0x3233('0x3b')](respondWithFilteredResult(_0x1dd733,_0x48f9c1))['catch'](handleError(_0x1dd733,null));};exports[_0x3233('0xc0')]=function(_0x3c7fb1,_0x4e86ed,_0x16195c){return db[_0x3233('0x9d')][_0x3233('0x65')]({'where':{'id':_0x3c7fb1['params']['id']}})[_0x3233('0x3b')](handleEntityNotFound(_0x4e86ed,null))['then'](function(_0x2aae45){if(_0x2aae45){return _0x2aae45[_0x3233('0xc1')](_0x3c7fb1[_0x3233('0x77')][_0x3233('0xbb')],_[_0x3233('0xc2')](_0x3c7fb1[_0x3233('0x77')],[_0x3233('0xbb'),'id'])||{})[_0x3233('0xc3')](function(){return db[_0x3233('0xc4')][_0x3233('0xbf')]({'attributes':['id',_0x3233('0x32'),_0x3233('0x4e')],'where':{'id':_0x3c7fb1['body'][_0x3233('0xbb')]}});})['then'](function(_0x4c193a){socket[_0x3233('0xc5')](_0x3233('0xc6'),{'id':Number(_0x3c7fb1['params']['id']),'tags':_0x4c193a||[]});return{'id':Number(_0x3c7fb1['params']['id']),'tags':_0x4c193a||[]};});}})[_0x3233('0x3b')](respondWithResult(_0x4e86ed,null))[_0x3233('0xb4')](handleError(_0x4e86ed,null));};exports[_0x3233('0xc7')]=function(_0x37d715,_0x4bc7d4,_0x1a793f){return db[_0x3233('0x9d')][_0x3233('0x65')]({'where':{'id':_0x37d715[_0x3233('0xb8')]['id']}})[_0x3233('0x3b')](handleEntityNotFound(_0x4bc7d4,null))[_0x3233('0x3b')](function(_0x979641){if(_0x979641){return _0x979641[_0x3233('0xc7')](_0x37d715[_0x3233('0x42')][_0x3233('0xbb')]);}})[_0x3233('0x3b')](respondWithStatusCode(_0x4bc7d4,null))[_0x3233('0xb4')](handleError(_0x4bc7d4,null));};exports['download']=function(_0x403a24,_0x1a8879){var _0x4b9676=moment()[_0x3233('0xc8')]()[_0x3233('0xb1')]();var _0x17d612=path[_0x3233('0xc9')](config[_0x3233('0xca')],_0x3233('0xcb'),_0x3233('0xcc'),'tmp');var _0x1fc7c9=path[_0x3233('0xc9')](config[_0x3233('0xca')],_0x3233('0xcb'),_0x3233('0xcc'),_0x3233('0xcd'));var _0x558c4f=path[_0x3233('0xc9')](_0x17d612,_0x4b9676);var _0xccf3a5=util['format'](_0x3233('0xce'),_0x403a24['params']['id'],_0x4b9676);var _0x4df725=path[_0x3233('0xc9')](_0x17d612,_0xccf3a5);var _0x595100=[];_0x595100['push']({'model':db['User'],'as':'User','attributes':['id','fullname'],'raw':!![]});_0x595100['push']({'model':db[_0x3233('0xcf')],'as':_0x3233('0xd0'),'attributes':['id','firstName',_0x3233('0xd1')],'raw':!![]});if(_0x403a24['query'][_0x3233('0xcd')]){_0x595100[_0x3233('0x3a')]({'model':db[_0x3233('0xd2')],'as':'Attachment','raw':!![]});}var _0x5eda55=[{'model':db[_0x3233('0xba')],'as':_0x3233('0xd3'),'attributes':['id',_0x3233('0x77'),_0x3233('0x7c'),_0x3233('0xd4'),_0x3233('0xd5'),'read'],'include':_0x595100}];_0x5eda55[_0x3233('0x3a')]({'model':db['WhatsappAccount'],'as':_0x3233('0xd6'),'attributes':['id',_0x3233('0x32')]});_0x5eda55[_0x3233('0x3a')]({'model':db[_0x3233('0x73')],'as':_0x3233('0xd7'),'attributes':['id',_0x3233('0x36')]});return db[_0x3233('0x9d')][_0x3233('0x65')]({'where':{'id':_0x403a24['params']['id']},'include':_0x5eda55})[_0x3233('0x3b')](handleEntityNotFound(_0x1a8879,null))[_0x3233('0x3b')](function(_0x1b42be){if(_0x1b42be){var _0x2b09ef=_0x1b42be['get']({'plain':!![]});fs[_0x3233('0xd8')](_0x558c4f);var _0x298b87={'channel':_0x3233('0xd9'),'account':_0x2b09ef['Account'][_0x3233('0x32')],'agent':_0x2b09ef[_0x3233('0xd7')]?_0x2b09ef[_0x3233('0xd7')][_0x3233('0x36')]:_0x3233('0xda'),'createdAt':moment(_0x2b09ef['createdAt'])['format']('YYYY-MM-DD\x20HH:mm:ss')[_0x3233('0xb1')](),'closedAt':_0x2b09ef[_0x3233('0xdb')]?moment(_0x2b09ef[_0x3233('0xdc')])[_0x3233('0xdd')](_0x3233('0xde'))[_0x3233('0xb1')]():'','disposition':_0x2b09ef['disposition'],'messages':_(_0x2b09ef[_0x3233('0xd3')])[_0x3233('0x84')]({'secret':![]})[_0x3233('0x35')](function(_0x4ff491){if(_0x4ff491['Attachment']){var _0x542110=path['join'](_0x1fc7c9,_0x4ff491[_0x3233('0xd2')][_0x3233('0xdf')]);if(fs[_0x3233('0xe0')](_0x542110)){fs[_0x3233('0xe1')](_0x542110)['pipe'](fs[_0x3233('0xe2')](path[_0x3233('0xc9')](_0x558c4f,_0x4ff491[_0x3233('0xd2')]['basename'])));}}return{'date':moment(_0x4ff491[_0x3233('0x7c')])[_0x3233('0xdd')]('YYYY-MM-DD\x20HH:mm:ss')['toString'](),'sender':_0x4ff491['direction']===_0x3233('0xe3')?_0x4ff491[_0x3233('0x73')]?_0x4ff491['User']['fullname']:_0x3233('0xe4'):_0x4ff491[_0x3233('0xd0')][_0x3233('0xe5')]+(_0x4ff491[_0x3233('0xd0')][_0x3233('0xd1')]?'\x20'+_0x4ff491[_0x3233('0xd0')][_0x3233('0xd1')]:''),'body':_0x4ff491[_0x3233('0xd2')]?_0x4ff491[_0x3233('0xd2')][_0x3233('0xdf')]:_0x4ff491[_0x3233('0x77')],'direction':_0x4ff491[_0x3233('0xd4')]===_0x3233('0xe3')?'A':'C','secret':_0x4ff491[_0x3233('0xd5')],'read':_0x4ff491[_0x3233('0xe6')],'attachment':_0x4ff491[_0x3233('0xd2')]};})[_0x3233('0x6c')]()};return ejs[_0x3233('0xe7')](path['join'](config[_0x3233('0xca')],_0x3233('0xcb'),_0x3233('0xe8'),_0x3233('0xe9')),{'interaction':_0x298b87})[_0x3233('0x3b')](function(_0x119f00){var _0x3fff02=path[_0x3233('0xc9')](_0x558c4f,_0x3233('0xea')+_0x2b09ef['id']+'-'+_0x4b9676+_0x3233('0xeb'));var _0x181440={'path':_0x3fff02,'channel':_0x3233('0xd9'),'interactionId':_0x2b09ef['id']};return pdf['createPdfFromHTML'](_0x119f00,_0x181440);})[_0x3233('0x3b')](function(){return new BPromise(function(_0x39ab95,_0x4a2f88){zipdir(_0x558c4f,{'saveTo':_0x4df725},function(_0x4b7d63,_0x2f3dca){if(_0x4b7d63)return _0x4a2f88(_0x4b7d63);return _0x39ab95(_0x2f3dca);});})[_0x3233('0x3b')](function(){return new BPromise(function(_0x5f5470,_0x305c30){rimraf(_0x558c4f,function(_0x912645){if(_0x912645)_0x305c30(_0x912645);return _0x5f5470();});});})[_0x3233('0x3b')](function(){return _0x1a8879['download'](_0x4df725,_0xccf3a5,function(_0xc41d29){if(_0xc41d29){console[_0x3233('0xec')]('err',_0xc41d29);}else{fs[_0x3233('0xed')](_0x4df725);}});});});}else{return _0x1a8879[_0x3233('0x23')](0xc8);}})['catch'](handleError(_0x1a8879,null));};
\ No newline at end of file
+var _0xc095=['u.id','u.fullname','ui.WhatsappInteractionId','from','left_join','users','whatsapp_interactions','cm_contacts','c.id\x20=\x20i.ContactId\x20AND\x20c.deletedAt\x20IS\x20NULL','o.id\x20=\x20i.UserId','whatsapp_accounts','a.id\x20=\x20i.WhatsappAccountId','me.WhatsappInteractionId\x20=\x20i.id','whatsapp_interaction_has_tags','it.WhatsappInteractionId\x20=\x20i.id','t.id\x20=\x20it.TagId','expr','search','sqlOperator','conditions','length','find','unreadMessages','value','having','`\x20>\x200','Contact','operator','MATCH\x20(c.firstName,\x20c.lastName,\x20c.phone,\x20c.mobile,\x20c.fax,\x20c.email)\x20AGAINST\x20(?\x20IN\x20BOOLEAN\x20MODE)','ContactId','buildExpression','text','start','Tag','CONCAT(\x27,\x27,\x20`TagIds`,\x20\x27,\x27)\x20LIKE\x20?','union','User','$substring','CONCAT_WS(\x27\x20\x27,\x20o.name,\x20o.fullname)\x20LIKE\x20?','UserId','body','compact','isEmpty','WhatsappAccountId','i.WhatsappAccountId\x20IN\x20?','parse','$lte','null','\x20IS\x20NULL','read','`unreadMessages`\x20=\x200','`unreadMessages`\x20>\x200','tag','filter','replace','isNumeric','i.phone\x20LIKE\x20?','MATCH\x20(me.body)\x20AGAINST\x20(?\x20IN\x20BOOLEAN\x20MODE)','CONCAT(c.firstName,\x20\x27\x20\x27,\x20c.lastName)\x20LIKE\x20?','group','i.id','Sequelize','QueryTypes','SELECT','clone','SUM(me.read\x20=\x200\x20AND\x20me.direction\x20=\x20\x27in\x27)','contactName','t.id\x20IN\x20?','resolve','i.WhatsappAccountId\x20IS\x20NOT\x20NULL','user','role','agent','getWhatsappAccounts','i.WhatsappAccountId\x20IS\x20NULL','sequelize','toString','merge','Account.key','a.mandatoryDisposition','Account.mandatoryDisposition','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','i.*','c.firstName','c.lastName','Contact.lastName','c.email','Contact.email','c.phone','Contact.phone','c.mobile','Contact.mobile','c.fax','o.fullname','Owner.internal','ui.WhatsappInteractionId\x20IN\x20?','WhatsappInteractionId','rows','show','params','include','options','create','update','describe','WhatsappMessage','addMessage','ids','getMessages','findOne','nolimit','$gte','format','includeAll','findAll','addTags','setTags','omit','spread','whatsappInteractionTags:save','removeTags','unix','join','root','server','tmp','files','attachments','transcript-%d-%s.zip','fullname','firstName','lastName','createdAt','direction','secret','WhatsappAccount','Account','get','mkdirSync','Whatsapp','Owner','closed','closedAt','Messages','Attachment','basename','existsSync','createReadStream','pipe','createWriteStream','out','System','renderFile','views','downloadInteraction.ejs','.pdf','createPdfFromHTML','download','log','unlinkSync','eml-format','rimraf','zip-dir','request-promise','moment','bluebird','mustache','util','path','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','desk.js','querystring','papaparse','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','api','../../config/environment','../../config/license/util','redis','socket.io-emitter','./whatsappInteraction.socket','register','sendStatus','status','end','json','offset','undefined','limit','count','set','Content-Range','apply','save','then','destroy','error','stack','name','send','map','Tags','TagIds','split','forEach','push','catch','WhatsappInteraction','rawAttributes','fieldName','type','key','model','query','keys','filters','intersection','attributes','fields','hasOwnProperty','order','sort','where','pick','select','field','color','tools_tags'];(function(_0x531d15,_0x599af5){var _0x271a18=function(_0x31284d){while(--_0x31284d){_0x531d15['push'](_0x531d15['shift']());}};_0x271a18(++_0x599af5);}(_0xc095,0x18c));var _0x5c09=function(_0x30d179,_0x129f9a){_0x30d179=_0x30d179-0x0;var _0x30acfe=_0xc095[_0x30d179];return _0x30acfe;};'use strict';var emlformat=require(_0x5c09('0x0'));var rimraf=require(_0x5c09('0x1'));var zipdir=require(_0x5c09('0x2'));var jsonpatch=require('fast-json-patch');var rp=require(_0x5c09('0x3'));var moment=require(_0x5c09('0x4'));var BPromise=require(_0x5c09('0x5'));var Mustache=require(_0x5c09('0x6'));var util=require(_0x5c09('0x7'));var path=require(_0x5c09('0x8'));var sox=require(_0x5c09('0x9'));var csv=require(_0x5c09('0xa'));var ejs=require(_0x5c09('0xb'));var fs=require('fs');var fs_extra=require(_0x5c09('0xc'));var _=require(_0x5c09('0xd'));var squel=require(_0x5c09('0xe'));var crypto=require(_0x5c09('0xf'));var jsforce=require('jsforce');var deskjs=require(_0x5c09('0x10'));var toCsv=require(_0x5c09('0xa'));var querystring=require(_0x5c09('0x11'));var Papa=require(_0x5c09('0x12'));var Redis=require('ioredis');var authService=require(_0x5c09('0x13'));var qs=require(_0x5c09('0x14'));var as=require(_0x5c09('0x15'));var pdf=require('../../components/export/pdf');var hardwareService=require('../../config/license/hardware');var logger=require(_0x5c09('0x16'))(_0x5c09('0x17'));var utils=require('../../config/utils');var config=require(_0x5c09('0x18'));var licenseUtil=require(_0x5c09('0x19'));var db=require('../../mysqldb')['db'];config[_0x5c09('0x1a')]=_['defaults'](config[_0x5c09('0x1a')],{'host':'localhost','port':0x18eb});var socket=require(_0x5c09('0x1b'))(new Redis(config[_0x5c09('0x1a')]));require(_0x5c09('0x1c'))[_0x5c09('0x1d')](socket);function respondWithStatusCode(_0xcdb0cf,_0x2f63fd){_0x2f63fd=_0x2f63fd||0xcc;return function(_0x15f494){if(_0x15f494){return _0xcdb0cf[_0x5c09('0x1e')](_0x2f63fd);}return _0xcdb0cf[_0x5c09('0x1f')](_0x2f63fd)[_0x5c09('0x20')]();};}function respondWithResult(_0x5d67b0,_0x340564){_0x340564=_0x340564||0xc8;return function(_0x59ad15){if(_0x59ad15){return _0x5d67b0[_0x5c09('0x1f')](_0x340564)[_0x5c09('0x21')](_0x59ad15);}};}function respondWithFilteredResult(_0x230159,_0x28d16a){return function(_0x56584b){if(_0x56584b){var _0x2cd61a=typeof _0x28d16a[_0x5c09('0x22')]===_0x5c09('0x23')&&typeof _0x28d16a[_0x5c09('0x24')]===_0x5c09('0x23');var _0x2e05c2=_0x56584b[_0x5c09('0x25')];var _0x42fdb9=_0x2cd61a?0x0:_0x28d16a[_0x5c09('0x22')];var _0x183800=_0x2cd61a?_0x56584b[_0x5c09('0x25')]:_0x28d16a[_0x5c09('0x22')]+_0x28d16a[_0x5c09('0x24')];var _0x5da446;if(_0x183800>=_0x2e05c2){_0x183800=_0x2e05c2;_0x5da446=0xc8;}else{_0x5da446=0xce;}_0x230159[_0x5c09('0x1f')](_0x5da446);return _0x230159[_0x5c09('0x26')](_0x5c09('0x27'),_0x42fdb9+'-'+_0x183800+'/'+_0x2e05c2)['json'](_0x56584b);}return null;};}function patchUpdates(_0x3aecab){return function(_0x295180){try{jsonpatch[_0x5c09('0x28')](_0x295180,_0x3aecab,!![]);}catch(_0x32b1d4){return BPromise['reject'](_0x32b1d4);}return _0x295180[_0x5c09('0x29')]();};}function saveUpdates(_0x17056d,_0x4e90ad){return function(_0x2182f3){if(_0x2182f3){return _0x2182f3['update'](_0x17056d)[_0x5c09('0x2a')](function(_0x241edf){return _0x241edf;});}return null;};}function removeEntity(_0x717e99,_0x3552f5){return function(_0x2ea46f){if(_0x2ea46f){return _0x2ea46f[_0x5c09('0x2b')]()['then'](function(){_0x717e99[_0x5c09('0x1f')](0xcc)[_0x5c09('0x20')]();});}};}function handleEntityNotFound(_0x3d2604,_0x25f54a){return function(_0x408ead){if(!_0x408ead){_0x3d2604[_0x5c09('0x1e')](0x194);}return _0x408ead;};}function handleError(_0x43049c,_0x4825ed){_0x4825ed=_0x4825ed||0x1f4;return function(_0x575198){logger[_0x5c09('0x2c')](_0x575198[_0x5c09('0x2d')]);if(_0x575198[_0x5c09('0x2e')]){delete _0x575198['name'];}_0x43049c[_0x5c09('0x1f')](_0x4825ed)[_0x5c09('0x2f')](_0x575198);};}function getInteractionUsers(_0x286285,_0x36de88){return new BPromise(function(_0x462bb7,_0x579de8){try{if(_0x36de88[_0x286285['id']]){_0x286285['Users']=_[_0x5c09('0x30')](_0x36de88[_0x286285['id']],function(_0xa59aac){return{'id':_0xa59aac['id'],'fullname':_0xa59aac['fullname']};});}}catch(_0x2c2abc){_0x579de8(_0x2c2abc);}_0x462bb7(_0x286285);});}function getInteractionTags(_0xa3d069,_0x486f26){return new BPromise(function(_0x52bcbd,_0x3748b9){try{if(_0xa3d069['TagIds']){_0xa3d069[_0x5c09('0x31')]=[];_0xa3d069[_0x5c09('0x32')][_0x5c09('0x33')](',')[_0x5c09('0x34')](function(_0x559173){_0xa3d069[_0x5c09('0x31')][_0x5c09('0x35')](_0x486f26[_0x559173]);});}delete _0xa3d069[_0x5c09('0x32')];}catch(_0x16a010){_0x3748b9(_0x16a010);}_0x52bcbd(_0xa3d069);});}function updateWhatsappInteraction(_0x658517,_0x45ba0c,_0x46567c){return new BPromise(function(_0x191531,_0x46167d){return getInteractionUsers(_0x658517,_0x46567c)[_0x5c09('0x2a')](function(_0x5c1ca9){return getInteractionTags(_0x5c1ca9,_0x45ba0c);})[_0x5c09('0x2a')](function(_0x5271fb){_0x191531(_0x5271fb);})[_0x5c09('0x36')](function(_0x523e10){_0x46167d(_0x523e10);});});}exports['index']=function(_0x42bff9,_0x754280){var _0x1d9d1c={},_0x3311c0={},_0x6fe33f={'count':0x0,'rows':[]};var _0x375b6f=_[_0x5c09('0x30')](db[_0x5c09('0x37')][_0x5c09('0x38')],function(_0x5657be){return{'name':_0x5657be[_0x5c09('0x39')],'type':_0x5657be[_0x5c09('0x3a')][_0x5c09('0x3b')]};});_0x3311c0[_0x5c09('0x3c')]=_[_0x5c09('0x30')](_0x375b6f,_0x5c09('0x2e'));_0x3311c0[_0x5c09('0x3d')]=_[_0x5c09('0x3e')](_0x42bff9[_0x5c09('0x3d')]);_0x3311c0[_0x5c09('0x3f')]=_[_0x5c09('0x40')](_0x3311c0[_0x5c09('0x3c')],_0x3311c0[_0x5c09('0x3d')]);_0x1d9d1c[_0x5c09('0x41')]=_[_0x5c09('0x40')](_0x3311c0['model'],qs[_0x5c09('0x42')](_0x42bff9[_0x5c09('0x3d')][_0x5c09('0x42')]));_0x1d9d1c[_0x5c09('0x41')]=_0x1d9d1c[_0x5c09('0x41')]['length']?_0x1d9d1c[_0x5c09('0x41')]:_0x3311c0[_0x5c09('0x3c')];if(!_0x42bff9['query'][_0x5c09('0x43')]('nolimit')){_0x1d9d1c[_0x5c09('0x24')]=qs['limit'](_0x42bff9[_0x5c09('0x3d')]['limit']);_0x1d9d1c['offset']=qs[_0x5c09('0x22')](_0x42bff9[_0x5c09('0x3d')]['offset']);}_0x1d9d1c[_0x5c09('0x44')]=qs['sort'](_0x42bff9[_0x5c09('0x3d')][_0x5c09('0x45')]);_0x1d9d1c[_0x5c09('0x46')]=qs[_0x5c09('0x3f')](_[_0x5c09('0x47')](_0x42bff9[_0x5c09('0x3d')],_0x3311c0['filters']),_0x375b6f);var _0x567ac6=[];var _0x49c7ee=squel[_0x5c09('0x48')]()[_0x5c09('0x49')]('id')[_0x5c09('0x49')](_0x5c09('0x2e'))[_0x5c09('0x49')](_0x5c09('0x4a'))['from'](_0x5c09('0x4b'));var _0x3fe8b8=squel[_0x5c09('0x48')]()[_0x5c09('0x49')](_0x5c09('0x4c'))[_0x5c09('0x49')](_0x5c09('0x4d'))[_0x5c09('0x49')](_0x5c09('0x4e'))[_0x5c09('0x4f')]('user_has_whatsapp_interactions','ui')[_0x5c09('0x50')](_0x5c09('0x51'),'u','u.id\x20=\x20ui.UserId');var _0x17e03b=squel['select']()[_0x5c09('0x4f')](_0x5c09('0x52'),'i')[_0x5c09('0x50')](_0x5c09('0x53'),'c',_0x5c09('0x54'))[_0x5c09('0x50')](_0x5c09('0x51'),'o',_0x5c09('0x55'))[_0x5c09('0x50')](_0x5c09('0x56'),'a',_0x5c09('0x57'))[_0x5c09('0x50')]('whatsapp_messages','me',_0x5c09('0x58'))['left_join'](_0x5c09('0x59'),'it',_0x5c09('0x5a'))[_0x5c09('0x50')]('tools_tags','t',_0x5c09('0x5b'));var _0x492791=squel['expr']();var _0x17aa91=[];var _0x53147c=squel[_0x5c09('0x5c')]();var _0x3e7c33;if(_0x42bff9[_0x5c09('0x3d')][_0x5c09('0x5d')]){_0x3e7c33=as['parseSearch'](_0x42bff9[_0x5c09('0x3d')][_0x5c09('0x5d')]);var _0x40fc45=_0x3e7c33[_0x5c09('0x5e')];for(var _0x29e245=0x0;_0x29e245<_0x3e7c33[_0x5c09('0x5f')][_0x5c09('0x60')];_0x29e245++){var _0x10b04b=_0x3e7c33['conditions'][_0x29e245];var _0x368da0='i';var _0x179026=_[_0x5c09('0x61')](_0x375b6f,[_0x5c09('0x2e'),_0x10b04b['field']]);if(!_0x179026){switch(_0x10b04b[_0x5c09('0x49')]){case _0x5c09('0x62'):if(_0x10b04b[_0x5c09('0x63')]==0x1){_0x17e03b[_0x5c09('0x64')]('`'+_0x10b04b[_0x5c09('0x49')]+'`\x20=\x200');}else{_0x17e03b[_0x5c09('0x64')]('`'+_0x10b04b[_0x5c09('0x49')]+_0x5c09('0x65'));}break;case _0x5c09('0x66'):if(_0x10b04b[_0x5c09('0x67')]==='$substring'){if(_0x10b04b[_0x5c09('0x63')][_0x5c09('0x33')]('\x20')[_0x5c09('0x60')]>0x1){_0x492791[_0x40fc45](_0x5c09('0x68'),qs['getFullTextValue'](_0x10b04b['value']),null);}else{var _0x321430='%'+_0x10b04b[_0x5c09('0x63')]+'%';_0x492791[_0x40fc45]('c.firstName\x20LIKE\x20?\x20OR\x20c.lastName\x20LIKE\x20?\x20OR\x20c.email\x20LIKE\x20?',_0x321430,_0x321430,_0x321430);}}else{_0x179026=_[_0x5c09('0x61')](_0x375b6f,[_0x5c09('0x2e'),_0x5c09('0x69')]);_0x10b04b[_0x5c09('0x49')]=_0x5c09('0x69');_0x2a089b=as[_0x5c09('0x6a')](_0x368da0,_0x179026['type'],_0x10b04b);_0x492791[_0x40fc45](_0x2a089b[_0x5c09('0x6b')],_0x2a089b['value'][_0x5c09('0x6c')],_0x2a089b[_0x5c09('0x63')][_0x5c09('0x20')]);}break;case _0x5c09('0x6d'):var _0x1c90cb=_0x10b04b['value'][_0x5c09('0x33')](',')[_0x5c09('0x30')](function(_0x5052c2){return Number(_0x5052c2);});_0x1c90cb[_0x5c09('0x34')](function(_0x2e9987){_0x53147c['or'](_0x5c09('0x6e'),'%,'+_0x2e9987+',%');});_0x17aa91=_[_0x5c09('0x6f')](_0x17aa91,_0x1c90cb);break;case _0x5c09('0x70'):if(_0x10b04b[_0x5c09('0x67')]===_0x5c09('0x71')){_0x492791[_0x40fc45](_0x5c09('0x72'),'%'+_0x10b04b[_0x5c09('0x63')]+'%',null);}else{_0x179026=_[_0x5c09('0x61')](_0x375b6f,['name',_0x5c09('0x73')]);_0x10b04b[_0x5c09('0x49')]=_0x5c09('0x73');_0x2a089b=as[_0x5c09('0x6a')](_0x368da0,_0x179026[_0x5c09('0x3a')],_0x10b04b);_0x492791[_0x40fc45](_0x2a089b[_0x5c09('0x6b')],_0x2a089b[_0x5c09('0x63')][_0x5c09('0x6c')],_0x2a089b[_0x5c09('0x63')][_0x5c09('0x20')]);}break;case _0x5c09('0x74'):_0x2a089b=as[_0x5c09('0x6a')]('me',null,_0x10b04b);_0x492791[_0x40fc45](_0x2a089b[_0x5c09('0x6b')],_0x2a089b['value'][_0x5c09('0x6c')],_0x2a089b[_0x5c09('0x63')][_0x5c09('0x20')]);break;}}else{var _0x2a089b=as[_0x5c09('0x6a')](_0x368da0,_0x179026[_0x5c09('0x3a')],_0x10b04b);_0x492791[_0x40fc45](_0x2a089b['text'],_0x2a089b[_0x5c09('0x63')][_0x5c09('0x6c')],_0x2a089b[_0x5c09('0x63')]['end']);}}}else{var _0x144e18=_(_0x42bff9[_0x5c09('0x3d')])[_0x5c09('0x3e')]()['map'](function(_0x117aa9){return _['some'](_0x375b6f,[_0x5c09('0x2e'),_0x117aa9])?_0x117aa9:undefined;})[_0x5c09('0x75')]()[_0x5c09('0x63')]();if(!_[_0x5c09('0x76')](_0x144e18)){_0x144e18['forEach'](function(_0x335521){if(_0x335521===_0x5c09('0x77')){_0x17e03b[_0x5c09('0x46')](_0x5c09('0x78'),[]['concat'](_0x42bff9['query'][_0x335521]));}else if(_0x335521==='createdAt'){var _0x323091=JSON['parse'](_0x42bff9[_0x5c09('0x3d')][_0x335521])['$gte'];var _0x208965=JSON[_0x5c09('0x79')](_0x42bff9[_0x5c09('0x3d')][_0x335521])[_0x5c09('0x7a')];_0x17e03b[_0x5c09('0x46')]('i.createdAt\x20BETWEEN\x20?\x20AND\x20?',_0x323091,_0x208965);}else{if(_0x42bff9['query'][_0x335521]===_0x5c09('0x7b')){_0x17e03b['where']('i.'+_0x335521+_0x5c09('0x7c'));}else{_0x17e03b['where']('i.'+_0x335521+'\x20=\x20?',_0x42bff9[_0x5c09('0x3d')][_0x335521]);}}});}if(_0x42bff9[_0x5c09('0x3d')]['read']){if(_0x42bff9[_0x5c09('0x3d')][_0x5c09('0x7d')]==0x1){_0x17e03b[_0x5c09('0x64')](_0x5c09('0x7e'));}else{_0x17e03b[_0x5c09('0x64')](_0x5c09('0x7f'));}}if(_0x42bff9[_0x5c09('0x3d')][_0x5c09('0x80')]){_0x17aa91=_['isArray'](_0x42bff9[_0x5c09('0x3d')][_0x5c09('0x80')])?_0x42bff9[_0x5c09('0x3d')][_0x5c09('0x80')]:new Array(_0x42bff9[_0x5c09('0x3d')][_0x5c09('0x80')]);_0x17aa91['forEach'](function(_0x553590){_0x53147c['or']('CONCAT(\x27,\x27,\x20`TagIds`,\x20\x27,\x27)\x20LIKE\x20?','%,'+_0x553590+',%');});}if(_0x42bff9[_0x5c09('0x3d')][_0x5c09('0x81')]){var _0x4ee3da=_0x42bff9[_0x5c09('0x3d')][_0x5c09('0x81')][_0x5c09('0x82')]('\x5c','\x5c\x5c')['replace'](/'/g,'\x27\x27');if(qs[_0x5c09('0x83')](_0x4ee3da)){_0x492791['or']('i.id\x20LIKE\x20?',_0x4ee3da+'%')['or'](_0x5c09('0x84'),_0x4ee3da+'%');}else{_0x492791['or'](_0x5c09('0x85'),qs['getFullTextValue'](_0x4ee3da))['or'](_0x5c09('0x86'),_0x4ee3da+'%');}}}_0x17e03b[_0x5c09('0x46')](_0x492791);_0x17e03b[_0x5c09('0x87')](_0x5c09('0x88'));var _0x4a60cb={'type':db[_0x5c09('0x89')][_0x5c09('0x8a')][_0x5c09('0x8b')],'raw':!![]};var _0x3e7224=_0x17e03b[_0x5c09('0x8c')]();_0x3e7224[_0x5c09('0x49')](_0x5c09('0x88'));_0x3e7224[_0x5c09('0x49')](_0x5c09('0x8d'),_0x5c09('0x62'));if(_0x1d9d1c[_0x5c09('0x44')]){_0x1d9d1c['order'][_0x5c09('0x34')](function(_0x2792bb){var _0x3d4faf=_0x2792bb[0x0]===_0x5c09('0x8e')?_0x2792bb[0x0]:'i.'+_0x2792bb[0x0];_0x17e03b[_0x5c09('0x44')](_0x3d4faf,_0x2792bb[0x1]==='DESC'?![]:!![]);});}if(!_[_0x5c09('0x76')](_0x17aa91)){_0x17e03b[_0x5c09('0x64')](_0x53147c);_0x3e7224[_0x5c09('0x46')](_0x5c09('0x8f'),_0x17aa91);}BPromise[_0x5c09('0x90')]()[_0x5c09('0x2a')](function(){if(!_0x3e7c33){if(_0x42bff9[_0x5c09('0x3d')][_0x5c09('0x77')])return;_0x3e7224[_0x5c09('0x46')](_0x5c09('0x91'));_0x17e03b[_0x5c09('0x46')]('i.WhatsappAccountId\x20IS\x20NOT\x20NULL');return;}if(_0x42bff9[_0x5c09('0x92')][_0x5c09('0x93')]!==_0x5c09('0x94'))return;return _0x42bff9[_0x5c09('0x92')][_0x5c09('0x95')]({'attributes':['id'],'raw':!![]})[_0x5c09('0x2a')](function(_0x40fe85){if(_[_0x5c09('0x76')](_0x40fe85)){_0x3e7224[_0x5c09('0x46')](_0x5c09('0x96'));_0x17e03b[_0x5c09('0x46')](_0x5c09('0x96'));}else{_0x3e7224['where'](_0x5c09('0x78'),_[_0x5c09('0x30')](_0x40fe85,'id'));_0x17e03b[_0x5c09('0x46')](_0x5c09('0x78'),_[_0x5c09('0x30')](_0x40fe85,'id'));}});})['then'](function(){if(_0x42bff9['user'][_0x5c09('0x93')]==='agent'&&!_0x3e7c33&&!_0x42bff9[_0x5c09('0x3d')]['WhatsappAccountId'])return[];return db[_0x5c09('0x97')][_0x5c09('0x3d')](_0x3e7224[_0x5c09('0x98')](),_0x4a60cb);})[_0x5c09('0x2a')](function(_0x33e873){_0x6fe33f[_0x5c09('0x25')]=_0x33e873['length'];if(_0x6fe33f['count']===0x0)return[];return db['sequelize'][_0x5c09('0x3d')](_0x49c7ee[_0x5c09('0x98')](),_0x4a60cb)[_0x5c09('0x2a')](function(_0x5ec47f){_0x567ac6=_['keyBy'](_0x5ec47f,'id');_0x4a60cb=_[_0x5c09('0x99')](_0x4a60cb,{'model':db['WhatsappInteraction'],'mapToModel':!![],'raw':!![],'nest':!![]});if(_0x42bff9[_0x5c09('0x3d')][_0x5c09('0x42')]){_0x1d9d1c[_0x5c09('0x41')][_0x5c09('0x34')](function(_0x53ee9c){_0x17e03b[_0x5c09('0x49')]('i.'+_0x53ee9c);});}else{_0x17e03b['field'](_0x5c09('0x8d'),_0x5c09('0x62'));_0x17e03b['field']('a.key',_0x5c09('0x9a'));_0x17e03b[_0x5c09('0x49')](_0x5c09('0x9b'),_0x5c09('0x9c'));_0x17e03b[_0x5c09('0x49')](_0x5c09('0x9d'),_0x5c09('0x8e'));_0x17e03b[_0x5c09('0x49')](_0x5c09('0x9e'));_0x17e03b[_0x5c09('0x49')](_0x5c09('0x9f'),'Contact.firstName');_0x17e03b['field'](_0x5c09('0xa0'),_0x5c09('0xa1'));_0x17e03b[_0x5c09('0x49')](_0x5c09('0xa2'),_0x5c09('0xa3'));_0x17e03b[_0x5c09('0x49')](_0x5c09('0xa4'),_0x5c09('0xa5'));_0x17e03b[_0x5c09('0x49')](_0x5c09('0xa6'),_0x5c09('0xa7'));_0x17e03b[_0x5c09('0x49')](_0x5c09('0xa8'),'Contact.fax');_0x17e03b[_0x5c09('0x49')](_0x5c09('0xa9'),'Owner.fullname');_0x17e03b[_0x5c09('0x49')]('o.internal',_0x5c09('0xaa'));_0x17e03b['field']('GROUP_CONCAT(DISTINCT\x20t.id)','TagIds');}if(_0x1d9d1c[_0x5c09('0x24')])_0x17e03b['limit'](_0x1d9d1c[_0x5c09('0x24')]);if(_0x1d9d1c[_0x5c09('0x22')])_0x17e03b['offset'](_0x1d9d1c[_0x5c09('0x22')]);return db[_0x5c09('0x97')][_0x5c09('0x3d')](_0x17e03b[_0x5c09('0x98')](),_0x4a60cb);})[_0x5c09('0x2a')](function(_0xa6dc7f){if(_0xa6dc7f[_0x5c09('0x60')]>0x0)_0x3fe8b8[_0x5c09('0x46')](_0x5c09('0xab'),_[_0x5c09('0x30')](_0xa6dc7f,'id'));return db[_0x5c09('0x97')][_0x5c09('0x3d')](_0x3fe8b8[_0x5c09('0x98')](),_0x4a60cb)[_0x5c09('0x2a')](function(_0x115c89){var _0x30a0ab=_['groupBy'](_0x115c89,_0x5c09('0xac'));var _0x5bc3c8=[];_0xa6dc7f[_0x5c09('0x34')](function(_0x4e9f7e){_0x5bc3c8[_0x5c09('0x35')](updateWhatsappInteraction(_0x4e9f7e,_0x567ac6,_0x30a0ab));});return BPromise['all'](_0x5bc3c8);});});})[_0x5c09('0x2a')](function(_0x2e5282){_0x6fe33f[_0x5c09('0xad')]=_0x2e5282;return _0x6fe33f;})['then'](respondWithFilteredResult(_0x754280,_0x1d9d1c))[_0x5c09('0x36')](handleError(_0x754280,null));};exports[_0x5c09('0xae')]=function(_0x50ea14,_0x1c4d8a){var _0x1469b7={'raw':![],'where':{'id':_0x50ea14[_0x5c09('0xaf')]['id']}},_0x279906={};_0x279906[_0x5c09('0x3c')]=_[_0x5c09('0x3e')](db[_0x5c09('0x37')][_0x5c09('0x38')]);_0x279906['query']=_[_0x5c09('0x3e')](_0x50ea14['query']);_0x279906['filters']=_[_0x5c09('0x40')](_0x279906[_0x5c09('0x3c')],_0x279906[_0x5c09('0x3d')]);_0x1469b7[_0x5c09('0x41')]=_['intersection'](_0x279906[_0x5c09('0x3c')],qs[_0x5c09('0x42')](_0x50ea14[_0x5c09('0x3d')]['fields']));_0x1469b7[_0x5c09('0x41')]=_0x1469b7[_0x5c09('0x41')]['length']?_0x1469b7['attributes']:_0x279906[_0x5c09('0x3c')];if(_0x50ea14[_0x5c09('0x3d')]['includeAll']){_0x1469b7[_0x5c09('0xb0')]=[{'all':!![]}];}_0x1469b7=_[_0x5c09('0x99')]({},_0x1469b7,_0x50ea14[_0x5c09('0xb1')]);return db[_0x5c09('0x37')][_0x5c09('0x61')](_0x1469b7)[_0x5c09('0x2a')](handleEntityNotFound(_0x1c4d8a,null))[_0x5c09('0x2a')](respondWithResult(_0x1c4d8a,null))[_0x5c09('0x36')](handleError(_0x1c4d8a,null));};exports['create']=function(_0x4c8cae,_0x76c9ef){return db[_0x5c09('0x37')][_0x5c09('0xb2')](_0x4c8cae[_0x5c09('0x74')],{})[_0x5c09('0x2a')](respondWithResult(_0x76c9ef,0xc9))['catch'](handleError(_0x76c9ef,null));};exports[_0x5c09('0xb3')]=function(_0x4b9f8a,_0x143ed3){if(_0x4b9f8a['body']['id']){delete _0x4b9f8a[_0x5c09('0x74')]['id'];}return db['WhatsappInteraction']['find']({'where':{'id':_0x4b9f8a[_0x5c09('0xaf')]['id']}})['then'](handleEntityNotFound(_0x143ed3,null))[_0x5c09('0x2a')](saveUpdates(_0x4b9f8a[_0x5c09('0x74')],null))[_0x5c09('0x2a')](respondWithResult(_0x143ed3,null))[_0x5c09('0x36')](handleError(_0x143ed3,null));};exports[_0x5c09('0x2b')]=function(_0x1f672a,_0x4d33f7){return db[_0x5c09('0x37')][_0x5c09('0x61')]({'where':{'id':_0x1f672a['params']['id']}})['then'](handleEntityNotFound(_0x4d33f7,null))['then'](removeEntity(_0x4d33f7,null))[_0x5c09('0x36')](handleError(_0x4d33f7,null));};exports[_0x5c09('0xb4')]=function(_0x10b077,_0xdd706d){return db[_0x5c09('0x37')][_0x5c09('0xb4')]()['then'](respondWithResult(_0xdd706d,null))['catch'](handleError(_0xdd706d,null));};exports['addMessage']=function(_0x1725e9,_0x16f7eb,_0x4f1fff){return db[_0x5c09('0xb5')][_0x5c09('0x61')]({'where':{'id':_0x1725e9[_0x5c09('0xaf')]['id']}})[_0x5c09('0x2a')](handleEntityNotFound(_0x16f7eb,null))['then'](function(_0x261f7e){if(_0x261f7e){return _0x261f7e[_0x5c09('0xb6')](_0x1725e9[_0x5c09('0x74')]['ids'],_['omit'](_0x1725e9[_0x5c09('0x74')],[_0x5c09('0xb7'),'id'])||{});}})['then'](respondWithResult(_0x16f7eb,null))[_0x5c09('0x36')](handleError(_0x16f7eb,null));};exports[_0x5c09('0xb8')]=function(_0x21f72e,_0x339225,_0x47ff77){var _0x265782={'raw':![],'where':{}};var _0x29fa35={};var _0x2ebc45={'count':0x0,'rows':[]};return db[_0x5c09('0x37')][_0x5c09('0xb9')]({'where':{'id':_0x21f72e[_0x5c09('0xaf')]['id']}})[_0x5c09('0x2a')](handleEntityNotFound(_0x339225,null))[_0x5c09('0x2a')](function(_0x6a1996){if(_0x6a1996){_0x29fa35[_0x5c09('0x3c')]=_['keys'](db[_0x5c09('0xb5')][_0x5c09('0x38')]);_0x29fa35['query']=_[_0x5c09('0x3e')](_0x21f72e[_0x5c09('0x3d')]);_0x29fa35[_0x5c09('0x3f')]=_['intersection'](_0x29fa35[_0x5c09('0x3c')],_0x29fa35['query']);_0x265782[_0x5c09('0x41')]=_[_0x5c09('0x40')](_0x29fa35[_0x5c09('0x3c')],qs[_0x5c09('0x42')](_0x21f72e[_0x5c09('0x3d')][_0x5c09('0x42')]));_0x265782['attributes']=_0x265782[_0x5c09('0x41')][_0x5c09('0x60')]?_0x265782[_0x5c09('0x41')]:_0x29fa35[_0x5c09('0x3c')];if(!_0x21f72e['query']['hasOwnProperty'](_0x5c09('0xba'))){_0x265782[_0x5c09('0x24')]=qs[_0x5c09('0x24')](_0x21f72e['query'][_0x5c09('0x24')]);_0x265782[_0x5c09('0x22')]=qs[_0x5c09('0x22')](_0x21f72e[_0x5c09('0x3d')][_0x5c09('0x22')]);}_0x265782[_0x5c09('0x44')]=qs[_0x5c09('0x45')](_0x21f72e[_0x5c09('0x3d')][_0x5c09('0x45')]);_0x265782[_0x5c09('0x46')]=qs[_0x5c09('0x3f')](_[_0x5c09('0x47')](_0x21f72e[_0x5c09('0x3d')],_0x29fa35[_0x5c09('0x3f')]));_0x265782[_0x5c09('0x46')][_0x5c09('0xac')]=_0x6a1996['id'];if(_0x21f72e['query'][_0x5c09('0x81')]){_0x265782[_0x5c09('0x46')]=_['merge'](_0x265782[_0x5c09('0x46')],{'$or':_[_0x5c09('0x30')](_0x265782[_0x5c09('0x41')],function(_0x34068b){var _0x53d6b0={};_0x53d6b0[_0x34068b]={'$like':'%'+_0x21f72e[_0x5c09('0x3d')]['filter']+'%'};return _0x53d6b0;})});}if(_0x21f72e[_0x5c09('0x3d')][_0x5c09('0xbb')]){var _0x152de4=_0x21f72e[_0x5c09('0x3d')]['$gte'][_0x5c09('0x33')](',');var _0x873c7c={};_0x873c7c[_0x152de4[0x0]]={'$gte':moment(_0x152de4[0x1])[_0x5c09('0xbc')]('YYYY-MM-DD\x20HH:mm:ss')};_0x265782['where']=_[_0x5c09('0x99')](_0x265782[_0x5c09('0x46')],_0x873c7c);}_0x265782=_[_0x5c09('0x99')]({},_0x265782,_0x21f72e[_0x5c09('0xb1')]);return db[_0x5c09('0xb5')][_0x5c09('0x25')]({'where':_0x265782[_0x5c09('0x46')]})[_0x5c09('0x2a')](function(_0x4bb5f9){_0x2ebc45[_0x5c09('0x25')]=_0x4bb5f9;if(_0x21f72e[_0x5c09('0x3d')][_0x5c09('0xbd')]){_0x265782['include']=[{'all':!![]}];}return db[_0x5c09('0xb5')][_0x5c09('0xbe')](_0x265782);})['then'](function(_0x53b4a6){_0x2ebc45['rows']=_0x53b4a6;return _0x2ebc45;});}})['then'](respondWithFilteredResult(_0x339225,_0x265782))[_0x5c09('0x36')](handleError(_0x339225,null));};exports[_0x5c09('0xbf')]=function(_0x4ec34c,_0x3bf7a4,_0x27da06){return db[_0x5c09('0x37')]['find']({'where':{'id':_0x4ec34c[_0x5c09('0xaf')]['id']}})[_0x5c09('0x2a')](handleEntityNotFound(_0x3bf7a4,null))[_0x5c09('0x2a')](function(_0x26a925){if(_0x26a925){return _0x26a925[_0x5c09('0xc0')](_0x4ec34c[_0x5c09('0x74')]['ids'],_[_0x5c09('0xc1')](_0x4ec34c[_0x5c09('0x74')],[_0x5c09('0xb7'),'id'])||{})[_0x5c09('0xc2')](function(){return db[_0x5c09('0x6d')][_0x5c09('0xbe')]({'attributes':['id',_0x5c09('0x2e'),_0x5c09('0x4a')],'where':{'id':_0x4ec34c[_0x5c09('0x74')]['ids']}});})['then'](function(_0x448cbf){socket['emit'](_0x5c09('0xc3'),{'id':Number(_0x4ec34c['params']['id']),'tags':_0x448cbf||[]});return{'id':Number(_0x4ec34c[_0x5c09('0xaf')]['id']),'tags':_0x448cbf||[]};});}})['then'](respondWithResult(_0x3bf7a4,null))[_0x5c09('0x36')](handleError(_0x3bf7a4,null));};exports[_0x5c09('0xc4')]=function(_0x5b1690,_0x3e75ab,_0x4285a0){return db[_0x5c09('0x37')][_0x5c09('0x61')]({'where':{'id':_0x5b1690[_0x5c09('0xaf')]['id']}})[_0x5c09('0x2a')](handleEntityNotFound(_0x3e75ab,null))[_0x5c09('0x2a')](function(_0x4cec3b){if(_0x4cec3b){return _0x4cec3b[_0x5c09('0xc4')](_0x5b1690[_0x5c09('0x3d')]['ids']);}})[_0x5c09('0x2a')](respondWithStatusCode(_0x3e75ab,null))[_0x5c09('0x36')](handleError(_0x3e75ab,null));};exports['download']=function(_0xed8f38,_0x406258){var _0x4cc0f4=moment()[_0x5c09('0xc5')]()[_0x5c09('0x98')]();var _0x39312f=path[_0x5c09('0xc6')](config[_0x5c09('0xc7')],_0x5c09('0xc8'),'files',_0x5c09('0xc9'));var _0x2817e8=path[_0x5c09('0xc6')](config[_0x5c09('0xc7')],_0x5c09('0xc8'),_0x5c09('0xca'),_0x5c09('0xcb'));var _0x2540fc=path[_0x5c09('0xc6')](_0x39312f,_0x4cc0f4);var _0x5d60c4=util[_0x5c09('0xbc')](_0x5c09('0xcc'),_0xed8f38[_0x5c09('0xaf')]['id'],_0x4cc0f4);var _0x480956=path['join'](_0x39312f,_0x5d60c4);var _0x3ab937=[];_0x3ab937[_0x5c09('0x35')]({'model':db[_0x5c09('0x70')],'as':_0x5c09('0x70'),'attributes':['id',_0x5c09('0xcd')],'raw':!![]});_0x3ab937[_0x5c09('0x35')]({'model':db['CmContact'],'as':_0x5c09('0x66'),'attributes':['id',_0x5c09('0xce'),_0x5c09('0xcf')],'raw':!![]});if(_0xed8f38[_0x5c09('0x3d')]['attachments']){_0x3ab937[_0x5c09('0x35')]({'model':db['Attachment'],'as':'Attachment','raw':!![]});}var _0x156ce1=[{'model':db[_0x5c09('0xb5')],'as':'Messages','attributes':['id',_0x5c09('0x74'),_0x5c09('0xd0'),_0x5c09('0xd1'),_0x5c09('0xd2'),_0x5c09('0x7d')],'include':_0x3ab937}];_0x156ce1[_0x5c09('0x35')]({'model':db[_0x5c09('0xd3')],'as':_0x5c09('0xd4'),'attributes':['id',_0x5c09('0x2e')]});_0x156ce1[_0x5c09('0x35')]({'model':db[_0x5c09('0x70')],'as':'Owner','attributes':['id',_0x5c09('0xcd')]});return db['WhatsappInteraction'][_0x5c09('0x61')]({'where':{'id':_0xed8f38[_0x5c09('0xaf')]['id']},'include':_0x156ce1})[_0x5c09('0x2a')](handleEntityNotFound(_0x406258,null))['then'](function(_0x240731){if(_0x240731){var _0x543498=_0x240731[_0x5c09('0xd5')]({'plain':!![]});fs[_0x5c09('0xd6')](_0x2540fc);var _0x4a5740={'channel':_0x5c09('0xd7'),'account':_0x543498[_0x5c09('0xd4')][_0x5c09('0x2e')],'agent':_0x543498['Owner']?_0x543498[_0x5c09('0xd8')]['fullname']:'N.A.','createdAt':moment(_0x543498[_0x5c09('0xd0')])['format']('YYYY-MM-DD\x20HH:mm:ss')[_0x5c09('0x98')](),'closedAt':_0x543498[_0x5c09('0xd9')]?moment(_0x543498[_0x5c09('0xda')])['format']('YYYY-MM-DD\x20HH:mm:ss')[_0x5c09('0x98')]():'','disposition':_0x543498['disposition'],'messages':_(_0x543498[_0x5c09('0xdb')])[_0x5c09('0x81')]({'secret':![]})[_0x5c09('0x30')](function(_0x55068f){if(_0x55068f[_0x5c09('0xdc')]){var _0x1b31c4=path[_0x5c09('0xc6')](_0x2817e8,_0x55068f[_0x5c09('0xdc')][_0x5c09('0xdd')]);if(fs[_0x5c09('0xde')](_0x1b31c4)){fs[_0x5c09('0xdf')](_0x1b31c4)[_0x5c09('0xe0')](fs[_0x5c09('0xe1')](path[_0x5c09('0xc6')](_0x2540fc,_0x55068f[_0x5c09('0xdc')][_0x5c09('0xdd')])));}}return{'date':moment(_0x55068f[_0x5c09('0xd0')])[_0x5c09('0xbc')]('YYYY-MM-DD\x20HH:mm:ss')[_0x5c09('0x98')](),'sender':_0x55068f['direction']===_0x5c09('0xe2')?_0x55068f[_0x5c09('0x70')]?_0x55068f['User'][_0x5c09('0xcd')]:_0x5c09('0xe3'):_0x55068f[_0x5c09('0x66')][_0x5c09('0xce')]+(_0x55068f[_0x5c09('0x66')][_0x5c09('0xcf')]?'\x20'+_0x55068f['Contact'][_0x5c09('0xcf')]:''),'body':_0x55068f['Attachment']?_0x55068f[_0x5c09('0xdc')][_0x5c09('0xdd')]:_0x55068f['body'],'direction':_0x55068f[_0x5c09('0xd1')]==='out'?'A':'C','secret':_0x55068f['secret'],'read':_0x55068f[_0x5c09('0x7d')],'attachment':_0x55068f[_0x5c09('0xdc')]};})[_0x5c09('0x63')]()};return ejs[_0x5c09('0xe4')](path[_0x5c09('0xc6')](config[_0x5c09('0xc7')],'server',_0x5c09('0xe5'),_0x5c09('0xe6')),{'interaction':_0x4a5740})[_0x5c09('0x2a')](function(_0x4d2d2d){var _0x587b21=path['join'](_0x2540fc,'transcript-'+_0x543498['id']+'-'+_0x4cc0f4+_0x5c09('0xe7'));var _0x299bcf={'path':_0x587b21,'channel':_0x5c09('0xd7'),'interactionId':_0x543498['id']};return pdf[_0x5c09('0xe8')](_0x4d2d2d,_0x299bcf);})['then'](function(){return new BPromise(function(_0x2d8277,_0x22d814){zipdir(_0x2540fc,{'saveTo':_0x480956},function(_0x2590c8,_0x4c2b03){if(_0x2590c8)return _0x22d814(_0x2590c8);return _0x2d8277(_0x4c2b03);});})[_0x5c09('0x2a')](function(){return new BPromise(function(_0x1ef47e,_0x2fefa9){rimraf(_0x2540fc,function(_0x5de948){if(_0x5de948)_0x2fefa9(_0x5de948);return _0x1ef47e();});});})[_0x5c09('0x2a')](function(){return _0x406258[_0x5c09('0xe9')](_0x480956,_0x5d60c4,function(_0x53ad25){if(_0x53ad25){console[_0x5c09('0xea')]('err',_0x53ad25);}else{fs[_0x5c09('0xeb')](_0x480956);}});});});}else{return _0x406258[_0x5c09('0x1e')](0xc8);}})[_0x5c09('0x36')](handleError(_0x406258,null));};
\ No newline at end of file
index 46a42e0..2587c91 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2bdb=['map','findAll','unreadMessages','length','emit','catch','hasOwnProperty','hook','exports','events','WhatsappInteraction','WhatsappMessage','setMaxListeners','save','remove','getUsers','then','setDataValue'];(function(_0x521782,_0x2044f8){var _0x3dd9b4=function(_0x1c2459){while(--_0x1c2459){_0x521782['push'](_0x521782['shift']());}};_0x3dd9b4(++_0x2044f8);}(_0x2bdb,0x105));var _0xb2bd=function(_0x4e4be6,_0x25aee9){_0x4e4be6=_0x4e4be6-0x0;var _0x111dc3=_0x2bdb[_0x4e4be6];return _0x111dc3;};'use strict';var EventEmitter=require(_0xb2bd('0x0'));var WhatsappInteraction=require('../../mysqldb')['db'][_0xb2bd('0x1')];var WhatsappMessage=require('../../mysqldb')['db'][_0xb2bd('0x2')];var WhatsappInteractionEvents=new EventEmitter();WhatsappInteractionEvents[_0xb2bd('0x3')](0x0);var events={'afterCreate':_0xb2bd('0x4'),'afterUpdate':'update','afterDestroy':_0xb2bd('0x5')};function emitEvent(_0x2be356){return function(_0x1fa03c,_0x4676c1,_0x461137){_0x1fa03c[_0xb2bd('0x6')]({'attributes':['id'],'raw':!![]})[_0xb2bd('0x7')](function(_0x5bae78){_0x1fa03c[_0xb2bd('0x8')]('Users',_0x5bae78[_0xb2bd('0x9')](function(_0x29f784){return{'id':_0x29f784['id']};}));return WhatsappMessage[_0xb2bd('0xa')]({'where':{'WhatsappInteractionId':_0x1fa03c['id'],'direction':'in','read':![]},'raw':!![]});})[_0xb2bd('0x7')](function(_0x412872){_0x1fa03c[_0xb2bd('0x8')](_0xb2bd('0xb'),_0x412872[_0xb2bd('0xc')]);WhatsappInteractionEvents[_0xb2bd('0xd')](_0x2be356+':'+_0x1fa03c['id'],_0x1fa03c);WhatsappInteractionEvents['emit'](_0x2be356,_0x1fa03c);_0x461137(null);})[_0xb2bd('0xe')](_0x461137(null));};}for(var e in events){if(events[_0xb2bd('0xf')](e)){var event=events[e];WhatsappInteraction[_0xb2bd('0x10')](e,emitEvent(event));}}module[_0xb2bd('0x11')]=WhatsappInteractionEvents;
\ No newline at end of file
+var _0x6c76=['catch','hasOwnProperty','hook','exports','events','../../mysqldb','WhatsappInteraction','WhatsappMessage','setMaxListeners','remove','then','Users','map','setDataValue','unreadMessages','emit'];(function(_0x5951e8,_0x42b9a7){var _0x20a1f5=function(_0x2bc968){while(--_0x2bc968){_0x5951e8['push'](_0x5951e8['shift']());}};_0x20a1f5(++_0x42b9a7);}(_0x6c76,0x184));var _0x66c7=function(_0x16abae,_0x280f58){_0x16abae=_0x16abae-0x0;var _0x162049=_0x6c76[_0x16abae];return _0x162049;};'use strict';var EventEmitter=require(_0x66c7('0x0'));var WhatsappInteraction=require(_0x66c7('0x1'))['db'][_0x66c7('0x2')];var WhatsappMessage=require('../../mysqldb')['db'][_0x66c7('0x3')];var WhatsappInteractionEvents=new EventEmitter();WhatsappInteractionEvents[_0x66c7('0x4')](0x0);var events={'afterCreate':'save','afterUpdate':'update','afterDestroy':_0x66c7('0x5')};function emitEvent(_0x2b7cf3){return function(_0x49d437,_0x175da0,_0x45b0a5){_0x49d437['getUsers']({'attributes':['id'],'raw':!![]})[_0x66c7('0x6')](function(_0x4dffcd){_0x49d437['setDataValue'](_0x66c7('0x7'),_0x4dffcd[_0x66c7('0x8')](function(_0x24349f){return{'id':_0x24349f['id']};}));return WhatsappMessage['findAll']({'where':{'WhatsappInteractionId':_0x49d437['id'],'direction':'in','read':![]},'raw':!![]});})[_0x66c7('0x6')](function(_0xbc35d9){_0x49d437[_0x66c7('0x9')](_0x66c7('0xa'),_0xbc35d9['length']);WhatsappInteractionEvents[_0x66c7('0xb')](_0x2b7cf3+':'+_0x49d437['id'],_0x49d437);WhatsappInteractionEvents[_0x66c7('0xb')](_0x2b7cf3,_0x49d437);_0x45b0a5(null);})[_0x66c7('0xc')](_0x45b0a5(null));};}for(var e in events){if(events[_0x66c7('0xd')](e)){var event=events[e];WhatsappInteraction[_0x66c7('0xe')](e,emitEvent(event));}}module[_0x66c7('0xf')]=WhatsappInteractionEvents;
\ No newline at end of file
index 0341b16..f4840eb 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x79d0=['path','../../config/environment','./whatsappInteraction.attributes','exports','WhatsappInteraction','changed','closedAt','format','YYYY-MM-DD\x20HH:mm:ss','lodash','../../config/logger','api','moment'];(function(_0x5998f4,_0x692111){var _0x67aa52=function(_0x153ad3){while(--_0x153ad3){_0x5998f4['push'](_0x5998f4['shift']());}};_0x67aa52(++_0x692111);}(_0x79d0,0xb2));var _0x079d=function(_0x3ff085,_0x27c92e){_0x3ff085=_0x3ff085-0x0;var _0x2b68c3=_0x79d0[_0x3ff085];return _0x2b68c3;};'use strict';var _=require(_0x079d('0x0'));var util=require('util');var logger=require(_0x079d('0x1'))(_0x079d('0x2'));var moment=require(_0x079d('0x3'));var BPromise=require('bluebird');var rp=require('request-promise');var fs=require('fs');var path=require(_0x079d('0x4'));var rimraf=require('rimraf');var config=require(_0x079d('0x5'));var attributes=require(_0x079d('0x6'));module[_0x079d('0x7')]=function(_0x209ecf,_0x31bb25){return _0x209ecf['define'](_0x079d('0x8'),attributes,{'tableName':'whatsapp_interactions','paranoid':![],'indexes':[],'timestamps':!![],'hooks':{'beforeUpdate':function(_0x4ee976,_0x42d5bf,_0x560858){if(_0x4ee976[_0x079d('0x9')]('closed')){_0x4ee976[_0x079d('0xa')]=moment()[_0x079d('0xb')](_0x079d('0xc'));}_0x560858(null,_0x4ee976);}}});};
\ No newline at end of file
+var _0x6b5f=['format','lodash','util','api','moment','path','rimraf','../../config/environment','./whatsappInteraction.attributes','define','whatsapp_interactions','changed','closed','closedAt'];(function(_0x125396,_0x5c4fbe){var _0x847cd7=function(_0x4a08fa){while(--_0x4a08fa){_0x125396['push'](_0x125396['shift']());}};_0x847cd7(++_0x5c4fbe);}(_0x6b5f,0x119));var _0xf6b5=function(_0x1e5b6d,_0x22dc70){_0x1e5b6d=_0x1e5b6d-0x0;var _0x175c9c=_0x6b5f[_0x1e5b6d];return _0x175c9c;};'use strict';var _=require(_0xf6b5('0x0'));var util=require(_0xf6b5('0x1'));var logger=require('../../config/logger')(_0xf6b5('0x2'));var moment=require(_0xf6b5('0x3'));var BPromise=require('bluebird');var rp=require('request-promise');var fs=require('fs');var path=require(_0xf6b5('0x4'));var rimraf=require(_0xf6b5('0x5'));var config=require(_0xf6b5('0x6'));var attributes=require(_0xf6b5('0x7'));module['exports']=function(_0x315de7,_0x1371d4){return _0x315de7[_0xf6b5('0x8')]('WhatsappInteraction',attributes,{'tableName':_0xf6b5('0x9'),'paranoid':![],'indexes':[],'timestamps':!![],'hooks':{'beforeUpdate':function(_0x4ab297,_0xecc7ff,_0x629fca){if(_0x4ab297[_0xf6b5('0xa')](_0xf6b5('0xb'))){_0x4ab297[_0xf6b5('0xc')]=moment()[_0xf6b5('0xd')]('YYYY-MM-DD\x20HH:mm:ss');}_0x629fca(null,_0x4ab297);}}});};
\ No newline at end of file
index e5e6f9d..9c90785 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x68ab=['moment','bluebird','randomstring','ioredis','../../mysqldb','rpc','../../config/environment','jayson/promise','http','redis','defaults','localhost','socket.io-emitter','request','then','info','WhatsappInteraction,\x20%s,\x20%s','request\x20sent','WhatsappInteraction,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','UpdateWhatsappInteraction','WhatsappInteraction','body','options','raw','debug','find','where','addTags','ids','omit','spread','AddTags','lodash','util'];(function(_0x4e8d75,_0x400022){var _0x3329d6=function(_0x11eb89){while(--_0x11eb89){_0x4e8d75['push'](_0x4e8d75['shift']());}};_0x3329d6(++_0x400022);}(_0x68ab,0x76));var _0xb68a=function(_0x58f65e,_0x467d61){_0x58f65e=_0x58f65e-0x0;var _0x35684b=_0x68ab[_0x58f65e];return _0x35684b;};'use strict';var _=require(_0xb68a('0x0'));var util=require(_0xb68a('0x1'));var moment=require(_0xb68a('0x2'));var BPromise=require(_0xb68a('0x3'));var rs=require(_0xb68a('0x4'));var fs=require('fs');var Redis=require(_0xb68a('0x5'));var db=require(_0xb68a('0x6'))['db'];var utils=require('../../config/utils');var logger=require('../../config/logger')(_0xb68a('0x7'));var config=require(_0xb68a('0x8'));var jayson=require(_0xb68a('0x9'));var client=jayson['client'][_0xb68a('0xa')]({'port':0x232a});config[_0xb68a('0xb')]=_[_0xb68a('0xc')](config[_0xb68a('0xb')],{'host':_0xb68a('0xd'),'port':0x18eb});var socket=require(_0xb68a('0xe'))(new Redis(config[_0xb68a('0xb')]));require('./whatsappInteraction.socket')['register'](socket);function respondWithRpcPromise(_0x1ea200,_0x2d7fde,_0x11b069){return new BPromise(function(_0x766e25,_0x1b207f){return client[_0xb68a('0xf')](_0x1ea200,_0x11b069)[_0xb68a('0x10')](function(_0x49edb8){logger[_0xb68a('0x11')](_0xb68a('0x12'),_0x2d7fde,_0xb68a('0x13'));logger['debug'](_0xb68a('0x14'),_0x2d7fde,_0xb68a('0x13'),JSON[_0xb68a('0x15')](_0x49edb8));if(_0x49edb8[_0xb68a('0x16')]){if(_0x49edb8[_0xb68a('0x16')][_0xb68a('0x17')]===0x1f4){logger['error'](_0xb68a('0x12'),_0x2d7fde,_0x49edb8[_0xb68a('0x16')][_0xb68a('0x18')]);return _0x1b207f(_0x49edb8[_0xb68a('0x16')][_0xb68a('0x18')]);}logger[_0xb68a('0x16')](_0xb68a('0x12'),_0x2d7fde,_0x49edb8['error'][_0xb68a('0x18')]);return _0x766e25(_0x49edb8['error']['message']);}else{logger['info'](_0xb68a('0x12'),_0x2d7fde,_0xb68a('0x13'));_0x766e25(_0x49edb8[_0xb68a('0x19')][_0xb68a('0x18')]);}})[_0xb68a('0x1a')](function(_0x167de8){logger[_0xb68a('0x16')](_0xb68a('0x12'),_0x2d7fde,_0x167de8);_0x1b207f(_0x167de8);});});}exports[_0xb68a('0x1b')]=function(_0x6f0c35){var _0xe567ca=this;return new Promise(function(_0x43a729,_0x2a21ce){return db[_0xb68a('0x1c')]['update'](_0x6f0c35[_0xb68a('0x1d')],{'raw':_0x6f0c35[_0xb68a('0x1e')]?_0x6f0c35[_0xb68a('0x1e')][_0xb68a('0x1f')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x6f0c35[_0xb68a('0x1e')]?_0x6f0c35['options']['where']||null:null,'attributes':_0x6f0c35[_0xb68a('0x1e')]?_0x6f0c35[_0xb68a('0x1e')]['attributes']||null:null,'limit':_0x6f0c35['options']?_0x6f0c35[_0xb68a('0x1e')]['limit']||null:null})[_0xb68a('0x10')](function(_0x15106f){logger['info'](_0xb68a('0x1b'),_0x6f0c35);logger[_0xb68a('0x20')]('UpdateWhatsappInteraction',_0x6f0c35,JSON[_0xb68a('0x15')](_0x15106f));_0x43a729(_0x15106f);})['catch'](function(_0x47f7be){logger[_0xb68a('0x16')](_0xb68a('0x1b'),_0x47f7be[_0xb68a('0x18')],_0x6f0c35);_0x2a21ce(_0xe567ca['error'](0x1f4,_0x47f7be[_0xb68a('0x18')]));});});};exports['AddTagsToWhatsappInteraction']=function(_0x60c06a){return new Promise(function(_0xa77d87,_0x359ad5){return db['WhatsappInteraction'][_0xb68a('0x21')]({'where':_0x60c06a['options']?_0x60c06a[_0xb68a('0x1e')][_0xb68a('0x22')]||null:null})['then'](function(_0x486010){if(_0x486010){return _0x486010[_0xb68a('0x23')](_0x60c06a[_0xb68a('0x1d')][_0xb68a('0x24')],_[_0xb68a('0x25')](_0x60c06a[_0xb68a('0x1d')],['ids','id'])||{});}})[_0xb68a('0x26')](function(_0x17c2ee){logger[_0xb68a('0x11')]('AddTags',_0x60c06a);logger[_0xb68a('0x20')](_0xb68a('0x27'),_0x60c06a,JSON[_0xb68a('0x15')](_0x17c2ee));_0xa77d87(_0x17c2ee);})[_0xb68a('0x1a')](function(_0x1b0442){logger[_0xb68a('0x16')]('AddTags',_0x1b0442[_0xb68a('0x18')],_0x60c06a);_0x359ad5(_this[_0xb68a('0x16')](0x1f4,_0x1b0442['message']));});});};
\ No newline at end of file
+var _0x35dc=['localhost','socket.io-emitter','./whatsappInteraction.socket','register','request','then','info','WhatsappInteraction,\x20%s,\x20%s','request\x20sent','WhatsappInteraction,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','UpdateWhatsappInteraction','WhatsappInteraction','update','body','options','raw','where','attributes','debug','AddTagsToWhatsappInteraction','find','addTags','ids','omit','spread','AddTags','catch','lodash','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','redis'];(function(_0xfa9f42,_0x3b9207){var _0x4f51db=function(_0x4a1a1e){while(--_0x4a1a1e){_0xfa9f42['push'](_0xfa9f42['shift']());}};_0x4f51db(++_0x3b9207);}(_0x35dc,0xaa));var _0xc35d=function(_0x20a584,_0xe384a5){_0x20a584=_0x20a584-0x0;var _0x4b41a8=_0x35dc[_0x20a584];return _0x4b41a8;};'use strict';var _=require(_0xc35d('0x0'));var util=require('util');var moment=require(_0xc35d('0x1'));var BPromise=require(_0xc35d('0x2'));var rs=require(_0xc35d('0x3'));var fs=require('fs');var Redis=require(_0xc35d('0x4'));var db=require(_0xc35d('0x5'))['db'];var utils=require(_0xc35d('0x6'));var logger=require(_0xc35d('0x7'))(_0xc35d('0x8'));var config=require(_0xc35d('0x9'));var jayson=require(_0xc35d('0xa'));var client=jayson[_0xc35d('0xb')][_0xc35d('0xc')]({'port':0x232a});config[_0xc35d('0xd')]=_['defaults'](config[_0xc35d('0xd')],{'host':_0xc35d('0xe'),'port':0x18eb});var socket=require(_0xc35d('0xf'))(new Redis(config[_0xc35d('0xd')]));require(_0xc35d('0x10'))[_0xc35d('0x11')](socket);function respondWithRpcPromise(_0x5d296a,_0x5ed9d5,_0x43f9f2){return new BPromise(function(_0x52907d,_0x368a0b){return client[_0xc35d('0x12')](_0x5d296a,_0x43f9f2)[_0xc35d('0x13')](function(_0x1c1ca2){logger[_0xc35d('0x14')](_0xc35d('0x15'),_0x5ed9d5,_0xc35d('0x16'));logger['debug'](_0xc35d('0x17'),_0x5ed9d5,_0xc35d('0x16'),JSON[_0xc35d('0x18')](_0x1c1ca2));if(_0x1c1ca2[_0xc35d('0x19')]){if(_0x1c1ca2[_0xc35d('0x19')][_0xc35d('0x1a')]===0x1f4){logger[_0xc35d('0x19')](_0xc35d('0x15'),_0x5ed9d5,_0x1c1ca2[_0xc35d('0x19')]['message']);return _0x368a0b(_0x1c1ca2[_0xc35d('0x19')][_0xc35d('0x1b')]);}logger[_0xc35d('0x19')](_0xc35d('0x15'),_0x5ed9d5,_0x1c1ca2['error'][_0xc35d('0x1b')]);return _0x52907d(_0x1c1ca2['error'][_0xc35d('0x1b')]);}else{logger[_0xc35d('0x14')]('WhatsappInteraction,\x20%s,\x20%s',_0x5ed9d5,'request\x20sent');_0x52907d(_0x1c1ca2[_0xc35d('0x1c')]['message']);}})['catch'](function(_0x524748){logger[_0xc35d('0x19')](_0xc35d('0x15'),_0x5ed9d5,_0x524748);_0x368a0b(_0x524748);});});}exports[_0xc35d('0x1d')]=function(_0x50cc9f){var _0x8ccc93=this;return new Promise(function(_0x4ab014,_0x5a1f03){return db[_0xc35d('0x1e')][_0xc35d('0x1f')](_0x50cc9f[_0xc35d('0x20')],{'raw':_0x50cc9f[_0xc35d('0x21')]?_0x50cc9f['options'][_0xc35d('0x22')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x50cc9f[_0xc35d('0x21')]?_0x50cc9f[_0xc35d('0x21')][_0xc35d('0x23')]||null:null,'attributes':_0x50cc9f['options']?_0x50cc9f[_0xc35d('0x21')][_0xc35d('0x24')]||null:null,'limit':_0x50cc9f[_0xc35d('0x21')]?_0x50cc9f[_0xc35d('0x21')]['limit']||null:null})[_0xc35d('0x13')](function(_0x3316da){logger['info']('UpdateWhatsappInteraction',_0x50cc9f);logger[_0xc35d('0x25')](_0xc35d('0x1d'),_0x50cc9f,JSON['stringify'](_0x3316da));_0x4ab014(_0x3316da);})['catch'](function(_0x5d3668){logger[_0xc35d('0x19')](_0xc35d('0x1d'),_0x5d3668[_0xc35d('0x1b')],_0x50cc9f);_0x5a1f03(_0x8ccc93[_0xc35d('0x19')](0x1f4,_0x5d3668[_0xc35d('0x1b')]));});});};exports[_0xc35d('0x26')]=function(_0x1520a3){return new Promise(function(_0x2fcedd,_0x102b6b){return db[_0xc35d('0x1e')][_0xc35d('0x27')]({'where':_0x1520a3[_0xc35d('0x21')]?_0x1520a3[_0xc35d('0x21')][_0xc35d('0x23')]||null:null})['then'](function(_0x31b907){if(_0x31b907){return _0x31b907[_0xc35d('0x28')](_0x1520a3[_0xc35d('0x20')][_0xc35d('0x29')],_[_0xc35d('0x2a')](_0x1520a3[_0xc35d('0x20')],[_0xc35d('0x29'),'id'])||{});}})[_0xc35d('0x2b')](function(_0x32b33f){logger['info'](_0xc35d('0x2c'),_0x1520a3);logger[_0xc35d('0x25')]('AddTags',_0x1520a3,JSON[_0xc35d('0x18')](_0x32b33f));_0x2fcedd(_0x32b33f);})[_0xc35d('0x2d')](function(_0x56aa57){logger[_0xc35d('0x19')](_0xc35d('0x2c'),_0x56aa57[_0xc35d('0x1b')],_0x1520a3);_0x102b6b(_this[_0xc35d('0x19')](0x1f4,_0x56aa57['message']));});});};
\ No newline at end of file
index 06bdbb9..b75f917 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf737=['update','emit','register','length','./whatsappInteraction.events','save'];(function(_0x2336f7,_0x149023){var _0x1cb572=function(_0x18386d){while(--_0x18386d){_0x2336f7['push'](_0x2336f7['shift']());}};_0x1cb572(++_0x149023);}(_0xf737,0xbe));var _0x7f73=function(_0x237585,_0x444c72){_0x237585=_0x237585-0x0;var _0x178664=_0xf737[_0x237585];return _0x178664;};'use strict';var WhatsappInteractionEvents=require(_0x7f73('0x0'));var events=[_0x7f73('0x1'),'remove',_0x7f73('0x2')];function createListener(_0x3e1dc9,_0x52079f){return function(_0x30d07b){_0x52079f[_0x7f73('0x3')](_0x3e1dc9,_0x30d07b);};}function removeListener(_0x577733,_0x5a7a55){return function(){WhatsappInteractionEvents['removeListener'](_0x577733,_0x5a7a55);};}exports[_0x7f73('0x4')]=function(_0x2e1422){for(var _0x54309c=0x0,_0x53674e=events[_0x7f73('0x5')];_0x54309c<_0x53674e;_0x54309c++){var _0x1d3541=events[_0x54309c];var _0x45924c=createListener('whatsappInteraction:'+_0x1d3541,_0x2e1422);WhatsappInteractionEvents['on'](_0x1d3541,_0x45924c);}};
\ No newline at end of file
+var _0x6257=['./whatsappInteraction.events','save','update','removeListener','length'];(function(_0x5a47de,_0x57a87c){var _0x400ee6=function(_0x46745b){while(--_0x46745b){_0x5a47de['push'](_0x5a47de['shift']());}};_0x400ee6(++_0x57a87c);}(_0x6257,0x177));var _0x7625=function(_0x43605f,_0x3acab7){_0x43605f=_0x43605f-0x0;var _0x5bccef=_0x6257[_0x43605f];return _0x5bccef;};'use strict';var WhatsappInteractionEvents=require(_0x7625('0x0'));var events=[_0x7625('0x1'),'remove',_0x7625('0x2')];function createListener(_0x39b368,_0x27e6b2){return function(_0x23232f){_0x27e6b2['emit'](_0x39b368,_0x23232f);};}function removeListener(_0x254c77,_0x2f9282){return function(){WhatsappInteractionEvents[_0x7625('0x3')](_0x254c77,_0x2f9282);};}exports['register']=function(_0x152d0d){for(var _0xdaa241=0x0,_0x3399da=events[_0x7625('0x4')];_0xdaa241<_0x3399da;_0xdaa241++){var _0x2c4537=events[_0xdaa241];var _0x20ad46=createListener('whatsappInteraction:'+_0x2c4537,_0x152d0d);WhatsappInteractionEvents['on'](_0x2c4537,_0x20ad46);}};
\ No newline at end of file
index fd9b827..68a3566 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x01b4=['../../config/environment','./whatsappMessage.controller','get','isAuthenticated','/describe','describe','/:id','post','tracked','whatsapp','whatsappmessage:create','create','/:id/status','put','update','/:id/accept','accept','/:id/reject','reject','destroy','exports','multer','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service'];(function(_0x560735,_0x299072){var _0xa292ef=function(_0x50e5e0){while(--_0x50e5e0){_0x560735['push'](_0x560735['shift']());}};_0xa292ef(++_0x299072);}(_0x01b4,0x141));var _0x401b=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x01b4[_0x3dd15e];return _0x231fd0;};'use strict';var multer=require(_0x401b('0x0'));var util=require(_0x401b('0x1'));var path=require(_0x401b('0x2'));var timeout=require(_0x401b('0x3'));var express=require(_0x401b('0x4'));var router=express[_0x401b('0x5')]();var fs_extra=require(_0x401b('0x6'));var auth=require(_0x401b('0x7'));var interaction=require(_0x401b('0x8'));var config=require(_0x401b('0x9'));var controller=require(_0x401b('0xa'));router[_0x401b('0xb')]('/',auth[_0x401b('0xc')](),controller['index']);router['get'](_0x401b('0xd'),auth[_0x401b('0xc')](),controller[_0x401b('0xe')]);router[_0x401b('0xb')](_0x401b('0xf'),auth[_0x401b('0xc')](),controller['show']);router[_0x401b('0x10')]('/',auth[_0x401b('0xc')](),interaction[_0x401b('0x11')](_0x401b('0x12'),_0x401b('0x13')),controller[_0x401b('0x14')]);router[_0x401b('0x10')](_0x401b('0x15'),controller['status']);router[_0x401b('0x16')](_0x401b('0xf'),auth['isAuthenticated'](),controller[_0x401b('0x17')]);router[_0x401b('0x16')](_0x401b('0x18'),auth[_0x401b('0xc')](),controller[_0x401b('0x19')]);router['put'](_0x401b('0x1a'),auth['isAuthenticated'](),controller[_0x401b('0x1b')]);router['delete']('/:id',auth['isAuthenticated'](),controller[_0x401b('0x1c')]);module[_0x401b('0x1d')]=router;
\ No newline at end of file
+var _0x5689=['post','tracked','whatsapp','create','/:id/status','status','put','update','accept','/:id/reject','reject','delete','destroy','exports','multer','util','connect-timeout','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','get','isAuthenticated','index','/describe','describe','/:id','show'];(function(_0x450e05,_0x52a4b2){var _0x1edcd2=function(_0x5ee9c2){while(--_0x5ee9c2){_0x450e05['push'](_0x450e05['shift']());}};_0x1edcd2(++_0x52a4b2);}(_0x5689,0x1a4));var _0x9568=function(_0x582a79,_0x2de2a1){_0x582a79=_0x582a79-0x0;var _0x1cb46e=_0x5689[_0x582a79];return _0x1cb46e;};'use strict';var multer=require(_0x9568('0x0'));var util=require(_0x9568('0x1'));var path=require('path');var timeout=require(_0x9568('0x2'));var express=require('express');var router=express[_0x9568('0x3')]();var fs_extra=require(_0x9568('0x4'));var auth=require(_0x9568('0x5'));var interaction=require(_0x9568('0x6'));var config=require(_0x9568('0x7'));var controller=require('./whatsappMessage.controller');router[_0x9568('0x8')]('/',auth[_0x9568('0x9')](),controller[_0x9568('0xa')]);router[_0x9568('0x8')](_0x9568('0xb'),auth['isAuthenticated'](),controller[_0x9568('0xc')]);router[_0x9568('0x8')](_0x9568('0xd'),auth[_0x9568('0x9')](),controller[_0x9568('0xe')]);router[_0x9568('0xf')]('/',auth['isAuthenticated'](),interaction[_0x9568('0x10')](_0x9568('0x11'),'whatsappmessage:create'),controller[_0x9568('0x12')]);router[_0x9568('0xf')](_0x9568('0x13'),controller[_0x9568('0x14')]);router[_0x9568('0x15')](_0x9568('0xd'),auth['isAuthenticated'](),controller[_0x9568('0x16')]);router[_0x9568('0x15')]('/:id/accept',auth[_0x9568('0x9')](),controller[_0x9568('0x17')]);router[_0x9568('0x15')](_0x9568('0x18'),auth[_0x9568('0x9')](),controller[_0x9568('0x19')]);router[_0x9568('0x1a')](_0x9568('0xd'),auth[_0x9568('0x9')](),controller[_0x9568('0x1b')]);module[_0x9568('0x1c')]=router;
\ No newline at end of file
index 06ce83f..7631999 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x183d=['TEXT','BOOLEAN','ENUM','out','STRING','DATE','exports'];(function(_0x581f8e,_0x5617cb){var _0x18aec=function(_0x4536c7){while(--_0x4536c7){_0x581f8e['push'](_0x581f8e['shift']());}};_0x18aec(++_0x5617cb);}(_0x183d,0x92));var _0xd183=function(_0x52b511,_0x25440a){_0x52b511=_0x52b511-0x0;var _0x42e5b2=_0x183d[_0x52b511];return _0x42e5b2;};'use strict';var Sequelize=require('sequelize');module[_0xd183('0x0')]={'body':{'type':Sequelize[_0xd183('0x1')]('medium'),'allowNull':![]},'read':{'type':Sequelize[_0xd183('0x2')],'defaultValue':![]},'direction':{'type':Sequelize[_0xd183('0x3')]('in',_0xd183('0x4')),'defaultValue':'out','allowNull':![]},'messageId':{'type':Sequelize[_0xd183('0x5')](0xbe)},'phone':{'type':Sequelize[_0xd183('0x5')]},'readAt':{'type':Sequelize[_0xd183('0x6')]},'secret':{'type':Sequelize[_0xd183('0x2')],'defaultValue':![]},'providerName':{'type':Sequelize['STRING']},'providerResponse':{'type':Sequelize[_0xd183('0x1')]}};
\ No newline at end of file
+var _0x5cd7=['TEXT','medium','out','STRING','DATE','BOOLEAN','sequelize'];(function(_0x2d1324,_0x24de05){var _0x16ab9b=function(_0x59492a){while(--_0x59492a){_0x2d1324['push'](_0x2d1324['shift']());}};_0x16ab9b(++_0x24de05);}(_0x5cd7,0x102));var _0x75cd=function(_0x3b632f,_0x453380){_0x3b632f=_0x3b632f-0x0;var _0x10e788=_0x5cd7[_0x3b632f];return _0x10e788;};'use strict';var Sequelize=require(_0x75cd('0x0'));module['exports']={'body':{'type':Sequelize[_0x75cd('0x1')](_0x75cd('0x2')),'allowNull':![]},'read':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'direction':{'type':Sequelize['ENUM']('in',_0x75cd('0x3')),'defaultValue':_0x75cd('0x3'),'allowNull':![]},'messageId':{'type':Sequelize[_0x75cd('0x4')](0xbe)},'phone':{'type':Sequelize[_0x75cd('0x4')]},'readAt':{'type':Sequelize[_0x75cd('0x5')]},'secret':{'type':Sequelize[_0x75cd('0x6')],'defaultValue':![]},'providerName':{'type':Sequelize[_0x75cd('0x4')]},'providerResponse':{'type':Sequelize[_0x75cd('0x1')]}};
\ No newline at end of file
index 9ad044d..f87ea78 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7564=['SELECT','name','internal','agent','interface','SIP/%s','channel','motionChannel','event','accept','EventManager','acceptmessage','whatsapp','[WHATSAPPMESSAGE:REJECT]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s','role','RejectMessage','rejectMessage','contact','User','email','rejectmessage','WhatsappAccount','WhatsappAccountId','WhatsppMessage,\x20%s,\x20%s,\x20%s','received\x20delivery\x20report\x20from','twilio','MessageSid','messageId','MessageStatus','read','WhatsappAccount,\x20%s,\x20%s,\x20%s','inspect','eml-format','request-promise','bluebird','mustache','util','path','sox','ejs','lodash','squel','crypto','jsforce','desk.js','querystring','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/utils','../../config/license/util','redis','defaults','localhost','./whatsappMessage.socket','register','jayson/promise','client','http','then','info','request\x20sent','debug','WhatsappMessage,\x20%s,\x20%s,\x20%s','stringify','error','code','WhatsappMessage,\x20%s,\x20%s','message','result','sendStatus','status','end','json','offset','undefined','count','limit','set','Content-Range','apply','reject','save','update','destroy','send','index','WhatsappMessage','model','query','keys','filters','intersection','fields','attributes','length','hasOwnProperty','nolimit','order','sort','where','pick','filter','merge','map','type','VIRTUAL','findAll','rows','show','params','rawAttributes','includeAll','include','options','find','catch','create','body','describe','../../config/logger','whatsapp-interactions','format','YYYY-MM-DD\x20HH:mm:ss','UserId','user','get','WhatsappInteraction','WhatsappInteractionId','isNil','read1stAt','interaction','[WHATSAPPMESSAGE:ACCEPT]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s','null','acceptMessage','SELECT\x20*\x20FROM\x20cm_contacts\x20WHERE\x20id\x20=\x20','sequelize','QueryTypes'];(function(_0x671369,_0x433da5){var _0x33f2b4=function(_0x2e9db2){while(--_0x2e9db2){_0x671369['push'](_0x671369['shift']());}};_0x33f2b4(++_0x433da5);}(_0x7564,0xaa));var _0x4756=function(_0xb0f7c3,_0x4eae95){_0xb0f7c3=_0xb0f7c3-0x0;var _0x28ea68=_0x7564[_0xb0f7c3];return _0x28ea68;};'use strict';var emlformat=require(_0x4756('0x0'));var rimraf=require('rimraf');var zipdir=require('zip-dir');var jsonpatch=require('fast-json-patch');var rp=require(_0x4756('0x1'));var moment=require('moment');var BPromise=require(_0x4756('0x2'));var Mustache=require(_0x4756('0x3'));var util=require(_0x4756('0x4'));var path=require(_0x4756('0x5'));var sox=require(_0x4756('0x6'));var csv=require('to-csv');var ejs=require(_0x4756('0x7'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x4756('0x8'));var squel=require(_0x4756('0x9'));var crypto=require(_0x4756('0xa'));var jsforce=require(_0x4756('0xb'));var deskjs=require(_0x4756('0xc'));var toCsv=require('to-csv');var querystring=require(_0x4756('0xd'));var Papa=require('papaparse');var Redis=require('ioredis');var authService=require(_0x4756('0xe'));var qs=require(_0x4756('0xf'));var as=require(_0x4756('0x10'));var hardwareService=require('../../config/license/hardware');var logger=require('../../config/logger')('api');var utils=require(_0x4756('0x11'));var config=require('../../config/environment');var licenseUtil=require(_0x4756('0x12'));var db=require('../../mysqldb')['db'];config[_0x4756('0x13')]=_[_0x4756('0x14')](config['redis'],{'host':_0x4756('0x15'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0x4756('0x13')]));require(_0x4756('0x16'))[_0x4756('0x17')](socket);var jayson=require(_0x4756('0x18'));var client=jayson[_0x4756('0x19')][_0x4756('0x1a')]({'port':0x232c});var client9002=jayson[_0x4756('0x19')][_0x4756('0x1a')]({'port':0x232a});function respondWithRpcPromise(_0x28fe76,_0x28b8c2,_0x54fb63,_0x4d5df3){return new BPromise(function(_0x27e10b,_0x455f56){var _0x176bda=_0x4d5df3||client;return _0x176bda['request'](_0x28fe76,_0x54fb63)[_0x4756('0x1b')](function(_0x5f1498){logger[_0x4756('0x1c')]('WhatsappMessage,\x20%s,\x20%s',_0x28b8c2,_0x4756('0x1d'));logger[_0x4756('0x1e')](_0x4756('0x1f'),_0x28b8c2,_0x4756('0x1d'),JSON[_0x4756('0x20')](_0x5f1498));if(_0x5f1498[_0x4756('0x21')]){if(_0x5f1498[_0x4756('0x21')][_0x4756('0x22')]===0x1f4){logger[_0x4756('0x21')](_0x4756('0x23'),_0x28b8c2,_0x5f1498[_0x4756('0x21')]['message']);return _0x455f56(_0x5f1498[_0x4756('0x21')][_0x4756('0x24')]);}logger['error'](_0x4756('0x23'),_0x28b8c2,_0x5f1498['error']['message']);return _0x27e10b(_0x5f1498[_0x4756('0x21')][_0x4756('0x24')]);}else{logger[_0x4756('0x1c')](_0x4756('0x23'),_0x28b8c2,_0x4756('0x1d'));_0x27e10b(_0x5f1498[_0x4756('0x25')]['message']);}})['catch'](function(_0x4e0614){logger[_0x4756('0x21')](_0x4756('0x23'),_0x28b8c2,_0x4e0614);_0x455f56(_0x4e0614);});});}function respondWithStatusCode(_0xb1d19b,_0x56a2af){_0x56a2af=_0x56a2af||0xcc;return function(_0x64f818){if(_0x64f818){return _0xb1d19b[_0x4756('0x26')](_0x56a2af);}return _0xb1d19b[_0x4756('0x27')](_0x56a2af)[_0x4756('0x28')]();};}function respondWithResult(_0xa00f6e,_0x5cb238){_0x5cb238=_0x5cb238||0xc8;return function(_0x5e604a){if(_0x5e604a){return _0xa00f6e['status'](_0x5cb238)[_0x4756('0x29')](_0x5e604a);}};}function respondWithFilteredResult(_0x436bf8,_0x4aaaf8){return function(_0x3d00bb){if(_0x3d00bb){var _0x181f69=typeof _0x4aaaf8[_0x4756('0x2a')]==='undefined'&&typeof _0x4aaaf8['limit']===_0x4756('0x2b');var _0x67e58b=_0x3d00bb[_0x4756('0x2c')];var _0x3d4e63=_0x181f69?0x0:_0x4aaaf8['offset'];var _0x2d7e98=_0x181f69?_0x3d00bb[_0x4756('0x2c')]:_0x4aaaf8[_0x4756('0x2a')]+_0x4aaaf8[_0x4756('0x2d')];var _0x1df0d9;if(_0x2d7e98>=_0x67e58b){_0x2d7e98=_0x67e58b;_0x1df0d9=0xc8;}else{_0x1df0d9=0xce;}_0x436bf8['status'](_0x1df0d9);return _0x436bf8[_0x4756('0x2e')](_0x4756('0x2f'),_0x3d4e63+'-'+_0x2d7e98+'/'+_0x67e58b)[_0x4756('0x29')](_0x3d00bb);}return null;};}function patchUpdates(_0x2d029f){return function(_0x4c48bc){try{jsonpatch[_0x4756('0x30')](_0x4c48bc,_0x2d029f,!![]);}catch(_0x32a5c6){return BPromise[_0x4756('0x31')](_0x32a5c6);}return _0x4c48bc[_0x4756('0x32')]();};}function saveUpdates(_0x577c82,_0x108caa){return function(_0x2aadd8){if(_0x2aadd8){return _0x2aadd8[_0x4756('0x33')](_0x577c82)[_0x4756('0x1b')](function(_0x17d720){return _0x17d720;});}return null;};}function removeEntity(_0x35ebc9,_0x5e7e2d){return function(_0x34b929){if(_0x34b929){return _0x34b929[_0x4756('0x34')]()['then'](function(){_0x35ebc9[_0x4756('0x27')](0xcc)[_0x4756('0x28')]();});}};}function handleEntityNotFound(_0x1207a4,_0x3c1f80){return function(_0x1cb9f1){if(!_0x1cb9f1){_0x1207a4['sendStatus'](0x194);}return _0x1cb9f1;};}function handleError(_0x30e8e3,_0x1e1653){_0x1e1653=_0x1e1653||0x1f4;return function(_0x1bf10e){logger[_0x4756('0x21')](_0x1bf10e['stack']);if(_0x1bf10e['name']){delete _0x1bf10e['name'];}_0x30e8e3[_0x4756('0x27')](_0x1e1653)[_0x4756('0x35')](_0x1bf10e);};}exports[_0x4756('0x36')]=function(_0x143576,_0x54ca69){var _0x4232b1={},_0x26bdb5={},_0x35e2aa={'count':0x0,'rows':[]};var _0x58117c=_['map'](db[_0x4756('0x37')]['rawAttributes'],function(_0x392bb1){return{'name':_0x392bb1['fieldName'],'type':_0x392bb1['type']['key']};});_0x26bdb5[_0x4756('0x38')]=_['map'](_0x58117c,'name');_0x26bdb5[_0x4756('0x39')]=_[_0x4756('0x3a')](_0x143576[_0x4756('0x39')]);_0x26bdb5[_0x4756('0x3b')]=_[_0x4756('0x3c')](_0x26bdb5['model'],_0x26bdb5['query']);_0x4232b1['attributes']=_[_0x4756('0x3c')](_0x26bdb5[_0x4756('0x38')],qs[_0x4756('0x3d')](_0x143576['query'][_0x4756('0x3d')]));_0x4232b1[_0x4756('0x3e')]=_0x4232b1[_0x4756('0x3e')][_0x4756('0x3f')]?_0x4232b1['attributes']:_0x26bdb5['model'];if(!_0x143576[_0x4756('0x39')][_0x4756('0x40')](_0x4756('0x41'))){_0x4232b1[_0x4756('0x2d')]=qs['limit'](_0x143576[_0x4756('0x39')]['limit']);_0x4232b1['offset']=qs['offset'](_0x143576['query'][_0x4756('0x2a')]);}_0x4232b1[_0x4756('0x42')]=qs['sort'](_0x143576['query'][_0x4756('0x43')]);_0x4232b1[_0x4756('0x44')]=qs[_0x4756('0x3b')](_[_0x4756('0x45')](_0x143576[_0x4756('0x39')],_0x26bdb5[_0x4756('0x3b')]),_0x58117c);if(_0x143576[_0x4756('0x39')][_0x4756('0x46')]){_0x4232b1[_0x4756('0x44')]=_[_0x4756('0x47')](_0x4232b1[_0x4756('0x44')],{'$or':_[_0x4756('0x48')](_0x58117c,function(_0x4497cf){if(_0x4497cf[_0x4756('0x49')]!==_0x4756('0x4a')){var _0x47b92e={};_0x47b92e[_0x4497cf['name']]={'$like':'%'+_0x143576[_0x4756('0x39')][_0x4756('0x46')]+'%'};return _0x47b92e;}})});}_0x4232b1=_[_0x4756('0x47')]({},_0x4232b1,_0x143576['options']);var _0x5897ab={'where':_0x4232b1[_0x4756('0x44')]};return db[_0x4756('0x37')][_0x4756('0x2c')](_0x5897ab)['then'](function(_0x45a59a){_0x35e2aa[_0x4756('0x2c')]=_0x45a59a;if(_0x143576[_0x4756('0x39')]['includeAll']){_0x4232b1['include']=[{'all':!![]}];}return db[_0x4756('0x37')][_0x4756('0x4b')](_0x4232b1);})[_0x4756('0x1b')](function(_0xa9212c){_0x35e2aa[_0x4756('0x4c')]=_0xa9212c;return _0x35e2aa;})[_0x4756('0x1b')](respondWithFilteredResult(_0x54ca69,_0x4232b1))['catch'](handleError(_0x54ca69,null));};exports[_0x4756('0x4d')]=function(_0x148a3f,_0xc4207b){var _0x415398={'raw':!![],'where':{'id':_0x148a3f[_0x4756('0x4e')]['id']}},_0x170724={};_0x170724[_0x4756('0x38')]=_[_0x4756('0x3a')](db['WhatsappMessage'][_0x4756('0x4f')]);_0x170724['query']=_[_0x4756('0x3a')](_0x148a3f['query']);_0x170724[_0x4756('0x3b')]=_[_0x4756('0x3c')](_0x170724[_0x4756('0x38')],_0x170724['query']);_0x415398[_0x4756('0x3e')]=_['intersection'](_0x170724[_0x4756('0x38')],qs[_0x4756('0x3d')](_0x148a3f['query']['fields']));_0x415398[_0x4756('0x3e')]=_0x415398[_0x4756('0x3e')]['length']?_0x415398[_0x4756('0x3e')]:_0x170724['model'];if(_0x148a3f[_0x4756('0x39')][_0x4756('0x50')]){_0x415398[_0x4756('0x51')]=[{'all':!![]}];}_0x415398=_[_0x4756('0x47')]({},_0x415398,_0x148a3f[_0x4756('0x52')]);return db['WhatsappMessage'][_0x4756('0x53')](_0x415398)[_0x4756('0x1b')](handleEntityNotFound(_0xc4207b,null))[_0x4756('0x1b')](respondWithResult(_0xc4207b,null))[_0x4756('0x54')](handleError(_0xc4207b,null));};exports['create']=function(_0x27045b,_0x54b597){return db[_0x4756('0x37')][_0x4756('0x55')](_0x27045b[_0x4756('0x56')],{})[_0x4756('0x1b')](respondWithResult(_0x54b597,0xc9))[_0x4756('0x54')](handleError(_0x54b597,null));};exports[_0x4756('0x33')]=function(_0x4ad7a4,_0x1fecde){if(_0x4ad7a4[_0x4756('0x56')]['id']){delete _0x4ad7a4[_0x4756('0x56')]['id'];}return db[_0x4756('0x37')][_0x4756('0x53')]({'where':{'id':_0x4ad7a4[_0x4756('0x4e')]['id']}})[_0x4756('0x1b')](handleEntityNotFound(_0x1fecde,null))['then'](saveUpdates(_0x4ad7a4[_0x4756('0x56')],null))[_0x4756('0x1b')](respondWithResult(_0x1fecde,null))[_0x4756('0x54')](handleError(_0x1fecde,null));};exports[_0x4756('0x34')]=function(_0x2497a5,_0x2efe5f){return db[_0x4756('0x37')]['find']({'where':{'id':_0x2497a5['params']['id']}})[_0x4756('0x1b')](handleEntityNotFound(_0x2efe5f,null))[_0x4756('0x1b')](removeEntity(_0x2efe5f,null))['catch'](handleError(_0x2efe5f,null));};exports[_0x4756('0x57')]=function(_0x45dff8,_0x3f8bd8){return db['WhatsappMessage']['describe']()[_0x4756('0x1b')](respondWithResult(_0x3f8bd8,null))[_0x4756('0x54')](handleError(_0x3f8bd8,null));};var interaction_log=require(_0x4756('0x58'))(_0x4756('0x59'));exports['accept']=function(_0x91575b,_0x220e13,_0x259c9d){var _0x13addf={'agent':{},'channel':'whatsapp'};if(_0x91575b[_0x4756('0x56')]['id']){delete _0x91575b[_0x4756('0x56')]['id'];}_0x91575b[_0x4756('0x56')]['read']=!![];_0x91575b['body']['readAt']=moment()[_0x4756('0x5a')](_0x4756('0x5b'));_0x91575b[_0x4756('0x56')][_0x4756('0x5c')]=_0x91575b[_0x4756('0x56')][_0x4756('0x5c')]||_0x91575b[_0x4756('0x5d')]['id'];_0x13addf['agent']['id']=_0x91575b['body'][_0x4756('0x5c')];return db[_0x4756('0x37')][_0x4756('0x53')]({'where':{'id':_0x91575b['params']['id'],'UserId':null}})['then'](handleEntityNotFound(_0x220e13,null))[_0x4756('0x1b')](saveUpdates(_0x91575b[_0x4756('0x56')],null))[_0x4756('0x1b')](function(_0x22941c){if(_0x22941c){_0x13addf['message']=_0x22941c[_0x4756('0x5e')]({'plain':!![]});return db[_0x4756('0x5f')][_0x4756('0x53')]({'where':{'id':_0x22941c[_0x4756('0x60')]}});}return null;})[_0x4756('0x1b')](handleEntityNotFound(_0x220e13,null))[_0x4756('0x1b')](function(_0x1987a3){if(_0x1987a3){return _0x1987a3[_0x4756('0x33')]({'UserId':_0x91575b[_0x4756('0x56')][_0x4756('0x5c')],'read1stAt':_[_0x4756('0x61')](_0x1987a3[_0x4756('0x62')])?moment()[_0x4756('0x5a')](_0x4756('0x5b')):undefined});}return null;})[_0x4756('0x1b')](function(_0x4dcca6){if(_0x4dcca6){_0x13addf[_0x4756('0x63')]=_0x4dcca6[_0x4756('0x5e')]({'plain':!![]});interaction_log[_0x4756('0x1c')](_0x4756('0x64'),_0x91575b[_0x4756('0x5d')]['id'],_0x91575b['user']['name'],_0x91575b[_0x4756('0x5d')]['role'],_0x13addf[_0x4756('0x63')]['id'],_0x91575b[_0x4756('0x56')]?JSON[_0x4756('0x20')](_0x91575b[_0x4756('0x56')]):_0x4756('0x65'));return respondWithRpcPromise('AcceptMessage',_0x4756('0x66'),_0x13addf);}return null;})[_0x4756('0x1b')](function(_0x4f33e5){var _0x554d70=_0x4756('0x67')+_0x4f33e5[_0x4756('0x24')]['ContactId'];return db[_0x4756('0x68')][_0x4756('0x39')](_0x554d70,{'type':db['Sequelize'][_0x4756('0x69')][_0x4756('0x6a')],'raw':!![]})[_0x4756('0x1b')](function(_0x37ccd8){return _0x37ccd8;});})[_0x4756('0x1b')](function(_0x6d54d7){if(_0x6d54d7){_0x13addf[_0x4756('0x24')]['contact']=_0x6d54d7[0x0];if(!_0x91575b['body'][_0x4756('0x5c')])return;return db['User'][_0x4756('0x53')]({'where':{'id':_0x91575b[_0x4756('0x56')][_0x4756('0x5c')],'role':'agent'},'attributes':['id',_0x4756('0x6b'),'fullname','email',_0x4756('0x6c')],'raw':!![]});}return null;})[_0x4756('0x1b')](function(_0x5db088){if(!_0x5db088)return null;_0x13addf[_0x4756('0x24')][_0x4756('0x6d')]=_0x5db088;return _0x13addf;})['then'](function(_0x34a893){if(_0x34a893){if(_0x91575b[_0x4756('0x56')]['manual']){_0x13addf[_0x4756('0x24')][_0x4756('0x6e')]=util[_0x4756('0x5a')](_0x4756('0x6f'),_0x91575b[_0x4756('0x5d')]['name']);_0x13addf[_0x4756('0x24')][_0x4756('0x70')]=_0x13addf[_0x4756('0x70')];_0x13addf[_0x4756('0x24')][_0x4756('0x71')]=_0x13addf['channel'];_0x13addf[_0x4756('0x24')][_0x4756('0x72')]=_0x4756('0x73');return respondWithRpcPromise(_0x4756('0x74'),_0x4756('0x74'),{'event':_0x4756('0x75'),'message':_0x13addf[_0x4756('0x24')]},client9002)[_0x4756('0x1b')](function(){return _0x13addf;});}return _0x13addf;}return null;})[_0x4756('0x1b')](respondWithResult(_0x220e13,null))[_0x4756('0x54')](handleError(_0x220e13,null));};var interaction_log=require(_0x4756('0x58'))(_0x4756('0x59'));exports[_0x4756('0x31')]=function(_0x4efeb5,_0x319708,_0x50bd70){var _0x2be769={'agent':{},'channel':_0x4756('0x76')};if(_0x4efeb5[_0x4756('0x56')]['id']){delete _0x4efeb5[_0x4756('0x56')]['id'];}_0x4efeb5[_0x4756('0x56')][_0x4756('0x5c')]=_0x4efeb5[_0x4756('0x56')][_0x4756('0x5c')]||_0x4efeb5[_0x4756('0x5d')]['id'];_0x2be769['agent']['id']=_0x4efeb5[_0x4756('0x56')][_0x4756('0x5c')];return db[_0x4756('0x37')]['find']({'where':{'id':_0x4efeb5[_0x4756('0x4e')]['id'],'UserId':null}})[_0x4756('0x1b')](handleEntityNotFound(_0x319708,null))['then'](function(_0x8475b){if(_0x8475b){_0x2be769[_0x4756('0x24')]=_0x8475b['get']({'plain':!![]});return db[_0x4756('0x5f')]['find']({'where':{'id':_0x8475b['WhatsappInteractionId']}});}return null;})[_0x4756('0x1b')](handleEntityNotFound(_0x319708,null))['then'](function(_0x29d4e6){if(_0x29d4e6){_0x2be769[_0x4756('0x63')]=_0x29d4e6[_0x4756('0x5e')]({'plain':!![]});interaction_log[_0x4756('0x1c')](_0x4756('0x77'),_0x4efeb5[_0x4756('0x5d')]['id'],_0x4efeb5['user'][_0x4756('0x6b')],_0x4efeb5['user'][_0x4756('0x78')],_0x2be769['interaction']['id'],_0x4efeb5['body']?JSON['stringify'](_0x4efeb5[_0x4756('0x56')]):'null');return respondWithRpcPromise(_0x4756('0x79'),_0x4756('0x7a'),_0x2be769);}return null;})[_0x4756('0x1b')](function(_0x3d8201){var _0x1af503=_0x4756('0x67')+_0x3d8201[_0x4756('0x24')]['ContactId'];return db[_0x4756('0x68')]['query'](_0x1af503,{'type':db['Sequelize'][_0x4756('0x69')]['SELECT'],'raw':!![]})[_0x4756('0x1b')](function(_0x159f3f){return _0x159f3f;});})[_0x4756('0x1b')](function(_0x1d60f5){if(_0x1d60f5){_0x2be769['message'][_0x4756('0x7b')]=_0x1d60f5[0x0];if(!_0x4efeb5[_0x4756('0x56')][_0x4756('0x5c')])return;return db[_0x4756('0x7c')][_0x4756('0x53')]({'where':{'id':_0x4efeb5[_0x4756('0x56')]['UserId'],'role':_0x4756('0x6d')},'attributes':['id',_0x4756('0x6b'),'fullname',_0x4756('0x7d'),_0x4756('0x6c')],'raw':!![]});}return null;})[_0x4756('0x1b')](function(_0x177f26){if(!_0x177f26)return null;_0x2be769[_0x4756('0x24')][_0x4756('0x6d')]=_0x177f26;return _0x2be769;})[_0x4756('0x1b')](function(_0x260882){if(_0x260882){_0x260882[_0x4756('0x24')]['interface']=util[_0x4756('0x5a')](_0x4756('0x6f'),_0x4efeb5[_0x4756('0x5d')]['name']);_0x260882[_0x4756('0x24')]['channel']=_0x2be769['channel'];_0x260882['message']['motionChannel']=_0x2be769[_0x4756('0x70')];_0x260882['message'][_0x4756('0x72')]=_0x4756('0x31');respondWithRpcPromise(_0x4756('0x74'),_0x4756('0x74'),{'event':_0x4756('0x7e'),'message':_0x260882['message']},client9002);return _0x2be769;}return null;})[_0x4756('0x1b')](respondWithResult(_0x319708,null))[_0x4756('0x54')](handleError(_0x319708,null));};exports[_0x4756('0x27')]=function(_0x498553,_0x4d5d65,_0x48ca37){if(_0x498553[_0x4756('0x56')]['id']){delete _0x498553[_0x4756('0x56')]['id'];}var _0x117d62;return db['WhatsappMessage'][_0x4756('0x53')]({'where':{'id':_0x498553[_0x4756('0x4e')]['id']}})[_0x4756('0x1b')](handleEntityNotFound(_0x4d5d65,null))[_0x4756('0x1b')](function(_0x4fd21d){if(_0x4fd21d){_0x117d62=_0x4fd21d;return db[_0x4756('0x7f')][_0x4756('0x53')]({'where':{'id':_0x4fd21d[_0x4756('0x80')]}});}})[_0x4756('0x1b')](handleEntityNotFound(_0x4d5d65,null))[_0x4756('0x1b')](function(_0x30576c){if(_0x30576c){logger[_0x4756('0x1e')](_0x4756('0x81'),_0x4756('0x27'),_0x4756('0x82'),_0x30576c[_0x4756('0x49')],util['inspect'](_0x498553['body'],{'showHidden':![],'depth':null}));switch(_0x30576c['type']){case _0x4756('0x83'):if(_0x498553['body']['MessageSid']&&_0x498553[_0x4756('0x56')][_0x4756('0x84')]===_0x117d62[_0x4756('0x85')]&&_0x498553[_0x4756('0x56')][_0x4756('0x86')]&&_0x498553[_0x4756('0x56')][_0x4756('0x86')]===_0x4756('0x87')){return _0x117d62['update']({'read':!![]});}else{logger[_0x4756('0x21')](_0x4756('0x88'),_0x4756('0x27'),'twilio',util[_0x4756('0x89')](_0x498553[_0x4756('0x56')],{'showHidden':![],'depth':null}));}break;}return _0x117d62;}})[_0x4756('0x1b')](respondWithResult(_0x4d5d65,null))[_0x4756('0x54')](handleError(_0x4d5d65,null));};
\ No newline at end of file
+var _0xad91=['fields','length','hasOwnProperty','nolimit','order','sort','where','pick','filter','merge','VIRTUAL','options','WhatsappMessage','includeAll','include','findAll','rows','catch','show','params','find','create','body','describe','whatsapp-interactions','accept','whatsapp','read','readAt','YYYY-MM-DD\x20HH:mm:ss','UserId','user','get','WhatsappInteraction','WhatsappInteractionId','isNil','read1stAt','interaction','[WHATSAPPMESSAGE:ACCEPT]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s','role','SELECT\x20*\x20FROM\x20cm_contacts\x20WHERE\x20id\x20=\x20','ContactId','sequelize','Sequelize','SELECT','contact','User','fullname','email','internal','agent','manual','interface','format','SIP/%s','channel','event','EventManager','acceptmessage','null','RejectMessage','rejectmessage','WhatsppMessage,\x20%s,\x20%s,\x20%s','received\x20delivery\x20report\x20from','inspect','twilio','MessageSid','messageId','MessageStatus','eml-format','rimraf','zip-dir','fast-json-patch','moment','bluebird','mustache','util','path','sox','to-csv','ejs','fs-extra','lodash','desk.js','querystring','ioredis','../../components/auth/service','../../components/parsers/qs','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','defaults','redis','localhost','socket.io-emitter','./whatsappMessage.socket','register','jayson/promise','client','http','request','then','info','WhatsappMessage,\x20%s,\x20%s','debug','stringify','error','message','result','status','json','offset','undefined','limit','count','Content-Range','apply','reject','save','update','destroy','sendStatus','stack','name','send','map','rawAttributes','type','key','query','keys','filters','model','attributes','intersection'];(function(_0x655854,_0x158d34){var _0x2b2aac=function(_0x58917a){while(--_0x58917a){_0x655854['push'](_0x655854['shift']());}};_0x2b2aac(++_0x158d34);}(_0xad91,0xd0));var _0x1ad9=function(_0x575057,_0x14baf3){_0x575057=_0x575057-0x0;var _0x49dbc8=_0xad91[_0x575057];return _0x49dbc8;};'use strict';var emlformat=require(_0x1ad9('0x0'));var rimraf=require(_0x1ad9('0x1'));var zipdir=require(_0x1ad9('0x2'));var jsonpatch=require(_0x1ad9('0x3'));var rp=require('request-promise');var moment=require(_0x1ad9('0x4'));var BPromise=require(_0x1ad9('0x5'));var Mustache=require(_0x1ad9('0x6'));var util=require(_0x1ad9('0x7'));var path=require(_0x1ad9('0x8'));var sox=require(_0x1ad9('0x9'));var csv=require(_0x1ad9('0xa'));var ejs=require(_0x1ad9('0xb'));var fs=require('fs');var fs_extra=require(_0x1ad9('0xc'));var _=require(_0x1ad9('0xd'));var squel=require('squel');var crypto=require('crypto');var jsforce=require('jsforce');var deskjs=require(_0x1ad9('0xe'));var toCsv=require(_0x1ad9('0xa'));var querystring=require(_0x1ad9('0xf'));var Papa=require('papaparse');var Redis=require(_0x1ad9('0x10'));var authService=require(_0x1ad9('0x11'));var qs=require(_0x1ad9('0x12'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x1ad9('0x13'));var logger=require(_0x1ad9('0x14'))(_0x1ad9('0x15'));var utils=require(_0x1ad9('0x16'));var config=require(_0x1ad9('0x17'));var licenseUtil=require(_0x1ad9('0x18'));var db=require(_0x1ad9('0x19'))['db'];config['redis']=_[_0x1ad9('0x1a')](config[_0x1ad9('0x1b')],{'host':_0x1ad9('0x1c'),'port':0x18eb});var socket=require(_0x1ad9('0x1d'))(new Redis(config['redis']));require(_0x1ad9('0x1e'))[_0x1ad9('0x1f')](socket);var jayson=require(_0x1ad9('0x20'));var client=jayson[_0x1ad9('0x21')][_0x1ad9('0x22')]({'port':0x232c});var client9002=jayson[_0x1ad9('0x21')][_0x1ad9('0x22')]({'port':0x232a});function respondWithRpcPromise(_0x5a8902,_0x23887f,_0x59c06a,_0x505138){return new BPromise(function(_0x2d3f77,_0x4cfd04){var _0x3ee8f8=_0x505138||client;return _0x3ee8f8[_0x1ad9('0x23')](_0x5a8902,_0x59c06a)[_0x1ad9('0x24')](function(_0xb007ad){logger[_0x1ad9('0x25')](_0x1ad9('0x26'),_0x23887f,'request\x20sent');logger[_0x1ad9('0x27')]('WhatsappMessage,\x20%s,\x20%s,\x20%s',_0x23887f,'request\x20sent',JSON[_0x1ad9('0x28')](_0xb007ad));if(_0xb007ad[_0x1ad9('0x29')]){if(_0xb007ad[_0x1ad9('0x29')]['code']===0x1f4){logger[_0x1ad9('0x29')](_0x1ad9('0x26'),_0x23887f,_0xb007ad[_0x1ad9('0x29')]['message']);return _0x4cfd04(_0xb007ad[_0x1ad9('0x29')][_0x1ad9('0x2a')]);}logger[_0x1ad9('0x29')](_0x1ad9('0x26'),_0x23887f,_0xb007ad['error'][_0x1ad9('0x2a')]);return _0x2d3f77(_0xb007ad['error'][_0x1ad9('0x2a')]);}else{logger[_0x1ad9('0x25')]('WhatsappMessage,\x20%s,\x20%s',_0x23887f,'request\x20sent');_0x2d3f77(_0xb007ad[_0x1ad9('0x2b')][_0x1ad9('0x2a')]);}})['catch'](function(_0xc5aca2){logger[_0x1ad9('0x29')](_0x1ad9('0x26'),_0x23887f,_0xc5aca2);_0x4cfd04(_0xc5aca2);});});}function respondWithStatusCode(_0x2206a1,_0x32845d){_0x32845d=_0x32845d||0xcc;return function(_0x36d16c){if(_0x36d16c){return _0x2206a1['sendStatus'](_0x32845d);}return _0x2206a1[_0x1ad9('0x2c')](_0x32845d)['end']();};}function respondWithResult(_0x5bd3ac,_0x1d0ede){_0x1d0ede=_0x1d0ede||0xc8;return function(_0x4bba92){if(_0x4bba92){return _0x5bd3ac[_0x1ad9('0x2c')](_0x1d0ede)[_0x1ad9('0x2d')](_0x4bba92);}};}function respondWithFilteredResult(_0x5438e0,_0x128d78){return function(_0x4f4a76){if(_0x4f4a76){var _0x3b16af=typeof _0x128d78[_0x1ad9('0x2e')]===_0x1ad9('0x2f')&&typeof _0x128d78[_0x1ad9('0x30')]==='undefined';var _0x74c600=_0x4f4a76[_0x1ad9('0x31')];var _0x43c53e=_0x3b16af?0x0:_0x128d78[_0x1ad9('0x2e')];var _0x2e2fe0=_0x3b16af?_0x4f4a76[_0x1ad9('0x31')]:_0x128d78['offset']+_0x128d78[_0x1ad9('0x30')];var _0x27af74;if(_0x2e2fe0>=_0x74c600){_0x2e2fe0=_0x74c600;_0x27af74=0xc8;}else{_0x27af74=0xce;}_0x5438e0[_0x1ad9('0x2c')](_0x27af74);return _0x5438e0['set'](_0x1ad9('0x32'),_0x43c53e+'-'+_0x2e2fe0+'/'+_0x74c600)[_0x1ad9('0x2d')](_0x4f4a76);}return null;};}function patchUpdates(_0x405f01){return function(_0x105694){try{jsonpatch[_0x1ad9('0x33')](_0x105694,_0x405f01,!![]);}catch(_0x4df9f7){return BPromise[_0x1ad9('0x34')](_0x4df9f7);}return _0x105694[_0x1ad9('0x35')]();};}function saveUpdates(_0x2400d1,_0x5cf4a6){return function(_0xcd9a12){if(_0xcd9a12){return _0xcd9a12[_0x1ad9('0x36')](_0x2400d1)[_0x1ad9('0x24')](function(_0x4ea4c0){return _0x4ea4c0;});}return null;};}function removeEntity(_0x41b98c,_0x5d633c){return function(_0x3565fb){if(_0x3565fb){return _0x3565fb[_0x1ad9('0x37')]()['then'](function(){_0x41b98c[_0x1ad9('0x2c')](0xcc)['end']();});}};}function handleEntityNotFound(_0x2dffb8,_0x19cb61){return function(_0x3467fc){if(!_0x3467fc){_0x2dffb8[_0x1ad9('0x38')](0x194);}return _0x3467fc;};}function handleError(_0x4e07ab,_0x3c41af){_0x3c41af=_0x3c41af||0x1f4;return function(_0x5ecd13){logger[_0x1ad9('0x29')](_0x5ecd13[_0x1ad9('0x39')]);if(_0x5ecd13[_0x1ad9('0x3a')]){delete _0x5ecd13[_0x1ad9('0x3a')];}_0x4e07ab[_0x1ad9('0x2c')](_0x3c41af)[_0x1ad9('0x3b')](_0x5ecd13);};}exports['index']=function(_0x47e636,_0x29a12b){var _0x6834f5={},_0x59112b={},_0x49fa24={'count':0x0,'rows':[]};var _0x1742be=_[_0x1ad9('0x3c')](db['WhatsappMessage'][_0x1ad9('0x3d')],function(_0x128420){return{'name':_0x128420['fieldName'],'type':_0x128420[_0x1ad9('0x3e')][_0x1ad9('0x3f')]};});_0x59112b['model']=_[_0x1ad9('0x3c')](_0x1742be,_0x1ad9('0x3a'));_0x59112b[_0x1ad9('0x40')]=_[_0x1ad9('0x41')](_0x47e636[_0x1ad9('0x40')]);_0x59112b[_0x1ad9('0x42')]=_['intersection'](_0x59112b[_0x1ad9('0x43')],_0x59112b[_0x1ad9('0x40')]);_0x6834f5[_0x1ad9('0x44')]=_[_0x1ad9('0x45')](_0x59112b[_0x1ad9('0x43')],qs[_0x1ad9('0x46')](_0x47e636['query']['fields']));_0x6834f5[_0x1ad9('0x44')]=_0x6834f5[_0x1ad9('0x44')][_0x1ad9('0x47')]?_0x6834f5[_0x1ad9('0x44')]:_0x59112b[_0x1ad9('0x43')];if(!_0x47e636['query'][_0x1ad9('0x48')](_0x1ad9('0x49'))){_0x6834f5[_0x1ad9('0x30')]=qs['limit'](_0x47e636[_0x1ad9('0x40')][_0x1ad9('0x30')]);_0x6834f5[_0x1ad9('0x2e')]=qs[_0x1ad9('0x2e')](_0x47e636[_0x1ad9('0x40')][_0x1ad9('0x2e')]);}_0x6834f5[_0x1ad9('0x4a')]=qs[_0x1ad9('0x4b')](_0x47e636[_0x1ad9('0x40')][_0x1ad9('0x4b')]);_0x6834f5[_0x1ad9('0x4c')]=qs[_0x1ad9('0x42')](_[_0x1ad9('0x4d')](_0x47e636[_0x1ad9('0x40')],_0x59112b[_0x1ad9('0x42')]),_0x1742be);if(_0x47e636['query'][_0x1ad9('0x4e')]){_0x6834f5[_0x1ad9('0x4c')]=_[_0x1ad9('0x4f')](_0x6834f5[_0x1ad9('0x4c')],{'$or':_[_0x1ad9('0x3c')](_0x1742be,function(_0x4378e4){if(_0x4378e4['type']!==_0x1ad9('0x50')){var _0x3f749c={};_0x3f749c[_0x4378e4[_0x1ad9('0x3a')]]={'$like':'%'+_0x47e636[_0x1ad9('0x40')]['filter']+'%'};return _0x3f749c;}})});}_0x6834f5=_[_0x1ad9('0x4f')]({},_0x6834f5,_0x47e636[_0x1ad9('0x51')]);var _0x24d3f1={'where':_0x6834f5['where']};return db[_0x1ad9('0x52')][_0x1ad9('0x31')](_0x24d3f1)[_0x1ad9('0x24')](function(_0x8d6e41){_0x49fa24[_0x1ad9('0x31')]=_0x8d6e41;if(_0x47e636[_0x1ad9('0x40')][_0x1ad9('0x53')]){_0x6834f5[_0x1ad9('0x54')]=[{'all':!![]}];}return db[_0x1ad9('0x52')][_0x1ad9('0x55')](_0x6834f5);})['then'](function(_0x3d4d84){_0x49fa24[_0x1ad9('0x56')]=_0x3d4d84;return _0x49fa24;})[_0x1ad9('0x24')](respondWithFilteredResult(_0x29a12b,_0x6834f5))[_0x1ad9('0x57')](handleError(_0x29a12b,null));};exports[_0x1ad9('0x58')]=function(_0x355328,_0x506a81){var _0x48aaf3={'raw':!![],'where':{'id':_0x355328[_0x1ad9('0x59')]['id']}},_0x6a6e14={};_0x6a6e14[_0x1ad9('0x43')]=_['keys'](db[_0x1ad9('0x52')][_0x1ad9('0x3d')]);_0x6a6e14['query']=_['keys'](_0x355328[_0x1ad9('0x40')]);_0x6a6e14[_0x1ad9('0x42')]=_[_0x1ad9('0x45')](_0x6a6e14[_0x1ad9('0x43')],_0x6a6e14['query']);_0x48aaf3[_0x1ad9('0x44')]=_[_0x1ad9('0x45')](_0x6a6e14[_0x1ad9('0x43')],qs[_0x1ad9('0x46')](_0x355328[_0x1ad9('0x40')][_0x1ad9('0x46')]));_0x48aaf3[_0x1ad9('0x44')]=_0x48aaf3[_0x1ad9('0x44')][_0x1ad9('0x47')]?_0x48aaf3[_0x1ad9('0x44')]:_0x6a6e14['model'];if(_0x355328['query']['includeAll']){_0x48aaf3[_0x1ad9('0x54')]=[{'all':!![]}];}_0x48aaf3=_[_0x1ad9('0x4f')]({},_0x48aaf3,_0x355328['options']);return db['WhatsappMessage'][_0x1ad9('0x5a')](_0x48aaf3)['then'](handleEntityNotFound(_0x506a81,null))['then'](respondWithResult(_0x506a81,null))[_0x1ad9('0x57')](handleError(_0x506a81,null));};exports[_0x1ad9('0x5b')]=function(_0x1882e1,_0x5ca1bf){return db['WhatsappMessage'][_0x1ad9('0x5b')](_0x1882e1['body'],{})[_0x1ad9('0x24')](respondWithResult(_0x5ca1bf,0xc9))[_0x1ad9('0x57')](handleError(_0x5ca1bf,null));};exports[_0x1ad9('0x36')]=function(_0x460343,_0x2f078d){if(_0x460343[_0x1ad9('0x5c')]['id']){delete _0x460343[_0x1ad9('0x5c')]['id'];}return db[_0x1ad9('0x52')]['find']({'where':{'id':_0x460343['params']['id']}})[_0x1ad9('0x24')](handleEntityNotFound(_0x2f078d,null))['then'](saveUpdates(_0x460343[_0x1ad9('0x5c')],null))[_0x1ad9('0x24')](respondWithResult(_0x2f078d,null))[_0x1ad9('0x57')](handleError(_0x2f078d,null));};exports[_0x1ad9('0x37')]=function(_0x1c0ae2,_0x110c2a){return db[_0x1ad9('0x52')][_0x1ad9('0x5a')]({'where':{'id':_0x1c0ae2[_0x1ad9('0x59')]['id']}})[_0x1ad9('0x24')](handleEntityNotFound(_0x110c2a,null))['then'](removeEntity(_0x110c2a,null))[_0x1ad9('0x57')](handleError(_0x110c2a,null));};exports['describe']=function(_0x8fcbdb,_0x532523){return db[_0x1ad9('0x52')][_0x1ad9('0x5d')]()['then'](respondWithResult(_0x532523,null))['catch'](handleError(_0x532523,null));};var interaction_log=require(_0x1ad9('0x14'))(_0x1ad9('0x5e'));exports[_0x1ad9('0x5f')]=function(_0x434446,_0x2e8baa,_0x245e8e){var _0x18ac8f={'agent':{},'channel':_0x1ad9('0x60')};if(_0x434446[_0x1ad9('0x5c')]['id']){delete _0x434446[_0x1ad9('0x5c')]['id'];}_0x434446[_0x1ad9('0x5c')][_0x1ad9('0x61')]=!![];_0x434446[_0x1ad9('0x5c')][_0x1ad9('0x62')]=moment()['format'](_0x1ad9('0x63'));_0x434446[_0x1ad9('0x5c')]['UserId']=_0x434446[_0x1ad9('0x5c')][_0x1ad9('0x64')]||_0x434446[_0x1ad9('0x65')]['id'];_0x18ac8f['agent']['id']=_0x434446['body'][_0x1ad9('0x64')];return db['WhatsappMessage'][_0x1ad9('0x5a')]({'where':{'id':_0x434446[_0x1ad9('0x59')]['id'],'UserId':null}})[_0x1ad9('0x24')](handleEntityNotFound(_0x2e8baa,null))[_0x1ad9('0x24')](saveUpdates(_0x434446[_0x1ad9('0x5c')],null))[_0x1ad9('0x24')](function(_0x33891e){if(_0x33891e){_0x18ac8f['message']=_0x33891e[_0x1ad9('0x66')]({'plain':!![]});return db[_0x1ad9('0x67')]['find']({'where':{'id':_0x33891e[_0x1ad9('0x68')]}});}return null;})[_0x1ad9('0x24')](handleEntityNotFound(_0x2e8baa,null))[_0x1ad9('0x24')](function(_0x5b18ea){if(_0x5b18ea){return _0x5b18ea['update']({'UserId':_0x434446['body'][_0x1ad9('0x64')],'read1stAt':_[_0x1ad9('0x69')](_0x5b18ea[_0x1ad9('0x6a')])?moment()['format']('YYYY-MM-DD\x20HH:mm:ss'):undefined});}return null;})[_0x1ad9('0x24')](function(_0x59b3f5){if(_0x59b3f5){_0x18ac8f[_0x1ad9('0x6b')]=_0x59b3f5[_0x1ad9('0x66')]({'plain':!![]});interaction_log['info'](_0x1ad9('0x6c'),_0x434446[_0x1ad9('0x65')]['id'],_0x434446['user'][_0x1ad9('0x3a')],_0x434446['user'][_0x1ad9('0x6d')],_0x18ac8f[_0x1ad9('0x6b')]['id'],_0x434446[_0x1ad9('0x5c')]?JSON[_0x1ad9('0x28')](_0x434446[_0x1ad9('0x5c')]):'null');return respondWithRpcPromise('AcceptMessage','acceptMessage',_0x18ac8f);}return null;})[_0x1ad9('0x24')](function(_0x48e76a){var _0x53c7a0=_0x1ad9('0x6e')+_0x48e76a[_0x1ad9('0x2a')][_0x1ad9('0x6f')];return db[_0x1ad9('0x70')][_0x1ad9('0x40')](_0x53c7a0,{'type':db[_0x1ad9('0x71')]['QueryTypes'][_0x1ad9('0x72')],'raw':!![]})[_0x1ad9('0x24')](function(_0x1038f5){return _0x1038f5;});})[_0x1ad9('0x24')](function(_0x33ec45){if(_0x33ec45){_0x18ac8f['message'][_0x1ad9('0x73')]=_0x33ec45[0x0];if(!_0x434446['body']['UserId'])return;return db[_0x1ad9('0x74')]['find']({'where':{'id':_0x434446[_0x1ad9('0x5c')]['UserId'],'role':'agent'},'attributes':['id','name',_0x1ad9('0x75'),_0x1ad9('0x76'),_0x1ad9('0x77')],'raw':!![]});}return null;})[_0x1ad9('0x24')](function(_0x488c97){if(!_0x488c97)return null;_0x18ac8f[_0x1ad9('0x2a')][_0x1ad9('0x78')]=_0x488c97;return _0x18ac8f;})[_0x1ad9('0x24')](function(_0x43d802){if(_0x43d802){if(_0x434446[_0x1ad9('0x5c')][_0x1ad9('0x79')]){_0x18ac8f[_0x1ad9('0x2a')][_0x1ad9('0x7a')]=util[_0x1ad9('0x7b')](_0x1ad9('0x7c'),_0x434446[_0x1ad9('0x65')][_0x1ad9('0x3a')]);_0x18ac8f[_0x1ad9('0x2a')][_0x1ad9('0x7d')]=_0x18ac8f[_0x1ad9('0x7d')];_0x18ac8f[_0x1ad9('0x2a')][_0x1ad9('0x7e')]=_0x1ad9('0x5f');return respondWithRpcPromise('EventManager',_0x1ad9('0x7f'),{'event':_0x1ad9('0x80'),'message':_0x18ac8f[_0x1ad9('0x2a')]},client9002)[_0x1ad9('0x24')](function(){return _0x18ac8f;});}return _0x18ac8f;}return null;})[_0x1ad9('0x24')](respondWithResult(_0x2e8baa,null))['catch'](handleError(_0x2e8baa,null));};var interaction_log=require(_0x1ad9('0x14'))(_0x1ad9('0x5e'));exports[_0x1ad9('0x34')]=function(_0x11be84,_0x4aeada,_0x47d765){var _0x38b389={'agent':{},'channel':_0x1ad9('0x60')};if(_0x11be84[_0x1ad9('0x5c')]['id']){delete _0x11be84[_0x1ad9('0x5c')]['id'];}_0x11be84['body'][_0x1ad9('0x64')]=_0x11be84[_0x1ad9('0x5c')][_0x1ad9('0x64')]||_0x11be84[_0x1ad9('0x65')]['id'];_0x38b389['agent']['id']=_0x11be84['body'][_0x1ad9('0x64')];return db['WhatsappMessage'][_0x1ad9('0x5a')]({'where':{'id':_0x11be84[_0x1ad9('0x59')]['id'],'UserId':null}})[_0x1ad9('0x24')](handleEntityNotFound(_0x4aeada,null))[_0x1ad9('0x24')](function(_0x5a902c){if(_0x5a902c){_0x38b389[_0x1ad9('0x2a')]=_0x5a902c[_0x1ad9('0x66')]({'plain':!![]});return db[_0x1ad9('0x67')][_0x1ad9('0x5a')]({'where':{'id':_0x5a902c['WhatsappInteractionId']}});}return null;})[_0x1ad9('0x24')](handleEntityNotFound(_0x4aeada,null))[_0x1ad9('0x24')](function(_0x137350){if(_0x137350){_0x38b389['interaction']=_0x137350[_0x1ad9('0x66')]({'plain':!![]});interaction_log['info']('[WHATSAPPMESSAGE:REJECT]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s',_0x11be84[_0x1ad9('0x65')]['id'],_0x11be84['user'][_0x1ad9('0x3a')],_0x11be84['user'][_0x1ad9('0x6d')],_0x38b389[_0x1ad9('0x6b')]['id'],_0x11be84[_0x1ad9('0x5c')]?JSON[_0x1ad9('0x28')](_0x11be84[_0x1ad9('0x5c')]):_0x1ad9('0x81'));return respondWithRpcPromise(_0x1ad9('0x82'),'rejectMessage',_0x38b389);}return null;})['then'](function(_0x47065c){var _0x2ca4f9=_0x1ad9('0x6e')+_0x47065c[_0x1ad9('0x2a')][_0x1ad9('0x6f')];return db['sequelize'][_0x1ad9('0x40')](_0x2ca4f9,{'type':db[_0x1ad9('0x71')]['QueryTypes']['SELECT'],'raw':!![]})[_0x1ad9('0x24')](function(_0x5938bb){return _0x5938bb;});})[_0x1ad9('0x24')](function(_0x556309){if(_0x556309){_0x38b389[_0x1ad9('0x2a')][_0x1ad9('0x73')]=_0x556309[0x0];if(!_0x11be84[_0x1ad9('0x5c')][_0x1ad9('0x64')])return;return db['User']['find']({'where':{'id':_0x11be84['body']['UserId'],'role':_0x1ad9('0x78')},'attributes':['id',_0x1ad9('0x3a'),_0x1ad9('0x75'),_0x1ad9('0x76'),_0x1ad9('0x77')],'raw':!![]});}return null;})[_0x1ad9('0x24')](function(_0x38683a){if(!_0x38683a)return null;_0x38b389[_0x1ad9('0x2a')][_0x1ad9('0x78')]=_0x38683a;return _0x38b389;})[_0x1ad9('0x24')](function(_0x4642c1){if(_0x4642c1){_0x4642c1[_0x1ad9('0x2a')][_0x1ad9('0x7a')]=util[_0x1ad9('0x7b')]('SIP/%s',_0x11be84[_0x1ad9('0x65')][_0x1ad9('0x3a')]);_0x4642c1[_0x1ad9('0x2a')][_0x1ad9('0x7d')]=_0x38b389[_0x1ad9('0x7d')];_0x4642c1[_0x1ad9('0x2a')][_0x1ad9('0x7e')]=_0x1ad9('0x34');respondWithRpcPromise('EventManager',_0x1ad9('0x7f'),{'event':_0x1ad9('0x83'),'message':_0x4642c1['message']},client9002);return _0x38b389;}return null;})['then'](respondWithResult(_0x4aeada,null))[_0x1ad9('0x57')](handleError(_0x4aeada,null));};exports[_0x1ad9('0x2c')]=function(_0x4633e2,_0x5bf3d3,_0x501d3d){if(_0x4633e2[_0x1ad9('0x5c')]['id']){delete _0x4633e2[_0x1ad9('0x5c')]['id'];}var _0x412d41;return db['WhatsappMessage'][_0x1ad9('0x5a')]({'where':{'id':_0x4633e2[_0x1ad9('0x59')]['id']}})['then'](handleEntityNotFound(_0x5bf3d3,null))['then'](function(_0x2a931a){if(_0x2a931a){_0x412d41=_0x2a931a;return db['WhatsappAccount'][_0x1ad9('0x5a')]({'where':{'id':_0x2a931a['WhatsappAccountId']}});}})[_0x1ad9('0x24')](handleEntityNotFound(_0x5bf3d3,null))[_0x1ad9('0x24')](function(_0x37322d){if(_0x37322d){logger[_0x1ad9('0x27')](_0x1ad9('0x84'),_0x1ad9('0x2c'),_0x1ad9('0x85'),_0x37322d[_0x1ad9('0x3e')],util[_0x1ad9('0x86')](_0x4633e2[_0x1ad9('0x5c')],{'showHidden':![],'depth':null}));switch(_0x37322d['type']){case _0x1ad9('0x87'):if(_0x4633e2[_0x1ad9('0x5c')]['MessageSid']&&_0x4633e2[_0x1ad9('0x5c')][_0x1ad9('0x88')]===_0x412d41[_0x1ad9('0x89')]&&_0x4633e2[_0x1ad9('0x5c')][_0x1ad9('0x8a')]&&_0x4633e2['body']['MessageStatus']===_0x1ad9('0x61')){return _0x412d41['update']({'read':!![]});}else{logger['error']('WhatsappAccount,\x20%s,\x20%s,\x20%s',_0x1ad9('0x2c'),_0x1ad9('0x87'),util['inspect'](_0x4633e2[_0x1ad9('0x5c')],{'showHidden':![],'depth':null}));}break;}return _0x412d41;}})[_0x1ad9('0x24')](respondWithResult(_0x5bf3d3,null))[_0x1ad9('0x57')](handleError(_0x5bf3d3,null));};
\ No newline at end of file
index bc31326..2721e02 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe511=['../../mysqldb','setMaxListeners','update','remove','emit','hasOwnProperty','hook','events'];(function(_0x4c630b,_0x25f8ef){var _0x181259=function(_0x5d0e58){while(--_0x5d0e58){_0x4c630b['push'](_0x4c630b['shift']());}};_0x181259(++_0x25f8ef);}(_0xe511,0x16f));var _0x1e51=function(_0x37b6cb,_0x2453b8){_0x37b6cb=_0x37b6cb-0x0;var _0x216b0c=_0xe511[_0x37b6cb];return _0x216b0c;};'use strict';var EventEmitter=require(_0x1e51('0x0'));var WhatsappMessage=require(_0x1e51('0x1'))['db']['WhatsappMessage'];var WhatsappMessageEvents=new EventEmitter();WhatsappMessageEvents[_0x1e51('0x2')](0x0);var events={'afterCreate':'save','afterUpdate':_0x1e51('0x3'),'afterDestroy':_0x1e51('0x4')};function emitEvent(_0x5bfa5d){return function(_0x42e242,_0x2be2b7,_0x204da7){WhatsappMessageEvents[_0x1e51('0x5')](_0x5bfa5d+':'+_0x42e242['id'],_0x42e242);WhatsappMessageEvents['emit'](_0x5bfa5d,_0x42e242);_0x204da7(null);};}for(var e in events){if(events[_0x1e51('0x6')](e)){var event=events[e];WhatsappMessage[_0x1e51('0x7')](e,emitEvent(event));}}module['exports']=WhatsappMessageEvents;
\ No newline at end of file
+var _0xf4eb=['hook','events','update','emit','hasOwnProperty'];(function(_0x1213f0,_0x3525e6){var _0x5796b8=function(_0x190cd5){while(--_0x190cd5){_0x1213f0['push'](_0x1213f0['shift']());}};_0x5796b8(++_0x3525e6);}(_0xf4eb,0xec));var _0xbf4e=function(_0x255f37,_0x1e2419){_0x255f37=_0x255f37-0x0;var _0x3bdbfe=_0xf4eb[_0x255f37];return _0x3bdbfe;};'use strict';var EventEmitter=require(_0xbf4e('0x0'));var WhatsappMessage=require('../../mysqldb')['db']['WhatsappMessage'];var WhatsappMessageEvents=new EventEmitter();WhatsappMessageEvents['setMaxListeners'](0x0);var events={'afterCreate':'save','afterUpdate':_0xbf4e('0x1'),'afterDestroy':'remove'};function emitEvent(_0x4e7fa7){return function(_0x2e3070,_0x1c7606,_0x32d1d7){WhatsappMessageEvents[_0xbf4e('0x2')](_0x4e7fa7+':'+_0x2e3070['id'],_0x2e3070);WhatsappMessageEvents[_0xbf4e('0x2')](_0x4e7fa7,_0x2e3070);_0x32d1d7(null);};}for(var e in events){if(events[_0xbf4e('0x3')](e)){var event=events[e];WhatsappMessage[_0xbf4e('0x4')](e,emitEvent(event));}}module['exports']=WhatsappMessageEvents;
\ No newline at end of file
index f52c39f..fa887d1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7e12=['request-promise','path','../../config/environment','define','WhatsappMessage','whatsapp_messages','messageId','fti_whatsapp_messages','body','FULLTEXT','models','get','direction','toLowerCase','out','secret','isNil','WhatsappInteraction','findOne','WhatsappInteractionId','then','update','createdAt','catch','error','WhatsappAccountId','type','twilio','authToken','phone','accountSid','messages','create','whatsapp:','/api/whatsapp/messages/','/status?token=','sid','WhatsappMessage,\x20%s,\x20%s,\x20%s','inspect','afterCreate','Missing\x20parameters:\x20phone,\x20accountSid\x20or\x20authToken','finally','utf8mb4','utf8mb4_unicode_ci','lodash','util','api','moment'];(function(_0x25662e,_0x4cec68){var _0x59b7bc=function(_0xafb159){while(--_0xafb159){_0x25662e['push'](_0x25662e['shift']());}};_0x59b7bc(++_0x4cec68);}(_0x7e12,0x17c));var _0x27e1=function(_0x2f227c,_0x360c3a){_0x2f227c=_0x2f227c-0x0;var _0x5032bc=_0x7e12[_0x2f227c];return _0x5032bc;};'use strict';var _=require(_0x27e1('0x0'));var util=require(_0x27e1('0x1'));var logger=require('../../config/logger')(_0x27e1('0x2'));var moment=require(_0x27e1('0x3'));var BPromise=require('bluebird');var rp=require(_0x27e1('0x4'));var fs=require('fs');var path=require(_0x27e1('0x5'));var rimraf=require('rimraf');var config=require(_0x27e1('0x6'));var attributes=require('./whatsappMessage.attributes');module['exports']=function(_0x30e084,_0x41b95a){return _0x30e084[_0x27e1('0x7')](_0x27e1('0x8'),attributes,{'tableName':_0x27e1('0x9'),'paranoid':![],'indexes':[{'name':_0x27e1('0xa'),'fields':[_0x27e1('0xa')]},{'name':_0x27e1('0xb'),'fields':[_0x27e1('0xc')],'type':_0x27e1('0xd')}],'timestamps':!![],'hooks':{'afterCreate':function(_0x85c8e,_0x163d06,_0x11fe81){var _0x1e2fce=_0x30e084[_0x27e1('0xe')];var _0x3880f9=_0x85c8e[_0x27e1('0xf')]({'plain':!![]});if(_0x3880f9['direction']['toLowerCase']()==='in'||_0x3880f9[_0x27e1('0x10')][_0x27e1('0x11')]()===_0x27e1('0x12')&&!_0x3880f9[_0x27e1('0x13')]&&!_[_0x27e1('0x14')](_0x3880f9['UserId'])){_0x1e2fce[_0x27e1('0x15')][_0x27e1('0x16')]({'where':{'id':_0x3880f9[_0x27e1('0x17')]}})[_0x27e1('0x18')](function(_0x597740){if(_0x597740){_0x597740[_0x27e1('0x19')]({'lastMsgAt':_0x3880f9[_0x27e1('0x1a')],'lastMsgDirection':_0x3880f9[_0x27e1('0x10')]['toLowerCase']()});}})[_0x27e1('0x1b')](function(_0x55a321){console[_0x27e1('0x1c')](_0x55a321);});}if(_0x3880f9[_0x27e1('0x10')]==='out'&&!_0x3880f9['secret']){var _0x27051b;_0x1e2fce['WhatsappAccount']['find']({'where':{'id':_0x3880f9[_0x27e1('0x1d')]},'raw':!![]})[_0x27e1('0x18')](function(_0x15cc59){_0x27051b=_0x15cc59;if(_0x27051b&&_0x27051b[_0x27e1('0x1e')]){switch(_0x27051b[_0x27e1('0x1e')]){case'twilio':var _0x1c3912=require(_0x27e1('0x1f'));if(_0x27051b['accountSid']&&_0x27051b[_0x27e1('0x20')]&&_0x27051b[_0x27e1('0x21')]){var _0x583528=new _0x1c3912(_0x27051b[_0x27e1('0x22')],_0x27051b['authToken']);_0x583528[_0x27e1('0x23')][_0x27e1('0x24')]({'body':_0x3880f9[_0x27e1('0xc')],'to':_0x27e1('0x25')+_0x3880f9['phone'],'from':_0x27e1('0x25')+_0x27051b[_0x27e1('0x21')],'statusCallback':_0x27051b['remote']+_0x27e1('0x26')+_0x3880f9['id']+_0x27e1('0x27')+_0x27051b['token']})[_0x27e1('0x18')](function(_0x17ed05){if(_0x17ed05['sid']){return _0x85c8e[_0x27e1('0x19')]({'messageId':_0x17ed05[_0x27e1('0x28')]});}})[_0x27e1('0x1b')](function(_0x5d3af4){logger[_0x27e1('0x1c')](_0x27e1('0x29'),'afterCreate','twilio',util[_0x27e1('0x2a')](_0x5d3af4,{'showHidden':![],'depth':null}));});}else{logger['error'](_0x27e1('0x29'),_0x27e1('0x2b'),'twilio',_0x27e1('0x2c'));}break;}}})[_0x27e1('0x2d')](function(){_0x11fe81();});}else{_0x11fe81();}}},'charset':_0x27e1('0x2e'),'collate':_0x27e1('0x2f')});};
\ No newline at end of file
+var _0xb50c=['out','secret','isNil','UserId','findOne','WhatsappInteractionId','then','update','createdAt','catch','WhatsappAccount','find','WhatsappAccountId','type','twilio','accountSid','authToken','phone','messages','create','whatsapp:','remote','/api/whatsapp/messages/','sid','error','WhatsappMessage,\x20%s,\x20%s,\x20%s','afterCreate','inspect','finally','lodash','util','../../config/logger','bluebird','request-promise','rimraf','../../config/environment','./whatsappMessage.attributes','exports','WhatsappMessage','whatsapp_messages','messageId','fti_whatsapp_messages','body','models','toLowerCase','direction'];(function(_0x198fd4,_0x2c5d04){var _0x8b3630=function(_0x1460c2){while(--_0x1460c2){_0x198fd4['push'](_0x198fd4['shift']());}};_0x8b3630(++_0x2c5d04);}(_0xb50c,0x1bb));var _0xcb50=function(_0x43bc0e,_0x18864e){_0x43bc0e=_0x43bc0e-0x0;var _0x5b4081=_0xb50c[_0x43bc0e];return _0x5b4081;};'use strict';var _=require(_0xcb50('0x0'));var util=require(_0xcb50('0x1'));var logger=require(_0xcb50('0x2'))('api');var moment=require('moment');var BPromise=require(_0xcb50('0x3'));var rp=require(_0xcb50('0x4'));var fs=require('fs');var path=require('path');var rimraf=require(_0xcb50('0x5'));var config=require(_0xcb50('0x6'));var attributes=require(_0xcb50('0x7'));module[_0xcb50('0x8')]=function(_0x144411,_0x59fbb9){return _0x144411['define'](_0xcb50('0x9'),attributes,{'tableName':_0xcb50('0xa'),'paranoid':![],'indexes':[{'name':'messageId','fields':[_0xcb50('0xb')]},{'name':_0xcb50('0xc'),'fields':[_0xcb50('0xd')],'type':'FULLTEXT'}],'timestamps':!![],'hooks':{'afterCreate':function(_0x23fa92,_0x424b04,_0x429f13){var _0x247751=_0x144411[_0xcb50('0xe')];var _0x1b6447=_0x23fa92['get']({'plain':!![]});if(_0x1b6447['direction'][_0xcb50('0xf')]()==='in'||_0x1b6447[_0xcb50('0x10')]['toLowerCase']()===_0xcb50('0x11')&&!_0x1b6447[_0xcb50('0x12')]&&!_[_0xcb50('0x13')](_0x1b6447[_0xcb50('0x14')])){_0x247751['WhatsappInteraction'][_0xcb50('0x15')]({'where':{'id':_0x1b6447[_0xcb50('0x16')]}})[_0xcb50('0x17')](function(_0x43e50d){if(_0x43e50d){_0x43e50d[_0xcb50('0x18')]({'lastMsgAt':_0x1b6447[_0xcb50('0x19')],'lastMsgDirection':_0x1b6447[_0xcb50('0x10')]['toLowerCase']()});}})[_0xcb50('0x1a')](function(_0x41ee61){console['error'](_0x41ee61);});}if(_0x1b6447[_0xcb50('0x10')]===_0xcb50('0x11')&&!_0x1b6447[_0xcb50('0x12')]){var _0x20ea9e;_0x247751[_0xcb50('0x1b')][_0xcb50('0x1c')]({'where':{'id':_0x1b6447[_0xcb50('0x1d')]},'raw':!![]})['then'](function(_0x4f93d4){_0x20ea9e=_0x4f93d4;if(_0x20ea9e&&_0x20ea9e[_0xcb50('0x1e')]){switch(_0x20ea9e['type']){case'twilio':var _0x36d2d1=require(_0xcb50('0x1f'));if(_0x20ea9e[_0xcb50('0x20')]&&_0x20ea9e[_0xcb50('0x21')]&&_0x20ea9e[_0xcb50('0x22')]){var _0x5d93a7=new _0x36d2d1(_0x20ea9e[_0xcb50('0x20')],_0x20ea9e['authToken']);_0x5d93a7[_0xcb50('0x23')][_0xcb50('0x24')]({'body':_0x1b6447[_0xcb50('0xd')],'to':_0xcb50('0x25')+_0x1b6447[_0xcb50('0x22')],'from':_0xcb50('0x25')+_0x20ea9e[_0xcb50('0x22')],'statusCallback':_0x20ea9e[_0xcb50('0x26')]+_0xcb50('0x27')+_0x1b6447['id']+'/status?token='+_0x20ea9e['token']})[_0xcb50('0x17')](function(_0x3daebd){if(_0x3daebd[_0xcb50('0x28')]){return _0x23fa92['update']({'messageId':_0x3daebd['sid']});}})[_0xcb50('0x1a')](function(_0x151405){logger[_0xcb50('0x29')](_0xcb50('0x2a'),_0xcb50('0x2b'),_0xcb50('0x1f'),util[_0xcb50('0x2c')](_0x151405,{'showHidden':![],'depth':null}));});}else{logger['error']('WhatsappMessage,\x20%s,\x20%s,\x20%s',_0xcb50('0x2b'),_0xcb50('0x1f'),'Missing\x20parameters:\x20phone,\x20accountSid\x20or\x20authToken');}break;}}})[_0xcb50('0x2d')](function(){_0x429f13();});}else{_0x429f13();}}},'charset':'utf8mb4','collate':'utf8mb4_unicode_ci'});};
\ No newline at end of file
index 2c43292..02e7e89 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9aae=['socket.io-emitter','./whatsappMessage.socket','register','request','WhatsappMessage,\x20%s,\x20%s','debug','WhatsappMessage,\x20%s,\x20%s,\x20%s','request\x20sent','error','code','message','info','result','catch','CreateWhatsappMessage','WhatsappMessage','create','body','options','raw','then','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','defaults','redis','localhost'];(function(_0x2ba19b,_0x43ad46){var _0x166c11=function(_0x55da19){while(--_0x55da19){_0x2ba19b['push'](_0x2ba19b['shift']());}};_0x166c11(++_0x43ad46);}(_0x9aae,0x1b7));var _0xe9aa=function(_0x530eb0,_0x63110c){_0x530eb0=_0x530eb0-0x0;var _0x3dcb56=_0x9aae[_0x530eb0];return _0x3dcb56;};'use strict';var _=require(_0xe9aa('0x0'));var util=require(_0xe9aa('0x1'));var moment=require(_0xe9aa('0x2'));var BPromise=require(_0xe9aa('0x3'));var rs=require(_0xe9aa('0x4'));var fs=require('fs');var Redis=require(_0xe9aa('0x5'));var db=require(_0xe9aa('0x6'))['db'];var utils=require(_0xe9aa('0x7'));var logger=require(_0xe9aa('0x8'))(_0xe9aa('0x9'));var config=require(_0xe9aa('0xa'));var jayson=require(_0xe9aa('0xb'));var client=jayson[_0xe9aa('0xc')][_0xe9aa('0xd')]({'port':0x232a});config['redis']=_[_0xe9aa('0xe')](config[_0xe9aa('0xf')],{'host':_0xe9aa('0x10'),'port':0x18eb});var socket=require(_0xe9aa('0x11'))(new Redis(config['redis']));require(_0xe9aa('0x12'))[_0xe9aa('0x13')](socket);function respondWithRpcPromise(_0x4402a9,_0x38023f,_0xc8df98){return new BPromise(function(_0x2fde0b,_0xf966a0){return client[_0xe9aa('0x14')](_0x4402a9,_0xc8df98)['then'](function(_0x4cf6be){logger['info'](_0xe9aa('0x15'),_0x38023f,'request\x20sent');logger[_0xe9aa('0x16')](_0xe9aa('0x17'),_0x38023f,_0xe9aa('0x18'),JSON['stringify'](_0x4cf6be));if(_0x4cf6be[_0xe9aa('0x19')]){if(_0x4cf6be[_0xe9aa('0x19')][_0xe9aa('0x1a')]===0x1f4){logger[_0xe9aa('0x19')]('WhatsappMessage,\x20%s,\x20%s',_0x38023f,_0x4cf6be[_0xe9aa('0x19')][_0xe9aa('0x1b')]);return _0xf966a0(_0x4cf6be[_0xe9aa('0x19')][_0xe9aa('0x1b')]);}logger[_0xe9aa('0x19')](_0xe9aa('0x15'),_0x38023f,_0x4cf6be['error']['message']);return _0x2fde0b(_0x4cf6be[_0xe9aa('0x19')]['message']);}else{logger[_0xe9aa('0x1c')]('WhatsappMessage,\x20%s,\x20%s',_0x38023f,'request\x20sent');_0x2fde0b(_0x4cf6be[_0xe9aa('0x1d')][_0xe9aa('0x1b')]);}})[_0xe9aa('0x1e')](function(_0x53ef49){logger[_0xe9aa('0x19')](_0xe9aa('0x15'),_0x38023f,_0x53ef49);_0xf966a0(_0x53ef49);});});}exports[_0xe9aa('0x1f')]=function(_0x5dd827){var _0x55b092=this;return new Promise(function(_0x37869f,_0x207aaa){return db[_0xe9aa('0x20')][_0xe9aa('0x21')](_0x5dd827[_0xe9aa('0x22')],{'raw':_0x5dd827[_0xe9aa('0x23')]?_0x5dd827[_0xe9aa('0x23')][_0xe9aa('0x24')]===undefined?!![]:![]:!![]})[_0xe9aa('0x25')](function(_0x5c6a79){logger[_0xe9aa('0x1c')](_0xe9aa('0x1f'),_0x5dd827);logger[_0xe9aa('0x16')]('CreateWhatsappMessage',_0x5dd827,JSON['stringify'](_0x5c6a79));_0x37869f(_0x5c6a79);})[_0xe9aa('0x1e')](function(_0xc23865){logger[_0xe9aa('0x19')](_0xe9aa('0x1f'),_0xc23865[_0xe9aa('0x1b')],_0x5dd827);_0x207aaa(_0x55b092[_0xe9aa('0x19')](0x1f4,_0xc23865[_0xe9aa('0x1b')]));});});};
\ No newline at end of file
+var _0x88b4=['WhatsappMessage,\x20%s,\x20%s','message','info','result','catch','CreateWhatsappMessage','WhatsappMessage','body','options','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/logger','rpc','../../config/environment','jayson/promise','redis','defaults','localhost','socket.io-emitter','request','then','request\x20sent','debug','WhatsappMessage,\x20%s,\x20%s,\x20%s','stringify','error','code'];(function(_0x497df6,_0x4d0d21){var _0x59a708=function(_0x593ec9){while(--_0x593ec9){_0x497df6['push'](_0x497df6['shift']());}};_0x59a708(++_0x4d0d21);}(_0x88b4,0x69));var _0x488b=function(_0x193ddf,_0x6f30bb){_0x193ddf=_0x193ddf-0x0;var _0x5bc6df=_0x88b4[_0x193ddf];return _0x5bc6df;};'use strict';var _=require(_0x488b('0x0'));var util=require(_0x488b('0x1'));var moment=require(_0x488b('0x2'));var BPromise=require(_0x488b('0x3'));var rs=require(_0x488b('0x4'));var fs=require('fs');var Redis=require(_0x488b('0x5'));var db=require(_0x488b('0x6'))['db'];var utils=require('../../config/utils');var logger=require(_0x488b('0x7'))(_0x488b('0x8'));var config=require(_0x488b('0x9'));var jayson=require(_0x488b('0xa'));var client=jayson['client']['http']({'port':0x232a});config[_0x488b('0xb')]=_[_0x488b('0xc')](config['redis'],{'host':_0x488b('0xd'),'port':0x18eb});var socket=require(_0x488b('0xe'))(new Redis(config[_0x488b('0xb')]));require('./whatsappMessage.socket')['register'](socket);function respondWithRpcPromise(_0x441b7f,_0x2f80a8,_0x2c773d){return new BPromise(function(_0x30dddc,_0x3c2e8b){return client[_0x488b('0xf')](_0x441b7f,_0x2c773d)[_0x488b('0x10')](function(_0x4c30cf){logger['info']('WhatsappMessage,\x20%s,\x20%s',_0x2f80a8,_0x488b('0x11'));logger[_0x488b('0x12')](_0x488b('0x13'),_0x2f80a8,_0x488b('0x11'),JSON[_0x488b('0x14')](_0x4c30cf));if(_0x4c30cf[_0x488b('0x15')]){if(_0x4c30cf['error'][_0x488b('0x16')]===0x1f4){logger[_0x488b('0x15')](_0x488b('0x17'),_0x2f80a8,_0x4c30cf[_0x488b('0x15')]['message']);return _0x3c2e8b(_0x4c30cf[_0x488b('0x15')][_0x488b('0x18')]);}logger[_0x488b('0x15')](_0x488b('0x17'),_0x2f80a8,_0x4c30cf[_0x488b('0x15')][_0x488b('0x18')]);return _0x30dddc(_0x4c30cf['error'][_0x488b('0x18')]);}else{logger[_0x488b('0x19')](_0x488b('0x17'),_0x2f80a8,_0x488b('0x11'));_0x30dddc(_0x4c30cf[_0x488b('0x1a')]['message']);}})[_0x488b('0x1b')](function(_0x9be60b){logger[_0x488b('0x15')](_0x488b('0x17'),_0x2f80a8,_0x9be60b);_0x3c2e8b(_0x9be60b);});});}exports[_0x488b('0x1c')]=function(_0x961fce){var _0x3bc4f3=this;return new Promise(function(_0x832fc8,_0x1f92a8){return db[_0x488b('0x1d')]['create'](_0x961fce[_0x488b('0x1e')],{'raw':_0x961fce[_0x488b('0x1f')]?_0x961fce[_0x488b('0x1f')]['raw']===undefined?!![]:![]:!![]})['then'](function(_0x37c12b){logger[_0x488b('0x19')](_0x488b('0x1c'),_0x961fce);logger['debug'](_0x488b('0x1c'),_0x961fce,JSON[_0x488b('0x14')](_0x37c12b));_0x832fc8(_0x37c12b);})[_0x488b('0x1b')](function(_0x411916){logger[_0x488b('0x15')](_0x488b('0x1c'),_0x411916[_0x488b('0x18')],_0x961fce);_0x1f92a8(_0x3bc4f3['error'](0x1f4,_0x411916[_0x488b('0x18')]));});});};
\ No newline at end of file
index 4c8e464..4ae052f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xbfa3=['save','remove','emit','removeListener','register','length','whatsappMessage:','./whatsappMessage.events'];(function(_0x344a3f,_0x579a22){var _0x264712=function(_0x34c9f0){while(--_0x34c9f0){_0x344a3f['push'](_0x344a3f['shift']());}};_0x264712(++_0x579a22);}(_0xbfa3,0x87));var _0x3bfa=function(_0xa25342,_0x24522b){_0xa25342=_0xa25342-0x0;var _0x52be43=_0xbfa3[_0xa25342];return _0x52be43;};'use strict';var WhatsappMessageEvents=require(_0x3bfa('0x0'));var events=[_0x3bfa('0x1'),_0x3bfa('0x2'),'update'];function createListener(_0x132945,_0x4a6680){return function(_0x28d2a1){_0x4a6680[_0x3bfa('0x3')](_0x132945,_0x28d2a1);};}function removeListener(_0xbdb96a,_0x2c2eac){return function(){WhatsappMessageEvents[_0x3bfa('0x4')](_0xbdb96a,_0x2c2eac);};}exports[_0x3bfa('0x5')]=function(_0xcc423b){for(var _0x3911cb=0x0,_0x41d4d0=events[_0x3bfa('0x6')];_0x3911cb<_0x41d4d0;_0x3911cb++){var _0x1fdb9b=events[_0x3911cb];var _0x418807=createListener(_0x3bfa('0x7')+_0x1fdb9b,_0xcc423b);WhatsappMessageEvents['on'](_0x1fdb9b,_0x418807);}};
\ No newline at end of file
+var _0x08a7=['emit','removeListener','register','length','whatsappMessage:','./whatsappMessage.events','remove','update'];(function(_0x5d593f,_0x47c3d3){var _0x4a4ef7=function(_0x3a7689){while(--_0x3a7689){_0x5d593f['push'](_0x5d593f['shift']());}};_0x4a4ef7(++_0x47c3d3);}(_0x08a7,0x14d));var _0x708a=function(_0x281305,_0x2998d6){_0x281305=_0x281305-0x0;var _0x56ffbe=_0x08a7[_0x281305];return _0x56ffbe;};'use strict';var WhatsappMessageEvents=require(_0x708a('0x0'));var events=['save',_0x708a('0x1'),_0x708a('0x2')];function createListener(_0x34ff7c,_0x12f9fc){return function(_0x1832a8){_0x12f9fc[_0x708a('0x3')](_0x34ff7c,_0x1832a8);};}function removeListener(_0x133365,_0x469233){return function(){WhatsappMessageEvents[_0x708a('0x4')](_0x133365,_0x469233);};}exports[_0x708a('0x5')]=function(_0x4850ec){for(var _0x480662=0x0,_0x36de84=events[_0x708a('0x6')];_0x480662<_0x36de84;_0x480662++){var _0x943eb3=events[_0x480662];var _0x5599f4=createListener(_0x708a('0x7')+_0x943eb3,_0x4850ec);WhatsappMessageEvents['on'](_0x943eb3,_0x5599f4);}};
\ No newline at end of file
index 44db3fe..36df253 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd2fa=['delete','destroy','removeTeams','removeAgents','exports','multer','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','get','index','/describe','isAuthenticated','/:id','show','/:id/teams','getTeams','/:id/users','post','create','addAgents','put','update'];(function(_0x263a16,_0x489c01){var _0x251824=function(_0x510c89){while(--_0x510c89){_0x263a16['push'](_0x263a16['shift']());}};_0x251824(++_0x489c01);}(_0xd2fa,0x161));var _0xad2f=function(_0x4f4ea4,_0x712718){_0x4f4ea4=_0x4f4ea4-0x0;var _0x2b4a38=_0xd2fa[_0x4f4ea4];return _0x2b4a38;};'use strict';var multer=require(_0xad2f('0x0'));var util=require(_0xad2f('0x1'));var path=require(_0xad2f('0x2'));var timeout=require(_0xad2f('0x3'));var express=require(_0xad2f('0x4'));var router=express[_0xad2f('0x5')]();var fs_extra=require(_0xad2f('0x6'));var auth=require(_0xad2f('0x7'));var interaction=require(_0xad2f('0x8'));var config=require(_0xad2f('0x9'));var controller=require('./whatsappQueue.controller');router[_0xad2f('0xa')]('/',auth['isAuthenticated'](),controller[_0xad2f('0xb')]);router['get'](_0xad2f('0xc'),auth[_0xad2f('0xd')](),controller['describe']);router[_0xad2f('0xa')](_0xad2f('0xe'),auth[_0xad2f('0xd')](),controller[_0xad2f('0xf')]);router[_0xad2f('0xa')]('/:id/members',auth['isAuthenticated'](),controller['getMembers']);router[_0xad2f('0xa')](_0xad2f('0x10'),auth[_0xad2f('0xd')](),controller[_0xad2f('0x11')]);router[_0xad2f('0xa')](_0xad2f('0x12'),auth[_0xad2f('0xd')](),controller['getAgents']);router[_0xad2f('0x13')]('/',auth[_0xad2f('0xd')](),controller[_0xad2f('0x14')]);router[_0xad2f('0x13')](_0xad2f('0x10'),auth[_0xad2f('0xd')](),controller['addTeams']);router[_0xad2f('0x13')](_0xad2f('0x12'),auth[_0xad2f('0xd')](),controller[_0xad2f('0x15')]);router[_0xad2f('0x16')]('/:id',auth[_0xad2f('0xd')](),controller[_0xad2f('0x17')]);router[_0xad2f('0x18')](_0xad2f('0xe'),auth[_0xad2f('0xd')](),controller[_0xad2f('0x19')]);router['delete']('/:id/teams',auth[_0xad2f('0xd')](),controller[_0xad2f('0x1a')]);router[_0xad2f('0x18')](_0xad2f('0x12'),auth[_0xad2f('0xd')](),controller[_0xad2f('0x1b')]);module[_0xad2f('0x1c')]=router;
\ No newline at end of file
+var _0xd9be=['getAgents','create','post','addTeams','put','update','delete','removeTeams','removeAgents','multer','util','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','./whatsappQueue.controller','get','isAuthenticated','index','/describe','describe','/:id','/:id/members','/:id/teams','/:id/users'];(function(_0x3a6aee,_0x2c7fff){var _0x30ce48=function(_0x280a5f){while(--_0x280a5f){_0x3a6aee['push'](_0x3a6aee['shift']());}};_0x30ce48(++_0x2c7fff);}(_0xd9be,0x1b9));var _0xed9b=function(_0x40eb5a,_0x365e63){_0x40eb5a=_0x40eb5a-0x0;var _0x149574=_0xd9be[_0x40eb5a];return _0x149574;};'use strict';var multer=require(_0xed9b('0x0'));var util=require(_0xed9b('0x1'));var path=require('path');var timeout=require(_0xed9b('0x2'));var express=require(_0xed9b('0x3'));var router=express[_0xed9b('0x4')]();var fs_extra=require(_0xed9b('0x5'));var auth=require(_0xed9b('0x6'));var interaction=require(_0xed9b('0x7'));var config=require('../../config/environment');var controller=require(_0xed9b('0x8'));router[_0xed9b('0x9')]('/',auth[_0xed9b('0xa')](),controller[_0xed9b('0xb')]);router['get'](_0xed9b('0xc'),auth[_0xed9b('0xa')](),controller[_0xed9b('0xd')]);router[_0xed9b('0x9')](_0xed9b('0xe'),auth[_0xed9b('0xa')](),controller['show']);router[_0xed9b('0x9')](_0xed9b('0xf'),auth[_0xed9b('0xa')](),controller['getMembers']);router[_0xed9b('0x9')](_0xed9b('0x10'),auth[_0xed9b('0xa')](),controller['getTeams']);router[_0xed9b('0x9')](_0xed9b('0x11'),auth[_0xed9b('0xa')](),controller[_0xed9b('0x12')]);router['post']('/',auth[_0xed9b('0xa')](),controller[_0xed9b('0x13')]);router[_0xed9b('0x14')]('/:id/teams',auth['isAuthenticated'](),controller[_0xed9b('0x15')]);router[_0xed9b('0x14')]('/:id/users',auth['isAuthenticated'](),controller['addAgents']);router[_0xed9b('0x16')](_0xed9b('0xe'),auth['isAuthenticated'](),controller[_0xed9b('0x17')]);router[_0xed9b('0x18')](_0xed9b('0xe'),auth[_0xed9b('0xa')](),controller['destroy']);router[_0xed9b('0x18')](_0xed9b('0x10'),auth[_0xed9b('0xa')](),controller[_0xed9b('0x19')]);router[_0xed9b('0x18')]('/:id/users',auth[_0xed9b('0xa')](),controller[_0xed9b('0x1a')]);module['exports']=router;
\ No newline at end of file
index 24eb5a9..66b9c8e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb0d9=['ENUM','beepall','sequelize','exports','STRING','name','INTEGER'];(function(_0x1af5b2,_0x1b82fe){var _0xf1aa2d=function(_0x2ceae2){while(--_0x2ceae2){_0x1af5b2['push'](_0x1af5b2['shift']());}};_0xf1aa2d(++_0x1b82fe);}(_0xb0d9,0x10c));var _0x9b0d=function(_0xd05169,_0x146565){_0xd05169=_0xd05169-0x0;var _0x4df5b9=_0xb0d9[_0xd05169];return _0x4df5b9;};'use strict';var Sequelize=require(_0x9b0d('0x0'));module[_0x9b0d('0x1')]={'name':{'type':Sequelize[_0x9b0d('0x2')],'unique':_0x9b0d('0x3'),'validate':{'notEmpty':!![],'is':/^[A-Za-z0-9\.\_]+$/i}},'timeout':{'type':Sequelize[_0x9b0d('0x4')],'validate':{'min':0x1,'max':0x20c49b}},'strategy':{'type':Sequelize[_0x9b0d('0x5')]('rrmemory',_0x9b0d('0x6'),'roundrobin')},'description':{'type':Sequelize['STRING']}};
\ No newline at end of file
+var _0xb43b=['roundrobin','STRING','sequelize','exports','name','INTEGER','ENUM','beepall'];(function(_0x147c96,_0x309657){var _0x4ec711=function(_0x3cf7c9){while(--_0x3cf7c9){_0x147c96['push'](_0x147c96['shift']());}};_0x4ec711(++_0x309657);}(_0xb43b,0x1b2));var _0xbb43=function(_0x395792,_0x123fc2){_0x395792=_0x395792-0x0;var _0xba31dc=_0xb43b[_0x395792];return _0xba31dc;};'use strict';var Sequelize=require(_0xbb43('0x0'));module[_0xbb43('0x1')]={'name':{'type':Sequelize['STRING'],'unique':_0xbb43('0x2'),'validate':{'notEmpty':!![],'is':/^[A-Za-z0-9\.\_]+$/i}},'timeout':{'type':Sequelize[_0xbb43('0x3')],'validate':{'min':0x1,'max':0x20c49b}},'strategy':{'type':Sequelize[_0xbb43('0x4')]('rrmemory',_0xbb43('0x5'),_0xbb43('0x6'))},'description':{'type':Sequelize[_0xbb43('0x7')]}};
\ No newline at end of file
index 095f66d..84b5715 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x60ae=['ut.UserId\x20=\x20?','toString','QueryTypes','SELECT','every','TeamId','includes','all','union','compact','transaction','removeAgents','forEach','userWhatsappQueue:remove','addAgents','omit','spread','getAgents','findOne','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','path','sox','to-csv','ejs','fs-extra','lodash','crypto','jsforce','querystring','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','socket.io-emitter','sendStatus','status','end','json','undefined','limit','count','offset','set','Content-Range','destroy','then','get','WhatsappQueues','error','name','send','index','map','WhatsappQueue','rawAttributes','fieldName','type','key','model','keys','query','filters','intersection','attributes','fields','length','nolimit','order','sort','where','filter','options','includeAll','include','findAll','rows','catch','show','params','create','body','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','UserProfileSection','find','userProfileId','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','update','describe','getMembers','UserWhatsappQueue','hasOwnProperty','pick','merge','findAndCountAll','UserId','agent','whatsappPause','updatedAt','%s/%s','SIP','createdAt','getTeams','Team','addTeams','User','Agents','voicePause','interface','flatMap','sequelize','emit','userWhatsappQueue:save','ids','select','field','from','team_has_whatsapp_queues','join','user_has_teams','WhatsappQueueId\x20=\x20?','clone'];(function(_0x5a981e,_0xcf7f81){var _0x5d1ecf=function(_0x43134a){while(--_0x43134a){_0x5a981e['push'](_0x5a981e['shift']());}};_0x5d1ecf(++_0xcf7f81);}(_0x60ae,0x1b4));var _0xe60a=function(_0x18d29b,_0x3034d2){_0x18d29b=_0x18d29b-0x0;var _0x3c354f=_0x60ae[_0x18d29b];return _0x3c354f;};'use strict';var emlformat=require(_0xe60a('0x0'));var rimraf=require(_0xe60a('0x1'));var zipdir=require(_0xe60a('0x2'));var jsonpatch=require(_0xe60a('0x3'));var rp=require(_0xe60a('0x4'));var moment=require(_0xe60a('0x5'));var BPromise=require(_0xe60a('0x6'));var Mustache=require(_0xe60a('0x7'));var util=require('util');var path=require(_0xe60a('0x8'));var sox=require(_0xe60a('0x9'));var csv=require(_0xe60a('0xa'));var ejs=require(_0xe60a('0xb'));var fs=require('fs');var fs_extra=require(_0xe60a('0xc'));var _=require(_0xe60a('0xd'));var squel=require('squel');var crypto=require(_0xe60a('0xe'));var jsforce=require(_0xe60a('0xf'));var deskjs=require('desk.js');var toCsv=require(_0xe60a('0xa'));var querystring=require(_0xe60a('0x10'));var Papa=require('papaparse');var Redis=require(_0xe60a('0x11'));var authService=require(_0xe60a('0x12'));var qs=require(_0xe60a('0x13'));var as=require(_0xe60a('0x14'));var hardwareService=require(_0xe60a('0x15'));var logger=require(_0xe60a('0x16'))(_0xe60a('0x17'));var utils=require(_0xe60a('0x18'));var config=require(_0xe60a('0x19'));var licenseUtil=require(_0xe60a('0x1a'));var db=require(_0xe60a('0x1b'))['db'];config[_0xe60a('0x1c')]=_[_0xe60a('0x1d')](config[_0xe60a('0x1c')],{'host':'localhost','port':0x18eb});var socket=require(_0xe60a('0x1e'))(new Redis(config[_0xe60a('0x1c')]));require('./whatsappQueue.socket')['register'](socket);function respondWithStatusCode(_0x4481eb,_0x4831be){_0x4831be=_0x4831be||0xcc;return function(_0x4f0ae6){if(_0x4f0ae6){return _0x4481eb[_0xe60a('0x1f')](_0x4831be);}return _0x4481eb[_0xe60a('0x20')](_0x4831be)[_0xe60a('0x21')]();};}function respondWithResult(_0x2c6c50,_0x1ff610){_0x1ff610=_0x1ff610||0xc8;return function(_0x45db0a){if(_0x45db0a){return _0x2c6c50[_0xe60a('0x20')](_0x1ff610)[_0xe60a('0x22')](_0x45db0a);}};}function respondWithFilteredResult(_0x3d6b20,_0x1423fe){return function(_0x1c99bb){if(_0x1c99bb){var _0x1b699a=typeof _0x1423fe['offset']===_0xe60a('0x23')&&typeof _0x1423fe[_0xe60a('0x24')]==='undefined';var _0x2faa8d=_0x1c99bb[_0xe60a('0x25')];var _0x2097b2=_0x1b699a?0x0:_0x1423fe[_0xe60a('0x26')];var _0x3c19bd=_0x1b699a?_0x1c99bb['count']:_0x1423fe[_0xe60a('0x26')]+_0x1423fe[_0xe60a('0x24')];var _0x3ad7df;if(_0x3c19bd>=_0x2faa8d){_0x3c19bd=_0x2faa8d;_0x3ad7df=0xc8;}else{_0x3ad7df=0xce;}_0x3d6b20['status'](_0x3ad7df);return _0x3d6b20[_0xe60a('0x27')](_0xe60a('0x28'),_0x2097b2+'-'+_0x3c19bd+'/'+_0x2faa8d)['json'](_0x1c99bb);}return null;};}function patchUpdates(_0x310365){return function(_0x34d06f){try{jsonpatch['apply'](_0x34d06f,_0x310365,!![]);}catch(_0x164c10){return BPromise['reject'](_0x164c10);}return _0x34d06f['save']();};}function saveUpdates(_0x6062f7,_0x53315d){return function(_0x1356df){if(_0x1356df){return _0x1356df['update'](_0x6062f7)['then'](function(_0x3a541c){return _0x3a541c;});}return null;};}function removeEntity(_0x5f2a83,_0x1740a5){return function(_0x6adab5){if(_0x6adab5){return _0x6adab5[_0xe60a('0x29')]()[_0xe60a('0x2a')](function(){var _0x4f5255=_0x6adab5[_0xe60a('0x2b')]({'plain':!![]});var _0x17ffaf=_0xe60a('0x2c');return db['UserProfileResource'][_0xe60a('0x29')]({'where':{'type':_0x17ffaf,'resourceId':_0x4f5255['id']}})[_0xe60a('0x2a')](function(){return _0x6adab5;});})['then'](function(){_0x5f2a83[_0xe60a('0x20')](0xcc)[_0xe60a('0x21')]();});}};}function handleEntityNotFound(_0x43f9f2,_0x106c74){return function(_0x2125bf){if(!_0x2125bf){_0x43f9f2[_0xe60a('0x1f')](0x194);}return _0x2125bf;};}function handleError(_0x5b32da,_0x3ee414){_0x3ee414=_0x3ee414||0x1f4;return function(_0x49eb02){logger[_0xe60a('0x2d')](_0x49eb02['stack']);if(_0x49eb02[_0xe60a('0x2e')]){delete _0x49eb02[_0xe60a('0x2e')];}_0x5b32da[_0xe60a('0x20')](_0x3ee414)[_0xe60a('0x2f')](_0x49eb02);};}exports[_0xe60a('0x30')]=function(_0x342fa2,_0x42a7d0){var _0x386d37={},_0x19a130={},_0x2d5f29={'count':0x0,'rows':[]};var _0xdfca10=_[_0xe60a('0x31')](db[_0xe60a('0x32')][_0xe60a('0x33')],function(_0x4a6be3){return{'name':_0x4a6be3[_0xe60a('0x34')],'type':_0x4a6be3[_0xe60a('0x35')][_0xe60a('0x36')]};});_0x19a130[_0xe60a('0x37')]=_['map'](_0xdfca10,_0xe60a('0x2e'));_0x19a130['query']=_[_0xe60a('0x38')](_0x342fa2[_0xe60a('0x39')]);_0x19a130[_0xe60a('0x3a')]=_[_0xe60a('0x3b')](_0x19a130[_0xe60a('0x37')],_0x19a130[_0xe60a('0x39')]);_0x386d37[_0xe60a('0x3c')]=_[_0xe60a('0x3b')](_0x19a130[_0xe60a('0x37')],qs[_0xe60a('0x3d')](_0x342fa2[_0xe60a('0x39')][_0xe60a('0x3d')]));_0x386d37['attributes']=_0x386d37[_0xe60a('0x3c')][_0xe60a('0x3e')]?_0x386d37[_0xe60a('0x3c')]:_0x19a130[_0xe60a('0x37')];if(!_0x342fa2['query']['hasOwnProperty'](_0xe60a('0x3f'))){_0x386d37[_0xe60a('0x24')]=qs[_0xe60a('0x24')](_0x342fa2['query'][_0xe60a('0x24')]);_0x386d37[_0xe60a('0x26')]=qs[_0xe60a('0x26')](_0x342fa2[_0xe60a('0x39')][_0xe60a('0x26')]);}_0x386d37[_0xe60a('0x40')]=qs[_0xe60a('0x41')](_0x342fa2['query'][_0xe60a('0x41')]);_0x386d37[_0xe60a('0x42')]=qs['filters'](_['pick'](_0x342fa2[_0xe60a('0x39')],_0x19a130[_0xe60a('0x3a')]),_0xdfca10);if(_0x342fa2['query'][_0xe60a('0x43')]){_0x386d37[_0xe60a('0x42')]=_['merge'](_0x386d37[_0xe60a('0x42')],{'$or':_['map'](_0xdfca10,function(_0x59741c){if(_0x59741c[_0xe60a('0x35')]!=='VIRTUAL'){var _0x4f39cf={};_0x4f39cf[_0x59741c['name']]={'$like':'%'+_0x342fa2[_0xe60a('0x39')][_0xe60a('0x43')]+'%'};return _0x4f39cf;}})});}_0x386d37=_['merge']({},_0x386d37,_0x342fa2[_0xe60a('0x44')]);var _0x2c16fb={'where':_0x386d37[_0xe60a('0x42')]};return db['WhatsappQueue'][_0xe60a('0x25')](_0x2c16fb)[_0xe60a('0x2a')](function(_0x213045){_0x2d5f29[_0xe60a('0x25')]=_0x213045;if(_0x342fa2['query'][_0xe60a('0x45')]){_0x386d37[_0xe60a('0x46')]=[{'all':!![]}];}return db[_0xe60a('0x32')][_0xe60a('0x47')](_0x386d37);})['then'](function(_0x277342){_0x2d5f29[_0xe60a('0x48')]=_0x277342;return _0x2d5f29;})[_0xe60a('0x2a')](respondWithFilteredResult(_0x42a7d0,_0x386d37))[_0xe60a('0x49')](handleError(_0x42a7d0,null));};exports[_0xe60a('0x4a')]=function(_0x1ea53e,_0x36f572){var _0x5a44e2={'raw':!![],'where':{'id':_0x1ea53e[_0xe60a('0x4b')]['id']}},_0x354157={};_0x354157['model']=_['keys'](db['WhatsappQueue'][_0xe60a('0x33')]);_0x354157[_0xe60a('0x39')]=_[_0xe60a('0x38')](_0x1ea53e['query']);_0x354157[_0xe60a('0x3a')]=_['intersection'](_0x354157[_0xe60a('0x37')],_0x354157['query']);_0x5a44e2[_0xe60a('0x3c')]=_[_0xe60a('0x3b')](_0x354157['model'],qs[_0xe60a('0x3d')](_0x1ea53e[_0xe60a('0x39')][_0xe60a('0x3d')]));_0x5a44e2['attributes']=_0x5a44e2[_0xe60a('0x3c')][_0xe60a('0x3e')]?_0x5a44e2['attributes']:_0x354157[_0xe60a('0x37')];if(_0x1ea53e[_0xe60a('0x39')][_0xe60a('0x45')]){_0x5a44e2[_0xe60a('0x46')]=[{'all':!![]}];}_0x5a44e2=_['merge']({},_0x5a44e2,_0x1ea53e['options']);return db['WhatsappQueue']['find'](_0x5a44e2)[_0xe60a('0x2a')](handleEntityNotFound(_0x36f572,null))[_0xe60a('0x2a')](respondWithResult(_0x36f572,null))[_0xe60a('0x49')](handleError(_0x36f572,null));};exports['create']=function(_0xe6c027,_0x42baed){return db[_0xe60a('0x32')][_0xe60a('0x4c')](_0xe6c027[_0xe60a('0x4d')],{})[_0xe60a('0x2a')](function(_0x205483){var _0x3abae3=_0xe6c027[_0xe60a('0x4e')][_0xe60a('0x2b')]({'plain':!![]});if(!_0x3abae3)throw new Error(_0xe60a('0x4f'));if(_0x3abae3[_0xe60a('0x50')]===_0xe60a('0x4e')){var _0x592218=_0x205483['get']({'plain':!![]});var _0x15d3be=_0xe60a('0x2c');return db[_0xe60a('0x51')][_0xe60a('0x52')]({'where':{'name':_0x15d3be,'userProfileId':_0x3abae3[_0xe60a('0x53')]},'raw':!![]})[_0xe60a('0x2a')](function(_0x51161a){if(_0x51161a&&_0x51161a['autoAssociation']===0x0){return db['UserProfileResource'][_0xe60a('0x4c')]({'name':_0x592218[_0xe60a('0x2e')],'resourceId':_0x592218['id'],'type':_0x51161a[_0xe60a('0x2e')],'sectionId':_0x51161a['id']},{})[_0xe60a('0x2a')](function(){return _0x205483;});}else{return _0x205483;}})['catch'](function(_0x23ab3b){logger[_0xe60a('0x2d')](_0xe60a('0x54'),_0x23ab3b);throw _0x23ab3b;});}return _0x205483;})[_0xe60a('0x2a')](respondWithResult(_0x42baed,0xc9))[_0xe60a('0x49')](handleError(_0x42baed,null));};exports[_0xe60a('0x55')]=function(_0x5ae7b9,_0x21f4c7){if(_0x5ae7b9[_0xe60a('0x4d')]['id']){delete _0x5ae7b9[_0xe60a('0x4d')]['id'];}return db[_0xe60a('0x32')][_0xe60a('0x52')]({'where':{'id':_0x5ae7b9[_0xe60a('0x4b')]['id']}})[_0xe60a('0x2a')](handleEntityNotFound(_0x21f4c7,null))['then'](saveUpdates(_0x5ae7b9[_0xe60a('0x4d')],null))[_0xe60a('0x2a')](respondWithResult(_0x21f4c7,null))['catch'](handleError(_0x21f4c7,null));};exports[_0xe60a('0x29')]=function(_0x511bfb,_0x2e9707){return db['WhatsappQueue'][_0xe60a('0x52')]({'where':{'id':_0x511bfb[_0xe60a('0x4b')]['id']}})[_0xe60a('0x2a')](handleEntityNotFound(_0x2e9707,null))[_0xe60a('0x2a')](removeEntity(_0x2e9707,null))['catch'](handleError(_0x2e9707,null));};exports[_0xe60a('0x56')]=function(_0x1d1259,_0x371fe0){return db[_0xe60a('0x32')][_0xe60a('0x56')]()[_0xe60a('0x2a')](respondWithResult(_0x371fe0,null))[_0xe60a('0x49')](handleError(_0x371fe0,null));};exports[_0xe60a('0x57')]=function(_0x1b1d61,_0x74c4a0,_0x12cad6){var _0x175e95={'raw':!![],'where':{}},_0x1912fd={},_0x57e0bf;return db[_0xe60a('0x32')]['findOne']({'where':{'id':_0x1b1d61[_0xe60a('0x4b')]['id']}})[_0xe60a('0x2a')](handleEntityNotFound(_0x74c4a0,null))[_0xe60a('0x2a')](function(_0x4630cb){if(_0x4630cb){_0x57e0bf=_0x4630cb[_0xe60a('0x2b')]({'plain':!![]});_0x1912fd[_0xe60a('0x37')]=_[_0xe60a('0x38')](db[_0xe60a('0x58')][_0xe60a('0x33')]);_0x1912fd[_0xe60a('0x39')]=_['keys'](_0x1b1d61[_0xe60a('0x39')]);_0x1912fd[_0xe60a('0x3a')]=_[_0xe60a('0x3b')](_0x1912fd[_0xe60a('0x37')],_0x1912fd[_0xe60a('0x39')]);_0x175e95[_0xe60a('0x3c')]=_['intersection'](_0x1912fd['model'],qs[_0xe60a('0x3d')](_0x1b1d61[_0xe60a('0x39')]['fields']));_0x175e95[_0xe60a('0x3c')]=_0x175e95[_0xe60a('0x3c')][_0xe60a('0x3e')]?_0x175e95['attributes']:_0x1912fd[_0xe60a('0x37')];if(!_0x1b1d61[_0xe60a('0x39')][_0xe60a('0x59')]('nolimit')){_0x175e95[_0xe60a('0x24')]=qs['limit'](_0x1b1d61[_0xe60a('0x39')][_0xe60a('0x24')]);_0x175e95[_0xe60a('0x26')]=qs['offset'](_0x1b1d61['query']['offset']);}_0x175e95[_0xe60a('0x40')]=qs[_0xe60a('0x41')](_0x1b1d61[_0xe60a('0x39')][_0xe60a('0x41')]);_0x175e95[_0xe60a('0x42')]=qs[_0xe60a('0x3a')](_[_0xe60a('0x5a')](_0x1b1d61[_0xe60a('0x39')],_0x1912fd[_0xe60a('0x3a')]));_0x175e95[_0xe60a('0x42')]['WhatsappQueueId']=_0x4630cb['id'];if(_0x1b1d61[_0xe60a('0x39')][_0xe60a('0x43')]){_0x175e95[_0xe60a('0x42')]=_[_0xe60a('0x5b')](_0x175e95[_0xe60a('0x42')],{'$or':_[_0xe60a('0x31')](_0x175e95[_0xe60a('0x3c')],function(_0x4a4f61){var _0x106cce={};_0x106cce[_0x4a4f61]={'$like':'%'+_0x1b1d61[_0xe60a('0x39')]['filter']+'%'};return _0x106cce;})});}_0x175e95=_[_0xe60a('0x5b')]({},_0x175e95,_0x1b1d61[_0xe60a('0x44')]);return db[_0xe60a('0x58')][_0xe60a('0x47')](_0x175e95);}})[_0xe60a('0x2a')](function(_0xeacf07){if(_0xeacf07){return db['User'][_0xe60a('0x5c')]({'where':{'id':_[_0xe60a('0x31')](_0xeacf07,_0xe60a('0x5d')),'role':_0xe60a('0x5e')},'attributes':['id',_0xe60a('0x2e'),_0xe60a('0x5f'),_0xe60a('0x60'),'createdAt']});}})['then'](function(_0xf74c46){if(_0xf74c46){return{'count':_0xf74c46[_0xe60a('0x25')],'rows':_[_0xe60a('0x31')](_0xf74c46[_0xe60a('0x48')],function(_0x4a7ec7){return{'membername':_0x4a7ec7['name'],'UserId':_0x4a7ec7['id'],'queue_name':_0x57e0bf[_0xe60a('0x2e')],'WhatsappQueueId':_0x57e0bf['id'],'interface':util['format'](_0xe60a('0x61'),_0xe60a('0x62'),_0x4a7ec7[_0xe60a('0x2e')]),'penalty':0x0,'paused':_0x4a7ec7[_0xe60a('0x5f')],'createdAt':_0x4a7ec7[_0xe60a('0x63')],'updatedAt':_0x4a7ec7[_0xe60a('0x60')]};})};}else{return{'count':0x0,'rows':[]};}})['then'](respondWithFilteredResult(_0x74c4a0,_0x175e95))[_0xe60a('0x49')](handleError(_0x74c4a0,null));};exports[_0xe60a('0x64')]=function(_0x135da3,_0x2a46a4,_0x4548fc){var _0x4d0bc3={};var _0x5747c7={};var _0x30e251;var _0x28ba3b;return db[_0xe60a('0x32')]['findOne']({'where':{'id':_0x135da3[_0xe60a('0x4b')]['id']}})['then'](handleEntityNotFound(_0x2a46a4,null))[_0xe60a('0x2a')](function(_0x19e9a3){if(_0x19e9a3){_0x30e251=_0x19e9a3;_0x5747c7['model']=_[_0xe60a('0x38')](db[_0xe60a('0x65')]['rawAttributes']);_0x5747c7['query']=_[_0xe60a('0x38')](_0x135da3[_0xe60a('0x39')]);_0x5747c7['filters']=_[_0xe60a('0x3b')](_0x5747c7[_0xe60a('0x37')],_0x5747c7[_0xe60a('0x39')]);_0x4d0bc3[_0xe60a('0x3c')]=_[_0xe60a('0x3b')](_0x5747c7[_0xe60a('0x37')],qs[_0xe60a('0x3d')](_0x135da3[_0xe60a('0x39')][_0xe60a('0x3d')]));_0x4d0bc3[_0xe60a('0x3c')]=_0x4d0bc3[_0xe60a('0x3c')]['length']?_0x4d0bc3[_0xe60a('0x3c')]:_0x5747c7[_0xe60a('0x37')];_0x4d0bc3['order']=qs[_0xe60a('0x41')](_0x135da3['query']['sort']);_0x4d0bc3[_0xe60a('0x42')]=qs[_0xe60a('0x3a')](_[_0xe60a('0x5a')](_0x135da3['query'],_0x5747c7['filters']));if(_0x135da3['query'][_0xe60a('0x43')]){_0x4d0bc3[_0xe60a('0x42')]=_[_0xe60a('0x5b')](_0x4d0bc3[_0xe60a('0x42')],{'$or':_['map'](_0x4d0bc3[_0xe60a('0x3c')],function(_0x592fe3){var _0xc168a2={};_0xc168a2[_0x592fe3]={'$like':'%'+_0x135da3[_0xe60a('0x39')][_0xe60a('0x43')]+'%'};return _0xc168a2;})});}_0x4d0bc3=_[_0xe60a('0x5b')]({},_0x4d0bc3,_0x135da3['options']);return _0x30e251[_0xe60a('0x64')](_0x4d0bc3);}})[_0xe60a('0x2a')](function(_0x9cf3cb){if(_0x9cf3cb){_0x28ba3b=_0x9cf3cb['length'];if(!_0x135da3[_0xe60a('0x39')][_0xe60a('0x59')](_0xe60a('0x3f'))){_0x4d0bc3[_0xe60a('0x24')]=qs[_0xe60a('0x24')](_0x135da3[_0xe60a('0x39')]['limit']);_0x4d0bc3[_0xe60a('0x26')]=qs[_0xe60a('0x26')](_0x135da3[_0xe60a('0x39')][_0xe60a('0x26')]);}return _0x30e251[_0xe60a('0x64')](_0x4d0bc3);}})[_0xe60a('0x2a')](function(_0x3ec8d1){if(_0x3ec8d1){return _0x3ec8d1?{'count':_0x28ba3b,'rows':_0x3ec8d1}:null;}})[_0xe60a('0x2a')](respondWithResult(_0x2a46a4,null))[_0xe60a('0x49')](handleError(_0x2a46a4,null));};exports[_0xe60a('0x66')]=function(_0x4d0467,_0xc91e04,_0x112e03){var _0x5ce9cf=_0x4d0467[_0xe60a('0x4d')]['ids'];return db[_0xe60a('0x65')][_0xe60a('0x47')]({'where':{'id':_0x5ce9cf},'attributes':['id'],'include':[{'model':db[_0xe60a('0x67')],'as':_0xe60a('0x68'),'attributes':['id',_0xe60a('0x2e'),'online',_0xe60a('0x69'),_0xe60a('0x6a')],'raw':!![]}]})[_0xe60a('0x2a')](function(_0x568c28){if(_0x568c28){var _0x1d39fc=_[_0xe60a('0x6b')](_0x568c28,function(_0x1d331d){var _0x8faf8d=_0x1d331d[_0xe60a('0x2b')]({'plain':!![]});return _0x8faf8d[_0xe60a('0x68')];});return db['WhatsappQueue'][_0xe60a('0x52')]({'where':{'id':_0x4d0467[_0xe60a('0x4b')]['id']}})['then'](function(_0x121390){return db[_0xe60a('0x6c')]['transaction'](function(_0x33a0dc){return _0x121390['addTeams'](_0x5ce9cf,{'transaction':_0x33a0dc})[_0xe60a('0x2a')](function(){return BPromise['each'](_0x1d39fc,function(_0x5aff4a){return db[_0xe60a('0x58')]['findOrCreate']({'where':{'UserId':_0x5aff4a['id'],'WhatsappQueueId':_0x4d0467['params']['id']},'transaction':_0x33a0dc});});})[_0xe60a('0x2a')](function(){_0x1d39fc['forEach'](function(_0x4e0dde){socket[_0xe60a('0x6d')](_0xe60a('0x6e'),{'UserId':_0x4e0dde['id'],'WhatsappQueueId':_0x121390['id']});});});});});}})[_0xe60a('0x2a')](respondWithStatusCode(_0xc91e04,null))[_0xe60a('0x49')](handleError(_0xc91e04,null));};exports['removeTeams']=function(_0x116ead,_0x52f217,_0x326577){return db[_0xe60a('0x65')]['findAll']({'where':{'id':_0x116ead[_0xe60a('0x39')][_0xe60a('0x6f')]},'attributes':['id'],'include':[{'model':db[_0xe60a('0x67')],'as':_0xe60a('0x68'),'attributes':['id'],'raw':!![]}]})['then'](handleEntityNotFound(_0x52f217,null))[_0xe60a('0x2a')](function(_0x52c0e7){var _0x541e18=_[_0xe60a('0x31')](_0x52c0e7,'id');var _0x329f8c=[];var _0x328f97=[];var _0x1e17ab=squel[_0xe60a('0x70')]();_0x1e17ab[_0xe60a('0x71')]('tq.TeamId')[_0xe60a('0x72')](_0xe60a('0x73'),'tq')[_0xe60a('0x74')](_0xe60a('0x75'),'ut','ut.TeamId\x20=\x20tq.TeamId')[_0xe60a('0x42')](_0xe60a('0x76'),_0x116ead[_0xe60a('0x4b')]['id']);for(var _0x59224a=0x0;_0x59224a<_0x52c0e7[_0xe60a('0x3e')];_0x59224a+=0x1){let _0x257fcf=_0x52c0e7[_0x59224a];for(var _0x3e865d=0x0;_0x3e865d<_0x257fcf[_0xe60a('0x68')][_0xe60a('0x3e')];_0x3e865d+=0x1){let _0x448080=_0x257fcf[_0xe60a('0x68')][_0x3e865d];var _0x15ede7=_0x1e17ab[_0xe60a('0x77')]();_0x15ede7[_0xe60a('0x42')](_0xe60a('0x78'),_0x448080['id']);_0x328f97['push'](db['sequelize']['query'](_0x15ede7[_0xe60a('0x79')](),{'type':db[_0xe60a('0x6c')][_0xe60a('0x7a')][_0xe60a('0x7b')]})[_0xe60a('0x2a')](function(_0x20f07d){if(_0x20f07d['length']===0x1){return _0x448080['id'];}else{var _0x168074=_[_0xe60a('0x7c')](_[_0xe60a('0x31')](_0x20f07d,_0xe60a('0x7d')),function(_0x4f43f0){return _[_0xe60a('0x7e')](_0x541e18,_0x4f43f0);});if(_0x168074){return _0x448080['id'];}}}));}}return BPromise[_0xe60a('0x7f')](_0x328f97)['then'](function(_0x4fc863){_0x329f8c=_(_0x329f8c)[_0xe60a('0x80')](_0x4fc863)[_0xe60a('0x81')]()['value']();return db['WhatsappQueue'][_0xe60a('0x52')]({'where':{'id':_0x116ead[_0xe60a('0x4b')]['id']}})['then'](function(_0x673b80){return db['sequelize'][_0xe60a('0x82')](function(_0xcf486a){return _0x673b80['removeTeams'](_0x116ead[_0xe60a('0x39')][_0xe60a('0x6f')],{'transaction':_0xcf486a})['then'](function(){if(!_['isEmpty'](_0x329f8c)){return _0x673b80[_0xe60a('0x83')](_0x329f8c,{'transaction':_0xcf486a});}})[_0xe60a('0x2a')](function(){_0x329f8c[_0xe60a('0x84')](function(_0x44fa30){socket[_0xe60a('0x6d')](_0xe60a('0x85'),{'UserId':_0x44fa30,'WhatsappQueueId':_0x673b80['id']});});});});});});})['then'](respondWithStatusCode(_0x52f217,null))[_0xe60a('0x49')](handleError(_0x52f217,null));};exports[_0xe60a('0x86')]=function(_0x21c036,_0x5e0bee,_0x11d37a){return db[_0xe60a('0x32')][_0xe60a('0x52')]({'where':{'id':_0x21c036[_0xe60a('0x4b')]['id']}})[_0xe60a('0x2a')](handleEntityNotFound(_0x5e0bee,null))[_0xe60a('0x2a')](function(_0x47f4da){if(_0x47f4da){return _0x47f4da[_0xe60a('0x86')](_0x21c036[_0xe60a('0x4d')][_0xe60a('0x6f')],_[_0xe60a('0x87')](_0x21c036[_0xe60a('0x4d')],[_0xe60a('0x6f'),'id'])||{})[_0xe60a('0x88')](function(_0x598b19){for(var _0x1f7061=0x0;_0x1f7061<_0x21c036[_0xe60a('0x4d')][_0xe60a('0x6f')][_0xe60a('0x3e')];_0x1f7061+=0x1){socket[_0xe60a('0x6d')]('userWhatsappQueue:save',{'UserId':Number(_0x21c036[_0xe60a('0x4d')]['ids'][_0x1f7061]),'WhatsappQueueId':Number(_0x21c036[_0xe60a('0x4b')]['id'])});}return _0x598b19;});}})[_0xe60a('0x2a')](respondWithResult(_0x5e0bee,null))[_0xe60a('0x49')](handleError(_0x5e0bee,null));};exports[_0xe60a('0x83')]=function(_0x1bdcce,_0x141acb,_0x54610b){return db['WhatsappQueue'][_0xe60a('0x52')]({'where':{'id':_0x1bdcce['params']['id']}})['then'](handleEntityNotFound(_0x141acb,null))['then'](function(_0x551d47){if(_0x551d47){return _0x551d47[_0xe60a('0x83')](_0x1bdcce['query']['ids'])[_0xe60a('0x2a')](function(){if(_['isArray'](_0x1bdcce['query'][_0xe60a('0x6f')])){for(var _0x21fc2c=0x0;_0x21fc2c<_0x1bdcce[_0xe60a('0x39')][_0xe60a('0x6f')][_0xe60a('0x3e')];_0x21fc2c+=0x1){socket[_0xe60a('0x6d')]('userWhatsappQueue:remove',{'UserId':Number(_0x1bdcce['query'][_0xe60a('0x6f')][_0x21fc2c]),'WhatsappQueueId':Number(_0x1bdcce[_0xe60a('0x4b')]['id'])});}}else{socket[_0xe60a('0x6d')](_0xe60a('0x85'),{'UserId':Number(_0x1bdcce[_0xe60a('0x39')][_0xe60a('0x6f')]),'WhatsappQueueId':Number(_0x1bdcce['params']['id'])});}});}})[_0xe60a('0x2a')](respondWithStatusCode(_0x141acb,null))[_0xe60a('0x49')](handleError(_0x141acb,null));};exports[_0xe60a('0x89')]=function(_0x2f6e45,_0x2fea4e,_0x404e60){var _0x4e4ffc={};var _0x207e86={};var _0x456360;var _0x3915cf;return db[_0xe60a('0x32')][_0xe60a('0x8a')]({'where':{'id':_0x2f6e45[_0xe60a('0x4b')]['id']}})[_0xe60a('0x2a')](handleEntityNotFound(_0x2fea4e,null))[_0xe60a('0x2a')](function(_0x3fbb38){if(_0x3fbb38){_0x456360=_0x3fbb38;_0x207e86[_0xe60a('0x37')]=_[_0xe60a('0x38')](db[_0xe60a('0x67')][_0xe60a('0x33')]);_0x207e86[_0xe60a('0x39')]=_[_0xe60a('0x38')](_0x2f6e45[_0xe60a('0x39')]);_0x207e86[_0xe60a('0x3a')]=_['intersection'](_0x207e86[_0xe60a('0x37')],_0x207e86[_0xe60a('0x39')]);_0x4e4ffc[_0xe60a('0x3c')]=_[_0xe60a('0x3b')](_0x207e86[_0xe60a('0x37')],qs['fields'](_0x2f6e45['query'][_0xe60a('0x3d')]));_0x4e4ffc[_0xe60a('0x3c')]=_0x4e4ffc['attributes'][_0xe60a('0x3e')]?_0x4e4ffc['attributes']:_0x207e86['model'];_0x4e4ffc[_0xe60a('0x40')]=qs['sort'](_0x2f6e45[_0xe60a('0x39')][_0xe60a('0x41')]);_0x4e4ffc[_0xe60a('0x42')]=qs[_0xe60a('0x3a')](_['pick'](_0x2f6e45['query'],_0x207e86[_0xe60a('0x3a')]));if(_0x2f6e45[_0xe60a('0x39')][_0xe60a('0x43')]){_0x4e4ffc[_0xe60a('0x42')]=_[_0xe60a('0x5b')](_0x4e4ffc[_0xe60a('0x42')],{'$or':_[_0xe60a('0x31')](_0x4e4ffc[_0xe60a('0x3c')],function(_0x4f1b42){var _0x4d0a02={};_0x4d0a02[_0x4f1b42]={'$like':'%'+_0x2f6e45[_0xe60a('0x39')][_0xe60a('0x43')]+'%'};return _0x4d0a02;})});}_0x4e4ffc=_[_0xe60a('0x5b')]({},_0x4e4ffc,_0x2f6e45[_0xe60a('0x44')]);return _0x456360[_0xe60a('0x89')](_0x4e4ffc);}})[_0xe60a('0x2a')](function(_0x42f104){if(_0x42f104){_0x3915cf=_0x42f104['length'];if(!_0x2f6e45['query'][_0xe60a('0x59')](_0xe60a('0x3f'))){_0x4e4ffc[_0xe60a('0x24')]=qs[_0xe60a('0x24')](_0x2f6e45[_0xe60a('0x39')][_0xe60a('0x24')]);_0x4e4ffc['offset']=qs[_0xe60a('0x26')](_0x2f6e45[_0xe60a('0x39')][_0xe60a('0x26')]);}return _0x456360['getAgents'](_0x4e4ffc);}})[_0xe60a('0x2a')](function(_0x36e61d){if(_0x36e61d){return _0x36e61d?{'count':_0x3915cf,'rows':_0x36e61d}:null;}})[_0xe60a('0x2a')](respondWithResult(_0x2fea4e,null))[_0xe60a('0x49')](handleError(_0x2fea4e,null));};
\ No newline at end of file
+var _0xced3=['../../config/environment','../../mysqldb','redis','defaults','localhost','socket.io-emitter','./whatsappQueue.socket','register','sendStatus','status','end','json','offset','undefined','count','limit','set','Content-Range','apply','reject','update','then','destroy','get','UserProfileResource','stack','name','send','index','map','WhatsappQueue','fieldName','type','key','model','query','keys','filters','intersection','attributes','fields','length','order','sort','where','pick','merge','VIRTUAL','filter','options','includeAll','findAll','rows','params','find','catch','create','body','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','WhatsappQueues','userProfileId','error','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','describe','getMembers','hasOwnProperty','WhatsappQueueId','UserWhatsappQueue','UserId','agent','format','whatsappPause','findOne','Team','rawAttributes','nolimit','getTeams','ids','User','Agents','online','voicePause','interface','sequelize','transaction','each','findOrCreate','userWhatsappQueue:save','removeTeams','team_has_whatsapp_queues','join','ut.TeamId\x20=\x20tq.TeamId','WhatsappQueueId\x20=\x20?','clone','ut.UserId\x20=\x20?','push','toString','QueryTypes','SELECT','every','TeamId','includes','all','compact','value','removeAgents','forEach','userWhatsappQueue:remove','addAgents','emit','isArray','getAgents','rimraf','zip-dir','request-promise','moment','bluebird','util','sox','to-csv','ejs','squel','crypto','desk.js','querystring','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','../../config/utils'];(function(_0x38d56b,_0x2be93b){var _0x4046d2=function(_0x50cc6b){while(--_0x50cc6b){_0x38d56b['push'](_0x38d56b['shift']());}};_0x4046d2(++_0x2be93b);}(_0xced3,0xf7));var _0x3ced=function(_0x39c734,_0x2f3e06){_0x39c734=_0x39c734-0x0;var _0xb2a2f9=_0xced3[_0x39c734];return _0xb2a2f9;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x3ced('0x0'));var zipdir=require(_0x3ced('0x1'));var jsonpatch=require('fast-json-patch');var rp=require(_0x3ced('0x2'));var moment=require(_0x3ced('0x3'));var BPromise=require(_0x3ced('0x4'));var Mustache=require('mustache');var util=require(_0x3ced('0x5'));var path=require('path');var sox=require(_0x3ced('0x6'));var csv=require(_0x3ced('0x7'));var ejs=require(_0x3ced('0x8'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require('lodash');var squel=require(_0x3ced('0x9'));var crypto=require(_0x3ced('0xa'));var jsforce=require('jsforce');var deskjs=require(_0x3ced('0xb'));var toCsv=require(_0x3ced('0x7'));var querystring=require(_0x3ced('0xc'));var Papa=require('papaparse');var Redis=require(_0x3ced('0xd'));var authService=require(_0x3ced('0xe'));var qs=require(_0x3ced('0xf'));var as=require(_0x3ced('0x10'));var hardwareService=require('../../config/license/hardware');var logger=require(_0x3ced('0x11'))('api');var utils=require(_0x3ced('0x12'));var config=require(_0x3ced('0x13'));var licenseUtil=require('../../config/license/util');var db=require(_0x3ced('0x14'))['db'];config[_0x3ced('0x15')]=_[_0x3ced('0x16')](config['redis'],{'host':_0x3ced('0x17'),'port':0x18eb});var socket=require(_0x3ced('0x18'))(new Redis(config[_0x3ced('0x15')]));require(_0x3ced('0x19'))[_0x3ced('0x1a')](socket);function respondWithStatusCode(_0x4a2c88,_0x19623a){_0x19623a=_0x19623a||0xcc;return function(_0x57f00b){if(_0x57f00b){return _0x4a2c88[_0x3ced('0x1b')](_0x19623a);}return _0x4a2c88[_0x3ced('0x1c')](_0x19623a)[_0x3ced('0x1d')]();};}function respondWithResult(_0x131b51,_0x106659){_0x106659=_0x106659||0xc8;return function(_0x5120eb){if(_0x5120eb){return _0x131b51['status'](_0x106659)[_0x3ced('0x1e')](_0x5120eb);}};}function respondWithFilteredResult(_0x3a0250,_0x36ef24){return function(_0x77a9c5){if(_0x77a9c5){var _0x2b2dfb=typeof _0x36ef24[_0x3ced('0x1f')]==='undefined'&&typeof _0x36ef24['limit']===_0x3ced('0x20');var _0x175d0a=_0x77a9c5[_0x3ced('0x21')];var _0x2f26bf=_0x2b2dfb?0x0:_0x36ef24[_0x3ced('0x1f')];var _0x56620c=_0x2b2dfb?_0x77a9c5['count']:_0x36ef24[_0x3ced('0x1f')]+_0x36ef24[_0x3ced('0x22')];var _0x1bf2f7;if(_0x56620c>=_0x175d0a){_0x56620c=_0x175d0a;_0x1bf2f7=0xc8;}else{_0x1bf2f7=0xce;}_0x3a0250[_0x3ced('0x1c')](_0x1bf2f7);return _0x3a0250[_0x3ced('0x23')](_0x3ced('0x24'),_0x2f26bf+'-'+_0x56620c+'/'+_0x175d0a)[_0x3ced('0x1e')](_0x77a9c5);}return null;};}function patchUpdates(_0x1816fa){return function(_0x2ed06d){try{jsonpatch[_0x3ced('0x25')](_0x2ed06d,_0x1816fa,!![]);}catch(_0x10b090){return BPromise[_0x3ced('0x26')](_0x10b090);}return _0x2ed06d['save']();};}function saveUpdates(_0x3815cf,_0x45ecb4){return function(_0x3a4f7){if(_0x3a4f7){return _0x3a4f7[_0x3ced('0x27')](_0x3815cf)[_0x3ced('0x28')](function(_0x328448){return _0x328448;});}return null;};}function removeEntity(_0x40c874,_0x22b025){return function(_0x4bd540){if(_0x4bd540){return _0x4bd540[_0x3ced('0x29')]()[_0x3ced('0x28')](function(){var _0x4a375d=_0x4bd540[_0x3ced('0x2a')]({'plain':!![]});var _0x51bab0='WhatsappQueues';return db[_0x3ced('0x2b')]['destroy']({'where':{'type':_0x51bab0,'resourceId':_0x4a375d['id']}})[_0x3ced('0x28')](function(){return _0x4bd540;});})[_0x3ced('0x28')](function(){_0x40c874[_0x3ced('0x1c')](0xcc)['end']();});}};}function handleEntityNotFound(_0x11f52f,_0x31caca){return function(_0x2b54c0){if(!_0x2b54c0){_0x11f52f['sendStatus'](0x194);}return _0x2b54c0;};}function handleError(_0x7fe958,_0x1d38ab){_0x1d38ab=_0x1d38ab||0x1f4;return function(_0x149e04){logger['error'](_0x149e04[_0x3ced('0x2c')]);if(_0x149e04[_0x3ced('0x2d')]){delete _0x149e04['name'];}_0x7fe958[_0x3ced('0x1c')](_0x1d38ab)[_0x3ced('0x2e')](_0x149e04);};}exports[_0x3ced('0x2f')]=function(_0x4e17a4,_0x301c5c){var _0x3d9943={},_0x186845={},_0x4c77e5={'count':0x0,'rows':[]};var _0x41e8a9=_[_0x3ced('0x30')](db[_0x3ced('0x31')]['rawAttributes'],function(_0x3279d5){return{'name':_0x3279d5[_0x3ced('0x32')],'type':_0x3279d5[_0x3ced('0x33')][_0x3ced('0x34')]};});_0x186845[_0x3ced('0x35')]=_['map'](_0x41e8a9,_0x3ced('0x2d'));_0x186845[_0x3ced('0x36')]=_[_0x3ced('0x37')](_0x4e17a4['query']);_0x186845[_0x3ced('0x38')]=_[_0x3ced('0x39')](_0x186845[_0x3ced('0x35')],_0x186845[_0x3ced('0x36')]);_0x3d9943[_0x3ced('0x3a')]=_[_0x3ced('0x39')](_0x186845[_0x3ced('0x35')],qs[_0x3ced('0x3b')](_0x4e17a4[_0x3ced('0x36')][_0x3ced('0x3b')]));_0x3d9943['attributes']=_0x3d9943[_0x3ced('0x3a')][_0x3ced('0x3c')]?_0x3d9943[_0x3ced('0x3a')]:_0x186845[_0x3ced('0x35')];if(!_0x4e17a4[_0x3ced('0x36')]['hasOwnProperty']('nolimit')){_0x3d9943[_0x3ced('0x22')]=qs[_0x3ced('0x22')](_0x4e17a4['query']['limit']);_0x3d9943[_0x3ced('0x1f')]=qs[_0x3ced('0x1f')](_0x4e17a4[_0x3ced('0x36')]['offset']);}_0x3d9943[_0x3ced('0x3d')]=qs[_0x3ced('0x3e')](_0x4e17a4[_0x3ced('0x36')][_0x3ced('0x3e')]);_0x3d9943[_0x3ced('0x3f')]=qs[_0x3ced('0x38')](_[_0x3ced('0x40')](_0x4e17a4['query'],_0x186845[_0x3ced('0x38')]),_0x41e8a9);if(_0x4e17a4[_0x3ced('0x36')]['filter']){_0x3d9943[_0x3ced('0x3f')]=_[_0x3ced('0x41')](_0x3d9943['where'],{'$or':_['map'](_0x41e8a9,function(_0x123f66){if(_0x123f66[_0x3ced('0x33')]!==_0x3ced('0x42')){var _0x1f63fa={};_0x1f63fa[_0x123f66[_0x3ced('0x2d')]]={'$like':'%'+_0x4e17a4[_0x3ced('0x36')][_0x3ced('0x43')]+'%'};return _0x1f63fa;}})});}_0x3d9943=_[_0x3ced('0x41')]({},_0x3d9943,_0x4e17a4[_0x3ced('0x44')]);var _0x585a68={'where':_0x3d9943[_0x3ced('0x3f')]};return db[_0x3ced('0x31')][_0x3ced('0x21')](_0x585a68)[_0x3ced('0x28')](function(_0x1502f1){_0x4c77e5[_0x3ced('0x21')]=_0x1502f1;if(_0x4e17a4[_0x3ced('0x36')][_0x3ced('0x45')]){_0x3d9943['include']=[{'all':!![]}];}return db['WhatsappQueue'][_0x3ced('0x46')](_0x3d9943);})[_0x3ced('0x28')](function(_0x5bc24d){_0x4c77e5[_0x3ced('0x47')]=_0x5bc24d;return _0x4c77e5;})[_0x3ced('0x28')](respondWithFilteredResult(_0x301c5c,_0x3d9943))['catch'](handleError(_0x301c5c,null));};exports['show']=function(_0x156a04,_0x2cb4ee){var _0x4d9857={'raw':!![],'where':{'id':_0x156a04[_0x3ced('0x48')]['id']}},_0x531766={};_0x531766[_0x3ced('0x35')]=_['keys'](db[_0x3ced('0x31')]['rawAttributes']);_0x531766[_0x3ced('0x36')]=_['keys'](_0x156a04['query']);_0x531766['filters']=_[_0x3ced('0x39')](_0x531766[_0x3ced('0x35')],_0x531766[_0x3ced('0x36')]);_0x4d9857[_0x3ced('0x3a')]=_[_0x3ced('0x39')](_0x531766[_0x3ced('0x35')],qs[_0x3ced('0x3b')](_0x156a04[_0x3ced('0x36')][_0x3ced('0x3b')]));_0x4d9857['attributes']=_0x4d9857[_0x3ced('0x3a')][_0x3ced('0x3c')]?_0x4d9857[_0x3ced('0x3a')]:_0x531766[_0x3ced('0x35')];if(_0x156a04['query'][_0x3ced('0x45')]){_0x4d9857['include']=[{'all':!![]}];}_0x4d9857=_[_0x3ced('0x41')]({},_0x4d9857,_0x156a04[_0x3ced('0x44')]);return db['WhatsappQueue'][_0x3ced('0x49')](_0x4d9857)[_0x3ced('0x28')](handleEntityNotFound(_0x2cb4ee,null))[_0x3ced('0x28')](respondWithResult(_0x2cb4ee,null))[_0x3ced('0x4a')](handleError(_0x2cb4ee,null));};exports[_0x3ced('0x4b')]=function(_0x37ce55,_0x4b552a){return db[_0x3ced('0x31')][_0x3ced('0x4b')](_0x37ce55[_0x3ced('0x4c')],{})['then'](function(_0x3f60d1){var _0x436f07=_0x37ce55[_0x3ced('0x4d')][_0x3ced('0x2a')]({'plain':!![]});if(!_0x436f07)throw new Error(_0x3ced('0x4e'));if(_0x436f07[_0x3ced('0x4f')]===_0x3ced('0x4d')){var _0x33288e=_0x3f60d1[_0x3ced('0x2a')]({'plain':!![]});var _0x1180ed=_0x3ced('0x50');return db['UserProfileSection'][_0x3ced('0x49')]({'where':{'name':_0x1180ed,'userProfileId':_0x436f07[_0x3ced('0x51')]},'raw':!![]})['then'](function(_0x58b6ff){if(_0x58b6ff&&_0x58b6ff['autoAssociation']===0x0){return db[_0x3ced('0x2b')][_0x3ced('0x4b')]({'name':_0x33288e[_0x3ced('0x2d')],'resourceId':_0x33288e['id'],'type':_0x58b6ff[_0x3ced('0x2d')],'sectionId':_0x58b6ff['id']},{})[_0x3ced('0x28')](function(){return _0x3f60d1;});}else{return _0x3f60d1;}})[_0x3ced('0x4a')](function(_0x2dc4ba){logger[_0x3ced('0x52')](_0x3ced('0x53'),_0x2dc4ba);throw _0x2dc4ba;});}return _0x3f60d1;})['then'](respondWithResult(_0x4b552a,0xc9))['catch'](handleError(_0x4b552a,null));};exports[_0x3ced('0x27')]=function(_0x5ceb18,_0x3cdacf){if(_0x5ceb18['body']['id']){delete _0x5ceb18['body']['id'];}return db[_0x3ced('0x31')][_0x3ced('0x49')]({'where':{'id':_0x5ceb18['params']['id']}})['then'](handleEntityNotFound(_0x3cdacf,null))[_0x3ced('0x28')](saveUpdates(_0x5ceb18['body'],null))[_0x3ced('0x28')](respondWithResult(_0x3cdacf,null))['catch'](handleError(_0x3cdacf,null));};exports['destroy']=function(_0x4338a6,_0x44a573){return db[_0x3ced('0x31')][_0x3ced('0x49')]({'where':{'id':_0x4338a6[_0x3ced('0x48')]['id']}})[_0x3ced('0x28')](handleEntityNotFound(_0x44a573,null))[_0x3ced('0x28')](removeEntity(_0x44a573,null))[_0x3ced('0x4a')](handleError(_0x44a573,null));};exports['describe']=function(_0x1f8020,_0x157c9e){return db['WhatsappQueue'][_0x3ced('0x54')]()['then'](respondWithResult(_0x157c9e,null))[_0x3ced('0x4a')](handleError(_0x157c9e,null));};exports[_0x3ced('0x55')]=function(_0x2380b2,_0x227e54,_0x169e04){var _0x420566={'raw':!![],'where':{}},_0x30ef0d={},_0x37bf4f;return db[_0x3ced('0x31')]['findOne']({'where':{'id':_0x2380b2[_0x3ced('0x48')]['id']}})[_0x3ced('0x28')](handleEntityNotFound(_0x227e54,null))[_0x3ced('0x28')](function(_0x5bc862){if(_0x5bc862){_0x37bf4f=_0x5bc862['get']({'plain':!![]});_0x30ef0d[_0x3ced('0x35')]=_[_0x3ced('0x37')](db['UserWhatsappQueue']['rawAttributes']);_0x30ef0d[_0x3ced('0x36')]=_[_0x3ced('0x37')](_0x2380b2['query']);_0x30ef0d[_0x3ced('0x38')]=_[_0x3ced('0x39')](_0x30ef0d['model'],_0x30ef0d[_0x3ced('0x36')]);_0x420566[_0x3ced('0x3a')]=_[_0x3ced('0x39')](_0x30ef0d[_0x3ced('0x35')],qs['fields'](_0x2380b2['query'][_0x3ced('0x3b')]));_0x420566['attributes']=_0x420566['attributes'][_0x3ced('0x3c')]?_0x420566[_0x3ced('0x3a')]:_0x30ef0d[_0x3ced('0x35')];if(!_0x2380b2['query'][_0x3ced('0x56')]('nolimit')){_0x420566[_0x3ced('0x22')]=qs['limit'](_0x2380b2[_0x3ced('0x36')][_0x3ced('0x22')]);_0x420566[_0x3ced('0x1f')]=qs[_0x3ced('0x1f')](_0x2380b2[_0x3ced('0x36')][_0x3ced('0x1f')]);}_0x420566['order']=qs[_0x3ced('0x3e')](_0x2380b2[_0x3ced('0x36')][_0x3ced('0x3e')]);_0x420566['where']=qs[_0x3ced('0x38')](_[_0x3ced('0x40')](_0x2380b2[_0x3ced('0x36')],_0x30ef0d['filters']));_0x420566[_0x3ced('0x3f')][_0x3ced('0x57')]=_0x5bc862['id'];if(_0x2380b2['query'][_0x3ced('0x43')]){_0x420566[_0x3ced('0x3f')]=_[_0x3ced('0x41')](_0x420566[_0x3ced('0x3f')],{'$or':_['map'](_0x420566[_0x3ced('0x3a')],function(_0x40d986){var _0x4632c5={};_0x4632c5[_0x40d986]={'$like':'%'+_0x2380b2[_0x3ced('0x36')]['filter']+'%'};return _0x4632c5;})});}_0x420566=_[_0x3ced('0x41')]({},_0x420566,_0x2380b2['options']);return db[_0x3ced('0x58')][_0x3ced('0x46')](_0x420566);}})[_0x3ced('0x28')](function(_0x1890c9){if(_0x1890c9){return db['User']['findAndCountAll']({'where':{'id':_[_0x3ced('0x30')](_0x1890c9,_0x3ced('0x59')),'role':_0x3ced('0x5a')},'attributes':['id','name','whatsappPause','updatedAt','createdAt']});}})[_0x3ced('0x28')](function(_0x52e46b){if(_0x52e46b){return{'count':_0x52e46b[_0x3ced('0x21')],'rows':_[_0x3ced('0x30')](_0x52e46b[_0x3ced('0x47')],function(_0x562b2d){return{'membername':_0x562b2d[_0x3ced('0x2d')],'UserId':_0x562b2d['id'],'queue_name':_0x37bf4f[_0x3ced('0x2d')],'WhatsappQueueId':_0x37bf4f['id'],'interface':util[_0x3ced('0x5b')]('%s/%s','SIP',_0x562b2d[_0x3ced('0x2d')]),'penalty':0x0,'paused':_0x562b2d[_0x3ced('0x5c')],'createdAt':_0x562b2d['createdAt'],'updatedAt':_0x562b2d['updatedAt']};})};}else{return{'count':0x0,'rows':[]};}})['then'](respondWithFilteredResult(_0x227e54,_0x420566))[_0x3ced('0x4a')](handleError(_0x227e54,null));};exports['getTeams']=function(_0x5e47b9,_0x53deb3,_0x4aea02){var _0x395320={};var _0x2dae4f={};var _0x58e82b;var _0x30f2f4;return db['WhatsappQueue'][_0x3ced('0x5d')]({'where':{'id':_0x5e47b9[_0x3ced('0x48')]['id']}})[_0x3ced('0x28')](handleEntityNotFound(_0x53deb3,null))[_0x3ced('0x28')](function(_0x55a2d7){if(_0x55a2d7){_0x58e82b=_0x55a2d7;_0x2dae4f[_0x3ced('0x35')]=_['keys'](db[_0x3ced('0x5e')][_0x3ced('0x5f')]);_0x2dae4f[_0x3ced('0x36')]=_[_0x3ced('0x37')](_0x5e47b9[_0x3ced('0x36')]);_0x2dae4f[_0x3ced('0x38')]=_[_0x3ced('0x39')](_0x2dae4f[_0x3ced('0x35')],_0x2dae4f[_0x3ced('0x36')]);_0x395320[_0x3ced('0x3a')]=_[_0x3ced('0x39')](_0x2dae4f[_0x3ced('0x35')],qs['fields'](_0x5e47b9[_0x3ced('0x36')][_0x3ced('0x3b')]));_0x395320['attributes']=_0x395320[_0x3ced('0x3a')]['length']?_0x395320['attributes']:_0x2dae4f['model'];_0x395320['order']=qs[_0x3ced('0x3e')](_0x5e47b9[_0x3ced('0x36')][_0x3ced('0x3e')]);_0x395320[_0x3ced('0x3f')]=qs[_0x3ced('0x38')](_[_0x3ced('0x40')](_0x5e47b9['query'],_0x2dae4f['filters']));if(_0x5e47b9[_0x3ced('0x36')][_0x3ced('0x43')]){_0x395320[_0x3ced('0x3f')]=_['merge'](_0x395320[_0x3ced('0x3f')],{'$or':_[_0x3ced('0x30')](_0x395320[_0x3ced('0x3a')],function(_0x2e84ca){var _0x48a4d0={};_0x48a4d0[_0x2e84ca]={'$like':'%'+_0x5e47b9['query'][_0x3ced('0x43')]+'%'};return _0x48a4d0;})});}_0x395320=_[_0x3ced('0x41')]({},_0x395320,_0x5e47b9[_0x3ced('0x44')]);return _0x58e82b['getTeams'](_0x395320);}})[_0x3ced('0x28')](function(_0x5bc44e){if(_0x5bc44e){_0x30f2f4=_0x5bc44e['length'];if(!_0x5e47b9[_0x3ced('0x36')][_0x3ced('0x56')](_0x3ced('0x60'))){_0x395320[_0x3ced('0x22')]=qs['limit'](_0x5e47b9[_0x3ced('0x36')]['limit']);_0x395320[_0x3ced('0x1f')]=qs[_0x3ced('0x1f')](_0x5e47b9[_0x3ced('0x36')]['offset']);}return _0x58e82b[_0x3ced('0x61')](_0x395320);}})[_0x3ced('0x28')](function(_0x3882c7){if(_0x3882c7){return _0x3882c7?{'count':_0x30f2f4,'rows':_0x3882c7}:null;}})['then'](respondWithResult(_0x53deb3,null))[_0x3ced('0x4a')](handleError(_0x53deb3,null));};exports['addTeams']=function(_0x33a0c2,_0x2c8f51,_0x6f166b){var _0x56b953=_0x33a0c2[_0x3ced('0x4c')][_0x3ced('0x62')];return db[_0x3ced('0x5e')][_0x3ced('0x46')]({'where':{'id':_0x56b953},'attributes':['id'],'include':[{'model':db[_0x3ced('0x63')],'as':_0x3ced('0x64'),'attributes':['id',_0x3ced('0x2d'),_0x3ced('0x65'),_0x3ced('0x66'),_0x3ced('0x67')],'raw':!![]}]})[_0x3ced('0x28')](function(_0x92f427){if(_0x92f427){var _0x5d148b=_['flatMap'](_0x92f427,function(_0x33ab97){var _0x43dce5=_0x33ab97[_0x3ced('0x2a')]({'plain':!![]});return _0x43dce5[_0x3ced('0x64')];});return db[_0x3ced('0x31')][_0x3ced('0x49')]({'where':{'id':_0x33a0c2[_0x3ced('0x48')]['id']}})['then'](function(_0x22dd50){return db[_0x3ced('0x68')][_0x3ced('0x69')](function(_0xfdefc6){return _0x22dd50['addTeams'](_0x56b953,{'transaction':_0xfdefc6})[_0x3ced('0x28')](function(){return BPromise[_0x3ced('0x6a')](_0x5d148b,function(_0x37b3e2){return db[_0x3ced('0x58')][_0x3ced('0x6b')]({'where':{'UserId':_0x37b3e2['id'],'WhatsappQueueId':_0x33a0c2[_0x3ced('0x48')]['id']},'transaction':_0xfdefc6});});})[_0x3ced('0x28')](function(){_0x5d148b['forEach'](function(_0x2ceb5c){socket['emit'](_0x3ced('0x6c'),{'UserId':_0x2ceb5c['id'],'WhatsappQueueId':_0x22dd50['id']});});});});});}})[_0x3ced('0x28')](respondWithStatusCode(_0x2c8f51,null))[_0x3ced('0x4a')](handleError(_0x2c8f51,null));};exports[_0x3ced('0x6d')]=function(_0x5e6477,_0x5ccfd5,_0x318422){return db['Team']['findAll']({'where':{'id':_0x5e6477[_0x3ced('0x36')][_0x3ced('0x62')]},'attributes':['id'],'include':[{'model':db[_0x3ced('0x63')],'as':'Agents','attributes':['id'],'raw':!![]}]})[_0x3ced('0x28')](handleEntityNotFound(_0x5ccfd5,null))[_0x3ced('0x28')](function(_0x5ecd72){var _0xc94710=_[_0x3ced('0x30')](_0x5ecd72,'id');var _0x1b900e=[];var _0x5641d5=[];var _0x474ca2=squel['select']();_0x474ca2['field']('tq.TeamId')['from'](_0x3ced('0x6e'),'tq')[_0x3ced('0x6f')]('user_has_teams','ut',_0x3ced('0x70'))['where'](_0x3ced('0x71'),_0x5e6477[_0x3ced('0x48')]['id']);for(var _0x3d555e=0x0;_0x3d555e<_0x5ecd72[_0x3ced('0x3c')];_0x3d555e+=0x1){let _0x5cea2a=_0x5ecd72[_0x3d555e];for(var _0x111989=0x0;_0x111989<_0x5cea2a[_0x3ced('0x64')][_0x3ced('0x3c')];_0x111989+=0x1){let _0x28876c=_0x5cea2a[_0x3ced('0x64')][_0x111989];var _0x1439a0=_0x474ca2[_0x3ced('0x72')]();_0x1439a0[_0x3ced('0x3f')](_0x3ced('0x73'),_0x28876c['id']);_0x5641d5[_0x3ced('0x74')](db[_0x3ced('0x68')][_0x3ced('0x36')](_0x1439a0[_0x3ced('0x75')](),{'type':db['sequelize'][_0x3ced('0x76')][_0x3ced('0x77')]})[_0x3ced('0x28')](function(_0x53021a){if(_0x53021a[_0x3ced('0x3c')]===0x1){return _0x28876c['id'];}else{var _0x16ebea=_[_0x3ced('0x78')](_[_0x3ced('0x30')](_0x53021a,_0x3ced('0x79')),function(_0x5b8b9e){return _[_0x3ced('0x7a')](_0xc94710,_0x5b8b9e);});if(_0x16ebea){return _0x28876c['id'];}}}));}}return BPromise[_0x3ced('0x7b')](_0x5641d5)[_0x3ced('0x28')](function(_0x42c20b){_0x1b900e=_(_0x1b900e)['union'](_0x42c20b)[_0x3ced('0x7c')]()[_0x3ced('0x7d')]();return db[_0x3ced('0x31')][_0x3ced('0x49')]({'where':{'id':_0x5e6477[_0x3ced('0x48')]['id']}})['then'](function(_0x2ac1e6){return db[_0x3ced('0x68')][_0x3ced('0x69')](function(_0x5274ad){return _0x2ac1e6['removeTeams'](_0x5e6477[_0x3ced('0x36')]['ids'],{'transaction':_0x5274ad})[_0x3ced('0x28')](function(){if(!_['isEmpty'](_0x1b900e)){return _0x2ac1e6[_0x3ced('0x7e')](_0x1b900e,{'transaction':_0x5274ad});}})[_0x3ced('0x28')](function(){_0x1b900e[_0x3ced('0x7f')](function(_0x2e7c69){socket['emit'](_0x3ced('0x80'),{'UserId':_0x2e7c69,'WhatsappQueueId':_0x2ac1e6['id']});});});});});});})['then'](respondWithStatusCode(_0x5ccfd5,null))['catch'](handleError(_0x5ccfd5,null));};exports[_0x3ced('0x81')]=function(_0x5b87aa,_0x52d472,_0x164c43){return db[_0x3ced('0x31')][_0x3ced('0x49')]({'where':{'id':_0x5b87aa[_0x3ced('0x48')]['id']}})[_0x3ced('0x28')](handleEntityNotFound(_0x52d472,null))[_0x3ced('0x28')](function(_0x4f71b5){if(_0x4f71b5){return _0x4f71b5['addAgents'](_0x5b87aa[_0x3ced('0x4c')][_0x3ced('0x62')],_['omit'](_0x5b87aa['body'],[_0x3ced('0x62'),'id'])||{})['spread'](function(_0x2f1577){for(var _0x3818be=0x0;_0x3818be<_0x5b87aa[_0x3ced('0x4c')][_0x3ced('0x62')][_0x3ced('0x3c')];_0x3818be+=0x1){socket[_0x3ced('0x82')](_0x3ced('0x6c'),{'UserId':Number(_0x5b87aa[_0x3ced('0x4c')][_0x3ced('0x62')][_0x3818be]),'WhatsappQueueId':Number(_0x5b87aa[_0x3ced('0x48')]['id'])});}return _0x2f1577;});}})[_0x3ced('0x28')](respondWithResult(_0x52d472,null))[_0x3ced('0x4a')](handleError(_0x52d472,null));};exports[_0x3ced('0x7e')]=function(_0x5c7f78,_0x485c77,_0x5c4b07){return db[_0x3ced('0x31')][_0x3ced('0x49')]({'where':{'id':_0x5c7f78[_0x3ced('0x48')]['id']}})[_0x3ced('0x28')](handleEntityNotFound(_0x485c77,null))[_0x3ced('0x28')](function(_0x1f2b1c){if(_0x1f2b1c){return _0x1f2b1c[_0x3ced('0x7e')](_0x5c7f78[_0x3ced('0x36')][_0x3ced('0x62')])['then'](function(){if(_[_0x3ced('0x83')](_0x5c7f78[_0x3ced('0x36')][_0x3ced('0x62')])){for(var _0x3ee390=0x0;_0x3ee390<_0x5c7f78[_0x3ced('0x36')][_0x3ced('0x62')]['length'];_0x3ee390+=0x1){socket[_0x3ced('0x82')](_0x3ced('0x80'),{'UserId':Number(_0x5c7f78[_0x3ced('0x36')][_0x3ced('0x62')][_0x3ee390]),'WhatsappQueueId':Number(_0x5c7f78[_0x3ced('0x48')]['id'])});}}else{socket['emit']('userWhatsappQueue:remove',{'UserId':Number(_0x5c7f78[_0x3ced('0x36')][_0x3ced('0x62')]),'WhatsappQueueId':Number(_0x5c7f78[_0x3ced('0x48')]['id'])});}});}})['then'](respondWithStatusCode(_0x485c77,null))[_0x3ced('0x4a')](handleError(_0x485c77,null));};exports[_0x3ced('0x84')]=function(_0x47e233,_0x4d00b9,_0x2e21ad){var _0x3525f2={};var _0x1c5034={};var _0x4f4b92;var _0xea1c9d;return db['WhatsappQueue'][_0x3ced('0x5d')]({'where':{'id':_0x47e233[_0x3ced('0x48')]['id']}})[_0x3ced('0x28')](handleEntityNotFound(_0x4d00b9,null))[_0x3ced('0x28')](function(_0x109535){if(_0x109535){_0x4f4b92=_0x109535;_0x1c5034[_0x3ced('0x35')]=_[_0x3ced('0x37')](db[_0x3ced('0x63')][_0x3ced('0x5f')]);_0x1c5034[_0x3ced('0x36')]=_[_0x3ced('0x37')](_0x47e233['query']);_0x1c5034[_0x3ced('0x38')]=_[_0x3ced('0x39')](_0x1c5034[_0x3ced('0x35')],_0x1c5034[_0x3ced('0x36')]);_0x3525f2[_0x3ced('0x3a')]=_['intersection'](_0x1c5034[_0x3ced('0x35')],qs[_0x3ced('0x3b')](_0x47e233[_0x3ced('0x36')][_0x3ced('0x3b')]));_0x3525f2['attributes']=_0x3525f2[_0x3ced('0x3a')]['length']?_0x3525f2[_0x3ced('0x3a')]:_0x1c5034[_0x3ced('0x35')];_0x3525f2[_0x3ced('0x3d')]=qs['sort'](_0x47e233[_0x3ced('0x36')][_0x3ced('0x3e')]);_0x3525f2['where']=qs[_0x3ced('0x38')](_['pick'](_0x47e233['query'],_0x1c5034[_0x3ced('0x38')]));if(_0x47e233[_0x3ced('0x36')][_0x3ced('0x43')]){_0x3525f2[_0x3ced('0x3f')]=_[_0x3ced('0x41')](_0x3525f2['where'],{'$or':_[_0x3ced('0x30')](_0x3525f2[_0x3ced('0x3a')],function(_0x138710){var _0x44639a={};_0x44639a[_0x138710]={'$like':'%'+_0x47e233[_0x3ced('0x36')][_0x3ced('0x43')]+'%'};return _0x44639a;})});}_0x3525f2=_[_0x3ced('0x41')]({},_0x3525f2,_0x47e233['options']);return _0x4f4b92[_0x3ced('0x84')](_0x3525f2);}})[_0x3ced('0x28')](function(_0x2c7f1a){if(_0x2c7f1a){_0xea1c9d=_0x2c7f1a[_0x3ced('0x3c')];if(!_0x47e233['query'][_0x3ced('0x56')](_0x3ced('0x60'))){_0x3525f2['limit']=qs[_0x3ced('0x22')](_0x47e233[_0x3ced('0x36')][_0x3ced('0x22')]);_0x3525f2['offset']=qs[_0x3ced('0x1f')](_0x47e233['query'][_0x3ced('0x1f')]);}return _0x4f4b92[_0x3ced('0x84')](_0x3525f2);}})['then'](function(_0x422272){if(_0x422272){return _0x422272?{'count':_0xea1c9d,'rows':_0x422272}:null;}})[_0x3ced('0x28')](respondWithResult(_0x4d00b9,null))[_0x3ced('0x4a')](handleError(_0x4d00b9,null));};
\ No newline at end of file
index 08e96fc..b036226 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe3fd=['setMaxListeners','save','update','hook','exports','events','WhatsappQueue'];(function(_0x532f78,_0x434fd2){var _0x5e07a2=function(_0xfb64da){while(--_0xfb64da){_0x532f78['push'](_0x532f78['shift']());}};_0x5e07a2(++_0x434fd2);}(_0xe3fd,0xbb));var _0xde3f=function(_0x187d1a,_0x593eed){_0x187d1a=_0x187d1a-0x0;var _0x212e93=_0xe3fd[_0x187d1a];return _0x212e93;};'use strict';var EventEmitter=require(_0xde3f('0x0'));var WhatsappQueue=require('../../mysqldb')['db'][_0xde3f('0x1')];var WhatsappQueueEvents=new EventEmitter();WhatsappQueueEvents[_0xde3f('0x2')](0x0);var events={'afterCreate':_0xde3f('0x3'),'afterUpdate':_0xde3f('0x4'),'afterDestroy':'remove'};function emitEvent(_0x807dad){return function(_0x247438,_0x5b595c,_0x346923){WhatsappQueueEvents['emit'](_0x807dad+':'+_0x247438['id'],_0x247438);WhatsappQueueEvents['emit'](_0x807dad,_0x247438);_0x346923(null);};}for(var e in events){if(events['hasOwnProperty'](e)){var event=events[e];WhatsappQueue[_0xde3f('0x5')](e,emitEvent(event));}}module[_0xde3f('0x6')]=WhatsappQueueEvents;
\ No newline at end of file
+var _0x159a=['hasOwnProperty','hook','exports','events','../../mysqldb','WhatsappQueue','update','emit'];(function(_0x5c9ef9,_0x1715ed){var _0x5bc7e0=function(_0xf7696){while(--_0xf7696){_0x5c9ef9['push'](_0x5c9ef9['shift']());}};_0x5bc7e0(++_0x1715ed);}(_0x159a,0x83));var _0xa159=function(_0x32c83f,_0x4cb2d6){_0x32c83f=_0x32c83f-0x0;var _0x15e3cd=_0x159a[_0x32c83f];return _0x15e3cd;};'use strict';var EventEmitter=require(_0xa159('0x0'));var WhatsappQueue=require(_0xa159('0x1'))['db'][_0xa159('0x2')];var WhatsappQueueEvents=new EventEmitter();WhatsappQueueEvents['setMaxListeners'](0x0);var events={'afterCreate':'save','afterUpdate':_0xa159('0x3'),'afterDestroy':'remove'};function emitEvent(_0x394819){return function(_0x5c3cfe,_0x301245,_0x197639){WhatsappQueueEvents['emit'](_0x394819+':'+_0x5c3cfe['id'],_0x5c3cfe);WhatsappQueueEvents[_0xa159('0x4')](_0x394819,_0x5c3cfe);_0x197639(null);};}for(var e in events){if(events[_0xa159('0x5')](e)){var event=events[e];WhatsappQueue[_0xa159('0x6')](e,emitEvent(event));}}module[_0xa159('0x7')]=WhatsappQueueEvents;
\ No newline at end of file
index a52850b..da24c7f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x182e=['bluebird','path','../../config/environment','exports','define','whatsapp_queues','lodash','util','api','moment'];(function(_0x46e363,_0x45d7e2){var _0x3fb059=function(_0x5e6274){while(--_0x5e6274){_0x46e363['push'](_0x46e363['shift']());}};_0x3fb059(++_0x45d7e2);}(_0x182e,0x128));var _0xe182=function(_0x3e91a9,_0x53c466){_0x3e91a9=_0x3e91a9-0x0;var _0x25c9ad=_0x182e[_0x3e91a9];return _0x25c9ad;};'use strict';var _=require(_0xe182('0x0'));var util=require(_0xe182('0x1'));var logger=require('../../config/logger')(_0xe182('0x2'));var moment=require(_0xe182('0x3'));var BPromise=require(_0xe182('0x4'));var rp=require('request-promise');var fs=require('fs');var path=require(_0xe182('0x5'));var rimraf=require('rimraf');var config=require(_0xe182('0x6'));var attributes=require('./whatsappQueue.attributes');module[_0xe182('0x7')]=function(_0x47ec9b,_0x23bbd3){return _0x47ec9b[_0xe182('0x8')]('WhatsappQueue',attributes,{'tableName':_0xe182('0x9'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x862b=['lodash','util','../../config/logger','api','moment','bluebird','request-promise','../../config/environment','exports','define','WhatsappQueue','whatsapp_queues'];(function(_0x4b055c,_0x4b870b){var _0x4b62bb=function(_0x4884c2){while(--_0x4884c2){_0x4b055c['push'](_0x4b055c['shift']());}};_0x4b62bb(++_0x4b870b);}(_0x862b,0x15c));var _0xb862=function(_0x3084d8,_0x2408db){_0x3084d8=_0x3084d8-0x0;var _0x845a67=_0x862b[_0x3084d8];return _0x845a67;};'use strict';var _=require(_0xb862('0x0'));var util=require(_0xb862('0x1'));var logger=require(_0xb862('0x2'))(_0xb862('0x3'));var moment=require(_0xb862('0x4'));var BPromise=require(_0xb862('0x5'));var rp=require(_0xb862('0x6'));var fs=require('fs');var path=require('path');var rimraf=require('rimraf');var config=require(_0xb862('0x7'));var attributes=require('./whatsappQueue.attributes');module[_0xb862('0x8')]=function(_0x560f4b,_0x25c0b0){return _0x560f4b[_0xb862('0x9')](_0xb862('0xa'),attributes,{'tableName':_0xb862('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 448af64..4867086 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x60c3=['util','moment','bluebird','randomstring','../../mysqldb','../../config/logger','../../config/environment','jayson/promise','client','http','redis','defaults','localhost','./whatsappQueue.socket','request','then','WhatsappQueue,\x20%s,\x20%s','request\x20sent','debug','stringify','error','code','message','info','result','catch','GetWhatsappQueue','findAll','options','raw','where','attributes','include','model','map','WhatsappQueue','find','ShowWhatsappQueue','lodash'];(function(_0x17d9e3,_0x1f969c){var _0x14192d=function(_0x159745){while(--_0x159745){_0x17d9e3['push'](_0x17d9e3['shift']());}};_0x14192d(++_0x1f969c);}(_0x60c3,0x1d3));var _0x360c=function(_0x27d9df,_0x41b946){_0x27d9df=_0x27d9df-0x0;var _0x5c8a1a=_0x60c3[_0x27d9df];return _0x5c8a1a;};'use strict';var _=require(_0x360c('0x0'));var util=require(_0x360c('0x1'));var moment=require(_0x360c('0x2'));var BPromise=require(_0x360c('0x3'));var rs=require(_0x360c('0x4'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x360c('0x5'))['db'];var utils=require('../../config/utils');var logger=require(_0x360c('0x6'))('rpc');var config=require(_0x360c('0x7'));var jayson=require(_0x360c('0x8'));var client=jayson[_0x360c('0x9')][_0x360c('0xa')]({'port':0x232a});config[_0x360c('0xb')]=_[_0x360c('0xc')](config[_0x360c('0xb')],{'host':_0x360c('0xd'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config['redis']));require(_0x360c('0xe'))['register'](socket);function respondWithRpcPromise(_0xfb4f3e,_0x3715ec,_0x1f5e28){return new BPromise(function(_0xe42940,_0x5814f2){return client[_0x360c('0xf')](_0xfb4f3e,_0x1f5e28)[_0x360c('0x10')](function(_0x2a4803){logger['info'](_0x360c('0x11'),_0x3715ec,_0x360c('0x12'));logger[_0x360c('0x13')]('WhatsappQueue,\x20%s,\x20%s,\x20%s',_0x3715ec,'request\x20sent',JSON[_0x360c('0x14')](_0x2a4803));if(_0x2a4803[_0x360c('0x15')]){if(_0x2a4803[_0x360c('0x15')][_0x360c('0x16')]===0x1f4){logger[_0x360c('0x15')](_0x360c('0x11'),_0x3715ec,_0x2a4803['error'][_0x360c('0x17')]);return _0x5814f2(_0x2a4803[_0x360c('0x15')][_0x360c('0x17')]);}logger[_0x360c('0x15')](_0x360c('0x11'),_0x3715ec,_0x2a4803[_0x360c('0x15')]['message']);return _0xe42940(_0x2a4803[_0x360c('0x15')][_0x360c('0x17')]);}else{logger[_0x360c('0x18')]('WhatsappQueue,\x20%s,\x20%s',_0x3715ec,_0x360c('0x12'));_0xe42940(_0x2a4803[_0x360c('0x19')][_0x360c('0x17')]);}})[_0x360c('0x1a')](function(_0x2d2f4b){logger[_0x360c('0x15')](_0x360c('0x11'),_0x3715ec,_0x2d2f4b);_0x5814f2(_0x2d2f4b);});});}exports[_0x360c('0x1b')]=function(_0x4feb9a){var _0x36e26a=this;return new Promise(function(_0x55e9ae,_0x195d8d){return db['WhatsappQueue'][_0x360c('0x1c')]({'raw':_0x4feb9a[_0x360c('0x1d')]?_0x4feb9a[_0x360c('0x1d')][_0x360c('0x1e')]===undefined?!![]:![]:!![],'where':_0x4feb9a[_0x360c('0x1d')]?_0x4feb9a[_0x360c('0x1d')][_0x360c('0x1f')]||null:null,'attributes':_0x4feb9a['options']?_0x4feb9a['options'][_0x360c('0x20')]||null:null,'limit':_0x4feb9a[_0x360c('0x1d')]?_0x4feb9a['options']['limit']||null:null,'include':_0x4feb9a['options']?_0x4feb9a[_0x360c('0x1d')]['include']?_['map'](_0x4feb9a[_0x360c('0x1d')][_0x360c('0x21')],function(_0x2f6c81){return{'model':db[_0x2f6c81[_0x360c('0x22')]],'as':_0x2f6c81['as'],'attributes':_0x2f6c81[_0x360c('0x20')],'include':_0x2f6c81[_0x360c('0x21')]?_[_0x360c('0x23')](_0x2f6c81[_0x360c('0x21')],function(_0x539daf){return{'model':db[_0x539daf[_0x360c('0x22')]],'as':_0x539daf['as'],'attributes':_0x539daf['attributes'],'include':_0x539daf['include']?_['map'](_0x539daf[_0x360c('0x21')],function(_0xdbeb8){return{'model':db[_0xdbeb8[_0x360c('0x22')]],'as':_0xdbeb8['as'],'attributes':_0xdbeb8[_0x360c('0x20')]};}):[]};}):[]};}):[]:[]})['then'](function(_0x9ddcd4){logger[_0x360c('0x18')](_0x360c('0x1b'),_0x4feb9a);logger[_0x360c('0x13')](_0x360c('0x1b'),_0x4feb9a,JSON[_0x360c('0x14')](_0x9ddcd4));_0x55e9ae(_0x9ddcd4);})['catch'](function(_0x4179a5){logger['error'](_0x360c('0x1b'),_0x4179a5['message'],_0x4feb9a);_0x195d8d(_0x36e26a[_0x360c('0x15')](0x1f4,_0x4179a5['message']));});});};exports['ShowWhatsappQueue']=function(_0x1a2b58){var _0x45fd00=this;return new Promise(function(_0x419eb1,_0x1a7c26){return db[_0x360c('0x24')][_0x360c('0x25')]({'raw':_0x1a2b58[_0x360c('0x1d')]?_0x1a2b58[_0x360c('0x1d')]['raw']===undefined?!![]:![]:!![],'where':_0x1a2b58['options']?_0x1a2b58[_0x360c('0x1d')][_0x360c('0x1f')]||null:null,'attributes':_0x1a2b58[_0x360c('0x1d')]?_0x1a2b58[_0x360c('0x1d')]['attributes']||null:null,'include':_0x1a2b58[_0x360c('0x1d')]?_0x1a2b58[_0x360c('0x1d')][_0x360c('0x21')]?_[_0x360c('0x23')](_0x1a2b58[_0x360c('0x1d')][_0x360c('0x21')],function(_0x48c432){return{'model':db[_0x48c432[_0x360c('0x22')]],'as':_0x48c432['as'],'attributes':_0x48c432[_0x360c('0x20')],'include':_0x48c432['include']?_[_0x360c('0x23')](_0x48c432[_0x360c('0x21')],function(_0xb6c05){return{'model':db[_0xb6c05['model']],'as':_0xb6c05['as'],'attributes':_0xb6c05[_0x360c('0x20')],'include':_0xb6c05['include']?_[_0x360c('0x23')](_0xb6c05[_0x360c('0x21')],function(_0x54297f){return{'model':db[_0x54297f[_0x360c('0x22')]],'as':_0x54297f['as'],'attributes':_0x54297f[_0x360c('0x20')]};}):[]};}):[]};}):[]:[]})[_0x360c('0x10')](function(_0x3eb36d){logger[_0x360c('0x18')]('ShowWhatsappQueue',_0x1a2b58);logger['debug'](_0x360c('0x26'),_0x1a2b58,JSON[_0x360c('0x14')](_0x3eb36d));_0x419eb1(_0x3eb36d);})['catch'](function(_0x52d688){logger[_0x360c('0x15')](_0x360c('0x26'),_0x52d688[_0x360c('0x17')],_0x1a2b58);_0x1a7c26(_0x45fd00[_0x360c('0x15')](0x1f4,_0x52d688['message']));});});};
\ No newline at end of file
+var _0xa11c=['client','http','redis','defaults','localhost','socket.io-emitter','./whatsappQueue.socket','request','then','info','WhatsappQueue,\x20%s,\x20%s','debug','WhatsappQueue,\x20%s,\x20%s,\x20%s','error','code','message','request\x20sent','catch','GetWhatsappQueue','findAll','options','raw','limit','include','map','attributes','model','ShowWhatsappQueue','WhatsappQueue','find','where','stringify','lodash','util','moment','randomstring','ioredis','../../mysqldb','../../config/utils'];(function(_0x568e94,_0x38b9ba){var _0x4732a7=function(_0x2b7c01){while(--_0x2b7c01){_0x568e94['push'](_0x568e94['shift']());}};_0x4732a7(++_0x38b9ba);}(_0xa11c,0x95));var _0xca11=function(_0x17d9e3,_0x1f969c){_0x17d9e3=_0x17d9e3-0x0;var _0x14192d=_0xa11c[_0x17d9e3];return _0x14192d;};'use strict';var _=require(_0xca11('0x0'));var util=require(_0xca11('0x1'));var moment=require(_0xca11('0x2'));var BPromise=require('bluebird');var rs=require(_0xca11('0x3'));var fs=require('fs');var Redis=require(_0xca11('0x4'));var db=require(_0xca11('0x5'))['db'];var utils=require(_0xca11('0x6'));var logger=require('../../config/logger')('rpc');var config=require('../../config/environment');var jayson=require('jayson/promise');var client=jayson[_0xca11('0x7')][_0xca11('0x8')]({'port':0x232a});config[_0xca11('0x9')]=_[_0xca11('0xa')](config['redis'],{'host':_0xca11('0xb'),'port':0x18eb});var socket=require(_0xca11('0xc'))(new Redis(config[_0xca11('0x9')]));require(_0xca11('0xd'))['register'](socket);function respondWithRpcPromise(_0x53f594,_0x1d8582,_0x5b73c9){return new BPromise(function(_0x5f5c3d,_0x3883ff){return client[_0xca11('0xe')](_0x53f594,_0x5b73c9)[_0xca11('0xf')](function(_0x15aa43){logger[_0xca11('0x10')](_0xca11('0x11'),_0x1d8582,'request\x20sent');logger[_0xca11('0x12')](_0xca11('0x13'),_0x1d8582,'request\x20sent',JSON['stringify'](_0x15aa43));if(_0x15aa43[_0xca11('0x14')]){if(_0x15aa43['error'][_0xca11('0x15')]===0x1f4){logger['error'](_0xca11('0x11'),_0x1d8582,_0x15aa43[_0xca11('0x14')][_0xca11('0x16')]);return _0x3883ff(_0x15aa43[_0xca11('0x14')][_0xca11('0x16')]);}logger[_0xca11('0x14')](_0xca11('0x11'),_0x1d8582,_0x15aa43[_0xca11('0x14')][_0xca11('0x16')]);return _0x5f5c3d(_0x15aa43[_0xca11('0x14')][_0xca11('0x16')]);}else{logger[_0xca11('0x10')](_0xca11('0x11'),_0x1d8582,_0xca11('0x17'));_0x5f5c3d(_0x15aa43['result'][_0xca11('0x16')]);}})[_0xca11('0x18')](function(_0x5d2b5b){logger[_0xca11('0x14')](_0xca11('0x11'),_0x1d8582,_0x5d2b5b);_0x3883ff(_0x5d2b5b);});});}exports[_0xca11('0x19')]=function(_0x168982){var _0x4c0c4f=this;return new Promise(function(_0x575cd0,_0x13326f){return db['WhatsappQueue'][_0xca11('0x1a')]({'raw':_0x168982[_0xca11('0x1b')]?_0x168982[_0xca11('0x1b')][_0xca11('0x1c')]===undefined?!![]:![]:!![],'where':_0x168982['options']?_0x168982['options']['where']||null:null,'attributes':_0x168982['options']?_0x168982[_0xca11('0x1b')]['attributes']||null:null,'limit':_0x168982[_0xca11('0x1b')]?_0x168982['options'][_0xca11('0x1d')]||null:null,'include':_0x168982[_0xca11('0x1b')]?_0x168982['options'][_0xca11('0x1e')]?_[_0xca11('0x1f')](_0x168982[_0xca11('0x1b')][_0xca11('0x1e')],function(_0x48d2c8){return{'model':db[_0x48d2c8['model']],'as':_0x48d2c8['as'],'attributes':_0x48d2c8[_0xca11('0x20')],'include':_0x48d2c8['include']?_[_0xca11('0x1f')](_0x48d2c8['include'],function(_0x5d726a){return{'model':db[_0x5d726a[_0xca11('0x21')]],'as':_0x5d726a['as'],'attributes':_0x5d726a[_0xca11('0x20')],'include':_0x5d726a[_0xca11('0x1e')]?_[_0xca11('0x1f')](_0x5d726a[_0xca11('0x1e')],function(_0x405998){return{'model':db[_0x405998[_0xca11('0x21')]],'as':_0x405998['as'],'attributes':_0x405998['attributes']};}):[]};}):[]};}):[]:[]})[_0xca11('0xf')](function(_0x5238c8){logger[_0xca11('0x10')](_0xca11('0x19'),_0x168982);logger[_0xca11('0x12')](_0xca11('0x19'),_0x168982,JSON['stringify'](_0x5238c8));_0x575cd0(_0x5238c8);})['catch'](function(_0x1b1927){logger['error'](_0xca11('0x19'),_0x1b1927[_0xca11('0x16')],_0x168982);_0x13326f(_0x4c0c4f[_0xca11('0x14')](0x1f4,_0x1b1927[_0xca11('0x16')]));});});};exports[_0xca11('0x22')]=function(_0x2647f2){var _0x387fd3=this;return new Promise(function(_0x64aef7,_0x592378){return db[_0xca11('0x23')][_0xca11('0x24')]({'raw':_0x2647f2[_0xca11('0x1b')]?_0x2647f2[_0xca11('0x1b')][_0xca11('0x1c')]===undefined?!![]:![]:!![],'where':_0x2647f2['options']?_0x2647f2[_0xca11('0x1b')][_0xca11('0x25')]||null:null,'attributes':_0x2647f2[_0xca11('0x1b')]?_0x2647f2[_0xca11('0x1b')][_0xca11('0x20')]||null:null,'include':_0x2647f2[_0xca11('0x1b')]?_0x2647f2[_0xca11('0x1b')]['include']?_['map'](_0x2647f2['options'][_0xca11('0x1e')],function(_0x3b4987){return{'model':db[_0x3b4987[_0xca11('0x21')]],'as':_0x3b4987['as'],'attributes':_0x3b4987['attributes'],'include':_0x3b4987[_0xca11('0x1e')]?_['map'](_0x3b4987[_0xca11('0x1e')],function(_0x4c3093){return{'model':db[_0x4c3093['model']],'as':_0x4c3093['as'],'attributes':_0x4c3093[_0xca11('0x20')],'include':_0x4c3093[_0xca11('0x1e')]?_[_0xca11('0x1f')](_0x4c3093[_0xca11('0x1e')],function(_0x53a8aa){return{'model':db[_0x53a8aa['model']],'as':_0x53a8aa['as'],'attributes':_0x53a8aa['attributes']};}):[]};}):[]};}):[]:[]})[_0xca11('0xf')](function(_0x583eea){logger['info'](_0xca11('0x22'),_0x2647f2);logger[_0xca11('0x12')]('ShowWhatsappQueue',_0x2647f2,JSON[_0xca11('0x26')](_0x583eea));_0x64aef7(_0x583eea);})['catch'](function(_0x389da4){logger[_0xca11('0x14')](_0xca11('0x22'),_0x389da4[_0xca11('0x16')],_0x2647f2);_0x592378(_0x387fd3[_0xca11('0x14')](0x1f4,_0x389da4[_0xca11('0x16')]));});});};
\ No newline at end of file
index dedf39e..eb80098 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xbb34=['register','whatsappQueue:','save','remove','update','emit','removeListener'];(function(_0x4164f2,_0x38669f){var _0x2575c7=function(_0x24dca1){while(--_0x24dca1){_0x4164f2['push'](_0x4164f2['shift']());}};_0x2575c7(++_0x38669f);}(_0xbb34,0x1ec));var _0x4bb3=function(_0x42b3aa,_0x223f53){_0x42b3aa=_0x42b3aa-0x0;var _0x319157=_0xbb34[_0x42b3aa];return _0x319157;};'use strict';var WhatsappQueueEvents=require('./whatsappQueue.events');var events=[_0x4bb3('0x0'),_0x4bb3('0x1'),_0x4bb3('0x2')];function createListener(_0x58ab35,_0x433962){return function(_0x4b0f04){_0x433962[_0x4bb3('0x3')](_0x58ab35,_0x4b0f04);};}function removeListener(_0x3076ff,_0x4e7283){return function(){WhatsappQueueEvents[_0x4bb3('0x4')](_0x3076ff,_0x4e7283);};}exports[_0x4bb3('0x5')]=function(_0x145780){for(var _0x2355bb=0x0,_0x2ea6db=events['length'];_0x2355bb<_0x2ea6db;_0x2355bb++){var _0x227cfd=events[_0x2355bb];var _0x1f26d0=createListener(_0x4bb3('0x6')+_0x227cfd,_0x145780);WhatsappQueueEvents['on'](_0x227cfd,_0x1f26d0);}};
\ No newline at end of file
+var _0x5abf=['update','removeListener','length','whatsappQueue:','./whatsappQueue.events','save'];(function(_0x3054be,_0x1bdc8b){var _0x3df150=function(_0x56cfbf){while(--_0x56cfbf){_0x3054be['push'](_0x3054be['shift']());}};_0x3df150(++_0x1bdc8b);}(_0x5abf,0x1f0));var _0xf5ab=function(_0x4a5f95,_0x1553d3){_0x4a5f95=_0x4a5f95-0x0;var _0x4dcfa5=_0x5abf[_0x4a5f95];return _0x4dcfa5;};'use strict';var WhatsappQueueEvents=require(_0xf5ab('0x0'));var events=[_0xf5ab('0x1'),'remove',_0xf5ab('0x2')];function createListener(_0x1a2b21,_0x501a8a){return function(_0x1b8915){_0x501a8a['emit'](_0x1a2b21,_0x1b8915);};}function removeListener(_0x2f347c,_0x3cba97){return function(){WhatsappQueueEvents[_0xf5ab('0x3')](_0x2f347c,_0x3cba97);};}exports['register']=function(_0x5d4ca3){for(var _0x2d3ca9=0x0,_0x1a03c6=events[_0xf5ab('0x4')];_0x2d3ca9<_0x1a03c6;_0x2d3ca9++){var _0x278017=events[_0x2d3ca9];var _0x51cf2c=createListener(_0xf5ab('0x5')+_0x278017,_0x5d4ca3);WhatsappQueueEvents['on'](_0x278017,_0x51cf2c);}};
\ No newline at end of file
index 7b0d2ee..5be5e32 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7b3d=['post','create','/:id','delete','destroy','exports','multer','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../config/environment','./whatsappQueueReport.controller','get','isAuthenticated','index','/describe','show'];(function(_0x2a2d92,_0x58f703){var _0x263c16=function(_0x2aba77){while(--_0x2aba77){_0x2a2d92['push'](_0x2a2d92['shift']());}};_0x263c16(++_0x58f703);}(_0x7b3d,0xae));var _0xd7b3=function(_0x8de46c,_0x4b380e){_0x8de46c=_0x8de46c-0x0;var _0x46f06b=_0x7b3d[_0x8de46c];return _0x46f06b;};'use strict';var multer=require(_0xd7b3('0x0'));var util=require(_0xd7b3('0x1'));var path=require(_0xd7b3('0x2'));var timeout=require(_0xd7b3('0x3'));var express=require(_0xd7b3('0x4'));var router=express[_0xd7b3('0x5')]();var fs_extra=require(_0xd7b3('0x6'));var auth=require(_0xd7b3('0x7'));var interaction=require('../../components/interaction/service');var config=require(_0xd7b3('0x8'));var controller=require(_0xd7b3('0x9'));router[_0xd7b3('0xa')]('/',auth[_0xd7b3('0xb')](),controller[_0xd7b3('0xc')]);router[_0xd7b3('0xa')](_0xd7b3('0xd'),auth[_0xd7b3('0xb')](),controller['describe']);router[_0xd7b3('0xa')]('/:id',auth[_0xd7b3('0xb')](),controller[_0xd7b3('0xe')]);router[_0xd7b3('0xf')]('/',auth[_0xd7b3('0xb')](),controller[_0xd7b3('0x10')]);router['put'](_0xd7b3('0x11'),auth[_0xd7b3('0xb')](),controller['update']);router[_0xd7b3('0x12')]('/:id',auth[_0xd7b3('0xb')](),controller[_0xd7b3('0x13')]);module[_0xd7b3('0x14')]=router;
\ No newline at end of file
+var _0x7b28=['describe','/:id','show','post','create','put','update','delete','destroy','exports','multer','path','connect-timeout','Router','fs-extra','../../components/auth/service','../../config/environment','./whatsappQueueReport.controller','get','isAuthenticated','/describe'];(function(_0x51eef2,_0x543d35){var _0x583b9b=function(_0x46384b){while(--_0x46384b){_0x51eef2['push'](_0x51eef2['shift']());}};_0x583b9b(++_0x543d35);}(_0x7b28,0xdc));var _0x87b2=function(_0x381710,_0x986626){_0x381710=_0x381710-0x0;var _0x21b265=_0x7b28[_0x381710];return _0x21b265;};'use strict';var multer=require(_0x87b2('0x0'));var util=require('util');var path=require(_0x87b2('0x1'));var timeout=require(_0x87b2('0x2'));var express=require('express');var router=express[_0x87b2('0x3')]();var fs_extra=require(_0x87b2('0x4'));var auth=require(_0x87b2('0x5'));var interaction=require('../../components/interaction/service');var config=require(_0x87b2('0x6'));var controller=require(_0x87b2('0x7'));router[_0x87b2('0x8')]('/',auth[_0x87b2('0x9')](),controller['index']);router[_0x87b2('0x8')](_0x87b2('0xa'),auth['isAuthenticated'](),controller[_0x87b2('0xb')]);router[_0x87b2('0x8')](_0x87b2('0xc'),auth['isAuthenticated'](),controller[_0x87b2('0xd')]);router[_0x87b2('0xe')]('/',auth[_0x87b2('0x9')](),controller[_0x87b2('0xf')]);router[_0x87b2('0x10')](_0x87b2('0xc'),auth[_0x87b2('0x9')](),controller[_0x87b2('0x11')]);router[_0x87b2('0x12')](_0x87b2('0xc'),auth[_0x87b2('0x9')](),controller[_0x87b2('0x13')]);module[_0x87b2('0x14')]=router;
\ No newline at end of file
index 140411f..c70e85b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7a54=['STRING','DATE','sequelize','exports'];(function(_0x3da767,_0x349653){var _0x32b98b=function(_0x13a809){while(--_0x13a809){_0x3da767['push'](_0x3da767['shift']());}};_0x32b98b(++_0x349653);}(_0x7a54,0x106));var _0x47a5=function(_0x2bedcb,_0x2452e0){_0x2bedcb=_0x2bedcb-0x0;var _0x2b635a=_0x7a54[_0x2bedcb];return _0x2b635a;};'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 _0x7a54=['STRING','DATE','sequelize','exports'];(function(_0x574cff,_0x170bab){var _0x2d4e9d=function(_0x166282){while(--_0x166282){_0x574cff['push'](_0x574cff['shift']());}};_0x2d4e9d(++_0x170bab);}(_0x7a54,0x106));var _0x47a5=function(_0x46baf6,_0x46e73c){_0x46baf6=_0x46baf6-0x0;var _0x12014e=_0x7a54[_0x46baf6];return _0x12014e;};'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
index e982bf1..c462e0f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1d2d=['options','WhatsappQueueReport','includeAll','findAll','catch','show','params','include','find','create','body','describe','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','bluebird','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/logger','api','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','json','offset','undefined','limit','count','set','apply','save','then','destroy','error','stack','name','send','index','map','rawAttributes','fieldName','key','model','query','keys','filters','intersection','attributes','fields','length','hasOwnProperty','order','sort','where','pick','filter','merge'];(function(_0x3ecb27,_0x15ca35){var _0x9b0ff9=function(_0x1b0723){while(--_0x1b0723){_0x3ecb27['push'](_0x3ecb27['shift']());}};_0x9b0ff9(++_0x15ca35);}(_0x1d2d,0xf0));var _0xd1d2=function(_0x311492,_0x932b5){_0x311492=_0x311492-0x0;var _0xfdd3e9=_0x1d2d[_0x311492];return _0xfdd3e9;};'use strict';var emlformat=require(_0xd1d2('0x0'));var rimraf=require(_0xd1d2('0x1'));var zipdir=require(_0xd1d2('0x2'));var jsonpatch=require(_0xd1d2('0x3'));var rp=require(_0xd1d2('0x4'));var moment=require('moment');var BPromise=require(_0xd1d2('0x5'));var Mustache=require('mustache');var util=require('util');var path=require(_0xd1d2('0x6'));var sox=require(_0xd1d2('0x7'));var csv=require(_0xd1d2('0x8'));var ejs=require(_0xd1d2('0x9'));var fs=require('fs');var fs_extra=require(_0xd1d2('0xa'));var _=require(_0xd1d2('0xb'));var squel=require('squel');var crypto=require(_0xd1d2('0xc'));var jsforce=require(_0xd1d2('0xd'));var deskjs=require(_0xd1d2('0xe'));var toCsv=require(_0xd1d2('0x8'));var querystring=require(_0xd1d2('0xf'));var Papa=require(_0xd1d2('0x10'));var Redis=require(_0xd1d2('0x11'));var authService=require(_0xd1d2('0x12'));var qs=require(_0xd1d2('0x13'));var as=require(_0xd1d2('0x14'));var hardwareService=require(_0xd1d2('0x15'));var logger=require(_0xd1d2('0x16'))(_0xd1d2('0x17'));var utils=require('../../config/utils');var config=require(_0xd1d2('0x18'));var licenseUtil=require(_0xd1d2('0x19'));var db=require(_0xd1d2('0x1a'))['db'];function respondWithStatusCode(_0x33f088,_0x129d8f){_0x129d8f=_0x129d8f||0xcc;return function(_0xc3ee82){if(_0xc3ee82){return _0x33f088[_0xd1d2('0x1b')](_0x129d8f);}return _0x33f088[_0xd1d2('0x1c')](_0x129d8f)[_0xd1d2('0x1d')]();};}function respondWithResult(_0x3f670f,_0x4cf702){_0x4cf702=_0x4cf702||0xc8;return function(_0x2e7fec){if(_0x2e7fec){return _0x3f670f[_0xd1d2('0x1c')](_0x4cf702)[_0xd1d2('0x1e')](_0x2e7fec);}};}function respondWithFilteredResult(_0x56de25,_0x35381b){return function(_0xc36ce){if(_0xc36ce){var _0x208425=typeof _0x35381b[_0xd1d2('0x1f')]===_0xd1d2('0x20')&&typeof _0x35381b[_0xd1d2('0x21')]===_0xd1d2('0x20');var _0x57f2f9=_0xc36ce['count'];var _0x3be186=_0x208425?0x0:_0x35381b['offset'];var _0x247b3a=_0x208425?_0xc36ce[_0xd1d2('0x22')]:_0x35381b[_0xd1d2('0x1f')]+_0x35381b[_0xd1d2('0x21')];var _0x4ab386;if(_0x247b3a>=_0x57f2f9){_0x247b3a=_0x57f2f9;_0x4ab386=0xc8;}else{_0x4ab386=0xce;}_0x56de25['status'](_0x4ab386);return _0x56de25[_0xd1d2('0x23')]('Content-Range',_0x3be186+'-'+_0x247b3a+'/'+_0x57f2f9)['json'](_0xc36ce);}return null;};}function patchUpdates(_0x1ab67c){return function(_0x27e26b){try{jsonpatch[_0xd1d2('0x24')](_0x27e26b,_0x1ab67c,!![]);}catch(_0x40170b){return BPromise['reject'](_0x40170b);}return _0x27e26b[_0xd1d2('0x25')]();};}function saveUpdates(_0xbb4d27,_0x24b8db){return function(_0x4eb082){if(_0x4eb082){return _0x4eb082['update'](_0xbb4d27)[_0xd1d2('0x26')](function(_0x3a1078){return _0x3a1078;});}return null;};}function removeEntity(_0x19d535,_0x2f92ee){return function(_0x3f229c){if(_0x3f229c){return _0x3f229c[_0xd1d2('0x27')]()[_0xd1d2('0x26')](function(){_0x19d535['status'](0xcc)[_0xd1d2('0x1d')]();});}};}function handleEntityNotFound(_0x42da6d,_0x41330f){return function(_0x2e1709){if(!_0x2e1709){_0x42da6d[_0xd1d2('0x1b')](0x194);}return _0x2e1709;};}function handleError(_0x39e991,_0x28b8be){_0x28b8be=_0x28b8be||0x1f4;return function(_0x34faf7){logger[_0xd1d2('0x28')](_0x34faf7[_0xd1d2('0x29')]);if(_0x34faf7[_0xd1d2('0x2a')]){delete _0x34faf7['name'];}_0x39e991['status'](_0x28b8be)[_0xd1d2('0x2b')](_0x34faf7);};}exports[_0xd1d2('0x2c')]=function(_0x1e6072,_0x2b4c1f){var _0xc815ea={},_0x48ade1={},_0x39d694={'count':0x0,'rows':[]};var _0x41171c=_[_0xd1d2('0x2d')](db['WhatsappQueueReport'][_0xd1d2('0x2e')],function(_0x1db17f){return{'name':_0x1db17f[_0xd1d2('0x2f')],'type':_0x1db17f['type'][_0xd1d2('0x30')]};});_0x48ade1[_0xd1d2('0x31')]=_[_0xd1d2('0x2d')](_0x41171c,_0xd1d2('0x2a'));_0x48ade1[_0xd1d2('0x32')]=_[_0xd1d2('0x33')](_0x1e6072[_0xd1d2('0x32')]);_0x48ade1[_0xd1d2('0x34')]=_[_0xd1d2('0x35')](_0x48ade1[_0xd1d2('0x31')],_0x48ade1[_0xd1d2('0x32')]);_0xc815ea[_0xd1d2('0x36')]=_[_0xd1d2('0x35')](_0x48ade1[_0xd1d2('0x31')],qs[_0xd1d2('0x37')](_0x1e6072[_0xd1d2('0x32')][_0xd1d2('0x37')]));_0xc815ea[_0xd1d2('0x36')]=_0xc815ea['attributes'][_0xd1d2('0x38')]?_0xc815ea[_0xd1d2('0x36')]:_0x48ade1[_0xd1d2('0x31')];if(!_0x1e6072['query'][_0xd1d2('0x39')]('nolimit')){_0xc815ea['limit']=qs[_0xd1d2('0x21')](_0x1e6072[_0xd1d2('0x32')][_0xd1d2('0x21')]);_0xc815ea[_0xd1d2('0x1f')]=qs[_0xd1d2('0x1f')](_0x1e6072[_0xd1d2('0x32')]['offset']);}_0xc815ea[_0xd1d2('0x3a')]=qs[_0xd1d2('0x3b')](_0x1e6072['query'][_0xd1d2('0x3b')]);_0xc815ea[_0xd1d2('0x3c')]=qs[_0xd1d2('0x34')](_[_0xd1d2('0x3d')](_0x1e6072['query'],_0x48ade1['filters']),_0x41171c);if(_0x1e6072[_0xd1d2('0x32')]['filter']){_0xc815ea['where']=_['merge'](_0xc815ea[_0xd1d2('0x3c')],{'$or':_['map'](_0x41171c,function(_0x3f4fd7){if(_0x3f4fd7['type']!=='VIRTUAL'){var _0x4bcea4={};_0x4bcea4[_0x3f4fd7[_0xd1d2('0x2a')]]={'$like':'%'+_0x1e6072[_0xd1d2('0x32')][_0xd1d2('0x3e')]+'%'};return _0x4bcea4;}})});}_0xc815ea=_[_0xd1d2('0x3f')]({},_0xc815ea,_0x1e6072[_0xd1d2('0x40')]);var _0xb5bec2={'where':_0xc815ea[_0xd1d2('0x3c')]};return db[_0xd1d2('0x41')][_0xd1d2('0x22')](_0xb5bec2)[_0xd1d2('0x26')](function(_0x2cedb4){_0x39d694[_0xd1d2('0x22')]=_0x2cedb4;if(_0x1e6072[_0xd1d2('0x32')][_0xd1d2('0x42')]){_0xc815ea['include']=[{'all':!![]}];}return db['WhatsappQueueReport'][_0xd1d2('0x43')](_0xc815ea);})[_0xd1d2('0x26')](function(_0x24fc93){_0x39d694['rows']=_0x24fc93;return _0x39d694;})['then'](respondWithFilteredResult(_0x2b4c1f,_0xc815ea))[_0xd1d2('0x44')](handleError(_0x2b4c1f,null));};exports[_0xd1d2('0x45')]=function(_0x4dc730,_0x2fe92a){var _0x4c5d49={'raw':!![],'where':{'id':_0x4dc730[_0xd1d2('0x46')]['id']}},_0x5a3790={};_0x5a3790['model']=_['keys'](db[_0xd1d2('0x41')][_0xd1d2('0x2e')]);_0x5a3790[_0xd1d2('0x32')]=_['keys'](_0x4dc730[_0xd1d2('0x32')]);_0x5a3790[_0xd1d2('0x34')]=_[_0xd1d2('0x35')](_0x5a3790[_0xd1d2('0x31')],_0x5a3790['query']);_0x4c5d49[_0xd1d2('0x36')]=_[_0xd1d2('0x35')](_0x5a3790['model'],qs[_0xd1d2('0x37')](_0x4dc730['query'][_0xd1d2('0x37')]));_0x4c5d49[_0xd1d2('0x36')]=_0x4c5d49[_0xd1d2('0x36')][_0xd1d2('0x38')]?_0x4c5d49[_0xd1d2('0x36')]:_0x5a3790['model'];if(_0x4dc730['query'][_0xd1d2('0x42')]){_0x4c5d49[_0xd1d2('0x47')]=[{'all':!![]}];}_0x4c5d49=_['merge']({},_0x4c5d49,_0x4dc730[_0xd1d2('0x40')]);return db[_0xd1d2('0x41')][_0xd1d2('0x48')](_0x4c5d49)[_0xd1d2('0x26')](handleEntityNotFound(_0x2fe92a,null))[_0xd1d2('0x26')](respondWithResult(_0x2fe92a,null))[_0xd1d2('0x44')](handleError(_0x2fe92a,null));};exports[_0xd1d2('0x49')]=function(_0x57c668,_0xed9e9){return db[_0xd1d2('0x41')]['create'](_0x57c668[_0xd1d2('0x4a')],{})[_0xd1d2('0x26')](respondWithResult(_0xed9e9,0xc9))['catch'](handleError(_0xed9e9,null));};exports['update']=function(_0x3d4fe3,_0x182ea8){if(_0x3d4fe3['body']['id']){delete _0x3d4fe3[_0xd1d2('0x4a')]['id'];}return db[_0xd1d2('0x41')][_0xd1d2('0x48')]({'where':{'id':_0x3d4fe3[_0xd1d2('0x46')]['id']}})[_0xd1d2('0x26')](handleEntityNotFound(_0x182ea8,null))['then'](saveUpdates(_0x3d4fe3['body'],null))[_0xd1d2('0x26')](respondWithResult(_0x182ea8,null))['catch'](handleError(_0x182ea8,null));};exports[_0xd1d2('0x27')]=function(_0xcd4b70,_0x4f4cb9){return db[_0xd1d2('0x41')][_0xd1d2('0x48')]({'where':{'id':_0xcd4b70['params']['id']}})['then'](handleEntityNotFound(_0x4f4cb9,null))[_0xd1d2('0x26')](removeEntity(_0x4f4cb9,null))[_0xd1d2('0x44')](handleError(_0x4f4cb9,null));};exports[_0xd1d2('0x4b')]=function(_0xfd8024,_0xa013ce){return db[_0xd1d2('0x41')][_0xd1d2('0x4b')]()[_0xd1d2('0x26')](respondWithResult(_0xa013ce,null))[_0xd1d2('0x44')](handleError(_0xa013ce,null));};
\ No newline at end of file
+var _0xcf66=['json','offset','undefined','limit','count','set','Content-Range','reject','save','update','then','destroy','stack','name','fieldName','type','key','model','query','keys','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort','pick','filter','where','merge','VIRTUAL','options','includeAll','include','WhatsappQueueReport','catch','show','params','rawAttributes','create','body','describe','eml-format','rimraf','zip-dir','request-promise','moment','util','path','to-csv','ejs','fs-extra','squel','crypto','jsforce','desk.js','querystring','../../components/parsers/qs','../../config/license/hardware','../../config/logger','api','../../config/utils','sendStatus','status','end'];(function(_0x5459d1,_0x567cec){var _0x1d99eb=function(_0x250970){while(--_0x250970){_0x5459d1['push'](_0x5459d1['shift']());}};_0x1d99eb(++_0x567cec);}(_0xcf66,0x71));var _0x6cf6=function(_0x181b0c,_0x4e5ca3){_0x181b0c=_0x181b0c-0x0;var _0x2912a9=_0xcf66[_0x181b0c];return _0x2912a9;};'use strict';var emlformat=require(_0x6cf6('0x0'));var rimraf=require(_0x6cf6('0x1'));var zipdir=require(_0x6cf6('0x2'));var jsonpatch=require('fast-json-patch');var rp=require(_0x6cf6('0x3'));var moment=require(_0x6cf6('0x4'));var BPromise=require('bluebird');var Mustache=require('mustache');var util=require(_0x6cf6('0x5'));var path=require(_0x6cf6('0x6'));var sox=require('sox');var csv=require(_0x6cf6('0x7'));var ejs=require(_0x6cf6('0x8'));var fs=require('fs');var fs_extra=require(_0x6cf6('0x9'));var _=require('lodash');var squel=require(_0x6cf6('0xa'));var crypto=require(_0x6cf6('0xb'));var jsforce=require(_0x6cf6('0xc'));var deskjs=require(_0x6cf6('0xd'));var toCsv=require(_0x6cf6('0x7'));var querystring=require(_0x6cf6('0xe'));var Papa=require('papaparse');var Redis=require('ioredis');var authService=require('../../components/auth/service');var qs=require(_0x6cf6('0xf'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x6cf6('0x10'));var logger=require(_0x6cf6('0x11'))(_0x6cf6('0x12'));var utils=require(_0x6cf6('0x13'));var config=require('../../config/environment');var licenseUtil=require('../../config/license/util');var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x3fdfea,_0x13b1ad){_0x13b1ad=_0x13b1ad||0xcc;return function(_0x372d12){if(_0x372d12){return _0x3fdfea[_0x6cf6('0x14')](_0x13b1ad);}return _0x3fdfea[_0x6cf6('0x15')](_0x13b1ad)[_0x6cf6('0x16')]();};}function respondWithResult(_0x57909f,_0x32fe64){_0x32fe64=_0x32fe64||0xc8;return function(_0x494ece){if(_0x494ece){return _0x57909f[_0x6cf6('0x15')](_0x32fe64)[_0x6cf6('0x17')](_0x494ece);}};}function respondWithFilteredResult(_0x4b073f,_0x40e413){return function(_0x1b40f8){if(_0x1b40f8){var _0x2d23ab=typeof _0x40e413[_0x6cf6('0x18')]===_0x6cf6('0x19')&&typeof _0x40e413[_0x6cf6('0x1a')]===_0x6cf6('0x19');var _0x39ec25=_0x1b40f8[_0x6cf6('0x1b')];var _0x2ca2b1=_0x2d23ab?0x0:_0x40e413['offset'];var _0x11d994=_0x2d23ab?_0x1b40f8[_0x6cf6('0x1b')]:_0x40e413[_0x6cf6('0x18')]+_0x40e413['limit'];var _0x18abd9;if(_0x11d994>=_0x39ec25){_0x11d994=_0x39ec25;_0x18abd9=0xc8;}else{_0x18abd9=0xce;}_0x4b073f[_0x6cf6('0x15')](_0x18abd9);return _0x4b073f[_0x6cf6('0x1c')](_0x6cf6('0x1d'),_0x2ca2b1+'-'+_0x11d994+'/'+_0x39ec25)[_0x6cf6('0x17')](_0x1b40f8);}return null;};}function patchUpdates(_0x21e903){return function(_0x123993){try{jsonpatch['apply'](_0x123993,_0x21e903,!![]);}catch(_0x19f2cd){return BPromise[_0x6cf6('0x1e')](_0x19f2cd);}return _0x123993[_0x6cf6('0x1f')]();};}function saveUpdates(_0x380a40,_0x5cba3a){return function(_0x470ea4){if(_0x470ea4){return _0x470ea4[_0x6cf6('0x20')](_0x380a40)[_0x6cf6('0x21')](function(_0x5b2767){return _0x5b2767;});}return null;};}function removeEntity(_0x5b30e0,_0x276225){return function(_0x59f838){if(_0x59f838){return _0x59f838[_0x6cf6('0x22')]()[_0x6cf6('0x21')](function(){_0x5b30e0[_0x6cf6('0x15')](0xcc)[_0x6cf6('0x16')]();});}};}function handleEntityNotFound(_0x3f9871,_0x565fad){return function(_0x1c966e){if(!_0x1c966e){_0x3f9871['sendStatus'](0x194);}return _0x1c966e;};}function handleError(_0x2779b7,_0xc7b489){_0xc7b489=_0xc7b489||0x1f4;return function(_0x3eaa31){logger['error'](_0x3eaa31[_0x6cf6('0x23')]);if(_0x3eaa31[_0x6cf6('0x24')]){delete _0x3eaa31[_0x6cf6('0x24')];}_0x2779b7[_0x6cf6('0x15')](_0xc7b489)['send'](_0x3eaa31);};}exports['index']=function(_0x2afe84,_0x4521af){var _0x57099f={},_0x5869e9={},_0x5ccc8f={'count':0x0,'rows':[]};var _0x2afc06=_['map'](db['WhatsappQueueReport']['rawAttributes'],function(_0x10bde5){return{'name':_0x10bde5[_0x6cf6('0x25')],'type':_0x10bde5[_0x6cf6('0x26')][_0x6cf6('0x27')]};});_0x5869e9[_0x6cf6('0x28')]=_['map'](_0x2afc06,_0x6cf6('0x24'));_0x5869e9[_0x6cf6('0x29')]=_[_0x6cf6('0x2a')](_0x2afe84['query']);_0x5869e9[_0x6cf6('0x2b')]=_[_0x6cf6('0x2c')](_0x5869e9[_0x6cf6('0x28')],_0x5869e9[_0x6cf6('0x29')]);_0x57099f[_0x6cf6('0x2d')]=_[_0x6cf6('0x2c')](_0x5869e9[_0x6cf6('0x28')],qs[_0x6cf6('0x2e')](_0x2afe84[_0x6cf6('0x29')][_0x6cf6('0x2e')]));_0x57099f[_0x6cf6('0x2d')]=_0x57099f[_0x6cf6('0x2d')][_0x6cf6('0x2f')]?_0x57099f[_0x6cf6('0x2d')]:_0x5869e9[_0x6cf6('0x28')];if(!_0x2afe84[_0x6cf6('0x29')][_0x6cf6('0x30')](_0x6cf6('0x31'))){_0x57099f['limit']=qs[_0x6cf6('0x1a')](_0x2afe84[_0x6cf6('0x29')][_0x6cf6('0x1a')]);_0x57099f[_0x6cf6('0x18')]=qs[_0x6cf6('0x18')](_0x2afe84[_0x6cf6('0x29')][_0x6cf6('0x18')]);}_0x57099f[_0x6cf6('0x32')]=qs[_0x6cf6('0x33')](_0x2afe84[_0x6cf6('0x29')][_0x6cf6('0x33')]);_0x57099f['where']=qs[_0x6cf6('0x2b')](_[_0x6cf6('0x34')](_0x2afe84[_0x6cf6('0x29')],_0x5869e9[_0x6cf6('0x2b')]),_0x2afc06);if(_0x2afe84[_0x6cf6('0x29')][_0x6cf6('0x35')]){_0x57099f[_0x6cf6('0x36')]=_[_0x6cf6('0x37')](_0x57099f[_0x6cf6('0x36')],{'$or':_['map'](_0x2afc06,function(_0x1c5eda){if(_0x1c5eda[_0x6cf6('0x26')]!==_0x6cf6('0x38')){var _0x3e906f={};_0x3e906f[_0x1c5eda[_0x6cf6('0x24')]]={'$like':'%'+_0x2afe84[_0x6cf6('0x29')][_0x6cf6('0x35')]+'%'};return _0x3e906f;}})});}_0x57099f=_[_0x6cf6('0x37')]({},_0x57099f,_0x2afe84[_0x6cf6('0x39')]);var _0x5ed61f={'where':_0x57099f[_0x6cf6('0x36')]};return db['WhatsappQueueReport'][_0x6cf6('0x1b')](_0x5ed61f)[_0x6cf6('0x21')](function(_0x23d280){_0x5ccc8f[_0x6cf6('0x1b')]=_0x23d280;if(_0x2afe84[_0x6cf6('0x29')][_0x6cf6('0x3a')]){_0x57099f[_0x6cf6('0x3b')]=[{'all':!![]}];}return db[_0x6cf6('0x3c')]['findAll'](_0x57099f);})[_0x6cf6('0x21')](function(_0x335dce){_0x5ccc8f['rows']=_0x335dce;return _0x5ccc8f;})[_0x6cf6('0x21')](respondWithFilteredResult(_0x4521af,_0x57099f))[_0x6cf6('0x3d')](handleError(_0x4521af,null));};exports[_0x6cf6('0x3e')]=function(_0x4874c0,_0x10bb9b){var _0x128f7a={'raw':!![],'where':{'id':_0x4874c0[_0x6cf6('0x3f')]['id']}},_0x51d915={};_0x51d915[_0x6cf6('0x28')]=_[_0x6cf6('0x2a')](db[_0x6cf6('0x3c')][_0x6cf6('0x40')]);_0x51d915[_0x6cf6('0x29')]=_[_0x6cf6('0x2a')](_0x4874c0['query']);_0x51d915[_0x6cf6('0x2b')]=_['intersection'](_0x51d915[_0x6cf6('0x28')],_0x51d915[_0x6cf6('0x29')]);_0x128f7a['attributes']=_[_0x6cf6('0x2c')](_0x51d915[_0x6cf6('0x28')],qs[_0x6cf6('0x2e')](_0x4874c0[_0x6cf6('0x29')][_0x6cf6('0x2e')]));_0x128f7a['attributes']=_0x128f7a[_0x6cf6('0x2d')][_0x6cf6('0x2f')]?_0x128f7a[_0x6cf6('0x2d')]:_0x51d915['model'];if(_0x4874c0[_0x6cf6('0x29')][_0x6cf6('0x3a')]){_0x128f7a[_0x6cf6('0x3b')]=[{'all':!![]}];}_0x128f7a=_['merge']({},_0x128f7a,_0x4874c0[_0x6cf6('0x39')]);return db['WhatsappQueueReport']['find'](_0x128f7a)[_0x6cf6('0x21')](handleEntityNotFound(_0x10bb9b,null))[_0x6cf6('0x21')](respondWithResult(_0x10bb9b,null))[_0x6cf6('0x3d')](handleError(_0x10bb9b,null));};exports[_0x6cf6('0x41')]=function(_0xb8788a,_0x311745){return db[_0x6cf6('0x3c')][_0x6cf6('0x41')](_0xb8788a[_0x6cf6('0x42')],{})[_0x6cf6('0x21')](respondWithResult(_0x311745,0xc9))[_0x6cf6('0x3d')](handleError(_0x311745,null));};exports[_0x6cf6('0x20')]=function(_0x3786d1,_0x4c8ada){if(_0x3786d1[_0x6cf6('0x42')]['id']){delete _0x3786d1[_0x6cf6('0x42')]['id'];}return db['WhatsappQueueReport']['find']({'where':{'id':_0x3786d1[_0x6cf6('0x3f')]['id']}})[_0x6cf6('0x21')](handleEntityNotFound(_0x4c8ada,null))[_0x6cf6('0x21')](saveUpdates(_0x3786d1[_0x6cf6('0x42')],null))[_0x6cf6('0x21')](respondWithResult(_0x4c8ada,null))[_0x6cf6('0x3d')](handleError(_0x4c8ada,null));};exports['destroy']=function(_0x115b9b,_0x262c23){return db[_0x6cf6('0x3c')]['find']({'where':{'id':_0x115b9b['params']['id']}})[_0x6cf6('0x21')](handleEntityNotFound(_0x262c23,null))[_0x6cf6('0x21')](removeEntity(_0x262c23,null))[_0x6cf6('0x3d')](handleError(_0x262c23,null));};exports[_0x6cf6('0x43')]=function(_0x2dbd71,_0x1fb6f1){return db[_0x6cf6('0x3c')][_0x6cf6('0x43')]()[_0x6cf6('0x21')](respondWithResult(_0x1fb6f1,null))[_0x6cf6('0x3d')](handleError(_0x1fb6f1,null));};
\ No newline at end of file
index 35f9d21..4e2ed07 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x21d2=['path','rimraf','../../config/environment','define','report_whatsapp_queue','uniqueid','util','../../config/logger','request-promise'];(function(_0x4ff5e4,_0x4f66fd){var _0x49ab13=function(_0x2ba00c){while(--_0x2ba00c){_0x4ff5e4['push'](_0x4ff5e4['shift']());}};_0x49ab13(++_0x4f66fd);}(_0x21d2,0x1ec));var _0x221d=function(_0xac151d,_0x4ea1d2){_0xac151d=_0xac151d-0x0;var _0x111dba=_0x21d2[_0xac151d];return _0x111dba;};'use strict';var _=require('lodash');var util=require(_0x221d('0x0'));var logger=require(_0x221d('0x1'))('api');var moment=require('moment');var BPromise=require('bluebird');var rp=require(_0x221d('0x2'));var fs=require('fs');var path=require(_0x221d('0x3'));var rimraf=require(_0x221d('0x4'));var config=require(_0x221d('0x5'));var attributes=require('./whatsappQueueReport.attributes');module['exports']=function(_0x121344,_0x5df107){return _0x121344[_0x221d('0x6')]('WhatsappQueueReport',attributes,{'tableName':_0x221d('0x7'),'paranoid':![],'indexes':[{'name':'uniqueid','fields':[_0x221d('0x8')]}],'timestamps':!![]});};
\ No newline at end of file
+var _0xc683=['lodash','util','../../config/logger','api','moment','bluebird','request-promise','path','rimraf','define','WhatsappQueueReport','report_whatsapp_queue','uniqueid'];(function(_0x4b058e,_0x59d87c){var _0x2524cc=function(_0x2529d8){while(--_0x2529d8){_0x4b058e['push'](_0x4b058e['shift']());}};_0x2524cc(++_0x59d87c);}(_0xc683,0xb6));var _0x3c68=function(_0x476bf4,_0x2a3755){_0x476bf4=_0x476bf4-0x0;var _0x788ffe=_0xc683[_0x476bf4];return _0x788ffe;};'use strict';var _=require(_0x3c68('0x0'));var util=require(_0x3c68('0x1'));var logger=require(_0x3c68('0x2'))(_0x3c68('0x3'));var moment=require(_0x3c68('0x4'));var BPromise=require(_0x3c68('0x5'));var rp=require(_0x3c68('0x6'));var fs=require('fs');var path=require(_0x3c68('0x7'));var rimraf=require(_0x3c68('0x8'));var config=require('../../config/environment');var attributes=require('./whatsappQueueReport.attributes');module['exports']=function(_0x1aae9b,_0x40e21e){return _0x1aae9b[_0x3c68('0x9')](_0x3c68('0xa'),attributes,{'tableName':_0x3c68('0xb'),'paranoid':![],'indexes':[{'name':_0x3c68('0xc'),'fields':[_0x3c68('0xc')]}],'timestamps':!![]});};
\ No newline at end of file
index b723018..25f1563 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x624a=['bluebird','randomstring','ioredis','../../mysqldb','rpc','client','then','info','WhatsappQueueReport,\x20%s,\x20%s','request\x20sent','debug','WhatsappQueueReport,\x20%s,\x20%s,\x20%s','stringify','error','message','result','catch','CreateWhatsappQueueReport','create','options','raw','WhatsappQueueReport','update','where','limit','UpdateWhatsappQueueReport','util'];(function(_0x48ad11,_0x16af85){var _0x2b72d5=function(_0x23fdd9){while(--_0x23fdd9){_0x48ad11['push'](_0x48ad11['shift']());}};_0x2b72d5(++_0x16af85);}(_0x624a,0x143));var _0xa624=function(_0x1306f3,_0x1da761){_0x1306f3=_0x1306f3-0x0;var _0xc1c7bf=_0x624a[_0x1306f3];return _0xc1c7bf;};'use strict';var _=require('lodash');var util=require(_0xa624('0x0'));var moment=require('moment');var BPromise=require(_0xa624('0x1'));var rs=require(_0xa624('0x2'));var fs=require('fs');var Redis=require(_0xa624('0x3'));var db=require(_0xa624('0x4'))['db'];var utils=require('../../config/utils');var logger=require('../../config/logger')(_0xa624('0x5'));var config=require('../../config/environment');var jayson=require('jayson/promise');var client=jayson[_0xa624('0x6')]['http']({'port':0x232a});function respondWithRpcPromise(_0x545c59,_0x3285fe,_0x2cce16){return new BPromise(function(_0x18f597,_0x116a91){return client['request'](_0x545c59,_0x2cce16)[_0xa624('0x7')](function(_0x58268c){logger[_0xa624('0x8')](_0xa624('0x9'),_0x3285fe,_0xa624('0xa'));logger[_0xa624('0xb')](_0xa624('0xc'),_0x3285fe,_0xa624('0xa'),JSON[_0xa624('0xd')](_0x58268c));if(_0x58268c[_0xa624('0xe')]){if(_0x58268c[_0xa624('0xe')]['code']===0x1f4){logger[_0xa624('0xe')](_0xa624('0x9'),_0x3285fe,_0x58268c[_0xa624('0xe')]['message']);return _0x116a91(_0x58268c[_0xa624('0xe')]['message']);}logger['error']('WhatsappQueueReport,\x20%s,\x20%s',_0x3285fe,_0x58268c[_0xa624('0xe')][_0xa624('0xf')]);return _0x18f597(_0x58268c[_0xa624('0xe')]['message']);}else{logger['info']('WhatsappQueueReport,\x20%s,\x20%s',_0x3285fe,_0xa624('0xa'));_0x18f597(_0x58268c[_0xa624('0x10')][_0xa624('0xf')]);}})[_0xa624('0x11')](function(_0x1b3ed9){logger[_0xa624('0xe')]('WhatsappQueueReport,\x20%s,\x20%s',_0x3285fe,_0x1b3ed9);_0x116a91(_0x1b3ed9);});});}exports[_0xa624('0x12')]=function(_0x3f47df){var _0x1f48fc=this;return new Promise(function(_0x179707,_0x2e04c2){return db['WhatsappQueueReport'][_0xa624('0x13')](_0x3f47df['body'],{'raw':_0x3f47df[_0xa624('0x14')]?_0x3f47df['options'][_0xa624('0x15')]===undefined?!![]:![]:!![]})['then'](function(_0x2f9eaa){logger[_0xa624('0x8')](_0xa624('0x12'),_0x3f47df);logger[_0xa624('0xb')](_0xa624('0x12'),_0x3f47df,JSON[_0xa624('0xd')](_0x2f9eaa));_0x179707(_0x2f9eaa);})[_0xa624('0x11')](function(_0x14af5f){logger[_0xa624('0xe')](_0xa624('0x12'),_0x14af5f['message'],_0x3f47df);_0x2e04c2(_0x1f48fc[_0xa624('0xe')](0x1f4,_0x14af5f[_0xa624('0xf')]));});});};exports['UpdateWhatsappQueueReport']=function(_0x505318){var _0x5a82af=this;return new Promise(function(_0x52743d,_0x4c5044){return db[_0xa624('0x16')][_0xa624('0x17')](_0x505318['body'],{'raw':_0x505318[_0xa624('0x14')]?_0x505318[_0xa624('0x14')][_0xa624('0x15')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x505318[_0xa624('0x14')]?_0x505318['options'][_0xa624('0x18')]||null:null,'attributes':_0x505318[_0xa624('0x14')]?_0x505318[_0xa624('0x14')]['attributes']||null:null,'limit':_0x505318[_0xa624('0x14')]?_0x505318['options'][_0xa624('0x19')]||null:null})['then'](function(_0x204e9a){logger['info'](_0xa624('0x1a'),_0x505318);logger['debug'](_0xa624('0x1a'),_0x505318,JSON[_0xa624('0xd')](_0x204e9a));_0x52743d(_0x204e9a);})['catch'](function(_0x4d9dec){logger['error']('UpdateWhatsappQueueReport',_0x4d9dec[_0xa624('0xf')],_0x505318);_0x4c5044(_0x5a82af[_0xa624('0xe')](0x1f4,_0x4d9dec[_0xa624('0xf')]));});});};
\ No newline at end of file
+var _0x67ac=['limit','lodash','util','bluebird','randomstring','../../mysqldb','../../config/utils','rpc','../../config/environment','jayson/promise','client','http','then','info','WhatsappQueueReport,\x20%s,\x20%s','request\x20sent','debug','stringify','error','code','message','CreateWhatsappQueueReport','WhatsappQueueReport','create','options','catch','UpdateWhatsappQueueReport','update','raw','where','attributes'];(function(_0x3a6beb,_0x1a5118){var _0x426ced=function(_0x350c2a){while(--_0x350c2a){_0x3a6beb['push'](_0x3a6beb['shift']());}};_0x426ced(++_0x1a5118);}(_0x67ac,0x7d));var _0xc67a=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x67ac[_0x3dd15e];return _0x231fd0;};'use strict';var _=require(_0xc67a('0x0'));var util=require(_0xc67a('0x1'));var moment=require('moment');var BPromise=require(_0xc67a('0x2'));var rs=require(_0xc67a('0x3'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0xc67a('0x4'))['db'];var utils=require(_0xc67a('0x5'));var logger=require('../../config/logger')(_0xc67a('0x6'));var config=require(_0xc67a('0x7'));var jayson=require(_0xc67a('0x8'));var client=jayson[_0xc67a('0x9')][_0xc67a('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x79f6a5,_0x15b580,_0x880820){return new BPromise(function(_0x566008,_0x47126a){return client['request'](_0x79f6a5,_0x880820)[_0xc67a('0xb')](function(_0x3897f7){logger[_0xc67a('0xc')](_0xc67a('0xd'),_0x15b580,_0xc67a('0xe'));logger[_0xc67a('0xf')]('WhatsappQueueReport,\x20%s,\x20%s,\x20%s',_0x15b580,_0xc67a('0xe'),JSON[_0xc67a('0x10')](_0x3897f7));if(_0x3897f7[_0xc67a('0x11')]){if(_0x3897f7[_0xc67a('0x11')][_0xc67a('0x12')]===0x1f4){logger['error'](_0xc67a('0xd'),_0x15b580,_0x3897f7[_0xc67a('0x11')][_0xc67a('0x13')]);return _0x47126a(_0x3897f7[_0xc67a('0x11')]['message']);}logger[_0xc67a('0x11')](_0xc67a('0xd'),_0x15b580,_0x3897f7[_0xc67a('0x11')][_0xc67a('0x13')]);return _0x566008(_0x3897f7['error'][_0xc67a('0x13')]);}else{logger[_0xc67a('0xc')](_0xc67a('0xd'),_0x15b580,'request\x20sent');_0x566008(_0x3897f7['result'][_0xc67a('0x13')]);}})['catch'](function(_0x5b6a60){logger['error'](_0xc67a('0xd'),_0x15b580,_0x5b6a60);_0x47126a(_0x5b6a60);});});}exports[_0xc67a('0x14')]=function(_0x4506ab){var _0x48fe21=this;return new Promise(function(_0x3d23d6,_0x2ff426){return db[_0xc67a('0x15')][_0xc67a('0x16')](_0x4506ab['body'],{'raw':_0x4506ab[_0xc67a('0x17')]?_0x4506ab['options']['raw']===undefined?!![]:![]:!![]})['then'](function(_0x2e9bd1){logger[_0xc67a('0xc')]('CreateWhatsappQueueReport',_0x4506ab);logger['debug'](_0xc67a('0x14'),_0x4506ab,JSON[_0xc67a('0x10')](_0x2e9bd1));_0x3d23d6(_0x2e9bd1);})[_0xc67a('0x18')](function(_0xaffbef){logger[_0xc67a('0x11')]('CreateWhatsappQueueReport',_0xaffbef[_0xc67a('0x13')],_0x4506ab);_0x2ff426(_0x48fe21['error'](0x1f4,_0xaffbef[_0xc67a('0x13')]));});});};exports[_0xc67a('0x19')]=function(_0x2b7a93){var _0x14f02c=this;return new Promise(function(_0x1e3a0d,_0x2a0ef6){return db['WhatsappQueueReport'][_0xc67a('0x1a')](_0x2b7a93['body'],{'raw':_0x2b7a93[_0xc67a('0x17')]?_0x2b7a93['options'][_0xc67a('0x1b')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x2b7a93[_0xc67a('0x17')]?_0x2b7a93['options'][_0xc67a('0x1c')]||null:null,'attributes':_0x2b7a93[_0xc67a('0x17')]?_0x2b7a93['options'][_0xc67a('0x1d')]||null:null,'limit':_0x2b7a93['options']?_0x2b7a93[_0xc67a('0x17')][_0xc67a('0x1e')]||null:null})['then'](function(_0xc2a778){logger[_0xc67a('0xc')](_0xc67a('0x19'),_0x2b7a93);logger[_0xc67a('0xf')]('UpdateWhatsappQueueReport',_0x2b7a93,JSON[_0xc67a('0x10')](_0xc2a778));_0x1e3a0d(_0xc2a778);})['catch'](function(_0xa13b70){logger[_0xc67a('0x11')]('UpdateWhatsappQueueReport',_0xa13b70[_0xc67a('0x13')],_0x2b7a93);_0x2a0ef6(_0x14f02c[_0xc67a('0x11')](0x1f4,_0xa13b70['message']));});});};
\ No newline at end of file
index db4527b..3655450 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8c99=['../../config/environment','./whatsappTransferReport.controller','get','isAuthenticated','index','describe','/:id','show','post','put','update','delete','exports','multer','path','connect-timeout','express','Router','../../components/auth/service'];(function(_0x20e1e6,_0x50a15c){var _0x281133=function(_0x50e656){while(--_0x50e656){_0x20e1e6['push'](_0x20e1e6['shift']());}};_0x281133(++_0x50a15c);}(_0x8c99,0xa5));var _0x98c9=function(_0x11ba83,_0xd5611a){_0x11ba83=_0x11ba83-0x0;var _0x3f3925=_0x8c99[_0x11ba83];return _0x3f3925;};'use strict';var multer=require(_0x98c9('0x0'));var util=require('util');var path=require(_0x98c9('0x1'));var timeout=require(_0x98c9('0x2'));var express=require(_0x98c9('0x3'));var router=express[_0x98c9('0x4')]();var fs_extra=require('fs-extra');var auth=require(_0x98c9('0x5'));var interaction=require('../../components/interaction/service');var config=require(_0x98c9('0x6'));var controller=require(_0x98c9('0x7'));router[_0x98c9('0x8')]('/',auth[_0x98c9('0x9')](),controller[_0x98c9('0xa')]);router[_0x98c9('0x8')]('/describe',auth[_0x98c9('0x9')](),controller[_0x98c9('0xb')]);router['get'](_0x98c9('0xc'),auth[_0x98c9('0x9')](),controller[_0x98c9('0xd')]);router[_0x98c9('0xe')]('/',auth['isAuthenticated'](),controller['create']);router[_0x98c9('0xf')](_0x98c9('0xc'),auth[_0x98c9('0x9')](),controller[_0x98c9('0x10')]);router[_0x98c9('0x11')](_0x98c9('0xc'),auth[_0x98c9('0x9')](),controller['destroy']);module[_0x98c9('0x12')]=router;
\ No newline at end of file
+var _0x7070=['index','/describe','/:id','show','post','create','put','update','delete','destroy','exports','multer','path','connect-timeout','express','../../components/auth/service','../../config/environment','./whatsappTransferReport.controller','get','isAuthenticated'];(function(_0x42cae1,_0x44de7e){var _0x16c4d6=function(_0x550fdf){while(--_0x550fdf){_0x42cae1['push'](_0x42cae1['shift']());}};_0x16c4d6(++_0x44de7e);}(_0x7070,0xfb));var _0x0707=function(_0x5a86ab,_0x2d3945){_0x5a86ab=_0x5a86ab-0x0;var _0x49a461=_0x7070[_0x5a86ab];return _0x49a461;};'use strict';var multer=require(_0x0707('0x0'));var util=require('util');var path=require(_0x0707('0x1'));var timeout=require(_0x0707('0x2'));var express=require(_0x0707('0x3'));var router=express['Router']();var fs_extra=require('fs-extra');var auth=require(_0x0707('0x4'));var interaction=require('../../components/interaction/service');var config=require(_0x0707('0x5'));var controller=require(_0x0707('0x6'));router[_0x0707('0x7')]('/',auth[_0x0707('0x8')](),controller[_0x0707('0x9')]);router['get'](_0x0707('0xa'),auth[_0x0707('0x8')](),controller['describe']);router[_0x0707('0x7')](_0x0707('0xb'),auth['isAuthenticated'](),controller[_0x0707('0xc')]);router[_0x0707('0xd')]('/',auth[_0x0707('0x8')](),controller[_0x0707('0xe')]);router[_0x0707('0xf')](_0x0707('0xb'),auth[_0x0707('0x8')](),controller[_0x0707('0x10')]);router[_0x0707('0x11')]('/:id',auth[_0x0707('0x8')](),controller[_0x0707('0x12')]);module[_0x0707('0x13')]=router;
\ No newline at end of file
index cd1f7c0..e13d7bf 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7035=['queue','DATE','sequelize','STRING','ENUM','agent'];(function(_0x4b5c36,_0xc1ddb){var _0x557a2e=function(_0x13164b){while(--_0x13164b){_0x4b5c36['push'](_0x4b5c36['shift']());}};_0x557a2e(++_0xc1ddb);}(_0x7035,0x15e));var _0x5703=function(_0x5b7745,_0x3a80db){_0x5b7745=_0x5b7745-0x0;var _0x55eda1=_0x7035[_0x5b7745];return _0x55eda1;};'use strict';var Sequelize=require(_0x5703('0x0'));module['exports']={'uniqueid':{'type':Sequelize[_0x5703('0x1')],'allowNull':![]},'type':{'type':Sequelize[_0x5703('0x2')]('account',_0x5703('0x3'),_0x5703('0x4')),'allowNull':![]},'transferredAt':{'type':Sequelize[_0x5703('0x5')]}};
\ No newline at end of file
+var _0xaf6e=['queue','sequelize','ENUM','account','agent'];(function(_0x420194,_0x1e065c){var _0x23f84d=function(_0x275321){while(--_0x275321){_0x420194['push'](_0x420194['shift']());}};_0x23f84d(++_0x1e065c);}(_0xaf6e,0x16e));var _0xeaf6=function(_0x5885be,_0x587a9f){_0x5885be=_0x5885be-0x0;var _0x55b234=_0xaf6e[_0x5885be];return _0x55b234;};'use strict';var Sequelize=require(_0xeaf6('0x0'));module['exports']={'uniqueid':{'type':Sequelize['STRING'],'allowNull':![]},'type':{'type':Sequelize[_0xeaf6('0x1')](_0xeaf6('0x2'),_0xeaf6('0x3'),_0xeaf6('0x4')),'allowNull':![]},'transferredAt':{'type':Sequelize['DATE']}};
\ No newline at end of file
index a6303ef..d89dc4c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8c43=['crypto','jsforce','desk.js','querystring','papaparse','../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/license/util','../../mysqldb','sendStatus','status','end','offset','undefined','limit','count','Content-Range','json','apply','save','update','then','destroy','error','name','send','map','WhatsappTransferReport','model','query','keys','intersection','fields','attributes','length','nolimit','order','sort','where','filters','pick','filter','merge','VIRTUAL','options','includeAll','findAll','rows','catch','show','params','rawAttributes','include','find','create','body','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','bluebird','mustache','sox','to-csv','ejs','lodash','squel'];(function(_0x537461,_0x5b4833){var _0x37be32=function(_0x267ca1){while(--_0x267ca1){_0x537461['push'](_0x537461['shift']());}};_0x37be32(++_0x5b4833);}(_0x8c43,0x1e5));var _0x38c4=function(_0x43879f,_0x50f81e){_0x43879f=_0x43879f-0x0;var _0x2c9aa8=_0x8c43[_0x43879f];return _0x2c9aa8;};'use strict';var emlformat=require(_0x38c4('0x0'));var rimraf=require(_0x38c4('0x1'));var zipdir=require(_0x38c4('0x2'));var jsonpatch=require(_0x38c4('0x3'));var rp=require(_0x38c4('0x4'));var moment=require('moment');var BPromise=require(_0x38c4('0x5'));var Mustache=require(_0x38c4('0x6'));var util=require('util');var path=require('path');var sox=require(_0x38c4('0x7'));var csv=require(_0x38c4('0x8'));var ejs=require(_0x38c4('0x9'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x38c4('0xa'));var squel=require(_0x38c4('0xb'));var crypto=require(_0x38c4('0xc'));var jsforce=require(_0x38c4('0xd'));var deskjs=require(_0x38c4('0xe'));var toCsv=require(_0x38c4('0x8'));var querystring=require(_0x38c4('0xf'));var Papa=require(_0x38c4('0x10'));var Redis=require('ioredis');var authService=require(_0x38c4('0x11'));var qs=require('../../components/parsers/qs');var as=require(_0x38c4('0x12'));var hardwareService=require(_0x38c4('0x13'));var logger=require(_0x38c4('0x14'))(_0x38c4('0x15'));var utils=require('../../config/utils');var config=require('../../config/environment');var licenseUtil=require(_0x38c4('0x16'));var db=require(_0x38c4('0x17'))['db'];function respondWithStatusCode(_0xcc7576,_0x5bbcac){_0x5bbcac=_0x5bbcac||0xcc;return function(_0x42886b){if(_0x42886b){return _0xcc7576[_0x38c4('0x18')](_0x5bbcac);}return _0xcc7576[_0x38c4('0x19')](_0x5bbcac)[_0x38c4('0x1a')]();};}function respondWithResult(_0x5bd524,_0x4d52d2){_0x4d52d2=_0x4d52d2||0xc8;return function(_0x513ea7){if(_0x513ea7){return _0x5bd524['status'](_0x4d52d2)['json'](_0x513ea7);}};}function respondWithFilteredResult(_0x1f0e59,_0x5513c7){return function(_0x10e7c8){if(_0x10e7c8){var _0x521e56=typeof _0x5513c7[_0x38c4('0x1b')]===_0x38c4('0x1c')&&typeof _0x5513c7[_0x38c4('0x1d')]===_0x38c4('0x1c');var _0x45001e=_0x10e7c8[_0x38c4('0x1e')];var _0x5df375=_0x521e56?0x0:_0x5513c7['offset'];var _0x39d616=_0x521e56?_0x10e7c8[_0x38c4('0x1e')]:_0x5513c7['offset']+_0x5513c7[_0x38c4('0x1d')];var _0x5bbcb1;if(_0x39d616>=_0x45001e){_0x39d616=_0x45001e;_0x5bbcb1=0xc8;}else{_0x5bbcb1=0xce;}_0x1f0e59[_0x38c4('0x19')](_0x5bbcb1);return _0x1f0e59['set'](_0x38c4('0x1f'),_0x5df375+'-'+_0x39d616+'/'+_0x45001e)[_0x38c4('0x20')](_0x10e7c8);}return null;};}function patchUpdates(_0x17663a){return function(_0x4304ca){try{jsonpatch[_0x38c4('0x21')](_0x4304ca,_0x17663a,!![]);}catch(_0x22f7a4){return BPromise['reject'](_0x22f7a4);}return _0x4304ca[_0x38c4('0x22')]();};}function saveUpdates(_0x2360cf,_0xe0dc0f){return function(_0xd1c90e){if(_0xd1c90e){return _0xd1c90e[_0x38c4('0x23')](_0x2360cf)[_0x38c4('0x24')](function(_0x4ab306){return _0x4ab306;});}return null;};}function removeEntity(_0x2cc90b,_0x1d1c08){return function(_0x1495b1){if(_0x1495b1){return _0x1495b1[_0x38c4('0x25')]()[_0x38c4('0x24')](function(){_0x2cc90b['status'](0xcc)['end']();});}};}function handleEntityNotFound(_0x433fa4,_0x3fe828){return function(_0x4cebce){if(!_0x4cebce){_0x433fa4[_0x38c4('0x18')](0x194);}return _0x4cebce;};}function handleError(_0x42e41c,_0x22e3df){_0x22e3df=_0x22e3df||0x1f4;return function(_0x55bc20){logger[_0x38c4('0x26')](_0x55bc20['stack']);if(_0x55bc20[_0x38c4('0x27')]){delete _0x55bc20['name'];}_0x42e41c[_0x38c4('0x19')](_0x22e3df)[_0x38c4('0x28')](_0x55bc20);};}exports['index']=function(_0xba9861,_0x5c1e56){var _0x126f1a={},_0x6c9d1d={},_0x1db9c9={'count':0x0,'rows':[]};var _0x211f77=_[_0x38c4('0x29')](db[_0x38c4('0x2a')]['rawAttributes'],function(_0x37dd6b){return{'name':_0x37dd6b['fieldName'],'type':_0x37dd6b['type']['key']};});_0x6c9d1d[_0x38c4('0x2b')]=_[_0x38c4('0x29')](_0x211f77,_0x38c4('0x27'));_0x6c9d1d[_0x38c4('0x2c')]=_[_0x38c4('0x2d')](_0xba9861[_0x38c4('0x2c')]);_0x6c9d1d['filters']=_[_0x38c4('0x2e')](_0x6c9d1d[_0x38c4('0x2b')],_0x6c9d1d[_0x38c4('0x2c')]);_0x126f1a['attributes']=_['intersection'](_0x6c9d1d[_0x38c4('0x2b')],qs[_0x38c4('0x2f')](_0xba9861[_0x38c4('0x2c')][_0x38c4('0x2f')]));_0x126f1a['attributes']=_0x126f1a[_0x38c4('0x30')][_0x38c4('0x31')]?_0x126f1a['attributes']:_0x6c9d1d[_0x38c4('0x2b')];if(!_0xba9861[_0x38c4('0x2c')]['hasOwnProperty'](_0x38c4('0x32'))){_0x126f1a[_0x38c4('0x1d')]=qs[_0x38c4('0x1d')](_0xba9861['query'][_0x38c4('0x1d')]);_0x126f1a[_0x38c4('0x1b')]=qs[_0x38c4('0x1b')](_0xba9861['query'][_0x38c4('0x1b')]);}_0x126f1a[_0x38c4('0x33')]=qs[_0x38c4('0x34')](_0xba9861[_0x38c4('0x2c')][_0x38c4('0x34')]);_0x126f1a[_0x38c4('0x35')]=qs[_0x38c4('0x36')](_[_0x38c4('0x37')](_0xba9861[_0x38c4('0x2c')],_0x6c9d1d[_0x38c4('0x36')]),_0x211f77);if(_0xba9861[_0x38c4('0x2c')][_0x38c4('0x38')]){_0x126f1a[_0x38c4('0x35')]=_[_0x38c4('0x39')](_0x126f1a[_0x38c4('0x35')],{'$or':_['map'](_0x211f77,function(_0xa2828d){if(_0xa2828d['type']!==_0x38c4('0x3a')){var _0x41baa5={};_0x41baa5[_0xa2828d[_0x38c4('0x27')]]={'$like':'%'+_0xba9861['query']['filter']+'%'};return _0x41baa5;}})});}_0x126f1a=_[_0x38c4('0x39')]({},_0x126f1a,_0xba9861[_0x38c4('0x3b')]);var _0x421baf={'where':_0x126f1a[_0x38c4('0x35')]};return db[_0x38c4('0x2a')][_0x38c4('0x1e')](_0x421baf)['then'](function(_0x42f587){_0x1db9c9[_0x38c4('0x1e')]=_0x42f587;if(_0xba9861[_0x38c4('0x2c')][_0x38c4('0x3c')]){_0x126f1a['include']=[{'all':!![]}];}return db[_0x38c4('0x2a')][_0x38c4('0x3d')](_0x126f1a);})[_0x38c4('0x24')](function(_0xe419){_0x1db9c9[_0x38c4('0x3e')]=_0xe419;return _0x1db9c9;})[_0x38c4('0x24')](respondWithFilteredResult(_0x5c1e56,_0x126f1a))[_0x38c4('0x3f')](handleError(_0x5c1e56,null));};exports[_0x38c4('0x40')]=function(_0x1a235b,_0x14a66c){var _0x48d860={'raw':!![],'where':{'id':_0x1a235b[_0x38c4('0x41')]['id']}},_0x127fd0={};_0x127fd0[_0x38c4('0x2b')]=_[_0x38c4('0x2d')](db[_0x38c4('0x2a')][_0x38c4('0x42')]);_0x127fd0[_0x38c4('0x2c')]=_[_0x38c4('0x2d')](_0x1a235b[_0x38c4('0x2c')]);_0x127fd0[_0x38c4('0x36')]=_['intersection'](_0x127fd0[_0x38c4('0x2b')],_0x127fd0[_0x38c4('0x2c')]);_0x48d860[_0x38c4('0x30')]=_[_0x38c4('0x2e')](_0x127fd0[_0x38c4('0x2b')],qs[_0x38c4('0x2f')](_0x1a235b[_0x38c4('0x2c')][_0x38c4('0x2f')]));_0x48d860[_0x38c4('0x30')]=_0x48d860[_0x38c4('0x30')][_0x38c4('0x31')]?_0x48d860[_0x38c4('0x30')]:_0x127fd0[_0x38c4('0x2b')];if(_0x1a235b['query']['includeAll']){_0x48d860[_0x38c4('0x43')]=[{'all':!![]}];}_0x48d860=_[_0x38c4('0x39')]({},_0x48d860,_0x1a235b[_0x38c4('0x3b')]);return db[_0x38c4('0x2a')][_0x38c4('0x44')](_0x48d860)['then'](handleEntityNotFound(_0x14a66c,null))[_0x38c4('0x24')](respondWithResult(_0x14a66c,null))[_0x38c4('0x3f')](handleError(_0x14a66c,null));};exports['create']=function(_0xb63477,_0x5349be){return db[_0x38c4('0x2a')][_0x38c4('0x45')](_0xb63477['body'],{})['then'](respondWithResult(_0x5349be,0xc9))[_0x38c4('0x3f')](handleError(_0x5349be,null));};exports[_0x38c4('0x23')]=function(_0x4d1f09,_0x199878){if(_0x4d1f09[_0x38c4('0x46')]['id']){delete _0x4d1f09[_0x38c4('0x46')]['id'];}return db['WhatsappTransferReport']['find']({'where':{'id':_0x4d1f09['params']['id']}})[_0x38c4('0x24')](handleEntityNotFound(_0x199878,null))[_0x38c4('0x24')](saveUpdates(_0x4d1f09[_0x38c4('0x46')],null))[_0x38c4('0x24')](respondWithResult(_0x199878,null))[_0x38c4('0x3f')](handleError(_0x199878,null));};exports['destroy']=function(_0x103ee5,_0x59dbb0){return db[_0x38c4('0x2a')][_0x38c4('0x44')]({'where':{'id':_0x103ee5[_0x38c4('0x41')]['id']}})[_0x38c4('0x24')](handleEntityNotFound(_0x59dbb0,null))[_0x38c4('0x24')](removeEntity(_0x59dbb0,null))[_0x38c4('0x3f')](handleError(_0x59dbb0,null));};exports['describe']=function(_0x2f0efc,_0x2a768c){return db[_0x38c4('0x2a')]['describe']()['then'](respondWithResult(_0x2a768c,null))[_0x38c4('0x3f')](handleError(_0x2a768c,null));};
\ No newline at end of file
+var _0xa5fe=['params','rawAttributes','body','find','describe','eml-format','rimraf','zip-dir','fast-json-patch','bluebird','mustache','path','sox','to-csv','ejs','lodash','jsforce','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','sendStatus','status','end','offset','limit','undefined','count','Content-Range','json','apply','reject','save','update','then','destroy','error','name','send','map','WhatsappTransferReport','type','key','model','query','keys','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort','filters','pick','where','merge','filter','options','includeAll','rows','catch','show'];(function(_0x87b0ff,_0x314389){var _0x3bc0b2=function(_0x41682b){while(--_0x41682b){_0x87b0ff['push'](_0x87b0ff['shift']());}};_0x3bc0b2(++_0x314389);}(_0xa5fe,0x163));var _0xea5f=function(_0x548627,_0x4ec392){_0x548627=_0x548627-0x0;var _0x844a84=_0xa5fe[_0x548627];return _0x844a84;};'use strict';var emlformat=require(_0xea5f('0x0'));var rimraf=require(_0xea5f('0x1'));var zipdir=require(_0xea5f('0x2'));var jsonpatch=require(_0xea5f('0x3'));var rp=require('request-promise');var moment=require('moment');var BPromise=require(_0xea5f('0x4'));var Mustache=require(_0xea5f('0x5'));var util=require('util');var path=require(_0xea5f('0x6'));var sox=require(_0xea5f('0x7'));var csv=require(_0xea5f('0x8'));var ejs=require(_0xea5f('0x9'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0xea5f('0xa'));var squel=require('squel');var crypto=require('crypto');var jsforce=require(_0xea5f('0xb'));var deskjs=require('desk.js');var toCsv=require('to-csv');var querystring=require('querystring');var Papa=require(_0xea5f('0xc'));var Redis=require(_0xea5f('0xd'));var authService=require(_0xea5f('0xe'));var qs=require(_0xea5f('0xf'));var as=require(_0xea5f('0x10'));var hardwareService=require('../../config/license/hardware');var logger=require(_0xea5f('0x11'))(_0xea5f('0x12'));var utils=require(_0xea5f('0x13'));var config=require(_0xea5f('0x14'));var licenseUtil=require(_0xea5f('0x15'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x4be33a,_0xfe026a){_0xfe026a=_0xfe026a||0xcc;return function(_0x25ce22){if(_0x25ce22){return _0x4be33a[_0xea5f('0x16')](_0xfe026a);}return _0x4be33a[_0xea5f('0x17')](_0xfe026a)[_0xea5f('0x18')]();};}function respondWithResult(_0x56f898,_0xe06961){_0xe06961=_0xe06961||0xc8;return function(_0x1c6de2){if(_0x1c6de2){return _0x56f898[_0xea5f('0x17')](_0xe06961)['json'](_0x1c6de2);}};}function respondWithFilteredResult(_0x4ff299,_0x187977){return function(_0x2a9fea){if(_0x2a9fea){var _0x378f8b=typeof _0x187977[_0xea5f('0x19')]==='undefined'&&typeof _0x187977[_0xea5f('0x1a')]===_0xea5f('0x1b');var _0x45f079=_0x2a9fea[_0xea5f('0x1c')];var _0x5614c0=_0x378f8b?0x0:_0x187977['offset'];var _0x39f805=_0x378f8b?_0x2a9fea[_0xea5f('0x1c')]:_0x187977[_0xea5f('0x19')]+_0x187977[_0xea5f('0x1a')];var _0x255d62;if(_0x39f805>=_0x45f079){_0x39f805=_0x45f079;_0x255d62=0xc8;}else{_0x255d62=0xce;}_0x4ff299[_0xea5f('0x17')](_0x255d62);return _0x4ff299['set'](_0xea5f('0x1d'),_0x5614c0+'-'+_0x39f805+'/'+_0x45f079)[_0xea5f('0x1e')](_0x2a9fea);}return null;};}function patchUpdates(_0x3131da){return function(_0x376b76){try{jsonpatch[_0xea5f('0x1f')](_0x376b76,_0x3131da,!![]);}catch(_0x4b2022){return BPromise[_0xea5f('0x20')](_0x4b2022);}return _0x376b76[_0xea5f('0x21')]();};}function saveUpdates(_0x5a0cb6,_0xa2e4de){return function(_0x383f6b){if(_0x383f6b){return _0x383f6b[_0xea5f('0x22')](_0x5a0cb6)[_0xea5f('0x23')](function(_0xae8568){return _0xae8568;});}return null;};}function removeEntity(_0x5d79ba,_0x54b12b){return function(_0x5ce948){if(_0x5ce948){return _0x5ce948[_0xea5f('0x24')]()[_0xea5f('0x23')](function(){_0x5d79ba[_0xea5f('0x17')](0xcc)[_0xea5f('0x18')]();});}};}function handleEntityNotFound(_0x499927,_0x33ca83){return function(_0x498cc8){if(!_0x498cc8){_0x499927[_0xea5f('0x16')](0x194);}return _0x498cc8;};}function handleError(_0x59c69c,_0x2e0332){_0x2e0332=_0x2e0332||0x1f4;return function(_0x5eda75){logger[_0xea5f('0x25')](_0x5eda75['stack']);if(_0x5eda75[_0xea5f('0x26')]){delete _0x5eda75[_0xea5f('0x26')];}_0x59c69c[_0xea5f('0x17')](_0x2e0332)[_0xea5f('0x27')](_0x5eda75);};}exports['index']=function(_0x40ea02,_0x1c71ca){var _0x43d642={},_0xe37719={},_0x5c6bff={'count':0x0,'rows':[]};var _0x540711=_[_0xea5f('0x28')](db[_0xea5f('0x29')]['rawAttributes'],function(_0x4b5c9a){return{'name':_0x4b5c9a['fieldName'],'type':_0x4b5c9a[_0xea5f('0x2a')][_0xea5f('0x2b')]};});_0xe37719[_0xea5f('0x2c')]=_[_0xea5f('0x28')](_0x540711,_0xea5f('0x26'));_0xe37719[_0xea5f('0x2d')]=_[_0xea5f('0x2e')](_0x40ea02[_0xea5f('0x2d')]);_0xe37719['filters']=_[_0xea5f('0x2f')](_0xe37719[_0xea5f('0x2c')],_0xe37719[_0xea5f('0x2d')]);_0x43d642[_0xea5f('0x30')]=_[_0xea5f('0x2f')](_0xe37719[_0xea5f('0x2c')],qs[_0xea5f('0x31')](_0x40ea02[_0xea5f('0x2d')][_0xea5f('0x31')]));_0x43d642['attributes']=_0x43d642['attributes'][_0xea5f('0x32')]?_0x43d642['attributes']:_0xe37719[_0xea5f('0x2c')];if(!_0x40ea02[_0xea5f('0x2d')][_0xea5f('0x33')](_0xea5f('0x34'))){_0x43d642[_0xea5f('0x1a')]=qs[_0xea5f('0x1a')](_0x40ea02['query'][_0xea5f('0x1a')]);_0x43d642[_0xea5f('0x19')]=qs[_0xea5f('0x19')](_0x40ea02[_0xea5f('0x2d')][_0xea5f('0x19')]);}_0x43d642[_0xea5f('0x35')]=qs[_0xea5f('0x36')](_0x40ea02[_0xea5f('0x2d')][_0xea5f('0x36')]);_0x43d642['where']=qs[_0xea5f('0x37')](_[_0xea5f('0x38')](_0x40ea02['query'],_0xe37719[_0xea5f('0x37')]),_0x540711);if(_0x40ea02[_0xea5f('0x2d')]['filter']){_0x43d642[_0xea5f('0x39')]=_[_0xea5f('0x3a')](_0x43d642[_0xea5f('0x39')],{'$or':_[_0xea5f('0x28')](_0x540711,function(_0xe709ee){if(_0xe709ee[_0xea5f('0x2a')]!=='VIRTUAL'){var _0x5cecec={};_0x5cecec[_0xe709ee[_0xea5f('0x26')]]={'$like':'%'+_0x40ea02['query'][_0xea5f('0x3b')]+'%'};return _0x5cecec;}})});}_0x43d642=_['merge']({},_0x43d642,_0x40ea02[_0xea5f('0x3c')]);var _0x2a3176={'where':_0x43d642[_0xea5f('0x39')]};return db['WhatsappTransferReport'][_0xea5f('0x1c')](_0x2a3176)[_0xea5f('0x23')](function(_0x5476cf){_0x5c6bff['count']=_0x5476cf;if(_0x40ea02[_0xea5f('0x2d')][_0xea5f('0x3d')]){_0x43d642['include']=[{'all':!![]}];}return db[_0xea5f('0x29')]['findAll'](_0x43d642);})[_0xea5f('0x23')](function(_0x4fa615){_0x5c6bff[_0xea5f('0x3e')]=_0x4fa615;return _0x5c6bff;})[_0xea5f('0x23')](respondWithFilteredResult(_0x1c71ca,_0x43d642))[_0xea5f('0x3f')](handleError(_0x1c71ca,null));};exports[_0xea5f('0x40')]=function(_0xe9b221,_0x1fcb66){var _0x3a4912={'raw':!![],'where':{'id':_0xe9b221[_0xea5f('0x41')]['id']}},_0x31fb05={};_0x31fb05[_0xea5f('0x2c')]=_[_0xea5f('0x2e')](db[_0xea5f('0x29')][_0xea5f('0x42')]);_0x31fb05[_0xea5f('0x2d')]=_[_0xea5f('0x2e')](_0xe9b221[_0xea5f('0x2d')]);_0x31fb05[_0xea5f('0x37')]=_['intersection'](_0x31fb05['model'],_0x31fb05['query']);_0x3a4912[_0xea5f('0x30')]=_[_0xea5f('0x2f')](_0x31fb05['model'],qs[_0xea5f('0x31')](_0xe9b221['query']['fields']));_0x3a4912[_0xea5f('0x30')]=_0x3a4912[_0xea5f('0x30')]['length']?_0x3a4912['attributes']:_0x31fb05['model'];if(_0xe9b221[_0xea5f('0x2d')]['includeAll']){_0x3a4912['include']=[{'all':!![]}];}_0x3a4912=_[_0xea5f('0x3a')]({},_0x3a4912,_0xe9b221[_0xea5f('0x3c')]);return db[_0xea5f('0x29')]['find'](_0x3a4912)[_0xea5f('0x23')](handleEntityNotFound(_0x1fcb66,null))['then'](respondWithResult(_0x1fcb66,null))[_0xea5f('0x3f')](handleError(_0x1fcb66,null));};exports['create']=function(_0x13a925,_0x1c64b7){return db[_0xea5f('0x29')]['create'](_0x13a925[_0xea5f('0x43')],{})[_0xea5f('0x23')](respondWithResult(_0x1c64b7,0xc9))['catch'](handleError(_0x1c64b7,null));};exports[_0xea5f('0x22')]=function(_0x438c17,_0x1c5f5f){if(_0x438c17[_0xea5f('0x43')]['id']){delete _0x438c17[_0xea5f('0x43')]['id'];}return db[_0xea5f('0x29')][_0xea5f('0x44')]({'where':{'id':_0x438c17['params']['id']}})[_0xea5f('0x23')](handleEntityNotFound(_0x1c5f5f,null))[_0xea5f('0x23')](saveUpdates(_0x438c17[_0xea5f('0x43')],null))[_0xea5f('0x23')](respondWithResult(_0x1c5f5f,null))[_0xea5f('0x3f')](handleError(_0x1c5f5f,null));};exports[_0xea5f('0x24')]=function(_0x2bae47,_0x2bb44d){return db['WhatsappTransferReport'][_0xea5f('0x44')]({'where':{'id':_0x2bae47[_0xea5f('0x41')]['id']}})[_0xea5f('0x23')](handleEntityNotFound(_0x2bb44d,null))[_0xea5f('0x23')](removeEntity(_0x2bb44d,null))[_0xea5f('0x3f')](handleError(_0x2bb44d,null));};exports[_0xea5f('0x45')]=function(_0x50f4df,_0x4f67d4){return db[_0xea5f('0x29')]['describe']()[_0xea5f('0x23')](respondWithResult(_0x4f67d4,null))['catch'](handleError(_0x4f67d4,null));};
\ No newline at end of file
index 0226df7..da72746 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x876b=['api','moment','bluebird','request-promise','path','rimraf','./whatsappTransferReport.attributes','exports','define','WhatsappTransferReport','report_whatsapp_transfer','uniqueid','lodash','util','../../config/logger'];(function(_0x346737,_0x3e6081){var _0x1ade2e=function(_0x15e50e){while(--_0x15e50e){_0x346737['push'](_0x346737['shift']());}};_0x1ade2e(++_0x3e6081);}(_0x876b,0xa2));var _0xb876=function(_0x112ccc,_0x1d3db2){_0x112ccc=_0x112ccc-0x0;var _0x499c54=_0x876b[_0x112ccc];return _0x499c54;};'use strict';var _=require(_0xb876('0x0'));var util=require(_0xb876('0x1'));var logger=require(_0xb876('0x2'))(_0xb876('0x3'));var moment=require(_0xb876('0x4'));var BPromise=require(_0xb876('0x5'));var rp=require(_0xb876('0x6'));var fs=require('fs');var path=require(_0xb876('0x7'));var rimraf=require(_0xb876('0x8'));var config=require('../../config/environment');var attributes=require(_0xb876('0x9'));module[_0xb876('0xa')]=function(_0x3d4a4a,_0x4f7fe7){return _0x3d4a4a[_0xb876('0xb')](_0xb876('0xc'),attributes,{'tableName':_0xb876('0xd'),'paranoid':![],'indexes':[{'name':_0xb876('0xe'),'fields':[_0xb876('0xe')]}],'timestamps':!![]});};
\ No newline at end of file
+var _0x3a89=['lodash','util','../../config/logger','api','path','rimraf','exports','WhatsappTransferReport','report_whatsapp_transfer','uniqueid'];(function(_0x187ee1,_0x3fd1e6){var _0x388160=function(_0x542dd2){while(--_0x542dd2){_0x187ee1['push'](_0x187ee1['shift']());}};_0x388160(++_0x3fd1e6);}(_0x3a89,0x1f4));var _0x93a8=function(_0xcb2044,_0x5ba675){_0xcb2044=_0xcb2044-0x0;var _0x38e65d=_0x3a89[_0xcb2044];return _0x38e65d;};'use strict';var _=require(_0x93a8('0x0'));var util=require(_0x93a8('0x1'));var logger=require(_0x93a8('0x2'))(_0x93a8('0x3'));var moment=require('moment');var BPromise=require('bluebird');var rp=require('request-promise');var fs=require('fs');var path=require(_0x93a8('0x4'));var rimraf=require(_0x93a8('0x5'));var config=require('../../config/environment');var attributes=require('./whatsappTransferReport.attributes');module[_0x93a8('0x6')]=function(_0x1b1e90,_0xbebd49){return _0x1b1e90['define'](_0x93a8('0x7'),attributes,{'tableName':_0x93a8('0x8'),'paranoid':![],'indexes':[{'name':_0x93a8('0x9'),'fields':[_0x93a8('0x9')]}],'timestamps':!![]});};
\ No newline at end of file
index 27309ad..4861432 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7d3e=['request','then','info','WhatsappTransferReport,\x20%s,\x20%s','request\x20sent','debug','error','code','message','result','catch','moment','bluebird','ioredis','../../config/utils','rpc','../../config/environment','jayson/promise','client','http'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x7d3e,0x15f));var _0xe7d3=function(_0x4ea539,_0x16f1d6){_0x4ea539=_0x4ea539-0x0;var _0x554799=_0x7d3e[_0x4ea539];return _0x554799;};'use strict';var _=require('lodash');var util=require('util');var moment=require(_0xe7d3('0x0'));var BPromise=require(_0xe7d3('0x1'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0xe7d3('0x2'));var db=require('../../mysqldb')['db'];var utils=require(_0xe7d3('0x3'));var logger=require('../../config/logger')(_0xe7d3('0x4'));var config=require(_0xe7d3('0x5'));var jayson=require(_0xe7d3('0x6'));var client=jayson[_0xe7d3('0x7')][_0xe7d3('0x8')]({'port':0x232a});function respondWithRpcPromise(_0x4509a9,_0x1865ba,_0x80afb8){return new BPromise(function(_0x3d20b1,_0xb571d9){return client[_0xe7d3('0x9')](_0x4509a9,_0x80afb8)[_0xe7d3('0xa')](function(_0x3d6b10){logger[_0xe7d3('0xb')](_0xe7d3('0xc'),_0x1865ba,_0xe7d3('0xd'));logger[_0xe7d3('0xe')]('WhatsappTransferReport,\x20%s,\x20%s,\x20%s',_0x1865ba,_0xe7d3('0xd'),JSON['stringify'](_0x3d6b10));if(_0x3d6b10[_0xe7d3('0xf')]){if(_0x3d6b10[_0xe7d3('0xf')][_0xe7d3('0x10')]===0x1f4){logger[_0xe7d3('0xf')](_0xe7d3('0xc'),_0x1865ba,_0x3d6b10[_0xe7d3('0xf')]['message']);return _0xb571d9(_0x3d6b10[_0xe7d3('0xf')][_0xe7d3('0x11')]);}logger[_0xe7d3('0xf')](_0xe7d3('0xc'),_0x1865ba,_0x3d6b10[_0xe7d3('0xf')][_0xe7d3('0x11')]);return _0x3d20b1(_0x3d6b10[_0xe7d3('0xf')][_0xe7d3('0x11')]);}else{logger[_0xe7d3('0xb')](_0xe7d3('0xc'),_0x1865ba,'request\x20sent');_0x3d20b1(_0x3d6b10[_0xe7d3('0x12')]['message']);}})[_0xe7d3('0x13')](function(_0x29e8b8){logger[_0xe7d3('0xf')](_0xe7d3('0xc'),_0x1865ba,_0x29e8b8);_0xb571d9(_0x29e8b8);});});}
\ No newline at end of file
+var _0xc669=['util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','then','info','WhatsappTransferReport,\x20%s,\x20%s','request\x20sent','debug','stringify','error','message','result','catch'];(function(_0x500785,_0x15e5ff){var _0x1f8bcc=function(_0x406983){while(--_0x406983){_0x500785['push'](_0x500785['shift']());}};_0x1f8bcc(++_0x15e5ff);}(_0xc669,0xcf));var _0x9c66=function(_0x6327e8,_0x1537ed){_0x6327e8=_0x6327e8-0x0;var _0x4433fb=_0xc669[_0x6327e8];return _0x4433fb;};'use strict';var _=require('lodash');var util=require(_0x9c66('0x0'));var moment=require(_0x9c66('0x1'));var BPromise=require(_0x9c66('0x2'));var rs=require(_0x9c66('0x3'));var fs=require('fs');var Redis=require(_0x9c66('0x4'));var db=require(_0x9c66('0x5'))['db'];var utils=require(_0x9c66('0x6'));var logger=require(_0x9c66('0x7'))(_0x9c66('0x8'));var config=require(_0x9c66('0x9'));var jayson=require(_0x9c66('0xa'));var client=jayson[_0x9c66('0xb')][_0x9c66('0xc')]({'port':0x232a});function respondWithRpcPromise(_0x14db5c,_0x13cbcb,_0x421af7){return new BPromise(function(_0x3ba867,_0x4fefd0){return client['request'](_0x14db5c,_0x421af7)[_0x9c66('0xd')](function(_0x1501d0){logger[_0x9c66('0xe')](_0x9c66('0xf'),_0x13cbcb,_0x9c66('0x10'));logger[_0x9c66('0x11')]('WhatsappTransferReport,\x20%s,\x20%s,\x20%s',_0x13cbcb,_0x9c66('0x10'),JSON[_0x9c66('0x12')](_0x1501d0));if(_0x1501d0[_0x9c66('0x13')]){if(_0x1501d0[_0x9c66('0x13')]['code']===0x1f4){logger[_0x9c66('0x13')](_0x9c66('0xf'),_0x13cbcb,_0x1501d0[_0x9c66('0x13')][_0x9c66('0x14')]);return _0x4fefd0(_0x1501d0[_0x9c66('0x13')][_0x9c66('0x14')]);}logger['error'](_0x9c66('0xf'),_0x13cbcb,_0x1501d0[_0x9c66('0x13')]['message']);return _0x3ba867(_0x1501d0['error'][_0x9c66('0x14')]);}else{logger[_0x9c66('0xe')](_0x9c66('0xf'),_0x13cbcb,'request\x20sent');_0x3ba867(_0x1501d0[_0x9c66('0x15')][_0x9c66('0x14')]);}})[_0x9c66('0x16')](function(_0x2ff967){logger[_0x9c66('0x13')](_0x9c66('0xf'),_0x13cbcb,_0x2ff967);_0x4fefd0(_0x2ff967);});});}
\ No newline at end of file
index 29abd07..010f9b9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9cc9=['join','None','seedDB','./config/seedDB','default','catch','error','exit','lodash','./mysqldb','./rpc','app','./config/pm2','./config/pm2/config','./config/schedule','./config/schedule/chat','./config/schedule/whatsapp','./config/schedule/transcribe','sequelize','sync','then','start','info','Online\x20apps:','filter','online','name','Offline\x20apps:','map','status'];(function(_0x4ea955,_0x1eda76){var _0x558561=function(_0x5b20f4){while(--_0x5b20f4){_0x4ea955['push'](_0x4ea955['shift']());}};_0x558561(++_0x1eda76);}(_0x9cc9,0x1ca));var _0x99cc=function(_0x502e2b,_0x674067){_0x502e2b=_0x502e2b-0x0;var _0x4c37a8=_0x9cc9[_0x502e2b];return _0x4c37a8;};'use strict';var _=require(_0x99cc('0x0'));var mysqldb=require(_0x99cc('0x1'));var rpc=require(_0x99cc('0x2'));var config=require('./config/environment');var logger=require('./config/logger')(_0x99cc('0x3'));var pm2=require(_0x99cc('0x4'));var pm2Config=require(_0x99cc('0x5'));var schedule=require(_0x99cc('0x6'));var chat=require(_0x99cc('0x7'));var whatsapp=require(_0x99cc('0x8'));var transcribe=require(_0x99cc('0x9'));function main(){return mysqldb['db'][_0x99cc('0xa')][_0x99cc('0xb')]()['then'](function(){return rpc['listen']();})[_0x99cc('0xc')](function(_0x2aca1b){logger['info'](_0x2aca1b);return chat['start']();})[_0x99cc('0xc')](function(){return whatsapp[_0x99cc('0xd')]();})[_0x99cc('0xc')](function(){return schedule[_0x99cc('0xd')]();})['then'](function(){return transcribe[_0x99cc('0xd')]();})[_0x99cc('0xc')](function(_0x481e3b){logger[_0x99cc('0xe')](_0x481e3b);return pm2[_0x99cc('0xd')](pm2Config);})['then'](function(_0x49dcfc){logger[_0x99cc('0xe')](_0x99cc('0xf'),_['map'](_[_0x99cc('0x10')](_0x49dcfc,{'status':_0x99cc('0x11')}),_0x99cc('0x12'))['join']());logger[_0x99cc('0xe')](_0x99cc('0x13'),_[_0x99cc('0x14')](_[_0x99cc('0x10')](_0x49dcfc,function(_0x435449){return _0x435449[_0x99cc('0x15')]!==_0x99cc('0x11');}),_0x99cc('0x12'))[_0x99cc('0x16')]()||_0x99cc('0x17'));config[_0x99cc('0x18')]&&require(_0x99cc('0x19'))['default']();require('./config/license')[_0x99cc('0x1a')]();})[_0x99cc('0x1b')](function(_0x213eaf){logger[_0x99cc('0x1c')]('Server\x20failed\x20to\x20start\x20due\x20to\x20error:\x20%s',_0x213eaf);process[_0x99cc('0x1d')](0x1);});}main();
\ No newline at end of file
+var _0x87b5=['name','Offline\x20apps:','status','None','./config/license','default','catch','error','Server\x20failed\x20to\x20start\x20due\x20to\x20error:\x20%s','exit','lodash','./rpc','./config/environment','./config/logger','app','./config/pm2/config','./config/schedule','./config/schedule/transcribe','sync','then','listen','info','start','Online\x20apps:','map','filter','online'];(function(_0x57c9a9,_0x48c040){var _0x19a608=function(_0x671481){while(--_0x671481){_0x57c9a9['push'](_0x57c9a9['shift']());}};_0x19a608(++_0x48c040);}(_0x87b5,0x133));var _0x587b=function(_0x289b59,_0x240f71){_0x289b59=_0x289b59-0x0;var _0x13c697=_0x87b5[_0x289b59];return _0x13c697;};'use strict';var _=require(_0x587b('0x0'));var mysqldb=require('./mysqldb');var rpc=require(_0x587b('0x1'));var config=require(_0x587b('0x2'));var logger=require(_0x587b('0x3'))(_0x587b('0x4'));var pm2=require('./config/pm2');var pm2Config=require(_0x587b('0x5'));var schedule=require(_0x587b('0x6'));var chat=require('./config/schedule/chat');var whatsapp=require('./config/schedule/whatsapp');var transcribe=require(_0x587b('0x7'));function main(){return mysqldb['db']['sequelize'][_0x587b('0x8')]()[_0x587b('0x9')](function(){return rpc[_0x587b('0xa')]();})[_0x587b('0x9')](function(_0x42cf71){logger[_0x587b('0xb')](_0x42cf71);return chat[_0x587b('0xc')]();})[_0x587b('0x9')](function(){return whatsapp[_0x587b('0xc')]();})[_0x587b('0x9')](function(){return schedule[_0x587b('0xc')]();})['then'](function(){return transcribe['start']();})[_0x587b('0x9')](function(_0x1a574e){logger[_0x587b('0xb')](_0x1a574e);return pm2[_0x587b('0xc')](pm2Config);})[_0x587b('0x9')](function(_0x55de00){logger[_0x587b('0xb')](_0x587b('0xd'),_[_0x587b('0xe')](_[_0x587b('0xf')](_0x55de00,{'status':_0x587b('0x10')}),_0x587b('0x11'))['join']());logger[_0x587b('0xb')](_0x587b('0x12'),_[_0x587b('0xe')](_[_0x587b('0xf')](_0x55de00,function(_0x22a4f0){return _0x22a4f0[_0x587b('0x13')]!==_0x587b('0x10');}),'name')['join']()||_0x587b('0x14'));config['seedDB']&&require('./config/seedDB')['default']();require(_0x587b('0x15'))[_0x587b('0x16')]();})[_0x587b('0x17')](function(_0x1dd3bc){logger[_0x587b('0x18')](_0x587b('0x19'),_0x1dd3bc);process[_0x587b('0x1a')](0x1);});}main();
\ No newline at end of file
index 860b5c1..a148bbe 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x48d9=['faxPause','smsPause','pauseType','showWebBar','lastLoginAt','lastPauseAt','crudPermissions','passwordResetAt','alias','phoneBarAutoAnswer','phoneBarDnd','phoneBarEnableDtmfTone','phoneBarEnableSettings','phoneBarExpires','phoneBarPrefixRequired','phoneBarRemoteControl','hotdesk','interface','userProfileId','privacyEnabled','settingsEnabled','wssPort','downloadOmnichannelInteractions','downloadAttachments','isChatInteractionAuthorized','isAuthenticated','user','ChatInteraction','params','then','closed','disposition','unmanaged','json','Unmanaged.','Forbidden.','catch','headers','authorization','startsWith','Basic','User','name','pass','status','Wrong\x20credentials.','Bearer','query','apikey','getUuid','sub','Setting','findOne','blockDuration','isEqual','nonce','disabled','Invalid\x20API\x20access\x20key','blocked','blockedAt','add','minutes','Unknown\x20authorization\x20format','use','User\x20not\x20found.','User\x20object\x20not\x20found.','getLicense','update','Forbidden','isMiddleware','signToken','setTokenCookie','It\x20looks\x20like\x20you\x20aren\x27t\x20logged\x20in,\x20please\x20try\x20again.','cookie','/dashboards/general','send','retrieveApiKey','isNil','apiKeyIat','generateApiKey','apiKeyNonce','regenerateApiKey','Please\x20use\x20the\x20previous\x20API\x20access\x20key\x20to\x20generate\x20a\x20new\x20one','validatePasswordPattern','test','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\x20last\x20one.\x20Please\x20choose\x20another\x20one.','Sequelize','updatePasswordsHistory','splice','unshift','encryptString','join','promisify','sign','secret','randomBytes','toString','hex','now','HS512','../../mysqldb','../../config/environment','../../config/license/hardware','../../config/license/util','express-jwt','basic-auth','crypto','bluebird','util','moment','secrets','session','role','fullname','internal','userpic','permissions','md5secret','voicePause','chatPause'];(function(_0x49029d,_0x5a4ff1){var _0x5a0926=function(_0x515815){while(--_0x515815){_0x49029d['push'](_0x49029d['shift']());}};_0x5a0926(++_0x5a4ff1);}(_0x48d9,0x6a));var _0x948d=function(_0x1ebfde,_0x10bdce){_0x1ebfde=_0x1ebfde-0x0;var _0x97d955=_0x48d9[_0x1ebfde];return _0x97d955;};'use strict';var db=require(_0x948d('0x0'))['db'];var config=require(_0x948d('0x1'));var hardwareConf=require(_0x948d('0x2'));var licenseUtil=require(_0x948d('0x3'));var encryptor=require('../encryptor');var _=require('lodash');var jwt=require('jsonwebtoken');var expressJwt=require(_0x948d('0x4'));var compose=require('composable-middleware');var basicAuth=require(_0x948d('0x5'));var crypto=require(_0x948d('0x6'));var BPromise=require(_0x948d('0x7'));var util=require(_0x948d('0x8'));var moment=require(_0x948d('0x9'));var validateJwt=expressJwt({'secret':config[_0x948d('0xa')][_0x948d('0xb')]});var userAttributes=['id',_0x948d('0xc'),_0x948d('0xd'),'name',_0x948d('0xe'),'email',_0x948d('0xf'),_0x948d('0x10'),_0x948d('0x11'),_0x948d('0x12'),_0x948d('0x13'),'mailPause',_0x948d('0x14'),_0x948d('0x15'),'openchannelPause',_0x948d('0x16'),_0x948d('0x17'),_0x948d('0x18'),_0x948d('0x19'),_0x948d('0x1a'),'allowmessenger',_0x948d('0x1b'),_0x948d('0x1c'),_0x948d('0x1d'),'phoneBarAutoAnswerDelay',_0x948d('0x1e'),'phoneBarEnableRecording',_0x948d('0x1f'),_0x948d('0x20'),_0x948d('0x21'),_0x948d('0x22'),_0x948d('0x23'),'phoneBarRemoteControlPort',_0x948d('0x24'),_0x948d('0x25'),_0x948d('0x26'),_0x948d('0x27'),_0x948d('0x28'),_0x948d('0x29'),'downloadVoiceRecordings',_0x948d('0x2a'),_0x948d('0x2b')];exports[_0x948d('0x2c')]=function(){return this[_0x948d('0x2d')](!![])['use'](function(_0x5440c1,_0x102f72,_0x39bfc0){if(_0x5440c1[_0x948d('0x2e')]){_0x39bfc0();}else{return db[_0x948d('0x2f')]['findOne']({'where':{'id':_0x5440c1[_0x948d('0x30')]['id']},'attributes':['id','closed','disposition'],'raw':!![]})[_0x948d('0x31')](function(_0x17491c){if(_0x17491c&&_0x17491c[_0x948d('0x32')]){return _0x102f72['status'](_0x17491c[_0x948d('0x33')]===_0x948d('0x34')?0x195:0x193)[_0x948d('0x35')]({'message':_0x17491c[_0x948d('0x33')]===_0x948d('0x34')?_0x948d('0x36'):_0x948d('0x37')});}else{_0x39bfc0();}})[_0x948d('0x38')](function(_0x43fe13){_0x39bfc0(_0x43fe13);});}});};exports[_0x948d('0x2d')]=function isAuthenticated(_0x13be0d){return compose()['use'](function(_0xc51651,_0x58cb39,_0x4c171a){var _0xc231db;if(_0xc51651[_0x948d('0x39')][_0x948d('0x3a')]){if(_[_0x948d('0x3b')](_0xc51651[_0x948d('0x39')]['authorization'],_0x948d('0x3c'))){var _0x2161ff=basicAuth(_0xc51651);db[_0x948d('0x3d')]['find']({'where':{'name':_0x2161ff[_0x948d('0x3e')]}})['then'](function(_0x53caae){if(!_0x53caae||!_0x53caae['authenticate'](_0x2161ff[_0x948d('0x3f')])){return _0x58cb39[_0x948d('0x40')](0x191)[_0x948d('0x35')]({'message':_0x948d('0x41')});}_0xc51651[_0x948d('0x2e')]={'id':_0x53caae['id']};_0x4c171a();})[_0x948d('0x38')](function(_0x1db7fa){_0x4c171a(_0x1db7fa);});}else if(_[_0x948d('0x3b')](_0xc51651[_0x948d('0x39')]['authorization'],_0x948d('0x42'))){validateJwt(_0xc51651,_0x58cb39,_0x4c171a);}else{if(_0x13be0d){_0x4c171a();}else{return _0x58cb39[_0x948d('0x40')](0x193)['json']({'message':'Unknown\x20authorization\x20format'});}}}else if(_0xc51651[_0x948d('0x43')][_0x948d('0x44')]){try{var _0x246ec3={'audience':hardwareConf[_0x948d('0x45')](),'issuer':hardwareConf[_0x948d('0x45')]()};verifyJwt(_0xc51651[_0x948d('0x43')][_0x948d('0x44')],_0x246ec3)[_0x948d('0x31')](function(_0x42386a){return db['User']['find']({'where':{'id':_0x42386a[_0x948d('0x46')]}})[_0x948d('0x31')](function(_0x50a859){_0xc231db=_0x50a859;return db[_0x948d('0x47')][_0x948d('0x48')]({'where':{'id':0x1},'attributes':['allowedLoginAttempts',_0x948d('0x49')],'raw':!![]});})[_0x948d('0x31')](function(_0x3b4351){if(!_0xc231db||!_[_0x948d('0x4a')](_0xc231db['apiKeyNonce'],_0x42386a[_0x948d('0x4b')])){return _0x58cb39[_0x948d('0x40')](0x191)[_0x948d('0x35')]({'message':'API\x20access\x20key\x20is\x20not\x20valid\x20anymore'});}if(_0xc231db[_0x948d('0x4c')]){return _0x58cb39[_0x948d('0x40')](0x191)['json']({'message':_0x948d('0x4d')});}if(_0xc231db[_0x948d('0x4e')]){if(_0x3b4351[_0x948d('0x49')]>0x0){if(moment(_0xc231db[_0x948d('0x4f')])[_0x948d('0x50')](_0x3b4351[_0x948d('0x49')],_0x948d('0x51'))>moment()){return _0x58cb39[_0x948d('0x40')](0x191)['json']({'message':_0x948d('0x4d')});}}else{return _0x58cb39['status'](0x191)[_0x948d('0x35')]({'message':'Invalid\x20API\x20access\x20key'});}}_0xc51651[_0x948d('0x2e')]={'id':_0xc231db['id']};_0x4c171a();});})['catch'](function(){return _0x58cb39[_0x948d('0x40')](0x191)[_0x948d('0x35')]({'message':_0x948d('0x4d')});});}catch(_0x57684c){_0x4c171a(_0x57684c);}}else if(_0x13be0d){_0x4c171a();}else{return _0x58cb39['status'](0x193)[_0x948d('0x35')]({'message':_0x948d('0x52')});}})[_0x948d('0x53')](function(_0x1b5d32,_0x1bcf9e,_0x547fc9){if(_0x1b5d32['user']){db[_0x948d('0x3d')]['find']({'where':{'id':_0x1b5d32['user']['id']},'attributes':userAttributes})[_0x948d('0x31')](function(_0x39a7aa){if(!_0x39a7aa){return _0x1bcf9e[_0x948d('0x40')](0x194)[_0x948d('0x35')]({'message':_0x948d('0x54')});}_0x1b5d32[_0x948d('0x2e')]=_0x39a7aa;_0x547fc9();})[_0x948d('0x38')](function(_0x1248db){_0x547fc9(_0x1248db);});}else if(_0x13be0d){_0x547fc9();}else{return _0x1bcf9e['status'](0x194)[_0x948d('0x35')]({'message':_0x948d('0x55')});}});};exports['canUpdate']=function canUpdate(){return compose()['use'](function(_0x36e11b,_0x4a71fd,_0x24d038){return licenseUtil[_0x948d('0x56')]()[_0x948d('0x31')](function(_0x40690f){if(_0x40690f[_0x948d('0x57')]){_0x24d038();}else{return _0x4a71fd[_0x948d('0x40')](0x193)[_0x948d('0x35')]({'message':_0x948d('0x58')});}})[_0x948d('0x38')](function(_0x208a44){_0x24d038(_0x208a44);});});};exports['isMiddleware']=function(_0x4cf9c2,_0x38323c,_0x380995){_0x4cf9c2[_0x948d('0x59')]=!![];return _0x380995();};exports[_0x948d('0x5a')]=function signToken(_0x4ded21){return signJwt(_0x4ded21);};exports[_0x948d('0x5b')]=function(_0x447113,_0x5b84bf){if(!_0x447113[_0x948d('0x2e')]){return _0x5b84bf[_0x948d('0x40')](0x194)['json']({'message':_0x948d('0x5c')});}var _0x5d13bd={'payload':{'id':_0x447113[_0x948d('0x2e')]['id'],'role':_0x447113['user'][_0x948d('0xc')]},'options':{'expiresIn':0x15180}};return signJwt(_0x5d13bd)[_0x948d('0x31')](function(_0x3780e9){_0x5b84bf[_0x948d('0x5d')]('motion.token',_0x3780e9);_0x5b84bf['redirect'](_0x948d('0x5e'));})[_0x948d('0x38')](function(_0x333e2f){return _0x5b84bf[_0x948d('0x40')](0x1f4)[_0x948d('0x5f')](_0x333e2f);});};exports[_0x948d('0x60')]=function(_0x27c574){if(_[_0x948d('0x61')](_0x27c574['apiKeyNonce'])||_[_0x948d('0x61')](_0x27c574[_0x948d('0x62')])){return null;}else{return createJwt(_0x27c574);}};exports[_0x948d('0x63')]=function(_0x46ed56){_0x46ed56[_0x948d('0x64')]=generateNonce();_0x46ed56['apiKeyIat']=generateIssuedAt();return createJwt(_0x46ed56);};exports[_0x948d('0x65')]=function(_0x17c3d4,_0x49a33c){var _0x2ed674=_0x17c3d4[_0x948d('0x43')]['apikey'];if(_0x2ed674){var _0x5f3245={'nonce':_0x49a33c[_0x948d('0x64')],'iat':_0x49a33c['apiKeyIat'],'audience':hardwareConf[_0x948d('0x45')](),'issuer':hardwareConf['getUuid']()};return verifyJwt(_0x2ed674,_0x5f3245)[_0x948d('0x31')](function(){return generateApiKey(_0x49a33c);});}else{throw{'message':_0x948d('0x66')};}};exports[_0x948d('0x67')]=function(_0x54656f){var _0x166c0e=new RegExp(/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/);if(!_0x166c0e[_0x948d('0x68')](_0x54656f))throw new db['Sequelize'][(_0x948d('0x69'))](_0x948d('0x6a'));return;};exports['validatePasswordHistory']=function(_0x210aca,_0xbbdf03,_0x1df3b2){var _0x54af30=encryptor[_0x948d('0x6b')](_0xbbdf03)[_0x948d('0x6c')](',');for(var _0x26ce12=0x0;_0x26ce12<_0x1df3b2;_0x26ce12++){if(!_0x54af30[_0x26ce12])break;if(_0x210aca[_0x948d('0x6d')]()===_0x54af30[_0x26ce12][_0x948d('0x6d')]()){var _0x2ad98b=util[_0x948d('0x6e')]('The\x20password\x20must\x20be\x20different\x20from\x20the\x20previous\x20%d\x20passwords.\x20Please\x20choose\x20another\x20one.',_0x1df3b2);if(_0x1df3b2===0x1){_0x2ad98b=_0x948d('0x6f');}throw new db[(_0x948d('0x70'))][(_0x948d('0x69'))](_0x2ad98b);}}return;};exports[_0x948d('0x71')]=function(_0x4d5be7,_0x2f04b4){var _0x415807=_0x2f04b4?encryptor[_0x948d('0x6b')](_0x2f04b4)[_0x948d('0x6c')](','):[];if(_0x415807['length']===0x5){_0x415807[_0x948d('0x72')](-0x1,0x1);}_0x415807[_0x948d('0x73')](_0x4d5be7);return encryptor[_0x948d('0x74')](_0x415807[_0x948d('0x75')](','));};function signJwt(_0x4c1b25){var _0x879072=BPromise[_0x948d('0x76')](jwt[_0x948d('0x77')],{'context':jwt});var _0x291e80=_0x4c1b25[_0x948d('0x78')]||config[_0x948d('0xa')]['session'];return new BPromise(function(_0x10ffd4,_0x19902e){_0x879072(_0x4c1b25['payload'],_0x291e80,_0x4c1b25['options'])[_0x948d('0x31')](function(_0x1552f9){_0x10ffd4(_0x1552f9);})[_0x948d('0x38')](function(_0x1c7e92){_0x19902e(_0x1c7e92);});});}function verifyJwt(_0x4fe035,_0x5ebc7b,_0x454599){var _0x30ccf5=BPromise[_0x948d('0x76')](jwt['verify'],{'context':jwt});var _0x439e3c=_0x454599||config[_0x948d('0xa')]['session'];return new BPromise(function(_0x243cbb,_0x26fabf){_0x30ccf5(_0x4fe035,_0x439e3c,_0x5ebc7b)[_0x948d('0x31')](function(_0x428c5f){_0x243cbb(_0x428c5f);})[_0x948d('0x38')](function(_0x129b4c){_0x26fabf(_0x129b4c);});});}function generateNonce(){return crypto[_0x948d('0x79')](0x10)[_0x948d('0x7a')](_0x948d('0x7b'));}function generateIssuedAt(){return Math['floor'](Date[_0x948d('0x7c')]()/0x3e8)['toString']();}function createJwt(_0x4be285){var _0x8e3db3={'payload':{'iat':_0x4be285[_0x948d('0x62')],'nonce':_0x4be285[_0x948d('0x64')]},'options':{'algorithm':_0x948d('0x7d'),'subject':_0x4be285['id']['toString'](),'issuer':hardwareConf[_0x948d('0x45')](),'audience':hardwareConf[_0x948d('0x45')]()}};return signJwt(_0x8e3db3)['then'](function(_0x27593f){return{'iat':_0x4be285[_0x948d('0x62')],'nonce':_0x4be285[_0x948d('0x64')],'token':_0x27593f};});}
\ No newline at end of file
+var _0xa69e=['retrieveApiKey','isNil','apiKeyIat','generateApiKey','regenerateApiKey','getUuid','test','Sequelize','decryptString','split','toLowerCase','format','The\x20password\x20must\x20be\x20different\x20from\x20the\x20previous\x20%d\x20passwords.\x20Please\x20choose\x20another\x20one.','ValidationError','splice','unshift','encryptString','join','promisify','secret','payload','options','randomBytes','toString','hex','floor','now','HS512','../../mysqldb','../../config/environment','../../config/license/hardware','../../config/license/util','lodash','jsonwebtoken','basic-auth','crypto','bluebird','util','moment','secrets','session','role','fullname','internal','email','userpic','permissions','chatPause','mailPause','faxPause','smsPause','openchannelPause','pauseType','showWebBar','lastLoginAt','crudPermissions','allowmessenger','passwordResetAt','alias','phoneBarAutoAnswer','phoneBarAutoAnswerDelay','phoneBarDnd','phoneBarEnableRecording','phoneBarEnableDtmfTone','phoneBarEnableSettings','phoneBarExpires','phoneBarPrefixRequired','hotdesk','interface','privacyEnabled','settingsEnabled','downloadVoiceRecordings','isChatInteractionAuthorized','isAuthenticated','user','ChatInteraction','findOne','params','closed','disposition','unmanaged','json','Unmanaged.','Forbidden.','use','headers','startsWith','authorization','User','find','name','then','authenticate','pass','status','Wrong\x20credentials.','catch','Bearer','Unknown\x20authorization\x20format','query','apikey','blockDuration','apiKeyNonce','nonce','disabled','Invalid\x20API\x20access\x20key','blockedAt','minutes','User\x20object\x20not\x20found.','getLicense','update','Forbidden','isMiddleware','setTokenCookie','It\x20looks\x20like\x20you\x20aren\x27t\x20logged\x20in,\x20please\x20try\x20again.','cookie','motion.token','send'];(function(_0x1d5de9,_0x34a5f4){var _0x13f62b=function(_0x2f0ee9){while(--_0x2f0ee9){_0x1d5de9['push'](_0x1d5de9['shift']());}};_0x13f62b(++_0x34a5f4);}(_0xa69e,0x1f4));var _0xea69=function(_0x351458,_0xecb212){_0x351458=_0x351458-0x0;var _0x42f241=_0xa69e[_0x351458];return _0x42f241;};'use strict';var db=require(_0xea69('0x0'))['db'];var config=require(_0xea69('0x1'));var hardwareConf=require(_0xea69('0x2'));var licenseUtil=require(_0xea69('0x3'));var encryptor=require('../encryptor');var _=require(_0xea69('0x4'));var jwt=require(_0xea69('0x5'));var expressJwt=require('express-jwt');var compose=require('composable-middleware');var basicAuth=require(_0xea69('0x6'));var crypto=require(_0xea69('0x7'));var BPromise=require(_0xea69('0x8'));var util=require(_0xea69('0x9'));var moment=require(_0xea69('0xa'));var validateJwt=expressJwt({'secret':config[_0xea69('0xb')][_0xea69('0xc')]});var userAttributes=['id',_0xea69('0xd'),_0xea69('0xe'),'name',_0xea69('0xf'),_0xea69('0x10'),_0xea69('0x11'),_0xea69('0x12'),'md5secret','voicePause',_0xea69('0x13'),_0xea69('0x14'),_0xea69('0x15'),_0xea69('0x16'),_0xea69('0x17'),_0xea69('0x18'),_0xea69('0x19'),_0xea69('0x1a'),'lastPauseAt',_0xea69('0x1b'),_0xea69('0x1c'),_0xea69('0x1d'),_0xea69('0x1e'),_0xea69('0x1f'),_0xea69('0x20'),_0xea69('0x21'),_0xea69('0x22'),_0xea69('0x23'),_0xea69('0x24'),_0xea69('0x25'),_0xea69('0x26'),'phoneBarRemoteControl','phoneBarRemoteControlPort',_0xea69('0x27'),_0xea69('0x28'),'userProfileId',_0xea69('0x29'),_0xea69('0x2a'),'wssPort',_0xea69('0x2b'),'downloadOmnichannelInteractions','downloadAttachments'];exports[_0xea69('0x2c')]=function(){return this[_0xea69('0x2d')](!![])['use'](function(_0x3d5262,_0x581206,_0x2215ea){if(_0x3d5262[_0xea69('0x2e')]){_0x2215ea();}else{return db[_0xea69('0x2f')][_0xea69('0x30')]({'where':{'id':_0x3d5262[_0xea69('0x31')]['id']},'attributes':['id',_0xea69('0x32'),_0xea69('0x33')],'raw':!![]})['then'](function(_0x22d1df){if(_0x22d1df&&_0x22d1df['closed']){return _0x581206['status'](_0x22d1df['disposition']===_0xea69('0x34')?0x195:0x193)[_0xea69('0x35')]({'message':_0x22d1df['disposition']==='unmanaged'?_0xea69('0x36'):_0xea69('0x37')});}else{_0x2215ea();}})['catch'](function(_0xa13477){_0x2215ea(_0xa13477);});}});};exports[_0xea69('0x2d')]=function isAuthenticated(_0x241078){return compose()[_0xea69('0x38')](function(_0x1ce2c5,_0x3e8df1,_0x2af5ea){var _0x573680;if(_0x1ce2c5[_0xea69('0x39')]['authorization']){if(_[_0xea69('0x3a')](_0x1ce2c5[_0xea69('0x39')][_0xea69('0x3b')],'Basic')){var _0x11a5cb=basicAuth(_0x1ce2c5);db[_0xea69('0x3c')][_0xea69('0x3d')]({'where':{'name':_0x11a5cb[_0xea69('0x3e')]}})[_0xea69('0x3f')](function(_0x3884f9){if(!_0x3884f9||!_0x3884f9[_0xea69('0x40')](_0x11a5cb[_0xea69('0x41')])){return _0x3e8df1[_0xea69('0x42')](0x191)[_0xea69('0x35')]({'message':_0xea69('0x43')});}_0x1ce2c5['user']={'id':_0x3884f9['id']};_0x2af5ea();})[_0xea69('0x44')](function(_0x309c05){_0x2af5ea(_0x309c05);});}else if(_[_0xea69('0x3a')](_0x1ce2c5[_0xea69('0x39')][_0xea69('0x3b')],_0xea69('0x45'))){validateJwt(_0x1ce2c5,_0x3e8df1,_0x2af5ea);}else{if(_0x241078){_0x2af5ea();}else{return _0x3e8df1[_0xea69('0x42')](0x193)[_0xea69('0x35')]({'message':_0xea69('0x46')});}}}else if(_0x1ce2c5[_0xea69('0x47')][_0xea69('0x48')]){try{var _0x46ac67={'audience':hardwareConf['getUuid'](),'issuer':hardwareConf['getUuid']()};verifyJwt(_0x1ce2c5[_0xea69('0x47')]['apikey'],_0x46ac67)[_0xea69('0x3f')](function(_0x376918){return db[_0xea69('0x3c')][_0xea69('0x3d')]({'where':{'id':_0x376918['sub']}})[_0xea69('0x3f')](function(_0x4826c7){_0x573680=_0x4826c7;return db['Setting'][_0xea69('0x30')]({'where':{'id':0x1},'attributes':['allowedLoginAttempts',_0xea69('0x49')],'raw':!![]});})[_0xea69('0x3f')](function(_0x233080){if(!_0x573680||!_['isEqual'](_0x573680[_0xea69('0x4a')],_0x376918[_0xea69('0x4b')])){return _0x3e8df1[_0xea69('0x42')](0x191)[_0xea69('0x35')]({'message':'API\x20access\x20key\x20is\x20not\x20valid\x20anymore'});}if(_0x573680[_0xea69('0x4c')]){return _0x3e8df1[_0xea69('0x42')](0x191)[_0xea69('0x35')]({'message':_0xea69('0x4d')});}if(_0x573680['blocked']){if(_0x233080[_0xea69('0x49')]>0x0){if(moment(_0x573680[_0xea69('0x4e')])['add'](_0x233080['blockDuration'],_0xea69('0x4f'))>moment()){return _0x3e8df1['status'](0x191)[_0xea69('0x35')]({'message':_0xea69('0x4d')});}}else{return _0x3e8df1[_0xea69('0x42')](0x191)[_0xea69('0x35')]({'message':'Invalid\x20API\x20access\x20key'});}}_0x1ce2c5[_0xea69('0x2e')]={'id':_0x573680['id']};_0x2af5ea();});})[_0xea69('0x44')](function(){return _0x3e8df1[_0xea69('0x42')](0x191)['json']({'message':'Invalid\x20API\x20access\x20key'});});}catch(_0x3b5b6d){_0x2af5ea(_0x3b5b6d);}}else if(_0x241078){_0x2af5ea();}else{return _0x3e8df1[_0xea69('0x42')](0x193)[_0xea69('0x35')]({'message':_0xea69('0x46')});}})[_0xea69('0x38')](function(_0x8cb03c,_0x4cf8c5,_0x492481){if(_0x8cb03c[_0xea69('0x2e')]){db['User']['find']({'where':{'id':_0x8cb03c[_0xea69('0x2e')]['id']},'attributes':userAttributes})[_0xea69('0x3f')](function(_0x65c2f8){if(!_0x65c2f8){return _0x4cf8c5[_0xea69('0x42')](0x194)['json']({'message':'User\x20not\x20found.'});}_0x8cb03c[_0xea69('0x2e')]=_0x65c2f8;_0x492481();})['catch'](function(_0x8b01dc){_0x492481(_0x8b01dc);});}else if(_0x241078){_0x492481();}else{return _0x4cf8c5['status'](0x194)['json']({'message':_0xea69('0x50')});}});};exports['canUpdate']=function canUpdate(){return compose()[_0xea69('0x38')](function(_0x261784,_0x2b9347,_0x414b57){return licenseUtil[_0xea69('0x51')]()['then'](function(_0x5cd7a1){if(_0x5cd7a1[_0xea69('0x52')]){_0x414b57();}else{return _0x2b9347[_0xea69('0x42')](0x193)[_0xea69('0x35')]({'message':_0xea69('0x53')});}})[_0xea69('0x44')](function(_0x4d4910){_0x414b57(_0x4d4910);});});};exports[_0xea69('0x54')]=function(_0x2fe5a6,_0x55792a,_0x234b7c){_0x2fe5a6[_0xea69('0x54')]=!![];return _0x234b7c();};exports['signToken']=function signToken(_0x54a564){return signJwt(_0x54a564);};exports[_0xea69('0x55')]=function(_0x41a669,_0x13260c){if(!_0x41a669[_0xea69('0x2e')]){return _0x13260c[_0xea69('0x42')](0x194)[_0xea69('0x35')]({'message':_0xea69('0x56')});}var _0x2f030b={'payload':{'id':_0x41a669['user']['id'],'role':_0x41a669[_0xea69('0x2e')][_0xea69('0xd')]},'options':{'expiresIn':0x15180}};return signJwt(_0x2f030b)['then'](function(_0x3f2e37){_0x13260c[_0xea69('0x57')](_0xea69('0x58'),_0x3f2e37);_0x13260c['redirect']('/dashboards/general');})['catch'](function(_0xa01e48){return _0x13260c[_0xea69('0x42')](0x1f4)[_0xea69('0x59')](_0xa01e48);});};exports[_0xea69('0x5a')]=function(_0x55d2cf){if(_[_0xea69('0x5b')](_0x55d2cf[_0xea69('0x4a')])||_['isNil'](_0x55d2cf[_0xea69('0x5c')])){return null;}else{return createJwt(_0x55d2cf);}};exports[_0xea69('0x5d')]=function(_0x2287c9){_0x2287c9[_0xea69('0x4a')]=generateNonce();_0x2287c9[_0xea69('0x5c')]=generateIssuedAt();return createJwt(_0x2287c9);};exports[_0xea69('0x5e')]=function(_0x1965db,_0x4004fe){var _0x1bb94b=_0x1965db[_0xea69('0x47')][_0xea69('0x48')];if(_0x1bb94b){var _0xd69389={'nonce':_0x4004fe[_0xea69('0x4a')],'iat':_0x4004fe[_0xea69('0x5c')],'audience':hardwareConf[_0xea69('0x5f')](),'issuer':hardwareConf[_0xea69('0x5f')]()};return verifyJwt(_0x1bb94b,_0xd69389)[_0xea69('0x3f')](function(){return generateApiKey(_0x4004fe);});}else{throw{'message':'Please\x20use\x20the\x20previous\x20API\x20access\x20key\x20to\x20generate\x20a\x20new\x20one'};}};exports['validatePasswordPattern']=function(_0x501dc9){var _0x698134=new RegExp(/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/);if(!_0x698134[_0xea69('0x60')](_0x501dc9))throw new db[(_0xea69('0x61'))]['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~!@#$%^&-_=+[{]}.');return;};exports['validatePasswordHistory']=function(_0x5406cd,_0xb8666a,_0x109bf1){var _0x573bcb=encryptor[_0xea69('0x62')](_0xb8666a)[_0xea69('0x63')](',');for(var _0x51351d=0x0;_0x51351d<_0x109bf1;_0x51351d++){if(!_0x573bcb[_0x51351d])break;if(_0x5406cd['toLowerCase']()===_0x573bcb[_0x51351d][_0xea69('0x64')]()){var _0x20a187=util[_0xea69('0x65')](_0xea69('0x66'),_0x109bf1);if(_0x109bf1===0x1){_0x20a187='The\x20password\x20must\x20be\x20different\x20from\x20the\x20last\x20one.\x20Please\x20choose\x20another\x20one.';}throw new db[(_0xea69('0x61'))][(_0xea69('0x67'))](_0x20a187);}}return;};exports['updatePasswordsHistory']=function(_0x5c17bb,_0x183bf1){var _0x567145=_0x183bf1?encryptor[_0xea69('0x62')](_0x183bf1)[_0xea69('0x63')](','):[];if(_0x567145['length']===0x5){_0x567145[_0xea69('0x68')](-0x1,0x1);}_0x567145[_0xea69('0x69')](_0x5c17bb);return encryptor[_0xea69('0x6a')](_0x567145[_0xea69('0x6b')](','));};function signJwt(_0x11e745){var _0x3fe688=BPromise[_0xea69('0x6c')](jwt['sign'],{'context':jwt});var _0x1bbae1=_0x11e745[_0xea69('0x6d')]||config[_0xea69('0xb')]['session'];return new BPromise(function(_0x1c3ca9,_0x17afa8){_0x3fe688(_0x11e745[_0xea69('0x6e')],_0x1bbae1,_0x11e745[_0xea69('0x6f')])[_0xea69('0x3f')](function(_0x46d8a0){_0x1c3ca9(_0x46d8a0);})[_0xea69('0x44')](function(_0x4bcfb6){_0x17afa8(_0x4bcfb6);});});}function verifyJwt(_0xa7e993,_0x2cdff2,_0x3be002){var _0x110bd2=BPromise[_0xea69('0x6c')](jwt['verify'],{'context':jwt});var _0x1a8d2d=_0x3be002||config[_0xea69('0xb')][_0xea69('0xc')];return new BPromise(function(_0x44dea5,_0x48691f){_0x110bd2(_0xa7e993,_0x1a8d2d,_0x2cdff2)[_0xea69('0x3f')](function(_0x32dab4){_0x44dea5(_0x32dab4);})[_0xea69('0x44')](function(_0x8e6d37){_0x48691f(_0x8e6d37);});});}function generateNonce(){return crypto[_0xea69('0x70')](0x10)[_0xea69('0x71')](_0xea69('0x72'));}function generateIssuedAt(){return Math[_0xea69('0x73')](Date[_0xea69('0x74')]()/0x3e8)[_0xea69('0x71')]();}function createJwt(_0x5f1ecb){var _0x980a0={'payload':{'iat':_0x5f1ecb['apiKeyIat'],'nonce':_0x5f1ecb['apiKeyNonce']},'options':{'algorithm':_0xea69('0x75'),'subject':_0x5f1ecb['id']['toString'](),'issuer':hardwareConf[_0xea69('0x5f')](),'audience':hardwareConf['getUuid']()}};return signJwt(_0x980a0)[_0xea69('0x3f')](function(_0x1cc39c){return{'iat':_0x5f1ecb[_0xea69('0x5c')],'nonce':_0x5f1ecb[_0xea69('0x4a')],'token':_0x1cc39c};});}
\ No newline at end of file
index bf3809f..8ab1b25 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x99b1=['encrypt','algorithm','is\x20not\x20a\x20supported\x20algorithm.\x20Your\x20system\x20supports\x20the\x20following\x20algorithms:','getCiphers','filter','encryptFile','createReadStream','createWriteStream','createCipher','data','update','binary','end','final','unlink','write','encryptString','base64','decryptString','secret','utf8','crypto','bluebird','lodash','app','secrets','aes-256-ctr','aes192'];(function(_0x68c979,_0x431cff){var _0x4f0001=function(_0xa7595d){while(--_0xa7595d){_0x68c979['push'](_0x68c979['shift']());}};_0x4f0001(++_0x431cff);}(_0x99b1,0xf5));var _0x199b=function(_0xa1f359,_0x580ba1){_0xa1f359=_0xa1f359-0x0;var _0x4177e3=_0x99b1[_0xa1f359];return _0x4177e3;};'use strict';var crypto=require(_0x199b('0x0'));var fs=require('fs');var BPromise=require(_0x199b('0x1'));var _=require(_0x199b('0x2'));var config=require('../../config/environment');var logger=require('../../config/logger')(_0x199b('0x3'));const AES_SUPPORTED_RX=/^aes(-)?\d{3}(-(cbc|cfb|ctr)(1|8)?){0,1}$/;const stringOptions={'secret':config[_0x199b('0x4')]['session'],'algorithm':_0x199b('0x5')};const fileOptions={'algorithm':_0x199b('0x6')};if(config[_0x199b('0x7')]&&config['encrypt'][_0x199b('0x8')]){var isSupported=isAlgorithmSupported(config[_0x199b('0x7')]['algorithm']);if(isSupported){fileOptions[_0x199b('0x8')]=config['encrypt']['algorithm'];}else{var supportedAlgorithms=getSupportedCiphers()['join'](',\x20');logger['error'](config[_0x199b('0x7')][_0x199b('0x8')],_0x199b('0x9'),supportedAlgorithms);}}function isASupportedCipher(_0x5bf8a6){return AES_SUPPORTED_RX['test'](_0x5bf8a6);}function getSupportedCiphers(){return crypto[_0x199b('0xa')]()[_0x199b('0xb')](isASupportedCipher);}function isAlgorithmSupported(_0x5c00dc){return getSupportedCiphers()['indexOf'](_0x5c00dc)>-0x1;}function combineOptions(_0x2aa5b3){var _0x36c6fd={};for(var _0x1bafa9 in fileOptions){if(fileOptions['hasOwnProperty'](_0x1bafa9)){_0x36c6fd[_0x1bafa9]=fileOptions[_0x1bafa9];}}if(_0x2aa5b3){for(var _0x383371 in _0x2aa5b3){if(_0x2aa5b3['hasOwnProperty'](_0x383371)){_0x36c6fd[_0x383371]=_0x2aa5b3[_0x383371];}}}return _0x36c6fd;}exports[_0x199b('0xc')]=function(_0x539fea,_0x16436a,_0x1de3c9,_0x5035f1){return new BPromise(function(_0x40ac87,_0x20274e){_0x5035f1=combineOptions(_0x5035f1);var _0xdfd935=new Buffer(_0x1de3c9);var _0x591dac=fs[_0x199b('0xd')](_0x539fea);var _0x9f2dce=fs[_0x199b('0xe')](_0x16436a);var _0x2381e6=crypto[_0x199b('0xf')](_0x5035f1[_0x199b('0x8')],_0xdfd935);_0x591dac['on'](_0x199b('0x10'),function(_0x135003){var _0x14b133=new Buffer(_0x2381e6[_0x199b('0x11')](_0x135003),_0x199b('0x12'));_0x9f2dce['write'](_0x14b133);});_0x591dac['on'](_0x199b('0x13'),function(){try{var _0x4d3a63=new Buffer(_0x2381e6[_0x199b('0x14')](_0x199b('0x12')),_0x199b('0x12'));_0x9f2dce['write'](_0x4d3a63);_0x9f2dce[_0x199b('0x13')]();_0x9f2dce['on']('close',function(){return _0x40ac87(_0x16436a);});}catch(_0x3a02b5){fs[_0x199b('0x15')](_0x16436a);return _0x20274e(_0x3a02b5);}});});};exports['decryptFile']=function(_0x5bc35e,_0x56201a,_0x47fa46,_0x2f7298){return new BPromise(function(_0xa28bf8,_0x3bdbda){_0x2f7298=combineOptions(_0x2f7298);var _0x50065f=new Buffer(_0x47fa46);var _0x3d5326=fs[_0x199b('0xd')](_0x5bc35e);var _0x565060=fs[_0x199b('0xe')](_0x56201a);var _0x4a2b32=crypto['createDecipher'](_0x2f7298[_0x199b('0x8')],_0x50065f);_0x3d5326['on'](_0x199b('0x10'),function(_0x520afd){var _0x333496=new Buffer(_0x4a2b32[_0x199b('0x11')](_0x520afd),_0x199b('0x12'));_0x565060[_0x199b('0x16')](_0x333496);});_0x3d5326['on']('end',function(){try{var _0x234931=new Buffer(_0x4a2b32[_0x199b('0x14')](_0x199b('0x12')),_0x199b('0x12'));_0x565060[_0x199b('0x16')](_0x234931);_0x565060['end']();_0x565060['on']('close',function(){return _0xa28bf8(_0x56201a);});}catch(_0x515007){fs[_0x199b('0x15')](_0x56201a);return _0x3bdbda(_0x515007);}});});};exports[_0x199b('0x17')]=function(_0xf44d95,_0x2b8271,_0x131b33){var _0x4ca26f=_0x131b33||stringOptions['algorithm'];var _0x1ff06c=_0x2b8271||stringOptions['secret'];var _0x2276f7=crypto[_0x199b('0xf')](_0x4ca26f,_0x1ff06c);var _0x12a8f6=_0x2276f7[_0x199b('0x11')](_0xf44d95,'utf8',_0x199b('0x18'));_0x12a8f6+=_0x2276f7[_0x199b('0x14')]('base64');return _0x12a8f6;};exports[_0x199b('0x19')]=function(_0x1a98e3,_0x5d8597,_0xc9136a){var _0x4cfeca=_0xc9136a||stringOptions[_0x199b('0x8')];var _0x5d8be1=_0x5d8597||stringOptions[_0x199b('0x1a')];var _0x140e55=crypto['createDecipher'](_0x4cfeca,_0x5d8be1);var _0x7bff13=_0x140e55[_0x199b('0x11')](_0x1a98e3,_0x199b('0x18'),_0x199b('0x1b'));_0x7bff13+=_0x140e55['final'](_0x199b('0x1b'));return _0x7bff13;};
\ No newline at end of file
+var _0x35c4=['session','aes-256-ctr','aes192','encrypt','algorithm','join','error','is\x20not\x20a\x20supported\x20algorithm.\x20Your\x20system\x20supports\x20the\x20following\x20algorithms:','test','getCiphers','filter','indexOf','hasOwnProperty','encryptFile','createWriteStream','createCipher','data','update','binary','end','final','write','close','decryptFile','createReadStream','createDecipher','unlink','utf8','base64','decryptString','crypto','bluebird','../../config/environment','app'];(function(_0x44ec14,_0x8a1bb6){var _0x2ffa38=function(_0x4a2ea1){while(--_0x4a2ea1){_0x44ec14['push'](_0x44ec14['shift']());}};_0x2ffa38(++_0x8a1bb6);}(_0x35c4,0x84));var _0x435c=function(_0x227e8f,_0x26b9e3){_0x227e8f=_0x227e8f-0x0;var _0x34bca0=_0x35c4[_0x227e8f];return _0x34bca0;};'use strict';var crypto=require(_0x435c('0x0'));var fs=require('fs');var BPromise=require(_0x435c('0x1'));var _=require('lodash');var config=require(_0x435c('0x2'));var logger=require('../../config/logger')(_0x435c('0x3'));const AES_SUPPORTED_RX=/^aes(-)?\d{3}(-(cbc|cfb|ctr)(1|8)?){0,1}$/;const stringOptions={'secret':config['secrets'][_0x435c('0x4')],'algorithm':_0x435c('0x5')};const fileOptions={'algorithm':_0x435c('0x6')};if(config[_0x435c('0x7')]&&config[_0x435c('0x7')][_0x435c('0x8')]){var isSupported=isAlgorithmSupported(config[_0x435c('0x7')][_0x435c('0x8')]);if(isSupported){fileOptions['algorithm']=config[_0x435c('0x7')][_0x435c('0x8')];}else{var supportedAlgorithms=getSupportedCiphers()[_0x435c('0x9')](',\x20');logger[_0x435c('0xa')](config[_0x435c('0x7')][_0x435c('0x8')],_0x435c('0xb'),supportedAlgorithms);}}function isASupportedCipher(_0x6db068){return AES_SUPPORTED_RX[_0x435c('0xc')](_0x6db068);}function getSupportedCiphers(){return crypto[_0x435c('0xd')]()[_0x435c('0xe')](isASupportedCipher);}function isAlgorithmSupported(_0x4980a8){return getSupportedCiphers()[_0x435c('0xf')](_0x4980a8)>-0x1;}function combineOptions(_0x376fd8){var _0xa008af={};for(var _0x20d64a in fileOptions){if(fileOptions[_0x435c('0x10')](_0x20d64a)){_0xa008af[_0x20d64a]=fileOptions[_0x20d64a];}}if(_0x376fd8){for(var _0x3ee347 in _0x376fd8){if(_0x376fd8[_0x435c('0x10')](_0x3ee347)){_0xa008af[_0x3ee347]=_0x376fd8[_0x3ee347];}}}return _0xa008af;}exports[_0x435c('0x11')]=function(_0x24e5fa,_0x1361be,_0xbb69ef,_0x30ad1f){return new BPromise(function(_0x3ff59d,_0x2a4497){_0x30ad1f=combineOptions(_0x30ad1f);var _0xcebdff=new Buffer(_0xbb69ef);var _0x1ccdf0=fs['createReadStream'](_0x24e5fa);var _0x3dde88=fs[_0x435c('0x12')](_0x1361be);var _0x3f143b=crypto[_0x435c('0x13')](_0x30ad1f['algorithm'],_0xcebdff);_0x1ccdf0['on'](_0x435c('0x14'),function(_0x3d088f){var _0x32cac4=new Buffer(_0x3f143b[_0x435c('0x15')](_0x3d088f),_0x435c('0x16'));_0x3dde88['write'](_0x32cac4);});_0x1ccdf0['on'](_0x435c('0x17'),function(){try{var _0x436192=new Buffer(_0x3f143b[_0x435c('0x18')](_0x435c('0x16')),_0x435c('0x16'));_0x3dde88[_0x435c('0x19')](_0x436192);_0x3dde88[_0x435c('0x17')]();_0x3dde88['on'](_0x435c('0x1a'),function(){return _0x3ff59d(_0x1361be);});}catch(_0x3ff44d){fs['unlink'](_0x1361be);return _0x2a4497(_0x3ff44d);}});});};exports[_0x435c('0x1b')]=function(_0x4b02cd,_0x1fd9e7,_0x17632a,_0x1594cd){return new BPromise(function(_0x5ce116,_0xc1822f){_0x1594cd=combineOptions(_0x1594cd);var _0x5ef4c6=new Buffer(_0x17632a);var _0x272dcd=fs[_0x435c('0x1c')](_0x4b02cd);var _0x1cc81e=fs['createWriteStream'](_0x1fd9e7);var _0x22dc75=crypto[_0x435c('0x1d')](_0x1594cd[_0x435c('0x8')],_0x5ef4c6);_0x272dcd['on'](_0x435c('0x14'),function(_0x2e173d){var _0x509b7c=new Buffer(_0x22dc75[_0x435c('0x15')](_0x2e173d),_0x435c('0x16'));_0x1cc81e['write'](_0x509b7c);});_0x272dcd['on'](_0x435c('0x17'),function(){try{var _0x24f73f=new Buffer(_0x22dc75[_0x435c('0x18')](_0x435c('0x16')),'binary');_0x1cc81e[_0x435c('0x19')](_0x24f73f);_0x1cc81e['end']();_0x1cc81e['on'](_0x435c('0x1a'),function(){return _0x5ce116(_0x1fd9e7);});}catch(_0x59d4d5){fs[_0x435c('0x1e')](_0x1fd9e7);return _0xc1822f(_0x59d4d5);}});});};exports['encryptString']=function(_0x4872c8,_0xdd9fca,_0x2ca322){var _0x54f0db=_0x2ca322||stringOptions[_0x435c('0x8')];var _0x2c55fa=_0xdd9fca||stringOptions['secret'];var _0xa036c2=crypto[_0x435c('0x13')](_0x54f0db,_0x2c55fa);var _0x235e87=_0xa036c2[_0x435c('0x15')](_0x4872c8,_0x435c('0x1f'),_0x435c('0x20'));_0x235e87+=_0xa036c2[_0x435c('0x18')](_0x435c('0x20'));return _0x235e87;};exports[_0x435c('0x21')]=function(_0x547551,_0x71439b,_0x4b48c6){var _0x524e2b=_0x4b48c6||stringOptions['algorithm'];var _0x1dcda1=_0x71439b||stringOptions['secret'];var _0x34c494=crypto[_0x435c('0x1d')](_0x524e2b,_0x1dcda1);var _0xcdb5fc=_0x34c494['update'](_0x547551,'base64',_0x435c('0x1f'));_0xcdb5fc+=_0x34c494[_0x435c('0x18')](_0x435c('0x1f'));return _0xcdb5fc;};
\ No newline at end of file
index 7379550..5719149 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd931=['util','path','lodash','rimraf','../../mysqldb','analytics','argv','savename','AnalyticExtractedReport','update','info','Start\x20extraction\x20report\x20with\x20id\x20%d\x20in\x20%s\x20format','CSV','split','then','splitSizeCsv','sequelize','query','format','SELECT\x20count(*)\x20as\x20num\x20FROM\x20(%s)\x20t','QueryTypes','SELECT','num','Empty','length','range','isInteger','forEach','push','%s\x20limit\x20%d\x20OFFSET\x20%d','dirname','basename','existsSync','join','mkdirSync','each','%s%d.%s','csv','%s.%s','zip\x20finished','Extraction\x20report\x20with\x20id\x20%d\x20in\x20%s\x20format\x20completed','Completed','zip','catch','Error\x20during\x20extraction\x20report\x20with\x20id\x20%d\x20in\x20%s\x20format','inspect','finally'];(function(_0xe60f63,_0x16c0b7){var _0x45ba0b=function(_0x1c9194){while(--_0x1c9194){_0xe60f63['push'](_0xe60f63['shift']());}};_0x45ba0b(++_0x16c0b7);}(_0xd931,0x11a));var _0x1d93=function(_0x573c9e,_0xd4ab71){_0x573c9e=_0x573c9e-0x0;var _0x5d0714=_0xd931[_0x573c9e];return _0x5d0714;};'use strict';var util=require(_0x1d93('0x0'));var path=require(_0x1d93('0x1'));var _=require(_0x1d93('0x2'));var csv=require('to-csv');var fs=require('fs');var BPromise=require('bluebird');var zipdir=require('zip-dir');var rimraf=require(_0x1d93('0x3'));var db=require(_0x1d93('0x4'))['db'];var dbH=require(_0x1d93('0x4'))['dbH'];var logger=require('../../config/logger')(_0x1d93('0x5'));var EXTRACTED_REPORT_ID=Number(process[_0x1d93('0x6')][0x2]);var QUERY=process[_0x1d93('0x6')][0x3];var PATH=process[_0x1d93('0x6')][0x4];var EXIT_CODE=0x0;function analyticExtractedReport(_0x168474,_0x4d25b7){var _0x20ccf3={'status':_0x168474};var _0x2aeb0b={'where':{'id':EXTRACTED_REPORT_ID}};if(_0x4d25b7){_0x20ccf3[_0x1d93('0x7')]=_0x4d25b7;}return db[_0x1d93('0x8')][_0x1d93('0x9')](_0x20ccf3,_0x2aeb0b);}function main(){var _0x19999e=0x1388;var _0x57574e;logger[_0x1d93('0xa')](util['format'](_0x1d93('0xb'),EXTRACTED_REPORT_ID,_0x1d93('0xc')));return db['Setting']['find']({'where':{'id':0x1},'raw':!![],'attributes':['id',_0x1d93('0xd'),'splitSizeCsv']})[_0x1d93('0xe')](function(_0x5c5761){if(_0x5c5761){_0x57574e=_0x5c5761;_0x19999e=_0x57574e[_0x1d93('0xf')]||0x1388;}})[_0x1d93('0xe')](function(){return dbH[_0x1d93('0x10')][_0x1d93('0x11')](util[_0x1d93('0x12')](_0x1d93('0x13'),QUERY),{'type':dbH['sequelize'][_0x1d93('0x14')][_0x1d93('0x15')]});})[_0x1d93('0xe')](function(_0x27999d){if(!_0x27999d[0x0][_0x1d93('0x16')]){return analyticExtractedReport(_0x1d93('0x17'));}var _0x14bb4f=[];var _0x1659e8=0x0;if(_0x57574e[_0x1d93('0xd')]){if(_0x27999d&&_0x27999d[_0x1d93('0x18')]){var _0x1527ed=_[_0x1d93('0x19')](_0x27999d[0x0][_0x1d93('0x16')]/_0x19999e);var _0x3ffd8c=Number[_0x1d93('0x1a')](_0x27999d[0x0][_0x1d93('0x16')]/_0x19999e)?_0x27999d[0x0]['num']%_0x19999e:0x0;_0x1527ed[_0x1d93('0x1b')](function(_0x20b099){if(_0x20b099>0x0){_0x1659e8+=_0x19999e;}_0x14bb4f[_0x1d93('0x1c')](dbH[_0x1d93('0x10')][_0x1d93('0x11')](util[_0x1d93('0x12')](_0x1d93('0x1d'),QUERY,_0x19999e,_0x1659e8),{'type':dbH[_0x1d93('0x10')][_0x1d93('0x14')][_0x1d93('0x15')]}));});if(_0x3ffd8c>0x0){_0x1659e8+=_0x19999e;_0x14bb4f[_0x1d93('0x1c')](dbH[_0x1d93('0x10')][_0x1d93('0x11')](util[_0x1d93('0x12')](_0x1d93('0x1d'),QUERY,_0x3ffd8c,_0x1659e8),{'type':dbH['sequelize'][_0x1d93('0x14')][_0x1d93('0x15')]}));}}}else{_0x14bb4f[_0x1d93('0x1c')](dbH['sequelize'][_0x1d93('0x11')](QUERY,{'type':dbH[_0x1d93('0x10')]['QueryTypes'][_0x1d93('0x15')]}));}var _0x1b7367=path[_0x1d93('0x1e')](PATH);var _0x6473f0=path[_0x1d93('0x1f')](PATH,'.csv');var _0x16e76a=_0x57574e[_0x1d93('0xd')]&&_0x14bb4f[_0x1d93('0x18')]>0x1;var _0x1262fd=[];if(!fs[_0x1d93('0x20')](path[_0x1d93('0x21')](_0x1b7367,_0x6473f0))&&_0x16e76a){fs[_0x1d93('0x22')](path[_0x1d93('0x21')](_0x1b7367,_0x6473f0));}return BPromise[_0x1d93('0x23')](_0x14bb4f,function(_0x17837e){_0x1262fd[_0x1d93('0x1c')](_0x17837e);})[_0x1d93('0xe')](function(){for(var _0x1a38cb=0x0;_0x1a38cb<_0x1262fd[_0x1d93('0x18')];_0x1a38cb+=0x1){var _0x27f8dd;var _0x1cae2c=_0x1262fd[_0x1a38cb];if(_0x16e76a){_0x27f8dd=path[_0x1d93('0x21')](_0x1b7367,_0x6473f0,util['format'](_0x1d93('0x24'),_0x6473f0,_0x1a38cb,_0x1d93('0x25')));}else{_0x27f8dd=path[_0x1d93('0x21')](_0x1b7367,util['format'](_0x1d93('0x26'),_0x6473f0,_0x1d93('0x25')));}fs['writeFileSync'](_0x27f8dd,csv(_0x1cae2c));}})[_0x1d93('0xe')](function(){if(_0x16e76a){return new Promise(function(_0x1264d9){zipdir(path['join'](_0x1b7367,_0x6473f0),{'saveTo':path['join'](_0x1b7367,util['format'](_0x1d93('0x26'),_0x6473f0,'zip'))},function(_0x491b25,_0x2b7504){rimraf(path[_0x1d93('0x21')](_0x1b7367,_0x6473f0),function(){});_0x1264d9(_0x1d93('0x27'));});});}})[_0x1d93('0xe')](function(){logger[_0x1d93('0xa')](util[_0x1d93('0x12')](_0x1d93('0x28'),EXTRACTED_REPORT_ID,_0x1d93('0xc')));return analyticExtractedReport(_0x1d93('0x29'),_0x16e76a?util[_0x1d93('0x12')](_0x1d93('0x26'),_0x6473f0,_0x16e76a?_0x1d93('0x2a'):_0x1d93('0x25')):null);});})[_0x1d93('0x2b')](function(_0x1d50c4){logger[_0x1d93('0xa')](util[_0x1d93('0x12')](_0x1d93('0x2c'),EXTRACTED_REPORT_ID,_0x1d93('0xc')),util[_0x1d93('0x2d')](_0x1d50c4,{'showHidden':![],'depth':null}));EXIT_CODE=0x1;return analyticExtractedReport('Failed');})[_0x1d93('0x2e')](function(){process['exit'](EXIT_CODE);});}main();
\ No newline at end of file
+var _0x1339=['exit','lodash','to-csv','bluebird','zip-dir','rimraf','../../mysqldb','dbH','analytics','argv','savename','AnalyticExtractedReport','update','info','Start\x20extraction\x20report\x20with\x20id\x20%d\x20in\x20%s\x20format','CSV','Setting','find','split','splitSizeCsv','query','SELECT\x20count(*)\x20as\x20num\x20FROM\x20(%s)\x20t','sequelize','QueryTypes','SELECT','then','Empty','length','num','push','format','basename','join','each','csv','%s.%s','zip','Extraction\x20report\x20with\x20id\x20%d\x20in\x20%s\x20format\x20completed','Completed','inspect','Failed'];(function(_0x4a744c,_0x2f2b66){var _0x1cc4c4=function(_0x2e1cf3){while(--_0x2e1cf3){_0x4a744c['push'](_0x4a744c['shift']());}};_0x1cc4c4(++_0x2f2b66);}(_0x1339,0x1ed));var _0x9133=function(_0x5886ff,_0x5bf15a){_0x5886ff=_0x5886ff-0x0;var _0x13429a=_0x1339[_0x5886ff];return _0x13429a;};'use strict';var util=require('util');var path=require('path');var _=require(_0x9133('0x0'));var csv=require(_0x9133('0x1'));var fs=require('fs');var BPromise=require(_0x9133('0x2'));var zipdir=require(_0x9133('0x3'));var rimraf=require(_0x9133('0x4'));var db=require(_0x9133('0x5'))['db'];var dbH=require(_0x9133('0x5'))[_0x9133('0x6')];var logger=require('../../config/logger')(_0x9133('0x7'));var EXTRACTED_REPORT_ID=Number(process[_0x9133('0x8')][0x2]);var QUERY=process[_0x9133('0x8')][0x3];var PATH=process['argv'][0x4];var EXIT_CODE=0x0;function analyticExtractedReport(_0x2758e2,_0x334dcd){var _0x3059c4={'status':_0x2758e2};var _0x431a55={'where':{'id':EXTRACTED_REPORT_ID}};if(_0x334dcd){_0x3059c4[_0x9133('0x9')]=_0x334dcd;}return db[_0x9133('0xa')][_0x9133('0xb')](_0x3059c4,_0x431a55);}function main(){var _0x245134=0x1388;var _0x10a9e4;logger[_0x9133('0xc')](util['format'](_0x9133('0xd'),EXTRACTED_REPORT_ID,_0x9133('0xe')));return db[_0x9133('0xf')][_0x9133('0x10')]({'where':{'id':0x1},'raw':!![],'attributes':['id',_0x9133('0x11'),_0x9133('0x12')]})['then'](function(_0xb64550){if(_0xb64550){_0x10a9e4=_0xb64550;_0x245134=_0x10a9e4[_0x9133('0x12')]||0x1388;}})['then'](function(){return dbH['sequelize'][_0x9133('0x13')](util['format'](_0x9133('0x14'),QUERY),{'type':dbH[_0x9133('0x15')][_0x9133('0x16')][_0x9133('0x17')]});})[_0x9133('0x18')](function(_0x4327b3){if(!_0x4327b3[0x0]['num']){return analyticExtractedReport(_0x9133('0x19'));}var _0x1e23ce=[];var _0x4f4f14=0x0;var _0x28ffcb=!![];if(_0x4327b3&&_0x4327b3[_0x9133('0x1a')]){var _0x3b39ec=_0x4327b3[0x0][_0x9133('0x1b')]%(_0x4f4f14+_0x245134);if(_0x10a9e4['split']){for(;_0x28ffcb;_0x4f4f14+=_0x245134,_0x3b39ec=_0x4327b3[0x0][_0x9133('0x1b')]%(_0x4f4f14+_0x245134)){if(_0x3b39ec==0x0||_0x3b39ec==_0x4327b3[0x0]['num']){_0x28ffcb=![];}_0x1e23ce[_0x9133('0x1c')](dbH['sequelize'][_0x9133('0x13')](util[_0x9133('0x1d')]('%s\x20limit\x20%d\x20OFFSET\x20%d',QUERY,_0x245134,_0x4f4f14),{'type':dbH[_0x9133('0x15')]['QueryTypes'][_0x9133('0x17')]}));}}else{_0x1e23ce['push'](dbH['sequelize'][_0x9133('0x13')](QUERY,{'type':dbH['sequelize'][_0x9133('0x16')]['SELECT']}));}}var _0x5d4608=path['dirname'](PATH);var _0x2e99a1=path[_0x9133('0x1e')](PATH,'.csv');var _0x448f8b=_0x10a9e4[_0x9133('0x11')]&&_0x1e23ce[_0x9133('0x1a')]>0x1;var _0x26190c=[];if(!fs['existsSync'](path[_0x9133('0x1f')](_0x5d4608,_0x2e99a1))&&_0x448f8b){fs['mkdirSync'](path[_0x9133('0x1f')](_0x5d4608,_0x2e99a1));}return BPromise[_0x9133('0x20')](_0x1e23ce,function(_0x3f278d){_0x26190c[_0x9133('0x1c')](_0x3f278d);})[_0x9133('0x18')](function(){for(var _0xe829b=0x0;_0xe829b<_0x26190c[_0x9133('0x1a')];_0xe829b+=0x1){var _0x313d43;var _0x1b6b3e=_0x26190c[_0xe829b];if(_0x448f8b){_0x313d43=path[_0x9133('0x1f')](_0x5d4608,_0x2e99a1,util['format']('%s%d.%s',_0x2e99a1,_0xe829b,_0x9133('0x21')));}else{_0x313d43=path[_0x9133('0x1f')](_0x5d4608,util[_0x9133('0x1d')](_0x9133('0x22'),_0x2e99a1,'csv'));}fs['writeFileSync'](_0x313d43,csv(_0x1b6b3e));}})[_0x9133('0x18')](function(){if(_0x448f8b){zipdir(path[_0x9133('0x1f')](_0x5d4608,_0x2e99a1),{'saveTo':path[_0x9133('0x1f')](_0x5d4608,util[_0x9133('0x1d')](_0x9133('0x22'),_0x2e99a1,_0x9133('0x23')))},function(_0x48c713,_0x58afe0){});rimraf(path['join'](_0x5d4608,_0x2e99a1),function(){});}})[_0x9133('0x18')](function(){logger['info'](util[_0x9133('0x1d')](_0x9133('0x24'),EXTRACTED_REPORT_ID,'CSV'));return analyticExtractedReport(_0x9133('0x25'),_0x448f8b?util['format'](_0x9133('0x22'),_0x2e99a1,_0x448f8b?_0x9133('0x23'):_0x9133('0x21')):null);});})['catch'](function(_0x32e95a){logger[_0x9133('0xc')](util[_0x9133('0x1d')]('Error\x20during\x20extraction\x20report\x20with\x20id\x20%d\x20in\x20%s\x20format',EXTRACTED_REPORT_ID,_0x9133('0xe')),util[_0x9133('0x26')](_0x32e95a,{'showHidden':![],'depth':null}));EXIT_CODE=0x1;return analyticExtractedReport(_0x9133('0x27'));})['finally'](function(){process[_0x9133('0x28')](EXIT_CODE);});}main();
\ No newline at end of file
index aca49e1..e3b6185 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa872=['map','pick','value','fill','length','auto','body','push','chunk','keys','Name:\x20%s\x0aReport:\x20%s\x0aFrom:\x20%s\x20To:\x20%s','name','format','endDate','header','before','landscape','toString','\x20/\x20','footer','black','num','Empty','split','splitSizePdf','then','range','forEach','query','%s\x20limit\x20%d\x20OFFSET\x20%d','sequelize','QueryTypes','SELECT','dirname','.pdf','existsSync','join','mkdirSync','each','flatten','createPdfKitDocument','%s%d.%s','pdf','%s.%s','zip\x20finished','info','Extraction\x20report\x20with\x20id\x20%d\x20in\x20%s\x20format\x20completed','zip','PDF','findOne','SELECT\x20count(*)\x20as\x20num\x20FROM\x20(%s)\x20t','catch','Error\x20during\x20extraction\x20report\x20with\x20id\x20%d\x20in\x20%s\x20format','Failed','finally','exit','/fonts/arial-regular.ttf','/fonts/arial-bold-italic.ttf','%s\x20#%d','channel','center','Interaction\x20Transcript','\x09\x09XCALLY\x20Motion\x20-\x20%s\x09\x09\x09\x09%d/%d\x09\x09\x09\x09%s','pipe','finish','error','end','lodash','util','path','moment','html-to-pdfmake','zip-dir','rimraf','bluebird','../../mysqldb','dbH','../../config/logger','analytics','argv','MMMM\x20Do\x20YYYY,\x20h:mm:ss\x20a','savename'];(function(_0x21ef8d,_0x56fbfe){var _0x395b69=function(_0x4d7fbc){while(--_0x4d7fbc){_0x21ef8d['push'](_0x21ef8d['shift']());}};_0x395b69(++_0x56fbfe);}(_0xa872,0x1dd));var _0x2a87=function(_0x204a83,_0x794714){_0x204a83=_0x204a83-0x0;var _0x205a5e=_0xa872[_0x204a83];return _0x205a5e;};'use strict';var _=require(_0x2a87('0x0'));var fs=require('fs');var util=require(_0x2a87('0x1'));var path=require(_0x2a87('0x2'));var moment=require(_0x2a87('0x3'));var htmlToPdfmake=require(_0x2a87('0x4'));var PdfPrinter=require('pdfmake/src/printer');var zipdir=require(_0x2a87('0x5'));var rimraf=require(_0x2a87('0x6'));var JSDOM=require('jsdom')['JSDOM'];var window=new JSDOM('')['window'];var BPromise=require(_0x2a87('0x7'));var db=require(_0x2a87('0x8'))['db'];var dbH=require('../../mysqldb')[_0x2a87('0x9')];var logger=require(_0x2a87('0xa'))(_0x2a87('0xb'));var EXTRACTED_REPORT_ID=Number(process[_0x2a87('0xc')][0x2]);var QUERY=process[_0x2a87('0xc')][0x3];var PATH=process[_0x2a87('0xc')][0x4];var NAME=process[_0x2a87('0xc')][0x5];var FORMAT=_0x2a87('0xd');var EXTRACTED_REPORT;var EXIT_CODE=0x0;function analyticExtractedReport(_0x35c5ac,_0x613e78){var _0x1523a8={'status':_0x35c5ac};var _0x2e326e={'where':{'id':EXTRACTED_REPORT_ID}};if(_0x613e78){_0x1523a8[_0x2a87('0xe')]=_0x613e78;}return db['AnalyticExtractedReport']['update'](_0x1523a8,_0x2e326e);}function getHeaders(_0x13e5e9){return _[_0x2a87('0xf')](_0x13e5e9,function(_0x9ea60e){return{'text':_0x9ea60e,'style':'tableHeader'};});}function getRows(_0x3da3c8,_0x4628cc){return _['map'](_0x4628cc,function(_0x16ab99){return _(_0x16ab99)[_0x2a87('0x10')](_0x3da3c8)[_0x2a87('0xf')](function(_0x5b00b5){return _0x5b00b5?_['toString'](_0x5b00b5):'';})[_0x2a87('0x11')]();});}function createTable(_0x4e8eed,_0xa01bb5){var _0xa6eb31={'widths':_[_0x2a87('0x12')](Array(_0x4e8eed[_0x2a87('0x13')]),0x91),'heights':function(_0x37591f){return _0x37591f===0x0?_0x2a87('0x14'):0x32;},'dontBreakRows':!![],'headerRows':0x1,'body':[]};var _0x5db40e=getHeaders(_0x4e8eed);_0xa6eb31[_0x2a87('0x15')][_0x2a87('0x16')](_0x5db40e);var _0x2e2992=getRows(_0x4e8eed,_0xa01bb5);_0xa6eb31[_0x2a87('0x15')]=_0xa6eb31[_0x2a87('0x15')]['concat'](_0x2e2992);return _0xa6eb31;}function createTables(_0x435350){var _0x2fa677=[];var _0x460152=_[_0x2a87('0x17')](Object[_0x2a87('0x18')](_0x435350[0x0]),0x5);_0x460152['forEach'](function(_0x3dd788){_0x2fa677[_0x2a87('0x16')](createTable(_0x3dd788,_0x435350));});return _0x2fa677;}function getPDFDocDefinition(_0x3979e9){var _0x28747d=util['format'](_0x2a87('0x19'),NAME,EXTRACTED_REPORT[_0x2a87('0x1a')],moment(EXTRACTED_REPORT['startDate'])[_0x2a87('0x1b')](FORMAT),moment(EXTRACTED_REPORT[_0x2a87('0x1c')])[_0x2a87('0x1b')](FORMAT));var _0x521915=[];for(var _0x4d9156=0x0;_0x4d9156<_0x3979e9[_0x2a87('0x13')];_0x4d9156++){var _0x57529d=[];if(_0x4d9156===0x0){_0x57529d[_0x2a87('0x16')]({'text':_0x28747d,'style':_0x2a87('0x1d')});}var _0x2e5151={'table':_0x3979e9[_0x4d9156]};if(_0x4d9156>0x0){_0x2e5151['pageBreak']=_0x2a87('0x1e');_0x2e5151['margin']=[0x0,0x46,0x0,0x0];}_0x57529d[_0x2a87('0x16')](_0x2e5151);_0x521915['push'](_0x57529d);}return{'pageSize':'A4','pageOrientation':_0x2a87('0x1f'),'content':_0x521915,'footer':function(_0x482c92,_0x14a34b){return{'text':_0x482c92[_0x2a87('0x20')]()+_0x2a87('0x21')+_0x14a34b,'style':_0x2a87('0x22')};},'defaultStyle':{'font':'Arial'},'styles':{'header':{'fontSize':0x12,'bold':!![],'margin':[0x0,0x0,0x0,0xa]},'tableHeader':{'bold':!![],'fontSize':0xd,'color':_0x2a87('0x23')},'footer':{'alignment':'right','margin':[0x0,0x0,0x28,0x0]}}};}function extractReport(_0x5da230){var _0x1b5daf=0x1388;var _0x61ae16;if(!_0x5da230[0x0][_0x2a87('0x24')]){return analyticExtractedReport(_0x2a87('0x25'));}return db['Setting']['find']({'where':{'id':0x1},'raw':!![],'attributes':['id',_0x2a87('0x26'),_0x2a87('0x27')]})[_0x2a87('0x28')](function(_0x282e81){if(_0x282e81){_0x61ae16=_0x282e81;_0x1b5daf=_0x61ae16[_0x2a87('0x27')]||0x3e8;}})['then'](function(){var _0x5b15d8=[];var _0x21130d=0x0;if(_0x61ae16['split']){if(_0x5da230&&_0x5da230['length']){var _0x5bb903=_[_0x2a87('0x29')](_0x5da230[0x0]['num']/_0x1b5daf);var _0x8d3ca4=Number['isInteger'](_0x5da230[0x0][_0x2a87('0x24')]/_0x1b5daf)?_0x5da230[0x0][_0x2a87('0x24')]%_0x1b5daf:0x0;_0x5bb903[_0x2a87('0x2a')](function(_0x35c848){if(_0x35c848>0x0){_0x21130d+=_0x1b5daf;}_0x5b15d8[_0x2a87('0x16')](dbH['sequelize'][_0x2a87('0x2b')](util['format'](_0x2a87('0x2c'),QUERY,_0x1b5daf,_0x21130d),{'type':dbH[_0x2a87('0x2d')][_0x2a87('0x2e')]['SELECT']}));});if(_0x8d3ca4>0x0){_0x21130d+=_0x1b5daf;_0x5b15d8[_0x2a87('0x16')](dbH[_0x2a87('0x2d')]['query'](util['format']('%s\x20limit\x20%d\x20OFFSET\x20%d',QUERY,_0x8d3ca4,_0x21130d),{'type':dbH[_0x2a87('0x2d')][_0x2a87('0x2e')][_0x2a87('0x2f')]}));}}}else{_0x5b15d8[_0x2a87('0x16')](dbH[_0x2a87('0x2d')][_0x2a87('0x2b')](QUERY,{'type':dbH['sequelize'][_0x2a87('0x2e')][_0x2a87('0x2f')]}));}var _0x214ec0=path[_0x2a87('0x30')](PATH);var _0x1b18bc=path['basename'](PATH,_0x2a87('0x31'));var _0x55962f=_0x61ae16[_0x2a87('0x26')]&&_0x5b15d8[_0x2a87('0x13')]>0x1;var _0x1babe0=[];if(!fs[_0x2a87('0x32')](path[_0x2a87('0x33')](_0x214ec0,_0x1b18bc))&&_0x55962f){fs[_0x2a87('0x34')](path['join'](_0x214ec0,_0x1b18bc));}return BPromise[_0x2a87('0x35')](_0x5b15d8,function(_0x22cec0){_0x1babe0['push'](_0x22cec0);})[_0x2a87('0x28')](function(){var _0x5da675=[];for(var _0x23ec78=0x0;_0x23ec78<_0x1babe0[_0x2a87('0x13')];_0x23ec78+=0x1){var _0x1d29c2=_0x1babe0[_0x23ec78];var _0x2a510e=createTables(_[_0x2a87('0x36')](_0x1d29c2));var _0x520607;var _0x5d378f=getPDFDocDefinition(_0x2a510e);var _0x12cd76=getPDFPrinter();var _0x2d91fe=_0x12cd76[_0x2a87('0x37')](_0x5d378f);if(_0x55962f){_0x520607=path[_0x2a87('0x33')](_0x214ec0,_0x1b18bc,util[_0x2a87('0x1b')](_0x2a87('0x38'),_0x1b18bc,_0x23ec78,_0x2a87('0x39')));}else{_0x520607=path[_0x2a87('0x33')](_0x214ec0,util[_0x2a87('0x1b')](_0x2a87('0x3a'),_0x1b18bc,_0x2a87('0x39')));}_0x5da675['push'](writePDFDocument(_0x2d91fe,_0x520607));}return Promise['all'](_0x5da675);})[_0x2a87('0x28')](function(){if(_0x55962f){return new Promise(function(_0x40aab6){zipdir(path[_0x2a87('0x33')](_0x214ec0,_0x1b18bc),{'saveTo':path[_0x2a87('0x33')](_0x214ec0,util[_0x2a87('0x1b')](_0x2a87('0x3a'),_0x1b18bc,'zip'))},function(){rimraf(path[_0x2a87('0x33')](_0x214ec0,_0x1b18bc),function(){});_0x40aab6(_0x2a87('0x3b'));});});}})[_0x2a87('0x28')](function(){if(!_0x55962f)return;rimraf(path[_0x2a87('0x33')](_0x214ec0,_0x1b18bc),function(){});})[_0x2a87('0x28')](function(){logger[_0x2a87('0x3c')](util[_0x2a87('0x1b')](_0x2a87('0x3d'),EXTRACTED_REPORT_ID,'PDF'));return analyticExtractedReport('Completed',_0x55962f?util[_0x2a87('0x1b')](_0x2a87('0x3a'),_0x1b18bc,_0x55962f?_0x2a87('0x3e'):'pdf'):null);});});}function main(){if(!EXTRACTED_REPORT_ID)return;logger['info'](util[_0x2a87('0x1b')]('Start\x20extraction\x20report\x20with\x20id\x20%d\x20in\x20%s\x20format',EXTRACTED_REPORT_ID,_0x2a87('0x3f')));return db['AnalyticExtractedReport'][_0x2a87('0x40')]({'where':{'id':EXTRACTED_REPORT_ID}})[_0x2a87('0x28')](function(_0x59c775){EXTRACTED_REPORT=_0x59c775;return dbH['sequelize'][_0x2a87('0x2b')](util[_0x2a87('0x1b')](_0x2a87('0x41'),QUERY),{'type':dbH[_0x2a87('0x2d')][_0x2a87('0x2e')]['SELECT']});})[_0x2a87('0x28')](extractReport)[_0x2a87('0x42')](function(_0x7d6931){logger['info'](util[_0x2a87('0x1b')](_0x2a87('0x43'),EXTRACTED_REPORT_ID,_0x2a87('0x3f')),util['inspect'](_0x7d6931,{'showHidden':![],'depth':null}));EXIT_CODE=0x1;return analyticExtractedReport(_0x2a87('0x44'));})[_0x2a87('0x45')](function(){process[_0x2a87('0x46')](EXIT_CODE);});}main();function getPDFPrinter(){var _0x3791ff=new PdfPrinter({'Arial':{'normal':__dirname+_0x2a87('0x47'),'bold':__dirname+'/fonts/arial-bold.ttf','italics':__dirname+'/fonts/arial-italic.ttf','bolditalics':__dirname+_0x2a87('0x48')}});return _0x3791ff;}function getPDFDocDefinitionFromHTML(_0x504d8b,_0x1692c1){var _0x4f46d5=util['format'](_0x2a87('0x49'),_0x1692c1[_0x2a87('0x4a')],_0x1692c1['interactionId']);var _0x42c530=moment()['format']('YYYY-MM-DD')['toString']();var _0x350f64=htmlToPdfmake(_0x504d8b,{'window':window,'tableAutoSize':!![]});return{'content':[_0x350f64],'defaultStyle':{'font':'Arial'},'styles':{'header':{'fontSize':0x12,'bold':!![],'alignment':'center','margin':[0xa,0xa,0xa,0xa]},'footer':{'fontSize':0x9,'alignment':_0x2a87('0x4b'),'margin':[0xa,0x14,0xa,0xa]},'textblock':{'fontSize':0xb},'textfield':{'bold':!![]},'messageContainer':{'fontSize':0xa},'messageInfo':{'bold':!![]},'interactionData':{'alignment':_0x2a87('0x4b')}},'header':function(){return[{'text':_0x2a87('0x4c'),'style':_0x2a87('0x1d')}];},'footer':function(_0x134fd1,_0x4df41c){return[{'text':util['format'](_0x2a87('0x4d'),_0x4f46d5,_0x134fd1,_0x4df41c,_0x42c530),'style':'footer'}];}};}function writePDFDocument(_0x588da5,_0x1b03d5){return new Promise(function(_0xb401f9,_0x2e2047){var _0x161788=_0x588da5[_0x2a87('0x4e')](fs['createWriteStream'](_0x1b03d5));_0x161788['on'](_0x2a87('0x4f'),function(){_0xb401f9('finish');});_0x161788['on'](_0x2a87('0x50'),function(_0x5ca96c){_0x2e2047(_0x5ca96c);});_0x588da5[_0x2a87('0x51')]();});}exports['createPdfFromHTML']=function(_0x3ccf84,_0x4768b0){var _0x2c7a55=getPDFPrinter();var _0x214601=getPDFDocDefinitionFromHTML(_0x3ccf84,_0x4768b0);var _0x13ebb3=_0x2c7a55[_0x2a87('0x37')](_0x214601);return writePDFDocument(_0x13ebb3,_0x4768b0[_0x2a87('0x2')])[_0x2a87('0x42')](function(_0x6a6652){throw _0x6a6652;});};
\ No newline at end of file
+var _0xadd7=['/fonts/arial-regular.ttf','/fonts/arial-bold.ttf','/fonts/arial-italic.ttf','/fonts/arial-bold-italic.ttf','channel','YYYY-MM-DD','center','\x09\x09XCALLY\x20Motion\x20-\x20%s\x09\x09\x09\x09%d/%d\x09\x09\x09\x09%s','finish','end','createPdfFromHTML','path','moment','pdfmake/src/printer','rimraf','jsdom','JSDOM','window','../../mysqldb','dbH','../../config/logger','analytics','argv','MMMM\x20Do\x20YYYY,\x20h:mm:ss\x20a','AnalyticExtractedReport','update','map','tableHeader','pick','toString','value','fill','length','body','push','keys','Name:\x20%s\x0aReport:\x20%s\x0aFrom:\x20%s\x20To:\x20%s','startDate','format','header','pageBreak','margin','landscape','\x20/\x20','footer','black','num','Empty','%s.%s','pdf','find','split','then','sequelize','query','%s\x20limit\x20%d\x20OFFSET\x20%d','QueryTypes','SELECT','join','all','flatten','%s%d.%s','Extraction\x20report\x20with\x20id\x20%d\x20in\x20%s\x20format\x20completed','CSV','Completed','zip','info','Start\x20extraction\x20report\x20with\x20id\x20%d\x20in\x20%s\x20format','PDF','SELECT\x20count(*)\x20as\x20num\x20FROM\x20(%s)\x20t','catch','inspect','Failed','finally'];(function(_0x122ef9,_0x451d2a){var _0x42fba0=function(_0x17c9d3){while(--_0x17c9d3){_0x122ef9['push'](_0x122ef9['shift']());}};_0x42fba0(++_0x451d2a);}(_0xadd7,0x9f));var _0x7add=function(_0x321bb2,_0x202794){_0x321bb2=_0x321bb2-0x0;var _0x9c12ed=_0xadd7[_0x321bb2];return _0x9c12ed;};'use strict';var _=require('lodash');var fs=require('fs');var util=require('util');var path=require(_0x7add('0x0'));var moment=require(_0x7add('0x1'));var htmlToPdfmake=require('html-to-pdfmake');var PdfPrinter=require(_0x7add('0x2'));var zipdir=require('zip-dir');var rimraf=require(_0x7add('0x3'));var JSDOM=require(_0x7add('0x4'))[_0x7add('0x5')];var window=new JSDOM('')[_0x7add('0x6')];var db=require(_0x7add('0x7'))['db'];var dbH=require('../../mysqldb')[_0x7add('0x8')];var logger=require(_0x7add('0x9'))(_0x7add('0xa'));var EXTRACTED_REPORT_ID=Number(process[_0x7add('0xb')][0x2]);var QUERY=process[_0x7add('0xb')][0x3];var PATH=process[_0x7add('0xb')][0x4];var NAME=process['argv'][0x5];var FORMAT=_0x7add('0xc');var EXTRACTED_REPORT;var EXIT_CODE=0x0;function analyticExtractedReport(_0x3b16c3,_0x2cc503){var _0x316db4={'status':_0x3b16c3};var _0xa198ff={'where':{'id':EXTRACTED_REPORT_ID}};if(_0x2cc503){_0x316db4['savename']=_0x2cc503;}return db[_0x7add('0xd')][_0x7add('0xe')](_0x316db4,_0xa198ff);}function getHeaders(_0x1861f1){return _[_0x7add('0xf')](_0x1861f1,function(_0x1d084e){return{'text':_0x1d084e,'style':_0x7add('0x10')};});}function getRows(_0x49b363,_0x53ff24){return _[_0x7add('0xf')](_0x53ff24,function(_0x5ae429){return _(_0x5ae429)[_0x7add('0x11')](_0x49b363)[_0x7add('0xf')](function(_0x245318){return _0x245318?_[_0x7add('0x12')](_0x245318):'';})[_0x7add('0x13')]();});}function createTable(_0x32fff5,_0xfde84f){var _0x4fb85f={'widths':_[_0x7add('0x14')](Array(_0x32fff5[_0x7add('0x15')]),0x91),'heights':function(_0x160295){return _0x160295===0x0?'auto':0x32;},'dontBreakRows':!![],'headerRows':0x1,'body':[]};var _0x182bee=getHeaders(_0x32fff5);_0x4fb85f[_0x7add('0x16')][_0x7add('0x17')](_0x182bee);var _0xa735d=getRows(_0x32fff5,_0xfde84f);_0x4fb85f[_0x7add('0x16')]=_0x4fb85f[_0x7add('0x16')]['concat'](_0xa735d);return _0x4fb85f;}function createTables(_0x3c8252){var _0x331277=[];var _0x919117=_['chunk'](Object[_0x7add('0x18')](_0x3c8252[0x0]),0x5);_0x919117['forEach'](function(_0x5a398d){_0x331277[_0x7add('0x17')](createTable(_0x5a398d,_0x3c8252));});return _0x331277;}function getPDFDocDefinition(_0x1f32a8){var _0x3d9d68=util['format'](_0x7add('0x19'),NAME,EXTRACTED_REPORT['name'],moment(EXTRACTED_REPORT[_0x7add('0x1a')])[_0x7add('0x1b')](FORMAT),moment(EXTRACTED_REPORT['endDate'])['format'](FORMAT));var _0x38611a=[];for(var _0x34393c=0x0;_0x34393c<_0x1f32a8[_0x7add('0x15')];_0x34393c++){var _0xb7c9ae=[];if(_0x34393c===0x0){_0xb7c9ae[_0x7add('0x17')]({'text':_0x3d9d68,'style':_0x7add('0x1c')});}var _0x65459e={'table':_0x1f32a8[_0x34393c]};if(_0x34393c>0x0){_0x65459e[_0x7add('0x1d')]='before';_0x65459e[_0x7add('0x1e')]=[0x0,0x46,0x0,0x0];}_0xb7c9ae['push'](_0x65459e);_0x38611a['push'](_0xb7c9ae);}return{'pageSize':'A4','pageOrientation':_0x7add('0x1f'),'content':_0x38611a,'footer':function(_0x32db77,_0x4285bf){return{'text':_0x32db77[_0x7add('0x12')]()+_0x7add('0x20')+_0x4285bf,'style':_0x7add('0x21')};},'defaultStyle':{'font':'Arial'},'styles':{'header':{'fontSize':0x12,'bold':!![],'margin':[0x0,0x0,0x0,0xa]},'tableHeader':{'bold':!![],'fontSize':0xd,'color':_0x7add('0x22')},'footer':{'alignment':'right','margin':[0x0,0x0,0x28,0x0]}}};}function extractReport(_0x28b354){var _0x35b62c=0x1388;var _0x60a2b4;if(!_0x28b354[0x0][_0x7add('0x23')]){return analyticExtractedReport(_0x7add('0x24'));}var _0x1a842e=[];var _0x37542f=0x0;var _0x1a4320=!![];var _0x5b6cd6=path['dirname'](PATH);var _0x575e2f=path['basename'](PATH,'.pdf');var _0x5619e0=path['join'](_0x5b6cd6,util[_0x7add('0x1b')](_0x7add('0x25'),_0x575e2f,_0x7add('0x26')));var _0x4bc788=![];return db['Setting'][_0x7add('0x27')]({'where':{'id':0x1},'raw':!![],'attributes':['id',_0x7add('0x28'),'splitSizePdf']})[_0x7add('0x29')](function(_0x133dff){if(_0x133dff){_0x60a2b4=_0x133dff;_0x35b62c=_0x60a2b4['splitSizePdf']||0x3e8;}})[_0x7add('0x29')](function(){if(_0x28b354&&_0x28b354[_0x7add('0x15')]){var _0x5d4989=_0x28b354[0x0][_0x7add('0x23')]%(_0x37542f+_0x35b62c);if(_0x60a2b4[_0x7add('0x28')]){for(;_0x1a4320;_0x37542f+=_0x35b62c,_0x5d4989=_0x28b354[0x0][_0x7add('0x23')]%(_0x37542f+_0x35b62c)){if(_0x5d4989==0x0||_0x5d4989==_0x28b354[0x0][_0x7add('0x23')]){_0x1a4320=![];}_0x1a842e[_0x7add('0x17')](dbH[_0x7add('0x2a')][_0x7add('0x2b')](util[_0x7add('0x1b')](_0x7add('0x2c'),QUERY,_0x35b62c,_0x37542f),{'type':dbH[_0x7add('0x2a')]['QueryTypes']['SELECT']}));}}else{_0x1a842e[_0x7add('0x17')](dbH[_0x7add('0x2a')]['query'](QUERY,{'type':dbH['sequelize'][_0x7add('0x2d')][_0x7add('0x2e')]}));}}_0x4bc788=_0x60a2b4[_0x7add('0x28')]&&_0x1a842e[_0x7add('0x15')]>0x1;if(!fs['existsSync'](path[_0x7add('0x2f')](_0x5b6cd6,_0x575e2f))&&_0x4bc788){fs['mkdirSync'](path[_0x7add('0x2f')](_0x5b6cd6,_0x575e2f));}return Promise[_0x7add('0x30')](_0x1a842e);})[_0x7add('0x29')](function(_0x134840){return createTables(_[_0x7add('0x31')](_0x134840));})[_0x7add('0x29')](function(_0x4f799c){var _0x598d88=getPDFDocDefinition(_0x4f799c);var _0x1a7b36=getPDFPrinter();var _0x2c702c=_0x1a7b36['createPdfKitDocument'](_0x598d88);if(_0x4bc788)_0x5619e0=path['join'](_0x5b6cd6,_0x575e2f,util[_0x7add('0x1b')](_0x7add('0x32'),_0x575e2f,index,_0x7add('0x26')));return writePDFDocument(_0x2c702c,_0x5619e0);})[_0x7add('0x29')](function(){if(!_0x4bc788)return;zipdir(path[_0x7add('0x2f')](_0x5b6cd6,_0x575e2f),{'saveTo':path[_0x7add('0x2f')](_0x5b6cd6,util[_0x7add('0x1b')](_0x7add('0x25'),_0x575e2f,'zip'))},function(_0x2a137e){if(_0x2a137e)throw _0x2a137e;return;});})[_0x7add('0x29')](function(){if(!_0x4bc788)return;rimraf(path[_0x7add('0x2f')](_0x5b6cd6,_0x575e2f),function(){});})[_0x7add('0x29')](function(){logger['info'](util[_0x7add('0x1b')](_0x7add('0x33'),EXTRACTED_REPORT_ID,_0x7add('0x34')));return analyticExtractedReport(_0x7add('0x35'),_0x4bc788?util[_0x7add('0x1b')](_0x7add('0x25'),_0x575e2f,_0x4bc788?_0x7add('0x36'):_0x7add('0x26')):null);});}function main(){if(!EXTRACTED_REPORT_ID)return;logger[_0x7add('0x37')](util[_0x7add('0x1b')](_0x7add('0x38'),EXTRACTED_REPORT_ID,_0x7add('0x39')));return db[_0x7add('0xd')]['findOne']({'where':{'id':EXTRACTED_REPORT_ID}})['then'](function(_0x12d11e){EXTRACTED_REPORT=_0x12d11e;return dbH[_0x7add('0x2a')][_0x7add('0x2b')](util[_0x7add('0x1b')](_0x7add('0x3a'),QUERY),{'type':dbH['sequelize']['QueryTypes'][_0x7add('0x2e')]});})['then'](extractReport)[_0x7add('0x3b')](function(_0x28f6eb){logger[_0x7add('0x37')](util['format']('Error\x20during\x20extraction\x20report\x20with\x20id\x20%d\x20in\x20%s\x20format',EXTRACTED_REPORT_ID,_0x7add('0x39')),util[_0x7add('0x3c')](_0x28f6eb,{'showHidden':![],'depth':null}));EXIT_CODE=0x1;return analyticExtractedReport(_0x7add('0x3d'));})[_0x7add('0x3e')](function(){process['exit'](EXIT_CODE);});}main();function getPDFPrinter(){var _0x2b2614=new PdfPrinter({'Arial':{'normal':__dirname+_0x7add('0x3f'),'bold':__dirname+_0x7add('0x40'),'italics':__dirname+_0x7add('0x41'),'bolditalics':__dirname+_0x7add('0x42')}});return _0x2b2614;}function getPDFDocDefinitionFromHTML(_0x488250,_0x21bfa1){var _0x287ea5=util[_0x7add('0x1b')]('%s\x20#%d',_0x21bfa1[_0x7add('0x43')],_0x21bfa1['interactionId']);var _0x23f68f=moment()['format'](_0x7add('0x44'))[_0x7add('0x12')]();var _0x2da5ae=htmlToPdfmake(_0x488250,{'window':window,'tableAutoSize':!![]});return{'content':[_0x2da5ae],'defaultStyle':{'font':'Arial'},'styles':{'header':{'fontSize':0x12,'bold':!![],'alignment':_0x7add('0x45'),'margin':[0xa,0xa,0xa,0xa]},'footer':{'fontSize':0x9,'alignment':_0x7add('0x45'),'margin':[0xa,0x14,0xa,0xa]},'textblock':{'fontSize':0xb},'textfield':{'bold':!![]},'messageContainer':{'fontSize':0xa},'messageInfo':{'bold':!![]},'interactionData':{'alignment':_0x7add('0x45')}},'header':function(){return[{'text':'Interaction\x20Transcript','style':'header'}];},'footer':function(_0x2fb0ce,_0x3f0ee3){return[{'text':util['format'](_0x7add('0x46'),_0x287ea5,_0x2fb0ce,_0x3f0ee3,_0x23f68f),'style':_0x7add('0x21')}];}};}function writePDFDocument(_0x1eabc7,_0x1b05c7){return new Promise(function(_0x5d03d4,_0x5d5845){var _0x5dcd4e=_0x1eabc7['pipe'](fs['createWriteStream'](_0x1b05c7));_0x5dcd4e['on'](_0x7add('0x47'),function(){_0x5d03d4(_0x7add('0x47'));});_0x5dcd4e['on']('error',function(_0x35fc42){_0x5d5845(_0x35fc42);});_0x1eabc7[_0x7add('0x48')]();});}exports[_0x7add('0x49')]=function(_0x4bbae0,_0x19c7a5){var _0x414c31=getPDFPrinter();var _0x5ed694=getPDFDocDefinitionFromHTML(_0x4bbae0,_0x19c7a5);var _0x44fb35=_0x414c31['createPdfKitDocument'](_0x5ed694);return writePDFDocument(_0x44fb35,_0x19c7a5[_0x7add('0x0')])[_0x7add('0x3b')](function(_0x539318){throw _0x539318;});};
\ No newline at end of file
index 942dae3..7134732 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x37e9=['dirname','basename','join','mkdirSync','each','%s%d.%s','xlsx','%s.%s','writeFileSync','binary','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','Failed','finally','exit','util','path','lodash','json2xls','bluebird','zip-dir','rimraf','../../mysqldb','dbH','../../config/logger','analytics','argv','savename','AnalyticExtractedReport','info','format','Start\x20extraction\x20report\x20with\x20id\x20%d\x20in\x20%s\x20format','XLSX','Setting','then','sequelize','query','QueryTypes','SELECT','num','Empty','split','length','range','isInteger','forEach','push','%s\x20limit\x20%d\x20OFFSET\x20%d'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x37e9,0x1e7));var _0x937e=function(_0x39fd01,_0x1ce8c3){_0x39fd01=_0x39fd01-0x0;var _0x94d6d2=_0x37e9[_0x39fd01];return _0x94d6d2;};'use strict';var util=require(_0x937e('0x0'));var path=require(_0x937e('0x1'));var _=require(_0x937e('0x2'));var fs=require('fs');var json2xls=require(_0x937e('0x3'));var BPromise=require(_0x937e('0x4'));var zipdir=require(_0x937e('0x5'));var rimraf=require(_0x937e('0x6'));var db=require('../../mysqldb')['db'];var dbH=require(_0x937e('0x7'))[_0x937e('0x8')];var logger=require(_0x937e('0x9'))(_0x937e('0xa'));var EXTRACTED_REPORT_ID=Number(process[_0x937e('0xb')][0x2]);var QUERY=process[_0x937e('0xb')][0x3];var PATH=process['argv'][0x4];var EXIT_CODE=0x0;function analyticExtractedReport(_0x18940b,_0x647ec8){var _0x16d2d7={'status':_0x18940b};var _0x21d9ad={'where':{'id':EXTRACTED_REPORT_ID}};if(_0x647ec8){_0x16d2d7[_0x937e('0xc')]=_0x647ec8;}return db[_0x937e('0xd')]['update'](_0x16d2d7,_0x21d9ad);}function main(){var _0x4b9059=0x1388;var _0x359f09;logger[_0x937e('0xe')](util[_0x937e('0xf')](_0x937e('0x10'),EXTRACTED_REPORT_ID,_0x937e('0x11')));return db[_0x937e('0x12')]['find']({'where':{'id':0x1},'raw':!![],'attributes':['id','split','splitSizeXlsx']})[_0x937e('0x13')](function(_0x284f27){if(_0x284f27){_0x359f09=_0x284f27;_0x4b9059=_0x359f09['splitSizeXlsx']||0x1388;}})[_0x937e('0x13')](function(){return dbH[_0x937e('0x14')][_0x937e('0x15')](util[_0x937e('0xf')]('SELECT\x20count(*)\x20as\x20num\x20FROM\x20(%s)\x20t',QUERY),{'type':dbH[_0x937e('0x14')][_0x937e('0x16')][_0x937e('0x17')]});})[_0x937e('0x13')](function(_0x5ab042){if(!_0x5ab042[0x0][_0x937e('0x18')]){return analyticExtractedReport(_0x937e('0x19'));}var _0x4499a2=[];var _0xb22a10=0x0;if(_0x359f09[_0x937e('0x1a')]){if(_0x5ab042&&_0x5ab042[_0x937e('0x1b')]){var _0x14f5d7=_[_0x937e('0x1c')](_0x5ab042[0x0]['num']/_0x4b9059);var _0x5a1542=Number[_0x937e('0x1d')](_0x5ab042[0x0][_0x937e('0x18')]/_0x4b9059)?_0x5ab042[0x0][_0x937e('0x18')]%_0x4b9059:0x0;_0x14f5d7[_0x937e('0x1e')](function(_0x402e57){if(_0x402e57>0x0){_0xb22a10+=_0x4b9059;}_0x4499a2[_0x937e('0x1f')](dbH[_0x937e('0x14')][_0x937e('0x15')](util[_0x937e('0xf')]('%s\x20limit\x20%d\x20OFFSET\x20%d',QUERY,_0x4b9059,_0xb22a10),{'type':dbH[_0x937e('0x14')][_0x937e('0x16')]['SELECT']}));});if(_0x5a1542>0x0){_0xb22a10+=_0x4b9059;_0x4499a2['push'](dbH[_0x937e('0x14')][_0x937e('0x15')](util['format'](_0x937e('0x20'),QUERY,_0x5a1542,_0xb22a10),{'type':dbH['sequelize'][_0x937e('0x16')][_0x937e('0x17')]}));}}}else{_0x4499a2[_0x937e('0x1f')](dbH[_0x937e('0x14')][_0x937e('0x15')](QUERY,{'type':dbH['sequelize'][_0x937e('0x16')][_0x937e('0x17')]}));}var _0x35d24a=path[_0x937e('0x21')](PATH);var _0x41ab49=path[_0x937e('0x22')](PATH,'.xlsx');var _0x431f82=_0x359f09[_0x937e('0x1a')]&&_0x4499a2[_0x937e('0x1b')]>0x1;var _0x41ea93=[];if(!fs['existsSync'](path[_0x937e('0x23')](_0x35d24a,_0x41ab49))&&_0x431f82){fs[_0x937e('0x24')](path[_0x937e('0x23')](_0x35d24a,_0x41ab49));}return BPromise[_0x937e('0x25')](_0x4499a2,function(_0x303776){_0x41ea93['push'](_0x303776);})[_0x937e('0x13')](function(){for(var _0x380999=0x0;_0x380999<_0x41ea93['length'];_0x380999+=0x1){var _0x8ec885;var _0x369168=_0x41ea93[_0x380999];if(_0x431f82){_0x8ec885=path[_0x937e('0x23')](_0x35d24a,_0x41ab49,util['format'](_0x937e('0x26'),_0x41ab49,_0x380999,_0x937e('0x27')));}else{_0x8ec885=path[_0x937e('0x23')](_0x35d24a,util[_0x937e('0xf')](_0x937e('0x28'),_0x41ab49,_0x937e('0x27')));}fs[_0x937e('0x29')](_0x8ec885,json2xls(_0x369168),_0x937e('0x2a'));}})[_0x937e('0x13')](function(){if(_0x431f82){return new Promise(function(_0x3b8a9a){zipdir(path[_0x937e('0x23')](_0x35d24a,_0x41ab49),{'saveTo':path[_0x937e('0x23')](_0x35d24a,util[_0x937e('0xf')](_0x937e('0x28'),_0x41ab49,_0x937e('0x2b')))},function(_0x12df92,_0x5edde4){rimraf(path[_0x937e('0x23')](_0x35d24a,_0x41ab49),function(){});_0x3b8a9a(_0x937e('0x2c'));});});}})['then'](function(){logger['info'](util[_0x937e('0xf')](_0x937e('0x2d'),EXTRACTED_REPORT_ID,'XLSX'));return analyticExtractedReport('Completed',_0x431f82?util[_0x937e('0xf')](_0x937e('0x28'),_0x41ab49,_0x431f82?_0x937e('0x2b'):_0x937e('0x27')):null);});})[_0x937e('0x2e')](function(_0x13a726){logger['info'](util[_0x937e('0xf')](_0x937e('0x2f'),EXTRACTED_REPORT_ID,'XLSX'),util[_0x937e('0x30')](_0x13a726,{'showHidden':![],'depth':null}));EXIT_CODE=0x1;return analyticExtractedReport(_0x937e('0x31'));})[_0x937e('0x32')](function(){process[_0x937e('0x33')](EXIT_CODE);});}main();
\ No newline at end of file
+var _0x8636=['Extraction\x20report\x20with\x20id\x20%d\x20in\x20%s\x20format\x20completed','Completed','catch','Error\x20during\x20extraction\x20report\x20with\x20id\x20%d\x20in\x20%s\x20format','inspect','finally','exit','util','path','lodash','json2xls','bluebird','zip-dir','rimraf','../../mysqldb','analytics','argv','savename','AnalyticExtractedReport','update','info','format','Start\x20extraction\x20report\x20with\x20id\x20%d\x20in\x20%s\x20format','XLSX','Setting','find','splitSizeXlsx','then','sequelize','query','QueryTypes','SELECT','Empty','split','length','num','push','%s\x20limit\x20%d\x20OFFSET\x20%d','basename','.xlsx','existsSync','join','mkdirSync','each','%s%d.%s','xlsx','%s.%s','binary','zip'];(function(_0x54c734,_0xc5cf3a){var _0x6bdb37=function(_0x1cd617){while(--_0x1cd617){_0x54c734['push'](_0x54c734['shift']());}};_0x6bdb37(++_0xc5cf3a);}(_0x8636,0x1f1));var _0x6863=function(_0x2a5dc1,_0xc58ca4){_0x2a5dc1=_0x2a5dc1-0x0;var _0x244d63=_0x8636[_0x2a5dc1];return _0x244d63;};'use strict';var util=require(_0x6863('0x0'));var path=require(_0x6863('0x1'));var _=require(_0x6863('0x2'));var fs=require('fs');var json2xls=require(_0x6863('0x3'));var BPromise=require(_0x6863('0x4'));var zipdir=require(_0x6863('0x5'));var rimraf=require(_0x6863('0x6'));var db=require('../../mysqldb')['db'];var dbH=require(_0x6863('0x7'))['dbH'];var logger=require('../../config/logger')(_0x6863('0x8'));var EXTRACTED_REPORT_ID=Number(process[_0x6863('0x9')][0x2]);var QUERY=process['argv'][0x3];var PATH=process[_0x6863('0x9')][0x4];var EXIT_CODE=0x0;function analyticExtractedReport(_0x39b1a1,_0xc4341d){var _0x5f231e={'status':_0x39b1a1};var _0x3fb1c1={'where':{'id':EXTRACTED_REPORT_ID}};if(_0xc4341d){_0x5f231e[_0x6863('0xa')]=_0xc4341d;}return db[_0x6863('0xb')][_0x6863('0xc')](_0x5f231e,_0x3fb1c1);}function main(){var _0x590b39=0x1388;var _0x4a13dd;logger[_0x6863('0xd')](util[_0x6863('0xe')](_0x6863('0xf'),EXTRACTED_REPORT_ID,_0x6863('0x10')));return db[_0x6863('0x11')][_0x6863('0x12')]({'where':{'id':0x1},'raw':!![],'attributes':['id','split',_0x6863('0x13')]})['then'](function(_0x58b35f){if(_0x58b35f){_0x4a13dd=_0x58b35f;_0x590b39=_0x4a13dd['splitSizeXlsx']||0x1388;}})[_0x6863('0x14')](function(){return dbH[_0x6863('0x15')][_0x6863('0x16')](util[_0x6863('0xe')]('SELECT\x20count(*)\x20as\x20num\x20FROM\x20(%s)\x20t',QUERY),{'type':dbH[_0x6863('0x15')][_0x6863('0x17')][_0x6863('0x18')]});})[_0x6863('0x14')](function(_0x33467c){if(!_0x33467c[0x0]['num']){return analyticExtractedReport(_0x6863('0x19'));}var _0x4917ca=[];var _0xfb1414=0x0;var _0x337f7e=!![];if(_0x4a13dd[_0x6863('0x1a')]){if(_0x33467c&&_0x33467c[_0x6863('0x1b')]){var _0x2ce6db=_0x33467c[0x0][_0x6863('0x1c')]%(_0xfb1414+_0x590b39);for(;_0x337f7e;_0xfb1414+=_0x590b39,_0x2ce6db=_0x33467c[0x0][_0x6863('0x1c')]%(_0xfb1414+_0x590b39)){if(_0x2ce6db==0x0||_0x2ce6db==_0x33467c[0x0][_0x6863('0x1c')]){_0x337f7e=![];}_0x4917ca[_0x6863('0x1d')](dbH[_0x6863('0x15')][_0x6863('0x16')](util[_0x6863('0xe')](_0x6863('0x1e'),QUERY,_0x590b39,_0xfb1414),{'type':dbH['sequelize'][_0x6863('0x17')][_0x6863('0x18')]}));}}}else{_0x4917ca[_0x6863('0x1d')](dbH[_0x6863('0x15')][_0x6863('0x16')](QUERY,{'type':dbH['sequelize'][_0x6863('0x17')][_0x6863('0x18')]}));}var _0x8bac1c=path['dirname'](PATH);var _0x500200=path[_0x6863('0x1f')](PATH,_0x6863('0x20'));var _0x3753c1=_0x4a13dd[_0x6863('0x1a')]&&_0x4917ca[_0x6863('0x1b')]>0x1;var _0x1217ae=[];if(!fs[_0x6863('0x21')](path[_0x6863('0x22')](_0x8bac1c,_0x500200))&&_0x3753c1){fs[_0x6863('0x23')](path[_0x6863('0x22')](_0x8bac1c,_0x500200));}return BPromise[_0x6863('0x24')](_0x4917ca,function(_0x120f93){_0x1217ae[_0x6863('0x1d')](_0x120f93);})[_0x6863('0x14')](function(){for(var _0x812ae6=0x0;_0x812ae6<_0x1217ae['length'];_0x812ae6+=0x1){var _0x139ef6;var _0x40d85f=_0x1217ae[_0x812ae6];if(_0x3753c1){_0x139ef6=path[_0x6863('0x22')](_0x8bac1c,_0x500200,util[_0x6863('0xe')](_0x6863('0x25'),_0x500200,_0x812ae6,_0x6863('0x26')));}else{_0x139ef6=path[_0x6863('0x22')](_0x8bac1c,util[_0x6863('0xe')](_0x6863('0x27'),_0x500200,_0x6863('0x26')));}fs['writeFileSync'](_0x139ef6,json2xls(_0x40d85f),_0x6863('0x28'));}})['then'](function(){if(_0x3753c1){zipdir(path[_0x6863('0x22')](_0x8bac1c,_0x500200),{'saveTo':path[_0x6863('0x22')](_0x8bac1c,util['format'](_0x6863('0x27'),_0x500200,_0x6863('0x29')))},function(_0x45f189,_0x13d477){});rimraf(path[_0x6863('0x22')](_0x8bac1c,_0x500200),function(){});}})['then'](function(){logger[_0x6863('0xd')](util[_0x6863('0xe')](_0x6863('0x2a'),EXTRACTED_REPORT_ID,'XLSX'));return analyticExtractedReport(_0x6863('0x2b'),_0x3753c1?util[_0x6863('0xe')](_0x6863('0x27'),_0x500200,_0x3753c1?'zip':_0x6863('0x26')):null);});})[_0x6863('0x2c')](function(_0x17405f){logger[_0x6863('0xd')](util[_0x6863('0xe')](_0x6863('0x2d'),EXTRACTED_REPORT_ID,_0x6863('0x10')),util[_0x6863('0x2e')](_0x17405f,{'showHidden':![],'depth':null}));EXIT_CODE=0x1;return analyticExtractedReport('Failed');})[_0x6863('0x2f')](function(){process[_0x6863('0x30')](EXIT_CODE);});}main();
\ No newline at end of file
index 0570af1..7d6f8db 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3242=['inbound','CDR(routeid)=','VoiceExtensionId','extensions','Set','${EXTEN:','cutdigits','${EXTEN}','$[${LEN(${CDR(prefix)})}\x20>\x200]?Goto(','):Goto(','CDR(prefix)=noprefix','outboundrouteid=','recordingFormat','none','_XCALLY_MIXMONITOR_UNIQUEID=${UNIQUEID}','wav','XCALLY-MOTION-ANSWER=0','length','toLowerCase','createdAt','updatedAt','interval','tag','CDR(tag)=','callerID','$[${LEN(${PREFIX-CALLERIDALL})}\x20>\x200]?Set(CALLERID(all)=${PREFIX-CALLERIDALL}):Set(CALLERID(all)=','ExecIf','$[${LEN(${PREFIX-CALLERIDALL})}\x20>\x200]?Set(CALLERID(all)=${PREFIX-CALLERIDALL}):NoOp(No\x20number\x20available)','app','answer','$[${XCALLY-MOTION-ANSWER}=0]?Answer','XCALLY-MOTION-ANSWER=1','$[${XCALLY-MOTION-PROGRESS}=0]?Progress','XCALLY-MOTION-PROGRESS=1','GotoIfTime',',${EXTEN},','last','concat','transaction','destroy','bulkCreate','sortBy','catch','error','rewrite','lodash','util','Interval','then','intervals','models','VoiceExtension','findAll','IntervalId','uniq','map','CAST(priority\x20AS\x20UNSIGNED)','filter','groupBy','exten','queue','hasOwnProperty','priority','extension','push','format','CDR(type)=%s','type','context'];(function(_0x2757db,_0x464403){var _0x38e694=function(_0x387ee3){while(--_0x387ee3){_0x2757db['push'](_0x2757db['shift']());}};_0x38e694(++_0x464403);}(_0x3242,0x141));var _0x2324=function(_0x35f664,_0x489364){_0x35f664=_0x35f664-0x0;var _0x305f0c=_0x3242[_0x35f664];return _0x305f0c;};'use strict';var _=require(_0x2324('0x0'));var util=require(_0x2324('0x1'));function rewrite(_0x44b699,_0x4be63c){var _0x18f290=this;return _0x44b699['models'][_0x2324('0x2')]['findAll']({'raw':!![]})[_0x2324('0x3')](function(_0x3de136){_0x18f290[_0x2324('0x4')]=_0x3de136;return _0x44b699[_0x2324('0x5')][_0x2324('0x6')][_0x2324('0x7')]({'where':{'IntervalId':_0x4be63c[_0x2324('0x8')]},'raw':!![]});})[_0x2324('0x3')](function(_0x546d33){return _0x44b699[_0x2324('0x5')][_0x2324('0x6')][_0x2324('0x7')]({'where':{'exten':{'$in':_[_0x2324('0x9')](_[_0x2324('0xa')](_0x546d33,'exten'))}},'order':[{'raw':_0x2324('0xb')}],'raw':!![]});})[_0x2324('0x3')](function(_0x135532){var _0xd05205=_['filter'](_0x135532,{'priority':'1'});var _0x57bbf7=_[_0x2324('0xc')](_0x135532,{'isApp':0x1});var _0x1bf0ed=_[_0x2324('0xd')](_0x57bbf7,_0x2324('0xe'));var _0x161256=[_0x2324('0xf'),'playback'];var _0x3f23cf=[];var _0x59acb2=[];for(var _0x5c9a7 in _0x1bf0ed){if(_0x1bf0ed[_0x2324('0x10')](_0x5c9a7)){_0x18f290[_0x2324('0x11')]=0x2;_0x18f290['extensions']=[];_0x18f290[_0x2324('0x12')]=_['find'](_0xd05205,{'exten':_0x1bf0ed[_0x5c9a7][0x0]['exten']});_0x18f290['extensions'][_0x2324('0x13')]({'type':_0x1bf0ed[_0x5c9a7][0x0]['type'],'app':'Set','appdata':util[_0x2324('0x14')](_0x2324('0x15'),_0x1bf0ed[_0x5c9a7][0x0][_0x2324('0x16')]),'context':_0x1bf0ed[_0x5c9a7][0x0][_0x2324('0x17')],'exten':_0x1bf0ed[_0x5c9a7][0x0][_0x2324('0xe')],'priority':_0x18f290[_0x2324('0x11')]++,'VoiceExtensionId':_0x1bf0ed[_0x5c9a7][0x0]['VoiceExtensionId']});if(_0x1bf0ed[_0x5c9a7][0x0]['type']===_0x2324('0x18')){_0x18f290['extensions'][_0x2324('0x13')]({'type':_0x1bf0ed[_0x5c9a7][0x0][_0x2324('0x16')],'app':'Set','appdata':_0x2324('0x19')+_0x1bf0ed[_0x5c9a7][0x0][_0x2324('0x1a')],'context':_0x1bf0ed[_0x5c9a7][0x0][_0x2324('0x17')],'exten':_0x1bf0ed[_0x5c9a7][0x0][_0x2324('0xe')],'priority':_0x18f290[_0x2324('0x11')]++,'VoiceExtensionId':_0x1bf0ed[_0x5c9a7][0x0][_0x2324('0x1a')]});}else if(_0x1bf0ed[_0x5c9a7][0x0][_0x2324('0x16')]==='outbound'){if(_0x18f290[_0x2324('0x12')]){_0x18f290[_0x2324('0x1b')]['push']({'type':_0x1bf0ed[_0x5c9a7][0x0][_0x2324('0x16')],'app':_0x2324('0x1c'),'appdata':'CDR(destination)='+(_0x18f290[_0x2324('0x12')]['cutdigits']?_0x2324('0x1d')+_0x18f290[_0x2324('0x12')][_0x2324('0x1e')]+'}':_0x2324('0x1f')),'context':_0x1bf0ed[_0x5c9a7][0x0][_0x2324('0x17')],'exten':_0x1bf0ed[_0x5c9a7][0x0]['exten'],'priority':_0x18f290['priority']++,'VoiceExtensionId':_0x1bf0ed[_0x5c9a7][0x0][_0x2324('0x1a')]});}_0x18f290['extensions'][_0x2324('0x13')]({'type':_0x1bf0ed[_0x5c9a7][0x0][_0x2324('0x16')],'app':_0x2324('0x1c'),'appdata':_0x2324('0x19')+_0x1bf0ed[_0x5c9a7][0x0][_0x2324('0x1a')],'context':_0x1bf0ed[_0x5c9a7][0x0][_0x2324('0x17')],'exten':_0x1bf0ed[_0x5c9a7][0x0][_0x2324('0xe')],'priority':_0x18f290['priority']++,'VoiceExtensionId':_0x1bf0ed[_0x5c9a7][0x0][_0x2324('0x1a')]});var _0x10d0d1=_0x18f290['priority']++;_0x18f290[_0x2324('0x1b')]['push']({'type':_0x1bf0ed[_0x5c9a7][0x0][_0x2324('0x16')],'app':'ExecIf','appdata':_0x2324('0x20')+(_0x10d0d1+0x2)+_0x2324('0x21')+(_0x10d0d1+0x1)+')','context':_0x1bf0ed[_0x5c9a7][0x0][_0x2324('0x17')],'exten':_0x1bf0ed[_0x5c9a7][0x0][_0x2324('0xe')],'priority':_0x10d0d1,'VoiceExtensionId':_0x1bf0ed[_0x5c9a7][0x0]['VoiceExtensionId']});if(_0x18f290[_0x2324('0x12')]){_0x18f290[_0x2324('0x1b')][_0x2324('0x13')]({'type':_0x1bf0ed[_0x5c9a7][0x0][_0x2324('0x16')],'app':_0x2324('0x1c'),'appdata':_0x18f290[_0x2324('0x12')][_0x2324('0x1e')]?'CDR(prefix)=${EXTEN:0:'+_0x18f290[_0x2324('0x12')][_0x2324('0x1e')]+'}':_0x2324('0x22'),'context':_0x1bf0ed[_0x5c9a7][0x0][_0x2324('0x17')],'exten':_0x1bf0ed[_0x5c9a7][0x0][_0x2324('0xe')],'priority':_0x18f290[_0x2324('0x11')]++,'VoiceExtensionId':_0x1bf0ed[_0x5c9a7][0x0][_0x2324('0x1a')]});}_0x18f290['extensions']['push']({'type':_0x1bf0ed[_0x5c9a7][0x0][_0x2324('0x16')],'app':_0x2324('0x1c'),'appdata':_0x2324('0x23')+_0x1bf0ed[_0x5c9a7][0x0][_0x2324('0x1a')],'context':_0x1bf0ed[_0x5c9a7][0x0]['context'],'exten':_0x1bf0ed[_0x5c9a7][0x0][_0x2324('0xe')],'priority':_0x18f290['priority']++,'VoiceExtensionId':_0x1bf0ed[_0x5c9a7][0x0]['VoiceExtensionId']});if(_0x18f290[_0x2324('0x12')]&&_0x18f290[_0x2324('0x12')][_0x2324('0x10')](_0x2324('0x24'))&&_0x18f290[_0x2324('0x12')][_0x2324('0x24')]!==_0x2324('0x25')){_0x18f290[_0x2324('0x1b')][_0x2324('0x13')]({'type':_0x1bf0ed[_0x5c9a7][0x0][_0x2324('0x16')],'app':_0x2324('0x1c'),'appdata':_0x2324('0x26'),'context':_0x1bf0ed[_0x5c9a7][0x0][_0x2324('0x17')],'exten':_0x1bf0ed[_0x5c9a7][0x0][_0x2324('0xe')],'priority':_0x18f290['priority']++,'VoiceExtensionId':_0x1bf0ed[_0x5c9a7][0x0][_0x2324('0x1a')]});_0x18f290[_0x2324('0x1b')][_0x2324('0x13')]({'type':_0x1bf0ed[_0x5c9a7][0x0][_0x2324('0x16')],'app':_0x2324('0x1c'),'appdata':'_XCALLY_MIXMONITOR_FORMAT='+_0x18f290[_0x2324('0x12')]['recordingFormat']||_0x2324('0x27'),'context':_0x1bf0ed[_0x5c9a7][0x0][_0x2324('0x17')],'exten':_0x1bf0ed[_0x5c9a7][0x0][_0x2324('0xe')],'priority':_0x18f290[_0x2324('0x11')]++,'VoiceExtensionId':_0x1bf0ed[_0x5c9a7][0x0][_0x2324('0x1a')]});}}_0x18f290[_0x2324('0x1b')]['push']({'type':_0x1bf0ed[_0x5c9a7][0x0][_0x2324('0x16')],'app':_0x2324('0x1c'),'appdata':_0x2324('0x28'),'context':_0x1bf0ed[_0x5c9a7][0x0][_0x2324('0x17')],'exten':_0x1bf0ed[_0x5c9a7][0x0][_0x2324('0xe')],'priority':_0x18f290[_0x2324('0x11')]++,'VoiceExtensionId':_0x1bf0ed[_0x5c9a7][0x0][_0x2324('0x1a')]});_0x18f290[_0x2324('0x1b')][_0x2324('0x13')]({'type':_0x1bf0ed[_0x5c9a7][0x0][_0x2324('0x16')],'app':'Set','appdata':'XCALLY-MOTION-PROGRESS=0','context':_0x1bf0ed[_0x5c9a7][0x0][_0x2324('0x17')],'exten':_0x1bf0ed[_0x5c9a7][0x0]['exten'],'priority':_0x18f290[_0x2324('0x11')]++,'VoiceExtensionId':_0x1bf0ed[_0x5c9a7][0x0][_0x2324('0x1a')]});_0x18f290[_0x2324('0x1b')][_0x2324('0x13')]({'type':_0x1bf0ed[_0x5c9a7][0x0][_0x2324('0x16')],'app':_0x2324('0x1c'),'appdata':'MONITOR_OPTIONS=ab','context':_0x1bf0ed[_0x5c9a7][0x0][_0x2324('0x17')],'exten':_0x1bf0ed[_0x5c9a7][0x0][_0x2324('0xe')],'priority':_0x18f290[_0x2324('0x11')]++,'VoiceExtensionId':_0x1bf0ed[_0x5c9a7][0x0][_0x2324('0x1a')]});for(var _0x459ba7=0x0,_0x23b88e=0x0;_0x459ba7<_0x1bf0ed[_0x5c9a7][_0x2324('0x29')];_0x459ba7+=0x1,_0x23b88e=0x0){var _0x52dc1c=_0x1bf0ed[_0x5c9a7][_0x459ba7];if(_0x52dc1c['type']){_0x52dc1c[_0x2324('0x16')]=_0x52dc1c['type'][_0x2324('0x2a')]();}var _0x38acde=[];var _0x5dbbb0=[];delete _0x52dc1c['id'];delete _0x52dc1c[_0x2324('0x2b')];delete _0x52dc1c[_0x2324('0x2c')];var _0x42fc99=_0x52dc1c[_0x2324('0x2d')]!=='*,*,*,*'?[_0x52dc1c[_0x2324('0x2d')]]:_0x52dc1c[_0x2324('0x8')]?_[_0x2324('0xa')](_[_0x2324('0xc')](_0x18f290[_0x2324('0x4')],{'IntervalId':_0x52dc1c[_0x2324('0x8')]}),'interval'):[];if(_0x52dc1c[_0x2324('0x10')]('tag')){if(_0x52dc1c[_0x2324('0x2e')]&&_0x52dc1c[_0x2324('0x2e')]!=='--'){_0x38acde[_0x2324('0x13')]({'type':_0x52dc1c['type'],'app':_0x2324('0x1c'),'appdata':_0x2324('0x2f')+_0x52dc1c['tag'],'context':_0x52dc1c[_0x2324('0x17')],'exten':_0x52dc1c[_0x2324('0xe')],'priority':_0x42fc99[_0x2324('0x29')]+_0x18f290[_0x2324('0x11')]+_0x23b88e++,'VoiceExtensionId':_0x52dc1c[_0x2324('0x1a')]});}}if(_0x52dc1c[_0x2324('0x16')]==='outbound'&&_0x52dc1c[_0x2324('0x10')](_0x2324('0x30'))){if(_0x52dc1c['callerID']){_0x38acde[_0x2324('0x13')]({'type':_0x52dc1c[_0x2324('0x16')],'app':'ExecIf','appdata':_0x2324('0x31')+_0x52dc1c[_0x2324('0x30')]+')','context':_0x52dc1c['context'],'exten':_0x52dc1c[_0x2324('0xe')],'priority':_0x42fc99[_0x2324('0x29')]+_0x18f290[_0x2324('0x11')]+_0x23b88e++,'VoiceExtensionId':_0x52dc1c[_0x2324('0x1a')]});}else{_0x38acde[_0x2324('0x13')]({'type':_0x52dc1c[_0x2324('0x16')],'app':_0x2324('0x32'),'appdata':_0x2324('0x33'),'context':_0x52dc1c[_0x2324('0x17')],'exten':_0x52dc1c[_0x2324('0xe')],'priority':_0x42fc99['length']+_0x18f290[_0x2324('0x11')]+_0x23b88e++,'VoiceExtensionId':_0x52dc1c['VoiceExtensionId']});}}if(_0x52dc1c[_0x2324('0x10')]('answer')){if(_0x161256['indexOf'](_0x52dc1c[_0x2324('0x34')][_0x2324('0x2a')]())>=0x0&&_0x52dc1c['appType']!=='custom'){if(_0x52dc1c[_0x2324('0x35')]){_0x38acde[_0x2324('0x13')]({'type':_0x52dc1c['type'],'app':_0x2324('0x32'),'appdata':_0x2324('0x36'),'context':_0x52dc1c[_0x2324('0x17')],'exten':_0x52dc1c[_0x2324('0xe')],'priority':_0x42fc99[_0x2324('0x29')]+_0x18f290[_0x2324('0x11')]+_0x23b88e++,'VoiceExtensionId':_0x52dc1c[_0x2324('0x1a')]});_0x38acde[_0x2324('0x13')]({'type':_0x52dc1c['type'],'app':'Set','appdata':_0x2324('0x37'),'context':_0x52dc1c[_0x2324('0x17')],'exten':_0x52dc1c[_0x2324('0xe')],'priority':_0x42fc99['length']+_0x18f290['priority']+_0x23b88e++,'VoiceExtensionId':_0x52dc1c[_0x2324('0x1a')]});}else{_0x38acde[_0x2324('0x13')]({'type':_0x52dc1c['type'],'app':_0x2324('0x32'),'appdata':_0x2324('0x38'),'context':_0x52dc1c['context'],'exten':_0x52dc1c[_0x2324('0xe')],'priority':_0x42fc99[_0x2324('0x29')]+_0x18f290[_0x2324('0x11')]+_0x23b88e++,'VoiceExtensionId':_0x52dc1c[_0x2324('0x1a')]});_0x38acde[_0x2324('0x13')]({'type':_0x52dc1c[_0x2324('0x16')],'app':_0x2324('0x1c'),'appdata':_0x2324('0x39'),'context':_0x52dc1c['context'],'exten':_0x52dc1c[_0x2324('0xe')],'priority':_0x42fc99[_0x2324('0x29')]+_0x18f290[_0x2324('0x11')]+_0x23b88e++,'VoiceExtensionId':_0x52dc1c[_0x2324('0x1a')]});}}}for(var _0x23d342=0x0;_0x23d342<_0x42fc99[_0x2324('0x29')];_0x23d342+=0x1){var _0x1f7a20=_0x18f290[_0x2324('0x11')]+_0x42fc99[_0x2324('0x29')];var _0x2b8588=_0x23d342===_0x42fc99[_0x2324('0x29')]-0x1?_0x18f290[_0x2324('0x11')]+_0x38acde[_0x2324('0x29')]+_0x5dbbb0[_0x2324('0x29')]+0x2:_0x18f290['priority']+_0x23d342+0x1;_0x38acde['splice'](_0x23d342,0x0,{'type':_0x52dc1c[_0x2324('0x16')],'app':_0x2324('0x3a'),'appdata':_0x42fc99[_0x23d342]+'?'+_0x52dc1c[_0x2324('0x17')]+_0x2324('0x3b')+_0x1f7a20+':'+_0x52dc1c[_0x2324('0x17')]+',${EXTEN},'+_0x2b8588,'exten':_0x52dc1c[_0x2324('0xe')],'context':_0x52dc1c['context'],'priority':_0x18f290[_0x2324('0x11')]+_0x23d342,'VoiceExtensionId':_0x1bf0ed[_0x5c9a7][0x0][_0x2324('0x1a')]});}_0x52dc1c['priority']=_0x38acde[_0x2324('0x29')]?_[_0x2324('0x3c')](_0x38acde)[_0x2324('0x11')]+0x1:_0x18f290['priority'];_0x18f290['priority']=(_0x5dbbb0[_0x2324('0x29')]?_['last'](_0x5dbbb0)['priority']:_0x52dc1c['priority'])+0x1;_0x18f290[_0x2324('0x1b')]=_[_0x2324('0x3d')](_0x18f290['extensions'],_0x38acde,[_0x52dc1c],_0x5dbbb0);}_0x18f290[_0x2324('0x1b')][_0x2324('0x13')]({'type':_0x1bf0ed[_0x5c9a7][0x0][_0x2324('0x16')],'app':'Hangup','exten':_0x1bf0ed[_0x5c9a7][0x0]['exten'],'context':_0x1bf0ed[_0x5c9a7][0x0][_0x2324('0x17')],'priority':_0x18f290[_0x2324('0x11')],'VoiceExtensionId':_0x1bf0ed[_0x5c9a7][0x0][_0x2324('0x1a')]});_0x3f23cf[_0x2324('0x13')](_0x1bf0ed[_0x5c9a7][0x0]['VoiceExtensionId']);_0x59acb2=_[_0x2324('0x3d')](_0x59acb2,_0x18f290[_0x2324('0x1b')]);}}return _0x44b699[_0x2324('0x3e')](function(_0x18c64e){return _0x44b699[_0x2324('0x5')][_0x2324('0x6')][_0x2324('0x3f')]({'where':{'VoiceExtensionId':{'$in':_0x3f23cf}},'transaction':_0x18c64e})['then'](function(_0x566907){return _0x44b699[_0x2324('0x5')]['VoiceExtension'][_0x2324('0x40')](_[_0x2324('0x41')](_0x59acb2,_0x2324('0x11')),{'transaction':_0x18c64e});});});})[_0x2324('0x42')](function(_0x243219){console[_0x2324('0x43')](_0x243219);});}exports[_0x2324('0x44')]=rewrite;
\ No newline at end of file
+var _0xb3f2=['XCALLY-MOTION-ANSWER=0','XCALLY-MOTION-PROGRESS=0','MONITOR_OPTIONS=ab','length','updatedAt','interval','*,*,*,*','tag','CDR(tag)=','callerID','ExecIf','$[${LEN(${PREFIX-CALLERIDALL})}\x20>\x200]?Set(CALLERID(all)=${PREFIX-CALLERIDALL}):Set(CALLERID(all)=','indexOf','app','toLowerCase','$[${XCALLY-MOTION-ANSWER}=0]?Answer','XCALLY-MOTION-ANSWER=1','$[${XCALLY-MOTION-PROGRESS}=0]?Progress','XCALLY-MOTION-PROGRESS=1','GotoIfTime',',${EXTEN},','last','concat','error','rewrite','util','models','Interval','findAll','intervals','VoiceExtension','IntervalId','uniq','map','exten','CAST(priority\x20AS\x20UNSIGNED)','then','filter','groupBy','hasOwnProperty','priority','extensions','find','push','type','Set','VoiceExtensionId','inbound','CDR(routeid)=','context','outbound','CDR(destination)=','extension','cutdigits','${EXTEN:','$[${LEN(${CDR(prefix)})}\x20>\x200]?Goto(','):Goto(','CDR(prefix)=noprefix','outboundrouteid=','recordingFormat','_XCALLY_MIXMONITOR_UNIQUEID=${UNIQUEID}','_XCALLY_MIXMONITOR_FORMAT=','wav'];(function(_0x272dff,_0x5cf78f){var _0x3ddb18=function(_0x144de0){while(--_0x144de0){_0x272dff['push'](_0x272dff['shift']());}};_0x3ddb18(++_0x5cf78f);}(_0xb3f2,0x154));var _0x2b3f=function(_0x2dadb9,_0x42cfe6){_0x2dadb9=_0x2dadb9-0x0;var _0x2f0097=_0xb3f2[_0x2dadb9];return _0x2f0097;};'use strict';var _=require('lodash');var util=require(_0x2b3f('0x0'));function rewrite(_0x52ee5d,_0x414a55){var _0x274306=this;return _0x52ee5d[_0x2b3f('0x1')][_0x2b3f('0x2')][_0x2b3f('0x3')]({'raw':!![]})['then'](function(_0x1536b2){_0x274306[_0x2b3f('0x4')]=_0x1536b2;return _0x52ee5d['models'][_0x2b3f('0x5')]['findAll']({'where':{'IntervalId':_0x414a55[_0x2b3f('0x6')]},'raw':!![]});})['then'](function(_0x104642){return _0x52ee5d[_0x2b3f('0x1')][_0x2b3f('0x5')][_0x2b3f('0x3')]({'where':{'exten':{'$in':_[_0x2b3f('0x7')](_[_0x2b3f('0x8')](_0x104642,_0x2b3f('0x9')))}},'order':[{'raw':_0x2b3f('0xa')}],'raw':!![]});})[_0x2b3f('0xb')](function(_0x30e7eb){var _0x6a12b2=_[_0x2b3f('0xc')](_0x30e7eb,{'priority':'1'});var _0x64ac56=_[_0x2b3f('0xc')](_0x30e7eb,{'isApp':0x1});var _0x4bc401=_[_0x2b3f('0xd')](_0x64ac56,_0x2b3f('0x9'));var _0x445a9e=['queue','playback'];var _0x2c2aab=[];var _0x32a1a7=[];for(var _0x1db452 in _0x4bc401){if(_0x4bc401[_0x2b3f('0xe')](_0x1db452)){_0x274306[_0x2b3f('0xf')]=0x2;_0x274306[_0x2b3f('0x10')]=[];_0x274306['extension']=_[_0x2b3f('0x11')](_0x6a12b2,{'exten':_0x4bc401[_0x1db452][0x0][_0x2b3f('0x9')]});_0x274306['extensions'][_0x2b3f('0x12')]({'type':_0x4bc401[_0x1db452][0x0][_0x2b3f('0x13')],'app':_0x2b3f('0x14'),'appdata':util['format']('CDR(type)=%s',_0x4bc401[_0x1db452][0x0]['type']),'context':_0x4bc401[_0x1db452][0x0]['context'],'exten':_0x4bc401[_0x1db452][0x0]['exten'],'priority':_0x274306[_0x2b3f('0xf')]++,'VoiceExtensionId':_0x4bc401[_0x1db452][0x0][_0x2b3f('0x15')]});if(_0x4bc401[_0x1db452][0x0][_0x2b3f('0x13')]===_0x2b3f('0x16')){_0x274306[_0x2b3f('0x10')][_0x2b3f('0x12')]({'type':_0x4bc401[_0x1db452][0x0][_0x2b3f('0x13')],'app':_0x2b3f('0x14'),'appdata':_0x2b3f('0x17')+_0x4bc401[_0x1db452][0x0][_0x2b3f('0x15')],'context':_0x4bc401[_0x1db452][0x0][_0x2b3f('0x18')],'exten':_0x4bc401[_0x1db452][0x0][_0x2b3f('0x9')],'priority':_0x274306[_0x2b3f('0xf')]++,'VoiceExtensionId':_0x4bc401[_0x1db452][0x0][_0x2b3f('0x15')]});}else if(_0x4bc401[_0x1db452][0x0][_0x2b3f('0x13')]===_0x2b3f('0x19')){if(_0x274306['extension']){_0x274306[_0x2b3f('0x10')][_0x2b3f('0x12')]({'type':_0x4bc401[_0x1db452][0x0][_0x2b3f('0x13')],'app':_0x2b3f('0x14'),'appdata':_0x2b3f('0x1a')+(_0x274306[_0x2b3f('0x1b')][_0x2b3f('0x1c')]?_0x2b3f('0x1d')+_0x274306[_0x2b3f('0x1b')][_0x2b3f('0x1c')]+'}':'${EXTEN}'),'context':_0x4bc401[_0x1db452][0x0][_0x2b3f('0x18')],'exten':_0x4bc401[_0x1db452][0x0][_0x2b3f('0x9')],'priority':_0x274306[_0x2b3f('0xf')]++,'VoiceExtensionId':_0x4bc401[_0x1db452][0x0][_0x2b3f('0x15')]});}_0x274306[_0x2b3f('0x10')][_0x2b3f('0x12')]({'type':_0x4bc401[_0x1db452][0x0][_0x2b3f('0x13')],'app':'Set','appdata':_0x2b3f('0x17')+_0x4bc401[_0x1db452][0x0][_0x2b3f('0x15')],'context':_0x4bc401[_0x1db452][0x0][_0x2b3f('0x18')],'exten':_0x4bc401[_0x1db452][0x0][_0x2b3f('0x9')],'priority':_0x274306[_0x2b3f('0xf')]++,'VoiceExtensionId':_0x4bc401[_0x1db452][0x0][_0x2b3f('0x15')]});var _0x25950f=_0x274306[_0x2b3f('0xf')]++;_0x274306[_0x2b3f('0x10')][_0x2b3f('0x12')]({'type':_0x4bc401[_0x1db452][0x0][_0x2b3f('0x13')],'app':'ExecIf','appdata':_0x2b3f('0x1e')+(_0x25950f+0x2)+_0x2b3f('0x1f')+(_0x25950f+0x1)+')','context':_0x4bc401[_0x1db452][0x0][_0x2b3f('0x18')],'exten':_0x4bc401[_0x1db452][0x0][_0x2b3f('0x9')],'priority':_0x25950f,'VoiceExtensionId':_0x4bc401[_0x1db452][0x0][_0x2b3f('0x15')]});if(_0x274306[_0x2b3f('0x1b')]){_0x274306[_0x2b3f('0x10')][_0x2b3f('0x12')]({'type':_0x4bc401[_0x1db452][0x0][_0x2b3f('0x13')],'app':_0x2b3f('0x14'),'appdata':_0x274306[_0x2b3f('0x1b')][_0x2b3f('0x1c')]?'CDR(prefix)=${EXTEN:0:'+_0x274306[_0x2b3f('0x1b')][_0x2b3f('0x1c')]+'}':_0x2b3f('0x20'),'context':_0x4bc401[_0x1db452][0x0][_0x2b3f('0x18')],'exten':_0x4bc401[_0x1db452][0x0][_0x2b3f('0x9')],'priority':_0x274306['priority']++,'VoiceExtensionId':_0x4bc401[_0x1db452][0x0][_0x2b3f('0x15')]});}_0x274306[_0x2b3f('0x10')][_0x2b3f('0x12')]({'type':_0x4bc401[_0x1db452][0x0][_0x2b3f('0x13')],'app':'Set','appdata':_0x2b3f('0x21')+_0x4bc401[_0x1db452][0x0][_0x2b3f('0x15')],'context':_0x4bc401[_0x1db452][0x0][_0x2b3f('0x18')],'exten':_0x4bc401[_0x1db452][0x0][_0x2b3f('0x9')],'priority':_0x274306[_0x2b3f('0xf')]++,'VoiceExtensionId':_0x4bc401[_0x1db452][0x0][_0x2b3f('0x15')]});if(_0x274306[_0x2b3f('0x1b')]&&_0x274306['extension'][_0x2b3f('0xe')]('recordingFormat')&&_0x274306['extension'][_0x2b3f('0x22')]!=='none'){_0x274306[_0x2b3f('0x10')][_0x2b3f('0x12')]({'type':_0x4bc401[_0x1db452][0x0]['type'],'app':_0x2b3f('0x14'),'appdata':_0x2b3f('0x23'),'context':_0x4bc401[_0x1db452][0x0]['context'],'exten':_0x4bc401[_0x1db452][0x0][_0x2b3f('0x9')],'priority':_0x274306['priority']++,'VoiceExtensionId':_0x4bc401[_0x1db452][0x0][_0x2b3f('0x15')]});_0x274306[_0x2b3f('0x10')][_0x2b3f('0x12')]({'type':_0x4bc401[_0x1db452][0x0][_0x2b3f('0x13')],'app':_0x2b3f('0x14'),'appdata':_0x2b3f('0x24')+_0x274306[_0x2b3f('0x1b')][_0x2b3f('0x22')]||_0x2b3f('0x25'),'context':_0x4bc401[_0x1db452][0x0][_0x2b3f('0x18')],'exten':_0x4bc401[_0x1db452][0x0][_0x2b3f('0x9')],'priority':_0x274306['priority']++,'VoiceExtensionId':_0x4bc401[_0x1db452][0x0][_0x2b3f('0x15')]});}}_0x274306[_0x2b3f('0x10')][_0x2b3f('0x12')]({'type':_0x4bc401[_0x1db452][0x0][_0x2b3f('0x13')],'app':_0x2b3f('0x14'),'appdata':_0x2b3f('0x26'),'context':_0x4bc401[_0x1db452][0x0]['context'],'exten':_0x4bc401[_0x1db452][0x0][_0x2b3f('0x9')],'priority':_0x274306[_0x2b3f('0xf')]++,'VoiceExtensionId':_0x4bc401[_0x1db452][0x0][_0x2b3f('0x15')]});_0x274306[_0x2b3f('0x10')][_0x2b3f('0x12')]({'type':_0x4bc401[_0x1db452][0x0][_0x2b3f('0x13')],'app':'Set','appdata':_0x2b3f('0x27'),'context':_0x4bc401[_0x1db452][0x0][_0x2b3f('0x18')],'exten':_0x4bc401[_0x1db452][0x0][_0x2b3f('0x9')],'priority':_0x274306[_0x2b3f('0xf')]++,'VoiceExtensionId':_0x4bc401[_0x1db452][0x0][_0x2b3f('0x15')]});_0x274306[_0x2b3f('0x10')]['push']({'type':_0x4bc401[_0x1db452][0x0][_0x2b3f('0x13')],'app':_0x2b3f('0x14'),'appdata':_0x2b3f('0x28'),'context':_0x4bc401[_0x1db452][0x0][_0x2b3f('0x18')],'exten':_0x4bc401[_0x1db452][0x0][_0x2b3f('0x9')],'priority':_0x274306[_0x2b3f('0xf')]++,'VoiceExtensionId':_0x4bc401[_0x1db452][0x0][_0x2b3f('0x15')]});for(var _0x18160a=0x0,_0x545aaa=0x0;_0x18160a<_0x4bc401[_0x1db452][_0x2b3f('0x29')];_0x18160a+=0x1,_0x545aaa=0x0){var _0x301f5d=_0x4bc401[_0x1db452][_0x18160a];if(_0x301f5d[_0x2b3f('0x13')]){_0x301f5d[_0x2b3f('0x13')]=_0x301f5d[_0x2b3f('0x13')]['toLowerCase']();}var _0xa11611=[];var _0x468202=[];delete _0x301f5d['id'];delete _0x301f5d['createdAt'];delete _0x301f5d[_0x2b3f('0x2a')];var _0x150ac9=_0x301f5d[_0x2b3f('0x2b')]!==_0x2b3f('0x2c')?[_0x301f5d['interval']]:_0x301f5d['IntervalId']?_[_0x2b3f('0x8')](_['filter'](_0x274306[_0x2b3f('0x4')],{'IntervalId':_0x301f5d[_0x2b3f('0x6')]}),_0x2b3f('0x2b')):[];if(_0x301f5d[_0x2b3f('0xe')](_0x2b3f('0x2d'))){if(_0x301f5d[_0x2b3f('0x2d')]&&_0x301f5d[_0x2b3f('0x2d')]!=='--'){_0xa11611['push']({'type':_0x301f5d[_0x2b3f('0x13')],'app':'Set','appdata':_0x2b3f('0x2e')+_0x301f5d[_0x2b3f('0x2d')],'context':_0x301f5d[_0x2b3f('0x18')],'exten':_0x301f5d['exten'],'priority':_0x150ac9['length']+_0x274306[_0x2b3f('0xf')]+_0x545aaa++,'VoiceExtensionId':_0x301f5d[_0x2b3f('0x15')]});}}if(_0x301f5d[_0x2b3f('0x13')]===_0x2b3f('0x19')&&_0x301f5d[_0x2b3f('0xe')](_0x2b3f('0x2f'))){if(_0x301f5d[_0x2b3f('0x2f')]){_0xa11611[_0x2b3f('0x12')]({'type':_0x301f5d[_0x2b3f('0x13')],'app':_0x2b3f('0x30'),'appdata':_0x2b3f('0x31')+_0x301f5d[_0x2b3f('0x2f')]+')','context':_0x301f5d[_0x2b3f('0x18')],'exten':_0x301f5d['exten'],'priority':_0x150ac9[_0x2b3f('0x29')]+_0x274306[_0x2b3f('0xf')]+_0x545aaa++,'VoiceExtensionId':_0x301f5d['VoiceExtensionId']});}else{_0xa11611[_0x2b3f('0x12')]({'type':_0x301f5d['type'],'app':'ExecIf','appdata':'$[${LEN(${PREFIX-CALLERIDALL})}\x20>\x200]?Set(CALLERID(all)=${PREFIX-CALLERIDALL}):NoOp(No\x20number\x20available)','context':_0x301f5d[_0x2b3f('0x18')],'exten':_0x301f5d[_0x2b3f('0x9')],'priority':_0x150ac9[_0x2b3f('0x29')]+_0x274306[_0x2b3f('0xf')]+_0x545aaa++,'VoiceExtensionId':_0x301f5d['VoiceExtensionId']});}}if(_0x301f5d['hasOwnProperty']('answer')){if(_0x445a9e[_0x2b3f('0x32')](_0x301f5d[_0x2b3f('0x33')][_0x2b3f('0x34')]())>=0x0&&_0x301f5d['appType']!=='custom'){if(_0x301f5d['answer']){_0xa11611[_0x2b3f('0x12')]({'type':_0x301f5d['type'],'app':_0x2b3f('0x30'),'appdata':_0x2b3f('0x35'),'context':_0x301f5d[_0x2b3f('0x18')],'exten':_0x301f5d['exten'],'priority':_0x150ac9[_0x2b3f('0x29')]+_0x274306[_0x2b3f('0xf')]+_0x545aaa++,'VoiceExtensionId':_0x301f5d[_0x2b3f('0x15')]});_0xa11611['push']({'type':_0x301f5d[_0x2b3f('0x13')],'app':_0x2b3f('0x14'),'appdata':_0x2b3f('0x36'),'context':_0x301f5d['context'],'exten':_0x301f5d[_0x2b3f('0x9')],'priority':_0x150ac9['length']+_0x274306['priority']+_0x545aaa++,'VoiceExtensionId':_0x301f5d['VoiceExtensionId']});}else{_0xa11611['push']({'type':_0x301f5d['type'],'app':_0x2b3f('0x30'),'appdata':_0x2b3f('0x37'),'context':_0x301f5d['context'],'exten':_0x301f5d['exten'],'priority':_0x150ac9['length']+_0x274306[_0x2b3f('0xf')]+_0x545aaa++,'VoiceExtensionId':_0x301f5d[_0x2b3f('0x15')]});_0xa11611[_0x2b3f('0x12')]({'type':_0x301f5d['type'],'app':_0x2b3f('0x14'),'appdata':_0x2b3f('0x38'),'context':_0x301f5d[_0x2b3f('0x18')],'exten':_0x301f5d['exten'],'priority':_0x150ac9[_0x2b3f('0x29')]+_0x274306[_0x2b3f('0xf')]+_0x545aaa++,'VoiceExtensionId':_0x301f5d[_0x2b3f('0x15')]});}}}for(var _0x3eace8=0x0;_0x3eace8<_0x150ac9[_0x2b3f('0x29')];_0x3eace8+=0x1){var _0x54a4a7=_0x274306[_0x2b3f('0xf')]+_0x150ac9[_0x2b3f('0x29')];var _0x14dd44=_0x3eace8===_0x150ac9[_0x2b3f('0x29')]-0x1?_0x274306['priority']+_0xa11611[_0x2b3f('0x29')]+_0x468202[_0x2b3f('0x29')]+0x2:_0x274306[_0x2b3f('0xf')]+_0x3eace8+0x1;_0xa11611['splice'](_0x3eace8,0x0,{'type':_0x301f5d[_0x2b3f('0x13')],'app':_0x2b3f('0x39'),'appdata':_0x150ac9[_0x3eace8]+'?'+_0x301f5d[_0x2b3f('0x18')]+_0x2b3f('0x3a')+_0x54a4a7+':'+_0x301f5d[_0x2b3f('0x18')]+_0x2b3f('0x3a')+_0x14dd44,'exten':_0x301f5d['exten'],'context':_0x301f5d[_0x2b3f('0x18')],'priority':_0x274306['priority']+_0x3eace8,'VoiceExtensionId':_0x4bc401[_0x1db452][0x0][_0x2b3f('0x15')]});}_0x301f5d[_0x2b3f('0xf')]=_0xa11611[_0x2b3f('0x29')]?_[_0x2b3f('0x3b')](_0xa11611)['priority']+0x1:_0x274306[_0x2b3f('0xf')];_0x274306['priority']=(_0x468202[_0x2b3f('0x29')]?_[_0x2b3f('0x3b')](_0x468202)['priority']:_0x301f5d[_0x2b3f('0xf')])+0x1;_0x274306[_0x2b3f('0x10')]=_[_0x2b3f('0x3c')](_0x274306[_0x2b3f('0x10')],_0xa11611,[_0x301f5d],_0x468202);}_0x274306[_0x2b3f('0x10')][_0x2b3f('0x12')]({'type':_0x4bc401[_0x1db452][0x0]['type'],'app':'Hangup','exten':_0x4bc401[_0x1db452][0x0][_0x2b3f('0x9')],'context':_0x4bc401[_0x1db452][0x0]['context'],'priority':_0x274306[_0x2b3f('0xf')],'VoiceExtensionId':_0x4bc401[_0x1db452][0x0][_0x2b3f('0x15')]});_0x2c2aab['push'](_0x4bc401[_0x1db452][0x0][_0x2b3f('0x15')]);_0x32a1a7=_[_0x2b3f('0x3c')](_0x32a1a7,_0x274306[_0x2b3f('0x10')]);}}return _0x52ee5d['transaction'](function(_0x341b55){return _0x52ee5d[_0x2b3f('0x1')]['VoiceExtension']['destroy']({'where':{'VoiceExtensionId':{'$in':_0x2c2aab}},'transaction':_0x341b55})['then'](function(_0x12c6c9){return _0x52ee5d['models'][_0x2b3f('0x5')]['bulkCreate'](_['sortBy'](_0x32a1a7,_0x2b3f('0xf')),{'transaction':_0x341b55});});});})['catch'](function(_0x5b2e73){console[_0x2b3f('0x3d')](_0x5b2e73);});}exports[_0x2b3f('0x3e')]=rewrite;
\ No newline at end of file
index a7ec6de..ff11bfa 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x47af=['map','message','join','hasOwnProperty','data','firstName\x20not\x20specified!','phone','phone\x20not\x20specified!','birthDate','isValid','birthDate\x20format\x20is\x20invalid,\x20YYYY-MM-DD\x20format\x20is\x20supported!','email','email\x20format\x20is\x20not\x20valid!','ListId','CompanyId','find','duplicate','Duplicate\x20Contact','CmContact','create','keys','then','push','pick','catch','Error\x20while\x20creating\x20contact:\x20','stringify','checkHopper','inspect','into','cm_hopper','fromQuery','scheduledAt','ContactId','createdAt','updatedAt','select','field','toString','NOW()','from','cm_contacts','where','deletedAt\x20IS\x20NULL','ListId\x20=\x20?','phone\x20IS\x20NOT\x20NULL','phone\x20NOT\x20IN\x20(?)','insert','id\x20IN\x20?','str','cm_hopper_final','\x20=\x20?','cm_hopper_black','findAll','outbound','dialCheckDuplicateType','sequelize','query','all','VoiceQueue','CmList','BlackLists','get','VoiceQueueId','Campaign','Lists','always','CampaignId','generalCheckHopper','Error\x20processing\x20rows\x20block:','finally','emit','contact:csv_','resume','resolve','unlinkSync','Unable\x20to\x20delete\x20temp\x20file:','SIGINT','info','CSV\x20import\x20process\x20stopped!','pause','CSV\x20parsed\x20correctly!','CSV\x20parse\x20error','Error\x20executing\x20contact\x20csv\x20import:','bluebird','util','lodash','squel','papaparse','../../../mysqldb','../../../config/environment','api','redis','localhost','socket.io-emitter','../../../api/cmContact/cmContact.socket','argv','undefined','null','Missing\x20filepath\x20parameter!','Missing\x20binding\x20parameters!','split','Missing\x20ListId\x20parameter!','Missing\x20socket_timestamp\x20parameter!','error','isNil','The\x20row\x20is\x20empty\x20or\x20the\x20number\x20of\x20parameters\x20does\x20not\x20match\x20the\x20columns!','errors','length'];(function(_0x45271c,_0x1bf2d8){var _0x44bfda=function(_0x46b3f6){while(--_0x46b3f6){_0x45271c['push'](_0x45271c['shift']());}};_0x44bfda(++_0x1bf2d8);}(_0x47af,0xc1));var _0xf47a=function(_0x1ab20c,_0x15b147){_0x1ab20c=_0x1ab20c-0x0;var _0x196525=_0x47af[_0x1ab20c];return _0x196525;};'use strict';var BPromise=require(_0xf47a('0x0'));var util=require(_0xf47a('0x1'));var _=require(_0xf47a('0x2'));var fs=require('fs');var squel=require(_0xf47a('0x3'));var Papa=require(_0xf47a('0x4'));var Redis=require('ioredis');var db=require(_0xf47a('0x5'))['db'];var config=require(_0xf47a('0x6'));var logger=require('../../../config/logger')(_0xf47a('0x7'));config[_0xf47a('0x8')]=_['defaults'](config[_0xf47a('0x8')],{'host':_0xf47a('0x9'),'port':0x18eb});var socket=require(_0xf47a('0xa'))(new Redis(config['redis']));require(_0xf47a('0xb'))['register'](socket);try{if(!process['argv'][0x2]||process[_0xf47a('0xc')][0x2]===_0xf47a('0xd')||process['argv'][0x2]===_0xf47a('0xe')){throw new Error(_0xf47a('0xf'));}var FILEPATH=process[_0xf47a('0xc')][0x2];if(!process[_0xf47a('0xc')][0x3]||process['argv'][0x3]==='undefined'||process['argv'][0x3]===_0xf47a('0xe')||!process[_0xf47a('0xc')][0x4]||process[_0xf47a('0xc')][0x4]===_0xf47a('0xd')||process[_0xf47a('0xc')][0x4]==='null'){throw new Error(_0xf47a('0x10'));}var FIELDS=_['zipObject'](process[_0xf47a('0xc')][0x3][_0xf47a('0x11')](','),process[_0xf47a('0xc')][0x4][_0xf47a('0x11')](','));if(!process['argv'][0x5]||process[_0xf47a('0xc')][0x5]==='undefined'||process['argv'][0x5]==='null'){throw new Error(_0xf47a('0x12'));}var LISTID=process[_0xf47a('0xc')][0x5];var COMPANYID=process[_0xf47a('0xc')][0x6]&&process[_0xf47a('0xc')][0x6]!=='undefined'&&process[_0xf47a('0xc')][0x6]!==_0xf47a('0xe')?process[_0xf47a('0xc')][0x6]:null;var DUPLICATES=process[_0xf47a('0xc')][0x7]&&process[_0xf47a('0xc')][0x7]!=='undefined'&&process[_0xf47a('0xc')][0x7]!==_0xf47a('0xe')?process[_0xf47a('0xc')][0x7]:null;if(!process[_0xf47a('0xc')][0x8]||process[_0xf47a('0xc')][0x8]==='undefined'||process[_0xf47a('0xc')][0x8]===_0xf47a('0xe')){throw new Error(_0xf47a('0x13'));}var SOCKET_TIMESTAMP=process[_0xf47a('0xc')][0x8];}catch(_0x3ebe6a){logger[_0xf47a('0x14')](_0x3ebe6a);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(_0x181fad,_0x2b5a06,_0x4387da,_0x5f33b9){var _0x377a26={'message':_0x2b5a06};_0x377a26[_0x181fad]=!![];if(_0x4387da){_0x377a26['contact']=_0x4387da;}if(_0x5f33b9){_0x377a26['index']=_0x5f33b9;}return _0x377a26;}function isEmail(_0x27ce2d){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))*$/['test'](_0x27ce2d);}function checkRow(_0x199782,_0x1d796a,_0xa6f160){return new BPromise(function(_0x53207f,_0x2fee68){if(_[_0xf47a('0x15')](_0x199782)){return _0x2fee68(handleCheckRowError(_0xf47a('0x14'),_0xf47a('0x16'),null,_0xa6f160));}if(_0x199782[_0xf47a('0x17')]&&_0x199782['errors'][_0xf47a('0x18')]){var _0x53e93f=_[_0xf47a('0x19')](_0x199782[_0xf47a('0x17')],_0xf47a('0x1a'))[_0xf47a('0x1b')](';');return _0x2fee68(handleCheckRowError(_0xf47a('0x14'),_0x53e93f,null,_0xa6f160));}var _0x5e5efe={};for(var _0x1e2107 in FIELDS){if(FIELDS[_0xf47a('0x1c')](_0x1e2107)&&FIELDS[_0x1e2107]){_0x5e5efe[_0x1e2107]=_0x199782[_0xf47a('0x1d')][0x0][FIELDS[_0x1e2107]]||_0x199782[_0xf47a('0x1d')][0x0]['\ufeff'+FIELDS[_0x1e2107]];}}if(!_0x5e5efe['firstName']){return _0x2fee68(handleCheckRowError('error',_0xf47a('0x1e'),null,_0xa6f160));}if(!_0x5e5efe[_0xf47a('0x1f')]){return _0x2fee68(handleCheckRowError(_0xf47a('0x14'),_0xf47a('0x20'),null,_0xa6f160));}if(_0x5e5efe[_0xf47a('0x21')]){var _0xeffcdf=moment(_0x5e5efe[_0xf47a('0x21')],'YYYY-MM-DD');if(!_0xeffcdf[_0xf47a('0x22')]()){return _0x2fee68(handleCheckRowError('error',_0xf47a('0x23'),null,_0xa6f160));}}if(_0x5e5efe[_0xf47a('0x24')]){if(!isEmail(_0x5e5efe[_0xf47a('0x24')])){return _0x2fee68(handleCheckRowError('error',_0xf47a('0x25'),null,_0xa6f160));}}_0x5e5efe[_0xf47a('0x26')]=LISTID;_0x5e5efe[_0xf47a('0x27')]=COMPANYID||undefined;if(DUPLICATES&&DUPLICATES['length']&&_0x1d796a){var _0x1486ce={};for(var _0x391867=0x0,_0x1c3d9e=DUPLICATES['length'];_0x391867<_0x1c3d9e;_0x391867+=0x1){_0x1486ce[DUPLICATES[_0x391867]]=_0x5e5efe[DUPLICATES[_0x391867]];}var _0x438ea7=_[_0xf47a('0x28')](_0x1d796a,_0x1486ce);if(_0x438ea7){return _0x2fee68(handleCheckRowError(_0xf47a('0x29'),_0xf47a('0x2a'),_0x438ea7,_0xa6f160));}}return db[_0xf47a('0x2b')][_0xf47a('0x2c')](_0x5e5efe,{'raw':!![],'hooks':![],'fields':_[_0xf47a('0x2d')](_0x5e5efe)})[_0xf47a('0x2e')](function(_0x21132d){if(DUPLICATES&&DUPLICATES[_0xf47a('0x18')]&&_0x1d796a){_0x1d796a[_0xf47a('0x2f')](_[_0xf47a('0x30')](_0x5e5efe,DUPLICATES));}hopperContacts+=(hopperContacts?',':'')+_0x21132d['id'];return _0x53207f();})[_0xf47a('0x31')](function(_0x59da37){return _0x2fee68(handleCheckRowError(_0xf47a('0x14'),_0xf47a('0x32')+(_0x59da37[_0xf47a('0x1a')]||JSON[_0xf47a('0x33')](_0x59da37)),null,_0xa6f160));});});}function checkHopper(){function _0x35f4e9(){return function(_0x5c5cc8){logger[_0xf47a('0x14')]('cmContact',_0xf47a('0x34'),util[_0xf47a('0x35')](_0x5c5cc8,{'showHidden':![],'depth':null}));};}var _0x1aba19=function(_0x335cbb,_0x5bb589){var _0x41bd75=squel['insert']()[_0xf47a('0x36')](_0xf47a('0x37'))[_0xf47a('0x38')]([_0xf47a('0x1f'),_0xf47a('0x39'),_0xf47a('0x3a'),_0xf47a('0x26'),_0x5bb589,_0xf47a('0x3b'),_0xf47a('0x3c')],squel[_0xf47a('0x3d')]()[_0xf47a('0x3e')](_0xf47a('0x1f'),_0xf47a('0x1f'))[_0xf47a('0x3e')]('NOW()',_0xf47a('0x39'))[_0xf47a('0x3e')]('id',_0xf47a('0x3a'))[_0xf47a('0x3e')](LISTID['toString'](),_0xf47a('0x26'))[_0xf47a('0x3e')](_0x335cbb['id'][_0xf47a('0x3f')](),_0x5bb589)[_0xf47a('0x3e')](_0xf47a('0x40'),_0xf47a('0x3b'))[_0xf47a('0x3e')](_0xf47a('0x40'),'updatedAt')[_0xf47a('0x41')](_0xf47a('0x42'))[_0xf47a('0x43')](_0xf47a('0x44'))['where'](_0xf47a('0x45'),LISTID['toString']())[_0xf47a('0x43')](_0xf47a('0x46'))[_0xf47a('0x43')](_0xf47a('0x47'),squel[_0xf47a('0x3d')]()['field'](_0xf47a('0x1f'))[_0xf47a('0x41')](_0xf47a('0x37'))[_0xf47a('0x43')](_0x5bb589+'\x20=\x20?',_0x335cbb['id'][_0xf47a('0x3f')]())))[_0xf47a('0x3f')]();return _0x41bd75;};var _0xe217e=function(_0xeaaa55,_0x1c7211){var _0xbe332c=squel[_0xf47a('0x48')]()[_0xf47a('0x36')](_0xf47a('0x37'))[_0xf47a('0x38')]([_0xf47a('0x1f'),_0xf47a('0x39'),_0xf47a('0x3a'),'ListId',_0x1c7211,_0xf47a('0x3b'),_0xf47a('0x3c')],squel[_0xf47a('0x3d')]()[_0xf47a('0x3e')]('phone',_0xf47a('0x1f'))[_0xf47a('0x3e')](_0xf47a('0x40'),_0xf47a('0x39'))[_0xf47a('0x3e')]('id',_0xf47a('0x3a'))[_0xf47a('0x3e')](LISTID[_0xf47a('0x3f')](),_0xf47a('0x26'))[_0xf47a('0x3e')](_0xeaaa55['id'][_0xf47a('0x3f')](),_0x1c7211)[_0xf47a('0x3e')](_0xf47a('0x40'),_0xf47a('0x3b'))[_0xf47a('0x3e')]('NOW()',_0xf47a('0x3c'))[_0xf47a('0x41')](_0xf47a('0x42'))[_0xf47a('0x43')](_0xf47a('0x44'))[_0xf47a('0x43')](_0xf47a('0x45'),LISTID[_0xf47a('0x3f')]())[_0xf47a('0x43')](_0xf47a('0x49'),squel[_0xf47a('0x4a')](hopperContacts))[_0xf47a('0x43')](_0xf47a('0x46'))[_0xf47a('0x43')](_0xf47a('0x47'),squel[_0xf47a('0x3d')]()[_0xf47a('0x3e')]('calleridnum')['from'](_0xf47a('0x4b'))[_0xf47a('0x43')](_0x1c7211+_0xf47a('0x4c'),_0xeaaa55['id'][_0xf47a('0x3f')]()))[_0xf47a('0x43')]('phone\x20NOT\x20IN\x20(?)',squel[_0xf47a('0x3d')]()[_0xf47a('0x3e')]('phone')[_0xf47a('0x41')]('cm_hopper')[_0xf47a('0x43')](_0x1c7211+_0xf47a('0x4c'),_0xeaaa55['id'][_0xf47a('0x3f')]())))[_0xf47a('0x3f')]();return _0xbe332c;};function _0x3b8ee4(_0x2db666,_0x3637b7){var _0x49800c=squel[_0xf47a('0x48')]()[_0xf47a('0x36')](_0xf47a('0x37'))[_0xf47a('0x38')](['phone',_0xf47a('0x39'),_0xf47a('0x3a'),_0xf47a('0x26'),_0x3637b7,_0xf47a('0x3b'),_0xf47a('0x3c')],squel[_0xf47a('0x3d')]()['field'](_0xf47a('0x1f'),_0xf47a('0x1f'))[_0xf47a('0x3e')](_0xf47a('0x40'),_0xf47a('0x39'))[_0xf47a('0x3e')]('id',_0xf47a('0x3a'))[_0xf47a('0x3e')](LISTID['toString'](),_0xf47a('0x26'))[_0xf47a('0x3e')](_0x2db666['id'][_0xf47a('0x3f')](),_0x3637b7)[_0xf47a('0x3e')](_0xf47a('0x40'),_0xf47a('0x3b'))[_0xf47a('0x3e')](_0xf47a('0x40'),_0xf47a('0x3c'))[_0xf47a('0x41')](_0xf47a('0x42'))[_0xf47a('0x43')](_0xf47a('0x44'))[_0xf47a('0x43')](_0xf47a('0x45'),LISTID['toString']())[_0xf47a('0x43')]('id\x20IN\x20?',squel['str'](hopperContacts))[_0xf47a('0x43')](_0xf47a('0x46')))[_0xf47a('0x3f')]();return _0x49800c;}function _0x12c44b(_0xd950a0,_0x92acd0){var _0x552c0b=squel[_0xf47a('0x48')]()['into'](_0xf47a('0x4d'))[_0xf47a('0x38')]([_0xf47a('0x1f'),_0xf47a('0x3a'),'ListId',_0x92acd0,_0xf47a('0x3b'),_0xf47a('0x3c')],squel[_0xf47a('0x3d')]()[_0xf47a('0x3e')]('phone',_0xf47a('0x1f'))[_0xf47a('0x3e')]('id',_0xf47a('0x3a'))[_0xf47a('0x3e')](LISTID[_0xf47a('0x3f')](),_0xf47a('0x26'))[_0xf47a('0x3e')](_0xd950a0['id'][_0xf47a('0x3f')](),_0x92acd0)[_0xf47a('0x3e')]('NOW()','createdAt')[_0xf47a('0x3e')](_0xf47a('0x40'),'updatedAt')[_0xf47a('0x41')](_0xf47a('0x42'))[_0xf47a('0x43')](_0xf47a('0x44'))[_0xf47a('0x43')](_0xf47a('0x45'),LISTID['toString']())[_0xf47a('0x43')](_0xf47a('0x49'),squel[_0xf47a('0x4a')](hopperContacts))['where']('phone\x20IS\x20NOT\x20NULL'))[_0xf47a('0x3f')]();return _0x552c0b;}return db['VoiceQueue'][_0xf47a('0x4e')]({'where':{'type':_0xf47a('0x4f')},'attributes':['id',_0xf47a('0x50')],'include':[{'model':db['CmList'],'as':'Lists','where':{'id':LISTID}}]})['then'](function(_0x1c1aee){var _0x35d994=[];if(_0x1c1aee){var _0x9ce4ac;for(var _0xd7f019=0x0,_0x47c2ff;_0xd7f019<_0x1c1aee[_0xf47a('0x18')];_0xd7f019+=0x1){_0x47c2ff=_0x1c1aee[_0xd7f019]['get']({'plain':!![]});switch(_0x47c2ff[_0xf47a('0x50')]){case'always':_0x35d994['push'](db[_0xf47a('0x51')]['query'](_0xe217e(_0x47c2ff,'VoiceQueueId'))[_0xf47a('0x2e')](function(){})[_0xf47a('0x31')](_0x35f4e9()));break;case'onlyIfOpen':_0x35d994['push'](db[_0xf47a('0x51')]['query'](_0x1aba19(_0x47c2ff,'VoiceQueueId'))[_0xf47a('0x2e')](function(){})['catch'](_0x35f4e9()));break;default:_0x35d994[_0xf47a('0x2f')](db[_0xf47a('0x51')][_0xf47a('0x52')](_0x3b8ee4(_0x47c2ff,'VoiceQueueId'))[_0xf47a('0x2e')](function(){})['catch'](_0x35f4e9()));}}}return _0x35d994;})[_0xf47a('0x53')]()[_0xf47a('0x2e')](function(){return db[_0xf47a('0x54')][_0xf47a('0x4e')]({'where':{'type':_0xf47a('0x4f')},'attributes':['id'],'include':[{'model':db[_0xf47a('0x55')],'as':_0xf47a('0x56'),'where':{'id':LISTID}}]})[_0xf47a('0x2e')](function(_0x3145c5){var _0x2706d4=[];if(_0x3145c5){var _0x1173e4;for(var _0x21c100=0x0,_0x25bfa3;_0x21c100<_0x3145c5[_0xf47a('0x18')];_0x21c100+=0x1){_0x25bfa3=_0x3145c5[_0x21c100][_0xf47a('0x57')]({'plain':!![]});_0x2706d4[_0xf47a('0x2f')](db[_0xf47a('0x51')][_0xf47a('0x52')](_0x12c44b(_0x25bfa3,_0xf47a('0x58')))[_0xf47a('0x2e')](function(){})[_0xf47a('0x31')](_0x35f4e9()));}}return _0x2706d4;})[_0xf47a('0x53')]();})[_0xf47a('0x2e')](function(){return db[_0xf47a('0x59')][_0xf47a('0x4e')]({'attributes':['id',_0xf47a('0x50')],'include':[{'model':db[_0xf47a('0x55')],'as':_0xf47a('0x5a'),'where':{'id':LISTID}}]})['then'](function(_0x24f8cb){var _0xa25667=[];if(_0x24f8cb){for(var _0x3d2bcb=0x0,_0x715347;_0x3d2bcb<_0x24f8cb[_0xf47a('0x18')];_0x3d2bcb+=0x1){_0x715347=_0x24f8cb[_0x3d2bcb][_0xf47a('0x57')]({'plain':!![]});switch(_0x715347[_0xf47a('0x50')]){case _0xf47a('0x5b'):_0xa25667['push'](db[_0xf47a('0x51')]['query'](_0xe217e(_0x715347,'CampaignId'))[_0xf47a('0x2e')](function(){})[_0xf47a('0x31')](_0x35f4e9()));break;case'onlyIfOpen':_0xa25667['push'](db[_0xf47a('0x51')][_0xf47a('0x52')](_0x1aba19(_0x715347,_0xf47a('0x5c')))['then'](function(){})[_0xf47a('0x31')](_0x35f4e9()));break;default:_0xa25667['push'](db[_0xf47a('0x51')][_0xf47a('0x52')](_0x3b8ee4(_0x715347,_0xf47a('0x5c')))['then'](function(){})[_0xf47a('0x31')](_0x35f4e9()));}}}return _0xa25667;})[_0xf47a('0x53')]();})[_0xf47a('0x2e')](function(){return db['Campaign'][_0xf47a('0x4e')]({'attributes':['id'],'include':[{'model':db['CmList'],'as':_0xf47a('0x56'),'where':{'id':LISTID}}]})[_0xf47a('0x2e')](function(_0x4ab1fd){var _0x2f74cd=[];if(_0x4ab1fd){for(var _0x3037dd=0x0,_0x2c7942;_0x3037dd<_0x4ab1fd[_0xf47a('0x18')];_0x3037dd+=0x1){_0x2c7942=_0x4ab1fd[_0x3037dd][_0xf47a('0x57')]({'plain':!![]});_0x2f74cd[_0xf47a('0x2f')](db[_0xf47a('0x51')][_0xf47a('0x52')](_0x12c44b(_0x2c7942,_0xf47a('0x5c')))['then'](function(){})['catch'](_0x35f4e9()));}}return _0x2f74cd;})[_0xf47a('0x53')]();})[_0xf47a('0x31')](function(_0x35abf9){logger[_0xf47a('0x14')]('cmContact,\x20%s,\x20%s',_0xf47a('0x5d'),_0x35abf9[_0xf47a('0x1a')]);});}var processPromises=function(_0x1ad3de){return BPromise[_0xf47a('0x53')](promises)['then'](function(_0x2bab4d){})[_0xf47a('0x31')](function(_0x227e8b){logger[_0xf47a('0x14')](_0xf47a('0x5e'),JSON['stringify'](_0x227e8b));})[_0xf47a('0x5f')](function(){socket[_0xf47a('0x60')](_0xf47a('0x61')+SOCKET_TIMESTAMP,{'success':success,'errors':errors,'duplicates':duplicates,'rows':rows});promises=[];success=0x0;errors=0x0;duplicates=0x0;rows=[];if(_0x1ad3de){return _0x1ad3de[_0xf47a('0x62')]();}});};var endCsv=function(){return BPromise[_0xf47a('0x63')]()[_0xf47a('0x2e')](function(){if(hopperContacts){return checkHopper();}})['then'](function(){socket[_0xf47a('0x60')]('contact:csv_'+SOCKET_TIMESTAMP,{'finished':!![],'success':success,'errors':errors,'duplicates':duplicates,'rows':rows});try{fs[_0xf47a('0x64')](FILEPATH);}catch(_0x2e3bcc){logger['error'](_0xf47a('0x65'),JSON[_0xf47a('0x33')](_0x2e3bcc));}finally{process['exit'](0x0);}});};process['on'](_0xf47a('0x66'),function(){logger[_0xf47a('0x67')](_0xf47a('0x68'));endCsv();});function main(){return BPromise[_0xf47a('0x63')]()[_0xf47a('0x2e')](function(){if(DUPLICATES){DUPLICATES=DUPLICATES[_0xf47a('0x11')](',');return db[_0xf47a('0x2b')][_0xf47a('0x4e')]({'where':{'ListId':LISTID},'attributes':DUPLICATES,'raw':!![]});}})['then'](function(_0x21dabf){var _0xd6f08d=fs['createReadStream'](FILEPATH,{'highWaterMark':0xf*0x400*0x400});Papa['parse'](_0xd6f08d,{'header':!![],'skipEmptyLines':!![],'step':function(_0x41ddd3,_0x3a0238){total+=0x1;var _0x49b0d8=total;promises[_0xf47a('0x2f')](checkRow(_0x41ddd3,_0x21dabf,_0x49b0d8)[_0xf47a('0x2e')](function(){success+=0x1;})[_0xf47a('0x31')](function(_0xc5cb1d){if(_0xc5cb1d[_0xf47a('0x14')]){errors+=0x1;delete _0xc5cb1d[_0xf47a('0x14')];}else if(_0xc5cb1d['duplicate']){duplicates+=0x1;delete _0xc5cb1d['duplicate'];}rows[_0xf47a('0x2f')](_0xc5cb1d);}));if(total%0xc8===0x0){_0x3a0238[_0xf47a('0x69')]();return processPromises(_0x3a0238);}},'complete':function(){return processPromises()[_0xf47a('0x2e')](function(){logger[_0xf47a('0x67')](_0xf47a('0x6a'));endCsv();});},'error':function(_0x8d80e7,_0x2a310c){logger[_0xf47a('0x67')](_0xf47a('0x6b'),JSON[_0xf47a('0x33')](_0x8d80e7));endCsv();}});})[_0xf47a('0x31')](function(_0x4d971b){logger[_0xf47a('0x14')](_0xf47a('0x6c'),JSON[_0xf47a('0x33')](_0x4d971b));});}main();
\ No newline at end of file
+var _0xf4f8=['phone','ContactId','ListId','createdAt','updatedAt','select','field','scheduledAt','toString','NOW()','from','where','deletedAt\x20IS\x20NULL','ListId\x20=\x20?','phone\x20IS\x20NOT\x20NULL','phone\x20NOT\x20IN\x20(?)','\x20=\x20?','insert','into','cm_hopper','cm_contacts','str','cm_hopper_black','findAll','outbound','Lists','get','dialCheckDuplicateType','always','VoiceQueueId','onlyIfOpen','sequelize','query','VoiceQueue','CmList','BlackLists','CampaignId','all','Campaign','cmContact,\x20%s,\x20%s','generalCheckHopper','Error\x20processing\x20rows\x20block:','finally','emit','contact:csv_','resume','resolve','unlinkSync','Unable\x20to\x20delete\x20temp\x20file:','exit','SIGINT','info','createReadStream','parse','pause','CSV\x20parsed\x20correctly!','CSV\x20parse\x20error','Error\x20executing\x20contact\x20csv\x20import:','util','lodash','squel','../../../config/environment','../../../config/logger','api','defaults','redis','localhost','register','argv','undefined','null','Missing\x20filepath\x20parameter!','Missing\x20binding\x20parameters!','split','Missing\x20ListId\x20parameter!','error','contact','index','test','isNil','The\x20row\x20is\x20empty\x20or\x20the\x20number\x20of\x20parameters\x20does\x20not\x20match\x20the\x20columns!','errors','length','map','message','join','hasOwnProperty','data','firstName','firstName\x20not\x20specified!','phone\x20not\x20specified!','birthDate','isValid','birthDate\x20format\x20is\x20invalid,\x20YYYY-MM-DD\x20format\x20is\x20supported!','email','email\x20format\x20is\x20not\x20valid!','CompanyId','find','duplicate','CmContact','create','keys','then','push','pick','catch','Error\x20while\x20creating\x20contact:\x20','stringify','cmContact','checkHopper','inspect','fromQuery'];(function(_0x1e90be,_0x2f6a67){var _0x413fc9=function(_0x29ab0c){while(--_0x29ab0c){_0x1e90be['push'](_0x1e90be['shift']());}};_0x413fc9(++_0x2f6a67);}(_0xf4f8,0x18a));var _0x8f4f=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0xf4f8[_0x3dd15e];return _0x231fd0;};'use strict';var BPromise=require('bluebird');var util=require(_0x8f4f('0x0'));var _=require(_0x8f4f('0x1'));var fs=require('fs');var squel=require(_0x8f4f('0x2'));var Papa=require('papaparse');var Redis=require('ioredis');var db=require('../../../mysqldb')['db'];var config=require(_0x8f4f('0x3'));var logger=require(_0x8f4f('0x4'))(_0x8f4f('0x5'));config['redis']=_[_0x8f4f('0x6')](config[_0x8f4f('0x7')],{'host':_0x8f4f('0x8'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config['redis']));require('../../../api/cmContact/cmContact.socket')[_0x8f4f('0x9')](socket);try{if(!process[_0x8f4f('0xa')][0x2]||process[_0x8f4f('0xa')][0x2]===_0x8f4f('0xb')||process[_0x8f4f('0xa')][0x2]===_0x8f4f('0xc')){throw new Error(_0x8f4f('0xd'));}var FILEPATH=process['argv'][0x2];if(!process[_0x8f4f('0xa')][0x3]||process['argv'][0x3]===_0x8f4f('0xb')||process['argv'][0x3]===_0x8f4f('0xc')||!process[_0x8f4f('0xa')][0x4]||process['argv'][0x4]===_0x8f4f('0xb')||process[_0x8f4f('0xa')][0x4]===_0x8f4f('0xc')){throw new Error(_0x8f4f('0xe'));}var FIELDS=_['zipObject'](process[_0x8f4f('0xa')][0x3][_0x8f4f('0xf')](','),process['argv'][0x4]['split'](','));if(!process['argv'][0x5]||process['argv'][0x5]==='undefined'||process[_0x8f4f('0xa')][0x5]==='null'){throw new Error(_0x8f4f('0x10'));}var LISTID=process[_0x8f4f('0xa')][0x5];var COMPANYID=process[_0x8f4f('0xa')][0x6]&&process[_0x8f4f('0xa')][0x6]!==_0x8f4f('0xb')&&process[_0x8f4f('0xa')][0x6]!=='null'?process[_0x8f4f('0xa')][0x6]:null;var DUPLICATES=process['argv'][0x7]&&process['argv'][0x7]!=='undefined'&&process[_0x8f4f('0xa')][0x7]!==_0x8f4f('0xc')?process[_0x8f4f('0xa')][0x7]:null;if(!process[_0x8f4f('0xa')][0x8]||process['argv'][0x8]==='undefined'||process['argv'][0x8]===_0x8f4f('0xc')){throw new Error('Missing\x20socket_timestamp\x20parameter!');}var SOCKET_TIMESTAMP=process[_0x8f4f('0xa')][0x8];}catch(_0x40d82e){logger[_0x8f4f('0x11')](_0x40d82e);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(_0x3f4426,_0x5fd281,_0x8d8a47,_0x479e40){var _0x10ddf3={'message':_0x5fd281};_0x10ddf3[_0x3f4426]=!![];if(_0x8d8a47){_0x10ddf3[_0x8f4f('0x12')]=_0x8d8a47;}if(_0x479e40){_0x10ddf3[_0x8f4f('0x13')]=_0x479e40;}return _0x10ddf3;}function isEmail(_0x4ba942){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))*$/[_0x8f4f('0x14')](_0x4ba942);}function checkRow(_0x415131,_0x48de2b,_0x23f790){return new BPromise(function(_0x3d7836,_0x4f009b){if(_[_0x8f4f('0x15')](_0x415131)){return _0x4f009b(handleCheckRowError(_0x8f4f('0x11'),_0x8f4f('0x16'),null,_0x23f790));}if(_0x415131['errors']&&_0x415131[_0x8f4f('0x17')][_0x8f4f('0x18')]){var _0x1b2ee6=_[_0x8f4f('0x19')](_0x415131[_0x8f4f('0x17')],_0x8f4f('0x1a'))[_0x8f4f('0x1b')](';');return _0x4f009b(handleCheckRowError(_0x8f4f('0x11'),_0x1b2ee6,null,_0x23f790));}var _0x3c438c={};for(var _0x75e511 in FIELDS){if(FIELDS[_0x8f4f('0x1c')](_0x75e511)&&FIELDS[_0x75e511]){_0x3c438c[_0x75e511]=_0x415131[_0x8f4f('0x1d')][0x0][FIELDS[_0x75e511]]||_0x415131[_0x8f4f('0x1d')][0x0]['\ufeff'+FIELDS[_0x75e511]];}}if(!_0x3c438c[_0x8f4f('0x1e')]){return _0x4f009b(handleCheckRowError('error',_0x8f4f('0x1f'),null,_0x23f790));}if(!_0x3c438c['phone']){return _0x4f009b(handleCheckRowError('error',_0x8f4f('0x20'),null,_0x23f790));}if(_0x3c438c[_0x8f4f('0x21')]){var _0x57c9ac=moment(_0x3c438c['birthDate'],'YYYY-MM-DD');if(!_0x57c9ac[_0x8f4f('0x22')]()){return _0x4f009b(handleCheckRowError(_0x8f4f('0x11'),_0x8f4f('0x23'),null,_0x23f790));}}if(_0x3c438c[_0x8f4f('0x24')]){if(!isEmail(_0x3c438c[_0x8f4f('0x24')])){return _0x4f009b(handleCheckRowError(_0x8f4f('0x11'),_0x8f4f('0x25'),null,_0x23f790));}}_0x3c438c['ListId']=LISTID;_0x3c438c[_0x8f4f('0x26')]=COMPANYID||undefined;if(DUPLICATES&&DUPLICATES['length']&&_0x48de2b){var _0x3b9554={};for(var _0x467687=0x0,_0x39261b=DUPLICATES['length'];_0x467687<_0x39261b;_0x467687+=0x1){_0x3b9554[DUPLICATES[_0x467687]]=_0x3c438c[DUPLICATES[_0x467687]];}var _0xbb05a7=_[_0x8f4f('0x27')](_0x48de2b,_0x3b9554);if(_0xbb05a7){return _0x4f009b(handleCheckRowError(_0x8f4f('0x28'),'Duplicate\x20Contact',_0xbb05a7,_0x23f790));}}return db[_0x8f4f('0x29')][_0x8f4f('0x2a')](_0x3c438c,{'raw':!![],'hooks':![],'fields':_[_0x8f4f('0x2b')](_0x3c438c)})[_0x8f4f('0x2c')](function(_0x14ce14){if(DUPLICATES&&DUPLICATES[_0x8f4f('0x18')]&&_0x48de2b){_0x48de2b[_0x8f4f('0x2d')](_[_0x8f4f('0x2e')](_0x3c438c,DUPLICATES));}hopperContacts+=(hopperContacts?',':'')+_0x14ce14['id'];return _0x3d7836();})[_0x8f4f('0x2f')](function(_0x315b77){return _0x4f009b(handleCheckRowError(_0x8f4f('0x11'),_0x8f4f('0x30')+(_0x315b77[_0x8f4f('0x1a')]||JSON[_0x8f4f('0x31')](_0x315b77)),null,_0x23f790));});});}function checkHopper(){function _0x413b14(){return function(_0x176b89){logger[_0x8f4f('0x11')](_0x8f4f('0x32'),_0x8f4f('0x33'),util[_0x8f4f('0x34')](_0x176b89,{'showHidden':![],'depth':null}));};}var _0x262ffe=function(_0x5378c2,_0x318299){var _0x4fec2e=squel['insert']()['into']('cm_hopper')[_0x8f4f('0x35')]([_0x8f4f('0x36'),'scheduledAt',_0x8f4f('0x37'),_0x8f4f('0x38'),_0x318299,_0x8f4f('0x39'),_0x8f4f('0x3a')],squel[_0x8f4f('0x3b')]()[_0x8f4f('0x3c')](_0x8f4f('0x36'),_0x8f4f('0x36'))['field']('NOW()',_0x8f4f('0x3d'))[_0x8f4f('0x3c')]('id',_0x8f4f('0x37'))[_0x8f4f('0x3c')](LISTID[_0x8f4f('0x3e')](),_0x8f4f('0x38'))[_0x8f4f('0x3c')](_0x5378c2['id'][_0x8f4f('0x3e')](),_0x318299)[_0x8f4f('0x3c')](_0x8f4f('0x3f'),_0x8f4f('0x39'))[_0x8f4f('0x3c')]('NOW()',_0x8f4f('0x3a'))[_0x8f4f('0x40')]('cm_contacts')[_0x8f4f('0x41')](_0x8f4f('0x42'))[_0x8f4f('0x41')](_0x8f4f('0x43'),LISTID[_0x8f4f('0x3e')]())[_0x8f4f('0x41')](_0x8f4f('0x44'))[_0x8f4f('0x41')](_0x8f4f('0x45'),squel['select']()[_0x8f4f('0x3c')](_0x8f4f('0x36'))[_0x8f4f('0x40')]('cm_hopper')[_0x8f4f('0x41')](_0x318299+_0x8f4f('0x46'),_0x5378c2['id']['toString']())))[_0x8f4f('0x3e')]();return _0x4fec2e;};var _0x10e7d4=function(_0x182fc0,_0x476dc1){var _0x34acb1=squel[_0x8f4f('0x47')]()[_0x8f4f('0x48')](_0x8f4f('0x49'))[_0x8f4f('0x35')](['phone','scheduledAt',_0x8f4f('0x37'),'ListId',_0x476dc1,'createdAt',_0x8f4f('0x3a')],squel[_0x8f4f('0x3b')]()[_0x8f4f('0x3c')](_0x8f4f('0x36'),_0x8f4f('0x36'))[_0x8f4f('0x3c')]('NOW()',_0x8f4f('0x3d'))[_0x8f4f('0x3c')]('id','ContactId')[_0x8f4f('0x3c')](LISTID[_0x8f4f('0x3e')](),_0x8f4f('0x38'))[_0x8f4f('0x3c')](_0x182fc0['id']['toString'](),_0x476dc1)[_0x8f4f('0x3c')](_0x8f4f('0x3f'),_0x8f4f('0x39'))[_0x8f4f('0x3c')]('NOW()',_0x8f4f('0x3a'))[_0x8f4f('0x40')](_0x8f4f('0x4a'))[_0x8f4f('0x41')](_0x8f4f('0x42'))[_0x8f4f('0x41')](_0x8f4f('0x43'),LISTID[_0x8f4f('0x3e')]())[_0x8f4f('0x41')]('id\x20IN\x20?',squel[_0x8f4f('0x4b')](hopperContacts))[_0x8f4f('0x41')]('phone\x20IS\x20NOT\x20NULL')[_0x8f4f('0x41')](_0x8f4f('0x45'),squel['select']()[_0x8f4f('0x3c')]('calleridnum')['from']('cm_hopper_final')[_0x8f4f('0x41')](_0x476dc1+'\x20=\x20?',_0x182fc0['id'][_0x8f4f('0x3e')]()))[_0x8f4f('0x41')](_0x8f4f('0x45'),squel[_0x8f4f('0x3b')]()[_0x8f4f('0x3c')](_0x8f4f('0x36'))[_0x8f4f('0x40')](_0x8f4f('0x49'))[_0x8f4f('0x41')](_0x476dc1+_0x8f4f('0x46'),_0x182fc0['id']['toString']())))[_0x8f4f('0x3e')]();return _0x34acb1;};function _0x386266(_0x38dd0a,_0x17258b){var _0x59588e=squel['insert']()['into'](_0x8f4f('0x49'))[_0x8f4f('0x35')]([_0x8f4f('0x36'),_0x8f4f('0x3d'),_0x8f4f('0x37'),_0x8f4f('0x38'),_0x17258b,_0x8f4f('0x39'),'updatedAt'],squel[_0x8f4f('0x3b')]()[_0x8f4f('0x3c')](_0x8f4f('0x36'),_0x8f4f('0x36'))[_0x8f4f('0x3c')](_0x8f4f('0x3f'),_0x8f4f('0x3d'))[_0x8f4f('0x3c')]('id',_0x8f4f('0x37'))['field'](LISTID[_0x8f4f('0x3e')](),_0x8f4f('0x38'))['field'](_0x38dd0a['id'][_0x8f4f('0x3e')](),_0x17258b)[_0x8f4f('0x3c')]('NOW()',_0x8f4f('0x39'))[_0x8f4f('0x3c')](_0x8f4f('0x3f'),'updatedAt')[_0x8f4f('0x40')](_0x8f4f('0x4a'))['where']('deletedAt\x20IS\x20NULL')[_0x8f4f('0x41')](_0x8f4f('0x43'),LISTID[_0x8f4f('0x3e')]())['where']('id\x20IN\x20?',squel['str'](hopperContacts))[_0x8f4f('0x41')](_0x8f4f('0x44')))[_0x8f4f('0x3e')]();return _0x59588e;}function _0x2654ce(_0x319336,_0x10fce5){var _0x4758b0=squel[_0x8f4f('0x47')]()[_0x8f4f('0x48')](_0x8f4f('0x4c'))[_0x8f4f('0x35')]([_0x8f4f('0x36'),_0x8f4f('0x37'),_0x8f4f('0x38'),_0x10fce5,'createdAt',_0x8f4f('0x3a')],squel['select']()[_0x8f4f('0x3c')]('phone',_0x8f4f('0x36'))[_0x8f4f('0x3c')]('id',_0x8f4f('0x37'))[_0x8f4f('0x3c')](LISTID[_0x8f4f('0x3e')](),_0x8f4f('0x38'))['field'](_0x319336['id'][_0x8f4f('0x3e')](),_0x10fce5)[_0x8f4f('0x3c')](_0x8f4f('0x3f'),_0x8f4f('0x39'))[_0x8f4f('0x3c')](_0x8f4f('0x3f'),_0x8f4f('0x3a'))[_0x8f4f('0x40')](_0x8f4f('0x4a'))[_0x8f4f('0x41')](_0x8f4f('0x42'))[_0x8f4f('0x41')](_0x8f4f('0x43'),LISTID[_0x8f4f('0x3e')]())[_0x8f4f('0x41')]('id\x20IN\x20?',squel[_0x8f4f('0x4b')](hopperContacts))[_0x8f4f('0x41')](_0x8f4f('0x44')))[_0x8f4f('0x3e')]();return _0x4758b0;}return db['VoiceQueue'][_0x8f4f('0x4d')]({'where':{'type':_0x8f4f('0x4e')},'attributes':['id','dialCheckDuplicateType'],'include':[{'model':db['CmList'],'as':_0x8f4f('0x4f'),'where':{'id':LISTID}}]})[_0x8f4f('0x2c')](function(_0x3bfaa8){var _0x31a0c9=[];if(_0x3bfaa8){var _0x5b074b;for(var _0x27cb7d=0x0,_0x4c709a;_0x27cb7d<_0x3bfaa8[_0x8f4f('0x18')];_0x27cb7d+=0x1){_0x4c709a=_0x3bfaa8[_0x27cb7d][_0x8f4f('0x50')]({'plain':!![]});switch(_0x4c709a[_0x8f4f('0x51')]){case _0x8f4f('0x52'):_0x31a0c9['push'](db['sequelize']['query'](_0x10e7d4(_0x4c709a,_0x8f4f('0x53')))['then'](function(){})['catch'](_0x413b14()));break;case _0x8f4f('0x54'):_0x31a0c9['push'](db[_0x8f4f('0x55')][_0x8f4f('0x56')](_0x262ffe(_0x4c709a,_0x8f4f('0x53')))[_0x8f4f('0x2c')](function(){})['catch'](_0x413b14()));break;default:_0x31a0c9[_0x8f4f('0x2d')](db[_0x8f4f('0x55')][_0x8f4f('0x56')](_0x386266(_0x4c709a,'VoiceQueueId'))[_0x8f4f('0x2c')](function(){})[_0x8f4f('0x2f')](_0x413b14()));}}}return _0x31a0c9;})['all']()[_0x8f4f('0x2c')](function(){return db[_0x8f4f('0x57')][_0x8f4f('0x4d')]({'where':{'type':_0x8f4f('0x4e')},'attributes':['id'],'include':[{'model':db[_0x8f4f('0x58')],'as':_0x8f4f('0x59'),'where':{'id':LISTID}}]})['then'](function(_0x1f007f){var _0x7d9e49=[];if(_0x1f007f){var _0x2599ba;for(var _0x1e8920=0x0,_0x43bcf8;_0x1e8920<_0x1f007f[_0x8f4f('0x18')];_0x1e8920+=0x1){_0x43bcf8=_0x1f007f[_0x1e8920][_0x8f4f('0x50')]({'plain':!![]});_0x7d9e49['push'](db[_0x8f4f('0x55')][_0x8f4f('0x56')](_0x2654ce(_0x43bcf8,'VoiceQueueId'))[_0x8f4f('0x2c')](function(){})[_0x8f4f('0x2f')](_0x413b14()));}}return _0x7d9e49;})['all']();})[_0x8f4f('0x2c')](function(){return db['Campaign'][_0x8f4f('0x4d')]({'attributes':['id',_0x8f4f('0x51')],'include':[{'model':db['CmList'],'as':_0x8f4f('0x4f'),'where':{'id':LISTID}}]})[_0x8f4f('0x2c')](function(_0x2f7aa7){var _0x1c2a00=[];if(_0x2f7aa7){for(var _0x7321e=0x0,_0x34ba27;_0x7321e<_0x2f7aa7[_0x8f4f('0x18')];_0x7321e+=0x1){_0x34ba27=_0x2f7aa7[_0x7321e][_0x8f4f('0x50')]({'plain':!![]});switch(_0x34ba27['dialCheckDuplicateType']){case _0x8f4f('0x52'):_0x1c2a00['push'](db[_0x8f4f('0x55')][_0x8f4f('0x56')](_0x10e7d4(_0x34ba27,_0x8f4f('0x5a')))[_0x8f4f('0x2c')](function(){})[_0x8f4f('0x2f')](_0x413b14()));break;case _0x8f4f('0x54'):_0x1c2a00[_0x8f4f('0x2d')](db['sequelize']['query'](_0x262ffe(_0x34ba27,'CampaignId'))['then'](function(){})[_0x8f4f('0x2f')](_0x413b14()));break;default:_0x1c2a00[_0x8f4f('0x2d')](db[_0x8f4f('0x55')][_0x8f4f('0x56')](_0x386266(_0x34ba27,'CampaignId'))[_0x8f4f('0x2c')](function(){})[_0x8f4f('0x2f')](_0x413b14()));}}}return _0x1c2a00;})[_0x8f4f('0x5b')]();})[_0x8f4f('0x2c')](function(){return db[_0x8f4f('0x5c')][_0x8f4f('0x4d')]({'attributes':['id'],'include':[{'model':db[_0x8f4f('0x58')],'as':_0x8f4f('0x59'),'where':{'id':LISTID}}]})['then'](function(_0x125be9){var _0x186ba4=[];if(_0x125be9){for(var _0x35d586=0x0,_0x3ae70e;_0x35d586<_0x125be9[_0x8f4f('0x18')];_0x35d586+=0x1){_0x3ae70e=_0x125be9[_0x35d586]['get']({'plain':!![]});_0x186ba4[_0x8f4f('0x2d')](db['sequelize'][_0x8f4f('0x56')](_0x2654ce(_0x3ae70e,_0x8f4f('0x5a')))['then'](function(){})['catch'](_0x413b14()));}}return _0x186ba4;})[_0x8f4f('0x5b')]();})[_0x8f4f('0x2f')](function(_0x2aa5c4){logger[_0x8f4f('0x11')](_0x8f4f('0x5d'),_0x8f4f('0x5e'),_0x2aa5c4[_0x8f4f('0x1a')]);});}var processPromises=function(_0x3dd6fa){return BPromise[_0x8f4f('0x5b')](promises)[_0x8f4f('0x2c')](function(_0x2bd6f0){})[_0x8f4f('0x2f')](function(_0x2c01fa){logger['error'](_0x8f4f('0x5f'),JSON[_0x8f4f('0x31')](_0x2c01fa));})[_0x8f4f('0x60')](function(){socket[_0x8f4f('0x61')](_0x8f4f('0x62')+SOCKET_TIMESTAMP,{'success':success,'errors':errors,'duplicates':duplicates,'rows':rows});promises=[];success=0x0;errors=0x0;duplicates=0x0;rows=[];if(_0x3dd6fa){return _0x3dd6fa[_0x8f4f('0x63')]();}});};var endCsv=function(){return BPromise[_0x8f4f('0x64')]()['then'](function(){if(hopperContacts){return checkHopper();}})[_0x8f4f('0x2c')](function(){socket['emit'](_0x8f4f('0x62')+SOCKET_TIMESTAMP,{'finished':!![],'success':success,'errors':errors,'duplicates':duplicates,'rows':rows});try{fs[_0x8f4f('0x65')](FILEPATH);}catch(_0x33c23c){logger[_0x8f4f('0x11')](_0x8f4f('0x66'),JSON[_0x8f4f('0x31')](_0x33c23c));}finally{process[_0x8f4f('0x67')](0x0);}});};process['on'](_0x8f4f('0x68'),function(){logger[_0x8f4f('0x69')]('CSV\x20import\x20process\x20stopped!');endCsv();});function main(){return BPromise[_0x8f4f('0x64')]()[_0x8f4f('0x2c')](function(){if(DUPLICATES){DUPLICATES=DUPLICATES[_0x8f4f('0xf')](',');return db[_0x8f4f('0x29')][_0x8f4f('0x4d')]({'where':{'ListId':LISTID},'attributes':DUPLICATES,'raw':!![]});}})[_0x8f4f('0x2c')](function(_0x2d4480){var _0x297e4b=fs[_0x8f4f('0x6a')](FILEPATH,{'highWaterMark':0xf*0x400*0x400});Papa[_0x8f4f('0x6b')](_0x297e4b,{'header':!![],'skipEmptyLines':!![],'step':function(_0x3b6ca7,_0xd92582){total+=0x1;var _0x39453f=total;promises[_0x8f4f('0x2d')](checkRow(_0x3b6ca7,_0x2d4480,_0x39453f)[_0x8f4f('0x2c')](function(){success+=0x1;})[_0x8f4f('0x2f')](function(_0x18e2f5){if(_0x18e2f5[_0x8f4f('0x11')]){errors+=0x1;delete _0x18e2f5[_0x8f4f('0x11')];}else if(_0x18e2f5[_0x8f4f('0x28')]){duplicates+=0x1;delete _0x18e2f5[_0x8f4f('0x28')];}rows[_0x8f4f('0x2d')](_0x18e2f5);}));if(total%0xc8===0x0){_0xd92582[_0x8f4f('0x6c')]();return processPromises(_0xd92582);}},'complete':function(){return processPromises()[_0x8f4f('0x2c')](function(){logger[_0x8f4f('0x69')](_0x8f4f('0x6d'));endCsv();});},'error':function(_0x3fe52f,_0x21a218){logger[_0x8f4f('0x69')](_0x8f4f('0x6e'),JSON[_0x8f4f('0x31')](_0x3fe52f));endCsv();}});})[_0x8f4f('0x2f')](function(_0x847e1e){logger[_0x8f4f('0x11')](_0x8f4f('0x6f'),JSON[_0x8f4f('0x31')](_0x847e1e));});}main();
\ No newline at end of file
index a280b9c..636403f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x547c=['.dialCheckDuplicateType\x20IN\x20(','join','cm_contacts.phone','cm_contacts.scheduledat','cm_contacts.ListId','cm_contacts.createdAt','cm_contacts.updatedAt','cm_contacts.priority','insert','cm_hopper','scheduledat','ListId','createdAt','updatedAt','UserId','recallme','fields','cm_contacts','.CmListId','cm_contacts.createdAt\x20=\x20?','cm_contacts.phone\x20NOT\x20IN\x20(?)','\x22always\x22','\x22onlyIfOpen\x22','cm_contacts.id','cm_hopper_black','fromQuery','cm_contacts.ListId\x20=\x20','.id\x20=\x20','.CmListId\x20=\x20?','ListId\x20=\x20?','\x20=\x20?','toString','concat','CompanyId','into',')\x20NOT\x20IN\x20?','id\x20IN\x20?','group','info','Received\x20SIGINT','error','message','exit','errors','push','code','sequelize','query','spread','catch','stringify','send','start','socket_timestamp','root','server/files/tmp','.csv','keys','header','writeFileSync','parse','createReadStream','data','length','rows','hasOwnProperty','trim','replace','scheduledat\x20wrong\x20format\x20(YYYY-MM-DD\x20HH:mm:ss)','priority','isNaN','includes','email\x20wrong\x20format','YYYY-MM-DD','dateOfBirth\x20wrong\x20format\x20(YYYY-MM-DD)','firstName','\x20not\x20specified','SystemRow','appendFileSync','contact:import:','Abort\x20parser','abort','SystemError','step','duplicates','cm_contacts_','CREATE\x20TABLE\x20','\x20LIKE\x20cm_contacts;','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','isNil',',\x20scheduledAt\x20=\x20NOW()','DROP\x20TABLE\x20','voice_queues_has_cm_lists','voice_queues','VoiceQueueId','campaigns_has_cm_lists','campaigns','campaigns_has_cm_blacklists','CampaignId','then','affectedRows','emit','unlink','complete','argv','file\x20doesn\x27t\x20exists','binding','firstName\x20is\x20mandatory','ListId\x20is\x20mandatory','body\x20id\x20mandatory','map','SIGINT','uncaughtException','path','util','bluebird','moment','squel','ioredis','../../../mysqldb','../../../config/environment','../../../config/logger','import','redis','localhost','socket.io-emitter','format','YYYY-MM-DD\x20HH:mm:ss','select','field','phone','from','where','\x20=\x20'];(function(_0x2a43bd,_0x182169){var _0x597a13=function(_0x38bf35){while(--_0x38bf35){_0x2a43bd['push'](_0x2a43bd['shift']());}};_0x597a13(++_0x182169);}(_0x547c,0x17d));var _0xc547=function(_0x301017,_0x439058){_0x301017=_0x301017-0x0;var _0x24a7d4=_0x547c[_0x301017];return _0x24a7d4;};'use strict';var fs=require('fs');var path=require(_0xc547('0x0'));var _=require('lodash');var Papa=require('papaparse');var util=require(_0xc547('0x1'));var BPromise=require(_0xc547('0x2'));var moment=require(_0xc547('0x3'));var squel=require(_0xc547('0x4'));var Redis=require(_0xc547('0x5'));var db=require(_0xc547('0x6'))['db'];var config=require(_0xc547('0x7'));var logger=require(_0xc547('0x8'))(_0xc547('0x9'));config[_0xc547('0xa')]=_['defaults'](config['redis'],{'host':_0xc547('0xb'),'port':0x18eb});var socket=require(_0xc547('0xc'))(new Redis(config[_0xc547('0xa')]));var stats={'finish':![],'errors':[],'rows':0x0,'affectedRows':0x0};var results=[];var stopped=![];var NOW=moment()[_0xc547('0xd')](_0xc547('0xe'));function isEmail(_0x2012cd){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))*$/['test'](_0x2012cd);}function selectNotIn(_0x2a75e8,_0x4d44cd,_0x132a59,_0x4b4b9c,_0xfe7a81){return squel[_0xc547('0xf')]()[_0xc547('0x10')](_0xc547('0x11'))[_0xc547('0x12')](_0x4b4b9c)['join'](_0x4d44cd,null,_0x4d44cd+'.id\x20=\x20'+_0x4b4b9c+'.'+_0x132a59)[_0xc547('0x13')](_0x4b4b9c+'.'+_0x132a59+_0xc547('0x14')+_0x2a75e8+'.'+_0x132a59)[_0xc547('0x13')](_0x4d44cd+_0xc547('0x15')+_0xfe7a81[_0xc547('0x16')]()+')');}function insertCmHopper(_0x179472,_0xfd1f15,_0x50d01e,_0x1fe5db,_0x460ff9){var _0x3f6d4e=[_0xc547('0x17'),_0xc547('0x18'),'cm_contacts.id',_0xc547('0x19'),_0xfd1f15+'.'+_0x1fe5db,_0xc547('0x1a'),_0xc547('0x1b'),_0xc547('0x1c'),'cm_contacts.UserId','\x22'+_0x460ff9+'\x22'];return squel[_0xc547('0x1d')]()['into'](_0xc547('0x1e'))['fromQuery'](['phone',_0xc547('0x1f'),'ContactId',_0xc547('0x20'),_0x1fe5db,_0xc547('0x21'),_0xc547('0x22'),'priority',_0xc547('0x23'),_0xc547('0x24')],squel[_0xc547('0xf')]()[_0xc547('0x25')](_0x3f6d4e)['from'](_0xfd1f15)['join'](_0xc547('0x26'),null,'cm_contacts.ListId\x20=\x20'+_0xfd1f15+_0xc547('0x27'))[_0xc547('0x16')](_0x50d01e,null,_0x50d01e+'.id\x20=\x20'+_0xfd1f15+'.'+_0x1fe5db)[_0xc547('0x13')](_0xfd1f15+'.CmListId\x20=\x20?',_0x179472)[_0xc547('0x13')](_0xc547('0x28'),NOW)[_0xc547('0x13')](_0xc547('0x29'),selectNotIn(_0xfd1f15,_0x50d01e,_0x1fe5db,'cm_hopper',[_0xc547('0x2a'),_0xc547('0x2b')]))[_0xc547('0x13')](_0xc547('0x29'),selectNotIn(_0xfd1f15,_0x50d01e,_0x1fe5db,_0xc547('0x1e'),['\x22always\x22'])))['toString']();}function insertCmHopperBlack(_0x1a59bd,_0x18ed06,_0x5e508f,_0x3b2922){var _0x371241=[_0xc547('0x17'),_0xc547('0x2c'),_0xc547('0x19'),_0x18ed06+'.'+_0x3b2922,'cm_contacts.createdAt',_0xc547('0x1b')];return squel['insert']()['into'](_0xc547('0x2d'))[_0xc547('0x2e')](['phone','ContactId',_0xc547('0x20'),_0x3b2922,_0xc547('0x21'),'updatedAt'],squel[_0xc547('0xf')]()['fields'](_0x371241)['from'](_0x18ed06)[_0xc547('0x16')](_0xc547('0x26'),null,_0xc547('0x2f')+_0x18ed06+_0xc547('0x27'))['join'](_0x5e508f,null,_0x5e508f+_0xc547('0x30')+_0x18ed06+'.'+_0x3b2922)[_0xc547('0x13')](_0x18ed06+_0xc547('0x31'),_0x1a59bd)['where'](_0xc547('0x28'),NOW)[_0xc547('0x13')](_0xc547('0x29'),squel[_0xc547('0xf')]()[_0xc547('0x10')]('phone')[_0xc547('0x12')](_0xc547('0x2d'))['where'](_0xc547('0x32'),_0x1a59bd)[_0xc547('0x13')](_0x3b2922+_0xc547('0x33'),_0x18ed06+'.'+_0x3b2922)))[_0xc547('0x34')]();}function insertCmContact(_0x115721,_0x17e1db,_0x51e56c,_0x48970d){var _0x17abad=_[_0xc547('0x35')](_['keys'](_0x48970d),['ListId',_0xc547('0x36'),_0xc547('0x21'),_0xc547('0x22')]);return squel[_0xc547('0x1d')]()[_0xc547('0x37')]('cm_contacts')[_0xc547('0x2e')](_0x17abad,squel[_0xc547('0xf')]()['fields'](_0x17abad)['from'](_0x17e1db)[_0xc547('0x13')]('('+_0x51e56c[_0xc547('0x16')](',')+_0xc547('0x38'),squel[_0xc547('0xf')]()['fields'](_0x51e56c)['from'](_0xc547('0x26'))['where']('ListId\x20=\x20?',_0x115721)[_0xc547('0x13')]('deletedAt\x20IS\x20NULL'))[_0xc547('0x13')](_0xc547('0x39'),squel[_0xc547('0xf')]()[_0xc547('0x10')]('MIN(id)','min_id')['from'](_0x17e1db)[_0xc547('0x3a')](_0x51e56c[_0xc547('0x16')](','))))[_0xc547('0x34')]();}function handleStop(){logger[_0xc547('0x3b')](_0xc547('0x3c'));stopped=!![];}function handleUncaughtException(_0x1c8824){logger[_0xc547('0x3d')](_0x1c8824[_0xc547('0x3e')]);process[_0xc547('0x3f')](0x1);}function handleError(_0x2a8e30,_0x40c637){stats[_0xc547('0x40')][_0xc547('0x41')]({'name':_0x40c637[_0xc547('0x42')],'message':_0x40c637[_0xc547('0x3e')],'row':_0x2a8e30});}function handleQuery(_0xd52e2d){logger[_0xc547('0x3b')](_0xd52e2d);return db[_0xc547('0x43')][_0xc547('0x44')](_0xd52e2d)[_0xc547('0x45')](function(_0x4e1a65){results['push'](_0x4e1a65);})[_0xc547('0x46')](function(_0x48edf8){logger[_0xc547('0x3d')](_0x48edf8[_0xc547('0x3e')]);});}function main(_0x5d8ea2,_0x5f296d,_0x4b400a,_0x243e91){logger[_0xc547('0x3b')]('main',_0x5d8ea2,JSON[_0xc547('0x47')](_0x5f296d));process[_0xc547('0x48')](_0xc547('0x49'));var _0x7195d4=_0x5f296d['binding'];var _0x1fdf35=_0x5f296d[_0xc547('0x4a')];var _0x51af15=path['join'](config[_0xc547('0x4b')],_0xc547('0x4c'),_0x1fdf35+_0xc547('0x4d'));var _0x2ba202=_[_0xc547('0x4e')](_0x7195d4)[_0xc547('0x16')]();logger[_0xc547('0x3b')](_0xc547('0x4f'),_0x2ba202);fs[_0xc547('0x50')](_0x51af15,_0x2ba202+'\x0a');Papa[_0xc547('0x51')](fs[_0xc547('0x52')](_0x5d8ea2),{'header':!![],'skipEmptyLines':!![],'step':function(_0xd03a2d,_0x5385d9){try{for(var _0x495509=0x0,_0x1cdd7b=[];_0x495509<_0xd03a2d[_0xc547('0x53')][_0xc547('0x54')];_0x495509++){stats[_0xc547('0x55')]+=0x1;if(_0xd03a2d[_0xc547('0x40')][_0x495509]){handleError(_0xd03a2d[_0xc547('0x53')][_0x495509],_0xd03a2d[_0xc547('0x40')][_0x495509]);}else{var _0x46a97a=[];for(var _0x4e0062 in _0x7195d4){if(_0x7195d4[_0xc547('0x56')](_0x4e0062)){if(_0xd03a2d[_0xc547('0x53')][_0x495509][_0x7195d4[_0x4e0062]]){var _0xf42ada=_[_0xc547('0x57')](_0xd03a2d[_0xc547('0x53')][_0x495509][_0x7195d4[_0x4e0062]][_0xc547('0x58')](/"/g,'\x27'));switch(_0x4e0062){case _0xc547('0x1f'):var _0x57174b=moment(_0xf42ada,_0xc547('0xe'),!![]);if(_0x57174b['isValid']()){_0x1cdd7b['push']('\x22'+_0xf42ada+'\x22');}else{_0x46a97a[_0xc547('0x41')](_0xc547('0x59'));}break;case _0xc547('0x5a'):var _0x2026fd=parseInt(_0xf42ada);_0xf42ada=_[_0xc547('0x5b')](_0x2026fd)||_0x2026fd<0x0||_0x2026fd>0x4?_0x243e91?0x3:0x2:_0x2026fd;_0x1cdd7b[_0xc547('0x41')]('\x22'+_0xf42ada+'\x22');break;case _0xc547('0x23'):var _0x5712fe=parseInt(_0xf42ada);if(_['isNumber'](_0x5712fe)&&_[_0xc547('0x5c')](_0x4b400a,_0x5712fe)){_0x1cdd7b[_0xc547('0x41')]('\x22'+_0x5712fe+'\x22');}else{_0x46a97a['push']('agent\x20not\x20exists');}break;case'email':if(isEmail(_0xf42ada)){_0x1cdd7b[_0xc547('0x41')]('\x22'+_0xf42ada+'\x22');}else{_0x46a97a[_0xc547('0x41')](_0xc547('0x5d'));}break;case'dateOfBirth':var _0x29d08d=moment(_0xf42ada,_0xc547('0x5e'),!![]);if(_0x29d08d['isValid']()){_0x1cdd7b[_0xc547('0x41')]('\x22'+_0xf42ada+'\x22');}else{_0x46a97a[_0xc547('0x41')](_0xc547('0x5f'));}break;default:_0x1cdd7b[_0xc547('0x41')]('\x22'+_0xf42ada+'\x22');}}else{switch(_0x4e0062){case _0xc547('0x60'):case _0xc547('0x11'):_0x46a97a[_0xc547('0x41')](_0x4e0062+_0xc547('0x61'));break;default:_0x1cdd7b[_0xc547('0x41')]('\x22\x22');}}}}if(_0x46a97a[_0xc547('0x54')]){handleError(_0xd03a2d[_0xc547('0x53')][_0x495509],{'code':_0xc547('0x62'),'message':_0x46a97a['join']()});}else{fs[_0xc547('0x63')](_0x51af15,_0x1cdd7b['join']()+'\x0a');}_0x1cdd7b=[];}if(!(stats['rows']%0xc8)){socket['emit'](_0xc547('0x64')+_0x1fdf35,stats);stats[_0xc547('0x40')]=[];}}if(stopped){logger[_0xc547('0x3b')](_0xc547('0x65'));_0x5385d9[_0xc547('0x66')]();}}catch(_0x50601d){handleError(_0xd03a2d[_0xc547('0x53')][_0x495509],{'code':_0xc547('0x67'),'message':_0x50601d[_0xc547('0x3e')]});logger[_0xc547('0x3d')](_0xc547('0x68'),_0x50601d[_0xc547('0x3e')]);}},'complete':function(){try{var _0x59a4f3=[];var _0x269a75=_0xc547('0x26');if(_0x5f296d[_0xc547('0x69')]&&_0x5f296d['duplicates'][_0xc547('0x54')]){_0x269a75=_0xc547('0x6a')+_0x1fdf35;_0x59a4f3[_0xc547('0x41')](_0xc547('0x6b')+_0x269a75+_0xc547('0x6c'));}var _0x1e4686=util[_0xc547('0xd')](_0xc547('0x6d'),_0x51af15,_0x269a75,_0x2ba202,_0x5f296d['ListId'],_0x5f296d[_0xc547('0x36')]||null,NOW,NOW);if(_[_0xc547('0x6e')](_0x7195d4['scheduledat'])){_0x1e4686+=_0xc547('0x6f');}_0x59a4f3[_0xc547('0x41')](_0x1e4686);if(_0x5f296d[_0xc547('0x69')]&&_0x5f296d[_0xc547('0x69')][_0xc547('0x54')]){_0x59a4f3['push'](insertCmContact(_0x5f296d[_0xc547('0x20')],_0x269a75,_0x5f296d[_0xc547('0x69')],_0x7195d4));_0x59a4f3[_0xc547('0x41')](_0xc547('0x70')+_0x269a75+';');}_0x59a4f3[_0xc547('0x41')](insertCmHopper(_0x5f296d['ListId'],_0xc547('0x71'),'voice_queues','VoiceQueueId',_0x243e91));_0x59a4f3[_0xc547('0x41')](insertCmHopperBlack(_0x5f296d[_0xc547('0x20')],'voice_queues_has_cm_blacklists',_0xc547('0x72'),_0xc547('0x73')));_0x59a4f3[_0xc547('0x41')](insertCmHopper(_0x5f296d[_0xc547('0x20')],_0xc547('0x74'),_0xc547('0x75'),'CampaignId',_0x243e91));_0x59a4f3[_0xc547('0x41')](insertCmHopperBlack(_0x5f296d['ListId'],_0xc547('0x76'),_0xc547('0x75'),_0xc547('0x77')));BPromise['each'](_0x59a4f3,handleQuery)[_0xc547('0x78')](function(_0x2e9faa){stats['finish']=!![];stats[_0xc547('0x79')]=_0x5f296d[_0xc547('0x69')]&&_0x5f296d[_0xc547('0x69')][_0xc547('0x54')]?results[0x2][_0xc547('0x79')]:results[0x0][_0xc547('0x79')];socket[_0xc547('0x7a')](_0xc547('0x64')+_0x1fdf35,stats);fs['unlink'](_0x5d8ea2);fs[_0xc547('0x7b')](_0x51af15);process[_0xc547('0x3f')](0x0);})[_0xc547('0x46')](function(_0x29739e){logger[_0xc547('0x3d')](_0x29739e[_0xc547('0x3e')]);process[_0xc547('0x3f')](0x1);});}catch(_0x18ac46){logger[_0xc547('0x3d')](_0xc547('0x7c'),_0x18ac46[_0xc547('0x3e')]);process[_0xc547('0x3f')](0x1);}},'error':function(_0x350066,_0x8015f8,_0x1671fe,_0x2967a2){throw new Error(_0x2967a2);}});}function validate(){if(process[_0xc547('0x7d')]&&process[_0xc547('0x7d')][_0xc547('0x54')]<0x4){throw new Error('arguments\x20<filename>\x20<parameters>\x20<agents>');}var _0x3acd2d=path[_0xc547('0x16')](config[_0xc547('0x4b')],_0xc547('0x4c'),process[_0xc547('0x7d')][0x2]);if(!fs['existsSync'](_0x3acd2d)){throw new Error(_0xc547('0x7e'));}var _0x5eb45e={};try{_0x5eb45e=JSON[_0xc547('0x51')](process[_0xc547('0x7d')][0x3]);if(!_0x5eb45e[_0xc547('0x7f')]){throw new Error('binding\x20doesn\x27t\x20exists');}if(!_0x5eb45e[_0xc547('0x7f')]['phone']){throw new Error('phone\x20is\x20mandatory');}if(!_0x5eb45e['binding'][_0xc547('0x60')]){throw new Error(_0xc547('0x80'));}var _0x2da3af=0x0;if(_0x5eb45e[_0xc547('0x7f')][_0xc547('0x23')]){_0x2da3af=0x1;}if(!_0x5eb45e[_0xc547('0x20')]){throw new Error(_0xc547('0x81'));}}catch(_0x45a517){throw new Error(_0xc547('0x82'));}var _0x14d91a=[];try{_0x14d91a=_[_0xc547('0x83')](JSON[_0xc547('0x51')](process[_0xc547('0x7d')][0x4]),'id');}catch(_0x1f9f48){logger[_0xc547('0x3b')]('No\x20agent\x20available');}main(_0x3acd2d,_0x5eb45e,_0x14d91a,_0x2da3af);}validate();process['on'](_0xc547('0x84'),handleStop);process['on'](_0xc547('0x85'),handleUncaughtException);
\ No newline at end of file
+var _0x66b2=['firstName','\x20not\x20specified','emit','contact:import:','Abort\x20parser','abort','SystemError','step','duplicates','cm_contacts_','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','isNil',',\x20scheduledAt\x20=\x20NOW()','DROP\x20TABLE\x20','voice_queues_has_cm_lists','voice_queues','VoiceQueueId','voice_queues_has_cm_blacklists','campaigns','CampaignId','campaigns_has_cm_blacklists','each','then','affectedRows','unlink','argv','arguments\x20<filename>\x20<parameters>\x20<agents>','existsSync','file\x20doesn\x27t\x20exists','binding\x20doesn\x27t\x20exists','phone\x20is\x20mandatory','firstName\x20is\x20mandatory','UserId','ListId\x20is\x20mandatory','body\x20id\x20mandatory','No\x20agent\x20available','SIGINT','uncaughtException','path','lodash','papaparse','util','moment','squel','ioredis','../../../config/environment','../../../config/logger','import','redis','defaults','socket.io-emitter','format','test','select','field','phone','from','where','.dialCheckDuplicateType\x20IN\x20(','join','cm_contacts.phone','cm_contacts.id','cm_contacts.ListId','cm_contacts.createdAt','cm_contacts.updatedAt','cm_contacts.priority','cm_contacts.UserId','insert','cm_hopper','fromQuery','scheduledat','ContactId','ListId','updatedAt','priority','recallme','fields','cm_contacts','cm_contacts.ListId\x20=\x20','.CmListId','.id\x20=\x20','.CmListId\x20=\x20?','cm_contacts.createdAt\x20=\x20?','cm_contacts.phone\x20NOT\x20IN\x20(?)','\x22always\x22','\x22onlyIfOpen\x22','into','cm_hopper_black','ListId\x20=\x20?','\x20=\x20?','toString','keys','CompanyId',')\x20NOT\x20IN\x20?','id\x20IN\x20?','MIN(id)','min_id','group','Received\x20SIGINT','error','message','exit','errors','push','code','info','sequelize','query','catch','main','stringify','start','binding','socket_timestamp','root','server/files/tmp','writeFileSync','parse','createReadStream','data','length','rows','replace','isValid','scheduledat\x20wrong\x20format\x20(YYYY-MM-DD\x20HH:mm:ss)','isNaN','email','dateOfBirth','YYYY-MM-DD'];(function(_0xfdec06,_0x9fa2f4){var _0x58a539=function(_0xfc799c){while(--_0xfc799c){_0xfdec06['push'](_0xfdec06['shift']());}};_0x58a539(++_0x9fa2f4);}(_0x66b2,0x1ad));var _0x266b=function(_0x2a4e2b,_0x423e6b){_0x2a4e2b=_0x2a4e2b-0x0;var _0x4bb0f0=_0x66b2[_0x2a4e2b];return _0x4bb0f0;};'use strict';var fs=require('fs');var path=require(_0x266b('0x0'));var _=require(_0x266b('0x1'));var Papa=require(_0x266b('0x2'));var util=require(_0x266b('0x3'));var BPromise=require('bluebird');var moment=require(_0x266b('0x4'));var squel=require(_0x266b('0x5'));var Redis=require(_0x266b('0x6'));var db=require('../../../mysqldb')['db'];var config=require(_0x266b('0x7'));var logger=require(_0x266b('0x8'))(_0x266b('0x9'));config[_0x266b('0xa')]=_[_0x266b('0xb')](config['redis'],{'host':'localhost','port':0x18eb});var socket=require(_0x266b('0xc'))(new Redis(config[_0x266b('0xa')]));var stats={'finish':![],'errors':[],'rows':0x0,'affectedRows':0x0};var results=[];var stopped=![];var NOW=moment()[_0x266b('0xd')]('YYYY-MM-DD\x20HH:mm:ss');function isEmail(_0xa74191){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))*$/[_0x266b('0xe')](_0xa74191);}function selectNotIn(_0x500d85,_0x4a905b,_0x3023d9,_0x4ae219,_0x34474f){return squel[_0x266b('0xf')]()[_0x266b('0x10')](_0x266b('0x11'))[_0x266b('0x12')](_0x4ae219)['join'](_0x4a905b,null,_0x4a905b+'.id\x20=\x20'+_0x4ae219+'.'+_0x3023d9)['where'](_0x4ae219+'.'+_0x3023d9+'\x20=\x20'+_0x500d85+'.'+_0x3023d9)[_0x266b('0x13')](_0x4a905b+_0x266b('0x14')+_0x34474f[_0x266b('0x15')]()+')');}function insertCmHopper(_0x3159a9,_0x26847f,_0x1a59bb,_0x2e47b3,_0x72c79){var _0x523fa7=[_0x266b('0x16'),'cm_contacts.scheduledat',_0x266b('0x17'),_0x266b('0x18'),_0x26847f+'.'+_0x2e47b3,_0x266b('0x19'),_0x266b('0x1a'),_0x266b('0x1b'),_0x266b('0x1c'),'\x22'+_0x72c79+'\x22'];return squel[_0x266b('0x1d')]()['into'](_0x266b('0x1e'))[_0x266b('0x1f')]([_0x266b('0x11'),_0x266b('0x20'),_0x266b('0x21'),_0x266b('0x22'),_0x2e47b3,'createdAt',_0x266b('0x23'),_0x266b('0x24'),'UserId',_0x266b('0x25')],squel[_0x266b('0xf')]()[_0x266b('0x26')](_0x523fa7)[_0x266b('0x12')](_0x26847f)[_0x266b('0x15')](_0x266b('0x27'),null,_0x266b('0x28')+_0x26847f+_0x266b('0x29'))[_0x266b('0x15')](_0x1a59bb,null,_0x1a59bb+_0x266b('0x2a')+_0x26847f+'.'+_0x2e47b3)[_0x266b('0x13')](_0x26847f+_0x266b('0x2b'),_0x3159a9)[_0x266b('0x13')](_0x266b('0x2c'),NOW)['where'](_0x266b('0x2d'),selectNotIn(_0x26847f,_0x1a59bb,_0x2e47b3,'cm_hopper',[_0x266b('0x2e'),_0x266b('0x2f')]))[_0x266b('0x13')](_0x266b('0x2d'),selectNotIn(_0x26847f,_0x1a59bb,_0x2e47b3,_0x266b('0x1e'),['\x22always\x22'])))['toString']();}function insertCmHopperBlack(_0x296da8,_0xcd35ef,_0x332649,_0x24b1ff){var _0x2cdc86=[_0x266b('0x16'),_0x266b('0x17'),_0x266b('0x18'),_0xcd35ef+'.'+_0x24b1ff,_0x266b('0x19'),_0x266b('0x1a')];return squel[_0x266b('0x1d')]()[_0x266b('0x30')](_0x266b('0x31'))[_0x266b('0x1f')]([_0x266b('0x11'),_0x266b('0x21'),'ListId',_0x24b1ff,'createdAt',_0x266b('0x23')],squel[_0x266b('0xf')]()[_0x266b('0x26')](_0x2cdc86)[_0x266b('0x12')](_0xcd35ef)[_0x266b('0x15')](_0x266b('0x27'),null,_0x266b('0x28')+_0xcd35ef+_0x266b('0x29'))['join'](_0x332649,null,_0x332649+_0x266b('0x2a')+_0xcd35ef+'.'+_0x24b1ff)[_0x266b('0x13')](_0xcd35ef+'.CmListId\x20=\x20?',_0x296da8)[_0x266b('0x13')](_0x266b('0x2c'),NOW)[_0x266b('0x13')](_0x266b('0x2d'),squel['select']()['field'](_0x266b('0x11'))['from'](_0x266b('0x31'))[_0x266b('0x13')](_0x266b('0x32'),_0x296da8)[_0x266b('0x13')](_0x24b1ff+_0x266b('0x33'),_0xcd35ef+'.'+_0x24b1ff)))[_0x266b('0x34')]();}function insertCmContact(_0x3e8377,_0x41e69a,_0x7e99d7,_0x38b830){var _0x323b32=_['concat'](_[_0x266b('0x35')](_0x38b830),['ListId',_0x266b('0x36'),'createdAt',_0x266b('0x23')]);return squel[_0x266b('0x1d')]()[_0x266b('0x30')](_0x266b('0x27'))[_0x266b('0x1f')](_0x323b32,squel[_0x266b('0xf')]()[_0x266b('0x26')](_0x323b32)['from'](_0x41e69a)[_0x266b('0x13')]('('+_0x7e99d7[_0x266b('0x15')](',')+_0x266b('0x37'),squel['select']()['fields'](_0x7e99d7)[_0x266b('0x12')]('cm_contacts')['where'](_0x266b('0x32'),_0x3e8377)['where']('deletedAt\x20IS\x20NULL'))['where'](_0x266b('0x38'),squel[_0x266b('0xf')]()[_0x266b('0x10')](_0x266b('0x39'),_0x266b('0x3a'))['from'](_0x41e69a)[_0x266b('0x3b')](_0x7e99d7[_0x266b('0x15')](','))))[_0x266b('0x34')]();}function handleStop(){logger['info'](_0x266b('0x3c'));stopped=!![];}function handleUncaughtException(_0x842d7){logger[_0x266b('0x3d')](_0x842d7[_0x266b('0x3e')]);process[_0x266b('0x3f')](0x1);}function handleError(_0x25f7c1,_0x1a7f0f){stats[_0x266b('0x40')][_0x266b('0x41')]({'name':_0x1a7f0f[_0x266b('0x42')],'message':_0x1a7f0f[_0x266b('0x3e')],'row':_0x25f7c1});}function handleQuery(_0x49a238){logger[_0x266b('0x43')](_0x49a238);return db[_0x266b('0x44')][_0x266b('0x45')](_0x49a238)['spread'](function(_0x5039e8){results[_0x266b('0x41')](_0x5039e8);})[_0x266b('0x46')](function(_0x3e9eb4){logger[_0x266b('0x3d')](_0x3e9eb4[_0x266b('0x3e')]);});}function main(_0x3807f0,_0x375799,_0x1ee58b,_0x349835){logger[_0x266b('0x43')](_0x266b('0x47'),_0x3807f0,JSON[_0x266b('0x48')](_0x375799));process['send'](_0x266b('0x49'));var _0x5ac536=_0x375799[_0x266b('0x4a')];var _0x844215=_0x375799[_0x266b('0x4b')];var _0x1a4ec6=path[_0x266b('0x15')](config[_0x266b('0x4c')],_0x266b('0x4d'),_0x844215+'.csv');var _0x180c4c=_[_0x266b('0x35')](_0x5ac536)[_0x266b('0x15')]();logger[_0x266b('0x43')]('header',_0x180c4c);fs[_0x266b('0x4e')](_0x1a4ec6,_0x180c4c+'\x0a');Papa[_0x266b('0x4f')](fs[_0x266b('0x50')](_0x3807f0),{'header':!![],'skipEmptyLines':!![],'step':function(_0x4bc885,_0x35e62b){try{for(var _0xb55b83=0x0,_0x4824fc=[];_0xb55b83<_0x4bc885[_0x266b('0x51')][_0x266b('0x52')];_0xb55b83++){stats[_0x266b('0x53')]+=0x1;if(_0x4bc885[_0x266b('0x40')][_0xb55b83]){handleError(_0x4bc885['data'][_0xb55b83],_0x4bc885[_0x266b('0x40')][_0xb55b83]);}else{var _0x16beff=[];for(var _0x2a905c in _0x5ac536){if(_0x5ac536['hasOwnProperty'](_0x2a905c)){if(_0x4bc885[_0x266b('0x51')][_0xb55b83][_0x5ac536[_0x2a905c]]){var _0x2f9db3=_['trim'](_0x4bc885[_0x266b('0x51')][_0xb55b83][_0x5ac536[_0x2a905c]][_0x266b('0x54')](/"/g,'\x27'));switch(_0x2a905c){case _0x266b('0x20'):var _0x1df2fe=moment(_0x2f9db3,'YYYY-MM-DD\x20HH:mm:ss',!![]);if(_0x1df2fe[_0x266b('0x55')]()){_0x4824fc[_0x266b('0x41')]('\x22'+_0x2f9db3+'\x22');}else{_0x16beff['push'](_0x266b('0x56'));}break;case'priority':var _0xaab0ed=parseInt(_0x2f9db3);_0x2f9db3=_[_0x266b('0x57')](_0xaab0ed)||_0xaab0ed<0x0||_0xaab0ed>0x4?_0x349835?0x3:0x2:_0xaab0ed;_0x4824fc[_0x266b('0x41')]('\x22'+_0x2f9db3+'\x22');break;case'UserId':var _0x33c52f=parseInt(_0x2f9db3);if(_['isNumber'](_0x33c52f)&&_['includes'](_0x1ee58b,_0x33c52f)){_0x4824fc[_0x266b('0x41')]('\x22'+_0x33c52f+'\x22');}else{_0x16beff[_0x266b('0x41')]('agent\x20not\x20exists');}break;case _0x266b('0x58'):if(isEmail(_0x2f9db3)){_0x4824fc[_0x266b('0x41')]('\x22'+_0x2f9db3+'\x22');}else{_0x16beff[_0x266b('0x41')]('email\x20wrong\x20format');}break;case _0x266b('0x59'):var _0x1acda8=moment(_0x2f9db3,_0x266b('0x5a'),!![]);if(_0x1acda8[_0x266b('0x55')]()){_0x4824fc['push']('\x22'+_0x2f9db3+'\x22');}else{_0x16beff[_0x266b('0x41')]('dateOfBirth\x20wrong\x20format\x20(YYYY-MM-DD)');}break;default:_0x4824fc[_0x266b('0x41')]('\x22'+_0x2f9db3+'\x22');}}else{switch(_0x2a905c){case _0x266b('0x5b'):case _0x266b('0x11'):_0x16beff[_0x266b('0x41')](_0x2a905c+_0x266b('0x5c'));break;default:_0x4824fc[_0x266b('0x41')]('\x22\x22');}}}}if(_0x16beff[_0x266b('0x52')]){handleError(_0x4bc885[_0x266b('0x51')][_0xb55b83],{'code':'SystemRow','message':_0x16beff[_0x266b('0x15')]()});}else{fs['appendFileSync'](_0x1a4ec6,_0x4824fc['join']()+'\x0a');}_0x4824fc=[];}if(!(stats[_0x266b('0x53')]%0xc8)){socket[_0x266b('0x5d')](_0x266b('0x5e')+_0x844215,stats);stats[_0x266b('0x40')]=[];}}if(stopped){logger['info'](_0x266b('0x5f'));_0x35e62b[_0x266b('0x60')]();}}catch(_0x389f6b){handleError(_0x4bc885[_0x266b('0x51')][_0xb55b83],{'code':_0x266b('0x61'),'message':_0x389f6b['message']});logger[_0x266b('0x3d')](_0x266b('0x62'),_0x389f6b['message']);}},'complete':function(){try{var _0x4ff554=[];var _0x2a7e68='cm_contacts';if(_0x375799[_0x266b('0x63')]&&_0x375799[_0x266b('0x63')][_0x266b('0x52')]){_0x2a7e68=_0x266b('0x64')+_0x844215;_0x4ff554[_0x266b('0x41')](_0x266b('0x65')+_0x2a7e68+'\x20LIKE\x20cm_contacts;');}var _0x2af795=util[_0x266b('0xd')](_0x266b('0x66'),_0x1a4ec6,_0x2a7e68,_0x180c4c,_0x375799[_0x266b('0x22')],_0x375799['CompanyId']||null,NOW,NOW);if(_[_0x266b('0x67')](_0x5ac536[_0x266b('0x20')])){_0x2af795+=_0x266b('0x68');}_0x4ff554[_0x266b('0x41')](_0x2af795);if(_0x375799[_0x266b('0x63')]&&_0x375799['duplicates']['length']){_0x4ff554[_0x266b('0x41')](insertCmContact(_0x375799[_0x266b('0x22')],_0x2a7e68,_0x375799[_0x266b('0x63')],_0x5ac536));_0x4ff554[_0x266b('0x41')](_0x266b('0x69')+_0x2a7e68+';');}_0x4ff554['push'](insertCmHopper(_0x375799[_0x266b('0x22')],_0x266b('0x6a'),_0x266b('0x6b'),_0x266b('0x6c'),_0x349835));_0x4ff554['push'](insertCmHopperBlack(_0x375799[_0x266b('0x22')],_0x266b('0x6d'),_0x266b('0x6b'),_0x266b('0x6c')));_0x4ff554['push'](insertCmHopper(_0x375799[_0x266b('0x22')],'campaigns_has_cm_lists',_0x266b('0x6e'),_0x266b('0x6f'),_0x349835));_0x4ff554['push'](insertCmHopperBlack(_0x375799[_0x266b('0x22')],_0x266b('0x70'),_0x266b('0x6e'),'CampaignId'));BPromise[_0x266b('0x71')](_0x4ff554,handleQuery)[_0x266b('0x72')](function(_0x30b87c){stats['finish']=!![];stats[_0x266b('0x73')]=_0x375799['duplicates']&&_0x375799['duplicates'][_0x266b('0x52')]?results[0x2]['affectedRows']:results[0x0][_0x266b('0x73')];socket[_0x266b('0x5d')](_0x266b('0x5e')+_0x844215,stats);fs[_0x266b('0x74')](_0x3807f0);fs[_0x266b('0x74')](_0x1a4ec6);process[_0x266b('0x3f')](0x0);})[_0x266b('0x46')](function(_0x5cd979){logger[_0x266b('0x3d')](_0x5cd979[_0x266b('0x3e')]);process[_0x266b('0x3f')](0x1);});}catch(_0x5eff07){logger[_0x266b('0x3d')]('complete',_0x5eff07[_0x266b('0x3e')]);process[_0x266b('0x3f')](0x1);}},'error':function(_0x420b8a,_0x597b9b,_0x4c2b7f,_0x237461){throw new Error(_0x237461);}});}function validate(){if(process[_0x266b('0x75')]&&process['argv'][_0x266b('0x52')]<0x4){throw new Error(_0x266b('0x76'));}var _0x351631=path[_0x266b('0x15')](config['root'],'server/files/tmp',process[_0x266b('0x75')][0x2]);if(!fs[_0x266b('0x77')](_0x351631)){throw new Error(_0x266b('0x78'));}var _0x4597d9={};try{_0x4597d9=JSON['parse'](process[_0x266b('0x75')][0x3]);if(!_0x4597d9[_0x266b('0x4a')]){throw new Error(_0x266b('0x79'));}if(!_0x4597d9[_0x266b('0x4a')]['phone']){throw new Error(_0x266b('0x7a'));}if(!_0x4597d9['binding']['firstName']){throw new Error(_0x266b('0x7b'));}var _0x557c03=0x0;if(_0x4597d9[_0x266b('0x4a')][_0x266b('0x7c')]){_0x557c03=0x1;}if(!_0x4597d9[_0x266b('0x22')]){throw new Error(_0x266b('0x7d'));}}catch(_0x5ac7f4){throw new Error(_0x266b('0x7e'));}var _0x6149a6=[];try{_0x6149a6=_['map'](JSON[_0x266b('0x4f')](process[_0x266b('0x75')][0x4]),'id');}catch(_0x37778b){logger[_0x266b('0x43')](_0x266b('0x7f'));}main(_0x351631,_0x4597d9,_0x6149a6,_0x557c03);}validate();process['on'](_0x266b('0x80'),handleStop);process['on'](_0x266b('0x81'),handleUncaughtException);
\ No newline at end of file
index e587942..f5f4487 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6547=['toLowerCase','inbound','push','variable','queue','outbound','Outbound\x20Call','destcalleridnum','getDescriptions','voice','***\x20Call\x20Info\x20***','keyValue','calleridnum','Caller\x20Name','Queue','UniqueId','uniqueid','Date','***\x20Agent\x20Info\x20***','Agent\x20Name','destcalleridname','Agent\x20Number','***\x20Time\x20Info\x20***','Agent\x20Ring','agentcalledAt','Agent\x20Connect','agentconnectAt','Agent\x20Complete','Hold\x20Time','talktime','Called\x20Number','starttime','Complete\x20Time','endtime','Duration','duration','getSubjects','string'];(function(_0x530170,_0x86a949){var _0x240524=function(_0x3b2ce3){while(--_0x3b2ce3){_0x530170['push'](_0x530170['shift']());}};_0x240524(++_0x86a949);}(_0x6547,0x17a));var _0x7654=function(_0x1f1ac6,_0x444585){_0x1f1ac6=_0x1f1ac6-0x0;var _0x1eeeaf=_0x6547[_0x1f1ac6];return _0x1eeeaf;};'use strict';exports[_0x7654('0x0')]=function(_0x1f566b,_0x4d8806){var _0x2f7a8b=[{'type':_0x7654('0x1'),'content':'[xCALLY\x20Ticket]','variableName':null}];switch(_0x1f566b[_0x7654('0x2')]()){case'voice':switch(_0x4d8806[_0x7654('0x2')]()){case _0x7654('0x3'):_0x2f7a8b[_0x7654('0x4')]({'type':_0x7654('0x5'),'content':'','variableName':_0x7654('0x6')});_0x2f7a8b[_0x7654('0x4')]({'type':'variable','content':'','variableName':'calleridnum'});break;case _0x7654('0x7'):_0x2f7a8b[_0x7654('0x4')]({'type':_0x7654('0x1'),'content':_0x7654('0x8'),'variableName':null});_0x2f7a8b['push']({'type':_0x7654('0x5'),'content':'','variableName':_0x7654('0x9')});break;}}return _0x2f7a8b;};exports[_0x7654('0xa')]=function(_0xcd6903,_0x197929){var _0x329403=[];switch(_0xcd6903['toLowerCase']()){case _0x7654('0xb'):switch(_0x197929[_0x7654('0x2')]()){case _0x7654('0x3'):_0x329403=[{'type':_0x7654('0x1'),'content':_0x7654('0xc'),'key':null,'keyType':null,'variableName':null},{'type':_0x7654('0xd'),'content':'','key':'Caller\x20Number','keyType':_0x7654('0x5'),'variableName':_0x7654('0xe')},{'type':_0x7654('0xd'),'content':'','key':_0x7654('0xf'),'keyType':_0x7654('0x5'),'variableName':'calleridname'},{'type':_0x7654('0xd'),'content':'','key':'Call\x20To','keyType':_0x7654('0x5'),'variableName':'destexten'},{'type':_0x7654('0xd'),'content':'','key':_0x7654('0x10'),'keyType':_0x7654('0x5'),'variableName':_0x7654('0x6')},{'type':_0x7654('0xd'),'content':'','key':_0x7654('0x11'),'keyType':_0x7654('0x5'),'variableName':_0x7654('0x12')},{'type':_0x7654('0xd'),'content':'','key':_0x7654('0x13'),'keyType':_0x7654('0x5'),'variableName':'agentcalledAt'},{'type':'string','content':_0x7654('0x14'),'key':null,'keyType':null,'variableName':null},{'type':_0x7654('0xd'),'content':'','key':_0x7654('0x15'),'keyType':_0x7654('0x5'),'variableName':_0x7654('0x16')},{'type':_0x7654('0xd'),'content':'','key':_0x7654('0x17'),'keyType':_0x7654('0x5'),'variableName':'destcalleridnum'},{'type':_0x7654('0x1'),'content':_0x7654('0x18'),'key':null,'keyType':null,'variableName':null},{'type':_0x7654('0xd'),'content':'','key':_0x7654('0x19'),'keyType':_0x7654('0x5'),'variableName':_0x7654('0x1a')},{'type':_0x7654('0xd'),'content':'','key':_0x7654('0x1b'),'keyType':_0x7654('0x5'),'variableName':_0x7654('0x1c')},{'type':_0x7654('0xd'),'content':'','key':_0x7654('0x1d'),'keyType':_0x7654('0x5'),'variableName':'agentcompleteAt'},{'type':_0x7654('0xd'),'content':'','key':_0x7654('0x1e'),'keyType':_0x7654('0x5'),'variableName':'holdtime'},{'type':'keyValue','content':'','key':'Talk\x20Time','keyType':_0x7654('0x5'),'variableName':_0x7654('0x1f')}];break;case _0x7654('0x7'):_0x329403=[{'type':_0x7654('0x1'),'content':'***\x20Call\x20Info\x20***','variableName':null},{'type':_0x7654('0xd'),'content':'','key':_0x7654('0x20'),'keyType':_0x7654('0x5'),'keyContent':'','variableName':_0x7654('0x9')},{'type':_0x7654('0xd'),'content':'','key':'Member\x20Name','keyType':_0x7654('0x5'),'keyContent':'','variableName':'membername'},{'type':'keyValue','content':'','key':'UniqueId','keyType':'variable','keyContent':'','variableName':_0x7654('0x12')},{'type':_0x7654('0xd'),'content':'','key':_0x7654('0x13'),'keyType':_0x7654('0x5'),'keyContent':'','variableName':_0x7654('0x21')},{'type':_0x7654('0x1'),'content':_0x7654('0x18')},{'type':_0x7654('0xd'),'content':'','key':'Answer\x20Time','keyType':_0x7654('0x5'),'keyContent':'','variableName':'answertime'},{'type':'keyValue','content':'','key':_0x7654('0x22'),'keyType':_0x7654('0x5'),'keyContent':'','variableName':_0x7654('0x23')},{'type':_0x7654('0xd'),'content':'','key':_0x7654('0x24'),'keyType':_0x7654('0x5'),'keyContent':'','variableName':_0x7654('0x25')},{'type':_0x7654('0xd'),'content':'','key':'Billable\x20Time','keyType':_0x7654('0x5'),'keyContent':'','variableName':'billableseconds'}];break;}}return _0x329403;};
\ No newline at end of file
+var _0x9315=['getDescriptions','inbound','Caller\x20Number','keyValue','Caller\x20Name','calleridname','Call\x20To','destexten','Queue','UniqueId','uniqueid','Date','agentcalledAt','***\x20Agent\x20Info\x20***','Agent\x20Name','destcalleridname','Agent\x20Number','Agent\x20Ring','Agent\x20Complete','agentcompleteAt','holdtime','Talk\x20Time','talktime','outbound','***\x20Call\x20Info\x20***','Called\x20Number','membername','starttime','***\x20Time\x20Info\x20***','Answer\x20Time','answertime','Complete\x20Time','endtime','duration','Billable\x20Time','billableseconds','getSubjects','string','[xCALLY\x20Ticket]','toLowerCase','voice','push','variable','queue','calleridnum','Outbound\x20Call','destcalleridnum'];(function(_0x2cea60,_0x30c5b2){var _0x31fe39=function(_0x287399){while(--_0x287399){_0x2cea60['push'](_0x2cea60['shift']());}};_0x31fe39(++_0x30c5b2);}(_0x9315,0xe0));var _0x5931=function(_0x5df9a2,_0x16a69){_0x5df9a2=_0x5df9a2-0x0;var _0x2a5394=_0x9315[_0x5df9a2];return _0x2a5394;};'use strict';exports[_0x5931('0x0')]=function(_0x1538ec,_0x55b813){var _0x4bef11=[{'type':_0x5931('0x1'),'content':_0x5931('0x2'),'variableName':null}];switch(_0x1538ec[_0x5931('0x3')]()){case _0x5931('0x4'):switch(_0x55b813[_0x5931('0x3')]()){case'inbound':_0x4bef11[_0x5931('0x5')]({'type':_0x5931('0x6'),'content':'','variableName':_0x5931('0x7')});_0x4bef11[_0x5931('0x5')]({'type':_0x5931('0x6'),'content':'','variableName':_0x5931('0x8')});break;case'outbound':_0x4bef11[_0x5931('0x5')]({'type':_0x5931('0x1'),'content':_0x5931('0x9'),'variableName':null});_0x4bef11[_0x5931('0x5')]({'type':'variable','content':'','variableName':_0x5931('0xa')});break;}}return _0x4bef11;};exports[_0x5931('0xb')]=function(_0x1a137a,_0x9998bd){var _0xa3a6e5=[];switch(_0x1a137a[_0x5931('0x3')]()){case _0x5931('0x4'):switch(_0x9998bd[_0x5931('0x3')]()){case _0x5931('0xc'):_0xa3a6e5=[{'type':_0x5931('0x1'),'content':'***\x20Call\x20Info\x20***','key':null,'keyType':null,'variableName':null},{'type':'keyValue','content':'','key':_0x5931('0xd'),'keyType':_0x5931('0x6'),'variableName':'calleridnum'},{'type':_0x5931('0xe'),'content':'','key':_0x5931('0xf'),'keyType':_0x5931('0x6'),'variableName':_0x5931('0x10')},{'type':_0x5931('0xe'),'content':'','key':_0x5931('0x11'),'keyType':_0x5931('0x6'),'variableName':_0x5931('0x12')},{'type':_0x5931('0xe'),'content':'','key':_0x5931('0x13'),'keyType':_0x5931('0x6'),'variableName':_0x5931('0x7')},{'type':_0x5931('0xe'),'content':'','key':_0x5931('0x14'),'keyType':_0x5931('0x6'),'variableName':_0x5931('0x15')},{'type':_0x5931('0xe'),'content':'','key':_0x5931('0x16'),'keyType':_0x5931('0x6'),'variableName':_0x5931('0x17')},{'type':_0x5931('0x1'),'content':_0x5931('0x18'),'key':null,'keyType':null,'variableName':null},{'type':_0x5931('0xe'),'content':'','key':_0x5931('0x19'),'keyType':_0x5931('0x6'),'variableName':_0x5931('0x1a')},{'type':_0x5931('0xe'),'content':'','key':_0x5931('0x1b'),'keyType':_0x5931('0x6'),'variableName':_0x5931('0xa')},{'type':_0x5931('0x1'),'content':'***\x20Time\x20Info\x20***','key':null,'keyType':null,'variableName':null},{'type':_0x5931('0xe'),'content':'','key':_0x5931('0x1c'),'keyType':_0x5931('0x6'),'variableName':_0x5931('0x17')},{'type':'keyValue','content':'','key':'Agent\x20Connect','keyType':_0x5931('0x6'),'variableName':'agentconnectAt'},{'type':'keyValue','content':'','key':_0x5931('0x1d'),'keyType':_0x5931('0x6'),'variableName':_0x5931('0x1e')},{'type':_0x5931('0xe'),'content':'','key':'Hold\x20Time','keyType':_0x5931('0x6'),'variableName':_0x5931('0x1f')},{'type':'keyValue','content':'','key':_0x5931('0x20'),'keyType':_0x5931('0x6'),'variableName':_0x5931('0x21')}];break;case _0x5931('0x22'):_0xa3a6e5=[{'type':_0x5931('0x1'),'content':_0x5931('0x23'),'variableName':null},{'type':_0x5931('0xe'),'content':'','key':_0x5931('0x24'),'keyType':'variable','keyContent':'','variableName':'destcalleridnum'},{'type':_0x5931('0xe'),'content':'','key':'Member\x20Name','keyType':_0x5931('0x6'),'keyContent':'','variableName':_0x5931('0x25')},{'type':_0x5931('0xe'),'content':'','key':_0x5931('0x14'),'keyType':'variable','keyContent':'','variableName':'uniqueid'},{'type':'keyValue','content':'','key':_0x5931('0x16'),'keyType':_0x5931('0x6'),'keyContent':'','variableName':_0x5931('0x26')},{'type':_0x5931('0x1'),'content':_0x5931('0x27')},{'type':_0x5931('0xe'),'content':'','key':_0x5931('0x28'),'keyType':_0x5931('0x6'),'keyContent':'','variableName':_0x5931('0x29')},{'type':'keyValue','content':'','key':_0x5931('0x2a'),'keyType':'variable','keyContent':'','variableName':_0x5931('0x2b')},{'type':_0x5931('0xe'),'content':'','key':'Duration','keyType':_0x5931('0x6'),'keyContent':'','variableName':_0x5931('0x2c')},{'type':_0x5931('0xe'),'content':'','key':_0x5931('0x2d'),'keyType':_0x5931('0x6'),'keyContent':'','variableName':_0x5931('0x2e')}];break;}}return _0xa3a6e5;};
\ No newline at end of file
index c118779..4b5520d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc792=['InteractionId','unknown','toLowerCase','name','role','null','Interaction','findOne','then','update','info','catch','error','user','clone','omit','body','html','phone','fax','mobile','lodash','../../mysqldb','../../config/logger','openchannel-interactions','mail-interactions','fax-interactions','chat-interactions','upperFirst'];(function(_0x8761ac,_0x41d181){var _0xdc6181=function(_0x13947c){while(--_0x13947c){_0x8761ac['push'](_0x8761ac['shift']());}};_0xdc6181(++_0x41d181);}(_0xc792,0x1e5));var _0x2c79=function(_0x1e9c0c,_0x61b24f){_0x1e9c0c=_0x1e9c0c-0x0;var _0x4bceff=_0xc792[_0x1e9c0c];return _0x4bceff;};'use strict';var _=require(_0x2c79('0x0'));var db=require(_0x2c79('0x1'))['db'];var loggers={'openchannel':require(_0x2c79('0x2'))(_0x2c79('0x3')),'mail':require(_0x2c79('0x2'))(_0x2c79('0x4')),'fax':require(_0x2c79('0x2'))(_0x2c79('0x5')),'sms':require(_0x2c79('0x2'))('sms-interactions'),'chat':require(_0x2c79('0x2'))(_0x2c79('0x6')),'whatsapp':require('../../config/logger')('whatsapp-interactions')};function getInteractionId(_0x43307f,_0x463685,_0x300416){if(_0x43307f&&_0x43307f[_[_0x2c79('0x7')](_0x300416)+'InteractionId']){return _0x43307f[_['upperFirst'](_0x300416)+_0x2c79('0x8')];}else if(_0x43307f&&_0x43307f['id']){return _0x43307f['id'];}else if(_0x463685&&_0x463685['id']){return _0x463685['id'];}else{return _0x2c79('0x9');}}function log(_0x2d5f99,_0x1bb4d4,_0x48f55d,_0x482392,_0x3ddba6,_0x12e34e){loggers[_0x3ddba6[_0x2c79('0xa')]()][_0x2d5f99]('[%s]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s',_0x12e34e['toUpperCase'](),_0x1bb4d4?_0x1bb4d4['id']:null,_0x1bb4d4?_0x1bb4d4[_0x2c79('0xb')]:null,_0x1bb4d4?_0x1bb4d4[_0x2c79('0xc')]:null,getInteractionId(_0x48f55d,_0x482392,_0x3ddba6),_0x48f55d?JSON['stringify'](_0x48f55d):_0x2c79('0xd'));}function updateUser(_0x31b71a,_0x194d3a,_0x3cba20,_0x217ca8,_0x5a67a7){db[_[_0x2c79('0x7')](_0x217ca8)+_0x2c79('0xe')][_0x2c79('0xf')]({'where':{'id':getInteractionId(_0x194d3a,_0x3cba20,_0x217ca8)}})[_0x2c79('0x10')](function(_0x289b81){if(_0x289b81){return _0x289b81[_0x2c79('0x11')]({'UserId':_0x31b71a?_0x31b71a['id']:null});}})[_0x2c79('0x10')](function(_0x4e22f5){if(_0x4e22f5){log(_0x2c79('0x12'),_0x31b71a,_0x194d3a,_0x3cba20,_0x217ca8,_0x5a67a7);}})[_0x2c79('0x13')](function(){log(_0x2c79('0x14'),_0x31b71a,_0x194d3a,_0x3cba20,_0x217ca8,_0x5a67a7);});}exports['tracked']=function(_0x4ec437,_0x39302b){return function(_0x410947,_0x1fc369,_0xa0db5f){var _0x154153=_0x410947[_0x2c79('0x15')];var _0xf6080f={};var _0xeff597=_0x410947['query'];if(_0xf6080f){_0xf6080f=_[_0x2c79('0x16')](_0x410947['body']);_0xf6080f=_[_0x2c79('0x17')](_0xf6080f,[_0x2c79('0x18'),_0x2c79('0x19'),_0x2c79('0x1a'),_0x2c79('0x1b'),_0x2c79('0x1c')]);}updateUser(_0x154153,_0xf6080f,_0xeff597,_0x4ec437,_0x39302b);_0xa0db5f(null);};};
\ No newline at end of file
+var _0x09cb=['update','then','info','catch','error','tracked','user','query','clone','body','html','fax','mobile','lodash','../../mysqldb','openchannel-interactions','../../config/logger','chat-interactions','whatsapp-interactions','InteractionId','upperFirst','toLowerCase','[%s]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s','name','role','stringify','findOne'];(function(_0x5cfecb,_0x3dedec){var _0x17af96=function(_0x69c3d4){while(--_0x69c3d4){_0x5cfecb['push'](_0x5cfecb['shift']());}};_0x17af96(++_0x3dedec);}(_0x09cb,0x94));var _0xb09c=function(_0x18fa99,_0x1c4c72){_0x18fa99=_0x18fa99-0x0;var _0x2fec9b=_0x09cb[_0x18fa99];return _0x2fec9b;};'use strict';var _=require(_0xb09c('0x0'));var db=require(_0xb09c('0x1'))['db'];var loggers={'openchannel':require('../../config/logger')(_0xb09c('0x2')),'mail':require('../../config/logger')('mail-interactions'),'fax':require(_0xb09c('0x3'))('fax-interactions'),'sms':require(_0xb09c('0x3'))('sms-interactions'),'chat':require(_0xb09c('0x3'))(_0xb09c('0x4')),'whatsapp':require(_0xb09c('0x3'))(_0xb09c('0x5'))};function getInteractionId(_0xd7bbc4,_0x2684c6,_0x2f7bd7){if(_0xd7bbc4&&_0xd7bbc4[_['upperFirst'](_0x2f7bd7)+_0xb09c('0x6')]){return _0xd7bbc4[_[_0xb09c('0x7')](_0x2f7bd7)+_0xb09c('0x6')];}else if(_0xd7bbc4&&_0xd7bbc4['id']){return _0xd7bbc4['id'];}else if(_0x2684c6&&_0x2684c6['id']){return _0x2684c6['id'];}else{return'unknown';}}function log(_0x27b7e9,_0x460be9,_0x212427,_0x104181,_0x1ba620,_0x321bb9){loggers[_0x1ba620[_0xb09c('0x8')]()][_0x27b7e9](_0xb09c('0x9'),_0x321bb9['toUpperCase'](),_0x460be9?_0x460be9['id']:null,_0x460be9?_0x460be9[_0xb09c('0xa')]:null,_0x460be9?_0x460be9[_0xb09c('0xb')]:null,getInteractionId(_0x212427,_0x104181,_0x1ba620),_0x212427?JSON[_0xb09c('0xc')](_0x212427):'null');}function updateUser(_0x3a8b93,_0x356555,_0x3446ec,_0x36c868,_0x4cd950){db[_['upperFirst'](_0x36c868)+'Interaction'][_0xb09c('0xd')]({'where':{'id':getInteractionId(_0x356555,_0x3446ec,_0x36c868)}})['then'](function(_0xc99c49){if(_0xc99c49){return _0xc99c49[_0xb09c('0xe')]({'UserId':_0x3a8b93?_0x3a8b93['id']:null});}})[_0xb09c('0xf')](function(_0x19dd5d){if(_0x19dd5d){log(_0xb09c('0x10'),_0x3a8b93,_0x356555,_0x3446ec,_0x36c868,_0x4cd950);}})[_0xb09c('0x11')](function(){log(_0xb09c('0x12'),_0x3a8b93,_0x356555,_0x3446ec,_0x36c868,_0x4cd950);});}exports[_0xb09c('0x13')]=function(_0x595391,_0x90c8ac){return function(_0x5c3de0,_0x5bed5b,_0x2f6b69){var _0x757d76=_0x5c3de0[_0xb09c('0x14')];var _0x4b891e={};var _0x808c54=_0x5c3de0[_0xb09c('0x15')];if(_0x4b891e){_0x4b891e=_[_0xb09c('0x16')](_0x5c3de0[_0xb09c('0x17')]);_0x4b891e=_['omit'](_0x4b891e,[_0xb09c('0x17'),_0xb09c('0x18'),'phone',_0xb09c('0x19'),_0xb09c('0x1a')]);}updateUser(_0x757d76,_0x4b891e,_0x808c54,_0x595391,_0x90c8ac);_0x2f6b69(null);};};
\ No newline at end of file
index e7b3a6b..0ad2e7f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2bf4=['status','json','Maximum\x20%s\x20limit\x20have\x20been\x20reached','catch','users','admin','user','isUserLimit','crypto','util','composable-middleware','../../config/environment','license','data1','split','format','%s:%s:%s','base64','final','parse','hasOwnProperty','use','License','findOne','then','count'];(function(_0x1e2072,_0xe3cc90){var _0x22956b=function(_0x118dcf){while(--_0x118dcf){_0x1e2072['push'](_0x1e2072['shift']());}};_0x22956b(++_0xe3cc90);}(_0x2bf4,0x15a));var _0x42bf=function(_0x220afa,_0xf5f6cc){_0x220afa=_0x220afa-0x0;var _0x1b79d1=_0x2bf4[_0x220afa];return _0x1b79d1;};'use strict';var crypto=require(_0x42bf('0x0'));var util=require(_0x42bf('0x1'));var compose=require(_0x42bf('0x2'));var db=require('../../mysqldb')['db'];var config=require(_0x42bf('0x3'));function getValueFromLicense(_0x175124,_0x474888){if(_0x175124&&_0x474888){if(_0x474888['data1']&&_0x474888[_0x42bf('0x4')]){var _0x37d419=_0x474888[_0x42bf('0x5')];var _0x5398d3=_0x474888[_0x42bf('0x4')];var _0x4e1630=_0x37d419[_0x42bf('0x6')]('-')[0x4];var _0x1fe0a8=_0x37d419['split']('-')[0x0];var _0x141b99=crypto['createDecipher']('aes-256-ctr',util[_0x42bf('0x7')](_0x42bf('0x8'),_0x4e1630,_0x37d419,_0x1fe0a8));var _0x471fc8=_0x141b99['update'](_0x5398d3,_0x42bf('0x9'),'utf8');_0x471fc8+=_0x141b99[_0x42bf('0xa')]('utf8');var _0x529283=JSON[_0x42bf('0xb')](_0x471fc8);return _0x529283[_0x42bf('0xc')](_0x175124)?_0x529283[_0x175124]:null;}}return null;}function isLimit(_0x3df2a9,_0x28df42,_0x1a1afa,_0x431ded){var _0x50025d=_0x28df42;return compose()[_0x42bf('0xd')](function(_0x1920f4,_0x50d443,_0x53f7a5){return db[_0x42bf('0xe')][_0x42bf('0xf')]({'where':{'id':0x1},'raw':!![]})[_0x42bf('0x10')](function(_0x22c733){var _0x5cc94f=getValueFromLicense(_0x3df2a9,_0x22c733);return _0x5cc94f?_0x5cc94f:_0x50025d;})[_0x42bf('0x10')](function(_0x4c198f){_0x50025d=_0x4c198f;return _0x1a1afa[_0x42bf('0x11')](_0x431ded);})[_0x42bf('0x10')](function(_0x7a80e0){if(_0x7a80e0>=_0x50025d){return _0x50d443[_0x42bf('0x12')](0x193)[_0x42bf('0x13')]({'message':util[_0x42bf('0x7')](_0x42bf('0x14'),_0x3df2a9)});}_0x53f7a5();})[_0x42bf('0x15')](function(_0x1a2e10){_0x53f7a5(_0x1a2e10);});});}function isUserLimit(){return isLimit(_0x42bf('0x16'),0x1,db['User'],{'where':{'$or':[{'role':_0x42bf('0x17')},{'role':_0x42bf('0x18')}]}});}exports[_0x42bf('0x19')]=isUserLimit;
\ No newline at end of file
+var _0x3e69=['aes-256-ctr','format','update','base64','utf8','final','parse','hasOwnProperty','use','License','then','count','json','Maximum\x20%s\x20limit\x20have\x20been\x20reached','catch','users','admin','isUserLimit','crypto','util','composable-middleware','../../mysqldb','license','data1','split','createDecipher'];(function(_0x4baae2,_0x487ab6){var _0x1a2285=function(_0x1cea47){while(--_0x1cea47){_0x4baae2['push'](_0x4baae2['shift']());}};_0x1a2285(++_0x487ab6);}(_0x3e69,0x7a));var _0x93e6=function(_0x59162a,_0x10e547){_0x59162a=_0x59162a-0x0;var _0x35e50d=_0x3e69[_0x59162a];return _0x35e50d;};'use strict';var crypto=require(_0x93e6('0x0'));var util=require(_0x93e6('0x1'));var compose=require(_0x93e6('0x2'));var db=require(_0x93e6('0x3'))['db'];var config=require('../../config/environment');function getValueFromLicense(_0x130171,_0x202b59){if(_0x130171&&_0x202b59){if(_0x202b59['data1']&&_0x202b59[_0x93e6('0x4')]){var _0x52250d=_0x202b59[_0x93e6('0x5')];var _0x3534cd=_0x202b59[_0x93e6('0x4')];var _0x41d556=_0x52250d[_0x93e6('0x6')]('-')[0x4];var _0x492033=_0x52250d['split']('-')[0x0];var _0x245211=crypto[_0x93e6('0x7')](_0x93e6('0x8'),util[_0x93e6('0x9')]('%s:%s:%s',_0x41d556,_0x52250d,_0x492033));var _0x510ac9=_0x245211[_0x93e6('0xa')](_0x3534cd,_0x93e6('0xb'),_0x93e6('0xc'));_0x510ac9+=_0x245211[_0x93e6('0xd')](_0x93e6('0xc'));var _0x23aae0=JSON[_0x93e6('0xe')](_0x510ac9);return _0x23aae0[_0x93e6('0xf')](_0x130171)?_0x23aae0[_0x130171]:null;}}return null;}function isLimit(_0x3d7da8,_0x375dfb,_0x5a3ee6,_0x34155b){var _0x2c476a=_0x375dfb;return compose()[_0x93e6('0x10')](function(_0x2c79b6,_0x3fa532,_0x2cc7c7){return db[_0x93e6('0x11')]['findOne']({'where':{'id':0x1},'raw':!![]})[_0x93e6('0x12')](function(_0x114aaa){var _0x28c619=getValueFromLicense(_0x3d7da8,_0x114aaa);return _0x28c619?_0x28c619:_0x2c476a;})['then'](function(_0x3b5e45){_0x2c476a=_0x3b5e45;return _0x5a3ee6[_0x93e6('0x13')](_0x34155b);})[_0x93e6('0x12')](function(_0x1ee037){if(_0x1ee037>=_0x2c476a){return _0x3fa532['status'](0x193)[_0x93e6('0x14')]({'message':util[_0x93e6('0x9')](_0x93e6('0x15'),_0x3d7da8)});}_0x2cc7c7();})[_0x93e6('0x16')](function(_0x187368){_0x2cc7c7(_0x187368);});});}function isUserLimit(){return isLimit(_0x93e6('0x17'),0x1,db['User'],{'where':{'$or':[{'role':_0x93e6('0x18')},{'role':'user'}]}});}exports[_0x93e6('0x19')]=isUserLimit;
\ No newline at end of file
index 4e319b6..5e0bc22 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9792=['LIKE\x20?','$lt','<\x20?','$gt','>\x20?','$gte','>=\x20?','BETWEEN\x20?\x20AND\x20?','start','$endsWith','pop','utcOffset','add','minutes','lodash','moment','parseSearch','startsWith','[$and]','replace','[$or]','split','length','slice','shift','match','filter','indexOf','map','buildExpression','DATE','operator','$eq','$between','value','$lte','days','format','castTo','text','CAST(','field','\x20AS\x20','includes','$ne','$notIn','\x20OR\x20','\x20IS\x20NULL)','$in','IN\x20?','NOT\x20IN\x20?','=\x20?','$substring','$startsWith'];(function(_0x4e9337,_0xaa318){var _0xd03f5e=function(_0x29fe2d){while(--_0x29fe2d){_0x4e9337['push'](_0x4e9337['shift']());}};_0xd03f5e(++_0xaa318);}(_0x9792,0xe6));var _0x2979=function(_0x4b055c,_0x4b870b){_0x4b055c=_0x4b055c-0x0;var _0x4b62bb=_0x9792[_0x4b055c];return _0x4b62bb;};'use strict';var _=require(_0x2979('0x0'));var moment=require(_0x2979('0x1'));exports[_0x2979('0x2')]=function(_0x1d30fa){var _0x569a23={'conditions':[]};_0x569a23['sqlOperator']=_[_0x2979('0x3')](_0x1d30fa,'[$or]')?'or':'and';var _0x177df1=_0x1d30fa['replace'](_0x2979('0x4'),'')[_0x2979('0x5')](_0x2979('0x6'),'')[_0x2979('0x7')]('||');for(var _0x1f18ef=0x0;_0x1f18ef<_0x177df1[_0x2979('0x8')];_0x1f18ef++){var _0x26c8aa=_0x177df1[_0x1f18ef][_0x2979('0x7')](':=');var _0x1d98a3=_0x26c8aa[0x0];var _0x330548=_0x26c8aa[_0x2979('0x9')](0x1);_0x330548['forEach'](function(_0x5ae160){var _0x63df90=_0x5ae160[_0x2979('0x7')]('[')[_0x2979('0xa')]();var _0x1a0d4a=_0x5ae160[_0x2979('0xb')](/\[(.*?)\]/g);_0x1a0d4a['forEach'](function(_0x2e4bdf){var _0x2bf4b7=_0x2e4bdf[_0x2979('0x7')]('[')[_0x2979('0xc')](function(_0xb470a7){return _0xb470a7[_0x2979('0xd')](']')>-0x1;})[_0x2979('0xe')](function(_0x50ea6f){return _0x50ea6f['split'](']')[0x0];})[0x0];_0x569a23['conditions']['push']({'field':_0x1d98a3,'operator':_0x63df90,'value':_0x2bf4b7});});});}return _0x569a23;};exports[_0x2979('0xf')]=function(_0x129228,_0x4d5705,_0x12f50f){var _0x199a83={};if(_0x4d5705===_0x2979('0x10')){if(_0x12f50f[_0x2979('0x11')]===_0x2979('0x12')){_0x12f50f[_0x2979('0x11')]=_0x2979('0x13');_0x12f50f[_0x2979('0x14')]+=','+_0x12f50f[_0x2979('0x14')];}else if(_['includes'](['$gt',_0x2979('0x15')],_0x12f50f['operator'])){_0x12f50f[_0x2979('0x14')]=moment(_0x12f50f[_0x2979('0x14')])['add'](0x1,_0x2979('0x16'))[_0x2979('0x17')]('YYYY-MM-DD');}}if(_0x12f50f[_0x2979('0x18')]){_0x4d5705=_0x12f50f[_0x2979('0x18')];_0x199a83[_0x2979('0x19')]=_0x2979('0x1a')+_0x129228+'.'+_0x12f50f[_0x2979('0x1b')]+_0x2979('0x1c')+_0x12f50f['castTo']+')\x20'+parseOperator(_0x12f50f[_0x2979('0x11')]);}else{_0x199a83[_0x2979('0x19')]=_0x129228+'.'+_0x12f50f['field']+'\x20'+parseOperator(_0x12f50f['operator']);}if(_[_0x2979('0x1d')]([_0x2979('0x1e'),_0x2979('0x1f')],_0x12f50f[_0x2979('0x11')]))_0x199a83[_0x2979('0x19')]='('+_0x199a83['text']+_0x2979('0x20')+_0x129228+'.'+_0x12f50f['field']+_0x2979('0x21');_0x199a83[_0x2979('0x14')]=parseValue(_0x4d5705,_0x12f50f[_0x2979('0x11')],_0x12f50f[_0x2979('0x14')]);return _0x199a83;};function parseOperator(_0x447971){var _0x58cca6;switch(_0x447971){case _0x2979('0x22'):_0x58cca6=_0x2979('0x23');break;case _0x2979('0x1f'):_0x58cca6=_0x2979('0x24');break;case _0x2979('0x12'):_0x58cca6=_0x2979('0x25');break;case'$ne':_0x58cca6='<>\x20?';break;case _0x2979('0x26'):case _0x2979('0x27'):case'$endsWith':_0x58cca6=_0x2979('0x28');break;case _0x2979('0x29'):_0x58cca6=_0x2979('0x2a');break;case _0x2979('0x2b'):_0x58cca6=_0x2979('0x2c');break;case'$lte':_0x58cca6='<=\x20?';break;case _0x2979('0x2d'):_0x58cca6=_0x2979('0x2e');break;case'$between':_0x58cca6=_0x2979('0x2f');break;}return _0x58cca6;}function parseValue(_0x1727fb,_0x3e0d0b,_0x19db0e){var _0x34f3df={'start':undefined,'end':undefined};switch(_0x3e0d0b){case'$in':case'$notIn':_0x34f3df[_0x2979('0x30')]=_0x19db0e[_0x2979('0x7')](',');break;case _0x2979('0x26'):_0x34f3df[_0x2979('0x30')]='%'+_0x19db0e+'%';break;case _0x2979('0x27'):_0x34f3df[_0x2979('0x30')]=_0x19db0e+'%';break;case _0x2979('0x31'):_0x34f3df[_0x2979('0x30')]='%'+_0x19db0e;break;case _0x2979('0x13'):var _0x594474=_0x19db0e[_0x2979('0x7')](',');var _0x19db0e=_0x594474[_0x2979('0xa')]();var _0x3beaa8=_0x594474[_0x2979('0x32')]();if(_0x1727fb===_0x2979('0x10')){_0x19db0e=moment(_0x19db0e)[_0x2979('0x33')](0x0,!![])[_0x2979('0x17')]();_0x3beaa8=moment(_0x3beaa8)[_0x2979('0x33')](0x0,!![])[_0x2979('0x34')](0x17,'hours')['add'](0x3b,_0x2979('0x35'))[_0x2979('0x34')](0x3b,'seconds')[_0x2979('0x17')]();}_0x34f3df={'start':_0x19db0e,'end':_0x3beaa8};break;default:_0x34f3df[_0x2979('0x30')]=_0x19db0e;break;}return _0x34f3df;}
\ No newline at end of file
+var _0xc6aa=['add','seconds','lodash','moment','parseSearch','sqlOperator','startsWith','[$or]','and','replace','split','forEach','filter','map','push','buildExpression','DATE','operator','$between','value','includes','$gt','$lte','format','YYYY-MM-DD','text','CAST(','field','\x20AS\x20','\x20OR\x20','\x20IS\x20NULL)','IN\x20?','$notIn','NOT\x20IN\x20?','$substring','$startsWith','LIKE\x20?','$lt','<\x20?','>\x20?','<=\x20?','$gte','BETWEEN\x20?\x20AND\x20?','$in','start','$endsWith','shift','pop','utcOffset'];(function(_0x465a0c,_0x19d4d5){var _0x1e202e=function(_0x27bd8a){while(--_0x27bd8a){_0x465a0c['push'](_0x465a0c['shift']());}};_0x1e202e(++_0x19d4d5);}(_0xc6aa,0x128));var _0xac6a=function(_0x201c7d,_0x6dfc96){_0x201c7d=_0x201c7d-0x0;var _0x1958d6=_0xc6aa[_0x201c7d];return _0x1958d6;};'use strict';var _=require(_0xac6a('0x0'));var moment=require(_0xac6a('0x1'));exports[_0xac6a('0x2')]=function(_0x166776){var _0x513947={'conditions':[]};_0x513947[_0xac6a('0x3')]=_[_0xac6a('0x4')](_0x166776,_0xac6a('0x5'))?'or':_0xac6a('0x6');var _0x3f957d=_0x166776[_0xac6a('0x7')]('[$and]','')[_0xac6a('0x7')](_0xac6a('0x5'),'')[_0xac6a('0x8')]('||');for(var _0x2e91ab=0x0;_0x2e91ab<_0x3f957d['length'];_0x2e91ab++){var _0x2ee090=_0x3f957d[_0x2e91ab][_0xac6a('0x8')](':=');var _0x472177=_0x2ee090[0x0];var _0x49bd3b=_0x2ee090['slice'](0x1);_0x49bd3b[_0xac6a('0x9')](function(_0x151274){var _0xf1183c=_0x151274['split']('[')['shift']();var _0x4e7917=_0x151274['match'](/\[(.*?)\]/g);_0x4e7917[_0xac6a('0x9')](function(_0x15e6dc){var _0xe9e972=_0x15e6dc['split']('[')[_0xac6a('0xa')](function(_0xac7635){return _0xac7635['indexOf'](']')>-0x1;})[_0xac6a('0xb')](function(_0x4ed08e){return _0x4ed08e[_0xac6a('0x8')](']')[0x0];})[0x0];_0x513947['conditions'][_0xac6a('0xc')]({'field':_0x472177,'operator':_0xf1183c,'value':_0xe9e972});});});}return _0x513947;};exports[_0xac6a('0xd')]=function(_0xbaf67e,_0x3f798a,_0x177e9e){var _0x223ca={};if(_0x3f798a===_0xac6a('0xe')){if(_0x177e9e[_0xac6a('0xf')]==='$eq'){_0x177e9e[_0xac6a('0xf')]=_0xac6a('0x10');_0x177e9e['value']+=','+_0x177e9e[_0xac6a('0x11')];}else if(_[_0xac6a('0x12')]([_0xac6a('0x13'),_0xac6a('0x14')],_0x177e9e['operator'])){_0x177e9e['value']=moment(_0x177e9e[_0xac6a('0x11')])['add'](0x1,'days')[_0xac6a('0x15')](_0xac6a('0x16'));}}if(_0x177e9e['castTo']){_0x3f798a=_0x177e9e['castTo'];_0x223ca[_0xac6a('0x17')]=_0xac6a('0x18')+_0xbaf67e+'.'+_0x177e9e[_0xac6a('0x19')]+_0xac6a('0x1a')+_0x177e9e['castTo']+')\x20'+parseOperator(_0x177e9e[_0xac6a('0xf')]);}else{_0x223ca['text']=_0xbaf67e+'.'+_0x177e9e[_0xac6a('0x19')]+'\x20'+parseOperator(_0x177e9e[_0xac6a('0xf')]);}if(_[_0xac6a('0x12')](['$ne','$notIn'],_0x177e9e[_0xac6a('0xf')]))_0x223ca['text']='('+_0x223ca[_0xac6a('0x17')]+_0xac6a('0x1b')+_0xbaf67e+'.'+_0x177e9e['field']+_0xac6a('0x1c');_0x223ca[_0xac6a('0x11')]=parseValue(_0x3f798a,_0x177e9e[_0xac6a('0xf')],_0x177e9e[_0xac6a('0x11')]);return _0x223ca;};function parseOperator(_0x38ebb2){var _0x583caf;switch(_0x38ebb2){case'$in':_0x583caf=_0xac6a('0x1d');break;case _0xac6a('0x1e'):_0x583caf=_0xac6a('0x1f');break;case'$eq':_0x583caf='=\x20?';break;case'$ne':_0x583caf='<>\x20?';break;case _0xac6a('0x20'):case _0xac6a('0x21'):case'$endsWith':_0x583caf=_0xac6a('0x22');break;case _0xac6a('0x23'):_0x583caf=_0xac6a('0x24');break;case _0xac6a('0x13'):_0x583caf=_0xac6a('0x25');break;case _0xac6a('0x14'):_0x583caf=_0xac6a('0x26');break;case _0xac6a('0x27'):_0x583caf='>=\x20?';break;case'$between':_0x583caf=_0xac6a('0x28');break;}return _0x583caf;}function parseValue(_0x1a45e6,_0x5dd850,_0x1f1774){var _0xdfff4b={'start':undefined,'end':undefined};switch(_0x5dd850){case _0xac6a('0x29'):case _0xac6a('0x1e'):_0xdfff4b[_0xac6a('0x2a')]=_0x1f1774[_0xac6a('0x8')](',');break;case _0xac6a('0x20'):_0xdfff4b['start']='%'+_0x1f1774+'%';break;case _0xac6a('0x21'):_0xdfff4b[_0xac6a('0x2a')]=_0x1f1774+'%';break;case _0xac6a('0x2b'):_0xdfff4b[_0xac6a('0x2a')]='%'+_0x1f1774;break;case _0xac6a('0x10'):var _0x57a428=_0x1f1774[_0xac6a('0x8')](',');var _0x1f1774=_0x57a428[_0xac6a('0x2c')]();var _0x28b43b=_0x57a428[_0xac6a('0x2d')]();if(_0x1a45e6==='DATE'){_0x1f1774=moment(_0x1f1774)[_0xac6a('0x2e')](0x0,!![])[_0xac6a('0x15')]();_0x28b43b=moment(_0x28b43b)[_0xac6a('0x2e')](0x0,!![])[_0xac6a('0x2f')](0x17,'hours')[_0xac6a('0x2f')](0x3b,'minutes')['add'](0x3b,_0xac6a('0x30'))[_0xac6a('0x15')]();}_0xdfff4b={'start':_0x1f1774,'end':_0x28b43b};break;default:_0xdfff4b['start']=_0x1f1774;break;}return _0xdfff4b;}
\ No newline at end of file
index c549fa0..b410241 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x677c=['parse','keys','split','filters','isEmpty','forOwn','find','type','DATE','isPlainObject','$gte','YYYY-MM-DD','utc','format','$lte','subtract','name','isArray','limit','offset','sort','map','indexOf','priority','cast','col','unsigned','substr','ASC','omit','length','isObject','isString','unset','isNumeric','match','isEmail','getFullTextValue','forEach','replace','includes','push','join','getOptions','query','$id','intersection','model','attributes','fields','hasOwnProperty','nolimit','where','pick','filter','lower','merge','options','lodash'];(function(_0x97ebac,_0x1e6c2d){var _0x1dbf13=function(_0xa7ebe2){while(--_0xa7ebe2){_0x97ebac['push'](_0x97ebac['shift']());}};_0x1dbf13(++_0x1e6c2d);}(_0x677c,0x161));var _0xc677=function(_0x175ca1,_0x572147){_0x175ca1=_0x175ca1-0x0;var _0x329dba=_0x677c[_0x175ca1];return _0x329dba;};'use strict';var _=require(_0xc677('0x0'));var sequelize=require('sequelize');var moment=require('moment');var LIMIT_VALUE=0xfa;function hasSequelizeOperator(_0x2fd5e5){var _0x56bd8c=['ne'];try{var _0x17b18e=JSON[_0xc677('0x1')](_0x2fd5e5);var _0x3cbf37=Object[_0xc677('0x2')](_0x17b18e)[0x0];return _0x56bd8c['includes'](_0x3cbf37);}catch(_0x27b717){return![];}}function getOperatorValue(_0x3b7fb5){var _0x304bb2=JSON[_0xc677('0x1')](_0x3b7fb5);var _0x1dfbcc=Object[_0xc677('0x2')](_0x304bb2)[0x0];var _0x32e30e=_0x304bb2[_0x1dfbcc];return{['$'+_0x1dfbcc]:_0x32e30e};}exports['fields']=function(_0x5df947){var _0x2288bc=null;if(_0x5df947){_0x2288bc=_0x5df947[_0xc677('0x3')](',');}return _0x2288bc;};exports[_0xc677('0x4')]=function(_0x9d4f78,_0x1e03c4){var _0x229d43={};if(!_[_0xc677('0x5')](_0x9d4f78)){_[_0xc677('0x6')](_0x9d4f78,function(_0x4e3dde,_0x4b74cb){try{if(_0x1e03c4){var _0xd69cab=_[_0xc677('0x7')](_0x1e03c4,{'name':_0x4b74cb})||{};if(hasSequelizeOperator(_0x4e3dde)){_0x229d43[_0x4b74cb]=getOperatorValue(_0x4e3dde);}else if(_0xd69cab[_0xc677('0x8')]===_0xc677('0x9')&&_[_0xc677('0xa')](_0x4e3dde)){var _0x20c1d0=JSON[_0xc677('0x1')](_0x4e3dde);var _0x55da1f={'$gte':moment(moment(_0x20c1d0[_0xc677('0xb')])['format'](_0xc677('0xc')))[_0xc677('0xd')]()[_0xc677('0xe')](),'$lte':moment(moment(_0x20c1d0[_0xc677('0xf')])['format']('YYYY-MM-DD'))[_0xc677('0xd')]()[_0xc677('0x10')](0x1,'s')[_0xc677('0xe')]()};_0x229d43[_0x4b74cb]=_0x55da1f;}else if(_0xd69cab[_0xc677('0x11')]==='uniqueid'){_0x229d43[_0x4b74cb]=_0x4e3dde;}else{_0x229d43[_0x4b74cb]=_[_0xc677('0x12')](_0x4e3dde)?_0x4e3dde:JSON['parse'](_0x4e3dde);}}else{_0x229d43[_0x4b74cb]=_['isArray'](_0x4e3dde)?_0x4e3dde:JSON[_0xc677('0x1')](_0x4e3dde);}}catch(_0x1c658b){_0x229d43[_0x4b74cb]=_0x4e3dde[_0xc677('0x3')](',');}});}return _0x229d43;};exports[_0xc677('0x13')]=function(_0x342ed7){_0x342ed7=parseInt(_0x342ed7,0xa);if(!_0x342ed7||_0x342ed7<0x0){_0x342ed7=LIMIT_VALUE;}return _0x342ed7;};exports[_0xc677('0x14')]=function(_0x4f7b4d){_0x4f7b4d=parseInt(_0x4f7b4d,0xa);if(!_0x4f7b4d||_0x4f7b4d<0x0){_0x4f7b4d=0x0;}return _0x4f7b4d;};exports[_0xc677('0x15')]=function(_0x5a46f5){var _0xc20941,_0x16904d=null;if(_0x5a46f5){_0xc20941=_0x5a46f5['split'](',');_0x16904d=_[_0xc677('0x16')](_0xc20941,function(_0xd8e062){if(_0xd8e062[_0xc677('0x17')]('-')===0x0){return[_0xd8e062===_0xc677('0x18')?sequelize[_0xc677('0x19')](sequelize[_0xc677('0x1a')](_0xc677('0x18')),_0xc677('0x1b')):_0xd8e062[_0xc677('0x1c')](0x1),'DESC'];}else{return[_0xd8e062===_0xc677('0x18')?sequelize[_0xc677('0x19')](sequelize['col'](_0xc677('0x18')),_0xc677('0x1b')):_0xd8e062,_0xc677('0x1d')];}});}return _0x16904d;};exports[_0xc677('0x1e')]=function(_0x26a476,_0x5addf9){if(_[_0xc677('0x5')](_0x26a476)){return _0x26a476;}if(_[_0xc677('0x12')](_0x26a476)){for(var _0x274fc1=0x0;_0x274fc1<_0x26a476[_0xc677('0x1f')];_0x274fc1+=0x1){_0x26a476[_0x274fc1]=this[_0xc677('0x1e')](_0x26a476[_0x274fc1],_0x5addf9);}return _0x26a476;}if(!_[_0xc677('0x20')](_0x26a476)){return _0x26a476;}if(_[_0xc677('0x21')](_0x5addf9)){_0x5addf9=[_0x5addf9];}if(!_[_0xc677('0x12')](_0x5addf9)){return _0x26a476;}for(var _0x18b11d=0x0;_0x18b11d<_0x5addf9[_0xc677('0x1f')];_0x18b11d+=0x1){_[_0xc677('0x22')](_0x26a476,_0x5addf9[_0x18b11d]);}for(var _0x29cecb in _0x26a476){if(_0x26a476['hasOwnProperty'](_0x29cecb)){_0x26a476[_0x29cecb]=this['omit'](_0x26a476[_0x29cecb],_0x5addf9);}}return _0x26a476;};exports[_0xc677('0x23')]=function(_0x106299){return _0x106299[_0xc677('0x24')](RegExp('^[+]?[0-9]*$'))?!![]:![];};exports[_0xc677('0x25')]=function(_0x918eef){return _0x918eef[_0xc677('0x24')](/^\S+@\S+$/)?!![]:![];};exports[_0xc677('0x26')]=function(_0x4e672a){var _0x2cd024=[];_0x4e672a[_0xc677('0x3')](/[ ,]+/)[_0xc677('0x27')](function(_0x124cda){_0x124cda=_0x124cda[_0xc677('0x28')](/([^:]")"+/g,'$1');_0x124cda='+'+_0x124cda+'*';if(_0x124cda[_0xc677('0x29')]('@'))_0x124cda='\x22'+_0x124cda+'\x22';_0x2cd024[_0xc677('0x2a')](_0x124cda);});return _0x2cd024[_0xc677('0x2b')]('\x20');};exports[_0xc677('0x2c')]=function(_0x3cc663,_0x4acb29,_0x2cef39){var _0x5b0df8={},_0x145445={};if(_0x4acb29[_0xc677('0x2d')][_0xc677('0x2e')]){_0x4acb29[_0xc677('0x2d')]['id']=_0x4acb29[_0xc677('0x2d')]['$id'];delete _0x4acb29[_0xc677('0x2d')]['$id'];}_0x5b0df8['model']=_[_0xc677('0x16')](_0x3cc663,_0xc677('0x11'));_0x5b0df8[_0xc677('0x2d')]=_[_0xc677('0x2')](_0x4acb29[_0xc677('0x2d')]);_0x5b0df8[_0xc677('0x4')]=_[_0xc677('0x2f')](_0x5b0df8[_0xc677('0x30')],_0x5b0df8[_0xc677('0x2d')]);_0x145445[_0xc677('0x31')]=_[_0xc677('0x2f')](_0x5b0df8['model'],this[_0xc677('0x32')](_0x4acb29[_0xc677('0x2d')][_0xc677('0x32')]));_0x145445[_0xc677('0x31')]=_0x145445['attributes'][_0xc677('0x1f')]?_0x145445['attributes']:_0x5b0df8[_0xc677('0x30')];if(!_0x4acb29['query'][_0xc677('0x33')](_0xc677('0x34'))){_0x145445[_0xc677('0x13')]=this[_0xc677('0x13')](_0x4acb29['query'][_0xc677('0x13')]);_0x145445['offset']=this[_0xc677('0x14')](_0x4acb29[_0xc677('0x2d')][_0xc677('0x14')]);}_0x145445['order']=this['sort'](_0x4acb29['query'][_0xc677('0x15')]);_0x145445[_0xc677('0x35')]=this[_0xc677('0x4')](_[_0xc677('0x36')](_0x4acb29['query'],_0x5b0df8['filters']),_0x3cc663);if(_0x4acb29['query'][_0xc677('0x37')]){_0x145445[_0xc677('0x35')]=_['merge'](_0x145445['where'],{'$or':_[_0xc677('0x16')](_0x3cc663,function(_0x43d7ba){if(_0x43d7ba['type']!=='VIRTUAL'){if(_0x2cef39){return sequelize['where'](sequelize['fn'](_0xc677('0x38'),sequelize[_0xc677('0x1a')](_0x43d7ba[_0xc677('0x11')])),{'$like':sequelize['fn']('lower','%'+_0x4acb29[_0xc677('0x2d')][_0xc677('0x37')]+'%')});}else{var _0x5f1e27={};_0x5f1e27[_0x43d7ba['name']]={'$like':'%'+_0x4acb29[_0xc677('0x2d')][_0xc677('0x37')]+'%'};return _0x5f1e27;}}})});}_0x145445=_[_0xc677('0x39')]({},_0x145445,_0x4acb29[_0xc677('0x3a')]);return _0x145445;};
\ No newline at end of file
+var _0x605a=['intersection','attributes','length','nolimit','order','where','pick','filter','merge','VIRTUAL','lower','options','moment','parse','keys','includes','split','isEmpty','forOwn','find','type','isPlainObject','$gte','format','YYYY-MM-DD','utc','$lte','subtract','name','uniqueid','isArray','limit','offset','sort','map','indexOf','priority','cast','col','unsigned','substr','DESC','omit','isObject','isString','unset','hasOwnProperty','isNumeric','match','^[+]?[0-9]*$','isEmail','forEach','push','join','getOptions','$id','query','model','filters'];(function(_0x497b72,_0x3c549b){var _0xa47fbb=function(_0x4582c5){while(--_0x4582c5){_0x497b72['push'](_0x497b72['shift']());}};_0xa47fbb(++_0x3c549b);}(_0x605a,0x133));var _0xa605=function(_0x491785,_0x9106a7){_0x491785=_0x491785-0x0;var _0x4fb113=_0x605a[_0x491785];return _0x4fb113;};'use strict';var _=require('lodash');var sequelize=require('sequelize');var moment=require(_0xa605('0x0'));var LIMIT_VALUE=0xfa;function hasSequelizeOperator(_0x26003f){var _0x435ba4=['ne'];try{var _0xadb5e7=JSON[_0xa605('0x1')](_0x26003f);var _0x52f95a=Object[_0xa605('0x2')](_0xadb5e7)[0x0];return _0x435ba4[_0xa605('0x3')](_0x52f95a);}catch(_0x292739){return![];}}function getOperatorValue(_0x49e20c){var _0x3440e4=JSON['parse'](_0x49e20c);var _0x40b3b7=Object[_0xa605('0x2')](_0x3440e4)[0x0];var _0xbee0d=_0x3440e4[_0x40b3b7];return{['$'+_0x40b3b7]:_0xbee0d};}exports['fields']=function(_0x368a73){var _0x5b9446=null;if(_0x368a73){_0x5b9446=_0x368a73[_0xa605('0x4')](',');}return _0x5b9446;};exports['filters']=function(_0x3b4599,_0x3c07d7){var _0x1b2325={};if(!_[_0xa605('0x5')](_0x3b4599)){_[_0xa605('0x6')](_0x3b4599,function(_0xd0425,_0x1e4c04){try{if(_0x3c07d7){var _0x21ae62=_[_0xa605('0x7')](_0x3c07d7,{'name':_0x1e4c04})||{};if(hasSequelizeOperator(_0xd0425)){_0x1b2325[_0x1e4c04]=getOperatorValue(_0xd0425);}else if(_0x21ae62[_0xa605('0x8')]==='DATE'&&_[_0xa605('0x9')](_0xd0425)){var _0x25aec9=JSON[_0xa605('0x1')](_0xd0425);var _0x188729={'$gte':moment(moment(_0x25aec9[_0xa605('0xa')])[_0xa605('0xb')](_0xa605('0xc')))[_0xa605('0xd')]()[_0xa605('0xb')](),'$lte':moment(moment(_0x25aec9[_0xa605('0xe')])[_0xa605('0xb')]('YYYY-MM-DD'))['utc']()[_0xa605('0xf')](0x1,'s')['format']()};_0x1b2325[_0x1e4c04]=_0x188729;}else if(_0x21ae62[_0xa605('0x10')]===_0xa605('0x11')){_0x1b2325[_0x1e4c04]=_0xd0425;}else{_0x1b2325[_0x1e4c04]=_[_0xa605('0x12')](_0xd0425)?_0xd0425:JSON[_0xa605('0x1')](_0xd0425);}}else{_0x1b2325[_0x1e4c04]=_[_0xa605('0x12')](_0xd0425)?_0xd0425:JSON['parse'](_0xd0425);}}catch(_0x1eeeee){_0x1b2325[_0x1e4c04]=_0xd0425[_0xa605('0x4')](',');}});}return _0x1b2325;};exports[_0xa605('0x13')]=function(_0x33093b){_0x33093b=parseInt(_0x33093b,0xa);if(!_0x33093b||_0x33093b<0x0){_0x33093b=LIMIT_VALUE;}return _0x33093b;};exports[_0xa605('0x14')]=function(_0x1a862d){_0x1a862d=parseInt(_0x1a862d,0xa);if(!_0x1a862d||_0x1a862d<0x0){_0x1a862d=0x0;}return _0x1a862d;};exports[_0xa605('0x15')]=function(_0x3e0634){var _0x5573c2,_0x5dd164=null;if(_0x3e0634){_0x5573c2=_0x3e0634['split'](',');_0x5dd164=_[_0xa605('0x16')](_0x5573c2,function(_0x3f4eae){if(_0x3f4eae[_0xa605('0x17')]('-')===0x0){return[_0x3f4eae===_0xa605('0x18')?sequelize[_0xa605('0x19')](sequelize[_0xa605('0x1a')](_0xa605('0x18')),_0xa605('0x1b')):_0x3f4eae[_0xa605('0x1c')](0x1),_0xa605('0x1d')];}else{return[_0x3f4eae==='priority'?sequelize[_0xa605('0x19')](sequelize[_0xa605('0x1a')](_0xa605('0x18')),'unsigned'):_0x3f4eae,'ASC'];}});}return _0x5dd164;};exports[_0xa605('0x1e')]=function(_0x313a23,_0x1d443d){if(_[_0xa605('0x5')](_0x313a23)){return _0x313a23;}if(_[_0xa605('0x12')](_0x313a23)){for(var _0x12c800=0x0;_0x12c800<_0x313a23['length'];_0x12c800+=0x1){_0x313a23[_0x12c800]=this[_0xa605('0x1e')](_0x313a23[_0x12c800],_0x1d443d);}return _0x313a23;}if(!_[_0xa605('0x1f')](_0x313a23)){return _0x313a23;}if(_[_0xa605('0x20')](_0x1d443d)){_0x1d443d=[_0x1d443d];}if(!_[_0xa605('0x12')](_0x1d443d)){return _0x313a23;}for(var _0x168d62=0x0;_0x168d62<_0x1d443d['length'];_0x168d62+=0x1){_[_0xa605('0x21')](_0x313a23,_0x1d443d[_0x168d62]);}for(var _0x25ee2d in _0x313a23){if(_0x313a23[_0xa605('0x22')](_0x25ee2d)){_0x313a23[_0x25ee2d]=this[_0xa605('0x1e')](_0x313a23[_0x25ee2d],_0x1d443d);}}return _0x313a23;};exports[_0xa605('0x23')]=function(_0x1435a1){return _0x1435a1[_0xa605('0x24')](RegExp(_0xa605('0x25')))?!![]:![];};exports[_0xa605('0x26')]=function(_0x40359b){return _0x40359b[_0xa605('0x24')](/^\S+@\S+$/)?!![]:![];};exports['getFullTextValue']=function(_0x17a7be){var _0x10d609=[];_0x17a7be[_0xa605('0x4')](/[ ,]+/)[_0xa605('0x27')](function(_0x1c9f76){_0x1c9f76=_0x1c9f76['replace'](/([^:]")"+/g,'$1');_0x1c9f76='+'+_0x1c9f76+'*';if(_0x1c9f76[_0xa605('0x3')]('@'))_0x1c9f76='\x22'+_0x1c9f76+'\x22';_0x10d609[_0xa605('0x28')](_0x1c9f76);});return _0x10d609[_0xa605('0x29')]('\x20');};exports[_0xa605('0x2a')]=function(_0x2baa0d,_0x51cdc9,_0x7cffd4){var _0x544694={},_0x59e69e={};if(_0x51cdc9['query'][_0xa605('0x2b')]){_0x51cdc9['query']['id']=_0x51cdc9[_0xa605('0x2c')][_0xa605('0x2b')];delete _0x51cdc9['query'][_0xa605('0x2b')];}_0x544694[_0xa605('0x2d')]=_[_0xa605('0x16')](_0x2baa0d,_0xa605('0x10'));_0x544694[_0xa605('0x2c')]=_['keys'](_0x51cdc9[_0xa605('0x2c')]);_0x544694[_0xa605('0x2e')]=_[_0xa605('0x2f')](_0x544694[_0xa605('0x2d')],_0x544694[_0xa605('0x2c')]);_0x59e69e[_0xa605('0x30')]=_[_0xa605('0x2f')](_0x544694[_0xa605('0x2d')],this['fields'](_0x51cdc9['query']['fields']));_0x59e69e[_0xa605('0x30')]=_0x59e69e['attributes'][_0xa605('0x31')]?_0x59e69e[_0xa605('0x30')]:_0x544694[_0xa605('0x2d')];if(!_0x51cdc9[_0xa605('0x2c')][_0xa605('0x22')](_0xa605('0x32'))){_0x59e69e[_0xa605('0x13')]=this['limit'](_0x51cdc9[_0xa605('0x2c')][_0xa605('0x13')]);_0x59e69e[_0xa605('0x14')]=this['offset'](_0x51cdc9[_0xa605('0x2c')]['offset']);}_0x59e69e[_0xa605('0x33')]=this[_0xa605('0x15')](_0x51cdc9[_0xa605('0x2c')][_0xa605('0x15')]);_0x59e69e[_0xa605('0x34')]=this[_0xa605('0x2e')](_[_0xa605('0x35')](_0x51cdc9['query'],_0x544694['filters']),_0x2baa0d);if(_0x51cdc9[_0xa605('0x2c')][_0xa605('0x36')]){_0x59e69e[_0xa605('0x34')]=_[_0xa605('0x37')](_0x59e69e[_0xa605('0x34')],{'$or':_['map'](_0x2baa0d,function(_0x30a001){if(_0x30a001['type']!==_0xa605('0x38')){if(_0x7cffd4){return sequelize[_0xa605('0x34')](sequelize['fn'](_0xa605('0x39'),sequelize[_0xa605('0x1a')](_0x30a001[_0xa605('0x10')])),{'$like':sequelize['fn'](_0xa605('0x39'),'%'+_0x51cdc9[_0xa605('0x2c')][_0xa605('0x36')]+'%')});}else{var _0xb79928={};_0xb79928[_0x30a001[_0xa605('0x10')]]={'$like':'%'+_0x51cdc9[_0xa605('0x2c')][_0xa605('0x36')]+'%'};return _0xb79928;}}})});}_0x59e69e=_[_0xa605('0x37')]({},_0x59e69e,_0x51cdc9[_0xa605('0x3a')]);return _0x59e69e;};
\ No newline at end of file
index 9d9bc53..c111251 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9a3e=['development','test','client','use','toISOString','split','appPath','views','/server/views','engine','html','urlencoded','50mb','json','express','serve-favicon','body-parser','method-override','errorhandler','path','passport','moment','./environment','../mysqldb','default','get','production','set','join','root','public'];(function(_0x2598b4,_0x5f0ca9){var _0x4c86ae=function(_0x13fffc){while(--_0x13fffc){_0x2598b4['push'](_0x2598b4['shift']());}};_0x4c86ae(++_0x5f0ca9);}(_0x9a3e,0x1df));var _0xe9a3=function(_0x4f574a,_0x1ffa42){_0x4f574a=_0x4f574a-0x0;var _0x4926db=_0x9a3e[_0x4f574a];return _0x4926db;};'use strict';var express=require(_0xe9a3('0x0'));var favicon=require(_0xe9a3('0x1'));var bodyParser=require(_0xe9a3('0x2'));var methodOverride=require(_0xe9a3('0x3'));var cookieParser=require('cookie-parser');var errorHandler=require(_0xe9a3('0x4'));var path=require(_0xe9a3('0x5'));var passport=require(_0xe9a3('0x6'));var cors=require('cors');var moment=require(_0xe9a3('0x7'));var config=require(_0xe9a3('0x8'));var db=require(_0xe9a3('0x9'))['db'];exports[_0xe9a3('0xa')]=function(_0x280267){var _0x25a9f8=_0x280267[_0xe9a3('0xb')]('env');if(_0x25a9f8===_0xe9a3('0xc')){_0x280267[_0xe9a3('0xd')]('appPath',path[_0xe9a3('0xe')](config[_0xe9a3('0xf')],_0xe9a3('0x10')));}if(_0x25a9f8===_0xe9a3('0x11')||_0x25a9f8===_0xe9a3('0x12')){_0x280267[_0xe9a3('0xd')]('appPath',path[_0xe9a3('0xe')](config[_0xe9a3('0xf')],_0xe9a3('0x13')));_0x280267[_0xe9a3('0x14')](errorHandler());}_0x280267[_0xe9a3('0xd')]('json\x20replacer',function(_0x44239a,_0x48128d){if(this[_0x44239a]instanceof Date){_0x48128d=this[_0x44239a][_0xe9a3('0x15')]()[_0xe9a3('0x16')]('.')[0x0]+'Z';}return _0x48128d;});_0x280267[_0xe9a3('0x14')](express['static'](_0x280267['get'](_0xe9a3('0x17'))));_0x280267[_0xe9a3('0xd')](_0xe9a3('0x18'),config[_0xe9a3('0xf')]+_0xe9a3('0x19'));_0x280267[_0xe9a3('0x1a')]('html',require('ejs')['renderFile']);_0x280267[_0xe9a3('0xd')]('view\x20engine',_0xe9a3('0x1b'));_0x280267[_0xe9a3('0x14')](bodyParser[_0xe9a3('0x1c')]({'limit':_0xe9a3('0x1d'),'extended':!![]}));_0x280267[_0xe9a3('0x14')](bodyParser[_0xe9a3('0x1e')]({'limit':_0xe9a3('0x1d')}));_0x280267[_0xe9a3('0x14')](cors());_0x280267['use'](methodOverride());_0x280267['use'](cookieParser());_0x280267['use'](passport['initialize']());};
\ No newline at end of file
+var _0xdb6e=['appPath','use','json\x20replacer','toISOString','split','static','views','engine','html','renderFile','view\x20engine','urlencoded','50mb','json','express','body-parser','errorhandler','path','passport','cors','./environment','../mysqldb','default','get','env','set','root','development'];(function(_0x533310,_0x1bad41){var _0x4f3d61=function(_0x58c795){while(--_0x58c795){_0x533310['push'](_0x533310['shift']());}};_0x4f3d61(++_0x1bad41);}(_0xdb6e,0x142));var _0xedb6=function(_0x44b0de,_0x213afa){_0x44b0de=_0x44b0de-0x0;var _0x21da2a=_0xdb6e[_0x44b0de];return _0x21da2a;};'use strict';var express=require(_0xedb6('0x0'));var favicon=require('serve-favicon');var bodyParser=require(_0xedb6('0x1'));var methodOverride=require('method-override');var cookieParser=require('cookie-parser');var errorHandler=require(_0xedb6('0x2'));var path=require(_0xedb6('0x3'));var passport=require(_0xedb6('0x4'));var cors=require(_0xedb6('0x5'));var moment=require('moment');var config=require(_0xedb6('0x6'));var db=require(_0xedb6('0x7'))['db'];exports[_0xedb6('0x8')]=function(_0x5eed40){var _0x3de2f3=_0x5eed40[_0xedb6('0x9')](_0xedb6('0xa'));if(_0x3de2f3==='production'){_0x5eed40[_0xedb6('0xb')]('appPath',path['join'](config[_0xedb6('0xc')],'public'));}if(_0x3de2f3===_0xedb6('0xd')||_0x3de2f3==='test'){_0x5eed40[_0xedb6('0xb')](_0xedb6('0xe'),path['join'](config[_0xedb6('0xc')],'client'));_0x5eed40[_0xedb6('0xf')](errorHandler());}_0x5eed40[_0xedb6('0xb')](_0xedb6('0x10'),function(_0x4f9e37,_0xee7cb){if(this[_0x4f9e37]instanceof Date){_0xee7cb=this[_0x4f9e37][_0xedb6('0x11')]()[_0xedb6('0x12')]('.')[0x0]+'Z';}return _0xee7cb;});_0x5eed40[_0xedb6('0xf')](express[_0xedb6('0x13')](_0x5eed40[_0xedb6('0x9')](_0xedb6('0xe'))));_0x5eed40['set'](_0xedb6('0x14'),config[_0xedb6('0xc')]+'/server/views');_0x5eed40[_0xedb6('0x15')](_0xedb6('0x16'),require('ejs')[_0xedb6('0x17')]);_0x5eed40['set'](_0xedb6('0x18'),_0xedb6('0x16'));_0x5eed40[_0xedb6('0xf')](bodyParser[_0xedb6('0x19')]({'limit':_0xedb6('0x1a'),'extended':!![]}));_0x5eed40['use'](bodyParser[_0xedb6('0x1b')]({'limit':_0xedb6('0x1a')}));_0x5eed40[_0xedb6('0xf')](cors());_0x5eed40[_0xedb6('0xf')](methodOverride());_0x5eed40[_0xedb6('0xf')](cookieParser());_0x5eed40['use'](passport['initialize']());};
\ No newline at end of file
index cae811e..5d5db12 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x32c3=['filter','family','IPv4','internal','head','mac','address','127.0.0.1','orderBy','cpus','map','model','createHash','md5','digest','hex','platform','licenseToken','win32','dmidecode\x20--string\x20system-uuid','utf8','replace','hostname','ipAddress','update','substring','lodash','crypto','bimedia-machine-uuid','child_process','execSync','../environment','networkInterfaces'];(function(_0x2d8475,_0x12736a){var _0x19522d=function(_0x3c68cb){while(--_0x3c68cb){_0x2d8475['push'](_0x2d8475['shift']());}};_0x19522d(++_0x12736a);}(_0x32c3,0x1c7));var _0x332c=function(_0x20a584,_0xe384a5){_0x20a584=_0x20a584-0x0;var _0x4b41a8=_0x32c3[_0x20a584];return _0x4b41a8;};'use strict';var _=require(_0x332c('0x0'));var os=require('os');var crypto=require(_0x332c('0x1'));var machine=require(_0x332c('0x2'));var exec=require(_0x332c('0x3'))[_0x332c('0x4')];var config=require(_0x332c('0x5'));function getInterfaces(){var _0x2b00bb=[];var _0x4a0ada=os[_0x332c('0x6')]();var _0xdcb23b=_['orderBy'](_['keys'](_0x4a0ada));for(var _0x51808f=0x0;_0x51808f<_0xdcb23b['length'];_0x51808f++){var _0x1a313d=_0x4a0ada[_0xdcb23b[_0x51808f]][_0x332c('0x7')](function(_0x7034f8){return _0x7034f8[_0x332c('0x8')]===_0x332c('0x9')&&_0x7034f8[_0x332c('0xa')]===![];});_0x2b00bb=_0x2b00bb['concat'](_0x1a313d);}return _0x2b00bb;}function getFirstInterface(){var _0x5ef857=_[_0x332c('0xb')](getInterfaces());return{'macAddress':_0x5ef857&&_0x5ef857[_0x332c('0xc')]?_0x5ef857[_0x332c('0xc')]:'00:00:00:00:00:00','ipAddress':_0x5ef857&&_0x5ef857[_0x332c('0xd')]?_0x5ef857[_0x332c('0xd')]:_0x332c('0xe')};}exports['getFirstInterface']=getFirstInterface;function getCPUhash(){var _0x261f3f=_[_0x332c('0xf')](os[_0x332c('0x10')]()[_0x332c('0x11')](function(_0x7eaa51){return _0x7eaa51[_0x332c('0x12')];}))['join'](':');return crypto[_0x332c('0x13')](_0x332c('0x14'))['update'](_0x261f3f)[_0x332c('0x15')](_0x332c('0x16'));}exports['getUuid']=function(){var _0x258906=os[_0x332c('0x17')]();var _0x49050a=/[0-9a-f-]{36}/;if(config[_0x332c('0x18')]&&_0x49050a['test'](config[_0x332c('0x18')])){return config[_0x332c('0x18')];}else if(_0x258906===_0x332c('0x19')){return exec(_0x332c('0x1a'),{'encoding':_0x332c('0x1b')})[_0x332c('0x1c')]('\x0d\x0a','');}else{var _0x559a4b=getFirstInterface();var _0x5cb51b=getCPUhash();var _0x5ebd50=_0x5cb51b+'|'+os[_0x332c('0x1d')]()+'|'+_0x559a4b['macAddress']+'|'+_0x559a4b[_0x332c('0x1e')];var _0x212a0a=crypto[_0x332c('0x13')](_0x332c('0x14'))[_0x332c('0x1f')](_0x5ebd50)[_0x332c('0x15')](_0x332c('0x16'));return _0x212a0a['substring'](0x0,0x8)+'-'+_0x212a0a[_0x332c('0x20')](0x8,0xc)+'-'+_0x212a0a['substring'](0xc,0x10)+'-'+_0x212a0a[_0x332c('0x20')](0x10,0x14)+'-'+_0x212a0a[_0x332c('0x20')](0x14);}};
\ No newline at end of file
+var _0x9d4f=['child_process','execSync','../environment','networkInterfaces','orderBy','keys','filter','family','IPv4','head','mac','address','127.0.0.1','model','createHash','md5','update','digest','hex','getUuid','platform','licenseToken','win32','dmidecode\x20--string\x20system-uuid','utf8','replace','hostname','ipAddress','substring','lodash','crypto','bimedia-machine-uuid'];(function(_0x5d81b4,_0x2f08af){var _0x502d45=function(_0x4548dd){while(--_0x4548dd){_0x5d81b4['push'](_0x5d81b4['shift']());}};_0x502d45(++_0x2f08af);}(_0x9d4f,0x9d));var _0xf9d4=function(_0x8af7e7,_0x472402){_0x8af7e7=_0x8af7e7-0x0;var _0x2f6cb5=_0x9d4f[_0x8af7e7];return _0x2f6cb5;};'use strict';var _=require(_0xf9d4('0x0'));var os=require('os');var crypto=require(_0xf9d4('0x1'));var machine=require(_0xf9d4('0x2'));var exec=require(_0xf9d4('0x3'))[_0xf9d4('0x4')];var config=require(_0xf9d4('0x5'));function getInterfaces(){var _0x6eba6f=[];var _0x4f8787=os[_0xf9d4('0x6')]();var _0x8b18d8=_[_0xf9d4('0x7')](_[_0xf9d4('0x8')](_0x4f8787));for(var _0x49f541=0x0;_0x49f541<_0x8b18d8['length'];_0x49f541++){var _0x296070=_0x4f8787[_0x8b18d8[_0x49f541]][_0xf9d4('0x9')](function(_0xa237a9){return _0xa237a9[_0xf9d4('0xa')]===_0xf9d4('0xb')&&_0xa237a9['internal']===![];});_0x6eba6f=_0x6eba6f['concat'](_0x296070);}return _0x6eba6f;}function getFirstInterface(){var _0x1ca596=_[_0xf9d4('0xc')](getInterfaces());return{'macAddress':_0x1ca596&&_0x1ca596[_0xf9d4('0xd')]?_0x1ca596[_0xf9d4('0xd')]:'00:00:00:00:00:00','ipAddress':_0x1ca596&&_0x1ca596['address']?_0x1ca596[_0xf9d4('0xe')]:_0xf9d4('0xf')};}exports['getFirstInterface']=getFirstInterface;function getCPUhash(){var _0x288713=_['orderBy'](os['cpus']()['map'](function(_0x91b3e7){return _0x91b3e7[_0xf9d4('0x10')];}))['join'](':');return crypto[_0xf9d4('0x11')](_0xf9d4('0x12'))[_0xf9d4('0x13')](_0x288713)[_0xf9d4('0x14')](_0xf9d4('0x15'));}exports[_0xf9d4('0x16')]=function(){var _0x1b8137=os[_0xf9d4('0x17')]();var _0x46e3a3=/[0-9a-f-]{36}/;if(config[_0xf9d4('0x18')]&&_0x46e3a3['test'](config[_0xf9d4('0x18')])){return config[_0xf9d4('0x18')];}else if(_0x1b8137===_0xf9d4('0x19')){return exec(_0xf9d4('0x1a'),{'encoding':_0xf9d4('0x1b')})[_0xf9d4('0x1c')]('\x0d\x0a','');}else{var _0x5ce30a=getFirstInterface();var _0x4da49e=getCPUhash();var _0x3871fe=_0x4da49e+'|'+os[_0xf9d4('0x1d')]()+'|'+_0x5ce30a['macAddress']+'|'+_0x5ce30a[_0xf9d4('0x1e')];var _0x39dcc7=crypto[_0xf9d4('0x11')](_0xf9d4('0x12'))['update'](_0x3871fe)[_0xf9d4('0x14')](_0xf9d4('0x15'));return _0x39dcc7['substring'](0x0,0x8)+'-'+_0x39dcc7[_0xf9d4('0x1f')](0x8,0xc)+'-'+_0x39dcc7[_0xf9d4('0x1f')](0xc,0x10)+'-'+_0x39dcc7['substring'](0x10,0x14)+'-'+_0x39dcc7[_0xf9d4('0x1f')](0x14);}};
\ No newline at end of file
index 6db2326..5a12f5c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa7ec=['YYYY-MM-DD\x20HH:mm','encryptString','decryptString','days','DEMO\x20START\x20AT\x20%s','catch','error','message','finally','getUuid','findOrCreate','spread','SERVICE\x20LICENSE\x20STARTED\x20%s','default','util','moment','request-promise','pkginfo','version','../../mysqldb','../../components/encryptor','./hardware','../logger','license','https://www.xcallymotion.com','%s/api/servers/%s/check?version=%s','format','%s/api/servers/%s/check?version=%s&oldtoken=%s','exports','GET','then','get','data1','data2','active','info','update','Disabled','THE\x20LICENSE\x20HAS\x20BEEN\x20DISABLED','Changed','NEW\x20UUID\x20DETECTED:\x20FROM\x20%s\x20TO\x20%s','%s\x20-\x20GRAY\x20PERIOD\x20STARTED\x20AT\x20%s','toUpperCase'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0xa7ec,0x1bc));var _0xca7e=function(_0x15d343,_0x56f4ba){_0x15d343=_0x15d343-0x0;var _0x30ffe2=_0xa7ec[_0x15d343];return _0x30ffe2;};'use strict';var util=require(_0xca7e('0x0'));var moment=require(_0xca7e('0x1'));var rp=require(_0xca7e('0x2'));var BPromise=require('bluebird');var pkginfo=require(_0xca7e('0x3'))(module,_0xca7e('0x4'));var db=require(_0xca7e('0x5'))['db'];var encryptor=require(_0xca7e('0x6'));var hardware=require(_0xca7e('0x7'));var logger=require(_0xca7e('0x8'))(_0xca7e('0x9'));var HOST=_0xca7e('0xa');var TIME=0x3c*0x1388;var DAYS=0x7;var GRAY_PERIOD_REASON;var oldToken;var isOldTokenSent=![];function httpRequest(_0x25c516){return new BPromise(function(_0x48393f,_0x9f0912){var _0x9e68dc=util['format'](_0xca7e('0xb'),HOST,_0x25c516,module['exports'][_0xca7e('0x4')]);if(oldToken){_0x9e68dc=util[_0xca7e('0xc')](_0xca7e('0xd'),HOST,_0x25c516,module[_0xca7e('0xe')][_0xca7e('0x4')],oldToken);}var _0x53a061={'uri':_0x9e68dc,'method':_0xca7e('0xf'),'timeout':0xea60,'json':!![]};return rp(_0x53a061)[_0xca7e('0x10')](function(_0x512ba1){_0x48393f(_0x512ba1);})['catch'](function(_0x38f2f4){_0x9f0912(_0x38f2f4);});});}function manageLicense(_0x42b1ff,_0x5e073e){var _0x2469f1=_0x5e073e[_0xca7e('0x11')]({'plain':!![]});if(!isOldTokenSent&&_0x2469f1[_0xca7e('0x12')]!==_0x42b1ff&&!_0x2469f1[_0xca7e('0x13')]){oldToken=_0x2469f1[_0xca7e('0x12')];}httpRequest(_0x42b1ff)[_0xca7e('0x10')](function(_0x11b814){if(oldToken){oldToken=undefined;isOldTokenSent=!![];}if(_0x11b814[_0xca7e('0x14')]){isOldTokenSent=![];if(!_0x2469f1[_0xca7e('0x9')]&&_0x2469f1[_0xca7e('0x9')]!=_0x11b814['license']||_0x2469f1[_0xca7e('0x9')]&&_0x2469f1['data2']){logger[_0xca7e('0x15')]('THE\x20LICENSE\x20HAS\x20BEEN\x20ENABLED');}if(_0x2469f1[_0xca7e('0x9')]&&!_0x2469f1['data2']&&_0x2469f1[_0xca7e('0x9')]!=_0x11b814[_0xca7e('0x9')]){logger[_0xca7e('0x15')]('THE\x20LICENSE\x20HAS\x20BEEN\x20UPDATED');}if(_0x2469f1[_0xca7e('0x9')]&&!_0x2469f1[_0xca7e('0x13')]&&_0x2469f1[_0xca7e('0x9')]==_0x11b814[_0xca7e('0x9')]){return _0x5e073e;}return _0x5e073e[_0xca7e('0x16')]({'data1':_0x42b1ff,'data2':null,'license':_0x11b814[_0xca7e('0x9')]});}else{if(_0x11b814[_0xca7e('0x9')]||_0x2469f1[_0xca7e('0x9')]){if(!_0x2469f1[_0xca7e('0x13')]){if(_0x2469f1['data1']==_0x42b1ff){GRAY_PERIOD_REASON=_0xca7e('0x17');logger[_0xca7e('0x15')](_0xca7e('0x18'));}else{GRAY_PERIOD_REASON=_0xca7e('0x19');logger[_0xca7e('0x15')](_0xca7e('0x1a'),_0x2469f1[_0xca7e('0x12')],_0x42b1ff);}logger[_0xca7e('0x15')](_0xca7e('0x1b'),GRAY_PERIOD_REASON[_0xca7e('0x1c')](),moment()[_0xca7e('0xc')](_0xca7e('0x1d')));return _0x5e073e[_0xca7e('0x16')]({'data2':encryptor[_0xca7e('0x1e')](moment()['format'](_0xca7e('0x1d')))});}else{if(moment()['diff'](encryptor[_0xca7e('0x1f')](_0x2469f1[_0xca7e('0x13')]),_0xca7e('0x20'))>DAYS){logger[_0xca7e('0x15')](_0xca7e('0x21'),moment()[_0xca7e('0xc')](_0xca7e('0x1d')));isOldTokenSent=![];return _0x5e073e['update']({'data1':_0x42b1ff,'data2':null,'license':null});}}}else{if(_0x2469f1[_0xca7e('0x12')]!=_0x42b1ff){logger[_0xca7e('0x15')](_0xca7e('0x1a'),_0x2469f1[_0xca7e('0x12')],_0x42b1ff);return _0x5e073e[_0xca7e('0x16')]({'data1':_0x42b1ff,'data2':null,'license':null});}}}return _0x5e073e;})[_0xca7e('0x10')](function(_0x135cb6){_0x5e073e=_0x135cb6;})[_0xca7e('0x22')](function(_0x52aa56){logger[_0xca7e('0x23')](_0x52aa56[_0xca7e('0x24')]);})[_0xca7e('0x25')](function(){setTimeout(function(){manageLicense(hardware[_0xca7e('0x26')](),_0x5e073e);},TIME);});}function defaultLicense(){var _0x3248d9=hardware[_0xca7e('0x26')]();if(_0x3248d9){return db['License'][_0xca7e('0x27')]({'where':{'id':0x1},'defaults':{'data1':_0x3248d9}})[_0xca7e('0x28')](function(_0x4ffcb4,_0x9eee0b){logger[_0xca7e('0x15')](_0xca7e('0x29'),_0x3248d9);manageLicense(_0x3248d9,_0x4ffcb4);})[_0xca7e('0x22')](function(_0x5f2673){logger[_0xca7e('0x23')](_0x5f2673[_0xca7e('0x24')]);});}}exports[_0xca7e('0x2a')]=defaultLicense;
\ No newline at end of file
+var _0xedd4=['Disabled','Changed','NEW\x20UUID\x20DETECTED:\x20FROM\x20%s\x20TO\x20%s','%s\x20-\x20GRAY\x20PERIOD\x20STARTED\x20AT\x20%s','YYYY-MM-DD\x20HH:mm','update','encryptString','diff','decryptString','days','error','message','finally','getUuid','License','findOrCreate','SERVICE\x20LICENSE\x20STARTED\x20%s','default','util','moment','request-promise','version','../../mysqldb','./hardware','../logger','license','https://www.xcallymotion.com','format','%s/api/servers/%s/check?version=%s','exports','%s/api/servers/%s/check?version=%s&oldtoken=%s','GET','then','catch','get','data1','data2','active','THE\x20LICENSE\x20HAS\x20BEEN\x20ENABLED','info','THE\x20LICENSE\x20HAS\x20BEEN\x20UPDATED'];(function(_0x4b2c43,_0x6d3712){var _0x1b8085=function(_0x11cf46){while(--_0x11cf46){_0x4b2c43['push'](_0x4b2c43['shift']());}};_0x1b8085(++_0x6d3712);}(_0xedd4,0x15a));var _0x4edd=function(_0x1f993c,_0x18b478){_0x1f993c=_0x1f993c-0x0;var _0x14bea2=_0xedd4[_0x1f993c];return _0x14bea2;};'use strict';var util=require(_0x4edd('0x0'));var moment=require(_0x4edd('0x1'));var rp=require(_0x4edd('0x2'));var BPromise=require('bluebird');var pkginfo=require('pkginfo')(module,_0x4edd('0x3'));var db=require(_0x4edd('0x4'))['db'];var encryptor=require('../../components/encryptor');var hardware=require(_0x4edd('0x5'));var logger=require(_0x4edd('0x6'))(_0x4edd('0x7'));var HOST=_0x4edd('0x8');var TIME=0x3c*0x1388;var DAYS=0x7;var GRAY_PERIOD_REASON;var oldToken;var isOldTokenSent=![];function httpRequest(_0x46623c){return new BPromise(function(_0x2d139b,_0x321ca7){var _0x3ea0a3=util[_0x4edd('0x9')](_0x4edd('0xa'),HOST,_0x46623c,module[_0x4edd('0xb')][_0x4edd('0x3')]);if(oldToken){_0x3ea0a3=util[_0x4edd('0x9')](_0x4edd('0xc'),HOST,_0x46623c,module[_0x4edd('0xb')][_0x4edd('0x3')],oldToken);}var _0x4b3d91={'uri':_0x3ea0a3,'method':_0x4edd('0xd'),'timeout':0xea60,'json':!![]};return rp(_0x4b3d91)[_0x4edd('0xe')](function(_0x57e3b7){_0x2d139b(_0x57e3b7);})[_0x4edd('0xf')](function(_0x31c0d6){_0x321ca7(_0x31c0d6);});});}function manageLicense(_0x51379e,_0x55e351){var _0x18da43=_0x55e351[_0x4edd('0x10')]({'plain':!![]});if(!isOldTokenSent&&_0x18da43[_0x4edd('0x11')]!==_0x51379e&&!_0x18da43[_0x4edd('0x12')]){oldToken=_0x18da43[_0x4edd('0x11')];}httpRequest(_0x51379e)[_0x4edd('0xe')](function(_0x1fe2c4){if(oldToken){oldToken=undefined;isOldTokenSent=!![];}if(_0x1fe2c4[_0x4edd('0x13')]){isOldTokenSent=![];if(!_0x18da43[_0x4edd('0x7')]&&_0x18da43[_0x4edd('0x7')]!=_0x1fe2c4[_0x4edd('0x7')]||_0x18da43[_0x4edd('0x7')]&&_0x18da43['data2']){logger['info'](_0x4edd('0x14'));}if(_0x18da43[_0x4edd('0x7')]&&!_0x18da43[_0x4edd('0x12')]&&_0x18da43[_0x4edd('0x7')]!=_0x1fe2c4['license']){logger[_0x4edd('0x15')](_0x4edd('0x16'));}if(_0x18da43['license']&&!_0x18da43[_0x4edd('0x12')]&&_0x18da43[_0x4edd('0x7')]==_0x1fe2c4[_0x4edd('0x7')]){return _0x55e351;}return _0x55e351['update']({'data1':_0x51379e,'data2':null,'license':_0x1fe2c4['license']});}else{if(_0x1fe2c4[_0x4edd('0x7')]||_0x18da43[_0x4edd('0x7')]){if(!_0x18da43[_0x4edd('0x12')]){if(_0x18da43[_0x4edd('0x11')]==_0x51379e){GRAY_PERIOD_REASON=_0x4edd('0x17');logger['info']('THE\x20LICENSE\x20HAS\x20BEEN\x20DISABLED');}else{GRAY_PERIOD_REASON=_0x4edd('0x18');logger['info'](_0x4edd('0x19'),_0x18da43['data1'],_0x51379e);}logger[_0x4edd('0x15')](_0x4edd('0x1a'),GRAY_PERIOD_REASON['toUpperCase'](),moment()['format'](_0x4edd('0x1b')));return _0x55e351[_0x4edd('0x1c')]({'data2':encryptor[_0x4edd('0x1d')](moment()[_0x4edd('0x9')](_0x4edd('0x1b')))});}else{if(moment()[_0x4edd('0x1e')](encryptor[_0x4edd('0x1f')](_0x18da43[_0x4edd('0x12')]),_0x4edd('0x20'))>DAYS){logger['info']('DEMO\x20START\x20AT\x20%s',moment()[_0x4edd('0x9')](_0x4edd('0x1b')));isOldTokenSent=![];return _0x55e351[_0x4edd('0x1c')]({'data1':_0x51379e,'data2':null,'license':null});}}}else{if(_0x18da43[_0x4edd('0x11')]!=_0x51379e){logger[_0x4edd('0x15')](_0x4edd('0x19'),_0x18da43[_0x4edd('0x11')],_0x51379e);return _0x55e351[_0x4edd('0x1c')]({'data1':_0x51379e,'data2':null,'license':null});}}}return _0x55e351;})['then'](function(_0x12a2db){_0x55e351=_0x12a2db;})['catch'](function(_0x2f54ab){logger[_0x4edd('0x21')](_0x2f54ab[_0x4edd('0x22')]);})[_0x4edd('0x23')](function(){setTimeout(function(){manageLicense(hardware['getUuid'](),_0x55e351);},TIME);});}function defaultLicense(){var _0x484066=hardware[_0x4edd('0x24')]();if(_0x484066){return db[_0x4edd('0x25')][_0x4edd('0x26')]({'where':{'id':0x1},'defaults':{'data1':_0x484066}})['spread'](function(_0x1885f7,_0x1a37f1){logger[_0x4edd('0x15')](_0x4edd('0x27'),_0x484066);manageLicense(_0x484066,_0x1885f7);})['catch'](function(_0x36a30e){logger[_0x4edd('0x21')](_0x36a30e[_0x4edd('0x22')]);});}}exports[_0x4edd('0x28')]=defaultLicense;
\ No newline at end of file
index 46f2f32..a93aae1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0115=['./hardware','../../components/encryptor','../../mysqldb','Demo\x20license','getUuid','Breaking\x20license','License','find','defaults','then','catch','data1','split','decryptString','format','parse','uuid','machineUuid','gray','deadline','add','grayReason','message','User','findAll','role','sequelize','COUNT','col','count','admin','user','users','forEach','pick','countBy','telephone','License\x20limit\x20reached\x20for\x20users','exports','util','lodash','moment','bluebird'];(function(_0x57bb2f,_0x46736a){var _0x190dbe=function(_0x4de8ce){while(--_0x4de8ce){_0x57bb2f['push'](_0x57bb2f['shift']());}};_0x190dbe(++_0x46736a);}(_0x0115,0x1d5));var _0x5011=function(_0xb5fc7d,_0x2d5d64){_0xb5fc7d=_0xb5fc7d-0x0;var _0x435577=_0x0115[_0xb5fc7d];return _0x435577;};'use strict';var util=require(_0x5011('0x0'));var _=require(_0x5011('0x1'));var moment=require(_0x5011('0x2'));var BPromise=require(_0x5011('0x3'));var hardware=require(_0x5011('0x4'));var encryptor=require(_0x5011('0x5'));var db=require(_0x5011('0x6'))['db'];const demoLicense={'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':![],'description':_0x5011('0x7'),'machineUuid':hardware[_0x5011('0x8')](),'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':_0x5011('0x9'),'machineUuid':hardware['getUuid'](),'virtual':0x0,'voice':!![],'screenrecording':![],'preferred':![],'ai':![]};function getLicense(_0xec3f15){return new BPromise(function(_0x5a3b72,_0x588160){return db[_0x5011('0xa')][_0x5011('0xb')](_[_0x5011('0xc')](_0xec3f15,{'raw':!![],'where':{'id':0x1}}))[_0x5011('0xd')](function(_0x37fc3f){return checkLicense(_0x37fc3f,null);})[_0x5011('0xd')](function(_0x3b35f4){_0x5a3b72(_0x3b35f4);return;})[_0x5011('0xe')](function(_0x1c6856){_0x588160(_0x1c6856);});});}function checkLicense(_0x38be3f,_0x1bbf0d){if(!_0x38be3f){demoLicense['uuid']=_0x38be3f[_0x5011('0xf')];return demoLicense;}try{var _0x251c7e=_0x1bbf0d||_0x38be3f['license'];if(_['isEmpty'](_0x251c7e)){throw new Error('License\x20key\x20value\x20not\x20found');}var _0x258765=_0x38be3f[_0x5011('0xf')];var _0x47b8bc=_0x38be3f['data2'];var _0xda2172=_0x258765[_0x5011('0x10')]('-')[0x4];var _0x1055f2=_0x258765[_0x5011('0x10')]('-')[0x0];var _0x3a84b0=encryptor[_0x5011('0x11')](_0x251c7e,util[_0x5011('0x12')]('%s:%s:%s',_0xda2172,_0x258765,_0x1055f2));var _0x3f07f3=JSON[_0x5011('0x13')](_0x3a84b0);_0x3f07f3['demo']=![];_0x3f07f3[_0x5011('0x14')]=_0x258765;_0x3f07f3[_0x5011('0x15')]=hardware[_0x5011('0x8')]();if(_0x47b8bc){var _0x1cdc1f=encryptor['decryptString'](_0x47b8bc);_0x3f07f3[_0x5011('0x16')]=_0x1cdc1f;_0x3f07f3[_0x5011('0x17')]=moment(_0x1cdc1f)[_0x5011('0x18')](0x7,'days')[_0x5011('0x12')]();_0x3f07f3[_0x5011('0x19')]=_0x3f07f3[_0x5011('0x14')]!=_0x3f07f3[_0x5011('0x15')]?'changed':'disabled';}return _0x3f07f3;}catch(_0x51b3bc){breakingLicense[_0x5011('0x14')]=_0x38be3f[_0x5011('0xf')];breakingLicense['message']=_0x51b3bc[_0x5011('0x1a')];return breakingLicense;}}function getLimits(){return new BPromise(function(_0x19f45b,_0x11ae88){getLicense()[_0x5011('0xd')](function(_0x3e927d){return db[_0x5011('0x1b')][_0x5011('0x1c')]({'attributes':[_0x5011('0x1d'),[db[_0x5011('0x1e')]['fn'](_0x5011('0x1f'),db[_0x5011('0x1e')][_0x5011('0x20')](_0x5011('0x1d'))),_0x5011('0x21')]],'group':'role','where':{'role':{'$or':[_0x5011('0x22'),_0x5011('0x23'),'telephone']}},'raw':!![]})[_0x5011('0xd')](function(_0x22ae24){var _0x3e5b74={'user':_0x3e927d[_0x5011('0x24')]||0x0,'telephone':_0x3e927d['telephones']||0x0};_0x22ae24[_0x5011('0x25')](function(_0x306414){var _0x10b950=_0x306414[_0x5011('0x1d')]===_0x5011('0x22')?_0x5011('0x23'):_0x306414['role'];_0x3e5b74[_0x10b950]-=_0x306414[_0x5011('0x21')];if(_0x3e5b74[_0x10b950]<0x0)_0x3e5b74[_0x10b950]=0x0;});_0x19f45b(_0x3e5b74);return;});})[_0x5011('0xe')](function(_0x1a737c){_0x11ae88(_0x1a737c);});});}function checkUserLimits(_0xfb2a3c){return new BPromise(function(_0xb42435,_0x4d531a){getLimits()[_0x5011('0xd')](function(_0x485ceb){var _0x3b407f=_[_0x5011('0x26')](_[_0x5011('0x27')](_0xfb2a3c,_0x5011('0x1d')),['admin',_0x5011('0x23'),_0x5011('0x28')]);var _0x5b458f=(_0x3b407f[_0x5011('0x22')]||0x0)+(_0x3b407f[_0x5011('0x23')]||0x0);var _0x17934f=_0x3b407f[_0x5011('0x28')]||0x0;if(_0x5b458f>_0x485ceb['user'])return _0x4d531a(_0x5011('0x29'));if(_0x17934f>_0x485ceb[_0x5011('0x28')])return _0x4d531a('License\x20limit\x20reached\x20for\x20telephones');return _0xb42435();})[_0x5011('0xe')](function(_0x34741a){_0x4d531a(_0x34741a);});});}module[_0x5011('0x2a')]={'checkLicense':checkLicense,'checkUserLimits':checkUserLimits,'getLicense':getLicense};
\ No newline at end of file
+var _0x730c=['bluebird','./hardware','../../mysqldb','2027-01-01T00:00:00.000Z','Demo\x20license','getUuid','Breaking\x20license','License','find','defaults','then','catch','uuid','data1','license','isEmpty','License\x20key\x20value\x20not\x20found','split','decryptString','format','%s:%s:%s','parse','demo','machineUuid','gray','deadline','days','changed','disabled','message','User','findAll','sequelize','col','role','count','user','telephone','users','telephones','forEach','pick','countBy','admin','License\x20limit\x20reached\x20for\x20users','License\x20limit\x20reached\x20for\x20telephones','moment'];(function(_0x5a4b88,_0x18eb42){var _0x2c5cde=function(_0x3044af){while(--_0x3044af){_0x5a4b88['push'](_0x5a4b88['shift']());}};_0x2c5cde(++_0x18eb42);}(_0x730c,0x148));var _0xc730=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x730c[_0x3dd15e];return _0x231fd0;};'use strict';var util=require('util');var _=require('lodash');var moment=require(_0xc730('0x0'));var BPromise=require(_0xc730('0x1'));var hardware=require(_0xc730('0x2'));var encryptor=require('../../components/encryptor');var db=require(_0xc730('0x3'))['db'];const demoLicense={'demo':!![],'agents':0x2,'telephones':0x0,'users':0x1,'expiration':_0xc730('0x4'),'chat':![],'mail':![],'fax':![],'messaging':![],'whatsapp':![],'cm':![],'dialer':![],'jscripty':![],'openchannel':![],'callysquare':0x2,'webrtc':![],'jaws':![],'custom':![],'description':_0xc730('0x5'),'machineUuid':hardware[_0xc730('0x6')](),'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':_0xc730('0x7'),'machineUuid':hardware[_0xc730('0x6')](),'virtual':0x0,'voice':!![],'screenrecording':![],'preferred':![],'ai':![]};function getLicense(_0x1eb402){return new BPromise(function(_0x1eb1ce,_0x549712){return db[_0xc730('0x8')][_0xc730('0x9')](_[_0xc730('0xa')](_0x1eb402,{'raw':!![],'where':{'id':0x1}}))['then'](function(_0x46bded){return checkLicense(_0x46bded,null);})[_0xc730('0xb')](function(_0x4abad8){_0x1eb1ce(_0x4abad8);return;})[_0xc730('0xc')](function(_0x257756){_0x549712(_0x257756);});});}function checkLicense(_0x293b74,_0x476df4){if(!_0x293b74){demoLicense[_0xc730('0xd')]=_0x293b74[_0xc730('0xe')];return demoLicense;}try{var _0xad6a88=_0x476df4||_0x293b74[_0xc730('0xf')];if(_[_0xc730('0x10')](_0xad6a88)){throw new Error(_0xc730('0x11'));}var _0x5f5c73=_0x293b74[_0xc730('0xe')];var _0x421f77=_0x293b74['data2'];var _0x274a84=_0x5f5c73[_0xc730('0x12')]('-')[0x4];var _0x594697=_0x5f5c73[_0xc730('0x12')]('-')[0x0];var _0x1b2001=encryptor[_0xc730('0x13')](_0xad6a88,util[_0xc730('0x14')](_0xc730('0x15'),_0x274a84,_0x5f5c73,_0x594697));var _0x4fae2d=JSON[_0xc730('0x16')](_0x1b2001);_0x4fae2d[_0xc730('0x17')]=![];_0x4fae2d[_0xc730('0xd')]=_0x5f5c73;_0x4fae2d[_0xc730('0x18')]=hardware[_0xc730('0x6')]();if(_0x421f77){var _0x11361f=encryptor['decryptString'](_0x421f77);_0x4fae2d[_0xc730('0x19')]=_0x11361f;_0x4fae2d[_0xc730('0x1a')]=moment(_0x11361f)['add'](0x7,_0xc730('0x1b'))[_0xc730('0x14')]();_0x4fae2d['grayReason']=_0x4fae2d['uuid']!=_0x4fae2d[_0xc730('0x18')]?_0xc730('0x1c'):_0xc730('0x1d');}return _0x4fae2d;}catch(_0x126aa7){breakingLicense['uuid']=_0x293b74[_0xc730('0xe')];breakingLicense[_0xc730('0x1e')]=_0x126aa7[_0xc730('0x1e')];return breakingLicense;}}function getLimits(){return new BPromise(function(_0x316784,_0x3739ef){getLicense()[_0xc730('0xb')](function(_0x21aa85){return db[_0xc730('0x1f')][_0xc730('0x20')]({'attributes':['role',[db['sequelize']['fn']('COUNT',db[_0xc730('0x21')][_0xc730('0x22')](_0xc730('0x23'))),_0xc730('0x24')]],'group':_0xc730('0x23'),'where':{'role':{'$or':['admin',_0xc730('0x25'),_0xc730('0x26')]}},'raw':!![]})['then'](function(_0x267aa0){var _0x7346d6={'user':_0x21aa85[_0xc730('0x27')]||0x0,'telephone':_0x21aa85[_0xc730('0x28')]||0x0};_0x267aa0[_0xc730('0x29')](function(_0x2ef056){var _0xb3f719=_0x2ef056[_0xc730('0x23')]==='admin'?'user':_0x2ef056[_0xc730('0x23')];_0x7346d6[_0xb3f719]-=_0x2ef056['count'];if(_0x7346d6[_0xb3f719]<0x0)_0x7346d6[_0xb3f719]=0x0;});_0x316784(_0x7346d6);return;});})['catch'](function(_0x3fe56d){_0x3739ef(_0x3fe56d);});});}function checkUserLimits(_0x2061a3){return new BPromise(function(_0x5dbce3,_0x45b6a8){getLimits()[_0xc730('0xb')](function(_0x31de8f){var _0x59a84d=_[_0xc730('0x2a')](_[_0xc730('0x2b')](_0x2061a3,_0xc730('0x23')),[_0xc730('0x2c'),'user',_0xc730('0x26')]);var _0xf57f17=(_0x59a84d[_0xc730('0x2c')]||0x0)+(_0x59a84d[_0xc730('0x25')]||0x0);var _0x1b6332=_0x59a84d[_0xc730('0x26')]||0x0;if(_0xf57f17>_0x31de8f[_0xc730('0x25')])return _0x45b6a8(_0xc730('0x2d'));if(_0x1b6332>_0x31de8f['telephone'])return _0x45b6a8(_0xc730('0x2e'));return _0x5dbce3();})[_0xc730('0xc')](function(_0xcf55cb){_0x45b6a8(_0xcf55cb);});});}module['exports']={'checkLicense':checkLicense,'checkUserLimits':checkUserLimits,'getLicense':getLicense};
\ No newline at end of file
index 61b3592..1c0e7e0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x32b6=['secret','exports','http://localhost:9000','app-id'];(function(_0x1048cb,_0x48c0bd){var _0x5743f7=function(_0x169e6e){while(--_0x169e6e){_0x1048cb['push'](_0x1048cb['shift']());}};_0x5743f7(++_0x48c0bd);}(_0x32b6,0x1d1));var _0x632b=function(_0x58b62a,_0x13e24d){_0x58b62a=_0x58b62a-0x0;var _0x376690=_0x32b6[_0x58b62a];return _0x376690;};'use strict';module[_0x632b('0x0')]={'DOMAIN':_0x632b('0x1'),'SESSION_SECRET':'myappanuglar-secret','GOOGLE_ID':_0x632b('0x2'),'GOOGLE_SECRET':_0x632b('0x3'),'DEBUG':''};
\ No newline at end of file
+var _0xe820=['exports','myappanuglar-secret'];(function(_0x321911,_0x272ef6){var _0x52866e=function(_0x5aff83){while(--_0x5aff83){_0x321911['push'](_0x321911['shift']());}};_0x52866e(++_0x272ef6);}(_0xe820,0xd2));var _0x0e82=function(_0xb8c4c1,_0x186ec9){_0xb8c4c1=_0xb8c4c1-0x0;var _0x5024c2=_0xe820[_0xb8c4c1];return _0x5024c2;};'use strict';module[_0x0e82('0x0')]={'DOMAIN':'http://localhost:9000','SESSION_SECRET':_0x0e82('0x1'),'GOOGLE_ID':'app-id','GOOGLE_SECRET':'secret','DEBUG':''};
\ No newline at end of file
index 7e9e56e..2254be0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x41f3=['toUpperCase','exports','Logger','transports','File','%s-%s','error','info','Console','env','debugLevel','moment','winston','util','path','INFO','join','/var','log','xcally','%s-%s.log','message','replace','{{{','}}}','format'];(function(_0x128a79,_0x19f331){var _0x2ff426=function(_0x57ffc1){while(--_0x57ffc1){_0x128a79['push'](_0x128a79['shift']());}};_0x2ff426(++_0x19f331);}(_0x41f3,0x177));var _0x341f=function(_0x231cd8,_0x589945){_0x231cd8=_0x231cd8-0x0;var _0x569cf7=_0x41f3[_0x231cd8];return _0x569cf7;};'use strict';var moment=require(_0x341f('0x0'));var winston=require(_0x341f('0x1'));var util=require(_0x341f('0x2'));var path=require(_0x341f('0x3'));var debugLevel=_0x341f('0x4');function filename(_0x45a14f,_0x253f16){return path[_0x341f('0x5')](_0x341f('0x6'),_0x341f('0x7'),_0x341f('0x8'),util['format'](_0x341f('0x9'),_0x45a14f,_0x253f16));}function formatter(_0x5b497d,_0x457c4){_0x457c4['message']=_0x457c4[_0x341f('0xa')][_0x341f('0xb')](/@@{/g,_0x341f('0xc'))['replace'](/}@@/g,_0x341f('0xd'))[_0x341f('0xb')](/@{/g,'{{')['replace'](/}@/g,'}}');return util[_0x341f('0xe')]('[%s]\x20[%s]\x20%s\x20-\x20%s',moment()[_0x341f('0xe')]('YYYY-MM-DD\x20HH:mm:ss'),_0x457c4['level'][_0x341f('0xf')](),_0x5b497d,_0x457c4['message']);}module[_0x341f('0x10')]=function(_0x5667f6){return new winston[(_0x341f('0x11'))]({'transports':[new winston[(_0x341f('0x12'))][(_0x341f('0x13'))]({'name':util[_0x341f('0xe')](_0x341f('0x14'),_0x5667f6,_0x341f('0x15')),'filename':filename(_0x5667f6,_0x341f('0x15')),'level':'error','json':![],'maxsize':0xa00000,'maxFiles':0xa,'tailable':!![],'formatter':function(_0x30f03c){return formatter(_0x5667f6,_0x30f03c);}}),new winston[(_0x341f('0x12'))][(_0x341f('0x13'))]({'name':util[_0x341f('0xe')](_0x341f('0x14'),_0x5667f6,_0x341f('0x16')),'filename':filename(_0x5667f6,_0x341f('0x16')),'level':'info','json':![],'maxsize':0xa00000,'maxFiles':0xa,'tailable':!![],'formatter':function(_0x1d6056){return formatter(_0x5667f6,_0x1d6056);}}),new winston[(_0x341f('0x12'))][(_0x341f('0x17'))]({'level':process[_0x341f('0x18')][_0x341f('0x19')]||debugLevel,'json':![],'formatter':function(_0x131831){return formatter(_0x5667f6,_0x131831);}})]});};
\ No newline at end of file
+var _0xa42b=['format','%s-%s.log','message','replace','{{{','}}}','[%s]\x20[%s]\x20%s\x20-\x20%s','YYYY-MM-DD\x20HH:mm:ss','level','toUpperCase','Logger','%s-%s','error','transports','info','env','debugLevel','moment','path','join','/var','log','xcally'];(function(_0xe928d3,_0x46d1ba){var _0x1cc239=function(_0x3a484d){while(--_0x3a484d){_0xe928d3['push'](_0xe928d3['shift']());}};_0x1cc239(++_0x46d1ba);}(_0xa42b,0x84));var _0xba42=function(_0x3ed3d7,_0x8f4ee5){_0x3ed3d7=_0x3ed3d7-0x0;var _0x55814e=_0xa42b[_0x3ed3d7];return _0x55814e;};'use strict';var moment=require(_0xba42('0x0'));var winston=require('winston');var util=require('util');var path=require(_0xba42('0x1'));var debugLevel='INFO';function filename(_0x1ace38,_0x3b1535){return path[_0xba42('0x2')](_0xba42('0x3'),_0xba42('0x4'),_0xba42('0x5'),util[_0xba42('0x6')](_0xba42('0x7'),_0x1ace38,_0x3b1535));}function formatter(_0x15d577,_0xa6432){_0xa6432[_0xba42('0x8')]=_0xa6432[_0xba42('0x8')][_0xba42('0x9')](/@@{/g,_0xba42('0xa'))[_0xba42('0x9')](/}@@/g,_0xba42('0xb'))[_0xba42('0x9')](/@{/g,'{{')[_0xba42('0x9')](/}@/g,'}}');return util['format'](_0xba42('0xc'),moment()[_0xba42('0x6')](_0xba42('0xd')),_0xa6432[_0xba42('0xe')][_0xba42('0xf')](),_0x15d577,_0xa6432['message']);}module['exports']=function(_0x59a4e1){return new winston[(_0xba42('0x10'))]({'transports':[new winston['transports']['File']({'name':util[_0xba42('0x6')](_0xba42('0x11'),_0x59a4e1,_0xba42('0x12')),'filename':filename(_0x59a4e1,_0xba42('0x12')),'level':_0xba42('0x12'),'json':![],'maxsize':0xa00000,'maxFiles':0xa,'tailable':!![],'formatter':function(_0x36c76b){return formatter(_0x59a4e1,_0x36c76b);}}),new winston[(_0xba42('0x13'))]['File']({'name':util[_0xba42('0x6')](_0xba42('0x11'),_0x59a4e1,_0xba42('0x14')),'filename':filename(_0x59a4e1,'info'),'level':_0xba42('0x14'),'json':![],'maxsize':0xa00000,'maxFiles':0xa,'tailable':!![],'formatter':function(_0x522ab3){return formatter(_0x59a4e1,_0x522ab3);}}),new winston['transports']['Console']({'level':process[_0xba42('0x15')][_0xba42('0x16')]||debugLevel,'json':![],'formatter':function(_0xaad316){return formatter(_0x59a4e1,_0xaad316);}})]});};
\ No newline at end of file
index 387bd2b..8f5f58e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x669d=['join','agi','email','../../services/email/index.js','routing','../../services/routing/index.js','xdr','../../services/xdr/index.js','exports','path','express','../../services/express/index.js','ami'];(function(_0x1460ab,_0x74d06e){var _0x1eeb5c=function(_0x28de38){while(--_0x28de38){_0x1460ab['push'](_0x1460ab['shift']());}};_0x1eeb5c(++_0x74d06e);}(_0x669d,0xf3));var _0xd669=function(_0x24f31b,_0x44b8f3){_0x24f31b=_0x24f31b-0x0;var _0x488401=_0x669d[_0x24f31b];return _0x488401;};'use strict';var path=require(_0xd669('0x0'));var os=require('os');var config={'apps':[{'name':_0xd669('0x1'),'script':path['join'](__dirname,_0xd669('0x2'))},{'name':_0xd669('0x3'),'script':path[_0xd669('0x4')](__dirname,'../../services/ami/index.js')},{'name':_0xd669('0x5'),'script':path[_0xd669('0x4')](__dirname,'../../services/agi/index.js')},{'name':_0xd669('0x6'),'script':path[_0xd669('0x4')](__dirname,_0xd669('0x7'))},{'name':_0xd669('0x8'),'script':path[_0xd669('0x4')](__dirname,_0xd669('0x9'))},{'name':_0xd669('0xa'),'script':path[_0xd669('0x4')](__dirname,_0xd669('0xb'))}]};module[_0xd669('0xc')]=config;
\ No newline at end of file
+var _0x7121=['../../services/email/index.js','routing','../../services/routing/index.js','xdr','../../services/xdr/index.js','exports','path','express','join','ami','../../services/ami/index.js','agi','email'];(function(_0xa464c9,_0x7c86d8){var _0x3d73c4=function(_0x5c2056){while(--_0x5c2056){_0xa464c9['push'](_0xa464c9['shift']());}};_0x3d73c4(++_0x7c86d8);}(_0x7121,0x13e));var _0x1712=function(_0x3d42d8,_0x4cffaa){_0x3d42d8=_0x3d42d8-0x0;var _0x27fc41=_0x7121[_0x3d42d8];return _0x27fc41;};'use strict';var path=require(_0x1712('0x0'));var os=require('os');var config={'apps':[{'name':_0x1712('0x1'),'script':path[_0x1712('0x2')](__dirname,'../../services/express/index.js')},{'name':_0x1712('0x3'),'script':path[_0x1712('0x2')](__dirname,_0x1712('0x4'))},{'name':_0x1712('0x5'),'script':path[_0x1712('0x2')](__dirname,'../../services/agi/index.js')},{'name':_0x1712('0x6'),'script':path[_0x1712('0x2')](__dirname,_0x1712('0x7'))},{'name':_0x1712('0x8'),'script':path[_0x1712('0x2')](__dirname,_0x1712('0x9'))},{'name':_0x1712('0xa'),'script':path[_0x1712('0x2')](__dirname,_0x1712('0xb'))}]};module[_0x1712('0xc')]=config;
\ No newline at end of file
index bd31eae..f3c7f60 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd77f=['then','stop','restart','list','describe','dump','pm2','./config','connect','start','disconnect'];(function(_0x486f4a,_0x478dc7){var _0x135d99=function(_0x434008){while(--_0x434008){_0x486f4a['push'](_0x486f4a['shift']());}};_0x135d99(++_0x478dc7);}(_0xd77f,0x150));var _0xfd77=function(_0x1048e6,_0x526b36){_0x1048e6=_0x1048e6-0x0;var _0x44156f=_0xd77f[_0x1048e6];return _0x44156f;};'use strict';var pm2=require(_0xfd77('0x0'));var BPromise=require('bluebird');var config=require(_0xfd77('0x1'));function connect(){return new BPromise(function(_0x43b117,_0x31f498){return pm2[_0xfd77('0x2')](function(_0xd40b51){if(_0xd40b51){return _0x31f498(_0xd40b51);}return _0x43b117('connected');});});};exports[_0xfd77('0x3')]=function(_0x3c434b){return connect()['then'](function(){return new BPromise(function(_0x5ce7fb,_0xdff224){return pm2[_0xfd77('0x3')](_0x3c434b,function(_0x5f4dd3,_0x162cb4){if(_0x5f4dd3){return _0xdff224(_0x5f4dd3);}pm2[_0xfd77('0x4')]();return _0x5ce7fb(_0x162cb4);});});});};exports['stop']=function(_0x24dc5a){return connect()[_0xfd77('0x5')](function(){return new BPromise(function(_0x1f148c,_0x43e8b3){return pm2[_0xfd77('0x6')](_0x24dc5a,function(_0x4c1aa5,_0x48e80f){if(_0x4c1aa5){return _0x43e8b3(_0x4c1aa5);}pm2[_0xfd77('0x4')]();return _0x1f148c(_0x48e80f);});});});};exports[_0xfd77('0x7')]=function(_0x441349){return connect()[_0xfd77('0x5')](function(){return new BPromise(function(_0x458014,_0x54aa4a){return pm2['restart'](_0x441349,function(_0x409e18,_0x15c2e4){if(_0x409e18){return _0x54aa4a(_0x409e18);}pm2[_0xfd77('0x4')]();return _0x458014(_0x15c2e4);});});});};exports['list']=function(){return connect()[_0xfd77('0x5')](function(){return new BPromise(function(_0xc37a0,_0x53d5d6){return pm2[_0xfd77('0x8')](function(_0x10ee0b,_0x289c1c){if(_0x10ee0b){return _0x53d5d6(_0x10ee0b);}pm2[_0xfd77('0x4')]();return _0xc37a0(_0x289c1c);});});});};exports['describe']=function(_0x42f77c){return connect()[_0xfd77('0x5')](function(){return new BPromise(function(_0x5b58c2,_0x5270b9){return pm2[_0xfd77('0x9')](_0x42f77c,function(_0xd10e10,_0x8cf34e){if(_0xd10e10){return _0x5270b9(_0xd10e10);}pm2[_0xfd77('0x4')]();return _0x5b58c2(_0x8cf34e);});});});};exports['delete']=function(_0x3f37b2){return connect()['then'](function(){return new BPromise(function(_0x40b297,_0x1997dc){return pm2['delete'](_0x3f37b2,function(_0x507225,_0x5e0df3){if(_0x507225){return _0x1997dc(_0x507225);}pm2[_0xfd77('0x4')]();return _0x40b297(_0x5e0df3);});});});};exports[_0xfd77('0xa')]=function(){return connect()[_0xfd77('0x5')](function(){return new BPromise(function(_0x392527,_0x5f2cd4){return pm2['dump'](function(_0x42361b){if(_0x42361b){return _0x5f2cd4(_0x42361b);}return _0x392527('saved');});});});};
\ No newline at end of file
+var _0x25a4=['stop','then','list','describe','delete','dump','bluebird','connect','disconnect'];(function(_0x5cbf0e,_0x4cd140){var _0x1c76f8=function(_0xcc9be4){while(--_0xcc9be4){_0x5cbf0e['push'](_0x5cbf0e['shift']());}};_0x1c76f8(++_0x4cd140);}(_0x25a4,0x10b));var _0x425a=function(_0xf71120,_0x25b7f9){_0xf71120=_0xf71120-0x0;var _0xbe2fd3=_0x25a4[_0xf71120];return _0xbe2fd3;};'use strict';var pm2=require('pm2');var BPromise=require(_0x425a('0x0'));var config=require('./config');function connect(){return new BPromise(function(_0xa9a81e,_0x1a8347){return pm2[_0x425a('0x1')](function(_0x58bc15){if(_0x58bc15){return _0x1a8347(_0x58bc15);}return _0xa9a81e('connected');});});};exports['start']=function(_0x1cca6f){return connect()['then'](function(){return new BPromise(function(_0xbc45dc,_0x59e086){return pm2['start'](_0x1cca6f,function(_0x5af45e,_0x1998eb){if(_0x5af45e){return _0x59e086(_0x5af45e);}pm2[_0x425a('0x2')]();return _0xbc45dc(_0x1998eb);});});});};exports[_0x425a('0x3')]=function(_0x27504b){return connect()[_0x425a('0x4')](function(){return new BPromise(function(_0x13f937,_0x3501c4){return pm2['stop'](_0x27504b,function(_0x1dc934,_0x18598f){if(_0x1dc934){return _0x3501c4(_0x1dc934);}pm2[_0x425a('0x2')]();return _0x13f937(_0x18598f);});});});};exports['restart']=function(_0x543329){return connect()[_0x425a('0x4')](function(){return new BPromise(function(_0x5a0e39,_0x2c989b){return pm2['restart'](_0x543329,function(_0x471d52,_0x462151){if(_0x471d52){return _0x2c989b(_0x471d52);}pm2[_0x425a('0x2')]();return _0x5a0e39(_0x462151);});});});};exports['list']=function(){return connect()[_0x425a('0x4')](function(){return new BPromise(function(_0x313cc1,_0x417873){return pm2[_0x425a('0x5')](function(_0x5d369a,_0x35876d){if(_0x5d369a){return _0x417873(_0x5d369a);}pm2[_0x425a('0x2')]();return _0x313cc1(_0x35876d);});});});};exports[_0x425a('0x6')]=function(_0x396554){return connect()[_0x425a('0x4')](function(){return new BPromise(function(_0x387865,_0x5d9cfa){return pm2[_0x425a('0x6')](_0x396554,function(_0x3955be,_0x23bbc0){if(_0x3955be){return _0x5d9cfa(_0x3955be);}pm2['disconnect']();return _0x387865(_0x23bbc0);});});});};exports[_0x425a('0x7')]=function(_0x17a128){return connect()['then'](function(){return new BPromise(function(_0x5b8a06,_0x3af02f){return pm2['delete'](_0x17a128,function(_0x21f6e4,_0x383947){if(_0x21f6e4){return _0x3af02f(_0x21f6e4);}pm2[_0x425a('0x2')]();return _0x5b8a06(_0x383947);});});});};exports[_0x425a('0x8')]=function(){return connect()[_0x425a('0x4')](function(){return new BPromise(function(_0xc1081d,_0x10d47b){return pm2[_0x425a('0x8')](function(_0x9178a3){if(_0x9178a3){return _0x10d47b(_0x9178a3);}return _0xc1081d('saved');});});});};
\ No newline at end of file
index 2ed75bc..e9ef33c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa7f3=['format','YYYY-MM-DD\x20HH:mm:ss','length','[CHAT]\x20Sending\x20updates\x20for\x20interactions:','join','emit','chatInteraction:update','catch','[CHAT]\x20Error\x20closing\x20interactions','start','moment','ioredis','util','../../config/environment','../../mysqldb','../logger','schedule','redis','defaults','socket.io-emitter','chatTimeout','then','ChatInteraction','findAll','lastMsgAt','subtract','minutes','info','[CHAT]\x20Interactions\x20to\x20close:','update','system','timeout'];(function(_0x3a607e,_0x54d530){var _0x37b106=function(_0x1becae){while(--_0x1becae){_0x3a607e['push'](_0x3a607e['shift']());}};_0x37b106(++_0x54d530);}(_0xa7f3,0xca));var _0x3a7f=function(_0x74b1b9,_0x1c9be6){_0x74b1b9=_0x74b1b9-0x0;var _0x51e433=_0xa7f3[_0x74b1b9];return _0x51e433;};'use strict';var _=require('lodash');var moment=require(_0x3a7f('0x0'));var Redis=require(_0x3a7f('0x1'));var util=require(_0x3a7f('0x2'));var config=require(_0x3a7f('0x3'));var db=require(_0x3a7f('0x4'))['db'];var logger=require(_0x3a7f('0x5'))(_0x3a7f('0x6'));config[_0x3a7f('0x7')]=_[_0x3a7f('0x8')](config['redis'],{'host':'localhost','port':0x18eb});var io=require(_0x3a7f('0x9'))(new Redis(config['redis']));function closeInteractions(){var _0x3e64f0=0x0;var _0x3adb4e=[];return db['Setting']['find']({'raw':!![],'attributes':['id',_0x3a7f('0xa')],'where':{'id':0x1}})[_0x3a7f('0xb')](function(_0x24792b){_0x3e64f0=_0x24792b['chatTimeout'];if(_0x3e64f0){return db[_0x3a7f('0xc')][_0x3a7f('0xd')]({'raw':!![],'attributes':['id',_0x3a7f('0xe')],'where':{'closed':![],'lastMsgAt':{'$lt':moment()[_0x3a7f('0xf')](_0x24792b[_0x3a7f('0xa')],_0x3a7f('0x10'))}}});}else{return[];}})[_0x3a7f('0xb')](function(_0x187695){if(_0x187695&&_0x187695['length']){_0x3adb4e=_['map'](_0x187695||[],'id');logger[_0x3a7f('0x11')](_0x3a7f('0x12'),_0x3adb4e['join']());return db['ChatInteraction'][_0x3a7f('0x13')]({'closeReason':_0x3a7f('0x14'),'disposition':_0x3a7f('0x15'),'closed':!![],'closedAt':moment()[_0x3a7f('0x16')](_0x3a7f('0x17'))},{'where':{'id':_0x3adb4e}});}})[_0x3a7f('0xb')](function(){if(_0x3adb4e&&_0x3adb4e[_0x3a7f('0x18')]){logger[_0x3a7f('0x11')](_0x3a7f('0x19'),_0x3adb4e[_0x3a7f('0x1a')]());for(var _0x12a37f=0x0;_0x12a37f<_0x3adb4e['length'];_0x12a37f++){io[_0x3a7f('0x1b')](_0x3a7f('0x1c'),{'id':_0x3adb4e[_0x12a37f],'closed':!![]});}}})[_0x3a7f('0x1d')](function(_0x5639dd){logger['error'](_0x3a7f('0x1e'),_0x5639dd?util['inspect'](_0x5639dd,{'showHidden':![],'depth':null}):'');});}exports[_0x3a7f('0x1f')]=function(){setInterval(function(){return closeInteractions();},0x3c*0x3e8);return closeInteractions();};
\ No newline at end of file
+var _0xfe08=['info','[CHAT]\x20Interactions\x20to\x20close:','join','update','system','timeout','format','YYYY-MM-DD\x20HH:mm:ss','[CHAT]\x20Sending\x20updates\x20for\x20interactions:','emit','catch','ioredis','util','../../config/environment','../../mysqldb','../logger','schedule','redis','socket.io-emitter','Setting','find','chatTimeout','then','ChatInteraction','findAll','lastMsgAt','minutes','length','map'];(function(_0x3b9bbc,_0x446623){var _0x1e5100=function(_0x971d8d){while(--_0x971d8d){_0x3b9bbc['push'](_0x3b9bbc['shift']());}};_0x1e5100(++_0x446623);}(_0xfe08,0x12d));var _0x8fe0=function(_0x25cedc,_0x20c76f){_0x25cedc=_0x25cedc-0x0;var _0xbbfe8f=_0xfe08[_0x25cedc];return _0xbbfe8f;};'use strict';var _=require('lodash');var moment=require('moment');var Redis=require(_0x8fe0('0x0'));var util=require(_0x8fe0('0x1'));var config=require(_0x8fe0('0x2'));var db=require(_0x8fe0('0x3'))['db'];var logger=require(_0x8fe0('0x4'))(_0x8fe0('0x5'));config[_0x8fe0('0x6')]=_['defaults'](config[_0x8fe0('0x6')],{'host':'localhost','port':0x18eb});var io=require(_0x8fe0('0x7'))(new Redis(config['redis']));function closeInteractions(){var _0x3485a3=0x0;var _0x748bac=[];return db[_0x8fe0('0x8')][_0x8fe0('0x9')]({'raw':!![],'attributes':['id',_0x8fe0('0xa')],'where':{'id':0x1}})[_0x8fe0('0xb')](function(_0x22a1a3){_0x3485a3=_0x22a1a3['chatTimeout'];if(_0x3485a3){return db[_0x8fe0('0xc')][_0x8fe0('0xd')]({'raw':!![],'attributes':['id',_0x8fe0('0xe')],'where':{'closed':![],'lastMsgAt':{'$lt':moment()['subtract'](_0x22a1a3[_0x8fe0('0xa')],_0x8fe0('0xf'))}}});}else{return[];}})[_0x8fe0('0xb')](function(_0x431805){if(_0x431805&&_0x431805[_0x8fe0('0x10')]){_0x748bac=_[_0x8fe0('0x11')](_0x431805||[],'id');logger[_0x8fe0('0x12')](_0x8fe0('0x13'),_0x748bac[_0x8fe0('0x14')]());return db[_0x8fe0('0xc')][_0x8fe0('0x15')]({'closeReason':_0x8fe0('0x16'),'disposition':_0x8fe0('0x17'),'closed':!![],'closedAt':moment()[_0x8fe0('0x18')](_0x8fe0('0x19'))},{'where':{'id':_0x748bac}});}})[_0x8fe0('0xb')](function(){if(_0x748bac&&_0x748bac['length']){logger['info'](_0x8fe0('0x1a'),_0x748bac[_0x8fe0('0x14')]());for(var _0x333723=0x0;_0x333723<_0x748bac[_0x8fe0('0x10')];_0x333723++){io[_0x8fe0('0x1b')]('chatInteraction:update',{'id':_0x748bac[_0x333723],'closed':!![]});}}})[_0x8fe0('0x1c')](function(_0x445cb8){logger['error']('[CHAT]\x20Error\x20closing\x20interactions',_0x445cb8?util['inspect'](_0x445cb8,{'showHidden':![],'depth':null}):'');});}exports['start']=function(){setInterval(function(){return closeInteractions();},0x3c*0x3e8);return closeInteractions();};
\ No newline at end of file
index 7670eff..8162538 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1fae=['name','bcc','Report\x20%s\x20last\x20%s\x20%s','subtractNumber','subtractUnit','join','../../files/reports','savename','%s.%s','basename','zip','existsSync','status','Sent','message','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','sendIfEmpty','empty\x20file,\x20email\x20not\x20sent','SendMail','then','error','error\x20mail','email\x20sent','data','isNil','subtractNumber\x20null\x20or\x20undefined','subtractUnit\x20null\x20or\x20undefined','subtract','YYYY-MM-DD\x20HH:mm:ss','scheduled','output','DefaultReportId','exec\x20defaul\x20report\x20id:%s','runReport','CustomReportId','exec\x20custom\x20report\x20id:%s','catch','jobs','difference','intersection','length','toString','exists','stop','delete\x20cron','toRun','my\x20id','run\x20job','cron','active','isBetween','startAt','endAt','add','start','add\x20cron','deleteJob','stop\x20cron','update','update\x20cron','run','util','path','lodash','moment','jayson/promise','bluebird','../logger','../../api/analyticCustomReport/analyticCustomReport.controller','client','http','info','Try\x20to\x20send\x20a\x20mail\x20to','email','MailAccount','Smtp','service','host','port','secure','auth','user','format','\x22%s\x22\x20<%s>'];(function(_0x2a6120,_0x14c3cd){var _0x16c8b2=function(_0x43a929){while(--_0x43a929){_0x2a6120['push'](_0x2a6120['shift']());}};_0x16c8b2(++_0x14c3cd);}(_0x1fae,0x145));var _0xe1fa=function(_0x320042,_0x46717e){_0x320042=_0x320042-0x0;var _0x4af02e=_0x1fae[_0x320042];return _0x4af02e;};'use strict';var fs=require('fs');var util=require(_0xe1fa('0x0'));var path=require(_0xe1fa('0x1'));var _=require(_0xe1fa('0x2'));var moment=require(_0xe1fa('0x3'));var CronJobManager=require('cron-job-manager');var jayson=require(_0xe1fa('0x4'));var BPromise=require(_0xe1fa('0x5'));var logger=require(_0xe1fa('0x6'))('schedule');var db=require('../../mysqldb')['db'];var analyticCustomReportController=require(_0xe1fa('0x7'));var analyticDefaultReportController=require('../../api/analyticDefaultReport/analyticDefaultReport.controller');var client=jayson[_0xe1fa('0x8')][_0xe1fa('0x9')]({'port':0x232b});var manager=new CronJobManager();function handleSendEmail(_0x52c96d,_0x5d06fe){return function(){logger[_0xe1fa('0xa')](_0xe1fa('0xb'),_0x52c96d[_0xe1fa('0xc')]);var _0x461d7a=!![];var _0x5c1a8d={'tls':{'rejectUnauthorized':![]}};if(_0x52c96d[_0xe1fa('0xd')][_0xe1fa('0xe')][_0xe1fa('0xf')]){_0x5c1a8d[_0xe1fa('0xf')]=_0x52c96d[_0xe1fa('0xd')]['Smtp'][_0xe1fa('0xf')];}else{_0x5c1a8d['host']=_0x52c96d[_0xe1fa('0xd')][_0xe1fa('0xe')][_0xe1fa('0x10')];_0x5c1a8d['port']=_0x52c96d['MailAccount'][_0xe1fa('0xe')][_0xe1fa('0x11')];_0x5c1a8d[_0xe1fa('0x12')]=_0x52c96d[_0xe1fa('0xd')]['Smtp']['secure'];}if(_0x52c96d[_0xe1fa('0xd')][_0xe1fa('0xe')]['authentication']){_0x5c1a8d[_0xe1fa('0x13')]={'user':_0x52c96d[_0xe1fa('0xd')][_0xe1fa('0xe')][_0xe1fa('0x14')],'pass':_0x52c96d[_0xe1fa('0xd')][_0xe1fa('0xe')]['pass']};}var _0x4ca3a={'account':_0x5c1a8d,'message':{'from':util[_0xe1fa('0x15')](_0xe1fa('0x16'),_0x52c96d[_0xe1fa('0xd')][_0xe1fa('0x17')],_0x52c96d['MailAccount'][_0xe1fa('0xc')]||_0x52c96d['MailAccount'][_0xe1fa('0xe')]['user']),'to':_0x52c96d[_0xe1fa('0xc')],'cc':_0x52c96d['cc'],'bcc':_0x52c96d[_0xe1fa('0x18')],'subject':util[_0xe1fa('0x15')](_0xe1fa('0x19'),_0x5d06fe[_0xe1fa('0x17')],_0x52c96d[_0xe1fa('0x1a')],_0x52c96d[_0xe1fa('0x1b')])}};var _0x574df8=path[_0xe1fa('0x1c')](__dirname,_0xe1fa('0x1d'));var _0x49ccdd=_0x5d06fe[_0xe1fa('0x1e')];var _0x2888aa=util[_0xe1fa('0x15')](_0xe1fa('0x1f'),path[_0xe1fa('0x20')](_0x5d06fe['savename'],path['extname'](_0x5d06fe[_0xe1fa('0x1e')])),_0xe1fa('0x21'));var _0x4764e8=path[_0xe1fa('0x1c')](_0x574df8,_0x49ccdd);var _0x4bec9f=path[_0xe1fa('0x1c')](_0x574df8,_0x2888aa);if(fs[_0xe1fa('0x22')](_0x4764e8)){_0x5d06fe[_0xe1fa('0x23')]=_0xe1fa('0x24');_0x4ca3a[_0xe1fa('0x25')][_0xe1fa('0x26')]=[{'filename':_0x49ccdd,'path':_0x4764e8}];_0x4ca3a[_0xe1fa('0x25')][_0xe1fa('0x27')]=util[_0xe1fa('0x15')](_0xe1fa('0x28'),JSON[_0xe1fa('0x29')](_0x5d06fe,null,0x2));}else if(fs['existsSync'](_0x4bec9f)){_0x5d06fe[_0xe1fa('0x23')]=_0xe1fa('0x24');_0x4ca3a['message'][_0xe1fa('0x26')]=[{'filename':_0x2888aa,'path':_0x4bec9f}];}else{_0x4ca3a[_0xe1fa('0x25')][_0xe1fa('0x27')]='Report\x20empty\x0aThis\x20is\x20an\x20automatically\x20generated\x20email\x20–\x20please\x20do\x20not\x20reply\x20to\x20this\x20email.\x0a\x0a';if(!_0x52c96d[_0xe1fa('0x2a')]){_0x461d7a=![];logger[_0xe1fa('0xa')](_0xe1fa('0x2b'));}}if(_0x461d7a){return client['request'](_0xe1fa('0x2c'),_0x4ca3a)[_0xe1fa('0x2d')](function(_0xf99e01){if(_0xf99e01[_0xe1fa('0x2e')]){return logger['error'](_0xe1fa('0x2f'),JSON[_0xe1fa('0x29')](_0xf99e01));}return logger[_0xe1fa('0xa')](_0xe1fa('0x30'));})['catch'](function(_0x522ac3){return logger[_0xe1fa('0x2e')](_0xe1fa('0x2f'),JSON['stringify'](_0x522ac3));});}};}function handleError(){return function(_0x34d4a5){return logger[_0xe1fa('0x2e')](JSON['stringify'](_0x34d4a5));};}function handleResult(_0x2dfa92){return function(_0x569596){logger[_0xe1fa('0xa')](_0xe1fa('0x31'),JSON[_0xe1fa('0x29')](_0x569596));if(_0x2dfa92['MailAccount']&&_0x2dfa92[_0xe1fa('0xd')][_0xe1fa('0xe')]&&!_['isNil'](_0x2dfa92['email'])){setTimeout(handleSendEmail(_0x2dfa92,_0x569596),0x3c*0x3e8);}};}function handleJob(_0x2e8b01){return function(){try{if(_[_0xe1fa('0x32')](_0x2e8b01[_0xe1fa('0x1a')])){return logger[_0xe1fa('0xa')](_0xe1fa('0x33'));}if(_[_0xe1fa('0x32')](_0x2e8b01[_0xe1fa('0x1b')])){return logger['info'](_0xe1fa('0x34'));}var _0x2ee55c={'startDate':moment()[_0xe1fa('0x35')](_0x2e8b01['subtractNumber'],_0x2e8b01[_0xe1fa('0x1b')])[_0xe1fa('0x15')](_0xe1fa('0x36')),'endDate':moment()[_0xe1fa('0x15')](_0xe1fa('0x36')),'type':_0xe1fa('0x37'),'output':_0x2e8b01[_0xe1fa('0x38')],'name':_0x2e8b01[_0xe1fa('0x17')]};if(!_[_0xe1fa('0x32')](_0x2e8b01[_0xe1fa('0x39')])){logger['info'](_0xe1fa('0x3a'),_0x2e8b01[_0xe1fa('0x39')]);return analyticDefaultReportController[_0xe1fa('0x3b')]({'id':_0x2e8b01[_0xe1fa('0x39')]},_0x2ee55c)['then'](handleResult(_0x2e8b01))['catch'](handleError());}if(!_[_0xe1fa('0x32')](_0x2e8b01[_0xe1fa('0x3c')])){logger[_0xe1fa('0xa')](_0xe1fa('0x3d'),_0x2e8b01[_0xe1fa('0x3c')]);return analyticCustomReportController[_0xe1fa('0x3b')]({'id':_0x2e8b01['CustomReportId']},_0x2ee55c)['then'](handleResult(_0x2e8b01))[_0xe1fa('0x3e')](handleError());}}catch(_0x5ec66c){logger['error'](JSON[_0xe1fa('0x29')](_0x5ec66c));}return logger[_0xe1fa('0xa')]('no\x20report\x20id');};}function getJobs(_0x1e9b5d){var _0x411191={};if(_0x1e9b5d){_0x411191['id']=_0x1e9b5d;}return db['Schedule']['findAll']({'where':_0x411191,'include':[{'model':db[_0xe1fa('0xd')],'attributes':['id',_0xe1fa('0x17'),_0xe1fa('0xc')],'include':[{'model':db['MailServerOut'],'as':_0xe1fa('0xe')}]}]})[_0xe1fa('0x2d')](function(_0x45dcac){var _0x140585=_['keys'](manager[_0xe1fa('0x3f')]);var _0x4c9c34=_['map'](_0x45dcac,function(_0x3c9bbc){return _0x3c9bbc['id']['toString']();});var _0x136dba=_['keyBy'](_0x45dcac,function(_0x2d22f9){return _0x2d22f9['id']['toString']();});var _0x24f553=_0x1e9b5d?_0x4c9c34:_[_0xe1fa('0x40')](_0x4c9c34,_0x140585);var _0x2c8f23=_[_0xe1fa('0x41')](_0x4c9c34,_0x140585);var _0x30c948=_[_0xe1fa('0x40')](_0x140585,_0x4c9c34);var _0x12a4c1;var _0x14646b;for(_0x12a4c1=0x0;_0x12a4c1<_0x30c948[_0xe1fa('0x42')]&&!_0x1e9b5d;_0x12a4c1+=0x1){_0x14646b=_0x30c948[_0x12a4c1][_0xe1fa('0x43')]();if(manager[_0xe1fa('0x44')](_0x14646b)){manager[_0xe1fa('0x45')](_0x14646b);manager['deleteJob'](_0x14646b);logger[_0xe1fa('0xa')](_0xe1fa('0x46'),_0x14646b);}}logger[_0xe1fa('0xa')](_0xe1fa('0x47'),JSON['stringify'](_0x24f553));for(_0x12a4c1=0x0;_0x12a4c1<_0x24f553[_0xe1fa('0x42')];_0x12a4c1+=0x1){_0x14646b=_0x24f553[_0x12a4c1]['toString']();logger[_0xe1fa('0xa')]('index',_0x14646b);if(_0x1e9b5d){logger[_0xe1fa('0xa')](_0xe1fa('0x48'),_0x1e9b5d);logger[_0xe1fa('0xa')](JSON[_0xe1fa('0x29')](_0x136dba[_0x14646b]));BPromise['resolve']()[_0xe1fa('0x2d')](handleJob(_0x136dba[_0x14646b]));logger[_0xe1fa('0xa')](_0xe1fa('0x49'),_0x136dba[_0x14646b][_0xe1fa('0x17')],_0x136dba[_0x14646b][_0xe1fa('0x4a')]);}else if(_0x136dba[_0x14646b]['cron']&&_0x136dba[_0x14646b][_0xe1fa('0x4b')]&&moment()[_0xe1fa('0x4c')](_0x136dba[_0x14646b][_0xe1fa('0x4d')],_0x136dba[_0x14646b][_0xe1fa('0x4e')])){manager[_0xe1fa('0x4f')](_0x14646b,_0x136dba[_0x14646b]['cron'],handleJob(_0x136dba[_0x14646b]));manager[_0xe1fa('0x50')](_0x14646b);logger[_0xe1fa('0xa')](_0xe1fa('0x51'),_0x136dba[_0x14646b][_0xe1fa('0x17')],_0x136dba[_0x14646b]['cron']);}else if(manager[_0xe1fa('0x44')](_0x14646b)){manager[_0xe1fa('0x45')](_0x14646b);manager[_0xe1fa('0x52')](_0x14646b);logger['info'](_0xe1fa('0x53'),_0x136dba[_0x14646b]['name'],_0x136dba[_0x14646b]['cron']);}}for(_0x12a4c1=0x0,_0x14646b;_0x12a4c1<_0x2c8f23[_0xe1fa('0x42')]&&!_0x1e9b5d;_0x12a4c1+=0x1){_0x14646b=_0x2c8f23[_0x12a4c1][_0xe1fa('0x43')]();if(manager[_0xe1fa('0x44')](_0x14646b)){if(_0x136dba[_0x14646b][_0xe1fa('0x4a')]&&_0x136dba[_0x14646b][_0xe1fa('0x4b')]&&moment()['isBetween'](_0x136dba[_0x14646b][_0xe1fa('0x4d')],_0x136dba[_0x14646b][_0xe1fa('0x4e')])){manager[_0xe1fa('0x54')](_0x14646b,_0x136dba[_0x14646b][_0xe1fa('0x4a')],handleJob(_0x136dba[_0x14646b]));logger[_0xe1fa('0xa')](_0xe1fa('0x55'),_0x136dba[_0x14646b][_0xe1fa('0x17')],_0x136dba[_0x14646b][_0xe1fa('0x4a')]);}else{manager[_0xe1fa('0x45')](_0x14646b);manager[_0xe1fa('0x52')](_0x14646b);logger[_0xe1fa('0xa')](_0xe1fa('0x53'),_0x136dba[_0x14646b][_0xe1fa('0x17')],_0x136dba[_0x14646b][_0xe1fa('0x4a')]);}}}})[_0xe1fa('0x3e')](function(_0x4d1f9e){logger[_0xe1fa('0x2e')](JSON[_0xe1fa('0x29')](_0x4d1f9e));});}exports[_0xe1fa('0x56')]=function(_0x10ecbf){return getJobs(_0x10ecbf);};exports[_0xe1fa('0x50')]=function(){setInterval(function(){return getJobs();},0x3c*0x3e8);return getJobs();};
\ No newline at end of file
+var _0xe668=['active','endAt','update','update\x20cron','stop\x20cron','util','path','lodash','cron-job-manager','jayson/promise','../logger','schedule','../../mysqldb','../../api/analyticCustomReport/analyticCustomReport.controller','../../api/analyticDefaultReport/analyticDefaultReport.controller','http','Try\x20to\x20send\x20a\x20mail\x20to','email','MailAccount','Smtp','service','host','port','secure','authentication','auth','user','pass','format','name','bcc','Report\x20%s\x20last\x20%s\x20%s','subtractNumber','subtractUnit','join','../../files/reports','savename','basename','extname','existsSync','status','Sent','text','stringify','attachments','message','empty\x20file,\x20email\x20not\x20sent','SendMail','then','error','error\x20mail','info','email\x20sent','catch','isNil','subtractNumber\x20null\x20or\x20undefined','subtractUnit\x20null\x20or\x20undefined','YYYY-MM-DD\x20HH:mm:ss','DefaultReportId','exec\x20defaul\x20report\x20id:%s','CustomReportId','exec\x20custom\x20report\x20id:%s','runReport','no\x20report\x20id','findAll','MailServerOut','keys','map','keyBy','difference','length','toString','exists','deleteJob','delete\x20cron','toRun','index','my\x20id','resolve','run\x20job','cron','isBetween','startAt','add','start','add\x20cron','stop'];(function(_0xaf2c88,_0x4bd7c4){var _0x80d9e=function(_0x4a7fe0){while(--_0x4a7fe0){_0xaf2c88['push'](_0xaf2c88['shift']());}};_0x80d9e(++_0x4bd7c4);}(_0xe668,0x1b8));var _0x8e66=function(_0xf30651,_0x964c8){_0xf30651=_0xf30651-0x0;var _0x5382a0=_0xe668[_0xf30651];return _0x5382a0;};'use strict';var fs=require('fs');var util=require(_0x8e66('0x0'));var path=require(_0x8e66('0x1'));var _=require(_0x8e66('0x2'));var moment=require('moment');var CronJobManager=require(_0x8e66('0x3'));var jayson=require(_0x8e66('0x4'));var BPromise=require('bluebird');var logger=require(_0x8e66('0x5'))(_0x8e66('0x6'));var db=require(_0x8e66('0x7'))['db'];var analyticCustomReportController=require(_0x8e66('0x8'));var analyticDefaultReportController=require(_0x8e66('0x9'));var client=jayson['client'][_0x8e66('0xa')]({'port':0x232b});var manager=new CronJobManager();function handleSendEmail(_0x2141eb,_0x53fee3){return function(){logger['info'](_0x8e66('0xb'),_0x2141eb[_0x8e66('0xc')]);var _0x545bc8=!![];var _0x25ef5f={'tls':{'rejectUnauthorized':![]}};if(_0x2141eb[_0x8e66('0xd')][_0x8e66('0xe')][_0x8e66('0xf')]){_0x25ef5f[_0x8e66('0xf')]=_0x2141eb[_0x8e66('0xd')][_0x8e66('0xe')][_0x8e66('0xf')];}else{_0x25ef5f[_0x8e66('0x10')]=_0x2141eb[_0x8e66('0xd')][_0x8e66('0xe')]['host'];_0x25ef5f[_0x8e66('0x11')]=_0x2141eb[_0x8e66('0xd')][_0x8e66('0xe')][_0x8e66('0x11')];_0x25ef5f[_0x8e66('0x12')]=_0x2141eb[_0x8e66('0xd')][_0x8e66('0xe')][_0x8e66('0x12')];}if(_0x2141eb[_0x8e66('0xd')][_0x8e66('0xe')][_0x8e66('0x13')]){_0x25ef5f[_0x8e66('0x14')]={'user':_0x2141eb[_0x8e66('0xd')]['Smtp'][_0x8e66('0x15')],'pass':_0x2141eb[_0x8e66('0xd')][_0x8e66('0xe')][_0x8e66('0x16')]};}var _0x4e09e3={'account':_0x25ef5f,'message':{'from':util[_0x8e66('0x17')]('\x22%s\x22\x20<%s>',_0x2141eb[_0x8e66('0xd')][_0x8e66('0x18')],_0x2141eb[_0x8e66('0xd')][_0x8e66('0xc')]||_0x2141eb[_0x8e66('0xd')][_0x8e66('0xe')][_0x8e66('0x15')]),'to':_0x2141eb[_0x8e66('0xc')],'cc':_0x2141eb['cc'],'bcc':_0x2141eb[_0x8e66('0x19')],'subject':util[_0x8e66('0x17')](_0x8e66('0x1a'),_0x53fee3[_0x8e66('0x18')],_0x2141eb[_0x8e66('0x1b')],_0x2141eb[_0x8e66('0x1c')])}};var _0x352bfc=path[_0x8e66('0x1d')](__dirname,_0x8e66('0x1e'));var _0xa2bf84=_0x53fee3[_0x8e66('0x1f')];var _0x2fce14=util[_0x8e66('0x17')]('%s.%s',path[_0x8e66('0x20')](_0x53fee3[_0x8e66('0x1f')],path[_0x8e66('0x21')](_0x53fee3['savename'])),'zip');var _0x1a03c5=path['join'](_0x352bfc,_0xa2bf84);var _0x4b08d0=path['join'](_0x352bfc,_0x2fce14);if(fs[_0x8e66('0x22')](_0x1a03c5)){_0x53fee3[_0x8e66('0x23')]=_0x8e66('0x24');_0x4e09e3['message']['attachments']=[{'filename':_0xa2bf84,'path':_0x1a03c5}];_0x4e09e3['message'][_0x8e66('0x25')]=util['format']('Info\x20report:\x0a%s\x0aPlease\x20see\x20the\x20attachments\x0aThis\x20is\x20an\x20automatically\x20generated\x20email\x20–\x20please\x20do\x20not\x20reply\x20to\x20it.\x0a\x0a',JSON[_0x8e66('0x26')](_0x53fee3,null,0x2));}else if(fs[_0x8e66('0x22')](_0x4b08d0)){_0x53fee3[_0x8e66('0x23')]='Sent';_0x4e09e3['message'][_0x8e66('0x27')]=[{'filename':_0x2fce14,'path':_0x4b08d0}];}else{_0x4e09e3[_0x8e66('0x28')][_0x8e66('0x25')]='Report\x20empty\x0aThis\x20is\x20an\x20automatically\x20generated\x20email\x20–\x20please\x20do\x20not\x20reply\x20to\x20this\x20email.\x0a\x0a';if(!_0x2141eb['sendIfEmpty']){_0x545bc8=![];logger['info'](_0x8e66('0x29'));}}if(_0x545bc8){return client['request'](_0x8e66('0x2a'),_0x4e09e3)[_0x8e66('0x2b')](function(_0x1f5cc6){if(_0x1f5cc6[_0x8e66('0x2c')]){return logger[_0x8e66('0x2c')](_0x8e66('0x2d'),JSON[_0x8e66('0x26')](_0x1f5cc6));}return logger[_0x8e66('0x2e')](_0x8e66('0x2f'));})[_0x8e66('0x30')](function(_0x5470ff){return logger[_0x8e66('0x2c')]('error\x20mail',JSON[_0x8e66('0x26')](_0x5470ff));});}};}function handleError(){return function(_0x1501f4){return logger[_0x8e66('0x2c')](JSON[_0x8e66('0x26')](_0x1501f4));};}function handleResult(_0x3eecaa){return function(_0x1a8348){logger['info']('data',JSON[_0x8e66('0x26')](_0x1a8348));if(_0x3eecaa[_0x8e66('0xd')]&&_0x3eecaa['MailAccount'][_0x8e66('0xe')]&&!_[_0x8e66('0x31')](_0x3eecaa['email'])){setTimeout(handleSendEmail(_0x3eecaa,_0x1a8348),0x3c*0x3e8);}};}function handleJob(_0xab9da5){return function(){try{if(_['isNil'](_0xab9da5[_0x8e66('0x1b')])){return logger['info'](_0x8e66('0x32'));}if(_[_0x8e66('0x31')](_0xab9da5[_0x8e66('0x1c')])){return logger[_0x8e66('0x2e')](_0x8e66('0x33'));}var _0x1a85d6={'startDate':moment()['subtract'](_0xab9da5[_0x8e66('0x1b')],_0xab9da5[_0x8e66('0x1c')])[_0x8e66('0x17')](_0x8e66('0x34')),'endDate':moment()[_0x8e66('0x17')](_0x8e66('0x34')),'type':'scheduled','output':_0xab9da5['output'],'name':_0xab9da5[_0x8e66('0x18')]};if(!_['isNil'](_0xab9da5[_0x8e66('0x35')])){logger['info'](_0x8e66('0x36'),_0xab9da5[_0x8e66('0x35')]);return analyticDefaultReportController['runReport']({'id':_0xab9da5[_0x8e66('0x35')]},_0x1a85d6)[_0x8e66('0x2b')](handleResult(_0xab9da5))[_0x8e66('0x30')](handleError());}if(!_[_0x8e66('0x31')](_0xab9da5[_0x8e66('0x37')])){logger[_0x8e66('0x2e')](_0x8e66('0x38'),_0xab9da5[_0x8e66('0x37')]);return analyticCustomReportController[_0x8e66('0x39')]({'id':_0xab9da5[_0x8e66('0x37')]},_0x1a85d6)[_0x8e66('0x2b')](handleResult(_0xab9da5))[_0x8e66('0x30')](handleError());}}catch(_0x50fe4d){logger[_0x8e66('0x2c')](JSON['stringify'](_0x50fe4d));}return logger['info'](_0x8e66('0x3a'));};}function getJobs(_0x242887){var _0x598fc2={};if(_0x242887){_0x598fc2['id']=_0x242887;}return db['Schedule'][_0x8e66('0x3b')]({'where':_0x598fc2,'include':[{'model':db['MailAccount'],'attributes':['id',_0x8e66('0x18'),_0x8e66('0xc')],'include':[{'model':db[_0x8e66('0x3c')],'as':_0x8e66('0xe')}]}]})[_0x8e66('0x2b')](function(_0xba2e07){var _0x170537=_[_0x8e66('0x3d')](manager['jobs']);var _0x3dd71e=_[_0x8e66('0x3e')](_0xba2e07,function(_0x5394cc){return _0x5394cc['id']['toString']();});var _0x36db6c=_[_0x8e66('0x3f')](_0xba2e07,function(_0x26549b){return _0x26549b['id']['toString']();});var _0x27c9a9=_0x242887?_0x3dd71e:_['difference'](_0x3dd71e,_0x170537);var _0x37e5d1=_['intersection'](_0x3dd71e,_0x170537);var _0x16ac07=_[_0x8e66('0x40')](_0x170537,_0x3dd71e);var _0x206863;var _0x33d926;for(_0x206863=0x0;_0x206863<_0x16ac07[_0x8e66('0x41')]&&!_0x242887;_0x206863+=0x1){_0x33d926=_0x16ac07[_0x206863][_0x8e66('0x42')]();if(manager[_0x8e66('0x43')](_0x33d926)){manager['stop'](_0x33d926);manager[_0x8e66('0x44')](_0x33d926);logger['info'](_0x8e66('0x45'),_0x33d926);}}logger['info'](_0x8e66('0x46'),JSON[_0x8e66('0x26')](_0x27c9a9));for(_0x206863=0x0;_0x206863<_0x27c9a9[_0x8e66('0x41')];_0x206863+=0x1){_0x33d926=_0x27c9a9[_0x206863][_0x8e66('0x42')]();logger[_0x8e66('0x2e')](_0x8e66('0x47'),_0x33d926);if(_0x242887){logger[_0x8e66('0x2e')](_0x8e66('0x48'),_0x242887);logger[_0x8e66('0x2e')](JSON['stringify'](_0x36db6c[_0x33d926]));BPromise[_0x8e66('0x49')]()[_0x8e66('0x2b')](handleJob(_0x36db6c[_0x33d926]));logger[_0x8e66('0x2e')](_0x8e66('0x4a'),_0x36db6c[_0x33d926][_0x8e66('0x18')],_0x36db6c[_0x33d926][_0x8e66('0x4b')]);}else if(_0x36db6c[_0x33d926]['cron']&&_0x36db6c[_0x33d926]['active']&&moment()[_0x8e66('0x4c')](_0x36db6c[_0x33d926][_0x8e66('0x4d')],_0x36db6c[_0x33d926]['endAt'])){manager[_0x8e66('0x4e')](_0x33d926,_0x36db6c[_0x33d926]['cron'],handleJob(_0x36db6c[_0x33d926]));manager[_0x8e66('0x4f')](_0x33d926);logger[_0x8e66('0x2e')](_0x8e66('0x50'),_0x36db6c[_0x33d926][_0x8e66('0x18')],_0x36db6c[_0x33d926][_0x8e66('0x4b')]);}else if(manager[_0x8e66('0x43')](_0x33d926)){manager[_0x8e66('0x51')](_0x33d926);manager[_0x8e66('0x44')](_0x33d926);logger[_0x8e66('0x2e')]('stop\x20cron',_0x36db6c[_0x33d926][_0x8e66('0x18')],_0x36db6c[_0x33d926]['cron']);}}for(_0x206863=0x0,_0x33d926;_0x206863<_0x37e5d1[_0x8e66('0x41')]&&!_0x242887;_0x206863+=0x1){_0x33d926=_0x37e5d1[_0x206863][_0x8e66('0x42')]();if(manager[_0x8e66('0x43')](_0x33d926)){if(_0x36db6c[_0x33d926][_0x8e66('0x4b')]&&_0x36db6c[_0x33d926][_0x8e66('0x52')]&&moment()[_0x8e66('0x4c')](_0x36db6c[_0x33d926]['startAt'],_0x36db6c[_0x33d926][_0x8e66('0x53')])){manager[_0x8e66('0x54')](_0x33d926,_0x36db6c[_0x33d926][_0x8e66('0x4b')],handleJob(_0x36db6c[_0x33d926]));logger[_0x8e66('0x2e')](_0x8e66('0x55'),_0x36db6c[_0x33d926][_0x8e66('0x18')],_0x36db6c[_0x33d926][_0x8e66('0x4b')]);}else{manager['stop'](_0x33d926);manager[_0x8e66('0x44')](_0x33d926);logger[_0x8e66('0x2e')](_0x8e66('0x56'),_0x36db6c[_0x33d926]['name'],_0x36db6c[_0x33d926][_0x8e66('0x4b')]);}}}})[_0x8e66('0x30')](function(_0x274c09){logger[_0x8e66('0x2c')](JSON[_0x8e66('0x26')](_0x274c09));});}exports['run']=function(_0x2fd3bc){return getJobs(_0x2fd3bc);};exports[_0x8e66('0x4f')]=function(){setInterval(function(){return getJobs();},0x3c*0x3e8);return getJobs();};
\ No newline at end of file
index b79f1f3..f4ccbf9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb74d=['Mixed','Neutral','[RECORDING:%d]\x20Transcript\x20Job\x20status\x20not\x20managed','CloudProvider','catch','name','SequelizeValidationError','error','[RECORDING:%d]\x20Error\x20running\x20Transcribe\x20&\x20Sentiment\x20Analysis','inspect','VoiceRecording','findAll','IN_PROGRESS','Setting','Settings\x20not\x20available','transcribeAccountId','Transcribe\x20not\x20configured','Cloud\x20Provider\x20not\x20available','forEach','all','start','lodash','request-promise','bluebird','../../config/logger','transcribe','TranscribeService','Comprehend','info','format','[RECORDING:%d]\x20Get\x20status\x20for\x20transcript\x20job\x20(%s)','transcribeName','data1','transcribeRegion','then','[RECORDING:%d]\x20Status\x20of\x20transcript\x20job\x20(%s):\x20%s','TranscriptionJobStatus','fileText','TranscriptionJob','TranscriptFileUri','[RECORDING:%d]\x20Get\x20transcript','Transcript','[RECORDING:%d]\x20Transcript\x20downloaded','results','transcripts','length','transcript','update','[RECORDING:%d]\x20Voice\x20Recording\x20entry\x20updated','tempSentiment','Sequelize','ValidationError','Sentiment\x20Analysis\x20not\x20requested','sentiment','sentimentAccountId','sentimentRegion','language','bucket','Sentiment\x20Analysis\x20not\x20configured','Transcript\x20not\x20available','findOne','data2','Cloud\x20Provider\x20not\x20configured','[RECORDING:%d]\x20Requesting\x20sentiment\x20analysis','[RECORDING:%d]\x20Sentiment\x20Analysis\x20available','Sentiment','SentimentScore','Positive','Negative'];(function(_0x10d0f0,_0x1eba3d){var _0x93e308=function(_0x388548){while(--_0x388548){_0x10d0f0['push'](_0x10d0f0['shift']());}};_0x93e308(++_0x1eba3d);}(_0xb74d,0x16e));var _0xdb74=function(_0x57b54c,_0x54ce0d){_0x57b54c=_0x57b54c-0x0;var _0x59cc19=_0xb74d[_0x57b54c];return _0x59cc19;};var _=require(_0xdb74('0x0'));var AWS=require('aws-sdk');var rp=require(_0xdb74('0x1'));var util=require('util');var BPromise=require(_0xdb74('0x2'));var db=require('../../mysqldb')['db'];var logger=require(_0xdb74('0x3'))(_0xdb74('0x4'));function getTranscriptionJob(_0x61bd15,_0x4b3b06,_0x124167,_0x19b211){return new Promise(function(_0xd2d2f0,_0x4dbe91){var _0x5183ae=new AWS[(_0xdb74('0x5'))]({'accessKeyId':_0x4b3b06,'secretAccessKey':_0x61bd15,'region':_0x124167});_0x5183ae['getTranscriptionJob']({'TranscriptionJobName':_0x19b211},function(_0x3e44b7,_0x2655f3){if(_0x3e44b7){return _0x4dbe91(_0x3e44b7);}else{return _0xd2d2f0(_0x2655f3);}});});}function sentiment(_0x47c4d6,_0x3bfe87,_0x5370df,_0x1b7936,_0x41780b){return new Promise(function(_0x4838ab,_0x4e5c9c){var _0x332ce4=new AWS[(_0xdb74('0x6'))]({'accessKeyId':_0x3bfe87,'secretAccessKey':_0x47c4d6,'region':_0x5370df});_0x332ce4['detectSentiment']({'Text':_0x1b7936,'LanguageCode':_0x41780b['substring'](0x0,0x2)},function(_0x20477d,_0x56a2ba){if(_0x20477d){return _0x4e5c9c(_0x20477d);}else{return _0x4838ab(_0x56a2ba);}});});}function checkTranscribeJob(_0x8cbc7b,_0x31b9ad,_0xa88c98){var _0x2e44a4;return new BPromise(function(_0x3a159d,_0x101d22){logger[_0xdb74('0x7')](util[_0xdb74('0x8')](_0xdb74('0x9'),_0x8cbc7b['id'],_0x8cbc7b[_0xdb74('0xa')]));return getTranscriptionJob(_0xa88c98[_0xdb74('0xb')],_0xa88c98['data2'],_0x31b9ad[_0xdb74('0xc')],_0x8cbc7b[_0xdb74('0xa')])[_0xdb74('0xd')](function(_0x206b4d){logger['info'](util['format'](_0xdb74('0xe'),_0x8cbc7b['id'],_0x8cbc7b[_0xdb74('0xa')],_0x206b4d['TranscriptionJob'][_0xdb74('0xf')]));if(!_0x8cbc7b[_0xdb74('0x10')]){switch(_0x206b4d[_0xdb74('0x11')][_0xdb74('0xf')]){case'COMPLETED':var _0x3d9252={'transcribeStatus':_0x206b4d[_0xdb74('0x11')][_0xdb74('0xf')],'fileUri':_0x206b4d['TranscriptionJob']['Transcript'][_0xdb74('0x12')]};logger['info'](util[_0xdb74('0x8')](_0xdb74('0x13'),_0x8cbc7b['id']));return rp({'uri':_0x206b4d[_0xdb74('0x11')][_0xdb74('0x14')]['TranscriptFileUri'],'json':!![]})[_0xdb74('0xd')](function(_0x305724){logger[_0xdb74('0x7')](util[_0xdb74('0x8')](_0xdb74('0x15'),_0x8cbc7b['id']));if(_0x305724&&_0x305724['results']&&_0x305724[_0xdb74('0x16')]['transcripts']&&_0x305724[_0xdb74('0x16')][_0xdb74('0x17')][_0xdb74('0x18')]){_0x3d9252['fileText']='';for(var _0x18b725=0x0;_0x18b725<_0x305724[_0xdb74('0x16')][_0xdb74('0x17')][_0xdb74('0x18')];_0x18b725++){_0x3d9252[_0xdb74('0x10')]+=_0x305724[_0xdb74('0x16')][_0xdb74('0x17')][_0x18b725][_0xdb74('0x19')]+'';}}return _0x8cbc7b[_0xdb74('0x1a')](_0x3d9252);})[_0xdb74('0xd')](function(){logger[_0xdb74('0x7')](util['format'](_0xdb74('0x1b'),_0x8cbc7b['id']));if(!_0x8cbc7b[_0xdb74('0x1c')]){throw new db[(_0xdb74('0x1d'))][(_0xdb74('0x1e'))](_0xdb74('0x1f'));}if(!_0x31b9ad[_0xdb74('0x20')]||!_0x31b9ad[_0xdb74('0x21')]||!_0x31b9ad[_0xdb74('0x22')]||!_0x31b9ad[_0xdb74('0x23')]||!_0x31b9ad[_0xdb74('0x24')]){throw new db['Sequelize'][(_0xdb74('0x1e'))](_0xdb74('0x25'));}if(!_0x3d9252[_0xdb74('0x10')]){throw new Error(_0xdb74('0x26'));}if(_0x31b9ad[_0xdb74('0x21')]===_0xa88c98['id']){return _0xa88c98;}else{return db['CloudProvider'][_0xdb74('0x27')]({'where':{'id':_settings[_0xdb74('0x21')]}});}})[_0xdb74('0xd')](function(_0x3d3845){if(!_0x3d3845){throw new db['Sequelize'][(_0xdb74('0x1e'))]('Cloud\x20Provider\x20not\x20available');}if(!_0x3d3845['data1']||!_0x3d3845[_0xdb74('0x28')]){throw new db[(_0xdb74('0x1d'))][(_0xdb74('0x1e'))](_0xdb74('0x29'));}_0x2e44a4=_0x3d3845;logger['info'](util[_0xdb74('0x8')](_0xdb74('0x2a'),_0x8cbc7b['id']));return sentiment(_0x2e44a4['data1'],_0x2e44a4[_0xdb74('0x28')],_0x31b9ad[_0xdb74('0x22')],_0x3d9252[_0xdb74('0x10')],_0x31b9ad[_0xdb74('0x23')]);})[_0xdb74('0xd')](function(_0x46d843){logger[_0xdb74('0x7')](util[_0xdb74('0x8')](_0xdb74('0x2b'),_0x8cbc7b['id']));return _0x8cbc7b[_0xdb74('0x1a')]({'sentiment':_0x46d843[_0xdb74('0x2c')],'sPositive':_0x46d843[_0xdb74('0x2d')][_0xdb74('0x2e')],'sNegative':_0x46d843['SentimentScore'][_0xdb74('0x2f')],'sMixed':_0x46d843[_0xdb74('0x2d')][_0xdb74('0x30')],'sNeutral':_0x46d843[_0xdb74('0x2d')][_0xdb74('0x31')]});})[_0xdb74('0xd')](function(){logger[_0xdb74('0x7')](util[_0xdb74('0x8')](_0xdb74('0x1b'),_0x8cbc7b['id']));_0x3a159d();});case'FAILED':return _0x8cbc7b[_0xdb74('0x1a')]({'transcribeStatus':'FAILED','failureReason':_0x206b4d[_0xdb74('0x11')]['FailureReason']})[_0xdb74('0xd')](function(){logger[_0xdb74('0x7')](util[_0xdb74('0x8')](_0xdb74('0x1b'),_0x8cbc7b['id']));_0x3a159d();});default:logger['info'](util[_0xdb74('0x8')](_0xdb74('0x32'),_0x8cbc7b['id']));break;}}else{return BPromise['resolve']()['then'](function(){if(!_0x8cbc7b['tempSentiment']){throw new db[(_0xdb74('0x1d'))]['ValidationError']('Sentiment\x20Analysis\x20not\x20requested');}if(!_0x31b9ad[_0xdb74('0x20')]||!_0x31b9ad[_0xdb74('0x21')]||!_0x31b9ad[_0xdb74('0x22')]||!_0x31b9ad[_0xdb74('0x23')]||!_0x31b9ad['bucket']){throw new db[(_0xdb74('0x1d'))]['ValidationError'](_0xdb74('0x25'));}if(!_0x8cbc7b[_0xdb74('0x10')]){throw new Error(_0xdb74('0x26'));}if(_0x31b9ad[_0xdb74('0x21')]===_0xa88c98['id']){return _0xa88c98;}else{return db[_0xdb74('0x33')][_0xdb74('0x27')]({'where':{'id':_settings[_0xdb74('0x21')]}});}})[_0xdb74('0xd')](function(_0x12922e){if(!_0x12922e){throw new db['Sequelize']['ValidationError']('Cloud\x20Provider\x20not\x20available');}if(!_0x12922e[_0xdb74('0xb')]||!_0x12922e[_0xdb74('0x28')]){throw new db[(_0xdb74('0x1d'))][(_0xdb74('0x1e'))]('Cloud\x20Provider\x20not\x20configured');}_0x2e44a4=_0x12922e;logger[_0xdb74('0x7')](util[_0xdb74('0x8')](_0xdb74('0x2a'),_0x8cbc7b['id']));return sentiment(_0x2e44a4[_0xdb74('0xb')],_0x2e44a4[_0xdb74('0x28')],_0x31b9ad[_0xdb74('0x22')],_0x8cbc7b[_0xdb74('0x10')],_0x31b9ad['language']);})[_0xdb74('0xd')](function(_0x2164e6){logger[_0xdb74('0x7')](util[_0xdb74('0x8')](_0xdb74('0x2b'),_0x8cbc7b['id']));return _0x8cbc7b[_0xdb74('0x1a')]({'sentiment':_0x2164e6['Sentiment'],'sPositive':_0x2164e6[_0xdb74('0x2d')][_0xdb74('0x2e')],'sNegative':_0x2164e6[_0xdb74('0x2d')][_0xdb74('0x2f')],'sMixed':_0x2164e6['SentimentScore'][_0xdb74('0x30')],'sNeutral':_0x2164e6[_0xdb74('0x2d')][_0xdb74('0x31')],'transcribeStatus':'COMPLETED'});})[_0xdb74('0xd')](function(){logger[_0xdb74('0x7')](util[_0xdb74('0x8')]('[RECORDING:%d]\x20Voice\x20Recording\x20entry\x20updated',_0x8cbc7b['id']));_0x3a159d();});}})[_0xdb74('0x34')](function(_0x80473b){if(_0x80473b){if(!_0x80473b[_0xdb74('0x35')]||_0x80473b[_0xdb74('0x35')]!==_0xdb74('0x36')){logger[_0xdb74('0x37')](util['format'](_0xdb74('0x38'),_0x8cbc7b['id']),util[_0xdb74('0x39')](_0x80473b,{'showHidden':![],'depth':null}));}}_0x3a159d();});});}function checkTranscribe(){var _0x5ebbe9;var _0x15051b;var _0x560617;return db[_0xdb74('0x3a')][_0xdb74('0x3b')]({'where':{'transcribeStatus':_0xdb74('0x3c')}})[_0xdb74('0xd')](function(_0x4927eb){if(!_0x4927eb||!_0x4927eb['length']){throw new db[(_0xdb74('0x1d'))]['ValidationError']('No\x20transcribe\x20job\x20to\x20check');}_0x5ebbe9=_0x4927eb;return db[_0xdb74('0x3d')][_0xdb74('0x27')]({'where':{'id':0x1}});})[_0xdb74('0xd')](function(_0x2c27c){if(!_0x2c27c){throw new db[(_0xdb74('0x1d'))][(_0xdb74('0x1e'))](_0xdb74('0x3e'));}_0x15051b=_0x2c27c;if(!_0x15051b[_0xdb74('0x4')]||!_0x15051b[_0xdb74('0x3f')]||!_0x15051b[_0xdb74('0xc')]||!_0x15051b['language']||!_0x15051b[_0xdb74('0x24')]){throw new db[(_0xdb74('0x1d'))][(_0xdb74('0x1e'))](_0xdb74('0x40'));}return db['CloudProvider'][_0xdb74('0x27')]({'where':{'id':_0x15051b['transcribeAccountId']}});})[_0xdb74('0xd')](function(_0x449e12){if(!_0x449e12){throw new db[(_0xdb74('0x1d'))][(_0xdb74('0x1e'))](_0xdb74('0x41'));}if(!_0x449e12[_0xdb74('0xb')]||!_0x449e12[_0xdb74('0x28')]){throw new db[(_0xdb74('0x1d'))]['ValidationError'](_0xdb74('0x29'));}_0x560617=_0x449e12;var _0x4d0b52=[];_0x5ebbe9[_0xdb74('0x42')](function(_0x195df7){_0x4d0b52['push'](checkTranscribeJob(_0x195df7,_0x15051b,_0x560617));});return BPromise[_0xdb74('0x43')](_0x4d0b52);})['catch'](function(_0x5d7448){if(_0x5d7448){if(!_0x5d7448['name']||_0x5d7448['name']!==_0xdb74('0x36')){logger[_0xdb74('0x37')](util[_0xdb74('0x39')](_0x5d7448,{'showHidden':![],'depth':null}));}}});}exports[_0xdb74('0x44')]=function(){setInterval(function(){return checkTranscribe();},0x3c*0x3e8);return checkTranscribe();};
\ No newline at end of file
+var _0xa1e8=['Sentiment\x20Analysis\x20not\x20configured','Cloud\x20Provider\x20not\x20available','Mixed','catch','name','error','inspect','findAll','IN_PROGRESS','No\x20transcribe\x20job\x20to\x20check','Setting','Settings\x20not\x20available','transcribe','transcribeAccountId','all','SequelizeValidationError','start','lodash','request-promise','util','bluebird','../../config/logger','TranscribeService','getTranscriptionJob','detectSentiment','substring','info','[RECORDING:%d]\x20Get\x20status\x20for\x20transcript\x20job\x20(%s)','transcribeName','data1','transcribeRegion','then','[RECORDING:%d]\x20Status\x20of\x20transcript\x20job\x20(%s):\x20%s','TranscriptionJobStatus','fileText','TranscriptionJob','COMPLETED','TranscriptFileUri','format','[RECORDING:%d]\x20Get\x20transcript','[RECORDING:%d]\x20Transcript\x20downloaded','results','transcripts','length','update','[RECORDING:%d]\x20Voice\x20Recording\x20entry\x20updated','tempSentiment','ValidationError','Sentiment\x20Analysis\x20not\x20requested','sentiment','sentimentAccountId','sentimentRegion','Sequelize','Transcript\x20not\x20available','CloudProvider','findOne','Cloud\x20Provider\x20not\x20configured','[RECORDING:%d]\x20Requesting\x20sentiment\x20analysis','data2','[RECORDING:%d]\x20Sentiment\x20Analysis\x20available','Sentiment','SentimentScore','Positive','Negative','Neutral','FAILED','resolve','language','bucket'];(function(_0x4030de,_0x938bb){var _0x522221=function(_0x50f0e2){while(--_0x50f0e2){_0x4030de['push'](_0x4030de['shift']());}};_0x522221(++_0x938bb);}(_0xa1e8,0x1af));var _0x8a1e=function(_0x599be0,_0x14b081){_0x599be0=_0x599be0-0x0;var _0x185da6=_0xa1e8[_0x599be0];return _0x185da6;};var _=require(_0x8a1e('0x0'));var AWS=require('aws-sdk');var rp=require(_0x8a1e('0x1'));var util=require(_0x8a1e('0x2'));var BPromise=require(_0x8a1e('0x3'));var db=require('../../mysqldb')['db'];var logger=require(_0x8a1e('0x4'))('transcribe');function getTranscriptionJob(_0x341cb0,_0x4f642b,_0x20fe9d,_0x5b46f1){return new Promise(function(_0x5730e0,_0x2ddb27){var _0x1463b3=new AWS[(_0x8a1e('0x5'))]({'accessKeyId':_0x4f642b,'secretAccessKey':_0x341cb0,'region':_0x20fe9d});_0x1463b3[_0x8a1e('0x6')]({'TranscriptionJobName':_0x5b46f1},function(_0x483e06,_0x14f902){if(_0x483e06){return _0x2ddb27(_0x483e06);}else{return _0x5730e0(_0x14f902);}});});}function sentiment(_0x365845,_0x22d916,_0x537de3,_0x31afa4,_0x5d3318){return new Promise(function(_0x413ef7,_0xe9a595){var _0x5aa5e5=new AWS['Comprehend']({'accessKeyId':_0x22d916,'secretAccessKey':_0x365845,'region':_0x537de3});_0x5aa5e5[_0x8a1e('0x7')]({'Text':_0x31afa4,'LanguageCode':_0x5d3318[_0x8a1e('0x8')](0x0,0x2)},function(_0x2c092f,_0x20a2ec){if(_0x2c092f){return _0xe9a595(_0x2c092f);}else{return _0x413ef7(_0x20a2ec);}});});}function checkTranscribeJob(_0xd09d9b,_0x8aebf4,_0x22a562){var _0x4d8829;return new BPromise(function(_0x25d23d,_0x131ba6){logger[_0x8a1e('0x9')](util['format'](_0x8a1e('0xa'),_0xd09d9b['id'],_0xd09d9b[_0x8a1e('0xb')]));return getTranscriptionJob(_0x22a562[_0x8a1e('0xc')],_0x22a562['data2'],_0x8aebf4[_0x8a1e('0xd')],_0xd09d9b[_0x8a1e('0xb')])[_0x8a1e('0xe')](function(_0x4a31d0){logger['info'](util['format'](_0x8a1e('0xf'),_0xd09d9b['id'],_0xd09d9b[_0x8a1e('0xb')],_0x4a31d0['TranscriptionJob'][_0x8a1e('0x10')]));if(!_0xd09d9b[_0x8a1e('0x11')]){switch(_0x4a31d0[_0x8a1e('0x12')][_0x8a1e('0x10')]){case _0x8a1e('0x13'):var _0x13670e={'transcribeStatus':_0x4a31d0['TranscriptionJob'][_0x8a1e('0x10')],'fileUri':_0x4a31d0[_0x8a1e('0x12')]['Transcript'][_0x8a1e('0x14')]};logger[_0x8a1e('0x9')](util[_0x8a1e('0x15')](_0x8a1e('0x16'),_0xd09d9b['id']));return rp({'uri':_0x4a31d0['TranscriptionJob']['Transcript'][_0x8a1e('0x14')],'json':!![]})[_0x8a1e('0xe')](function(_0x2b2334){logger[_0x8a1e('0x9')](util[_0x8a1e('0x15')](_0x8a1e('0x17'),_0xd09d9b['id']));if(_0x2b2334&&_0x2b2334[_0x8a1e('0x18')]&&_0x2b2334[_0x8a1e('0x18')][_0x8a1e('0x19')]&&_0x2b2334[_0x8a1e('0x18')][_0x8a1e('0x19')]['length']){_0x13670e[_0x8a1e('0x11')]='';for(var _0x2e0798=0x0;_0x2e0798<_0x2b2334[_0x8a1e('0x18')]['transcripts'][_0x8a1e('0x1a')];_0x2e0798++){_0x13670e[_0x8a1e('0x11')]+=_0x2b2334[_0x8a1e('0x18')][_0x8a1e('0x19')][_0x2e0798]['transcript']+'';}}return _0xd09d9b[_0x8a1e('0x1b')](_0x13670e);})[_0x8a1e('0xe')](function(){logger[_0x8a1e('0x9')](util[_0x8a1e('0x15')](_0x8a1e('0x1c'),_0xd09d9b['id']));if(!_0xd09d9b[_0x8a1e('0x1d')]){throw new db['Sequelize'][(_0x8a1e('0x1e'))](_0x8a1e('0x1f'));}if(!_0x8aebf4[_0x8a1e('0x20')]||!_0x8aebf4[_0x8a1e('0x21')]||!_0x8aebf4[_0x8a1e('0x22')]||!_0x8aebf4['language']||!_0x8aebf4['bucket']){throw new db[(_0x8a1e('0x23'))][(_0x8a1e('0x1e'))]('Sentiment\x20Analysis\x20not\x20configured');}if(!_0x13670e[_0x8a1e('0x11')]){throw new Error(_0x8a1e('0x24'));}if(_0x8aebf4[_0x8a1e('0x21')]===_0x22a562['id']){return _0x22a562;}else{return db[_0x8a1e('0x25')][_0x8a1e('0x26')]({'where':{'id':_settings[_0x8a1e('0x21')]}});}})[_0x8a1e('0xe')](function(_0x5d08e0){if(!_0x5d08e0){throw new db[(_0x8a1e('0x23'))][(_0x8a1e('0x1e'))]('Cloud\x20Provider\x20not\x20available');}if(!_0x5d08e0['data1']||!_0x5d08e0['data2']){throw new db['Sequelize'][(_0x8a1e('0x1e'))](_0x8a1e('0x27'));}_0x4d8829=_0x5d08e0;logger[_0x8a1e('0x9')](util['format'](_0x8a1e('0x28'),_0xd09d9b['id']));return sentiment(_0x4d8829[_0x8a1e('0xc')],_0x4d8829[_0x8a1e('0x29')],_0x8aebf4[_0x8a1e('0x22')],_0x13670e['fileText'],_0x8aebf4['language']);})[_0x8a1e('0xe')](function(_0x5f4d59){logger[_0x8a1e('0x9')](util[_0x8a1e('0x15')](_0x8a1e('0x2a'),_0xd09d9b['id']));return _0xd09d9b[_0x8a1e('0x1b')]({'sentiment':_0x5f4d59[_0x8a1e('0x2b')],'sPositive':_0x5f4d59[_0x8a1e('0x2c')][_0x8a1e('0x2d')],'sNegative':_0x5f4d59['SentimentScore'][_0x8a1e('0x2e')],'sMixed':_0x5f4d59[_0x8a1e('0x2c')]['Mixed'],'sNeutral':_0x5f4d59[_0x8a1e('0x2c')][_0x8a1e('0x2f')]});})[_0x8a1e('0xe')](function(){logger[_0x8a1e('0x9')](util[_0x8a1e('0x15')](_0x8a1e('0x1c'),_0xd09d9b['id']));_0x25d23d();});case'FAILED':return _0xd09d9b['update']({'transcribeStatus':_0x8a1e('0x30'),'failureReason':_0x4a31d0[_0x8a1e('0x12')]['FailureReason']})['then'](function(){logger[_0x8a1e('0x9')](util[_0x8a1e('0x15')]('[RECORDING:%d]\x20Voice\x20Recording\x20entry\x20updated',_0xd09d9b['id']));_0x25d23d();});default:logger['info'](util['format']('[RECORDING:%d]\x20Transcript\x20Job\x20status\x20not\x20managed',_0xd09d9b['id']));break;}}else{return BPromise[_0x8a1e('0x31')]()[_0x8a1e('0xe')](function(){if(!_0xd09d9b[_0x8a1e('0x1d')]){throw new db[(_0x8a1e('0x23'))][(_0x8a1e('0x1e'))]('Sentiment\x20Analysis\x20not\x20requested');}if(!_0x8aebf4[_0x8a1e('0x20')]||!_0x8aebf4[_0x8a1e('0x21')]||!_0x8aebf4[_0x8a1e('0x22')]||!_0x8aebf4[_0x8a1e('0x32')]||!_0x8aebf4[_0x8a1e('0x33')]){throw new db[(_0x8a1e('0x23'))][(_0x8a1e('0x1e'))](_0x8a1e('0x34'));}if(!_0xd09d9b[_0x8a1e('0x11')]){throw new Error(_0x8a1e('0x24'));}if(_0x8aebf4[_0x8a1e('0x21')]===_0x22a562['id']){return _0x22a562;}else{return db[_0x8a1e('0x25')][_0x8a1e('0x26')]({'where':{'id':_settings[_0x8a1e('0x21')]}});}})['then'](function(_0x2c728a){if(!_0x2c728a){throw new db[(_0x8a1e('0x23'))]['ValidationError'](_0x8a1e('0x35'));}if(!_0x2c728a[_0x8a1e('0xc')]||!_0x2c728a[_0x8a1e('0x29')]){throw new db[(_0x8a1e('0x23'))]['ValidationError'](_0x8a1e('0x27'));}_0x4d8829=_0x2c728a;logger[_0x8a1e('0x9')](util['format'](_0x8a1e('0x28'),_0xd09d9b['id']));return sentiment(_0x4d8829[_0x8a1e('0xc')],_0x4d8829['data2'],_0x8aebf4[_0x8a1e('0x22')],_0xd09d9b[_0x8a1e('0x11')],_0x8aebf4[_0x8a1e('0x32')]);})[_0x8a1e('0xe')](function(_0x8e8deb){logger[_0x8a1e('0x9')](util[_0x8a1e('0x15')](_0x8a1e('0x2a'),_0xd09d9b['id']));return _0xd09d9b[_0x8a1e('0x1b')]({'sentiment':_0x8e8deb[_0x8a1e('0x2b')],'sPositive':_0x8e8deb['SentimentScore'][_0x8a1e('0x2d')],'sNegative':_0x8e8deb['SentimentScore']['Negative'],'sMixed':_0x8e8deb[_0x8a1e('0x2c')][_0x8a1e('0x36')],'sNeutral':_0x8e8deb[_0x8a1e('0x2c')][_0x8a1e('0x2f')],'transcribeStatus':'COMPLETED'});})['then'](function(){logger['info'](util[_0x8a1e('0x15')](_0x8a1e('0x1c'),_0xd09d9b['id']));_0x25d23d();});}})[_0x8a1e('0x37')](function(_0x12f8ff){if(_0x12f8ff){if(!_0x12f8ff[_0x8a1e('0x38')]||_0x12f8ff[_0x8a1e('0x38')]!=='SequelizeValidationError'){logger[_0x8a1e('0x39')](util[_0x8a1e('0x15')]('[RECORDING:%d]\x20Error\x20running\x20Transcribe\x20&\x20Sentiment\x20Analysis',_0xd09d9b['id']),util[_0x8a1e('0x3a')](_0x12f8ff,{'showHidden':![],'depth':null}));}}_0x25d23d();});});}function checkTranscribe(){var _0x3fb2b4;var _0x4cf52d;var _0x49cb8e;return db['VoiceRecording'][_0x8a1e('0x3b')]({'where':{'transcribeStatus':_0x8a1e('0x3c')}})[_0x8a1e('0xe')](function(_0x2dc4b3){if(!_0x2dc4b3||!_0x2dc4b3['length']){throw new db['Sequelize'][(_0x8a1e('0x1e'))](_0x8a1e('0x3d'));}_0x3fb2b4=_0x2dc4b3;return db[_0x8a1e('0x3e')][_0x8a1e('0x26')]({'where':{'id':0x1}});})['then'](function(_0x251ff2){if(!_0x251ff2){throw new db[(_0x8a1e('0x23'))][(_0x8a1e('0x1e'))](_0x8a1e('0x3f'));}_0x4cf52d=_0x251ff2;if(!_0x4cf52d[_0x8a1e('0x40')]||!_0x4cf52d[_0x8a1e('0x41')]||!_0x4cf52d[_0x8a1e('0xd')]||!_0x4cf52d['language']||!_0x4cf52d[_0x8a1e('0x33')]){throw new db[(_0x8a1e('0x23'))][(_0x8a1e('0x1e'))]('Transcribe\x20not\x20configured');}return db['CloudProvider'][_0x8a1e('0x26')]({'where':{'id':_0x4cf52d['transcribeAccountId']}});})[_0x8a1e('0xe')](function(_0x901565){if(!_0x901565){throw new db[(_0x8a1e('0x23'))][(_0x8a1e('0x1e'))](_0x8a1e('0x35'));}if(!_0x901565[_0x8a1e('0xc')]||!_0x901565[_0x8a1e('0x29')]){throw new db[(_0x8a1e('0x23'))][(_0x8a1e('0x1e'))](_0x8a1e('0x27'));}_0x49cb8e=_0x901565;var _0x4f164d=[];_0x3fb2b4['forEach'](function(_0xa6be75){_0x4f164d['push'](checkTranscribeJob(_0xa6be75,_0x4cf52d,_0x49cb8e));});return BPromise[_0x8a1e('0x42')](_0x4f164d);})['catch'](function(_0x3aff36){if(_0x3aff36){if(!_0x3aff36[_0x8a1e('0x38')]||_0x3aff36[_0x8a1e('0x38')]!==_0x8a1e('0x43')){logger[_0x8a1e('0x39')](util[_0x8a1e('0x3a')](_0x3aff36,{'showHidden':![],'depth':null}));}}});}exports[_0x8a1e('0x44')]=function(){setInterval(function(){return checkTranscribe();},0x3c*0x3e8);return checkTranscribe();};
\ No newline at end of file
index 299233d..f42b771 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5eff=['[WHATSAPP]\x20Interactions\x20to\x20close:','join','update','system','format','YYYY-MM-DD\x20HH:mm:ss','[WHATSAPP]\x20Sending\x20updates\x20for\x20interactions:','emit','error','[WHATSAPP]\x20Error\x20closing\x20interactions','inspect','start','lodash','moment','ioredis','util','../../config/environment','../../mysqldb','../logger','schedule','redis','defaults','socket.io-emitter','WhatsappInteraction','lastMsgAt','subtract','hours','then','length','map','info'];(function(_0x573063,_0x25e0b0){var _0x3cbfae=function(_0xc4cc61){while(--_0xc4cc61){_0x573063['push'](_0x573063['shift']());}};_0x3cbfae(++_0x25e0b0);}(_0x5eff,0xa7));var _0xf5ef=function(_0x565ed7,_0x398228){_0x565ed7=_0x565ed7-0x0;var _0x183ad7=_0x5eff[_0x565ed7];return _0x183ad7;};'use strict';var _=require(_0xf5ef('0x0'));var moment=require(_0xf5ef('0x1'));var Redis=require(_0xf5ef('0x2'));var util=require(_0xf5ef('0x3'));var config=require(_0xf5ef('0x4'));var db=require(_0xf5ef('0x5'))['db'];var logger=require(_0xf5ef('0x6'))(_0xf5ef('0x7'));config[_0xf5ef('0x8')]=_[_0xf5ef('0x9')](config[_0xf5ef('0x8')],{'host':'localhost','port':0x18eb});var io=require(_0xf5ef('0xa'))(new Redis(config[_0xf5ef('0x8')]));function closeInteractions(){var _0x41e7a2=[];return db[_0xf5ef('0xb')]['findAll']({'raw':!![],'attributes':['id',_0xf5ef('0xc')],'where':{'closed':![],'lastMsgDirection':'in','lastMsgAt':{'$lt':moment()[_0xf5ef('0xd')](0x18,_0xf5ef('0xe'))}}})[_0xf5ef('0xf')](function(_0x59d4f4){if(_0x59d4f4&&_0x59d4f4[_0xf5ef('0x10')]){_0x41e7a2=_[_0xf5ef('0x11')](_0x59d4f4||[],'id');logger[_0xf5ef('0x12')](_0xf5ef('0x13'),_0x41e7a2[_0xf5ef('0x14')]());return db[_0xf5ef('0xb')][_0xf5ef('0x15')]({'closeReason':_0xf5ef('0x16'),'disposition':'timeout','closed':!![],'closedAt':moment()[_0xf5ef('0x17')](_0xf5ef('0x18'))},{'where':{'id':_0x41e7a2}});}})[_0xf5ef('0xf')](function(){if(_0x41e7a2&&_0x41e7a2['length']){logger[_0xf5ef('0x12')](_0xf5ef('0x19'),_0x41e7a2['join']());for(var _0xbc3d0b=0x0;_0xbc3d0b<_0x41e7a2[_0xf5ef('0x10')];_0xbc3d0b++){io[_0xf5ef('0x1a')]('whatsappInteraction:update',{'id':_0x41e7a2[_0xbc3d0b],'closed':!![]});}}})['catch'](function(_0x2817b0){logger[_0xf5ef('0x1b')](_0xf5ef('0x1c'),_0x2817b0?util[_0xf5ef('0x1d')](_0x2817b0,{'showHidden':![],'depth':null}):'');});}exports[_0xf5ef('0x1e')]=function(){setInterval(function(){return closeInteractions();},0x3c*0x3e8);return closeInteractions();};
\ No newline at end of file
+var _0xa269=['update','system','format','YYYY-MM-DD\x20HH:mm:ss','[WHATSAPP]\x20Sending\x20updates\x20for\x20interactions:','join','length','emit','whatsappInteraction:update','catch','error','[WHATSAPP]\x20Error\x20closing\x20interactions','start','moment','util','../../config/environment','../../mysqldb','redis','defaults','socket.io-emitter','WhatsappInteraction','findAll','lastMsgAt','subtract','hours','then','map','info','[WHATSAPP]\x20Interactions\x20to\x20close:'];(function(_0x3bd973,_0x4fe046){var _0x106770=function(_0x27f017){while(--_0x27f017){_0x3bd973['push'](_0x3bd973['shift']());}};_0x106770(++_0x4fe046);}(_0xa269,0x14c));var _0x9a26=function(_0x565199,_0x213319){_0x565199=_0x565199-0x0;var _0xd72c63=_0xa269[_0x565199];return _0xd72c63;};'use strict';var _=require('lodash');var moment=require(_0x9a26('0x0'));var Redis=require('ioredis');var util=require(_0x9a26('0x1'));var config=require(_0x9a26('0x2'));var db=require(_0x9a26('0x3'))['db'];var logger=require('../logger')('schedule');config[_0x9a26('0x4')]=_[_0x9a26('0x5')](config[_0x9a26('0x4')],{'host':'localhost','port':0x18eb});var io=require(_0x9a26('0x6'))(new Redis(config[_0x9a26('0x4')]));function closeInteractions(){var _0x11d37b=[];return db[_0x9a26('0x7')][_0x9a26('0x8')]({'raw':!![],'attributes':['id',_0x9a26('0x9')],'where':{'closed':![],'lastMsgDirection':'in','lastMsgAt':{'$lt':moment()[_0x9a26('0xa')](0x18,_0x9a26('0xb'))}}})[_0x9a26('0xc')](function(_0x4bed7b){if(_0x4bed7b&&_0x4bed7b['length']){_0x11d37b=_[_0x9a26('0xd')](_0x4bed7b||[],'id');logger[_0x9a26('0xe')](_0x9a26('0xf'),_0x11d37b['join']());return db['WhatsappInteraction'][_0x9a26('0x10')]({'closeReason':_0x9a26('0x11'),'disposition':'timeout','closed':!![],'closedAt':moment()[_0x9a26('0x12')](_0x9a26('0x13'))},{'where':{'id':_0x11d37b}});}})[_0x9a26('0xc')](function(){if(_0x11d37b&&_0x11d37b['length']){logger[_0x9a26('0xe')](_0x9a26('0x14'),_0x11d37b[_0x9a26('0x15')]());for(var _0x44be52=0x0;_0x44be52<_0x11d37b[_0x9a26('0x16')];_0x44be52++){io[_0x9a26('0x17')](_0x9a26('0x18'),{'id':_0x11d37b[_0x44be52],'closed':!![]});}}})[_0x9a26('0x19')](function(_0x4057bb){logger[_0x9a26('0x1a')](_0x9a26('0x1b'),_0x4057bb?util['inspect'](_0x4057bb,{'showHidden':![],'depth':null}):'');});}exports[_0x9a26('0x1c')]=function(){setInterval(function(){return closeInteractions();},0x3c*0x3e8);return closeInteractions();};
\ No newline at end of file
index 57d5e20..f2c7f95 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3dda=['bulkCreate','then','finished\x20populating','contacts1','destroy','log','hopper1','CmHopper','hopper2','util','../mysqldb','push','Innocenzo','Biondo','innocenzo.biondo','@xcally.com','now','CmContact'];(function(_0x5bef39,_0x12095f){var _0x132ed8=function(_0x3a528e){while(--_0x3a528e){_0x5bef39['push'](_0x5bef39['shift']());}};_0x132ed8(++_0x12095f);}(_0x3dda,0x1a7));var _0xa3dd=function(_0xd7b69b,_0x56b291){_0xd7b69b=_0xd7b69b-0x0;var _0x21d50e=_0x3dda[_0xd7b69b];return _0x21d50e;};'use strict';var util=require(_0xa3dd('0x0'));var db=require(_0xa3dd('0x1'))['db'];var contacts=[];var hopper=[];var contacts2=[];var hopper2=[];for(var i=0x1;i<=0x4b0;i+=0x1){contacts[_0xa3dd('0x2')]({'id':i,'firstName':_0xa3dd('0x3')+i,'lastName':_0xa3dd('0x4')+i,'phone':0xf879fb460+i,'email':_0xa3dd('0x5')+i+_0xa3dd('0x6')});}for(var i=0x1;i<=0x4b0;i+=0x1){hopper['push']({'id':i,'active':![],'scheduledat':Date[_0xa3dd('0x7')](),'countbusyretry':0x0,'countcongestionretry':0x0,'countnoanswerretry':0x0,'ContactId':i,'ListId':0x1,'UserId':0x1,'VoiceQueueId':0x3fd,'createdAt':Date[_0xa3dd('0x7')](),'updatedAt':Date[_0xa3dd('0x7')]()});}for(var i=0x4b1;i<=0x960;i+=0x1){contacts2[_0xa3dd('0x2')]({'id':i,'firstName':'Innocenzo'+i,'lastName':_0xa3dd('0x4')+i,'phone':0xf879fb460+i,'email':_0xa3dd('0x5')+i+_0xa3dd('0x6')});}for(var i=0x4b1;i<=0x960;i+=0x1){hopper2[_0xa3dd('0x2')]({'id':i,'active':![],'scheduledat':Date[_0xa3dd('0x7')](),'countbusyretry':0x0,'countcongestionretry':0x0,'countnoanswerretry':0x0,'ContactId':i,'ListId':0x1,'UserId':0x1,'VoiceQueueId':0x3fd,'createdAt':Date[_0xa3dd('0x7')](),'updatedAt':Date['now']()});}db[_0xa3dd('0x8')]['destroy']({'where':{}})['then'](function(){return db[_0xa3dd('0x8')][_0xa3dd('0x9')](contacts);})[_0xa3dd('0xa')](function(){console['log'](_0xa3dd('0xb'),_0xa3dd('0xc'));return db['CmHopper'][_0xa3dd('0xd')]({'where':{}});})[_0xa3dd('0xa')](function(){return db['CmHopper'][_0xa3dd('0x9')](hopper);})[_0xa3dd('0xa')](function(){console[_0xa3dd('0xe')](_0xa3dd('0xb'),_0xa3dd('0xf'));return db[_0xa3dd('0x8')][_0xa3dd('0x9')](contacts2);})[_0xa3dd('0xa')](function(){console[_0xa3dd('0xe')](_0xa3dd('0xb'),'contacts2');return db[_0xa3dd('0x10')][_0xa3dd('0x9')](hopper2);})[_0xa3dd('0xa')](function(){console[_0xa3dd('0xe')]('finished\x20populating',_0xa3dd('0x11'));})['catch'](function(_0x2d10bf){console[_0xa3dd('0xe')](_0x2d10bf);});
\ No newline at end of file
+var _0xdf5c=['log','finished\x20populating','contacts1','hopper1','contacts2','CmHopper','util','../mysqldb','push','Innocenzo','Biondo','innocenzo.biondo','now','@xcally.com','CmContact','destroy','then','bulkCreate'];(function(_0x179e6c,_0x8eb35f){var _0x319d84=function(_0x248f87){while(--_0x248f87){_0x179e6c['push'](_0x179e6c['shift']());}};_0x319d84(++_0x8eb35f);}(_0xdf5c,0xa8));var _0xcdf5=function(_0x2d9d48,_0x334119){_0x2d9d48=_0x2d9d48-0x0;var _0xb5812d=_0xdf5c[_0x2d9d48];return _0xb5812d;};'use strict';var util=require(_0xcdf5('0x0'));var db=require(_0xcdf5('0x1'))['db'];var contacts=[];var hopper=[];var contacts2=[];var hopper2=[];for(var i=0x1;i<=0x4b0;i+=0x1){contacts[_0xcdf5('0x2')]({'id':i,'firstName':_0xcdf5('0x3')+i,'lastName':_0xcdf5('0x4')+i,'phone':0xf879fb460+i,'email':_0xcdf5('0x5')+i+'@xcally.com'});}for(var i=0x1;i<=0x4b0;i+=0x1){hopper[_0xcdf5('0x2')]({'id':i,'active':![],'scheduledat':Date[_0xcdf5('0x6')](),'countbusyretry':0x0,'countcongestionretry':0x0,'countnoanswerretry':0x0,'ContactId':i,'ListId':0x1,'UserId':0x1,'VoiceQueueId':0x3fd,'createdAt':Date[_0xcdf5('0x6')](),'updatedAt':Date[_0xcdf5('0x6')]()});}for(var i=0x4b1;i<=0x960;i+=0x1){contacts2[_0xcdf5('0x2')]({'id':i,'firstName':'Innocenzo'+i,'lastName':'Biondo'+i,'phone':0xf879fb460+i,'email':_0xcdf5('0x5')+i+_0xcdf5('0x7')});}for(var i=0x4b1;i<=0x960;i+=0x1){hopper2[_0xcdf5('0x2')]({'id':i,'active':![],'scheduledat':Date[_0xcdf5('0x6')](),'countbusyretry':0x0,'countcongestionretry':0x0,'countnoanswerretry':0x0,'ContactId':i,'ListId':0x1,'UserId':0x1,'VoiceQueueId':0x3fd,'createdAt':Date['now'](),'updatedAt':Date['now']()});}db[_0xcdf5('0x8')][_0xcdf5('0x9')]({'where':{}})[_0xcdf5('0xa')](function(){return db[_0xcdf5('0x8')][_0xcdf5('0xb')](contacts);})[_0xcdf5('0xa')](function(){console[_0xcdf5('0xc')](_0xcdf5('0xd'),_0xcdf5('0xe'));return db['CmHopper'][_0xcdf5('0x9')]({'where':{}});})[_0xcdf5('0xa')](function(){return db['CmHopper']['bulkCreate'](hopper);})['then'](function(){console[_0xcdf5('0xc')](_0xcdf5('0xd'),_0xcdf5('0xf'));return db[_0xcdf5('0x8')]['bulkCreate'](contacts2);})[_0xcdf5('0xa')](function(){console[_0xcdf5('0xc')](_0xcdf5('0xd'),_0xcdf5('0x10'));return db[_0xcdf5('0x11')][_0xcdf5('0xb')](hopper2);})[_0xcdf5('0xa')](function(){console[_0xcdf5('0xc')](_0xcdf5('0xd'),'hopper2');})['catch'](function(_0x2f6750){console[_0xcdf5('0xc')](_0x2f6750);});
\ No newline at end of file
index dd1febe..e1e3b18 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x91eb=['util','../mysqldb','push','format','agent','%s%s@xcally.com','friend','udp','wss','ulaw','yes','/etc/pki/tls/certs/motion.crt','/etc/pki/tls/private/motion.key','actpass','\x22%s\x22\x20<%s>','%s%s','User','then','log','add\x20user'];(function(_0x206b24,_0x15fefb){var _0x41fb12=function(_0xa5e205){while(--_0xa5e205){_0x206b24['push'](_0x206b24['shift']());}};_0x41fb12(++_0x15fefb);}(_0x91eb,0x1f4));var _0xb91e=function(_0x57fd07,_0x1ef63b){_0x57fd07=_0x57fd07-0x0;var _0x8c15=_0x91eb[_0x57fd07];return _0x8c15;};'use strict';var util=require(_0xb91e('0x0'));var db=require(_0xb91e('0x1'))['db'];var users=[];for(var i=0x1;i<=0xc8;i+=0x1){users[_0xb91e('0x2')]({'name':util[_0xb91e('0x3')]('%s%s',_0xb91e('0x4'),i),'fullname':util[_0xb91e('0x3')]('%s%s','agent',i),'email':util['format'](_0xb91e('0x5'),_0xb91e('0x4'),i),'role':_0xb91e('0x4'),'password':'password','internal':0xfa0+i,'type':_0xb91e('0x6'),'transport':[_0xb91e('0x7'),'ws',_0xb91e('0x8')],'disallow':['all'],'allow':[_0xb91e('0x9')],'defaultuser':util['format']('%s%s',_0xb91e('0x4'),i),'encryption':_0xb91e('0xa'),'avpf':_0xb91e('0xa'),'force_avp':_0xb91e('0xa'),'icesupport':_0xb91e('0xa'),'dtlsenable':_0xb91e('0xa'),'dtlsverify':'no','dtlscertfile':_0xb91e('0xb'),'dtlsprivatekey':_0xb91e('0xc'),'dtlssetup':_0xb91e('0xd'),'callerid':util[_0xb91e('0x3')](_0xb91e('0xe'),util['format'](_0xb91e('0xf'),_0xb91e('0x4'),i),0xfa0+i)});}db[_0xb91e('0x10')]['bulkCreate'](users)[_0xb91e('0x11')](function(){console[_0xb91e('0x12')](_0xb91e('0x13'));})['catch'](function(_0x4c32bc){console[_0xb91e('0x12')](_0x4c32bc);});
\ No newline at end of file
+var _0x2aa0=['/etc/pki/tls/private/motion.key','actpass','\x22%s\x22\x20<%s>','User','bulkCreate','then','log','add\x20user','catch','../mysqldb','push','%s%s','agent','format','password','udp','wss','all','ulaw','yes','/etc/pki/tls/certs/motion.crt'];(function(_0x3da6a8,_0xe43384){var _0x3fa4fe=function(_0xebec68){while(--_0xebec68){_0x3da6a8['push'](_0x3da6a8['shift']());}};_0x3fa4fe(++_0xe43384);}(_0x2aa0,0x11a));var _0x02aa=function(_0x19950b,_0x53d0d7){_0x19950b=_0x19950b-0x0;var _0x3c6b41=_0x2aa0[_0x19950b];return _0x3c6b41;};'use strict';var util=require('util');var db=require(_0x02aa('0x0'))['db'];var users=[];for(var i=0x1;i<=0xc8;i+=0x1){users[_0x02aa('0x1')]({'name':util['format'](_0x02aa('0x2'),'agent',i),'fullname':util['format'](_0x02aa('0x2'),_0x02aa('0x3'),i),'email':util[_0x02aa('0x4')]('%s%s@xcally.com','agent',i),'role':_0x02aa('0x3'),'password':_0x02aa('0x5'),'internal':0xfa0+i,'type':'friend','transport':[_0x02aa('0x6'),'ws',_0x02aa('0x7')],'disallow':[_0x02aa('0x8')],'allow':[_0x02aa('0x9')],'defaultuser':util[_0x02aa('0x4')](_0x02aa('0x2'),_0x02aa('0x3'),i),'encryption':_0x02aa('0xa'),'avpf':'yes','force_avp':'yes','icesupport':_0x02aa('0xa'),'dtlsenable':_0x02aa('0xa'),'dtlsverify':'no','dtlscertfile':_0x02aa('0xb'),'dtlsprivatekey':_0x02aa('0xc'),'dtlssetup':_0x02aa('0xd'),'callerid':util[_0x02aa('0x4')](_0x02aa('0xe'),util[_0x02aa('0x4')](_0x02aa('0x2'),_0x02aa('0x3'),i),0xfa0+i)});}db[_0x02aa('0xf')][_0x02aa('0x10')](users)[_0x02aa('0x11')](function(){console[_0x02aa('0x12')](_0x02aa('0x13'));})[_0x02aa('0x14')](function(_0x4d0399){console[_0x02aa('0x12')](_0x4d0399);});
\ No newline at end of file
index a6d70d9..fd4105b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xcaaf=['nsp','address','disconnect','DISCONNECTED','lodash','bluebird','name','Agents','telephone','agent','type','findOne','autoAssociation','ChatQueues','FaxQueues','SmsQueues','MailQueues','OpenchannelQueues','WhatsappQueues','findAll','Telephones','Trunks','IvrCampaigns','resourceId','then','map','User','role','where','format','%s:queue:%s','length','user:%s','handshake','query','find','userProfileId','ChatInteraction','ChatInteractions','MailInteraction','MailInteractions','FaxInteraction','OpenchannelInteractions','WhatsappInteraction','admin','voice:inbound','voice:outbound','include','VoiceQueue','push','ChatQueue','SmsQueue','MailQueue','WhatsappQueue','Trunk','Campaign','user','VoiceQueues','FaxQueue','OpenchannelQueue','getVoiceQueues','getChatQueues','getFaxQueues','getSmsQueues','getMailQueues','getOpenchannelQueues','voice','chat','fax','sms','mail','whatsapp','telephone:%s','campaign:%s:%s','removeChatInteractions','emit','user_has_chat_interactions:remove','leave','removeMailInteractions','user_has_mail_interactions:remove','FaxInteractions','removeFaxInteractions','user_has_fax_interactions:remove','SmsInteractions','user_has_sms_interactions:remove','removeOpenchannelInteractions','user_has_openchannel_interactions:remove','removeWhatsappInteractions','user_has_whatsapp_interactions:remove','catch','default','setMaxListeners','request','remoteAddress','remotePort','connectedAt','log','SocketIO\x20'];(function(_0x3d9d18,_0x21b1f1){var _0x5f07f4=function(_0x471b45){while(--_0x471b45){_0x3d9d18['push'](_0x3d9d18['shift']());}};_0x5f07f4(++_0x21b1f1);}(_0xcaaf,0x66));var _0xfcaa=function(_0x49ffb8,_0x519ffc){_0x49ffb8=_0x49ffb8-0x0;var _0x4e47cd=_0xcaaf[_0x49ffb8];return _0x4e47cd;};'use strict';var _=require(_0xfcaa('0x0'));var util=require('util');var BPromise=require(_0xfcaa('0x1'));var db=require('../mysqldb')['db'];var config=require('./environment');var queryQueues={'attributes':['id',_0xfcaa('0x2')],'include':[{'as':_0xfcaa('0x3'),'model':db['User'],'attributes':['id',_0xfcaa('0x2'),'role'],'raw':!![],'where':{'role':'agent'},'required':![]}]};var queryTelephones={'raw':!![],'attributes':['id',_0xfcaa('0x2')],'where':{'role':_0xfcaa('0x4')}};var queryTrunks={'raw':!![],'attributes':['id',_0xfcaa('0x2')]};var queryAgents={'raw':!![],'attributes':['id',_0xfcaa('0x2')],'where':{'role':_0xfcaa('0x5')}};var queryCampaigns={'raw':!![],'attributes':['id',_0xfcaa('0x2'),_0xfcaa('0x6')],'where':{'type':'ivr'}};function getAssociatedResources(_0xa0706d,_0x4c084d,_0x30a4a0){return db['UserProfileSection'][_0xfcaa('0x7')]({'where':{'name':_0xa0706d,'userProfileId':_0x4c084d},'raw':!![]})['then'](function(_0x586902){if(_0x586902){if(_0x586902[_0xfcaa('0x8')]){switch(_0xa0706d){case'VoiceQueues':case _0xfcaa('0x9'):case _0xfcaa('0xa'):case _0xfcaa('0xb'):case _0xfcaa('0xc'):case _0xfcaa('0xd'):case _0xfcaa('0xe'):return db[_0x30a4a0][_0xfcaa('0xf')](queryQueues);case _0xfcaa('0x10'):return db[_0x30a4a0]['findAll'](queryTelephones);case _0xfcaa('0x11'):return db[_0x30a4a0][_0xfcaa('0xf')](queryTrunks);case _0xfcaa('0x12'):return db[_0x30a4a0][_0xfcaa('0xf')](queryCampaigns);}}else{return db['UserProfileResource'][_0xfcaa('0xf')]({'attributes':[_0xfcaa('0x13')],'where':{'sectionId':_0x586902['id']},'raw':!![]})[_0xfcaa('0x14')](function(_0xf49a9b){if(_0xf49a9b){var _0x54f7f5={'where':{'id':_[_0xfcaa('0x15')](_0xf49a9b,_0xfcaa('0x13'))},'raw':!![]};switch(_0x30a4a0){case _0xfcaa('0x16'):_0x54f7f5['where'][_0xfcaa('0x17')]=_0xfcaa('0x4');break;case'Campaign':_0x54f7f5[_0xfcaa('0x18')]['type']='ivr';break;}return db[_0x30a4a0][_0xfcaa('0xf')](_0x54f7f5);}else{return[];}});}}else{return[];}})[_0xfcaa('0x14')](function(_0x416132){return _0x416132;});}function joinOrLeaveQueues(_0xa4df1,_0x2b56e4,_0x4566e1,_0x3e0a3d){_0xa4df1[_0x2b56e4](util[_0xfcaa('0x19')](_0xfcaa('0x1a'),_0x4566e1,_0x3e0a3d[_0xfcaa('0x2')]));if(_0x3e0a3d['Agents']){for(var _0x36791f=0x0;_0x36791f<_0x3e0a3d[_0xfcaa('0x3')][_0xfcaa('0x1b')];_0x36791f+=0x1){_0xa4df1[_0x2b56e4](util[_0xfcaa('0x19')](_0xfcaa('0x1c'),_0x3e0a3d[_0xfcaa('0x3')][_0x36791f][_0xfcaa('0x2')]));}}}function joinOrLeave(_0x425122,_0x653ca8,_0x5cc0f2){var _0x415bce;if(_0x425122[_0xfcaa('0x1d')][_0xfcaa('0x1e')]['id']){db['User'][_0xfcaa('0x1f')]({'attributes':['id','name',_0xfcaa('0x17'),_0xfcaa('0x20')],'where':{'id':_0x425122[_0xfcaa('0x1d')][_0xfcaa('0x1e')]['id']},'include':[{'model':db[_0xfcaa('0x21')],'as':_0xfcaa('0x22'),'attributes':['id'],'raw':!![]},{'model':db[_0xfcaa('0x23')],'as':_0xfcaa('0x24'),'attributes':['id'],'raw':!![]},{'model':db[_0xfcaa('0x25')],'as':'FaxInteractions','attributes':['id'],'raw':!![]},{'model':db['SmsInteraction'],'as':'SmsInteractions','attributes':['id'],'raw':!![]},{'model':db['OpenchannelInteraction'],'as':_0xfcaa('0x26'),'attributes':['id'],'raw':!![]},{'model':db[_0xfcaa('0x27')],'as':'WhatsappInteractions','attributes':['id'],'raw':!![]}]})[_0xfcaa('0x14')](function(_0x4605b5){if(_0x4605b5){_0x415bce=_0x4605b5;_0x425122[_0x653ca8](util['format'](_0xfcaa('0x1c'),_0x4605b5['name']));var _0x4e135a=[];switch(_0x4605b5[_0xfcaa('0x17')]){case _0xfcaa('0x28'):_0x425122[_0x653ca8](_0xfcaa('0x29'));_0x425122[_0x653ca8](_0xfcaa('0x2a'));if(queryQueues['hasOwnProperty'](_0xfcaa('0x2b'))){delete queryQueues[_0xfcaa('0x2b')];}_0x4e135a['push'](db[_0xfcaa('0x2c')][_0xfcaa('0xf')](queryQueues));_0x4e135a[_0xfcaa('0x2d')](db[_0xfcaa('0x2e')][_0xfcaa('0xf')](queryQueues));_0x4e135a[_0xfcaa('0x2d')](db['FaxQueue'][_0xfcaa('0xf')](queryQueues));_0x4e135a[_0xfcaa('0x2d')](db[_0xfcaa('0x2f')][_0xfcaa('0xf')](queryQueues));_0x4e135a['push'](db[_0xfcaa('0x30')]['findAll'](queryQueues));_0x4e135a[_0xfcaa('0x2d')](db['OpenchannelQueue'][_0xfcaa('0xf')](queryQueues));_0x4e135a[_0xfcaa('0x2d')](db[_0xfcaa('0x31')][_0xfcaa('0xf')](queryQueues));_0x4e135a[_0xfcaa('0x2d')](db[_0xfcaa('0x16')]['findAll'](queryTelephones));_0x4e135a[_0xfcaa('0x2d')](db[_0xfcaa('0x32')][_0xfcaa('0xf')](queryTrunks));_0x4e135a[_0xfcaa('0x2d')](db[_0xfcaa('0x33')][_0xfcaa('0xf')](queryCampaigns));_0x4e135a[_0xfcaa('0x2d')](db[_0xfcaa('0x16')][_0xfcaa('0xf')](queryAgents));break;case _0xfcaa('0x34'):_0x425122[_0x653ca8](_0xfcaa('0x29'));_0x425122[_0x653ca8](_0xfcaa('0x2a'));_0x4e135a[_0xfcaa('0x2d')](getAssociatedResources(_0xfcaa('0x35'),_0x4605b5['userProfileId'],'VoiceQueue'));_0x4e135a[_0xfcaa('0x2d')](getAssociatedResources('ChatQueues',_0x4605b5[_0xfcaa('0x20')],'ChatQueue'));_0x4e135a[_0xfcaa('0x2d')](getAssociatedResources('FaxQueues',_0x4605b5[_0xfcaa('0x20')],_0xfcaa('0x36')));_0x4e135a[_0xfcaa('0x2d')](getAssociatedResources(_0xfcaa('0xb'),_0x4605b5[_0xfcaa('0x20')],_0xfcaa('0x2f')));_0x4e135a[_0xfcaa('0x2d')](getAssociatedResources(_0xfcaa('0xc'),_0x4605b5['userProfileId'],_0xfcaa('0x30')));_0x4e135a[_0xfcaa('0x2d')](getAssociatedResources(_0xfcaa('0xd'),_0x4605b5['userProfileId'],_0xfcaa('0x37')));_0x4e135a[_0xfcaa('0x2d')](getAssociatedResources(_0xfcaa('0xe'),_0x4605b5[_0xfcaa('0x20')],_0xfcaa('0x31')));_0x4e135a['push'](getAssociatedResources(_0xfcaa('0x10'),_0x4605b5[_0xfcaa('0x20')],_0xfcaa('0x16')));_0x4e135a[_0xfcaa('0x2d')](getAssociatedResources(_0xfcaa('0x11'),_0x4605b5['userProfileId'],'Trunk'));_0x4e135a[_0xfcaa('0x2d')](getAssociatedResources(_0xfcaa('0x12'),_0x4605b5['userProfileId'],_0xfcaa('0x33')));_0x4e135a[_0xfcaa('0x2d')](db['User'][_0xfcaa('0xf')](queryAgents));break;case _0xfcaa('0x5'):_0x425122[_0x653ca8](_0xfcaa('0x29'));_0x425122[_0x653ca8](_0xfcaa('0x2a'));_0x4e135a['push'](_0x4605b5[_0xfcaa('0x38')]({'attributes':['id',_0xfcaa('0x2')]}));_0x4e135a['push'](_0x4605b5[_0xfcaa('0x39')]({'attributes':['id',_0xfcaa('0x2')]}));_0x4e135a[_0xfcaa('0x2d')](_0x4605b5[_0xfcaa('0x3a')]({'attributes':['id',_0xfcaa('0x2')]}));_0x4e135a['push'](_0x4605b5[_0xfcaa('0x3b')]({'attributes':['id',_0xfcaa('0x2')]}));_0x4e135a[_0xfcaa('0x2d')](_0x4605b5[_0xfcaa('0x3c')]({'attributes':['id',_0xfcaa('0x2')]}));_0x4e135a[_0xfcaa('0x2d')](_0x4605b5[_0xfcaa('0x3d')]({'attributes':['id','name']}));_0x4e135a[_0xfcaa('0x2d')](_0x4605b5['getWhatsappQueues']({'attributes':['id',_0xfcaa('0x2')]}));break;}return BPromise['all'](_0x4e135a);}})[_0xfcaa('0x14')](function(_0x4fa001){if(_0x4fa001&&_0x4fa001[_0xfcaa('0x1b')]){for(var _0x575172=0x0;_0x575172<_0x4fa001[_0xfcaa('0x1b')];_0x575172+=0x1){for(var _0x2e6e4c=0x0;_0x2e6e4c<_0x4fa001[_0x575172]['length'];_0x2e6e4c+=0x1){switch(_0x575172){case 0x0:joinOrLeaveQueues(_0x425122,_0x653ca8,_0xfcaa('0x3e'),_0x4fa001[_0x575172][_0x2e6e4c]);break;case 0x1:joinOrLeaveQueues(_0x425122,_0x653ca8,_0xfcaa('0x3f'),_0x4fa001[_0x575172][_0x2e6e4c]);break;case 0x2:joinOrLeaveQueues(_0x425122,_0x653ca8,_0xfcaa('0x40'),_0x4fa001[_0x575172][_0x2e6e4c]);break;case 0x3:joinOrLeaveQueues(_0x425122,_0x653ca8,_0xfcaa('0x41'),_0x4fa001[_0x575172][_0x2e6e4c]);break;case 0x4:joinOrLeaveQueues(_0x425122,_0x653ca8,_0xfcaa('0x42'),_0x4fa001[_0x575172][_0x2e6e4c]);break;case 0x5:joinOrLeaveQueues(_0x425122,_0x653ca8,'openchannel',_0x4fa001[_0x575172][_0x2e6e4c]);break;case 0x6:joinOrLeaveQueues(_0x425122,_0x653ca8,_0xfcaa('0x43'),_0x4fa001[_0x575172][_0x2e6e4c]);break;case 0x7:if(_0x415bce[_0xfcaa('0x17')]!==_0xfcaa('0x5'))_0x425122[_0x653ca8](util[_0xfcaa('0x19')](_0xfcaa('0x44'),_0x4fa001[_0x575172][_0x2e6e4c][_0xfcaa('0x2')]));break;case 0x8:if(_0x415bce[_0xfcaa('0x17')]!==_0xfcaa('0x5'))_0x425122[_0x653ca8](util['format']('trunk:%s',_0x4fa001[_0x575172][_0x2e6e4c]['name']));break;case 0x9:if(_0x415bce[_0xfcaa('0x17')]!=='agent')_0x425122[_0x653ca8](util[_0xfcaa('0x19')](_0xfcaa('0x45'),_0x4fa001[_0x575172][_0x2e6e4c][_0xfcaa('0x6')],_0x4fa001[_0x575172][_0x2e6e4c][_0xfcaa('0x2')]));break;case 0xa:_0x425122[_0x653ca8](util[_0xfcaa('0x19')](_0xfcaa('0x1c'),_0x4fa001[_0x575172][_0x2e6e4c][_0xfcaa('0x2')]));break;}}}}})[_0xfcaa('0x14')](function(){if(_0x653ca8==='leave'){var _0xd8675d=_['map'](_0x415bce[_0xfcaa('0x22')],'id');return _0x415bce[_0xfcaa('0x46')](_0xd8675d)[_0xfcaa('0x14')](function(){for(var _0x4e0cf7=0x0;_0x4e0cf7<_0xd8675d[_0xfcaa('0x1b')];_0x4e0cf7+=0x1){_0x5cc0f2[_0xfcaa('0x47')](_0xfcaa('0x48'),{'ChatInteractionId':Number(_0xd8675d[_0x4e0cf7]),'UserId':Number(_0x415bce['id'])});}});}})['then'](function(){if(_0x653ca8===_0xfcaa('0x49')){var _0x4a7b64=_[_0xfcaa('0x15')](_0x415bce['MailInteractions'],'id');return _0x415bce[_0xfcaa('0x4a')](_0x4a7b64)[_0xfcaa('0x14')](function(){for(var _0x184b6b=0x0;_0x184b6b<_0x4a7b64[_0xfcaa('0x1b')];_0x184b6b+=0x1){_0x5cc0f2['emit'](_0xfcaa('0x4b'),{'MailInteractionId':Number(_0x4a7b64[_0x184b6b]),'UserId':Number(_0x415bce['id'])});}});}})[_0xfcaa('0x14')](function(){if(_0x653ca8==='leave'){var _0x11a055=_[_0xfcaa('0x15')](_0x415bce[_0xfcaa('0x4c')],'id');return _0x415bce[_0xfcaa('0x4d')](_0x11a055)['then'](function(){for(var _0x2d4938=0x0;_0x2d4938<_0x11a055[_0xfcaa('0x1b')];_0x2d4938+=0x1){_0x5cc0f2[_0xfcaa('0x47')](_0xfcaa('0x4e'),{'FaxInteractionId':Number(_0x11a055[_0x2d4938]),'UserId':Number(_0x415bce['id'])});}});}})['then'](function(){if(_0x653ca8===_0xfcaa('0x49')){var _0x4e84f5=_[_0xfcaa('0x15')](_0x415bce[_0xfcaa('0x4f')],'id');return _0x415bce['removeSmsInteractions'](_0x4e84f5)[_0xfcaa('0x14')](function(){for(var _0x5c26f9=0x0;_0x5c26f9<_0x4e84f5['length'];_0x5c26f9+=0x1){_0x5cc0f2[_0xfcaa('0x47')](_0xfcaa('0x50'),{'SmsInteractionId':Number(_0x4e84f5[_0x5c26f9]),'UserId':Number(_0x415bce['id'])});}});}})[_0xfcaa('0x14')](function(){if(_0x653ca8==='leave'){var _0x5e7973=_[_0xfcaa('0x15')](_0x415bce[_0xfcaa('0x26')],'id');return _0x415bce[_0xfcaa('0x51')](_0x5e7973)['then'](function(){for(var _0x5c4316=0x0;_0x5c4316<_0x5e7973[_0xfcaa('0x1b')];_0x5c4316+=0x1){_0x5cc0f2[_0xfcaa('0x47')](_0xfcaa('0x52'),{'OpenchannelInteractionId':Number(_0x5e7973[_0x5c4316]),'UserId':Number(_0x415bce['id'])});}});}})[_0xfcaa('0x14')](function(){if(_0x653ca8===_0xfcaa('0x49')){var _0x1c058a=_['map'](_0x415bce['WhatsappInteractions'],'id');return _0x415bce[_0xfcaa('0x53')](_0x1c058a)[_0xfcaa('0x14')](function(){for(var _0x80ff4=0x0;_0x80ff4<_0x1c058a[_0xfcaa('0x1b')];_0x80ff4+=0x1){_0x5cc0f2[_0xfcaa('0x47')](_0xfcaa('0x54'),{'WhatsappInteractionId':Number(_0x1c058a[_0x80ff4]),'UserId':Number(_0x415bce['id'])});}});}})[_0xfcaa('0x55')](function(_0x5881bb){_0x425122['log'](_0x5881bb);});}}function onDisconnect(_0x2c577d,_0x2af4e4){joinOrLeave(_0x2c577d,'leave',_0x2af4e4);}function onConnect(_0x48bb09){joinOrLeave(_0x48bb09,'join');}exports[_0xfcaa('0x56')]=function(_0x23a1dd){_0x23a1dd['on']('connection',function(_0x3aac86){_0x3aac86[_0xfcaa('0x57')](0x0);_0x3aac86['address']=_0x3aac86[_0xfcaa('0x58')]['connection'][_0xfcaa('0x59')]+':'+_0x3aac86[_0xfcaa('0x58')]['connection'][_0xfcaa('0x5a')];_0x3aac86[_0xfcaa('0x5b')]=new Date();_0x3aac86['log']=function(_0xc4d7a0){console[_0xfcaa('0x5c')](_0xfcaa('0x5d')+_0x3aac86[_0xfcaa('0x5e')][_0xfcaa('0x2')]+'['+_0x3aac86[_0xfcaa('0x5f')]+']',_0xc4d7a0);};_0x3aac86['on'](_0xfcaa('0x60'),function(){onDisconnect(_0x3aac86,_0x23a1dd);_0x3aac86[_0xfcaa('0x5c')](_0xfcaa('0x61'));});onConnect(_0x3aac86);_0x3aac86[_0xfcaa('0x5c')]('CONNECTED');});};
\ No newline at end of file
+var _0x2ace=['remoteAddress','remotePort','connectedAt','nsp','disconnect','CONNECTED','util','bluebird','../mysqldb','name','Agents','role','agent','telephone','type','ivr','findOne','autoAssociation','ChatQueues','FaxQueues','SmsQueues','OpenchannelQueues','WhatsappQueues','findAll','Telephones','UserProfileResource','resourceId','then','map','where','Campaign','format','%s:queue:%s','length','user:%s','User','handshake','ChatInteraction','ChatInteractions','MailInteraction','FaxInteraction','FaxInteractions','OpenchannelInteraction','OpenchannelInteractions','WhatsappInteraction','WhatsappInteractions','admin','voice:inbound','hasOwnProperty','VoiceQueue','ChatQueue','FaxQueue','MailQueue','push','OpenchannelQueue','WhatsappQueue','Trunk','user','voice:outbound','VoiceQueues','userProfileId','SmsQueue','MailQueues','Trunks','getVoiceQueues','getFaxQueues','getSmsQueues','getWhatsappQueues','all','voice','chat','fax','sms','mail','telephone:%s','trunk:%s','campaign:%s:%s','leave','emit','user_has_chat_interactions:remove','MailInteractions','removeMailInteractions','user_has_fax_interactions:remove','SmsInteractions','removeSmsInteractions','removeOpenchannelInteractions','user_has_whatsapp_interactions:remove','catch','log','join','setMaxListeners','address','request','connection'];(function(_0x5c21ea,_0x436c10){var _0x2d7455=function(_0x4f4fe9){while(--_0x4f4fe9){_0x5c21ea['push'](_0x5c21ea['shift']());}};_0x2d7455(++_0x436c10);}(_0x2ace,0x17e));var _0xe2ac=function(_0x24f870,_0x2c8a88){_0x24f870=_0x24f870-0x0;var _0x5d065b=_0x2ace[_0x24f870];return _0x5d065b;};'use strict';var _=require('lodash');var util=require(_0xe2ac('0x0'));var BPromise=require(_0xe2ac('0x1'));var db=require(_0xe2ac('0x2'))['db'];var config=require('./environment');var queryQueues={'attributes':['id',_0xe2ac('0x3')],'include':[{'as':_0xe2ac('0x4'),'model':db['User'],'attributes':['id',_0xe2ac('0x3'),_0xe2ac('0x5')],'raw':!![],'where':{'role':_0xe2ac('0x6')},'required':![]}]};var queryTelephones={'raw':!![],'attributes':['id',_0xe2ac('0x3')],'where':{'role':_0xe2ac('0x7')}};var queryTrunks={'raw':!![],'attributes':['id',_0xe2ac('0x3')]};var queryAgents={'raw':!![],'attributes':['id',_0xe2ac('0x3')],'where':{'role':_0xe2ac('0x6')}};var queryCampaigns={'raw':!![],'attributes':['id',_0xe2ac('0x3'),_0xe2ac('0x8')],'where':{'type':_0xe2ac('0x9')}};function getAssociatedResources(_0x3ae734,_0x6e8bd2,_0x4fb111){return db['UserProfileSection'][_0xe2ac('0xa')]({'where':{'name':_0x3ae734,'userProfileId':_0x6e8bd2},'raw':!![]})['then'](function(_0xcf81f4){if(_0xcf81f4){if(_0xcf81f4[_0xe2ac('0xb')]){switch(_0x3ae734){case'VoiceQueues':case _0xe2ac('0xc'):case _0xe2ac('0xd'):case _0xe2ac('0xe'):case'MailQueues':case _0xe2ac('0xf'):case _0xe2ac('0x10'):return db[_0x4fb111][_0xe2ac('0x11')](queryQueues);case _0xe2ac('0x12'):return db[_0x4fb111][_0xe2ac('0x11')](queryTelephones);case'Trunks':return db[_0x4fb111][_0xe2ac('0x11')](queryTrunks);case'IvrCampaigns':return db[_0x4fb111][_0xe2ac('0x11')](queryCampaigns);}}else{return db[_0xe2ac('0x13')][_0xe2ac('0x11')]({'attributes':[_0xe2ac('0x14')],'where':{'sectionId':_0xcf81f4['id']},'raw':!![]})[_0xe2ac('0x15')](function(_0xbddfba){if(_0xbddfba){var _0x445bca={'where':{'id':_[_0xe2ac('0x16')](_0xbddfba,_0xe2ac('0x14'))},'raw':!![]};switch(_0x4fb111){case'User':_0x445bca[_0xe2ac('0x17')][_0xe2ac('0x5')]='telephone';break;case _0xe2ac('0x18'):_0x445bca[_0xe2ac('0x17')][_0xe2ac('0x8')]=_0xe2ac('0x9');break;}return db[_0x4fb111]['findAll'](_0x445bca);}else{return[];}});}}else{return[];}})['then'](function(_0x5bafe4){return _0x5bafe4;});}function joinOrLeaveQueues(_0x19784b,_0x190983,_0x3dd2ef,_0x62d6e2){_0x19784b[_0x190983](util[_0xe2ac('0x19')](_0xe2ac('0x1a'),_0x3dd2ef,_0x62d6e2['name']));if(_0x62d6e2['Agents']){for(var _0x3cfc45=0x0;_0x3cfc45<_0x62d6e2['Agents'][_0xe2ac('0x1b')];_0x3cfc45+=0x1){_0x19784b[_0x190983](util[_0xe2ac('0x19')](_0xe2ac('0x1c'),_0x62d6e2[_0xe2ac('0x4')][_0x3cfc45][_0xe2ac('0x3')]));}}}function joinOrLeave(_0x1224c5,_0x504ffd,_0x20a59e){var _0xbf5817;if(_0x1224c5['handshake']['query']['id']){db[_0xe2ac('0x1d')]['find']({'attributes':['id',_0xe2ac('0x3'),_0xe2ac('0x5'),'userProfileId'],'where':{'id':_0x1224c5[_0xe2ac('0x1e')]['query']['id']},'include':[{'model':db[_0xe2ac('0x1f')],'as':_0xe2ac('0x20'),'attributes':['id'],'raw':!![]},{'model':db[_0xe2ac('0x21')],'as':'MailInteractions','attributes':['id'],'raw':!![]},{'model':db[_0xe2ac('0x22')],'as':_0xe2ac('0x23'),'attributes':['id'],'raw':!![]},{'model':db['SmsInteraction'],'as':'SmsInteractions','attributes':['id'],'raw':!![]},{'model':db[_0xe2ac('0x24')],'as':_0xe2ac('0x25'),'attributes':['id'],'raw':!![]},{'model':db[_0xe2ac('0x26')],'as':_0xe2ac('0x27'),'attributes':['id'],'raw':!![]}]})['then'](function(_0x2ccd98){if(_0x2ccd98){_0xbf5817=_0x2ccd98;_0x1224c5[_0x504ffd](util['format'](_0xe2ac('0x1c'),_0x2ccd98[_0xe2ac('0x3')]));var _0x4479d6=[];switch(_0x2ccd98[_0xe2ac('0x5')]){case _0xe2ac('0x28'):_0x1224c5[_0x504ffd](_0xe2ac('0x29'));_0x1224c5[_0x504ffd]('voice:outbound');if(queryQueues[_0xe2ac('0x2a')]('include')){delete queryQueues['include'];}_0x4479d6['push'](db[_0xe2ac('0x2b')][_0xe2ac('0x11')](queryQueues));_0x4479d6['push'](db[_0xe2ac('0x2c')][_0xe2ac('0x11')](queryQueues));_0x4479d6['push'](db[_0xe2ac('0x2d')][_0xe2ac('0x11')](queryQueues));_0x4479d6['push'](db['SmsQueue'][_0xe2ac('0x11')](queryQueues));_0x4479d6['push'](db[_0xe2ac('0x2e')][_0xe2ac('0x11')](queryQueues));_0x4479d6[_0xe2ac('0x2f')](db[_0xe2ac('0x30')][_0xe2ac('0x11')](queryQueues));_0x4479d6[_0xe2ac('0x2f')](db[_0xe2ac('0x31')][_0xe2ac('0x11')](queryQueues));_0x4479d6[_0xe2ac('0x2f')](db['User'][_0xe2ac('0x11')](queryTelephones));_0x4479d6[_0xe2ac('0x2f')](db[_0xe2ac('0x32')][_0xe2ac('0x11')](queryTrunks));_0x4479d6[_0xe2ac('0x2f')](db[_0xe2ac('0x18')]['findAll'](queryCampaigns));_0x4479d6[_0xe2ac('0x2f')](db['User'][_0xe2ac('0x11')](queryAgents));break;case _0xe2ac('0x33'):_0x1224c5[_0x504ffd](_0xe2ac('0x29'));_0x1224c5[_0x504ffd](_0xe2ac('0x34'));_0x4479d6['push'](getAssociatedResources(_0xe2ac('0x35'),_0x2ccd98['userProfileId'],'VoiceQueue'));_0x4479d6['push'](getAssociatedResources('ChatQueues',_0x2ccd98[_0xe2ac('0x36')],_0xe2ac('0x2c')));_0x4479d6['push'](getAssociatedResources(_0xe2ac('0xd'),_0x2ccd98[_0xe2ac('0x36')],_0xe2ac('0x2d')));_0x4479d6[_0xe2ac('0x2f')](getAssociatedResources(_0xe2ac('0xe'),_0x2ccd98[_0xe2ac('0x36')],_0xe2ac('0x37')));_0x4479d6['push'](getAssociatedResources(_0xe2ac('0x38'),_0x2ccd98['userProfileId'],'MailQueue'));_0x4479d6[_0xe2ac('0x2f')](getAssociatedResources(_0xe2ac('0xf'),_0x2ccd98[_0xe2ac('0x36')],_0xe2ac('0x30')));_0x4479d6[_0xe2ac('0x2f')](getAssociatedResources(_0xe2ac('0x10'),_0x2ccd98[_0xe2ac('0x36')],_0xe2ac('0x31')));_0x4479d6['push'](getAssociatedResources(_0xe2ac('0x12'),_0x2ccd98[_0xe2ac('0x36')],_0xe2ac('0x1d')));_0x4479d6[_0xe2ac('0x2f')](getAssociatedResources(_0xe2ac('0x39'),_0x2ccd98['userProfileId'],_0xe2ac('0x32')));_0x4479d6[_0xe2ac('0x2f')](getAssociatedResources('IvrCampaigns',_0x2ccd98['userProfileId'],_0xe2ac('0x18')));_0x4479d6[_0xe2ac('0x2f')](db[_0xe2ac('0x1d')][_0xe2ac('0x11')](queryAgents));break;case _0xe2ac('0x6'):_0x1224c5[_0x504ffd]('voice:inbound');_0x1224c5[_0x504ffd](_0xe2ac('0x34'));_0x4479d6['push'](_0x2ccd98[_0xe2ac('0x3a')]({'attributes':['id',_0xe2ac('0x3')]}));_0x4479d6[_0xe2ac('0x2f')](_0x2ccd98['getChatQueues']({'attributes':['id',_0xe2ac('0x3')]}));_0x4479d6[_0xe2ac('0x2f')](_0x2ccd98[_0xe2ac('0x3b')]({'attributes':['id',_0xe2ac('0x3')]}));_0x4479d6[_0xe2ac('0x2f')](_0x2ccd98[_0xe2ac('0x3c')]({'attributes':['id',_0xe2ac('0x3')]}));_0x4479d6[_0xe2ac('0x2f')](_0x2ccd98['getMailQueues']({'attributes':['id',_0xe2ac('0x3')]}));_0x4479d6['push'](_0x2ccd98['getOpenchannelQueues']({'attributes':['id',_0xe2ac('0x3')]}));_0x4479d6[_0xe2ac('0x2f')](_0x2ccd98[_0xe2ac('0x3d')]({'attributes':['id',_0xe2ac('0x3')]}));break;}return BPromise[_0xe2ac('0x3e')](_0x4479d6);}})[_0xe2ac('0x15')](function(_0x3715ad){if(_0x3715ad&&_0x3715ad[_0xe2ac('0x1b')]){for(var _0x56e868=0x0;_0x56e868<_0x3715ad[_0xe2ac('0x1b')];_0x56e868+=0x1){for(var _0x4c17b1=0x0;_0x4c17b1<_0x3715ad[_0x56e868][_0xe2ac('0x1b')];_0x4c17b1+=0x1){switch(_0x56e868){case 0x0:joinOrLeaveQueues(_0x1224c5,_0x504ffd,_0xe2ac('0x3f'),_0x3715ad[_0x56e868][_0x4c17b1]);break;case 0x1:joinOrLeaveQueues(_0x1224c5,_0x504ffd,_0xe2ac('0x40'),_0x3715ad[_0x56e868][_0x4c17b1]);break;case 0x2:joinOrLeaveQueues(_0x1224c5,_0x504ffd,_0xe2ac('0x41'),_0x3715ad[_0x56e868][_0x4c17b1]);break;case 0x3:joinOrLeaveQueues(_0x1224c5,_0x504ffd,_0xe2ac('0x42'),_0x3715ad[_0x56e868][_0x4c17b1]);break;case 0x4:joinOrLeaveQueues(_0x1224c5,_0x504ffd,_0xe2ac('0x43'),_0x3715ad[_0x56e868][_0x4c17b1]);break;case 0x5:joinOrLeaveQueues(_0x1224c5,_0x504ffd,'openchannel',_0x3715ad[_0x56e868][_0x4c17b1]);break;case 0x6:joinOrLeaveQueues(_0x1224c5,_0x504ffd,'whatsapp',_0x3715ad[_0x56e868][_0x4c17b1]);break;case 0x7:if(_0xbf5817['role']!==_0xe2ac('0x6'))_0x1224c5[_0x504ffd](util[_0xe2ac('0x19')](_0xe2ac('0x44'),_0x3715ad[_0x56e868][_0x4c17b1][_0xe2ac('0x3')]));break;case 0x8:if(_0xbf5817[_0xe2ac('0x5')]!=='agent')_0x1224c5[_0x504ffd](util['format'](_0xe2ac('0x45'),_0x3715ad[_0x56e868][_0x4c17b1]['name']));break;case 0x9:if(_0xbf5817['role']!==_0xe2ac('0x6'))_0x1224c5[_0x504ffd](util[_0xe2ac('0x19')](_0xe2ac('0x46'),_0x3715ad[_0x56e868][_0x4c17b1][_0xe2ac('0x8')],_0x3715ad[_0x56e868][_0x4c17b1][_0xe2ac('0x3')]));break;case 0xa:_0x1224c5[_0x504ffd](util[_0xe2ac('0x19')](_0xe2ac('0x1c'),_0x3715ad[_0x56e868][_0x4c17b1][_0xe2ac('0x3')]));break;}}}}})[_0xe2ac('0x15')](function(){if(_0x504ffd===_0xe2ac('0x47')){var _0x5c8dd9=_[_0xe2ac('0x16')](_0xbf5817[_0xe2ac('0x20')],'id');return _0xbf5817['removeChatInteractions'](_0x5c8dd9)[_0xe2ac('0x15')](function(){for(var _0x3e5df6=0x0;_0x3e5df6<_0x5c8dd9['length'];_0x3e5df6+=0x1){_0x20a59e[_0xe2ac('0x48')](_0xe2ac('0x49'),{'ChatInteractionId':Number(_0x5c8dd9[_0x3e5df6]),'UserId':Number(_0xbf5817['id'])});}});}})['then'](function(){if(_0x504ffd===_0xe2ac('0x47')){var _0x633f72=_['map'](_0xbf5817[_0xe2ac('0x4a')],'id');return _0xbf5817[_0xe2ac('0x4b')](_0x633f72)[_0xe2ac('0x15')](function(){for(var _0x3f70a=0x0;_0x3f70a<_0x633f72['length'];_0x3f70a+=0x1){_0x20a59e[_0xe2ac('0x48')]('user_has_mail_interactions:remove',{'MailInteractionId':Number(_0x633f72[_0x3f70a]),'UserId':Number(_0xbf5817['id'])});}});}})[_0xe2ac('0x15')](function(){if(_0x504ffd===_0xe2ac('0x47')){var _0x4aed54=_[_0xe2ac('0x16')](_0xbf5817[_0xe2ac('0x23')],'id');return _0xbf5817['removeFaxInteractions'](_0x4aed54)[_0xe2ac('0x15')](function(){for(var _0xd98da8=0x0;_0xd98da8<_0x4aed54[_0xe2ac('0x1b')];_0xd98da8+=0x1){_0x20a59e[_0xe2ac('0x48')](_0xe2ac('0x4c'),{'FaxInteractionId':Number(_0x4aed54[_0xd98da8]),'UserId':Number(_0xbf5817['id'])});}});}})[_0xe2ac('0x15')](function(){if(_0x504ffd==='leave'){var _0x33b635=_[_0xe2ac('0x16')](_0xbf5817[_0xe2ac('0x4d')],'id');return _0xbf5817[_0xe2ac('0x4e')](_0x33b635)[_0xe2ac('0x15')](function(){for(var _0xceaf52=0x0;_0xceaf52<_0x33b635[_0xe2ac('0x1b')];_0xceaf52+=0x1){_0x20a59e[_0xe2ac('0x48')]('user_has_sms_interactions:remove',{'SmsInteractionId':Number(_0x33b635[_0xceaf52]),'UserId':Number(_0xbf5817['id'])});}});}})['then'](function(){if(_0x504ffd===_0xe2ac('0x47')){var _0x2dfe56=_['map'](_0xbf5817[_0xe2ac('0x25')],'id');return _0xbf5817[_0xe2ac('0x4f')](_0x2dfe56)[_0xe2ac('0x15')](function(){for(var _0x39867d=0x0;_0x39867d<_0x2dfe56['length'];_0x39867d+=0x1){_0x20a59e['emit']('user_has_openchannel_interactions:remove',{'OpenchannelInteractionId':Number(_0x2dfe56[_0x39867d]),'UserId':Number(_0xbf5817['id'])});}});}})[_0xe2ac('0x15')](function(){if(_0x504ffd===_0xe2ac('0x47')){var _0x1076ab=_[_0xe2ac('0x16')](_0xbf5817[_0xe2ac('0x27')],'id');return _0xbf5817['removeWhatsappInteractions'](_0x1076ab)[_0xe2ac('0x15')](function(){for(var _0x1b9dac=0x0;_0x1b9dac<_0x1076ab[_0xe2ac('0x1b')];_0x1b9dac+=0x1){_0x20a59e[_0xe2ac('0x48')](_0xe2ac('0x50'),{'WhatsappInteractionId':Number(_0x1076ab[_0x1b9dac]),'UserId':Number(_0xbf5817['id'])});}});}})[_0xe2ac('0x51')](function(_0x1d127c){_0x1224c5[_0xe2ac('0x52')](_0x1d127c);});}}function onDisconnect(_0xbfbab5,_0x5cddd6){joinOrLeave(_0xbfbab5,'leave',_0x5cddd6);}function onConnect(_0x8dd497){joinOrLeave(_0x8dd497,_0xe2ac('0x53'));}exports['default']=function(_0x56ae14){_0x56ae14['on']('connection',function(_0x2efba6){_0x2efba6[_0xe2ac('0x54')](0x0);_0x2efba6[_0xe2ac('0x55')]=_0x2efba6[_0xe2ac('0x56')][_0xe2ac('0x57')][_0xe2ac('0x58')]+':'+_0x2efba6[_0xe2ac('0x56')]['connection'][_0xe2ac('0x59')];_0x2efba6[_0xe2ac('0x5a')]=new Date();_0x2efba6['log']=function(_0x2e98e1){console[_0xe2ac('0x52')]('SocketIO\x20'+_0x2efba6[_0xe2ac('0x5b')][_0xe2ac('0x3')]+'['+_0x2efba6[_0xe2ac('0x55')]+']',_0x2e98e1);};_0x2efba6['on'](_0xe2ac('0x5c'),function(){onDisconnect(_0x2efba6,_0x56ae14);_0x2efba6[_0xe2ac('0x52')]('DISCONNECTED');});onConnect(_0x2efba6);_0x2efba6[_0xe2ac('0x52')](_0xe2ac('0x5d'));});};
\ No newline at end of file
index 9d23c82..62dde5e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7184=['lodash','client','http','Chat','ChatInteraction','newinteraction','closedinteraction','ChatMessage','afterCreate','Sms','SmsInteraction','afterUpdate','SmsMessage','WhatsappInteraction','Whatsapp','WhatsappMessage','newmessage','Fax','FaxInteraction','FaxMessage','Mail','MailInteraction','substatus','MailMessage','Openchannel','OpenchannelInteraction','OpenchannelMessage','request','EventManager','then','Trigger,\x20%s','error','code','get','motionChannel','event','direction','SELECT\x20*\x20FROM\x20cm_contacts\x20WHERE\x20id\x20=\x20','ContactId','sequelize','query','Sequelize','QueryTypes','SELECT','contact','UserId','find','name','internal','interface','format','channel','agent','incomingmessage','catch','outgoingmessage','opened','changed','closed','User','fullname','SIP/%s','length','hasOwnProperty','model','hook','callback','toLowerCase','condition','util','../../mysqldb','../logger'];(function(_0x2d7f0e,_0x3e6fbd){var _0x110b07=function(_0x557b00){while(--_0x557b00){_0x2d7f0e['push'](_0x2d7f0e['shift']());}};_0x110b07(++_0x3e6fbd);}(_0x7184,0xd5));var _0x4718=function(_0x237418,_0x56e144){_0x237418=_0x237418-0x0;var _0x22393e=_0x7184[_0x237418];return _0x22393e;};'use strict';var util=require(_0x4718('0x0'));var db=require(_0x4718('0x1'))['db'];var jayson=require('jayson/promise');var logger=require(_0x4718('0x2'))('triggers');var _=require(_0x4718('0x3'));var client=jayson[_0x4718('0x4')][_0x4718('0x5')]({'port':0x232a});var triggers=[{'channel':_0x4718('0x6'),'model':_0x4718('0x7'),'event':'afterCreate','condition':_0x4718('0x8'),'callback':afterCreate},{'channel':_0x4718('0x6'),'model':_0x4718('0x7'),'event':'afterUpdate','condition':_0x4718('0x9'),'callback':afterUpdate},{'channel':'Chat','model':_0x4718('0xa'),'event':_0x4718('0xb'),'condition':'newmessage','callback':afterCreateMessage},{'channel':_0x4718('0xc'),'model':_0x4718('0xd'),'event':_0x4718('0xb'),'condition':_0x4718('0x8'),'callback':afterCreate},{'channel':_0x4718('0xc'),'model':_0x4718('0xd'),'event':_0x4718('0xe'),'condition':'closedinteraction','callback':afterUpdate},{'channel':_0x4718('0xc'),'model':_0x4718('0xf'),'event':_0x4718('0xb'),'condition':'newmessage','callback':afterCreateMessage},{'channel':'Whatsapp','model':_0x4718('0x10'),'event':_0x4718('0xb'),'condition':'newinteraction','callback':afterCreate},{'channel':_0x4718('0x11'),'model':_0x4718('0x10'),'event':_0x4718('0xe'),'condition':'closedinteraction','callback':afterUpdate},{'channel':_0x4718('0x11'),'model':_0x4718('0x12'),'event':'afterCreate','condition':_0x4718('0x13'),'callback':afterCreateMessage},{'channel':_0x4718('0x14'),'model':'FaxInteraction','event':_0x4718('0xb'),'condition':'newinteraction','callback':afterCreate},{'channel':_0x4718('0x14'),'model':_0x4718('0x15'),'event':_0x4718('0xe'),'condition':'closedinteraction','callback':afterUpdate},{'channel':_0x4718('0x14'),'model':_0x4718('0x16'),'event':_0x4718('0xb'),'condition':_0x4718('0x13'),'callback':afterCreateMessage},{'channel':_0x4718('0x17'),'model':_0x4718('0x18'),'event':'afterCreate','condition':_0x4718('0x8'),'callback':afterCreate},{'channel':'Mail','model':_0x4718('0x18'),'event':_0x4718('0xe'),'condition':_0x4718('0x9'),'callback':afterUpdate},{'channel':_0x4718('0x17'),'model':_0x4718('0x18'),'event':_0x4718('0x19'),'condition':_0x4718('0x19'),'callback':afterUpdate},{'channel':_0x4718('0x17'),'model':_0x4718('0x1a'),'event':_0x4718('0xb'),'condition':_0x4718('0x13'),'callback':afterCreateMessage},{'channel':_0x4718('0x1b'),'model':_0x4718('0x1c'),'event':'afterCreate','condition':_0x4718('0x8'),'callback':afterCreate},{'channel':'Openchannel','model':_0x4718('0x1c'),'event':_0x4718('0xe'),'condition':_0x4718('0x9'),'callback':afterUpdate},{'channel':_0x4718('0x1b'),'model':_0x4718('0x1d'),'event':_0x4718('0xb'),'condition':_0x4718('0x13'),'callback':afterCreateMessage}];function request(_0x5abf5e){return client[_0x4718('0x1e')](_0x4718('0x1f'),_0x5abf5e)[_0x4718('0x20')](function(_0x1f9e54){logger['info'](_0x4718('0x21'),_0x4718('0x1f'),_0x1f9e54);if(_0x1f9e54[_0x4718('0x22')]){if(_0x1f9e54['error'][_0x4718('0x23')]===0x1f4){logger[_0x4718('0x22')](_0x4718('0x21'),'EventManager',_0x1f9e54[_0x4718('0x22')]);}}})['catch'](function(_0x152207){logger['error'](_0x4718('0x21'),'EventManager',_0x152207);});}function afterCreateMessage(_0x5762f1,_0x503c69){return function(_0x20358b,_0x4c3ba9){_0x20358b=_0x20358b[_0x4718('0x24')]({'plain':!![]});_0x20358b['channel']=_0x5762f1;_0x20358b[_0x4718('0x25')]=_0x5762f1;_0x20358b[_0x4718('0x26')]=_0x20358b[_0x4718('0x27')];var _0x4ae522=_0x4718('0x28')+_0x20358b[_0x4718('0x29')];return db[_0x4718('0x2a')][_0x4718('0x2b')](_0x4ae522,{'type':db[_0x4718('0x2c')][_0x4718('0x2d')][_0x4718('0x2e')],'raw':!![]})[_0x4718('0x20')](function(_0x41fe6c){return _0x41fe6c;})[_0x4718('0x20')](function(_0x56e21c){if(_0x56e21c){_0x20358b[_0x4718('0x2f')]=_0x56e21c[0x0];}if(_0x20358b[_0x4718('0x30')]){return db['User'][_0x4718('0x31')]({'where':{'id':_0x20358b[_0x4718('0x30')]},'attributes':['id',_0x4718('0x32'),'fullname','email',_0x4718('0x33')],'raw':!![]})[_0x4718('0x20')](function(_0x429d3c){_0x20358b[_0x4718('0x34')]=util[_0x4718('0x35')]('SIP/%s',_0x429d3c['name']);_0x20358b[_0x4718('0x36')]=_0x5762f1;_0x20358b[_0x4718('0x37')]=_0x429d3c;return request({'event':_0x4718('0x38'),'message':_0x20358b});})[_0x4718('0x39')](function(_0xe9d0c2){console[_0x4718('0x22')](_0xe9d0c2);});}else{return request({'event':_0x4718('0x3a'),'message':_0x20358b});}});};}function afterCreate(_0x4db311,_0x4a46dd){return function(_0x2dd721,_0x10209a){_0x2dd721=_0x2dd721[_0x4718('0x24')]({'plain':!![]});_0x2dd721[_0x4718('0x36')]=_0x4db311;_0x2dd721[_0x4718('0x25')]=_0x4db311;_0x2dd721[_0x4718('0x26')]=_0x4718('0x3b');var _0x37a37e=_0x4718('0x28')+_0x2dd721[_0x4718('0x29')];return db[_0x4718('0x2a')][_0x4718('0x2b')](_0x37a37e,{'type':db[_0x4718('0x2c')][_0x4718('0x2d')][_0x4718('0x2e')],'raw':!![]})[_0x4718('0x20')](function(_0xa9ea2d){return _0xa9ea2d;})[_0x4718('0x20')](function(_0xe6a4dc){if(_0xe6a4dc){_0x2dd721['contact']=_0xe6a4dc[0x0];}return request({'event':_0x4a46dd,'message':_0x2dd721});});};}function afterUpdate(_0x56f4bf,_0x21d7da){return function(_0x3c181d,_0x3b0e38){if(_0x3c181d[_0x4718('0x3c')]('closed')&&_0x3c181d[_0x4718('0x3d')]){_0x3c181d=_0x3c181d['get']({'plain':!![]});_0x3c181d[_0x4718('0x36')]=_0x56f4bf;_0x3c181d[_0x4718('0x25')]=_0x56f4bf;_0x3c181d[_0x4718('0x26')]=_0x4718('0x3d');var _0xcad36='SELECT\x20*\x20FROM\x20cm_contacts\x20WHERE\x20id\x20=\x20'+_0x3c181d[_0x4718('0x29')];return db[_0x4718('0x2a')][_0x4718('0x2b')](_0xcad36,{'type':db['Sequelize']['QueryTypes'][_0x4718('0x2e')],'raw':!![]})['then'](function(_0x38ef0a){return _0x38ef0a;})['then'](function(_0x1b31e3){if(_0x1b31e3){_0x3c181d['contact']=_0x1b31e3[0x0];}if(_0x3c181d['UserId']){return db[_0x4718('0x3e')][_0x4718('0x31')]({'where':{'id':_0x3c181d[_0x4718('0x30')]},'attributes':['id','name',_0x4718('0x3f'),'email',_0x4718('0x33')],'raw':!![]})[_0x4718('0x20')](function(_0x91da47){_0x3c181d[_0x4718('0x34')]=util['format'](_0x4718('0x40'),_0x91da47[_0x4718('0x32')]);_0x3c181d['agent']=_0x91da47;return request({'event':_0x21d7da,'message':_0x3c181d});})[_0x4718('0x39')](function(_0x232fcd){console[_0x4718('0x22')](_0x232fcd);});}else{return request({'event':_0x21d7da,'message':_0x3c181d});}});}else if(_0x3c181d[_0x4718('0x3c')](_0x4718('0x19'))){_0x3c181d=_0x3c181d['get']({'plain':!![]});_0x3c181d[_0x4718('0x36')]=_0x56f4bf;_0x3c181d['event']=_0x4718('0x19');var _0xcad36=_0x4718('0x28')+_0x3c181d[_0x4718('0x29')];return db['sequelize'][_0x4718('0x2b')](_0xcad36,{'type':db[_0x4718('0x2c')][_0x4718('0x2d')]['SELECT'],'raw':!![]})[_0x4718('0x20')](function(_0x358095){return _0x358095;})[_0x4718('0x20')](function(_0x289466){if(_0x289466){_0x3c181d[_0x4718('0x2f')]=_0x289466[0x0];}if(_0x3c181d['UserId']){return db[_0x4718('0x3e')][_0x4718('0x31')]({'where':{'id':_0x3c181d[_0x4718('0x30')]},'attributes':['id','name',_0x4718('0x3f'),'email',_0x4718('0x33')],'raw':!![]})[_0x4718('0x20')](function(_0x1d7e9c){_0x3c181d[_0x4718('0x34')]=util[_0x4718('0x35')](_0x4718('0x40'),_0x1d7e9c[_0x4718('0x32')]);_0x3c181d[_0x4718('0x37')]=_0x1d7e9c;return request({'event':_0x21d7da,'message':_0x3c181d});})[_0x4718('0x39')](function(_0x114549){console[_0x4718('0x22')](_0x114549);});}else{return request({'event':_0x21d7da,'message':_0x3c181d});}});}};}exports['default']=function(){for(var _0x4106a8=0x0;_0x4106a8<triggers[_0x4718('0x41')];_0x4106a8+=0x1){if(db[_0x4718('0x42')](triggers[_0x4106a8][_0x4718('0x43')])){db[triggers[_0x4106a8]['model']][_0x4718('0x44')](triggers[_0x4106a8]['event'],triggers[_0x4106a8][_0x4718('0x45')](triggers[_0x4106a8][_0x4718('0x36')][_0x4718('0x46')](),triggers[_0x4106a8][_0x4718('0x47')]));}}};
\ No newline at end of file
+var _0x4702=['WhatsappMessage','Fax','FaxInteraction','FaxMessage','Mail','MailInteraction','MailMessage','OpenchannelInteraction','Openchannel','OpenchannelMessage','request','then','Trigger,\x20%s','EventManager','error','code','catch','get','channel','event','direction','sequelize','query','Sequelize','QueryTypes','contact','UserId','User','find','fullname','interface','format','SIP/%s','name','agent','incomingmessage','outgoingmessage','opened','ContactId','SELECT','changed','closed','SELECT\x20*\x20FROM\x20cm_contacts\x20WHERE\x20id\x20=\x20','email','internal','default','hasOwnProperty','model','callback','toLowerCase','condition','util','../../mysqldb','jayson/promise','triggers','lodash','client','http','Chat','afterCreate','newinteraction','ChatInteraction','closedinteraction','ChatMessage','SmsInteraction','afterUpdate','Sms','newmessage','WhatsappInteraction','Whatsapp'];(function(_0x30d87a,_0xf3a07f){var _0x48f64b=function(_0x2078b7){while(--_0x2078b7){_0x30d87a['push'](_0x30d87a['shift']());}};_0x48f64b(++_0xf3a07f);}(_0x4702,0x1d7));var _0x2470=function(_0xc26d95,_0x1e1ee6){_0xc26d95=_0xc26d95-0x0;var _0x3c6a03=_0x4702[_0xc26d95];return _0x3c6a03;};'use strict';var util=require(_0x2470('0x0'));var db=require(_0x2470('0x1'))['db'];var jayson=require(_0x2470('0x2'));var logger=require('../logger')(_0x2470('0x3'));var _=require(_0x2470('0x4'));var client=jayson[_0x2470('0x5')][_0x2470('0x6')]({'port':0x232a});var triggers=[{'channel':_0x2470('0x7'),'model':'ChatInteraction','event':_0x2470('0x8'),'condition':_0x2470('0x9'),'callback':afterCreate},{'channel':_0x2470('0x7'),'model':_0x2470('0xa'),'event':'afterUpdate','condition':_0x2470('0xb'),'callback':afterUpdate},{'channel':'Chat','model':_0x2470('0xc'),'event':_0x2470('0x8'),'condition':'newmessage','callback':afterCreateMessage},{'channel':'Sms','model':_0x2470('0xd'),'event':_0x2470('0x8'),'condition':_0x2470('0x9'),'callback':afterCreate},{'channel':'Sms','model':_0x2470('0xd'),'event':_0x2470('0xe'),'condition':_0x2470('0xb'),'callback':afterUpdate},{'channel':_0x2470('0xf'),'model':'SmsMessage','event':_0x2470('0x8'),'condition':_0x2470('0x10'),'callback':afterCreateMessage},{'channel':'Whatsapp','model':_0x2470('0x11'),'event':'afterCreate','condition':_0x2470('0x9'),'callback':afterCreate},{'channel':_0x2470('0x12'),'model':_0x2470('0x11'),'event':_0x2470('0xe'),'condition':'closedinteraction','callback':afterUpdate},{'channel':_0x2470('0x12'),'model':_0x2470('0x13'),'event':_0x2470('0x8'),'condition':_0x2470('0x10'),'callback':afterCreateMessage},{'channel':_0x2470('0x14'),'model':_0x2470('0x15'),'event':_0x2470('0x8'),'condition':_0x2470('0x9'),'callback':afterCreate},{'channel':_0x2470('0x14'),'model':'FaxInteraction','event':_0x2470('0xe'),'condition':_0x2470('0xb'),'callback':afterUpdate},{'channel':_0x2470('0x14'),'model':_0x2470('0x16'),'event':_0x2470('0x8'),'condition':_0x2470('0x10'),'callback':afterCreateMessage},{'channel':_0x2470('0x17'),'model':_0x2470('0x18'),'event':_0x2470('0x8'),'condition':'newinteraction','callback':afterCreate},{'channel':_0x2470('0x17'),'model':_0x2470('0x18'),'event':_0x2470('0xe'),'condition':_0x2470('0xb'),'callback':afterUpdate},{'channel':_0x2470('0x17'),'model':_0x2470('0x19'),'event':_0x2470('0x8'),'condition':_0x2470('0x10'),'callback':afterCreateMessage},{'channel':'Openchannel','model':_0x2470('0x1a'),'event':_0x2470('0x8'),'condition':'newinteraction','callback':afterCreate},{'channel':_0x2470('0x1b'),'model':_0x2470('0x1a'),'event':_0x2470('0xe'),'condition':_0x2470('0xb'),'callback':afterUpdate},{'channel':_0x2470('0x1b'),'model':_0x2470('0x1c'),'event':_0x2470('0x8'),'condition':_0x2470('0x10'),'callback':afterCreateMessage}];function request(_0x148720){return client[_0x2470('0x1d')]('EventManager',_0x148720)[_0x2470('0x1e')](function(_0x50c97e){logger['info'](_0x2470('0x1f'),_0x2470('0x20'),_0x50c97e);if(_0x50c97e[_0x2470('0x21')]){if(_0x50c97e[_0x2470('0x21')][_0x2470('0x22')]===0x1f4){logger[_0x2470('0x21')]('Trigger,\x20%s','EventManager',_0x50c97e['error']);}}})[_0x2470('0x23')](function(_0x2881f4){logger[_0x2470('0x21')](_0x2470('0x1f'),_0x2470('0x20'),_0x2881f4);});}function afterCreateMessage(_0x35f868,_0x5664ca){return function(_0xd7e660,_0x44f521){_0xd7e660=_0xd7e660[_0x2470('0x24')]({'plain':!![]});_0xd7e660[_0x2470('0x25')]=_0x35f868;_0xd7e660[_0x2470('0x26')]=_0xd7e660[_0x2470('0x27')];var _0x43b862='SELECT\x20*\x20FROM\x20cm_contacts\x20WHERE\x20id\x20=\x20'+_0xd7e660['ContactId'];return db[_0x2470('0x28')][_0x2470('0x29')](_0x43b862,{'type':db[_0x2470('0x2a')][_0x2470('0x2b')]['SELECT'],'raw':!![]})['then'](function(_0x50dfb3){return _0x50dfb3;})[_0x2470('0x1e')](function(_0x4cad34){if(_0x4cad34){_0xd7e660[_0x2470('0x2c')]=_0x4cad34[0x0];}if(_0xd7e660[_0x2470('0x2d')]){return db[_0x2470('0x2e')][_0x2470('0x2f')]({'where':{'id':_0xd7e660[_0x2470('0x2d')]},'attributes':['id','name',_0x2470('0x30'),'email','internal'],'raw':!![]})[_0x2470('0x1e')](function(_0x9c96d0){_0xd7e660[_0x2470('0x31')]=util[_0x2470('0x32')](_0x2470('0x33'),_0x9c96d0[_0x2470('0x34')]);_0xd7e660[_0x2470('0x25')]=_0x35f868;_0xd7e660[_0x2470('0x35')]=_0x9c96d0;return request({'event':_0x2470('0x36'),'message':_0xd7e660});})['catch'](function(_0x2ec6a8){console[_0x2470('0x21')](_0x2ec6a8);});}else{return request({'event':_0x2470('0x37'),'message':_0xd7e660});}});};}function afterCreate(_0x3241a4,_0x40d4fa){return function(_0x2d386d,_0x46e5f6){_0x2d386d=_0x2d386d[_0x2470('0x24')]({'plain':!![]});_0x2d386d[_0x2470('0x25')]=_0x3241a4;_0x2d386d[_0x2470('0x26')]=_0x2470('0x38');var _0x87a895='SELECT\x20*\x20FROM\x20cm_contacts\x20WHERE\x20id\x20=\x20'+_0x2d386d[_0x2470('0x39')];return db[_0x2470('0x28')][_0x2470('0x29')](_0x87a895,{'type':db[_0x2470('0x2a')][_0x2470('0x2b')][_0x2470('0x3a')],'raw':!![]})['then'](function(_0x29a976){return _0x29a976;})['then'](function(_0x1e4144){if(_0x1e4144){_0x2d386d[_0x2470('0x2c')]=_0x1e4144[0x0];}return request({'event':_0x40d4fa,'message':_0x2d386d});});};}function afterUpdate(_0xd8aa30,_0x2b7c9b){return function(_0x4670dc,_0xfcc863){if(_0x4670dc[_0x2470('0x3b')](_0x2470('0x3c'))&&_0x4670dc[_0x2470('0x3c')]){_0x4670dc=_0x4670dc[_0x2470('0x24')]({'plain':!![]});_0x4670dc[_0x2470('0x25')]=_0xd8aa30;_0x4670dc['event']=_0x2470('0x3c');var _0x4294dc=_0x2470('0x3d')+_0x4670dc[_0x2470('0x39')];return db[_0x2470('0x28')][_0x2470('0x29')](_0x4294dc,{'type':db['Sequelize']['QueryTypes']['SELECT'],'raw':!![]})[_0x2470('0x1e')](function(_0x1f6935){return _0x1f6935;})[_0x2470('0x1e')](function(_0x486617){if(_0x486617){_0x4670dc[_0x2470('0x2c')]=_0x486617[0x0];}if(_0x4670dc[_0x2470('0x2d')]){return db['User'][_0x2470('0x2f')]({'where':{'id':_0x4670dc[_0x2470('0x2d')]},'attributes':['id',_0x2470('0x34'),_0x2470('0x30'),_0x2470('0x3e'),_0x2470('0x3f')],'raw':!![]})[_0x2470('0x1e')](function(_0x3262bc){_0x4670dc['interface']=util['format'](_0x2470('0x33'),_0x3262bc[_0x2470('0x34')]);_0x4670dc[_0x2470('0x35')]=_0x3262bc;return request({'event':_0x2b7c9b,'message':_0x4670dc});})[_0x2470('0x23')](function(_0x1b77ff){console[_0x2470('0x21')](_0x1b77ff);});}else{return request({'event':_0x2b7c9b,'message':_0x4670dc});}});}};}exports[_0x2470('0x40')]=function(){for(var _0x35d516=0x0;_0x35d516<triggers['length'];_0x35d516+=0x1){if(db[_0x2470('0x41')](triggers[_0x35d516]['model'])){db[triggers[_0x35d516][_0x2470('0x42')]]['hook'](triggers[_0x35d516][_0x2470('0x26')],triggers[_0x35d516][_0x2470('0x43')](triggers[_0x35d516][_0x2470('0x25')][_0x2470('0x44')](),triggers[_0x35d516][_0x2470('0x45')]));}}};
\ No newline at end of file
index 1f35e35..5564a6f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xbd9e=['getLicense','role','agent','User','then','agents','Maximum\x20login\x20has\x20been\x20reached','catch','lodash','bluebird','./license/util','mail','chat','fax','whatsapp','openchannel','getChannels','isValidChannel','toLowerCase','includes','clearBlockUser','isUndefined','blockedAt','updateAttributes'];(function(_0x1a2828,_0x4d208c){var _0x16c855=function(_0x15be3e){while(--_0x15be3e){_0x1a2828['push'](_0x1a2828['shift']());}};_0x16c855(++_0x4d208c);}(_0xbd9e,0x68));var _0xebd9=function(_0x23e7c1,_0x35110c){_0x23e7c1=_0x23e7c1-0x0;var _0x1add43=_0xbd9e[_0x23e7c1];return _0x1add43;};'use strict';var _=require(_0xebd9('0x0'));var BPromise=require(_0xebd9('0x1'));var db=require('../mysqldb')['db'];var util=require(_0xebd9('0x2'));var channels=['voice',_0xebd9('0x3'),_0xebd9('0x4'),_0xebd9('0x5'),'sms',_0xebd9('0x6'),_0xebd9('0x7')];exports[_0xebd9('0x8')]=function(){return channels;};exports[_0xebd9('0x9')]=function(_0x15e0f1){_0x15e0f1=_0x15e0f1[_0xebd9('0xa')]();return _[_0xebd9('0xb')](channels,_0x15e0f1);};exports[_0xebd9('0xc')]=function(_0xf4b3dd,_0x4ef3ff,_0x479147,_0x2f73f8){var _0x57e3c3={'loginAttempts':_0x4ef3ff,'blocked':_0x479147};if(!_[_0xebd9('0xd')](_0x2f73f8)){_0x57e3c3[_0xebd9('0xe')]=_0x2f73f8;}return _0xf4b3dd[_0xebd9('0xf')](_0x57e3c3);};exports[_0xebd9('0x10')]=function(_0x3b6809){return new BPromise(function(_0x453f62,_0x477fd2){var _0x37a860=0x0;if(_0x3b6809[_0xebd9('0x11')]!==_0xebd9('0x12')){_0x453f62(_0x3b6809);}db[_0xebd9('0x13')]['count']({'where':{'role':_0xebd9('0x12'),'online':!![],'id':{'$ne':_0x3b6809['id']}}})[_0xebd9('0x14')](function(_0x3d9993){_0x37a860=_0x3d9993;return util[_0xebd9('0x10')]();})[_0xebd9('0x14')](function(_0x5c8cc6){if(_0x5c8cc6&&_0x5c8cc6[_0xebd9('0x15')]&&_0x37a860>=_0x5c8cc6[_0xebd9('0x15')]){throw Error(_0xebd9('0x16'));}_0x453f62(_0x3b6809);})[_0xebd9('0x17')](function(_0x423569){_0x477fd2(_0x423569);});});};
\ No newline at end of file
+var _0xcf39=['User','count','then','agents','Maximum\x20login\x20has\x20been\x20reached','lodash','bluebird','../mysqldb','./license/util','voice','mail','chat','fax','sms','whatsapp','openchannel','getChannels','isValidChannel','toLowerCase','isUndefined','blockedAt','updateAttributes','getLicense','role','agent'];(function(_0x1eba32,_0x362c7f){var _0x40462e=function(_0x43f3cf){while(--_0x43f3cf){_0x1eba32['push'](_0x1eba32['shift']());}};_0x40462e(++_0x362c7f);}(_0xcf39,0xff));var _0x9cf3=function(_0x408758,_0x548c1f){_0x408758=_0x408758-0x0;var _0x2e25ae=_0xcf39[_0x408758];return _0x2e25ae;};'use strict';var _=require(_0x9cf3('0x0'));var BPromise=require(_0x9cf3('0x1'));var db=require(_0x9cf3('0x2'))['db'];var util=require(_0x9cf3('0x3'));var channels=[_0x9cf3('0x4'),_0x9cf3('0x5'),_0x9cf3('0x6'),_0x9cf3('0x7'),_0x9cf3('0x8'),_0x9cf3('0x9'),_0x9cf3('0xa')];exports[_0x9cf3('0xb')]=function(){return channels;};exports[_0x9cf3('0xc')]=function(_0xa40261){_0xa40261=_0xa40261[_0x9cf3('0xd')]();return _['includes'](channels,_0xa40261);};exports['clearBlockUser']=function(_0x64da9d,_0x564d20,_0x960c86,_0x4e0996){var _0x219a37={'loginAttempts':_0x564d20,'blocked':_0x960c86};if(!_[_0x9cf3('0xe')](_0x4e0996)){_0x219a37[_0x9cf3('0xf')]=_0x4e0996;}return _0x64da9d[_0x9cf3('0x10')](_0x219a37);};exports[_0x9cf3('0x11')]=function(_0x572849){return new BPromise(function(_0x5ecf7e,_0xe793c){var _0x4a21e2=0x0;if(_0x572849[_0x9cf3('0x12')]!==_0x9cf3('0x13')){_0x5ecf7e(_0x572849);}db[_0x9cf3('0x14')][_0x9cf3('0x15')]({'where':{'role':_0x9cf3('0x13'),'online':!![],'id':{'$ne':_0x572849['id']}}})['then'](function(_0x147f66){_0x4a21e2=_0x147f66;return util[_0x9cf3('0x11')]();})[_0x9cf3('0x16')](function(_0x14b0cf){if(_0x14b0cf&&_0x14b0cf[_0x9cf3('0x17')]&&_0x4a21e2>=_0x14b0cf['agents']){throw Error(_0x9cf3('0x18'));}_0x5ecf7e(_0x572849);})['catch'](function(_0xfcd880){_0xe793c(_0xfcd880);});});};
\ No newline at end of file
index deb4768..1bce49f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xfba1=['status','render','json'];(function(_0x46d87a,_0x5183db){var _0x115296=function(_0x880a1c){while(--_0x880a1c){_0x46d87a['push'](_0x46d87a['shift']());}};_0x115296(++_0x5183db);}(_0xfba1,0x132));var _0x1fba=function(_0x43528f,_0x32f284){_0x43528f=_0x43528f-0x0;var _0x27f595=_0xfba1[_0x43528f];return _0x27f595;};'use strict';module['exports'][0x194]=function pageNotFound(_0x11fca6,_0x29f4eb){var _0x3c6705='404';var _0x32bc02=0x194;var _0x342ab0={'status':_0x32bc02};_0x29f4eb[_0x1fba('0x0')](_0x342ab0[_0x1fba('0x0')]);_0x29f4eb[_0x1fba('0x1')](_0x3c6705,{},function(_0x3cb21e,_0x2c9bb7){if(_0x3cb21e){return _0x29f4eb[_0x1fba('0x0')](_0x342ab0[_0x1fba('0x0')])[_0x1fba('0x2')](_0x342ab0);}_0x29f4eb['send'](_0x2c9bb7);});};
\ No newline at end of file
+var _0x1cf1=['status','send','exports','404'];(function(_0x3ab031,_0x42eb99){var _0x212155=function(_0x13544a){while(--_0x13544a){_0x3ab031['push'](_0x3ab031['shift']());}};_0x212155(++_0x42eb99);}(_0x1cf1,0x10e));var _0x11cf=function(_0x5009a0,_0x5956c2){_0x5009a0=_0x5009a0-0x0;var _0x28f36b=_0x1cf1[_0x5009a0];return _0x28f36b;};'use strict';module[_0x11cf('0x0')][0x194]=function pageNotFound(_0x5547ac,_0x33899c){var _0x1e6f0c=_0x11cf('0x1');var _0x2db10c=0x194;var _0x4b2f31={'status':_0x2db10c};_0x33899c[_0x11cf('0x2')](_0x4b2f31['status']);_0x33899c['render'](_0x1e6f0c,{},function(_0x1859df,_0x3d9ead){if(_0x1859df){return _0x33899c[_0x11cf('0x2')](_0x4b2f31[_0x11cf('0x2')])['json'](_0x4b2f31);}_0x33899c[_0x11cf('0x3')](_0x3d9ead);});};
\ No newline at end of file
diff --git a/server/migrations/2.5.35.js b/server/migrations/2.5.35.js
deleted file mode 100644 (file)
index c74843c..0000000
+++ /dev/null
@@ -1,178 +0,0 @@
-'use strict';\r
-\r
-var BPromise = require('bluebird');\r
-var util = require('util');\r
-\r
-var logger = require('../config/logger')('migration');\r
-\r
-var Sequence = function() {};\r
-\r
-Sequence.prototype.enqueue = function(fn) {\r
-  this.tail = this.tail ? this.tail.finally(fn) : fn();\r
-};\r
-\r
-var Migration = function(queryInterface) {\r
-  this.queryInterface = queryInterface;\r
-  this.sequence = new Sequence();\r
-};\r
-\r
-Migration.prototype.changeColumn = function(table, column, type) {\r
-  var _this = this;\r
-  this.sequence.enqueue(function() {\r
-    return _this.queryInterface\r
-      .changeColumn(table, column, type)\r
-      .then(function() {\r
-        logger.info('Changed column %s in table %s', column, table);\r
-      })\r
-      .catch(function(err) {\r
-        logger.info(JSON.stringify(err));\r
-      });\r
-  });\r
-};\r
-\r
-Migration.prototype.addColumn = function(table, column, type) {\r
-  var _this = this;\r
-  this.sequence.enqueue(function() {\r
-    return _this.queryInterface\r
-      .addColumn(table, column, type)\r
-      .then(function() {\r
-        logger.info('Added column %s to %s', column, table);\r
-      })\r
-      .catch(function(err) {\r
-        logger.info(JSON.stringify(err));\r
-      });\r
-  });\r
-};\r
-\r
-Migration.prototype.dropTable = function(table) {\r
-  var _this = this;\r
-  this.sequence.enqueue(function() {\r
-    return _this.queryInterface\r
-      .dropTable(table, {\r
-        force: true\r
-      })\r
-      .then(function() {\r
-        logger.info('table dropped %s', table);\r
-      })\r
-      .catch(function(err) {\r
-        logger.info(JSON.stringify(err));\r
-      });\r
-  });\r
-};\r
-\r
-Migration.prototype.addIndex = function(table, column, indexName) {\r
-  var _this = this;\r
-  this.sequence.enqueue(function() {\r
-    return _this.queryInterface\r
-      .addIndex(table, column, {\r
-        indexName: indexName\r
-      })\r
-      .then(function() {\r
-        logger.info('addIndex %s %s %s', table, column.join(','), indexName);\r
-      })\r
-      .catch(function(err) {\r
-        logger.info(JSON.stringify(err));\r
-      });\r
-  });\r
-};\r
-\r
-Migration.prototype.removeIndex = function(table, indexName) {\r
-  var _this = this;\r
-  this.sequence.enqueue(function() {\r
-    return _this.queryInterface\r
-      .removeIndex(table, indexName)\r
-      .then(function() {\r
-        logger.info('removeIndex %s %s', table, indexName);\r
-      })\r
-      .catch(function(err) {\r
-        logger.info(JSON.stringify(err));\r
-      });\r
-  });\r
-};\r
-\r
-Migration.prototype.query = function(sql) {\r
-  var _this = this;\r
-  this.sequence.enqueue(function() {\r
-    return _this.queryInterface.sequelize\r
-      .query(sql)\r
-      .then(function() {\r
-        logger.info('query %s', sql);\r
-      })\r
-      .catch(function(err) {\r
-        logger.info(JSON.stringify(err));\r
-      });\r
-  });\r
-};\r
-\r
-Migration.prototype.removeColumn = function(table, column) {\r
-  var _this = this;\r
-  this.sequence.enqueue(function() {\r
-    return _this.queryInterface\r
-      .removeColumn(table, column)\r
-      .then(function() {\r
-        logger.info('Removed column %s from %s', column, table);\r
-      })\r
-      .catch(function(err) {\r
-        logger.info(\r
-          util.inspect(err, {\r
-            showHidden: false,\r
-            depth: null\r
-          })\r
-        );\r
-      });\r
-  });\r
-};\r
-\r
-Migration.prototype.renameColumn = function(table, oldColumn, newColumn) {\r
-  var _this = this;\r
-  this.sequence.enqueue(function() {\r
-    return _this.queryInterface\r
-      .renameColumn(table, oldColumn, newColumn)\r
-      .then(function() {\r
-        logger.info('Renamed column from %s to %s on %s', oldColumn, newColumn, table);\r
-      })\r
-      .catch(function(err) {\r
-        logger.info(\r
-          util.inspect(err, {\r
-            showHidden: false,\r
-            depth: null\r
-          })\r
-        );\r
-      });\r
-  });\r
-};\r
-\r
-Migration.prototype.final = function(resolve) {\r
-  this.sequence.enqueue(function() {\r
-    return resolve();\r
-  });\r
-};\r
-\r
-module.exports = {\r
-  up: function(queryInterface, Sequelize) {\r
-    return new BPromise(function(resolve) {\r
-      var migration = new Migration(queryInterface);\r
-\r
-      // START team_has_voice_prefixes\r
-      migration.query('CREATE TABLE `team_has_voice_prefixes` ( \\r
-  `createdAt` datetime NOT NULL, \\r
-  `updatedAt` datetime NOT NULL, \\r
-  `VoicePrefixesId` int(11) DEFAULT NULL, \\r
-  PRIMARY KEY (`id`), \\r
-  KEY `VoicePrefixesId` (`VoicePrefixesId`), \\r
-  KEY `TeamsId` (`TeamsId`), \\r
-  CONSTRAINT `team_has_voice_prefixes_ibfk_1` FOREIGN KEY (`VoicePrefixesId`) REFERENCES `voice_prefixes` (`id`) ON DELETE SET NULL ON UPDATE CASCADE,\\r
-  CONSTRAINT `team_has_voice_prefixes_ibfk_2` FOREIGN KEY (`TeamsId`) REFERENCES `teams` (`id`) ON DELETE SET NULL ON UPDATE CASCADE,\\r
-) ENGINE=InnoDB AUTO_INCREMENT=5 DEFAULT CHARSET=utf8;');\r
-      // END team_has_voice_prefixes\r
-\r
-      // START FINAL\r
-      migration.final(resolve);\r
-      // END FINAL\r
-    });\r
-  },\r
-\r
-  down: function(queryInterface, Sequelize) {\r
-    // var migration = new Migration(queryInterface);\r
-  }\r
-};
\ No newline at end of file
index 32cdb9b..72a2533 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2d0f=['TemplateId','team_has_mail_queues','Teams','MailInteractionId','Account','Owner','mail_interaction_has_tags','Tags','Users','Attachments','Interaction','ChatWebsiteId','ChatOfflineMessageId','restrict','MailQueueReport','Items','CannedAnswer','FaxApplication','Exntensions','Agents','TagId','FaxInteractionId','FaxAccountId','ThroughTags','AttachmentId','team_has_fax_queues','SmsAccountId','sms_interaction_has_tags','user_has_sms_interactions','SmsInteractionId','team_has_sms_queues','OpenchannelAccountId','OpenchannelApplication','OpenchannelQueueId','OpenchannelInteractionId','openchannel_interaction_has_tags','team_has_openchannel_queues','ProactiveActions','ChatApplication','Agent','Queue','Website','ChatInteractionId','chat_interaction_has_tags','team_has_chat_queues','ChatGroupId','CmCompany','CompanyId','HopperHistories','JscriptySessionReport','JscriptySessions','cm_contact_has_tags','OwnerId','CampaignId','Automation','All','Any','OneAny','AutomationAnyId','ParentId','Intervals','MailApplications','ChatApplications','SmsApplications','DefaultReportId','fax_interaction_has_tags','whatsapp_interaction_has_tags','Trigger','AllConditions','AllCondition','TriggerAllId','Actions','Fields','CustomReportId','MetricId','SalesforceAccount','AccountId','Subjects','Descriptions','FieldId','SubjectId','DescriptionId','Field','SugarcrmConfiguration','Configurations','SugarcrmField','Subject','Description','VariableId','DeskConfiguration','DeskField','int_desk_configuration_has_tags','int_zendesk_configuration_has_tags','FreshdeskAccount','int_freshdesk_configuration_has_tags','FromId','ToId','SessionId','JscriptyAnswerReport','SmsQueueReport','JscriptyProject','ProjectId','team_has_whatsapp_queues','VoicePrefixes','HopperBlacks','SquareProjectId','campaigns_has_cm_blacklists','FromMailAccountId','FromUserId','ToUserId','ToAgent','ToMailQueueId','ToMailAccountId','ToAccount','ChatTransferReport','FromChatWebsiteId','FromAgent','ToQueue','FaxTransferReport','FromAccount','ToFaxAccountId','OpenchannelTransferReport','FromOpenchannelAccountId','ToSmsQueueId','CustomFields','HopperHistory','Queues','UserProfileSections','Resources','sectionId','WhatsappAccountId','WhatsappMessage','WhatsappInteractionId','WhatsappQueueReport','FromWhatsappAccountId','ToQueueId','WhatsappQueueId','exports','jstz','sequelize','defaultsDeep','motion2','xcall','xC@LL1234','127.0.0.1','mysql','utf8mb4','name','utf8','utf8_general_ci','sequelizeHistory','database','username','password','options','User','../api/user/user.model','VoiceChanSpy','import','../api/voiceChanSpy/voiceChanSpy.model','VoiceContext','../api/voiceContext/voiceContext.model','VoiceExtension','VoiceMusicOnHold','VoiceQueue','../api/voiceQueue/voiceQueue.model','VoiceRecording','../api/voiceRecording/voiceRecording.model','ScreenRecording','../api/screenRecording/screenRecording.model','VoiceMail','../api/voiceMail/voiceMail.model','../api/voiceMailMessage/voiceMailMessage.model','VoiceDialReport','VoiceAgentReport','../api/voiceAgentReport/voiceAgentReport.model','VoiceQueueReport','../api/voiceQueueReport/voiceQueueReport.model','Trunk','UserVoiceQueueRt','../api/userVoiceQueueRt/userVoiceQueueRt.model','UserVoiceQueue','../api/userChatQueue/userChatQueue.model','../api/userMailQueue/userMailQueue.model','UserFaxQueue','UserSmsQueue','../api/userSmsQueue/userSmsQueue.model','UserOpenchannelQueue','../api/userOpenchannelQueue/userOpenchannelQueue.model','UserWhatsappQueue','../api/userWhatsappQueue/userWhatsappQueue.model','../api/mailServerIn/mailServerIn.model','MailServerOut','../api/mailServerOut/mailServerOut.model','MailQueue','../api/mailQueue/mailQueue.model','MailSubstatus','../api/mailInteraction/mailInteraction.model','MailMessage','../api/mailMessage/mailMessage.model','MailApplication','../api/mailQueueReport/mailQueueReport.model','Dashboard','DashboardItem','FaxAccount','../api/faxAccount/faxAccount.model','../api/faxApplication/faxApplication.model','FaxInteraction','../api/faxInteraction/faxInteraction.model','FaxMessage','FaxQueue','FaxQueueReport','../api/faxQueueReport/faxQueueReport.model','../api/smsAccount/smsAccount.model','SmsApplication','../api/smsApplication/smsApplication.model','SmsInteraction','../api/smsInteraction/smsInteraction.model','SmsMessage','../api/smsMessage/smsMessage.model','SmsQueue','../api/smsQueue/smsQueue.model','../api/openchannelAccount/openchannelAccount.model','../api/openchannelInteraction/openchannelInteraction.model','OpenchannelMessage','../api/openchannelMessage/openchannelMessage.model','OpenchannelQueue','../api/openchannelQueue/openchannelQueue.model','../api/chatWebsite/chatWebsite.model','OpenchannelQueueReport','../api/openchannelQueueReport/openchannelQueueReport.model','ChatInteraction','ChatMessage','../api/chatMessage/chatMessage.model','ChatOfflineMessage','ChatQueue','../api/chatQueue/chatQueue.model','../api/chatGroup/chatGroup.model','ChatProactiveAction','../api/chatProactiveAction/chatProactiveAction.model','../api/cmCompany/cmCompany.model','CmHopper','CmHopperBlack','CmHopperFinal','../api/cmHopperFinal/cmHopperFinal.model','CmHopperHistory','../api/cmHopperHistory/cmHopperHistory.model','../api/reportAgentPreview/reportAgentPreview.model','CmCustomField','Action','../api/action/action.model','../api/cannedAnswer/cannedAnswer.model','../api/disposition/disposition.model','Condition','../api/condition/condition.model','Interval','../api/interval/interval.model','Pause','../api/pause/pause.model','Cdr','../api/cdr/cdr.model','VoiceQueuesLog','../api/voiceQueuesLog/voiceQueuesLog.model','Schedule','../api/schedule/schedule.model','Sound','Tag','../api/tag/tag.model','Template','../api/template/template.model','../api/trigger/trigger.model','Variable','../api/variable/variable.model','Integration','../api/integration/integration.model','IntegrationReport','AnalyticCustomReport','AnalyticDefaultReport','../api/analyticExtractedReport/analyticExtractedReport.model','AnalyticMetric','AnalyticFieldReport','../api/analyticFieldReport/analyticFieldReport.model','AnalyticTreeReport','../api/analyticTreeReport/analyticTreeReport.model','../api/intSalesforceAccount/intSalesforceAccount.model','SalesforceConfiguration','../api/intSalesforceConfiguration/intSalesforceConfiguration.model','SalesforceField','../api/intSalesforceField/intSalesforceField.model','SugarcrmAccount','../api/intSugarcrmAccount/intSugarcrmAccount.model','../api/intSugarcrmConfiguration/intSugarcrmConfiguration.model','../api/intSugarcrmField/intSugarcrmField.model','DeskAccount','../api/intDeskAccount/intDeskAccount.model','../api/intDeskConfiguration/intDeskConfiguration.model','../api/intDeskField/intDeskField.model','ZohoAccount','../api/intZohoAccount/intZohoAccount.model','ZohoConfiguration','ZohoField','../api/intZohoField/intZohoField.model','ZendeskAccount','ZendeskConfiguration','../api/intZendeskConfiguration/intZendeskConfiguration.model','ZendeskField','../api/intFreshdeskAccount/intFreshdeskAccount.model','FreshdeskConfiguration','../api/intFreshdeskConfiguration/intFreshdeskConfiguration.model','FreshdeskField','VtigerAccount','../api/intVtigerAccount/intVtigerAccount.model','VtigerConfiguration','../api/intVtigerConfiguration/intVtigerConfiguration.model','VtigerField','../api/intVtigerField/intVtigerField.model','ServicenowAccount','../api/intServicenowAccount/intServicenowAccount.model','ServicenowConfiguration','ServicenowField','../api/intServicenowField/intServicenowField.model','Dynamics365Account','Dynamics365Configuration','Dynamics365Field','../api/intDynamics365Field/intDynamics365Field.model','FreshsalesAccount','../api/intFreshsalesAccount/intFreshsalesAccount.model','FreshsalesConfiguration','../api/intFreshsalesConfiguration/intFreshsalesConfiguration.model','FreshsalesField','../api/intFreshsalesField/intFreshsalesField.model','Network','ChatQueueReport','../api/chatQueueReport/chatQueueReport.model','ChatInternalMessage','../api/chatInternalMessage/chatInternalMessage.model','../api/jscriptyAnswerReport/jscriptyAnswerReport.model','JscriptyQuestionReport','../api/jscriptyQuestionReport/jscriptyQuestionReport.model','../api/jscriptySessionReport/jscriptySessionReport.model','SquareReport','../api/squareReport/squareReport.model','SquareDetailsReport','../api/jscriptyProject/jscriptyProject.model','Setting','../api/setting/setting.model','SquareOdbc','SquareProject','../api/squareProject/squareProject.model','SquareRecording','../api/squareRecording/squareRecording.model','../api/squareMessage/squareMessage.model','../api/team/team.model','License','../api/license/license.model','Campaign','../api/campaign/campaign.model','Migration','Attachment','../api/attachment/attachment.model','MailTransferReport','../api/mailTransferReport/mailTransferReport.model','../api/chatTransferReport/chatTransferReport.model','../api/faxTransferReport/faxTransferReport.model','../api/openchannelTransferReport/openchannelTransferReport.model','SmsTransferReport','../api/smsTransferReport/smsTransferReport.model','CmList','VoicePrefix','../api/voicePrefix/voicePrefix.model','UserProfile','../api/userProfile/userProfile.model','UserProfileSection','../api/userProfileSection/userProfileSection.model','UserProfileResource','../api/userProfileResource/userProfileResource.model','UserNotification','../api/userNotification/userNotification.model','WhatsappAccount','../api/whatsappAccount/whatsappAccount.model','WhatsappApplication','../api/whatsappApplication/whatsappApplication.model','WhatsappInteraction','../api/whatsappMessage/whatsappMessage.model','../api/whatsappQueueReport/whatsappQueueReport.model','WhatsappTransferReport','../api/whatsappTransferReport/whatsappTransferReport.model','WhatsappQueue','../api/whatsappQueue/whatsappQueue.model','../api/cloudProvider/cloudProvider.model','TeamVoiceQueue','../api/teamVoiceQueue/teamVoiceQueue.model','TeamVoicePrefix','../api/teamVoicePrefix/teamVoicePrefix.model','UserVoicePrefix','hasOne','cascade','hasMany','Recordings','UserId','VoiceQueuesRt','Extensions','HopperFinals','ReportAgentPreview','OpenchannelInteraction','OpenchannelInteractions','MailInteractions','userProfileId','belongsToMany','ChatGroup','chat_group_has_users','CmContact','Contacts','cm_user_has_contacts','Lists','cm_user_has_lists','user_has_teams','MailInteraction','user_has_mail_interactions','ChatInteractions','user_has_chat_interactions','FaxInteractions','user_has_fax_interactions','SmsInteractions','user_has_openchannel_interactions','WhatsappInteractions','user_has_whatsapp_interactions','VoiceQueues','MailQueues','UserMailQueue','ChatQueues','UserChatQueue','FaxQueues','SmsQueues','OpenchannelQueues','WhatsappQueues','ChatWebsite','ChatWebsites','user_has_chat_websites','FaxAccounts','user_has_fax_accounts','user_has_mail_accounts','OpenchannelAccount','OpenchannelAccounts','user_has_openchannel_accounts','SmsAccount','SmsAccounts','user_has_sms_accounts','SquareProjects','user_has_square_projects','SpiedAgents','Applications','moh_has_sounds','Members','Hoppers','VoiceQueueId','belongsTo','TrunkId','TrunkBackup','TrunkBackupId','IntervalId','mandatoryDispositionPause','mandatoryDispositionPauseId','voice_queues_has_cm_lists','Team','voice_queues_has_cm_blacklists','VoiceMailMessage','Messages','mailboxuser','mailbox','VoiceCallReport','QueueCalls','AgentReports','uniqueid','Contact','ContactId','MailServerIn','MailAccountId','MailAccount','Imap','Smtp','Disposition','Dispositions','Answers','Interactions','List','ListId'];(function(_0x36991d,_0x5c662f){var _0x42d83f=function(_0x477c3d){while(--_0x477c3d){_0x36991d['push'](_0x36991d['shift']());}};_0x42d83f(++_0x5c662f);}(_0x2d0f,0x8a));var _0xf2d0=function(_0x54d3b4,_0x162df6){_0x54d3b4=_0x54d3b4-0x0;var _0x39a05d=_0x2d0f[_0x54d3b4];return _0x39a05d;};'use strict';var config=require('../config/environment');var Sequelize=require('sequelize');var _=require('lodash');var jstz=require(_0xf2d0('0x0'));var timezone=jstz['determine']();config[_0xf2d0('0x1')]=_[_0xf2d0('0x2')](config[_0xf2d0('0x1')],{'database':_0xf2d0('0x3'),'username':_0xf2d0('0x4'),'password':_0xf2d0('0x5'),'options':{'host':_0xf2d0('0x6'),'port':0xcea,'dialect':_0xf2d0('0x7'),'dialectOptions':{'charset':_0xf2d0('0x8')},'logging':![],'timezone':timezone[_0xf2d0('0x9')](),'define':{'charset':_0xf2d0('0xa'),'collate':_0xf2d0('0xb')}}});config[_0xf2d0('0xc')]=_[_0xf2d0('0x2')](config['sequelizeHistory'],{'database':_0xf2d0('0x3'),'username':_0xf2d0('0x4'),'password':_0xf2d0('0x5'),'options':{'host':_0xf2d0('0x6'),'port':0xcea,'dialect':_0xf2d0('0x7'),'dialectOptions':{'charset':_0xf2d0('0x8')},'logging':![],'timezone':timezone['name'](),'define':{'charset':'utf8','collate':'utf8_general_ci'}}});var db={'Sequelize':Sequelize,'sequelize':new Sequelize(config[_0xf2d0('0x1')][_0xf2d0('0xd')],config['sequelize'][_0xf2d0('0xe')],config['sequelize'][_0xf2d0('0xf')],config['sequelize'][_0xf2d0('0x10')])};var dbH={'Sequelize':Sequelize,'sequelize':new Sequelize(config[_0xf2d0('0xc')][_0xf2d0('0xd')],config[_0xf2d0('0xc')][_0xf2d0('0xe')],config['sequelizeHistory'][_0xf2d0('0xf')],config[_0xf2d0('0xc')][_0xf2d0('0x10')])};db[_0xf2d0('0x11')]=db[_0xf2d0('0x1')]['import'](_0xf2d0('0x12'));db[_0xf2d0('0x13')]=db['sequelize'][_0xf2d0('0x14')](_0xf2d0('0x15'));db[_0xf2d0('0x16')]=db[_0xf2d0('0x1')][_0xf2d0('0x14')](_0xf2d0('0x17'));db[_0xf2d0('0x18')]=db[_0xf2d0('0x1')]['import']('../api/voiceExtension/voiceExtension.model');db[_0xf2d0('0x19')]=db[_0xf2d0('0x1')]['import']('../api/voiceMusicOnHold/voiceMusicOnHold.model');db[_0xf2d0('0x1a')]=db['sequelize'][_0xf2d0('0x14')](_0xf2d0('0x1b'));db[_0xf2d0('0x1c')]=db[_0xf2d0('0x1')][_0xf2d0('0x14')](_0xf2d0('0x1d'));db[_0xf2d0('0x1e')]=db[_0xf2d0('0x1')][_0xf2d0('0x14')](_0xf2d0('0x1f'));db[_0xf2d0('0x20')]=db[_0xf2d0('0x1')][_0xf2d0('0x14')](_0xf2d0('0x21'));db['VoiceMailMessage']=db[_0xf2d0('0x1')]['import'](_0xf2d0('0x22'));db['VoiceCallReport']=db[_0xf2d0('0x1')][_0xf2d0('0x14')]('../api/voiceCallReport/voiceCallReport.model');db[_0xf2d0('0x23')]=db[_0xf2d0('0x1')][_0xf2d0('0x14')]('../api/voiceDialReport/voiceDialReport.model');db[_0xf2d0('0x24')]=db[_0xf2d0('0x1')]['import'](_0xf2d0('0x25'));db[_0xf2d0('0x26')]=db['sequelize']['import'](_0xf2d0('0x27'));db['MemberReport']=db[_0xf2d0('0x1')]['import']('../api/memberReport/memberReport.model');db[_0xf2d0('0x28')]=db['sequelize']['import']('../api/trunk/trunk.model');db['VoiceTransferReport']=db[_0xf2d0('0x1')][_0xf2d0('0x14')]('../api/voiceTransferReport/voiceTransferReport.model');db[_0xf2d0('0x29')]=db[_0xf2d0('0x1')][_0xf2d0('0x14')](_0xf2d0('0x2a'));db[_0xf2d0('0x2b')]=db['sequelize'][_0xf2d0('0x14')]('../api/userVoiceQueue/userVoiceQueue.model');db['UserChatQueue']=db[_0xf2d0('0x1')][_0xf2d0('0x14')](_0xf2d0('0x2c'));db['UserMailQueue']=db[_0xf2d0('0x1')][_0xf2d0('0x14')](_0xf2d0('0x2d'));db[_0xf2d0('0x2e')]=db[_0xf2d0('0x1')][_0xf2d0('0x14')]('../api/userFaxQueue/userFaxQueue.model');db[_0xf2d0('0x2f')]=db[_0xf2d0('0x1')][_0xf2d0('0x14')](_0xf2d0('0x30'));db[_0xf2d0('0x31')]=db['sequelize'][_0xf2d0('0x14')](_0xf2d0('0x32'));db[_0xf2d0('0x33')]=db[_0xf2d0('0x1')][_0xf2d0('0x14')](_0xf2d0('0x34'));db['MailServerIn']=db[_0xf2d0('0x1')][_0xf2d0('0x14')](_0xf2d0('0x35'));db[_0xf2d0('0x36')]=db[_0xf2d0('0x1')][_0xf2d0('0x14')](_0xf2d0('0x37'));db['MailAccount']=db[_0xf2d0('0x1')][_0xf2d0('0x14')]('../api/mailAccount/mailAccount.model');db[_0xf2d0('0x38')]=db[_0xf2d0('0x1')]['import'](_0xf2d0('0x39'));db[_0xf2d0('0x3a')]=db[_0xf2d0('0x1')][_0xf2d0('0x14')]('../api/mailSubstatus/mailSubstatus.model');db['MailInteraction']=db['sequelize'][_0xf2d0('0x14')](_0xf2d0('0x3b'));db[_0xf2d0('0x3c')]=db['sequelize'][_0xf2d0('0x14')](_0xf2d0('0x3d'));db[_0xf2d0('0x3e')]=db['sequelize'][_0xf2d0('0x14')]('../api/mailApplication/mailApplication.model');db['MailQueueReport']=db['sequelize'][_0xf2d0('0x14')](_0xf2d0('0x3f'));db[_0xf2d0('0x40')]=db[_0xf2d0('0x1')][_0xf2d0('0x14')]('../api/dashboard/dashboard.model');db[_0xf2d0('0x41')]=db[_0xf2d0('0x1')][_0xf2d0('0x14')]('../api/dashboardItem/dashboardItem.model');db[_0xf2d0('0x42')]=db[_0xf2d0('0x1')][_0xf2d0('0x14')](_0xf2d0('0x43'));db['FaxApplication']=db['sequelize']['import'](_0xf2d0('0x44'));db[_0xf2d0('0x45')]=db['sequelize']['import'](_0xf2d0('0x46'));db[_0xf2d0('0x47')]=db[_0xf2d0('0x1')][_0xf2d0('0x14')]('../api/faxMessage/faxMessage.model');db[_0xf2d0('0x48')]=db['sequelize'][_0xf2d0('0x14')]('../api/faxQueue/faxQueue.model');db[_0xf2d0('0x49')]=db[_0xf2d0('0x1')][_0xf2d0('0x14')](_0xf2d0('0x4a'));db['SmsAccount']=db[_0xf2d0('0x1')][_0xf2d0('0x14')](_0xf2d0('0x4b'));db[_0xf2d0('0x4c')]=db['sequelize'][_0xf2d0('0x14')](_0xf2d0('0x4d'));db[_0xf2d0('0x4e')]=db[_0xf2d0('0x1')][_0xf2d0('0x14')](_0xf2d0('0x4f'));db[_0xf2d0('0x50')]=db[_0xf2d0('0x1')][_0xf2d0('0x14')](_0xf2d0('0x51'));db[_0xf2d0('0x52')]=db[_0xf2d0('0x1')][_0xf2d0('0x14')](_0xf2d0('0x53'));db['OpenchannelAccount']=db['sequelize'][_0xf2d0('0x14')](_0xf2d0('0x54'));db['OpenchannelApplication']=db[_0xf2d0('0x1')][_0xf2d0('0x14')]('../api/openchannelApplication/openchannelApplication.model');db['OpenchannelInteraction']=db['sequelize'][_0xf2d0('0x14')](_0xf2d0('0x55'));db[_0xf2d0('0x56')]=db[_0xf2d0('0x1')][_0xf2d0('0x14')](_0xf2d0('0x57'));db[_0xf2d0('0x58')]=db['sequelize'][_0xf2d0('0x14')](_0xf2d0('0x59'));db['ChatWebsite']=db['sequelize']['import'](_0xf2d0('0x5a'));db[_0xf2d0('0x5b')]=db[_0xf2d0('0x1')]['import'](_0xf2d0('0x5c'));db['ChatApplication']=db[_0xf2d0('0x1')][_0xf2d0('0x14')]('../api/chatApplication/chatApplication.model');db[_0xf2d0('0x5d')]=db[_0xf2d0('0x1')]['import']('../api/chatInteraction/chatInteraction.model');db[_0xf2d0('0x5e')]=db[_0xf2d0('0x1')][_0xf2d0('0x14')](_0xf2d0('0x5f'));db[_0xf2d0('0x60')]=db[_0xf2d0('0x1')][_0xf2d0('0x14')]('../api/chatOfflineMessage/chatOfflineMessage.model');db[_0xf2d0('0x61')]=db[_0xf2d0('0x1')]['import'](_0xf2d0('0x62'));db['ChatGroup']=db[_0xf2d0('0x1')][_0xf2d0('0x14')](_0xf2d0('0x63'));db[_0xf2d0('0x64')]=db['sequelize'][_0xf2d0('0x14')](_0xf2d0('0x65'));db['CmCompany']=db[_0xf2d0('0x1')][_0xf2d0('0x14')](_0xf2d0('0x66'));db['CmContact']=db['sequelize']['import']('../api/cmContact/cmContact.model');db[_0xf2d0('0x67')]=db[_0xf2d0('0x1')][_0xf2d0('0x14')]('../api/cmHopper/cmHopper.model');db[_0xf2d0('0x68')]=db[_0xf2d0('0x1')]['import']('../api/cmHopperBlack/cmHopperBlack.model');db[_0xf2d0('0x69')]=db['sequelize'][_0xf2d0('0x14')](_0xf2d0('0x6a'));db[_0xf2d0('0x6b')]=db[_0xf2d0('0x1')][_0xf2d0('0x14')](_0xf2d0('0x6c'));db['ReportAgentPreview']=db[_0xf2d0('0x1')][_0xf2d0('0x14')](_0xf2d0('0x6d'));db[_0xf2d0('0x6e')]=db[_0xf2d0('0x1')][_0xf2d0('0x14')]('../api/cmCustomField/cmCustomField.model');db[_0xf2d0('0x6f')]=db['sequelize'][_0xf2d0('0x14')](_0xf2d0('0x70'));db['Automation']=db['sequelize'][_0xf2d0('0x14')]('../api/automation/automation.model');db['CannedAnswer']=db[_0xf2d0('0x1')][_0xf2d0('0x14')](_0xf2d0('0x71'));db['Disposition']=db[_0xf2d0('0x1')]['import'](_0xf2d0('0x72'));db[_0xf2d0('0x73')]=db['sequelize']['import'](_0xf2d0('0x74'));db[_0xf2d0('0x75')]=db['sequelize'][_0xf2d0('0x14')](_0xf2d0('0x76'));db[_0xf2d0('0x77')]=db[_0xf2d0('0x1')][_0xf2d0('0x14')](_0xf2d0('0x78'));db[_0xf2d0('0x79')]=db['sequelize'][_0xf2d0('0x14')](_0xf2d0('0x7a'));db[_0xf2d0('0x7b')]=db[_0xf2d0('0x1')][_0xf2d0('0x14')](_0xf2d0('0x7c'));db[_0xf2d0('0x7d')]=db[_0xf2d0('0x1')][_0xf2d0('0x14')](_0xf2d0('0x7e'));db[_0xf2d0('0x7f')]=db[_0xf2d0('0x1')][_0xf2d0('0x14')]('../api/sound/sound.model');db[_0xf2d0('0x80')]=db[_0xf2d0('0x1')]['import'](_0xf2d0('0x81'));db[_0xf2d0('0x82')]=db[_0xf2d0('0x1')]['import'](_0xf2d0('0x83'));db['Trigger']=db[_0xf2d0('0x1')][_0xf2d0('0x14')](_0xf2d0('0x84'));db[_0xf2d0('0x85')]=db['sequelize'][_0xf2d0('0x14')](_0xf2d0('0x86'));db[_0xf2d0('0x87')]=db[_0xf2d0('0x1')][_0xf2d0('0x14')](_0xf2d0('0x88'));db[_0xf2d0('0x89')]=db[_0xf2d0('0x1')]['import']('../api/integrationReport/integrationReport.model');db[_0xf2d0('0x8a')]=db[_0xf2d0('0x1')][_0xf2d0('0x14')]('../api/analyticCustomReport/analyticCustomReport.model');db[_0xf2d0('0x8b')]=db[_0xf2d0('0x1')]['import']('../api/analyticDefaultReport/analyticDefaultReport.model');db['AnalyticExtractedReport']=db[_0xf2d0('0x1')][_0xf2d0('0x14')](_0xf2d0('0x8c'));db[_0xf2d0('0x8d')]=db[_0xf2d0('0x1')][_0xf2d0('0x14')]('../api/analyticMetric/analyticMetric.model');db[_0xf2d0('0x8e')]=db['sequelize'][_0xf2d0('0x14')](_0xf2d0('0x8f'));db[_0xf2d0('0x90')]=db[_0xf2d0('0x1')]['import'](_0xf2d0('0x91'));db['SalesforceAccount']=db[_0xf2d0('0x1')][_0xf2d0('0x14')](_0xf2d0('0x92'));db[_0xf2d0('0x93')]=db[_0xf2d0('0x1')][_0xf2d0('0x14')](_0xf2d0('0x94'));db[_0xf2d0('0x95')]=db[_0xf2d0('0x1')][_0xf2d0('0x14')](_0xf2d0('0x96'));db[_0xf2d0('0x97')]=db['sequelize'][_0xf2d0('0x14')](_0xf2d0('0x98'));db['SugarcrmConfiguration']=db[_0xf2d0('0x1')][_0xf2d0('0x14')](_0xf2d0('0x99'));db['SugarcrmField']=db['sequelize']['import'](_0xf2d0('0x9a'));db[_0xf2d0('0x9b')]=db['sequelize'][_0xf2d0('0x14')](_0xf2d0('0x9c'));db['DeskConfiguration']=db[_0xf2d0('0x1')]['import'](_0xf2d0('0x9d'));db['DeskField']=db[_0xf2d0('0x1')][_0xf2d0('0x14')](_0xf2d0('0x9e'));db[_0xf2d0('0x9f')]=db[_0xf2d0('0x1')][_0xf2d0('0x14')](_0xf2d0('0xa0'));db[_0xf2d0('0xa1')]=db[_0xf2d0('0x1')][_0xf2d0('0x14')]('../api/intZohoConfiguration/intZohoConfiguration.model');db[_0xf2d0('0xa2')]=db[_0xf2d0('0x1')][_0xf2d0('0x14')](_0xf2d0('0xa3'));db[_0xf2d0('0xa4')]=db[_0xf2d0('0x1')]['import']('../api/intZendeskAccount/intZendeskAccount.model');db[_0xf2d0('0xa5')]=db[_0xf2d0('0x1')][_0xf2d0('0x14')](_0xf2d0('0xa6'));db[_0xf2d0('0xa7')]=db[_0xf2d0('0x1')][_0xf2d0('0x14')]('../api/intZendeskField/intZendeskField.model');db['FreshdeskAccount']=db[_0xf2d0('0x1')][_0xf2d0('0x14')](_0xf2d0('0xa8'));db[_0xf2d0('0xa9')]=db[_0xf2d0('0x1')]['import'](_0xf2d0('0xaa'));db[_0xf2d0('0xab')]=db['sequelize'][_0xf2d0('0x14')]('../api/intFreshdeskField/intFreshdeskField.model');db[_0xf2d0('0xac')]=db[_0xf2d0('0x1')][_0xf2d0('0x14')](_0xf2d0('0xad'));db[_0xf2d0('0xae')]=db[_0xf2d0('0x1')][_0xf2d0('0x14')](_0xf2d0('0xaf'));db[_0xf2d0('0xb0')]=db[_0xf2d0('0x1')][_0xf2d0('0x14')](_0xf2d0('0xb1'));db[_0xf2d0('0xb2')]=db[_0xf2d0('0x1')][_0xf2d0('0x14')](_0xf2d0('0xb3'));db[_0xf2d0('0xb4')]=db['sequelize']['import']('../api/intServicenowConfiguration/intServicenowConfiguration.model');db[_0xf2d0('0xb5')]=db['sequelize'][_0xf2d0('0x14')](_0xf2d0('0xb6'));db[_0xf2d0('0xb7')]=db[_0xf2d0('0x1')][_0xf2d0('0x14')]('../api/intDynamics365Account/intDynamics365Account.model');db[_0xf2d0('0xb8')]=db[_0xf2d0('0x1')]['import']('../api/intDynamics365Configuration/intDynamics365Configuration.model');db[_0xf2d0('0xb9')]=db['sequelize']['import'](_0xf2d0('0xba'));db[_0xf2d0('0xbb')]=db[_0xf2d0('0x1')][_0xf2d0('0x14')](_0xf2d0('0xbc'));db[_0xf2d0('0xbd')]=db[_0xf2d0('0x1')][_0xf2d0('0x14')](_0xf2d0('0xbe'));db[_0xf2d0('0xbf')]=db[_0xf2d0('0x1')]['import'](_0xf2d0('0xc0'));db['Integration']=db[_0xf2d0('0x1')]['import'](_0xf2d0('0x88'));db[_0xf2d0('0xc1')]=db[_0xf2d0('0x1')]['import']('../api/network/network.model');db[_0xf2d0('0xc2')]=db[_0xf2d0('0x1')][_0xf2d0('0x14')](_0xf2d0('0xc3'));db[_0xf2d0('0xc4')]=db[_0xf2d0('0x1')][_0xf2d0('0x14')](_0xf2d0('0xc5'));db['JscriptyAnswerReport']=db[_0xf2d0('0x1')][_0xf2d0('0x14')](_0xf2d0('0xc6'));db[_0xf2d0('0xc7')]=db[_0xf2d0('0x1')][_0xf2d0('0x14')](_0xf2d0('0xc8'));db['JscriptySessionReport']=db[_0xf2d0('0x1')][_0xf2d0('0x14')](_0xf2d0('0xc9'));db['SmsQueueReport']=db[_0xf2d0('0x1')]['import']('../api/smsQueueReport/smsQueueReport.model');db[_0xf2d0('0xca')]=db[_0xf2d0('0x1')][_0xf2d0('0x14')](_0xf2d0('0xcb'));db[_0xf2d0('0xcc')]=db[_0xf2d0('0x1')][_0xf2d0('0x14')]('../api/squareReportDetail/squareReportDetail.model');db['JscriptyProject']=db['sequelize'][_0xf2d0('0x14')](_0xf2d0('0xcd'));db[_0xf2d0('0xce')]=db[_0xf2d0('0x1')]['import'](_0xf2d0('0xcf'));db[_0xf2d0('0xd0')]=db[_0xf2d0('0x1')][_0xf2d0('0x14')]('../api/squareOdbc/squareOdbc.model');db[_0xf2d0('0xd1')]=db[_0xf2d0('0x1')][_0xf2d0('0x14')](_0xf2d0('0xd2'));db[_0xf2d0('0xd3')]=db[_0xf2d0('0x1')][_0xf2d0('0x14')](_0xf2d0('0xd4'));db['SquareMessage']=db[_0xf2d0('0x1')][_0xf2d0('0x14')](_0xf2d0('0xd5'));db['Team']=db['sequelize'][_0xf2d0('0x14')](_0xf2d0('0xd6'));db[_0xf2d0('0xd7')]=db[_0xf2d0('0x1')][_0xf2d0('0x14')](_0xf2d0('0xd8'));db[_0xf2d0('0xd9')]=db[_0xf2d0('0x1')][_0xf2d0('0x14')](_0xf2d0('0xda'));db[_0xf2d0('0xdb')]=db['sequelize']['import']('../api/migration/migration.model');db[_0xf2d0('0xdc')]=db[_0xf2d0('0x1')]['import'](_0xf2d0('0xdd'));db['Plugin']=db['sequelize'][_0xf2d0('0x14')]('../api/plugin/plugin.model');db[_0xf2d0('0xde')]=db[_0xf2d0('0x1')]['import'](_0xf2d0('0xdf'));db['ChatTransferReport']=db[_0xf2d0('0x1')]['import'](_0xf2d0('0xe0'));db['FaxTransferReport']=db[_0xf2d0('0x1')][_0xf2d0('0x14')](_0xf2d0('0xe1'));db['OpenchannelTransferReport']=db[_0xf2d0('0x1')][_0xf2d0('0x14')](_0xf2d0('0xe2'));db[_0xf2d0('0xe3')]=db[_0xf2d0('0x1')]['import'](_0xf2d0('0xe4'));db[_0xf2d0('0xe5')]=db[_0xf2d0('0x1')][_0xf2d0('0x14')]('../api/cmList/cmList.model');db[_0xf2d0('0xe6')]=db[_0xf2d0('0x1')]['import'](_0xf2d0('0xe7'));db[_0xf2d0('0xe8')]=db[_0xf2d0('0x1')][_0xf2d0('0x14')](_0xf2d0('0xe9'));db[_0xf2d0('0xea')]=db['sequelize']['import'](_0xf2d0('0xeb'));db[_0xf2d0('0xec')]=db[_0xf2d0('0x1')][_0xf2d0('0x14')](_0xf2d0('0xed'));db[_0xf2d0('0xee')]=db[_0xf2d0('0x1')][_0xf2d0('0x14')](_0xf2d0('0xef'));db[_0xf2d0('0xf0')]=db[_0xf2d0('0x1')][_0xf2d0('0x14')](_0xf2d0('0xf1'));db[_0xf2d0('0xf2')]=db['sequelize'][_0xf2d0('0x14')](_0xf2d0('0xf3'));db[_0xf2d0('0xf4')]=db['sequelize'][_0xf2d0('0x14')]('../api/whatsappInteraction/whatsappInteraction.model');db['WhatsappMessage']=db['sequelize'][_0xf2d0('0x14')](_0xf2d0('0xf5'));db['WhatsappQueueReport']=db[_0xf2d0('0x1')][_0xf2d0('0x14')](_0xf2d0('0xf6'));db[_0xf2d0('0xf7')]=db[_0xf2d0('0x1')][_0xf2d0('0x14')](_0xf2d0('0xf8'));db[_0xf2d0('0xf9')]=db[_0xf2d0('0x1')][_0xf2d0('0x14')](_0xf2d0('0xfa'));db['CloudProvider']=db[_0xf2d0('0x1')][_0xf2d0('0x14')](_0xf2d0('0xfb'));db[_0xf2d0('0xfc')]=db[_0xf2d0('0x1')][_0xf2d0('0x14')](_0xf2d0('0xfd'));db[_0xf2d0('0xfe')]=db['sequelize']['import'](_0xf2d0('0xff'));db[_0xf2d0('0x100')]=db[_0xf2d0('0x1')][_0xf2d0('0x14')]('../api/userVoicePrefix/userVoicePrefix.model');db[_0xf2d0('0x11')][_0xf2d0('0x101')](db[_0xf2d0('0x20')],{'as':'VoiceMail','onDelete':_0xf2d0('0x102'),'foreignKey':'UserId'});db['User'][_0xf2d0('0x103')](db[_0xf2d0('0x1c')],{'as':_0xf2d0('0x104'),'foreignKey':_0xf2d0('0x105')});db[_0xf2d0('0x11')][_0xf2d0('0x103')](db[_0xf2d0('0x29')],{'as':_0xf2d0('0x106'),'foreignKey':_0xf2d0('0x105')});db[_0xf2d0('0x11')][_0xf2d0('0x103')](db[_0xf2d0('0x18')],{'as':_0xf2d0('0x107'),'onDelete':_0xf2d0('0x102'),'hooks':!![]});db['User'][_0xf2d0('0x103')](db[_0xf2d0('0x69')],{'as':_0xf2d0('0x108'),'foreignKey':_0xf2d0('0x105')});db['User'][_0xf2d0('0x103')](db[_0xf2d0('0x6b')],{'as':'HopperHistory','foreignKey':_0xf2d0('0x105')});db[_0xf2d0('0x11')][_0xf2d0('0x103')](db['ReportAgentPreview'],{'as':_0xf2d0('0x109'),'foreignKey':_0xf2d0('0x105')});db[_0xf2d0('0x11')][_0xf2d0('0x103')](db[_0xf2d0('0x10a')],{'as':_0xf2d0('0x10b'),'foreignKey':'UserId'});db['User']['hasMany'](db['ChatInteraction'],{'as':'ChatInteractions','foreignKey':'UserId'});db[_0xf2d0('0x11')][_0xf2d0('0x103')](db[_0xf2d0('0x4e')],{'as':'SmsInteractions','foreignKey':'UserId'});db[_0xf2d0('0x11')]['hasMany'](db['FaxInteraction'],{'as':'FaxInteractions','foreignKey':_0xf2d0('0x105')});db[_0xf2d0('0x11')][_0xf2d0('0x103')](db['MailInteraction'],{'as':_0xf2d0('0x10c'),'foreignKey':_0xf2d0('0x105')});db[_0xf2d0('0x11')][_0xf2d0('0x103')](db['WhatsappInteraction'],{'as':'WhatsappInteractions','foreignKey':'UserId'});db[_0xf2d0('0x11')][_0xf2d0('0x103')](db[_0xf2d0('0xee')],{'as':'UserNotifications','foreignKey':'SenderId'});db['User']['belongsTo'](db['UserProfile'],{'as':_0xf2d0('0xe8'),'foreignKey':_0xf2d0('0x10d')});db[_0xf2d0('0x11')][_0xf2d0('0x10e')](db[_0xf2d0('0x10f')],{'as':'Groups','through':_0xf2d0('0x110')});db[_0xf2d0('0x11')][_0xf2d0('0x10e')](db[_0xf2d0('0x111')],{'as':_0xf2d0('0x112'),'through':_0xf2d0('0x113')});db[_0xf2d0('0x11')][_0xf2d0('0x10e')](db['CmList'],{'as':_0xf2d0('0x114'),'through':_0xf2d0('0x115')});db[_0xf2d0('0x11')]['belongsToMany'](db['Team'],{'through':_0xf2d0('0x116')});db[_0xf2d0('0x11')]['belongsToMany'](db[_0xf2d0('0x117')],{'as':_0xf2d0('0x10c'),'through':_0xf2d0('0x118')});db['User'][_0xf2d0('0x10e')](db[_0xf2d0('0x5d')],{'as':_0xf2d0('0x119'),'through':_0xf2d0('0x11a')});db['User'][_0xf2d0('0x10e')](db[_0xf2d0('0x45')],{'as':_0xf2d0('0x11b'),'through':_0xf2d0('0x11c')});db[_0xf2d0('0x11')]['belongsToMany'](db[_0xf2d0('0x4e')],{'as':_0xf2d0('0x11d'),'through':'user_has_sms_interactions'});db[_0xf2d0('0x11')][_0xf2d0('0x10e')](db[_0xf2d0('0x10a')],{'as':_0xf2d0('0x10b'),'through':_0xf2d0('0x11e')});db[_0xf2d0('0x11')][_0xf2d0('0x10e')](db['WhatsappInteraction'],{'as':_0xf2d0('0x11f'),'through':_0xf2d0('0x120')});db[_0xf2d0('0x11')][_0xf2d0('0x10e')](db[_0xf2d0('0x1a')],{'as':_0xf2d0('0x121'),'through':_0xf2d0('0x2b'),'required':![]});db[_0xf2d0('0x11')]['belongsToMany'](db[_0xf2d0('0xe6')],{'as':'VoicePrefixes','through':'UserVoicePrefix','required':![]});db['User'][_0xf2d0('0x10e')](db['MailQueue'],{'as':_0xf2d0('0x122'),'through':_0xf2d0('0x123'),'required':![]});db[_0xf2d0('0x11')]['belongsToMany'](db[_0xf2d0('0x61')],{'as':_0xf2d0('0x124'),'through':_0xf2d0('0x125'),'required':![],'hooks':!![]});db[_0xf2d0('0x11')][_0xf2d0('0x10e')](db[_0xf2d0('0x48')],{'as':_0xf2d0('0x126'),'through':_0xf2d0('0x2e'),'required':![]});db[_0xf2d0('0x11')][_0xf2d0('0x10e')](db[_0xf2d0('0x52')],{'as':_0xf2d0('0x127'),'through':'UserSmsQueue','required':![]});db[_0xf2d0('0x11')]['belongsToMany'](db[_0xf2d0('0x58')],{'as':_0xf2d0('0x128'),'through':_0xf2d0('0x31'),'required':![]});db[_0xf2d0('0x11')][_0xf2d0('0x10e')](db[_0xf2d0('0xf9')],{'as':_0xf2d0('0x129'),'through':'UserWhatsappQueue','required':![]});db[_0xf2d0('0x11')][_0xf2d0('0x10e')](db['CmList'],{'through':'cm_user_has_lists'});db[_0xf2d0('0x11')][_0xf2d0('0x10e')](db[_0xf2d0('0x12a')],{'as':_0xf2d0('0x12b'),'through':_0xf2d0('0x12c')});db[_0xf2d0('0x11')]['belongsToMany'](db[_0xf2d0('0x42')],{'as':_0xf2d0('0x12d'),'through':_0xf2d0('0x12e')});db[_0xf2d0('0x11')][_0xf2d0('0x10e')](db['MailAccount'],{'as':'MailAccounts','through':_0xf2d0('0x12f')});db[_0xf2d0('0x11')]['belongsToMany'](db[_0xf2d0('0x130')],{'as':_0xf2d0('0x131'),'through':_0xf2d0('0x132')});db['User'][_0xf2d0('0x10e')](db[_0xf2d0('0x133')],{'as':_0xf2d0('0x134'),'through':_0xf2d0('0x135')});db[_0xf2d0('0x11')]['belongsToMany'](db[_0xf2d0('0xf0')],{'as':'WhatsappAccounts','through':'user_has_whatsapp_accounts'});db['User'][_0xf2d0('0x10e')](db[_0xf2d0('0xd1')],{'as':_0xf2d0('0x136'),'through':_0xf2d0('0x137')});db[_0xf2d0('0x13')][_0xf2d0('0x103')](db[_0xf2d0('0x18')],{'as':_0xf2d0('0x138'),'onDelete':_0xf2d0('0x102'),'foreignKey':'ChanSpyId'});db['VoiceContext'][_0xf2d0('0x103')](db['VoiceExtension'],{'onDelete':'cascade'});db[_0xf2d0('0x18')][_0xf2d0('0x103')](db['VoiceExtension'],{'as':_0xf2d0('0x139'),'onDelete':'cascade'});db[_0xf2d0('0x19')]['belongsToMany'](db[_0xf2d0('0x7f')],{'as':'Sounds','through':_0xf2d0('0x13a')});db[_0xf2d0('0x1a')][_0xf2d0('0x103')](db[_0xf2d0('0x29')],{'as':_0xf2d0('0x13b'),'foreignKey':'VoiceQueueId'});db[_0xf2d0('0x1a')]['hasMany'](db['CmHopper'],{'as':_0xf2d0('0x13c'),'foreignKey':_0xf2d0('0x13d')});db[_0xf2d0('0x1a')][_0xf2d0('0x103')](db[_0xf2d0('0x69')],{'as':_0xf2d0('0x108'),'foreignKey':'VoiceQueueId'});db[_0xf2d0('0x1a')][_0xf2d0('0x103')](db[_0xf2d0('0x6b')],{'as':'HopperHistories','foreignKey':_0xf2d0('0x13d')});db[_0xf2d0('0x1a')][_0xf2d0('0x103')](db[_0xf2d0('0x109')],{'as':'ReportAgentPreview','foreignKey':_0xf2d0('0x13d')});db[_0xf2d0('0x1a')][_0xf2d0('0x103')](db[_0xf2d0('0x68')],{'as':'HopperBlacks','foreignKey':'VoiceQueueId'});db[_0xf2d0('0x1a')]['hasMany'](db['JscriptySessionReport'],{'as':'JscriptySessions','foreignKey':_0xf2d0('0x13d')});db[_0xf2d0('0x1a')][_0xf2d0('0x13e')](db[_0xf2d0('0x28')],{'as':'Trunk','foreignKey':_0xf2d0('0x13f')});db['VoiceQueue'][_0xf2d0('0x13e')](db[_0xf2d0('0x28')],{'as':_0xf2d0('0x140'),'foreignKey':_0xf2d0('0x141')});db[_0xf2d0('0x1a')][_0xf2d0('0x13e')](db[_0xf2d0('0x75')],{'as':_0xf2d0('0x75'),'foreignKey':_0xf2d0('0x142')});db['VoiceQueue'][_0xf2d0('0x13e')](db[_0xf2d0('0x77')],{'as':_0xf2d0('0x143'),'foreignKey':_0xf2d0('0x144')});db['VoiceQueue'][_0xf2d0('0x10e')](db['CmList'],{'as':_0xf2d0('0x114'),'through':_0xf2d0('0x145')});db['VoiceQueue'][_0xf2d0('0x10e')](db[_0xf2d0('0x11')],{'as':'Agents','through':'UserVoiceQueue'});db['VoiceQueue']['belongsToMany'](db[_0xf2d0('0x146')],{'as':'Teams','through':_0xf2d0('0xfc')});db[_0xf2d0('0x1a')]['belongsToMany'](db[_0xf2d0('0xe5')],{'as':'BlackLists','through':_0xf2d0('0x147')});db[_0xf2d0('0x1c')][_0xf2d0('0x13e')](db[_0xf2d0('0x11')],{'as':'User','foreignKey':_0xf2d0('0x105')});db['ScreenRecording'][_0xf2d0('0x13e')](db['User'],{'as':'User','foreignKey':_0xf2d0('0x105')});db[_0xf2d0('0x20')][_0xf2d0('0x103')](db[_0xf2d0('0x148')],{'as':_0xf2d0('0x149'),'onDelete':'cascade','foreignKey':_0xf2d0('0x14a'),'sourceKey':_0xf2d0('0x14b')});db[_0xf2d0('0x148')][_0xf2d0('0x13e')](db[_0xf2d0('0x20')],{'foreignKey':_0xf2d0('0x14a'),'targetKey':_0xf2d0('0x14b')});db[_0xf2d0('0x14c')]['hasMany'](db[_0xf2d0('0x26')],{'as':_0xf2d0('0x14d'),'foreignKey':'uniqueid','constraints':![]});db[_0xf2d0('0x14c')][_0xf2d0('0x103')](db[_0xf2d0('0x24')],{'as':_0xf2d0('0x14e'),'foreignKey':_0xf2d0('0x14f'),'constraints':![]});db['VoiceCallReport']['belongsTo'](db['User'],{'as':_0xf2d0('0x11'),'foreignKey':_0xf2d0('0x105')});db[_0xf2d0('0x14c')][_0xf2d0('0x13e')](db[_0xf2d0('0x111')],{'as':_0xf2d0('0x150'),'foreignKey':_0xf2d0('0x151')});db[_0xf2d0('0x152')][_0xf2d0('0x13e')](db['MailAccount'],{'as':'MailAccount','foreignKey':_0xf2d0('0x153')});db[_0xf2d0('0x36')][_0xf2d0('0x13e')](db[_0xf2d0('0x154')],{'as':'MailAccount','foreignKey':_0xf2d0('0x153')});db[_0xf2d0('0x154')][_0xf2d0('0x101')](db[_0xf2d0('0x152')],{'as':_0xf2d0('0x155'),'onDelete':_0xf2d0('0x102')});db[_0xf2d0('0x154')][_0xf2d0('0x101')](db[_0xf2d0('0x36')],{'as':_0xf2d0('0x156'),'onDelete':_0xf2d0('0x102')});db[_0xf2d0('0x154')][_0xf2d0('0x103')](db[_0xf2d0('0x157')],{'as':_0xf2d0('0x158'),'foreignKey':_0xf2d0('0x153'),'onDelete':_0xf2d0('0x102')});db[_0xf2d0('0x154')][_0xf2d0('0x103')](db['CannedAnswer'],{'as':_0xf2d0('0x159'),'foreignKey':_0xf2d0('0x153')});db['MailAccount']['hasMany'](db[_0xf2d0('0x3c')],{'as':_0xf2d0('0x149'),'foreignKey':_0xf2d0('0x153')});db['MailAccount']['hasMany'](db[_0xf2d0('0x117')],{'as':_0xf2d0('0x15a')});db[_0xf2d0('0x154')]['hasMany'](db['MailApplication'],{'as':'Applications'});db['MailAccount'][_0xf2d0('0x13e')](db[_0xf2d0('0xe5')],{'as':_0xf2d0('0x15b'),'foreignKey':_0xf2d0('0x15c')});db[_0xf2d0('0x154')][_0xf2d0('0x13e')](db['Template'],{'as':_0xf2d0('0x82'),'foreignKey':_0xf2d0('0x15d')});db[_0xf2d0('0x154')][_0xf2d0('0x13e')](db[_0xf2d0('0x77')],{'as':_0xf2d0('0x143'),'foreignKey':_0xf2d0('0x144')});db[_0xf2d0('0x154')][_0xf2d0('0x10e')](db[_0xf2d0('0x11')],{'as':'Agents','through':_0xf2d0('0x12f')});db[_0xf2d0('0x38')][_0xf2d0('0x10e')](db[_0xf2d0('0x11')],{'as':'Agents','through':_0xf2d0('0x123')});db['MailQueue'][_0xf2d0('0x10e')](db[_0xf2d0('0x146')],{'through':_0xf2d0('0x15e'),'as':_0xf2d0('0x15f')});db[_0xf2d0('0x117')][_0xf2d0('0x103')](db['MailMessage'],{'as':'Messages','onDelete':_0xf2d0('0x102'),'foreignKey':_0xf2d0('0x160')});db['MailInteraction'][_0xf2d0('0x13e')](db[_0xf2d0('0x154')],{'as':_0xf2d0('0x161'),'foreignKey':_0xf2d0('0x153')});db[_0xf2d0('0x117')][_0xf2d0('0x13e')](db[_0xf2d0('0x111')],{'as':_0xf2d0('0x150'),'foreignKey':_0xf2d0('0x151')});db['MailInteraction'][_0xf2d0('0x13e')](db[_0xf2d0('0x11')],{'as':_0xf2d0('0x162'),'foreignKey':_0xf2d0('0x105')});db[_0xf2d0('0x117')][_0xf2d0('0x10e')](db[_0xf2d0('0x80')],{'through':_0xf2d0('0x163'),'as':_0xf2d0('0x164')});db['MailInteraction'][_0xf2d0('0x10e')](db[_0xf2d0('0x80')],{'through':_0xf2d0('0x163'),'as':'ThroughTags'});db['MailInteraction'][_0xf2d0('0x10e')](db['User'],{'as':_0xf2d0('0x165'),'through':'user_has_mail_interactions','foreignKey':_0xf2d0('0x160')});db[_0xf2d0('0x3c')][_0xf2d0('0x103')](db[_0xf2d0('0xdc')],{'as':_0xf2d0('0x166'),'onDelete':_0xf2d0('0x102')});db[_0xf2d0('0x3c')][_0xf2d0('0x13e')](db[_0xf2d0('0x11')],{'as':_0xf2d0('0x11')});db['MailMessage'][_0xf2d0('0x13e')](db['CmContact'],{'onDelete':'cascade','as':_0xf2d0('0x150')});db[_0xf2d0('0x3c')]['belongsTo'](db[_0xf2d0('0x117')],{'as':_0xf2d0('0x167'),'foreignKey':_0xf2d0('0x160')});db['MailMessage'][_0xf2d0('0x13e')](db['MailAccount'],{'as':_0xf2d0('0x161'),'foreignKey':_0xf2d0('0x153')});db[_0xf2d0('0x3c')][_0xf2d0('0x13e')](db[_0xf2d0('0x12a')],{'as':_0xf2d0('0x12a'),'foreignKey':_0xf2d0('0x168')});db['MailMessage'][_0xf2d0('0x13e')](db[_0xf2d0('0x60')],{'as':_0xf2d0('0x60'),'foreignKey':_0xf2d0('0x169')});db[_0xf2d0('0x3e')][_0xf2d0('0x13e')](db[_0xf2d0('0x11')],{'onDelete':_0xf2d0('0x16a')});db[_0xf2d0('0x3e')]['belongsTo'](db[_0xf2d0('0x38')],{'onDelete':_0xf2d0('0x16a')});db['MailApplication'][_0xf2d0('0x13e')](db[_0xf2d0('0x154')],{'onDelete':'restrict'});db[_0xf2d0('0x3e')][_0xf2d0('0x13e')](db['Interval'],{'onDelete':'restrict','foreignKey':_0xf2d0('0x142')});db[_0xf2d0('0x3e')][_0xf2d0('0x13e')](db['Tag'],{'onDelete':_0xf2d0('0x16a'),'foreignKey':'TagId'});db[_0xf2d0('0x16b')][_0xf2d0('0x13e')](db[_0xf2d0('0x154')],{});db['MailQueueReport'][_0xf2d0('0x13e')](db[_0xf2d0('0xe5')],{'as':'List','foreignKey':_0xf2d0('0x15c')});db[_0xf2d0('0x16b')][_0xf2d0('0x13e')](db[_0xf2d0('0x111')],{'as':_0xf2d0('0x150'),'foreignKey':_0xf2d0('0x151')});db['MailQueueReport']['belongsTo'](db['MailInteraction'],{});db[_0xf2d0('0x16b')][_0xf2d0('0x13e')](db[_0xf2d0('0x3c')],{});db['MailQueueReport']['belongsTo'](db[_0xf2d0('0x11')],{});db['MailQueueReport'][_0xf2d0('0x13e')](db[_0xf2d0('0x38')],{});db[_0xf2d0('0x40')]['hasMany'](db[_0xf2d0('0x41')],{'as':_0xf2d0('0x16c'),'onDelete':_0xf2d0('0x102')});db['FaxAccount'][_0xf2d0('0x103')](db[_0xf2d0('0x157')],{'as':_0xf2d0('0x158'),'foreignKey':'FaxAccountId','onDelete':_0xf2d0('0x102')});db[_0xf2d0('0x42')]['hasMany'](db[_0xf2d0('0x16d')],{'as':'Answers','foreignKey':'FaxAccountId'});db['FaxAccount'][_0xf2d0('0x103')](db['FaxInteraction'],{'as':_0xf2d0('0x15a')});db[_0xf2d0('0x42')][_0xf2d0('0x103')](db[_0xf2d0('0x16e')],{'as':_0xf2d0('0x139')});db['FaxAccount'][_0xf2d0('0x103')](db['VoiceExtension'],{'as':_0xf2d0('0x16f'),'onDelete':'cascade'});db[_0xf2d0('0x42')]['hasMany'](db[_0xf2d0('0x47')],{'as':_0xf2d0('0x149')});db[_0xf2d0('0x42')][_0xf2d0('0x13e')](db['Trunk'],{'as':'Trunk'});db[_0xf2d0('0x42')][_0xf2d0('0x13e')](db['CmList'],{'as':_0xf2d0('0x15b'),'foreignKey':_0xf2d0('0x15c')});db[_0xf2d0('0x42')][_0xf2d0('0x13e')](db['Pause'],{'as':'mandatoryDispositionPause','foreignKey':_0xf2d0('0x144')});db[_0xf2d0('0x42')][_0xf2d0('0x10e')](db[_0xf2d0('0x11')],{'as':_0xf2d0('0x170'),'through':_0xf2d0('0x12e')});db[_0xf2d0('0x16e')][_0xf2d0('0x13e')](db[_0xf2d0('0x11')],{'onDelete':_0xf2d0('0x16a')});db[_0xf2d0('0x16e')]['belongsTo'](db['FaxQueue'],{'onDelete':_0xf2d0('0x16a')});db[_0xf2d0('0x16e')][_0xf2d0('0x13e')](db[_0xf2d0('0x42')],{'onDelete':_0xf2d0('0x16a')});db['FaxApplication'][_0xf2d0('0x13e')](db['Tag'],{'onDelete':_0xf2d0('0x16a'),'foreignKey':_0xf2d0('0x171')});db[_0xf2d0('0x45')][_0xf2d0('0x103')](db[_0xf2d0('0x47')],{'as':'Messages','onDelete':_0xf2d0('0x102'),'foreignKey':_0xf2d0('0x172')});db[_0xf2d0('0x45')][_0xf2d0('0x13e')](db[_0xf2d0('0x42')],{'as':_0xf2d0('0x161'),'foreignKey':_0xf2d0('0x173')});db[_0xf2d0('0x45')][_0xf2d0('0x13e')](db[_0xf2d0('0x111')],{'as':_0xf2d0('0x150'),'foreignKey':'ContactId'});db[_0xf2d0('0x45')][_0xf2d0('0x13e')](db['User'],{'as':'Owner','foreignKey':_0xf2d0('0x105')});db[_0xf2d0('0x45')]['belongsToMany'](db[_0xf2d0('0x80')],{'through':'fax_interaction_has_tags','as':'Tags'});db['FaxInteraction'][_0xf2d0('0x10e')](db[_0xf2d0('0x80')],{'through':'fax_interaction_has_tags','as':_0xf2d0('0x174')});db['FaxInteraction'][_0xf2d0('0x10e')](db[_0xf2d0('0x11')],{'as':_0xf2d0('0x165'),'through':_0xf2d0('0x11c'),'foreignKey':'FaxInteractionId'});db[_0xf2d0('0x47')][_0xf2d0('0x13e')](db[_0xf2d0('0x11')],{'onDelete':_0xf2d0('0x102'),'as':_0xf2d0('0x11')});db['FaxMessage']['belongsTo'](db[_0xf2d0('0x45')],{'as':'Interaction','foreignKey':_0xf2d0('0x172')});db[_0xf2d0('0x47')][_0xf2d0('0x13e')](db['CmContact'],{'onDelete':'cascade','as':_0xf2d0('0x150')});db[_0xf2d0('0x47')]['belongsTo'](db[_0xf2d0('0xdc')],{'as':_0xf2d0('0xdc'),'foreignKey':_0xf2d0('0x175')});db[_0xf2d0('0x47')]['belongsTo'](db[_0xf2d0('0x42')],{'as':_0xf2d0('0x161'),'foreignKey':_0xf2d0('0x173')});db['FaxQueue'][_0xf2d0('0x10e')](db['User'],{'as':_0xf2d0('0x170'),'through':'UserFaxQueue'});db[_0xf2d0('0x48')][_0xf2d0('0x10e')](db['Team'],{'through':_0xf2d0('0x176'),'as':_0xf2d0('0x15f')});db['FaxQueueReport']['belongsTo'](db[_0xf2d0('0x42')],{});db[_0xf2d0('0x49')]['belongsTo'](db[_0xf2d0('0xe5')],{'as':_0xf2d0('0x15b'),'foreignKey':_0xf2d0('0x15c')});db['FaxQueueReport']['belongsTo'](db[_0xf2d0('0x111')],{'as':_0xf2d0('0x150'),'foreignKey':_0xf2d0('0x151')});db[_0xf2d0('0x49')]['belongsTo'](db[_0xf2d0('0x45')],{});db['FaxQueueReport']['belongsTo'](db[_0xf2d0('0x47')],{});db[_0xf2d0('0x49')][_0xf2d0('0x13e')](db[_0xf2d0('0x11')],{});db['FaxQueueReport'][_0xf2d0('0x13e')](db['FaxQueue'],{});db[_0xf2d0('0x133')]['hasMany'](db[_0xf2d0('0x157')],{'as':_0xf2d0('0x158'),'foreignKey':_0xf2d0('0x177'),'onDelete':_0xf2d0('0x102')});db[_0xf2d0('0x133')]['hasMany'](db[_0xf2d0('0x16d')],{'as':_0xf2d0('0x159'),'foreignKey':_0xf2d0('0x177')});db['SmsAccount'][_0xf2d0('0x103')](db[_0xf2d0('0x50')],{'as':_0xf2d0('0x149'),'foreignKey':'SmsAccountId'});db[_0xf2d0('0x133')][_0xf2d0('0x103')](db['SmsInteraction'],{'as':_0xf2d0('0x15a')});db[_0xf2d0('0x133')][_0xf2d0('0x103')](db[_0xf2d0('0x4c')],{'as':'Applications'});db[_0xf2d0('0x133')][_0xf2d0('0x13e')](db[_0xf2d0('0xe5')],{'as':_0xf2d0('0x15b'),'foreignKey':_0xf2d0('0x15c')});db[_0xf2d0('0x133')][_0xf2d0('0x13e')](db[_0xf2d0('0x77')],{'as':_0xf2d0('0x143'),'foreignKey':_0xf2d0('0x144')});db[_0xf2d0('0x133')][_0xf2d0('0x10e')](db['User'],{'as':_0xf2d0('0x170'),'through':'user_has_sms_accounts'});db[_0xf2d0('0x4c')][_0xf2d0('0x13e')](db[_0xf2d0('0x11')],{'onDelete':_0xf2d0('0x16a')});db[_0xf2d0('0x4c')][_0xf2d0('0x13e')](db[_0xf2d0('0x52')],{'onDelete':'restrict'});db[_0xf2d0('0x4c')][_0xf2d0('0x13e')](db[_0xf2d0('0x133')],{'onDelete':_0xf2d0('0x16a')});db['SmsApplication'][_0xf2d0('0x13e')](db[_0xf2d0('0x75')],{'onDelete':_0xf2d0('0x16a'),'foreignKey':'IntervalId'});db[_0xf2d0('0x4c')][_0xf2d0('0x13e')](db['Tag'],{'onDelete':_0xf2d0('0x16a'),'foreignKey':'TagId'});db[_0xf2d0('0x4e')][_0xf2d0('0x103')](db[_0xf2d0('0x50')],{'as':_0xf2d0('0x149'),'onDelete':_0xf2d0('0x102'),'foreignKey':'SmsInteractionId'});db[_0xf2d0('0x4e')][_0xf2d0('0x13e')](db['SmsAccount'],{'as':'Account','foreignKey':_0xf2d0('0x177')});db[_0xf2d0('0x4e')][_0xf2d0('0x13e')](db[_0xf2d0('0x111')],{'as':_0xf2d0('0x150'),'foreignKey':'ContactId'});db[_0xf2d0('0x4e')]['belongsTo'](db['User'],{'as':_0xf2d0('0x162'),'foreignKey':_0xf2d0('0x105')});db[_0xf2d0('0x4e')]['belongsToMany'](db[_0xf2d0('0x80')],{'through':'sms_interaction_has_tags','as':_0xf2d0('0x164')});db[_0xf2d0('0x4e')][_0xf2d0('0x10e')](db['Tag'],{'through':_0xf2d0('0x178'),'as':_0xf2d0('0x174')});db[_0xf2d0('0x4e')][_0xf2d0('0x10e')](db[_0xf2d0('0x11')],{'as':_0xf2d0('0x165'),'through':_0xf2d0('0x179'),'foreignKey':_0xf2d0('0x17a')});db[_0xf2d0('0x50')][_0xf2d0('0x13e')](db[_0xf2d0('0x11')],{'as':_0xf2d0('0x11')});db['SmsMessage']['belongsTo'](db['CmContact'],{'onDelete':_0xf2d0('0x102'),'as':'Contact'});db[_0xf2d0('0x50')][_0xf2d0('0x13e')](db[_0xf2d0('0x4e')],{'onDelete':_0xf2d0('0x102'),'as':_0xf2d0('0x167'),'foreignKey':_0xf2d0('0x17a')});db['SmsMessage'][_0xf2d0('0x13e')](db[_0xf2d0('0x133')],{'as':_0xf2d0('0x161'),'foreignKey':'SmsAccountId'});db['SmsQueue'][_0xf2d0('0x10e')](db[_0xf2d0('0x11')],{'as':_0xf2d0('0x170'),'through':'UserSmsQueue','foreignKey':'SmsQueueId'});db['SmsQueue'][_0xf2d0('0x10e')](db[_0xf2d0('0x146')],{'through':_0xf2d0('0x17b'),'as':_0xf2d0('0x15f')});db[_0xf2d0('0x130')][_0xf2d0('0x103')](db[_0xf2d0('0x157')],{'as':_0xf2d0('0x158'),'foreignKey':'OpenchannelAccountId','onDelete':_0xf2d0('0x102')});db[_0xf2d0('0x130')][_0xf2d0('0x103')](db[_0xf2d0('0x16d')],{'as':_0xf2d0('0x159'),'foreignKey':_0xf2d0('0x17c')});db['OpenchannelAccount'][_0xf2d0('0x103')](db['OpenchannelInteraction'],{'as':_0xf2d0('0x15a'),'foreignKey':'OpenchannelAccountId'});db['OpenchannelAccount']['hasMany'](db['OpenchannelMessage'],{'as':_0xf2d0('0x149'),'foreignKey':'OpenchannelAccountId'});db[_0xf2d0('0x130')][_0xf2d0('0x103')](db['OpenchannelApplication'],{'as':_0xf2d0('0x139'),'foreignKey':'OpenchannelAccountId'});db['OpenchannelAccount'][_0xf2d0('0x13e')](db[_0xf2d0('0xe5')],{'as':_0xf2d0('0x15b'),'foreignKey':'ListId'});db['OpenchannelAccount']['belongsTo'](db['Pause'],{'as':_0xf2d0('0x143'),'foreignKey':_0xf2d0('0x144')});db[_0xf2d0('0x130')][_0xf2d0('0x10e')](db['User'],{'as':_0xf2d0('0x170'),'through':_0xf2d0('0x132')});db[_0xf2d0('0x17d')]['belongsTo'](db[_0xf2d0('0x11')],{'onDelete':_0xf2d0('0x16a')});db[_0xf2d0('0x17d')][_0xf2d0('0x13e')](db[_0xf2d0('0x58')],{'onDelete':_0xf2d0('0x16a'),'foreignKey':_0xf2d0('0x17e')});db['OpenchannelApplication'][_0xf2d0('0x13e')](db[_0xf2d0('0x130')],{'onDelete':_0xf2d0('0x16a'),'foreignKey':_0xf2d0('0x17c')});db[_0xf2d0('0x17d')]['belongsTo'](db[_0xf2d0('0x75')],{'onDelete':_0xf2d0('0x16a'),'foreignKey':_0xf2d0('0x142')});db[_0xf2d0('0x17d')][_0xf2d0('0x13e')](db[_0xf2d0('0x80')],{'onDelete':_0xf2d0('0x16a'),'foreignKey':'TagId'});db[_0xf2d0('0x10a')][_0xf2d0('0x103')](db['OpenchannelMessage'],{'as':_0xf2d0('0x149'),'onDelete':'cascade','foreignKey':_0xf2d0('0x17f')});db['OpenchannelInteraction']['belongsTo'](db[_0xf2d0('0x130')],{'as':_0xf2d0('0x161'),'foreignKey':_0xf2d0('0x17c')});db['OpenchannelInteraction'][_0xf2d0('0x13e')](db[_0xf2d0('0x111')],{'as':'Contact','foreignKey':_0xf2d0('0x151')});db[_0xf2d0('0x10a')][_0xf2d0('0x13e')](db['User'],{'as':'Owner','foreignKey':_0xf2d0('0x105')});db[_0xf2d0('0x10a')]['belongsToMany'](db[_0xf2d0('0x80')],{'through':'openchannel_interaction_has_tags','as':_0xf2d0('0x164')});db['OpenchannelInteraction'][_0xf2d0('0x10e')](db['Tag'],{'through':_0xf2d0('0x180'),'as':_0xf2d0('0x174')});db[_0xf2d0('0x10a')][_0xf2d0('0x10e')](db[_0xf2d0('0x11')],{'as':_0xf2d0('0x165'),'through':_0xf2d0('0x11e'),'foreignKey':_0xf2d0('0x17f')});db[_0xf2d0('0x56')][_0xf2d0('0x13e')](db[_0xf2d0('0x11')],{'onDelete':'cascade','as':_0xf2d0('0x11')});db['OpenchannelMessage']['belongsTo'](db[_0xf2d0('0x111')],{'onDelete':_0xf2d0('0x102'),'as':'Contact'});db[_0xf2d0('0x56')][_0xf2d0('0x13e')](db[_0xf2d0('0x10a')],{'onDelete':'cascade','as':_0xf2d0('0x167'),'foreignKey':'OpenchannelInteractionId'});db[_0xf2d0('0x56')][_0xf2d0('0x13e')](db[_0xf2d0('0xdc')],{'as':_0xf2d0('0xdc'),'foreignKey':_0xf2d0('0x175')});db['OpenchannelMessage'][_0xf2d0('0x13e')](db[_0xf2d0('0x130')],{'as':_0xf2d0('0x161'),'foreignKey':_0xf2d0('0x17c')});db[_0xf2d0('0x58')][_0xf2d0('0x10e')](db[_0xf2d0('0x11')],{'as':'Agents','through':_0xf2d0('0x31'),'foreignKey':_0xf2d0('0x17e')});db[_0xf2d0('0x58')]['belongsToMany'](db[_0xf2d0('0x146')],{'through':_0xf2d0('0x181'),'as':_0xf2d0('0x15f')});db[_0xf2d0('0x12a')][_0xf2d0('0x103')](db[_0xf2d0('0x157')],{'as':'Dispositions','foreignKey':_0xf2d0('0x168'),'onDelete':_0xf2d0('0x102')});db[_0xf2d0('0x12a')][_0xf2d0('0x103')](db['CannedAnswer'],{'as':_0xf2d0('0x159'),'foreignKey':'ChatWebsiteId'});db[_0xf2d0('0x12a')][_0xf2d0('0x103')](db['ChatProactiveAction'],{'as':_0xf2d0('0x182')});db['ChatWebsite'][_0xf2d0('0x103')](db[_0xf2d0('0x5d')],{'as':_0xf2d0('0x15a')});db[_0xf2d0('0x12a')]['hasMany'](db[_0xf2d0('0x183')],{'as':_0xf2d0('0x139')});db['ChatWebsite'][_0xf2d0('0x103')](db[_0xf2d0('0x5e')],{'as':_0xf2d0('0x149')});db[_0xf2d0('0x12a')][_0xf2d0('0x13e')](db[_0xf2d0('0xe5')],{'as':_0xf2d0('0x15b'),'foreignKey':'ListId'});db[_0xf2d0('0x12a')][_0xf2d0('0x13e')](db[_0xf2d0('0x75')],{'as':_0xf2d0('0x75'),'foreignKey':_0xf2d0('0x142')});db[_0xf2d0('0x12a')][_0xf2d0('0x13e')](db[_0xf2d0('0x154')],{'as':_0xf2d0('0x154'),'foreignKey':_0xf2d0('0x153')});db['ChatWebsite'][_0xf2d0('0x13e')](db[_0xf2d0('0x77')],{'as':_0xf2d0('0x143'),'foreignKey':_0xf2d0('0x144')});db[_0xf2d0('0x12a')][_0xf2d0('0x10e')](db['User'],{'as':_0xf2d0('0x170'),'through':_0xf2d0('0x12c')});db['OpenchannelQueueReport'][_0xf2d0('0x13e')](db['OpenchannelAccount'],{});db['OpenchannelQueueReport'][_0xf2d0('0x13e')](db[_0xf2d0('0xe5')],{'as':_0xf2d0('0x15b'),'foreignKey':_0xf2d0('0x15c')});db['OpenchannelQueueReport'][_0xf2d0('0x13e')](db['CmContact'],{'as':_0xf2d0('0x150'),'foreignKey':_0xf2d0('0x151')});db[_0xf2d0('0x5b')][_0xf2d0('0x13e')](db['OpenchannelInteraction'],{});db['OpenchannelQueueReport']['belongsTo'](db[_0xf2d0('0x56')],{});db[_0xf2d0('0x5b')]['belongsTo'](db[_0xf2d0('0x11')],{});db[_0xf2d0('0x5b')][_0xf2d0('0x13e')](db[_0xf2d0('0x58')],{});db['ChatApplication']['belongsTo'](db[_0xf2d0('0x11')],{'as':_0xf2d0('0x184'),'foreignKey':'UserId','onDelete':_0xf2d0('0x16a')});db[_0xf2d0('0x183')][_0xf2d0('0x13e')](db[_0xf2d0('0x61')],{'as':_0xf2d0('0x185'),'foreignKey':'ChatQueueId','onDelete':_0xf2d0('0x16a')});db[_0xf2d0('0x183')][_0xf2d0('0x13e')](db[_0xf2d0('0x12a')],{'as':_0xf2d0('0x186'),'foreignKey':'ChatWebsiteId','onDelete':'restrict'});db[_0xf2d0('0x183')][_0xf2d0('0x13e')](db[_0xf2d0('0x80')],{'onDelete':_0xf2d0('0x16a'),'foreignKey':_0xf2d0('0x171')});db['ChatInteraction'][_0xf2d0('0x103')](db[_0xf2d0('0x5e')],{'as':_0xf2d0('0x149'),'onDelete':_0xf2d0('0x102'),'foreignKey':_0xf2d0('0x187')});db[_0xf2d0('0x5d')][_0xf2d0('0x13e')](db[_0xf2d0('0x12a')],{'as':'Account','foreignKey':_0xf2d0('0x168')});db[_0xf2d0('0x5d')][_0xf2d0('0x13e')](db[_0xf2d0('0x111')],{'as':_0xf2d0('0x150'),'foreignKey':_0xf2d0('0x151')});db[_0xf2d0('0x5d')]['belongsTo'](db[_0xf2d0('0x11')],{'as':_0xf2d0('0x162'),'foreignKey':_0xf2d0('0x105')});db[_0xf2d0('0x5d')]['belongsToMany'](db['Tag'],{'through':'chat_interaction_has_tags','as':_0xf2d0('0x164')});db['ChatInteraction'][_0xf2d0('0x10e')](db['Tag'],{'through':_0xf2d0('0x188'),'as':_0xf2d0('0x174')});db[_0xf2d0('0x5d')][_0xf2d0('0x10e')](db[_0xf2d0('0x11')],{'as':_0xf2d0('0x165'),'through':_0xf2d0('0x11a'),'foreignKey':'ChatInteractionId'});db[_0xf2d0('0x5e')][_0xf2d0('0x13e')](db[_0xf2d0('0x11')],{'onDelete':_0xf2d0('0x102'),'as':_0xf2d0('0x11')});db[_0xf2d0('0x5e')][_0xf2d0('0x13e')](db[_0xf2d0('0x111')],{'onDelete':'cascade','as':_0xf2d0('0x150'),'foreignKey':_0xf2d0('0x151')});db[_0xf2d0('0x5e')]['belongsTo'](db[_0xf2d0('0x5d')],{'onDelete':_0xf2d0('0x102'),'as':'Interaction','foreignKey':'ChatInteractionId'});db['ChatMessage'][_0xf2d0('0x13e')](db['Attachment'],{'as':_0xf2d0('0xdc'),'foreignKey':'AttachmentId'});db['ChatMessage'][_0xf2d0('0x13e')](db['ChatWebsite'],{'as':'Account','foreignKey':_0xf2d0('0x168')});db[_0xf2d0('0x60')][_0xf2d0('0x103')](db[_0xf2d0('0xdc')],{'as':_0xf2d0('0x166'),'foreignKey':'ChatOfflineMessageId','onDelete':_0xf2d0('0x102'),'hooks':!![]});db[_0xf2d0('0x60')]['belongsTo'](db['CmContact'],{'onDelete':_0xf2d0('0x102'),'as':_0xf2d0('0x150'),'foreignKey':_0xf2d0('0x151')});db[_0xf2d0('0x60')][_0xf2d0('0x13e')](db[_0xf2d0('0x12a')],{'as':'Account','foreignKey':_0xf2d0('0x168')});db['ChatQueue'][_0xf2d0('0x10e')](db[_0xf2d0('0x11')],{'as':_0xf2d0('0x170'),'through':'UserChatQueue','hooks':!![]});db[_0xf2d0('0x61')][_0xf2d0('0x10e')](db['Team'],{'through':_0xf2d0('0x189'),'as':_0xf2d0('0x15f')});db[_0xf2d0('0x10f')][_0xf2d0('0x103')](db['ChatInternalMessage'],{'as':_0xf2d0('0x149'),'foreignKey':_0xf2d0('0x18a'),'onDelete':_0xf2d0('0x102')});db[_0xf2d0('0x10f')][_0xf2d0('0x10e')](db[_0xf2d0('0x11')],{'as':_0xf2d0('0x13b'),'through':_0xf2d0('0x110')});db[_0xf2d0('0x64')][_0xf2d0('0x13e')](db[_0xf2d0('0x12a')],{'as':'Website','foreignKey':_0xf2d0('0x168')});db[_0xf2d0('0x18b')]['hasMany'](db['CmContact'],{'as':_0xf2d0('0x112'),'foreignKey':_0xf2d0('0x18c')});db[_0xf2d0('0x111')][_0xf2d0('0x103')](db[_0xf2d0('0x67')],{'as':_0xf2d0('0x13c'),'foreignKey':_0xf2d0('0x151')});db[_0xf2d0('0x111')][_0xf2d0('0x103')](db[_0xf2d0('0x69')],{'as':'HopperFinals','foreignKey':_0xf2d0('0x151')});db[_0xf2d0('0x111')][_0xf2d0('0x103')](db[_0xf2d0('0x6b')],{'as':_0xf2d0('0x18d'),'foreignKey':_0xf2d0('0x151')});db[_0xf2d0('0x111')]['hasMany'](db[_0xf2d0('0x109')],{'as':_0xf2d0('0x109'),'foreignKey':_0xf2d0('0x151')});db[_0xf2d0('0x111')][_0xf2d0('0x103')](db[_0xf2d0('0x18e')],{'as':_0xf2d0('0x18f'),'foreignKey':_0xf2d0('0x151')});db[_0xf2d0('0x111')]['hasMany'](db[_0xf2d0('0x10a')],{'as':'OpenchannelInteractions','foreignKey':_0xf2d0('0x151'),'onDelete':_0xf2d0('0x16a')});db[_0xf2d0('0x111')][_0xf2d0('0x103')](db[_0xf2d0('0x5d')],{'as':_0xf2d0('0x119'),'foreignKey':_0xf2d0('0x151'),'onDelete':_0xf2d0('0x16a')});db['CmContact']['hasMany'](db[_0xf2d0('0x4e')],{'as':_0xf2d0('0x11d'),'foreignKey':_0xf2d0('0x151'),'onDelete':_0xf2d0('0x16a')});db[_0xf2d0('0x111')][_0xf2d0('0x103')](db[_0xf2d0('0x45')],{'as':_0xf2d0('0x11b'),'foreignKey':'ContactId','onDelete':_0xf2d0('0x16a')});db[_0xf2d0('0x111')][_0xf2d0('0x103')](db['MailInteraction'],{'as':'MailInteractions','foreignKey':_0xf2d0('0x151'),'onDelete':_0xf2d0('0x16a')});db[_0xf2d0('0x111')][_0xf2d0('0x13e')](db[_0xf2d0('0x18b')],{'as':'Company','foreignKey':_0xf2d0('0x18c')});db[_0xf2d0('0x111')][_0xf2d0('0x13e')](db[_0xf2d0('0xe5')],{'as':_0xf2d0('0x15b'),'foreignKey':'ListId','onDelete':_0xf2d0('0x102')});db[_0xf2d0('0x111')][_0xf2d0('0x10e')](db[_0xf2d0('0x11')],{'as':_0xf2d0('0x165'),'through':_0xf2d0('0x113')});db[_0xf2d0('0x111')][_0xf2d0('0x10e')](db[_0xf2d0('0x80')],{'as':_0xf2d0('0x164'),'through':_0xf2d0('0x190')});db[_0xf2d0('0x111')][_0xf2d0('0x10e')](db[_0xf2d0('0x80')],{'through':_0xf2d0('0x190'),'as':_0xf2d0('0x174')});db[_0xf2d0('0x67')][_0xf2d0('0x13e')](db[_0xf2d0('0x111')],{'as':_0xf2d0('0x150'),'foreignKey':_0xf2d0('0x151'),'onDelete':_0xf2d0('0x102')});db[_0xf2d0('0x67')]['belongsTo'](db[_0xf2d0('0xe5')],{'as':'List','foreignKey':_0xf2d0('0x15c'),'onDelete':'cascade'});db[_0xf2d0('0x67')][_0xf2d0('0x13e')](db[_0xf2d0('0x11')],{'as':_0xf2d0('0x184'),'foreignKey':_0xf2d0('0x105')});db[_0xf2d0('0x67')][_0xf2d0('0x13e')](db[_0xf2d0('0x1a')],{'as':_0xf2d0('0x185'),'foreignKey':_0xf2d0('0x13d'),'onDelete':_0xf2d0('0x102')});db[_0xf2d0('0x67')][_0xf2d0('0x13e')](db['Campaign'],{'as':_0xf2d0('0xd9'),'foreignKey':'CampaignId','onDelete':_0xf2d0('0x102')});db[_0xf2d0('0x67')][_0xf2d0('0x13e')](db['User'],{'as':_0xf2d0('0x162'),'foreignKey':_0xf2d0('0x191')});db[_0xf2d0('0x68')]['belongsTo'](db[_0xf2d0('0x111')],{'as':_0xf2d0('0x150'),'foreignKey':_0xf2d0('0x151'),'onDelete':'cascade'});db[_0xf2d0('0x68')][_0xf2d0('0x13e')](db[_0xf2d0('0xe5')],{'as':'List','foreignKey':_0xf2d0('0x15c'),'onDelete':_0xf2d0('0x102')});db[_0xf2d0('0x68')][_0xf2d0('0x13e')](db[_0xf2d0('0x1a')],{'as':_0xf2d0('0x185'),'foreignKey':'VoiceQueueId','onDelete':'cascade'});db['CmHopperBlack']['belongsTo'](db[_0xf2d0('0xd9')],{'as':_0xf2d0('0xd9'),'foreignKey':_0xf2d0('0x192'),'onDelete':_0xf2d0('0x102')});db[_0xf2d0('0x193')][_0xf2d0('0x103')](db['Condition'],{'as':{'plural':_0xf2d0('0x194'),'singular':'OneAll'},'foreignKey':'AutomationAllId','onDelete':'cascade','hooks':!![]});db['Automation'][_0xf2d0('0x103')](db['Condition'],{'as':{'plural':_0xf2d0('0x195'),'singular':_0xf2d0('0x196')},'foreignKey':_0xf2d0('0x197'),'onDelete':_0xf2d0('0x102'),'hooks':!![]});db[_0xf2d0('0x193')][_0xf2d0('0x103')](db[_0xf2d0('0x6f')],{'as':'Actions','foreignKey':'AutomationId','onDelete':_0xf2d0('0x102'),'hooks':!![]});db[_0xf2d0('0x157')]['hasMany'](db[_0xf2d0('0x157')],{'as':'Dispositions','foreignKey':_0xf2d0('0x198'),'onDelete':_0xf2d0('0x102')});db[_0xf2d0('0x75')][_0xf2d0('0x103')](db[_0xf2d0('0x75')],{'as':_0xf2d0('0x199'),'foreignKey':_0xf2d0('0x142'),'onDelete':'cascade','hooks':!![],'required':![]});db[_0xf2d0('0x75')]['hasMany'](db[_0xf2d0('0x18')],{'as':_0xf2d0('0x107'),'foreignKey':'IntervalId','onDelete':'restrict'});db[_0xf2d0('0x75')]['hasMany'](db[_0xf2d0('0x3e')],{'as':_0xf2d0('0x19a'),'foreignKey':_0xf2d0('0x142')});db[_0xf2d0('0x75')][_0xf2d0('0x103')](db['ChatApplication'],{'as':_0xf2d0('0x19b'),'foreignKey':_0xf2d0('0x142')});db[_0xf2d0('0x75')][_0xf2d0('0x103')](db['FaxApplication'],{'as':'FaxApplications','foreignKey':_0xf2d0('0x142')});db[_0xf2d0('0x75')][_0xf2d0('0x103')](db[_0xf2d0('0x4c')],{'as':_0xf2d0('0x19c'),'foreignKey':_0xf2d0('0x142')});db[_0xf2d0('0x7d')][_0xf2d0('0x13e')](db[_0xf2d0('0x154')],{});db['Schedule'][_0xf2d0('0x13e')](db['AnalyticDefaultReport'],{'foreignKey':_0xf2d0('0x19d')});db[_0xf2d0('0x7d')]['belongsTo'](db[_0xf2d0('0x8a')],{'foreignKey':'CustomReportId'});db['Sound'][_0xf2d0('0x10e')](db['VoiceMusicOnHold'],{'as':'Mohs','through':_0xf2d0('0x13a'),'onDelete':'restrict'});db[_0xf2d0('0x80')][_0xf2d0('0x10e')](db[_0xf2d0('0x111')],{'through':_0xf2d0('0x190')});db['Tag']['belongsToMany'](db[_0xf2d0('0x5d')],{'through':_0xf2d0('0x188')});db[_0xf2d0('0x80')][_0xf2d0('0x10e')](db[_0xf2d0('0x117')],{'through':_0xf2d0('0x163')});db[_0xf2d0('0x80')][_0xf2d0('0x10e')](db[_0xf2d0('0x4e')],{'through':_0xf2d0('0x178')});db[_0xf2d0('0x80')][_0xf2d0('0x10e')](db['FaxInteraction'],{'through':_0xf2d0('0x19e')});db[_0xf2d0('0x80')][_0xf2d0('0x10e')](db[_0xf2d0('0x10a')],{'through':_0xf2d0('0x180')});db['Tag'][_0xf2d0('0x10e')](db[_0xf2d0('0xf4')],{'through':_0xf2d0('0x19f')});db[_0xf2d0('0x1a0')]['hasMany'](db[_0xf2d0('0x73')],{'as':{'plural':_0xf2d0('0x1a1'),'singular':_0xf2d0('0x1a2')},'foreignKey':_0xf2d0('0x1a3'),'onDelete':'cascade','hooks':!![]});db[_0xf2d0('0x1a0')][_0xf2d0('0x103')](db['Condition'],{'as':{'plural':'AnyConditions','singular':'AnyCondition'},'foreignKey':'TriggerAnyId','onDelete':_0xf2d0('0x102'),'hooks':!![]});db['Trigger']['hasMany'](db[_0xf2d0('0x6f')],{'as':_0xf2d0('0x1a4'),'foreignKey':'TriggerId','onDelete':_0xf2d0('0x102'),'hooks':!![]});db[_0xf2d0('0x8a')]['hasMany'](db[_0xf2d0('0x8e')],{'as':_0xf2d0('0x1a5'),'onDelete':_0xf2d0('0x102'),'foreignKey':_0xf2d0('0x1a6'),'hooks':!![]});db[_0xf2d0('0x8b')][_0xf2d0('0x103')](db[_0xf2d0('0x8e')],{'as':_0xf2d0('0x1a5'),'onDelete':_0xf2d0('0x102'),'foreignKey':_0xf2d0('0x19d')});db['AnalyticMetric'][_0xf2d0('0x103')](db[_0xf2d0('0x8e')],{'as':'Fields','onDelete':'cascade','foreignKey':'MetricId'});db[_0xf2d0('0x8e')][_0xf2d0('0x13e')](db['AnalyticMetric'],{'foreignKey':_0xf2d0('0x1a7')});db[_0xf2d0('0x1a8')][_0xf2d0('0x103')](db[_0xf2d0('0x93')],{'as':'Configurations','onDelete':_0xf2d0('0x102'),'foreignKey':_0xf2d0('0x1a9')});db['SalesforceConfiguration'][_0xf2d0('0x103')](db[_0xf2d0('0x95')],{'as':_0xf2d0('0x1aa'),'onDelete':_0xf2d0('0x102'),'foreignKey':'SubjectId'});db[_0xf2d0('0x93')][_0xf2d0('0x103')](db[_0xf2d0('0x95')],{'as':_0xf2d0('0x1ab'),'onDelete':_0xf2d0('0x102'),'foreignKey':'DescriptionId'});db[_0xf2d0('0x93')]['hasMany'](db[_0xf2d0('0x95')],{'as':'Fields','onDelete':_0xf2d0('0x102'),'foreignKey':_0xf2d0('0x1ac')});db[_0xf2d0('0x93')][_0xf2d0('0x13e')](db[_0xf2d0('0x1a8')],{'as':'Account','foreignKey':_0xf2d0('0x1a9')});db[_0xf2d0('0x95')][_0xf2d0('0x103')](db['SalesforceField'],{'as':'Subject','foreignKey':_0xf2d0('0x1ad')});db['SalesforceField'][_0xf2d0('0x103')](db['SalesforceField'],{'as':'Description','foreignKey':_0xf2d0('0x1ae')});db['SalesforceField'][_0xf2d0('0x103')](db[_0xf2d0('0x95')],{'as':_0xf2d0('0x1af'),'foreignKey':_0xf2d0('0x1ac')});db['SalesforceField']['belongsTo'](db[_0xf2d0('0x85')],{'as':_0xf2d0('0x85'),'foreignKey':'VariableId'});db[_0xf2d0('0x97')]['hasMany'](db[_0xf2d0('0x1b0')],{'as':_0xf2d0('0x1b1'),'onDelete':'cascade','foreignKey':_0xf2d0('0x1a9')});db[_0xf2d0('0x1b0')][_0xf2d0('0x103')](db[_0xf2d0('0x1b2')],{'as':_0xf2d0('0x1aa'),'onDelete':'cascade','foreignKey':_0xf2d0('0x1ad')});db[_0xf2d0('0x1b0')][_0xf2d0('0x103')](db[_0xf2d0('0x1b2')],{'as':'Descriptions','onDelete':'cascade','foreignKey':'DescriptionId'});db['SugarcrmConfiguration'][_0xf2d0('0x103')](db['SugarcrmField'],{'as':_0xf2d0('0x1a5'),'onDelete':_0xf2d0('0x102'),'foreignKey':_0xf2d0('0x1ac')});db[_0xf2d0('0x1b0')][_0xf2d0('0x13e')](db['SugarcrmAccount'],{'as':_0xf2d0('0x161'),'foreignKey':_0xf2d0('0x1a9')});db['SugarcrmField']['hasMany'](db['SugarcrmField'],{'as':_0xf2d0('0x1b3'),'foreignKey':_0xf2d0('0x1ad')});db[_0xf2d0('0x1b2')][_0xf2d0('0x103')](db[_0xf2d0('0x1b2')],{'as':_0xf2d0('0x1b4'),'foreignKey':_0xf2d0('0x1ae')});db['SugarcrmField'][_0xf2d0('0x103')](db[_0xf2d0('0x1b2')],{'as':_0xf2d0('0x1af'),'foreignKey':_0xf2d0('0x1ac')});db[_0xf2d0('0x1b2')]['belongsTo'](db[_0xf2d0('0x85')],{'as':'Variable','foreignKey':_0xf2d0('0x1b5')});db[_0xf2d0('0x9b')]['hasMany'](db[_0xf2d0('0x1b6')],{'as':_0xf2d0('0x1b1'),'onDelete':_0xf2d0('0x102'),'foreignKey':'AccountId'});db[_0xf2d0('0x1b6')][_0xf2d0('0x103')](db[_0xf2d0('0x1b7')],{'as':_0xf2d0('0x1aa'),'onDelete':'cascade','foreignKey':'SubjectId'});db[_0xf2d0('0x1b6')][_0xf2d0('0x103')](db[_0xf2d0('0x1b7')],{'as':_0xf2d0('0x1ab'),'onDelete':_0xf2d0('0x102'),'foreignKey':_0xf2d0('0x1ae')});db[_0xf2d0('0x1b6')][_0xf2d0('0x103')](db[_0xf2d0('0x1b7')],{'as':_0xf2d0('0x1a5'),'onDelete':_0xf2d0('0x102'),'foreignKey':_0xf2d0('0x1ac')});db[_0xf2d0('0x1b6')][_0xf2d0('0x13e')](db[_0xf2d0('0x9b')],{'as':_0xf2d0('0x161'),'foreignKey':_0xf2d0('0x1a9')});db[_0xf2d0('0x1b6')][_0xf2d0('0x10e')](db['Tag'],{'through':_0xf2d0('0x1b8')});db[_0xf2d0('0x1b7')][_0xf2d0('0x103')](db[_0xf2d0('0x1b7')],{'as':_0xf2d0('0x1b3'),'foreignKey':_0xf2d0('0x1ad')});db['DeskField'][_0xf2d0('0x103')](db['DeskField'],{'as':_0xf2d0('0x1b4'),'foreignKey':'DescriptionId'});db['DeskField'][_0xf2d0('0x103')](db['DeskField'],{'as':'Field','foreignKey':_0xf2d0('0x1ac')});db[_0xf2d0('0x1b7')]['belongsTo'](db[_0xf2d0('0x85')],{'as':'Variable','foreignKey':'VariableId'});db[_0xf2d0('0x9f')][_0xf2d0('0x103')](db[_0xf2d0('0xa1')],{'as':_0xf2d0('0x1b1'),'onDelete':_0xf2d0('0x102'),'foreignKey':'AccountId'});db[_0xf2d0('0xa1')][_0xf2d0('0x103')](db[_0xf2d0('0xa2')],{'as':_0xf2d0('0x1aa'),'onDelete':'cascade','foreignKey':_0xf2d0('0x1ad')});db[_0xf2d0('0xa1')][_0xf2d0('0x103')](db['ZohoField'],{'as':_0xf2d0('0x1ab'),'onDelete':'cascade','foreignKey':_0xf2d0('0x1ae')});db[_0xf2d0('0xa1')][_0xf2d0('0x103')](db[_0xf2d0('0xa2')],{'as':'Fields','onDelete':'cascade','foreignKey':'FieldId'});db[_0xf2d0('0xa1')][_0xf2d0('0x13e')](db[_0xf2d0('0x9f')],{'as':_0xf2d0('0x161'),'foreignKey':_0xf2d0('0x1a9')});db['ZohoField'][_0xf2d0('0x103')](db[_0xf2d0('0xa2')],{'as':_0xf2d0('0x1b3'),'foreignKey':_0xf2d0('0x1ad')});db[_0xf2d0('0xa2')][_0xf2d0('0x103')](db['ZohoField'],{'as':_0xf2d0('0x1b4'),'foreignKey':'DescriptionId'});db['ZohoField'][_0xf2d0('0x103')](db['ZohoField'],{'as':_0xf2d0('0x1af'),'foreignKey':_0xf2d0('0x1ac')});db[_0xf2d0('0xa2')][_0xf2d0('0x13e')](db[_0xf2d0('0x85')],{'as':_0xf2d0('0x85'),'foreignKey':_0xf2d0('0x1b5')});db['ZendeskAccount']['hasMany'](db[_0xf2d0('0xa5')],{'as':_0xf2d0('0x1b1'),'onDelete':_0xf2d0('0x102'),'foreignKey':'AccountId'});db[_0xf2d0('0xa5')][_0xf2d0('0x103')](db[_0xf2d0('0xa7')],{'as':'Subjects','foreignKey':_0xf2d0('0x1ad')});db[_0xf2d0('0xa5')][_0xf2d0('0x103')](db['ZendeskField'],{'as':_0xf2d0('0x1ab'),'foreignKey':_0xf2d0('0x1ae')});db['ZendeskConfiguration'][_0xf2d0('0x103')](db['ZendeskField'],{'as':_0xf2d0('0x1a5'),'foreignKey':'FieldId'});db['ZendeskConfiguration'][_0xf2d0('0x13e')](db[_0xf2d0('0xa4')],{'as':'Account','foreignKey':'AccountId'});db[_0xf2d0('0xa5')]['belongsToMany'](db[_0xf2d0('0x80')],{'through':_0xf2d0('0x1b9')});db[_0xf2d0('0xa7')][_0xf2d0('0x103')](db[_0xf2d0('0xa7')],{'as':'Subject','foreignKey':_0xf2d0('0x1ad')});db[_0xf2d0('0xa7')][_0xf2d0('0x103')](db[_0xf2d0('0xa7')],{'as':_0xf2d0('0x1b4'),'foreignKey':_0xf2d0('0x1ae')});db[_0xf2d0('0xa7')]['hasMany'](db[_0xf2d0('0xa7')],{'as':_0xf2d0('0x1af'),'foreignKey':_0xf2d0('0x1ac')});db[_0xf2d0('0xa7')]['belongsTo'](db[_0xf2d0('0x85')],{'as':'Variable','foreignKey':_0xf2d0('0x1b5')});db[_0xf2d0('0x1ba')][_0xf2d0('0x103')](db['FreshdeskConfiguration'],{'as':_0xf2d0('0x1b1'),'onDelete':_0xf2d0('0x102'),'foreignKey':'AccountId'});db['FreshdeskConfiguration'][_0xf2d0('0x103')](db['FreshdeskField'],{'as':_0xf2d0('0x1aa'),'onDelete':_0xf2d0('0x102'),'foreignKey':_0xf2d0('0x1ad')});db['FreshdeskConfiguration'][_0xf2d0('0x103')](db[_0xf2d0('0xab')],{'as':_0xf2d0('0x1ab'),'onDelete':_0xf2d0('0x102'),'foreignKey':_0xf2d0('0x1ae')});db[_0xf2d0('0xa9')]['hasMany'](db[_0xf2d0('0xab')],{'as':_0xf2d0('0x1a5'),'onDelete':'cascade','foreignKey':_0xf2d0('0x1ac')});db[_0xf2d0('0xa9')][_0xf2d0('0x13e')](db[_0xf2d0('0x1ba')],{'as':'Account','foreignKey':_0xf2d0('0x1a9')});db[_0xf2d0('0xa9')]['belongsToMany'](db[_0xf2d0('0x80')],{'through':_0xf2d0('0x1bb')});db[_0xf2d0('0xab')][_0xf2d0('0x103')](db[_0xf2d0('0xab')],{'as':_0xf2d0('0x1b3'),'foreignKey':_0xf2d0('0x1ad')});db[_0xf2d0('0xab')]['hasMany'](db[_0xf2d0('0xab')],{'as':_0xf2d0('0x1b4'),'foreignKey':_0xf2d0('0x1ae')});db[_0xf2d0('0xab')]['hasMany'](db[_0xf2d0('0xab')],{'as':_0xf2d0('0x1af'),'foreignKey':_0xf2d0('0x1ac')});db[_0xf2d0('0xab')]['belongsTo'](db[_0xf2d0('0x85')],{'as':_0xf2d0('0x85'),'foreignKey':'VariableId'});db[_0xf2d0('0xac')]['hasMany'](db[_0xf2d0('0xae')],{'as':'Configurations','onDelete':_0xf2d0('0x102'),'foreignKey':_0xf2d0('0x1a9')});db[_0xf2d0('0xae')][_0xf2d0('0x103')](db[_0xf2d0('0xb0')],{'as':_0xf2d0('0x1aa'),'foreignKey':'SubjectId'});db[_0xf2d0('0xae')][_0xf2d0('0x103')](db[_0xf2d0('0xb0')],{'as':_0xf2d0('0x1ab'),'foreignKey':'DescriptionId'});db['VtigerConfiguration'][_0xf2d0('0x103')](db[_0xf2d0('0xb0')],{'as':_0xf2d0('0x1a5'),'foreignKey':_0xf2d0('0x1ac')});db['VtigerConfiguration']['belongsTo'](db[_0xf2d0('0xac')],{'as':_0xf2d0('0x161'),'foreignKey':_0xf2d0('0x1a9')});db[_0xf2d0('0xb0')][_0xf2d0('0x103')](db[_0xf2d0('0xb0')],{'as':_0xf2d0('0x1b3'),'foreignKey':_0xf2d0('0x1ad')});db['VtigerField'][_0xf2d0('0x103')](db['VtigerField'],{'as':_0xf2d0('0x1b4'),'foreignKey':_0xf2d0('0x1ae')});db[_0xf2d0('0xb0')][_0xf2d0('0x103')](db[_0xf2d0('0xb0')],{'as':_0xf2d0('0x1af'),'foreignKey':_0xf2d0('0x1ac')});db[_0xf2d0('0xb0')]['belongsTo'](db[_0xf2d0('0x85')],{'as':'Variable','foreignKey':_0xf2d0('0x1b5')});db[_0xf2d0('0xb2')][_0xf2d0('0x103')](db['ServicenowConfiguration'],{'as':_0xf2d0('0x1b1'),'onDelete':_0xf2d0('0x102'),'foreignKey':_0xf2d0('0x1a9')});db['ServicenowConfiguration']['hasMany'](db['ServicenowField'],{'as':_0xf2d0('0x1aa'),'foreignKey':'SubjectId'});db[_0xf2d0('0xb4')][_0xf2d0('0x103')](db['ServicenowField'],{'as':_0xf2d0('0x1ab'),'foreignKey':_0xf2d0('0x1ae')});db[_0xf2d0('0xb4')][_0xf2d0('0x103')](db['ServicenowField'],{'as':'Fields','foreignKey':_0xf2d0('0x1ac')});db[_0xf2d0('0xb4')][_0xf2d0('0x13e')](db[_0xf2d0('0xb2')],{'as':'Account','foreignKey':'AccountId'});db[_0xf2d0('0xb5')][_0xf2d0('0x103')](db[_0xf2d0('0xb5')],{'as':_0xf2d0('0x1b3'),'foreignKey':_0xf2d0('0x1ad')});db[_0xf2d0('0xb5')][_0xf2d0('0x103')](db[_0xf2d0('0xb5')],{'as':_0xf2d0('0x1b4'),'foreignKey':_0xf2d0('0x1ae')});db['ServicenowField']['hasMany'](db[_0xf2d0('0xb5')],{'as':'Field','foreignKey':'FieldId'});db[_0xf2d0('0xb5')][_0xf2d0('0x13e')](db[_0xf2d0('0x85')],{'as':'Variable','foreignKey':_0xf2d0('0x1b5')});db[_0xf2d0('0xb7')][_0xf2d0('0x103')](db[_0xf2d0('0xb8')],{'as':_0xf2d0('0x1b1'),'onDelete':_0xf2d0('0x102'),'foreignKey':_0xf2d0('0x1a9')});db['Dynamics365Configuration']['hasMany'](db[_0xf2d0('0xb9')],{'as':_0xf2d0('0x1aa'),'onDelete':_0xf2d0('0x102'),'foreignKey':_0xf2d0('0x1ad')});db[_0xf2d0('0xb8')][_0xf2d0('0x103')](db[_0xf2d0('0xb9')],{'as':'Descriptions','onDelete':_0xf2d0('0x102'),'foreignKey':'DescriptionId'});db[_0xf2d0('0xb8')][_0xf2d0('0x103')](db[_0xf2d0('0xb9')],{'as':_0xf2d0('0x1a5'),'onDelete':_0xf2d0('0x102'),'foreignKey':_0xf2d0('0x1ac')});db[_0xf2d0('0xb8')]['belongsTo'](db['Dynamics365Account'],{'as':'Account','foreignKey':_0xf2d0('0x1a9')});db[_0xf2d0('0xb9')][_0xf2d0('0x103')](db['Dynamics365Field'],{'as':_0xf2d0('0x1b3'),'foreignKey':_0xf2d0('0x1ad')});db['Dynamics365Field'][_0xf2d0('0x103')](db[_0xf2d0('0xb9')],{'as':_0xf2d0('0x1b4'),'foreignKey':_0xf2d0('0x1ae')});db['Dynamics365Field'][_0xf2d0('0x103')](db[_0xf2d0('0xb9')],{'as':_0xf2d0('0x1af'),'foreignKey':_0xf2d0('0x1ac')});db[_0xf2d0('0xb9')][_0xf2d0('0x13e')](db[_0xf2d0('0x85')],{'as':_0xf2d0('0x85'),'foreignKey':_0xf2d0('0x1b5')});db[_0xf2d0('0xbb')][_0xf2d0('0x103')](db['FreshsalesConfiguration'],{'as':'Configurations','onDelete':_0xf2d0('0x102'),'foreignKey':_0xf2d0('0x1a9')});db[_0xf2d0('0xbd')][_0xf2d0('0x103')](db[_0xf2d0('0xbf')],{'as':_0xf2d0('0x1aa'),'foreignKey':_0xf2d0('0x1ad')});db[_0xf2d0('0xbd')][_0xf2d0('0x103')](db['FreshsalesField'],{'as':'Descriptions','foreignKey':'DescriptionId'});db['FreshsalesConfiguration']['hasMany'](db[_0xf2d0('0xbf')],{'as':_0xf2d0('0x1a5'),'foreignKey':_0xf2d0('0x1ac')});db[_0xf2d0('0xbd')][_0xf2d0('0x13e')](db[_0xf2d0('0xbb')],{'as':_0xf2d0('0x161'),'foreignKey':_0xf2d0('0x1a9')});db['FreshsalesField'][_0xf2d0('0x103')](db['FreshsalesField'],{'as':'Subject','foreignKey':_0xf2d0('0x1ad')});db[_0xf2d0('0xbf')]['hasMany'](db[_0xf2d0('0xbf')],{'as':_0xf2d0('0x1b4'),'foreignKey':_0xf2d0('0x1ae')});db[_0xf2d0('0xbf')]['hasMany'](db[_0xf2d0('0xbf')],{'as':_0xf2d0('0x1af'),'foreignKey':_0xf2d0('0x1ac')});db[_0xf2d0('0xbf')][_0xf2d0('0x13e')](db[_0xf2d0('0x85')],{'as':_0xf2d0('0x85'),'foreignKey':_0xf2d0('0x1b5')});db[_0xf2d0('0xc2')][_0xf2d0('0x13e')](db[_0xf2d0('0x12a')],{});db[_0xf2d0('0xc2')]['belongsTo'](db[_0xf2d0('0xe5')],{'as':_0xf2d0('0x15b'),'foreignKey':_0xf2d0('0x15c')});db[_0xf2d0('0xc2')]['belongsTo'](db[_0xf2d0('0x111')],{'as':_0xf2d0('0x150'),'foreignKey':'ContactId'});db[_0xf2d0('0xc2')][_0xf2d0('0x13e')](db[_0xf2d0('0x5d')],{});db[_0xf2d0('0xc2')][_0xf2d0('0x13e')](db[_0xf2d0('0x5e')],{});db['ChatQueueReport'][_0xf2d0('0x13e')](db[_0xf2d0('0x11')],{});db[_0xf2d0('0xc2')]['belongsTo'](db[_0xf2d0('0x61')],{});db['ChatInternalMessage'][_0xf2d0('0x13e')](db['User'],{'onDelete':_0xf2d0('0x102'),'foreignKey':_0xf2d0('0x1bc')});db[_0xf2d0('0xc4')][_0xf2d0('0x13e')](db['User'],{'onDelete':_0xf2d0('0x102'),'foreignKey':_0xf2d0('0x1bd')});db['JscriptySessionReport'][_0xf2d0('0x103')](db[_0xf2d0('0xc7')],{'foreignKey':_0xf2d0('0x1be'),'onDelete':_0xf2d0('0x102')});db[_0xf2d0('0x18e')]['hasMany'](db[_0xf2d0('0x1bf')],{'foreignKey':_0xf2d0('0x1be'),'onDelete':_0xf2d0('0x102')});db[_0xf2d0('0x1c0')]['belongsTo'](db[_0xf2d0('0x133')],{});db['SmsQueueReport']['belongsTo'](db[_0xf2d0('0xe5')],{'as':_0xf2d0('0x15b'),'foreignKey':_0xf2d0('0x15c')});db['SmsQueueReport'][_0xf2d0('0x13e')](db[_0xf2d0('0x111')],{'as':_0xf2d0('0x150'),'foreignKey':'ContactId'});db[_0xf2d0('0x1c0')]['belongsTo'](db[_0xf2d0('0x4e')],{});db[_0xf2d0('0x1c0')]['belongsTo'](db[_0xf2d0('0x50')],{});db['SmsQueueReport'][_0xf2d0('0x13e')](db[_0xf2d0('0x11')],{});db['SmsQueueReport']['belongsTo'](db[_0xf2d0('0x52')],{});db[_0xf2d0('0x1c1')][_0xf2d0('0x103')](db[_0xf2d0('0x18e')],{'foreignKey':_0xf2d0('0x1c2')});db[_0xf2d0('0x1c1')][_0xf2d0('0x103')](db[_0xf2d0('0xc7')],{'foreignKey':_0xf2d0('0x1c2')});db[_0xf2d0('0x1c1')][_0xf2d0('0x103')](db['JscriptyAnswerReport'],{'foreignKey':_0xf2d0('0x1c2')});db[_0xf2d0('0xd1')][_0xf2d0('0x10e')](db[_0xf2d0('0x11')],{'as':_0xf2d0('0x165'),'through':_0xf2d0('0x137')});db[_0xf2d0('0x146')][_0xf2d0('0x10e')](db[_0xf2d0('0x11')],{'as':_0xf2d0('0x170'),'through':_0xf2d0('0x116')});db[_0xf2d0('0x146')]['belongsToMany'](db[_0xf2d0('0x1a')],{'through':'TeamVoiceQueue','as':_0xf2d0('0x121')});db[_0xf2d0('0x146')][_0xf2d0('0x10e')](db[_0xf2d0('0x38')],{'through':_0xf2d0('0x15e'),'as':'MailQueues'});db['Team']['belongsToMany'](db['ChatQueue'],{'through':_0xf2d0('0x189'),'as':_0xf2d0('0x124')});db['Team']['belongsToMany'](db[_0xf2d0('0x48')],{'through':_0xf2d0('0x176'),'as':'FaxQueues'});db[_0xf2d0('0x146')][_0xf2d0('0x10e')](db[_0xf2d0('0x52')],{'through':_0xf2d0('0x17b'),'as':_0xf2d0('0x127')});db[_0xf2d0('0x146')][_0xf2d0('0x10e')](db['OpenchannelQueue'],{'through':_0xf2d0('0x181'),'as':_0xf2d0('0x128')});db['Team'][_0xf2d0('0x10e')](db[_0xf2d0('0xf9')],{'through':_0xf2d0('0x1c3'),'as':_0xf2d0('0x129')});db[_0xf2d0('0x146')][_0xf2d0('0x10e')](db[_0xf2d0('0xe6')],{'through':_0xf2d0('0xfe'),'as':_0xf2d0('0x1c4')});db[_0xf2d0('0xd9')][_0xf2d0('0x103')](db[_0xf2d0('0x67')],{'as':_0xf2d0('0x13c'),'foreignKey':_0xf2d0('0x192')});db[_0xf2d0('0xd9')][_0xf2d0('0x103')](db[_0xf2d0('0x69')],{'as':_0xf2d0('0x108'),'foreignKey':_0xf2d0('0x192')});db[_0xf2d0('0xd9')][_0xf2d0('0x103')](db[_0xf2d0('0x6b')],{'as':_0xf2d0('0x18d'),'foreignKey':_0xf2d0('0x192')});db[_0xf2d0('0xd9')]['hasMany'](db['CmHopperBlack'],{'as':_0xf2d0('0x1c5'),'foreignKey':_0xf2d0('0x192')});db[_0xf2d0('0xd9')]['belongsTo'](db[_0xf2d0('0x28')],{'as':_0xf2d0('0x28'),'foreignKey':'TrunkId'});db[_0xf2d0('0xd9')][_0xf2d0('0x13e')](db[_0xf2d0('0x28')],{'as':_0xf2d0('0x140'),'foreignKey':_0xf2d0('0x141')});db[_0xf2d0('0xd9')]['belongsTo'](db[_0xf2d0('0x75')],{'as':_0xf2d0('0x75'),'foreignKey':_0xf2d0('0x142')});db[_0xf2d0('0xd9')][_0xf2d0('0x13e')](db['SquareProject'],{'as':'SquareProject','foreignKey':_0xf2d0('0x1c6')});db[_0xf2d0('0xd9')][_0xf2d0('0x10e')](db[_0xf2d0('0xe5')],{'as':_0xf2d0('0x114'),'through':'campaigns_has_cm_lists'});db[_0xf2d0('0xd9')][_0xf2d0('0x10e')](db[_0xf2d0('0xe5')],{'as':'BlackLists','through':_0xf2d0('0x1c7')});db[_0xf2d0('0xdc')][_0xf2d0('0x13e')](db['ChatOfflineMessage'],{'as':_0xf2d0('0x60'),'foreignKey':'ChatOfflineMessageId'});db[_0xf2d0('0xde')][_0xf2d0('0x13e')](db[_0xf2d0('0x3c')],{});db[_0xf2d0('0xde')][_0xf2d0('0x13e')](db[_0xf2d0('0x117')],{});db[_0xf2d0('0xde')]['belongsTo'](db[_0xf2d0('0x154')],{'foreignKey':_0xf2d0('0x1c8'),'as':'FromAccount'});db[_0xf2d0('0xde')][_0xf2d0('0x13e')](db[_0xf2d0('0x11')],{'foreignKey':_0xf2d0('0x1c9'),'as':'FromAgent'});db[_0xf2d0('0xde')]['belongsTo'](db[_0xf2d0('0x11')],{'foreignKey':_0xf2d0('0x1ca'),'as':_0xf2d0('0x1cb')});db[_0xf2d0('0xde')][_0xf2d0('0x13e')](db[_0xf2d0('0x38')],{'foreignKey':_0xf2d0('0x1cc'),'as':'ToQueue'});db[_0xf2d0('0xde')]['belongsTo'](db['MailAccount'],{'foreignKey':_0xf2d0('0x1cd'),'as':_0xf2d0('0x1ce')});db[_0xf2d0('0x1cf')]['belongsTo'](db[_0xf2d0('0x5e')],{});db[_0xf2d0('0x1cf')][_0xf2d0('0x13e')](db['ChatInteraction'],{});db[_0xf2d0('0x1cf')][_0xf2d0('0x13e')](db['ChatWebsite'],{'foreignKey':_0xf2d0('0x1d0'),'as':'FromAccount'});db[_0xf2d0('0x1cf')][_0xf2d0('0x13e')](db[_0xf2d0('0x11')],{'foreignKey':_0xf2d0('0x1c9'),'as':_0xf2d0('0x1d1')});db[_0xf2d0('0x1cf')]['belongsTo'](db[_0xf2d0('0x11')],{'foreignKey':'ToUserId','as':_0xf2d0('0x1cb')});db[_0xf2d0('0x1cf')][_0xf2d0('0x13e')](db['ChatQueue'],{'foreignKey':'ToChatQueueId','as':_0xf2d0('0x1d2')});db[_0xf2d0('0x1cf')][_0xf2d0('0x13e')](db[_0xf2d0('0x12a')],{'foreignKey':'ToChatWebsiteId','as':'ToAccount'});db['FaxTransferReport'][_0xf2d0('0x13e')](db[_0xf2d0('0x47')],{});db[_0xf2d0('0x1d3')][_0xf2d0('0x13e')](db[_0xf2d0('0x45')],{});db[_0xf2d0('0x1d3')]['belongsTo'](db[_0xf2d0('0x42')],{'foreignKey':'FromFaxAccountId','as':_0xf2d0('0x1d4')});db[_0xf2d0('0x1d3')][_0xf2d0('0x13e')](db['User'],{'foreignKey':_0xf2d0('0x1c9'),'as':'FromAgent'});db[_0xf2d0('0x1d3')]['belongsTo'](db[_0xf2d0('0x11')],{'foreignKey':_0xf2d0('0x1ca'),'as':'ToAgent'});db[_0xf2d0('0x1d3')][_0xf2d0('0x13e')](db[_0xf2d0('0x48')],{'foreignKey':'ToFaxQueueId','as':_0xf2d0('0x1d2')});db[_0xf2d0('0x1d3')][_0xf2d0('0x13e')](db['FaxAccount'],{'foreignKey':_0xf2d0('0x1d5'),'as':_0xf2d0('0x1ce')});db[_0xf2d0('0x1d6')]['belongsTo'](db[_0xf2d0('0x56')],{});db[_0xf2d0('0x1d6')]['belongsTo'](db[_0xf2d0('0x10a')],{});db['OpenchannelTransferReport'][_0xf2d0('0x13e')](db[_0xf2d0('0x130')],{'foreignKey':_0xf2d0('0x1d7'),'as':_0xf2d0('0x1d4')});db[_0xf2d0('0x1d6')][_0xf2d0('0x13e')](db[_0xf2d0('0x11')],{'foreignKey':'FromUserId','as':_0xf2d0('0x1d1')});db[_0xf2d0('0x1d6')][_0xf2d0('0x13e')](db[_0xf2d0('0x11')],{'foreignKey':_0xf2d0('0x1ca'),'as':'ToAgent'});db[_0xf2d0('0x1d6')][_0xf2d0('0x13e')](db[_0xf2d0('0x58')],{'foreignKey':'ToOpenchannelQueueId','as':'ToQueue'});db['OpenchannelTransferReport']['belongsTo'](db[_0xf2d0('0x130')],{'foreignKey':'ToOpenchannelAccountId','as':_0xf2d0('0x1ce')});db[_0xf2d0('0xe3')][_0xf2d0('0x13e')](db[_0xf2d0('0x50')],{});db[_0xf2d0('0xe3')][_0xf2d0('0x13e')](db[_0xf2d0('0x4e')],{});db[_0xf2d0('0xe3')][_0xf2d0('0x13e')](db['SmsAccount'],{'foreignKey':'FromSmsAccountId','as':_0xf2d0('0x1d4')});db[_0xf2d0('0xe3')][_0xf2d0('0x13e')](db['User'],{'foreignKey':'FromUserId','as':_0xf2d0('0x1d1')});db[_0xf2d0('0xe3')][_0xf2d0('0x13e')](db[_0xf2d0('0x11')],{'foreignKey':_0xf2d0('0x1ca'),'as':_0xf2d0('0x1cb')});db[_0xf2d0('0xe3')][_0xf2d0('0x13e')](db[_0xf2d0('0x52')],{'foreignKey':_0xf2d0('0x1d8'),'as':'ToQueue'});db[_0xf2d0('0xe3')][_0xf2d0('0x13e')](db[_0xf2d0('0x133')],{'foreignKey':'ToSmsAccountId','as':'ToAccount'});db[_0xf2d0('0xe5')][_0xf2d0('0x103')](db[_0xf2d0('0x157')],{'as':_0xf2d0('0x158'),'foreignKey':_0xf2d0('0x15c'),'onDelete':_0xf2d0('0x102')});db[_0xf2d0('0xe5')][_0xf2d0('0x103')](db[_0xf2d0('0x6e')],{'as':_0xf2d0('0x1d9'),'foreignKey':_0xf2d0('0x15c')});db['CmList'][_0xf2d0('0x103')](db[_0xf2d0('0x111')],{'as':'Contacts','onDelete':_0xf2d0('0x102'),'foreignKey':_0xf2d0('0x15c')});db[_0xf2d0('0xe5')][_0xf2d0('0x103')](db[_0xf2d0('0x69')],{'as':_0xf2d0('0x108'),'foreignKey':'ListId'});db[_0xf2d0('0xe5')]['hasMany'](db['CmHopperHistory'],{'as':_0xf2d0('0x1da'),'foreignKey':_0xf2d0('0x15c')});db['CmList'][_0xf2d0('0x103')](db['ReportAgentPreview'],{'as':_0xf2d0('0x109'),'foreignKey':'ListId'});db[_0xf2d0('0xe5')]['belongsToMany'](db[_0xf2d0('0x1a')],{'as':_0xf2d0('0x1db'),'through':'voice_queues_has_cm_lists'});db['CmList'][_0xf2d0('0x10e')](db[_0xf2d0('0x11')],{'as':_0xf2d0('0x170'),'through':_0xf2d0('0x115')});db[_0xf2d0('0xe6')]['hasMany'](db['VoiceExtension'],{'as':_0xf2d0('0x107'),'onDelete':_0xf2d0('0x102')});db[_0xf2d0('0xe6')][_0xf2d0('0x10e')](db['User'],{'as':'Agents','through':_0xf2d0('0x100')});db[_0xf2d0('0xe6')][_0xf2d0('0x10e')](db['Team'],{'through':_0xf2d0('0xfe'),'as':_0xf2d0('0x15f')});db['UserProfile'][_0xf2d0('0x103')](db[_0xf2d0('0x11')],{'as':_0xf2d0('0x165'),'foreignKey':_0xf2d0('0x10d')});db[_0xf2d0('0xe8')]['hasMany'](db['UserProfileSection'],{'as':_0xf2d0('0x1dc'),'foreignKey':_0xf2d0('0x10d'),'onDelete':_0xf2d0('0x102')});db[_0xf2d0('0xea')]['hasMany'](db[_0xf2d0('0xec')],{'as':_0xf2d0('0x1dd'),'foreignKey':_0xf2d0('0x1de'),'onDelete':_0xf2d0('0x102')});db[_0xf2d0('0xf0')][_0xf2d0('0x103')](db[_0xf2d0('0x157')],{'as':'Dispositions','foreignKey':_0xf2d0('0x1df'),'onDelete':_0xf2d0('0x102')});db[_0xf2d0('0xf0')][_0xf2d0('0x103')](db[_0xf2d0('0x16d')],{'as':_0xf2d0('0x159'),'foreignKey':_0xf2d0('0x1df')});db['WhatsappAccount'][_0xf2d0('0x103')](db[_0xf2d0('0x1e0')],{'as':_0xf2d0('0x149'),'foreignKey':_0xf2d0('0x1df')});db[_0xf2d0('0xf0')]['hasMany'](db[_0xf2d0('0xf4')],{'as':_0xf2d0('0x15a')});db[_0xf2d0('0xf0')][_0xf2d0('0x103')](db['WhatsappApplication'],{'as':_0xf2d0('0x139')});db[_0xf2d0('0xf0')][_0xf2d0('0x13e')](db[_0xf2d0('0xe5')],{'as':_0xf2d0('0x15b'),'foreignKey':_0xf2d0('0x15c')});db[_0xf2d0('0xf0')][_0xf2d0('0x13e')](db[_0xf2d0('0x77')],{'as':_0xf2d0('0x143'),'foreignKey':_0xf2d0('0x144')});db['WhatsappAccount'][_0xf2d0('0x10e')](db[_0xf2d0('0x11')],{'as':_0xf2d0('0x170'),'through':'user_has_whatsapp_accounts'});db[_0xf2d0('0xf2')]['belongsTo'](db[_0xf2d0('0x11')],{'onDelete':_0xf2d0('0x16a')});db[_0xf2d0('0xf2')][_0xf2d0('0x13e')](db['WhatsappQueue'],{'onDelete':_0xf2d0('0x16a')});db['WhatsappApplication'][_0xf2d0('0x13e')](db[_0xf2d0('0xf0')],{'onDelete':_0xf2d0('0x16a')});db[_0xf2d0('0xf2')][_0xf2d0('0x13e')](db[_0xf2d0('0x75')],{'onDelete':'restrict','foreignKey':_0xf2d0('0x142')});db['WhatsappApplication'][_0xf2d0('0x13e')](db[_0xf2d0('0x80')],{'onDelete':_0xf2d0('0x16a'),'foreignKey':_0xf2d0('0x171')});db[_0xf2d0('0xf4')][_0xf2d0('0x103')](db[_0xf2d0('0x1e0')],{'as':_0xf2d0('0x149'),'onDelete':_0xf2d0('0x102'),'foreignKey':'WhatsappInteractionId'});db[_0xf2d0('0xf4')][_0xf2d0('0x13e')](db['WhatsappAccount'],{'as':_0xf2d0('0x161'),'foreignKey':_0xf2d0('0x1df')});db['WhatsappInteraction'][_0xf2d0('0x13e')](db[_0xf2d0('0x111')],{'as':'Contact','foreignKey':_0xf2d0('0x151')});db[_0xf2d0('0xf4')][_0xf2d0('0x13e')](db[_0xf2d0('0x11')],{'as':_0xf2d0('0x162'),'foreignKey':'UserId'});db['WhatsappInteraction'][_0xf2d0('0x10e')](db[_0xf2d0('0x80')],{'through':_0xf2d0('0x19f'),'as':_0xf2d0('0x164')});db['WhatsappInteraction'][_0xf2d0('0x10e')](db[_0xf2d0('0x80')],{'through':_0xf2d0('0x19f'),'as':_0xf2d0('0x174')});db[_0xf2d0('0xf4')][_0xf2d0('0x10e')](db[_0xf2d0('0x11')],{'as':'Users','through':'user_has_whatsapp_interactions','foreignKey':_0xf2d0('0x1e1')});db['WhatsappMessage'][_0xf2d0('0x13e')](db[_0xf2d0('0x11')],{'as':'User'});db[_0xf2d0('0x1e0')][_0xf2d0('0x13e')](db[_0xf2d0('0x111')],{'onDelete':_0xf2d0('0x102'),'as':_0xf2d0('0x150')});db['WhatsappMessage'][_0xf2d0('0x13e')](db[_0xf2d0('0xf4')],{'onDelete':_0xf2d0('0x102'),'as':_0xf2d0('0x167'),'foreignKey':_0xf2d0('0x1e1')});db[_0xf2d0('0x1e0')][_0xf2d0('0x13e')](db[_0xf2d0('0xf0')],{'as':'Account','foreignKey':_0xf2d0('0x1df')});db[_0xf2d0('0x1e2')][_0xf2d0('0x13e')](db[_0xf2d0('0xf0')],{});db['WhatsappQueueReport'][_0xf2d0('0x13e')](db['CmList'],{'as':'List','foreignKey':_0xf2d0('0x15c')});db[_0xf2d0('0x1e2')][_0xf2d0('0x13e')](db['CmContact'],{'as':_0xf2d0('0x150'),'foreignKey':_0xf2d0('0x151')});db[_0xf2d0('0x1e2')][_0xf2d0('0x13e')](db['WhatsappInteraction'],{});db[_0xf2d0('0x1e2')][_0xf2d0('0x13e')](db['WhatsappQueue'],{});db[_0xf2d0('0x1e2')][_0xf2d0('0x13e')](db[_0xf2d0('0x1e0')],{});db[_0xf2d0('0x1e2')][_0xf2d0('0x13e')](db[_0xf2d0('0x11')],{});db[_0xf2d0('0xf7')][_0xf2d0('0x13e')](db[_0xf2d0('0x1e0')],{});db[_0xf2d0('0xf7')][_0xf2d0('0x13e')](db[_0xf2d0('0xf4')],{});db[_0xf2d0('0xf7')][_0xf2d0('0x13e')](db[_0xf2d0('0xf0')],{'foreignKey':_0xf2d0('0x1e3'),'as':_0xf2d0('0x1d4')});db['WhatsappTransferReport'][_0xf2d0('0x13e')](db[_0xf2d0('0xf0')],{'foreignKey':'ToWhatsappAccountId','as':'ToAccount'});db[_0xf2d0('0xf7')][_0xf2d0('0x13e')](db[_0xf2d0('0xf9')],{'foreignKey':_0xf2d0('0x1e4'),'as':_0xf2d0('0x1d2')});db[_0xf2d0('0xf7')][_0xf2d0('0x13e')](db[_0xf2d0('0x11')],{'foreignKey':_0xf2d0('0x1c9'),'as':_0xf2d0('0x1d1')});db['WhatsappTransferReport'][_0xf2d0('0x13e')](db[_0xf2d0('0x11')],{'foreignKey':'ToUserId','as':_0xf2d0('0x1cb')});db[_0xf2d0('0xf9')]['belongsToMany'](db[_0xf2d0('0x11')],{'as':'Agents','through':'UserWhatsappQueue','foreignKey':_0xf2d0('0x1e5')});db[_0xf2d0('0xf9')][_0xf2d0('0x10e')](db[_0xf2d0('0x146')],{'through':_0xf2d0('0x1c3'),'as':'Teams'});module[_0xf2d0('0x1e6')]={'db':db,'dbH':dbH};
\ No newline at end of file
+var _0xf839=['AttachmentId','team_has_fax_queues','SmsAccountId','user_has_sms_accounts','sms_interaction_has_tags','ThroughTags','SmsInteractionId','SmsQueueId','OpenchannelAccountId','OpenchannelQueueId','openchannel_interaction_has_tags','user_has_openchannel_interactions','OpenchannelInteractionId','team_has_openchannel_queues','ChatApplication','OpenchannelQueueReport','Agent','ChatQueueId','Website','ChatInteractionId','chat_interaction_has_tags','ChatGroupId','chat_group_has_users','ChatProactiveAction','CompanyId','Hoppers','JscriptySessions','FaxInteractions','Company','cm_contact_has_tags','CampaignId','OwnerId','OneAll','Any','OneAny','AutomationAnyId','AutomationId','Intervals','ChatApplications','FaxApplications','SmsApplications','DefaultReportId','Mohs','AllConditions','TriggerAllId','AnyConditions','AnyCondition','Actions','Fields','CustomReportId','MetricId','Configurations','AccountId','SalesforceField','Subjects','Descriptions','DescriptionId','FieldId','Subject','SubjectId','Description','Field','Variable','SugarcrmConfiguration','SugarcrmField','VariableId','int_desk_configuration_has_tags','ZohoField','int_zendesk_configuration_has_tags','FreshdeskField','VtigerConfiguration','VtigerField','ChatQueueReport','FromId','SessionId','JscriptyAnswerReport','SmsQueueReport','ProjectId','team_has_chat_queues','team_has_sms_queues','OpenchannelQueues','team_has_whatsapp_queues','WhatsappQueues','TrunkId','SquareProjectId','campaigns_has_cm_lists','ChatOfflineMessageId','FromMailAccountId','FromUserId','FromAgent','ToUserId','ToQueue','ToMailAccountId','ToAccount','ToAgent','ToChatQueueId','ToChatWebsiteId','FromFaxAccountId','ToFaxAccountId','FromOpenchannelAccountId','FromAccount','ToOpenchannelAccountId','FromSmsAccountId','ToSmsQueueId','ToSmsAccountId','CustomFields','UserProfileSections','UserProfileResource','Resources','WhatsappAccountId','WhatsappApplication','WhatsappInteractionId','whatsapp_interaction_has_tags','ToQueueId','WhatsappQueueId','exports','sequelize','lodash','jstz','determine','defaultsDeep','xcall','xC@LL1234','127.0.0.1','mysql','utf8mb4','name','utf8_general_ci','sequelizeHistory','motion2','utf8','database','username','password','options','User','../api/user/user.model','VoiceChanSpy','../api/voiceChanSpy/voiceChanSpy.model','VoiceContext','import','../api/voiceContext/voiceContext.model','../api/voiceExtension/voiceExtension.model','VoiceMusicOnHold','VoiceQueue','VoiceRecording','../api/voiceRecording/voiceRecording.model','../api/screenRecording/screenRecording.model','VoiceMail','../api/voiceMail/voiceMail.model','../api/voiceMailMessage/voiceMailMessage.model','../api/voiceCallReport/voiceCallReport.model','VoiceDialReport','../api/voiceDialReport/voiceDialReport.model','VoiceQueueReport','../api/memberReport/memberReport.model','Trunk','../api/trunk/trunk.model','VoiceTransferReport','UserVoiceQueueRt','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','../api/userWhatsappQueue/userWhatsappQueue.model','MailServerIn','../api/mailServerIn/mailServerIn.model','MailServerOut','../api/mailServerOut/mailServerOut.model','../api/mailAccount/mailAccount.model','MailQueue','../api/mailQueue/mailQueue.model','MailSubstatus','../api/mailSubstatus/mailSubstatus.model','MailInteraction','../api/mailInteraction/mailInteraction.model','MailMessage','../api/mailMessage/mailMessage.model','../api/mailApplication/mailApplication.model','MailQueueReport','../api/dashboard/dashboard.model','DashboardItem','../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','FaxQueueReport','../api/faxQueueReport/faxQueueReport.model','SmsApplication','../api/smsApplication/smsApplication.model','SmsInteraction','../api/smsInteraction/smsInteraction.model','SmsMessage','../api/smsMessage/smsMessage.model','SmsQueue','../api/smsQueue/smsQueue.model','OpenchannelAccount','../api/openchannelAccount/openchannelAccount.model','OpenchannelApplication','../api/openchannelApplication/openchannelApplication.model','OpenchannelMessage','OpenchannelQueue','ChatWebsite','../api/chatWebsite/chatWebsite.model','ChatInteraction','../api/chatInteraction/chatInteraction.model','ChatMessage','../api/chatMessage/chatMessage.model','ChatOfflineMessage','../api/chatOfflineMessage/chatOfflineMessage.model','ChatQueue','../api/chatQueue/chatQueue.model','ChatGroup','../api/chatGroup/chatGroup.model','../api/chatProactiveAction/chatProactiveAction.model','CmCompany','../api/cmContact/cmContact.model','CmHopper','../api/cmHopper/cmHopper.model','CmHopperBlack','../api/cmHopperBlack/cmHopperBlack.model','CmHopperFinal','CmHopperHistory','../api/cmHopperHistory/cmHopperHistory.model','ReportAgentPreview','../api/reportAgentPreview/reportAgentPreview.model','CmCustomField','../api/cmCustomField/cmCustomField.model','Action','Automation','../api/automation/automation.model','CannedAnswer','../api/cannedAnswer/cannedAnswer.model','Disposition','Condition','../api/interval/interval.model','Pause','../api/cdr/cdr.model','VoiceQueuesLog','../api/voiceQueuesLog/voiceQueuesLog.model','Schedule','../api/schedule/schedule.model','Sound','../api/sound/sound.model','Tag','../api/template/template.model','Trigger','../api/trigger/trigger.model','../api/variable/variable.model','Integration','../api/integration/integration.model','../api/analyticCustomReport/analyticCustomReport.model','AnalyticDefaultReport','../api/analyticDefaultReport/analyticDefaultReport.model','../api/analyticExtractedReport/analyticExtractedReport.model','AnalyticMetric','AnalyticFieldReport','../api/analyticFieldReport/analyticFieldReport.model','AnalyticTreeReport','SalesforceAccount','../api/intSalesforceAccount/intSalesforceAccount.model','SalesforceConfiguration','../api/intSalesforceConfiguration/intSalesforceConfiguration.model','../api/intSalesforceField/intSalesforceField.model','SugarcrmAccount','../api/intSugarcrmAccount/intSugarcrmAccount.model','../api/intSugarcrmConfiguration/intSugarcrmConfiguration.model','../api/intSugarcrmField/intSugarcrmField.model','DeskAccount','../api/intDeskAccount/intDeskAccount.model','DeskConfiguration','DeskField','../api/intDeskField/intDeskField.model','ZohoAccount','../api/intZohoAccount/intZohoAccount.model','ZohoConfiguration','../api/intZohoConfiguration/intZohoConfiguration.model','../api/intZohoField/intZohoField.model','ZendeskAccount','ZendeskConfiguration','ZendeskField','../api/intZendeskField/intZendeskField.model','FreshdeskAccount','FreshdeskConfiguration','../api/intFreshdeskConfiguration/intFreshdeskConfiguration.model','../api/intFreshdeskField/intFreshdeskField.model','VtigerAccount','../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','../api/intFreshsalesAccount/intFreshsalesAccount.model','FreshsalesConfiguration','FreshsalesField','Network','../api/network/network.model','../api/chatQueueReport/chatQueueReport.model','ChatInternalMessage','../api/chatInternalMessage/chatInternalMessage.model','../api/jscriptyAnswerReport/jscriptyAnswerReport.model','JscriptyQuestionReport','../api/jscriptyQuestionReport/jscriptyQuestionReport.model','JscriptySessionReport','../api/jscriptySessionReport/jscriptySessionReport.model','../api/smsQueueReport/smsQueueReport.model','SquareReport','../api/squareReport/squareReport.model','SquareDetailsReport','../api/squareReportDetail/squareReportDetail.model','JscriptyProject','../api/jscriptyProject/jscriptyProject.model','Setting','SquareOdbc','../api/squareOdbc/squareOdbc.model','../api/squareRecording/squareRecording.model','../api/squareMessage/squareMessage.model','Team','../api/team/team.model','../api/license/license.model','Campaign','../api/campaign/campaign.model','Migration','../api/migration/migration.model','Attachment','../api/attachment/attachment.model','../api/plugin/plugin.model','MailTransferReport','ChatTransferReport','../api/chatTransferReport/chatTransferReport.model','FaxTransferReport','../api/faxTransferReport/faxTransferReport.model','OpenchannelTransferReport','../api/openchannelTransferReport/openchannelTransferReport.model','SmsTransferReport','../api/smsTransferReport/smsTransferReport.model','../api/cmList/cmList.model','VoicePrefix','UserProfile','../api/userProfile/userProfile.model','UserProfileSection','../api/userProfileSection/userProfileSection.model','../api/userProfileResource/userProfileResource.model','UserNotification','../api/userNotification/userNotification.model','WhatsappAccount','../api/whatsappAccount/whatsappAccount.model','../api/whatsappApplication/whatsappApplication.model','WhatsappInteraction','WhatsappMessage','WhatsappQueueReport','../api/whatsappQueueReport/whatsappQueueReport.model','WhatsappTransferReport','../api/whatsappTransferReport/whatsappTransferReport.model','WhatsappQueue','../api/whatsappQueue/whatsappQueue.model','../api/cloudProvider/cloudProvider.model','TeamVoiceQueue','hasOne','UserId','hasMany','VoiceQueuesRt','VoiceExtension','Extensions','HopperFinals','HopperHistory','OpenchannelInteraction','OpenchannelInteractions','SmsInteractions','MailInteractions','WhatsappInteractions','UserNotifications','SenderId','belongsTo','userProfileId','belongsToMany','CmContact','Contacts','cm_user_has_contacts','CmList','user_has_teams','user_has_mail_interactions','user_has_chat_interactions','user_has_sms_interactions','user_has_whatsapp_interactions','VoiceQueues','UserVoiceQueue','MailQueues','ChatQueues','FaxQueues','SmsQueues','cm_user_has_lists','VoicePrefixes','user_has_voice_prefixes','ChatWebsites','user_has_chat_websites','user_has_fax_accounts','MailAccount','MailAccounts','user_has_mail_accounts','user_has_openchannel_accounts','SmsAccount','SmsAccounts','WhatsappAccounts','user_has_whatsapp_accounts','SquareProject','user_has_square_projects','SpiedAgents','cascade','ChanSpyId','Applications','Sounds','moh_has_sounds','Members','VoiceQueueId','HopperHistories','HopperBlacks','TrunkBackup','TrunkBackupId','Interval','IntervalId','mandatoryDispositionPause','mandatoryDispositionPauseId','Lists','voice_queues_has_cm_lists','Agents','Teams','BlackLists','voice_queues_has_cm_blacklists','Messages','mailbox','VoiceMailMessage','mailboxuser','VoiceCallReport','QueueCalls','VoiceAgentReport','AgentReports','uniqueid','Contact','ContactId','MailAccountId','Imap','Smtp','Dispositions','Answers','Interactions','MailApplication','List','ListId','Template','Owner','mail_interaction_has_tags','Tags','Users','MailInteractionId','Attachments','Interaction','ChatWebsiteId','restrict','TagId','Dashboard','Items','FaxInteractionId','Account','FaxAccountId'];(function(_0x47aded,_0xb76625){var _0x505e9a=function(_0x68696d){while(--_0x68696d){_0x47aded['push'](_0x47aded['shift']());}};_0x505e9a(++_0xb76625);}(_0xf839,0x74));var _0x9f83=function(_0x1bd424,_0x3f4cb7){_0x1bd424=_0x1bd424-0x0;var _0x407431=_0xf839[_0x1bd424];return _0x407431;};'use strict';var config=require('../config/environment');var Sequelize=require(_0x9f83('0x0'));var _=require(_0x9f83('0x1'));var jstz=require(_0x9f83('0x2'));var timezone=jstz[_0x9f83('0x3')]();config[_0x9f83('0x0')]=_[_0x9f83('0x4')](config[_0x9f83('0x0')],{'database':'motion2','username':_0x9f83('0x5'),'password':_0x9f83('0x6'),'options':{'host':_0x9f83('0x7'),'port':0xcea,'dialect':_0x9f83('0x8'),'dialectOptions':{'charset':_0x9f83('0x9')},'logging':![],'timezone':timezone[_0x9f83('0xa')](),'define':{'charset':'utf8','collate':_0x9f83('0xb')}}});config['sequelizeHistory']=_[_0x9f83('0x4')](config[_0x9f83('0xc')],{'database':_0x9f83('0xd'),'username':_0x9f83('0x5'),'password':_0x9f83('0x6'),'options':{'host':_0x9f83('0x7'),'port':0xcea,'dialect':_0x9f83('0x8'),'dialectOptions':{'charset':_0x9f83('0x9')},'logging':![],'timezone':timezone[_0x9f83('0xa')](),'define':{'charset':_0x9f83('0xe'),'collate':_0x9f83('0xb')}}});var db={'Sequelize':Sequelize,'sequelize':new Sequelize(config[_0x9f83('0x0')][_0x9f83('0xf')],config[_0x9f83('0x0')][_0x9f83('0x10')],config['sequelize'][_0x9f83('0x11')],config[_0x9f83('0x0')][_0x9f83('0x12')])};var dbH={'Sequelize':Sequelize,'sequelize':new Sequelize(config[_0x9f83('0xc')][_0x9f83('0xf')],config[_0x9f83('0xc')][_0x9f83('0x10')],config[_0x9f83('0xc')][_0x9f83('0x11')],config[_0x9f83('0xc')][_0x9f83('0x12')])};db[_0x9f83('0x13')]=db['sequelize']['import'](_0x9f83('0x14'));db[_0x9f83('0x15')]=db['sequelize']['import'](_0x9f83('0x16'));db[_0x9f83('0x17')]=db[_0x9f83('0x0')][_0x9f83('0x18')](_0x9f83('0x19'));db['VoiceExtension']=db[_0x9f83('0x0')][_0x9f83('0x18')](_0x9f83('0x1a'));db[_0x9f83('0x1b')]=db[_0x9f83('0x0')][_0x9f83('0x18')]('../api/voiceMusicOnHold/voiceMusicOnHold.model');db[_0x9f83('0x1c')]=db[_0x9f83('0x0')][_0x9f83('0x18')]('../api/voiceQueue/voiceQueue.model');db[_0x9f83('0x1d')]=db[_0x9f83('0x0')][_0x9f83('0x18')](_0x9f83('0x1e'));db['ScreenRecording']=db['sequelize'][_0x9f83('0x18')](_0x9f83('0x1f'));db[_0x9f83('0x20')]=db[_0x9f83('0x0')]['import'](_0x9f83('0x21'));db['VoiceMailMessage']=db['sequelize']['import'](_0x9f83('0x22'));db['VoiceCallReport']=db[_0x9f83('0x0')]['import'](_0x9f83('0x23'));db[_0x9f83('0x24')]=db[_0x9f83('0x0')]['import'](_0x9f83('0x25'));db['VoiceAgentReport']=db[_0x9f83('0x0')][_0x9f83('0x18')]('../api/voiceAgentReport/voiceAgentReport.model');db[_0x9f83('0x26')]=db['sequelize'][_0x9f83('0x18')]('../api/voiceQueueReport/voiceQueueReport.model');db['MemberReport']=db['sequelize'][_0x9f83('0x18')](_0x9f83('0x27'));db[_0x9f83('0x28')]=db[_0x9f83('0x0')][_0x9f83('0x18')](_0x9f83('0x29'));db[_0x9f83('0x2a')]=db[_0x9f83('0x0')][_0x9f83('0x18')]('../api/voiceTransferReport/voiceTransferReport.model');db[_0x9f83('0x2b')]=db[_0x9f83('0x0')][_0x9f83('0x18')]('../api/userVoiceQueueRt/userVoiceQueueRt.model');db['UserVoiceQueue']=db[_0x9f83('0x0')][_0x9f83('0x18')]('../api/userVoiceQueue/userVoiceQueue.model');db[_0x9f83('0x2c')]=db[_0x9f83('0x0')][_0x9f83('0x18')](_0x9f83('0x2d'));db[_0x9f83('0x2e')]=db[_0x9f83('0x0')]['import'](_0x9f83('0x2f'));db[_0x9f83('0x30')]=db[_0x9f83('0x0')]['import'](_0x9f83('0x31'));db[_0x9f83('0x32')]=db['sequelize'][_0x9f83('0x18')](_0x9f83('0x33'));db[_0x9f83('0x34')]=db[_0x9f83('0x0')]['import'](_0x9f83('0x35'));db[_0x9f83('0x36')]=db[_0x9f83('0x0')][_0x9f83('0x18')](_0x9f83('0x37'));db[_0x9f83('0x38')]=db[_0x9f83('0x0')][_0x9f83('0x18')](_0x9f83('0x39'));db[_0x9f83('0x3a')]=db[_0x9f83('0x0')][_0x9f83('0x18')](_0x9f83('0x3b'));db['MailAccount']=db['sequelize']['import'](_0x9f83('0x3c'));db[_0x9f83('0x3d')]=db['sequelize'][_0x9f83('0x18')](_0x9f83('0x3e'));db[_0x9f83('0x3f')]=db[_0x9f83('0x0')]['import'](_0x9f83('0x40'));db[_0x9f83('0x41')]=db[_0x9f83('0x0')][_0x9f83('0x18')](_0x9f83('0x42'));db[_0x9f83('0x43')]=db['sequelize'][_0x9f83('0x18')](_0x9f83('0x44'));db['MailApplication']=db[_0x9f83('0x0')][_0x9f83('0x18')](_0x9f83('0x45'));db[_0x9f83('0x46')]=db['sequelize'][_0x9f83('0x18')]('../api/mailQueueReport/mailQueueReport.model');db['Dashboard']=db['sequelize'][_0x9f83('0x18')](_0x9f83('0x47'));db[_0x9f83('0x48')]=db[_0x9f83('0x0')][_0x9f83('0x18')](_0x9f83('0x49'));db[_0x9f83('0x4a')]=db['sequelize'][_0x9f83('0x18')](_0x9f83('0x4b'));db[_0x9f83('0x4c')]=db['sequelize']['import'](_0x9f83('0x4d'));db[_0x9f83('0x4e')]=db[_0x9f83('0x0')][_0x9f83('0x18')](_0x9f83('0x4f'));db[_0x9f83('0x50')]=db[_0x9f83('0x0')]['import'](_0x9f83('0x51'));db[_0x9f83('0x52')]=db[_0x9f83('0x0')][_0x9f83('0x18')]('../api/faxQueue/faxQueue.model');db[_0x9f83('0x53')]=db[_0x9f83('0x0')]['import'](_0x9f83('0x54'));db['SmsAccount']=db[_0x9f83('0x0')]['import']('../api/smsAccount/smsAccount.model');db[_0x9f83('0x55')]=db[_0x9f83('0x0')][_0x9f83('0x18')](_0x9f83('0x56'));db[_0x9f83('0x57')]=db[_0x9f83('0x0')][_0x9f83('0x18')](_0x9f83('0x58'));db[_0x9f83('0x59')]=db[_0x9f83('0x0')]['import'](_0x9f83('0x5a'));db[_0x9f83('0x5b')]=db[_0x9f83('0x0')][_0x9f83('0x18')](_0x9f83('0x5c'));db[_0x9f83('0x5d')]=db[_0x9f83('0x0')][_0x9f83('0x18')](_0x9f83('0x5e'));db[_0x9f83('0x5f')]=db[_0x9f83('0x0')][_0x9f83('0x18')](_0x9f83('0x60'));db['OpenchannelInteraction']=db[_0x9f83('0x0')][_0x9f83('0x18')]('../api/openchannelInteraction/openchannelInteraction.model');db[_0x9f83('0x61')]=db['sequelize'][_0x9f83('0x18')]('../api/openchannelMessage/openchannelMessage.model');db[_0x9f83('0x62')]=db[_0x9f83('0x0')][_0x9f83('0x18')]('../api/openchannelQueue/openchannelQueue.model');db[_0x9f83('0x63')]=db[_0x9f83('0x0')][_0x9f83('0x18')](_0x9f83('0x64'));db['OpenchannelQueueReport']=db[_0x9f83('0x0')][_0x9f83('0x18')]('../api/openchannelQueueReport/openchannelQueueReport.model');db['ChatApplication']=db[_0x9f83('0x0')][_0x9f83('0x18')]('../api/chatApplication/chatApplication.model');db[_0x9f83('0x65')]=db[_0x9f83('0x0')][_0x9f83('0x18')](_0x9f83('0x66'));db[_0x9f83('0x67')]=db[_0x9f83('0x0')]['import'](_0x9f83('0x68'));db[_0x9f83('0x69')]=db[_0x9f83('0x0')][_0x9f83('0x18')](_0x9f83('0x6a'));db[_0x9f83('0x6b')]=db['sequelize'][_0x9f83('0x18')](_0x9f83('0x6c'));db[_0x9f83('0x6d')]=db['sequelize']['import'](_0x9f83('0x6e'));db['ChatProactiveAction']=db[_0x9f83('0x0')][_0x9f83('0x18')](_0x9f83('0x6f'));db[_0x9f83('0x70')]=db[_0x9f83('0x0')][_0x9f83('0x18')]('../api/cmCompany/cmCompany.model');db['CmContact']=db[_0x9f83('0x0')][_0x9f83('0x18')](_0x9f83('0x71'));db[_0x9f83('0x72')]=db[_0x9f83('0x0')]['import'](_0x9f83('0x73'));db[_0x9f83('0x74')]=db['sequelize'][_0x9f83('0x18')](_0x9f83('0x75'));db[_0x9f83('0x76')]=db['sequelize']['import']('../api/cmHopperFinal/cmHopperFinal.model');db[_0x9f83('0x77')]=db['sequelize'][_0x9f83('0x18')](_0x9f83('0x78'));db[_0x9f83('0x79')]=db['sequelize'][_0x9f83('0x18')](_0x9f83('0x7a'));db[_0x9f83('0x7b')]=db['sequelize'][_0x9f83('0x18')](_0x9f83('0x7c'));db[_0x9f83('0x7d')]=db[_0x9f83('0x0')][_0x9f83('0x18')]('../api/action/action.model');db[_0x9f83('0x7e')]=db['sequelize'][_0x9f83('0x18')](_0x9f83('0x7f'));db[_0x9f83('0x80')]=db[_0x9f83('0x0')][_0x9f83('0x18')](_0x9f83('0x81'));db[_0x9f83('0x82')]=db[_0x9f83('0x0')][_0x9f83('0x18')]('../api/disposition/disposition.model');db[_0x9f83('0x83')]=db[_0x9f83('0x0')][_0x9f83('0x18')]('../api/condition/condition.model');db['Interval']=db['sequelize'][_0x9f83('0x18')](_0x9f83('0x84'));db[_0x9f83('0x85')]=db[_0x9f83('0x0')]['import']('../api/pause/pause.model');db['Cdr']=db[_0x9f83('0x0')][_0x9f83('0x18')](_0x9f83('0x86'));db[_0x9f83('0x87')]=db[_0x9f83('0x0')]['import'](_0x9f83('0x88'));db[_0x9f83('0x89')]=db[_0x9f83('0x0')][_0x9f83('0x18')](_0x9f83('0x8a'));db[_0x9f83('0x8b')]=db[_0x9f83('0x0')][_0x9f83('0x18')](_0x9f83('0x8c'));db[_0x9f83('0x8d')]=db[_0x9f83('0x0')][_0x9f83('0x18')]('../api/tag/tag.model');db['Template']=db['sequelize'][_0x9f83('0x18')](_0x9f83('0x8e'));db[_0x9f83('0x8f')]=db['sequelize'][_0x9f83('0x18')](_0x9f83('0x90'));db['Variable']=db['sequelize']['import'](_0x9f83('0x91'));db[_0x9f83('0x92')]=db[_0x9f83('0x0')][_0x9f83('0x18')](_0x9f83('0x93'));db['IntegrationReport']=db[_0x9f83('0x0')][_0x9f83('0x18')]('../api/integrationReport/integrationReport.model');db['AnalyticCustomReport']=db[_0x9f83('0x0')][_0x9f83('0x18')](_0x9f83('0x94'));db[_0x9f83('0x95')]=db[_0x9f83('0x0')][_0x9f83('0x18')](_0x9f83('0x96'));db['AnalyticExtractedReport']=db[_0x9f83('0x0')][_0x9f83('0x18')](_0x9f83('0x97'));db[_0x9f83('0x98')]=db[_0x9f83('0x0')]['import']('../api/analyticMetric/analyticMetric.model');db[_0x9f83('0x99')]=db[_0x9f83('0x0')]['import'](_0x9f83('0x9a'));db[_0x9f83('0x9b')]=db['sequelize'][_0x9f83('0x18')]('../api/analyticTreeReport/analyticTreeReport.model');db[_0x9f83('0x9c')]=db[_0x9f83('0x0')][_0x9f83('0x18')](_0x9f83('0x9d'));db[_0x9f83('0x9e')]=db[_0x9f83('0x0')]['import'](_0x9f83('0x9f'));db['SalesforceField']=db[_0x9f83('0x0')][_0x9f83('0x18')](_0x9f83('0xa0'));db[_0x9f83('0xa1')]=db[_0x9f83('0x0')][_0x9f83('0x18')](_0x9f83('0xa2'));db['SugarcrmConfiguration']=db[_0x9f83('0x0')]['import'](_0x9f83('0xa3'));db['SugarcrmField']=db[_0x9f83('0x0')][_0x9f83('0x18')](_0x9f83('0xa4'));db[_0x9f83('0xa5')]=db[_0x9f83('0x0')]['import'](_0x9f83('0xa6'));db[_0x9f83('0xa7')]=db[_0x9f83('0x0')][_0x9f83('0x18')]('../api/intDeskConfiguration/intDeskConfiguration.model');db[_0x9f83('0xa8')]=db['sequelize'][_0x9f83('0x18')](_0x9f83('0xa9'));db[_0x9f83('0xaa')]=db['sequelize']['import'](_0x9f83('0xab'));db[_0x9f83('0xac')]=db[_0x9f83('0x0')][_0x9f83('0x18')](_0x9f83('0xad'));db['ZohoField']=db[_0x9f83('0x0')][_0x9f83('0x18')](_0x9f83('0xae'));db[_0x9f83('0xaf')]=db[_0x9f83('0x0')][_0x9f83('0x18')]('../api/intZendeskAccount/intZendeskAccount.model');db[_0x9f83('0xb0')]=db[_0x9f83('0x0')][_0x9f83('0x18')]('../api/intZendeskConfiguration/intZendeskConfiguration.model');db[_0x9f83('0xb1')]=db[_0x9f83('0x0')][_0x9f83('0x18')](_0x9f83('0xb2'));db[_0x9f83('0xb3')]=db[_0x9f83('0x0')][_0x9f83('0x18')]('../api/intFreshdeskAccount/intFreshdeskAccount.model');db[_0x9f83('0xb4')]=db[_0x9f83('0x0')][_0x9f83('0x18')](_0x9f83('0xb5'));db['FreshdeskField']=db[_0x9f83('0x0')]['import'](_0x9f83('0xb6'));db[_0x9f83('0xb7')]=db[_0x9f83('0x0')]['import']('../api/intVtigerAccount/intVtigerAccount.model');db['VtigerConfiguration']=db[_0x9f83('0x0')][_0x9f83('0x18')]('../api/intVtigerConfiguration/intVtigerConfiguration.model');db['VtigerField']=db[_0x9f83('0x0')][_0x9f83('0x18')](_0x9f83('0xb8'));db[_0x9f83('0xb9')]=db['sequelize']['import'](_0x9f83('0xba'));db[_0x9f83('0xbb')]=db[_0x9f83('0x0')][_0x9f83('0x18')](_0x9f83('0xbc'));db[_0x9f83('0xbd')]=db[_0x9f83('0x0')][_0x9f83('0x18')]('../api/intServicenowField/intServicenowField.model');db[_0x9f83('0xbe')]=db[_0x9f83('0x0')][_0x9f83('0x18')]('../api/intDynamics365Account/intDynamics365Account.model');db[_0x9f83('0xbf')]=db[_0x9f83('0x0')][_0x9f83('0x18')](_0x9f83('0xc0'));db[_0x9f83('0xc1')]=db[_0x9f83('0x0')][_0x9f83('0x18')](_0x9f83('0xc2'));db[_0x9f83('0xc3')]=db[_0x9f83('0x0')]['import'](_0x9f83('0xc4'));db[_0x9f83('0xc5')]=db[_0x9f83('0x0')][_0x9f83('0x18')]('../api/intFreshsalesConfiguration/intFreshsalesConfiguration.model');db[_0x9f83('0xc6')]=db['sequelize'][_0x9f83('0x18')]('../api/intFreshsalesField/intFreshsalesField.model');db[_0x9f83('0x92')]=db[_0x9f83('0x0')][_0x9f83('0x18')](_0x9f83('0x93'));db[_0x9f83('0xc7')]=db[_0x9f83('0x0')][_0x9f83('0x18')](_0x9f83('0xc8'));db['ChatQueueReport']=db[_0x9f83('0x0')]['import'](_0x9f83('0xc9'));db[_0x9f83('0xca')]=db['sequelize'][_0x9f83('0x18')](_0x9f83('0xcb'));db['JscriptyAnswerReport']=db[_0x9f83('0x0')][_0x9f83('0x18')](_0x9f83('0xcc'));db[_0x9f83('0xcd')]=db[_0x9f83('0x0')][_0x9f83('0x18')](_0x9f83('0xce'));db[_0x9f83('0xcf')]=db['sequelize']['import'](_0x9f83('0xd0'));db['SmsQueueReport']=db[_0x9f83('0x0')][_0x9f83('0x18')](_0x9f83('0xd1'));db[_0x9f83('0xd2')]=db[_0x9f83('0x0')][_0x9f83('0x18')](_0x9f83('0xd3'));db[_0x9f83('0xd4')]=db[_0x9f83('0x0')][_0x9f83('0x18')](_0x9f83('0xd5'));db[_0x9f83('0xd6')]=db['sequelize'][_0x9f83('0x18')](_0x9f83('0xd7'));db[_0x9f83('0xd8')]=db['sequelize'][_0x9f83('0x18')]('../api/setting/setting.model');db[_0x9f83('0xd9')]=db[_0x9f83('0x0')][_0x9f83('0x18')](_0x9f83('0xda'));db['SquareProject']=db[_0x9f83('0x0')][_0x9f83('0x18')]('../api/squareProject/squareProject.model');db['SquareRecording']=db[_0x9f83('0x0')][_0x9f83('0x18')](_0x9f83('0xdb'));db['SquareMessage']=db[_0x9f83('0x0')][_0x9f83('0x18')](_0x9f83('0xdc'));db[_0x9f83('0xdd')]=db[_0x9f83('0x0')][_0x9f83('0x18')](_0x9f83('0xde'));db['License']=db[_0x9f83('0x0')][_0x9f83('0x18')](_0x9f83('0xdf'));db[_0x9f83('0xe0')]=db['sequelize'][_0x9f83('0x18')](_0x9f83('0xe1'));db[_0x9f83('0xe2')]=db[_0x9f83('0x0')]['import'](_0x9f83('0xe3'));db[_0x9f83('0xe4')]=db[_0x9f83('0x0')]['import'](_0x9f83('0xe5'));db['Plugin']=db[_0x9f83('0x0')][_0x9f83('0x18')](_0x9f83('0xe6'));db[_0x9f83('0xe7')]=db[_0x9f83('0x0')][_0x9f83('0x18')]('../api/mailTransferReport/mailTransferReport.model');db[_0x9f83('0xe8')]=db[_0x9f83('0x0')][_0x9f83('0x18')](_0x9f83('0xe9'));db[_0x9f83('0xea')]=db[_0x9f83('0x0')][_0x9f83('0x18')](_0x9f83('0xeb'));db[_0x9f83('0xec')]=db[_0x9f83('0x0')]['import'](_0x9f83('0xed'));db[_0x9f83('0xee')]=db[_0x9f83('0x0')][_0x9f83('0x18')](_0x9f83('0xef'));db['CmList']=db['sequelize'][_0x9f83('0x18')](_0x9f83('0xf0'));db[_0x9f83('0xf1')]=db[_0x9f83('0x0')][_0x9f83('0x18')]('../api/voicePrefix/voicePrefix.model');db[_0x9f83('0xf2')]=db[_0x9f83('0x0')][_0x9f83('0x18')](_0x9f83('0xf3'));db[_0x9f83('0xf4')]=db[_0x9f83('0x0')]['import'](_0x9f83('0xf5'));db['UserProfileResource']=db['sequelize'][_0x9f83('0x18')](_0x9f83('0xf6'));db[_0x9f83('0xf7')]=db[_0x9f83('0x0')][_0x9f83('0x18')](_0x9f83('0xf8'));db[_0x9f83('0xf9')]=db['sequelize'][_0x9f83('0x18')](_0x9f83('0xfa'));db['WhatsappApplication']=db[_0x9f83('0x0')]['import'](_0x9f83('0xfb'));db[_0x9f83('0xfc')]=db[_0x9f83('0x0')][_0x9f83('0x18')]('../api/whatsappInteraction/whatsappInteraction.model');db[_0x9f83('0xfd')]=db['sequelize'][_0x9f83('0x18')]('../api/whatsappMessage/whatsappMessage.model');db[_0x9f83('0xfe')]=db['sequelize'][_0x9f83('0x18')](_0x9f83('0xff'));db[_0x9f83('0x100')]=db[_0x9f83('0x0')][_0x9f83('0x18')](_0x9f83('0x101'));db[_0x9f83('0x102')]=db['sequelize']['import'](_0x9f83('0x103'));db['CloudProvider']=db[_0x9f83('0x0')]['import'](_0x9f83('0x104'));db[_0x9f83('0x105')]=db[_0x9f83('0x0')]['import']('../api/teamVoiceQueue/teamVoiceQueue.model');db[_0x9f83('0x13')][_0x9f83('0x106')](db[_0x9f83('0x20')],{'as':_0x9f83('0x20'),'onDelete':'cascade','foreignKey':_0x9f83('0x107')});db[_0x9f83('0x13')][_0x9f83('0x108')](db[_0x9f83('0x1d')],{'as':'Recordings','foreignKey':_0x9f83('0x107')});db[_0x9f83('0x13')][_0x9f83('0x108')](db[_0x9f83('0x2b')],{'as':_0x9f83('0x109'),'foreignKey':_0x9f83('0x107')});db[_0x9f83('0x13')]['hasMany'](db[_0x9f83('0x10a')],{'as':_0x9f83('0x10b'),'onDelete':'cascade','hooks':!![]});db['User'][_0x9f83('0x108')](db['CmHopperFinal'],{'as':_0x9f83('0x10c'),'foreignKey':_0x9f83('0x107')});db[_0x9f83('0x13')]['hasMany'](db[_0x9f83('0x77')],{'as':_0x9f83('0x10d'),'foreignKey':_0x9f83('0x107')});db[_0x9f83('0x13')][_0x9f83('0x108')](db['ReportAgentPreview'],{'as':_0x9f83('0x79'),'foreignKey':_0x9f83('0x107')});db['User'][_0x9f83('0x108')](db[_0x9f83('0x10e')],{'as':_0x9f83('0x10f'),'foreignKey':_0x9f83('0x107')});db['User']['hasMany'](db[_0x9f83('0x65')],{'as':'ChatInteractions','foreignKey':_0x9f83('0x107')});db[_0x9f83('0x13')][_0x9f83('0x108')](db[_0x9f83('0x57')],{'as':_0x9f83('0x110'),'foreignKey':_0x9f83('0x107')});db[_0x9f83('0x13')][_0x9f83('0x108')](db[_0x9f83('0x4e')],{'as':'FaxInteractions','foreignKey':'UserId'});db[_0x9f83('0x13')][_0x9f83('0x108')](db[_0x9f83('0x41')],{'as':_0x9f83('0x111'),'foreignKey':'UserId'});db[_0x9f83('0x13')][_0x9f83('0x108')](db['WhatsappInteraction'],{'as':_0x9f83('0x112'),'foreignKey':'UserId'});db['User'][_0x9f83('0x108')](db[_0x9f83('0xf7')],{'as':_0x9f83('0x113'),'foreignKey':_0x9f83('0x114')});db[_0x9f83('0x13')][_0x9f83('0x115')](db[_0x9f83('0xf2')],{'as':_0x9f83('0xf2'),'foreignKey':_0x9f83('0x116')});db[_0x9f83('0x13')][_0x9f83('0x117')](db[_0x9f83('0x6d')],{'as':'Groups','through':'chat_group_has_users'});db['User']['belongsToMany'](db[_0x9f83('0x118')],{'as':_0x9f83('0x119'),'through':_0x9f83('0x11a')});db[_0x9f83('0x13')]['belongsToMany'](db[_0x9f83('0x11b')],{'as':'Lists','through':'cm_user_has_lists'});db[_0x9f83('0x13')]['belongsToMany'](db[_0x9f83('0xdd')],{'through':_0x9f83('0x11c')});db[_0x9f83('0x13')]['belongsToMany'](db[_0x9f83('0x41')],{'as':'MailInteractions','through':_0x9f83('0x11d')});db[_0x9f83('0x13')][_0x9f83('0x117')](db[_0x9f83('0x65')],{'as':'ChatInteractions','through':_0x9f83('0x11e')});db['User'][_0x9f83('0x117')](db['FaxInteraction'],{'as':'FaxInteractions','through':'user_has_fax_interactions'});db[_0x9f83('0x13')][_0x9f83('0x117')](db[_0x9f83('0x57')],{'as':_0x9f83('0x110'),'through':_0x9f83('0x11f')});db[_0x9f83('0x13')][_0x9f83('0x117')](db[_0x9f83('0x10e')],{'as':_0x9f83('0x10f'),'through':'user_has_openchannel_interactions'});db[_0x9f83('0x13')][_0x9f83('0x117')](db[_0x9f83('0xfc')],{'as':_0x9f83('0x112'),'through':_0x9f83('0x120')});db[_0x9f83('0x13')][_0x9f83('0x117')](db['VoiceQueue'],{'as':_0x9f83('0x121'),'through':_0x9f83('0x122'),'required':![]});db[_0x9f83('0x13')][_0x9f83('0x117')](db[_0x9f83('0x3d')],{'as':_0x9f83('0x123'),'through':_0x9f83('0x2e'),'required':![]});db[_0x9f83('0x13')][_0x9f83('0x117')](db[_0x9f83('0x6b')],{'as':_0x9f83('0x124'),'through':_0x9f83('0x2c'),'required':![],'hooks':!![]});db[_0x9f83('0x13')][_0x9f83('0x117')](db[_0x9f83('0x52')],{'as':_0x9f83('0x125'),'through':_0x9f83('0x30'),'required':![]});db[_0x9f83('0x13')][_0x9f83('0x117')](db[_0x9f83('0x5b')],{'as':_0x9f83('0x126'),'through':_0x9f83('0x32'),'required':![]});db[_0x9f83('0x13')][_0x9f83('0x117')](db[_0x9f83('0x62')],{'as':'OpenchannelQueues','through':_0x9f83('0x34'),'required':![]});db['User'][_0x9f83('0x117')](db[_0x9f83('0x102')],{'as':'WhatsappQueues','through':_0x9f83('0x36'),'required':![]});db[_0x9f83('0x13')][_0x9f83('0x117')](db[_0x9f83('0x11b')],{'through':_0x9f83('0x127')});db[_0x9f83('0x13')][_0x9f83('0x117')](db['VoicePrefix'],{'as':_0x9f83('0x128'),'through':_0x9f83('0x129'),'required':![]});db[_0x9f83('0x13')][_0x9f83('0x117')](db[_0x9f83('0x63')],{'as':_0x9f83('0x12a'),'through':_0x9f83('0x12b')});db[_0x9f83('0x13')][_0x9f83('0x117')](db[_0x9f83('0x4a')],{'as':'FaxAccounts','through':_0x9f83('0x12c')});db[_0x9f83('0x13')][_0x9f83('0x117')](db[_0x9f83('0x12d')],{'as':_0x9f83('0x12e'),'through':_0x9f83('0x12f')});db[_0x9f83('0x13')][_0x9f83('0x117')](db[_0x9f83('0x5d')],{'as':'OpenchannelAccounts','through':_0x9f83('0x130')});db['User']['belongsToMany'](db[_0x9f83('0x131')],{'as':_0x9f83('0x132'),'through':'user_has_sms_accounts'});db[_0x9f83('0x13')][_0x9f83('0x117')](db[_0x9f83('0xf9')],{'as':_0x9f83('0x133'),'through':_0x9f83('0x134')});db['User']['belongsToMany'](db[_0x9f83('0x135')],{'as':'SquareProjects','through':_0x9f83('0x136')});db[_0x9f83('0x15')][_0x9f83('0x108')](db[_0x9f83('0x10a')],{'as':_0x9f83('0x137'),'onDelete':_0x9f83('0x138'),'foreignKey':_0x9f83('0x139')});db[_0x9f83('0x17')][_0x9f83('0x108')](db[_0x9f83('0x10a')],{'onDelete':_0x9f83('0x138')});db[_0x9f83('0x10a')][_0x9f83('0x108')](db['VoiceExtension'],{'as':_0x9f83('0x13a'),'onDelete':'cascade'});db[_0x9f83('0x1b')]['belongsToMany'](db[_0x9f83('0x8b')],{'as':_0x9f83('0x13b'),'through':_0x9f83('0x13c')});db[_0x9f83('0x1c')][_0x9f83('0x108')](db['UserVoiceQueueRt'],{'as':_0x9f83('0x13d'),'foreignKey':_0x9f83('0x13e')});db[_0x9f83('0x1c')][_0x9f83('0x108')](db[_0x9f83('0x72')],{'as':'Hoppers','foreignKey':_0x9f83('0x13e')});db[_0x9f83('0x1c')][_0x9f83('0x108')](db[_0x9f83('0x76')],{'as':_0x9f83('0x10c'),'foreignKey':_0x9f83('0x13e')});db['VoiceQueue'][_0x9f83('0x108')](db['CmHopperHistory'],{'as':_0x9f83('0x13f'),'foreignKey':_0x9f83('0x13e')});db[_0x9f83('0x1c')]['hasMany'](db[_0x9f83('0x79')],{'as':_0x9f83('0x79'),'foreignKey':_0x9f83('0x13e')});db['VoiceQueue'][_0x9f83('0x108')](db[_0x9f83('0x74')],{'as':_0x9f83('0x140'),'foreignKey':_0x9f83('0x13e')});db['VoiceQueue'][_0x9f83('0x108')](db[_0x9f83('0xcf')],{'as':'JscriptySessions','foreignKey':_0x9f83('0x13e')});db[_0x9f83('0x1c')][_0x9f83('0x115')](db['Trunk'],{'as':'Trunk','foreignKey':'TrunkId'});db[_0x9f83('0x1c')][_0x9f83('0x115')](db[_0x9f83('0x28')],{'as':_0x9f83('0x141'),'foreignKey':_0x9f83('0x142')});db[_0x9f83('0x1c')][_0x9f83('0x115')](db[_0x9f83('0x143')],{'as':_0x9f83('0x143'),'foreignKey':_0x9f83('0x144')});db['VoiceQueue'][_0x9f83('0x115')](db['Pause'],{'as':_0x9f83('0x145'),'foreignKey':_0x9f83('0x146')});db[_0x9f83('0x1c')][_0x9f83('0x117')](db[_0x9f83('0x11b')],{'as':_0x9f83('0x147'),'through':_0x9f83('0x148')});db[_0x9f83('0x1c')][_0x9f83('0x117')](db[_0x9f83('0x13')],{'as':_0x9f83('0x149'),'through':_0x9f83('0x122')});db[_0x9f83('0x1c')][_0x9f83('0x117')](db[_0x9f83('0xdd')],{'as':_0x9f83('0x14a'),'through':'TeamVoiceQueue'});db[_0x9f83('0x1c')]['belongsToMany'](db[_0x9f83('0x11b')],{'as':_0x9f83('0x14b'),'through':_0x9f83('0x14c')});db['VoiceRecording'][_0x9f83('0x115')](db['User'],{'as':'User','foreignKey':_0x9f83('0x107')});db['ScreenRecording'][_0x9f83('0x115')](db['User'],{'as':_0x9f83('0x13'),'foreignKey':_0x9f83('0x107')});db[_0x9f83('0x20')][_0x9f83('0x108')](db['VoiceMailMessage'],{'as':_0x9f83('0x14d'),'onDelete':_0x9f83('0x138'),'foreignKey':'mailboxuser','sourceKey':_0x9f83('0x14e')});db[_0x9f83('0x14f')]['belongsTo'](db['VoiceMail'],{'foreignKey':_0x9f83('0x150'),'targetKey':_0x9f83('0x14e')});db[_0x9f83('0x151')][_0x9f83('0x108')](db[_0x9f83('0x26')],{'as':_0x9f83('0x152'),'foreignKey':'uniqueid','constraints':![]});db[_0x9f83('0x151')]['hasMany'](db[_0x9f83('0x153')],{'as':_0x9f83('0x154'),'foreignKey':_0x9f83('0x155'),'constraints':![]});db['VoiceCallReport'][_0x9f83('0x115')](db['User'],{'as':'User','foreignKey':'UserId'});db[_0x9f83('0x151')][_0x9f83('0x115')](db[_0x9f83('0x118')],{'as':_0x9f83('0x156'),'foreignKey':_0x9f83('0x157')});db[_0x9f83('0x38')][_0x9f83('0x115')](db[_0x9f83('0x12d')],{'as':_0x9f83('0x12d'),'foreignKey':'MailAccountId'});db['MailServerOut'][_0x9f83('0x115')](db[_0x9f83('0x12d')],{'as':_0x9f83('0x12d'),'foreignKey':_0x9f83('0x158')});db[_0x9f83('0x12d')]['hasOne'](db[_0x9f83('0x38')],{'as':_0x9f83('0x159'),'onDelete':_0x9f83('0x138')});db[_0x9f83('0x12d')][_0x9f83('0x106')](db[_0x9f83('0x3a')],{'as':_0x9f83('0x15a'),'onDelete':_0x9f83('0x138')});db[_0x9f83('0x12d')]['hasMany'](db[_0x9f83('0x82')],{'as':_0x9f83('0x15b'),'foreignKey':_0x9f83('0x158'),'onDelete':_0x9f83('0x138')});db[_0x9f83('0x12d')][_0x9f83('0x108')](db['CannedAnswer'],{'as':_0x9f83('0x15c'),'foreignKey':_0x9f83('0x158')});db[_0x9f83('0x12d')][_0x9f83('0x108')](db['MailMessage'],{'as':'Messages','foreignKey':_0x9f83('0x158')});db[_0x9f83('0x12d')]['hasMany'](db['MailInteraction'],{'as':_0x9f83('0x15d')});db[_0x9f83('0x12d')][_0x9f83('0x108')](db[_0x9f83('0x15e')],{'as':_0x9f83('0x13a')});db['MailAccount'][_0x9f83('0x115')](db[_0x9f83('0x11b')],{'as':_0x9f83('0x15f'),'foreignKey':_0x9f83('0x160')});db['MailAccount']['belongsTo'](db['Template'],{'as':_0x9f83('0x161'),'foreignKey':'TemplateId'});db['MailAccount'][_0x9f83('0x115')](db[_0x9f83('0x85')],{'as':_0x9f83('0x145'),'foreignKey':_0x9f83('0x146')});db[_0x9f83('0x12d')][_0x9f83('0x117')](db[_0x9f83('0x13')],{'as':_0x9f83('0x149'),'through':_0x9f83('0x12f')});db[_0x9f83('0x3d')][_0x9f83('0x117')](db['User'],{'as':_0x9f83('0x149'),'through':_0x9f83('0x2e')});db[_0x9f83('0x3d')]['belongsToMany'](db[_0x9f83('0xdd')],{'through':'team_has_mail_queues','as':_0x9f83('0x14a')});db['MailInteraction']['hasMany'](db[_0x9f83('0x43')],{'as':'Messages','onDelete':_0x9f83('0x138'),'foreignKey':'MailInteractionId'});db['MailInteraction']['belongsTo'](db[_0x9f83('0x12d')],{'as':'Account','foreignKey':'MailAccountId'});db['MailInteraction'][_0x9f83('0x115')](db[_0x9f83('0x118')],{'as':_0x9f83('0x156'),'foreignKey':_0x9f83('0x157')});db[_0x9f83('0x41')][_0x9f83('0x115')](db[_0x9f83('0x13')],{'as':_0x9f83('0x162'),'foreignKey':_0x9f83('0x107')});db[_0x9f83('0x41')][_0x9f83('0x117')](db[_0x9f83('0x8d')],{'through':_0x9f83('0x163'),'as':_0x9f83('0x164')});db[_0x9f83('0x41')][_0x9f83('0x117')](db['Tag'],{'through':'mail_interaction_has_tags','as':'ThroughTags'});db[_0x9f83('0x41')][_0x9f83('0x117')](db['User'],{'as':_0x9f83('0x165'),'through':_0x9f83('0x11d'),'foreignKey':_0x9f83('0x166')});db[_0x9f83('0x43')]['hasMany'](db[_0x9f83('0xe4')],{'as':_0x9f83('0x167'),'onDelete':_0x9f83('0x138')});db[_0x9f83('0x43')][_0x9f83('0x115')](db[_0x9f83('0x13')],{'as':'User'});db[_0x9f83('0x43')]['belongsTo'](db[_0x9f83('0x118')],{'onDelete':_0x9f83('0x138'),'as':_0x9f83('0x156')});db[_0x9f83('0x43')]['belongsTo'](db[_0x9f83('0x41')],{'as':_0x9f83('0x168'),'foreignKey':_0x9f83('0x166')});db[_0x9f83('0x43')]['belongsTo'](db['MailAccount'],{'as':'Account','foreignKey':'MailAccountId'});db[_0x9f83('0x43')][_0x9f83('0x115')](db[_0x9f83('0x63')],{'as':_0x9f83('0x63'),'foreignKey':_0x9f83('0x169')});db[_0x9f83('0x43')][_0x9f83('0x115')](db['ChatOfflineMessage'],{'as':'ChatOfflineMessage','foreignKey':'ChatOfflineMessageId'});db[_0x9f83('0x15e')][_0x9f83('0x115')](db['User'],{'onDelete':'restrict'});db[_0x9f83('0x15e')][_0x9f83('0x115')](db[_0x9f83('0x3d')],{'onDelete':_0x9f83('0x16a')});db[_0x9f83('0x15e')][_0x9f83('0x115')](db[_0x9f83('0x12d')],{'onDelete':'restrict'});db[_0x9f83('0x15e')][_0x9f83('0x115')](db[_0x9f83('0x143')],{'onDelete':'restrict','foreignKey':_0x9f83('0x144')});db[_0x9f83('0x15e')]['belongsTo'](db[_0x9f83('0x8d')],{'onDelete':_0x9f83('0x16a'),'foreignKey':_0x9f83('0x16b')});db['MailQueueReport'][_0x9f83('0x115')](db['MailAccount'],{});db[_0x9f83('0x46')][_0x9f83('0x115')](db[_0x9f83('0x11b')],{'as':_0x9f83('0x15f'),'foreignKey':_0x9f83('0x160')});db[_0x9f83('0x46')][_0x9f83('0x115')](db[_0x9f83('0x118')],{'as':_0x9f83('0x156'),'foreignKey':_0x9f83('0x157')});db[_0x9f83('0x46')][_0x9f83('0x115')](db['MailInteraction'],{});db[_0x9f83('0x46')][_0x9f83('0x115')](db['MailMessage'],{});db[_0x9f83('0x46')]['belongsTo'](db[_0x9f83('0x13')],{});db[_0x9f83('0x46')][_0x9f83('0x115')](db[_0x9f83('0x3d')],{});db[_0x9f83('0x16c')][_0x9f83('0x108')](db['DashboardItem'],{'as':_0x9f83('0x16d'),'onDelete':_0x9f83('0x138')});db['FaxAccount'][_0x9f83('0x108')](db[_0x9f83('0x82')],{'as':_0x9f83('0x15b'),'foreignKey':'FaxAccountId','onDelete':_0x9f83('0x138')});db[_0x9f83('0x4a')][_0x9f83('0x108')](db[_0x9f83('0x80')],{'as':'Answers','foreignKey':'FaxAccountId'});db[_0x9f83('0x4a')][_0x9f83('0x108')](db[_0x9f83('0x4e')],{'as':_0x9f83('0x15d')});db['FaxAccount']['hasMany'](db[_0x9f83('0x4c')],{'as':'Applications'});db['FaxAccount'][_0x9f83('0x108')](db[_0x9f83('0x10a')],{'as':'Exntensions','onDelete':_0x9f83('0x138')});db[_0x9f83('0x4a')][_0x9f83('0x108')](db[_0x9f83('0x50')],{'as':_0x9f83('0x14d')});db[_0x9f83('0x4a')][_0x9f83('0x115')](db[_0x9f83('0x28')],{'as':_0x9f83('0x28')});db[_0x9f83('0x4a')][_0x9f83('0x115')](db[_0x9f83('0x11b')],{'as':_0x9f83('0x15f'),'foreignKey':_0x9f83('0x160')});db['FaxAccount'][_0x9f83('0x115')](db[_0x9f83('0x85')],{'as':_0x9f83('0x145'),'foreignKey':'mandatoryDispositionPauseId'});db['FaxAccount'][_0x9f83('0x117')](db[_0x9f83('0x13')],{'as':_0x9f83('0x149'),'through':'user_has_fax_accounts'});db[_0x9f83('0x4c')][_0x9f83('0x115')](db[_0x9f83('0x13')],{'onDelete':_0x9f83('0x16a')});db['FaxApplication'][_0x9f83('0x115')](db['FaxQueue'],{'onDelete':'restrict'});db[_0x9f83('0x4c')][_0x9f83('0x115')](db[_0x9f83('0x4a')],{'onDelete':_0x9f83('0x16a')});db[_0x9f83('0x4c')][_0x9f83('0x115')](db[_0x9f83('0x8d')],{'onDelete':'restrict','foreignKey':_0x9f83('0x16b')});db[_0x9f83('0x4e')][_0x9f83('0x108')](db[_0x9f83('0x50')],{'as':_0x9f83('0x14d'),'onDelete':_0x9f83('0x138'),'foreignKey':_0x9f83('0x16e')});db[_0x9f83('0x4e')][_0x9f83('0x115')](db[_0x9f83('0x4a')],{'as':_0x9f83('0x16f'),'foreignKey':_0x9f83('0x170')});db[_0x9f83('0x4e')]['belongsTo'](db[_0x9f83('0x118')],{'as':_0x9f83('0x156'),'foreignKey':'ContactId'});db[_0x9f83('0x4e')][_0x9f83('0x115')](db['User'],{'as':_0x9f83('0x162'),'foreignKey':'UserId'});db['FaxInteraction'][_0x9f83('0x117')](db[_0x9f83('0x8d')],{'through':'fax_interaction_has_tags','as':_0x9f83('0x164')});db['FaxInteraction'][_0x9f83('0x117')](db['Tag'],{'through':'fax_interaction_has_tags','as':'ThroughTags'});db[_0x9f83('0x4e')][_0x9f83('0x117')](db[_0x9f83('0x13')],{'as':_0x9f83('0x165'),'through':'user_has_fax_interactions','foreignKey':_0x9f83('0x16e')});db['FaxMessage']['belongsTo'](db['User'],{'onDelete':'cascade','as':_0x9f83('0x13')});db[_0x9f83('0x50')]['belongsTo'](db[_0x9f83('0x4e')],{'as':_0x9f83('0x168'),'foreignKey':_0x9f83('0x16e')});db[_0x9f83('0x50')]['belongsTo'](db[_0x9f83('0x118')],{'onDelete':_0x9f83('0x138'),'as':_0x9f83('0x156')});db[_0x9f83('0x50')][_0x9f83('0x115')](db['Attachment'],{'as':_0x9f83('0xe4'),'foreignKey':_0x9f83('0x171')});db[_0x9f83('0x50')][_0x9f83('0x115')](db[_0x9f83('0x4a')],{'as':_0x9f83('0x16f'),'foreignKey':_0x9f83('0x170')});db[_0x9f83('0x52')][_0x9f83('0x117')](db[_0x9f83('0x13')],{'as':_0x9f83('0x149'),'through':_0x9f83('0x30')});db['FaxQueue'][_0x9f83('0x117')](db[_0x9f83('0xdd')],{'through':_0x9f83('0x172'),'as':'Teams'});db[_0x9f83('0x53')][_0x9f83('0x115')](db[_0x9f83('0x4a')],{});db[_0x9f83('0x53')]['belongsTo'](db[_0x9f83('0x11b')],{'as':_0x9f83('0x15f'),'foreignKey':_0x9f83('0x160')});db[_0x9f83('0x53')]['belongsTo'](db[_0x9f83('0x118')],{'as':_0x9f83('0x156'),'foreignKey':_0x9f83('0x157')});db[_0x9f83('0x53')]['belongsTo'](db[_0x9f83('0x4e')],{});db[_0x9f83('0x53')][_0x9f83('0x115')](db['FaxMessage'],{});db[_0x9f83('0x53')][_0x9f83('0x115')](db['User'],{});db[_0x9f83('0x53')][_0x9f83('0x115')](db['FaxQueue'],{});db[_0x9f83('0x131')][_0x9f83('0x108')](db[_0x9f83('0x82')],{'as':_0x9f83('0x15b'),'foreignKey':_0x9f83('0x173'),'onDelete':'cascade'});db[_0x9f83('0x131')]['hasMany'](db[_0x9f83('0x80')],{'as':'Answers','foreignKey':'SmsAccountId'});db['SmsAccount']['hasMany'](db[_0x9f83('0x59')],{'as':_0x9f83('0x14d'),'foreignKey':_0x9f83('0x173')});db[_0x9f83('0x131')]['hasMany'](db[_0x9f83('0x57')],{'as':'Interactions'});db[_0x9f83('0x131')][_0x9f83('0x108')](db[_0x9f83('0x55')],{'as':'Applications'});db[_0x9f83('0x131')][_0x9f83('0x115')](db[_0x9f83('0x11b')],{'as':_0x9f83('0x15f'),'foreignKey':_0x9f83('0x160')});db[_0x9f83('0x131')]['belongsTo'](db['Pause'],{'as':'mandatoryDispositionPause','foreignKey':_0x9f83('0x146')});db[_0x9f83('0x131')]['belongsToMany'](db[_0x9f83('0x13')],{'as':_0x9f83('0x149'),'through':_0x9f83('0x174')});db['SmsApplication'][_0x9f83('0x115')](db[_0x9f83('0x13')],{'onDelete':'restrict'});db[_0x9f83('0x55')]['belongsTo'](db[_0x9f83('0x5b')],{'onDelete':_0x9f83('0x16a')});db[_0x9f83('0x55')][_0x9f83('0x115')](db[_0x9f83('0x131')],{'onDelete':_0x9f83('0x16a')});db[_0x9f83('0x55')][_0x9f83('0x115')](db[_0x9f83('0x143')],{'onDelete':_0x9f83('0x16a'),'foreignKey':_0x9f83('0x144')});db[_0x9f83('0x55')]['belongsTo'](db[_0x9f83('0x8d')],{'onDelete':_0x9f83('0x16a'),'foreignKey':_0x9f83('0x16b')});db[_0x9f83('0x57')][_0x9f83('0x108')](db[_0x9f83('0x59')],{'as':_0x9f83('0x14d'),'onDelete':_0x9f83('0x138'),'foreignKey':'SmsInteractionId'});db[_0x9f83('0x57')]['belongsTo'](db[_0x9f83('0x131')],{'as':'Account','foreignKey':'SmsAccountId'});db['SmsInteraction']['belongsTo'](db[_0x9f83('0x118')],{'as':_0x9f83('0x156'),'foreignKey':_0x9f83('0x157')});db[_0x9f83('0x57')]['belongsTo'](db[_0x9f83('0x13')],{'as':'Owner','foreignKey':_0x9f83('0x107')});db[_0x9f83('0x57')][_0x9f83('0x117')](db[_0x9f83('0x8d')],{'through':_0x9f83('0x175'),'as':_0x9f83('0x164')});db[_0x9f83('0x57')][_0x9f83('0x117')](db[_0x9f83('0x8d')],{'through':_0x9f83('0x175'),'as':_0x9f83('0x176')});db[_0x9f83('0x57')][_0x9f83('0x117')](db[_0x9f83('0x13')],{'as':_0x9f83('0x165'),'through':'user_has_sms_interactions','foreignKey':_0x9f83('0x177')});db['SmsMessage'][_0x9f83('0x115')](db[_0x9f83('0x13')],{'as':'User'});db[_0x9f83('0x59')][_0x9f83('0x115')](db[_0x9f83('0x118')],{'onDelete':_0x9f83('0x138'),'as':_0x9f83('0x156')});db[_0x9f83('0x59')][_0x9f83('0x115')](db[_0x9f83('0x57')],{'onDelete':_0x9f83('0x138'),'as':'Interaction','foreignKey':_0x9f83('0x177')});db[_0x9f83('0x59')][_0x9f83('0x115')](db[_0x9f83('0x131')],{'as':_0x9f83('0x16f'),'foreignKey':'SmsAccountId'});db[_0x9f83('0x5b')]['belongsToMany'](db[_0x9f83('0x13')],{'as':_0x9f83('0x149'),'through':_0x9f83('0x32'),'foreignKey':_0x9f83('0x178')});db[_0x9f83('0x5b')]['belongsToMany'](db[_0x9f83('0xdd')],{'through':'team_has_sms_queues','as':'Teams'});db[_0x9f83('0x5d')][_0x9f83('0x108')](db['Disposition'],{'as':_0x9f83('0x15b'),'foreignKey':'OpenchannelAccountId','onDelete':_0x9f83('0x138')});db['OpenchannelAccount'][_0x9f83('0x108')](db[_0x9f83('0x80')],{'as':_0x9f83('0x15c'),'foreignKey':_0x9f83('0x179')});db['OpenchannelAccount'][_0x9f83('0x108')](db[_0x9f83('0x10e')],{'as':_0x9f83('0x15d'),'foreignKey':_0x9f83('0x179')});db[_0x9f83('0x5d')][_0x9f83('0x108')](db[_0x9f83('0x61')],{'as':_0x9f83('0x14d'),'foreignKey':_0x9f83('0x179')});db[_0x9f83('0x5d')][_0x9f83('0x108')](db[_0x9f83('0x5f')],{'as':'Applications','foreignKey':'OpenchannelAccountId'});db['OpenchannelAccount'][_0x9f83('0x115')](db[_0x9f83('0x11b')],{'as':_0x9f83('0x15f'),'foreignKey':_0x9f83('0x160')});db[_0x9f83('0x5d')][_0x9f83('0x115')](db[_0x9f83('0x85')],{'as':_0x9f83('0x145'),'foreignKey':_0x9f83('0x146')});db['OpenchannelAccount'][_0x9f83('0x117')](db[_0x9f83('0x13')],{'as':_0x9f83('0x149'),'through':_0x9f83('0x130')});db[_0x9f83('0x5f')][_0x9f83('0x115')](db[_0x9f83('0x13')],{'onDelete':_0x9f83('0x16a')});db['OpenchannelApplication'][_0x9f83('0x115')](db['OpenchannelQueue'],{'onDelete':_0x9f83('0x16a'),'foreignKey':_0x9f83('0x17a')});db[_0x9f83('0x5f')]['belongsTo'](db[_0x9f83('0x5d')],{'onDelete':_0x9f83('0x16a'),'foreignKey':_0x9f83('0x179')});db['OpenchannelApplication'][_0x9f83('0x115')](db[_0x9f83('0x143')],{'onDelete':_0x9f83('0x16a'),'foreignKey':_0x9f83('0x144')});db['OpenchannelApplication'][_0x9f83('0x115')](db[_0x9f83('0x8d')],{'onDelete':_0x9f83('0x16a'),'foreignKey':'TagId'});db[_0x9f83('0x10e')]['hasMany'](db['OpenchannelMessage'],{'as':_0x9f83('0x14d'),'onDelete':_0x9f83('0x138'),'foreignKey':'OpenchannelInteractionId'});db['OpenchannelInteraction'][_0x9f83('0x115')](db[_0x9f83('0x5d')],{'as':_0x9f83('0x16f'),'foreignKey':_0x9f83('0x179')});db['OpenchannelInteraction']['belongsTo'](db[_0x9f83('0x118')],{'as':_0x9f83('0x156'),'foreignKey':'ContactId'});db[_0x9f83('0x10e')][_0x9f83('0x115')](db[_0x9f83('0x13')],{'as':_0x9f83('0x162'),'foreignKey':'UserId'});db[_0x9f83('0x10e')][_0x9f83('0x117')](db['Tag'],{'through':_0x9f83('0x17b'),'as':_0x9f83('0x164')});db[_0x9f83('0x10e')][_0x9f83('0x117')](db[_0x9f83('0x8d')],{'through':'openchannel_interaction_has_tags','as':'ThroughTags'});db[_0x9f83('0x10e')][_0x9f83('0x117')](db['User'],{'as':_0x9f83('0x165'),'through':_0x9f83('0x17c'),'foreignKey':_0x9f83('0x17d')});db['OpenchannelMessage'][_0x9f83('0x115')](db[_0x9f83('0x13')],{'onDelete':_0x9f83('0x138'),'as':_0x9f83('0x13')});db[_0x9f83('0x61')]['belongsTo'](db[_0x9f83('0x118')],{'onDelete':_0x9f83('0x138'),'as':_0x9f83('0x156')});db[_0x9f83('0x61')][_0x9f83('0x115')](db[_0x9f83('0x10e')],{'onDelete':_0x9f83('0x138'),'as':_0x9f83('0x168'),'foreignKey':'OpenchannelInteractionId'});db[_0x9f83('0x61')][_0x9f83('0x115')](db[_0x9f83('0xe4')],{'as':'Attachment','foreignKey':_0x9f83('0x171')});db[_0x9f83('0x61')][_0x9f83('0x115')](db['OpenchannelAccount'],{'as':_0x9f83('0x16f'),'foreignKey':_0x9f83('0x179')});db[_0x9f83('0x62')][_0x9f83('0x117')](db['User'],{'as':_0x9f83('0x149'),'through':_0x9f83('0x34'),'foreignKey':_0x9f83('0x17a')});db[_0x9f83('0x62')][_0x9f83('0x117')](db[_0x9f83('0xdd')],{'through':_0x9f83('0x17e'),'as':_0x9f83('0x14a')});db[_0x9f83('0x63')][_0x9f83('0x108')](db[_0x9f83('0x82')],{'as':'Dispositions','foreignKey':_0x9f83('0x169'),'onDelete':'cascade'});db['ChatWebsite'][_0x9f83('0x108')](db[_0x9f83('0x80')],{'as':_0x9f83('0x15c'),'foreignKey':_0x9f83('0x169')});db['ChatWebsite'][_0x9f83('0x108')](db['ChatProactiveAction'],{'as':'ProactiveActions'});db[_0x9f83('0x63')][_0x9f83('0x108')](db[_0x9f83('0x65')],{'as':_0x9f83('0x15d')});db[_0x9f83('0x63')][_0x9f83('0x108')](db[_0x9f83('0x17f')],{'as':'Applications'});db[_0x9f83('0x63')]['hasMany'](db[_0x9f83('0x67')],{'as':_0x9f83('0x14d')});db['ChatWebsite']['belongsTo'](db[_0x9f83('0x11b')],{'as':_0x9f83('0x15f'),'foreignKey':_0x9f83('0x160')});db['ChatWebsite'][_0x9f83('0x115')](db['Interval'],{'as':_0x9f83('0x143'),'foreignKey':_0x9f83('0x144')});db[_0x9f83('0x63')][_0x9f83('0x115')](db[_0x9f83('0x12d')],{'as':'MailAccount','foreignKey':_0x9f83('0x158')});db[_0x9f83('0x63')][_0x9f83('0x115')](db[_0x9f83('0x85')],{'as':_0x9f83('0x145'),'foreignKey':_0x9f83('0x146')});db['ChatWebsite'][_0x9f83('0x117')](db['User'],{'as':_0x9f83('0x149'),'through':_0x9f83('0x12b')});db['OpenchannelQueueReport'][_0x9f83('0x115')](db[_0x9f83('0x5d')],{});db[_0x9f83('0x180')][_0x9f83('0x115')](db['CmList'],{'as':_0x9f83('0x15f'),'foreignKey':'ListId'});db['OpenchannelQueueReport'][_0x9f83('0x115')](db[_0x9f83('0x118')],{'as':'Contact','foreignKey':_0x9f83('0x157')});db['OpenchannelQueueReport'][_0x9f83('0x115')](db[_0x9f83('0x10e')],{});db[_0x9f83('0x180')]['belongsTo'](db['OpenchannelMessage'],{});db[_0x9f83('0x180')]['belongsTo'](db[_0x9f83('0x13')],{});db[_0x9f83('0x180')][_0x9f83('0x115')](db[_0x9f83('0x62')],{});db[_0x9f83('0x17f')]['belongsTo'](db[_0x9f83('0x13')],{'as':_0x9f83('0x181'),'foreignKey':_0x9f83('0x107'),'onDelete':_0x9f83('0x16a')});db['ChatApplication'][_0x9f83('0x115')](db[_0x9f83('0x6b')],{'as':'Queue','foreignKey':_0x9f83('0x182'),'onDelete':_0x9f83('0x16a')});db[_0x9f83('0x17f')][_0x9f83('0x115')](db[_0x9f83('0x63')],{'as':_0x9f83('0x183'),'foreignKey':_0x9f83('0x169'),'onDelete':_0x9f83('0x16a')});db[_0x9f83('0x17f')][_0x9f83('0x115')](db['Tag'],{'onDelete':'restrict','foreignKey':'TagId'});db[_0x9f83('0x65')][_0x9f83('0x108')](db[_0x9f83('0x67')],{'as':_0x9f83('0x14d'),'onDelete':_0x9f83('0x138'),'foreignKey':_0x9f83('0x184')});db['ChatInteraction'][_0x9f83('0x115')](db[_0x9f83('0x63')],{'as':_0x9f83('0x16f'),'foreignKey':_0x9f83('0x169')});db[_0x9f83('0x65')][_0x9f83('0x115')](db[_0x9f83('0x118')],{'as':_0x9f83('0x156'),'foreignKey':'ContactId'});db['ChatInteraction'][_0x9f83('0x115')](db['User'],{'as':'Owner','foreignKey':_0x9f83('0x107')});db[_0x9f83('0x65')][_0x9f83('0x117')](db[_0x9f83('0x8d')],{'through':'chat_interaction_has_tags','as':_0x9f83('0x164')});db[_0x9f83('0x65')][_0x9f83('0x117')](db['Tag'],{'through':_0x9f83('0x185'),'as':'ThroughTags'});db['ChatInteraction'][_0x9f83('0x117')](db['User'],{'as':_0x9f83('0x165'),'through':_0x9f83('0x11e'),'foreignKey':_0x9f83('0x184')});db[_0x9f83('0x67')][_0x9f83('0x115')](db[_0x9f83('0x13')],{'onDelete':_0x9f83('0x138'),'as':_0x9f83('0x13')});db[_0x9f83('0x67')]['belongsTo'](db[_0x9f83('0x118')],{'onDelete':_0x9f83('0x138'),'as':_0x9f83('0x156'),'foreignKey':_0x9f83('0x157')});db[_0x9f83('0x67')][_0x9f83('0x115')](db[_0x9f83('0x65')],{'onDelete':_0x9f83('0x138'),'as':_0x9f83('0x168'),'foreignKey':_0x9f83('0x184')});db[_0x9f83('0x67')][_0x9f83('0x115')](db[_0x9f83('0xe4')],{'as':_0x9f83('0xe4'),'foreignKey':'AttachmentId'});db[_0x9f83('0x67')][_0x9f83('0x115')](db['ChatWebsite'],{'as':_0x9f83('0x16f'),'foreignKey':_0x9f83('0x169')});db[_0x9f83('0x69')][_0x9f83('0x108')](db['Attachment'],{'as':_0x9f83('0x167'),'foreignKey':'ChatOfflineMessageId','onDelete':'cascade','hooks':!![]});db[_0x9f83('0x69')][_0x9f83('0x115')](db[_0x9f83('0x118')],{'onDelete':_0x9f83('0x138'),'as':'Contact','foreignKey':_0x9f83('0x157')});db[_0x9f83('0x69')][_0x9f83('0x115')](db[_0x9f83('0x63')],{'as':'Account','foreignKey':_0x9f83('0x169')});db[_0x9f83('0x6b')]['belongsToMany'](db[_0x9f83('0x13')],{'as':_0x9f83('0x149'),'through':_0x9f83('0x2c'),'hooks':!![]});db['ChatQueue'][_0x9f83('0x117')](db['Team'],{'through':'team_has_chat_queues','as':_0x9f83('0x14a')});db['ChatGroup'][_0x9f83('0x108')](db[_0x9f83('0xca')],{'as':'Messages','foreignKey':_0x9f83('0x186'),'onDelete':_0x9f83('0x138')});db[_0x9f83('0x6d')][_0x9f83('0x117')](db[_0x9f83('0x13')],{'as':_0x9f83('0x13d'),'through':_0x9f83('0x187')});db[_0x9f83('0x188')][_0x9f83('0x115')](db['ChatWebsite'],{'as':_0x9f83('0x183'),'foreignKey':'ChatWebsiteId'});db[_0x9f83('0x70')][_0x9f83('0x108')](db[_0x9f83('0x118')],{'as':_0x9f83('0x119'),'foreignKey':_0x9f83('0x189')});db[_0x9f83('0x118')]['hasMany'](db['CmHopper'],{'as':_0x9f83('0x18a'),'foreignKey':_0x9f83('0x157')});db[_0x9f83('0x118')]['hasMany'](db['CmHopperFinal'],{'as':'HopperFinals','foreignKey':'ContactId'});db[_0x9f83('0x118')][_0x9f83('0x108')](db['CmHopperHistory'],{'as':'HopperHistories','foreignKey':'ContactId'});db['CmContact'][_0x9f83('0x108')](db[_0x9f83('0x79')],{'as':_0x9f83('0x79'),'foreignKey':_0x9f83('0x157')});db[_0x9f83('0x118')][_0x9f83('0x108')](db[_0x9f83('0xcf')],{'as':_0x9f83('0x18b'),'foreignKey':_0x9f83('0x157')});db[_0x9f83('0x118')]['hasMany'](db[_0x9f83('0x10e')],{'as':_0x9f83('0x10f'),'foreignKey':_0x9f83('0x157'),'onDelete':_0x9f83('0x16a')});db[_0x9f83('0x118')][_0x9f83('0x108')](db[_0x9f83('0x65')],{'as':'ChatInteractions','foreignKey':_0x9f83('0x157'),'onDelete':_0x9f83('0x16a')});db[_0x9f83('0x118')][_0x9f83('0x108')](db[_0x9f83('0x57')],{'as':_0x9f83('0x110'),'foreignKey':'ContactId','onDelete':_0x9f83('0x16a')});db[_0x9f83('0x118')][_0x9f83('0x108')](db['FaxInteraction'],{'as':_0x9f83('0x18c'),'foreignKey':'ContactId','onDelete':_0x9f83('0x16a')});db[_0x9f83('0x118')][_0x9f83('0x108')](db['MailInteraction'],{'as':_0x9f83('0x111'),'foreignKey':_0x9f83('0x157'),'onDelete':_0x9f83('0x16a')});db[_0x9f83('0x118')][_0x9f83('0x115')](db['CmCompany'],{'as':_0x9f83('0x18d'),'foreignKey':_0x9f83('0x189')});db[_0x9f83('0x118')][_0x9f83('0x115')](db[_0x9f83('0x11b')],{'as':'List','foreignKey':_0x9f83('0x160'),'onDelete':_0x9f83('0x138')});db[_0x9f83('0x118')][_0x9f83('0x117')](db[_0x9f83('0x13')],{'as':_0x9f83('0x165'),'through':_0x9f83('0x11a')});db[_0x9f83('0x118')]['belongsToMany'](db[_0x9f83('0x8d')],{'as':_0x9f83('0x164'),'through':_0x9f83('0x18e')});db['CmContact'][_0x9f83('0x117')](db['Tag'],{'through':_0x9f83('0x18e'),'as':'ThroughTags'});db[_0x9f83('0x72')][_0x9f83('0x115')](db['CmContact'],{'as':_0x9f83('0x156'),'foreignKey':_0x9f83('0x157'),'onDelete':_0x9f83('0x138')});db[_0x9f83('0x72')]['belongsTo'](db['CmList'],{'as':_0x9f83('0x15f'),'foreignKey':_0x9f83('0x160'),'onDelete':_0x9f83('0x138')});db['CmHopper'][_0x9f83('0x115')](db[_0x9f83('0x13')],{'as':_0x9f83('0x181'),'foreignKey':'UserId'});db['CmHopper'][_0x9f83('0x115')](db['VoiceQueue'],{'as':'Queue','foreignKey':_0x9f83('0x13e'),'onDelete':_0x9f83('0x138')});db['CmHopper']['belongsTo'](db[_0x9f83('0xe0')],{'as':_0x9f83('0xe0'),'foreignKey':_0x9f83('0x18f'),'onDelete':_0x9f83('0x138')});db[_0x9f83('0x72')][_0x9f83('0x115')](db[_0x9f83('0x13')],{'as':'Owner','foreignKey':_0x9f83('0x190')});db[_0x9f83('0x74')][_0x9f83('0x115')](db[_0x9f83('0x118')],{'as':_0x9f83('0x156'),'foreignKey':'ContactId','onDelete':_0x9f83('0x138')});db[_0x9f83('0x74')][_0x9f83('0x115')](db[_0x9f83('0x11b')],{'as':_0x9f83('0x15f'),'foreignKey':_0x9f83('0x160'),'onDelete':_0x9f83('0x138')});db['CmHopperBlack'][_0x9f83('0x115')](db[_0x9f83('0x1c')],{'as':'Queue','foreignKey':'VoiceQueueId','onDelete':_0x9f83('0x138')});db[_0x9f83('0x74')][_0x9f83('0x115')](db[_0x9f83('0xe0')],{'as':'Campaign','foreignKey':_0x9f83('0x18f'),'onDelete':_0x9f83('0x138')});db[_0x9f83('0x7e')]['hasMany'](db[_0x9f83('0x83')],{'as':{'plural':'All','singular':_0x9f83('0x191')},'foreignKey':'AutomationAllId','onDelete':'cascade','hooks':!![]});db[_0x9f83('0x7e')]['hasMany'](db[_0x9f83('0x83')],{'as':{'plural':_0x9f83('0x192'),'singular':_0x9f83('0x193')},'foreignKey':_0x9f83('0x194'),'onDelete':_0x9f83('0x138'),'hooks':!![]});db[_0x9f83('0x7e')][_0x9f83('0x108')](db[_0x9f83('0x7d')],{'as':'Actions','foreignKey':_0x9f83('0x195'),'onDelete':_0x9f83('0x138'),'hooks':!![]});db[_0x9f83('0x82')][_0x9f83('0x108')](db['Disposition'],{'as':_0x9f83('0x15b'),'foreignKey':'ParentId','onDelete':_0x9f83('0x138')});db[_0x9f83('0x143')][_0x9f83('0x108')](db[_0x9f83('0x143')],{'as':_0x9f83('0x196'),'foreignKey':'IntervalId','onDelete':'cascade','hooks':!![],'required':![]});db[_0x9f83('0x143')]['hasMany'](db[_0x9f83('0x10a')],{'as':_0x9f83('0x10b'),'foreignKey':'IntervalId','onDelete':_0x9f83('0x16a')});db[_0x9f83('0x143')]['hasMany'](db[_0x9f83('0x15e')],{'as':'MailApplications','foreignKey':'IntervalId'});db[_0x9f83('0x143')]['hasMany'](db[_0x9f83('0x17f')],{'as':_0x9f83('0x197'),'foreignKey':_0x9f83('0x144')});db[_0x9f83('0x143')][_0x9f83('0x108')](db[_0x9f83('0x4c')],{'as':_0x9f83('0x198'),'foreignKey':'IntervalId'});db[_0x9f83('0x143')][_0x9f83('0x108')](db[_0x9f83('0x55')],{'as':_0x9f83('0x199'),'foreignKey':'IntervalId'});db[_0x9f83('0x89')][_0x9f83('0x115')](db[_0x9f83('0x12d')],{});db[_0x9f83('0x89')][_0x9f83('0x115')](db['AnalyticDefaultReport'],{'foreignKey':_0x9f83('0x19a')});db[_0x9f83('0x89')][_0x9f83('0x115')](db['AnalyticCustomReport'],{'foreignKey':'CustomReportId'});db[_0x9f83('0x8b')][_0x9f83('0x117')](db['VoiceMusicOnHold'],{'as':_0x9f83('0x19b'),'through':_0x9f83('0x13c'),'onDelete':_0x9f83('0x16a')});db[_0x9f83('0x8d')][_0x9f83('0x117')](db[_0x9f83('0x118')],{'through':'cm_contact_has_tags'});db['Tag'][_0x9f83('0x117')](db[_0x9f83('0x65')],{'through':'chat_interaction_has_tags'});db[_0x9f83('0x8d')][_0x9f83('0x117')](db[_0x9f83('0x41')],{'through':_0x9f83('0x163')});db[_0x9f83('0x8d')]['belongsToMany'](db[_0x9f83('0x57')],{'through':_0x9f83('0x175')});db[_0x9f83('0x8d')][_0x9f83('0x117')](db[_0x9f83('0x4e')],{'through':'fax_interaction_has_tags'});db[_0x9f83('0x8d')][_0x9f83('0x117')](db['OpenchannelInteraction'],{'through':_0x9f83('0x17b')});db['Tag'][_0x9f83('0x117')](db[_0x9f83('0xfc')],{'through':'whatsapp_interaction_has_tags'});db[_0x9f83('0x8f')][_0x9f83('0x108')](db['Condition'],{'as':{'plural':_0x9f83('0x19c'),'singular':'AllCondition'},'foreignKey':_0x9f83('0x19d'),'onDelete':_0x9f83('0x138'),'hooks':!![]});db[_0x9f83('0x8f')]['hasMany'](db[_0x9f83('0x83')],{'as':{'plural':_0x9f83('0x19e'),'singular':_0x9f83('0x19f')},'foreignKey':'TriggerAnyId','onDelete':_0x9f83('0x138'),'hooks':!![]});db[_0x9f83('0x8f')][_0x9f83('0x108')](db['Action'],{'as':_0x9f83('0x1a0'),'foreignKey':'TriggerId','onDelete':_0x9f83('0x138'),'hooks':!![]});db['AnalyticCustomReport']['hasMany'](db[_0x9f83('0x99')],{'as':_0x9f83('0x1a1'),'onDelete':'cascade','foreignKey':_0x9f83('0x1a2'),'hooks':!![]});db['AnalyticDefaultReport'][_0x9f83('0x108')](db['AnalyticFieldReport'],{'as':_0x9f83('0x1a1'),'onDelete':_0x9f83('0x138'),'foreignKey':_0x9f83('0x19a')});db[_0x9f83('0x98')]['hasMany'](db['AnalyticFieldReport'],{'as':_0x9f83('0x1a1'),'onDelete':_0x9f83('0x138'),'foreignKey':_0x9f83('0x1a3')});db[_0x9f83('0x99')][_0x9f83('0x115')](db[_0x9f83('0x98')],{'foreignKey':'MetricId'});db['SalesforceAccount'][_0x9f83('0x108')](db[_0x9f83('0x9e')],{'as':_0x9f83('0x1a4'),'onDelete':_0x9f83('0x138'),'foreignKey':_0x9f83('0x1a5')});db[_0x9f83('0x9e')][_0x9f83('0x108')](db[_0x9f83('0x1a6')],{'as':_0x9f83('0x1a7'),'onDelete':_0x9f83('0x138'),'foreignKey':'SubjectId'});db[_0x9f83('0x9e')]['hasMany'](db[_0x9f83('0x1a6')],{'as':_0x9f83('0x1a8'),'onDelete':_0x9f83('0x138'),'foreignKey':_0x9f83('0x1a9')});db[_0x9f83('0x9e')]['hasMany'](db[_0x9f83('0x1a6')],{'as':_0x9f83('0x1a1'),'onDelete':_0x9f83('0x138'),'foreignKey':_0x9f83('0x1aa')});db['SalesforceConfiguration'][_0x9f83('0x115')](db[_0x9f83('0x9c')],{'as':'Account','foreignKey':_0x9f83('0x1a5')});db[_0x9f83('0x1a6')][_0x9f83('0x108')](db['SalesforceField'],{'as':_0x9f83('0x1ab'),'foreignKey':_0x9f83('0x1ac')});db[_0x9f83('0x1a6')]['hasMany'](db[_0x9f83('0x1a6')],{'as':_0x9f83('0x1ad'),'foreignKey':_0x9f83('0x1a9')});db[_0x9f83('0x1a6')][_0x9f83('0x108')](db['SalesforceField'],{'as':_0x9f83('0x1ae'),'foreignKey':'FieldId'});db[_0x9f83('0x1a6')]['belongsTo'](db[_0x9f83('0x1af')],{'as':'Variable','foreignKey':'VariableId'});db['SugarcrmAccount'][_0x9f83('0x108')](db[_0x9f83('0x1b0')],{'as':_0x9f83('0x1a4'),'onDelete':_0x9f83('0x138'),'foreignKey':'AccountId'});db[_0x9f83('0x1b0')][_0x9f83('0x108')](db[_0x9f83('0x1b1')],{'as':_0x9f83('0x1a7'),'onDelete':_0x9f83('0x138'),'foreignKey':'SubjectId'});db['SugarcrmConfiguration'][_0x9f83('0x108')](db[_0x9f83('0x1b1')],{'as':'Descriptions','onDelete':'cascade','foreignKey':_0x9f83('0x1a9')});db[_0x9f83('0x1b0')][_0x9f83('0x108')](db['SugarcrmField'],{'as':_0x9f83('0x1a1'),'onDelete':'cascade','foreignKey':'FieldId'});db[_0x9f83('0x1b0')][_0x9f83('0x115')](db['SugarcrmAccount'],{'as':_0x9f83('0x16f'),'foreignKey':'AccountId'});db['SugarcrmField'][_0x9f83('0x108')](db[_0x9f83('0x1b1')],{'as':_0x9f83('0x1ab'),'foreignKey':_0x9f83('0x1ac')});db[_0x9f83('0x1b1')][_0x9f83('0x108')](db['SugarcrmField'],{'as':_0x9f83('0x1ad'),'foreignKey':_0x9f83('0x1a9')});db[_0x9f83('0x1b1')][_0x9f83('0x108')](db[_0x9f83('0x1b1')],{'as':'Field','foreignKey':_0x9f83('0x1aa')});db['SugarcrmField']['belongsTo'](db[_0x9f83('0x1af')],{'as':'Variable','foreignKey':_0x9f83('0x1b2')});db[_0x9f83('0xa5')][_0x9f83('0x108')](db['DeskConfiguration'],{'as':_0x9f83('0x1a4'),'onDelete':_0x9f83('0x138'),'foreignKey':_0x9f83('0x1a5')});db[_0x9f83('0xa7')][_0x9f83('0x108')](db[_0x9f83('0xa8')],{'as':_0x9f83('0x1a7'),'onDelete':_0x9f83('0x138'),'foreignKey':_0x9f83('0x1ac')});db['DeskConfiguration']['hasMany'](db[_0x9f83('0xa8')],{'as':_0x9f83('0x1a8'),'onDelete':_0x9f83('0x138'),'foreignKey':_0x9f83('0x1a9')});db[_0x9f83('0xa7')][_0x9f83('0x108')](db[_0x9f83('0xa8')],{'as':_0x9f83('0x1a1'),'onDelete':_0x9f83('0x138'),'foreignKey':_0x9f83('0x1aa')});db[_0x9f83('0xa7')]['belongsTo'](db['DeskAccount'],{'as':_0x9f83('0x16f'),'foreignKey':_0x9f83('0x1a5')});db[_0x9f83('0xa7')]['belongsToMany'](db[_0x9f83('0x8d')],{'through':_0x9f83('0x1b3')});db[_0x9f83('0xa8')][_0x9f83('0x108')](db[_0x9f83('0xa8')],{'as':_0x9f83('0x1ab'),'foreignKey':_0x9f83('0x1ac')});db[_0x9f83('0xa8')][_0x9f83('0x108')](db[_0x9f83('0xa8')],{'as':_0x9f83('0x1ad'),'foreignKey':_0x9f83('0x1a9')});db[_0x9f83('0xa8')]['hasMany'](db[_0x9f83('0xa8')],{'as':_0x9f83('0x1ae'),'foreignKey':'FieldId'});db[_0x9f83('0xa8')][_0x9f83('0x115')](db['Variable'],{'as':_0x9f83('0x1af'),'foreignKey':_0x9f83('0x1b2')});db[_0x9f83('0xaa')][_0x9f83('0x108')](db[_0x9f83('0xac')],{'as':_0x9f83('0x1a4'),'onDelete':_0x9f83('0x138'),'foreignKey':_0x9f83('0x1a5')});db[_0x9f83('0xac')][_0x9f83('0x108')](db['ZohoField'],{'as':'Subjects','onDelete':_0x9f83('0x138'),'foreignKey':_0x9f83('0x1ac')});db['ZohoConfiguration'][_0x9f83('0x108')](db['ZohoField'],{'as':'Descriptions','onDelete':_0x9f83('0x138'),'foreignKey':'DescriptionId'});db['ZohoConfiguration']['hasMany'](db['ZohoField'],{'as':_0x9f83('0x1a1'),'onDelete':_0x9f83('0x138'),'foreignKey':'FieldId'});db[_0x9f83('0xac')][_0x9f83('0x115')](db['ZohoAccount'],{'as':_0x9f83('0x16f'),'foreignKey':_0x9f83('0x1a5')});db[_0x9f83('0x1b4')][_0x9f83('0x108')](db[_0x9f83('0x1b4')],{'as':'Subject','foreignKey':'SubjectId'});db[_0x9f83('0x1b4')][_0x9f83('0x108')](db['ZohoField'],{'as':'Description','foreignKey':_0x9f83('0x1a9')});db['ZohoField']['hasMany'](db['ZohoField'],{'as':'Field','foreignKey':_0x9f83('0x1aa')});db[_0x9f83('0x1b4')][_0x9f83('0x115')](db[_0x9f83('0x1af')],{'as':'Variable','foreignKey':_0x9f83('0x1b2')});db[_0x9f83('0xaf')][_0x9f83('0x108')](db['ZendeskConfiguration'],{'as':_0x9f83('0x1a4'),'onDelete':_0x9f83('0x138'),'foreignKey':_0x9f83('0x1a5')});db[_0x9f83('0xb0')][_0x9f83('0x108')](db[_0x9f83('0xb1')],{'as':_0x9f83('0x1a7'),'foreignKey':_0x9f83('0x1ac')});db['ZendeskConfiguration'][_0x9f83('0x108')](db[_0x9f83('0xb1')],{'as':_0x9f83('0x1a8'),'foreignKey':_0x9f83('0x1a9')});db[_0x9f83('0xb0')][_0x9f83('0x108')](db[_0x9f83('0xb1')],{'as':_0x9f83('0x1a1'),'foreignKey':'FieldId'});db['ZendeskConfiguration'][_0x9f83('0x115')](db[_0x9f83('0xaf')],{'as':_0x9f83('0x16f'),'foreignKey':_0x9f83('0x1a5')});db['ZendeskConfiguration'][_0x9f83('0x117')](db[_0x9f83('0x8d')],{'through':_0x9f83('0x1b5')});db['ZendeskField'][_0x9f83('0x108')](db[_0x9f83('0xb1')],{'as':_0x9f83('0x1ab'),'foreignKey':_0x9f83('0x1ac')});db[_0x9f83('0xb1')]['hasMany'](db[_0x9f83('0xb1')],{'as':_0x9f83('0x1ad'),'foreignKey':'DescriptionId'});db['ZendeskField']['hasMany'](db[_0x9f83('0xb1')],{'as':_0x9f83('0x1ae'),'foreignKey':_0x9f83('0x1aa')});db[_0x9f83('0xb1')][_0x9f83('0x115')](db[_0x9f83('0x1af')],{'as':_0x9f83('0x1af'),'foreignKey':_0x9f83('0x1b2')});db[_0x9f83('0xb3')][_0x9f83('0x108')](db[_0x9f83('0xb4')],{'as':_0x9f83('0x1a4'),'onDelete':_0x9f83('0x138'),'foreignKey':_0x9f83('0x1a5')});db[_0x9f83('0xb4')][_0x9f83('0x108')](db['FreshdeskField'],{'as':'Subjects','onDelete':'cascade','foreignKey':_0x9f83('0x1ac')});db['FreshdeskConfiguration'][_0x9f83('0x108')](db[_0x9f83('0x1b6')],{'as':'Descriptions','onDelete':'cascade','foreignKey':_0x9f83('0x1a9')});db[_0x9f83('0xb4')][_0x9f83('0x108')](db[_0x9f83('0x1b6')],{'as':'Fields','onDelete':_0x9f83('0x138'),'foreignKey':_0x9f83('0x1aa')});db['FreshdeskConfiguration'][_0x9f83('0x115')](db[_0x9f83('0xb3')],{'as':_0x9f83('0x16f'),'foreignKey':_0x9f83('0x1a5')});db[_0x9f83('0xb4')][_0x9f83('0x117')](db['Tag'],{'through':'int_freshdesk_configuration_has_tags'});db[_0x9f83('0x1b6')][_0x9f83('0x108')](db['FreshdeskField'],{'as':'Subject','foreignKey':_0x9f83('0x1ac')});db['FreshdeskField'][_0x9f83('0x108')](db[_0x9f83('0x1b6')],{'as':_0x9f83('0x1ad'),'foreignKey':_0x9f83('0x1a9')});db[_0x9f83('0x1b6')][_0x9f83('0x108')](db['FreshdeskField'],{'as':_0x9f83('0x1ae'),'foreignKey':_0x9f83('0x1aa')});db[_0x9f83('0x1b6')][_0x9f83('0x115')](db[_0x9f83('0x1af')],{'as':_0x9f83('0x1af'),'foreignKey':_0x9f83('0x1b2')});db[_0x9f83('0xb7')][_0x9f83('0x108')](db[_0x9f83('0x1b7')],{'as':_0x9f83('0x1a4'),'onDelete':_0x9f83('0x138'),'foreignKey':'AccountId'});db[_0x9f83('0x1b7')][_0x9f83('0x108')](db[_0x9f83('0x1b8')],{'as':_0x9f83('0x1a7'),'foreignKey':_0x9f83('0x1ac')});db[_0x9f83('0x1b7')][_0x9f83('0x108')](db[_0x9f83('0x1b8')],{'as':_0x9f83('0x1a8'),'foreignKey':_0x9f83('0x1a9')});db[_0x9f83('0x1b7')][_0x9f83('0x108')](db['VtigerField'],{'as':_0x9f83('0x1a1'),'foreignKey':_0x9f83('0x1aa')});db[_0x9f83('0x1b7')]['belongsTo'](db[_0x9f83('0xb7')],{'as':_0x9f83('0x16f'),'foreignKey':'AccountId'});db[_0x9f83('0x1b8')][_0x9f83('0x108')](db['VtigerField'],{'as':_0x9f83('0x1ab'),'foreignKey':'SubjectId'});db[_0x9f83('0x1b8')]['hasMany'](db[_0x9f83('0x1b8')],{'as':_0x9f83('0x1ad'),'foreignKey':'DescriptionId'});db[_0x9f83('0x1b8')][_0x9f83('0x108')](db[_0x9f83('0x1b8')],{'as':'Field','foreignKey':'FieldId'});db[_0x9f83('0x1b8')][_0x9f83('0x115')](db[_0x9f83('0x1af')],{'as':_0x9f83('0x1af'),'foreignKey':_0x9f83('0x1b2')});db[_0x9f83('0xb9')][_0x9f83('0x108')](db[_0x9f83('0xbb')],{'as':_0x9f83('0x1a4'),'onDelete':'cascade','foreignKey':'AccountId'});db['ServicenowConfiguration'][_0x9f83('0x108')](db[_0x9f83('0xbd')],{'as':_0x9f83('0x1a7'),'foreignKey':_0x9f83('0x1ac')});db['ServicenowConfiguration']['hasMany'](db['ServicenowField'],{'as':'Descriptions','foreignKey':_0x9f83('0x1a9')});db['ServicenowConfiguration'][_0x9f83('0x108')](db[_0x9f83('0xbd')],{'as':_0x9f83('0x1a1'),'foreignKey':_0x9f83('0x1aa')});db[_0x9f83('0xbb')][_0x9f83('0x115')](db['ServicenowAccount'],{'as':_0x9f83('0x16f'),'foreignKey':'AccountId'});db['ServicenowField'][_0x9f83('0x108')](db[_0x9f83('0xbd')],{'as':_0x9f83('0x1ab'),'foreignKey':_0x9f83('0x1ac')});db[_0x9f83('0xbd')][_0x9f83('0x108')](db[_0x9f83('0xbd')],{'as':_0x9f83('0x1ad'),'foreignKey':_0x9f83('0x1a9')});db[_0x9f83('0xbd')][_0x9f83('0x108')](db[_0x9f83('0xbd')],{'as':'Field','foreignKey':_0x9f83('0x1aa')});db[_0x9f83('0xbd')]['belongsTo'](db['Variable'],{'as':'Variable','foreignKey':_0x9f83('0x1b2')});db[_0x9f83('0xbe')][_0x9f83('0x108')](db['Dynamics365Configuration'],{'as':'Configurations','onDelete':_0x9f83('0x138'),'foreignKey':_0x9f83('0x1a5')});db['Dynamics365Configuration'][_0x9f83('0x108')](db['Dynamics365Field'],{'as':'Subjects','onDelete':_0x9f83('0x138'),'foreignKey':'SubjectId'});db[_0x9f83('0xbf')][_0x9f83('0x108')](db[_0x9f83('0xc1')],{'as':'Descriptions','onDelete':'cascade','foreignKey':_0x9f83('0x1a9')});db[_0x9f83('0xbf')][_0x9f83('0x108')](db['Dynamics365Field'],{'as':_0x9f83('0x1a1'),'onDelete':_0x9f83('0x138'),'foreignKey':_0x9f83('0x1aa')});db[_0x9f83('0xbf')][_0x9f83('0x115')](db[_0x9f83('0xbe')],{'as':_0x9f83('0x16f'),'foreignKey':'AccountId'});db[_0x9f83('0xc1')][_0x9f83('0x108')](db[_0x9f83('0xc1')],{'as':_0x9f83('0x1ab'),'foreignKey':_0x9f83('0x1ac')});db['Dynamics365Field'][_0x9f83('0x108')](db[_0x9f83('0xc1')],{'as':_0x9f83('0x1ad'),'foreignKey':_0x9f83('0x1a9')});db[_0x9f83('0xc1')]['hasMany'](db[_0x9f83('0xc1')],{'as':_0x9f83('0x1ae'),'foreignKey':_0x9f83('0x1aa')});db[_0x9f83('0xc1')][_0x9f83('0x115')](db[_0x9f83('0x1af')],{'as':_0x9f83('0x1af'),'foreignKey':_0x9f83('0x1b2')});db[_0x9f83('0xc3')][_0x9f83('0x108')](db['FreshsalesConfiguration'],{'as':_0x9f83('0x1a4'),'onDelete':_0x9f83('0x138'),'foreignKey':_0x9f83('0x1a5')});db['FreshsalesConfiguration']['hasMany'](db['FreshsalesField'],{'as':_0x9f83('0x1a7'),'foreignKey':'SubjectId'});db[_0x9f83('0xc5')][_0x9f83('0x108')](db[_0x9f83('0xc6')],{'as':'Descriptions','foreignKey':_0x9f83('0x1a9')});db[_0x9f83('0xc5')][_0x9f83('0x108')](db[_0x9f83('0xc6')],{'as':_0x9f83('0x1a1'),'foreignKey':'FieldId'});db['FreshsalesConfiguration']['belongsTo'](db[_0x9f83('0xc3')],{'as':'Account','foreignKey':_0x9f83('0x1a5')});db['FreshsalesField'][_0x9f83('0x108')](db[_0x9f83('0xc6')],{'as':_0x9f83('0x1ab'),'foreignKey':_0x9f83('0x1ac')});db[_0x9f83('0xc6')]['hasMany'](db[_0x9f83('0xc6')],{'as':_0x9f83('0x1ad'),'foreignKey':_0x9f83('0x1a9')});db[_0x9f83('0xc6')][_0x9f83('0x108')](db[_0x9f83('0xc6')],{'as':'Field','foreignKey':_0x9f83('0x1aa')});db[_0x9f83('0xc6')][_0x9f83('0x115')](db[_0x9f83('0x1af')],{'as':_0x9f83('0x1af'),'foreignKey':'VariableId'});db[_0x9f83('0x1b9')][_0x9f83('0x115')](db['ChatWebsite'],{});db[_0x9f83('0x1b9')]['belongsTo'](db[_0x9f83('0x11b')],{'as':_0x9f83('0x15f'),'foreignKey':_0x9f83('0x160')});db['ChatQueueReport'][_0x9f83('0x115')](db[_0x9f83('0x118')],{'as':_0x9f83('0x156'),'foreignKey':_0x9f83('0x157')});db[_0x9f83('0x1b9')]['belongsTo'](db[_0x9f83('0x65')],{});db[_0x9f83('0x1b9')][_0x9f83('0x115')](db[_0x9f83('0x67')],{});db[_0x9f83('0x1b9')]['belongsTo'](db['User'],{});db['ChatQueueReport'][_0x9f83('0x115')](db[_0x9f83('0x6b')],{});db['ChatInternalMessage'][_0x9f83('0x115')](db[_0x9f83('0x13')],{'onDelete':_0x9f83('0x138'),'foreignKey':_0x9f83('0x1ba')});db[_0x9f83('0xca')]['belongsTo'](db['User'],{'onDelete':_0x9f83('0x138'),'foreignKey':'ToId'});db[_0x9f83('0xcf')][_0x9f83('0x108')](db[_0x9f83('0xcd')],{'foreignKey':_0x9f83('0x1bb'),'onDelete':'cascade'});db['JscriptySessionReport'][_0x9f83('0x108')](db[_0x9f83('0x1bc')],{'foreignKey':_0x9f83('0x1bb'),'onDelete':_0x9f83('0x138')});db[_0x9f83('0x1bd')]['belongsTo'](db['SmsAccount'],{});db[_0x9f83('0x1bd')][_0x9f83('0x115')](db['CmList'],{'as':_0x9f83('0x15f'),'foreignKey':_0x9f83('0x160')});db[_0x9f83('0x1bd')][_0x9f83('0x115')](db['CmContact'],{'as':_0x9f83('0x156'),'foreignKey':_0x9f83('0x157')});db[_0x9f83('0x1bd')][_0x9f83('0x115')](db[_0x9f83('0x57')],{});db[_0x9f83('0x1bd')]['belongsTo'](db[_0x9f83('0x59')],{});db[_0x9f83('0x1bd')][_0x9f83('0x115')](db[_0x9f83('0x13')],{});db[_0x9f83('0x1bd')][_0x9f83('0x115')](db[_0x9f83('0x5b')],{});db[_0x9f83('0xd6')]['hasMany'](db['JscriptySessionReport'],{'foreignKey':_0x9f83('0x1be')});db[_0x9f83('0xd6')][_0x9f83('0x108')](db[_0x9f83('0xcd')],{'foreignKey':_0x9f83('0x1be')});db[_0x9f83('0xd6')][_0x9f83('0x108')](db[_0x9f83('0x1bc')],{'foreignKey':_0x9f83('0x1be')});db[_0x9f83('0x135')]['belongsToMany'](db[_0x9f83('0x13')],{'as':_0x9f83('0x165'),'through':_0x9f83('0x136')});db[_0x9f83('0xdd')][_0x9f83('0x117')](db[_0x9f83('0x13')],{'as':_0x9f83('0x149'),'through':_0x9f83('0x11c')});db['Team'][_0x9f83('0x117')](db[_0x9f83('0x1c')],{'through':_0x9f83('0x105'),'as':_0x9f83('0x121')});db[_0x9f83('0xdd')]['belongsToMany'](db[_0x9f83('0x3d')],{'through':'team_has_mail_queues','as':_0x9f83('0x123')});db['Team'][_0x9f83('0x117')](db[_0x9f83('0x6b')],{'through':_0x9f83('0x1bf'),'as':_0x9f83('0x124')});db[_0x9f83('0xdd')][_0x9f83('0x117')](db[_0x9f83('0x52')],{'through':'team_has_fax_queues','as':_0x9f83('0x125')});db[_0x9f83('0xdd')]['belongsToMany'](db[_0x9f83('0x5b')],{'through':_0x9f83('0x1c0'),'as':_0x9f83('0x126')});db[_0x9f83('0xdd')]['belongsToMany'](db[_0x9f83('0x62')],{'through':_0x9f83('0x17e'),'as':_0x9f83('0x1c1')});db[_0x9f83('0xdd')][_0x9f83('0x117')](db['WhatsappQueue'],{'through':_0x9f83('0x1c2'),'as':_0x9f83('0x1c3')});db[_0x9f83('0xe0')]['hasMany'](db[_0x9f83('0x72')],{'as':_0x9f83('0x18a'),'foreignKey':_0x9f83('0x18f')});db['Campaign'][_0x9f83('0x108')](db[_0x9f83('0x76')],{'as':_0x9f83('0x10c'),'foreignKey':_0x9f83('0x18f')});db[_0x9f83('0xe0')][_0x9f83('0x108')](db[_0x9f83('0x77')],{'as':_0x9f83('0x13f'),'foreignKey':_0x9f83('0x18f')});db[_0x9f83('0xe0')][_0x9f83('0x108')](db['CmHopperBlack'],{'as':_0x9f83('0x140'),'foreignKey':_0x9f83('0x18f')});db['Campaign'][_0x9f83('0x115')](db[_0x9f83('0x28')],{'as':_0x9f83('0x28'),'foreignKey':_0x9f83('0x1c4')});db[_0x9f83('0xe0')][_0x9f83('0x115')](db[_0x9f83('0x28')],{'as':'TrunkBackup','foreignKey':_0x9f83('0x142')});db['Campaign'][_0x9f83('0x115')](db[_0x9f83('0x143')],{'as':_0x9f83('0x143'),'foreignKey':_0x9f83('0x144')});db[_0x9f83('0xe0')][_0x9f83('0x115')](db[_0x9f83('0x135')],{'as':'SquareProject','foreignKey':_0x9f83('0x1c5')});db[_0x9f83('0xe0')][_0x9f83('0x117')](db[_0x9f83('0x11b')],{'as':_0x9f83('0x147'),'through':_0x9f83('0x1c6')});db[_0x9f83('0xe0')][_0x9f83('0x117')](db[_0x9f83('0x11b')],{'as':_0x9f83('0x14b'),'through':'campaigns_has_cm_blacklists'});db[_0x9f83('0xe4')][_0x9f83('0x115')](db[_0x9f83('0x69')],{'as':'ChatOfflineMessage','foreignKey':_0x9f83('0x1c7')});db[_0x9f83('0xe7')][_0x9f83('0x115')](db[_0x9f83('0x43')],{});db[_0x9f83('0xe7')][_0x9f83('0x115')](db[_0x9f83('0x41')],{});db['MailTransferReport'][_0x9f83('0x115')](db[_0x9f83('0x12d')],{'foreignKey':_0x9f83('0x1c8'),'as':'FromAccount'});db['MailTransferReport'][_0x9f83('0x115')](db[_0x9f83('0x13')],{'foreignKey':_0x9f83('0x1c9'),'as':_0x9f83('0x1ca')});db[_0x9f83('0xe7')]['belongsTo'](db[_0x9f83('0x13')],{'foreignKey':_0x9f83('0x1cb'),'as':'ToAgent'});db[_0x9f83('0xe7')][_0x9f83('0x115')](db[_0x9f83('0x3d')],{'foreignKey':'ToMailQueueId','as':_0x9f83('0x1cc')});db['MailTransferReport']['belongsTo'](db['MailAccount'],{'foreignKey':_0x9f83('0x1cd'),'as':_0x9f83('0x1ce')});db[_0x9f83('0xe8')][_0x9f83('0x115')](db['ChatMessage'],{});db['ChatTransferReport'][_0x9f83('0x115')](db[_0x9f83('0x65')],{});db[_0x9f83('0xe8')][_0x9f83('0x115')](db[_0x9f83('0x63')],{'foreignKey':'FromChatWebsiteId','as':'FromAccount'});db[_0x9f83('0xe8')][_0x9f83('0x115')](db['User'],{'foreignKey':'FromUserId','as':'FromAgent'});db[_0x9f83('0xe8')]['belongsTo'](db['User'],{'foreignKey':_0x9f83('0x1cb'),'as':_0x9f83('0x1cf')});db['ChatTransferReport']['belongsTo'](db[_0x9f83('0x6b')],{'foreignKey':_0x9f83('0x1d0'),'as':_0x9f83('0x1cc')});db[_0x9f83('0xe8')][_0x9f83('0x115')](db[_0x9f83('0x63')],{'foreignKey':_0x9f83('0x1d1'),'as':'ToAccount'});db[_0x9f83('0xea')][_0x9f83('0x115')](db[_0x9f83('0x50')],{});db[_0x9f83('0xea')]['belongsTo'](db[_0x9f83('0x4e')],{});db[_0x9f83('0xea')][_0x9f83('0x115')](db[_0x9f83('0x4a')],{'foreignKey':_0x9f83('0x1d2'),'as':'FromAccount'});db[_0x9f83('0xea')]['belongsTo'](db[_0x9f83('0x13')],{'foreignKey':_0x9f83('0x1c9'),'as':'FromAgent'});db[_0x9f83('0xea')][_0x9f83('0x115')](db[_0x9f83('0x13')],{'foreignKey':_0x9f83('0x1cb'),'as':'ToAgent'});db[_0x9f83('0xea')][_0x9f83('0x115')](db[_0x9f83('0x52')],{'foreignKey':'ToFaxQueueId','as':_0x9f83('0x1cc')});db['FaxTransferReport']['belongsTo'](db[_0x9f83('0x4a')],{'foreignKey':_0x9f83('0x1d3'),'as':_0x9f83('0x1ce')});db[_0x9f83('0xec')][_0x9f83('0x115')](db[_0x9f83('0x61')],{});db[_0x9f83('0xec')][_0x9f83('0x115')](db[_0x9f83('0x10e')],{});db[_0x9f83('0xec')][_0x9f83('0x115')](db[_0x9f83('0x5d')],{'foreignKey':_0x9f83('0x1d4'),'as':_0x9f83('0x1d5')});db[_0x9f83('0xec')][_0x9f83('0x115')](db[_0x9f83('0x13')],{'foreignKey':_0x9f83('0x1c9'),'as':_0x9f83('0x1ca')});db['OpenchannelTransferReport'][_0x9f83('0x115')](db[_0x9f83('0x13')],{'foreignKey':'ToUserId','as':_0x9f83('0x1cf')});db[_0x9f83('0xec')]['belongsTo'](db[_0x9f83('0x62')],{'foreignKey':'ToOpenchannelQueueId','as':'ToQueue'});db[_0x9f83('0xec')][_0x9f83('0x115')](db[_0x9f83('0x5d')],{'foreignKey':_0x9f83('0x1d6'),'as':_0x9f83('0x1ce')});db[_0x9f83('0xee')][_0x9f83('0x115')](db[_0x9f83('0x59')],{});db[_0x9f83('0xee')][_0x9f83('0x115')](db[_0x9f83('0x57')],{});db[_0x9f83('0xee')]['belongsTo'](db['SmsAccount'],{'foreignKey':_0x9f83('0x1d7'),'as':_0x9f83('0x1d5')});db[_0x9f83('0xee')][_0x9f83('0x115')](db['User'],{'foreignKey':_0x9f83('0x1c9'),'as':_0x9f83('0x1ca')});db[_0x9f83('0xee')]['belongsTo'](db[_0x9f83('0x13')],{'foreignKey':_0x9f83('0x1cb'),'as':'ToAgent'});db['SmsTransferReport'][_0x9f83('0x115')](db[_0x9f83('0x5b')],{'foreignKey':_0x9f83('0x1d8'),'as':_0x9f83('0x1cc')});db[_0x9f83('0xee')][_0x9f83('0x115')](db[_0x9f83('0x131')],{'foreignKey':_0x9f83('0x1d9'),'as':_0x9f83('0x1ce')});db[_0x9f83('0x11b')][_0x9f83('0x108')](db[_0x9f83('0x82')],{'as':_0x9f83('0x15b'),'foreignKey':_0x9f83('0x160'),'onDelete':'cascade'});db['CmList'][_0x9f83('0x108')](db[_0x9f83('0x7b')],{'as':_0x9f83('0x1da'),'foreignKey':_0x9f83('0x160')});db[_0x9f83('0x11b')][_0x9f83('0x108')](db[_0x9f83('0x118')],{'as':_0x9f83('0x119'),'onDelete':_0x9f83('0x138'),'foreignKey':'ListId'});db[_0x9f83('0x11b')][_0x9f83('0x108')](db[_0x9f83('0x76')],{'as':_0x9f83('0x10c'),'foreignKey':_0x9f83('0x160')});db[_0x9f83('0x11b')][_0x9f83('0x108')](db[_0x9f83('0x77')],{'as':_0x9f83('0x10d'),'foreignKey':'ListId'});db[_0x9f83('0x11b')]['hasMany'](db[_0x9f83('0x79')],{'as':_0x9f83('0x79'),'foreignKey':_0x9f83('0x160')});db[_0x9f83('0x11b')][_0x9f83('0x117')](db[_0x9f83('0x1c')],{'as':'Queues','through':_0x9f83('0x148')});db[_0x9f83('0x11b')]['belongsToMany'](db[_0x9f83('0x13')],{'as':_0x9f83('0x149'),'through':_0x9f83('0x127')});db[_0x9f83('0xf1')][_0x9f83('0x108')](db[_0x9f83('0x10a')],{'as':_0x9f83('0x10b'),'onDelete':'cascade'});db['VoicePrefix'][_0x9f83('0x117')](db[_0x9f83('0x13')],{'as':'Agents','through':_0x9f83('0x129')});db[_0x9f83('0xf2')][_0x9f83('0x108')](db[_0x9f83('0x13')],{'as':'Users','foreignKey':_0x9f83('0x116')});db[_0x9f83('0xf2')][_0x9f83('0x108')](db[_0x9f83('0xf4')],{'as':_0x9f83('0x1db'),'foreignKey':_0x9f83('0x116'),'onDelete':_0x9f83('0x138')});db['UserProfileSection']['hasMany'](db[_0x9f83('0x1dc')],{'as':_0x9f83('0x1dd'),'foreignKey':'sectionId','onDelete':_0x9f83('0x138')});db['WhatsappAccount'][_0x9f83('0x108')](db[_0x9f83('0x82')],{'as':'Dispositions','foreignKey':_0x9f83('0x1de'),'onDelete':_0x9f83('0x138')});db[_0x9f83('0xf9')]['hasMany'](db['CannedAnswer'],{'as':_0x9f83('0x15c'),'foreignKey':_0x9f83('0x1de')});db['WhatsappAccount'][_0x9f83('0x108')](db[_0x9f83('0xfd')],{'as':'Messages','foreignKey':_0x9f83('0x1de')});db['WhatsappAccount'][_0x9f83('0x108')](db[_0x9f83('0xfc')],{'as':_0x9f83('0x15d')});db[_0x9f83('0xf9')][_0x9f83('0x108')](db[_0x9f83('0x1df')],{'as':_0x9f83('0x13a')});db[_0x9f83('0xf9')]['belongsTo'](db['CmList'],{'as':'List','foreignKey':_0x9f83('0x160')});db[_0x9f83('0xf9')][_0x9f83('0x115')](db[_0x9f83('0x85')],{'as':_0x9f83('0x145'),'foreignKey':'mandatoryDispositionPauseId'});db['WhatsappAccount']['belongsToMany'](db[_0x9f83('0x13')],{'as':_0x9f83('0x149'),'through':_0x9f83('0x134')});db[_0x9f83('0x1df')]['belongsTo'](db['User'],{'onDelete':_0x9f83('0x16a')});db[_0x9f83('0x1df')]['belongsTo'](db['WhatsappQueue'],{'onDelete':'restrict'});db[_0x9f83('0x1df')]['belongsTo'](db[_0x9f83('0xf9')],{'onDelete':_0x9f83('0x16a')});db[_0x9f83('0x1df')][_0x9f83('0x115')](db['Interval'],{'onDelete':'restrict','foreignKey':_0x9f83('0x144')});db[_0x9f83('0x1df')][_0x9f83('0x115')](db[_0x9f83('0x8d')],{'onDelete':_0x9f83('0x16a'),'foreignKey':_0x9f83('0x16b')});db[_0x9f83('0xfc')][_0x9f83('0x108')](db[_0x9f83('0xfd')],{'as':_0x9f83('0x14d'),'onDelete':_0x9f83('0x138'),'foreignKey':_0x9f83('0x1e0')});db['WhatsappInteraction']['belongsTo'](db[_0x9f83('0xf9')],{'as':_0x9f83('0x16f'),'foreignKey':_0x9f83('0x1de')});db[_0x9f83('0xfc')][_0x9f83('0x115')](db[_0x9f83('0x118')],{'as':'Contact','foreignKey':'ContactId'});db['WhatsappInteraction'][_0x9f83('0x115')](db['User'],{'as':_0x9f83('0x162'),'foreignKey':_0x9f83('0x107')});db[_0x9f83('0xfc')][_0x9f83('0x117')](db[_0x9f83('0x8d')],{'through':'whatsapp_interaction_has_tags','as':_0x9f83('0x164')});db[_0x9f83('0xfc')][_0x9f83('0x117')](db['Tag'],{'through':_0x9f83('0x1e1'),'as':_0x9f83('0x176')});db[_0x9f83('0xfc')][_0x9f83('0x117')](db[_0x9f83('0x13')],{'as':_0x9f83('0x165'),'through':_0x9f83('0x120'),'foreignKey':_0x9f83('0x1e0')});db[_0x9f83('0xfd')][_0x9f83('0x115')](db[_0x9f83('0x13')],{'as':_0x9f83('0x13')});db[_0x9f83('0xfd')][_0x9f83('0x115')](db[_0x9f83('0x118')],{'onDelete':_0x9f83('0x138'),'as':'Contact'});db[_0x9f83('0xfd')]['belongsTo'](db[_0x9f83('0xfc')],{'onDelete':'cascade','as':'Interaction','foreignKey':_0x9f83('0x1e0')});db['WhatsappMessage'][_0x9f83('0x115')](db[_0x9f83('0xf9')],{'as':_0x9f83('0x16f'),'foreignKey':_0x9f83('0x1de')});db['WhatsappQueueReport'][_0x9f83('0x115')](db[_0x9f83('0xf9')],{});db[_0x9f83('0xfe')]['belongsTo'](db[_0x9f83('0x11b')],{'as':_0x9f83('0x15f'),'foreignKey':_0x9f83('0x160')});db[_0x9f83('0xfe')]['belongsTo'](db[_0x9f83('0x118')],{'as':_0x9f83('0x156'),'foreignKey':_0x9f83('0x157')});db[_0x9f83('0xfe')][_0x9f83('0x115')](db[_0x9f83('0xfc')],{});db[_0x9f83('0xfe')][_0x9f83('0x115')](db[_0x9f83('0x102')],{});db[_0x9f83('0xfe')]['belongsTo'](db[_0x9f83('0xfd')],{});db[_0x9f83('0xfe')][_0x9f83('0x115')](db[_0x9f83('0x13')],{});db[_0x9f83('0x100')][_0x9f83('0x115')](db['WhatsappMessage'],{});db['WhatsappTransferReport'][_0x9f83('0x115')](db['WhatsappInteraction'],{});db[_0x9f83('0x100')][_0x9f83('0x115')](db[_0x9f83('0xf9')],{'foreignKey':'FromWhatsappAccountId','as':_0x9f83('0x1d5')});db['WhatsappTransferReport'][_0x9f83('0x115')](db[_0x9f83('0xf9')],{'foreignKey':'ToWhatsappAccountId','as':_0x9f83('0x1ce')});db[_0x9f83('0x100')][_0x9f83('0x115')](db[_0x9f83('0x102')],{'foreignKey':_0x9f83('0x1e2'),'as':_0x9f83('0x1cc')});db[_0x9f83('0x100')][_0x9f83('0x115')](db[_0x9f83('0x13')],{'foreignKey':_0x9f83('0x1c9'),'as':'FromAgent'});db[_0x9f83('0x100')][_0x9f83('0x115')](db[_0x9f83('0x13')],{'foreignKey':_0x9f83('0x1cb'),'as':_0x9f83('0x1cf')});db[_0x9f83('0x102')][_0x9f83('0x117')](db[_0x9f83('0x13')],{'as':_0x9f83('0x149'),'through':_0x9f83('0x36'),'foreignKey':_0x9f83('0x1e3')});db[_0x9f83('0x102')]['belongsToMany'](db[_0x9f83('0xdd')],{'through':_0x9f83('0x1c2'),'as':_0x9f83('0x14a')});module[_0x9f83('0x1e4')]={'db':db,'dbH':dbH};
\ No newline at end of file
index d3ec477..be7f433 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1c7f=['/api/openchannel/reports/queue','./api/chatApplication','/api/chat/interactions','./api/chatInteraction','/api/chat/messages','./api/chatMessage','/api/chat/offline_messages','/api/chat/queues','./api/chatQueue','/api/chat/groups','./api/chatGroup','/api/chat/proactive_actions','./api/chatProactiveAction','/api/cm/companies','/api/cm/hopper','./api/cmHopper','/api/cm/hopper_black','./api/cmHopperBlack','/api/cm/hopper_final','./api/cmHopperFinal','/api/cm/hopper_history','/api/cm/custom_fields','/api/actions','./api/action','/api/automations','./api/automation','/api/canned_answers','/api/dispositions','./api/disposition','/api/conditions','./api/condition','./api/interval','/api/pauses','./api/pause','./api/cdr','./api/voiceQueuesLog','/api/schedules','./api/schedule','/api/sounds','./api/sound','/api/tags','./api/tag','/api/templates','/api/triggers','./api/trigger','/api/variables','./api/variable','./api/integration','/api/integrations/reports','./api/integrationReport','/api/analytics/custom_reports','./api/analyticCustomReport','/api/analytics/default_reports','./api/analyticDefaultReport','/api/analytics/extracted_reports','./api/analyticExtractedReport','/api/analytics/field_reports','/api/analytics/tree_reports','./api/analyticTreeReport','./api/intSalesforceAccount','/api/integrations/salesforce/configurations','./api/intSalesforceConfiguration','/api/integrations/sugarcrm/accounts','./api/intSugarcrmAccount','/api/integrations/sugarcrm/fields','./api/intSugarcrmField','/api/integrations/desk/accounts','./api/intDeskAccount','/api/integrations/desk/configurations','./api/intDeskConfiguration','/api/integrations/desk/fields','./api/intDeskField','./api/intZohoAccount','/api/integrations/zoho/configurations','./api/intZohoConfiguration','/api/integrations/zoho/fields','./api/intZohoField','./api/intZendeskAccount','/api/integrations/zendesk/configurations','./api/intZendeskConfiguration','/api/integrations/zendesk/fields','./api/intZendeskField','./api/intFreshdeskAccount','./api/intFreshdeskConfiguration','/api/integrations/freshdesk/fields','./api/intVtigerAccount','/api/integrations/vtiger/fields','./api/intVtigerField','./api/intServicenowAccount','./api/intServicenowField','/api/integrations/dynamics365/accounts','./api/intDynamics365Account','./api/intDynamics365Configuration','/api/integrations/dynamics365/fields','./api/intDynamics365Field','./api/intFreshsalesAccount','/api/integrations/freshsales/configurations','./api/intFreshsalesConfiguration','/api/integrations/freshsales/fields','./api/intFreshsalesField','/api/networks','/api/chat/reports/queue','/api/chat/internal/messages','/api/jscripty/answers/reports','./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/squareReportDetail','/api/jscripty/projects','./api/jscriptyProject','/api/settings','./api/setting','./api/squareOdbc','./api/squareRecording','/api/square/messages','./api/squareMessage','/api/teams','/api/license','./api/license','./api/campaign','/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/openchannel/reports/transfer','/api/sms/reports/transfer','./api/smsTransferReport','/api/cm/lists','./api/cmList','./api/voicePrefix','/api/userProfiles','./api/userProfile','/api/userProfile/sections','/api/userProfile/resources','./api/userProfileResource','/api/userNotifications','/api/whatsapp/accounts','./api/whatsappAccount','/api/whatsapp/applications','./api/whatsappInteraction','/api/whatsapp/messages','./api/whatsappMessage','/api/whatsapp/reports/queue','/api/whatsapp/reports/transfer','./api/whatsappTransferReport','./api/whatsappQueue','/api/cloudProviders','./api/cloudProvider','/api/realtime','/api/auth/local','./api/authLocal','./api/authGoogle','/api/jira','./api/jira','/api/rpc','/api/version','./api/version','/api/system','./api/system','/api/pm2','./api/pm2','static','join','/apidoc','/www','root','/demo','/snippet','snippet','3.0.0','/:url(api|auth|components|app|bower_components|assets)/*','get','route','sendFile','resolve','appPath','/index.html','username','lastName','street','phone','mobile','fax','clientId','clientSecret','code','accessKey','tenantId','channelSecret','accessTokenSecret','authToken','consumerKey','membername','exten','vidaooApiKey','privateKey','secretaccesskey','key','pass','accountSid','localstationid','dsn','secret','registry','oldPassword','isArray','length','isPlainObject','replace','@@{','includes','path','express','express-winston','util','./errors','./config/logger','api','auth','default','use','%s\x20%s\x20%s\x20%s\x20%sms\x20id=%s\x20name=%s\x20role=%s','isEmpty','body','\x20body=%s','method','headers','x-forwarded-for','connection','remoteAddress','url','statusCode','responseTime','user','role','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)','other','agent_name','test','/api/users','./api/user','/api/voice/chanspy','./api/voiceChanSpy','/api/voice/contexts','./api/voiceContext','/api/voice/extensions','./api/voiceExtension','/api/voice/mohs','./api/voiceMusicOnHold','/api/voice/queues','./api/voiceQueue','/api/voice/recordings','./api/voiceRecording','/api/screen/recordings','./api/screenRecording','/api/voice/mails','./api/voiceMail','./api/voiceMailMessage','/api/voice/calls/reports','./api/voiceDialReport','/api/voice/agents/reports','./api/voiceAgentReport','/api/voice/queues/reports','./api/voiceQueueReport','/api/members/reports','./api/memberReport','/api/trunks','./api/trunk','./api/voiceTransferReport','/api/mail/out_servers','./api/mailServerOut','/api/mail/accounts','/api/mail/queues','./api/mailQueue','/api/mail/substatuses','./api/mailSubstatus','/api/mail/interactions','./api/mailInteraction','/api/mail/applications','/api/mail/reports/queue','/api/dashboards','./api/dashboard','/api/dashboards/items','./api/dashboardItem','/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/sms/applications','./api/smsApplication','./api/smsInteraction','/api/sms/messages','./api/smsMessage','./api/smsQueue','/api/openchannel/accounts','./api/openchannelAccount','/api/openchannel/applications','./api/openchannelApplication','/api/openchannel/interactions','/api/openchannel/messages','./api/openchannelMessage','./api/openchannelQueue','/api/chat/websites'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x1c7f,0xe0));var _0xf1c7=function(_0x43776a,_0x4eb74c){_0x43776a=_0x43776a-0x0;var _0x18eb8f=_0x1c7f[_0x43776a];return _0x18eb8f;};'use strict';var _=require('lodash');var path=require(_0xf1c7('0x0'));var express=require(_0xf1c7('0x1'));var ewinston=require(_0xf1c7('0x2'));var util=require(_0xf1c7('0x3'));var errors=require(_0xf1c7('0x4'));var config=require('./config/environment');var logger=require(_0xf1c7('0x5'))(_0xf1c7('0x6'));var authLogger=require('./config/logger')(_0xf1c7('0x7'));exports[_0xf1c7('0x8')]=function(_0x5105dc){_0x5105dc[_0xf1c7('0x9')](ewinston['logger']({'winstonInstance':logger,'meta':![],'statusLevels':!![],'msg':function(_0x27aa10,_0x163041){var _0xf9ec49=_0xf1c7('0xa');if(!_[_0xf1c7('0xb')](_0x27aa10[_0xf1c7('0xc')])){_0xf9ec49+=_0xf1c7('0xd');var _0x4f07a3=_0x27aa10['body'];maskSensitiveData(_0x4f07a3);}return util['format'](_0xf9ec49,_0x27aa10[_0xf1c7('0xe')],_0x27aa10[_0xf1c7('0xf')]['x-forwarded-for']?_0x27aa10['headers'][_0xf1c7('0x10')]:_0x27aa10[_0xf1c7('0x11')][_0xf1c7('0x12')]||_0x27aa10['ip'],_0x27aa10[_0xf1c7('0x13')],_0x163041[_0xf1c7('0x14')],_0x163041[_0xf1c7('0x15')],_0x27aa10[_0xf1c7('0x16')]?_0x27aa10['user']['id']:null,_0x27aa10[_0xf1c7('0x16')]?_0x27aa10[_0xf1c7('0x16')]['name']:null,_0x27aa10['user']?_0x27aa10['user'][_0xf1c7('0x17')]:null,_0x4f07a3?util[_0xf1c7('0x18')](_0x4f07a3,![],null):'');}}));_0x5105dc[_0xf1c7('0x9')](ewinston['logger']({'winstonInstance':authLogger,'meta':![],'statusLevels':!![],'msg':function(_0x4a9d04,_0x460a2c){var _0x14289f=_0xf1c7('0x19');if(_0x4a9d04[_0xf1c7('0xc')]&&_0x4a9d04[_0xf1c7('0xc')][_0xf1c7('0x1a')]&&_0x4a9d04[_0xf1c7('0xc')]['agent_id']){_0x14289f=_0xf1c7('0x1b');}return util['format'](_0x14289f,_0x4a9d04[_0xf1c7('0xe')],_0x4a9d04[_0xf1c7('0xf')]['x-forwarded-for']?_0x4a9d04[_0xf1c7('0xf')][_0xf1c7('0x10')]:_0x4a9d04['connection'][_0xf1c7('0x12')]||_0x4a9d04['ip'],_0x4a9d04[_0xf1c7('0x13')],_0x460a2c[_0xf1c7('0x14')],_0x460a2c[_0xf1c7('0x15')],_0x4a9d04[_0xf1c7('0x16')]?_0x4a9d04['user']['id']:null,_0x4a9d04[_0xf1c7('0x16')]?_0x4a9d04[_0xf1c7('0x16')]['name']:null,_0x4a9d04[_0xf1c7('0x16')]?_0x4a9d04[_0xf1c7('0x16')][_0xf1c7('0x17')]:null,_0x4a9d04[_0xf1c7('0xc')]&&_0x4a9d04['body']['device']?_0x4a9d04[_0xf1c7('0xc')][_0xf1c7('0x1a')]:_0xf1c7('0x1c'),_0x4a9d04[_0xf1c7('0xc')]&&_0x4a9d04['body']['agent_id']?_0x4a9d04[_0xf1c7('0xc')]['agent_id']:'',_0x4a9d04[_0xf1c7('0xc')]&&_0x4a9d04[_0xf1c7('0xc')][_0xf1c7('0x1d')]?_0x4a9d04['body'][_0xf1c7('0x1d')]:'');},'ignoreRoute':function(_0x1ddaee){var _0x30d6e4=/\/api\/users\/[0-9]+\/(login|logout)/gi;return!_0x30d6e4[_0xf1c7('0x1e')](_0x1ddaee[_0xf1c7('0x13')]);}}));_0x5105dc[_0xf1c7('0x9')](_0xf1c7('0x1f'),require(_0xf1c7('0x20')));_0x5105dc[_0xf1c7('0x9')](_0xf1c7('0x21'),require(_0xf1c7('0x22')));_0x5105dc[_0xf1c7('0x9')](_0xf1c7('0x23'),require(_0xf1c7('0x24')));_0x5105dc['use'](_0xf1c7('0x25'),require(_0xf1c7('0x26')));_0x5105dc[_0xf1c7('0x9')](_0xf1c7('0x27'),require(_0xf1c7('0x28')));_0x5105dc['use'](_0xf1c7('0x29'),require(_0xf1c7('0x2a')));_0x5105dc[_0xf1c7('0x9')](_0xf1c7('0x2b'),require(_0xf1c7('0x2c')));_0x5105dc[_0xf1c7('0x9')](_0xf1c7('0x2d'),require(_0xf1c7('0x2e')));_0x5105dc[_0xf1c7('0x9')](_0xf1c7('0x2f'),require(_0xf1c7('0x30')));_0x5105dc[_0xf1c7('0x9')]('/api/voice/mails/messages',require(_0xf1c7('0x31')));_0x5105dc[_0xf1c7('0x9')](_0xf1c7('0x32'),require('./api/voiceCallReport'));_0x5105dc[_0xf1c7('0x9')]('/api/voice/dials/reports',require(_0xf1c7('0x33')));_0x5105dc['use'](_0xf1c7('0x34'),require(_0xf1c7('0x35')));_0x5105dc[_0xf1c7('0x9')](_0xf1c7('0x36'),require(_0xf1c7('0x37')));_0x5105dc['use'](_0xf1c7('0x38'),require(_0xf1c7('0x39')));_0x5105dc['use'](_0xf1c7('0x3a'),require(_0xf1c7('0x3b')));_0x5105dc['use']('/api/voice/transfers/reports',require(_0xf1c7('0x3c')));_0x5105dc['use'](_0xf1c7('0x3d'),require(_0xf1c7('0x3e')));_0x5105dc[_0xf1c7('0x9')](_0xf1c7('0x3f'),require('./api/mailAccount'));_0x5105dc[_0xf1c7('0x9')](_0xf1c7('0x40'),require(_0xf1c7('0x41')));_0x5105dc[_0xf1c7('0x9')](_0xf1c7('0x42'),require(_0xf1c7('0x43')));_0x5105dc[_0xf1c7('0x9')](_0xf1c7('0x44'),require(_0xf1c7('0x45')));_0x5105dc[_0xf1c7('0x9')]('/api/mail/messages',require('./api/mailMessage'));_0x5105dc[_0xf1c7('0x9')](_0xf1c7('0x46'),require('./api/mailApplication'));_0x5105dc[_0xf1c7('0x9')](_0xf1c7('0x47'),require('./api/mailQueueReport'));_0x5105dc['use'](_0xf1c7('0x48'),require(_0xf1c7('0x49')));_0x5105dc[_0xf1c7('0x9')](_0xf1c7('0x4a'),require(_0xf1c7('0x4b')));_0x5105dc[_0xf1c7('0x9')](_0xf1c7('0x4c'),require(_0xf1c7('0x4d')));_0x5105dc[_0xf1c7('0x9')](_0xf1c7('0x4e'),require(_0xf1c7('0x4f')));_0x5105dc['use'](_0xf1c7('0x50'),require(_0xf1c7('0x51')));_0x5105dc[_0xf1c7('0x9')](_0xf1c7('0x52'),require(_0xf1c7('0x53')));_0x5105dc[_0xf1c7('0x9')](_0xf1c7('0x54'),require(_0xf1c7('0x55')));_0x5105dc[_0xf1c7('0x9')](_0xf1c7('0x56'),require(_0xf1c7('0x57')));_0x5105dc[_0xf1c7('0x9')](_0xf1c7('0x58'),require(_0xf1c7('0x59')));_0x5105dc[_0xf1c7('0x9')](_0xf1c7('0x5a'),require(_0xf1c7('0x5b')));_0x5105dc[_0xf1c7('0x9')]('/api/sms/interactions',require(_0xf1c7('0x5c')));_0x5105dc[_0xf1c7('0x9')](_0xf1c7('0x5d'),require(_0xf1c7('0x5e')));_0x5105dc['use']('/api/sms/queues',require(_0xf1c7('0x5f')));_0x5105dc['use'](_0xf1c7('0x60'),require(_0xf1c7('0x61')));_0x5105dc['use'](_0xf1c7('0x62'),require(_0xf1c7('0x63')));_0x5105dc['use'](_0xf1c7('0x64'),require('./api/openchannelInteraction'));_0x5105dc[_0xf1c7('0x9')](_0xf1c7('0x65'),require(_0xf1c7('0x66')));_0x5105dc[_0xf1c7('0x9')]('/api/openchannel/queues',require(_0xf1c7('0x67')));_0x5105dc['use'](_0xf1c7('0x68'),require('./api/chatWebsite'));_0x5105dc[_0xf1c7('0x9')](_0xf1c7('0x69'),require('./api/openchannelQueueReport'));_0x5105dc['use']('/api/chat/applications',require(_0xf1c7('0x6a')));_0x5105dc['use'](_0xf1c7('0x6b'),require(_0xf1c7('0x6c')));_0x5105dc[_0xf1c7('0x9')](_0xf1c7('0x6d'),require(_0xf1c7('0x6e')));_0x5105dc[_0xf1c7('0x9')](_0xf1c7('0x6f'),require('./api/chatOfflineMessage'));_0x5105dc['use'](_0xf1c7('0x70'),require(_0xf1c7('0x71')));_0x5105dc['use'](_0xf1c7('0x72'),require(_0xf1c7('0x73')));_0x5105dc[_0xf1c7('0x9')](_0xf1c7('0x74'),require(_0xf1c7('0x75')));_0x5105dc['use'](_0xf1c7('0x76'),require('./api/cmCompany'));_0x5105dc[_0xf1c7('0x9')]('/api/cm/contacts',require('./api/cmContact'));_0x5105dc[_0xf1c7('0x9')](_0xf1c7('0x77'),require(_0xf1c7('0x78')));_0x5105dc[_0xf1c7('0x9')](_0xf1c7('0x79'),require(_0xf1c7('0x7a')));_0x5105dc['use'](_0xf1c7('0x7b'),require(_0xf1c7('0x7c')));_0x5105dc[_0xf1c7('0x9')](_0xf1c7('0x7d'),require('./api/cmHopperHistory'));_0x5105dc['use'](_0xf1c7('0x7e'),require('./api/cmCustomField'));_0x5105dc['use'](_0xf1c7('0x7f'),require(_0xf1c7('0x80')));_0x5105dc[_0xf1c7('0x9')](_0xf1c7('0x81'),require(_0xf1c7('0x82')));_0x5105dc[_0xf1c7('0x9')](_0xf1c7('0x83'),require('./api/cannedAnswer'));_0x5105dc[_0xf1c7('0x9')](_0xf1c7('0x84'),require(_0xf1c7('0x85')));_0x5105dc[_0xf1c7('0x9')](_0xf1c7('0x86'),require(_0xf1c7('0x87')));_0x5105dc[_0xf1c7('0x9')]('/api/intervals',require(_0xf1c7('0x88')));_0x5105dc[_0xf1c7('0x9')](_0xf1c7('0x89'),require(_0xf1c7('0x8a')));_0x5105dc['use']('/api/cdr',require(_0xf1c7('0x8b')));_0x5105dc[_0xf1c7('0x9')]('/api/voiceQueuesLog',require(_0xf1c7('0x8c')));_0x5105dc[_0xf1c7('0x9')](_0xf1c7('0x8d'),require(_0xf1c7('0x8e')));_0x5105dc[_0xf1c7('0x9')](_0xf1c7('0x8f'),require(_0xf1c7('0x90')));_0x5105dc[_0xf1c7('0x9')](_0xf1c7('0x91'),require(_0xf1c7('0x92')));_0x5105dc[_0xf1c7('0x9')](_0xf1c7('0x93'),require('./api/template'));_0x5105dc[_0xf1c7('0x9')](_0xf1c7('0x94'),require(_0xf1c7('0x95')));_0x5105dc[_0xf1c7('0x9')](_0xf1c7('0x96'),require(_0xf1c7('0x97')));_0x5105dc[_0xf1c7('0x9')]('/api/integrations',require(_0xf1c7('0x98')));_0x5105dc[_0xf1c7('0x9')](_0xf1c7('0x99'),require(_0xf1c7('0x9a')));_0x5105dc['use'](_0xf1c7('0x9b'),require(_0xf1c7('0x9c')));_0x5105dc[_0xf1c7('0x9')](_0xf1c7('0x9d'),require(_0xf1c7('0x9e')));_0x5105dc['use'](_0xf1c7('0x9f'),require(_0xf1c7('0xa0')));_0x5105dc['use']('/api/analytics/metrics',require('./api/analyticMetric'));_0x5105dc['use'](_0xf1c7('0xa1'),require('./api/analyticFieldReport'));_0x5105dc[_0xf1c7('0x9')](_0xf1c7('0xa2'),require(_0xf1c7('0xa3')));_0x5105dc[_0xf1c7('0x9')]('/api/integrations/salesforce/accounts',require(_0xf1c7('0xa4')));_0x5105dc[_0xf1c7('0x9')](_0xf1c7('0xa5'),require(_0xf1c7('0xa6')));_0x5105dc['use']('/api/integrations/salesforce/fields',require('./api/intSalesforceField'));_0x5105dc['use'](_0xf1c7('0xa7'),require(_0xf1c7('0xa8')));_0x5105dc['use']('/api/integrations/sugarcrm/configurations',require('./api/intSugarcrmConfiguration'));_0x5105dc['use'](_0xf1c7('0xa9'),require(_0xf1c7('0xaa')));_0x5105dc[_0xf1c7('0x9')](_0xf1c7('0xab'),require(_0xf1c7('0xac')));_0x5105dc[_0xf1c7('0x9')](_0xf1c7('0xad'),require(_0xf1c7('0xae')));_0x5105dc[_0xf1c7('0x9')](_0xf1c7('0xaf'),require(_0xf1c7('0xb0')));_0x5105dc[_0xf1c7('0x9')]('/api/integrations/zoho/accounts',require(_0xf1c7('0xb1')));_0x5105dc[_0xf1c7('0x9')](_0xf1c7('0xb2'),require(_0xf1c7('0xb3')));_0x5105dc[_0xf1c7('0x9')](_0xf1c7('0xb4'),require(_0xf1c7('0xb5')));_0x5105dc['use']('/api/integrations/zendesk/accounts',require(_0xf1c7('0xb6')));_0x5105dc['use'](_0xf1c7('0xb7'),require(_0xf1c7('0xb8')));_0x5105dc['use'](_0xf1c7('0xb9'),require(_0xf1c7('0xba')));_0x5105dc[_0xf1c7('0x9')]('/api/integrations/freshdesk/accounts',require(_0xf1c7('0xbb')));_0x5105dc[_0xf1c7('0x9')]('/api/integrations/freshdesk/configurations',require(_0xf1c7('0xbc')));_0x5105dc[_0xf1c7('0x9')](_0xf1c7('0xbd'),require('./api/intFreshdeskField'));_0x5105dc[_0xf1c7('0x9')]('/api/integrations/vtiger/accounts',require(_0xf1c7('0xbe')));_0x5105dc[_0xf1c7('0x9')]('/api/integrations/vtiger/configurations',require('./api/intVtigerConfiguration'));_0x5105dc[_0xf1c7('0x9')](_0xf1c7('0xbf'),require(_0xf1c7('0xc0')));_0x5105dc['use']('/api/integrations/servicenow/accounts',require(_0xf1c7('0xc1')));_0x5105dc['use']('/api/integrations/servicenow/configurations',require('./api/intServicenowConfiguration'));_0x5105dc[_0xf1c7('0x9')]('/api/integrations/servicenow/fields',require(_0xf1c7('0xc2')));_0x5105dc['use'](_0xf1c7('0xc3'),require(_0xf1c7('0xc4')));_0x5105dc[_0xf1c7('0x9')]('/api/integrations/dynamics365/configurations',require(_0xf1c7('0xc5')));_0x5105dc[_0xf1c7('0x9')](_0xf1c7('0xc6'),require(_0xf1c7('0xc7')));_0x5105dc[_0xf1c7('0x9')]('/api/integrations/freshsales/accounts',require(_0xf1c7('0xc8')));_0x5105dc[_0xf1c7('0x9')](_0xf1c7('0xc9'),require(_0xf1c7('0xca')));_0x5105dc[_0xf1c7('0x9')](_0xf1c7('0xcb'),require(_0xf1c7('0xcc')));_0x5105dc[_0xf1c7('0x9')](_0xf1c7('0xcd'),require('./api/network'));_0x5105dc[_0xf1c7('0x9')](_0xf1c7('0xce'),require('./api/chatQueueReport'));_0x5105dc[_0xf1c7('0x9')](_0xf1c7('0xcf'),require('./api/chatInternalMessage'));_0x5105dc[_0xf1c7('0x9')](_0xf1c7('0xd0'),require(_0xf1c7('0xd1')));_0x5105dc[_0xf1c7('0x9')](_0xf1c7('0xd2'),require('./api/jscriptyQuestionReport'));_0x5105dc[_0xf1c7('0x9')](_0xf1c7('0xd3'),require(_0xf1c7('0xd4')));_0x5105dc[_0xf1c7('0x9')](_0xf1c7('0xd5'),require(_0xf1c7('0xd6')));_0x5105dc[_0xf1c7('0x9')](_0xf1c7('0xd7'),require(_0xf1c7('0xd8')));_0x5105dc[_0xf1c7('0x9')](_0xf1c7('0xd9'),require(_0xf1c7('0xda')));_0x5105dc[_0xf1c7('0x9')](_0xf1c7('0xdb'),require(_0xf1c7('0xdc')));_0x5105dc[_0xf1c7('0x9')](_0xf1c7('0xdd'),require(_0xf1c7('0xde')));_0x5105dc[_0xf1c7('0x9')]('/api/square/odbc',require(_0xf1c7('0xdf')));_0x5105dc['use']('/api/square/projects',require('./api/squareProject'));_0x5105dc[_0xf1c7('0x9')]('/api/square/recordings',require(_0xf1c7('0xe0')));_0x5105dc[_0xf1c7('0x9')](_0xf1c7('0xe1'),require(_0xf1c7('0xe2')));_0x5105dc[_0xf1c7('0x9')](_0xf1c7('0xe3'),require('./api/team'));_0x5105dc[_0xf1c7('0x9')](_0xf1c7('0xe4'),require(_0xf1c7('0xe5')));_0x5105dc['use']('/api/campaigns',require(_0xf1c7('0xe6')));_0x5105dc[_0xf1c7('0x9')](_0xf1c7('0xe7'),require('./api/migration'));_0x5105dc[_0xf1c7('0x9')](_0xf1c7('0xe8'),require(_0xf1c7('0xe9')));_0x5105dc['use'](_0xf1c7('0xea'),require(_0xf1c7('0xeb')));_0x5105dc[_0xf1c7('0x9')](_0xf1c7('0xec'),require(_0xf1c7('0xed')));_0x5105dc[_0xf1c7('0x9')](_0xf1c7('0xee'),require(_0xf1c7('0xef')));_0x5105dc[_0xf1c7('0x9')](_0xf1c7('0xf0'),require(_0xf1c7('0xf1')));_0x5105dc[_0xf1c7('0x9')](_0xf1c7('0xf2'),require('./api/openchannelTransferReport'));_0x5105dc[_0xf1c7('0x9')](_0xf1c7('0xf3'),require(_0xf1c7('0xf4')));_0x5105dc[_0xf1c7('0x9')](_0xf1c7('0xf5'),require(_0xf1c7('0xf6')));_0x5105dc['use']('/api/voice/prefixes',require(_0xf1c7('0xf7')));_0x5105dc[_0xf1c7('0x9')](_0xf1c7('0xf8'),require(_0xf1c7('0xf9')));_0x5105dc[_0xf1c7('0x9')](_0xf1c7('0xfa'),require('./api/userProfileSection'));_0x5105dc[_0xf1c7('0x9')](_0xf1c7('0xfb'),require(_0xf1c7('0xfc')));_0x5105dc[_0xf1c7('0x9')](_0xf1c7('0xfd'),require('./api/userNotification'));_0x5105dc[_0xf1c7('0x9')](_0xf1c7('0xfe'),require(_0xf1c7('0xff')));_0x5105dc[_0xf1c7('0x9')](_0xf1c7('0x100'),require('./api/whatsappApplication'));_0x5105dc[_0xf1c7('0x9')]('/api/whatsapp/interactions',require(_0xf1c7('0x101')));_0x5105dc[_0xf1c7('0x9')](_0xf1c7('0x102'),require(_0xf1c7('0x103')));_0x5105dc[_0xf1c7('0x9')](_0xf1c7('0x104'),require('./api/whatsappQueueReport'));_0x5105dc['use'](_0xf1c7('0x105'),require(_0xf1c7('0x106')));_0x5105dc[_0xf1c7('0x9')]('/api/whatsapp/queues',require(_0xf1c7('0x107')));_0x5105dc[_0xf1c7('0x9')](_0xf1c7('0x108'),require(_0xf1c7('0x109')));_0x5105dc[_0xf1c7('0x9')](_0xf1c7('0x10a'),require('./api/realtime'));_0x5105dc[_0xf1c7('0x9')](_0xf1c7('0x10b'),require(_0xf1c7('0x10c')));_0x5105dc['use']('/api/auth/google',require(_0xf1c7('0x10d')));_0x5105dc[_0xf1c7('0x9')](_0xf1c7('0x10e'),require(_0xf1c7('0x10f')));_0x5105dc[_0xf1c7('0x9')](_0xf1c7('0x110'),require('./api/rpc'));_0x5105dc[_0xf1c7('0x9')](_0xf1c7('0x111'),require(_0xf1c7('0x112')));_0x5105dc[_0xf1c7('0x9')](_0xf1c7('0x113'),require(_0xf1c7('0x114')));_0x5105dc['use'](_0xf1c7('0x115'),require(_0xf1c7('0x116')));_0x5105dc[_0xf1c7('0x9')]('/api/webbar',require('./api/webbar'));_0x5105dc[_0xf1c7('0x9')]('/apidoc',express[_0xf1c7('0x117')](path[_0xf1c7('0x118')](config['root'],_0xf1c7('0x119'))));_0x5105dc[_0xf1c7('0x9')](_0xf1c7('0x11a'),express[_0xf1c7('0x117')](path[_0xf1c7('0x118')](config[_0xf1c7('0x11b')],_0xf1c7('0x11a'))));_0x5105dc[_0xf1c7('0x9')](_0xf1c7('0x11c'),express[_0xf1c7('0x117')](path[_0xf1c7('0x118')](config[_0xf1c7('0x11b')],'/demo')));_0x5105dc[_0xf1c7('0x9')](_0xf1c7('0x11d'),express[_0xf1c7('0x117')](path[_0xf1c7('0x118')](config[_0xf1c7('0x11b')],_0xf1c7('0x11e'),_0xf1c7('0x11f'))));_0x5105dc[_0xf1c7('0x9')]('/plugins',express['static'](path['join'](config[_0xf1c7('0x11b')],'/server/files/plugins')));_0x5105dc['route'](_0xf1c7('0x120'))[_0xf1c7('0x121')](errors[0x194]);_0x5105dc[_0xf1c7('0x122')]('/*')['get'](function(_0x1ed74a,_0x42a48f){_0x42a48f[_0xf1c7('0x123')](path[_0xf1c7('0x124')](_0x5105dc['get'](_0xf1c7('0x125'))+_0xf1c7('0x126')));});};var sensitiveFields=[_0xf1c7('0x127'),'password','newPassword','apiKey','firstName',_0xf1c7('0x128'),_0xf1c7('0x129'),_0xf1c7('0x12a'),_0xf1c7('0x12b'),_0xf1c7('0x12c'),'email',_0xf1c7('0x12d'),_0xf1c7('0x12e'),'securityToken',_0xf1c7('0x12f'),_0xf1c7('0x130'),_0xf1c7('0x131'),'token',_0xf1c7('0x132'),'accessToken',_0xf1c7('0x133'),_0xf1c7('0x134'),_0xf1c7('0x135'),'consumerSecret',_0xf1c7('0x136'),'calleridname','calleridnum',_0xf1c7('0x137'),_0xf1c7('0x138'),'clientEmail',_0xf1c7('0x139'),'accesskeyid',_0xf1c7('0x13a'),_0xf1c7('0x13b'),_0xf1c7('0x16'),_0xf1c7('0x13c'),_0xf1c7('0x13d'),_0xf1c7('0x13e'),_0xf1c7('0x13f'),_0xf1c7('0x140'),_0xf1c7('0x141'),_0xf1c7('0x142')];function maskSensitiveData(_0xe7877e){var _0x5b1366=/(?!^)[\s\S](?!$)/g;if(!_['isPlainObject'](_0xe7877e))return;for(var _0x462b1f in _0xe7877e){if(_[_0xf1c7('0x143')](_0xe7877e[_0x462b1f])){for(var _0xeb1f0b=0x0;_0xeb1f0b<_0xe7877e[_0x462b1f][_0xf1c7('0x144')];_0xeb1f0b++){maskSensitiveData(_0xe7877e[_0x462b1f][_0xeb1f0b]);}}else if(_[_0xf1c7('0x145')](_0xe7877e[_0x462b1f])){maskSensitiveData(_0xe7877e[_0x462b1f]);}else if(_['isString'](_0xe7877e[_0x462b1f])){_0xe7877e[_0x462b1f]=_0xe7877e[_0x462b1f][_0xf1c7('0x146')](/{{{/g,_0xf1c7('0x147'))[_0xf1c7('0x146')](/}}}/g,'}@@')[_0xf1c7('0x146')](/{{/g,'@{')[_0xf1c7('0x146')](/}}/g,'}@');if(_[_0xf1c7('0x148')](sensitiveFields,_0x462b1f)){_0xe7877e[_0x462b1f]=_0xe7877e[_0x462b1f][_0xf1c7('0x146')](_0x5b1366,'*');}}}}
\ No newline at end of file
+var _0xc9df=['/api/system','./api/system','/api/pm2','./api/pm2','/api/webbar','./api/webbar','static','join','root','/apidoc','/www','/demo','/snippet','snippet','3.0.0','/server/files/plugins','route','/:url(api|auth|components|app|bower_components|assets)/*','get','resolve','username','newPassword','apiKey','firstName','phone','fax','email','clientId','clientSecret','securityToken','code','accessKey','channelSecret','authToken','consumerSecret','membername','calleridnum','exten','vidaooApiKey','privateKey','secretaccesskey','key','accountSid','localstationid','dsn','secret','registry','oldPassword','isArray','length','isPlainObject','isString','replace','@@{','}@@','lodash','path','express-winston','util','./config/environment','./config/logger','auth','default','use','%s\x20%s\x20%s\x20%s\x20%sms\x20id=%s\x20name=%s\x20role=%s','body','\x20body=%s','method','headers','x-forwarded-for','connection','statusCode','responseTime','user','logger','device','format','remoteAddress','url','name','other','agent_id','agent_name','/api/users','/api/voice/chanspy','./api/voiceChanSpy','/api/voice/contexts','/api/voice/extensions','./api/voiceExtension','/api/voice/queues','./api/voiceQueue','/api/voice/recordings','./api/voiceRecording','/api/screen/recordings','./api/screenRecording','./api/voiceMail','/api/voice/mails/messages','./api/voiceMailMessage','./api/voiceCallReport','/api/voice/dials/reports','./api/voiceDialReport','/api/voice/agents/reports','./api/voiceAgentReport','/api/voice/queues/reports','./api/voiceQueueReport','/api/members/reports','/api/trunks','./api/trunk','/api/voice/transfers/reports','./api/voiceTransferReport','./api/mailServerOut','./api/mailAccount','/api/mail/queues','/api/mail/substatuses','./api/mailSubstatus','./api/mailInteraction','/api/mail/messages','./api/mailMessage','/api/mail/applications','./api/mailApplication','/api/mail/reports/queue','./api/mailQueueReport','./api/dashboardItem','/api/fax/accounts','./api/faxAccount','/api/fax/applications','/api/fax/interactions','./api/faxInteraction','./api/faxMessage','/api/fax/queues','./api/faxQueue','/api/fax/reports/queue','/api/sms/accounts','./api/smsAccount','/api/sms/applications','/api/sms/interactions','./api/smsInteraction','/api/sms/messages','./api/smsMessage','/api/sms/queues','./api/smsQueue','/api/openchannel/accounts','./api/openchannelApplication','/api/openchannel/interactions','./api/openchannelInteraction','./api/openchannelMessage','/api/openchannel/queues','./api/openchannelQueue','./api/chatWebsite','/api/openchannel/reports/queue','./api/openchannelQueueReport','/api/chat/applications','./api/chatApplication','/api/chat/interactions','/api/chat/messages','./api/chatMessage','./api/chatOfflineMessage','/api/chat/queues','./api/chatGroup','/api/chat/proactive_actions','/api/cm/companies','./api/cmCompany','/api/cm/contacts','/api/cm/hopper','./api/cmHopper','/api/cm/hopper_black','./api/cmHopperBlack','/api/cm/hopper_final','./api/cmHopperFinal','/api/cm/hopper_history','./api/cmHopperHistory','/api/cm/custom_fields','/api/actions','./api/action','/api/automations','./api/automation','./api/cannedAnswer','/api/dispositions','./api/disposition','/api/conditions','./api/condition','/api/pauses','./api/pause','/api/cdr','./api/cdr','./api/voiceQueuesLog','./api/schedule','/api/sounds','./api/sound','/api/tags','/api/templates','./api/template','/api/variables','./api/variable','/api/integrations','./api/integration','/api/integrations/reports','./api/integrationReport','/api/analytics/custom_reports','./api/analyticCustomReport','/api/analytics/default_reports','/api/analytics/extracted_reports','./api/analyticExtractedReport','/api/analytics/metrics','/api/analytics/field_reports','./api/analyticFieldReport','/api/analytics/tree_reports','./api/analyticTreeReport','/api/integrations/salesforce/accounts','./api/intSalesforceAccount','/api/integrations/salesforce/configurations','./api/intSalesforceConfiguration','/api/integrations/salesforce/fields','./api/intSalesforceField','/api/integrations/sugarcrm/accounts','/api/integrations/sugarcrm/configurations','./api/intSugarcrmField','./api/intDeskAccount','/api/integrations/desk/configurations','./api/intDeskConfiguration','/api/integrations/desk/fields','./api/intDeskField','/api/integrations/zoho/accounts','/api/integrations/zoho/configurations','./api/intZohoConfiguration','/api/integrations/zoho/fields','./api/intZohoField','/api/integrations/zendesk/accounts','./api/intZendeskAccount','/api/integrations/zendesk/configurations','./api/intZendeskConfiguration','/api/integrations/zendesk/fields','/api/integrations/freshdesk/accounts','./api/intFreshdeskAccount','/api/integrations/freshdesk/configurations','/api/integrations/freshdesk/fields','./api/intFreshdeskField','./api/intVtigerAccount','/api/integrations/vtiger/configurations','./api/intVtigerConfiguration','/api/integrations/vtiger/fields','./api/intVtigerField','/api/integrations/servicenow/accounts','./api/intServicenowAccount','/api/integrations/servicenow/configurations','./api/intServicenowField','/api/integrations/dynamics365/configurations','./api/intDynamics365Configuration','/api/integrations/dynamics365/fields','./api/intDynamics365Field','./api/intFreshsalesAccount','/api/integrations/freshsales/configurations','./api/intFreshsalesConfiguration','./api/intFreshsalesField','/api/networks','./api/network','/api/chat/reports/queue','./api/chatQueueReport','/api/chat/internal/messages','./api/chatInternalMessage','./api/jscriptyAnswerReport','/api/jscripty/questions/reports','./api/jscriptyQuestionReport','/api/jscripty/sessions/reports','./api/jscriptySessionReport','/api/sms/reports/queue','./api/smsQueueReport','/api/square/reports','/api/square/details/reports','/api/jscripty/projects','./api/jscriptyProject','/api/settings','./api/setting','/api/square/odbc','./api/squareOdbc','/api/square/projects','/api/square/recordings','./api/squareRecording','/api/square/messages','/api/teams','./api/team','./api/license','/api/campaigns','/api/migrations','./api/attachment','/api/plugins','./api/plugin','/api/mail/reports/transfer','./api/mailTransferReport','/api/chat/reports/transfer','/api/fax/reports/transfer','./api/faxTransferReport','/api/openchannel/reports/transfer','./api/openchannelTransferReport','/api/sms/reports/transfer','./api/smsTransferReport','/api/cm/lists','./api/cmList','./api/voicePrefix','/api/userProfiles','./api/userProfile','/api/userProfile/sections','./api/userProfileSection','/api/userProfile/resources','./api/userNotification','/api/whatsapp/applications','./api/whatsappApplication','/api/whatsapp/interactions','./api/whatsappInteraction','./api/whatsappMessage','/api/whatsapp/reports/queue','./api/whatsappQueueReport','/api/whatsapp/queues','./api/whatsappQueue','/api/cloudProviders','./api/cloudProvider','/api/auth/local','./api/authLocal','/api/auth/google','./api/authGoogle','/api/jira','./api/jira','/api/rpc','./api/rpc','/api/version','./api/version'];(function(_0x34843e,_0x4c4224){var _0x598f7f=function(_0x12a44c){while(--_0x12a44c){_0x34843e['push'](_0x34843e['shift']());}};_0x598f7f(++_0x4c4224);}(_0xc9df,0x17d));var _0xfc9d=function(_0x472a9b,_0x4c9486){_0x472a9b=_0x472a9b-0x0;var _0x3c4d57=_0xc9df[_0x472a9b];return _0x3c4d57;};'use strict';var _=require(_0xfc9d('0x0'));var path=require(_0xfc9d('0x1'));var express=require('express');var ewinston=require(_0xfc9d('0x2'));var util=require(_0xfc9d('0x3'));var errors=require('./errors');var config=require(_0xfc9d('0x4'));var logger=require('./config/logger')('api');var authLogger=require(_0xfc9d('0x5'))(_0xfc9d('0x6'));exports[_0xfc9d('0x7')]=function(_0x539649){_0x539649[_0xfc9d('0x8')](ewinston['logger']({'winstonInstance':logger,'meta':![],'statusLevels':!![],'msg':function(_0x560d31,_0xa185c0){var _0x3dde5a=_0xfc9d('0x9');if(!_['isEmpty'](_0x560d31[_0xfc9d('0xa')])){_0x3dde5a+=_0xfc9d('0xb');var _0x33b3b8=_0x560d31[_0xfc9d('0xa')];maskSensitiveData(_0x33b3b8);}return util['format'](_0x3dde5a,_0x560d31[_0xfc9d('0xc')],_0x560d31[_0xfc9d('0xd')][_0xfc9d('0xe')]?_0x560d31[_0xfc9d('0xd')][_0xfc9d('0xe')]:_0x560d31[_0xfc9d('0xf')]['remoteAddress']||_0x560d31['ip'],_0x560d31['url'],_0xa185c0[_0xfc9d('0x10')],_0xa185c0[_0xfc9d('0x11')],_0x560d31[_0xfc9d('0x12')]?_0x560d31[_0xfc9d('0x12')]['id']:null,_0x560d31['user']?_0x560d31[_0xfc9d('0x12')]['name']:null,_0x560d31[_0xfc9d('0x12')]?_0x560d31['user']['role']:null,_0x33b3b8?util['inspect'](_0x33b3b8,![],null):'');}}));_0x539649['use'](ewinston[_0xfc9d('0x13')]({'winstonInstance':authLogger,'meta':![],'statusLevels':!![],'msg':function(_0x13beb6,_0x465569){var _0x5cf316='%s\x20%s\x20%s\x20%s\x20%sms\x20id=%s\x20name=%s\x20role=%s\x20device=%s';if(_0x13beb6[_0xfc9d('0xa')]&&_0x13beb6[_0xfc9d('0xa')][_0xfc9d('0x14')]&&_0x13beb6[_0xfc9d('0xa')]['agent_id']){_0x5cf316='%s\x20%s\x20%s\x20%s\x20%sms\x20id=%s\x20name=%s\x20role=%s\x20device=%s\x20(id=%s\x20name=%s)';}return util[_0xfc9d('0x15')](_0x5cf316,_0x13beb6[_0xfc9d('0xc')],_0x13beb6[_0xfc9d('0xd')][_0xfc9d('0xe')]?_0x13beb6['headers'][_0xfc9d('0xe')]:_0x13beb6[_0xfc9d('0xf')][_0xfc9d('0x16')]||_0x13beb6['ip'],_0x13beb6[_0xfc9d('0x17')],_0x465569[_0xfc9d('0x10')],_0x465569[_0xfc9d('0x11')],_0x13beb6['user']?_0x13beb6[_0xfc9d('0x12')]['id']:null,_0x13beb6[_0xfc9d('0x12')]?_0x13beb6['user'][_0xfc9d('0x18')]:null,_0x13beb6[_0xfc9d('0x12')]?_0x13beb6[_0xfc9d('0x12')]['role']:null,_0x13beb6[_0xfc9d('0xa')]&&_0x13beb6[_0xfc9d('0xa')][_0xfc9d('0x14')]?_0x13beb6[_0xfc9d('0xa')]['device']:_0xfc9d('0x19'),_0x13beb6[_0xfc9d('0xa')]&&_0x13beb6[_0xfc9d('0xa')][_0xfc9d('0x1a')]?_0x13beb6[_0xfc9d('0xa')][_0xfc9d('0x1a')]:'',_0x13beb6[_0xfc9d('0xa')]&&_0x13beb6[_0xfc9d('0xa')][_0xfc9d('0x1b')]?_0x13beb6[_0xfc9d('0xa')][_0xfc9d('0x1b')]:'');},'ignoreRoute':function(_0x3622a2){var _0x48a26e=/\/api\/users\/[0-9]+\/(login|logout)/gi;return!_0x48a26e['test'](_0x3622a2['url']);}}));_0x539649[_0xfc9d('0x8')](_0xfc9d('0x1c'),require('./api/user'));_0x539649[_0xfc9d('0x8')](_0xfc9d('0x1d'),require(_0xfc9d('0x1e')));_0x539649[_0xfc9d('0x8')](_0xfc9d('0x1f'),require('./api/voiceContext'));_0x539649['use'](_0xfc9d('0x20'),require(_0xfc9d('0x21')));_0x539649[_0xfc9d('0x8')]('/api/voice/mohs',require('./api/voiceMusicOnHold'));_0x539649['use'](_0xfc9d('0x22'),require(_0xfc9d('0x23')));_0x539649[_0xfc9d('0x8')](_0xfc9d('0x24'),require(_0xfc9d('0x25')));_0x539649[_0xfc9d('0x8')](_0xfc9d('0x26'),require(_0xfc9d('0x27')));_0x539649[_0xfc9d('0x8')]('/api/voice/mails',require(_0xfc9d('0x28')));_0x539649[_0xfc9d('0x8')](_0xfc9d('0x29'),require(_0xfc9d('0x2a')));_0x539649['use']('/api/voice/calls/reports',require(_0xfc9d('0x2b')));_0x539649[_0xfc9d('0x8')](_0xfc9d('0x2c'),require(_0xfc9d('0x2d')));_0x539649['use'](_0xfc9d('0x2e'),require(_0xfc9d('0x2f')));_0x539649[_0xfc9d('0x8')](_0xfc9d('0x30'),require(_0xfc9d('0x31')));_0x539649[_0xfc9d('0x8')](_0xfc9d('0x32'),require('./api/memberReport'));_0x539649[_0xfc9d('0x8')](_0xfc9d('0x33'),require(_0xfc9d('0x34')));_0x539649['use'](_0xfc9d('0x35'),require(_0xfc9d('0x36')));_0x539649[_0xfc9d('0x8')]('/api/mail/out_servers',require(_0xfc9d('0x37')));_0x539649[_0xfc9d('0x8')]('/api/mail/accounts',require(_0xfc9d('0x38')));_0x539649['use'](_0xfc9d('0x39'),require('./api/mailQueue'));_0x539649[_0xfc9d('0x8')](_0xfc9d('0x3a'),require(_0xfc9d('0x3b')));_0x539649['use']('/api/mail/interactions',require(_0xfc9d('0x3c')));_0x539649[_0xfc9d('0x8')](_0xfc9d('0x3d'),require(_0xfc9d('0x3e')));_0x539649['use'](_0xfc9d('0x3f'),require(_0xfc9d('0x40')));_0x539649[_0xfc9d('0x8')](_0xfc9d('0x41'),require(_0xfc9d('0x42')));_0x539649[_0xfc9d('0x8')]('/api/dashboards',require('./api/dashboard'));_0x539649[_0xfc9d('0x8')]('/api/dashboards/items',require(_0xfc9d('0x43')));_0x539649['use'](_0xfc9d('0x44'),require(_0xfc9d('0x45')));_0x539649[_0xfc9d('0x8')](_0xfc9d('0x46'),require('./api/faxApplication'));_0x539649['use'](_0xfc9d('0x47'),require(_0xfc9d('0x48')));_0x539649[_0xfc9d('0x8')]('/api/fax/messages',require(_0xfc9d('0x49')));_0x539649[_0xfc9d('0x8')](_0xfc9d('0x4a'),require(_0xfc9d('0x4b')));_0x539649['use'](_0xfc9d('0x4c'),require('./api/faxQueueReport'));_0x539649[_0xfc9d('0x8')](_0xfc9d('0x4d'),require(_0xfc9d('0x4e')));_0x539649[_0xfc9d('0x8')](_0xfc9d('0x4f'),require('./api/smsApplication'));_0x539649[_0xfc9d('0x8')](_0xfc9d('0x50'),require(_0xfc9d('0x51')));_0x539649[_0xfc9d('0x8')](_0xfc9d('0x52'),require(_0xfc9d('0x53')));_0x539649[_0xfc9d('0x8')](_0xfc9d('0x54'),require(_0xfc9d('0x55')));_0x539649[_0xfc9d('0x8')](_0xfc9d('0x56'),require('./api/openchannelAccount'));_0x539649[_0xfc9d('0x8')]('/api/openchannel/applications',require(_0xfc9d('0x57')));_0x539649[_0xfc9d('0x8')](_0xfc9d('0x58'),require(_0xfc9d('0x59')));_0x539649['use']('/api/openchannel/messages',require(_0xfc9d('0x5a')));_0x539649[_0xfc9d('0x8')](_0xfc9d('0x5b'),require(_0xfc9d('0x5c')));_0x539649[_0xfc9d('0x8')]('/api/chat/websites',require(_0xfc9d('0x5d')));_0x539649[_0xfc9d('0x8')](_0xfc9d('0x5e'),require(_0xfc9d('0x5f')));_0x539649[_0xfc9d('0x8')](_0xfc9d('0x60'),require(_0xfc9d('0x61')));_0x539649[_0xfc9d('0x8')](_0xfc9d('0x62'),require('./api/chatInteraction'));_0x539649[_0xfc9d('0x8')](_0xfc9d('0x63'),require(_0xfc9d('0x64')));_0x539649['use']('/api/chat/offline_messages',require(_0xfc9d('0x65')));_0x539649[_0xfc9d('0x8')](_0xfc9d('0x66'),require('./api/chatQueue'));_0x539649[_0xfc9d('0x8')]('/api/chat/groups',require(_0xfc9d('0x67')));_0x539649['use'](_0xfc9d('0x68'),require('./api/chatProactiveAction'));_0x539649[_0xfc9d('0x8')](_0xfc9d('0x69'),require(_0xfc9d('0x6a')));_0x539649[_0xfc9d('0x8')](_0xfc9d('0x6b'),require('./api/cmContact'));_0x539649[_0xfc9d('0x8')](_0xfc9d('0x6c'),require(_0xfc9d('0x6d')));_0x539649[_0xfc9d('0x8')](_0xfc9d('0x6e'),require(_0xfc9d('0x6f')));_0x539649[_0xfc9d('0x8')](_0xfc9d('0x70'),require(_0xfc9d('0x71')));_0x539649[_0xfc9d('0x8')](_0xfc9d('0x72'),require(_0xfc9d('0x73')));_0x539649['use'](_0xfc9d('0x74'),require('./api/cmCustomField'));_0x539649[_0xfc9d('0x8')](_0xfc9d('0x75'),require(_0xfc9d('0x76')));_0x539649['use'](_0xfc9d('0x77'),require(_0xfc9d('0x78')));_0x539649['use']('/api/canned_answers',require(_0xfc9d('0x79')));_0x539649[_0xfc9d('0x8')](_0xfc9d('0x7a'),require(_0xfc9d('0x7b')));_0x539649[_0xfc9d('0x8')](_0xfc9d('0x7c'),require(_0xfc9d('0x7d')));_0x539649[_0xfc9d('0x8')]('/api/intervals',require('./api/interval'));_0x539649[_0xfc9d('0x8')](_0xfc9d('0x7e'),require(_0xfc9d('0x7f')));_0x539649[_0xfc9d('0x8')](_0xfc9d('0x80'),require(_0xfc9d('0x81')));_0x539649[_0xfc9d('0x8')]('/api/voiceQueuesLog',require(_0xfc9d('0x82')));_0x539649[_0xfc9d('0x8')]('/api/schedules',require(_0xfc9d('0x83')));_0x539649['use'](_0xfc9d('0x84'),require(_0xfc9d('0x85')));_0x539649[_0xfc9d('0x8')](_0xfc9d('0x86'),require('./api/tag'));_0x539649[_0xfc9d('0x8')](_0xfc9d('0x87'),require(_0xfc9d('0x88')));_0x539649[_0xfc9d('0x8')]('/api/triggers',require('./api/trigger'));_0x539649[_0xfc9d('0x8')](_0xfc9d('0x89'),require(_0xfc9d('0x8a')));_0x539649[_0xfc9d('0x8')](_0xfc9d('0x8b'),require(_0xfc9d('0x8c')));_0x539649[_0xfc9d('0x8')](_0xfc9d('0x8d'),require(_0xfc9d('0x8e')));_0x539649[_0xfc9d('0x8')](_0xfc9d('0x8f'),require(_0xfc9d('0x90')));_0x539649[_0xfc9d('0x8')](_0xfc9d('0x91'),require('./api/analyticDefaultReport'));_0x539649[_0xfc9d('0x8')](_0xfc9d('0x92'),require(_0xfc9d('0x93')));_0x539649[_0xfc9d('0x8')](_0xfc9d('0x94'),require('./api/analyticMetric'));_0x539649[_0xfc9d('0x8')](_0xfc9d('0x95'),require(_0xfc9d('0x96')));_0x539649[_0xfc9d('0x8')](_0xfc9d('0x97'),require(_0xfc9d('0x98')));_0x539649[_0xfc9d('0x8')](_0xfc9d('0x99'),require(_0xfc9d('0x9a')));_0x539649[_0xfc9d('0x8')](_0xfc9d('0x9b'),require(_0xfc9d('0x9c')));_0x539649[_0xfc9d('0x8')](_0xfc9d('0x9d'),require(_0xfc9d('0x9e')));_0x539649[_0xfc9d('0x8')](_0xfc9d('0x9f'),require('./api/intSugarcrmAccount'));_0x539649[_0xfc9d('0x8')](_0xfc9d('0xa0'),require('./api/intSugarcrmConfiguration'));_0x539649[_0xfc9d('0x8')]('/api/integrations/sugarcrm/fields',require(_0xfc9d('0xa1')));_0x539649[_0xfc9d('0x8')]('/api/integrations/desk/accounts',require(_0xfc9d('0xa2')));_0x539649[_0xfc9d('0x8')](_0xfc9d('0xa3'),require(_0xfc9d('0xa4')));_0x539649[_0xfc9d('0x8')](_0xfc9d('0xa5'),require(_0xfc9d('0xa6')));_0x539649[_0xfc9d('0x8')](_0xfc9d('0xa7'),require('./api/intZohoAccount'));_0x539649[_0xfc9d('0x8')](_0xfc9d('0xa8'),require(_0xfc9d('0xa9')));_0x539649[_0xfc9d('0x8')](_0xfc9d('0xaa'),require(_0xfc9d('0xab')));_0x539649[_0xfc9d('0x8')](_0xfc9d('0xac'),require(_0xfc9d('0xad')));_0x539649[_0xfc9d('0x8')](_0xfc9d('0xae'),require(_0xfc9d('0xaf')));_0x539649[_0xfc9d('0x8')](_0xfc9d('0xb0'),require('./api/intZendeskField'));_0x539649['use'](_0xfc9d('0xb1'),require(_0xfc9d('0xb2')));_0x539649[_0xfc9d('0x8')](_0xfc9d('0xb3'),require('./api/intFreshdeskConfiguration'));_0x539649['use'](_0xfc9d('0xb4'),require(_0xfc9d('0xb5')));_0x539649[_0xfc9d('0x8')]('/api/integrations/vtiger/accounts',require(_0xfc9d('0xb6')));_0x539649['use'](_0xfc9d('0xb7'),require(_0xfc9d('0xb8')));_0x539649['use'](_0xfc9d('0xb9'),require(_0xfc9d('0xba')));_0x539649[_0xfc9d('0x8')](_0xfc9d('0xbb'),require(_0xfc9d('0xbc')));_0x539649[_0xfc9d('0x8')](_0xfc9d('0xbd'),require('./api/intServicenowConfiguration'));_0x539649[_0xfc9d('0x8')]('/api/integrations/servicenow/fields',require(_0xfc9d('0xbe')));_0x539649['use']('/api/integrations/dynamics365/accounts',require('./api/intDynamics365Account'));_0x539649[_0xfc9d('0x8')](_0xfc9d('0xbf'),require(_0xfc9d('0xc0')));_0x539649[_0xfc9d('0x8')](_0xfc9d('0xc1'),require(_0xfc9d('0xc2')));_0x539649[_0xfc9d('0x8')]('/api/integrations/freshsales/accounts',require(_0xfc9d('0xc3')));_0x539649['use'](_0xfc9d('0xc4'),require(_0xfc9d('0xc5')));_0x539649['use']('/api/integrations/freshsales/fields',require(_0xfc9d('0xc6')));_0x539649['use'](_0xfc9d('0xc7'),require(_0xfc9d('0xc8')));_0x539649[_0xfc9d('0x8')](_0xfc9d('0xc9'),require(_0xfc9d('0xca')));_0x539649[_0xfc9d('0x8')](_0xfc9d('0xcb'),require(_0xfc9d('0xcc')));_0x539649['use']('/api/jscripty/answers/reports',require(_0xfc9d('0xcd')));_0x539649[_0xfc9d('0x8')](_0xfc9d('0xce'),require(_0xfc9d('0xcf')));_0x539649[_0xfc9d('0x8')](_0xfc9d('0xd0'),require(_0xfc9d('0xd1')));_0x539649['use'](_0xfc9d('0xd2'),require(_0xfc9d('0xd3')));_0x539649[_0xfc9d('0x8')](_0xfc9d('0xd4'),require('./api/squareReport'));_0x539649[_0xfc9d('0x8')](_0xfc9d('0xd5'),require('./api/squareReportDetail'));_0x539649[_0xfc9d('0x8')](_0xfc9d('0xd6'),require(_0xfc9d('0xd7')));_0x539649[_0xfc9d('0x8')](_0xfc9d('0xd8'),require(_0xfc9d('0xd9')));_0x539649[_0xfc9d('0x8')](_0xfc9d('0xda'),require(_0xfc9d('0xdb')));_0x539649['use'](_0xfc9d('0xdc'),require('./api/squareProject'));_0x539649[_0xfc9d('0x8')](_0xfc9d('0xdd'),require(_0xfc9d('0xde')));_0x539649[_0xfc9d('0x8')](_0xfc9d('0xdf'),require('./api/squareMessage'));_0x539649[_0xfc9d('0x8')](_0xfc9d('0xe0'),require(_0xfc9d('0xe1')));_0x539649[_0xfc9d('0x8')]('/api/license',require(_0xfc9d('0xe2')));_0x539649[_0xfc9d('0x8')](_0xfc9d('0xe3'),require('./api/campaign'));_0x539649[_0xfc9d('0x8')](_0xfc9d('0xe4'),require('./api/migration'));_0x539649[_0xfc9d('0x8')]('/api/attachments',require(_0xfc9d('0xe5')));_0x539649[_0xfc9d('0x8')](_0xfc9d('0xe6'),require(_0xfc9d('0xe7')));_0x539649['use'](_0xfc9d('0xe8'),require(_0xfc9d('0xe9')));_0x539649[_0xfc9d('0x8')](_0xfc9d('0xea'),require('./api/chatTransferReport'));_0x539649['use'](_0xfc9d('0xeb'),require(_0xfc9d('0xec')));_0x539649[_0xfc9d('0x8')](_0xfc9d('0xed'),require(_0xfc9d('0xee')));_0x539649[_0xfc9d('0x8')](_0xfc9d('0xef'),require(_0xfc9d('0xf0')));_0x539649[_0xfc9d('0x8')](_0xfc9d('0xf1'),require(_0xfc9d('0xf2')));_0x539649[_0xfc9d('0x8')]('/api/voice/prefixes',require(_0xfc9d('0xf3')));_0x539649[_0xfc9d('0x8')](_0xfc9d('0xf4'),require(_0xfc9d('0xf5')));_0x539649[_0xfc9d('0x8')](_0xfc9d('0xf6'),require(_0xfc9d('0xf7')));_0x539649['use'](_0xfc9d('0xf8'),require('./api/userProfileResource'));_0x539649[_0xfc9d('0x8')]('/api/userNotifications',require(_0xfc9d('0xf9')));_0x539649[_0xfc9d('0x8')]('/api/whatsapp/accounts',require('./api/whatsappAccount'));_0x539649[_0xfc9d('0x8')](_0xfc9d('0xfa'),require(_0xfc9d('0xfb')));_0x539649[_0xfc9d('0x8')](_0xfc9d('0xfc'),require(_0xfc9d('0xfd')));_0x539649[_0xfc9d('0x8')]('/api/whatsapp/messages',require(_0xfc9d('0xfe')));_0x539649[_0xfc9d('0x8')](_0xfc9d('0xff'),require(_0xfc9d('0x100')));_0x539649[_0xfc9d('0x8')]('/api/whatsapp/reports/transfer',require('./api/whatsappTransferReport'));_0x539649[_0xfc9d('0x8')](_0xfc9d('0x101'),require(_0xfc9d('0x102')));_0x539649[_0xfc9d('0x8')](_0xfc9d('0x103'),require(_0xfc9d('0x104')));_0x539649[_0xfc9d('0x8')]('/api/realtime',require('./api/realtime'));_0x539649[_0xfc9d('0x8')](_0xfc9d('0x105'),require(_0xfc9d('0x106')));_0x539649[_0xfc9d('0x8')](_0xfc9d('0x107'),require(_0xfc9d('0x108')));_0x539649[_0xfc9d('0x8')](_0xfc9d('0x109'),require(_0xfc9d('0x10a')));_0x539649[_0xfc9d('0x8')](_0xfc9d('0x10b'),require(_0xfc9d('0x10c')));_0x539649[_0xfc9d('0x8')](_0xfc9d('0x10d'),require(_0xfc9d('0x10e')));_0x539649[_0xfc9d('0x8')](_0xfc9d('0x10f'),require(_0xfc9d('0x110')));_0x539649[_0xfc9d('0x8')](_0xfc9d('0x111'),require(_0xfc9d('0x112')));_0x539649[_0xfc9d('0x8')](_0xfc9d('0x113'),require(_0xfc9d('0x114')));_0x539649[_0xfc9d('0x8')]('/apidoc',express[_0xfc9d('0x115')](path[_0xfc9d('0x116')](config[_0xfc9d('0x117')],_0xfc9d('0x118'))));_0x539649[_0xfc9d('0x8')](_0xfc9d('0x119'),express[_0xfc9d('0x115')](path[_0xfc9d('0x116')](config[_0xfc9d('0x117')],_0xfc9d('0x119'))));_0x539649['use'](_0xfc9d('0x11a'),express[_0xfc9d('0x115')](path[_0xfc9d('0x116')](config[_0xfc9d('0x117')],_0xfc9d('0x11a'))));_0x539649[_0xfc9d('0x8')](_0xfc9d('0x11b'),express[_0xfc9d('0x115')](path['join'](config['root'],_0xfc9d('0x11c'),_0xfc9d('0x11d'))));_0x539649['use']('/plugins',express[_0xfc9d('0x115')](path[_0xfc9d('0x116')](config[_0xfc9d('0x117')],_0xfc9d('0x11e'))));_0x539649[_0xfc9d('0x11f')](_0xfc9d('0x120'))[_0xfc9d('0x121')](errors[0x194]);_0x539649[_0xfc9d('0x11f')]('/*')[_0xfc9d('0x121')](function(_0x27640d,_0x5b7c52){_0x5b7c52['sendFile'](path[_0xfc9d('0x122')](_0x539649[_0xfc9d('0x121')]('appPath')+'/index.html'));});};var sensitiveFields=[_0xfc9d('0x123'),'password',_0xfc9d('0x124'),_0xfc9d('0x125'),_0xfc9d('0x126'),'lastName','street',_0xfc9d('0x127'),'mobile',_0xfc9d('0x128'),_0xfc9d('0x129'),_0xfc9d('0x12a'),_0xfc9d('0x12b'),_0xfc9d('0x12c'),_0xfc9d('0x12d'),_0xfc9d('0x12e'),'tenantId','token',_0xfc9d('0x12f'),'accessToken','accessTokenSecret',_0xfc9d('0x130'),'consumerKey',_0xfc9d('0x131'),_0xfc9d('0x132'),'calleridname',_0xfc9d('0x133'),_0xfc9d('0x134'),_0xfc9d('0x135'),'clientEmail',_0xfc9d('0x136'),'accesskeyid',_0xfc9d('0x137'),_0xfc9d('0x138'),_0xfc9d('0x12'),'pass',_0xfc9d('0x139'),_0xfc9d('0x13a'),_0xfc9d('0x13b'),_0xfc9d('0x13c'),_0xfc9d('0x13d'),_0xfc9d('0x13e')];function maskSensitiveData(_0x1b78d5){var _0x324b5e=/(?!^)[\s\S](?!$)/g;if(!_['isPlainObject'](_0x1b78d5))return;for(var _0x1339fb in _0x1b78d5){if(_[_0xfc9d('0x13f')](_0x1b78d5[_0x1339fb])){for(var _0xcb5ba7=0x0;_0xcb5ba7<_0x1b78d5[_0x1339fb][_0xfc9d('0x140')];_0xcb5ba7++){maskSensitiveData(_0x1b78d5[_0x1339fb][_0xcb5ba7]);}}else if(_[_0xfc9d('0x141')](_0x1b78d5[_0x1339fb])){maskSensitiveData(_0x1b78d5[_0x1339fb]);}else if(_[_0xfc9d('0x142')](_0x1b78d5[_0x1339fb])){_0x1b78d5[_0x1339fb]=_0x1b78d5[_0x1339fb][_0xfc9d('0x143')](/{{{/g,_0xfc9d('0x144'))[_0xfc9d('0x143')](/}}}/g,_0xfc9d('0x145'))[_0xfc9d('0x143')](/{{/g,'@{')[_0xfc9d('0x143')](/}}/g,'}@');if(_['includes'](sensitiveFields,_0x1339fb)){_0x1b78d5[_0x1339fb]=_0x1b78d5[_0x1339fb][_0xfc9d('0x143')](_0x324b5e,'*');}}}}
\ No newline at end of file
index 2c1121c..1536381 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3f29=['../api/cmHopperFinal/cmHopperFinal.rpc','../api/cmHopperHistory/cmHopperHistory.rpc','../api/reportAgentPreview/reportAgentPreview.rpc','../api/interval/interval.rpc','../api/template/template.rpc','../api/trigger/trigger.rpc','../api/intSalesforceAccount/intSalesforceAccount.rpc','../api/intSugarcrmAccount/intSugarcrmAccount.rpc','../api/intDeskAccount/intDeskAccount.rpc','../api/intZendeskAccount/intZendeskAccount.rpc','../api/intFreshdeskAccount/intFreshdeskAccount.rpc','../api/intVtigerAccount/intVtigerAccount.rpc','../api/intFreshsalesAccount/intFreshsalesAccount.rpc','../api/setting/setting.rpc','../api/squareProject/squareProject.rpc','../api/squareRecording/squareRecording.rpc','../api/squareMessage/squareMessage.rpc','../api/campaign/campaign.rpc','../api/attachment/attachment.rpc','../api/plugin/plugin.rpc','../api/whatsappInteraction/whatsappInteraction.rpc','../api/whatsappMessage/whatsappMessage.rpc','../api/whatsappQueue/whatsappQueue.rpc','server','rpc','port','localhost','error','log','Express\x20RPC\x20server\x20listening\x20on\x20%s:%d!','../config/triggers','RPC\x20listening\x20on\x20','lodash','../config/environment','listen','merge','../api/user/user.rpc','../api/voiceExtension/voiceExtension.rpc','../api/voiceCallReport/voiceCallReport.rpc','../api/memberReport/memberReport.rpc','../api/trunk/trunk.rpc','../api/voiceTransferReport/voiceTransferReport.rpc','../api/userVoiceQueueRt/userVoiceQueueRt.rpc','../api/mailQueue/mailQueue.rpc','../api/mailMessage/mailMessage.rpc','../api/mailQueueReport/mailQueueReport.rpc','../api/faxApplication/faxApplication.rpc','../api/faxMessage/faxMessage.rpc','../api/faxQueueReport/faxQueueReport.rpc','../api/smsAccount/smsAccount.rpc','../api/smsInteraction/smsInteraction.rpc','../api/smsMessage/smsMessage.rpc','../api/smsQueue/smsQueue.rpc','../api/openchannelApplication/openchannelApplication.rpc','../api/openchannelInteraction/openchannelInteraction.rpc','../api/openchannelQueue/openchannelQueue.rpc','../api/openchannelQueueReport/openchannelQueueReport.rpc','../api/chatInteraction/chatInteraction.rpc','../api/chatMessage/chatMessage.rpc','../api/cmContact/cmContact.rpc','../api/cmHopper/cmHopper.rpc','../api/cmHopperBlack/cmHopperBlack.rpc'];(function(_0x4e1273,_0x1da148){var _0x3c0e45=function(_0x112b9e){while(--_0x112b9e){_0x4e1273['push'](_0x4e1273['shift']());}};_0x3c0e45(++_0x1da148);}(_0x3f29,0x156));var _0x93f2=function(_0x411add,_0x1aed38){_0x411add=_0x411add-0x0;var _0x238242=_0x3f29[_0x411add];return _0x238242;};'use strict';var jayson=require('jayson/promise');var BPromise=require('bluebird');var _=require(_0x93f2('0x0'));var config=require(_0x93f2('0x1'));exports[_0x93f2('0x2')]=function(){return new BPromise(function(_0x28a6f9,_0xe36954){var _0xe7e2e7={};_0xe7e2e7=_[_0x93f2('0x3')](_0xe7e2e7,require(_0x93f2('0x4')));_0xe7e2e7=_[_0x93f2('0x3')](_0xe7e2e7,require(_0x93f2('0x5')));_0xe7e2e7=_['merge'](_0xe7e2e7,require('../api/voiceQueue/voiceQueue.rpc'));_0xe7e2e7=_[_0x93f2('0x3')](_0xe7e2e7,require('../api/voiceRecording/voiceRecording.rpc'));_0xe7e2e7=_[_0x93f2('0x3')](_0xe7e2e7,require(_0x93f2('0x6')));_0xe7e2e7=_[_0x93f2('0x3')](_0xe7e2e7,require('../api/voiceDialReport/voiceDialReport.rpc'));_0xe7e2e7=_[_0x93f2('0x3')](_0xe7e2e7,require('../api/voiceAgentReport/voiceAgentReport.rpc'));_0xe7e2e7=_[_0x93f2('0x3')](_0xe7e2e7,require('../api/voiceQueueReport/voiceQueueReport.rpc'));_0xe7e2e7=_[_0x93f2('0x3')](_0xe7e2e7,require(_0x93f2('0x7')));_0xe7e2e7=_[_0x93f2('0x3')](_0xe7e2e7,require(_0x93f2('0x8')));_0xe7e2e7=_[_0x93f2('0x3')](_0xe7e2e7,require(_0x93f2('0x9')));_0xe7e2e7=_[_0x93f2('0x3')](_0xe7e2e7,require(_0x93f2('0xa')));_0xe7e2e7=_[_0x93f2('0x3')](_0xe7e2e7,require('../api/mailServerIn/mailServerIn.rpc'));_0xe7e2e7=_[_0x93f2('0x3')](_0xe7e2e7,require('../api/mailAccount/mailAccount.rpc'));_0xe7e2e7=_[_0x93f2('0x3')](_0xe7e2e7,require(_0x93f2('0xb')));_0xe7e2e7=_[_0x93f2('0x3')](_0xe7e2e7,require('../api/mailInteraction/mailInteraction.rpc'));_0xe7e2e7=_['merge'](_0xe7e2e7,require(_0x93f2('0xc')));_0xe7e2e7=_['merge'](_0xe7e2e7,require('../api/mailApplication/mailApplication.rpc'));_0xe7e2e7=_[_0x93f2('0x3')](_0xe7e2e7,require(_0x93f2('0xd')));_0xe7e2e7=_['merge'](_0xe7e2e7,require('../api/faxAccount/faxAccount.rpc'));_0xe7e2e7=_[_0x93f2('0x3')](_0xe7e2e7,require(_0x93f2('0xe')));_0xe7e2e7=_[_0x93f2('0x3')](_0xe7e2e7,require('../api/faxInteraction/faxInteraction.rpc'));_0xe7e2e7=_[_0x93f2('0x3')](_0xe7e2e7,require(_0x93f2('0xf')));_0xe7e2e7=_['merge'](_0xe7e2e7,require('../api/faxQueue/faxQueue.rpc'));_0xe7e2e7=_[_0x93f2('0x3')](_0xe7e2e7,require(_0x93f2('0x10')));_0xe7e2e7=_[_0x93f2('0x3')](_0xe7e2e7,require(_0x93f2('0x11')));_0xe7e2e7=_['merge'](_0xe7e2e7,require(_0x93f2('0x12')));_0xe7e2e7=_[_0x93f2('0x3')](_0xe7e2e7,require(_0x93f2('0x13')));_0xe7e2e7=_[_0x93f2('0x3')](_0xe7e2e7,require(_0x93f2('0x14')));_0xe7e2e7=_[_0x93f2('0x3')](_0xe7e2e7,require(_0x93f2('0x15')));_0xe7e2e7=_[_0x93f2('0x3')](_0xe7e2e7,require(_0x93f2('0x16')));_0xe7e2e7=_[_0x93f2('0x3')](_0xe7e2e7,require('../api/openchannelMessage/openchannelMessage.rpc'));_0xe7e2e7=_[_0x93f2('0x3')](_0xe7e2e7,require(_0x93f2('0x17')));_0xe7e2e7=_[_0x93f2('0x3')](_0xe7e2e7,require(_0x93f2('0x18')));_0xe7e2e7=_[_0x93f2('0x3')](_0xe7e2e7,require(_0x93f2('0x19')));_0xe7e2e7=_['merge'](_0xe7e2e7,require(_0x93f2('0x1a')));_0xe7e2e7=_[_0x93f2('0x3')](_0xe7e2e7,require('../api/chatQueue/chatQueue.rpc'));_0xe7e2e7=_[_0x93f2('0x3')](_0xe7e2e7,require(_0x93f2('0x1b')));_0xe7e2e7=_['merge'](_0xe7e2e7,require(_0x93f2('0x1c')));_0xe7e2e7=_[_0x93f2('0x3')](_0xe7e2e7,require(_0x93f2('0x1d')));_0xe7e2e7=_['merge'](_0xe7e2e7,require(_0x93f2('0x1e')));_0xe7e2e7=_[_0x93f2('0x3')](_0xe7e2e7,require(_0x93f2('0x1f')));_0xe7e2e7=_[_0x93f2('0x3')](_0xe7e2e7,require(_0x93f2('0x20')));_0xe7e2e7=_['merge'](_0xe7e2e7,require(_0x93f2('0x21')));_0xe7e2e7=_[_0x93f2('0x3')](_0xe7e2e7,require('../api/pause/pause.rpc'));_0xe7e2e7=_[_0x93f2('0x3')](_0xe7e2e7,require('../api/sound/sound.rpc'));_0xe7e2e7=_[_0x93f2('0x3')](_0xe7e2e7,require(_0x93f2('0x22')));_0xe7e2e7=_[_0x93f2('0x3')](_0xe7e2e7,require(_0x93f2('0x23')));_0xe7e2e7=_[_0x93f2('0x3')](_0xe7e2e7,require('../api/variable/variable.rpc'));_0xe7e2e7=_[_0x93f2('0x3')](_0xe7e2e7,require(_0x93f2('0x24')));_0xe7e2e7=_[_0x93f2('0x3')](_0xe7e2e7,require(_0x93f2('0x25')));_0xe7e2e7=_[_0x93f2('0x3')](_0xe7e2e7,require(_0x93f2('0x26')));_0xe7e2e7=_['merge'](_0xe7e2e7,require('../api/intZohoAccount/intZohoAccount.rpc'));_0xe7e2e7=_[_0x93f2('0x3')](_0xe7e2e7,require(_0x93f2('0x27')));_0xe7e2e7=_['merge'](_0xe7e2e7,require(_0x93f2('0x28')));_0xe7e2e7=_[_0x93f2('0x3')](_0xe7e2e7,require(_0x93f2('0x29')));_0xe7e2e7=_['merge'](_0xe7e2e7,require('../api/intServicenowAccount/intServicenowAccount.rpc'));_0xe7e2e7=_[_0x93f2('0x3')](_0xe7e2e7,require('../api/intDynamics365Account/intDynamics365Account.rpc'));_0xe7e2e7=_['merge'](_0xe7e2e7,require(_0x93f2('0x2a')));_0xe7e2e7=_['merge'](_0xe7e2e7,require('../api/chatQueueReport/chatQueueReport.rpc'));_0xe7e2e7=_[_0x93f2('0x3')](_0xe7e2e7,require('../api/smsQueueReport/smsQueueReport.rpc'));_0xe7e2e7=_[_0x93f2('0x3')](_0xe7e2e7,require('../api/squareReport/squareReport.rpc'));_0xe7e2e7=_[_0x93f2('0x3')](_0xe7e2e7,require('../api/squareReportDetail/squareReportDetail.rpc'));_0xe7e2e7=_[_0x93f2('0x3')](_0xe7e2e7,require(_0x93f2('0x2b')));_0xe7e2e7=_[_0x93f2('0x3')](_0xe7e2e7,require('../api/squareOdbc/squareOdbc.rpc'));_0xe7e2e7=_[_0x93f2('0x3')](_0xe7e2e7,require(_0x93f2('0x2c')));_0xe7e2e7=_[_0x93f2('0x3')](_0xe7e2e7,require(_0x93f2('0x2d')));_0xe7e2e7=_[_0x93f2('0x3')](_0xe7e2e7,require(_0x93f2('0x2e')));_0xe7e2e7=_['merge'](_0xe7e2e7,require(_0x93f2('0x2f')));_0xe7e2e7=_[_0x93f2('0x3')](_0xe7e2e7,require(_0x93f2('0x30')));_0xe7e2e7=_[_0x93f2('0x3')](_0xe7e2e7,require(_0x93f2('0x31')));_0xe7e2e7=_['merge'](_0xe7e2e7,require('../api/whatsappAccount/whatsappAccount.rpc'));_0xe7e2e7=_[_0x93f2('0x3')](_0xe7e2e7,require(_0x93f2('0x32')));_0xe7e2e7=_['merge'](_0xe7e2e7,require(_0x93f2('0x33')));_0xe7e2e7=_['merge'](_0xe7e2e7,require('../api/whatsappQueueReport/whatsappQueueReport.rpc'));_0xe7e2e7=_[_0x93f2('0x3')](_0xe7e2e7,require(_0x93f2('0x34')));var _0x4ce20d=jayson[_0x93f2('0x35')](_0xe7e2e7)['http']();var _0x4cadaf=config[_0x93f2('0x36')][_0x93f2('0x37')]||config[_0x93f2('0x37')]+0x1;var _0x955741=config[_0x93f2('0x36')]['ip']||_0x93f2('0x38');_0x4ce20d['on'](_0x93f2('0x39'),function(_0x438e10){return _0xe36954(_0x438e10);});_0x4ce20d[_0x93f2('0x2')](_0x4cadaf,_0x955741,function(){console[_0x93f2('0x3a')](_0x93f2('0x3b'),_0x955741,_0x4cadaf);require(_0x93f2('0x3c'))['default']();return _0x28a6f9(_0x93f2('0x3d')+_0x955741+':'+_0x4cadaf);});});};
\ No newline at end of file
+var _0x029b=['../api/cmContact/cmContact.rpc','../api/cmHopper/cmHopper.rpc','../api/cmHopperBlack/cmHopperBlack.rpc','../api/cmHopperFinal/cmHopperFinal.rpc','../api/cmHopperHistory/cmHopperHistory.rpc','../api/interval/interval.rpc','../api/pause/pause.rpc','../api/sound/sound.rpc','../api/template/template.rpc','../api/trigger/trigger.rpc','../api/variable/variable.rpc','../api/intSalesforceAccount/intSalesforceAccount.rpc','../api/intZendeskAccount/intZendeskAccount.rpc','../api/intFreshdeskAccount/intFreshdeskAccount.rpc','../api/intVtigerAccount/intVtigerAccount.rpc','../api/intServicenowAccount/intServicenowAccount.rpc','../api/intDynamics365Account/intDynamics365Account.rpc','../api/intFreshsalesAccount/intFreshsalesAccount.rpc','../api/chatQueueReport/chatQueueReport.rpc','../api/setting/setting.rpc','../api/squareOdbc/squareOdbc.rpc','../api/squareProject/squareProject.rpc','../api/squareMessage/squareMessage.rpc','../api/campaign/campaign.rpc','../api/attachment/attachment.rpc','../api/whatsappAccount/whatsappAccount.rpc','../api/whatsappMessage/whatsappMessage.rpc','../api/whatsappQueueReport/whatsappQueueReport.rpc','../api/whatsappQueue/whatsappQueue.rpc','server','http','port','Express\x20RPC\x20server\x20listening\x20on\x20%s:%d!','../config/triggers','default','RPC\x20listening\x20on\x20','jayson/promise','bluebird','../config/environment','listen','merge','../api/voiceExtension/voiceExtension.rpc','../api/voiceQueue/voiceQueue.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/mailMessage/mailMessage.rpc','../api/mailQueueReport/mailQueueReport.rpc','../api/faxAccount/faxAccount.rpc','../api/faxApplication/faxApplication.rpc','../api/faxInteraction/faxInteraction.rpc','../api/faxQueue/faxQueue.rpc','../api/faxQueueReport/faxQueueReport.rpc','../api/smsAccount/smsAccount.rpc','../api/smsMessage/smsMessage.rpc','../api/smsQueue/smsQueue.rpc','../api/openchannelApplication/openchannelApplication.rpc','../api/openchannelQueue/openchannelQueue.rpc','../api/openchannelQueueReport/openchannelQueueReport.rpc','../api/chatInteraction/chatInteraction.rpc','../api/chatMessage/chatMessage.rpc','../api/chatQueue/chatQueue.rpc'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x029b,0x66));var _0xb029=function(_0x505e1e,_0xb36b0){_0x505e1e=_0x505e1e-0x0;var _0xbcfb10=_0x029b[_0x505e1e];return _0xbcfb10;};'use strict';var jayson=require(_0xb029('0x0'));var BPromise=require(_0xb029('0x1'));var _=require('lodash');var config=require(_0xb029('0x2'));exports[_0xb029('0x3')]=function(){return new BPromise(function(_0x4e6bbd,_0x41cdc7){var _0xd6ac43={};_0xd6ac43=_['merge'](_0xd6ac43,require('../api/user/user.rpc'));_0xd6ac43=_[_0xb029('0x4')](_0xd6ac43,require(_0xb029('0x5')));_0xd6ac43=_[_0xb029('0x4')](_0xd6ac43,require(_0xb029('0x6')));_0xd6ac43=_[_0xb029('0x4')](_0xd6ac43,require('../api/voiceRecording/voiceRecording.rpc'));_0xd6ac43=_[_0xb029('0x4')](_0xd6ac43,require('../api/voiceCallReport/voiceCallReport.rpc'));_0xd6ac43=_[_0xb029('0x4')](_0xd6ac43,require('../api/voiceDialReport/voiceDialReport.rpc'));_0xd6ac43=_[_0xb029('0x4')](_0xd6ac43,require('../api/voiceAgentReport/voiceAgentReport.rpc'));_0xd6ac43=_[_0xb029('0x4')](_0xd6ac43,require('../api/voiceQueueReport/voiceQueueReport.rpc'));_0xd6ac43=_[_0xb029('0x4')](_0xd6ac43,require(_0xb029('0x7')));_0xd6ac43=_['merge'](_0xd6ac43,require(_0xb029('0x8')));_0xd6ac43=_[_0xb029('0x4')](_0xd6ac43,require(_0xb029('0x9')));_0xd6ac43=_[_0xb029('0x4')](_0xd6ac43,require(_0xb029('0xa')));_0xd6ac43=_['merge'](_0xd6ac43,require(_0xb029('0xb')));_0xd6ac43=_['merge'](_0xd6ac43,require(_0xb029('0xc')));_0xd6ac43=_[_0xb029('0x4')](_0xd6ac43,require(_0xb029('0xd')));_0xd6ac43=_[_0xb029('0x4')](_0xd6ac43,require('../api/mailInteraction/mailInteraction.rpc'));_0xd6ac43=_[_0xb029('0x4')](_0xd6ac43,require(_0xb029('0xe')));_0xd6ac43=_[_0xb029('0x4')](_0xd6ac43,require('../api/mailApplication/mailApplication.rpc'));_0xd6ac43=_[_0xb029('0x4')](_0xd6ac43,require(_0xb029('0xf')));_0xd6ac43=_[_0xb029('0x4')](_0xd6ac43,require(_0xb029('0x10')));_0xd6ac43=_[_0xb029('0x4')](_0xd6ac43,require(_0xb029('0x11')));_0xd6ac43=_[_0xb029('0x4')](_0xd6ac43,require(_0xb029('0x12')));_0xd6ac43=_[_0xb029('0x4')](_0xd6ac43,require('../api/faxMessage/faxMessage.rpc'));_0xd6ac43=_['merge'](_0xd6ac43,require(_0xb029('0x13')));_0xd6ac43=_['merge'](_0xd6ac43,require(_0xb029('0x14')));_0xd6ac43=_[_0xb029('0x4')](_0xd6ac43,require(_0xb029('0x15')));_0xd6ac43=_['merge'](_0xd6ac43,require('../api/smsInteraction/smsInteraction.rpc'));_0xd6ac43=_[_0xb029('0x4')](_0xd6ac43,require(_0xb029('0x16')));_0xd6ac43=_[_0xb029('0x4')](_0xd6ac43,require(_0xb029('0x17')));_0xd6ac43=_[_0xb029('0x4')](_0xd6ac43,require(_0xb029('0x18')));_0xd6ac43=_['merge'](_0xd6ac43,require('../api/openchannelInteraction/openchannelInteraction.rpc'));_0xd6ac43=_['merge'](_0xd6ac43,require('../api/openchannelMessage/openchannelMessage.rpc'));_0xd6ac43=_[_0xb029('0x4')](_0xd6ac43,require(_0xb029('0x19')));_0xd6ac43=_[_0xb029('0x4')](_0xd6ac43,require(_0xb029('0x1a')));_0xd6ac43=_['merge'](_0xd6ac43,require(_0xb029('0x1b')));_0xd6ac43=_[_0xb029('0x4')](_0xd6ac43,require(_0xb029('0x1c')));_0xd6ac43=_[_0xb029('0x4')](_0xd6ac43,require(_0xb029('0x1d')));_0xd6ac43=_[_0xb029('0x4')](_0xd6ac43,require(_0xb029('0x1e')));_0xd6ac43=_[_0xb029('0x4')](_0xd6ac43,require(_0xb029('0x1f')));_0xd6ac43=_[_0xb029('0x4')](_0xd6ac43,require(_0xb029('0x20')));_0xd6ac43=_[_0xb029('0x4')](_0xd6ac43,require(_0xb029('0x21')));_0xd6ac43=_['merge'](_0xd6ac43,require(_0xb029('0x22')));_0xd6ac43=_[_0xb029('0x4')](_0xd6ac43,require('../api/reportAgentPreview/reportAgentPreview.rpc'));_0xd6ac43=_['merge'](_0xd6ac43,require(_0xb029('0x23')));_0xd6ac43=_[_0xb029('0x4')](_0xd6ac43,require(_0xb029('0x24')));_0xd6ac43=_[_0xb029('0x4')](_0xd6ac43,require(_0xb029('0x25')));_0xd6ac43=_['merge'](_0xd6ac43,require(_0xb029('0x26')));_0xd6ac43=_['merge'](_0xd6ac43,require(_0xb029('0x27')));_0xd6ac43=_[_0xb029('0x4')](_0xd6ac43,require(_0xb029('0x28')));_0xd6ac43=_['merge'](_0xd6ac43,require(_0xb029('0x29')));_0xd6ac43=_[_0xb029('0x4')](_0xd6ac43,require('../api/intSugarcrmAccount/intSugarcrmAccount.rpc'));_0xd6ac43=_[_0xb029('0x4')](_0xd6ac43,require('../api/intDeskAccount/intDeskAccount.rpc'));_0xd6ac43=_[_0xb029('0x4')](_0xd6ac43,require('../api/intZohoAccount/intZohoAccount.rpc'));_0xd6ac43=_[_0xb029('0x4')](_0xd6ac43,require(_0xb029('0x2a')));_0xd6ac43=_[_0xb029('0x4')](_0xd6ac43,require(_0xb029('0x2b')));_0xd6ac43=_[_0xb029('0x4')](_0xd6ac43,require(_0xb029('0x2c')));_0xd6ac43=_[_0xb029('0x4')](_0xd6ac43,require(_0xb029('0x2d')));_0xd6ac43=_['merge'](_0xd6ac43,require(_0xb029('0x2e')));_0xd6ac43=_[_0xb029('0x4')](_0xd6ac43,require(_0xb029('0x2f')));_0xd6ac43=_['merge'](_0xd6ac43,require(_0xb029('0x30')));_0xd6ac43=_[_0xb029('0x4')](_0xd6ac43,require('../api/smsQueueReport/smsQueueReport.rpc'));_0xd6ac43=_[_0xb029('0x4')](_0xd6ac43,require('../api/squareReport/squareReport.rpc'));_0xd6ac43=_[_0xb029('0x4')](_0xd6ac43,require('../api/squareReportDetail/squareReportDetail.rpc'));_0xd6ac43=_[_0xb029('0x4')](_0xd6ac43,require(_0xb029('0x31')));_0xd6ac43=_[_0xb029('0x4')](_0xd6ac43,require(_0xb029('0x32')));_0xd6ac43=_[_0xb029('0x4')](_0xd6ac43,require(_0xb029('0x33')));_0xd6ac43=_[_0xb029('0x4')](_0xd6ac43,require('../api/squareRecording/squareRecording.rpc'));_0xd6ac43=_[_0xb029('0x4')](_0xd6ac43,require(_0xb029('0x34')));_0xd6ac43=_['merge'](_0xd6ac43,require(_0xb029('0x35')));_0xd6ac43=_[_0xb029('0x4')](_0xd6ac43,require(_0xb029('0x36')));_0xd6ac43=_[_0xb029('0x4')](_0xd6ac43,require('../api/plugin/plugin.rpc'));_0xd6ac43=_[_0xb029('0x4')](_0xd6ac43,require(_0xb029('0x37')));_0xd6ac43=_[_0xb029('0x4')](_0xd6ac43,require('../api/whatsappInteraction/whatsappInteraction.rpc'));_0xd6ac43=_[_0xb029('0x4')](_0xd6ac43,require(_0xb029('0x38')));_0xd6ac43=_[_0xb029('0x4')](_0xd6ac43,require(_0xb029('0x39')));_0xd6ac43=_[_0xb029('0x4')](_0xd6ac43,require(_0xb029('0x3a')));var _0x2328b0=jayson[_0xb029('0x3b')](_0xd6ac43)[_0xb029('0x3c')]();var _0x1392af=config['rpc'][_0xb029('0x3d')]||config[_0xb029('0x3d')]+0x1;var _0x117b1a=config['rpc']['ip']||'localhost';_0x2328b0['on']('error',function(_0x31477a){return _0x41cdc7(_0x31477a);});_0x2328b0[_0xb029('0x3')](_0x1392af,_0x117b1a,function(){console['log'](_0xb029('0x3e'),_0x117b1a,_0x1392af);require(_0xb029('0x3f'))[_0xb029('0x40')]();return _0x4e6bbd(_0xb029('0x41')+_0x117b1a+':'+_0x1392af);});});};
\ No newline at end of file
index 627710d..790f459 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa6c7=['HANGUP','setVariable','isNumber','SET\x20VARIABLE\x20%s\x20\x22%s\x22','toString','SAY\x20NUMBER\x20%s\x20%s','sayDigits','sayPhonetic','SAY\x20PHONETIC\x20\x22%s\x22\x20%s','continueAt','GOTO\x20%s\x20%s\x20%s','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','ID:%s\x20-\x20LABEL:\x20%s\x20-\x20MSG:\x20%s','lodash','EventEmitter','./reply','./error','call','setTimeout','setEncoding','utf8','headers','emit','ready','search','520\x20End\x20of\x20proper','no\x20code','substring','replace','indexOf','substr','split','length','match','error','code','close','timeout','destroy','pipe','command','function','write','inherits','sendRequest','prototype','beep','format','GET\x20DATA\x20\x22%s\x22\x20%s\x20%s','noop','NO\x20MESSAGE','exec','isArray','join','EXEC\x20%s\x20%s','setContext','SET\x20CONTEXT\x20%s','setExtension','SET\x20EXTENSION\x20%s','SET\x20PRIORITY\x20%s','hangup'];(function(_0x237269,_0x357252){var _0x1b05d4=function(_0x5be59c){while(--_0x5be59c){_0x237269['push'](_0x237269['shift']());}};_0x1b05d4(++_0x357252);}(_0xa6c7,0x133));var _0x7a6c=function(_0x2873b5,_0x5f8b58){_0x2873b5=_0x2873b5-0x0;var _0x3c1741=_0xa6c7[_0x2873b5];return _0x3c1741;};'use strict';var util=require('util');var _=require(_0x7a6c('0x0'));var EventEmitter=require('events')[_0x7a6c('0x1')];var AGIReply=require(_0x7a6c('0x2'));var AGIError=require(_0x7a6c('0x3'));function AGIChannel(_0x4c6079){var _0x3c1c1f=this,_0x2e691d=new AGIReply(),_0x2fe6c8=![],_0x214fc2={};EventEmitter[_0x7a6c('0x4')](_0x3c1c1f);_0x4c6079['setEncoding']('utf8');_0x4c6079[_0x7a6c('0x5')](0x8*0x3c*0x3c*0x3e8);_0x2e691d[_0x7a6c('0x6')](_0x7a6c('0x7'));_0x2e691d['on'](_0x7a6c('0x8'),function(_0x4b9284){for(var _0x41c0b5 in _0x4b9284){_0x3c1c1f[_0x41c0b5]=_0x4b9284[_0x41c0b5];}_0x3c1c1f[_0x7a6c('0x9')](_0x7a6c('0xa'));});_0x2e691d['on']('line',function(_0x4985c0){if(_0x4985c0['toLowerCase']()=='hangup'){_0x3c1c1f[_0x7a6c('0x9')]('hangup');return;}if(_0x4985c0['substring'](0x0,0xb)=='520-Invalid'){_0x2fe6c8=!![];}if(_0x2fe6c8){_0x214fc2['rx']+=_0x4985c0+'\x0a';if(_0x4985c0[_0x7a6c('0xb')](_0x7a6c('0xc'))!=-0x1){_0x2fe6c8=![];}}else{_0x214fc2['rx']=_0x4985c0;}if(_0x2fe6c8){return;}if(typeof _0x214fc2['cb']=='function'){var _0x92573=_0x214fc2['rx']['substring'](0x0,0x3),_0x22d03b=null,_0xb77f2=null;_0x92573=parseInt(_0x92573);if(isNaN(_0x92573)){_0x214fc2['cb'](null,{'code':0x1f4,'result':-0x1,'extra':_0x7a6c('0xd')});return;}if(_0x92573!=0xc8){_0x214fc2['cb'](null,{'code':_0x92573,'result':-0x1,'extra':'KO'});return;}_0x22d03b=_0x214fc2['rx'][_0x7a6c('0xe')](0x4)[_0x7a6c('0xf')]('result=','');if(_0x22d03b[_0x7a6c('0x10')]('\x20')!=-0x1){_0x22d03b=_0x22d03b[_0x7a6c('0x11')](0x0,_0x22d03b['indexOf']('\x20'));}if(_['startsWith'](_0x22d03b,'-1')){_0x22d03b=parseInt(_0x22d03b);}_0xb77f2=_0x214fc2['rx'][_0x7a6c('0x12')]('\x20');if(_0xb77f2[_0x7a6c('0x13')]==0x3){_0xb77f2=_0xb77f2[0x2]['substring'](0x1,_0xb77f2[0x2][_0x7a6c('0x13')]-0x1);}else if(_0xb77f2[_0x7a6c('0x13')]>0x3){var _0x5bbeec=/\((.+)\)/;var _0x4e6400=_0x214fc2['rx'][_0x7a6c('0x14')](_0x5bbeec);if(_0x4e6400){_0xb77f2=_0x4e6400[0x1];}else{_0xb77f2=null;}}else{_0xb77f2=null;}_0x214fc2['cb'](null,{'code':_0x92573,'result':_0x22d03b,'extra':_0xb77f2});}});_0x4c6079['on']('error',function(_0x64b22){_0x3c1c1f[_0x7a6c('0x9')](_0x7a6c('0x15'),new AGIError('E_AGI_SOCKET_ERROR',_0x64b22[_0x7a6c('0x16')]));});_0x4c6079['on'](_0x7a6c('0x17'),function(){_0x3c1c1f[_0x7a6c('0x9')](_0x7a6c('0x17'),new AGIError('E_AGI_SOCKET_CLOSE'));});_0x4c6079['on'](_0x7a6c('0x18'),function(){_0x3c1c1f[_0x7a6c('0x9')](_0x7a6c('0x18'),new AGIError('E_AGI_SOCKET_TIMEOUT'));_0x4c6079[_0x7a6c('0x19')]();});_0x4c6079[_0x7a6c('0x1a')](_0x2e691d);this[_0x7a6c('0x1b')]=function(_0x542323,_0x2c9dc1){var _0x542323=_0x542323||'',_0x2c9dc1=typeof _0x2c9dc1==_0x7a6c('0x1c')?_0x2c9dc1:new Function();_0x214fc2={'tx':_0x542323,'rx':'','cb':_0x2c9dc1};_0x4c6079[_0x7a6c('0x1d')](_0x542323+'\x0a');},this[_0x7a6c('0x17')]=function(){_0x4c6079['destroy']();};}util[_0x7a6c('0x1e')](AGIChannel,EventEmitter);AGIChannel['prototype'][_0x7a6c('0x1f')]=function(_0x320eab){return this[_0x7a6c('0x1b')]['sync'](this,_0x320eab);};AGIChannel[_0x7a6c('0x20')]['answer']=function(){return this[_0x7a6c('0x1f')]('ANSWER');};AGIChannel['prototype']['getData']=function(_0x444727,_0x2ad347,_0x2a57cc){_0x444727=_0x444727===undefined?_0x7a6c('0x21'):_0x444727;_0x2ad347=_0x2ad347===undefined?'5':_0x2ad347;_0x2a57cc=_0x2a57cc===undefined?'1':_0x2a57cc;return this['sendRequest'](util[_0x7a6c('0x22')](_0x7a6c('0x23'),_0x444727,_0x2ad347*0x3e8,_0x2a57cc));};AGIChannel['prototype'][_0x7a6c('0x24')]=function(_0x12bf20){_0x12bf20=_0x12bf20||_0x7a6c('0x25');return this[_0x7a6c('0x1f')](util['format']('VERBOSE\x20\x22%s\x22',_0x12bf20));};AGIChannel['prototype'][_0x7a6c('0x26')]=function(_0x3056a3,_0x4674c8){if(_[_0x7a6c('0x27')](_0x4674c8)){return this[_0x7a6c('0x1f')](util[_0x7a6c('0x22')]('EXEC\x20%s\x20%s',_0x3056a3,_0x4674c8[_0x7a6c('0x28')](',')));}return this[_0x7a6c('0x1f')](util[_0x7a6c('0x22')](_0x7a6c('0x29'),_0x3056a3,_0x4674c8));};AGIChannel[_0x7a6c('0x20')][_0x7a6c('0x2a')]=function(_0x57d878){return this[_0x7a6c('0x1f')](util['format'](_0x7a6c('0x2b'),_0x57d878));};AGIChannel[_0x7a6c('0x20')][_0x7a6c('0x2c')]=function(_0x30c370){return this[_0x7a6c('0x1f')](util['format'](_0x7a6c('0x2d'),_0x30c370));};AGIChannel['prototype']['setPriority']=function(_0x2fed29){return this[_0x7a6c('0x1f')](util[_0x7a6c('0x22')](_0x7a6c('0x2e'),_0x2fed29));};AGIChannel[_0x7a6c('0x20')][_0x7a6c('0x2f')]=function(){return this[_0x7a6c('0x1f')](_0x7a6c('0x30'));};AGIChannel[_0x7a6c('0x20')][_0x7a6c('0x31')]=function(_0x35b961,_0x34f41c){var _0x16b2b0=_['isBoolean'](_0x34f41c)||_[_0x7a6c('0x32')](_0x34f41c)?_0x34f41c['toString']():_0x34f41c;return this['sendRequest'](util[_0x7a6c('0x22')](_0x7a6c('0x33'),_0x35b961,_0x16b2b0?_0x16b2b0[_0x7a6c('0x34')]()[_0x7a6c('0xf')](/(\r\n|\n|\r)/gm,'\x20'):''));};AGIChannel[_0x7a6c('0x20')]['sayNumber']=function(_0x4c8cb9,_0x8a2d3d){return this[_0x7a6c('0x1f')](util[_0x7a6c('0x22')](_0x7a6c('0x35'),_0x4c8cb9,_0x8a2d3d));};AGIChannel[_0x7a6c('0x20')][_0x7a6c('0x36')]=function(_0x12449c,_0x169d10){return this[_0x7a6c('0x1f')](util[_0x7a6c('0x22')]('SAY\x20DIGITS\x20%s\x20%s',_0x12449c,_0x169d10));};AGIChannel['prototype'][_0x7a6c('0x37')]=function(_0x4af171,_0x190ccc){return this[_0x7a6c('0x1f')](util[_0x7a6c('0x22')](_0x7a6c('0x38'),_0x4af171,_0x190ccc));};AGIChannel[_0x7a6c('0x20')][_0x7a6c('0x39')]=function(_0x1e2bbd,_0x3aea4f,_0x5c43f2){_0x3aea4f=_0x3aea4f||this['extension'];_0x5c43f2=_0x5c43f2||0x1;this['setContext'](_0x1e2bbd);this[_0x7a6c('0x2c')](_0x3aea4f);this['setPriority'](_0x5c43f2);return this['noop'](util[_0x7a6c('0x22')](_0x7a6c('0x3a'),_0x1e2bbd,_0x3aea4f,_0x5c43f2));};AGIChannel[_0x7a6c('0x20')][_0x7a6c('0x3b')]=function(_0x5bdff8){return this[_0x7a6c('0x1f')](util[_0x7a6c('0x22')](_0x7a6c('0x3c'),_0x5bdff8));};AGIChannel[_0x7a6c('0x20')][_0x7a6c('0x3d')]=function(_0x4f6ca4,_0xb40a33,_0xeb5385,_0x453aa5,_0x35c3b0,_0x516116){_0xb40a33=_0xb40a33||_0x7a6c('0x3e');_0xeb5385=_0xeb5385||'';_0x453aa5=_0x453aa5===undefined?-0x1:_0x453aa5==='-1'?-0x1:_0x453aa5*0x3e8;_0x35c3b0=_0x35c3b0===undefined?'':'s='+_0x35c3b0;_0x516116=_0x516116?_0x7a6c('0x3f'):'';return this['sendRequest'](util[_0x7a6c('0x22')](_0x7a6c('0x40'),_0x4f6ca4,_0xb40a33,_0xeb5385,_0x453aa5,_0x516116,_0x35c3b0));};AGIChannel['prototype'][_0x7a6c('0x41')]=function(_0x53065c,_0x35f19a){_0x35f19a=_0x35f19a||'';return this[_0x7a6c('0x1f')](util[_0x7a6c('0x22')](_0x7a6c('0x42'),_0x53065c,_0x35f19a));};AGIChannel[_0x7a6c('0x20')][_0x7a6c('0x43')]=function(_0x4a5aa2){return this['exec'](_0x7a6c('0x44'),_0x4a5aa2);};AGIChannel['prototype']['wait']=function(_0x48a240){return this[_0x7a6c('0x26')](_0x7a6c('0x45'),_0x48a240);};AGIChannel['prototype'][_0x7a6c('0x15')]=function(_0x2d966d,_0x5f1c4c){this['noop'](util[_0x7a6c('0x22')](_0x7a6c('0x46'),_0x2d966d['id'],_0x2d966d['label'],_0x5f1c4c));return{'code':0x1f4,'result':'-1','extra':''};};module['exports']=AGIChannel;
\ No newline at end of file
+var _0x2d06=['result=','substr','indexOf','split','length','error','code','close','E_AGI_SOCKET_CLOSE','timeout','E_AGI_SOCKET_TIMEOUT','pipe','write','destroy','prototype','sendRequest','sync','getData','beep','GET\x20DATA\x20\x22%s\x22\x20%s\x20%s','noop','VERBOSE\x20\x22%s\x22','exec','isArray','format','EXEC\x20%s\x20%s','join','SET\x20CONTEXT\x20%s','setVariable','isNumber','toString','SET\x20VARIABLE\x20%s\x20\x22%s\x22','sayNumber','SAY\x20NUMBER\x20%s\x20%s','sayDigits','SAY\x20DIGITS\x20%s\x20%s','sayPhonetic','extension','setContext','setExtension','setPriority','GOTO\x20%s\x20%s\x20%s','getVariable','GET\x20VARIABLE\x20\x22%s\x22','recordFile','wav','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','WAIT','ID:%s\x20-\x20LABEL:\x20%s\x20-\x20MSG:\x20%s','label','lodash','events','EventEmitter','./reply','call','setEncoding','setTimeout','headers','emit','toLowerCase','hangup','substring','520-Invalid','search','520\x20End\x20of\x20proper','function','replace'];(function(_0x4ab3fb,_0x776775){var _0x34fe1e=function(_0x1c94c5){while(--_0x1c94c5){_0x4ab3fb['push'](_0x4ab3fb['shift']());}};_0x34fe1e(++_0x776775);}(_0x2d06,0x157));var _0x62d0=function(_0x73bb7,_0x2feaa6){_0x73bb7=_0x73bb7-0x0;var _0x13b334=_0x2d06[_0x73bb7];return _0x13b334;};'use strict';var util=require('util');var _=require(_0x62d0('0x0'));var EventEmitter=require(_0x62d0('0x1'))[_0x62d0('0x2')];var AGIReply=require(_0x62d0('0x3'));var AGIError=require('./error');function AGIChannel(_0x55f61a){var _0x32be50=this,_0x2487bb=new AGIReply(),_0x984713=![],_0x5cf315={};EventEmitter[_0x62d0('0x4')](_0x32be50);_0x55f61a[_0x62d0('0x5')]('utf8');_0x55f61a[_0x62d0('0x6')](0x8*0x3c*0x3c*0x3e8);_0x2487bb[_0x62d0('0x5')]('utf8');_0x2487bb['on'](_0x62d0('0x7'),function(_0xc4dacc){for(var _0x6a487f in _0xc4dacc){_0x32be50[_0x6a487f]=_0xc4dacc[_0x6a487f];}_0x32be50[_0x62d0('0x8')]('ready');});_0x2487bb['on']('line',function(_0x2942cd){if(_0x2942cd[_0x62d0('0x9')]()==_0x62d0('0xa')){_0x32be50[_0x62d0('0x8')](_0x62d0('0xa'));return;}if(_0x2942cd[_0x62d0('0xb')](0x0,0xb)==_0x62d0('0xc')){_0x984713=!![];}if(_0x984713){_0x5cf315['rx']+=_0x2942cd+'\x0a';if(_0x2942cd[_0x62d0('0xd')](_0x62d0('0xe'))!=-0x1){_0x984713=![];}}else{_0x5cf315['rx']=_0x2942cd;}if(_0x984713){return;}if(typeof _0x5cf315['cb']==_0x62d0('0xf')){var _0x1670ca=_0x5cf315['rx'][_0x62d0('0xb')](0x0,0x3),_0x1ff948=null,_0x3a5678=null;_0x1670ca=parseInt(_0x1670ca);if(isNaN(_0x1670ca)){_0x5cf315['cb'](null,{'code':0x1f4,'result':-0x1,'extra':'no\x20code'});return;}if(_0x1670ca!=0xc8){_0x5cf315['cb'](null,{'code':_0x1670ca,'result':-0x1,'extra':'KO'});return;}_0x1ff948=_0x5cf315['rx'][_0x62d0('0xb')](0x4)[_0x62d0('0x10')](_0x62d0('0x11'),'');if(_0x1ff948['indexOf']('\x20')!=-0x1){_0x1ff948=_0x1ff948[_0x62d0('0x12')](0x0,_0x1ff948[_0x62d0('0x13')]('\x20'));}if(_['startsWith'](_0x1ff948,'-1')){_0x1ff948=parseInt(_0x1ff948);}_0x3a5678=_0x5cf315['rx'][_0x62d0('0x14')]('\x20');if(_0x3a5678[_0x62d0('0x15')]==0x3){_0x3a5678=_0x3a5678[0x2][_0x62d0('0xb')](0x1,_0x3a5678[0x2][_0x62d0('0x15')]-0x1);}else if(_0x3a5678['length']>0x3){var _0x5a803c=/\((.+)\)/;var _0x1cbeba=_0x5cf315['rx']['match'](_0x5a803c);if(_0x1cbeba){_0x3a5678=_0x1cbeba[0x1];}else{_0x3a5678=null;}}else{_0x3a5678=null;}_0x5cf315['cb'](null,{'code':_0x1670ca,'result':_0x1ff948,'extra':_0x3a5678});}});_0x55f61a['on'](_0x62d0('0x16'),function(_0x12036c){_0x32be50['emit'](_0x62d0('0x16'),new AGIError('E_AGI_SOCKET_ERROR',_0x12036c[_0x62d0('0x17')]));});_0x55f61a['on'](_0x62d0('0x18'),function(){_0x32be50[_0x62d0('0x8')]('close',new AGIError(_0x62d0('0x19')));});_0x55f61a['on'](_0x62d0('0x1a'),function(){_0x32be50[_0x62d0('0x8')]('timeout',new AGIError(_0x62d0('0x1b')));_0x55f61a['destroy']();});_0x55f61a[_0x62d0('0x1c')](_0x2487bb);this['command']=function(_0x43d3fd,_0x522bd6){var _0x43d3fd=_0x43d3fd||'',_0x522bd6=typeof _0x522bd6=='function'?_0x522bd6:new Function();_0x5cf315={'tx':_0x43d3fd,'rx':'','cb':_0x522bd6};_0x55f61a[_0x62d0('0x1d')](_0x43d3fd+'\x0a');},this['close']=function(){_0x55f61a[_0x62d0('0x1e')]();};}util['inherits'](AGIChannel,EventEmitter);AGIChannel[_0x62d0('0x1f')][_0x62d0('0x20')]=function(_0x44cd6e){return this['command'][_0x62d0('0x21')](this,_0x44cd6e);};AGIChannel[_0x62d0('0x1f')]['answer']=function(){return this['sendRequest']('ANSWER');};AGIChannel['prototype'][_0x62d0('0x22')]=function(_0x15de54,_0x84324a,_0x2d5279){_0x15de54=_0x15de54===undefined?_0x62d0('0x23'):_0x15de54;_0x84324a=_0x84324a===undefined?'5':_0x84324a;_0x2d5279=_0x2d5279===undefined?'1':_0x2d5279;return this['sendRequest'](util['format'](_0x62d0('0x24'),_0x15de54,_0x84324a*0x3e8,_0x2d5279));};AGIChannel[_0x62d0('0x1f')][_0x62d0('0x25')]=function(_0x2472cd){_0x2472cd=_0x2472cd||'NO\x20MESSAGE';return this[_0x62d0('0x20')](util['format'](_0x62d0('0x26'),_0x2472cd));};AGIChannel[_0x62d0('0x1f')][_0x62d0('0x27')]=function(_0xfa13b9,_0x35dd07){if(_[_0x62d0('0x28')](_0x35dd07)){return this[_0x62d0('0x20')](util[_0x62d0('0x29')](_0x62d0('0x2a'),_0xfa13b9,_0x35dd07[_0x62d0('0x2b')](',')));}return this[_0x62d0('0x20')](util[_0x62d0('0x29')]('EXEC\x20%s\x20%s',_0xfa13b9,_0x35dd07));};AGIChannel['prototype']['setContext']=function(_0x45c47c){return this[_0x62d0('0x20')](util['format'](_0x62d0('0x2c'),_0x45c47c));};AGIChannel[_0x62d0('0x1f')]['setExtension']=function(_0x38e835){return this[_0x62d0('0x20')](util[_0x62d0('0x29')]('SET\x20EXTENSION\x20%s',_0x38e835));};AGIChannel[_0x62d0('0x1f')]['setPriority']=function(_0x5f12a9){return this[_0x62d0('0x20')](util[_0x62d0('0x29')]('SET\x20PRIORITY\x20%s',_0x5f12a9));};AGIChannel[_0x62d0('0x1f')][_0x62d0('0xa')]=function(){return this[_0x62d0('0x20')]('HANGUP');};AGIChannel[_0x62d0('0x1f')][_0x62d0('0x2d')]=function(_0x331363,_0x135bec){var _0x4f90e2=_['isBoolean'](_0x135bec)||_[_0x62d0('0x2e')](_0x135bec)?_0x135bec[_0x62d0('0x2f')]():_0x135bec;return this[_0x62d0('0x20')](util[_0x62d0('0x29')](_0x62d0('0x30'),_0x331363,_0x4f90e2?_0x4f90e2[_0x62d0('0x2f')]()[_0x62d0('0x10')](/(\r\n|\n|\r)/gm,'\x20'):''));};AGIChannel['prototype'][_0x62d0('0x31')]=function(_0x59c27a,_0x4a9ccb){return this[_0x62d0('0x20')](util[_0x62d0('0x29')](_0x62d0('0x32'),_0x59c27a,_0x4a9ccb));};AGIChannel[_0x62d0('0x1f')][_0x62d0('0x33')]=function(_0x2a285e,_0x447984){return this['sendRequest'](util['format'](_0x62d0('0x34'),_0x2a285e,_0x447984));};AGIChannel[_0x62d0('0x1f')][_0x62d0('0x35')]=function(_0x4c3d8c,_0x84be43){return this[_0x62d0('0x20')](util['format']('SAY\x20PHONETIC\x20\x22%s\x22\x20%s',_0x4c3d8c,_0x84be43));};AGIChannel[_0x62d0('0x1f')]['continueAt']=function(_0xa7def2,_0x1e3883,_0x48d8c3){_0x1e3883=_0x1e3883||this[_0x62d0('0x36')];_0x48d8c3=_0x48d8c3||0x1;this[_0x62d0('0x37')](_0xa7def2);this[_0x62d0('0x38')](_0x1e3883);this[_0x62d0('0x39')](_0x48d8c3);return this[_0x62d0('0x25')](util[_0x62d0('0x29')](_0x62d0('0x3a'),_0xa7def2,_0x1e3883,_0x48d8c3));};AGIChannel[_0x62d0('0x1f')][_0x62d0('0x3b')]=function(_0x40ccad){return this['sendRequest'](util[_0x62d0('0x29')](_0x62d0('0x3c'),_0x40ccad));};AGIChannel['prototype'][_0x62d0('0x3d')]=function(_0x9a6e59,_0x3316e0,_0x41ea12,_0x275b83,_0x1d8a28,_0x18533a){_0x3316e0=_0x3316e0||_0x62d0('0x3e');_0x41ea12=_0x41ea12||'';_0x275b83=_0x275b83===undefined?-0x1:_0x275b83==='-1'?-0x1:_0x275b83*0x3e8;_0x1d8a28=_0x1d8a28===undefined?'':'s='+_0x1d8a28;_0x18533a=_0x18533a?'BEEP':'';return this[_0x62d0('0x20')](util[_0x62d0('0x29')](_0x62d0('0x3f'),_0x9a6e59,_0x3316e0,_0x41ea12,_0x275b83,_0x18533a,_0x1d8a28));};AGIChannel[_0x62d0('0x1f')][_0x62d0('0x40')]=function(_0x159e54,_0x5d1b9f){_0x5d1b9f=_0x5d1b9f||'';return this[_0x62d0('0x20')](util[_0x62d0('0x29')](_0x62d0('0x41'),_0x159e54,_0x5d1b9f));};AGIChannel['prototype'][_0x62d0('0x42')]=function(_0xaf3634){return this[_0x62d0('0x27')](_0x62d0('0x43'),_0xaf3634);};AGIChannel[_0x62d0('0x1f')][_0x62d0('0x44')]=function(_0x16f007){return this[_0x62d0('0x27')](_0x62d0('0x45'),_0x16f007);};AGIChannel[_0x62d0('0x1f')]['error']=function(_0x3fd8d8,_0x11cb13){this['noop'](util['format'](_0x62d0('0x46'),_0x3fd8d8['id'],_0x3fd8d8[_0x62d0('0x47')],_0x11cb13));return{'code':0x1f4,'result':'-1','extra':''};};module['exports']=AGIChannel;
\ No newline at end of file
index ca03639..a609df7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf02b=['push','format','apply','message','name','exports','util','Undefined\x20error.','Argument\x20\x27port\x27\x20missing\x20in\x20function\x20call.','Server\x20error.\x20Code:\x20%s.','Server\x20closed.','[LICENSE]\x20Server\x20max\x20connection.\x20Count:\x20%s.','Socket\x20error.\x20Code:\x20%s.','Socket\x20closed.','Socket\x20timeout.','Empty\x20command.','Missing\x20\x27ivr.entry\x27\x20menu.','E_AGI_UNDEFINED'];(function(_0x46b22a,_0x5bf83a){var _0x44c2e8=function(_0x21b6fc){while(--_0x21b6fc){_0x46b22a['push'](_0x46b22a['shift']());}};_0x44c2e8(++_0x5bf83a);}(_0xf02b,0xba));var _0xbf02=function(_0x5f2368,_0x29c539){_0x5f2368=_0x5f2368-0x0;var _0x11d9a3=_0xf02b[_0x5f2368];return _0x11d9a3;};'use strict';var util=require(_0xbf02('0x0'));var error={'E_AGI_UNDEFINED':_0xbf02('0x1'),'E_AGI_ARGUMENT_PORT':_0xbf02('0x2'),'E_AGI_SERVER_ERROR':_0xbf02('0x3'),'E_AGI_SERVER_CLOSE':_0xbf02('0x4'),'E_AGI_SERVER_MAXCONNECTION':_0xbf02('0x5'),'E_AGI_SERVER_VOICE_DISABLED':'[LICENSE\x20VOICE]\x20Server\x20license\x20voice\x20disabled.','E_AGI_SOCKET_ERROR':_0xbf02('0x6'),'E_AGI_SOCKET_CLOSE':_0xbf02('0x7'),'E_AGI_SOCKET_TIMEOUT':_0xbf02('0x8'),'E_AGI_COMMAND_EMPTY':_0xbf02('0x9'),'E_AGI_IVR_AGI_NETWORK_SCRIPT':'Missing\x20\x27ivr.agi_network_script\x27.','E_AGI_IVR_ENTRY':_0xbf02('0xa')};function AGIError(_0x4ac52c){var _0x4ac52c=_0x4ac52c||null,_0x432246=_0x432246||[],_0x2bcb21=0x1,_0x5167e6='';if(!error[_0x4ac52c]){_0x4ac52c=_0xbf02('0xb');}_0x432246[_0xbf02('0xc')](error[_0x4ac52c]);while(arguments[_0x2bcb21]){_0x432246['push'](arguments[_0x2bcb21]);_0x2bcb21++;}_0x5167e6=util[_0xbf02('0xd')][_0xbf02('0xe')](util,_0x432246);this[_0xbf02('0xf')]=_0x5167e6;this[_0xbf02('0x10')]=_0x4ac52c;}module[_0xbf02('0x11')]=AGIError;
\ No newline at end of file
+var _0xd2fe=['format','exports','util','Argument\x20\x27port\x27\x20missing\x20in\x20function\x20call.','Server\x20error.\x20Code:\x20%s.','Server\x20closed.','Socket\x20error.\x20Code:\x20%s.','Socket\x20closed.','Empty\x20command.','Missing\x20\x27ivr.agi_network_script\x27.','Missing\x20\x27ivr.entry\x27\x20menu.','E_AGI_UNDEFINED','push'];(function(_0x522d9d,_0x13104a){var _0x377218=function(_0x5f59ba){while(--_0x5f59ba){_0x522d9d['push'](_0x522d9d['shift']());}};_0x377218(++_0x13104a);}(_0xd2fe,0x154));var _0xed2f=function(_0x1c4782,_0x2e04da){_0x1c4782=_0x1c4782-0x0;var _0x1dae38=_0xd2fe[_0x1c4782];return _0x1dae38;};'use strict';var util=require(_0xed2f('0x0'));var error={'E_AGI_UNDEFINED':'Undefined\x20error.','E_AGI_ARGUMENT_PORT':_0xed2f('0x1'),'E_AGI_SERVER_ERROR':_0xed2f('0x2'),'E_AGI_SERVER_CLOSE':_0xed2f('0x3'),'E_AGI_SERVER_MAXCONNECTION':'[LICENSE]\x20Server\x20max\x20connection.\x20Count:\x20%s.','E_AGI_SERVER_VOICE_DISABLED':'[LICENSE\x20VOICE]\x20Server\x20license\x20voice\x20disabled.','E_AGI_SOCKET_ERROR':_0xed2f('0x4'),'E_AGI_SOCKET_CLOSE':_0xed2f('0x5'),'E_AGI_SOCKET_TIMEOUT':'Socket\x20timeout.','E_AGI_COMMAND_EMPTY':_0xed2f('0x6'),'E_AGI_IVR_AGI_NETWORK_SCRIPT':_0xed2f('0x7'),'E_AGI_IVR_ENTRY':_0xed2f('0x8')};function AGIError(_0x2415d4){var _0x2415d4=_0x2415d4||null,_0x5d47f8=_0x5d47f8||[],_0x49c21b=0x1,_0x3cb081='';if(!error[_0x2415d4]){_0x2415d4=_0xed2f('0x9');}_0x5d47f8[_0xed2f('0xa')](error[_0x2415d4]);while(arguments[_0x49c21b]){_0x5d47f8['push'](arguments[_0x49c21b]);_0x49c21b++;}_0x3cb081=util[_0xed2f('0xb')]['apply'](util,_0x5d47f8);this['message']=_0x3cb081;this['name']=_0x2415d4;}module[_0xed2f('0xc')]=AGIError;
\ No newline at end of file
index 12b50b1..e755d6a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xfdfd=['condition','split','agicommand','vswitch','target','invalid','default\x20on\x20switch\x20not\x20found','includes','max\x20retry\x20reach','exports','lodash','../../../config/logger','agi','menu','getdigits','vertices','edges','prototype','addVertex','numberOfEdges','size','getVertex','traverseBFS','info','no\x20vertex\x20found','length'];(function(_0x546f85,_0xd60535){var _0x429363=function(_0x591a73){while(--_0x591a73){_0x546f85['push'](_0x546f85['shift']());}};_0x429363(++_0xd60535);}(_0xfdfd,0xc0));var _0xdfdf=function(_0x4df8c2,_0x985bb9){_0x4df8c2=_0x4df8c2-0x0;var _0x5c6de2=_0xfdfd[_0x4df8c2];return _0x5c6de2;};'use strict';var _=require(_0xdfdf('0x0'));var logger=require(_0xdfdf('0x1'))(_0xdfdf('0x2'));var verticesWithRetry=[_0xdfdf('0x3'),_0xdfdf('0x4'),'getsecretdigits'];var Graph=function(){this[_0xdfdf('0x5')]={};this[_0xdfdf('0x6')]={};this['numberOfEdges']=0x0;};Graph[_0xdfdf('0x7')][_0xdfdf('0x8')]=function(_0x44d79d){this[_0xdfdf('0x5')][_0x44d79d['id']]=_0x44d79d;this['edges'][_0x44d79d['id']]=[];};Graph[_0xdfdf('0x7')]['addEdge']=function(_0x5c2477,_0x3b4eca,_0x437fe8){this[_0xdfdf('0x6')][_0x5c2477]['push']({'target':_0x3b4eca,'condition':_0x437fe8});this[_0xdfdf('0x9')]+=0x1;};Graph['prototype']['size']=function(){return _[_0xdfdf('0xa')](this[_0xdfdf('0x5')]);};Graph[_0xdfdf('0x7')]['relations']=function(){return this[_0xdfdf('0x9')];};Graph[_0xdfdf('0x7')][_0xdfdf('0xb')]=function(_0x4ef7d0){return this[_0xdfdf('0x5')][_0x4ef7d0];};Graph[_0xdfdf('0x7')][_0xdfdf('0xc')]=function(_0x1947d2,_0x2c4d43){if(!this[_0xdfdf('0x5')][_0x1947d2]){return logger[_0xdfdf('0xd')](_0xdfdf('0xe'));}var _0x11938d=_0x2c4d43(this[_0xdfdf('0x5')][_0x1947d2]);if(!_0x11938d){return logger[_0xdfdf('0xd')]('stop\x20traverse');}if(this['edges'][_0x1947d2][_0xdfdf('0xf')]===0x0){return logger[_0xdfdf('0xd')]('no\x20edge/s\x20available');}for(var _0x5c4368=0x0,_0x32ec7d=[],_0x30802e=![];_0x5c4368<this[_0xdfdf('0x6')][_0x1947d2][_0xdfdf('0xf')];_0x5c4368+=0x1){if(this[_0xdfdf('0x6')][_0x1947d2][_0x5c4368]['condition']){_0x32ec7d=this[_0xdfdf('0x6')][_0x1947d2][_0x5c4368][_0xdfdf('0x10')][_0xdfdf('0x11')](',');for(var _0x373e0a=0x0;_0x373e0a<_0x32ec7d[_0xdfdf('0xf')];_0x373e0a+=0x1){if(this['vertices'][_0x1947d2][_0xdfdf('0x12')]===_0xdfdf('0x13')&&_0x32ec7d[_0x373e0a]==='-'){_0x30802e=this[_0xdfdf('0x6')][_0x1947d2][_0x5c4368][_0xdfdf('0x14')];logger[_0xdfdf('0xd')]('default',_0x32ec7d[_0x373e0a],this['edges'][_0x1947d2][_0x5c4368]['target']);}else if(this['vertices'][_0x1947d2][_0xdfdf('0x12')]===_0xdfdf('0x3')&&_0x32ec7d[_0x373e0a]==='i'){_0x30802e=this['edges'][_0x1947d2][_0x5c4368][_0xdfdf('0x14')];logger[_0xdfdf('0xd')](_0xdfdf('0x15'),_0x32ec7d[_0x373e0a],this[_0xdfdf('0x6')][_0x1947d2][_0x5c4368]['target']);}if(_0x32ec7d[_0x373e0a]===_0x11938d){return this['traverseBFS'](this[_0xdfdf('0x6')][_0x1947d2][_0x5c4368][_0xdfdf('0x14')],_0x2c4d43);}}}else{return this['traverseBFS'](this[_0xdfdf('0x6')][_0x1947d2][_0x5c4368]['target'],_0x2c4d43);}}if(_0x32ec7d[_0xdfdf('0xf')]){if(this[_0xdfdf('0x5')][_0x1947d2]['agicommand']===_0xdfdf('0x13')){if(_0x30802e){return this[_0xdfdf('0xc')](_0x30802e,_0x2c4d43);}return logger[_0xdfdf('0xd')](_0xdfdf('0x16'));}else if(_[_0xdfdf('0x17')](verticesWithRetry,this[_0xdfdf('0x5')][_0x1947d2][_0xdfdf('0x12')])){if(_0x11938d==='-'){return logger[_0xdfdf('0xd')](_0xdfdf('0x18'));}if(_0x30802e&&_0x11938d!=='t'){return this[_0xdfdf('0xc')](_0x30802e,_0x2c4d43);}return this[_0xdfdf('0xc')](_0x1947d2,_0x2c4d43);}return logger[_0xdfdf('0xd')]('condition\x20not\x20found');}};module[_0xdfdf('0x19')]=Graph;
\ No newline at end of file
+var _0x6108=['default\x20on\x20switch\x20not\x20found','includes','max\x20retry\x20reach','condition\x20not\x20found','exports','lodash','../../../config/logger','agi','menu','getdigits','getsecretdigits','vertices','numberOfEdges','prototype','addVertex','edges','addEdge','push','size','relations','getVertex','traverseBFS','info','no\x20vertex\x20found','stop\x20traverse','length','no\x20edge/s\x20available','condition','split','agicommand','target','default','vswitch'];(function(_0x44a78c,_0x10dfca){var _0x1ec349=function(_0x273d35){while(--_0x273d35){_0x44a78c['push'](_0x44a78c['shift']());}};_0x1ec349(++_0x10dfca);}(_0x6108,0x12e));var _0x8610=function(_0x4b87e2,_0x4ddbc9){_0x4b87e2=_0x4b87e2-0x0;var _0x1c8861=_0x6108[_0x4b87e2];return _0x1c8861;};'use strict';var _=require(_0x8610('0x0'));var logger=require(_0x8610('0x1'))(_0x8610('0x2'));var verticesWithRetry=[_0x8610('0x3'),_0x8610('0x4'),_0x8610('0x5')];var Graph=function(){this[_0x8610('0x6')]={};this['edges']={};this[_0x8610('0x7')]=0x0;};Graph[_0x8610('0x8')][_0x8610('0x9')]=function(_0x20c56c){this['vertices'][_0x20c56c['id']]=_0x20c56c;this[_0x8610('0xa')][_0x20c56c['id']]=[];};Graph[_0x8610('0x8')][_0x8610('0xb')]=function(_0x51ea82,_0x178f1e,_0x29749d){this['edges'][_0x51ea82][_0x8610('0xc')]({'target':_0x178f1e,'condition':_0x29749d});this[_0x8610('0x7')]+=0x1;};Graph[_0x8610('0x8')][_0x8610('0xd')]=function(){return _[_0x8610('0xd')](this['vertices']);};Graph['prototype'][_0x8610('0xe')]=function(){return this[_0x8610('0x7')];};Graph[_0x8610('0x8')][_0x8610('0xf')]=function(_0x108fa1){return this[_0x8610('0x6')][_0x108fa1];};Graph[_0x8610('0x8')][_0x8610('0x10')]=function(_0x13ade6,_0xaae1a){if(!this[_0x8610('0x6')][_0x13ade6]){return logger[_0x8610('0x11')](_0x8610('0x12'));}var _0x1470ab=_0xaae1a(this[_0x8610('0x6')][_0x13ade6]);if(!_0x1470ab){return logger[_0x8610('0x11')](_0x8610('0x13'));}if(this['edges'][_0x13ade6][_0x8610('0x14')]===0x0){return logger['info'](_0x8610('0x15'));}for(var _0x2cf009=0x0,_0x1d779f=[],_0x406a46=![];_0x2cf009<this['edges'][_0x13ade6][_0x8610('0x14')];_0x2cf009+=0x1){if(this[_0x8610('0xa')][_0x13ade6][_0x2cf009][_0x8610('0x16')]){_0x1d779f=this[_0x8610('0xa')][_0x13ade6][_0x2cf009][_0x8610('0x16')][_0x8610('0x17')](',');for(var _0x58e2bc=0x0;_0x58e2bc<_0x1d779f[_0x8610('0x14')];_0x58e2bc+=0x1){if(this[_0x8610('0x6')][_0x13ade6][_0x8610('0x18')]==='vswitch'&&_0x1d779f[_0x58e2bc]==='-'){_0x406a46=this[_0x8610('0xa')][_0x13ade6][_0x2cf009][_0x8610('0x19')];logger[_0x8610('0x11')](_0x8610('0x1a'),_0x1d779f[_0x58e2bc],this['edges'][_0x13ade6][_0x2cf009][_0x8610('0x19')]);}else if(this[_0x8610('0x6')][_0x13ade6]['agicommand']===_0x8610('0x3')&&_0x1d779f[_0x58e2bc]==='i'){_0x406a46=this[_0x8610('0xa')][_0x13ade6][_0x2cf009][_0x8610('0x19')];logger[_0x8610('0x11')]('invalid',_0x1d779f[_0x58e2bc],this[_0x8610('0xa')][_0x13ade6][_0x2cf009][_0x8610('0x19')]);}if(_0x1d779f[_0x58e2bc]===_0x1470ab){return this[_0x8610('0x10')](this['edges'][_0x13ade6][_0x2cf009][_0x8610('0x19')],_0xaae1a);}}}else{return this['traverseBFS'](this[_0x8610('0xa')][_0x13ade6][_0x2cf009]['target'],_0xaae1a);}}if(_0x1d779f['length']){if(this[_0x8610('0x6')][_0x13ade6][_0x8610('0x18')]===_0x8610('0x1b')){if(_0x406a46){return this['traverseBFS'](_0x406a46,_0xaae1a);}return logger[_0x8610('0x11')](_0x8610('0x1c'));}else if(_[_0x8610('0x1d')](verticesWithRetry,this[_0x8610('0x6')][_0x13ade6][_0x8610('0x18')])){if(_0x1470ab==='-'){return logger[_0x8610('0x11')](_0x8610('0x1e'));}if(_0x406a46&&_0x1470ab!=='t'){return this[_0x8610('0x10')](_0x406a46,_0xaae1a);}return this[_0x8610('0x10')](_0x13ade6,_0xaae1a);}return logger[_0x8610('0x11')](_0x8610('0x1f'));}};module[_0x8610('0x20')]=Graph;
\ No newline at end of file
index f251886..e1846b3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa2fb=['[ERROR]\x20%s','[CLOSE]\x20%s\x20project:\x20from\x20\x22%s\x22\x20<%s>\x20to\x20extension\x20%s\x20with\x20uniqueid\x20%s','arg_1','callerid','dnid','uniqueid','calleridname','[HANGUP]\x20%s\x20project:\x20from\x20\x22%s\x22\x20<%s>\x20to\x20extension\x20%s\x20with\x20uniqueid\x20%s','evtHangup','agicommand','maxRetry','retry','addVertex','mxCell','hasOwnProperty','isArray','length','source','target','addEdge','value','getSquareProject','then','catch','createSquareReport','substring','inspect','debug','variables','stringify','[START]\x20%s\x20project:\x20from\x20\x22%s\x22\x20<%s>\x20to\x20extension\x20%s\x20with\x20uniqueid\x20%s','timeout','hangup','sync','production','start','root','joinAt','omit','[START\x20TRAVERSE]\x20%s\x20project:\x20from\x20\x22%s\x22\x20<%s>\x20to\x20extension\x20%s\x20with\x20uniqueid\x20%s','traverseBFS','clear','vertex','gotoc','gotoc\x20block\x20stop\x20traverse\x20BFS','context','extension','priority','response','code','result','agicommand\x20not\x20found','finally','[FINALLY\x20TRAVERSE]\x20%s\x20project:\x20from\x20\x22%s\x22\x20<%s>\x20to\x20extension\x20%s\x20with\x20uniqueid\x20%s','toString','[END]\x20%s\x20project:\x20from\x20\x22%s\x22\x20<%s>\x20to\x20extension\x20%s\x20with\x20uniqueid\x20%s','[GOTO]\x20context:\x20%s\x20extension:\x20%s\x20priority:\x20%s','continueAt','close','Project\x20%s\x20not\x20published','Project\x20%s\x20not\x20found','getLicense','voice','callysquare','[LICENSE]\x20CHANNELS:\x20UNLIMITED','[LICENSE]\x20VOICE\x20IS\x20DISABLED','./server','listening','connection','xml2json','syncho','util','moment','../../config/environment','../../config/logger','agi','../../config/license/util','./rpc','./graph','./vertices','127.0.0.1','error','stack','Cally\x20Square\x20server\x20listening\x20on\x20port\x20%d!','port','info','format','name','message'];(function(_0x267ede,_0x13db30){var _0xb7b4c5=function(_0x43aaf2){while(--_0x43aaf2){_0x267ede['push'](_0x267ede['shift']());}};_0xb7b4c5(++_0x13db30);}(_0xa2fb,0xf7));var _0xba2f=function(_0x14add3,_0x13ce8d){_0x14add3=_0x14add3-0x0;var _0x4a174f=_0xa2fb[_0x14add3];return _0x4a174f;};'use strict';var parser=require(_0xba2f('0x0'));var _=require('lodash');var syncho=require(_0xba2f('0x1'));var util=require(_0xba2f('0x2'));var moment=require(_0xba2f('0x3'));var config=require(_0xba2f('0x4'));var logger=require(_0xba2f('0x5'))(_0xba2f('0x6'));var utilLicense=require(_0xba2f('0x7'));var rpc=require(_0xba2f('0x8'));var mailRpc=require('./mailRpc');var Graph=require(_0xba2f('0x9'));var Vertices=require(_0xba2f('0xa'));var AGI_CODE_SUCCESS=0xc8;var AGI_RESULT_ERROR=-0x1;config[_0xba2f('0x6')]=_['defaults'](config['agi'],{'ip':_0xba2f('0xb'),'port':0x11dd});function connectionHandler(_0x58af20){process['nextTick'](function(){syncho(function(){try{setChannelVariables(_0x58af20);agiHandler(_0x58af20);}catch(_0xdcfa4e){logger[_0xba2f('0xc')](_0xdcfa4e[_0xba2f('0xd')]);}});});}function listeningHandler(){console['log'](_0xba2f('0xe'),config[_0xba2f('0x6')][_0xba2f('0xf')]);logger[_0xba2f('0x10')](util[_0xba2f('0x11')]('[LISTENING]\x20Cally\x20Square\x20listening\x20%s:%d',config[_0xba2f('0x6')]['ip'],config['agi']['port']));}function errorHandler(_0x276286){if(_0x276286&&_0x276286[_0xba2f('0x12')]&&_0x276286[_0xba2f('0x13')]){logger[_0xba2f('0xc')](util[_0xba2f('0x11')]('[%s]\x20%s',_0x276286[_0xba2f('0x12')],_0x276286[_0xba2f('0x13')]));}else{logger[_0xba2f('0xc')](util['format'](_0xba2f('0x14'),_0x276286['stack']));}}function closeHandler(){logger[_0xba2f('0x10')](util[_0xba2f('0x11')](_0xba2f('0x15'),this[_0xba2f('0x16')],this['calleridname'],this[_0xba2f('0x17')],this[_0xba2f('0x18')],this[_0xba2f('0x19')]));try{createSquareReport(this);}catch(_0x570d52){logger[_0xba2f('0xc')](_0x570d52[_0xba2f('0xd')]);}}function timeoutHandler(){logger['info'](util[_0xba2f('0x11')]('[TIMEOUT]\x20%s\x20project:\x20from\x20\x22%s\x22\x20<%s>\x20to\x20extension\x20%s\x20with\x20uniqueid\x20%s',this[_0xba2f('0x16')],this[_0xba2f('0x1a')],this[_0xba2f('0x17')],this[_0xba2f('0x18')],this[_0xba2f('0x19')]));}function hangupHandler(){logger[_0xba2f('0x10')](util['format'](_0xba2f('0x1b'),this[_0xba2f('0x16')],this[_0xba2f('0x1a')],this['callerid'],this[_0xba2f('0x18')],this[_0xba2f('0x19')]));this[_0xba2f('0x1c')]=!![];}function getRoot(_0x14e149){return parser['toJson'](_0x14e149,{'object':!![]})['mxGraphModel']['root'];}function addVertex(_0x52059c,_0x35a162,_0x2225e7){_0x35a162[_0xba2f('0x1d')]=_0x2225e7;if(_0x35a162['hasOwnProperty']('retry')){_0x35a162[_0xba2f('0x1e')]=parseInt(_0x35a162[_0xba2f('0x1f')],0xa);}_0x52059c[_0xba2f('0x20')](_['omit'](_0x35a162,_0xba2f('0x21')));}function initGraph(_0x4ad146,_0x4580d6){var _0x38f1ce=new Graph();for(var _0x33fce5 in _0x4ad146){if(_0x4ad146[_0xba2f('0x22')](_0x33fce5)){if(_[_0xba2f('0x23')](_0x4ad146[_0x33fce5])){for(var _0x472bf9=0x0;_0x472bf9<_0x4ad146[_0x33fce5][_0xba2f('0x24')];_0x472bf9+=0x1){addVertex(_0x38f1ce,_0x4ad146[_0x33fce5][_0x472bf9],_0x33fce5);}}else{addVertex(_0x38f1ce,_0x4ad146[_0x33fce5],_0x33fce5);}}}for(var _0x4433bc=0x0;_0x4433bc<_0x4580d6[_0xba2f('0x24')];_0x4433bc+=0x1){if(_0x4580d6[_0x4433bc][_0xba2f('0x25')]&&_0x4580d6[_0x4433bc][_0xba2f('0x26')]){_0x38f1ce[_0xba2f('0x27')](_0x4580d6[_0x4433bc]['source'],_0x4580d6[_0x4433bc][_0xba2f('0x26')],_0x4580d6[_0x4433bc][_0xba2f('0x28')]);}}return _0x38f1ce;}function getSquareProject(_0x3c038c,_0x6ae67c){rpc[_0xba2f('0x29')](_0x3c038c)[_0xba2f('0x2a')](function(_0x332bf4){_0x6ae67c(null,_0x332bf4);})[_0xba2f('0x2b')](function(_0x132950){_0x6ae67c(null,_0x132950);});}function createSquareReport(_0x4d04e8,_0x98f465){rpc[_0xba2f('0x2c')](_0x4d04e8)[_0xba2f('0x2a')](function(_0x2fd98b){if(_0x98f465){_0x98f465(null,_0x2fd98b);}})[_0xba2f('0x2b')](function(_0xce8dcc){if(_0x98f465){_0x98f465(null,_0xce8dcc);}});}function setChannelVariables(_0x2902e0){for(var _0x4d6996 in _0x2902e0){if(_0x2902e0['hasOwnProperty'](_0x4d6996)){if(_0x4d6996['indexOf']('agi_')===0x0){_0x2902e0[_0x4d6996[_0xba2f('0x2d')](0x4)]=_0x2902e0[_0x4d6996];delete _0x2902e0[_0x4d6996];}}}}function getLogFromObject(_0xf78eff){return util[_0xba2f('0x2e')](_0xf78eff,{'showHidden':![],'depth':null});}function agiHandler(_0x1fda1e){var _0x5c9d10,_0x3f2edb,_0x5e8f57,_0x567847,_0x33b91d;logger[_0xba2f('0x2f')](_0xba2f('0x30'),JSON[_0xba2f('0x31')](_0x1fda1e,null,0x2));logger['info'](util[_0xba2f('0x11')](_0xba2f('0x32'),_0x1fda1e[_0xba2f('0x16')],_0x1fda1e[_0xba2f('0x1a')],_0x1fda1e[_0xba2f('0x17')],_0x1fda1e[_0xba2f('0x18')],_0x1fda1e[_0xba2f('0x19')]));_0x1fda1e['on']('error',errorHandler);_0x1fda1e['on']('close',closeHandler);_0x1fda1e['on'](_0xba2f('0x33'),timeoutHandler);_0x1fda1e['evtHangup']=![];_0x1fda1e['on'](_0xba2f('0x34'),hangupHandler);var _0x5517f1=getSquareProject[_0xba2f('0x35')](null,_0x1fda1e[_0xba2f('0x16')]);if(_0x5517f1){if(_0x5517f1['production']){_0x5c9d10=getRoot(_0x5517f1[_0xba2f('0x36')]);if(_0x5c9d10&&_0x5c9d10[_0xba2f('0x37')]){logger[_0xba2f('0x2f')](_0xba2f('0x38'),JSON[_0xba2f('0x31')](_0x5c9d10,null,0x2));_0x1fda1e[_0xba2f('0x39')]=moment()[_0xba2f('0x11')]('YYYY-MM-DD\x20HH:mm:ss');_0x3f2edb=initGraph(_[_0xba2f('0x3a')](_0x5c9d10,_0xba2f('0x21')),_0x5c9d10[_0xba2f('0x21')]);_0x5e8f57=new Vertices(_0x1fda1e,rpc,mailRpc);logger[_0xba2f('0x10')](util['format'](_0xba2f('0x3b'),_0x1fda1e[_0xba2f('0x16')],_0x1fda1e[_0xba2f('0x1a')],_0x1fda1e[_0xba2f('0x17')],_0x1fda1e['dnid'],_0x1fda1e[_0xba2f('0x19')]));_0x3f2edb[_0xba2f('0x3c')](_0x5c9d10[_0xba2f('0x37')]['id'],function(_0x1f548e){try{_0x1f548e=_0x5e8f57[_0xba2f('0x3d')](_0x1f548e);logger['debug'](_0xba2f('0x3e'),JSON[_0xba2f('0x31')](_0x1f548e,null,0x2));if(_0x1f548e[_0xba2f('0x1d')]===_0xba2f('0x3f')){logger[_0xba2f('0x10')](_0xba2f('0x40'));_0x1fda1e['context']=_0x1f548e[_0xba2f('0x41')]||_0x1fda1e[_0xba2f('0x41')];_0x1fda1e[_0xba2f('0x42')]=_0x1f548e[_0xba2f('0x42')];_0x1fda1e[_0xba2f('0x43')]=_0x1f548e['priority']?_0x1f548e[_0xba2f('0x43')]-0x1:0x1;return null;}else if(_0x1f548e&&_0x5e8f57[_0x1f548e['agicommand']]){_0x33b91d=_0x5e8f57[_0x1f548e[_0xba2f('0x1d')]](_0x1f548e);logger[_0xba2f('0x10')](_0xba2f('0x44'),JSON[_0xba2f('0x31')](_0x33b91d,null,0x2));if(_0x33b91d&&_0x33b91d[_0xba2f('0x45')]===AGI_CODE_SUCCESS&&_0x33b91d[_0xba2f('0x46')]!==AGI_RESULT_ERROR&&!_0x1fda1e['evtHangup']){logger[_0xba2f('0x2f')](_0xba2f('0x44'),getLogFromObject(_0x33b91d));return _['isUndefined'](_0x33b91d[_0xba2f('0x46')])?null:_0x33b91d[_0xba2f('0x46')]['toString']();}else{logger[_0xba2f('0xc')](_0xba2f('0x44'),getLogFromObject(_0x33b91d));return null;}}else{logger[_0xba2f('0xc')](_0xba2f('0x47'));return null;}}catch(_0x413b67){logger['error'](_0x413b67['stack']);return null;}});if(_0x5c9d10[_0xba2f('0x48')]){logger[_0xba2f('0x10')](util[_0xba2f('0x11')](_0xba2f('0x49'),_0x1fda1e['arg_1'],_0x1fda1e['calleridname'],_0x1fda1e[_0xba2f('0x17')],_0x1fda1e['dnid'],_0x1fda1e['uniqueid']));_0x3f2edb[_0xba2f('0x3c')](_0x5c9d10[_0xba2f('0x48')]['id'],function(_0x3cc29a){try{_0x3cc29a=_0x5e8f57[_0xba2f('0x3d')](_0x3cc29a);logger['debug'](_0xba2f('0x3e'),JSON[_0xba2f('0x31')](_0x3cc29a,null,0x2));if(_0x3cc29a&&_0x5e8f57[_0x3cc29a['agicommand']]){_0x33b91d=_0x5e8f57[_0x3cc29a['agicommand']](_0x3cc29a);if(_0x33b91d){logger[_0xba2f('0x2f')]('response',getLogFromObject(_0x33b91d));return _['isUndefined'](_0x33b91d[_0xba2f('0x46')])?null:_0x33b91d['result'][_0xba2f('0x4a')]();}else{logger[_0xba2f('0xc')](_0xba2f('0x44'),getLogFromObject(_0x33b91d));return null;}}else{logger[_0xba2f('0xc')]('agicommand\x20not\x20found');return null;}}catch(_0x1126a7){logger[_0xba2f('0xc')](_0x1126a7[_0xba2f('0xd')]);return null;}});}logger[_0xba2f('0x10')](util[_0xba2f('0x11')](_0xba2f('0x4b'),_0x1fda1e[_0xba2f('0x16')],_0x1fda1e[_0xba2f('0x1a')],_0x1fda1e[_0xba2f('0x17')],_0x1fda1e[_0xba2f('0x18')],_0x1fda1e['uniqueid']));logger[_0xba2f('0x10')](util['format'](_0xba2f('0x4c'),_0x1fda1e[_0xba2f('0x41')],_0x1fda1e['extension'],parseInt(_0x1fda1e[_0xba2f('0x43')],0xa)+0x1));_0x1fda1e[_0xba2f('0x4d')](_0x1fda1e[_0xba2f('0x41')],_0x1fda1e[_0xba2f('0x42')],parseInt(_0x1fda1e[_0xba2f('0x43')],0xa)+0x1);_0x1fda1e[_0xba2f('0x4e')]();}}else{logger[_0xba2f('0xc')](util['format'](_0xba2f('0x4f'),_0x1fda1e['arg_1']));_0x1fda1e[_0xba2f('0x4d')](_0x1fda1e['context'],_0x1fda1e[_0xba2f('0x42')],parseInt(_0x1fda1e[_0xba2f('0x43')],0xa)+0x1);_0x1fda1e[_0xba2f('0x4e')]();}}else{logger[_0xba2f('0xc')](util[_0xba2f('0x11')](_0xba2f('0x50'),_0x1fda1e[_0xba2f('0x16')]));_0x1fda1e['continueAt'](_0x1fda1e[_0xba2f('0x41')],_0x1fda1e[_0xba2f('0x42')],parseInt(_0x1fda1e[_0xba2f('0x43')],0xa)+0x1);_0x1fda1e[_0xba2f('0x4e')]();}}function main(){var _0x7ed712;return utilLicense[_0xba2f('0x51')]()[_0xba2f('0x2a')](function(_0x433322){if(_0x433322){if(_0x433322[_0xba2f('0x52')]){if(_0x433322[_0xba2f('0x53')]&&_0x433322[_0xba2f('0x53')]>0x0){logger[_0xba2f('0x10')](util[_0xba2f('0x11')]('[LICENSE]\x20CHANNELS:\x20%s',_0x433322[_0xba2f('0x53')]));_0x7ed712=_0x433322['callysquare'];}else{logger[_0xba2f('0x10')](_0xba2f('0x54'));}}else{logger[_0xba2f('0x10')](_0xba2f('0x55'));_0x7ed712=-0x1;}}})['catch'](function(_0x3bd551){logger[_0xba2f('0xc')]('[LICENSE]',_0x3bd551[_0xba2f('0xd')]);})[_0xba2f('0x48')](function(){var _0x491380=require(_0xba2f('0x56'))(config[_0xba2f('0x6')][_0xba2f('0xf')],config[_0xba2f('0x6')]['ip'],_0x7ed712);_0x491380['on'](_0xba2f('0xc'),errorHandler);_0x491380['on'](_0xba2f('0x57'),listeningHandler);_0x491380['on'](_0xba2f('0x58'),connectionHandler);_0x491380['on']('close',closeHandler);});}main();
\ No newline at end of file
+var _0xe8f2=['code','result','isUndefined','agicommand\x20not\x20found','finally','[FINALLY\x20TRAVERSE]\x20%s\x20project:\x20from\x20\x22%s\x22\x20<%s>\x20to\x20extension\x20%s\x20with\x20uniqueid\x20%s','clear','stringify','toString','[END]\x20%s\x20project:\x20from\x20\x22%s\x22\x20<%s>\x20to\x20extension\x20%s\x20with\x20uniqueid\x20%s','[GOTO]\x20context:\x20%s\x20extension:\x20%s\x20priority:\x20%s','continueAt','Project\x20%s\x20not\x20found','getLicense','voice','callysquare','[LICENSE]\x20CHANNELS:\x20%s','[LICENSE]\x20CHANNELS:\x20UNLIMITED','[LICENSE]\x20VOICE\x20IS\x20DISABLED','[LICENSE]','listening','connection','xml2json','lodash','syncho','util','moment','../../config/environment','../../config/logger','agi','../../config/license/util','./rpc','./mailRpc','./graph','./vertices','defaults','nextTick','stack','log','info','format','[LISTENING]\x20Cally\x20Square\x20listening\x20%s:%d','port','name','message','error','[%s]\x20%s','[ERROR]\x20%s','[CLOSE]\x20%s\x20project:\x20from\x20\x22%s\x22\x20<%s>\x20to\x20extension\x20%s\x20with\x20uniqueid\x20%s','callerid','uniqueid','[TIMEOUT]\x20%s\x20project:\x20from\x20\x22%s\x22\x20<%s>\x20to\x20extension\x20%s\x20with\x20uniqueid\x20%s','arg_1','dnid','[HANGUP]\x20%s\x20project:\x20from\x20\x22%s\x22\x20<%s>\x20to\x20extension\x20%s\x20with\x20uniqueid\x20%s','calleridname','evtHangup','toJson','root','retry','maxRetry','addVertex','hasOwnProperty','isArray','length','source','target','addEdge','getSquareProject','then','catch','createSquareReport','indexOf','agi_','substring','inspect','debug','variables','close','hangup','sync','YYYY-MM-DD\x20HH:mm:ss','omit','mxCell','[START\x20TRAVERSE]\x20%s\x20project:\x20from\x20\x22%s\x22\x20<%s>\x20to\x20extension\x20%s\x20with\x20uniqueid\x20%s','traverseBFS','start','vertex','agicommand','gotoc','context','extension','priority','response'];(function(_0x1facfa,_0x1acf7d){var _0x9ec701=function(_0x115e37){while(--_0x115e37){_0x1facfa['push'](_0x1facfa['shift']());}};_0x9ec701(++_0x1acf7d);}(_0xe8f2,0x18e));var _0x2e8f=function(_0x5032b6,_0x48ad96){_0x5032b6=_0x5032b6-0x0;var _0x25dcba=_0xe8f2[_0x5032b6];return _0x25dcba;};'use strict';var parser=require(_0x2e8f('0x0'));var _=require(_0x2e8f('0x1'));var syncho=require(_0x2e8f('0x2'));var util=require(_0x2e8f('0x3'));var moment=require(_0x2e8f('0x4'));var config=require(_0x2e8f('0x5'));var logger=require(_0x2e8f('0x6'))(_0x2e8f('0x7'));var utilLicense=require(_0x2e8f('0x8'));var rpc=require(_0x2e8f('0x9'));var mailRpc=require(_0x2e8f('0xa'));var Graph=require(_0x2e8f('0xb'));var Vertices=require(_0x2e8f('0xc'));var AGI_CODE_SUCCESS=0xc8;var AGI_RESULT_ERROR=-0x1;config[_0x2e8f('0x7')]=_[_0x2e8f('0xd')](config[_0x2e8f('0x7')],{'ip':'127.0.0.1','port':0x11dd});function connectionHandler(_0x172dc9){process[_0x2e8f('0xe')](function(){syncho(function(){try{setChannelVariables(_0x172dc9);agiHandler(_0x172dc9);}catch(_0x33b3c4){logger['error'](_0x33b3c4[_0x2e8f('0xf')]);}});});}function listeningHandler(){console[_0x2e8f('0x10')]('Cally\x20Square\x20server\x20listening\x20on\x20port\x20%d!',config[_0x2e8f('0x7')]['port']);logger[_0x2e8f('0x11')](util[_0x2e8f('0x12')](_0x2e8f('0x13'),config[_0x2e8f('0x7')]['ip'],config[_0x2e8f('0x7')][_0x2e8f('0x14')]));}function errorHandler(_0x3f33f7){if(_0x3f33f7&&_0x3f33f7[_0x2e8f('0x15')]&&_0x3f33f7[_0x2e8f('0x16')]){logger[_0x2e8f('0x17')](util[_0x2e8f('0x12')](_0x2e8f('0x18'),_0x3f33f7[_0x2e8f('0x15')],_0x3f33f7['message']));}else{logger['error'](util[_0x2e8f('0x12')](_0x2e8f('0x19'),_0x3f33f7['stack']));}}function closeHandler(){logger[_0x2e8f('0x11')](util[_0x2e8f('0x12')](_0x2e8f('0x1a'),this['arg_1'],this['calleridname'],this[_0x2e8f('0x1b')],this['dnid'],this[_0x2e8f('0x1c')]));try{createSquareReport(this);}catch(_0xf4c22f){logger['error'](_0xf4c22f['stack']);}}function timeoutHandler(){logger[_0x2e8f('0x11')](util[_0x2e8f('0x12')](_0x2e8f('0x1d'),this[_0x2e8f('0x1e')],this['calleridname'],this[_0x2e8f('0x1b')],this[_0x2e8f('0x1f')],this['uniqueid']));}function hangupHandler(){logger[_0x2e8f('0x11')](util[_0x2e8f('0x12')](_0x2e8f('0x20'),this['arg_1'],this[_0x2e8f('0x21')],this['callerid'],this['dnid'],this[_0x2e8f('0x1c')]));this[_0x2e8f('0x22')]=!![];}function getRoot(_0x4f7cb3){return parser[_0x2e8f('0x23')](_0x4f7cb3,{'object':!![]})['mxGraphModel'][_0x2e8f('0x24')];}function addVertex(_0x5668a2,_0xe7fefc,_0x14b29d){_0xe7fefc['agicommand']=_0x14b29d;if(_0xe7fefc['hasOwnProperty'](_0x2e8f('0x25'))){_0xe7fefc[_0x2e8f('0x26')]=parseInt(_0xe7fefc[_0x2e8f('0x25')],0xa);}_0x5668a2[_0x2e8f('0x27')](_['omit'](_0xe7fefc,'mxCell'));}function initGraph(_0x14b61f,_0x1ef9cf){var _0x3e56df=new Graph();for(var _0x230878 in _0x14b61f){if(_0x14b61f[_0x2e8f('0x28')](_0x230878)){if(_[_0x2e8f('0x29')](_0x14b61f[_0x230878])){for(var _0x2e6342=0x0;_0x2e6342<_0x14b61f[_0x230878][_0x2e8f('0x2a')];_0x2e6342+=0x1){addVertex(_0x3e56df,_0x14b61f[_0x230878][_0x2e6342],_0x230878);}}else{addVertex(_0x3e56df,_0x14b61f[_0x230878],_0x230878);}}}for(var _0x239079=0x0;_0x239079<_0x1ef9cf[_0x2e8f('0x2a')];_0x239079+=0x1){if(_0x1ef9cf[_0x239079][_0x2e8f('0x2b')]&&_0x1ef9cf[_0x239079][_0x2e8f('0x2c')]){_0x3e56df[_0x2e8f('0x2d')](_0x1ef9cf[_0x239079]['source'],_0x1ef9cf[_0x239079][_0x2e8f('0x2c')],_0x1ef9cf[_0x239079]['value']);}}return _0x3e56df;}function getSquareProject(_0x1fcc0e,_0x251fa4){rpc[_0x2e8f('0x2e')](_0x1fcc0e)[_0x2e8f('0x2f')](function(_0x34d3ce){_0x251fa4(null,_0x34d3ce);})[_0x2e8f('0x30')](function(_0xa791f7){_0x251fa4(null,_0xa791f7);});}function createSquareReport(_0x2e8124,_0x6fff1d){rpc[_0x2e8f('0x31')](_0x2e8124)[_0x2e8f('0x2f')](function(_0x40d407){if(_0x6fff1d){_0x6fff1d(null,_0x40d407);}})[_0x2e8f('0x30')](function(_0x1d7c74){if(_0x6fff1d){_0x6fff1d(null,_0x1d7c74);}});}function setChannelVariables(_0x4e7346){for(var _0x40e506 in _0x4e7346){if(_0x4e7346[_0x2e8f('0x28')](_0x40e506)){if(_0x40e506[_0x2e8f('0x32')](_0x2e8f('0x33'))===0x0){_0x4e7346[_0x40e506[_0x2e8f('0x34')](0x4)]=_0x4e7346[_0x40e506];delete _0x4e7346[_0x40e506];}}}}function getLogFromObject(_0x148069){return util[_0x2e8f('0x35')](_0x148069,{'showHidden':![],'depth':null});}function agiHandler(_0x2a7803){var _0x122e67,_0x5af622,_0x13b3df,_0x514392,_0x2c8b1b;logger[_0x2e8f('0x36')](_0x2e8f('0x37'),JSON['stringify'](_0x2a7803,null,0x2));logger[_0x2e8f('0x11')](util[_0x2e8f('0x12')]('[START]\x20%s\x20project:\x20from\x20\x22%s\x22\x20<%s>\x20to\x20extension\x20%s\x20with\x20uniqueid\x20%s',_0x2a7803[_0x2e8f('0x1e')],_0x2a7803[_0x2e8f('0x21')],_0x2a7803[_0x2e8f('0x1b')],_0x2a7803['dnid'],_0x2a7803[_0x2e8f('0x1c')]));_0x2a7803['on']('error',errorHandler);_0x2a7803['on'](_0x2e8f('0x38'),closeHandler);_0x2a7803['on']('timeout',timeoutHandler);_0x2a7803[_0x2e8f('0x22')]=![];_0x2a7803['on'](_0x2e8f('0x39'),hangupHandler);var _0x19561e=getSquareProject[_0x2e8f('0x3a')](null,_0x2a7803[_0x2e8f('0x1e')]);if(_0x19561e){if(_0x19561e['production']){_0x122e67=getRoot(_0x19561e['production']);if(_0x122e67&&_0x122e67['start']){logger['debug'](_0x2e8f('0x24'),JSON['stringify'](_0x122e67,null,0x2));_0x2a7803['joinAt']=moment()[_0x2e8f('0x12')](_0x2e8f('0x3b'));_0x5af622=initGraph(_[_0x2e8f('0x3c')](_0x122e67,'mxCell'),_0x122e67[_0x2e8f('0x3d')]);_0x13b3df=new Vertices(_0x2a7803,rpc,mailRpc);logger[_0x2e8f('0x11')](util[_0x2e8f('0x12')](_0x2e8f('0x3e'),_0x2a7803[_0x2e8f('0x1e')],_0x2a7803[_0x2e8f('0x21')],_0x2a7803['callerid'],_0x2a7803[_0x2e8f('0x1f')],_0x2a7803[_0x2e8f('0x1c')]));_0x5af622[_0x2e8f('0x3f')](_0x122e67[_0x2e8f('0x40')]['id'],function(_0x4da4da){try{_0x4da4da=_0x13b3df['clear'](_0x4da4da);logger[_0x2e8f('0x36')](_0x2e8f('0x41'),JSON['stringify'](_0x4da4da,null,0x2));if(_0x4da4da[_0x2e8f('0x42')]===_0x2e8f('0x43')){logger[_0x2e8f('0x11')]('gotoc\x20block\x20stop\x20traverse\x20BFS');_0x2a7803[_0x2e8f('0x44')]=_0x4da4da[_0x2e8f('0x44')]||_0x2a7803['context'];_0x2a7803[_0x2e8f('0x45')]=_0x4da4da[_0x2e8f('0x45')];_0x2a7803['priority']=_0x4da4da[_0x2e8f('0x46')]?_0x4da4da[_0x2e8f('0x46')]-0x1:0x1;return null;}else if(_0x4da4da&&_0x13b3df[_0x4da4da[_0x2e8f('0x42')]]){_0x2c8b1b=_0x13b3df[_0x4da4da['agicommand']](_0x4da4da);logger[_0x2e8f('0x11')](_0x2e8f('0x47'),JSON['stringify'](_0x2c8b1b,null,0x2));if(_0x2c8b1b&&_0x2c8b1b[_0x2e8f('0x48')]===AGI_CODE_SUCCESS&&_0x2c8b1b[_0x2e8f('0x49')]!==AGI_RESULT_ERROR&&!_0x2a7803[_0x2e8f('0x22')]){logger['debug'](_0x2e8f('0x47'),getLogFromObject(_0x2c8b1b));return _[_0x2e8f('0x4a')](_0x2c8b1b[_0x2e8f('0x49')])?null:_0x2c8b1b[_0x2e8f('0x49')]['toString']();}else{logger['error'](_0x2e8f('0x47'),getLogFromObject(_0x2c8b1b));return null;}}else{logger[_0x2e8f('0x17')](_0x2e8f('0x4b'));return null;}}catch(_0x4fdde4){logger['error'](_0x4fdde4[_0x2e8f('0xf')]);return null;}});if(_0x122e67[_0x2e8f('0x4c')]){logger[_0x2e8f('0x11')](util[_0x2e8f('0x12')](_0x2e8f('0x4d'),_0x2a7803[_0x2e8f('0x1e')],_0x2a7803[_0x2e8f('0x21')],_0x2a7803[_0x2e8f('0x1b')],_0x2a7803[_0x2e8f('0x1f')],_0x2a7803['uniqueid']));_0x5af622[_0x2e8f('0x3f')](_0x122e67['finally']['id'],function(_0x110cec){try{_0x110cec=_0x13b3df[_0x2e8f('0x4e')](_0x110cec);logger[_0x2e8f('0x36')](_0x2e8f('0x41'),JSON[_0x2e8f('0x4f')](_0x110cec,null,0x2));if(_0x110cec&&_0x13b3df[_0x110cec[_0x2e8f('0x42')]]){_0x2c8b1b=_0x13b3df[_0x110cec[_0x2e8f('0x42')]](_0x110cec);if(_0x2c8b1b){logger[_0x2e8f('0x36')](_0x2e8f('0x47'),getLogFromObject(_0x2c8b1b));return _[_0x2e8f('0x4a')](_0x2c8b1b[_0x2e8f('0x49')])?null:_0x2c8b1b[_0x2e8f('0x49')][_0x2e8f('0x50')]();}else{logger[_0x2e8f('0x17')]('response',getLogFromObject(_0x2c8b1b));return null;}}else{logger[_0x2e8f('0x17')](_0x2e8f('0x4b'));return null;}}catch(_0x4be3e8){logger['error'](_0x4be3e8[_0x2e8f('0xf')]);return null;}});}logger[_0x2e8f('0x11')](util[_0x2e8f('0x12')](_0x2e8f('0x51'),_0x2a7803[_0x2e8f('0x1e')],_0x2a7803[_0x2e8f('0x21')],_0x2a7803[_0x2e8f('0x1b')],_0x2a7803[_0x2e8f('0x1f')],_0x2a7803[_0x2e8f('0x1c')]));logger[_0x2e8f('0x11')](util[_0x2e8f('0x12')](_0x2e8f('0x52'),_0x2a7803[_0x2e8f('0x44')],_0x2a7803['extension'],parseInt(_0x2a7803[_0x2e8f('0x46')],0xa)+0x1));_0x2a7803['continueAt'](_0x2a7803[_0x2e8f('0x44')],_0x2a7803['extension'],parseInt(_0x2a7803[_0x2e8f('0x46')],0xa)+0x1);_0x2a7803[_0x2e8f('0x38')]();}}else{logger[_0x2e8f('0x17')](util[_0x2e8f('0x12')]('Project\x20%s\x20not\x20published',_0x2a7803[_0x2e8f('0x1e')]));_0x2a7803[_0x2e8f('0x53')](_0x2a7803['context'],_0x2a7803['extension'],parseInt(_0x2a7803[_0x2e8f('0x46')],0xa)+0x1);_0x2a7803[_0x2e8f('0x38')]();}}else{logger[_0x2e8f('0x17')](util['format'](_0x2e8f('0x54'),_0x2a7803[_0x2e8f('0x1e')]));_0x2a7803[_0x2e8f('0x53')](_0x2a7803[_0x2e8f('0x44')],_0x2a7803[_0x2e8f('0x45')],parseInt(_0x2a7803[_0x2e8f('0x46')],0xa)+0x1);_0x2a7803[_0x2e8f('0x38')]();}}function main(){var _0x265725;return utilLicense[_0x2e8f('0x55')]()[_0x2e8f('0x2f')](function(_0x87bcc6){if(_0x87bcc6){if(_0x87bcc6[_0x2e8f('0x56')]){if(_0x87bcc6[_0x2e8f('0x57')]&&_0x87bcc6[_0x2e8f('0x57')]>0x0){logger[_0x2e8f('0x11')](util[_0x2e8f('0x12')](_0x2e8f('0x58'),_0x87bcc6[_0x2e8f('0x57')]));_0x265725=_0x87bcc6[_0x2e8f('0x57')];}else{logger[_0x2e8f('0x11')](_0x2e8f('0x59'));}}else{logger['info'](_0x2e8f('0x5a'));_0x265725=-0x1;}}})[_0x2e8f('0x30')](function(_0x2a26d8){logger['error'](_0x2e8f('0x5b'),_0x2a26d8[_0x2e8f('0xf')]);})[_0x2e8f('0x4c')](function(){var _0x7d2cbf=require('./server')(config[_0x2e8f('0x7')][_0x2e8f('0x14')],config[_0x2e8f('0x7')]['ip'],_0x265725);_0x7d2cbf['on'](_0x2e8f('0x17'),errorHandler);_0x7d2cbf['on'](_0x2e8f('0x5c'),listeningHandler);_0x7d2cbf['on'](_0x2e8f('0x5d'),connectionHandler);_0x7d2cbf['on'](_0x2e8f('0x38'),closeHandler);});}main();
\ No newline at end of file
index 27833e3..e7d73ac 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9538=['message','result','sendMailMessage','jayson/promise','client','request','then','error'];(function(_0x43d11d,_0xccff91){var _0x38cd08=function(_0x131ae2){while(--_0x131ae2){_0x43d11d['push'](_0x43d11d['shift']());}};_0x38cd08(++_0xccff91);}(_0x9538,0xe3));var _0x8953=function(_0x4bc314,_0x20a3dd){_0x4bc314=_0x4bc314-0x0;var _0xfc7d8c=_0x9538[_0x4bc314];return _0xfc7d8c;};'use strict';var BPromise=require('bluebird');var jayson=require(_0x8953('0x0'));var client=jayson[_0x8953('0x1')]['http']({'port':0x232b});function request(_0xa535ae,_0x127ed9){return new BPromise(function(_0xcfb68,_0x3d385a){return client[_0x8953('0x2')](_0xa535ae,_0x127ed9)[_0x8953('0x3')](function(_0x2b14bc){if(_0x2b14bc[_0x8953('0x4')]){return _0x3d385a(_0x2b14bc[_0x8953('0x4')][_0x8953('0x5')]);}else{return _0xcfb68(_0x2b14bc[_0x8953('0x6')]);}})['catch'](function(_0x3c3519){return _0x3d385a(_0x3c3519);});});}exports[_0x8953('0x7')]=function(_0x3758ca,_0x22e0f2){return request('SendMail',{'account':_0x3758ca,'message':_0x22e0f2});};
\ No newline at end of file
+var _0xf144=['jayson/promise','then','error','result','catch','sendMailMessage','SendMail','bluebird'];(function(_0x24bce9,_0x49533a){var _0x1db1df=function(_0x1285d8){while(--_0x1285d8){_0x24bce9['push'](_0x24bce9['shift']());}};_0x1db1df(++_0x49533a);}(_0xf144,0xd7));var _0x4f14=function(_0x542bf7,_0x239720){_0x542bf7=_0x542bf7-0x0;var _0x1b134b=_0xf144[_0x542bf7];return _0x1b134b;};'use strict';var BPromise=require(_0x4f14('0x0'));var jayson=require(_0x4f14('0x1'));var client=jayson['client']['http']({'port':0x232b});function request(_0x2a7dc9,_0x2ba975){return new BPromise(function(_0x3edacc,_0x3ade1f){return client['request'](_0x2a7dc9,_0x2ba975)[_0x4f14('0x2')](function(_0x787976){if(_0x787976[_0x4f14('0x3')]){return _0x3ade1f(_0x787976[_0x4f14('0x3')]['message']);}else{return _0x3edacc(_0x787976[_0x4f14('0x4')]);}})[_0x4f14('0x5')](function(_0x158a57){return _0x3ade1f(_0x158a57);});});}exports[_0x4f14('0x6')]=function(_0x2bfd42,_0x34a38f){return request(_0x4f14('0x7'),{'account':_0x2bfd42,'message':_0x34a38f});};
\ No newline at end of file
index f0ac171..f9b6f40 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xceef=['stream','Transform','call','_localBuffer','_inBody','inherits','prototype','\x0d\x0a\x0d\x0a','toString','indexOf','substring','length','split','slice','trim','emit','headers','line','exports','util'];(function(_0x32e7b7,_0x24a60b){var _0x1de712=function(_0x50c3ff){while(--_0x50c3ff){_0x32e7b7['push'](_0x32e7b7['shift']());}};_0x1de712(++_0x24a60b);}(_0xceef,0x13f));var _0xfcee=function(_0x474a72,_0x439f5a){_0x474a72=_0x474a72-0x0;var _0x304966=_0xceef[_0x474a72];return _0x304966;};'use strict';var util=require(_0xfcee('0x0'));var Transform=require(_0xfcee('0x1'))[_0xfcee('0x2')];function AGIReply(_0xd83a5){Transform[_0xfcee('0x3')](this,_0xd83a5);this[_0xfcee('0x4')]='';this[_0xfcee('0x5')]=![];}util[_0xfcee('0x6')](AGIReply,Transform);AGIReply[_0xfcee('0x7')]['_transform']=function(_0x376e67,_0x5e5d57,_0x31c1c7){var _0x50a12c='\x0a',_0x364446=['\x0a\x0a',_0xfcee('0x8')],_0x17ed10=-0x1,_0x45a23b=-0x1,_0xea860c='',_0x4a42db=0x0,_0x3fdf26='',_0x4c55a1='';this[_0xfcee('0x4')]+=_0x376e67[_0xfcee('0x9')]();_0x3fdf26=this[_0xfcee('0x4')];if(!this[_0xfcee('0x5')]){_0x4a42db=0x0;while(_0x364446[_0x4a42db]){while((_0x45a23b=_0x3fdf26[_0xfcee('0xa')](_0x364446[_0x4a42db]))!=-0x1){_0xea860c=_0x364446[_0x4a42db];_0x4c55a1=_0x3fdf26[_0xfcee('0xb')](0x0,_0x45a23b);_0x3fdf26=_0x3fdf26[_0xfcee('0xb')](_0x45a23b+_0xea860c[_0xfcee('0xc')]);var _0x2839cb=_0x4c55a1[_0xfcee('0xd')](_0x50a12c),_0x26ed7c=0x0,_0x55ee7e={},_0x3defc3='',_0x1bf8d8='',_0x19d248=-0x1;while(_0x2839cb[_0x26ed7c]){_0x19d248=_0x2839cb[_0x26ed7c]['indexOf'](':');if(_0x19d248!=-0x1){_0x3defc3=_0x2839cb[_0x26ed7c][_0xfcee('0xe')](0x0,_0x19d248)[_0xfcee('0xf')]();_0x1bf8d8=_0x2839cb[_0x26ed7c][_0xfcee('0xe')](_0x19d248+0x1)['trim']();if(_0x3defc3[_0xfcee('0xc')]>0x0){_0x55ee7e[_0x3defc3]=_0x1bf8d8;}}else{}_0x26ed7c++;}this[_0xfcee('0x10')](_0xfcee('0x11'),_0x55ee7e);this[_0xfcee('0x5')]=!![];}_0x4a42db++;}this[_0xfcee('0x4')]=_0x3fdf26;}else{while((_0x17ed10=_0x3fdf26[_0xfcee('0xa')](_0x50a12c))!=-0x1){_0x4c55a1=_0x3fdf26[_0xfcee('0xb')](0x0,_0x17ed10);this[_0xfcee('0x10')](_0xfcee('0x12'),_0x4c55a1);_0x3fdf26=_0x3fdf26[_0xfcee('0xb')](_0x17ed10+_0x50a12c[_0xfcee('0xc')]);}this[_0xfcee('0x4')]=_0x3fdf26;}_0x31c1c7();};module[_0xfcee('0x13')]=AGIReply;
\ No newline at end of file
+var _0x036d=['toString','substring','length','slice','trim','emit','headers','indexOf','exports','stream','Transform','call','_localBuffer','_inBody','inherits','_transform','\x0d\x0a\x0d\x0a'];(function(_0x5a9d31,_0x40d5b0){var _0x367806=function(_0x172d39){while(--_0x172d39){_0x5a9d31['push'](_0x5a9d31['shift']());}};_0x367806(++_0x40d5b0);}(_0x036d,0xf7));var _0xd036=function(_0x5f1391,_0x19c132){_0x5f1391=_0x5f1391-0x0;var _0x50ebe3=_0x036d[_0x5f1391];return _0x50ebe3;};'use strict';var util=require('util');var Transform=require(_0xd036('0x0'))[_0xd036('0x1')];function AGIReply(_0x18c60f){Transform[_0xd036('0x2')](this,_0x18c60f);this[_0xd036('0x3')]='';this[_0xd036('0x4')]=![];}util[_0xd036('0x5')](AGIReply,Transform);AGIReply['prototype'][_0xd036('0x6')]=function(_0x4ba5ca,_0x558fbe,_0x3bb47a){var _0x5e7ca5='\x0a',_0x16a258=['\x0a\x0a',_0xd036('0x7')],_0x4c2b7c=-0x1,_0x438ea3=-0x1,_0x32481f='',_0x30c431=0x0,_0x2f638c='',_0x534115='';this[_0xd036('0x3')]+=_0x4ba5ca[_0xd036('0x8')]();_0x2f638c=this[_0xd036('0x3')];if(!this[_0xd036('0x4')]){_0x30c431=0x0;while(_0x16a258[_0x30c431]){while((_0x438ea3=_0x2f638c['indexOf'](_0x16a258[_0x30c431]))!=-0x1){_0x32481f=_0x16a258[_0x30c431];_0x534115=_0x2f638c[_0xd036('0x9')](0x0,_0x438ea3);_0x2f638c=_0x2f638c[_0xd036('0x9')](_0x438ea3+_0x32481f[_0xd036('0xa')]);var _0x574c9f=_0x534115['split'](_0x5e7ca5),_0x143615=0x0,_0x41bd21={},_0x2e417c='',_0x47f644='',_0x402eca=-0x1;while(_0x574c9f[_0x143615]){_0x402eca=_0x574c9f[_0x143615]['indexOf'](':');if(_0x402eca!=-0x1){_0x2e417c=_0x574c9f[_0x143615][_0xd036('0xb')](0x0,_0x402eca)[_0xd036('0xc')]();_0x47f644=_0x574c9f[_0x143615][_0xd036('0xb')](_0x402eca+0x1)[_0xd036('0xc')]();if(_0x2e417c[_0xd036('0xa')]>0x0){_0x41bd21[_0x2e417c]=_0x47f644;}}else{}_0x143615++;}this[_0xd036('0xd')](_0xd036('0xe'),_0x41bd21);this['_inBody']=!![];}_0x30c431++;}this[_0xd036('0x3')]=_0x2f638c;}else{while((_0x4c2b7c=_0x2f638c[_0xd036('0xf')](_0x5e7ca5))!=-0x1){_0x534115=_0x2f638c['substring'](0x0,_0x4c2b7c);this[_0xd036('0xd')]('line',_0x534115);_0x2f638c=_0x2f638c['substring'](_0x4c2b7c+_0x5e7ca5[_0xd036('0xa')]);}this['_localBuffer']=_0x2f638c;}_0x3bb47a();};module[_0xd036('0x10')]=AGIReply;
\ No newline at end of file
index 5f7cb6e..25106ec 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc6a8=['dsn','ShowUser','getTrunkById','ShowTrunk','getSoundById','ShowSound','save_name','ShowInterval','Intervals','getSmsAccountById','ShowSmsAccount','createSmsMessage','CreateSquareDetailsReport','createSquareReport','CreateSquareReport','merge','arg_1','arg_2','YYYY-MM-DD\x20HH:mm:ss','createSquareRecording','CreateSquareRecording','createSquareMessage','CreateSquareMessage','createCmContact','ShowCmHopper','phone','ListId','then','getPauseById','ShowPause','agentLogin','LoginUser','agentPause','PauseUser','agentUnpause','UnpauseUser','agentLogout','bluebird','moment','lodash','client','error','message','result','catch','getSquareProject','ShowSquareProject','production','ShowMailAccount','MailServerOut','Smtp','email','getSquareProjectById','ShowVoiceQueue','name','ShowVariable','ShowSquareOdbc'];(function(_0x8b0516,_0x4598f7){var _0x419bf4=function(_0x26f737){while(--_0x26f737){_0x8b0516['push'](_0x8b0516['shift']());}};_0x419bf4(++_0x4598f7);}(_0xc6a8,0x109));var _0x8c6a=function(_0x4b5f9c,_0x23f74b){_0x4b5f9c=_0x4b5f9c-0x0;var _0x17e3f1=_0xc6a8[_0x4b5f9c];return _0x17e3f1;};'use strict';var BPromise=require(_0x8c6a('0x0'));var moment=require(_0x8c6a('0x1'));var _=require(_0x8c6a('0x2'));var util=require('util');var jayson=require('jayson/promise');var client=jayson[_0x8c6a('0x3')]['http']({'port':0x2329});function request(_0x3afc75,_0x4736a1){return new BPromise(function(_0x560f8f,_0x50f998){return client['request'](_0x3afc75,_0x4736a1)['then'](function(_0x14e072){if(_0x14e072[_0x8c6a('0x4')]){return _0x50f998(_0x14e072[_0x8c6a('0x4')][_0x8c6a('0x5')]);}else{return _0x560f8f(_0x14e072[_0x8c6a('0x6')]);}})[_0x8c6a('0x7')](function(_0xa47117){return _0x50f998(_0xa47117);});});}exports[_0x8c6a('0x8')]=function(_0x57795e){return request(_0x8c6a('0x9'),{'options':{'raw':![],'where':{'name':_0x57795e},'attributes':[_0x8c6a('0xa')]}});};exports['getMailAccountById']=function(_0x4d9f0c){return request(_0x8c6a('0xb'),{'options':{'raw':![],'where':{'id':_0x4d9f0c},'include':[{'model':_0x8c6a('0xc'),'as':_0x8c6a('0xd')}],'attributes':['id','name',_0x8c6a('0xe')]}});};exports[_0x8c6a('0xf')]=function(_0x370a47){return request(_0x8c6a('0x9'),{'options':{'where':{'id':_0x370a47},'attributes':['name']}});};exports['getVoiceQueueById']=function(_0x2cd2cf){return request(_0x8c6a('0x10'),{'options':{'where':{'id':_0x2cd2cf},'attributes':[_0x8c6a('0x11')]}});};exports['getVariableById']=function(_0x476b71){return request(_0x8c6a('0x12'),{'options':{'where':{'id':_0x476b71},'attributes':[_0x8c6a('0x11')]}});};exports['getSquareOdbcById']=function(_0x24cc90){return request(_0x8c6a('0x13'),{'options':{'where':{'id':_0x24cc90},'attributes':[_0x8c6a('0x14')]}});};exports['getUserById']=function(_0x11f6f0){return request(_0x8c6a('0x15'),{'options':{'where':{'id':_0x11f6f0},'attributes':[_0x8c6a('0x11')]}});};exports[_0x8c6a('0x16')]=function(_0x4ed956){return request(_0x8c6a('0x17'),{'options':{'where':{'id':_0x4ed956},'attributes':[_0x8c6a('0x11')]}});};exports[_0x8c6a('0x18')]=function(_0x2befa8){return request(_0x8c6a('0x19'),{'options':{'where':{'id':_0x2befa8},'attributes':[_0x8c6a('0x1a')]}});};exports['getIntervalById']=function(_0x479e5f){return request(_0x8c6a('0x1b'),{'options':{'raw':![],'where':{'id':_0x479e5f},'include':[{'model':'Interval','as':_0x8c6a('0x1c')}]}});};exports[_0x8c6a('0x1d')]=function(_0x1bcd99){return request(_0x8c6a('0x1e'),{'options':{'where':{'id':_0x1bcd99},'attributes':['id','name']}});};exports[_0x8c6a('0x1f')]=function(_0x43cf8d){return request('CreateSmsMessage',{'body':_0x43cf8d});};exports['createSquareDetailsReport']=function(_0x272018){return request(_0x8c6a('0x20'),{'body':_0x272018});};exports[_0x8c6a('0x21')]=function(_0x44998d){return request(_0x8c6a('0x22'),{'body':_[_0x8c6a('0x23')](_0x44998d,{'project_name':_0x44998d[_0x8c6a('0x24')],'prev_project_name':_0x44998d[_0x8c6a('0x25')]||'','is_subproject':_0x44998d['arg_2']?!![]:![],'leaveAt':moment()['format'](_0x8c6a('0x26'))})});};exports[_0x8c6a('0x27')]=function(_0x48ded6){return request(_0x8c6a('0x28'),{'body':_0x48ded6});};exports[_0x8c6a('0x29')]=function(_0x309421){return request(_0x8c6a('0x2a'),{'body':_0x309421});};exports[_0x8c6a('0x2b')]=function(_0x1765b1){return request(_0x8c6a('0x2c'),{'options':{'raw':![],'where':{'phone':_0x1765b1[_0x8c6a('0x2d')],'ListId':_0x1765b1[_0x8c6a('0x2e')]}}})[_0x8c6a('0x2f')](function(_0x3e3a77){if(_0x3e3a77){return _0x3e3a77;}return request('CreateCmContact',{'body':_0x1765b1});});};exports[_0x8c6a('0x30')]=function(_0x303319){return request(_0x8c6a('0x31'),{'options':{'where':{'id':_0x303319},'attributes':['name']}});};exports[_0x8c6a('0x32')]=function(_0x3adb83,_0x244066){return request(_0x8c6a('0x33'),{'body':{'interface':_0x244066},'options':{'where':_0x3adb83}});};exports[_0x8c6a('0x34')]=function(_0x4938eb,_0x3945bc,_0x545e2e){return request(_0x8c6a('0x35'),{'body':{'type':_0x3945bc,'uniqueid':_0x545e2e},'options':{'where':_0x4938eb}});};exports[_0x8c6a('0x36')]=function(_0x2d1479){return request(_0x8c6a('0x37'),{'body':{},'options':{'where':_0x2d1479}});};exports[_0x8c6a('0x38')]=function(_0x2e1d56){return request('LogoutUser',{'body':{},'options':{'where':_0x2e1d56}});};
\ No newline at end of file
+var _0x2b58=['createSquareMessage','CreateSquareMessage','createCmContact','ShowCmHopper','ListId','CreateCmContact','ShowPause','agentLogin','LoginUser','agentUnpause','UnpauseUser','agentLogout','bluebird','lodash','jayson/promise','http','request','then','error','message','result','ShowSquareProject','production','getMailAccountById','ShowMailAccount','MailServerOut','Smtp','email','getSquareProjectById','name','ShowVoiceQueue','ShowVariable','getSquareOdbcById','ShowSquareOdbc','dsn','ShowUser','getTrunkById','ShowTrunk','getSoundById','ShowSound','save_name','getIntervalById','ShowInterval','Interval','Intervals','getSmsAccountById','ShowSmsAccount','createSmsMessage','CreateSmsMessage','createSquareDetailsReport','CreateSquareDetailsReport','createSquareReport','merge','arg_1','arg_2','YYYY-MM-DD\x20HH:mm:ss','createSquareRecording','CreateSquareRecording'];(function(_0x1a69fd,_0x3ca2aa){var _0x3727a8=function(_0x48445d){while(--_0x48445d){_0x1a69fd['push'](_0x1a69fd['shift']());}};_0x3727a8(++_0x3ca2aa);}(_0x2b58,0x1dc));var _0x82b5=function(_0x3c4c85,_0x49ca2c){_0x3c4c85=_0x3c4c85-0x0;var _0xda268f=_0x2b58[_0x3c4c85];return _0xda268f;};'use strict';var BPromise=require(_0x82b5('0x0'));var moment=require('moment');var _=require(_0x82b5('0x1'));var util=require('util');var jayson=require(_0x82b5('0x2'));var client=jayson['client'][_0x82b5('0x3')]({'port':0x2329});function request(_0x5c2cc7,_0x1f6982){return new BPromise(function(_0x1b5230,_0x1933c0){return client[_0x82b5('0x4')](_0x5c2cc7,_0x1f6982)[_0x82b5('0x5')](function(_0x558a4c){if(_0x558a4c[_0x82b5('0x6')]){return _0x1933c0(_0x558a4c['error'][_0x82b5('0x7')]);}else{return _0x1b5230(_0x558a4c[_0x82b5('0x8')]);}})['catch'](function(_0x428a19){return _0x1933c0(_0x428a19);});});}exports['getSquareProject']=function(_0x3c42ad){return request(_0x82b5('0x9'),{'options':{'raw':![],'where':{'name':_0x3c42ad},'attributes':[_0x82b5('0xa')]}});};exports[_0x82b5('0xb')]=function(_0x4f3d20){return request(_0x82b5('0xc'),{'options':{'raw':![],'where':{'id':_0x4f3d20},'include':[{'model':_0x82b5('0xd'),'as':_0x82b5('0xe')}],'attributes':['id','name',_0x82b5('0xf')]}});};exports[_0x82b5('0x10')]=function(_0xffeeb){return request(_0x82b5('0x9'),{'options':{'where':{'id':_0xffeeb},'attributes':[_0x82b5('0x11')]}});};exports['getVoiceQueueById']=function(_0x3d33de){return request(_0x82b5('0x12'),{'options':{'where':{'id':_0x3d33de},'attributes':[_0x82b5('0x11')]}});};exports['getVariableById']=function(_0x35bd55){return request(_0x82b5('0x13'),{'options':{'where':{'id':_0x35bd55},'attributes':['name']}});};exports[_0x82b5('0x14')]=function(_0x25c67b){return request(_0x82b5('0x15'),{'options':{'where':{'id':_0x25c67b},'attributes':[_0x82b5('0x16')]}});};exports['getUserById']=function(_0x295919){return request(_0x82b5('0x17'),{'options':{'where':{'id':_0x295919},'attributes':[_0x82b5('0x11')]}});};exports[_0x82b5('0x18')]=function(_0x3942e2){return request(_0x82b5('0x19'),{'options':{'where':{'id':_0x3942e2},'attributes':[_0x82b5('0x11')]}});};exports[_0x82b5('0x1a')]=function(_0x3a802d){return request(_0x82b5('0x1b'),{'options':{'where':{'id':_0x3a802d},'attributes':[_0x82b5('0x1c')]}});};exports[_0x82b5('0x1d')]=function(_0x3fe855){return request(_0x82b5('0x1e'),{'options':{'raw':![],'where':{'id':_0x3fe855},'include':[{'model':_0x82b5('0x1f'),'as':_0x82b5('0x20')}]}});};exports[_0x82b5('0x21')]=function(_0x1b202d){return request(_0x82b5('0x22'),{'options':{'where':{'id':_0x1b202d},'attributes':['id','name']}});};exports[_0x82b5('0x23')]=function(_0x148058){return request(_0x82b5('0x24'),{'body':_0x148058});};exports[_0x82b5('0x25')]=function(_0x14cff6){return request(_0x82b5('0x26'),{'body':_0x14cff6});};exports[_0x82b5('0x27')]=function(_0xce4789){return request('CreateSquareReport',{'body':_[_0x82b5('0x28')](_0xce4789,{'project_name':_0xce4789[_0x82b5('0x29')],'prev_project_name':_0xce4789[_0x82b5('0x2a')]||'','is_subproject':_0xce4789[_0x82b5('0x2a')]?!![]:![],'leaveAt':moment()['format'](_0x82b5('0x2b'))})});};exports[_0x82b5('0x2c')]=function(_0x2fddc0){return request(_0x82b5('0x2d'),{'body':_0x2fddc0});};exports[_0x82b5('0x2e')]=function(_0x2ace1d){return request(_0x82b5('0x2f'),{'body':_0x2ace1d});};exports[_0x82b5('0x30')]=function(_0x2bf2ed){return request(_0x82b5('0x31'),{'options':{'raw':![],'where':{'phone':_0x2bf2ed['phone'],'ListId':_0x2bf2ed[_0x82b5('0x32')]}}})[_0x82b5('0x5')](function(_0x13fc97){if(_0x13fc97){return _0x13fc97;}return request(_0x82b5('0x33'),{'body':_0x2bf2ed});});};exports['getPauseById']=function(_0x533090){return request(_0x82b5('0x34'),{'options':{'where':{'id':_0x533090},'attributes':[_0x82b5('0x11')]}});};exports[_0x82b5('0x35')]=function(_0x112c62,_0x5bb37b){return request(_0x82b5('0x36'),{'body':{'interface':_0x5bb37b},'options':{'where':_0x112c62}});};exports['agentPause']=function(_0x155221,_0x5b1708,_0x456458){return request('PauseUser',{'body':{'type':_0x5b1708,'uniqueid':_0x456458},'options':{'where':_0x155221}});};exports[_0x82b5('0x37')]=function(_0x287870){return request(_0x82b5('0x38'),{'body':{},'options':{'where':_0x287870}});};exports[_0x82b5('0x39')]=function(_0x112a20){return request('LogoutUser',{'body':{},'options':{'where':_0x112a20}});};
\ No newline at end of file
index e9125c5..60c496f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0763=['exports','./polly'];(function(_0x3ea75a,_0x53a227){var _0x30b6c7=function(_0xf427f4){while(--_0xf427f4){_0x3ea75a['push'](_0x3ea75a['shift']());}};_0x30b6c7(++_0x53a227);}(_0x0763,0x87));var _0x3076=function(_0x1c206c,_0x30bdcf){_0x1c206c=_0x1c206c-0x0;var _0x188aaa=_0x0763[_0x1c206c];return _0x188aaa;};var polly=require(_0x3076('0x0'));var lex=require('./lex');module[_0x3076('0x1')]={'polly':polly,'lex':lex};
\ No newline at end of file
+var _0x9c48=['./lex','exports','./polly'];(function(_0x341e71,_0x2612fe){var _0x274fe0=function(_0x228d1b){while(--_0x228d1b){_0x341e71['push'](_0x341e71['shift']());}};_0x274fe0(++_0x2612fe);}(_0x9c48,0xa1));var _0x89c4=function(_0x1dca51,_0x44b5b1){_0x1dca51=_0x1dca51-0x0;var _0x598366=_0x9c48[_0x1dca51];return _0x598366;};var polly=require(_0x89c4('0x0'));var lex=require(_0x89c4('0x1'));module[_0x89c4('0x2')]={'polly':polly,'lex':lex};
\ No newline at end of file
index 0d9d1dd..114f763 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6f7a=['./lib/api','exports'];(function(_0x4e9cf8,_0x187a56){var _0x44ba73=function(_0x295bba){while(--_0x295bba){_0x4e9cf8['push'](_0x4e9cf8['shift']());}};_0x44ba73(++_0x187a56);}(_0x6f7a,0x1ae));var _0xa6f7=function(_0x34f47b,_0x5bdaa2){_0x34f47b=_0x34f47b-0x0;var _0x401d0d=_0x6f7a[_0x34f47b];return _0x401d0d;};'use strict';var lex=require(_0xa6f7('0x0'));module[_0xa6f7('0x1')]=function(_0x205e14,_0x982062,_0x4dd99d,_0x93614a,_0x407de3,_0x12ecb8){return lex(_0x205e14,_0x982062,_0x4dd99d,_0x93614a,_0x407de3,_0x12ecb8);};
\ No newline at end of file
+var _0xa571=['exports','./lib/api'];(function(_0x2160a9,_0x3cbd9e){var _0xa88cf7=function(_0x51ab6f){while(--_0x51ab6f){_0x2160a9['push'](_0x2160a9['shift']());}};_0xa88cf7(++_0x3cbd9e);}(_0xa571,0x107));var _0x1a57=function(_0x491b34,_0x27723d){_0x491b34=_0x491b34-0x0;var _0x1d929c=_0xa571[_0x491b34];return _0x1d929c;};'use strict';var lex=require(_0x1a57('0x0'));module[_0x1a57('0x1')]=function(_0x206f1b,_0x1067d9,_0x48485e,_0x1a071f,_0x2eebaa,_0x4d5f7a){return lex(_0x206f1b,_0x1067d9,_0x48485e,_0x1a071f,_0x2eebaa,_0x4d5f7a);};
\ No newline at end of file
index 1a92e27..a1ae44c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa9e0=['LexRuntime','bluebird','aws-sdk','slots','hasOwnProperty'];(function(_0x286a8c,_0x317425){var _0x1b5437=function(_0x40a7d9){while(--_0x40a7d9){_0x286a8c['push'](_0x286a8c['shift']());}};_0x1b5437(++_0x317425);}(_0xa9e0,0x123));var _0x0a9e=function(_0x5c3c0b,_0x4ee35e){_0x5c3c0b=_0x5c3c0b-0x0;var _0x52ecd2=_0xa9e0[_0x5c3c0b];return _0x52ecd2;};'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(_0x5f41b3,_0x43040b){var _0x56f5c4=function(_0x23c230){while(--_0x23c230){_0x5f41b3['push'](_0x5f41b3['shift']());}};_0x56f5c4(++_0x43040b);}(_0xa9e0,0x123));var _0x0a9e=function(_0xbca1b1,_0x33f0ce){_0xbca1b1=_0xbca1b1-0x0;var _0x4e1686=_0xa9e0[_0xbca1b1];return _0x4e1686;};'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 6c4438b..d347a6d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb395=['./lib/api','exports'];(function(_0xf59106,_0x28ef6c){var _0xa9c416=function(_0x1c00e3){while(--_0x1c00e3){_0xf59106['push'](_0xf59106['shift']());}};_0xa9c416(++_0x28ef6c);}(_0xb395,0x106));var _0x5b39=function(_0x125c65,_0x2694a8){_0x125c65=_0x125c65-0x0;var _0xc328e6=_0xb395[_0x125c65];return _0xc328e6;};'use strict';var polly=require(_0x5b39('0x0'));module[_0x5b39('0x1')]=function(_0x1bff1b,_0x3c1f7e,_0x3f33e9,_0x18b936,_0x53fd4b,_0x43fa44,_0x3ce335){return polly(_0x1bff1b,_0x3c1f7e,_0x3f33e9,_0x18b936,_0x53fd4b,_0x43fa44,_0x3ce335);};
\ No newline at end of file
+var _0x251d=['exports','./lib/api'];(function(_0x7ad8f8,_0x145cba){var _0x2d23c6=function(_0x2e4135){while(--_0x2e4135){_0x7ad8f8['push'](_0x7ad8f8['shift']());}};_0x2d23c6(++_0x145cba);}(_0x251d,0x8d));var _0xd251=function(_0xfe2037,_0x16ad62){_0xfe2037=_0xfe2037-0x0;var _0x5c0cb7=_0x251d[_0xfe2037];return _0x5c0cb7;};'use strict';var polly=require(_0xd251('0x0'));module[_0xd251('0x1')]=function(_0x5709da,_0x39126c,_0x4e611b,_0x4be348,_0x511e9e,_0x226aed,_0x5b5f58){return polly(_0x5709da,_0x39126c,_0x4e611b,_0x4be348,_0x511e9e,_0x226aed,_0x5b5f58);};
\ No newline at end of file
index 4a373b4..5569a0a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf26a=['No\x20data\x20response\x20from\x20aws\x20Polly!','exports','Polly','mp3','path','bluebird','synthesizeSpeech','AudioStream','writeFile','Invalid\x20data\x20response\x20from\x20aws\x20Polly!'];(function(_0x577fa5,_0x1989b4){var _0x3c36be=function(_0x3f0031){while(--_0x3f0031){_0x577fa5['push'](_0x577fa5['shift']());}};_0x3c36be(++_0x1989b4);}(_0xf26a,0x158));var _0xaf26=function(_0x9cb303,_0xa9f831){_0x9cb303=_0x9cb303-0x0;var _0x250036=_0xf26a[_0x9cb303];return _0x250036;};'use strict';var fs=require('fs');var path=require(_0xaf26('0x0'));var BPromise=require(_0xaf26('0x1'));var rs=require('randomstring');var AWS=require('aws-sdk');function pollyResult(_0x32d349,_0x53f530,_0x57dcf8){return new BPromise(function(_0x1b935b,_0x3471b2){_0x32d349[_0xaf26('0x2')](_0x53f530,function(_0x1cb812,_0x4433c3){if(_0x1cb812){_0x3471b2(_0x1cb812);}else if(_0x4433c3){if(_0x4433c3[_0xaf26('0x3')]instanceof Buffer){fs[_0xaf26('0x4')](_0x57dcf8,_0x4433c3[_0xaf26('0x3')],function(_0x33295e){if(_0x33295e){_0x3471b2(_0x33295e);}else{_0x1b935b();}});}else{_0x3471b2(new Error(_0xaf26('0x5')));}}else{_0x3471b2(new Error(_0xaf26('0x6')));}});});}module[_0xaf26('0x7')]=function(_0x239ba1,_0x4ebbeb,_0x40e73e,_0x51747f,_0xe2c4b3,_0x53db27,_0x3ca0ed){var _0x41b216=new AWS[(_0xaf26('0x8'))]({'accessKeyId':_0x239ba1,'secretAccessKey':_0x4ebbeb,'region':_0x40e73e});var _0xce8b8c={'Text':_0xe2c4b3,'TextType':_0x53db27||'text','OutputFormat':_0xaf26('0x9'),'VoiceId':_0x51747f};return pollyResult(_0x41b216,_0xce8b8c,_0x3ca0ed);};
\ No newline at end of file
+var _0xcc1a=['exports','text','bluebird','randomstring','aws-sdk','synthesizeSpeech','AudioStream','Invalid\x20data\x20response\x20from\x20aws\x20Polly!'];(function(_0x15d97e,_0x1225f5){var _0x876b70=function(_0xfddf8){while(--_0xfddf8){_0x15d97e['push'](_0x15d97e['shift']());}};_0x876b70(++_0x1225f5);}(_0xcc1a,0x1aa));var _0xacc1=function(_0x29d915,_0x54a040){_0x29d915=_0x29d915-0x0;var _0x160f86=_0xcc1a[_0x29d915];return _0x160f86;};'use strict';var fs=require('fs');var path=require('path');var BPromise=require(_0xacc1('0x0'));var rs=require(_0xacc1('0x1'));var AWS=require(_0xacc1('0x2'));function pollyResult(_0x50a309,_0x17fda6,_0x634e1c){return new BPromise(function(_0x52b924,_0x31a3be){_0x50a309[_0xacc1('0x3')](_0x17fda6,function(_0x1a4d31,_0x37b5b3){if(_0x1a4d31){_0x31a3be(_0x1a4d31);}else if(_0x37b5b3){if(_0x37b5b3['AudioStream']instanceof Buffer){fs['writeFile'](_0x634e1c,_0x37b5b3[_0xacc1('0x4')],function(_0x5065f7){if(_0x5065f7){_0x31a3be(_0x5065f7);}else{_0x52b924();}});}else{_0x31a3be(new Error(_0xacc1('0x5')));}}else{_0x31a3be(new Error('No\x20data\x20response\x20from\x20aws\x20Polly!'));}});});}module[_0xacc1('0x6')]=function(_0x101a7a,_0x1545bc,_0xf7c0a6,_0x53a796,_0x191d3b,_0x3be92d,_0x95ec1d){var _0x29c88b=new AWS['Polly']({'accessKeyId':_0x101a7a,'secretAccessKey':_0x1545bc,'region':_0xf7c0a6});var _0x14fbef={'Text':_0x191d3b,'TextType':_0x3be92d||_0xacc1('0x7'),'OutputFormat':'mp3','VoiceId':_0x53a796};return pollyResult(_0x29c88b,_0x14fbef,_0x95ec1d);};
\ No newline at end of file
index 49b949a..afde35c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xed9e=['exports','./lib/api'];(function(_0x46a8a8,_0x3e82a4){var _0x506e1e=function(_0x5bcddd){while(--_0x5bcddd){_0x46a8a8['push'](_0x46a8a8['shift']());}};_0x506e1e(++_0x3e82a4);}(_0xed9e,0x9b));var _0xeed9=function(_0x366290,_0x534a25){_0x366290=_0x366290-0x0;var _0x2c12c0=_0xed9e[_0x366290];return _0x2c12c0;};'use strict';var asr=require(_0xeed9('0x0'));module[_0xeed9('0x1')]=function(_0x4b2ca5,_0x153863,_0x52467f,_0x5385b1){return asr(_0x4b2ca5,_0x153863,_0x52467f);};
\ No newline at end of file
+var _0x223d=['./lib/api'];(function(_0x19950b,_0x53d0d7){var _0x3c6b41=function(_0x3924ad){while(--_0x3924ad){_0x19950b['push'](_0x19950b['shift']());}};_0x3c6b41(++_0x53d0d7);}(_0x223d,0xc4));var _0xd223=function(_0x21051a,_0x220a7d){_0x21051a=_0x21051a-0x0;var _0x3cab06=_0x223d[_0x21051a];return _0x3cab06;};'use strict';var asr=require(_0xd223('0x0'));module['exports']=function(_0x30516f,_0x293dfc,_0x10fbbf,_0x9fdcbe){return asr(_0x30516f,_0x293dfc,_0x10fbbf);};
\ No newline at end of file
index dff1fcc..af873ad 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4d9e=['POST','/v1/speech:recognize?key=','LINEAR16','8000','url','exports','string','length','filepath\x20should\x20be\x20a\x20string','key\x20should\x20be\x20a\x20string','lang\x20should\x20be\x20a\x20string','readFileSync','toString','base64'];(function(_0x321bb2,_0x202794){var _0x9c12ed=function(_0x263dd3){while(--_0x263dd3){_0x321bb2['push'](_0x321bb2['shift']());}};_0x9c12ed(++_0x202794);}(_0x4d9e,0x18c));var _0xe4d9=function(_0x22bf10,_0x3a4bfd){_0x22bf10=_0x22bf10-0x0;var _0x2cc764=_0x4d9e[_0x22bf10];return _0x2cc764;};'use strict';var url=require(_0xe4d9('0x0'));var BPromise=require('bluebird');var fs=require('fs');var host='https://speech.googleapis.com';module[_0xe4d9('0x1')]=function(_0x574c1d,_0x36adac,_0x4d7687){return new BPromise(function(_0x2c6990,_0x2deaef){var _0x47a09f;if(typeof _0x574c1d!==_0xe4d9('0x2')||_0x574c1d[_0xe4d9('0x3')]===0x0){return _0x2deaef(_0xe4d9('0x4'));}if(typeof _0x36adac!==_0xe4d9('0x2')||_0x36adac[_0xe4d9('0x3')]===0x0){return _0x2deaef(_0xe4d9('0x5'));}if(typeof _0x4d7687!=='undefined'&&(typeof _0x4d7687!==_0xe4d9('0x2')||_0x4d7687[_0xe4d9('0x3')]===0x0)){return _0x2deaef(_0xe4d9('0x6'));}try{_0x47a09f=fs[_0xe4d9('0x7')](_0x574c1d)[_0xe4d9('0x8')](_0xe4d9('0x9'));}catch(_0x4b7cd0){return _0x2deaef(_0x4b7cd0);}return _0x2c6990({'method':_0xe4d9('0xa'),'uri':host+_0xe4d9('0xb')+_0x36adac,'body':{'config':{'encoding':_0xe4d9('0xc'),'sampleRateHertz':_0xe4d9('0xd'),'languageCode':_0x4d7687},'audio':{'content':_0x47a09f}},'json':!![]});});};
\ No newline at end of file
+var _0xac55=['8000','url','bluebird','https://speech.googleapis.com','exports','string','length','key\x20should\x20be\x20a\x20string','undefined','lang\x20should\x20be\x20a\x20string','readFileSync','POST','LINEAR16'];(function(_0x1c9a70,_0x5880b1){var _0x257364=function(_0x4ef3d2){while(--_0x4ef3d2){_0x1c9a70['push'](_0x1c9a70['shift']());}};_0x257364(++_0x5880b1);}(_0xac55,0x1c8));var _0x5ac5=function(_0x1f4d2b,_0x133c23){_0x1f4d2b=_0x1f4d2b-0x0;var _0xf38e12=_0xac55[_0x1f4d2b];return _0xf38e12;};'use strict';var url=require(_0x5ac5('0x0'));var BPromise=require(_0x5ac5('0x1'));var fs=require('fs');var host=_0x5ac5('0x2');module[_0x5ac5('0x3')]=function(_0x5ac30d,_0x17b1d9,_0x13fcc6){return new BPromise(function(_0x192f9d,_0x1cdfec){var _0x3706ee;if(typeof _0x5ac30d!==_0x5ac5('0x4')||_0x5ac30d[_0x5ac5('0x5')]===0x0){return _0x1cdfec('filepath\x20should\x20be\x20a\x20string');}if(typeof _0x17b1d9!=='string'||_0x17b1d9[_0x5ac5('0x5')]===0x0){return _0x1cdfec(_0x5ac5('0x6'));}if(typeof _0x13fcc6!==_0x5ac5('0x7')&&(typeof _0x13fcc6!==_0x5ac5('0x4')||_0x13fcc6[_0x5ac5('0x5')]===0x0)){return _0x1cdfec(_0x5ac5('0x8'));}try{_0x3706ee=fs[_0x5ac5('0x9')](_0x5ac30d)['toString']('base64');}catch(_0x2414f9){return _0x1cdfec(_0x2414f9);}return _0x192f9d({'method':_0x5ac5('0xa'),'uri':host+'/v1/speech:recognize?key='+_0x17b1d9,'body':{'config':{'encoding':_0x5ac5('0xb'),'sampleRateHertz':_0x5ac5('0xc'),'languageCode':_0x13fcc6},'audio':{'content':_0x3706ee}},'json':!![]});});};
\ No newline at end of file
index 10cb4be..b353ff7 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 _0x6f36=['exports','./asr'];(function(_0x4f1d58,_0x64dbf){var _0x12dd38=function(_0x44ada3){while(--_0x44ada3){_0x4f1d58['push'](_0x4f1d58['shift']());}};_0x12dd38(++_0x64dbf);}(_0x6f36,0x91));var _0x66f3=function(_0x399df9,_0x3ed8ec){_0x399df9=_0x399df9-0x0;var _0x5d4935=_0x6f36[_0x399df9];return _0x5d4935;};var asr=require(_0x66f3('0x0'));module[_0x66f3('0x1')]={'asr':asr};
\ No newline at end of file
index b5232e7..2eec52a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd25e=['intent','displayName','isFallback','languageCode','queryText','responseId','intentDetectionConfidence','fulfillmentText','stringify','tildeASR','asr','Tilde\x20ASR\x20transcription','Tilde\x20ASR\x20confidence','awsPolly','awsLex','lex','ispeechTTS','format','%s?apikey=%s&action=convert&text=%s&voice=%s&speed=%s&format=mp3','ispeechASR','%s?apikey=%s&action=recognize&locale=%s&content-type=audio/x-wav&audio=%s&%s','model=%s','sestekNDA','nda','channelData','CustomAction','AudioFromTts','bluebird','https','md5','querystring','randomstring','sox','google-tts-api','url','parse','util','./aws','./google','../../../config/logger','agi','protocol','https:','host','path','get','statusCode','error','request\x20to\x20','\x20failed,\x20status\x20code\x20=\x20','statusMessage','finish','info','finish\x20download\x20file','close','unlink','download\x20error','pipe','end','WHAT_EVER','data','transcode','error\x20convert','finish\x20to\x20convert','start','tmp','generate','.wav','writeFileSync','base64','then','chmodSync','777','split','readFileSync','toString','googleCloudTTS','https://texttospeech.googleapis.com/v1/','?key=','ssml','input','MP3','text:synthesize','POST','resolve','.mp3','from','googleCloudTTS\x20path','googleTTS','https://translate.google.com/_/TranslateWebserverUi/data/batchexecute','utf8','f.req=','jQ1olc','null','generic','slice','length','text\x20length\x20limit\x20reached','\x22\x20might\x20not\x20exist','parse\x20response\x20failed:\x0a','goggleTTS\x20path','googleASR','results','map','alternatives','transcript','join','confidence','googleASR\x20transcription','[%s]\x20%s:%s','name','googleDialogflow','result','source','resolvedQuery','action','actionIncomplete','fulfillment','speech','score','metadata','endConversation','isFallbackIntent','googleDialogflowV2','replace','SessionsClient','sessionPath','detectIntent','Dialogflow\x20V2\x20response:','queryResult','allRequiredParamsPresent','diagnosticInfo','fields','boolValue'];(function(_0x4e4f0e,_0x1c3892){var _0x1a7219=function(_0x3821ad){while(--_0x3821ad){_0x4e4f0e['push'](_0x4e4f0e['shift']());}};_0x1a7219(++_0x1c3892);}(_0xd25e,0x127));var _0xed25=function(_0x21b723,_0x4f56d0){_0x21b723=_0x21b723-0x0;var _0x267f42=_0xd25e[_0x21b723];return _0x267f42;};'use strict';var apiai=require('apiai-promise');var BPromise=require(_0xed25('0x0'));var dialogflow=require('dialogflow');var fs=require('fs');var http=require('http');var https=require(_0xed25('0x1'));var md5=require(_0xed25('0x2'));var path=require('path');var querystring=require(_0xed25('0x3'));var rp=require('request-promise');var rs=require(_0xed25('0x4'));var sox=require(_0xed25('0x5'));var tts=require(_0xed25('0x6'));var urlParse=require(_0xed25('0x7'))[_0xed25('0x8')];var util=require(_0xed25('0x9'));var aws=require(_0xed25('0xa'));var google=require(_0xed25('0xb'));var sestek=require('./sestek');var tilde=require('./tilde');var logger=require(_0xed25('0xc'))(_0xed25('0xd'));var ISPEECH_API='https://api.ispeech.org/api/rest';function downloadFile(_0x2c3716,_0x5c6a7e){return new BPromise(function(_0x45541f,_0x48edf3){var _0x35d896=urlParse(_0x2c3716);var _0x8f9bb9=_0x35d896[_0xed25('0xe')]===_0xed25('0xf')?https:http;var _0xdc959d={'host':_0x35d896[_0xed25('0x10')],'path':_0x35d896[_0xed25('0x11')],'headers':{'user-agent':'WHAT_EVER'}};_0x8f9bb9[_0xed25('0x12')](_0xdc959d,function(_0x40dbf3){if(_0x40dbf3[_0xed25('0x13')]!==0xc8){logger[_0xed25('0x14')](_0xed25('0x15')+_0x2c3716+_0xed25('0x16')+_0x40dbf3[_0xed25('0x13')]+'\x20('+_0x40dbf3[_0xed25('0x17')]+')');_0x48edf3(new Error(_0xed25('0x15')+_0x2c3716+_0xed25('0x16')+_0x40dbf3[_0xed25('0x13')]+'\x20('+_0x40dbf3[_0xed25('0x17')]+')'));return;}var _0x1c5531=fs['createWriteStream'](_0x5c6a7e);_0x1c5531['on'](_0xed25('0x18'),function(){logger[_0xed25('0x19')](_0xed25('0x1a'));_0x1c5531[_0xed25('0x1b')](_0x45541f);});_0x1c5531['on'](_0xed25('0x14'),function(_0xb5c3d9){fs[_0xed25('0x1c')](_0x5c6a7e);logger['error'](_0xed25('0x1d'),_0xb5c3d9);_0x48edf3(_0xb5c3d9);});_0x40dbf3[_0xed25('0x1e')](_0x1c5531);})['on'](_0xed25('0x14'),function(_0x2bf7e7){logger[_0xed25('0x14')](_0x2bf7e7);_0x48edf3(_0x2bf7e7);})[_0xed25('0x1f')]();});}function uploadFile(_0x4de9d7){return new BPromise(function(_0x5b2454,_0x10bb89){var _0x53a3ba=urlParse(_0x4de9d7);var _0x37e357=_0x53a3ba['protocol']===_0xed25('0xf')?https:http;var _0x294761={'host':_0x53a3ba[_0xed25('0x10')],'path':_0x53a3ba[_0xed25('0x11')],'headers':{'user-agent':_0xed25('0x20')}};_0x37e357[_0xed25('0x12')](_0x294761,function(_0x5d6314){if(_0x5d6314[_0xed25('0x13')]!==0xc8){_0x10bb89(new Error(_0xed25('0x15')+_0x4de9d7+'\x20failed,\x20status\x20code\x20=\x20'+_0x5d6314[_0xed25('0x13')]+'\x20('+_0x5d6314[_0xed25('0x17')]+')'));return;}var _0x766f7c='';_0x5d6314['on'](_0xed25('0x21'),function(_0x3a5872){_0x766f7c+=_0x3a5872;});_0x5d6314['on'](_0xed25('0x1f'),function(){_0x5b2454(_0x766f7c);});})['on'](_0xed25('0x14'),function(_0x1d0ef7){_0x10bb89(_0x1d0ef7);})[_0xed25('0x1f')]();});}function convertFile(_0x3ea800,_0x4dfd75){return new BPromise(function(_0x1cd7cd,_0x3a0cf6){var _0x1a2926=sox[_0xed25('0x22')](_0x3ea800,_0x4dfd75,{'sampleRate':0x1f40,'format':'wav','channelCount':0x1,'bitRate':0xc0*0x400,'compressionQuality':0x5});_0x1a2926['on'](_0xed25('0x14'),function(_0x230b95){logger['error'](_0xed25('0x23'),_0x230b95);_0x3a0cf6(_0x230b95);});_0x1a2926['on'](_0xed25('0x1f'),function(){logger[_0xed25('0x19')](_0xed25('0x24'));_0x1cd7cd();});_0x1a2926[_0xed25('0x25')]();});}function base64Decode(_0x3d1f37,_0x5b9016){var _0xf81397=path['resolve'](__dirname,_0xed25('0x26'),rs[_0xed25('0x27')](0x4)+_0xed25('0x28'));fs[_0xed25('0x29')](_0xf81397,_0x3d1f37,_0xed25('0x2a'));return convertFile(_0xf81397,_0x5b9016)[_0xed25('0x2b')](function(){try{fs[_0xed25('0x1c')](_0xf81397);fs[_0xed25('0x2c')](_0x5b9016,_0xed25('0x2d'));}catch(_0x44be54){logger['error'](_0x44be54);}return _0x5b9016[_0xed25('0x2e')]('.')[0x0];});}function base64Encode(_0x42f1ec){var _0x4b2fa8=fs[_0xed25('0x2f')](_0x42f1ec);return new Buffer(_0x4b2fa8)[_0xed25('0x30')]('base64');}exports[_0xed25('0x31')]=function(_0x1ad5b4,_0x37a14a,_0x24f1ca,_0x4722e0,_0x10fe9a,_0x130f28){var _0x46b9f2,_0x5115b5;var _0x3f6c63=_0xed25('0x32');var _0x4e3f66=_0xed25('0x33')+_0x1ad5b4;var _0x51e60b={};if(_0x37a14a===_0xed25('0x34')){_0x51e60b[_0xed25('0x35')]={'ssml':_0x24f1ca};}else{_0x51e60b['input']={'text':_0x24f1ca};};_0x51e60b['voice']={'languageCode':_0x4722e0,'ssmlGender':_0x10fe9a};_0x51e60b['audioConfig']={'audioEncoding':_0xed25('0x36'),'sampleRateHertz':0x1f40};var _0x2cb980={'url':_0x3f6c63+_0xed25('0x37')+_0x4e3f66,'method':_0xed25('0x38'),'json':!![],'body':_0x51e60b};return rp(_0x2cb980)['then'](function(_0x501ce9){return new BPromise(function(_0x5f21e7,_0x17bb13){_0x46b9f2=path[_0xed25('0x39')](__dirname,_0xed25('0x26'),rs[_0xed25('0x27')](0x4)+_0xed25('0x3a'));var _0x1c7e9d=Buffer[_0xed25('0x3b')](_0x501ce9['audioContent'],_0xed25('0x2a'));return fs['writeFile'](_0x46b9f2,_0x1c7e9d,function(_0x5396d1){_0x17bb13(_0x5396d1);},function(_0x28fd83){fs[_0xed25('0x2c')](_0x46b9f2,'777');_0x5f21e7(_0x28fd83);});});})[_0xed25('0x2b')](function(_0x85eb33){_0x5115b5=path[_0xed25('0x39')](__dirname,'tmp',rs[_0xed25('0x27')](0x4)+'.wav');return convertFile(_0x46b9f2,_0x5115b5);})['then'](function(){try{fs['unlink'](_0x46b9f2);fs['chmodSync'](_0x5115b5,_0xed25('0x2d'));}catch(_0x1f4c6f){logger[_0xed25('0x14')](_0x1f4c6f);}logger['info'](_0xed25('0x3c'),_0x5115b5[_0xed25('0x2e')]('.')[0x0]);return _0x5115b5['split']('.')[0x0];});};exports[_0xed25('0x3d')]=function(_0x279136,_0x19870b){var _0xd1f1d7=_0xed25('0x3e');var _0x26a49f,_0x4e8bc9;var _0x30b47a;var _0x4f3ae6={'encoding':_0xed25('0x3f'),'method':_0xed25('0x38'),'timeout':0x2710,'url':_0xd1f1d7,'headers':{'Content-Type':'application/x-www-form-urlencoded'},'body':_0xed25('0x40')+encodeURIComponent(JSON['stringify']([[[_0xed25('0x41'),JSON['stringify']([_0x279136,_0x19870b||'en',![],_0xed25('0x42')]),null,_0xed25('0x43')]]]))};return rp(_0x4f3ae6)[_0xed25('0x2b')](function(_0x480437){try{_0x30b47a=eval(_0x480437[_0xed25('0x44')](0x5))[0x0][0x2];}catch(_0x48d1a7){throw new Error('parse\x20response\x20failed:\x0a'+_0x480437[_0xed25('0x21')]);}if(!_0x30b47a){if(_0x279136[_0xed25('0x45')]>0xc8){throw new Error(_0xed25('0x46'));}else{throw new Error('lang\x20\x22'+_0x19870b+_0xed25('0x47'));}}try{_0x30b47a=eval(_0x30b47a)[0x0];}catch(_0x29eb36){throw new Error(_0xed25('0x48')+res[_0xed25('0x21')]);}const _0x1641b7=_0x30b47a;_0x26a49f=path[_0xed25('0x39')](__dirname,_0xed25('0x26'),rs[_0xed25('0x27')](0x4)+_0xed25('0x3a'));fs[_0xed25('0x29')](_0x26a49f,_0x30b47a,{'encoding':_0xed25('0x2a')});_0x4e8bc9=path[_0xed25('0x39')](__dirname,_0xed25('0x26'),rs[_0xed25('0x27')](0x4)+_0xed25('0x28'));return convertFile(_0x26a49f,_0x4e8bc9);})['then'](function(){try{fs[_0xed25('0x1c')](_0x26a49f);fs['chmodSync'](_0x4e8bc9,_0xed25('0x2d'));}catch(_0x1d5ed9){logger['error'](_0x1d5ed9);}logger[_0xed25('0x19')](_0xed25('0x49'),_0x4e8bc9['split']('.')[0x0]);return _0x4e8bc9[_0xed25('0x2e')]('.')[0x0];});};exports[_0xed25('0x4a')]=function(_0x5a8e86,_0x1601f0,_0x270a72){return google['asr'](_0x5a8e86,_0x1601f0,_0x270a72)[_0xed25('0x2b')](function(_0x289808){logger['info'](_0x289808['uri']);return rp(_0x289808);})['then'](function(_0x4982db){var _0xd6bb53='';var _0x47608e=0x0;try{fs[_0xed25('0x1c')](_0x5a8e86);}catch(_0x38634a){logger['error'](_0x38634a);}if(_0x4982db&&_0x4982db['results']){_0xd6bb53=_0x4982db[_0xed25('0x4b')][_0xed25('0x4c')](function(_0x18b107){return _0x18b107&&_0x18b107[_0xed25('0x4d')][0x0]&&_0x18b107[_0xed25('0x4d')][0x0]['transcript']?_0x18b107['alternatives'][0x0][_0xed25('0x4e')]:'';})[_0xed25('0x4f')]('\x0a');_0x47608e=_0x4982db['results'][_0xed25('0x4c')](function(_0x15cad5){return _0x15cad5&&_0x15cad5[_0xed25('0x4d')][0x0]&&_0x15cad5[_0xed25('0x4d')][0x0][_0xed25('0x50')]?_0x15cad5[_0xed25('0x4d')][0x0][_0xed25('0x50')]:0x0;})[_0xed25('0x4f')]('\x0a');}logger[_0xed25('0x19')](_0xed25('0x51'),_0xd6bb53);logger[_0xed25('0x19')]('googleASR\x20confidence',_0x47608e);return{'transcript':_0xd6bb53,'confidence':_0x47608e};})['catch'](function(_0x1acb4b){logger['error'](_0xed25('0x52'),_0x1acb4b[_0xed25('0x13')],_0x1acb4b[_0xed25('0x53')],_0x1acb4b['message']);});};exports[_0xed25('0x54')]=function(_0x4da182,_0x33b375,_0x375eb8,_0x82bb82){var _0x36dd82=apiai(_0x33b375,{'language':_0x82bb82||'en'});return _0x36dd82['textRequest'](_0x375eb8,{'sessionId':md5(_0x4da182)})[_0xed25('0x2b')](function(_0x4a247d){logger[_0xed25('0x19')](JSON['stringify'](_0x4a247d));return{'source':_0x4a247d[_0xed25('0x55')][_0xed25('0x56')],'resolvedQuery':_0x4a247d[_0xed25('0x55')][_0xed25('0x57')],'action':_0x4a247d[_0xed25('0x55')][_0xed25('0x58')],'actionIncomplete':_0x4a247d[_0xed25('0x55')][_0xed25('0x59')],'speech':_0x4a247d[_0xed25('0x55')][_0xed25('0x5a')][_0xed25('0x5b')],'score':_0x4a247d[_0xed25('0x55')][_0xed25('0x5c')],'statusCode':_0x4a247d['status']['code'],'endConversation':_0x4a247d[_0xed25('0x55')][_0xed25('0x5d')][_0xed25('0x5e')]||![],'isFallbackIntent':_0x4a247d[_0xed25('0x55')][_0xed25('0x5d')][_0xed25('0x5f')]};});};exports[_0xed25('0x60')]=function(_0x409611,_0x25b149,_0x1cb4bf,_0x50ee12,_0x3c35a9,_0x50a9f9){var _0x438f8d=_0x50ee12[_0xed25('0x61')](/\\n/g,'\x0a');var _0x9ff71f={'credentials':{'private_key':_0x438f8d,'client_email':_0x1cb4bf}};var _0x422751=new dialogflow[(_0xed25('0x62'))](_0x9ff71f);var _0x5b0b09=_0x422751[_0xed25('0x63')](_0x25b149,md5(_0x409611));var _0x4d3028={'session':_0x5b0b09,'queryInput':{'text':{'text':_0x3c35a9,'languageCode':_0x50a9f9}}};return _0x422751[_0xed25('0x64')](_0x4d3028)['then'](function(_0xfde112){if(_0xfde112&&_0xfde112[_0xed25('0x45')]){logger[_0xed25('0x19')](_0xed25('0x65'),JSON['stringify'](_0xfde112));var _0x4cf5bf=_0xfde112[0x0];if(_0x4cf5bf){var _0x33f34c={'action':_0x4cf5bf[_0xed25('0x66')][_0xed25('0x58')],'allRequiredParamsPresent':_0x4cf5bf['queryResult'][_0xed25('0x67')],'endConversation':_0x4cf5bf[_0xed25('0x66')]['diagnosticInfo']&&_0x4cf5bf[_0xed25('0x66')][_0xed25('0x68')]['fields']?_0x4cf5bf[_0xed25('0x66')][_0xed25('0x68')][_0xed25('0x69')]['end_conversation'][_0xed25('0x6a')]:![],'fulfillmentText':_0x4cf5bf[_0xed25('0x66')]['fulfillmentText'],'intentName':_0x4cf5bf[_0xed25('0x66')]['intent']['name'],'intentDisplayName':_0x4cf5bf[_0xed25('0x66')][_0xed25('0x6b')][_0xed25('0x6c')],'isFallbackIntent':_0x4cf5bf[_0xed25('0x66')][_0xed25('0x6b')][_0xed25('0x6d')],'languageCode':_0x4cf5bf[_0xed25('0x66')][_0xed25('0x6e')],'queryText':_0x4cf5bf['queryResult'][_0xed25('0x6f')],'responseId':_0x4cf5bf[_0xed25('0x70')],'score':_0x4cf5bf[_0xed25('0x66')][_0xed25('0x71')],'speech':_0x4cf5bf['queryResult'][_0xed25('0x72')],'providerResponse':JSON[_0xed25('0x73')](_0xfde112)};return _0x33f34c;}}});};exports[_0xed25('0x74')]=function(_0x460782,_0xa658f,_0x262dd6,_0x192ba1){return tilde[_0xed25('0x75')](_0x460782,_0xa658f,_0x262dd6,_0x192ba1)['then'](function(_0x13c2d3){try{fs[_0xed25('0x1c')](_0x460782);}catch(_0x4fed15){logger[_0xed25('0x14')](_0x4fed15);}logger[_0xed25('0x19')](_0xed25('0x76'),_0x13c2d3['transcript']);logger[_0xed25('0x19')](_0xed25('0x77'),_0x13c2d3[_0xed25('0x50')]);return _0x13c2d3;});};exports[_0xed25('0x78')]=function(_0x6b1ac,_0x2cd03e,_0x55af2c,_0x399a70,_0x220f1a,_0x2bbc75){var _0x753b53=path[_0xed25('0x39')](__dirname,_0xed25('0x26'),rs['generate'](0x4)+'.mp3');var _0xd3a22b;return aws['polly'](_0x6b1ac,_0x2cd03e,_0x55af2c,_0x399a70,_0x220f1a,_0x2bbc75,_0x753b53)['then'](function(){_0xd3a22b=path[_0xed25('0x39')](__dirname,'tmp',rs[_0xed25('0x27')](0x4)+'.wav');return convertFile(_0x753b53,_0xd3a22b);})['then'](function(){try{fs[_0xed25('0x1c')](_0x753b53);fs[_0xed25('0x2c')](_0xd3a22b,'777');}catch(_0x20e3f1){logger['error'](_0x20e3f1);}return _0xd3a22b[_0xed25('0x2e')]('.')[0x0];});};exports[_0xed25('0x79')]=function(_0x20b6ae,_0x15462c,_0x553ffe,_0x587151,_0x24206e,_0x24b6f0){return aws[_0xed25('0x7a')](_0x20b6ae,_0x15462c,_0x553ffe,_0x587151,_0x24206e,_0x24b6f0)[_0xed25('0x2b')](function(_0x4f7953){logger['info'](JSON[_0xed25('0x73')](_0x4f7953));return _0x4f7953;});};exports[_0xed25('0x7b')]=function(_0x4ce283,_0x3c61e3,_0x37ac8c,_0x10ace8){var _0x3cb0d6=util[_0xed25('0x7c')](_0xed25('0x7d'),ISPEECH_API,_0x4ce283,encodeURIComponent(_0x3c61e3),_0x37ac8c,_0x10ace8);var _0x24b2df=path['resolve'](__dirname,_0xed25('0x26'),rs[_0xed25('0x27')](0x4)+_0xed25('0x3a'));var _0x547ca2;return downloadFile(_0x3cb0d6,_0x24b2df)[_0xed25('0x2b')](function(){_0x547ca2=path[_0xed25('0x39')](__dirname,_0xed25('0x26'),rs[_0xed25('0x27')](0x4)+_0xed25('0x28'));return convertFile(_0x24b2df,_0x547ca2);})[_0xed25('0x2b')](function(){try{fs['unlink'](_0x24b2df);fs['chmodSync'](_0x547ca2,'777');}catch(_0x599efd){logger['error'](_0x599efd);}return _0x547ca2[_0xed25('0x2e')]('.')[0x0];});};exports[_0xed25('0x7e')]=function(_0x65cd5e,_0xab02e4,_0x38cec4,_0x720f3d){var _0x3958b7=util[_0xed25('0x7c')](_0xed25('0x7f'),ISPEECH_API,_0xab02e4,_0x38cec4,base64Encode(_0x65cd5e),_0x720f3d?util[_0xed25('0x7c')](_0xed25('0x80'),encodeURIComponent(_0x720f3d)):'freeform=3');return uploadFile(_0x3958b7)['then'](function(_0x424995){return querystring[_0xed25('0x8')](_0x424995);});};exports[_0xed25('0x81')]=function(_0x2218f6,_0x3ad1cc){return sestek[_0xed25('0x82')](_0x2218f6,_0x3ad1cc)['then'](function(_0x199326){logger[_0xed25('0x19')](JSON[_0xed25('0x73')](_0x199326));var _0x14b109={'speech':_0x199326['text'],'action':_0x199326[_0xed25('0x83')]?_0x199326['channelData'][_0xed25('0x84')]:undefined,'actiondata':_0x199326[_0xed25('0x83')]?_0x199326[_0xed25('0x83')]['CustomActionData']:undefined};if(_0x199326['channelData']&&_0x199326[_0xed25('0x83')][_0xed25('0x85')]){return base64Decode(_0x199326[_0xed25('0x83')][_0xed25('0x85')]['Data'],path['resolve'](__dirname,_0xed25('0x26'),rs[_0xed25('0x27')](0x4)+'.wav'))[_0xed25('0x2b')](function(_0x1ce8a2){_0x14b109['audiofile']=_0x1ce8a2;return _0x14b109;});}return _0x14b109;});};exports['dirName']=function(){return __dirname;};
\ No newline at end of file
+var _0x6e3d=['status','code','metadata','endConversation','googleDialogflowV2','SessionsClient','detectIntent','length','queryResult','allRequiredParamsPresent','diagnosticInfo','fields','end_conversation','boolValue','fulfillmentText','intent','displayName','isFallback','queryText','responseId','intentDetectionConfidence','tildeASR','Tilde\x20ASR\x20transcription','Tilde\x20ASR\x20confidence','polly','awsLex','lex','ispeechTTS','format','%s?apikey=%s&action=convert&text=%s&voice=%s&speed=%s&format=mp3','ispeechASR','model=%s','freeform=3','sestekNDA','nda','channelData','CustomActionData','AudioFromTts','Data','audiofile','apiai-promise','dialogflow','http','https','path','randomstring','sox','google-tts-api','parse','util','./aws','./google','./sestek','./tilde','../../../config/logger','https://api.ispeech.org/api/rest','protocol','https:','WHAT_EVER','get','error','request\x20to\x20','statusMessage','\x20failed,\x20status\x20code\x20=\x20','statusCode','createWriteStream','finish\x20download\x20file','close','unlink','download\x20error','pipe','end','host','transcode','wav','error\x20convert','info','finish\x20to\x20convert','start','resolve','tmp','generate','.wav','writeFileSync','base64','chmodSync','777','split','readFileSync','toString','googleCloudTTS','https://texttospeech.googleapis.com/v1/','?key=','ssml','input','voice','audioConfig','MP3','text:synthesize','POST','then','from','audioContent','googleTTS','utf8','application/x-www-form-urlencoded','stringify','jQ1olc','slice','parse\x20response\x20failed:\x0a','data','lang\x20\x22','\x22\x20might\x20not\x20exist','.mp3','googleASR','asr','uri','results','map','alternatives','transcript','confidence','join','googleASR\x20transcription','catch','[%s]\x20%s:%s','name','googleDialogflow','result','source','action','actionIncomplete','fulfillment','speech'];(function(_0x5f58bb,_0x3f0bad){var _0xcc672d=function(_0x4a0765){while(--_0x4a0765){_0x5f58bb['push'](_0x5f58bb['shift']());}};_0xcc672d(++_0x3f0bad);}(_0x6e3d,0x134));var _0xd6e3=function(_0x54f3e8,_0x3ed493){_0x54f3e8=_0x54f3e8-0x0;var _0x267b37=_0x6e3d[_0x54f3e8];return _0x267b37;};'use strict';var apiai=require(_0xd6e3('0x0'));var BPromise=require('bluebird');var dialogflow=require(_0xd6e3('0x1'));var fs=require('fs');var http=require(_0xd6e3('0x2'));var https=require(_0xd6e3('0x3'));var md5=require('md5');var path=require(_0xd6e3('0x4'));var querystring=require('querystring');var rp=require('request-promise');var rs=require(_0xd6e3('0x5'));var sox=require(_0xd6e3('0x6'));var tts=require(_0xd6e3('0x7'));var urlParse=require('url')[_0xd6e3('0x8')];var util=require(_0xd6e3('0x9'));var aws=require(_0xd6e3('0xa'));var google=require(_0xd6e3('0xb'));var sestek=require(_0xd6e3('0xc'));var tilde=require(_0xd6e3('0xd'));var logger=require(_0xd6e3('0xe'))('agi');var ISPEECH_API=_0xd6e3('0xf');function downloadFile(_0xbca6cf,_0x1ed592){return new BPromise(function(_0x1f67da,_0x33ad60){var _0x47cd8c=urlParse(_0xbca6cf);var _0x1ed88c=_0x47cd8c[_0xd6e3('0x10')]===_0xd6e3('0x11')?https:http;var _0x366993={'host':_0x47cd8c['host'],'path':_0x47cd8c[_0xd6e3('0x4')],'headers':{'user-agent':_0xd6e3('0x12')}};_0x1ed88c[_0xd6e3('0x13')](_0x366993,function(_0x192350){if(_0x192350['statusCode']!==0xc8){logger[_0xd6e3('0x14')](_0xd6e3('0x15')+_0xbca6cf+'\x20failed,\x20status\x20code\x20=\x20'+_0x192350['statusCode']+'\x20('+_0x192350[_0xd6e3('0x16')]+')');_0x33ad60(new Error('request\x20to\x20'+_0xbca6cf+_0xd6e3('0x17')+_0x192350[_0xd6e3('0x18')]+'\x20('+_0x192350[_0xd6e3('0x16')]+')'));return;}var _0x4c09aa=fs[_0xd6e3('0x19')](_0x1ed592);_0x4c09aa['on']('finish',function(){logger['info'](_0xd6e3('0x1a'));_0x4c09aa[_0xd6e3('0x1b')](_0x1f67da);});_0x4c09aa['on']('error',function(_0x46d30a){fs[_0xd6e3('0x1c')](_0x1ed592);logger[_0xd6e3('0x14')](_0xd6e3('0x1d'),_0x46d30a);_0x33ad60(_0x46d30a);});_0x192350[_0xd6e3('0x1e')](_0x4c09aa);})['on'](_0xd6e3('0x14'),function(_0x33ae31){logger[_0xd6e3('0x14')](_0x33ae31);_0x33ad60(_0x33ae31);})[_0xd6e3('0x1f')]();});}function uploadFile(_0xee5380){return new BPromise(function(_0x530f7a,_0x1c9e17){var _0x44cab9=urlParse(_0xee5380);var _0x4e93b4=_0x44cab9[_0xd6e3('0x10')]===_0xd6e3('0x11')?https:http;var _0x294af3={'host':_0x44cab9[_0xd6e3('0x20')],'path':_0x44cab9['path'],'headers':{'user-agent':_0xd6e3('0x12')}};_0x4e93b4[_0xd6e3('0x13')](_0x294af3,function(_0x4f350f){if(_0x4f350f[_0xd6e3('0x18')]!==0xc8){_0x1c9e17(new Error(_0xd6e3('0x15')+_0xee5380+_0xd6e3('0x17')+_0x4f350f[_0xd6e3('0x18')]+'\x20('+_0x4f350f[_0xd6e3('0x16')]+')'));return;}var _0x55074c='';_0x4f350f['on']('data',function(_0x31555d){_0x55074c+=_0x31555d;});_0x4f350f['on'](_0xd6e3('0x1f'),function(){_0x530f7a(_0x55074c);});})['on'](_0xd6e3('0x14'),function(_0x3b6a89){_0x1c9e17(_0x3b6a89);})[_0xd6e3('0x1f')]();});}function convertFile(_0x7984df,_0x58b558){return new BPromise(function(_0x16bb52,_0x434bbd){var _0x2fcbc5=sox[_0xd6e3('0x21')](_0x7984df,_0x58b558,{'sampleRate':0x1f40,'format':_0xd6e3('0x22'),'channelCount':0x1,'bitRate':0xc0*0x400,'compressionQuality':0x5});_0x2fcbc5['on'](_0xd6e3('0x14'),function(_0x4a0ec6){logger['error'](_0xd6e3('0x23'),_0x4a0ec6);_0x434bbd(_0x4a0ec6);});_0x2fcbc5['on'](_0xd6e3('0x1f'),function(){logger[_0xd6e3('0x24')](_0xd6e3('0x25'));_0x16bb52();});_0x2fcbc5[_0xd6e3('0x26')]();});}function base64Decode(_0x560197,_0x493e41){var _0x3278cf=path[_0xd6e3('0x27')](__dirname,_0xd6e3('0x28'),rs[_0xd6e3('0x29')](0x4)+_0xd6e3('0x2a'));fs[_0xd6e3('0x2b')](_0x3278cf,_0x560197,_0xd6e3('0x2c'));return convertFile(_0x3278cf,_0x493e41)['then'](function(){try{fs['unlink'](_0x3278cf);fs[_0xd6e3('0x2d')](_0x493e41,_0xd6e3('0x2e'));}catch(_0xe80699){logger[_0xd6e3('0x14')](_0xe80699);}return _0x493e41[_0xd6e3('0x2f')]('.')[0x0];});}function base64Encode(_0x38dd96){var _0x5a3e9c=fs[_0xd6e3('0x30')](_0x38dd96);return new Buffer(_0x5a3e9c)[_0xd6e3('0x31')](_0xd6e3('0x2c'));}exports[_0xd6e3('0x32')]=function(_0x4531ba,_0x18e318,_0x40fa2d,_0x1c7426,_0x4ececb,_0x2e95a1){var _0x3e1464,_0x489812;var _0x3a744b=_0xd6e3('0x33');var _0x30e853=_0xd6e3('0x34')+_0x4531ba;var _0x4e853c={};if(_0x18e318===_0xd6e3('0x35')){_0x4e853c[_0xd6e3('0x36')]={'ssml':_0x40fa2d};}else{_0x4e853c[_0xd6e3('0x36')]={'text':_0x40fa2d};};_0x4e853c[_0xd6e3('0x37')]={'languageCode':_0x1c7426,'ssmlGender':_0x4ececb};_0x4e853c[_0xd6e3('0x38')]={'audioEncoding':_0xd6e3('0x39'),'sampleRateHertz':0x1f40};var _0x3371bc={'url':_0x3a744b+_0xd6e3('0x3a')+_0x30e853,'method':_0xd6e3('0x3b'),'json':!![],'body':_0x4e853c};return rp(_0x3371bc)[_0xd6e3('0x3c')](function(_0x42619f){return new BPromise(function(_0x4d734f,_0x423d15){_0x3e1464=path['resolve'](__dirname,_0xd6e3('0x28'),rs[_0xd6e3('0x29')](0x4)+'.mp3');var _0x4d23bc=Buffer[_0xd6e3('0x3d')](_0x42619f[_0xd6e3('0x3e')],'base64');return fs['writeFile'](_0x3e1464,_0x4d23bc,function(_0x4c84e2){_0x423d15(_0x4c84e2);},function(_0x60b43){fs[_0xd6e3('0x2d')](_0x3e1464,'777');_0x4d734f(_0x60b43);});});})[_0xd6e3('0x3c')](function(_0x5b13cf){_0x489812=path['resolve'](__dirname,_0xd6e3('0x28'),rs['generate'](0x4)+_0xd6e3('0x2a'));return convertFile(_0x3e1464,_0x489812);})['then'](function(){try{fs[_0xd6e3('0x1c')](_0x3e1464);fs[_0xd6e3('0x2d')](_0x489812,_0xd6e3('0x2e'));}catch(_0xf4c3c9){logger[_0xd6e3('0x14')](_0xf4c3c9);}logger['info']('googleCloudTTS\x20path',_0x489812['split']('.')[0x0]);return _0x489812[_0xd6e3('0x2f')]('.')[0x0];});};exports[_0xd6e3('0x3f')]=function(_0x4ada70,_0x2a3678){var _0x2f59e8='https://translate.google.com/_/TranslateWebserverUi/data/batchexecute';var _0x18a188,_0x10ee24;var _0x13555f;var _0x23f76b={'encoding':_0xd6e3('0x40'),'method':'POST','timeout':0x2710,'url':_0x2f59e8,'headers':{'Content-Type':_0xd6e3('0x41')},'body':'f.req='+encodeURIComponent(JSON[_0xd6e3('0x42')]([[[_0xd6e3('0x43'),JSON[_0xd6e3('0x42')]([_0x4ada70,_0x2a3678||'en',![],'null']),null,'generic']]]))};return rp(_0x23f76b)[_0xd6e3('0x3c')](function(_0x48be3d){try{_0x13555f=eval(_0x48be3d[_0xd6e3('0x44')](0x5))[0x0][0x2];}catch(_0xc2827a){throw new Error(_0xd6e3('0x45')+_0x48be3d[_0xd6e3('0x46')]);}if(!_0x13555f){if(_0x4ada70['length']>0xc8){throw new Error('text\x20length\x20limit\x20reached');}else{throw new Error(_0xd6e3('0x47')+_0x2a3678+_0xd6e3('0x48'));}}try{_0x13555f=eval(_0x13555f)[0x0];}catch(_0x484456){throw new Error(_0xd6e3('0x45')+res[_0xd6e3('0x46')]);}const _0x39877b=_0x13555f;_0x18a188=path['resolve'](__dirname,_0xd6e3('0x28'),rs[_0xd6e3('0x29')](0x4)+_0xd6e3('0x49'));fs['writeFileSync'](_0x18a188,_0x13555f,{'encoding':'base64'});_0x10ee24=path[_0xd6e3('0x27')](__dirname,'tmp',rs['generate'](0x4)+_0xd6e3('0x2a'));return convertFile(_0x18a188,_0x10ee24);})[_0xd6e3('0x3c')](function(){try{fs[_0xd6e3('0x1c')](_0x18a188);fs[_0xd6e3('0x2d')](_0x10ee24,_0xd6e3('0x2e'));}catch(_0x3be7a0){logger['error'](_0x3be7a0);}logger[_0xd6e3('0x24')]('goggleTTS\x20path',_0x10ee24[_0xd6e3('0x2f')]('.')[0x0]);return _0x10ee24[_0xd6e3('0x2f')]('.')[0x0];});};exports[_0xd6e3('0x4a')]=function(_0x2055be,_0x2a25c6,_0x1192bc){return google[_0xd6e3('0x4b')](_0x2055be,_0x2a25c6,_0x1192bc)['then'](function(_0x369cff){logger['info'](_0x369cff[_0xd6e3('0x4c')]);return rp(_0x369cff);})['then'](function(_0x1f78a7){var _0x425446='';var _0x5c1093=0x0;try{fs[_0xd6e3('0x1c')](_0x2055be);}catch(_0x4e721a){logger['error'](_0x4e721a);}if(_0x1f78a7&&_0x1f78a7[_0xd6e3('0x4d')]){_0x425446=_0x1f78a7['results'][_0xd6e3('0x4e')](function(_0x25a0b6){return _0x25a0b6&&_0x25a0b6[_0xd6e3('0x4f')][0x0]&&_0x25a0b6[_0xd6e3('0x4f')][0x0][_0xd6e3('0x50')]?_0x25a0b6[_0xd6e3('0x4f')][0x0]['transcript']:'';})['join']('\x0a');_0x5c1093=_0x1f78a7[_0xd6e3('0x4d')][_0xd6e3('0x4e')](function(_0x42ccab){return _0x42ccab&&_0x42ccab['alternatives'][0x0]&&_0x42ccab[_0xd6e3('0x4f')][0x0][_0xd6e3('0x51')]?_0x42ccab[_0xd6e3('0x4f')][0x0][_0xd6e3('0x51')]:0x0;})[_0xd6e3('0x52')]('\x0a');}logger[_0xd6e3('0x24')](_0xd6e3('0x53'),_0x425446);logger[_0xd6e3('0x24')]('googleASR\x20confidence',_0x5c1093);return{'transcript':_0x425446,'confidence':_0x5c1093};})[_0xd6e3('0x54')](function(_0x107d61){logger[_0xd6e3('0x14')](_0xd6e3('0x55'),_0x107d61[_0xd6e3('0x18')],_0x107d61[_0xd6e3('0x56')],_0x107d61['message']);});};exports[_0xd6e3('0x57')]=function(_0x7fac2e,_0x558f81,_0x3219fe,_0x4d2267){var _0x10bc93=apiai(_0x558f81,{'language':_0x4d2267||'en'});return _0x10bc93['textRequest'](_0x3219fe,{'sessionId':md5(_0x7fac2e)})['then'](function(_0x3f01d0){logger[_0xd6e3('0x24')](JSON[_0xd6e3('0x42')](_0x3f01d0));return{'source':_0x3f01d0[_0xd6e3('0x58')][_0xd6e3('0x59')],'resolvedQuery':_0x3f01d0[_0xd6e3('0x58')]['resolvedQuery'],'action':_0x3f01d0[_0xd6e3('0x58')][_0xd6e3('0x5a')],'actionIncomplete':_0x3f01d0['result'][_0xd6e3('0x5b')],'speech':_0x3f01d0[_0xd6e3('0x58')][_0xd6e3('0x5c')][_0xd6e3('0x5d')],'score':_0x3f01d0['result']['score'],'statusCode':_0x3f01d0[_0xd6e3('0x5e')][_0xd6e3('0x5f')],'endConversation':_0x3f01d0[_0xd6e3('0x58')][_0xd6e3('0x60')][_0xd6e3('0x61')]||![],'isFallbackIntent':_0x3f01d0[_0xd6e3('0x58')]['metadata']['isFallbackIntent']};});};exports[_0xd6e3('0x62')]=function(_0x3db448,_0x253092,_0x215fcf,_0x91c324,_0x936667,_0x2eac44){var _0x401111=_0x91c324['replace'](/\\n/g,'\x0a');var _0x4c2bd7={'credentials':{'private_key':_0x401111,'client_email':_0x215fcf}};var _0x2b0053=new dialogflow[(_0xd6e3('0x63'))](_0x4c2bd7);var _0x322dc1=_0x2b0053['sessionPath'](_0x253092,md5(_0x3db448));var _0xf172f4={'session':_0x322dc1,'queryInput':{'text':{'text':_0x936667,'languageCode':_0x2eac44}}};return _0x2b0053[_0xd6e3('0x64')](_0xf172f4)[_0xd6e3('0x3c')](function(_0x347796){if(_0x347796&&_0x347796[_0xd6e3('0x65')]){logger[_0xd6e3('0x24')]('Dialogflow\x20V2\x20response:',JSON['stringify'](_0x347796));var _0xb54f90=_0x347796[0x0];if(_0xb54f90){var _0x2ba939={'action':_0xb54f90[_0xd6e3('0x66')]['action'],'allRequiredParamsPresent':_0xb54f90[_0xd6e3('0x66')][_0xd6e3('0x67')],'endConversation':_0xb54f90[_0xd6e3('0x66')]['diagnosticInfo']&&_0xb54f90[_0xd6e3('0x66')][_0xd6e3('0x68')][_0xd6e3('0x69')]?_0xb54f90['queryResult'][_0xd6e3('0x68')][_0xd6e3('0x69')][_0xd6e3('0x6a')][_0xd6e3('0x6b')]:![],'fulfillmentText':_0xb54f90[_0xd6e3('0x66')][_0xd6e3('0x6c')],'intentName':_0xb54f90[_0xd6e3('0x66')][_0xd6e3('0x6d')][_0xd6e3('0x56')],'intentDisplayName':_0xb54f90[_0xd6e3('0x66')][_0xd6e3('0x6d')][_0xd6e3('0x6e')],'isFallbackIntent':_0xb54f90[_0xd6e3('0x66')][_0xd6e3('0x6d')][_0xd6e3('0x6f')],'languageCode':_0xb54f90['queryResult']['languageCode'],'queryText':_0xb54f90['queryResult'][_0xd6e3('0x70')],'responseId':_0xb54f90[_0xd6e3('0x71')],'score':_0xb54f90[_0xd6e3('0x66')][_0xd6e3('0x72')],'speech':_0xb54f90[_0xd6e3('0x66')]['fulfillmentText'],'providerResponse':JSON[_0xd6e3('0x42')](_0x347796)};return _0x2ba939;}}});};exports[_0xd6e3('0x73')]=function(_0x14d387,_0x22347a,_0x278703,_0x2a8330){return tilde[_0xd6e3('0x4b')](_0x14d387,_0x22347a,_0x278703,_0x2a8330)[_0xd6e3('0x3c')](function(_0x17007c){try{fs[_0xd6e3('0x1c')](_0x14d387);}catch(_0x397c18){logger['error'](_0x397c18);}logger[_0xd6e3('0x24')](_0xd6e3('0x74'),_0x17007c[_0xd6e3('0x50')]);logger['info'](_0xd6e3('0x75'),_0x17007c[_0xd6e3('0x51')]);return _0x17007c;});};exports['awsPolly']=function(_0x5d909c,_0x1d57a7,_0x4bef42,_0x23226e,_0x4107ab,_0x7a913){var _0x37f207=path['resolve'](__dirname,_0xd6e3('0x28'),rs[_0xd6e3('0x29')](0x4)+_0xd6e3('0x49'));var _0x3170ae;return aws[_0xd6e3('0x76')](_0x5d909c,_0x1d57a7,_0x4bef42,_0x23226e,_0x4107ab,_0x7a913,_0x37f207)[_0xd6e3('0x3c')](function(){_0x3170ae=path[_0xd6e3('0x27')](__dirname,_0xd6e3('0x28'),rs[_0xd6e3('0x29')](0x4)+'.wav');return convertFile(_0x37f207,_0x3170ae);})[_0xd6e3('0x3c')](function(){try{fs[_0xd6e3('0x1c')](_0x37f207);fs[_0xd6e3('0x2d')](_0x3170ae,_0xd6e3('0x2e'));}catch(_0x18b51c){logger[_0xd6e3('0x14')](_0x18b51c);}return _0x3170ae[_0xd6e3('0x2f')]('.')[0x0];});};exports[_0xd6e3('0x77')]=function(_0x29fb6e,_0x4db779,_0x5e3876,_0x4b6178,_0x4461cc,_0x54851d){return aws[_0xd6e3('0x78')](_0x29fb6e,_0x4db779,_0x5e3876,_0x4b6178,_0x4461cc,_0x54851d)[_0xd6e3('0x3c')](function(_0x7c66d){logger['info'](JSON['stringify'](_0x7c66d));return _0x7c66d;});};exports[_0xd6e3('0x79')]=function(_0x2d0f0f,_0x518d77,_0x1b9c6a,_0x221ff8){var _0x4f88da=util[_0xd6e3('0x7a')](_0xd6e3('0x7b'),ISPEECH_API,_0x2d0f0f,encodeURIComponent(_0x518d77),_0x1b9c6a,_0x221ff8);var _0x28348e=path[_0xd6e3('0x27')](__dirname,_0xd6e3('0x28'),rs[_0xd6e3('0x29')](0x4)+_0xd6e3('0x49'));var _0x45304f;return downloadFile(_0x4f88da,_0x28348e)[_0xd6e3('0x3c')](function(){_0x45304f=path[_0xd6e3('0x27')](__dirname,_0xd6e3('0x28'),rs['generate'](0x4)+_0xd6e3('0x2a'));return convertFile(_0x28348e,_0x45304f);})[_0xd6e3('0x3c')](function(){try{fs[_0xd6e3('0x1c')](_0x28348e);fs[_0xd6e3('0x2d')](_0x45304f,'777');}catch(_0x31ab05){logger[_0xd6e3('0x14')](_0x31ab05);}return _0x45304f[_0xd6e3('0x2f')]('.')[0x0];});};exports[_0xd6e3('0x7c')]=function(_0x5a9fb1,_0x431799,_0x367c74,_0x36b908){var _0x50f2eb=util[_0xd6e3('0x7a')]('%s?apikey=%s&action=recognize&locale=%s&content-type=audio/x-wav&audio=%s&%s',ISPEECH_API,_0x431799,_0x367c74,base64Encode(_0x5a9fb1),_0x36b908?util[_0xd6e3('0x7a')](_0xd6e3('0x7d'),encodeURIComponent(_0x36b908)):_0xd6e3('0x7e'));return uploadFile(_0x50f2eb)[_0xd6e3('0x3c')](function(_0x45db13){return querystring['parse'](_0x45db13);});};exports[_0xd6e3('0x7f')]=function(_0x387223,_0x23fc5b){return sestek[_0xd6e3('0x80')](_0x387223,_0x23fc5b)[_0xd6e3('0x3c')](function(_0x3aa316){logger['info'](JSON[_0xd6e3('0x42')](_0x3aa316));var _0x5d8c25={'speech':_0x3aa316['text'],'action':_0x3aa316[_0xd6e3('0x81')]?_0x3aa316[_0xd6e3('0x81')]['CustomAction']:undefined,'actiondata':_0x3aa316[_0xd6e3('0x81')]?_0x3aa316[_0xd6e3('0x81')][_0xd6e3('0x82')]:undefined};if(_0x3aa316['channelData']&&_0x3aa316[_0xd6e3('0x81')][_0xd6e3('0x83')]){return base64Decode(_0x3aa316[_0xd6e3('0x81')][_0xd6e3('0x83')][_0xd6e3('0x84')],path[_0xd6e3('0x27')](__dirname,'tmp',rs['generate'](0x4)+_0xd6e3('0x2a')))['then'](function(_0x2ea676){_0x5d8c25[_0xd6e3('0x85')]=_0x2ea676;return _0x5d8c25;});}return _0x5d8c25;});};exports['dirName']=function(){return __dirname;};
\ No newline at end of file
index b41b6a1..515e779 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xfe70=['./nda','exports'];(function(_0x3039a6,_0x4186f4){var _0x58cb67=function(_0x22b7cb){while(--_0x22b7cb){_0x3039a6['push'](_0x3039a6['shift']());}};_0x58cb67(++_0x4186f4);}(_0xfe70,0xc2));var _0x0fe7=function(_0x587ba2,_0x42eb40){_0x587ba2=_0x587ba2-0x0;var _0x50ec73=_0xfe70[_0x587ba2];return _0x50ec73;};var nda=require(_0x0fe7('0x0'));module[_0x0fe7('0x1')]={'nda':nda};
\ No newline at end of file
+var _0x0ead=['./nda','exports'];(function(_0x22d3f9,_0x264524){var _0x4749e7=function(_0x4bb53d){while(--_0x4bb53d){_0x22d3f9['push'](_0x22d3f9['shift']());}};_0x4749e7(++_0x264524);}(_0x0ead,0x1b6));var _0xd0ea=function(_0x1fab2b,_0x2d772e){_0x1fab2b=_0x1fab2b-0x0;var _0x40926d=_0x0ead[_0x1fab2b];return _0x40926d;};var nda=require(_0xd0ea('0x0'));module[_0xd0ea('0x1')]={'nda':nda};
\ No newline at end of file
index cd0d364..4550eaa 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x14b7=['url','../../../../../config/logger','agi','POST','resolve','password','username','ndassistant_url','ndaactivity_type','message','Nda','callerid','extension','text','access_token','project','body','channelData','AudioOutputSettings','audio/wav','custom_action','CustomAction','custom_action_data','stringify','request-promise'];(function(_0x218a37,_0x279f82){var _0x5a93d6=function(_0x1297ac){while(--_0x1297ac){_0x218a37['push'](_0x218a37['shift']());}};_0x5a93d6(++_0x279f82);}(_0x14b7,0x144));var _0x714b=function(_0x2f6af4,_0x2875fc){_0x2f6af4=_0x2f6af4-0x0;var _0xa5f3be=_0x14b7[_0x2f6af4];return _0xa5f3be;};'use strict';var rp=require(_0x714b('0x0'));var url=require(_0x714b('0x1'));var logger=require(_0x714b('0x2'))(_0x714b('0x3'));module['exports']=function(_0x136e8b,_0x2e5367){var _0x40d423={'method':_0x714b('0x4'),'uri':url[_0x714b('0x5')](_0x2e5367['ndauth_url'],'/token'),'form':{'grant_type':_0x714b('0x6'),'username':_0x2e5367[_0x714b('0x7')],'password':_0x2e5367[_0x714b('0x6')]},'json':!![]};return rp(_0x40d423)['then'](function(_0x39b5e4){var _0x26489c={'method':_0x714b('0x4'),'uri':url[_0x714b('0x5')](_0x2e5367[_0x714b('0x8')],'/api/NaturalDialogAssistant/v1/Run'),'body':{'type':_0x2e5367[_0x714b('0x9')]||_0x714b('0xa'),'channelId':_0x714b('0xb'),'conversation':{'id':_0x136e8b['uniqueid']},'from':{'id':_0x136e8b[_0x714b('0xc')],'name':_0x136e8b['calleridname']},'recipient':{'id':_0x136e8b['dnid'],'name':_0x136e8b[_0x714b('0xd')]},'text':_0x2e5367[_0x714b('0xe')],'channelData':{}},'headers':{'Authorization':'Bearer\x20'+_0x39b5e4[_0x714b('0xf')]},'json':!![]};if(_0x2e5367[_0x714b('0x10')]){_0x26489c[_0x714b('0x11')][_0x714b('0x12')]['ProjectName']=_0x2e5367[_0x714b('0x10')];}if(_0x2e5367['ndagenerate_audio']=='1'){_0x26489c[_0x714b('0x11')][_0x714b('0x12')][_0x714b('0x13')]={'Generate':!![],'PutInStructuredPart':![],'ExpectedFormat':_0x714b('0x14')};}if(_0x2e5367[_0x714b('0x15')]){_0x26489c[_0x714b('0x11')][_0x714b('0x12')][_0x714b('0x16')]=_0x2e5367[_0x714b('0x15')];if(_0x2e5367[_0x714b('0x17')]){_0x26489c[_0x714b('0x11')][_0x714b('0x12')]['CustomActionData']=_0x2e5367[_0x714b('0x17')];}}logger['info'](JSON[_0x714b('0x18')](_0x26489c));return rp(_0x26489c);});};
\ No newline at end of file
+var _0x9a62=['project','ndagenerate_audio','AudioOutputSettings','audio/wav','CustomAction','custom_action_data','CustomActionData','info','stringify','url','../../../../../config/logger','exports','POST','resolve','ndauth_url','/token','password','username','/api/NaturalDialogAssistant/v1/Run','ndaactivity_type','message','Nda','uniqueid','callerid','calleridname','extension','text','body','channelData'];(function(_0x184319,_0x282aee){var _0x46c6a4=function(_0x44c0b1){while(--_0x44c0b1){_0x184319['push'](_0x184319['shift']());}};_0x46c6a4(++_0x282aee);}(_0x9a62,0x1bc));var _0x29a6=function(_0x57b54c,_0x54ce0d){_0x57b54c=_0x57b54c-0x0;var _0x59cc19=_0x9a62[_0x57b54c];return _0x59cc19;};'use strict';var rp=require('request-promise');var url=require(_0x29a6('0x0'));var logger=require(_0x29a6('0x1'))('agi');module[_0x29a6('0x2')]=function(_0x2d49a0,_0x585d58){var _0x58a8b3={'method':_0x29a6('0x3'),'uri':url[_0x29a6('0x4')](_0x585d58[_0x29a6('0x5')],_0x29a6('0x6')),'form':{'grant_type':_0x29a6('0x7'),'username':_0x585d58[_0x29a6('0x8')],'password':_0x585d58[_0x29a6('0x7')]},'json':!![]};return rp(_0x58a8b3)['then'](function(_0x5b325a){var _0x72dde2={'method':_0x29a6('0x3'),'uri':url['resolve'](_0x585d58['ndassistant_url'],_0x29a6('0x9')),'body':{'type':_0x585d58[_0x29a6('0xa')]||_0x29a6('0xb'),'channelId':_0x29a6('0xc'),'conversation':{'id':_0x2d49a0[_0x29a6('0xd')]},'from':{'id':_0x2d49a0[_0x29a6('0xe')],'name':_0x2d49a0[_0x29a6('0xf')]},'recipient':{'id':_0x2d49a0['dnid'],'name':_0x2d49a0[_0x29a6('0x10')]},'text':_0x585d58[_0x29a6('0x11')],'channelData':{}},'headers':{'Authorization':'Bearer\x20'+_0x5b325a['access_token']},'json':!![]};if(_0x585d58['project']){_0x72dde2[_0x29a6('0x12')][_0x29a6('0x13')]['ProjectName']=_0x585d58[_0x29a6('0x14')];}if(_0x585d58[_0x29a6('0x15')]=='1'){_0x72dde2['body']['channelData'][_0x29a6('0x16')]={'Generate':!![],'PutInStructuredPart':![],'ExpectedFormat':_0x29a6('0x17')};}if(_0x585d58['custom_action']){_0x72dde2[_0x29a6('0x12')][_0x29a6('0x13')][_0x29a6('0x18')]=_0x585d58['custom_action'];if(_0x585d58[_0x29a6('0x19')]){_0x72dde2[_0x29a6('0x12')][_0x29a6('0x13')][_0x29a6('0x1a')]=_0x585d58[_0x29a6('0x19')];}}logger[_0x29a6('0x1b')](JSON[_0x29a6('0x1c')](_0x72dde2));return rp(_0x72dde2);});};
\ No newline at end of file
index 9f381a8..fb497e1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa832=['exports'];(function(_0x534a4e,_0x3796dd){var _0x477e97=function(_0x20a944){while(--_0x20a944){_0x534a4e['push'](_0x534a4e['shift']());}};_0x477e97(++_0x3796dd);}(_0xa832,0x101));var _0x2a83=function(_0x5bf420,_0x2d068d){_0x5bf420=_0x5bf420-0x0;var _0x1c5255=_0xa832[_0x5bf420];return _0x1c5255;};'use strict';var asr=require('./lib/api');module[_0x2a83('0x0')]=function(_0x54ece0,_0x5eb372,_0x2c7bda,_0x235dde){return asr(_0x54ece0,_0x5eb372,_0x2c7bda,_0x235dde);};
\ No newline at end of file
+var _0xe165=['./lib/api'];(function(_0x4abc8f,_0xef597d){var _0x5d7939=function(_0x145f23){while(--_0x145f23){_0x4abc8f['push'](_0x4abc8f['shift']());}};_0x5d7939(++_0xef597d);}(_0xe165,0x11c));var _0x5e16=function(_0x184eaa,_0x4843da){_0x184eaa=_0x184eaa-0x0;var _0x5c247c=_0xe165[_0x184eaa];return _0x5c247c;};'use strict';var asr=require(_0x5e16('0x0'));module['exports']=function(_0x140743,_0x4e1678,_0xb0d955,_0x313c40){return asr(_0x140743,_0x4e1678,_0xb0d955,_0x313c40);};
\ No newline at end of file
index 3a0051c..9daba08 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x12c6=['EOS','error','Tilde\x20ASR\x20send\x20error','parse','status','result','Tilde\x20ASR\x20hypoteses','hypotheses','likelihood','terminate','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','Close\x20Tilde\x20ASR\x20socket','Error\x20Tilde\x20ASR\x20socket','isNil','isObject','open','message','bluebird','lodash','moment','agi','exports','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','update','digest','hex','info','Open\x20Tilde\x20ASR\x20socket','unix','stringify','data','close','send'];(function(_0x347399,_0x42bbda){var _0x24e7be=function(_0x33fdc){while(--_0x33fdc){_0x347399['push'](_0x347399['shift']());}};_0x24e7be(++_0x42bbda);}(_0x12c6,0x1d8));var _0x612c=function(_0x40a045,_0x516f0e){_0x40a045=_0x40a045-0x0;var _0x1a687c=_0x12c6[_0x40a045];return _0x1a687c;};'use strict';var BPromise=require(_0x612c('0x0'));var _=require(_0x612c('0x1'));var fs=require('fs');var WebSocket=require('ws');var moment=require(_0x612c('0x2'));var crypto=require('crypto');var logger=require('../../../../../../config/logger')(_0x612c('0x3'));module[_0x612c('0x4')]=function(_0x495655,_0xc6547f,_0x5d179d,_0x13b565){return new BPromise(function(_0xb0ea00,_0x42e6d9){logger['info'](_0x612c('0x5'),_0x13b565||_0x612c('0x6'));var _0x2d6922=new WebSocket(_0x13b565||_0x612c('0x6'),{'perMessageDeflate':![]});var _0x803d1b='';var _0x211182='0';var _0x1deef5='1';var _0x595676=_0x612c('0x7');function _0x58d54c(_0x9d50be){var _0x10eb0f=crypto[_0x612c('0x8')](_0x612c('0x9'));_0x10eb0f[_0x612c('0xa')](_0x9d50be);return _0x10eb0f[_0x612c('0xb')](_0x612c('0xc'));}function _0x3b8496(){try{logger[_0x612c('0xd')](_0x612c('0xe'));var _0x4f09cc=moment()[_0x612c('0xf')]();var _0x1bb99d=_0x58d54c(_0x4f09cc+_0xc6547f+_0x5d179d);_0x2d6922['send'](JSON[_0x612c('0x10')]({'appID':_0xc6547f,'timestamp':_0x4f09cc,'appKey':_0x1bb99d}));var _0x2baca4=fs['createReadStream'](_0x495655);_0x2baca4['on'](_0x612c('0x11'),function(_0x1a2d79){_0x2d6922['send'](_0x1a2d79);});_0x2baca4['on'](_0x612c('0x12'),function(){_0x2d6922[_0x612c('0x13')](_0x612c('0x14'));});}catch(_0x10b670){logger[_0x612c('0x15')](_0x612c('0x16'),JSON[_0x612c('0x10')](_0x10b670));_0x2d6922['terminate']();}}function _0x40a255(_0x4c8873){try{if(_0x4c8873){var _0x50f974=JSON[_0x612c('0x17')](_0x4c8873);switch(_0x50f974[_0x612c('0x18')]){case 0x0:if(_0x50f974['result']){if(_0x50f974[_0x612c('0x19')]['final']){logger[_0x612c('0xd')](_0x612c('0x1a'),JSON[_0x612c('0x10')](_0x50f974[_0x612c('0x19')]['hypotheses']));_0x803d1b=_0x50f974[_0x612c('0x19')][_0x612c('0x1b')][0x0]['transcript'];_0x211182=_0x50f974['result'][_0x612c('0x1b')][0x0][_0x612c('0x1c')];_0x1deef5='0';_0x595676='Success.';_0x2d6922[_0x612c('0x1d')]();}}break;case 0x1:logger[_0x612c('0xd')]('No\x20speech.\x20Sent\x20when\x20the\x20incoming\x20audio\x20contains\x20a\x20large\x20portion\x20of\x20silence\x20or\x20non-speech');_0x1deef5='1';_0x595676=_0x612c('0x7');break;case 0x2:logger[_0x612c('0xd')](_0x612c('0x1e'));_0x1deef5='2';_0x595676=_0x612c('0x1e');break;case 0x9:logger[_0x612c('0xd')]('Not\x20available.\x20Max\x20load\x20limit\x20reached.');_0x1deef5='9';_0x595676=_0x612c('0x1f');break;case 0xa:logger['info'](_0x612c('0x20'));_0x1deef5='10';_0x595676=_0x612c('0x20');break;case 0xb:logger[_0x612c('0xd')]('All\x20recognition\x20workers\x20are\x20currently\x20in\x20use\x20and\x20real-time\x20recognition\x20is\x20not\x20possible.');_0x1deef5='11';_0x595676=_0x612c('0x21');}}}catch(_0x3bd0fe){logger[_0x612c('0x15')](_0x612c('0x22'),JSON[_0x612c('0x10')](_0x3bd0fe));_0x2d6922['terminate']();}}function _0x34a850(){logger[_0x612c('0xd')](_0x612c('0x23'));_0xb0ea00({'transcript':_0x803d1b,'confidence':_0x211182,'status':_0x1deef5,'status_message':_0x595676});}function _0x21b37a(_0x1ebfe9){logger[_0x612c('0x15')](_0x612c('0x24'));if(!_[_0x612c('0x25')](_0x1ebfe9)){logger[_0x612c('0x15')](_[_0x612c('0x26')](_0x1ebfe9)?JSON[_0x612c('0x10')](_0x1ebfe9):_0x1ebfe9);}}_0x2d6922['on'](_0x612c('0x27'),_0x3b8496);_0x2d6922['on'](_0x612c('0x28'),_0x40a255);_0x2d6922['on'](_0x612c('0x12'),_0x34a850);_0x2d6922['on'](_0x612c('0x15'),_0x21b37a);});};
\ No newline at end of file
+var _0x11c2=['send','stringify','createReadStream','data','close','error','Tilde\x20ASR\x20send\x20error','terminate','parse','result','final','Tilde\x20ASR\x20hypoteses','hypotheses','transcript','likelihood','Success.','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.','Error\x20Tilde\x20ASR\x20socket','isNil','isObject','open','message','bluebird','lodash','moment','crypto','agi','exports','info','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','update','hex','Open\x20Tilde\x20ASR\x20socket','unix'];(function(_0x1a6e19,_0x3d67f0){var _0x122bc2=function(_0x2ae2dc){while(--_0x2ae2dc){_0x1a6e19['push'](_0x1a6e19['shift']());}};_0x122bc2(++_0x3d67f0);}(_0x11c2,0xbd));var _0x211c=function(_0x5b1f5e,_0x4a0667){_0x5b1f5e=_0x5b1f5e-0x0;var _0xa97ade=_0x11c2[_0x5b1f5e];return _0xa97ade;};'use strict';var BPromise=require(_0x211c('0x0'));var _=require(_0x211c('0x1'));var fs=require('fs');var WebSocket=require('ws');var moment=require(_0x211c('0x2'));var crypto=require(_0x211c('0x3'));var logger=require('../../../../../../config/logger')(_0x211c('0x4'));module[_0x211c('0x5')]=function(_0x4c5625,_0x5f078b,_0xc382ab,_0x33fd72){return new BPromise(function(_0x5871c2,_0x2119cf){logger[_0x211c('0x6')](_0x211c('0x7'),_0x33fd72||_0x211c('0x8'));var _0x33d5f9=new WebSocket(_0x33fd72||_0x211c('0x8'),{'perMessageDeflate':![]});var _0x52bca3='';var _0x48751c='0';var _0x2f3810='1';var _0x3137b7=_0x211c('0x9');function _0x1021e8(_0x188795){var _0x451037=crypto[_0x211c('0xa')](_0x211c('0xb'));_0x451037[_0x211c('0xc')](_0x188795);return _0x451037['digest'](_0x211c('0xd'));}function _0x1084d1(){try{logger[_0x211c('0x6')](_0x211c('0xe'));var _0x2117d1=moment()[_0x211c('0xf')]();var _0x14d529=_0x1021e8(_0x2117d1+_0x5f078b+_0xc382ab);_0x33d5f9[_0x211c('0x10')](JSON[_0x211c('0x11')]({'appID':_0x5f078b,'timestamp':_0x2117d1,'appKey':_0x14d529}));var _0xed72fd=fs[_0x211c('0x12')](_0x4c5625);_0xed72fd['on'](_0x211c('0x13'),function(_0xfb10b9){_0x33d5f9['send'](_0xfb10b9);});_0xed72fd['on'](_0x211c('0x14'),function(){_0x33d5f9[_0x211c('0x10')]('EOS');});}catch(_0x16b65a){logger[_0x211c('0x15')](_0x211c('0x16'),JSON[_0x211c('0x11')](_0x16b65a));_0x33d5f9[_0x211c('0x17')]();}}function _0x35aa98(_0x25b891){try{if(_0x25b891){var _0x3d3eec=JSON[_0x211c('0x18')](_0x25b891);switch(_0x3d3eec['status']){case 0x0:if(_0x3d3eec['result']){if(_0x3d3eec[_0x211c('0x19')][_0x211c('0x1a')]){logger['info'](_0x211c('0x1b'),JSON[_0x211c('0x11')](_0x3d3eec[_0x211c('0x19')][_0x211c('0x1c')]));_0x52bca3=_0x3d3eec[_0x211c('0x19')][_0x211c('0x1c')][0x0][_0x211c('0x1d')];_0x48751c=_0x3d3eec['result']['hypotheses'][0x0][_0x211c('0x1e')];_0x2f3810='0';_0x3137b7=_0x211c('0x1f');_0x33d5f9[_0x211c('0x17')]();}}break;case 0x1:logger[_0x211c('0x6')](_0x211c('0x9'));_0x2f3810='1';_0x3137b7=_0x211c('0x9');break;case 0x2:logger['info'](_0x211c('0x20'));_0x2f3810='2';_0x3137b7='Aborted.\x20Recognition\x20was\x20aborted\x20for\x20some\x20reason.';break;case 0x9:logger[_0x211c('0x6')](_0x211c('0x21'));_0x2f3810='9';_0x3137b7=_0x211c('0x21');break;case 0xa:logger[_0x211c('0x6')]('Authentication\x20failed.');_0x2f3810='10';_0x3137b7=_0x211c('0x22');break;case 0xb:logger['info'](_0x211c('0x23'));_0x2f3810='11';_0x3137b7=_0x211c('0x23');}}}catch(_0xf5147d){logger[_0x211c('0x15')]('Tilde\x20ASR\x20parse\x20error',JSON[_0x211c('0x11')](_0xf5147d));_0x33d5f9[_0x211c('0x17')]();}}function _0x55d4fd(){logger['info']('Close\x20Tilde\x20ASR\x20socket');_0x5871c2({'transcript':_0x52bca3,'confidence':_0x48751c,'status':_0x2f3810,'status_message':_0x3137b7});}function _0x5ba789(_0x891164){logger[_0x211c('0x15')](_0x211c('0x24'));if(!_[_0x211c('0x25')](_0x891164)){logger[_0x211c('0x15')](_[_0x211c('0x26')](_0x891164)?JSON[_0x211c('0x11')](_0x891164):_0x891164);}}_0x33d5f9['on'](_0x211c('0x27'),_0x1084d1);_0x33d5f9['on'](_0x211c('0x28'),_0x35aa98);_0x33d5f9['on'](_0x211c('0x14'),_0x55d4fd);_0x33d5f9['on']('error',_0x5ba789);});};
\ No newline at end of file
index 657e40d..83b78e0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x56be=['./asr','exports'];(function(_0x3b589e,_0x5f2024){var _0x48ddfa=function(_0x5cf266){while(--_0x5cf266){_0x3b589e['push'](_0x3b589e['shift']());}};_0x48ddfa(++_0x5f2024);}(_0x56be,0x120));var _0xe56b=function(_0x44c3c3,_0x339950){_0x44c3c3=_0x44c3c3-0x0;var _0x48d269=_0x56be[_0x44c3c3];return _0x48d269;};var asr=require(_0xe56b('0x0'));module[_0xe56b('0x1')]={'asr':asr};
\ No newline at end of file
+var _0x47de=['./asr','exports'];(function(_0x4edb65,_0x2b2b5a){var _0x3ce96e=function(_0x3f211f){while(--_0x3f211f){_0x4edb65['push'](_0x4edb65['shift']());}};_0x3ce96e(++_0x2b2b5a);}(_0x47de,0xdc));var _0xe47d=function(_0x44657a,_0xce7fb2){_0x44657a=_0x44657a-0x0;var _0x22dc59=_0x47de[_0x44657a];return _0x22dc59;};var asr=require(_0xe47d('0x0'));module[_0xe47d('0x1')]={'asr':asr};
\ No newline at end of file
index acbbad3..f3efc55 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3b2e=['listening','connection','emit','E_AGI_SERVER_ERROR','E_AGI_SERVER_VOICE_DISABLED','destroy','E_AGI_SERVER_MAXCONNECTION','ready','code','close','E_AGI_SERVER_CLOSE','nextTick','exports','util','net','EventEmitter','call','error','E_AGI_ARGUMENT_PORT','createServer'];(function(_0x458363,_0x1675db){var _0x4d0290=function(_0x22960f){while(--_0x22960f){_0x458363['push'](_0x458363['shift']());}};_0x4d0290(++_0x1675db);}(_0x3b2e,0x125));var _0xe3b2=function(_0x89a001,_0x3a9a8c){_0x89a001=_0x89a001-0x0;var _0x5f3ec2=_0x3b2e[_0x89a001];return _0x5f3ec2;};'use strict';var util=require(_0xe3b2('0x0'));var net=require(_0xe3b2('0x1'));var EventEmitter=require('events')[_0xe3b2('0x2')];var AGIError=require('./error');var AGIChannel=require('./channel');var AGIServer=function(_0x4d725f,_0x3e2bff,_0x3bc8f0){var _0x3d8993=this,_0x4d725f=_0x4d725f||0x11dd,_0x3e2bff=_0x3e2bff||'127.0.0.1',_0x3bd19a=null,_0x527758=0x0;EventEmitter[_0xe3b2('0x3')](_0x3d8993);function _0x182770(){if(!_0x4d725f){_0x3d8993['emit'](_0xe3b2('0x4'),new AGIError(_0xe3b2('0x5')));return![];}_0x3bd19a=net[_0xe3b2('0x6')]();_0x3bd19a['listen'](_0x4d725f,_0x3e2bff);_0x3bd19a['on']('listening',function(){_0x3d8993['emit'](_0xe3b2('0x7'));});_0x3bd19a['on'](_0xe3b2('0x8'),function(_0x523efe){_0x3bd19a['getConnections'](function(_0x522d75,_0x19e935){if(_0x522d75){_0x3d8993[_0xe3b2('0x9')](_0xe3b2('0x4'),new AGIError(_0xe3b2('0xa'),_0x522d75));}else if(_0x3bc8f0&&_0x3bc8f0<0x0){_0x3d8993[_0xe3b2('0x9')](_0xe3b2('0x4'),new AGIError(_0xe3b2('0xb')));_0x523efe[_0xe3b2('0xc')]();}else if(_0x3bc8f0&&_0x3bc8f0>0x0&&_0x3bc8f0<_0x19e935){_0x527758+=0x1;_0x3d8993['emit'](_0xe3b2('0x4'),new AGIError(_0xe3b2('0xd'),_0x527758));_0x523efe[_0xe3b2('0xc')]();}else{var _0x5d2aba=new AGIChannel(_0x523efe);_0x5d2aba['on'](_0xe3b2('0xe'),function(){_0x3d8993[_0xe3b2('0x9')](_0xe3b2('0x8'),_0x5d2aba);});}});});_0x3bd19a['on'](_0xe3b2('0x4'),function(_0x4808cd){_0x3d8993[_0xe3b2('0x9')](_0xe3b2('0x4'),new AGIError('E_AGI_SERVER_ERROR',_0x4808cd[_0xe3b2('0xf')]));});_0x3bd19a['on'](_0xe3b2('0x10'),function(){_0x3d8993[_0xe3b2('0x9')](_0xe3b2('0x10'),new AGIError(_0xe3b2('0x11')));});}process[_0xe3b2('0x12')](function(){_0x182770();});};util['inherits'](AGIServer,EventEmitter);module[_0xe3b2('0x13')]=function(_0x956c01,_0x252951,_0x37998b){return new AGIServer(_0x956c01,_0x252951,_0x37998b);};
\ No newline at end of file
+var _0x3dc7=['connection','getConnections','E_AGI_SERVER_VOICE_DISABLED','destroy','E_AGI_SERVER_MAXCONNECTION','ready','code','close','nextTick','inherits','util','EventEmitter','./error','./channel','127.0.0.1','call','emit','error','E_AGI_ARGUMENT_PORT','listen','listening'];(function(_0x3216c6,_0x4f1cb7){var _0x156549=function(_0x16db03){while(--_0x16db03){_0x3216c6['push'](_0x3216c6['shift']());}};_0x156549(++_0x4f1cb7);}(_0x3dc7,0x130));var _0x73dc=function(_0x394f64,_0x39c44f){_0x394f64=_0x394f64-0x0;var _0x59e0f1=_0x3dc7[_0x394f64];return _0x59e0f1;};'use strict';var util=require(_0x73dc('0x0'));var net=require('net');var EventEmitter=require('events')[_0x73dc('0x1')];var AGIError=require(_0x73dc('0x2'));var AGIChannel=require(_0x73dc('0x3'));var AGIServer=function(_0x39c57f,_0x2be234,_0xc390db){var _0x35ce6d=this,_0x39c57f=_0x39c57f||0x11dd,_0x2be234=_0x2be234||_0x73dc('0x4'),_0x16d6fe=null,_0x3aa7bf=0x0;EventEmitter[_0x73dc('0x5')](_0x35ce6d);function _0xd1171b(){if(!_0x39c57f){_0x35ce6d[_0x73dc('0x6')](_0x73dc('0x7'),new AGIError(_0x73dc('0x8')));return![];}_0x16d6fe=net['createServer']();_0x16d6fe[_0x73dc('0x9')](_0x39c57f,_0x2be234);_0x16d6fe['on'](_0x73dc('0xa'),function(){_0x35ce6d[_0x73dc('0x6')](_0x73dc('0xa'));});_0x16d6fe['on'](_0x73dc('0xb'),function(_0x5cd04b){_0x16d6fe[_0x73dc('0xc')](function(_0x139ca8,_0x149881){if(_0x139ca8){_0x35ce6d[_0x73dc('0x6')](_0x73dc('0x7'),new AGIError('E_AGI_SERVER_ERROR',_0x139ca8));}else if(_0xc390db&&_0xc390db<0x0){_0x35ce6d[_0x73dc('0x6')](_0x73dc('0x7'),new AGIError(_0x73dc('0xd')));_0x5cd04b[_0x73dc('0xe')]();}else if(_0xc390db&&_0xc390db>0x0&&_0xc390db<_0x149881){_0x3aa7bf+=0x1;_0x35ce6d[_0x73dc('0x6')]('error',new AGIError(_0x73dc('0xf'),_0x3aa7bf));_0x5cd04b[_0x73dc('0xe')]();}else{var _0x460130=new AGIChannel(_0x5cd04b);_0x460130['on'](_0x73dc('0x10'),function(){_0x35ce6d[_0x73dc('0x6')]('connection',_0x460130);});}});});_0x16d6fe['on']('error',function(_0x1c844b){_0x35ce6d[_0x73dc('0x6')](_0x73dc('0x7'),new AGIError('E_AGI_SERVER_ERROR',_0x1c844b[_0x73dc('0x11')]));});_0x16d6fe['on'](_0x73dc('0x12'),function(){_0x35ce6d[_0x73dc('0x6')]('close',new AGIError('E_AGI_SERVER_CLOSE'));});}process[_0x73dc('0x13')](function(){_0xd1171b();});};util[_0x73dc('0x14')](AGIServer,EventEmitter);module['exports']=function(_0x372048,_0x5601a0,_0x5eae4d){return new AGIServer(_0x372048,_0x5601a0,_0x5eae4d);};
\ No newline at end of file
index 8614f87..b9c62fc 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x98ce=['Wait\x20%s\x20seconds\x20before\x20answer','Enter\x20in\x20CALLBACK\x20(%s)\x20block','delay','add','minutes','createCmContact','custom_app','Enter\x20in\x20CUSTOM\x20APP\x20(%s)\x20block','application','Executed\x20command\x20%s\x20%s','lumenvoxtts','Enter\x20in\x20LUMENVOXTTS\x20(%s)\x20block','MRCPSynth','sestektts','Enter\x20in\x20SESTEKTTS\x20(%s)\x20block','LUMENVOX_ASR_TRANSCRIPT','sestekasr','Enter\x20in\x20SESTEKASR\x20(%s)\x20block','SESTEK_ASR_TRANSCRIPT','SESTEK_ASR_INSTANCE','database','Enter\x20in\x20DATABASE\x20(%s)\x20block','no\x20database\x20selected','getSquareOdbc','query:\x20%s','variable_id','no\x20variable\x20selected\x20for\x20the\x20result','forEach','keys','%s[%s][%s]','setVariable','%s_ROWS_COUNT','dial','debug','no\x20user\x20selected','getUser','sip_id','no\x20user\x20found','opts','Executed\x20command\x20%s','dialogflow','no\x20key\x20configured','Trying\x20Dialogflow:\x20%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','Trying\x20DialogflowV2:\x20%s','providerResponse','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','Trying\x20SestekNDA:\x20%s','SESTEK_NDA_%s','audiofile','Sestek\x20NDA\x20%s\x20file\x20created','.wav','SestekNDA\x20Result\x20%s','SestekNDA\x20is\x20unreachable','end','Enter\x20in\x20END\x20(%s)\x20block','ext_dial','Enter\x20in\x20EXTERNAL\x20DIAL\x20(%s)\x20block','trunk_id','no\x20trunk\x20selected','getTrunk','no\x20trunk\x20found','DIAL','phone','finally','Enter\x20in\x20FINALLY\x20(%s)\x20block','Enter\x20in\x20GETDIGITS\x20(%s)\x20block','file_id','getSound','no\x20file\x20audio\x20found','getData','response','test','mindigit','maxdigit','no\x20variable\x20found','hiddendigitsnum','generate','hiddendigitspos','first','substr','Enter\x20in\x20GETSECRETDIGITS\x20(%s)\x20block','Enter\x20in\x20GOAL\x20(%s)\x20block','goalname','GOAL\x20%s','awspolly','[AGI]\x20Enter\x20in\x20AWSPOLLY\x20(%s)\x20block','no\x20valid\x20credentials\x20configured','awsPolly','aws\x20Polly\x20%s\x20file\x20created','streamFile','unlink','aws\x20Polly\x20is\x20unreachable','awslex','aws_bot_name','no\x20bot\x20name\x20configured','AWS_LEX_%s','amazonlex','Amazon\x20Lex\x20Result\x20%s','googleasr','Enter\x20in\x20GOOGLEASR\x20(%s)\x20block\x20%s','wav','%s/recordings/%s','beep','NOBEEP','recordFile','intKey','GOOGLE_ASR_%s','GoogleASR\x20Result\x20%s','tildeasr','no\x20appsecret\x20configured','tilde\x20%s\x20file\x20created','TildeASR\x20Result\x20%s','gotoc','Enter\x20in\x20GOTO\x20(%s)\x20block','context','priority','gotoif','condition','no\x20condition\x20configured','true','false','gotoiftime','Enter\x20in\x20GOTOIFTIME\x20(%s)\x20block','no\x20interval\x20configured','interval_id','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','IspeechASR\x20Result\x20%s','ispeechtts','Enter\x20in\x20ISPEECHTTS\x20(%s)\x20block','Trying\x20ispeech\x20TTS\x20%s','ispeech\x20%s\x20file\x20created','ispeech\x20TTS\x20is\x20unreachable','login','findBy','no\x20find\x20by\x20configured','FIND\x20AGENT\x20%s\x20BY\x20%s','AGENT\x20%s\x20FOUND\x20BY','AGENT\x20%s\x20NOT\x20FOUND\x20BY','logout','Enter\x20in\x20LOGOUT\x20(%s)\x20block','math','Enter\x20in\x20MATH\x20(%s)\x20block','operation','%s[%s]','variable\x20%s[key]\x20set','Enter\x20in\x20MENU\x20(%s)\x20block','no\x20file\x20audio\x20selected','digit','Enter\x20in\x20NOOP\x20(%s)\x20block','output','pause','Enter\x20in\x20PAUSE\x20(%s)\x20block','pause_id','success','failure','playback','Enter\x20in\x20PLAYBACK\x20(%s)\x20block','PLAYBACK','queue','queue_id','no\x20queue\x20selected','no\x20queue\x20found','XMCS-QUEUE','toLowerCase','agi','macro','gosub','QUEUE','Enter\x20in\x20RECORD\x20(%s)\x20block','createSquareRecording','RECORDING_SAVENAME','escape_digits','restapi','Response:','no\x20variable\x20selected\x20for\x20the\x20response','200','%s_STATUS_MESSAGE','Unable\x20to\x20set\x20result\x20in\x20variable\x20%s','variable\x20%s\x20set','saydigits','saynumber','sayNumber','sayphonetic','sayPhonetic','sendMail','account_id','Smtp','no\x20mail\x20account\x20found','\x22%s\x22\x20<%s>','user','bcc','subject','service','host','port','secure','authentication','auth','pass','template_id','sendMail\x20message','Mail\x20message\x20added\x20to\x20outgoing\x20process','SENDFAX\x20block\x20not\x20implemented','sendSMS','Enter\x20in\x20SENDSMS\x20(%s)\x20block','sms_account_id','no\x20sms\x20account\x20configured','no\x20sms\x20account\x20found','sendSMS\x20message','Trying\x20SendSMS\x20with\x20account\x20%s','Sms\x20message\x20added\x20to\x20outgoing\x20process','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','Enter\x20in\x20SUBPROJECT\x20(%s)\x20block','no\x20subproject\x20selected','getSquareProject','project_id','no\x20subproject\x20found\x20with\x20id\x20%d','project\x20in\x20subproject\x20must\x20be\x20different\x20from\x20the\x20called\x20project','127.0.0.1','AGI','system','Enter\x20in\x20SYSTEM\x20(%s)\x20block','sh\x20command:\x20%s\x20result\x20on\x20variable:\x20%s','no\x20apiKey\x20configured','Trying\x20Google\x20Cloud\x20TTS\x20%s','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','unpause','Enter\x20in\x20UNPAUSE\x20(%s)\x20block','Enter\x20in\x20VOICEMAIL\x20(%s)\x20block','VOICEMAIL','mailbox','vswitch','Enter\x20in\x20SWITCH\x20(%s)\x20block','join','exports','path','lodash','odbc','randomstring','mustache','request-promise','../../config/environment','/var/opt/motion2/server/files','rawBody','menu','getdigits','getsecretdigits','channel','rpc','mailRpc','prototype','getVariable','catch','getVoiceQueue','then','name','getSquareProjectById','getSquareOdbcById','dsn','getSoundById','getSoundPath','getMailAccount','getMailAccountById','sendMailMessage','getIntervals','getIntervalById','IntervalId','interval','map','format','%s/sounds/converted/%s','info','ODBC\x20connection\x20successfully','query','Query\x20executed\x20correctly\x20%s','close','error','Error\x20closing\x20connection\x20to\x20odbc\x20%s','getSmsAccount','createSmsMessage','createSquareDetailsReport','label','agicommand','arg_1','callerid','calleridname','extension','accountcode','dnid','file','createSquareMessage','isEmpty','lastName','isNil','list_id','scheduledAt','callback','Callback\x20scheduled\x20at\x20','toString','callback_priority','getPause','getPauseById','agentPause','agent','uniqueid','agentUnpause','agentLogout','agentLogin','internal','%s/%s@from-sip/n','shellCommand','exec','trim','replace','googleCloudTTS','apiKey','google_cloud_tts_text_type','text','languageCode','en-US','ssmlGender','MALE','audioEncoding','MP3','googleTTS','google_tts_language','restAPI','url','timeout','number','includes','POST','PUT','toUpperCase','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','uri','render','stringify','body','An\x20incorrect\x20formatted\x20json\x20has\x20been\x20passed\x20to\x20the\x20function','statusCode','statusMessage','message','500\x20-\x20Internal\x20Server\x20Error','options','googleDialogflow','key','dialogflow_language','googleDialogflowV2','dialogflowV2_project_id','client_email','private_key','sestekNDA','ispeechTTS','ispeech_tts_language','speed','ispeechASR','ispeech_asr_language','isConfigured','model','aws_secret_access_key','aws_polly_region','Amy','aws_text_type','awsLex','aws_access_key_id','googleASR','google_asr_language','tildeASR','appid','appsecret','clear','clone','hasOwnProperty','isString','replaceObjectAllVariables','replaceAllVariables','recursiveNodeIndex','isPlainObject','isArray','saveRestApiResult','%s.%s','split','length','replaceAll','extra','The\x20\x22%s\x22\x20variable\x20value\x20is:\x20%s','retry','maxRetry','mrcpsynth','Enter\x20in\x20MRCPSynth\x20(%s)\x20block','no\x20text\x20configured','result','noop','Executed\x20command\x20MRCPSynth\x20%s','mrcprecog','Enter\x20in\x20MRCPRecog\x20(%s)\x20block','grammar','no\x20grammar\x20configured','MRCPRecog','RECOG_CONFIDENCE()','MRCP_RECOG_CONFIDENCE','getAndSetVariable','RECOG_INPUT()','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'];(function(_0x5e0e90,_0x1c8363){var _0x33cfe3=function(_0x44f842){while(--_0x44f842){_0x5e0e90['push'](_0x5e0e90['shift']());}};_0x33cfe3(++_0x1c8363);}(_0x98ce,0x113));var _0xe98c=function(_0x167cc1,_0x56ef5a){_0x167cc1=_0x167cc1-0x0;var _0x10bc4b=_0x98ce[_0x167cc1];return _0x10bc4b;};'use strict';var fs=require('fs');var path=require(_0xe98c('0x0'));var util=require('util');var _=require(_0xe98c('0x1'));var sh=require('shelljs');var odbc=require(_0xe98c('0x2'))();var rs=require(_0xe98c('0x3'));var moment=require('moment');var Mustache=require(_0xe98c('0x4'));var rp=require(_0xe98c('0x5'));var logger=require('../../config/logger')('agi');var config=require(_0xe98c('0x6'));var scripts=require('./scripts');var FILES_PATH=_0xe98c('0x7');var recursiveMapAttributes=['rawHeaders',_0xe98c('0x8')];var verticesWithRetry=[_0xe98c('0x9'),_0xe98c('0xa'),_0xe98c('0xb')];var AGIVertices=function(_0x1ca54f,_0x415466,_0x148788){this[_0xe98c('0xc')]=_0x1ca54f;this[_0xe98c('0xd')]=_0x415466;this[_0xe98c('0xe')]=_0x148788;};AGIVertices[_0xe98c('0xf')][_0xe98c('0x10')]=function(_0x5b5a99,_0x3fafb7){this[_0xe98c('0xd')]['getVariableById'](_0x5b5a99)['then'](function(_0x46dd4a){_0x3fafb7(null,_0x46dd4a?_0x46dd4a['name']:![]);})[_0xe98c('0x11')](function(_0x1c7d2c){_0x3fafb7(_0x1c7d2c);});};AGIVertices[_0xe98c('0xf')][_0xe98c('0x12')]=function(_0x2ef7e7,_0x151360){this[_0xe98c('0xd')]['getVoiceQueueById'](_0x2ef7e7)[_0xe98c('0x13')](function(_0x4c1902){_0x151360(null,_0x4c1902?_0x4c1902[_0xe98c('0x14')]:![]);})[_0xe98c('0x11')](function(_0xd59c08){_0x151360(_0xd59c08);});};AGIVertices[_0xe98c('0xf')]['getSquareProject']=function(_0x53cfb7,_0x1acfe3){this[_0xe98c('0xd')][_0xe98c('0x15')](_0x53cfb7)[_0xe98c('0x13')](function(_0x2f4aaa){_0x1acfe3(null,_0x2f4aaa?_0x2f4aaa['name']:![]);})[_0xe98c('0x11')](function(_0x51af86){_0x1acfe3(_0x51af86);});};AGIVertices[_0xe98c('0xf')]['getSquareOdbc']=function(_0x1da656,_0x21f514){this[_0xe98c('0xd')][_0xe98c('0x16')](_0x1da656)[_0xe98c('0x13')](function(_0x30cfe7){_0x21f514(null,_0x30cfe7?_0x30cfe7[_0xe98c('0x17')]:![]);})[_0xe98c('0x11')](function(_0x146822){_0x21f514(_0x146822);});};AGIVertices['prototype']['getUser']=function(_0x29c100,_0x3266c7){this[_0xe98c('0xd')]['getUserById'](_0x29c100)[_0xe98c('0x13')](function(_0x11b289){_0x3266c7(null,_0x11b289?_0x11b289[_0xe98c('0x14')]:![]);})[_0xe98c('0x11')](function(_0x57ce85){_0x3266c7(_0x57ce85);});};AGIVertices[_0xe98c('0xf')]['getTrunk']=function(_0x2808df,_0x45b582){this[_0xe98c('0xd')]['getTrunkById'](_0x2808df)[_0xe98c('0x13')](function(_0x2623b7){_0x45b582(null,_0x2623b7?_0x2623b7[_0xe98c('0x14')]:![]);})[_0xe98c('0x11')](function(_0x4a6a97){_0x45b582(_0x4a6a97);});};AGIVertices[_0xe98c('0xf')]['getSound']=function(_0x3d6ad2,_0x582e63){var _0x478395=this;this['rpc'][_0xe98c('0x18')](_0x3d6ad2)[_0xe98c('0x13')](function(_0x5bf9db){_0x582e63(null,_0x5bf9db?_0x478395[_0xe98c('0x19')](_0x5bf9db['save_name']):![]);})[_0xe98c('0x11')](function(_0x56e297){_0x582e63(_0x56e297);});};AGIVertices[_0xe98c('0xf')][_0xe98c('0x1a')]=function(_0x26784a,_0x292acc){this[_0xe98c('0xd')][_0xe98c('0x1b')](_0x26784a)[_0xe98c('0x13')](function(_0x1857f5){_0x292acc(null,_0x1857f5?_0x1857f5:![]);})[_0xe98c('0x11')](function(_0xfb98d6){_0x292acc(_0xfb98d6);});};AGIVertices['prototype'][_0xe98c('0x1c')]=function(_0x277820,_0x4b64af,_0x21f5ed){this[_0xe98c('0xe')]['sendMailMessage'](_0x277820,_0x4b64af)[_0xe98c('0x13')](function(){_0x21f5ed(null);})[_0xe98c('0x11')](function(_0x3842bb){_0x21f5ed(_0x3842bb);});};AGIVertices['prototype'][_0xe98c('0x1d')]=function(_0x4534ee,_0x429a98){this['rpc'][_0xe98c('0x1e')](_0x4534ee)[_0xe98c('0x13')](function(_0x563a72){if(_0x563a72){if(_0x563a72[_0xe98c('0x1f')]){_0x429a98(null,[_0x563a72[_0xe98c('0x20')]]);}else{_0x429a98(null,_[_0xe98c('0x21')](_0x563a72['Intervals'],_0xe98c('0x20')));}}else{_0x429a98(null,![]);}})['catch'](function(_0x29d74a){_0x429a98(_0x29d74a);});};AGIVertices[_0xe98c('0xf')][_0xe98c('0x19')]=function(_0x5d02a4){return util[_0xe98c('0x22')](_0xe98c('0x23'),FILES_PATH,_0x5d02a4);};AGIVertices[_0xe98c('0xf')]['getQueryOdbc']=function(_0x483687,_0x15c191,_0x2267b5){odbc['open'](_0x483687,function(_0x4524b5){if(_0x4524b5){logger['error']('Error\x20getting\x20ODBC\x20connection\x20%s',_0x4524b5);_0x2267b5(_0x4524b5);}else{logger[_0xe98c('0x24')](_0xe98c('0x25'));odbc[_0xe98c('0x26')](_0x15c191,function(_0x5e2076,_0x3ec753){if(_0x5e2076){logger[_0xe98c('0x24')]('Error\x20executing\x20query\x20%s',_0x15c191);_0x2267b5(_0x5e2076);}else{logger[_0xe98c('0x24')](_0xe98c('0x27'),_0x15c191);odbc[_0xe98c('0x28')](function(_0x18e37f){if(_0x18e37f){logger[_0xe98c('0x29')](_0xe98c('0x2a'),_0x18e37f);}_0x2267b5(null,_0x3ec753);});}});}});};AGIVertices[_0xe98c('0xf')][_0xe98c('0x2b')]=function(_0x19a3cc,_0x1a77b4){this['rpc']['getSmsAccountById'](_0x19a3cc)[_0xe98c('0x13')](function(_0x760f19){_0x1a77b4(null,_0x760f19?_0x760f19:![]);})[_0xe98c('0x11')](function(_0x3be8f2){_0x1a77b4(_0x3be8f2);});};AGIVertices[_0xe98c('0xf')][_0xe98c('0x2c')]=function(_0x62a322,_0x42ef38){this[_0xe98c('0xd')][_0xe98c('0x2c')](_0x62a322)[_0xe98c('0x13')](function(_0x250b9e){_0x42ef38(null,_0x250b9e);})[_0xe98c('0x11')](function(_0x41fb3){_0x42ef38(_0x41fb3);});};AGIVertices[_0xe98c('0xf')][_0xe98c('0x2d')]=function(_0x5dbfa5,_0x168ed7,_0x2bac98){this['rpc'][_0xe98c('0x2d')]({'uniqueid':this[_0xe98c('0xc')]['uniqueid'],'node':_0x5dbfa5[_0xe98c('0x2e')],'application':_0x5dbfa5[_0xe98c('0x2f')],'data':_0x168ed7||null,'project_name':this[_0xe98c('0xc')][_0xe98c('0x30')],'callerid':this[_0xe98c('0xc')][_0xe98c('0x31')]})[_0xe98c('0x13')](function(_0x100a80){if(_0x2bac98){_0x2bac98(null,_0x100a80);}})[_0xe98c('0x11')](function(_0x4a3d9f){if(_0x2bac98){_0x2bac98(_0x4a3d9f);}});};AGIVertices[_0xe98c('0xf')]['createSquareRecording']=function(_0x3e485e,_0xd11c2c,_0x556069,_0x11f9a2){this[_0xe98c('0xd')]['createSquareRecording']({'uniqueid':this[_0xe98c('0xc')]['uniqueid'],'callerid':this[_0xe98c('0xc')][_0xe98c('0x31')],'calleridname':this[_0xe98c('0xc')][_0xe98c('0x32')],'context':this[_0xe98c('0xc')]['context'],'extension':this[_0xe98c('0xc')][_0xe98c('0x33')],'priority':this[_0xe98c('0xc')]['priority'],'accountcode':this[_0xe98c('0xc')][_0xe98c('0x34')],'dnid':this[_0xe98c('0xc')][_0xe98c('0x35')],'projectName':this[_0xe98c('0xc')][_0xe98c('0x30')],'saveName':_0xd11c2c,'filename':_0x3e485e[_0xe98c('0x36')]||_0xd11c2c,'savePath':_0x556069})[_0xe98c('0x13')](function(_0x5829dc){_0x11f9a2(null,_0x5829dc);})['catch'](function(_0x4cba96){_0x11f9a2(_0x4cba96);});};AGIVertices[_0xe98c('0xf')][_0xe98c('0x37')]=function(_0x3d6dee,_0x12f712,_0x422fa9,_0x42d798,_0x26d094){this[_0xe98c('0xd')][_0xe98c('0x37')]({'uniqueid':this['channel']['uniqueid'],'body':_0x3d6dee,'direction':_0x12f712,'providerName':_0x422fa9,'providerResponse':_0x42d798})['then'](function(_0x5cb710){if(_0x26d094){_0x26d094(null,_0x5cb710);}})[_0xe98c('0x11')](function(_0x51abda){if(_0x26d094){_0x26d094(_0x51abda);}});};AGIVertices[_0xe98c('0xf')]['createCmContact']=function(_0x4b682a,_0x2c66c0){this['rpc']['createCmContact']({'firstName':_[_0xe98c('0x38')](_0x4b682a[_0xe98c('0x14')])||_['isNil'](_0x4b682a[_0xe98c('0x14')])?'callback_'+Math['random']():_0x4b682a[_0xe98c('0x14')],'lastName':_[_0xe98c('0x38')](_0x4b682a[_0xe98c('0x39')])||_[_0xe98c('0x3a')](_0x4b682a['lastName'])?null:_0x4b682a['lastName'],'phone':_0x4b682a['phone'],'ListId':_0x4b682a[_0xe98c('0x3b')],'scheduledat':_0x4b682a[_0xe98c('0x3c')],'callbackUniqueid':this[_0xe98c('0xc')]['uniqueid'],'tags':_0xe98c('0x3d'),'description':_0xe98c('0x3e')+_0x4b682a[_0xe98c('0x3c')][_0xe98c('0x3f')](),'priority':_0x4b682a[_0xe98c('0x40')]})[_0xe98c('0x13')](function(_0x503b8c){_0x2c66c0(null,_0x503b8c);})[_0xe98c('0x11')](function(_0x175f32){_0x2c66c0(_0x175f32);});};AGIVertices[_0xe98c('0xf')][_0xe98c('0x41')]=function(_0x51a1fc,_0xf5ba23){this[_0xe98c('0xd')][_0xe98c('0x42')](_0x51a1fc)[_0xe98c('0x13')](function(_0x3f68bc){_0xf5ba23(null,_0x3f68bc?_0x3f68bc[_0xe98c('0x14')]:![]);})['catch'](function(_0x3c3fb4){_0xf5ba23(_0x3c3fb4);});};AGIVertices[_0xe98c('0xf')][_0xe98c('0x43')]=function(_0x53f4f3,_0x482c8c,_0x1c45ce){var _0x45dff5={'role':_0xe98c('0x44')};_0x45dff5[_0x53f4f3]=this[_0xe98c('0xc')][_0xe98c('0x31')];this[_0xe98c('0xd')]['agentPause'](_0x45dff5,_0x482c8c,this[_0xe98c('0xc')][_0xe98c('0x45')])[_0xe98c('0x13')](function(_0x11a788){_0x1c45ce(null,_[_0xe98c('0x3a')](_0x11a788)?![]:!![]);})[_0xe98c('0x11')](function(_0x1f9d8e){logger['error'](_0x1f9d8e);_0x1c45ce(null,![]);});};AGIVertices[_0xe98c('0xf')][_0xe98c('0x46')]=function(_0x5deaa9,_0x27d658){var _0x34c0fc={'role':'agent'};_0x34c0fc[_0x5deaa9]=this['channel']['callerid'];this[_0xe98c('0xd')][_0xe98c('0x46')](_0x34c0fc)[_0xe98c('0x13')](function(_0xd71d90){_0x27d658(null,_['isNil'](_0xd71d90)?![]:!![]);})[_0xe98c('0x11')](function(_0x263a6c){logger['error'](_0x263a6c);_0x27d658(null,![]);});};AGIVertices[_0xe98c('0xf')]['agentLogout']=function(_0x2186e2,_0x40fb0d){var _0x4313f6={'role':_0xe98c('0x44')};_0x4313f6[_0x2186e2]=this[_0xe98c('0xc')][_0xe98c('0x31')];this[_0xe98c('0xd')][_0xe98c('0x47')](_0x4313f6)[_0xe98c('0x13')](function(_0x854a4a){_0x40fb0d(null,_[_0xe98c('0x3a')](_0x854a4a)?![]:!![]);})[_0xe98c('0x11')](function(_0x4c0380){logger[_0xe98c('0x29')](_0x4c0380);_0x40fb0d(null,![]);});};AGIVertices[_0xe98c('0xf')][_0xe98c('0x48')]=function(_0x55ea50,_0x20aa3b){var _0x314bac={'role':_0xe98c('0x44')};_0x314bac[_0x55ea50]=this[_0xe98c('0xc')][_0xe98c('0x31')];var _0x125399=_0x55ea50!=_0xe98c('0x49')?util[_0xe98c('0x22')](_0xe98c('0x4a'),'LOCAL',this[_0xe98c('0xc')][_0xe98c('0x31')]):undefined;this[_0xe98c('0xd')][_0xe98c('0x48')](_0x314bac,_0x125399)[_0xe98c('0x13')](function(_0x376f43){_0x20aa3b(null,_['isNil'](_0x376f43)?![]:!![]);})['catch'](function(_0x8985e7){logger[_0xe98c('0x29')](_0x8985e7);_0x20aa3b(null,![]);});};AGIVertices[_0xe98c('0xf')][_0xe98c('0x4b')]=function(_0x41e24e,_0x29da28){sh[_0xe98c('0x4c')](_[_0xe98c('0x4d')](_0x41e24e),function(_0x4973bd,_0xed0370){var _0x2e2e5e=_0xed0370[_0xe98c('0x4e')](/(\r\n|\n|\r)/gm,'');_0x29da28(null,_0x2e2e5e);});};AGIVertices[_0xe98c('0xf')][_0xe98c('0x4f')]=function(_0x16f752,_0x119ace){scripts[_0xe98c('0x4f')](_0x16f752[_0xe98c('0x50')],_0x16f752[_0xe98c('0x51')]||_0xe98c('0x52'),_0x16f752[_0xe98c('0x52')],_0x16f752[_0xe98c('0x53')]||_0xe98c('0x54'),_0x16f752[_0xe98c('0x55')]||_0xe98c('0x56'),_0x16f752[_0xe98c('0x57')]||_0xe98c('0x58'))['then'](function(_0x31032e){_0x119ace(null,_0x31032e);})[_0xe98c('0x11')](function(_0x4ecf7f){_0x119ace(_0x4ecf7f);});};AGIVertices[_0xe98c('0xf')]['googleTTS']=function(_0x4e11e3,_0x3f7036){scripts[_0xe98c('0x59')](_0x4e11e3[_0xe98c('0x52')],_0x4e11e3[_0xe98c('0x5a')]||'en',0x1)['then'](function(_0x20914e){_0x3f7036(null,_0x20914e);})[_0xe98c('0x11')](function(_0x2028f3){_0x3f7036(_0x2028f3);});};AGIVertices[_0xe98c('0xf')][_0xe98c('0x5b')]=function(_0x445cc5,_0x291a1e){var _0x483e0b={'uri':_0x445cc5[_0xe98c('0x5c')],'method':_0x445cc5['method'],'json':!![],'resolveWithFullResponse':!![],'strictSSL':![],'timeout':typeof parseInt(_0x445cc5[_0xe98c('0x5d')])===_0xe98c('0x5e')&&parseInt(_0x445cc5[_0xe98c('0x5d')])>=0x1?parseInt(_0x445cc5['timeout'])*0x3e8:0x5*0x3e8};if(_[_0xe98c('0x5f')]([_0xe98c('0x60'),_0xe98c('0x61')],_0x483e0b['method'][_0xe98c('0x62')]())){try{_0x483e0b['body']=_0x445cc5[_0xe98c('0x8')]?JSON[_0xe98c('0x63')](_0x445cc5[_0xe98c('0x8')]):{};}catch(_0x15d050){logger[_0xe98c('0x29')](_0xe98c('0x64'),_0x15d050);}}try{_0x483e0b[_0xe98c('0x65')]=_0x445cc5[_0xe98c('0x66')]?JSON[_0xe98c('0x63')](_0x445cc5[_0xe98c('0x66')]):{};}catch(_0x37f286){logger[_0xe98c('0x29')](_0xe98c('0x67'),_0x37f286);}if(_0x445cc5[_0xe98c('0x68')]){try{var _0x18ab37=require(_0x445cc5['computedVariables'])[_0xe98c('0x69')](this,_0x483e0b);_0x483e0b[_0xe98c('0x6a')]=Mustache[_0xe98c('0x6b')](_0x445cc5[_0xe98c('0x5c')],_0x18ab37,{},['$$','$$']);if(_0x483e0b[_0xe98c('0x65')]){_0x483e0b[_0xe98c('0x65')]=JSON['parse'](Mustache[_0xe98c('0x6b')](JSON[_0xe98c('0x6c')](_0x483e0b['headers']),_0x18ab37,{},['$$','$$']));}if(_0x483e0b[_0xe98c('0x6d')]){_0x483e0b[_0xe98c('0x6d')]=JSON['parse'](Mustache[_0xe98c('0x6b')](JSON[_0xe98c('0x6c')](_0x483e0b[_0xe98c('0x6d')]),_0x18ab37,{},['$$','$$']));}}catch(_0xf2f64d){logger[_0xe98c('0x29')](_0xe98c('0x6e'),_0xf2f64d);}}rp(_0x483e0b)[_0xe98c('0x13')](function(_0x1dc8a1){var _0x40a313={'statusCode':_0x1dc8a1[_0xe98c('0x6f')]||0xc8,'statusMessage':_0x1dc8a1[_0xe98c('0x70')]||'OK','headers':_0x1dc8a1[_0xe98c('0x65')]||{},'body':_0x1dc8a1[_0xe98c('0x6d')]||{}};_0x291a1e(null,_0x40a313);})[_0xe98c('0x11')](function(_0x694f7f){var _0x30b186={'statusCode':_0x694f7f[_0xe98c('0x6f')]||0x1f4,'statusMessage':_0x694f7f[_0xe98c('0x71')]||_0xe98c('0x72'),'headers':_0x694f7f[_0xe98c('0x73')][_0xe98c('0x65')]||{},'body':_0x694f7f[_0xe98c('0x73')][_0xe98c('0x6d')]||{}};_0x291a1e(null,_0x30b186);});};AGIVertices[_0xe98c('0xf')][_0xe98c('0x74')]=function(_0xb34cd2,_0x5b536c){scripts[_0xe98c('0x74')](this[_0xe98c('0xc')][_0xe98c('0x45')],_0xb34cd2[_0xe98c('0x75')],_0xb34cd2[_0xe98c('0x52')],_0xb34cd2[_0xe98c('0x76')]||'en')[_0xe98c('0x13')](function(_0xc84397){_0x5b536c(null,_0xc84397);})[_0xe98c('0x11')](function(_0x1c9b7f){_0x5b536c(_0x1c9b7f);});};AGIVertices[_0xe98c('0xf')][_0xe98c('0x77')]=function(_0x501758,_0x2a4b3d){scripts[_0xe98c('0x77')](this[_0xe98c('0xc')]['uniqueid'],_0x501758[_0xe98c('0x78')],_0x501758[_0xe98c('0x79')],_0x501758[_0xe98c('0x7a')],_0x501758['text'],_0x501758['dialogflowV2_language']||'en')[_0xe98c('0x13')](function(_0x399a09){_0x2a4b3d(null,_0x399a09);})[_0xe98c('0x11')](function(_0x52d096){_0x2a4b3d(_0x52d096);});};AGIVertices['prototype']['sestekNDA']=function(_0x7a419d,_0x4ac724){scripts[_0xe98c('0x7b')](this[_0xe98c('0xc')],_0x7a419d)[_0xe98c('0x13')](function(_0x16eda8){_0x4ac724(null,_0x16eda8);})[_0xe98c('0x11')](function(_0x4e26d8){_0x4ac724(_0x4e26d8);});};AGIVertices[_0xe98c('0xf')][_0xe98c('0x7c')]=function(_0x15095b,_0x4ceff1){scripts['ispeechTTS'](_0x15095b[_0xe98c('0x75')],_0x15095b[_0xe98c('0x52')],_0x15095b[_0xe98c('0x7d')]||_0xe98c('0x54'),_0x15095b[_0xe98c('0x7e')])['then'](function(_0xc76198){_0x4ceff1(null,_0xc76198);})['catch'](function(_0x30a7b5){_0x4ceff1(_0x30a7b5);});};AGIVertices[_0xe98c('0xf')][_0xe98c('0x7f')]=function(_0x33558c,_0x2f6f55,_0x5e222f){scripts[_0xe98c('0x7f')](_0x2f6f55,_0x33558c[_0xe98c('0x75')],_0x33558c[_0xe98c('0x80')]||'en-US',this[_0xe98c('0x81')](_0x33558c[_0xe98c('0x82')])?_0x33558c['model']:undefined)[_0xe98c('0x13')](function(_0x338c8a){_0x5e222f(null,_0x338c8a);})[_0xe98c('0x11')](function(_0x43e21b){_0x5e222f(_0x43e21b);});};AGIVertices['prototype']['awsPolly']=function(_0x33e3e3,_0x43db8a){scripts['awsPolly'](_0x33e3e3['aws_access_key_id'],_0x33e3e3[_0xe98c('0x83')],_0x33e3e3[_0xe98c('0x84')],_0x33e3e3['aws_polly_voice']||_0xe98c('0x85'),_0x33e3e3[_0xe98c('0x52')],_0x33e3e3[_0xe98c('0x86')]||_0xe98c('0x52'))[_0xe98c('0x13')](function(_0x1ce687){_0x43db8a(null,_0x1ce687);})[_0xe98c('0x11')](function(_0x49f1eb){_0x43db8a(_0x49f1eb);});};AGIVertices[_0xe98c('0xf')]['awsLex']=function(_0x23d6e5,_0x145436){scripts[_0xe98c('0x87')](this[_0xe98c('0xc')][_0xe98c('0x45')],_0x23d6e5[_0xe98c('0x88')],_0x23d6e5[_0xe98c('0x83')],_0x23d6e5['aws_lex_region'],_0x23d6e5[_0xe98c('0x52')],_0x23d6e5['aws_bot_name'])[_0xe98c('0x13')](function(_0x5590bb){_0x145436(null,_0x5590bb);})[_0xe98c('0x11')](function(_0x2a9651){_0x145436(_0x2a9651);});};AGIVertices['prototype'][_0xe98c('0x89')]=function(_0x342da4,_0x450b33,_0x244645){scripts[_0xe98c('0x89')](_0x450b33,_0x342da4['key'],_0x342da4[_0xe98c('0x8a')]||_0xe98c('0x54'))['then'](function(_0x3cd4a2){_0x244645(null,_0x3cd4a2);})[_0xe98c('0x11')](function(_0x526fed){_0x244645(_0x526fed);});};AGIVertices['prototype'][_0xe98c('0x8b')]=function(_0x52b2ca,_0x1fa2ce,_0x12b1fd){scripts[_0xe98c('0x8b')](_0x1fa2ce,_0x52b2ca[_0xe98c('0x8c')],_0x52b2ca[_0xe98c('0x8d')],_0x52b2ca[_0xe98c('0x6a')])[_0xe98c('0x13')](function(_0x1bed88){_0x12b1fd(null,_0x1bed88);})[_0xe98c('0x11')](function(_0x15269c){_0x12b1fd(_0x15269c);});};AGIVertices['prototype'][_0xe98c('0x8e')]=function(_0x2ba1ec){var _0x2aa4d5=_[_0xe98c('0x5f')](verticesWithRetry,_0x2ba1ec[_0xe98c('0x2f')])?_0x2ba1ec:_[_0xe98c('0x8f')](_0x2ba1ec);for(var _0x27802f in _0x2aa4d5){if(_0x2aa4d5[_0xe98c('0x90')](_0x27802f)){if(_0x2aa4d5[_0x27802f]&&_[_0xe98c('0x91')](_0x2aa4d5[_0x27802f])){if(_[_0xe98c('0x5f')](recursiveMapAttributes,_0x27802f)){_0x2aa4d5[_0x27802f]=this[_0xe98c('0x92')](_0x2aa4d5[_0x27802f]);}else{_0x2aa4d5[_0x27802f]=this[_0xe98c('0x93')](_0x2aa4d5[_0x27802f]);}}}}return _0x2aa4d5;};AGIVertices[_0xe98c('0xf')][_0xe98c('0x94')]=function(_0x1a08bf){for(var _0x10c46e in _0x1a08bf){if(_0x1a08bf[_0xe98c('0x90')](_0x10c46e)){if(_[_0xe98c('0x95')](_0x1a08bf[_0x10c46e])){this[_0xe98c('0x94')](_0x1a08bf[_0x10c46e]);}else if(_[_0xe98c('0x96')](_0x1a08bf[_0x10c46e])){for(var _0x43ceee=0x0;_0x43ceee<_0x1a08bf[_0x10c46e]['length'];_0x43ceee++){this[_0xe98c('0x94')](_0x1a08bf[_0x10c46e][_0x43ceee]);}}else if(_['isString'](_0x1a08bf[_0x10c46e])){_0x1a08bf[_0x10c46e]=this[_0xe98c('0x93')](_0x1a08bf[_0x10c46e]);}}}};AGIVertices[_0xe98c('0xf')][_0xe98c('0x97')]=function(_0x1207a2,_0x2cf0bf){for(var _0x328ca1 in _0x1207a2){if(_0x1207a2[_0xe98c('0x90')](_0x328ca1)){if(_[_0xe98c('0x95')](_0x1207a2[_0x328ca1])){if(!_[_0xe98c('0x38')](_0x1207a2[_0x328ca1])){this['saveRestApiResult'](_0x1207a2[_0x328ca1],util[_0xe98c('0x22')](_0xe98c('0x98'),_0x2cf0bf,_0x328ca1));}}else if(_['isArray'](_0x1207a2[_0x328ca1])){for(var _0x330ad0=0x0;_0x330ad0<_0x1207a2[_0x328ca1]['length'];_0x330ad0++){this[_0xe98c('0x97')](_0x1207a2[_0x328ca1][_0x330ad0],util[_0xe98c('0x22')](_0xe98c('0x98'),_0x2cf0bf,_0x328ca1+'['+_0x330ad0+']'));}}else{if(!_[_0xe98c('0x3a')](_0x1207a2[_0x328ca1])){this['channel']['setVariable'](util[_0xe98c('0x22')](_0xe98c('0x98'),_0x2cf0bf,_0x328ca1),_0x1207a2[_0x328ca1]);}}}}};AGIVertices[_0xe98c('0xf')]['replaceObjectAllVariables']=function(_0x12891f){try{var _0x5e32b2=JSON[_0xe98c('0x63')](_0x12891f);this[_0xe98c('0x94')](_0x5e32b2);return JSON[_0xe98c('0x6c')](_0x5e32b2);}catch(_0x1ac565){return this[_0xe98c('0x93')](_0x12891f);}};AGIVertices[_0xe98c('0xf')][_0xe98c('0x93')]=function(_0x215def){var _0x21b643=_0x215def[_0xe98c('0x99')]('{');for(var _0x4c38ff=0x1;_0x4c38ff<_0x21b643[_0xe98c('0x9a')];_0x4c38ff+=0x1){var _0x57b07b=_0x21b643[_0x4c38ff][_0xe98c('0x99')]('}');if(_0x57b07b[_0xe98c('0x9a')]>0x1){_0x215def=_0x215def[_0xe98c('0x9b')]('{'+_0x57b07b[0x0]+'}',this[_0xe98c('0xc')][_0xe98c('0x10')](_0x57b07b[0x0])[_0xe98c('0x9c')]||_0x57b07b[0x0]);}}if(_0x21b643[_0xe98c('0x9a')]===0x1){return _0x215def[_0xe98c('0x3f')]();}return this[_0xe98c('0x93')](_0x215def);};AGIVertices[_0xe98c('0xf')]['getAndSetVariable']=function(_0x29b4d3,_0x354164){var _0x5471e5=this[_0xe98c('0xc')][_0xe98c('0x10')](_0x29b4d3);if(_0x5471e5['result']===-0x1){return _0x5471e5;}logger[_0xe98c('0x24')](util[_0xe98c('0x22')](_0xe98c('0x9d'),_0x354164,_0x5471e5[_0xe98c('0x9c')]));return this[_0xe98c('0xc')]['setVariable'](_0x354164,_0x5471e5[_0xe98c('0x9c')]);};AGIVertices[_0xe98c('0xf')][_0xe98c('0x81')]=function(_0x68b7cd){return _0x68b7cd&&_0x68b7cd!=='0'&&_0x68b7cd!=='-1'&&_0x68b7cd!=='';};AGIVertices[_0xe98c('0xf')]['maxRetry']=function(_0x1e8f3a){this[_0xe98c('0x2d')][_0xe98c('0x69')](this,_0x1e8f3a,'-');_0x1e8f3a[_0xe98c('0x9e')]=_0x1e8f3a[_0xe98c('0x9f')];return{'code':0xc8,'result':'-'};};AGIVertices[_0xe98c('0xf')][_0xe98c('0xa0')]=function(_0x55f37d){logger[_0xe98c('0x24')](util[_0xe98c('0x22')](_0xe98c('0xa1'),_0x55f37d[_0xe98c('0x2e')]));if(!this['isConfigured'](_0x55f37d[_0xe98c('0x52')])){return this[_0xe98c('0xc')]['noop'](_0xe98c('0xa2'));}var _0x28bb26='\x22'+_0x55f37d['text']+'\x22';if(this[_0xe98c('0x81')](_0x55f37d[_0xe98c('0x73')])){_0x28bb26+=','+_0x55f37d[_0xe98c('0x73')];}var _0x47d056=this['channel']['exec']('MRCPSynth',_0x28bb26);if(_0x47d056[_0xe98c('0xa3')]===-0x1){return _0x47d056;}return this[_0xe98c('0xc')][_0xe98c('0xa4')](util[_0xe98c('0x22')](_0xe98c('0xa5'),_0x28bb26));};AGIVertices['prototype'][_0xe98c('0xa6')]=function(_0x515362){logger[_0xe98c('0x24')](util[_0xe98c('0x22')](_0xe98c('0xa7'),_0x515362['label']));if(!this[_0xe98c('0x81')](_0x515362[_0xe98c('0xa8')])){return this['channel'][_0xe98c('0xa4')](_0xe98c('0xa9'));}var _0x2dfa38=_0x515362['grammar'];if(this[_0xe98c('0x81')](_0x515362[_0xe98c('0x73')])){_0x2dfa38+=','+_0x515362[_0xe98c('0x73')];}var _0x594e84=this[_0xe98c('0xc')][_0xe98c('0x4c')](_0xe98c('0xaa'),_0x2dfa38);if(_0x594e84[_0xe98c('0xa3')]===-0x1){return _0x594e84;}var _0x34a629=this['getAndSetVariable'](_0xe98c('0xab'),_0xe98c('0xac'));if(_0x34a629[_0xe98c('0xa3')]===-0x1){return _0x34a629;}var _0x3ce928=this[_0xe98c('0xad')](_0xe98c('0xae'),'MRCP_RECOG_TRANSCRIPT');if(_0x3ce928['result']===-0x1){return _0x3ce928;}var _0x4a82db=this[_0xe98c('0xad')](_0xe98c('0xaf'),_0xe98c('0xb0'));if(_0x4a82db[_0xe98c('0xa3')]===-0x1){return _0x4a82db;}return this[_0xe98c('0xc')][_0xe98c('0xa4')](util['format'](_0xe98c('0xb1'),_0x2dfa38));};AGIVertices[_0xe98c('0xf')]['agi']=function(_0x3550e4){logger[_0xe98c('0x24')](util[_0xe98c('0x22')](_0xe98c('0xb2'),_0x3550e4[_0xe98c('0x2e')]));return this[_0xe98c('0xc')]['agi']([_0x3550e4[_0xe98c('0xb3')],_0x3550e4[_0xe98c('0xb4')]]);};AGIVertices['prototype'][_0xe98c('0xb5')]=function(_0x18505b){logger['info'](util[_0xe98c('0x22')](_0xe98c('0xb6'),_0x18505b[_0xe98c('0x2e')]));if(this[_0xe98c('0x81')](_0x18505b[_0xe98c('0x5d')])){logger[_0xe98c('0x24')](util[_0xe98c('0x22')](_0xe98c('0xb7'),_0x18505b[_0xe98c('0x5d')]));var _0x7e7562=this['channel']['wait'](_0x18505b[_0xe98c('0x5d')]);if(_0x7e7562[_0xe98c('0xa3')]===-0x1){return _0x7e7562;}}return this['channel'][_0xe98c('0xb5')]();};AGIVertices[_0xe98c('0xf')][_0xe98c('0x3d')]=function(_0x16e53b){logger[_0xe98c('0x24')](util[_0xe98c('0x22')](_0xe98c('0xb8'),_0x16e53b[_0xe98c('0x2e')]));if(!this['isConfigured'](_0x16e53b[_0xe98c('0x3b')])){return this['channel'][_0xe98c('0x29')](_0x16e53b,'no\x20list\x20selected');}_0x16e53b[_0xe98c('0x3c')]=moment();if(this[_0xe98c('0x81')](_0x16e53b[_0xe98c('0xb9')])){_0x16e53b[_0xe98c('0x3c')]=moment()[_0xe98c('0xba')](_0x16e53b[_0xe98c('0xb9')],_0xe98c('0xbb'));}if(!this[_0xe98c('0x81')](_0x16e53b[_0xe98c('0x40')])){_0x16e53b[_0xe98c('0x40')]=0x2;}this[_0xe98c('0xbc')]['sync'](this,_0x16e53b);return this[_0xe98c('0xc')][_0xe98c('0xa4')](util[_0xe98c('0x22')]('CALLBACK\x20added\x20phone:\x20%s\x20on\x20list:\x20%s\x20at\x20%s',_0x16e53b['phone'],_0x16e53b['list_id'],_0x16e53b['scheduledAt']));};AGIVertices[_0xe98c('0xf')][_0xe98c('0xbd')]=function(_0x4a5335){logger[_0xe98c('0x24')](util[_0xe98c('0x22')](_0xe98c('0xbe'),_0x4a5335['label']));var _0x27f7ca=this['channel'][_0xe98c('0x4c')](_0x4a5335[_0xe98c('0xbf')],_0x4a5335[_0xe98c('0x73')]);if(_0x27f7ca[_0xe98c('0xa3')]===-0x1){return _0x27f7ca;}return this[_0xe98c('0xc')][_0xe98c('0xa4')](util[_0xe98c('0x22')](_0xe98c('0xc0'),_0x4a5335[_0xe98c('0xbf')],_0x4a5335[_0xe98c('0x73')]));};AGIVertices[_0xe98c('0xf')][_0xe98c('0xc1')]=function(_0x236e6f){logger[_0xe98c('0x24')](util[_0xe98c('0x22')](_0xe98c('0xc2'),_0x236e6f['label']));if(!this[_0xe98c('0x81')](_0x236e6f['text'])){return this['channel']['noop'](_0xe98c('0xa2'));}var _0x312e48='\x22'+_0x236e6f[_0xe98c('0x52')]+'\x22';if(this['isConfigured'](_0x236e6f[_0xe98c('0x73')])){_0x312e48+=','+_0x236e6f[_0xe98c('0x73')];}var _0x36dd8f=this[_0xe98c('0xc')][_0xe98c('0x4c')](_0xe98c('0xc3'),_0x312e48);if(_0x36dd8f[_0xe98c('0xa3')]===-0x1){return _0x36dd8f;}return this[_0xe98c('0xc')][_0xe98c('0xa4')](util[_0xe98c('0x22')](_0xe98c('0xa5'),_0x312e48));};AGIVertices['prototype'][_0xe98c('0xc4')]=function(_0x1da9ba){logger[_0xe98c('0x24')](util[_0xe98c('0x22')](_0xe98c('0xc5'),_0x1da9ba[_0xe98c('0x2e')]));if(!this['isConfigured'](_0x1da9ba[_0xe98c('0x52')])){return this[_0xe98c('0xc')][_0xe98c('0xa4')](_0xe98c('0xa2'));}var _0x1b49e5='\x22'+_0x1da9ba[_0xe98c('0x52')]+'\x22';if(this[_0xe98c('0x81')](_0x1da9ba[_0xe98c('0x73')])){_0x1b49e5+=','+_0x1da9ba[_0xe98c('0x73')];}var _0xc04898=this['channel']['exec'](_0xe98c('0xc3'),_0x1b49e5);if(_0xc04898['result']===-0x1){return _0xc04898;}return this['channel'][_0xe98c('0xa4')](util['format']('Executed\x20command\x20MRCPSynth\x20%s',_0x1b49e5));};AGIVertices['prototype']['lumenvoxasr']=function(_0x21208a){logger[_0xe98c('0x24')](util[_0xe98c('0x22')]('Enter\x20in\x20LUMENVOXASR\x20(%s)\x20block',_0x21208a[_0xe98c('0x2e')]));if(!this['isConfigured'](_0x21208a[_0xe98c('0xa8')])){return this[_0xe98c('0xc')][_0xe98c('0xa4')]('no\x20grammar\x20configured');}var _0x24955f=_0x21208a['grammar'];if(this[_0xe98c('0x81')](_0x21208a['options'])){_0x24955f+=','+_0x21208a[_0xe98c('0x73')];}var _0x3710be=this['channel'][_0xe98c('0x4c')]('MRCPRecog',_0x24955f);if(_0x3710be[_0xe98c('0xa3')]===-0x1){return _0x3710be;}var _0x532d60=this[_0xe98c('0xad')](_0xe98c('0xab'),'LUMENVOX_ASR_CONFIDENCE');if(_0x532d60[_0xe98c('0xa3')]===-0x1){return _0x532d60;}var _0x1affa1=this['getAndSetVariable'](_0xe98c('0xae'),_0xe98c('0xc6'));if(_0x1affa1[_0xe98c('0xa3')]===-0x1){return _0x1affa1;}var _0x1ae5c4=this[_0xe98c('0xad')](_0xe98c('0xaf'),'LUMENVOX_ASR_INSTANCE');if(_0x1ae5c4[_0xe98c('0xa3')]===-0x1){return _0x1ae5c4;}return this['channel'][_0xe98c('0xa4')](util[_0xe98c('0x22')](_0xe98c('0xb1'),_0x24955f));};AGIVertices[_0xe98c('0xf')][_0xe98c('0xc7')]=function(_0x32146a){logger['info'](util[_0xe98c('0x22')](_0xe98c('0xc8'),_0x32146a['label']));if(!this[_0xe98c('0x81')](_0x32146a[_0xe98c('0xa8')])){return this[_0xe98c('0xc')][_0xe98c('0xa4')]('no\x20grammar\x20configured');}var _0x1ce62d=_0x32146a['grammar'];if(this[_0xe98c('0x81')](_0x32146a[_0xe98c('0x73')])){_0x1ce62d+=','+_0x32146a['options'];}var _0x5e26d9=this[_0xe98c('0xc')][_0xe98c('0x4c')](_0xe98c('0xaa'),_0x1ce62d);if(_0x5e26d9[_0xe98c('0xa3')]===-0x1){return _0x5e26d9;}var _0x241beb=this[_0xe98c('0xad')](_0xe98c('0xab'),'SESTEK_ASR_CONFIDENCE');if(_0x241beb[_0xe98c('0xa3')]===-0x1){return _0x241beb;}var _0x1e9bd6=this[_0xe98c('0xad')](_0xe98c('0xae'),_0xe98c('0xc9'));if(_0x1e9bd6[_0xe98c('0xa3')]===-0x1){return _0x1e9bd6;}var _0x43ae81=this[_0xe98c('0xad')](_0xe98c('0xaf'),_0xe98c('0xca'));if(_0x43ae81[_0xe98c('0xa3')]===-0x1){return _0x43ae81;}return this[_0xe98c('0xc')][_0xe98c('0xa4')](util[_0xe98c('0x22')](_0xe98c('0xb1'),_0x1ce62d));};AGIVertices[_0xe98c('0xf')][_0xe98c('0xcb')]=function(_0x48584c){logger['info'](util[_0xe98c('0x22')](_0xe98c('0xcc'),_0x48584c[_0xe98c('0x2e')]));if(!this['isConfigured'](_0x48584c['odbc_id'])){return this[_0xe98c('0xc')][_0xe98c('0x29')](_0x48584c,_0xe98c('0xcd'));}var _0x462a0a=this[_0xe98c('0xce')]['sync'](this,_0x48584c['odbc_id']);if(!_0x462a0a){return this[_0xe98c('0xc')]['error'](_0x48584c,'no\x20odbc\x20database\x20found');}if(!this[_0xe98c('0x81')](_0x48584c[_0xe98c('0x26')])){return this[_0xe98c('0xc')][_0xe98c('0x29')](_0x48584c,'no\x20query\x20configured');}var _0x3fe38b=_0x48584c[_0xe98c('0x26')][_0xe98c('0x4e')](/(\r\n|\n|\r)/gm,'\x20');this[_0xe98c('0xc')][_0xe98c('0xa4')](util[_0xe98c('0x22')](_0xe98c('0xcf'),_0x3fe38b));var _0x355d7c=this['getQueryOdbc'][_0xe98c('0x69')](this,_0x462a0a,_0x3fe38b);this['createSquareDetailsReport'][_0xe98c('0x69')](this,_0x48584c,_0x3fe38b);if(!this['isConfigured'](_0x48584c[_0xe98c('0xd0')])){return this[_0xe98c('0xc')][_0xe98c('0xa4')](_0xe98c('0xd1'));}var _0x525623=this[_0xe98c('0x10')][_0xe98c('0x69')](this,_0x48584c[_0xe98c('0xd0')]);if(!_0x525623){return this['channel'][_0xe98c('0x29')](_0x48584c,'no\x20variable\x20found');}var _0x37d106=this;_0x355d7c[_0xe98c('0xd2')](function(_0x50f59c,_0x33010b){Object[_0xe98c('0xd3')](_0x50f59c)[_0xe98c('0xd2')](function(_0x4a02f5){_0x37d106[_0xe98c('0xc')]['setVariable'](util['format'](_0xe98c('0xd4'),_0x525623,_0x33010b,_0x4a02f5),_0x50f59c[_0x4a02f5]);});});this['channel'][_0xe98c('0xd5')](util['format'](_0xe98c('0xd6'),_0x525623),_0x355d7c['length']);return this[_0xe98c('0xc')][_0xe98c('0xa4')](util[_0xe98c('0x22')]('variable\x20%s\x20set',_0x525623));};AGIVertices['prototype'][_0xe98c('0xd7')]=function(_0x25a253){logger[_0xe98c('0xd8')](util[_0xe98c('0x22')]('Enter\x20in\x20DIAL\x20(%s)\x20block',_0x25a253[_0xe98c('0x2e')]));if(!this['isConfigured'](_0x25a253['sip_id'])){return this[_0xe98c('0xc')][_0xe98c('0x29')](_0x25a253,_0xe98c('0xd9'));}var _0x3d6eef=this[_0xe98c('0xda')]['sync'](this,_0x25a253[_0xe98c('0xdb')]);if(!_0x3d6eef){return this[_0xe98c('0xc')][_0xe98c('0x29')](_0x25a253,_0xe98c('0xdc'));}var _0x4dbe98=this['channel'][_0xe98c('0x4c')]('DIAL',[util[_0xe98c('0x22')]('SIP/%s',_0x3d6eef),_0x25a253[_0xe98c('0x5d')],_0x25a253[_0xe98c('0xdd')],_0x25a253[_0xe98c('0x5c')]]);if(_0x4dbe98['result']===-0x1){return _0x4dbe98;}return this['channel'][_0xe98c('0xa4')](util[_0xe98c('0x22')](_0xe98c('0xde'),'DIAL'));};AGIVertices['prototype'][_0xe98c('0xdf')]=function(_0x5c8bdf){logger[_0xe98c('0x24')](util[_0xe98c('0x22')]('Enter\x20in\x20DIALOGFLOW\x20(%s)\x20block',_0x5c8bdf[_0xe98c('0x2e')]));if(!this[_0xe98c('0x81')](_0x5c8bdf[_0xe98c('0x75')])){return this[_0xe98c('0xc')][_0xe98c('0xa4')](_0xe98c('0xe0'));}if(!this[_0xe98c('0x81')](_0x5c8bdf[_0xe98c('0x52')])){return this[_0xe98c('0xc')][_0xe98c('0xa4')](_0xe98c('0xa2'));}this[_0xe98c('0xc')]['bot']=!![];this[_0xe98c('0x2d')](_0x5c8bdf);this[_0xe98c('0x37')](_0x5c8bdf['text'],'in','','');this[_0xe98c('0xc')][_0xe98c('0xa4')](util[_0xe98c('0x22')](_0xe98c('0xe1'),_0x5c8bdf[_0xe98c('0x52')]));var _0x3de88a=this[_0xe98c('0x74')][_0xe98c('0x69')](this,_0x5c8bdf);if(_0x3de88a){for(var _0x2bbd7c in _0x3de88a){if(_0x3de88a[_0xe98c('0x90')](_0x2bbd7c)){this[_0xe98c('0xc')][_0xe98c('0xd5')](util[_0xe98c('0x22')]('DIALOGFLOW_%s',_0x2bbd7c[_0xe98c('0x62')]()),_0x3de88a[_0x2bbd7c]);}}this[_0xe98c('0x37')](_0x3de88a[_0xe98c('0xe2')],_0xe98c('0xe3'),_0xe98c('0xdf'),'');return this['channel'][_0xe98c('0xa4')](util[_0xe98c('0x22')](_0xe98c('0xe4'),_0x3de88a[_0xe98c('0xe2')]));}return this[_0xe98c('0xc')][_0xe98c('0x29')](_0x5c8bdf,_0xe98c('0xe5'));};AGIVertices[_0xe98c('0xf')][_0xe98c('0xe6')]=function(_0x3b34f9){logger[_0xe98c('0x24')](util['format'](_0xe98c('0xe7'),_0x3b34f9['label']));if(!this['isConfigured'](_0x3b34f9[_0xe98c('0x78')])){return this[_0xe98c('0xc')][_0xe98c('0xa4')](_0xe98c('0xe8'));}if(!this[_0xe98c('0x81')](_0x3b34f9[_0xe98c('0x79')])){return this['channel'][_0xe98c('0xa4')](_0xe98c('0xe9'));}if(!this[_0xe98c('0x81')](_0x3b34f9['private_key'])){return this[_0xe98c('0xc')]['noop']('no\x20private_key\x20configured');}if(!this[_0xe98c('0x81')](_0x3b34f9['dialogflowV2_language'])){return this[_0xe98c('0xc')][_0xe98c('0xa4')]('no\x20anguage\x20configured');}if(!this[_0xe98c('0x81')](_0x3b34f9[_0xe98c('0x52')])){return this[_0xe98c('0xc')]['noop']('no\x20text\x20configured');}this['channel']['bot']=!![];this[_0xe98c('0x2d')](_0x3b34f9);this['createSquareMessage'](_0x3b34f9[_0xe98c('0x52')],'in','','');this[_0xe98c('0xc')][_0xe98c('0xa4')](util[_0xe98c('0x22')](_0xe98c('0xea'),_0x3b34f9[_0xe98c('0x52')]));var _0x7e5682=this[_0xe98c('0x77')][_0xe98c('0x69')](this,_0x3b34f9);if(_0x7e5682){for(var _0x5c87c4 in _0x7e5682){if(_0x7e5682['hasOwnProperty'](_0x5c87c4)){if(_0x5c87c4!=='providerResponse'){this[_0xe98c('0xc')][_0xe98c('0xd5')](util[_0xe98c('0x22')]('DIALOGFLOW_%s',_0x5c87c4[_0xe98c('0x62')]()),_0x7e5682[_0x5c87c4]);}}}this['createSquareMessage'](_0x7e5682[_0xe98c('0xe2')],_0xe98c('0xe3'),'dialogflowV2',_0x7e5682[_0xe98c('0xeb')]);return this[_0xe98c('0xc')]['noop'](util[_0xe98c('0x22')](_0xe98c('0xec'),_0x7e5682[_0xe98c('0xe2')]));}return this[_0xe98c('0xc')][_0xe98c('0x29')](_0x3b34f9,_0xe98c('0xed'));};AGIVertices['prototype'][_0xe98c('0xee')]=function(_0x594991){logger[_0xe98c('0x24')](util[_0xe98c('0x22')](_0xe98c('0xef'),_0x594991[_0xe98c('0x2e')]));if(!this['isConfigured'](_0x594991[_0xe98c('0xf0')])){return this[_0xe98c('0xc')][_0xe98c('0xa4')](_0xe98c('0xf1'));}if(!this[_0xe98c('0x81')](_0x594991[_0xe98c('0xf2')])){return this['channel'][_0xe98c('0xa4')](_0xe98c('0xf3'));}if(!this[_0xe98c('0x81')](_0x594991[_0xe98c('0xf4')])){return this['channel'][_0xe98c('0xa4')](_0xe98c('0xf5'));}if(!this[_0xe98c('0x81')](_0x594991[_0xe98c('0xf6')])){return this[_0xe98c('0xc')][_0xe98c('0xa4')](_0xe98c('0xa2'));}this[_0xe98c('0xc')][_0xe98c('0xf7')]=!![];this[_0xe98c('0x2d')](_0x594991);this[_0xe98c('0x37')](_0x594991[_0xe98c('0x52')],'in','','');this[_0xe98c('0xc')][_0xe98c('0xa4')](util[_0xe98c('0x22')](_0xe98c('0xf8'),_0x594991[_0xe98c('0x52')]));var _0x28a0d1=this[_0xe98c('0x7b')][_0xe98c('0x69')](this,_0x594991);if(_0x28a0d1){for(var _0x4ccfa0 in _0x28a0d1){if(_0x28a0d1[_0xe98c('0x90')](_0x4ccfa0)){this['channel'][_0xe98c('0xd5')](util[_0xe98c('0x22')](_0xe98c('0xf9'),_0x4ccfa0[_0xe98c('0x62')]()),_0x28a0d1[_0x4ccfa0]);}}this[_0xe98c('0x37')](_0x28a0d1[_0xe98c('0xe2')],_0xe98c('0xe3'),_0xe98c('0xee'),'');if(_0x28a0d1[_0xe98c('0xfa')]){this[_0xe98c('0xc')]['noop'](util[_0xe98c('0x22')](_0xe98c('0xfb'),_0x28a0d1['audiofile']));var _0x40e57c=this[_0xe98c('0xc')]['streamFile'](_0x28a0d1['audiofile']);try{fs['unlink'](_0x28a0d1[_0xe98c('0xfa')]+_0xe98c('0xfc'));}catch(_0x3a09f4){logger[_0xe98c('0x29')](_0x3a09f4);}return _0x40e57c;}else{return this['channel']['noop'](util[_0xe98c('0x22')](_0xe98c('0xfd'),_0x28a0d1[_0xe98c('0xe2')]));}}return this[_0xe98c('0xc')][_0xe98c('0x29')](_0x594991,_0xe98c('0xfe'));};AGIVertices[_0xe98c('0xf')][_0xe98c('0xff')]=function(_0x5291c1){logger[_0xe98c('0x24')](util[_0xe98c('0x22')](_0xe98c('0x100'),_0x5291c1[_0xe98c('0x2e')]));return this[_0xe98c('0xc')][_0xe98c('0xa4')]('end');};AGIVertices[_0xe98c('0xf')][_0xe98c('0x101')]=function(_0x23dbf0){logger['info'](util[_0xe98c('0x22')](_0xe98c('0x102'),_0x23dbf0[_0xe98c('0x2e')]));var _0x547962='';if(_0x23dbf0[_0xe98c('0x103')]){if(!this[_0xe98c('0x81')](_0x23dbf0[_0xe98c('0x103')])){return this[_0xe98c('0xc')][_0xe98c('0x29')](_0x23dbf0,_0xe98c('0x104'));}else{var _0x581c06=parseInt(_0x23dbf0[_0xe98c('0x103')],0xa);if(isNaN(_0x581c06)){_0x547962=_0x23dbf0['trunk_id'];}else{_0x547962=this[_0xe98c('0x105')][_0xe98c('0x69')](this,_0x23dbf0[_0xe98c('0x103')]);if(!_0x547962){return this[_0xe98c('0xc')][_0xe98c('0x29')](_0x23dbf0,_0xe98c('0x106'));}}}}else if(_0x23dbf0['trunk_name']){_0x547962=_0x23dbf0['trunk_name'];}else{return this['channel']['error'](_0x23dbf0,'no\x20trunk\x20selected');}var _0x357ae0=this['channel'][_0xe98c('0x4c')](_0xe98c('0x107'),[util['format']('SIP/%s/%s',_0x547962,_0x23dbf0[_0xe98c('0x108')]),_0x23dbf0[_0xe98c('0x5d')],_0x23dbf0['opts'],_0x23dbf0[_0xe98c('0x5c')]]);if(_0x357ae0[_0xe98c('0xa3')]===-0x1){return _0x357ae0;}return this['channel']['noop'](util[_0xe98c('0x22')](_0xe98c('0xde'),'DIAL'));};AGIVertices[_0xe98c('0xf')][_0xe98c('0x109')]=function(_0x8140cd){logger[_0xe98c('0x24')](util[_0xe98c('0x22')](_0xe98c('0x10a'),_0x8140cd[_0xe98c('0x2e')]));return this['channel'][_0xe98c('0xa4')](_0xe98c('0x109'));};AGIVertices[_0xe98c('0xf')][_0xe98c('0xa')]=function(_0x4bb286){logger[_0xe98c('0x24')](util[_0xe98c('0x22')](_0xe98c('0x10b'),_0x4bb286[_0xe98c('0x2e')]));if(_0x4bb286[_0xe98c('0x9e')]===0x0){return this[_0xe98c('0x9f')](_0x4bb286);}_0x4bb286[_0xe98c('0x9e')]-=0x1;if(!this['isConfigured'](_0x4bb286[_0xe98c('0x10c')])){return this['channel'][_0xe98c('0x29')](_0x4bb286,'no\x20file\x20audio\x20selected');}var _0x1cb01d=this[_0xe98c('0x10d')][_0xe98c('0x69')](this,_0x4bb286[_0xe98c('0x10c')]);if(!_0x1cb01d){return this[_0xe98c('0xc')]['error'](_0x4bb286,_0xe98c('0x10e'));}if(!this[_0xe98c('0x81')](_0x4bb286[_0xe98c('0xd0')])){return this[_0xe98c('0xc')][_0xe98c('0x29')]('no\x20variable\x20selected\x20for\x20the\x20result');}var _0x4eae7d=this[_0xe98c('0xc')][_0xe98c('0x10f')](_0x1cb01d,_0x4bb286[_0xe98c('0x110')],_0x4bb286['maxdigit']);var _0x9de981=_0x4eae7d['result']?_0x4eae7d['result'][_0xe98c('0x3f')]():'';logger[_0xe98c('0x24')](_0xe98c('0x111'),JSON[_0xe98c('0x6c')](_0x4eae7d));if(_0x4eae7d[_0xe98c('0xa3')]===-0x1){this[_0xe98c('0x2d')][_0xe98c('0x69')](this,_0x4bb286,_0x9de981);return _0x4eae7d;}else if(_0x4eae7d[_0xe98c('0x9c')]===_0xe98c('0x5d')){_0x4eae7d['result']=_0x9de981['length']>=parseInt(_0x4bb286[_0xe98c('0x112')])?'x':'i';}else{_0x4eae7d['result']=_0x9de981[_0xe98c('0x9a')]>=parseInt(_0x4bb286[_0xe98c('0x112')])&&_0x9de981[_0xe98c('0x9a')]<=parseInt(_0x4bb286[_0xe98c('0x113')])?'x':'i';}var _0x8f7776=this[_0xe98c('0x10')][_0xe98c('0x69')](this,_0x4bb286[_0xe98c('0xd0')]);if(!_0x8f7776){return this[_0xe98c('0xc')]['error'](_0x4bb286,_0xe98c('0x114'));}this[_0xe98c('0xc')][_0xe98c('0xd5')](_0x8f7776,_0x9de981);if(this[_0xe98c('0x81')](_0x4bb286['hiddendigitsnum'])){var _0x405b3c=parseInt(_0x4bb286[_0xe98c('0x115')],0xa);var _0x297275=rs[_0xe98c('0x116')]({'charset':'*','length':_0x405b3c});var _0x3ef96d=_0x9de981['length'];if(_0x3ef96d>0x0){if(_0x3ef96d>_0x405b3c){this['createSquareDetailsReport']['sync'](this,_0x4bb286,_0x4bb286[_0xe98c('0x117')]===_0xe98c('0x118')?_0x297275+_0x9de981[_0xe98c('0x119')](_0x405b3c):_0x9de981[_0xe98c('0x119')](0x0,_0x3ef96d-_0x405b3c)+_0x297275);}else{this[_0xe98c('0x2d')]['sync'](this,_0x4bb286,rs[_0xe98c('0x116')]({'charset':'*','length':_0x3ef96d}));}}else{this[_0xe98c('0x2d')]['sync'](this,_0x4bb286,'');}}else{this[_0xe98c('0x2d')][_0xe98c('0x69')](this,_0x4bb286,_0x9de981);}return _0x4eae7d;};AGIVertices[_0xe98c('0xf')][_0xe98c('0xb')]=function(_0x400cb9){logger[_0xe98c('0x24')](util[_0xe98c('0x22')](_0xe98c('0x11a'),_0x400cb9[_0xe98c('0x2e')]));return this[_0xe98c('0xa')](_0x400cb9);};AGIVertices['prototype']['goal']=function(_0x403c8f){logger[_0xe98c('0x24')](util['format'](_0xe98c('0x11b'),_0x403c8f[_0xe98c('0x2e')]));this[_0xe98c('0x2d')][_0xe98c('0x69')](this,_0x403c8f,_0x403c8f[_0xe98c('0x11c')]);return this[_0xe98c('0xc')][_0xe98c('0xa4')](util[_0xe98c('0x22')](_0xe98c('0x11d'),_0x403c8f[_0xe98c('0x11c')]));};AGIVertices[_0xe98c('0xf')][_0xe98c('0x11e')]=function(_0x155163){logger[_0xe98c('0x24')](util[_0xe98c('0x22')](_0xe98c('0x11f'),_0x155163[_0xe98c('0x2e')]));if(!this['isConfigured'](_0x155163['aws_access_key_id'])||!this[_0xe98c('0x81')](_0x155163[_0xe98c('0x83')])){return this['channel'][_0xe98c('0xa4')](_0xe98c('0x120'));}if(!this[_0xe98c('0x81')](_0x155163[_0xe98c('0x52')])){return this[_0xe98c('0xc')]['noop'](_0xe98c('0xa2'));}this['channel']['noop'](util[_0xe98c('0x22')]('Trying\x20aws\x20Polly\x20%s',_0x155163[_0xe98c('0x52')]));var _0x369ca0=this[_0xe98c('0x121')][_0xe98c('0x69')](this,_0x155163);if(_0x369ca0){this[_0xe98c('0xc')][_0xe98c('0xa4')](util[_0xe98c('0x22')](_0xe98c('0x122'),_0x369ca0));var _0x53b472=this[_0xe98c('0xc')][_0xe98c('0x123')](_0x369ca0);try{fs[_0xe98c('0x124')](_0x369ca0+_0xe98c('0xfc'));}catch(_0xe65b26){logger[_0xe98c('0x29')](_0xe65b26);}return _0x53b472;}return this[_0xe98c('0xc')][_0xe98c('0x29')](_0x155163,_0xe98c('0x125'));};AGIVertices[_0xe98c('0xf')][_0xe98c('0x126')]=function(_0x2bf7b3){logger[_0xe98c('0x24')](util[_0xe98c('0x22')]('Enter\x20in\x20Amazon\x20Lex\x20(%s)\x20block',_0x2bf7b3[_0xe98c('0x2e')]));if(!this[_0xe98c('0x81')](_0x2bf7b3['aws_access_key_id'])||!this['isConfigured'](_0x2bf7b3[_0xe98c('0x83')])){return this[_0xe98c('0xc')][_0xe98c('0xa4')](_0xe98c('0x120'));}if(!this[_0xe98c('0x81')](_0x2bf7b3[_0xe98c('0x127')])){return this[_0xe98c('0xc')][_0xe98c('0xa4')](_0xe98c('0x128'));}if(!this[_0xe98c('0x81')](_0x2bf7b3[_0xe98c('0x52')])){return this[_0xe98c('0xc')][_0xe98c('0xa4')]('no\x20text\x20configured');}this[_0xe98c('0xc')]['bot']=!![];this['createSquareDetailsReport'](_0x2bf7b3);this[_0xe98c('0x37')](_0x2bf7b3[_0xe98c('0x52')],'in','','');this[_0xe98c('0xc')][_0xe98c('0xa4')](util[_0xe98c('0x22')]('Trying\x20Amazon\x20Lex:\x20%s',_0x2bf7b3[_0xe98c('0x52')]));var _0x280870=this[_0xe98c('0x87')]['sync'](this,_0x2bf7b3);if(_0x280870){for(var _0x131790 in _0x280870){if(_0x280870[_0xe98c('0x90')](_0x131790)&&_[_0xe98c('0x91')](_0x280870[_0x131790])){this['channel']['setVariable'](util[_0xe98c('0x22')](_0xe98c('0x129'),_0x131790[_0xe98c('0x62')]()),_0x280870[_0x131790]);}}if(_['isNil'](_0x280870[_0xe98c('0x71')])){return this[_0xe98c('0xc')]['noop']('Amazon\x20Lex\x20ready\x20for\x20fulfillment');}else{this[_0xe98c('0x37')](_0x280870['message'],_0xe98c('0xe3'),_0xe98c('0x12a'),'');return this[_0xe98c('0xc')][_0xe98c('0xa4')](util[_0xe98c('0x22')](_0xe98c('0x12b'),_0x280870['message']));}}return this[_0xe98c('0xc')][_0xe98c('0x29')](_0x2bf7b3,'Amazon\x20Lex\x20is\x20unreachable');};AGIVertices[_0xe98c('0xf')][_0xe98c('0x12c')]=function(_0x5a2596){logger[_0xe98c('0x24')](util['format'](_0xe98c('0x12d'),_0x5a2596['label'],_0x5a2596[_0xe98c('0x5d')]));if(!this[_0xe98c('0x81')](_0x5a2596[_0xe98c('0x75')])){return this[_0xe98c('0xc')][_0xe98c('0xa4')](_0xe98c('0xe0'));}var _0x5f2e12=_0xe98c('0x12e');var _0x50441c=util[_0xe98c('0x22')](_0xe98c('0x12f'),FILES_PATH,rs['generate'](0x4));var _0x2b6e2f=util[_0xe98c('0x22')](_0xe98c('0x98'),_0x50441c,_0x5f2e12);var _0x3d17fe=!![];if(_0x5a2596[_0xe98c('0x130')]===_0xe98c('0x131')){_0x3d17fe=![];}var _0x52bf78=this['channel'][_0xe98c('0x132')](_0x50441c,_0x5f2e12,_0x5a2596[_0xe98c('0x133')],_0x5a2596[_0xe98c('0x5d')],undefined,_0x3d17fe);if(_0x52bf78[_0xe98c('0xa3')]!==-0x1){this['channel']['noop'](util[_0xe98c('0x22')]('google\x20%s\x20file\x20created',_0x2b6e2f));var _0x4c3ec6=this[_0xe98c('0x89')][_0xe98c('0x69')](this,_0x5a2596,_0x2b6e2f);if(_0x4c3ec6){for(var _0x3c6290 in _0x4c3ec6){if(_0x4c3ec6['hasOwnProperty'](_0x3c6290)){this[_0xe98c('0xc')][_0xe98c('0xd5')](util[_0xe98c('0x22')](_0xe98c('0x134'),_0x3c6290[_0xe98c('0x62')]()),_0x4c3ec6[_0x3c6290]);}}return this['channel'][_0xe98c('0xa4')](util[_0xe98c('0x22')](_0xe98c('0x135'),JSON[_0xe98c('0x6c')](_0x4c3ec6)));}}return _0x52bf78;};AGIVertices[_0xe98c('0xf')][_0xe98c('0x136')]=function(_0x42982d){logger[_0xe98c('0x24')](util[_0xe98c('0x22')]('Enter\x20in\x20TILDEASR\x20(%s)\x20block',_0x42982d['label']));if(!this[_0xe98c('0x81')](_0x42982d[_0xe98c('0x8c')])){return this[_0xe98c('0xc')]['noop']('no\x20appid\x20configured');}if(!this[_0xe98c('0x81')](_0x42982d['appsecret'])){return this[_0xe98c('0xc')][_0xe98c('0xa4')](_0xe98c('0x137'));}var _0x431bcf=_0xe98c('0x12e');var _0x50d512=util[_0xe98c('0x22')]('%s/recordings/%s',FILES_PATH,rs['generate'](0x4));var _0x24ea43=util['format'](_0xe98c('0x98'),_0x50d512,_0x431bcf);var _0x26f43b=!![];if(_0x42982d['beep']==='NOBEEP'){_0x26f43b=![];}var _0x1e2094=this[_0xe98c('0xc')][_0xe98c('0x132')](_0x50d512,_0x431bcf,_0x42982d[_0xe98c('0x133')],_0x42982d[_0xe98c('0x5d')],undefined,_0x26f43b);if(_0x1e2094['result']!==-0x1){this[_0xe98c('0xc')][_0xe98c('0xa4')](util[_0xe98c('0x22')](_0xe98c('0x138'),_0x24ea43));var _0x564373=this[_0xe98c('0x8b')][_0xe98c('0x69')](this,_0x42982d,_0x24ea43);if(_0x564373){for(var _0x1315a6 in _0x564373){if(_0x564373[_0xe98c('0x90')](_0x1315a6)){this[_0xe98c('0xc')][_0xe98c('0xd5')](util['format']('TILDE_ASR_%s',_0x1315a6[_0xe98c('0x62')]()),_0x564373[_0x1315a6]);}}return this[_0xe98c('0xc')][_0xe98c('0xa4')](util[_0xe98c('0x22')](_0xe98c('0x139'),JSON[_0xe98c('0x6c')](_0x564373)));}}return _0x1e2094;};AGIVertices[_0xe98c('0xf')][_0xe98c('0x13a')]=function(_0x323f3b){logger[_0xe98c('0x24')](util[_0xe98c('0x22')](_0xe98c('0x13b'),_0x323f3b['label']));return this[_0xe98c('0xc')]['continueAt'](_0x323f3b[_0xe98c('0x13c')],_0x323f3b[_0xe98c('0x33')],_0x323f3b[_0xe98c('0x13d')]);};AGIVertices[_0xe98c('0xf')][_0xe98c('0x13e')]=function(_0x30f3fd){logger[_0xe98c('0x24')](util[_0xe98c('0x22')]('Enter\x20in\x20GOTOIF\x20(%s)\x20block',_0x30f3fd[_0xe98c('0x2e')]));if(!this[_0xe98c('0x81')](_0x30f3fd[_0xe98c('0x13f')])){return this['channel'][_0xe98c('0x29')](_0x30f3fd,_0xe98c('0x140'));}try{var _0x19da5b=eval(_0x30f3fd[_0xe98c('0x13f')])?_0xe98c('0x141'):'false';this['channel'][_0xe98c('0xa4')](util[_0xe98c('0x22')]('EVAL\x20CONDITION\x20%s\x20%s',_0x30f3fd[_0xe98c('0x13f')],_0x19da5b));return{'code':0xc8,'result':_0x19da5b};}catch(_0x54de2c){return{'code':0xc8,'result':_0xe98c('0x142')};}};AGIVertices[_0xe98c('0xf')][_0xe98c('0x143')]=function(_0x3dc8d3){logger[_0xe98c('0x24')](util['format'](_0xe98c('0x144'),_0x3dc8d3[_0xe98c('0x2e')]));if(!this[_0xe98c('0x81')](_0x3dc8d3['interval_id'])){return this[_0xe98c('0xc')][_0xe98c('0x29')](_0x3dc8d3,_0xe98c('0x145'));}var _0x95d909=this[_0xe98c('0x1d')][_0xe98c('0x69')](this,_0x3dc8d3[_0xe98c('0x146')]);if(!_0x95d909){return this[_0xe98c('0xc')][_0xe98c('0x29')](_0x3dc8d3,_0xe98c('0x147'));}for(var _0x1bb722=0x0;_0x1bb722<_0x95d909['length'];_0x1bb722+=0x1){var _0x8d87e2=this[_0xe98c('0xc')]['getVariable'](util['format'](_0xe98c('0x148'),_0x95d909[_0x1bb722]));if(_0x8d87e2['result']===-0x1){return _0x8d87e2;}logger[_0xe98c('0x24')](util['format'](_0xe98c('0x149'),_0x95d909[_0x1bb722],_0x8d87e2[_0xe98c('0x9c')]));if(_0x8d87e2[_0xe98c('0x9c')]===_0xe98c('0x141')){logger[_0xe98c('0x24')](util[_0xe98c('0x22')](_0xe98c('0x149'),_0x95d909[_0x1bb722],'true'));this['channel'][_0xe98c('0xa4')](util[_0xe98c('0x22')](_0xe98c('0x149'),_0x95d909[_0x1bb722],_0xe98c('0x141')));return{'code':0xc8,'result':_0xe98c('0x141')};}else{logger[_0xe98c('0x24')](util[_0xe98c('0x22')]('IFTIME\x20%s\x20%s',_0x95d909[_0x1bb722],'false'));this['channel'][_0xe98c('0xa4')](util[_0xe98c('0x22')](_0xe98c('0x149'),_0x95d909[_0x1bb722],_0xe98c('0x142')));}}return{'code':0xc8,'result':_0xe98c('0x142')};};AGIVertices[_0xe98c('0xf')][_0xe98c('0x14a')]=function(_0x48592b){logger['info'](util[_0xe98c('0x22')](_0xe98c('0x14b'),_0x48592b[_0xe98c('0x2e')]));return this[_0xe98c('0xc')][_0xe98c('0x14a')]();};AGIVertices[_0xe98c('0xf')][_0xe98c('0x14c')]=function(_0x31ee25){logger['info'](util[_0xe98c('0x22')](_0xe98c('0x14d'),_0x31ee25[_0xe98c('0x2e')]));if(!this[_0xe98c('0x81')](_0x31ee25['key'])){return this['channel']['noop']('no\x20key\x20configured');}var _0x12ea87=_0xe98c('0x12e');var _0x53933c=util[_0xe98c('0x22')](_0xe98c('0x12f'),FILES_PATH,rs[_0xe98c('0x116')](0x4));var _0x19c075=util[_0xe98c('0x22')](_0xe98c('0x98'),_0x53933c,_0x12ea87);var _0x534da2=!![];if(_0x31ee25['beep']===_0xe98c('0x131')){_0x534da2=![];}var _0x1e9964=this['channel'][_0xe98c('0x132')](_0x53933c,_0x12ea87,_0x31ee25[_0xe98c('0x133')],_0x31ee25['timeout'],undefined,_0x534da2);if(_0x1e9964['result']!==-0x1){this[_0xe98c('0xc')][_0xe98c('0xa4')](util['format']('ispeech\x20%s\x20file\x20created',_0x19c075));var _0xd5633f=this[_0xe98c('0x7f')]['sync'](this,_0x31ee25,_0x19c075);if(_0xd5633f){for(var _0x471405 in _0xd5633f){if(_0xd5633f[_0xe98c('0x90')](_0x471405)){this[_0xe98c('0xc')][_0xe98c('0xd5')](util[_0xe98c('0x22')]('ISPEECH_ASR_%s',_0x471405[_0xe98c('0x62')]()),_0xd5633f[_0x471405]);}}return this[_0xe98c('0xc')]['noop'](util[_0xe98c('0x22')](_0xe98c('0x14e'),JSON[_0xe98c('0x6c')](_0xd5633f)));}}return _0x1e9964;};AGIVertices[_0xe98c('0xf')][_0xe98c('0x14f')]=function(_0x235017){logger[_0xe98c('0x24')](util[_0xe98c('0x22')](_0xe98c('0x150'),_0x235017[_0xe98c('0x2e')]));if(!this['isConfigured'](_0x235017[_0xe98c('0x75')])){return this[_0xe98c('0xc')]['noop'](_0xe98c('0xe0'));}if(!this[_0xe98c('0x81')](_0x235017[_0xe98c('0x52')])){return this[_0xe98c('0xc')][_0xe98c('0xa4')](_0xe98c('0xa2'));}this['channel'][_0xe98c('0xa4')](util['format'](_0xe98c('0x151'),_0x235017[_0xe98c('0x52')]));var _0x1c7837=this[_0xe98c('0x7c')][_0xe98c('0x69')](this,_0x235017);if(_0x1c7837){this[_0xe98c('0xc')]['noop'](util[_0xe98c('0x22')](_0xe98c('0x152'),_0x1c7837));var _0x5bd4ab=this[_0xe98c('0xc')][_0xe98c('0x123')](_0x1c7837,_0x235017[_0xe98c('0x133')]);try{fs[_0xe98c('0x124')](_0x1c7837+_0xe98c('0xfc'));}catch(_0x47a487){logger[_0xe98c('0x29')](_0x47a487);}return _0x5bd4ab;}return this[_0xe98c('0xc')]['error'](_0x235017,_0xe98c('0x153'));};AGIVertices[_0xe98c('0xf')][_0xe98c('0x154')]=function(_0x5a0554){logger[_0xe98c('0x24')](util[_0xe98c('0x22')]('Enter\x20in\x20LOGIN\x20(%s)\x20block',_0x5a0554[_0xe98c('0x2e')]));if(!this[_0xe98c('0x81')](_0x5a0554[_0xe98c('0x155')])){return this['channel'][_0xe98c('0x29')](_0x5a0554,_0xe98c('0x156'));}logger[_0xe98c('0x24')](util[_0xe98c('0x22')](_0xe98c('0x157'),this[_0xe98c('0xc')][_0xe98c('0x31')],_0x5a0554[_0xe98c('0x155')]));var _0xc0e22=this[_0xe98c('0x48')][_0xe98c('0x69')](this,_0x5a0554[_0xe98c('0x155')]);if(_0xc0e22){logger[_0xe98c('0x24')](util[_0xe98c('0x22')]('AGENT\x20%s\x20FOUND\x20BY',this[_0xe98c('0xc')][_0xe98c('0x31')],_0x5a0554[_0xe98c('0x155')]));this[_0xe98c('0xc')][_0xe98c('0xa4')](util[_0xe98c('0x22')](_0xe98c('0x158'),this['channel']['callerid'],_0x5a0554[_0xe98c('0x155')]));return{'code':0xc8,'result':'success'};}else{logger[_0xe98c('0x24')](util['format'](_0xe98c('0x159'),this[_0xe98c('0xc')][_0xe98c('0x31')],_0x5a0554['findBy']));this['channel'][_0xe98c('0xa4')](util[_0xe98c('0x22')](_0xe98c('0x159'),this['channel'][_0xe98c('0x31')],_0x5a0554[_0xe98c('0x155')]));return{'code':0xc8,'result':'failure'};}};AGIVertices[_0xe98c('0xf')][_0xe98c('0x15a')]=function(_0x4d68f2){logger[_0xe98c('0x24')](util[_0xe98c('0x22')](_0xe98c('0x15b'),_0x4d68f2['label']));if(!this[_0xe98c('0x81')](_0x4d68f2[_0xe98c('0x155')])){return this[_0xe98c('0xc')][_0xe98c('0x29')](_0x4d68f2,_0xe98c('0x156'));}logger[_0xe98c('0x24')](util[_0xe98c('0x22')]('FIND\x20AGENT\x20%s\x20BY\x20%s',this[_0xe98c('0xc')][_0xe98c('0x31')],_0x4d68f2[_0xe98c('0x155')]));var _0x25c6f4=this[_0xe98c('0x47')]['sync'](this,_0x4d68f2[_0xe98c('0x155')]);if(_0x25c6f4){logger[_0xe98c('0x24')](util[_0xe98c('0x22')](_0xe98c('0x158'),this['channel'][_0xe98c('0x31')],_0x4d68f2['findBy']));this['channel'][_0xe98c('0xa4')](util[_0xe98c('0x22')]('AGENT\x20%s\x20FOUND\x20BY',this[_0xe98c('0xc')][_0xe98c('0x31')],_0x4d68f2[_0xe98c('0x155')]));return{'code':0xc8,'result':'success'};}else{logger[_0xe98c('0x24')](util[_0xe98c('0x22')](_0xe98c('0x159'),this['channel'][_0xe98c('0x31')],_0x4d68f2[_0xe98c('0x155')]));this[_0xe98c('0xc')][_0xe98c('0xa4')](util[_0xe98c('0x22')]('AGENT\x20%s\x20NOT\x20FOUND\x20BY',this['channel'][_0xe98c('0x31')],_0x4d68f2['findBy']));return{'code':0xc8,'result':'failure'};}};AGIVertices[_0xe98c('0xf')][_0xe98c('0x15c')]=function(_0x48ea09){logger['info'](util['format'](_0xe98c('0x15d'),_0x48ea09[_0xe98c('0x2e')]));if(!this[_0xe98c('0x81')](_0x48ea09['operation'])){return this[_0xe98c('0xc')][_0xe98c('0x29')](_0x48ea09,'no\x20operation\x20configured');}this[_0xe98c('0xc')][_0xe98c('0xa4')](util[_0xe98c('0x22')]('math\x20%s',_0x48ea09[_0xe98c('0x15e')]));var _0x242b7b=eval(_0x48ea09[_0xe98c('0x15e')]);if(!this['isConfigured'](_0x48ea09[_0xe98c('0xd0')])){return this[_0xe98c('0xc')]['noop']('no\x20variable\x20selected\x20for\x20the\x20result');}var _0x399244=this['getVariable'][_0xe98c('0x69')](this,_0x48ea09['variable_id']);if(!_0x399244){return this['channel'][_0xe98c('0x29')](_0x48ea09,_0xe98c('0x114'));}if(_['isArray'](_0x242b7b)){var _0x5845cc=this;_0x242b7b[_0xe98c('0xd2')](function(_0x765101,_0xcdb942){_0x5845cc[_0xe98c('0xc')][_0xe98c('0xd5')](util[_0xe98c('0x22')](_0xe98c('0x15f'),_0x399244,_0xcdb942),_0x765101);});return this[_0xe98c('0xc')][_0xe98c('0xa4')](util['format'](_0xe98c('0x160'),_0x399244));}else{return this[_0xe98c('0xc')]['setVariable'](_0x399244,_0x242b7b);}};AGIVertices[_0xe98c('0xf')][_0xe98c('0x9')]=function(_0x1f3733){logger[_0xe98c('0x24')](util[_0xe98c('0x22')](_0xe98c('0x161'),_0x1f3733[_0xe98c('0x2e')]));if(_0x1f3733[_0xe98c('0x9e')]===0x0){return this[_0xe98c('0x9f')](_0x1f3733);}_0x1f3733[_0xe98c('0x9e')]-=0x1;if(!this[_0xe98c('0x81')](_0x1f3733[_0xe98c('0x10c')])){return this['channel'][_0xe98c('0x29')](_0x1f3733,_0xe98c('0x162'));}var _0x53678b=this['getSound']['sync'](this,_0x1f3733[_0xe98c('0x10c')]);if(!_0x53678b){return this[_0xe98c('0xc')]['error'](_0x1f3733,'no\x20file\x20audio\x20found');}var _0x3d014e=this['channel'][_0xe98c('0x10f')](_0x53678b,_0x1f3733[_0xe98c('0x110')],_0x1f3733[_0xe98c('0x163')]);var _0x355067=_0x3d014e[_0xe98c('0xa3')];if(_0x3d014e[_0xe98c('0xa3')]===-0x1){this[_0xe98c('0x2d')][_0xe98c('0x69')](this,_0x1f3733,'-1');return _0x3d014e;}else if(_0x3d014e['extra']==='timeout'){_0x3d014e[_0xe98c('0xa3')]=_0x3d014e[_0xe98c('0xa3')][_0xe98c('0x9a')]>0x0?_0x3d014e['result']:'t';}else if(_[_0xe98c('0x38')](_0x3d014e[_0xe98c('0xa3')])){_0x3d014e[_0xe98c('0xa3')]='#';_0x355067='#';}if(!this[_0xe98c('0x81')](_0x1f3733[_0xe98c('0xd0')])){this[_0xe98c('0xc')]['noop'](_0xe98c('0xd1'));}else{var _0x1d4ffb=this[_0xe98c('0x10')][_0xe98c('0x69')](this,_0x1f3733[_0xe98c('0xd0')]);if(!_0x1d4ffb){return this[_0xe98c('0xc')]['error'](_0x1f3733,_0xe98c('0x114'));}this[_0xe98c('0xc')][_0xe98c('0xd5')](_0x1d4ffb,_0x355067);}this['createSquareDetailsReport'][_0xe98c('0x69')](this,_0x1f3733,_0x355067);return _0x3d014e;};AGIVertices[_0xe98c('0xf')][_0xe98c('0xa4')]=function(_0x26d958){logger[_0xe98c('0x24')](util['format'](_0xe98c('0x164'),_0x26d958['label']));return this[_0xe98c('0xc')][_0xe98c('0xa4')](_0x26d958[_0xe98c('0x165')]||_0x26d958[_0xe98c('0x2e')]);};AGIVertices[_0xe98c('0xf')][_0xe98c('0x166')]=function(_0x5d653b){logger[_0xe98c('0x24')](util[_0xe98c('0x22')](_0xe98c('0x167'),_0x5d653b['label']));if(!this[_0xe98c('0x81')](_0x5d653b[_0xe98c('0x155')])){return this[_0xe98c('0xc')][_0xe98c('0x29')](_0x5d653b,'no\x20find\x20by\x20configured');}logger['info'](util['format'](_0xe98c('0x157'),this[_0xe98c('0xc')][_0xe98c('0x31')],_0x5d653b[_0xe98c('0x155')]));var _0x173fab=this[_0xe98c('0x41')][_0xe98c('0x69')](this,_0x5d653b[_0xe98c('0x168')]);var _0x42f6c5=this[_0xe98c('0x43')][_0xe98c('0x69')](this,_0x5d653b[_0xe98c('0x155')],_0x173fab);if(_0x42f6c5){logger[_0xe98c('0x24')](util[_0xe98c('0x22')](_0xe98c('0x158'),this['channel']['callerid'],_0x5d653b[_0xe98c('0x155')]));this[_0xe98c('0xc')]['noop'](util[_0xe98c('0x22')](_0xe98c('0x158'),this[_0xe98c('0xc')][_0xe98c('0x31')],_0x5d653b[_0xe98c('0x155')]));return{'code':0xc8,'result':_0xe98c('0x169')};}else{logger[_0xe98c('0x24')](util[_0xe98c('0x22')](_0xe98c('0x159'),this[_0xe98c('0xc')][_0xe98c('0x31')],_0x5d653b['findBy']));this[_0xe98c('0xc')][_0xe98c('0xa4')](util[_0xe98c('0x22')](_0xe98c('0x158'),this[_0xe98c('0xc')]['callerid'],_0x5d653b[_0xe98c('0x155')]));return{'code':0xc8,'result':_0xe98c('0x16a')};}};AGIVertices[_0xe98c('0xf')][_0xe98c('0x16b')]=function(_0x1af682){logger[_0xe98c('0x24')](util['format'](_0xe98c('0x16c'),_0x1af682[_0xe98c('0x2e')]));if(!this[_0xe98c('0x81')](_0x1af682[_0xe98c('0x10c')])){return this[_0xe98c('0xc')][_0xe98c('0x29')](_0x1af682,'no\x20file\x20audio\x20selected');}var _0x481ed1=this[_0xe98c('0x10d')][_0xe98c('0x69')](this,_0x1af682[_0xe98c('0x10c')]);if(!_0x481ed1){return this[_0xe98c('0xc')][_0xe98c('0x29')](_0x1af682,'no\x20file\x20audio\x20found');}var _0x5d53e9=this[_0xe98c('0xc')][_0xe98c('0x4c')](_0xe98c('0x16d'),[_0x481ed1,_0x1af682[_0xe98c('0xdd')]]);if(_0x5d53e9[_0xe98c('0xa3')]===-0x1){return _0x5d53e9;}return this[_0xe98c('0xc')]['noop'](util[_0xe98c('0x22')](_0xe98c('0xc0'),'PLAYBACK',_0x481ed1));};AGIVertices[_0xe98c('0xf')][_0xe98c('0x16e')]=function(_0x204859){logger[_0xe98c('0x24')](util[_0xe98c('0x22')]('Enter\x20in\x20QUEUE\x20(%s)\x20block',_0x204859[_0xe98c('0x2e')]));if(!this['isConfigured'](_0x204859[_0xe98c('0x16f')])){return this[_0xe98c('0xc')][_0xe98c('0x29')](_0x204859,_0xe98c('0x170'));}var _0x509653='';var _0x290d1d=parseInt(_0x204859[_0xe98c('0x16f')],0xa);if(isNaN(_0x290d1d)){_0x509653=_0x204859['queue_id'];}else{_0x509653=this[_0xe98c('0x12')][_0xe98c('0x69')](this,_0x204859[_0xe98c('0x16f')]);if(!_0x509653){return this[_0xe98c('0xc')][_0xe98c('0x29')](_0x204859,_0xe98c('0x171'));}}var _0x31af83='';if(this['isConfigured'](_0x204859[_0xe98c('0x10c')])){var _0x3b2ad8=this[_0xe98c('0x10d')][_0xe98c('0x69')](this,_0x204859[_0xe98c('0x10c')]);if(_0x3b2ad8){_0x31af83=_0x3b2ad8;}}this['createSquareDetailsReport'][_0xe98c('0x69')](this,_0x204859,_0x509653);if(_0x204859[_0xe98c('0xdd')]['indexOf']('x')<0x0){_0x204859[_0xe98c('0xdd')]+='x';}if(_0x204859['opts']['indexOf']('X')<0x0){_0x204859[_0xe98c('0xdd')]+='X';}this['channel'][_0xe98c('0xd5')](_0xe98c('0x172'),_0x509653?_0x509653[_0xe98c('0x173')]():'');var _0x3c421e=this[_0xe98c('0xc')][_0xe98c('0x4c')]('QUEUE',[_0x509653,_0x204859[_0xe98c('0xdd')],_0x204859[_0xe98c('0x5c')],_0x31af83,_0x204859['timeout'],_0x204859[_0xe98c('0x174')],_0x204859[_0xe98c('0x175')],_0x204859[_0xe98c('0x176')],'',_0x204859['position']]);if(_0x3c421e[_0xe98c('0xa3')]===-0x1){return _0x3c421e;}return this['channel'][_0xe98c('0xa4')](util['format'](_0xe98c('0xc0'),_0xe98c('0x177'),_0x509653));};AGIVertices[_0xe98c('0xf')]['record']=function(_0x2451fb){logger[_0xe98c('0x24')](util[_0xe98c('0x22')](_0xe98c('0x178'),_0x2451fb[_0xe98c('0x2e')]));var _0x21e4c2=_0x2451fb['recordingFormat']||_0xe98c('0x12e');var _0x33c90f=util[_0xe98c('0x22')]('%s_%s',this['channel'][_0xe98c('0x45')],rs[_0xe98c('0x116')](0x5));var _0x56ca42=util[_0xe98c('0x22')]('%s/recordings/%s.%s',FILES_PATH,_0x33c90f,_0x21e4c2);var _0x125d2e=util[_0xe98c('0x22')](_0xe98c('0x12f'),FILES_PATH,_0x33c90f);this[_0xe98c('0x179')][_0xe98c('0x69')](this,_0x2451fb,_0x33c90f,_0x56ca42);this[_0xe98c('0xc')][_0xe98c('0xd5')](_0xe98c('0x17a'),_0x33c90f);logger[_0xe98c('0x24')]('Recording\x20%s\x20%s\x20%s\x20%s',_0x125d2e,_0x21e4c2,_0x2451fb[_0xe98c('0x17b')],_0x2451fb[_0xe98c('0x5d')]);return this[_0xe98c('0xc')]['recordFile'](_0x125d2e,_0x21e4c2,_0x2451fb['escape_digits'],_0x2451fb['timeout'],undefined,!![]);};AGIVertices['prototype'][_0xe98c('0x17c')]=function(_0x2f3cec){logger[_0xe98c('0x24')](util[_0xe98c('0x22')]('Enter\x20in\x20RESTAPI\x20(%s)\x20block',_0x2f3cec[_0xe98c('0x2e')]));if(!this[_0xe98c('0x81')](_0x2f3cec[_0xe98c('0x5c')])){return this[_0xe98c('0xc')]['noop']('no\x20url\x20configured');}var _0x27180c=this['restAPI'][_0xe98c('0x69')](this,_0x2f3cec);logger[_0xe98c('0x24')](util[_0xe98c('0x22')](_0xe98c('0x17d'),util['inspect'](_0x27180c,{'showHidden':![],'depth':null})));if(!this[_0xe98c('0x81')](_0x2f3cec['variable_id'])){return this[_0xe98c('0xc')]['noop'](_0xe98c('0x17e'));}var _0x2680c2=this['getVariable']['sync'](this,_0x2f3cec[_0xe98c('0xd0')]);if(!_0x2680c2){return this[_0xe98c('0xc')][_0xe98c('0x29')](_0x2f3cec,'no\x20variable\x20found');}this[_0xe98c('0xc')][_0xe98c('0xd5')](util[_0xe98c('0x22')]('%s_STATUS_CODE',_0x2680c2),_0x27180c['statusCode']?_0x27180c[_0xe98c('0x6f')]:_0xe98c('0x17f'));this[_0xe98c('0xc')]['setVariable'](util['format'](_0xe98c('0x180'),_0x2680c2),_0x27180c[_0xe98c('0x70')]?_0x27180c['statusMessage']:'OK');if(_0x27180c[_0xe98c('0x6d')]){try{this[_0xe98c('0x97')](_0x27180c[_0xe98c('0x6d')],_0x2680c2);}catch(_0x3d9d5d){logger[_0xe98c('0x29')](util[_0xe98c('0x22')](_0xe98c('0x181'),_0x2680c2));}}return this[_0xe98c('0xc')]['noop'](util['format'](_0xe98c('0x182'),_0x2680c2));};AGIVertices[_0xe98c('0xf')][_0xe98c('0x183')]=function(_0x4f8da1){logger[_0xe98c('0x24')](util[_0xe98c('0x22')]('Enter\x20in\x20SAYDIGITS\x20(%s)\x20block',_0x4f8da1[_0xe98c('0x2e')]));return this[_0xe98c('0xc')]['sayDigits'](_0x4f8da1['digits'][_0xe98c('0x4e')](/\s+/g,''),_0x4f8da1[_0xe98c('0x17b')]);};AGIVertices[_0xe98c('0xf')][_0xe98c('0x184')]=function(_0x6392eb){logger['info'](util[_0xe98c('0x22')]('Enter\x20in\x20SAYNUMBER\x20(%s)\x20block',_0x6392eb[_0xe98c('0x2e')]));return this['channel'][_0xe98c('0x185')](_0x6392eb[_0xe98c('0x5e')]['replace'](/\s+/g,''),_0x6392eb[_0xe98c('0x17b')]);};AGIVertices[_0xe98c('0xf')][_0xe98c('0x186')]=function(_0x3f8e2c){logger[_0xe98c('0x24')](util[_0xe98c('0x22')]('Enter\x20in\x20SAYPHONETIC\x20(%s)\x20block',_0x3f8e2c['label']));return this[_0xe98c('0xc')][_0xe98c('0x187')](_0x3f8e2c[_0xe98c('0x52')],_0x3f8e2c[_0xe98c('0x17b')]);};AGIVertices['prototype'][_0xe98c('0x188')]=function(_0x186da9){logger[_0xe98c('0x24')](util[_0xe98c('0x22')]('Enter\x20in\x20SENDMAIL\x20(%s)\x20block',_0x186da9['label']));if(!this[_0xe98c('0x81')](_0x186da9[_0xe98c('0x189')])){return this[_0xe98c('0xc')][_0xe98c('0xa4')]('no\x20mail\x20account\x20configured');}var _0x4887d3=this[_0xe98c('0x1a')]['sync'](this,_0x186da9[_0xe98c('0x189')]);if(!_0x4887d3||!_0x4887d3[_0xe98c('0x18a')]){return this['channel']['error'](_0x186da9,_0xe98c('0x18b'));}var _0x2039fc={'from':util[_0xe98c('0x22')](_0xe98c('0x18c'),_0x4887d3[_0xe98c('0x14')],_0x4887d3['email']||_0x4887d3['Smtp'][_0xe98c('0x18d')]),'to':_0x186da9['to']||'','cc':_0x186da9['cc']||'','bcc':_0x186da9[_0xe98c('0x18e')]||'','subject':_0x186da9[_0xe98c('0x18f')],'html':_0x186da9['text'],'text':_0x186da9['text']};var _0x2e5ba1={'tls':{'rejectUnauthorized':![]}};if(_0x4887d3[_0xe98c('0x18a')]['service']){_0x2e5ba1[_0xe98c('0x190')]=_0x4887d3[_0xe98c('0x18a')][_0xe98c('0x190')];}else{_0x2e5ba1[_0xe98c('0x191')]=_0x4887d3[_0xe98c('0x18a')][_0xe98c('0x191')];_0x2e5ba1['port']=_0x4887d3['Smtp'][_0xe98c('0x192')];_0x2e5ba1['secure']=_0x4887d3[_0xe98c('0x18a')][_0xe98c('0x193')];}if(_0x4887d3[_0xe98c('0x18a')][_0xe98c('0x194')]){_0x2e5ba1[_0xe98c('0x195')]={'user':_0x4887d3[_0xe98c('0x18a')]['user'],'pass':_0x4887d3[_0xe98c('0x18a')][_0xe98c('0x196')]};}if(this[_0xe98c('0x81')](_0x186da9[_0xe98c('0x197')])){}logger[_0xe98c('0xd8')](_0xe98c('0x198'),JSON['stringify'](_0x2039fc));this[_0xe98c('0x2d')]['sync'](this,_0x186da9,_0x186da9[_0xe98c('0x189')]);this[_0xe98c('0xc')]['noop'](util[_0xe98c('0x22')]('Trying\x20SendMail\x20with\x20account\x20%s',_0x4887d3['name']));this['sendMailMessage'][_0xe98c('0x69')](this,_0x2e5ba1,_0x2039fc);return this[_0xe98c('0xc')]['noop'](_0xe98c('0x199'));};AGIVertices['prototype']['sendFax']=function(_0x1fc60d){logger[_0xe98c('0x24')](util[_0xe98c('0x22')]('Enter\x20in\x20SENDFAX\x20(%s)\x20block',_0x1fc60d[_0xe98c('0x2e')]));return this[_0xe98c('0xc')]['noop'](_0xe98c('0x19a'));};AGIVertices[_0xe98c('0xf')][_0xe98c('0x19b')]=function(_0x3895a7){logger[_0xe98c('0x24')](util['format'](_0xe98c('0x19c'),_0x3895a7[_0xe98c('0x2e')]));if(!this[_0xe98c('0x81')](_0x3895a7[_0xe98c('0x19d')])){return this[_0xe98c('0xc')][_0xe98c('0xa4')](_0xe98c('0x19e'));}var _0x5cba3d=this[_0xe98c('0x2b')][_0xe98c('0x69')](this,_0x3895a7[_0xe98c('0x19d')]);if(!_0x5cba3d){return this['channel'][_0xe98c('0x29')](_0x3895a7,_0xe98c('0x19f'));}var _0x29e074={'body':_0x3895a7['sms_text'],'phone':_0x3895a7['to']||'','SmsAccountId':_0x5cba3d['id']};logger[_0xe98c('0xd8')](_0xe98c('0x1a0'),JSON[_0xe98c('0x6c')](_0x29e074));this[_0xe98c('0x2d')]['sync'](this,_0x3895a7,_0x3895a7[_0xe98c('0x19d')]);this[_0xe98c('0xc')][_0xe98c('0xa4')](util[_0xe98c('0x22')](_0xe98c('0x1a1'),_0x5cba3d[_0xe98c('0x14')]));this[_0xe98c('0x2c')]['sync'](this,_0x29e074);return this[_0xe98c('0xc')][_0xe98c('0xa4')](_0xe98c('0x1a2'));};AGIVertices['prototype'][_0xe98c('0x1a3')]=function(_0xc227e0){logger['info'](util['format'](_0xe98c('0x1a4'),_0xc227e0[_0xe98c('0x2e')]));if(!this[_0xe98c('0x81')](_0xc227e0[_0xe98c('0xd0')])){return this[_0xe98c('0xc')][_0xe98c('0x29')](_0xc227e0,_0xe98c('0x1a5'));}var _0x132dac=this[_0xe98c('0x10')][_0xe98c('0x69')](this,_0xc227e0[_0xe98c('0xd0')]);if(!_0x132dac){return this[_0xe98c('0xc')][_0xe98c('0x29')](_0xc227e0,_0xe98c('0x114'));}return this['channel']['setVariable'](_0x132dac,_0xc227e0[_0xe98c('0x1a6')]);};AGIVertices[_0xe98c('0xf')][_0xe98c('0x1a7')]=function(_0x4dc716){logger[_0xe98c('0x24')](util[_0xe98c('0x22')](_0xe98c('0x1a8'),_0x4dc716['label']));this[_0xe98c('0xc')]['noop'](_0xe98c('0x1a9'));if(_0x4dc716['answer']===_0xe98c('0x1aa')){this[_0xe98c('0xc')][_0xe98c('0xa4')](_0xe98c('0x1ab'));return this[_0xe98c('0xc')][_0xe98c('0xb5')]();}return this[_0xe98c('0xc')]['noop'](_0xe98c('0x1ac'));};AGIVertices[_0xe98c('0xf')]['subproject']=function(_0x41387f){logger[_0xe98c('0x24')](util[_0xe98c('0x22')](_0xe98c('0x1ad'),_0x41387f[_0xe98c('0x2e')]));if(!this['isConfigured'](_0x41387f['project_id'])){return this[_0xe98c('0xc')][_0xe98c('0x29')](_0x41387f,_0xe98c('0x1ae'));}var _0x55c490=this[_0xe98c('0x1af')][_0xe98c('0x69')](this,_0x41387f[_0xe98c('0x1b0')]);if(!this[_0xe98c('0x81')](_0x55c490)){return this['channel'][_0xe98c('0x29')](_0x41387f,util[_0xe98c('0x22')](_0xe98c('0x1b1'),_0x41387f[_0xe98c('0x1b0')]));}if(_0x55c490===this[_0xe98c('0xc')][_0xe98c('0x30')]){return this['channel'][_0xe98c('0x29')](_0x41387f,_0xe98c('0x1b2'));}this['createSquareDetailsReport'][_0xe98c('0x69')](this,_0x41387f,_0x55c490);var _0x49fe33=this['channel'][_0xe98c('0x4c')]('AGI',util[_0xe98c('0x22')]('agi://%s/square,\x22%s\x22,\x22%s\x22',config[_0xe98c('0x174')]['host']||_0xe98c('0x1b3'),_0x55c490,this['channel'][_0xe98c('0x30')]));if(_0x49fe33[_0xe98c('0xa3')]===-0x1){return _0x49fe33;}return this[_0xe98c('0xc')][_0xe98c('0xa4')](util[_0xe98c('0x22')](_0xe98c('0xc0'),_0xe98c('0x1b4'),_0x55c490));};AGIVertices[_0xe98c('0xf')][_0xe98c('0x1b5')]=function(_0x3bead6){logger['info'](util[_0xe98c('0x22')](_0xe98c('0x1b6'),_0x3bead6[_0xe98c('0x2e')]));var _0x4c960d=this[_0xe98c('0x4b')][_0xe98c('0x69')](this,_0x3bead6[_0xe98c('0xb3')]);this[_0xe98c('0x2d')][_0xe98c('0x69')](this,_0x3bead6,_0x3bead6[_0xe98c('0xb3')]);if(this[_0xe98c('0x81')](_0x3bead6[_0xe98c('0xd0')])){var _0x6afcd2=this[_0xe98c('0x10')]['sync'](this,_0x3bead6['variable_id']);if(_0x6afcd2){this[_0xe98c('0xc')][_0xe98c('0xd5')](_0x6afcd2,_0x4c960d);return this[_0xe98c('0xc')][_0xe98c('0xa4')](util[_0xe98c('0x22')](_0xe98c('0x1b7'),_0x3bead6[_0xe98c('0xb3')],_0x6afcd2));}}return this[_0xe98c('0xc')][_0xe98c('0xa4')](util[_0xe98c('0x22')]('sh\x20command:\x20%s\x20result\x20no\x20stored',_0x3bead6[_0xe98c('0xb3')]));};AGIVertices['prototype']['google_cloud_tts']=function(_0x27652d){logger['info'](util['format']('Enter\x20in\x20Google\x20Cloud\x20TTS\x20(%s)\x20block',_0x27652d[_0xe98c('0x2e')]));_0x27652d['text']=_0x27652d[_0xe98c('0x52')]['replace'](/(\r\n|\n|\r)/gm,'\x20');if(!this[_0xe98c('0x81')](_0x27652d['apiKey'])){return this[_0xe98c('0xc')][_0xe98c('0xa4')](_0xe98c('0x1b8'));}if(!this[_0xe98c('0x81')](_0x27652d[_0xe98c('0x52')])){return this[_0xe98c('0xc')][_0xe98c('0xa4')](_0xe98c('0xa2'));}this[_0xe98c('0xc')][_0xe98c('0xa4')](util[_0xe98c('0x22')](_0xe98c('0x1b9'),_0x27652d[_0xe98c('0x52')]));var _0xe85dde=this[_0xe98c('0x4f')][_0xe98c('0x69')](this,_0x27652d);if(_0xe85dde){this[_0xe98c('0xc')][_0xe98c('0xa4')](util[_0xe98c('0x22')](_0xe98c('0x1ba'),_0xe85dde));var _0x552e11=this['channel']['streamFile'](_0xe85dde);try{fs[_0xe98c('0x124')](_0xe85dde+_0xe98c('0xfc'));}catch(_0x4bc059){logger[_0xe98c('0x29')](_0x4bc059);}return _0x552e11;}return this[_0xe98c('0xc')]['error'](_0x27652d,_0xe98c('0x1bb'));};AGIVertices[_0xe98c('0xf')][_0xe98c('0x1bc')]=function(_0x4b1c5f){logger[_0xe98c('0x24')](util[_0xe98c('0x22')](_0xe98c('0x1bd'),_0x4b1c5f[_0xe98c('0x2e')]));_0x4b1c5f['text']=_0x4b1c5f[_0xe98c('0x52')][_0xe98c('0x4e')](/(\r\n|\n|\r)/gm,'\x20');if(!this[_0xe98c('0x81')](_0x4b1c5f[_0xe98c('0x52')])){return this[_0xe98c('0xc')][_0xe98c('0xa4')]('no\x20text\x20configured');}this[_0xe98c('0xc')]['noop'](util[_0xe98c('0x22')](_0xe98c('0x1be'),_0x4b1c5f[_0xe98c('0x52')]));var _0x3f589d=this[_0xe98c('0x59')]['sync'](this,_0x4b1c5f);if(_0x3f589d){this[_0xe98c('0xc')]['noop'](util[_0xe98c('0x22')](_0xe98c('0x1bf'),_0x3f589d));var _0xae954f=this['channel'][_0xe98c('0x123')](_0x3f589d);try{fs[_0xe98c('0x124')](_0x3f589d+_0xe98c('0xfc'));}catch(_0x1f75dc){logger['error'](_0x1f75dc);}return _0xae954f;}return this[_0xe98c('0xc')][_0xe98c('0x29')](_0x4b1c5f,_0xe98c('0x1c0'));};AGIVertices[_0xe98c('0xf')][_0xe98c('0x1c1')]=function(_0x46e69a){logger[_0xe98c('0x24')](util[_0xe98c('0x22')](_0xe98c('0x1c2'),_0x46e69a[_0xe98c('0x2e')]));if(!this['isConfigured'](_0x46e69a['findBy'])){return this[_0xe98c('0xc')][_0xe98c('0x29')](_0x46e69a,'no\x20find\x20by\x20configured');}logger[_0xe98c('0x24')](util[_0xe98c('0x22')](_0xe98c('0x157'),this['channel']['callerid'],_0x46e69a[_0xe98c('0x155')]));var _0x357602=this[_0xe98c('0x46')]['sync'](this,_0x46e69a['findBy']);if(_0x357602){logger[_0xe98c('0x24')](util['format'](_0xe98c('0x158'),this[_0xe98c('0xc')]['callerid'],_0x46e69a['findBy']));this['channel'][_0xe98c('0xa4')](util[_0xe98c('0x22')](_0xe98c('0x158'),this[_0xe98c('0xc')][_0xe98c('0x31')],_0x46e69a[_0xe98c('0x155')]));return{'code':0xc8,'result':_0xe98c('0x169')};}else{logger[_0xe98c('0x24')](util[_0xe98c('0x22')]('AGENT\x20%s\x20NOT\x20FOUND\x20BY',this[_0xe98c('0xc')]['callerid'],_0x46e69a['findBy']));this[_0xe98c('0xc')]['noop'](util[_0xe98c('0x22')](_0xe98c('0x159'),this[_0xe98c('0xc')][_0xe98c('0x31')],_0x46e69a[_0xe98c('0x155')]));return{'code':0xc8,'result':_0xe98c('0x16a')};}};AGIVertices['prototype']['voicemail']=function(_0x4f9279){logger['info'](util[_0xe98c('0x22')](_0xe98c('0x1c3'),_0x4f9279[_0xe98c('0x2e')]));var _0x5b83c2=this[_0xe98c('0xc')][_0xe98c('0x4c')](_0xe98c('0x1c4'),[_0x4f9279[_0xe98c('0x1c5')],_0x4f9279[_0xe98c('0x73')]]);if(_0x5b83c2[_0xe98c('0xa3')]===-0x1){return _0x5b83c2;}return this['channel']['noop'](util[_0xe98c('0x22')](_0xe98c('0xc0'),_0xe98c('0x1c4'),_0x4f9279[_0xe98c('0x1c5')]));};AGIVertices[_0xe98c('0xf')][_0xe98c('0x1c6')]=function(_0xa6b805){logger[_0xe98c('0x24')](util[_0xe98c('0x22')](_0xe98c('0x1c7'),_0xa6b805[_0xe98c('0x2e')]));if(!this[_0xe98c('0x81')](_0xa6b805[_0xe98c('0xd0')])){return this[_0xe98c('0xc')]['error'](_0xa6b805,_0xe98c('0x1a5'));}var _0x377ca8=this[_0xe98c('0x10')][_0xe98c('0x69')](this,_0xa6b805[_0xe98c('0xd0')]);if(!_0x377ca8){return this['channel'][_0xe98c('0x29')](_0xa6b805,'no\x20variable\x20found');}var _0x5e06a4=this['channel'][_0xe98c('0x10')](_0x377ca8);return{'code':0xc8,'result':_0x5e06a4[_0xe98c('0x9c')]?_0x5e06a4['extra']:'-'};};String['prototype'][_0xe98c('0x9b')]=function(_0x32e600,_0x85fe6f){return this['split'](_0x32e600)[_0xe98c('0x1c8')](_0x85fe6f);};module[_0xe98c('0x1c9')]=AGIVertices;
\ No newline at end of file
+var _0xa209=['no\x20trunk\x20selected','opts','finally','Enter\x20in\x20FINALLY\x20(%s)\x20block','file_id','no\x20file\x20audio\x20found','getData','response','maxdigit','test','mindigit','generate','hiddendigitspos','substr','Enter\x20in\x20GETSECRETDIGITS\x20(%s)\x20block','goal','Enter\x20in\x20GOAL\x20(%s)\x20block','goalname','GOAL\x20%s','awspolly','[AGI]\x20Enter\x20in\x20AWSPOLLY\x20(%s)\x20block','no\x20valid\x20credentials\x20configured','Trying\x20aws\x20Polly\x20%s','aws\x20Polly\x20%s\x20file\x20created','Enter\x20in\x20Amazon\x20Lex\x20(%s)\x20block','Trying\x20Amazon\x20Lex:\x20%s','AWS_LEX_%s','Amazon\x20Lex\x20ready\x20for\x20fulfillment','Amazon\x20Lex\x20is\x20unreachable','googleasr','Enter\x20in\x20GOOGLEASR\x20(%s)\x20block\x20%s','%s/recordings/%s','NOBEEP','recordFile','intKey','google\x20%s\x20file\x20created','GoogleASR\x20Result\x20%s','tildeasr','Enter\x20in\x20TILDEASR\x20(%s)\x20block','no\x20appid\x20configured','no\x20appsecret\x20configured','wav','tilde\x20%s\x20file\x20created','TILDE_ASR_%s','gotoc','priority','gotoif','Enter\x20in\x20GOTOIF\x20(%s)\x20block','condition','no\x20condition\x20configured','true','false','EVAL\x20CONDITION\x20%s\x20%s','gotoiftime','Enter\x20in\x20GOTOIFTIME\x20(%s)\x20block','interval_id','no\x20interval\x20configured','no\x20intervals\x20found','IFTIME(%s?true:false)','IFTIME\x20%s\x20%s','hangup','ispeechasr','beep','ispeech\x20%s\x20file\x20created','ispeechtts','Enter\x20in\x20ISPEECHTTS\x20(%s)\x20block','ispeech\x20TTS\x20is\x20unreachable','login','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','math','Enter\x20in\x20MATH\x20(%s)\x20block','operation','math\x20%s','%s[%s]','variable\x20%s[key]\x20set','Enter\x20in\x20MENU\x20(%s)\x20block','no\x20file\x20audio\x20selected','digit','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\x20found','indexOf','XMCS-QUEUE','QUEUE','position','recordingFormat','%s/recordings/%s.%s','RECORDING_SAVENAME','Recording\x20%s\x20%s\x20%s\x20%s','escape_digits','restapi','no\x20url\x20configured','Response:','inspect','no\x20variable\x20selected\x20for\x20the\x20response','%s_STATUS_CODE','%s_STATUS_MESSAGE','Unable\x20to\x20set\x20result\x20in\x20variable\x20%s','saydigits','Enter\x20in\x20SAYDIGITS\x20(%s)\x20block','digits','saynumber','sayNumber','sayPhonetic','sendMail','Enter\x20in\x20SENDMAIL\x20(%s)\x20block','account_id','no\x20mail\x20account\x20configured','Smtp','no\x20mail\x20account\x20found','\x22%s\x22\x20<%s>','email','user','bcc','subject','service','host','secure','authentication','pass','template_id','sendMail\x20message','Trying\x20SendMail\x20with\x20account\x20%s','Mail\x20message\x20added\x20to\x20outgoing\x20process','sendFax','SENDFAX\x20block\x20not\x20implemented','Enter\x20in\x20SENDSMS\x20(%s)\x20block','no\x20sms\x20account\x20configured','sms_account_id','no\x20sms\x20account\x20found','sms_text','sendSMS\x20message','Trying\x20SendSMS\x20with\x20account\x20%s','Enter\x20in\x20SET\x20(%s)\x20block','no\x20variable\x20selected','variable_value','start','Enter\x20in\x20START\x20(%s)\x20block','yes','Answer','Skipped\x20Answer','subproject','Enter\x20in\x20SUBPROJECT\x20(%s)\x20block','project_id','no\x20subproject\x20selected','AGI','agi://%s/square,\x22%s\x22,\x22%s\x22','Executed\x20command\x20%s\x20%s','system','Enter\x20in\x20SYSTEM\x20(%s)\x20block','sh\x20command:\x20%s\x20result\x20on\x20variable:\x20%s','command','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\x20is\x20unreachable','tts','Enter\x20in\x20GOOGLETTS\x20(%s)\x20block','Trying\x20Google\x20TTS\x20%s','Google\x20TTS\x20%s\x20file\x20created','VOICEMAIL','vswitch','Enter\x20in\x20SWITCH\x20(%s)\x20block','replaceAll','exports','path','util','lodash','shelljs','randomstring','moment','../../config/logger','agi','../../config/environment','./scripts','/var/opt/motion2/server/files','menu','getsecretdigits','channel','rpc','then','name','catch','prototype','getVoiceQueue','getSquareProject','getSquareProjectById','getSquareOdbc','getSquareOdbcById','dsn','getUser','getUserById','getTrunkById','getSound','getSoundById','getSoundPath','getMailAccount','sendMailMessage','mailRpc','getIntervals','getIntervalById','interval','map','Intervals','format','getQueryOdbc','open','error','Error\x20getting\x20ODBC\x20connection\x20%s','info','ODBC\x20connection\x20successfully','query','close','Error\x20closing\x20connection\x20to\x20odbc\x20%s','getSmsAccount','getSmsAccountById','createSmsMessage','createSquareDetailsReport','label','agicommand','arg_1','callerid','createSquareRecording','calleridname','context','extension','accountcode','dnid','createSquareMessage','uniqueid','createCmContact','isEmpty','isNil','callback_','random','lastName','phone','list_id','scheduledAt','callback','Callback\x20scheduled\x20at\x20','toString','callback_priority','getPauseById','agentPause','agent','agentUnpause','agentLogout','agentLogin','internal','%s/%s@from-sip/n','LOCAL','shellCommand','trim','replace','googleCloudTTS','apiKey','google_cloud_tts_text_type','text','ssmlGender','audioEncoding','MP3','googleTTS','google_tts_language','restAPI','method','timeout','includes','POST','toUpperCase','body','rawBody','parse','An\x20incorrect\x20formatted\x20json\x20body\x20has\x20been\x20passed\x20to\x20the\x20function','headers','rawHeaders','computedVariables','sync','uri','url','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','dialogflowV2_project_id','client_email','sestekNDA','ispeechTTS','ispeech_tts_language','en-US','speed','ispeechASR','ispeech_asr_language','isConfigured','model','awsPolly','aws_secret_access_key','aws_polly_region','aws_polly_voice','aws_text_type','awsLex','aws_access_key_id','aws_lex_region','aws_bot_name','googleASR','google_asr_language','tildeASR','appid','hasOwnProperty','replaceObjectAllVariables','recursiveNodeIndex','isArray','isString','replaceAllVariables','saveRestApiResult','isPlainObject','%s.%s','length','setVariable','split','getVariable','extra','getAndSetVariable','result','The\x20\x22%s\x22\x20variable\x20value\x20is:\x20%s','maxRetry','retry','noop','no\x20text\x20configured','exec','Executed\x20command\x20MRCPSynth\x20%s','mrcprecog','no\x20grammar\x20configured','grammar','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','args','answer','Wait\x20%s\x20seconds\x20before\x20answer','wait','Enter\x20in\x20CALLBACK\x20(%s)\x20block','no\x20list\x20selected','delay','add','minutes','Enter\x20in\x20CUSTOM\x20APP\x20(%s)\x20block','application','Enter\x20in\x20LUMENVOXTTS\x20(%s)\x20block','MRCPSynth','sestektts','lumenvoxasr','Enter\x20in\x20LUMENVOXASR\x20(%s)\x20block','LUMENVOX_ASR_TRANSCRIPT','LUMENVOX_ASR_INSTANCE','Enter\x20in\x20SESTEKASR\x20(%s)\x20block','SESTEK_ASR_CONFIDENCE','SESTEK_ASR_TRANSCRIPT','SESTEK_ASR_INSTANCE','database','odbc_id','no\x20database\x20selected','no\x20odbc\x20database\x20found','query:\x20%s','no\x20variable\x20selected\x20for\x20the\x20result','variable_id','no\x20variable\x20found','forEach','%s[%s][%s]','%s_ROWS_COUNT','variable\x20%s\x20set','dial','Enter\x20in\x20DIAL\x20(%s)\x20block','no\x20user\x20selected','sip_id','no\x20user\x20found','DIAL','SIP/%s','Executed\x20command\x20%s','dialogflow','Enter\x20in\x20DIALOGFLOW\x20(%s)\x20block','no\x20key\x20configured','bot','Trying\x20Dialogflow:\x20%s','speech','out','Dialogflow\x20Result\x20%s','Dialogflow\x20is\x20unreachable','Enter\x20in\x20DIALOGFLOW\x20V2\x20(%s)\x20block','no\x20project_id\x20configured','no\x20client_email\x20configured','private_key','dialogflowV2_language','no\x20anguage\x20configured','Trying\x20DialogflowV2:\x20%s','providerResponse','DIALOGFLOW_%s','dialogflowV2','DialogflowV2\x20Result\x20%s','DialogflowV2\x20is\x20unreachable','sesteknda','ndauth_url','no\x20ndauth\x20url\x20configured','no\x20username\x20configured','ndassistant_url','Trying\x20SestekNDA:\x20%s','SESTEK_NDA_%s','Sestek\x20NDA\x20%s\x20file\x20created','streamFile','unlink','.wav','SestekNDA\x20Result\x20%s','end','Enter\x20in\x20END\x20(%s)\x20block','ext_dial','Enter\x20in\x20EXTERNAL\x20DIAL\x20(%s)\x20block','trunk_id','getTrunk','trunk_name'];(function(_0x411e71,_0xf9652){var _0x226ae3=function(_0x1339f6){while(--_0x1339f6){_0x411e71['push'](_0x411e71['shift']());}};_0x226ae3(++_0xf9652);}(_0xa209,0xb6));var _0x9a20=function(_0x3d4a77,_0x10f1a1){_0x3d4a77=_0x3d4a77-0x0;var _0x474f11=_0xa209[_0x3d4a77];return _0x474f11;};'use strict';var fs=require('fs');var path=require(_0x9a20('0x0'));var util=require(_0x9a20('0x1'));var _=require(_0x9a20('0x2'));var sh=require(_0x9a20('0x3'));var odbc=require('odbc')();var rs=require(_0x9a20('0x4'));var moment=require(_0x9a20('0x5'));var Mustache=require('mustache');var rp=require('request-promise');var logger=require(_0x9a20('0x6'))(_0x9a20('0x7'));var config=require(_0x9a20('0x8'));var scripts=require(_0x9a20('0x9'));var FILES_PATH=_0x9a20('0xa');var recursiveMapAttributes=['rawHeaders','rawBody'];var verticesWithRetry=[_0x9a20('0xb'),'getdigits',_0x9a20('0xc')];var AGIVertices=function(_0x110cfe,_0x13c152,_0x1f2dd8){this[_0x9a20('0xd')]=_0x110cfe;this[_0x9a20('0xe')]=_0x13c152;this['mailRpc']=_0x1f2dd8;};AGIVertices['prototype']['getVariable']=function(_0x56ef29,_0xcf37f9){this[_0x9a20('0xe')]['getVariableById'](_0x56ef29)[_0x9a20('0xf')](function(_0x2f0263){_0xcf37f9(null,_0x2f0263?_0x2f0263[_0x9a20('0x10')]:![]);})[_0x9a20('0x11')](function(_0x1460b0){_0xcf37f9(_0x1460b0);});};AGIVertices[_0x9a20('0x12')][_0x9a20('0x13')]=function(_0x4bf057,_0x39864f){this[_0x9a20('0xe')]['getVoiceQueueById'](_0x4bf057)[_0x9a20('0xf')](function(_0x2793a4){_0x39864f(null,_0x2793a4?_0x2793a4['name']:![]);})[_0x9a20('0x11')](function(_0x19ad57){_0x39864f(_0x19ad57);});};AGIVertices[_0x9a20('0x12')][_0x9a20('0x14')]=function(_0x4bbaf5,_0x479b1f){this[_0x9a20('0xe')][_0x9a20('0x15')](_0x4bbaf5)[_0x9a20('0xf')](function(_0x24d930){_0x479b1f(null,_0x24d930?_0x24d930[_0x9a20('0x10')]:![]);})[_0x9a20('0x11')](function(_0x3cc68e){_0x479b1f(_0x3cc68e);});};AGIVertices['prototype'][_0x9a20('0x16')]=function(_0x9eda36,_0x17fdf0){this[_0x9a20('0xe')][_0x9a20('0x17')](_0x9eda36)[_0x9a20('0xf')](function(_0x2f075d){_0x17fdf0(null,_0x2f075d?_0x2f075d[_0x9a20('0x18')]:![]);})['catch'](function(_0xe2ff02){_0x17fdf0(_0xe2ff02);});};AGIVertices['prototype'][_0x9a20('0x19')]=function(_0x486745,_0x145991){this[_0x9a20('0xe')][_0x9a20('0x1a')](_0x486745)['then'](function(_0x5e8ed3){_0x145991(null,_0x5e8ed3?_0x5e8ed3[_0x9a20('0x10')]:![]);})[_0x9a20('0x11')](function(_0x461006){_0x145991(_0x461006);});};AGIVertices[_0x9a20('0x12')]['getTrunk']=function(_0x538212,_0x2b41ab){this[_0x9a20('0xe')][_0x9a20('0x1b')](_0x538212)[_0x9a20('0xf')](function(_0x5c6eda){_0x2b41ab(null,_0x5c6eda?_0x5c6eda[_0x9a20('0x10')]:![]);})['catch'](function(_0x30e678){_0x2b41ab(_0x30e678);});};AGIVertices['prototype'][_0x9a20('0x1c')]=function(_0x538770,_0x2de39a){var _0x341f15=this;this[_0x9a20('0xe')][_0x9a20('0x1d')](_0x538770)[_0x9a20('0xf')](function(_0x5a38af){_0x2de39a(null,_0x5a38af?_0x341f15[_0x9a20('0x1e')](_0x5a38af['save_name']):![]);})[_0x9a20('0x11')](function(_0x26000f){_0x2de39a(_0x26000f);});};AGIVertices[_0x9a20('0x12')][_0x9a20('0x1f')]=function(_0x32bfae,_0x2cfbc4){this['rpc']['getMailAccountById'](_0x32bfae)[_0x9a20('0xf')](function(_0xe2ea34){_0x2cfbc4(null,_0xe2ea34?_0xe2ea34:![]);})['catch'](function(_0x2d44b6){_0x2cfbc4(_0x2d44b6);});};AGIVertices[_0x9a20('0x12')][_0x9a20('0x20')]=function(_0x2ad270,_0x2ea344,_0x30d423){this[_0x9a20('0x21')][_0x9a20('0x20')](_0x2ad270,_0x2ea344)[_0x9a20('0xf')](function(){_0x30d423(null);})['catch'](function(_0xee8c72){_0x30d423(_0xee8c72);});};AGIVertices[_0x9a20('0x12')][_0x9a20('0x22')]=function(_0x50d45f,_0x594f12){this[_0x9a20('0xe')][_0x9a20('0x23')](_0x50d45f)[_0x9a20('0xf')](function(_0x2ccd8c){if(_0x2ccd8c){if(_0x2ccd8c['IntervalId']){_0x594f12(null,[_0x2ccd8c[_0x9a20('0x24')]]);}else{_0x594f12(null,_[_0x9a20('0x25')](_0x2ccd8c[_0x9a20('0x26')],_0x9a20('0x24')));}}else{_0x594f12(null,![]);}})[_0x9a20('0x11')](function(_0x4635b2){_0x594f12(_0x4635b2);});};AGIVertices[_0x9a20('0x12')]['getSoundPath']=function(_0x18d157){return util[_0x9a20('0x27')]('%s/sounds/converted/%s',FILES_PATH,_0x18d157);};AGIVertices[_0x9a20('0x12')][_0x9a20('0x28')]=function(_0x2bf202,_0x4abcf8,_0x22a9ed){odbc[_0x9a20('0x29')](_0x2bf202,function(_0x45c68c){if(_0x45c68c){logger[_0x9a20('0x2a')](_0x9a20('0x2b'),_0x45c68c);_0x22a9ed(_0x45c68c);}else{logger[_0x9a20('0x2c')](_0x9a20('0x2d'));odbc[_0x9a20('0x2e')](_0x4abcf8,function(_0x2f9c33,_0x39f2fd){if(_0x2f9c33){logger[_0x9a20('0x2c')]('Error\x20executing\x20query\x20%s',_0x4abcf8);_0x22a9ed(_0x2f9c33);}else{logger[_0x9a20('0x2c')]('Query\x20executed\x20correctly\x20%s',_0x4abcf8);odbc[_0x9a20('0x2f')](function(_0xfb39a3){if(_0xfb39a3){logger['error'](_0x9a20('0x30'),_0xfb39a3);}_0x22a9ed(null,_0x39f2fd);});}});}});};AGIVertices[_0x9a20('0x12')][_0x9a20('0x31')]=function(_0x5bc64e,_0x424b11){this[_0x9a20('0xe')][_0x9a20('0x32')](_0x5bc64e)[_0x9a20('0xf')](function(_0x84a715){_0x424b11(null,_0x84a715?_0x84a715:![]);})[_0x9a20('0x11')](function(_0x343e6a){_0x424b11(_0x343e6a);});};AGIVertices[_0x9a20('0x12')]['createSmsMessage']=function(_0x397d9f,_0x172ec0){this['rpc'][_0x9a20('0x33')](_0x397d9f)[_0x9a20('0xf')](function(_0x511a7f){_0x172ec0(null,_0x511a7f);})['catch'](function(_0x38b80f){_0x172ec0(_0x38b80f);});};AGIVertices['prototype'][_0x9a20('0x34')]=function(_0x48835b,_0x57a7d3,_0x5cabab){this['rpc'][_0x9a20('0x34')]({'uniqueid':this[_0x9a20('0xd')]['uniqueid'],'node':_0x48835b[_0x9a20('0x35')],'application':_0x48835b[_0x9a20('0x36')],'data':_0x57a7d3||null,'project_name':this[_0x9a20('0xd')][_0x9a20('0x37')],'callerid':this[_0x9a20('0xd')][_0x9a20('0x38')]})['then'](function(_0x423182){if(_0x5cabab){_0x5cabab(null,_0x423182);}})[_0x9a20('0x11')](function(_0x5baaeb){if(_0x5cabab){_0x5cabab(_0x5baaeb);}});};AGIVertices['prototype']['createSquareRecording']=function(_0x496078,_0x19cc3b,_0x579ef8,_0x576a72){this[_0x9a20('0xe')][_0x9a20('0x39')]({'uniqueid':this[_0x9a20('0xd')]['uniqueid'],'callerid':this[_0x9a20('0xd')][_0x9a20('0x38')],'calleridname':this['channel'][_0x9a20('0x3a')],'context':this['channel'][_0x9a20('0x3b')],'extension':this[_0x9a20('0xd')][_0x9a20('0x3c')],'priority':this[_0x9a20('0xd')]['priority'],'accountcode':this[_0x9a20('0xd')][_0x9a20('0x3d')],'dnid':this['channel'][_0x9a20('0x3e')],'projectName':this[_0x9a20('0xd')][_0x9a20('0x37')],'saveName':_0x19cc3b,'filename':_0x496078['file']||_0x19cc3b,'savePath':_0x579ef8})[_0x9a20('0xf')](function(_0x28e728){_0x576a72(null,_0x28e728);})[_0x9a20('0x11')](function(_0x40909d){_0x576a72(_0x40909d);});};AGIVertices['prototype'][_0x9a20('0x3f')]=function(_0x36b97c,_0x491bf9,_0x36b024,_0x4736b9,_0x2a2db7){this['rpc'][_0x9a20('0x3f')]({'uniqueid':this[_0x9a20('0xd')][_0x9a20('0x40')],'body':_0x36b97c,'direction':_0x491bf9,'providerName':_0x36b024,'providerResponse':_0x4736b9})[_0x9a20('0xf')](function(_0x81a4ff){if(_0x2a2db7){_0x2a2db7(null,_0x81a4ff);}})['catch'](function(_0x1f955f){if(_0x2a2db7){_0x2a2db7(_0x1f955f);}});};AGIVertices[_0x9a20('0x12')][_0x9a20('0x41')]=function(_0x26f516,_0x4f6800){this['rpc'][_0x9a20('0x41')]({'firstName':_[_0x9a20('0x42')](_0x26f516['name'])||_[_0x9a20('0x43')](_0x26f516[_0x9a20('0x10')])?_0x9a20('0x44')+Math[_0x9a20('0x45')]():_0x26f516[_0x9a20('0x10')],'lastName':_[_0x9a20('0x42')](_0x26f516[_0x9a20('0x46')])||_[_0x9a20('0x43')](_0x26f516['lastName'])?null:_0x26f516['lastName'],'phone':_0x26f516[_0x9a20('0x47')],'ListId':_0x26f516[_0x9a20('0x48')],'scheduledat':_0x26f516[_0x9a20('0x49')],'callbackUniqueid':this[_0x9a20('0xd')][_0x9a20('0x40')],'tags':_0x9a20('0x4a'),'description':_0x9a20('0x4b')+_0x26f516[_0x9a20('0x49')][_0x9a20('0x4c')](),'priority':_0x26f516[_0x9a20('0x4d')]})[_0x9a20('0xf')](function(_0x14a57e){_0x4f6800(null,_0x14a57e);})['catch'](function(_0x5b6e83){_0x4f6800(_0x5b6e83);});};AGIVertices[_0x9a20('0x12')]['getPause']=function(_0x3c254f,_0x8fe00f){this[_0x9a20('0xe')][_0x9a20('0x4e')](_0x3c254f)[_0x9a20('0xf')](function(_0x473dfe){_0x8fe00f(null,_0x473dfe?_0x473dfe[_0x9a20('0x10')]:![]);})[_0x9a20('0x11')](function(_0x5e686e){_0x8fe00f(_0x5e686e);});};AGIVertices[_0x9a20('0x12')][_0x9a20('0x4f')]=function(_0x16764a,_0x358c65,_0x34f9e9){var _0x4c6066={'role':_0x9a20('0x50')};_0x4c6066[_0x16764a]=this['channel'][_0x9a20('0x38')];this[_0x9a20('0xe')][_0x9a20('0x4f')](_0x4c6066,_0x358c65,this[_0x9a20('0xd')]['uniqueid'])[_0x9a20('0xf')](function(_0x5d3275){_0x34f9e9(null,_['isNil'](_0x5d3275)?![]:!![]);})[_0x9a20('0x11')](function(_0x4121c6){logger[_0x9a20('0x2a')](_0x4121c6);_0x34f9e9(null,![]);});};AGIVertices[_0x9a20('0x12')][_0x9a20('0x51')]=function(_0x1363b2,_0x477410){var _0x4a8a94={'role':_0x9a20('0x50')};_0x4a8a94[_0x1363b2]=this[_0x9a20('0xd')]['callerid'];this[_0x9a20('0xe')][_0x9a20('0x51')](_0x4a8a94)[_0x9a20('0xf')](function(_0x193850){_0x477410(null,_[_0x9a20('0x43')](_0x193850)?![]:!![]);})['catch'](function(_0x4d64e4){logger[_0x9a20('0x2a')](_0x4d64e4);_0x477410(null,![]);});};AGIVertices[_0x9a20('0x12')][_0x9a20('0x52')]=function(_0x52b72f,_0x3644a3){var _0x468b36={'role':_0x9a20('0x50')};_0x468b36[_0x52b72f]=this[_0x9a20('0xd')]['callerid'];this[_0x9a20('0xe')][_0x9a20('0x52')](_0x468b36)[_0x9a20('0xf')](function(_0x71e47){_0x3644a3(null,_['isNil'](_0x71e47)?![]:!![]);})['catch'](function(_0x4eed65){logger[_0x9a20('0x2a')](_0x4eed65);_0x3644a3(null,![]);});};AGIVertices[_0x9a20('0x12')][_0x9a20('0x53')]=function(_0x408aa1,_0x155e2c){var _0x317b29={'role':_0x9a20('0x50')};_0x317b29[_0x408aa1]=this['channel']['callerid'];var _0x5066ed=_0x408aa1!=_0x9a20('0x54')?util[_0x9a20('0x27')](_0x9a20('0x55'),_0x9a20('0x56'),this[_0x9a20('0xd')][_0x9a20('0x38')]):undefined;this['rpc'][_0x9a20('0x53')](_0x317b29,_0x5066ed)[_0x9a20('0xf')](function(_0x3c598b){_0x155e2c(null,_[_0x9a20('0x43')](_0x3c598b)?![]:!![]);})[_0x9a20('0x11')](function(_0x1a55f1){logger['error'](_0x1a55f1);_0x155e2c(null,![]);});};AGIVertices['prototype'][_0x9a20('0x57')]=function(_0x3cba87,_0x15ea09){sh['exec'](_[_0x9a20('0x58')](_0x3cba87),function(_0x462c4a,_0x3574dc){var _0x57829f=_0x3574dc[_0x9a20('0x59')](/(\r\n|\n|\r)/gm,'');_0x15ea09(null,_0x57829f);});};AGIVertices[_0x9a20('0x12')][_0x9a20('0x5a')]=function(_0x335c61,_0x587439){scripts[_0x9a20('0x5a')](_0x335c61[_0x9a20('0x5b')],_0x335c61[_0x9a20('0x5c')]||'text',_0x335c61[_0x9a20('0x5d')],_0x335c61['languageCode']||'en-US',_0x335c61[_0x9a20('0x5e')]||'MALE',_0x335c61[_0x9a20('0x5f')]||_0x9a20('0x60'))[_0x9a20('0xf')](function(_0x35fb13){_0x587439(null,_0x35fb13);})[_0x9a20('0x11')](function(_0x3cba6f){_0x587439(_0x3cba6f);});};AGIVertices[_0x9a20('0x12')][_0x9a20('0x61')]=function(_0x599b70,_0x557dcb){scripts[_0x9a20('0x61')](_0x599b70[_0x9a20('0x5d')],_0x599b70[_0x9a20('0x62')]||'en',0x1)[_0x9a20('0xf')](function(_0x59a7ca){_0x557dcb(null,_0x59a7ca);})[_0x9a20('0x11')](function(_0x7e5b10){_0x557dcb(_0x7e5b10);});};AGIVertices[_0x9a20('0x12')][_0x9a20('0x63')]=function(_0x36dd34,_0x3abc1e){var _0x34bae5={'uri':_0x36dd34['url'],'method':_0x36dd34[_0x9a20('0x64')],'json':!![],'resolveWithFullResponse':!![],'strictSSL':![],'timeout':typeof parseInt(_0x36dd34['timeout'])==='number'&&parseInt(_0x36dd34[_0x9a20('0x65')])>=0x1?parseInt(_0x36dd34['timeout'])*0x3e8:0x5*0x3e8};if(_[_0x9a20('0x66')]([_0x9a20('0x67'),'PUT'],_0x34bae5[_0x9a20('0x64')][_0x9a20('0x68')]())){try{_0x34bae5[_0x9a20('0x69')]=_0x36dd34[_0x9a20('0x6a')]?JSON[_0x9a20('0x6b')](_0x36dd34[_0x9a20('0x6a')]):{};}catch(_0x483d8c){logger[_0x9a20('0x2a')](_0x9a20('0x6c'),_0x483d8c);}}try{_0x34bae5[_0x9a20('0x6d')]=_0x36dd34[_0x9a20('0x6e')]?JSON[_0x9a20('0x6b')](_0x36dd34[_0x9a20('0x6e')]):{};}catch(_0x5884fb){logger[_0x9a20('0x2a')]('An\x20incorrect\x20formatted\x20json\x20headers\x20has\x20been\x20passed\x20to\x20the\x20function',_0x5884fb);}if(_0x36dd34['computedVariables']){try{var _0x5bb734=require(_0x36dd34[_0x9a20('0x6f')])[_0x9a20('0x70')](this,_0x34bae5);_0x34bae5[_0x9a20('0x71')]=Mustache['render'](_0x36dd34[_0x9a20('0x72')],_0x5bb734,{},['$$','$$']);if(_0x34bae5[_0x9a20('0x6d')]){_0x34bae5[_0x9a20('0x6d')]=JSON['parse'](Mustache[_0x9a20('0x73')](JSON[_0x9a20('0x74')](_0x34bae5[_0x9a20('0x6d')]),_0x5bb734,{},['$$','$$']));}if(_0x34bae5['body']){_0x34bae5[_0x9a20('0x69')]=JSON[_0x9a20('0x6b')](Mustache['render'](JSON[_0x9a20('0x74')](_0x34bae5[_0x9a20('0x69')]),_0x5bb734,{},['$$','$$']));}}catch(_0x839401){logger['error'](_0x9a20('0x75'),_0x839401);}}rp(_0x34bae5)[_0x9a20('0xf')](function(_0x98b25c){var _0x42fd51={'statusCode':_0x98b25c[_0x9a20('0x76')]||0xc8,'statusMessage':_0x98b25c[_0x9a20('0x77')]||'OK','headers':_0x98b25c[_0x9a20('0x6d')]||{},'body':_0x98b25c[_0x9a20('0x69')]||{}};_0x3abc1e(null,_0x42fd51);})[_0x9a20('0x11')](function(_0x3f7b27){var _0x5cf0bc={'statusCode':_0x3f7b27['statusCode']||0x1f4,'statusMessage':_0x3f7b27[_0x9a20('0x78')]||_0x9a20('0x79'),'headers':_0x3f7b27[_0x9a20('0x7a')]['headers']||{},'body':_0x3f7b27[_0x9a20('0x7a')][_0x9a20('0x69')]||{}};_0x3abc1e(null,_0x5cf0bc);});};AGIVertices[_0x9a20('0x12')][_0x9a20('0x7b')]=function(_0xbd0171,_0x179c6c){scripts['googleDialogflow'](this['channel'][_0x9a20('0x40')],_0xbd0171[_0x9a20('0x7c')],_0xbd0171[_0x9a20('0x5d')],_0xbd0171[_0x9a20('0x7d')]||'en')[_0x9a20('0xf')](function(_0x5bd206){_0x179c6c(null,_0x5bd206);})[_0x9a20('0x11')](function(_0x596b7d){_0x179c6c(_0x596b7d);});};AGIVertices[_0x9a20('0x12')][_0x9a20('0x7e')]=function(_0x466f0f,_0x4e4878){scripts[_0x9a20('0x7e')](this[_0x9a20('0xd')][_0x9a20('0x40')],_0x466f0f[_0x9a20('0x7f')],_0x466f0f[_0x9a20('0x80')],_0x466f0f['private_key'],_0x466f0f[_0x9a20('0x5d')],_0x466f0f['dialogflowV2_language']||'en')['then'](function(_0x498b88){_0x4e4878(null,_0x498b88);})[_0x9a20('0x11')](function(_0x6b1380){_0x4e4878(_0x6b1380);});};AGIVertices[_0x9a20('0x12')][_0x9a20('0x81')]=function(_0x23ed60,_0x3bc945){scripts[_0x9a20('0x81')](this['channel'],_0x23ed60)[_0x9a20('0xf')](function(_0x466177){_0x3bc945(null,_0x466177);})[_0x9a20('0x11')](function(_0x37048e){_0x3bc945(_0x37048e);});};AGIVertices[_0x9a20('0x12')]['ispeechTTS']=function(_0x5022fa,_0x328adc){scripts[_0x9a20('0x82')](_0x5022fa[_0x9a20('0x7c')],_0x5022fa[_0x9a20('0x5d')],_0x5022fa[_0x9a20('0x83')]||_0x9a20('0x84'),_0x5022fa[_0x9a20('0x85')])[_0x9a20('0xf')](function(_0x248efe){_0x328adc(null,_0x248efe);})[_0x9a20('0x11')](function(_0x9cb069){_0x328adc(_0x9cb069);});};AGIVertices[_0x9a20('0x12')]['ispeechASR']=function(_0x3aaef2,_0x5581e4,_0x246779){scripts[_0x9a20('0x86')](_0x5581e4,_0x3aaef2[_0x9a20('0x7c')],_0x3aaef2[_0x9a20('0x87')]||_0x9a20('0x84'),this[_0x9a20('0x88')](_0x3aaef2[_0x9a20('0x89')])?_0x3aaef2['model']:undefined)[_0x9a20('0xf')](function(_0xf670ce){_0x246779(null,_0xf670ce);})[_0x9a20('0x11')](function(_0x4f4d14){_0x246779(_0x4f4d14);});};AGIVertices[_0x9a20('0x12')]['awsPolly']=function(_0x848505,_0x1af040){scripts[_0x9a20('0x8a')](_0x848505['aws_access_key_id'],_0x848505[_0x9a20('0x8b')],_0x848505[_0x9a20('0x8c')],_0x848505[_0x9a20('0x8d')]||'Amy',_0x848505['text'],_0x848505[_0x9a20('0x8e')]||_0x9a20('0x5d'))[_0x9a20('0xf')](function(_0x33d7f1){_0x1af040(null,_0x33d7f1);})[_0x9a20('0x11')](function(_0x4370d1){_0x1af040(_0x4370d1);});};AGIVertices[_0x9a20('0x12')][_0x9a20('0x8f')]=function(_0x16baf0,_0x599404){scripts[_0x9a20('0x8f')](this[_0x9a20('0xd')][_0x9a20('0x40')],_0x16baf0[_0x9a20('0x90')],_0x16baf0[_0x9a20('0x8b')],_0x16baf0[_0x9a20('0x91')],_0x16baf0['text'],_0x16baf0[_0x9a20('0x92')])[_0x9a20('0xf')](function(_0xae1dd4){_0x599404(null,_0xae1dd4);})['catch'](function(_0x133931){_0x599404(_0x133931);});};AGIVertices[_0x9a20('0x12')][_0x9a20('0x93')]=function(_0x2db680,_0x5ba480,_0x190373){scripts[_0x9a20('0x93')](_0x5ba480,_0x2db680['key'],_0x2db680[_0x9a20('0x94')]||'en-US')[_0x9a20('0xf')](function(_0x51d6c6){_0x190373(null,_0x51d6c6);})[_0x9a20('0x11')](function(_0x3b9e30){_0x190373(_0x3b9e30);});};AGIVertices[_0x9a20('0x12')][_0x9a20('0x95')]=function(_0xba6bc5,_0x1a457c,_0x2ffb62){scripts[_0x9a20('0x95')](_0x1a457c,_0xba6bc5[_0x9a20('0x96')],_0xba6bc5['appsecret'],_0xba6bc5[_0x9a20('0x71')])[_0x9a20('0xf')](function(_0x2a72cb){_0x2ffb62(null,_0x2a72cb);})[_0x9a20('0x11')](function(_0x326d4d){_0x2ffb62(_0x326d4d);});};AGIVertices[_0x9a20('0x12')]['clear']=function(_0x34931b){var _0x132a51=_[_0x9a20('0x66')](verticesWithRetry,_0x34931b[_0x9a20('0x36')])?_0x34931b:_['clone'](_0x34931b);for(var _0x413c17 in _0x132a51){if(_0x132a51[_0x9a20('0x97')](_0x413c17)){if(_0x132a51[_0x413c17]&&_['isString'](_0x132a51[_0x413c17])){if(_[_0x9a20('0x66')](recursiveMapAttributes,_0x413c17)){_0x132a51[_0x413c17]=this[_0x9a20('0x98')](_0x132a51[_0x413c17]);}else{_0x132a51[_0x413c17]=this['replaceAllVariables'](_0x132a51[_0x413c17]);}}}}return _0x132a51;};AGIVertices[_0x9a20('0x12')][_0x9a20('0x99')]=function(_0x5823fb){for(var _0x27564e in _0x5823fb){if(_0x5823fb[_0x9a20('0x97')](_0x27564e)){if(_['isPlainObject'](_0x5823fb[_0x27564e])){this[_0x9a20('0x99')](_0x5823fb[_0x27564e]);}else if(_[_0x9a20('0x9a')](_0x5823fb[_0x27564e])){for(var _0x214572=0x0;_0x214572<_0x5823fb[_0x27564e]['length'];_0x214572++){this[_0x9a20('0x99')](_0x5823fb[_0x27564e][_0x214572]);}}else if(_[_0x9a20('0x9b')](_0x5823fb[_0x27564e])){_0x5823fb[_0x27564e]=this[_0x9a20('0x9c')](_0x5823fb[_0x27564e]);}}}};AGIVertices[_0x9a20('0x12')][_0x9a20('0x9d')]=function(_0x477285,_0x3f318e){for(var _0x2e21d0 in _0x477285){if(_0x477285[_0x9a20('0x97')](_0x2e21d0)){if(_[_0x9a20('0x9e')](_0x477285[_0x2e21d0])){if(!_[_0x9a20('0x42')](_0x477285[_0x2e21d0])){this['saveRestApiResult'](_0x477285[_0x2e21d0],util[_0x9a20('0x27')](_0x9a20('0x9f'),_0x3f318e,_0x2e21d0));}}else if(_[_0x9a20('0x9a')](_0x477285[_0x2e21d0])){for(var _0x12f47e=0x0;_0x12f47e<_0x477285[_0x2e21d0][_0x9a20('0xa0')];_0x12f47e++){this[_0x9a20('0x9d')](_0x477285[_0x2e21d0][_0x12f47e],util[_0x9a20('0x27')](_0x9a20('0x9f'),_0x3f318e,_0x2e21d0+'['+_0x12f47e+']'));}}else{if(!_['isNil'](_0x477285[_0x2e21d0])){this[_0x9a20('0xd')][_0x9a20('0xa1')](util[_0x9a20('0x27')](_0x9a20('0x9f'),_0x3f318e,_0x2e21d0),_0x477285[_0x2e21d0]);}}}}};AGIVertices[_0x9a20('0x12')]['replaceObjectAllVariables']=function(_0x139be1){try{var _0x1b8ccf=JSON[_0x9a20('0x6b')](_0x139be1);this[_0x9a20('0x99')](_0x1b8ccf);return JSON['stringify'](_0x1b8ccf);}catch(_0x2e4400){return this[_0x9a20('0x9c')](_0x139be1);}};AGIVertices[_0x9a20('0x12')]['replaceAllVariables']=function(_0x486c4a){var _0x182995=_0x486c4a[_0x9a20('0xa2')]('{');for(var _0x378ef1=0x1;_0x378ef1<_0x182995[_0x9a20('0xa0')];_0x378ef1+=0x1){var _0x3960e9=_0x182995[_0x378ef1][_0x9a20('0xa2')]('}');if(_0x3960e9['length']>0x1){_0x486c4a=_0x486c4a['replaceAll']('{'+_0x3960e9[0x0]+'}',this['channel'][_0x9a20('0xa3')](_0x3960e9[0x0])[_0x9a20('0xa4')]||_0x3960e9[0x0]);}}if(_0x182995[_0x9a20('0xa0')]===0x1){return _0x486c4a[_0x9a20('0x4c')]();}return this[_0x9a20('0x9c')](_0x486c4a);};AGIVertices['prototype'][_0x9a20('0xa5')]=function(_0x3ef33b,_0x5a9eb1){var _0x295904=this['channel'][_0x9a20('0xa3')](_0x3ef33b);if(_0x295904[_0x9a20('0xa6')]===-0x1){return _0x295904;}logger['info'](util[_0x9a20('0x27')](_0x9a20('0xa7'),_0x5a9eb1,_0x295904[_0x9a20('0xa4')]));return this[_0x9a20('0xd')][_0x9a20('0xa1')](_0x5a9eb1,_0x295904['extra']);};AGIVertices['prototype'][_0x9a20('0x88')]=function(_0x196527){return _0x196527&&_0x196527!=='0'&&_0x196527!=='-1'&&_0x196527!=='';};AGIVertices[_0x9a20('0x12')][_0x9a20('0xa8')]=function(_0x57f702){this[_0x9a20('0x34')]['sync'](this,_0x57f702,'-');_0x57f702[_0x9a20('0xa9')]=_0x57f702[_0x9a20('0xa8')];return{'code':0xc8,'result':'-'};};AGIVertices['prototype']['mrcpsynth']=function(_0x5b4a20){logger[_0x9a20('0x2c')](util['format']('Enter\x20in\x20MRCPSynth\x20(%s)\x20block',_0x5b4a20[_0x9a20('0x35')]));if(!this[_0x9a20('0x88')](_0x5b4a20[_0x9a20('0x5d')])){return this['channel'][_0x9a20('0xaa')](_0x9a20('0xab'));}var _0x3f2ef0='\x22'+_0x5b4a20[_0x9a20('0x5d')]+'\x22';if(this[_0x9a20('0x88')](_0x5b4a20['options'])){_0x3f2ef0+=','+_0x5b4a20[_0x9a20('0x7a')];}var _0x4927d6=this[_0x9a20('0xd')][_0x9a20('0xac')]('MRCPSynth',_0x3f2ef0);if(_0x4927d6['result']===-0x1){return _0x4927d6;}return this[_0x9a20('0xd')][_0x9a20('0xaa')](util['format'](_0x9a20('0xad'),_0x3f2ef0));};AGIVertices[_0x9a20('0x12')][_0x9a20('0xae')]=function(_0x151c84){logger[_0x9a20('0x2c')](util[_0x9a20('0x27')]('Enter\x20in\x20MRCPRecog\x20(%s)\x20block',_0x151c84[_0x9a20('0x35')]));if(!this[_0x9a20('0x88')](_0x151c84['grammar'])){return this[_0x9a20('0xd')][_0x9a20('0xaa')](_0x9a20('0xaf'));}var _0x364e19=_0x151c84[_0x9a20('0xb0')];if(this[_0x9a20('0x88')](_0x151c84[_0x9a20('0x7a')])){_0x364e19+=','+_0x151c84[_0x9a20('0x7a')];}var _0xa3b5e3=this[_0x9a20('0xd')][_0x9a20('0xac')](_0x9a20('0xb1'),_0x364e19);if(_0xa3b5e3[_0x9a20('0xa6')]===-0x1){return _0xa3b5e3;}var _0x54e259=this[_0x9a20('0xa5')](_0x9a20('0xb2'),_0x9a20('0xb3'));if(_0x54e259['result']===-0x1){return _0x54e259;}var _0x155687=this[_0x9a20('0xa5')](_0x9a20('0xb4'),_0x9a20('0xb5'));if(_0x155687['result']===-0x1){return _0x155687;}var _0x5bc00f=this[_0x9a20('0xa5')](_0x9a20('0xb6'),_0x9a20('0xb7'));if(_0x5bc00f[_0x9a20('0xa6')]===-0x1){return _0x5bc00f;}return this[_0x9a20('0xd')]['noop'](util['format'](_0x9a20('0xb8'),_0x364e19));};AGIVertices[_0x9a20('0x12')][_0x9a20('0x7')]=function(_0xfdd963){logger[_0x9a20('0x2c')](util[_0x9a20('0x27')](_0x9a20('0xb9'),_0xfdd963[_0x9a20('0x35')]));return this[_0x9a20('0xd')][_0x9a20('0x7')]([_0xfdd963['command'],_0xfdd963[_0x9a20('0xba')]]);};AGIVertices[_0x9a20('0x12')][_0x9a20('0xbb')]=function(_0x40eb1){logger[_0x9a20('0x2c')](util[_0x9a20('0x27')]('Enter\x20in\x20ANSWER\x20(%s)\x20block',_0x40eb1[_0x9a20('0x35')]));if(this[_0x9a20('0x88')](_0x40eb1[_0x9a20('0x65')])){logger[_0x9a20('0x2c')](util[_0x9a20('0x27')](_0x9a20('0xbc'),_0x40eb1[_0x9a20('0x65')]));var _0x95d0bc=this['channel'][_0x9a20('0xbd')](_0x40eb1[_0x9a20('0x65')]);if(_0x95d0bc[_0x9a20('0xa6')]===-0x1){return _0x95d0bc;}}return this[_0x9a20('0xd')][_0x9a20('0xbb')]();};AGIVertices['prototype']['callback']=function(_0x5ff02c){logger[_0x9a20('0x2c')](util[_0x9a20('0x27')](_0x9a20('0xbe'),_0x5ff02c[_0x9a20('0x35')]));if(!this[_0x9a20('0x88')](_0x5ff02c[_0x9a20('0x48')])){return this[_0x9a20('0xd')][_0x9a20('0x2a')](_0x5ff02c,_0x9a20('0xbf'));}_0x5ff02c['scheduledAt']=moment();if(this['isConfigured'](_0x5ff02c[_0x9a20('0xc0')])){_0x5ff02c[_0x9a20('0x49')]=moment()[_0x9a20('0xc1')](_0x5ff02c[_0x9a20('0xc0')],_0x9a20('0xc2'));}if(!this[_0x9a20('0x88')](_0x5ff02c[_0x9a20('0x4d')])){_0x5ff02c['callback_priority']=0x2;}this[_0x9a20('0x41')]['sync'](this,_0x5ff02c);return this[_0x9a20('0xd')][_0x9a20('0xaa')](util[_0x9a20('0x27')]('CALLBACK\x20added\x20phone:\x20%s\x20on\x20list:\x20%s\x20at\x20%s',_0x5ff02c['phone'],_0x5ff02c['list_id'],_0x5ff02c['scheduledAt']));};AGIVertices[_0x9a20('0x12')]['custom_app']=function(_0x2169e9){logger[_0x9a20('0x2c')](util[_0x9a20('0x27')](_0x9a20('0xc3'),_0x2169e9[_0x9a20('0x35')]));var _0x24eaf3=this[_0x9a20('0xd')][_0x9a20('0xac')](_0x2169e9[_0x9a20('0xc4')],_0x2169e9[_0x9a20('0x7a')]);if(_0x24eaf3[_0x9a20('0xa6')]===-0x1){return _0x24eaf3;}return this[_0x9a20('0xd')][_0x9a20('0xaa')](util['format']('Executed\x20command\x20%s\x20%s',_0x2169e9[_0x9a20('0xc4')],_0x2169e9[_0x9a20('0x7a')]));};AGIVertices[_0x9a20('0x12')]['lumenvoxtts']=function(_0x2ef8f7){logger[_0x9a20('0x2c')](util[_0x9a20('0x27')](_0x9a20('0xc5'),_0x2ef8f7[_0x9a20('0x35')]));if(!this['isConfigured'](_0x2ef8f7[_0x9a20('0x5d')])){return this[_0x9a20('0xd')][_0x9a20('0xaa')](_0x9a20('0xab'));}var _0x4d7e8d='\x22'+_0x2ef8f7['text']+'\x22';if(this[_0x9a20('0x88')](_0x2ef8f7[_0x9a20('0x7a')])){_0x4d7e8d+=','+_0x2ef8f7[_0x9a20('0x7a')];}var _0x1399b4=this[_0x9a20('0xd')][_0x9a20('0xac')](_0x9a20('0xc6'),_0x4d7e8d);if(_0x1399b4[_0x9a20('0xa6')]===-0x1){return _0x1399b4;}return this[_0x9a20('0xd')][_0x9a20('0xaa')](util[_0x9a20('0x27')]('Executed\x20command\x20MRCPSynth\x20%s',_0x4d7e8d));};AGIVertices[_0x9a20('0x12')][_0x9a20('0xc7')]=function(_0x36b61b){logger['info'](util[_0x9a20('0x27')]('Enter\x20in\x20SESTEKTTS\x20(%s)\x20block',_0x36b61b[_0x9a20('0x35')]));if(!this[_0x9a20('0x88')](_0x36b61b['text'])){return this[_0x9a20('0xd')][_0x9a20('0xaa')](_0x9a20('0xab'));}var _0x354a6b='\x22'+_0x36b61b[_0x9a20('0x5d')]+'\x22';if(this[_0x9a20('0x88')](_0x36b61b['options'])){_0x354a6b+=','+_0x36b61b[_0x9a20('0x7a')];}var _0x3e20de=this['channel'][_0x9a20('0xac')]('MRCPSynth',_0x354a6b);if(_0x3e20de[_0x9a20('0xa6')]===-0x1){return _0x3e20de;}return this['channel'][_0x9a20('0xaa')](util[_0x9a20('0x27')](_0x9a20('0xad'),_0x354a6b));};AGIVertices[_0x9a20('0x12')][_0x9a20('0xc8')]=function(_0x4f6dda){logger[_0x9a20('0x2c')](util[_0x9a20('0x27')](_0x9a20('0xc9'),_0x4f6dda[_0x9a20('0x35')]));if(!this['isConfigured'](_0x4f6dda[_0x9a20('0xb0')])){return this[_0x9a20('0xd')]['noop']('no\x20grammar\x20configured');}var _0x5cd52d=_0x4f6dda[_0x9a20('0xb0')];if(this[_0x9a20('0x88')](_0x4f6dda[_0x9a20('0x7a')])){_0x5cd52d+=','+_0x4f6dda[_0x9a20('0x7a')];}var _0x28bf2e=this[_0x9a20('0xd')][_0x9a20('0xac')](_0x9a20('0xb1'),_0x5cd52d);if(_0x28bf2e[_0x9a20('0xa6')]===-0x1){return _0x28bf2e;}var _0xafad7d=this['getAndSetVariable'](_0x9a20('0xb2'),'LUMENVOX_ASR_CONFIDENCE');if(_0xafad7d[_0x9a20('0xa6')]===-0x1){return _0xafad7d;}var _0x919f39=this['getAndSetVariable'](_0x9a20('0xb4'),_0x9a20('0xca'));if(_0x919f39[_0x9a20('0xa6')]===-0x1){return _0x919f39;}var _0x12ed8f=this[_0x9a20('0xa5')](_0x9a20('0xb6'),_0x9a20('0xcb'));if(_0x12ed8f['result']===-0x1){return _0x12ed8f;}return this[_0x9a20('0xd')][_0x9a20('0xaa')](util[_0x9a20('0x27')](_0x9a20('0xb8'),_0x5cd52d));};AGIVertices[_0x9a20('0x12')]['sestekasr']=function(_0x2d0d38){logger[_0x9a20('0x2c')](util[_0x9a20('0x27')](_0x9a20('0xcc'),_0x2d0d38[_0x9a20('0x35')]));if(!this['isConfigured'](_0x2d0d38[_0x9a20('0xb0')])){return this[_0x9a20('0xd')][_0x9a20('0xaa')](_0x9a20('0xaf'));}var _0x556b6d=_0x2d0d38['grammar'];if(this[_0x9a20('0x88')](_0x2d0d38['options'])){_0x556b6d+=','+_0x2d0d38['options'];}var _0x3f2181=this[_0x9a20('0xd')]['exec'](_0x9a20('0xb1'),_0x556b6d);if(_0x3f2181[_0x9a20('0xa6')]===-0x1){return _0x3f2181;}var _0x11b0be=this[_0x9a20('0xa5')](_0x9a20('0xb2'),_0x9a20('0xcd'));if(_0x11b0be[_0x9a20('0xa6')]===-0x1){return _0x11b0be;}var _0x553752=this['getAndSetVariable'](_0x9a20('0xb4'),_0x9a20('0xce'));if(_0x553752[_0x9a20('0xa6')]===-0x1){return _0x553752;}var _0x5b12d0=this[_0x9a20('0xa5')](_0x9a20('0xb6'),_0x9a20('0xcf'));if(_0x5b12d0[_0x9a20('0xa6')]===-0x1){return _0x5b12d0;}return this[_0x9a20('0xd')]['noop'](util['format'](_0x9a20('0xb8'),_0x556b6d));};AGIVertices[_0x9a20('0x12')][_0x9a20('0xd0')]=function(_0x2568a2){logger[_0x9a20('0x2c')](util['format']('Enter\x20in\x20DATABASE\x20(%s)\x20block',_0x2568a2['label']));if(!this[_0x9a20('0x88')](_0x2568a2[_0x9a20('0xd1')])){return this['channel'][_0x9a20('0x2a')](_0x2568a2,_0x9a20('0xd2'));}var _0x3ab68e=this['getSquareOdbc']['sync'](this,_0x2568a2[_0x9a20('0xd1')]);if(!_0x3ab68e){return this[_0x9a20('0xd')][_0x9a20('0x2a')](_0x2568a2,_0x9a20('0xd3'));}if(!this['isConfigured'](_0x2568a2['query'])){return this['channel'][_0x9a20('0x2a')](_0x2568a2,'no\x20query\x20configured');}var _0x9681e6=_0x2568a2[_0x9a20('0x2e')][_0x9a20('0x59')](/(\r\n|\n|\r)/gm,'\x20');this['channel'][_0x9a20('0xaa')](util[_0x9a20('0x27')](_0x9a20('0xd4'),_0x9681e6));var _0x3fe43a=this['getQueryOdbc'][_0x9a20('0x70')](this,_0x3ab68e,_0x9681e6);this['createSquareDetailsReport'][_0x9a20('0x70')](this,_0x2568a2,_0x9681e6);if(!this[_0x9a20('0x88')](_0x2568a2['variable_id'])){return this['channel'][_0x9a20('0xaa')](_0x9a20('0xd5'));}var _0x3a6f8d=this[_0x9a20('0xa3')][_0x9a20('0x70')](this,_0x2568a2[_0x9a20('0xd6')]);if(!_0x3a6f8d){return this[_0x9a20('0xd')]['error'](_0x2568a2,_0x9a20('0xd7'));}var _0x5334b3=this;_0x3fe43a[_0x9a20('0xd8')](function(_0x6b5b6e,_0x487e53){Object['keys'](_0x6b5b6e)[_0x9a20('0xd8')](function(_0x5f1dea){_0x5334b3['channel'][_0x9a20('0xa1')](util[_0x9a20('0x27')](_0x9a20('0xd9'),_0x3a6f8d,_0x487e53,_0x5f1dea),_0x6b5b6e[_0x5f1dea]);});});this[_0x9a20('0xd')][_0x9a20('0xa1')](util[_0x9a20('0x27')](_0x9a20('0xda'),_0x3a6f8d),_0x3fe43a['length']);return this[_0x9a20('0xd')][_0x9a20('0xaa')](util[_0x9a20('0x27')](_0x9a20('0xdb'),_0x3a6f8d));};AGIVertices[_0x9a20('0x12')][_0x9a20('0xdc')]=function(_0xea1072){logger['debug'](util[_0x9a20('0x27')](_0x9a20('0xdd'),_0xea1072[_0x9a20('0x35')]));if(!this[_0x9a20('0x88')](_0xea1072['sip_id'])){return this[_0x9a20('0xd')][_0x9a20('0x2a')](_0xea1072,_0x9a20('0xde'));}var _0xc8db3c=this[_0x9a20('0x19')]['sync'](this,_0xea1072[_0x9a20('0xdf')]);if(!_0xc8db3c){return this['channel'][_0x9a20('0x2a')](_0xea1072,_0x9a20('0xe0'));}var _0x46a429=this[_0x9a20('0xd')][_0x9a20('0xac')](_0x9a20('0xe1'),[util['format'](_0x9a20('0xe2'),_0xc8db3c),_0xea1072['timeout'],_0xea1072['opts'],_0xea1072[_0x9a20('0x72')]]);if(_0x46a429[_0x9a20('0xa6')]===-0x1){return _0x46a429;}return this[_0x9a20('0xd')][_0x9a20('0xaa')](util[_0x9a20('0x27')](_0x9a20('0xe3'),_0x9a20('0xe1')));};AGIVertices['prototype'][_0x9a20('0xe4')]=function(_0x3c4a3f){logger[_0x9a20('0x2c')](util['format'](_0x9a20('0xe5'),_0x3c4a3f['label']));if(!this['isConfigured'](_0x3c4a3f[_0x9a20('0x7c')])){return this[_0x9a20('0xd')][_0x9a20('0xaa')](_0x9a20('0xe6'));}if(!this[_0x9a20('0x88')](_0x3c4a3f[_0x9a20('0x5d')])){return this[_0x9a20('0xd')]['noop'](_0x9a20('0xab'));}this[_0x9a20('0xd')][_0x9a20('0xe7')]=!![];this['createSquareDetailsReport'](_0x3c4a3f);this[_0x9a20('0x3f')](_0x3c4a3f['text'],'in','','');this[_0x9a20('0xd')]['noop'](util[_0x9a20('0x27')](_0x9a20('0xe8'),_0x3c4a3f[_0x9a20('0x5d')]));var _0x17c4ae=this[_0x9a20('0x7b')]['sync'](this,_0x3c4a3f);if(_0x17c4ae){for(var _0x50cf77 in _0x17c4ae){if(_0x17c4ae[_0x9a20('0x97')](_0x50cf77)){this['channel'][_0x9a20('0xa1')](util['format']('DIALOGFLOW_%s',_0x50cf77['toUpperCase']()),_0x17c4ae[_0x50cf77]);}}this[_0x9a20('0x3f')](_0x17c4ae[_0x9a20('0xe9')],_0x9a20('0xea'),'dialogflow','');return this[_0x9a20('0xd')][_0x9a20('0xaa')](util[_0x9a20('0x27')](_0x9a20('0xeb'),_0x17c4ae[_0x9a20('0xe9')]));}return this['channel']['error'](_0x3c4a3f,_0x9a20('0xec'));};AGIVertices[_0x9a20('0x12')]['dialogflowV2']=function(_0x2c379e){logger[_0x9a20('0x2c')](util[_0x9a20('0x27')](_0x9a20('0xed'),_0x2c379e[_0x9a20('0x35')]));if(!this[_0x9a20('0x88')](_0x2c379e[_0x9a20('0x7f')])){return this['channel'][_0x9a20('0xaa')](_0x9a20('0xee'));}if(!this[_0x9a20('0x88')](_0x2c379e[_0x9a20('0x80')])){return this[_0x9a20('0xd')][_0x9a20('0xaa')](_0x9a20('0xef'));}if(!this[_0x9a20('0x88')](_0x2c379e[_0x9a20('0xf0')])){return this['channel'][_0x9a20('0xaa')]('no\x20private_key\x20configured');}if(!this[_0x9a20('0x88')](_0x2c379e[_0x9a20('0xf1')])){return this[_0x9a20('0xd')][_0x9a20('0xaa')](_0x9a20('0xf2'));}if(!this[_0x9a20('0x88')](_0x2c379e[_0x9a20('0x5d')])){return this[_0x9a20('0xd')][_0x9a20('0xaa')]('no\x20text\x20configured');}this[_0x9a20('0xd')][_0x9a20('0xe7')]=!![];this['createSquareDetailsReport'](_0x2c379e);this[_0x9a20('0x3f')](_0x2c379e['text'],'in','','');this[_0x9a20('0xd')][_0x9a20('0xaa')](util['format'](_0x9a20('0xf3'),_0x2c379e[_0x9a20('0x5d')]));var _0x5007bf=this[_0x9a20('0x7e')][_0x9a20('0x70')](this,_0x2c379e);if(_0x5007bf){for(var _0x385f17 in _0x5007bf){if(_0x5007bf[_0x9a20('0x97')](_0x385f17)){if(_0x385f17!==_0x9a20('0xf4')){this[_0x9a20('0xd')][_0x9a20('0xa1')](util['format'](_0x9a20('0xf5'),_0x385f17['toUpperCase']()),_0x5007bf[_0x385f17]);}}}this[_0x9a20('0x3f')](_0x5007bf[_0x9a20('0xe9')],_0x9a20('0xea'),_0x9a20('0xf6'),_0x5007bf['providerResponse']);return this[_0x9a20('0xd')][_0x9a20('0xaa')](util[_0x9a20('0x27')](_0x9a20('0xf7'),_0x5007bf[_0x9a20('0xe9')]));}return this[_0x9a20('0xd')][_0x9a20('0x2a')](_0x2c379e,_0x9a20('0xf8'));};AGIVertices[_0x9a20('0x12')][_0x9a20('0xf9')]=function(_0x56d30f){logger[_0x9a20('0x2c')](util[_0x9a20('0x27')]('Enter\x20in\x20SESTEKNDA\x20(%s)\x20block',_0x56d30f['label']));if(!this['isConfigured'](_0x56d30f[_0x9a20('0xfa')])){return this[_0x9a20('0xd')]['noop'](_0x9a20('0xfb'));}if(!this[_0x9a20('0x88')](_0x56d30f['username'])){return this[_0x9a20('0xd')][_0x9a20('0xaa')](_0x9a20('0xfc'));}if(!this[_0x9a20('0x88')](_0x56d30f['password'])){return this['channel'][_0x9a20('0xaa')]('no\x20password\x20configured');}if(!this[_0x9a20('0x88')](_0x56d30f[_0x9a20('0xfd')])){return this[_0x9a20('0xd')][_0x9a20('0xaa')]('no\x20text\x20configured');}this['channel'][_0x9a20('0xe7')]=!![];this[_0x9a20('0x34')](_0x56d30f);this[_0x9a20('0x3f')](_0x56d30f[_0x9a20('0x5d')],'in','','');this[_0x9a20('0xd')][_0x9a20('0xaa')](util[_0x9a20('0x27')](_0x9a20('0xfe'),_0x56d30f['text']));var _0x208901=this[_0x9a20('0x81')][_0x9a20('0x70')](this,_0x56d30f);if(_0x208901){for(var _0x2aa75b in _0x208901){if(_0x208901[_0x9a20('0x97')](_0x2aa75b)){this['channel'][_0x9a20('0xa1')](util[_0x9a20('0x27')](_0x9a20('0xff'),_0x2aa75b['toUpperCase']()),_0x208901[_0x2aa75b]);}}this[_0x9a20('0x3f')](_0x208901[_0x9a20('0xe9')],'out','sesteknda','');if(_0x208901['audiofile']){this[_0x9a20('0xd')][_0x9a20('0xaa')](util[_0x9a20('0x27')](_0x9a20('0x100'),_0x208901['audiofile']));var _0x363116=this[_0x9a20('0xd')][_0x9a20('0x101')](_0x208901['audiofile']);try{fs[_0x9a20('0x102')](_0x208901['audiofile']+_0x9a20('0x103'));}catch(_0x50750a){logger[_0x9a20('0x2a')](_0x50750a);}return _0x363116;}else{return this['channel'][_0x9a20('0xaa')](util[_0x9a20('0x27')](_0x9a20('0x104'),_0x208901[_0x9a20('0xe9')]));}}return this[_0x9a20('0xd')]['error'](_0x56d30f,'SestekNDA\x20is\x20unreachable');};AGIVertices[_0x9a20('0x12')][_0x9a20('0x105')]=function(_0x5e6b71){logger['info'](util[_0x9a20('0x27')](_0x9a20('0x106'),_0x5e6b71[_0x9a20('0x35')]));return this[_0x9a20('0xd')]['noop'](_0x9a20('0x105'));};AGIVertices[_0x9a20('0x12')][_0x9a20('0x107')]=function(_0x4ba5ed){logger['info'](util[_0x9a20('0x27')](_0x9a20('0x108'),_0x4ba5ed[_0x9a20('0x35')]));var _0x116e5b='';if(_0x4ba5ed['trunk_id']){if(!this[_0x9a20('0x88')](_0x4ba5ed[_0x9a20('0x109')])){return this[_0x9a20('0xd')][_0x9a20('0x2a')](_0x4ba5ed,'no\x20trunk\x20selected');}else{var _0x3ec7a5=parseInt(_0x4ba5ed[_0x9a20('0x109')],0xa);if(isNaN(_0x3ec7a5)){_0x116e5b=_0x4ba5ed[_0x9a20('0x109')];}else{_0x116e5b=this[_0x9a20('0x10a')][_0x9a20('0x70')](this,_0x4ba5ed[_0x9a20('0x109')]);if(!_0x116e5b){return this['channel'][_0x9a20('0x2a')](_0x4ba5ed,'no\x20trunk\x20found');}}}}else if(_0x4ba5ed['trunk_name']){_0x116e5b=_0x4ba5ed[_0x9a20('0x10b')];}else{return this['channel'][_0x9a20('0x2a')](_0x4ba5ed,_0x9a20('0x10c'));}var _0x3014ba=this[_0x9a20('0xd')][_0x9a20('0xac')](_0x9a20('0xe1'),[util[_0x9a20('0x27')]('SIP/%s/%s',_0x116e5b,_0x4ba5ed[_0x9a20('0x47')]),_0x4ba5ed[_0x9a20('0x65')],_0x4ba5ed[_0x9a20('0x10d')],_0x4ba5ed[_0x9a20('0x72')]]);if(_0x3014ba[_0x9a20('0xa6')]===-0x1){return _0x3014ba;}return this['channel']['noop'](util['format'](_0x9a20('0xe3'),_0x9a20('0xe1')));};AGIVertices[_0x9a20('0x12')][_0x9a20('0x10e')]=function(_0x4a85e3){logger[_0x9a20('0x2c')](util['format'](_0x9a20('0x10f'),_0x4a85e3[_0x9a20('0x35')]));return this[_0x9a20('0xd')][_0x9a20('0xaa')](_0x9a20('0x10e'));};AGIVertices['prototype']['getdigits']=function(_0x18c2d8){logger[_0x9a20('0x2c')](util[_0x9a20('0x27')]('Enter\x20in\x20GETDIGITS\x20(%s)\x20block',_0x18c2d8[_0x9a20('0x35')]));if(_0x18c2d8['retry']===0x0){return this[_0x9a20('0xa8')](_0x18c2d8);}_0x18c2d8[_0x9a20('0xa9')]-=0x1;if(!this['isConfigured'](_0x18c2d8[_0x9a20('0x110')])){return this[_0x9a20('0xd')][_0x9a20('0x2a')](_0x18c2d8,'no\x20file\x20audio\x20selected');}var _0x4593d8=this[_0x9a20('0x1c')]['sync'](this,_0x18c2d8['file_id']);if(!_0x4593d8){return this[_0x9a20('0xd')][_0x9a20('0x2a')](_0x18c2d8,_0x9a20('0x111'));}if(!this[_0x9a20('0x88')](_0x18c2d8['variable_id'])){return this[_0x9a20('0xd')][_0x9a20('0x2a')]('no\x20variable\x20selected\x20for\x20the\x20result');}var _0x34688f=this[_0x9a20('0xd')][_0x9a20('0x112')](_0x4593d8,_0x18c2d8[_0x9a20('0x113')],_0x18c2d8[_0x9a20('0x114')]);var _0x953fd1=_0x34688f[_0x9a20('0xa6')]?_0x34688f['result'][_0x9a20('0x4c')]():'';logger[_0x9a20('0x2c')](_0x9a20('0x115'),JSON[_0x9a20('0x74')](_0x34688f));if(_0x34688f[_0x9a20('0xa6')]===-0x1){this[_0x9a20('0x34')][_0x9a20('0x70')](this,_0x18c2d8,_0x953fd1);return _0x34688f;}else if(_0x34688f[_0x9a20('0xa4')]===_0x9a20('0x65')){_0x34688f[_0x9a20('0xa6')]=_0x953fd1[_0x9a20('0xa0')]>=parseInt(_0x18c2d8[_0x9a20('0x116')])?'x':'i';}else{_0x34688f[_0x9a20('0xa6')]=_0x953fd1[_0x9a20('0xa0')]>=parseInt(_0x18c2d8[_0x9a20('0x116')])&&_0x953fd1[_0x9a20('0xa0')]<=parseInt(_0x18c2d8['maxdigit'])?'x':'i';}var _0xfe6398=this[_0x9a20('0xa3')][_0x9a20('0x70')](this,_0x18c2d8[_0x9a20('0xd6')]);if(!_0xfe6398){return this[_0x9a20('0xd')][_0x9a20('0x2a')](_0x18c2d8,_0x9a20('0xd7'));}this[_0x9a20('0xd')]['setVariable'](_0xfe6398,_0x953fd1);if(this[_0x9a20('0x88')](_0x18c2d8['hiddendigitsnum'])){var _0xd97a51=parseInt(_0x18c2d8['hiddendigitsnum'],0xa);var _0x50f55a=rs[_0x9a20('0x117')]({'charset':'*','length':_0xd97a51});var _0x396edd=_0x953fd1['length'];if(_0x396edd>0x0){if(_0x396edd>_0xd97a51){this['createSquareDetailsReport']['sync'](this,_0x18c2d8,_0x18c2d8[_0x9a20('0x118')]==='first'?_0x50f55a+_0x953fd1[_0x9a20('0x119')](_0xd97a51):_0x953fd1[_0x9a20('0x119')](0x0,_0x396edd-_0xd97a51)+_0x50f55a);}else{this['createSquareDetailsReport'][_0x9a20('0x70')](this,_0x18c2d8,rs[_0x9a20('0x117')]({'charset':'*','length':_0x396edd}));}}else{this['createSquareDetailsReport']['sync'](this,_0x18c2d8,'');}}else{this[_0x9a20('0x34')]['sync'](this,_0x18c2d8,_0x953fd1);}return _0x34688f;};AGIVertices[_0x9a20('0x12')]['getsecretdigits']=function(_0x4f3d1f){logger[_0x9a20('0x2c')](util[_0x9a20('0x27')](_0x9a20('0x11a'),_0x4f3d1f['label']));return this['getdigits'](_0x4f3d1f);};AGIVertices[_0x9a20('0x12')][_0x9a20('0x11b')]=function(_0x350da5){logger['info'](util['format'](_0x9a20('0x11c'),_0x350da5[_0x9a20('0x35')]));this[_0x9a20('0x34')][_0x9a20('0x70')](this,_0x350da5,_0x350da5[_0x9a20('0x11d')]);return this[_0x9a20('0xd')][_0x9a20('0xaa')](util[_0x9a20('0x27')](_0x9a20('0x11e'),_0x350da5[_0x9a20('0x11d')]));};AGIVertices[_0x9a20('0x12')][_0x9a20('0x11f')]=function(_0x358917){logger['info'](util[_0x9a20('0x27')](_0x9a20('0x120'),_0x358917[_0x9a20('0x35')]));if(!this[_0x9a20('0x88')](_0x358917[_0x9a20('0x90')])||!this[_0x9a20('0x88')](_0x358917[_0x9a20('0x8b')])){return this[_0x9a20('0xd')][_0x9a20('0xaa')](_0x9a20('0x121'));}if(!this[_0x9a20('0x88')](_0x358917['text'])){return this[_0x9a20('0xd')]['noop'](_0x9a20('0xab'));}this[_0x9a20('0xd')][_0x9a20('0xaa')](util[_0x9a20('0x27')](_0x9a20('0x122'),_0x358917[_0x9a20('0x5d')]));var _0x4defff=this['awsPolly'][_0x9a20('0x70')](this,_0x358917);if(_0x4defff){this[_0x9a20('0xd')][_0x9a20('0xaa')](util[_0x9a20('0x27')](_0x9a20('0x123'),_0x4defff));var _0x1b443f=this[_0x9a20('0xd')]['streamFile'](_0x4defff);try{fs[_0x9a20('0x102')](_0x4defff+_0x9a20('0x103'));}catch(_0x2d1e43){logger[_0x9a20('0x2a')](_0x2d1e43);}return _0x1b443f;}return this['channel'][_0x9a20('0x2a')](_0x358917,'aws\x20Polly\x20is\x20unreachable');};AGIVertices[_0x9a20('0x12')]['awslex']=function(_0x2779a4){logger[_0x9a20('0x2c')](util[_0x9a20('0x27')](_0x9a20('0x124'),_0x2779a4[_0x9a20('0x35')]));if(!this[_0x9a20('0x88')](_0x2779a4[_0x9a20('0x90')])||!this['isConfigured'](_0x2779a4[_0x9a20('0x8b')])){return this[_0x9a20('0xd')]['noop']('no\x20valid\x20credentials\x20configured');}if(!this['isConfigured'](_0x2779a4[_0x9a20('0x92')])){return this['channel'][_0x9a20('0xaa')]('no\x20bot\x20name\x20configured');}if(!this[_0x9a20('0x88')](_0x2779a4['text'])){return this[_0x9a20('0xd')][_0x9a20('0xaa')](_0x9a20('0xab'));}this[_0x9a20('0xd')][_0x9a20('0xe7')]=!![];this[_0x9a20('0x34')](_0x2779a4);this[_0x9a20('0x3f')](_0x2779a4['text'],'in','','');this[_0x9a20('0xd')]['noop'](util[_0x9a20('0x27')](_0x9a20('0x125'),_0x2779a4[_0x9a20('0x5d')]));var _0x566d03=this[_0x9a20('0x8f')][_0x9a20('0x70')](this,_0x2779a4);if(_0x566d03){for(var _0x4b1a54 in _0x566d03){if(_0x566d03[_0x9a20('0x97')](_0x4b1a54)&&_[_0x9a20('0x9b')](_0x566d03[_0x4b1a54])){this[_0x9a20('0xd')][_0x9a20('0xa1')](util[_0x9a20('0x27')](_0x9a20('0x126'),_0x4b1a54[_0x9a20('0x68')]()),_0x566d03[_0x4b1a54]);}}if(_[_0x9a20('0x43')](_0x566d03[_0x9a20('0x78')])){return this[_0x9a20('0xd')][_0x9a20('0xaa')](_0x9a20('0x127'));}else{this[_0x9a20('0x3f')](_0x566d03[_0x9a20('0x78')],_0x9a20('0xea'),'amazonlex','');return this[_0x9a20('0xd')][_0x9a20('0xaa')](util[_0x9a20('0x27')]('Amazon\x20Lex\x20Result\x20%s',_0x566d03[_0x9a20('0x78')]));}}return this[_0x9a20('0xd')][_0x9a20('0x2a')](_0x2779a4,_0x9a20('0x128'));};AGIVertices[_0x9a20('0x12')][_0x9a20('0x129')]=function(_0x438060){logger['info'](util['format'](_0x9a20('0x12a'),_0x438060[_0x9a20('0x35')],_0x438060[_0x9a20('0x65')]));if(!this[_0x9a20('0x88')](_0x438060[_0x9a20('0x7c')])){return this[_0x9a20('0xd')][_0x9a20('0xaa')]('no\x20key\x20configured');}var _0x5caad0='wav';var _0x2f1c25=util[_0x9a20('0x27')](_0x9a20('0x12b'),FILES_PATH,rs[_0x9a20('0x117')](0x4));var _0x5eafa3=util[_0x9a20('0x27')](_0x9a20('0x9f'),_0x2f1c25,_0x5caad0);var _0x3b5274=!![];if(_0x438060['beep']===_0x9a20('0x12c')){_0x3b5274=![];}var _0x38a62d=this[_0x9a20('0xd')][_0x9a20('0x12d')](_0x2f1c25,_0x5caad0,_0x438060[_0x9a20('0x12e')],_0x438060[_0x9a20('0x65')],undefined,_0x3b5274);if(_0x38a62d[_0x9a20('0xa6')]!==-0x1){this['channel'][_0x9a20('0xaa')](util[_0x9a20('0x27')](_0x9a20('0x12f'),_0x5eafa3));var _0x346eb5=this[_0x9a20('0x93')][_0x9a20('0x70')](this,_0x438060,_0x5eafa3);if(_0x346eb5){for(var _0x161aa8 in _0x346eb5){if(_0x346eb5[_0x9a20('0x97')](_0x161aa8)){this[_0x9a20('0xd')][_0x9a20('0xa1')](util[_0x9a20('0x27')]('GOOGLE_ASR_%s',_0x161aa8[_0x9a20('0x68')]()),_0x346eb5[_0x161aa8]);}}return this[_0x9a20('0xd')][_0x9a20('0xaa')](util[_0x9a20('0x27')](_0x9a20('0x130'),JSON[_0x9a20('0x74')](_0x346eb5)));}}return _0x38a62d;};AGIVertices[_0x9a20('0x12')][_0x9a20('0x131')]=function(_0x15ef6e){logger['info'](util[_0x9a20('0x27')](_0x9a20('0x132'),_0x15ef6e['label']));if(!this['isConfigured'](_0x15ef6e['appid'])){return this['channel']['noop'](_0x9a20('0x133'));}if(!this[_0x9a20('0x88')](_0x15ef6e['appsecret'])){return this[_0x9a20('0xd')][_0x9a20('0xaa')](_0x9a20('0x134'));}var _0x1184a8=_0x9a20('0x135');var _0xfc56de=util['format']('%s/recordings/%s',FILES_PATH,rs[_0x9a20('0x117')](0x4));var _0x4e3e58=util['format'](_0x9a20('0x9f'),_0xfc56de,_0x1184a8);var _0x27c28b=!![];if(_0x15ef6e['beep']==='NOBEEP'){_0x27c28b=![];}var _0x457e10=this[_0x9a20('0xd')][_0x9a20('0x12d')](_0xfc56de,_0x1184a8,_0x15ef6e[_0x9a20('0x12e')],_0x15ef6e[_0x9a20('0x65')],undefined,_0x27c28b);if(_0x457e10['result']!==-0x1){this[_0x9a20('0xd')]['noop'](util[_0x9a20('0x27')](_0x9a20('0x136'),_0x4e3e58));var _0x4a0b97=this[_0x9a20('0x95')][_0x9a20('0x70')](this,_0x15ef6e,_0x4e3e58);if(_0x4a0b97){for(var _0x4f374d in _0x4a0b97){if(_0x4a0b97['hasOwnProperty'](_0x4f374d)){this[_0x9a20('0xd')]['setVariable'](util['format'](_0x9a20('0x137'),_0x4f374d[_0x9a20('0x68')]()),_0x4a0b97[_0x4f374d]);}}return this[_0x9a20('0xd')]['noop'](util['format']('TildeASR\x20Result\x20%s',JSON[_0x9a20('0x74')](_0x4a0b97)));}}return _0x457e10;};AGIVertices['prototype'][_0x9a20('0x138')]=function(_0x5dc591){logger[_0x9a20('0x2c')](util[_0x9a20('0x27')]('Enter\x20in\x20GOTO\x20(%s)\x20block',_0x5dc591[_0x9a20('0x35')]));return this[_0x9a20('0xd')]['continueAt'](_0x5dc591[_0x9a20('0x3b')],_0x5dc591['extension'],_0x5dc591[_0x9a20('0x139')]);};AGIVertices['prototype'][_0x9a20('0x13a')]=function(_0x23e990){logger[_0x9a20('0x2c')](util[_0x9a20('0x27')](_0x9a20('0x13b'),_0x23e990[_0x9a20('0x35')]));if(!this['isConfigured'](_0x23e990[_0x9a20('0x13c')])){return this[_0x9a20('0xd')][_0x9a20('0x2a')](_0x23e990,_0x9a20('0x13d'));}try{var _0x1bd81d=eval(_0x23e990[_0x9a20('0x13c')])?_0x9a20('0x13e'):_0x9a20('0x13f');this[_0x9a20('0xd')][_0x9a20('0xaa')](util[_0x9a20('0x27')](_0x9a20('0x140'),_0x23e990[_0x9a20('0x13c')],_0x1bd81d));return{'code':0xc8,'result':_0x1bd81d};}catch(_0x5c5112){return{'code':0xc8,'result':'false'};}};AGIVertices[_0x9a20('0x12')][_0x9a20('0x141')]=function(_0x319cd4){logger[_0x9a20('0x2c')](util[_0x9a20('0x27')](_0x9a20('0x142'),_0x319cd4[_0x9a20('0x35')]));if(!this[_0x9a20('0x88')](_0x319cd4[_0x9a20('0x143')])){return this[_0x9a20('0xd')][_0x9a20('0x2a')](_0x319cd4,_0x9a20('0x144'));}var _0x315ce1=this[_0x9a20('0x22')][_0x9a20('0x70')](this,_0x319cd4[_0x9a20('0x143')]);if(!_0x315ce1){return this[_0x9a20('0xd')][_0x9a20('0x2a')](_0x319cd4,_0x9a20('0x145'));}for(var _0x33ab5b=0x0;_0x33ab5b<_0x315ce1['length'];_0x33ab5b+=0x1){var _0x5b860d=this['channel'][_0x9a20('0xa3')](util[_0x9a20('0x27')](_0x9a20('0x146'),_0x315ce1[_0x33ab5b]));if(_0x5b860d['result']===-0x1){return _0x5b860d;}logger[_0x9a20('0x2c')](util[_0x9a20('0x27')](_0x9a20('0x147'),_0x315ce1[_0x33ab5b],_0x5b860d[_0x9a20('0xa4')]));if(_0x5b860d[_0x9a20('0xa4')]===_0x9a20('0x13e')){logger['info'](util[_0x9a20('0x27')](_0x9a20('0x147'),_0x315ce1[_0x33ab5b],'true'));this['channel']['noop'](util['format'](_0x9a20('0x147'),_0x315ce1[_0x33ab5b],_0x9a20('0x13e')));return{'code':0xc8,'result':_0x9a20('0x13e')};}else{logger[_0x9a20('0x2c')](util['format'](_0x9a20('0x147'),_0x315ce1[_0x33ab5b],_0x9a20('0x13f')));this[_0x9a20('0xd')]['noop'](util[_0x9a20('0x27')]('IFTIME\x20%s\x20%s',_0x315ce1[_0x33ab5b],_0x9a20('0x13f')));}}return{'code':0xc8,'result':_0x9a20('0x13f')};};AGIVertices[_0x9a20('0x12')][_0x9a20('0x148')]=function(_0x4ae6d9){logger[_0x9a20('0x2c')](util[_0x9a20('0x27')]('Enter\x20in\x20HANGUP\x20(%s)\x20block',_0x4ae6d9['label']));return this[_0x9a20('0xd')][_0x9a20('0x148')]();};AGIVertices[_0x9a20('0x12')][_0x9a20('0x149')]=function(_0xa80e2c){logger['info'](util[_0x9a20('0x27')]('Enter\x20in\x20ISPEECHASR\x20(%s)\x20block',_0xa80e2c['label']));if(!this[_0x9a20('0x88')](_0xa80e2c[_0x9a20('0x7c')])){return this['channel'][_0x9a20('0xaa')]('no\x20key\x20configured');}var _0x3a94f2=_0x9a20('0x135');var _0x487a1e=util[_0x9a20('0x27')](_0x9a20('0x12b'),FILES_PATH,rs[_0x9a20('0x117')](0x4));var _0x404d02=util[_0x9a20('0x27')](_0x9a20('0x9f'),_0x487a1e,_0x3a94f2);var _0x34f87d=!![];if(_0xa80e2c[_0x9a20('0x14a')]==='NOBEEP'){_0x34f87d=![];}var _0x203b41=this[_0x9a20('0xd')][_0x9a20('0x12d')](_0x487a1e,_0x3a94f2,_0xa80e2c[_0x9a20('0x12e')],_0xa80e2c['timeout'],undefined,_0x34f87d);if(_0x203b41['result']!==-0x1){this[_0x9a20('0xd')][_0x9a20('0xaa')](util[_0x9a20('0x27')](_0x9a20('0x14b'),_0x404d02));var _0x5102f6=this[_0x9a20('0x86')][_0x9a20('0x70')](this,_0xa80e2c,_0x404d02);if(_0x5102f6){for(var _0x2b9e6d in _0x5102f6){if(_0x5102f6[_0x9a20('0x97')](_0x2b9e6d)){this['channel'][_0x9a20('0xa1')](util[_0x9a20('0x27')]('ISPEECH_ASR_%s',_0x2b9e6d['toUpperCase']()),_0x5102f6[_0x2b9e6d]);}}return this[_0x9a20('0xd')][_0x9a20('0xaa')](util[_0x9a20('0x27')]('IspeechASR\x20Result\x20%s',JSON[_0x9a20('0x74')](_0x5102f6)));}}return _0x203b41;};AGIVertices['prototype'][_0x9a20('0x14c')]=function(_0x448505){logger[_0x9a20('0x2c')](util[_0x9a20('0x27')](_0x9a20('0x14d'),_0x448505[_0x9a20('0x35')]));if(!this['isConfigured'](_0x448505[_0x9a20('0x7c')])){return this[_0x9a20('0xd')][_0x9a20('0xaa')](_0x9a20('0xe6'));}if(!this[_0x9a20('0x88')](_0x448505[_0x9a20('0x5d')])){return this[_0x9a20('0xd')][_0x9a20('0xaa')](_0x9a20('0xab'));}this[_0x9a20('0xd')][_0x9a20('0xaa')](util[_0x9a20('0x27')]('Trying\x20ispeech\x20TTS\x20%s',_0x448505['text']));var _0x10cda5=this[_0x9a20('0x82')]['sync'](this,_0x448505);if(_0x10cda5){this[_0x9a20('0xd')]['noop'](util[_0x9a20('0x27')](_0x9a20('0x14b'),_0x10cda5));var _0x4b0d39=this[_0x9a20('0xd')][_0x9a20('0x101')](_0x10cda5,_0x448505['intKey']);try{fs[_0x9a20('0x102')](_0x10cda5+_0x9a20('0x103'));}catch(_0x2b0f4d){logger[_0x9a20('0x2a')](_0x2b0f4d);}return _0x4b0d39;}return this['channel'][_0x9a20('0x2a')](_0x448505,_0x9a20('0x14e'));};AGIVertices[_0x9a20('0x12')][_0x9a20('0x14f')]=function(_0x52a417){logger[_0x9a20('0x2c')](util[_0x9a20('0x27')]('Enter\x20in\x20LOGIN\x20(%s)\x20block',_0x52a417[_0x9a20('0x35')]));if(!this[_0x9a20('0x88')](_0x52a417[_0x9a20('0x150')])){return this[_0x9a20('0xd')][_0x9a20('0x2a')](_0x52a417,_0x9a20('0x151'));}logger[_0x9a20('0x2c')](util[_0x9a20('0x27')](_0x9a20('0x152'),this['channel']['callerid'],_0x52a417[_0x9a20('0x150')]));var _0x3e5b87=this[_0x9a20('0x53')][_0x9a20('0x70')](this,_0x52a417[_0x9a20('0x150')]);if(_0x3e5b87){logger[_0x9a20('0x2c')](util[_0x9a20('0x27')](_0x9a20('0x153'),this[_0x9a20('0xd')][_0x9a20('0x38')],_0x52a417['findBy']));this[_0x9a20('0xd')][_0x9a20('0xaa')](util['format'](_0x9a20('0x153'),this['channel'][_0x9a20('0x38')],_0x52a417[_0x9a20('0x150')]));return{'code':0xc8,'result':_0x9a20('0x154')};}else{logger['info'](util[_0x9a20('0x27')](_0x9a20('0x155'),this[_0x9a20('0xd')][_0x9a20('0x38')],_0x52a417[_0x9a20('0x150')]));this[_0x9a20('0xd')][_0x9a20('0xaa')](util['format'](_0x9a20('0x155'),this[_0x9a20('0xd')][_0x9a20('0x38')],_0x52a417[_0x9a20('0x150')]));return{'code':0xc8,'result':_0x9a20('0x156')};}};AGIVertices[_0x9a20('0x12')][_0x9a20('0x157')]=function(_0x150a4f){logger['info'](util[_0x9a20('0x27')]('Enter\x20in\x20LOGOUT\x20(%s)\x20block',_0x150a4f[_0x9a20('0x35')]));if(!this[_0x9a20('0x88')](_0x150a4f[_0x9a20('0x150')])){return this[_0x9a20('0xd')][_0x9a20('0x2a')](_0x150a4f,'no\x20find\x20by\x20configured');}logger[_0x9a20('0x2c')](util[_0x9a20('0x27')](_0x9a20('0x152'),this[_0x9a20('0xd')][_0x9a20('0x38')],_0x150a4f[_0x9a20('0x150')]));var _0x430422=this[_0x9a20('0x52')][_0x9a20('0x70')](this,_0x150a4f[_0x9a20('0x150')]);if(_0x430422){logger[_0x9a20('0x2c')](util[_0x9a20('0x27')](_0x9a20('0x153'),this[_0x9a20('0xd')][_0x9a20('0x38')],_0x150a4f['findBy']));this[_0x9a20('0xd')][_0x9a20('0xaa')](util[_0x9a20('0x27')](_0x9a20('0x153'),this['channel'][_0x9a20('0x38')],_0x150a4f[_0x9a20('0x150')]));return{'code':0xc8,'result':_0x9a20('0x154')};}else{logger[_0x9a20('0x2c')](util[_0x9a20('0x27')](_0x9a20('0x155'),this['channel'][_0x9a20('0x38')],_0x150a4f[_0x9a20('0x150')]));this[_0x9a20('0xd')][_0x9a20('0xaa')](util['format'](_0x9a20('0x155'),this[_0x9a20('0xd')]['callerid'],_0x150a4f[_0x9a20('0x150')]));return{'code':0xc8,'result':'failure'};}};AGIVertices[_0x9a20('0x12')][_0x9a20('0x158')]=function(_0x40bea3){logger['info'](util[_0x9a20('0x27')](_0x9a20('0x159'),_0x40bea3[_0x9a20('0x35')]));if(!this[_0x9a20('0x88')](_0x40bea3[_0x9a20('0x15a')])){return this['channel'][_0x9a20('0x2a')](_0x40bea3,'no\x20operation\x20configured');}this[_0x9a20('0xd')]['noop'](util[_0x9a20('0x27')](_0x9a20('0x15b'),_0x40bea3[_0x9a20('0x15a')]));var _0x1c6cec=eval(_0x40bea3[_0x9a20('0x15a')]);if(!this[_0x9a20('0x88')](_0x40bea3[_0x9a20('0xd6')])){return this[_0x9a20('0xd')][_0x9a20('0xaa')](_0x9a20('0xd5'));}var _0x22bdb8=this[_0x9a20('0xa3')]['sync'](this,_0x40bea3[_0x9a20('0xd6')]);if(!_0x22bdb8){return this['channel'][_0x9a20('0x2a')](_0x40bea3,_0x9a20('0xd7'));}if(_['isArray'](_0x1c6cec)){var _0x458b39=this;_0x1c6cec[_0x9a20('0xd8')](function(_0x11efa5,_0x49bd70){_0x458b39[_0x9a20('0xd')]['setVariable'](util[_0x9a20('0x27')](_0x9a20('0x15c'),_0x22bdb8,_0x49bd70),_0x11efa5);});return this[_0x9a20('0xd')][_0x9a20('0xaa')](util[_0x9a20('0x27')](_0x9a20('0x15d'),_0x22bdb8));}else{return this[_0x9a20('0xd')][_0x9a20('0xa1')](_0x22bdb8,_0x1c6cec);}};AGIVertices[_0x9a20('0x12')][_0x9a20('0xb')]=function(_0x27f2b7){logger[_0x9a20('0x2c')](util[_0x9a20('0x27')](_0x9a20('0x15e'),_0x27f2b7[_0x9a20('0x35')]));if(_0x27f2b7[_0x9a20('0xa9')]===0x0){return this[_0x9a20('0xa8')](_0x27f2b7);}_0x27f2b7['retry']-=0x1;if(!this['isConfigured'](_0x27f2b7[_0x9a20('0x110')])){return this[_0x9a20('0xd')][_0x9a20('0x2a')](_0x27f2b7,_0x9a20('0x15f'));}var _0x862ff4=this['getSound'][_0x9a20('0x70')](this,_0x27f2b7[_0x9a20('0x110')]);if(!_0x862ff4){return this[_0x9a20('0xd')][_0x9a20('0x2a')](_0x27f2b7,_0x9a20('0x111'));}var _0x20da13=this['channel'][_0x9a20('0x112')](_0x862ff4,_0x27f2b7[_0x9a20('0x113')],_0x27f2b7[_0x9a20('0x160')]);var _0x5af32e=_0x20da13[_0x9a20('0xa6')];if(_0x20da13[_0x9a20('0xa6')]===-0x1){this[_0x9a20('0x34')]['sync'](this,_0x27f2b7,'-1');return _0x20da13;}else if(_0x20da13[_0x9a20('0xa4')]==='timeout'){_0x20da13[_0x9a20('0xa6')]=_0x20da13['result'][_0x9a20('0xa0')]>0x0?_0x20da13['result']:'t';}else if(_[_0x9a20('0x42')](_0x20da13[_0x9a20('0xa6')])){_0x20da13[_0x9a20('0xa6')]='#';_0x5af32e='#';}if(!this[_0x9a20('0x88')](_0x27f2b7[_0x9a20('0xd6')])){this[_0x9a20('0xd')][_0x9a20('0xaa')]('no\x20variable\x20selected\x20for\x20the\x20result');}else{var _0x123055=this[_0x9a20('0xa3')][_0x9a20('0x70')](this,_0x27f2b7[_0x9a20('0xd6')]);if(!_0x123055){return this[_0x9a20('0xd')][_0x9a20('0x2a')](_0x27f2b7,_0x9a20('0xd7'));}this[_0x9a20('0xd')][_0x9a20('0xa1')](_0x123055,_0x5af32e);}this[_0x9a20('0x34')][_0x9a20('0x70')](this,_0x27f2b7,_0x5af32e);return _0x20da13;};AGIVertices[_0x9a20('0x12')][_0x9a20('0xaa')]=function(_0x2fccf0){logger['info'](util['format'](_0x9a20('0x161'),_0x2fccf0[_0x9a20('0x35')]));return this['channel'][_0x9a20('0xaa')](_0x2fccf0[_0x9a20('0x162')]||_0x2fccf0['label']);};AGIVertices[_0x9a20('0x12')][_0x9a20('0x163')]=function(_0x1c5d65){logger[_0x9a20('0x2c')](util['format']('Enter\x20in\x20PAUSE\x20(%s)\x20block',_0x1c5d65[_0x9a20('0x35')]));if(!this[_0x9a20('0x88')](_0x1c5d65[_0x9a20('0x150')])){return this[_0x9a20('0xd')]['error'](_0x1c5d65,_0x9a20('0x151'));}logger[_0x9a20('0x2c')](util[_0x9a20('0x27')](_0x9a20('0x152'),this[_0x9a20('0xd')]['callerid'],_0x1c5d65[_0x9a20('0x150')]));var _0x4b87af=this['getPause'][_0x9a20('0x70')](this,_0x1c5d65[_0x9a20('0x164')]);var _0x546ae4=this[_0x9a20('0x4f')]['sync'](this,_0x1c5d65[_0x9a20('0x150')],_0x4b87af);if(_0x546ae4){logger['info'](util[_0x9a20('0x27')](_0x9a20('0x153'),this[_0x9a20('0xd')][_0x9a20('0x38')],_0x1c5d65[_0x9a20('0x150')]));this[_0x9a20('0xd')][_0x9a20('0xaa')](util[_0x9a20('0x27')](_0x9a20('0x153'),this[_0x9a20('0xd')][_0x9a20('0x38')],_0x1c5d65[_0x9a20('0x150')]));return{'code':0xc8,'result':_0x9a20('0x154')};}else{logger[_0x9a20('0x2c')](util[_0x9a20('0x27')](_0x9a20('0x155'),this[_0x9a20('0xd')][_0x9a20('0x38')],_0x1c5d65[_0x9a20('0x150')]));this[_0x9a20('0xd')][_0x9a20('0xaa')](util[_0x9a20('0x27')](_0x9a20('0x153'),this[_0x9a20('0xd')][_0x9a20('0x38')],_0x1c5d65[_0x9a20('0x150')]));return{'code':0xc8,'result':_0x9a20('0x156')};}};AGIVertices[_0x9a20('0x12')][_0x9a20('0x165')]=function(_0x7e296f){logger[_0x9a20('0x2c')](util[_0x9a20('0x27')](_0x9a20('0x166'),_0x7e296f[_0x9a20('0x35')]));if(!this['isConfigured'](_0x7e296f[_0x9a20('0x110')])){return this['channel'][_0x9a20('0x2a')](_0x7e296f,_0x9a20('0x15f'));}var _0x33b022=this[_0x9a20('0x1c')][_0x9a20('0x70')](this,_0x7e296f[_0x9a20('0x110')]);if(!_0x33b022){return this[_0x9a20('0xd')]['error'](_0x7e296f,_0x9a20('0x111'));}var _0x525f7d=this[_0x9a20('0xd')][_0x9a20('0xac')](_0x9a20('0x167'),[_0x33b022,_0x7e296f[_0x9a20('0x10d')]]);if(_0x525f7d['result']===-0x1){return _0x525f7d;}return this[_0x9a20('0xd')][_0x9a20('0xaa')](util[_0x9a20('0x27')]('Executed\x20command\x20%s\x20%s','PLAYBACK',_0x33b022));};AGIVertices[_0x9a20('0x12')][_0x9a20('0x168')]=function(_0x3f5c3e){logger[_0x9a20('0x2c')](util[_0x9a20('0x27')](_0x9a20('0x169'),_0x3f5c3e[_0x9a20('0x35')]));if(!this[_0x9a20('0x88')](_0x3f5c3e[_0x9a20('0x16a')])){return this[_0x9a20('0xd')][_0x9a20('0x2a')](_0x3f5c3e,'no\x20queue\x20selected');}var _0x2c4ff2='';var _0x536541=parseInt(_0x3f5c3e[_0x9a20('0x16a')],0xa);if(isNaN(_0x536541)){_0x2c4ff2=_0x3f5c3e['queue_id'];}else{_0x2c4ff2=this[_0x9a20('0x13')][_0x9a20('0x70')](this,_0x3f5c3e[_0x9a20('0x16a')]);if(!_0x2c4ff2){return this[_0x9a20('0xd')][_0x9a20('0x2a')](_0x3f5c3e,_0x9a20('0x16b'));}}var _0x4b01bc='';if(this[_0x9a20('0x88')](_0x3f5c3e[_0x9a20('0x110')])){var _0x246e97=this[_0x9a20('0x1c')]['sync'](this,_0x3f5c3e[_0x9a20('0x110')]);if(_0x246e97){_0x4b01bc=_0x246e97;}}this[_0x9a20('0x34')][_0x9a20('0x70')](this,_0x3f5c3e,_0x2c4ff2);if(_0x3f5c3e[_0x9a20('0x10d')][_0x9a20('0x16c')]('x')<0x0){_0x3f5c3e[_0x9a20('0x10d')]+='x';}if(_0x3f5c3e['opts'][_0x9a20('0x16c')]('X')<0x0){_0x3f5c3e[_0x9a20('0x10d')]+='X';}this['channel'][_0x9a20('0xa1')](_0x9a20('0x16d'),_0x2c4ff2?_0x2c4ff2['toLowerCase']():'');var _0x4711ff=this[_0x9a20('0xd')]['exec'](_0x9a20('0x16e'),[_0x2c4ff2,_0x3f5c3e['opts'],_0x3f5c3e[_0x9a20('0x72')],_0x4b01bc,_0x3f5c3e[_0x9a20('0x65')],_0x3f5c3e[_0x9a20('0x7')],_0x3f5c3e['macro'],_0x3f5c3e['gosub'],'',_0x3f5c3e[_0x9a20('0x16f')]]);if(_0x4711ff['result']===-0x1){return _0x4711ff;}return this[_0x9a20('0xd')][_0x9a20('0xaa')](util[_0x9a20('0x27')]('Executed\x20command\x20%s\x20%s',_0x9a20('0x16e'),_0x2c4ff2));};AGIVertices[_0x9a20('0x12')]['record']=function(_0x5c2f5b){logger[_0x9a20('0x2c')](util['format']('Enter\x20in\x20RECORD\x20(%s)\x20block',_0x5c2f5b[_0x9a20('0x35')]));var _0x45a6d2=_0x5c2f5b[_0x9a20('0x170')]||'wav';var _0x4e51fd=util['format']('%s_%s',this['channel'][_0x9a20('0x40')],rs['generate'](0x5));var _0x4b43d9=util[_0x9a20('0x27')](_0x9a20('0x171'),FILES_PATH,_0x4e51fd,_0x45a6d2);var _0x4933bd=util[_0x9a20('0x27')](_0x9a20('0x12b'),FILES_PATH,_0x4e51fd);this[_0x9a20('0x39')]['sync'](this,_0x5c2f5b,_0x4e51fd,_0x4b43d9);this[_0x9a20('0xd')][_0x9a20('0xa1')](_0x9a20('0x172'),_0x4e51fd);logger['info'](_0x9a20('0x173'),_0x4933bd,_0x45a6d2,_0x5c2f5b[_0x9a20('0x174')],_0x5c2f5b[_0x9a20('0x65')]);return this[_0x9a20('0xd')][_0x9a20('0x12d')](_0x4933bd,_0x45a6d2,_0x5c2f5b['escape_digits'],_0x5c2f5b[_0x9a20('0x65')],undefined,!![]);};AGIVertices[_0x9a20('0x12')][_0x9a20('0x175')]=function(_0x52c9cf){logger['info'](util['format']('Enter\x20in\x20RESTAPI\x20(%s)\x20block',_0x52c9cf[_0x9a20('0x35')]));if(!this[_0x9a20('0x88')](_0x52c9cf[_0x9a20('0x72')])){return this['channel'][_0x9a20('0xaa')](_0x9a20('0x176'));}var _0x27f152=this['restAPI'][_0x9a20('0x70')](this,_0x52c9cf);logger['info'](util['format'](_0x9a20('0x177'),util[_0x9a20('0x178')](_0x27f152,{'showHidden':![],'depth':null})));if(!this[_0x9a20('0x88')](_0x52c9cf[_0x9a20('0xd6')])){return this[_0x9a20('0xd')]['noop'](_0x9a20('0x179'));}var _0x3785ba=this['getVariable']['sync'](this,_0x52c9cf[_0x9a20('0xd6')]);if(!_0x3785ba){return this['channel']['error'](_0x52c9cf,_0x9a20('0xd7'));}this[_0x9a20('0xd')][_0x9a20('0xa1')](util[_0x9a20('0x27')](_0x9a20('0x17a'),_0x3785ba),_0x27f152[_0x9a20('0x76')]?_0x27f152[_0x9a20('0x76')]:'200');this[_0x9a20('0xd')]['setVariable'](util[_0x9a20('0x27')](_0x9a20('0x17b'),_0x3785ba),_0x27f152[_0x9a20('0x77')]?_0x27f152[_0x9a20('0x77')]:'OK');if(_0x27f152[_0x9a20('0x69')]){try{this[_0x9a20('0x9d')](_0x27f152[_0x9a20('0x69')],_0x3785ba);}catch(_0x475da7){logger[_0x9a20('0x2a')](util[_0x9a20('0x27')](_0x9a20('0x17c'),_0x3785ba));}}return this['channel']['noop'](util[_0x9a20('0x27')]('variable\x20%s\x20set',_0x3785ba));};AGIVertices['prototype'][_0x9a20('0x17d')]=function(_0x362e5c){logger['info'](util['format'](_0x9a20('0x17e'),_0x362e5c[_0x9a20('0x35')]));return this[_0x9a20('0xd')]['sayDigits'](_0x362e5c[_0x9a20('0x17f')][_0x9a20('0x59')](/\s+/g,''),_0x362e5c[_0x9a20('0x174')]);};AGIVertices[_0x9a20('0x12')][_0x9a20('0x180')]=function(_0x145cee){logger[_0x9a20('0x2c')](util['format']('Enter\x20in\x20SAYNUMBER\x20(%s)\x20block',_0x145cee['label']));return this[_0x9a20('0xd')][_0x9a20('0x181')](_0x145cee['number'][_0x9a20('0x59')](/\s+/g,''),_0x145cee[_0x9a20('0x174')]);};AGIVertices[_0x9a20('0x12')]['sayphonetic']=function(_0x42cb5d){logger[_0x9a20('0x2c')](util['format']('Enter\x20in\x20SAYPHONETIC\x20(%s)\x20block',_0x42cb5d['label']));return this[_0x9a20('0xd')][_0x9a20('0x182')](_0x42cb5d['text'],_0x42cb5d['escape_digits']);};AGIVertices[_0x9a20('0x12')][_0x9a20('0x183')]=function(_0x30fb42){logger[_0x9a20('0x2c')](util['format'](_0x9a20('0x184'),_0x30fb42[_0x9a20('0x35')]));if(!this[_0x9a20('0x88')](_0x30fb42[_0x9a20('0x185')])){return this[_0x9a20('0xd')]['noop'](_0x9a20('0x186'));}var _0x41a7d2=this[_0x9a20('0x1f')][_0x9a20('0x70')](this,_0x30fb42[_0x9a20('0x185')]);if(!_0x41a7d2||!_0x41a7d2[_0x9a20('0x187')]){return this[_0x9a20('0xd')]['error'](_0x30fb42,_0x9a20('0x188'));}var _0x17ac07={'from':util['format'](_0x9a20('0x189'),_0x41a7d2[_0x9a20('0x10')],_0x41a7d2[_0x9a20('0x18a')]||_0x41a7d2['Smtp'][_0x9a20('0x18b')]),'to':_0x30fb42['to']||'','cc':_0x30fb42['cc']||'','bcc':_0x30fb42[_0x9a20('0x18c')]||'','subject':_0x30fb42[_0x9a20('0x18d')],'html':_0x30fb42['text'],'text':_0x30fb42[_0x9a20('0x5d')]};var _0x1eca8e={'tls':{'rejectUnauthorized':![]}};if(_0x41a7d2[_0x9a20('0x187')][_0x9a20('0x18e')]){_0x1eca8e['service']=_0x41a7d2['Smtp'][_0x9a20('0x18e')];}else{_0x1eca8e[_0x9a20('0x18f')]=_0x41a7d2[_0x9a20('0x187')][_0x9a20('0x18f')];_0x1eca8e['port']=_0x41a7d2[_0x9a20('0x187')]['port'];_0x1eca8e[_0x9a20('0x190')]=_0x41a7d2[_0x9a20('0x187')][_0x9a20('0x190')];}if(_0x41a7d2[_0x9a20('0x187')][_0x9a20('0x191')]){_0x1eca8e['auth']={'user':_0x41a7d2[_0x9a20('0x187')][_0x9a20('0x18b')],'pass':_0x41a7d2[_0x9a20('0x187')][_0x9a20('0x192')]};}if(this[_0x9a20('0x88')](_0x30fb42[_0x9a20('0x193')])){}logger['debug'](_0x9a20('0x194'),JSON[_0x9a20('0x74')](_0x17ac07));this['createSquareDetailsReport']['sync'](this,_0x30fb42,_0x30fb42[_0x9a20('0x185')]);this[_0x9a20('0xd')][_0x9a20('0xaa')](util[_0x9a20('0x27')](_0x9a20('0x195'),_0x41a7d2[_0x9a20('0x10')]));this[_0x9a20('0x20')]['sync'](this,_0x1eca8e,_0x17ac07);return this[_0x9a20('0xd')]['noop'](_0x9a20('0x196'));};AGIVertices[_0x9a20('0x12')][_0x9a20('0x197')]=function(_0x4f2b47){logger[_0x9a20('0x2c')](util['format']('Enter\x20in\x20SENDFAX\x20(%s)\x20block',_0x4f2b47[_0x9a20('0x35')]));return this[_0x9a20('0xd')]['noop'](_0x9a20('0x198'));};AGIVertices[_0x9a20('0x12')]['sendSMS']=function(_0x37f0e4){logger[_0x9a20('0x2c')](util[_0x9a20('0x27')](_0x9a20('0x199'),_0x37f0e4[_0x9a20('0x35')]));if(!this[_0x9a20('0x88')](_0x37f0e4['sms_account_id'])){return this[_0x9a20('0xd')]['noop'](_0x9a20('0x19a'));}var _0x45e438=this[_0x9a20('0x31')][_0x9a20('0x70')](this,_0x37f0e4[_0x9a20('0x19b')]);if(!_0x45e438){return this[_0x9a20('0xd')]['error'](_0x37f0e4,_0x9a20('0x19c'));}var _0x3eef86={'body':_0x37f0e4[_0x9a20('0x19d')],'phone':_0x37f0e4['to']||'','SmsAccountId':_0x45e438['id']};logger['debug'](_0x9a20('0x19e'),JSON[_0x9a20('0x74')](_0x3eef86));this['createSquareDetailsReport']['sync'](this,_0x37f0e4,_0x37f0e4[_0x9a20('0x19b')]);this[_0x9a20('0xd')][_0x9a20('0xaa')](util[_0x9a20('0x27')](_0x9a20('0x19f'),_0x45e438[_0x9a20('0x10')]));this[_0x9a20('0x33')][_0x9a20('0x70')](this,_0x3eef86);return this[_0x9a20('0xd')][_0x9a20('0xaa')]('Sms\x20message\x20added\x20to\x20outgoing\x20process');};AGIVertices[_0x9a20('0x12')]['set']=function(_0x470f83){logger[_0x9a20('0x2c')](util[_0x9a20('0x27')](_0x9a20('0x1a0'),_0x470f83[_0x9a20('0x35')]));if(!this[_0x9a20('0x88')](_0x470f83['variable_id'])){return this['channel'][_0x9a20('0x2a')](_0x470f83,_0x9a20('0x1a1'));}var _0x19b161=this[_0x9a20('0xa3')]['sync'](this,_0x470f83[_0x9a20('0xd6')]);if(!_0x19b161){return this[_0x9a20('0xd')][_0x9a20('0x2a')](_0x470f83,_0x9a20('0xd7'));}return this[_0x9a20('0xd')][_0x9a20('0xa1')](_0x19b161,_0x470f83[_0x9a20('0x1a2')]);};AGIVertices[_0x9a20('0x12')][_0x9a20('0x1a3')]=function(_0x33e182){logger[_0x9a20('0x2c')](util[_0x9a20('0x27')](_0x9a20('0x1a4'),_0x33e182[_0x9a20('0x35')]));this[_0x9a20('0xd')][_0x9a20('0xaa')]('START\x20CALLY\x20SQUARE');if(_0x33e182[_0x9a20('0xbb')]===_0x9a20('0x1a5')){this[_0x9a20('0xd')][_0x9a20('0xaa')](_0x9a20('0x1a6'));return this[_0x9a20('0xd')]['answer']();}return this[_0x9a20('0xd')][_0x9a20('0xaa')](_0x9a20('0x1a7'));};AGIVertices[_0x9a20('0x12')][_0x9a20('0x1a8')]=function(_0x40902b){logger[_0x9a20('0x2c')](util[_0x9a20('0x27')](_0x9a20('0x1a9'),_0x40902b['label']));if(!this['isConfigured'](_0x40902b[_0x9a20('0x1aa')])){return this[_0x9a20('0xd')][_0x9a20('0x2a')](_0x40902b,_0x9a20('0x1ab'));}var _0x4b645a=this[_0x9a20('0x14')][_0x9a20('0x70')](this,_0x40902b[_0x9a20('0x1aa')]);if(!this[_0x9a20('0x88')](_0x4b645a)){return this[_0x9a20('0xd')][_0x9a20('0x2a')](_0x40902b,util[_0x9a20('0x27')]('no\x20subproject\x20found\x20with\x20id\x20%d',_0x40902b[_0x9a20('0x1aa')]));}if(_0x4b645a===this[_0x9a20('0xd')][_0x9a20('0x37')]){return this['channel'][_0x9a20('0x2a')](_0x40902b,'project\x20in\x20subproject\x20must\x20be\x20different\x20from\x20the\x20called\x20project');}this[_0x9a20('0x34')]['sync'](this,_0x40902b,_0x4b645a);var _0x15c793=this[_0x9a20('0xd')][_0x9a20('0xac')](_0x9a20('0x1ac'),util['format'](_0x9a20('0x1ad'),config['agi']['host']||'127.0.0.1',_0x4b645a,this[_0x9a20('0xd')]['arg_1']));if(_0x15c793[_0x9a20('0xa6')]===-0x1){return _0x15c793;}return this[_0x9a20('0xd')][_0x9a20('0xaa')](util[_0x9a20('0x27')](_0x9a20('0x1ae'),'AGI',_0x4b645a));};AGIVertices[_0x9a20('0x12')][_0x9a20('0x1af')]=function(_0x8f6ae8){logger[_0x9a20('0x2c')](util[_0x9a20('0x27')](_0x9a20('0x1b0'),_0x8f6ae8[_0x9a20('0x35')]));var _0x4478e5=this[_0x9a20('0x57')][_0x9a20('0x70')](this,_0x8f6ae8['command']);this['createSquareDetailsReport']['sync'](this,_0x8f6ae8,_0x8f6ae8['command']);if(this[_0x9a20('0x88')](_0x8f6ae8[_0x9a20('0xd6')])){var _0x2d524d=this[_0x9a20('0xa3')]['sync'](this,_0x8f6ae8[_0x9a20('0xd6')]);if(_0x2d524d){this[_0x9a20('0xd')][_0x9a20('0xa1')](_0x2d524d,_0x4478e5);return this[_0x9a20('0xd')][_0x9a20('0xaa')](util[_0x9a20('0x27')](_0x9a20('0x1b1'),_0x8f6ae8[_0x9a20('0x1b2')],_0x2d524d));}}return this[_0x9a20('0xd')]['noop'](util[_0x9a20('0x27')](_0x9a20('0x1b3'),_0x8f6ae8[_0x9a20('0x1b2')]));};AGIVertices['prototype'][_0x9a20('0x1b4')]=function(_0x54253c){logger[_0x9a20('0x2c')](util[_0x9a20('0x27')](_0x9a20('0x1b5'),_0x54253c[_0x9a20('0x35')]));_0x54253c['text']=_0x54253c[_0x9a20('0x5d')][_0x9a20('0x59')](/(\r\n|\n|\r)/gm,'\x20');if(!this[_0x9a20('0x88')](_0x54253c['apiKey'])){return this['channel']['noop'](_0x9a20('0x1b6'));}if(!this['isConfigured'](_0x54253c[_0x9a20('0x5d')])){return this['channel']['noop'](_0x9a20('0xab'));}this[_0x9a20('0xd')][_0x9a20('0xaa')](util['format'](_0x9a20('0x1b7'),_0x54253c[_0x9a20('0x5d')]));var _0x220f94=this[_0x9a20('0x5a')][_0x9a20('0x70')](this,_0x54253c);if(_0x220f94){this[_0x9a20('0xd')]['noop'](util['format']('Google\x20Cloud\x20TTS\x20%s\x20file\x20created',_0x220f94));var _0x30741e=this['channel'][_0x9a20('0x101')](_0x220f94);try{fs[_0x9a20('0x102')](_0x220f94+_0x9a20('0x103'));}catch(_0x321f97){logger['error'](_0x321f97);}return _0x30741e;}return this['channel']['error'](_0x54253c,_0x9a20('0x1b8'));};AGIVertices['prototype'][_0x9a20('0x1b9')]=function(_0x16b111){logger[_0x9a20('0x2c')](util['format'](_0x9a20('0x1ba'),_0x16b111[_0x9a20('0x35')]));_0x16b111[_0x9a20('0x5d')]=_0x16b111[_0x9a20('0x5d')][_0x9a20('0x59')](/(\r\n|\n|\r)/gm,'\x20');if(!this[_0x9a20('0x88')](_0x16b111[_0x9a20('0x5d')])){return this[_0x9a20('0xd')]['noop'](_0x9a20('0xab'));}this['channel'][_0x9a20('0xaa')](util['format'](_0x9a20('0x1bb'),_0x16b111[_0x9a20('0x5d')]));var _0x35da42=this[_0x9a20('0x61')][_0x9a20('0x70')](this,_0x16b111);if(_0x35da42){this[_0x9a20('0xd')]['noop'](util[_0x9a20('0x27')](_0x9a20('0x1bc'),_0x35da42));var _0x3054d4=this[_0x9a20('0xd')][_0x9a20('0x101')](_0x35da42);try{fs['unlink'](_0x35da42+_0x9a20('0x103'));}catch(_0x5520b8){logger[_0x9a20('0x2a')](_0x5520b8);}return _0x3054d4;}return this[_0x9a20('0xd')][_0x9a20('0x2a')](_0x16b111,'Google\x20TTS\x20is\x20unreachable');};AGIVertices[_0x9a20('0x12')]['unpause']=function(_0x5e94ae){logger[_0x9a20('0x2c')](util[_0x9a20('0x27')]('Enter\x20in\x20UNPAUSE\x20(%s)\x20block',_0x5e94ae[_0x9a20('0x35')]));if(!this[_0x9a20('0x88')](_0x5e94ae[_0x9a20('0x150')])){return this[_0x9a20('0xd')][_0x9a20('0x2a')](_0x5e94ae,'no\x20find\x20by\x20configured');}logger[_0x9a20('0x2c')](util[_0x9a20('0x27')](_0x9a20('0x152'),this[_0x9a20('0xd')]['callerid'],_0x5e94ae[_0x9a20('0x150')]));var _0x4c037d=this['agentUnpause'][_0x9a20('0x70')](this,_0x5e94ae[_0x9a20('0x150')]);if(_0x4c037d){logger[_0x9a20('0x2c')](util[_0x9a20('0x27')](_0x9a20('0x153'),this[_0x9a20('0xd')][_0x9a20('0x38')],_0x5e94ae[_0x9a20('0x150')]));this[_0x9a20('0xd')]['noop'](util['format'](_0x9a20('0x153'),this[_0x9a20('0xd')][_0x9a20('0x38')],_0x5e94ae[_0x9a20('0x150')]));return{'code':0xc8,'result':_0x9a20('0x154')};}else{logger[_0x9a20('0x2c')](util[_0x9a20('0x27')](_0x9a20('0x155'),this[_0x9a20('0xd')]['callerid'],_0x5e94ae[_0x9a20('0x150')]));this[_0x9a20('0xd')]['noop'](util[_0x9a20('0x27')](_0x9a20('0x155'),this[_0x9a20('0xd')][_0x9a20('0x38')],_0x5e94ae[_0x9a20('0x150')]));return{'code':0xc8,'result':_0x9a20('0x156')};}};AGIVertices[_0x9a20('0x12')]['voicemail']=function(_0x11b3da){logger[_0x9a20('0x2c')](util[_0x9a20('0x27')]('Enter\x20in\x20VOICEMAIL\x20(%s)\x20block',_0x11b3da[_0x9a20('0x35')]));var _0x256e16=this[_0x9a20('0xd')][_0x9a20('0xac')](_0x9a20('0x1bd'),[_0x11b3da['mailbox'],_0x11b3da[_0x9a20('0x7a')]]);if(_0x256e16['result']===-0x1){return _0x256e16;}return this['channel'][_0x9a20('0xaa')](util[_0x9a20('0x27')](_0x9a20('0x1ae'),'VOICEMAIL',_0x11b3da['mailbox']));};AGIVertices[_0x9a20('0x12')][_0x9a20('0x1be')]=function(_0x383729){logger['info'](util['format'](_0x9a20('0x1bf'),_0x383729[_0x9a20('0x35')]));if(!this[_0x9a20('0x88')](_0x383729[_0x9a20('0xd6')])){return this['channel'][_0x9a20('0x2a')](_0x383729,'no\x20variable\x20selected');}var _0x1551e4=this[_0x9a20('0xa3')][_0x9a20('0x70')](this,_0x383729['variable_id']);if(!_0x1551e4){return this[_0x9a20('0xd')][_0x9a20('0x2a')](_0x383729,_0x9a20('0xd7'));}var _0x41f6d5=this[_0x9a20('0xd')][_0x9a20('0xa3')](_0x1551e4);return{'code':0xc8,'result':_0x41f6d5[_0x9a20('0xa4')]?_0x41f6d5[_0x9a20('0xa4')]:'-'};};String[_0x9a20('0x12')][_0x9a20('0x1c0')]=function(_0x5c3978,_0x4c9251){return this[_0x9a20('0xa2')](_0x5c3978)['join'](_0x4c9251);};module[_0x9a20('0x1c1')]=AGIVertices;
\ No newline at end of file
index 834c03c..f1b9285 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6c04=['[%s][START][AGENT:%s][QUEUE:%s]','attended','destlinkedid','then','info','[%s][TIMER:%s][AGENT:%s][QUEUE:%s]','acwTimeout','timer','stopAcw','format','YYYY-MM-DD\x20HH:mm:ss','uniqueid','updateAcw','lastPauseAt','update','catch','error','[%s][UPDATE][ERRORS:%s]','finally','[ACW][START]\x20%s','message','[%s][TIMER][STOP][AGENT:%s]','saveUnpause','[%s][UPDATE][ACWTIME:%s]','stringify','[ACW][STOP]\x20%s','mandatoryDisposition','[ACW][syncAgentConnectPreview]\x20%s','[%s][HANGUP:UNIQUEID]','linkedid','isUndefined','[%s][HANGUP:LINKEDID]','[ACW][syncHangupRequest]\x20%s','[%s][HANGUPATTENDEDTRANSFER:LINKEDID]','[ACW][syncHangup]\x20%s','transfereeuniqueid','secondtransfereruniqueid','transfertargetuniqueid','origtransfereruniqueid','syncBlindTransfer','transfereruniqueid','[%s][BLINDTRANSFER:UNIQUEID]','transfererlinkedid','[ACW][syncBlindTransfer]\x20%s','syncAgentRingNoAnswer','autopause','all','savePause','Auto-Pause','[ACW][syncAgentRingNoAnswer]\x20%s','moment','../../../config/logger','acw','../rpc/user','../rpc/voiceAgentReport','voiceQueues','agents','timers','channels','hanguprequest','syncHangupRequest','bind','hangup','syncHangup','agentringnoanswer','syncAttendedTransfer','blindtransfer','custom:agentConnectPreview','syncAgentConnectPreview','milliseconds','diff','seconds','prototype','startAcw','interface','queue','ACW','mandatoryDispositionPause','name','Action','QueuePause','getAgent','voicePause'];(function(_0x518cc0,_0x4e38ab){var _0x281183=function(_0x2ffafe){while(--_0x2ffafe){_0x518cc0['push'](_0x518cc0['shift']());}};_0x281183(++_0x4e38ab);}(_0x6c04,0x1d1));var _0x46c0=function(_0x1cc51c,_0x281cb0){_0x1cc51c=_0x1cc51c-0x0;var _0x4e7c6a=_0x6c04[_0x1cc51c];return _0x4e7c6a;};'use strict';var util=require('util');var _=require('lodash');var moment=require(_0x46c0('0x0'));var ami=require('../ami');var logger=require(_0x46c0('0x1'))(_0x46c0('0x2'));var RpcUser=require(_0x46c0('0x3'));var RpcVoiceAgentReport=require(_0x46c0('0x4'));function Acw(_0x1fd96d){this['voiceQueues']=_0x1fd96d[_0x46c0('0x5')];this[_0x46c0('0x6')]=_0x1fd96d[_0x46c0('0x6')];this['timers']=_0x1fd96d[_0x46c0('0x7')];this[_0x46c0('0x8')]={};ami['on']('agentconnect',this['syncAgentConnect']['bind'](this));ami['on'](_0x46c0('0x9'),this[_0x46c0('0xa')][_0x46c0('0xb')](this));ami['on'](_0x46c0('0xc'),this[_0x46c0('0xd')][_0x46c0('0xb')](this));ami['on'](_0x46c0('0xe'),this['syncAgentRingNoAnswer']['bind'](this));ami['on']('attendedtransfer',this[_0x46c0('0xf')][_0x46c0('0xb')](this));ami['on'](_0x46c0('0x10'),this['syncBlindTransfer'][_0x46c0('0xb')](this));ami['on'](_0x46c0('0x11'),this[_0x46c0('0x12')][_0x46c0('0xb')](this));}function getDiff(_0x793b52){var _0x52f911=moment()[_0x46c0('0x13')](0x0);var _0xe48a6f=moment(_0x793b52)[_0x46c0('0x13')](0x0);return _0x52f911[_0x46c0('0x14')](_0xe48a6f,_0x46c0('0x15'));}Acw[_0x46c0('0x16')][_0x46c0('0x17')]=function(_0x525cab){try{var _0x171658=this;var _0x25d5d4=this['channels'][_0x525cab][_0x46c0('0x18')];var _0x183b00=this[_0x46c0('0x8')][_0x525cab][_0x46c0('0x19')];var _0x3264a8=this['voiceQueues'][_0x183b00];var _0xb22274=![];var _0x5a07ee=_0x46c0('0x1a');if(_0x3264a8['mandatoryDisposition']){if(_0x3264a8[_0x46c0('0x1b')][_0x46c0('0x1c')]){_0xb22274=!![];_0x5a07ee=_0x3264a8[_0x46c0('0x1b')][_0x46c0('0x1c')];}}ami[_0x46c0('0x1d')]({'action':_0x46c0('0x1e'),'interface':_0x25d5d4,'paused':!![],'reason':_0x5a07ee})['then'](function(_0x36cfc3){if(_0x171658[_0x46c0('0x6')][_0x25d5d4]){return RpcUser[_0x46c0('0x1f')](_0x171658['agents'][_0x25d5d4]['id'])['then'](function(_0x5132de){if(_0x5132de&&!_0x5132de[_0x46c0('0x20')]){logger['info'](_0x46c0('0x21'),_0x525cab,_0x25d5d4,_0x183b00);var _0x33b523=_0x171658[_0x46c0('0x8')][_0x525cab][_0x46c0('0x22')]&&_0x171658[_0x46c0('0x8')][_0x525cab][_0x46c0('0x23')]?_0x171658['channels'][_0x525cab][_0x46c0('0x23')]:_0x525cab;return RpcUser['savePause'](_0x171658[_0x46c0('0x6')][_0x25d5d4],_0x5a07ee,_0x33b523)[_0x46c0('0x24')](function(_0x1e2034){if(!_0xb22274){_0x171658[_0x46c0('0x7')][_0x25d5d4]={};logger[_0x46c0('0x25')](_0x46c0('0x26'),_0x525cab,_0x171658[_0x46c0('0x5')][_0x183b00][_0x46c0('0x27')],_0x25d5d4,_0x183b00);_0x171658[_0x46c0('0x7')][_0x25d5d4][_0x46c0('0x28')]=setTimeout(_0x171658[_0x46c0('0x29')][_0x46c0('0xb')](_0x171658,_0x25d5d4),_0x171658[_0x46c0('0x5')][_0x183b00][_0x46c0('0x27')]*0x3e8);_0x171658[_0x46c0('0x7')][_0x25d5d4]['lastPauseAt']=moment()[_0x46c0('0x2a')](_0x46c0('0x2b'));_0x171658[_0x46c0('0x7')][_0x25d5d4][_0x46c0('0x2c')]=_0x525cab;_0x171658[_0x46c0('0x7')][_0x25d5d4][_0x46c0('0x19')]=_0x183b00;_0x171658['timers'][_0x25d5d4][_0x46c0('0x2d')]=function(){var _0x1281ba=getDiff(_0x171658[_0x46c0('0x7')][_0x25d5d4][_0x46c0('0x2e')]);clearTimeout(_0x171658['timers'][_0x25d5d4][_0x46c0('0x28')]);_0x171658[_0x46c0('0x7')][_0x25d5d4][_0x46c0('0x28')]=![];RpcVoiceAgentReport[_0x46c0('0x2f')]({'acwtime':_0x1281ba},_0x171658[_0x46c0('0x7')][_0x25d5d4][_0x46c0('0x2c')],_0x25d5d4)[_0x46c0('0x24')](function(_0x307eb5){logger['info']('[%s][UPDATE][ACWTIME:%s]',_0x525cab,_0x1281ba,_0x307eb5);})[_0x46c0('0x30')](function(_0x309c56){logger[_0x46c0('0x31')](_0x46c0('0x32'),_0x525cab,_0x309c56);});delete _0x171658[_0x46c0('0x7')][_0x25d5d4];};}});}else{logger[_0x46c0('0x25')]('[%s][INPAUSE][AGENT:%s][QUEUE:%s]',_0x525cab,_0x25d5d4,_0x183b00);}});}})[_0x46c0('0x30')](function(_0x17d710){logger[_0x46c0('0x31')](_0x46c0('0x26'),_0x525cab,_0x171658[_0x46c0('0x5')][_0x183b00][_0x46c0('0x27')],_0x25d5d4,_0x183b00);})[_0x46c0('0x33')](function(){delete _0x171658[_0x46c0('0x8')][_0x525cab];});}catch(_0x5e0a8c){logger[_0x46c0('0x31')](_0x46c0('0x34'),_0x5e0a8c[_0x46c0('0x35')]);}};Acw[_0x46c0('0x16')][_0x46c0('0x29')]=function(_0x1a7092){try{var _0x1d59fb=this;if(_0x1d59fb[_0x46c0('0x7')][_0x1a7092]){_0x1d59fb[_0x46c0('0x7')][_0x1a7092]['timer']=![];var _0x50fa54=_0x1d59fb[_0x46c0('0x7')][_0x1a7092][_0x46c0('0x2c')];var _0x16948b=_0x1d59fb[_0x46c0('0x7')][_0x1a7092]['queue'];var _0x33ef5b=_0x1d59fb[_0x46c0('0x5')][_0x16948b][_0x46c0('0x27')];logger[_0x46c0('0x25')](_0x46c0('0x36'),_0x50fa54,_0x1a7092);RpcUser[_0x46c0('0x37')](this[_0x46c0('0x6')][_0x1a7092]);RpcVoiceAgentReport[_0x46c0('0x2f')]({'acwtime':_0x33ef5b,'agentacw':!![]},_0x50fa54,_0x1a7092)[_0x46c0('0x24')](function(_0x539431){logger[_0x46c0('0x25')](_0x46c0('0x38'),_0x50fa54,_0x33ef5b,_0x539431);})[_0x46c0('0x30')](function(_0x40578e){logger[_0x46c0('0x31')](_0x46c0('0x32'),_0x50fa54,_0x40578e);});}else{logger[_0x46c0('0x31')]('[ACW][STOP]\x20Interface\x20%s\x20doesn\x27t\x20have\x20timer',_0x1a7092);if(_0x1d59fb[_0x46c0('0x7')]){logger['info']('[ACW][TIMERS]',JSON[_0x46c0('0x39')](_0x1d59fb[_0x46c0('0x7')]));}}}catch(_0xc7918c){logger[_0x46c0('0x31')](_0x46c0('0x3a'),_0xc7918c[_0x46c0('0x35')]);}};Acw['prototype']['syncAgentConnect']=function(_0x173fd2){try{if(this[_0x46c0('0x5')][_0x173fd2[_0x46c0('0x19')]]&&(this[_0x46c0('0x5')][_0x173fd2[_0x46c0('0x19')]][_0x46c0('0x2')]||this[_0x46c0('0x5')][_0x173fd2['queue']][_0x46c0('0x3b')])){if(this[_0x46c0('0x6')][_0x173fd2[_0x46c0('0x18')]]){this[_0x46c0('0x8')][_0x173fd2[_0x46c0('0x2c')]]={'queue':_0x173fd2[_0x46c0('0x19')],'interface':_0x173fd2[_0x46c0('0x18')],'destlinkedid':_0x173fd2['destlinkedid']};}}}catch(_0x2266a3){logger['error']('[ACW][syncAgentConnect]\x20%s',_0x2266a3['message']);}};Acw[_0x46c0('0x16')][_0x46c0('0x12')]=function(_0x2677b8){try{if(this['voiceQueues'][_0x2677b8[_0x46c0('0x19')]]&&(this[_0x46c0('0x5')][_0x2677b8['queue']]['acw']||this[_0x46c0('0x5')][_0x2677b8[_0x46c0('0x19')]][_0x46c0('0x3b')])){if(this['agents'][_0x2677b8[_0x46c0('0x18')]]){this['channels'][_0x2677b8[_0x46c0('0x2c')]]={'queue':_0x2677b8['queue'],'interface':_0x2677b8[_0x46c0('0x18')]};}}}catch(_0x165022){logger[_0x46c0('0x31')](_0x46c0('0x3c'),_0x165022[_0x46c0('0x35')]);}};Acw['prototype'][_0x46c0('0xa')]=function(_0x51ada9){try{if(this['channels'][_0x51ada9[_0x46c0('0x2c')]]&&_['isUndefined'](this['channels'][_0x51ada9[_0x46c0('0x2c')]][_0x46c0('0x22')])){logger[_0x46c0('0x25')](_0x46c0('0x3d'),_0x51ada9[_0x46c0('0x2c')]);this['startAcw'](_0x51ada9[_0x46c0('0x2c')]);}else if(this['channels'][_0x51ada9[_0x46c0('0x3e')]]&&_[_0x46c0('0x3f')](this['channels'][_0x51ada9[_0x46c0('0x3e')]][_0x46c0('0x22')])){logger[_0x46c0('0x25')](_0x46c0('0x40'),_0x51ada9[_0x46c0('0x3e')]);this[_0x46c0('0x17')](_0x51ada9['linkedid']);}}catch(_0x3a7b6d){logger[_0x46c0('0x31')](_0x46c0('0x41'),_0x3a7b6d[_0x46c0('0x35')]);}};Acw[_0x46c0('0x16')][_0x46c0('0xd')]=function(_0x31266f){try{if(this['channels'][_0x31266f[_0x46c0('0x2c')]]&&this[_0x46c0('0x8')][_0x31266f[_0x46c0('0x2c')]][_0x46c0('0x22')]){logger[_0x46c0('0x25')]('[%s][HANGUPATTENDEDTRANSFER:UNIQUEID]',_0x31266f[_0x46c0('0x2c')]);this[_0x46c0('0x17')](_0x31266f['uniqueid']);}else if(this[_0x46c0('0x8')][_0x31266f[_0x46c0('0x3e')]]&&this['channels'][_0x31266f[_0x46c0('0x3e')]][_0x46c0('0x22')]){logger[_0x46c0('0x25')](_0x46c0('0x42'),_0x31266f[_0x46c0('0x3e')]);this[_0x46c0('0x17')](_0x31266f['linkedid']);}}catch(_0xedbf63){logger[_0x46c0('0x31')](_0x46c0('0x43'),_0xedbf63['message']);}};Acw[_0x46c0('0x16')][_0x46c0('0xf')]=function(_0x42219c){try{if(!_['isNil'](this[_0x46c0('0x8')][_0x42219c[_0x46c0('0x44')]])){this[_0x46c0('0x17')](_0x42219c['transfereeuniqueid']);if(this[_0x46c0('0x8')][_0x42219c[_0x46c0('0x45')]]){this['channels'][_0x42219c['secondtransfereruniqueid']][_0x46c0('0x22')]=!![];this['channels'][_0x42219c[_0x46c0('0x46')]]=this[_0x46c0('0x8')][_0x42219c['secondtransfereruniqueid']];delete this[_0x46c0('0x8')][_0x42219c['secondtransfereruniqueid']];}}else if(!_['isNil'](this[_0x46c0('0x8')][_0x42219c[_0x46c0('0x46')]])){this['startAcw'](_0x42219c[_0x46c0('0x46')]);if(this[_0x46c0('0x8')][_0x42219c[_0x46c0('0x47')]]){this[_0x46c0('0x8')][_0x42219c['origtransfereruniqueid']]['attended']=!![];this[_0x46c0('0x8')][_0x42219c[_0x46c0('0x44')]]=this[_0x46c0('0x8')][_0x42219c['origtransfereruniqueid']];delete this[_0x46c0('0x8')][_0x42219c[_0x46c0('0x47')]];}}}catch(_0x43ed4a){logger['error']('[ACW][syncAttendedTransfer]\x20%s',_0x43ed4a['message']);}};Acw[_0x46c0('0x16')][_0x46c0('0x48')]=function(_0x2c3bcd){try{if(this[_0x46c0('0x8')][_0x2c3bcd[_0x46c0('0x49')]]){logger[_0x46c0('0x25')](_0x46c0('0x4a'),JSON[_0x46c0('0x39')](_0x2c3bcd[_0x46c0('0x49')]));this['startAcw'](_0x2c3bcd[_0x46c0('0x49')]);}else if(this['channels'][_0x2c3bcd[_0x46c0('0x4b')]]){logger['info']('[%s][BLINDTRANSFER:LINKEDID]',JSON[_0x46c0('0x39')](_0x2c3bcd['transfererlinkedid']));this[_0x46c0('0x17')](_0x2c3bcd['transfererlinkedid']);}}catch(_0x341e87){logger[_0x46c0('0x31')](_0x46c0('0x4c'),_0x341e87['message']);}};Acw['prototype'][_0x46c0('0x4d')]=function(_0x5a10eb){try{if(this[_0x46c0('0x5')][_0x5a10eb[_0x46c0('0x19')]]&&this[_0x46c0('0x5')][_0x5a10eb[_0x46c0('0x19')]][_0x46c0('0x4e')]===_0x46c0('0x4f')){if(this[_0x46c0('0x6')][_0x5a10eb[_0x46c0('0x18')]]){logger[_0x46c0('0x25')]('[%s][AUTOPAUSE][AGENT:%s][QUEUE:%]',_0x5a10eb[_0x46c0('0x2c')],_0x5a10eb[_0x46c0('0x18')],_0x5a10eb[_0x46c0('0x19')]);return RpcUser[_0x46c0('0x50')](this['agents'][_0x5a10eb[_0x46c0('0x18')]],_0x46c0('0x51'),_0x5a10eb['uniqueid']);}}}catch(_0x176701){logger[_0x46c0('0x31')](_0x46c0('0x52'),_0x176701['message']);}};module['exports']=Acw;
\ No newline at end of file
+var _0x4d1c=['syncAgentRingNoAnswer','attendedtransfer','syncAttendedTransfer','syncAgentConnectPreview','milliseconds','seconds','startAcw','interface','queue','ACW','mandatoryDisposition','mandatoryDispositionPause','name','Action','QueuePause','then','voicePause','attended','destlinkedid','savePause','info','[%s][TIMER:%s][AGENT:%s][QUEUE:%s]','acwTimeout','timer','stopAcw','lastPauseAt','uniqueid','catch','[%s][UPDATE][ERRORS:%s]','[%s][INPAUSE][AGENT:%s][QUEUE:%s]','error','[ACW][START]\x20%s','[%s][TIMER][STOP][AGENT:%s]','saveUnpause','update','[%s][UPDATE][ACWTIME:%s]','[ACW][STOP]\x20Interface\x20%s\x20doesn\x27t\x20have\x20timer','[ACW][TIMERS]','stringify','[ACW][STOP]\x20%s','prototype','[ACW][syncAgentConnect]\x20%s','message','[ACW][syncAgentConnectPreview]\x20%s','isUndefined','[%s][HANGUP:UNIQUEID]','linkedid','[%s][HANGUP:LINKEDID]','[ACW][syncHangupRequest]\x20%s','[%s][HANGUPATTENDEDTRANSFER:UNIQUEID]','[%s][HANGUPATTENDEDTRANSFER:LINKEDID]','[ACW][syncHangup]\x20%s','transfereeuniqueid','secondtransfereruniqueid','transfertargetuniqueid','isNil','origtransfereruniqueid','[ACW][syncAttendedTransfer]\x20%s','transfereruniqueid','transfererlinkedid','[%s][BLINDTRANSFER:LINKEDID]','autopause','[%s][AUTOPAUSE][AGENT:%s][QUEUE:%]','exports','util','lodash','moment','../ami','../../../config/logger','acw','../rpc/user','voiceQueues','agents','timers','channels','syncAgentConnect','bind','syncHangupRequest','hangup','agentringnoanswer'];(function(_0x6e1239,_0x3562ac){var _0x418150=function(_0x279f06){while(--_0x279f06){_0x6e1239['push'](_0x6e1239['shift']());}};_0x418150(++_0x3562ac);}(_0x4d1c,0x180));var _0xc4d1=function(_0xf9c75,_0x5844a2){_0xf9c75=_0xf9c75-0x0;var _0x33c9b3=_0x4d1c[_0xf9c75];return _0x33c9b3;};'use strict';var util=require(_0xc4d1('0x0'));var _=require(_0xc4d1('0x1'));var moment=require(_0xc4d1('0x2'));var ami=require(_0xc4d1('0x3'));var logger=require(_0xc4d1('0x4'))(_0xc4d1('0x5'));var RpcUser=require(_0xc4d1('0x6'));var RpcVoiceAgentReport=require('../rpc/voiceAgentReport');function Acw(_0x2deb73){this[_0xc4d1('0x7')]=_0x2deb73[_0xc4d1('0x7')];this[_0xc4d1('0x8')]=_0x2deb73[_0xc4d1('0x8')];this[_0xc4d1('0x9')]=_0x2deb73['timers'];this[_0xc4d1('0xa')]={};ami['on']('agentconnect',this[_0xc4d1('0xb')][_0xc4d1('0xc')](this));ami['on']('hanguprequest',this[_0xc4d1('0xd')][_0xc4d1('0xc')](this));ami['on'](_0xc4d1('0xe'),this['syncHangup'][_0xc4d1('0xc')](this));ami['on'](_0xc4d1('0xf'),this[_0xc4d1('0x10')]['bind'](this));ami['on'](_0xc4d1('0x11'),this[_0xc4d1('0x12')][_0xc4d1('0xc')](this));ami['on']('blindtransfer',this['syncBlindTransfer'][_0xc4d1('0xc')](this));ami['on']('custom:agentConnectPreview',this[_0xc4d1('0x13')]['bind'](this));}function getDiff(_0x136e27){var _0x4b09e6=moment()[_0xc4d1('0x14')](0x0);var _0x328430=moment(_0x136e27)[_0xc4d1('0x14')](0x0);return _0x4b09e6['diff'](_0x328430,_0xc4d1('0x15'));}Acw['prototype'][_0xc4d1('0x16')]=function(_0x1390f0){try{var _0x3119ca=this;var _0x29fd6b=this[_0xc4d1('0xa')][_0x1390f0][_0xc4d1('0x17')];var _0xf3b142=this[_0xc4d1('0xa')][_0x1390f0][_0xc4d1('0x18')];var _0xa98e8d=this[_0xc4d1('0x7')][_0xf3b142];var _0x4d5faf=![];var _0x46a05c=_0xc4d1('0x19');if(_0xa98e8d[_0xc4d1('0x1a')]){if(_0xa98e8d[_0xc4d1('0x1b')][_0xc4d1('0x1c')]){_0x4d5faf=!![];_0x46a05c=_0xa98e8d[_0xc4d1('0x1b')][_0xc4d1('0x1c')];}}ami[_0xc4d1('0x1d')]({'action':_0xc4d1('0x1e'),'interface':_0x29fd6b,'paused':!![],'reason':_0x46a05c})[_0xc4d1('0x1f')](function(_0x5174ca){if(_0x3119ca[_0xc4d1('0x8')][_0x29fd6b]){return RpcUser['getAgent'](_0x3119ca[_0xc4d1('0x8')][_0x29fd6b]['id'])[_0xc4d1('0x1f')](function(_0x109f6a){if(_0x109f6a&&!_0x109f6a[_0xc4d1('0x20')]){logger['info']('[%s][START][AGENT:%s][QUEUE:%s]',_0x1390f0,_0x29fd6b,_0xf3b142);var _0x2be7aa=_0x3119ca[_0xc4d1('0xa')][_0x1390f0][_0xc4d1('0x21')]&&_0x3119ca['channels'][_0x1390f0][_0xc4d1('0x22')]?_0x3119ca[_0xc4d1('0xa')][_0x1390f0][_0xc4d1('0x22')]:_0x1390f0;return RpcUser[_0xc4d1('0x23')](_0x3119ca[_0xc4d1('0x8')][_0x29fd6b],_0x46a05c,_0x2be7aa)[_0xc4d1('0x1f')](function(_0x20ccea){if(!_0x4d5faf){_0x3119ca['timers'][_0x29fd6b]={};logger[_0xc4d1('0x24')](_0xc4d1('0x25'),_0x1390f0,_0x3119ca[_0xc4d1('0x7')][_0xf3b142][_0xc4d1('0x26')],_0x29fd6b,_0xf3b142);_0x3119ca[_0xc4d1('0x9')][_0x29fd6b][_0xc4d1('0x27')]=setTimeout(_0x3119ca[_0xc4d1('0x28')][_0xc4d1('0xc')](_0x3119ca,_0x29fd6b),_0x3119ca[_0xc4d1('0x7')][_0xf3b142][_0xc4d1('0x26')]*0x3e8);_0x3119ca['timers'][_0x29fd6b][_0xc4d1('0x29')]=moment()['format']('YYYY-MM-DD\x20HH:mm:ss');_0x3119ca[_0xc4d1('0x9')][_0x29fd6b][_0xc4d1('0x2a')]=_0x1390f0;_0x3119ca[_0xc4d1('0x9')][_0x29fd6b][_0xc4d1('0x18')]=_0xf3b142;_0x3119ca['timers'][_0x29fd6b]['updateAcw']=function(){var _0x259709=getDiff(_0x3119ca[_0xc4d1('0x9')][_0x29fd6b]['lastPauseAt']);clearTimeout(_0x3119ca['timers'][_0x29fd6b]['timer']);_0x3119ca['timers'][_0x29fd6b][_0xc4d1('0x27')]=![];RpcVoiceAgentReport['update']({'acwtime':_0x259709},_0x3119ca[_0xc4d1('0x9')][_0x29fd6b]['uniqueid'],_0x29fd6b)[_0xc4d1('0x1f')](function(_0x5f099d){logger[_0xc4d1('0x24')]('[%s][UPDATE][ACWTIME:%s]',_0x1390f0,_0x259709,_0x5f099d);})[_0xc4d1('0x2b')](function(_0x881b47){logger['error'](_0xc4d1('0x2c'),_0x1390f0,_0x881b47);});delete _0x3119ca[_0xc4d1('0x9')][_0x29fd6b];};}});}else{logger[_0xc4d1('0x24')](_0xc4d1('0x2d'),_0x1390f0,_0x29fd6b,_0xf3b142);}});}})[_0xc4d1('0x2b')](function(_0x156803){logger[_0xc4d1('0x2e')](_0xc4d1('0x25'),_0x1390f0,_0x3119ca['voiceQueues'][_0xf3b142][_0xc4d1('0x26')],_0x29fd6b,_0xf3b142);})['finally'](function(){delete _0x3119ca[_0xc4d1('0xa')][_0x1390f0];});}catch(_0x24b57a){logger[_0xc4d1('0x2e')](_0xc4d1('0x2f'),_0x24b57a['message']);}};Acw['prototype'][_0xc4d1('0x28')]=function(_0x178cc2){try{var _0x41334c=this;if(_0x41334c['timers'][_0x178cc2]){_0x41334c['timers'][_0x178cc2]['timer']=![];var _0x2131de=_0x41334c[_0xc4d1('0x9')][_0x178cc2]['uniqueid'];var _0x2d1aeb=_0x41334c[_0xc4d1('0x9')][_0x178cc2][_0xc4d1('0x18')];var _0x15278c=_0x41334c['voiceQueues'][_0x2d1aeb]['acwTimeout'];logger[_0xc4d1('0x24')](_0xc4d1('0x30'),_0x2131de,_0x178cc2);RpcUser[_0xc4d1('0x31')](this[_0xc4d1('0x8')][_0x178cc2]);RpcVoiceAgentReport[_0xc4d1('0x32')]({'acwtime':_0x15278c,'agentacw':!![]},_0x2131de,_0x178cc2)[_0xc4d1('0x1f')](function(_0x3d354c){logger[_0xc4d1('0x24')](_0xc4d1('0x33'),_0x2131de,_0x15278c,_0x3d354c);})[_0xc4d1('0x2b')](function(_0x3a1e70){logger[_0xc4d1('0x2e')](_0xc4d1('0x2c'),_0x2131de,_0x3a1e70);});}else{logger[_0xc4d1('0x2e')](_0xc4d1('0x34'),_0x178cc2);if(_0x41334c[_0xc4d1('0x9')]){logger[_0xc4d1('0x24')](_0xc4d1('0x35'),JSON[_0xc4d1('0x36')](_0x41334c[_0xc4d1('0x9')]));}}}catch(_0x5ec874){logger[_0xc4d1('0x2e')](_0xc4d1('0x37'),_0x5ec874['message']);}};Acw[_0xc4d1('0x38')]['syncAgentConnect']=function(_0xf6b8c8){try{if(this[_0xc4d1('0x7')][_0xf6b8c8[_0xc4d1('0x18')]]&&(this['voiceQueues'][_0xf6b8c8[_0xc4d1('0x18')]][_0xc4d1('0x5')]||this[_0xc4d1('0x7')][_0xf6b8c8[_0xc4d1('0x18')]][_0xc4d1('0x1a')])){if(this[_0xc4d1('0x8')][_0xf6b8c8[_0xc4d1('0x17')]]){this[_0xc4d1('0xa')][_0xf6b8c8[_0xc4d1('0x2a')]]={'queue':_0xf6b8c8['queue'],'interface':_0xf6b8c8[_0xc4d1('0x17')],'destlinkedid':_0xf6b8c8['destlinkedid']};}}}catch(_0x4c4498){logger[_0xc4d1('0x2e')](_0xc4d1('0x39'),_0x4c4498[_0xc4d1('0x3a')]);}};Acw['prototype'][_0xc4d1('0x13')]=function(_0x43a38c){try{if(this[_0xc4d1('0x7')][_0x43a38c['queue']]&&(this[_0xc4d1('0x7')][_0x43a38c[_0xc4d1('0x18')]]['acw']||this[_0xc4d1('0x7')][_0x43a38c['queue']][_0xc4d1('0x1a')])){if(this[_0xc4d1('0x8')][_0x43a38c[_0xc4d1('0x17')]]){this['channels'][_0x43a38c['uniqueid']]={'queue':_0x43a38c[_0xc4d1('0x18')],'interface':_0x43a38c[_0xc4d1('0x17')]};}}}catch(_0x1d33f3){logger[_0xc4d1('0x2e')](_0xc4d1('0x3b'),_0x1d33f3[_0xc4d1('0x3a')]);}};Acw[_0xc4d1('0x38')][_0xc4d1('0xd')]=function(_0x42ba0d){try{if(this[_0xc4d1('0xa')][_0x42ba0d[_0xc4d1('0x2a')]]&&_[_0xc4d1('0x3c')](this[_0xc4d1('0xa')][_0x42ba0d[_0xc4d1('0x2a')]][_0xc4d1('0x21')])){logger[_0xc4d1('0x24')](_0xc4d1('0x3d'),_0x42ba0d[_0xc4d1('0x2a')]);this[_0xc4d1('0x16')](_0x42ba0d['uniqueid']);}else if(this[_0xc4d1('0xa')][_0x42ba0d[_0xc4d1('0x3e')]]&&_[_0xc4d1('0x3c')](this[_0xc4d1('0xa')][_0x42ba0d[_0xc4d1('0x3e')]][_0xc4d1('0x21')])){logger[_0xc4d1('0x24')](_0xc4d1('0x3f'),_0x42ba0d['linkedid']);this[_0xc4d1('0x16')](_0x42ba0d[_0xc4d1('0x3e')]);}}catch(_0x45d5ba){logger[_0xc4d1('0x2e')](_0xc4d1('0x40'),_0x45d5ba[_0xc4d1('0x3a')]);}};Acw[_0xc4d1('0x38')]['syncHangup']=function(_0x39cf3e){try{if(this['channels'][_0x39cf3e['uniqueid']]&&this['channels'][_0x39cf3e[_0xc4d1('0x2a')]][_0xc4d1('0x21')]){logger['info'](_0xc4d1('0x41'),_0x39cf3e[_0xc4d1('0x2a')]);this[_0xc4d1('0x16')](_0x39cf3e[_0xc4d1('0x2a')]);}else if(this[_0xc4d1('0xa')][_0x39cf3e[_0xc4d1('0x3e')]]&&this[_0xc4d1('0xa')][_0x39cf3e['linkedid']][_0xc4d1('0x21')]){logger[_0xc4d1('0x24')](_0xc4d1('0x42'),_0x39cf3e[_0xc4d1('0x3e')]);this[_0xc4d1('0x16')](_0x39cf3e[_0xc4d1('0x3e')]);}}catch(_0x880bbe){logger[_0xc4d1('0x2e')](_0xc4d1('0x43'),_0x880bbe['message']);}};Acw['prototype'][_0xc4d1('0x12')]=function(_0x50e2e4){try{if(!_['isNil'](this[_0xc4d1('0xa')][_0x50e2e4[_0xc4d1('0x44')]])){this['startAcw'](_0x50e2e4[_0xc4d1('0x44')]);if(this[_0xc4d1('0xa')][_0x50e2e4['secondtransfereruniqueid']]){this[_0xc4d1('0xa')][_0x50e2e4[_0xc4d1('0x45')]][_0xc4d1('0x21')]=!![];this['channels'][_0x50e2e4[_0xc4d1('0x46')]]=this['channels'][_0x50e2e4['secondtransfereruniqueid']];delete this[_0xc4d1('0xa')][_0x50e2e4[_0xc4d1('0x45')]];}}else if(!_[_0xc4d1('0x47')](this['channels'][_0x50e2e4[_0xc4d1('0x46')]])){this['startAcw'](_0x50e2e4[_0xc4d1('0x46')]);if(this[_0xc4d1('0xa')][_0x50e2e4[_0xc4d1('0x48')]]){this['channels'][_0x50e2e4[_0xc4d1('0x48')]][_0xc4d1('0x21')]=!![];this['channels'][_0x50e2e4[_0xc4d1('0x44')]]=this[_0xc4d1('0xa')][_0x50e2e4[_0xc4d1('0x48')]];delete this[_0xc4d1('0xa')][_0x50e2e4[_0xc4d1('0x48')]];}}}catch(_0x2c5e4a){logger[_0xc4d1('0x2e')](_0xc4d1('0x49'),_0x2c5e4a[_0xc4d1('0x3a')]);}};Acw[_0xc4d1('0x38')]['syncBlindTransfer']=function(_0x5dc9e4){try{if(this[_0xc4d1('0xa')][_0x5dc9e4[_0xc4d1('0x4a')]]){logger[_0xc4d1('0x24')]('[%s][BLINDTRANSFER:UNIQUEID]',JSON[_0xc4d1('0x36')](_0x5dc9e4[_0xc4d1('0x4a')]));this['startAcw'](_0x5dc9e4[_0xc4d1('0x4a')]);}else if(this[_0xc4d1('0xa')][_0x5dc9e4[_0xc4d1('0x4b')]]){logger[_0xc4d1('0x24')](_0xc4d1('0x4c'),JSON['stringify'](_0x5dc9e4[_0xc4d1('0x4b')]));this['startAcw'](_0x5dc9e4[_0xc4d1('0x4b')]);}}catch(_0x14a30f){logger[_0xc4d1('0x2e')]('[ACW][syncBlindTransfer]\x20%s',_0x14a30f['message']);}};Acw[_0xc4d1('0x38')][_0xc4d1('0x10')]=function(_0x1a476e){try{if(this[_0xc4d1('0x7')][_0x1a476e[_0xc4d1('0x18')]]&&this['voiceQueues'][_0x1a476e[_0xc4d1('0x18')]][_0xc4d1('0x4d')]==='all'){if(this[_0xc4d1('0x8')][_0x1a476e['interface']]){logger[_0xc4d1('0x24')](_0xc4d1('0x4e'),_0x1a476e[_0xc4d1('0x2a')],_0x1a476e[_0xc4d1('0x17')],_0x1a476e[_0xc4d1('0x18')]);return RpcUser[_0xc4d1('0x23')](this[_0xc4d1('0x8')][_0x1a476e[_0xc4d1('0x17')]],'Auto-Pause',_0x1a476e['uniqueid']);}}}catch(_0x514256){logger['error']('[ACW][syncAgentRingNoAnswer]\x20%s',_0x514256[_0xc4d1('0x3a')]);}};module[_0xc4d1('0x4f')]=Acw;
\ No newline at end of file
index 9ace5dd..2826923 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5d74=['actionQueueSummary','queuesummary','once','close','connect','shutdown','info','Shutdown\x20\x22%s\x22\x20to\x20%s:%s\x20with:\x0a%s','fullybooted','Fullybooted\x20\x22%s\x22\x20to\x20%s:%s','resolve','then','actionSipShowRegistry','actionSipPeerStatus','catch','log','exports','asterisk-manager','bluebird','moment','lodash','../../config/logger','../../config/environment','asterisk','port','username','error','format','Manager\x20\x22%s\x22\x20error\x20to\x20%s:%s\x20with:\x0a%s','inspect','Manager\x20\x22%s\x22\x20closed\x20to\x20%s:%s','Action','sipshowregistry','actionDeviceStateList','devicestatelist','sippeerstatus'];(function(_0x50f410,_0xc221aa){var _0x287c19=function(_0x5322d9){while(--_0x5322d9){_0x50f410['push'](_0x50f410['shift']());}};_0x287c19(++_0xc221aa);}(_0x5d74,0x131));var _0x45d7=function(_0xd730d8,_0x194370){_0xd730d8=_0xd730d8-0x0;var _0x1d3744=_0x5d74[_0xd730d8];return _0x1d3744;};'use strict';var Manager=require(_0x45d7('0x0'));var BPromise=require(_0x45d7('0x1'));var moment=require(_0x45d7('0x2'));var util=require('util');var _=require(_0x45d7('0x3'));var logger=require(_0x45d7('0x4'))('ami');var config=require(_0x45d7('0x5'));var ami=new Manager(config[_0x45d7('0x6')][_0x45d7('0x7')],config[_0x45d7('0x6')]['ip'],config['asterisk'][_0x45d7('0x8')],config[_0x45d7('0x6')]['password'],!![]);ami['keepConnected']();ami['Action']=BPromise['promisify'](ami['action']);function error(_0x3ed09b){logger[_0x45d7('0x9')](util[_0x45d7('0xa')](_0x45d7('0xb'),config[_0x45d7('0x6')][_0x45d7('0x8')],config['asterisk']['ip'],config[_0x45d7('0x6')][_0x45d7('0x7')],util[_0x45d7('0xc')](_0x3ed09b,![],null)));}function close(){logger[_0x45d7('0x9')](util[_0x45d7('0xa')](_0x45d7('0xd'),config[_0x45d7('0x6')][_0x45d7('0x8')],config[_0x45d7('0x6')]['ip'],config[_0x45d7('0x6')][_0x45d7('0x7')]));}ami['actionSipShowRegistry']=function(){return function(){return ami[_0x45d7('0xe')]({'action':_0x45d7('0xf')});};};ami[_0x45d7('0x10')]=function(){return function(){return ami[_0x45d7('0xe')]({'action':_0x45d7('0x11')});};};ami['actionSipPeerStatus']=function(){return function(){return ami['Action']({'action':_0x45d7('0x12')});};};ami[_0x45d7('0x13')]=function(){return function(){return ami[_0x45d7('0xe')]({'action':_0x45d7('0x14')});};};ami['actionCoreShowChannels']=function(){return function(){return ami['Action']({'action':'coreshowchannels'});};};function connect(_0x3a0c7c){logger['info'](util['format']('Manager\x20\x22%s\x22\x20logged\x20on\x20to\x20%s:%s',config[_0x45d7('0x6')][_0x45d7('0x8')],config[_0x45d7('0x6')]['ip'],config[_0x45d7('0x6')]['port']));ami['once']('error',error);ami[_0x45d7('0x15')](_0x45d7('0x16'),close);}ami['on'](_0x45d7('0x17'),connect);ami['on'](_0x45d7('0x18'),function(_0x103bea){logger[_0x45d7('0x19')](util[_0x45d7('0xa')](_0x45d7('0x1a'),config['asterisk'][_0x45d7('0x8')],config[_0x45d7('0x6')]['ip'],config['asterisk'][_0x45d7('0x7')],util[_0x45d7('0xc')](_0x103bea,![],null)));});ami['on'](_0x45d7('0x1b'),function(_0x49fb22){logger[_0x45d7('0x19')](util[_0x45d7('0xa')](_0x45d7('0x1c'),config[_0x45d7('0x6')][_0x45d7('0x8')],config[_0x45d7('0x6')]['ip'],config['asterisk'][_0x45d7('0x7')]));return BPromise[_0x45d7('0x1d')]()[_0x45d7('0x1e')](ami[_0x45d7('0x1f')]())[_0x45d7('0x1e')](ami[_0x45d7('0x10')]())[_0x45d7('0x1e')](ami[_0x45d7('0x20')]())[_0x45d7('0x1e')](ami[_0x45d7('0x13')]())['then'](ami['actionCoreShowChannels']())[_0x45d7('0x21')](function(_0x520795){console[_0x45d7('0x22')](_0x520795);});});ami['once'](_0x45d7('0x9'),error);ami['once'](_0x45d7('0x16'),close);module[_0x45d7('0x23')]=ami;
\ No newline at end of file
+var _0xae9b=['then','actionDeviceStateList','catch','log','exports','asterisk-manager','bluebird','util','lodash','ami','../../config/environment','asterisk','username','password','keepConnected','Action','promisify','action','error','format','Manager\x20\x22%s\x22\x20error\x20to\x20%s:%s\x20with:\x0a%s','port','inspect','Manager\x20\x22%s\x22\x20closed\x20to\x20%s:%s','actionSipShowRegistry','devicestatelist','actionSipPeerStatus','sippeerstatus','queuesummary','actionCoreShowChannels','coreshowchannels','info','Manager\x20\x22%s\x22\x20logged\x20on\x20to\x20%s:%s','once','close','connect','shutdown','Shutdown\x20\x22%s\x22\x20to\x20%s:%s\x20with:\x0a%s','Fullybooted\x20\x22%s\x22\x20to\x20%s:%s','resolve'];(function(_0x3ef3f0,_0x431dae){var _0x1afd5b=function(_0x83f478){while(--_0x83f478){_0x3ef3f0['push'](_0x3ef3f0['shift']());}};_0x1afd5b(++_0x431dae);}(_0xae9b,0x195));var _0xbae9=function(_0x458f49,_0x1a1af1){_0x458f49=_0x458f49-0x0;var _0x36e8c9=_0xae9b[_0x458f49];return _0x36e8c9;};'use strict';var Manager=require(_0xbae9('0x0'));var BPromise=require(_0xbae9('0x1'));var moment=require('moment');var util=require(_0xbae9('0x2'));var _=require(_0xbae9('0x3'));var logger=require('../../config/logger')(_0xbae9('0x4'));var config=require(_0xbae9('0x5'));var ami=new Manager(config[_0xbae9('0x6')]['port'],config[_0xbae9('0x6')]['ip'],config[_0xbae9('0x6')][_0xbae9('0x7')],config['asterisk'][_0xbae9('0x8')],!![]);ami[_0xbae9('0x9')]();ami[_0xbae9('0xa')]=BPromise[_0xbae9('0xb')](ami[_0xbae9('0xc')]);function error(_0x147f90){logger[_0xbae9('0xd')](util[_0xbae9('0xe')](_0xbae9('0xf'),config[_0xbae9('0x6')][_0xbae9('0x7')],config[_0xbae9('0x6')]['ip'],config[_0xbae9('0x6')][_0xbae9('0x10')],util[_0xbae9('0x11')](_0x147f90,![],null)));}function close(){logger[_0xbae9('0xd')](util[_0xbae9('0xe')](_0xbae9('0x12'),config['asterisk']['username'],config[_0xbae9('0x6')]['ip'],config[_0xbae9('0x6')]['port']));}ami[_0xbae9('0x13')]=function(){return function(){return ami[_0xbae9('0xa')]({'action':'sipshowregistry'});};};ami['actionDeviceStateList']=function(){return function(){return ami[_0xbae9('0xa')]({'action':_0xbae9('0x14')});};};ami[_0xbae9('0x15')]=function(){return function(){return ami[_0xbae9('0xa')]({'action':_0xbae9('0x16')});};};ami['actionQueueSummary']=function(){return function(){return ami[_0xbae9('0xa')]({'action':_0xbae9('0x17')});};};ami[_0xbae9('0x18')]=function(){return function(){return ami['Action']({'action':_0xbae9('0x19')});};};function connect(_0x1ec268){logger[_0xbae9('0x1a')](util[_0xbae9('0xe')](_0xbae9('0x1b'),config[_0xbae9('0x6')][_0xbae9('0x7')],config[_0xbae9('0x6')]['ip'],config['asterisk']['port']));ami['once']('error',error);ami[_0xbae9('0x1c')](_0xbae9('0x1d'),close);}ami['on'](_0xbae9('0x1e'),connect);ami['on'](_0xbae9('0x1f'),function(_0x465eff){logger[_0xbae9('0x1a')](util[_0xbae9('0xe')](_0xbae9('0x20'),config[_0xbae9('0x6')][_0xbae9('0x7')],config['asterisk']['ip'],config[_0xbae9('0x6')]['port'],util[_0xbae9('0x11')](_0x465eff,![],null)));});ami['on']('fullybooted',function(_0x2af984){logger[_0xbae9('0x1a')](util[_0xbae9('0xe')](_0xbae9('0x21'),config['asterisk'][_0xbae9('0x7')],config['asterisk']['ip'],config[_0xbae9('0x6')][_0xbae9('0x10')]));return BPromise[_0xbae9('0x22')]()['then'](ami[_0xbae9('0x13')]())[_0xbae9('0x23')](ami[_0xbae9('0x24')]())['then'](ami['actionSipPeerStatus']())[_0xbae9('0x23')](ami['actionQueueSummary']())[_0xbae9('0x23')](ami[_0xbae9('0x18')]())[_0xbae9('0x25')](function(_0x3b0fc6){console[_0xbae9('0x26')](_0x3b0fc6);});});ami[_0xbae9('0x1c')](_0xbae9('0xd'),error);ami[_0xbae9('0x1c')](_0xbae9('0x1d'),close);module[_0xbae9('0x27')]=ami;
\ No newline at end of file
index 417b64a..3358d88 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xcb91=['request','debug','memberReport','error','rpc','message','result','catch','exports','../../config/logger','ami','client','http'];(function(_0x1f9f37,_0x18776e){var _0x21c080=function(_0x4acb93){while(--_0x4acb93){_0x1f9f37['push'](_0x1f9f37['shift']());}};_0x21c080(++_0x18776e);}(_0xcb91,0x1a9));var _0x1cb9=function(_0x3a78a0,_0x44985f){_0x3a78a0=_0x3a78a0-0x0;var _0x48e917=_0xcb91[_0x3a78a0];return _0x48e917;};'use strict';var jayson=require('jayson/promise');var BPromise=require('bluebird');var logger=require(_0x1cb9('0x0'))(_0x1cb9('0x1'));var client=jayson[_0x1cb9('0x2')][_0x1cb9('0x3')]({'port':0x2329});client['Request']=function(_0x8c392f,_0x2c17b8){return new BPromise(function(_0x545a34,_0x13d5fd){return client[_0x1cb9('0x4')](_0x8c392f,_0x2c17b8)['then'](function(_0x226b69){logger[_0x1cb9('0x5')]('rpc',_0x1cb9('0x6'),_0x8c392f,_0x2c17b8,_0x226b69);if(_0x226b69[_0x1cb9('0x7')]){logger['error'](_0x1cb9('0x8'),'memberReport',_0x8c392f,_0x226b69['error'][_0x1cb9('0x9')],_0x2c17b8);return _0x13d5fd(_0x226b69[_0x1cb9('0x7')][_0x1cb9('0x9')]);}else{return _0x545a34(_0x226b69[_0x1cb9('0xa')]);}})[_0x1cb9('0xb')](function(_0x50ce71){logger[_0x1cb9('0x7')](_0x1cb9('0x8'),_0x1cb9('0x6'),_0x8c392f,_0x50ce71,_0x2c17b8);return _0x13d5fd(_0x50ce71);});});};module[_0x1cb9('0xc')]=client;
\ No newline at end of file
+var _0xb7e7=['exports','jayson/promise','../../config/logger','client','Request','debug','rpc','error','memberReport','message','result','catch'];(function(_0x4b0290,_0x188c34){var _0x4bd9f4=function(_0x357f3f){while(--_0x357f3f){_0x4b0290['push'](_0x4b0290['shift']());}};_0x4bd9f4(++_0x188c34);}(_0xb7e7,0x121));var _0x7b7e=function(_0x1f9f37,_0x18776e){_0x1f9f37=_0x1f9f37-0x0;var _0x21c080=_0xb7e7[_0x1f9f37];return _0x21c080;};'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 6d46325..aaaba29 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xfdd3=['util','lodash','moment','string','isNil','voiceQueue','name','Contact','phone','firstName','lastName','queue','active','type','dialQueueTimeout','scheduledat','countbusyretry','countcongestionretry','countnoanswerretry','countnosuchnumberretry','countdropretry','countabandonedretry','countmachineretry','countagentrejectretry','ContactId','ListId','UserId','VoiceQueueId','CampaignId','idHopper','ContactFirstName','starttime','format','YYYY-MM-DD\x20HH:mm:ss','callback','callbackuniqueid','callbackat','recallme','originatecalleridnum','originatecalleridname','getCaller','\x22%s\x22\x20<%s>','dialCutDigit','number','substring','prototype','getQueue','exports'];(function(_0x502c7d,_0x2f1285){var _0x30b7ed=function(_0x2d92f3){while(--_0x2d92f3){_0x502c7d['push'](_0x502c7d['shift']());}};_0x30b7ed(++_0x2f1285);}(_0xfdd3,0xf0));var _0x3fdd=function(_0x3a2a53,_0x281084){_0x3a2a53=_0x3a2a53-0x0;var _0x1a17b3=_0xfdd3[_0x3a2a53];return _0x1a17b3;};'use strict';var util=require(_0x3fdd('0x0'));var _=require(_0x3fdd('0x1'));var moment=require(_0x3fdd('0x2'));function checkNameSurname(_0x4c4d94,_0x167c44,_0x61c0b4){var _0x2279f0='';if(!_['isNil'](_0x167c44)&&_0x3fdd('0x3')===typeof _0x167c44){_0x2279f0+=_0x167c44;}if(!_[_0x3fdd('0x4')](_0x61c0b4)&&_0x3fdd('0x3')===typeof _0x61c0b4){_0x2279f0+='\x20'+_0x61c0b4;}if(_0x2279f0!==''){return _0x2279f0;}return _0x4c4d94;}function Action(_0x35b1d5,_0x3306f4,_0x207570){this[_0x3fdd('0x5')]=_0x35b1d5;this['uniqueid']=_0x207570||undefined;this[_0x3fdd('0x6')]=checkNameSurname(_0x3306f4[_0x3fdd('0x7')][_0x3fdd('0x8')],_0x3306f4[_0x3fdd('0x7')][_0x3fdd('0x9')],_0x3306f4[_0x3fdd('0x7')][_0x3fdd('0xa')]);this['number']=_0x3306f4['Contact'][_0x3fdd('0x8')];this[_0x3fdd('0xb')]=_0x35b1d5[_0x3fdd('0x6')];this[_0x3fdd('0xc')]=_0x3306f4[_0x3fdd('0xc')]||![];this[_0x3fdd('0xd')]=_0x35b1d5[_0x3fdd('0xd')];this[_0x3fdd('0xe')]=_0x35b1d5[_0x3fdd('0xe')]||0x3;this[_0x3fdd('0xf')]=_0x3306f4[_0x3fdd('0xf')];this[_0x3fdd('0x10')]=_0x3306f4[_0x3fdd('0x10')];this['countcongestionretry']=_0x3306f4[_0x3fdd('0x11')];this[_0x3fdd('0x12')]=_0x3306f4[_0x3fdd('0x12')];this['countnosuchnumberretry']=_0x3306f4[_0x3fdd('0x13')];this[_0x3fdd('0x14')]=_0x3306f4[_0x3fdd('0x14')];this[_0x3fdd('0x15')]=_0x3306f4['countabandonedretry'];this[_0x3fdd('0x16')]=_0x3306f4[_0x3fdd('0x16')];this['countagentrejectretry']=_0x3306f4[_0x3fdd('0x17')];this['ContactId']=_0x3306f4[_0x3fdd('0x18')];this[_0x3fdd('0x19')]=_0x3306f4[_0x3fdd('0x19')];this[_0x3fdd('0x1a')]=_0x3306f4[_0x3fdd('0x1a')];this[_0x3fdd('0x1b')]=_0x3306f4['VoiceQueueId'];this[_0x3fdd('0x1c')]=_0x3306f4['CampaignId'];this[_0x3fdd('0x1d')]=_0x3306f4['id'];this[_0x3fdd('0x1e')]=_0x3306f4[_0x3fdd('0x7')]['firstName']||'';this[_0x3fdd('0x1f')]=moment()[_0x3fdd('0x20')](_0x3fdd('0x21'));this[_0x3fdd('0x22')]=_0x3306f4['callback'];this[_0x3fdd('0x23')]=_0x3306f4[_0x3fdd('0x23')];this[_0x3fdd('0x24')]=_0x3306f4[_0x3fdd('0x24')];this[_0x3fdd('0x25')]=_0x3306f4[_0x3fdd('0x25')];this[_0x3fdd('0x26')]='';this[_0x3fdd('0x27')]='';}Action['prototype'][_0x3fdd('0x28')]=function(){return util[_0x3fdd('0x20')](_0x3fdd('0x29'),this[_0x3fdd('0x6')],this['voiceQueue'][_0x3fdd('0x2a')]>0x0?this[_0x3fdd('0x2b')][_0x3fdd('0x2c')](this['voiceQueue']['dialCutDigit']):this[_0x3fdd('0x2b')]);};Action[_0x3fdd('0x2d')][_0x3fdd('0x2e')]=function(){return this[_0x3fdd('0xb')];};module[_0x3fdd('0x2f')]=Action;
\ No newline at end of file
+var _0x7f50=['VoiceQueueId','CampaignId','idHopper','ContactFirstName','firstName','starttime','format','YYYY-MM-DD\x20HH:mm:ss','callback','callbackuniqueid','callbackat','recallme','originatecalleridnum','originatecalleridname','getCaller','\x22%s\x22\x20<%s>','dialCutDigit','substring','prototype','getQueue','util','lodash','moment','isNil','string','voiceQueue','uniqueid','name','Contact','phone','lastName','number','queue','active','type','dialQueueTimeout','scheduledat','countbusyretry','countcongestionretry','countnosuchnumberretry','countdropretry','countabandonedretry','countmachineretry','countagentrejectretry','ContactId','ListId','UserId'];(function(_0x2f47eb,_0x710a87){var _0x522de5=function(_0x1616d2){while(--_0x1616d2){_0x2f47eb['push'](_0x2f47eb['shift']());}};_0x522de5(++_0x710a87);}(_0x7f50,0x15d));var _0x07f5=function(_0x441c2d,_0x35731e){_0x441c2d=_0x441c2d-0x0;var _0x365499=_0x7f50[_0x441c2d];return _0x365499;};'use strict';var util=require(_0x07f5('0x0'));var _=require(_0x07f5('0x1'));var moment=require(_0x07f5('0x2'));function checkNameSurname(_0x3f84ea,_0xb74f71,_0x48e87d){var _0xfa34f7='';if(!_[_0x07f5('0x3')](_0xb74f71)&&_0x07f5('0x4')===typeof _0xb74f71){_0xfa34f7+=_0xb74f71;}if(!_[_0x07f5('0x3')](_0x48e87d)&&'string'===typeof _0x48e87d){_0xfa34f7+='\x20'+_0x48e87d;}if(_0xfa34f7!==''){return _0xfa34f7;}return _0x3f84ea;}function Action(_0xdee80d,_0x16bb8f,_0x2be17c){this[_0x07f5('0x5')]=_0xdee80d;this[_0x07f5('0x6')]=_0x2be17c||undefined;this[_0x07f5('0x7')]=checkNameSurname(_0x16bb8f[_0x07f5('0x8')][_0x07f5('0x9')],_0x16bb8f[_0x07f5('0x8')]['firstName'],_0x16bb8f[_0x07f5('0x8')][_0x07f5('0xa')]);this[_0x07f5('0xb')]=_0x16bb8f[_0x07f5('0x8')][_0x07f5('0x9')];this[_0x07f5('0xc')]=_0xdee80d[_0x07f5('0x7')];this[_0x07f5('0xd')]=_0x16bb8f[_0x07f5('0xd')]||![];this[_0x07f5('0xe')]=_0xdee80d['type'];this[_0x07f5('0xf')]=_0xdee80d[_0x07f5('0xf')]||0x3;this[_0x07f5('0x10')]=_0x16bb8f[_0x07f5('0x10')];this[_0x07f5('0x11')]=_0x16bb8f[_0x07f5('0x11')];this[_0x07f5('0x12')]=_0x16bb8f[_0x07f5('0x12')];this['countnoanswerretry']=_0x16bb8f['countnoanswerretry'];this['countnosuchnumberretry']=_0x16bb8f[_0x07f5('0x13')];this[_0x07f5('0x14')]=_0x16bb8f[_0x07f5('0x14')];this[_0x07f5('0x15')]=_0x16bb8f['countabandonedretry'];this['countmachineretry']=_0x16bb8f[_0x07f5('0x16')];this[_0x07f5('0x17')]=_0x16bb8f[_0x07f5('0x17')];this[_0x07f5('0x18')]=_0x16bb8f[_0x07f5('0x18')];this[_0x07f5('0x19')]=_0x16bb8f[_0x07f5('0x19')];this[_0x07f5('0x1a')]=_0x16bb8f['UserId'];this[_0x07f5('0x1b')]=_0x16bb8f[_0x07f5('0x1b')];this[_0x07f5('0x1c')]=_0x16bb8f[_0x07f5('0x1c')];this[_0x07f5('0x1d')]=_0x16bb8f['id'];this[_0x07f5('0x1e')]=_0x16bb8f[_0x07f5('0x8')][_0x07f5('0x1f')]||'';this[_0x07f5('0x20')]=moment()[_0x07f5('0x21')](_0x07f5('0x22'));this[_0x07f5('0x23')]=_0x16bb8f['callback'];this[_0x07f5('0x24')]=_0x16bb8f[_0x07f5('0x24')];this[_0x07f5('0x25')]=_0x16bb8f[_0x07f5('0x25')];this[_0x07f5('0x26')]=_0x16bb8f['recallme'];this[_0x07f5('0x27')]='';this[_0x07f5('0x28')]='';}Action['prototype'][_0x07f5('0x29')]=function(){return util['format'](_0x07f5('0x2a'),this['name'],this['voiceQueue'][_0x07f5('0x2b')]>0x0?this[_0x07f5('0xb')][_0x07f5('0x2c')](this[_0x07f5('0x5')]['dialCutDigit']):this['number']);};Action[_0x07f5('0x2d')][_0x07f5('0x2e')]=function(){return this[_0x07f5('0xc')];};module['exports']=Action;
\ No newline at end of file
index 13ee407..6384ddd 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4ac4=['callbackat','recallme','ContactId','ListId','UserId','VoiceQueueId','CampaignId','originatecalleridnum','originatecalleridname','util','moment','milliseconds','diff','seconds','state','scheduledat','type','campaigntype','outbound','queue','countbusyretry','countcongestionretry','countnoanswerretry','countglobal','countnosuchnumberretry','countdropretry','countabandonedretry','countmachineretry','countagentrejectretry','uniqueid','name','calleridnum','number','starttime','responsetime','answertime','endtime','format','YYYY-MM-DD\x20HH:mm:ss','ringtime','holdtime','talktime','reason','callback','callbackuniqueid'];(function(_0x1c06c0,_0x1f9731){var _0x5857c0=function(_0xc8e0c7){while(--_0xc8e0c7){_0x1c06c0['push'](_0x1c06c0['shift']());}};_0x5857c0(++_0x1f9731);}(_0x4ac4,0x19e));var _0x44ac=function(_0x2504cc,_0x2a73c9){_0x2504cc=_0x2504cc-0x0;var _0x38405e=_0x4ac4[_0x2504cc];return _0x38405e;};'use strict';var util=require(_0x44ac('0x0'));var _=require('lodash');var moment=require(_0x44ac('0x1'));function getSeconds(_0x3c76eb,_0x5cd787){var _0x4ede5f=moment(_0x3c76eb)[_0x44ac('0x2')](0x0);var _0xb25b4d=moment(_0x5cd787)[_0x44ac('0x2')](0x0);return _0x4ede5f[_0x44ac('0x3')](_0xb25b4d,_0x44ac('0x4'));}function AgentComplete(_0x587368,_0x3a661a){this[_0x44ac('0x5')]=0x4;this['statedesc']='Answer';this[_0x44ac('0x6')]=_0x587368[_0x44ac('0x6')];this[_0x44ac('0x7')]=_0x587368[_0x44ac('0x7')];this[_0x44ac('0x8')]=_0x587368['type']===_0x44ac('0x9')?_0x44ac('0xa'):_0x587368[_0x44ac('0x7')];this[_0x44ac('0xb')]=_0x587368['countbusyretry'];this[_0x44ac('0xc')]=_0x587368[_0x44ac('0xc')];this[_0x44ac('0xd')]=_0x587368[_0x44ac('0xd')];this[_0x44ac('0xe')]=_0x587368[_0x44ac('0xb')]+_0x587368[_0x44ac('0xc')]+_0x587368[_0x44ac('0xd')]+_0x587368[_0x44ac('0xf')]+_0x587368[_0x44ac('0x10')]+_0x587368[_0x44ac('0x11')]+_0x587368[_0x44ac('0x12')]+_0x587368['countagentrejectretry'];this[_0x44ac('0xf')]=_0x587368['countnosuchnumberretry'];this[_0x44ac('0x10')]=_0x587368[_0x44ac('0x10')];this[_0x44ac('0x11')]=_0x587368[_0x44ac('0x11')];this[_0x44ac('0x12')]=_0x587368[_0x44ac('0x12')];this[_0x44ac('0x13')]=_0x587368[_0x44ac('0x13')];this[_0x44ac('0x14')]=_0x3a661a[_0x44ac('0x14')];this['calleridname']=_0x587368[_0x44ac('0x15')];this[_0x44ac('0x16')]=_0x587368[_0x44ac('0x17')];this[_0x44ac('0x18')]=_0x587368[_0x44ac('0x18')];this[_0x44ac('0x19')]=_0x587368[_0x44ac('0x19')];this[_0x44ac('0x1a')]=_0x587368[_0x44ac('0x1a')];this[_0x44ac('0x1b')]=moment()[_0x44ac('0x1c')](_0x44ac('0x1d'));this[_0x44ac('0x1e')]=getSeconds(_0x587368[_0x44ac('0x19')],_0x587368['starttime']);this[_0x44ac('0x1f')]=getSeconds(_0x587368['answertime'],_0x587368[_0x44ac('0x19')]);this[_0x44ac('0x20')]=getSeconds(this[_0x44ac('0x1b')],_0x587368['answertime']);this[_0x44ac('0xa')]=_0x3a661a[_0x44ac('0xa')];this['membername']=_0x3a661a['membername'];this[_0x44ac('0x21')]=_0x3a661a['reason'];this[_0x44ac('0x22')]=_0x587368[_0x44ac('0x22')];this[_0x44ac('0x23')]=_0x587368[_0x44ac('0x23')];this['callbackat']=_0x587368[_0x44ac('0x24')];this[_0x44ac('0x25')]=_0x587368[_0x44ac('0x25')];this[_0x44ac('0x26')]=_0x587368[_0x44ac('0x26')];this['ListId']=_0x587368[_0x44ac('0x27')];this[_0x44ac('0x28')]=_0x587368[_0x44ac('0x28')];this[_0x44ac('0x29')]=_0x587368['VoiceQueueId'];this[_0x44ac('0x2a')]=_0x587368[_0x44ac('0x2a')];this[_0x44ac('0x2b')]=_0x587368[_0x44ac('0x2b')]||'';this[_0x44ac('0x2c')]=_0x587368[_0x44ac('0x2c')]||'';}module['exports']=AgentComplete;
\ No newline at end of file
+var _0xc878=['campaigntype','outbound','queue','countbusyretry','countcongestionretry','countnoanswerretry','countglobal','countnosuchnumberretry','countdropretry','countabandonedretry','countmachineretry','countagentrejectretry','uniqueid','calleridname','name','calleridnum','starttime','responsetime','answertime','endtime','format','YYYY-MM-DD\x20HH:mm:ss','holdtime','talktime','reason','callback','callbackuniqueid','callbackat','recallme','ContactId','ListId','UserId','VoiceQueueId','CampaignId','originatecalleridnum','originatecalleridname','exports','util','lodash','milliseconds','diff','statedesc','Answer','scheduledat','type'];(function(_0x27a511,_0x2dcbb1){var _0x2aedc9=function(_0x57e903){while(--_0x57e903){_0x27a511['push'](_0x27a511['shift']());}};_0x2aedc9(++_0x2dcbb1);}(_0xc878,0x133));var _0x8c87=function(_0x4350c2,_0x112f3c){_0x4350c2=_0x4350c2-0x0;var _0x8b6406=_0xc878[_0x4350c2];return _0x8b6406;};'use strict';var util=require(_0x8c87('0x0'));var _=require(_0x8c87('0x1'));var moment=require('moment');function getSeconds(_0x325203,_0x324af7){var _0x2f4961=moment(_0x325203)[_0x8c87('0x2')](0x0);var _0x53deff=moment(_0x324af7)[_0x8c87('0x2')](0x0);return _0x2f4961[_0x8c87('0x3')](_0x53deff,'seconds');}function AgentComplete(_0xd8575,_0x7e50f9){this['state']=0x4;this[_0x8c87('0x4')]=_0x8c87('0x5');this[_0x8c87('0x6')]=_0xd8575[_0x8c87('0x6')];this[_0x8c87('0x7')]=_0xd8575['type'];this[_0x8c87('0x8')]=_0xd8575[_0x8c87('0x7')]===_0x8c87('0x9')?_0x8c87('0xa'):_0xd8575[_0x8c87('0x7')];this[_0x8c87('0xb')]=_0xd8575[_0x8c87('0xb')];this[_0x8c87('0xc')]=_0xd8575[_0x8c87('0xc')];this[_0x8c87('0xd')]=_0xd8575['countnoanswerretry'];this[_0x8c87('0xe')]=_0xd8575[_0x8c87('0xb')]+_0xd8575[_0x8c87('0xc')]+_0xd8575[_0x8c87('0xd')]+_0xd8575[_0x8c87('0xf')]+_0xd8575[_0x8c87('0x10')]+_0xd8575[_0x8c87('0x11')]+_0xd8575[_0x8c87('0x12')]+_0xd8575[_0x8c87('0x13')];this[_0x8c87('0xf')]=_0xd8575[_0x8c87('0xf')];this['countdropretry']=_0xd8575['countdropretry'];this['countabandonedretry']=_0xd8575[_0x8c87('0x11')];this['countmachineretry']=_0xd8575[_0x8c87('0x12')];this['countagentrejectretry']=_0xd8575['countagentrejectretry'];this['uniqueid']=_0x7e50f9[_0x8c87('0x14')];this[_0x8c87('0x15')]=_0xd8575[_0x8c87('0x16')];this[_0x8c87('0x17')]=_0xd8575['number'];this[_0x8c87('0x18')]=_0xd8575['starttime'];this[_0x8c87('0x19')]=_0xd8575[_0x8c87('0x19')];this[_0x8c87('0x1a')]=_0xd8575[_0x8c87('0x1a')];this[_0x8c87('0x1b')]=moment()[_0x8c87('0x1c')](_0x8c87('0x1d'));this['ringtime']=getSeconds(_0xd8575[_0x8c87('0x19')],_0xd8575[_0x8c87('0x18')]);this[_0x8c87('0x1e')]=getSeconds(_0xd8575[_0x8c87('0x1a')],_0xd8575[_0x8c87('0x19')]);this[_0x8c87('0x1f')]=getSeconds(this['endtime'],_0xd8575[_0x8c87('0x1a')]);this[_0x8c87('0xa')]=_0x7e50f9[_0x8c87('0xa')];this['membername']=_0x7e50f9['membername'];this[_0x8c87('0x20')]=_0x7e50f9[_0x8c87('0x20')];this[_0x8c87('0x21')]=_0xd8575[_0x8c87('0x21')];this[_0x8c87('0x22')]=_0xd8575[_0x8c87('0x22')];this[_0x8c87('0x23')]=_0xd8575[_0x8c87('0x23')];this[_0x8c87('0x24')]=_0xd8575['recallme'];this[_0x8c87('0x25')]=_0xd8575[_0x8c87('0x25')];this[_0x8c87('0x26')]=_0xd8575[_0x8c87('0x26')];this['UserId']=_0xd8575[_0x8c87('0x27')];this[_0x8c87('0x28')]=_0xd8575[_0x8c87('0x28')];this[_0x8c87('0x29')]=_0xd8575[_0x8c87('0x29')];this[_0x8c87('0x2a')]=_0xd8575['originatecalleridnum']||'';this[_0x8c87('0x2b')]=_0xd8575[_0x8c87('0x2b')]||'';}module[_0x8c87('0x2c')]=AgentComplete;
\ No newline at end of file
index 9fd2737..a8aba40 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6334=['ContactId','ListId','UserId','VoiceQueueId','CampaignId','originatecalleridnum','originatecalleridname','exports','util','lodash','moment','milliseconds','diff','seconds','uniqueid','scheduledat','type','campaigntype','outbound','queue','countbusyretry','countcongestionretry','countnoanswerretry','countglobal','countnosuchnumberretry','countdropretry','countabandonedretry','countmachineretry','countagentrejectretry','calleridname','calleridnum','starttime','responsetime','ringtime','holdtime','talktime','callbackuniqueid','callbackat','recallme'];(function(_0x1d79c3,_0x3992a9){var _0x5ed06c=function(_0x148fec){while(--_0x148fec){_0x1d79c3['push'](_0x1d79c3['shift']());}};_0x5ed06c(++_0x3992a9);}(_0x6334,0x119));var _0x4633=function(_0x5e42a7,_0x3eba35){_0x5e42a7=_0x5e42a7-0x0;var _0x36d21b=_0x6334[_0x5e42a7];return _0x36d21b;};'use strict';var util=require(_0x4633('0x0'));var _=require(_0x4633('0x1'));var moment=require(_0x4633('0x2'));function getSeconds(_0x1d53a1,_0x1e53a0){var _0x47254b=moment(_0x1d53a1)['milliseconds'](0x0);var _0x1099be=moment(_0x1e53a0)[_0x4633('0x3')](0x0);return _0x47254b[_0x4633('0x4')](_0x1099be,_0x4633('0x5'));}function Final(_0x2ee333){this[_0x4633('0x6')]=_0x2ee333[_0x4633('0x6')];this['scheduledat']=_0x2ee333[_0x4633('0x7')];this['type']=_0x2ee333[_0x4633('0x8')];this[_0x4633('0x9')]=_0x2ee333['type']===_0x4633('0xa')?_0x4633('0xb'):_0x2ee333[_0x4633('0x8')];this['countbusyretry']=_0x2ee333[_0x4633('0xc')];this[_0x4633('0xd')]=_0x2ee333['countcongestionretry'];this[_0x4633('0xe')]=_0x2ee333[_0x4633('0xe')];this[_0x4633('0xf')]=_0x2ee333[_0x4633('0xc')]+_0x2ee333['countcongestionretry']+_0x2ee333[_0x4633('0xe')]+_0x2ee333[_0x4633('0x10')]+_0x2ee333[_0x4633('0x11')]+_0x2ee333['countabandonedretry']+_0x2ee333['countmachineretry']+_0x2ee333['countagentrejectretry'];this[_0x4633('0x10')]=_0x2ee333[_0x4633('0x10')];this['countdropretry']=_0x2ee333['countdropretry'];this[_0x4633('0x12')]=_0x2ee333['countabandonedretry'];this[_0x4633('0x13')]=_0x2ee333[_0x4633('0x13')];this[_0x4633('0x14')]=_0x2ee333[_0x4633('0x14')];this['queue']=_0x2ee333[_0x4633('0xb')];this[_0x4633('0x15')]=_0x2ee333[_0x4633('0x15')];this['calleridnum']=_0x2ee333[_0x4633('0x16')];this[_0x4633('0x17')]=_0x2ee333[_0x4633('0x17')];this[_0x4633('0x18')]=_0x2ee333[_0x4633('0x18')];this['endtime']=_0x2ee333[_0x4633('0x18')];this[_0x4633('0x19')]=_0x2ee333['ringtime']||0x0;this['holdtime']=_0x2ee333[_0x4633('0x1a')]||0x0;this['talktime']=_0x2ee333[_0x4633('0x1b')]||0x0;this['callback']=_0x2ee333['callback'];this[_0x4633('0x1c')]=_0x2ee333[_0x4633('0x1c')];this[_0x4633('0x1d')]=_0x2ee333[_0x4633('0x1d')];this[_0x4633('0x1e')]=_0x2ee333[_0x4633('0x1e')];this['ContactId']=_0x2ee333[_0x4633('0x1f')];this['ListId']=_0x2ee333[_0x4633('0x20')];this[_0x4633('0x21')]=_0x2ee333[_0x4633('0x21')];this[_0x4633('0x22')]=_0x2ee333[_0x4633('0x22')];this['CampaignId']=_0x2ee333[_0x4633('0x23')];this[_0x4633('0x24')]=_0x2ee333[_0x4633('0x24')]||'';this[_0x4633('0x25')]=_0x2ee333[_0x4633('0x25')]||'';}module[_0x4633('0x26')]=Final;
\ No newline at end of file
+var _0x3561=['seconds','uniqueid','scheduledat','type','campaigntype','queue','countbusyretry','countcongestionretry','countnoanswerretry','countglobal','countnosuchnumberretry','countdropretry','countabandonedretry','countmachineretry','countagentrejectretry','calleridname','calleridnum','starttime','responsetime','endtime','ringtime','holdtime','talktime','callback','callbackuniqueid','callbackat','recallme','ContactId','ListId','UserId','VoiceQueueId','CampaignId','originatecalleridnum','originatecalleridname','util','moment','milliseconds','diff'];(function(_0x578640,_0x3ead24){var _0x52f43f=function(_0x1aa5d8){while(--_0x1aa5d8){_0x578640['push'](_0x578640['shift']());}};_0x52f43f(++_0x3ead24);}(_0x3561,0x94));var _0x1356=function(_0x3bc19d,_0x1680f8){_0x3bc19d=_0x3bc19d-0x0;var _0x1a9867=_0x3561[_0x3bc19d];return _0x1a9867;};'use strict';var util=require(_0x1356('0x0'));var _=require('lodash');var moment=require(_0x1356('0x1'));function getSeconds(_0x23a086,_0x8ef5f){var _0x14465e=moment(_0x23a086)[_0x1356('0x2')](0x0);var _0x313999=moment(_0x8ef5f)[_0x1356('0x2')](0x0);return _0x14465e[_0x1356('0x3')](_0x313999,_0x1356('0x4'));}function Final(_0x23a659){this[_0x1356('0x5')]=_0x23a659[_0x1356('0x5')];this[_0x1356('0x6')]=_0x23a659['scheduledat'];this[_0x1356('0x7')]=_0x23a659[_0x1356('0x7')];this[_0x1356('0x8')]=_0x23a659['type']==='outbound'?_0x1356('0x9'):_0x23a659[_0x1356('0x7')];this['countbusyretry']=_0x23a659[_0x1356('0xa')];this['countcongestionretry']=_0x23a659[_0x1356('0xb')];this[_0x1356('0xc')]=_0x23a659['countnoanswerretry'];this[_0x1356('0xd')]=_0x23a659[_0x1356('0xa')]+_0x23a659['countcongestionretry']+_0x23a659[_0x1356('0xc')]+_0x23a659[_0x1356('0xe')]+_0x23a659[_0x1356('0xf')]+_0x23a659[_0x1356('0x10')]+_0x23a659[_0x1356('0x11')]+_0x23a659[_0x1356('0x12')];this[_0x1356('0xe')]=_0x23a659[_0x1356('0xe')];this[_0x1356('0xf')]=_0x23a659[_0x1356('0xf')];this[_0x1356('0x10')]=_0x23a659[_0x1356('0x10')];this[_0x1356('0x11')]=_0x23a659['countmachineretry'];this['countagentrejectretry']=_0x23a659[_0x1356('0x12')];this[_0x1356('0x9')]=_0x23a659[_0x1356('0x9')];this['calleridname']=_0x23a659[_0x1356('0x13')];this[_0x1356('0x14')]=_0x23a659[_0x1356('0x14')];this[_0x1356('0x15')]=_0x23a659[_0x1356('0x15')];this[_0x1356('0x16')]=_0x23a659[_0x1356('0x16')];this[_0x1356('0x17')]=_0x23a659[_0x1356('0x16')];this[_0x1356('0x18')]=_0x23a659[_0x1356('0x18')]||0x0;this[_0x1356('0x19')]=_0x23a659[_0x1356('0x19')]||0x0;this['talktime']=_0x23a659[_0x1356('0x1a')]||0x0;this['callback']=_0x23a659[_0x1356('0x1b')];this['callbackuniqueid']=_0x23a659[_0x1356('0x1c')];this[_0x1356('0x1d')]=_0x23a659[_0x1356('0x1d')];this[_0x1356('0x1e')]=_0x23a659[_0x1356('0x1e')];this[_0x1356('0x1f')]=_0x23a659['ContactId'];this[_0x1356('0x20')]=_0x23a659[_0x1356('0x20')];this['UserId']=_0x23a659[_0x1356('0x21')];this[_0x1356('0x22')]=_0x23a659[_0x1356('0x22')];this['CampaignId']=_0x23a659[_0x1356('0x23')];this[_0x1356('0x24')]=_0x23a659[_0x1356('0x24')]||'';this[_0x1356('0x25')]=_0x23a659['originatecalleridname']||'';}module['exports']=Final;
\ No newline at end of file
index c670467..5280114 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xfa6a=['VoiceQueueId','CampaignId','lodash','milliseconds','diff','seconds','state','statedesc','scheduledat','type','campaigntype','outbound','queue','countbusyretry','countcongestionretry','countnoanswerretry','countglobal','countdropretry','countmachineretry','countagentrejectretry','countnosuchnumberretry','countabandonedretry','calleridname','calleridnum','number','starttime','responsetime','endtime','format','YYYY-MM-DD\x20HH:mm:ss','holdtime','membername','IVR','reason','cause-txt','callback','callbackuniqueid','callbackat','recallme','ContactId','ListId','UserId'];(function(_0x1f9f37,_0x18776e){var _0x21c080=function(_0x4acb93){while(--_0x4acb93){_0x1f9f37['push'](_0x1f9f37['shift']());}};_0x21c080(++_0x18776e);}(_0xfa6a,0x152));var _0xafa6=function(_0x26462c,_0xd20a35){_0x26462c=_0x26462c-0x0;var _0x509a42=_0xfa6a[_0x26462c];return _0x509a42;};'use strict';var util=require('util');var _=require(_0xafa6('0x0'));var moment=require('moment');function getSeconds(_0x5e0913,_0x20b28f){var _0x182d56=moment(_0x5e0913)[_0xafa6('0x1')](0x0);var _0x590970=moment(_0x20b28f)[_0xafa6('0x1')](0x0);return _0x182d56[_0xafa6('0x2')](_0x590970,_0xafa6('0x3'));}function Hangup(_0x3332c3,_0x974dac){this[_0xafa6('0x4')]=0x4;this[_0xafa6('0x5')]='Answer';this['scheduledat']=_0x3332c3[_0xafa6('0x6')];this[_0xafa6('0x7')]=_0x3332c3[_0xafa6('0x7')];this[_0xafa6('0x8')]=_0x3332c3[_0xafa6('0x7')]===_0xafa6('0x9')?_0xafa6('0xa'):_0x3332c3[_0xafa6('0x7')];this[_0xafa6('0xb')]=_0x3332c3[_0xafa6('0xb')];this[_0xafa6('0xc')]=_0x3332c3[_0xafa6('0xc')];this[_0xafa6('0xd')]=_0x3332c3[_0xafa6('0xd')];this[_0xafa6('0xe')]=_0x3332c3[_0xafa6('0xb')]+_0x3332c3[_0xafa6('0xc')]+_0x3332c3['countnoanswerretry']+_0x3332c3['countnosuchnumberretry']+_0x3332c3[_0xafa6('0xf')]+_0x3332c3['countabandonedretry']+_0x3332c3[_0xafa6('0x10')]+_0x3332c3[_0xafa6('0x11')];this[_0xafa6('0x12')]=_0x3332c3[_0xafa6('0x12')];this[_0xafa6('0xf')]=_0x3332c3[_0xafa6('0xf')];this[_0xafa6('0x13')]=_0x3332c3[_0xafa6('0x13')];this[_0xafa6('0x10')]=_0x3332c3[_0xafa6('0x10')];this[_0xafa6('0x11')]=_0x3332c3[_0xafa6('0x11')];this['uniqueid']=_0x974dac['uniqueid'];this[_0xafa6('0x14')]=_0x3332c3['name'];this[_0xafa6('0x15')]=_0x3332c3[_0xafa6('0x16')];this[_0xafa6('0x17')]=_0x3332c3[_0xafa6('0x17')];this['responsetime']=_0x3332c3[_0xafa6('0x18')];this[_0xafa6('0x19')]=moment()[_0xafa6('0x1a')](_0xafa6('0x1b'));this['ringtime']=getSeconds(_0x3332c3[_0xafa6('0x18')],_0x3332c3[_0xafa6('0x17')]);this[_0xafa6('0x1c')]=0x0;this['talktime']=getSeconds(this['endtime'],_0x3332c3[_0xafa6('0x18')]);this[_0xafa6('0xa')]=_0x3332c3['queue'];this[_0xafa6('0x1d')]=_0xafa6('0x1e');this[_0xafa6('0x1f')]=_0x974dac[_0xafa6('0x20')];this[_0xafa6('0x21')]=_0x3332c3[_0xafa6('0x21')];this[_0xafa6('0x22')]=_0x3332c3['callbackuniqueid'];this[_0xafa6('0x23')]=_0x3332c3[_0xafa6('0x23')];this['recallme']=_0x3332c3[_0xafa6('0x24')];this['ContactId']=_0x3332c3[_0xafa6('0x25')];this[_0xafa6('0x26')]=_0x3332c3[_0xafa6('0x26')];this['UserId']=_0x3332c3[_0xafa6('0x27')];this[_0xafa6('0x28')]=_0x3332c3[_0xafa6('0x28')];this[_0xafa6('0x29')]=_0x3332c3['CampaignId'];}module['exports']=Hangup;
\ No newline at end of file
+var _0xd7ad=['callbackat','recallme','ContactId','ListId','UserId','VoiceQueueId','CampaignId','exports','util','lodash','moment','milliseconds','statedesc','Answer','scheduledat','type','campaigntype','outbound','queue','countbusyretry','countnoanswerretry','countglobal','countcongestionretry','countnosuchnumberretry','countmachineretry','countagentrejectretry','countdropretry','countabandonedretry','uniqueid','calleridname','name','calleridnum','number','starttime','responsetime','endtime','format','YYYY-MM-DD\x20HH:mm:ss','ringtime','holdtime','talktime','membername','IVR','reason','cause-txt','callback','callbackuniqueid'];(function(_0x455c6c,_0x1e78b7){var _0x488242=function(_0x3e8fb0){while(--_0x3e8fb0){_0x455c6c['push'](_0x455c6c['shift']());}};_0x488242(++_0x1e78b7);}(_0xd7ad,0x95));var _0xdd7a=function(_0x3d42d8,_0x4cffaa){_0x3d42d8=_0x3d42d8-0x0;var _0x27fc41=_0xd7ad[_0x3d42d8];return _0x27fc41;};'use strict';var util=require(_0xdd7a('0x0'));var _=require(_0xdd7a('0x1'));var moment=require(_0xdd7a('0x2'));function getSeconds(_0xd64cb6,_0x26c91b){var _0x2af562=moment(_0xd64cb6)[_0xdd7a('0x3')](0x0);var _0x2390e8=moment(_0x26c91b)[_0xdd7a('0x3')](0x0);return _0x2af562['diff'](_0x2390e8,'seconds');}function Hangup(_0x598bd9,_0x2c2c39){this['state']=0x4;this[_0xdd7a('0x4')]=_0xdd7a('0x5');this[_0xdd7a('0x6')]=_0x598bd9['scheduledat'];this[_0xdd7a('0x7')]=_0x598bd9['type'];this[_0xdd7a('0x8')]=_0x598bd9['type']===_0xdd7a('0x9')?_0xdd7a('0xa'):_0x598bd9[_0xdd7a('0x7')];this['countbusyretry']=_0x598bd9[_0xdd7a('0xb')];this['countcongestionretry']=_0x598bd9['countcongestionretry'];this[_0xdd7a('0xc')]=_0x598bd9[_0xdd7a('0xc')];this[_0xdd7a('0xd')]=_0x598bd9[_0xdd7a('0xb')]+_0x598bd9[_0xdd7a('0xe')]+_0x598bd9['countnoanswerretry']+_0x598bd9[_0xdd7a('0xf')]+_0x598bd9['countdropretry']+_0x598bd9['countabandonedretry']+_0x598bd9[_0xdd7a('0x10')]+_0x598bd9[_0xdd7a('0x11')];this[_0xdd7a('0xf')]=_0x598bd9[_0xdd7a('0xf')];this[_0xdd7a('0x12')]=_0x598bd9['countdropretry'];this[_0xdd7a('0x13')]=_0x598bd9[_0xdd7a('0x13')];this[_0xdd7a('0x10')]=_0x598bd9[_0xdd7a('0x10')];this[_0xdd7a('0x11')]=_0x598bd9[_0xdd7a('0x11')];this[_0xdd7a('0x14')]=_0x2c2c39[_0xdd7a('0x14')];this[_0xdd7a('0x15')]=_0x598bd9[_0xdd7a('0x16')];this[_0xdd7a('0x17')]=_0x598bd9[_0xdd7a('0x18')];this[_0xdd7a('0x19')]=_0x598bd9[_0xdd7a('0x19')];this[_0xdd7a('0x1a')]=_0x598bd9[_0xdd7a('0x1a')];this[_0xdd7a('0x1b')]=moment()[_0xdd7a('0x1c')](_0xdd7a('0x1d'));this[_0xdd7a('0x1e')]=getSeconds(_0x598bd9[_0xdd7a('0x1a')],_0x598bd9[_0xdd7a('0x19')]);this[_0xdd7a('0x1f')]=0x0;this[_0xdd7a('0x20')]=getSeconds(this[_0xdd7a('0x1b')],_0x598bd9['responsetime']);this['queue']=_0x598bd9[_0xdd7a('0xa')];this[_0xdd7a('0x21')]=_0xdd7a('0x22');this[_0xdd7a('0x23')]=_0x2c2c39[_0xdd7a('0x24')];this[_0xdd7a('0x25')]=_0x598bd9[_0xdd7a('0x25')];this[_0xdd7a('0x26')]=_0x598bd9[_0xdd7a('0x26')];this['callbackat']=_0x598bd9[_0xdd7a('0x27')];this[_0xdd7a('0x28')]=_0x598bd9['recallme'];this[_0xdd7a('0x29')]=_0x598bd9[_0xdd7a('0x29')];this[_0xdd7a('0x2a')]=_0x598bd9[_0xdd7a('0x2a')];this[_0xdd7a('0x2b')]=_0x598bd9[_0xdd7a('0x2b')];this[_0xdd7a('0x2c')]=_0x598bd9[_0xdd7a('0x2c')];this[_0xdd7a('0x2d')]=_0x598bd9[_0xdd7a('0x2d')];}module[_0xdd7a('0x2e')]=Hangup;
\ No newline at end of file
index 376bccd..8365e9c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4e04=['CampaignId','originatecalleridnum','originatecalleridname','util','moment','milliseconds','diff','seconds','uniqueid','scheduledat','type','campaigntype','outbound','queue','countbusyretry','countcongestionretry','countnoanswerretry','countglobal','countnosuchnumberretry','countdropretry','countabandonedretry','countmachineretry','countagentrejectretry','calleridname','calleridnum','starttime','responsetime','endtime','ringtime','holdtime','talktime','callback','callbackuniqueid','recallme','ContactId','ListId','UserId','VoiceQueueId'];(function(_0x21d36e,_0x5dc096){var _0x4cc307=function(_0x4ae995){while(--_0x4ae995){_0x21d36e['push'](_0x21d36e['shift']());}};_0x4cc307(++_0x5dc096);}(_0x4e04,0x133));var _0x44e0=function(_0x4099ee,_0x38495a){_0x4099ee=_0x4099ee-0x0;var _0x1b7bfc=_0x4e04[_0x4099ee];return _0x1b7bfc;};'use strict';var util=require(_0x44e0('0x0'));var _=require('lodash');var moment=require(_0x44e0('0x1'));function getSeconds(_0x375027,_0x168641){var _0x4297aa=moment(_0x375027)[_0x44e0('0x2')](0x0);var _0x3b97f3=moment(_0x168641)['milliseconds'](0x0);return _0x4297aa[_0x44e0('0x3')](_0x3b97f3,_0x44e0('0x4'));}function History(_0xa06f48){this[_0x44e0('0x5')]=_0xa06f48['uniqueid'];this['scheduledat']=_0xa06f48[_0x44e0('0x6')]||undefined;this['type']=_0xa06f48[_0x44e0('0x7')];this[_0x44e0('0x8')]=_0xa06f48[_0x44e0('0x7')]===_0x44e0('0x9')?_0x44e0('0xa'):_0xa06f48['type'];this[_0x44e0('0xb')]=_0xa06f48[_0x44e0('0xb')];this[_0x44e0('0xc')]=_0xa06f48[_0x44e0('0xc')];this['countnoanswerretry']=_0xa06f48[_0x44e0('0xd')];this[_0x44e0('0xe')]=_0xa06f48[_0x44e0('0xb')]+_0xa06f48['countcongestionretry']+_0xa06f48['countnoanswerretry']+_0xa06f48[_0x44e0('0xf')]+_0xa06f48[_0x44e0('0x10')]+_0xa06f48[_0x44e0('0x11')]+_0xa06f48[_0x44e0('0x12')]+_0xa06f48[_0x44e0('0x13')];this[_0x44e0('0xf')]=_0xa06f48['countnosuchnumberretry'];this['countdropretry']=_0xa06f48[_0x44e0('0x10')];this[_0x44e0('0x11')]=_0xa06f48[_0x44e0('0x11')];this[_0x44e0('0x12')]=_0xa06f48['countmachineretry'];this[_0x44e0('0x13')]=_0xa06f48['countagentrejectretry'];this[_0x44e0('0xa')]=_0xa06f48['queue'];this[_0x44e0('0x14')]=_0xa06f48['name'];this[_0x44e0('0x15')]=_0xa06f48['number'];this[_0x44e0('0x16')]=_0xa06f48[_0x44e0('0x16')];this[_0x44e0('0x17')]=_0xa06f48['responsetime'];this[_0x44e0('0x18')]=_0xa06f48[_0x44e0('0x17')];this[_0x44e0('0x19')]=getSeconds(_0xa06f48[_0x44e0('0x17')],_0xa06f48[_0x44e0('0x16')]);this[_0x44e0('0x1a')]=0x0;this[_0x44e0('0x1b')]=0x0;this[_0x44e0('0x1c')]=_0xa06f48[_0x44e0('0x1c')];this[_0x44e0('0x1d')]=_0xa06f48[_0x44e0('0x1d')];this['callbackat']=_0xa06f48['callbackat'];this['recallme']=_0xa06f48[_0x44e0('0x1e')];this['ContactId']=_0xa06f48[_0x44e0('0x1f')];this[_0x44e0('0x20')]=_0xa06f48[_0x44e0('0x20')];this['UserId']=_0xa06f48[_0x44e0('0x21')];this[_0x44e0('0x22')]=_0xa06f48[_0x44e0('0x22')];this[_0x44e0('0x23')]=_0xa06f48['CampaignId'];this['originatecalleridnum']=_0xa06f48[_0x44e0('0x24')]||'';this[_0x44e0('0x25')]=_0xa06f48[_0x44e0('0x25')]||'';}module['exports']=History;
\ No newline at end of file
+var _0x949d=['starttime','callback','callbackuniqueid','callbackat','recallme','ContactId','ListId','UserId','VoiceQueueId','CampaignId','originatecalleridname','exports','util','lodash','moment','milliseconds','seconds','uniqueid','scheduledat','type','campaigntype','outbound','countbusyretry','countcongestionretry','countnoanswerretry','countglobal','countnosuchnumberretry','countdropretry','countabandonedretry','countmachineretry','countagentrejectretry','queue','calleridname','name','calleridnum','number','responsetime','endtime','ringtime'];(function(_0x53f04f,_0x419aa8){var _0x16a824=function(_0x5712c9){while(--_0x5712c9){_0x53f04f['push'](_0x53f04f['shift']());}};_0x16a824(++_0x419aa8);}(_0x949d,0x81));var _0xd949=function(_0x18b5b3,_0x55ad90){_0x18b5b3=_0x18b5b3-0x0;var _0x2ae5c7=_0x949d[_0x18b5b3];return _0x2ae5c7;};'use strict';var util=require(_0xd949('0x0'));var _=require(_0xd949('0x1'));var moment=require(_0xd949('0x2'));function getSeconds(_0x35c14b,_0x381e70){var _0x27fb48=moment(_0x35c14b)[_0xd949('0x3')](0x0);var _0x420fb8=moment(_0x381e70)[_0xd949('0x3')](0x0);return _0x27fb48['diff'](_0x420fb8,_0xd949('0x4'));}function History(_0x57f78b){this[_0xd949('0x5')]=_0x57f78b[_0xd949('0x5')];this['scheduledat']=_0x57f78b[_0xd949('0x6')]||undefined;this[_0xd949('0x7')]=_0x57f78b[_0xd949('0x7')];this[_0xd949('0x8')]=_0x57f78b[_0xd949('0x7')]===_0xd949('0x9')?'queue':_0x57f78b['type'];this[_0xd949('0xa')]=_0x57f78b['countbusyretry'];this['countcongestionretry']=_0x57f78b[_0xd949('0xb')];this[_0xd949('0xc')]=_0x57f78b[_0xd949('0xc')];this[_0xd949('0xd')]=_0x57f78b[_0xd949('0xa')]+_0x57f78b[_0xd949('0xb')]+_0x57f78b['countnoanswerretry']+_0x57f78b[_0xd949('0xe')]+_0x57f78b[_0xd949('0xf')]+_0x57f78b[_0xd949('0x10')]+_0x57f78b[_0xd949('0x11')]+_0x57f78b[_0xd949('0x12')];this[_0xd949('0xe')]=_0x57f78b[_0xd949('0xe')];this[_0xd949('0xf')]=_0x57f78b[_0xd949('0xf')];this[_0xd949('0x10')]=_0x57f78b[_0xd949('0x10')];this[_0xd949('0x11')]=_0x57f78b['countmachineretry'];this['countagentrejectretry']=_0x57f78b[_0xd949('0x12')];this[_0xd949('0x13')]=_0x57f78b[_0xd949('0x13')];this[_0xd949('0x14')]=_0x57f78b[_0xd949('0x15')];this[_0xd949('0x16')]=_0x57f78b[_0xd949('0x17')];this['starttime']=_0x57f78b['starttime'];this['responsetime']=_0x57f78b[_0xd949('0x18')];this[_0xd949('0x19')]=_0x57f78b[_0xd949('0x18')];this[_0xd949('0x1a')]=getSeconds(_0x57f78b[_0xd949('0x18')],_0x57f78b[_0xd949('0x1b')]);this['holdtime']=0x0;this['talktime']=0x0;this[_0xd949('0x1c')]=_0x57f78b[_0xd949('0x1c')];this['callbackuniqueid']=_0x57f78b[_0xd949('0x1d')];this[_0xd949('0x1e')]=_0x57f78b[_0xd949('0x1e')];this[_0xd949('0x1f')]=_0x57f78b[_0xd949('0x1f')];this[_0xd949('0x20')]=_0x57f78b[_0xd949('0x20')];this['ListId']=_0x57f78b[_0xd949('0x21')];this[_0xd949('0x22')]=_0x57f78b[_0xd949('0x22')];this[_0xd949('0x23')]=_0x57f78b[_0xd949('0x23')];this[_0xd949('0x24')]=_0x57f78b[_0xd949('0x24')];this['originatecalleridnum']=_0x57f78b['originatecalleridnum']||'';this[_0xd949('0x25')]=_0x57f78b[_0xd949('0x25')]||'';}module[_0xd949('0x26')]=History;
\ No newline at end of file
index 3631838..b386428 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x949d=['[checkIsBlackList]\x20','checkIsBlackListIvr','[checkIsBlackListIvr]\x20','averageHandleTime','[averageHandleTime]\x20','rescheduleContact','[rescheduleContact]\x20','unlockContact','[unlockContact]\x20','getContactDialer','temp','[getContactDialer]\x20','getContactDialerIvr','[getContactDialerIvr]\x20','getVoiceQueueRtPauses','[getVoiceQueueRtPauses]\x20','moveContactManagedDialer','[moveContactManagedDialer]\x20','createHistory','[createHistory]\x20','[updateOriginated]\x20object\x20originated\x20is\x20negative','[updateOriginated]\x20is\x20null\x20or\x20undefined','loggerHandler','emptyContact','notFound','pick','ContactId','ListId','UserId','CampaignId','[emptyContact][createHistory]','[emptyContact]','isSuccess','Success','isTrunkReachable','active','SIP/%s','reachable','unmonitored','saveInDb','uniqueId','uniqueid','isNil','variable','amdstatus','xcally-motion-dialer','dialAMDActive','value','HANGUP','outboundAnswerCallsDay','HangupInAMD','AMD','custom:amd','amd','[syncHangupInAMD]','MACHINE','Machine','membername','countglobal','buildObj','countbusyretry','countnoanswerretry','countnosuchnumberretry','countdropretry','countmachineretry','dialGlobalMaxRetry','dialMachineMaxRetry','createStateFinal','reason\x2019\x20machine....','add','minutes','YYYY-MM-DD\x20HH:mm:ss','VoiceQueueId','[rescheduleContact][Machine]','[syncHangupInAMDIvr][createHistory]','[syncAgentComplete][createHistory][0]','countcongestionretry','countabandonedretry','countagentrejectretry','reason19\x20machine....','ivrAnswerCallsDay','[syncHangupIvr]','dialQueueProject','AnswerAGI','AGI','cause-txt','Unknow','[syncHangupIvr][createHistory]','agent','agiafterat','dialQueueProject2','[syncAgentComplete][createHistory]','answertime','queueCallerAbandonCreateState','[syncQueueCallerAbandon]\x20[Drop]','droptime','responsetime','dialQueueTimeout','Drop','dropreason','TIMEOUT','dialDropRetryFrequency','[rescheduleContact][Drop]','starttime','calleridname','calleridnum','CALLEREXIT','dialAbandonedMaxRetry','dialAbandonedRetryFrequency','[rescheduleContact][Abandoned]','Abandoned','syncNewExten','actionid','roundrobin','stateinterface','locked','push','idHopper','paused','[unlockQueueStatus][undefined]','queueStatusComplete','run','[Catch][Preview][syncQueueStatusComplete]','queueBookedRR','_rr','length','unlockRR','[booked][RR]','Agent:\x20','contactAgent-idHopper:\x20','[booked][unlock]','[booked][unlock2]','[unlock2][syncQueueStatusComplete]','[unlock3][syncQueueStatusComplete]','syncCampaigns','checkIsTrunkReachable','TrunkBackup','checkIfTime','ifTime','\x20Intervals\x20is\x20null\x20','Failure','timezones','\x20Timezone\x20unknow\x20','isArray','command','iftime\x20%s,%s','interval','content','true','indexOf','all','some','INTERVAL_IS_OVERTIME','[ifTime][promiseAll]','\x20Interval\x20is\x20overtime:\x20','Timezone:\x20','checkDialMethod','progressive','handlePower','dialPowerLevel','Queue','method\x20not\x20recognized','launchHandleIvr','handleIvr','syncQueueSummary','dialActive','dialGlobalInterval','dialTimezone','checkIfTimeIntervals','[syncCampaigns]','\x5cw{0,','pow','random','match','actionOriginate','originate','voiceQueue\x20is\x20undefine','Contact','phone','contact\x20is\x20undefine','getCaller','\x22agi://%s/square,%s\x22','NONE','dialQueueOptions','ACTIVE','dialAMDInitialSilence','dialAMDGreeting','dialAMDAfterGreetingSilence','dialAMDTotalAnalysisTime','XMD-AMDMINWORDLENGTH','dialAMDMinWordLength','XMD-AMDBETWEENWORDSSILENCE','XMD-AMDMAXIMUMNUMBEROFWORDS','dialAMDMaximumNumberOfWords','XMD-AMDSILENCETHRESHOLD','dialAMDSilenceThreshold','dialAMDMaximumWordLength','XMD-VOICEQUEUEID','XMD-CAMPAIGNID','createdAt','updatedAt','%s%s','XMD-','toUpper','callerid','dialRandomLastDigitCallerIdNumber','XMD-ORIGINATECALLERIDNAME','originatecalleridname','XMD-ORIGINATECALLERIDNUM','originatecalleridnum','SIP/%s/%s%s','dialPrefix','trim','dialCutDigit','substring','from-sip','[originateError]:\x20%s','[originate][error]','getQueue','response','checkRetriveMax','dialNoAnswerMaxRetry','dialNoAnswerRetryFrequency','[rescheduleContact][NoAnswer]','dialBusyMaxRetry','dialBusyRetryFrequency','[rescheduleContact]\x20[Busy]','dialCongestionMaxRetry','dialCongestionRetryFrequency','[rescheduleContact]\x20[Congestion]','[rescheduleContact][NoSuchNumber]','dialDropMaxRetry','dialAgentRejectMaxRetry','dialAgentRejectRetryFrequency','[rescheduleContact][AgentReject]','[callProgressDetecting]','entity\x20is\x20undefine','object','evt\x20is\x20undefine','reason','NoSuchNumber','custom:agentnosuchnumber','nosuchnumber','dialNoSuchNumberMaxRetry','reason\x200\x20no\x20such\x20number....','NoAnswer','custom:agentnoanswer','noanswer','[syncAgentComplete][createHistory][3]','reason\x203\x20ringing\x20no\x20answer','outboundBusyCallsDay','Busy','custom:agentbusy','[syncAgentComplete][createHistory][5]','reason\x205\x20busy','Congestion','congestion','[syncAgentComplete][createHistory][8]','reason\x208\x20congestion','stateGlobal','outboundAbandonedCallsDay','[syncAgentComplete][createHistory][11]','reason\x2011\x20abandoned','outboundRejectCallsDay','AgentReject','custom:agentreject','[syncAgentComplete][createHistory][20]','reason\x2020\x20agentreject','[syncAgentComplete][createHistory][?]','Global','[moveContactManagedDialer][0]','contact\x20not\x20moved','round','predictiveIntervalMinThreshold','[startMethodPredictive][StartProgressive]','check\x20predictive\x20is\x20not\x20undefine','check\x20handlePredictive\x20is\x20not\x20undefine','collection\x20data\x20in\x20progressive\x20at','dialPredictiveInterval','dropRate','[stopMethodPredictive][ReStartProgressive][ExceededDropDay]','Dropped\x20calls\x20day','[stopMethodPredictive][ReStartProgressive][ExceededDropInterval]','Drop\x20in\x20this\x20interval','started\x20in\x20predictive\x20at','getDataPredictive','Predictive\x20after\x20first\x20interval','recalculate\x20predictive\x20at','startMethodPredictive','Predictive\x20for\x20every\x20interval',')\x20are\x20less\x20than\x20threshold\x20(','switch\x20in\x20progressive\x20because\x20available\x20agents\x20(','dialPredictiveOptimization','dialPredictiveOptimizationPercentage','agentBusyFactor','busyFactor','[getDataPredictive]','Unknown\x20Predictive','check\x20failure','getDataPredictiveOld','outboundQueuePauses','[CatchErlangB]','one\x20call\x20every:','fail\x20to\x20scheduled\x20calls','recallme','[booked][checkContactBlack]','queueStatusComplete:\x20','Queue:\x20','queuestatus','[unlockOriginate][syncQueueStatusComplete]','scheduledat','dialRecallMeTimeout','Agent','voicePause','[rescheduleContact][dialRecallInQueue]','RecallInQueue','[Originate][HistoryDialRecallInQueue][historyCatch]','RECALLFAILEDTIMEOUT','RecallFailedTimeout','[Originate][HistoryRecallClose]','BLACKLIST','Blacklist','[Originate][historyBlacklist]','[Originate][MoveBlacklist]','inBlackList','dialOrderByScheduledAt','AVAILABLE_CONTACTS_FINISHED','RUNNING','[actionOriginate]\x20','Contact.phone','[getContactCampaign2]','floor','not_inuse','[countReScheduled]\x20','checkContactBlack','[getContactDialer2]','tryOriginatePredictive','[actionOriginatePredictive]\x20','[getContactDialerPredictive]','abandonmentRate','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','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','interval\x20=\x20','----\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','Umin:\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20','[busyFactor]','Umin\x20=\x20','util','lodash','bluebird','uuid','ioredis','../preview/util/util','../../../config/logger','dialer','booked','predictive','predictiveCalls','redis','defaults','localhost','socket.io-emitter','../rpc/cmHopperHistory','../rpc/cmHopperBlack','../rpc/voiceQueueRt','./action','./final','./agentComplete','./queueCallerAbandon','./hangup','env','XCALLY_IP_AGI','127.0.0.1','rrmemory','prototype','enqueue','tail','finally','sequence','preview','voiceQueues','campaigns','agents','trunks','maxNumberOriginate','actions','contactsId','startPredictive','startProgressive','ivrOriginated','queueBooked','syncAgentConnect','bind','queuecallerabandon','syncQueueCallerAbandon','originateresponse','syncOriginateResponse','agentcomplete','syncAgentComplete','custom:queuesummary','hangup','syncHangup','newexten','varset','syncVarSet','queuemember','syncQueueMember','syncQueueStatusComplete','loopCampaigns','loopClearZombieChannels','isUndefined','name','NOT_ACTIVE','message','INTERVAL_IS_NULL','Interval','Intervals','\x20INTERVAL_IS_NULL','isEmpty','[ifTime][Action]','Error','milliseconds','diff','emit','type','outbound','strategy','answered','available','loggedIn','pTalking','sumBillable','sumDuration','sumHoldTime','talking','total','unmanaged','abandoned','waiting','loggedInDb','dialMethod','dialOriginateCallerIdName','dialOriginateCallerIdNumber','dialOriginateTimeout','outboundAnswerAgiCallsDay','outboundBlacklistCallsDay','outboundCongestionCallsDay','outboundDropCallsDayACS','outboundDropCallsDayCallersExit','outboundDropCallsDayTimeout','outboundNoAnswerCallsDay','outboundNoSuchCallsDay','outboundOriginateFailureCallsDay','outboundReCallsDay','outboundUnknownCallsDay','predictiveIntervalAnsweredCalls','predictiveIntervalAvgHoldtime','predictiveIntervalErlangCalls','predictiveIntervalErlangCallsDroppedCalls','predictiveIntervalHitRate','predictiveIntervalMultiplicativeFactor','predictiveIntervalPauses','predictiveIntervalAvailable','predictiveIntervalTotalCalls','originated','erlangCalls','erlangCallToSecond','erlangAbandonmentRate','erlangBusyFactor','Trunk','stringify','md5','format','voice:queue:%s','voice_queue:save','ivr','campaign:ivr:%s','campaign:save','info','Total\x20Calls:\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20','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','predictiveIntervalDroppedCallsCallersExit','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','predictiveIntervalAvgTalktime','---------------------------','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','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','merge','seconds','clearing\x20variable\x20start\x20progressive','clearing\x20variable\x20start\x20predictive','handlePredictive','string','\x22%s\x22\x20<%s>','\x22\x22\x20<>','error','stack','inspect','undefined','[decremetOriginate]\x20object\x20originated\x20is\x20negative','[decremetOriginate]\x20is\x20null\x20or\x20undefined','contactsRescheduled','RESCHEDULED_CONTACTS','[getContactDialer2][ReScheduled]','contacts','[getContactDialer2][Empty]','sendMessageOneNotActive','[syncQueueSummary]\x20Campaign\x20Queue:\x20','is\x20not\x20active','[syncQueueSummary]\x20Campaign\x20Ivr:\x20','IS_DISACTIVED','is\x20disactive','state','statedesc','endtime','clearZombieChannels','[uniqueid]','[actions]','Action','status','channel','catch','updateOriginated','queue','[Dialer][checkChannel]','[Dialer][checkChannel][ivr]','countReScheduled','resolve','then','checkIsBlackList'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x949d,0x162));var _0xd949=function(_0x4406e4,_0x2f71aa){_0x4406e4=_0x4406e4-0x0;var _0x5e3730=_0x949d[_0x4406e4];return _0x5e3730;};'use strict';var util=require(_0xd949('0x0'));var _=require(_0xd949('0x1'));var BPromise=require(_0xd949('0x2'));var uuid=require(_0xd949('0x3'));var moment=require('moment');var rr=require('rr');var md5=require('md5');var Redis=require(_0xd949('0x4'));var ut=require(_0xd949('0x5'));var config=require('../../../config/environment/');var logger=require(_0xd949('0x6'))(_0xd949('0x7'));var loggerBooked=require('../../../config/logger')(_0xd949('0x8'));var loggerPredictive=require(_0xd949('0x6'))(_0xd949('0x9'));var loggerPredictiveCalls=require('../../../config/logger')(_0xd949('0xa'));var loggerSyncQueueSummary=require(_0xd949('0x6'))('syncQueueSummary');var ami=require('../ami');config[_0xd949('0xb')]=_[_0xd949('0xc')](config[_0xd949('0xb')],{'host':_0xd949('0xd'),'port':0x18eb});var io=require(_0xd949('0xe'))(new Redis(config['redis']));var cmHopper=require('../rpc/cmHopper');var cmHopperHistory=require(_0xd949('0xf'));var cmHopperBlack=require(_0xd949('0x10'));var voiceQueueRt=require(_0xd949('0x11'));var Action=require(_0xd949('0x12'));var History=require('./history');var Final=require(_0xd949('0x13'));var AgentComplete=require(_0xd949('0x14'));var QueueCallerAbandon=require(_0xd949('0x15'));var Hangup=require(_0xd949('0x16'));var ipAgi=process[_0xd949('0x17')][_0xd949('0x18')]||_0xd949('0x19');var strategy={'rrmemory':_0xd949('0x1a'),'roundrobin':'roundrobin'};var Sequence=function(){};Sequence[_0xd949('0x1b')][_0xd949('0x1c')]=function(_0x3fc0bb){this[_0xd949('0x1d')]=this['tail']?this[_0xd949('0x1d')][_0xd949('0x1e')](_0x3fc0bb):_0x3fc0bb();};function Dialer(_0x3d7a02,_0x201159){this[_0xd949('0x1f')]=new Sequence();this[_0xd949('0x20')]=_0x201159;this[_0xd949('0x21')]=_0x3d7a02['voiceQueues'];this[_0xd949('0x22')]=_0x3d7a02[_0xd949('0x22')];this['agents']=_0x3d7a02[_0xd949('0x23')];this[_0xd949('0x24')]=_0x3d7a02[_0xd949('0x24')];this[_0xd949('0x25')]=config[_0xd949('0x25')]||0x2;this['channels']={};this[_0xd949('0x26')]={};this[_0xd949('0x27')]={};this['uniqueId']={};this['optionPredictive']={};this[_0xd949('0x28')]={};this[_0xd949('0x29')]={};this[_0xd949('0x2a')]={};this[_0xd949('0x2b')]={};this['queueBookedRR']={};ami['on']('agentconnect',this[_0xd949('0x2c')][_0xd949('0x2d')](this));ami['on'](_0xd949('0x2e'),this[_0xd949('0x2f')][_0xd949('0x2d')](this));ami['on'](_0xd949('0x30'),this[_0xd949('0x31')]['bind'](this));ami['on'](_0xd949('0x32'),this[_0xd949('0x33')][_0xd949('0x2d')](this));ami['on'](_0xd949('0x34'),this['syncQueueSummary'][_0xd949('0x2d')](this));ami['on'](_0xd949('0x35'),this[_0xd949('0x36')][_0xd949('0x2d')](this));ami['on'](_0xd949('0x37'),this['syncNewExten']['bind'](this));ami['on'](_0xd949('0x38'),this[_0xd949('0x39')]['bind'](this));ami['on'](_0xd949('0x3a'),this[_0xd949('0x3b')]['bind'](this));ami['on']('queuestatuscomplete',this[_0xd949('0x3c')][_0xd949('0x2d')](this));this[_0xd949('0x3d')]();this[_0xd949('0x3e')]();}function isNotNull(_0x5e7c01){return _0x5e7c01!==null&&!_[_0xd949('0x3f')](_0x5e7c01);}function checkIsLoggedIn(_0x5f4d45,_0x3c729b){return function(){if(_0x3c729b<=0x0){_0x5f4d45['message']='AGENTS_NOT_LOGGED';throw _0x5f4d45[_0xd949('0x40')]+'\x20AGENTS\x20NOT\x20LOGGED';}};}function isActive(_0x991a4c){return _0x991a4c;}function checkIsActive(_0x3fde6a,_0x50c8d4){return function(){if(!isActive(_0x50c8d4)){_0x3fde6a['message']=_0xd949('0x41');throw _0x3fde6a[_0xd949('0x40')]+'\x20NOT\x20Active';}};}function checkInterval(_0x40f827){return function(){if(!isNotNull(_0x40f827['Interval'])){_0x40f827[_0xd949('0x42')]=_0xd949('0x43');throw _0x40f827['name']+'\x20INTERVAL_IS_NULL';}if(!isNotNull(_0x40f827[_0xd949('0x44')][_0xd949('0x45')])){_0x40f827[_0xd949('0x42')]=_0xd949('0x43');throw _0x40f827[_0xd949('0x40')]+_0xd949('0x46');}if(!isNotNull(_[_0xd949('0x47')](_0x40f827[_0xd949('0x44')][_0xd949('0x45')]))){_0x40f827[_0xd949('0x42')]=_0xd949('0x43');throw _0x40f827[_0xd949('0x40')]+_0xd949('0x46');}};}function msgResponse(_0xa3034a,_0x5745bc,_0x25d4fa){return{'action':_0xa3034a,'response':_0x5745bc,'message':_0x25d4fa,'stack':_0x25d4fa};}function myreject(_0x1a112e){return function(_0x3e49c5){return _0x1a112e(msgResponse(_0xd949('0x48'),_0xd949('0x49'),JSON['stringify'](_0x3e49c5)));};}function getSeconds(_0x5557f4,_0x4331e3){var _0xf39140=moment(_0x5557f4)[_0xd949('0x4a')](0x0);var _0x1c6677=moment(_0x4331e3)[_0xd949('0x4a')](0x0);return _0xf39140[_0xd949('0x4b')](_0x1c6677,'seconds');}function emit(_0x49f68c,_0x2279e7,_0x4cd509){io['to'](_0x49f68c)[_0xd949('0x4c')](_0x2279e7,_0x4cd509);}function emitVoiceQueueSummary(_0x319bad){if(_0x319bad[_0xd949('0x4d')]===_0xd949('0x4e')){var _0x64a235={'id':_0x319bad['id'],'name':_0x319bad[_0xd949('0x40')],'strategy':_0x319bad[_0xd949('0x4f')],'answered':_0x319bad[_0xd949('0x50')],'available':_0x319bad[_0xd949('0x51')],'loggedIn':_0x319bad[_0xd949('0x52')],'pTalking':_0x319bad[_0xd949('0x53')],'sumBillable':_0x319bad[_0xd949('0x54')],'sumDuration':_0x319bad[_0xd949('0x55')],'sumHoldTime':_0x319bad[_0xd949('0x56')]||0x0,'talking':_0x319bad[_0xd949('0x57')],'total':_0x319bad[_0xd949('0x58')],'type':_0x319bad[_0xd949('0x4d')],'unmanaged':_0x319bad[_0xd949('0x59')],'abandoned':_0x319bad[_0xd949('0x5a')],'waiting':_0x319bad[_0xd949('0x5b')],'loggedInDb':_0x319bad[_0xd949('0x5c')],'dialActive':_0x319bad['dialActive'],'dialMethod':_0x319bad[_0xd949('0x5d')],'dialOriginateCallerIdName':_0x319bad[_0xd949('0x5e')],'dialOriginateCallerIdNumber':_0x319bad[_0xd949('0x5f')],'dialOriginateTimeout':_0x319bad[_0xd949('0x60')],'dialPrefix':_0x319bad['dialPrefix'],'outboundAnswerAgiCallsDay':_0x319bad[_0xd949('0x61')],'outboundAnswerCallsDay':_0x319bad['outboundAnswerCallsDay'],'outboundBlacklistCallsDay':_0x319bad[_0xd949('0x62')],'outboundBusyCallsDay':_0x319bad['outboundBusyCallsDay'],'outboundCongestionCallsDay':_0x319bad[_0xd949('0x63')],'outboundDropCallsDayACS':_0x319bad[_0xd949('0x64')],'outboundDropCallsDayCallersExit':_0x319bad[_0xd949('0x65')],'outboundDropCallsDayTimeout':_0x319bad[_0xd949('0x66')],'outboundNoAnswerCallsDay':_0x319bad[_0xd949('0x67')],'outboundNoSuchCallsDay':_0x319bad[_0xd949('0x68')],'outboundOriginateFailureCallsDay':_0x319bad[_0xd949('0x69')],'outboundReCallsDay':_0x319bad[_0xd949('0x6a')],'outboundRejectCallsDay':_0x319bad['outboundRejectCallsDay'],'outboundUnknownCallsDay':_0x319bad[_0xd949('0x6b')],'predictiveIntervalAnsweredCalls':_0x319bad[_0xd949('0x6c')],'predictiveIntervalAvgHoldtime':_0x319bad[_0xd949('0x6d')],'predictiveIntervalAvgTalktime':_0x319bad['predictiveIntervalAvgTalktime'],'predictiveIntervalDroppedCallsCallersExit':_0x319bad['predictiveIntervalDroppedCallsCallersExit'],'predictiveIntervalDroppedCallsTimeout':_0x319bad['predictiveIntervalDroppedCallsTimeout'],'predictiveIntervalErlangCalls':_0x319bad[_0xd949('0x6e')],'predictiveIntervalErlangCallsDroppedCalls':_0x319bad[_0xd949('0x6f')],'predictiveIntervalHitRate':_0x319bad[_0xd949('0x70')],'predictiveIntervalMultiplicativeFactor':_0x319bad[_0xd949('0x71')],'predictiveIntervalPauses':_0x319bad[_0xd949('0x72')],'predictiveIntervalAvailable':_0x319bad[_0xd949('0x73')],'predictiveIntervalTotalCalls':_0x319bad[_0xd949('0x74')],'message':_0x319bad[_0xd949('0x42')],'originated':_0x319bad[_0xd949('0x75')],'erlangCalls':_0x319bad[_0xd949('0x76')],'erlangCallToSecond':_0x319bad[_0xd949('0x77')],'erlangAbandonmentRate':_0x319bad[_0xd949('0x78')],'erlangBusyFactor':_0x319bad[_0xd949('0x79')],'startPredictive':_0x319bad[_0xd949('0x28')],'startProgressive':_0x319bad[_0xd949('0x29')]};if(_0x319bad[_0xd949('0x7a')]){_0x64a235[_0xd949('0x7a')]={'id':_0x319bad['Trunk']['id'],'name':_0x319bad[_0xd949('0x7a')]['name'],'active':_0x319bad[_0xd949('0x7a')]['active'],'callerid':_0x319bad[_0xd949('0x7a')]['callerid']};}if(_0x319bad[_0xd949('0x44')]){_0x64a235['Interval']={'id':_0x319bad[_0xd949('0x44')]['id'],'name':_0x319bad[_0xd949('0x44')][_0xd949('0x40')]};}var _0x320541=md5(JSON[_0xd949('0x7b')](_0x64a235));if(_0x319bad['md5']!==_0x320541){_0x319bad[_0xd949('0x7c')]=_0x320541;emit(util[_0xd949('0x7d')](_0xd949('0x7e'),_0x64a235[_0xd949('0x40')]),_0xd949('0x7f'),_0x64a235);}}}function emitCampaignSummary(_0x326c35){if(_0x326c35[_0xd949('0x4d')]===_0xd949('0x80')){emit(util['format'](_0xd949('0x81'),_0x326c35[_0xd949('0x40')]),_0xd949('0x82'),_0x326c35);}}function checkGetDataPredictive(_0x55db8c){if(isNotNull(_0x55db8c)&&!_['isEmpty'](_0x55db8c)){loggerPredictive[_0xd949('0x83')]('-----\x20Stats\x20Predictive\x20---');loggerPredictive[_0xd949('0x83')](_0xd949('0x84'),_0x55db8c['predictiveIntervalTotalCalls']);loggerPredictive[_0xd949('0x83')](_0xd949('0x85'),_0x55db8c['predictiveIntervalAnsweredCalls']);loggerPredictive[_0xd949('0x83')](_0xd949('0x86'),_0x55db8c[_0xd949('0x87')]);loggerPredictive[_0xd949('0x83')](_0xd949('0x88'),_0x55db8c[_0xd949('0x89')]);loggerPredictive[_0xd949('0x83')](_0xd949('0x8a'),_0x55db8c[_0xd949('0x6d')]);loggerPredictive[_0xd949('0x83')](_0xd949('0x8b'),_0x55db8c[_0xd949('0x8c')]);loggerPredictive[_0xd949('0x83')](_0xd949('0x8d'));if(_0x55db8c[_0xd949('0x74')]>0x0){if(!_['isUndefined'](_0x55db8c['predictiveIntervalAvgTalktime'])&&_0x55db8c[_0xd949('0x8c')]>0x0){return!![];}loggerPredictive[_0xd949('0x83')](_0xd949('0x8e'));if(!_[_0xd949('0x3f')](_0x55db8c[_0xd949('0x6d')])&&_0x55db8c[_0xd949('0x6d')]>0x0){return!![];}loggerPredictive[_0xd949('0x83')](_0xd949('0x8f'));}else{loggerPredictive[_0xd949('0x83')](_0xd949('0x90'));}}else{loggerPredictive['info'](_0xd949('0x91'));}return![];}function mergeDataErlangB(_0xc91e86){return function(_0x9d2f98){loggerPredictive['info'](_0xd949('0x92'));loggerPredictive[_0xd949('0x83')](_0xd949('0x93'),_0x9d2f98[_0xd949('0x76')]);loggerPredictive['info'](_0xd949('0x94'),_0x9d2f98[_0xd949('0x77')]);loggerPredictive[_0xd949('0x83')](_0xd949('0x95'),_0x9d2f98[_0xd949('0x78')]);loggerPredictive['info']('Agent\x20Busy\x20Factor:\x20\x20\x20\x20\x20\x20\x20\x20\x20',_0x9d2f98[_0xd949('0x79')]);loggerPredictive[_0xd949('0x83')](_0xd949('0x95'),_0x9d2f98[_0xd949('0x78')]);loggerPredictive['info']('---------------------------');_[_0xd949('0x96')](_0xc91e86,_0x9d2f98);};}function getDiff(_0x3394d3){var _0x396d47=moment()[_0xd949('0x4a')](0x0);var _0x15d206=moment(_0x3394d3)[_0xd949('0x4a')](0x0);return _0x396d47[_0xd949('0x4b')](_0x15d206,_0xd949('0x97'));}function ifInterval(_0xb76023,_0x25a514){if(_[_0xd949('0x3f')](_0x25a514)){return![];}return getDiff(_0x25a514)<_0xb76023*0x3c;}function freeVariablesPredictive(_0xf2cec7){if(isNotNull(_0xf2cec7)){if(!_['isUndefined'](_0xf2cec7[_0xd949('0x29')])){_0xf2cec7[_0xd949('0x29')]=undefined;loggerPredictive['info'](_0xf2cec7[_0xd949('0x40')],_0xd949('0x98'));}if(!_[_0xd949('0x3f')](_0xf2cec7['startPredictive'])){_0xf2cec7[_0xd949('0x28')]=undefined;loggerPredictive[_0xd949('0x83')](_0xf2cec7[_0xd949('0x40')],_0xd949('0x99'));}if(!_[_0xd949('0x3f')](_0xf2cec7[_0xd949('0x9a')])){clearInterval(_0xf2cec7[_0xd949('0x9a')]);_0xf2cec7[_0xd949('0x9a')]=undefined;loggerPredictive[_0xd949('0x83')](_0xf2cec7[_0xd949('0x40')],'clearing\x20variable\x20handle\x20predictive');}}}function erlangb(_0x2b35f4,_0x20f9c8){if(_0x20f9c8===0x0){return 0x0;}var _0x487636=0x1;for(var _0x582666=0x1;_0x582666<=_0x20f9c8;_0x582666+=0x1){_0x487636=0x1+_0x487636*_0x582666/_0x2b35f4;}return 0x1/_0x487636;}function isVoiceQueueOutbound(_0x2d0976){return _0x2d0976===_0xd949('0x4e');}function isNotPreview(_0x7c0a70){return _0x7c0a70!==_0xd949('0x20');}function isCampaignIvr(_0x55a1ff){return _0x55a1ff===_0xd949('0x80');}function getCallerId(_0x10deab,_0x34b7ea,_0x1d20de){if(!_[_0xd949('0x3f')](_0x1d20de)&&typeof _0x1d20de==='string'&&!_[_0xd949('0x47')](_0x1d20de)){if(!_[_0xd949('0x3f')](_0x34b7ea)&&typeof _0x34b7ea===_0xd949('0x9b')&&!_['isEmpty'](_0x34b7ea)){return util['format'](_0xd949('0x9c'),_0x34b7ea,_0x1d20de);}return util[_0xd949('0x7d')](_0xd949('0x9c'),_0x1d20de,_0x1d20de);}if(!_[_0xd949('0x3f')](_0x10deab)&&typeof _0x10deab===_0xd949('0x9b')&&!_[_0xd949('0x47')](_0x10deab)){return _0x10deab;}return _0xd949('0x9d');}function loggerCatchQueueSummary(_0x2a36dd,_0x5ce6ac){return function(_0x3c82a3){freeVariablesPredictive(_0x5ce6ac);emitVoiceQueueSummary(_0x5ce6ac);emitCampaignSummary(_0x5ce6ac);loggerSyncQueueSummary[_0xd949('0x9e')](_0x2a36dd,util['inspect'](_0x3c82a3,{'showHidden':![],'depth':null}));};}function loggerCatchPredictive(_0x46408c,_0x5af7a5){return function(_0x25f0e3){loggerPredictive[_0xd949('0x9e')](_0x5af7a5['name'],_0x46408c);loggerPredictive[_0xd949('0x9e')](_0x25f0e3[_0xd949('0x9f')]);freeVariablesPredictive(_0x5af7a5);};}function loggerCatch(_0x188823){return function(_0x43cd33){logger[_0xd949('0x9e')](_0x188823,util[_0xd949('0xa0')](_0x43cd33,{'showHidden':![],'depth':null}));};}function checkContactEmpty(_0x56801f){return _0x56801f&&!_['isUndefined'](_0x56801f)&&_0x56801f['length']>0x0;}function decremetOriginate(_0x3498e){if(!_['isUndefined'](_0x3498e)&&_0x3498e!==null){if(typeof _0x3498e[_0xd949('0x75')]!==_0xd949('0xa1')){if(_0x3498e[_0xd949('0x75')]>0x0){_0x3498e[_0xd949('0x75')]-=0x1;}else{logger[_0xd949('0x9e')](_0xd949('0xa2'));}}}else{logger[_0xd949('0x9e')](_0xd949('0xa3'));}}function checkContactLowerLimitOriginate(_0x2d9a01,_0x1e739d,_0x110440){if(_0x1e739d>_0x110440){for(var _0x2801d6=0x0;_0x2801d6<_0x1e739d-_0x110440;_0x2801d6+=0x1){decremetOriginate(_0x2d9a01);}}}function loggerGetContactDialer(_0x54daba,_0x14bf3b,_0x2a409d){return function(_0x3b48bf){checkContactLowerLimitOriginate(_0x14bf3b,_0x2a409d,0x0);logger[_0xd949('0x9e')](_0x54daba,util[_0xd949('0xa0')](_0x3b48bf,{'showHidden':![],'depth':null}));};}function sendMessageReschedule(_0x4ddcc5){return function(_0xee8314){if(isNotNull(_0xee8314)&&isNotNull(_0xee8314[0x0])){if(_0xee8314[0x0][_0xd949('0xa4')]>0x0){_0x4ddcc5[_0xd949('0x42')]=_0xd949('0xa5');logger[_0xd949('0x83')](_0xd949('0xa6')+_0x4ddcc5[_0xd949('0x40')],_0xee8314[0x0][_0xd949('0xa4')],_0xd949('0xa7'));}else{_0x4ddcc5[_0xd949('0x42')]='AVAILABLE_CONTACTS_FINISHED';logger[_0xd949('0x83')](_0xd949('0xa8')+_0x4ddcc5[_0xd949('0x40')]);}}};}function notSendMessagesQueue(_0x1551a3){if(_0x1551a3[_0xd949('0xa9')]){freeVariablesPredictive(_0x1551a3);if(_0x1551a3[_0xd949('0x75')]===0x0&&_0x1551a3[_0xd949('0x57')]===0x0&&_0x1551a3[_0xd949('0x5b')]===0x0&&(_0x1551a3[_0xd949('0x53')]||0x0)===0x0){_0x1551a3[_0xd949('0xa9')]=![];_0x1551a3[_0xd949('0x51')]=0x0;_0x1551a3['message']=_0xd949('0x41');loggerSyncQueueSummary['error'](_0xd949('0xaa'),_0x1551a3[_0xd949('0x40')],_0xd949('0xab'));}else{_0x1551a3[_0xd949('0x42')]='IS_DISACTIVED';loggerSyncQueueSummary[_0xd949('0x9e')]('[syncQueueSummary]\x20Campaign\x20Queue:\x20',_0x1551a3['name'],'is\x20disactive');}emitVoiceQueueSummary(_0x1551a3);}}function notSendMessagesCampaign(_0xeb2ee){if(_0xeb2ee['sendMessageOneNotActive']){if(_0xeb2ee[_0xd949('0x75')]===0x0){_0xeb2ee[_0xd949('0xa9')]=![];_0xeb2ee['message']=_0xd949('0x41');loggerSyncQueueSummary['error'](_0xd949('0xac'),_0xeb2ee[_0xd949('0x40')],_0xd949('0xab'));}else{_0xeb2ee[_0xd949('0x42')]=_0xd949('0xad');loggerSyncQueueSummary[_0xd949('0x9e')](_0xd949('0xac'),_0xeb2ee[_0xd949('0x40')],_0xd949('0xae'));}emitCampaignSummary(_0xeb2ee);}}function createObjHistory(_0x23d39a,_0x2c4b16,_0x158426,_0x57e228,_0x35d1a5){_0x23d39a['message']=_0x158426;var _0x421f67=new Action(_0x23d39a,_0x2c4b16);var _0x5a24a7=new History(_0x421f67);_0x5a24a7[_0xd949('0xaf')]=_0x57e228;_0x5a24a7[_0xd949('0xb0')]=_0x35d1a5;_0x5a24a7[_0xd949('0xb1')]=_0x421f67['starttime'];return _0x5a24a7;}Dialer[_0xd949('0x1b')][_0xd949('0x3e')]=function(){var _0x2a2517=this;setInterval(function(){_0x2a2517[_0xd949('0xb2')](_0x2a2517['uniqueId'],_0xd949('0xb3'));_0x2a2517[_0xd949('0xb2')](_0x2a2517['actions'],_0xd949('0xb4'));},0x32c8);};Dialer[_0xd949('0x1b')][_0xd949('0xb2')]=function(_0x5e1d02,_0x22484b){var _0x523193=this;for(var _0x5e92e7 in _0x5e1d02){if(typeof _0x5e1d02[_0x5e92e7]!==_0xd949('0xa1')){this[_0xd949('0x1f')][_0xd949('0x1c')](function(){if(!_['isNil'](_0x5e1d02[_0x5e92e7])){return ami[_0xd949('0xb5')]({'action':_0xd949('0xb6'),'channel':_0x5e1d02[_0x5e92e7][_0xd949('0xb7')]})[_0xd949('0xb8')](function(_0x4200a2){if(_0x4200a2[_0xd949('0x42')]==='No\x20such\x20channel'){setTimeout(function(){if(_0x5e1d02[_0x5e92e7]&&_0x5e1d02[_0x5e92e7][_0xd949('0x4d')]!==_0xd949('0x80')){_0x523193[_0xd949('0xb9')](_0x523193[_0xd949('0x21')][_0x5e1d02[_0x5e92e7][_0xd949('0xba')]]);logger[_0xd949('0x9e')](_0xd949('0xbb'),_0x22484b,_0x5e92e7,_0x5e1d02[_0x5e92e7][_0xd949('0xba')]);delete _0x5e1d02[_0x5e92e7];}if(_0x5e1d02[_0x5e92e7]&&_0x5e1d02[_0x5e92e7]['type']===_0xd949('0x80')){_0x523193[_0xd949('0xb9')](_0x523193[_0xd949('0x22')][_0x5e1d02[_0x5e92e7]['queue']]);logger[_0xd949('0x9e')](_0xd949('0xbc'),_0x22484b,_0x5e92e7,_0x5e1d02[_0x5e92e7][_0xd949('0xba')]);delete _0x5e1d02[_0x5e92e7];}},0x2328);}});}});}}};Dialer[_0xd949('0x1b')][_0xd949('0xbd')]=function(_0x37a183){return BPromise[_0xd949('0xbe')]()[_0xd949('0xbf')](cmHopper[_0xd949('0xbd')](_0x37a183))[_0xd949('0xb8')](loggerCatch('[countReScheduled]\x20'));};Dialer['prototype'][_0xd949('0xc0')]=function(_0x4b0b41){return BPromise[_0xd949('0xbe')]()[_0xd949('0xbf')](cmHopperBlack[_0xd949('0xc0')](_0x4b0b41))[_0xd949('0xb8')](loggerCatch(_0xd949('0xc1')));};Dialer[_0xd949('0x1b')][_0xd949('0xc2')]=function(_0x487c11){return BPromise[_0xd949('0xbe')]()['then'](cmHopperBlack[_0xd949('0xc2')](_0x487c11))[_0xd949('0xb8')](loggerCatch(_0xd949('0xc3')));};Dialer['prototype'][_0xd949('0xc4')]=function(_0x3fba39){return BPromise[_0xd949('0xbe')]()['then'](cmHopperHistory['avgHandleTime'](_0x3fba39))['catch'](loggerCatch(_0xd949('0xc5')));};Dialer['prototype']['rescheduleContact']=function(_0x3a93e1){return BPromise[_0xd949('0xbe')]()[_0xd949('0xbf')](cmHopper[_0xd949('0xc6')](_0x3a93e1))['catch'](loggerCatch(_0xd949('0xc7')));};Dialer[_0xd949('0x1b')][_0xd949('0xc8')]=function(_0x38c2d3,_0x2cfe57,_0x32b68c){return BPromise[_0xd949('0xbe')]()[_0xd949('0xbf')](cmHopper[_0xd949('0xc8')](_0x38c2d3,_0x2cfe57,_0x32b68c))[_0xd949('0xb8')](loggerCatch(_0xd949('0xc9')));};Dialer[_0xd949('0x1b')][_0xd949('0xca')]=function(_0xdbd204,_0x35d9f1,_0x102a7f,_0x283d0d,_0x49c97c){return BPromise[_0xd949('0xbe')]()[_0xd949('0xbf')](cmHopper['getContactDialer'](_0xdbd204,_0x35d9f1,_0x102a7f,_0x283d0d))[_0xd949('0xb8')](function(_0x2992fc){_0x49c97c['temp']-=_0x102a7f;_0x49c97c[_0xd949('0xcb')]=_0x49c97c[_0xd949('0xcb')]>0x0?_0x49c97c[_0xd949('0xcb')]:0x0;loggerCatch(_0xd949('0xcc'))(_0x2992fc);});};Dialer[_0xd949('0x1b')][_0xd949('0xcd')]=function(_0x5de67e,_0xb8ed64,_0x13f5cd,_0x3d3a71){return BPromise[_0xd949('0xbe')]()[_0xd949('0xbf')](cmHopper['getContactDialerIvr'](_0x5de67e,_0xb8ed64,_0x13f5cd))[_0xd949('0xb8')](function(_0x3491ab){_0x3d3a71[_0xd949('0xcb')]-=_0xb8ed64;_0x3d3a71[_0xd949('0xcb')]=_0x3d3a71[_0xd949('0xcb')]>0x0?_0x3d3a71[_0xd949('0xcb')]:0x0;loggerCatch(_0xd949('0xce'))(_0x3491ab);});};Dialer['prototype'][_0xd949('0xcf')]=function(_0x40342a){return BPromise[_0xd949('0xbe')]()[_0xd949('0xbf')](voiceQueueRt[_0xd949('0xcf')](_0x40342a))['catch'](loggerCatch(_0xd949('0xd0')));};Dialer[_0xd949('0x1b')][_0xd949('0xd1')]=function(_0x4a1855){return BPromise['resolve']()['then'](cmHopper[_0xd949('0xd1')](_0x4a1855))[_0xd949('0xb8')](loggerCatch(_0xd949('0xd2')));};Dialer[_0xd949('0x1b')][_0xd949('0xd3')]=function(_0x43c053){return BPromise[_0xd949('0xbe')]()[_0xd949('0xbf')](cmHopperHistory['createHistory'](_0x43c053))[_0xd949('0xb8')](loggerCatch(_0xd949('0xd4')));};Dialer[_0xd949('0x1b')][_0xd949('0xb9')]=function(_0x457385){if(!_['isUndefined'](_0x457385)&&_0x457385!==null){if(typeof _0x457385['originated']!=='undefined'){if(_0x457385[_0xd949('0x75')]>0x0){_0x457385[_0xd949('0x75')]-=0x1;}else{logger['error'](_0xd949('0xd5'));}}}else{logger[_0xd949('0x9e')](_0xd949('0xd6'));}};Dialer[_0xd949('0x1b')][_0xd949('0xd7')]=function(_0x38016d,_0x26bb8a){var _0x4e5f2d=this;return function(_0x1bb2d5){_0x4e5f2d[_0xd949('0xb9')](_0x26bb8a);logger['error'](_0x38016d,util[_0xd949('0xa0')](_0x1bb2d5,{'showHidden':![],'depth':null}));};};Dialer[_0xd949('0x1b')][_0xd949('0xd8')]=function(_0x8d43d2,_0x158224,_0x512af3){var _0x567d3d={'state':0x19,'statedesc':_0xd949('0xd9')};this['updateOriginated'](_0x158224);this['saveInDb'](_[_0xd949('0x96')](_0x567d3d,_[_0xd949('0xda')](_0x512af3,[_0xd949('0xdb'),_0xd949('0xdc'),_0xd949('0xdd'),'VoiceQueueId',_0xd949('0xde')])),_0xd949('0xdf'),_0xd949('0xe0'));logger['error'](_0x8d43d2);};Dialer['prototype'][_0xd949('0xe1')]=function(_0x1c411b){return _0x1c411b===_0xd949('0xe2');};Dialer[_0xd949('0x1b')][_0xd949('0xe3')]=function(_0x3b7735){return!_[_0xd949('0x3f')](_0x3b7735)&&_0x3b7735&&!_[_0xd949('0x3f')](_0x3b7735[_0xd949('0x40')])&&!_[_0xd949('0x3f')](_0x3b7735[_0xd949('0xe4')])&&_0x3b7735['active']&&(this[_0xd949('0x24')][util[_0xd949('0x7d')](_0xd949('0xe5'),_0x3b7735[_0xd949('0x40')])][_0xd949('0xb6')]===_0xd949('0xe6')||this[_0xd949('0x24')][util[_0xd949('0x7d')](_0xd949('0xe5'),_0x3b7735[_0xd949('0x40')])]['status']===_0xd949('0xe7'));};Dialer[_0xd949('0x1b')][_0xd949('0xe8')]=function(_0x1207f0,_0x11936a,_0x38620c){this['createHistory'](_0x1207f0)['catch'](loggerCatch(_0x11936a));this[_0xd949('0xd1')](_0x1207f0)[_0xd949('0xb8')](loggerCatch(_0x38620c));};Dialer[_0xd949('0x1b')][_0xd949('0x39')]=function(_0x17a511){var _0x266d0a=this[_0xd949('0xe9')][_0x17a511[_0xd949('0xea')]];var _0x276c84;if(!_[_0xd949('0xeb')](_0x17a511)&&!_[_0xd949('0xeb')](_0x17a511[_0xd949('0xec')])&&!_[_0xd949('0xeb')](_0x17a511[_0xd949('0xec')][_0xd949('0xed')])&&_0x17a511['exten']===_0xd949('0xee')&&_0x266d0a){if(_0x266d0a[_0xd949('0x4d')]!==_0xd949('0x80')&&this[_0xd949('0x21')][_0x266d0a[_0xd949('0xba')]][_0xd949('0xef')]&&_0x17a511[_0xd949('0xf0')]===_0xd949('0xf1')){delete this[_0xd949('0xe9')][_0x17a511[_0xd949('0xea')]];this[_0xd949('0xb9')](this[_0xd949('0x21')][_0x266d0a['queue']]);this[_0xd949('0x21')][_0x266d0a['queue']][_0xd949('0xf2')]+=0x1;this[_0xd949('0x21')][_0x266d0a[_0xd949('0xba')]][_0xd949('0x61')]+=0x1;_0x276c84=new Hangup(_0x266d0a,_0x17a511);_0x276c84['state']=0x12;_0x276c84[_0xd949('0xb0')]=_0xd949('0xf3');_0x276c84['membername']=_0xd949('0xf4');ami[_0xd949('0x4c')](_0xd949('0xf5'),ut['buildObj'](_0x276c84,_0xd949('0xf6')));this[_0xd949('0xe8')](_0x276c84,'[syncHangupInAMD][createHistory]',_0xd949('0xf7'));}if(_0x266d0a[_0xd949('0x4d')]!=='ivr'&&this[_0xd949('0x21')][_0x266d0a[_0xd949('0xba')]][_0xd949('0xef')]&&_0x17a511[_0xd949('0xf0')]===_0xd949('0xf8')){var _0x3e6603=this;return new BPromise(function(_0x23791e,_0x1afa77){delete _0x3e6603[_0xd949('0xe9')][_0x17a511[_0xd949('0xea')]];_0x3e6603[_0xd949('0xb9')](_0x3e6603[_0xd949('0x21')][_0x266d0a[_0xd949('0xba')]]);_0x3e6603[_0xd949('0x21')][_0x266d0a[_0xd949('0xba')]][_0xd949('0xf2')]+=0x1;_0x3e6603[_0xd949('0x21')][_0x266d0a[_0xd949('0xba')]][_0xd949('0x61')]+=0x1;var _0x2d34da=_0x3e6603['voiceQueues'][_0x266d0a[_0xd949('0xba')]];var _0x143d3c=new Hangup(_0x266d0a,_0x17a511);_0x143d3c['state']=0x13;_0x143d3c[_0xd949('0xb0')]=_0xd949('0xf9');_0x143d3c[_0xd949('0xfa')]='AMD';_0x143d3c['countmachineretry']+=0x1;_0x143d3c[_0xd949('0xfb')]+=0x1;_0x143d3c['amd']=!![];ami['emit']('custom:amd',ut[_0xd949('0xfc')](_0x143d3c,'amd'));_0x3e6603['createHistory'](_0x143d3c)[_0xd949('0xb8')](loggerCatch('[syncAgentComplete][createHistory][0]'));if(_0x143d3c[_0xd949('0xfd')]+_0x143d3c['countcongestionretry']+_0x143d3c[_0xd949('0xfe')]+_0x143d3c[_0xd949('0xff')]+_0x143d3c[_0xd949('0x100')]+_0x143d3c['countabandonedretry']+_0x143d3c[_0xd949('0x101')]+_0x143d3c['countagentrejectretry']>=_0x2d34da[_0xd949('0x102')]){_0x3e6603['stateGlobal'](_0x143d3c,_0x23791e,_0x1afa77,'reason19\x20machine....');}else{if(_0x143d3c[_0xd949('0x101')]>=_0x2d34da[_0xd949('0x103')]){_0x3e6603[_0xd949('0x104')](_0x143d3c,_0x23791e,_0x1afa77,_0xd949('0x105'));}else{_0x3e6603[_0xd949('0xc6')]({'active':![],'countmachineretry':_0x143d3c[_0xd949('0x101')],'scheduledat':moment()[_0xd949('0x106')](_0x2d34da['dialMachineRetryFrequency'],_0xd949('0x107'))[_0xd949('0x7d')](_0xd949('0x108')),'ContactId':_0x143d3c[_0xd949('0xdb')],'ListId':_0x143d3c['ListId'],'VoiceQueueId':_0x143d3c[_0xd949('0x109')]||undefined,'CampaignId':_0x143d3c['CampaignId']||undefined})[_0xd949('0xb8')](loggerCatch(_0xd949('0x10a')));_0x23791e({'reschedule':0x1});}}});}if(_0x266d0a[_0xd949('0x4d')]===_0xd949('0x80')&&this[_0xd949('0x22')][_0x266d0a[_0xd949('0xba')]]['dialAMDActive']&&_0x17a511[_0xd949('0xf0')]===_0xd949('0xf1')){delete this[_0xd949('0xe9')][_0x17a511[_0xd949('0xea')]];this[_0xd949('0xb9')](this[_0xd949('0x22')][_0x266d0a[_0xd949('0xba')]]);_0x276c84=new Hangup(_0x266d0a,_0x17a511);_0x276c84['state']=0x12;_0x276c84['statedesc']=_0xd949('0xf3');_0x276c84[_0xd949('0xfa')]=_0xd949('0xf4');ami['emit'](_0xd949('0xf5'),ut[_0xd949('0xfc')](_0x276c84,_0xd949('0xf6')));this[_0xd949('0xe8')](_0x276c84,_0xd949('0x10b'),'[syncHangupInAMDIvr]');}if(_0x266d0a[_0xd949('0x4d')]==='ivr'&&this[_0xd949('0x22')][_0x266d0a[_0xd949('0xba')]][_0xd949('0xef')]&&_0x17a511[_0xd949('0xf0')]==='MACHINE'){var _0x3e6603=this;return new BPromise(function(_0x2342a7,_0xb33ae8){delete _0x3e6603['uniqueId'][_0x17a511[_0xd949('0xea')]];_0x3e6603[_0xd949('0xb9')](_0x3e6603[_0xd949('0x22')][_0x266d0a[_0xd949('0xba')]]);_0x3e6603[_0xd949('0x22')][_0x266d0a[_0xd949('0xba')]][_0xd949('0xf2')]+=0x1;_0x3e6603[_0xd949('0x22')][_0x266d0a[_0xd949('0xba')]][_0xd949('0x61')]+=0x1;var _0x5e00f2=_0x3e6603[_0xd949('0x22')][_0x266d0a[_0xd949('0xba')]];var _0x4ec09f=new Hangup(_0x266d0a,_0x17a511);_0x4ec09f['state']=0x13;_0x4ec09f[_0xd949('0xb0')]=_0xd949('0xf9');_0x4ec09f['membername']='AMD';_0x4ec09f[_0xd949('0x101')]+=0x1;_0x4ec09f[_0xd949('0xfb')]+=0x1;_0x4ec09f[_0xd949('0xf6')]=!![];ami[_0xd949('0x4c')](_0xd949('0xf5'),ut[_0xd949('0xfc')](_0x4ec09f,_0xd949('0xf6')));_0x3e6603[_0xd949('0xd3')](_0x4ec09f)['catch'](loggerCatch(_0xd949('0x10c')));if(_0x4ec09f[_0xd949('0xfd')]+_0x4ec09f[_0xd949('0x10d')]+_0x4ec09f[_0xd949('0xfe')]+_0x4ec09f[_0xd949('0xff')]+_0x4ec09f[_0xd949('0x100')]+_0x4ec09f[_0xd949('0x10e')]+_0x4ec09f[_0xd949('0x101')]+_0x4ec09f[_0xd949('0x10f')]>=_0x5e00f2['dialGlobalMaxRetry']){_0x3e6603['stateGlobal'](_0x4ec09f,_0x2342a7,_0xb33ae8,_0xd949('0x110'));}else{if(_0x4ec09f[_0xd949('0x101')]>=_0x5e00f2[_0xd949('0x103')]){_0x3e6603['createStateFinal'](_0x4ec09f,_0x2342a7,_0xb33ae8,_0xd949('0x105'));}else{_0x3e6603['rescheduleContact']({'active':![],'countmachineretry':_0x4ec09f['countmachineretry'],'scheduledat':moment()[_0xd949('0x106')](_0x5e00f2['dialMachineRetryFrequency'],_0xd949('0x107'))[_0xd949('0x7d')]('YYYY-MM-DD\x20HH:mm:ss'),'ContactId':_0x4ec09f[_0xd949('0xdb')],'ListId':_0x4ec09f[_0xd949('0xdc')],'VoiceQueueId':_0x4ec09f[_0xd949('0x109')]||undefined,'CampaignId':_0x4ec09f[_0xd949('0xde')]||undefined})[_0xd949('0xb8')](loggerCatch(_0xd949('0x10a')));_0x2342a7({'reschedule':0x1});}}});}}};Dialer[_0xd949('0x1b')][_0xd949('0x36')]=function(_0x364f7f){var _0x30983a=this['uniqueId'][_0x364f7f[_0xd949('0xea')]];var _0x17fe16=this;var _0x3f6c75;if(_0x30983a&&_0x30983a[_0xd949('0x4d')]===_0xd949('0x80')){delete this['uniqueId'][_0x364f7f[_0xd949('0xea')]];this['updateOriginated'](this['campaigns'][_0x30983a[_0xd949('0xba')]]);this[_0xd949('0x22')][_0x30983a['queue']][_0xd949('0x111')]+=0x1;_0x3f6c75=new Hangup(_0x30983a,_0x364f7f);this[_0xd949('0xd3')](_0x3f6c75)[_0xd949('0xb8')](loggerCatch('[syncHangupIvr][createHistory]'));this['moveContactManagedDialer'](_0x3f6c75)[_0xd949('0xb8')](loggerCatch(_0xd949('0x112')));}if(_0x30983a&&_0x30983a[_0xd949('0x4d')]!==_0xd949('0x80')&&isNotNull(this[_0xd949('0x21')][_0x30983a[_0xd949('0xba')]][_0xd949('0x113')])){delete this[_0xd949('0xe9')][_0x364f7f[_0xd949('0xea')]];this[_0xd949('0xb9')](this[_0xd949('0x21')][_0x30983a['queue']]);this[_0xd949('0x21')][_0x30983a[_0xd949('0xba')]][_0xd949('0xf2')]+=0x1;this[_0xd949('0x21')][_0x30983a['queue']][_0xd949('0x61')]+=0x1;_0x3f6c75=new Hangup(_0x30983a,_0x364f7f);_0x3f6c75[_0xd949('0xaf')]=0x10;_0x3f6c75[_0xd949('0xb0')]=_0xd949('0x114');_0x3f6c75[_0xd949('0xfa')]=_0xd949('0x115');this[_0xd949('0xd3')](_0x3f6c75)['catch'](loggerCatch('[syncHangupIvr][createHistory]'));this[_0xd949('0xd1')](_0x3f6c75)[_0xd949('0xb8')](loggerCatch(_0xd949('0x112')));}if(_0x30983a&&_0x30983a[_0xd949('0x4d')]!=='ivr'&&!isNotNull(this[_0xd949('0x21')][_0x30983a[_0xd949('0xba')]][_0xd949('0x113')])){delete this[_0xd949('0xe9')][_0x364f7f[_0xd949('0xea')]];this['updateOriginated'](this[_0xd949('0x21')][_0x30983a[_0xd949('0xba')]]);this[_0xd949('0x21')][_0x30983a[_0xd949('0xba')]][_0xd949('0x6b')]+=0x1;_0x3f6c75=new Hangup(_0x30983a,_0x364f7f);_0x3f6c75[_0xd949('0xaf')]=0xc;_0x3f6c75['statedesc']=_0x364f7f[_0xd949('0x116')];_0x3f6c75[_0xd949('0xfa')]=_0xd949('0x117');this[_0xd949('0xd3')](_0x3f6c75)[_0xd949('0xb8')](loggerCatch(_0xd949('0x118')));this['moveContactManagedDialer'](_0x3f6c75)['catch'](loggerCatch(_0xd949('0x112')));}};Dialer[_0xd949('0x1b')][_0xd949('0x33')]=function(_0xcce15c){var _0x2c5e88=this[_0xd949('0xe9')][_0xcce15c[_0xd949('0xea')]];var _0x14ffc8=this;if(this[_0xd949('0x21')][_0xcce15c[_0xd949('0xba')]]){if(_0x2c5e88&&_0x2c5e88[_0xd949('0x4d')]!=='ivr'){delete this[_0xd949('0xe9')][_0xcce15c[_0xd949('0xea')]];this[_0xd949('0x21')][_0xcce15c['queue']][_0xd949('0xf2')]+=0x1;var _0x5549f8=new AgentComplete(_0x2c5e88,_0xcce15c);if(_0xcce15c['reason']===_0xd949('0x119')){_0x5549f8[_0xd949('0x11a')]=this[_0xd949('0x21')][_0xcce15c[_0xd949('0xba')]][_0xd949('0x11b')]&&this['voiceQueues'][_0xcce15c[_0xd949('0xba')]]['dialAgiAfterHangupAgent']?moment()['format'](_0xd949('0x108')):undefined;}this[_0xd949('0xd3')](_0x5549f8)[_0xd949('0xb8')](loggerCatch(_0xd949('0x11c')));this[_0xd949('0xd1')](_0x5549f8)[_0xd949('0xb8')](loggerCatch('[syncAgentComplete]'));}}};Dialer['prototype']['syncAgentConnect']=function(_0x3e633b){if(this['voiceQueues'][_0x3e633b[_0xd949('0xba')]]){if(this[_0xd949('0xe9')][_0x3e633b['uniqueid']]&&this['uniqueId'][_0x3e633b[_0xd949('0xea')]][_0xd949('0x4d')]!==_0xd949('0x80')){this[_0xd949('0xb9')](this[_0xd949('0x21')][_0x3e633b[_0xd949('0xba')]]);this[_0xd949('0xe9')][_0x3e633b[_0xd949('0xea')]][_0xd949('0x11d')]=moment()[_0xd949('0x7d')](_0xd949('0x108'));}}};Dialer[_0xd949('0x1b')][_0xd949('0x11e')]=function(_0x543285){this[_0xd949('0xd3')](_0x543285)['catch'](loggerCatch(_0xd949('0x11c')));this[_0xd949('0xd1')](_0x543285)['catch'](loggerCatch(_0xd949('0x11f')));};Dialer['prototype'][_0xd949('0x2f')]=function(_0x3e4f5b){var _0x104e8d=this[_0xd949('0xe9')][_0x3e4f5b['uniqueid']];var _0x296826=this;if(this[_0xd949('0x21')][_0x3e4f5b['queue']]){if(_0x104e8d&&_0x104e8d[_0xd949('0x4d')]!==_0xd949('0x80')){delete this[_0xd949('0xe9')][_0x3e4f5b['uniqueid']];this[_0xd949('0xb9')](this[_0xd949('0x21')][_0x3e4f5b[_0xd949('0xba')]]);_0x104e8d[_0xd949('0x120')]=moment()[_0xd949('0x7d')]('YYYY-MM-DD\x20HH:mm:ss');var _0x5ccdc0=new QueueCallerAbandon(_0x104e8d,_0x3e4f5b);if(getSeconds(_0x104e8d[_0xd949('0x120')],_0x104e8d[_0xd949('0x121')])>=_0x104e8d[_0xd949('0x122')]){this[_0xd949('0x21')][_0x3e4f5b[_0xd949('0xba')]][_0xd949('0x87')]+=0x1;this[_0xd949('0x21')][_0x3e4f5b[_0xd949('0xba')]]['outboundDropCallsDayTimeout']+=0x1;this['voiceQueues'][_0x3e4f5b[_0xd949('0xba')]][_0xd949('0x6f')]+=0x1;_0x5ccdc0[_0xd949('0xaf')]=0xa;_0x5ccdc0[_0xd949('0xb0')]=_0xd949('0x123');_0x5ccdc0[_0xd949('0x124')]=_0xd949('0x125');_0x5ccdc0[_0xd949('0x11a')]=this[_0xd949('0x21')][_0x3e4f5b[_0xd949('0xba')]][_0xd949('0x11b')]?moment()['format'](_0xd949('0x108')):undefined;_0x5ccdc0['countdropretry']+=0x1;_0x5ccdc0[_0xd949('0xfb')]+=0x1;if(_0x5ccdc0[_0xd949('0x100')]>=this['voiceQueues'][_0x3e4f5b['queue']]['dialDropMaxRetry']){this['queueCallerAbandonCreateState'](_0x5ccdc0);}else{this[_0xd949('0xc6')]({'active':![],'countdropretry':_0x5ccdc0[_0xd949('0x100')],'scheduledat':moment()['add'](this['voiceQueues'][_0x3e4f5b[_0xd949('0xba')]][_0xd949('0x126')],_0xd949('0x107'))['format'](_0xd949('0x108')),'ContactId':_0x104e8d[_0xd949('0xdb')],'ListId':_0x104e8d[_0xd949('0xdc')],'VoiceQueueId':_0x104e8d[_0xd949('0x109')]||undefined,'CampaignId':_0x104e8d[_0xd949('0xde')]||undefined})[_0xd949('0xb8')](loggerCatch(_0xd949('0x127')));var _0x749443=new History(_0x5ccdc0);_0x749443['state']=0xa;_0x749443[_0xd949('0xb0')]=_0xd949('0x123');_0x749443[_0xd949('0x128')]=moment()[_0xd949('0x7d')](_0xd949('0x108'));_0x749443[_0xd949('0xb1')]=_0x749443[_0xd949('0x128')];_0x749443['calleridname']=_0x5ccdc0[_0xd949('0x129')];_0x749443[_0xd949('0x12a')]=_0x5ccdc0['calleridnum'];this[_0xd949('0xd3')](_0x749443)['catch'](loggerCatch('[syncAgentComplete][createHistory][10]'));}}else{this[_0xd949('0x21')][_0x3e4f5b[_0xd949('0xba')]][_0xd949('0x89')]+=0x1;this[_0xd949('0x21')][_0x3e4f5b[_0xd949('0xba')]][_0xd949('0x65')]+=0x1;_0x5ccdc0['state']=0xb;_0x5ccdc0[_0xd949('0xb0')]='Abandoned';_0x5ccdc0['dropreason']=_0xd949('0x12b');_0x5ccdc0['countabandonedretry']+=0x1;_0x5ccdc0[_0xd949('0xfb')]+=0x1;if(_0x5ccdc0['countabandonedretry']>=this[_0xd949('0x21')][_0x3e4f5b['queue']][_0xd949('0x12c')]){this[_0xd949('0x11e')](_0x5ccdc0);}else{this['rescheduleContact']({'active':![],'countabandonedretry':_0x5ccdc0['countabandonedretry'],'scheduledat':moment()['add'](this['voiceQueues'][_0x3e4f5b['queue']][_0xd949('0x12d')],_0xd949('0x107'))[_0xd949('0x7d')]('YYYY-MM-DD\x20HH:mm:ss'),'ContactId':_0x104e8d[_0xd949('0xdb')],'ListId':_0x104e8d[_0xd949('0xdc')],'VoiceQueueId':_0x104e8d['VoiceQueueId']||undefined,'CampaignId':_0x104e8d[_0xd949('0xde')]||undefined})[_0xd949('0xb8')](loggerCatch(_0xd949('0x12e')));var _0x749443=new History(_0x5ccdc0);_0x749443[_0xd949('0xaf')]=0xb;_0x749443['statedesc']=_0xd949('0x12f');_0x749443[_0xd949('0x128')]=moment()[_0xd949('0x7d')](_0xd949('0x108'));_0x749443[_0xd949('0xb1')]=_0x749443[_0xd949('0x128')];_0x749443[_0xd949('0x129')]=_0x5ccdc0[_0xd949('0x129')];_0x749443[_0xd949('0x12a')]=_0x5ccdc0[_0xd949('0x12a')];this[_0xd949('0xd3')](_0x749443)[_0xd949('0xb8')](loggerCatch('[syncAgentComplete][createHistory][11]'));}}}}};Dialer[_0xd949('0x1b')][_0xd949('0x130')]=function(_0x37cfd2){if(this[_0xd949('0x26')][_0x37cfd2['uniqueid']]){this[_0xd949('0x26')][_0x37cfd2[_0xd949('0xea')]][_0xd949('0xb7')]=_0x37cfd2[_0xd949('0xb7')];}if(this[_0xd949('0xe9')][_0x37cfd2['uniqueid']]){this[_0xd949('0xe9')][_0x37cfd2[_0xd949('0xea')]][_0xd949('0xb7')]=_0x37cfd2[_0xd949('0xb7')];}};Dialer[_0xd949('0x1b')]['syncQueueMember']=function(_0xb4176b){if(strategy[this[_0xd949('0x21')][this['actions'][_0xb4176b[_0xd949('0x131')]]['queue']][_0xd949('0x4f')]]===_0xd949('0x132')){if(this[_0xd949('0x26')][_0xb4176b[_0xd949('0x131')]]&&_['isNil'](this[_0xd949('0x26')][_0xb4176b[_0xd949('0x131')]]['locked'])&&_0xb4176b[_0xd949('0xb6')]==='1'&&_0xb4176b['paused']==='0'){if(this['agents'][_0xb4176b[_0xd949('0x133')]]){if(!this[_0xd949('0x23')][_0xb4176b[_0xd949('0x133')]]['locked']){this['agents'][_0xb4176b['stateinterface']][_0xd949('0x134')]=!![];this[_0xd949('0x26')][_0xb4176b[_0xd949('0x131')]]['locked']=!![];this['actions'][_0xb4176b[_0xd949('0x131')]][_0xd949('0x133')]=_0xb4176b[_0xd949('0x133')];}}}}else if((strategy[this[_0xd949('0x21')][this[_0xd949('0x26')][_0xb4176b[_0xd949('0x131')]][_0xd949('0xba')]][_0xd949('0x4f')]]||'rrmemory')==='rrmemory'){if(this[_0xd949('0x26')][_0xb4176b[_0xd949('0x131')]]){if(this[_0xd949('0x23')][_0xb4176b[_0xd949('0x133')]]){this[_0xd949('0x26')][_0xb4176b[_0xd949('0x131')]][_0xd949('0x133')]=_0xb4176b['stateinterface'];if(_[_0xd949('0xeb')](this['queueBooked'][this['actions'][_0xb4176b[_0xd949('0x131')]][_0xd949('0xba')]])){this[_0xd949('0x2b')][this[_0xd949('0x26')][_0xb4176b['actionid']]['queue']]=[];}this[_0xd949('0x2b')][this['actions'][_0xb4176b['actionid']]['queue']][_0xd949('0x135')](_[_0xd949('0x96')](_[_0xd949('0xda')](this['actions'][_0xb4176b[_0xd949('0x131')]],[_0xd949('0x136'),_0xd949('0x133')]),{'status':_0xb4176b[_0xd949('0xb6')],'paused':_0xb4176b[_0xd949('0x137')]}));}}}};function unlockQueueStatus(_0x2429ea,_0x222ef3){setTimeout(function(){if(_[_0xd949('0x3f')](_0x2429ea['queueStatusComplete'])){loggerBooked[_0xd949('0x9e')](_0xd949('0x138'),_0x222ef3);}_0x2429ea[_0xd949('0x139')]=!![];loggerBooked['info']('[booked][unlockQueueStatus]',_0x222ef3,JSON[_0xd949('0x7b')](_[_0xd949('0xda')](_0x2429ea,[_0xd949('0x40'),'queueStatusComplete'])));},0x1f3);}Dialer[_0xd949('0x1b')]['syncQueueStatusComplete']=function(_0x3db3c8){var _0x35339a=this;var _0x53c441=_0x35339a['voiceQueues'][_0x35339a[_0xd949('0x26')][_0x3db3c8[_0xd949('0x131')]]['queue']];if(strategy[this[_0xd949('0x21')][this[_0xd949('0x26')][_0x3db3c8[_0xd949('0x131')]]['queue']][_0xd949('0x4f')]]===_0xd949('0x132')){if(this[_0xd949('0x26')][_0x3db3c8[_0xd949('0x131')]]&&this[_0xd949('0x26')][_0x3db3c8['actionid']][_0xd949('0x133')]){this[_0xd949('0x20')][_0xd949('0x13a')](this[_0xd949('0x26')][_0x3db3c8[_0xd949('0x131')]]['idHopper'],this[_0xd949('0x26')][_0x3db3c8['actionid']][_0xd949('0x133')])[_0xd949('0xb8')](function(_0x503e09){logger[_0xd949('0x9e')](_0xd949('0x13b'),util[_0xd949('0xa0')](_0x503e09,{'showHidden':![],'depth':null}));})['finally'](function(){_0x35339a['updateOriginated'](_0x35339a[_0xd949('0x21')][_0x35339a[_0xd949('0x26')][_0x3db3c8[_0xd949('0x131')]][_0xd949('0xba')]]);_0x35339a[_0xd949('0x23')][_0x35339a[_0xd949('0x26')][_0x3db3c8['actionid']]['stateinterface']]['locked']=![];delete _0x35339a[_0xd949('0x26')][_0x3db3c8['actionid']];unlockQueueStatus(_0x53c441);});}else{this[_0xd949('0xb9')](this[_0xd949('0x21')][this[_0xd949('0x26')][_0x3db3c8[_0xd949('0x131')]][_0xd949('0xba')]]);this[_0xd949('0xc6')]({'active':![],'ContactId':this[_0xd949('0x26')][_0x3db3c8[_0xd949('0x131')]][_0xd949('0xdb')],'ListId':this[_0xd949('0x26')][_0x3db3c8[_0xd949('0x131')]]['ListId'],'VoiceQueueId':this['actions'][_0x3db3c8['actionid']][_0xd949('0x109')]||undefined,'CampaignId':this[_0xd949('0x26')][_0x3db3c8['actionid']][_0xd949('0xde')]||undefined})[_0xd949('0xb8')](loggerCatch('[unlock][syncQueueStatusComplete]'));delete this[_0xd949('0x26')][_0x3db3c8[_0xd949('0x131')]];unlockQueueStatus(_0x53c441);}}else if((strategy[this[_0xd949('0x21')][this[_0xd949('0x26')][_0x3db3c8[_0xd949('0x131')]][_0xd949('0xba')]]['strategy']]||'rrmemory')===_0xd949('0x1a')){var _0x3299b0;if(this[_0xd949('0x26')][_0x3db3c8['actionid']]&&!_['isEmpty'](this['queueBooked'][this[_0xd949('0x26')][_0x3db3c8[_0xd949('0x131')]][_0xd949('0xba')]])){if(this[_0xd949('0x13c')][_0x35339a[_0xd949('0x26')][_0x3db3c8['actionid']][_0xd949('0xba')]]){this[_0xd949('0x13c')][_0x35339a['actions'][_0x3db3c8[_0xd949('0x131')]][_0xd949('0xba')]]=this[_0xd949('0x13c')][this[_0xd949('0x26')][_0x3db3c8[_0xd949('0x131')]]['queue']]?this[_0xd949('0x13c')][this[_0xd949('0x26')][_0x3db3c8[_0xd949('0x131')]][_0xd949('0xba')]]:this[_0xd949('0x2b')][this[_0xd949('0x26')][_0x3db3c8[_0xd949('0x131')]][_0xd949('0xba')]]?this[_0xd949('0x2b')][this[_0xd949('0x26')][_0x3db3c8[_0xd949('0x131')]]['queue']][_0xd949('0x13d')]||0x0:0x0;}this[_0xd949('0x2b')][this[_0xd949('0x26')][_0x3db3c8[_0xd949('0x131')]]['queue']][_0xd949('0x13d')]=this[_0xd949('0x13c')][this[_0xd949('0x26')][_0x3db3c8[_0xd949('0x131')]][_0xd949('0xba')]];for(var _0x1cca6d=0x0;_0x1cca6d<this['queueBooked'][this[_0xd949('0x26')][_0x3db3c8['actionid']][_0xd949('0xba')]][_0xd949('0x13e')];_0x1cca6d+=0x1){_0x3299b0=rr(this['queueBooked'][this[_0xd949('0x26')][_0x3db3c8[_0xd949('0x131')]][_0xd949('0xba')]]);this[_0xd949('0x13c')][_0x35339a[_0xd949('0x26')][_0x3db3c8[_0xd949('0x131')]][_0xd949('0xba')]]=this[_0xd949('0x2b')][this['actions'][_0x3db3c8[_0xd949('0x131')]]['queue']][_0xd949('0x13d')];if(_0x3299b0[_0xd949('0xb6')]==='1'&&_0x3299b0[_0xd949('0x137')]==='0'){break;}}if(!_['isNil'](_0x3299b0)){this[_0xd949('0x23')][_0x3299b0[_0xd949('0x133')]][_0xd949('0x13f')]=_[_0xd949('0x3f')](this[_0xd949('0x23')][_0x3299b0[_0xd949('0x133')]][_0xd949('0x13f')])?!![]:this[_0xd949('0x23')][_0x3299b0[_0xd949('0x133')]][_0xd949('0x13f')];}loggerBooked[_0xd949('0x83')](_0xd949('0x140'),_0x3db3c8['actionid'],_0xd949('0x141'),JSON['stringify'](_[_0xd949('0xda')](this[_0xd949('0x23')][_0x3299b0['stateinterface']],[_0xd949('0x40'),_0xd949('0x13f')])),_0xd949('0x142'),JSON[_0xd949('0x7b')](_0x3299b0[_0xd949('0x136')]));if(!_[_0xd949('0xeb')](_0x3299b0)&&_0x3299b0[_0xd949('0xb6')]==='1'&&_0x3299b0['paused']==='0'&&this['agents'][_0x3299b0[_0xd949('0x133')]][_0xd949('0x13f')]){this[_0xd949('0x23')][_0x3299b0[_0xd949('0x133')]][_0xd949('0x13f')]=![];this['queueBooked'][_0x35339a[_0xd949('0x26')][_0x3db3c8[_0xd949('0x131')]][_0xd949('0xba')]]=[];this[_0xd949('0x20')][_0xd949('0x13a')](_0x3299b0[_0xd949('0x136')],_0x3299b0[_0xd949('0x133')])[_0xd949('0xb8')](function(_0x42f511){logger[_0xd949('0x9e')](_0xd949('0x13b'),util['inspect'](_0x42f511,{'showHidden':![],'depth':null}));})[_0xd949('0x1e')](function(){_0x35339a['updateOriginated'](_0x35339a[_0xd949('0x21')][_0x35339a[_0xd949('0x26')][_0x3db3c8[_0xd949('0x131')]][_0xd949('0xba')]]);setTimeout(function(){_0x35339a[_0xd949('0x23')][_0x3299b0['stateinterface']][_0xd949('0x13f')]=!![];loggerBooked['info']('[booked][RR][finaly]',_0x3db3c8[_0xd949('0x131')],_0xd949('0x141'),JSON[_0xd949('0x7b')](_[_0xd949('0xda')](_0x35339a[_0xd949('0x23')][_0x3299b0['stateinterface']],[_0xd949('0x40'),_0xd949('0x13f')])),_0xd949('0x142'),JSON[_0xd949('0x7b')](_0x3299b0[_0xd949('0x136')]));},0xc7);delete _0x35339a[_0xd949('0x26')][_0x3db3c8['actionid']];unlockQueueStatus(_0x53c441,_0x3db3c8[_0xd949('0x131')]);});}else{loggerBooked[_0xd949('0x83')](_0xd949('0x143'));this[_0xd949('0xb9')](this['voiceQueues'][this[_0xd949('0x26')][_0x3db3c8[_0xd949('0x131')]][_0xd949('0xba')]]);this['rescheduleContact']({'active':![],'ContactId':this[_0xd949('0x26')][_0x3db3c8[_0xd949('0x131')]][_0xd949('0xdb')],'ListId':this[_0xd949('0x26')][_0x3db3c8[_0xd949('0x131')]]['ListId'],'VoiceQueueId':this[_0xd949('0x26')][_0x3db3c8[_0xd949('0x131')]][_0xd949('0x109')]||undefined,'CampaignId':this[_0xd949('0x26')][_0x3db3c8[_0xd949('0x131')]][_0xd949('0xde')]||undefined})[_0xd949('0xb8')](loggerCatch('[unlock][syncQueueStatusComplete]'));delete this['actions'][_0x3db3c8['actionid']];unlockQueueStatus(_0x53c441);}}else{loggerBooked[_0xd949('0x83')](_0xd949('0x144'));this[_0xd949('0xb9')](this['voiceQueues'][this[_0xd949('0x26')][_0x3db3c8[_0xd949('0x131')]]['queue']]);this[_0xd949('0xc6')]({'active':![],'ContactId':this[_0xd949('0x26')][_0x3db3c8[_0xd949('0x131')]]['ContactId'],'ListId':this[_0xd949('0x26')][_0x3db3c8['actionid']]['ListId'],'VoiceQueueId':this['actions'][_0x3db3c8['actionid']][_0xd949('0x109')]||undefined,'CampaignId':this[_0xd949('0x26')][_0x3db3c8[_0xd949('0x131')]][_0xd949('0xde')]||undefined})[_0xd949('0xb8')](loggerCatch(_0xd949('0x145')));delete this[_0xd949('0x26')][_0x3db3c8[_0xd949('0x131')]];unlockQueueStatus(_0x53c441);}}else{loggerBooked[_0xd949('0x83')]('[booked][unlock3]');this[_0xd949('0xb9')](this[_0xd949('0x21')][this[_0xd949('0x26')][_0x3db3c8[_0xd949('0x131')]]['queue']]);this[_0xd949('0xc6')]({'active':![],'ContactId':this[_0xd949('0x26')][_0x3db3c8[_0xd949('0x131')]][_0xd949('0xdb')],'ListId':this[_0xd949('0x26')][_0x3db3c8[_0xd949('0x131')]][_0xd949('0xdc')],'VoiceQueueId':this[_0xd949('0x26')][_0x3db3c8['actionid']][_0xd949('0x109')]||undefined,'CampaignId':this[_0xd949('0x26')][_0x3db3c8[_0xd949('0x131')]][_0xd949('0xde')]||undefined})['catch'](loggerCatch(_0xd949('0x146')));delete this[_0xd949('0x26')][_0x3db3c8[_0xd949('0x131')]];unlockQueueStatus(_0x53c441);}};Dialer[_0xd949('0x1b')][_0xd949('0x3d')]=function(){var _0x44ee94=this;setInterval(function(){_0x44ee94[_0xd949('0x147')]();},0x3e8);};Dialer[_0xd949('0x1b')][_0xd949('0x148')]=function(_0x599320){var _0x4b2428=this;return function(){if(!_0x4b2428[_0xd949('0xe3')](_0x599320[_0xd949('0x7a')])){if(!_0x4b2428[_0xd949('0xe3')](_0x599320[_0xd949('0x149')])){_0x599320[_0xd949('0x42')]='TRUNK_IS_NOT_REACHABLE';throw _0x599320[_0xd949('0x40')]+'\x20trunk\x20is\x20not\x20reachable';}}};};Dialer['prototype'][_0xd949('0x14a')]=function(_0x4d257c,_0x2aa99d,_0x5a8add,_0x3475f1){var _0x53847c=this;return function(){var _0x2ff7c3=!![];return _0x53847c[_0xd949('0x14b')](_0x4d257c,_0x2aa99d,_0x5a8add,_0x3475f1,_0x2ff7c3);};};Dialer[_0xd949('0x1b')]['checkIfTimeIntervals']=function(_0x45ded1,_0x2df397,_0x2d7cb6,_0x51d88d){var _0x2f7b1f=this;return function(){var _0x498cdb=![];return _0x2f7b1f[_0xd949('0x14b')](_0x45ded1[_0xd949('0x45')],_0x2df397,_0x2d7cb6,_0x51d88d,_0x498cdb);};};Dialer[_0xd949('0x1b')][_0xd949('0x14b')]=function(_0x5320c8,_0x1205c4,_0x34e18e,_0x127803,_0x8d0a0d){var _0x378536=[];return new BPromise(function(_0x2b015f,_0x4f82a6){if(!isNotNull(_0x5320c8)){_0x127803[_0xd949('0x42')]=_0xd949('0x43');return _0x4f82a6(msgResponse(_0xd949('0x14b'),'Failure',_0x34e18e+_0xd949('0x14c')));}if(_['isEmpty'](_0x5320c8)){_0x127803[_0xd949('0x42')]='INTERVAL_IS_EMPTY';return _0x4f82a6(msgResponse(_0xd949('0x14b'),_0xd949('0x14d'),_0x34e18e+'\x20Intervals\x20is\x20empty\x20'));}if(_0x1205c4&&_['isUndefined'](config[_0xd949('0x14e')][_0x1205c4])){_0x127803[_0xd949('0x42')]='TIMEZONE_UNKNOW';return _0x4f82a6(msgResponse('ifTime',_0xd949('0x14d'),_0x34e18e+_0xd949('0x14f')+_0x1205c4));}if(_[_0xd949('0x150')](_0x5320c8)){for(var _0x108091=0x0;_0x108091<_0x5320c8[_0xd949('0x13e')];_0x108091+=0x1){_0x378536[_0xd949('0x135')](ami[_0xd949('0xb5')]({'action':_0xd949('0x151'),'command':util[_0xd949('0x7d')](_0xd949('0x152'),_0x5320c8[_0x108091][_0xd949('0x153')],!_[_0xd949('0x3f')](config[_0xd949('0x14e')][_0x1205c4])?_0x1205c4:'')})[_0xd949('0xbf')](function(_0x488179){return _0x488179[_0xd949('0x154')]['indexOf'](_0xd949('0x155'))>=0x0;})[_0xd949('0xb8')](myreject(_0x4f82a6)));}}else{_0x378536[_0xd949('0x135')](ami[_0xd949('0xb5')]({'action':_0xd949('0x151'),'command':util['format'](_0xd949('0x152'),_0x5320c8,!_[_0xd949('0x3f')](config[_0xd949('0x14e')][_0x1205c4])?_0x1205c4:'')})[_0xd949('0xbf')](function(_0x1c159f){return _0x1c159f[_0xd949('0x154')][_0xd949('0x156')](_0xd949('0x155'))>=0x0;})[_0xd949('0xb8')](myreject(_0x4f82a6)));}BPromise[_0xd949('0x157')](_0x378536)[_0xd949('0xbf')](function(_0x4b7acc){var _0x7ede63=_[_0xd949('0x158')](_0x4b7acc);if(_0x7ede63){return _0x2b015f(_0x7ede63);}else{_0x127803[_0xd949('0x42')]=_0x8d0a0d?'GLOBAL_INTERVAL_IS_OVERTIME':_0xd949('0x159');return _0x4f82a6(msgResponse(_0xd949('0x15a'),_0xd949('0x14d'),'Global:\x20'+_0x8d0a0d+'\x20'+_0x34e18e+_0xd949('0x15b')+util['inspect'](_0x5320c8,{'showHidden':![],'depth':null})+_0xd949('0x15c')+_0x1205c4));}})['catch'](function(_0x248ef4){return _0x4f82a6(msgResponse('ifTime','Failure',JSON['stringify'](_0x248ef4)));});});};Dialer[_0xd949('0x1b')][_0xd949('0x15d')]=function(_0x12c176){var _0x345e28=this;return function(){switch(_0x12c176[_0xd949('0x5d')]){case _0xd949('0x15e'):freeVariablesPredictive(_0x12c176);_0x345e28['handlePower'](_0x12c176,0x1);break;case'power':freeVariablesPredictive(_0x12c176);_0x345e28[_0xd949('0x15f')](_0x12c176,_0x12c176[_0xd949('0x160')]);break;case'predictive':_0x345e28[_0xd949('0x9')](_0x12c176);break;case _0xd949('0x8'):freeVariablesPredictive(_0x12c176);_0x345e28[_0xd949('0x15f')](_0x12c176,0x1);break;default:freeVariablesPredictive(_0x12c176);logger[_0xd949('0x9e')](_0xd949('0x161'),_0x12c176[_0xd949('0x40')],_0xd949('0x162'));}};};Dialer[_0xd949('0x1b')][_0xd949('0x163')]=function(_0x4aad72){var _0x555f64=this;return function(){_0x555f64[_0xd949('0x164')](_0x4aad72);};};Dialer['prototype'][_0xd949('0x165')]=function(_0x2ffeba){var _0x6ca7cd=this;if(isNotPreview(_0x2ffeba[_0xd949('0x5d')])){if(isVoiceQueueOutbound(_0x2ffeba[_0xd949('0x4d')])&&isActive(_0x2ffeba[_0xd949('0x166')])){_0x2ffeba[_0xd949('0xa9')]=!![];BPromise[_0xd949('0xbe')]()[_0xd949('0xbf')](checkIsLoggedIn(_0x2ffeba,_0x2ffeba[_0xd949('0x52')]))[_0xd949('0xbf')](checkIsActive(_0x2ffeba,_0x2ffeba[_0xd949('0x166')]))[_0xd949('0xbf')](checkInterval(_0x2ffeba))[_0xd949('0xbf')](_0x6ca7cd[_0xd949('0x148')](_0x2ffeba))[_0xd949('0xbf')](_0x6ca7cd['checkIfTime'](_0x2ffeba[_0xd949('0x167')],_0x2ffeba[_0xd949('0x168')],_0x2ffeba['name'],_0x2ffeba))[_0xd949('0xbf')](_0x6ca7cd[_0xd949('0x169')](_0x2ffeba[_0xd949('0x44')],_0x2ffeba[_0xd949('0x168')],_0x2ffeba[_0xd949('0x40')],_0x2ffeba))['then'](_0x6ca7cd[_0xd949('0x15d')](_0x2ffeba))[_0xd949('0xb8')](loggerCatchQueueSummary('[syncQueueSummary]',_0x2ffeba));}else{notSendMessagesQueue(_0x2ffeba);}}else{freeVariablesPredictive(_0x2ffeba);}};Dialer[_0xd949('0x1b')]['syncCampaigns']=function(){var _0x73892c=this;var _0x3f7c2e;for(var _0x3f2a32 in this[_0xd949('0x22')]){if(typeof this[_0xd949('0x22')][_0x3f2a32]!==_0xd949('0xa1')){_0x3f7c2e=this[_0xd949('0x22')][_0x3f2a32];if(isCampaignIvr(_0x3f7c2e[_0xd949('0x4d')])&&isActive(_0x3f7c2e[_0xd949('0xe4')])){_0x3f7c2e[_0xd949('0xa9')]=!![];BPromise[_0xd949('0xbe')]()[_0xd949('0xbf')](checkIsActive(_0x3f7c2e,_0x3f7c2e[_0xd949('0xe4')]))[_0xd949('0xbf')](checkInterval(_0x3f7c2e))[_0xd949('0xbf')](_0x73892c[_0xd949('0x148')](_0x3f7c2e))[_0xd949('0xbf')](_0x73892c['checkIfTime'](_0x3f7c2e['dialGlobalInterval'],_0x3f7c2e[_0xd949('0x168')],_0x3f7c2e[_0xd949('0x40')],_0x3f7c2e))['then'](_0x73892c[_0xd949('0x169')](_0x3f7c2e[_0xd949('0x44')],_0x3f7c2e[_0xd949('0x168')],_0x3f7c2e[_0xd949('0x40')],_0x3f7c2e))[_0xd949('0xbf')](_0x73892c[_0xd949('0x163')](_0x3f7c2e))[_0xd949('0xb8')](loggerCatchQueueSummary(_0xd949('0x16a'),_0x3f7c2e));}else{notSendMessagesCampaign(_0x3f7c2e);}}}};function getCallerIdRandom(_0x45ec0a,_0x204e72){var _0x4ed7a6;var _0xe12ef0;var _0x1f89d1;if(_0x204e72<=0x0){_0x204e72=0x1;}_0x4ed7a6=new RegExp(_0xd949('0x16b')+_0x204e72+'}$');_0xe12ef0=Math[_0xd949('0x16c')](0xa,_0x204e72-0x1);_0x1f89d1=Math[_0xd949('0x16c')](0xa,_0x204e72)-0x1;return util[_0xd949('0x7d')]('%s',_['replace'](_0x45ec0a,_0x4ed7a6,_[_0xd949('0x16d')](_0xe12ef0,_0x1f89d1)));}function extractCalleridName(_0x37f2ab){var _0x57864f=_0x37f2ab['match'](/"(.*?)"/);return _0x57864f?_0x57864f[0x1]:_0x37f2ab;}function extractCalleridNumber(_0x4a8f16){var _0x58ca65=_0x4a8f16[_0xd949('0x16e')](/<(.*?)>/);return _0x58ca65?_0x58ca65[0x1]:_0x4a8f16;}Dialer[_0xd949('0x1b')][_0xd949('0x16f')]=function(_0x544c98,_0x463798){var _0x54bb08=this;var _0x5ce183=uuid['v4']();this[_0xd949('0x26')][_0x5ce183]=new Action(_0x544c98,_0x463798,_0x5ce183);return new BPromise(function(_0x3272cb,_0x387d24){if(_['isUndefined'](_0x544c98)&&typeof _0x544c98!=='object'){return _0x387d24(msgResponse(_0xd949('0x170'),_0xd949('0x14d'),_0xd949('0x171')));}if(_['isUndefined'](_0x463798[_0xd949('0x172')][_0xd949('0x173')])||_0x463798[_0xd949('0x172')][_0xd949('0x173')]===null){return _0x387d24(msgResponse(_0xd949('0x170'),_0xd949('0x14d'),_0xd949('0x174')));}var _0xe4259e={'XMD-CALLERID':_0x54bb08[_0xd949('0x26')][_0x5ce183][_0xd949('0x175')](),'XMD-AGI':_0x544c98['dialQueueProject']?util[_0xd949('0x7d')](_0xd949('0x176'),ipAgi,_0x544c98['dialQueueProject']):_0xd949('0x177'),'XMD-AGIAFTER':_0x544c98[_0xd949('0x11b')]?util[_0xd949('0x7d')]('\x22agi://%s/square,%s\x22',ipAgi,_0x544c98[_0xd949('0x11b')]):'NONE','XMD-QUEUE':_0x544c98['type']===_0xd949('0x4e')?util[_0xd949('0x7d')]('\x22%s,%s%s,,,%s\x22',_0x544c98['name'],_0x544c98[_0xd949('0x178')]||'',_0x544c98['dialAgiAfterHangupAgent']?'c':'',_0x544c98[_0xd949('0x122')]||0x3):_0xd949('0x177'),'XMD-CONTACTID':_0x463798[_0xd949('0xdb')],'XMD-CDRTYPE':_0xd949('0x7'),'CALLERID(all)':_0x54bb08['actions'][_0x5ce183][_0xd949('0x175')](),'XMD-AMD':_0x544c98[_0xd949('0xef')]?_0xd949('0x179'):_0xd949('0x177'),'XMD-DESTINATION':'xcally-motion-dialer'};if(_0x544c98[_0xd949('0xef')]){_0xe4259e['XMD-AMDINITIALSILENCE']=_0x544c98[_0xd949('0x17a')]||0x9c4;_0xe4259e['XMD-AMDGREETING']=_0x544c98[_0xd949('0x17b')]||0x5dc;_0xe4259e['XMD-AMDAFTERGREETINGSILENCE']=_0x544c98[_0xd949('0x17c')]||0x320;_0xe4259e['XMD-AMDTOTALANALYSISTIME']=_0x544c98[_0xd949('0x17d')]||0x1388;_0xe4259e[_0xd949('0x17e')]=_0x544c98[_0xd949('0x17f')]||0x64;_0xe4259e[_0xd949('0x180')]=_0x544c98['dialAMDBetweenWordsSilence']||0x32;_0xe4259e[_0xd949('0x181')]=_0x544c98[_0xd949('0x182')]||0x3;_0xe4259e[_0xd949('0x183')]=_0x544c98[_0xd949('0x184')]||0x100;_0xe4259e['XMD-AMDMAXIMUMWORDLENGTH']=_0x544c98[_0xd949('0x185')]||0x1388;}if(_0x544c98[_0xd949('0x4d')]===_0xd949('0x4e')){_0xe4259e[_0xd949('0x186')]=_0x463798[_0xd949('0x109')];}else{_0xe4259e[_0xd949('0x187')]=_0x463798[_0xd949('0xde')];}for(var _0x31dc4b in _0x463798['Contact']){if(typeof _0x463798[_0xd949('0x172')][_0x31dc4b]!==_0xd949('0xa1')){if(isNotNull(_0x463798[_0xd949('0x172')][_0x31dc4b])&&_0x31dc4b!=='id'&&_0x31dc4b!=='tags'&&_0x31dc4b!==_0xd949('0x188')&&_0x31dc4b!==_0xd949('0x189')){_0xe4259e[util[_0xd949('0x7d')](_0xd949('0x18a'),_0xd949('0x18b'),_[_0xd949('0x18c')](_0x31dc4b))]=_0x463798['Contact'][_0x31dc4b];}}}var _0x54e628=_0x54bb08[_0xd949('0xe3')](_0x544c98[_0xd949('0x7a')])?getCallerId(_0x544c98[_0xd949('0x7a')][_0xd949('0x18d')],_0x544c98[_0xd949('0x5e')],_0x544c98['dialRandomLastDigitCallerIdNumber']>0x0?getCallerIdRandom(_0x544c98['dialOriginateCallerIdNumber'],_0x544c98[_0xd949('0x18e')]):_0x544c98[_0xd949('0x5f')]):getCallerId(_[_0xd949('0xeb')](_0x544c98[_0xd949('0x149')])?_0x544c98[_0xd949('0x7a')][_0xd949('0x18d')]:_0x544c98[_0xd949('0x149')][_0xd949('0x18d')],_0x544c98[_0xd949('0x5e')],_0x544c98[_0xd949('0x18e')]>0x0?getCallerIdRandom(_0x544c98[_0xd949('0x5f')],_0x544c98[_0xd949('0x18e')]):_0x544c98[_0xd949('0x5f')]);if(_0x54e628){_0xe4259e[_0xd949('0x18f')]=_0x54bb08[_0xd949('0x26')][_0x5ce183][_0xd949('0x190')]=extractCalleridName(_0x54e628);_0xe4259e[_0xd949('0x191')]=_0x54bb08[_0xd949('0x26')][_0x5ce183][_0xd949('0x192')]=extractCalleridNumber(_0x54e628);}return ami[_0xd949('0xb5')]({'actionid':_0x5ce183,'action':_0xd949('0x170'),'channel':_0x54bb08[_0xd949('0xe3')](_0x544c98['Trunk'])?util[_0xd949('0x7d')](_0xd949('0x193'),_0x544c98[_0xd949('0x7a')][_0xd949('0x40')],isNotNull(_0x544c98[_0xd949('0x194')])?_0x544c98[_0xd949('0x194')][_0xd949('0x195')]()||'':'',_0x544c98[_0xd949('0x196')]>0x0?_0x463798['Contact'][_0xd949('0x173')][_0xd949('0x197')](_0x544c98[_0xd949('0x196')]):_0x463798[_0xd949('0x172')][_0xd949('0x173')]):util[_0xd949('0x7d')](_0xd949('0x193'),_['isNil'](_0x544c98[_0xd949('0x149')])?_0x544c98[_0xd949('0x7a')][_0xd949('0x40')]:_0x544c98[_0xd949('0x149')][_0xd949('0x40')],isNotNull(_0x544c98[_0xd949('0x194')])?_0x544c98[_0xd949('0x194')]['trim']()||'':'',_0x544c98[_0xd949('0x196')]>0x0?_0x463798[_0xd949('0x172')][_0xd949('0x173')][_0xd949('0x197')](_0x544c98[_0xd949('0x196')]):_0x463798['Contact'][_0xd949('0x173')]),'callerid':_0x54e628,'Exten':_0xd949('0xee'),'Context':_0xd949('0x198'),'Priority':'1','variable':_0xe4259e,'timeout':(_0x544c98[_0xd949('0x60')]||0x1e)*0x3e8,'async':!![],'channelid':_0x5ce183})[_0xd949('0xbf')](function(_0x371461){return _0x3272cb(_0x371461);})[_0xd949('0xb8')](function(_0x5d88f5){_0x544c98[_0xd949('0x69')]+=0x1;var _0x537881=new History(_0x54bb08[_0xd949('0x26')][_0x5ce183]);logger[_0xd949('0x9e')](util[_0xd949('0x7d')](_0xd949('0x199'),JSON[_0xd949('0x7b')](_0x5d88f5)));_0x537881['state']=0xe;_0x537881['statedesc']='OriginateError';_0x537881[_0xd949('0x128')]=moment()[_0xd949('0x7d')](_0xd949('0x108'));_0x537881[_0xd949('0xb1')]=_0x537881[_0xd949('0x128')];_0x54bb08[_0xd949('0xd3')](_0x537881)[_0xd949('0xb8')](loggerCatch(_0xd949('0x19a')));_0x54bb08[_0xd949('0xd1')](_0x537881)[_0xd949('0xb8')](loggerCatch(_0xd949('0x19a')))[_0xd949('0x1e')](function(){delete _0x54bb08[_0xd949('0x26')][_0x5ce183];return _0x387d24(msgResponse(_0xd949('0x170'),_0xd949('0x49'),'originate\x20action\x20Error'));});});});};Dialer[_0xd949('0x1b')][_0xd949('0x31')]=function(_0x2790f8){var _0x1a596e=this['actions'][_0x2790f8[_0xd949('0x131')]];if(_0x1a596e){delete this[_0xd949('0x26')][_0x2790f8[_0xd949('0x131')]];_0x1a596e[_0xd949('0x121')]=moment()[_0xd949('0x7d')](_0xd949('0x108'));var _0x418e76=_0x1a596e[_0xd949('0x4d')]===_0xd949('0x80')?this[_0xd949('0x22')][_0x1a596e['queue']]:this[_0xd949('0x21')][_0x1a596e[_0xd949('0x19b')]()];if(!this[_0xd949('0xe1')](_0x2790f8[_0xd949('0x19c')])){this[_0xd949('0xb9')](_0x418e76);return this['callProgressDetecting'](_0x1a596e,_0x418e76,_0x2790f8)[_0xd949('0xb8')](loggerCatch('[callProgressDetecting]\x20'));}this[_0xd949('0xe9')][_0x2790f8[_0xd949('0xea')]]=_0x1a596e;}};Dialer[_0xd949('0x1b')][_0xd949('0x19d')]=function(_0x1ebbfc,_0x20aaab,_0x2bcb04){var _0x91502d=new History(_0x20aaab);if(_0x91502d[_0xd949('0xfd')]+_0x91502d[_0xd949('0x10d')]+_0x91502d[_0xd949('0xfe')]+_0x91502d['countnosuchnumberretry']+_0x91502d[_0xd949('0x100')]+_0x91502d['countabandonedretry']+_0x91502d[_0xd949('0x101')]+_0x91502d[_0xd949('0x10f')]>=_0x2bcb04[_0xd949('0x102')]-0x1){return!![];}switch(_0x1ebbfc){case 0x3:if(_0x91502d[_0xd949('0xfe')]>=_0x2bcb04[_0xd949('0x19e')]-0x1){return!![];}this['rescheduleContact']({'active':![],'countnoanswerretry':_0x91502d['countnoanswerretry']+=0x1,'scheduledat':moment()[_0xd949('0x106')](_0x2bcb04[_0xd949('0x19f')],_0xd949('0x107'))[_0xd949('0x7d')](_0xd949('0x108')),'ContactId':_0x91502d[_0xd949('0xdb')],'ListId':_0x91502d[_0xd949('0xdc')],'VoiceQueueId':_0x91502d[_0xd949('0x109')]||undefined,'CampaignId':_0x91502d[_0xd949('0xde')]||undefined})[_0xd949('0xb8')](loggerCatch(_0xd949('0x1a0')));break;case 0x5:if(_0x91502d[_0xd949('0xfd')]>=_0x2bcb04[_0xd949('0x1a1')]-0x1){return!![];}this[_0xd949('0xc6')]({'active':![],'countbusyretry':_0x91502d['countbusyretry']+=0x1,'scheduledat':moment()['add'](_0x2bcb04[_0xd949('0x1a2')],_0xd949('0x107'))[_0xd949('0x7d')](_0xd949('0x108')),'ContactId':_0x91502d[_0xd949('0xdb')],'ListId':_0x91502d['ListId'],'VoiceQueueId':_0x91502d[_0xd949('0x109')]||undefined,'CampaignId':_0x91502d[_0xd949('0xde')]||undefined})[_0xd949('0xb8')](loggerCatch(_0xd949('0x1a3')));break;case 0x8:if(_0x91502d['countcongestionretry']>=_0x2bcb04[_0xd949('0x1a4')]-0x1){return!![];}this[_0xd949('0xc6')]({'active':![],'countcongestionretry':_0x91502d[_0xd949('0x10d')]+=0x1,'scheduledat':moment()['add'](_0x2bcb04[_0xd949('0x1a5')],_0xd949('0x107'))[_0xd949('0x7d')](_0xd949('0x108')),'ContactId':_0x91502d[_0xd949('0xdb')],'ListId':_0x91502d[_0xd949('0xdc')],'VoiceQueueId':_0x91502d[_0xd949('0x109')]||undefined,'CampaignId':_0x91502d['CampaignId']||undefined})['catch'](loggerCatch(_0xd949('0x1a6')));break;case 0x0:if(_0x91502d[_0xd949('0xff')]>=_0x2bcb04['dialNoSuchNumberMaxRetry']-0x1){return!![];}else{this[_0xd949('0xc6')]({'active':![],'countnosuchnumberretry':_0x91502d['countnosuchnumberretry']+=0x1,'scheduledat':moment()[_0xd949('0x106')](_0x2bcb04['dialNoSuchNumberRetryFrequency'],'minutes')[_0xd949('0x7d')](_0xd949('0x108')),'ContactId':_0x91502d[_0xd949('0xdb')],'ListId':_0x91502d[_0xd949('0xdc')],'VoiceQueueId':_0x91502d[_0xd949('0x109')]||undefined,'CampaignId':_0x91502d[_0xd949('0xde')]||undefined})[_0xd949('0xb8')](loggerCatch(_0xd949('0x1a7')));}break;case 0xa:if(_0x91502d[_0xd949('0x100')]>=_0x2bcb04[_0xd949('0x1a8')]-0x1){return!![];}this[_0xd949('0xc6')]({'active':![],'countdropretry':_0x91502d[_0xd949('0x100')]+=0x1,'scheduledat':moment()[_0xd949('0x106')](_0x2bcb04[_0xd949('0x126')],_0xd949('0x107'))[_0xd949('0x7d')]('YYYY-MM-DD\x20HH:mm:ss'),'ContactId':_0x91502d[_0xd949('0xdb')],'ListId':_0x91502d[_0xd949('0xdc')],'VoiceQueueId':_0x91502d[_0xd949('0x109')]||undefined,'CampaignId':_0x91502d[_0xd949('0xde')]||undefined})[_0xd949('0xb8')](loggerCatch('[rescheduleContact][Drop]'));break;case 0xb:if(_0x91502d[_0xd949('0x10e')]>=_0x2bcb04[_0xd949('0x12c')]-0x1){return!![];}this[_0xd949('0xc6')]({'active':![],'countabandonedretry':_0x91502d[_0xd949('0x10e')]+=0x1,'scheduledat':moment()[_0xd949('0x106')](_0x2bcb04[_0xd949('0x12d')],_0xd949('0x107'))[_0xd949('0x7d')](_0xd949('0x108')),'ContactId':_0x91502d[_0xd949('0xdb')],'ListId':_0x91502d['ListId'],'VoiceQueueId':_0x91502d[_0xd949('0x109')]||undefined,'CampaignId':_0x91502d['CampaignId']||undefined})[_0xd949('0xb8')](loggerCatch(_0xd949('0x12e')));break;case 0x13:if(_0x91502d[_0xd949('0x101')]>=_0x2bcb04['dialMachineMaxRetry']-0x1){return!![];}this[_0xd949('0xc6')]({'active':![],'countmachineretry':_0x91502d['countmachineretry']+=0x1,'scheduledat':moment()['add'](_0x2bcb04['dialMachineRetryFrequency'],_0xd949('0x107'))[_0xd949('0x7d')](_0xd949('0x108')),'ContactId':_0x91502d[_0xd949('0xdb')],'ListId':_0x91502d[_0xd949('0xdc')],'VoiceQueueId':_0x91502d[_0xd949('0x109')]||undefined,'CampaignId':_0x91502d[_0xd949('0xde')]||undefined})[_0xd949('0xb8')](loggerCatch('[rescheduleContact][Machine]'));break;case 0x14:if(_0x91502d['countagentrejectretry']>=_0x2bcb04[_0xd949('0x1a9')]-0x1){return!![];}this['rescheduleContact']({'active':![],'countagentrejectretry':_0x91502d[_0xd949('0x10f')]+=0x1,'scheduledat':moment()[_0xd949('0x106')](_0x2bcb04[_0xd949('0x1aa')],_0xd949('0x107'))[_0xd949('0x7d')]('YYYY-MM-DD\x20HH:mm:ss'),'ContactId':_0x91502d['ContactId'],'ListId':_0x91502d[_0xd949('0xdc')],'VoiceQueueId':_0x91502d[_0xd949('0x109')]||undefined,'CampaignId':_0x91502d[_0xd949('0xde')]||undefined})[_0xd949('0xb8')](loggerCatch(_0xd949('0x1ab')));break;default:return!![];}};Dialer[_0xd949('0x1b')]['callProgressDetecting']=function(_0x24f957,_0x343477,_0x28972f){var _0x32490e=this;var _0x4554db=new History(_0x24f957);return new BPromise(function(_0x179bbd,_0x291a75){if(_['isUndefined'](_0x343477)&&typeof _0x343477!=='object'){return _0x291a75(msgResponse(_0xd949('0x1ac'),_0xd949('0x14d'),_0xd949('0x1ad')));}if(_[_0xd949('0x3f')](_0x28972f)&&typeof _0x28972f!==_0xd949('0x1ae')){return _0x291a75(msgResponse(_0xd949('0x1ac'),_0xd949('0x14d'),_0xd949('0x1af')));}switch(_0x28972f[_0xd949('0x1b0')]){case'0':_0x343477[_0xd949('0x68')]+=0x1;_0x4554db[_0xd949('0xaf')]=0x0;_0x4554db[_0xd949('0xb0')]=_0xd949('0x1b1');_0x4554db['countnosuchnumberretry']+=0x1;_0x4554db[_0xd949('0xfb')]+=0x1;ami['emit'](_0xd949('0x1b2'),ut[_0xd949('0xfc')](_0x24f957,_0xd949('0x1b3')));_0x32490e['createHistory'](_0x4554db)[_0xd949('0xb8')](loggerCatch(_0xd949('0x10c')));if(_0x32490e[_0xd949('0x19d')](0x0,_0x24f957,_0x343477)){if(_0x4554db[_0xd949('0xff')]>=_0x343477[_0xd949('0x1b4')]){_0x32490e[_0xd949('0x104')](_0x4554db,_0x179bbd,_0x291a75,_0xd949('0x1b5'));}else{_0x32490e['stateGlobal'](_0x4554db,_0x179bbd,_0x291a75,_0xd949('0x1b5'));}}break;case'3':_0x343477[_0xd949('0x67')]+=0x1;_0x4554db[_0xd949('0xaf')]=0x3;_0x4554db[_0xd949('0xb0')]=_0xd949('0x1b6');_0x4554db[_0xd949('0xfe')]+=0x1;_0x4554db['countglobal']+=0x1;ami[_0xd949('0x4c')](_0xd949('0x1b7'),ut[_0xd949('0xfc')](_0x24f957,_0xd949('0x1b8')));_0x32490e[_0xd949('0xd3')](_0x4554db)[_0xd949('0xb8')](loggerCatch(_0xd949('0x1b9')));if(_0x32490e[_0xd949('0x19d')](0x3,_0x24f957,_0x343477)){if(_0x4554db[_0xd949('0xfe')]>=_0x343477[_0xd949('0x19e')]){_0x32490e['createStateFinal'](_0x4554db,_0x179bbd,_0x291a75,'reason\x203\x20ringing\x20no\x20answer');}else{_0x32490e['stateGlobal'](_0x4554db,_0x179bbd,_0x291a75,_0xd949('0x1ba'));}}break;case'5':_0x343477[_0xd949('0x1bb')]+=0x1;_0x4554db[_0xd949('0xaf')]=0x5;_0x4554db['statedesc']=_0xd949('0x1bc');_0x4554db[_0xd949('0xfd')]+=0x1;_0x4554db[_0xd949('0xfb')]+=0x1;ami[_0xd949('0x4c')](_0xd949('0x1bd'),ut[_0xd949('0xfc')](_0x24f957,'busy'));_0x32490e[_0xd949('0xd3')](_0x4554db)[_0xd949('0xb8')](loggerCatch(_0xd949('0x1be')));if(_0x32490e[_0xd949('0x19d')](0x5,_0x24f957,_0x343477)){if(_0x4554db[_0xd949('0xfd')]>=_0x343477['dialBusyMaxRetry']){_0x32490e[_0xd949('0x104')](_0x4554db,_0x179bbd,_0x291a75,_0xd949('0x1bf'));}else{_0x32490e['stateGlobal'](_0x4554db,_0x179bbd,_0x291a75,_0xd949('0x1bf'));}}break;case'8':_0x343477[_0xd949('0x63')]+=0x1;_0x4554db[_0xd949('0xaf')]=0x8;_0x4554db[_0xd949('0xb0')]=_0xd949('0x1c0');_0x4554db['countcongestionretry']+=0x1;_0x4554db[_0xd949('0xfb')]+=0x1;ami[_0xd949('0x4c')]('custom:agentcongestion',ut[_0xd949('0xfc')](_0x24f957,_0xd949('0x1c1')));_0x32490e['createHistory'](_0x4554db)[_0xd949('0xb8')](loggerCatch(_0xd949('0x1c2')));if(_0x32490e[_0xd949('0x19d')](0x8,_0x24f957,_0x343477)){if(_0x4554db[_0xd949('0x10d')]>=_0x343477[_0xd949('0x1a4')]){_0x32490e[_0xd949('0x104')](_0x4554db,_0x179bbd,_0x291a75,_0xd949('0x1c3'));}else{_0x32490e[_0xd949('0x1c4')](_0x4554db,_0x179bbd,_0x291a75,_0xd949('0x1c3'));}}break;case'11':_0x343477[_0xd949('0x1c5')]+=0x1;_0x4554db[_0xd949('0xaf')]=0xb;_0x4554db[_0xd949('0xb0')]='Abandoned';_0x4554db['countabandonedretry']+=0x1;_0x4554db['countglobal']+=0x1;_0x32490e['createHistory'](_0x4554db)['catch'](loggerCatch(_0xd949('0x1c6')));if(_0x32490e['checkRetriveMax'](0xb,_0x24f957,_0x343477)){if(_0x4554db[_0xd949('0x10e')]>=_0x343477['dialAbandonedMaxRetry']){_0x32490e[_0xd949('0x104')](_0x4554db,_0x179bbd,_0x291a75,_0xd949('0x1c7'));}else{_0x32490e['stateGlobal'](_0x4554db,_0x179bbd,_0x291a75,_0xd949('0x1c7'));}}break;case'20':_0x343477[_0xd949('0x1c8')]+=0x1;_0x4554db[_0xd949('0xaf')]=0x14;_0x4554db[_0xd949('0xb0')]=_0xd949('0x1c9');_0x4554db[_0xd949('0x10f')]+=0x1;_0x4554db['countglobal']+=0x1;ami['emit'](_0xd949('0x1ca'),ut[_0xd949('0xfc')](_0x24f957,'agentreject'));_0x32490e[_0xd949('0xd3')](_0x4554db)[_0xd949('0xb8')](loggerCatch(_0xd949('0x1cb')));if(_0x32490e['checkRetriveMax'](0x14,_0x24f957,_0x343477)){if(_0x4554db['countagentrejectretry']>=_0x343477[_0xd949('0x1a9')]){_0x32490e['createStateFinal'](_0x4554db,_0x179bbd,_0x291a75,_0xd949('0x1cc'));}else{_0x32490e[_0xd949('0x1c4')](_0x4554db,_0x179bbd,_0x291a75,_0xd949('0x1cc'));}}break;default:_0x343477[_0xd949('0x6b')]+=0x1;_0x4554db[_0xd949('0xaf')]=0xc;_0x4554db[_0xd949('0xb0')]=_0x28972f['reason'];_0x32490e[_0xd949('0xd3')](_0x4554db)[_0xd949('0xb8')](loggerCatch(_0xd949('0x1cd')));if(_0x32490e[_0xd949('0x19d')](_0x28972f[_0xd949('0x1b0')],_0x24f957,_0x343477)){if(_0x4554db[_0xd949('0xfd')]+_0x4554db[_0xd949('0x10d')]+_0x4554db[_0xd949('0xfe')]+_0x4554db[_0xd949('0xff')]+_0x4554db['countdropretry']+_0x4554db[_0xd949('0x10e')]+_0x4554db[_0xd949('0x101')]+_0x4554db[_0xd949('0x10f')]>=_0x343477[_0xd949('0x102')]){_0x32490e[_0xd949('0x1c4')](_0x4554db,_0x179bbd,_0x291a75,_0x28972f['reason']);}else{_0x32490e[_0xd949('0x104')](_0x4554db,_0x179bbd,_0x291a75,_0x28972f[_0xd949('0x1b0')]);}}}});};Dialer[_0xd949('0x1b')][_0xd949('0x1c4')]=function(_0x37b734,_0x498bb6,_0x2d21b4,_0x5cddc2){var _0x5df6ce=new Final(_0x37b734);_0x5df6ce[_0xd949('0xaf')]=0xf;_0x5df6ce[_0xd949('0xb0')]=_0xd949('0x1ce');this['createStateFinal'](_0x5df6ce,_0x498bb6,_0x2d21b4,_0x5cddc2);};Dialer[_0xd949('0x1b')][_0xd949('0x104')]=function(_0x35ec93,_0x4d8c77,_0x336e0e,_0x26051b){this[_0xd949('0xd1')](_0x35ec93)['then'](function(){return _0x4d8c77(msgResponse(_0xd949('0x1ac'),_0xd949('0xe2'),_0x26051b));})[_0xd949('0xb8')](function(){return _0x336e0e(msgResponse(_0xd949('0x1cf'),_0xd949('0x14d'),_0xd949('0x1d0')));});};Dialer[_0xd949('0x1b')]['predictive']=function(_0x3b9896){var _0x46d372=_0x3b9896['dialPredictiveOptimizationPercentage']/0x64;var _0x487ada=_0x3b9896[_0xd949('0x66')]/(_0x3b9896[_0xd949('0x66')]+_0x3b9896[_0xd949('0xf2')]);var _0x31872a=Math[_0xd949('0x1d1')](_0x3b9896[_0xd949('0x73')]*(_0x3b9896['predictiveIntervalMaxThreshold']/0x64));var _0xaae805=Math['round'](_0x3b9896['predictiveIntervalAvailable']*(_0x3b9896[_0xd949('0x1d2')]/0x64));var _0x1c4faa=_0x3b9896[_0xd949('0x51')]+_0x3b9896[_0xd949('0x57')];var _0x4d1601=Math['floor'](_0x3b9896[_0xd949('0x76')]*_0x3b9896[_0xd949('0x78')]*_0x3b9896[_0xd949('0x70')]*_0x3b9896['predictiveIntervalMultiplicativeFactor']);if(_[_0xd949('0x3f')](_0x3b9896[_0xd949('0x29')])){if(!_[_0xd949('0x3f')](_0x3b9896[_0xd949('0x28')])){_0x3b9896[_0xd949('0x28')]=undefined;loggerPredictive['error'](_0xd949('0x1d3'),_0xd949('0x1d4'));}if(!_['isUndefined'](_0x3b9896['handlePredictive'])){loggerPredictive['error'](_0xd949('0x1d3'),_0xd949('0x1d5'));clearInterval(_0x3b9896['handlePredictive']);_0x3b9896[_0xd949('0x9a')]=undefined;}_0x3b9896['startProgressive']=moment()['format'](_0xd949('0x108'));loggerPredictive[_0xd949('0x83')](_0x3b9896[_0xd949('0x40')],_0xd949('0x1d6'),_0x3b9896[_0xd949('0x29')]);this[_0xd949('0x15f')](_0x3b9896,0x1);}else if(ifInterval(_0x3b9896[_0xd949('0x1d7')],_0x3b9896[_0xd949('0x29')])){this[_0xd949('0x15f')](_0x3b9896,0x1);loggerPredictiveCalls[_0xd949('0x83')]('[startMethodPredictive][StartProgressive][Loop]',_0x3b9896[_0xd949('0x29')],_0x3b9896[_0xd949('0x40')]);_0x3b9896[_0xd949('0x76')]=0x0;_0x3b9896[_0xd949('0x6f')]=0x0;}else if(_0x46d372<_0x487ada&&_0x3b9896['dialPredictiveOptimization']===_0xd949('0x1d8')){freeVariablesPredictive(_0x3b9896);loggerPredictive[_0xd949('0x83')](_0xd949('0x1d9'),_0xd949('0x1da'),_0x487ada,_0xd949('0x29'),_0x3b9896[_0xd949('0x40')]);}else if(_0x4d1601<_0x3b9896[_0xd949('0x6f')]&&_0x3b9896['dialPredictiveOptimization']==='dropRate'){freeVariablesPredictive(_0x3b9896);loggerPredictive[_0xd949('0x83')](_0xd949('0x1db'),'Max\x20Drop\x20',_0x4d1601,_0xd949('0x1dc'),_0x3b9896[_0xd949('0x6f')],_0xd949('0x29'),_0x3b9896[_0xd949('0x40')]);}else if(!ifInterval(_0x3b9896['dialPredictiveInterval'],_0x3b9896['startProgressive'])&&_[_0xd949('0x3f')](_0x3b9896[_0xd949('0x28')])&&!_[_0xd949('0x3f')](_0x3b9896[_0xd949('0x29')])){_0x3b9896['startPredictive']=moment()[_0xd949('0x7d')](_0xd949('0x108'));loggerPredictive[_0xd949('0x83')](_0x3b9896['name'],_0xd949('0x1dd'),_0x3b9896[_0xd949('0x28')]);this['averageHandleTime'](_0x3b9896[_0xd949('0x1d7')])[_0xd949('0xbf')](this[_0xd949('0x1de')](_0x3b9896))['then'](mergeDataErlangB(_0x3b9896))[_0xd949('0xbf')](this['startMethodPredictive'](_0x3b9896))[_0xd949('0xb8')](loggerCatchPredictive(_0xd949('0x1df'),_0x3b9896));}else if(!ifInterval(_0x3b9896[_0xd949('0x1d7')],_0x3b9896[_0xd949('0x28')])){_0x3b9896[_0xd949('0x6f')]=0x0;_0x3b9896['startPredictive']=moment()['format']('YYYY-MM-DD\x20HH:mm:ss');loggerPredictive[_0xd949('0x83')](_0x3b9896[_0xd949('0x40')],_0xd949('0x1e0'),_0x3b9896[_0xd949('0x28')]);clearInterval(_0x3b9896[_0xd949('0x9a')]);_0x3b9896[_0xd949('0x9a')]=undefined;this[_0xd949('0xc4')](_0x3b9896[_0xd949('0x1d7')])[_0xd949('0xbf')](this[_0xd949('0x1de')](_0x3b9896))['then'](mergeDataErlangB(_0x3b9896))['then'](this[_0xd949('0x1e1')](_0x3b9896))[_0xd949('0xb8')](loggerCatchPredictive(_0xd949('0x1e2'),_0x3b9896));}else if(_0x3b9896[_0xd949('0x73')]&&_0x1c4faa<_0x3b9896[_0xd949('0x73')]-_0xaae805){freeVariablesPredictive(_0x3b9896);loggerPredictive[_0xd949('0x83')](_0x3b9896[_0xd949('0x40')],'switch\x20in\x20progressive\x20because\x20available\x20agents\x20(',_0x1c4faa,_0xd949('0x1e3'),_0x3b9896['predictiveIntervalAvailable'],'-',_0xaae805,'=',_0x3b9896[_0xd949('0x73')]-_0xaae805,')');}else if(_0x3b9896['predictiveIntervalAvailable']&&_0x1c4faa>_0x3b9896['predictiveIntervalAvailable']+_0x31872a){freeVariablesPredictive(_0x3b9896);loggerPredictive[_0xd949('0x83')](_0x3b9896[_0xd949('0x40')],_0xd949('0x1e4'),_0x1c4faa,')\x20are\x20more\x20than\x20threshold\x20(',_0x3b9896[_0xd949('0x73')],'+',_0x31872a,'=',_0x3b9896[_0xd949('0x73')]+_0x31872a,')');}};Dialer['prototype'][_0xd949('0x1de')]=function(_0x481c6c){var _0x3fc6b5=this;return function(_0x3a14f3){return new BPromise(function(_0x44e107,_0x3275b2){_[_0xd949('0x96')](_0x481c6c,_0x3a14f3[0x0]);if(checkGetDataPredictive(_0x3a14f3[0x0])){var _0x520c9a=_0x481c6c['predictiveIntervalAvailable']=_0x481c6c[_0xd949('0x57')]+_0x481c6c[_0xd949('0x51')];var _0x3a4005=_0x481c6c[_0xd949('0x1d7')]*0x3c;var _0x58cc6c=_0x3a14f3[0x0][_0xd949('0x8c')]+_0x3a14f3[0x0][_0xd949('0x6d')];var _0x5fa87c=(_0x3a14f3[0x0][_0xd949('0x6c')]+_0x3a14f3[0x0][_0xd949('0x87')]+_0x3a14f3[0x0]['predictiveIntervalDroppedCallsCallersExit'])/_0x3a14f3[0x0][_0xd949('0x74')];_0x481c6c[_0xd949('0x70')]=_0x5fa87c>0x0?_0x5fa87c:0x1;switch(_0x481c6c[_0xd949('0x1e5')]){case'dropRate':var _0x5cfc48=_0x481c6c[_0xd949('0x1e6')]/0x64;return _0x3fc6b5['abandonmentRate'](_0x520c9a,_0x3a4005,_0x58cc6c,_0x5fa87c,_0x5cfc48)[_0xd949('0xbf')](function(_0x37322e){return _0x44e107(_0x37322e);});case _0xd949('0x1e7'):var _0x3efd79=_0x481c6c[_0xd949('0x1e6')]/0x64;return _0x3fc6b5[_0xd949('0x1e8')](_0x520c9a,_0x3a4005,_0x58cc6c,_0x5fa87c,_0x3efd79)[_0xd949('0xbf')](function(_0xa53bec){return _0x44e107(_0xa53bec);});default:return _0x3275b2(msgResponse(_0xd949('0x1e9'),_0xd949('0x14d'),_0xd949('0x1ea')));}}else{return _0x3275b2(msgResponse(_0xd949('0x1e9'),'Failure',_0xd949('0x1eb')));}});};};Dialer[_0xd949('0x1b')][_0xd949('0x1ec')]=function(_0x49ea1b){var _0x14488e=this;return function(_0x3b76b4){return new BPromise(function(_0x56f95b,_0x149cda){_[_0xd949('0x96')](_0x49ea1b,_0x3b76b4[0x0]);if(checkGetDataPredictive(_0x3b76b4[0x0])){loggerPredictive[_0xd949('0x83')](JSON[_0xd949('0x7b')](_0x3b76b4[0x0]));if(_0x49ea1b['dialPredictiveOptimization']===_0xd949('0x1d8')){return _0x14488e[_0xd949('0xcf')](_0x49ea1b['id'])[_0xd949('0xbf')](function(_0x173610){var _0x1c809d=_0x49ea1b[_0xd949('0x52')]-_0x173610[0x0][_0xd949('0x1ed')];var _0x4c45fa=_0x49ea1b[_0xd949('0x1d7')]*0x3c;var _0x279593=_0x3b76b4[0x0][_0xd949('0x8c')]+_0x3b76b4[0x0][_0xd949('0x6d')];var _0x58a09c=(_0x3b76b4[0x0][_0xd949('0x6c')]+_0x3b76b4[0x0][_0xd949('0x87')]+_0x3b76b4[0x0][_0xd949('0x89')])/_0x3b76b4[0x0]['predictiveIntervalTotalCalls'];var _0x40626f=_0x49ea1b[_0xd949('0x1e6')]/0x64;_0x49ea1b[_0xd949('0x72')]=_0x173610[0x0][_0xd949('0x1ed')]||0x0;_0x49ea1b[_0xd949('0x70')]=_0x58a09c>0x0?_0x58a09c:0x1;return _0x14488e['abandonmentRate'](_0x1c809d,_0x4c45fa,_0x279593,_0x58a09c,_0x40626f);})[_0xd949('0xbf')](function(_0x11cbd5){return _0x56f95b(_0x11cbd5);})['catch'](function(_0x5d2a69){return _0x149cda(msgResponse(_0xd949('0x1ee'),_0xd949('0x14d'),JSON['stringify'](_0x5d2a69)));});}if(_0x49ea1b[_0xd949('0x1e5')]==='agentBusyFactor'){return _0x14488e[_0xd949('0xcf')](_0x49ea1b['id'])[_0xd949('0xbf')](function(_0x17915f){var _0x5913f6=_0x49ea1b[_0xd949('0x52')]-_0x17915f[0x0][_0xd949('0x1ed')];var _0x231cdc=_0x49ea1b[_0xd949('0x1d7')]*0x3c;var _0x58da29=_0x3b76b4[0x0]['predictiveIntervalAvgTalktime']+_0x3b76b4[0x0][_0xd949('0x6d')];var _0x4a9f56=(_0x3b76b4[0x0][_0xd949('0x6c')]+_0x3b76b4[0x0][_0xd949('0x87')]+_0x3b76b4[0x0][_0xd949('0x89')])/_0x3b76b4[0x0][_0xd949('0x74')];var _0x2de269=_0x49ea1b[_0xd949('0x1e6')]/0x64;_0x49ea1b[_0xd949('0x72')]=_0x17915f[0x0][_0xd949('0x1ed')]||0x0;_0x49ea1b[_0xd949('0x70')]=_0x4a9f56>0x0?_0x4a9f56:0x1;return _0x14488e[_0xd949('0x1e8')](_0x5913f6,_0x231cdc,_0x58da29,_0x4a9f56,_0x2de269);})[_0xd949('0xbf')](function(_0xfd6f55){return _0x56f95b(_0xfd6f55);})['catch'](function(_0x39d7b0){return _0x149cda(msgResponse(_0xd949('0x1ee'),_0xd949('0x14d'),JSON['stringify'](_0x39d7b0)));});}}else{return _0x149cda(msgResponse(_0xd949('0x1e9'),_0xd949('0x14d'),_0xd949('0x1eb')));}});};};Dialer[_0xd949('0x1b')][_0xd949('0x1e1')]=function(_0x5955e9){var _0x11e434=this;return function(){var _0x3db831=0x0;var _0x22d498=Math['floor'](_0x5955e9['erlangCallToSecond']*0x3e8);if(_0x22d498>0x0){_0x22d498=_0x22d498<0x64?0x64:_0x22d498;loggerPredictive['info'](_0x5955e9['name'],_0xd949('0x1ef'),_0x22d498,_0xd949('0x4a'));_0x5955e9[_0xd949('0x9a')]=setInterval(function(){_0x11e434[_0xd949('0x9a')](_0x5955e9);loggerPredictiveCalls['info']('[handlePredictive]',_0x3db831+=0x1);},_0x22d498);}else{loggerPredictive[_0xd949('0x83')](_0x5955e9[_0xd949('0x40')],_0xd949('0x1f0'));}};};Dialer[_0xd949('0x1b')]['checkContactBlack']=function(_0x654b6d,_0x1f36f5){var _0x265c1a=this;return function(_0x2bc9dd){if(_[_0xd949('0x47')](_0x2bc9dd)){if(_[_0xd949('0xeb')](_0x1f36f5[_0xd949('0xdd')])||!_0x1f36f5[_0xd949('0x1f1')]){if(_0x654b6d[_0xd949('0x5d')]===_0xd949('0x8')){_0x654b6d[_0xd949('0x139')]=_[_0xd949('0x3f')](_0x654b6d[_0xd949('0x139')])?!![]:_0x654b6d[_0xd949('0x139')];var _0x1bb8b9=uuid['v4']();_0x265c1a[_0xd949('0x26')][_0x1bb8b9]=new Action(_0x654b6d,_0x1f36f5,_0x1bb8b9);loggerBooked[_0xd949('0x83')](_0xd949('0x1f2'),_0x1bb8b9,_0xd949('0x1f3'),JSON['stringify'](_0x654b6d['queueStatusComplete']),_0xd949('0x1f4'),_0x654b6d['name']);if(_0x654b6d[_0xd949('0x139')]){_0x654b6d['queueStatusComplete']=![];_0x265c1a[_0xd949('0x2b')][_0x265c1a[_0xd949('0x26')][_0x1bb8b9][_0xd949('0xba')]]=[];ami['Action']({'actionid':_0x1bb8b9,'action':_0xd949('0x1f5'),'queue':_0x654b6d[_0xd949('0x40')]})[_0xd949('0xb8')](function(){_0x265c1a[_0xd949('0xb9')](_0x654b6d);_0x265c1a[_0xd949('0xc6')]({'active':![],'ContactId':_0x265c1a[_0xd949('0x26')][_0x1bb8b9][_0xd949('0xdb')],'ListId':_0x265c1a['actions'][_0x1bb8b9][_0xd949('0xdc')],'VoiceQueueId':_0x265c1a[_0xd949('0x26')][_0x1bb8b9]['VoiceQueueId']||undefined,'CampaignId':_0x265c1a[_0xd949('0x26')][_0x1bb8b9][_0xd949('0xde')]||undefined})[_0xd949('0xb8')](loggerCatch(_0xd949('0x1f6')));delete _0x265c1a[_0xd949('0x26')][_0x1bb8b9];});}else{loggerBooked[_0xd949('0x83')]('[booked][checkContactBlack][else]',JSON[_0xd949('0x7b')](_0x654b6d['queueStatusComplete']),_0xd949('0x1f4'),_0x654b6d[_0xd949('0x40')]);_0x265c1a[_0xd949('0xb9')](_0x654b6d);_0x265c1a[_0xd949('0xc6')]({'active':![],'ContactId':_0x265c1a[_0xd949('0x26')][_0x1bb8b9][_0xd949('0xdb')],'ListId':_0x265c1a[_0xd949('0x26')][_0x1bb8b9][_0xd949('0xdc')],'VoiceQueueId':_0x265c1a['actions'][_0x1bb8b9][_0xd949('0x109')]||undefined,'CampaignId':_0x265c1a[_0xd949('0x26')][_0x1bb8b9][_0xd949('0xde')]||undefined})[_0xd949('0xb8')](loggerCatch(_0xd949('0x1f6')));delete _0x265c1a[_0xd949('0x26')][_0x1bb8b9];}}else{return _0x265c1a[_0xd949('0x16f')](_0x654b6d,_0x1f36f5);}}else{if(getDiff(_0x1f36f5[_0xd949('0x1f7')])<_0x654b6d[_0xd949('0x1f8')]*0x3c){if(_0x1f36f5['Agent']&&!_0x1f36f5[_0xd949('0x1f9')][_0xd949('0x1fa')]){_0x265c1a[_0xd949('0x20')][_0xd949('0x13a')](_0x1f36f5['id'])[_0xd949('0x1e')](function(){_0x265c1a['updateOriginated'](_0x654b6d);});}else{_0x265c1a[_0xd949('0xc8')]({'active':![]},_0x1f36f5['id'],0x1)['finally'](function(){_0x265c1a[_0xd949('0xb9')](_0x654b6d);});}}else{_0x654b6d['outboundReCallsDay']+=0x1;_0x265c1a[_0xd949('0xb9')](_0x654b6d);if(_0x654b6d['dialRecallInQueue']){_0x265c1a[_0xd949('0xc6')]({'active':![],'recallme':![],'UserId':null,'ContactId':_0x1f36f5[_0xd949('0xdb')],'ListId':_0x1f36f5['ListId'],'VoiceQueueId':_0x1f36f5['VoiceQueueId']||undefined,'CampaignId':_0x1f36f5[_0xd949('0xde')]||undefined})[_0xd949('0xb8')](loggerCatch(_0xd949('0x1fb')));_0x265c1a[_0xd949('0xd3')](createObjHistory(_0x654b6d,_0x1f36f5,'RECALLINQUEUE',0x17,_0xd949('0x1fc')))[_0xd949('0xb8')](loggerCatch(_0xd949('0x1fd')));}else{_0x265c1a[_0xd949('0xe8')](createObjHistory(_0x654b6d,_0x1f36f5,_0xd949('0x1fe'),0x16,_0xd949('0x1ff')),'[Originate][HistoryRecallClose][historyCatch]',_0xd949('0x200'));}}}}else{_0x654b6d['outboundBlacklistCallsDay']+=0x1;_0x265c1a[_0xd949('0xe8')](createObjHistory(_0x654b6d,_0x1f36f5,_0xd949('0x201'),0xd,_0xd949('0x202')),_0xd949('0x203'),_0xd949('0x204'));throw _0xd949('0x205');}};};Dialer[_0xd949('0x1b')][_0xd949('0x164')]=function(_0x368236){var _0x2cf2a0=this;var _0x476ad0=_0x368236['limitCalls']-_0x368236[_0xd949('0x75')]-_0x368236[_0xd949('0xcb')];emitCampaignSummary(_0x368236);if(_0x476ad0>0x0){if(_0x476ad0>this[_0xd949('0x25')]){_0x476ad0=this[_0xd949('0x25')];}_0x368236[_0xd949('0xcb')]+=_0x476ad0;this['getContactDialerIvr'](_0x368236['id'],_0x476ad0,_0x368236[_0xd949('0x206')],_0x368236)[_0xd949('0xbf')](function(_0x46eebe){_0x368236['temp']-=_0x476ad0;_0x368236['temp']=_0x368236['temp']>0x0?_0x368236[_0xd949('0xcb')]:0x0;if(!checkContactEmpty(_0x46eebe)){_0x368236[_0xd949('0x42')]=_0xd949('0x207');logger[_0xd949('0x83')]('[getContactCampaign2][Empty]'+_0x368236[_0xd949('0x40')]);}else{_0x368236[_0xd949('0x75')]+=_0x46eebe[_0xd949('0x13e')];_0x368236[_0xd949('0x42')]=_0xd949('0x208');for(var _0x315569=0x0;_0x315569<_0x46eebe[_0xd949('0x13e')];_0x315569+=0x1){_0x368236['ivrTotalCallsDays']+=0x1;if(_[_0xd949('0xeb')](_0x46eebe[_0x315569])||_[_0xd949('0xeb')](_0x46eebe[_0x315569]['Contact'])||_[_0xd949('0xeb')](_0x46eebe[_0x315569]['Contact']['phone'])){_0x2cf2a0[_0xd949('0xd8')](_0xd949('0x209'),_0x368236,_0x46eebe[_0x315569]);}else{_0x2cf2a0['checkIsBlackListIvr'](_[_0xd949('0xda')](_0x46eebe[_0x315569],[_0xd949('0xde'),_0xd949('0x20a')]))[_0xd949('0xbf')](_0x2cf2a0['checkContactBlack'](_0x368236,_0x46eebe[_0x315569]))[_0xd949('0xb8')](_0x2cf2a0['loggerHandler']('[actionOriginateIvr]\x20',_0x368236));}}}})[_0xd949('0xb8')](loggerGetContactDialer(_0xd949('0x20b'),_0x368236,_0x476ad0));}};Dialer[_0xd949('0x1b')][_0xd949('0x15f')]=function(_0x3cfb4a,_0x768014){var _0x56a146=this;var _0x2a8157=[];var _0x3380d2=_0x768014>=0x1?_0x768014:0x1;if(_0x3cfb4a[_0xd949('0x5d')]==='booked'){_0x3380d2=0x1;}var _0x4d4766=Math[_0xd949('0x20c')](_0x3cfb4a['available']*_0x3380d2)-_0x3cfb4a[_0xd949('0x75')]-_0x3cfb4a['temp'];emitVoiceQueueSummary(_0x3cfb4a);if(_0x3cfb4a['dialLimitQueue']>0x0){var _0x4b41a1=_0x3cfb4a['dialLimitQueue']-_0x3cfb4a[_0xd949('0x75')]-_0x3cfb4a[_0xd949('0x57')]-_0x3cfb4a[_0xd949('0xcb')]-_0x3cfb4a[_0xd949('0x53')];if(_0x4d4766>_0x4b41a1){_0x4d4766=_0x4b41a1;}}if(_0x4d4766>0x0){if(_0x3cfb4a[_0xd949('0x5d')]===_0xd949('0x8')){_0x4d4766=0x1;}if(_0x4d4766>this[_0xd949('0x25')]){_0x4d4766=this[_0xd949('0x25')];}_0x3cfb4a[_0xd949('0xcb')]+=_0x4d4766;for(var _0x433f56 in this[_0xd949('0x23')]){if(typeof this[_0xd949('0x23')][_0x433f56]!==_0xd949('0xa1')){if(this[_0xd949('0x23')][_0x433f56][_0xd949('0xaf')]===_0xd949('0x20d')&&this[_0xd949('0x23')][_0x433f56]['status']===_0xd949('0xe6')){_0x2a8157[_0xd949('0x135')](this['agents'][_0x433f56]['id']);}}}this[_0xd949('0xca')](_0x3cfb4a['id'],_0x2a8157,_0x4d4766,_0x3cfb4a[_0xd949('0x206')],_0x3cfb4a)['then'](function(_0xdf70fa){_0x3cfb4a[_0xd949('0xcb')]-=_0x4d4766;_0x3cfb4a['temp']=_0x3cfb4a[_0xd949('0xcb')]>0x0?_0x3cfb4a[_0xd949('0xcb')]:0x0;if(!checkContactEmpty(_0xdf70fa)){_0x56a146[_0xd949('0xbd')](_0x3cfb4a)[_0xd949('0xbf')](sendMessageReschedule(_0x3cfb4a))[_0xd949('0xb8')](loggerCatch(_0xd949('0x20e')));}else{_0x3cfb4a[_0xd949('0x75')]+=_0xdf70fa[_0xd949('0x13e')];_0x3cfb4a[_0xd949('0x42')]=_0x3cfb4a['dialMethod']===_0xd949('0x8')?_0xd949('0x179'):_0xd949('0x208');for(var _0x5ec014=0x0;_0x5ec014<_0xdf70fa['length'];_0x5ec014+=0x1){if(_[_0xd949('0xeb')](_0xdf70fa[_0x5ec014])||_['isNil'](_0xdf70fa[_0x5ec014][_0xd949('0x172')])||_[_0xd949('0xeb')](_0xdf70fa[_0x5ec014][_0xd949('0x172')]['phone'])){_0x56a146['emptyContact'](_0xd949('0x209'),_0x3cfb4a,_0xdf70fa[_0x5ec014]);}else{_0x56a146['checkIsBlackList'](_[_0xd949('0xda')](_0xdf70fa[_0x5ec014],[_0xd949('0x109'),_0xd949('0x20a')]))['then'](_0x56a146[_0xd949('0x20f')](_0x3cfb4a,_0xdf70fa[_0x5ec014]))['catch'](_0x56a146[_0xd949('0xd7')](_0xd949('0x209'),_0x3cfb4a));}}}})[_0xd949('0xb8')](loggerGetContactDialer(_0xd949('0x210'),_0x3cfb4a,_0x4d4766));}};Dialer[_0xd949('0x1b')][_0xd949('0x9a')]=function(_0x2f65b0){if(_0x2f65b0['dialLimitQueue']>0x0){var _0x710a4a=_0x2f65b0['dialLimitQueue']-_0x2f65b0[_0xd949('0x75')]-_0x2f65b0['talking'];if(_0x710a4a>0x0){this[_0xd949('0x211')](_0x2f65b0);}else{loggerPredictiveCalls['info']('[handlePredictive][limitChannel]');}}else{this[_0xd949('0x211')](_0x2f65b0);}};Dialer['prototype'][_0xd949('0x211')]=function(_0x2f6e81){var _0x4d755f=this;var _0x3791fc=[];_0x2f6e81[_0xd949('0x75')]+=0x1;for(var _0x430816 in this[_0xd949('0x23')]){if(typeof this[_0xd949('0x23')][_0x430816]!==_0xd949('0xa1')){if(this['agents'][_0x430816][_0xd949('0xaf')]===_0xd949('0x20d')&&this[_0xd949('0x23')][_0x430816][_0xd949('0xb6')]===_0xd949('0xe6')){_0x3791fc[_0xd949('0x135')](this[_0xd949('0x23')][_0x430816]['id']);}}}this[_0xd949('0xca')](_0x2f6e81['id'],_0x3791fc,0x1,_0x2f6e81[_0xd949('0x206')],_0x2f6e81)[_0xd949('0xbf')](function(_0x3115b5){if(!checkContactEmpty(_0x3115b5)){checkContactLowerLimitOriginate(_0x2f6e81,0x1,0x0);_0x4d755f['countReScheduled'](_0x2f6e81)[_0xd949('0xbf')](sendMessageReschedule(_0x2f6e81))[_0xd949('0xb8')](loggerCatch('[countReScheduled]\x20'));}else{_0x2f6e81[_0xd949('0x42')]='RUNNING';if(_['isNil'](_0x3115b5[0x0])||_[_0xd949('0xeb')](_0x3115b5[0x0][_0xd949('0x172')])||_[_0xd949('0xeb')](_0x3115b5[0x0][_0xd949('0x172')][_0xd949('0x173')])){_0x4d755f['emptyContact'](_0xd949('0x209'),_0x2f6e81,_0x3115b5[0x0]);}else{_0x4d755f['checkIsBlackList'](_[_0xd949('0xda')](_0x3115b5[0x0],[_0xd949('0x109'),_0xd949('0x20a')]))[_0xd949('0xbf')](_0x4d755f[_0xd949('0x20f')](_0x2f6e81,_0x3115b5[0x0]))[_0xd949('0xb8')](_0x4d755f[_0xd949('0xd7')](_0xd949('0x212'),_0x2f6e81));}}})[_0xd949('0xb8')](loggerGetContactDialer(_0xd949('0x213'),_0x2f6e81,0x1));emitVoiceQueueSummary(_0x2f6e81);};Dialer[_0xd949('0x1b')][_0xd949('0x214')]=function(_0x12ebb8,_0x233ce3,_0x9e50db,_0x4a1a60,_0x19547a,_0x3db7db){loggerPredictive['info']('--------\x20Drop\x20Rate\x20--------');loggerPredictive[_0xd949('0x83')](_0xd949('0x215'),_0x12ebb8);loggerPredictive['info'](_0xd949('0x216'),_0x233ce3);loggerPredictive[_0xd949('0x83')](_0xd949('0x217'),_0x9e50db);loggerPredictive[_0xd949('0x83')]('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',_0x4a1a60);loggerPredictive[_0xd949('0x83')](_0xd949('0x218'),_0x19547a);loggerPredictive[_0xd949('0x83')](_0xd949('0x8d'));return new BPromise(function(_0x2e0cc3,_0x4073c0){if(_0x12ebb8<=0x0||isNaN(_0x12ebb8)){return _0x4073c0(msgResponse(_0xd949('0x219'),_0xd949('0x49'),_0xd949('0x21a')+_0x12ebb8));}if(_0x9e50db<=0x0||isNaN(_0x9e50db)){return _0x4073c0(msgResponse(_0xd949('0x219'),_0xd949('0x49'),_0xd949('0x21b')+_0x9e50db));}if(_0x4a1a60<=0x0||isNaN(_0x4a1a60)){return _0x4073c0(msgResponse('[abandonmentRate]',_0xd949('0x49'),_0xd949('0x21c')+_0x4a1a60));}if(_0x233ce3<=0x0||isNaN(_0x233ce3)){return _0x4073c0(msgResponse(_0xd949('0x219'),_0xd949('0x49'),_0xd949('0x21d')+_0x233ce3));}if(_0x19547a<=0x0||isNaN(_0x19547a)){return _0x4073c0(msgResponse(_0xd949('0x219'),_0xd949('0x49'),'Amax\x20=\x20'+_0x19547a));}_0x3db7db=_0x3db7db||0x0;var _0x38b309=0x1/_0x9e50db;var _0x36ebc0=0x0;var _0x1da41d=0x0;var _0x4a87c7=0x0;var _0x52bcc8=0x0;for(var _0x3f5dc1=0x0;_0x4a87c7<_0x19547a;_0x3f5dc1+=0x1){_0x1da41d=_0x3f5dc1/_0x233ce3;_0x36ebc0=(_0x4a1a60*_0x1da41d+_0x3db7db)/_0x38b309;_0x4a87c7=erlangb(_0x36ebc0,_0x12ebb8);_0x52bcc8=_0x36ebc0/_0x12ebb8*(0x1-erlangb(_0x36ebc0,_0x12ebb8));}return _0x2e0cc3({'erlangCalls':_0x3f5dc1,'erlangCallToSecond':_0x233ce3/_0x3f5dc1,'erlangAbandonmentRate':_0x4a87c7,'erlangBusyFactor':_0x52bcc8});});};Dialer[_0xd949('0x1b')][_0xd949('0x1e8')]=function(_0x258fa3,_0x5523c4,_0x3da9f5,_0x56ca10,_0x282705,_0x5387d9){loggerPredictive[_0xd949('0x83')](_0xd949('0x21e'));loggerPredictive['info'](_0xd949('0x215'),_0x258fa3);loggerPredictive[_0xd949('0x83')](_0xd949('0x216'),_0x5523c4);loggerPredictive[_0xd949('0x83')](_0xd949('0x217'),_0x3da9f5);loggerPredictive[_0xd949('0x83')](_0xd949('0x21f'),_0x56ca10);loggerPredictive[_0xd949('0x83')](_0xd949('0x220'),_0x282705);loggerPredictive[_0xd949('0x83')](_0xd949('0x8d'));return new BPromise(function(_0x71c280,_0xca0cf0){if(_0x258fa3<=0x0||isNaN(_0x258fa3)){return _0xca0cf0(msgResponse(_0xd949('0x221'),'Error',_0xd949('0x21a')+_0x258fa3));}if(_0x3da9f5<=0x0||isNaN(_0x3da9f5)){return _0xca0cf0(msgResponse(_0xd949('0x221'),_0xd949('0x49'),_0xd949('0x21b')+_0x3da9f5));}if(_0x56ca10<=0x0||isNaN(_0x56ca10)){return _0xca0cf0(msgResponse(_0xd949('0x221'),_0xd949('0x49'),_0xd949('0x21c')+_0x56ca10));}if(_0x5523c4<=0x0||isNaN(_0x5523c4)){return _0xca0cf0(msgResponse(_0xd949('0x221'),_0xd949('0x49'),'interval\x20=\x20'+_0x5523c4));}if(_0x282705<=0x0||isNaN(_0x282705)){return _0xca0cf0(msgResponse(_0xd949('0x221'),'Error',_0xd949('0x222')+_0x282705));}_0x5387d9=_0x5387d9||0x0;var _0x4888bb=0x1/_0x3da9f5;var _0x29995f=0x0;var _0x496bf8=0x0;var _0x29d709=0x0;var _0x55955e=0x0;for(var _0x59288a=0x0;_0x55955e<_0x282705;_0x59288a+=0x1){_0x496bf8=_0x59288a/_0x5523c4;_0x29995f=(_0x56ca10*_0x496bf8+_0x5387d9)/_0x4888bb;_0x29d709=erlangb(_0x29995f,_0x258fa3);_0x55955e=_0x29995f/_0x258fa3*(0x1-erlangb(_0x29995f,_0x258fa3));}return _0x71c280({'erlangCalls':_0x59288a,'erlangCallToSecond':_0x5523c4/_0x59288a,'erlangAbandonmentRate':_0x29d709,'erlangBusyFactor':_0x55955e});});};module['exports']=Dialer;
\ No newline at end of file
+var _0x757f=['dialAbandonedRetryFrequency','[rescheduleContact][Abandoned]','channel','actionid','locked','paused','stateinterface','push','queueStatusComplete','[unlockQueueStatus][undefined]','run','idHopper','[Catch][Preview][syncQueueStatusComplete]','[unlock][syncQueueStatusComplete]','_rr','unlockRR','[booked][RR]','Agent:\x20','[booked][unlock]','[booked][unlock2]','[unlock2][syncQueueStatusComplete]','[booked][unlock3]','[unlock3][syncQueueStatusComplete]','loopCampaigns','syncCampaigns','checkIsTrunkReachable','TrunkBackup','TRUNK_IS_NOT_REACHABLE','\x20trunk\x20is\x20not\x20reachable','checkIfTime','checkIfTimeIntervals','ifTime','\x20Intervals\x20is\x20null\x20','INTERVAL_IS_EMPTY','Failure','\x20Intervals\x20is\x20empty\x20','timezones','TIMEZONE_UNKNOW','command','iftime\x20%s,%s','indexOf','Action','true','all','some','GLOBAL_INTERVAL_IS_OVERTIME','INTERVAL_IS_OVERTIME','Global:\x20','Timezone:\x20','power','dialPowerLevel','Queue','method\x20not\x20recognized','launchHandleIvr','handleIvr','syncQueueSummary','dialGlobalInterval','dialTimezone','[syncQueueSummary]','[syncCampaigns]','\x5cw{0,','pow','random','match','originate','voiceQueue\x20is\x20undefine','Contact','phone','contact\x20is\x20undefine','getCaller','\x22agi://%s/square,%s\x22','NONE','\x22%s,%s%s,,,%s\x22','ACTIVE','XMD-AMDINITIALSILENCE','XMD-AMDGREETING','XMD-AMDAFTERGREETINGSILENCE','XMD-AMDTOTALANALYSISTIME','dialAMDTotalAnalysisTime','dialAMDBetweenWordsSilence','XMD-AMDMAXIMUMNUMBEROFWORDS','XMD-AMDSILENCETHRESHOLD','dialAMDSilenceThreshold','XMD-AMDMAXIMUMWORDLENGTH','dialAMDMaximumWordLength','XMD-VOICEQUEUEID','XMD-CAMPAIGNID','tags','createdAt','updatedAt','%s%s','XMD-','toUpper','callerid','dialOriginateCallerIdName','dialRandomLastDigitCallerIdNumber','dialOriginateCallerIdNumber','XMD-ORIGINATECALLERIDNAME','originatecalleridname','XMD-ORIGINATECALLERIDNUM','originatecalleridnum','dialPrefix','dialCutDigit','SIP/%s/%s%s','trim','from-sip','[originateError]:\x20%s','[originate][error]','responsetime','getQueue','response','checkRetriveMax','dialNoAnswerMaxRetry','dialNoAnswerRetryFrequency','[rescheduleContact][NoAnswer]','dialBusyMaxRetry','[rescheduleContact]\x20[Busy]','dialCongestionMaxRetry','dialCongestionRetryFrequency','[rescheduleContact]\x20[Congestion]','dialNoSuchNumberMaxRetry','dialNoSuchNumberRetryFrequency','dialAbandonedMaxRetry','dialAgentRejectMaxRetry','dialAgentRejectRetryFrequency','[rescheduleContact][AgentReject]','callProgressDetecting','[callProgressDetecting]','entity\x20is\x20undefine','object','evt\x20is\x20undefine','reason\x200\x20no\x20such\x20number....','NoAnswer','custom:agentnoanswer','[syncAgentComplete][createHistory][3]','reason\x203\x20ringing\x20no\x20answer','outboundBusyCallsDay','Busy','busy','reason\x205\x20busy','Congestion','custom:agentcongestion','reason\x208\x20congestion','outboundAbandonedCallsDay','[syncAgentComplete][createHistory][11]','reason\x2011\x20abandoned','AgentReject','custom:agentreject','agentreject','[syncAgentComplete][createHistory][20]','reason\x2020\x20agentreject','[syncAgentComplete][createHistory][?]','Global','dialPredictiveOptimizationPercentage','round','predictiveIntervalMaxThreshold','predictiveIntervalMinThreshold','floor','predictiveIntervalMultiplicativeFactor','[startMethodPredictive][StartProgressive]','check\x20predictive\x20is\x20not\x20undefine','check\x20handlePredictive\x20is\x20not\x20undefine','collection\x20data\x20in\x20progressive\x20at','handlePower','dialPredictiveInterval','[startMethodPredictive][StartProgressive][Loop]','dialPredictiveOptimization','dropRate','Max\x20Drop\x20','started\x20in\x20predictive\x20at','getDataPredictive','recalculate\x20predictive\x20at','startMethodPredictive','Predictive\x20for\x20every\x20interval','switch\x20in\x20progressive\x20because\x20available\x20agents\x20(',')\x20are\x20less\x20than\x20threshold\x20(','abandonmentRate','busyFactor','Unknown\x20Predictive','[getDataPredictive]','check\x20failure','getDataPredictiveOld','outboundQueuePauses','agentBusyFactor','[CatchErlangB]','erlangCallToSecond','one\x20call\x20every:','[handlePredictive]','fail\x20to\x20scheduled\x20calls','checkContactBlack','Queue:\x20','queuestatus','[booked][checkContactBlack][else]','actionOriginate','scheduledat','Agent','[rescheduleContact][dialRecallInQueue]','RECALLFAILEDTIMEOUT','RecallFailedTimeout','[Originate][HistoryRecallClose][historyCatch]','BLACKLIST','Blacklist','[Originate][historyBlacklist]','[Originate][MoveBlacklist]','limitCalls','dialOrderByScheduledAt','AVAILABLE_CONTACTS_FINISHED','[getContactCampaign2][Empty]','ivrTotalCallsDays','[actionOriginate]\x20','[actionOriginateIvr]\x20','[getContactCampaign2]','dialLimitQueue','maxNumberOriginate','RUNNING','Contact.phone','loggerHandler','[getContactDialer2]','tryOriginatePredictive','not_inuse','[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','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]','p\x20=\x20','Amax\x20=\x20','----\x20Agent\x20Busy\x20Factor\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','[busyFactor]','m\x20=\x20','Ts\x20=\x20','interval\x20=\x20','Umin\x20=\x20','exports','util','bluebird','uuid','moment','md5','ioredis','../preview/util/util','../../../config/environment/','../../../config/logger','dialer','booked','predictive','predictiveCalls','../ami','redis','defaults','socket.io-emitter','../rpc/cmHopper','../rpc/cmHopperHistory','../rpc/cmHopperBlack','../rpc/voiceQueueRt','./action','./history','./final','./agentComplete','./queueCallerAbandon','./hangup','env','XCALLY_IP_AGI','127.0.0.1','rrmemory','roundrobin','prototype','tail','finally','sequence','preview','voiceQueues','campaigns','agents','trunks','channels','uniqueId','optionPredictive','startProgressive','ivrOriginated','queueBooked','queueBookedRR','bind','queuecallerabandon','syncQueueCallerAbandon','originateresponse','syncOriginateResponse','agentcomplete','syncAgentComplete','hangup','syncHangup','newexten','syncNewExten','varset','queuemember','syncQueueStatusComplete','loopClearZombieChannels','isUndefined','message','name','INTERVAL_IS_NULL','\x20INTERVAL_IS_NULL','Intervals','isEmpty','Interval','[ifTime][Action]','Error','stringify','milliseconds','diff','seconds','emit','outbound','strategy','answered','available','loggedIn','sumBillable','sumDuration','sumHoldTime','talking','total','abandoned','waiting','loggedInDb','dialActive','dialMethod','dialOriginateTimeout','outboundAnswerAgiCallsDay','outboundAnswerCallsDay','outboundBlacklistCallsDay','outboundCongestionCallsDay','outboundDropCallsDayACS','outboundDropCallsDayTimeout','outboundNoAnswerCallsDay','outboundNoSuchCallsDay','outboundOriginateFailureCallsDay','outboundReCallsDay','outboundRejectCallsDay','predictiveIntervalAnsweredCalls','predictiveIntervalAvgTalktime','predictiveIntervalDroppedCallsCallersExit','predictiveIntervalDroppedCallsTimeout','predictiveIntervalErlangCallsDroppedCalls','predictiveIntervalHitRate','predictiveIntervalPauses','predictiveIntervalAvailable','predictiveIntervalTotalCalls','erlangCalls','erlangAbandonmentRate','erlangBusyFactor','startPredictive','Trunk','format','voice:queue:%s','type','ivr','campaign:ivr:%s','campaign:save','info','Total\x20Calls:\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20','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','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','predictiveIntervalAvgHoldtime','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','History\x20information\x20are\x20empty','---------\x20ErlangB\x20---------','Scheduled\x20Calls:\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20','One\x20call\x20every:\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20','Agent\x20Busy\x20Factor:\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','clearing\x20variable\x20start\x20progressive','clearing\x20variable\x20start\x20predictive','handlePredictive','string','\x22%s\x22\x20<%s>','\x22\x22\x20<>','inspect','error','length','originated','contactsRescheduled','RESCHEDULED_CONTACTS','[getContactDialer2][ReScheduled]','contacts','[getContactDialer2][Empty]','pTalking','sendMessageOneNotActive','NOT_ACTIVE','[syncQueueSummary]\x20Campaign\x20Queue:\x20','is\x20not\x20active','IS_DISACTIVED','[syncQueueSummary]\x20Campaign\x20Ivr:\x20','is\x20disactive','state','statedesc','starttime','clearZombieChannels','actions','undefined','enqueue','isNil','status','catch','No\x20such\x20channel','updateOriginated','queue','[Dialer][checkChannel]','countReScheduled','resolve','then','[countReScheduled]\x20','checkIsBlackList','checkIsBlackListIvr','[checkIsBlackListIvr]\x20','averageHandleTime','[averageHandleTime]\x20','rescheduleContact','[rescheduleContact]\x20','unlockContact','[unlockContact]\x20','temp','getContactDialerIvr','[getContactDialerIvr]\x20','getVoiceQueueRtPauses','[getVoiceQueueRtPauses]\x20','moveContactManagedDialer','[moveContactManagedDialer]\x20','createHistory','[updateOriginated]\x20is\x20null\x20or\x20undefined','emptyContact','notFound','merge','pick','ContactId','ListId','UserId','[emptyContact][createHistory]','isSuccess','Success','isTrunkReachable','active','SIP/%s','reachable','unmonitored','saveInDb','uniqueid','variable','amdstatus','exten','xcally-motion-dialer','dialAMDActive','value','HangupInAMD','AMD','custom:amd','buildObj','amd','[syncHangupInAMD][createHistory]','MACHINE','Machine','membername','countglobal','countbusyretry','countcongestionretry','countnoanswerretry','countnosuchnumberretry','countdropretry','dialGlobalMaxRetry','stateGlobal','reason19\x20machine....','countmachineretry','dialMachineMaxRetry','add','dialMachineRetryFrequency','minutes','YYYY-MM-DD\x20HH:mm:ss','VoiceQueueId','CampaignId','[rescheduleContact][Machine]','[syncHangupInAMDIvr][createHistory]','[syncHangupInAMDIvr]','[syncAgentComplete][createHistory][0]','countagentrejectretry','createStateFinal','reason\x2019\x20machine....','ivrAnswerCallsDay','[syncHangupIvr]','dialQueueProject','AnswerAGI','AGI','[syncHangupIvr][createHistory]','outboundUnknownCallsDay','cause-txt','Unknow','reason','agent','agiafterat','dialQueueProject2','dialAgiAfterHangupAgent','[syncAgentComplete][createHistory]','[syncAgentComplete]','syncAgentConnect','[syncQueueCallerAbandon]\x20[Drop]','droptime','dialQueueTimeout','dropreason','TIMEOUT','dialDropMaxRetry','dialDropRetryFrequency','Drop','endtime','calleridname','calleridnum','[syncAgentComplete][createHistory][10]','outboundDropCallsDayCallersExit','Abandoned','CALLEREXIT','countabandonedretry'];(function(_0x60581d,_0xa3e313){var _0x43dd38=function(_0x38c017){while(--_0x38c017){_0x60581d['push'](_0x60581d['shift']());}};_0x43dd38(++_0xa3e313);}(_0x757f,0xee));var _0xf757=function(_0x47afba,_0x290a9d){_0x47afba=_0x47afba-0x0;var _0x55d7b4=_0x757f[_0x47afba];return _0x55d7b4;};'use strict';var util=require(_0xf757('0x0'));var _=require('lodash');var BPromise=require(_0xf757('0x1'));var uuid=require(_0xf757('0x2'));var moment=require(_0xf757('0x3'));var rr=require('rr');var md5=require(_0xf757('0x4'));var Redis=require(_0xf757('0x5'));var ut=require(_0xf757('0x6'));var config=require(_0xf757('0x7'));var logger=require(_0xf757('0x8'))(_0xf757('0x9'));var loggerBooked=require('../../../config/logger')(_0xf757('0xa'));var loggerPredictive=require(_0xf757('0x8'))(_0xf757('0xb'));var loggerPredictiveCalls=require(_0xf757('0x8'))(_0xf757('0xc'));var loggerSyncQueueSummary=require('../../../config/logger')('syncQueueSummary');var ami=require(_0xf757('0xd'));config[_0xf757('0xe')]=_[_0xf757('0xf')](config[_0xf757('0xe')],{'host':'localhost','port':0x18eb});var io=require(_0xf757('0x10'))(new Redis(config[_0xf757('0xe')]));var cmHopper=require(_0xf757('0x11'));var cmHopperHistory=require(_0xf757('0x12'));var cmHopperBlack=require(_0xf757('0x13'));var voiceQueueRt=require(_0xf757('0x14'));var Action=require(_0xf757('0x15'));var History=require(_0xf757('0x16'));var Final=require(_0xf757('0x17'));var AgentComplete=require(_0xf757('0x18'));var QueueCallerAbandon=require(_0xf757('0x19'));var Hangup=require(_0xf757('0x1a'));var ipAgi=process[_0xf757('0x1b')][_0xf757('0x1c')]||_0xf757('0x1d');var strategy={'rrmemory':_0xf757('0x1e'),'roundrobin':_0xf757('0x1f')};var Sequence=function(){};Sequence[_0xf757('0x20')]['enqueue']=function(_0x328fed){this[_0xf757('0x21')]=this['tail']?this[_0xf757('0x21')][_0xf757('0x22')](_0x328fed):_0x328fed();};function Dialer(_0x10f49e,_0x53fdce){this[_0xf757('0x23')]=new Sequence();this[_0xf757('0x24')]=_0x53fdce;this[_0xf757('0x25')]=_0x10f49e[_0xf757('0x25')];this['campaigns']=_0x10f49e[_0xf757('0x26')];this[_0xf757('0x27')]=_0x10f49e[_0xf757('0x27')];this[_0xf757('0x28')]=_0x10f49e[_0xf757('0x28')];this['maxNumberOriginate']=config['maxNumberOriginate']||0x2;this[_0xf757('0x29')]={};this['actions']={};this['contactsId']={};this[_0xf757('0x2a')]={};this[_0xf757('0x2b')]={};this['startPredictive']={};this[_0xf757('0x2c')]={};this[_0xf757('0x2d')]={};this[_0xf757('0x2e')]={};this[_0xf757('0x2f')]={};ami['on']('agentconnect',this['syncAgentConnect'][_0xf757('0x30')](this));ami['on'](_0xf757('0x31'),this[_0xf757('0x32')][_0xf757('0x30')](this));ami['on'](_0xf757('0x33'),this[_0xf757('0x34')][_0xf757('0x30')](this));ami['on'](_0xf757('0x35'),this[_0xf757('0x36')][_0xf757('0x30')](this));ami['on']('custom:queuesummary',this['syncQueueSummary'][_0xf757('0x30')](this));ami['on'](_0xf757('0x37'),this[_0xf757('0x38')][_0xf757('0x30')](this));ami['on'](_0xf757('0x39'),this[_0xf757('0x3a')][_0xf757('0x30')](this));ami['on'](_0xf757('0x3b'),this['syncVarSet']['bind'](this));ami['on'](_0xf757('0x3c'),this['syncQueueMember'][_0xf757('0x30')](this));ami['on']('queuestatuscomplete',this[_0xf757('0x3d')][_0xf757('0x30')](this));this['loopCampaigns']();this[_0xf757('0x3e')]();}function isNotNull(_0x269388){return _0x269388!==null&&!_[_0xf757('0x3f')](_0x269388);}function checkIsLoggedIn(_0x3ad266,_0x542b16){return function(){if(_0x542b16<=0x0){_0x3ad266[_0xf757('0x40')]='AGENTS_NOT_LOGGED';throw _0x3ad266[_0xf757('0x41')]+'\x20AGENTS\x20NOT\x20LOGGED';}};}function isActive(_0xa03db8){return _0xa03db8;}function checkIsActive(_0x5b751c,_0x1df95d){return function(){if(!isActive(_0x1df95d)){_0x5b751c[_0xf757('0x40')]='NOT_ACTIVE';throw _0x5b751c[_0xf757('0x41')]+'\x20NOT\x20Active';}};}function checkInterval(_0x3e7489){return function(){if(!isNotNull(_0x3e7489['Interval'])){_0x3e7489[_0xf757('0x40')]=_0xf757('0x42');throw _0x3e7489[_0xf757('0x41')]+_0xf757('0x43');}if(!isNotNull(_0x3e7489['Interval'][_0xf757('0x44')])){_0x3e7489[_0xf757('0x40')]=_0xf757('0x42');throw _0x3e7489[_0xf757('0x41')]+_0xf757('0x43');}if(!isNotNull(_[_0xf757('0x45')](_0x3e7489[_0xf757('0x46')][_0xf757('0x44')]))){_0x3e7489[_0xf757('0x40')]='INTERVAL_IS_NULL';throw _0x3e7489[_0xf757('0x41')]+_0xf757('0x43');}};}function msgResponse(_0x444886,_0x4645dc,_0x3718fb){return{'action':_0x444886,'response':_0x4645dc,'message':_0x3718fb,'stack':_0x3718fb};}function myreject(_0x3eaaf2){return function(_0x29d6b0){return _0x3eaaf2(msgResponse(_0xf757('0x47'),_0xf757('0x48'),JSON[_0xf757('0x49')](_0x29d6b0)));};}function getSeconds(_0x555393,_0x56174b){var _0x530c8a=moment(_0x555393)['milliseconds'](0x0);var _0x2584e8=moment(_0x56174b)[_0xf757('0x4a')](0x0);return _0x530c8a[_0xf757('0x4b')](_0x2584e8,_0xf757('0x4c'));}function emit(_0x3d06c3,_0x54a332,_0x5ed195){io['to'](_0x3d06c3)[_0xf757('0x4d')](_0x54a332,_0x5ed195);}function emitVoiceQueueSummary(_0x39963b){if(_0x39963b['type']===_0xf757('0x4e')){var _0x1cb9ba={'id':_0x39963b['id'],'name':_0x39963b['name'],'strategy':_0x39963b[_0xf757('0x4f')],'answered':_0x39963b[_0xf757('0x50')],'available':_0x39963b[_0xf757('0x51')],'loggedIn':_0x39963b[_0xf757('0x52')],'pTalking':_0x39963b['pTalking'],'sumBillable':_0x39963b[_0xf757('0x53')],'sumDuration':_0x39963b[_0xf757('0x54')],'sumHoldTime':_0x39963b[_0xf757('0x55')]||0x0,'talking':_0x39963b[_0xf757('0x56')],'total':_0x39963b[_0xf757('0x57')],'type':_0x39963b['type'],'unmanaged':_0x39963b['unmanaged'],'abandoned':_0x39963b[_0xf757('0x58')],'waiting':_0x39963b[_0xf757('0x59')],'loggedInDb':_0x39963b[_0xf757('0x5a')],'dialActive':_0x39963b[_0xf757('0x5b')],'dialMethod':_0x39963b[_0xf757('0x5c')],'dialOriginateCallerIdName':_0x39963b['dialOriginateCallerIdName'],'dialOriginateCallerIdNumber':_0x39963b['dialOriginateCallerIdNumber'],'dialOriginateTimeout':_0x39963b[_0xf757('0x5d')],'dialPrefix':_0x39963b['dialPrefix'],'outboundAnswerAgiCallsDay':_0x39963b[_0xf757('0x5e')],'outboundAnswerCallsDay':_0x39963b[_0xf757('0x5f')],'outboundBlacklistCallsDay':_0x39963b[_0xf757('0x60')],'outboundBusyCallsDay':_0x39963b['outboundBusyCallsDay'],'outboundCongestionCallsDay':_0x39963b[_0xf757('0x61')],'outboundDropCallsDayACS':_0x39963b[_0xf757('0x62')],'outboundDropCallsDayCallersExit':_0x39963b['outboundDropCallsDayCallersExit'],'outboundDropCallsDayTimeout':_0x39963b[_0xf757('0x63')],'outboundNoAnswerCallsDay':_0x39963b[_0xf757('0x64')],'outboundNoSuchCallsDay':_0x39963b[_0xf757('0x65')],'outboundOriginateFailureCallsDay':_0x39963b[_0xf757('0x66')],'outboundReCallsDay':_0x39963b[_0xf757('0x67')],'outboundRejectCallsDay':_0x39963b[_0xf757('0x68')],'outboundUnknownCallsDay':_0x39963b['outboundUnknownCallsDay'],'predictiveIntervalAnsweredCalls':_0x39963b[_0xf757('0x69')],'predictiveIntervalAvgHoldtime':_0x39963b['predictiveIntervalAvgHoldtime'],'predictiveIntervalAvgTalktime':_0x39963b[_0xf757('0x6a')],'predictiveIntervalDroppedCallsCallersExit':_0x39963b[_0xf757('0x6b')],'predictiveIntervalDroppedCallsTimeout':_0x39963b[_0xf757('0x6c')],'predictiveIntervalErlangCalls':_0x39963b['predictiveIntervalErlangCalls'],'predictiveIntervalErlangCallsDroppedCalls':_0x39963b[_0xf757('0x6d')],'predictiveIntervalHitRate':_0x39963b[_0xf757('0x6e')],'predictiveIntervalMultiplicativeFactor':_0x39963b['predictiveIntervalMultiplicativeFactor'],'predictiveIntervalPauses':_0x39963b[_0xf757('0x6f')],'predictiveIntervalAvailable':_0x39963b[_0xf757('0x70')],'predictiveIntervalTotalCalls':_0x39963b[_0xf757('0x71')],'message':_0x39963b[_0xf757('0x40')],'originated':_0x39963b['originated'],'erlangCalls':_0x39963b[_0xf757('0x72')],'erlangCallToSecond':_0x39963b['erlangCallToSecond'],'erlangAbandonmentRate':_0x39963b[_0xf757('0x73')],'erlangBusyFactor':_0x39963b[_0xf757('0x74')],'startPredictive':_0x39963b[_0xf757('0x75')],'startProgressive':_0x39963b[_0xf757('0x2c')]};if(_0x39963b[_0xf757('0x76')]){_0x1cb9ba[_0xf757('0x76')]={'id':_0x39963b['Trunk']['id'],'name':_0x39963b[_0xf757('0x76')][_0xf757('0x41')],'active':_0x39963b['Trunk']['active'],'callerid':_0x39963b[_0xf757('0x76')]['callerid']};}if(_0x39963b[_0xf757('0x46')]){_0x1cb9ba[_0xf757('0x46')]={'id':_0x39963b[_0xf757('0x46')]['id'],'name':_0x39963b[_0xf757('0x46')][_0xf757('0x41')]};}var _0x27ac4d=md5(JSON[_0xf757('0x49')](_0x1cb9ba));if(_0x39963b[_0xf757('0x4')]!==_0x27ac4d){_0x39963b[_0xf757('0x4')]=_0x27ac4d;emit(util[_0xf757('0x77')](_0xf757('0x78'),_0x1cb9ba[_0xf757('0x41')]),'voice_queue:save',_0x1cb9ba);}}}function emitCampaignSummary(_0x295fd7){if(_0x295fd7[_0xf757('0x79')]===_0xf757('0x7a')){emit(util['format'](_0xf757('0x7b'),_0x295fd7[_0xf757('0x41')]),_0xf757('0x7c'),_0x295fd7);}}function checkGetDataPredictive(_0x61c367){if(isNotNull(_0x61c367)&&!_['isEmpty'](_0x61c367)){loggerPredictive[_0xf757('0x7d')]('-----\x20Stats\x20Predictive\x20---');loggerPredictive[_0xf757('0x7d')](_0xf757('0x7e'),_0x61c367[_0xf757('0x71')]);loggerPredictive[_0xf757('0x7d')](_0xf757('0x7f'),_0x61c367['predictiveIntervalAnsweredCalls']);loggerPredictive['info'](_0xf757('0x80'),_0x61c367[_0xf757('0x6c')]);loggerPredictive['info'](_0xf757('0x81'),_0x61c367['predictiveIntervalDroppedCallsCallersExit']);loggerPredictive[_0xf757('0x7d')](_0xf757('0x82'),_0x61c367[_0xf757('0x83')]);loggerPredictive['info'](_0xf757('0x84'),_0x61c367[_0xf757('0x6a')]);loggerPredictive['info'](_0xf757('0x85'));if(_0x61c367['predictiveIntervalTotalCalls']>0x0){if(!_[_0xf757('0x3f')](_0x61c367['predictiveIntervalAvgTalktime'])&&_0x61c367[_0xf757('0x6a')]>0x0){return!![];}loggerPredictive[_0xf757('0x7d')](_0xf757('0x86'));if(!_['isUndefined'](_0x61c367[_0xf757('0x83')])&&_0x61c367[_0xf757('0x83')]>0x0){return!![];}loggerPredictive[_0xf757('0x7d')](_0xf757('0x87'));}else{loggerPredictive[_0xf757('0x7d')]('Total\x20Calls\x20are\x20not\x20enough\x20for\x20predictive');}}else{loggerPredictive[_0xf757('0x7d')](_0xf757('0x88'));}return![];}function mergeDataErlangB(_0x574509){return function(_0x3f74bf){loggerPredictive[_0xf757('0x7d')](_0xf757('0x89'));loggerPredictive[_0xf757('0x7d')](_0xf757('0x8a'),_0x3f74bf[_0xf757('0x72')]);loggerPredictive[_0xf757('0x7d')](_0xf757('0x8b'),_0x3f74bf['erlangCallToSecond']);loggerPredictive['info']('Drop\x20Rate:\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20',_0x3f74bf['erlangAbandonmentRate']);loggerPredictive[_0xf757('0x7d')](_0xf757('0x8c'),_0x3f74bf['erlangBusyFactor']);loggerPredictive[_0xf757('0x7d')](_0xf757('0x8d'),_0x3f74bf[_0xf757('0x73')]);loggerPredictive[_0xf757('0x7d')](_0xf757('0x85'));_['merge'](_0x574509,_0x3f74bf);};}function getDiff(_0x42b2be){var _0xe892f2=moment()[_0xf757('0x4a')](0x0);var _0x30acc9=moment(_0x42b2be)['milliseconds'](0x0);return _0xe892f2[_0xf757('0x4b')](_0x30acc9,_0xf757('0x4c'));}function ifInterval(_0x3e140e,_0xe0cbb6){if(_[_0xf757('0x3f')](_0xe0cbb6)){return![];}return getDiff(_0xe0cbb6)<_0x3e140e*0x3c;}function freeVariablesPredictive(_0x14f918){if(isNotNull(_0x14f918)){if(!_[_0xf757('0x3f')](_0x14f918['startProgressive'])){_0x14f918[_0xf757('0x2c')]=undefined;loggerPredictive[_0xf757('0x7d')](_0x14f918[_0xf757('0x41')],_0xf757('0x8e'));}if(!_[_0xf757('0x3f')](_0x14f918[_0xf757('0x75')])){_0x14f918[_0xf757('0x75')]=undefined;loggerPredictive[_0xf757('0x7d')](_0x14f918[_0xf757('0x41')],_0xf757('0x8f'));}if(!_[_0xf757('0x3f')](_0x14f918[_0xf757('0x90')])){clearInterval(_0x14f918[_0xf757('0x90')]);_0x14f918[_0xf757('0x90')]=undefined;loggerPredictive[_0xf757('0x7d')](_0x14f918[_0xf757('0x41')],'clearing\x20variable\x20handle\x20predictive');}}}function erlangb(_0x54049b,_0x5675b1){if(_0x5675b1===0x0){return 0x0;}var _0x7f648c=0x1;for(var _0x58121f=0x1;_0x58121f<=_0x5675b1;_0x58121f+=0x1){_0x7f648c=0x1+_0x7f648c*_0x58121f/_0x54049b;}return 0x1/_0x7f648c;}function isVoiceQueueOutbound(_0x55f81e){return _0x55f81e===_0xf757('0x4e');}function isNotPreview(_0x37aa87){return _0x37aa87!==_0xf757('0x24');}function isCampaignIvr(_0x248866){return _0x248866===_0xf757('0x7a');}function getCallerId(_0x48b8d9,_0x1e315a,_0x562e88){if(!_[_0xf757('0x3f')](_0x562e88)&&typeof _0x562e88===_0xf757('0x91')&&!_[_0xf757('0x45')](_0x562e88)){if(!_['isUndefined'](_0x1e315a)&&typeof _0x1e315a===_0xf757('0x91')&&!_[_0xf757('0x45')](_0x1e315a)){return util['format']('\x22%s\x22\x20<%s>',_0x1e315a,_0x562e88);}return util[_0xf757('0x77')](_0xf757('0x92'),_0x562e88,_0x562e88);}if(!_[_0xf757('0x3f')](_0x48b8d9)&&typeof _0x48b8d9===_0xf757('0x91')&&!_[_0xf757('0x45')](_0x48b8d9)){return _0x48b8d9;}return _0xf757('0x93');}function loggerCatchQueueSummary(_0x3fe8e6,_0x4fdab7){return function(_0x34a7dc){freeVariablesPredictive(_0x4fdab7);emitVoiceQueueSummary(_0x4fdab7);emitCampaignSummary(_0x4fdab7);loggerSyncQueueSummary['error'](_0x3fe8e6,util[_0xf757('0x94')](_0x34a7dc,{'showHidden':![],'depth':null}));};}function loggerCatchPredictive(_0x5c7eea,_0x528602){return function(_0x34a5ad){loggerPredictive['error'](_0x528602['name'],_0x5c7eea);loggerPredictive[_0xf757('0x95')](_0x34a5ad['stack']);freeVariablesPredictive(_0x528602);};}function loggerCatch(_0x3b0aa5){return function(_0x1b8e66){logger[_0xf757('0x95')](_0x3b0aa5,util[_0xf757('0x94')](_0x1b8e66,{'showHidden':![],'depth':null}));};}function checkContactEmpty(_0x180441){return _0x180441&&!_['isUndefined'](_0x180441)&&_0x180441[_0xf757('0x96')]>0x0;}function decremetOriginate(_0x5802dd){if(!_[_0xf757('0x3f')](_0x5802dd)&&_0x5802dd!==null){if(typeof _0x5802dd[_0xf757('0x97')]!=='undefined'){if(_0x5802dd[_0xf757('0x97')]>0x0){_0x5802dd[_0xf757('0x97')]-=0x1;}else{logger[_0xf757('0x95')]('[decremetOriginate]\x20object\x20originated\x20is\x20negative');}}}else{logger[_0xf757('0x95')]('[decremetOriginate]\x20is\x20null\x20or\x20undefined');}}function checkContactLowerLimitOriginate(_0xb7ae49,_0x17502c,_0x14ee04){if(_0x17502c>_0x14ee04){for(var _0x245eca=0x0;_0x245eca<_0x17502c-_0x14ee04;_0x245eca+=0x1){decremetOriginate(_0xb7ae49);}}}function loggerGetContactDialer(_0x3c189e,_0x1d2d7a,_0x331a81){return function(_0x14ef2f){checkContactLowerLimitOriginate(_0x1d2d7a,_0x331a81,0x0);logger[_0xf757('0x95')](_0x3c189e,util['inspect'](_0x14ef2f,{'showHidden':![],'depth':null}));};}function sendMessageReschedule(_0x563688){return function(_0x252738){if(isNotNull(_0x252738)&&isNotNull(_0x252738[0x0])){if(_0x252738[0x0][_0xf757('0x98')]>0x0){_0x563688['message']=_0xf757('0x99');logger['info'](_0xf757('0x9a')+_0x563688['name'],_0x252738[0x0][_0xf757('0x98')],_0xf757('0x9b'));}else{_0x563688[_0xf757('0x40')]='AVAILABLE_CONTACTS_FINISHED';logger['info'](_0xf757('0x9c')+_0x563688[_0xf757('0x41')]);}}};}function notSendMessagesQueue(_0x9f3d01){if(_0x9f3d01['sendMessageOneNotActive']){freeVariablesPredictive(_0x9f3d01);if(_0x9f3d01[_0xf757('0x97')]===0x0&&_0x9f3d01['talking']===0x0&&_0x9f3d01[_0xf757('0x59')]===0x0&&(_0x9f3d01[_0xf757('0x9d')]||0x0)===0x0){_0x9f3d01[_0xf757('0x9e')]=![];_0x9f3d01[_0xf757('0x51')]=0x0;_0x9f3d01['message']=_0xf757('0x9f');loggerSyncQueueSummary[_0xf757('0x95')](_0xf757('0xa0'),_0x9f3d01[_0xf757('0x41')],_0xf757('0xa1'));}else{_0x9f3d01[_0xf757('0x40')]=_0xf757('0xa2');loggerSyncQueueSummary[_0xf757('0x95')](_0xf757('0xa0'),_0x9f3d01['name'],'is\x20disactive');}emitVoiceQueueSummary(_0x9f3d01);}}function notSendMessagesCampaign(_0x509e9a){if(_0x509e9a[_0xf757('0x9e')]){if(_0x509e9a['originated']===0x0){_0x509e9a[_0xf757('0x9e')]=![];_0x509e9a[_0xf757('0x40')]=_0xf757('0x9f');loggerSyncQueueSummary['error']('[syncQueueSummary]\x20Campaign\x20Ivr:\x20',_0x509e9a['name'],_0xf757('0xa1'));}else{_0x509e9a[_0xf757('0x40')]=_0xf757('0xa2');loggerSyncQueueSummary[_0xf757('0x95')](_0xf757('0xa3'),_0x509e9a[_0xf757('0x41')],_0xf757('0xa4'));}emitCampaignSummary(_0x509e9a);}}function createObjHistory(_0x10b9d7,_0x209b85,_0x45ab07,_0x2aa349,_0x6e69db){_0x10b9d7[_0xf757('0x40')]=_0x45ab07;var _0x3e31cb=new Action(_0x10b9d7,_0x209b85);var _0x45c8be=new History(_0x3e31cb);_0x45c8be[_0xf757('0xa5')]=_0x2aa349;_0x45c8be[_0xf757('0xa6')]=_0x6e69db;_0x45c8be['endtime']=_0x3e31cb[_0xf757('0xa7')];return _0x45c8be;}Dialer[_0xf757('0x20')][_0xf757('0x3e')]=function(){var _0x1d98b3=this;setInterval(function(){_0x1d98b3[_0xf757('0xa8')](_0x1d98b3[_0xf757('0x2a')],'[uniqueid]');_0x1d98b3['clearZombieChannels'](_0x1d98b3[_0xf757('0xa9')],'[actions]');},0x32c8);};Dialer[_0xf757('0x20')][_0xf757('0xa8')]=function(_0x438508,_0x109513){var _0xdd0af3=this;for(var _0x479bef in _0x438508){if(typeof _0x438508[_0x479bef]!==_0xf757('0xaa')){this[_0xf757('0x23')][_0xf757('0xab')](function(){if(!_[_0xf757('0xac')](_0x438508[_0x479bef])){return ami['Action']({'action':_0xf757('0xad'),'channel':_0x438508[_0x479bef]['channel']})[_0xf757('0xae')](function(_0x197349){if(_0x197349[_0xf757('0x40')]===_0xf757('0xaf')){setTimeout(function(){if(_0x438508[_0x479bef]&&_0x438508[_0x479bef]['type']!==_0xf757('0x7a')){_0xdd0af3[_0xf757('0xb0')](_0xdd0af3['voiceQueues'][_0x438508[_0x479bef][_0xf757('0xb1')]]);logger[_0xf757('0x95')](_0xf757('0xb2'),_0x109513,_0x479bef,_0x438508[_0x479bef][_0xf757('0xb1')]);delete _0x438508[_0x479bef];}if(_0x438508[_0x479bef]&&_0x438508[_0x479bef]['type']===_0xf757('0x7a')){_0xdd0af3['updateOriginated'](_0xdd0af3[_0xf757('0x26')][_0x438508[_0x479bef][_0xf757('0xb1')]]);logger[_0xf757('0x95')]('[Dialer][checkChannel][ivr]',_0x109513,_0x479bef,_0x438508[_0x479bef]['queue']);delete _0x438508[_0x479bef];}},0x2328);}});}});}}};Dialer[_0xf757('0x20')][_0xf757('0xb3')]=function(_0x267d59){return BPromise[_0xf757('0xb4')]()[_0xf757('0xb5')](cmHopper['countReScheduled'](_0x267d59))['catch'](loggerCatch(_0xf757('0xb6')));};Dialer[_0xf757('0x20')][_0xf757('0xb7')]=function(_0x52c339){return BPromise['resolve']()[_0xf757('0xb5')](cmHopperBlack['checkIsBlackList'](_0x52c339))[_0xf757('0xae')](loggerCatch('[checkIsBlackList]\x20'));};Dialer[_0xf757('0x20')][_0xf757('0xb8')]=function(_0x7b78c7){return BPromise[_0xf757('0xb4')]()['then'](cmHopperBlack[_0xf757('0xb8')](_0x7b78c7))['catch'](loggerCatch(_0xf757('0xb9')));};Dialer[_0xf757('0x20')][_0xf757('0xba')]=function(_0xd903a6){return BPromise['resolve']()[_0xf757('0xb5')](cmHopperHistory['avgHandleTime'](_0xd903a6))[_0xf757('0xae')](loggerCatch(_0xf757('0xbb')));};Dialer['prototype'][_0xf757('0xbc')]=function(_0x1ccb6e){return BPromise[_0xf757('0xb4')]()['then'](cmHopper[_0xf757('0xbc')](_0x1ccb6e))[_0xf757('0xae')](loggerCatch(_0xf757('0xbd')));};Dialer[_0xf757('0x20')]['unlockContact']=function(_0x22a1f5,_0x3bc126,_0x27a50b){return BPromise[_0xf757('0xb4')]()[_0xf757('0xb5')](cmHopper[_0xf757('0xbe')](_0x22a1f5,_0x3bc126,_0x27a50b))[_0xf757('0xae')](loggerCatch(_0xf757('0xbf')));};Dialer[_0xf757('0x20')]['getContactDialer']=function(_0x4f7301,_0x34a58c,_0x42af84,_0x17e303,_0x2d9759){return BPromise[_0xf757('0xb4')]()[_0xf757('0xb5')](cmHopper['getContactDialer'](_0x4f7301,_0x34a58c,_0x42af84,_0x17e303))[_0xf757('0xae')](function(_0x3efa23){_0x2d9759['temp']-=_0x42af84;_0x2d9759[_0xf757('0xc0')]=_0x2d9759[_0xf757('0xc0')]>0x0?_0x2d9759[_0xf757('0xc0')]:0x0;loggerCatch('[getContactDialer]\x20')(_0x3efa23);});};Dialer[_0xf757('0x20')][_0xf757('0xc1')]=function(_0x46c6d4,_0x9820a3,_0x5b1ddf,_0x1cd212){return BPromise[_0xf757('0xb4')]()[_0xf757('0xb5')](cmHopper[_0xf757('0xc1')](_0x46c6d4,_0x9820a3,_0x5b1ddf))[_0xf757('0xae')](function(_0x4e1ebe){_0x1cd212['temp']-=_0x9820a3;_0x1cd212[_0xf757('0xc0')]=_0x1cd212[_0xf757('0xc0')]>0x0?_0x1cd212[_0xf757('0xc0')]:0x0;loggerCatch(_0xf757('0xc2'))(_0x4e1ebe);});};Dialer[_0xf757('0x20')]['getVoiceQueueRtPauses']=function(_0x56e67d){return BPromise[_0xf757('0xb4')]()[_0xf757('0xb5')](voiceQueueRt[_0xf757('0xc3')](_0x56e67d))[_0xf757('0xae')](loggerCatch(_0xf757('0xc4')));};Dialer[_0xf757('0x20')]['moveContactManagedDialer']=function(_0x492637){return BPromise['resolve']()[_0xf757('0xb5')](cmHopper[_0xf757('0xc5')](_0x492637))['catch'](loggerCatch(_0xf757('0xc6')));};Dialer[_0xf757('0x20')][_0xf757('0xc7')]=function(_0x57daf0){return BPromise[_0xf757('0xb4')]()[_0xf757('0xb5')](cmHopperHistory[_0xf757('0xc7')](_0x57daf0))[_0xf757('0xae')](loggerCatch('[createHistory]\x20'));};Dialer['prototype'][_0xf757('0xb0')]=function(_0x1dea58){if(!_['isUndefined'](_0x1dea58)&&_0x1dea58!==null){if(typeof _0x1dea58[_0xf757('0x97')]!==_0xf757('0xaa')){if(_0x1dea58[_0xf757('0x97')]>0x0){_0x1dea58[_0xf757('0x97')]-=0x1;}else{logger['error']('[updateOriginated]\x20object\x20originated\x20is\x20negative');}}}else{logger['error'](_0xf757('0xc8'));}};Dialer[_0xf757('0x20')]['loggerHandler']=function(_0x5b68c4,_0x73c677){var _0x5a6088=this;return function(_0x47fe66){_0x5a6088['updateOriginated'](_0x73c677);logger['error'](_0x5b68c4,util['inspect'](_0x47fe66,{'showHidden':![],'depth':null}));};};Dialer['prototype'][_0xf757('0xc9')]=function(_0x353387,_0x340082,_0x2f41fb){var _0x42890b={'state':0x19,'statedesc':_0xf757('0xca')};this[_0xf757('0xb0')](_0x340082);this['saveInDb'](_[_0xf757('0xcb')](_0x42890b,_[_0xf757('0xcc')](_0x2f41fb,[_0xf757('0xcd'),_0xf757('0xce'),_0xf757('0xcf'),'VoiceQueueId','CampaignId'])),_0xf757('0xd0'),'[emptyContact]');logger[_0xf757('0x95')](_0x353387);};Dialer['prototype'][_0xf757('0xd1')]=function(_0x3d4287){return _0x3d4287===_0xf757('0xd2');};Dialer['prototype'][_0xf757('0xd3')]=function(_0x3ce113){return!_[_0xf757('0x3f')](_0x3ce113)&&_0x3ce113&&!_['isUndefined'](_0x3ce113[_0xf757('0x41')])&&!_[_0xf757('0x3f')](_0x3ce113['active'])&&_0x3ce113[_0xf757('0xd4')]&&(this['trunks'][util['format'](_0xf757('0xd5'),_0x3ce113['name'])][_0xf757('0xad')]===_0xf757('0xd6')||this[_0xf757('0x28')][util[_0xf757('0x77')](_0xf757('0xd5'),_0x3ce113[_0xf757('0x41')])][_0xf757('0xad')]===_0xf757('0xd7'));};Dialer[_0xf757('0x20')][_0xf757('0xd8')]=function(_0xc71617,_0x1cfddc,_0x5e6dd5){this[_0xf757('0xc7')](_0xc71617)[_0xf757('0xae')](loggerCatch(_0x1cfddc));this[_0xf757('0xc5')](_0xc71617)[_0xf757('0xae')](loggerCatch(_0x5e6dd5));};Dialer[_0xf757('0x20')]['syncVarSet']=function(_0x489ef9){var _0x3a249f=this['uniqueId'][_0x489ef9[_0xf757('0xd9')]];var _0x16b216;if(!_['isNil'](_0x489ef9)&&!_[_0xf757('0xac')](_0x489ef9[_0xf757('0xda')])&&!_[_0xf757('0xac')](_0x489ef9[_0xf757('0xda')][_0xf757('0xdb')])&&_0x489ef9[_0xf757('0xdc')]===_0xf757('0xdd')&&_0x3a249f){if(_0x3a249f[_0xf757('0x79')]!==_0xf757('0x7a')&&this[_0xf757('0x25')][_0x3a249f[_0xf757('0xb1')]][_0xf757('0xde')]&&_0x489ef9[_0xf757('0xdf')]==='HANGUP'){delete this[_0xf757('0x2a')][_0x489ef9[_0xf757('0xd9')]];this[_0xf757('0xb0')](this[_0xf757('0x25')][_0x3a249f['queue']]);this[_0xf757('0x25')][_0x3a249f[_0xf757('0xb1')]][_0xf757('0x5f')]+=0x1;this['voiceQueues'][_0x3a249f[_0xf757('0xb1')]][_0xf757('0x5e')]+=0x1;_0x16b216=new Hangup(_0x3a249f,_0x489ef9);_0x16b216['state']=0x12;_0x16b216['statedesc']=_0xf757('0xe0');_0x16b216['membername']=_0xf757('0xe1');ami['emit'](_0xf757('0xe2'),ut[_0xf757('0xe3')](_0x16b216,_0xf757('0xe4')));this[_0xf757('0xd8')](_0x16b216,_0xf757('0xe5'),'[syncHangupInAMD]');}if(_0x3a249f['type']!==_0xf757('0x7a')&&this[_0xf757('0x25')][_0x3a249f['queue']][_0xf757('0xde')]&&_0x489ef9[_0xf757('0xdf')]===_0xf757('0xe6')){var _0x5e9ddc=this;return new BPromise(function(_0x27c08b,_0x542b3d){delete _0x5e9ddc[_0xf757('0x2a')][_0x489ef9[_0xf757('0xd9')]];_0x5e9ddc[_0xf757('0xb0')](_0x5e9ddc[_0xf757('0x25')][_0x3a249f[_0xf757('0xb1')]]);_0x5e9ddc[_0xf757('0x25')][_0x3a249f['queue']][_0xf757('0x5f')]+=0x1;_0x5e9ddc[_0xf757('0x25')][_0x3a249f[_0xf757('0xb1')]][_0xf757('0x5e')]+=0x1;var _0x284888=_0x5e9ddc[_0xf757('0x25')][_0x3a249f[_0xf757('0xb1')]];var _0x178a05=new Hangup(_0x3a249f,_0x489ef9);_0x178a05[_0xf757('0xa5')]=0x13;_0x178a05[_0xf757('0xa6')]=_0xf757('0xe7');_0x178a05[_0xf757('0xe8')]=_0xf757('0xe1');_0x178a05['countmachineretry']+=0x1;_0x178a05[_0xf757('0xe9')]+=0x1;_0x178a05['amd']=!![];ami[_0xf757('0x4d')](_0xf757('0xe2'),ut[_0xf757('0xe3')](_0x178a05,_0xf757('0xe4')));_0x5e9ddc[_0xf757('0xc7')](_0x178a05)[_0xf757('0xae')](loggerCatch('[syncAgentComplete][createHistory][0]'));if(_0x178a05[_0xf757('0xea')]+_0x178a05[_0xf757('0xeb')]+_0x178a05[_0xf757('0xec')]+_0x178a05[_0xf757('0xed')]+_0x178a05[_0xf757('0xee')]+_0x178a05['countabandonedretry']+_0x178a05['countmachineretry']+_0x178a05['countagentrejectretry']>=_0x284888[_0xf757('0xef')]){_0x5e9ddc[_0xf757('0xf0')](_0x178a05,_0x27c08b,_0x542b3d,_0xf757('0xf1'));}else{if(_0x178a05[_0xf757('0xf2')]>=_0x284888[_0xf757('0xf3')]){_0x5e9ddc['createStateFinal'](_0x178a05,_0x27c08b,_0x542b3d,'reason\x2019\x20machine....');}else{_0x5e9ddc[_0xf757('0xbc')]({'active':![],'countmachineretry':_0x178a05[_0xf757('0xf2')],'scheduledat':moment()[_0xf757('0xf4')](_0x284888[_0xf757('0xf5')],_0xf757('0xf6'))[_0xf757('0x77')](_0xf757('0xf7')),'ContactId':_0x178a05[_0xf757('0xcd')],'ListId':_0x178a05[_0xf757('0xce')],'VoiceQueueId':_0x178a05[_0xf757('0xf8')]||undefined,'CampaignId':_0x178a05[_0xf757('0xf9')]||undefined})[_0xf757('0xae')](loggerCatch(_0xf757('0xfa')));_0x27c08b({'reschedule':0x1});}}});}if(_0x3a249f[_0xf757('0x79')]===_0xf757('0x7a')&&this['campaigns'][_0x3a249f[_0xf757('0xb1')]][_0xf757('0xde')]&&_0x489ef9[_0xf757('0xdf')]==='HANGUP'){delete this[_0xf757('0x2a')][_0x489ef9['uniqueid']];this[_0xf757('0xb0')](this[_0xf757('0x26')][_0x3a249f[_0xf757('0xb1')]]);_0x16b216=new Hangup(_0x3a249f,_0x489ef9);_0x16b216[_0xf757('0xa5')]=0x12;_0x16b216[_0xf757('0xa6')]=_0xf757('0xe0');_0x16b216['membername']=_0xf757('0xe1');ami[_0xf757('0x4d')]('custom:amd',ut['buildObj'](_0x16b216,_0xf757('0xe4')));this['saveInDb'](_0x16b216,_0xf757('0xfb'),_0xf757('0xfc'));}if(_0x3a249f[_0xf757('0x79')]==='ivr'&&this['campaigns'][_0x3a249f[_0xf757('0xb1')]][_0xf757('0xde')]&&_0x489ef9[_0xf757('0xdf')]===_0xf757('0xe6')){var _0x5e9ddc=this;return new BPromise(function(_0x169cf5,_0xe38dc1){delete _0x5e9ddc[_0xf757('0x2a')][_0x489ef9[_0xf757('0xd9')]];_0x5e9ddc['updateOriginated'](_0x5e9ddc[_0xf757('0x26')][_0x3a249f[_0xf757('0xb1')]]);_0x5e9ddc['campaigns'][_0x3a249f[_0xf757('0xb1')]][_0xf757('0x5f')]+=0x1;_0x5e9ddc['campaigns'][_0x3a249f['queue']][_0xf757('0x5e')]+=0x1;var _0x5a5834=_0x5e9ddc['campaigns'][_0x3a249f[_0xf757('0xb1')]];var _0x13e3d5=new Hangup(_0x3a249f,_0x489ef9);_0x13e3d5['state']=0x13;_0x13e3d5['statedesc']=_0xf757('0xe7');_0x13e3d5[_0xf757('0xe8')]=_0xf757('0xe1');_0x13e3d5[_0xf757('0xf2')]+=0x1;_0x13e3d5[_0xf757('0xe9')]+=0x1;_0x13e3d5[_0xf757('0xe4')]=!![];ami[_0xf757('0x4d')](_0xf757('0xe2'),ut[_0xf757('0xe3')](_0x13e3d5,'amd'));_0x5e9ddc[_0xf757('0xc7')](_0x13e3d5)[_0xf757('0xae')](loggerCatch(_0xf757('0xfd')));if(_0x13e3d5[_0xf757('0xea')]+_0x13e3d5['countcongestionretry']+_0x13e3d5[_0xf757('0xec')]+_0x13e3d5[_0xf757('0xed')]+_0x13e3d5[_0xf757('0xee')]+_0x13e3d5['countabandonedretry']+_0x13e3d5[_0xf757('0xf2')]+_0x13e3d5[_0xf757('0xfe')]>=_0x5a5834[_0xf757('0xef')]){_0x5e9ddc[_0xf757('0xf0')](_0x13e3d5,_0x169cf5,_0xe38dc1,_0xf757('0xf1'));}else{if(_0x13e3d5[_0xf757('0xf2')]>=_0x5a5834[_0xf757('0xf3')]){_0x5e9ddc[_0xf757('0xff')](_0x13e3d5,_0x169cf5,_0xe38dc1,_0xf757('0x100'));}else{_0x5e9ddc['rescheduleContact']({'active':![],'countmachineretry':_0x13e3d5[_0xf757('0xf2')],'scheduledat':moment()[_0xf757('0xf4')](_0x5a5834[_0xf757('0xf5')],_0xf757('0xf6'))[_0xf757('0x77')](_0xf757('0xf7')),'ContactId':_0x13e3d5[_0xf757('0xcd')],'ListId':_0x13e3d5[_0xf757('0xce')],'VoiceQueueId':_0x13e3d5[_0xf757('0xf8')]||undefined,'CampaignId':_0x13e3d5[_0xf757('0xf9')]||undefined})['catch'](loggerCatch('[rescheduleContact][Machine]'));_0x169cf5({'reschedule':0x1});}}});}}};Dialer[_0xf757('0x20')]['syncHangup']=function(_0x3c33fe){var _0x242d02=this[_0xf757('0x2a')][_0x3c33fe[_0xf757('0xd9')]];var _0x53f8fa=this;var _0x104310;if(_0x242d02&&_0x242d02[_0xf757('0x79')]==='ivr'){delete this[_0xf757('0x2a')][_0x3c33fe[_0xf757('0xd9')]];this[_0xf757('0xb0')](this[_0xf757('0x26')][_0x242d02[_0xf757('0xb1')]]);this['campaigns'][_0x242d02[_0xf757('0xb1')]][_0xf757('0x101')]+=0x1;_0x104310=new Hangup(_0x242d02,_0x3c33fe);this[_0xf757('0xc7')](_0x104310)[_0xf757('0xae')](loggerCatch('[syncHangupIvr][createHistory]'));this[_0xf757('0xc5')](_0x104310)[_0xf757('0xae')](loggerCatch(_0xf757('0x102')));}if(_0x242d02&&_0x242d02[_0xf757('0x79')]!=='ivr'&&isNotNull(this['voiceQueues'][_0x242d02[_0xf757('0xb1')]][_0xf757('0x103')])){delete this[_0xf757('0x2a')][_0x3c33fe[_0xf757('0xd9')]];this[_0xf757('0xb0')](this['voiceQueues'][_0x242d02[_0xf757('0xb1')]]);this[_0xf757('0x25')][_0x242d02['queue']][_0xf757('0x5f')]+=0x1;this['voiceQueues'][_0x242d02[_0xf757('0xb1')]]['outboundAnswerAgiCallsDay']+=0x1;_0x104310=new Hangup(_0x242d02,_0x3c33fe);_0x104310['state']=0x10;_0x104310['statedesc']=_0xf757('0x104');_0x104310[_0xf757('0xe8')]=_0xf757('0x105');this[_0xf757('0xc7')](_0x104310)['catch'](loggerCatch(_0xf757('0x106')));this[_0xf757('0xc5')](_0x104310)['catch'](loggerCatch(_0xf757('0x102')));}if(_0x242d02&&_0x242d02[_0xf757('0x79')]!==_0xf757('0x7a')&&!isNotNull(this[_0xf757('0x25')][_0x242d02[_0xf757('0xb1')]][_0xf757('0x103')])){delete this[_0xf757('0x2a')][_0x3c33fe[_0xf757('0xd9')]];this['updateOriginated'](this[_0xf757('0x25')][_0x242d02[_0xf757('0xb1')]]);this['voiceQueues'][_0x242d02[_0xf757('0xb1')]][_0xf757('0x107')]+=0x1;_0x104310=new Hangup(_0x242d02,_0x3c33fe);_0x104310[_0xf757('0xa5')]=0xc;_0x104310['statedesc']=_0x3c33fe[_0xf757('0x108')];_0x104310[_0xf757('0xe8')]=_0xf757('0x109');this[_0xf757('0xc7')](_0x104310)[_0xf757('0xae')](loggerCatch('[syncHangupIvr][createHistory]'));this[_0xf757('0xc5')](_0x104310)[_0xf757('0xae')](loggerCatch(_0xf757('0x102')));}};Dialer[_0xf757('0x20')][_0xf757('0x36')]=function(_0x45161b){var _0x5bbecc=this[_0xf757('0x2a')][_0x45161b[_0xf757('0xd9')]];var _0x55cd32=this;if(this[_0xf757('0x25')][_0x45161b[_0xf757('0xb1')]]){if(_0x5bbecc&&_0x5bbecc[_0xf757('0x79')]!==_0xf757('0x7a')){delete this['uniqueId'][_0x45161b['uniqueid']];this['voiceQueues'][_0x45161b['queue']][_0xf757('0x5f')]+=0x1;var _0x1a20c2=new AgentComplete(_0x5bbecc,_0x45161b);if(_0x45161b[_0xf757('0x10a')]===_0xf757('0x10b')){_0x1a20c2[_0xf757('0x10c')]=this[_0xf757('0x25')][_0x45161b[_0xf757('0xb1')]][_0xf757('0x10d')]&&this['voiceQueues'][_0x45161b['queue']][_0xf757('0x10e')]?moment()[_0xf757('0x77')](_0xf757('0xf7')):undefined;}this[_0xf757('0xc7')](_0x1a20c2)['catch'](loggerCatch(_0xf757('0x10f')));this['moveContactManagedDialer'](_0x1a20c2)['catch'](loggerCatch(_0xf757('0x110')));}}};Dialer[_0xf757('0x20')][_0xf757('0x111')]=function(_0x47f60a){if(this['voiceQueues'][_0x47f60a[_0xf757('0xb1')]]){if(this[_0xf757('0x2a')][_0x47f60a[_0xf757('0xd9')]]&&this[_0xf757('0x2a')][_0x47f60a[_0xf757('0xd9')]]['type']!=='ivr'){this['updateOriginated'](this[_0xf757('0x25')][_0x47f60a[_0xf757('0xb1')]]);this[_0xf757('0x2a')][_0x47f60a['uniqueid']]['answertime']=moment()[_0xf757('0x77')]('YYYY-MM-DD\x20HH:mm:ss');}}};Dialer[_0xf757('0x20')]['queueCallerAbandonCreateState']=function(_0x24bd1a){this[_0xf757('0xc7')](_0x24bd1a)[_0xf757('0xae')](loggerCatch(_0xf757('0x10f')));this[_0xf757('0xc5')](_0x24bd1a)['catch'](loggerCatch(_0xf757('0x112')));};Dialer[_0xf757('0x20')]['syncQueueCallerAbandon']=function(_0x3fa3e4){var _0x13daff=this[_0xf757('0x2a')][_0x3fa3e4[_0xf757('0xd9')]];var _0x1ebfee=this;if(this['voiceQueues'][_0x3fa3e4[_0xf757('0xb1')]]){if(_0x13daff&&_0x13daff[_0xf757('0x79')]!=='ivr'){delete this[_0xf757('0x2a')][_0x3fa3e4[_0xf757('0xd9')]];this[_0xf757('0xb0')](this[_0xf757('0x25')][_0x3fa3e4[_0xf757('0xb1')]]);_0x13daff[_0xf757('0x113')]=moment()[_0xf757('0x77')](_0xf757('0xf7'));var _0x344cf2=new QueueCallerAbandon(_0x13daff,_0x3fa3e4);if(getSeconds(_0x13daff[_0xf757('0x113')],_0x13daff['responsetime'])>=_0x13daff[_0xf757('0x114')]){this[_0xf757('0x25')][_0x3fa3e4[_0xf757('0xb1')]][_0xf757('0x6c')]+=0x1;this[_0xf757('0x25')][_0x3fa3e4['queue']]['outboundDropCallsDayTimeout']+=0x1;this[_0xf757('0x25')][_0x3fa3e4['queue']][_0xf757('0x6d')]+=0x1;_0x344cf2[_0xf757('0xa5')]=0xa;_0x344cf2[_0xf757('0xa6')]='Drop';_0x344cf2[_0xf757('0x115')]=_0xf757('0x116');_0x344cf2[_0xf757('0x10c')]=this[_0xf757('0x25')][_0x3fa3e4[_0xf757('0xb1')]]['dialQueueProject2']?moment()[_0xf757('0x77')](_0xf757('0xf7')):undefined;_0x344cf2[_0xf757('0xee')]+=0x1;_0x344cf2[_0xf757('0xe9')]+=0x1;if(_0x344cf2[_0xf757('0xee')]>=this[_0xf757('0x25')][_0x3fa3e4[_0xf757('0xb1')]][_0xf757('0x117')]){this['queueCallerAbandonCreateState'](_0x344cf2);}else{this['rescheduleContact']({'active':![],'countdropretry':_0x344cf2[_0xf757('0xee')],'scheduledat':moment()[_0xf757('0xf4')](this[_0xf757('0x25')][_0x3fa3e4[_0xf757('0xb1')]][_0xf757('0x118')],'minutes')[_0xf757('0x77')](_0xf757('0xf7')),'ContactId':_0x13daff['ContactId'],'ListId':_0x13daff['ListId'],'VoiceQueueId':_0x13daff[_0xf757('0xf8')]||undefined,'CampaignId':_0x13daff['CampaignId']||undefined})[_0xf757('0xae')](loggerCatch('[rescheduleContact][Drop]'));var _0x3ea98c=new History(_0x344cf2);_0x3ea98c[_0xf757('0xa5')]=0xa;_0x3ea98c[_0xf757('0xa6')]=_0xf757('0x119');_0x3ea98c[_0xf757('0xa7')]=moment()['format'](_0xf757('0xf7'));_0x3ea98c[_0xf757('0x11a')]=_0x3ea98c[_0xf757('0xa7')];_0x3ea98c['calleridname']=_0x344cf2[_0xf757('0x11b')];_0x3ea98c['calleridnum']=_0x344cf2[_0xf757('0x11c')];this[_0xf757('0xc7')](_0x3ea98c)['catch'](loggerCatch(_0xf757('0x11d')));}}else{this[_0xf757('0x25')][_0x3fa3e4[_0xf757('0xb1')]]['predictiveIntervalDroppedCallsCallersExit']+=0x1;this[_0xf757('0x25')][_0x3fa3e4[_0xf757('0xb1')]][_0xf757('0x11e')]+=0x1;_0x344cf2['state']=0xb;_0x344cf2[_0xf757('0xa6')]=_0xf757('0x11f');_0x344cf2[_0xf757('0x115')]=_0xf757('0x120');_0x344cf2[_0xf757('0x121')]+=0x1;_0x344cf2['countglobal']+=0x1;if(_0x344cf2[_0xf757('0x121')]>=this['voiceQueues'][_0x3fa3e4['queue']]['dialAbandonedMaxRetry']){this['queueCallerAbandonCreateState'](_0x344cf2);}else{this['rescheduleContact']({'active':![],'countabandonedretry':_0x344cf2[_0xf757('0x121')],'scheduledat':moment()[_0xf757('0xf4')](this['voiceQueues'][_0x3fa3e4[_0xf757('0xb1')]][_0xf757('0x122')],'minutes')[_0xf757('0x77')]('YYYY-MM-DD\x20HH:mm:ss'),'ContactId':_0x13daff[_0xf757('0xcd')],'ListId':_0x13daff['ListId'],'VoiceQueueId':_0x13daff[_0xf757('0xf8')]||undefined,'CampaignId':_0x13daff[_0xf757('0xf9')]||undefined})[_0xf757('0xae')](loggerCatch(_0xf757('0x123')));var _0x3ea98c=new History(_0x344cf2);_0x3ea98c['state']=0xb;_0x3ea98c[_0xf757('0xa6')]=_0xf757('0x11f');_0x3ea98c[_0xf757('0xa7')]=moment()[_0xf757('0x77')](_0xf757('0xf7'));_0x3ea98c['endtime']=_0x3ea98c['starttime'];_0x3ea98c[_0xf757('0x11b')]=_0x344cf2[_0xf757('0x11b')];_0x3ea98c[_0xf757('0x11c')]=_0x344cf2['calleridnum'];this[_0xf757('0xc7')](_0x3ea98c)[_0xf757('0xae')](loggerCatch('[syncAgentComplete][createHistory][11]'));}}}}};Dialer[_0xf757('0x20')][_0xf757('0x3a')]=function(_0x4b91b0){if(this[_0xf757('0xa9')][_0x4b91b0[_0xf757('0xd9')]]){this[_0xf757('0xa9')][_0x4b91b0[_0xf757('0xd9')]][_0xf757('0x124')]=_0x4b91b0[_0xf757('0x124')];}if(this[_0xf757('0x2a')][_0x4b91b0[_0xf757('0xd9')]]){this[_0xf757('0x2a')][_0x4b91b0[_0xf757('0xd9')]]['channel']=_0x4b91b0['channel'];}};Dialer[_0xf757('0x20')]['syncQueueMember']=function(_0x3e6114){if(strategy[this['voiceQueues'][this[_0xf757('0xa9')][_0x3e6114[_0xf757('0x125')]][_0xf757('0xb1')]][_0xf757('0x4f')]]===_0xf757('0x1f')){if(this[_0xf757('0xa9')][_0x3e6114[_0xf757('0x125')]]&&_[_0xf757('0xac')](this[_0xf757('0xa9')][_0x3e6114[_0xf757('0x125')]][_0xf757('0x126')])&&_0x3e6114[_0xf757('0xad')]==='1'&&_0x3e6114[_0xf757('0x127')]==='0'){if(this[_0xf757('0x27')][_0x3e6114[_0xf757('0x128')]]){if(!this[_0xf757('0x27')][_0x3e6114['stateinterface']][_0xf757('0x126')]){this['agents'][_0x3e6114[_0xf757('0x128')]][_0xf757('0x126')]=!![];this['actions'][_0x3e6114[_0xf757('0x125')]][_0xf757('0x126')]=!![];this[_0xf757('0xa9')][_0x3e6114[_0xf757('0x125')]][_0xf757('0x128')]=_0x3e6114[_0xf757('0x128')];}}}}else if((strategy[this[_0xf757('0x25')][this[_0xf757('0xa9')][_0x3e6114[_0xf757('0x125')]][_0xf757('0xb1')]][_0xf757('0x4f')]]||_0xf757('0x1e'))===_0xf757('0x1e')){if(this[_0xf757('0xa9')][_0x3e6114[_0xf757('0x125')]]){if(this['agents'][_0x3e6114[_0xf757('0x128')]]){this[_0xf757('0xa9')][_0x3e6114[_0xf757('0x125')]][_0xf757('0x128')]=_0x3e6114[_0xf757('0x128')];if(_[_0xf757('0xac')](this[_0xf757('0x2e')][this['actions'][_0x3e6114['actionid']][_0xf757('0xb1')]])){this[_0xf757('0x2e')][this['actions'][_0x3e6114[_0xf757('0x125')]][_0xf757('0xb1')]]=[];}this[_0xf757('0x2e')][this['actions'][_0x3e6114[_0xf757('0x125')]][_0xf757('0xb1')]][_0xf757('0x129')](_[_0xf757('0xcb')](_[_0xf757('0xcc')](this[_0xf757('0xa9')][_0x3e6114[_0xf757('0x125')]],['idHopper',_0xf757('0x128')]),{'status':_0x3e6114[_0xf757('0xad')],'paused':_0x3e6114['paused']}));}}}};function unlockQueueStatus(_0x228a4f,_0x28c870){setTimeout(function(){if(_[_0xf757('0x3f')](_0x228a4f[_0xf757('0x12a')])){loggerBooked['error'](_0xf757('0x12b'),_0x28c870);}_0x228a4f['queueStatusComplete']=!![];loggerBooked['info']('[booked][unlockQueueStatus]',_0x28c870,JSON[_0xf757('0x49')](_['pick'](_0x228a4f,[_0xf757('0x41'),_0xf757('0x12a')])));},0x1f3);}Dialer[_0xf757('0x20')]['syncQueueStatusComplete']=function(_0x5a4a61){var _0x3d9115=this;var _0x57a352=_0x3d9115[_0xf757('0x25')][_0x3d9115['actions'][_0x5a4a61[_0xf757('0x125')]]['queue']];if(strategy[this['voiceQueues'][this[_0xf757('0xa9')][_0x5a4a61[_0xf757('0x125')]][_0xf757('0xb1')]][_0xf757('0x4f')]]===_0xf757('0x1f')){if(this[_0xf757('0xa9')][_0x5a4a61[_0xf757('0x125')]]&&this[_0xf757('0xa9')][_0x5a4a61[_0xf757('0x125')]][_0xf757('0x128')]){this[_0xf757('0x24')][_0xf757('0x12c')](this['actions'][_0x5a4a61[_0xf757('0x125')]][_0xf757('0x12d')],this[_0xf757('0xa9')][_0x5a4a61[_0xf757('0x125')]][_0xf757('0x128')])['catch'](function(_0x374a5f){logger[_0xf757('0x95')](_0xf757('0x12e'),util[_0xf757('0x94')](_0x374a5f,{'showHidden':![],'depth':null}));})[_0xf757('0x22')](function(){_0x3d9115[_0xf757('0xb0')](_0x3d9115[_0xf757('0x25')][_0x3d9115[_0xf757('0xa9')][_0x5a4a61[_0xf757('0x125')]][_0xf757('0xb1')]]);_0x3d9115[_0xf757('0x27')][_0x3d9115['actions'][_0x5a4a61['actionid']]['stateinterface']]['locked']=![];delete _0x3d9115['actions'][_0x5a4a61[_0xf757('0x125')]];unlockQueueStatus(_0x57a352);});}else{this['updateOriginated'](this[_0xf757('0x25')][this[_0xf757('0xa9')][_0x5a4a61[_0xf757('0x125')]][_0xf757('0xb1')]]);this[_0xf757('0xbc')]({'active':![],'ContactId':this['actions'][_0x5a4a61[_0xf757('0x125')]]['ContactId'],'ListId':this[_0xf757('0xa9')][_0x5a4a61[_0xf757('0x125')]]['ListId'],'VoiceQueueId':this['actions'][_0x5a4a61[_0xf757('0x125')]][_0xf757('0xf8')]||undefined,'CampaignId':this['actions'][_0x5a4a61[_0xf757('0x125')]][_0xf757('0xf9')]||undefined})[_0xf757('0xae')](loggerCatch(_0xf757('0x12f')));delete this['actions'][_0x5a4a61[_0xf757('0x125')]];unlockQueueStatus(_0x57a352);}}else if((strategy[this['voiceQueues'][this[_0xf757('0xa9')][_0x5a4a61[_0xf757('0x125')]][_0xf757('0xb1')]][_0xf757('0x4f')]]||_0xf757('0x1e'))===_0xf757('0x1e')){var _0x10f2ab;if(this[_0xf757('0xa9')][_0x5a4a61[_0xf757('0x125')]]&&!_[_0xf757('0x45')](this[_0xf757('0x2e')][this[_0xf757('0xa9')][_0x5a4a61[_0xf757('0x125')]][_0xf757('0xb1')]])){if(this[_0xf757('0x2f')][_0x3d9115[_0xf757('0xa9')][_0x5a4a61[_0xf757('0x125')]][_0xf757('0xb1')]]){this[_0xf757('0x2f')][_0x3d9115[_0xf757('0xa9')][_0x5a4a61['actionid']][_0xf757('0xb1')]]=this[_0xf757('0x2f')][this[_0xf757('0xa9')][_0x5a4a61[_0xf757('0x125')]][_0xf757('0xb1')]]?this[_0xf757('0x2f')][this[_0xf757('0xa9')][_0x5a4a61[_0xf757('0x125')]][_0xf757('0xb1')]]:this['queueBooked'][this[_0xf757('0xa9')][_0x5a4a61[_0xf757('0x125')]][_0xf757('0xb1')]]?this[_0xf757('0x2e')][this[_0xf757('0xa9')][_0x5a4a61[_0xf757('0x125')]][_0xf757('0xb1')]][_0xf757('0x130')]||0x0:0x0;}this[_0xf757('0x2e')][this['actions'][_0x5a4a61[_0xf757('0x125')]][_0xf757('0xb1')]][_0xf757('0x130')]=this[_0xf757('0x2f')][this[_0xf757('0xa9')][_0x5a4a61['actionid']][_0xf757('0xb1')]];for(var _0x1226c1=0x0;_0x1226c1<this['queueBooked'][this[_0xf757('0xa9')][_0x5a4a61['actionid']][_0xf757('0xb1')]][_0xf757('0x96')];_0x1226c1+=0x1){_0x10f2ab=rr(this[_0xf757('0x2e')][this[_0xf757('0xa9')][_0x5a4a61['actionid']][_0xf757('0xb1')]]);this[_0xf757('0x2f')][_0x3d9115[_0xf757('0xa9')][_0x5a4a61['actionid']][_0xf757('0xb1')]]=this[_0xf757('0x2e')][this['actions'][_0x5a4a61[_0xf757('0x125')]]['queue']][_0xf757('0x130')];if(_0x10f2ab[_0xf757('0xad')]==='1'&&_0x10f2ab[_0xf757('0x127')]==='0'){break;}}if(!_['isNil'](_0x10f2ab)){this[_0xf757('0x27')][_0x10f2ab[_0xf757('0x128')]][_0xf757('0x131')]=_[_0xf757('0x3f')](this[_0xf757('0x27')][_0x10f2ab['stateinterface']]['unlockRR'])?!![]:this[_0xf757('0x27')][_0x10f2ab[_0xf757('0x128')]][_0xf757('0x131')];}loggerBooked[_0xf757('0x7d')](_0xf757('0x132'),_0x5a4a61[_0xf757('0x125')],_0xf757('0x133'),JSON[_0xf757('0x49')](_[_0xf757('0xcc')](this[_0xf757('0x27')][_0x10f2ab[_0xf757('0x128')]],[_0xf757('0x41'),_0xf757('0x131')])),'contactAgent-idHopper:\x20',JSON[_0xf757('0x49')](_0x10f2ab['idHopper']));if(!_[_0xf757('0xac')](_0x10f2ab)&&_0x10f2ab[_0xf757('0xad')]==='1'&&_0x10f2ab[_0xf757('0x127')]==='0'&&this[_0xf757('0x27')][_0x10f2ab[_0xf757('0x128')]][_0xf757('0x131')]){this['agents'][_0x10f2ab[_0xf757('0x128')]][_0xf757('0x131')]=![];this['queueBooked'][_0x3d9115['actions'][_0x5a4a61[_0xf757('0x125')]][_0xf757('0xb1')]]=[];this[_0xf757('0x24')][_0xf757('0x12c')](_0x10f2ab[_0xf757('0x12d')],_0x10f2ab[_0xf757('0x128')])[_0xf757('0xae')](function(_0x4815b0){logger[_0xf757('0x95')](_0xf757('0x12e'),util['inspect'](_0x4815b0,{'showHidden':![],'depth':null}));})['finally'](function(){_0x3d9115[_0xf757('0xb0')](_0x3d9115[_0xf757('0x25')][_0x3d9115[_0xf757('0xa9')][_0x5a4a61[_0xf757('0x125')]]['queue']]);setTimeout(function(){_0x3d9115[_0xf757('0x27')][_0x10f2ab[_0xf757('0x128')]][_0xf757('0x131')]=!![];loggerBooked[_0xf757('0x7d')]('[booked][RR][finaly]',_0x5a4a61[_0xf757('0x125')],_0xf757('0x133'),JSON[_0xf757('0x49')](_[_0xf757('0xcc')](_0x3d9115[_0xf757('0x27')][_0x10f2ab['stateinterface']],[_0xf757('0x41'),_0xf757('0x131')])),'contactAgent-idHopper:\x20',JSON[_0xf757('0x49')](_0x10f2ab[_0xf757('0x12d')]));},0xc7);delete _0x3d9115[_0xf757('0xa9')][_0x5a4a61['actionid']];unlockQueueStatus(_0x57a352,_0x5a4a61[_0xf757('0x125')]);});}else{loggerBooked[_0xf757('0x7d')](_0xf757('0x134'));this[_0xf757('0xb0')](this[_0xf757('0x25')][this[_0xf757('0xa9')][_0x5a4a61['actionid']][_0xf757('0xb1')]]);this[_0xf757('0xbc')]({'active':![],'ContactId':this[_0xf757('0xa9')][_0x5a4a61['actionid']][_0xf757('0xcd')],'ListId':this[_0xf757('0xa9')][_0x5a4a61[_0xf757('0x125')]][_0xf757('0xce')],'VoiceQueueId':this[_0xf757('0xa9')][_0x5a4a61['actionid']][_0xf757('0xf8')]||undefined,'CampaignId':this['actions'][_0x5a4a61[_0xf757('0x125')]]['CampaignId']||undefined})['catch'](loggerCatch(_0xf757('0x12f')));delete this[_0xf757('0xa9')][_0x5a4a61[_0xf757('0x125')]];unlockQueueStatus(_0x57a352);}}else{loggerBooked[_0xf757('0x7d')](_0xf757('0x135'));this[_0xf757('0xb0')](this[_0xf757('0x25')][this[_0xf757('0xa9')][_0x5a4a61[_0xf757('0x125')]][_0xf757('0xb1')]]);this[_0xf757('0xbc')]({'active':![],'ContactId':this[_0xf757('0xa9')][_0x5a4a61[_0xf757('0x125')]][_0xf757('0xcd')],'ListId':this[_0xf757('0xa9')][_0x5a4a61[_0xf757('0x125')]]['ListId'],'VoiceQueueId':this[_0xf757('0xa9')][_0x5a4a61[_0xf757('0x125')]]['VoiceQueueId']||undefined,'CampaignId':this[_0xf757('0xa9')][_0x5a4a61[_0xf757('0x125')]][_0xf757('0xf9')]||undefined})[_0xf757('0xae')](loggerCatch(_0xf757('0x136')));delete this[_0xf757('0xa9')][_0x5a4a61[_0xf757('0x125')]];unlockQueueStatus(_0x57a352);}}else{loggerBooked[_0xf757('0x7d')](_0xf757('0x137'));this[_0xf757('0xb0')](this[_0xf757('0x25')][this[_0xf757('0xa9')][_0x5a4a61['actionid']][_0xf757('0xb1')]]);this[_0xf757('0xbc')]({'active':![],'ContactId':this['actions'][_0x5a4a61[_0xf757('0x125')]][_0xf757('0xcd')],'ListId':this['actions'][_0x5a4a61[_0xf757('0x125')]][_0xf757('0xce')],'VoiceQueueId':this[_0xf757('0xa9')][_0x5a4a61[_0xf757('0x125')]][_0xf757('0xf8')]||undefined,'CampaignId':this['actions'][_0x5a4a61[_0xf757('0x125')]][_0xf757('0xf9')]||undefined})[_0xf757('0xae')](loggerCatch(_0xf757('0x138')));delete this[_0xf757('0xa9')][_0x5a4a61[_0xf757('0x125')]];unlockQueueStatus(_0x57a352);}};Dialer['prototype'][_0xf757('0x139')]=function(){var _0x3598b9=this;setInterval(function(){_0x3598b9[_0xf757('0x13a')]();},0x3e8);};Dialer['prototype'][_0xf757('0x13b')]=function(_0x4ac96e){var _0x1b5ea5=this;return function(){if(!_0x1b5ea5[_0xf757('0xd3')](_0x4ac96e[_0xf757('0x76')])){if(!_0x1b5ea5[_0xf757('0xd3')](_0x4ac96e[_0xf757('0x13c')])){_0x4ac96e[_0xf757('0x40')]=_0xf757('0x13d');throw _0x4ac96e['name']+_0xf757('0x13e');}}};};Dialer[_0xf757('0x20')][_0xf757('0x13f')]=function(_0x38b56a,_0x2d4e68,_0x1ca53c,_0x542b4d){var _0x27f983=this;return function(){var _0x27a739=!![];return _0x27f983['ifTime'](_0x38b56a,_0x2d4e68,_0x1ca53c,_0x542b4d,_0x27a739);};};Dialer[_0xf757('0x20')][_0xf757('0x140')]=function(_0x10ca6e,_0x5943a5,_0x592a52,_0x4084e9){var _0x5a4fe0=this;return function(){var _0xa8c81b=![];return _0x5a4fe0[_0xf757('0x141')](_0x10ca6e[_0xf757('0x44')],_0x5943a5,_0x592a52,_0x4084e9,_0xa8c81b);};};Dialer[_0xf757('0x20')][_0xf757('0x141')]=function(_0x53fd44,_0xbbdcc4,_0x39510f,_0xef5504,_0x56e9a8){var _0x42c189=[];return new BPromise(function(_0x355a37,_0x406f78){if(!isNotNull(_0x53fd44)){_0xef5504[_0xf757('0x40')]=_0xf757('0x42');return _0x406f78(msgResponse('ifTime','Failure',_0x39510f+_0xf757('0x142')));}if(_[_0xf757('0x45')](_0x53fd44)){_0xef5504[_0xf757('0x40')]=_0xf757('0x143');return _0x406f78(msgResponse(_0xf757('0x141'),_0xf757('0x144'),_0x39510f+_0xf757('0x145')));}if(_0xbbdcc4&&_[_0xf757('0x3f')](config[_0xf757('0x146')][_0xbbdcc4])){_0xef5504[_0xf757('0x40')]=_0xf757('0x147');return _0x406f78(msgResponse(_0xf757('0x141'),'Failure',_0x39510f+'\x20Timezone\x20unknow\x20'+_0xbbdcc4));}if(_['isArray'](_0x53fd44)){for(var _0x5c0308=0x0;_0x5c0308<_0x53fd44[_0xf757('0x96')];_0x5c0308+=0x1){_0x42c189[_0xf757('0x129')](ami['Action']({'action':_0xf757('0x148'),'command':util[_0xf757('0x77')](_0xf757('0x149'),_0x53fd44[_0x5c0308]['interval'],!_[_0xf757('0x3f')](config['timezones'][_0xbbdcc4])?_0xbbdcc4:'')})[_0xf757('0xb5')](function(_0x4b4935){return _0x4b4935['content'][_0xf757('0x14a')]('true')>=0x0;})[_0xf757('0xae')](myreject(_0x406f78)));}}else{_0x42c189[_0xf757('0x129')](ami[_0xf757('0x14b')]({'action':_0xf757('0x148'),'command':util[_0xf757('0x77')](_0xf757('0x149'),_0x53fd44,!_[_0xf757('0x3f')](config[_0xf757('0x146')][_0xbbdcc4])?_0xbbdcc4:'')})['then'](function(_0x17b0f5){return _0x17b0f5['content'][_0xf757('0x14a')](_0xf757('0x14c'))>=0x0;})[_0xf757('0xae')](myreject(_0x406f78)));}BPromise[_0xf757('0x14d')](_0x42c189)[_0xf757('0xb5')](function(_0x55e812){var _0x541feb=_[_0xf757('0x14e')](_0x55e812);if(_0x541feb){return _0x355a37(_0x541feb);}else{_0xef5504[_0xf757('0x40')]=_0x56e9a8?_0xf757('0x14f'):_0xf757('0x150');return _0x406f78(msgResponse('[ifTime][promiseAll]','Failure',_0xf757('0x151')+_0x56e9a8+'\x20'+_0x39510f+'\x20Interval\x20is\x20overtime:\x20'+util[_0xf757('0x94')](_0x53fd44,{'showHidden':![],'depth':null})+_0xf757('0x152')+_0xbbdcc4));}})[_0xf757('0xae')](function(_0x26f88f){return _0x406f78(msgResponse(_0xf757('0x141'),_0xf757('0x144'),JSON[_0xf757('0x49')](_0x26f88f)));});});};Dialer['prototype']['checkDialMethod']=function(_0x123532){var _0x4b0934=this;return function(){switch(_0x123532[_0xf757('0x5c')]){case'progressive':freeVariablesPredictive(_0x123532);_0x4b0934['handlePower'](_0x123532,0x1);break;case _0xf757('0x153'):freeVariablesPredictive(_0x123532);_0x4b0934['handlePower'](_0x123532,_0x123532[_0xf757('0x154')]);break;case _0xf757('0xb'):_0x4b0934[_0xf757('0xb')](_0x123532);break;case _0xf757('0xa'):freeVariablesPredictive(_0x123532);_0x4b0934['handlePower'](_0x123532,0x1);break;default:freeVariablesPredictive(_0x123532);logger[_0xf757('0x95')](_0xf757('0x155'),_0x123532[_0xf757('0x41')],_0xf757('0x156'));}};};Dialer[_0xf757('0x20')][_0xf757('0x157')]=function(_0x57879a){var _0x528307=this;return function(){_0x528307[_0xf757('0x158')](_0x57879a);};};Dialer['prototype'][_0xf757('0x159')]=function(_0x26183d){var _0x166214=this;if(isNotPreview(_0x26183d[_0xf757('0x5c')])){if(isVoiceQueueOutbound(_0x26183d['type'])&&isActive(_0x26183d[_0xf757('0x5b')])){_0x26183d[_0xf757('0x9e')]=!![];BPromise[_0xf757('0xb4')]()[_0xf757('0xb5')](checkIsLoggedIn(_0x26183d,_0x26183d[_0xf757('0x52')]))[_0xf757('0xb5')](checkIsActive(_0x26183d,_0x26183d[_0xf757('0x5b')]))[_0xf757('0xb5')](checkInterval(_0x26183d))[_0xf757('0xb5')](_0x166214[_0xf757('0x13b')](_0x26183d))['then'](_0x166214['checkIfTime'](_0x26183d[_0xf757('0x15a')],_0x26183d[_0xf757('0x15b')],_0x26183d[_0xf757('0x41')],_0x26183d))[_0xf757('0xb5')](_0x166214['checkIfTimeIntervals'](_0x26183d[_0xf757('0x46')],_0x26183d[_0xf757('0x15b')],_0x26183d[_0xf757('0x41')],_0x26183d))[_0xf757('0xb5')](_0x166214['checkDialMethod'](_0x26183d))[_0xf757('0xae')](loggerCatchQueueSummary(_0xf757('0x15c'),_0x26183d));}else{notSendMessagesQueue(_0x26183d);}}else{freeVariablesPredictive(_0x26183d);}};Dialer[_0xf757('0x20')][_0xf757('0x13a')]=function(){var _0x3ce93f=this;var _0x204b04;for(var _0x1167c4 in this[_0xf757('0x26')]){if(typeof this[_0xf757('0x26')][_0x1167c4]!==_0xf757('0xaa')){_0x204b04=this[_0xf757('0x26')][_0x1167c4];if(isCampaignIvr(_0x204b04['type'])&&isActive(_0x204b04[_0xf757('0xd4')])){_0x204b04['sendMessageOneNotActive']=!![];BPromise[_0xf757('0xb4')]()[_0xf757('0xb5')](checkIsActive(_0x204b04,_0x204b04[_0xf757('0xd4')]))['then'](checkInterval(_0x204b04))[_0xf757('0xb5')](_0x3ce93f[_0xf757('0x13b')](_0x204b04))[_0xf757('0xb5')](_0x3ce93f[_0xf757('0x13f')](_0x204b04[_0xf757('0x15a')],_0x204b04[_0xf757('0x15b')],_0x204b04[_0xf757('0x41')],_0x204b04))[_0xf757('0xb5')](_0x3ce93f[_0xf757('0x140')](_0x204b04[_0xf757('0x46')],_0x204b04[_0xf757('0x15b')],_0x204b04[_0xf757('0x41')],_0x204b04))[_0xf757('0xb5')](_0x3ce93f[_0xf757('0x157')](_0x204b04))[_0xf757('0xae')](loggerCatchQueueSummary(_0xf757('0x15d'),_0x204b04));}else{notSendMessagesCampaign(_0x204b04);}}}};function getCallerIdRandom(_0x385527,_0x2bf8fb){var _0x251f71;var _0x515871;var _0x5cc98a;if(_0x2bf8fb<=0x0){_0x2bf8fb=0x1;}_0x251f71=new RegExp(_0xf757('0x15e')+_0x2bf8fb+'}$');_0x515871=Math[_0xf757('0x15f')](0xa,_0x2bf8fb-0x1);_0x5cc98a=Math[_0xf757('0x15f')](0xa,_0x2bf8fb)-0x1;return util[_0xf757('0x77')]('%s',_['replace'](_0x385527,_0x251f71,_[_0xf757('0x160')](_0x515871,_0x5cc98a)));}function extractCalleridName(_0x3f6287){var _0x1dc212=_0x3f6287[_0xf757('0x161')](/"(.*?)"/);return _0x1dc212?_0x1dc212[0x1]:_0x3f6287;}function extractCalleridNumber(_0x72b3b1){var _0x2407d7=_0x72b3b1[_0xf757('0x161')](/<(.*?)>/);return _0x2407d7?_0x2407d7[0x1]:_0x72b3b1;}Dialer['prototype']['actionOriginate']=function(_0x1d09ab,_0x2619c4){var _0x182eac=this;var _0xaeabf3=uuid['v4']();this['actions'][_0xaeabf3]=new Action(_0x1d09ab,_0x2619c4,_0xaeabf3);return new BPromise(function(_0x287ca8,_0x4cad94){if(_[_0xf757('0x3f')](_0x1d09ab)&&typeof _0x1d09ab!=='object'){return _0x4cad94(msgResponse(_0xf757('0x162'),_0xf757('0x144'),_0xf757('0x163')));}if(_[_0xf757('0x3f')](_0x2619c4[_0xf757('0x164')][_0xf757('0x165')])||_0x2619c4[_0xf757('0x164')][_0xf757('0x165')]===null){return _0x4cad94(msgResponse(_0xf757('0x162'),_0xf757('0x144'),_0xf757('0x166')));}var _0x531c43={'XMD-CALLERID':_0x182eac[_0xf757('0xa9')][_0xaeabf3][_0xf757('0x167')](),'XMD-AGI':_0x1d09ab[_0xf757('0x103')]?util[_0xf757('0x77')](_0xf757('0x168'),ipAgi,_0x1d09ab[_0xf757('0x103')]):_0xf757('0x169'),'XMD-AGIAFTER':_0x1d09ab['dialQueueProject2']?util[_0xf757('0x77')]('\x22agi://%s/square,%s\x22',ipAgi,_0x1d09ab['dialQueueProject2']):_0xf757('0x169'),'XMD-QUEUE':_0x1d09ab[_0xf757('0x79')]===_0xf757('0x4e')?util[_0xf757('0x77')](_0xf757('0x16a'),_0x1d09ab[_0xf757('0x41')],_0x1d09ab['dialQueueOptions']||'',_0x1d09ab['dialAgiAfterHangupAgent']?'c':'',_0x1d09ab[_0xf757('0x114')]||0x3):_0xf757('0x169'),'XMD-CONTACTID':_0x2619c4['ContactId'],'XMD-CDRTYPE':_0xf757('0x9'),'CALLERID(all)':_0x182eac['actions'][_0xaeabf3][_0xf757('0x167')](),'XMD-AMD':_0x1d09ab[_0xf757('0xde')]?_0xf757('0x16b'):'NONE','XMD-DESTINATION':_0xf757('0xdd')};if(_0x1d09ab[_0xf757('0xde')]){_0x531c43[_0xf757('0x16c')]=_0x1d09ab['dialAMDInitialSilence']||0x9c4;_0x531c43[_0xf757('0x16d')]=_0x1d09ab['dialAMDGreeting']||0x5dc;_0x531c43[_0xf757('0x16e')]=_0x1d09ab['dialAMDAfterGreetingSilence']||0x320;_0x531c43[_0xf757('0x16f')]=_0x1d09ab[_0xf757('0x170')]||0x1388;_0x531c43['XMD-AMDMINWORDLENGTH']=_0x1d09ab['dialAMDMinWordLength']||0x64;_0x531c43['XMD-AMDBETWEENWORDSSILENCE']=_0x1d09ab[_0xf757('0x171')]||0x32;_0x531c43[_0xf757('0x172')]=_0x1d09ab['dialAMDMaximumNumberOfWords']||0x3;_0x531c43[_0xf757('0x173')]=_0x1d09ab[_0xf757('0x174')]||0x100;_0x531c43[_0xf757('0x175')]=_0x1d09ab[_0xf757('0x176')]||0x1388;}if(_0x1d09ab[_0xf757('0x79')]==='outbound'){_0x531c43[_0xf757('0x177')]=_0x2619c4[_0xf757('0xf8')];}else{_0x531c43[_0xf757('0x178')]=_0x2619c4[_0xf757('0xf9')];}for(var _0x245c91 in _0x2619c4[_0xf757('0x164')]){if(typeof _0x2619c4['Contact'][_0x245c91]!==_0xf757('0xaa')){if(isNotNull(_0x2619c4['Contact'][_0x245c91])&&_0x245c91!=='id'&&_0x245c91!==_0xf757('0x179')&&_0x245c91!==_0xf757('0x17a')&&_0x245c91!==_0xf757('0x17b')){_0x531c43[util['format'](_0xf757('0x17c'),_0xf757('0x17d'),_[_0xf757('0x17e')](_0x245c91))]=_0x2619c4['Contact'][_0x245c91];}}}var _0x4d6815=_0x182eac[_0xf757('0xd3')](_0x1d09ab[_0xf757('0x76')])?getCallerId(_0x1d09ab[_0xf757('0x76')][_0xf757('0x17f')],_0x1d09ab[_0xf757('0x180')],_0x1d09ab[_0xf757('0x181')]>0x0?getCallerIdRandom(_0x1d09ab[_0xf757('0x182')],_0x1d09ab[_0xf757('0x181')]):_0x1d09ab[_0xf757('0x182')]):getCallerId(_[_0xf757('0xac')](_0x1d09ab[_0xf757('0x13c')])?_0x1d09ab['Trunk']['callerid']:_0x1d09ab[_0xf757('0x13c')]['callerid'],_0x1d09ab[_0xf757('0x180')],_0x1d09ab[_0xf757('0x181')]>0x0?getCallerIdRandom(_0x1d09ab[_0xf757('0x182')],_0x1d09ab[_0xf757('0x181')]):_0x1d09ab[_0xf757('0x182')]);if(_0x4d6815){_0x531c43[_0xf757('0x183')]=_0x182eac[_0xf757('0xa9')][_0xaeabf3][_0xf757('0x184')]=extractCalleridName(_0x4d6815);_0x531c43[_0xf757('0x185')]=_0x182eac['actions'][_0xaeabf3][_0xf757('0x186')]=extractCalleridNumber(_0x4d6815);}return ami[_0xf757('0x14b')]({'actionid':_0xaeabf3,'action':_0xf757('0x162'),'channel':_0x182eac['isTrunkReachable'](_0x1d09ab[_0xf757('0x76')])?util['format']('SIP/%s/%s%s',_0x1d09ab[_0xf757('0x76')]['name'],isNotNull(_0x1d09ab[_0xf757('0x187')])?_0x1d09ab[_0xf757('0x187')]['trim']()||'':'',_0x1d09ab[_0xf757('0x188')]>0x0?_0x2619c4[_0xf757('0x164')][_0xf757('0x165')]['substring'](_0x1d09ab[_0xf757('0x188')]):_0x2619c4[_0xf757('0x164')]['phone']):util[_0xf757('0x77')](_0xf757('0x189'),_[_0xf757('0xac')](_0x1d09ab[_0xf757('0x13c')])?_0x1d09ab[_0xf757('0x76')]['name']:_0x1d09ab[_0xf757('0x13c')][_0xf757('0x41')],isNotNull(_0x1d09ab[_0xf757('0x187')])?_0x1d09ab[_0xf757('0x187')][_0xf757('0x18a')]()||'':'',_0x1d09ab[_0xf757('0x188')]>0x0?_0x2619c4[_0xf757('0x164')][_0xf757('0x165')]['substring'](_0x1d09ab[_0xf757('0x188')]):_0x2619c4[_0xf757('0x164')][_0xf757('0x165')]),'callerid':_0x4d6815,'Exten':_0xf757('0xdd'),'Context':_0xf757('0x18b'),'Priority':'1','variable':_0x531c43,'timeout':(_0x1d09ab[_0xf757('0x5d')]||0x1e)*0x3e8,'async':!![],'channelid':_0xaeabf3})[_0xf757('0xb5')](function(_0x12cecb){return _0x287ca8(_0x12cecb);})[_0xf757('0xae')](function(_0x56b3c6){_0x1d09ab[_0xf757('0x66')]+=0x1;var _0x39109d=new History(_0x182eac[_0xf757('0xa9')][_0xaeabf3]);logger[_0xf757('0x95')](util[_0xf757('0x77')](_0xf757('0x18c'),JSON[_0xf757('0x49')](_0x56b3c6)));_0x39109d[_0xf757('0xa5')]=0xe;_0x39109d['statedesc']='OriginateError';_0x39109d[_0xf757('0xa7')]=moment()[_0xf757('0x77')](_0xf757('0xf7'));_0x39109d[_0xf757('0x11a')]=_0x39109d[_0xf757('0xa7')];_0x182eac[_0xf757('0xc7')](_0x39109d)[_0xf757('0xae')](loggerCatch(_0xf757('0x18d')));_0x182eac[_0xf757('0xc5')](_0x39109d)[_0xf757('0xae')](loggerCatch(_0xf757('0x18d')))[_0xf757('0x22')](function(){delete _0x182eac['actions'][_0xaeabf3];return _0x4cad94(msgResponse(_0xf757('0x162'),_0xf757('0x48'),'originate\x20action\x20Error'));});});});};Dialer[_0xf757('0x20')][_0xf757('0x34')]=function(_0x5bab19){var _0x55f0fc=this[_0xf757('0xa9')][_0x5bab19[_0xf757('0x125')]];if(_0x55f0fc){delete this[_0xf757('0xa9')][_0x5bab19[_0xf757('0x125')]];_0x55f0fc[_0xf757('0x18e')]=moment()['format'](_0xf757('0xf7'));var _0x5b4ad4=_0x55f0fc['type']==='ivr'?this[_0xf757('0x26')][_0x55f0fc[_0xf757('0xb1')]]:this[_0xf757('0x25')][_0x55f0fc[_0xf757('0x18f')]()];if(!this[_0xf757('0xd1')](_0x5bab19[_0xf757('0x190')])){this[_0xf757('0xb0')](_0x5b4ad4);return this['callProgressDetecting'](_0x55f0fc,_0x5b4ad4,_0x5bab19)[_0xf757('0xae')](loggerCatch('[callProgressDetecting]\x20'));}this['uniqueId'][_0x5bab19[_0xf757('0xd9')]]=_0x55f0fc;}};Dialer[_0xf757('0x20')][_0xf757('0x191')]=function(_0x5136ef,_0x5b3b41,_0x1b54ea){var _0x2779fd=new History(_0x5b3b41);if(_0x2779fd[_0xf757('0xea')]+_0x2779fd[_0xf757('0xeb')]+_0x2779fd['countnoanswerretry']+_0x2779fd[_0xf757('0xed')]+_0x2779fd[_0xf757('0xee')]+_0x2779fd['countabandonedretry']+_0x2779fd['countmachineretry']+_0x2779fd['countagentrejectretry']>=_0x1b54ea['dialGlobalMaxRetry']-0x1){return!![];}switch(_0x5136ef){case 0x3:if(_0x2779fd[_0xf757('0xec')]>=_0x1b54ea[_0xf757('0x192')]-0x1){return!![];}this[_0xf757('0xbc')]({'active':![],'countnoanswerretry':_0x2779fd[_0xf757('0xec')]+=0x1,'scheduledat':moment()[_0xf757('0xf4')](_0x1b54ea[_0xf757('0x193')],'minutes')['format'](_0xf757('0xf7')),'ContactId':_0x2779fd[_0xf757('0xcd')],'ListId':_0x2779fd['ListId'],'VoiceQueueId':_0x2779fd[_0xf757('0xf8')]||undefined,'CampaignId':_0x2779fd[_0xf757('0xf9')]||undefined})[_0xf757('0xae')](loggerCatch(_0xf757('0x194')));break;case 0x5:if(_0x2779fd[_0xf757('0xea')]>=_0x1b54ea[_0xf757('0x195')]-0x1){return!![];}this[_0xf757('0xbc')]({'active':![],'countbusyretry':_0x2779fd[_0xf757('0xea')]+=0x1,'scheduledat':moment()['add'](_0x1b54ea['dialBusyRetryFrequency'],_0xf757('0xf6'))[_0xf757('0x77')](_0xf757('0xf7')),'ContactId':_0x2779fd[_0xf757('0xcd')],'ListId':_0x2779fd[_0xf757('0xce')],'VoiceQueueId':_0x2779fd[_0xf757('0xf8')]||undefined,'CampaignId':_0x2779fd[_0xf757('0xf9')]||undefined})['catch'](loggerCatch(_0xf757('0x196')));break;case 0x8:if(_0x2779fd['countcongestionretry']>=_0x1b54ea[_0xf757('0x197')]-0x1){return!![];}this[_0xf757('0xbc')]({'active':![],'countcongestionretry':_0x2779fd[_0xf757('0xeb')]+=0x1,'scheduledat':moment()[_0xf757('0xf4')](_0x1b54ea[_0xf757('0x198')],_0xf757('0xf6'))[_0xf757('0x77')](_0xf757('0xf7')),'ContactId':_0x2779fd[_0xf757('0xcd')],'ListId':_0x2779fd['ListId'],'VoiceQueueId':_0x2779fd[_0xf757('0xf8')]||undefined,'CampaignId':_0x2779fd[_0xf757('0xf9')]||undefined})['catch'](loggerCatch(_0xf757('0x199')));break;case 0x0:if(_0x2779fd[_0xf757('0xed')]>=_0x1b54ea[_0xf757('0x19a')]-0x1){return!![];}else{this[_0xf757('0xbc')]({'active':![],'countnosuchnumberretry':_0x2779fd[_0xf757('0xed')]+=0x1,'scheduledat':moment()[_0xf757('0xf4')](_0x1b54ea[_0xf757('0x19b')],_0xf757('0xf6'))[_0xf757('0x77')](_0xf757('0xf7')),'ContactId':_0x2779fd[_0xf757('0xcd')],'ListId':_0x2779fd[_0xf757('0xce')],'VoiceQueueId':_0x2779fd[_0xf757('0xf8')]||undefined,'CampaignId':_0x2779fd[_0xf757('0xf9')]||undefined})['catch'](loggerCatch('[rescheduleContact][NoSuchNumber]'));}break;case 0xa:if(_0x2779fd[_0xf757('0xee')]>=_0x1b54ea[_0xf757('0x117')]-0x1){return!![];}this[_0xf757('0xbc')]({'active':![],'countdropretry':_0x2779fd[_0xf757('0xee')]+=0x1,'scheduledat':moment()['add'](_0x1b54ea[_0xf757('0x118')],'minutes')[_0xf757('0x77')](_0xf757('0xf7')),'ContactId':_0x2779fd['ContactId'],'ListId':_0x2779fd[_0xf757('0xce')],'VoiceQueueId':_0x2779fd[_0xf757('0xf8')]||undefined,'CampaignId':_0x2779fd[_0xf757('0xf9')]||undefined})[_0xf757('0xae')](loggerCatch('[rescheduleContact][Drop]'));break;case 0xb:if(_0x2779fd[_0xf757('0x121')]>=_0x1b54ea[_0xf757('0x19c')]-0x1){return!![];}this['rescheduleContact']({'active':![],'countabandonedretry':_0x2779fd['countabandonedretry']+=0x1,'scheduledat':moment()[_0xf757('0xf4')](_0x1b54ea['dialAbandonedRetryFrequency'],'minutes')['format'](_0xf757('0xf7')),'ContactId':_0x2779fd[_0xf757('0xcd')],'ListId':_0x2779fd['ListId'],'VoiceQueueId':_0x2779fd[_0xf757('0xf8')]||undefined,'CampaignId':_0x2779fd[_0xf757('0xf9')]||undefined})[_0xf757('0xae')](loggerCatch(_0xf757('0x123')));break;case 0x13:if(_0x2779fd[_0xf757('0xf2')]>=_0x1b54ea['dialMachineMaxRetry']-0x1){return!![];}this['rescheduleContact']({'active':![],'countmachineretry':_0x2779fd[_0xf757('0xf2')]+=0x1,'scheduledat':moment()[_0xf757('0xf4')](_0x1b54ea[_0xf757('0xf5')],_0xf757('0xf6'))[_0xf757('0x77')]('YYYY-MM-DD\x20HH:mm:ss'),'ContactId':_0x2779fd[_0xf757('0xcd')],'ListId':_0x2779fd[_0xf757('0xce')],'VoiceQueueId':_0x2779fd[_0xf757('0xf8')]||undefined,'CampaignId':_0x2779fd[_0xf757('0xf9')]||undefined})[_0xf757('0xae')](loggerCatch(_0xf757('0xfa')));break;case 0x14:if(_0x2779fd['countagentrejectretry']>=_0x1b54ea[_0xf757('0x19d')]-0x1){return!![];}this[_0xf757('0xbc')]({'active':![],'countagentrejectretry':_0x2779fd[_0xf757('0xfe')]+=0x1,'scheduledat':moment()['add'](_0x1b54ea[_0xf757('0x19e')],'minutes')[_0xf757('0x77')](_0xf757('0xf7')),'ContactId':_0x2779fd['ContactId'],'ListId':_0x2779fd['ListId'],'VoiceQueueId':_0x2779fd[_0xf757('0xf8')]||undefined,'CampaignId':_0x2779fd[_0xf757('0xf9')]||undefined})['catch'](loggerCatch(_0xf757('0x19f')));break;default:return!![];}};Dialer['prototype'][_0xf757('0x1a0')]=function(_0x4ddf09,_0xaf1d0,_0x21d364){var _0xe828cb=this;var _0x584e9c=new History(_0x4ddf09);return new BPromise(function(_0x199b96,_0x5cc765){if(_[_0xf757('0x3f')](_0xaf1d0)&&typeof _0xaf1d0!=='object'){return _0x5cc765(msgResponse(_0xf757('0x1a1'),_0xf757('0x144'),_0xf757('0x1a2')));}if(_['isUndefined'](_0x21d364)&&typeof _0x21d364!==_0xf757('0x1a3')){return _0x5cc765(msgResponse(_0xf757('0x1a1'),_0xf757('0x144'),_0xf757('0x1a4')));}switch(_0x21d364[_0xf757('0x10a')]){case'0':_0xaf1d0[_0xf757('0x65')]+=0x1;_0x584e9c['state']=0x0;_0x584e9c['statedesc']='NoSuchNumber';_0x584e9c[_0xf757('0xed')]+=0x1;_0x584e9c[_0xf757('0xe9')]+=0x1;ami[_0xf757('0x4d')]('custom:agentnosuchnumber',ut[_0xf757('0xe3')](_0x4ddf09,'nosuchnumber'));_0xe828cb[_0xf757('0xc7')](_0x584e9c)[_0xf757('0xae')](loggerCatch(_0xf757('0xfd')));if(_0xe828cb[_0xf757('0x191')](0x0,_0x4ddf09,_0xaf1d0)){if(_0x584e9c[_0xf757('0xed')]>=_0xaf1d0[_0xf757('0x19a')]){_0xe828cb[_0xf757('0xff')](_0x584e9c,_0x199b96,_0x5cc765,'reason\x200\x20no\x20such\x20number....');}else{_0xe828cb[_0xf757('0xf0')](_0x584e9c,_0x199b96,_0x5cc765,_0xf757('0x1a5'));}}break;case'3':_0xaf1d0['outboundNoAnswerCallsDay']+=0x1;_0x584e9c[_0xf757('0xa5')]=0x3;_0x584e9c[_0xf757('0xa6')]=_0xf757('0x1a6');_0x584e9c['countnoanswerretry']+=0x1;_0x584e9c[_0xf757('0xe9')]+=0x1;ami[_0xf757('0x4d')](_0xf757('0x1a7'),ut[_0xf757('0xe3')](_0x4ddf09,'noanswer'));_0xe828cb[_0xf757('0xc7')](_0x584e9c)[_0xf757('0xae')](loggerCatch(_0xf757('0x1a8')));if(_0xe828cb[_0xf757('0x191')](0x3,_0x4ddf09,_0xaf1d0)){if(_0x584e9c[_0xf757('0xec')]>=_0xaf1d0[_0xf757('0x192')]){_0xe828cb[_0xf757('0xff')](_0x584e9c,_0x199b96,_0x5cc765,_0xf757('0x1a9'));}else{_0xe828cb[_0xf757('0xf0')](_0x584e9c,_0x199b96,_0x5cc765,_0xf757('0x1a9'));}}break;case'5':_0xaf1d0[_0xf757('0x1aa')]+=0x1;_0x584e9c[_0xf757('0xa5')]=0x5;_0x584e9c[_0xf757('0xa6')]=_0xf757('0x1ab');_0x584e9c['countbusyretry']+=0x1;_0x584e9c[_0xf757('0xe9')]+=0x1;ami['emit']('custom:agentbusy',ut['buildObj'](_0x4ddf09,_0xf757('0x1ac')));_0xe828cb['createHistory'](_0x584e9c)[_0xf757('0xae')](loggerCatch('[syncAgentComplete][createHistory][5]'));if(_0xe828cb[_0xf757('0x191')](0x5,_0x4ddf09,_0xaf1d0)){if(_0x584e9c[_0xf757('0xea')]>=_0xaf1d0[_0xf757('0x195')]){_0xe828cb['createStateFinal'](_0x584e9c,_0x199b96,_0x5cc765,'reason\x205\x20busy');}else{_0xe828cb['stateGlobal'](_0x584e9c,_0x199b96,_0x5cc765,_0xf757('0x1ad'));}}break;case'8':_0xaf1d0[_0xf757('0x61')]+=0x1;_0x584e9c['state']=0x8;_0x584e9c[_0xf757('0xa6')]=_0xf757('0x1ae');_0x584e9c[_0xf757('0xeb')]+=0x1;_0x584e9c['countglobal']+=0x1;ami[_0xf757('0x4d')](_0xf757('0x1af'),ut['buildObj'](_0x4ddf09,'congestion'));_0xe828cb[_0xf757('0xc7')](_0x584e9c)[_0xf757('0xae')](loggerCatch('[syncAgentComplete][createHistory][8]'));if(_0xe828cb['checkRetriveMax'](0x8,_0x4ddf09,_0xaf1d0)){if(_0x584e9c['countcongestionretry']>=_0xaf1d0[_0xf757('0x197')]){_0xe828cb[_0xf757('0xff')](_0x584e9c,_0x199b96,_0x5cc765,_0xf757('0x1b0'));}else{_0xe828cb[_0xf757('0xf0')](_0x584e9c,_0x199b96,_0x5cc765,_0xf757('0x1b0'));}}break;case'11':_0xaf1d0[_0xf757('0x1b1')]+=0x1;_0x584e9c[_0xf757('0xa5')]=0xb;_0x584e9c[_0xf757('0xa6')]=_0xf757('0x11f');_0x584e9c[_0xf757('0x121')]+=0x1;_0x584e9c[_0xf757('0xe9')]+=0x1;_0xe828cb[_0xf757('0xc7')](_0x584e9c)[_0xf757('0xae')](loggerCatch(_0xf757('0x1b2')));if(_0xe828cb[_0xf757('0x191')](0xb,_0x4ddf09,_0xaf1d0)){if(_0x584e9c['countabandonedretry']>=_0xaf1d0[_0xf757('0x19c')]){_0xe828cb[_0xf757('0xff')](_0x584e9c,_0x199b96,_0x5cc765,'reason\x2011\x20abandoned');}else{_0xe828cb[_0xf757('0xf0')](_0x584e9c,_0x199b96,_0x5cc765,_0xf757('0x1b3'));}}break;case'20':_0xaf1d0[_0xf757('0x68')]+=0x1;_0x584e9c[_0xf757('0xa5')]=0x14;_0x584e9c[_0xf757('0xa6')]=_0xf757('0x1b4');_0x584e9c[_0xf757('0xfe')]+=0x1;_0x584e9c[_0xf757('0xe9')]+=0x1;ami[_0xf757('0x4d')](_0xf757('0x1b5'),ut['buildObj'](_0x4ddf09,_0xf757('0x1b6')));_0xe828cb[_0xf757('0xc7')](_0x584e9c)['catch'](loggerCatch(_0xf757('0x1b7')));if(_0xe828cb['checkRetriveMax'](0x14,_0x4ddf09,_0xaf1d0)){if(_0x584e9c[_0xf757('0xfe')]>=_0xaf1d0['dialAgentRejectMaxRetry']){_0xe828cb[_0xf757('0xff')](_0x584e9c,_0x199b96,_0x5cc765,_0xf757('0x1b8'));}else{_0xe828cb['stateGlobal'](_0x584e9c,_0x199b96,_0x5cc765,_0xf757('0x1b8'));}}break;default:_0xaf1d0[_0xf757('0x107')]+=0x1;_0x584e9c[_0xf757('0xa5')]=0xc;_0x584e9c[_0xf757('0xa6')]=_0x21d364[_0xf757('0x10a')];_0xe828cb[_0xf757('0xc7')](_0x584e9c)[_0xf757('0xae')](loggerCatch(_0xf757('0x1b9')));if(_0xe828cb[_0xf757('0x191')](_0x21d364[_0xf757('0x10a')],_0x4ddf09,_0xaf1d0)){if(_0x584e9c[_0xf757('0xea')]+_0x584e9c[_0xf757('0xeb')]+_0x584e9c[_0xf757('0xec')]+_0x584e9c[_0xf757('0xed')]+_0x584e9c[_0xf757('0xee')]+_0x584e9c[_0xf757('0x121')]+_0x584e9c['countmachineretry']+_0x584e9c[_0xf757('0xfe')]>=_0xaf1d0[_0xf757('0xef')]){_0xe828cb[_0xf757('0xf0')](_0x584e9c,_0x199b96,_0x5cc765,_0x21d364[_0xf757('0x10a')]);}else{_0xe828cb[_0xf757('0xff')](_0x584e9c,_0x199b96,_0x5cc765,_0x21d364[_0xf757('0x10a')]);}}}});};Dialer['prototype'][_0xf757('0xf0')]=function(_0x18a0a4,_0x8452bd,_0x239935,_0x4bee07){var _0x4d4247=new Final(_0x18a0a4);_0x4d4247[_0xf757('0xa5')]=0xf;_0x4d4247['statedesc']=_0xf757('0x1ba');this[_0xf757('0xff')](_0x4d4247,_0x8452bd,_0x239935,_0x4bee07);};Dialer[_0xf757('0x20')]['createStateFinal']=function(_0x28f035,_0x523202,_0x18490a,_0xfcfea7){this[_0xf757('0xc5')](_0x28f035)[_0xf757('0xb5')](function(){return _0x523202(msgResponse(_0xf757('0x1a1'),_0xf757('0xd2'),_0xfcfea7));})[_0xf757('0xae')](function(){return _0x18490a(msgResponse('[moveContactManagedDialer][0]','Failure','contact\x20not\x20moved'));});};Dialer[_0xf757('0x20')][_0xf757('0xb')]=function(_0xf62bd0){var _0x45639e=_0xf62bd0[_0xf757('0x1bb')]/0x64;var _0x181ec2=_0xf62bd0[_0xf757('0x63')]/(_0xf62bd0[_0xf757('0x63')]+_0xf62bd0[_0xf757('0x5f')]);var _0x391fb4=Math[_0xf757('0x1bc')](_0xf62bd0['predictiveIntervalAvailable']*(_0xf62bd0[_0xf757('0x1bd')]/0x64));var _0x2ebb91=Math[_0xf757('0x1bc')](_0xf62bd0[_0xf757('0x70')]*(_0xf62bd0[_0xf757('0x1be')]/0x64));var _0x28be27=_0xf62bd0[_0xf757('0x51')]+_0xf62bd0[_0xf757('0x56')];var _0x5bc988=Math[_0xf757('0x1bf')](_0xf62bd0[_0xf757('0x72')]*_0xf62bd0[_0xf757('0x73')]*_0xf62bd0['predictiveIntervalHitRate']*_0xf62bd0[_0xf757('0x1c0')]);if(_[_0xf757('0x3f')](_0xf62bd0[_0xf757('0x2c')])){if(!_[_0xf757('0x3f')](_0xf62bd0['startPredictive'])){_0xf62bd0[_0xf757('0x75')]=undefined;loggerPredictive[_0xf757('0x95')](_0xf757('0x1c1'),_0xf757('0x1c2'));}if(!_[_0xf757('0x3f')](_0xf62bd0[_0xf757('0x90')])){loggerPredictive[_0xf757('0x95')](_0xf757('0x1c1'),_0xf757('0x1c3'));clearInterval(_0xf62bd0[_0xf757('0x90')]);_0xf62bd0['handlePredictive']=undefined;}_0xf62bd0[_0xf757('0x2c')]=moment()[_0xf757('0x77')](_0xf757('0xf7'));loggerPredictive[_0xf757('0x7d')](_0xf62bd0[_0xf757('0x41')],_0xf757('0x1c4'),_0xf62bd0[_0xf757('0x2c')]);this[_0xf757('0x1c5')](_0xf62bd0,0x1);}else if(ifInterval(_0xf62bd0[_0xf757('0x1c6')],_0xf62bd0['startProgressive'])){this['handlePower'](_0xf62bd0,0x1);loggerPredictiveCalls['info'](_0xf757('0x1c7'),_0xf62bd0['startProgressive'],_0xf62bd0['name']);_0xf62bd0['erlangCalls']=0x0;_0xf62bd0[_0xf757('0x6d')]=0x0;}else if(_0x45639e<_0x181ec2&&_0xf62bd0[_0xf757('0x1c8')]===_0xf757('0x1c9')){freeVariablesPredictive(_0xf62bd0);loggerPredictive[_0xf757('0x7d')]('[stopMethodPredictive][ReStartProgressive][ExceededDropDay]','Dropped\x20calls\x20day',_0x181ec2,_0xf757('0x2c'),_0xf62bd0[_0xf757('0x41')]);}else if(_0x5bc988<_0xf62bd0['predictiveIntervalErlangCallsDroppedCalls']&&_0xf62bd0[_0xf757('0x1c8')]===_0xf757('0x1c9')){freeVariablesPredictive(_0xf62bd0);loggerPredictive['info']('[stopMethodPredictive][ReStartProgressive][ExceededDropInterval]',_0xf757('0x1ca'),_0x5bc988,'Drop\x20in\x20this\x20interval',_0xf62bd0[_0xf757('0x6d')],_0xf757('0x2c'),_0xf62bd0[_0xf757('0x41')]);}else if(!ifInterval(_0xf62bd0[_0xf757('0x1c6')],_0xf62bd0[_0xf757('0x2c')])&&_['isUndefined'](_0xf62bd0[_0xf757('0x75')])&&!_[_0xf757('0x3f')](_0xf62bd0[_0xf757('0x2c')])){_0xf62bd0['startPredictive']=moment()['format'](_0xf757('0xf7'));loggerPredictive[_0xf757('0x7d')](_0xf62bd0[_0xf757('0x41')],_0xf757('0x1cb'),_0xf62bd0[_0xf757('0x75')]);this['averageHandleTime'](_0xf62bd0[_0xf757('0x1c6')])['then'](this[_0xf757('0x1cc')](_0xf62bd0))[_0xf757('0xb5')](mergeDataErlangB(_0xf62bd0))['then'](this['startMethodPredictive'](_0xf62bd0))['catch'](loggerCatchPredictive('Predictive\x20after\x20first\x20interval',_0xf62bd0));}else if(!ifInterval(_0xf62bd0['dialPredictiveInterval'],_0xf62bd0[_0xf757('0x75')])){_0xf62bd0[_0xf757('0x6d')]=0x0;_0xf62bd0[_0xf757('0x75')]=moment()['format'](_0xf757('0xf7'));loggerPredictive[_0xf757('0x7d')](_0xf62bd0[_0xf757('0x41')],_0xf757('0x1cd'),_0xf62bd0['startPredictive']);clearInterval(_0xf62bd0['handlePredictive']);_0xf62bd0[_0xf757('0x90')]=undefined;this[_0xf757('0xba')](_0xf62bd0[_0xf757('0x1c6')])[_0xf757('0xb5')](this[_0xf757('0x1cc')](_0xf62bd0))[_0xf757('0xb5')](mergeDataErlangB(_0xf62bd0))[_0xf757('0xb5')](this[_0xf757('0x1ce')](_0xf62bd0))['catch'](loggerCatchPredictive(_0xf757('0x1cf'),_0xf62bd0));}else if(_0xf62bd0[_0xf757('0x70')]&&_0x28be27<_0xf62bd0[_0xf757('0x70')]-_0x2ebb91){freeVariablesPredictive(_0xf62bd0);loggerPredictive['info'](_0xf62bd0[_0xf757('0x41')],_0xf757('0x1d0'),_0x28be27,_0xf757('0x1d1'),_0xf62bd0['predictiveIntervalAvailable'],'-',_0x2ebb91,'=',_0xf62bd0[_0xf757('0x70')]-_0x2ebb91,')');}else if(_0xf62bd0['predictiveIntervalAvailable']&&_0x28be27>_0xf62bd0['predictiveIntervalAvailable']+_0x391fb4){freeVariablesPredictive(_0xf62bd0);loggerPredictive[_0xf757('0x7d')](_0xf62bd0[_0xf757('0x41')],_0xf757('0x1d0'),_0x28be27,')\x20are\x20more\x20than\x20threshold\x20(',_0xf62bd0['predictiveIntervalAvailable'],'+',_0x391fb4,'=',_0xf62bd0[_0xf757('0x70')]+_0x391fb4,')');}};Dialer['prototype']['getDataPredictive']=function(_0x5c1043){var _0x296984=this;return function(_0x5a1b04){return new BPromise(function(_0x2b3f95,_0x287531){_['merge'](_0x5c1043,_0x5a1b04[0x0]);if(checkGetDataPredictive(_0x5a1b04[0x0])){var _0x127818=_0x5c1043[_0xf757('0x70')]=_0x5c1043['talking']+_0x5c1043[_0xf757('0x51')];var _0xab4b65=_0x5c1043['dialPredictiveInterval']*0x3c;var _0xa32bde=_0x5a1b04[0x0][_0xf757('0x6a')]+_0x5a1b04[0x0][_0xf757('0x83')];var _0x452f8e=(_0x5a1b04[0x0][_0xf757('0x69')]+_0x5a1b04[0x0][_0xf757('0x6c')]+_0x5a1b04[0x0][_0xf757('0x6b')])/_0x5a1b04[0x0][_0xf757('0x71')];_0x5c1043[_0xf757('0x6e')]=_0x452f8e>0x0?_0x452f8e:0x1;switch(_0x5c1043[_0xf757('0x1c8')]){case _0xf757('0x1c9'):var _0x9ab3e5=_0x5c1043[_0xf757('0x1bb')]/0x64;return _0x296984[_0xf757('0x1d2')](_0x127818,_0xab4b65,_0xa32bde,_0x452f8e,_0x9ab3e5)[_0xf757('0xb5')](function(_0x5c8744){return _0x2b3f95(_0x5c8744);});case'agentBusyFactor':var _0x5a38ee=_0x5c1043['dialPredictiveOptimizationPercentage']/0x64;return _0x296984[_0xf757('0x1d3')](_0x127818,_0xab4b65,_0xa32bde,_0x452f8e,_0x5a38ee)[_0xf757('0xb5')](function(_0xee3ee8){return _0x2b3f95(_0xee3ee8);});default:return _0x287531(msgResponse('[getDataPredictive]',_0xf757('0x144'),_0xf757('0x1d4')));}}else{return _0x287531(msgResponse(_0xf757('0x1d5'),'Failure',_0xf757('0x1d6')));}});};};Dialer[_0xf757('0x20')][_0xf757('0x1d7')]=function(_0x50e621){var _0x51d498=this;return function(_0x4d1f53){return new BPromise(function(_0x162ee7,_0x2fbe58){_['merge'](_0x50e621,_0x4d1f53[0x0]);if(checkGetDataPredictive(_0x4d1f53[0x0])){loggerPredictive[_0xf757('0x7d')](JSON['stringify'](_0x4d1f53[0x0]));if(_0x50e621[_0xf757('0x1c8')]==='dropRate'){return _0x51d498[_0xf757('0xc3')](_0x50e621['id'])[_0xf757('0xb5')](function(_0x431577){var _0x5f1815=_0x50e621[_0xf757('0x52')]-_0x431577[0x0]['outboundQueuePauses'];var _0x5e0c55=_0x50e621[_0xf757('0x1c6')]*0x3c;var _0x1b786d=_0x4d1f53[0x0]['predictiveIntervalAvgTalktime']+_0x4d1f53[0x0][_0xf757('0x83')];var _0x18bf48=(_0x4d1f53[0x0][_0xf757('0x69')]+_0x4d1f53[0x0][_0xf757('0x6c')]+_0x4d1f53[0x0]['predictiveIntervalDroppedCallsCallersExit'])/_0x4d1f53[0x0][_0xf757('0x71')];var _0x4c6a4a=_0x50e621[_0xf757('0x1bb')]/0x64;_0x50e621['predictiveIntervalPauses']=_0x431577[0x0][_0xf757('0x1d8')]||0x0;_0x50e621[_0xf757('0x6e')]=_0x18bf48>0x0?_0x18bf48:0x1;return _0x51d498[_0xf757('0x1d2')](_0x5f1815,_0x5e0c55,_0x1b786d,_0x18bf48,_0x4c6a4a);})[_0xf757('0xb5')](function(_0x3e86c4){return _0x162ee7(_0x3e86c4);})[_0xf757('0xae')](function(_0x3495a1){return _0x2fbe58(msgResponse('[CatchErlangB]',_0xf757('0x144'),JSON[_0xf757('0x49')](_0x3495a1)));});}if(_0x50e621[_0xf757('0x1c8')]===_0xf757('0x1d9')){return _0x51d498[_0xf757('0xc3')](_0x50e621['id'])[_0xf757('0xb5')](function(_0x46b4c8){var _0x5ea2c0=_0x50e621['loggedIn']-_0x46b4c8[0x0][_0xf757('0x1d8')];var _0x417721=_0x50e621[_0xf757('0x1c6')]*0x3c;var _0x1de6da=_0x4d1f53[0x0][_0xf757('0x6a')]+_0x4d1f53[0x0][_0xf757('0x83')];var _0x5a53ba=(_0x4d1f53[0x0][_0xf757('0x69')]+_0x4d1f53[0x0][_0xf757('0x6c')]+_0x4d1f53[0x0][_0xf757('0x6b')])/_0x4d1f53[0x0]['predictiveIntervalTotalCalls'];var _0x3d6759=_0x50e621[_0xf757('0x1bb')]/0x64;_0x50e621[_0xf757('0x6f')]=_0x46b4c8[0x0][_0xf757('0x1d8')]||0x0;_0x50e621['predictiveIntervalHitRate']=_0x5a53ba>0x0?_0x5a53ba:0x1;return _0x51d498[_0xf757('0x1d3')](_0x5ea2c0,_0x417721,_0x1de6da,_0x5a53ba,_0x3d6759);})[_0xf757('0xb5')](function(_0x36486e){return _0x162ee7(_0x36486e);})[_0xf757('0xae')](function(_0x4cda10){return _0x2fbe58(msgResponse(_0xf757('0x1da'),_0xf757('0x144'),JSON[_0xf757('0x49')](_0x4cda10)));});}}else{return _0x2fbe58(msgResponse(_0xf757('0x1d5'),_0xf757('0x144'),_0xf757('0x1d6')));}});};};Dialer[_0xf757('0x20')][_0xf757('0x1ce')]=function(_0x18496e){var _0x409071=this;return function(){var _0x38d627=0x0;var _0x787337=Math[_0xf757('0x1bf')](_0x18496e[_0xf757('0x1db')]*0x3e8);if(_0x787337>0x0){_0x787337=_0x787337<0x64?0x64:_0x787337;loggerPredictive['info'](_0x18496e[_0xf757('0x41')],_0xf757('0x1dc'),_0x787337,_0xf757('0x4a'));_0x18496e[_0xf757('0x90')]=setInterval(function(){_0x409071[_0xf757('0x90')](_0x18496e);loggerPredictiveCalls[_0xf757('0x7d')](_0xf757('0x1dd'),_0x38d627+=0x1);},_0x787337);}else{loggerPredictive[_0xf757('0x7d')](_0x18496e['name'],_0xf757('0x1de'));}};};Dialer[_0xf757('0x20')][_0xf757('0x1df')]=function(_0x4fb641,_0x2ac034){var _0x1bdb3e=this;return function(_0x2a1e13){if(_['isEmpty'](_0x2a1e13)){if(_[_0xf757('0xac')](_0x2ac034['UserId'])||!_0x2ac034['recallme']){if(_0x4fb641[_0xf757('0x5c')]===_0xf757('0xa')){_0x4fb641[_0xf757('0x12a')]=_[_0xf757('0x3f')](_0x4fb641[_0xf757('0x12a')])?!![]:_0x4fb641[_0xf757('0x12a')];var _0xb55499=uuid['v4']();_0x1bdb3e[_0xf757('0xa9')][_0xb55499]=new Action(_0x4fb641,_0x2ac034,_0xb55499);loggerBooked[_0xf757('0x7d')]('[booked][checkContactBlack]',_0xb55499,'queueStatusComplete:\x20',JSON[_0xf757('0x49')](_0x4fb641[_0xf757('0x12a')]),_0xf757('0x1e0'),_0x4fb641[_0xf757('0x41')]);if(_0x4fb641['queueStatusComplete']){_0x4fb641['queueStatusComplete']=![];_0x1bdb3e['queueBooked'][_0x1bdb3e['actions'][_0xb55499][_0xf757('0xb1')]]=[];ami[_0xf757('0x14b')]({'actionid':_0xb55499,'action':_0xf757('0x1e1'),'queue':_0x4fb641['name']})[_0xf757('0xae')](function(){_0x1bdb3e[_0xf757('0xb0')](_0x4fb641);_0x1bdb3e[_0xf757('0xbc')]({'active':![],'ContactId':_0x1bdb3e[_0xf757('0xa9')][_0xb55499][_0xf757('0xcd')],'ListId':_0x1bdb3e[_0xf757('0xa9')][_0xb55499]['ListId'],'VoiceQueueId':_0x1bdb3e[_0xf757('0xa9')][_0xb55499]['VoiceQueueId']||undefined,'CampaignId':_0x1bdb3e[_0xf757('0xa9')][_0xb55499][_0xf757('0xf9')]||undefined})[_0xf757('0xae')](loggerCatch('[unlockOriginate][syncQueueStatusComplete]'));delete _0x1bdb3e[_0xf757('0xa9')][_0xb55499];});}else{loggerBooked[_0xf757('0x7d')](_0xf757('0x1e2'),JSON[_0xf757('0x49')](_0x4fb641[_0xf757('0x12a')]),_0xf757('0x1e0'),_0x4fb641['name']);_0x1bdb3e[_0xf757('0xb0')](_0x4fb641);_0x1bdb3e[_0xf757('0xbc')]({'active':![],'ContactId':_0x1bdb3e[_0xf757('0xa9')][_0xb55499][_0xf757('0xcd')],'ListId':_0x1bdb3e[_0xf757('0xa9')][_0xb55499]['ListId'],'VoiceQueueId':_0x1bdb3e['actions'][_0xb55499][_0xf757('0xf8')]||undefined,'CampaignId':_0x1bdb3e[_0xf757('0xa9')][_0xb55499]['CampaignId']||undefined})[_0xf757('0xae')](loggerCatch('[unlockOriginate][syncQueueStatusComplete]'));delete _0x1bdb3e[_0xf757('0xa9')][_0xb55499];}}else{return _0x1bdb3e[_0xf757('0x1e3')](_0x4fb641,_0x2ac034);}}else{if(getDiff(_0x2ac034[_0xf757('0x1e4')])<_0x4fb641['dialRecallMeTimeout']*0x3c){if(_0x2ac034[_0xf757('0x1e5')]&&!_0x2ac034[_0xf757('0x1e5')]['voicePause']){_0x1bdb3e['preview'][_0xf757('0x12c')](_0x2ac034['id'])[_0xf757('0x22')](function(){_0x1bdb3e['updateOriginated'](_0x4fb641);});}else{_0x1bdb3e['unlockContact']({'active':![]},_0x2ac034['id'],0x1)[_0xf757('0x22')](function(){_0x1bdb3e[_0xf757('0xb0')](_0x4fb641);});}}else{_0x4fb641[_0xf757('0x67')]+=0x1;_0x1bdb3e['updateOriginated'](_0x4fb641);if(_0x4fb641['dialRecallInQueue']){_0x1bdb3e[_0xf757('0xbc')]({'active':![],'recallme':![],'UserId':null,'ContactId':_0x2ac034[_0xf757('0xcd')],'ListId':_0x2ac034[_0xf757('0xce')],'VoiceQueueId':_0x2ac034[_0xf757('0xf8')]||undefined,'CampaignId':_0x2ac034[_0xf757('0xf9')]||undefined})[_0xf757('0xae')](loggerCatch(_0xf757('0x1e6')));_0x1bdb3e[_0xf757('0xc7')](createObjHistory(_0x4fb641,_0x2ac034,'RECALLINQUEUE',0x17,'RecallInQueue'))[_0xf757('0xae')](loggerCatch('[Originate][HistoryDialRecallInQueue][historyCatch]'));}else{_0x1bdb3e[_0xf757('0xd8')](createObjHistory(_0x4fb641,_0x2ac034,_0xf757('0x1e7'),0x16,_0xf757('0x1e8')),_0xf757('0x1e9'),'[Originate][HistoryRecallClose]');}}}}else{_0x4fb641['outboundBlacklistCallsDay']+=0x1;_0x1bdb3e[_0xf757('0xd8')](createObjHistory(_0x4fb641,_0x2ac034,_0xf757('0x1ea'),0xd,_0xf757('0x1eb')),_0xf757('0x1ec'),_0xf757('0x1ed'));throw'inBlackList';}};};Dialer['prototype'][_0xf757('0x158')]=function(_0x322807){var _0x492e42=this;var _0xc67df1=_0x322807[_0xf757('0x1ee')]-_0x322807[_0xf757('0x97')]-_0x322807[_0xf757('0xc0')];emitCampaignSummary(_0x322807);if(_0xc67df1>0x0){if(_0xc67df1>this['maxNumberOriginate']){_0xc67df1=this['maxNumberOriginate'];}_0x322807[_0xf757('0xc0')]+=_0xc67df1;this['getContactDialerIvr'](_0x322807['id'],_0xc67df1,_0x322807[_0xf757('0x1ef')],_0x322807)[_0xf757('0xb5')](function(_0x3dd7e4){_0x322807[_0xf757('0xc0')]-=_0xc67df1;_0x322807[_0xf757('0xc0')]=_0x322807['temp']>0x0?_0x322807[_0xf757('0xc0')]:0x0;if(!checkContactEmpty(_0x3dd7e4)){_0x322807[_0xf757('0x40')]=_0xf757('0x1f0');logger[_0xf757('0x7d')](_0xf757('0x1f1')+_0x322807[_0xf757('0x41')]);}else{_0x322807[_0xf757('0x97')]+=_0x3dd7e4[_0xf757('0x96')];_0x322807[_0xf757('0x40')]='RUNNING';for(var _0x246ed6=0x0;_0x246ed6<_0x3dd7e4[_0xf757('0x96')];_0x246ed6+=0x1){_0x322807[_0xf757('0x1f2')]+=0x1;if(_['isNil'](_0x3dd7e4[_0x246ed6])||_[_0xf757('0xac')](_0x3dd7e4[_0x246ed6][_0xf757('0x164')])||_[_0xf757('0xac')](_0x3dd7e4[_0x246ed6][_0xf757('0x164')][_0xf757('0x165')])){_0x492e42[_0xf757('0xc9')](_0xf757('0x1f3'),_0x322807,_0x3dd7e4[_0x246ed6]);}else{_0x492e42[_0xf757('0xb8')](_[_0xf757('0xcc')](_0x3dd7e4[_0x246ed6],['CampaignId','Contact.phone']))[_0xf757('0xb5')](_0x492e42['checkContactBlack'](_0x322807,_0x3dd7e4[_0x246ed6]))[_0xf757('0xae')](_0x492e42['loggerHandler'](_0xf757('0x1f4'),_0x322807));}}}})[_0xf757('0xae')](loggerGetContactDialer(_0xf757('0x1f5'),_0x322807,_0xc67df1));}};Dialer[_0xf757('0x20')][_0xf757('0x1c5')]=function(_0x1a5b2f,_0x484fc0){var _0x2647c6=this;var _0x471044=[];var _0x3e71ef=_0x484fc0>=0x1?_0x484fc0:0x1;if(_0x1a5b2f[_0xf757('0x5c')]===_0xf757('0xa')){_0x3e71ef=0x1;}var _0xac959a=Math[_0xf757('0x1bf')](_0x1a5b2f[_0xf757('0x51')]*_0x3e71ef)-_0x1a5b2f[_0xf757('0x97')]-_0x1a5b2f['temp'];emitVoiceQueueSummary(_0x1a5b2f);if(_0x1a5b2f[_0xf757('0x1f6')]>0x0){var _0x43a38f=_0x1a5b2f['dialLimitQueue']-_0x1a5b2f[_0xf757('0x97')]-_0x1a5b2f['talking']-_0x1a5b2f[_0xf757('0xc0')]-_0x1a5b2f[_0xf757('0x9d')];if(_0xac959a>_0x43a38f){_0xac959a=_0x43a38f;}}if(_0xac959a>0x0){if(_0x1a5b2f[_0xf757('0x5c')]===_0xf757('0xa')){_0xac959a=0x1;}if(_0xac959a>this[_0xf757('0x1f7')]){_0xac959a=this['maxNumberOriginate'];}_0x1a5b2f['temp']+=_0xac959a;for(var _0x9cbedc in this['agents']){if(typeof this[_0xf757('0x27')][_0x9cbedc]!=='undefined'){if(this[_0xf757('0x27')][_0x9cbedc][_0xf757('0xa5')]==='not_inuse'&&this['agents'][_0x9cbedc][_0xf757('0xad')]===_0xf757('0xd6')){_0x471044[_0xf757('0x129')](this[_0xf757('0x27')][_0x9cbedc]['id']);}}}this['getContactDialer'](_0x1a5b2f['id'],_0x471044,_0xac959a,_0x1a5b2f[_0xf757('0x1ef')],_0x1a5b2f)[_0xf757('0xb5')](function(_0x29e603){_0x1a5b2f[_0xf757('0xc0')]-=_0xac959a;_0x1a5b2f[_0xf757('0xc0')]=_0x1a5b2f[_0xf757('0xc0')]>0x0?_0x1a5b2f[_0xf757('0xc0')]:0x0;if(!checkContactEmpty(_0x29e603)){_0x2647c6['countReScheduled'](_0x1a5b2f)[_0xf757('0xb5')](sendMessageReschedule(_0x1a5b2f))[_0xf757('0xae')](loggerCatch(_0xf757('0xb6')));}else{_0x1a5b2f[_0xf757('0x97')]+=_0x29e603[_0xf757('0x96')];_0x1a5b2f['message']=_0x1a5b2f[_0xf757('0x5c')]===_0xf757('0xa')?_0xf757('0x16b'):_0xf757('0x1f8');for(var _0x1e0316=0x0;_0x1e0316<_0x29e603[_0xf757('0x96')];_0x1e0316+=0x1){if(_[_0xf757('0xac')](_0x29e603[_0x1e0316])||_[_0xf757('0xac')](_0x29e603[_0x1e0316][_0xf757('0x164')])||_[_0xf757('0xac')](_0x29e603[_0x1e0316][_0xf757('0x164')][_0xf757('0x165')])){_0x2647c6[_0xf757('0xc9')](_0xf757('0x1f3'),_0x1a5b2f,_0x29e603[_0x1e0316]);}else{_0x2647c6[_0xf757('0xb7')](_[_0xf757('0xcc')](_0x29e603[_0x1e0316],[_0xf757('0xf8'),_0xf757('0x1f9')]))['then'](_0x2647c6[_0xf757('0x1df')](_0x1a5b2f,_0x29e603[_0x1e0316]))[_0xf757('0xae')](_0x2647c6[_0xf757('0x1fa')](_0xf757('0x1f3'),_0x1a5b2f));}}}})['catch'](loggerGetContactDialer(_0xf757('0x1fb'),_0x1a5b2f,_0xac959a));}};Dialer[_0xf757('0x20')]['handlePredictive']=function(_0x56bdb9){if(_0x56bdb9[_0xf757('0x1f6')]>0x0){var _0x46d131=_0x56bdb9['dialLimitQueue']-_0x56bdb9[_0xf757('0x97')]-_0x56bdb9[_0xf757('0x56')];if(_0x46d131>0x0){this[_0xf757('0x1fc')](_0x56bdb9);}else{loggerPredictiveCalls[_0xf757('0x7d')]('[handlePredictive][limitChannel]');}}else{this['tryOriginatePredictive'](_0x56bdb9);}};Dialer[_0xf757('0x20')][_0xf757('0x1fc')]=function(_0x19de88){var _0x2648e4=this;var _0x1d7873=[];_0x19de88[_0xf757('0x97')]+=0x1;for(var _0x2a1158 in this[_0xf757('0x27')]){if(typeof this['agents'][_0x2a1158]!=='undefined'){if(this[_0xf757('0x27')][_0x2a1158][_0xf757('0xa5')]===_0xf757('0x1fd')&&this[_0xf757('0x27')][_0x2a1158][_0xf757('0xad')]==='reachable'){_0x1d7873['push'](this[_0xf757('0x27')][_0x2a1158]['id']);}}}this['getContactDialer'](_0x19de88['id'],_0x1d7873,0x1,_0x19de88[_0xf757('0x1ef')],_0x19de88)[_0xf757('0xb5')](function(_0x556c88){if(!checkContactEmpty(_0x556c88)){checkContactLowerLimitOriginate(_0x19de88,0x1,0x0);_0x2648e4[_0xf757('0xb3')](_0x19de88)[_0xf757('0xb5')](sendMessageReschedule(_0x19de88))[_0xf757('0xae')](loggerCatch(_0xf757('0xb6')));}else{_0x19de88['message']=_0xf757('0x1f8');if(_['isNil'](_0x556c88[0x0])||_[_0xf757('0xac')](_0x556c88[0x0][_0xf757('0x164')])||_[_0xf757('0xac')](_0x556c88[0x0][_0xf757('0x164')]['phone'])){_0x2648e4['emptyContact'](_0xf757('0x1f3'),_0x19de88,_0x556c88[0x0]);}else{_0x2648e4[_0xf757('0xb7')](_[_0xf757('0xcc')](_0x556c88[0x0],[_0xf757('0xf8'),_0xf757('0x1f9')]))['then'](_0x2648e4[_0xf757('0x1df')](_0x19de88,_0x556c88[0x0]))[_0xf757('0xae')](_0x2648e4[_0xf757('0x1fa')](_0xf757('0x1fe'),_0x19de88));}}})[_0xf757('0xae')](loggerGetContactDialer(_0xf757('0x1ff'),_0x19de88,0x1));emitVoiceQueueSummary(_0x19de88);};Dialer['prototype'][_0xf757('0x1d2')]=function(_0x2200b8,_0x6eaf26,_0x32795a,_0x254fc1,_0x1cf908,_0x1a4132){loggerPredictive[_0xf757('0x7d')](_0xf757('0x200'));loggerPredictive['info'](_0xf757('0x201'),_0x2200b8);loggerPredictive[_0xf757('0x7d')]('Interval:\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20',_0x6eaf26);loggerPredictive[_0xf757('0x7d')]('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',_0x32795a);loggerPredictive[_0xf757('0x7d')](_0xf757('0x202'),_0x254fc1);loggerPredictive[_0xf757('0x7d')](_0xf757('0x203'),_0x1cf908);loggerPredictive[_0xf757('0x7d')](_0xf757('0x85'));return new BPromise(function(_0x32bd9d,_0x55b223){if(_0x2200b8<=0x0||isNaN(_0x2200b8)){return _0x55b223(msgResponse('[abandonmentRate]',_0xf757('0x48'),'m\x20=\x20'+_0x2200b8));}if(_0x32795a<=0x0||isNaN(_0x32795a)){return _0x55b223(msgResponse(_0xf757('0x204'),_0xf757('0x48'),'Ts\x20=\x20'+_0x32795a));}if(_0x254fc1<=0x0||isNaN(_0x254fc1)){return _0x55b223(msgResponse(_0xf757('0x204'),'Error',_0xf757('0x205')+_0x254fc1));}if(_0x6eaf26<=0x0||isNaN(_0x6eaf26)){return _0x55b223(msgResponse(_0xf757('0x204'),_0xf757('0x48'),'interval\x20=\x20'+_0x6eaf26));}if(_0x1cf908<=0x0||isNaN(_0x1cf908)){return _0x55b223(msgResponse(_0xf757('0x204'),_0xf757('0x48'),_0xf757('0x206')+_0x1cf908));}_0x1a4132=_0x1a4132||0x0;var _0x4b05d2=0x1/_0x32795a;var _0x41d2e0=0x0;var _0x1a68db=0x0;var _0x19f301=0x0;var _0x2fde2f=0x0;for(var _0xe65f3d=0x0;_0x19f301<_0x1cf908;_0xe65f3d+=0x1){_0x1a68db=_0xe65f3d/_0x6eaf26;_0x41d2e0=(_0x254fc1*_0x1a68db+_0x1a4132)/_0x4b05d2;_0x19f301=erlangb(_0x41d2e0,_0x2200b8);_0x2fde2f=_0x41d2e0/_0x2200b8*(0x1-erlangb(_0x41d2e0,_0x2200b8));}return _0x32bd9d({'erlangCalls':_0xe65f3d,'erlangCallToSecond':_0x6eaf26/_0xe65f3d,'erlangAbandonmentRate':_0x19f301,'erlangBusyFactor':_0x2fde2f});});};Dialer[_0xf757('0x20')]['busyFactor']=function(_0x26d596,_0x1cbcf5,_0x2da8a4,_0x4826bd,_0x8ff065,_0x1b2c9c){loggerPredictive[_0xf757('0x7d')](_0xf757('0x207'));loggerPredictive[_0xf757('0x7d')](_0xf757('0x201'),_0x26d596);loggerPredictive[_0xf757('0x7d')](_0xf757('0x208'),_0x1cbcf5);loggerPredictive[_0xf757('0x7d')](_0xf757('0x209'),_0x2da8a4);loggerPredictive[_0xf757('0x7d')](_0xf757('0x202'),_0x4826bd);loggerPredictive['info']('Umin:\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20',_0x8ff065);loggerPredictive['info'](_0xf757('0x85'));return new BPromise(function(_0x35ba56,_0x2317b3){if(_0x26d596<=0x0||isNaN(_0x26d596)){return _0x2317b3(msgResponse(_0xf757('0x20a'),_0xf757('0x48'),_0xf757('0x20b')+_0x26d596));}if(_0x2da8a4<=0x0||isNaN(_0x2da8a4)){return _0x2317b3(msgResponse(_0xf757('0x20a'),_0xf757('0x48'),_0xf757('0x20c')+_0x2da8a4));}if(_0x4826bd<=0x0||isNaN(_0x4826bd)){return _0x2317b3(msgResponse(_0xf757('0x20a'),'Error',_0xf757('0x205')+_0x4826bd));}if(_0x1cbcf5<=0x0||isNaN(_0x1cbcf5)){return _0x2317b3(msgResponse(_0xf757('0x20a'),_0xf757('0x48'),_0xf757('0x20d')+_0x1cbcf5));}if(_0x8ff065<=0x0||isNaN(_0x8ff065)){return _0x2317b3(msgResponse('[busyFactor]',_0xf757('0x48'),_0xf757('0x20e')+_0x8ff065));}_0x1b2c9c=_0x1b2c9c||0x0;var _0x285967=0x1/_0x2da8a4;var _0x22de5b=0x0;var _0x1b2307=0x0;var _0x584d6e=0x0;var _0x5eec5c=0x0;for(var _0x4628c5=0x0;_0x5eec5c<_0x8ff065;_0x4628c5+=0x1){_0x1b2307=_0x4628c5/_0x1cbcf5;_0x22de5b=(_0x4826bd*_0x1b2307+_0x1b2c9c)/_0x285967;_0x584d6e=erlangb(_0x22de5b,_0x26d596);_0x5eec5c=_0x22de5b/_0x26d596*(0x1-erlangb(_0x22de5b,_0x26d596));}return _0x35ba56({'erlangCalls':_0x4628c5,'erlangCallToSecond':_0x1cbcf5/_0x4628c5,'erlangAbandonmentRate':_0x584d6e,'erlangBusyFactor':_0x5eec5c});});};module[_0xf757('0x20f')]=Dialer;
\ No newline at end of file
index 644a10a..856a45a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x52b8=['holdtime','talktime','membername','connectedlinename','reason','callback','callbackuniqueid','callbackat','recallme','ContactId','ListId','UserId','VoiceQueueId','CampaignId','originatecalleridname','util','lodash','moment','milliseconds','seconds','scheduledat','type','outbound','queue','countbusyretry','countcongestionretry','countnoanswerretry','countglobal','countabandonedretry','countmachineretry','countnosuchnumberretry','countdropretry','countagentrejectretry','uniqueid','calleridnum','number','starttime','droptime','ringtime','responsetime'];(function(_0x5a378c,_0x52c644){var _0x410b2b=function(_0xfa778a){while(--_0xfa778a){_0x5a378c['push'](_0x5a378c['shift']());}};_0x410b2b(++_0x52c644);}(_0x52b8,0xd7));var _0x852b=function(_0xe09d5a,_0x587fa0){_0xe09d5a=_0xe09d5a-0x0;var _0x384097=_0x52b8[_0xe09d5a];return _0x384097;};'use strict';var util=require(_0x852b('0x0'));var _=require(_0x852b('0x1'));var moment=require(_0x852b('0x2'));function getSeconds(_0x50cb8d,_0x431abd){var _0x3706a6=moment(_0x50cb8d)['milliseconds'](0x0);var _0x553ef4=moment(_0x431abd)[_0x852b('0x3')](0x0);return _0x3706a6['diff'](_0x553ef4,_0x852b('0x4'));}function QueueCallerAbandon(_0x2ab418,_0x39ee07){this[_0x852b('0x5')]=_0x2ab418[_0x852b('0x5')];this[_0x852b('0x6')]=_0x2ab418[_0x852b('0x6')];this['campaigntype']=_0x2ab418[_0x852b('0x6')]===_0x852b('0x7')?_0x852b('0x8'):_0x2ab418[_0x852b('0x6')];this[_0x852b('0x9')]=_0x2ab418[_0x852b('0x9')];this[_0x852b('0xa')]=_0x2ab418['countcongestionretry'];this[_0x852b('0xb')]=_0x2ab418[_0x852b('0xb')];this[_0x852b('0xc')]=_0x2ab418['countbusyretry']+_0x2ab418[_0x852b('0xa')]+_0x2ab418[_0x852b('0xb')]+_0x2ab418['countnosuchnumberretry']+_0x2ab418['countdropretry']+_0x2ab418[_0x852b('0xd')]+_0x2ab418[_0x852b('0xe')]+_0x2ab418['countagentrejectretry'];this['countnosuchnumberretry']=_0x2ab418[_0x852b('0xf')];this[_0x852b('0x10')]=_0x2ab418[_0x852b('0x10')];this[_0x852b('0xd')]=_0x2ab418[_0x852b('0xd')];this['countmachineretry']=_0x2ab418[_0x852b('0xe')];this[_0x852b('0x11')]=_0x2ab418[_0x852b('0x11')];this[_0x852b('0x12')]=_0x39ee07[_0x852b('0x12')];this['calleridname']=_0x2ab418['name'];this[_0x852b('0x13')]=_0x2ab418[_0x852b('0x14')];this[_0x852b('0x15')]=_0x2ab418[_0x852b('0x15')];this['responsetime']=_0x2ab418['responsetime'];this[_0x852b('0x16')]=_0x2ab418[_0x852b('0x16')];this['endtime']=this[_0x852b('0x16')];this[_0x852b('0x17')]=getSeconds(_0x2ab418[_0x852b('0x18')],_0x2ab418[_0x852b('0x15')]);this[_0x852b('0x19')]=getSeconds(this['droptime'],_0x2ab418[_0x852b('0x18')]);this[_0x852b('0x1a')]=0x0;this['queue']=_0x39ee07['queue'];this[_0x852b('0x1b')]=_0x39ee07[_0x852b('0x1c')];this['reason']=_0x39ee07[_0x852b('0x1d')];this[_0x852b('0x1e')]=_0x2ab418[_0x852b('0x1e')];this[_0x852b('0x1f')]=_0x2ab418[_0x852b('0x1f')];this['callbackat']=_0x2ab418[_0x852b('0x20')];this[_0x852b('0x21')]=_0x2ab418[_0x852b('0x21')];this['ContactId']=_0x2ab418[_0x852b('0x22')];this[_0x852b('0x23')]=_0x2ab418['ListId'];this[_0x852b('0x24')]=_0x2ab418[_0x852b('0x24')];this[_0x852b('0x25')]=_0x2ab418[_0x852b('0x25')];this['CampaignId']=_0x2ab418[_0x852b('0x26')];this['originatecalleridnum']=_0x2ab418['originatecalleridnum']||'';this['originatecalleridname']=_0x2ab418[_0x852b('0x27')]||'';}module['exports']=QueueCallerAbandon;
\ No newline at end of file
+var _0x8d6a=['countagentrejectretry','countdropretry','countmachineretry','uniqueid','calleridname','name','calleridnum','number','starttime','responsetime','droptime','endtime','ringtime','holdtime','talktime','queue','membername','connectedlinename','reason','callback','callbackuniqueid','ContactId','ListId','UserId','VoiceQueueId','CampaignId','originatecalleridnum','originatecalleridname','exports','util','lodash','moment','milliseconds','seconds','type','outbound','countbusyretry','countcongestionretry','countnoanswerretry','countglobal','countnosuchnumberretry','countabandonedretry'];(function(_0xed6f46,_0x1c9006){var _0x5b267c=function(_0x59f0d2){while(--_0x59f0d2){_0xed6f46['push'](_0xed6f46['shift']());}};_0x5b267c(++_0x1c9006);}(_0x8d6a,0x143));var _0xa8d6=function(_0x37bd26,_0x5ad346){_0x37bd26=_0x37bd26-0x0;var _0xe83dc4=_0x8d6a[_0x37bd26];return _0xe83dc4;};'use strict';var util=require(_0xa8d6('0x0'));var _=require(_0xa8d6('0x1'));var moment=require(_0xa8d6('0x2'));function getSeconds(_0x5d7773,_0x4fc258){var _0x4349ec=moment(_0x5d7773)['milliseconds'](0x0);var _0x176324=moment(_0x4fc258)[_0xa8d6('0x3')](0x0);return _0x4349ec['diff'](_0x176324,_0xa8d6('0x4'));}function QueueCallerAbandon(_0x35979e,_0x433e35){this['scheduledat']=_0x35979e['scheduledat'];this[_0xa8d6('0x5')]=_0x35979e[_0xa8d6('0x5')];this['campaigntype']=_0x35979e[_0xa8d6('0x5')]===_0xa8d6('0x6')?'queue':_0x35979e[_0xa8d6('0x5')];this['countbusyretry']=_0x35979e[_0xa8d6('0x7')];this[_0xa8d6('0x8')]=_0x35979e['countcongestionretry'];this['countnoanswerretry']=_0x35979e[_0xa8d6('0x9')];this[_0xa8d6('0xa')]=_0x35979e['countbusyretry']+_0x35979e[_0xa8d6('0x8')]+_0x35979e['countnoanswerretry']+_0x35979e[_0xa8d6('0xb')]+_0x35979e['countdropretry']+_0x35979e[_0xa8d6('0xc')]+_0x35979e['countmachineretry']+_0x35979e[_0xa8d6('0xd')];this['countnosuchnumberretry']=_0x35979e[_0xa8d6('0xb')];this[_0xa8d6('0xe')]=_0x35979e[_0xa8d6('0xe')];this[_0xa8d6('0xc')]=_0x35979e[_0xa8d6('0xc')];this['countmachineretry']=_0x35979e[_0xa8d6('0xf')];this[_0xa8d6('0xd')]=_0x35979e[_0xa8d6('0xd')];this[_0xa8d6('0x10')]=_0x433e35[_0xa8d6('0x10')];this[_0xa8d6('0x11')]=_0x35979e[_0xa8d6('0x12')];this[_0xa8d6('0x13')]=_0x35979e[_0xa8d6('0x14')];this[_0xa8d6('0x15')]=_0x35979e[_0xa8d6('0x15')];this[_0xa8d6('0x16')]=_0x35979e[_0xa8d6('0x16')];this[_0xa8d6('0x17')]=_0x35979e[_0xa8d6('0x17')];this[_0xa8d6('0x18')]=this[_0xa8d6('0x17')];this[_0xa8d6('0x19')]=getSeconds(_0x35979e[_0xa8d6('0x16')],_0x35979e[_0xa8d6('0x15')]);this[_0xa8d6('0x1a')]=getSeconds(this['droptime'],_0x35979e[_0xa8d6('0x16')]);this[_0xa8d6('0x1b')]=0x0;this['queue']=_0x433e35[_0xa8d6('0x1c')];this[_0xa8d6('0x1d')]=_0x433e35[_0xa8d6('0x1e')];this[_0xa8d6('0x1f')]=_0x433e35['reason'];this[_0xa8d6('0x20')]=_0x35979e[_0xa8d6('0x20')];this[_0xa8d6('0x21')]=_0x35979e[_0xa8d6('0x21')];this['callbackat']=_0x35979e['callbackat'];this['recallme']=_0x35979e['recallme'];this[_0xa8d6('0x22')]=_0x35979e[_0xa8d6('0x22')];this[_0xa8d6('0x23')]=_0x35979e[_0xa8d6('0x23')];this[_0xa8d6('0x24')]=_0x35979e[_0xa8d6('0x24')];this[_0xa8d6('0x25')]=_0x35979e['VoiceQueueId'];this[_0xa8d6('0x26')]=_0x35979e['CampaignId'];this[_0xa8d6('0x27')]=_0x35979e[_0xa8d6('0x27')]||'';this[_0xa8d6('0x28')]=_0x35979e['originatecalleridname']||'';}module[_0xa8d6('0x29')]=QueueCallerAbandon;
\ No newline at end of file
index 3340f56..846a2cb 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(_0x43c5c0,_0x591e54){var _0x2d7b06=function(_0x3d5ac2){while(--_0x3d5ac2){_0x43c5c0['push'](_0x43c5c0['shift']());}};_0x2d7b06(++_0x591e54);}(_0xa9e0,0x123));var _0x0a9e=function(_0x49ca18,_0x5e6d05){_0x49ca18=_0x49ca18-0x0;var _0x145d54=_0xa9e0[_0x49ca18];return _0x145d54;};'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(_0x42eaee,_0x5abb66){var _0x15d69e=function(_0x59c52d){while(--_0x59c52d){_0x42eaee['push'](_0x42eaee['shift']());}};_0x15d69e(++_0x5abb66);}(_0xa9e0,0x123));var _0x0a9e=function(_0xf71120,_0x25b7f9){_0xf71120=_0xf71120-0x0;var _0xbe2fd3=_0xa9e0[_0xf71120];return _0xbe2fd3;};'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 b66aa21..cc9e3de 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5de6=['originateresponse','syncOriginateResponse','prototype','syncNewchannel','context','exten','localstationid','uniqueid','name','info','\x20syncNewchannel\x20','channel','variable','channelstate','channelstatedesc','hasOwnProperty','value','syncFaxStatus','operation','status','filename','\x20syncFaxStatus\x20','remotestationid','resolution','transferrate','calleridnum','pagestransferred','/var/opt/motion2/server/files/attachments/','\x20result\x20conversion\x20file\x20','message','parse','.pdf','then','notify','catch','error','\x20notify\x20','stringify','\x20receiveFax\x20','merge','response','[Fax][Message][Error][Updated]','[Fax][Message][Error][NoUpdate1]','[Fax][Message][Error][NoUpdate2]','updateStatus','AttachmentId','[Fax][Message][Updated]','logger','[Fax][Message][NoUpdate1]','\x20hangup\x20sendFile\x20','\x20hangup\x20faxRiceive\x20','faxpages','faxstatus','SUCCESS','SENDING\x20FAILED:\x20','faxstatusstring','send','execOriginate','FaxAccountId','[Fax][execOriginate][success]','Fax\x20received','[Fax][execOriginate][failure]','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','execute','%s/%s.tif','dir','XMF-PATH','Convert\x20pdf\x20to\x20tif','variablesAction','Action','addVariables','isTrunkReachable','isNil','active','trunks','SIP/%s','reachable','checkTrunk','[Fax][checkTrunk][Trunk\x20not\x20work]','\x20Trunk\x20is\x20not\x20active','Trunk\x20not\x20working','[Fax][checkTrunk][Empty\x20Fax]','Empty\x20Fax','[Fax][checkTrunk][Empty\x20path]','Empty\x20path','Is\x20Valid','exports','util','lodash','uuid','moment','path','tiff2pdf','../../../config/logger','fax','../ami','./channel','./util/util','../rpc/faxAccount','../rpc/faxMessage','channels','faxAccounts','actions','newchannel','bind','varset','syncVarSet','newstate','syncNewState','newexten','syncNewExten','receivefax','syncReceiveFax','hangup','syncHangup'];(function(_0x2f3794,_0x3c3bec){var _0x1c9fbe=function(_0x2d2eac){while(--_0x2d2eac){_0x2f3794['push'](_0x2f3794['shift']());}};_0x1c9fbe(++_0x3c3bec);}(_0x5de6,0xd4));var _0x65de=function(_0x40a045,_0x516f0e){_0x40a045=_0x40a045-0x0;var _0x1a687c=_0x5de6[_0x40a045];return _0x1a687c;};'use strict';var util=require(_0x65de('0x0'));var _=require(_0x65de('0x1'));var BPromise=require('bluebird');var uuid=require(_0x65de('0x2'));var moment=require(_0x65de('0x3'));var path=require(_0x65de('0x4'));var tiff2pdf=require(_0x65de('0x5'));var gs=require('./util/gs');var logger=require(_0x65de('0x6'))(_0x65de('0x7'));var ami=require(_0x65de('0x8'));var rpcDb=require('./rpcDb');var Channel=require(_0x65de('0x9'));var ut=require(_0x65de('0xa'));var Action=require('./action');var faxAccount=require(_0x65de('0xb'));var attachment=require('../rpc/attachment');var faxMessage=require(_0x65de('0xc'));function Fax(_0x1cfb8c){this[_0x65de('0xd')]={};this[_0x65de('0xe')]=_0x1cfb8c[_0x65de('0xe')];this['trunks']=_0x1cfb8c['trunks'];this[_0x65de('0xf')]={};ami['on'](_0x65de('0x10'),this['syncNewchannel'][_0x65de('0x11')](this));ami['on'](_0x65de('0x12'),this[_0x65de('0x13')][_0x65de('0x11')](this));ami['on'](_0x65de('0x14'),this[_0x65de('0x15')][_0x65de('0x11')](this));ami['on'](_0x65de('0x16'),this[_0x65de('0x17')][_0x65de('0x11')](this));ami['on']('faxstatus',this['syncFaxStatus'][_0x65de('0x11')](this));ami['on'](_0x65de('0x18'),this[_0x65de('0x19')][_0x65de('0x11')](this));ami['on'](_0x65de('0x1a'),this[_0x65de('0x1b')][_0x65de('0x11')](this));ami['on'](_0x65de('0x1c'),this[_0x65de('0x1d')]['bind'](this));}Fax[_0x65de('0x1e')][_0x65de('0x1f')]=function(_0x6ada67){if(_0x6ada67[_0x65de('0x20')]==='from-voip-provider'){for(var _0x15550b in this[_0x65de('0xe')]){if(this[_0x65de('0xe')]['hasOwnProperty'](_0x15550b)){if(_0x6ada67[_0x65de('0x21')]===this[_0x65de('0xe')][_0x15550b][_0x65de('0x22')]){this[_0x65de('0xd')][_0x6ada67['uniqueid']]={};this[_0x65de('0xd')][_0x6ada67[_0x65de('0x23')]]['channel']=_0x6ada67['channel'];this[_0x65de('0xd')][_0x6ada67[_0x65de('0x23')]]['id']=this[_0x65de('0xe')][_0x15550b]['id'];this[_0x65de('0xd')][_0x6ada67[_0x65de('0x23')]]['name']=this[_0x65de('0xe')][_0x15550b][_0x65de('0x24')];logger[_0x65de('0x25')](_0x6ada67['uniqueid'],_0x65de('0x26'));}}}}if(this[_0x65de('0xf')][_0x6ada67[_0x65de('0x23')]]){this['channels'][_0x6ada67[_0x65de('0x23')]]={};this[_0x65de('0xd')][_0x6ada67[_0x65de('0x23')]][_0x65de('0x27')]=_0x6ada67[_0x65de('0x27')];logger[_0x65de('0x25')](_0x6ada67[_0x65de('0x23')],_0x65de('0x26'));}};Fax[_0x65de('0x1e')][_0x65de('0x13')]=function(_0x36fd8f){if(this[_0x65de('0xd')][_0x36fd8f[_0x65de('0x23')]]){for(var _0x299fb7 in _0x36fd8f[_0x65de('0x28')]){if(_0x36fd8f[_0x65de('0x28')]['hasOwnProperty'](_0x299fb7)){this['channels'][_0x36fd8f[_0x65de('0x23')]][_0x299fb7]=_0x36fd8f['value'];}}}};Fax['prototype'][_0x65de('0x15')]=function(_0x4748dc){if(this[_0x65de('0xd')][_0x4748dc[_0x65de('0x23')]]){this[_0x65de('0xd')][_0x4748dc[_0x65de('0x23')]]['channelstate']=_0x4748dc[_0x65de('0x29')];this['channels'][_0x4748dc['uniqueid']][_0x65de('0x2a')]=_0x4748dc[_0x65de('0x2a')];}};Fax[_0x65de('0x1e')]['syncNewExten']=function(_0x501d82){if(this[_0x65de('0xd')][_0x501d82[_0x65de('0x23')]]){for(var _0x4d4d31 in _0x501d82[_0x65de('0x28')]){if(_0x501d82[_0x65de('0x28')][_0x65de('0x2b')](_0x4d4d31)){this[_0x65de('0xd')][_0x501d82['uniqueid']][_0x4d4d31]=_0x501d82[_0x65de('0x2c')];}}}};Fax[_0x65de('0x1e')][_0x65de('0x2d')]=function(_0x3f0f61){if(this[_0x65de('0xd')][_0x3f0f61[_0x65de('0x23')]]){this[_0x65de('0xd')][_0x3f0f61[_0x65de('0x23')]][_0x65de('0x2e')]=_0x3f0f61[_0x65de('0x2e')];this[_0x65de('0xd')][_0x3f0f61[_0x65de('0x23')]][_0x65de('0x2f')]=_0x3f0f61[_0x65de('0x2f')];this[_0x65de('0xd')][_0x3f0f61[_0x65de('0x23')]][_0x65de('0x22')]=_0x3f0f61['localstationid'];this['channels'][_0x3f0f61[_0x65de('0x23')]][_0x65de('0x30')]=_0x3f0f61[_0x65de('0x30')];logger['info'](_0x3f0f61['uniqueid'],_0x65de('0x31'));}};Fax[_0x65de('0x1e')][_0x65de('0x19')]=function(_0x54879b){var _0x5acdb6=this;if(this[_0x65de('0xd')][_0x54879b[_0x65de('0x23')]]){var _0x551f62=this['channels'][_0x54879b[_0x65de('0x23')]]['id'];this[_0x65de('0xd')][_0x54879b['uniqueid']][_0x65de('0x32')]=_0x54879b['remotestationid'];this[_0x65de('0xd')][_0x54879b[_0x65de('0x23')]]['pagestransferred']=_0x54879b['pagestransferred'];this['channels'][_0x54879b[_0x65de('0x23')]][_0x65de('0x22')]=_0x54879b[_0x65de('0x22')];this[_0x65de('0xd')][_0x54879b[_0x65de('0x23')]][_0x65de('0x33')]=_0x54879b[_0x65de('0x33')];this[_0x65de('0xd')][_0x54879b[_0x65de('0x23')]][_0x65de('0x34')]=_0x54879b[_0x65de('0x34')];this[_0x65de('0xd')][_0x54879b[_0x65de('0x23')]][_0x65de('0x30')]=_0x54879b[_0x65de('0x30')];this['channels'][_0x54879b[_0x65de('0x23')]][_0x65de('0x35')]=_0x54879b['calleridnum'];if(this['channels'][_0x54879b[_0x65de('0x23')]][_0x65de('0x36')]>0x0){tiff2pdf(_0x54879b['filename'],_0x65de('0x37'),function(_0x2f72c4){logger[_0x65de('0x25')](_0x54879b[_0x65de('0x23')],_0x65de('0x38'),_0x2f72c4[_0x65de('0x39')]);attachment['create']({'name':path['parse'](_0x54879b[_0x65de('0x30')])[_0x65de('0x24')],'basename':path[_0x65de('0x3a')](_0x54879b[_0x65de('0x30')])[_0x65de('0x24')]+_0x65de('0x3b'),'type':'application/pdf'})[_0x65de('0x3c')](function(_0x243d20){faxAccount[_0x65de('0x3d')](_0x551f62,{'from':_0x54879b[_0x65de('0x35')],'mapKey':'fax','body':path[_0x65de('0x3a')](_0x54879b[_0x65de('0x30')])['name']+'.pdf','AttachmentId':_0x243d20['id']})[_0x65de('0x3e')](function(_0x309488){logger[_0x65de('0x3f')](_0x54879b[_0x65de('0x23')],_0x65de('0x40'),JSON[_0x65de('0x41')](_0x309488));});})[_0x65de('0x3e')](function(_0x2270e1){logger[_0x65de('0x3f')](_0x54879b[_0x65de('0x23')],_0x65de('0x42'),JSON['stringify'](_0x2270e1));});});}logger['info'](_0x54879b['uniqueid'],_0x65de('0x42'));}};Fax[_0x65de('0x1e')][_0x65de('0x1d')]=function(_0xd83827){if(this[_0x65de('0xf')][_0xd83827[_0x65de('0x23')]]){_[_0x65de('0x43')](this[_0x65de('0xd')][_0xd83827[_0x65de('0x23')]],_['pick'](_0xd83827,[_0x65de('0x44'),'reason']));}};function updateStatus(_0x54a06c){if(_0x54a06c['AttachmentId']){faxMessage['update'](_0x54a06c['AttachmentId'],{'failMessage':'SENDING\x20FAILED\x20'})['then'](function(_0x253810){ut['logger'](_0x65de('0x45'),_0x253810);})[_0x65de('0x3e')](function(_0x47f731){ut['logger'](_0x65de('0x46'),_0x47f731);});}else{ut['logger'](_0x65de('0x47'));}}Fax[_0x65de('0x1e')][_0x65de('0x48')]=function(_0x43319b,_0x18ab2a,_0x2129fd){var _0x494463=this;var _0xc829f9={};if(_0x18ab2a){_0xc829f9={'read':_0x18ab2a};}else{_0xc829f9={'failMessage':_0x2129fd};}if(this[_0x65de('0xf')][_0x43319b][_0x65de('0x49')]){faxMessage['update'](this[_0x65de('0xf')][_0x43319b][_0x65de('0x49')],_0xc829f9)[_0x65de('0x3c')](function(_0x2e6401){ut['logger'](_0x65de('0x4a'),_0x2e6401);})[_0x65de('0x3e')](function(_0xf656d){ut[_0x65de('0x4b')](_0x65de('0x4c'),_0xf656d);})['finally'](function(){delete _0x494463[_0x65de('0xd')][_0x43319b];delete _0x494463['actions'][_0x43319b];});}else{ut[_0x65de('0x4b')]('[Fax][Message][NoUpdate2]');delete this[_0x65de('0xd')][_0x43319b];delete this[_0x65de('0xf')][_0x43319b];}};Fax[_0x65de('0x1e')][_0x65de('0x1b')]=function(_0x537b07){var _0x39ec69=this;if(this['channels'][_0x537b07[_0x65de('0x23')]]){if(this[_0x65de('0xf')][_0x537b07[_0x65de('0x23')]]){this['channels'][_0x537b07[_0x65de('0x23')]]['id']=this[_0x65de('0xf')][_0x537b07[_0x65de('0x23')]]['id'];this[_0x65de('0xd')][_0x537b07[_0x65de('0x23')]][_0x65de('0x24')]=this[_0x65de('0xf')][_0x537b07[_0x65de('0x23')]][_0x65de('0x24')];}logger['info'](_0x537b07[_0x65de('0x23')],this[_0x65de('0xf')][_0x537b07[_0x65de('0x23')]]?_0x65de('0x4d'):_0x65de('0x4e'),JSON[_0x65de('0x41')](this[_0x65de('0xd')][_0x537b07[_0x65de('0x23')]]));if(this['actions'][_0x537b07[_0x65de('0x23')]]){if(this[_0x65de('0xd')][_0x537b07['uniqueid']][_0x65de('0x4f')]>0x0&&this[_0x65de('0xd')][_0x537b07['uniqueid']][_0x65de('0x50')]===_0x65de('0x51')){this['updateStatus'](_0x537b07['uniqueid'],!![]);}else{this[_0x65de('0x48')](_0x537b07[_0x65de('0x23')],![],this[_0x65de('0xd')][_0x537b07[_0x65de('0x23')]]['faxstatusstring']?_0x65de('0x52')+this[_0x65de('0xd')][_0x537b07['uniqueid']][_0x65de('0x53')]:'SENDING\x20FAILED');}}}};Fax[_0x65de('0x1e')][_0x65de('0x54')]=function(_0x21bceb){var _0x20e8d8=this;return new BPromise(function(_0x179696,_0x31cbe9){_0x20e8d8[_0x65de('0x55')](_0x21bceb,_0x20e8d8[_0x65de('0xe')][_0x21bceb[_0x65de('0x56')]])[_0x65de('0x3c')](function(_0x34f959){ut[_0x65de('0x4b')](_0x65de('0x57'),_0x34f959);_0x179696(ut[_0x65de('0x39')](_0x65de('0x58')));})[_0x65de('0x3e')](function(_0x3192c7){ut[_0x65de('0x4b')](_0x65de('0x59'),_0x3192c7);updateStatus(_0x21bceb);_0x31cbe9(ut[_0x65de('0x39')]('Fax\x20failed'));});});};Fax['prototype'][_0x65de('0x5a')]=function(_0x1bb8ac){var _0x45294d=this;return new BPromise(function(_0x1c9992,_0x3c5d49){var _0xc18911=_0x45294d['checkTrunk'](_0x45294d[_0x65de('0xe')][_0x1bb8ac['FaxAccountId']][_0x65de('0x5b')],_0x1bb8ac);if(_0xc18911[_0x65de('0x5c')]){_0x1c9992(ut[_0x65de('0x39')](_0x65de('0x5d')));}else{_0x3c5d49(ut[_0x65de('0x39')](_0xc18911[_0x65de('0x39')]));}});};function originate(_0x29a151,_0x4f2682,_0x52e80e){return new BPromise(function(_0x111707,_0x1dda3b){if(_0x52e80e){var _0x267428=util[_0x65de('0x5e')](_0x65de('0x5f'),path[_0x65de('0x3a')](_0x29a151[_0x65de('0x4')])[_0x65de('0x24')],_0x29a151[_0x65de('0x4')]);gs[_0x65de('0x60')](_0x267428)[_0x65de('0x3c')](function(){_0x29a151[_0x65de('0x4')]=util[_0x65de('0x5e')](_0x65de('0x61'),path[_0x65de('0x3a')](_0x29a151['path'])[_0x65de('0x62')],path[_0x65de('0x3a')](_0x29a151[_0x65de('0x4')])[_0x65de('0x24')]);_0x4f2682[_0x65de('0x63')]=_0x29a151['path'];ut[_0x65de('0x4b')](_0x65de('0x64'),'');ami['Action'](ut[_0x65de('0x65')](_0x29a151,_0x4f2682))[_0x65de('0x3c')](function(_0x583af0){_0x111707(_0x583af0);})['catch'](function(_0x3944a9){_0x1dda3b(_0x3944a9);});})[_0x65de('0x3e')](function(_0x23bd71){_0x1dda3b(_0x23bd71);});}else{ami[_0x65de('0x66')](ut[_0x65de('0x65')](_0x29a151,_0x4f2682))['then'](function(_0x3c4f51){_0x111707(_0x3c4f51);})['catch'](function(_0xaab7d7){_0x1dda3b(_0xaab7d7);});}});}Fax[_0x65de('0x1e')][_0x65de('0x55')]=function(_0x3767f3,_0x450f14){var _0x400119=this;return new BPromise(function(_0xdaa2a3,_0x19aba6){var _0x2e67d2=uuid['v4']();var _0x14d7bd=ut[_0x65de('0x67')](_0x3767f3,_0x450f14);_0x400119[_0x65de('0xf')][_0x2e67d2]=new Action(_0x2e67d2,_0x450f14,_0x3767f3);var _0x3d0954=_0x400119[_0x65de('0xf')][_0x2e67d2];if(path[_0x65de('0x3a')](_0x3767f3[_0x65de('0x4')])['ext']===_0x65de('0x3b')){originate(_0x3d0954,_0x14d7bd,!![])['then'](function(_0x4f06e8){_0xdaa2a3(_0x4f06e8);})['catch'](function(_0x4ed33c){_0x19aba6(_0x4ed33c);});}else{originate(_0x3d0954,_0x14d7bd,![])['then'](function(_0x444072){_0xdaa2a3(_0x444072);})[_0x65de('0x3e')](function(_0x1f5665){_0x19aba6(_0x1f5665);});}});};Fax[_0x65de('0x1e')][_0x65de('0x68')]=function(_0x27de79){return!_[_0x65de('0x69')](_0x27de79)&&!_['isNil'](_0x27de79[_0x65de('0x24')])&&!_[_0x65de('0x69')](_0x27de79[_0x65de('0x6a')])&&_0x27de79['active']&&!_[_0x65de('0x69')](this[_0x65de('0x6b')][util[_0x65de('0x5e')]('SIP/%s',_0x27de79[_0x65de('0x24')])])&&!_['isNil'](this[_0x65de('0x6b')][util[_0x65de('0x5e')](_0x65de('0x6c'),_0x27de79[_0x65de('0x24')])]['status'])&&(this['trunks'][util['format'](_0x65de('0x6c'),_0x27de79[_0x65de('0x24')])][_0x65de('0x2f')]===_0x65de('0x6d')||this[_0x65de('0x6b')][util[_0x65de('0x5e')](_0x65de('0x6c'),_0x27de79[_0x65de('0x24')])][_0x65de('0x2f')]==='unmonitored');};Fax['prototype'][_0x65de('0x6e')]=function(_0x2ffc64,_0x219c07){if(!this[_0x65de('0x68')](_0x2ffc64)){ut['logger'](_0x65de('0x6f'),_[_0x65de('0x69')](_0x2ffc64)?'':_0x2ffc64[_0x65de('0x24')]+_0x65de('0x70'));return{'isValid':![],'message':_0x65de('0x71')};}if(_[_0x65de('0x69')](_0x219c07[_0x65de('0x7')])){ut[_0x65de('0x4b')](_0x65de('0x72'),JSON[_0x65de('0x41')](_0x219c07));return{'isValid':![],'message':_0x65de('0x73')};}if(_[_0x65de('0x69')](_0x219c07[_0x65de('0x4')])){ut[_0x65de('0x4b')](_0x65de('0x74'),JSON[_0x65de('0x41')](_0x219c07));return{'isValid':![],'message':_0x65de('0x75')};}return{'isValid':!![],'message':_0x65de('0x76')};};module[_0x65de('0x77')]=Fax;
\ No newline at end of file
+var _0x9cdf=['parse','name','.pdf','application/pdf','then','notify','catch','stringify','\x20receiveFax\x20','pick','response','reason','AttachmentId','update','SENDING\x20FAILED\x20','[Fax][Message][Error][Updated]','logger','[Fax][Message][Error][NoUpdate1]','[Fax][Message][Error][NoUpdate2]','updateStatus','[Fax][Message][Updated]','[Fax][Message][NoUpdate1]','finally','[Fax][Message][NoUpdate2]','syncHangup','\x20hangup\x20sendFile\x20','\x20hangup\x20faxRiceive\x20','faxpages','SUCCESS','faxstatusstring','SENDING\x20FAILED','FaxAccountId','[Fax][execOriginate][success]','[Fax][execOriginate][failure]','Fax\x20failed','checkAfterSend','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','path','execute','%s/%s.tif','dir','XMF-PATH','Convert\x20pdf\x20to\x20tif','variablesAction','Action','execOriginate','addVariables','isNil','active','format','SIP/%s','checkTrunk','isTrunkReachable','[Fax][checkTrunk][Trunk\x20not\x20work]','\x20Trunk\x20is\x20not\x20active','[Fax][checkTrunk][Empty\x20Fax]','Empty\x20Fax','[Fax][checkTrunk][Empty\x20path]','Empty\x20path','Is\x20Valid','util','bluebird','uuid','moment','tiff2pdf','./util/gs','../../../config/logger','fax','../ami','./rpcDb','./channel','./util/util','../rpc/faxAccount','../rpc/attachment','channels','faxAccounts','trunks','syncNewchannel','varset','syncVarSet','bind','syncNewState','newexten','faxstatus','syncFaxStatus','syncReceiveFax','hangup','originateresponse','syncOriginateResponse','prototype','context','from-voip-provider','hasOwnProperty','exten','localstationid','uniqueid','channel','info','actions','\x20syncNewchannel\x20','variable','value','channelstate','channelstatedesc','operation','status','filename','remotestationid','pagestransferred','resolution','transferrate','calleridnum','/var/opt/motion2/server/files/attachments/','message'];(function(_0x4dd6c4,_0x1d4afb){var _0xa8e0b=function(_0xb86de7){while(--_0xb86de7){_0x4dd6c4['push'](_0x4dd6c4['shift']());}};_0xa8e0b(++_0x1d4afb);}(_0x9cdf,0x19e));var _0xf9cd=function(_0x7e4e16,_0x4072bf){_0x7e4e16=_0x7e4e16-0x0;var _0x1df5cb=_0x9cdf[_0x7e4e16];return _0x1df5cb;};'use strict';var util=require(_0xf9cd('0x0'));var _=require('lodash');var BPromise=require(_0xf9cd('0x1'));var uuid=require(_0xf9cd('0x2'));var moment=require(_0xf9cd('0x3'));var path=require('path');var tiff2pdf=require(_0xf9cd('0x4'));var gs=require(_0xf9cd('0x5'));var logger=require(_0xf9cd('0x6'))(_0xf9cd('0x7'));var ami=require(_0xf9cd('0x8'));var rpcDb=require(_0xf9cd('0x9'));var Channel=require(_0xf9cd('0xa'));var ut=require(_0xf9cd('0xb'));var Action=require('./action');var faxAccount=require(_0xf9cd('0xc'));var attachment=require(_0xf9cd('0xd'));var faxMessage=require('../rpc/faxMessage');function Fax(_0x3487da){this[_0xf9cd('0xe')]={};this['faxAccounts']=_0x3487da[_0xf9cd('0xf')];this[_0xf9cd('0x10')]=_0x3487da[_0xf9cd('0x10')];this['actions']={};ami['on']('newchannel',this[_0xf9cd('0x11')]['bind'](this));ami['on'](_0xf9cd('0x12'),this[_0xf9cd('0x13')][_0xf9cd('0x14')](this));ami['on']('newstate',this[_0xf9cd('0x15')][_0xf9cd('0x14')](this));ami['on'](_0xf9cd('0x16'),this['syncNewExten'][_0xf9cd('0x14')](this));ami['on'](_0xf9cd('0x17'),this[_0xf9cd('0x18')][_0xf9cd('0x14')](this));ami['on']('receivefax',this[_0xf9cd('0x19')][_0xf9cd('0x14')](this));ami['on'](_0xf9cd('0x1a'),this['syncHangup'][_0xf9cd('0x14')](this));ami['on'](_0xf9cd('0x1b'),this[_0xf9cd('0x1c')]['bind'](this));}Fax[_0xf9cd('0x1d')][_0xf9cd('0x11')]=function(_0x52e0cc){if(_0x52e0cc[_0xf9cd('0x1e')]===_0xf9cd('0x1f')){for(var _0x28510a in this[_0xf9cd('0xf')]){if(this[_0xf9cd('0xf')][_0xf9cd('0x20')](_0x28510a)){if(_0x52e0cc[_0xf9cd('0x21')]===this[_0xf9cd('0xf')][_0x28510a][_0xf9cd('0x22')]){this['channels'][_0x52e0cc[_0xf9cd('0x23')]]={};this[_0xf9cd('0xe')][_0x52e0cc[_0xf9cd('0x23')]][_0xf9cd('0x24')]=_0x52e0cc['channel'];this[_0xf9cd('0xe')][_0x52e0cc[_0xf9cd('0x23')]]['id']=this['faxAccounts'][_0x28510a]['id'];this[_0xf9cd('0xe')][_0x52e0cc[_0xf9cd('0x23')]]['name']=this[_0xf9cd('0xf')][_0x28510a]['name'];logger[_0xf9cd('0x25')](_0x52e0cc[_0xf9cd('0x23')],'\x20syncNewchannel\x20');}}}}if(this[_0xf9cd('0x26')][_0x52e0cc['uniqueid']]){this[_0xf9cd('0xe')][_0x52e0cc[_0xf9cd('0x23')]]={};this[_0xf9cd('0xe')][_0x52e0cc[_0xf9cd('0x23')]][_0xf9cd('0x24')]=_0x52e0cc[_0xf9cd('0x24')];logger[_0xf9cd('0x25')](_0x52e0cc[_0xf9cd('0x23')],_0xf9cd('0x27'));}};Fax[_0xf9cd('0x1d')]['syncVarSet']=function(_0x33c59b){if(this[_0xf9cd('0xe')][_0x33c59b[_0xf9cd('0x23')]]){for(var _0x58e148 in _0x33c59b[_0xf9cd('0x28')]){if(_0x33c59b[_0xf9cd('0x28')][_0xf9cd('0x20')](_0x58e148)){this[_0xf9cd('0xe')][_0x33c59b[_0xf9cd('0x23')]][_0x58e148]=_0x33c59b[_0xf9cd('0x29')];}}}};Fax['prototype']['syncNewState']=function(_0x277dfb){if(this['channels'][_0x277dfb[_0xf9cd('0x23')]]){this[_0xf9cd('0xe')][_0x277dfb['uniqueid']][_0xf9cd('0x2a')]=_0x277dfb[_0xf9cd('0x2a')];this[_0xf9cd('0xe')][_0x277dfb[_0xf9cd('0x23')]][_0xf9cd('0x2b')]=_0x277dfb[_0xf9cd('0x2b')];}};Fax[_0xf9cd('0x1d')]['syncNewExten']=function(_0x12f7b9){if(this[_0xf9cd('0xe')][_0x12f7b9['uniqueid']]){for(var _0x31c369 in _0x12f7b9[_0xf9cd('0x28')]){if(_0x12f7b9['variable']['hasOwnProperty'](_0x31c369)){this[_0xf9cd('0xe')][_0x12f7b9['uniqueid']][_0x31c369]=_0x12f7b9[_0xf9cd('0x29')];}}}};Fax[_0xf9cd('0x1d')][_0xf9cd('0x18')]=function(_0x26f769){if(this[_0xf9cd('0xe')][_0x26f769['uniqueid']]){this[_0xf9cd('0xe')][_0x26f769[_0xf9cd('0x23')]][_0xf9cd('0x2c')]=_0x26f769[_0xf9cd('0x2c')];this[_0xf9cd('0xe')][_0x26f769[_0xf9cd('0x23')]][_0xf9cd('0x2d')]=_0x26f769[_0xf9cd('0x2d')];this[_0xf9cd('0xe')][_0x26f769[_0xf9cd('0x23')]][_0xf9cd('0x22')]=_0x26f769[_0xf9cd('0x22')];this['channels'][_0x26f769['uniqueid']][_0xf9cd('0x2e')]=_0x26f769[_0xf9cd('0x2e')];logger[_0xf9cd('0x25')](_0x26f769[_0xf9cd('0x23')],'\x20syncFaxStatus\x20');}};Fax[_0xf9cd('0x1d')][_0xf9cd('0x19')]=function(_0x2cd56d){var _0x2c45bc=this;if(this[_0xf9cd('0xe')][_0x2cd56d[_0xf9cd('0x23')]]){var _0x4092f5=this[_0xf9cd('0xe')][_0x2cd56d[_0xf9cd('0x23')]]['id'];this[_0xf9cd('0xe')][_0x2cd56d[_0xf9cd('0x23')]]['remotestationid']=_0x2cd56d[_0xf9cd('0x2f')];this[_0xf9cd('0xe')][_0x2cd56d[_0xf9cd('0x23')]][_0xf9cd('0x30')]=_0x2cd56d[_0xf9cd('0x30')];this[_0xf9cd('0xe')][_0x2cd56d[_0xf9cd('0x23')]][_0xf9cd('0x22')]=_0x2cd56d[_0xf9cd('0x22')];this[_0xf9cd('0xe')][_0x2cd56d[_0xf9cd('0x23')]][_0xf9cd('0x31')]=_0x2cd56d['resolution'];this[_0xf9cd('0xe')][_0x2cd56d['uniqueid']][_0xf9cd('0x32')]=_0x2cd56d[_0xf9cd('0x32')];this[_0xf9cd('0xe')][_0x2cd56d[_0xf9cd('0x23')]]['filename']=_0x2cd56d[_0xf9cd('0x2e')];this[_0xf9cd('0xe')][_0x2cd56d[_0xf9cd('0x23')]][_0xf9cd('0x33')]=_0x2cd56d[_0xf9cd('0x33')];if(this['channels'][_0x2cd56d[_0xf9cd('0x23')]]['pagestransferred']>0x0){tiff2pdf(_0x2cd56d['filename'],_0xf9cd('0x34'),function(_0x126214){logger[_0xf9cd('0x25')](_0x2cd56d['uniqueid'],'\x20result\x20conversion\x20file\x20',_0x126214[_0xf9cd('0x35')]);attachment['create']({'name':path[_0xf9cd('0x36')](_0x2cd56d[_0xf9cd('0x2e')])['name'],'basename':path['parse'](_0x2cd56d[_0xf9cd('0x2e')])[_0xf9cd('0x37')]+_0xf9cd('0x38'),'type':_0xf9cd('0x39')})[_0xf9cd('0x3a')](function(_0x2e9e98){faxAccount[_0xf9cd('0x3b')](_0x4092f5,{'from':_0x2cd56d[_0xf9cd('0x33')],'mapKey':_0xf9cd('0x7'),'body':path[_0xf9cd('0x36')](_0x2cd56d[_0xf9cd('0x2e')])[_0xf9cd('0x37')]+'.pdf','AttachmentId':_0x2e9e98['id']})[_0xf9cd('0x3c')](function(_0x1a7032){logger['error'](_0x2cd56d[_0xf9cd('0x23')],'\x20notify\x20',JSON[_0xf9cd('0x3d')](_0x1a7032));});})[_0xf9cd('0x3c')](function(_0x17b236){logger['error'](_0x2cd56d[_0xf9cd('0x23')],_0xf9cd('0x3e'),JSON[_0xf9cd('0x3d')](_0x17b236));});});}logger[_0xf9cd('0x25')](_0x2cd56d['uniqueid'],_0xf9cd('0x3e'));}};Fax[_0xf9cd('0x1d')][_0xf9cd('0x1c')]=function(_0x769ccc){if(this[_0xf9cd('0x26')][_0x769ccc[_0xf9cd('0x23')]]){_['merge'](this[_0xf9cd('0xe')][_0x769ccc[_0xf9cd('0x23')]],_[_0xf9cd('0x3f')](_0x769ccc,[_0xf9cd('0x40'),_0xf9cd('0x41')]));}};function updateStatus(_0x12b52a){if(_0x12b52a[_0xf9cd('0x42')]){faxMessage[_0xf9cd('0x43')](_0x12b52a[_0xf9cd('0x42')],{'failMessage':_0xf9cd('0x44')})[_0xf9cd('0x3a')](function(_0x5c364c){ut['logger'](_0xf9cd('0x45'),_0x5c364c);})[_0xf9cd('0x3c')](function(_0x1ef11a){ut[_0xf9cd('0x46')](_0xf9cd('0x47'),_0x1ef11a);});}else{ut[_0xf9cd('0x46')](_0xf9cd('0x48'));}}Fax[_0xf9cd('0x1d')][_0xf9cd('0x49')]=function(_0x5ddc53,_0xa2a7d2,_0x54a915){var _0x4fe28b=this;var _0x171a5b={};if(_0xa2a7d2){_0x171a5b={'read':_0xa2a7d2};}else{_0x171a5b={'failMessage':_0x54a915};}if(this[_0xf9cd('0x26')][_0x5ddc53][_0xf9cd('0x42')]){faxMessage[_0xf9cd('0x43')](this[_0xf9cd('0x26')][_0x5ddc53]['AttachmentId'],_0x171a5b)[_0xf9cd('0x3a')](function(_0x51564a){ut[_0xf9cd('0x46')](_0xf9cd('0x4a'),_0x51564a);})[_0xf9cd('0x3c')](function(_0x399143){ut['logger'](_0xf9cd('0x4b'),_0x399143);})[_0xf9cd('0x4c')](function(){delete _0x4fe28b[_0xf9cd('0xe')][_0x5ddc53];delete _0x4fe28b['actions'][_0x5ddc53];});}else{ut[_0xf9cd('0x46')](_0xf9cd('0x4d'));delete this[_0xf9cd('0xe')][_0x5ddc53];delete this[_0xf9cd('0x26')][_0x5ddc53];}};Fax['prototype'][_0xf9cd('0x4e')]=function(_0x240edb){var _0x1d64df=this;if(this['channels'][_0x240edb[_0xf9cd('0x23')]]){if(this[_0xf9cd('0x26')][_0x240edb[_0xf9cd('0x23')]]){this[_0xf9cd('0xe')][_0x240edb[_0xf9cd('0x23')]]['id']=this[_0xf9cd('0x26')][_0x240edb[_0xf9cd('0x23')]]['id'];this[_0xf9cd('0xe')][_0x240edb[_0xf9cd('0x23')]]['name']=this[_0xf9cd('0x26')][_0x240edb[_0xf9cd('0x23')]][_0xf9cd('0x37')];}logger[_0xf9cd('0x25')](_0x240edb[_0xf9cd('0x23')],this[_0xf9cd('0x26')][_0x240edb[_0xf9cd('0x23')]]?_0xf9cd('0x4f'):_0xf9cd('0x50'),JSON[_0xf9cd('0x3d')](this[_0xf9cd('0xe')][_0x240edb[_0xf9cd('0x23')]]));if(this['actions'][_0x240edb['uniqueid']]){if(this[_0xf9cd('0xe')][_0x240edb['uniqueid']][_0xf9cd('0x51')]>0x0&&this['channels'][_0x240edb[_0xf9cd('0x23')]]['faxstatus']===_0xf9cd('0x52')){this[_0xf9cd('0x49')](_0x240edb[_0xf9cd('0x23')],!![]);}else{this[_0xf9cd('0x49')](_0x240edb['uniqueid'],![],this[_0xf9cd('0xe')][_0x240edb['uniqueid']][_0xf9cd('0x53')]?'SENDING\x20FAILED:\x20'+this['channels'][_0x240edb['uniqueid']][_0xf9cd('0x53')]:_0xf9cd('0x54'));}}}};Fax[_0xf9cd('0x1d')]['send']=function(_0x5ecd0c){var _0x485d2f=this;return new BPromise(function(_0xa84491,_0x50d3a4){_0x485d2f['execOriginate'](_0x5ecd0c,_0x485d2f[_0xf9cd('0xf')][_0x5ecd0c[_0xf9cd('0x55')]])[_0xf9cd('0x3a')](function(_0x42fbf6){ut[_0xf9cd('0x46')](_0xf9cd('0x56'),_0x42fbf6);_0xa84491(ut[_0xf9cd('0x35')]('Fax\x20received'));})[_0xf9cd('0x3c')](function(_0x1f395f){ut[_0xf9cd('0x46')](_0xf9cd('0x57'),_0x1f395f);updateStatus(_0x5ecd0c);_0x50d3a4(ut[_0xf9cd('0x35')](_0xf9cd('0x58')));});});};Fax[_0xf9cd('0x1d')][_0xf9cd('0x59')]=function(_0x57df94){var _0x275cfe=this;return new BPromise(function(_0x5bf27a,_0x5a812b){var _0x5ecdb9=_0x275cfe['checkTrunk'](_0x275cfe['faxAccounts'][_0x57df94[_0xf9cd('0x55')]][_0xf9cd('0x5a')],_0x57df94);if(_0x5ecdb9[_0xf9cd('0x5b')]){_0x5bf27a(ut[_0xf9cd('0x35')](_0xf9cd('0x5c')));}else{_0x5a812b(ut[_0xf9cd('0x35')](_0x5ecdb9[_0xf9cd('0x35')]));}});};function originate(_0x312f61,_0x886e46,_0x5dcd32){return new BPromise(function(_0x2e2416,_0x4ded78){if(_0x5dcd32){var _0x3fa65e=util['format'](_0xf9cd('0x5d'),path[_0xf9cd('0x36')](_0x312f61['path'])[_0xf9cd('0x37')],_0x312f61[_0xf9cd('0x5e')]);gs[_0xf9cd('0x5f')](_0x3fa65e)['then'](function(){_0x312f61[_0xf9cd('0x5e')]=util['format'](_0xf9cd('0x60'),path[_0xf9cd('0x36')](_0x312f61['path'])[_0xf9cd('0x61')],path[_0xf9cd('0x36')](_0x312f61[_0xf9cd('0x5e')])[_0xf9cd('0x37')]);_0x886e46[_0xf9cd('0x62')]=_0x312f61['path'];ut['logger'](_0xf9cd('0x63'),'');ami['Action'](ut[_0xf9cd('0x64')](_0x312f61,_0x886e46))[_0xf9cd('0x3a')](function(_0xc7dde2){_0x2e2416(_0xc7dde2);})['catch'](function(_0x287674){_0x4ded78(_0x287674);});})[_0xf9cd('0x3c')](function(_0x29543a){_0x4ded78(_0x29543a);});}else{ami[_0xf9cd('0x65')](ut[_0xf9cd('0x64')](_0x312f61,_0x886e46))['then'](function(_0x44253d){_0x2e2416(_0x44253d);})[_0xf9cd('0x3c')](function(_0x1677c7){_0x4ded78(_0x1677c7);});}});}Fax[_0xf9cd('0x1d')][_0xf9cd('0x66')]=function(_0x5e6f06,_0x315b3c){var _0x4a3f90=this;return new BPromise(function(_0x29d2cc,_0x31b023){var _0x2d4274=uuid['v4']();var _0x2b40f0=ut[_0xf9cd('0x67')](_0x5e6f06,_0x315b3c);_0x4a3f90[_0xf9cd('0x26')][_0x2d4274]=new Action(_0x2d4274,_0x315b3c,_0x5e6f06);var _0x2fe8dd=_0x4a3f90[_0xf9cd('0x26')][_0x2d4274];if(path[_0xf9cd('0x36')](_0x5e6f06[_0xf9cd('0x5e')])['ext']===_0xf9cd('0x38')){originate(_0x2fe8dd,_0x2b40f0,!![])[_0xf9cd('0x3a')](function(_0x5dabdc){_0x29d2cc(_0x5dabdc);})[_0xf9cd('0x3c')](function(_0x29e423){_0x31b023(_0x29e423);});}else{originate(_0x2fe8dd,_0x2b40f0,![])[_0xf9cd('0x3a')](function(_0x5336c6){_0x29d2cc(_0x5336c6);})[_0xf9cd('0x3c')](function(_0x311efe){_0x31b023(_0x311efe);});}});};Fax[_0xf9cd('0x1d')]['isTrunkReachable']=function(_0x5270b3){return!_[_0xf9cd('0x68')](_0x5270b3)&&!_[_0xf9cd('0x68')](_0x5270b3[_0xf9cd('0x37')])&&!_[_0xf9cd('0x68')](_0x5270b3[_0xf9cd('0x69')])&&_0x5270b3[_0xf9cd('0x69')]&&!_[_0xf9cd('0x68')](this['trunks'][util[_0xf9cd('0x6a')](_0xf9cd('0x6b'),_0x5270b3[_0xf9cd('0x37')])])&&!_['isNil'](this[_0xf9cd('0x10')][util[_0xf9cd('0x6a')]('SIP/%s',_0x5270b3[_0xf9cd('0x37')])]['status'])&&(this[_0xf9cd('0x10')][util[_0xf9cd('0x6a')]('SIP/%s',_0x5270b3['name'])][_0xf9cd('0x2d')]==='reachable'||this[_0xf9cd('0x10')][util['format']('SIP/%s',_0x5270b3[_0xf9cd('0x37')])][_0xf9cd('0x2d')]==='unmonitored');};Fax['prototype'][_0xf9cd('0x6c')]=function(_0x3d8dbe,_0x19cc04){if(!this[_0xf9cd('0x6d')](_0x3d8dbe)){ut[_0xf9cd('0x46')](_0xf9cd('0x6e'),_['isNil'](_0x3d8dbe)?'':_0x3d8dbe[_0xf9cd('0x37')]+_0xf9cd('0x6f'));return{'isValid':![],'message':'Trunk\x20not\x20working'};}if(_[_0xf9cd('0x68')](_0x19cc04[_0xf9cd('0x7')])){ut[_0xf9cd('0x46')](_0xf9cd('0x70'),JSON[_0xf9cd('0x3d')](_0x19cc04));return{'isValid':![],'message':_0xf9cd('0x71')};}if(_[_0xf9cd('0x68')](_0x19cc04['path'])){ut['logger'](_0xf9cd('0x72'),JSON[_0xf9cd('0x3d')](_0x19cc04));return{'isValid':![],'message':_0xf9cd('0x73')};}return{'isValid':!![],'message':_0xf9cd('0x74')};};module['exports']=Fax;
\ No newline at end of file
index de6a0de..adeccff 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x79c1=['bluebird','preview','../rpc/faxAccount','inspect','notify','resolve','then','[Notify]\x20'];(function(_0xb2f0d4,_0x2a8baf){var _0x2581eb=function(_0x1703fb){while(--_0x1703fb){_0xb2f0d4['push'](_0xb2f0d4['shift']());}};_0x2581eb(++_0x2a8baf);}(_0x79c1,0x140));var _0x179c=function(_0x328ee7,_0x4f6aa1){_0x328ee7=_0x328ee7-0x0;var _0x20e06a=_0x79c1[_0x328ee7];return _0x20e06a;};'use strict';var util=require('util');var BPromise=require(_0x179c('0x0'));var logger=require('../../../config/logger')(_0x179c('0x1'));var _=require('lodash');var faxAccount=require(_0x179c('0x2'));function loggerCatch(_0x42fe22){return function(_0x54dcbe){logger['error'](_0x42fe22,util[_0x179c('0x3')](_0x54dcbe,{'showHidden':![],'depth':null}));};}exports[_0x179c('0x4')]=function(_0x4ac2f7,_0x464894){return BPromise[_0x179c('0x5')]()[_0x179c('0x6')](faxAccount[_0x179c('0x4')](_0x4ac2f7,_0x464894))['catch'](loggerCatch(_0x179c('0x7')));};
\ No newline at end of file
+var _0x4b2b=['error','inspect','notify','then','bluebird','lodash','../rpc/faxAccount'];(function(_0x5c1d9,_0x1a295a){var _0x392ee6=function(_0x32828e){while(--_0x32828e){_0x5c1d9['push'](_0x5c1d9['shift']());}};_0x392ee6(++_0x1a295a);}(_0x4b2b,0x66));var _0xb4b2=function(_0x1aa001,_0x1d703c){_0x1aa001=_0x1aa001-0x0;var _0x300e12=_0x4b2b[_0x1aa001];return _0x300e12;};'use strict';var util=require('util');var BPromise=require(_0xb4b2('0x0'));var logger=require('../../../config/logger')('preview');var _=require(_0xb4b2('0x1'));var faxAccount=require(_0xb4b2('0x2'));function loggerCatch(_0x3e7007){return function(_0x1f62d3){logger[_0xb4b2('0x3')](_0x3e7007,util[_0xb4b2('0x4')](_0x1f62d3,{'showHidden':![],'depth':null}));};}exports[_0xb4b2('0x5')]=function(_0x3527a8,_0x3dc82d){return BPromise['resolve']()[_0xb4b2('0x6')](faxAccount['notify'](_0x3527a8,_0x3dc82d))['catch'](loggerCatch('[Notify]\x20'));};
\ No newline at end of file
index 32ca799..93f1dd4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x99fb=['inspect','util','../../../../config/logger','fax','bluebird','child_process','exec','execute','info','\x20Error\x20:'];(function(_0x4e0216,_0x532882){var _0x4a6200=function(_0x35062f){while(--_0x35062f){_0x4e0216['push'](_0x4e0216['shift']());}};_0x4a6200(++_0x532882);}(_0x99fb,0x141));var _0xb99f=function(_0x4a99ce,_0x549a68){_0x4a99ce=_0x4a99ce-0x0;var _0x435f41=_0x99fb[_0x4a99ce];return _0x435f41;};'use strict';var util=require(_0xb99f('0x0'));var logger=require(_0xb99f('0x1'))(_0xb99f('0x2'));var BPromise=require(_0xb99f('0x3'));var exec=require(_0xb99f('0x4'))[_0xb99f('0x5')];exports[_0xb99f('0x6')]=function(_0x4aa6ec){return new BPromise(function(_0x5bf563,_0x528907){exec(_0x4aa6ec,function(_0xc47904,_0xc0d5fa,_0x249977){logger[_0xb99f('0x7')]('Exec\x20gs',_0xc0d5fa);if(_0xc47904){logger[_0xb99f('0x7')]('Exec\x20gs',_0xb99f('0x8'),util[_0xb99f('0x9')](_0xc47904,{'showHidden':![],'depth':null}),_0xc0d5fa,_0x249977);_0x528907(_0xc47904);}_0x5bf563(_0xc0d5fa);});});};
\ No newline at end of file
+var _0x6e75=['execute','Exec\x20gs','\x20Error\x20:','inspect','util','../../../../config/logger','fax','child_process','exec'];(function(_0x1d171d,_0x500054){var _0x27b651=function(_0x24e272){while(--_0x24e272){_0x1d171d['push'](_0x1d171d['shift']());}};_0x27b651(++_0x500054);}(_0x6e75,0x100));var _0x56e7=function(_0x14add3,_0x13ce8d){_0x14add3=_0x14add3-0x0;var _0x4a174f=_0x6e75[_0x14add3];return _0x4a174f;};'use strict';var util=require(_0x56e7('0x0'));var logger=require(_0x56e7('0x1'))(_0x56e7('0x2'));var BPromise=require('bluebird');var exec=require(_0x56e7('0x3'))[_0x56e7('0x4')];exports[_0x56e7('0x5')]=function(_0x4764fa){return new BPromise(function(_0x1da270,_0xf00c93){exec(_0x4764fa,function(_0x2d49f9,_0x40088c,_0xe9cae6){logger['info'](_0x56e7('0x6'),_0x40088c);if(_0x2d49f9){logger['info'](_0x56e7('0x6'),_0x56e7('0x7'),util[_0x56e7('0x8')](_0x2d49f9,{'showHidden':![],'depth':null}),_0x40088c,_0xe9cae6);_0xf00c93(_0x2d49f9);}_0x1da270(_0x40088c);});});};
\ No newline at end of file
index 92f7030..6cb6f6f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7d41=['maxrate','format','\x22%s\x22','modem','faxdetect','t38timeout','path','variablesAction','uniqueid','originate','channel','xcally-motion-fax','from-sip','localstationid','util','lodash','moment','../../../../config/logger','fax','message','logger','inspect','addVariables','ecm','headerinfo'];(function(_0x32f7d7,_0x54231b){var _0x133d09=function(_0x41a7ab){while(--_0x41a7ab){_0x32f7d7['push'](_0x32f7d7['shift']());}};_0x133d09(++_0x54231b);}(_0x7d41,0x153));var _0x17d4=function(_0x4cbd1e,_0x3bfde1){_0x4cbd1e=_0x4cbd1e-0x0;var _0x1616ab=_0x7d41[_0x4cbd1e];return _0x1616ab;};'use strict';var util=require(_0x17d4('0x0'));var _=require(_0x17d4('0x1'));var moment=require(_0x17d4('0x2'));var logger=require(_0x17d4('0x3'))(_0x17d4('0x4'));exports[_0x17d4('0x5')]=function(_0x2f9f6a){return{'message':_0x2f9f6a};};exports[_0x17d4('0x6')]=function(_0x10a04a,_0x2ea5c2){logger['info'](_0x10a04a,util[_0x17d4('0x7')](_0x2ea5c2,{'showHidden':![],'depth':null}));};exports[_0x17d4('0x8')]=function(_0x447081,_0x53b783){var _0x9409e2={'XMF-ECM':_0x53b783[_0x17d4('0x9')],'XMF-HEADERINFO':_0x53b783[_0x17d4('0xa')],'XMF-MINRATE':_0x53b783['minrate'],'XMF-MAXRATE':_0x53b783[_0x17d4('0xb')],'XMF-MODEM':util[_0x17d4('0xc')](_0x17d4('0xd'),_0x53b783[_0x17d4('0xe')]),'XMF-GATEWAY':_0x53b783['gateway'],'XMF-FAXDETECT':_0x53b783[_0x17d4('0xf')],'XMF-T38TIMEOUT':_0x53b783[_0x17d4('0x10')],'XMF-LOCALSTATIONID':_0x53b783['localstationid'],'XMF-PATH':_0x447081[_0x17d4('0x11')]};return _0x9409e2;};exports[_0x17d4('0x12')]=function(_0x4e00c5,_0x4c89db){return{'actionid':_0x4e00c5[_0x17d4('0x13')],'action':_0x17d4('0x14'),'channel':_0x4e00c5[_0x17d4('0x15')],'Exten':_0x17d4('0x16'),'Context':_0x17d4('0x17'),'Priority':'1','callerid':util[_0x17d4('0xc')]('\x22%s\x22\x20<%s>',_0x4e00c5[_0x17d4('0xa')]?_0x4e00c5[_0x17d4('0xa')]:'',_0x4e00c5[_0x17d4('0x18')]),'variable':_0x4c89db,'timeout':0x1e*0x3e8,'async':!![],'channelid':_0x4e00c5[_0x17d4('0x13')]};};
\ No newline at end of file
+var _0x83f1=['util','lodash','moment','../../../../config/logger','fax','logger','info','inspect','headerinfo','maxrate','format','\x22%s\x22','modem','gateway','faxdetect','t38timeout','path','variablesAction','uniqueid','originate','channel','from-sip','localstationid'];(function(_0x3f87f3,_0x2d69cf){var _0x3fabac=function(_0x3dc890){while(--_0x3dc890){_0x3f87f3['push'](_0x3f87f3['shift']());}};_0x3fabac(++_0x2d69cf);}(_0x83f1,0x1cc));var _0x183f=function(_0x4e065d,_0x4990db){_0x4e065d=_0x4e065d-0x0;var _0x1a1e78=_0x83f1[_0x4e065d];return _0x1a1e78;};'use strict';var util=require(_0x183f('0x0'));var _=require(_0x183f('0x1'));var moment=require(_0x183f('0x2'));var logger=require(_0x183f('0x3'))(_0x183f('0x4'));exports['message']=function(_0x52688c){return{'message':_0x52688c};};exports[_0x183f('0x5')]=function(_0x2668ca,_0x7f265){logger[_0x183f('0x6')](_0x2668ca,util[_0x183f('0x7')](_0x7f265,{'showHidden':![],'depth':null}));};exports['addVariables']=function(_0x5c1cbd,_0xf702f5){var _0x364cc4={'XMF-ECM':_0xf702f5['ecm'],'XMF-HEADERINFO':_0xf702f5[_0x183f('0x8')],'XMF-MINRATE':_0xf702f5['minrate'],'XMF-MAXRATE':_0xf702f5[_0x183f('0x9')],'XMF-MODEM':util[_0x183f('0xa')](_0x183f('0xb'),_0xf702f5[_0x183f('0xc')]),'XMF-GATEWAY':_0xf702f5[_0x183f('0xd')],'XMF-FAXDETECT':_0xf702f5[_0x183f('0xe')],'XMF-T38TIMEOUT':_0xf702f5[_0x183f('0xf')],'XMF-LOCALSTATIONID':_0xf702f5['localstationid'],'XMF-PATH':_0x5c1cbd[_0x183f('0x10')]};return _0x364cc4;};exports[_0x183f('0x11')]=function(_0x3a99ee,_0x178ae7){return{'actionid':_0x3a99ee[_0x183f('0x12')],'action':_0x183f('0x13'),'channel':_0x3a99ee[_0x183f('0x14')],'Exten':'xcally-motion-fax','Context':_0x183f('0x15'),'Priority':'1','callerid':util['format']('\x22%s\x22\x20<%s>',_0x3a99ee[_0x183f('0x8')]?_0x3a99ee[_0x183f('0x8')]:'',_0x3a99ee[_0x183f('0x16')]),'variable':_0x178ae7,'timeout':0x1e*0x3e8,'async':!![],'channelid':_0x3a99ee[_0x183f('0x12')]};};
\ No newline at end of file
index c05846b..246ad77 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe3f1=['getTemplates','getZendeskAccounts','initZendeskAccounts','getSalesforceAccounts','getSugarcrmAccounts','getFreshdeskAccounts','initFreshdeskAccounts','getDeskAccounts','initDeskAccounts','getZohoAccounts','initZohoAccounts','initVtigerAccounts','getFreshsalesAccounts','initFreshsalesAccounts','initServicenowAccounts','getDynamics365Accounts','initCampaigns','getVoiceExtensions','getVoiceQueueReports','initVoiceQueueReports','initVoiceQueueHopperHistory','initCampaignHopperHistory','initVoiceCallReports','catch','log','sync','bluebird','util','./server','./realtime','./report','./trigger','./dialer','./preview','./fax','./rpc/voiceQueue','./rpc/voiceCallReport','./rpc/trunk','./rpc/trigger','./rpc/template','./rpc/cmHopperHistory','./rpc/voiceExtension','./rpc/faxAccount','./rpc/integrations/zendesk','./rpc/integrations/salesforce','./rpc/integrations/vtiger','./rpc/integrations/freshsales','./rpc/integrations/servicenow','get','hour','resolve','getAgents','then','getTelephones','getTrunks','getTriggers','initTriggers'];(function(_0x786e9,_0x1a029){var _0x1f891b=function(_0x31ad7c){while(--_0x31ad7c){_0x786e9['push'](_0x786e9['shift']());}};_0x1f891b(++_0x1a029);}(_0xe3f1,0x8c));var _0x1e3f=function(_0x201085,_0x1cb807){_0x201085=_0x201085-0x0;var _0x127f5f=_0xe3f1[_0x201085];return _0x127f5f;};'use strict';var BPromise=require(_0x1e3f('0x0'));var util=require(_0x1e3f('0x1'));var moment=require('moment');var server=require(_0x1e3f('0x2'));var Realtime=require(_0x1e3f('0x3'));var Report=require(_0x1e3f('0x4'));var Acw=require('./acw');var Trigger=require(_0x1e3f('0x5'));var Dialer=require(_0x1e3f('0x6'));var Preview=require(_0x1e3f('0x7'));var Fax=require(_0x1e3f('0x8'));var user=require('./rpc/user');var voiceQueue=require(_0x1e3f('0x9'));var voiceQueueReport=require('./rpc/voiceQueueReport');var voiceCallReport=require(_0x1e3f('0xa'));var trunk=require(_0x1e3f('0xb'));var trigger=require(_0x1e3f('0xc'));var template=require(_0x1e3f('0xd'));var cmHopperHistory=require(_0x1e3f('0xe'));var campaign=require('./rpc/campaign');var voiceExtension=require(_0x1e3f('0xf'));var faxAccount=require(_0x1e3f('0x10'));var zendesk=require(_0x1e3f('0x11'));var salesforce=require(_0x1e3f('0x12'));var sugarcrm=require('./rpc/integrations/sugarcrm');var freshdesk=require('./rpc/integrations/freshdesk');var desk=require('./rpc/integrations/desk');var zoho=require('./rpc/integrations/zoho');var vtiger=require(_0x1e3f('0x13'));var freshsales=require(_0x1e3f('0x14'));var servicenow=require(_0x1e3f('0x15'));var dynamics365=require('./rpc/integrations/dynamics365');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 isTrue=!![];var initP=!![];function ifMidnight(){if(moment()[_0x1e3f('0x16')](_0x1e3f('0x17'))===0x0&&initP){initP=![];isTrue=!![];initParams();}if(moment()['get']('hour')===0x1&&isTrue){isTrue=![];initP=!![];}}function initRealtime(){ifMidnight();return BPromise[_0x1e3f('0x18')]()['then'](user[_0x1e3f('0x19')]())['then'](realtime['initAgents']())[_0x1e3f('0x1a')](user[_0x1e3f('0x1b')]())[_0x1e3f('0x1a')](realtime['initTelephones']())[_0x1e3f('0x1a')](trunk[_0x1e3f('0x1c')]())[_0x1e3f('0x1a')](realtime['initTrunks']())[_0x1e3f('0x1a')](voiceQueue['getVoiceQueues']())[_0x1e3f('0x1a')](realtime['initVoiceQueues']())[_0x1e3f('0x1a')](trigger[_0x1e3f('0x1d')]())['then'](realtime[_0x1e3f('0x1e')]())[_0x1e3f('0x1a')](template[_0x1e3f('0x1f')]())['then'](realtime['initTemplates']())[_0x1e3f('0x1a')](zendesk[_0x1e3f('0x20')]())['then'](realtime[_0x1e3f('0x21')]())[_0x1e3f('0x1a')](salesforce[_0x1e3f('0x22')]())[_0x1e3f('0x1a')](realtime['initSalesforceAccounts']())[_0x1e3f('0x1a')](sugarcrm[_0x1e3f('0x23')]())[_0x1e3f('0x1a')](realtime['initSugarcrmAccounts']())['then'](freshdesk[_0x1e3f('0x24')]())['then'](realtime[_0x1e3f('0x25')]())[_0x1e3f('0x1a')](desk[_0x1e3f('0x26')]())[_0x1e3f('0x1a')](realtime[_0x1e3f('0x27')]())[_0x1e3f('0x1a')](zoho[_0x1e3f('0x28')]())['then'](realtime[_0x1e3f('0x29')]())[_0x1e3f('0x1a')](vtiger['getVtigerAccounts']())[_0x1e3f('0x1a')](realtime[_0x1e3f('0x2a')]())[_0x1e3f('0x1a')](freshsales[_0x1e3f('0x2b')]())[_0x1e3f('0x1a')](realtime[_0x1e3f('0x2c')]())[_0x1e3f('0x1a')](servicenow['getServicenowAccounts']())[_0x1e3f('0x1a')](realtime[_0x1e3f('0x2d')]())[_0x1e3f('0x1a')](dynamics365[_0x1e3f('0x2e')]())[_0x1e3f('0x1a')](realtime['initDynamics365Accounts']())[_0x1e3f('0x1a')](campaign['getCampaigns']())[_0x1e3f('0x1a')](realtime[_0x1e3f('0x2f')]())[_0x1e3f('0x1a')](voiceExtension[_0x1e3f('0x30')]())['then'](realtime['initVoiceExtensions']())[_0x1e3f('0x1a')](faxAccount['getFaxAccounts']())[_0x1e3f('0x1a')](realtime['initFaxAccounts']())[_0x1e3f('0x1a')](function(){return realtime;});}function initParams(){return BPromise['resolve']()[_0x1e3f('0x1a')](voiceQueueReport[_0x1e3f('0x31')]())[_0x1e3f('0x1a')](realtime[_0x1e3f('0x32')]())[_0x1e3f('0x1a')](cmHopperHistory['getVoiceQueueHopperHistory']())['then'](realtime[_0x1e3f('0x33')]())[_0x1e3f('0x1a')](cmHopperHistory['getCampaignHopperHistory']())[_0x1e3f('0x1a')](realtime[_0x1e3f('0x34')]())['then'](voiceCallReport['getVoiceCallReports']())['then'](realtime[_0x1e3f('0x35')]())[_0x1e3f('0x1a')](function(_0xfd0b4f){})[_0x1e3f('0x36')](function(_0x161e41){console[_0x1e3f('0x37')](_0x161e41);});}function main(){return server['listen'](realtime,preview,fax)[_0x1e3f('0x1a')](function(_0xac98e1){return initRealtime();})['then'](function(){return initParams();})['then'](function(){report[_0x1e3f('0x38')]();setInterval(initRealtime,0x1388);})[_0x1e3f('0x36')](function(_0x9beb07){console[_0x1e3f('0x37')](_0x9beb07);});}main();
\ No newline at end of file
+var _0x78a9=['get','hour','resolve','getAgents','then','initAgents','getTelephones','initTelephones','initTrunks','getVoiceQueues','initVoiceQueues','getTriggers','initTriggers','getTemplates','initTemplates','getZendeskAccounts','initSalesforceAccounts','initSugarcrmAccounts','getFreshdeskAccounts','initFreshdeskAccounts','initZohoAccounts','getVtigerAccounts','getFreshsalesAccounts','initFreshsalesAccounts','getServicenowAccounts','getDynamics365Accounts','initDynamics365Accounts','getCampaigns','initCampaigns','getVoiceExtensions','initVoiceExtensions','initFaxAccounts','getVoiceQueueReports','initVoiceQueueReports','initVoiceQueueHopperHistory','getCampaignHopperHistory','initCampaignHopperHistory','getVoiceCallReports','catch','log','listen','sync','bluebird','moment','./server','./realtime','./acw','./dialer','./preview','./fax','./rpc/voiceQueue','./rpc/voiceQueueReport','./rpc/trunk','./rpc/trigger','./rpc/campaign','./rpc/voiceExtension','./rpc/faxAccount','./rpc/integrations/zendesk','./rpc/integrations/sugarcrm','./rpc/integrations/freshdesk','./rpc/integrations/desk','./rpc/integrations/vtiger','./rpc/integrations/servicenow','./rpc/integrations/dynamics365'];(function(_0x113ba9,_0xc4d2ba){var _0x4a8e33=function(_0x21fcda){while(--_0x21fcda){_0x113ba9['push'](_0x113ba9['shift']());}};_0x4a8e33(++_0xc4d2ba);}(_0x78a9,0x1ea));var _0x978a=function(_0x318a7f,_0x1a74f3){_0x318a7f=_0x318a7f-0x0;var _0x388423=_0x78a9[_0x318a7f];return _0x388423;};'use strict';var BPromise=require(_0x978a('0x0'));var util=require('util');var moment=require(_0x978a('0x1'));var server=require(_0x978a('0x2'));var Realtime=require(_0x978a('0x3'));var Report=require('./report');var Acw=require(_0x978a('0x4'));var Trigger=require('./trigger');var Dialer=require(_0x978a('0x5'));var Preview=require(_0x978a('0x6'));var Fax=require(_0x978a('0x7'));var user=require('./rpc/user');var voiceQueue=require(_0x978a('0x8'));var voiceQueueReport=require(_0x978a('0x9'));var voiceCallReport=require('./rpc/voiceCallReport');var trunk=require(_0x978a('0xa'));var trigger=require(_0x978a('0xb'));var template=require('./rpc/template');var cmHopperHistory=require('./rpc/cmHopperHistory');var campaign=require(_0x978a('0xc'));var voiceExtension=require(_0x978a('0xd'));var faxAccount=require(_0x978a('0xe'));var zendesk=require(_0x978a('0xf'));var salesforce=require('./rpc/integrations/salesforce');var sugarcrm=require(_0x978a('0x10'));var freshdesk=require(_0x978a('0x11'));var desk=require(_0x978a('0x12'));var zoho=require('./rpc/integrations/zoho');var vtiger=require(_0x978a('0x13'));var freshsales=require('./rpc/integrations/freshsales');var servicenow=require(_0x978a('0x14'));var dynamics365=require(_0x978a('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 isTrue=!![];var initP=!![];function ifMidnight(){if(moment()[_0x978a('0x16')](_0x978a('0x17'))===0x0&&initP){initP=![];isTrue=!![];initParams();}if(moment()[_0x978a('0x16')](_0x978a('0x17'))===0x1&&isTrue){isTrue=![];initP=!![];}}function initRealtime(){ifMidnight();return BPromise[_0x978a('0x18')]()['then'](user[_0x978a('0x19')]())[_0x978a('0x1a')](realtime[_0x978a('0x1b')]())[_0x978a('0x1a')](user[_0x978a('0x1c')]())[_0x978a('0x1a')](realtime[_0x978a('0x1d')]())[_0x978a('0x1a')](trunk['getTrunks']())[_0x978a('0x1a')](realtime[_0x978a('0x1e')]())[_0x978a('0x1a')](voiceQueue[_0x978a('0x1f')]())[_0x978a('0x1a')](realtime[_0x978a('0x20')]())['then'](trigger[_0x978a('0x21')]())['then'](realtime[_0x978a('0x22')]())['then'](template[_0x978a('0x23')]())['then'](realtime[_0x978a('0x24')]())[_0x978a('0x1a')](zendesk[_0x978a('0x25')]())[_0x978a('0x1a')](realtime['initZendeskAccounts']())[_0x978a('0x1a')](salesforce['getSalesforceAccounts']())[_0x978a('0x1a')](realtime[_0x978a('0x26')]())[_0x978a('0x1a')](sugarcrm['getSugarcrmAccounts']())[_0x978a('0x1a')](realtime[_0x978a('0x27')]())[_0x978a('0x1a')](freshdesk[_0x978a('0x28')]())[_0x978a('0x1a')](realtime[_0x978a('0x29')]())['then'](desk['getDeskAccounts']())[_0x978a('0x1a')](realtime['initDeskAccounts']())[_0x978a('0x1a')](zoho['getZohoAccounts']())[_0x978a('0x1a')](realtime[_0x978a('0x2a')]())['then'](vtiger[_0x978a('0x2b')]())[_0x978a('0x1a')](realtime['initVtigerAccounts']())[_0x978a('0x1a')](freshsales[_0x978a('0x2c')]())[_0x978a('0x1a')](realtime[_0x978a('0x2d')]())[_0x978a('0x1a')](servicenow[_0x978a('0x2e')]())[_0x978a('0x1a')](realtime['initServicenowAccounts']())['then'](dynamics365[_0x978a('0x2f')]())[_0x978a('0x1a')](realtime[_0x978a('0x30')]())[_0x978a('0x1a')](campaign[_0x978a('0x31')]())[_0x978a('0x1a')](realtime[_0x978a('0x32')]())[_0x978a('0x1a')](voiceExtension[_0x978a('0x33')]())[_0x978a('0x1a')](realtime[_0x978a('0x34')]())[_0x978a('0x1a')](faxAccount['getFaxAccounts']())['then'](realtime[_0x978a('0x35')]())[_0x978a('0x1a')](function(){return realtime;});}function initParams(){return BPromise[_0x978a('0x18')]()[_0x978a('0x1a')](voiceQueueReport[_0x978a('0x36')]())[_0x978a('0x1a')](realtime[_0x978a('0x37')]())[_0x978a('0x1a')](cmHopperHistory['getVoiceQueueHopperHistory']())[_0x978a('0x1a')](realtime[_0x978a('0x38')]())[_0x978a('0x1a')](cmHopperHistory[_0x978a('0x39')]())[_0x978a('0x1a')](realtime[_0x978a('0x3a')]())[_0x978a('0x1a')](voiceCallReport[_0x978a('0x3b')]())[_0x978a('0x1a')](realtime['initVoiceCallReports']())[_0x978a('0x1a')](function(_0x175945){})[_0x978a('0x3c')](function(_0x828eb){console[_0x978a('0x3d')](_0x828eb);});}function main(){return server[_0x978a('0x3e')](realtime,preview,fax)[_0x978a('0x1a')](function(_0x3efb4a){return initRealtime();})['then'](function(){return initParams();})[_0x978a('0x1a')](function(){report[_0x978a('0x3f')]();setInterval(initRealtime,0x1388);})[_0x978a('0x3c')](function(_0x15873a){console[_0x978a('0x3d')](_0x15873a);});}main();
\ No newline at end of file
index 49c25cd..29cb05f 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(_0x591e11,_0x363e09){var _0x23a0a=function(_0x43734d){while(--_0x43734d){_0x591e11['push'](_0x591e11['shift']());}};_0x23a0a(++_0x363e09);}(_0xa9e0,0x123));var _0x0a9e=function(_0x3947c9,_0x4d6c97){_0x3947c9=_0x3947c9-0x0;var _0x2e7871=_0xa9e0[_0x3947c9];return _0x2e7871;};'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 _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(_0x5d1c9d,_0x8bb82d){var _0x8edfe4=function(_0x30fdc4){while(--_0x30fdc4){_0x5d1c9d['push'](_0x5d1c9d['shift']());}};_0x8edfe4(++_0x8bb82d);}(_0xa9e0,0x123));var _0x0a9e=function(_0x36dfbd,_0x5bfe2d){_0x36dfbd=_0x36dfbd-0x0;var _0x4ecad9=_0xa9e0[_0x36dfbd];return _0x4ecad9;};'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
index 224ab83..2e3294d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x124d=['dialAgentRejectMaxRetry','dialAgentRejectRetryFrequency','dialOrderByScheduledAt','dialPrefix','dialRandomLastDigitCallerIdNumber','TrunkBackup','Trunk','Interval','SquareProject','dialQueueProject','dialAMDActive','dialAMDInitialSilence','dialAMDGreeting','dialAMDAfterGreetingSilence','dialAMDTotalAnalysisTime','dialAMDMinWordLength','dialAMDBetweenWordsSilence','dialAMDMaximumNumberOfWords','dialAMDSilenceThreshold','dialAMDMaximumWordLength','exports','name','type','campaign','originated','ivrTotalCallsDays','message','sendMessageOneNotActive','active','limitCalls','dialTimezone','dialGlobalInterval','dialOriginateCallerIdName','dialOriginateCallerIdNumber','dialOriginateTimeout','dialCongestionMaxRetry','dialCongestionRetryFrequency','dialBusyMaxRetry','dialBusyRetryFrequency','dialNoAnswerMaxRetry','dialNoAnswerRetryFrequency','dialGlobalMaxRetry','dialNoSuchNumberMaxRetry','dialNoSuchNumberRetryFrequency','dialDropMaxRetry','dialDropRetryFrequency','dialAbandonedMaxRetry','dialAbandonedRetryFrequency','dialMachineRetryFrequency'];(function(_0x46698a,_0x8de1e4){var _0x356db0=function(_0x19e83c){while(--_0x19e83c){_0x46698a['push'](_0x46698a['shift']());}};_0x356db0(++_0x8de1e4);}(_0x124d,0x19d));var _0xd124=function(_0x2c5b11,_0x5a7467){_0x2c5b11=_0x2c5b11-0x0;var _0x3c2342=_0x124d[_0x2c5b11];return _0x3c2342;};'use strict';function Campaign(_0x34a93d){this['id']=_0x34a93d['id']||0x0;this[_0xd124('0x0')]=_0x34a93d[_0xd124('0x0')]||'';this[_0xd124('0x1')]=_0x34a93d[_0xd124('0x1')]||_0xd124('0x2');this[_0xd124('0x3')]=0x0;this['temp']=0x0;this['ivrAnswerCallsDay']=0x0;this[_0xd124('0x4')]=0x0;this[_0xd124('0x5')]='';this[_0xd124('0x6')]=!![];this['active']=_0x34a93d[_0xd124('0x7')];this['limitCalls']=_0x34a93d[_0xd124('0x8')];this[_0xd124('0x9')]=_0x34a93d[_0xd124('0x9')]||null;this[_0xd124('0xa')]=_0x34a93d[_0xd124('0xa')]?_0x34a93d['dialGlobalInterval']:null;this[_0xd124('0xb')]=_0x34a93d[_0xd124('0xb')];this[_0xd124('0xc')]=_0x34a93d['dialOriginateCallerIdNumber'];this[_0xd124('0xd')]=_0x34a93d[_0xd124('0xd')]||0x1e;this[_0xd124('0xe')]=_0x34a93d['dialCongestionMaxRetry'];this[_0xd124('0xf')]=_0x34a93d[_0xd124('0xf')];this[_0xd124('0x10')]=_0x34a93d[_0xd124('0x10')];this[_0xd124('0x11')]=_0x34a93d[_0xd124('0x11')];this[_0xd124('0x12')]=_0x34a93d[_0xd124('0x12')];this[_0xd124('0x13')]=_0x34a93d[_0xd124('0x13')];this[_0xd124('0x14')]=_0x34a93d['dialGlobalMaxRetry'];this[_0xd124('0x15')]=_0x34a93d[_0xd124('0x15')]||0x3;this['dialNoSuchNumberRetryFrequency']=_0x34a93d[_0xd124('0x16')]||0x96;this[_0xd124('0x17')]=_0x34a93d[_0xd124('0x17')]||0x3;this[_0xd124('0x18')]=_0x34a93d[_0xd124('0x18')]||0x96;this[_0xd124('0x19')]=_0x34a93d[_0xd124('0x19')]||0x3;this[_0xd124('0x1a')]=_0x34a93d[_0xd124('0x1a')]||0x96;this['dialMachineMaxRetry']=_0x34a93d['dialMachineMaxRetry']||0x3;this['dialMachineRetryFrequency']=_0x34a93d[_0xd124('0x1b')]||0x96;this[_0xd124('0x1c')]=_0x34a93d['dialAgentRejectMaxRetry']||0x3;this['dialAgentRejectRetryFrequency']=_0x34a93d[_0xd124('0x1d')]||0x96;this['dialOrderByScheduledAt']=_0x34a93d[_0xd124('0x1e')]||'DESC';this['dialPrefix']=_0x34a93d[_0xd124('0x1f')]||undefined;this[_0xd124('0x20')]=_0x34a93d[_0xd124('0x20')]||undefined;this['dialCutDigit']=_0x34a93d['dialCutDigit']||undefined;this[_0xd124('0x21')]=_0x34a93d[_0xd124('0x21')]?_0x34a93d['TrunkBackup']:undefined;this['Trunk']=_0x34a93d[_0xd124('0x22')]?_0x34a93d[_0xd124('0x22')]:undefined;this[_0xd124('0x23')]=_0x34a93d['Interval']?_0x34a93d[_0xd124('0x23')]:undefined;this[_0xd124('0x24')]=_0x34a93d[_0xd124('0x24')]?_0x34a93d['SquareProject']:undefined;this[_0xd124('0x25')]=_0x34a93d[_0xd124('0x24')]?_0x34a93d['SquareProject'][_0xd124('0x0')]:undefined;this[_0xd124('0x26')]=_0x34a93d[_0xd124('0x26')]||![];this[_0xd124('0x27')]=_0x34a93d['dialAMDInitialSilence'];this[_0xd124('0x28')]=_0x34a93d[_0xd124('0x28')];this[_0xd124('0x29')]=_0x34a93d[_0xd124('0x29')];this[_0xd124('0x2a')]=_0x34a93d[_0xd124('0x2a')];this['dialAMDMinWordLength']=_0x34a93d[_0xd124('0x2b')];this[_0xd124('0x2c')]=_0x34a93d['dialAMDBetweenWordsSilence'];this[_0xd124('0x2d')]=_0x34a93d[_0xd124('0x2d')];this[_0xd124('0x2e')]=_0x34a93d['dialAMDSilenceThreshold'];this[_0xd124('0x2f')]=_0x34a93d[_0xd124('0x2f')];}module[_0xd124('0x30')]=Campaign;
\ No newline at end of file
+var _0x1db7=['dialMachineRetryFrequency','dialAgentRejectMaxRetry','dialAgentRejectRetryFrequency','dialOrderByScheduledAt','dialPrefix','dialRandomLastDigitCallerIdNumber','dialCutDigit','TrunkBackup','Trunk','Interval','SquareProject','dialAMDInitialSilence','dialAMDGreeting','dialAMDAfterGreetingSilence','dialAMDTotalAnalysisTime','dialAMDMinWordLength','dialAMDBetweenWordsSilence','dialAMDMaximumNumberOfWords','dialAMDSilenceThreshold','dialAMDMaximumWordLength','exports','name','type','campaign','originated','ivrAnswerCallsDay','sendMessageOneNotActive','active','limitCalls','dialGlobalInterval','dialOriginateCallerIdName','dialOriginateCallerIdNumber','dialOriginateTimeout','dialCongestionRetryFrequency','dialBusyMaxRetry','dialBusyRetryFrequency','dialNoAnswerMaxRetry','dialNoAnswerRetryFrequency','dialGlobalMaxRetry','dialNoSuchNumberMaxRetry','dialNoSuchNumberRetryFrequency','dialDropMaxRetry','dialDropRetryFrequency','dialAbandonedMaxRetry','dialAbandonedRetryFrequency','dialMachineMaxRetry'];(function(_0x264a77,_0x5c9831){var _0x4c2673=function(_0x14ee50){while(--_0x14ee50){_0x264a77['push'](_0x264a77['shift']());}};_0x4c2673(++_0x5c9831);}(_0x1db7,0x71));var _0x71db=function(_0x1f1644,_0x65c7ed){_0x1f1644=_0x1f1644-0x0;var _0x28cffc=_0x1db7[_0x1f1644];return _0x28cffc;};'use strict';function Campaign(_0x5dc934){this['id']=_0x5dc934['id']||0x0;this[_0x71db('0x0')]=_0x5dc934[_0x71db('0x0')]||'';this[_0x71db('0x1')]=_0x5dc934[_0x71db('0x1')]||_0x71db('0x2');this[_0x71db('0x3')]=0x0;this['temp']=0x0;this[_0x71db('0x4')]=0x0;this['ivrTotalCallsDays']=0x0;this['message']='';this[_0x71db('0x5')]=!![];this['active']=_0x5dc934[_0x71db('0x6')];this[_0x71db('0x7')]=_0x5dc934[_0x71db('0x7')];this['dialTimezone']=_0x5dc934['dialTimezone']||null;this[_0x71db('0x8')]=_0x5dc934[_0x71db('0x8')]?_0x5dc934[_0x71db('0x8')]:null;this[_0x71db('0x9')]=_0x5dc934[_0x71db('0x9')];this[_0x71db('0xa')]=_0x5dc934[_0x71db('0xa')];this['dialOriginateTimeout']=_0x5dc934[_0x71db('0xb')]||0x1e;this['dialCongestionMaxRetry']=_0x5dc934['dialCongestionMaxRetry'];this[_0x71db('0xc')]=_0x5dc934[_0x71db('0xc')];this[_0x71db('0xd')]=_0x5dc934[_0x71db('0xd')];this['dialBusyRetryFrequency']=_0x5dc934[_0x71db('0xe')];this[_0x71db('0xf')]=_0x5dc934[_0x71db('0xf')];this[_0x71db('0x10')]=_0x5dc934[_0x71db('0x10')];this[_0x71db('0x11')]=_0x5dc934['dialGlobalMaxRetry'];this[_0x71db('0x12')]=_0x5dc934[_0x71db('0x12')]||0x3;this['dialNoSuchNumberRetryFrequency']=_0x5dc934[_0x71db('0x13')]||0x96;this['dialDropMaxRetry']=_0x5dc934[_0x71db('0x14')]||0x3;this[_0x71db('0x15')]=_0x5dc934[_0x71db('0x15')]||0x96;this[_0x71db('0x16')]=_0x5dc934[_0x71db('0x16')]||0x3;this[_0x71db('0x17')]=_0x5dc934[_0x71db('0x17')]||0x96;this[_0x71db('0x18')]=_0x5dc934[_0x71db('0x18')]||0x3;this[_0x71db('0x19')]=_0x5dc934[_0x71db('0x19')]||0x96;this[_0x71db('0x1a')]=_0x5dc934[_0x71db('0x1a')]||0x3;this[_0x71db('0x1b')]=_0x5dc934[_0x71db('0x1b')]||0x96;this[_0x71db('0x1c')]=_0x5dc934['dialOrderByScheduledAt']||'DESC';this[_0x71db('0x1d')]=_0x5dc934[_0x71db('0x1d')]||undefined;this[_0x71db('0x1e')]=_0x5dc934[_0x71db('0x1e')]||undefined;this['dialCutDigit']=_0x5dc934[_0x71db('0x1f')]||undefined;this[_0x71db('0x20')]=_0x5dc934[_0x71db('0x20')]?_0x5dc934['TrunkBackup']:undefined;this[_0x71db('0x21')]=_0x5dc934[_0x71db('0x21')]?_0x5dc934[_0x71db('0x21')]:undefined;this[_0x71db('0x22')]=_0x5dc934[_0x71db('0x22')]?_0x5dc934[_0x71db('0x22')]:undefined;this[_0x71db('0x23')]=_0x5dc934[_0x71db('0x23')]?_0x5dc934[_0x71db('0x23')]:undefined;this['dialQueueProject']=_0x5dc934[_0x71db('0x23')]?_0x5dc934[_0x71db('0x23')]['name']:undefined;this['dialAMDActive']=_0x5dc934['dialAMDActive']||![];this[_0x71db('0x24')]=_0x5dc934[_0x71db('0x24')];this[_0x71db('0x25')]=_0x5dc934['dialAMDGreeting'];this['dialAMDAfterGreetingSilence']=_0x5dc934[_0x71db('0x26')];this[_0x71db('0x27')]=_0x5dc934[_0x71db('0x27')];this[_0x71db('0x28')]=_0x5dc934[_0x71db('0x28')];this[_0x71db('0x29')]=_0x5dc934['dialAMDBetweenWordsSilence'];this[_0x71db('0x2a')]=_0x5dc934[_0x71db('0x2a')];this[_0x71db('0x2b')]=_0x5dc934[_0x71db('0x2b')];this[_0x71db('0x2c')]=_0x5dc934[_0x71db('0x2c')];}module[_0x71db('0x2d')]=Campaign;
\ No newline at end of file
index 7f7ec10..32eb8e6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9822=['connectedlinename','accountcode','context','uniqueid','linkedid','answered','answertime','unmanaged','abandoned','lastdata','duration','billableseconds','holdtime','tag','monitor','monitorFilename','queue','monitors','transferconnectedlinenum','transferType','mohtime','exports','starttime','channel','destinationchannel'];(function(_0x3f7f96,_0x198976){var _0x26a564=function(_0x7c1e2a){while(--_0x7c1e2a){_0x3f7f96['push'](_0x3f7f96['shift']());}};_0x26a564(++_0x198976);}(_0x9822,0x93));var _0x2982=function(_0x238bff,_0x310dc0){_0x238bff=_0x238bff-0x0;var _0x5adc32=_0x9822[_0x238bff];return _0x5adc32;};'use strict';function Channel(){this[_0x2982('0x0')]=null;this[_0x2982('0x1')]='';this[_0x2982('0x2')]='';this['calleridnum']=0x0;this['calleridname']='';this['connectedlinenum']=undefined;this[_0x2982('0x3')]=undefined;this[_0x2982('0x4')]=0x0;this[_0x2982('0x5')]='';this[_0x2982('0x6')]=0x0;this[_0x2982('0x7')]=0x0;this['exten']=0x0;this[_0x2982('0x8')]=![];this[_0x2982('0x9')]=null;this['endtime']=null;this[_0x2982('0xa')]=![];this[_0x2982('0xb')]=![];this['lastapplication']='';this[_0x2982('0xc')]='';this[_0x2982('0xd')]=0x0;this[_0x2982('0xe')]=0x0;this[_0x2982('0xf')]=0x0;this['type']=null;this[_0x2982('0x10')]=null;this['disposition']=null;this[_0x2982('0x11')]=![];this[_0x2982('0x12')]=null;this[_0x2982('0x13')]=null;this[_0x2982('0x14')]=[];this['transfercalleridnum']=undefined;this[_0x2982('0x15')]=undefined;this[_0x2982('0x16')]=undefined;this[_0x2982('0x17')]=0x0;}module[_0x2982('0x18')]=Channel;
\ No newline at end of file
+var _0x99d1=['answered','answertime','endtime','unmanaged','abandoned','lastapplication','lastdata','duration','billableseconds','holdtime','tag','disposition','monitorFilename','queue','monitors','transferconnectedlinenum','transferType','starttime','destinationchannel','calleridnum','calleridname','connectedlinenum','connectedlinename','context','uniqueid','linkedid','exten'];(function(_0x4071df,_0x55dada){var _0x157dc4=function(_0x52389b){while(--_0x52389b){_0x4071df['push'](_0x4071df['shift']());}};_0x157dc4(++_0x55dada);}(_0x99d1,0x104));var _0x199d=function(_0x559bd3,_0x1532c1){_0x559bd3=_0x559bd3-0x0;var _0xe62ee8=_0x99d1[_0x559bd3];return _0xe62ee8;};'use strict';function Channel(){this[_0x199d('0x0')]=null;this['channel']='';this[_0x199d('0x1')]='';this[_0x199d('0x2')]=0x0;this[_0x199d('0x3')]='';this[_0x199d('0x4')]=undefined;this[_0x199d('0x5')]=undefined;this['accountcode']=0x0;this[_0x199d('0x6')]='';this[_0x199d('0x7')]=0x0;this[_0x199d('0x8')]=0x0;this[_0x199d('0x9')]=0x0;this[_0x199d('0xa')]=![];this[_0x199d('0xb')]=null;this[_0x199d('0xc')]=null;this[_0x199d('0xd')]=![];this[_0x199d('0xe')]=![];this[_0x199d('0xf')]='';this[_0x199d('0x10')]='';this[_0x199d('0x11')]=0x0;this[_0x199d('0x12')]=0x0;this[_0x199d('0x13')]=0x0;this['type']=null;this[_0x199d('0x14')]=null;this[_0x199d('0x15')]=null;this['monitor']=![];this[_0x199d('0x16')]=null;this[_0x199d('0x17')]=null;this[_0x199d('0x18')]=[];this['transfercalleridnum']=undefined;this[_0x199d('0x19')]=undefined;this[_0x199d('0x1a')]=undefined;this['mohtime']=0x0;}module['exports']=Channel;
\ No newline at end of file
index 228a5a9..1f9c8db 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x694b=['remoteUri','authType','password','consumerKey','consumerSecret','tokenSecret','type','serverUrl','username'];(function(_0x13f0dc,_0x50b425){var _0x50def6=function(_0x142254){while(--_0x142254){_0x13f0dc['push'](_0x13f0dc['shift']());}};_0x50def6(++_0x50b425);}(_0x694b,0x131));var _0xb694=function(_0x4672f6,_0x3f3c9c){_0x4672f6=_0x4672f6-0x0;var _0x1508e7=_0x694b[_0x4672f6];return _0x1508e7;};'use strict';function DeskAccount(_0x23f8e4){this['id']=_0x23f8e4['id']||0x0;this['name']=_0x23f8e4['name']||'';this[_0xb694('0x0')]=_0x23f8e4['username']||'';this[_0xb694('0x1')]=_0x23f8e4[_0xb694('0x1')]||'';this[_0xb694('0x2')]=_0x23f8e4[_0xb694('0x2')]||'';this[_0xb694('0x3')]=_0x23f8e4['password']||'';this[_0xb694('0x4')]=_0x23f8e4[_0xb694('0x4')]||'';this[_0xb694('0x5')]=_0x23f8e4[_0xb694('0x5')]||'';this['token']=_0x23f8e4['token']||'';this[_0xb694('0x6')]=_0x23f8e4[_0xb694('0x6')]||'';this[_0xb694('0x7')]=_0x23f8e4['type']||'';this[_0xb694('0x8')]=_0x23f8e4['serverUrl']||'';this['Configurations']=_0x23f8e4['Configurations']||{};}module['exports']=DeskAccount;
\ No newline at end of file
+var _0x442b=['consumerSecret','token','tokenSecret','type','serverUrl','Configurations','exports','name','username','remoteUri','authType','consumerKey'];(function(_0x3e8111,_0x4749db){var _0x45af02=function(_0x20666b){while(--_0x20666b){_0x3e8111['push'](_0x3e8111['shift']());}};_0x45af02(++_0x4749db);}(_0x442b,0xa3));var _0xb442=function(_0x4b3817,_0x2ba4ef){_0x4b3817=_0x4b3817-0x0;var _0x4b447c=_0x442b[_0x4b3817];return _0x4b447c;};'use strict';function DeskAccount(_0xebc3fd){this['id']=_0xebc3fd['id']||0x0;this[_0xb442('0x0')]=_0xebc3fd[_0xb442('0x0')]||'';this[_0xb442('0x1')]=_0xebc3fd[_0xb442('0x1')]||'';this[_0xb442('0x2')]=_0xebc3fd[_0xb442('0x2')]||'';this[_0xb442('0x3')]=_0xebc3fd[_0xb442('0x3')]||'';this['password']=_0xebc3fd['password']||'';this[_0xb442('0x4')]=_0xebc3fd[_0xb442('0x4')]||'';this[_0xb442('0x5')]=_0xebc3fd[_0xb442('0x5')]||'';this[_0xb442('0x6')]=_0xebc3fd[_0xb442('0x6')]||'';this[_0xb442('0x7')]=_0xebc3fd[_0xb442('0x7')]||'';this[_0xb442('0x8')]=_0xebc3fd[_0xb442('0x8')]||'';this[_0xb442('0x9')]=_0xebc3fd[_0xb442('0x9')]||'';this[_0xb442('0xa')]=_0xebc3fd[_0xb442('0xa')]||{};}module[_0xb442('0xb')]=DeskAccount;
\ No newline at end of file
index 9a52905..0409996 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xee5b=['clientId','clientSecret','name','username','password','remoteUri'];(function(_0x3e0763,_0x3d12be){var _0x351ca2=function(_0x9beae7){while(--_0x9beae7){_0x3e0763['push'](_0x3e0763['shift']());}};_0x351ca2(++_0x3d12be);}(_0xee5b,0x1f4));var _0xbee5=function(_0x18aa6a,_0x4797b2){_0x18aa6a=_0x18aa6a-0x0;var _0x4536c7=_0xee5b[_0x18aa6a];return _0x4536c7;};'use strict';function Dynamics365Account(_0x5384bd){this['id']=_0x5384bd['id']||0x0;this['name']=_0x5384bd[_0xbee5('0x0')]||'';this[_0xbee5('0x1')]=_0x5384bd['username']||'';this[_0xbee5('0x2')]=_0x5384bd[_0xbee5('0x2')]||'';this[_0xbee5('0x3')]=_0x5384bd[_0xbee5('0x3')]||'';this['tenantId']=_0x5384bd['tenantId']||'';this[_0xbee5('0x4')]=_0x5384bd[_0xbee5('0x4')]||'';this[_0xbee5('0x5')]=_0x5384bd[_0xbee5('0x5')]||{};this['serverUrl']=_0x5384bd['serverUrl']||'';this['Configurations']=_0x5384bd['Configurations']||{};}module['exports']=Dynamics365Account;
\ No newline at end of file
+var _0x6324=['password','remoteUri','tenantId','clientId','clientSecret','serverUrl','Configurations','name','username'];(function(_0x1236f7,_0x50c076){var _0x10bc30=function(_0x381075){while(--_0x381075){_0x1236f7['push'](_0x1236f7['shift']());}};_0x10bc30(++_0x50c076);}(_0x6324,0x142));var _0x4632=function(_0x3e9650,_0x15c3d9){_0x3e9650=_0x3e9650-0x0;var _0x2921f7=_0x6324[_0x3e9650];return _0x2921f7;};'use strict';function Dynamics365Account(_0x3396c7){this['id']=_0x3396c7['id']||0x0;this[_0x4632('0x0')]=_0x3396c7[_0x4632('0x0')]||'';this[_0x4632('0x1')]=_0x3396c7['username']||'';this[_0x4632('0x2')]=_0x3396c7['password']||'';this[_0x4632('0x3')]=_0x3396c7['remoteUri']||'';this[_0x4632('0x4')]=_0x3396c7['tenantId']||'';this[_0x4632('0x5')]=_0x3396c7[_0x4632('0x5')]||'';this[_0x4632('0x6')]=_0x3396c7[_0x4632('0x6')]||{};this['serverUrl']=_0x3396c7[_0x4632('0x7')]||'';this[_0x4632('0x8')]=_0x3396c7[_0x4632('0x8')]||{};}module['exports']=Dynamics365Account;
\ No newline at end of file
index 97cce17..c7161db 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9a7b=['t38timeout','tech','SIP','Trunk','ListId','key','exports','name','description','ecm','headerinfo','localstationid','minrate','maxrate','modem','v17,v27,v29','gateway','faxdetect'];(function(_0x4d05f7,_0xde4b24){var _0xd52614=function(_0x5954ad){while(--_0x5954ad){_0x4d05f7['push'](_0x4d05f7['shift']());}};_0xd52614(++_0xde4b24);}(_0x9a7b,0xcd));var _0xb9a7=function(_0x4164a6,_0x3097fe){_0x4164a6=_0x4164a6-0x0;var _0x302434=_0x9a7b[_0x4164a6];return _0x302434;};'use strict';function FaxAccount(_0x521b09){this['id']=_0x521b09['id']||0x0;this['name']=_0x521b09[_0xb9a7('0x0')]||'';this['description']=_0x521b09[_0xb9a7('0x1')];this[_0xb9a7('0x2')]=_0x521b09[_0xb9a7('0x2')];this[_0xb9a7('0x3')]=_0x521b09[_0xb9a7('0x3')];this[_0xb9a7('0x4')]=_0x521b09['localstationid'];this[_0xb9a7('0x5')]=_0x521b09[_0xb9a7('0x5')]||0x960;this[_0xb9a7('0x6')]=_0x521b09[_0xb9a7('0x6')]||0x3840;this[_0xb9a7('0x7')]=_0x521b09['modem']||_0xb9a7('0x8');this['gateway']=_0x521b09[_0xb9a7('0x9')]||'no';this[_0xb9a7('0xa')]=_0x521b09[_0xb9a7('0xa')]||'no';this[_0xb9a7('0xb')]=_0x521b09['t38timeout']||0x1388;this['tech']=_0x521b09[_0xb9a7('0xc')]||_0xb9a7('0xd');this[_0xb9a7('0xe')]=_0x521b09[_0xb9a7('0xe')]?_0x521b09['Trunk']:undefined;this[_0xb9a7('0xf')]=_0x521b09[_0xb9a7('0xf')];this[_0xb9a7('0x10')]=_0x521b09[_0xb9a7('0x10')];}module[_0xb9a7('0x11')]=FaxAccount;
\ No newline at end of file
+var _0xb682=['modem','v17,v27,v29','gateway','faxdetect','t38timeout','tech','SIP','Trunk','ListId','key','exports','name','description','ecm','localstationid','minrate'];(function(_0x5d8ee4,_0x472c11){var _0x36d705=function(_0x5df09d){while(--_0x5df09d){_0x5d8ee4['push'](_0x5d8ee4['shift']());}};_0x36d705(++_0x472c11);}(_0xb682,0x1ab));var _0x2b68=function(_0x1acdd7,_0x1b63d6){_0x1acdd7=_0x1acdd7-0x0;var _0x5eed04=_0xb682[_0x1acdd7];return _0x5eed04;};'use strict';function FaxAccount(_0x518172){this['id']=_0x518172['id']||0x0;this[_0x2b68('0x0')]=_0x518172[_0x2b68('0x0')]||'';this['description']=_0x518172[_0x2b68('0x1')];this[_0x2b68('0x2')]=_0x518172[_0x2b68('0x2')];this['headerinfo']=_0x518172['headerinfo'];this[_0x2b68('0x3')]=_0x518172['localstationid'];this[_0x2b68('0x4')]=_0x518172[_0x2b68('0x4')]||0x960;this['maxrate']=_0x518172['maxrate']||0x3840;this[_0x2b68('0x5')]=_0x518172[_0x2b68('0x5')]||_0x2b68('0x6');this[_0x2b68('0x7')]=_0x518172[_0x2b68('0x7')]||'no';this['faxdetect']=_0x518172[_0x2b68('0x8')]||'no';this[_0x2b68('0x9')]=_0x518172['t38timeout']||0x1388;this[_0x2b68('0xa')]=_0x518172[_0x2b68('0xa')]||_0x2b68('0xb');this['Trunk']=_0x518172['Trunk']?_0x518172[_0x2b68('0xc')]:undefined;this[_0x2b68('0xd')]=_0x518172[_0x2b68('0xd')];this[_0x2b68('0xe')]=_0x518172[_0x2b68('0xe')];}module[_0x2b68('0xf')]=FaxAccount;
\ No newline at end of file
index 1cb596e..9d83f56 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0b81=['apiKey','remoteUri','serverUrl','Configurations','exports','name'];(function(_0x570995,_0x2dffdf){var _0x3b7ee9=function(_0x31652b){while(--_0x31652b){_0x570995['push'](_0x570995['shift']());}};_0x3b7ee9(++_0x2dffdf);}(_0x0b81,0x1cd));var _0x10b8=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x0b81[_0x3dd15e];return _0x231fd0;};'use strict';function FreshdeskAccount(_0x4ab14e){this['id']=_0x4ab14e['id']||0x0;this[_0x10b8('0x0')]=_0x4ab14e['name']||'';this['username']=_0x4ab14e['username']||'';this[_0x10b8('0x1')]=_0x4ab14e['token']||'';this[_0x10b8('0x2')]=_0x4ab14e[_0x10b8('0x2')]||'';this[_0x10b8('0x3')]=_0x4ab14e[_0x10b8('0x3')]||'';this[_0x10b8('0x4')]=_0x4ab14e['Configurations']||{};}module[_0x10b8('0x5')]=FreshdeskAccount;
\ No newline at end of file
+var _0x00ea=['name','remoteUri','serverUrl','Configurations'];(function(_0x9c9c32,_0x2e1a14){var _0x28bfeb=function(_0x4a2d01){while(--_0x4a2d01){_0x9c9c32['push'](_0x9c9c32['shift']());}};_0x28bfeb(++_0x2e1a14);}(_0x00ea,0x144));var _0xa00e=function(_0x36b591,_0x1bffc0){_0x36b591=_0x36b591-0x0;var _0x34c71d=_0x00ea[_0x36b591];return _0x34c71d;};'use strict';function FreshdeskAccount(_0x1a3a2d){this['id']=_0x1a3a2d['id']||0x0;this[_0xa00e('0x0')]=_0x1a3a2d[_0xa00e('0x0')]||'';this['username']=_0x1a3a2d['username']||'';this['apiKey']=_0x1a3a2d['token']||'';this[_0xa00e('0x1')]=_0x1a3a2d['remoteUri']||'';this[_0xa00e('0x2')]=_0x1a3a2d[_0xa00e('0x2')]||'';this[_0xa00e('0x3')]=_0x1a3a2d[_0xa00e('0x3')]||{};}module['exports']=FreshdeskAccount;
\ No newline at end of file
index 9f9ce73..9f8a85c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3595=['username','apiKey','token','remoteUri','serverUrl','Configurations','exports','name'];(function(_0x296229,_0x3de13e){var _0x3b4aa2=function(_0x5c4b6f){while(--_0x5c4b6f){_0x296229['push'](_0x296229['shift']());}};_0x3b4aa2(++_0x3de13e);}(_0x3595,0x147));var _0x5359=function(_0x243938,_0x224695){_0x243938=_0x243938-0x0;var _0x689565=_0x3595[_0x243938];return _0x689565;};'use strict';function FreshsalesAccount(_0x503d1a){this['id']=_0x503d1a['id']||0x0;this[_0x5359('0x0')]=_0x503d1a[_0x5359('0x0')]||'';this['username']=_0x503d1a[_0x5359('0x1')]||'';this[_0x5359('0x2')]=_0x503d1a[_0x5359('0x3')]||'';this[_0x5359('0x4')]=_0x503d1a[_0x5359('0x4')]||'';this[_0x5359('0x5')]=_0x503d1a['serverUrl']||'';this['Configurations']=_0x503d1a[_0x5359('0x6')]||{};}module[_0x5359('0x7')]=FreshsalesAccount;
\ No newline at end of file
+var _0x5a63=['username','remoteUri','serverUrl','Configurations','exports','name'];(function(_0x7251b5,_0x26f4b4){var _0x2b6e7a=function(_0x11aa86){while(--_0x11aa86){_0x7251b5['push'](_0x7251b5['shift']());}};_0x2b6e7a(++_0x26f4b4);}(_0x5a63,0xe3));var _0x35a6=function(_0x4100ad,_0x4e9616){_0x4100ad=_0x4100ad-0x0;var _0x1cd5ea=_0x5a63[_0x4100ad];return _0x1cd5ea;};'use strict';function FreshsalesAccount(_0x21eb37){this['id']=_0x21eb37['id']||0x0;this[_0x35a6('0x0')]=_0x21eb37['name']||'';this['username']=_0x21eb37[_0x35a6('0x1')]||'';this['apiKey']=_0x21eb37['token']||'';this[_0x35a6('0x2')]=_0x21eb37[_0x35a6('0x2')]||'';this[_0x35a6('0x3')]=_0x21eb37[_0x35a6('0x3')]||'';this[_0x35a6('0x4')]=_0x21eb37['Configurations']||{};}module[_0x35a6('0x5')]=FreshsalesAccount;
\ No newline at end of file
index fee32de..9aba354 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xce4e=['queuecallerexitAt','channel','connectedlinenum','connectedlinename','accountcode','holdtime','assigned','lastAssignedTo','motionChannel','voice','mohtime','variables','type','inbound','calleridname','queuecallerjoinAt','queuecallerleaveAt','position','count','queuecallerabandon','queuecallercomplete','queuecallercompleteAt'];(function(_0x346fb4,_0x3c00f5){var _0x2389c8=function(_0x3d1eac){while(--_0x3d1eac){_0x346fb4['push'](_0x346fb4['shift']());}};_0x2389c8(++_0x3c00f5);}(_0xce4e,0x140));var _0xece4=function(_0x19e35c,_0x29cd1e){_0x19e35c=_0x19e35c-0x0;var _0x3e1fe8=_0xce4e[_0x19e35c];return _0x3e1fe8;};'use strict';function QueueReport(){this[_0xece4('0x0')]=_0xece4('0x1');this['uniqueid']='';this['calleridnum']='';this[_0xece4('0x2')]='';this['queue']='';this[_0xece4('0x3')]=null;this[_0xece4('0x4')]=null;this[_0xece4('0x5')]=0x1;this[_0xece4('0x6')]=0x1;this[_0xece4('0x7')]=![];this['queuecallerabandonAt']=null;this[_0xece4('0x8')]=![];this[_0xece4('0x9')]=null;this['queuecallerexit']=![];this[_0xece4('0xa')]=null;this['originalposition']=0x1;this[_0xece4('0xb')]='';this[_0xece4('0xc')]='';this[_0xece4('0xd')]='';this[_0xece4('0xe')]='';this['context']='';this['exten']='';this['priority']='';this[_0xece4('0xf')]=0x0;this[_0xece4('0x10')]=![];this[_0xece4('0x11')]='';this[_0xece4('0x12')]=_0xece4('0x13');this[_0xece4('0x14')]=0x0;this[_0xece4('0x15')]={};}module['exports']=QueueReport;
\ No newline at end of file
+var _0xd38b=['connectedlinename','accountcode','exten','priority','holdtime','assigned','lastAssignedTo','mohtime','variables','type','inbound','uniqueid','calleridnum','calleridname','queue','queuecallerjoinAt','queuecallerleaveAt','position','count','queuecallerabandon','queuecallerabandonAt','queuecallercomplete','queuecallerexit','queuecallerexitAt','originalposition','channel','connectedlinenum'];(function(_0x2d1c01,_0x5bea38){var _0x2f1924=function(_0x3e01da){while(--_0x3e01da){_0x2d1c01['push'](_0x2d1c01['shift']());}};_0x2f1924(++_0x5bea38);}(_0xd38b,0x168));var _0xbd38=function(_0x34f0fb,_0x3323b2){_0x34f0fb=_0x34f0fb-0x0;var _0x9b7b2b=_0xd38b[_0x34f0fb];return _0x9b7b2b;};'use strict';function QueueReport(){this[_0xbd38('0x0')]=_0xbd38('0x1');this[_0xbd38('0x2')]='';this[_0xbd38('0x3')]='';this[_0xbd38('0x4')]='';this[_0xbd38('0x5')]='';this[_0xbd38('0x6')]=null;this[_0xbd38('0x7')]=null;this[_0xbd38('0x8')]=0x1;this[_0xbd38('0x9')]=0x1;this[_0xbd38('0xa')]=![];this[_0xbd38('0xb')]=null;this[_0xbd38('0xc')]=![];this['queuecallercompleteAt']=null;this[_0xbd38('0xd')]=![];this[_0xbd38('0xe')]=null;this[_0xbd38('0xf')]=0x1;this[_0xbd38('0x10')]='';this[_0xbd38('0x11')]='';this[_0xbd38('0x12')]='';this[_0xbd38('0x13')]='';this['context']='';this[_0xbd38('0x14')]='';this[_0xbd38('0x15')]='';this[_0xbd38('0x16')]=0x0;this[_0xbd38('0x17')]=![];this[_0xbd38('0x18')]='';this[_0xbd38('0x19')]=0x0;this[_0xbd38('0x1a')]={};}module['exports']=QueueReport;
\ No newline at end of file
index 9da1fcf..0f7ea61 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xee89=['securityToken','type','integrationTab','serverUrl','Configurations','name','username','remoteUri','password','clientId'];(function(_0xab2afb,_0x546bfb){var _0x25262b=function(_0x3bd92d){while(--_0x3bd92d){_0xab2afb['push'](_0xab2afb['shift']());}};_0x25262b(++_0x546bfb);}(_0xee89,0x131));var _0x9ee8=function(_0x4709c0,_0x3396c7){_0x4709c0=_0x4709c0-0x0;var _0x13348b=_0xee89[_0x4709c0];return _0x13348b;};'use strict';function SalesforceAccount(_0x326033){this['id']=_0x326033['id']||0x0;this[_0x9ee8('0x0')]=_0x326033[_0x9ee8('0x0')]||'';this[_0x9ee8('0x1')]=_0x326033[_0x9ee8('0x1')]||'';this[_0x9ee8('0x2')]=_0x326033['remoteUri']||'';this['password']=_0x326033[_0x9ee8('0x3')]||'';this[_0x9ee8('0x4')]=_0x326033[_0x9ee8('0x4')]||'';this['clientSecret']=_0x326033['clientSecret']||'';this['securityToken']=_0x326033[_0x9ee8('0x5')]||'';this[_0x9ee8('0x6')]=_0x326033[_0x9ee8('0x6')]||_0x9ee8('0x7');this[_0x9ee8('0x8')]=_0x326033[_0x9ee8('0x8')]||'';this[_0x9ee8('0x9')]=_0x326033[_0x9ee8('0x9')]||{};}module['exports']=SalesforceAccount;
\ No newline at end of file
+var _0x22ea=['username','remoteUri','password','clientId','clientSecret','securityToken','type','integrationTab','serverUrl','Configurations','exports','name'];(function(_0x1cfa0d,_0x4391f2){var _0xe33279=function(_0x3ce7c1){while(--_0x3ce7c1){_0x1cfa0d['push'](_0x1cfa0d['shift']());}};_0xe33279(++_0x4391f2);}(_0x22ea,0xb3));var _0xa22e=function(_0x1f858a,_0xff7047){_0x1f858a=_0x1f858a-0x0;var _0x3e3b18=_0x22ea[_0x1f858a];return _0x3e3b18;};'use strict';function SalesforceAccount(_0x19c58e){this['id']=_0x19c58e['id']||0x0;this[_0xa22e('0x0')]=_0x19c58e[_0xa22e('0x0')]||'';this[_0xa22e('0x1')]=_0x19c58e['username']||'';this[_0xa22e('0x2')]=_0x19c58e['remoteUri']||'';this[_0xa22e('0x3')]=_0x19c58e[_0xa22e('0x3')]||'';this[_0xa22e('0x4')]=_0x19c58e[_0xa22e('0x4')]||'';this[_0xa22e('0x5')]=_0x19c58e['clientSecret']||'';this['securityToken']=_0x19c58e[_0xa22e('0x6')]||'';this[_0xa22e('0x7')]=_0x19c58e[_0xa22e('0x7')]||_0xa22e('0x8');this[_0xa22e('0x9')]=_0x19c58e[_0xa22e('0x9')]||'';this[_0xa22e('0xa')]=_0x19c58e[_0xa22e('0xa')]||{};}module[_0xa22e('0xb')]=SalesforceAccount;
\ No newline at end of file
index 2b4f835..599c45d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x186a=['serverUrl','exports','name','username','password','remoteUri'];(function(_0x4713fe,_0x24caa0){var _0x14cc0a=function(_0x4537e4){while(--_0x4537e4){_0x4713fe['push'](_0x4713fe['shift']());}};_0x14cc0a(++_0x24caa0);}(_0x186a,0x7a));var _0xa186=function(_0x5dce38,_0x3389f2){_0x5dce38=_0x5dce38-0x0;var _0x29635b=_0x186a[_0x5dce38];return _0x29635b;};'use strict';function ServicenowAccount(_0x4cee31){this['id']=_0x4cee31['id']||0x0;this[_0xa186('0x0')]=_0x4cee31[_0xa186('0x0')]||'';this['username']=_0x4cee31[_0xa186('0x1')]||'';this[_0xa186('0x2')]=_0x4cee31[_0xa186('0x2')]||'';this[_0xa186('0x3')]=_0x4cee31[_0xa186('0x3')]||'';this['serverUrl']=_0x4cee31[_0xa186('0x4')]||'';this['Configurations']=_0x4cee31['Configurations']||{};}module[_0xa186('0x5')]=ServicenowAccount;
\ No newline at end of file
+var _0xef19=['password','remoteUri','serverUrl','Configurations','exports','name','username'];(function(_0x2fb7c1,_0x13ff42){var _0x2521c3=function(_0x1c747b){while(--_0x1c747b){_0x2fb7c1['push'](_0x2fb7c1['shift']());}};_0x2521c3(++_0x13ff42);}(_0xef19,0x101));var _0x9ef1=function(_0x3b16e1,_0x3bda3e){_0x3b16e1=_0x3b16e1-0x0;var _0x311d1b=_0xef19[_0x3b16e1];return _0x311d1b;};'use strict';function ServicenowAccount(_0x44abb3){this['id']=_0x44abb3['id']||0x0;this[_0x9ef1('0x0')]=_0x44abb3['name']||'';this[_0x9ef1('0x1')]=_0x44abb3['username']||'';this[_0x9ef1('0x2')]=_0x44abb3[_0x9ef1('0x2')]||'';this[_0x9ef1('0x3')]=_0x44abb3[_0x9ef1('0x3')]||'';this[_0x9ef1('0x4')]=_0x44abb3[_0x9ef1('0x4')]||'';this['Configurations']=_0x44abb3[_0x9ef1('0x5')]||{};}module[_0x9ef1('0x6')]=ServicenowAccount;
\ No newline at end of file
index a452695..61cb9e8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x771d=['remoteUri','serverUrl','exports','name','username','password'];(function(_0x321bb2,_0x202794){var _0x9c12ed=function(_0x263dd3){while(--_0x263dd3){_0x321bb2['push'](_0x321bb2['shift']());}};_0x9c12ed(++_0x202794);}(_0x771d,0xd5));var _0xd771=function(_0x3ab8b3,_0x50bbd0){_0x3ab8b3=_0x3ab8b3-0x0;var _0x2b7f8b=_0x771d[_0x3ab8b3];return _0x2b7f8b;};'use strict';function SugarcrmAccount(_0x1f92fc){this['id']=_0x1f92fc['id']||0x0;this[_0xd771('0x0')]=_0x1f92fc[_0xd771('0x0')]||'';this[_0xd771('0x1')]=_0x1f92fc[_0xd771('0x1')]||'';this[_0xd771('0x2')]=_0x1f92fc[_0xd771('0x2')]||'';this[_0xd771('0x3')]=_0x1f92fc[_0xd771('0x3')]||'';this[_0xd771('0x4')]=_0x1f92fc[_0xd771('0x4')]||'';this['Configurations']=_0x1f92fc['Configurations']||{};}module[_0xd771('0x5')]=SugarcrmAccount;
\ No newline at end of file
+var _0x7096=['username','password','serverUrl','Configurations','exports','name'];(function(_0x29fe1b,_0x1ba165){var _0x14ed43=function(_0x1a6a81){while(--_0x1a6a81){_0x29fe1b['push'](_0x29fe1b['shift']());}};_0x14ed43(++_0x1ba165);}(_0x7096,0x1c7));var _0x6709=function(_0x6c993a,_0x5ea3ab){_0x6c993a=_0x6c993a-0x0;var _0x27f547=_0x7096[_0x6c993a];return _0x27f547;};'use strict';function SugarcrmAccount(_0x13ee89){this['id']=_0x13ee89['id']||0x0;this[_0x6709('0x0')]=_0x13ee89[_0x6709('0x0')]||'';this['username']=_0x13ee89[_0x6709('0x1')]||'';this[_0x6709('0x2')]=_0x13ee89['password']||'';this['remoteUri']=_0x13ee89['remoteUri']||'';this[_0x6709('0x3')]=_0x13ee89[_0x6709('0x3')]||'';this[_0x6709('0x4')]=_0x13ee89[_0x6709('0x4')]||{};}module[_0x6709('0x5')]=SugarcrmAccount;
\ No newline at end of file
index 3e54d03..ddcc964 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xfecd=['unknown','status','address','exports','name','accountcode','state'];(function(_0x37eddf,_0x2d3277){var _0x376594=function(_0x9bbda4){while(--_0x9bbda4){_0x37eddf['push'](_0x37eddf['shift']());}};_0x376594(++_0x2d3277);}(_0xfecd,0x107));var _0xdfec=function(_0x2cbf47,_0xa90687){_0x2cbf47=_0x2cbf47-0x0;var _0x476995=_0xfecd[_0x2cbf47];return _0x476995;};'use strict';function Telephone(_0x5bc5d7){this['id']=_0x5bc5d7['id']||0x0;this['name']=_0x5bc5d7[_0xdfec('0x0')]||'';this[_0xdfec('0x1')]=_0x5bc5d7['accountcode']||'';this[_0xdfec('0x2')]=_0xdfec('0x3');this['stateTime']=0x0;this[_0xdfec('0x4')]='unknown';this[_0xdfec('0x5')]='';}module[_0xdfec('0x6')]=Telephone;
\ No newline at end of file
+var _0xfecd=['unknown','status','address','exports','name','accountcode','state'];(function(_0x5a8168,_0x547ce1){var _0x3ea1d1=function(_0x5b4776){while(--_0x5b4776){_0x5a8168['push'](_0x5a8168['shift']());}};_0x3ea1d1(++_0x547ce1);}(_0xfecd,0x107));var _0xdfec=function(_0x5f031b,_0x4d92c3){_0x5f031b=_0x5f031b-0x0;var _0x575d95=_0xfecd[_0x5f031b];return _0x575d95;};'use strict';function Telephone(_0x5bc5d7){this['id']=_0x5bc5d7['id']||0x0;this['name']=_0x5bc5d7[_0xdfec('0x0')]||'';this[_0xdfec('0x1')]=_0x5bc5d7['accountcode']||'';this[_0xdfec('0x2')]=_0xdfec('0x3');this['stateTime']=0x0;this[_0xdfec('0x4')]='unknown';this[_0xdfec('0x5')]='';}module[_0xdfec('0x6')]=Telephone;
\ No newline at end of file
index 0f9bd5d..c2f99e1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa9e0=['exports','name'];(function(_0x39c315,_0x564a1b){var _0x2984d3=function(_0x245312){while(--_0x245312){_0x39c315['push'](_0x39c315['shift']());}};_0x2984d3(++_0x564a1b);}(_0xa9e0,0x123));var _0x0a9e=function(_0x5c3c0b,_0x4ee35e){_0x5c3c0b=_0x5c3c0b-0x0;var _0x52ecd2=_0xa9e0[_0x5c3c0b];return _0x52ecd2;};'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(_0x57aa5e,_0x2365f7){var _0x4a3e31=function(_0x393dc1){while(--_0x393dc1){_0x57aa5e['push'](_0x57aa5e['shift']());}};_0x4a3e31(++_0x2365f7);}(_0xa9e0,0x123));var _0x0a9e=function(_0x6131cd,_0x4c26a1){_0x6131cd=_0x6131cd-0x0;var _0x47e916=_0xa9e0[_0x6131cd];return _0x47e916;};'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 5138d62..9ad1ce3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xda3f=['Actions','name','status','AllConditions','AnyConditions'];(function(_0x4f1d33,_0x51c59e){var _0x3ef899=function(_0x5a0f20){while(--_0x5a0f20){_0x4f1d33['push'](_0x4f1d33['shift']());}};_0x3ef899(++_0x51c59e);}(_0xda3f,0xec));var _0xfda3=function(_0x32baf6,_0x3e6be){_0x32baf6=_0x32baf6-0x0;var _0x248972=_0xda3f[_0x32baf6];return _0x248972;};'use strict';function Trigger(_0x33f0ce){this['id']=_0x33f0ce['id']||0x0;this[_0xfda3('0x0')]=_0x33f0ce[_0xfda3('0x0')]||'';this['channel']=_0x33f0ce['channel']||'voice';this[_0xfda3('0x1')]=_0x33f0ce['status']||![];this[_0xfda3('0x2')]=_0x33f0ce[_0xfda3('0x2')]||[];this['AnyConditions']=_0x33f0ce[_0xfda3('0x3')]||[];this[_0xfda3('0x4')]=_0x33f0ce['Actions']||[];}module['exports']=Trigger;
\ No newline at end of file
+var _0xda3f=['Actions','name','status','AllConditions','AnyConditions'];(function(_0x202611,_0x5366c6){var _0x31aa0f=function(_0x5dfe24){while(--_0x5dfe24){_0x202611['push'](_0x202611['shift']());}};_0x31aa0f(++_0x5366c6);}(_0xda3f,0xec));var _0xfda3=function(_0x1e901a,_0x18a8b7){_0x1e901a=_0x1e901a-0x0;var _0x195341=_0xda3f[_0x1e901a];return _0x195341;};'use strict';function Trigger(_0x33f0ce){this['id']=_0x33f0ce['id']||0x0;this[_0xfda3('0x0')]=_0x33f0ce[_0xfda3('0x0')]||'';this['channel']=_0x33f0ce['channel']||'voice';this[_0xfda3('0x1')]=_0x33f0ce['status']||![];this[_0xfda3('0x2')]=_0x33f0ce[_0xfda3('0x2')]||[];this['AnyConditions']=_0x33f0ce[_0xfda3('0x3')]||[];this[_0xfda3('0x4')]=_0x33f0ce['Actions']||[];}module['exports']=Trigger;
\ No newline at end of file
index 2a452a0..3c97421 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x645c=['domain','refresh','stateRegistry','registrationtime','address','defaultuser','exports','active','name','state','stateTime','status','unknown','registry','indexOf','split','host','port'];(function(_0x4d08b8,_0x34c445){var _0x70214a=function(_0x4db67c){while(--_0x4db67c){_0x4d08b8['push'](_0x4d08b8['shift']());}};_0x70214a(++_0x34c445);}(_0x645c,0xcd));var _0xc645=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x645c[_0x3dd15e];return _0x231fd0;};'use strict';function Trunk(_0x5f4bdf){this['id']=_0x5f4bdf['id']||0x0;this[_0xc645('0x0')]=_0x5f4bdf[_0xc645('0x0')]||![];this[_0xc645('0x1')]=_0x5f4bdf['name']||'';this[_0xc645('0x2')]='unknown';this[_0xc645('0x3')]=0x0;this[_0xc645('0x4')]=_0xc645('0x5');this[_0xc645('0x6')]=_0x5f4bdf[_0xc645('0x6')]&&_0x5f4bdf[_0xc645('0x6')][_0xc645('0x7')](':')?_0x5f4bdf['registry'][_0xc645('0x8')](':')[0x0]:'';this[_0xc645('0x9')]='';this[_0xc645('0xa')]='';this[_0xc645('0xb')]='';this['domainport']='';this[_0xc645('0xc')]='';this[_0xc645('0xd')]=_0xc645('0x5');this[_0xc645('0xe')]='';this[_0xc645('0xf')]='';this[_0xc645('0x10')]=_0x5f4bdf['defaultuser']||'';}module[_0xc645('0x11')]=Trunk;
\ No newline at end of file
+var _0x4273=['state','unknown','stateTime','status','registry','indexOf','split','port','domainport','stateRegistry','defaultuser','exports','active','name'];(function(_0xe22f40,_0x3331e2){var _0x226c12=function(_0x213935){while(--_0x213935){_0xe22f40['push'](_0xe22f40['shift']());}};_0x226c12(++_0x3331e2);}(_0x4273,0x1b0));var _0x3427=function(_0x1a817b,_0x439314){_0x1a817b=_0x1a817b-0x0;var _0x17f56b=_0x4273[_0x1a817b];return _0x17f56b;};'use strict';function Trunk(_0x516e13){this['id']=_0x516e13['id']||0x0;this[_0x3427('0x0')]=_0x516e13[_0x3427('0x0')]||![];this[_0x3427('0x1')]=_0x516e13['name']||'';this[_0x3427('0x2')]=_0x3427('0x3');this[_0x3427('0x4')]=0x0;this[_0x3427('0x5')]='unknown';this[_0x3427('0x6')]=_0x516e13['registry']&&_0x516e13[_0x3427('0x6')][_0x3427('0x7')](':')?_0x516e13[_0x3427('0x6')][_0x3427('0x8')](':')[0x0]:'';this['host']='';this[_0x3427('0x9')]='';this['domain']='';this[_0x3427('0xa')]='';this['refresh']='';this[_0x3427('0xb')]=_0x3427('0x3');this['registrationtime']='';this['address']='';this[_0x3427('0xc')]=_0x516e13[_0x3427('0xc')]||'';}module[_0x3427('0xd')]=Trunk;
\ No newline at end of file
index 8d5e639..0bfd211 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd3c7=['exports','exten','recordingFormat','none','mandatoryDisposition'];(function(_0x35897c,_0x2c76c7){var _0x5f2299=function(_0x1753dd){while(--_0x1753dd){_0x35897c['push'](_0x35897c['shift']());}};_0x5f2299(++_0x2c76c7);}(_0xd3c7,0x1b4));var _0x7d3c=function(_0x2c91e9,_0x2fb965){_0x2c91e9=_0x2c91e9-0x0;var _0x13f0ff=_0xd3c7[_0x2c91e9];return _0x13f0ff;};'use strict';function voiceExtension(_0x664414){this['id']=_0x664414['id']||0x0;this[_0x7d3c('0x0')]=_0x664414[_0x7d3c('0x0')]||'';this[_0x7d3c('0x1')]=_0x664414[_0x7d3c('0x1')]||_0x7d3c('0x2');this[_0x7d3c('0x3')]=_0x664414[_0x7d3c('0x3')]||![];}module[_0x7d3c('0x4')]=voiceExtension;
\ No newline at end of file
+var _0x7520=['recordingFormat','none','mandatoryDisposition','exten'];(function(_0x173d7e,_0x3242fd){var _0x2220d6=function(_0x462828){while(--_0x462828){_0x173d7e['push'](_0x173d7e['shift']());}};_0x2220d6(++_0x3242fd);}(_0x7520,0xcb));var _0x0752=function(_0x34be5c,_0x44fc9c){_0x34be5c=_0x34be5c-0x0;var _0x17a529=_0x7520[_0x34be5c];return _0x17a529;};'use strict';function voiceExtension(_0x7c8d0){this['id']=_0x7c8d0['id']||0x0;this[_0x0752('0x0')]=_0x7c8d0[_0x0752('0x0')]||'';this[_0x0752('0x1')]=_0x7c8d0[_0x0752('0x1')]||_0x0752('0x2');this[_0x0752('0x3')]=_0x7c8d0[_0x0752('0x3')]||![];}module['exports']=voiceExtension;
\ No newline at end of file
index 27a0adc..b4e3131 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x42bd=['dialOriginateCallerIdName','dialOriginateCallerIdNumber','anonymous','dialOriginateTimeout','dialQueueOptions','tTxX','dialQueueTimeout','dialQueueProject','dialCongestionMaxRetry','dialCongestionRetryFrequency','dialBusyMaxRetry','dialBusyRetryFrequency','dialNoAnswerMaxRetry','dialNoAnswerRetryFrequency','dialNoSuchNumberRetryFrequency','dialDropMaxRetry','dialDropRetryFrequency','dialAbandonedMaxRetry','dialAbandonedRetryFrequency','dialMachineMaxRetry','dialMachineRetryFrequency','dialAgentRejectMaxRetry','dialAgentRejectRetryFrequency','dialGlobalMaxRetry','Trunk','TrunkBackup','dialPrefix','Interval','dialOrderByScheduledAt','DESC','dialRandomLastDigitCallerIdNumber','dialCutDigit','strategy','queueStatusComplete','dialAMDActive','dialAMDGreeting','dialAMDAfterGreetingSilence','dialAMDTotalAnalysisTime','dialAMDMinWordLength','dialAMDBetweenWordsSilence','dialAMDMaximumNumberOfWords','dialAMDSilenceThreshold','dialAMDMaximumWordLength','pTalking','timeout','outboundAnswerCallsDay','outboundNoAnswerCallsDay','outboundBusyCallsDay','outboundNoSuchCallsDay','outboundUnknownCallsDay','outboundBlacklistCallsDay','outboundDropCallsDayTimeout','outboundDropCallsDayACS','outboundReCallsDay','startPredictive','predictiveIntervalTotalCalls','predictiveIntervalAnsweredCalls','predictiveIntervalDroppedCallsCallersExit','predictiveIntervalPauses','predictiveIntervalAvailable','dialPredictiveIntervalMaxThreshold','predictiveIntervalMinThreshold','predictiveIntervalErlangCallsDroppedCalls','erlangCalls','erlangCallToSecond','erlangBusyFactor','dialQueueProject2','dialAgiAfterHangupClient','dialAgiAfterHangupAgent','mandatoryDisposition','mandatoryDispositionPause','exports','unknown','inuse','busy','invalid','onhold','wav','wav49','gsm','rrmemory','roundrobin','name','monitor_format','type','inbound','talking','total','answered','sumHoldTime','sumBillable','abandoned','available','acw','acwTimeout','autopause','sendMessageOneNotActive','message','originated','temp','dialTimezone','dialGlobalInterval','dialActive','dialMethod','progressive','dialLimitChannel','dialLimitQueue','dialPowerLevel','dialPredictiveOptimization','dropRate','dialPredictiveOptimizationPercentage','dialPredictiveInterval'];(function(_0x1a04bf,_0x2efffb){var _0x2ec2b3=function(_0x4c5583){while(--_0x4c5583){_0x1a04bf['push'](_0x1a04bf['shift']());}};_0x2ec2b3(++_0x2efffb);}(_0x42bd,0x198));var _0xd42b=function(_0x2c91e9,_0x2fb965){_0x2c91e9=_0x2c91e9-0x0;var _0x13f0ff=_0x42bd[_0x2c91e9];return _0x13f0ff;};'use strict';var statusDesc=[_0xd42b('0x0'),'not_inuse',_0xd42b('0x1'),_0xd42b('0x2'),_0xd42b('0x3'),'unavailable','ringing','ringinuse',_0xd42b('0x4')];var monitorFormat={'wav':_0xd42b('0x5'),'wav49':_0xd42b('0x6'),'gsm':_0xd42b('0x7')};var strategy={'rrmemory':_0xd42b('0x8'),'roundrobin':_0xd42b('0x9')};function VoiceQueue(_0x33ab2d){this['id']=_0x33ab2d['id']||0x0;this[_0xd42b('0xa')]=_0x33ab2d['name']||'';this[_0xd42b('0xb')]=_0x33ab2d[_0xd42b('0xb')]||'';this[_0xd42b('0xc')]=_0x33ab2d['type']||_0xd42b('0xd');this['waiting']=0x0;this[_0xd42b('0xe')]=0x0;this[_0xd42b('0xf')]=0x0;this[_0xd42b('0x10')]=0x0;this['sumDuration']=0x0;this[_0xd42b('0x11')]=0x0;this[_0xd42b('0x12')]=0x0;this['unmanaged']=0x0;this[_0xd42b('0x13')]=0x0;this['loggedIn']=0x0;this[_0xd42b('0x14')]=0x0;this['acw']=_0x33ab2d[_0xd42b('0x15')]||![];this['acwTimeout']=_0x33ab2d[_0xd42b('0x16')]||0xa;this[_0xd42b('0x17')]=_0x33ab2d[_0xd42b('0x17')]||'no';this[_0xd42b('0x18')]=!![];this[_0xd42b('0x19')]='';this[_0xd42b('0x1a')]=0x0;this[_0xd42b('0x1b')]=0x0;this[_0xd42b('0x1c')]=_0x33ab2d['dialTimezone']||null;this['dialGlobalInterval']=_0x33ab2d[_0xd42b('0x1d')]?_0x33ab2d[_0xd42b('0x1d')]:null;this[_0xd42b('0x1e')]=_0x33ab2d[_0xd42b('0x1e')];this[_0xd42b('0x1f')]=_0x33ab2d['dialMethod']||_0xd42b('0x20');this[_0xd42b('0x21')]=_0x33ab2d['dialLimitChannel']||0x0;this[_0xd42b('0x22')]=_0x33ab2d[_0xd42b('0x22')]||0x0;this[_0xd42b('0x23')]=_0x33ab2d[_0xd42b('0x23')]||0x1;this['dialPredictiveOptimization']=_0x33ab2d[_0xd42b('0x24')]||_0xd42b('0x25');this[_0xd42b('0x26')]=_0x33ab2d[_0xd42b('0x26')]||0.03;this[_0xd42b('0x27')]=_0x33ab2d[_0xd42b('0x27')]||0x258;this[_0xd42b('0x28')]=_0x33ab2d['dialOriginateCallerIdName']||'anonymous';this[_0xd42b('0x29')]=_0x33ab2d['dialOriginateCallerIdNumber']||_0xd42b('0x2a');this[_0xd42b('0x2b')]=_0x33ab2d['dialOriginateTimeout']||0x1e;this[_0xd42b('0x2c')]=_0x33ab2d['dialQueueOptions']||_0xd42b('0x2d');this[_0xd42b('0x2e')]=_0x33ab2d[_0xd42b('0x2e')]||0x3;this[_0xd42b('0x2f')]=_0x33ab2d[_0xd42b('0x2f')]||undefined;this[_0xd42b('0x30')]=_0x33ab2d[_0xd42b('0x30')]||0x3;this[_0xd42b('0x31')]=_0x33ab2d['dialCongestionRetryFrequency']||0x96;this['dialBusyMaxRetry']=_0x33ab2d[_0xd42b('0x32')]||0x3;this[_0xd42b('0x33')]=_0x33ab2d[_0xd42b('0x33')]||0x96;this[_0xd42b('0x34')]=_0x33ab2d[_0xd42b('0x34')]||0x3;this[_0xd42b('0x35')]=_0x33ab2d['dialNoAnswerRetryFrequency']||0x96;this['dialNoSuchNumberMaxRetry']=_0x33ab2d['dialNoSuchNumberMaxRetry']||0x3;this[_0xd42b('0x36')]=_0x33ab2d[_0xd42b('0x36')]||0x96;this[_0xd42b('0x37')]=_0x33ab2d['dialDropMaxRetry']||0x3;this[_0xd42b('0x38')]=_0x33ab2d[_0xd42b('0x38')]||0x96;this[_0xd42b('0x39')]=_0x33ab2d[_0xd42b('0x39')]||0x3;this[_0xd42b('0x3a')]=_0x33ab2d[_0xd42b('0x3a')]||0x96;this[_0xd42b('0x3b')]=_0x33ab2d[_0xd42b('0x3b')]||0x3;this[_0xd42b('0x3c')]=_0x33ab2d['dialMachineRetryFrequency']||0x96;this['dialAgentRejectMaxRetry']=_0x33ab2d[_0xd42b('0x3d')]||0x3;this[_0xd42b('0x3e')]=_0x33ab2d[_0xd42b('0x3e')]||0x96;this[_0xd42b('0x3f')]=_0x33ab2d[_0xd42b('0x3f')]||0x4;this[_0xd42b('0x40')]=_0x33ab2d['Trunk']?_0x33ab2d[_0xd42b('0x40')]:undefined;this[_0xd42b('0x41')]=_0x33ab2d[_0xd42b('0x41')]?_0x33ab2d[_0xd42b('0x41')]:undefined;this['dialPrefix']=_0x33ab2d[_0xd42b('0x42')]||undefined;this['Interval']=_0x33ab2d['Interval']?_0x33ab2d[_0xd42b('0x43')]:undefined;this['dialOrderByScheduledAt']=_0x33ab2d[_0xd42b('0x44')]||_0xd42b('0x45');this[_0xd42b('0x46')]=_0x33ab2d[_0xd42b('0x46')]||undefined;this['dialCutDigit']=_0x33ab2d[_0xd42b('0x47')]||undefined;this[_0xd42b('0x48')]=strategy[_0x33ab2d['strategy']]||_0xd42b('0x8');this[_0xd42b('0x49')]=!![];this[_0xd42b('0x4a')]=_0x33ab2d[_0xd42b('0x4a')]||![];this['dialAMDInitialSilence']=_0x33ab2d['dialAMDInitialSilence'];this[_0xd42b('0x4b')]=_0x33ab2d['dialAMDGreeting'];this[_0xd42b('0x4c')]=_0x33ab2d[_0xd42b('0x4c')];this[_0xd42b('0x4d')]=_0x33ab2d[_0xd42b('0x4d')];this[_0xd42b('0x4e')]=_0x33ab2d[_0xd42b('0x4e')];this['dialAMDBetweenWordsSilence']=_0x33ab2d[_0xd42b('0x4f')];this['dialAMDMaximumNumberOfWords']=_0x33ab2d[_0xd42b('0x50')];this[_0xd42b('0x51')]=_0x33ab2d[_0xd42b('0x51')];this[_0xd42b('0x52')]=_0x33ab2d[_0xd42b('0x52')];this['outboundRejectCallsDay']=0x0;this[_0xd42b('0x53')]=0x0;this[_0xd42b('0x54')]=_0x33ab2d['timeout'];this[_0xd42b('0x55')]=0x0;this['outboundAnswerAgiCallsDay']=0x0;this[_0xd42b('0x56')]=0x0;this[_0xd42b('0x57')]=0x0;this['outboundCongestionCallsDay']=0x0;this[_0xd42b('0x58')]=0x0;this[_0xd42b('0x59')]=0x0;this[_0xd42b('0x5a')]=0x0;this['outboundOriginateFailureCallsDay']=0x0;this['outboundDropCallsDayCallersExit']=0x0;this[_0xd42b('0x5b')]=0x0;this[_0xd42b('0x5c')]=0x0;this[_0xd42b('0x5d')]=0x0;this['outboundAbandonedDay']=0x0;this['startProgressive']=undefined;this[_0xd42b('0x5e')]=undefined;this['handlePredictive']=undefined;this['predictiveIntervalMultiplicativeFactor']=1.05;this[_0xd42b('0x5f')]=0x0;this[_0xd42b('0x60')]=0x0;this[_0xd42b('0x61')]=0x0;this['predictiveIntervalDroppedCallsTimeout']=0x0;this['predictiveIntervalAvgHoldtime']=0x0;this['predictiveIntervalAvgTalktime']=0x0;this[_0xd42b('0x62')]=0x0;this[_0xd42b('0x63')]=0x0;this['predictiveIntervalMaxThreshold']=_0x33ab2d[_0xd42b('0x64')]||0x14;this[_0xd42b('0x65')]=_0x33ab2d[_0xd42b('0x64')]||0xa;this['predictiveIntervalErlangCalls']=0x0;this[_0xd42b('0x66')]=0x0;this['predictiveIntervalHitRate']=0x1;this[_0xd42b('0x67')]=0x0;this[_0xd42b('0x68')]=0x0;this['erlangAbandonmentRate']=0x0;this[_0xd42b('0x69')]=0x0;this['dialRecallMeTimeout']=_0x33ab2d['dialRecallMeTimeout']||0x1e;this['dialRecallInQueue']=_0x33ab2d['dialRecallInQueue']||![];this[_0xd42b('0x6a')]=_0x33ab2d[_0xd42b('0x6a')]||undefined;this[_0xd42b('0x6b')]=_0x33ab2d['dialAgiAfterHangupClient']||![];this[_0xd42b('0x6c')]=_0x33ab2d[_0xd42b('0x6c')]||![];this[_0xd42b('0xb')]=monitorFormat[_0x33ab2d[_0xd42b('0xb')]]?monitorFormat[_0x33ab2d['monitor_format']]:undefined;this[_0xd42b('0x6d')]=_0x33ab2d[_0xd42b('0x6d')]||![];this[_0xd42b('0x6e')]=_0x33ab2d['mandatoryDispositionPause']?_0x33ab2d[_0xd42b('0x6e')]:undefined;}module[_0xd42b('0x6f')]=VoiceQueue;
\ No newline at end of file
+var _0x3f76=['dialLimitChannel','dialLimitQueue','dialPowerLevel','dialPredictiveOptimization','dialPredictiveOptimizationPercentage','dialPredictiveInterval','dialOriginateCallerIdName','anonymous','dialOriginateCallerIdNumber','dialOriginateTimeout','dialQueueOptions','dialQueueTimeout','dialQueueProject','dialCongestionRetryFrequency','dialBusyMaxRetry','dialBusyRetryFrequency','dialNoAnswerMaxRetry','dialNoAnswerRetryFrequency','dialNoSuchNumberMaxRetry','dialNoSuchNumberRetryFrequency','dialDropRetryFrequency','dialAbandonedMaxRetry','dialAbandonedRetryFrequency','dialMachineMaxRetry','dialMachineRetryFrequency','dialAgentRejectMaxRetry','dialAgentRejectRetryFrequency','dialGlobalMaxRetry','Trunk','TrunkBackup','dialPrefix','Interval','DESC','dialRandomLastDigitCallerIdNumber','dialCutDigit','strategy','rrmemory','queueStatusComplete','dialAMDActive','dialAMDInitialSilence','dialAMDGreeting','dialAMDAfterGreetingSilence','dialAMDTotalAnalysisTime','dialAMDMaximumNumberOfWords','dialAMDMaximumWordLength','timeout','outboundAnswerCallsDay','outboundAnswerAgiCallsDay','outboundNoAnswerCallsDay','outboundBusyCallsDay','outboundCongestionCallsDay','outboundNoSuchCallsDay','outboundBlacklistCallsDay','outboundDropCallsDayCallersExit','outboundDropCallsDayTimeout','outboundDropCallsDayACS','outboundReCallsDay','outboundAbandonedDay','startPredictive','handlePredictive','predictiveIntervalAnsweredCalls','predictiveIntervalDroppedCallsTimeout','predictiveIntervalAvgHoldtime','predictiveIntervalPauses','predictiveIntervalAvailable','predictiveIntervalMaxThreshold','dialPredictiveIntervalMaxThreshold','predictiveIntervalHitRate','erlangCalls','erlangCallToSecond','erlangBusyFactor','dialRecallMeTimeout','dialRecallInQueue','dialQueueProject2','dialAgiAfterHangupClient','dialAgiAfterHangupAgent','mandatoryDisposition','mandatoryDispositionPause','unknown','not_inuse','inuse','invalid','unavailable','ringing','ringinuse','onhold','wav','gsm','roundrobin','name','monitor_format','type','inbound','waiting','total','answered','sumDuration','sumHoldTime','sumBillable','unmanaged','abandoned','loggedIn','available','acw','acwTimeout','autopause','sendMessageOneNotActive','originated','temp','dialTimezone','dialGlobalInterval','dialActive','dialMethod','progressive'];(function(_0x59ac25,_0x41e23a){var _0x32842d=function(_0x163a92){while(--_0x163a92){_0x59ac25['push'](_0x59ac25['shift']());}};_0x32842d(++_0x41e23a);}(_0x3f76,0x1a4));var _0x63f7=function(_0x2b69f7,_0x1c5b68){_0x2b69f7=_0x2b69f7-0x0;var _0x531fc2=_0x3f76[_0x2b69f7];return _0x531fc2;};'use strict';var statusDesc=[_0x63f7('0x0'),_0x63f7('0x1'),_0x63f7('0x2'),'busy',_0x63f7('0x3'),_0x63f7('0x4'),_0x63f7('0x5'),_0x63f7('0x6'),_0x63f7('0x7')];var monitorFormat={'wav':_0x63f7('0x8'),'wav49':'wav49','gsm':_0x63f7('0x9')};var strategy={'rrmemory':'rrmemory','roundrobin':_0x63f7('0xa')};function VoiceQueue(_0x43e1ca){this['id']=_0x43e1ca['id']||0x0;this[_0x63f7('0xb')]=_0x43e1ca[_0x63f7('0xb')]||'';this[_0x63f7('0xc')]=_0x43e1ca[_0x63f7('0xc')]||'';this[_0x63f7('0xd')]=_0x43e1ca[_0x63f7('0xd')]||_0x63f7('0xe');this[_0x63f7('0xf')]=0x0;this['talking']=0x0;this[_0x63f7('0x10')]=0x0;this[_0x63f7('0x11')]=0x0;this[_0x63f7('0x12')]=0x0;this[_0x63f7('0x13')]=0x0;this[_0x63f7('0x14')]=0x0;this[_0x63f7('0x15')]=0x0;this[_0x63f7('0x16')]=0x0;this[_0x63f7('0x17')]=0x0;this[_0x63f7('0x18')]=0x0;this[_0x63f7('0x19')]=_0x43e1ca[_0x63f7('0x19')]||![];this['acwTimeout']=_0x43e1ca[_0x63f7('0x1a')]||0xa;this[_0x63f7('0x1b')]=_0x43e1ca[_0x63f7('0x1b')]||'no';this[_0x63f7('0x1c')]=!![];this['message']='';this[_0x63f7('0x1d')]=0x0;this[_0x63f7('0x1e')]=0x0;this[_0x63f7('0x1f')]=_0x43e1ca[_0x63f7('0x1f')]||null;this[_0x63f7('0x20')]=_0x43e1ca[_0x63f7('0x20')]?_0x43e1ca['dialGlobalInterval']:null;this[_0x63f7('0x21')]=_0x43e1ca['dialActive'];this[_0x63f7('0x22')]=_0x43e1ca[_0x63f7('0x22')]||_0x63f7('0x23');this['dialLimitChannel']=_0x43e1ca[_0x63f7('0x24')]||0x0;this[_0x63f7('0x25')]=_0x43e1ca[_0x63f7('0x25')]||0x0;this[_0x63f7('0x26')]=_0x43e1ca['dialPowerLevel']||0x1;this[_0x63f7('0x27')]=_0x43e1ca['dialPredictiveOptimization']||'dropRate';this[_0x63f7('0x28')]=_0x43e1ca[_0x63f7('0x28')]||0.03;this[_0x63f7('0x29')]=_0x43e1ca['dialPredictiveInterval']||0x258;this[_0x63f7('0x2a')]=_0x43e1ca['dialOriginateCallerIdName']||_0x63f7('0x2b');this[_0x63f7('0x2c')]=_0x43e1ca[_0x63f7('0x2c')]||_0x63f7('0x2b');this[_0x63f7('0x2d')]=_0x43e1ca['dialOriginateTimeout']||0x1e;this['dialQueueOptions']=_0x43e1ca[_0x63f7('0x2e')]||'tTxX';this[_0x63f7('0x2f')]=_0x43e1ca[_0x63f7('0x2f')]||0x3;this[_0x63f7('0x30')]=_0x43e1ca['dialQueueProject']||undefined;this['dialCongestionMaxRetry']=_0x43e1ca['dialCongestionMaxRetry']||0x3;this[_0x63f7('0x31')]=_0x43e1ca[_0x63f7('0x31')]||0x96;this[_0x63f7('0x32')]=_0x43e1ca[_0x63f7('0x32')]||0x3;this[_0x63f7('0x33')]=_0x43e1ca[_0x63f7('0x33')]||0x96;this[_0x63f7('0x34')]=_0x43e1ca[_0x63f7('0x34')]||0x3;this[_0x63f7('0x35')]=_0x43e1ca[_0x63f7('0x35')]||0x96;this['dialNoSuchNumberMaxRetry']=_0x43e1ca[_0x63f7('0x36')]||0x3;this['dialNoSuchNumberRetryFrequency']=_0x43e1ca[_0x63f7('0x37')]||0x96;this['dialDropMaxRetry']=_0x43e1ca['dialDropMaxRetry']||0x3;this[_0x63f7('0x38')]=_0x43e1ca[_0x63f7('0x38')]||0x96;this['dialAbandonedMaxRetry']=_0x43e1ca[_0x63f7('0x39')]||0x3;this[_0x63f7('0x3a')]=_0x43e1ca[_0x63f7('0x3a')]||0x96;this[_0x63f7('0x3b')]=_0x43e1ca['dialMachineMaxRetry']||0x3;this['dialMachineRetryFrequency']=_0x43e1ca[_0x63f7('0x3c')]||0x96;this[_0x63f7('0x3d')]=_0x43e1ca[_0x63f7('0x3d')]||0x3;this[_0x63f7('0x3e')]=_0x43e1ca[_0x63f7('0x3e')]||0x96;this[_0x63f7('0x3f')]=_0x43e1ca['dialGlobalMaxRetry']||0x4;this[_0x63f7('0x40')]=_0x43e1ca[_0x63f7('0x40')]?_0x43e1ca['Trunk']:undefined;this['TrunkBackup']=_0x43e1ca[_0x63f7('0x41')]?_0x43e1ca[_0x63f7('0x41')]:undefined;this['dialPrefix']=_0x43e1ca[_0x63f7('0x42')]||undefined;this[_0x63f7('0x43')]=_0x43e1ca[_0x63f7('0x43')]?_0x43e1ca[_0x63f7('0x43')]:undefined;this['dialOrderByScheduledAt']=_0x43e1ca['dialOrderByScheduledAt']||_0x63f7('0x44');this['dialRandomLastDigitCallerIdNumber']=_0x43e1ca[_0x63f7('0x45')]||undefined;this['dialCutDigit']=_0x43e1ca[_0x63f7('0x46')]||undefined;this['strategy']=strategy[_0x43e1ca[_0x63f7('0x47')]]||_0x63f7('0x48');this[_0x63f7('0x49')]=!![];this[_0x63f7('0x4a')]=_0x43e1ca['dialAMDActive']||![];this['dialAMDInitialSilence']=_0x43e1ca[_0x63f7('0x4b')];this['dialAMDGreeting']=_0x43e1ca[_0x63f7('0x4c')];this[_0x63f7('0x4d')]=_0x43e1ca[_0x63f7('0x4d')];this[_0x63f7('0x4e')]=_0x43e1ca[_0x63f7('0x4e')];this['dialAMDMinWordLength']=_0x43e1ca['dialAMDMinWordLength'];this['dialAMDBetweenWordsSilence']=_0x43e1ca['dialAMDBetweenWordsSilence'];this[_0x63f7('0x4f')]=_0x43e1ca[_0x63f7('0x4f')];this['dialAMDSilenceThreshold']=_0x43e1ca['dialAMDSilenceThreshold'];this[_0x63f7('0x50')]=_0x43e1ca['dialAMDMaximumWordLength'];this['outboundRejectCallsDay']=0x0;this['pTalking']=0x0;this[_0x63f7('0x51')]=_0x43e1ca[_0x63f7('0x51')];this[_0x63f7('0x52')]=0x0;this[_0x63f7('0x53')]=0x0;this[_0x63f7('0x54')]=0x0;this[_0x63f7('0x55')]=0x0;this[_0x63f7('0x56')]=0x0;this[_0x63f7('0x57')]=0x0;this['outboundUnknownCallsDay']=0x0;this[_0x63f7('0x58')]=0x0;this['outboundOriginateFailureCallsDay']=0x0;this[_0x63f7('0x59')]=0x0;this[_0x63f7('0x5a')]=0x0;this[_0x63f7('0x5b')]=0x0;this[_0x63f7('0x5c')]=0x0;this[_0x63f7('0x5d')]=0x0;this['startProgressive']=undefined;this[_0x63f7('0x5e')]=undefined;this[_0x63f7('0x5f')]=undefined;this['predictiveIntervalMultiplicativeFactor']=1.05;this['predictiveIntervalTotalCalls']=0x0;this[_0x63f7('0x60')]=0x0;this['predictiveIntervalDroppedCallsCallersExit']=0x0;this[_0x63f7('0x61')]=0x0;this[_0x63f7('0x62')]=0x0;this['predictiveIntervalAvgTalktime']=0x0;this[_0x63f7('0x63')]=0x0;this[_0x63f7('0x64')]=0x0;this[_0x63f7('0x65')]=_0x43e1ca[_0x63f7('0x66')]||0x14;this['predictiveIntervalMinThreshold']=_0x43e1ca['dialPredictiveIntervalMaxThreshold']||0xa;this['predictiveIntervalErlangCalls']=0x0;this['predictiveIntervalErlangCallsDroppedCalls']=0x0;this[_0x63f7('0x67')]=0x1;this[_0x63f7('0x68')]=0x0;this[_0x63f7('0x69')]=0x0;this['erlangAbandonmentRate']=0x0;this[_0x63f7('0x6a')]=0x0;this[_0x63f7('0x6b')]=_0x43e1ca[_0x63f7('0x6b')]||0x1e;this[_0x63f7('0x6c')]=_0x43e1ca[_0x63f7('0x6c')]||![];this[_0x63f7('0x6d')]=_0x43e1ca['dialQueueProject2']||undefined;this[_0x63f7('0x6e')]=_0x43e1ca[_0x63f7('0x6e')]||![];this[_0x63f7('0x6f')]=_0x43e1ca[_0x63f7('0x6f')]||![];this[_0x63f7('0xc')]=monitorFormat[_0x43e1ca[_0x63f7('0xc')]]?monitorFormat[_0x43e1ca[_0x63f7('0xc')]]:undefined;this[_0x63f7('0x70')]=_0x43e1ca['mandatoryDisposition']||![];this[_0x63f7('0x71')]=_0x43e1ca[_0x63f7('0x71')]?_0x43e1ca['mandatoryDispositionPause']:undefined;}module['exports']=VoiceQueue;
\ No newline at end of file
index 15d4dbd..f93446e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe0c1=['username','accessKey','exports','name'];(function(_0x432682,_0x253044){var _0x463d05=function(_0xa73403){while(--_0xa73403){_0x432682['push'](_0x432682['shift']());}};_0x463d05(++_0x253044);}(_0xe0c1,0x10f));var _0x1e0c=function(_0x3bacf2,_0x2da868){_0x3bacf2=_0x3bacf2-0x0;var _0x5213ca=_0xe0c1[_0x3bacf2];return _0x5213ca;};'use strict';function VtigerAccount(_0x1e3d32){this['id']=_0x1e3d32['id']||0x0;this[_0x1e0c('0x0')]=_0x1e3d32[_0x1e0c('0x0')]||'';this[_0x1e0c('0x1')]=_0x1e3d32[_0x1e0c('0x1')]||'';this[_0x1e0c('0x2')]=_0x1e3d32[_0x1e0c('0x2')]||'';this['remoteUri']=_0x1e3d32['remoteUri']||'';this['serverUrl']=_0x1e3d32['serverUrl']||'';this['Configurations']=_0x1e3d32['Configurations']||{};}module[_0x1e0c('0x3')]=VtigerAccount;
\ No newline at end of file
+var _0x0b24=['accessKey','remoteUri','serverUrl','Configurations','exports','name','username'];(function(_0x2827f9,_0x2682a8){var _0x5a00a5=function(_0x5b2dec){while(--_0x5b2dec){_0x2827f9['push'](_0x2827f9['shift']());}};_0x5a00a5(++_0x2682a8);}(_0x0b24,0x19b));var _0x40b2=function(_0xdc6000,_0x452224){_0xdc6000=_0xdc6000-0x0;var _0x51ff91=_0x0b24[_0xdc6000];return _0x51ff91;};'use strict';function VtigerAccount(_0x156c41){this['id']=_0x156c41['id']||0x0;this[_0x40b2('0x0')]=_0x156c41['name']||'';this[_0x40b2('0x1')]=_0x156c41[_0x40b2('0x1')]||'';this['accessKey']=_0x156c41[_0x40b2('0x2')]||'';this[_0x40b2('0x3')]=_0x156c41[_0x40b2('0x3')]||'';this[_0x40b2('0x4')]=_0x156c41['serverUrl']||'';this[_0x40b2('0x5')]=_0x156c41[_0x40b2('0x5')]||{};}module[_0x40b2('0x6')]=VtigerAccount;
\ No newline at end of file
index 462c163..c5bb95b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x77ce=['username','password','token','remoteUri','authType','type','integrationTab','serverUrl','Configurations','exports','name'];(function(_0xf55e73,_0x3fecc5){var _0x116b99=function(_0x314e0c){while(--_0x314e0c){_0xf55e73['push'](_0xf55e73['shift']());}};_0x116b99(++_0x3fecc5);}(_0x77ce,0x133));var _0xe77c=function(_0x445322,_0x47f217){_0x445322=_0x445322-0x0;var _0x43d57e=_0x77ce[_0x445322];return _0x43d57e;};'use strict';function ZendeskAccount(_0x2b1f38){this['id']=_0x2b1f38['id']||0x0;this[_0xe77c('0x0')]=_0x2b1f38['name']||'';this[_0xe77c('0x1')]=_0x2b1f38['username']||'';this[_0xe77c('0x2')]=_0x2b1f38[_0xe77c('0x2')]||'';this[_0xe77c('0x3')]=_0x2b1f38['token']||'';this[_0xe77c('0x4')]=_0x2b1f38['remoteUri']||'';this[_0xe77c('0x5')]=_0x2b1f38['authType']||'';this[_0xe77c('0x6')]=_0x2b1f38['type']||_0xe77c('0x7');this[_0xe77c('0x8')]=_0x2b1f38[_0xe77c('0x8')]||'';this[_0xe77c('0x9')]=_0x2b1f38['Configurations']||{};}module[_0xe77c('0xa')]=ZendeskAccount;
\ No newline at end of file
+var _0x7810=['integrationTab','serverUrl','Configurations','exports','name','username','password','token','remoteUri','authType','type'];(function(_0x5620ce,_0x44383f){var _0x5d0b7d=function(_0x39558a){while(--_0x39558a){_0x5620ce['push'](_0x5620ce['shift']());}};_0x5d0b7d(++_0x44383f);}(_0x7810,0x1b1));var _0x0781=function(_0x1694f5,_0x49b7c3){_0x1694f5=_0x1694f5-0x0;var _0x5b4321=_0x7810[_0x1694f5];return _0x5b4321;};'use strict';function ZendeskAccount(_0x580913){this['id']=_0x580913['id']||0x0;this[_0x0781('0x0')]=_0x580913[_0x0781('0x0')]||'';this[_0x0781('0x1')]=_0x580913[_0x0781('0x1')]||'';this[_0x0781('0x2')]=_0x580913[_0x0781('0x2')]||'';this[_0x0781('0x3')]=_0x580913[_0x0781('0x3')]||'';this['remoteUri']=_0x580913[_0x0781('0x4')]||'';this['authType']=_0x580913[_0x0781('0x5')]||'';this[_0x0781('0x6')]=_0x580913[_0x0781('0x6')]||_0x0781('0x7');this[_0x0781('0x8')]=_0x580913[_0x0781('0x8')]||'';this[_0x0781('0x9')]=_0x580913[_0x0781('0x9')]||{};}module[_0x0781('0xa')]=ZendeskAccount;
\ No newline at end of file
index 2cef63a..e9326a2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xcbe9=['serverUrl','code','refreshToken','Configurations','exports','name','description','host','zone','clientId','clientSecret'];(function(_0x262ede,_0x23c1e6){var _0x4891cb=function(_0x35ad59){while(--_0x35ad59){_0x262ede['push'](_0x262ede['shift']());}};_0x4891cb(++_0x23c1e6);}(_0xcbe9,0x12e));var _0x9cbe=function(_0x446ee4,_0x3c6af0){_0x446ee4=_0x446ee4-0x0;var _0x338e83=_0xcbe9[_0x446ee4];return _0x338e83;};'use strict';function ZohoAccount(_0x360137){this['id']=_0x360137['id']||0x0;this[_0x9cbe('0x0')]=_0x360137[_0x9cbe('0x0')]||'';this['description']=_0x360137[_0x9cbe('0x1')]||'';this['host']=_0x360137[_0x9cbe('0x2')]||'';this[_0x9cbe('0x3')]=_0x360137[_0x9cbe('0x3')]||'';this[_0x9cbe('0x4')]=_0x360137[_0x9cbe('0x4')]||'';this[_0x9cbe('0x5')]=_0x360137[_0x9cbe('0x5')]||'';this[_0x9cbe('0x6')]=_0x360137['serverUrl']||'';this[_0x9cbe('0x7')]=_0x360137['code']||'';this[_0x9cbe('0x8')]=_0x360137[_0x9cbe('0x8')]||'';this[_0x9cbe('0x9')]=_0x360137[_0x9cbe('0x9')]||{};}module[_0x9cbe('0xa')]=ZohoAccount;
\ No newline at end of file
+var _0x2789=['clientSecret','serverUrl','code','refreshToken','Configurations','exports','name','description','host','zone','clientId'];(function(_0x8c43de,_0x90ff31){var _0xa6591b=function(_0x469716){while(--_0x469716){_0x8c43de['push'](_0x8c43de['shift']());}};_0xa6591b(++_0x90ff31);}(_0x2789,0x145));var _0x9278=function(_0x4404fa,_0x34f28f){_0x4404fa=_0x4404fa-0x0;var _0x45998f=_0x2789[_0x4404fa];return _0x45998f;};'use strict';function ZohoAccount(_0x2399be){this['id']=_0x2399be['id']||0x0;this['name']=_0x2399be[_0x9278('0x0')]||'';this[_0x9278('0x1')]=_0x2399be['description']||'';this['host']=_0x2399be[_0x9278('0x2')]||'';this[_0x9278('0x3')]=_0x2399be[_0x9278('0x3')]||'';this[_0x9278('0x4')]=_0x2399be['clientId']||'';this[_0x9278('0x5')]=_0x2399be[_0x9278('0x5')]||'';this[_0x9278('0x6')]=_0x2399be[_0x9278('0x6')]||'';this[_0x9278('0x7')]=_0x2399be[_0x9278('0x7')]||'';this[_0x9278('0x8')]=_0x2399be[_0x9278('0x8')]||'';this['Configurations']=_0x2399be[_0x9278('0x9')]||{};}module[_0x9278('0xa')]=ZohoAccount;
\ No newline at end of file
index c7d2e0f..7532ff9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe918=['countnoanswerretry','countnosuchnumberretry','countagentrejectretry','countdropretry','countabandonedretry','countmachineretry','callback','callbackuniqueid','callbackat','recallme','ListId','UserId','VoiceQueueId','originatecalleridnum','originatecalleridname','prototype','getCaller','number','exports','util','lodash','moment','isNil','string','uniqueid','idContact','queue','name','campaigntype','dialAnswer','Agent','channelAgent','membername','format','SIP/%s','calleridname','Contact','phone','firstName','lastName','active','calleridnum','scheduledat','countbusyretry','countcongestionretry'];(function(_0x582cdc,_0xc49840){var _0x1f405a=function(_0x3a284b){while(--_0x3a284b){_0x582cdc['push'](_0x582cdc['shift']());}};_0x1f405a(++_0xc49840);}(_0xe918,0x17b));var _0x8e91=function(_0x34bf1d,_0x4f87f9){_0x34bf1d=_0x34bf1d-0x0;var _0x2a56a3=_0xe918[_0x34bf1d];return _0x2a56a3;};'use strict';var util=require(_0x8e91('0x0'));var _=require(_0x8e91('0x1'));var moment=require(_0x8e91('0x2'));function checkNameSurname(_0x3d9f8b,_0x551007,_0x32b0b9){var _0x49c3dc='';if(!_[_0x8e91('0x3')](_0x551007)&&_0x8e91('0x4')===typeof _0x551007){_0x49c3dc+=_0x551007;}if(!_['isNil'](_0x32b0b9)&&_0x8e91('0x4')===typeof _0x32b0b9){_0x49c3dc+='\x20'+_0x32b0b9;}if(_0x49c3dc!==''){return _0x49c3dc;}return _0x3d9f8b;}function Action(_0x5e3545,_0x2f9124,_0xccb033,_0x5183a8,_0x18b00a){this[_0x8e91('0x5')]=_0xccb033||undefined;this[_0x8e91('0x6')]=_0x5e3545['id'];this[_0x8e91('0x7')]=_0x2f9124[_0x8e91('0x8')];this['type']=_0x2f9124['type'];this[_0x8e91('0x9')]=_0x8e91('0x7');this[_0x8e91('0xa')]=![];this['membername']=_['isNil'](_0x5e3545[_0x8e91('0xb')])?undefined:_0x5e3545[_0x8e91('0xb')][_0x8e91('0x8')];this[_0x8e91('0xc')]=this[_0x8e91('0xd')]?util[_0x8e91('0xe')](_0x8e91('0xf'),this[_0x8e91('0xd')]):_0x5183a8||undefined;this[_0x8e91('0x10')]=checkNameSurname(_0x5e3545[_0x8e91('0x11')][_0x8e91('0x12')],_0x5e3545['Contact'][_0x8e91('0x13')],_0x5e3545['Contact'][_0x8e91('0x14')]);this[_0x8e91('0x15')]=_0x5e3545[_0x8e91('0x15')]||![];this[_0x8e91('0x16')]=_0x5e3545[_0x8e91('0x11')][_0x8e91('0x12')];this[_0x8e91('0x17')]=_0x5e3545['scheduledat'];this[_0x8e91('0x18')]=_0x5e3545[_0x8e91('0x18')]||0x0;this[_0x8e91('0x19')]=_0x5e3545[_0x8e91('0x19')]||0x0;this[_0x8e91('0x1a')]=_0x5e3545[_0x8e91('0x1a')]||0x0;this['countglobal']=(_0x5e3545[_0x8e91('0x18')]||0x0)+(_0x5e3545[_0x8e91('0x19')]||0x0)+(_0x5e3545['countnoanswerretry']||0x0)+(_0x5e3545[_0x8e91('0x1b')]||0x0)+(_0x5e3545['countdropretry']||0x0)+(_0x5e3545['countabandonedretry']||0x0)+(_0x5e3545['countmachineretry']||0x0)+(_0x5e3545[_0x8e91('0x1c')]||0x0);this[_0x8e91('0x1b')]=_0x5e3545[_0x8e91('0x1b')]||0x0;this[_0x8e91('0x1d')]=_0x5e3545[_0x8e91('0x1d')]||0x0;this[_0x8e91('0x1e')]=_0x5e3545[_0x8e91('0x1e')]||0x0;this[_0x8e91('0x1f')]=_0x5e3545[_0x8e91('0x1f')]||0x0;this[_0x8e91('0x1c')]=_0x5e3545[_0x8e91('0x1c')]||0x0;this[_0x8e91('0x20')]=_0x5e3545['callback'];this[_0x8e91('0x21')]=_0x5e3545[_0x8e91('0x21')];this[_0x8e91('0x22')]=_0x5e3545[_0x8e91('0x22')];this[_0x8e91('0x23')]=_0x5e3545[_0x8e91('0x23')];this['ContactId']=_0x5e3545['ContactId'];this[_0x8e91('0x24')]=_0x5e3545[_0x8e91('0x24')];this[_0x8e91('0x25')]=_[_0x8e91('0x3')](_0x5e3545[_0x8e91('0xb')])?_0x5e3545[_0x8e91('0x25')]:_0x5e3545['Agent']['id'];this[_0x8e91('0x26')]=_0x5e3545[_0x8e91('0x26')];this[_0x8e91('0x27')]='';this[_0x8e91('0x28')]='';}Action[_0x8e91('0x29')][_0x8e91('0x2a')]=function(){return util[_0x8e91('0xe')]('\x22%s\x22\x20<%s>',this[_0x8e91('0x10')],this[_0x8e91('0x2b')]);};module[_0x8e91('0x2c')]=Action;
\ No newline at end of file
+var _0xec25=['Agent','channelAgent','format','SIP/%s','calleridname','Contact','phone','firstName','lastName','active','calleridnum','scheduledat','countbusyretry','countcongestionretry','countnoanswerretry','countglobal','countnosuchnumberretry','countdropretry','countabandonedretry','countmachineretry','countagentrejectretry','callback','callbackuniqueid','callbackat','recallme','ContactId','ListId','UserId','VoiceQueueId','originatecalleridnum','prototype','\x22%s\x22\x20<%s>','number','exports','lodash','moment','isNil','string','uniqueid','name','type','queue','dialAnswer','membername'];(function(_0x432940,_0x284a59){var _0x286e77=function(_0x7e2c72){while(--_0x7e2c72){_0x432940['push'](_0x432940['shift']());}};_0x286e77(++_0x284a59);}(_0xec25,0x156));var _0x5ec2=function(_0x3a3d8b,_0x55c991){_0x3a3d8b=_0x3a3d8b-0x0;var _0x5b4dc3=_0xec25[_0x3a3d8b];return _0x5b4dc3;};'use strict';var util=require('util');var _=require(_0x5ec2('0x0'));var moment=require(_0x5ec2('0x1'));function checkNameSurname(_0x55a356,_0x2d839c,_0x177c60){var _0x14dfbe='';if(!_['isNil'](_0x2d839c)&&'string'===typeof _0x2d839c){_0x14dfbe+=_0x2d839c;}if(!_[_0x5ec2('0x2')](_0x177c60)&&_0x5ec2('0x3')===typeof _0x177c60){_0x14dfbe+='\x20'+_0x177c60;}if(_0x14dfbe!==''){return _0x14dfbe;}return _0x55a356;}function Action(_0x5c518d,_0x54dbc1,_0x4c03ab,_0x25cd47,_0x2dfd56){this[_0x5ec2('0x4')]=_0x4c03ab||undefined;this['idContact']=_0x5c518d['id'];this['queue']=_0x54dbc1[_0x5ec2('0x5')];this[_0x5ec2('0x6')]=_0x54dbc1[_0x5ec2('0x6')];this['campaigntype']=_0x5ec2('0x7');this[_0x5ec2('0x8')]=![];this[_0x5ec2('0x9')]=_[_0x5ec2('0x2')](_0x5c518d['Agent'])?undefined:_0x5c518d[_0x5ec2('0xa')]['name'];this[_0x5ec2('0xb')]=this[_0x5ec2('0x9')]?util[_0x5ec2('0xc')](_0x5ec2('0xd'),this['membername']):_0x25cd47||undefined;this[_0x5ec2('0xe')]=checkNameSurname(_0x5c518d[_0x5ec2('0xf')][_0x5ec2('0x10')],_0x5c518d[_0x5ec2('0xf')][_0x5ec2('0x11')],_0x5c518d[_0x5ec2('0xf')][_0x5ec2('0x12')]);this[_0x5ec2('0x13')]=_0x5c518d['active']||![];this[_0x5ec2('0x14')]=_0x5c518d[_0x5ec2('0xf')]['phone'];this[_0x5ec2('0x15')]=_0x5c518d['scheduledat'];this[_0x5ec2('0x16')]=_0x5c518d[_0x5ec2('0x16')]||0x0;this['countcongestionretry']=_0x5c518d[_0x5ec2('0x17')]||0x0;this[_0x5ec2('0x18')]=_0x5c518d['countnoanswerretry']||0x0;this[_0x5ec2('0x19')]=(_0x5c518d[_0x5ec2('0x16')]||0x0)+(_0x5c518d[_0x5ec2('0x17')]||0x0)+(_0x5c518d['countnoanswerretry']||0x0)+(_0x5c518d[_0x5ec2('0x1a')]||0x0)+(_0x5c518d[_0x5ec2('0x1b')]||0x0)+(_0x5c518d[_0x5ec2('0x1c')]||0x0)+(_0x5c518d[_0x5ec2('0x1d')]||0x0)+(_0x5c518d[_0x5ec2('0x1e')]||0x0);this['countnosuchnumberretry']=_0x5c518d[_0x5ec2('0x1a')]||0x0;this[_0x5ec2('0x1b')]=_0x5c518d[_0x5ec2('0x1b')]||0x0;this[_0x5ec2('0x1c')]=_0x5c518d[_0x5ec2('0x1c')]||0x0;this[_0x5ec2('0x1d')]=_0x5c518d[_0x5ec2('0x1d')]||0x0;this[_0x5ec2('0x1e')]=_0x5c518d[_0x5ec2('0x1e')]||0x0;this['callback']=_0x5c518d[_0x5ec2('0x1f')];this[_0x5ec2('0x20')]=_0x5c518d[_0x5ec2('0x20')];this[_0x5ec2('0x21')]=_0x5c518d[_0x5ec2('0x21')];this[_0x5ec2('0x22')]=_0x5c518d[_0x5ec2('0x22')];this[_0x5ec2('0x23')]=_0x5c518d[_0x5ec2('0x23')];this['ListId']=_0x5c518d[_0x5ec2('0x24')];this['UserId']=_[_0x5ec2('0x2')](_0x5c518d[_0x5ec2('0xa')])?_0x5c518d[_0x5ec2('0x25')]:_0x5c518d[_0x5ec2('0xa')]['id'];this['VoiceQueueId']=_0x5c518d[_0x5ec2('0x26')];this[_0x5ec2('0x27')]='';this['originatecalleridname']='';}Action[_0x5ec2('0x28')]['getCaller']=function(){return util['format'](_0x5ec2('0x29'),this[_0x5ec2('0xe')],this[_0x5ec2('0x2a')]);};module[_0x5ec2('0x2b')]=Action;
\ No newline at end of file
index 628b7f9..2cf2afc 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x116d=['clone','custom:agentringnoanswer','rejected','syncHangup','[syncHangup][talking]','cause','[syncHangup][talking][cause]','statedesc','dialQueueProject','channelstate','transfer','[syncHangup][talking][transfer]','destuniqueid','variables','filterKey','keys','variable','addVariable','value','error','inspect','transfertargetlinkedid','transfererlinkedid','exports','util','lodash','bluebird','uuid','moment','ioredis','../../../config/environment','../../../config/logger','preview','actionPreview','../ami','./rpcDb','./action','redis','defaults','localhost','prototype','enqueue','tail','finally','sequence','campaignsPreview','trunks','actions','agents','clockClearZombieChannels','originateresponse','syncOriginateResponse','bind','syncHangupRequest','dialend','syncDialEnd','newexten','varset','syncVarSet','syncAttendedTransfer','blindtransfer','syncBlindTransfer','emit','type','name','answered','available','loggedIn','pTalking','sumBillable','sumDuration','sumHoldTime','talking','unmanaged','abandoned','waiting','loggedInDb','dialActive','dialOriginateCallerIdName','dialOriginateCallerIdNumber','dialOriginateTimeout','dialPrefix','outboundBusyCallsDay','outboundCongestionCallsDay','outboundDropCallsDayACS','outboundDropCallsDayCallersExit','outboundDropCallsDayTimeout','outboundNoAnswerCallsDay','outboundNoSuchCallsDay','outboundOriginateFailureCallsDay','outboundReCallsDay','outboundRejectCallsDay','outboundUnknownCallsDay','outboundAbandonedCallsDay','predictiveIntervalAnsweredCalls','predictiveIntervalAvgHoldtime','predictiveIntervalDroppedCallsCallersExit','predictiveIntervalDroppedCallsTimeout','predictiveIntervalErlangCalls','predictiveIntervalErlangCallsDroppedCalls','predictiveIntervalHitRate','predictiveIntervalMultiplicativeFactor','predictiveIntervalPauses','predictiveIntervalAvailable','predictiveIntervalTotalCalls','message','erlangAbandonmentRate','startProgressive','Trunk','active','callerid','Interval','stringify','md5','voice_queue:save','info','[DEBUG]\x20Emit\x20voice_queue_channel:remove\x20event','format','voice:queue:%s','voice_queue_channel:remove','voice_queue_presence:remove','sendMessageOneNotActive','paused','logger','[CampaignPreview]\x20Campaign\x20Queue:\x20','\x20is\x20not\x20active','IS_DISACTIVED','\x20is\x20disactive','loopCampaigns','syncCampaigns','hasOwnProperty','dialMethod','outbound','setMessage','recallMe','clearZombieChannel','[clearZombieChannels][talking]','Queue','originated:\x20','queue','originated','pTalking:\x20','dialAnswer','pick','contactId','VoiceQueueId','ListId','Action','status','channel','catch','No\x20such\x20channel','updateOriginated','[clearZombieChannel]','decrementTalkink','loggerError','[Dialer][checkChannel][pTalking][Preview]','[Dialer][checkChannel][Preview]','clearZombieChannels','[action]','size','getContactRecallMe','agentReadyId','then','isNil','length','scheduledat','dialRecallMeTimeout','Agent','voicePause','run','logger2','[RecallMe]','disableContact','starttime','logCustomer','dialRecallInQueue','rescheduleContactInQueue','createBody','createCustomerHistory','RecallFailedTimeout','[HistoryRecallClose]','[getContactRecallMe]','IsNotLoggedIn','AGENTS_NOT_LOGGED','isActive','NOT_ACTIVE','isTrunkReachable','TrunkBackup','TRUNK_IS_NOT_REACHABLE','ACTIVE','callProgressDetectingCustomer','countnosuchnumberretry','countglobal','totalGlobal','NoSuchNumber','custom:agentnosuchnumber','buildObj','nosuchnumber','dialGlobalMaxRetry','cloneAction','Global','createCustomerFinal','[callProgressDetectingCustomer][logNoSuchGlobal]','dialNoSuchNumberRetryFrequency','unlockAgent','activeContact','linkedid','YYYY-MM-DD\x20HH:mm:ss','responsetime','[syncHangup][talking][increment]','uniqueid','\x20Queue','connect','custom:agentConnectPreview','buildAcw','custom:agentcomplete','complete','outboundAnswerCallsDay','total','[16]','Answer','[callProgressDetectingCustomer][logAnswer]','[callProgressDetectingCustomer][logAnswerGlobal]','crateCustomerReportQueue','talktime','[syncHangup][talking][decrement]','BUSY','Busy','custom:agentbusy','busy','[callProgressDetectingCustomer][logBusy]','[callProgressDetectingCustomer][logBusyGlobal]','countbusyretry','dialBusyMaxRetry','rescheduleContact','scheduledAt','dialBusyRetryFrequency','NOANSWER','countnoanswerretry','NoAnswer','[callProgressDetectingCustomer][logNoAnswerGlobal]','[callProgressDetectingCustomer][logNoAnswer]','dialNoAnswerRetryFrequency','countcongestionretry','Congestion','custom:agentcongestion','congestion','[callProgressDetectingCustomer][logCongestion]','[callProgressDetectingCustomer][logCongestionGlobal]','dialCongestionMaxRetry','CANCEL','countagentrejectretry','AgentReject','custom:agentreject','[syncHangupRequest][logAgentReject]','[callProgressDetectingCustomer][logAgentReject]','dialAgentRejectMaxRetry','dialAgentRejectRetryFrequency','ABANDONED','Abandoned','[callProgressDetectingCustomer][logAbandoned]','countabandonedretry','countmachineretry','dialstatus','amd','[callProgressDetectingCustomer][hangupInAMD]','custom:amd','[callProgressDetectingCustomer][machine]','[Dialer][decrementTalkink][no\x20Hangup][Preview]','cause-txt','[callProgressDetectingCustomer][logUnknown]','[callProgressDetectingCustomer][logUnknownGlobal]','[callProgressDetectingCustomer]','[originated][decrement][callProgressDetectingCustomer]','destlinkedid','callProgressDetectingAgent','isUndefined','object','reason','logAgent','createAgentHistory','[callProgressDetectingAgent][logNoAnswer]','[callProgressDetectingAgent][logCongestion]','AnswerAGI','[callProgressDetectingAgent][logAnswerAGI]','[callProgressDetectingAgent]','[originated][decrement][callProgressDetectingAgent]','checkInBlack','Contact','Contact\x20is\x20undefined','isEmpty','execCall','[Preview][execCall][success]','Queue:\x20','\x20IdHopper:\x20','idContact','custom:agentcalled','called','Calling','[Preview][execCall][failure]','Call\x20failed','logBlacklist','createHistory','[Blacklist][error]','Contact\x20in\x20black\x20List','SIP/%s','reachable','unlockContact','execRun','getContactPreview','recallme','validateContact','isValid','checkIsBlackList','Contact.phone','[Preview][checkIsBlackList]','Call\x20unsuccessful','[Preview][getContactPreview]','[Preview][validateContact][Empty\x20Contact]','Empty\x20Contact','[Preview][validateContact][Empty\x20Campaign]','Empty\x20Campaign','\x20Trunk\x20is\x20not\x20active','[Preview][validateContact][Trunk\x20not\x20work]','\x20Trunk\x20Backup\x20is\x20not\x20active','Trunk\x20not\x20work','[Preview][validateContact][Campaign\x20Active]','\x20Not\x20Active','campaign\x20Name:\x20','Is\x20Valid','trim','dialCutDigit','phone','SIP/%s/%s%s','substring','getCallerId','dialRandomLastDigitCallerIdNumber','getCallerIdRandom','originatecalleridnum','extractCalleridNumber','addVariables','variablesAction','channelAgent','calleridnum','user:%s','user:agentconnect','[originated][increment]','OriginateError','actionid','lookAgent','logLookAgent'];(function(_0xb9270f,_0x4d6026){var _0x159928=function(_0x28e61c){while(--_0x28e61c){_0xb9270f['push'](_0xb9270f['shift']());}};_0x159928(++_0x4d6026);}(_0x116d,0x178));var _0xd116=function(_0x465a0c,_0x19d4d5){_0x465a0c=_0x465a0c-0x0;var _0x1e202e=_0x116d[_0x465a0c];return _0x1e202e;};'use strict';var util=require(_0xd116('0x0'));var _=require(_0xd116('0x1'));var BPromise=require(_0xd116('0x2'));var uuid=require(_0xd116('0x3'));var moment=require(_0xd116('0x4'));var md5=require('md5');var Redis=require(_0xd116('0x5'));var config=require(_0xd116('0x6'));var logger=require(_0xd116('0x7'))(_0xd116('0x8'));var loggerAction=require(_0xd116('0x7'))(_0xd116('0x9'));var ami=require(_0xd116('0xa'));var rpcDb=require(_0xd116('0xb'));var Action=require(_0xd116('0xc'));var ut=require('./util/util');config[_0xd116('0xd')]=_[_0xd116('0xe')](config[_0xd116('0xd')],{'host':_0xd116('0xf'),'port':0x18eb});var io=require('socket.io-emitter')(new Redis(config['redis']));var Sequence=function(){};Sequence[_0xd116('0x10')][_0xd116('0x11')]=function(_0x375610){this[_0xd116('0x12')]=this['tail']?this[_0xd116('0x12')][_0xd116('0x13')](_0x375610):_0x375610();};function Preview(_0x508e81){this[_0xd116('0x14')]=new Sequence();this[_0xd116('0x15')]=_0x508e81['voiceQueues'];this['trunks']=_0x508e81[_0xd116('0x16')];this[_0xd116('0x17')]={};this[_0xd116('0x18')]=_0x508e81[_0xd116('0x18')];this[_0xd116('0x19')]=0x0;ami['on'](_0xd116('0x1a'),this[_0xd116('0x1b')]['bind'](this));ami['on']('hangup',this['syncHangup'][_0xd116('0x1c')](this));ami['on']('hanguprequest',this[_0xd116('0x1d')][_0xd116('0x1c')](this));ami['on'](_0xd116('0x1e'),this[_0xd116('0x1f')][_0xd116('0x1c')](this));ami['on'](_0xd116('0x20'),this['syncNewExten'][_0xd116('0x1c')](this));ami['on'](_0xd116('0x21'),this[_0xd116('0x22')]['bind'](this));ami['on']('attendedtransfer',this[_0xd116('0x23')][_0xd116('0x1c')](this));ami['on'](_0xd116('0x24'),this[_0xd116('0x25')][_0xd116('0x1c')](this));this['loopCampaigns'](this[_0xd116('0x15')]);}function emit(_0x53caee,_0x3cca01,_0x17f38f){io['to'](_0x53caee)[_0xd116('0x26')](_0x3cca01,_0x17f38f);}function emitCampaignPreview(_0x1eb003){if(_0x1eb003[_0xd116('0x27')]==='outbound'){var _0x67dad3={'id':_0x1eb003['id'],'name':_0x1eb003[_0xd116('0x28')],'strategy':_0x1eb003['strategy'],'answered':_0x1eb003[_0xd116('0x29')],'available':_0x1eb003[_0xd116('0x2a')],'loggedIn':_0x1eb003[_0xd116('0x2b')],'pTalking':_0x1eb003[_0xd116('0x2c')],'sumBillable':_0x1eb003[_0xd116('0x2d')],'sumDuration':_0x1eb003[_0xd116('0x2e')],'sumHoldTime':_0x1eb003[_0xd116('0x2f')]||0x0,'talking':_0x1eb003[_0xd116('0x30')],'total':_0x1eb003['total'],'type':_0x1eb003['type'],'unmanaged':_0x1eb003[_0xd116('0x31')],'abandoned':_0x1eb003[_0xd116('0x32')],'waiting':_0x1eb003[_0xd116('0x33')],'loggedInDb':_0x1eb003[_0xd116('0x34')],'dialActive':_0x1eb003[_0xd116('0x35')],'dialMethod':_0x1eb003['dialMethod'],'dialOriginateCallerIdName':_0x1eb003[_0xd116('0x36')],'dialOriginateCallerIdNumber':_0x1eb003[_0xd116('0x37')],'dialOriginateTimeout':_0x1eb003[_0xd116('0x38')],'dialPrefix':_0x1eb003[_0xd116('0x39')],'outboundAnswerAgiCallsDay':_0x1eb003['outboundAnswerAgiCallsDay'],'outboundAnswerCallsDay':_0x1eb003['outboundAnswerCallsDay'],'outboundBlacklistCallsDay':_0x1eb003['outboundBlacklistCallsDay'],'outboundBusyCallsDay':_0x1eb003[_0xd116('0x3a')],'outboundCongestionCallsDay':_0x1eb003[_0xd116('0x3b')],'outboundDropCallsDayACS':_0x1eb003[_0xd116('0x3c')],'outboundDropCallsDayCallersExit':_0x1eb003[_0xd116('0x3d')],'outboundDropCallsDayTimeout':_0x1eb003[_0xd116('0x3e')],'outboundNoAnswerCallsDay':_0x1eb003[_0xd116('0x3f')],'outboundNoSuchCallsDay':_0x1eb003[_0xd116('0x40')],'outboundOriginateFailureCallsDay':_0x1eb003[_0xd116('0x41')],'outboundReCallsDay':_0x1eb003[_0xd116('0x42')],'outboundRejectCallsDay':_0x1eb003[_0xd116('0x43')],'outboundUnknownCallsDay':_0x1eb003[_0xd116('0x44')],'outboundAbandonedCallsDay':_0x1eb003[_0xd116('0x45')],'predictiveIntervalAnsweredCalls':_0x1eb003[_0xd116('0x46')],'predictiveIntervalAvgHoldtime':_0x1eb003[_0xd116('0x47')],'predictiveIntervalAvgTalktime':_0x1eb003['predictiveIntervalAvgTalktime'],'predictiveIntervalDroppedCallsCallersExit':_0x1eb003[_0xd116('0x48')],'predictiveIntervalDroppedCallsTimeout':_0x1eb003[_0xd116('0x49')],'predictiveIntervalErlangCalls':_0x1eb003[_0xd116('0x4a')],'predictiveIntervalErlangCallsDroppedCalls':_0x1eb003[_0xd116('0x4b')],'predictiveIntervalHitRate':_0x1eb003[_0xd116('0x4c')],'predictiveIntervalMultiplicativeFactor':_0x1eb003[_0xd116('0x4d')],'predictiveIntervalPauses':_0x1eb003[_0xd116('0x4e')],'predictiveIntervalAvailable':_0x1eb003[_0xd116('0x4f')],'predictiveIntervalTotalCalls':_0x1eb003[_0xd116('0x50')],'message':_0x1eb003[_0xd116('0x51')],'originated':_0x1eb003['originated'],'erlangCalls':_0x1eb003['erlangCalls'],'erlangCallToSecond':_0x1eb003['erlangCallToSecond'],'erlangAbandonmentRate':_0x1eb003[_0xd116('0x52')],'erlangBusyFactor':_0x1eb003['erlangBusyFactor'],'startPredictive':_0x1eb003['startPredictive'],'startProgressive':_0x1eb003[_0xd116('0x53')]};if(_0x1eb003[_0xd116('0x54')]){_0x67dad3['Trunk']={'id':_0x1eb003['Trunk']['id'],'name':_0x1eb003[_0xd116('0x54')]['name'],'active':_0x1eb003[_0xd116('0x54')][_0xd116('0x55')],'callerid':_0x1eb003[_0xd116('0x54')][_0xd116('0x56')]};}if(_0x1eb003['Interval']){_0x67dad3[_0xd116('0x57')]={'id':_0x1eb003[_0xd116('0x57')]['id'],'name':_0x1eb003['Interval'][_0xd116('0x28')]};}var _0x3f14c2=md5(JSON[_0xd116('0x58')](_0x67dad3));if(_0x1eb003[_0xd116('0x59')]!==_0x3f14c2){_0x1eb003[_0xd116('0x59')]=_0x3f14c2;emit(util['format']('voice:queue:%s',_0x67dad3[_0xd116('0x28')]),_0xd116('0x5a'),_0x67dad3);}}}function emitVoiceQueueChannelRemove(_0x5e5506){logger[_0xd116('0x5b')](_0xd116('0x5c'),JSON[_0xd116('0x58')](_0x5e5506));emit(util[_0xd116('0x5d')](_0xd116('0x5e'),_0x5e5506[_0xd116('0x28')]),_0xd116('0x5f'),_0x5e5506);io[_0xd116('0x26')](_0xd116('0x60'),_0x5e5506);}function notSendMessagesQueue(_0x183633){if(_0x183633[_0xd116('0x61')]){if(_0x183633['originated']===0x0&&_0x183633[_0xd116('0x2c')]===0x0){_0x183633[_0xd116('0x61')]=![];_0x183633[_0xd116('0x2a')]=0x0;_0x183633[_0xd116('0x62')]=0x0;_0x183633['message']='NOT_ACTIVE';ut[_0xd116('0x63')](_0xd116('0x64'),_0x183633['name']+_0xd116('0x65'));}else{_0x183633[_0xd116('0x51')]=_0xd116('0x66');ut['logger'](_0xd116('0x64'),_0x183633[_0xd116('0x28')]+_0xd116('0x67'));}emitCampaignPreview(_0x183633);}}Preview[_0xd116('0x10')][_0xd116('0x68')]=function(){var _0x284936=this;setInterval(function(){_0x284936['syncCampaigns']();},0x7cf);};Preview[_0xd116('0x10')][_0xd116('0x69')]=function(){var _0x1b3e2a=this['campaignsPreview'];this[_0xd116('0x19')]+=0x1;for(var _0x3d2887 in _0x1b3e2a){if(_0x1b3e2a[_0xd116('0x6a')](_0x3d2887)&&(_0x1b3e2a[_0x3d2887][_0xd116('0x6b')]==='preview'||_0x1b3e2a[_0x3d2887]['dialMethod']==='booked')&&_0x1b3e2a[_0x3d2887]['type']===_0xd116('0x6c')){if(this['clockClearZombieChannels']>0x7){this['clockClearZombieChannels']=0x0;this['clearZombieChannels']();}}if(_0x1b3e2a[_0xd116('0x6a')](_0x3d2887)&&_0x1b3e2a[_0x3d2887][_0xd116('0x6b')]==='preview'&&_0x1b3e2a[_0x3d2887][_0xd116('0x27')]===_0xd116('0x6c')){if(_0x1b3e2a[_0x3d2887]['dialActive']){this[_0xd116('0x6d')](_0x1b3e2a[_0x3d2887]);this[_0xd116('0x6e')](_0x1b3e2a[_0x3d2887]);}else{notSendMessagesQueue(_0x1b3e2a[_0x3d2887]);}}}};Preview['prototype'][_0xd116('0x6f')]=function(_0x1a83ef){var _0x543b08=this;this[_0xd116('0x14')]['enqueue'](function(){if(!_['isNil'](_0x543b08[_0xd116('0x17')][_0x1a83ef])){loggerAction[_0xd116('0x5b')](_0xd116('0x70'),_0x1a83ef,_0xd116('0x71'),_0x543b08[_0xd116('0x17')][_0x1a83ef]['queue'],_0xd116('0x72'),JSON[_0xd116('0x58')](_0x543b08[_0xd116('0x15')][_0x543b08[_0xd116('0x17')][_0x1a83ef][_0xd116('0x73')]][_0xd116('0x74')]),_0xd116('0x75'),JSON['stringify'](_0x543b08['campaignsPreview'][_0x543b08['actions'][_0x1a83ef][_0xd116('0x73')]][_0xd116('0x2c')]),JSON[_0xd116('0x58')](_0x543b08[_0xd116('0x17')][_0x1a83ef][_0xd116('0x76')]),JSON['stringify'](_[_0xd116('0x77')](_0x543b08['actions'][_0x1a83ef],[_0xd116('0x78'),'UserId',_0xd116('0x79'),_0xd116('0x7a')])));return ami[_0xd116('0x7b')]({'action':_0xd116('0x7c'),'channel':_0x543b08['actions'][_0x1a83ef][_0xd116('0x7d')]})[_0xd116('0x7e')](function(_0x58a66f){if(_0x58a66f[_0xd116('0x51')]===_0xd116('0x7f')){setTimeout(function(){if(_0x543b08[_0xd116('0x17')][_0x1a83ef]){ut[_0xd116('0x80')](_0x543b08[_0xd116('0x15')][_0x543b08[_0xd116('0x17')][_0x1a83ef][_0xd116('0x73')]],_0xd116('0x81'));if(_0x543b08[_0xd116('0x17')][_0x1a83ef][_0xd116('0x76')]===!![]){ut[_0xd116('0x82')](_0x543b08[_0xd116('0x15')][_0x543b08[_0xd116('0x17')][_0x1a83ef][_0xd116('0x73')]],'[clearZombieChannel]');ut[_0xd116('0x83')](_0xd116('0x84')+_0x1a83ef,_0x543b08[_0xd116('0x17')][_0x1a83ef][_0xd116('0x73')]);}ut[_0xd116('0x83')](_0xd116('0x85')+_0x1a83ef,_0x543b08[_0xd116('0x17')][_0x1a83ef][_0xd116('0x73')]);delete _0x543b08[_0xd116('0x17')][_0x1a83ef];}},0x2328);}});}});};Preview[_0xd116('0x10')][_0xd116('0x86')]=function(){var _0x8f8199=this;loggerAction[_0xd116('0x5b')](_0xd116('0x87'),_[_0xd116('0x88')](this['actions']));for(var _0x536e43 in this[_0xd116('0x17')]){if(_0x8f8199[_0xd116('0x17')][_0xd116('0x6a')](_0x536e43)){_0x8f8199[_0xd116('0x6f')](_0x536e43);}}};Preview[_0xd116('0x10')]['recallMe']=function(_0x311b57){var _0x35250a=this;rpcDb[_0xd116('0x89')](_0x311b57['id'],ut[_0xd116('0x8a')](this[_0xd116('0x18')]))[_0xd116('0x8b')](function(_0x6e5188){if(!_[_0xd116('0x8c')](_0x6e5188)){for(var _0x49a5cf=0x0;_0x49a5cf<_0x6e5188[_0xd116('0x8d')];_0x49a5cf+=0x1){if(ut['getDiff'](_0x6e5188[_0x49a5cf][_0xd116('0x8e')])<_0x311b57[_0xd116('0x8f')]*0x3c){if(_0x6e5188[_0x49a5cf][_0xd116('0x90')]&&!_0x6e5188[_0x49a5cf]['Agent'][_0xd116('0x91')]){_0x35250a[_0xd116('0x92')](_0x6e5188[_0x49a5cf]['id'])[_0xd116('0x8b')](ut[_0xd116('0x93')](_0xd116('0x94')))['catch'](ut['logger2'](_0xd116('0x94')));}else{rpcDb[_0xd116('0x95')](_0x6e5188[_0x49a5cf]['id']);}}else{var _0x172728=new Action(_0x6e5188[_0x49a5cf],_0x311b57);_0x172728[_0xd116('0x96')]=moment()[_0xd116('0x5d')]('YYYY-MM-DD\x20HH:mm:ss');_0x311b57[_0xd116('0x42')]+=0x1;ut[_0xd116('0x97')](_0x172728,0x17,'RecallInQueue');if(_0x311b57[_0xd116('0x98')]){rpcDb[_0xd116('0x99')](ut[_0xd116('0x9a')](_0x6e5188[_0x49a5cf]));rpcDb[_0xd116('0x9b')](_0x172728,'[HistoryDialRecallInQueue][historyCatch]');}else{ut[_0xd116('0x97')](_0x172728,0x16,_0xd116('0x9c'));rpcDb[_0xd116('0x9b')](_0x172728,_0xd116('0x9d'));rpcDb['createCustomerFinal'](_0x172728,_0xd116('0x9d'));}}}}})['catch'](ut['logger2'](_0xd116('0x9e')));};Preview[_0xd116('0x10')][_0xd116('0x6d')]=function(_0x37d0cd){_0x37d0cd['sendMessageOneNotActive']=!![];if(ut[_0xd116('0x9f')](_0x37d0cd[_0xd116('0x2b')])){_0x37d0cd[_0xd116('0x51')]=_0xd116('0xa0');}else if(!ut[_0xd116('0xa1')](_0x37d0cd[_0xd116('0x35')])){_0x37d0cd[_0xd116('0x51')]=_0xd116('0xa2');}else if(!this['isTrunkReachable'](_0x37d0cd[_0xd116('0x54')])){if(!this[_0xd116('0xa3')](_0x37d0cd[_0xd116('0xa4')])){_0x37d0cd[_0xd116('0x51')]=_0xd116('0xa5');}else{_0x37d0cd[_0xd116('0x51')]=_0xd116('0xa6');}}else{_0x37d0cd['message']=_0xd116('0xa6');}emitCampaignPreview(_0x37d0cd);};Preview[_0xd116('0x10')][_0xd116('0xa7')]=function(_0x2ce76a,_0x4f178e,_0x4c60ba){var _0x3edc44=this;var _0x44419d=this[_0xd116('0x17')][_0x4f178e];var _0x19112b=this[_0xd116('0x15')][_0x44419d[_0xd116('0x73')]];var _0x511eea;if(_0x19112b){switch(_0x4c60ba){case'1':_0x19112b[_0xd116('0x40')]+=0x1;_0x44419d[_0xd116('0xa8')]+=0x1;_0x44419d[_0xd116('0xa9')]=ut[_0xd116('0xaa')](_0x44419d);ut[_0xd116('0x97')](_0x44419d,0x0,_0xd116('0xab'));ami['emit'](_0xd116('0xac'),ut[_0xd116('0xad')](_0x44419d,_0xd116('0xae')));rpcDb[_0xd116('0x9b')](_0x44419d,'[callProgressDetectingCustomer][logNoSuch]');if(ut[_0xd116('0xaa')](_0x44419d)>=_0x19112b[_0xd116('0xaf')]){_0x511eea=ut[_0xd116('0xb0')](_0x44419d,0xf,_0xd116('0xb1'));rpcDb[_0xd116('0xb2')](_0x511eea,_0xd116('0xb3'));}else{if(_0x44419d['countnosuchnumberretry']>=_0x19112b['dialNoSuchNumberMaxRetry']){rpcDb['createCustomerFinal'](_0x44419d,'[callProgressDetectingCustomer][logNoSuchGlobal]');}else{rpcDb['rescheduleContact'](ut['scheduledAt'](_0x44419d,'countnosuchnumberretry',_0x19112b[_0xd116('0xb4')]),_0x44419d[_0xd116('0xb5')],_0x44419d[_0xd116('0xb6')]);}}delete this[_0xd116('0x17')][_0x2ce76a[_0xd116('0xb7')]];break;case'ANSWER':var _0x239611=moment()[_0xd116('0x5d')](_0xd116('0xb8'));_0x44419d[_0xd116('0xb9')]=_0x239611;_0x44419d['answertime']=_0x239611;_0x44419d['dialAnswer']=!![];_0x19112b[_0xd116('0x2c')]+=0x1;logger[_0xd116('0x5b')](_0xd116('0xba'),_0x44419d[_0xd116('0xbb')],_0xd116('0xbc'),_0x19112b[_0xd116('0x28')],_0xd116('0x75'),_0x19112b[_0xd116('0x2c')]);ami['emit']('custom:agentconnect',ut[_0xd116('0xad')](_0x44419d,_0xd116('0xbd'),this['campaignsPreview'][_0x44419d[_0xd116('0x73')]]));if(_0x19112b['acw']){ami[_0xd116('0x26')](_0xd116('0xbe'),ut[_0xd116('0xbf')](_0x44419d));}break;case'16':ami['emit'](_0xd116('0xc0'),ut['buildObj'](_0x44419d,_0xd116('0xc1'),this[_0xd116('0x15')][_0x44419d[_0xd116('0x73')]]));emitVoiceQueueChannelRemove(ut[_0xd116('0xad')](_0x44419d,_0xd116('0xc1')));_0x19112b[_0xd116('0xc2')]+=0x1;_0x19112b[_0xd116('0xc3')]+=0x1;_0x19112b[_0xd116('0x29')]+=0x1;ut['decrementTalkink'](_0x19112b,_0xd116('0xc4'));_0x44419d[_0xd116('0xa9')]=ut[_0xd116('0xaa')](_0x44419d);ut[_0xd116('0x97')](_0x44419d,0x4,_0xd116('0xc5'));rpcDb[_0xd116('0x9b')](_0x44419d,_0xd116('0xc6'));rpcDb[_0xd116('0xb2')](_0x44419d,_0xd116('0xc7'));rpcDb[_0xd116('0xc8')](_0x44419d);_0x19112b[_0xd116('0x2e')]+=_0x44419d[_0xd116('0xc9')];_0x19112b[_0xd116('0x2d')]+=_0x44419d[_0xd116('0xc9')];logger[_0xd116('0x5b')](_0xd116('0xca'),_0x44419d['uniqueid'],_0xd116('0xbc'),_0x19112b[_0xd116('0x28')],_0xd116('0x75'),_0x19112b['pTalking']);delete this[_0xd116('0x17')][_0x2ce76a[_0xd116('0xb7')]];break;case _0xd116('0xcb'):_0x19112b[_0xd116('0x3a')]+=0x1;_0x44419d['countbusyretry']+=0x1;_0x44419d[_0xd116('0xa9')]=ut[_0xd116('0xaa')](_0x44419d);ut[_0xd116('0x97')](_0x44419d,0x5,_0xd116('0xcc'));ami[_0xd116('0x26')](_0xd116('0xcd'),ut['buildObj'](_0x44419d,_0xd116('0xce')));rpcDb[_0xd116('0x9b')](_0x44419d,_0xd116('0xcf'));if(ut[_0xd116('0xaa')](_0x44419d)>=_0x19112b[_0xd116('0xaf')]){_0x511eea=ut[_0xd116('0xb0')](_0x44419d,0xf,_0xd116('0xb1'));rpcDb[_0xd116('0xb2')](_0x511eea,_0xd116('0xd0'));}else{if(_0x44419d[_0xd116('0xd1')]>=_0x19112b[_0xd116('0xd2')]){rpcDb[_0xd116('0xb2')](_0x44419d,_0xd116('0xcf'));}else{rpcDb[_0xd116('0xd3')](ut[_0xd116('0xd4')](_0x44419d,'countbusyretry',_0x19112b[_0xd116('0xd5')]),_0x44419d[_0xd116('0xb5')],_0x44419d[_0xd116('0xb6')]);}}break;case _0xd116('0xd6'):_0x19112b[_0xd116('0x3f')]+=0x1;_0x44419d[_0xd116('0xd7')]+=0x1;_0x44419d[_0xd116('0xa9')]=ut[_0xd116('0xaa')](_0x44419d);ut['logCustomer'](_0x44419d,0x3,_0xd116('0xd8'));ami[_0xd116('0x26')]('custom:agentnoanswer',ut[_0xd116('0xad')](_0x44419d,'noanswer'));rpcDb[_0xd116('0x9b')](_0x44419d,'[callProgressDetectingCustomer][logNoAnswer]');if(ut['totalGlobal'](_0x44419d)>=_0x19112b[_0xd116('0xaf')]){_0x511eea=ut[_0xd116('0xb0')](_0x44419d,0xf,_0xd116('0xb1'));rpcDb['createCustomerFinal'](_0x511eea,_0xd116('0xd9'));}else{if(_0x44419d[_0xd116('0xd7')]>=_0x19112b['dialNoAnswerMaxRetry']){rpcDb[_0xd116('0xb2')](_0x44419d,_0xd116('0xda'));}else{rpcDb[_0xd116('0xd3')](ut[_0xd116('0xd4')](_0x44419d,_0xd116('0xd7'),_0x19112b[_0xd116('0xdb')]),_0x44419d[_0xd116('0xb5')],_0x44419d[_0xd116('0xb6')]);}}break;case'CONGESTION':_0x19112b['outboundCongestionCallsDay']+=0x1;_0x44419d[_0xd116('0xdc')]+=0x1;_0x44419d['countglobal']=ut['totalGlobal'](_0x44419d);ut[_0xd116('0x97')](_0x44419d,0x8,_0xd116('0xdd'));ami['emit'](_0xd116('0xde'),ut[_0xd116('0xad')](_0x44419d,_0xd116('0xdf')));rpcDb[_0xd116('0x9b')](_0x44419d,_0xd116('0xe0'));if(ut['totalGlobal'](_0x44419d)>=_0x19112b[_0xd116('0xaf')]){_0x511eea=ut[_0xd116('0xb0')](_0x44419d,0xf,_0xd116('0xb1'));rpcDb[_0xd116('0xb2')](_0x511eea,_0xd116('0xe1'));}else{if(_0x44419d['countcongestionretry']>=_0x19112b[_0xd116('0xe2')]){rpcDb['createCustomerFinal'](_0x44419d,_0xd116('0xe0'));}else{rpcDb[_0xd116('0xd3')](ut[_0xd116('0xd4')](_0x44419d,_0xd116('0xdc'),_0x19112b[_0xd116('0xd5')]),_0x44419d['unlockAgent'],_0x44419d[_0xd116('0xb6')]);}}break;case _0xd116('0xe3'):_0x19112b['outboundRejectCallsDay']+=0x1;_0x44419d[_0xd116('0xe4')]+=0x1;_0x44419d['countglobal']=ut[_0xd116('0xaa')](_0x44419d);ut[_0xd116('0x97')](_0x44419d,0x14,_0xd116('0xe5'));ami[_0xd116('0x26')](_0xd116('0xe6'),ut[_0xd116('0xad')](_0x44419d,'agentreject'));rpcDb['createCustomerHistory'](_0x44419d,_0xd116('0xe7'));if(ut['totalGlobal'](_0x44419d)>=_0x19112b['dialGlobalMaxRetry']){_0x511eea=ut['cloneAction'](_0x44419d,0x14,_0xd116('0xe5'));rpcDb[_0xd116('0xb2')](_0x511eea,_0xd116('0xe8'));}else{if(_0x44419d[_0xd116('0xe4')]>=_0x19112b[_0xd116('0xe9')]){rpcDb[_0xd116('0xb2')](_0x44419d,'[callProgressDetectingCustomer][logAgentReject]');}else{rpcDb[_0xd116('0xd3')](ut['scheduledAt'](_0x44419d,'countagentrejectretry',_0x19112b[_0xd116('0xea')]),_0x44419d[_0xd116('0xb5')],_0x44419d[_0xd116('0xb6')]);}}break;case _0xd116('0xeb'):_0x19112b[_0xd116('0x45')]+=0x1;_0x44419d['countabandonedretry']+=0x1;_0x44419d[_0xd116('0xa9')]=ut['totalGlobal'](_0x44419d);ut[_0xd116('0x97')](_0x44419d,0xb,_0xd116('0xec'));rpcDb[_0xd116('0x9b')](_0x44419d,_0xd116('0xed'));if(ut[_0xd116('0xaa')](_0x44419d)>=_0x19112b[_0xd116('0xaf')]){_0x511eea=ut[_0xd116('0xb0')](_0x44419d,0xf,_0xd116('0xb1'));rpcDb[_0xd116('0xb2')](_0x511eea,_0xd116('0xed'));}else{if(_0x44419d['countabandonedetry']>=_0x19112b['dialAbandonedMaxRety']){rpcDb[_0xd116('0xb2')](_0x44419d,'[callProgressDetectingCustomer][logAbandoned]');}else{rpcDb[_0xd116('0xd3')](ut[_0xd116('0xd4')](_0x44419d,_0xd116('0xee'),_0x19112b['dialAbandonedRetryFrequency']),_0x44419d[_0xd116('0xb5')],_0x44419d[_0xd116('0xb6')]);}}break;case'18':_0x19112b[_0xd116('0x44')]+=0x1;_0x44419d[_0xd116('0xef')]+=0x1;_0x44419d[_0xd116('0xa9')]=ut[_0xd116('0xaa')](_0x44419d);ut[_0xd116('0x97')](_0x44419d,0x12,_0x2ce76a['cause-txt']||_0x2ce76a[_0xd116('0xf0')]);ami[_0xd116('0x26')]('custom:amd',ut[_0xd116('0xad')](_0x44419d,_0xd116('0xf1')));rpcDb['createCustomerHistory'](_0x44419d,_0xd116('0xf2'));if(ut[_0xd116('0xaa')](_0x44419d)>=_0x19112b[_0xd116('0xaf')]){_0x511eea=ut[_0xd116('0xb0')](_0x44419d,0xf,_0xd116('0xb1'));rpcDb[_0xd116('0xb2')](_0x511eea,_0xd116('0xf2'));}else{rpcDb[_0xd116('0xb2')](_0x44419d,_0xd116('0xf2'));}delete this[_0xd116('0x17')][_0x2ce76a[_0xd116('0xb7')]];break;case'19':_0x19112b[_0xd116('0x44')]+=0x1;_0x44419d[_0xd116('0xa9')]=ut[_0xd116('0xaa')](_0x44419d);ut[_0xd116('0x97')](_0x44419d,0x13,_0x2ce76a['cause-txt']||_0x2ce76a[_0xd116('0xf0')]);ami[_0xd116('0x26')](_0xd116('0xf3'),ut['buildObj'](_0x44419d,'amd'));rpcDb[_0xd116('0x9b')](_0x44419d,_0xd116('0xf4'));if(ut[_0xd116('0xaa')](_0x44419d)>=_0x19112b[_0xd116('0xaf')]){_0x511eea=ut['cloneAction'](_0x44419d,0xf,_0xd116('0xb1'));rpcDb['createCustomerFinal'](_0x511eea,_0xd116('0xf4'));}else{rpcDb[_0xd116('0xb2')](_0x44419d,_0xd116('0xf4'));}delete this[_0xd116('0x17')][_0x2ce76a['linkedid']];break;default:if(_0x44419d[_0xd116('0x76')]){ut['decrementTalkink'](_0x19112b,'[default]');ut['loggerError'](_0xd116('0xf5')+_0x19112b['name'],_0x2ce76a);}_0x19112b[_0xd116('0x44')]+=0x1;_0x44419d[_0xd116('0xa9')]=ut['totalGlobal'](_0x44419d);ut[_0xd116('0x97')](_0x44419d,0xc,_0x2ce76a[_0xd116('0xf6')]||_0x2ce76a['dialstatus']);rpcDb[_0xd116('0x9b')](_0x44419d,_0xd116('0xf7'));if(ut[_0xd116('0xaa')](_0x44419d)>=_0x19112b[_0xd116('0xaf')]){_0x511eea=ut['cloneAction'](_0x44419d,0xf,'Global');rpcDb[_0xd116('0xb2')](_0x511eea,_0xd116('0xf8'));}else{rpcDb[_0xd116('0xb2')](_0x44419d,_0xd116('0xf8'));}delete this['actions'][_0x2ce76a[_0xd116('0xb7')]];}if(!(_0x44419d[_0xd116('0x76')]&&_0x4c60ba==='16')){ut[_0xd116('0x80')](_0x19112b,_0xd116('0xf9'));logger[_0xd116('0x5b')](_0xd116('0xfa'),_0x44419d[_0xd116('0xbb')],'\x20Queue',_0x19112b[_0xd116('0x28')],_0xd116('0x72'),_0x19112b[_0xd116('0x74')]);}if(_0x4c60ba!=='ANSWER'){delete this['actions'][_0x2ce76a[_0xd116('0xb7')]];delete this[_0xd116('0x17')][_0x2ce76a[_0xd116('0xfb')]];}}};Preview[_0xd116('0x10')][_0xd116('0xfc')]=function(_0x20ca34,_0x291279,_0x1d5cd7){if(_[_0xd116('0xfd')](_0x291279)&&_0xd116('0xfe')!==typeof _0x291279){return;}if(_[_0xd116('0xfd')](_0x1d5cd7)&&_0xd116('0xfe')!==typeof _0x1d5cd7){return;}switch(_0x1d5cd7[_0xd116('0xff')]){case'0':ut[_0xd116('0x100')](_0x20ca34,0x0,_0xd116('0xab'));rpcDb['createAgentHistory'](_0x20ca34,'[callProgressDetectingAgent][logNoSuch]');break;case'3':ut[_0xd116('0x100')](_0x20ca34,0x3,_0xd116('0xd8'));rpcDb[_0xd116('0x101')](_0x20ca34,_0xd116('0x102'));break;case'5':ut[_0xd116('0x100')](_0x20ca34,0x5,_0xd116('0xcc'));rpcDb[_0xd116('0x101')](_0x20ca34,'[callProgressDetectingAgent][logBusy]');break;case'8':ut[_0xd116('0x100')](_0x20ca34,0x8,'Congestion');rpcDb[_0xd116('0x101')](_0x20ca34,_0xd116('0x103'));break;case'22':ut[_0xd116('0x100')](_0x20ca34,0x16,_0xd116('0x104'));rpcDb[_0xd116('0x101')](_0x20ca34,_0xd116('0x105'));break;default:ut['logAgent'](_0x20ca34,0xc,_0x1d5cd7[_0xd116('0xff')]);rpcDb[_0xd116('0x101')](_0x20ca34,_0xd116('0x103'));}ut[_0xd116('0x80')](_0x291279,_0xd116('0x106'));logger[_0xd116('0x5b')](_0xd116('0x107'),_0x20ca34['uniqueid'],_0xd116('0xbc'),_0x291279['name'],_0xd116('0x72'),_0x291279[_0xd116('0x74')]);delete this[_0xd116('0x17')][_0x20ca34['uniqueid']];};Preview['prototype'][_0xd116('0x108')]=function(_0x2e4b12,_0x53d020,_0x1de686,_0x5600d6,_0x1e12be){var _0x4ad450=this;return new BPromise(function(_0x1255a4,_0x1422cc){if(_['isNil'](_0x53d020)||_[_0xd116('0x8c')](_0x53d020[_0xd116('0x109')])||_[_0xd116('0x8c')](_0x53d020[_0xd116('0x109')]['phone'])||_[_0xd116('0x8c')](_0x53d020['VoiceQueueId'])){_0x1422cc(ut[_0xd116('0x51')](_0xd116('0x10a'),_0x5600d6,_0x1e12be));return;}var _0x7a93cb=uuid['v4']();var _0x2f3903=_0x4ad450['campaignsPreview'][_0x53d020[_0xd116('0x71')][_0xd116('0x28')]];var _0x41f01c=_0x1de686?_0x4ad450[_0xd116('0x18')][_0x1de686]['id']:undefined;_0x4ad450['actions'][_0x7a93cb]=new Action(_0x53d020,_0x2f3903,_0x7a93cb,_0x1de686,_0x41f01c);var _0x4ffde8=_0x4ad450[_0xd116('0x17')][_0x7a93cb];_0x4ffde8[_0xd116('0xb5')]=_0x5600d6;_0x4ffde8['activeContact']=_0x1e12be;_0x4ffde8['lookAgent']=_0x1de686;if(_[_0xd116('0x10b')](_0x2e4b12)){_0x4ad450[_0xd116('0x10c')](_0x4ffde8,_0x2f3903,_0x53d020,_0x1de686)[_0xd116('0x8b')](function(_0x4c3123){logger[_0xd116('0x5b')](_0xd116('0x10d'),_0xd116('0x10e')+_0x4ffde8[_0xd116('0x73')]+_0xd116('0x10f')+_0x4ffde8[_0xd116('0x110')],JSON[_0xd116('0x58')](_0x4c3123));ami['emit'](_0xd116('0x111'),ut[_0xd116('0xad')](_0x4ffde8,_0xd116('0x112'),_0x4ad450['campaignsPreview'][_0x4ffde8[_0xd116('0x73')]]));_0x1255a4(ut[_0xd116('0x51')](_0xd116('0x113')));})['catch'](function(_0x31f4cd){ut[_0xd116('0x63')](_0xd116('0x114'),_0x31f4cd);_0x1422cc(ut[_0xd116('0x51')](_0xd116('0x115'),_0x5600d6,_0x1e12be));});}else{_0x2f3903['outboundBlacklistCallsDay']+=0x1;ut[_0xd116('0x116')](_0x4ffde8);rpcDb[_0xd116('0x117')](_0x4ffde8,_0xd116('0x118'));delete _0x4ad450[_0xd116('0x17')][_0x7a93cb];_0x1422cc(ut[_0xd116('0x51')](_0xd116('0x119'),_0x5600d6,_0x1e12be));}});};Preview['prototype'][_0xd116('0xa3')]=function(_0xbf34c6){return!_[_0xd116('0x8c')](_0xbf34c6)&&!_['isNil'](_0xbf34c6[_0xd116('0x28')])&&!_['isNil'](_0xbf34c6[_0xd116('0x55')])&&_0xbf34c6[_0xd116('0x55')]&&!_[_0xd116('0x8c')](this['trunks'][util['format']('SIP/%s',_0xbf34c6[_0xd116('0x28')])])&&!_['isNil'](this[_0xd116('0x16')][util[_0xd116('0x5d')](_0xd116('0x11a'),_0xbf34c6[_0xd116('0x28')])][_0xd116('0x7c')])&&(this[_0xd116('0x16')][util[_0xd116('0x5d')](_0xd116('0x11a'),_0xbf34c6['name'])]['status']===_0xd116('0x11b')||this[_0xd116('0x16')][util['format'](_0xd116('0x11a'),_0xbf34c6[_0xd116('0x28')])][_0xd116('0x7c')]==='unmonitored');};Preview['prototype']['run']=function(_0x262ef9,_0x17df91){var _0x3b43f7=this;return new BPromise(function(_0x529701,_0x54afab){_0x3b43f7['execRun'](_0x262ef9,_0x17df91)[_0xd116('0x8b')](function(_0x188376){_0x529701(_[_0xd116('0x77')](_0x188376,['message']));})[_0xd116('0x7e')](function(_0x4cec05){if(_0x4cec05['unlock']){rpcDb[_0xd116('0x11c')](_0x262ef9);}if(_0x4cec05[_0xd116('0x55')]){rpcDb[_0xd116('0x95')](_0x262ef9);}_0x54afab(_[_0xd116('0x77')](_0x4cec05,['message']));});});};Preview['prototype'][_0xd116('0x11d')]=function(_0x3b536d,_0x1e5b07){var _0x2d6cf3=this;return new BPromise(function(_0xdd5147,_0x14839c){var _0x216c52,_0x47a6ec;rpcDb[_0xd116('0x11e')](_0x3b536d)[_0xd116('0x8b')](function(_0x58a92a){if(!_['isNil'](_0x58a92a[0x0])){_0x47a6ec=_0x58a92a[0x0]['recallme']?![]:!![];_0x216c52=_0x58a92a[0x0][_0xd116('0x11f')]?!![]:![];_0x216c52=_0x1e5b07?!![]:_0x216c52;}var _0xf9ebb3=_0x2d6cf3[_0xd116('0x120')](_0x58a92a);if(_0xf9ebb3[_0xd116('0x121')]){rpcDb[_0xd116('0x122')](_[_0xd116('0x77')](_0x58a92a[0x0],[_0xd116('0x79'),_0xd116('0x123')]))[_0xd116('0x8b')](function(_0x2c86e8){_0x2d6cf3[_0xd116('0x108')](_0x2c86e8,_0x58a92a[0x0],_0x1e5b07,_0x47a6ec,_0x216c52)['then'](function(_0x5e6c2f){_0xdd5147(_0x5e6c2f);})[_0xd116('0x7e')](function(_0x4ef53c){_0x14839c(_0x4ef53c);});})[_0xd116('0x7e')](function(_0x3f7b1d){ut[_0xd116('0x63')](_0xd116('0x124'),_0x3f7b1d);_0x14839c(ut['message'](_0xd116('0x125'),_0x47a6ec,_0x216c52));});}else{_0x14839c(ut['message'](_0xf9ebb3[_0xd116('0x51')],_0x47a6ec,_0x216c52));}})[_0xd116('0x7e')](function(_0x5a7235){ut['logger'](_0xd116('0x126'),_0x5a7235);_0x14839c(ut[_0xd116('0x51')](_0xd116('0x125'),![],!![]));});});};Preview[_0xd116('0x10')]['validateContact']=function(_0x202a32){if(_[_0xd116('0x8c')](_0x202a32)||_['isEmpty'](_0x202a32)||!_[_0xd116('0x8c')](_0x202a32[0x0][_0xd116('0x90')])&&_[_0xd116('0x8c')](_0x202a32[0x0][_0xd116('0x90')][_0xd116('0x28')])){ut['logger'](_0xd116('0x127'),_0x202a32);return{'isValid':![],'message':_0xd116('0x128')};}var _0x149e3a=this[_0xd116('0x15')][_0x202a32[0x0]['Queue'][_0xd116('0x28')]];_0x149e3a[_0xd116('0x51')]='ACTIVE';if(_[_0xd116('0x8c')](_0x149e3a)){ut[_0xd116('0x63')](_0xd116('0x129'),_0x149e3a);return{'isValid':![],'message':_0xd116('0x12a')};}if(!this['isTrunkReachable'](_0x149e3a[_0xd116('0x54')])){ut[_0xd116('0x63')]('[Preview][validateContact][Trunk\x20not\x20work]','campaign\x20Name:\x20'+_0x149e3a['name']+_0xd116('0x12b'));if(!this[_0xd116('0xa3')](_0x149e3a[_0xd116('0xa4')])){ut[_0xd116('0x63')](_0xd116('0x12c'),_0x149e3a[_0xd116('0x28')]+_0xd116('0x12d'));return{'isValid':![],'message':_0xd116('0x12e')};}}if(!ut[_0xd116('0xa1')](_0x149e3a['dialActive'])){ut[_0xd116('0x63')](_0xd116('0x12f'),_0x149e3a[_0xd116('0x28')]+_0xd116('0x130'));return{'isValid':![],'message':_0xd116('0x131')+_0x149e3a[_0xd116('0x28')]+'\x20Not\x20Active'};}return{'isValid':!![],'message':_0xd116('0x132')};};Preview[_0xd116('0x10')][_0xd116('0x10c')]=function(_0x217c2c,_0x19389f,_0x17c092,_0x36f4ea){var _0x38415b=this;return new BPromise(function(_0x2c7eac,_0x1b723e){var _0xb1e03=_0x217c2c[_0xd116('0xbb')];var _0x521554=_0x38415b[_0xd116('0xa3')](_0x19389f['Trunk'])?util[_0xd116('0x5d')]('SIP/%s/%s%s',_0x19389f[_0xd116('0x54')]['name'],_[_0xd116('0x8c')](_0x19389f[_0xd116('0x39')])?'':_0x19389f['dialPrefix'][_0xd116('0x133')]()||'',_0x19389f[_0xd116('0x134')]>0x0?_0x17c092[_0xd116('0x109')][_0xd116('0x135')]['substring'](_0x19389f[_0xd116('0x134')]):_0x17c092[_0xd116('0x109')]['phone']):util['format'](_0xd116('0x136'),_['isNil'](_0x19389f[_0xd116('0xa4')])?_0x19389f[_0xd116('0x54')]['name']:_0x19389f[_0xd116('0xa4')][_0xd116('0x28')],_[_0xd116('0x8c')](_0x19389f[_0xd116('0x39')])?'':_0x19389f[_0xd116('0x39')]['trim']()||'',_0x19389f[_0xd116('0x134')]>0x0?_0x17c092[_0xd116('0x109')][_0xd116('0x135')][_0xd116('0x137')](_0x19389f['dialCutDigit']):_0x17c092[_0xd116('0x109')]['phone']);var _0x3090f1=_0x38415b[_0xd116('0xa3')](_0x19389f['Trunk'])?ut[_0xd116('0x138')](_0x19389f[_0xd116('0x54')]['callerid'],_0x19389f[_0xd116('0x36')],_0x19389f[_0xd116('0x139')]>0x0?ut[_0xd116('0x13a')](_0x19389f[_0xd116('0x37')],_0x19389f[_0xd116('0x139')]):_0x19389f[_0xd116('0x37')]):ut['getCallerId'](_[_0xd116('0x8c')](_0x19389f[_0xd116('0xa4')])?_0x19389f['Trunk'][_0xd116('0x56')]:_0x19389f[_0xd116('0xa4')]['callerid'],_0x19389f['dialOriginateCallerIdName'],_0x19389f[_0xd116('0x139')]>0x0?ut['getCallerIdRandom'](_0x19389f[_0xd116('0x37')],_0x19389f[_0xd116('0x139')]):_0x19389f['dialOriginateCallerIdNumber']);if(_0x3090f1){_0x217c2c['originatecalleridname']=ut['extractCalleridName'](_0x3090f1);_0x217c2c[_0xd116('0x13b')]=ut[_0xd116('0x13c')](_0x3090f1);}var _0x3bb5aa=ut[_0xd116('0x13d')](_0x19389f,_0x17c092,_0x521554,_0x3090f1,_0xb1e03,_0x217c2c);_['merge'](_0x217c2c,ut['toLowerVariables'](_0x3bb5aa));_0x217c2c['starttime']=moment()['format'](_0xd116('0xb8'));ami[_0xd116('0x7b')](ut[_0xd116('0x13e')](_0x217c2c,_0x19389f,_0x3bb5aa,_0x217c2c[_0xd116('0xb6')],_0x36f4ea))['then'](function(_0x53a12d){var _0x46340b=_0x217c2c[_0xd116('0x13f')];if(!_[_0xd116('0x8c')](_0x46340b)){if(!_['isNil'](_0x38415b[_0xd116('0x18')][_0x46340b])){_0x38415b[_0xd116('0x18')][_0x46340b]['destconnectedlinenum']=_0x217c2c[_0xd116('0x140')];emit(util['format'](_0xd116('0x141'),_0x38415b[_0xd116('0x18')][_0x46340b][_0xd116('0x28')]),_0xd116('0x142'),{'destaccountcode':_0x38415b[_0xd116('0x18')][_0x46340b]['accountcode'],'destconnectedlinenum':_0x217c2c[_0xd116('0x140')]});}}_0x19389f[_0xd116('0x74')]+=0x1;logger[_0xd116('0x5b')](_0xd116('0x143'),_0xb1e03,'\x20Queue',_0x19389f[_0xd116('0x28')],'originated:\x20',_0x19389f[_0xd116('0x74')]);_0x2c7eac(_0x53a12d);})[_0xd116('0x7e')](function(_0x36f104){ut[_0xd116('0x100')](_0x217c2c,0xe,_0xd116('0x144'));rpcDb[_0xd116('0x101')](_0x217c2c,'[originateFailure][logOriginateFailure]');_0x1b723e(_0x36f104);});});};Preview['prototype']['syncNewExten']=function(_0x39e5a1){if(this[_0xd116('0x17')][_0x39e5a1[_0xd116('0xb7')]]){this[_0xd116('0x17')][_0x39e5a1[_0xd116('0xb7')]][_0xd116('0x7d')]=_0x39e5a1[_0xd116('0x7d')];}};Preview[_0xd116('0x10')][_0xd116('0x1b')]=function(_0x5778ef){var _0x5db2fc=this;var _0x2c6465=this[_0xd116('0x17')][_0x5778ef[_0xd116('0x145')]];if(_0x2c6465){if(_0x2c6465[_0xd116('0x146')]&&this['agents'][_0x2c6465['lookAgent']]){ut[_0xd116('0x147')](_0x2c6465,this[_0xd116('0x18')][_0x2c6465[_0xd116('0x146')]][_0xd116('0x28')],this[_0xd116('0x18')][_0x2c6465[_0xd116('0x146')]]['id']);}var _0x244375=_[_0xd116('0x148')](_0x2c6465);_0x244375[_0xd116('0xb9')]=moment()[_0xd116('0x5d')]('YYYY-MM-DD\x20HH:mm:ss');var _0x59a771=_0x5db2fc[_0xd116('0x15')][_0x2c6465[_0xd116('0x73')]];if(ut['isFailure'](_0x5778ef['response'])){if(_0x2c6465[_0xd116('0xb5')]){rpcDb[_0xd116('0x11c')](_0x2c6465[_0xd116('0x110')]);}if(_0x2c6465[_0xd116('0xb6')]){rpcDb[_0xd116('0x95')](_0x2c6465[_0xd116('0x110')]);}ami[_0xd116('0x26')](_0xd116('0x149'),ut[_0xd116('0xad')](_0x2c6465,_0xd116('0x14a'),this[_0xd116('0x15')][_0x2c6465[_0xd116('0x73')]]));this[_0xd116('0xfc')](_0x244375,_0x59a771,_0x5778ef);}else{_0x2c6465[_0xd116('0x96')]=moment()[_0xd116('0x5d')](_0xd116('0xb8'));ut[_0xd116('0x100')](_0x244375,0x4,'Answer');rpcDb[_0xd116('0x101')](_0x244375,'[callProgressDetectingAgent][logAnswer]');}}};Preview[_0xd116('0x10')][_0xd116('0x14b')]=function(_0x2d6678){var _0x5a255f=this;var _0xbf9fd4=this[_0xd116('0x17')][_0x2d6678['linkedid']];var _0x2b0174;if(_0xbf9fd4){_0x2b0174=this['campaignsPreview'][_0xbf9fd4[_0xd116('0x73')]];logger['info'](_0xd116('0x14c'),_0x2d6678[_0xd116('0xb7')],_0xd116('0xbc'),_0x2b0174['name'],_0xd116('0x75'),_0x2b0174[_0xd116('0x2c')]);}if(this[_0xd116('0x17')][_0x2d6678[_0xd116('0xb7')]]&&_0x2d6678[_0xd116('0xb7')]!==_0x2d6678[_0xd116('0xbb')]){if(_0x2d6678[_0xd116('0x14d')]==='16'&&this[_0xd116('0x17')][_0x2d6678[_0xd116('0xb7')]]['dialAnswer']){this[_0xd116('0xa7')](_0x2d6678,_0x2d6678[_0xd116('0xb7')],_0x2d6678[_0xd116('0x14d')]);}else if(this[_0xd116('0x17')][_0x2d6678[_0xd116('0xb7')]][_0xd116('0x76')]){logger['info'](_0xd116('0x14e'),_0x2d6678[_0xd116('0xb7')],_0x2d6678['cause'],_0xd116('0xbc'),_0x2b0174[_0xd116('0x28')],_0xd116('0x75'),_0x2b0174[_0xd116('0x2c')]);this['callProgressDetectingCustomer'](_0x2d6678,_0x2d6678[_0xd116('0xb7')],_0x2d6678[_0xd116('0x14d')]);}}else if(_0xbf9fd4&&_[_0xd116('0x8c')](_0xbf9fd4[_0xd116('0x14f')])&&_0x2b0174[_0xd116('0x150')]&&_0x2d6678[_0xd116('0xb7')]===_0x2d6678['uniqueid']&&_[_0xd116('0x8c')](_0x2d6678[_0xd116('0xff')])&&_0x2d6678[_0xd116('0x14d')]==='16'&&_0x2d6678[_0xd116('0x151')]==='6'&&_[_0xd116('0xfd')](_0xbf9fd4[_0xd116('0x152')])){if(_0xbf9fd4['unlockAgent']){rpcDb[_0xd116('0x11c')](_0xbf9fd4[_0xd116('0x110')]);}if(_0xbf9fd4[_0xd116('0xb6')]){rpcDb[_0xd116('0x95')](_0xbf9fd4[_0xd116('0x110')]);}_0x2d6678[_0xd116('0xff')]='22';this['callProgressDetectingAgent'](_0xbf9fd4,_0x2b0174,_0x2d6678);}else if(_0xbf9fd4&&_0xbf9fd4[_0xd116('0x152')]){if(_0x2d6678[_0xd116('0x14d')]==='16'&&this[_0xd116('0x17')][_0x2d6678[_0xd116('0xb7')]][_0xd116('0x76')]){logger['info'](_0xd116('0x153'),_0x2d6678[_0xd116('0xb7')],_0x2d6678[_0xd116('0x14d')],_0xd116('0xbc'),_0x2b0174[_0xd116('0x28')],_0xd116('0x75'),_0x2b0174['pTalking']);this[_0xd116('0xa7')](_0x2d6678,_0x2d6678['linkedid'],_0x2d6678['cause']);}else if(this[_0xd116('0x17')][_0x2d6678['linkedid']]['dialAnswer']){logger['info']('[syncHangup][talking][cause]',_0x2d6678['linkedid'],_0x2d6678[_0xd116('0x14d')],_0xd116('0xbc'),_0x2b0174[_0xd116('0x28')],_0xd116('0x75'),_0x2b0174[_0xd116('0x2c')]);this[_0xd116('0xa7')](_0x2d6678,_0x2d6678[_0xd116('0xb7')],_0x2d6678['cause']);}}};Preview['prototype'][_0xd116('0x1f')]=function(_0x36339c){if(this[_0xd116('0x17')][_0x36339c[_0xd116('0xfb')]]&&_0x36339c[_0xd116('0xfb')]!==_0x36339c[_0xd116('0x154')]){this[_0xd116('0xa7')](_0x36339c,_0x36339c[_0xd116('0xfb')],_0x36339c['dialstatus']);}};Preview[_0xd116('0x10')][_0xd116('0x1d')]=function(_0x230a94){if(this[_0xd116('0x17')][_0x230a94[_0xd116('0xb7')]]&&_0x230a94[_0xd116('0xb7')]!==_0x230a94['uniqueid']&&!this[_0xd116('0x17')][_0x230a94['linkedid']][_0xd116('0x76')]){if(_0x230a94['cause']==='1'){this[_0xd116('0xa7')](_0x230a94,_0x230a94['linkedid'],_0x230a94['cause']);}}};Preview['prototype']['addVariable']=function(_0x10dcca,_0x2a2384,_0x143fff){if(this[_0xd116('0x17')][_0x10dcca]){if(_[_0xd116('0x8c')](this[_0xd116('0x17')][_0x10dcca][_0xd116('0x155')])){this[_0xd116('0x17')][_0x10dcca][_0xd116('0x155')]={};}this[_0xd116('0x17')][_0x10dcca][_0xd116('0x155')][_0x2a2384]=_0x143fff;}};Preview[_0xd116('0x10')][_0xd116('0x22')]=function(_0x400841){try{if(!_[_0xd116('0x8c')](_0x400841)){if(ut[_0xd116('0x156')](_[_0xd116('0x157')](_0x400841[_0xd116('0x158')])[0x0])){this[_0xd116('0x159')](_0x400841[_0xd116('0xbb')],_[_0xd116('0x157')](_0x400841[_0xd116('0x158')])[0x0],_0x400841[_0xd116('0x15a')]);}}}catch(_0x5b9d1f){logger[_0xd116('0x15b')]('[syncVarSet][Preview]',util[_0xd116('0x15c')](_0x5b9d1f,{'showHidden':![],'depth':null}));}};Preview[_0xd116('0x10')][_0xd116('0x23')]=function(_0xc0ad20){if(_0xc0ad20){if(this[_0xd116('0x17')][_0xc0ad20[_0xd116('0x15d')]]){this['actions'][_0xc0ad20[_0xd116('0x15d')]][_0xd116('0x152')]=!![];}}};Preview[_0xd116('0x10')]['syncBlindTransfer']=function(_0x58d401){if(_0x58d401){if(this[_0xd116('0x17')][_0x58d401[_0xd116('0x15e')]]){this['actions'][_0x58d401['transfererlinkedid']][_0xd116('0x152')]=!![];}}};module[_0xd116('0x15f')]=Preview;
\ No newline at end of file
+var _0x9e2d=['\x20Not\x20Active','Is\x20Valid','SIP/%s/%s%s','dialPrefix','trim','dialCutDigit','substring','dialRandomLastDigitCallerIdNumber','getCallerIdRandom','dialOriginateCallerIdNumber','extractCalleridName','originatecalleridnum','extractCalleridNumber','addVariables','merge','toLowerVariables','starttime','variablesAction','channelAgent','calleridnum','user:%s','user:agentconnect','accountcode','[originated][increment]','OriginateError','[originateFailure][logOriginateFailure]','actionid','logLookAgent','isFailure','response','custom:agentringnoanswer','rejected','Answer','[callProgressDetectingAgent][logAnswer]','[syncHangup][talking]','cause','[syncHangup][talking][cause]','statedesc','dialQueueProject','channelstate','transfer','[syncHangup][talking][transfer]','destlinkedid','destuniqueid','syncHangupRequest','variables','filterKey','addVariable','keys','[syncVarSet][Preview]','inspect','transfertargetlinkedid','transfererlinkedid','exports','util','lodash','bluebird','uuid','moment','md5','ioredis','../../../config/environment','../../../config/logger','actionPreview','./rpcDb','./action','./util/util','redis','defaults','localhost','socket.io-emitter','enqueue','tail','finally','sequence','campaignsPreview','voiceQueues','trunks','actions','agents','clockClearZombieChannels','bind','hangup','syncHangup','hanguprequest','syncDialEnd','newexten','varset','syncVarSet','attendedtransfer','syncAttendedTransfer','syncBlindTransfer','loopCampaigns','emit','name','strategy','answered','pTalking','sumBillable','sumDuration','sumHoldTime','talking','total','unmanaged','waiting','dialActive','dialMethod','dialOriginateCallerIdName','outboundBlacklistCallsDay','outboundBusyCallsDay','outboundDropCallsDayCallersExit','outboundNoAnswerCallsDay','outboundNoSuchCallsDay','outboundReCallsDay','outboundRejectCallsDay','outboundUnknownCallsDay','outboundAbandonedCallsDay','predictiveIntervalAnsweredCalls','predictiveIntervalAvgHoldtime','predictiveIntervalAvgTalktime','predictiveIntervalDroppedCallsCallersExit','predictiveIntervalDroppedCallsTimeout','predictiveIntervalErlangCallsDroppedCalls','predictiveIntervalHitRate','predictiveIntervalMultiplicativeFactor','predictiveIntervalAvailable','predictiveIntervalTotalCalls','message','originated','erlangCalls','erlangCallToSecond','erlangAbandonmentRate','erlangBusyFactor','Trunk','active','callerid','Interval','stringify','format','voice:queue:%s','voice_queue_presence:remove','sendMessageOneNotActive','available','paused','NOT_ACTIVE','[CampaignPreview]\x20Campaign\x20Queue:\x20','\x20is\x20not\x20active','IS_DISACTIVED','\x20is\x20disactive','prototype','hasOwnProperty','preview','booked','clearZombieChannels','outbound','setMessage','clearZombieChannel','info','[clearZombieChannels][talking]','Queue','queue','originated:\x20','pTalking:\x20','dialAnswer','pick','contactId','VoiceQueueId','ListId','Action','channel','catch','No\x20such\x20channel','updateOriginated','[clearZombieChannel]','loggerError','[Dialer][checkChannel][pTalking][Preview]','[action]','size','agentReadyId','then','length','scheduledat','Agent','run','logger2','[RecallMe]','disableContact','YYYY-MM-DD\x20HH:mm:ss','RecallInQueue','dialRecallInQueue','rescheduleContactInQueue','createBody','[HistoryDialRecallInQueue][historyCatch]','logCustomer','RecallFailedTimeout','createCustomerHistory','[HistoryRecallClose]','createCustomerFinal','[getContactRecallMe]','IsNotLoggedIn','loggedIn','AGENTS_NOT_LOGGED','isActive','isTrunkReachable','TrunkBackup','ACTIVE','callProgressDetectingCustomer','countglobal','totalGlobal','NoSuchNumber','buildObj','nosuchnumber','[callProgressDetectingCustomer][logNoSuch]','Global','[callProgressDetectingCustomer][logNoSuchGlobal]','dialNoSuchNumberMaxRetry','rescheduleContact','scheduledAt','countnosuchnumberretry','unlockAgent','activeContact','ANSWER','responsetime','[syncHangup][talking][increment]','uniqueid','\x20Queue','custom:agentconnect','connect','acw','custom:agentConnectPreview','buildAcw','custom:agentcomplete','complete','outboundAnswerCallsDay','decrementTalkink','[16]','[callProgressDetectingCustomer][logAnswer]','[callProgressDetectingCustomer][logAnswerGlobal]','crateCustomerReportQueue','talktime','[syncHangup][talking][decrement]','linkedid','BUSY','Busy','custom:agentbusy','busy','[callProgressDetectingCustomer][logBusy]','dialGlobalMaxRetry','cloneAction','[callProgressDetectingCustomer][logBusyGlobal]','dialBusyMaxRetry','countbusyretry','dialBusyRetryFrequency','countnoanswerretry','custom:agentnoanswer','noanswer','[callProgressDetectingCustomer][logNoAnswer]','[callProgressDetectingCustomer][logNoAnswerGlobal]','dialNoAnswerMaxRetry','CONGESTION','congestion','[callProgressDetectingCustomer][logCongestionGlobal]','[callProgressDetectingCustomer][logCongestion]','countcongestionretry','agentreject','[syncHangupRequest][logAgentReject]','AgentReject','[callProgressDetectingCustomer][logAgentReject]','countagentrejectretry','dialAgentRejectMaxRetry','dialAgentRejectRetryFrequency','countabandonedretry','Abandoned','[callProgressDetectingCustomer][logAbandoned]','countabandonedetry','dialAbandonedMaxRety','dialAbandonedRetryFrequency','cause-txt','dialstatus','custom:amd','amd','[callProgressDetectingCustomer][hangupInAMD]','[callProgressDetectingCustomer][machine]','[Dialer][decrementTalkink][no\x20Hangup][Preview]','[callProgressDetectingCustomer][logUnknownGlobal]','[callProgressDetectingCustomer]','callProgressDetectingAgent','isUndefined','reason','logAgent','createAgentHistory','NoAnswer','[callProgressDetectingAgent][logNoAnswer]','[callProgressDetectingAgent][logBusy]','Congestion','[callProgressDetectingAgent][logCongestion]','AnswerAGI','[callProgressDetectingAgent][logAnswerAGI]','[callProgressDetectingAgent]','[originated][decrement][callProgressDetectingAgent]','checkInBlack','isNil','Contact','phone','lookAgent','execCall','[Preview][execCall][success]','Queue:\x20','idContact','custom:agentcalled','Calling','logger','logBlacklist','createHistory','[Blacklist][error]','SIP/%s','status','reachable','unmonitored','execRun','unlock','unlockContact','recallme','isValid','checkIsBlackList','Contact.phone','[Preview][checkIsBlackList]','Call\x20unsuccessful','validateContact','[Preview][validateContact][Empty\x20Contact]','Empty\x20Contact','[Preview][validateContact][Empty\x20Campaign]','Empty\x20Campaign','[Preview][validateContact][Trunk\x20not\x20work]','campaign\x20Name:\x20','\x20Trunk\x20is\x20not\x20active','\x20Trunk\x20Backup\x20is\x20not\x20active','Trunk\x20not\x20work','[Preview][validateContact][Campaign\x20Active]'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x9e2d,0x189));var _0xd9e2=function(_0xadbe21,_0x1f367e){_0xadbe21=_0xadbe21-0x0;var _0x283c67=_0x9e2d[_0xadbe21];return _0x283c67;};'use strict';var util=require(_0xd9e2('0x0'));var _=require(_0xd9e2('0x1'));var BPromise=require(_0xd9e2('0x2'));var uuid=require(_0xd9e2('0x3'));var moment=require(_0xd9e2('0x4'));var md5=require(_0xd9e2('0x5'));var Redis=require(_0xd9e2('0x6'));var config=require(_0xd9e2('0x7'));var logger=require('../../../config/logger')('preview');var loggerAction=require(_0xd9e2('0x8'))(_0xd9e2('0x9'));var ami=require('../ami');var rpcDb=require(_0xd9e2('0xa'));var Action=require(_0xd9e2('0xb'));var ut=require(_0xd9e2('0xc'));config[_0xd9e2('0xd')]=_[_0xd9e2('0xe')](config[_0xd9e2('0xd')],{'host':_0xd9e2('0xf'),'port':0x18eb});var io=require(_0xd9e2('0x10'))(new Redis(config[_0xd9e2('0xd')]));var Sequence=function(){};Sequence['prototype'][_0xd9e2('0x11')]=function(_0x1ddc29){this[_0xd9e2('0x12')]=this[_0xd9e2('0x12')]?this[_0xd9e2('0x12')][_0xd9e2('0x13')](_0x1ddc29):_0x1ddc29();};function Preview(_0x12310b){this[_0xd9e2('0x14')]=new Sequence();this[_0xd9e2('0x15')]=_0x12310b[_0xd9e2('0x16')];this['trunks']=_0x12310b[_0xd9e2('0x17')];this[_0xd9e2('0x18')]={};this[_0xd9e2('0x19')]=_0x12310b[_0xd9e2('0x19')];this[_0xd9e2('0x1a')]=0x0;ami['on']('originateresponse',this['syncOriginateResponse'][_0xd9e2('0x1b')](this));ami['on'](_0xd9e2('0x1c'),this[_0xd9e2('0x1d')][_0xd9e2('0x1b')](this));ami['on'](_0xd9e2('0x1e'),this['syncHangupRequest'][_0xd9e2('0x1b')](this));ami['on']('dialend',this[_0xd9e2('0x1f')]['bind'](this));ami['on'](_0xd9e2('0x20'),this['syncNewExten'][_0xd9e2('0x1b')](this));ami['on'](_0xd9e2('0x21'),this[_0xd9e2('0x22')][_0xd9e2('0x1b')](this));ami['on'](_0xd9e2('0x23'),this[_0xd9e2('0x24')][_0xd9e2('0x1b')](this));ami['on']('blindtransfer',this[_0xd9e2('0x25')][_0xd9e2('0x1b')](this));this[_0xd9e2('0x26')](this['campaignsPreview']);}function emit(_0x497d73,_0x3e96de,_0x1b4d7a){io['to'](_0x497d73)[_0xd9e2('0x27')](_0x3e96de,_0x1b4d7a);}function emitCampaignPreview(_0x3fada4){if(_0x3fada4['type']==='outbound'){var _0x4e35f8={'id':_0x3fada4['id'],'name':_0x3fada4[_0xd9e2('0x28')],'strategy':_0x3fada4[_0xd9e2('0x29')],'answered':_0x3fada4[_0xd9e2('0x2a')],'available':_0x3fada4['available'],'loggedIn':_0x3fada4['loggedIn'],'pTalking':_0x3fada4[_0xd9e2('0x2b')],'sumBillable':_0x3fada4[_0xd9e2('0x2c')],'sumDuration':_0x3fada4[_0xd9e2('0x2d')],'sumHoldTime':_0x3fada4[_0xd9e2('0x2e')]||0x0,'talking':_0x3fada4[_0xd9e2('0x2f')],'total':_0x3fada4[_0xd9e2('0x30')],'type':_0x3fada4['type'],'unmanaged':_0x3fada4[_0xd9e2('0x31')],'abandoned':_0x3fada4['abandoned'],'waiting':_0x3fada4[_0xd9e2('0x32')],'loggedInDb':_0x3fada4['loggedInDb'],'dialActive':_0x3fada4[_0xd9e2('0x33')],'dialMethod':_0x3fada4[_0xd9e2('0x34')],'dialOriginateCallerIdName':_0x3fada4[_0xd9e2('0x35')],'dialOriginateCallerIdNumber':_0x3fada4['dialOriginateCallerIdNumber'],'dialOriginateTimeout':_0x3fada4['dialOriginateTimeout'],'dialPrefix':_0x3fada4['dialPrefix'],'outboundAnswerAgiCallsDay':_0x3fada4['outboundAnswerAgiCallsDay'],'outboundAnswerCallsDay':_0x3fada4['outboundAnswerCallsDay'],'outboundBlacklistCallsDay':_0x3fada4[_0xd9e2('0x36')],'outboundBusyCallsDay':_0x3fada4[_0xd9e2('0x37')],'outboundCongestionCallsDay':_0x3fada4['outboundCongestionCallsDay'],'outboundDropCallsDayACS':_0x3fada4['outboundDropCallsDayACS'],'outboundDropCallsDayCallersExit':_0x3fada4[_0xd9e2('0x38')],'outboundDropCallsDayTimeout':_0x3fada4['outboundDropCallsDayTimeout'],'outboundNoAnswerCallsDay':_0x3fada4[_0xd9e2('0x39')],'outboundNoSuchCallsDay':_0x3fada4[_0xd9e2('0x3a')],'outboundOriginateFailureCallsDay':_0x3fada4['outboundOriginateFailureCallsDay'],'outboundReCallsDay':_0x3fada4[_0xd9e2('0x3b')],'outboundRejectCallsDay':_0x3fada4[_0xd9e2('0x3c')],'outboundUnknownCallsDay':_0x3fada4[_0xd9e2('0x3d')],'outboundAbandonedCallsDay':_0x3fada4[_0xd9e2('0x3e')],'predictiveIntervalAnsweredCalls':_0x3fada4[_0xd9e2('0x3f')],'predictiveIntervalAvgHoldtime':_0x3fada4[_0xd9e2('0x40')],'predictiveIntervalAvgTalktime':_0x3fada4[_0xd9e2('0x41')],'predictiveIntervalDroppedCallsCallersExit':_0x3fada4[_0xd9e2('0x42')],'predictiveIntervalDroppedCallsTimeout':_0x3fada4[_0xd9e2('0x43')],'predictiveIntervalErlangCalls':_0x3fada4['predictiveIntervalErlangCalls'],'predictiveIntervalErlangCallsDroppedCalls':_0x3fada4[_0xd9e2('0x44')],'predictiveIntervalHitRate':_0x3fada4[_0xd9e2('0x45')],'predictiveIntervalMultiplicativeFactor':_0x3fada4[_0xd9e2('0x46')],'predictiveIntervalPauses':_0x3fada4['predictiveIntervalPauses'],'predictiveIntervalAvailable':_0x3fada4[_0xd9e2('0x47')],'predictiveIntervalTotalCalls':_0x3fada4[_0xd9e2('0x48')],'message':_0x3fada4[_0xd9e2('0x49')],'originated':_0x3fada4[_0xd9e2('0x4a')],'erlangCalls':_0x3fada4[_0xd9e2('0x4b')],'erlangCallToSecond':_0x3fada4[_0xd9e2('0x4c')],'erlangAbandonmentRate':_0x3fada4[_0xd9e2('0x4d')],'erlangBusyFactor':_0x3fada4[_0xd9e2('0x4e')],'startPredictive':_0x3fada4['startPredictive'],'startProgressive':_0x3fada4['startProgressive']};if(_0x3fada4[_0xd9e2('0x4f')]){_0x4e35f8[_0xd9e2('0x4f')]={'id':_0x3fada4[_0xd9e2('0x4f')]['id'],'name':_0x3fada4[_0xd9e2('0x4f')][_0xd9e2('0x28')],'active':_0x3fada4[_0xd9e2('0x4f')][_0xd9e2('0x50')],'callerid':_0x3fada4[_0xd9e2('0x4f')][_0xd9e2('0x51')]};}if(_0x3fada4[_0xd9e2('0x52')]){_0x4e35f8[_0xd9e2('0x52')]={'id':_0x3fada4[_0xd9e2('0x52')]['id'],'name':_0x3fada4[_0xd9e2('0x52')]['name']};}var _0x15d733=md5(JSON[_0xd9e2('0x53')](_0x4e35f8));if(_0x3fada4[_0xd9e2('0x5')]!==_0x15d733){_0x3fada4[_0xd9e2('0x5')]=_0x15d733;emit(util[_0xd9e2('0x54')](_0xd9e2('0x55'),_0x4e35f8['name']),'voice_queue:save',_0x4e35f8);}}}function emitVoiceQueueChannelRemove(_0x136d6c){logger['info']('[DEBUG]\x20Emit\x20voice_queue_channel:remove\x20event',JSON[_0xd9e2('0x53')](_0x136d6c));emit(util[_0xd9e2('0x54')](_0xd9e2('0x55'),_0x136d6c[_0xd9e2('0x28')]),'voice_queue_channel:remove',_0x136d6c);io[_0xd9e2('0x27')](_0xd9e2('0x56'),_0x136d6c);}function notSendMessagesQueue(_0x1da97f){if(_0x1da97f[_0xd9e2('0x57')]){if(_0x1da97f['originated']===0x0&&_0x1da97f['pTalking']===0x0){_0x1da97f[_0xd9e2('0x57')]=![];_0x1da97f[_0xd9e2('0x58')]=0x0;_0x1da97f[_0xd9e2('0x59')]=0x0;_0x1da97f['message']=_0xd9e2('0x5a');ut['logger'](_0xd9e2('0x5b'),_0x1da97f['name']+_0xd9e2('0x5c'));}else{_0x1da97f[_0xd9e2('0x49')]=_0xd9e2('0x5d');ut['logger'](_0xd9e2('0x5b'),_0x1da97f[_0xd9e2('0x28')]+_0xd9e2('0x5e'));}emitCampaignPreview(_0x1da97f);}}Preview[_0xd9e2('0x5f')][_0xd9e2('0x26')]=function(){var _0x5a055d=this;setInterval(function(){_0x5a055d['syncCampaigns']();},0x7cf);};Preview['prototype']['syncCampaigns']=function(){var _0x14ece6=this['campaignsPreview'];this[_0xd9e2('0x1a')]+=0x1;for(var _0x413814 in _0x14ece6){if(_0x14ece6[_0xd9e2('0x60')](_0x413814)&&(_0x14ece6[_0x413814][_0xd9e2('0x34')]===_0xd9e2('0x61')||_0x14ece6[_0x413814]['dialMethod']===_0xd9e2('0x62'))&&_0x14ece6[_0x413814]['type']==='outbound'){if(this[_0xd9e2('0x1a')]>0x7){this[_0xd9e2('0x1a')]=0x0;this[_0xd9e2('0x63')]();}}if(_0x14ece6[_0xd9e2('0x60')](_0x413814)&&_0x14ece6[_0x413814]['dialMethod']===_0xd9e2('0x61')&&_0x14ece6[_0x413814]['type']===_0xd9e2('0x64')){if(_0x14ece6[_0x413814][_0xd9e2('0x33')]){this[_0xd9e2('0x65')](_0x14ece6[_0x413814]);this['recallMe'](_0x14ece6[_0x413814]);}else{notSendMessagesQueue(_0x14ece6[_0x413814]);}}}};Preview[_0xd9e2('0x5f')][_0xd9e2('0x66')]=function(_0x5dfb90){var _0x26054f=this;this[_0xd9e2('0x14')][_0xd9e2('0x11')](function(){if(!_['isNil'](_0x26054f[_0xd9e2('0x18')][_0x5dfb90])){loggerAction[_0xd9e2('0x67')](_0xd9e2('0x68'),_0x5dfb90,_0xd9e2('0x69'),_0x26054f[_0xd9e2('0x18')][_0x5dfb90][_0xd9e2('0x6a')],_0xd9e2('0x6b'),JSON[_0xd9e2('0x53')](_0x26054f[_0xd9e2('0x15')][_0x26054f[_0xd9e2('0x18')][_0x5dfb90][_0xd9e2('0x6a')]][_0xd9e2('0x4a')]),_0xd9e2('0x6c'),JSON['stringify'](_0x26054f[_0xd9e2('0x15')][_0x26054f[_0xd9e2('0x18')][_0x5dfb90][_0xd9e2('0x6a')]][_0xd9e2('0x2b')]),JSON['stringify'](_0x26054f[_0xd9e2('0x18')][_0x5dfb90][_0xd9e2('0x6d')]),JSON[_0xd9e2('0x53')](_[_0xd9e2('0x6e')](_0x26054f[_0xd9e2('0x18')][_0x5dfb90],[_0xd9e2('0x6f'),'UserId',_0xd9e2('0x70'),_0xd9e2('0x71')])));return ami[_0xd9e2('0x72')]({'action':'status','channel':_0x26054f[_0xd9e2('0x18')][_0x5dfb90][_0xd9e2('0x73')]})[_0xd9e2('0x74')](function(_0x5591d8){if(_0x5591d8[_0xd9e2('0x49')]===_0xd9e2('0x75')){setTimeout(function(){if(_0x26054f['actions'][_0x5dfb90]){ut[_0xd9e2('0x76')](_0x26054f['campaignsPreview'][_0x26054f[_0xd9e2('0x18')][_0x5dfb90][_0xd9e2('0x6a')]],'[clearZombieChannel]');if(_0x26054f['actions'][_0x5dfb90][_0xd9e2('0x6d')]===!![]){ut['decrementTalkink'](_0x26054f['campaignsPreview'][_0x26054f[_0xd9e2('0x18')][_0x5dfb90]['queue']],_0xd9e2('0x77'));ut[_0xd9e2('0x78')](_0xd9e2('0x79')+_0x5dfb90,_0x26054f[_0xd9e2('0x18')][_0x5dfb90]['queue']);}ut[_0xd9e2('0x78')]('[Dialer][checkChannel][Preview]'+_0x5dfb90,_0x26054f[_0xd9e2('0x18')][_0x5dfb90][_0xd9e2('0x6a')]);delete _0x26054f[_0xd9e2('0x18')][_0x5dfb90];}},0x2328);}});}});};Preview[_0xd9e2('0x5f')][_0xd9e2('0x63')]=function(){var _0x4dcf66=this;loggerAction[_0xd9e2('0x67')](_0xd9e2('0x7a'),_[_0xd9e2('0x7b')](this[_0xd9e2('0x18')]));for(var _0x31b208 in this[_0xd9e2('0x18')]){if(_0x4dcf66[_0xd9e2('0x18')][_0xd9e2('0x60')](_0x31b208)){_0x4dcf66[_0xd9e2('0x66')](_0x31b208);}}};Preview[_0xd9e2('0x5f')]['recallMe']=function(_0x4b0a35){var _0x1908f1=this;rpcDb['getContactRecallMe'](_0x4b0a35['id'],ut[_0xd9e2('0x7c')](this[_0xd9e2('0x19')]))[_0xd9e2('0x7d')](function(_0x4799c2){if(!_['isNil'](_0x4799c2)){for(var _0x4ab447=0x0;_0x4ab447<_0x4799c2[_0xd9e2('0x7e')];_0x4ab447+=0x1){if(ut['getDiff'](_0x4799c2[_0x4ab447][_0xd9e2('0x7f')])<_0x4b0a35['dialRecallMeTimeout']*0x3c){if(_0x4799c2[_0x4ab447][_0xd9e2('0x80')]&&!_0x4799c2[_0x4ab447][_0xd9e2('0x80')]['voicePause']){_0x1908f1[_0xd9e2('0x81')](_0x4799c2[_0x4ab447]['id'])[_0xd9e2('0x7d')](ut[_0xd9e2('0x82')]('[RecallMe]'))[_0xd9e2('0x74')](ut[_0xd9e2('0x82')](_0xd9e2('0x83')));}else{rpcDb[_0xd9e2('0x84')](_0x4799c2[_0x4ab447]['id']);}}else{var _0x2c2c26=new Action(_0x4799c2[_0x4ab447],_0x4b0a35);_0x2c2c26['starttime']=moment()['format'](_0xd9e2('0x85'));_0x4b0a35['outboundReCallsDay']+=0x1;ut['logCustomer'](_0x2c2c26,0x17,_0xd9e2('0x86'));if(_0x4b0a35[_0xd9e2('0x87')]){rpcDb[_0xd9e2('0x88')](ut[_0xd9e2('0x89')](_0x4799c2[_0x4ab447]));rpcDb['createCustomerHistory'](_0x2c2c26,_0xd9e2('0x8a'));}else{ut[_0xd9e2('0x8b')](_0x2c2c26,0x16,_0xd9e2('0x8c'));rpcDb[_0xd9e2('0x8d')](_0x2c2c26,_0xd9e2('0x8e'));rpcDb[_0xd9e2('0x8f')](_0x2c2c26,'[HistoryRecallClose]');}}}}})['catch'](ut['logger2'](_0xd9e2('0x90')));};Preview['prototype']['setMessage']=function(_0x44bae3){_0x44bae3[_0xd9e2('0x57')]=!![];if(ut[_0xd9e2('0x91')](_0x44bae3[_0xd9e2('0x92')])){_0x44bae3['message']=_0xd9e2('0x93');}else if(!ut[_0xd9e2('0x94')](_0x44bae3[_0xd9e2('0x33')])){_0x44bae3[_0xd9e2('0x49')]=_0xd9e2('0x5a');}else if(!this[_0xd9e2('0x95')](_0x44bae3[_0xd9e2('0x4f')])){if(!this[_0xd9e2('0x95')](_0x44bae3[_0xd9e2('0x96')])){_0x44bae3[_0xd9e2('0x49')]='TRUNK_IS_NOT_REACHABLE';}else{_0x44bae3['message']='ACTIVE';}}else{_0x44bae3[_0xd9e2('0x49')]=_0xd9e2('0x97');}emitCampaignPreview(_0x44bae3);};Preview['prototype'][_0xd9e2('0x98')]=function(_0x3c498a,_0xce1b09,_0x2d85cb){var _0x46bd0a=this;var _0x2be24a=this[_0xd9e2('0x18')][_0xce1b09];var _0x15e3d7=this['campaignsPreview'][_0x2be24a[_0xd9e2('0x6a')]];var _0x31ac72;if(_0x15e3d7){switch(_0x2d85cb){case'1':_0x15e3d7[_0xd9e2('0x3a')]+=0x1;_0x2be24a['countnosuchnumberretry']+=0x1;_0x2be24a[_0xd9e2('0x99')]=ut[_0xd9e2('0x9a')](_0x2be24a);ut[_0xd9e2('0x8b')](_0x2be24a,0x0,_0xd9e2('0x9b'));ami[_0xd9e2('0x27')]('custom:agentnosuchnumber',ut[_0xd9e2('0x9c')](_0x2be24a,_0xd9e2('0x9d')));rpcDb[_0xd9e2('0x8d')](_0x2be24a,_0xd9e2('0x9e'));if(ut[_0xd9e2('0x9a')](_0x2be24a)>=_0x15e3d7['dialGlobalMaxRetry']){_0x31ac72=ut['cloneAction'](_0x2be24a,0xf,_0xd9e2('0x9f'));rpcDb['createCustomerFinal'](_0x31ac72,_0xd9e2('0xa0'));}else{if(_0x2be24a['countnosuchnumberretry']>=_0x15e3d7[_0xd9e2('0xa1')]){rpcDb[_0xd9e2('0x8f')](_0x2be24a,_0xd9e2('0xa0'));}else{rpcDb[_0xd9e2('0xa2')](ut[_0xd9e2('0xa3')](_0x2be24a,_0xd9e2('0xa4'),_0x15e3d7['dialNoSuchNumberRetryFrequency']),_0x2be24a[_0xd9e2('0xa5')],_0x2be24a[_0xd9e2('0xa6')]);}}delete this[_0xd9e2('0x18')][_0x3c498a['linkedid']];break;case _0xd9e2('0xa7'):var _0x2b122e=moment()[_0xd9e2('0x54')](_0xd9e2('0x85'));_0x2be24a[_0xd9e2('0xa8')]=_0x2b122e;_0x2be24a['answertime']=_0x2b122e;_0x2be24a[_0xd9e2('0x6d')]=!![];_0x15e3d7['pTalking']+=0x1;logger[_0xd9e2('0x67')](_0xd9e2('0xa9'),_0x2be24a[_0xd9e2('0xaa')],_0xd9e2('0xab'),_0x15e3d7[_0xd9e2('0x28')],'pTalking:\x20',_0x15e3d7['pTalking']);ami[_0xd9e2('0x27')](_0xd9e2('0xac'),ut['buildObj'](_0x2be24a,_0xd9e2('0xad'),this['campaignsPreview'][_0x2be24a['queue']]));if(_0x15e3d7[_0xd9e2('0xae')]){ami['emit'](_0xd9e2('0xaf'),ut[_0xd9e2('0xb0')](_0x2be24a));}break;case'16':ami[_0xd9e2('0x27')](_0xd9e2('0xb1'),ut[_0xd9e2('0x9c')](_0x2be24a,'complete',this[_0xd9e2('0x15')][_0x2be24a[_0xd9e2('0x6a')]]));emitVoiceQueueChannelRemove(ut[_0xd9e2('0x9c')](_0x2be24a,_0xd9e2('0xb2')));_0x15e3d7[_0xd9e2('0xb3')]+=0x1;_0x15e3d7['total']+=0x1;_0x15e3d7[_0xd9e2('0x2a')]+=0x1;ut[_0xd9e2('0xb4')](_0x15e3d7,_0xd9e2('0xb5'));_0x2be24a['countglobal']=ut[_0xd9e2('0x9a')](_0x2be24a);ut['logCustomer'](_0x2be24a,0x4,'Answer');rpcDb[_0xd9e2('0x8d')](_0x2be24a,_0xd9e2('0xb6'));rpcDb[_0xd9e2('0x8f')](_0x2be24a,_0xd9e2('0xb7'));rpcDb[_0xd9e2('0xb8')](_0x2be24a);_0x15e3d7[_0xd9e2('0x2d')]+=_0x2be24a[_0xd9e2('0xb9')];_0x15e3d7[_0xd9e2('0x2c')]+=_0x2be24a[_0xd9e2('0xb9')];logger[_0xd9e2('0x67')](_0xd9e2('0xba'),_0x2be24a[_0xd9e2('0xaa')],_0xd9e2('0xab'),_0x15e3d7['name'],'pTalking:\x20',_0x15e3d7[_0xd9e2('0x2b')]);delete this[_0xd9e2('0x18')][_0x3c498a[_0xd9e2('0xbb')]];break;case _0xd9e2('0xbc'):_0x15e3d7[_0xd9e2('0x37')]+=0x1;_0x2be24a['countbusyretry']+=0x1;_0x2be24a[_0xd9e2('0x99')]=ut[_0xd9e2('0x9a')](_0x2be24a);ut[_0xd9e2('0x8b')](_0x2be24a,0x5,_0xd9e2('0xbd'));ami[_0xd9e2('0x27')](_0xd9e2('0xbe'),ut['buildObj'](_0x2be24a,_0xd9e2('0xbf')));rpcDb[_0xd9e2('0x8d')](_0x2be24a,_0xd9e2('0xc0'));if(ut['totalGlobal'](_0x2be24a)>=_0x15e3d7[_0xd9e2('0xc1')]){_0x31ac72=ut[_0xd9e2('0xc2')](_0x2be24a,0xf,_0xd9e2('0x9f'));rpcDb[_0xd9e2('0x8f')](_0x31ac72,_0xd9e2('0xc3'));}else{if(_0x2be24a['countbusyretry']>=_0x15e3d7[_0xd9e2('0xc4')]){rpcDb[_0xd9e2('0x8f')](_0x2be24a,_0xd9e2('0xc0'));}else{rpcDb[_0xd9e2('0xa2')](ut['scheduledAt'](_0x2be24a,_0xd9e2('0xc5'),_0x15e3d7[_0xd9e2('0xc6')]),_0x2be24a[_0xd9e2('0xa5')],_0x2be24a[_0xd9e2('0xa6')]);}}break;case'NOANSWER':_0x15e3d7[_0xd9e2('0x39')]+=0x1;_0x2be24a[_0xd9e2('0xc7')]+=0x1;_0x2be24a[_0xd9e2('0x99')]=ut[_0xd9e2('0x9a')](_0x2be24a);ut['logCustomer'](_0x2be24a,0x3,'NoAnswer');ami['emit'](_0xd9e2('0xc8'),ut[_0xd9e2('0x9c')](_0x2be24a,_0xd9e2('0xc9')));rpcDb[_0xd9e2('0x8d')](_0x2be24a,_0xd9e2('0xca'));if(ut['totalGlobal'](_0x2be24a)>=_0x15e3d7[_0xd9e2('0xc1')]){_0x31ac72=ut[_0xd9e2('0xc2')](_0x2be24a,0xf,_0xd9e2('0x9f'));rpcDb[_0xd9e2('0x8f')](_0x31ac72,_0xd9e2('0xcb'));}else{if(_0x2be24a[_0xd9e2('0xc7')]>=_0x15e3d7[_0xd9e2('0xcc')]){rpcDb[_0xd9e2('0x8f')](_0x2be24a,_0xd9e2('0xca'));}else{rpcDb[_0xd9e2('0xa2')](ut[_0xd9e2('0xa3')](_0x2be24a,_0xd9e2('0xc7'),_0x15e3d7['dialNoAnswerRetryFrequency']),_0x2be24a[_0xd9e2('0xa5')],_0x2be24a[_0xd9e2('0xa6')]);}}break;case _0xd9e2('0xcd'):_0x15e3d7['outboundCongestionCallsDay']+=0x1;_0x2be24a['countcongestionretry']+=0x1;_0x2be24a[_0xd9e2('0x99')]=ut[_0xd9e2('0x9a')](_0x2be24a);ut[_0xd9e2('0x8b')](_0x2be24a,0x8,'Congestion');ami[_0xd9e2('0x27')]('custom:agentcongestion',ut['buildObj'](_0x2be24a,_0xd9e2('0xce')));rpcDb[_0xd9e2('0x8d')](_0x2be24a,'[callProgressDetectingCustomer][logCongestion]');if(ut[_0xd9e2('0x9a')](_0x2be24a)>=_0x15e3d7[_0xd9e2('0xc1')]){_0x31ac72=ut[_0xd9e2('0xc2')](_0x2be24a,0xf,_0xd9e2('0x9f'));rpcDb[_0xd9e2('0x8f')](_0x31ac72,_0xd9e2('0xcf'));}else{if(_0x2be24a['countcongestionretry']>=_0x15e3d7['dialCongestionMaxRetry']){rpcDb[_0xd9e2('0x8f')](_0x2be24a,_0xd9e2('0xd0'));}else{rpcDb['rescheduleContact'](ut[_0xd9e2('0xa3')](_0x2be24a,_0xd9e2('0xd1'),_0x15e3d7[_0xd9e2('0xc6')]),_0x2be24a[_0xd9e2('0xa5')],_0x2be24a[_0xd9e2('0xa6')]);}}break;case'CANCEL':_0x15e3d7['outboundRejectCallsDay']+=0x1;_0x2be24a['countagentrejectretry']+=0x1;_0x2be24a[_0xd9e2('0x99')]=ut[_0xd9e2('0x9a')](_0x2be24a);ut[_0xd9e2('0x8b')](_0x2be24a,0x14,'AgentReject');ami[_0xd9e2('0x27')]('custom:agentreject',ut[_0xd9e2('0x9c')](_0x2be24a,_0xd9e2('0xd2')));rpcDb[_0xd9e2('0x8d')](_0x2be24a,_0xd9e2('0xd3'));if(ut[_0xd9e2('0x9a')](_0x2be24a)>=_0x15e3d7[_0xd9e2('0xc1')]){_0x31ac72=ut[_0xd9e2('0xc2')](_0x2be24a,0x14,_0xd9e2('0xd4'));rpcDb['createCustomerFinal'](_0x31ac72,_0xd9e2('0xd5'));}else{if(_0x2be24a[_0xd9e2('0xd6')]>=_0x15e3d7[_0xd9e2('0xd7')]){rpcDb[_0xd9e2('0x8f')](_0x2be24a,_0xd9e2('0xd5'));}else{rpcDb['rescheduleContact'](ut['scheduledAt'](_0x2be24a,'countagentrejectretry',_0x15e3d7[_0xd9e2('0xd8')]),_0x2be24a[_0xd9e2('0xa5')],_0x2be24a[_0xd9e2('0xa6')]);}}break;case'ABANDONED':_0x15e3d7[_0xd9e2('0x3e')]+=0x1;_0x2be24a[_0xd9e2('0xd9')]+=0x1;_0x2be24a['countglobal']=ut[_0xd9e2('0x9a')](_0x2be24a);ut[_0xd9e2('0x8b')](_0x2be24a,0xb,_0xd9e2('0xda'));rpcDb[_0xd9e2('0x8d')](_0x2be24a,'[callProgressDetectingCustomer][logAbandoned]');if(ut['totalGlobal'](_0x2be24a)>=_0x15e3d7[_0xd9e2('0xc1')]){_0x31ac72=ut[_0xd9e2('0xc2')](_0x2be24a,0xf,_0xd9e2('0x9f'));rpcDb[_0xd9e2('0x8f')](_0x31ac72,_0xd9e2('0xdb'));}else{if(_0x2be24a[_0xd9e2('0xdc')]>=_0x15e3d7[_0xd9e2('0xdd')]){rpcDb[_0xd9e2('0x8f')](_0x2be24a,_0xd9e2('0xdb'));}else{rpcDb[_0xd9e2('0xa2')](ut['scheduledAt'](_0x2be24a,_0xd9e2('0xd9'),_0x15e3d7[_0xd9e2('0xde')]),_0x2be24a[_0xd9e2('0xa5')],_0x2be24a['activeContact']);}}break;case'18':_0x15e3d7[_0xd9e2('0x3d')]+=0x1;_0x2be24a['countmachineretry']+=0x1;_0x2be24a[_0xd9e2('0x99')]=ut[_0xd9e2('0x9a')](_0x2be24a);ut[_0xd9e2('0x8b')](_0x2be24a,0x12,_0x3c498a[_0xd9e2('0xdf')]||_0x3c498a[_0xd9e2('0xe0')]);ami['emit'](_0xd9e2('0xe1'),ut['buildObj'](_0x2be24a,_0xd9e2('0xe2')));rpcDb[_0xd9e2('0x8d')](_0x2be24a,_0xd9e2('0xe3'));if(ut[_0xd9e2('0x9a')](_0x2be24a)>=_0x15e3d7[_0xd9e2('0xc1')]){_0x31ac72=ut[_0xd9e2('0xc2')](_0x2be24a,0xf,_0xd9e2('0x9f'));rpcDb[_0xd9e2('0x8f')](_0x31ac72,_0xd9e2('0xe3'));}else{rpcDb['createCustomerFinal'](_0x2be24a,_0xd9e2('0xe3'));}delete this[_0xd9e2('0x18')][_0x3c498a['linkedid']];break;case'19':_0x15e3d7[_0xd9e2('0x3d')]+=0x1;_0x2be24a['countglobal']=ut[_0xd9e2('0x9a')](_0x2be24a);ut[_0xd9e2('0x8b')](_0x2be24a,0x13,_0x3c498a[_0xd9e2('0xdf')]||_0x3c498a[_0xd9e2('0xe0')]);ami[_0xd9e2('0x27')](_0xd9e2('0xe1'),ut[_0xd9e2('0x9c')](_0x2be24a,_0xd9e2('0xe2')));rpcDb['createCustomerHistory'](_0x2be24a,_0xd9e2('0xe4'));if(ut[_0xd9e2('0x9a')](_0x2be24a)>=_0x15e3d7[_0xd9e2('0xc1')]){_0x31ac72=ut[_0xd9e2('0xc2')](_0x2be24a,0xf,_0xd9e2('0x9f'));rpcDb[_0xd9e2('0x8f')](_0x31ac72,_0xd9e2('0xe4'));}else{rpcDb['createCustomerFinal'](_0x2be24a,_0xd9e2('0xe4'));}delete this[_0xd9e2('0x18')][_0x3c498a['linkedid']];break;default:if(_0x2be24a[_0xd9e2('0x6d')]){ut[_0xd9e2('0xb4')](_0x15e3d7,'[default]');ut[_0xd9e2('0x78')](_0xd9e2('0xe5')+_0x15e3d7['name'],_0x3c498a);}_0x15e3d7[_0xd9e2('0x3d')]+=0x1;_0x2be24a[_0xd9e2('0x99')]=ut[_0xd9e2('0x9a')](_0x2be24a);ut['logCustomer'](_0x2be24a,0xc,_0x3c498a[_0xd9e2('0xdf')]||_0x3c498a['dialstatus']);rpcDb[_0xd9e2('0x8d')](_0x2be24a,'[callProgressDetectingCustomer][logUnknown]');if(ut[_0xd9e2('0x9a')](_0x2be24a)>=_0x15e3d7[_0xd9e2('0xc1')]){_0x31ac72=ut['cloneAction'](_0x2be24a,0xf,_0xd9e2('0x9f'));rpcDb[_0xd9e2('0x8f')](_0x31ac72,_0xd9e2('0xe6'));}else{rpcDb[_0xd9e2('0x8f')](_0x2be24a,'[callProgressDetectingCustomer][logUnknownGlobal]');}delete this[_0xd9e2('0x18')][_0x3c498a[_0xd9e2('0xbb')]];}if(!(_0x2be24a[_0xd9e2('0x6d')]&&_0x2d85cb==='16')){ut[_0xd9e2('0x76')](_0x15e3d7,_0xd9e2('0xe7'));logger[_0xd9e2('0x67')]('[originated][decrement][callProgressDetectingCustomer]',_0x2be24a[_0xd9e2('0xaa')],_0xd9e2('0xab'),_0x15e3d7['name'],_0xd9e2('0x6b'),_0x15e3d7[_0xd9e2('0x4a')]);}if(_0x2d85cb!==_0xd9e2('0xa7')){delete this[_0xd9e2('0x18')][_0x3c498a[_0xd9e2('0xbb')]];delete this[_0xd9e2('0x18')][_0x3c498a['destlinkedid']];}}};Preview[_0xd9e2('0x5f')][_0xd9e2('0xe8')]=function(_0x323711,_0x242511,_0x4e196b){if(_['isUndefined'](_0x242511)&&'object'!==typeof _0x242511){return;}if(_[_0xd9e2('0xe9')](_0x4e196b)&&'object'!==typeof _0x4e196b){return;}switch(_0x4e196b[_0xd9e2('0xea')]){case'0':ut[_0xd9e2('0xeb')](_0x323711,0x0,_0xd9e2('0x9b'));rpcDb[_0xd9e2('0xec')](_0x323711,'[callProgressDetectingAgent][logNoSuch]');break;case'3':ut['logAgent'](_0x323711,0x3,_0xd9e2('0xed'));rpcDb[_0xd9e2('0xec')](_0x323711,_0xd9e2('0xee'));break;case'5':ut[_0xd9e2('0xeb')](_0x323711,0x5,_0xd9e2('0xbd'));rpcDb[_0xd9e2('0xec')](_0x323711,_0xd9e2('0xef'));break;case'8':ut[_0xd9e2('0xeb')](_0x323711,0x8,_0xd9e2('0xf0'));rpcDb['createAgentHistory'](_0x323711,_0xd9e2('0xf1'));break;case'22':ut['logAgent'](_0x323711,0x16,_0xd9e2('0xf2'));rpcDb[_0xd9e2('0xec')](_0x323711,_0xd9e2('0xf3'));break;default:ut['logAgent'](_0x323711,0xc,_0x4e196b[_0xd9e2('0xea')]);rpcDb[_0xd9e2('0xec')](_0x323711,'[callProgressDetectingAgent][logCongestion]');}ut[_0xd9e2('0x76')](_0x242511,_0xd9e2('0xf4'));logger[_0xd9e2('0x67')](_0xd9e2('0xf5'),_0x323711[_0xd9e2('0xaa')],_0xd9e2('0xab'),_0x242511['name'],'originated:\x20',_0x242511[_0xd9e2('0x4a')]);delete this['actions'][_0x323711[_0xd9e2('0xaa')]];};Preview[_0xd9e2('0x5f')][_0xd9e2('0xf6')]=function(_0x3bdca8,_0x3f9dfb,_0x1f030f,_0x1da4ad,_0x180674){var _0x4fe086=this;return new BPromise(function(_0xe4c9c8,_0x3ae24a){if(_[_0xd9e2('0xf7')](_0x3f9dfb)||_[_0xd9e2('0xf7')](_0x3f9dfb[_0xd9e2('0xf8')])||_[_0xd9e2('0xf7')](_0x3f9dfb[_0xd9e2('0xf8')][_0xd9e2('0xf9')])||_[_0xd9e2('0xf7')](_0x3f9dfb[_0xd9e2('0x70')])){_0x3ae24a(ut[_0xd9e2('0x49')]('Contact\x20is\x20undefined',_0x1da4ad,_0x180674));return;}var _0x5edbd5=uuid['v4']();var _0x18395b=_0x4fe086[_0xd9e2('0x15')][_0x3f9dfb[_0xd9e2('0x69')][_0xd9e2('0x28')]];var _0x4f3e8c=_0x1f030f?_0x4fe086[_0xd9e2('0x19')][_0x1f030f]['id']:undefined;_0x4fe086[_0xd9e2('0x18')][_0x5edbd5]=new Action(_0x3f9dfb,_0x18395b,_0x5edbd5,_0x1f030f,_0x4f3e8c);var _0x58eaa0=_0x4fe086[_0xd9e2('0x18')][_0x5edbd5];_0x58eaa0[_0xd9e2('0xa5')]=_0x1da4ad;_0x58eaa0['activeContact']=_0x180674;_0x58eaa0[_0xd9e2('0xfa')]=_0x1f030f;if(_['isEmpty'](_0x3bdca8)){_0x4fe086[_0xd9e2('0xfb')](_0x58eaa0,_0x18395b,_0x3f9dfb,_0x1f030f)[_0xd9e2('0x7d')](function(_0x5c1b6b){logger[_0xd9e2('0x67')](_0xd9e2('0xfc'),_0xd9e2('0xfd')+_0x58eaa0[_0xd9e2('0x6a')]+'\x20IdHopper:\x20'+_0x58eaa0[_0xd9e2('0xfe')],JSON[_0xd9e2('0x53')](_0x5c1b6b));ami['emit'](_0xd9e2('0xff'),ut[_0xd9e2('0x9c')](_0x58eaa0,'called',_0x4fe086['campaignsPreview'][_0x58eaa0[_0xd9e2('0x6a')]]));_0xe4c9c8(ut[_0xd9e2('0x49')](_0xd9e2('0x100')));})[_0xd9e2('0x74')](function(_0x4026e4){ut[_0xd9e2('0x101')]('[Preview][execCall][failure]',_0x4026e4);_0x3ae24a(ut[_0xd9e2('0x49')]('Call\x20failed',_0x1da4ad,_0x180674));});}else{_0x18395b[_0xd9e2('0x36')]+=0x1;ut[_0xd9e2('0x102')](_0x58eaa0);rpcDb[_0xd9e2('0x103')](_0x58eaa0,_0xd9e2('0x104'));delete _0x4fe086[_0xd9e2('0x18')][_0x5edbd5];_0x3ae24a(ut[_0xd9e2('0x49')]('Contact\x20in\x20black\x20List',_0x1da4ad,_0x180674));}});};Preview[_0xd9e2('0x5f')][_0xd9e2('0x95')]=function(_0x3fcdee){return!_[_0xd9e2('0xf7')](_0x3fcdee)&&!_[_0xd9e2('0xf7')](_0x3fcdee[_0xd9e2('0x28')])&&!_[_0xd9e2('0xf7')](_0x3fcdee['active'])&&_0x3fcdee[_0xd9e2('0x50')]&&!_[_0xd9e2('0xf7')](this[_0xd9e2('0x17')][util[_0xd9e2('0x54')](_0xd9e2('0x105'),_0x3fcdee[_0xd9e2('0x28')])])&&!_['isNil'](this[_0xd9e2('0x17')][util['format'](_0xd9e2('0x105'),_0x3fcdee[_0xd9e2('0x28')])]['status'])&&(this['trunks'][util[_0xd9e2('0x54')](_0xd9e2('0x105'),_0x3fcdee['name'])][_0xd9e2('0x106')]===_0xd9e2('0x107')||this[_0xd9e2('0x17')][util['format'](_0xd9e2('0x105'),_0x3fcdee[_0xd9e2('0x28')])][_0xd9e2('0x106')]===_0xd9e2('0x108'));};Preview['prototype'][_0xd9e2('0x81')]=function(_0x5d3c35,_0x5e081e){var _0x481d0f=this;return new BPromise(function(_0x49eacb,_0x3a2051){_0x481d0f[_0xd9e2('0x109')](_0x5d3c35,_0x5e081e)[_0xd9e2('0x7d')](function(_0x3c4184){_0x49eacb(_[_0xd9e2('0x6e')](_0x3c4184,['message']));})[_0xd9e2('0x74')](function(_0x1cd1b3){if(_0x1cd1b3[_0xd9e2('0x10a')]){rpcDb[_0xd9e2('0x10b')](_0x5d3c35);}if(_0x1cd1b3[_0xd9e2('0x50')]){rpcDb['disableContact'](_0x5d3c35);}_0x3a2051(_['pick'](_0x1cd1b3,[_0xd9e2('0x49')]));});});};Preview[_0xd9e2('0x5f')][_0xd9e2('0x109')]=function(_0xc71aa3,_0x2cb10d){var _0x26288d=this;return new BPromise(function(_0x2f8202,_0x6930a8){var _0x334624,_0x45acf4;rpcDb['getContactPreview'](_0xc71aa3)[_0xd9e2('0x7d')](function(_0x34be66){if(!_[_0xd9e2('0xf7')](_0x34be66[0x0])){_0x45acf4=_0x34be66[0x0][_0xd9e2('0x10c')]?![]:!![];_0x334624=_0x34be66[0x0]['recallme']?!![]:![];_0x334624=_0x2cb10d?!![]:_0x334624;}var _0x14b5aa=_0x26288d['validateContact'](_0x34be66);if(_0x14b5aa[_0xd9e2('0x10d')]){rpcDb[_0xd9e2('0x10e')](_[_0xd9e2('0x6e')](_0x34be66[0x0],[_0xd9e2('0x70'),_0xd9e2('0x10f')]))['then'](function(_0x1a29e9){_0x26288d['checkInBlack'](_0x1a29e9,_0x34be66[0x0],_0x2cb10d,_0x45acf4,_0x334624)[_0xd9e2('0x7d')](function(_0x5166c2){_0x2f8202(_0x5166c2);})['catch'](function(_0x3bab28){_0x6930a8(_0x3bab28);});})['catch'](function(_0x39e914){ut[_0xd9e2('0x101')](_0xd9e2('0x110'),_0x39e914);_0x6930a8(ut[_0xd9e2('0x49')](_0xd9e2('0x111'),_0x45acf4,_0x334624));});}else{_0x6930a8(ut[_0xd9e2('0x49')](_0x14b5aa[_0xd9e2('0x49')],_0x45acf4,_0x334624));}})[_0xd9e2('0x74')](function(_0x4c7511){ut[_0xd9e2('0x101')]('[Preview][getContactPreview]',_0x4c7511);_0x6930a8(ut[_0xd9e2('0x49')](_0xd9e2('0x111'),![],!![]));});});};Preview[_0xd9e2('0x5f')][_0xd9e2('0x112')]=function(_0x312742){if(_[_0xd9e2('0xf7')](_0x312742)||_['isEmpty'](_0x312742)||!_[_0xd9e2('0xf7')](_0x312742[0x0][_0xd9e2('0x80')])&&_[_0xd9e2('0xf7')](_0x312742[0x0]['Agent'][_0xd9e2('0x28')])){ut[_0xd9e2('0x101')](_0xd9e2('0x113'),_0x312742);return{'isValid':![],'message':_0xd9e2('0x114')};}var _0x510328=this['campaignsPreview'][_0x312742[0x0]['Queue'][_0xd9e2('0x28')]];_0x510328[_0xd9e2('0x49')]=_0xd9e2('0x97');if(_[_0xd9e2('0xf7')](_0x510328)){ut[_0xd9e2('0x101')](_0xd9e2('0x115'),_0x510328);return{'isValid':![],'message':_0xd9e2('0x116')};}if(!this[_0xd9e2('0x95')](_0x510328[_0xd9e2('0x4f')])){ut[_0xd9e2('0x101')](_0xd9e2('0x117'),_0xd9e2('0x118')+_0x510328['name']+_0xd9e2('0x119'));if(!this[_0xd9e2('0x95')](_0x510328[_0xd9e2('0x96')])){ut[_0xd9e2('0x101')]('[Preview][validateContact][Trunk\x20not\x20work]',_0x510328['name']+_0xd9e2('0x11a'));return{'isValid':![],'message':_0xd9e2('0x11b')};}}if(!ut[_0xd9e2('0x94')](_0x510328[_0xd9e2('0x33')])){ut[_0xd9e2('0x101')](_0xd9e2('0x11c'),_0x510328[_0xd9e2('0x28')]+_0xd9e2('0x11d'));return{'isValid':![],'message':_0xd9e2('0x118')+_0x510328[_0xd9e2('0x28')]+_0xd9e2('0x11d')};}return{'isValid':!![],'message':_0xd9e2('0x11e')};};Preview['prototype'][_0xd9e2('0xfb')]=function(_0x2a91d1,_0x4cc567,_0xaf0ab0,_0x1297eb){var _0x41bb4d=this;return new BPromise(function(_0x3d1339,_0x2a273c){var _0x1b84a9=_0x2a91d1[_0xd9e2('0xaa')];var _0xb0be64=_0x41bb4d[_0xd9e2('0x95')](_0x4cc567[_0xd9e2('0x4f')])?util[_0xd9e2('0x54')](_0xd9e2('0x11f'),_0x4cc567[_0xd9e2('0x4f')]['name'],_[_0xd9e2('0xf7')](_0x4cc567[_0xd9e2('0x120')])?'':_0x4cc567[_0xd9e2('0x120')][_0xd9e2('0x121')]()||'',_0x4cc567[_0xd9e2('0x122')]>0x0?_0xaf0ab0[_0xd9e2('0xf8')][_0xd9e2('0xf9')][_0xd9e2('0x123')](_0x4cc567['dialCutDigit']):_0xaf0ab0[_0xd9e2('0xf8')]['phone']):util[_0xd9e2('0x54')](_0xd9e2('0x11f'),_[_0xd9e2('0xf7')](_0x4cc567[_0xd9e2('0x96')])?_0x4cc567[_0xd9e2('0x4f')][_0xd9e2('0x28')]:_0x4cc567['TrunkBackup']['name'],_['isNil'](_0x4cc567[_0xd9e2('0x120')])?'':_0x4cc567[_0xd9e2('0x120')][_0xd9e2('0x121')]()||'',_0x4cc567[_0xd9e2('0x122')]>0x0?_0xaf0ab0[_0xd9e2('0xf8')][_0xd9e2('0xf9')][_0xd9e2('0x123')](_0x4cc567[_0xd9e2('0x122')]):_0xaf0ab0[_0xd9e2('0xf8')][_0xd9e2('0xf9')]);var _0x2ffc19=_0x41bb4d['isTrunkReachable'](_0x4cc567['Trunk'])?ut['getCallerId'](_0x4cc567['Trunk'][_0xd9e2('0x51')],_0x4cc567[_0xd9e2('0x35')],_0x4cc567[_0xd9e2('0x124')]>0x0?ut[_0xd9e2('0x125')](_0x4cc567[_0xd9e2('0x126')],_0x4cc567[_0xd9e2('0x124')]):_0x4cc567[_0xd9e2('0x126')]):ut['getCallerId'](_[_0xd9e2('0xf7')](_0x4cc567[_0xd9e2('0x96')])?_0x4cc567[_0xd9e2('0x4f')][_0xd9e2('0x51')]:_0x4cc567[_0xd9e2('0x96')][_0xd9e2('0x51')],_0x4cc567['dialOriginateCallerIdName'],_0x4cc567[_0xd9e2('0x124')]>0x0?ut[_0xd9e2('0x125')](_0x4cc567[_0xd9e2('0x126')],_0x4cc567['dialRandomLastDigitCallerIdNumber']):_0x4cc567[_0xd9e2('0x126')]);if(_0x2ffc19){_0x2a91d1['originatecalleridname']=ut[_0xd9e2('0x127')](_0x2ffc19);_0x2a91d1[_0xd9e2('0x128')]=ut[_0xd9e2('0x129')](_0x2ffc19);}var _0x3b7e52=ut[_0xd9e2('0x12a')](_0x4cc567,_0xaf0ab0,_0xb0be64,_0x2ffc19,_0x1b84a9,_0x2a91d1);_[_0xd9e2('0x12b')](_0x2a91d1,ut[_0xd9e2('0x12c')](_0x3b7e52));_0x2a91d1[_0xd9e2('0x12d')]=moment()[_0xd9e2('0x54')](_0xd9e2('0x85'));ami[_0xd9e2('0x72')](ut[_0xd9e2('0x12e')](_0x2a91d1,_0x4cc567,_0x3b7e52,_0x2a91d1[_0xd9e2('0xa6')],_0x1297eb))['then'](function(_0x51fc87){var _0xfe5f9b=_0x2a91d1[_0xd9e2('0x12f')];if(!_[_0xd9e2('0xf7')](_0xfe5f9b)){if(!_[_0xd9e2('0xf7')](_0x41bb4d[_0xd9e2('0x19')][_0xfe5f9b])){_0x41bb4d[_0xd9e2('0x19')][_0xfe5f9b]['destconnectedlinenum']=_0x2a91d1[_0xd9e2('0x130')];emit(util['format'](_0xd9e2('0x131'),_0x41bb4d[_0xd9e2('0x19')][_0xfe5f9b][_0xd9e2('0x28')]),_0xd9e2('0x132'),{'destaccountcode':_0x41bb4d['agents'][_0xfe5f9b][_0xd9e2('0x133')],'destconnectedlinenum':_0x2a91d1[_0xd9e2('0x130')]});}}_0x4cc567['originated']+=0x1;logger[_0xd9e2('0x67')](_0xd9e2('0x134'),_0x1b84a9,'\x20Queue',_0x4cc567['name'],_0xd9e2('0x6b'),_0x4cc567[_0xd9e2('0x4a')]);_0x3d1339(_0x51fc87);})[_0xd9e2('0x74')](function(_0x19d750){ut['logAgent'](_0x2a91d1,0xe,_0xd9e2('0x135'));rpcDb['createAgentHistory'](_0x2a91d1,_0xd9e2('0x136'));_0x2a273c(_0x19d750);});});};Preview[_0xd9e2('0x5f')]['syncNewExten']=function(_0x3dc33c){if(this[_0xd9e2('0x18')][_0x3dc33c['linkedid']]){this[_0xd9e2('0x18')][_0x3dc33c[_0xd9e2('0xbb')]][_0xd9e2('0x73')]=_0x3dc33c[_0xd9e2('0x73')];}};Preview[_0xd9e2('0x5f')]['syncOriginateResponse']=function(_0x142f07){var _0x32b95a=this;var _0x3bc957=this[_0xd9e2('0x18')][_0x142f07[_0xd9e2('0x137')]];if(_0x3bc957){if(_0x3bc957[_0xd9e2('0xfa')]&&this[_0xd9e2('0x19')][_0x3bc957[_0xd9e2('0xfa')]]){ut[_0xd9e2('0x138')](_0x3bc957,this[_0xd9e2('0x19')][_0x3bc957['lookAgent']][_0xd9e2('0x28')],this[_0xd9e2('0x19')][_0x3bc957['lookAgent']]['id']);}var _0xfc7d7=_['clone'](_0x3bc957);_0xfc7d7[_0xd9e2('0xa8')]=moment()[_0xd9e2('0x54')](_0xd9e2('0x85'));var _0x14e2b7=_0x32b95a[_0xd9e2('0x15')][_0x3bc957[_0xd9e2('0x6a')]];if(ut[_0xd9e2('0x139')](_0x142f07[_0xd9e2('0x13a')])){if(_0x3bc957['unlockAgent']){rpcDb[_0xd9e2('0x10b')](_0x3bc957['idContact']);}if(_0x3bc957[_0xd9e2('0xa6')]){rpcDb[_0xd9e2('0x84')](_0x3bc957[_0xd9e2('0xfe')]);}ami[_0xd9e2('0x27')](_0xd9e2('0x13b'),ut['buildObj'](_0x3bc957,_0xd9e2('0x13c'),this[_0xd9e2('0x15')][_0x3bc957[_0xd9e2('0x6a')]]));this[_0xd9e2('0xe8')](_0xfc7d7,_0x14e2b7,_0x142f07);}else{_0x3bc957[_0xd9e2('0x12d')]=moment()[_0xd9e2('0x54')]('YYYY-MM-DD\x20HH:mm:ss');ut[_0xd9e2('0xeb')](_0xfc7d7,0x4,_0xd9e2('0x13d'));rpcDb[_0xd9e2('0xec')](_0xfc7d7,_0xd9e2('0x13e'));}}};Preview['prototype'][_0xd9e2('0x1d')]=function(_0x2403d3){var _0xc48b76=this;var _0x20ea59=this[_0xd9e2('0x18')][_0x2403d3[_0xd9e2('0xbb')]];var _0x392def;if(_0x20ea59){_0x392def=this['campaignsPreview'][_0x20ea59[_0xd9e2('0x6a')]];logger['info'](_0xd9e2('0x13f'),_0x2403d3[_0xd9e2('0xbb')],'\x20Queue',_0x392def[_0xd9e2('0x28')],'pTalking:\x20',_0x392def[_0xd9e2('0x2b')]);}if(this[_0xd9e2('0x18')][_0x2403d3[_0xd9e2('0xbb')]]&&_0x2403d3[_0xd9e2('0xbb')]!==_0x2403d3['uniqueid']){if(_0x2403d3[_0xd9e2('0x140')]==='16'&&this[_0xd9e2('0x18')][_0x2403d3[_0xd9e2('0xbb')]][_0xd9e2('0x6d')]){this['callProgressDetectingCustomer'](_0x2403d3,_0x2403d3[_0xd9e2('0xbb')],_0x2403d3[_0xd9e2('0x140')]);}else if(this[_0xd9e2('0x18')][_0x2403d3['linkedid']][_0xd9e2('0x6d')]){logger[_0xd9e2('0x67')](_0xd9e2('0x141'),_0x2403d3['linkedid'],_0x2403d3[_0xd9e2('0x140')],_0xd9e2('0xab'),_0x392def[_0xd9e2('0x28')],'pTalking:\x20',_0x392def[_0xd9e2('0x2b')]);this[_0xd9e2('0x98')](_0x2403d3,_0x2403d3[_0xd9e2('0xbb')],_0x2403d3['cause']);}}else if(_0x20ea59&&_[_0xd9e2('0xf7')](_0x20ea59[_0xd9e2('0x142')])&&_0x392def[_0xd9e2('0x143')]&&_0x2403d3[_0xd9e2('0xbb')]===_0x2403d3['uniqueid']&&_[_0xd9e2('0xf7')](_0x2403d3[_0xd9e2('0xea')])&&_0x2403d3[_0xd9e2('0x140')]==='16'&&_0x2403d3[_0xd9e2('0x144')]==='6'&&_[_0xd9e2('0xe9')](_0x20ea59[_0xd9e2('0x145')])){if(_0x20ea59[_0xd9e2('0xa5')]){rpcDb[_0xd9e2('0x10b')](_0x20ea59[_0xd9e2('0xfe')]);}if(_0x20ea59[_0xd9e2('0xa6')]){rpcDb[_0xd9e2('0x84')](_0x20ea59[_0xd9e2('0xfe')]);}_0x2403d3['reason']='22';this[_0xd9e2('0xe8')](_0x20ea59,_0x392def,_0x2403d3);}else if(_0x20ea59&&_0x20ea59['transfer']){if(_0x2403d3[_0xd9e2('0x140')]==='16'&&this[_0xd9e2('0x18')][_0x2403d3['linkedid']]['dialAnswer']){logger['info'](_0xd9e2('0x146'),_0x2403d3['linkedid'],_0x2403d3[_0xd9e2('0x140')],_0xd9e2('0xab'),_0x392def[_0xd9e2('0x28')],_0xd9e2('0x6c'),_0x392def[_0xd9e2('0x2b')]);this['callProgressDetectingCustomer'](_0x2403d3,_0x2403d3[_0xd9e2('0xbb')],_0x2403d3[_0xd9e2('0x140')]);}else if(this[_0xd9e2('0x18')][_0x2403d3[_0xd9e2('0xbb')]][_0xd9e2('0x6d')]){logger[_0xd9e2('0x67')](_0xd9e2('0x141'),_0x2403d3[_0xd9e2('0xbb')],_0x2403d3[_0xd9e2('0x140')],_0xd9e2('0xab'),_0x392def['name'],_0xd9e2('0x6c'),_0x392def[_0xd9e2('0x2b')]);this[_0xd9e2('0x98')](_0x2403d3,_0x2403d3[_0xd9e2('0xbb')],_0x2403d3['cause']);}}};Preview[_0xd9e2('0x5f')][_0xd9e2('0x1f')]=function(_0x3b5036){if(this[_0xd9e2('0x18')][_0x3b5036[_0xd9e2('0x147')]]&&_0x3b5036[_0xd9e2('0x147')]!==_0x3b5036[_0xd9e2('0x148')]){this[_0xd9e2('0x98')](_0x3b5036,_0x3b5036[_0xd9e2('0x147')],_0x3b5036[_0xd9e2('0xe0')]);}};Preview['prototype'][_0xd9e2('0x149')]=function(_0x5939bd){if(this['actions'][_0x5939bd[_0xd9e2('0xbb')]]&&_0x5939bd[_0xd9e2('0xbb')]!==_0x5939bd[_0xd9e2('0xaa')]&&!this['actions'][_0x5939bd[_0xd9e2('0xbb')]][_0xd9e2('0x6d')]){if(_0x5939bd['cause']==='1'){this['callProgressDetectingCustomer'](_0x5939bd,_0x5939bd[_0xd9e2('0xbb')],_0x5939bd[_0xd9e2('0x140')]);}}};Preview[_0xd9e2('0x5f')]['addVariable']=function(_0x2b5ca9,_0x5926a5,_0x30f29f){if(this[_0xd9e2('0x18')][_0x2b5ca9]){if(_[_0xd9e2('0xf7')](this[_0xd9e2('0x18')][_0x2b5ca9][_0xd9e2('0x14a')])){this[_0xd9e2('0x18')][_0x2b5ca9]['variables']={};}this[_0xd9e2('0x18')][_0x2b5ca9][_0xd9e2('0x14a')][_0x5926a5]=_0x30f29f;}};Preview[_0xd9e2('0x5f')][_0xd9e2('0x22')]=function(_0x3c766a){try{if(!_[_0xd9e2('0xf7')](_0x3c766a)){if(ut[_0xd9e2('0x14b')](_['keys'](_0x3c766a['variable'])[0x0])){this[_0xd9e2('0x14c')](_0x3c766a[_0xd9e2('0xaa')],_[_0xd9e2('0x14d')](_0x3c766a['variable'])[0x0],_0x3c766a['value']);}}}catch(_0x5b5ddd){logger['error'](_0xd9e2('0x14e'),util[_0xd9e2('0x14f')](_0x5b5ddd,{'showHidden':![],'depth':null}));}};Preview[_0xd9e2('0x5f')][_0xd9e2('0x24')]=function(_0x792c44){if(_0x792c44){if(this[_0xd9e2('0x18')][_0x792c44[_0xd9e2('0x150')]]){this[_0xd9e2('0x18')][_0x792c44[_0xd9e2('0x150')]][_0xd9e2('0x145')]=!![];}}};Preview['prototype'][_0xd9e2('0x25')]=function(_0x274b64){if(_0x274b64){if(this[_0xd9e2('0x18')][_0x274b64[_0xd9e2('0x151')]]){this[_0xd9e2('0x18')][_0x274b64[_0xd9e2('0x151')]][_0xd9e2('0x145')]=!![];}}};module[_0xd9e2('0x152')]=Preview;
\ No newline at end of file
index 5ff6951..c0fc859 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb272=['[moveContactManagedDialer]\x20','checkIsBlackList','[checkIsBlackList]\x20','getContactPreview','[getContactPreview]\x20','createAgentHistory','createCustomerHistory','createCustomerFinal','rescheduleContact','UserId','active','countReScheduled','[countReScheduled]\x20','unlockContact','[activeContact]\x20','crateCustomerReportQueue','type','uniqueid','calleridnum','calleridname','queue','queuecallerjoinAt','answertime','queuecallerleaveAt','queuecallercomplete','queuecallercompleteAt','endtime','connectedlinename','context','from-sip','xcally-motion-preview','holdtime','assigned','lastAssignedTo','queuecallerexitreason','COMPLETED','create','[voiceQueueReport]\x20','getContactRecallMe','[rescheduleContactInQueue]\x20','util','bluebird','../../../config/logger','preview','../rpc/cmHopper','../rpc/cmHopperFinal','../rpc/cmHopperHistory','../rpc/cmHopperBlack','../rpc/voiceQueueRt','../rpc/voiceQueueReport','error','inspect','resolve','createHistory','catch','[createHistory]\x20','then','moveContactManagedDialer'];(function(_0x20a584,_0xe384a5){var _0x4b41a8=function(_0x2127c6){while(--_0x2127c6){_0x20a584['push'](_0x20a584['shift']());}};_0x4b41a8(++_0xe384a5);}(_0xb272,0x184));var _0x2b27=function(_0xa1e030,_0x579969){_0xa1e030=_0xa1e030-0x0;var _0x1619bb=_0xb272[_0xa1e030];return _0x1619bb;};'use strict';var util=require(_0x2b27('0x0'));var BPromise=require(_0x2b27('0x1'));var logger=require(_0x2b27('0x2'))(_0x2b27('0x3'));var _=require('lodash');var cmHopper=require(_0x2b27('0x4'));var cmHopperFinal=require(_0x2b27('0x5'));var cmHopperHistory=require(_0x2b27('0x6'));var cmHopperBlack=require(_0x2b27('0x7'));var voiceQueueRt=require(_0x2b27('0x8'));var agentReportPreview=require('../rpc/agentReportPreview');var voiceQueueReport=require(_0x2b27('0x9'));function loggerCatch(_0x35aac5){return function(_0x32245e){logger[_0x2b27('0xa')](_0x35aac5,util[_0x2b27('0xb')](_0x32245e,{'showHidden':![],'depth':null}));};}function create(_0x4d946b){return BPromise[_0x2b27('0xc')]()['then'](cmHopperHistory[_0x2b27('0xd')](_0x4d946b))[_0x2b27('0xe')](loggerCatch(_0x2b27('0xf')));}function createAgent(_0x30ac84){return BPromise[_0x2b27('0xc')]()[_0x2b27('0x10')](agentReportPreview['createHistory'](_0x30ac84))[_0x2b27('0xe')](loggerCatch(_0x2b27('0xf')));}function moveContact(_0x1bad77){return BPromise['resolve']()['then'](cmHopper[_0x2b27('0x11')](_0x1bad77,!![]))['catch'](loggerCatch(_0x2b27('0x12')));}exports[_0x2b27('0x13')]=function(_0x2dcbc6){return BPromise[_0x2b27('0xc')]()[_0x2b27('0x10')](cmHopperBlack['checkIsBlackList'](_0x2dcbc6))[_0x2b27('0xe')](loggerCatch(_0x2b27('0x14')));};exports['getContactPreview']=function(_0x56895f){return BPromise[_0x2b27('0xc')]()[_0x2b27('0x10')](cmHopper[_0x2b27('0x15')](_0x56895f))[_0x2b27('0xe')](loggerCatch(_0x2b27('0x16')));};exports[_0x2b27('0xd')]=function(_0x4a7be6,_0x197e3a){create(_0x4a7be6)[_0x2b27('0xe')](loggerCatch(_0x197e3a));moveContact(_0x4a7be6)[_0x2b27('0xe')](loggerCatch(_0x197e3a));};exports[_0x2b27('0x17')]=function(_0x104b16,_0x10652c){createAgent(_0x104b16)[_0x2b27('0xe')](loggerCatch(_0x10652c));};exports[_0x2b27('0x18')]=function(_0x5775f4,_0x418932){create(_0x5775f4)[_0x2b27('0xe')](loggerCatch(_0x418932));};exports[_0x2b27('0x19')]=function(_0x28a75c,_0x154b2c){moveContact(_0x28a75c)[_0x2b27('0xe')](loggerCatch(_0x154b2c));};exports[_0x2b27('0x1a')]=function(_0x37aa52,_0x4d6e29,_0xda4bed){if(_0x4d6e29){_0x37aa52[_0x2b27('0x1b')]=null;}if(_0xda4bed){_0x37aa52[_0x2b27('0x1c')]=![];}return BPromise[_0x2b27('0xc')]()['then'](cmHopper['rescheduleContact'](_0x37aa52))[_0x2b27('0xe')](loggerCatch('[rescheduleContact]\x20'));};exports[_0x2b27('0x1d')]=function(_0x594acf){return BPromise['resolve']()['then'](cmHopper[_0x2b27('0x1d')](_0x594acf))[_0x2b27('0xe')](loggerCatch(_0x2b27('0x1e')));};exports[_0x2b27('0x1f')]=function(_0x587481){return BPromise[_0x2b27('0xc')]()[_0x2b27('0x10')](cmHopper[_0x2b27('0x1f')]({'UserId':null},_0x587481,0x1))['catch'](loggerCatch('[unlockContact]\x20'));};exports['disableContact']=function(_0x347581){return BPromise[_0x2b27('0xc')]()[_0x2b27('0x10')](cmHopper[_0x2b27('0x1f')]({'active':![]},_0x347581,0x1))[_0x2b27('0xe')](loggerCatch(_0x2b27('0x20')));};exports[_0x2b27('0x21')]=function(_0xc77f36){var _0x3c89df={};_0x3c89df[_0x2b27('0x22')]=_0xc77f36[_0x2b27('0x22')];_0x3c89df[_0x2b27('0x23')]=_0xc77f36['uniqueid'];_0x3c89df[_0x2b27('0x24')]=_0xc77f36[_0x2b27('0x24')];_0x3c89df[_0x2b27('0x25')]=_0xc77f36[_0x2b27('0x25')];_0x3c89df['queue']=_0xc77f36[_0x2b27('0x26')];_0x3c89df[_0x2b27('0x27')]=_0xc77f36[_0x2b27('0x28')];_0x3c89df[_0x2b27('0x29')]=_0xc77f36[_0x2b27('0x28')];_0x3c89df[_0x2b27('0x2a')]=0x1;_0x3c89df[_0x2b27('0x2b')]=_0xc77f36[_0x2b27('0x2c')];_0x3c89df[_0x2b27('0x2d')]=_0xc77f36['membername'];_0x3c89df[_0x2b27('0x2e')]=_0x2b27('0x2f');_0x3c89df['exten']=_0x2b27('0x30');_0x3c89df[_0x2b27('0x31')]=0x0;_0x3c89df[_0x2b27('0x32')]=0x1;_0x3c89df[_0x2b27('0x33')]=_0xc77f36['membername'];_0x3c89df[_0x2b27('0x34')]=_0x2b27('0x35');return BPromise['resolve']()['then'](voiceQueueReport[_0x2b27('0x36')](_0x3c89df))[_0x2b27('0xe')](loggerCatch(_0x2b27('0x37')));};exports['getContactRecallMe']=function(_0x5400e8,_0x25a6d4){return BPromise['resolve']()[_0x2b27('0x10')](cmHopper[_0x2b27('0x38')](_0x5400e8,_0x25a6d4))[_0x2b27('0xe')](loggerCatch('[GetContactRecallMe]\x20'));};exports['rescheduleContactInQueue']=function(_0x1fb8dd){return BPromise[_0x2b27('0xc')]()['then'](cmHopper[_0x2b27('0x1a')](_0x1fb8dd,!![],!![]))['catch'](loggerCatch(_0x2b27('0x39')));};
\ No newline at end of file
+var _0x1072=['createHistory','catch','[createHistory]\x20','then','[moveContactManagedDialer]\x20','checkIsBlackList','[checkIsBlackList]\x20','getContactPreview','createAgentHistory','createCustomerHistory','createCustomerFinal','rescheduleContact','UserId','[rescheduleContact]\x20','countReScheduled','[countReScheduled]\x20','unlockContact','[unlockContact]\x20','disableContact','[activeContact]\x20','crateCustomerReportQueue','type','uniqueid','calleridnum','calleridname','queue','queuecallerjoinAt','answertime','queuecallercomplete','queuecallercompleteAt','endtime','connectedlinename','context','from-sip','exten','holdtime','assigned','lastAssignedTo','queuecallerexitreason','COMPLETED','create','[voiceQueueReport]\x20','getContactRecallMe','[GetContactRecallMe]\x20','[rescheduleContactInQueue]\x20','bluebird','../../../config/logger','preview','lodash','../rpc/cmHopperFinal','../rpc/cmHopperHistory','../rpc/cmHopperBlack','../rpc/voiceQueueRt','../rpc/agentReportPreview','../rpc/voiceQueueReport','error','inspect','resolve'];(function(_0x5311a1,_0x304912){var _0x2acb9f=function(_0x4803e7){while(--_0x4803e7){_0x5311a1['push'](_0x5311a1['shift']());}};_0x2acb9f(++_0x304912);}(_0x1072,0xdb));var _0x2107=function(_0x9dfc10,_0x19c2d5){_0x9dfc10=_0x9dfc10-0x0;var _0x4f938a=_0x1072[_0x9dfc10];return _0x4f938a;};'use strict';var util=require('util');var BPromise=require(_0x2107('0x0'));var logger=require(_0x2107('0x1'))(_0x2107('0x2'));var _=require(_0x2107('0x3'));var cmHopper=require('../rpc/cmHopper');var cmHopperFinal=require(_0x2107('0x4'));var cmHopperHistory=require(_0x2107('0x5'));var cmHopperBlack=require(_0x2107('0x6'));var voiceQueueRt=require(_0x2107('0x7'));var agentReportPreview=require(_0x2107('0x8'));var voiceQueueReport=require(_0x2107('0x9'));function loggerCatch(_0x451e3b){return function(_0x19591b){logger[_0x2107('0xa')](_0x451e3b,util[_0x2107('0xb')](_0x19591b,{'showHidden':![],'depth':null}));};}function create(_0x5df310){return BPromise[_0x2107('0xc')]()['then'](cmHopperHistory[_0x2107('0xd')](_0x5df310))[_0x2107('0xe')](loggerCatch(_0x2107('0xf')));}function createAgent(_0x5affe4){return BPromise[_0x2107('0xc')]()[_0x2107('0x10')](agentReportPreview[_0x2107('0xd')](_0x5affe4))['catch'](loggerCatch(_0x2107('0xf')));}function moveContact(_0x23a1b7){return BPromise['resolve']()[_0x2107('0x10')](cmHopper['moveContactManagedDialer'](_0x23a1b7,!![]))[_0x2107('0xe')](loggerCatch(_0x2107('0x11')));}exports['checkIsBlackList']=function(_0x198043){return BPromise[_0x2107('0xc')]()['then'](cmHopperBlack[_0x2107('0x12')](_0x198043))[_0x2107('0xe')](loggerCatch(_0x2107('0x13')));};exports[_0x2107('0x14')]=function(_0x2060bc){return BPromise[_0x2107('0xc')]()[_0x2107('0x10')](cmHopper[_0x2107('0x14')](_0x2060bc))['catch'](loggerCatch('[getContactPreview]\x20'));};exports[_0x2107('0xd')]=function(_0x3b0d16,_0x430cad){create(_0x3b0d16)['catch'](loggerCatch(_0x430cad));moveContact(_0x3b0d16)['catch'](loggerCatch(_0x430cad));};exports[_0x2107('0x15')]=function(_0x28db47,_0x5555d6){createAgent(_0x28db47)['catch'](loggerCatch(_0x5555d6));};exports[_0x2107('0x16')]=function(_0x42f079,_0x426ef3){create(_0x42f079)['catch'](loggerCatch(_0x426ef3));};exports[_0x2107('0x17')]=function(_0x4ee22f,_0x46cd54){moveContact(_0x4ee22f)[_0x2107('0xe')](loggerCatch(_0x46cd54));};exports[_0x2107('0x18')]=function(_0x3fe2d8,_0x821305,_0xbcfef7){if(_0x821305){_0x3fe2d8[_0x2107('0x19')]=null;}if(_0xbcfef7){_0x3fe2d8['active']=![];}return BPromise[_0x2107('0xc')]()[_0x2107('0x10')](cmHopper[_0x2107('0x18')](_0x3fe2d8))['catch'](loggerCatch(_0x2107('0x1a')));};exports['countReScheduled']=function(_0x23e357){return BPromise[_0x2107('0xc')]()[_0x2107('0x10')](cmHopper[_0x2107('0x1b')](_0x23e357))[_0x2107('0xe')](loggerCatch(_0x2107('0x1c')));};exports[_0x2107('0x1d')]=function(_0x57bab3){return BPromise[_0x2107('0xc')]()['then'](cmHopper[_0x2107('0x1d')]({'UserId':null},_0x57bab3,0x1))[_0x2107('0xe')](loggerCatch(_0x2107('0x1e')));};exports[_0x2107('0x1f')]=function(_0x31762){return BPromise[_0x2107('0xc')]()[_0x2107('0x10')](cmHopper[_0x2107('0x1d')]({'active':![]},_0x31762,0x1))['catch'](loggerCatch(_0x2107('0x20')));};exports[_0x2107('0x21')]=function(_0x388435){var _0x58ea1d={};_0x58ea1d['type']=_0x388435[_0x2107('0x22')];_0x58ea1d['uniqueid']=_0x388435[_0x2107('0x23')];_0x58ea1d[_0x2107('0x24')]=_0x388435[_0x2107('0x24')];_0x58ea1d[_0x2107('0x25')]=_0x388435[_0x2107('0x25')];_0x58ea1d['queue']=_0x388435[_0x2107('0x26')];_0x58ea1d[_0x2107('0x27')]=_0x388435[_0x2107('0x28')];_0x58ea1d['queuecallerleaveAt']=_0x388435[_0x2107('0x28')];_0x58ea1d[_0x2107('0x29')]=0x1;_0x58ea1d[_0x2107('0x2a')]=_0x388435[_0x2107('0x2b')];_0x58ea1d[_0x2107('0x2c')]=_0x388435['membername'];_0x58ea1d[_0x2107('0x2d')]=_0x2107('0x2e');_0x58ea1d[_0x2107('0x2f')]='xcally-motion-preview';_0x58ea1d[_0x2107('0x30')]=0x0;_0x58ea1d[_0x2107('0x31')]=0x1;_0x58ea1d[_0x2107('0x32')]=_0x388435['membername'];_0x58ea1d[_0x2107('0x33')]=_0x2107('0x34');return BPromise[_0x2107('0xc')]()[_0x2107('0x10')](voiceQueueReport[_0x2107('0x35')](_0x58ea1d))[_0x2107('0xe')](loggerCatch(_0x2107('0x36')));};exports[_0x2107('0x37')]=function(_0x5d848f,_0x19643b){return BPromise[_0x2107('0xc')]()[_0x2107('0x10')](cmHopper[_0x2107('0x37')](_0x5d848f,_0x19643b))[_0x2107('0xe')](loggerCatch(_0x2107('0x38')));};exports['rescheduleContactInQueue']=function(_0x28500d){return BPromise[_0x2107('0xc')]()[_0x2107('0x10')](cmHopper[_0x2107('0x18')](_0x28500d,!![],!![]))[_0x2107('0xe')](loggerCatch(_0x2107('0x39')));};
\ No newline at end of file
index 53af224..497fa33 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x85d4=['ringtime','logLookAgent','membername','UserId','logCustomer','answertime','isFailure','Failure','variablesAction','RECALL','BOOKED','uniqueid','originate','from-sip','timeout','totalGlobal','countbusyretry','countcongestionretry','countagentrejectretry','countnosuchnumberretry','cloneAction','Global','scheduledAt','scheduledat','add','minutes','ListId','decrementTalkink','pTalking','[decrementTalkink]\x20object\x20talking\x20is\x20negative','[decrementTalkink]\x20is\x20null\x20or\x20undefined','IsNotLoggedIn','buildObj','lastevent','queue','interface','channelAgent','voice','mandatoryDisposition','buildAcw','agentReadyId','status','push','getDiff','createBody','CampaignId','filterKey','idContact','campaigntype','dialAnswer','countglobal','callback','callbackat','recallme','sipcallid','xmd-voicequeueid','xmd-queue','xmd-phone','xmd-listid','xmd-dialtimeout','xmd-dialoptions','xmd-dialid','xmd-contactid','xmd-cdrtype','xmd-callerid','xmd-agiafter','rtpaudioqos','rtpaudioqosjitter','rtpaudioqosjitterbridged','rtpaudioqosloss','rtpaudioqoslossbridged','rtpaudioqosrtt','rtpaudioqosrttbridged','bridgepeer','bridgepvtcallid','getCallerIdRandom','pow','replace','random','extractCalleridName','match','extractCalleridNumber','util','lodash','moment','../../../../config/logger','env','XCALLY_IP_AGI','milliseconds','diff','seconds','loggerCatch','error','inspect','logger','info','loggerError','message','isUndefined','string','isEmpty','format','\x22%s\x22\x20<%s>','\x22\x22\x20<>','isActive','isNil','Queue','name','calleridname','calleridnum','ContactId','VoiceQueueId','dialOriginateTimeout','\x22rtTxX%s%s\x22','dialQueueProject2','monitor_format','U(xcally-mixmonitor-context)','dialPreviewUrl','\x22agi://%s/square,%s\x22','dialQueueProject','originatecalleridnum','originatecalleridname','xcally-motion-preview','_XCALLY_MIXMONITOR_FORMAT','Contact','tags','createdAt','updatedAt','%s%s','XMD-','toUpper','toLowerVariables','hasOwnProperty','updateOriginated','originated','[updateOriginated]\x20object\x20originated\x20is\x20negative','[updateOriginated]\x20is\x20null\x20or\x20undefined','logBlacklist','YYYY-MM-DD\x20HH:mm:ss','state','statedesc','Blacklist','starttime','endtime','responsetime'];(function(_0x17db2f,_0x375ee0){var _0x5b5709=function(_0xc526ce){while(--_0xc526ce){_0x17db2f['push'](_0x17db2f['shift']());}};_0x5b5709(++_0x375ee0);}(_0x85d4,0xe3));var _0x485d=function(_0x1e7b16,_0x4607a1){_0x1e7b16=_0x1e7b16-0x0;var _0x37fadc=_0x85d4[_0x1e7b16];return _0x37fadc;};'use strict';var util=require(_0x485d('0x0'));var _=require(_0x485d('0x1'));var moment=require(_0x485d('0x2'));var logger=require(_0x485d('0x3'))('preview');var ipAgi=process[_0x485d('0x4')][_0x485d('0x5')]||'127.0.0.1';function getSeconds(_0x5ae493,_0x28c27c){var _0x137b02=moment(_0x5ae493)[_0x485d('0x6')](0x0);var _0x2903d7=moment(_0x28c27c)[_0x485d('0x6')](0x0);return _0x137b02[_0x485d('0x7')](_0x2903d7,_0x485d('0x8'));}exports[_0x485d('0x9')]=function(_0x262c41){return function(_0x45fa16){logger[_0x485d('0xa')](_0x262c41,util[_0x485d('0xb')](_0x45fa16,{'showHidden':![],'depth':null}));};};exports[_0x485d('0xc')]=function(_0x25483e,_0x8a77c5){logger[_0x485d('0xd')](_0x25483e,util[_0x485d('0xb')](_0x8a77c5,{'showHidden':![],'depth':null}));};exports[_0x485d('0xe')]=function(_0x45fbf8,_0x3ce809){logger[_0x485d('0xa')](_0x45fbf8,util[_0x485d('0xb')](_0x3ce809,{'showHidden':![],'depth':null}));};exports['logger2']=function(_0xf9135d){return function(_0x32c0c4){logger[_0x485d('0xd')](_0xf9135d,util['inspect'](_0x32c0c4,{'showHidden':![],'depth':null}));};};exports[_0x485d('0xf')]=function(_0x58a352,_0x4c3570,_0x4192ae){return{'message':_0x58a352,'unlock':_0x4c3570,'active':_0x4192ae};};exports['getCallerId']=function(_0x5313bd,_0x5894cf,_0x42d085){if(!_[_0x485d('0x10')](_0x42d085)&&_0x485d('0x11')===typeof _0x42d085&&!_[_0x485d('0x12')](_0x42d085)){if(!_[_0x485d('0x10')](_0x5894cf)&&'string'===typeof _0x5894cf&&!_[_0x485d('0x12')](_0x5894cf)){return util[_0x485d('0x13')]('\x22%s\x22\x20<%s>',_0x5894cf,_0x42d085);}return util[_0x485d('0x13')](_0x485d('0x14'),_0x42d085,_0x42d085);}if(!_['isUndefined'](_0x5313bd)&&_0x485d('0x11')===typeof _0x5313bd&&!_[_0x485d('0x12')](_0x5313bd)){return _0x5313bd;}return _0x485d('0x15');};exports[_0x485d('0x16')]=function(_0x2648e6){if(_[_0x485d('0x17')](_0x2648e6)){return![];}return _0x2648e6;};exports['addVariables']=function(_0x139369,_0x4cb7ed,_0x584335,_0x5aed42,_0x2b048c,_0x26fa2f){var _0x43f609={'XMD-QUEUE':_0x4cb7ed[_0x485d('0x18')]?_0x4cb7ed[_0x485d('0x18')][_0x485d('0x19')]:'','XMD-CALLERID':_0x5aed42,'XMD-CALLERID-PREVIEW':_0x26fa2f?util[_0x485d('0x13')]('\x22%s\x22\x20<%s>',_0x26fa2f[_0x485d('0x1a')],_0x26fa2f[_0x485d('0x1b')]):_0x5aed42,'XMD-DIALID':_0x2b048c,'XMD-CONTACTID':_0x4cb7ed[_0x485d('0x1c')],'XMD-CDRTYPE':'dialer','CALLERID(all)':_0x5aed42,'XMD-VOICEQUEUEID':_0x4cb7ed[_0x485d('0x1d')],'XMD-DIALCHANNEL':_0x584335,'XMD-DIALTIMEOUT':_0x139369[_0x485d('0x1e')]||0x1e,'XMD-DIALOPTIONS':util['format'](_0x485d('0x1f'),_0x139369[_0x485d('0x20')]?'g':'',_['isEmpty'](_0x139369[_0x485d('0x21')])?'':_0x485d('0x22')),'XMD-DIALURL':_0x139369[_0x485d('0x23')]||'','XMD-AGI':_0x139369['dialQueueProject']?util[_0x485d('0x13')](_0x485d('0x24'),ipAgi,_0x139369[_0x485d('0x25')]):'NONE','XMD-AGIAFTER':_0x139369[_0x485d('0x20')]?util[_0x485d('0x13')](_0x485d('0x24'),ipAgi,_0x139369[_0x485d('0x20')]):'NONE','XMD-ORIGINATECALLERIDNUM':_0x26fa2f?_0x26fa2f[_0x485d('0x26')]:'','XMD-ORIGINATECALLERIDNAME':_0x26fa2f?_0x26fa2f[_0x485d('0x27')]:'','XMD-DESTINATION':_0x485d('0x28')};if(!_[_0x485d('0x12')](_0x139369[_0x485d('0x21')])){_0x43f609[util[_0x485d('0x13')]('%s',_0x485d('0x29'))]=_0x139369[_0x485d('0x21')];_0x43f609[util[_0x485d('0x13')]('%s','_XCALLY_MIXMONITOR_UNIQUEID')]=_0x2b048c;}if(_0x4cb7ed&&_0x4cb7ed[_0x485d('0x2a')]){for(var _0x1127a2 in _0x4cb7ed[_0x485d('0x2a')]){if(_0x4cb7ed['Contact']['hasOwnProperty'](_0x1127a2)){if(!_['isNil'](_0x4cb7ed['Contact'][_0x1127a2])&&_0x1127a2!=='id'&&_0x1127a2!==_0x485d('0x2b')&&_0x1127a2!==_0x485d('0x2c')&&_0x1127a2!==_0x485d('0x2d')){_0x43f609[util[_0x485d('0x13')](_0x485d('0x2e'),_0x485d('0x2f'),_[_0x485d('0x30')](_0x1127a2))]=_0x4cb7ed['Contact'][_0x1127a2];}}}}return _0x43f609;};exports[_0x485d('0x31')]=function(_0x496e2f){var _0xc11c14={};for(var _0x3047e4 in _0x496e2f){if(_0x496e2f[_0x485d('0x32')](_0x3047e4)){_0xc11c14[util[_0x485d('0x13')]('%s',_['toLower'](_0x3047e4))]=_0x496e2f[_0x3047e4];}}return{'variables':_0xc11c14};};exports[_0x485d('0x33')]=function(_0xa58728,_0x3ffe00){if(!_[_0x485d('0x17')](_0xa58728)){if(_0xa58728[_0x485d('0x32')](_0x485d('0x34'))){if(_0xa58728[_0x485d('0x34')]>0x0){_0xa58728[_0x485d('0x34')]-=0x1;}else{logger[_0x485d('0xa')](_0x485d('0x35'),_0x3ffe00);}}}else{logger[_0x485d('0xa')](_0x485d('0x36'),_0x3ffe00);}};exports[_0x485d('0x37')]=function(_0x79535d){var _0x31469b=moment()['format'](_0x485d('0x38'));_0x79535d[_0x485d('0x39')]=0xd;_0x79535d[_0x485d('0x3a')]=_0x485d('0x3b');_0x79535d[_0x485d('0x3c')]=_0x31469b;_0x79535d['responsetime']=_0x31469b;_0x79535d[_0x485d('0x3d')]=_0x31469b;};exports['logAgent']=function(_0x535f60,_0x2fe223,_0x38d51e){var _0xfc6826=moment()[_0x485d('0x13')](_0x485d('0x38'));_0x535f60[_0x485d('0x39')]=_0x2fe223;_0x535f60['statedesc']=_0x38d51e;_0x535f60[_0x485d('0x3e')]=_0xfc6826;_0x535f60[_0x485d('0x3f')]=getSeconds(_0x535f60[_0x485d('0x3e')],_0x535f60[_0x485d('0x3c')]);};exports[_0x485d('0x40')]=function(_0x4a4e68,_0x16bfc2,_0x43eddc){_0x4a4e68[_0x485d('0x41')]=_0x16bfc2;_0x4a4e68[_0x485d('0x42')]=_0x43eddc;};exports[_0x485d('0x43')]=function(_0x57dbbf,_0x453e57,_0x3524f3){var _0x5ab4c8=moment()[_0x485d('0x13')]('YYYY-MM-DD\x20HH:mm:ss');_0x57dbbf[_0x485d('0x39')]=_0x453e57;_0x57dbbf[_0x485d('0x3a')]=_0x3524f3;_0x57dbbf['responsetime']=_0x57dbbf[_0x485d('0x3e')]?_0x57dbbf[_0x485d('0x3e')]:_0x5ab4c8;_0x57dbbf['endtime']=_0x57dbbf['endtime']?_0x57dbbf[_0x485d('0x3d')]:_0x5ab4c8;_0x57dbbf[_0x485d('0x3f')]=getSeconds(_0x57dbbf['responsetime']||0x0,_0x57dbbf['starttime']||0x0);_0x57dbbf['talktime']=_0x57dbbf['answertime']?getSeconds(_0x57dbbf['endtime'],_0x57dbbf[_0x485d('0x44')]):0x0;};exports[_0x485d('0x45')]=function(_0x4447e5){return _0x4447e5===_0x485d('0x46');};exports[_0x485d('0x47')]=function(_0x957f77,_0x4f51ac,_0x84120,_0x3fc2d0,_0x47e5de){var _0x550e52=_0x3fc2d0?_0x485d('0x48'):_0x957f77[_0x485d('0x1a')];_0x550e52=_0x47e5de?_0x485d('0x49'):_0x550e52;return{'actionid':_0x957f77[_0x485d('0x4a')],'action':_0x485d('0x4b'),'channel':_0x957f77['channelAgent'],'callerid':util[_0x485d('0x13')]('\x22%s\x22\x20<%s>',_0x550e52,_0x957f77[_0x485d('0x1b')]),'Exten':_0x485d('0x28'),'Context':_0x485d('0x4c'),'Priority':'1','variable':_0x84120,'timeout':(_0x4f51ac[_0x485d('0x4d')]||0x1e)*0x3e8,'async':!![],'channelid':_0x957f77[_0x485d('0x4a')]};};exports[_0x485d('0x4e')]=function(_0x1cc3c0){return _0x1cc3c0[_0x485d('0x4f')]+_0x1cc3c0[_0x485d('0x50')]+_0x1cc3c0['countnoanswerretry']+_0x1cc3c0[_0x485d('0x51')]+_0x1cc3c0[_0x485d('0x52')];};exports[_0x485d('0x53')]=function(_0x1186a9){var _0x259179=_['clone'](_0x1186a9);_0x259179['state']=0xf;_0x259179[_0x485d('0x3a')]=_0x485d('0x54');return _0x259179;};exports[_0x485d('0x55')]=function(_0x46769c,_0x187c9a,_0x37bed6){var _0x6cbae4={};_0x6cbae4[_0x187c9a]=_0x46769c[_0x187c9a];_0x6cbae4['active']=![];_0x6cbae4[_0x485d('0x56')]=moment()[_0x485d('0x57')](_0x37bed6,_0x485d('0x58'))[_0x485d('0x13')](_0x485d('0x38'));_0x6cbae4[_0x485d('0x1c')]=_0x46769c[_0x485d('0x1c')];_0x6cbae4[_0x485d('0x59')]=_0x46769c[_0x485d('0x59')];_0x6cbae4[_0x485d('0x1d')]=_0x46769c[_0x485d('0x1d')]||undefined;return _0x6cbae4;};exports[_0x485d('0x5a')]=function(_0x13f52e,_0x33593b){if(!_['isNil'](_0x13f52e)){if(_0x13f52e[_0x485d('0x5b')]>0x0){_0x13f52e[_0x485d('0x5b')]-=0x1;}else{logger[_0x485d('0xa')](_0x33593b,_0x485d('0x5c'));}}else{logger['error'](_0x33593b,_0x485d('0x5d'));}};exports[_0x485d('0x5e')]=function(_0x700f65){if(_0x700f65<=0x0){return!![];}return![];};exports[_0x485d('0x5f')]=function(_0x22a7fe,_0x366a7d,_0x354e1f){_0x22a7fe[_0x485d('0x60')]=_0x366a7d;_0x22a7fe[_0x485d('0x19')]=_0x22a7fe[_0x485d('0x61')];_0x22a7fe[_0x485d('0x62')]=_0x22a7fe[_0x485d('0x63')];_0x22a7fe['motionChannel']=_0x485d('0x64');if(_0x354e1f){_0x22a7fe['mandatoryDisposition']=_0x354e1f[_0x485d('0x65')];}return _0x22a7fe;};exports[_0x485d('0x66')]=function(_0x1a8df4){var _0x12a5dc={};_0x12a5dc['queue']=_0x1a8df4[_0x485d('0x61')];_0x12a5dc['interface']=_0x1a8df4[_0x485d('0x63')];_0x12a5dc[_0x485d('0x4a')]=_0x1a8df4[_0x485d('0x4a')];return _0x12a5dc;};exports[_0x485d('0x67')]=function(_0x545647){var _0x4b2a0b=[];for(var _0x2b194e in _0x545647){if(_0x545647[_0x485d('0x32')](_0x2b194e)){if(!_[_0x485d('0x17')](_0x545647[_0x2b194e])&&_0x545647[_0x2b194e][_0x485d('0x39')]==='not_inuse'&&_0x545647[_0x2b194e][_0x485d('0x68')]==='reachable'){_0x4b2a0b[_0x485d('0x69')](_0x545647[_0x2b194e]['id']);}}}return _0x4b2a0b;};exports[_0x485d('0x6a')]=function(_0x352347){var _0xfe10a0=moment()[_0x485d('0x6')](0x0);var _0x2a56b7=moment(_0x352347)[_0x485d('0x6')](0x0);return _0xfe10a0[_0x485d('0x7')](_0x2a56b7,'seconds');};exports[_0x485d('0x6b')]=function(_0x57a2b0){return{'active':![],'recallme':![],'UserId':null,'ContactId':_0x57a2b0[_0x485d('0x1c')],'ListId':_0x57a2b0[_0x485d('0x59')],'VoiceQueueId':_0x57a2b0[_0x485d('0x1d')]||undefined,'CampaignId':_0x57a2b0[_0x485d('0x6c')]||undefined};};exports[_0x485d('0x6d')]=function(_0x2a48db){if(_0x2a48db===_0x485d('0x4a')||_0x2a48db===_0x485d('0x6e')||_0x2a48db===_0x485d('0x61')||_0x2a48db==='type'||_0x2a48db===_0x485d('0x6f')||_0x2a48db===_0x485d('0x70')||_0x2a48db===_0x485d('0x41')||_0x2a48db==='channelAgent'||_0x2a48db===_0x485d('0x1a')||_0x2a48db==='active'||_0x2a48db===_0x485d('0x1b')||_0x2a48db===_0x485d('0x56')||_0x2a48db==='countbusyretry'||_0x2a48db===_0x485d('0x50')||_0x2a48db==='countnoanswerretry'||_0x2a48db===_0x485d('0x71')||_0x2a48db===_0x485d('0x72')||_0x2a48db==='callbackuniqueid'||_0x2a48db===_0x485d('0x73')||_0x2a48db===_0x485d('0x74')||_0x2a48db===_0x485d('0x1c')||_0x2a48db===_0x485d('0x59')||_0x2a48db===_0x485d('0x42')||_0x2a48db===_0x485d('0x1d')||_0x2a48db===_0x485d('0x75')||_0x2a48db===_0x485d('0x76')||_0x2a48db===_0x485d('0x77')||_0x2a48db===_0x485d('0x78')||_0x2a48db===_0x485d('0x79')||_0x2a48db==='xmd-dialurl'||_0x2a48db===_0x485d('0x7a')||_0x2a48db===_0x485d('0x7b')||_0x2a48db===_0x485d('0x7c')||_0x2a48db==='xmd-dialchannel'||_0x2a48db===_0x485d('0x7d')||_0x2a48db===_0x485d('0x7e')||_0x2a48db===_0x485d('0x7f')||_0x2a48db===_0x485d('0x80')||_0x2a48db==='xmd-agi'||_0x2a48db===_0x485d('0x81')||_0x2a48db==='rtpaudioqosbridged'||_0x2a48db===_0x485d('0x82')||_0x2a48db===_0x485d('0x83')||_0x2a48db===_0x485d('0x84')||_0x2a48db===_0x485d('0x85')||_0x2a48db===_0x485d('0x86')||_0x2a48db===_0x485d('0x87')||_0x2a48db===_0x485d('0x81')||_0x2a48db==='rtpaudioqosbridged'||_0x2a48db===_0x485d('0x82')||_0x2a48db===_0x485d('0x83')||_0x2a48db===_0x485d('0x84')||_0x2a48db===_0x485d('0x85')||_0x2a48db===_0x485d('0x86')||_0x2a48db===_0x485d('0x87')||_0x2a48db===_0x485d('0x88')||_0x2a48db===_0x485d('0x89')||_0x2a48db==='state'||_0x2a48db===_0x485d('0x3a')){return![];}return!![];};exports[_0x485d('0x8a')]=function(_0x2ff5a4,_0x1b46f5){var _0x26eaa1,_0x546290,_0x3814f6;if(_0x1b46f5<=0x0){_0x1b46f5=0x1;}_0x26eaa1=new RegExp('\x5cw{0,'+_0x1b46f5+'}$');_0x546290=Math[_0x485d('0x8b')](0xa,_0x1b46f5-0x1);_0x3814f6=Math['pow'](0xa,_0x1b46f5)-0x1;return util[_0x485d('0x13')]('%s',_[_0x485d('0x8c')](_0x2ff5a4,_0x26eaa1,_[_0x485d('0x8d')](_0x546290,_0x3814f6)));};exports[_0x485d('0x8e')]=function(_0x43c131){var _0x15294d=_0x43c131[_0x485d('0x8f')](/"(.*?)"/);return _0x15294d?_0x15294d[0x1]:_0x43c131;};exports[_0x485d('0x90')]=function(_0x57fb5a){var _0x32aa49=_0x57fb5a['match'](/<(.*?)>/);return _0x32aa49?_0x32aa49[0x1]:_0x57fb5a;};
\ No newline at end of file
+var _0x382a=['campaigntype','dialAnswer','countglobal','callbackuniqueid','callbackat','recallme','sipcallid','xmd-voicequeueid','xmd-queue','xmd-listid','xmd-dialurl','xmd-dialid','xmd-dialchannel','xmd-contactid','xmd-cdrtype','xmd-agi','rtpaudioqos','rtpaudioqosbridged','rtpaudioqosjitterbridged','rtpaudioqosloss','rtpaudioqoslossbridged','rtpaudioqosrtt','rtpaudioqosrttbridged','rtpaudioqosjitter','bridgepeer','getCallerIdRandom','pow','replace','random','match','extractCalleridNumber','lodash','moment','../../../../config/logger','preview','env','XCALLY_IP_AGI','milliseconds','diff','seconds','loggerCatch','error','inspect','logger','info','loggerError','message','getCallerId','isUndefined','string','isEmpty','format','\x22%s\x22\x20<%s>','\x22\x22\x20<>','Queue','name','calleridnum','ContactId','dialer','VoiceQueueId','\x22rtTxX%s%s\x22','dialQueueProject2','monitor_format','U(xcally-mixmonitor-context)','dialPreviewUrl','dialQueueProject','NONE','\x22agi://%s/square,%s\x22','originatecalleridnum','originatecalleridname','xcally-motion-preview','_XCALLY_MIXMONITOR_UNIQUEID','Contact','isNil','%s%s','toUpper','hasOwnProperty','toLower','updateOriginated','originated','[updateOriginated]\x20object\x20originated\x20is\x20negative','[updateOriginated]\x20is\x20null\x20or\x20undefined','logBlacklist','YYYY-MM-DD\x20HH:mm:ss','state','statedesc','Blacklist','starttime','responsetime','endtime','logLookAgent','membername','UserId','logCustomer','ringtime','talktime','answertime','Failure','variablesAction','calleridname','uniqueid','originate','channelAgent','from-sip','timeout','totalGlobal','countbusyretry','countcongestionretry','countagentrejectretry','countnosuchnumberretry','cloneAction','clone','Global','scheduledAt','active','scheduledat','add','ListId','decrementTalkink','pTalking','[decrementTalkink]\x20object\x20talking\x20is\x20negative','[decrementTalkink]\x20is\x20null\x20or\x20undefined','IsNotLoggedIn','buildObj','lastevent','queue','interface','mandatoryDisposition','buildAcw','agentReadyId','not_inuse','status','reachable','push','getDiff','createBody','CampaignId','filterKey','idContact'];(function(_0x575cf0,_0x2ac511){var _0x1c3205=function(_0x52c73f){while(--_0x52c73f){_0x575cf0['push'](_0x575cf0['shift']());}};_0x1c3205(++_0x2ac511);}(_0x382a,0xaa));var _0xa382=function(_0x2cdf4e,_0x210079){_0x2cdf4e=_0x2cdf4e-0x0;var _0x5a4400=_0x382a[_0x2cdf4e];return _0x5a4400;};'use strict';var util=require('util');var _=require(_0xa382('0x0'));var moment=require(_0xa382('0x1'));var logger=require(_0xa382('0x2'))(_0xa382('0x3'));var ipAgi=process[_0xa382('0x4')][_0xa382('0x5')]||'127.0.0.1';function getSeconds(_0x5e86f5,_0x181e7c){var _0x6fa488=moment(_0x5e86f5)['milliseconds'](0x0);var _0x200a89=moment(_0x181e7c)[_0xa382('0x6')](0x0);return _0x6fa488[_0xa382('0x7')](_0x200a89,_0xa382('0x8'));}exports[_0xa382('0x9')]=function(_0x32cbee){return function(_0x545b15){logger[_0xa382('0xa')](_0x32cbee,util[_0xa382('0xb')](_0x545b15,{'showHidden':![],'depth':null}));};};exports[_0xa382('0xc')]=function(_0x219b87,_0x39b8e8){logger[_0xa382('0xd')](_0x219b87,util[_0xa382('0xb')](_0x39b8e8,{'showHidden':![],'depth':null}));};exports[_0xa382('0xe')]=function(_0x1b2a3b,_0x47f461){logger['error'](_0x1b2a3b,util['inspect'](_0x47f461,{'showHidden':![],'depth':null}));};exports['logger2']=function(_0x558cba){return function(_0x56b66f){logger[_0xa382('0xd')](_0x558cba,util[_0xa382('0xb')](_0x56b66f,{'showHidden':![],'depth':null}));};};exports[_0xa382('0xf')]=function(_0x62ce84,_0x4cd51f,_0x4b2500){return{'message':_0x62ce84,'unlock':_0x4cd51f,'active':_0x4b2500};};exports[_0xa382('0x10')]=function(_0x12d782,_0x259574,_0x5c570b){if(!_[_0xa382('0x11')](_0x5c570b)&&_0xa382('0x12')===typeof _0x5c570b&&!_[_0xa382('0x13')](_0x5c570b)){if(!_['isUndefined'](_0x259574)&&_0xa382('0x12')===typeof _0x259574&&!_[_0xa382('0x13')](_0x259574)){return util[_0xa382('0x14')](_0xa382('0x15'),_0x259574,_0x5c570b);}return util[_0xa382('0x14')](_0xa382('0x15'),_0x5c570b,_0x5c570b);}if(!_['isUndefined'](_0x12d782)&&_0xa382('0x12')===typeof _0x12d782&&!_[_0xa382('0x13')](_0x12d782)){return _0x12d782;}return _0xa382('0x16');};exports['isActive']=function(_0x52b9ad){if(_['isNil'](_0x52b9ad)){return![];}return _0x52b9ad;};exports['addVariables']=function(_0x253143,_0x1b93bc,_0x533a57,_0x12e146,_0x91328f,_0x420cc0){var _0x1b42ba={'XMD-QUEUE':_0x1b93bc[_0xa382('0x17')]?_0x1b93bc[_0xa382('0x17')][_0xa382('0x18')]:'','XMD-CALLERID':_0x12e146,'XMD-CALLERID-PREVIEW':_0x420cc0?util[_0xa382('0x14')](_0xa382('0x15'),_0x420cc0['calleridname'],_0x420cc0[_0xa382('0x19')]):_0x12e146,'XMD-DIALID':_0x91328f,'XMD-CONTACTID':_0x1b93bc[_0xa382('0x1a')],'XMD-CDRTYPE':_0xa382('0x1b'),'CALLERID(all)':_0x12e146,'XMD-VOICEQUEUEID':_0x1b93bc[_0xa382('0x1c')],'XMD-DIALCHANNEL':_0x533a57,'XMD-DIALTIMEOUT':_0x253143['dialOriginateTimeout']||0x1e,'XMD-DIALOPTIONS':util[_0xa382('0x14')](_0xa382('0x1d'),_0x253143[_0xa382('0x1e')]?'g':'',_[_0xa382('0x13')](_0x253143[_0xa382('0x1f')])?'':_0xa382('0x20')),'XMD-DIALURL':_0x253143[_0xa382('0x21')]||'','XMD-AGI':_0x253143['dialQueueProject']?util['format']('\x22agi://%s/square,%s\x22',ipAgi,_0x253143[_0xa382('0x22')]):_0xa382('0x23'),'XMD-AGIAFTER':_0x253143[_0xa382('0x1e')]?util[_0xa382('0x14')](_0xa382('0x24'),ipAgi,_0x253143[_0xa382('0x1e')]):_0xa382('0x23'),'XMD-ORIGINATECALLERIDNUM':_0x420cc0?_0x420cc0[_0xa382('0x25')]:'','XMD-ORIGINATECALLERIDNAME':_0x420cc0?_0x420cc0[_0xa382('0x26')]:'','XMD-DESTINATION':_0xa382('0x27')};if(!_['isEmpty'](_0x253143[_0xa382('0x1f')])){_0x1b42ba[util[_0xa382('0x14')]('%s','_XCALLY_MIXMONITOR_FORMAT')]=_0x253143['monitor_format'];_0x1b42ba[util[_0xa382('0x14')]('%s',_0xa382('0x28'))]=_0x91328f;}if(_0x1b93bc&&_0x1b93bc['Contact']){for(var _0x46692a in _0x1b93bc[_0xa382('0x29')]){if(_0x1b93bc[_0xa382('0x29')]['hasOwnProperty'](_0x46692a)){if(!_[_0xa382('0x2a')](_0x1b93bc['Contact'][_0x46692a])&&_0x46692a!=='id'&&_0x46692a!=='tags'&&_0x46692a!=='createdAt'&&_0x46692a!=='updatedAt'){_0x1b42ba[util[_0xa382('0x14')](_0xa382('0x2b'),'XMD-',_[_0xa382('0x2c')](_0x46692a))]=_0x1b93bc['Contact'][_0x46692a];}}}}return _0x1b42ba;};exports['toLowerVariables']=function(_0x41436f){var _0x367aca={};for(var _0x46ed9d in _0x41436f){if(_0x41436f[_0xa382('0x2d')](_0x46ed9d)){_0x367aca[util[_0xa382('0x14')]('%s',_[_0xa382('0x2e')](_0x46ed9d))]=_0x41436f[_0x46ed9d];}}return{'variables':_0x367aca};};exports[_0xa382('0x2f')]=function(_0x24917e,_0x298498){if(!_[_0xa382('0x2a')](_0x24917e)){if(_0x24917e[_0xa382('0x2d')]('originated')){if(_0x24917e[_0xa382('0x30')]>0x0){_0x24917e[_0xa382('0x30')]-=0x1;}else{logger['error'](_0xa382('0x31'),_0x298498);}}}else{logger[_0xa382('0xa')](_0xa382('0x32'),_0x298498);}};exports[_0xa382('0x33')]=function(_0x3d7278){var _0x3586a1=moment()['format'](_0xa382('0x34'));_0x3d7278[_0xa382('0x35')]=0xd;_0x3d7278[_0xa382('0x36')]=_0xa382('0x37');_0x3d7278[_0xa382('0x38')]=_0x3586a1;_0x3d7278[_0xa382('0x39')]=_0x3586a1;_0x3d7278[_0xa382('0x3a')]=_0x3586a1;};exports['logAgent']=function(_0x20b7c4,_0xff18d8,_0x17b599){var _0x52e46a=moment()[_0xa382('0x14')](_0xa382('0x34'));_0x20b7c4[_0xa382('0x35')]=_0xff18d8;_0x20b7c4['statedesc']=_0x17b599;_0x20b7c4[_0xa382('0x39')]=_0x52e46a;_0x20b7c4['ringtime']=getSeconds(_0x20b7c4[_0xa382('0x39')],_0x20b7c4[_0xa382('0x38')]);};exports[_0xa382('0x3b')]=function(_0x41987a,_0x14a37a,_0xe442c8){_0x41987a[_0xa382('0x3c')]=_0x14a37a;_0x41987a[_0xa382('0x3d')]=_0xe442c8;};exports[_0xa382('0x3e')]=function(_0x1cdf68,_0x5206ca,_0x4f6260){var _0x23b049=moment()['format']('YYYY-MM-DD\x20HH:mm:ss');_0x1cdf68[_0xa382('0x35')]=_0x5206ca;_0x1cdf68[_0xa382('0x36')]=_0x4f6260;_0x1cdf68['responsetime']=_0x1cdf68[_0xa382('0x39')]?_0x1cdf68[_0xa382('0x39')]:_0x23b049;_0x1cdf68['endtime']=_0x1cdf68['endtime']?_0x1cdf68[_0xa382('0x3a')]:_0x23b049;_0x1cdf68[_0xa382('0x3f')]=getSeconds(_0x1cdf68[_0xa382('0x39')]||0x0,_0x1cdf68[_0xa382('0x38')]||0x0);_0x1cdf68[_0xa382('0x40')]=_0x1cdf68[_0xa382('0x41')]?getSeconds(_0x1cdf68[_0xa382('0x3a')],_0x1cdf68[_0xa382('0x41')]):0x0;};exports['isFailure']=function(_0x200839){return _0x200839===_0xa382('0x42');};exports[_0xa382('0x43')]=function(_0x163aae,_0x4010bd,_0x214a1d,_0x255aa1,_0x1ec720){var _0x564c33=_0x255aa1?'RECALL':_0x163aae[_0xa382('0x44')];_0x564c33=_0x1ec720?'BOOKED':_0x564c33;return{'actionid':_0x163aae[_0xa382('0x45')],'action':_0xa382('0x46'),'channel':_0x163aae[_0xa382('0x47')],'callerid':util[_0xa382('0x14')]('\x22%s\x22\x20<%s>',_0x564c33,_0x163aae['calleridnum']),'Exten':'xcally-motion-preview','Context':_0xa382('0x48'),'Priority':'1','variable':_0x214a1d,'timeout':(_0x4010bd[_0xa382('0x49')]||0x1e)*0x3e8,'async':!![],'channelid':_0x163aae['uniqueid']};};exports[_0xa382('0x4a')]=function(_0x5369cc){return _0x5369cc[_0xa382('0x4b')]+_0x5369cc[_0xa382('0x4c')]+_0x5369cc['countnoanswerretry']+_0x5369cc[_0xa382('0x4d')]+_0x5369cc[_0xa382('0x4e')];};exports[_0xa382('0x4f')]=function(_0x2915a1){var _0xc900af=_[_0xa382('0x50')](_0x2915a1);_0xc900af['state']=0xf;_0xc900af[_0xa382('0x36')]=_0xa382('0x51');return _0xc900af;};exports[_0xa382('0x52')]=function(_0x53fb7a,_0xae0182,_0x494c46){var _0x402cad={};_0x402cad[_0xae0182]=_0x53fb7a[_0xae0182];_0x402cad[_0xa382('0x53')]=![];_0x402cad[_0xa382('0x54')]=moment()[_0xa382('0x55')](_0x494c46,'minutes')[_0xa382('0x14')]('YYYY-MM-DD\x20HH:mm:ss');_0x402cad['ContactId']=_0x53fb7a[_0xa382('0x1a')];_0x402cad[_0xa382('0x56')]=_0x53fb7a['ListId'];_0x402cad['VoiceQueueId']=_0x53fb7a[_0xa382('0x1c')]||undefined;return _0x402cad;};exports[_0xa382('0x57')]=function(_0x1a3817,_0x1b7ca8){if(!_['isNil'](_0x1a3817)){if(_0x1a3817[_0xa382('0x58')]>0x0){_0x1a3817['pTalking']-=0x1;}else{logger[_0xa382('0xa')](_0x1b7ca8,_0xa382('0x59'));}}else{logger['error'](_0x1b7ca8,_0xa382('0x5a'));}};exports[_0xa382('0x5b')]=function(_0x34f39a){if(_0x34f39a<=0x0){return!![];}return![];};exports[_0xa382('0x5c')]=function(_0x23d1a6,_0x57ecd0,_0x50ab60){_0x23d1a6[_0xa382('0x5d')]=_0x57ecd0;_0x23d1a6['name']=_0x23d1a6[_0xa382('0x5e')];_0x23d1a6[_0xa382('0x5f')]=_0x23d1a6[_0xa382('0x47')];if(_0x50ab60){_0x23d1a6[_0xa382('0x60')]=_0x50ab60['mandatoryDisposition'];}return _0x23d1a6;};exports[_0xa382('0x61')]=function(_0x5016a3){var _0x1bce2f={};_0x1bce2f[_0xa382('0x5e')]=_0x5016a3[_0xa382('0x5e')];_0x1bce2f[_0xa382('0x5f')]=_0x5016a3['channelAgent'];_0x1bce2f['uniqueid']=_0x5016a3[_0xa382('0x45')];return _0x1bce2f;};exports[_0xa382('0x62')]=function(_0x4e685e){var _0x21946b=[];for(var _0x3046e3 in _0x4e685e){if(_0x4e685e[_0xa382('0x2d')](_0x3046e3)){if(!_[_0xa382('0x2a')](_0x4e685e[_0x3046e3])&&_0x4e685e[_0x3046e3][_0xa382('0x35')]===_0xa382('0x63')&&_0x4e685e[_0x3046e3][_0xa382('0x64')]===_0xa382('0x65')){_0x21946b[_0xa382('0x66')](_0x4e685e[_0x3046e3]['id']);}}}return _0x21946b;};exports[_0xa382('0x67')]=function(_0x40c808){var _0x262ae2=moment()[_0xa382('0x6')](0x0);var _0x500176=moment(_0x40c808)['milliseconds'](0x0);return _0x262ae2[_0xa382('0x7')](_0x500176,_0xa382('0x8'));};exports[_0xa382('0x68')]=function(_0x451365){return{'active':![],'recallme':![],'UserId':null,'ContactId':_0x451365['ContactId'],'ListId':_0x451365[_0xa382('0x56')],'VoiceQueueId':_0x451365[_0xa382('0x1c')]||undefined,'CampaignId':_0x451365[_0xa382('0x69')]||undefined};};exports[_0xa382('0x6a')]=function(_0xbd5c3e){if(_0xbd5c3e===_0xa382('0x45')||_0xbd5c3e===_0xa382('0x6b')||_0xbd5c3e===_0xa382('0x5e')||_0xbd5c3e==='type'||_0xbd5c3e===_0xa382('0x6c')||_0xbd5c3e===_0xa382('0x6d')||_0xbd5c3e==='membername'||_0xbd5c3e===_0xa382('0x47')||_0xbd5c3e===_0xa382('0x44')||_0xbd5c3e==='active'||_0xbd5c3e==='calleridnum'||_0xbd5c3e===_0xa382('0x54')||_0xbd5c3e==='countbusyretry'||_0xbd5c3e===_0xa382('0x4c')||_0xbd5c3e==='countnoanswerretry'||_0xbd5c3e===_0xa382('0x6e')||_0xbd5c3e==='callback'||_0xbd5c3e===_0xa382('0x6f')||_0xbd5c3e===_0xa382('0x70')||_0xbd5c3e===_0xa382('0x71')||_0xbd5c3e===_0xa382('0x1a')||_0xbd5c3e==='ListId'||_0xbd5c3e==='UserId'||_0xbd5c3e==='VoiceQueueId'||_0xbd5c3e===_0xa382('0x72')||_0xbd5c3e===_0xa382('0x73')||_0xbd5c3e===_0xa382('0x74')||_0xbd5c3e==='xmd-phone'||_0xbd5c3e===_0xa382('0x75')||_0xbd5c3e===_0xa382('0x76')||_0xbd5c3e==='xmd-dialtimeout'||_0xbd5c3e==='xmd-dialoptions'||_0xbd5c3e===_0xa382('0x77')||_0xbd5c3e===_0xa382('0x78')||_0xbd5c3e===_0xa382('0x79')||_0xbd5c3e===_0xa382('0x7a')||_0xbd5c3e==='xmd-callerid'||_0xbd5c3e==='xmd-agiafter'||_0xbd5c3e===_0xa382('0x7b')||_0xbd5c3e===_0xa382('0x7c')||_0xbd5c3e===_0xa382('0x7d')||_0xbd5c3e==='rtpaudioqosjitter'||_0xbd5c3e===_0xa382('0x7e')||_0xbd5c3e===_0xa382('0x7f')||_0xbd5c3e===_0xa382('0x80')||_0xbd5c3e===_0xa382('0x81')||_0xbd5c3e===_0xa382('0x82')||_0xbd5c3e===_0xa382('0x7c')||_0xbd5c3e===_0xa382('0x7d')||_0xbd5c3e===_0xa382('0x83')||_0xbd5c3e==='rtpaudioqosjitterbridged'||_0xbd5c3e===_0xa382('0x7f')||_0xbd5c3e===_0xa382('0x80')||_0xbd5c3e===_0xa382('0x81')||_0xbd5c3e===_0xa382('0x82')||_0xbd5c3e===_0xa382('0x84')||_0xbd5c3e==='bridgepvtcallid'||_0xbd5c3e===_0xa382('0x35')||_0xbd5c3e===_0xa382('0x36')){return![];}return!![];};exports[_0xa382('0x85')]=function(_0x5901aa,_0x57a05c){var _0xfeb2f6,_0x2a09c9,_0x4d7bb7;if(_0x57a05c<=0x0){_0x57a05c=0x1;}_0xfeb2f6=new RegExp('\x5cw{0,'+_0x57a05c+'}$');_0x2a09c9=Math[_0xa382('0x86')](0xa,_0x57a05c-0x1);_0x4d7bb7=Math[_0xa382('0x86')](0xa,_0x57a05c)-0x1;return util['format']('%s',_[_0xa382('0x87')](_0x5901aa,_0xfeb2f6,_[_0xa382('0x88')](_0x2a09c9,_0x4d7bb7)));};exports['extractCalleridName']=function(_0x510d5e){var _0x5cc4a4=_0x510d5e[_0xa382('0x89')](/"(.*?)"/);return _0x5cc4a4?_0x5cc4a4[0x1]:_0x510d5e;};exports[_0xa382('0x8a')]=function(_0x580c3e){var _0x5be344=_0x580c3e[_0xa382('0x89')](/<(.*?)>/);return _0x5be344?_0x5be344[0x1]:_0x580c3e;};
\ No newline at end of file
index 60132c2..d467fde 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x93dd=['queuepause','reload','voicequeuechannel','voicechannel','voicequeuechannelhangup','voicequeuechannelredirect','queueadd','string','number','boolean'];(function(_0x4276aa,_0xbdba9b){var _0x2c49f8=function(_0x2640a4){while(--_0x2640a4){_0x4276aa['push'](_0x4276aa['shift']());}};_0x2c49f8(++_0xbdba9b);}(_0x93dd,0x1c8));var _0xd93d=function(_0x68c979,_0x431cff){_0x68c979=_0x68c979-0x0;var _0x4f0001=_0x93dd[_0x68c979];return _0x4f0001;};'use strict';exports[_0xd93d('0x0')]={'queue':{'type':'string','required':!![]},'interface':{'type':_0xd93d('0x1'),'required':!![]},'membername':{'type':'string','required':!![]},'penalty':{'type':_0xd93d('0x2'),'required':![]},'paused':{'type':_0xd93d('0x3'),'required':![]}};exports['queueremove']={'queue':{'type':'string','required':!![]},'interface':{'type':_0xd93d('0x1'),'required':!![]}};exports[_0xd93d('0x4')]={'interface':{'type':_0xd93d('0x1'),'required':!![]},'paused':{'type':_0xd93d('0x3')},'reason':{'type':_0xd93d('0x1'),'required':![]}};exports[_0xd93d('0x5')]={'module':{'type':_0xd93d('0x1'),'required':![]}};exports[_0xd93d('0x6')]={'uniqueid':{'type':_0xd93d('0x1'),'required':!![]}};exports[_0xd93d('0x7')]={'uniqueid':{'type':_0xd93d('0x1'),'required':!![]},'filename':{'type':'string'},'format':{'type':_0xd93d('0x1')},'mixmonitorid':{'type':'string'}};exports[_0xd93d('0x8')]={'uniqueid':{'type':_0xd93d('0x1'),'required':!![]}};exports[_0xd93d('0x9')]={'uniqueid':{'type':_0xd93d('0x1'),'required':!![]},'exten':{'type':_0xd93d('0x1'),'required':!![]},'context':{'type':_0xd93d('0x1')}};
\ No newline at end of file
+var _0x2b07=['queueremove','queuepause','voicechannel','voicequeuechannelredirect','queueadd','string','number','boolean'];(function(_0x906990,_0x391756){var _0x399b4a=function(_0x9e82e7){while(--_0x9e82e7){_0x906990['push'](_0x906990['shift']());}};_0x399b4a(++_0x391756);}(_0x2b07,0xe4));var _0x72b0=function(_0x5f1617,_0x46277b){_0x5f1617=_0x5f1617-0x0;var _0x3af5da=_0x2b07[_0x5f1617];return _0x3af5da;};'use strict';exports[_0x72b0('0x0')]={'queue':{'type':_0x72b0('0x1'),'required':!![]},'interface':{'type':'string','required':!![]},'membername':{'type':_0x72b0('0x1'),'required':!![]},'penalty':{'type':_0x72b0('0x2'),'required':![]},'paused':{'type':_0x72b0('0x3'),'required':![]}};exports[_0x72b0('0x4')]={'queue':{'type':_0x72b0('0x1'),'required':!![]},'interface':{'type':_0x72b0('0x1'),'required':!![]}};exports[_0x72b0('0x5')]={'interface':{'type':_0x72b0('0x1'),'required':!![]},'paused':{'type':'boolean'},'reason':{'type':_0x72b0('0x1'),'required':![]}};exports['reload']={'module':{'type':_0x72b0('0x1'),'required':![]}};exports['voicequeuechannel']={'uniqueid':{'type':_0x72b0('0x1'),'required':!![]}};exports[_0x72b0('0x6')]={'uniqueid':{'type':_0x72b0('0x1'),'required':!![]},'filename':{'type':_0x72b0('0x1')},'format':{'type':'string'},'mixmonitorid':{'type':_0x72b0('0x1')}};exports['voicequeuechannelhangup']={'uniqueid':{'type':_0x72b0('0x1'),'required':!![]}};exports[_0x72b0('0x7')]={'uniqueid':{'type':_0x72b0('0x1'),'required':!![]},'exten':{'type':_0x72b0('0x1'),'required':!![]},'context':{'type':_0x72b0('0x1')}};
\ No newline at end of file
index 1981cbb..5f556f1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7988=['groupBy','uniqueid','queuecallerexit','queuecallerabandon','abandoned','queuecallerleaveAt','diff','queuecallerjoinAt','seconds','queuecallercompleteAt','duration','disposition','ANSWERED','billableseconds','dialQueueProject','SquareProject','initCampaignHopperHistory','initFaxAccounts','exports','bluebird','util','lodash','moment','../model/agent','../model/telephone','../model/trunk','../model/voiceQueue','../model/trigger','../model/template','../model/campaign','../model/voiceExtension','../model/zendeskAccount','../model/freshdeskAccount','../model/zohoAccount','../model/deskAccount','../model/vtigerAccount','telephones','voiceQueues','triggers','campaigns','templates','outbound','voiceExtensions','channels','queueChannels','timers','settings','zendeskAccounts','salesforceAccounts','sugarcrmAccounts','freshdeskAccounts','vtigerAccounts','servicenowAccounts','dynamics365Accounts','faxAccounts','hasOwnProperty','mapKeys','SIP/%s','isNil','interface','format','name','total','sumDuration','sumBillable','isEmpty','ivrAnswerCallsDay','answered','unmanaged','sumHoldTime','outboundAnswerAgiCallsDay','outboundNoAnswerCallsDay','outboundNoSuchCallsDay','outboundDropCallsDayTimeout','outboundDropCallsDayCallersExit','outboundBlacklistCallsDay','outboundOriginateFailureCallsDay','outboundRejectCallsDay','outboundReCallsDay','outboundAnswerCallsDay','queueStatusComplete','mergeFromDatabase','prototype','initAgents','length','isUndefined','agents','initTelephones','initTrunks','trunks','initVoiceQueues','initTriggers','initTemplates','initZendeskAccounts','initSalesforceAccounts','initZohoAccounts','zohoAccounts','initDeskAccounts','deskAccounts','initSugarcrmAccounts','initVtigerAccounts','initServicenowAccounts','initDynamics365Accounts','freshsalesAccounts','initVoiceQueueHopperHistory','merge'];(function(_0x327017,_0x45a0cd){var _0x2e78d5=function(_0x29212f){while(--_0x29212f){_0x327017['push'](_0x327017['shift']());}};_0x2e78d5(++_0x45a0cd);}(_0x7988,0x151));var _0x8798=function(_0x2ea600,_0x21d470){_0x2ea600=_0x2ea600-0x0;var _0x5c2563=_0x7988[_0x2ea600];return _0x5c2563;};'use strict';var BPromise=require(_0x8798('0x0'));var util=require(_0x8798('0x1'));var _=require(_0x8798('0x2'));var moment=require(_0x8798('0x3'));var Agent=require(_0x8798('0x4'));var Telephone=require(_0x8798('0x5'));var Trunk=require(_0x8798('0x6'));var VoiceQueue=require(_0x8798('0x7'));var Trigger=require(_0x8798('0x8'));var Template=require(_0x8798('0x9'));var Campaign=require(_0x8798('0xa'));var VoiceExtension=require(_0x8798('0xb'));var ZendeskAccount=require(_0x8798('0xc'));var SalesforceAccount=require('../model/salesforceAccount');var FreshdeskAccount=require(_0x8798('0xd'));var SugarcrmAccount=require('../model/sugarcrmAccount');var ZohoAccount=require(_0x8798('0xe'));var DeskAccount=require(_0x8798('0xf'));var VtigerAccount=require(_0x8798('0x10'));var ServicenowAccount=require('../model/servicenowAccount');var Dynamics365Account=require('../model/dynamics365Account');var FreshsalesAccount=require('../model/freshsalesAccount');var FaxAccount=require('../model/faxAccount');var Realtime=function(){this['agents']={};this[_0x8798('0x11')]={};this['trunks']={};this[_0x8798('0x12')]={};this[_0x8798('0x13')]={};this[_0x8798('0x14')]={};this[_0x8798('0x15')]={};this[_0x8798('0x16')]={'total':0x0,'answered':0x0,'sumHoldTime':0x0,'sumDuration':0x0,'sumBillable':0x0};this[_0x8798('0x17')]={};this[_0x8798('0x18')]={};this[_0x8798('0x19')]={};this['outboundChannels']={};this[_0x8798('0x1a')]={};this[_0x8798('0x1b')]={};this[_0x8798('0x1c')]={};this[_0x8798('0x1d')]={};this[_0x8798('0x1e')]={};this[_0x8798('0x1f')]={};this['zohoAccounts']={};this['deskAccounts']={};this[_0x8798('0x20')]={};this[_0x8798('0x21')]={};this[_0x8798('0x22')]={};this['freshsalesAccounts']={};this[_0x8798('0x23')]={};};function freeIsNotKey(_0x353812,_0x225ebf,_0x4a1add){var _0xf99417=_['mapKeys'](_0x353812,function(_0x4c4e5c,_0x1260eb){return _0x4c4e5c[_0x4a1add];});for(var _0x395a3d in _0x225ebf){if(_0x225ebf[_0x8798('0x24')](_0x395a3d)){if(!_0xf99417[_0x395a3d]){delete _0x225ebf[_0x395a3d];}}}}function freeIsNotKeySip(_0x9b9762,_0x57fbb1){var _0x1e6ed0=_[_0x8798('0x25')](_0x9b9762,function(_0x163e03,_0x1f6f1f){return util['format'](_0x8798('0x26'),_0x163e03['name']);});for(var _0x5828d7 in _0x57fbb1){if(_0x57fbb1['hasOwnProperty'](_0x5828d7)){if(!_0x1e6ed0[_0x5828d7]){delete _0x57fbb1[_0x5828d7];}}}}function freeIsNotKeyAgent(_0x15e6bd,_0x11d7bf){var _0x9226cb=_[_0x8798('0x25')](_0x15e6bd,function(_0x4088cb,_0x95ffd6){var _0x4ceeaf=_[_0x8798('0x27')](_0x4088cb[_0x8798('0x28')])?util[_0x8798('0x29')](_0x8798('0x26'),_0x4088cb[_0x8798('0x2a')]):_0x4088cb[_0x8798('0x28')];return _0x4ceeaf;});for(var _0x24e03b in _0x11d7bf){if(_0x11d7bf[_0x8798('0x24')](_0x24e03b)){if(!_0x9226cb[_0x24e03b]){delete _0x11d7bf[_0x24e03b];}}}}function clearVoiceCallReports(_0x1325ec){_0x1325ec[_0x8798('0x2b')]=0x0;_0x1325ec['answered']=0x0;_0x1325ec['sumHoldTime']=0x0;_0x1325ec[_0x8798('0x2c')]=0x0;_0x1325ec[_0x8798('0x2d')]=0x0;}function clearCampaigns(_0x1604de){if(!_[_0x8798('0x2e')](_0x1604de)){for(var _0x581318 in _0x1604de){if(_0x1604de[_0x8798('0x24')](_0x581318)){_0x1604de[_0x581318]['ivrTotalCallsDays']=0x0;_0x1604de[_0x581318][_0x8798('0x2f')]=0x0;}}}}function clearVoiceQueues(_0x4c17e0){if(!_[_0x8798('0x2e')](_0x4c17e0)){for(var _0x2226a0 in _0x4c17e0){if(_0x4c17e0['hasOwnProperty'](_0x2226a0)){_0x4c17e0[_0x2226a0][_0x8798('0x2b')]=0x0;_0x4c17e0[_0x2226a0][_0x8798('0x30')]=0x0;_0x4c17e0[_0x2226a0][_0x8798('0x31')]=0x0;_0x4c17e0[_0x2226a0]['abandoned']=0x0;_0x4c17e0[_0x2226a0][_0x8798('0x32')]=0x0;_0x4c17e0[_0x2226a0][_0x8798('0x2c')]=0x0;_0x4c17e0[_0x2226a0][_0x8798('0x2d')]=0x0;_0x4c17e0[_0x2226a0][_0x8798('0x33')]=0x0;_0x4c17e0[_0x2226a0][_0x8798('0x34')]=0x0;_0x4c17e0[_0x2226a0]['outboundBusyCallsDay']=0x0;_0x4c17e0[_0x2226a0]['outboundCongestionCallsDay']=0x0;_0x4c17e0[_0x2226a0][_0x8798('0x35')]=0x0;_0x4c17e0[_0x2226a0]['outboundUnknownCallsDay']=0x0;_0x4c17e0[_0x2226a0][_0x8798('0x36')]=0x0;_0x4c17e0[_0x2226a0][_0x8798('0x37')]=0x0;_0x4c17e0[_0x2226a0][_0x8798('0x38')]=0x0;_0x4c17e0[_0x2226a0][_0x8798('0x39')]=0x0;_0x4c17e0[_0x2226a0][_0x8798('0x3a')]=0x0;_0x4c17e0[_0x2226a0][_0x8798('0x3b')]=0x0;_0x4c17e0[_0x2226a0][_0x8798('0x33')]=0x0;_0x4c17e0[_0x2226a0][_0x8798('0x3c')]=0x0;_0x4c17e0[_0x2226a0][_0x8798('0x3d')]=!![];}}}}Realtime['prototype'][_0x8798('0x3e')]=function(_0x342e38,_0x337d8b){for(var _0x4484da in _0x337d8b){if(_0x342e38[_0x8798('0x24')](_0x4484da)){_0x342e38[_0x4484da]=_0x337d8b[_0x4484da];}}};Realtime[_0x8798('0x3f')][_0x8798('0x40')]=function(){var _0x3c52dc=this;return function(_0x5c1d10){if(_0x5c1d10){freeIsNotKeyAgent(_0x5c1d10,_0x3c52dc['agents']);for(var _0x49f79c=0x0,_0x52f9b2={},_0x49de29={};_0x49f79c<_0x5c1d10[_0x8798('0x41')];_0x49f79c+=0x1){_0x52f9b2=_0x5c1d10[_0x49f79c];var _0xea274b=_[_0x8798('0x27')](_0x52f9b2[_0x8798('0x28')])?util[_0x8798('0x29')](_0x8798('0x26'),_0x52f9b2[_0x8798('0x2a')]):_0x52f9b2[_0x8798('0x28')];if(_[_0x8798('0x42')](_0x3c52dc[_0x8798('0x43')][_0xea274b])){_0x3c52dc[_0x8798('0x43')][_0xea274b]=new Agent(_0x52f9b2);}else{_0x3c52dc[_0x8798('0x3e')](_0x3c52dc['agents'][_0xea274b],_0x52f9b2);}}}return _0x3c52dc[_0x8798('0x43')];};};Realtime[_0x8798('0x3f')][_0x8798('0x44')]=function(){var _0x229b0e=this;return function(_0x4e7297){if(_0x4e7297){freeIsNotKeySip(_0x4e7297,_0x229b0e['telephones']);for(var _0x3515b0=0x0,_0x2e0823={},_0x34b49d={};_0x3515b0<_0x4e7297[_0x8798('0x41')];_0x3515b0+=0x1){_0x2e0823=_0x4e7297[_0x3515b0];if(_[_0x8798('0x42')](_0x229b0e['telephones'][util[_0x8798('0x29')]('SIP/%s',_0x2e0823[_0x8798('0x2a')])])){_0x229b0e[_0x8798('0x11')][util['format'](_0x8798('0x26'),_0x2e0823[_0x8798('0x2a')])]=new Telephone(_0x2e0823);}else{_0x229b0e['mergeFromDatabase'](_0x229b0e[_0x8798('0x11')][util[_0x8798('0x29')](_0x8798('0x26'),_0x2e0823['name'])],_0x2e0823);}}}return _0x229b0e[_0x8798('0x11')];};};Realtime['prototype'][_0x8798('0x45')]=function(){var _0x5bc296=this;return function(_0x646945){if(_0x646945){freeIsNotKeySip(_0x646945,_0x5bc296['trunks']);for(var _0x3b9025=0x0,_0x1ca63a={},_0x5c6801={};_0x3b9025<_0x646945[_0x8798('0x41')];_0x3b9025+=0x1){_0x1ca63a=_0x646945[_0x3b9025];if(_[_0x8798('0x42')](_0x5bc296['trunks'][util[_0x8798('0x29')](_0x8798('0x26'),_0x1ca63a[_0x8798('0x2a')])])){_0x5bc296['trunks'][util['format']('SIP/%s',_0x1ca63a[_0x8798('0x2a')])]=new Trunk(_0x1ca63a);}else{_0x5bc296[_0x8798('0x3e')](_0x5bc296[_0x8798('0x46')][util['format']('SIP/%s',_0x1ca63a['name'])],_0x1ca63a);}}}return _0x5bc296[_0x8798('0x46')];};};Realtime[_0x8798('0x3f')][_0x8798('0x47')]=function(){var _0x4a7575=this;return function(_0x4b4721){if(_0x4b4721){freeIsNotKey(_0x4b4721,_0x4a7575[_0x8798('0x12')],_0x8798('0x2a'));for(var _0x149c8e=0x0,_0x22a50f={},_0x10692b={};_0x149c8e<_0x4b4721[_0x8798('0x41')];_0x149c8e+=0x1){_0x22a50f=_0x4b4721[_0x149c8e];if(_[_0x8798('0x42')](_0x4a7575[_0x8798('0x12')][_0x22a50f[_0x8798('0x2a')]])){_0x4a7575['voiceQueues'][_0x22a50f[_0x8798('0x2a')]]=new VoiceQueue(_0x22a50f);}else{_0x4a7575[_0x8798('0x3e')](_0x4a7575[_0x8798('0x12')][_0x22a50f[_0x8798('0x2a')]],_0x22a50f);}}}return _0x4a7575[_0x8798('0x12')];};};Realtime[_0x8798('0x3f')][_0x8798('0x48')]=function(){var _0x59d8f4=this;return function(_0x534f3f){if(_0x534f3f){freeIsNotKey(_0x534f3f,_0x59d8f4['triggers'],'id');for(var _0x5dbd06=0x0,_0x4fa86f={},_0x2eb1e2={};_0x5dbd06<_0x534f3f[_0x8798('0x41')];_0x5dbd06+=0x1){_0x4fa86f=_0x534f3f[_0x5dbd06];if(_[_0x8798('0x42')](_0x59d8f4[_0x8798('0x13')][_0x4fa86f['id']])){_0x59d8f4['triggers'][_0x4fa86f['id']]=new Trigger(_0x4fa86f);}else{_0x59d8f4[_0x8798('0x3e')](_0x59d8f4[_0x8798('0x13')][_0x4fa86f['id']],_0x4fa86f);}}}return _0x59d8f4['triggers'];};};Realtime['prototype'][_0x8798('0x49')]=function(){var _0x3d0862=this;return function(_0x5b2153){if(_0x5b2153){freeIsNotKey(_0x5b2153,_0x3d0862[_0x8798('0x15')],'id');for(var _0x4f5adc=0x0,_0x567bdf={},_0x3ad207={};_0x4f5adc<_0x5b2153['length'];_0x4f5adc+=0x1){_0x567bdf=_0x5b2153[_0x4f5adc];if(_[_0x8798('0x42')](_0x3d0862['templates'][_0x567bdf['id']])){_0x3d0862[_0x8798('0x15')][_0x567bdf['id']]=new Template(_0x567bdf);}else{_0x3d0862[_0x8798('0x3e')](_0x3d0862['templates'][_0x567bdf['id']],_0x567bdf);}}}return _0x3d0862['templates'];};};Realtime[_0x8798('0x3f')][_0x8798('0x4a')]=function(){var _0x371f51=this;return function(_0x559527){if(_0x559527){freeIsNotKey(_0x559527,_0x371f51[_0x8798('0x1c')],'id');for(var _0x3039f2=0x0,_0x5ab79e={},_0x33d79c={};_0x3039f2<_0x559527[_0x8798('0x41')];_0x3039f2+=0x1){_0x5ab79e=_0x559527[_0x3039f2];if(_[_0x8798('0x42')](_0x371f51[_0x8798('0x1c')][_0x5ab79e['id']])){_0x371f51[_0x8798('0x1c')][_0x5ab79e['id']]=new ZendeskAccount(_0x5ab79e);}else{_0x371f51[_0x8798('0x3e')](_0x371f51['zendeskAccounts'][_0x5ab79e['id']],_0x5ab79e);}}}return _0x371f51[_0x8798('0x1c')];};};Realtime[_0x8798('0x3f')][_0x8798('0x4b')]=function(){var _0x41ec08=this;return function(_0x34f0f6){if(_0x34f0f6){freeIsNotKey(_0x34f0f6,_0x41ec08[_0x8798('0x1d')],'id');for(var _0x2beb64=0x0,_0x5d0cd2={},_0x55f1bb={};_0x2beb64<_0x34f0f6[_0x8798('0x41')];_0x2beb64+=0x1){_0x5d0cd2=_0x34f0f6[_0x2beb64];if(_[_0x8798('0x42')](_0x41ec08[_0x8798('0x1d')][_0x5d0cd2['id']])){_0x41ec08[_0x8798('0x1d')][_0x5d0cd2['id']]=new SalesforceAccount(_0x5d0cd2);}else{_0x41ec08[_0x8798('0x3e')](_0x41ec08[_0x8798('0x1d')][_0x5d0cd2['id']],_0x5d0cd2);}}}return _0x41ec08[_0x8798('0x1d')];};};Realtime[_0x8798('0x3f')]['initFreshdeskAccounts']=function(){var _0x56affd=this;return function(_0x543b37){if(_0x543b37){freeIsNotKey(_0x543b37,_0x56affd[_0x8798('0x1f')],'id');for(var _0x3523df=0x0,_0x28bc84={},_0x139e94={};_0x3523df<_0x543b37['length'];_0x3523df+=0x1){_0x28bc84=_0x543b37[_0x3523df];if(_[_0x8798('0x42')](_0x56affd[_0x8798('0x1f')][_0x28bc84['id']])){_0x56affd[_0x8798('0x1f')][_0x28bc84['id']]=new FreshdeskAccount(_0x28bc84);}else{_0x56affd[_0x8798('0x3e')](_0x56affd[_0x8798('0x1f')][_0x28bc84['id']],_0x28bc84);}}}return _0x56affd[_0x8798('0x1f')];};};Realtime[_0x8798('0x3f')][_0x8798('0x4c')]=function(){var _0x4a6798=this;return function(_0x24e4ca){if(_0x24e4ca){freeIsNotKey(_0x24e4ca,_0x4a6798[_0x8798('0x4d')],'id');for(var _0x2e0a52=0x0,_0x1648f0={},_0x3ba6ad={};_0x2e0a52<_0x24e4ca['length'];_0x2e0a52+=0x1){_0x1648f0=_0x24e4ca[_0x2e0a52];if(_[_0x8798('0x42')](_0x4a6798['zohoAccounts'][_0x1648f0['id']])){_0x4a6798[_0x8798('0x4d')][_0x1648f0['id']]=new ZohoAccount(_0x1648f0);}else{_0x4a6798[_0x8798('0x3e')](_0x4a6798['zohoAccounts'][_0x1648f0['id']],_0x1648f0);}}}return _0x4a6798[_0x8798('0x4d')];};};Realtime[_0x8798('0x3f')][_0x8798('0x4e')]=function(){var _0x3ef564=this;return function(_0x35efe0){if(_0x35efe0){freeIsNotKey(_0x35efe0,_0x3ef564[_0x8798('0x4f')],'id');for(var _0x30b445=0x0,_0x2103dd={},_0x246021={};_0x30b445<_0x35efe0[_0x8798('0x41')];_0x30b445+=0x1){_0x2103dd=_0x35efe0[_0x30b445];if(_[_0x8798('0x42')](_0x3ef564[_0x8798('0x4f')][_0x2103dd['id']])){_0x3ef564['deskAccounts'][_0x2103dd['id']]=new DeskAccount(_0x2103dd);}else{_0x3ef564[_0x8798('0x3e')](_0x3ef564[_0x8798('0x4f')][_0x2103dd['id']],_0x2103dd);}}}return _0x3ef564[_0x8798('0x4f')];};};Realtime[_0x8798('0x3f')][_0x8798('0x50')]=function(){var _0x2ec49a=this;return function(_0x2db170){if(_0x2db170){freeIsNotKey(_0x2db170,_0x2ec49a[_0x8798('0x1e')],'id');for(var _0x3d98e5=0x0,_0x58da0e={},_0x34ca3c={};_0x3d98e5<_0x2db170['length'];_0x3d98e5+=0x1){_0x58da0e=_0x2db170[_0x3d98e5];if(_[_0x8798('0x42')](_0x2ec49a[_0x8798('0x1e')][_0x58da0e['id']])){_0x2ec49a[_0x8798('0x1e')][_0x58da0e['id']]=new SugarcrmAccount(_0x58da0e);}else{_0x2ec49a[_0x8798('0x3e')](_0x2ec49a[_0x8798('0x1e')][_0x58da0e['id']],_0x58da0e);}}}return _0x2ec49a[_0x8798('0x1e')];};};Realtime[_0x8798('0x3f')][_0x8798('0x51')]=function(){var _0x18d838=this;return function(_0x14174b){if(_0x14174b){freeIsNotKey(_0x14174b,_0x18d838[_0x8798('0x20')],'id');for(var _0x21692d=0x0,_0xbb8d43={},_0x4e6b04={};_0x21692d<_0x14174b[_0x8798('0x41')];_0x21692d+=0x1){_0xbb8d43=_0x14174b[_0x21692d];if(_['isUndefined'](_0x18d838[_0x8798('0x20')][_0xbb8d43['id']])){_0x18d838[_0x8798('0x20')][_0xbb8d43['id']]=new VtigerAccount(_0xbb8d43);}else{_0x18d838[_0x8798('0x3e')](_0x18d838[_0x8798('0x20')][_0xbb8d43['id']],_0xbb8d43);}}}return _0x18d838[_0x8798('0x20')];};};Realtime[_0x8798('0x3f')][_0x8798('0x52')]=function(){var _0x319e50=this;return function(_0x563806){if(_0x563806){freeIsNotKey(_0x563806,_0x319e50['servicenowAccounts'],'id');for(var _0x44324b=0x0,_0x32b73c={},_0x413638={};_0x44324b<_0x563806[_0x8798('0x41')];_0x44324b+=0x1){_0x32b73c=_0x563806[_0x44324b];if(_[_0x8798('0x42')](_0x319e50[_0x8798('0x21')][_0x32b73c['id']])){_0x319e50[_0x8798('0x21')][_0x32b73c['id']]=new ServicenowAccount(_0x32b73c);}else{_0x319e50[_0x8798('0x3e')](_0x319e50[_0x8798('0x21')][_0x32b73c['id']],_0x32b73c);}}}return _0x319e50[_0x8798('0x21')];};};Realtime[_0x8798('0x3f')][_0x8798('0x53')]=function(){var _0x484865=this;return function(_0x44961b){if(_0x44961b){freeIsNotKey(_0x44961b,_0x484865['dynamics365Accounts'],'id');for(var _0x575273=0x0,_0x42f5d5={},_0x20be34={};_0x575273<_0x44961b[_0x8798('0x41')];_0x575273+=0x1){_0x42f5d5=_0x44961b[_0x575273];if(_[_0x8798('0x42')](_0x484865[_0x8798('0x22')][_0x42f5d5['id']])){_0x484865[_0x8798('0x22')][_0x42f5d5['id']]=new Dynamics365Account(_0x42f5d5);}else{_0x484865[_0x8798('0x3e')](_0x484865[_0x8798('0x22')][_0x42f5d5['id']],_0x42f5d5);}}}return _0x484865['dynamics365Accounts'];};};Realtime[_0x8798('0x3f')]['initFreshsalesAccounts']=function(){var _0x28aa33=this;return function(_0xa7fe7d){if(_0xa7fe7d){freeIsNotKey(_0xa7fe7d,_0x28aa33[_0x8798('0x54')],'id');for(var _0x162fa6=0x0,_0x1e6855={},_0x2a82df={};_0x162fa6<_0xa7fe7d[_0x8798('0x41')];_0x162fa6+=0x1){_0x1e6855=_0xa7fe7d[_0x162fa6];if(_[_0x8798('0x42')](_0x28aa33['freshsalesAccounts'][_0x1e6855['id']])){_0x28aa33[_0x8798('0x54')][_0x1e6855['id']]=new FreshsalesAccount(_0x1e6855);}else{_0x28aa33[_0x8798('0x3e')](_0x28aa33['freshsalesAccounts'][_0x1e6855['id']],_0x1e6855);}}}return _0x28aa33[_0x8798('0x54')];};};Realtime[_0x8798('0x3f')][_0x8798('0x55')]=function(){var _0x209fd9=this;return function(_0x476eac){for(var _0x2896b0=0x0;_0x2896b0<_0x476eac[_0x8798('0x41')];_0x2896b0+=0x1){_[_0x8798('0x56')](_0x209fd9[_0x8798('0x12')][_0x476eac[_0x2896b0][_0x8798('0x2a')]],_0x476eac[_0x2896b0]);}return _0x209fd9['voiceQueues'];};};Realtime[_0x8798('0x3f')]['initVoiceQueueReports']=function(){var _0x58a8f2=this;return function(_0xf0dae){clearVoiceQueues(_0x58a8f2['voiceQueues']);if(_0xf0dae){_0xf0dae=_[_0x8798('0x57')](_0xf0dae,_0x8798('0x58'));for(var _0x210a44 in _0xf0dae){if(_0xf0dae[_0x8798('0x24')](_0x210a44)){var _0xcf0b57={};for(var _0x26bb3e=0x0;_0x26bb3e<_0xf0dae[_0x210a44]['length'];_0x26bb3e+=0x1){var _0x252b99=_0xf0dae[_0x210a44][_0x26bb3e]['queue'];if(_0x58a8f2[_0x8798('0x12')][_0x252b99]){if(_0xf0dae[_0x210a44][_0x26bb3e][_0x8798('0x59')]){_0x58a8f2[_0x8798('0x12')][_0x252b99][_0x8798('0x31')]+=0x1;}if(_0xf0dae[_0x210a44][_0x26bb3e][_0x8798('0x5a')]){_0x58a8f2[_0x8798('0x12')][_0x252b99][_0x8798('0x5b')]+=0x1;}_0x58a8f2[_0x8798('0x12')][_0x252b99][_0x8798('0x32')]+=moment(_0xf0dae[_0x210a44][_0x26bb3e][_0x8798('0x5c')])[_0x8798('0x5d')](moment(_0xf0dae[_0x210a44][_0x26bb3e][_0x8798('0x5e')]),_0x8798('0x5f'))||0x0;if(_0x26bb3e===_0xf0dae[_0x210a44][_0x8798('0x41')]-0x1){_0x58a8f2['voiceQueues'][_0x252b99]['sumDuration']+=moment(_0xf0dae[_0x210a44][_0x26bb3e][_0x8798('0x60')]||_0xf0dae[_0x210a44][_0x26bb3e]['queuecallerabandonAt']||_0xf0dae[_0x210a44][_0x26bb3e]['queuecallerexitAt'])[_0x8798('0x5d')](moment(_0xf0dae[_0x210a44][_0x26bb3e][_0x8798('0x5e')]),_0x8798('0x5f'))||0x0;_0x58a8f2[_0x8798('0x12')][_0x252b99][_0x8798('0x2b')]+=0x1;if(_0xf0dae[_0x210a44][_0x26bb3e]['queuecallercomplete']){_0x58a8f2['voiceQueues'][_0x252b99][_0x8798('0x30')]+=0x1;_0x58a8f2[_0x8798('0x12')][_0x252b99]['sumBillable']+=moment(_0xf0dae[_0x210a44][_0x26bb3e]['queuecallercompleteAt'])[_0x8798('0x5d')](moment(_0xf0dae[_0x210a44][_0x26bb3e][_0x8798('0x5c')]),_0x8798('0x5f'))||0x0;}}else{_0x58a8f2[_0x8798('0x12')][_0x252b99]['sumDuration']+=_0x58a8f2['voiceQueues'][_0x252b99][_0x8798('0x32')]||0x0;}}}}}}return _0x58a8f2['voiceQueues'];};};Realtime[_0x8798('0x3f')]['initVoiceCallReports']=function(){var _0x3bafe4=this;return function(_0x29dfe9){clearVoiceCallReports(_0x3bafe4[_0x8798('0x16')]);if(_0x29dfe9){for(var _0x328253=0x0;_0x328253<_0x29dfe9[_0x8798('0x41')];_0x328253+=0x1){_0x3bafe4[_0x8798('0x16')][_0x8798('0x2b')]+=0x1;_0x3bafe4[_0x8798('0x16')][_0x8798('0x2c')]+=_0x29dfe9[_0x328253][_0x8798('0x61')];if(_0x29dfe9[_0x328253][_0x8798('0x62')]===_0x8798('0x63')){_0x3bafe4[_0x8798('0x16')]['answered']+=0x1;_0x3bafe4[_0x8798('0x16')][_0x8798('0x32')]+=_0x29dfe9[_0x328253][_0x8798('0x61')]-_0x29dfe9[_0x328253]['billableseconds']||0x0;_0x3bafe4[_0x8798('0x16')][_0x8798('0x2d')]+=_0x29dfe9[_0x328253][_0x8798('0x64')];}}}return _0x3bafe4[_0x8798('0x16')];};};Realtime[_0x8798('0x3f')]['initCampaigns']=function(){var _0xb9e59a=this;return function(_0x53a596){if(_0x53a596){freeIsNotKey(_0x53a596,_0xb9e59a[_0x8798('0x14')],_0x8798('0x2a'));for(var _0x4fbc2b=0x0,_0x16f174={};_0x4fbc2b<_0x53a596[_0x8798('0x41')];_0x4fbc2b+=0x1){_0x16f174=_0x53a596[_0x4fbc2b];if(_['isUndefined'](_0xb9e59a['campaigns'][_0x16f174[_0x8798('0x2a')]])){_0xb9e59a[_0x8798('0x14')][_0x16f174['name']]=new Campaign(_0x16f174);}else{_0xb9e59a[_0x8798('0x3e')](_0xb9e59a['campaigns'][_0x16f174['name']],_0x16f174);_0xb9e59a[_0x8798('0x14')][_0x16f174[_0x8798('0x2a')]][_0x8798('0x65')]=_0x16f174[_0x8798('0x66')]?_0x16f174[_0x8798('0x66')][_0x8798('0x2a')]:undefined;}}}return _0xb9e59a[_0x8798('0x14')];};};Realtime[_0x8798('0x3f')]['initVoiceExtensions']=function(){var _0x28340b=this;return function(_0x43799f){if(_0x43799f){freeIsNotKey(_0x43799f,_0x28340b['voiceExtensions'],'id');for(var _0x37353a=0x0,_0x4c8cb1={};_0x37353a<_0x43799f['length'];_0x37353a+=0x1){_0x4c8cb1=_0x43799f[_0x37353a];if(_[_0x8798('0x42')](_0x28340b[_0x8798('0x17')][_0x4c8cb1['id']])){_0x28340b[_0x8798('0x17')][_0x4c8cb1['id']]=new VoiceExtension(_0x4c8cb1);}else{_0x28340b[_0x8798('0x3e')](_0x28340b['voiceExtensions'][_0x4c8cb1['id']],_0x4c8cb1);}}}return _0x28340b[_0x8798('0x17')];};};Realtime[_0x8798('0x3f')][_0x8798('0x67')]=function(){var _0x407766=this;return function(_0x4523ad){clearCampaigns(_0x407766[_0x8798('0x14')]);for(var _0x591c2e=0x0;_0x591c2e<_0x4523ad[_0x8798('0x41')];_0x591c2e+=0x1){_[_0x8798('0x56')](_0x407766['campaigns'][_0x4523ad[_0x591c2e]['name']],_0x4523ad[_0x591c2e]);}return _0x407766[_0x8798('0x14')];};};Realtime[_0x8798('0x3f')][_0x8798('0x68')]=function(){var _0x278324=this;return function(_0x5a5c3c){if(_0x5a5c3c){freeIsNotKey(_0x5a5c3c,_0x278324[_0x8798('0x23')],'id');for(var _0x53007c=0x0,_0x51b87c={},_0x7aab33={};_0x53007c<_0x5a5c3c[_0x8798('0x41')];_0x53007c+=0x1){_0x51b87c=_0x5a5c3c[_0x53007c];if(_[_0x8798('0x42')](_0x278324['faxAccounts'][_0x51b87c['id']])){_0x278324['faxAccounts'][_0x51b87c['id']]=new FaxAccount(_0x51b87c);}else{_0x278324[_0x8798('0x3e')](_0x278324[_0x8798('0x23')][_0x51b87c['id']],_0x51b87c);}}}return _0x278324[_0x8798('0x23')];};};module[_0x8798('0x69')]=Realtime;
\ No newline at end of file
+var _0x8049=['isEmpty','ivrTotalCallsDays','answered','unmanaged','abandoned','outboundAnswerAgiCallsDay','outboundNoAnswerCallsDay','outboundBusyCallsDay','outboundNoSuchCallsDay','outboundUnknownCallsDay','outboundDropCallsDayTimeout','outboundDropCallsDayCallersExit','outboundBlacklistCallsDay','outboundRejectCallsDay','outboundAnswerCallsDay','prototype','isNil','isUndefined','mergeFromDatabase','initTelephones','length','initTriggers','initTemplates','initZendeskAccounts','salesforceAccounts','initFreshdeskAccounts','initDeskAccounts','initSugarcrmAccounts','initFreshsalesAccounts','initVoiceQueueHopperHistory','merge','queue','queuecallerexit','queuecallerleaveAt','diff','queuecallerjoinAt','queuecallercompleteAt','queuecallerabandonAt','seconds','queuecallercomplete','initVoiceCallReports','duration','disposition','ANSWERED','billableseconds','initCampaigns','dialQueueProject','SquareProject','initVoiceExtensions','voiceExtensions','initCampaignHopperHistory','initFaxAccounts','exports','bluebird','util','lodash','moment','../model/agent','../model/trunk','../model/voiceQueue','../model/trigger','../model/template','../model/campaign','../model/voiceExtension','../model/zendeskAccount','../model/salesforceAccount','../model/freshdeskAccount','../model/zohoAccount','../model/servicenowAccount','../model/dynamics365Account','../model/freshsalesAccount','../model/faxAccount','agents','telephones','trunks','voiceQueues','triggers','campaigns','templates','outbound','channels','queueChannels','outboundChannels','timers','settings','zendeskAccounts','sugarcrmAccounts','freshdeskAccounts','zohoAccounts','deskAccounts','vtigerAccounts','servicenowAccounts','dynamics365Accounts','freshsalesAccounts','faxAccounts','mapKeys','format','SIP/%s','name','interface','hasOwnProperty','total','sumHoldTime','sumDuration','sumBillable'];(function(_0x4bae71,_0x2d5388){var _0xef05=function(_0x6830e1){while(--_0x6830e1){_0x4bae71['push'](_0x4bae71['shift']());}};_0xef05(++_0x2d5388);}(_0x8049,0x107));var _0x9804=function(_0x996a48,_0x291ed7){_0x996a48=_0x996a48-0x0;var _0x47d3fb=_0x8049[_0x996a48];return _0x47d3fb;};'use strict';var BPromise=require(_0x9804('0x0'));var util=require(_0x9804('0x1'));var _=require(_0x9804('0x2'));var moment=require(_0x9804('0x3'));var Agent=require(_0x9804('0x4'));var Telephone=require('../model/telephone');var Trunk=require(_0x9804('0x5'));var VoiceQueue=require(_0x9804('0x6'));var Trigger=require(_0x9804('0x7'));var Template=require(_0x9804('0x8'));var Campaign=require(_0x9804('0x9'));var VoiceExtension=require(_0x9804('0xa'));var ZendeskAccount=require(_0x9804('0xb'));var SalesforceAccount=require(_0x9804('0xc'));var FreshdeskAccount=require(_0x9804('0xd'));var SugarcrmAccount=require('../model/sugarcrmAccount');var ZohoAccount=require(_0x9804('0xe'));var DeskAccount=require('../model/deskAccount');var VtigerAccount=require('../model/vtigerAccount');var ServicenowAccount=require(_0x9804('0xf'));var Dynamics365Account=require(_0x9804('0x10'));var FreshsalesAccount=require(_0x9804('0x11'));var FaxAccount=require(_0x9804('0x12'));var Realtime=function(){this[_0x9804('0x13')]={};this[_0x9804('0x14')]={};this[_0x9804('0x15')]={};this[_0x9804('0x16')]={};this[_0x9804('0x17')]={};this[_0x9804('0x18')]={};this[_0x9804('0x19')]={};this[_0x9804('0x1a')]={'total':0x0,'answered':0x0,'sumHoldTime':0x0,'sumDuration':0x0,'sumBillable':0x0};this['voiceExtensions']={};this[_0x9804('0x1b')]={};this[_0x9804('0x1c')]={};this[_0x9804('0x1d')]={};this[_0x9804('0x1e')]={};this[_0x9804('0x1f')]={};this[_0x9804('0x20')]={};this['salesforceAccounts']={};this[_0x9804('0x21')]={};this[_0x9804('0x22')]={};this[_0x9804('0x23')]={};this[_0x9804('0x24')]={};this[_0x9804('0x25')]={};this[_0x9804('0x26')]={};this[_0x9804('0x27')]={};this[_0x9804('0x28')]={};this[_0x9804('0x29')]={};};function freeIsNotKey(_0xf7c0e0,_0x45016d,_0x337c6f){var _0x60406b=_['mapKeys'](_0xf7c0e0,function(_0x5cb487,_0x1f49d3){return _0x5cb487[_0x337c6f];});for(var _0x134721 in _0x45016d){if(_0x45016d['hasOwnProperty'](_0x134721)){if(!_0x60406b[_0x134721]){delete _0x45016d[_0x134721];}}}}function freeIsNotKeySip(_0x2c548b,_0x4f6c4b){var _0x206936=_[_0x9804('0x2a')](_0x2c548b,function(_0x48bfd2,_0x35e674){return util[_0x9804('0x2b')](_0x9804('0x2c'),_0x48bfd2[_0x9804('0x2d')]);});for(var _0x14ed6a in _0x4f6c4b){if(_0x4f6c4b['hasOwnProperty'](_0x14ed6a)){if(!_0x206936[_0x14ed6a]){delete _0x4f6c4b[_0x14ed6a];}}}}function freeIsNotKeyAgent(_0x384a44,_0x3b818a){var _0x47ba16=_[_0x9804('0x2a')](_0x384a44,function(_0xf5bae7,_0x461e30){var _0x4a056a=_['isNil'](_0xf5bae7[_0x9804('0x2e')])?util[_0x9804('0x2b')](_0x9804('0x2c'),_0xf5bae7[_0x9804('0x2d')]):_0xf5bae7[_0x9804('0x2e')];return _0x4a056a;});for(var _0x19f2de in _0x3b818a){if(_0x3b818a[_0x9804('0x2f')](_0x19f2de)){if(!_0x47ba16[_0x19f2de]){delete _0x3b818a[_0x19f2de];}}}}function clearVoiceCallReports(_0xb7cc87){_0xb7cc87[_0x9804('0x30')]=0x0;_0xb7cc87['answered']=0x0;_0xb7cc87[_0x9804('0x31')]=0x0;_0xb7cc87[_0x9804('0x32')]=0x0;_0xb7cc87[_0x9804('0x33')]=0x0;}function clearCampaigns(_0x450522){if(!_[_0x9804('0x34')](_0x450522)){for(var _0x161d3a in _0x450522){if(_0x450522[_0x9804('0x2f')](_0x161d3a)){_0x450522[_0x161d3a][_0x9804('0x35')]=0x0;_0x450522[_0x161d3a]['ivrAnswerCallsDay']=0x0;}}}}function clearVoiceQueues(_0x424a16){if(!_[_0x9804('0x34')](_0x424a16)){for(var _0x53e306 in _0x424a16){if(_0x424a16[_0x9804('0x2f')](_0x53e306)){_0x424a16[_0x53e306]['total']=0x0;_0x424a16[_0x53e306][_0x9804('0x36')]=0x0;_0x424a16[_0x53e306][_0x9804('0x37')]=0x0;_0x424a16[_0x53e306][_0x9804('0x38')]=0x0;_0x424a16[_0x53e306]['sumHoldTime']=0x0;_0x424a16[_0x53e306]['sumDuration']=0x0;_0x424a16[_0x53e306]['sumBillable']=0x0;_0x424a16[_0x53e306][_0x9804('0x39')]=0x0;_0x424a16[_0x53e306][_0x9804('0x3a')]=0x0;_0x424a16[_0x53e306][_0x9804('0x3b')]=0x0;_0x424a16[_0x53e306]['outboundCongestionCallsDay']=0x0;_0x424a16[_0x53e306][_0x9804('0x3c')]=0x0;_0x424a16[_0x53e306][_0x9804('0x3d')]=0x0;_0x424a16[_0x53e306][_0x9804('0x3e')]=0x0;_0x424a16[_0x53e306][_0x9804('0x3f')]=0x0;_0x424a16[_0x53e306][_0x9804('0x40')]=0x0;_0x424a16[_0x53e306]['outboundOriginateFailureCallsDay']=0x0;_0x424a16[_0x53e306][_0x9804('0x41')]=0x0;_0x424a16[_0x53e306]['outboundReCallsDay']=0x0;_0x424a16[_0x53e306][_0x9804('0x39')]=0x0;_0x424a16[_0x53e306][_0x9804('0x42')]=0x0;_0x424a16[_0x53e306]['queueStatusComplete']=!![];}}}}Realtime[_0x9804('0x43')]['mergeFromDatabase']=function(_0x591a31,_0x65d26a){for(var _0x4eafed in _0x65d26a){if(_0x591a31[_0x9804('0x2f')](_0x4eafed)){_0x591a31[_0x4eafed]=_0x65d26a[_0x4eafed];}}};Realtime[_0x9804('0x43')]['initAgents']=function(){var _0x297f1c=this;return function(_0x4ce29){if(_0x4ce29){freeIsNotKeyAgent(_0x4ce29,_0x297f1c[_0x9804('0x13')]);for(var _0x293c66=0x0,_0x459093={},_0x227a66={};_0x293c66<_0x4ce29['length'];_0x293c66+=0x1){_0x459093=_0x4ce29[_0x293c66];var _0x3f567a=_[_0x9804('0x44')](_0x459093[_0x9804('0x2e')])?util[_0x9804('0x2b')](_0x9804('0x2c'),_0x459093[_0x9804('0x2d')]):_0x459093[_0x9804('0x2e')];if(_[_0x9804('0x45')](_0x297f1c[_0x9804('0x13')][_0x3f567a])){_0x297f1c[_0x9804('0x13')][_0x3f567a]=new Agent(_0x459093);}else{_0x297f1c[_0x9804('0x46')](_0x297f1c['agents'][_0x3f567a],_0x459093);}}}return _0x297f1c['agents'];};};Realtime[_0x9804('0x43')][_0x9804('0x47')]=function(){var _0x214f02=this;return function(_0x5e3f5){if(_0x5e3f5){freeIsNotKeySip(_0x5e3f5,_0x214f02[_0x9804('0x14')]);for(var _0x30067f=0x0,_0x3c6381={},_0x211b4a={};_0x30067f<_0x5e3f5[_0x9804('0x48')];_0x30067f+=0x1){_0x3c6381=_0x5e3f5[_0x30067f];if(_[_0x9804('0x45')](_0x214f02[_0x9804('0x14')][util[_0x9804('0x2b')]('SIP/%s',_0x3c6381['name'])])){_0x214f02[_0x9804('0x14')][util['format'](_0x9804('0x2c'),_0x3c6381['name'])]=new Telephone(_0x3c6381);}else{_0x214f02[_0x9804('0x46')](_0x214f02[_0x9804('0x14')][util[_0x9804('0x2b')](_0x9804('0x2c'),_0x3c6381[_0x9804('0x2d')])],_0x3c6381);}}}return _0x214f02[_0x9804('0x14')];};};Realtime[_0x9804('0x43')]['initTrunks']=function(){var _0x4569d3=this;return function(_0x2dacd9){if(_0x2dacd9){freeIsNotKeySip(_0x2dacd9,_0x4569d3[_0x9804('0x15')]);for(var _0x36592a=0x0,_0xc44632={},_0x52b277={};_0x36592a<_0x2dacd9[_0x9804('0x48')];_0x36592a+=0x1){_0xc44632=_0x2dacd9[_0x36592a];if(_[_0x9804('0x45')](_0x4569d3['trunks'][util[_0x9804('0x2b')](_0x9804('0x2c'),_0xc44632[_0x9804('0x2d')])])){_0x4569d3[_0x9804('0x15')][util[_0x9804('0x2b')]('SIP/%s',_0xc44632[_0x9804('0x2d')])]=new Trunk(_0xc44632);}else{_0x4569d3[_0x9804('0x46')](_0x4569d3[_0x9804('0x15')][util[_0x9804('0x2b')](_0x9804('0x2c'),_0xc44632['name'])],_0xc44632);}}}return _0x4569d3[_0x9804('0x15')];};};Realtime[_0x9804('0x43')]['initVoiceQueues']=function(){var _0x35d452=this;return function(_0x21d323){if(_0x21d323){freeIsNotKey(_0x21d323,_0x35d452[_0x9804('0x16')],'name');for(var _0x2c6b48=0x0,_0x5cf6a2={},_0x4e4d70={};_0x2c6b48<_0x21d323['length'];_0x2c6b48+=0x1){_0x5cf6a2=_0x21d323[_0x2c6b48];if(_[_0x9804('0x45')](_0x35d452[_0x9804('0x16')][_0x5cf6a2['name']])){_0x35d452['voiceQueues'][_0x5cf6a2[_0x9804('0x2d')]]=new VoiceQueue(_0x5cf6a2);}else{_0x35d452[_0x9804('0x46')](_0x35d452[_0x9804('0x16')][_0x5cf6a2['name']],_0x5cf6a2);}}}return _0x35d452[_0x9804('0x16')];};};Realtime['prototype'][_0x9804('0x49')]=function(){var _0x5c6cb8=this;return function(_0xa39cbb){if(_0xa39cbb){freeIsNotKey(_0xa39cbb,_0x5c6cb8['triggers'],'id');for(var _0x8d0831=0x0,_0x2b67b0={},_0x208e4e={};_0x8d0831<_0xa39cbb[_0x9804('0x48')];_0x8d0831+=0x1){_0x2b67b0=_0xa39cbb[_0x8d0831];if(_[_0x9804('0x45')](_0x5c6cb8[_0x9804('0x17')][_0x2b67b0['id']])){_0x5c6cb8[_0x9804('0x17')][_0x2b67b0['id']]=new Trigger(_0x2b67b0);}else{_0x5c6cb8[_0x9804('0x46')](_0x5c6cb8[_0x9804('0x17')][_0x2b67b0['id']],_0x2b67b0);}}}return _0x5c6cb8[_0x9804('0x17')];};};Realtime[_0x9804('0x43')][_0x9804('0x4a')]=function(){var _0x428c8c=this;return function(_0x6fe592){if(_0x6fe592){freeIsNotKey(_0x6fe592,_0x428c8c[_0x9804('0x19')],'id');for(var _0x4ce3e9=0x0,_0xd1ed25={},_0x4e2be1={};_0x4ce3e9<_0x6fe592[_0x9804('0x48')];_0x4ce3e9+=0x1){_0xd1ed25=_0x6fe592[_0x4ce3e9];if(_[_0x9804('0x45')](_0x428c8c[_0x9804('0x19')][_0xd1ed25['id']])){_0x428c8c[_0x9804('0x19')][_0xd1ed25['id']]=new Template(_0xd1ed25);}else{_0x428c8c[_0x9804('0x46')](_0x428c8c[_0x9804('0x19')][_0xd1ed25['id']],_0xd1ed25);}}}return _0x428c8c[_0x9804('0x19')];};};Realtime[_0x9804('0x43')][_0x9804('0x4b')]=function(){var _0x160adb=this;return function(_0x205502){if(_0x205502){freeIsNotKey(_0x205502,_0x160adb[_0x9804('0x20')],'id');for(var _0x22da90=0x0,_0x21d013={},_0x563c59={};_0x22da90<_0x205502[_0x9804('0x48')];_0x22da90+=0x1){_0x21d013=_0x205502[_0x22da90];if(_['isUndefined'](_0x160adb['zendeskAccounts'][_0x21d013['id']])){_0x160adb[_0x9804('0x20')][_0x21d013['id']]=new ZendeskAccount(_0x21d013);}else{_0x160adb[_0x9804('0x46')](_0x160adb['zendeskAccounts'][_0x21d013['id']],_0x21d013);}}}return _0x160adb[_0x9804('0x20')];};};Realtime[_0x9804('0x43')]['initSalesforceAccounts']=function(){var _0x35be23=this;return function(_0x31241b){if(_0x31241b){freeIsNotKey(_0x31241b,_0x35be23[_0x9804('0x4c')],'id');for(var _0x1bfdc1=0x0,_0xfe91c6={},_0x3209bc={};_0x1bfdc1<_0x31241b[_0x9804('0x48')];_0x1bfdc1+=0x1){_0xfe91c6=_0x31241b[_0x1bfdc1];if(_[_0x9804('0x45')](_0x35be23[_0x9804('0x4c')][_0xfe91c6['id']])){_0x35be23['salesforceAccounts'][_0xfe91c6['id']]=new SalesforceAccount(_0xfe91c6);}else{_0x35be23[_0x9804('0x46')](_0x35be23['salesforceAccounts'][_0xfe91c6['id']],_0xfe91c6);}}}return _0x35be23[_0x9804('0x4c')];};};Realtime[_0x9804('0x43')][_0x9804('0x4d')]=function(){var _0x26d469=this;return function(_0x56abd8){if(_0x56abd8){freeIsNotKey(_0x56abd8,_0x26d469[_0x9804('0x22')],'id');for(var _0x64cf73=0x0,_0x2cadd6={},_0x5e3c34={};_0x64cf73<_0x56abd8['length'];_0x64cf73+=0x1){_0x2cadd6=_0x56abd8[_0x64cf73];if(_[_0x9804('0x45')](_0x26d469[_0x9804('0x22')][_0x2cadd6['id']])){_0x26d469['freshdeskAccounts'][_0x2cadd6['id']]=new FreshdeskAccount(_0x2cadd6);}else{_0x26d469[_0x9804('0x46')](_0x26d469['freshdeskAccounts'][_0x2cadd6['id']],_0x2cadd6);}}}return _0x26d469[_0x9804('0x22')];};};Realtime[_0x9804('0x43')]['initZohoAccounts']=function(){var _0x4eb467=this;return function(_0x5ddea7){if(_0x5ddea7){freeIsNotKey(_0x5ddea7,_0x4eb467[_0x9804('0x23')],'id');for(var _0x1857fe=0x0,_0x13206a={},_0x47429c={};_0x1857fe<_0x5ddea7[_0x9804('0x48')];_0x1857fe+=0x1){_0x13206a=_0x5ddea7[_0x1857fe];if(_[_0x9804('0x45')](_0x4eb467[_0x9804('0x23')][_0x13206a['id']])){_0x4eb467[_0x9804('0x23')][_0x13206a['id']]=new ZohoAccount(_0x13206a);}else{_0x4eb467[_0x9804('0x46')](_0x4eb467[_0x9804('0x23')][_0x13206a['id']],_0x13206a);}}}return _0x4eb467['zohoAccounts'];};};Realtime['prototype'][_0x9804('0x4e')]=function(){var _0x3ea227=this;return function(_0x29037e){if(_0x29037e){freeIsNotKey(_0x29037e,_0x3ea227['deskAccounts'],'id');for(var _0x217961=0x0,_0x101016={},_0x179f61={};_0x217961<_0x29037e['length'];_0x217961+=0x1){_0x101016=_0x29037e[_0x217961];if(_[_0x9804('0x45')](_0x3ea227[_0x9804('0x24')][_0x101016['id']])){_0x3ea227[_0x9804('0x24')][_0x101016['id']]=new DeskAccount(_0x101016);}else{_0x3ea227[_0x9804('0x46')](_0x3ea227[_0x9804('0x24')][_0x101016['id']],_0x101016);}}}return _0x3ea227[_0x9804('0x24')];};};Realtime[_0x9804('0x43')][_0x9804('0x4f')]=function(){var _0x2cdb93=this;return function(_0x44a1e4){if(_0x44a1e4){freeIsNotKey(_0x44a1e4,_0x2cdb93[_0x9804('0x21')],'id');for(var _0x49d326=0x0,_0x4196c7={},_0x81c181={};_0x49d326<_0x44a1e4[_0x9804('0x48')];_0x49d326+=0x1){_0x4196c7=_0x44a1e4[_0x49d326];if(_[_0x9804('0x45')](_0x2cdb93[_0x9804('0x21')][_0x4196c7['id']])){_0x2cdb93[_0x9804('0x21')][_0x4196c7['id']]=new SugarcrmAccount(_0x4196c7);}else{_0x2cdb93[_0x9804('0x46')](_0x2cdb93[_0x9804('0x21')][_0x4196c7['id']],_0x4196c7);}}}return _0x2cdb93[_0x9804('0x21')];};};Realtime[_0x9804('0x43')]['initVtigerAccounts']=function(){var _0x463791=this;return function(_0x2e49df){if(_0x2e49df){freeIsNotKey(_0x2e49df,_0x463791[_0x9804('0x25')],'id');for(var _0x2ad270=0x0,_0x37117c={},_0x2ea361={};_0x2ad270<_0x2e49df['length'];_0x2ad270+=0x1){_0x37117c=_0x2e49df[_0x2ad270];if(_[_0x9804('0x45')](_0x463791[_0x9804('0x25')][_0x37117c['id']])){_0x463791['vtigerAccounts'][_0x37117c['id']]=new VtigerAccount(_0x37117c);}else{_0x463791['mergeFromDatabase'](_0x463791['vtigerAccounts'][_0x37117c['id']],_0x37117c);}}}return _0x463791[_0x9804('0x25')];};};Realtime[_0x9804('0x43')]['initServicenowAccounts']=function(){var _0x2891ff=this;return function(_0x5773a1){if(_0x5773a1){freeIsNotKey(_0x5773a1,_0x2891ff[_0x9804('0x26')],'id');for(var _0x48583d=0x0,_0x18d884={},_0xadd0de={};_0x48583d<_0x5773a1[_0x9804('0x48')];_0x48583d+=0x1){_0x18d884=_0x5773a1[_0x48583d];if(_[_0x9804('0x45')](_0x2891ff[_0x9804('0x26')][_0x18d884['id']])){_0x2891ff[_0x9804('0x26')][_0x18d884['id']]=new ServicenowAccount(_0x18d884);}else{_0x2891ff['mergeFromDatabase'](_0x2891ff[_0x9804('0x26')][_0x18d884['id']],_0x18d884);}}}return _0x2891ff[_0x9804('0x26')];};};Realtime[_0x9804('0x43')]['initDynamics365Accounts']=function(){var _0x22f9b6=this;return function(_0x56c675){if(_0x56c675){freeIsNotKey(_0x56c675,_0x22f9b6['dynamics365Accounts'],'id');for(var _0x26c704=0x0,_0x3e6e29={},_0x352dce={};_0x26c704<_0x56c675[_0x9804('0x48')];_0x26c704+=0x1){_0x3e6e29=_0x56c675[_0x26c704];if(_[_0x9804('0x45')](_0x22f9b6[_0x9804('0x27')][_0x3e6e29['id']])){_0x22f9b6[_0x9804('0x27')][_0x3e6e29['id']]=new Dynamics365Account(_0x3e6e29);}else{_0x22f9b6[_0x9804('0x46')](_0x22f9b6[_0x9804('0x27')][_0x3e6e29['id']],_0x3e6e29);}}}return _0x22f9b6[_0x9804('0x27')];};};Realtime[_0x9804('0x43')][_0x9804('0x50')]=function(){var _0x31b160=this;return function(_0x55511f){if(_0x55511f){freeIsNotKey(_0x55511f,_0x31b160[_0x9804('0x28')],'id');for(var _0x575a2f=0x0,_0x4fa2f5={},_0x393da6={};_0x575a2f<_0x55511f['length'];_0x575a2f+=0x1){_0x4fa2f5=_0x55511f[_0x575a2f];if(_['isUndefined'](_0x31b160[_0x9804('0x28')][_0x4fa2f5['id']])){_0x31b160[_0x9804('0x28')][_0x4fa2f5['id']]=new FreshsalesAccount(_0x4fa2f5);}else{_0x31b160[_0x9804('0x46')](_0x31b160[_0x9804('0x28')][_0x4fa2f5['id']],_0x4fa2f5);}}}return _0x31b160['freshsalesAccounts'];};};Realtime[_0x9804('0x43')][_0x9804('0x51')]=function(){var _0x478d62=this;return function(_0x2831a7){for(var _0x48d888=0x0;_0x48d888<_0x2831a7[_0x9804('0x48')];_0x48d888+=0x1){_[_0x9804('0x52')](_0x478d62[_0x9804('0x16')][_0x2831a7[_0x48d888][_0x9804('0x2d')]],_0x2831a7[_0x48d888]);}return _0x478d62['voiceQueues'];};};Realtime[_0x9804('0x43')]['initVoiceQueueReports']=function(){var _0x5930b0=this;return function(_0x51321b){clearVoiceQueues(_0x5930b0['voiceQueues']);if(_0x51321b){_0x51321b=_['groupBy'](_0x51321b,'uniqueid');for(var _0x4e30e9 in _0x51321b){if(_0x51321b[_0x9804('0x2f')](_0x4e30e9)){var _0x57e941={};for(var _0x233888=0x0;_0x233888<_0x51321b[_0x4e30e9]['length'];_0x233888+=0x1){var _0x7212ad=_0x51321b[_0x4e30e9][_0x233888][_0x9804('0x53')];if(_0x5930b0[_0x9804('0x16')][_0x7212ad]){if(_0x51321b[_0x4e30e9][_0x233888][_0x9804('0x54')]){_0x5930b0['voiceQueues'][_0x7212ad][_0x9804('0x37')]+=0x1;}if(_0x51321b[_0x4e30e9][_0x233888]['queuecallerabandon']){_0x5930b0['voiceQueues'][_0x7212ad][_0x9804('0x38')]+=0x1;}_0x5930b0['voiceQueues'][_0x7212ad][_0x9804('0x31')]+=moment(_0x51321b[_0x4e30e9][_0x233888][_0x9804('0x55')])[_0x9804('0x56')](moment(_0x51321b[_0x4e30e9][_0x233888][_0x9804('0x57')]),'seconds')||0x0;if(_0x233888===_0x51321b[_0x4e30e9][_0x9804('0x48')]-0x1){_0x5930b0[_0x9804('0x16')][_0x7212ad][_0x9804('0x32')]+=moment(_0x51321b[_0x4e30e9][_0x233888][_0x9804('0x58')]||_0x51321b[_0x4e30e9][_0x233888][_0x9804('0x59')]||_0x51321b[_0x4e30e9][_0x233888]['queuecallerexitAt'])[_0x9804('0x56')](moment(_0x51321b[_0x4e30e9][_0x233888][_0x9804('0x57')]),_0x9804('0x5a'))||0x0;_0x5930b0[_0x9804('0x16')][_0x7212ad]['total']+=0x1;if(_0x51321b[_0x4e30e9][_0x233888][_0x9804('0x5b')]){_0x5930b0[_0x9804('0x16')][_0x7212ad][_0x9804('0x36')]+=0x1;_0x5930b0[_0x9804('0x16')][_0x7212ad][_0x9804('0x33')]+=moment(_0x51321b[_0x4e30e9][_0x233888][_0x9804('0x58')])[_0x9804('0x56')](moment(_0x51321b[_0x4e30e9][_0x233888]['queuecallerleaveAt']),_0x9804('0x5a'))||0x0;}}else{_0x5930b0[_0x9804('0x16')][_0x7212ad][_0x9804('0x32')]+=_0x5930b0[_0x9804('0x16')][_0x7212ad][_0x9804('0x31')]||0x0;}}}}}}return _0x5930b0[_0x9804('0x16')];};};Realtime[_0x9804('0x43')][_0x9804('0x5c')]=function(){var _0x4de485=this;return function(_0x16fd8c){clearVoiceCallReports(_0x4de485[_0x9804('0x1a')]);if(_0x16fd8c){for(var _0x32a619=0x0;_0x32a619<_0x16fd8c[_0x9804('0x48')];_0x32a619+=0x1){_0x4de485['outbound'][_0x9804('0x30')]+=0x1;_0x4de485[_0x9804('0x1a')][_0x9804('0x32')]+=_0x16fd8c[_0x32a619][_0x9804('0x5d')];if(_0x16fd8c[_0x32a619][_0x9804('0x5e')]===_0x9804('0x5f')){_0x4de485[_0x9804('0x1a')][_0x9804('0x36')]+=0x1;_0x4de485['outbound'][_0x9804('0x31')]+=_0x16fd8c[_0x32a619]['duration']-_0x16fd8c[_0x32a619][_0x9804('0x60')]||0x0;_0x4de485[_0x9804('0x1a')][_0x9804('0x33')]+=_0x16fd8c[_0x32a619][_0x9804('0x60')];}}}return _0x4de485[_0x9804('0x1a')];};};Realtime['prototype'][_0x9804('0x61')]=function(){var _0x3548ee=this;return function(_0x3f9043){if(_0x3f9043){freeIsNotKey(_0x3f9043,_0x3548ee[_0x9804('0x18')],_0x9804('0x2d'));for(var _0x3e9f21=0x0,_0x334cee={};_0x3e9f21<_0x3f9043[_0x9804('0x48')];_0x3e9f21+=0x1){_0x334cee=_0x3f9043[_0x3e9f21];if(_['isUndefined'](_0x3548ee[_0x9804('0x18')][_0x334cee['name']])){_0x3548ee['campaigns'][_0x334cee[_0x9804('0x2d')]]=new Campaign(_0x334cee);}else{_0x3548ee['mergeFromDatabase'](_0x3548ee['campaigns'][_0x334cee['name']],_0x334cee);_0x3548ee[_0x9804('0x18')][_0x334cee[_0x9804('0x2d')]][_0x9804('0x62')]=_0x334cee['SquareProject']?_0x334cee[_0x9804('0x63')][_0x9804('0x2d')]:undefined;}}}return _0x3548ee[_0x9804('0x18')];};};Realtime['prototype'][_0x9804('0x64')]=function(){var _0x34371f=this;return function(_0x15ee46){if(_0x15ee46){freeIsNotKey(_0x15ee46,_0x34371f['voiceExtensions'],'id');for(var _0x315c60=0x0,_0x5a59af={};_0x315c60<_0x15ee46[_0x9804('0x48')];_0x315c60+=0x1){_0x5a59af=_0x15ee46[_0x315c60];if(_[_0x9804('0x45')](_0x34371f['voiceExtensions'][_0x5a59af['id']])){_0x34371f[_0x9804('0x65')][_0x5a59af['id']]=new VoiceExtension(_0x5a59af);}else{_0x34371f[_0x9804('0x46')](_0x34371f[_0x9804('0x65')][_0x5a59af['id']],_0x5a59af);}}}return _0x34371f['voiceExtensions'];};};Realtime['prototype'][_0x9804('0x66')]=function(){var _0x32811b=this;return function(_0xae5581){clearCampaigns(_0x32811b['campaigns']);for(var _0x401660=0x0;_0x401660<_0xae5581[_0x9804('0x48')];_0x401660+=0x1){_[_0x9804('0x52')](_0x32811b[_0x9804('0x18')][_0xae5581[_0x401660][_0x9804('0x2d')]],_0xae5581[_0x401660]);}return _0x32811b[_0x9804('0x18')];};};Realtime[_0x9804('0x43')][_0x9804('0x67')]=function(){var _0x39276f=this;return function(_0xd0924a){if(_0xd0924a){freeIsNotKey(_0xd0924a,_0x39276f['faxAccounts'],'id');for(var _0x2e446f=0x0,_0x317a1b={},_0x373988={};_0x2e446f<_0xd0924a['length'];_0x2e446f+=0x1){_0x317a1b=_0xd0924a[_0x2e446f];if(_[_0x9804('0x45')](_0x39276f['faxAccounts'][_0x317a1b['id']])){_0x39276f[_0x9804('0x29')][_0x317a1b['id']]=new FaxAccount(_0x317a1b);}else{_0x39276f[_0x9804('0x46')](_0x39276f[_0x9804('0x29')][_0x317a1b['id']],_0x317a1b);}}}return _0x39276f[_0x9804('0x29')];};};module[_0x9804('0x68')]=Realtime;
\ No newline at end of file
index 1f38c61..5f6cd8c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc4b7=['lastdata','context','from-voip-provider','from-sip','xcally-motion-preview','calleridpreview','calleridnum','originatecalleridnum','channel','destinationchannel','callerid','ANSWERED','\x22%s\x22\x20<%s>','calleridname','transfers','linkedid','transfereelinkedid','uniqueid','monitor','monitors','filename','createdAt','connectedlinename','membername','isArray','forEach','substring','indexOf','mobile','phone','voiceDialReport','transfererlinkedid','attendedTransfer','lodash','moment','util','../../../config/environment','../rpc/voiceDialReport','../rpc/voiceQueueReport','./voiceQueueReport','./voiceCallReport','./voiceAgentReport','./voiceDialReport','realtime','agents','telephones','sync','xdr','disabled','custom:voiceQueueReport','voiceQueueReport','bind','custom:voiceCallReport','voiceCallReport','custom:voiceAgentReport','voiceAgentReport','custom:voiceDialReport','blindTransfer','attendedtransfer','prototype','findAgent','accountcode','name','isNil','find','interface','format','SIP/%s','length','connectedlinenum','lastAssignedTo','queuecallercompleteAt','YYYY-MM-DD\x20HH:mm:ss','queuecallerexitAt','create','match','destination','exten','type','dialer','queue'];(function(_0xef1fe5,_0x349494){var _0x5d8100=function(_0x571312){while(--_0x571312){_0xef1fe5['push'](_0xef1fe5['shift']());}};_0x5d8100(++_0x349494);}(_0xc4b7,0xc3));var _0x7c4b=function(_0x599f41,_0x4db732){_0x599f41=_0x599f41-0x0;var _0x2e4d58=_0xc4b7[_0x599f41];return _0x2e4d58;};'use strict';var _=require(_0x7c4b('0x0'));var moment=require(_0x7c4b('0x1'));var util=require(_0x7c4b('0x2'));var config=require(_0x7c4b('0x3'));var ami=require('../ami');var RpcVoiceAgentReport=require('../rpc/voiceAgentReport');var RpcVoiceCallReport=require('../rpc/voiceCallReport');var RpcVoiceDialReport=require(_0x7c4b('0x4'));var RpcMemberReport=require('../rpc/memberReport');var RpcVoiceQueueReport=require(_0x7c4b('0x5'));var RpcVoiceRecording=require('../rpc/voiceRecording');var RpcVoiceTransferReport=require('../rpc/voiceTransferReport');var VoiceQueueReport=require(_0x7c4b('0x6'));var VoiceCallReport=require(_0x7c4b('0x7'));var VoiceAgentReport=require(_0x7c4b('0x8'));var VoiceDialReport=require(_0x7c4b('0x9'));var UserReport=require('./userReport');function Report(_0x369db7){this[_0x7c4b('0xa')]=_0x369db7;this['agents']=_0x369db7[_0x7c4b('0xb')];this[_0x7c4b('0xc')]=_0x369db7[_0x7c4b('0xc')];}Report['prototype'][_0x7c4b('0xd')]=function(_0x2582bd){var _0xc62fc3=new VoiceQueueReport(this['realtime']);var _0x44ec5a=new VoiceAgentReport(this[_0x7c4b('0xa')]);var _0xb4f53d=new VoiceDialReport(this['realtime']);var _0x537286=new VoiceCallReport(this['realtime']);var _0x430967=new UserReport(this['realtime']);if(config[_0x7c4b('0xe')]&&config[_0x7c4b('0xe')][_0x7c4b('0xf')]){ami['on'](_0x7c4b('0x10'),this[_0x7c4b('0x11')][_0x7c4b('0x12')](this));ami['on'](_0x7c4b('0x13'),this[_0x7c4b('0x14')][_0x7c4b('0x12')](this));ami['on'](_0x7c4b('0x15'),this[_0x7c4b('0x16')]['bind'](this));ami['on'](_0x7c4b('0x17'),this['voiceDialReport']['bind'](this));ami['on']('blindtransfer',this[_0x7c4b('0x18')][_0x7c4b('0x12')](this));ami['on'](_0x7c4b('0x19'),this['attendedTransfer'][_0x7c4b('0x12')](this));}};Report[_0x7c4b('0x1a')][_0x7c4b('0x1b')]=function(_0x580500){var _0x58c8c3;_0x58c8c3=_['find'](this[_0x7c4b('0xb')],function(_0x1fcaa5){return _0x1fcaa5[_0x7c4b('0x1c')]==_0x580500||_0x1fcaa5[_0x7c4b('0x1d')]==_0x580500;});if(_[_0x7c4b('0x1e')](_0x58c8c3)){var _0x1fe4ca=_['find'](this['telephones'],function(_0x3bc4fd){return _0x3bc4fd[_0x7c4b('0x1c')]==_0x580500||_0x3bc4fd['name']==_0x580500;});if(_0x1fe4ca){_0x58c8c3=_[_0x7c4b('0x1f')](this[_0x7c4b('0xb')],function(_0x8955b){return _0x8955b[_0x7c4b('0x20')]==util[_0x7c4b('0x21')](_0x7c4b('0x22'),_0x1fe4ca[_0x7c4b('0x1d')]);});}}return _0x58c8c3;};Report[_0x7c4b('0x1a')][_0x7c4b('0x11')]=function(_0x2256c2){for(var _0x53f871=0x0;_0x53f871<_0x2256c2[_0x7c4b('0x23')];_0x53f871+=0x1){var _0x4bb4be=this[_0x7c4b('0x1b')](_0x2256c2[_0x53f871][_0x7c4b('0x24')]);if(_0x4bb4be){_0x2256c2[_0x53f871][_0x7c4b('0x1c')]=_0x4bb4be[_0x7c4b('0x1c')];_0x2256c2[_0x53f871]['assigned']=!![];_0x2256c2[_0x53f871][_0x7c4b('0x25')]=_0x4bb4be[_0x7c4b('0x1d')];_0x2256c2[_0x53f871]['interface']=_[_0x7c4b('0x1e')](_0x4bb4be['interface'])?util['format'](_0x7c4b('0x22'),_0x4bb4be['name']):_0x4bb4be[_0x7c4b('0x20')];if(_0x2256c2[_0x53f871]['queuecallercomplete']){_0x2256c2[_0x53f871][_0x7c4b('0x26')]=moment()[_0x7c4b('0x21')](_0x7c4b('0x27'));}if(_0x2256c2[_0x53f871]['queuecallerexit']){_0x2256c2[_0x53f871][_0x7c4b('0x28')]=moment()['format'](_0x7c4b('0x27'));}RpcMemberReport[_0x7c4b('0x11')](_0x2256c2[_0x53f871]);}RpcVoiceQueueReport[_0x7c4b('0x29')](_0x2256c2[_0x53f871]);}};function extractCalleridNumber(_0x547031){var _0x4e94d9=_0x547031[_0x7c4b('0x2a')](/<(.*?)>/);return _0x4e94d9?_0x4e94d9[0x1]:_0x547031;}Report['prototype'][_0x7c4b('0x14')]=function(_0x24907b){_0x24907b[_0x7c4b('0x2b')]=_0x24907b[_0x7c4b('0x2b')]||_0x24907b[_0x7c4b('0x2c')];if(_0x24907b[_0x7c4b('0x2d')]==_0x7c4b('0x2e')){_0x24907b['lastapplication']=_0x7c4b('0x2f');_0x24907b[_0x7c4b('0x30')]=_0x24907b[_0x7c4b('0x2f')];if(_0x24907b[_0x7c4b('0x31')]==_0x7c4b('0x32')){_0x24907b[_0x7c4b('0x1c')]='';_0x24907b[_0x7c4b('0x2b')]=extractCalleridNumber(_0x24907b['callerid']);}else if(_0x24907b['context']==_0x7c4b('0x33')){if(_0x24907b[_0x7c4b('0x2b')]==_0x7c4b('0x34')){_0x24907b['destination']=extractCalleridNumber(_0x24907b[_0x7c4b('0x35')]);_0x24907b[_0x7c4b('0x36')]=_0x24907b[_0x7c4b('0x37')];_0x24907b['destinationchannel']=[_0x24907b['channel'],_0x24907b[_0x7c4b('0x38')]=_0x24907b[_0x7c4b('0x39')]][0x0];_0x24907b[_0x7c4b('0x3a')]=_0x24907b[_0x7c4b('0x35')];}else{_0x24907b['destination']=_0x24907b[_0x7c4b('0x36')];_0x24907b[_0x7c4b('0x36')]=_0x24907b['originatecalleridnum'];if(_0x24907b['disposition']==_0x7c4b('0x3b')){_0x24907b[_0x7c4b('0x1c')]=_0x24907b[_0x7c4b('0x24')];}else{_0x24907b[_0x7c4b('0x1c')]='';}}}}else{_0x24907b[_0x7c4b('0x3a')]=util[_0x7c4b('0x21')](_0x7c4b('0x3c'),_0x24907b[_0x7c4b('0x3d')],_0x24907b[_0x7c4b('0x36')]);}if(RpcVoiceTransferReport[_0x7c4b('0x3e')][_0x24907b[_0x7c4b('0x3f')]]){var _0x58ce50=RpcVoiceTransferReport['transfers'][_0x24907b[_0x7c4b('0x3f')]];_0x58ce50[_0x7c4b('0x40')]=_0x24907b[_0x7c4b('0x41')];RpcVoiceTransferReport['blindTransfer'](_0x58ce50);delete RpcVoiceTransferReport[_0x7c4b('0x3e')][_0x24907b[_0x7c4b('0x3f')]];}RpcVoiceCallReport[_0x7c4b('0x29')](_0x24907b);if(_0x24907b[_0x7c4b('0x42')]){for(var _0x438dc2=0x0;_0x438dc2<_0x24907b[_0x7c4b('0x43')][_0x7c4b('0x23')];_0x438dc2+=0x1){_0x24907b['monitorFilename']=_0x24907b[_0x7c4b('0x43')][_0x438dc2][_0x7c4b('0x44')];_0x24907b[_0x7c4b('0x45')]=_0x24907b['monitors'][_0x438dc2][_0x7c4b('0x45')];if(_0x24907b['exten']==_0x7c4b('0x34')){_0x24907b[_0x7c4b('0x36')]=_0x24907b['connectedlinenum'];_0x24907b[_0x7c4b('0x3d')]=_0x24907b[_0x7c4b('0x46')];_0x24907b[_0x7c4b('0x24')]=_0x24907b[_0x7c4b('0x1c')];_0x24907b[_0x7c4b('0x46')]=_0x24907b[_0x7c4b('0x47')];_0x24907b[_0x7c4b('0x2c')]=_0x24907b['originatecalleridnum'];}else if(_0x24907b[_0x7c4b('0x2c')]=='xcally-motion-dialer'){_0x24907b[_0x7c4b('0x36')]=_0x24907b[_0x7c4b('0x2b')];_0x24907b['exten']=_0x24907b[_0x7c4b('0x37')];}RpcVoiceRecording[_0x7c4b('0x29')](_0x24907b);}}};Report['prototype'][_0x7c4b('0x16')]=function(_0x23039b){if(_[_0x7c4b('0x48')](_0x23039b)){_0x23039b[_0x7c4b('0x49')](function(_0x4b0c4b){RpcVoiceAgentReport['create'](_0x4b0c4b);});}else{RpcVoiceAgentReport[_0x7c4b('0x29')](_0x23039b);}};Report['prototype']['voiceDialReport']=function(_0x33a22a){RpcVoiceDialReport[_0x7c4b('0x29')](_0x33a22a);var _0x5bed97;var _0x493131;var _0x12a1c1=_0x33a22a[_0x7c4b('0x38')];if(_['startsWith'](_0x12a1c1,'Local')){_0x493131=_0x12a1c1[_0x7c4b('0x4a')](_0x12a1c1[_0x7c4b('0x4b')]('/')+0x1,_0x12a1c1['indexOf']('@'));_0x5bed97=_[_0x7c4b('0x1f')](this[_0x7c4b('0xb')],function(_0x1f2e93){return _0x1f2e93[_0x7c4b('0x4c')]==_0x493131||_0x1f2e93[_0x7c4b('0x4d')]==_0x493131||_0x1f2e93[_0x7c4b('0x1c')]==_0x493131;});}else{_0x493131=_0x12a1c1[_0x7c4b('0x4a')](_0x12a1c1['indexOf']('/')+0x1,_0x12a1c1['lastIndexOf']('-'));_0x5bed97=this[_0x7c4b('0x1b')](_0x493131);}if(_0x5bed97){_0x33a22a[_0x7c4b('0x20')]=_[_0x7c4b('0x1e')](_0x5bed97[_0x7c4b('0x20')])?util[_0x7c4b('0x21')]('SIP/%s',_0x5bed97[_0x7c4b('0x1d')]):_0x5bed97[_0x7c4b('0x20')];_0x33a22a[_0x7c4b('0x47')]=_0x5bed97['name'];_0x33a22a[_0x7c4b('0x1c')]=_0x5bed97[_0x7c4b('0x1c')];RpcMemberReport[_0x7c4b('0x4e')](_0x33a22a);}};Report[_0x7c4b('0x1a')][_0x7c4b('0x18')]=function(_0x3af2ab){RpcVoiceTransferReport['transfers'][_0x3af2ab[_0x7c4b('0x4f')]]=_0x3af2ab;};Report[_0x7c4b('0x1a')][_0x7c4b('0x50')]=function(_0x140732){RpcVoiceTransferReport[_0x7c4b('0x50')](_0x140732);};module['exports']=Report;
\ No newline at end of file
+var _0x23d3=['create','monitors','monitorFilename','filename','createdAt','connectedlinename','xcally-motion-dialer','isArray','Local','indexOf','mobile','phone','lastIndexOf','membername','voiceDialReport','transfererlinkedid','exports','lodash','moment','../../../config/environment','../ami','../rpc/voiceAgentReport','../rpc/voiceDialReport','../rpc/memberReport','../rpc/voiceQueueReport','../rpc/voiceRecording','../rpc/voiceTransferReport','./voiceQueueReport','./voiceCallReport','./voiceAgentReport','./voiceDialReport','realtime','agents','telephones','prototype','sync','xdr','disabled','voiceQueueReport','bind','custom:voiceCallReport','voiceCallReport','voiceAgentReport','blindtransfer','blindTransfer','attendedtransfer','attendedTransfer','findAgent','find','accountcode','isNil','format','SIP/%s','name','length','lastAssignedTo','interface','queuecallercomplete','queuecallercompleteAt','YYYY-MM-DD\x20HH:mm:ss','match','destination','exten','type','dialer','lastapplication','queue','from-voip-provider','callerid','context','from-sip','xcally-motion-preview','calleridnum','destinationchannel','channel','calleridpreview','originatecalleridnum','connectedlinenum','\x22%s\x22\x20<%s>','calleridname','transfers','linkedid','transfereelinkedid'];(function(_0x14437f,_0xc14167){var _0x4d0175=function(_0xb74854){while(--_0xb74854){_0x14437f['push'](_0x14437f['shift']());}};_0x4d0175(++_0xc14167);}(_0x23d3,0x64));var _0x323d=function(_0x23c71f,_0xd26259){_0x23c71f=_0x23c71f-0x0;var _0x1da90e=_0x23d3[_0x23c71f];return _0x1da90e;};'use strict';var _=require(_0x323d('0x0'));var moment=require(_0x323d('0x1'));var util=require('util');var config=require(_0x323d('0x2'));var ami=require(_0x323d('0x3'));var RpcVoiceAgentReport=require(_0x323d('0x4'));var RpcVoiceCallReport=require('../rpc/voiceCallReport');var RpcVoiceDialReport=require(_0x323d('0x5'));var RpcMemberReport=require(_0x323d('0x6'));var RpcVoiceQueueReport=require(_0x323d('0x7'));var RpcVoiceRecording=require(_0x323d('0x8'));var RpcVoiceTransferReport=require(_0x323d('0x9'));var VoiceQueueReport=require(_0x323d('0xa'));var VoiceCallReport=require(_0x323d('0xb'));var VoiceAgentReport=require(_0x323d('0xc'));var VoiceDialReport=require(_0x323d('0xd'));var UserReport=require('./userReport');function Report(_0x5805bc){this[_0x323d('0xe')]=_0x5805bc;this[_0x323d('0xf')]=_0x5805bc[_0x323d('0xf')];this[_0x323d('0x10')]=_0x5805bc[_0x323d('0x10')];}Report[_0x323d('0x11')][_0x323d('0x12')]=function(_0x538c64){var _0x4e2894=new VoiceQueueReport(this[_0x323d('0xe')]);var _0x5c25a7=new VoiceAgentReport(this[_0x323d('0xe')]);var _0x57d373=new VoiceDialReport(this[_0x323d('0xe')]);var _0x49982c=new VoiceCallReport(this[_0x323d('0xe')]);var _0x5d4478=new UserReport(this[_0x323d('0xe')]);if(config['xdr']&&config[_0x323d('0x13')][_0x323d('0x14')]){ami['on']('custom:voiceQueueReport',this[_0x323d('0x15')][_0x323d('0x16')](this));ami['on'](_0x323d('0x17'),this[_0x323d('0x18')]['bind'](this));ami['on']('custom:voiceAgentReport',this[_0x323d('0x19')][_0x323d('0x16')](this));ami['on']('custom:voiceDialReport',this['voiceDialReport'][_0x323d('0x16')](this));ami['on'](_0x323d('0x1a'),this[_0x323d('0x1b')][_0x323d('0x16')](this));ami['on'](_0x323d('0x1c'),this[_0x323d('0x1d')][_0x323d('0x16')](this));}};Report[_0x323d('0x11')][_0x323d('0x1e')]=function(_0x2790e4){var _0x3dd819;_0x3dd819=_[_0x323d('0x1f')](this[_0x323d('0xf')],function(_0x5286c4){return _0x5286c4[_0x323d('0x20')]==_0x2790e4||_0x5286c4['name']==_0x2790e4;});if(_[_0x323d('0x21')](_0x3dd819)){var _0x4c582b=_[_0x323d('0x1f')](this['telephones'],function(_0x2590ee){return _0x2590ee[_0x323d('0x20')]==_0x2790e4||_0x2590ee['name']==_0x2790e4;});if(_0x4c582b){_0x3dd819=_[_0x323d('0x1f')](this['agents'],function(_0x5ce941){return _0x5ce941['interface']==util[_0x323d('0x22')](_0x323d('0x23'),_0x4c582b[_0x323d('0x24')]);});}}return _0x3dd819;};Report[_0x323d('0x11')][_0x323d('0x15')]=function(_0x488181){for(var _0x3c84ca=0x0;_0x3c84ca<_0x488181[_0x323d('0x25')];_0x3c84ca+=0x1){var _0x471db0=this[_0x323d('0x1e')](_0x488181[_0x3c84ca]['connectedlinenum']);if(_0x471db0){_0x488181[_0x3c84ca][_0x323d('0x20')]=_0x471db0[_0x323d('0x20')];_0x488181[_0x3c84ca]['assigned']=!![];_0x488181[_0x3c84ca][_0x323d('0x26')]=_0x471db0[_0x323d('0x24')];_0x488181[_0x3c84ca][_0x323d('0x27')]=_['isNil'](_0x471db0[_0x323d('0x27')])?util[_0x323d('0x22')](_0x323d('0x23'),_0x471db0[_0x323d('0x24')]):_0x471db0[_0x323d('0x27')];if(_0x488181[_0x3c84ca][_0x323d('0x28')]){_0x488181[_0x3c84ca][_0x323d('0x29')]=moment()[_0x323d('0x22')](_0x323d('0x2a'));}if(_0x488181[_0x3c84ca]['queuecallerexit']){_0x488181[_0x3c84ca]['queuecallerexitAt']=moment()[_0x323d('0x22')](_0x323d('0x2a'));}RpcMemberReport[_0x323d('0x15')](_0x488181[_0x3c84ca]);}RpcVoiceQueueReport['create'](_0x488181[_0x3c84ca]);}};function extractCalleridNumber(_0x54e382){var _0x1f3f26=_0x54e382[_0x323d('0x2b')](/<(.*?)>/);return _0x1f3f26?_0x1f3f26[0x1]:_0x54e382;}Report['prototype'][_0x323d('0x18')]=function(_0x1b0720){_0x1b0720[_0x323d('0x2c')]=_0x1b0720[_0x323d('0x2c')]||_0x1b0720[_0x323d('0x2d')];if(_0x1b0720[_0x323d('0x2e')]==_0x323d('0x2f')){_0x1b0720[_0x323d('0x30')]=_0x323d('0x31');_0x1b0720['lastdata']=_0x1b0720[_0x323d('0x31')];if(_0x1b0720['context']==_0x323d('0x32')){_0x1b0720[_0x323d('0x20')]='';_0x1b0720[_0x323d('0x2c')]=extractCalleridNumber(_0x1b0720[_0x323d('0x33')]);}else if(_0x1b0720[_0x323d('0x34')]==_0x323d('0x35')){if(_0x1b0720['destination']==_0x323d('0x36')){_0x1b0720[_0x323d('0x2c')]=extractCalleridNumber(_0x1b0720['calleridpreview']);_0x1b0720[_0x323d('0x37')]=_0x1b0720['originatecalleridnum'];_0x1b0720[_0x323d('0x38')]=[_0x1b0720[_0x323d('0x39')],_0x1b0720['channel']=_0x1b0720['destinationchannel']][0x0];_0x1b0720['callerid']=_0x1b0720[_0x323d('0x3a')];}else{_0x1b0720[_0x323d('0x2c')]=_0x1b0720[_0x323d('0x37')];_0x1b0720[_0x323d('0x37')]=_0x1b0720[_0x323d('0x3b')];if(_0x1b0720['disposition']=='ANSWERED'){_0x1b0720[_0x323d('0x20')]=_0x1b0720[_0x323d('0x3c')];}else{_0x1b0720['accountcode']='';}}}}else{_0x1b0720[_0x323d('0x33')]=util['format'](_0x323d('0x3d'),_0x1b0720[_0x323d('0x3e')],_0x1b0720[_0x323d('0x37')]);}if(RpcVoiceTransferReport[_0x323d('0x3f')][_0x1b0720['linkedid']]){var _0x5a7c11=RpcVoiceTransferReport[_0x323d('0x3f')][_0x1b0720[_0x323d('0x40')]];_0x5a7c11[_0x323d('0x41')]=_0x1b0720['uniqueid'];RpcVoiceTransferReport[_0x323d('0x1b')](_0x5a7c11);delete RpcVoiceTransferReport[_0x323d('0x3f')][_0x1b0720[_0x323d('0x40')]];}RpcVoiceCallReport[_0x323d('0x42')](_0x1b0720);if(_0x1b0720['monitor']){for(var _0x155c97=0x0;_0x155c97<_0x1b0720[_0x323d('0x43')][_0x323d('0x25')];_0x155c97+=0x1){_0x1b0720[_0x323d('0x44')]=_0x1b0720[_0x323d('0x43')][_0x155c97][_0x323d('0x45')];_0x1b0720[_0x323d('0x46')]=_0x1b0720[_0x323d('0x43')][_0x155c97][_0x323d('0x46')];if(_0x1b0720['exten']==_0x323d('0x36')){_0x1b0720[_0x323d('0x37')]=_0x1b0720['connectedlinenum'];_0x1b0720[_0x323d('0x3e')]=_0x1b0720[_0x323d('0x47')];_0x1b0720['connectedlinenum']=_0x1b0720['accountcode'];_0x1b0720[_0x323d('0x47')]=_0x1b0720['membername'];_0x1b0720[_0x323d('0x2d')]=_0x1b0720[_0x323d('0x3b')];}else if(_0x1b0720[_0x323d('0x2d')]==_0x323d('0x48')){_0x1b0720[_0x323d('0x37')]=_0x1b0720[_0x323d('0x2c')];_0x1b0720[_0x323d('0x2d')]=_0x1b0720[_0x323d('0x3b')];}RpcVoiceRecording['create'](_0x1b0720);}}};Report[_0x323d('0x11')][_0x323d('0x19')]=function(_0x35357a){if(_[_0x323d('0x49')](_0x35357a)){_0x35357a['forEach'](function(_0x4e19cc){RpcVoiceAgentReport[_0x323d('0x42')](_0x4e19cc);});}else{RpcVoiceAgentReport[_0x323d('0x42')](_0x35357a);}};Report[_0x323d('0x11')]['voiceDialReport']=function(_0x3a0a58){RpcVoiceDialReport[_0x323d('0x42')](_0x3a0a58);var _0x54e386;var _0x64a5d9;var _0x4b8506=_0x3a0a58[_0x323d('0x39')];if(_['startsWith'](_0x4b8506,_0x323d('0x4a'))){_0x64a5d9=_0x4b8506['substring'](_0x4b8506[_0x323d('0x4b')]('/')+0x1,_0x4b8506[_0x323d('0x4b')]('@'));_0x54e386=_['find'](this[_0x323d('0xf')],function(_0x403172){return _0x403172[_0x323d('0x4c')]==_0x64a5d9||_0x403172[_0x323d('0x4d')]==_0x64a5d9||_0x403172[_0x323d('0x20')]==_0x64a5d9;});}else{_0x64a5d9=_0x4b8506['substring'](_0x4b8506[_0x323d('0x4b')]('/')+0x1,_0x4b8506[_0x323d('0x4e')]('-'));_0x54e386=this[_0x323d('0x1e')](_0x64a5d9);}if(_0x54e386){_0x3a0a58[_0x323d('0x27')]=_[_0x323d('0x21')](_0x54e386['interface'])?util['format'](_0x323d('0x23'),_0x54e386[_0x323d('0x24')]):_0x54e386[_0x323d('0x27')];_0x3a0a58[_0x323d('0x4f')]=_0x54e386[_0x323d('0x24')];_0x3a0a58['accountcode']=_0x54e386['accountcode'];RpcMemberReport[_0x323d('0x50')](_0x3a0a58);}};Report[_0x323d('0x11')][_0x323d('0x1b')]=function(_0x4587a8){RpcVoiceTransferReport[_0x323d('0x3f')][_0x4587a8[_0x323d('0x51')]]=_0x4587a8;};Report[_0x323d('0x11')]['attendedTransfer']=function(_0x2b53e0){RpcVoiceTransferReport[_0x323d('0x1d')](_0x2b53e0);};module[_0x323d('0x52')]=Report;
\ No newline at end of file
index 2c7746e..50fffc0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x99e8=['address','[userReport][peerstatus]','registered','status','updateStatusRealtime','[userReport][peerstatus]\x20sending\x20telephone:save\x20event:','exports','lodash','moment','util','ioredis','bluebird','../../../config/environment','../../../config/logger','ami','redis','defaults','localhost','socket.io-emitter','trunks','agents','telephones','registryentry','peerstatus','syncPeerStatus','syncRealtimeShow','resolve','then','actionSipShowRegistry','catch','error','inspect','[userReport][devicestatelist]','actionSipPeerStatus','isUndefined','prototype','emit','syncRegistry','isNotNull','info','[userReport][registry]\x20registry:%s\x20state:%s','username','[userReport][registry]','state','merge','event','actionid','debug','format','trunk:%s','name','trunk:save','syncDeviceState','[userReport][devicestatechange]\x20device:%s\x20state:%s','device','[userReport][devicestatechange]','inuse','local','toLowerCase','stateTime','toNumber','telephone:%s','telephone:save','startsWith','indexOf','find','mobile','[userReport][peerstatus]\x20peer:%s\x20address:%s\x20status:%s','peer'];(function(_0x324012,_0x23f45f){var _0x435cf2=function(_0x378a82){while(--_0x378a82){_0x324012['push'](_0x324012['shift']());}};_0x435cf2(++_0x23f45f);}(_0x99e8,0x11b));var _0x899e=function(_0x24cfbc,_0x562791){_0x24cfbc=_0x24cfbc-0x0;var _0x5c97ef=_0x99e8[_0x24cfbc];return _0x5c97ef;};'use strict';var _=require(_0x899e('0x0'));var moment=require(_0x899e('0x1'));var util=require(_0x899e('0x2'));var Redis=require(_0x899e('0x3'));var BPromise=require(_0x899e('0x4'));var config=require(_0x899e('0x5'));var logger=require(_0x899e('0x6'))(_0x899e('0x7'));var ami=require('../ami');config[_0x899e('0x8')]=_[_0x899e('0x9')](config[_0x899e('0x8')],{'host':_0x899e('0xa'),'port':0x18eb});var io=require(_0x899e('0xb'))(new Redis(config[_0x899e('0x8')]));function UserReport(_0x3cc04e){this[_0x899e('0xc')]=_0x3cc04e[_0x899e('0xc')];this[_0x899e('0xd')]=_0x3cc04e[_0x899e('0xd')];this[_0x899e('0xe')]=_0x3cc04e[_0x899e('0xe')];ami['on'](_0x899e('0xf'),this['syncRegistry']['bind'](this));ami['on']('registry',this['syncRegistry']['bind'](this));ami['on']('devicestatechange',this['syncDeviceState']['bind'](this));ami['on'](_0x899e('0x10'),this[_0x899e('0x11')]['bind'](this));return this[_0x899e('0x12')]();}function showSipRegistrations(){Promise[_0x899e('0x13')]()[_0x899e('0x14')](ami[_0x899e('0x15')]())[_0x899e('0x16')](function(_0x2a9ba9){logger[_0x899e('0x17')]('[userReport][sipshowregistry]',util[_0x899e('0x18')](_0x2a9ba9,{'showHidden':![],'depth':null}));});}function listDeviceStates(){Promise['resolve']()[_0x899e('0x14')](ami['actionDeviceStateList']())[_0x899e('0x16')](function(_0x369aa2){logger['error'](_0x899e('0x19'),util[_0x899e('0x18')](_0x369aa2,{'showHidden':![],'depth':null}));});}function showPeersStatus(){Promise[_0x899e('0x13')]()[_0x899e('0x14')](ami[_0x899e('0x1a')]())[_0x899e('0x16')](function(_0x2aeabb){logger[_0x899e('0x17')]('[userReport][sippeerstatus]',util[_0x899e('0x18')](_0x2aeabb,{'showHidden':![],'depth':null}));});}UserReport['prototype'][_0x899e('0x12')]=function(){setInterval(function(){BPromise['resolve']()[_0x899e('0x14')](showSipRegistrations())[_0x899e('0x14')](listDeviceStates())[_0x899e('0x14')](showPeersStatus());},0x32c8);};UserReport['prototype']['isNotNull']=function(_0x5acc4e){return _0x5acc4e!==null&&!_[_0x899e('0x1b')](_0x5acc4e);};UserReport[_0x899e('0x1c')]['emit']=function(_0x4afcd0,_0x63e42b,_0x30a70b){io['to'](_0x4afcd0)[_0x899e('0x1d')](_0x63e42b,_0x30a70b);};UserReport[_0x899e('0x1c')][_0x899e('0x1e')]=function(_0x25a67d){try{if(this[_0x899e('0x1f')](_0x25a67d)){logger[_0x899e('0x20')](_0x899e('0x21'),_0x25a67d[_0x899e('0x22')],_0x25a67d['state']);logger['debug'](_0x899e('0x23'),util[_0x899e('0x18')](_0x25a67d,{'showHidden':![],'depth':null}));var _0x3c2b0c=_['find'](this[_0x899e('0xc')],{'defaultuser':_0x25a67d[_0x899e('0x22')]});if(_0x3c2b0c){_0x25a67d['stateRegistry']=_0x25a67d[_0x899e('0x24')];_[_0x899e('0x25')](_0x3c2b0c,_['omit'](_0x25a67d,[_0x899e('0x26'),_0x899e('0x27'),_0x899e('0x22'),_0x899e('0x24')]));logger[_0x899e('0x28')]('[userReport][registry]\x20sending\x20trunk:save\x20event:',util[_0x899e('0x18')](_0x3c2b0c,{'showHidden':![],'depth':null}));this[_0x899e('0x1d')](util[_0x899e('0x29')](_0x899e('0x2a'),_0x3c2b0c[_0x899e('0x2b')]),_0x899e('0x2c'),_0x3c2b0c);}}}catch(_0x29ddc1){logger[_0x899e('0x17')]('[userReport][registry]',util['inspect'](_0x29ddc1,{'showHidden':![],'depth':null}));}};UserReport[_0x899e('0x1c')][_0x899e('0x2d')]=function(_0x2ea76e){try{if(this['isNotNull'](_0x2ea76e)){logger[_0x899e('0x20')](_0x899e('0x2e'),_0x2ea76e[_0x899e('0x2f')],_0x2ea76e[_0x899e('0x24')]);logger['debug'](_0x899e('0x30'),util[_0x899e('0x18')](_0x2ea76e,{'showHidden':![],'depth':null}));if(this[_0x899e('0xd')][_0x2ea76e[_0x899e('0x2f')]]){if(!this[_0x899e('0xd')][_0x2ea76e['device']]['local']||_0x2ea76e[_0x899e('0x24')]['toLowerCase']()==_0x899e('0x31')){this[_0x899e('0xd')][_0x2ea76e[_0x899e('0x2f')]][_0x899e('0x32')]=![];if(this[_0x899e('0xd')][_0x2ea76e['device']]['state']!==_0x2ea76e[_0x899e('0x24')][_0x899e('0x33')]()){this[_0x899e('0xd')][_0x2ea76e[_0x899e('0x2f')]][_0x899e('0x34')]=_[_0x899e('0x35')](moment()['format']('x'));}this['agents'][_0x2ea76e[_0x899e('0x2f')]]['state']=_0x2ea76e[_0x899e('0x24')][_0x899e('0x33')]();this[_0x899e('0xd')][_0x2ea76e[_0x899e('0x2f')]]['updateStatusRealtime'](_0x2ea76e);}}else if(this[_0x899e('0xe')][_0x2ea76e['device']]){if(this[_0x899e('0xe')][_0x2ea76e[_0x899e('0x2f')]][_0x899e('0x24')]!==_0x2ea76e[_0x899e('0x24')][_0x899e('0x33')]()){this['telephones'][_0x2ea76e[_0x899e('0x2f')]][_0x899e('0x34')]=_[_0x899e('0x35')](moment()[_0x899e('0x29')]('x'));}this[_0x899e('0xe')][_0x2ea76e['device']][_0x899e('0x24')]=_0x2ea76e['state']['toLowerCase']();logger[_0x899e('0x28')]('[userReport][devicestatechange]\x20sending\x20telephone:save\x20event:',util[_0x899e('0x18')](this[_0x899e('0xe')][_0x2ea76e['device']],{'showHidden':![],'depth':null}));this['emit'](util['format'](_0x899e('0x36'),this[_0x899e('0xe')][_0x2ea76e[_0x899e('0x2f')]]['name']),_0x899e('0x37'),this[_0x899e('0xe')][_0x2ea76e[_0x899e('0x2f')]]);}else if(this['trunks'][_0x2ea76e[_0x899e('0x2f')]]){if(this[_0x899e('0xc')][_0x2ea76e[_0x899e('0x2f')]][_0x899e('0x24')]!==_0x2ea76e['state'][_0x899e('0x33')]()){this['trunks'][_0x2ea76e[_0x899e('0x2f')]][_0x899e('0x34')]=_[_0x899e('0x35')](moment()[_0x899e('0x29')]('x'));}this[_0x899e('0xc')][_0x2ea76e[_0x899e('0x2f')]][_0x899e('0x24')]=_0x2ea76e[_0x899e('0x24')]['toLowerCase']();logger[_0x899e('0x28')]('[userReport][devicestatechange]\x20sending\x20trunk:save\x20event:',util[_0x899e('0x18')](this[_0x899e('0xc')][_0x2ea76e[_0x899e('0x2f')]],{'showHidden':![],'depth':null}));this['emit'](util['format'](_0x899e('0x2a'),this[_0x899e('0xc')][_0x2ea76e['device']][_0x899e('0x2b')]),'trunk:save',this['trunks'][_0x2ea76e[_0x899e('0x2f')]]);}else if(_[_0x899e('0x38')](_0x2ea76e['device'],'Local')){var _0x12a76=_0x2ea76e[_0x899e('0x2f')];var _0x5228f6=_0x12a76['substring'](_0x12a76[_0x899e('0x39')]('/')+0x1,_0x12a76[_0x899e('0x39')]('@'));var _0x46dd50=_[_0x899e('0x3a')](this[_0x899e('0xd')],function(_0xfe79fd){return _0xfe79fd[_0x899e('0x3b')]==_0x5228f6||_0xfe79fd['phone']==_0x5228f6||_0xfe79fd['accountcode']==_0x5228f6;});if(_0x46dd50){if(_0x46dd50[_0x899e('0x24')]!==_0x2ea76e['state'][_0x899e('0x33')]()){_0x46dd50[_0x899e('0x34')]=_[_0x899e('0x35')](moment()[_0x899e('0x29')]('x'));}_0x46dd50['state']=_0x2ea76e[_0x899e('0x24')][_0x899e('0x33')]();_0x46dd50[_0x899e('0x32')]=!![];_0x46dd50['updateStatusRealtime'](_0x2ea76e);}}}}catch(_0x27387b){logger['error'](_0x899e('0x30'),util['inspect'](_0x27387b,{'showHidden':![],'depth':null}));}};UserReport[_0x899e('0x1c')][_0x899e('0x11')]=function(_0x5c6dd5){try{if(this[_0x899e('0x1f')](_0x5c6dd5)&&this[_0x899e('0x1f')](_0x5c6dd5['peerstatus'])){logger['info'](_0x899e('0x3c'),_0x5c6dd5[_0x899e('0x3d')],_0x5c6dd5[_0x899e('0x3e')],_0x5c6dd5[_0x899e('0x10')]);logger['debug'](_0x899e('0x3f'),util[_0x899e('0x18')](_0x5c6dd5,{'showHidden':![],'depth':null}));if(this[_0x899e('0xd')][_0x5c6dd5[_0x899e('0x3d')]]){if(!this[_0x899e('0xd')][_0x5c6dd5[_0x899e('0x3d')]]['local']||_0x5c6dd5[_0x899e('0x10')]['toLowerCase']()==_0x899e('0x40')){this[_0x899e('0xd')][_0x5c6dd5[_0x899e('0x3d')]]['local']=![];this['agents'][_0x5c6dd5[_0x899e('0x3d')]][_0x899e('0x41')]=_0x5c6dd5['peerstatus']['toLowerCase']();this[_0x899e('0xd')][_0x5c6dd5[_0x899e('0x3d')]][_0x899e('0x3e')]=_0x5c6dd5[_0x899e('0x3e')];this[_0x899e('0xd')][_0x5c6dd5['peer']][_0x899e('0x42')](_0x5c6dd5);}}else if(this[_0x899e('0xe')][_0x5c6dd5['peer']]){this['telephones'][_0x5c6dd5[_0x899e('0x3d')]][_0x899e('0x41')]=_0x5c6dd5[_0x899e('0x10')]['toLowerCase']();this[_0x899e('0xe')][_0x5c6dd5[_0x899e('0x3d')]][_0x899e('0x3e')]=_0x5c6dd5[_0x899e('0x3e')];logger[_0x899e('0x28')](_0x899e('0x43'),util['inspect'](this[_0x899e('0xe')][_0x5c6dd5[_0x899e('0x3d')]],{'showHidden':![],'depth':null}));this['emit'](util[_0x899e('0x29')](_0x899e('0x36'),this[_0x899e('0xe')][_0x5c6dd5[_0x899e('0x3d')]][_0x899e('0x2b')]),_0x899e('0x37'),this['telephones'][_0x5c6dd5['peer']]);}else if(this[_0x899e('0xc')][_0x5c6dd5[_0x899e('0x3d')]]){this['trunks'][_0x5c6dd5['peer']][_0x899e('0x41')]=_0x5c6dd5[_0x899e('0x10')][_0x899e('0x33')]();this[_0x899e('0xc')][_0x5c6dd5[_0x899e('0x3d')]][_0x899e('0x3e')]=_0x5c6dd5[_0x899e('0x3e')];logger[_0x899e('0x28')]('[userReport][peerstatus]\x20sending\x20trunk:save\x20event:',util[_0x899e('0x18')](this['trunks'][_0x5c6dd5[_0x899e('0x3d')]],{'showHidden':![],'depth':null}));this[_0x899e('0x1d')](util[_0x899e('0x29')]('trunk:%s',this[_0x899e('0xc')][_0x5c6dd5[_0x899e('0x3d')]][_0x899e('0x2b')]),_0x899e('0x2c'),this[_0x899e('0xc')][_0x5c6dd5[_0x899e('0x3d')]]);}}}catch(_0x1040cc){logger[_0x899e('0x17')](_0x899e('0x3f'),util[_0x899e('0x18')](_0x1040cc,{'showHidden':![],'depth':null}));}};module[_0x899e('0x44')]=UserReport;
\ No newline at end of file
+var _0x93a5=['devicestatechange','syncDeviceState','peerstatus','syncPeerStatus','resolve','then','actionSipShowRegistry','catch','error','[userReport][sipshowregistry]','inspect','actionDeviceStateList','[userReport][devicestatelist]','actionSipPeerStatus','[userReport][sippeerstatus]','prototype','isNotNull','isUndefined','emit','info','[userReport][registry]\x20registry:%s\x20state:%s','username','state','debug','stateRegistry','merge','event','actionid','format','trunk:%s','trunk:save','[userReport][registry]','device','[userReport][devicestatechange]','local','toLowerCase','inuse','stateTime','toNumber','[userReport][devicestatechange]\x20sending\x20telephone:save\x20event:','telephone:%s','name','telephone:save','substring','indexOf','find','accountcode','updateStatusRealtime','[userReport][peerstatus]\x20peer:%s\x20address:%s\x20status:%s','peer','address','registered','status','[userReport][peerstatus]\x20sending\x20telephone:save\x20event:','exports','lodash','moment','util','ioredis','bluebird','../../../config/environment','../../../config/logger','ami','../ami','redis','defaults','localhost','socket.io-emitter','trunks','agents','telephones','registryentry','syncRegistry','bind','registry'];(function(_0x546f9f,_0xcce640){var _0x3513dd=function(_0x2e5c79){while(--_0x2e5c79){_0x546f9f['push'](_0x546f9f['shift']());}};_0x3513dd(++_0xcce640);}(_0x93a5,0x1ae));var _0x593a=function(_0x26f1b2,_0x33d843){_0x26f1b2=_0x26f1b2-0x0;var _0x1624a4=_0x93a5[_0x26f1b2];return _0x1624a4;};'use strict';var _=require(_0x593a('0x0'));var moment=require(_0x593a('0x1'));var util=require(_0x593a('0x2'));var Redis=require(_0x593a('0x3'));var BPromise=require(_0x593a('0x4'));var config=require(_0x593a('0x5'));var logger=require(_0x593a('0x6'))(_0x593a('0x7'));var ami=require(_0x593a('0x8'));config[_0x593a('0x9')]=_[_0x593a('0xa')](config[_0x593a('0x9')],{'host':_0x593a('0xb'),'port':0x18eb});var io=require(_0x593a('0xc'))(new Redis(config[_0x593a('0x9')]));function UserReport(_0x16d9eb){this[_0x593a('0xd')]=_0x16d9eb[_0x593a('0xd')];this['agents']=_0x16d9eb[_0x593a('0xe')];this[_0x593a('0xf')]=_0x16d9eb['telephones'];ami['on'](_0x593a('0x10'),this[_0x593a('0x11')][_0x593a('0x12')](this));ami['on'](_0x593a('0x13'),this[_0x593a('0x11')][_0x593a('0x12')](this));ami['on'](_0x593a('0x14'),this[_0x593a('0x15')][_0x593a('0x12')](this));ami['on'](_0x593a('0x16'),this[_0x593a('0x17')][_0x593a('0x12')](this));return this['syncRealtimeShow']();}function showSipRegistrations(){Promise[_0x593a('0x18')]()[_0x593a('0x19')](ami[_0x593a('0x1a')]())[_0x593a('0x1b')](function(_0x425d73){logger[_0x593a('0x1c')](_0x593a('0x1d'),util[_0x593a('0x1e')](_0x425d73,{'showHidden':![],'depth':null}));});}function listDeviceStates(){Promise['resolve']()[_0x593a('0x19')](ami[_0x593a('0x1f')]())[_0x593a('0x1b')](function(_0x31553d){logger[_0x593a('0x1c')](_0x593a('0x20'),util[_0x593a('0x1e')](_0x31553d,{'showHidden':![],'depth':null}));});}function showPeersStatus(){Promise['resolve']()[_0x593a('0x19')](ami[_0x593a('0x21')]())['catch'](function(_0x1df826){logger[_0x593a('0x1c')](_0x593a('0x22'),util['inspect'](_0x1df826,{'showHidden':![],'depth':null}));});}UserReport[_0x593a('0x23')]['syncRealtimeShow']=function(){setInterval(function(){BPromise['resolve']()[_0x593a('0x19')](showSipRegistrations())['then'](listDeviceStates())[_0x593a('0x19')](showPeersStatus());},0x32c8);};UserReport[_0x593a('0x23')][_0x593a('0x24')]=function(_0x2ee401){return _0x2ee401!==null&&!_[_0x593a('0x25')](_0x2ee401);};UserReport['prototype']['emit']=function(_0x3cd896,_0x3c5486,_0xed9765){io['to'](_0x3cd896)[_0x593a('0x26')](_0x3c5486,_0xed9765);};UserReport[_0x593a('0x23')][_0x593a('0x11')]=function(_0x30d8ed){try{if(this[_0x593a('0x24')](_0x30d8ed)){logger[_0x593a('0x27')](_0x593a('0x28'),_0x30d8ed[_0x593a('0x29')],_0x30d8ed[_0x593a('0x2a')]);logger[_0x593a('0x2b')]('[userReport][registry]',util[_0x593a('0x1e')](_0x30d8ed,{'showHidden':![],'depth':null}));var _0x469a51=_['find'](this[_0x593a('0xd')],{'defaultuser':_0x30d8ed[_0x593a('0x29')]});if(_0x469a51){_0x30d8ed[_0x593a('0x2c')]=_0x30d8ed[_0x593a('0x2a')];_[_0x593a('0x2d')](_0x469a51,_['omit'](_0x30d8ed,[_0x593a('0x2e'),_0x593a('0x2f'),'username',_0x593a('0x2a')]));logger[_0x593a('0x2b')]('[userReport][registry]\x20sending\x20trunk:save\x20event:',util[_0x593a('0x1e')](_0x469a51,{'showHidden':![],'depth':null}));this['emit'](util[_0x593a('0x30')](_0x593a('0x31'),_0x469a51['name']),_0x593a('0x32'),_0x469a51);}}}catch(_0x24c844){logger[_0x593a('0x1c')](_0x593a('0x33'),util['inspect'](_0x24c844,{'showHidden':![],'depth':null}));}};UserReport[_0x593a('0x23')][_0x593a('0x15')]=function(_0xadf8b7){try{if(this[_0x593a('0x24')](_0xadf8b7)){logger[_0x593a('0x27')]('[userReport][devicestatechange]\x20device:%s\x20state:%s',_0xadf8b7[_0x593a('0x34')],_0xadf8b7[_0x593a('0x2a')]);logger[_0x593a('0x2b')](_0x593a('0x35'),util['inspect'](_0xadf8b7,{'showHidden':![],'depth':null}));if(this[_0x593a('0xe')][_0xadf8b7[_0x593a('0x34')]]){if(!this[_0x593a('0xe')][_0xadf8b7['device']][_0x593a('0x36')]||_0xadf8b7['state'][_0x593a('0x37')]()==_0x593a('0x38')){this[_0x593a('0xe')][_0xadf8b7[_0x593a('0x34')]]['local']=![];if(this['agents'][_0xadf8b7[_0x593a('0x34')]][_0x593a('0x2a')]!==_0xadf8b7['state'][_0x593a('0x37')]()){this['agents'][_0xadf8b7[_0x593a('0x34')]][_0x593a('0x39')]=_['toNumber'](moment()[_0x593a('0x30')]('x'));}this[_0x593a('0xe')][_0xadf8b7['device']][_0x593a('0x2a')]=_0xadf8b7[_0x593a('0x2a')][_0x593a('0x37')]();this['agents'][_0xadf8b7[_0x593a('0x34')]]['updateStatusRealtime'](_0xadf8b7);}}else if(this[_0x593a('0xf')][_0xadf8b7[_0x593a('0x34')]]){if(this[_0x593a('0xf')][_0xadf8b7[_0x593a('0x34')]][_0x593a('0x2a')]!==_0xadf8b7['state'][_0x593a('0x37')]()){this['telephones'][_0xadf8b7[_0x593a('0x34')]]['stateTime']=_[_0x593a('0x3a')](moment()[_0x593a('0x30')]('x'));}this[_0x593a('0xf')][_0xadf8b7[_0x593a('0x34')]][_0x593a('0x2a')]=_0xadf8b7[_0x593a('0x2a')][_0x593a('0x37')]();logger[_0x593a('0x2b')](_0x593a('0x3b'),util['inspect'](this[_0x593a('0xf')][_0xadf8b7['device']],{'showHidden':![],'depth':null}));this[_0x593a('0x26')](util[_0x593a('0x30')](_0x593a('0x3c'),this['telephones'][_0xadf8b7['device']][_0x593a('0x3d')]),_0x593a('0x3e'),this['telephones'][_0xadf8b7['device']]);}else if(this[_0x593a('0xd')][_0xadf8b7['device']]){if(this['trunks'][_0xadf8b7[_0x593a('0x34')]][_0x593a('0x2a')]!==_0xadf8b7[_0x593a('0x2a')][_0x593a('0x37')]()){this[_0x593a('0xd')][_0xadf8b7[_0x593a('0x34')]][_0x593a('0x39')]=_[_0x593a('0x3a')](moment()[_0x593a('0x30')]('x'));}this[_0x593a('0xd')][_0xadf8b7[_0x593a('0x34')]][_0x593a('0x2a')]=_0xadf8b7[_0x593a('0x2a')][_0x593a('0x37')]();logger['debug']('[userReport][devicestatechange]\x20sending\x20trunk:save\x20event:',util[_0x593a('0x1e')](this['trunks'][_0xadf8b7[_0x593a('0x34')]],{'showHidden':![],'depth':null}));this[_0x593a('0x26')](util[_0x593a('0x30')](_0x593a('0x31'),this[_0x593a('0xd')][_0xadf8b7[_0x593a('0x34')]]['name']),_0x593a('0x32'),this[_0x593a('0xd')][_0xadf8b7['device']]);}else if(_['startsWith'](_0xadf8b7[_0x593a('0x34')],'Local')){var _0x2e0c19=_0xadf8b7['device'];var _0x1541e0=_0x2e0c19[_0x593a('0x3f')](_0x2e0c19['indexOf']('/')+0x1,_0x2e0c19[_0x593a('0x40')]('@'));var _0x2144ae=_[_0x593a('0x41')](this[_0x593a('0xe')],function(_0x2eb3c2){return _0x2eb3c2['mobile']==_0x1541e0||_0x2eb3c2['phone']==_0x1541e0||_0x2eb3c2[_0x593a('0x42')]==_0x1541e0;});if(_0x2144ae){if(_0x2144ae[_0x593a('0x2a')]!==_0xadf8b7[_0x593a('0x2a')][_0x593a('0x37')]()){_0x2144ae['stateTime']=_[_0x593a('0x3a')](moment()[_0x593a('0x30')]('x'));}_0x2144ae['state']=_0xadf8b7[_0x593a('0x2a')][_0x593a('0x37')]();_0x2144ae[_0x593a('0x36')]=!![];_0x2144ae[_0x593a('0x43')](_0xadf8b7);}}}}catch(_0x4ef0fe){logger['error']('[userReport][devicestatechange]',util[_0x593a('0x1e')](_0x4ef0fe,{'showHidden':![],'depth':null}));}};UserReport[_0x593a('0x23')]['syncPeerStatus']=function(_0x1d9662){try{if(this[_0x593a('0x24')](_0x1d9662)&&this[_0x593a('0x24')](_0x1d9662[_0x593a('0x16')])){logger[_0x593a('0x27')](_0x593a('0x44'),_0x1d9662[_0x593a('0x45')],_0x1d9662[_0x593a('0x46')],_0x1d9662[_0x593a('0x16')]);logger['debug']('[userReport][peerstatus]',util[_0x593a('0x1e')](_0x1d9662,{'showHidden':![],'depth':null}));if(this[_0x593a('0xe')][_0x1d9662[_0x593a('0x45')]]){if(!this[_0x593a('0xe')][_0x1d9662[_0x593a('0x45')]][_0x593a('0x36')]||_0x1d9662[_0x593a('0x16')][_0x593a('0x37')]()==_0x593a('0x47')){this[_0x593a('0xe')][_0x1d9662[_0x593a('0x45')]][_0x593a('0x36')]=![];this[_0x593a('0xe')][_0x1d9662[_0x593a('0x45')]]['status']=_0x1d9662[_0x593a('0x16')][_0x593a('0x37')]();this['agents'][_0x1d9662[_0x593a('0x45')]][_0x593a('0x46')]=_0x1d9662['address'];this['agents'][_0x1d9662['peer']][_0x593a('0x43')](_0x1d9662);}}else if(this[_0x593a('0xf')][_0x1d9662[_0x593a('0x45')]]){this['telephones'][_0x1d9662['peer']][_0x593a('0x48')]=_0x1d9662[_0x593a('0x16')]['toLowerCase']();this[_0x593a('0xf')][_0x1d9662[_0x593a('0x45')]][_0x593a('0x46')]=_0x1d9662[_0x593a('0x46')];logger['debug'](_0x593a('0x49'),util['inspect'](this[_0x593a('0xf')][_0x1d9662[_0x593a('0x45')]],{'showHidden':![],'depth':null}));this[_0x593a('0x26')](util[_0x593a('0x30')](_0x593a('0x3c'),this['telephones'][_0x1d9662[_0x593a('0x45')]][_0x593a('0x3d')]),_0x593a('0x3e'),this[_0x593a('0xf')][_0x1d9662['peer']]);}else if(this[_0x593a('0xd')][_0x1d9662[_0x593a('0x45')]]){this[_0x593a('0xd')][_0x1d9662['peer']][_0x593a('0x48')]=_0x1d9662[_0x593a('0x16')][_0x593a('0x37')]();this['trunks'][_0x1d9662[_0x593a('0x45')]][_0x593a('0x46')]=_0x1d9662['address'];logger[_0x593a('0x2b')]('[userReport][peerstatus]\x20sending\x20trunk:save\x20event:',util[_0x593a('0x1e')](this[_0x593a('0xd')][_0x1d9662[_0x593a('0x45')]],{'showHidden':![],'depth':null}));this[_0x593a('0x26')](util[_0x593a('0x30')](_0x593a('0x31'),this[_0x593a('0xd')][_0x1d9662['peer']][_0x593a('0x3d')]),_0x593a('0x32'),this[_0x593a('0xd')][_0x1d9662[_0x593a('0x45')]]);}}}catch(_0x42e437){logger[_0x593a('0x1c')]('[userReport][peerstatus]',util[_0x593a('0x1e')](_0x42e437,{'showHidden':![],'depth':null}));}};module[_0x593a('0x4a')]=UserReport;
\ No newline at end of file
index 558958a..cab644f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x614b=['bridgepvtcallid','memberdynamic','memberinterface','memberlastcall','memberpenalty','memberrealtime','isNil','[%s][voiceAgentReport][hangup]\x20destuniqueid:%s','values','[%s][voiceAgentReport][hangup]','syncAttendedTransfer','transfereeuniqueid','origtransfereruniqueid','diff','seconds','secondtransfereruniqueid','[%s][voiceAgentReport][attendedtransfer]','[%s][voiceAgentReport][blindtransfer]\x20event:','transfereruniqueid','[%s][voiceAgentReport][blindtransfer]','[%s][voiceAgentReport][musiconholdstart]\x20event:','channel','substring','onhold','[%s][voiceAgentReport][musiconholdstart]','lastIndexOf','[%s][voiceAgentReport][musiconholdstop]\x20interface:%s','[%s][voiceAgentReport][musiconholdstop]','exports','lodash','moment','ioredis','../../../config/environment','../../../config/logger','ami','../ami','redis','defaults','localhost','socket.io-emitter','channels','voiceQueues','agents','agentcalled','syncAgentCalled','bind','agentconnect','syncAgentConnect','agentringnoanswer','syncAgentRingNoAnswer','queuecallerabandon','agentcomplete','syncAgentComplete','varset','syncVarSet','hangup','syncHangup','musiconholdstart','syncMusicOnHoldStop','syncBlindTransfer','prototype','emit','isNotNull','isUndefined','info','[%s][voiceAgentReport][agentcalled]\x20agent:%s\x20destuniqueid:%s\x20lastevent:called','destuniqueid','debug','uniqueid','inspect','YYYY-MM-DD\x20HH:mm:ss','called','queue','mandatoryDisposition','type','inbound','variables','voice','omit','event','privilege','[%s][voiceAgentReport][agentcalled]\x20sending\x20agentcalled\x20event:','custom:agentcalled','[%s][voiceAgentReport][agentcalled]\x20sending\x20user:called\x20event:','format','membername','error','[%s][voiceAgentReport][agentcalled]','hasOwnProperty','[%s][voiceAgentReport][agentconnect]\x20agent:%s\x20destuniqueid:%s\x20lastevent:connect','agentconnectAt','connectedlinename','connectedlinenum','destchannelstate','destchannelstatedesc','holdtime','voiceChannels','routealias','interface','pick','destconnectedlinenum','[%s][voiceAgentReport][agentconnect]\x20sending\x20agentconnect\x20event:','custom:agentconnect','[%s][voiceAgentReport][agentcalled]\x20sending\x20user:agentconnect\x20event:','user:%s','[%s][voiceAgentReport][agentconnect]\x20agent:%s\x20destuniqueid:%s\x20lastevent:answered_elsewhere','agentringnoanswerAt','answeredelsewheredestinationuniqueid','answeredelsewheremembername','answered_elsewhere','reason','[%s][voiceAgentReport][agentconnect]\x20sending\x20agentansweredelsewhere\x20event:','custom:agentansweredelsewhere','[%s][voiceAgentReport][agentconnect]','[%s][voiceAgentReport][agentringnoanswer]\x20event:','[%s][voiceAgentReport][agentringnoanswer]\x20agent:%s\x20destuniqueid:%s\x20lastevent:rejected','lastevent','rejected','[%s][voiceAgentReport][agentringnoanswer]\x20sending\x20agentringnoanswer\x20event:','custom:agentringnoanswer','[%s][voiceAgentReport][agentringnoanswer]','[%s][voiceAgentReport][queuecallerabandon]\x20event:','[%s][voiceAgentReport][queuecallerabandon]\x20agent:%s\x20destuniqueid:%s\x20lastevent:abandoned','abandoned','[%s][voiceAgentReport][queuecallerabandon]\x20sending\x20agentqueuecallerabandon\x20event:','[%s][voiceAgentReport][queuecallerabandon]','agentcompleteAt','complete','transfer','agent','talktime','acw','acwtime','acwTimeout','[%s][voiceAgentReport][agentcomplete]\x20sending\x20agentcomplete\x20event:','[%s][voiceAgentReport][agentcomplete]\x20sending\x20user:agentcomplete\x20event:','[%s][voiceAgentReport][varset]\x20event:','addVariable','keys','variable','value','[%s][voiceAgentReport][varset]\x20destuniqueid:%s\x20variable:%s\x20value:%s','rtpaudioqosbridged','rtpaudioqosjitterbridged','rtpaudioqosloss','rtpaudioqoslossbridged','rtpaudioqosrttbridged','sipcallid','sipuri','bridgepeer'];(function(_0x23655d,_0x13a326){var _0x192aea=function(_0x27ca11){while(--_0x27ca11){_0x23655d['push'](_0x23655d['shift']());}};_0x192aea(++_0x13a326);}(_0x614b,0xb3));var _0xb614=function(_0x15a3a4,_0x524046){_0x15a3a4=_0x15a3a4-0x0;var _0x248605=_0x614b[_0x15a3a4];return _0x248605;};'use strict';var _=require(_0xb614('0x0'));var moment=require(_0xb614('0x1'));var util=require('util');var Redis=require(_0xb614('0x2'));var config=require(_0xb614('0x3'));var logger=require(_0xb614('0x4'))(_0xb614('0x5'));var ami=require(_0xb614('0x6'));config[_0xb614('0x7')]=_[_0xb614('0x8')](config[_0xb614('0x7')],{'host':_0xb614('0x9'),'port':0x18eb});var io=require(_0xb614('0xa'))(new Redis(config[_0xb614('0x7')]));function VoiceAgentReport(_0xe2c67a){this[_0xb614('0xb')]={};this['voiceChannels']=_0xe2c67a[_0xb614('0xb')];this[_0xb614('0xc')]=_0xe2c67a[_0xb614('0xc')];this[_0xb614('0xd')]=_0xe2c67a[_0xb614('0xd')];this['variables']={};ami['on'](_0xb614('0xe'),this[_0xb614('0xf')][_0xb614('0x10')](this));ami['on'](_0xb614('0x11'),this[_0xb614('0x12')]['bind'](this));ami['on'](_0xb614('0x13'),this[_0xb614('0x14')][_0xb614('0x10')](this));ami['on'](_0xb614('0x15'),this['syncQueueCallerAbandon']['bind'](this));ami['on'](_0xb614('0x16'),this[_0xb614('0x17')][_0xb614('0x10')](this));ami['on'](_0xb614('0x18'),this[_0xb614('0x19')][_0xb614('0x10')](this));ami['on'](_0xb614('0x1a'),this[_0xb614('0x1b')]['bind'](this));ami['on'](_0xb614('0x1c'),this['syncMusicOnHoldStart'][_0xb614('0x10')](this));ami['on']('musiconholdstop',this[_0xb614('0x1d')][_0xb614('0x10')](this));ami['on']('attendedtransfer',this['syncAttendedTransfer'][_0xb614('0x10')](this));ami['on']('blindtransfer',this[_0xb614('0x1e')][_0xb614('0x10')](this));}VoiceAgentReport[_0xb614('0x1f')][_0xb614('0x20')]=function(_0x2d392c,_0x31ab11,_0x2c5922){io['to'](_0x2d392c)[_0xb614('0x20')](_0x31ab11,_0x2c5922);};VoiceAgentReport[_0xb614('0x1f')][_0xb614('0x21')]=function(_0x1b3ab0){return _0x1b3ab0!==null&&!_[_0xb614('0x22')](_0x1b3ab0);};VoiceAgentReport[_0xb614('0x1f')][_0xb614('0xf')]=function(_0x381273){try{if(this[_0xb614('0x21')](_0x381273)){logger[_0xb614('0x23')](_0xb614('0x24'),_0x381273['uniqueid'],_0x381273['membername'],_0x381273[_0xb614('0x25')]);logger[_0xb614('0x26')]('[%s][voiceAgentReport][agentcalled]\x20event:',_0x381273[_0xb614('0x27')],util[_0xb614('0x28')](_0x381273,{'showHidden':![],'depth':null}));if(_[_0xb614('0x22')](this['channels'][_0x381273['uniqueid']])){this['channels'][_0x381273['uniqueid']]={};}if(_['isUndefined'](this[_0xb614('0xb')][_0x381273[_0xb614('0x27')]][_0x381273[_0xb614('0x25')]])){this[_0xb614('0xb')][_0x381273[_0xb614('0x27')]][_0x381273[_0xb614('0x25')]]={'agentcalledAt':moment()['format'](_0xb614('0x29')),'lastevent':_0xb614('0x2a'),'mandatoryDisposition':this[_0xb614('0xc')][_0x381273['queue']]?this[_0xb614('0xc')][_0x381273[_0xb614('0x2b')]][_0xb614('0x2c')]||![]:![],'type':this[_0xb614('0xc')][_0x381273['queue']]?this[_0xb614('0xc')][_0x381273[_0xb614('0x2b')]][_0xb614('0x2d')]||_0xb614('0x2e'):'inbound','variables':this[_0xb614('0x2f')][_0x381273[_0xb614('0x27')]],'motionChannel':_0xb614('0x30')};}_['merge'](this['channels'][_0x381273['uniqueid']][_0x381273[_0xb614('0x25')]],_[_0xb614('0x31')](_0x381273,[_0xb614('0x32'),_0xb614('0x33')]));logger[_0xb614('0x26')](_0xb614('0x34'),_0x381273[_0xb614('0x27')],util[_0xb614('0x28')](this[_0xb614('0xb')][_0x381273[_0xb614('0x27')]][_0x381273[_0xb614('0x25')]],{'showHidden':![],'depth':null}));ami[_0xb614('0x20')](_0xb614('0x35'),this['channels'][_0x381273['uniqueid']][_0x381273[_0xb614('0x25')]]);logger[_0xb614('0x26')](_0xb614('0x36'),_0x381273['uniqueid'],util[_0xb614('0x28')](this['channels'][_0x381273[_0xb614('0x27')]][_0x381273[_0xb614('0x25')]],{'showHidden':![],'depth':null}));this[_0xb614('0x20')](util[_0xb614('0x37')]('user:%s',_0x381273[_0xb614('0x38')]),'user:called',this['channels'][_0x381273[_0xb614('0x27')]][_0x381273[_0xb614('0x25')]]);}}catch(_0x54558b){logger[_0xb614('0x39')](_0xb614('0x3a'),_0x381273[_0xb614('0x27')],util[_0xb614('0x28')](_0x54558b,{'showHidden':![],'depth':null}));}};VoiceAgentReport[_0xb614('0x1f')][_0xb614('0x12')]=function(_0x26dacf){try{if(this[_0xb614('0x21')](_0x26dacf)){if(this[_0xb614('0xb')][_0x26dacf[_0xb614('0x27')]]){logger[_0xb614('0x26')]('[%s][voiceAgentReport][agentconnect]\x20event:',_0x26dacf[_0xb614('0x27')],util['inspect'](_0x26dacf,{'showHidden':![],'depth':null}));for(var _0x2404dd in this[_0xb614('0xb')][_0x26dacf[_0xb614('0x27')]]){if(this[_0xb614('0xb')][_0x26dacf[_0xb614('0x27')]][_0xb614('0x3b')](_0x2404dd)){if(_0x26dacf[_0xb614('0x25')]===_0x2404dd){logger[_0xb614('0x23')](_0xb614('0x3c'),_0x26dacf['uniqueid'],_0x26dacf['membername'],_0x26dacf['destuniqueid']);this[_0xb614('0xb')][_0x26dacf['uniqueid']][_0x2404dd][_0xb614('0x3d')]=moment()['format']('YYYY-MM-DD\x20HH:mm:ss');this['channels'][_0x26dacf[_0xb614('0x27')]][_0x2404dd]['connectedlinename']=_0x26dacf[_0xb614('0x3e')];this[_0xb614('0xb')][_0x26dacf[_0xb614('0x27')]][_0x2404dd][_0xb614('0x3f')]=_0x26dacf['connectedlinenum'];this[_0xb614('0xb')][_0x26dacf['uniqueid']][_0x2404dd][_0xb614('0x40')]=_0x26dacf['destchannelstate'];this[_0xb614('0xb')][_0x26dacf['uniqueid']][_0x2404dd][_0xb614('0x41')]=_0x26dacf[_0xb614('0x41')];this[_0xb614('0xb')][_0x26dacf[_0xb614('0x27')]][_0x2404dd][_0xb614('0x42')]=_0x26dacf[_0xb614('0x42')];this[_0xb614('0xb')][_0x26dacf[_0xb614('0x27')]][_0x2404dd]['lastevent']='connect';if(this[_0xb614('0x43')][this[_0xb614('0xb')][_0x26dacf[_0xb614('0x27')]][_0x2404dd][_0xb614('0x27')]]){var _0x806c04=this[_0xb614('0x43')][this[_0xb614('0xb')][_0x26dacf[_0xb614('0x27')]][_0x2404dd][_0xb614('0x27')]][_0xb614('0x44')];this[_0xb614('0xb')][_0x26dacf[_0xb614('0x27')]][_0x2404dd]['routealias']=_0x806c04;_0x26dacf[_0xb614('0x44')]=_0x806c04;}_['merge'](this[_0xb614('0xd')][_0x26dacf[_0xb614('0x45')]],_[_0xb614('0x46')](_0x26dacf,['queue',_0xb614('0x47'),_0xb614('0x44')]));logger[_0xb614('0x26')](_0xb614('0x48'),_0x26dacf[_0xb614('0x27')],util['inspect'](this[_0xb614('0xb')][_0x26dacf[_0xb614('0x27')]][_0x26dacf[_0xb614('0x25')]],{'showHidden':![],'depth':null}));ami[_0xb614('0x20')](_0xb614('0x49'),this[_0xb614('0xb')][_0x26dacf['uniqueid']][_0x26dacf[_0xb614('0x25')]]);logger['debug'](_0xb614('0x4a'),_0x26dacf['uniqueid'],util[_0xb614('0x28')](this[_0xb614('0xb')][_0x26dacf[_0xb614('0x27')]][_0x26dacf[_0xb614('0x25')]],{'showHidden':![],'depth':null}));this[_0xb614('0x20')](util[_0xb614('0x37')](_0xb614('0x4b'),_0x26dacf['membername']),'user:agentconnect',this[_0xb614('0xb')][_0x26dacf[_0xb614('0x27')]][_0x26dacf[_0xb614('0x25')]]);}else if(!this['channels'][_0x26dacf[_0xb614('0x27')]][_0x2404dd][_0xb614('0x13')]&&!this[_0xb614('0xb')][_0x26dacf[_0xb614('0x27')]][_0x2404dd]['agentcomplete']){logger[_0xb614('0x23')](_0xb614('0x4c'),_0x26dacf[_0xb614('0x27')],this[_0xb614('0xb')][_0x26dacf['uniqueid']][_0x2404dd][_0xb614('0x38')],_0x2404dd);this[_0xb614('0xb')][_0x26dacf[_0xb614('0x27')]][_0x2404dd]['agentringnoanswer']=!![];this[_0xb614('0xb')][_0x26dacf[_0xb614('0x27')]][_0x2404dd][_0xb614('0x4d')]=moment()[_0xb614('0x37')]('YYYY-MM-DD\x20HH:mm:ss');this['channels'][_0x26dacf['uniqueid']][_0x2404dd][_0xb614('0x4e')]=_0x26dacf[_0xb614('0x25')];this[_0xb614('0xb')][_0x26dacf[_0xb614('0x27')]][_0x2404dd][_0xb614('0x4f')]=_0x26dacf['membername'];this[_0xb614('0xb')][_0x26dacf[_0xb614('0x27')]][_0x2404dd]['lastevent']=_0xb614('0x50');this[_0xb614('0xb')][_0x26dacf[_0xb614('0x27')]][_0x2404dd][_0xb614('0x51')]='answered_elsewhere';logger[_0xb614('0x26')](_0xb614('0x52'),_0x26dacf[_0xb614('0x27')],util['inspect'](this[_0xb614('0xb')][_0x26dacf[_0xb614('0x27')]][_0x2404dd],{'showHidden':![],'depth':null}));ami[_0xb614('0x20')](_0xb614('0x53'),this[_0xb614('0xb')][_0x26dacf[_0xb614('0x27')]][_0x2404dd]);}}}}}}catch(_0xc834d7){logger['error'](_0xb614('0x54'),_0x26dacf[_0xb614('0x27')],util['inspect'](_0xc834d7,{'showHidden':![],'depth':null}));}};VoiceAgentReport['prototype'][_0xb614('0x14')]=function(_0x538e4d){try{if(this['isNotNull'](_0x538e4d)){logger[_0xb614('0x26')](_0xb614('0x55'),_0x538e4d[_0xb614('0x27')],util[_0xb614('0x28')](_0x538e4d,{'showHidden':![],'depth':null}));if(this[_0xb614('0xb')][_0x538e4d[_0xb614('0x27')]]&&this['channels'][_0x538e4d[_0xb614('0x27')]][_0x538e4d[_0xb614('0x25')]]){logger[_0xb614('0x23')](_0xb614('0x56'),_0x538e4d[_0xb614('0x27')],_0x538e4d[_0xb614('0x38')],_0x538e4d['destuniqueid']);this['channels'][_0x538e4d['uniqueid']][_0x538e4d[_0xb614('0x25')]][_0xb614('0x13')]=!![];this[_0xb614('0xb')][_0x538e4d[_0xb614('0x27')]][_0x538e4d[_0xb614('0x25')]][_0xb614('0x4d')]=moment()[_0xb614('0x37')](_0xb614('0x29'));this['channels'][_0x538e4d[_0xb614('0x27')]][_0x538e4d[_0xb614('0x25')]][_0xb614('0x57')]=_0xb614('0x58');this[_0xb614('0xb')][_0x538e4d[_0xb614('0x27')]][_0x538e4d[_0xb614('0x25')]][_0xb614('0x51')]=_0xb614('0x58');logger[_0xb614('0x26')](_0xb614('0x59'),_0x538e4d[_0xb614('0x27')],util[_0xb614('0x28')](this['channels'][_0x538e4d['uniqueid']][_0x538e4d['destuniqueid']],{'showHidden':![],'depth':null}));ami[_0xb614('0x20')](_0xb614('0x5a'),this[_0xb614('0xb')][_0x538e4d['uniqueid']][_0x538e4d['destuniqueid']]);}}}catch(_0x56c2a9){logger[_0xb614('0x39')](_0xb614('0x5b'),_0x538e4d[_0xb614('0x27')],util[_0xb614('0x28')](_0x56c2a9,{'showHidden':![],'depth':null}));}};VoiceAgentReport[_0xb614('0x1f')]['syncQueueCallerAbandon']=function(_0x3a3c59){try{if(this[_0xb614('0x21')](_0x3a3c59)){logger[_0xb614('0x26')](_0xb614('0x5c'),_0x3a3c59[_0xb614('0x27')],util['inspect'](_0x3a3c59,{'showHidden':![],'depth':null}));if(this[_0xb614('0xb')][_0x3a3c59['uniqueid']]){for(var _0x471c4a in this[_0xb614('0xb')][_0x3a3c59['uniqueid']]){if(this[_0xb614('0xb')][_0x3a3c59[_0xb614('0x27')]][_0xb614('0x3b')](_0x471c4a)&&!this[_0xb614('0xb')][_0x3a3c59[_0xb614('0x27')]][_0x471c4a][_0xb614('0x13')]&&!this[_0xb614('0xb')][_0x3a3c59[_0xb614('0x27')]][_0x471c4a]['agentcomplete']){logger[_0xb614('0x23')](_0xb614('0x5d'),_0x3a3c59[_0xb614('0x27')],this['channels'][_0x3a3c59[_0xb614('0x27')]][_0x471c4a]['membername'],_0x471c4a);this[_0xb614('0xb')][_0x3a3c59['uniqueid']][_0x471c4a][_0xb614('0x13')]=!![];this[_0xb614('0xb')][_0x3a3c59[_0xb614('0x27')]][_0x471c4a][_0xb614('0x4d')]=moment()[_0xb614('0x37')]('YYYY-MM-DD\x20HH:mm:ss');this['channels'][_0x3a3c59[_0xb614('0x27')]][_0x471c4a]['lastevent']=_0xb614('0x5e');this['channels'][_0x3a3c59[_0xb614('0x27')]][_0x471c4a]['reason']=_0xb614('0x5e');logger[_0xb614('0x26')](_0xb614('0x5f'),_0x3a3c59[_0xb614('0x27')],util[_0xb614('0x28')](this['channels'][_0x3a3c59[_0xb614('0x27')]][_0x471c4a],{'showHidden':![],'depth':null}));ami['emit']('custom:agentqueuecallerabandon',this[_0xb614('0xb')][_0x3a3c59[_0xb614('0x27')]][_0x471c4a]);}}}}}catch(_0x45b470){logger[_0xb614('0x39')](_0xb614('0x60'),_0x3a3c59[_0xb614('0x27')],util['inspect'](_0x45b470,{'showHidden':![],'depth':null}));}};VoiceAgentReport[_0xb614('0x1f')]['syncAgentComplete']=function(_0x7d30ec){try{if(this['isNotNull'](_0x7d30ec)){logger[_0xb614('0x26')]('[%s][voiceAgentReport][agentcomplete]\x20event:',_0x7d30ec[_0xb614('0x27')],util[_0xb614('0x28')](_0x7d30ec,{'showHidden':![],'depth':null}));if(this[_0xb614('0xb')][_0x7d30ec[_0xb614('0x27')]]){for(var _0x426896 in this['channels'][_0x7d30ec['uniqueid']]){if(this['channels'][_0x7d30ec[_0xb614('0x27')]]['hasOwnProperty'](_0x426896)){if(this[_0xb614('0xb')][_0x7d30ec[_0xb614('0x27')]][_0x426896][_0xb614('0x3d')]&&!this['channels'][_0x7d30ec[_0xb614('0x27')]][_0x426896][_0xb614('0x16')]){logger[_0xb614('0x23')]('[%s][voiceAgentReport][agentcomplete]\x20agent:%s\x20destuniqueid:%s\x20lastevent:complete',_0x7d30ec[_0xb614('0x27')],this[_0xb614('0xb')][_0x7d30ec[_0xb614('0x27')]][_0x426896][_0xb614('0x38')],_0x426896);this[_0xb614('0xb')][_0x7d30ec[_0xb614('0x27')]][_0x426896][_0xb614('0x16')]=!![];this['channels'][_0x7d30ec['uniqueid']][_0x426896][_0xb614('0x61')]=moment()[_0xb614('0x37')](_0xb614('0x29'));this[_0xb614('0xb')][_0x7d30ec[_0xb614('0x27')]][_0x426896][_0xb614('0x57')]=_0xb614('0x62');this[_0xb614('0xb')][_0x7d30ec[_0xb614('0x27')]][_0x426896][_0xb614('0x51')]=_0x7d30ec['reason']==_0xb614('0x63')?_0xb614('0x64'):_0x7d30ec[_0xb614('0x51')];this[_0xb614('0xb')][_0x7d30ec[_0xb614('0x27')]][_0x426896][_0xb614('0x65')]=_0x7d30ec['talktime'];if(this['voiceQueues'][_0x7d30ec[_0xb614('0x2b')]]&&this[_0xb614('0xc')][_0x7d30ec[_0xb614('0x2b')]][_0xb614('0x66')]){this[_0xb614('0xb')][_0x7d30ec[_0xb614('0x27')]][_0x426896][_0xb614('0x67')]=this[_0xb614('0xc')][_0x7d30ec[_0xb614('0x2b')]][_0xb614('0x68')];this[_0xb614('0xb')][_0x7d30ec['uniqueid']][_0x426896]['agentacw']=!![];}this[_0xb614('0xd')][_0x7d30ec[_0xb614('0x45')]]=_['omit'](this['agents'][_0x7d30ec['interface']],[_0xb614('0x2b'),_0xb614('0x47')]);logger['debug'](_0xb614('0x69'),_0x7d30ec['uniqueid'],util[_0xb614('0x28')](this[_0xb614('0xb')][_0x7d30ec[_0xb614('0x27')]][_0x426896],{'showHidden':![],'depth':null}));ami[_0xb614('0x20')]('custom:agentcomplete',this['channels'][_0x7d30ec[_0xb614('0x27')]][_0x426896]);logger[_0xb614('0x26')](_0xb614('0x6a'),_0x7d30ec[_0xb614('0x27')],util['inspect'](this['channels'][_0x7d30ec[_0xb614('0x27')]][_0x426896],{'showHidden':![],'depth':null}));this[_0xb614('0x20')](util['format'](_0xb614('0x4b'),_0x7d30ec[_0xb614('0x38')]),'user:agentcomplete',this['channels'][_0x7d30ec['uniqueid']][_0x426896]);}}}}}}catch(_0x334cff){logger[_0xb614('0x39')]('[%s][voiceAgentReport][agentcomplete]',_0x7d30ec[_0xb614('0x27')],util[_0xb614('0x28')](_0x334cff,{'showHidden':![],'depth':null}));}};VoiceAgentReport[_0xb614('0x1f')][_0xb614('0x19')]=function(_0x23ec37){try{if(this[_0xb614('0x21')](_0x23ec37)){logger[_0xb614('0x26')](_0xb614('0x6b'),_0x23ec37[_0xb614('0x27')],util[_0xb614('0x28')](_0x23ec37,{'showHidden':![],'depth':null}));this[_0xb614('0x6c')](_0x23ec37[_0xb614('0x27')],_[_0xb614('0x6d')](_0x23ec37[_0xb614('0x6e')])[0x0],_0x23ec37[_0xb614('0x6f')]);if(this[_0xb614('0xb')][_0x23ec37['uniqueid']]){for(var _0x2385dd in this['channels'][_0x23ec37[_0xb614('0x27')]]){if(this['channels'][_0x23ec37[_0xb614('0x27')]][_0xb614('0x3b')](_0x2385dd)){logger[_0xb614('0x23')](_0xb614('0x70'),_0x23ec37[_0xb614('0x27')],_0x2385dd,_[_0xb614('0x6d')](_0x23ec37[_0xb614('0x6e')])[0x0],_0x23ec37[_0xb614('0x6f')]);if(_[_0xb614('0x22')](this['channels'][_0x23ec37[_0xb614('0x27')]][_0x2385dd][_0xb614('0x2f')])){this['channels'][_0x23ec37[_0xb614('0x27')]][_0x2385dd][_0xb614('0x2f')]={};}this['channels'][_0x23ec37[_0xb614('0x27')]][_0x2385dd][_0xb614('0x2f')]=this['variables'][_0x23ec37[_0xb614('0x27')]];}}}}}catch(_0x23838b){logger[_0xb614('0x39')]('[%s][voiceAgentReport][varset]',_0x23ec37[_0xb614('0x27')],util[_0xb614('0x28')](_0x23838b,{'showHidden':![],'depth':null}));}};VoiceAgentReport[_0xb614('0x1f')][_0xb614('0x6c')]=function(_0x52c920,_0x2180c6,_0x48ed7d){var _0xe8e4ba=['rtpaudioqos',_0xb614('0x71'),'rtpaudioqosjitter',_0xb614('0x72'),_0xb614('0x73'),_0xb614('0x74'),'rtpaudioqosrtt',_0xb614('0x75'),_0xb614('0x76'),_0xb614('0x77'),_0xb614('0x78'),_0xb614('0x79'),'membercalls',_0xb614('0x7a'),_0xb614('0x7b'),_0xb614('0x7c'),_0xb614('0x38'),_0xb614('0x7d'),_0xb614('0x7e')];if(!_[_0xb614('0x7f')](_0x2180c6)&&!_['includes'](_0xe8e4ba,_0x2180c6)){if(_[_0xb614('0x22')](this[_0xb614('0x2f')][_0x52c920])){this[_0xb614('0x2f')][_0x52c920]={};}this[_0xb614('0x2f')][_0x52c920][_0x2180c6]=_0x48ed7d;}};VoiceAgentReport['prototype']['syncHangup']=function(_0x38f7ea){try{if(this[_0xb614('0x21')](_0x38f7ea)){logger['debug']('[%s][voiceAgentReport][hangup]\x20event:',_0x38f7ea[_0xb614('0x27')],util[_0xb614('0x28')](_0x38f7ea,{'showHidden':![],'depth':null}));if(this[_0xb614('0xb')][_0x38f7ea[_0xb614('0x27')]]){for(var _0x2577f0 in this[_0xb614('0xb')][_0x38f7ea['uniqueid']]){if(this[_0xb614('0xb')][_0x38f7ea[_0xb614('0x27')]][_0xb614('0x3b')](_0x2577f0)){if(this[_0xb614('0xb')][_0x38f7ea[_0xb614('0x27')]][_0x2577f0][_0xb614('0x51')]==_0xb614('0x63')&&this[_0xb614('0xb')][_0x38f7ea['uniqueid']][_0x2577f0][_0xb614('0x16')]){logger['info'](_0xb614('0x80'),_0x38f7ea['uniqueid'],_0x2577f0);this[_0xb614('0xb')][_0x38f7ea[_0xb614('0x27')]][_0x2577f0][_0xb614('0x61')]=moment()['format'](_0xb614('0x29'));}}}logger['debug']('[%s][voiceAgentReport][hangup]\x20sending\x20voiceAgentReport\x20event:',_0x38f7ea[_0xb614('0x27')],util['inspect'](_['values'](this[_0xb614('0xb')][_0x38f7ea['uniqueid']]),{'showHidden':![],'depth':null}));ami[_0xb614('0x20')]('custom:voiceAgentReport',_[_0xb614('0x81')](this[_0xb614('0xb')][_0x38f7ea[_0xb614('0x27')]]));delete this[_0xb614('0xb')][_0x38f7ea['uniqueid']];}if(this[_0xb614('0x2f')][_0x38f7ea[_0xb614('0x27')]]){delete this['variables'][_0x38f7ea[_0xb614('0x27')]];}}}catch(_0x1dc0eb){logger[_0xb614('0x39')](_0xb614('0x82'),_0x38f7ea[_0xb614('0x27')],util[_0xb614('0x28')](_0x1dc0eb,{'showHidden':![],'depth':null}));}};VoiceAgentReport[_0xb614('0x1f')][_0xb614('0x83')]=function(_0x55825a){try{if(this['isNotNull'](_0x55825a)){logger['debug']('[%s][voiceAgentReport][attendedtransfer]\x20event:',_0x55825a[_0xb614('0x27')],util[_0xb614('0x28')](_0x55825a,{'showHidden':![],'depth':null}));if(this[_0xb614('0xb')][_0x55825a[_0xb614('0x84')]]){for(var _0x2a2012 in this[_0xb614('0xb')][_0x55825a[_0xb614('0x84')]]){if(this['channels'][_0x55825a[_0xb614('0x84')]][_0xb614('0x3b')](_0x2a2012)){if(_0x55825a[_0xb614('0x85')]===_0x2a2012){logger[_0xb614('0x23')]('[%s][voiceAgentReport][attendedtransfer]\x20agent:%s\x20destuniqueid:%s\x20lastevent:complete',_0x55825a[_0xb614('0x27')],this['channels'][_0x55825a[_0xb614('0x84')]][_0x2a2012][_0xb614('0x38')],_0x2a2012);var _0x2fa260=moment();this[_0xb614('0xb')][_0x55825a['transfereeuniqueid']][_0x2a2012][_0xb614('0x16')]=!![];this[_0xb614('0xb')][_0x55825a[_0xb614('0x84')]][_0x2a2012]['agentcompleteAt']=moment()['format']('YYYY-MM-DD\x20HH:mm:ss');this['channels'][_0x55825a['transfereeuniqueid']][_0x2a2012][_0xb614('0x57')]=_0xb614('0x62');this[_0xb614('0xb')][_0x55825a[_0xb614('0x84')]][_0x2a2012][_0xb614('0x51')]='transfer';this['channels'][_0x55825a[_0xb614('0x84')]][_0x2a2012][_0xb614('0x65')]=_0x2fa260[_0xb614('0x86')](this[_0xb614('0xb')][_0x55825a[_0xb614('0x84')]][_0x2a2012][_0xb614('0x3d')],_0xb614('0x87'));}}}}if(this[_0xb614('0xb')][_0x55825a[_0xb614('0x88')]]){var _0xf13a84=this[_0xb614('0xb')][_0x55825a[_0xb614('0x88')]];this[_0xb614('0xb')][_0x55825a[_0xb614('0x88')]]=this[_0xb614('0xb')][_0x55825a[_0xb614('0x84')]];this['channels'][_0x55825a[_0xb614('0x84')]]=_0xf13a84;}}}catch(_0x54776f){logger[_0xb614('0x39')](_0xb614('0x89'),_0x55825a[_0xb614('0x27')],util[_0xb614('0x28')](_0x54776f,{'showHidden':![],'depth':null}));}};VoiceAgentReport[_0xb614('0x1f')][_0xb614('0x1e')]=function(_0x1be96b){try{if(this[_0xb614('0x21')](_0x1be96b)){logger['debug'](_0xb614('0x8a'),_0x1be96b[_0xb614('0x27')],util[_0xb614('0x28')](_0x1be96b,{'showHidden':![],'depth':null}));if(this[_0xb614('0xb')][_0x1be96b[_0xb614('0x84')]]){for(var _0x2eb521 in this[_0xb614('0xb')][_0x1be96b[_0xb614('0x84')]]){if(this[_0xb614('0xb')][_0x1be96b[_0xb614('0x84')]][_0xb614('0x3b')](_0x2eb521)){if(_0x1be96b[_0xb614('0x8b')]===_0x2eb521){logger[_0xb614('0x23')]('[%s][voiceAgentReport][blindtransfer]\x20agent:%s\x20destuniqueid:%s\x20lastevent:complete',_0x1be96b[_0xb614('0x27')],this['channels'][_0x1be96b['transfereeuniqueid']][_0x2eb521][_0xb614('0x38')],_0x2eb521);var _0x4c26f8=moment();this[_0xb614('0xb')][_0x1be96b['transfereeuniqueid']][_0x2eb521][_0xb614('0x16')]=!![];this[_0xb614('0xb')][_0x1be96b['transfereeuniqueid']][_0x2eb521][_0xb614('0x61')]=_0x4c26f8;this[_0xb614('0xb')][_0x1be96b[_0xb614('0x84')]][_0x2eb521][_0xb614('0x57')]=_0xb614('0x62');this[_0xb614('0xb')][_0x1be96b[_0xb614('0x84')]][_0x2eb521]['reason']=_0xb614('0x63');this[_0xb614('0xb')][_0x1be96b[_0xb614('0x84')]][_0x2eb521][_0xb614('0x65')]=_0x4c26f8[_0xb614('0x86')](this[_0xb614('0xb')][_0x1be96b[_0xb614('0x84')]][_0x2eb521]['agentconnectAt'],_0xb614('0x87'));}}}}}}catch(_0x57ac32){logger['error'](_0xb614('0x8c'),_0x1be96b[_0xb614('0x27')],util[_0xb614('0x28')](_0x57ac32,{'showHidden':![],'depth':null}));}};VoiceAgentReport['prototype']['syncMusicOnHoldStart']=function(_0x104759){var _0x32480a='';try{if(this[_0xb614('0x21')](_0x104759)){logger[_0xb614('0x26')](_0xb614('0x8d'),_0x104759['uniqueid'],util[_0xb614('0x28')](_0x104759,{'showHidden':![],'depth':null}));if(_0x104759[_0xb614('0x8e')]){_0x32480a=_0x104759[_0xb614('0x8e')][_0xb614('0x8f')](0x0,_0x104759[_0xb614('0x8e')]['lastIndexOf']('-'));if(this['agents'][_0x32480a]){logger[_0xb614('0x23')]('[%s][voiceAgentReport][musiconholdstart]\x20interface:%s',_0x104759[_0xb614('0x27')],_0x32480a);this[_0xb614('0xd')][_0x32480a][_0xb614('0x90')]=!![];}}}}catch(_0x5d6030){logger[_0xb614('0x39')](_0xb614('0x91'),_0x104759[_0xb614('0x27')],util[_0xb614('0x28')](_0x5d6030,{'showHidden':![],'depth':null}));}};VoiceAgentReport[_0xb614('0x1f')][_0xb614('0x1d')]=function(_0x431940){var _0x303e73='';try{if(this[_0xb614('0x21')](_0x431940)){logger['debug']('[%s][voiceAgentReport][musiconholdstop]\x20event:',_0x431940[_0xb614('0x27')],util['inspect'](_0x431940,{'showHidden':![],'depth':null}));if(_0x431940[_0xb614('0x8e')]){_0x303e73=_0x431940['channel'][_0xb614('0x8f')](0x0,_0x431940['channel'][_0xb614('0x92')]('-'));if(this['agents'][_0x303e73]){logger[_0xb614('0x23')](_0xb614('0x93'),_0x431940[_0xb614('0x27')],_0x303e73);this[_0xb614('0xd')][_0x303e73][_0xb614('0x90')]=![];}}}}catch(_0x206e69){logger[_0xb614('0x39')](_0xb614('0x94'),_0x431940[_0xb614('0x27')],util[_0xb614('0x28')](_0x206e69,{'showHidden':![],'depth':null}));}};module[_0xb614('0x95')]=VoiceAgentReport;
\ No newline at end of file
+var _0xa9e0=['redis','defaults','localhost','channels','voiceQueues','agents','variables','agentcalled','syncAgentCalled','bind','agentconnect','queuecallerabandon','syncQueueCallerAbandon','agentcomplete','syncAgentComplete','varset','syncVarSet','hangup','syncHangup','syncMusicOnHoldStart','musiconholdstop','attendedtransfer','syncBlindTransfer','prototype','emit','isNotNull','isUndefined','info','membername','destuniqueid','debug','[%s][voiceAgentReport][agentcalled]\x20event:','inspect','uniqueid','YYYY-MM-DD\x20HH:mm:ss','queue','mandatoryDisposition','type','inbound','merge','omit','event','privilege','[%s][voiceAgentReport][agentcalled]\x20sending\x20agentcalled\x20event:','custom:agentcalled','[%s][voiceAgentReport][agentcalled]\x20sending\x20user:called\x20event:','format','[%s][voiceAgentReport][agentcalled]','[%s][voiceAgentReport][agentconnect]\x20event:','hasOwnProperty','agentconnectAt','connectedlinename','connectedlinenum','destchannelstate','destchannelstatedesc','holdtime','lastevent','voiceChannels','routealias','interface','pick','destconnectedlinenum','custom:agentconnect','[%s][voiceAgentReport][agentcalled]\x20sending\x20user:agentconnect\x20event:','user:%s','user:agentconnect','[%s][voiceAgentReport][agentconnect]\x20agent:%s\x20destuniqueid:%s\x20lastevent:answered_elsewhere','agentringnoanswerAt','answered_elsewhere','[%s][voiceAgentReport][agentconnect]','syncAgentRingNoAnswer','[%s][voiceAgentReport][agentringnoanswer]\x20agent:%s\x20destuniqueid:%s\x20lastevent:rejected','rejected','[%s][voiceAgentReport][agentringnoanswer]\x20sending\x20agentringnoanswer\x20event:','custom:agentringnoanswer','error','[%s][voiceAgentReport][agentringnoanswer]','[%s][voiceAgentReport][queuecallerabandon]\x20event:','agentringnoanswer','[%s][voiceAgentReport][queuecallerabandon]\x20agent:%s\x20destuniqueid:%s\x20lastevent:abandoned','abandoned','reason','[%s][voiceAgentReport][queuecallerabandon]','[%s][voiceAgentReport][agentcomplete]\x20agent:%s\x20destuniqueid:%s\x20lastevent:complete','agentcompleteAt','complete','transfer','agent','talktime','acw','acwtime','agentacw','[%s][voiceAgentReport][agentcomplete]\x20sending\x20agentcomplete\x20event:','[%s][voiceAgentReport][agentcomplete]\x20sending\x20user:agentcomplete\x20event:','user:agentcomplete','[%s][voiceAgentReport][varset]\x20event:','addVariable','keys','variable','value','[%s][voiceAgentReport][varset]\x20destuniqueid:%s\x20variable:%s\x20value:%s','[%s][voiceAgentReport][varset]','rtpaudioqos','rtpaudioqosbridged','rtpaudioqosjitter','rtpaudioqosjitterbridged','rtpaudioqoslossbridged','rtpaudioqosrttbridged','sipcallid','bridgepeer','bridgepvtcallid','membercalls','memberlastcall','memberpenalty','memberrealtime','isNil','includes','[%s][voiceAgentReport][hangup]\x20event:','[%s][voiceAgentReport][hangup]\x20sending\x20voiceAgentReport\x20event:','values','custom:voiceAgentReport','[%s][voiceAgentReport][hangup]','syncAttendedTransfer','[%s][voiceAgentReport][attendedtransfer]\x20event:','transfereeuniqueid','origtransfereruniqueid','[%s][voiceAgentReport][attendedtransfer]\x20agent:%s\x20destuniqueid:%s\x20lastevent:complete','diff','seconds','secondtransfereruniqueid','[%s][voiceAgentReport][attendedtransfer]','[%s][voiceAgentReport][blindtransfer]\x20event:','transfereruniqueid','[%s][voiceAgentReport][blindtransfer]\x20agent:%s\x20destuniqueid:%s\x20lastevent:complete','[%s][voiceAgentReport][blindtransfer]','channel','substring','lastIndexOf','[%s][voiceAgentReport][musiconholdstart]\x20interface:%s','onhold','[%s][voiceAgentReport][musiconholdstart]','[%s][voiceAgentReport][musiconholdstop]\x20event:','[%s][voiceAgentReport][musiconholdstop]','lodash','moment','util','../../../config/logger','../ami'];(function(_0x1a70c4,_0x43c5a0){var _0x6bce17=function(_0x44aa10){while(--_0x44aa10){_0x1a70c4['push'](_0x1a70c4['shift']());}};_0x6bce17(++_0x43c5a0);}(_0xa9e0,0x123));var _0x0a9e=function(_0xae7c2f,_0xf31e04){_0xae7c2f=_0xae7c2f-0x0;var _0x5d7001=_0xa9e0[_0xae7c2f];return _0x5d7001;};'use strict';var _=require(_0x0a9e('0x0'));var moment=require(_0x0a9e('0x1'));var util=require(_0x0a9e('0x2'));var Redis=require('ioredis');var config=require('../../../config/environment');var logger=require(_0x0a9e('0x3'))('ami');var ami=require(_0x0a9e('0x4'));config[_0x0a9e('0x5')]=_[_0x0a9e('0x6')](config[_0x0a9e('0x5')],{'host':_0x0a9e('0x7'),'port':0x18eb});var io=require('socket.io-emitter')(new Redis(config[_0x0a9e('0x5')]));function VoiceAgentReport(_0x441e3a){this[_0x0a9e('0x8')]={};this['voiceChannels']=_0x441e3a['channels'];this[_0x0a9e('0x9')]=_0x441e3a['voiceQueues'];this['agents']=_0x441e3a[_0x0a9e('0xa')];this[_0x0a9e('0xb')]={};ami['on'](_0x0a9e('0xc'),this[_0x0a9e('0xd')][_0x0a9e('0xe')](this));ami['on'](_0x0a9e('0xf'),this['syncAgentConnect']['bind'](this));ami['on']('agentringnoanswer',this['syncAgentRingNoAnswer'][_0x0a9e('0xe')](this));ami['on'](_0x0a9e('0x10'),this[_0x0a9e('0x11')][_0x0a9e('0xe')](this));ami['on'](_0x0a9e('0x12'),this[_0x0a9e('0x13')]['bind'](this));ami['on'](_0x0a9e('0x14'),this[_0x0a9e('0x15')][_0x0a9e('0xe')](this));ami['on'](_0x0a9e('0x16'),this[_0x0a9e('0x17')][_0x0a9e('0xe')](this));ami['on']('musiconholdstart',this[_0x0a9e('0x18')]['bind'](this));ami['on'](_0x0a9e('0x19'),this['syncMusicOnHoldStop'][_0x0a9e('0xe')](this));ami['on'](_0x0a9e('0x1a'),this['syncAttendedTransfer'][_0x0a9e('0xe')](this));ami['on']('blindtransfer',this[_0x0a9e('0x1b')][_0x0a9e('0xe')](this));}VoiceAgentReport[_0x0a9e('0x1c')][_0x0a9e('0x1d')]=function(_0x31b1ca,_0x2eb11f,_0x530eb7){io['to'](_0x31b1ca)[_0x0a9e('0x1d')](_0x2eb11f,_0x530eb7);};VoiceAgentReport[_0x0a9e('0x1c')][_0x0a9e('0x1e')]=function(_0x1c696a){return _0x1c696a!==null&&!_[_0x0a9e('0x1f')](_0x1c696a);};VoiceAgentReport['prototype'][_0x0a9e('0xd')]=function(_0x155cce){try{if(this['isNotNull'](_0x155cce)){logger[_0x0a9e('0x20')]('[%s][voiceAgentReport][agentcalled]\x20agent:%s\x20destuniqueid:%s\x20lastevent:called',_0x155cce['uniqueid'],_0x155cce[_0x0a9e('0x21')],_0x155cce[_0x0a9e('0x22')]);logger[_0x0a9e('0x23')](_0x0a9e('0x24'),_0x155cce['uniqueid'],util[_0x0a9e('0x25')](_0x155cce,{'showHidden':![],'depth':null}));if(_[_0x0a9e('0x1f')](this[_0x0a9e('0x8')][_0x155cce[_0x0a9e('0x26')]])){this[_0x0a9e('0x8')][_0x155cce[_0x0a9e('0x26')]]={};}if(_[_0x0a9e('0x1f')](this['channels'][_0x155cce['uniqueid']][_0x155cce[_0x0a9e('0x22')]])){this[_0x0a9e('0x8')][_0x155cce[_0x0a9e('0x26')]][_0x155cce[_0x0a9e('0x22')]]={'agentcalledAt':moment()['format'](_0x0a9e('0x27')),'lastevent':'called','mandatoryDisposition':this[_0x0a9e('0x9')][_0x155cce['queue']]?this[_0x0a9e('0x9')][_0x155cce[_0x0a9e('0x28')]][_0x0a9e('0x29')]||![]:![],'type':this[_0x0a9e('0x9')][_0x155cce[_0x0a9e('0x28')]]?this[_0x0a9e('0x9')][_0x155cce[_0x0a9e('0x28')]][_0x0a9e('0x2a')]||'inbound':_0x0a9e('0x2b'),'variables':this[_0x0a9e('0xb')][_0x155cce[_0x0a9e('0x26')]]};}_[_0x0a9e('0x2c')](this['channels'][_0x155cce[_0x0a9e('0x26')]][_0x155cce[_0x0a9e('0x22')]],_[_0x0a9e('0x2d')](_0x155cce,[_0x0a9e('0x2e'),_0x0a9e('0x2f')]));logger[_0x0a9e('0x23')](_0x0a9e('0x30'),_0x155cce[_0x0a9e('0x26')],util[_0x0a9e('0x25')](this['channels'][_0x155cce[_0x0a9e('0x26')]][_0x155cce['destuniqueid']],{'showHidden':![],'depth':null}));ami[_0x0a9e('0x1d')](_0x0a9e('0x31'),this[_0x0a9e('0x8')][_0x155cce[_0x0a9e('0x26')]][_0x155cce[_0x0a9e('0x22')]]);logger['debug'](_0x0a9e('0x32'),_0x155cce[_0x0a9e('0x26')],util[_0x0a9e('0x25')](this[_0x0a9e('0x8')][_0x155cce[_0x0a9e('0x26')]][_0x155cce[_0x0a9e('0x22')]],{'showHidden':![],'depth':null}));this[_0x0a9e('0x1d')](util[_0x0a9e('0x33')]('user:%s',_0x155cce[_0x0a9e('0x21')]),'user:called',this[_0x0a9e('0x8')][_0x155cce[_0x0a9e('0x26')]][_0x155cce[_0x0a9e('0x22')]]);}}catch(_0x3f3d41){logger['error'](_0x0a9e('0x34'),_0x155cce[_0x0a9e('0x26')],util[_0x0a9e('0x25')](_0x3f3d41,{'showHidden':![],'depth':null}));}};VoiceAgentReport[_0x0a9e('0x1c')]['syncAgentConnect']=function(_0x54135e){try{if(this[_0x0a9e('0x1e')](_0x54135e)){if(this['channels'][_0x54135e[_0x0a9e('0x26')]]){logger[_0x0a9e('0x23')](_0x0a9e('0x35'),_0x54135e[_0x0a9e('0x26')],util['inspect'](_0x54135e,{'showHidden':![],'depth':null}));for(var _0x31916f in this[_0x0a9e('0x8')][_0x54135e[_0x0a9e('0x26')]]){if(this['channels'][_0x54135e[_0x0a9e('0x26')]][_0x0a9e('0x36')](_0x31916f)){if(_0x54135e[_0x0a9e('0x22')]===_0x31916f){logger['info']('[%s][voiceAgentReport][agentconnect]\x20agent:%s\x20destuniqueid:%s\x20lastevent:connect',_0x54135e[_0x0a9e('0x26')],_0x54135e[_0x0a9e('0x21')],_0x54135e['destuniqueid']);this[_0x0a9e('0x8')][_0x54135e[_0x0a9e('0x26')]][_0x31916f][_0x0a9e('0x37')]=moment()[_0x0a9e('0x33')]('YYYY-MM-DD\x20HH:mm:ss');this['channels'][_0x54135e[_0x0a9e('0x26')]][_0x31916f][_0x0a9e('0x38')]=_0x54135e['connectedlinename'];this[_0x0a9e('0x8')][_0x54135e[_0x0a9e('0x26')]][_0x31916f][_0x0a9e('0x39')]=_0x54135e['connectedlinenum'];this[_0x0a9e('0x8')][_0x54135e[_0x0a9e('0x26')]][_0x31916f][_0x0a9e('0x3a')]=_0x54135e[_0x0a9e('0x3a')];this[_0x0a9e('0x8')][_0x54135e[_0x0a9e('0x26')]][_0x31916f][_0x0a9e('0x3b')]=_0x54135e[_0x0a9e('0x3b')];this[_0x0a9e('0x8')][_0x54135e[_0x0a9e('0x26')]][_0x31916f][_0x0a9e('0x3c')]=_0x54135e[_0x0a9e('0x3c')];this[_0x0a9e('0x8')][_0x54135e[_0x0a9e('0x26')]][_0x31916f][_0x0a9e('0x3d')]='connect';if(this['voiceChannels'][this[_0x0a9e('0x8')][_0x54135e[_0x0a9e('0x26')]][_0x31916f][_0x0a9e('0x26')]]){var _0x315881=this[_0x0a9e('0x3e')][this[_0x0a9e('0x8')][_0x54135e[_0x0a9e('0x26')]][_0x31916f][_0x0a9e('0x26')]][_0x0a9e('0x3f')];this[_0x0a9e('0x8')][_0x54135e[_0x0a9e('0x26')]][_0x31916f][_0x0a9e('0x3f')]=_0x315881;_0x54135e['routealias']=_0x315881;}_[_0x0a9e('0x2c')](this[_0x0a9e('0xa')][_0x54135e[_0x0a9e('0x40')]],_[_0x0a9e('0x41')](_0x54135e,[_0x0a9e('0x28'),_0x0a9e('0x42'),_0x0a9e('0x3f')]));logger[_0x0a9e('0x23')]('[%s][voiceAgentReport][agentconnect]\x20sending\x20agentconnect\x20event:',_0x54135e[_0x0a9e('0x26')],util['inspect'](this[_0x0a9e('0x8')][_0x54135e[_0x0a9e('0x26')]][_0x54135e[_0x0a9e('0x22')]],{'showHidden':![],'depth':null}));ami['emit'](_0x0a9e('0x43'),this[_0x0a9e('0x8')][_0x54135e[_0x0a9e('0x26')]][_0x54135e[_0x0a9e('0x22')]]);logger[_0x0a9e('0x23')](_0x0a9e('0x44'),_0x54135e[_0x0a9e('0x26')],util['inspect'](this[_0x0a9e('0x8')][_0x54135e[_0x0a9e('0x26')]][_0x54135e[_0x0a9e('0x22')]],{'showHidden':![],'depth':null}));this[_0x0a9e('0x1d')](util[_0x0a9e('0x33')](_0x0a9e('0x45'),_0x54135e[_0x0a9e('0x21')]),_0x0a9e('0x46'),this[_0x0a9e('0x8')][_0x54135e['uniqueid']][_0x54135e[_0x0a9e('0x22')]]);}else if(!this[_0x0a9e('0x8')][_0x54135e['uniqueid']][_0x31916f]['agentringnoanswer']&&!this['channels'][_0x54135e[_0x0a9e('0x26')]][_0x31916f][_0x0a9e('0x12')]){logger[_0x0a9e('0x20')](_0x0a9e('0x47'),_0x54135e[_0x0a9e('0x26')],this[_0x0a9e('0x8')][_0x54135e[_0x0a9e('0x26')]][_0x31916f][_0x0a9e('0x21')],_0x31916f);this['channels'][_0x54135e['uniqueid']][_0x31916f]['agentringnoanswer']=!![];this[_0x0a9e('0x8')][_0x54135e[_0x0a9e('0x26')]][_0x31916f][_0x0a9e('0x48')]=moment()['format'](_0x0a9e('0x27'));this[_0x0a9e('0x8')][_0x54135e['uniqueid']][_0x31916f]['answeredelsewheredestinationuniqueid']=_0x54135e[_0x0a9e('0x22')];this['channels'][_0x54135e[_0x0a9e('0x26')]][_0x31916f]['answeredelsewheremembername']=_0x54135e[_0x0a9e('0x21')];this[_0x0a9e('0x8')][_0x54135e[_0x0a9e('0x26')]][_0x31916f]['lastevent']=_0x0a9e('0x49');this[_0x0a9e('0x8')][_0x54135e['uniqueid']][_0x31916f]['reason']=_0x0a9e('0x49');logger[_0x0a9e('0x23')]('[%s][voiceAgentReport][agentconnect]\x20sending\x20agentansweredelsewhere\x20event:',_0x54135e[_0x0a9e('0x26')],util['inspect'](this[_0x0a9e('0x8')][_0x54135e['uniqueid']][_0x31916f],{'showHidden':![],'depth':null}));ami[_0x0a9e('0x1d')]('custom:agentansweredelsewhere',this['channels'][_0x54135e['uniqueid']][_0x31916f]);}}}}}}catch(_0x2da03c){logger['error'](_0x0a9e('0x4a'),_0x54135e[_0x0a9e('0x26')],util[_0x0a9e('0x25')](_0x2da03c,{'showHidden':![],'depth':null}));}};VoiceAgentReport[_0x0a9e('0x1c')][_0x0a9e('0x4b')]=function(_0x272738){try{if(this[_0x0a9e('0x1e')](_0x272738)){logger[_0x0a9e('0x23')]('[%s][voiceAgentReport][agentringnoanswer]\x20event:',_0x272738[_0x0a9e('0x26')],util[_0x0a9e('0x25')](_0x272738,{'showHidden':![],'depth':null}));if(this[_0x0a9e('0x8')][_0x272738[_0x0a9e('0x26')]]&&this[_0x0a9e('0x8')][_0x272738[_0x0a9e('0x26')]][_0x272738['destuniqueid']]){logger[_0x0a9e('0x20')](_0x0a9e('0x4c'),_0x272738['uniqueid'],_0x272738[_0x0a9e('0x21')],_0x272738['destuniqueid']);this[_0x0a9e('0x8')][_0x272738['uniqueid']][_0x272738['destuniqueid']]['agentringnoanswer']=!![];this[_0x0a9e('0x8')][_0x272738['uniqueid']][_0x272738[_0x0a9e('0x22')]][_0x0a9e('0x48')]=moment()[_0x0a9e('0x33')](_0x0a9e('0x27'));this[_0x0a9e('0x8')][_0x272738[_0x0a9e('0x26')]][_0x272738['destuniqueid']][_0x0a9e('0x3d')]='rejected';this[_0x0a9e('0x8')][_0x272738[_0x0a9e('0x26')]][_0x272738[_0x0a9e('0x22')]]['reason']=_0x0a9e('0x4d');logger[_0x0a9e('0x23')](_0x0a9e('0x4e'),_0x272738[_0x0a9e('0x26')],util['inspect'](this[_0x0a9e('0x8')][_0x272738[_0x0a9e('0x26')]][_0x272738['destuniqueid']],{'showHidden':![],'depth':null}));ami[_0x0a9e('0x1d')](_0x0a9e('0x4f'),this[_0x0a9e('0x8')][_0x272738[_0x0a9e('0x26')]][_0x272738[_0x0a9e('0x22')]]);}}}catch(_0x4d4a35){logger[_0x0a9e('0x50')](_0x0a9e('0x51'),_0x272738[_0x0a9e('0x26')],util['inspect'](_0x4d4a35,{'showHidden':![],'depth':null}));}};VoiceAgentReport[_0x0a9e('0x1c')]['syncQueueCallerAbandon']=function(_0x5211e3){try{if(this[_0x0a9e('0x1e')](_0x5211e3)){logger[_0x0a9e('0x23')](_0x0a9e('0x52'),_0x5211e3[_0x0a9e('0x26')],util[_0x0a9e('0x25')](_0x5211e3,{'showHidden':![],'depth':null}));if(this[_0x0a9e('0x8')][_0x5211e3[_0x0a9e('0x26')]]){for(var _0x54a37d in this[_0x0a9e('0x8')][_0x5211e3[_0x0a9e('0x26')]]){if(this[_0x0a9e('0x8')][_0x5211e3[_0x0a9e('0x26')]][_0x0a9e('0x36')](_0x54a37d)&&!this[_0x0a9e('0x8')][_0x5211e3[_0x0a9e('0x26')]][_0x54a37d][_0x0a9e('0x53')]&&!this[_0x0a9e('0x8')][_0x5211e3[_0x0a9e('0x26')]][_0x54a37d]['agentcomplete']){logger[_0x0a9e('0x20')](_0x0a9e('0x54'),_0x5211e3[_0x0a9e('0x26')],this['channels'][_0x5211e3[_0x0a9e('0x26')]][_0x54a37d][_0x0a9e('0x21')],_0x54a37d);this['channels'][_0x5211e3[_0x0a9e('0x26')]][_0x54a37d][_0x0a9e('0x53')]=!![];this[_0x0a9e('0x8')][_0x5211e3[_0x0a9e('0x26')]][_0x54a37d][_0x0a9e('0x48')]=moment()['format']('YYYY-MM-DD\x20HH:mm:ss');this['channels'][_0x5211e3[_0x0a9e('0x26')]][_0x54a37d][_0x0a9e('0x3d')]=_0x0a9e('0x55');this[_0x0a9e('0x8')][_0x5211e3[_0x0a9e('0x26')]][_0x54a37d][_0x0a9e('0x56')]=_0x0a9e('0x55');logger[_0x0a9e('0x23')]('[%s][voiceAgentReport][queuecallerabandon]\x20sending\x20agentqueuecallerabandon\x20event:',_0x5211e3[_0x0a9e('0x26')],util[_0x0a9e('0x25')](this[_0x0a9e('0x8')][_0x5211e3['uniqueid']][_0x54a37d],{'showHidden':![],'depth':null}));ami[_0x0a9e('0x1d')]('custom:agentqueuecallerabandon',this[_0x0a9e('0x8')][_0x5211e3[_0x0a9e('0x26')]][_0x54a37d]);}}}}}catch(_0x4c46c1){logger[_0x0a9e('0x50')](_0x0a9e('0x57'),_0x5211e3[_0x0a9e('0x26')],util[_0x0a9e('0x25')](_0x4c46c1,{'showHidden':![],'depth':null}));}};VoiceAgentReport['prototype'][_0x0a9e('0x13')]=function(_0x2e9552){try{if(this[_0x0a9e('0x1e')](_0x2e9552)){logger[_0x0a9e('0x23')]('[%s][voiceAgentReport][agentcomplete]\x20event:',_0x2e9552[_0x0a9e('0x26')],util[_0x0a9e('0x25')](_0x2e9552,{'showHidden':![],'depth':null}));if(this[_0x0a9e('0x8')][_0x2e9552[_0x0a9e('0x26')]]){for(var _0x4abc8f in this[_0x0a9e('0x8')][_0x2e9552[_0x0a9e('0x26')]]){if(this[_0x0a9e('0x8')][_0x2e9552[_0x0a9e('0x26')]][_0x0a9e('0x36')](_0x4abc8f)){if(this[_0x0a9e('0x8')][_0x2e9552[_0x0a9e('0x26')]][_0x4abc8f][_0x0a9e('0x37')]&&!this[_0x0a9e('0x8')][_0x2e9552[_0x0a9e('0x26')]][_0x4abc8f][_0x0a9e('0x12')]){logger[_0x0a9e('0x20')](_0x0a9e('0x58'),_0x2e9552[_0x0a9e('0x26')],this['channels'][_0x2e9552[_0x0a9e('0x26')]][_0x4abc8f][_0x0a9e('0x21')],_0x4abc8f);this[_0x0a9e('0x8')][_0x2e9552['uniqueid']][_0x4abc8f][_0x0a9e('0x12')]=!![];this[_0x0a9e('0x8')][_0x2e9552[_0x0a9e('0x26')]][_0x4abc8f][_0x0a9e('0x59')]=moment()['format']('YYYY-MM-DD\x20HH:mm:ss');this[_0x0a9e('0x8')][_0x2e9552[_0x0a9e('0x26')]][_0x4abc8f]['lastevent']=_0x0a9e('0x5a');this['channels'][_0x2e9552[_0x0a9e('0x26')]][_0x4abc8f][_0x0a9e('0x56')]=_0x2e9552['reason']==_0x0a9e('0x5b')?_0x0a9e('0x5c'):_0x2e9552[_0x0a9e('0x56')];this[_0x0a9e('0x8')][_0x2e9552[_0x0a9e('0x26')]][_0x4abc8f][_0x0a9e('0x5d')]=_0x2e9552[_0x0a9e('0x5d')];if(this['voiceQueues'][_0x2e9552[_0x0a9e('0x28')]]&&this[_0x0a9e('0x9')][_0x2e9552[_0x0a9e('0x28')]][_0x0a9e('0x5e')]){this['channels'][_0x2e9552[_0x0a9e('0x26')]][_0x4abc8f][_0x0a9e('0x5f')]=this['voiceQueues'][_0x2e9552[_0x0a9e('0x28')]]['acwTimeout'];this[_0x0a9e('0x8')][_0x2e9552[_0x0a9e('0x26')]][_0x4abc8f][_0x0a9e('0x60')]=!![];}this[_0x0a9e('0xa')][_0x2e9552['interface']]=_['omit'](this[_0x0a9e('0xa')][_0x2e9552[_0x0a9e('0x40')]],[_0x0a9e('0x28'),'destconnectedlinenum']);logger[_0x0a9e('0x23')](_0x0a9e('0x61'),_0x2e9552['uniqueid'],util['inspect'](this[_0x0a9e('0x8')][_0x2e9552['uniqueid']][_0x4abc8f],{'showHidden':![],'depth':null}));ami['emit']('custom:agentcomplete',this[_0x0a9e('0x8')][_0x2e9552[_0x0a9e('0x26')]][_0x4abc8f]);logger[_0x0a9e('0x23')](_0x0a9e('0x62'),_0x2e9552[_0x0a9e('0x26')],util[_0x0a9e('0x25')](this['channels'][_0x2e9552[_0x0a9e('0x26')]][_0x4abc8f],{'showHidden':![],'depth':null}));this['emit'](util[_0x0a9e('0x33')](_0x0a9e('0x45'),_0x2e9552[_0x0a9e('0x21')]),_0x0a9e('0x63'),this['channels'][_0x2e9552[_0x0a9e('0x26')]][_0x4abc8f]);}}}}}}catch(_0x32f761){logger[_0x0a9e('0x50')]('[%s][voiceAgentReport][agentcomplete]',_0x2e9552[_0x0a9e('0x26')],util[_0x0a9e('0x25')](_0x32f761,{'showHidden':![],'depth':null}));}};VoiceAgentReport[_0x0a9e('0x1c')][_0x0a9e('0x15')]=function(_0x255e49){try{if(this[_0x0a9e('0x1e')](_0x255e49)){logger[_0x0a9e('0x23')](_0x0a9e('0x64'),_0x255e49['uniqueid'],util[_0x0a9e('0x25')](_0x255e49,{'showHidden':![],'depth':null}));this[_0x0a9e('0x65')](_0x255e49['uniqueid'],_[_0x0a9e('0x66')](_0x255e49[_0x0a9e('0x67')])[0x0],_0x255e49[_0x0a9e('0x68')]);if(this['channels'][_0x255e49[_0x0a9e('0x26')]]){for(var _0x52ec10 in this[_0x0a9e('0x8')][_0x255e49[_0x0a9e('0x26')]]){if(this[_0x0a9e('0x8')][_0x255e49[_0x0a9e('0x26')]][_0x0a9e('0x36')](_0x52ec10)){logger[_0x0a9e('0x20')](_0x0a9e('0x69'),_0x255e49[_0x0a9e('0x26')],_0x52ec10,_['keys'](_0x255e49[_0x0a9e('0x67')])[0x0],_0x255e49[_0x0a9e('0x68')]);if(_[_0x0a9e('0x1f')](this[_0x0a9e('0x8')][_0x255e49[_0x0a9e('0x26')]][_0x52ec10][_0x0a9e('0xb')])){this[_0x0a9e('0x8')][_0x255e49[_0x0a9e('0x26')]][_0x52ec10][_0x0a9e('0xb')]={};}this[_0x0a9e('0x8')][_0x255e49[_0x0a9e('0x26')]][_0x52ec10][_0x0a9e('0xb')]=this[_0x0a9e('0xb')][_0x255e49['uniqueid']];}}}}}catch(_0xc81b64){logger[_0x0a9e('0x50')](_0x0a9e('0x6a'),_0x255e49[_0x0a9e('0x26')],util[_0x0a9e('0x25')](_0xc81b64,{'showHidden':![],'depth':null}));}};VoiceAgentReport['prototype'][_0x0a9e('0x65')]=function(_0x1756c7,_0x5ce99d,_0x23b447){var _0x5e725e=[_0x0a9e('0x6b'),_0x0a9e('0x6c'),_0x0a9e('0x6d'),_0x0a9e('0x6e'),'rtpaudioqosloss',_0x0a9e('0x6f'),'rtpaudioqosrtt',_0x0a9e('0x70'),_0x0a9e('0x71'),'sipuri',_0x0a9e('0x72'),_0x0a9e('0x73'),_0x0a9e('0x74'),'memberdynamic','memberinterface',_0x0a9e('0x75'),_0x0a9e('0x21'),_0x0a9e('0x76'),_0x0a9e('0x77')];if(!_[_0x0a9e('0x78')](_0x5ce99d)&&!_[_0x0a9e('0x79')](_0x5e725e,_0x5ce99d)){if(_[_0x0a9e('0x1f')](this[_0x0a9e('0xb')][_0x1756c7])){this[_0x0a9e('0xb')][_0x1756c7]={};}this['variables'][_0x1756c7][_0x5ce99d]=_0x23b447;}};VoiceAgentReport[_0x0a9e('0x1c')]['syncHangup']=function(_0x287324){try{if(this[_0x0a9e('0x1e')](_0x287324)){logger[_0x0a9e('0x23')](_0x0a9e('0x7a'),_0x287324[_0x0a9e('0x26')],util['inspect'](_0x287324,{'showHidden':![],'depth':null}));if(this[_0x0a9e('0x8')][_0x287324[_0x0a9e('0x26')]]){for(var _0x2791c5 in this[_0x0a9e('0x8')][_0x287324[_0x0a9e('0x26')]]){if(this['channels'][_0x287324['uniqueid']][_0x0a9e('0x36')](_0x2791c5)){if(this['channels'][_0x287324[_0x0a9e('0x26')]][_0x2791c5][_0x0a9e('0x56')]==_0x0a9e('0x5b')&&this[_0x0a9e('0x8')][_0x287324[_0x0a9e('0x26')]][_0x2791c5][_0x0a9e('0x12')]){logger['info']('[%s][voiceAgentReport][hangup]\x20destuniqueid:%s',_0x287324[_0x0a9e('0x26')],_0x2791c5);this['channels'][_0x287324[_0x0a9e('0x26')]][_0x2791c5]['agentcompleteAt']=moment()[_0x0a9e('0x33')]('YYYY-MM-DD\x20HH:mm:ss');}}}logger['debug'](_0x0a9e('0x7b'),_0x287324[_0x0a9e('0x26')],util['inspect'](_[_0x0a9e('0x7c')](this[_0x0a9e('0x8')][_0x287324[_0x0a9e('0x26')]]),{'showHidden':![],'depth':null}));ami[_0x0a9e('0x1d')](_0x0a9e('0x7d'),_['values'](this['channels'][_0x287324[_0x0a9e('0x26')]]));delete this[_0x0a9e('0x8')][_0x287324[_0x0a9e('0x26')]];}if(this[_0x0a9e('0xb')][_0x287324[_0x0a9e('0x26')]]){delete this['variables'][_0x287324[_0x0a9e('0x26')]];}}}catch(_0xadce3d){logger['error'](_0x0a9e('0x7e'),_0x287324[_0x0a9e('0x26')],util[_0x0a9e('0x25')](_0xadce3d,{'showHidden':![],'depth':null}));}};VoiceAgentReport[_0x0a9e('0x1c')][_0x0a9e('0x7f')]=function(_0x23b39e){try{if(this[_0x0a9e('0x1e')](_0x23b39e)){logger[_0x0a9e('0x23')](_0x0a9e('0x80'),_0x23b39e[_0x0a9e('0x26')],util['inspect'](_0x23b39e,{'showHidden':![],'depth':null}));if(this[_0x0a9e('0x8')][_0x23b39e[_0x0a9e('0x81')]]){for(var _0x2ada60 in this[_0x0a9e('0x8')][_0x23b39e[_0x0a9e('0x81')]]){if(this['channels'][_0x23b39e['transfereeuniqueid']][_0x0a9e('0x36')](_0x2ada60)){if(_0x23b39e[_0x0a9e('0x82')]===_0x2ada60){logger[_0x0a9e('0x20')](_0x0a9e('0x83'),_0x23b39e[_0x0a9e('0x26')],this['channels'][_0x23b39e[_0x0a9e('0x81')]][_0x2ada60][_0x0a9e('0x21')],_0x2ada60);var _0x3450ae=moment();this['channels'][_0x23b39e[_0x0a9e('0x81')]][_0x2ada60]['agentcomplete']=!![];this[_0x0a9e('0x8')][_0x23b39e['transfereeuniqueid']][_0x2ada60][_0x0a9e('0x59')]=moment()[_0x0a9e('0x33')](_0x0a9e('0x27'));this['channels'][_0x23b39e[_0x0a9e('0x81')]][_0x2ada60]['lastevent']=_0x0a9e('0x5a');this[_0x0a9e('0x8')][_0x23b39e[_0x0a9e('0x81')]][_0x2ada60][_0x0a9e('0x56')]=_0x0a9e('0x5b');this[_0x0a9e('0x8')][_0x23b39e[_0x0a9e('0x81')]][_0x2ada60][_0x0a9e('0x5d')]=_0x3450ae[_0x0a9e('0x84')](this[_0x0a9e('0x8')][_0x23b39e[_0x0a9e('0x81')]][_0x2ada60][_0x0a9e('0x37')],_0x0a9e('0x85'));}}}}if(this[_0x0a9e('0x8')][_0x23b39e[_0x0a9e('0x86')]]){var _0x248368=this['channels'][_0x23b39e['secondtransfereruniqueid']];this[_0x0a9e('0x8')][_0x23b39e['secondtransfereruniqueid']]=this[_0x0a9e('0x8')][_0x23b39e[_0x0a9e('0x81')]];this['channels'][_0x23b39e[_0x0a9e('0x81')]]=_0x248368;}}}catch(_0xe2b083){logger[_0x0a9e('0x50')](_0x0a9e('0x87'),_0x23b39e['uniqueid'],util[_0x0a9e('0x25')](_0xe2b083,{'showHidden':![],'depth':null}));}};VoiceAgentReport[_0x0a9e('0x1c')][_0x0a9e('0x1b')]=function(_0x34a791){try{if(this['isNotNull'](_0x34a791)){logger[_0x0a9e('0x23')](_0x0a9e('0x88'),_0x34a791[_0x0a9e('0x26')],util['inspect'](_0x34a791,{'showHidden':![],'depth':null}));if(this[_0x0a9e('0x8')][_0x34a791[_0x0a9e('0x81')]]){for(var _0x17b29d in this['channels'][_0x34a791[_0x0a9e('0x81')]]){if(this[_0x0a9e('0x8')][_0x34a791[_0x0a9e('0x81')]][_0x0a9e('0x36')](_0x17b29d)){if(_0x34a791[_0x0a9e('0x89')]===_0x17b29d){logger['info'](_0x0a9e('0x8a'),_0x34a791[_0x0a9e('0x26')],this['channels'][_0x34a791[_0x0a9e('0x81')]][_0x17b29d][_0x0a9e('0x21')],_0x17b29d);var _0x1f6f1c=moment();this['channels'][_0x34a791['transfereeuniqueid']][_0x17b29d]['agentcomplete']=!![];this[_0x0a9e('0x8')][_0x34a791[_0x0a9e('0x81')]][_0x17b29d]['agentcompleteAt']=_0x1f6f1c;this[_0x0a9e('0x8')][_0x34a791[_0x0a9e('0x81')]][_0x17b29d][_0x0a9e('0x3d')]='complete';this[_0x0a9e('0x8')][_0x34a791[_0x0a9e('0x81')]][_0x17b29d][_0x0a9e('0x56')]=_0x0a9e('0x5b');this[_0x0a9e('0x8')][_0x34a791[_0x0a9e('0x81')]][_0x17b29d][_0x0a9e('0x5d')]=_0x1f6f1c[_0x0a9e('0x84')](this[_0x0a9e('0x8')][_0x34a791['transfereeuniqueid']][_0x17b29d][_0x0a9e('0x37')],'seconds');}}}}}}catch(_0x138cf5){logger[_0x0a9e('0x50')](_0x0a9e('0x8b'),_0x34a791[_0x0a9e('0x26')],util[_0x0a9e('0x25')](_0x138cf5,{'showHidden':![],'depth':null}));}};VoiceAgentReport[_0x0a9e('0x1c')]['syncMusicOnHoldStart']=function(_0x1a0314){var _0x33da81='';try{if(this[_0x0a9e('0x1e')](_0x1a0314)){logger[_0x0a9e('0x23')]('[%s][voiceAgentReport][musiconholdstart]\x20event:',_0x1a0314[_0x0a9e('0x26')],util[_0x0a9e('0x25')](_0x1a0314,{'showHidden':![],'depth':null}));if(_0x1a0314[_0x0a9e('0x8c')]){_0x33da81=_0x1a0314[_0x0a9e('0x8c')][_0x0a9e('0x8d')](0x0,_0x1a0314[_0x0a9e('0x8c')][_0x0a9e('0x8e')]('-'));if(this[_0x0a9e('0xa')][_0x33da81]){logger[_0x0a9e('0x20')](_0x0a9e('0x8f'),_0x1a0314['uniqueid'],_0x33da81);this[_0x0a9e('0xa')][_0x33da81][_0x0a9e('0x90')]=!![];}}}}catch(_0x2ff265){logger[_0x0a9e('0x50')](_0x0a9e('0x91'),_0x1a0314[_0x0a9e('0x26')],util[_0x0a9e('0x25')](_0x2ff265,{'showHidden':![],'depth':null}));}};VoiceAgentReport[_0x0a9e('0x1c')]['syncMusicOnHoldStop']=function(_0x3b581c){var _0xd2391='';try{if(this[_0x0a9e('0x1e')](_0x3b581c)){logger['debug'](_0x0a9e('0x92'),_0x3b581c[_0x0a9e('0x26')],util[_0x0a9e('0x25')](_0x3b581c,{'showHidden':![],'depth':null}));if(_0x3b581c[_0x0a9e('0x8c')]){_0xd2391=_0x3b581c[_0x0a9e('0x8c')][_0x0a9e('0x8d')](0x0,_0x3b581c[_0x0a9e('0x8c')][_0x0a9e('0x8e')]('-'));if(this[_0x0a9e('0xa')][_0xd2391]){logger[_0x0a9e('0x20')]('[%s][voiceAgentReport][musiconholdstop]\x20interface:%s',_0x3b581c[_0x0a9e('0x26')],_0xd2391);this[_0x0a9e('0xa')][_0xd2391][_0x0a9e('0x90')]=![];}}}}catch(_0x3db98f){logger[_0x0a9e('0x50')](_0x0a9e('0x93'),_0x3b581c['uniqueid'],util[_0x0a9e('0x25')](_0x3db98f,{'showHidden':![],'depth':null}));}};module['exports']=VoiceAgentReport;
\ No newline at end of file
index 69868ed..dd7a58a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3797=['calleridpreview','xmcs-queue','[%s][voiceCallReport][varset]\x20variable:xmcs-queue\x20value:%s','sipcallid','[%s][voiceCallReport][varset]\x20variable:sipcallid\x20value:%s','sipcalluniqueid','parse','syncMixMonitorFilename','sipcalllinkedid','[%s][voiceCallReport][varset]','cause-txt','diff','answertime','billableseconds','omit','[%s][voiceCallReport][hangup]\x20sending\x20user:agentcomplete\x20event:','resolve','then','transferType','isEmpty','getSettings','stopRecordingOnTransfer','Action','StopMixMonitor','catch','finally','[%s][voiceCallReport][hangup]\x20sending\x20hangup\x20event:','custom:voiceCallReport','[%s][voiceCallReport][hangup]','[%s][voiceCallReport][attendedtransfer]\x20transfercalleridnum:%s\x20transferconnectedlinenum:%s','origtransferercalleridnum','transfereeuniqueid','transfercalleridnum','transferconnectedlinenum','transfertargetcalleridnum','secondtransfereruniqueid','transfertargetuniqueid','origtransfereruniqueid','origtransfererlinkedid','outbound','routeid','ATTENDED','[%s][voiceCallReport][attendedtransfer]','syncBlindTransfer','[%s][voiceCallReport][blindtransfer]\x20transfercalleridnum:%s\x20transferconnectedlinenum:%s','transfereecalleridnum','[%s][voiceCallReport][blindtransfer]\x20event:','extension','BLIND','BlindTransfer','transfererchannel','[%s][voiceCallReport][blindtransfer]','[%s][voiceCallReport][musiconholdstart]\x20event:','mohstarttime','[%s][voiceCallReport][musiconholdstart]','mohtime','milliseconds','[%s][voiceCallReport][musiconholdstop]\x20mohtime:%s','[%s][voiceCallReport][musiconholdstop]','exports','bluebird','lodash','moment','util','ioredis','../../../config/environment','../../../config/logger','ami','../model/channel','../rpc/setting','not_inuse','busy','invalid','unavailable','ringing','ringinuse','queue','agi','playback','voicemail','NO\x20ANSWER','FAILED','ANSWERED','redis','defaults','localhost','agents','blindTransfers','coreshowchannel','bind','newexten','syncNewExten','newchannel','syncNewChannel','syncNewState','varset','hangup','syncHangup','newcallerid','attendedtransfer','syncAttendedTransfer','syncMusicOnHoldStart','musiconholdstop','syncMusicOnHoldStop','info','[voiceCallReport][coreshowchannels]\x20started','actionCoreShowChannels','error','[voiceCallReport][coreshowchannels]','prototype','emit','syncNewCallerId','isNotNull','[%s][voiceCallReport][newcallerid]\x20calleridname:%s\x20calleridnum:%s','uniqueid','calleridname','debug','[%s][voiceCallReport][newcallerid]\x20event:','isUndefined','merge','channels','pick','keys','context','from-sip','channel','split','xcally-motion-preview','destconnectedlinenum','connectedlinenum','format','user:%s','name','inspect','linkedid','OutgoingSpoolFailed','[%s][voiceCallReport][newchannel]\x20context:%s\x20exten:%s','starttime','YYYY-MM-DD\x20HH:mm:ss','toNumber','channelstate','exten','[%s][voiceCallReport][newchannel]\x20sending\x20user:agentconnect\x20event:','accountcode','user:agentconnect','[%s][voiceCallReport][newchannel]','[%s][voiceCallReport][newexten]\x20event:','application','toLowerCase','applicationdata','appdata','startsWith','CDR(routeAlias)','[%s][voiceCallReport][newexten]\x20application:%s\x20appdata:%s','subtract','duration','seconds','disposition','includes','lastapplication','lastdata','set','match','[%s][voiceCallReport][newexten]','[%s][voiceCallReport][newstate]\x20linkedid:%s\x20calleridname:%s\x20calleridnum:%s','calleridnum','answered','connectedlinename','destinationchannel','UserId','membername','routealias','[%s][voiceCallReport][newstate]\x20sending\x20user:agentconnect\x20event:','[%s][voiceCallReport][newstate]','[%s][voiceCallReport][mixMonitorFilename]\x20monitorFilename:%s','endsWith','.wav49','.WAV','monitorFilename','find','monitors','isNil','push','rec','[%s][voiceCallReport][mixMonitorFilename]','syncVarSet','[%s][voiceCallReport][varset]\x20event:','variable','mixmonitor_filename','[%s][voiceCallReport][varset]\x20variable:mixmonitor_filename\x20value:%s','value','xmd-phone','[%s][voiceCallReport][varset]\x20variable:xmd-phone\x20value:%s','xmd-callerid','[%s][voiceCallReport][varset]\x20variable:xmd-callerid\x20value:%s','callerid','xmd-cdrtype','type','xmd-queue','[%s][voiceCallReport][varset]\x20variable:xmd-originatecalleridnum\x20value:%s','originatecalleridnum','[%s][voiceCallReport][varset]\x20variable:xmd-destination\x20value:%s','destination','xmd-callerid-preview'];(function(_0x4cc83e,_0x5e6c9c){var _0x46ba78=function(_0x766f82){while(--_0x766f82){_0x4cc83e['push'](_0x4cc83e['shift']());}};_0x46ba78(++_0x5e6c9c);}(_0x3797,0x1d4));var _0x7379=function(_0xfcddad,_0x58b6f6){_0xfcddad=_0xfcddad-0x0;var _0x3317d1=_0x3797[_0xfcddad];return _0x3317d1;};'use strict';var BPromise=require(_0x7379('0x0'));var _=require(_0x7379('0x1'));var moment=require(_0x7379('0x2'));var util=require(_0x7379('0x3'));var path=require('path');var Redis=require(_0x7379('0x4'));var config=require(_0x7379('0x5'));var logger=require(_0x7379('0x6'))(_0x7379('0x7'));var ami=require('../ami');var Channel=require(_0x7379('0x8'));var RpcSetting=require(_0x7379('0x9'));var statusDesc=['unknown',_0x7379('0xa'),'inuse',_0x7379('0xb'),_0x7379('0xc'),_0x7379('0xd'),_0x7379('0xe'),_0x7379('0xf'),'onhold'];var applications=['set',_0x7379('0x10'),_0x7379('0x11'),'dial',_0x7379('0x12'),_0x7379('0x13')];var dispositions=[_0x7379('0x14'),_0x7379('0x15'),_0x7379('0x15'),'NO\x20ANSWER',_0x7379('0x14'),'NO\x20ANSWER',_0x7379('0x16'),'BUSY',_0x7379('0x15'),_0x7379('0x15'),_0x7379('0x15')];var actions={};config[_0x7379('0x17')]=_[_0x7379('0x18')](config[_0x7379('0x17')],{'host':_0x7379('0x19'),'port':0x18eb});var io=require('socket.io-emitter')(new Redis(config[_0x7379('0x17')]));function VoiceCallReport(_0x400ba5){this['channels']=_0x400ba5['channels'];this['agents']=_0x400ba5[_0x7379('0x1a')];this[_0x7379('0x1b')]={};ami['on'](_0x7379('0x1c'),this['syncNewExten'][_0x7379('0x1d')](this));ami['on'](_0x7379('0x1e'),this[_0x7379('0x1f')]['bind'](this));ami['on'](_0x7379('0x20'),this[_0x7379('0x21')][_0x7379('0x1d')](this));ami['on']('newstate',this[_0x7379('0x22')][_0x7379('0x1d')](this));ami['on'](_0x7379('0x23'),this['syncVarSet'][_0x7379('0x1d')](this));ami['on'](_0x7379('0x24'),this[_0x7379('0x25')][_0x7379('0x1d')](this));ami['on'](_0x7379('0x26'),this['syncNewCallerId']['bind'](this));ami['on'](_0x7379('0x27'),this[_0x7379('0x28')][_0x7379('0x1d')](this));ami['on']('blindtransfer',this['syncBlindTransfer'][_0x7379('0x1d')](this));ami['on']('musiconholdstart',this[_0x7379('0x29')][_0x7379('0x1d')](this));ami['on'](_0x7379('0x2a'),this[_0x7379('0x2b')]['bind'](this));try{logger[_0x7379('0x2c')](_0x7379('0x2d'));ami[_0x7379('0x2e')]();}catch(_0x4a5943){logger[_0x7379('0x2f')](_0x7379('0x30'),util['inspect'](_0x4a5943,{'showHidden':![],'depth':null}));}}VoiceCallReport[_0x7379('0x31')]['isNotNull']=function(_0x5455ef){return _0x5455ef!==null&&!_['isUndefined'](_0x5455ef);};VoiceCallReport[_0x7379('0x31')][_0x7379('0x32')]=function(_0x55bf53,_0x463840,_0x5e4034){io['to'](_0x55bf53)[_0x7379('0x32')](_0x463840,_0x5e4034);};VoiceCallReport[_0x7379('0x31')][_0x7379('0x33')]=function(_0x18d02e){try{if(this[_0x7379('0x34')](_0x18d02e)){logger[_0x7379('0x2c')](_0x7379('0x35'),_0x18d02e[_0x7379('0x36')],_0x18d02e[_0x7379('0x37')],_0x18d02e['calleridnum']);logger[_0x7379('0x38')](_0x7379('0x39'),_0x18d02e[_0x7379('0x36')],util['inspect'](_0x18d02e,{'showHidden':![],'depth':null}));if(_0x18d02e[_0x7379('0x36')]===_0x18d02e['linkedid']){if(!_[_0x7379('0x3a')](this['channels'][_0x18d02e[_0x7379('0x36')]])){_[_0x7379('0x3b')](this[_0x7379('0x3c')][_0x18d02e[_0x7379('0x36')]],_[_0x7379('0x3d')](_0x18d02e,_[_0x7379('0x3e')](this[_0x7379('0x3c')][_0x18d02e[_0x7379('0x36')]])));}}if(_0x18d02e[_0x7379('0x3f')]===_0x7379('0x40')){if(this[_0x7379('0x1a')][_0x18d02e[_0x7379('0x41')][_0x7379('0x42')]('-')[0x0]]){if(_0x18d02e['exten']==_0x7379('0x43')){this[_0x7379('0x1a')][_0x18d02e[_0x7379('0x41')]['split']('-')[0x0]][_0x7379('0x44')]=_0x18d02e[_0x7379('0x45')];this['emit'](util[_0x7379('0x46')](_0x7379('0x47'),this[_0x7379('0x1a')][_0x18d02e[_0x7379('0x41')][_0x7379('0x42')]('-')[0x0]][_0x7379('0x48')]),'user:agentconnect',{'destaccountcode':this['agents'][_0x18d02e[_0x7379('0x41')][_0x7379('0x42')]('-')[0x0]]['accountcode'],'destconnectedlinenum':_0x18d02e['connectedlinenum']});}}}}}catch(_0x595ca1){logger['error']('[%s][voiceCallReport][newcallerid]',_0x18d02e[_0x7379('0x36')],util[_0x7379('0x49')](_0x595ca1,{'showHidden':![],'depth':null}));}};VoiceCallReport['prototype'][_0x7379('0x21')]=function(_0x550dd0){try{if(this['isNotNull'](_0x550dd0)){logger[_0x7379('0x38')]('[%s][voiceCallReport][newchannel]\x20event:',_0x550dd0['uniqueid'],util['inspect'](_0x550dd0,{'showHidden':![],'depth':null}));if(_0x550dd0[_0x7379('0x36')]===_0x550dd0[_0x7379('0x4a')]&&_0x550dd0[_0x7379('0x41')]!=_0x7379('0x4b')){if(_[_0x7379('0x3a')](this[_0x7379('0x3c')][_0x550dd0[_0x7379('0x36')]])){logger[_0x7379('0x2c')](_0x7379('0x4c'),_0x550dd0[_0x7379('0x36')],_0x550dd0['context'],_0x550dd0['exten']);this[_0x7379('0x3c')][_0x550dd0[_0x7379('0x36')]]=new Channel();this[_0x7379('0x3c')][_0x550dd0[_0x7379('0x36')]][_0x7379('0x4d')]=moment()['format'](_0x7379('0x4e'));this[_0x7379('0x3c')][_0x550dd0['uniqueid']]['disposition']=dispositions[_[_0x7379('0x4f')](_0x550dd0[_0x7379('0x50')])];_[_0x7379('0x3b')](this['channels'][_0x550dd0['uniqueid']],_['pick'](_0x550dd0,_[_0x7379('0x3e')](this['channels'][_0x550dd0[_0x7379('0x36')]])));if(_0x550dd0['context']===_0x7379('0x40')){if(this[_0x7379('0x1a')][_0x550dd0[_0x7379('0x41')][_0x7379('0x42')]('-')[0x0]]){if(_[_0x7379('0x3a')](this[_0x7379('0x1a')][_0x550dd0[_0x7379('0x41')][_0x7379('0x42')]('-')[0x0]][_0x7379('0x44')])){this[_0x7379('0x1a')][_0x550dd0['channel'][_0x7379('0x42')]('-')[0x0]][_0x7379('0x44')]=_0x550dd0[_0x7379('0x51')];logger[_0x7379('0x38')](_0x7379('0x52'),_0x550dd0[_0x7379('0x36')],util['inspect']({'destaccountcode':this['agents'][_0x550dd0[_0x7379('0x41')][_0x7379('0x42')]('-')[0x0]][_0x7379('0x53')],'destconnectedlinenum':_0x550dd0[_0x7379('0x51')]},{'showHidden':![],'depth':null}));this[_0x7379('0x32')](util[_0x7379('0x46')](_0x7379('0x47'),this[_0x7379('0x1a')][_0x550dd0[_0x7379('0x41')]['split']('-')[0x0]][_0x7379('0x48')]),_0x7379('0x54'),{'destaccountcode':this['agents'][_0x550dd0[_0x7379('0x41')][_0x7379('0x42')]('-')[0x0]]['accountcode'],'destconnectedlinenum':_0x550dd0[_0x7379('0x51')]});}}}}}}}catch(_0x496c2c){logger[_0x7379('0x2f')](_0x7379('0x55'),_0x550dd0['uniqueid'],util['inspect'](_0x496c2c,{'showHidden':![],'depth':null}));}};VoiceCallReport[_0x7379('0x31')]['syncNewExten']=function(_0x5f211c){try{if(this[_0x7379('0x34')](_0x5f211c)){logger[_0x7379('0x38')](_0x7379('0x56'),_0x5f211c[_0x7379('0x36')],util[_0x7379('0x49')](_0x5f211c,{'showHidden':![],'depth':null}));if(_0x5f211c[_0x7379('0x36')]===_0x5f211c[_0x7379('0x4a')]&&_0x5f211c['exten']!='h'&&_0x5f211c[_0x7379('0x41')]!=_0x7379('0x4b')){_0x5f211c[_0x7379('0x57')]=_0x5f211c[_0x7379('0x57')][_0x7379('0x58')]();_0x5f211c[_0x7379('0x59')]=_0x5f211c[_0x7379('0x5a')]&&_0x5f211c[_0x7379('0x5a')][_0x7379('0x5b')](_0x7379('0x5c'))?_0x5f211c[_0x7379('0x5a')]:(_0x5f211c[_0x7379('0x5a')]||_0x5f211c['applicationdata'])[_0x7379('0x58')]();logger[_0x7379('0x2c')](_0x7379('0x5d'),_0x5f211c[_0x7379('0x36')],_0x5f211c[_0x7379('0x57')],_0x5f211c[_0x7379('0x59')]);if(_[_0x7379('0x3a')](this[_0x7379('0x3c')][_0x5f211c[_0x7379('0x36')]])){this[_0x7379('0x3c')][_0x5f211c['uniqueid']]=new Channel();this[_0x7379('0x3c')][_0x5f211c[_0x7379('0x36')]]['starttime']=_0x5f211c['duration']?moment()[_0x7379('0x5e')](moment[_0x7379('0x5f')](_0x5f211c[_0x7379('0x5f')])[_0x7379('0x60')](),'seconds')[_0x7379('0x46')]('YYYY-MM-DD\x20HH:mm:ss'):moment()[_0x7379('0x46')](_0x7379('0x4e'));this[_0x7379('0x3c')][_0x5f211c[_0x7379('0x36')]][_0x7379('0x61')]=_0x7379('0x14');}_[_0x7379('0x3b')](this[_0x7379('0x3c')][_0x5f211c[_0x7379('0x36')]],_[_0x7379('0x3d')](_0x5f211c,_[_0x7379('0x3e')](this[_0x7379('0x3c')][_0x5f211c[_0x7379('0x36')]])));if(_[_0x7379('0x62')](applications,_0x5f211c['application'])){this[_0x7379('0x3c')][_0x5f211c[_0x7379('0x36')]][_0x7379('0x63')]=_0x5f211c[_0x7379('0x57')];this[_0x7379('0x3c')][_0x5f211c[_0x7379('0x36')]][_0x7379('0x64')]=_0x5f211c['applicationdata'];if(_0x5f211c[_0x7379('0x57')]===_0x7379('0x65')&&_[_0x7379('0x5b')](_0x5f211c[_0x7379('0x59')][_0x7379('0x58')](),'cdr(')){var _0x5a9127=_0x5f211c['applicationdata']['split']('=');var _0x1e01da=_0x5a9127[0x0]['toLowerCase']()[_0x7379('0x66')](/cdr\((.*)\)/);if(_0x1e01da){this[_0x7379('0x3c')][_0x5f211c[_0x7379('0x36')]][_0x1e01da[0x1]]=_0x5a9127[0x1];}}else if(_0x5f211c['application']===_0x7379('0x10')){this[_0x7379('0x3c')][_0x5f211c[_0x7379('0x36')]][_0x7379('0x10')]=_0x5f211c[_0x7379('0x59')][_0x7379('0x42')](',')[0x0];}}}}}catch(_0x3c160c){logger[_0x7379('0x2f')](_0x7379('0x67'),_0x5f211c[_0x7379('0x36')],util[_0x7379('0x49')](_0x3c160c,{'showHidden':![],'depth':null}));}};VoiceCallReport[_0x7379('0x31')][_0x7379('0x22')]=function(_0x5748ee){try{if(this['isNotNull'](_0x5748ee)){logger[_0x7379('0x2c')](_0x7379('0x68'),_0x5748ee['uniqueid'],_0x5748ee[_0x7379('0x4a')],_0x5748ee[_0x7379('0x37')],_0x5748ee[_0x7379('0x69')]);logger[_0x7379('0x38')]('[%s][voiceCallReport][newstate]\x20event:',_0x5748ee[_0x7379('0x36')],util[_0x7379('0x49')](_0x5748ee,{'showHidden':![],'depth':null}));if(_0x5748ee[_0x7379('0x36')]!==_0x5748ee[_0x7379('0x4a')]){if(this['channels'][_0x5748ee[_0x7379('0x4a')]]){if(_0x5748ee[_0x7379('0x50')]==='6'){if(!this[_0x7379('0x3c')][_0x5748ee[_0x7379('0x4a')]][_0x7379('0x6a')]){var _0x29f1d6=moment();this[_0x7379('0x3c')][_0x5748ee[_0x7379('0x4a')]]['answered']=!![];this[_0x7379('0x3c')][_0x5748ee['linkedid']]['answertime']=_0x29f1d6[_0x7379('0x46')](_0x7379('0x4e'));if(this[_0x7379('0x3c')][_0x5748ee[_0x7379('0x4a')]][_0x7379('0x4d')]){this[_0x7379('0x3c')][_0x5748ee[_0x7379('0x4a')]]['holdtime']=_0x29f1d6['diff'](this[_0x7379('0x3c')][_0x5748ee[_0x7379('0x4a')]][_0x7379('0x4d')],_0x7379('0x60'));}}this[_0x7379('0x3c')][_0x5748ee[_0x7379('0x4a')]][_0x7379('0x4a')]=_0x5748ee[_0x7379('0x36')];if(_0x5748ee[_0x7379('0x69')]!==_0x7379('0x43')){this[_0x7379('0x3c')][_0x5748ee[_0x7379('0x4a')]][_0x7379('0x45')]=_0x5748ee[_0x7379('0x69')];}this[_0x7379('0x3c')][_0x5748ee[_0x7379('0x4a')]][_0x7379('0x6b')]=_0x5748ee[_0x7379('0x37')];this[_0x7379('0x3c')][_0x5748ee[_0x7379('0x4a')]][_0x7379('0x6c')]=_0x5748ee[_0x7379('0x41')];this['channels'][_0x5748ee[_0x7379('0x4a')]][_0x7379('0x61')]=dispositions[_[_0x7379('0x4f')](_0x5748ee[_0x7379('0x50')])];if(this[_0x7379('0x1a')][_0x5748ee[_0x7379('0x41')][_0x7379('0x42')]('-')[0x0]]){this[_0x7379('0x3c')][_0x5748ee[_0x7379('0x4a')]][_0x7379('0x6d')]=this[_0x7379('0x1a')][_0x5748ee[_0x7379('0x41')]['split']('-')[0x0]]['id'];this[_0x7379('0x3c')][_0x5748ee[_0x7379('0x4a')]][_0x7379('0x6e')]=this[_0x7379('0x1a')][_0x5748ee['channel']['split']('-')[0x0]]['name'];}}}}else{if(this[_0x7379('0x3c')][_0x5748ee[_0x7379('0x36')]]){if(_0x5748ee[_0x7379('0x50')]==='6'){if(this['agents'][_0x5748ee['channel'][_0x7379('0x42')]('-')[0x0]]){this[_0x7379('0x3c')][_0x5748ee['uniqueid']][_0x7379('0x6d')]=this['agents'][_0x5748ee[_0x7379('0x41')]['split']('-')[0x0]]['id'];this[_0x7379('0x3c')][_0x5748ee[_0x7379('0x36')]]['membername']=this[_0x7379('0x1a')][_0x5748ee[_0x7379('0x41')][_0x7379('0x42')]('-')[0x0]][_0x7379('0x48')];}}}}if(_0x5748ee[_0x7379('0x50')]==='6'&&_0x5748ee[_0x7379('0x3f')]===_0x7379('0x40')){if(this[_0x7379('0x1a')][_0x5748ee[_0x7379('0x41')]['split']('-')[0x0]]){this[_0x7379('0x1a')][_0x5748ee[_0x7379('0x41')][_0x7379('0x42')]('-')[0x0]]['destconnectedlinenum']=_0x5748ee[_0x7379('0x51')];var _0x4c4843;if(this[_0x7379('0x3c')][_0x5748ee[_0x7379('0x36')]])_0x4c4843=this[_0x7379('0x3c')][_0x5748ee[_0x7379('0x36')]][_0x7379('0x6f')];else if(this[_0x7379('0x3c')][_0x5748ee[_0x7379('0x4a')]])_0x4c4843=this['channels'][_0x5748ee[_0x7379('0x4a')]]['routealias'];logger[_0x7379('0x38')](_0x7379('0x70'),_0x5748ee[_0x7379('0x36')],util['inspect']({'destaccountcode':this[_0x7379('0x1a')][_0x5748ee[_0x7379('0x41')]['split']('-')[0x0]]['accountcode'],'destconnectedlinenum':_0x5748ee[_0x7379('0x51')],'routealias':_0x4c4843},{'showHidden':![],'depth':null}));this[_0x7379('0x32')](util['format']('user:%s',this['agents'][_0x5748ee[_0x7379('0x41')][_0x7379('0x42')]('-')[0x0]][_0x7379('0x48')]),_0x7379('0x54'),{'destaccountcode':this[_0x7379('0x1a')][_0x5748ee['channel'][_0x7379('0x42')]('-')[0x0]][_0x7379('0x53')],'destconnectedlinenum':_0x5748ee[_0x7379('0x51')],'routealias':_0x4c4843});}}}}catch(_0x5fc1ec){logger[_0x7379('0x2f')](_0x7379('0x71'),_0x5748ee['uniqueid'],util[_0x7379('0x49')](_0x5fc1ec,{'showHidden':![],'depth':null}));}};VoiceCallReport[_0x7379('0x31')]['syncMixMonitorFilename']=function(_0x5cd1b4,_0x49926a){try{if(this[_0x7379('0x3c')][_0x5cd1b4]){logger['info'](_0x7379('0x72'),_0x5cd1b4,_0x49926a);this['channels'][_0x5cd1b4]['monitor']=!![];if(_[_0x7379('0x73')](_0x49926a,_0x7379('0x74'))){_0x49926a=_0x49926a['replace'](_0x7379('0x74'),_0x7379('0x75'));}this[_0x7379('0x3c')][_0x5cd1b4][_0x7379('0x76')]=_0x49926a;var _0x3a0f25=_[_0x7379('0x77')](this[_0x7379('0x3c')][_0x5cd1b4][_0x7379('0x78')],{'filename':_0x49926a});if(_[_0x7379('0x79')](_0x3a0f25)){this['channels'][_0x5cd1b4][_0x7379('0x78')][_0x7379('0x7a')]({'filename':_0x49926a,'createdAt':moment()[_0x7379('0x46')](_0x7379('0x4e')),'mixmonitorid':'','status':_0x7379('0x7b')});}}}catch(_0x12ac95){logger[_0x7379('0x2f')](_0x7379('0x7c'),_0x5cd1b4,util[_0x7379('0x49')](_0x12ac95,{'showHidden':![],'depth':null}));}};VoiceCallReport[_0x7379('0x31')][_0x7379('0x7d')]=function(_0xdfcb7a){try{if(this[_0x7379('0x34')](_0xdfcb7a)){logger[_0x7379('0x38')](_0x7379('0x7e'),_0xdfcb7a[_0x7379('0x36')],util[_0x7379('0x49')](_0xdfcb7a,{'showHidden':![],'depth':null}));if(this[_0x7379('0x3c')][_0xdfcb7a['uniqueid']]&&_0xdfcb7a[_0x7379('0x41')]!=_0x7379('0x4b')){if(this[_0x7379('0x34')](_0xdfcb7a['variable'])){if(this[_0x7379('0x34')](_0xdfcb7a[_0x7379('0x7f')][_0x7379('0x80')])){logger[_0x7379('0x2c')](_0x7379('0x81'),_0xdfcb7a[_0x7379('0x36')],_0xdfcb7a[_0x7379('0x82')]);this['syncMixMonitorFilename'](_0xdfcb7a['uniqueid'],_0xdfcb7a[_0x7379('0x82')]);}else if(this['isNotNull'](_0xdfcb7a['variable'][_0x7379('0x83')])){logger[_0x7379('0x2c')](_0x7379('0x84'),_0xdfcb7a[_0x7379('0x36')],_0xdfcb7a[_0x7379('0x82')]);this[_0x7379('0x3c')][_0xdfcb7a[_0x7379('0x36')]]['calleridnum']=_0xdfcb7a['value'];}else if(this[_0x7379('0x34')](_0xdfcb7a[_0x7379('0x7f')][_0x7379('0x85')])){logger['info'](_0x7379('0x86'),_0xdfcb7a['uniqueid'],_0xdfcb7a[_0x7379('0x82')]);this[_0x7379('0x3c')][_0xdfcb7a[_0x7379('0x36')]][_0x7379('0x87')]=_0xdfcb7a[_0x7379('0x82')];}else if(this[_0x7379('0x34')](_0xdfcb7a[_0x7379('0x7f')][_0x7379('0x88')])){logger[_0x7379('0x2c')]('[%s][voiceCallReport][varset]\x20variable:xmd-cdrtype\x20value:%s',_0xdfcb7a[_0x7379('0x36')],_0xdfcb7a[_0x7379('0x82')]);this[_0x7379('0x3c')][_0xdfcb7a[_0x7379('0x36')]][_0x7379('0x89')]=_0xdfcb7a[_0x7379('0x82')];}else if(this[_0x7379('0x34')](_0xdfcb7a[_0x7379('0x7f')][_0x7379('0x8a')])){logger[_0x7379('0x2c')]('[%s][voiceCallReport][varset]\x20variable:xmd-queue\x20value:%s',_0xdfcb7a['uniqueid'],_0xdfcb7a['value'][_0x7379('0x42')](',')[0x0]);this[_0x7379('0x3c')][_0xdfcb7a[_0x7379('0x36')]][_0x7379('0x10')]=_0xdfcb7a['value'][_0x7379('0x42')](',')[0x0];}else if(this[_0x7379('0x34')](_0xdfcb7a[_0x7379('0x7f')]['xmd-originatecalleridnum'])){logger[_0x7379('0x2c')](_0x7379('0x8b'),_0xdfcb7a[_0x7379('0x36')],_0xdfcb7a['value']);this[_0x7379('0x3c')][_0xdfcb7a[_0x7379('0x36')]][_0x7379('0x8c')]=_0xdfcb7a['value'];}else if(this['isNotNull'](_0xdfcb7a[_0x7379('0x7f')]['xmd-destination'])){logger['info'](_0x7379('0x8d'),_0xdfcb7a[_0x7379('0x36')],_0xdfcb7a[_0x7379('0x82')]);this[_0x7379('0x3c')][_0xdfcb7a[_0x7379('0x36')]][_0x7379('0x8e')]=_0xdfcb7a[_0x7379('0x82')];}else if(this['isNotNull'](_0xdfcb7a[_0x7379('0x7f')][_0x7379('0x8f')])){logger[_0x7379('0x2c')]('[%s][voiceCallReport][varset]\x20variable:xmd-callerid-preview\x20value:%s',_0xdfcb7a[_0x7379('0x36')],_0xdfcb7a['value']);this[_0x7379('0x3c')][_0xdfcb7a[_0x7379('0x36')]][_0x7379('0x90')]=_0xdfcb7a[_0x7379('0x82')];}else if(this[_0x7379('0x34')](_0xdfcb7a[_0x7379('0x7f')][_0x7379('0x91')])){logger[_0x7379('0x2c')](_0x7379('0x92'),_0xdfcb7a[_0x7379('0x36')],_0xdfcb7a[_0x7379('0x82')]);this['channels'][_0xdfcb7a[_0x7379('0x36')]][_0x7379('0x10')]=_0xdfcb7a[_0x7379('0x82')];}else if(this[_0x7379('0x34')](_0xdfcb7a[_0x7379('0x7f')][_0x7379('0x93')])){logger['info'](_0x7379('0x94'),_0xdfcb7a[_0x7379('0x36')],_0xdfcb7a[_0x7379('0x82')]);this[_0x7379('0x3c')][_0xdfcb7a[_0x7379('0x36')]][_0x7379('0x95')]=_0xdfcb7a[_0x7379('0x82')];}}}else if(this['isNotNull'](_0xdfcb7a[_0x7379('0x7f')]['mixmonitor_filename'])){if(_0xdfcb7a[_0x7379('0x82')]){var _0x4ca25a=path[_0x7379('0x96')](_0xdfcb7a['value'])[_0x7379('0x48')];logger['info'](_0x7379('0x81'),_0x4ca25a,_0xdfcb7a[_0x7379('0x82')]);this[_0x7379('0x97')](_0x4ca25a,_0xdfcb7a[_0x7379('0x82')]);}}else if(this[_0x7379('0x3c')][_0xdfcb7a[_0x7379('0x4a')]]){if(this[_0x7379('0x34')](_0xdfcb7a[_0x7379('0x7f')])){if(this[_0x7379('0x34')](_0xdfcb7a[_0x7379('0x7f')][_0x7379('0x93')])){logger[_0x7379('0x2c')](_0x7379('0x94'),_0xdfcb7a['linkedid'],_0xdfcb7a[_0x7379('0x82')]);this['channels'][_0xdfcb7a[_0x7379('0x4a')]][_0x7379('0x98')]=_0xdfcb7a[_0x7379('0x82')];}}}}}catch(_0x2f04c3){logger[_0x7379('0x2f')](_0x7379('0x99'),_0xdfcb7a[_0x7379('0x36')],util['inspect'](_0x2f04c3,{'showHidden':![],'depth':null}));}};VoiceCallReport[_0x7379('0x31')][_0x7379('0x25')]=function(_0x2e536e){try{if(this[_0x7379('0x34')](_0x2e536e)){logger[_0x7379('0x38')]('[%s][voiceCallReport][hangup]\x20event:',_0x2e536e['uniqueid'],util['inspect'](_0x2e536e,{'showHidden':![],'depth':null}));if(this[_0x7379('0x3c')][_0x2e536e[_0x7379('0x36')]]){logger[_0x7379('0x2c')]('[%s][voiceCallReport][hangup]\x20reason:%s',_0x2e536e[_0x7379('0x36')],_0x2e536e[_0x7379('0x9a')]);var _0x22c14d=moment();this[_0x7379('0x3c')][_0x2e536e[_0x7379('0x36')]]['endtime']=_0x22c14d['format'](_0x7379('0x4e'));this[_0x7379('0x3c')][_0x2e536e[_0x7379('0x36')]][_0x7379('0x5f')]=_0x22c14d['diff'](this[_0x7379('0x3c')][_0x2e536e['uniqueid']]['starttime'],_0x7379('0x60'));if(this[_0x7379('0x3c')][_0x2e536e[_0x7379('0x36')]][_0x7379('0x6a')]){this[_0x7379('0x3c')][_0x2e536e['uniqueid']]['billableseconds']=_0x22c14d[_0x7379('0x9b')](this[_0x7379('0x3c')][_0x2e536e['uniqueid']][_0x7379('0x9c')],_0x7379('0x60'));this['channels'][_0x2e536e[_0x7379('0x36')]]['holdtime']=this[_0x7379('0x3c')][_0x2e536e[_0x7379('0x36')]][_0x7379('0x5f')]-this[_0x7379('0x3c')][_0x2e536e[_0x7379('0x36')]][_0x7379('0x9d')];}if(_0x2e536e[_0x7379('0x3f')]===_0x7379('0x40')){if(this[_0x7379('0x1a')][_0x2e536e[_0x7379('0x41')][_0x7379('0x42')]('-')[0x0]]){this[_0x7379('0x1a')][_0x2e536e[_0x7379('0x41')]['split']('-')[0x0]]=_[_0x7379('0x9e')](this['agents'][_0x2e536e[_0x7379('0x41')][_0x7379('0x42')]('-')[0x0]],[_0x7379('0x44')]);logger[_0x7379('0x38')](_0x7379('0x9f'),_0x2e536e[_0x7379('0x36')],util[_0x7379('0x49')]({'id':this[_0x7379('0x1a')][_0x2e536e[_0x7379('0x41')][_0x7379('0x42')]('-')[0x0]]['id'],'destaccountcode':this[_0x7379('0x1a')][_0x2e536e[_0x7379('0x41')]['split']('-')[0x0]][_0x7379('0x53')]},{'showHidden':![],'depth':null}));this[_0x7379('0x32')](util['format'](_0x7379('0x47'),this[_0x7379('0x1a')][_0x2e536e[_0x7379('0x41')]['split']('-')[0x0]][_0x7379('0x48')]),'user:agentcomplete',{'id':this['agents'][_0x2e536e[_0x7379('0x41')][_0x7379('0x42')]('-')[0x0]]['id'],'destaccountcode':this[_0x7379('0x1a')][_0x2e536e[_0x7379('0x41')][_0x7379('0x42')]('-')[0x0]][_0x7379('0x53')]});}}var _0x20142c=this;Promise[_0x7379('0xa0')]()[_0x7379('0xa1')](function(){var _0x107ce2=_0x20142c[_0x7379('0x3c')][_0x2e536e[_0x7379('0x36')]];if(typeof _0x107ce2[_0x7379('0xa2')]==='undefined')return;if(_[_0x7379('0xa3')](_0x107ce2[_0x7379('0x78')]))return;return RpcSetting[_0x7379('0xa4')]()['then'](function(_0x406821){if(!_0x406821[_0x7379('0xa5')])return;return Promise[_0x7379('0xa0')]()[_0x7379('0xa1')](function(){return ami[_0x7379('0xa6')]({'action':_0x7379('0xa7'),'channel':_0x107ce2[_0x7379('0x41')]})[_0x7379('0xa8')](function(){});})[_0x7379('0xa1')](function(){return ami[_0x7379('0xa6')]({'action':_0x7379('0xa7'),'channel':_0x107ce2['destinationchannel']})['catch'](function(){})[_0x7379('0xa9')](function(){var _0x227bec=_0x20142c[_0x7379('0x1a')][_0x107ce2['destinationchannel'][_0x7379('0x42')]('-')[0x0]];if(!_0x227bec)return;io[_0x7379('0x32')]('webbar:stopmonitors',{'agentId':_0x227bec['id'],'uniqueid':_0x107ce2[_0x7379('0x36')]});});});});})[_0x7379('0xa1')](function(){if(_0x2e536e['event']==='BlindTransfer'){_0x20142c[_0x7379('0x1b')][_0x2e536e['uniqueid']]=_0x20142c[_0x7379('0x3c')][_0x2e536e['uniqueid']];}else{if(_0x20142c['channels'][_0x2e536e[_0x7379('0x36')]][_0x7379('0x89')]==='outbound'&&_0x20142c['blindTransfers'][_0x2e536e['uniqueid']]){_0x20142c['channels'][_0x2e536e[_0x7379('0x36')]][_0x7379('0x36')]=[_0x20142c['channels'][_0x2e536e[_0x7379('0x36')]]['linkedid'],_0x20142c[_0x7379('0x3c')][_0x2e536e[_0x7379('0x36')]][_0x7379('0x4a')]=_0x20142c[_0x7379('0x3c')][_0x2e536e['uniqueid']][_0x7379('0x36')]][0x0];delete _0x20142c[_0x7379('0x1b')][_0x2e536e['uniqueid']];}}logger[_0x7379('0x38')](_0x7379('0xaa'),_0x2e536e[_0x7379('0x36')],util['inspect'](_0x20142c['channels'][_0x2e536e[_0x7379('0x36')]],{'showHidden':![],'depth':null}));ami[_0x7379('0x32')](_0x7379('0xab'),_0x20142c[_0x7379('0x3c')][_0x2e536e[_0x7379('0x36')]]);delete _0x20142c['channels'][_0x2e536e[_0x7379('0x36')]];});}}}catch(_0x1c68bd){logger[_0x7379('0x2f')](_0x7379('0xac'),_0x2e536e['uniqueid'],util['inspect'](_0x1c68bd,{'showHidden':![],'depth':null}));}};VoiceCallReport[_0x7379('0x31')]['syncAttendedTransfer']=function(_0xd9f574){try{if(this[_0x7379('0x34')](_0xd9f574)){logger['info'](_0x7379('0xad'),_0xd9f574[_0x7379('0x36')],_0xd9f574[_0x7379('0xae')],_0xd9f574['transfertargetcalleridnum']);logger['debug']('[%s][voiceCallReport][attendedtransfer]\x20event:',_0xd9f574[_0x7379('0x36')],util[_0x7379('0x49')](_0xd9f574,{'showHidden':![],'depth':null}));if(this[_0x7379('0x3c')][_0xd9f574[_0x7379('0xaf')]]){this[_0x7379('0x3c')][_0xd9f574[_0x7379('0xaf')]][_0x7379('0xb0')]=_0xd9f574[_0x7379('0xae')];this['channels'][_0xd9f574[_0x7379('0xaf')]][_0x7379('0xb1')]=_0xd9f574[_0x7379('0xb2')];if(this[_0x7379('0x3c')][_0xd9f574['secondtransfereruniqueid']]){var _0x4bdbb5=this[_0x7379('0x3c')][_0xd9f574[_0x7379('0xb3')]];this[_0x7379('0x3c')][_0xd9f574[_0x7379('0xb3')]]=this[_0x7379('0x3c')][_0xd9f574[_0x7379('0xaf')]];this[_0x7379('0x3c')][_0xd9f574[_0x7379('0xaf')]]=_0x4bdbb5;}}else if(this['channels'][_0xd9f574[_0x7379('0xb4')]]){this['channels'][_0xd9f574['transfertargetuniqueid']][_0x7379('0xb0')]=_0xd9f574[_0x7379('0xae')];this[_0x7379('0x3c')][_0xd9f574[_0x7379('0xb4')]][_0x7379('0xb1')]=_0xd9f574[_0x7379('0xb2')];if(this[_0x7379('0x3c')][_0xd9f574[_0x7379('0xb5')]]){var _0x4bdbb5=this[_0x7379('0x3c')][_0xd9f574[_0x7379('0xb5')]];this[_0x7379('0x3c')][_0xd9f574['origtransfereruniqueid']]=this[_0x7379('0x3c')][_0xd9f574[_0x7379('0xb4')]];this['channels'][_0xd9f574[_0x7379('0xb4')]]=_0x4bdbb5;}}if((this['channels'][_0xd9f574[_0x7379('0xb5')]]||this[_0x7379('0x3c')][_0xd9f574[_0x7379('0xb6')]])&&this['channels'][_0xd9f574[_0x7379('0xb3')]]){var _0x5645f8=_['some']([this[_0x7379('0x3c')][_0xd9f574[_0x7379('0xb5')]],this['channels'][_0xd9f574['origtransfererlinkedid']],this[_0x7379('0x3c')][_0xd9f574[_0x7379('0xb3')]]],function(_0x1c552c){return _0x1c552c&&_0x1c552c[_0x7379('0x89')]===_0x7379('0xb7')&&_0x1c552c[_0x7379('0xb8')];});if(_0x5645f8){if(this[_0x7379('0x3c')][_0xd9f574[_0x7379('0xb5')]])this[_0x7379('0x3c')][_0xd9f574[_0x7379('0xb5')]][_0x7379('0xa2')]=_0x7379('0xb9');if(this[_0x7379('0x3c')][_0xd9f574['origtransfererlinkedid']])this[_0x7379('0x3c')][_0xd9f574[_0x7379('0xb6')]]['transferType']=_0x7379('0xb9');this[_0x7379('0x3c')][_0xd9f574[_0x7379('0xb3')]][_0x7379('0xa2')]=_0x7379('0xb9');}}}}catch(_0x23601b){logger['error'](_0x7379('0xba'),_0xd9f574[_0x7379('0x36')],util[_0x7379('0x49')](_0x23601b,{'showHidden':![],'depth':null}));}};VoiceCallReport['prototype'][_0x7379('0xbb')]=function(_0x2ae6b6){try{if(this['isNotNull'](_0x2ae6b6)){logger[_0x7379('0x2c')](_0x7379('0xbc'),_0x2ae6b6[_0x7379('0x36')],_0x2ae6b6[_0x7379('0xbd')],_0x2ae6b6['extension']);logger[_0x7379('0x38')](_0x7379('0xbe'),_0x2ae6b6[_0x7379('0x36')],util['inspect'](_0x2ae6b6,{'showHidden':![],'depth':null}));if(this[_0x7379('0x3c')][_0x2ae6b6[_0x7379('0xaf')]]){this[_0x7379('0x3c')][_0x2ae6b6[_0x7379('0xaf')]][_0x7379('0xb0')]=_0x2ae6b6[_0x7379('0xbd')];this[_0x7379('0x3c')][_0x2ae6b6[_0x7379('0xaf')]][_0x7379('0xb1')]=_0x2ae6b6[_0x7379('0xbf')];this[_0x7379('0x3c')][_0x2ae6b6['transfereeuniqueid']][_0x7379('0xa2')]=_0x7379('0xc0');this['syncHangup']({'event':_0x7379('0xc1'),'uniqueid':_0x2ae6b6[_0x7379('0xaf')],'context':_0x2ae6b6['context'],'channel':_0x2ae6b6[_0x7379('0xc2')]});}else{this[_0x7379('0x3c')][_0x2ae6b6['transfereruniqueid']]['transferType']=_0x7379('0xc0');}}}catch(_0x34e53d){logger[_0x7379('0x2f')](_0x7379('0xc3'),_0x2ae6b6[_0x7379('0x36')],util['inspect'](_0x34e53d,{'showHidden':![],'depth':null}));}};VoiceCallReport[_0x7379('0x31')][_0x7379('0x29')]=function(_0xd7ec2b){try{if(this[_0x7379('0x34')](_0xd7ec2b)){logger[_0x7379('0x38')](_0x7379('0xc4'),_0xd7ec2b['uniqueid'],util[_0x7379('0x49')](_0xd7ec2b,{'showHidden':![],'depth':null}));if(this['channels'][_0xd7ec2b['uniqueid']]){if(!_[_0x7379('0x79')](this[_0x7379('0x3c')][_0xd7ec2b['uniqueid']][_0x7379('0x9c')])){this['channels'][_0xd7ec2b['uniqueid']][_0x7379('0xc5')]=moment()[_0x7379('0x46')](_0x7379('0x4e'));logger[_0x7379('0x2c')]('[%s][voiceCallReport][musiconholdstart]\x20mohstarttime:%s',_0xd7ec2b['uniqueid'],this[_0x7379('0x3c')][_0xd7ec2b[_0x7379('0x36')]][_0x7379('0xc5')]);}}}}catch(_0x2ff25f){logger['error'](_0x7379('0xc6'),_0xd7ec2b['uniqueid'],util[_0x7379('0x49')](_0x2ff25f,{'showHidden':![],'depth':null}));}};VoiceCallReport[_0x7379('0x31')][_0x7379('0x2b')]=function(_0x915e04){try{if(this[_0x7379('0x34')](_0x915e04)){logger[_0x7379('0x38')]('[%s][voiceCallReport][musiconholdstop]\x20event:',_0x915e04[_0x7379('0x36')],util['inspect'](_0x915e04,{'showHidden':![],'depth':null}));if(this[_0x7379('0x3c')][_0x915e04[_0x7379('0x36')]]){if(!_[_0x7379('0x79')](this[_0x7379('0x3c')][_0x915e04['uniqueid']][_0x7379('0xc5')])){this[_0x7379('0x3c')][_0x915e04[_0x7379('0x36')]][_0x7379('0xc7')]+=moment()[_0x7379('0xc8')](0x0)[_0x7379('0x9b')](this[_0x7379('0x3c')][_0x915e04[_0x7379('0x36')]]['mohstarttime'],_0x7379('0x60'));logger['info'](_0x7379('0xc9'),_0x915e04[_0x7379('0x36')],this['channels'][_0x915e04[_0x7379('0x36')]]['mohtime']);delete this['channels'][_0x915e04[_0x7379('0x36')]][_0x7379('0xc5')];}}}}catch(_0x560c6f){logger[_0x7379('0x2f')](_0x7379('0xca'),_0x915e04['uniqueid'],util[_0x7379('0x49')](_0x560c6f,{'showHidden':![],'depth':null}));}};module[_0x7379('0xcb')]=VoiceCallReport;
\ No newline at end of file
+var _0xd0f5=['diff','billableseconds','holdtime','omit','[%s][voiceCallReport][hangup]\x20sending\x20user:agentcomplete\x20event:','user:agentcomplete','resolve','then','transferType','undefined','getSettings','stopRecordingOnTransfer','StopMixMonitor','catch','webbar:stopmonitors','event','[%s][voiceCallReport][hangup]\x20sending\x20hangup\x20event:','custom:voiceCallReport','[%s][voiceCallReport][hangup]','[%s][voiceCallReport][attendedtransfer]\x20transfercalleridnum:%s\x20transferconnectedlinenum:%s','origtransferercalleridnum','transfertargetcalleridnum','[%s][voiceCallReport][attendedtransfer]\x20event:','transfereeuniqueid','transfercalleridnum','secondtransfereruniqueid','transfertargetuniqueid','transferconnectedlinenum','origtransfereruniqueid','origtransfererlinkedid','some','routeid','ATTENDED','[%s][voiceCallReport][attendedtransfer]','syncBlindTransfer','[%s][voiceCallReport][blindtransfer]\x20transfercalleridnum:%s\x20transferconnectedlinenum:%s','transfereecalleridnum','extension','BLIND','BlindTransfer','transfererchannel','syncMusicOnHoldStart','mohstarttime','[%s][voiceCallReport][musiconholdstart]\x20mohstarttime:%s','syncMusicOnHoldStop','[%s][voiceCallReport][musiconholdstop]\x20event:','mohtime','[%s][voiceCallReport][musiconholdstop]\x20mohtime:%s','[%s][voiceCallReport][musiconholdstop]','exports','bluebird','lodash','moment','path','ioredis','../../../config/environment','../../../config/logger','ami','../ami','../model/channel','../rpc/setting','unknown','not_inuse','inuse','unavailable','ringinuse','set','agi','dial','playback','NO\x20ANSWER','FAILED','ANSWERED','BUSY','defaults','redis','localhost','socket.io-emitter','channels','agents','blindTransfers','coreshowchannel','syncNewExten','bind','newchannel','syncNewChannel','syncNewState','varset','syncVarSet','hangup','syncHangup','newcallerid','syncAttendedTransfer','blindtransfer','musiconholdstart','musiconholdstop','info','[voiceCallReport][coreshowchannels]\x20started','actionCoreShowChannels','error','isNotNull','isUndefined','prototype','emit','uniqueid','calleridname','calleridnum','debug','[%s][voiceCallReport][newcallerid]\x20event:','inspect','linkedid','pick','keys','context','channel','xcally-motion-preview','split','destconnectedlinenum','connectedlinenum','format','user:agentconnect','[%s][voiceCallReport][newcallerid]','[%s][voiceCallReport][newchannel]\x20event:','OutgoingSpoolFailed','exten','starttime','disposition','toNumber','channelstate','merge','from-sip','[%s][voiceCallReport][newchannel]\x20sending\x20user:agentconnect\x20event:','user:%s','name','accountcode','[%s][voiceCallReport][newchannel]','[%s][voiceCallReport][newexten]\x20event:','application','toLowerCase','appdata','applicationdata','[%s][voiceCallReport][newexten]\x20application:%s\x20appdata:%s','duration','seconds','YYYY-MM-DD\x20HH:mm:ss','lastdata','startsWith','match','queue','[%s][voiceCallReport][newexten]','[%s][voiceCallReport][newstate]\x20linkedid:%s\x20calleridname:%s\x20calleridnum:%s','answered','answertime','connectedlinename','destinationchannel','UserId','membername','routealias','[%s][voiceCallReport][newstate]\x20sending\x20user:agentconnect\x20event:','[%s][voiceCallReport][newstate]','syncMixMonitorFilename','monitor','endsWith','.wav49','replace','.WAV','find','monitors','isNil','push','rec','[%s][voiceCallReport][mixMonitorFilename]','[%s][voiceCallReport][varset]\x20event:','variable','[%s][voiceCallReport][varset]\x20variable:mixmonitor_filename\x20value:%s','value','xmd-phone','[%s][voiceCallReport][varset]\x20variable:xmd-phone\x20value:%s','[%s][voiceCallReport][varset]\x20variable:xmd-callerid\x20value:%s','xmd-cdrtype','[%s][voiceCallReport][varset]\x20variable:xmd-cdrtype\x20value:%s','type','xmd-queue','[%s][voiceCallReport][varset]\x20variable:xmd-queue\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','sipcallid','[%s][voiceCallReport][varset]\x20variable:sipcallid\x20value:%s','mixmonitor_filename','sipcalllinkedid','cause-txt'];(function(_0x9f0a08,_0x185a5a){var _0x2e4203=function(_0x9207cd){while(--_0x9207cd){_0x9f0a08['push'](_0x9f0a08['shift']());}};_0x2e4203(++_0x185a5a);}(_0xd0f5,0x1be));var _0x5d0f=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0xd0f5[_0x3dd15e];return _0x231fd0;};'use strict';var BPromise=require(_0x5d0f('0x0'));var _=require(_0x5d0f('0x1'));var moment=require(_0x5d0f('0x2'));var util=require('util');var path=require(_0x5d0f('0x3'));var Redis=require(_0x5d0f('0x4'));var config=require(_0x5d0f('0x5'));var logger=require(_0x5d0f('0x6'))(_0x5d0f('0x7'));var ami=require(_0x5d0f('0x8'));var Channel=require(_0x5d0f('0x9'));var RpcSetting=require(_0x5d0f('0xa'));var statusDesc=[_0x5d0f('0xb'),_0x5d0f('0xc'),_0x5d0f('0xd'),'busy','invalid',_0x5d0f('0xe'),'ringing',_0x5d0f('0xf'),'onhold'];var applications=[_0x5d0f('0x10'),'queue',_0x5d0f('0x11'),_0x5d0f('0x12'),_0x5d0f('0x13'),'voicemail'];var dispositions=[_0x5d0f('0x14'),_0x5d0f('0x15'),_0x5d0f('0x15'),_0x5d0f('0x14'),_0x5d0f('0x14'),_0x5d0f('0x14'),_0x5d0f('0x16'),_0x5d0f('0x17'),'FAILED',_0x5d0f('0x15'),'FAILED'];var actions={};config['redis']=_[_0x5d0f('0x18')](config[_0x5d0f('0x19')],{'host':_0x5d0f('0x1a'),'port':0x18eb});var io=require(_0x5d0f('0x1b'))(new Redis(config[_0x5d0f('0x19')]));function VoiceCallReport(_0x3343e3){this[_0x5d0f('0x1c')]=_0x3343e3['channels'];this[_0x5d0f('0x1d')]=_0x3343e3['agents'];this[_0x5d0f('0x1e')]={};ami['on'](_0x5d0f('0x1f'),this[_0x5d0f('0x20')][_0x5d0f('0x21')](this));ami['on']('newexten',this[_0x5d0f('0x20')][_0x5d0f('0x21')](this));ami['on'](_0x5d0f('0x22'),this[_0x5d0f('0x23')][_0x5d0f('0x21')](this));ami['on']('newstate',this[_0x5d0f('0x24')]['bind'](this));ami['on'](_0x5d0f('0x25'),this[_0x5d0f('0x26')][_0x5d0f('0x21')](this));ami['on'](_0x5d0f('0x27'),this[_0x5d0f('0x28')]['bind'](this));ami['on'](_0x5d0f('0x29'),this['syncNewCallerId'][_0x5d0f('0x21')](this));ami['on']('attendedtransfer',this[_0x5d0f('0x2a')]['bind'](this));ami['on'](_0x5d0f('0x2b'),this['syncBlindTransfer'][_0x5d0f('0x21')](this));ami['on'](_0x5d0f('0x2c'),this['syncMusicOnHoldStart'][_0x5d0f('0x21')](this));ami['on'](_0x5d0f('0x2d'),this['syncMusicOnHoldStop'][_0x5d0f('0x21')](this));try{logger[_0x5d0f('0x2e')](_0x5d0f('0x2f'));ami[_0x5d0f('0x30')]();}catch(_0x191aec){logger[_0x5d0f('0x31')]('[voiceCallReport][coreshowchannels]',util['inspect'](_0x191aec,{'showHidden':![],'depth':null}));}}VoiceCallReport['prototype'][_0x5d0f('0x32')]=function(_0x520561){return _0x520561!==null&&!_[_0x5d0f('0x33')](_0x520561);};VoiceCallReport[_0x5d0f('0x34')][_0x5d0f('0x35')]=function(_0x2c4638,_0x38cef7,_0x479cab){io['to'](_0x2c4638)[_0x5d0f('0x35')](_0x38cef7,_0x479cab);};VoiceCallReport['prototype']['syncNewCallerId']=function(_0x5837ae){try{if(this['isNotNull'](_0x5837ae)){logger[_0x5d0f('0x2e')]('[%s][voiceCallReport][newcallerid]\x20calleridname:%s\x20calleridnum:%s',_0x5837ae[_0x5d0f('0x36')],_0x5837ae[_0x5d0f('0x37')],_0x5837ae[_0x5d0f('0x38')]);logger[_0x5d0f('0x39')](_0x5d0f('0x3a'),_0x5837ae[_0x5d0f('0x36')],util[_0x5d0f('0x3b')](_0x5837ae,{'showHidden':![],'depth':null}));if(_0x5837ae[_0x5d0f('0x36')]===_0x5837ae[_0x5d0f('0x3c')]){if(!_['isUndefined'](this[_0x5d0f('0x1c')][_0x5837ae[_0x5d0f('0x36')]])){_['merge'](this[_0x5d0f('0x1c')][_0x5837ae[_0x5d0f('0x36')]],_[_0x5d0f('0x3d')](_0x5837ae,_[_0x5d0f('0x3e')](this[_0x5d0f('0x1c')][_0x5837ae['uniqueid']])));}}if(_0x5837ae[_0x5d0f('0x3f')]==='from-sip'){if(this[_0x5d0f('0x1d')][_0x5837ae[_0x5d0f('0x40')]['split']('-')[0x0]]){if(_0x5837ae['exten']==_0x5d0f('0x41')){this[_0x5d0f('0x1d')][_0x5837ae[_0x5d0f('0x40')][_0x5d0f('0x42')]('-')[0x0]][_0x5d0f('0x43')]=_0x5837ae[_0x5d0f('0x44')];this['emit'](util[_0x5d0f('0x45')]('user:%s',this[_0x5d0f('0x1d')][_0x5837ae[_0x5d0f('0x40')][_0x5d0f('0x42')]('-')[0x0]]['name']),_0x5d0f('0x46'),{'destaccountcode':this['agents'][_0x5837ae[_0x5d0f('0x40')][_0x5d0f('0x42')]('-')[0x0]]['accountcode'],'destconnectedlinenum':_0x5837ae[_0x5d0f('0x44')]});}}}}}catch(_0x117323){logger[_0x5d0f('0x31')](_0x5d0f('0x47'),_0x5837ae[_0x5d0f('0x36')],util['inspect'](_0x117323,{'showHidden':![],'depth':null}));}};VoiceCallReport[_0x5d0f('0x34')][_0x5d0f('0x23')]=function(_0xcd08bb){try{if(this[_0x5d0f('0x32')](_0xcd08bb)){logger[_0x5d0f('0x39')](_0x5d0f('0x48'),_0xcd08bb['uniqueid'],util[_0x5d0f('0x3b')](_0xcd08bb,{'showHidden':![],'depth':null}));if(_0xcd08bb['uniqueid']===_0xcd08bb[_0x5d0f('0x3c')]&&_0xcd08bb[_0x5d0f('0x40')]!=_0x5d0f('0x49')){if(_['isUndefined'](this[_0x5d0f('0x1c')][_0xcd08bb[_0x5d0f('0x36')]])){logger[_0x5d0f('0x2e')]('[%s][voiceCallReport][newchannel]\x20context:%s\x20exten:%s',_0xcd08bb[_0x5d0f('0x36')],_0xcd08bb[_0x5d0f('0x3f')],_0xcd08bb[_0x5d0f('0x4a')]);this[_0x5d0f('0x1c')][_0xcd08bb[_0x5d0f('0x36')]]=new Channel();this[_0x5d0f('0x1c')][_0xcd08bb[_0x5d0f('0x36')]][_0x5d0f('0x4b')]=moment()['format']('YYYY-MM-DD\x20HH:mm:ss');this[_0x5d0f('0x1c')][_0xcd08bb[_0x5d0f('0x36')]][_0x5d0f('0x4c')]=dispositions[_[_0x5d0f('0x4d')](_0xcd08bb[_0x5d0f('0x4e')])];_[_0x5d0f('0x4f')](this[_0x5d0f('0x1c')][_0xcd08bb[_0x5d0f('0x36')]],_[_0x5d0f('0x3d')](_0xcd08bb,_[_0x5d0f('0x3e')](this[_0x5d0f('0x1c')][_0xcd08bb[_0x5d0f('0x36')]])));if(_0xcd08bb[_0x5d0f('0x3f')]===_0x5d0f('0x50')){if(this['agents'][_0xcd08bb[_0x5d0f('0x40')][_0x5d0f('0x42')]('-')[0x0]]){if(_[_0x5d0f('0x33')](this[_0x5d0f('0x1d')][_0xcd08bb['channel']['split']('-')[0x0]]['destconnectedlinenum'])){this[_0x5d0f('0x1d')][_0xcd08bb['channel'][_0x5d0f('0x42')]('-')[0x0]][_0x5d0f('0x43')]=_0xcd08bb[_0x5d0f('0x4a')];logger[_0x5d0f('0x39')](_0x5d0f('0x51'),_0xcd08bb[_0x5d0f('0x36')],util[_0x5d0f('0x3b')]({'destaccountcode':this[_0x5d0f('0x1d')][_0xcd08bb['channel'][_0x5d0f('0x42')]('-')[0x0]]['accountcode'],'destconnectedlinenum':_0xcd08bb['exten']},{'showHidden':![],'depth':null}));this[_0x5d0f('0x35')](util['format'](_0x5d0f('0x52'),this[_0x5d0f('0x1d')][_0xcd08bb[_0x5d0f('0x40')]['split']('-')[0x0]][_0x5d0f('0x53')]),_0x5d0f('0x46'),{'destaccountcode':this[_0x5d0f('0x1d')][_0xcd08bb['channel'][_0x5d0f('0x42')]('-')[0x0]][_0x5d0f('0x54')],'destconnectedlinenum':_0xcd08bb[_0x5d0f('0x4a')]});}}}}}}}catch(_0x492968){logger[_0x5d0f('0x31')](_0x5d0f('0x55'),_0xcd08bb[_0x5d0f('0x36')],util[_0x5d0f('0x3b')](_0x492968,{'showHidden':![],'depth':null}));}};VoiceCallReport['prototype']['syncNewExten']=function(_0x2ee210){try{if(this[_0x5d0f('0x32')](_0x2ee210)){logger['debug'](_0x5d0f('0x56'),_0x2ee210[_0x5d0f('0x36')],util['inspect'](_0x2ee210,{'showHidden':![],'depth':null}));if(_0x2ee210[_0x5d0f('0x36')]===_0x2ee210['linkedid']&&_0x2ee210[_0x5d0f('0x4a')]!='h'&&_0x2ee210['channel']!=_0x5d0f('0x49')){_0x2ee210['application']=_0x2ee210[_0x5d0f('0x57')][_0x5d0f('0x58')]();_0x2ee210['applicationdata']=_0x2ee210[_0x5d0f('0x59')]&&_0x2ee210[_0x5d0f('0x59')]['startsWith']('CDR(routeAlias)')?_0x2ee210[_0x5d0f('0x59')]:(_0x2ee210[_0x5d0f('0x59')]||_0x2ee210[_0x5d0f('0x5a')])[_0x5d0f('0x58')]();logger['info'](_0x5d0f('0x5b'),_0x2ee210[_0x5d0f('0x36')],_0x2ee210[_0x5d0f('0x57')],_0x2ee210['applicationdata']);if(_[_0x5d0f('0x33')](this[_0x5d0f('0x1c')][_0x2ee210['uniqueid']])){this['channels'][_0x2ee210[_0x5d0f('0x36')]]=new Channel();this[_0x5d0f('0x1c')][_0x2ee210[_0x5d0f('0x36')]][_0x5d0f('0x4b')]=_0x2ee210[_0x5d0f('0x5c')]?moment()['subtract'](moment[_0x5d0f('0x5c')](_0x2ee210[_0x5d0f('0x5c')])['seconds'](),_0x5d0f('0x5d'))['format'](_0x5d0f('0x5e')):moment()[_0x5d0f('0x45')](_0x5d0f('0x5e'));this[_0x5d0f('0x1c')][_0x2ee210[_0x5d0f('0x36')]][_0x5d0f('0x4c')]='NO\x20ANSWER';}_['merge'](this[_0x5d0f('0x1c')][_0x2ee210['uniqueid']],_[_0x5d0f('0x3d')](_0x2ee210,_[_0x5d0f('0x3e')](this['channels'][_0x2ee210[_0x5d0f('0x36')]])));if(_['includes'](applications,_0x2ee210['application'])){this[_0x5d0f('0x1c')][_0x2ee210['uniqueid']]['lastapplication']=_0x2ee210[_0x5d0f('0x57')];this[_0x5d0f('0x1c')][_0x2ee210[_0x5d0f('0x36')]][_0x5d0f('0x5f')]=_0x2ee210[_0x5d0f('0x5a')];if(_0x2ee210[_0x5d0f('0x57')]===_0x5d0f('0x10')&&_[_0x5d0f('0x60')](_0x2ee210[_0x5d0f('0x5a')][_0x5d0f('0x58')](),'cdr(')){var _0x187657=_0x2ee210[_0x5d0f('0x5a')][_0x5d0f('0x42')]('=');var _0x3cb248=_0x187657[0x0][_0x5d0f('0x58')]()[_0x5d0f('0x61')](/cdr\((.*)\)/);if(_0x3cb248){this[_0x5d0f('0x1c')][_0x2ee210['uniqueid']][_0x3cb248[0x1]]=_0x187657[0x1];}}else if(_0x2ee210[_0x5d0f('0x57')]==='queue'){this[_0x5d0f('0x1c')][_0x2ee210['uniqueid']][_0x5d0f('0x62')]=_0x2ee210['applicationdata'][_0x5d0f('0x42')](',')[0x0];}}}}}catch(_0x5ac3a5){logger[_0x5d0f('0x31')](_0x5d0f('0x63'),_0x2ee210[_0x5d0f('0x36')],util[_0x5d0f('0x3b')](_0x5ac3a5,{'showHidden':![],'depth':null}));}};VoiceCallReport[_0x5d0f('0x34')][_0x5d0f('0x24')]=function(_0xce4fd5){try{if(this[_0x5d0f('0x32')](_0xce4fd5)){logger['info'](_0x5d0f('0x64'),_0xce4fd5['uniqueid'],_0xce4fd5[_0x5d0f('0x3c')],_0xce4fd5[_0x5d0f('0x37')],_0xce4fd5[_0x5d0f('0x38')]);logger[_0x5d0f('0x39')]('[%s][voiceCallReport][newstate]\x20event:',_0xce4fd5['uniqueid'],util[_0x5d0f('0x3b')](_0xce4fd5,{'showHidden':![],'depth':null}));if(_0xce4fd5[_0x5d0f('0x36')]!==_0xce4fd5['linkedid']){if(this[_0x5d0f('0x1c')][_0xce4fd5[_0x5d0f('0x3c')]]){if(_0xce4fd5[_0x5d0f('0x4e')]==='6'){if(!this[_0x5d0f('0x1c')][_0xce4fd5['linkedid']][_0x5d0f('0x65')]){var _0x592e83=moment();this['channels'][_0xce4fd5[_0x5d0f('0x3c')]][_0x5d0f('0x65')]=!![];this[_0x5d0f('0x1c')][_0xce4fd5[_0x5d0f('0x3c')]][_0x5d0f('0x66')]=_0x592e83[_0x5d0f('0x45')](_0x5d0f('0x5e'));if(this[_0x5d0f('0x1c')][_0xce4fd5[_0x5d0f('0x3c')]][_0x5d0f('0x4b')]){this['channels'][_0xce4fd5[_0x5d0f('0x3c')]]['holdtime']=_0x592e83['diff'](this[_0x5d0f('0x1c')][_0xce4fd5[_0x5d0f('0x3c')]][_0x5d0f('0x4b')],_0x5d0f('0x5d'));}}this[_0x5d0f('0x1c')][_0xce4fd5[_0x5d0f('0x3c')]][_0x5d0f('0x3c')]=_0xce4fd5[_0x5d0f('0x36')];if(_0xce4fd5['calleridnum']!=='xcally-motion-preview'){this['channels'][_0xce4fd5['linkedid']][_0x5d0f('0x44')]=_0xce4fd5[_0x5d0f('0x38')];}this[_0x5d0f('0x1c')][_0xce4fd5[_0x5d0f('0x3c')]][_0x5d0f('0x67')]=_0xce4fd5['calleridname'];this[_0x5d0f('0x1c')][_0xce4fd5['linkedid']][_0x5d0f('0x68')]=_0xce4fd5[_0x5d0f('0x40')];this[_0x5d0f('0x1c')][_0xce4fd5[_0x5d0f('0x3c')]]['disposition']=dispositions[_[_0x5d0f('0x4d')](_0xce4fd5[_0x5d0f('0x4e')])];if(this[_0x5d0f('0x1d')][_0xce4fd5['channel'][_0x5d0f('0x42')]('-')[0x0]]){this[_0x5d0f('0x1c')][_0xce4fd5[_0x5d0f('0x3c')]][_0x5d0f('0x69')]=this['agents'][_0xce4fd5[_0x5d0f('0x40')][_0x5d0f('0x42')]('-')[0x0]]['id'];this[_0x5d0f('0x1c')][_0xce4fd5[_0x5d0f('0x3c')]][_0x5d0f('0x6a')]=this[_0x5d0f('0x1d')][_0xce4fd5[_0x5d0f('0x40')]['split']('-')[0x0]]['name'];}}}}else{if(this[_0x5d0f('0x1c')][_0xce4fd5[_0x5d0f('0x36')]]){if(_0xce4fd5[_0x5d0f('0x4e')]==='6'){if(this['agents'][_0xce4fd5[_0x5d0f('0x40')][_0x5d0f('0x42')]('-')[0x0]]){this[_0x5d0f('0x1c')][_0xce4fd5[_0x5d0f('0x36')]][_0x5d0f('0x69')]=this[_0x5d0f('0x1d')][_0xce4fd5['channel'][_0x5d0f('0x42')]('-')[0x0]]['id'];this[_0x5d0f('0x1c')][_0xce4fd5['uniqueid']]['membername']=this[_0x5d0f('0x1d')][_0xce4fd5[_0x5d0f('0x40')][_0x5d0f('0x42')]('-')[0x0]][_0x5d0f('0x53')];}}}}if(_0xce4fd5[_0x5d0f('0x4e')]==='6'&&_0xce4fd5['context']==='from-sip'){if(this['agents'][_0xce4fd5['channel'][_0x5d0f('0x42')]('-')[0x0]]){this[_0x5d0f('0x1d')][_0xce4fd5['channel']['split']('-')[0x0]]['destconnectedlinenum']=_0xce4fd5[_0x5d0f('0x4a')];var _0x599c80;if(this[_0x5d0f('0x1c')][_0xce4fd5[_0x5d0f('0x36')]])_0x599c80=this[_0x5d0f('0x1c')][_0xce4fd5[_0x5d0f('0x36')]][_0x5d0f('0x6b')];else if(this['channels'][_0xce4fd5[_0x5d0f('0x3c')]])_0x599c80=this[_0x5d0f('0x1c')][_0xce4fd5[_0x5d0f('0x3c')]][_0x5d0f('0x6b')];logger[_0x5d0f('0x39')](_0x5d0f('0x6c'),_0xce4fd5[_0x5d0f('0x36')],util[_0x5d0f('0x3b')]({'destaccountcode':this[_0x5d0f('0x1d')][_0xce4fd5['channel'][_0x5d0f('0x42')]('-')[0x0]][_0x5d0f('0x54')],'destconnectedlinenum':_0xce4fd5[_0x5d0f('0x4a')],'routealias':_0x599c80},{'showHidden':![],'depth':null}));this[_0x5d0f('0x35')](util['format'](_0x5d0f('0x52'),this[_0x5d0f('0x1d')][_0xce4fd5[_0x5d0f('0x40')][_0x5d0f('0x42')]('-')[0x0]][_0x5d0f('0x53')]),_0x5d0f('0x46'),{'destaccountcode':this['agents'][_0xce4fd5[_0x5d0f('0x40')][_0x5d0f('0x42')]('-')[0x0]][_0x5d0f('0x54')],'destconnectedlinenum':_0xce4fd5[_0x5d0f('0x4a')],'routealias':_0x599c80});}}}}catch(_0x339a44){logger[_0x5d0f('0x31')](_0x5d0f('0x6d'),_0xce4fd5[_0x5d0f('0x36')],util['inspect'](_0x339a44,{'showHidden':![],'depth':null}));}};VoiceCallReport[_0x5d0f('0x34')][_0x5d0f('0x6e')]=function(_0x1d7b15,_0xdaab8d){try{if(this[_0x5d0f('0x1c')][_0x1d7b15]){logger[_0x5d0f('0x2e')]('[%s][voiceCallReport][mixMonitorFilename]\x20monitorFilename:%s',_0x1d7b15,_0xdaab8d);this[_0x5d0f('0x1c')][_0x1d7b15][_0x5d0f('0x6f')]=!![];if(_[_0x5d0f('0x70')](_0xdaab8d,_0x5d0f('0x71'))){_0xdaab8d=_0xdaab8d[_0x5d0f('0x72')](_0x5d0f('0x71'),_0x5d0f('0x73'));}this[_0x5d0f('0x1c')][_0x1d7b15]['monitorFilename']=_0xdaab8d;var _0x343918=_[_0x5d0f('0x74')](this[_0x5d0f('0x1c')][_0x1d7b15][_0x5d0f('0x75')],{'filename':_0xdaab8d});if(_[_0x5d0f('0x76')](_0x343918)){this[_0x5d0f('0x1c')][_0x1d7b15]['monitors'][_0x5d0f('0x77')]({'filename':_0xdaab8d,'createdAt':moment()['format'](_0x5d0f('0x5e')),'mixmonitorid':'','status':_0x5d0f('0x78')});}}}catch(_0x42710e){logger[_0x5d0f('0x31')](_0x5d0f('0x79'),_0x1d7b15,util[_0x5d0f('0x3b')](_0x42710e,{'showHidden':![],'depth':null}));}};VoiceCallReport[_0x5d0f('0x34')][_0x5d0f('0x26')]=function(_0x13a347){try{if(this['isNotNull'](_0x13a347)){logger['debug'](_0x5d0f('0x7a'),_0x13a347[_0x5d0f('0x36')],util[_0x5d0f('0x3b')](_0x13a347,{'showHidden':![],'depth':null}));if(this[_0x5d0f('0x1c')][_0x13a347[_0x5d0f('0x36')]]&&_0x13a347[_0x5d0f('0x40')]!=_0x5d0f('0x49')){if(this[_0x5d0f('0x32')](_0x13a347[_0x5d0f('0x7b')])){if(this['isNotNull'](_0x13a347[_0x5d0f('0x7b')]['mixmonitor_filename'])){logger[_0x5d0f('0x2e')](_0x5d0f('0x7c'),_0x13a347[_0x5d0f('0x36')],_0x13a347['value']);this[_0x5d0f('0x6e')](_0x13a347[_0x5d0f('0x36')],_0x13a347[_0x5d0f('0x7d')]);}else if(this['isNotNull'](_0x13a347['variable'][_0x5d0f('0x7e')])){logger[_0x5d0f('0x2e')](_0x5d0f('0x7f'),_0x13a347['uniqueid'],_0x13a347[_0x5d0f('0x7d')]);this[_0x5d0f('0x1c')][_0x13a347['uniqueid']][_0x5d0f('0x38')]=_0x13a347['value'];}else if(this['isNotNull'](_0x13a347['variable']['xmd-callerid'])){logger['info'](_0x5d0f('0x80'),_0x13a347[_0x5d0f('0x36')],_0x13a347['value']);this[_0x5d0f('0x1c')][_0x13a347[_0x5d0f('0x36')]]['callerid']=_0x13a347['value'];}else if(this[_0x5d0f('0x32')](_0x13a347[_0x5d0f('0x7b')][_0x5d0f('0x81')])){logger[_0x5d0f('0x2e')](_0x5d0f('0x82'),_0x13a347[_0x5d0f('0x36')],_0x13a347[_0x5d0f('0x7d')]);this['channels'][_0x13a347[_0x5d0f('0x36')]][_0x5d0f('0x83')]=_0x13a347[_0x5d0f('0x7d')];}else if(this[_0x5d0f('0x32')](_0x13a347['variable'][_0x5d0f('0x84')])){logger[_0x5d0f('0x2e')](_0x5d0f('0x85'),_0x13a347[_0x5d0f('0x36')],_0x13a347[_0x5d0f('0x7d')][_0x5d0f('0x42')](',')[0x0]);this[_0x5d0f('0x1c')][_0x13a347['uniqueid']]['queue']=_0x13a347[_0x5d0f('0x7d')][_0x5d0f('0x42')](',')[0x0];}else if(this['isNotNull'](_0x13a347['variable']['xmd-originatecalleridnum'])){logger[_0x5d0f('0x2e')]('[%s][voiceCallReport][varset]\x20variable:xmd-originatecalleridnum\x20value:%s',_0x13a347[_0x5d0f('0x36')],_0x13a347[_0x5d0f('0x7d')]);this[_0x5d0f('0x1c')][_0x13a347[_0x5d0f('0x36')]][_0x5d0f('0x86')]=_0x13a347[_0x5d0f('0x7d')];}else if(this[_0x5d0f('0x32')](_0x13a347[_0x5d0f('0x7b')][_0x5d0f('0x87')])){logger['info'](_0x5d0f('0x88'),_0x13a347[_0x5d0f('0x36')],_0x13a347['value']);this[_0x5d0f('0x1c')][_0x13a347[_0x5d0f('0x36')]][_0x5d0f('0x89')]=_0x13a347[_0x5d0f('0x7d')];}else if(this[_0x5d0f('0x32')](_0x13a347['variable'][_0x5d0f('0x8a')])){logger['info'](_0x5d0f('0x8b'),_0x13a347[_0x5d0f('0x36')],_0x13a347[_0x5d0f('0x7d')]);this[_0x5d0f('0x1c')][_0x13a347[_0x5d0f('0x36')]][_0x5d0f('0x8c')]=_0x13a347[_0x5d0f('0x7d')];}else if(this[_0x5d0f('0x32')](_0x13a347[_0x5d0f('0x7b')][_0x5d0f('0x8d')])){logger[_0x5d0f('0x2e')](_0x5d0f('0x8e'),_0x13a347[_0x5d0f('0x36')],_0x13a347['value']);this[_0x5d0f('0x1c')][_0x13a347[_0x5d0f('0x36')]][_0x5d0f('0x62')]=_0x13a347[_0x5d0f('0x7d')];}else if(this['isNotNull'](_0x13a347[_0x5d0f('0x7b')][_0x5d0f('0x8f')])){logger[_0x5d0f('0x2e')](_0x5d0f('0x90'),_0x13a347[_0x5d0f('0x36')],_0x13a347[_0x5d0f('0x7d')]);this[_0x5d0f('0x1c')][_0x13a347[_0x5d0f('0x36')]]['sipcalluniqueid']=_0x13a347[_0x5d0f('0x7d')];}}}else if(this[_0x5d0f('0x32')](_0x13a347['variable'][_0x5d0f('0x91')])){if(_0x13a347['value']){var _0x29fe74=path['parse'](_0x13a347[_0x5d0f('0x7d')])[_0x5d0f('0x53')];logger[_0x5d0f('0x2e')]('[%s][voiceCallReport][varset]\x20variable:mixmonitor_filename\x20value:%s',_0x29fe74,_0x13a347['value']);this['syncMixMonitorFilename'](_0x29fe74,_0x13a347['value']);}}else if(this[_0x5d0f('0x1c')][_0x13a347[_0x5d0f('0x3c')]]){if(this[_0x5d0f('0x32')](_0x13a347[_0x5d0f('0x7b')])){if(this['isNotNull'](_0x13a347[_0x5d0f('0x7b')]['sipcallid'])){logger[_0x5d0f('0x2e')]('[%s][voiceCallReport][varset]\x20variable:sipcallid\x20value:%s',_0x13a347[_0x5d0f('0x3c')],_0x13a347[_0x5d0f('0x7d')]);this[_0x5d0f('0x1c')][_0x13a347[_0x5d0f('0x3c')]][_0x5d0f('0x92')]=_0x13a347['value'];}}}}}catch(_0x51ab5b){logger[_0x5d0f('0x31')]('[%s][voiceCallReport][varset]',_0x13a347[_0x5d0f('0x36')],util[_0x5d0f('0x3b')](_0x51ab5b,{'showHidden':![],'depth':null}));}};VoiceCallReport[_0x5d0f('0x34')][_0x5d0f('0x28')]=function(_0x51c080){try{if(this['isNotNull'](_0x51c080)){logger[_0x5d0f('0x39')]('[%s][voiceCallReport][hangup]\x20event:',_0x51c080['uniqueid'],util['inspect'](_0x51c080,{'showHidden':![],'depth':null}));if(this[_0x5d0f('0x1c')][_0x51c080['uniqueid']]){logger[_0x5d0f('0x2e')]('[%s][voiceCallReport][hangup]\x20reason:%s',_0x51c080[_0x5d0f('0x36')],_0x51c080[_0x5d0f('0x93')]);var _0x503c4a=moment();this[_0x5d0f('0x1c')][_0x51c080[_0x5d0f('0x36')]]['endtime']=_0x503c4a['format'](_0x5d0f('0x5e'));this['channels'][_0x51c080[_0x5d0f('0x36')]][_0x5d0f('0x5c')]=_0x503c4a[_0x5d0f('0x94')](this[_0x5d0f('0x1c')][_0x51c080[_0x5d0f('0x36')]][_0x5d0f('0x4b')],_0x5d0f('0x5d'));if(this['channels'][_0x51c080[_0x5d0f('0x36')]][_0x5d0f('0x65')]){this[_0x5d0f('0x1c')][_0x51c080[_0x5d0f('0x36')]][_0x5d0f('0x95')]=_0x503c4a['diff'](this['channels'][_0x51c080[_0x5d0f('0x36')]][_0x5d0f('0x66')],_0x5d0f('0x5d'));this[_0x5d0f('0x1c')][_0x51c080[_0x5d0f('0x36')]][_0x5d0f('0x96')]=this[_0x5d0f('0x1c')][_0x51c080[_0x5d0f('0x36')]][_0x5d0f('0x5c')]-this[_0x5d0f('0x1c')][_0x51c080[_0x5d0f('0x36')]][_0x5d0f('0x95')];}if(_0x51c080[_0x5d0f('0x3f')]===_0x5d0f('0x50')){if(this[_0x5d0f('0x1d')][_0x51c080[_0x5d0f('0x40')][_0x5d0f('0x42')]('-')[0x0]]){this['agents'][_0x51c080[_0x5d0f('0x40')]['split']('-')[0x0]]=_[_0x5d0f('0x97')](this[_0x5d0f('0x1d')][_0x51c080[_0x5d0f('0x40')][_0x5d0f('0x42')]('-')[0x0]],[_0x5d0f('0x43')]);logger[_0x5d0f('0x39')](_0x5d0f('0x98'),_0x51c080[_0x5d0f('0x36')],util['inspect']({'id':this[_0x5d0f('0x1d')][_0x51c080[_0x5d0f('0x40')][_0x5d0f('0x42')]('-')[0x0]]['id'],'destaccountcode':this[_0x5d0f('0x1d')][_0x51c080['channel'][_0x5d0f('0x42')]('-')[0x0]][_0x5d0f('0x54')]},{'showHidden':![],'depth':null}));this[_0x5d0f('0x35')](util[_0x5d0f('0x45')](_0x5d0f('0x52'),this['agents'][_0x51c080['channel']['split']('-')[0x0]][_0x5d0f('0x53')]),_0x5d0f('0x99'),{'id':this[_0x5d0f('0x1d')][_0x51c080[_0x5d0f('0x40')][_0x5d0f('0x42')]('-')[0x0]]['id'],'destaccountcode':this[_0x5d0f('0x1d')][_0x51c080[_0x5d0f('0x40')][_0x5d0f('0x42')]('-')[0x0]]['accountcode']});}}var _0x31bb42=this;Promise[_0x5d0f('0x9a')]()[_0x5d0f('0x9b')](function(){var _0xcaedd5=_0x31bb42[_0x5d0f('0x1c')][_0x51c080['uniqueid']];if(typeof _0xcaedd5[_0x5d0f('0x9c')]===_0x5d0f('0x9d'))return;if(_['isEmpty'](_0xcaedd5[_0x5d0f('0x75')]))return;return RpcSetting[_0x5d0f('0x9e')]()[_0x5d0f('0x9b')](function(_0x2c1124){if(!_0x2c1124[_0x5d0f('0x9f')])return;return Promise[_0x5d0f('0x9a')]()[_0x5d0f('0x9b')](function(){return ami['Action']({'action':_0x5d0f('0xa0'),'channel':_0xcaedd5[_0x5d0f('0x40')]})[_0x5d0f('0xa1')](function(){});})[_0x5d0f('0x9b')](function(){return ami['Action']({'action':_0x5d0f('0xa0'),'channel':_0xcaedd5[_0x5d0f('0x68')]})['catch'](function(){})['finally'](function(){var _0x34b61f=_0x31bb42[_0x5d0f('0x1d')][_0xcaedd5[_0x5d0f('0x68')][_0x5d0f('0x42')]('-')[0x0]];if(!_0x34b61f)return;io[_0x5d0f('0x35')](_0x5d0f('0xa2'),{'agentId':_0x34b61f['id'],'uniqueid':_0xcaedd5[_0x5d0f('0x36')]});});});});})[_0x5d0f('0x9b')](function(){if(_0x51c080[_0x5d0f('0xa3')]==='BlindTransfer'){_0x31bb42[_0x5d0f('0x1e')][_0x51c080[_0x5d0f('0x36')]]=_0x31bb42[_0x5d0f('0x1c')][_0x51c080[_0x5d0f('0x36')]];}else{if(_0x31bb42[_0x5d0f('0x1c')][_0x51c080[_0x5d0f('0x36')]][_0x5d0f('0x83')]==='outbound'&&_0x31bb42['blindTransfers'][_0x51c080['uniqueid']]){_0x31bb42[_0x5d0f('0x1c')][_0x51c080[_0x5d0f('0x36')]]['uniqueid']=[_0x31bb42[_0x5d0f('0x1c')][_0x51c080[_0x5d0f('0x36')]][_0x5d0f('0x3c')],_0x31bb42[_0x5d0f('0x1c')][_0x51c080['uniqueid']][_0x5d0f('0x3c')]=_0x31bb42[_0x5d0f('0x1c')][_0x51c080[_0x5d0f('0x36')]][_0x5d0f('0x36')]][0x0];delete _0x31bb42[_0x5d0f('0x1e')][_0x51c080['uniqueid']];}}logger[_0x5d0f('0x39')](_0x5d0f('0xa4'),_0x51c080['uniqueid'],util[_0x5d0f('0x3b')](_0x31bb42[_0x5d0f('0x1c')][_0x51c080[_0x5d0f('0x36')]],{'showHidden':![],'depth':null}));ami[_0x5d0f('0x35')](_0x5d0f('0xa5'),_0x31bb42[_0x5d0f('0x1c')][_0x51c080[_0x5d0f('0x36')]]);delete _0x31bb42['channels'][_0x51c080[_0x5d0f('0x36')]];});}}}catch(_0x40a929){logger['error'](_0x5d0f('0xa6'),_0x51c080[_0x5d0f('0x36')],util[_0x5d0f('0x3b')](_0x40a929,{'showHidden':![],'depth':null}));}};VoiceCallReport[_0x5d0f('0x34')]['syncAttendedTransfer']=function(_0x5d088e){try{if(this[_0x5d0f('0x32')](_0x5d088e)){logger[_0x5d0f('0x2e')](_0x5d0f('0xa7'),_0x5d088e['uniqueid'],_0x5d088e[_0x5d0f('0xa8')],_0x5d088e[_0x5d0f('0xa9')]);logger[_0x5d0f('0x39')](_0x5d0f('0xaa'),_0x5d088e[_0x5d0f('0x36')],util[_0x5d0f('0x3b')](_0x5d088e,{'showHidden':![],'depth':null}));if(this[_0x5d0f('0x1c')][_0x5d088e[_0x5d0f('0xab')]]){this[_0x5d0f('0x1c')][_0x5d088e[_0x5d0f('0xab')]][_0x5d0f('0xac')]=_0x5d088e[_0x5d0f('0xa8')];this['channels'][_0x5d088e[_0x5d0f('0xab')]]['transferconnectedlinenum']=_0x5d088e[_0x5d0f('0xa9')];if(this[_0x5d0f('0x1c')][_0x5d088e['secondtransfereruniqueid']]){var _0x207104=this[_0x5d0f('0x1c')][_0x5d088e[_0x5d0f('0xad')]];this[_0x5d0f('0x1c')][_0x5d088e[_0x5d0f('0xad')]]=this[_0x5d0f('0x1c')][_0x5d088e[_0x5d0f('0xab')]];this['channels'][_0x5d088e[_0x5d0f('0xab')]]=_0x207104;}}else if(this[_0x5d0f('0x1c')][_0x5d088e['transfertargetuniqueid']]){this[_0x5d0f('0x1c')][_0x5d088e['transfertargetuniqueid']][_0x5d0f('0xac')]=_0x5d088e[_0x5d0f('0xa8')];this[_0x5d0f('0x1c')][_0x5d088e[_0x5d0f('0xae')]][_0x5d0f('0xaf')]=_0x5d088e[_0x5d0f('0xa9')];if(this[_0x5d0f('0x1c')][_0x5d088e[_0x5d0f('0xb0')]]){var _0x207104=this[_0x5d0f('0x1c')][_0x5d088e[_0x5d0f('0xb0')]];this[_0x5d0f('0x1c')][_0x5d088e[_0x5d0f('0xb0')]]=this[_0x5d0f('0x1c')][_0x5d088e[_0x5d0f('0xae')]];this['channels'][_0x5d088e[_0x5d0f('0xae')]]=_0x207104;}}if((this[_0x5d0f('0x1c')][_0x5d088e[_0x5d0f('0xb0')]]||this[_0x5d0f('0x1c')][_0x5d088e[_0x5d0f('0xb1')]])&&this[_0x5d0f('0x1c')][_0x5d088e['secondtransfereruniqueid']]){var _0x24ef01=_[_0x5d0f('0xb2')]([this[_0x5d0f('0x1c')][_0x5d088e[_0x5d0f('0xb0')]],this['channels'][_0x5d088e[_0x5d0f('0xb1')]],this[_0x5d0f('0x1c')][_0x5d088e[_0x5d0f('0xad')]]],function(_0x24df3f){return _0x24df3f&&_0x24df3f[_0x5d0f('0x83')]==='outbound'&&_0x24df3f[_0x5d0f('0xb3')];});if(_0x24ef01){if(this['channels'][_0x5d088e[_0x5d0f('0xb0')]])this[_0x5d0f('0x1c')][_0x5d088e[_0x5d0f('0xb0')]][_0x5d0f('0x9c')]=_0x5d0f('0xb4');if(this[_0x5d0f('0x1c')][_0x5d088e['origtransfererlinkedid']])this[_0x5d0f('0x1c')][_0x5d088e[_0x5d0f('0xb1')]][_0x5d0f('0x9c')]=_0x5d0f('0xb4');this['channels'][_0x5d088e['secondtransfereruniqueid']][_0x5d0f('0x9c')]=_0x5d0f('0xb4');}}}}catch(_0x5f3c5f){logger['error'](_0x5d0f('0xb5'),_0x5d088e[_0x5d0f('0x36')],util[_0x5d0f('0x3b')](_0x5f3c5f,{'showHidden':![],'depth':null}));}};VoiceCallReport[_0x5d0f('0x34')][_0x5d0f('0xb6')]=function(_0x20c098){try{if(this['isNotNull'](_0x20c098)){logger['info'](_0x5d0f('0xb7'),_0x20c098[_0x5d0f('0x36')],_0x20c098[_0x5d0f('0xb8')],_0x20c098['extension']);logger[_0x5d0f('0x39')]('[%s][voiceCallReport][blindtransfer]\x20event:',_0x20c098[_0x5d0f('0x36')],util[_0x5d0f('0x3b')](_0x20c098,{'showHidden':![],'depth':null}));if(this['channels'][_0x20c098['transfereeuniqueid']]){this[_0x5d0f('0x1c')][_0x20c098[_0x5d0f('0xab')]]['transfercalleridnum']=_0x20c098['transfereecalleridnum'];this[_0x5d0f('0x1c')][_0x20c098[_0x5d0f('0xab')]][_0x5d0f('0xaf')]=_0x20c098[_0x5d0f('0xb9')];this[_0x5d0f('0x1c')][_0x20c098[_0x5d0f('0xab')]][_0x5d0f('0x9c')]=_0x5d0f('0xba');this[_0x5d0f('0x28')]({'event':_0x5d0f('0xbb'),'uniqueid':_0x20c098[_0x5d0f('0xab')],'context':_0x20c098[_0x5d0f('0x3f')],'channel':_0x20c098[_0x5d0f('0xbc')]});}else{this[_0x5d0f('0x1c')][_0x20c098['transfereruniqueid']][_0x5d0f('0x9c')]=_0x5d0f('0xba');}}}catch(_0x162068){logger[_0x5d0f('0x31')]('[%s][voiceCallReport][blindtransfer]',_0x20c098[_0x5d0f('0x36')],util['inspect'](_0x162068,{'showHidden':![],'depth':null}));}};VoiceCallReport[_0x5d0f('0x34')][_0x5d0f('0xbd')]=function(_0x1f2f16){try{if(this[_0x5d0f('0x32')](_0x1f2f16)){logger['debug']('[%s][voiceCallReport][musiconholdstart]\x20event:',_0x1f2f16[_0x5d0f('0x36')],util[_0x5d0f('0x3b')](_0x1f2f16,{'showHidden':![],'depth':null}));if(this['channels'][_0x1f2f16[_0x5d0f('0x36')]]){if(!_[_0x5d0f('0x76')](this['channels'][_0x1f2f16[_0x5d0f('0x36')]]['answertime'])){this[_0x5d0f('0x1c')][_0x1f2f16[_0x5d0f('0x36')]][_0x5d0f('0xbe')]=moment()['format'](_0x5d0f('0x5e'));logger['info'](_0x5d0f('0xbf'),_0x1f2f16[_0x5d0f('0x36')],this['channels'][_0x1f2f16[_0x5d0f('0x36')]]['mohstarttime']);}}}}catch(_0xd2e2f2){logger[_0x5d0f('0x31')]('[%s][voiceCallReport][musiconholdstart]',_0x1f2f16['uniqueid'],util[_0x5d0f('0x3b')](_0xd2e2f2,{'showHidden':![],'depth':null}));}};VoiceCallReport[_0x5d0f('0x34')][_0x5d0f('0xc0')]=function(_0x36fff2){try{if(this[_0x5d0f('0x32')](_0x36fff2)){logger[_0x5d0f('0x39')](_0x5d0f('0xc1'),_0x36fff2[_0x5d0f('0x36')],util[_0x5d0f('0x3b')](_0x36fff2,{'showHidden':![],'depth':null}));if(this[_0x5d0f('0x1c')][_0x36fff2[_0x5d0f('0x36')]]){if(!_[_0x5d0f('0x76')](this[_0x5d0f('0x1c')][_0x36fff2[_0x5d0f('0x36')]][_0x5d0f('0xbe')])){this['channels'][_0x36fff2['uniqueid']][_0x5d0f('0xc2')]+=moment()['milliseconds'](0x0)[_0x5d0f('0x94')](this[_0x5d0f('0x1c')][_0x36fff2[_0x5d0f('0x36')]][_0x5d0f('0xbe')],'seconds');logger[_0x5d0f('0x2e')](_0x5d0f('0xc3'),_0x36fff2[_0x5d0f('0x36')],this['channels'][_0x36fff2[_0x5d0f('0x36')]]['mohtime']);delete this[_0x5d0f('0x1c')][_0x36fff2[_0x5d0f('0x36')]][_0x5d0f('0xbe')];}}}}catch(_0x58eb66){logger[_0x5d0f('0x31')](_0x5d0f('0xc4'),_0x36fff2[_0x5d0f('0x36')],util[_0x5d0f('0x3b')](_0x58eb66,{'showHidden':![],'depth':null}));}};module[_0x5d0f('0xc5')]=VoiceCallReport;
\ No newline at end of file
index 2506055..908d7e0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc5b8=['custom:voiceDialReport','[%s][voiceDialReport][hangup]\x20sending\x20dialend\x20event:','custom:dialend','[%s][voiceDialReport][hangup]\x20sending\x20voice_outbound:save\x20event:','voice_outbound:save','stringify','[%s][voiceDialReport][hangup]\x20sending\x20voice_outbound_channel:remove\x20event:','voice_outbound_channel:remove','linkedid','destuniqueid','toLowerCase','applicationdata','appdata','startsWith','[%s][voiceDialReport][newexten]\x20application:%s\x20appdata:%s','match','[%s][voiceDialReport][newexten]','exports','lodash','moment','util','ioredis','../../../config/environment','../../../config/logger','ami','../ami','redis','defaults','socket.io-emitter','channels','outboundChannels','outbound','variables','dialbegin','dialend','syncDialEnd','bind','varset','syncVarSet','newexten','syncNewExten','hangup','prototype','isNotNull','isUndefined','emit','syncDialBegin','debug','uniqueid','inspect','merge','format','YYYY-MM-DD\x20HH:mm:ss','called','channel','substring','lastIndexOf','omit','privilege','[%s][voiceDialReport][dialbegin]\x20agent:%s\x20interface:%s\x20lastevent:called','membername','applications','voice_outbound_channel:save','custom:dialbegin','error','[%s][voiceDialReport][dialbegin]','[%s][voiceDialReport][dialend]\x20event:','dialstatus','ANSWER','connectedlinenum','connectedlinename','connect','info','[%s][voiceDialReport][dialend]\x20agent:%s\x20lastevent:connect','[%s][voiceDialReport][dialend]\x20sending\x20dialconnect\x20event:','custom:dialconnect','[%s][voiceDialReport][dialend]','[%s][voiceDialReport][varset]\x20event:','addVariable','keys','variable','value','outboundrouteid','[%s][voiceDialReport][varset]\x20outboundrouteid:%s\x20variable:%s\x20value:%s','[%s][voiceDialReport][varset]\x20sending\x20voice_outbound_channel:save\x20event:','voice:outbound','[%s][voiceDialReport][varset]','rtpaudioqos','rtpaudioqosbridged','rtpaudioqosjitter','rtpaudioqosjitterbridged','rtpaudioqoslossbridged','sipcallid','sipuri','bridgepeer','bridgepvtcallid','memberinterface','memberlastcall','memberrealtime','isNil','includes','syncHangup','[%s][voiceDialReport][hangup]\x20event:','endtime','duration','diff','starttime','lastevent','complete','total','answertime','answered','holdtime','seconds','billableseconds','sumHoldTime','sumBillable','sumDuration','[%s][voiceDialReport][hangup]\x20sending\x20voiceDialReport\x20event:'];(function(_0x1d1779,_0x284147){var _0x2377e9=function(_0x299f6f){while(--_0x299f6f){_0x1d1779['push'](_0x1d1779['shift']());}};_0x2377e9(++_0x284147);}(_0xc5b8,0x1ee));var _0x8c5b=function(_0x5ad771,_0x34186f){_0x5ad771=_0x5ad771-0x0;var _0x5b5dce=_0xc5b8[_0x5ad771];return _0x5b5dce;};'use strict';var _=require(_0x8c5b('0x0'));var moment=require(_0x8c5b('0x1'));var util=require(_0x8c5b('0x2'));var Redis=require(_0x8c5b('0x3'));var config=require(_0x8c5b('0x4'));var logger=require(_0x8c5b('0x5'))(_0x8c5b('0x6'));var ami=require(_0x8c5b('0x7'));config[_0x8c5b('0x8')]=_[_0x8c5b('0x9')](config[_0x8c5b('0x8')],{'host':'localhost','port':0x18eb});var io=require(_0x8c5b('0xa'))(new Redis(config[_0x8c5b('0x8')]));function VoiceDialReport(_0x3f52e1){this[_0x8c5b('0xb')]=_0x3f52e1[_0x8c5b('0xc')];this[_0x8c5b('0xd')]=_0x3f52e1[_0x8c5b('0xd')];this['applications']={};this[_0x8c5b('0xe')]={};ami['on'](_0x8c5b('0xf'),this['syncDialBegin']['bind'](this));ami['on'](_0x8c5b('0x10'),this[_0x8c5b('0x11')][_0x8c5b('0x12')](this));ami['on'](_0x8c5b('0x13'),this[_0x8c5b('0x14')][_0x8c5b('0x12')](this));ami['on'](_0x8c5b('0x15'),this[_0x8c5b('0x16')]['bind'](this));ami['on'](_0x8c5b('0x17'),this['syncHangup']['bind'](this));}VoiceDialReport[_0x8c5b('0x18')][_0x8c5b('0x19')]=function(_0x5d44fb){return _0x5d44fb!==null&&!_[_0x8c5b('0x1a')](_0x5d44fb);};VoiceDialReport[_0x8c5b('0x18')]['emit']=function(_0x34ae06,_0x56e2a8,_0x2a7ad4){io['to'](_0x34ae06)[_0x8c5b('0x1b')](_0x56e2a8,_0x2a7ad4);};VoiceDialReport[_0x8c5b('0x18')][_0x8c5b('0x1c')]=function(_0x7c2fed){try{if(this['isNotNull'](_0x7c2fed)){logger[_0x8c5b('0x1d')]('[%s][voiceDialReport][dialbegin]\x20event:',_0x7c2fed[_0x8c5b('0x1e')],util[_0x8c5b('0x1f')](_0x7c2fed,{'showHidden':![],'depth':null}));if(this[_0x8c5b('0xb')][_0x7c2fed[_0x8c5b('0x1e')]]){_[_0x8c5b('0x20')](this[_0x8c5b('0xb')][_0x7c2fed[_0x8c5b('0x1e')]],{'starttime':moment()[_0x8c5b('0x21')](_0x8c5b('0x22')),'lastevent':_0x8c5b('0x23'),'interface':_0x7c2fed[_0x8c5b('0x24')][_0x8c5b('0x25')](0x0,_0x7c2fed[_0x8c5b('0x24')][_0x8c5b('0x26')]('-')),'membername':_0x7c2fed[_0x8c5b('0x24')][_0x8c5b('0x25')](_0x7c2fed[_0x8c5b('0x24')][_0x8c5b('0x26')]('/')+0x1,_0x7c2fed[_0x8c5b('0x24')][_0x8c5b('0x26')]('-'))},_[_0x8c5b('0x27')](_0x7c2fed,['event',_0x8c5b('0x28')]));logger['info'](_0x8c5b('0x29'),_0x7c2fed['uniqueid'],this[_0x8c5b('0xb')][_0x7c2fed[_0x8c5b('0x1e')]][_0x8c5b('0x2a')],this['channels'][_0x7c2fed[_0x8c5b('0x1e')]]['interface']);logger[_0x8c5b('0x1d')]('[%s][voiceDialReport][dialbegin]\x20sending\x20voice_outbound_channel:save\x20event:',_0x7c2fed[_0x8c5b('0x1e')],util[_0x8c5b('0x1f')](this['channels'][_0x7c2fed[_0x8c5b('0x1e')]],{'showHidden':![],'depth':null}));if(this[_0x8c5b('0x2b')][_0x7c2fed['uniqueid']])_['merge'](this['channels'][_0x7c2fed[_0x8c5b('0x1e')]],this['applications'][_0x7c2fed[_0x8c5b('0x1e')]]);this['emit']('voice:outbound',_0x8c5b('0x2c'),this[_0x8c5b('0xb')][_0x7c2fed[_0x8c5b('0x1e')]]);logger[_0x8c5b('0x1d')]('[%s][voiceDialReport][dialbegin]\x20sending\x20dialbegin\x20event:',_0x7c2fed[_0x8c5b('0x1e')],util[_0x8c5b('0x1f')](this['channels'][_0x7c2fed[_0x8c5b('0x1e')]],{'showHidden':![],'depth':null}));ami[_0x8c5b('0x1b')](_0x8c5b('0x2d'),this[_0x8c5b('0xb')][_0x7c2fed[_0x8c5b('0x1e')]]);}}}catch(_0x4418a8){logger[_0x8c5b('0x2e')](_0x8c5b('0x2f'),_0x7c2fed[_0x8c5b('0x1e')],util['inspect'](_0x4418a8,{'showHidden':![],'depth':null}));}};VoiceDialReport[_0x8c5b('0x18')][_0x8c5b('0x11')]=function(_0x2398f1){try{if(this[_0x8c5b('0x19')](_0x2398f1)){logger['debug'](_0x8c5b('0x30'),_0x2398f1[_0x8c5b('0x1e')],util['inspect'](_0x2398f1,{'showHidden':![],'depth':null}));if(this[_0x8c5b('0xb')][_0x2398f1[_0x8c5b('0x1e')]]){this['channels'][_0x2398f1[_0x8c5b('0x1e')]]['dialstatus']=_0x2398f1['dialstatus'];if(_0x2398f1[_0x8c5b('0x31')]===_0x8c5b('0x32')){this['channels'][_0x2398f1[_0x8c5b('0x1e')]]['connectedlinenum']=_0x2398f1[_0x8c5b('0x33')];this[_0x8c5b('0xb')][_0x2398f1[_0x8c5b('0x1e')]][_0x8c5b('0x34')]=_0x2398f1['connectedlinename'];this[_0x8c5b('0xb')][_0x2398f1[_0x8c5b('0x1e')]]['answertime']=moment()[_0x8c5b('0x21')](_0x8c5b('0x22'));this[_0x8c5b('0xb')][_0x2398f1[_0x8c5b('0x1e')]]['lastevent']=_0x8c5b('0x35');logger[_0x8c5b('0x36')](_0x8c5b('0x37'),_0x2398f1['uniqueid'],_0x2398f1[_0x8c5b('0x24')][_0x8c5b('0x25')](_0x2398f1['channel'][_0x8c5b('0x26')]('/')+0x1,_0x2398f1['channel'][_0x8c5b('0x26')]('-')));logger[_0x8c5b('0x1d')](_0x8c5b('0x38'),_0x2398f1[_0x8c5b('0x1e')],util[_0x8c5b('0x1f')](this['channels'][_0x2398f1[_0x8c5b('0x1e')]],{'showHidden':![],'depth':null}));ami[_0x8c5b('0x1b')](_0x8c5b('0x39'),this[_0x8c5b('0xb')][_0x2398f1[_0x8c5b('0x1e')]]);}logger[_0x8c5b('0x1d')]('[%s][voiceDialReport][dialend]\x20sending\x20voice_outbound_channel:save\x20event:',_0x2398f1[_0x8c5b('0x1e')],util['inspect'](this[_0x8c5b('0xb')][_0x2398f1[_0x8c5b('0x1e')]],{'showHidden':![],'depth':null}));this[_0x8c5b('0x1b')]('voice:outbound','voice_outbound_channel:save',this['channels'][_0x2398f1[_0x8c5b('0x1e')]]);}}}catch(_0x20d17d){logger[_0x8c5b('0x2e')](_0x8c5b('0x3a'),_0x2398f1[_0x8c5b('0x1e')],util['inspect'](_0x20d17d,{'showHidden':![],'depth':null}));}};VoiceDialReport[_0x8c5b('0x18')][_0x8c5b('0x14')]=function(_0x847d41){try{if(this['isNotNull'](_0x847d41)){logger['debug'](_0x8c5b('0x3b'),_0x847d41['uniqueid'],util[_0x8c5b('0x1f')](_0x847d41,{'showHidden':![],'depth':null}));this[_0x8c5b('0x3c')](_0x847d41[_0x8c5b('0x1e')],_[_0x8c5b('0x3d')](_0x847d41[_0x8c5b('0x3e')])[0x0],_0x847d41[_0x8c5b('0x3f')]);if(this[_0x8c5b('0x19')](_0x847d41[_0x8c5b('0x3e')])&&this[_0x8c5b('0x19')](_0x847d41[_0x8c5b('0x3e')][_0x8c5b('0x40')])){if(_[_0x8c5b('0x1a')](this[_0x8c5b('0xb')][_0x847d41[_0x8c5b('0x1e')]])){this['channels'][_0x847d41[_0x8c5b('0x1e')]]={'routeId':_0x847d41[_0x8c5b('0x3f')],'variables':this[_0x8c5b('0xe')][_0x847d41[_0x8c5b('0x1e')]],'motionChannel':'voice'};logger[_0x8c5b('0x36')](_0x8c5b('0x41'),_0x847d41[_0x8c5b('0x1e')],_0x847d41[_0x8c5b('0x3e')][_0x8c5b('0x40')],_[_0x8c5b('0x3d')](_0x847d41[_0x8c5b('0x3e')])[0x0],_0x847d41[_0x8c5b('0x3f')]);logger['debug'](_0x8c5b('0x42'),_0x847d41[_0x8c5b('0x1e')],util[_0x8c5b('0x1f')](this['channels'][_0x847d41['uniqueid']],{'showHidden':![],'depth':null}));this[_0x8c5b('0x1b')](_0x8c5b('0x43'),_0x8c5b('0x2c'),this[_0x8c5b('0xb')][_0x847d41[_0x8c5b('0x1e')]]);}}}}catch(_0x51edf9){logger[_0x8c5b('0x2e')](_0x8c5b('0x44'),_0x847d41[_0x8c5b('0x1e')],util[_0x8c5b('0x1f')](_0x51edf9,{'showHidden':![],'depth':null}));}};VoiceDialReport[_0x8c5b('0x18')][_0x8c5b('0x3c')]=function(_0x3ac6ef,_0x5b1996,_0x7af06b){var _0x1a5657=[_0x8c5b('0x45'),_0x8c5b('0x46'),_0x8c5b('0x47'),_0x8c5b('0x48'),'rtpaudioqosloss',_0x8c5b('0x49'),'rtpaudioqosrtt','rtpaudioqosrttbridged',_0x8c5b('0x4a'),_0x8c5b('0x4b'),_0x8c5b('0x4c'),_0x8c5b('0x4d'),'membercalls','memberdynamic',_0x8c5b('0x4e'),_0x8c5b('0x4f'),_0x8c5b('0x2a'),'memberpenalty',_0x8c5b('0x50')];if(!_[_0x8c5b('0x51')](_0x5b1996)&&!_[_0x8c5b('0x52')](_0x1a5657,_0x5b1996)){if(_[_0x8c5b('0x1a')](this[_0x8c5b('0xe')][_0x3ac6ef])){this[_0x8c5b('0xe')][_0x3ac6ef]={};}this['variables'][_0x3ac6ef][_0x5b1996]=_0x7af06b;}};VoiceDialReport[_0x8c5b('0x18')][_0x8c5b('0x53')]=function(_0x434758){try{if(this[_0x8c5b('0x19')](_0x434758)){logger[_0x8c5b('0x1d')](_0x8c5b('0x54'),_0x434758[_0x8c5b('0x1e')],util['inspect'](_0x434758,{'showHidden':![],'depth':null}));if(this[_0x8c5b('0xb')][_0x434758['uniqueid']]){logger[_0x8c5b('0x36')]('[%s][voiceDialReport][hangup]\x20reason:%s\x20lasteevent:complete',_0x434758[_0x8c5b('0x1e')],_0x434758['cause-txt']);this['channels'][_0x434758[_0x8c5b('0x1e')]][_0x8c5b('0x55')]=moment()[_0x8c5b('0x21')](_0x8c5b('0x22'));this[_0x8c5b('0xb')][_0x434758[_0x8c5b('0x1e')]][_0x8c5b('0x56')]=moment(this['channels'][_0x434758['uniqueid']]['endtime'])[_0x8c5b('0x57')](this[_0x8c5b('0xb')][_0x434758['uniqueid']][_0x8c5b('0x58')],'seconds');this[_0x8c5b('0xb')][_0x434758['uniqueid']][_0x8c5b('0x59')]=_0x8c5b('0x5a');this[_0x8c5b('0xd')][_0x8c5b('0x5b')]+=0x1;if(this['channels'][_0x434758['uniqueid']][_0x8c5b('0x5c')]){this[_0x8c5b('0xd')][_0x8c5b('0x5d')]+=0x1;this[_0x8c5b('0xb')][_0x434758[_0x8c5b('0x1e')]][_0x8c5b('0x5e')]=moment(this[_0x8c5b('0xb')][_0x434758['uniqueid']][_0x8c5b('0x5c')])['diff'](this[_0x8c5b('0xb')][_0x434758[_0x8c5b('0x1e')]]['starttime'],_0x8c5b('0x5f'));this[_0x8c5b('0xb')][_0x434758[_0x8c5b('0x1e')]][_0x8c5b('0x60')]=moment(this[_0x8c5b('0xb')][_0x434758[_0x8c5b('0x1e')]][_0x8c5b('0x55')])['diff'](this[_0x8c5b('0xb')][_0x434758['uniqueid']][_0x8c5b('0x5c')],_0x8c5b('0x5f'));this[_0x8c5b('0xd')][_0x8c5b('0x61')]+=this[_0x8c5b('0xb')][_0x434758['uniqueid']]['holdtime']||0x0;this['outbound'][_0x8c5b('0x62')]+=this[_0x8c5b('0xb')][_0x434758['uniqueid']][_0x8c5b('0x60')];}this[_0x8c5b('0xd')][_0x8c5b('0x63')]+=this[_0x8c5b('0xb')][_0x434758[_0x8c5b('0x1e')]][_0x8c5b('0x56')];logger[_0x8c5b('0x1d')](_0x8c5b('0x64'),_0x434758[_0x8c5b('0x1e')],util[_0x8c5b('0x1f')](this[_0x8c5b('0xb')][_0x434758[_0x8c5b('0x1e')]],{'showHidden':![],'depth':null}));ami[_0x8c5b('0x1b')](_0x8c5b('0x65'),this[_0x8c5b('0xb')][_0x434758[_0x8c5b('0x1e')]]);logger[_0x8c5b('0x1d')](_0x8c5b('0x66'),_0x434758[_0x8c5b('0x1e')],util[_0x8c5b('0x1f')](this[_0x8c5b('0xb')][_0x434758['uniqueid']],{'showHidden':![],'depth':null}));ami['emit'](_0x8c5b('0x67'),this[_0x8c5b('0xb')][_0x434758[_0x8c5b('0x1e')]]);logger[_0x8c5b('0x1d')](_0x8c5b('0x68'),_0x434758['uniqueid'],util[_0x8c5b('0x1f')](this['channels'][_0x434758[_0x8c5b('0x1e')]],{'showHidden':![],'depth':null}));this[_0x8c5b('0x1b')](_0x8c5b('0x43'),_0x8c5b('0x69'),this[_0x8c5b('0xd')]);logger[_0x8c5b('0x36')]('[DEBUG]\x20Emit\x20voice_outbound_channel:remove\x20event',JSON[_0x8c5b('0x6a')](this[_0x8c5b('0xb')][_0x434758[_0x8c5b('0x1e')]]));logger[_0x8c5b('0x1d')](_0x8c5b('0x6b'),_0x434758[_0x8c5b('0x1e')],util['inspect'](this['channels'][_0x434758['uniqueid']],{'showHidden':![],'depth':null}));this[_0x8c5b('0x1b')](_0x8c5b('0x43'),_0x8c5b('0x6c'),this[_0x8c5b('0xb')][_0x434758[_0x8c5b('0x1e')]]);delete this[_0x8c5b('0xb')][_0x434758[_0x8c5b('0x1e')]];}else if(this[_0x8c5b('0xb')][_0x434758[_0x8c5b('0x6d')]]){this[_0x8c5b('0xb')][_0x434758[_0x8c5b('0x6d')]][_0x8c5b('0x1e')]=this[_0x8c5b('0xb')][_0x434758[_0x8c5b('0x6d')]][_0x8c5b('0x6e')];}if(this[_0x8c5b('0xe')][_0x434758[_0x8c5b('0x1e')]]){delete this['variables'][_0x434758[_0x8c5b('0x1e')]];}}}catch(_0xca0cbb){logger[_0x8c5b('0x2e')]('[%s][voiceDialReport][hangup]',_0x434758['uniqueid'],util[_0x8c5b('0x1f')](_0xca0cbb,{'showHidden':![],'depth':null}));}};VoiceDialReport['prototype'][_0x8c5b('0x16')]=function(_0x33e44e){try{if(this['isNotNull'](_0x33e44e)){logger[_0x8c5b('0x1d')]('[%s][voiceDialReport][newexten]\x20event:',_0x33e44e[_0x8c5b('0x1e')],util[_0x8c5b('0x1f')](_0x33e44e,{'showHidden':![],'depth':null}));if(_0x33e44e['application'][_0x8c5b('0x6f')]()==='set'){_0x33e44e[_0x8c5b('0x70')]=(_0x33e44e[_0x8c5b('0x71')]||_0x33e44e['applicationdata'])['toLowerCase']();if(_[_0x8c5b('0x72')](_0x33e44e[_0x8c5b('0x70')],'cdr(')){if(_['isUndefined'](this[_0x8c5b('0x2b')][_0x33e44e[_0x8c5b('0x1e')]]))this[_0x8c5b('0x2b')][_0x33e44e[_0x8c5b('0x1e')]]={};logger[_0x8c5b('0x36')](_0x8c5b('0x73'),_0x33e44e['uniqueid'],_0x33e44e['application'],_0x33e44e[_0x8c5b('0x70')]);var _0x1bcf5d=_0x33e44e[_0x8c5b('0x70')]['split']('=');var _0x36ca21=_0x1bcf5d[0x0][_0x8c5b('0x74')](/cdr\((.*)\)/);if(_0x36ca21)this[_0x8c5b('0x2b')][_0x33e44e[_0x8c5b('0x1e')]][_0x36ca21[0x1]]=_0x1bcf5d[0x1];}}}}catch(_0x7306c){logger[_0x8c5b('0x2e')](_0x8c5b('0x75'),_0x33e44e[_0x8c5b('0x1e')],util['inspect'](_0x7306c,{'showHidden':![],'depth':null}));}};module[_0x8c5b('0x76')]=VoiceDialReport;
\ No newline at end of file
+var _0xc11e=['localhost','channels','outboundChannels','outbound','applications','variables','dialbegin','syncDialBegin','bind','dialend','syncDialEnd','varset','syncVarSet','newexten','syncHangup','prototype','isNotNull','isUndefined','emit','debug','[%s][voiceDialReport][dialbegin]\x20event:','uniqueid','inspect','merge','format','YYYY-MM-DD\x20HH:mm:ss','called','channel','lastIndexOf','event','privilege','info','[%s][voiceDialReport][dialbegin]\x20agent:%s\x20interface:%s\x20lastevent:called','interface','[%s][voiceDialReport][dialbegin]\x20sending\x20voice_outbound_channel:save\x20event:','voice:outbound','[%s][voiceDialReport][dialbegin]\x20sending\x20dialbegin\x20event:','custom:dialbegin','error','[%s][voiceDialReport][dialbegin]','[%s][voiceDialReport][dialend]\x20event:','dialstatus','ANSWER','connectedlinenum','connectedlinename','answertime','lastevent','connect','substring','[%s][voiceDialReport][dialend]\x20sending\x20dialconnect\x20event:','custom:dialconnect','[%s][voiceDialReport][dialend]\x20sending\x20voice_outbound_channel:save\x20event:','[%s][voiceDialReport][dialend]','[%s][voiceDialReport][varset]\x20event:','addVariable','variable','value','outboundrouteid','[%s][voiceDialReport][varset]\x20outboundrouteid:%s\x20variable:%s\x20value:%s','keys','voice_outbound_channel:save','[%s][voiceDialReport][varset]','rtpaudioqosbridged','rtpaudioqosjitter','rtpaudioqosloss','rtpaudioqoslossbridged','sipcallid','sipuri','bridgepeer','memberdynamic','memberinterface','memberlastcall','membername','memberpenalty','memberrealtime','isNil','cause-txt','endtime','diff','starttime','seconds','complete','answered','holdtime','billableseconds','sumHoldTime','sumBillable','custom:voiceDialReport','[%s][voiceDialReport][hangup]\x20sending\x20dialend\x20event:','[%s][voiceDialReport][hangup]\x20sending\x20voice_outbound:save\x20event:','voice_outbound:save','stringify','voice_outbound_channel:remove','linkedid','[%s][voiceDialReport][hangup]','syncNewExten','application','set','applicationdata','appdata','toLowerCase','startsWith','cdr(','[%s][voiceDialReport][newexten]\x20application:%s\x20appdata:%s','match','[%s][voiceDialReport][newexten]','exports','lodash','moment','util','../../../config/environment','../../../config/logger','ami','../ami','redis','defaults'];(function(_0x361843,_0x5eb2e5){var _0x1dbbba=function(_0x31e33d){while(--_0x31e33d){_0x361843['push'](_0x361843['shift']());}};_0x1dbbba(++_0x5eb2e5);}(_0xc11e,0x6b));var _0xec11=function(_0x3195f8,_0x3aeeba){_0x3195f8=_0x3195f8-0x0;var _0x54cd9f=_0xc11e[_0x3195f8];return _0x54cd9f;};'use strict';var _=require(_0xec11('0x0'));var moment=require(_0xec11('0x1'));var util=require(_0xec11('0x2'));var Redis=require('ioredis');var config=require(_0xec11('0x3'));var logger=require(_0xec11('0x4'))(_0xec11('0x5'));var ami=require(_0xec11('0x6'));config[_0xec11('0x7')]=_[_0xec11('0x8')](config[_0xec11('0x7')],{'host':_0xec11('0x9'),'port':0x18eb});var io=require('socket.io-emitter')(new Redis(config[_0xec11('0x7')]));function VoiceDialReport(_0x51f5f0){this[_0xec11('0xa')]=_0x51f5f0[_0xec11('0xb')];this[_0xec11('0xc')]=_0x51f5f0['outbound'];this[_0xec11('0xd')]={};this[_0xec11('0xe')]={};ami['on'](_0xec11('0xf'),this[_0xec11('0x10')][_0xec11('0x11')](this));ami['on'](_0xec11('0x12'),this[_0xec11('0x13')][_0xec11('0x11')](this));ami['on'](_0xec11('0x14'),this[_0xec11('0x15')][_0xec11('0x11')](this));ami['on'](_0xec11('0x16'),this['syncNewExten']['bind'](this));ami['on']('hangup',this[_0xec11('0x17')][_0xec11('0x11')](this));}VoiceDialReport[_0xec11('0x18')][_0xec11('0x19')]=function(_0x5affcf){return _0x5affcf!==null&&!_[_0xec11('0x1a')](_0x5affcf);};VoiceDialReport[_0xec11('0x18')]['emit']=function(_0x177814,_0x144b4b,_0x4a8cde){io['to'](_0x177814)[_0xec11('0x1b')](_0x144b4b,_0x4a8cde);};VoiceDialReport[_0xec11('0x18')][_0xec11('0x10')]=function(_0x2901cb){try{if(this['isNotNull'](_0x2901cb)){logger[_0xec11('0x1c')](_0xec11('0x1d'),_0x2901cb[_0xec11('0x1e')],util[_0xec11('0x1f')](_0x2901cb,{'showHidden':![],'depth':null}));if(this[_0xec11('0xa')][_0x2901cb['uniqueid']]){_[_0xec11('0x20')](this[_0xec11('0xa')][_0x2901cb[_0xec11('0x1e')]],{'starttime':moment()[_0xec11('0x21')](_0xec11('0x22')),'lastevent':_0xec11('0x23'),'interface':_0x2901cb['channel']['substring'](0x0,_0x2901cb[_0xec11('0x24')]['lastIndexOf']('-')),'membername':_0x2901cb[_0xec11('0x24')]['substring'](_0x2901cb[_0xec11('0x24')][_0xec11('0x25')]('/')+0x1,_0x2901cb['channel'][_0xec11('0x25')]('-'))},_['omit'](_0x2901cb,[_0xec11('0x26'),_0xec11('0x27')]));logger[_0xec11('0x28')](_0xec11('0x29'),_0x2901cb[_0xec11('0x1e')],this[_0xec11('0xa')][_0x2901cb[_0xec11('0x1e')]]['membername'],this[_0xec11('0xa')][_0x2901cb[_0xec11('0x1e')]][_0xec11('0x2a')]);logger[_0xec11('0x1c')](_0xec11('0x2b'),_0x2901cb[_0xec11('0x1e')],util['inspect'](this['channels'][_0x2901cb['uniqueid']],{'showHidden':![],'depth':null}));if(this[_0xec11('0xd')][_0x2901cb[_0xec11('0x1e')]])_[_0xec11('0x20')](this[_0xec11('0xa')][_0x2901cb[_0xec11('0x1e')]],this[_0xec11('0xd')][_0x2901cb[_0xec11('0x1e')]]);this[_0xec11('0x1b')](_0xec11('0x2c'),'voice_outbound_channel:save',this[_0xec11('0xa')][_0x2901cb[_0xec11('0x1e')]]);logger['debug'](_0xec11('0x2d'),_0x2901cb[_0xec11('0x1e')],util[_0xec11('0x1f')](this[_0xec11('0xa')][_0x2901cb[_0xec11('0x1e')]],{'showHidden':![],'depth':null}));ami[_0xec11('0x1b')](_0xec11('0x2e'),this['channels'][_0x2901cb['uniqueid']]);}}}catch(_0x3f7fef){logger[_0xec11('0x2f')](_0xec11('0x30'),_0x2901cb['uniqueid'],util[_0xec11('0x1f')](_0x3f7fef,{'showHidden':![],'depth':null}));}};VoiceDialReport['prototype'][_0xec11('0x13')]=function(_0x1da47c){try{if(this[_0xec11('0x19')](_0x1da47c)){logger[_0xec11('0x1c')](_0xec11('0x31'),_0x1da47c[_0xec11('0x1e')],util[_0xec11('0x1f')](_0x1da47c,{'showHidden':![],'depth':null}));if(this[_0xec11('0xa')][_0x1da47c['uniqueid']]){this[_0xec11('0xa')][_0x1da47c[_0xec11('0x1e')]][_0xec11('0x32')]=_0x1da47c['dialstatus'];if(_0x1da47c['dialstatus']===_0xec11('0x33')){this[_0xec11('0xa')][_0x1da47c[_0xec11('0x1e')]][_0xec11('0x34')]=_0x1da47c[_0xec11('0x34')];this[_0xec11('0xa')][_0x1da47c[_0xec11('0x1e')]][_0xec11('0x35')]=_0x1da47c[_0xec11('0x35')];this[_0xec11('0xa')][_0x1da47c[_0xec11('0x1e')]][_0xec11('0x36')]=moment()[_0xec11('0x21')](_0xec11('0x22'));this[_0xec11('0xa')][_0x1da47c[_0xec11('0x1e')]][_0xec11('0x37')]=_0xec11('0x38');logger[_0xec11('0x28')]('[%s][voiceDialReport][dialend]\x20agent:%s\x20lastevent:connect',_0x1da47c[_0xec11('0x1e')],_0x1da47c[_0xec11('0x24')][_0xec11('0x39')](_0x1da47c[_0xec11('0x24')][_0xec11('0x25')]('/')+0x1,_0x1da47c['channel'][_0xec11('0x25')]('-')));logger[_0xec11('0x1c')](_0xec11('0x3a'),_0x1da47c[_0xec11('0x1e')],util[_0xec11('0x1f')](this['channels'][_0x1da47c[_0xec11('0x1e')]],{'showHidden':![],'depth':null}));ami['emit'](_0xec11('0x3b'),this['channels'][_0x1da47c[_0xec11('0x1e')]]);}logger['debug'](_0xec11('0x3c'),_0x1da47c[_0xec11('0x1e')],util['inspect'](this[_0xec11('0xa')][_0x1da47c['uniqueid']],{'showHidden':![],'depth':null}));this[_0xec11('0x1b')](_0xec11('0x2c'),'voice_outbound_channel:save',this['channels'][_0x1da47c['uniqueid']]);}}}catch(_0x3f6cfd){logger['error'](_0xec11('0x3d'),_0x1da47c[_0xec11('0x1e')],util[_0xec11('0x1f')](_0x3f6cfd,{'showHidden':![],'depth':null}));}};VoiceDialReport[_0xec11('0x18')]['syncVarSet']=function(_0x2cf5fe){try{if(this[_0xec11('0x19')](_0x2cf5fe)){logger[_0xec11('0x1c')](_0xec11('0x3e'),_0x2cf5fe[_0xec11('0x1e')],util['inspect'](_0x2cf5fe,{'showHidden':![],'depth':null}));this[_0xec11('0x3f')](_0x2cf5fe[_0xec11('0x1e')],_['keys'](_0x2cf5fe[_0xec11('0x40')])[0x0],_0x2cf5fe[_0xec11('0x41')]);if(this[_0xec11('0x19')](_0x2cf5fe['variable'])&&this[_0xec11('0x19')](_0x2cf5fe[_0xec11('0x40')][_0xec11('0x42')])){if(_[_0xec11('0x1a')](this[_0xec11('0xa')][_0x2cf5fe['uniqueid']])){this[_0xec11('0xa')][_0x2cf5fe[_0xec11('0x1e')]]={'routeId':_0x2cf5fe[_0xec11('0x41')],'variables':this[_0xec11('0xe')][_0x2cf5fe['uniqueid']]};logger[_0xec11('0x28')](_0xec11('0x43'),_0x2cf5fe[_0xec11('0x1e')],_0x2cf5fe[_0xec11('0x40')]['outboundrouteid'],_[_0xec11('0x44')](_0x2cf5fe[_0xec11('0x40')])[0x0],_0x2cf5fe[_0xec11('0x41')]);logger['debug']('[%s][voiceDialReport][varset]\x20sending\x20voice_outbound_channel:save\x20event:',_0x2cf5fe[_0xec11('0x1e')],util[_0xec11('0x1f')](this[_0xec11('0xa')][_0x2cf5fe[_0xec11('0x1e')]],{'showHidden':![],'depth':null}));this[_0xec11('0x1b')](_0xec11('0x2c'),_0xec11('0x45'),this[_0xec11('0xa')][_0x2cf5fe[_0xec11('0x1e')]]);}}}}catch(_0x150beb){logger['error'](_0xec11('0x46'),_0x2cf5fe[_0xec11('0x1e')],util['inspect'](_0x150beb,{'showHidden':![],'depth':null}));}};VoiceDialReport[_0xec11('0x18')][_0xec11('0x3f')]=function(_0x1476cd,_0x2a2782,_0x4bba3b){var _0x26bd4c=['rtpaudioqos',_0xec11('0x47'),_0xec11('0x48'),'rtpaudioqosjitterbridged',_0xec11('0x49'),_0xec11('0x4a'),'rtpaudioqosrtt','rtpaudioqosrttbridged',_0xec11('0x4b'),_0xec11('0x4c'),_0xec11('0x4d'),'bridgepvtcallid','membercalls',_0xec11('0x4e'),_0xec11('0x4f'),_0xec11('0x50'),_0xec11('0x51'),_0xec11('0x52'),_0xec11('0x53')];if(!_[_0xec11('0x54')](_0x2a2782)&&!_['includes'](_0x26bd4c,_0x2a2782)){if(_[_0xec11('0x1a')](this[_0xec11('0xe')][_0x1476cd])){this['variables'][_0x1476cd]={};}this[_0xec11('0xe')][_0x1476cd][_0x2a2782]=_0x4bba3b;}};VoiceDialReport[_0xec11('0x18')]['syncHangup']=function(_0x3eb6be){try{if(this[_0xec11('0x19')](_0x3eb6be)){logger[_0xec11('0x1c')]('[%s][voiceDialReport][hangup]\x20event:',_0x3eb6be[_0xec11('0x1e')],util[_0xec11('0x1f')](_0x3eb6be,{'showHidden':![],'depth':null}));if(this[_0xec11('0xa')][_0x3eb6be[_0xec11('0x1e')]]){logger[_0xec11('0x28')]('[%s][voiceDialReport][hangup]\x20reason:%s\x20lasteevent:complete',_0x3eb6be['uniqueid'],_0x3eb6be[_0xec11('0x55')]);this[_0xec11('0xa')][_0x3eb6be[_0xec11('0x1e')]][_0xec11('0x56')]=moment()[_0xec11('0x21')](_0xec11('0x22'));this[_0xec11('0xa')][_0x3eb6be[_0xec11('0x1e')]]['duration']=moment(this[_0xec11('0xa')][_0x3eb6be[_0xec11('0x1e')]][_0xec11('0x56')])[_0xec11('0x57')](this[_0xec11('0xa')][_0x3eb6be[_0xec11('0x1e')]][_0xec11('0x58')],_0xec11('0x59'));this[_0xec11('0xa')][_0x3eb6be[_0xec11('0x1e')]][_0xec11('0x37')]=_0xec11('0x5a');this[_0xec11('0xc')]['total']+=0x1;if(this['channels'][_0x3eb6be[_0xec11('0x1e')]][_0xec11('0x36')]){this['outbound'][_0xec11('0x5b')]+=0x1;this[_0xec11('0xa')][_0x3eb6be[_0xec11('0x1e')]][_0xec11('0x5c')]=moment(this[_0xec11('0xa')][_0x3eb6be['uniqueid']]['answertime'])[_0xec11('0x57')](this[_0xec11('0xa')][_0x3eb6be[_0xec11('0x1e')]][_0xec11('0x58')],_0xec11('0x59'));this[_0xec11('0xa')][_0x3eb6be[_0xec11('0x1e')]][_0xec11('0x5d')]=moment(this[_0xec11('0xa')][_0x3eb6be['uniqueid']]['endtime'])[_0xec11('0x57')](this[_0xec11('0xa')][_0x3eb6be['uniqueid']][_0xec11('0x36')],_0xec11('0x59'));this[_0xec11('0xc')][_0xec11('0x5e')]+=this[_0xec11('0xa')][_0x3eb6be['uniqueid']][_0xec11('0x5c')]||0x0;this[_0xec11('0xc')][_0xec11('0x5f')]+=this[_0xec11('0xa')][_0x3eb6be[_0xec11('0x1e')]][_0xec11('0x5d')];}this[_0xec11('0xc')]['sumDuration']+=this[_0xec11('0xa')][_0x3eb6be['uniqueid']]['duration'];logger[_0xec11('0x1c')]('[%s][voiceDialReport][hangup]\x20sending\x20voiceDialReport\x20event:',_0x3eb6be['uniqueid'],util['inspect'](this[_0xec11('0xa')][_0x3eb6be['uniqueid']],{'showHidden':![],'depth':null}));ami[_0xec11('0x1b')](_0xec11('0x60'),this[_0xec11('0xa')][_0x3eb6be['uniqueid']]);logger[_0xec11('0x1c')](_0xec11('0x61'),_0x3eb6be['uniqueid'],util['inspect'](this[_0xec11('0xa')][_0x3eb6be[_0xec11('0x1e')]],{'showHidden':![],'depth':null}));ami[_0xec11('0x1b')]('custom:dialend',this[_0xec11('0xa')][_0x3eb6be['uniqueid']]);logger[_0xec11('0x1c')](_0xec11('0x62'),_0x3eb6be[_0xec11('0x1e')],util[_0xec11('0x1f')](this[_0xec11('0xa')][_0x3eb6be[_0xec11('0x1e')]],{'showHidden':![],'depth':null}));this['emit'](_0xec11('0x2c'),_0xec11('0x63'),this[_0xec11('0xc')]);logger[_0xec11('0x28')]('[DEBUG]\x20Emit\x20voice_outbound_channel:remove\x20event',JSON[_0xec11('0x64')](this[_0xec11('0xa')][_0x3eb6be['uniqueid']]));logger[_0xec11('0x1c')]('[%s][voiceDialReport][hangup]\x20sending\x20voice_outbound_channel:remove\x20event:',_0x3eb6be['uniqueid'],util['inspect'](this[_0xec11('0xa')][_0x3eb6be[_0xec11('0x1e')]],{'showHidden':![],'depth':null}));this[_0xec11('0x1b')](_0xec11('0x2c'),_0xec11('0x65'),this[_0xec11('0xa')][_0x3eb6be[_0xec11('0x1e')]]);delete this[_0xec11('0xa')][_0x3eb6be['uniqueid']];}else if(this[_0xec11('0xa')][_0x3eb6be[_0xec11('0x66')]]){this[_0xec11('0xa')][_0x3eb6be['linkedid']][_0xec11('0x1e')]=this['channels'][_0x3eb6be[_0xec11('0x66')]]['destuniqueid'];}if(this[_0xec11('0xe')][_0x3eb6be[_0xec11('0x1e')]]){delete this['variables'][_0x3eb6be[_0xec11('0x1e')]];}}}catch(_0x286c7d){logger['error'](_0xec11('0x67'),_0x3eb6be['uniqueid'],util[_0xec11('0x1f')](_0x286c7d,{'showHidden':![],'depth':null}));}};VoiceDialReport[_0xec11('0x18')][_0xec11('0x68')]=function(_0xf230dc){try{if(this['isNotNull'](_0xf230dc)){logger['debug']('[%s][voiceDialReport][newexten]\x20event:',_0xf230dc['uniqueid'],util[_0xec11('0x1f')](_0xf230dc,{'showHidden':![],'depth':null}));if(_0xf230dc[_0xec11('0x69')]['toLowerCase']()===_0xec11('0x6a')){_0xf230dc[_0xec11('0x6b')]=(_0xf230dc[_0xec11('0x6c')]||_0xf230dc[_0xec11('0x6b')])[_0xec11('0x6d')]();if(_[_0xec11('0x6e')](_0xf230dc[_0xec11('0x6b')],_0xec11('0x6f'))){if(_[_0xec11('0x1a')](this[_0xec11('0xd')][_0xf230dc[_0xec11('0x1e')]]))this['applications'][_0xf230dc[_0xec11('0x1e')]]={};logger[_0xec11('0x28')](_0xec11('0x70'),_0xf230dc[_0xec11('0x1e')],_0xf230dc[_0xec11('0x69')],_0xf230dc[_0xec11('0x6b')]);var _0x27e203=_0xf230dc[_0xec11('0x6b')]['split']('=');var _0x4e7d65=_0x27e203[0x0][_0xec11('0x71')](/cdr\((.*)\)/);if(_0x4e7d65)this[_0xec11('0xd')][_0xf230dc[_0xec11('0x1e')]][_0x4e7d65[0x1]]=_0x27e203[0x1];}}}}catch(_0x1c1c4d){logger['error'](_0xec11('0x72'),_0xf230dc[_0xec11('0x1e')],util[_0xec11('0x1f')](_0x1c1c4d,{'showHidden':![],'depth':null}));}};module[_0xec11('0x73')]=VoiceDialReport;
\ No newline at end of file
index 2eb952b..e311ca3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x76bc=['custom:queuesummary','[voiceQueueReport][queuesummary]','[%s][voiceQueueReport][queuecallerjoin]','uniqueid','inbound','queuecallerjoinAt','position','count','routealias','[voiceQueueReport][queuecallerjoin]\x20name:%s\x20type:%s','merge','pick','keys','last','queuecallercomplete','queuecallercompleteAt','holdtime','originalposition','queuecallerabandon','queuecallerabandonAt','YYYY-MM-DD\x20HH:mm:ss','queuecallerexitreason','[voiceQueueReport][queuecallerabandon]\x20name:%s\x20type:%s','[%s][voiceQueueReport][queuecallerabandon]','syncQueueCallerLeave','connectedlinenum','connectedlinename','[voiceQueueReport][queuecallerleave]\x20name:%s\x20type:%s\x20connectedlinenum:%s\x20connectedlinename:%s','[%s][voiceQueueReport][queuecallerleave]','[%s][voiceQueueReport][agentconnect]','COMPLETEDBYAGENT','[voiceQueueReport][agentconnect]\x20name:%s\x20type:%s\x20queuecallerexitreason:COMPLETEDBYAGENT','lastAssignedTo','queuecallerexit','queuecallerexitAt','reason','COMPLETED','channel','toLowerCase','local/','linkedid','add','seconds','FORWARDTRANSFER','transfer','transfertype','destexten','transferuniqueid','COMPLETEDBY','toUpperCase','[voiceQueueReport][agentcomplete]\x20name:%s\x20type:%s\x20queuecallerexitreason:%s','syncVarSet','value','variable','CONTINUE','lastevent','[%s][voiceQueueReport][varset]\x20sending\x20timeout\x20event:','custom:timeout','queuecallerleaveAt','varset','queueposition','EXITWITHKEY','[%s][voiceQueueReport][varset]\x20name:%s\x20type:%s\x20variable:%s\x20value:%s','[%s][voiceQueueReport][varset]','addVariable','rtpaudioqos','rtpaudioqosbridged','rtpaudioqosjitter','rtpaudioqosjitterbridged','rtpaudioqoslossbridged','rtpaudioqosrtt','rtpaudioqosrttbridged','sipcallid','sipuri','bridgepeer','bridgepvtcallid','membercalls','memberdynamic','memberinterface','memberpenalty','memberrealtime','includes','[%s][voiceQueueReport][hangup]','abandoned','sumHoldTime','diff','length','milliseconds','total','sumBillable','custom:queuecallerunmanaged','[%s][voiceQueueReport][hangup]\x20sending\x20queuecallerabandon\x20event:','custom:queuecallerabandon','[%s][voiceQueueReport][hangup]\x20name:%s\x20type:%s\x20reason:%s','cause-txt','[%s][voiceQueueReport][hangup]\x20sending\x20voiceQueueReport\x20event:','transfereeuniqueid','transferexten','secondtransfererexten','secondtransfereruniqueid','ATTENDED','[%s][voiceQueueReport][attendedTransfer]\x20name:%s\x20type:%s\x20transferexten:%s\x20transferuniqueid:%s','transfertargetuniqueid','origtransfererexten','origtransfereruniqueid','ATTENDEDTRANSFER','switch','[%s][voiceQueueReport][attendedtransfer]','[%s][voiceQueueReport][blindtransfer]','BLINDTRANSFER','BLIND','extension','[%s][voiceQueueReport][blindTransfer]\x20name:%s\x20type:%s\x20transferexten:%s\x20transferuniqueid:%s','context','transfererchannel','[%s][voiceQueueReport][musiconholdstart]','mohstarttime','[%s][voiceQueueReport][musiconholdstart]\x20mohstarttime:%s','[%s][voiceQueueReport][musiconholdstop]','mohtime','[%s][voiceQueueReport][musiconholdstop]\x20mohtime:%s','[%s][voiceQueueReport][newexten]\x20event:','application','set','applicationdata','appdata','startsWith','CDR(routeAlias)','cdr(','[%s][voiceQueueReport][newexten]\x20application:%s\x20appdata:%s','split','[%s][voiceQueueReport][newexten]','exports','lodash','moment','util','md5','ioredis','ami','../ami','../model/queueReport','redis','defaults','localhost','socket.io-emitter','prototype','enqueue','tail','finally','sequence','queueReports','agents','channels','queueChannels','voiceQueues','flagQueueSummary','campaigns','variables','queuesummary','syncQueueSummary','syncQueueSummaryComplete','bind','queuecallerjoin','syncQueueCallerJoin','syncQueueCallerAbandon','queuecallerleave','agentcomplete','syncAgentComplete','agentconnect','syncAgentConnect','hangup','syncHangup','fullybooted','syncFullyBooted','newexten','syncNewExten','syncMusicOnHoldStart','musiconholdstop','syncMusicOnHoldStop','attendedtransfer','syncAttendedTransfer','blindtransfer','syncBlindTransfer','loopQueueShow','hasOwnProperty','isEmpty','originated','pTalking','waiting','queueStatusComplete','unlockRR','clearZombieChannels','isNil','Action','status','catch','message','No\x20such\x20channel','error','[%s][voiceQueueReport][checkChannel]','inspect','[%s][voiceQueueReport][checkQueueReport]','[%s][voiceQueueReport][checkVariables]','[FullyBooted]\x20clear\x20realtime','clearQueueReport','emitVoiceQueueChannelRemove','clearqueuereport','emit','emitVoiceQueueChannelSave','debug','[%s][voiceQueueReport][',']\x20sending\x20voice_queue_channel:save\x20event:','format','voice:queue:%s','name','voice_queue_channel:save','voice_queue_presence:save',']\x20sending\x20voice_queue_channel:remove\x20event:','voice_queue_presence:remove','emitVoiceQueueSummary','type','strategy','answered','loggedIn','sumDuration','talking','unmanaged','Trunk','callerid','Interval','stringify','[voiceQueueReport][',']\x20sending\x20voice_queue:save\x20event:','voice_queue:save','isNotNull','isUndefined','queues','[voiceQueueReport][queues]','loopQueueSummary','then','queue','[voiceQueueReport][queuesummary]\x20event:','info','[voiceQueueReport][queuesummary]\x20name:%s','countBy','callers','toNumber','available','loggedin','[voiceQueueReport][queuesummary]\x20sending\x20queuesummary\x20event:'];(function(_0x517f6f,_0xe60b6c){var _0x46673d=function(_0x2b71a4){while(--_0x2b71a4){_0x517f6f['push'](_0x517f6f['shift']());}};_0x46673d(++_0xe60b6c);}(_0x76bc,0x17f));var _0xc76b=function(_0x118139,_0x7ce965){_0x118139=_0x118139-0x0;var _0x2fece9=_0x76bc[_0x118139];return _0x2fece9;};'use strict';var _=require(_0xc76b('0x0'));var moment=require(_0xc76b('0x1'));var util=require(_0xc76b('0x2'));var md5=require(_0xc76b('0x3'));var Redis=require(_0xc76b('0x4'));var config=require('../../../config/environment');var logger=require('../../../config/logger')(_0xc76b('0x5'));var ami=require(_0xc76b('0x6'));var QueueReport=require(_0xc76b('0x7'));config[_0xc76b('0x8')]=_[_0xc76b('0x9')](config[_0xc76b('0x8')],{'host':_0xc76b('0xa'),'port':0x18eb});var io=require(_0xc76b('0xb'))(new Redis(config[_0xc76b('0x8')]));var Sequence=function(){};Sequence[_0xc76b('0xc')][_0xc76b('0xd')]=function(_0xaf195c){this[_0xc76b('0xe')]=this[_0xc76b('0xe')]?this[_0xc76b('0xe')][_0xc76b('0xf')](_0xaf195c):_0xaf195c();};function VoiceQueueReport(_0x47fc1a){this[_0xc76b('0x10')]=new Sequence();this[_0xc76b('0x11')]={};this[_0xc76b('0x12')]=_0x47fc1a[_0xc76b('0x12')];this[_0xc76b('0x13')]=_0x47fc1a[_0xc76b('0x14')];this['voiceQueues']=_0x47fc1a[_0xc76b('0x15')];this[_0xc76b('0x16')]=!![];this[_0xc76b('0x17')]=_0x47fc1a[_0xc76b('0x17')];this[_0xc76b('0x18')]={};ami['on'](_0xc76b('0x19'),this[_0xc76b('0x1a')]['bind'](this));ami['on']('queuesummarycomplete',this[_0xc76b('0x1b')][_0xc76b('0x1c')](this));ami['on'](_0xc76b('0x1d'),this[_0xc76b('0x1e')][_0xc76b('0x1c')](this));ami['on']('queuecallerabandon',this[_0xc76b('0x1f')][_0xc76b('0x1c')](this));ami['on'](_0xc76b('0x20'),this['syncQueueCallerLeave']['bind'](this));ami['on'](_0xc76b('0x21'),this[_0xc76b('0x22')][_0xc76b('0x1c')](this));ami['on'](_0xc76b('0x23'),this[_0xc76b('0x24')]['bind'](this));ami['on']('varset',this['syncVarSet'][_0xc76b('0x1c')](this));ami['on'](_0xc76b('0x25'),this[_0xc76b('0x26')][_0xc76b('0x1c')](this));ami['on'](_0xc76b('0x27'),this[_0xc76b('0x28')][_0xc76b('0x1c')](this));ami['on'](_0xc76b('0x29'),this[_0xc76b('0x2a')][_0xc76b('0x1c')](this));ami['on']('musiconholdstart',this[_0xc76b('0x2b')]['bind'](this));ami['on'](_0xc76b('0x2c'),this[_0xc76b('0x2d')][_0xc76b('0x1c')](this));ami['on'](_0xc76b('0x2e'),this[_0xc76b('0x2f')][_0xc76b('0x1c')](this));ami['on'](_0xc76b('0x30'),this[_0xc76b('0x31')][_0xc76b('0x1c')](this));this['loopQueueSummary']();this[_0xc76b('0x32')]();}function clearChannels(_0x36e7ae){if(!_['isEmpty'](_0x36e7ae)){for(var _0xf43320 in _0x36e7ae){if(_0x36e7ae[_0xc76b('0x33')](_0xf43320)){delete _0x36e7ae[_0xf43320];}}}}function clearCampaigns(_0x161816){if(!_[_0xc76b('0x34')](_0x161816)){for(var _0x369fc1 in _0x161816){if(_0x161816[_0xc76b('0x33')](_0x369fc1)){_0x161816[_0x369fc1]['originated']=0x0;}}}}function clearVoiceQueues(_0x4d6572){if(!_[_0xc76b('0x34')](_0x4d6572)){for(var _0x35feeb in _0x4d6572){if(_0x4d6572[_0xc76b('0x33')](_0x35feeb)){_0x4d6572[_0x35feeb][_0xc76b('0x35')]=0x0;_0x4d6572[_0x35feeb]['talking']=0x0;_0x4d6572[_0x35feeb][_0xc76b('0x36')]=0x0;_0x4d6572[_0x35feeb][_0xc76b('0x37')]=0x0;_0x4d6572[_0x35feeb][_0xc76b('0x38')]=!![];}}}}function clearAgentBooked(_0x4a0918){if(!_[_0xc76b('0x34')](_0x4a0918)){for(var _0x2cbdb7 in _0x4a0918){if(_0x4a0918[_0xc76b('0x33')](_0x2cbdb7)){_0x4a0918[_0x2cbdb7][_0xc76b('0x39')]=!![];}}}}VoiceQueueReport['prototype'][_0xc76b('0x3a')]=function(){var _0x1c06d6=this;for(var _0x3ac743 in this[_0xc76b('0x13')]){if(this[_0xc76b('0x13')]['hasOwnProperty'](_0x3ac743)&&!this[_0xc76b('0x13')][_0x3ac743]['switch']){this[_0xc76b('0x10')][_0xc76b('0xd')](function(){if(!_[_0xc76b('0x3b')](_0x1c06d6[_0xc76b('0x13')][_0x3ac743])){return ami[_0xc76b('0x3c')]({'action':_0xc76b('0x3d'),'channel':_0x1c06d6['channels'][_0x3ac743]['channel']})[_0xc76b('0x3e')](function(_0x19d77c){if(_0x19d77c[_0xc76b('0x3f')]===_0xc76b('0x40')){setTimeout(function(){if(_0x1c06d6[_0xc76b('0x13')][_0x3ac743]){delete _0x1c06d6[_0xc76b('0x13')][_0x3ac743];logger[_0xc76b('0x41')](_0xc76b('0x42'),_0x3ac743,util[_0xc76b('0x43')](_0x19d77c,{'showHidden':![],'depth':null}));}if(_0x1c06d6[_0xc76b('0x11')][_0x3ac743]){delete _0x1c06d6[_0xc76b('0x11')][_0x3ac743];logger[_0xc76b('0x41')](_0xc76b('0x44'),_0x3ac743,util[_0xc76b('0x43')](_0x19d77c,{'showHidden':![],'depth':null}));}if(_0x1c06d6[_0xc76b('0x18')][_0x3ac743]){delete _0x1c06d6['variables'][_0x3ac743];logger[_0xc76b('0x41')](_0xc76b('0x45'),_0x3ac743,util[_0xc76b('0x43')](_0x19d77c,{'showHidden':![],'depth':null}));}},0x1f40);}});}});}}};VoiceQueueReport[_0xc76b('0xc')][_0xc76b('0x28')]=function(){logger[_0xc76b('0x41')](_0xc76b('0x46'));clearChannels(this[_0xc76b('0x13')]);this[_0xc76b('0x47')](this[_0xc76b('0x11')]);clearAgentBooked(this[_0xc76b('0x12')]);clearVoiceQueues(this[_0xc76b('0x15')]);clearCampaigns(this[_0xc76b('0x17')]);};VoiceQueueReport[_0xc76b('0xc')]['clearQueueReport']=function(_0x232e9c){var _0x4e73d8=this;if(!_[_0xc76b('0x34')](_0x232e9c)){for(var _0x576e27 in _0x232e9c){if(_0x232e9c[_0xc76b('0x33')](_0x576e27)){_0x4e73d8[_0xc76b('0x48')](_0x232e9c[_0x576e27],_0xc76b('0x49'));delete _0x232e9c[_0x576e27];}}}};VoiceQueueReport[_0xc76b('0xc')][_0xc76b('0x4a')]=function(_0x54b570,_0x2cc598,_0x2c6905){io['to'](_0x54b570)[_0xc76b('0x4a')](_0x2cc598,_0x2c6905);};VoiceQueueReport[_0xc76b('0xc')][_0xc76b('0x4b')]=function(_0x190401,_0x10b872){logger[_0xc76b('0x4c')](_0xc76b('0x4d')+_0x10b872+_0xc76b('0x4e'),_0x190401['uniqueid'],util[_0xc76b('0x43')](_0x190401,{'showHidden':![],'depth':null}));this['emit'](util[_0xc76b('0x4f')](_0xc76b('0x50'),_0x190401[_0xc76b('0x51')]),_0xc76b('0x52'),_0x190401);io[_0xc76b('0x4a')](_0xc76b('0x53'),_0x190401);};VoiceQueueReport[_0xc76b('0xc')][_0xc76b('0x48')]=function(_0x4d7e94,_0x2b3d36){logger['debug']('[%s][voiceQueueReport]['+_0x2b3d36+_0xc76b('0x54'),_0x4d7e94['uniqueid'],util[_0xc76b('0x43')](_0x4d7e94,{'showHidden':![],'depth':null}));this[_0xc76b('0x4a')](util[_0xc76b('0x4f')](_0xc76b('0x50'),_0x4d7e94[_0xc76b('0x51')]),'voice_queue_channel:remove',_0x4d7e94);io[_0xc76b('0x4a')](_0xc76b('0x55'),_0x4d7e94);};VoiceQueueReport[_0xc76b('0xc')][_0xc76b('0x56')]=function(_0x76330,_0x4490fb){if(_0x76330[_0xc76b('0x57')]==='inbound'){var _0x3314ac={'id':_0x76330['id'],'name':_0x76330['name'],'strategy':_0x76330[_0xc76b('0x58')],'answered':_0x76330[_0xc76b('0x59')],'available':_0x76330['available'],'loggedIn':_0x76330[_0xc76b('0x5a')],'pTalking':_0x76330[_0xc76b('0x36')],'sumBillable':_0x76330['sumBillable'],'sumDuration':_0x76330[_0xc76b('0x5b')],'sumHoldTime':_0x76330['sumHoldTime']||0x0,'talking':_0x76330[_0xc76b('0x5c')],'total':_0x76330['total'],'type':_0x76330[_0xc76b('0x57')],'unmanaged':_0x76330[_0xc76b('0x5d')],'abandoned':_0x76330['abandoned'],'waiting':_0x76330[_0xc76b('0x37')]};if(_0x76330[_0xc76b('0x5e')]){_0x3314ac[_0xc76b('0x5e')]={'id':_0x76330['Trunk']['id'],'name':_0x76330[_0xc76b('0x5e')][_0xc76b('0x51')],'active':_0x76330[_0xc76b('0x5e')]['active'],'callerid':_0x76330[_0xc76b('0x5e')][_0xc76b('0x5f')]};}if(_0x76330[_0xc76b('0x60')]){_0x3314ac[_0xc76b('0x60')]={'id':_0x76330['Interval']['id'],'name':_0x76330[_0xc76b('0x60')][_0xc76b('0x51')]};}var _0x1c2648=md5(JSON[_0xc76b('0x61')](_0x3314ac));if(_0x76330[_0xc76b('0x3')]!==_0x1c2648){_0x76330[_0xc76b('0x3')]=_0x1c2648;logger[_0xc76b('0x4c')](_0xc76b('0x62')+_0x4490fb+_0xc76b('0x63'),util['inspect'](_0x3314ac,{'showHidden':![],'depth':null}));this[_0xc76b('0x4a')](util[_0xc76b('0x4f')](_0xc76b('0x50'),_0x3314ac['name']),_0xc76b('0x64'),_0x3314ac);}}};VoiceQueueReport[_0xc76b('0xc')][_0xc76b('0x65')]=function(_0xac093f){return _0xac093f!==null&&!_[_0xc76b('0x66')](_0xac093f);};VoiceQueueReport[_0xc76b('0xc')]['loopQueueShow']=function(){var _0xddb2ce=this;setInterval(function(){_0xddb2ce[_0xc76b('0x3a')]();ami[_0xc76b('0x3c')]({'action':_0xc76b('0x67')})['catch'](function(_0x3c2f94){logger[_0xc76b('0x41')](_0xc76b('0x68'),util[_0xc76b('0x43')](_0x3c2f94,{'showHidden':![],'depth':null}));});},0x2710);};VoiceQueueReport[_0xc76b('0xc')][_0xc76b('0x69')]=function(){var _0x5be7ee=this;setInterval(function(){if(_0x5be7ee['flagQueueSummary']){return ami[_0xc76b('0x3c')]({'action':'queuesummary'})[_0xc76b('0x6a')](function(_0x32be8a){_0x5be7ee[_0xc76b('0x16')]=![];})[_0xc76b('0x3e')](function(_0x51cfaa){logger[_0xc76b('0x41')]('[voiceQueueReport][queuesummary]',util[_0xc76b('0x43')](_0x51cfaa,{'showHidden':![],'depth':null}));});}},0x3e8);};VoiceQueueReport[_0xc76b('0xc')][_0xc76b('0x1a')]=function(_0x554d5d){try{if(this[_0xc76b('0x65')](_0x554d5d)&&this[_0xc76b('0x65')](_0x554d5d[_0xc76b('0x6b')])){logger[_0xc76b('0x4c')](_0xc76b('0x6c'),util[_0xc76b('0x43')](_0x554d5d,{'showHidden':![],'depth':null}));if(this[_0xc76b('0x15')][_0x554d5d['queue']]){logger[_0xc76b('0x6d')](_0xc76b('0x6e'),_0x554d5d[_0xc76b('0x6b')]);var _0x31d847=_[_0xc76b('0x6f')](this[_0xc76b('0x13')],'queue')[_0x554d5d[_0xc76b('0x6b')]]||0x0;var _0x224cf4=_0x31d847-_0x554d5d[_0xc76b('0x70')];if(this['voiceQueues'][_0x554d5d[_0xc76b('0x6b')]][_0xc76b('0x37')]!==_[_0xc76b('0x71')](_0x554d5d[_0xc76b('0x70')])||this[_0xc76b('0x15')][_0x554d5d[_0xc76b('0x6b')]][_0xc76b('0x5a')]!==_[_0xc76b('0x71')](_0x554d5d['loggedin'])||this[_0xc76b('0x15')][_0x554d5d[_0xc76b('0x6b')]][_0xc76b('0x72')]!==_[_0xc76b('0x71')](_0x554d5d[_0xc76b('0x72')])||this[_0xc76b('0x15')][_0x554d5d[_0xc76b('0x6b')]][_0xc76b('0x5c')]!==_0x224cf4){this[_0xc76b('0x15')][_0x554d5d[_0xc76b('0x6b')]][_0xc76b('0x37')]=_[_0xc76b('0x71')](_0x554d5d['callers']);this[_0xc76b('0x15')][_0x554d5d[_0xc76b('0x6b')]]['loggedIn']=_['toNumber'](_0x554d5d[_0xc76b('0x73')]);this['voiceQueues'][_0x554d5d[_0xc76b('0x6b')]][_0xc76b('0x72')]=_[_0xc76b('0x71')](_0x554d5d[_0xc76b('0x72')]);this[_0xc76b('0x15')][_0x554d5d[_0xc76b('0x6b')]][_0xc76b('0x5c')]=_0x224cf4>0x0?_0x224cf4:0x0;this[_0xc76b('0x15')][_0x554d5d['queue']][_0xc76b('0x5c')]=this['voiceQueues'][_0x554d5d[_0xc76b('0x6b')]]['talking']>_['toNumber'](_0x554d5d['loggedin'])?_[_0xc76b('0x71')](_0x554d5d[_0xc76b('0x73')]):this[_0xc76b('0x15')][_0x554d5d[_0xc76b('0x6b')]][_0xc76b('0x5c')];this[_0xc76b('0x56')](this[_0xc76b('0x15')][_0x554d5d[_0xc76b('0x6b')]],_0xc76b('0x19'));}logger['debug'](_0xc76b('0x74'),util[_0xc76b('0x43')](this['voiceQueues'][_0x554d5d[_0xc76b('0x6b')]],{'showHidden':![],'depth':null}));ami['emit'](_0xc76b('0x75'),this['voiceQueues'][_0x554d5d[_0xc76b('0x6b')]]);}}}catch(_0x50ca28){logger[_0xc76b('0x41')](_0xc76b('0x76'),util[_0xc76b('0x43')](_0x50ca28,{'showHidden':![],'depth':null}));}};VoiceQueueReport[_0xc76b('0xc')][_0xc76b('0x1b')]=function(_0x35948b){logger['debug']('[voiceQueueReport][queuesummarycomplete]\x20event:',util[_0xc76b('0x43')](_0x35948b,{'showHidden':![],'depth':null}));this[_0xc76b('0x16')]=!![];};VoiceQueueReport[_0xc76b('0xc')][_0xc76b('0x1e')]=function(_0x36bfae){try{if(this['isNotNull'](_0x36bfae)){logger['debug'](_0xc76b('0x77'),_0x36bfae[_0xc76b('0x78')],util['inspect'](_0x36bfae,{'showHidden':![],'depth':null}));if(_[_0xc76b('0x66')](this[_0xc76b('0x11')][_0x36bfae[_0xc76b('0x78')]]))this[_0xc76b('0x11')][_0x36bfae[_0xc76b('0x78')]]=[];if(_[_0xc76b('0x66')](this[_0xc76b('0x13')][_0x36bfae[_0xc76b('0x78')]]))this[_0xc76b('0x13')][_0x36bfae[_0xc76b('0x78')]]={};var _0x364c75=new QueueReport();_0x364c75[_0xc76b('0x51')]=_0x36bfae[_0xc76b('0x6b')];_0x364c75[_0xc76b('0x57')]=this[_0xc76b('0x15')][_0x364c75[_0xc76b('0x51')]]&&this[_0xc76b('0x15')][_0x364c75['name']][_0xc76b('0x57')]?this[_0xc76b('0x15')][_0x364c75[_0xc76b('0x51')]]['type']||_0xc76b('0x79'):_0xc76b('0x79');_0x364c75[_0xc76b('0x6b')]=_0x36bfae[_0xc76b('0x6b')];_0x364c75[_0xc76b('0x7a')]=moment()[_0xc76b('0x4f')]('YYYY-MM-DD\x20HH:mm:ss');_0x364c75[_0xc76b('0x7b')]=_0x36bfae['position'];_0x364c75[_0xc76b('0x7c')]=_0x36bfae[_0xc76b('0x7c')];_0x364c75[_0xc76b('0x78')]=_0x36bfae['uniqueid'];_0x364c75[_0xc76b('0x7d')]=this[_0xc76b('0x13')][_0x36bfae[_0xc76b('0x78')]][_0xc76b('0x7d')];logger[_0xc76b('0x6d')](_0xc76b('0x7e'),_0x364c75['name'],_0x364c75['type']);_[_0xc76b('0x7f')](_0x364c75,_[_0xc76b('0x80')](_0x36bfae,_[_0xc76b('0x81')](_0x364c75)));this[_0xc76b('0x11')][_0x36bfae['uniqueid']]['push'](_0x364c75);this[_0xc76b('0x13')][_0x36bfae[_0xc76b('0x78')]]=_0x364c75;this['emitVoiceQueueChannelSave'](_0x364c75,_0xc76b('0x1d'));}}catch(_0x21b037){logger[_0xc76b('0x41')](_0xc76b('0x77'),_0x36bfae[_0xc76b('0x78')],util[_0xc76b('0x43')](_0x21b037,{'showHidden':![],'depth':null}));}};VoiceQueueReport[_0xc76b('0xc')][_0xc76b('0x1f')]=function(_0x4abb8f){try{if(this[_0xc76b('0x65')](_0x4abb8f)){logger[_0xc76b('0x4c')]('[%s][voiceQueueReport][queuecallerabandon]',_0x4abb8f[_0xc76b('0x78')],util[_0xc76b('0x43')](_0x4abb8f,{'showHidden':![],'depth':null}));if(this[_0xc76b('0x11')][_0x4abb8f[_0xc76b('0x78')]]){var _0x300d50=_[_0xc76b('0x82')](this[_0xc76b('0x11')][_0x4abb8f[_0xc76b('0x78')]]);_0x300d50[_0xc76b('0x83')]=![];_0x300d50[_0xc76b('0x84')]=null;_0x300d50[_0xc76b('0x85')]=_0x4abb8f['holdtime'];_0x300d50[_0xc76b('0x86')]=_0x4abb8f[_0xc76b('0x86')];_0x300d50[_0xc76b('0x87')]=!![];_0x300d50[_0xc76b('0x88')]=moment()['format'](_0xc76b('0x89'));_0x300d50[_0xc76b('0x8a')]='ABANDONED';_0x300d50['lastAssignedTo']=null;logger[_0xc76b('0x6d')](_0xc76b('0x8b'),_0x300d50['name'],_0x300d50['type']);this[_0xc76b('0x13')][_0x4abb8f[_0xc76b('0x78')]]=_0x300d50;this[_0xc76b('0x48')](_0x300d50,'queuecallerabandon');}}}catch(_0x2e0c74){logger[_0xc76b('0x41')](_0xc76b('0x8c'),_0x4abb8f[_0xc76b('0x78')],util[_0xc76b('0x43')](_0x2e0c74,{'showHidden':![],'depth':null}));}};VoiceQueueReport[_0xc76b('0xc')][_0xc76b('0x8d')]=function(_0x6dc579){try{if(this[_0xc76b('0x65')](_0x6dc579)){logger[_0xc76b('0x4c')]('[%s][voiceQueueReport][queuecallerleave]',_0x6dc579[_0xc76b('0x78')],util['inspect'](_0x6dc579,{'showHidden':![],'depth':null}));if(this[_0xc76b('0x11')][_0x6dc579[_0xc76b('0x78')]]){var _0x1cd328=_['last'](this[_0xc76b('0x11')][_0x6dc579['uniqueid']]);_0x1cd328['queuecallerleaveAt']=moment()[_0xc76b('0x4f')]('YYYY-MM-DD\x20HH:mm:ss');_0x1cd328[_0xc76b('0x8e')]=_0x6dc579['connectedlinenum'];_0x1cd328[_0xc76b('0x8f')]=_0x6dc579[_0xc76b('0x8f')];logger[_0xc76b('0x6d')](_0xc76b('0x90'),_0x1cd328[_0xc76b('0x51')],_0x1cd328[_0xc76b('0x57')],_0x6dc579['connectedlinenum'],_0x6dc579[_0xc76b('0x8f')]);this[_0xc76b('0x13')][_0x6dc579[_0xc76b('0x78')]]=_0x1cd328;this['emitVoiceQueueChannelSave'](_0x1cd328,_0xc76b('0x20'));}}}catch(_0x849f43){logger[_0xc76b('0x41')](_0xc76b('0x91'),_0x6dc579[_0xc76b('0x78')],util[_0xc76b('0x43')](_0x849f43,{'showHidden':![],'depth':null}));}};VoiceQueueReport[_0xc76b('0xc')][_0xc76b('0x24')]=function(_0x2455de){try{if(this[_0xc76b('0x65')](_0x2455de)){logger[_0xc76b('0x4c')](_0xc76b('0x92'),_0x2455de[_0xc76b('0x78')],util[_0xc76b('0x43')](_0x2455de,{'showHidden':![],'depth':null}));if(this['queueReports'][_0x2455de[_0xc76b('0x78')]]){var _0x2c1ac6=_[_0xc76b('0x82')](this[_0xc76b('0x11')][_0x2455de[_0xc76b('0x78')]]);_0x2c1ac6[_0xc76b('0x83')]=!![];_0x2c1ac6[_0xc76b('0x8a')]=_0xc76b('0x93');logger['info'](_0xc76b('0x94'),_0x2c1ac6['name'],_0x2c1ac6[_0xc76b('0x57')]);}}}catch(_0x556ee2){logger[_0xc76b('0x41')](_0xc76b('0x92'),_0x2455de[_0xc76b('0x78')],util[_0xc76b('0x43')](_0x556ee2,{'showHidden':![],'depth':null}));}};VoiceQueueReport[_0xc76b('0xc')]['syncAgentComplete']=function(_0x2305b){try{if(this[_0xc76b('0x65')](_0x2305b)){logger[_0xc76b('0x4c')]('[%s][voiceQueueReport][agentcomplete]',_0x2305b[_0xc76b('0x78')],util[_0xc76b('0x43')](_0x2305b,{'showHidden':![],'depth':null}));if(this[_0xc76b('0x11')][_0x2305b[_0xc76b('0x78')]]){var _0x45c852=_[_0xc76b('0x82')](this['queueReports'][_0x2305b[_0xc76b('0x78')]]);_0x45c852['queuecallerabandon']=![];_0x45c852[_0xc76b('0x88')]=null;_0x45c852['assigned']=!![];_0x45c852[_0xc76b('0x95')]=_0x2305b['membername'];_0x45c852[_0xc76b('0x85')]=_0x2305b[_0xc76b('0x85')];_0x45c852[_0xc76b('0x83')]=!![];_0x45c852[_0xc76b('0x96')]=![];_0x45c852[_0xc76b('0x97')]=null;if(!_0x45c852['transfer']){if(_0x2305b[_0xc76b('0x98')]=='transfer'){_0x45c852[_0xc76b('0x8a')]=_0xc76b('0x99');logger[_0xc76b('0x6d')]('[voiceQueueReport][agentcomplete]\x20name:%s\x20type:%s\x20queuecallerexitreason:COMPLETED',_0x45c852[_0xc76b('0x51')],_0x45c852[_0xc76b('0x57')]);}else{if(_['startsWith'](_0x2305b[_0xc76b('0x9a')][_0xc76b('0x9b')](),_0xc76b('0x9c'))){if(this[_0xc76b('0x11')][_0x2305b[_0xc76b('0x9d')]]){var _0x387e1c=_['last'](this[_0xc76b('0x11')][_0x2305b['linkedid']]);_0x387e1c['queuecallercomplete']=![];_0x387e1c[_0xc76b('0x96')]=!![];_0x387e1c['queuecallerexitAt']=moment(_0x45c852[_0xc76b('0x7a')])[_0xc76b('0x9e')](_0x2305b['holdtime'],_0xc76b('0x9f'))[_0xc76b('0x4f')](_0xc76b('0x89'));_0x387e1c[_0xc76b('0x8a')]=_0xc76b('0xa0');_0x387e1c[_0xc76b('0xa1')]=!![];_0x387e1c[_0xc76b('0xa2')]='FORWARD';_0x387e1c['transferexten']=_0x2305b[_0xc76b('0xa3')];_0x387e1c[_0xc76b('0xa4')]=_0x2305b[_0xc76b('0x78')];logger[_0xc76b('0x6d')]('[voiceQueueReport][agentcomplete]\x20name:%s\x20type:%s\x20queuecallerexitreason:FORWARDTRANSFER',_0x387e1c['name'],_0x387e1c[_0xc76b('0x57')]);var _0x4f2df4=this[_0xc76b('0x11')][_0x2305b['linkedid']];this[_0xc76b('0x11')][_0x2305b['linkedid']]=this[_0xc76b('0x11')][_0x2305b[_0xc76b('0x78')]];this[_0xc76b('0x11')][_0x2305b['uniqueid']]=_0x4f2df4;}}else{_0x45c852[_0xc76b('0x8a')]=_0xc76b('0xa5')+_0x2305b['reason'][_0xc76b('0xa6')]();logger['info'](_0xc76b('0xa7'),_0x45c852[_0xc76b('0x51')],_0x45c852[_0xc76b('0x57')],_0x45c852[_0xc76b('0x8a')]);}}}this[_0xc76b('0x13')][_0x2305b[_0xc76b('0x78')]]=_0x45c852;this[_0xc76b('0x48')](_0x45c852,_0xc76b('0x21'));}}}catch(_0x4971e1){logger[_0xc76b('0x41')]('[%s][voiceQueueReport][agentcomplete]',_0x2305b[_0xc76b('0x78')],util[_0xc76b('0x43')](_0x4971e1,{'showHidden':![],'depth':null}));}};VoiceQueueReport['prototype'][_0xc76b('0xa8')]=function(_0x3a889e){try{if(this[_0xc76b('0x65')](_0x3a889e)){logger['debug']('[%s][voiceQueueReport][varset]',_0x3a889e[_0xc76b('0x78')],util['inspect'](_0x3a889e,{'showHidden':![],'depth':null}));this['addVariable'](_0x3a889e[_0xc76b('0x78')],_[_0xc76b('0x81')](_0x3a889e['variable'])[0x0],_0x3a889e[_0xc76b('0xa9')]);if(this[_0xc76b('0x11')][_0x3a889e[_0xc76b('0x78')]]){var _0x5c4ed5=_[_0xc76b('0x82')](this[_0xc76b('0x11')][_0x3a889e['uniqueid']]);if(_0x5c4ed5){if(this[_0xc76b('0x65')](_0x3a889e['variable'])&&this[_0xc76b('0x65')](_0x3a889e[_0xc76b('0xaa')]['queuestatus'])){switch(_0x3a889e[_0xc76b('0xa9')]){case _0xc76b('0xab'):_0x5c4ed5[_0xc76b('0x96')]=![];_0x5c4ed5[_0xc76b('0x97')]=null;break;case'TIMEOUT':_0x5c4ed5[_0xc76b('0xac')]='timeout';_0x5c4ed5['queuecallerexit']=!![];_0x5c4ed5['queuecallerexitAt']=moment()[_0xc76b('0x4f')](_0xc76b('0x89'));_0x5c4ed5['queuecallerleaveAt']=moment()['format']('YYYY-MM-DD\x20HH:mm:ss');logger[_0xc76b('0x4c')](_0xc76b('0xad'),_0x3a889e[_0xc76b('0x78')],util[_0xc76b('0x43')](_0x5c4ed5,{'showHidden':![],'depth':null}));ami['emit'](_0xc76b('0xae'),_0x5c4ed5);break;default:_0x5c4ed5[_0xc76b('0x96')]=!![];_0x5c4ed5[_0xc76b('0x97')]=moment()[_0xc76b('0x4f')]('YYYY-MM-DD\x20HH:mm:ss');_0x5c4ed5[_0xc76b('0xaf')]=moment()[_0xc76b('0x4f')](_0xc76b('0x89'));}_0x5c4ed5[_0xc76b('0x87')]=![];_0x5c4ed5[_0xc76b('0x88')]=null;_0x5c4ed5[_0xc76b('0x8a')]=_0x3a889e[_0xc76b('0xa9')];this['channels'][_0x3a889e[_0xc76b('0x78')]]=_0x5c4ed5;this['emitVoiceQueueChannelRemove'](_0x5c4ed5,_0xc76b('0xb0'));}else if(this[_0xc76b('0x65')](_0x3a889e[_0xc76b('0xaa')])&&this[_0xc76b('0x65')](_0x3a889e['variable'][_0xc76b('0xb1')])){if(!_0x5c4ed5[_0xc76b('0x87')]){_0x5c4ed5[_0xc76b('0x96')]=!![];_0x5c4ed5[_0xc76b('0x97')]=moment()[_0xc76b('0x4f')](_0xc76b('0x89'));_0x5c4ed5[_0xc76b('0x8a')]=_0xc76b('0xb2');_0x5c4ed5[_0xc76b('0xaf')]=moment()[_0xc76b('0x4f')](_0xc76b('0x89'));this[_0xc76b('0x13')][_0x3a889e['uniqueid']]=_0x5c4ed5;}}logger[_0xc76b('0x6d')](_0xc76b('0xb3'),_0x3a889e[_0xc76b('0x78')],_0x5c4ed5[_0xc76b('0x51')],_0x5c4ed5[_0xc76b('0x57')],_[_0xc76b('0x81')](_0x3a889e[_0xc76b('0xaa')])[0x0],_0x3a889e[_0xc76b('0xa9')]);_0x5c4ed5[_0xc76b('0x18')]=this[_0xc76b('0x18')][_0x3a889e['uniqueid']];}}}}catch(_0x3b098b){logger[_0xc76b('0x41')](_0xc76b('0xb4'),_0x3a889e[_0xc76b('0x78')],util[_0xc76b('0x43')](_0x3b098b,{'showHidden':![],'depth':null}));}};VoiceQueueReport[_0xc76b('0xc')][_0xc76b('0xb5')]=function(_0x1e44ff,_0x5e6544,_0x3fd7f8){var _0x19be78=[_0xc76b('0xb6'),_0xc76b('0xb7'),_0xc76b('0xb8'),_0xc76b('0xb9'),'rtpaudioqosloss',_0xc76b('0xba'),_0xc76b('0xbb'),_0xc76b('0xbc'),_0xc76b('0xbd'),_0xc76b('0xbe'),_0xc76b('0xbf'),_0xc76b('0xc0'),_0xc76b('0xc1'),_0xc76b('0xc2'),_0xc76b('0xc3'),'memberlastcall','membername',_0xc76b('0xc4'),_0xc76b('0xc5')];if(!_['isNil'](_0x5e6544)&&!_[_0xc76b('0xc6')](_0x19be78,_0x5e6544)){if(_[_0xc76b('0x66')](this[_0xc76b('0x18')][_0x1e44ff])){this[_0xc76b('0x18')][_0x1e44ff]={};}this[_0xc76b('0x18')][_0x1e44ff][_0x5e6544]=_0x3fd7f8;}};VoiceQueueReport[_0xc76b('0xc')][_0xc76b('0x26')]=function(_0x1f53cb){try{if(this[_0xc76b('0x65')](_0x1f53cb)){logger[_0xc76b('0x4c')](_0xc76b('0xc7'),_0x1f53cb[_0xc76b('0x78')],util[_0xc76b('0x43')](_0x1f53cb,{'showHidden':![],'depth':null}));if(this[_0xc76b('0x11')][_0x1f53cb[_0xc76b('0x78')]]){for(var _0x12bcdd=0x0,_0x3001dd={};_0x12bcdd<this[_0xc76b('0x11')][_0x1f53cb[_0xc76b('0x78')]]['length'];_0x12bcdd+=0x1){_0x3001dd=this[_0xc76b('0x11')][_0x1f53cb['uniqueid']][_0x12bcdd];if(this['voiceQueues'][_0x3001dd[_0xc76b('0x6b')]]){if(_0x3001dd[_0xc76b('0x96')]&&_0x3001dd[_0xc76b('0xa1')]!=!![]){this[_0xc76b('0x15')][_0x3001dd[_0xc76b('0x6b')]][_0xc76b('0x5d')]+=0x1;}if(_0x3001dd[_0xc76b('0x87')]){this[_0xc76b('0x15')][_0x3001dd[_0xc76b('0x6b')]][_0xc76b('0xc8')]+=0x1;}this['voiceQueues'][_0x3001dd[_0xc76b('0x6b')]][_0xc76b('0xc9')]+=moment(_0x3001dd[_0xc76b('0xaf')])[_0xc76b('0xca')](_0x3001dd['queuecallerjoinAt'],'seconds')||0x0;if(_0x12bcdd===this['queueReports'][_0x1f53cb['uniqueid']][_0xc76b('0xcb')]-0x1){this['voiceQueues'][_0x3001dd[_0xc76b('0x6b')]][_0xc76b('0x5b')]+=moment()[_0xc76b('0xcc')](0x0)[_0xc76b('0xca')](_0x3001dd[_0xc76b('0x7a')],_0xc76b('0x9f'));this['voiceQueues'][_0x3001dd['queue']][_0xc76b('0xcd')]+=0x1;if(_0x3001dd['queuecallercomplete']){this[_0xc76b('0x15')][_0x3001dd['queue']][_0xc76b('0x59')]+=0x1;this[_0xc76b('0x15')][_0x3001dd[_0xc76b('0x6b')]][_0xc76b('0xce')]+=moment()['milliseconds'](0x0)[_0xc76b('0xca')](_0x3001dd[_0xc76b('0xaf')],_0xc76b('0x9f'));_0x3001dd[_0xc76b('0x84')]=moment()[_0xc76b('0x4f')](_0xc76b('0x89'));_0x3001dd[_0xc76b('0x96')]=![];_0x3001dd['queuecallerexitAt']=null;}if(_0x3001dd[_0xc76b('0x96')]&&_0x3001dd['transfer']!=!![]){_0x3001dd[_0xc76b('0xac')]=_0xc76b('0x5d');logger[_0xc76b('0x4c')]('[%s][voiceQueueReport][hangup]\x20sending\x20queuecallerunmanaged\x20event:',_0x1f53cb[_0xc76b('0x78')],util['inspect'](_0x3001dd,{'showHidden':![],'depth':null}));ami[_0xc76b('0x4a')](_0xc76b('0xcf'),_0x3001dd);}if(_0x3001dd[_0xc76b('0x87')]){_0x3001dd[_0xc76b('0xac')]=_0xc76b('0xc8');logger[_0xc76b('0x4c')](_0xc76b('0xd0'),_0x1f53cb[_0xc76b('0x78')],util[_0xc76b('0x43')](_0x3001dd,{'showHidden':![],'depth':null}));ami[_0xc76b('0x4a')](_0xc76b('0xd1'),_0x3001dd);}}else{this[_0xc76b('0x15')][_0x3001dd['queue']][_0xc76b('0x5b')]+=this[_0xc76b('0x15')][_0x3001dd[_0xc76b('0x6b')]][_0xc76b('0xc9')];}logger[_0xc76b('0x6d')](_0xc76b('0xd2'),_0x1f53cb[_0xc76b('0x78')],_0x3001dd['name'],_0x3001dd[_0xc76b('0x57')],_0x1f53cb[_0xc76b('0xd3')]);this[_0xc76b('0x13')][_0x1f53cb[_0xc76b('0x78')]]=_0x3001dd;this['emitVoiceQueueChannelRemove'](_0x3001dd,'hangup');this['emitVoiceQueueSummary'](this[_0xc76b('0x15')][_0x3001dd['queue']],_0xc76b('0x25'));}}logger[_0xc76b('0x4c')](_0xc76b('0xd4'),_0x1f53cb['uniqueid'],util[_0xc76b('0x43')](this[_0xc76b('0x11')][_0x1f53cb[_0xc76b('0x78')]],{'showHidden':![],'depth':null}));ami['emit']('custom:voiceQueueReport',this[_0xc76b('0x11')][_0x1f53cb['uniqueid']]);delete this[_0xc76b('0x11')][_0x1f53cb[_0xc76b('0x78')]];delete this[_0xc76b('0x13')][_0x1f53cb[_0xc76b('0x78')]];}if(this[_0xc76b('0x18')][_0x1f53cb['uniqueid']]){delete this[_0xc76b('0x18')][_0x1f53cb[_0xc76b('0x78')]];}}}catch(_0x5cfe7b){logger[_0xc76b('0x41')](_0xc76b('0xc7'),_0x1f53cb[_0xc76b('0x78')],util[_0xc76b('0x43')](_0x5cfe7b,{'showHidden':![],'depth':null}));}};VoiceQueueReport[_0xc76b('0xc')][_0xc76b('0x2f')]=function(_0x45838e){try{if(this[_0xc76b('0x65')](_0x45838e)){logger[_0xc76b('0x4c')]('[%s][voiceQueueReport][attendedtransfer]',_0x45838e[_0xc76b('0x78')],util['inspect'](_0x45838e,{'showHidden':![],'depth':null}));var _0x21f625;if(this['queueReports'][_0x45838e[_0xc76b('0xd5')]]){_0x21f625=_[_0xc76b('0x82')](this['queueReports'][_0x45838e[_0xc76b('0xd5')]]);_0x21f625[_0xc76b('0xd6')]=_0x45838e[_0xc76b('0xd7')];_0x21f625[_0xc76b('0xa4')]=_0x45838e[_0xc76b('0xd8')];_0x21f625[_0xc76b('0x8a')]='ATTENDEDTRANSFER';_0x21f625[_0xc76b('0xa1')]=!![];_0x21f625['transfertype']=_0xc76b('0xd9');if(this[_0xc76b('0x11')][_0x45838e['secondtransfereruniqueid']]){var _0xc0ca10=this[_0xc76b('0x11')][_0x45838e[_0xc76b('0xd8')]];this['queueReports'][_0x45838e[_0xc76b('0xd8')]]=this['queueReports'][_0x45838e[_0xc76b('0xd5')]];this[_0xc76b('0x11')][_0x45838e[_0xc76b('0xd5')]]=_0xc0ca10;var _0x3c79fb=_[_0xc76b('0x82')](this[_0xc76b('0x11')][_0x45838e[_0xc76b('0xd5')]]);_0x3c79fb['switch']=!![];}logger['info'](_0xc76b('0xda'),_0x45838e[_0xc76b('0x78')],_0x21f625[_0xc76b('0x51')],_0x21f625['type'],_0x21f625[_0xc76b('0xd6')],_0x21f625[_0xc76b('0xa4')]);}else if(this[_0xc76b('0x11')][_0x45838e[_0xc76b('0xdb')]]){_0x21f625=_[_0xc76b('0x82')](this['queueReports'][_0x45838e[_0xc76b('0xdb')]]);_0x21f625['transferexten']=_0x45838e[_0xc76b('0xdc')];_0x21f625[_0xc76b('0xa4')]=_0x45838e[_0xc76b('0xdd')];_0x21f625[_0xc76b('0x8a')]=_0xc76b('0xde');_0x21f625[_0xc76b('0xa1')]=!![];_0x21f625[_0xc76b('0xa2')]=_0xc76b('0xd9');if(this[_0xc76b('0x11')][_0x45838e['origtransfereruniqueid']]){var _0xc0ca10=this[_0xc76b('0x11')][_0x45838e['origtransfereruniqueid']];this[_0xc76b('0x11')][_0x45838e['origtransfereruniqueid']]=this[_0xc76b('0x11')][_0x45838e[_0xc76b('0xdb')]];this[_0xc76b('0x11')][_0x45838e[_0xc76b('0xdb')]]=_0xc0ca10;var _0x3c79fb=_[_0xc76b('0x82')](this[_0xc76b('0x11')][_0x45838e['transfertargetuniqueid']]);_0x3c79fb[_0xc76b('0xdf')]=!![];}logger[_0xc76b('0x6d')]('[%s][voiceQueueReport][attendedTransfer]\x20name:%s\x20type:%s\x20transferexten:%s\x20transferuniqueid:%s',_0x45838e['uniqueid'],_0x21f625[_0xc76b('0x51')],_0x21f625[_0xc76b('0x57')],_0x21f625[_0xc76b('0xd6')],_0x21f625['transferuniqueid']);}}}catch(_0x43269a){logger[_0xc76b('0x41')](_0xc76b('0xe0'),_0x45838e[_0xc76b('0x78')],util[_0xc76b('0x43')](_0x43269a,{'showHidden':![],'depth':null}));}};VoiceQueueReport[_0xc76b('0xc')][_0xc76b('0x31')]=function(_0xc3a4fc){try{if(this['isNotNull'](_0xc3a4fc)){logger[_0xc76b('0x4c')](_0xc76b('0xe1'),_0xc3a4fc[_0xc76b('0x78')],util[_0xc76b('0x43')](_0xc3a4fc,{'showHidden':![],'depth':null}));if(this[_0xc76b('0x11')][_0xc3a4fc[_0xc76b('0xd5')]]){var _0x1e893d=_[_0xc76b('0x82')](this['queueReports'][_0xc3a4fc[_0xc76b('0xd5')]]);_0x1e893d[_0xc76b('0x8a')]=_0xc76b('0xe2');_0x1e893d['transfer']=!![];_0x1e893d[_0xc76b('0xa2')]=_0xc76b('0xe3');_0x1e893d[_0xc76b('0xd6')]=_0xc3a4fc[_0xc76b('0xe4')];_0x1e893d['transferuniqueid']=_0xc3a4fc[_0xc76b('0xd5')];logger[_0xc76b('0x6d')](_0xc76b('0xe5'),_0xc3a4fc[_0xc76b('0x78')],_0x1e893d[_0xc76b('0x51')],_0x1e893d[_0xc76b('0x57')],_0x1e893d[_0xc76b('0xd6')],_0x1e893d[_0xc76b('0xa4')]);this['syncHangup']({'event':'BlindTransfer','uniqueid':_0xc3a4fc[_0xc76b('0xd5')],'context':_0xc3a4fc[_0xc76b('0xe6')],'channel':_0xc3a4fc[_0xc76b('0xe7')]});}}}catch(_0x6701d9){logger[_0xc76b('0x41')]('[%s][voiceQueueReport][blindtransfer]',_0xc3a4fc[_0xc76b('0x78')],util[_0xc76b('0x43')](_0x6701d9,{'showHidden':![],'depth':null}));}};VoiceQueueReport[_0xc76b('0xc')][_0xc76b('0x2b')]=function(_0x110a32){try{if(this['isNotNull'](_0x110a32)){logger[_0xc76b('0x4c')](_0xc76b('0xe8'),_0x110a32[_0xc76b('0x78')],util[_0xc76b('0x43')](_0x110a32,{'showHidden':![],'depth':null}));if(this[_0xc76b('0x11')][_0x110a32[_0xc76b('0x78')]]){var _0xa886ee=_[_0xc76b('0x82')](this[_0xc76b('0x11')][_0x110a32['uniqueid']]);if(!_[_0xc76b('0x3b')](_0xa886ee[_0xc76b('0xaf')])){_0xa886ee[_0xc76b('0xe9')]=moment()[_0xc76b('0x4f')](_0xc76b('0x89'));logger['info'](_0xc76b('0xea'),_0x110a32['uniqueid'],_0xa886ee[_0xc76b('0xe9')]);}}}}catch(_0x2ecbf7){logger[_0xc76b('0x41')]('[%s][voiceQueueReport][musiconholdstart]',_0x110a32[_0xc76b('0x78')],util[_0xc76b('0x43')](_0x2ecbf7,{'showHidden':![],'depth':null}));}};VoiceQueueReport['prototype'][_0xc76b('0x2d')]=function(_0x4cf182){try{if(this['isNotNull'](_0x4cf182)){logger[_0xc76b('0x4c')](_0xc76b('0xeb'),_0x4cf182['uniqueid'],util[_0xc76b('0x43')](_0x4cf182,{'showHidden':![],'depth':null}));if(this[_0xc76b('0x11')][_0x4cf182[_0xc76b('0x78')]]){var _0x5b5e36=_[_0xc76b('0x82')](this['queueReports'][_0x4cf182[_0xc76b('0x78')]]);if(!_[_0xc76b('0x3b')](_0x5b5e36[_0xc76b('0xe9')])){_0x5b5e36[_0xc76b('0xec')]+=moment()[_0xc76b('0xcc')](0x0)[_0xc76b('0xca')](_0x5b5e36[_0xc76b('0xe9')],_0xc76b('0x9f'));logger[_0xc76b('0x6d')](_0xc76b('0xed'),_0x4cf182[_0xc76b('0x78')],_0x5b5e36[_0xc76b('0xec')]);delete _0x5b5e36[_0xc76b('0xe9')];}}}}catch(_0x33fd07){logger['error'](_0xc76b('0xeb'),_0x4cf182[_0xc76b('0x78')],util[_0xc76b('0x43')](_0x33fd07,{'showHidden':![],'depth':null}));}};VoiceQueueReport[_0xc76b('0xc')]['syncNewExten']=function(_0x59bd3a){try{if(this[_0xc76b('0x65')](_0x59bd3a)){logger[_0xc76b('0x4c')](_0xc76b('0xee'),_0x59bd3a['uniqueid'],util[_0xc76b('0x43')](_0x59bd3a,{'showHidden':![],'depth':null}));if(_0x59bd3a[_0xc76b('0xef')][_0xc76b('0x9b')]()===_0xc76b('0xf0')){_0x59bd3a[_0xc76b('0xf1')]=_0x59bd3a[_0xc76b('0xf2')]&&_0x59bd3a[_0xc76b('0xf2')][_0xc76b('0xf3')](_0xc76b('0xf4'))?_0x59bd3a[_0xc76b('0xf2')]:(_0x59bd3a['appdata']||_0x59bd3a['applicationdata'])[_0xc76b('0x9b')]();if(_[_0xc76b('0xf3')](_0x59bd3a[_0xc76b('0xf1')][_0xc76b('0x9b')](),_0xc76b('0xf5'))){logger[_0xc76b('0x6d')](_0xc76b('0xf6'),_0x59bd3a[_0xc76b('0x78')],_0x59bd3a[_0xc76b('0xef')],_0x59bd3a[_0xc76b('0xf1')]);if(_[_0xc76b('0x66')](this['channels'][_0x59bd3a[_0xc76b('0x78')]]))this[_0xc76b('0x13')][_0x59bd3a[_0xc76b('0x78')]]={};var _0x31137e=_0x59bd3a['applicationdata'][_0xc76b('0xf7')]('=');var _0x474626=_0x31137e[0x0][_0xc76b('0x9b')]()['match'](/cdr\((.*)\)/);if(_0x474626)this[_0xc76b('0x13')][_0x59bd3a[_0xc76b('0x78')]][_0x474626[0x1]]=_0x31137e[0x1];}}}}catch(_0x4223f8){logger[_0xc76b('0x41')](_0xc76b('0xf8'),_0x59bd3a[_0xc76b('0x78')],util[_0xc76b('0x43')](_0x4223f8,{'showHidden':![],'depth':null}));}};module[_0xc76b('0xf9')]=VoiceQueueReport;
\ No newline at end of file
+var _0xc961=['[voiceQueueReport][queuesummary]\x20event:','queue','info','[voiceQueueReport][queuesummary]\x20name:%s','countBy','callers','toNumber','loggedin','available','[voiceQueueReport][queuesummary]\x20sending\x20queuesummary\x20event:','custom:queuesummary','[voiceQueueReport][queuesummarycomplete]\x20event:','[%s][voiceQueueReport][queuecallerjoin]','inbound','queuecallerjoinAt','YYYY-MM-DD\x20HH:mm:ss','count','routealias','[voiceQueueReport][queuecallerjoin]\x20name:%s\x20type:%s','merge','pick','push','last','queuecallercomplete','queuecallercompleteAt','holdtime','originalposition','queuecallerexitreason','ABANDONED','lastAssignedTo','[voiceQueueReport][queuecallerabandon]\x20name:%s\x20type:%s','[%s][voiceQueueReport][queuecallerabandon]','syncQueueCallerLeave','connectedlinenum','connectedlinename','[voiceQueueReport][agentconnect]\x20name:%s\x20type:%s\x20queuecallerexitreason:COMPLETEDBYAGENT','[%s][voiceQueueReport][agentconnect]','[%s][voiceQueueReport][agentcomplete]','queuecallerabandonAt','membername','queuecallerexit','queuecallerexitAt','transfer','reason','COMPLETED','startsWith','toLowerCase','local/','linkedid','seconds','FORWARDTRANSFER','transfertype','FORWARD','transferexten','destexten','[voiceQueueReport][agentcomplete]\x20name:%s\x20type:%s\x20queuecallerexitreason:FORWARDTRANSFER','COMPLETEDBY','toUpperCase','[voiceQueueReport][agentcomplete]\x20name:%s\x20type:%s\x20queuecallerexitreason:%s','addVariable','keys','value','variable','queuestatus','CONTINUE','TIMEOUT','lastevent','queuecallerleaveAt','[%s][voiceQueueReport][varset]\x20sending\x20timeout\x20event:','custom:timeout','varset','EXITWITHKEY','rtpaudioqos','rtpaudioqosjitter','rtpaudioqosloss','rtpaudioqosrtt','rtpaudioqosrttbridged','sipcallid','sipuri','bridgepeer','bridgepvtcallid','memberdynamic','memberinterface','memberlastcall','memberpenalty','memberrealtime','includes','syncHangup','[%s][voiceQueueReport][hangup]','length','abandoned','diff','milliseconds','sumBillable','[%s][voiceQueueReport][hangup]\x20sending\x20queuecallerunmanaged\x20event:','custom:queuecallerunmanaged','[%s][voiceQueueReport][hangup]\x20sending\x20queuecallerabandon\x20event:','custom:queuecallerabandon','sumHoldTime','cause-txt','[%s][voiceQueueReport][hangup]\x20sending\x20voiceQueueReport\x20event:','custom:voiceQueueReport','[%s][voiceQueueReport][attendedtransfer]','transfereeuniqueid','secondtransfererexten','secondtransfereruniqueid','ATTENDEDTRANSFER','switch','[%s][voiceQueueReport][attendedTransfer]\x20name:%s\x20type:%s\x20transferexten:%s\x20transferuniqueid:%s','transferuniqueid','transfertargetuniqueid','origtransfererexten','origtransfereruniqueid','syncBlindTransfer','BLINDTRANSFER','BLIND','extension','BlindTransfer','transfererchannel','[%s][voiceQueueReport][blindtransfer]','[%s][voiceQueueReport][musiconholdstart]\x20mohstarttime:%s','mohstarttime','[%s][voiceQueueReport][musiconholdstart]','mohtime','[%s][voiceQueueReport][musiconholdstop]','[%s][voiceQueueReport][newexten]\x20event:','application','set','applicationdata','appdata','CDR(routeAlias)','cdr(','[%s][voiceQueueReport][newexten]\x20application:%s\x20appdata:%s','split','match','[%s][voiceQueueReport][newexten]','exports','lodash','moment','util','md5','ioredis','../../../config/environment','../model/queueReport','defaults','localhost','socket.io-emitter','redis','prototype','enqueue','tail','finally','sequence','queueReports','agents','channels','queueChannels','voiceQueues','campaigns','queuesummary','syncQueueSummary','bind','queuesummarycomplete','syncQueueSummaryComplete','queuecallerjoin','syncQueueCallerJoin','queuecallerabandon','syncQueueCallerAbandon','queuecallerleave','syncAgentComplete','syncAgentConnect','syncVarSet','hangup','syncFullyBooted','syncNewExten','musiconholdstart','syncMusicOnHoldStart','musiconholdstop','syncMusicOnHoldStop','attendedtransfer','syncAttendedTransfer','blindtransfer','loopQueueSummary','loopQueueShow','hasOwnProperty','isEmpty','originated','talking','pTalking','waiting','clearZombieChannels','isNil','Action','status','channel','catch','message','No\x20such\x20channel','error','[%s][voiceQueueReport][checkChannel]','[%s][voiceQueueReport][checkQueueReport]','inspect','variables','[%s][voiceQueueReport][checkVariables]','[FullyBooted]\x20clear\x20realtime','clearQueueReport','emitVoiceQueueChannelRemove','emit','emitVoiceQueueChannelSave','debug','[%s][voiceQueueReport][',']\x20sending\x20voice_queue_channel:save\x20event:','uniqueid','format','name','voice_queue_channel:save','voice_queue_presence:save',']\x20sending\x20voice_queue_channel:remove\x20event:','voice:queue:%s','voice_queue_channel:remove','emitVoiceQueueSummary','type','strategy','answered','loggedIn','sumDuration','total','unmanaged','Trunk','active','callerid','Interval','stringify','[voiceQueueReport][',']\x20sending\x20voice_queue:save\x20event:','voice_queue:save','isUndefined','then','flagQueueSummary','[voiceQueueReport][queuesummary]','isNotNull'];(function(_0x122ef9,_0x451d2a){var _0x42fba0=function(_0x17c9d3){while(--_0x17c9d3){_0x122ef9['push'](_0x122ef9['shift']());}};_0x42fba0(++_0x451d2a);}(_0xc961,0x17a));var _0x1c96=function(_0x56418c,_0xd90668){_0x56418c=_0x56418c-0x0;var _0x1c838d=_0xc961[_0x56418c];return _0x1c838d;};'use strict';var _=require(_0x1c96('0x0'));var moment=require(_0x1c96('0x1'));var util=require(_0x1c96('0x2'));var md5=require(_0x1c96('0x3'));var Redis=require(_0x1c96('0x4'));var config=require(_0x1c96('0x5'));var logger=require('../../../config/logger')('ami');var ami=require('../ami');var QueueReport=require(_0x1c96('0x6'));config['redis']=_[_0x1c96('0x7')](config['redis'],{'host':_0x1c96('0x8'),'port':0x18eb});var io=require(_0x1c96('0x9'))(new Redis(config[_0x1c96('0xa')]));var Sequence=function(){};Sequence[_0x1c96('0xb')][_0x1c96('0xc')]=function(_0x473a4c){this['tail']=this[_0x1c96('0xd')]?this[_0x1c96('0xd')][_0x1c96('0xe')](_0x473a4c):_0x473a4c();};function VoiceQueueReport(_0x34497e){this[_0x1c96('0xf')]=new Sequence();this[_0x1c96('0x10')]={};this[_0x1c96('0x11')]=_0x34497e[_0x1c96('0x11')];this[_0x1c96('0x12')]=_0x34497e[_0x1c96('0x13')];this[_0x1c96('0x14')]=_0x34497e[_0x1c96('0x14')];this['flagQueueSummary']=!![];this[_0x1c96('0x15')]=_0x34497e[_0x1c96('0x15')];this['variables']={};ami['on'](_0x1c96('0x16'),this[_0x1c96('0x17')][_0x1c96('0x18')](this));ami['on'](_0x1c96('0x19'),this[_0x1c96('0x1a')][_0x1c96('0x18')](this));ami['on'](_0x1c96('0x1b'),this[_0x1c96('0x1c')][_0x1c96('0x18')](this));ami['on'](_0x1c96('0x1d'),this[_0x1c96('0x1e')][_0x1c96('0x18')](this));ami['on'](_0x1c96('0x1f'),this['syncQueueCallerLeave'][_0x1c96('0x18')](this));ami['on']('agentcomplete',this[_0x1c96('0x20')][_0x1c96('0x18')](this));ami['on']('agentconnect',this[_0x1c96('0x21')]['bind'](this));ami['on']('varset',this[_0x1c96('0x22')][_0x1c96('0x18')](this));ami['on'](_0x1c96('0x23'),this['syncHangup'][_0x1c96('0x18')](this));ami['on']('fullybooted',this[_0x1c96('0x24')][_0x1c96('0x18')](this));ami['on']('newexten',this[_0x1c96('0x25')]['bind'](this));ami['on'](_0x1c96('0x26'),this[_0x1c96('0x27')][_0x1c96('0x18')](this));ami['on'](_0x1c96('0x28'),this[_0x1c96('0x29')][_0x1c96('0x18')](this));ami['on'](_0x1c96('0x2a'),this[_0x1c96('0x2b')][_0x1c96('0x18')](this));ami['on'](_0x1c96('0x2c'),this['syncBlindTransfer'][_0x1c96('0x18')](this));this[_0x1c96('0x2d')]();this[_0x1c96('0x2e')]();}function clearChannels(_0x528afc){if(!_['isEmpty'](_0x528afc)){for(var _0x2d5aaa in _0x528afc){if(_0x528afc[_0x1c96('0x2f')](_0x2d5aaa)){delete _0x528afc[_0x2d5aaa];}}}}function clearCampaigns(_0x48798a){if(!_[_0x1c96('0x30')](_0x48798a)){for(var _0x43b822 in _0x48798a){if(_0x48798a[_0x1c96('0x2f')](_0x43b822)){_0x48798a[_0x43b822]['originated']=0x0;}}}}function clearVoiceQueues(_0x4d588d){if(!_[_0x1c96('0x30')](_0x4d588d)){for(var _0x8d0b51 in _0x4d588d){if(_0x4d588d['hasOwnProperty'](_0x8d0b51)){_0x4d588d[_0x8d0b51][_0x1c96('0x31')]=0x0;_0x4d588d[_0x8d0b51][_0x1c96('0x32')]=0x0;_0x4d588d[_0x8d0b51][_0x1c96('0x33')]=0x0;_0x4d588d[_0x8d0b51][_0x1c96('0x34')]=0x0;_0x4d588d[_0x8d0b51]['queueStatusComplete']=!![];}}}}function clearAgentBooked(_0x523b43){if(!_[_0x1c96('0x30')](_0x523b43)){for(var _0x556730 in _0x523b43){if(_0x523b43[_0x1c96('0x2f')](_0x556730)){_0x523b43[_0x556730]['unlockRR']=!![];}}}}VoiceQueueReport['prototype'][_0x1c96('0x35')]=function(){var _0x4438fb=this;for(var _0x104b15 in this[_0x1c96('0x12')]){if(this[_0x1c96('0x12')][_0x1c96('0x2f')](_0x104b15)&&!this['channels'][_0x104b15]['switch']){this[_0x1c96('0xf')][_0x1c96('0xc')](function(){if(!_[_0x1c96('0x36')](_0x4438fb[_0x1c96('0x12')][_0x104b15])){return ami[_0x1c96('0x37')]({'action':_0x1c96('0x38'),'channel':_0x4438fb[_0x1c96('0x12')][_0x104b15][_0x1c96('0x39')]})[_0x1c96('0x3a')](function(_0x5346ac){if(_0x5346ac[_0x1c96('0x3b')]===_0x1c96('0x3c')){setTimeout(function(){if(_0x4438fb[_0x1c96('0x12')][_0x104b15]){delete _0x4438fb[_0x1c96('0x12')][_0x104b15];logger[_0x1c96('0x3d')](_0x1c96('0x3e'),_0x104b15,util['inspect'](_0x5346ac,{'showHidden':![],'depth':null}));}if(_0x4438fb[_0x1c96('0x10')][_0x104b15]){delete _0x4438fb[_0x1c96('0x10')][_0x104b15];logger['error'](_0x1c96('0x3f'),_0x104b15,util[_0x1c96('0x40')](_0x5346ac,{'showHidden':![],'depth':null}));}if(_0x4438fb[_0x1c96('0x41')][_0x104b15]){delete _0x4438fb[_0x1c96('0x41')][_0x104b15];logger[_0x1c96('0x3d')](_0x1c96('0x42'),_0x104b15,util[_0x1c96('0x40')](_0x5346ac,{'showHidden':![],'depth':null}));}},0x1f40);}});}});}}};VoiceQueueReport['prototype']['syncFullyBooted']=function(){logger[_0x1c96('0x3d')](_0x1c96('0x43'));clearChannels(this['channels']);this[_0x1c96('0x44')](this['queueReports']);clearAgentBooked(this[_0x1c96('0x11')]);clearVoiceQueues(this[_0x1c96('0x14')]);clearCampaigns(this['campaigns']);};VoiceQueueReport['prototype'][_0x1c96('0x44')]=function(_0xbcc634){var _0x194546=this;if(!_[_0x1c96('0x30')](_0xbcc634)){for(var _0x15f14c in _0xbcc634){if(_0xbcc634[_0x1c96('0x2f')](_0x15f14c)){_0x194546[_0x1c96('0x45')](_0xbcc634[_0x15f14c],'clearqueuereport');delete _0xbcc634[_0x15f14c];}}}};VoiceQueueReport[_0x1c96('0xb')][_0x1c96('0x46')]=function(_0x5e0df7,_0x2bdcb6,_0x595037){io['to'](_0x5e0df7)[_0x1c96('0x46')](_0x2bdcb6,_0x595037);};VoiceQueueReport[_0x1c96('0xb')][_0x1c96('0x47')]=function(_0x435748,_0x53c183){logger[_0x1c96('0x48')](_0x1c96('0x49')+_0x53c183+_0x1c96('0x4a'),_0x435748[_0x1c96('0x4b')],util['inspect'](_0x435748,{'showHidden':![],'depth':null}));this[_0x1c96('0x46')](util[_0x1c96('0x4c')]('voice:queue:%s',_0x435748[_0x1c96('0x4d')]),_0x1c96('0x4e'),_0x435748);io[_0x1c96('0x46')](_0x1c96('0x4f'),_0x435748);};VoiceQueueReport[_0x1c96('0xb')][_0x1c96('0x45')]=function(_0x1f1213,_0xb74171){logger['debug'](_0x1c96('0x49')+_0xb74171+_0x1c96('0x50'),_0x1f1213[_0x1c96('0x4b')],util[_0x1c96('0x40')](_0x1f1213,{'showHidden':![],'depth':null}));this[_0x1c96('0x46')](util[_0x1c96('0x4c')](_0x1c96('0x51'),_0x1f1213[_0x1c96('0x4d')]),_0x1c96('0x52'),_0x1f1213);io['emit']('voice_queue_presence:remove',_0x1f1213);};VoiceQueueReport[_0x1c96('0xb')][_0x1c96('0x53')]=function(_0xaf5b6f,_0x25f8e7){if(_0xaf5b6f[_0x1c96('0x54')]==='inbound'){var _0x55da15={'id':_0xaf5b6f['id'],'name':_0xaf5b6f[_0x1c96('0x4d')],'strategy':_0xaf5b6f[_0x1c96('0x55')],'answered':_0xaf5b6f[_0x1c96('0x56')],'available':_0xaf5b6f['available'],'loggedIn':_0xaf5b6f[_0x1c96('0x57')],'pTalking':_0xaf5b6f[_0x1c96('0x33')],'sumBillable':_0xaf5b6f['sumBillable'],'sumDuration':_0xaf5b6f[_0x1c96('0x58')],'sumHoldTime':_0xaf5b6f['sumHoldTime']||0x0,'talking':_0xaf5b6f['talking'],'total':_0xaf5b6f[_0x1c96('0x59')],'type':_0xaf5b6f[_0x1c96('0x54')],'unmanaged':_0xaf5b6f[_0x1c96('0x5a')],'abandoned':_0xaf5b6f['abandoned'],'waiting':_0xaf5b6f['waiting']};if(_0xaf5b6f['Trunk']){_0x55da15[_0x1c96('0x5b')]={'id':_0xaf5b6f['Trunk']['id'],'name':_0xaf5b6f[_0x1c96('0x5b')]['name'],'active':_0xaf5b6f[_0x1c96('0x5b')][_0x1c96('0x5c')],'callerid':_0xaf5b6f[_0x1c96('0x5b')][_0x1c96('0x5d')]};}if(_0xaf5b6f['Interval']){_0x55da15[_0x1c96('0x5e')]={'id':_0xaf5b6f[_0x1c96('0x5e')]['id'],'name':_0xaf5b6f[_0x1c96('0x5e')][_0x1c96('0x4d')]};}var _0x5b711c=md5(JSON[_0x1c96('0x5f')](_0x55da15));if(_0xaf5b6f[_0x1c96('0x3')]!==_0x5b711c){_0xaf5b6f[_0x1c96('0x3')]=_0x5b711c;logger[_0x1c96('0x48')](_0x1c96('0x60')+_0x25f8e7+_0x1c96('0x61'),util[_0x1c96('0x40')](_0x55da15,{'showHidden':![],'depth':null}));this['emit'](util[_0x1c96('0x4c')]('voice:queue:%s',_0x55da15[_0x1c96('0x4d')]),_0x1c96('0x62'),_0x55da15);}}};VoiceQueueReport['prototype']['isNotNull']=function(_0x4692b5){return _0x4692b5!==null&&!_[_0x1c96('0x63')](_0x4692b5);};VoiceQueueReport[_0x1c96('0xb')]['loopQueueShow']=function(){var _0x1265af=this;setInterval(function(){_0x1265af[_0x1c96('0x35')]();ami[_0x1c96('0x37')]({'action':'queues'})['catch'](function(_0x33c8fc){logger['error']('[voiceQueueReport][queues]',util['inspect'](_0x33c8fc,{'showHidden':![],'depth':null}));});},0x2710);};VoiceQueueReport['prototype'][_0x1c96('0x2d')]=function(){var _0x4b5a50=this;setInterval(function(){if(_0x4b5a50['flagQueueSummary']){return ami['Action']({'action':_0x1c96('0x16')})[_0x1c96('0x64')](function(_0x160720){_0x4b5a50[_0x1c96('0x65')]=![];})[_0x1c96('0x3a')](function(_0x24130d){logger[_0x1c96('0x3d')](_0x1c96('0x66'),util[_0x1c96('0x40')](_0x24130d,{'showHidden':![],'depth':null}));});}},0x3e8);};VoiceQueueReport['prototype'][_0x1c96('0x17')]=function(_0x12be3f){try{if(this[_0x1c96('0x67')](_0x12be3f)&&this[_0x1c96('0x67')](_0x12be3f['queue'])){logger[_0x1c96('0x48')](_0x1c96('0x68'),util[_0x1c96('0x40')](_0x12be3f,{'showHidden':![],'depth':null}));if(this[_0x1c96('0x14')][_0x12be3f[_0x1c96('0x69')]]){logger[_0x1c96('0x6a')](_0x1c96('0x6b'),_0x12be3f[_0x1c96('0x69')]);var _0x4a55bf=_[_0x1c96('0x6c')](this[_0x1c96('0x12')],_0x1c96('0x69'))[_0x12be3f['queue']]||0x0;var _0x28cb48=_0x4a55bf-_0x12be3f[_0x1c96('0x6d')];if(this[_0x1c96('0x14')][_0x12be3f['queue']]['waiting']!==_[_0x1c96('0x6e')](_0x12be3f[_0x1c96('0x6d')])||this['voiceQueues'][_0x12be3f['queue']]['loggedIn']!==_[_0x1c96('0x6e')](_0x12be3f[_0x1c96('0x6f')])||this[_0x1c96('0x14')][_0x12be3f[_0x1c96('0x69')]]['available']!==_[_0x1c96('0x6e')](_0x12be3f[_0x1c96('0x70')])||this[_0x1c96('0x14')][_0x12be3f[_0x1c96('0x69')]][_0x1c96('0x32')]!==_0x28cb48){this[_0x1c96('0x14')][_0x12be3f[_0x1c96('0x69')]]['waiting']=_['toNumber'](_0x12be3f[_0x1c96('0x6d')]);this[_0x1c96('0x14')][_0x12be3f[_0x1c96('0x69')]][_0x1c96('0x57')]=_[_0x1c96('0x6e')](_0x12be3f['loggedin']);this['voiceQueues'][_0x12be3f[_0x1c96('0x69')]][_0x1c96('0x70')]=_[_0x1c96('0x6e')](_0x12be3f[_0x1c96('0x70')]);this[_0x1c96('0x14')][_0x12be3f['queue']]['talking']=_0x28cb48>0x0?_0x28cb48:0x0;this[_0x1c96('0x14')][_0x12be3f[_0x1c96('0x69')]][_0x1c96('0x32')]=this[_0x1c96('0x14')][_0x12be3f[_0x1c96('0x69')]]['talking']>_['toNumber'](_0x12be3f[_0x1c96('0x6f')])?_[_0x1c96('0x6e')](_0x12be3f['loggedin']):this[_0x1c96('0x14')][_0x12be3f[_0x1c96('0x69')]][_0x1c96('0x32')];this[_0x1c96('0x53')](this['voiceQueues'][_0x12be3f[_0x1c96('0x69')]],'queuesummary');}logger['debug'](_0x1c96('0x71'),util[_0x1c96('0x40')](this[_0x1c96('0x14')][_0x12be3f[_0x1c96('0x69')]],{'showHidden':![],'depth':null}));ami['emit'](_0x1c96('0x72'),this[_0x1c96('0x14')][_0x12be3f['queue']]);}}}catch(_0x2b3b77){logger[_0x1c96('0x3d')](_0x1c96('0x66'),util['inspect'](_0x2b3b77,{'showHidden':![],'depth':null}));}};VoiceQueueReport[_0x1c96('0xb')]['syncQueueSummaryComplete']=function(_0x5d0006){logger[_0x1c96('0x48')](_0x1c96('0x73'),util['inspect'](_0x5d0006,{'showHidden':![],'depth':null}));this[_0x1c96('0x65')]=!![];};VoiceQueueReport[_0x1c96('0xb')]['syncQueueCallerJoin']=function(_0x146b35){try{if(this[_0x1c96('0x67')](_0x146b35)){logger[_0x1c96('0x48')](_0x1c96('0x74'),_0x146b35['uniqueid'],util['inspect'](_0x146b35,{'showHidden':![],'depth':null}));if(_['isUndefined'](this[_0x1c96('0x10')][_0x146b35[_0x1c96('0x4b')]]))this[_0x1c96('0x10')][_0x146b35[_0x1c96('0x4b')]]=[];if(_[_0x1c96('0x63')](this[_0x1c96('0x12')][_0x146b35[_0x1c96('0x4b')]]))this['channels'][_0x146b35[_0x1c96('0x4b')]]={};var _0x36ee41=new QueueReport();_0x36ee41[_0x1c96('0x4d')]=_0x146b35[_0x1c96('0x69')];_0x36ee41[_0x1c96('0x54')]=this['voiceQueues'][_0x36ee41[_0x1c96('0x4d')]]&&this[_0x1c96('0x14')][_0x36ee41[_0x1c96('0x4d')]][_0x1c96('0x54')]?this[_0x1c96('0x14')][_0x36ee41[_0x1c96('0x4d')]][_0x1c96('0x54')]||'inbound':_0x1c96('0x75');_0x36ee41[_0x1c96('0x69')]=_0x146b35[_0x1c96('0x69')];_0x36ee41[_0x1c96('0x76')]=moment()[_0x1c96('0x4c')](_0x1c96('0x77'));_0x36ee41['position']=_0x146b35['position'];_0x36ee41[_0x1c96('0x78')]=_0x146b35[_0x1c96('0x78')];_0x36ee41[_0x1c96('0x4b')]=_0x146b35['uniqueid'];_0x36ee41[_0x1c96('0x79')]=this[_0x1c96('0x12')][_0x146b35[_0x1c96('0x4b')]]['routealias'];logger[_0x1c96('0x6a')](_0x1c96('0x7a'),_0x36ee41['name'],_0x36ee41[_0x1c96('0x54')]);_[_0x1c96('0x7b')](_0x36ee41,_[_0x1c96('0x7c')](_0x146b35,_['keys'](_0x36ee41)));this[_0x1c96('0x10')][_0x146b35['uniqueid']][_0x1c96('0x7d')](_0x36ee41);this[_0x1c96('0x12')][_0x146b35[_0x1c96('0x4b')]]=_0x36ee41;this[_0x1c96('0x47')](_0x36ee41,_0x1c96('0x1b'));}}catch(_0x27b49c){logger[_0x1c96('0x3d')](_0x1c96('0x74'),_0x146b35[_0x1c96('0x4b')],util['inspect'](_0x27b49c,{'showHidden':![],'depth':null}));}};VoiceQueueReport[_0x1c96('0xb')][_0x1c96('0x1e')]=function(_0x416d21){try{if(this[_0x1c96('0x67')](_0x416d21)){logger['debug']('[%s][voiceQueueReport][queuecallerabandon]',_0x416d21[_0x1c96('0x4b')],util[_0x1c96('0x40')](_0x416d21,{'showHidden':![],'depth':null}));if(this[_0x1c96('0x10')][_0x416d21[_0x1c96('0x4b')]]){var _0x1c3816=_[_0x1c96('0x7e')](this[_0x1c96('0x10')][_0x416d21[_0x1c96('0x4b')]]);_0x1c3816[_0x1c96('0x7f')]=![];_0x1c3816[_0x1c96('0x80')]=null;_0x1c3816['holdtime']=_0x416d21[_0x1c96('0x81')];_0x1c3816[_0x1c96('0x82')]=_0x416d21['originalposition'];_0x1c3816[_0x1c96('0x1d')]=!![];_0x1c3816['queuecallerabandonAt']=moment()[_0x1c96('0x4c')](_0x1c96('0x77'));_0x1c3816[_0x1c96('0x83')]=_0x1c96('0x84');_0x1c3816[_0x1c96('0x85')]=null;logger[_0x1c96('0x6a')](_0x1c96('0x86'),_0x1c3816[_0x1c96('0x4d')],_0x1c3816[_0x1c96('0x54')]);this[_0x1c96('0x12')][_0x416d21[_0x1c96('0x4b')]]=_0x1c3816;this['emitVoiceQueueChannelRemove'](_0x1c3816,_0x1c96('0x1d'));}}}catch(_0x18358f){logger[_0x1c96('0x3d')](_0x1c96('0x87'),_0x416d21[_0x1c96('0x4b')],util[_0x1c96('0x40')](_0x18358f,{'showHidden':![],'depth':null}));}};VoiceQueueReport[_0x1c96('0xb')][_0x1c96('0x88')]=function(_0x179ced){try{if(this[_0x1c96('0x67')](_0x179ced)){logger[_0x1c96('0x48')]('[%s][voiceQueueReport][queuecallerleave]',_0x179ced[_0x1c96('0x4b')],util[_0x1c96('0x40')](_0x179ced,{'showHidden':![],'depth':null}));if(this[_0x1c96('0x10')][_0x179ced[_0x1c96('0x4b')]]){var _0x2235e8=_['last'](this['queueReports'][_0x179ced['uniqueid']]);_0x2235e8['queuecallerleaveAt']=moment()[_0x1c96('0x4c')](_0x1c96('0x77'));_0x2235e8['connectedlinenum']=_0x179ced[_0x1c96('0x89')];_0x2235e8[_0x1c96('0x8a')]=_0x179ced['connectedlinename'];logger[_0x1c96('0x6a')]('[voiceQueueReport][queuecallerleave]\x20name:%s\x20type:%s\x20connectedlinenum:%s\x20connectedlinename:%s',_0x2235e8['name'],_0x2235e8[_0x1c96('0x54')],_0x179ced['connectedlinenum'],_0x179ced[_0x1c96('0x8a')]);this['channels'][_0x179ced[_0x1c96('0x4b')]]=_0x2235e8;this[_0x1c96('0x47')](_0x2235e8,_0x1c96('0x1f'));}}}catch(_0x399945){logger[_0x1c96('0x3d')]('[%s][voiceQueueReport][queuecallerleave]',_0x179ced[_0x1c96('0x4b')],util[_0x1c96('0x40')](_0x399945,{'showHidden':![],'depth':null}));}};VoiceQueueReport[_0x1c96('0xb')][_0x1c96('0x21')]=function(_0x2e9867){try{if(this[_0x1c96('0x67')](_0x2e9867)){logger[_0x1c96('0x48')]('[%s][voiceQueueReport][agentconnect]',_0x2e9867[_0x1c96('0x4b')],util[_0x1c96('0x40')](_0x2e9867,{'showHidden':![],'depth':null}));if(this['queueReports'][_0x2e9867['uniqueid']]){var _0x41ed68=_[_0x1c96('0x7e')](this['queueReports'][_0x2e9867[_0x1c96('0x4b')]]);_0x41ed68[_0x1c96('0x7f')]=!![];_0x41ed68['queuecallerexitreason']='COMPLETEDBYAGENT';logger['info'](_0x1c96('0x8b'),_0x41ed68[_0x1c96('0x4d')],_0x41ed68[_0x1c96('0x54')]);}}}catch(_0x4ea7e4){logger['error'](_0x1c96('0x8c'),_0x2e9867[_0x1c96('0x4b')],util['inspect'](_0x4ea7e4,{'showHidden':![],'depth':null}));}};VoiceQueueReport[_0x1c96('0xb')][_0x1c96('0x20')]=function(_0x134bc7){try{if(this[_0x1c96('0x67')](_0x134bc7)){logger['debug'](_0x1c96('0x8d'),_0x134bc7[_0x1c96('0x4b')],util[_0x1c96('0x40')](_0x134bc7,{'showHidden':![],'depth':null}));if(this['queueReports'][_0x134bc7['uniqueid']]){var _0x828af=_[_0x1c96('0x7e')](this[_0x1c96('0x10')][_0x134bc7[_0x1c96('0x4b')]]);_0x828af['queuecallerabandon']=![];_0x828af[_0x1c96('0x8e')]=null;_0x828af['assigned']=!![];_0x828af[_0x1c96('0x85')]=_0x134bc7[_0x1c96('0x8f')];_0x828af[_0x1c96('0x81')]=_0x134bc7[_0x1c96('0x81')];_0x828af[_0x1c96('0x7f')]=!![];_0x828af[_0x1c96('0x90')]=![];_0x828af[_0x1c96('0x91')]=null;if(!_0x828af[_0x1c96('0x92')]){if(_0x134bc7[_0x1c96('0x93')]=='transfer'){_0x828af[_0x1c96('0x83')]=_0x1c96('0x94');logger[_0x1c96('0x6a')]('[voiceQueueReport][agentcomplete]\x20name:%s\x20type:%s\x20queuecallerexitreason:COMPLETED',_0x828af[_0x1c96('0x4d')],_0x828af[_0x1c96('0x54')]);}else{if(_[_0x1c96('0x95')](_0x134bc7[_0x1c96('0x39')][_0x1c96('0x96')](),_0x1c96('0x97'))){if(this[_0x1c96('0x10')][_0x134bc7[_0x1c96('0x98')]]){var _0x496012=_[_0x1c96('0x7e')](this[_0x1c96('0x10')][_0x134bc7[_0x1c96('0x98')]]);_0x496012[_0x1c96('0x7f')]=![];_0x496012[_0x1c96('0x90')]=!![];_0x496012[_0x1c96('0x91')]=moment(_0x828af[_0x1c96('0x76')])['add'](_0x134bc7[_0x1c96('0x81')],_0x1c96('0x99'))[_0x1c96('0x4c')]('YYYY-MM-DD\x20HH:mm:ss');_0x496012[_0x1c96('0x83')]=_0x1c96('0x9a');_0x496012[_0x1c96('0x92')]=!![];_0x496012[_0x1c96('0x9b')]=_0x1c96('0x9c');_0x496012[_0x1c96('0x9d')]=_0x134bc7[_0x1c96('0x9e')];_0x496012['transferuniqueid']=_0x134bc7[_0x1c96('0x4b')];logger[_0x1c96('0x6a')](_0x1c96('0x9f'),_0x496012[_0x1c96('0x4d')],_0x496012[_0x1c96('0x54')]);var _0x58cadd=this['queueReports'][_0x134bc7[_0x1c96('0x98')]];this[_0x1c96('0x10')][_0x134bc7[_0x1c96('0x98')]]=this['queueReports'][_0x134bc7[_0x1c96('0x4b')]];this['queueReports'][_0x134bc7['uniqueid']]=_0x58cadd;}}else{_0x828af[_0x1c96('0x83')]=_0x1c96('0xa0')+_0x134bc7[_0x1c96('0x93')][_0x1c96('0xa1')]();logger[_0x1c96('0x6a')](_0x1c96('0xa2'),_0x828af['name'],_0x828af[_0x1c96('0x54')],_0x828af['queuecallerexitreason']);}}}this[_0x1c96('0x12')][_0x134bc7['uniqueid']]=_0x828af;this[_0x1c96('0x45')](_0x828af,'agentcomplete');}}}catch(_0x2fe4f6){logger[_0x1c96('0x3d')](_0x1c96('0x8d'),_0x134bc7[_0x1c96('0x4b')],util[_0x1c96('0x40')](_0x2fe4f6,{'showHidden':![],'depth':null}));}};VoiceQueueReport['prototype'][_0x1c96('0x22')]=function(_0x1e109d){try{if(this[_0x1c96('0x67')](_0x1e109d)){logger[_0x1c96('0x48')]('[%s][voiceQueueReport][varset]',_0x1e109d[_0x1c96('0x4b')],util[_0x1c96('0x40')](_0x1e109d,{'showHidden':![],'depth':null}));this[_0x1c96('0xa3')](_0x1e109d['uniqueid'],_[_0x1c96('0xa4')](_0x1e109d['variable'])[0x0],_0x1e109d[_0x1c96('0xa5')]);if(this[_0x1c96('0x10')][_0x1e109d[_0x1c96('0x4b')]]){var _0x8c1015=_['last'](this[_0x1c96('0x10')][_0x1e109d[_0x1c96('0x4b')]]);if(_0x8c1015){if(this[_0x1c96('0x67')](_0x1e109d[_0x1c96('0xa6')])&&this['isNotNull'](_0x1e109d['variable'][_0x1c96('0xa7')])){switch(_0x1e109d[_0x1c96('0xa5')]){case _0x1c96('0xa8'):_0x8c1015[_0x1c96('0x90')]=![];_0x8c1015[_0x1c96('0x91')]=null;break;case _0x1c96('0xa9'):_0x8c1015[_0x1c96('0xaa')]='timeout';_0x8c1015['queuecallerexit']=!![];_0x8c1015['queuecallerexitAt']=moment()[_0x1c96('0x4c')](_0x1c96('0x77'));_0x8c1015[_0x1c96('0xab')]=moment()[_0x1c96('0x4c')](_0x1c96('0x77'));logger[_0x1c96('0x48')](_0x1c96('0xac'),_0x1e109d[_0x1c96('0x4b')],util[_0x1c96('0x40')](_0x8c1015,{'showHidden':![],'depth':null}));ami[_0x1c96('0x46')](_0x1c96('0xad'),_0x8c1015);break;default:_0x8c1015[_0x1c96('0x90')]=!![];_0x8c1015['queuecallerexitAt']=moment()['format'](_0x1c96('0x77'));_0x8c1015[_0x1c96('0xab')]=moment()[_0x1c96('0x4c')](_0x1c96('0x77'));}_0x8c1015[_0x1c96('0x1d')]=![];_0x8c1015[_0x1c96('0x8e')]=null;_0x8c1015['queuecallerexitreason']=_0x1e109d['value'];this[_0x1c96('0x12')][_0x1e109d[_0x1c96('0x4b')]]=_0x8c1015;this[_0x1c96('0x45')](_0x8c1015,_0x1c96('0xae'));}else if(this[_0x1c96('0x67')](_0x1e109d[_0x1c96('0xa6')])&&this[_0x1c96('0x67')](_0x1e109d[_0x1c96('0xa6')]['queueposition'])){if(!_0x8c1015[_0x1c96('0x1d')]){_0x8c1015[_0x1c96('0x90')]=!![];_0x8c1015[_0x1c96('0x91')]=moment()['format']('YYYY-MM-DD\x20HH:mm:ss');_0x8c1015['queuecallerexitreason']=_0x1c96('0xaf');_0x8c1015[_0x1c96('0xab')]=moment()[_0x1c96('0x4c')](_0x1c96('0x77'));this[_0x1c96('0x12')][_0x1e109d[_0x1c96('0x4b')]]=_0x8c1015;}}logger['info']('[%s][voiceQueueReport][varset]\x20name:%s\x20type:%s\x20variable:%s\x20value:%s',_0x1e109d[_0x1c96('0x4b')],_0x8c1015[_0x1c96('0x4d')],_0x8c1015[_0x1c96('0x54')],_['keys'](_0x1e109d[_0x1c96('0xa6')])[0x0],_0x1e109d[_0x1c96('0xa5')]);_0x8c1015['variables']=this[_0x1c96('0x41')][_0x1e109d['uniqueid']];}}}}catch(_0x401fab){logger[_0x1c96('0x3d')]('[%s][voiceQueueReport][varset]',_0x1e109d['uniqueid'],util[_0x1c96('0x40')](_0x401fab,{'showHidden':![],'depth':null}));}};VoiceQueueReport['prototype']['addVariable']=function(_0x5e0d1c,_0x2ad449,_0xd01eed){var _0x1d31b4=[_0x1c96('0xb0'),'rtpaudioqosbridged',_0x1c96('0xb1'),'rtpaudioqosjitterbridged',_0x1c96('0xb2'),'rtpaudioqoslossbridged',_0x1c96('0xb3'),_0x1c96('0xb4'),_0x1c96('0xb5'),_0x1c96('0xb6'),_0x1c96('0xb7'),_0x1c96('0xb8'),'membercalls',_0x1c96('0xb9'),_0x1c96('0xba'),_0x1c96('0xbb'),_0x1c96('0x8f'),_0x1c96('0xbc'),_0x1c96('0xbd')];if(!_['isNil'](_0x2ad449)&&!_[_0x1c96('0xbe')](_0x1d31b4,_0x2ad449)){if(_[_0x1c96('0x63')](this[_0x1c96('0x41')][_0x5e0d1c])){this[_0x1c96('0x41')][_0x5e0d1c]={};}this[_0x1c96('0x41')][_0x5e0d1c][_0x2ad449]=_0xd01eed;}};VoiceQueueReport[_0x1c96('0xb')][_0x1c96('0xbf')]=function(_0x2cc413){try{if(this[_0x1c96('0x67')](_0x2cc413)){logger[_0x1c96('0x48')](_0x1c96('0xc0'),_0x2cc413[_0x1c96('0x4b')],util[_0x1c96('0x40')](_0x2cc413,{'showHidden':![],'depth':null}));if(this[_0x1c96('0x10')][_0x2cc413[_0x1c96('0x4b')]]){for(var _0x35b16b=0x0,_0xd71ca7={};_0x35b16b<this[_0x1c96('0x10')][_0x2cc413[_0x1c96('0x4b')]][_0x1c96('0xc1')];_0x35b16b+=0x1){_0xd71ca7=this[_0x1c96('0x10')][_0x2cc413[_0x1c96('0x4b')]][_0x35b16b];if(this[_0x1c96('0x14')][_0xd71ca7[_0x1c96('0x69')]]){if(_0xd71ca7['queuecallerexit']&&_0xd71ca7[_0x1c96('0x92')]!=!![]){this[_0x1c96('0x14')][_0xd71ca7[_0x1c96('0x69')]][_0x1c96('0x5a')]+=0x1;}if(_0xd71ca7['queuecallerabandon']){this['voiceQueues'][_0xd71ca7[_0x1c96('0x69')]][_0x1c96('0xc2')]+=0x1;}this[_0x1c96('0x14')][_0xd71ca7[_0x1c96('0x69')]]['sumHoldTime']+=moment(_0xd71ca7[_0x1c96('0xab')])[_0x1c96('0xc3')](_0xd71ca7['queuecallerjoinAt'],_0x1c96('0x99'))||0x0;if(_0x35b16b===this[_0x1c96('0x10')][_0x2cc413[_0x1c96('0x4b')]][_0x1c96('0xc1')]-0x1){this['voiceQueues'][_0xd71ca7[_0x1c96('0x69')]][_0x1c96('0x58')]+=moment()[_0x1c96('0xc4')](0x0)[_0x1c96('0xc3')](_0xd71ca7[_0x1c96('0x76')],'seconds');this[_0x1c96('0x14')][_0xd71ca7[_0x1c96('0x69')]][_0x1c96('0x59')]+=0x1;if(_0xd71ca7['queuecallercomplete']){this['voiceQueues'][_0xd71ca7[_0x1c96('0x69')]]['answered']+=0x1;this[_0x1c96('0x14')][_0xd71ca7[_0x1c96('0x69')]][_0x1c96('0xc5')]+=moment()['milliseconds'](0x0)['diff'](_0xd71ca7['queuecallerleaveAt'],_0x1c96('0x99'));_0xd71ca7[_0x1c96('0x80')]=moment()['format'](_0x1c96('0x77'));_0xd71ca7['queuecallerexit']=![];_0xd71ca7[_0x1c96('0x91')]=null;}if(_0xd71ca7['queuecallerexit']&&_0xd71ca7[_0x1c96('0x92')]!=!![]){_0xd71ca7[_0x1c96('0xaa')]=_0x1c96('0x5a');logger[_0x1c96('0x48')](_0x1c96('0xc6'),_0x2cc413['uniqueid'],util[_0x1c96('0x40')](_0xd71ca7,{'showHidden':![],'depth':null}));ami['emit'](_0x1c96('0xc7'),_0xd71ca7);}if(_0xd71ca7[_0x1c96('0x1d')]){_0xd71ca7[_0x1c96('0xaa')]=_0x1c96('0xc2');logger[_0x1c96('0x48')](_0x1c96('0xc8'),_0x2cc413[_0x1c96('0x4b')],util['inspect'](_0xd71ca7,{'showHidden':![],'depth':null}));ami['emit'](_0x1c96('0xc9'),_0xd71ca7);}}else{this[_0x1c96('0x14')][_0xd71ca7[_0x1c96('0x69')]]['sumDuration']+=this[_0x1c96('0x14')][_0xd71ca7[_0x1c96('0x69')]][_0x1c96('0xca')];}logger[_0x1c96('0x6a')]('[%s][voiceQueueReport][hangup]\x20name:%s\x20type:%s\x20reason:%s',_0x2cc413[_0x1c96('0x4b')],_0xd71ca7[_0x1c96('0x4d')],_0xd71ca7['type'],_0x2cc413[_0x1c96('0xcb')]);this[_0x1c96('0x12')][_0x2cc413[_0x1c96('0x4b')]]=_0xd71ca7;this[_0x1c96('0x45')](_0xd71ca7,_0x1c96('0x23'));this[_0x1c96('0x53')](this[_0x1c96('0x14')][_0xd71ca7[_0x1c96('0x69')]],_0x1c96('0x23'));}}logger[_0x1c96('0x48')](_0x1c96('0xcc'),_0x2cc413[_0x1c96('0x4b')],util[_0x1c96('0x40')](this[_0x1c96('0x10')][_0x2cc413[_0x1c96('0x4b')]],{'showHidden':![],'depth':null}));ami[_0x1c96('0x46')](_0x1c96('0xcd'),this[_0x1c96('0x10')][_0x2cc413[_0x1c96('0x4b')]]);delete this[_0x1c96('0x10')][_0x2cc413[_0x1c96('0x4b')]];delete this['channels'][_0x2cc413[_0x1c96('0x4b')]];}if(this[_0x1c96('0x41')][_0x2cc413[_0x1c96('0x4b')]]){delete this[_0x1c96('0x41')][_0x2cc413['uniqueid']];}}}catch(_0x5224dc){logger[_0x1c96('0x3d')]('[%s][voiceQueueReport][hangup]',_0x2cc413[_0x1c96('0x4b')],util[_0x1c96('0x40')](_0x5224dc,{'showHidden':![],'depth':null}));}};VoiceQueueReport[_0x1c96('0xb')][_0x1c96('0x2b')]=function(_0x16b83c){try{if(this[_0x1c96('0x67')](_0x16b83c)){logger[_0x1c96('0x48')](_0x1c96('0xce'),_0x16b83c[_0x1c96('0x4b')],util[_0x1c96('0x40')](_0x16b83c,{'showHidden':![],'depth':null}));var _0x1392c3;if(this[_0x1c96('0x10')][_0x16b83c[_0x1c96('0xcf')]]){_0x1392c3=_[_0x1c96('0x7e')](this['queueReports'][_0x16b83c[_0x1c96('0xcf')]]);_0x1392c3[_0x1c96('0x9d')]=_0x16b83c[_0x1c96('0xd0')];_0x1392c3['transferuniqueid']=_0x16b83c[_0x1c96('0xd1')];_0x1392c3['queuecallerexitreason']=_0x1c96('0xd2');_0x1392c3[_0x1c96('0x92')]=!![];_0x1392c3[_0x1c96('0x9b')]='ATTENDED';if(this[_0x1c96('0x10')][_0x16b83c['secondtransfereruniqueid']]){var _0x3847f9=this[_0x1c96('0x10')][_0x16b83c['secondtransfereruniqueid']];this[_0x1c96('0x10')][_0x16b83c[_0x1c96('0xd1')]]=this[_0x1c96('0x10')][_0x16b83c[_0x1c96('0xcf')]];this['queueReports'][_0x16b83c['transfereeuniqueid']]=_0x3847f9;var _0xecfeb3=_['last'](this[_0x1c96('0x10')][_0x16b83c[_0x1c96('0xcf')]]);_0xecfeb3[_0x1c96('0xd3')]=!![];}logger['info'](_0x1c96('0xd4'),_0x16b83c[_0x1c96('0x4b')],_0x1392c3[_0x1c96('0x4d')],_0x1392c3[_0x1c96('0x54')],_0x1392c3[_0x1c96('0x9d')],_0x1392c3[_0x1c96('0xd5')]);}else if(this[_0x1c96('0x10')][_0x16b83c[_0x1c96('0xd6')]]){_0x1392c3=_[_0x1c96('0x7e')](this[_0x1c96('0x10')][_0x16b83c[_0x1c96('0xd6')]]);_0x1392c3['transferexten']=_0x16b83c[_0x1c96('0xd7')];_0x1392c3[_0x1c96('0xd5')]=_0x16b83c[_0x1c96('0xd8')];_0x1392c3[_0x1c96('0x83')]=_0x1c96('0xd2');_0x1392c3[_0x1c96('0x92')]=!![];_0x1392c3[_0x1c96('0x9b')]='ATTENDED';if(this[_0x1c96('0x10')][_0x16b83c['origtransfereruniqueid']]){var _0x3847f9=this[_0x1c96('0x10')][_0x16b83c[_0x1c96('0xd8')]];this[_0x1c96('0x10')][_0x16b83c[_0x1c96('0xd8')]]=this[_0x1c96('0x10')][_0x16b83c[_0x1c96('0xd6')]];this[_0x1c96('0x10')][_0x16b83c[_0x1c96('0xd6')]]=_0x3847f9;var _0xecfeb3=_['last'](this[_0x1c96('0x10')][_0x16b83c['transfertargetuniqueid']]);_0xecfeb3[_0x1c96('0xd3')]=!![];}logger[_0x1c96('0x6a')](_0x1c96('0xd4'),_0x16b83c[_0x1c96('0x4b')],_0x1392c3[_0x1c96('0x4d')],_0x1392c3['type'],_0x1392c3[_0x1c96('0x9d')],_0x1392c3[_0x1c96('0xd5')]);}}}catch(_0x270d95){logger[_0x1c96('0x3d')](_0x1c96('0xce'),_0x16b83c[_0x1c96('0x4b')],util['inspect'](_0x270d95,{'showHidden':![],'depth':null}));}};VoiceQueueReport[_0x1c96('0xb')][_0x1c96('0xd9')]=function(_0x4b05da){try{if(this['isNotNull'](_0x4b05da)){logger['debug']('[%s][voiceQueueReport][blindtransfer]',_0x4b05da['uniqueid'],util[_0x1c96('0x40')](_0x4b05da,{'showHidden':![],'depth':null}));if(this[_0x1c96('0x10')][_0x4b05da['transfereeuniqueid']]){var _0x4fe089=_[_0x1c96('0x7e')](this[_0x1c96('0x10')][_0x4b05da['transfereeuniqueid']]);_0x4fe089[_0x1c96('0x83')]=_0x1c96('0xda');_0x4fe089[_0x1c96('0x92')]=!![];_0x4fe089[_0x1c96('0x9b')]=_0x1c96('0xdb');_0x4fe089[_0x1c96('0x9d')]=_0x4b05da[_0x1c96('0xdc')];_0x4fe089['transferuniqueid']=_0x4b05da[_0x1c96('0xcf')];logger[_0x1c96('0x6a')]('[%s][voiceQueueReport][blindTransfer]\x20name:%s\x20type:%s\x20transferexten:%s\x20transferuniqueid:%s',_0x4b05da[_0x1c96('0x4b')],_0x4fe089[_0x1c96('0x4d')],_0x4fe089[_0x1c96('0x54')],_0x4fe089[_0x1c96('0x9d')],_0x4fe089['transferuniqueid']);this[_0x1c96('0xbf')]({'event':_0x1c96('0xdd'),'uniqueid':_0x4b05da[_0x1c96('0xcf')],'context':_0x4b05da['context'],'channel':_0x4b05da[_0x1c96('0xde')]});}}}catch(_0x3dbf37){logger[_0x1c96('0x3d')](_0x1c96('0xdf'),_0x4b05da[_0x1c96('0x4b')],util[_0x1c96('0x40')](_0x3dbf37,{'showHidden':![],'depth':null}));}};VoiceQueueReport[_0x1c96('0xb')][_0x1c96('0x27')]=function(_0x15795a){try{if(this['isNotNull'](_0x15795a)){logger[_0x1c96('0x48')]('[%s][voiceQueueReport][musiconholdstart]',_0x15795a[_0x1c96('0x4b')],util['inspect'](_0x15795a,{'showHidden':![],'depth':null}));if(this[_0x1c96('0x10')][_0x15795a[_0x1c96('0x4b')]]){var _0x28aa5b=_[_0x1c96('0x7e')](this[_0x1c96('0x10')][_0x15795a['uniqueid']]);if(!_['isNil'](_0x28aa5b[_0x1c96('0xab')])){_0x28aa5b['mohstarttime']=moment()[_0x1c96('0x4c')](_0x1c96('0x77'));logger[_0x1c96('0x6a')](_0x1c96('0xe0'),_0x15795a[_0x1c96('0x4b')],_0x28aa5b[_0x1c96('0xe1')]);}}}}catch(_0x217b83){logger[_0x1c96('0x3d')](_0x1c96('0xe2'),_0x15795a[_0x1c96('0x4b')],util['inspect'](_0x217b83,{'showHidden':![],'depth':null}));}};VoiceQueueReport[_0x1c96('0xb')][_0x1c96('0x29')]=function(_0x3cf35d){try{if(this['isNotNull'](_0x3cf35d)){logger['debug']('[%s][voiceQueueReport][musiconholdstop]',_0x3cf35d[_0x1c96('0x4b')],util[_0x1c96('0x40')](_0x3cf35d,{'showHidden':![],'depth':null}));if(this[_0x1c96('0x10')][_0x3cf35d[_0x1c96('0x4b')]]){var _0x28d786=_['last'](this[_0x1c96('0x10')][_0x3cf35d[_0x1c96('0x4b')]]);if(!_[_0x1c96('0x36')](_0x28d786[_0x1c96('0xe1')])){_0x28d786[_0x1c96('0xe3')]+=moment()[_0x1c96('0xc4')](0x0)[_0x1c96('0xc3')](_0x28d786[_0x1c96('0xe1')],_0x1c96('0x99'));logger[_0x1c96('0x6a')]('[%s][voiceQueueReport][musiconholdstop]\x20mohtime:%s',_0x3cf35d[_0x1c96('0x4b')],_0x28d786[_0x1c96('0xe3')]);delete _0x28d786[_0x1c96('0xe1')];}}}}catch(_0x59962e){logger[_0x1c96('0x3d')](_0x1c96('0xe4'),_0x3cf35d['uniqueid'],util['inspect'](_0x59962e,{'showHidden':![],'depth':null}));}};VoiceQueueReport[_0x1c96('0xb')][_0x1c96('0x25')]=function(_0x29a40c){try{if(this[_0x1c96('0x67')](_0x29a40c)){logger[_0x1c96('0x48')](_0x1c96('0xe5'),_0x29a40c[_0x1c96('0x4b')],util[_0x1c96('0x40')](_0x29a40c,{'showHidden':![],'depth':null}));if(_0x29a40c[_0x1c96('0xe6')]['toLowerCase']()===_0x1c96('0xe7')){_0x29a40c[_0x1c96('0xe8')]=_0x29a40c['appdata']&&_0x29a40c[_0x1c96('0xe9')][_0x1c96('0x95')](_0x1c96('0xea'))?_0x29a40c['appdata']:(_0x29a40c[_0x1c96('0xe9')]||_0x29a40c[_0x1c96('0xe8')])['toLowerCase']();if(_[_0x1c96('0x95')](_0x29a40c[_0x1c96('0xe8')][_0x1c96('0x96')](),_0x1c96('0xeb'))){logger['info'](_0x1c96('0xec'),_0x29a40c[_0x1c96('0x4b')],_0x29a40c[_0x1c96('0xe6')],_0x29a40c['applicationdata']);if(_[_0x1c96('0x63')](this['channels'][_0x29a40c[_0x1c96('0x4b')]]))this['channels'][_0x29a40c[_0x1c96('0x4b')]]={};var _0x31b2d0=_0x29a40c[_0x1c96('0xe8')][_0x1c96('0xed')]('=');var _0x5ccb44=_0x31b2d0[0x0][_0x1c96('0x96')]()[_0x1c96('0xee')](/cdr\((.*)\)/);if(_0x5ccb44)this[_0x1c96('0x12')][_0x29a40c[_0x1c96('0x4b')]][_0x5ccb44[0x1]]=_0x31b2d0[0x1];}}}}catch(_0x587782){logger[_0x1c96('0x3d')](_0x1c96('0xef'),_0x29a40c[_0x1c96('0x4b')],util['inspect'](_0x587782,{'showHidden':![],'depth':null}));}};module[_0x1c96('0xf0')]=VoiceQueueReport;
\ No newline at end of file
index be58eab..f6455d1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4280=['queue','Request','CreateReportAgentPreview','createHistory','campaign'];(function(_0x14add3,_0x13ce8d){var _0x4a174f=function(_0x2b3ed7){while(--_0x2b3ed7){_0x14add3['push'](_0x14add3['shift']());}};_0x4a174f(++_0x13ce8d);}(_0x4280,0x12f));var _0x0428=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x4280[_0x3dd15e];return _0x231fd0;};'use strict';var client=require('../client');exports[_0x0428('0x0')]=function(_0x4e5df3){return function(){_0x4e5df3[_0x0428('0x1')]=_0x4e5df3[_0x0428('0x2')];return client[_0x0428('0x3')](_0x0428('0x4'),{'body':_0x4e5df3,'log':_0x0428('0x4')});};};
\ No newline at end of file
+var _0x079e=['Request','CreateReportAgentPreview','../client','campaign','queue'];(function(_0xca1cb1,_0x645692){var _0x154eed=function(_0x56d51d){while(--_0x56d51d){_0xca1cb1['push'](_0xca1cb1['shift']());}};_0x154eed(++_0x645692);}(_0x079e,0x160));var _0xe079=function(_0x12db1e,_0x46156b){_0x12db1e=_0x12db1e-0x0;var _0x3a0e11=_0x079e[_0x12db1e];return _0x3a0e11;};'use strict';var client=require(_0xe079('0x0'));exports['createHistory']=function(_0x35c5b7){return function(){_0x35c5b7[_0xe079('0x1')]=_0x35c5b7[_0xe079('0x2')];return client[_0xe079('0x3')](_0xe079('0x4'),{'body':_0x35c5b7,'log':_0xe079('0x4')});};};
\ No newline at end of file
index 1d84b00..f0ce394 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6901=['../client','Request'];(function(_0x23cc64,_0x59c7f4){var _0x43c99f=function(_0x3b70c2){while(--_0x3b70c2){_0x23cc64['push'](_0x23cc64['shift']());}};_0x43c99f(++_0x59c7f4);}(_0x6901,0x100));var _0x1690=function(_0x267695,_0x5a6cdc){_0x267695=_0x267695-0x0;var _0x3866ec=_0x6901[_0x267695];return _0x3866ec;};'use strict';var client=require(_0x1690('0x0'));exports['create']=function(_0x3367e5){return client[_0x1690('0x1')]('CreateAttachment',{'body':_0x3367e5,'log':'CreateAttachment'});};
\ No newline at end of file
+var _0xd802=['create','CreateAttachment'];(function(_0x1dfb68,_0x55753c){var _0x3f834a=function(_0x1e17af){while(--_0x1e17af){_0x1dfb68['push'](_0x1dfb68['shift']());}};_0x3f834a(++_0x55753c);}(_0xd802,0x7a));var _0x2d80=function(_0x4f4e4b,_0x46ea73){_0x4f4e4b=_0x4f4e4b-0x0;var _0x23a628=_0xd802[_0x4f4e4b];return _0x23a628;};'use strict';var client=require('../client');exports[_0x2d80('0x0')]=function(_0x65fad4){return client['Request'](_0x2d80('0x1'),{'body':_0x65fad4,'log':'CreateAttachment'});};
\ No newline at end of file
index cb97f7a..71c98a4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xdb28=['dialPrefix','dialRandomLastDigitCallerIdNumber','dialCutDigit','Trunk','name','callerid','Interval','interval','SquareProject','getCampaign','../client','getCampaigns','Request','GetCampaign','type','active','limitCalls','dialOriginateCallerIdName','dialOriginateCallerIdNumber','dialCongestionMaxRetry','dialCongestionRetryFrequency','dialNoAnswerMaxRetry','dialNoAnswerRetryFrequency','dialGlobalMaxRetry','dialNoSuchNumberMaxRetry','dialNoSuchNumberRetryFrequency','dialDropMaxRetry','dialDropRetryFrequency','dialAbandonedRetryFrequency','dialMachineMaxRetry','dialMachineRetryFrequency','dialAgentRejectRetryFrequency','dialTimezone','dialAMDActive','dialAMDInitialSilence','dialAMDGreeting','dialAMDAfterGreetingSilence','dialAMDTotalAnalysisTime','dialAMDMaximumNumberOfWords','dialAMDSilenceThreshold','dialAMDMaximumWordLength','dialOrderByScheduledAt'];(function(_0x149082,_0xca9c60){var _0x35db90=function(_0x503d22){while(--_0x503d22){_0x149082['push'](_0x149082['shift']());}};_0x35db90(++_0xca9c60);}(_0xdb28,0x106));var _0x8db2=function(_0x558593,_0x4176b2){_0x558593=_0x558593-0x0;var _0x346942=_0xdb28[_0x558593];return _0x346942;};'use strict';var client=require(_0x8db2('0x0'));exports[_0x8db2('0x1')]=function(){return function(){return client[_0x8db2('0x2')](_0x8db2('0x3'),{'options':{'raw':![],'attributes':['id','name',_0x8db2('0x4'),_0x8db2('0x5'),_0x8db2('0x6'),_0x8db2('0x7'),_0x8db2('0x8'),'dialOriginateTimeout',_0x8db2('0x9'),_0x8db2('0xa'),'dialBusyMaxRetry','dialBusyRetryFrequency',_0x8db2('0xb'),_0x8db2('0xc'),_0x8db2('0xd'),_0x8db2('0xe'),_0x8db2('0xf'),_0x8db2('0x10'),_0x8db2('0x11'),'dialAbandonedMaxRetry',_0x8db2('0x12'),_0x8db2('0x13'),_0x8db2('0x14'),'dialAgentRejectMaxRetry',_0x8db2('0x15'),_0x8db2('0x16'),'dialGlobalInterval',_0x8db2('0x17'),_0x8db2('0x18'),_0x8db2('0x19'),_0x8db2('0x1a'),_0x8db2('0x1b'),'dialAMDMinWordLength','dialAMDBetweenWordsSilence',_0x8db2('0x1c'),_0x8db2('0x1d'),_0x8db2('0x1e'),_0x8db2('0x1f'),_0x8db2('0x20'),_0x8db2('0x21'),_0x8db2('0x22')],'include':[{'model':_0x8db2('0x23'),'as':_0x8db2('0x23'),'attributes':['id',_0x8db2('0x24'),'callerid',_0x8db2('0x5')]},{'model':_0x8db2('0x23'),'as':'TrunkBackup','attributes':['id',_0x8db2('0x24'),_0x8db2('0x25'),_0x8db2('0x5')]},{'model':_0x8db2('0x26'),'as':_0x8db2('0x26'),'attributes':['id',_0x8db2('0x24')],'include':[{'model':'Interval','as':'Intervals','attributes':['id',_0x8db2('0x24'),_0x8db2('0x27')]}]},{'model':_0x8db2('0x28'),'as':_0x8db2('0x28'),'attributes':['id','name']}]},'log':_0x8db2('0x29')});};};
\ No newline at end of file
+var _0xdb28=['dialPrefix','dialRandomLastDigitCallerIdNumber','dialCutDigit','Trunk','name','callerid','Interval','interval','SquareProject','getCampaign','../client','getCampaigns','Request','GetCampaign','type','active','limitCalls','dialOriginateCallerIdName','dialOriginateCallerIdNumber','dialCongestionMaxRetry','dialCongestionRetryFrequency','dialNoAnswerMaxRetry','dialNoAnswerRetryFrequency','dialGlobalMaxRetry','dialNoSuchNumberMaxRetry','dialNoSuchNumberRetryFrequency','dialDropMaxRetry','dialDropRetryFrequency','dialAbandonedRetryFrequency','dialMachineMaxRetry','dialMachineRetryFrequency','dialAgentRejectRetryFrequency','dialTimezone','dialAMDActive','dialAMDInitialSilence','dialAMDGreeting','dialAMDAfterGreetingSilence','dialAMDTotalAnalysisTime','dialAMDMaximumNumberOfWords','dialAMDSilenceThreshold','dialAMDMaximumWordLength','dialOrderByScheduledAt'];(function(_0x27b7c7,_0x3ac0d0){var _0x42cb5e=function(_0x1cdec6){while(--_0x1cdec6){_0x27b7c7['push'](_0x27b7c7['shift']());}};_0x42cb5e(++_0x3ac0d0);}(_0xdb28,0x106));var _0x8db2=function(_0x62e35b,_0x41cc42){_0x62e35b=_0x62e35b-0x0;var _0x6a1335=_0xdb28[_0x62e35b];return _0x6a1335;};'use strict';var client=require(_0x8db2('0x0'));exports[_0x8db2('0x1')]=function(){return function(){return client[_0x8db2('0x2')](_0x8db2('0x3'),{'options':{'raw':![],'attributes':['id','name',_0x8db2('0x4'),_0x8db2('0x5'),_0x8db2('0x6'),_0x8db2('0x7'),_0x8db2('0x8'),'dialOriginateTimeout',_0x8db2('0x9'),_0x8db2('0xa'),'dialBusyMaxRetry','dialBusyRetryFrequency',_0x8db2('0xb'),_0x8db2('0xc'),_0x8db2('0xd'),_0x8db2('0xe'),_0x8db2('0xf'),_0x8db2('0x10'),_0x8db2('0x11'),'dialAbandonedMaxRetry',_0x8db2('0x12'),_0x8db2('0x13'),_0x8db2('0x14'),'dialAgentRejectMaxRetry',_0x8db2('0x15'),_0x8db2('0x16'),'dialGlobalInterval',_0x8db2('0x17'),_0x8db2('0x18'),_0x8db2('0x19'),_0x8db2('0x1a'),_0x8db2('0x1b'),'dialAMDMinWordLength','dialAMDBetweenWordsSilence',_0x8db2('0x1c'),_0x8db2('0x1d'),_0x8db2('0x1e'),_0x8db2('0x1f'),_0x8db2('0x20'),_0x8db2('0x21'),_0x8db2('0x22')],'include':[{'model':_0x8db2('0x23'),'as':_0x8db2('0x23'),'attributes':['id',_0x8db2('0x24'),'callerid',_0x8db2('0x5')]},{'model':_0x8db2('0x23'),'as':'TrunkBackup','attributes':['id',_0x8db2('0x24'),_0x8db2('0x25'),_0x8db2('0x5')]},{'model':_0x8db2('0x26'),'as':_0x8db2('0x26'),'attributes':['id',_0x8db2('0x24')],'include':[{'model':'Interval','as':'Intervals','attributes':['id',_0x8db2('0x24'),_0x8db2('0x27')]}]},{'model':_0x8db2('0x28'),'as':_0x8db2('0x28'),'attributes':['id','name']}]},'log':_0x8db2('0x29')});};};
\ No newline at end of file
index 0f40f5a..863cb7f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3732=['createContact','Request','CreateCmContact','getContacts','GetCmContact'];(function(_0x360971,_0x458b9c){var _0x40672a=function(_0xa931a7){while(--_0xa931a7){_0x360971['push'](_0x360971['shift']());}};_0x40672a(++_0x458b9c);}(_0x3732,0x17c));var _0x2373=function(_0x34b401,_0x31b193){_0x34b401=_0x34b401-0x0;var _0x505d1c=_0x3732[_0x34b401];return _0x505d1c;};'use strict';var client=require('../client');exports[_0x2373('0x0')]=function(_0xdc1c8d){return function(){return client[_0x2373('0x1')](_0x2373('0x2'),{'body':_0xdc1c8d,'log':'CreateCmContact'});};};exports[_0x2373('0x3')]=function(_0x5cdba1){return function(){return client[_0x2373('0x1')](_0x2373('0x4'),{'options':_0x5cdba1,'log':_0x2373('0x4')});};};
\ No newline at end of file
+var _0x8076=['getContacts','GetCmContact','../client','createContact','Request','CreateCmContact'];(function(_0x122ef9,_0x451d2a){var _0x42fba0=function(_0x17c9d3){while(--_0x17c9d3){_0x122ef9['push'](_0x122ef9['shift']());}};_0x42fba0(++_0x451d2a);}(_0x8076,0xe6));var _0x6807=function(_0x4b8ecb,_0x59decc){_0x4b8ecb=_0x4b8ecb-0x0;var _0x504478=_0x8076[_0x4b8ecb];return _0x504478;};'use strict';var client=require(_0x6807('0x0'));exports[_0x6807('0x1')]=function(_0x47adfa){return function(){return client[_0x6807('0x2')](_0x6807('0x3'),{'body':_0x47adfa,'log':_0x6807('0x3')});};};exports[_0x6807('0x4')]=function(_0x13a2fe){return function(){return client['Request'](_0x6807('0x5'),{'options':_0x13a2fe,'log':_0x6807('0x5')});};};
\ No newline at end of file
index a0f3140..f469b59 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xfebb=['../client','moment','lodash','GetCmHopper','Contact','getCmHopper','updateContacts','format','YYYY-MM-DD\x20HH:mm:ss','UpdateCmHopper','rescheduleContact','ListId','VoiceQueueId','CampaignId','Request','DestroyCmHopper','GetContactDialer','scheduledat','ASC','getContactDialerIvr','CmContact','priority','DESC','moveContactManagedDialer','campaign','queue','MoveContactManagedDialer','ContactId','countReScheduled','getContactPreview','GetCmHopperPreview','User','name','VoiceQueue','Queue','unlockContact','getContactRecallMe','GetContactRecallMe','Agent','db.CmHopper.UserId'];(function(_0x1cbcb2,_0x1237a3){var _0x41ac9f=function(_0xe32e6f){while(--_0xe32e6f){_0x1cbcb2['push'](_0x1cbcb2['shift']());}};_0x41ac9f(++_0x1237a3);}(_0xfebb,0x1b8));var _0xbfeb=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0xfebb[_0x3dd15e];return _0x231fd0;};'use strict';var client=require(_0xbfeb('0x0'));var moment=require(_0xbfeb('0x1'));var _=require(_0xbfeb('0x2'));exports['getContacts']=function(_0x289544,_0x196061){return function(){return client['Request'](_0xbfeb('0x3'),{'options':{'where':{'VoiceQueueId':_0x289544},'include':[{'model':'CmContact','as':_0xbfeb('0x4')}],'limit':_0x196061,'raw':![]},'log':_0xbfeb('0x5')});};};exports[_0xbfeb('0x6')]=function(_0x4da77d,_0x519c20,_0x57600f){return function(){return client['Request']('UpdateCmHopper',{'body':_0x4da77d,'options':{'where':{'VoiceQueueId':_0x519c20,'scheduledat':{'$lte':moment()[_0xbfeb('0x7')](_0xbfeb('0x8'))}},'limit':_0x57600f},'log':_0xbfeb('0x9')});};};exports[_0xbfeb('0xa')]=function(_0x598338){return function(){return client['Request']('UpdateCmHopper',{'body':_0x598338,'options':{'where':{'ContactId':_0x598338['ContactId'],'ListId':_0x598338[_0xbfeb('0xb')],'VoiceQueueId':_0x598338[_0xbfeb('0xc')],'CampaignId':_0x598338[_0xbfeb('0xd')]}},'log':_0xbfeb('0xa')});};};exports['destroyContact']=function(_0x25ac6a,_0xc93928,_0x458ef8){return function(){return client[_0xbfeb('0xe')]('DestroyCmHopper',{'options':{'where':{'VoiceQueueId':_0x25ac6a,'ListId':_0xc93928,'ContactId':_0x458ef8}},'log':_0xbfeb('0xf')});};};exports['getContactDialer']=function(_0x52f715,_0x294a02,_0x3b8453,_0x56e16a){return function(){return client['Request'](_0xbfeb('0x10'),{'body':{'active':!![]},'options':{'where':{'VoiceQueueId':_0x52f715,'active':![],'scheduledat':{'$lte':moment()[_0xbfeb('0x7')]('YYYY-MM-DD\x20HH:mm:ss')},'$or':[{'UserId':null},{'UserId':{'$in':_0x294a02}}]},'order':[['priority','DESC'],[_0xbfeb('0x11'),_0x56e16a],['id',_0xbfeb('0x12')]],'raw':!![],'limit':_0x3b8453},'log':_0xbfeb('0x10')});};};exports[_0xbfeb('0x13')]=function(_0xfb1514,_0x13bcec,_0x458b34){return function(){return client['Request'](_0xbfeb('0x10'),{'body':{'active':!![]},'options':{'where':{'CampaignId':_0xfb1514,'active':![],'scheduledat':{'$lte':moment()[_0xbfeb('0x7')](_0xbfeb('0x8'))}},'include':[{'model':_0xbfeb('0x14'),'as':'Contact'}],'order':[[_0xbfeb('0x15'),_0xbfeb('0x16')],[_0xbfeb('0x11'),_0x458b34],['id',_0xbfeb('0x12')]],'raw':!![],'limit':_0x13bcec},'log':'GetContactDialerIvr'});};};exports[_0xbfeb('0x17')]=function(_0x4156b7,_0x2e4a6d){return function(){_0x4156b7[_0xbfeb('0x18')]=_0x4156b7[_0xbfeb('0x19')];return client['Request'](_0xbfeb('0x1a'),{'body':_0x4156b7,'options':{'where':{'ContactId':_0x4156b7[_0xbfeb('0x1b')],'ListId':_0x4156b7[_0xbfeb('0xb')],'VoiceQueueId':_0x4156b7['VoiceQueueId'],'CampaignId':_0x4156b7['CampaignId'],'active':_0x2e4a6d?undefined:!![]}},'log':_0xbfeb('0x1a')});};};exports['countReScheduled']=function(_0x2f0f33){return function(){return client[_0xbfeb('0xe')]('CountReScheduled',{'options':{'where':{'VoiceQueueId':_0x2f0f33['id']?_0x2f0f33['id']||null:null}},'log':_0xbfeb('0x1c')});};};exports[_0xbfeb('0x1d')]=function(_0x26a2bd){return function(){return client[_0xbfeb('0xe')](_0xbfeb('0x1e'),{'options':{'where':{'id':_0x26a2bd},'include':[{'model':_0xbfeb('0x14'),'as':_0xbfeb('0x4')},{'model':_0xbfeb('0x1f'),'as':'Agent','attributes':['id',_0xbfeb('0x20')]},{'model':_0xbfeb('0x21'),'as':_0xbfeb('0x22'),'attributes':['id',_0xbfeb('0x20')]}],'raw':!![]},'log':'getCmHopper'});};};exports[_0xbfeb('0x23')]=function(_0x4502f0,_0x3ed5d0,_0x3be58b){return function(){return client['Request'](_0xbfeb('0x9'),{'body':_0x4502f0,'options':{'where':{'id':_0x3ed5d0},'limit':_0x3be58b},'log':_0xbfeb('0x9')});};};exports[_0xbfeb('0x24')]=function(_0x2f77f8,_0x4301bb){return function(){return client[_0xbfeb('0xe')](_0xbfeb('0x25'),{'body':{'active':!![]},'options':{'where':{'VoiceQueueId':_0x2f77f8,'active':![],'recallme':!![],'scheduledat':{'$lte':moment()[_0xbfeb('0x7')](_0xbfeb('0x8'))},'UserId':{'$in':_0x4301bb}},'order':[[_0xbfeb('0x15'),_0xbfeb('0x16')],[_0xbfeb('0x11'),_0xbfeb('0x16')],['id',_0xbfeb('0x12')]],'include':[{'model':_0xbfeb('0x14'),'as':'Contact'},{'model':_0xbfeb('0x1f'),'as':_0xbfeb('0x26'),'attributes':['id',_0xbfeb('0x20'),'voicePause']}],'group':_0xbfeb('0x27'),'raw':!![]},'log':_0xbfeb('0x10')});};};
\ No newline at end of file
+var _0x3922=['CampaignId','destroyContact','DestroyCmHopper','getContactDialer','GetContactDialer','format','priority','CmContact','scheduledat','ASC','GetContactDialerIvr','moveContactManagedDialer','campaign','queue','ListId','VoiceQueueId','MoveContactManagedDialer','countReScheduled','CountReScheduled','getContactPreview','GetCmHopperPreview','User','Agent','name','VoiceQueue','Queue','unlockContact','GetContactRecallMe','DESC','voicePause','db.CmHopper.UserId','../client','moment','lodash','getContacts','Request','Contact','getCmHopper','updateContacts','UpdateCmHopper','YYYY-MM-DD\x20HH:mm:ss','rescheduleContact','ContactId'];(function(_0x122f7c,_0x23fd32){var _0xe17566=function(_0x5c4099){while(--_0x5c4099){_0x122f7c['push'](_0x122f7c['shift']());}};_0xe17566(++_0x23fd32);}(_0x3922,0x75));var _0x2392=function(_0x380e21,_0x3782a7){_0x380e21=_0x380e21-0x0;var _0x46b982=_0x3922[_0x380e21];return _0x46b982;};'use strict';var client=require(_0x2392('0x0'));var moment=require(_0x2392('0x1'));var _=require(_0x2392('0x2'));exports[_0x2392('0x3')]=function(_0x5b06b9,_0x4aaadc){return function(){return client[_0x2392('0x4')]('GetCmHopper',{'options':{'where':{'VoiceQueueId':_0x5b06b9},'include':[{'model':'CmContact','as':_0x2392('0x5')}],'limit':_0x4aaadc,'raw':![]},'log':_0x2392('0x6')});};};exports[_0x2392('0x7')]=function(_0x167c44,_0x38186b,_0x5097b2){return function(){return client[_0x2392('0x4')](_0x2392('0x8'),{'body':_0x167c44,'options':{'where':{'VoiceQueueId':_0x38186b,'scheduledat':{'$lte':moment()['format'](_0x2392('0x9'))}},'limit':_0x5097b2},'log':_0x2392('0x8')});};};exports[_0x2392('0xa')]=function(_0x4da9a9){return function(){return client[_0x2392('0x4')](_0x2392('0x8'),{'body':_0x4da9a9,'options':{'where':{'ContactId':_0x4da9a9[_0x2392('0xb')],'ListId':_0x4da9a9['ListId'],'VoiceQueueId':_0x4da9a9['VoiceQueueId'],'CampaignId':_0x4da9a9[_0x2392('0xc')]}},'log':'rescheduleContact'});};};exports[_0x2392('0xd')]=function(_0x580881,_0x11d5f0,_0x27417e){return function(){return client[_0x2392('0x4')](_0x2392('0xe'),{'options':{'where':{'VoiceQueueId':_0x580881,'ListId':_0x11d5f0,'ContactId':_0x27417e}},'log':_0x2392('0xe')});};};exports[_0x2392('0xf')]=function(_0x13d546,_0x6d5de8,_0x56b2e2,_0x23b4c8){return function(){return client[_0x2392('0x4')](_0x2392('0x10'),{'body':{'active':!![]},'options':{'where':{'VoiceQueueId':_0x13d546,'active':![],'scheduledat':{'$lte':moment()[_0x2392('0x11')](_0x2392('0x9'))},'$or':[{'UserId':null},{'UserId':{'$in':_0x6d5de8}}]},'order':[[_0x2392('0x12'),'DESC'],['scheduledat',_0x23b4c8],['id','ASC']],'raw':!![],'limit':_0x56b2e2},'log':_0x2392('0x10')});};};exports['getContactDialerIvr']=function(_0x5240b5,_0x116e4e,_0x5e1bf9){return function(){return client['Request'](_0x2392('0x10'),{'body':{'active':!![]},'options':{'where':{'CampaignId':_0x5240b5,'active':![],'scheduledat':{'$lte':moment()[_0x2392('0x11')](_0x2392('0x9'))}},'include':[{'model':_0x2392('0x13'),'as':_0x2392('0x5')}],'order':[[_0x2392('0x12'),'DESC'],[_0x2392('0x14'),_0x5e1bf9],['id',_0x2392('0x15')]],'raw':!![],'limit':_0x116e4e},'log':_0x2392('0x16')});};};exports[_0x2392('0x17')]=function(_0xf073fd,_0x5b4adb){return function(){_0xf073fd[_0x2392('0x18')]=_0xf073fd[_0x2392('0x19')];return client['Request']('MoveContactManagedDialer',{'body':_0xf073fd,'options':{'where':{'ContactId':_0xf073fd[_0x2392('0xb')],'ListId':_0xf073fd[_0x2392('0x1a')],'VoiceQueueId':_0xf073fd[_0x2392('0x1b')],'CampaignId':_0xf073fd[_0x2392('0xc')],'active':_0x5b4adb?undefined:!![]}},'log':_0x2392('0x1c')});};};exports[_0x2392('0x1d')]=function(_0x4f184e){return function(){return client[_0x2392('0x4')](_0x2392('0x1e'),{'options':{'where':{'VoiceQueueId':_0x4f184e['id']?_0x4f184e['id']||null:null}},'log':'countReScheduled'});};};exports[_0x2392('0x1f')]=function(_0x2ffd20){return function(){return client['Request'](_0x2392('0x20'),{'options':{'where':{'id':_0x2ffd20},'include':[{'model':_0x2392('0x13'),'as':_0x2392('0x5')},{'model':_0x2392('0x21'),'as':_0x2392('0x22'),'attributes':['id',_0x2392('0x23')]},{'model':_0x2392('0x24'),'as':_0x2392('0x25'),'attributes':['id','name']}],'raw':!![]},'log':_0x2392('0x6')});};};exports[_0x2392('0x26')]=function(_0x21b76c,_0x3c040b,_0x1a8fa2){return function(){return client[_0x2392('0x4')]('UpdateCmHopper',{'body':_0x21b76c,'options':{'where':{'id':_0x3c040b},'limit':_0x1a8fa2},'log':_0x2392('0x8')});};};exports['getContactRecallMe']=function(_0x54ea1f,_0x1b5ee0){return function(){return client[_0x2392('0x4')](_0x2392('0x27'),{'body':{'active':!![]},'options':{'where':{'VoiceQueueId':_0x54ea1f,'active':![],'recallme':!![],'scheduledat':{'$lte':moment()[_0x2392('0x11')]('YYYY-MM-DD\x20HH:mm:ss')},'UserId':{'$in':_0x1b5ee0}},'order':[['priority',_0x2392('0x28')],[_0x2392('0x14'),_0x2392('0x28')],['id',_0x2392('0x15')]],'include':[{'model':_0x2392('0x13'),'as':_0x2392('0x5')},{'model':_0x2392('0x21'),'as':_0x2392('0x22'),'attributes':['id',_0x2392('0x23'),_0x2392('0x29')]}],'group':_0x2392('0x2a'),'raw':!![]},'log':_0x2392('0x10')});};};
\ No newline at end of file
index dbf739f..be51291 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb574=['Request','GetCmHopperBlack','Contact','phone','checkIsBlackListIvr','CampaignId','../client','checkIsBlackList'];(function(_0x4b3a2e,_0x4f927f){var _0x3b1ba8=function(_0x284262){while(--_0x284262){_0x4b3a2e['push'](_0x4b3a2e['shift']());}};_0x3b1ba8(++_0x4f927f);}(_0xb574,0x106));var _0x4b57=function(_0x4ac4a8,_0x27daaa){_0x4ac4a8=_0x4ac4a8-0x0;var _0x27f36e=_0xb574[_0x4ac4a8];return _0x27f36e;};'use strict';var client=require(_0x4b57('0x0'));exports[_0x4b57('0x1')]=function(_0x4c29a6){return function(){return client[_0x4b57('0x2')](_0x4b57('0x3'),{'options':{'where':{'VoiceQueueId':_0x4c29a6['VoiceQueueId'],'phone':_0x4c29a6[_0x4b57('0x4')][_0x4b57('0x5')]},'raw':![]},'log':_0x4b57('0x3')});};};exports[_0x4b57('0x6')]=function(_0xe2ae86){return function(){return client['Request']('GetCmHopperBlack',{'options':{'where':{'CampaignId':_0xe2ae86[_0x4b57('0x7')],'phone':_0xe2ae86['Contact']['phone']},'raw':![]},'log':'GetCmHopperBlackIvr'});};};
\ No newline at end of file
+var _0xdd4f=['VoiceQueueId','phone','checkIsBlackListIvr','Request','CampaignId','Contact','../client','GetCmHopperBlack'];(function(_0xbb091,_0x3fe7ee){var _0x467a04=function(_0x3a978d){while(--_0x3a978d){_0xbb091['push'](_0xbb091['shift']());}};_0x467a04(++_0x3fe7ee);}(_0xdd4f,0x1ce));var _0xfdd4=function(_0x4b970a,_0x377608){_0x4b970a=_0x4b970a-0x0;var _0x5bfe4f=_0xdd4f[_0x4b970a];return _0x5bfe4f;};'use strict';var client=require(_0xfdd4('0x0'));exports['checkIsBlackList']=function(_0x5656ab){return function(){return client['Request'](_0xfdd4('0x1'),{'options':{'where':{'VoiceQueueId':_0x5656ab[_0xfdd4('0x2')],'phone':_0x5656ab['Contact'][_0xfdd4('0x3')]},'raw':![]},'log':_0xfdd4('0x1')});};};exports[_0xfdd4('0x4')]=function(_0x554e44){return function(){return client[_0xfdd4('0x5')](_0xfdd4('0x1'),{'options':{'where':{'CampaignId':_0x554e44[_0xfdd4('0x6')],'phone':_0x554e44[_0xfdd4('0x7')][_0xfdd4('0x3')]},'raw':![]},'log':'GetCmHopperBlackIvr'});};};
\ No newline at end of file
index 11f6024..6f3ed94 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x724e=['Request','CreateCmHopperFinal','../client','createContact','campaign','queue'];(function(_0x4dcba7,_0x31ab6c){var _0x3e5180=function(_0x37a6d7){while(--_0x37a6d7){_0x4dcba7['push'](_0x4dcba7['shift']());}};_0x3e5180(++_0x31ab6c);}(_0x724e,0x170));var _0xe724=function(_0x3818da,_0x3f88bb){_0x3818da=_0x3818da-0x0;var _0x43c008=_0x724e[_0x3818da];return _0x43c008;};'use strict';var client=require(_0xe724('0x0'));exports[_0xe724('0x1')]=function(_0x180516){return function(){_0x180516[_0xe724('0x2')]=_0x180516[_0xe724('0x3')];return client[_0xe724('0x4')](_0xe724('0x5'),{'body':_0x180516,'log':_0xe724('0x5')});};};
\ No newline at end of file
+var _0xd794=['campaign','queue','Request','CreateCmHopperFinal','../client','createContact'];(function(_0x201e3c,_0x36220d){var _0x140904=function(_0x2b7781){while(--_0x2b7781){_0x201e3c['push'](_0x201e3c['shift']());}};_0x140904(++_0x36220d);}(_0xd794,0x15a));var _0x4d79=function(_0x20a584,_0xe384a5){_0x20a584=_0x20a584-0x0;var _0x4b41a8=_0xd794[_0x20a584];return _0x4b41a8;};'use strict';var client=require(_0x4d79('0x0'));exports[_0x4d79('0x1')]=function(_0x49745b){return function(){_0x49745b[_0x4d79('0x2')]=_0x49745b[_0x4d79('0x3')];return client[_0x4d79('0x4')]('CreateCmHopperFinal',{'body':_0x49745b,'log':_0x4d79('0x5')});};};
\ No newline at end of file
index cf432aa..ddf59b1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe896=['CreateCmHopperHistory','avgHandleTime','subtract','minutes','format','YYYY-MM-DD\x20HH:mm:ss','GetCmHopperHistory','getVoiceQueueHopperHistory','GetVoiceQueueHopperHistory','startOf','day','endOf','queue','getCampaignHopperHistory','GetCampaignHopperHistory','ivr','../client','moment','createHistory','campaign','Request'];(function(_0x414ff1,_0xf0462b){var _0x29c53f=function(_0x1dab72){while(--_0x1dab72){_0x414ff1['push'](_0x414ff1['shift']());}};_0x29c53f(++_0xf0462b);}(_0xe896,0x1f3));var _0x6e89=function(_0x94ca7a,_0x153fdd){_0x94ca7a=_0x94ca7a-0x0;var _0xc34162=_0xe896[_0x94ca7a];return _0xc34162;};'use strict';var client=require(_0x6e89('0x0'));var moment=require(_0x6e89('0x1'));exports[_0x6e89('0x2')]=function(_0x116e7b){return function(){_0x116e7b[_0x6e89('0x3')]=_0x116e7b['queue'];return client[_0x6e89('0x4')](_0x6e89('0x5'),{'body':_0x116e7b,'log':_0x6e89('0x5')});};};exports[_0x6e89('0x6')]=function(_0x502f6b){return function(){return client['Request']('AvgHandleTime',{'options':{'where':{'endtime':{'$between':[moment()[_0x6e89('0x7')](_0x502f6b,_0x6e89('0x8'))[_0x6e89('0x9')]('YYYY-MM-DD\x20HH:mm:ss'),moment()[_0x6e89('0x9')](_0x6e89('0xa'))]}},'raw':![]},'log':_0x6e89('0xb')});};};exports[_0x6e89('0xc')]=function(_0x56dcb5){return function(){return client[_0x6e89('0x4')](_0x6e89('0xd'),{'options':{'where':{'createdAt':{'$between':[moment()[_0x6e89('0xe')](_0x6e89('0xf'))[_0x6e89('0x9')](_0x6e89('0xa')),moment()[_0x6e89('0x10')](_0x6e89('0xf'))['format']('YYYY-MM-DD\x20HH:mm:ss')]},'campaigntype':_0x6e89('0x11')},'raw':![]},'log':_0x6e89('0xd')});};};exports[_0x6e89('0x12')]=function(_0x625cc8){return function(){return client[_0x6e89('0x4')](_0x6e89('0x13'),{'options':{'where':{'createdAt':{'$between':[moment()[_0x6e89('0xe')](_0x6e89('0xf'))['format']('YYYY-MM-DD\x20HH:mm:ss'),moment()[_0x6e89('0x10')](_0x6e89('0xf'))[_0x6e89('0x9')]('YYYY-MM-DD\x20HH:mm:ss')]},'campaigntype':_0x6e89('0x14')},'raw':![]},'log':_0x6e89('0x13')});};};
\ No newline at end of file
+var _0xb7a1=['avgHandleTime','AvgHandleTime','subtract','minutes','format','YYYY-MM-DD\x20HH:mm:ss','GetCmHopperHistory','getVoiceQueueHopperHistory','GetVoiceQueueHopperHistory','startOf','endOf','day','getCampaignHopperHistory','GetCampaignHopperHistory','ivr','../client','createHistory','campaign','queue','Request','CreateCmHopperHistory'];(function(_0x2b9e8a,_0x7b21d4){var _0x520e67=function(_0x22bce8){while(--_0x22bce8){_0x2b9e8a['push'](_0x2b9e8a['shift']());}};_0x520e67(++_0x7b21d4);}(_0xb7a1,0xb7));var _0x1b7a=function(_0x57f079,_0x369d37){_0x57f079=_0x57f079-0x0;var _0x3aac06=_0xb7a1[_0x57f079];return _0x3aac06;};'use strict';var client=require(_0x1b7a('0x0'));var moment=require('moment');exports[_0x1b7a('0x1')]=function(_0x1a433f){return function(){_0x1a433f[_0x1b7a('0x2')]=_0x1a433f[_0x1b7a('0x3')];return client[_0x1b7a('0x4')]('CreateCmHopperHistory',{'body':_0x1a433f,'log':_0x1b7a('0x5')});};};exports[_0x1b7a('0x6')]=function(_0x7b066f){return function(){return client[_0x1b7a('0x4')](_0x1b7a('0x7'),{'options':{'where':{'endtime':{'$between':[moment()[_0x1b7a('0x8')](_0x7b066f,_0x1b7a('0x9'))[_0x1b7a('0xa')](_0x1b7a('0xb')),moment()[_0x1b7a('0xa')](_0x1b7a('0xb'))]}},'raw':![]},'log':_0x1b7a('0xc')});};};exports[_0x1b7a('0xd')]=function(_0x513b3b){return function(){return client[_0x1b7a('0x4')](_0x1b7a('0xe'),{'options':{'where':{'createdAt':{'$between':[moment()[_0x1b7a('0xf')]('day')[_0x1b7a('0xa')](_0x1b7a('0xb')),moment()[_0x1b7a('0x10')](_0x1b7a('0x11'))[_0x1b7a('0xa')](_0x1b7a('0xb'))]},'campaigntype':_0x1b7a('0x3')},'raw':![]},'log':'GetVoiceQueueHopperHistory'});};};exports[_0x1b7a('0x12')]=function(_0x2d4614){return function(){return client[_0x1b7a('0x4')](_0x1b7a('0x13'),{'options':{'where':{'createdAt':{'$between':[moment()[_0x1b7a('0xf')](_0x1b7a('0x11'))['format'](_0x1b7a('0xb')),moment()[_0x1b7a('0x10')](_0x1b7a('0x11'))[_0x1b7a('0xa')](_0x1b7a('0xb'))]},'campaigntype':_0x1b7a('0x14')},'raw':![]},'log':'GetCampaignHopperHistory'});};};
\ No newline at end of file
index b00c686..0d18030 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5fdc=['description','ecm','headerinfo','localstationid','minrate','maxrate','modem','gateway','faxdetect','t38timeout','key','Trunk','getFaxAccount','notify','NotifyFaxAccount','../client','getFaxAccounts','Request','GetFaxAccount','name'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x5fdc,0x127));var _0xc5fd=function(_0x2c6cb7,_0xa582d9){_0x2c6cb7=_0x2c6cb7-0x0;var _0x44ca21=_0x5fdc[_0x2c6cb7];return _0x44ca21;};'use strict';var client=require(_0xc5fd('0x0'));exports[_0xc5fd('0x1')]=function(){return function(){return client[_0xc5fd('0x2')](_0xc5fd('0x3'),{'options':{'raw':![],'attributes':['id',_0xc5fd('0x4'),_0xc5fd('0x5'),_0xc5fd('0x6'),_0xc5fd('0x7'),_0xc5fd('0x8'),_0xc5fd('0x9'),_0xc5fd('0xa'),_0xc5fd('0xb'),_0xc5fd('0xc'),_0xc5fd('0xd'),_0xc5fd('0xe'),'tech','TrunkId','ListId',_0xc5fd('0xf')],'include':[{'model':_0xc5fd('0x10'),'as':_0xc5fd('0x10'),'attributes':['id',_0xc5fd('0x4'),'callerid','active']}]},'log':_0xc5fd('0x11')});};};exports[_0xc5fd('0x12')]=function(_0x39a95a,_0x1d1e8a){return client[_0xc5fd('0x2')](_0xc5fd('0x13'),{'account':{'id':_0x39a95a},'body':_0x1d1e8a,'log':'NotifyFaxAccount'});};
\ No newline at end of file
+var _0x431b=['Request','name','description','ecm','headerinfo','localstationid','minrate','maxrate','gateway','t38timeout','ListId','Trunk','callerid','active','getFaxAccount','notify','NotifyFaxAccount','../client','getFaxAccounts'];(function(_0x4b9978,_0x58eb71){var _0x42f0e5=function(_0x4ff5dc){while(--_0x4ff5dc){_0x4b9978['push'](_0x4b9978['shift']());}};_0x42f0e5(++_0x58eb71);}(_0x431b,0x18d));var _0xb431=function(_0x473766,_0x46ead9){_0x473766=_0x473766-0x0;var _0x4d1e5a=_0x431b[_0x473766];return _0x4d1e5a;};'use strict';var client=require(_0xb431('0x0'));exports[_0xb431('0x1')]=function(){return function(){return client[_0xb431('0x2')]('GetFaxAccount',{'options':{'raw':![],'attributes':['id',_0xb431('0x3'),_0xb431('0x4'),_0xb431('0x5'),_0xb431('0x6'),_0xb431('0x7'),_0xb431('0x8'),_0xb431('0x9'),'modem',_0xb431('0xa'),'faxdetect',_0xb431('0xb'),'tech','TrunkId',_0xb431('0xc'),'key'],'include':[{'model':'Trunk','as':_0xb431('0xd'),'attributes':['id',_0xb431('0x3'),_0xb431('0xe'),_0xb431('0xf')]}]},'log':_0xb431('0x10')});};};exports[_0xb431('0x11')]=function(_0x413c63,_0x492f5c){return client[_0xb431('0x2')](_0xb431('0x12'),{'account':{'id':_0x413c63},'body':_0x492f5c,'log':_0xb431('0x12')});};
\ No newline at end of file
index e52105c..636eb4e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7395=['../client','update','Request','UpdateFaxMessage'];(function(_0x25793c,_0x3209a3){var _0x3b9e5f=function(_0x323256){while(--_0x323256){_0x25793c['push'](_0x25793c['shift']());}};_0x3b9e5f(++_0x3209a3);}(_0x7395,0xb8));var _0x5739=function(_0x432f03,_0x5af84a){_0x432f03=_0x432f03-0x0;var _0x3ee982=_0x7395[_0x432f03];return _0x3ee982;};'use strict';var client=require(_0x5739('0x0'));exports[_0x5739('0x1')]=function(_0x3aa7ab,_0x1cac52){return client[_0x5739('0x2')](_0x5739('0x3'),{'body':_0x1cac52,'options':{'where':{'AttachmentId':_0x3aa7ab}},'log':'UpdateFaxMessage'});};
\ No newline at end of file
+var _0x19db=['UpdateFaxMessage','Request'];(function(_0x1d30a3,_0x5f428c){var _0x32bba1=function(_0x5a60cc){while(--_0x5a60cc){_0x1d30a3['push'](_0x1d30a3['shift']());}};_0x32bba1(++_0x5f428c);}(_0x19db,0x165));var _0xb19d=function(_0x11d25d,_0x1c92f4){_0x11d25d=_0x11d25d-0x0;var _0x5a7003=_0x19db[_0x11d25d];return _0x5a7003;};'use strict';var client=require('../client');exports['update']=function(_0x466f14,_0x3920a8){return client[_0xb19d('0x0')]('UpdateFaxMessage',{'body':_0x3920a8,'options':{'where':{'AttachmentId':_0x466f14}},'log':_0xb19d('0x1')});};
\ No newline at end of file
index d4314c9..e755381 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x53bb=['keyContent','Fields','idField','nameField','customField','../../client','getDeskAccounts','GetDeskAccount','name','description','username','password','remoteUri','authType','type','Configurations','DeskField','Subjects','content','variableName','Variable','Descriptions'];(function(_0x82129b,_0x484ae9){var _0x2ae5dc=function(_0x299e34){while(--_0x299e34){_0x82129b['push'](_0x82129b['shift']());}};_0x2ae5dc(++_0x484ae9);}(_0x53bb,0xe1));var _0xb53b=function(_0xf6fd85,_0x3a3289){_0xf6fd85=_0xf6fd85-0x0;var _0x47b06d=_0x53bb[_0xf6fd85];return _0x47b06d;};'use strict';var client=require(_0xb53b('0x0'));exports[_0xb53b('0x1')]=function(){return function(_0x133c33){return client['Request'](_0xb53b('0x2'),{'options':{'raw':![],'attributes':['id',_0xb53b('0x3'),_0xb53b('0x4'),_0xb53b('0x5'),_0xb53b('0x6'),_0xb53b('0x7'),_0xb53b('0x8'),_0xb53b('0x9'),'serverUrl'],'include':[{'model':'DeskConfiguration','as':_0xb53b('0xa'),'attributes':['id',_0xb53b('0x3')],'include':[{'model':_0xb53b('0xb'),'as':_0xb53b('0xc'),'attributes':['id',_0xb53b('0x9'),_0xb53b('0xd'),_0xb53b('0xe')],'include':[{'model':_0xb53b('0xf'),'as':_0xb53b('0xf'),'attributes':['id','name']}]},{'model':_0xb53b('0xb'),'as':_0xb53b('0x10'),'attributes':['id',_0xb53b('0x9'),'content','key','keyType',_0xb53b('0x11'),_0xb53b('0xe')],'include':[{'model':_0xb53b('0xf'),'as':'Variable','attributes':['id',_0xb53b('0x3')]}]},{'model':_0xb53b('0xb'),'as':_0xb53b('0x12'),'attributes':['id',_0xb53b('0x9'),_0xb53b('0xd'),_0xb53b('0x13'),_0xb53b('0x14'),_0xb53b('0x15'),'variableName'],'include':[{'model':'Variable','as':_0xb53b('0xf'),'attributes':['id',_0xb53b('0x3')]}]},{'model':'Tag','as':'Tags','attributes':['id',_0xb53b('0x3')]}]}]},'log':_0xb53b('0x2')});};};
\ No newline at end of file
+var _0x7f7b=['getDeskAccounts','Request','description','username','password','remoteUri','serverUrl','Configurations','name','DeskField','Subjects','type','content','variableName','Variable','keyType','keyContent','Fields','idField','nameField','Tag','GetDeskAccount'];(function(_0x406d63,_0x26daf8){var _0x45e42e=function(_0x159ea4){while(--_0x159ea4){_0x406d63['push'](_0x406d63['shift']());}};_0x45e42e(++_0x26daf8);}(_0x7f7b,0xb0));var _0xb7f7=function(_0xab4c07,_0x1fc52c){_0xab4c07=_0xab4c07-0x0;var _0x5cfcb7=_0x7f7b[_0xab4c07];return _0x5cfcb7;};'use strict';var client=require('../../client');exports[_0xb7f7('0x0')]=function(){return function(_0x490764){return client[_0xb7f7('0x1')]('GetDeskAccount',{'options':{'raw':![],'attributes':['id','name',_0xb7f7('0x2'),_0xb7f7('0x3'),_0xb7f7('0x4'),_0xb7f7('0x5'),'authType','type',_0xb7f7('0x6')],'include':[{'model':'DeskConfiguration','as':_0xb7f7('0x7'),'attributes':['id',_0xb7f7('0x8')],'include':[{'model':_0xb7f7('0x9'),'as':_0xb7f7('0xa'),'attributes':['id',_0xb7f7('0xb'),_0xb7f7('0xc'),_0xb7f7('0xd')],'include':[{'model':_0xb7f7('0xe'),'as':_0xb7f7('0xe'),'attributes':['id',_0xb7f7('0x8')]}]},{'model':_0xb7f7('0x9'),'as':'Descriptions','attributes':['id','type',_0xb7f7('0xc'),'key',_0xb7f7('0xf'),_0xb7f7('0x10'),'variableName'],'include':[{'model':_0xb7f7('0xe'),'as':_0xb7f7('0xe'),'attributes':['id',_0xb7f7('0x8')]}]},{'model':'DeskField','as':_0xb7f7('0x11'),'attributes':['id','type',_0xb7f7('0xc'),_0xb7f7('0x12'),_0xb7f7('0x13'),'customField',_0xb7f7('0xd')],'include':[{'model':'Variable','as':'Variable','attributes':['id',_0xb7f7('0x8')]}]},{'model':_0xb7f7('0x14'),'as':'Tags','attributes':['id',_0xb7f7('0x8')]}]}]},'log':_0xb7f7('0x15')});};};
\ No newline at end of file
index 8c342e9..dd57c6a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc84a=['GetDynamics365Account','name','username','password','remoteUri','tenantId','clientId','clientSecret','serverUrl','description','Configurations','ticketType','Subjects','type','content','variableName','Variable','Dynamics365Field','Descriptions','key','keyContent','Fields','nameField','../../client','getDynamics365Accounts','Request'];(function(_0x17b306,_0x38eceb){var _0x41439f=function(_0x4e75e7){while(--_0x4e75e7){_0x17b306['push'](_0x17b306['shift']());}};_0x41439f(++_0x38eceb);}(_0xc84a,0x135));var _0xac84=function(_0x45f633,_0x238c42){_0x45f633=_0x45f633-0x0;var _0x5e2323=_0xc84a[_0x45f633];return _0x5e2323;};'use strict';var client=require(_0xac84('0x0'));exports[_0xac84('0x1')]=function(){return function(_0x1a060b){return client[_0xac84('0x2')](_0xac84('0x3'),{'options':{'raw':![],'attributes':['id',_0xac84('0x4'),_0xac84('0x5'),_0xac84('0x6'),_0xac84('0x7'),_0xac84('0x8'),_0xac84('0x9'),_0xac84('0xa'),_0xac84('0xb'),_0xac84('0xc')],'include':[{'model':'Dynamics365Configuration','as':_0xac84('0xd'),'attributes':['id',_0xac84('0x4'),_0xac84('0xe')],'include':[{'model':'Dynamics365Field','as':_0xac84('0xf'),'attributes':['id',_0xac84('0x10'),_0xac84('0x11'),_0xac84('0x12')],'include':[{'model':_0xac84('0x13'),'as':_0xac84('0x13'),'attributes':['id',_0xac84('0x4')]}]},{'model':_0xac84('0x14'),'as':_0xac84('0x15'),'attributes':['id',_0xac84('0x10'),_0xac84('0x11'),_0xac84('0x16'),'keyType',_0xac84('0x17'),_0xac84('0x12')],'include':[{'model':_0xac84('0x13'),'as':'Variable','attributes':['id',_0xac84('0x4')]}]},{'model':_0xac84('0x14'),'as':_0xac84('0x18'),'attributes':['id',_0xac84('0x10'),_0xac84('0x11'),'idField',_0xac84('0x19'),'customField',_0xac84('0x12')],'include':[{'model':_0xac84('0x13'),'as':_0xac84('0x13'),'attributes':['id','name']}]}]}]},'log':_0xac84('0x3')});};};
\ No newline at end of file
+var _0x048b=['key','keyContent','idField','nameField','customField','../../client','getDynamics365Accounts','Request','GetDynamics365Account','name','username','password','remoteUri','tenantId','clientId','clientSecret','description','Dynamics365Configuration','Configurations','Dynamics365Field','Subjects','content','variableName','Variable','Descriptions','type'];(function(_0x55aa22,_0x375514){var _0x3124df=function(_0x2e691c){while(--_0x2e691c){_0x55aa22['push'](_0x55aa22['shift']());}};_0x3124df(++_0x375514);}(_0x048b,0x171));var _0xb048=function(_0x2ab6d9,_0x2139e8){_0x2ab6d9=_0x2ab6d9-0x0;var _0x1a7a04=_0x048b[_0x2ab6d9];return _0x1a7a04;};'use strict';var client=require(_0xb048('0x0'));exports[_0xb048('0x1')]=function(){return function(_0x7f9b7d){return client[_0xb048('0x2')](_0xb048('0x3'),{'options':{'raw':![],'attributes':['id',_0xb048('0x4'),_0xb048('0x5'),_0xb048('0x6'),_0xb048('0x7'),_0xb048('0x8'),_0xb048('0x9'),_0xb048('0xa'),'serverUrl',_0xb048('0xb')],'include':[{'model':_0xb048('0xc'),'as':_0xb048('0xd'),'attributes':['id',_0xb048('0x4'),'ticketType'],'include':[{'model':_0xb048('0xe'),'as':_0xb048('0xf'),'attributes':['id','type',_0xb048('0x10'),_0xb048('0x11')],'include':[{'model':'Variable','as':_0xb048('0x12'),'attributes':['id',_0xb048('0x4')]}]},{'model':_0xb048('0xe'),'as':_0xb048('0x13'),'attributes':['id',_0xb048('0x14'),_0xb048('0x10'),_0xb048('0x15'),'keyType',_0xb048('0x16'),'variableName'],'include':[{'model':_0xb048('0x12'),'as':_0xb048('0x12'),'attributes':['id',_0xb048('0x4')]}]},{'model':_0xb048('0xe'),'as':'Fields','attributes':['id',_0xb048('0x14'),_0xb048('0x10'),_0xb048('0x17'),_0xb048('0x18'),_0xb048('0x19'),_0xb048('0x11')],'include':[{'model':'Variable','as':'Variable','attributes':['id',_0xb048('0x4')]}]}]}]},'log':'GetDynamics365Account'});};};
\ No newline at end of file
index 5d6d25b..ca8f66e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa71a=['GetFreshdeskAccount','../../client','getFreshdeskAccounts','Request','name','username','apiKey','serverUrl','Configurations','Tag','FreshdeskField','Subjects','variableName','Variable','Descriptions','type','content','key','keyType','keyContent','Fields','idField','nameField','customField'];(function(_0x23464c,_0x164307){var _0xabe285=function(_0x4bf91c){while(--_0x4bf91c){_0x23464c['push'](_0x23464c['shift']());}};_0xabe285(++_0x164307);}(_0xa71a,0xf1));var _0xaa71=function(_0x2641f9,_0x26715f){_0x2641f9=_0x2641f9-0x0;var _0x585741=_0xa71a[_0x2641f9];return _0x585741;};'use strict';var client=require(_0xaa71('0x0'));exports[_0xaa71('0x1')]=function(){return function(_0x1da02b){return client[_0xaa71('0x2')]('GetFreshdeskAccount',{'options':{'raw':![],'attributes':['id',_0xaa71('0x3'),_0xaa71('0x4'),_0xaa71('0x5'),'remoteUri',_0xaa71('0x6')],'include':[{'model':'FreshdeskConfiguration','as':_0xaa71('0x7'),'attributes':['id',_0xaa71('0x3')],'include':[{'model':_0xaa71('0x8'),'attributes':['id','name']},{'model':_0xaa71('0x9'),'as':_0xaa71('0xa'),'attributes':['id','type','content',_0xaa71('0xb')],'include':[{'model':_0xaa71('0xc'),'as':_0xaa71('0xc'),'attributes':['id','name']}]},{'model':'FreshdeskField','as':_0xaa71('0xd'),'attributes':['id',_0xaa71('0xe'),_0xaa71('0xf'),_0xaa71('0x10'),_0xaa71('0x11'),_0xaa71('0x12'),'variableName'],'include':[{'model':'Variable','as':'Variable','attributes':['id',_0xaa71('0x3')]}]},{'model':_0xaa71('0x9'),'as':_0xaa71('0x13'),'attributes':['id','type',_0xaa71('0xf'),_0xaa71('0x14'),_0xaa71('0x15'),_0xaa71('0x16'),_0xaa71('0xb')],'include':[{'model':_0xaa71('0xc'),'as':'Variable','attributes':['id',_0xaa71('0x3')]}]}]}]},'log':_0xaa71('0x17')});};};
\ No newline at end of file
+var _0xbff2=['GetFreshdeskAccount','name','username','apiKey','remoteUri','FreshdeskConfiguration','Configurations','FreshdeskField','Subjects','content','Variable','type','key','keyType','variableName','Fields','idField','customField','../../client','getFreshdeskAccounts','Request'];(function(_0x2d174f,_0x32735f){var _0x5ae59=function(_0x2318ab){while(--_0x2318ab){_0x2d174f['push'](_0x2d174f['shift']());}};_0x5ae59(++_0x32735f);}(_0xbff2,0x10e));var _0x2bff=function(_0x1bd869,_0x375ea2){_0x1bd869=_0x1bd869-0x0;var _0x43153a=_0xbff2[_0x1bd869];return _0x43153a;};'use strict';var client=require(_0x2bff('0x0'));exports[_0x2bff('0x1')]=function(){return function(_0x352980){return client[_0x2bff('0x2')](_0x2bff('0x3'),{'options':{'raw':![],'attributes':['id',_0x2bff('0x4'),_0x2bff('0x5'),_0x2bff('0x6'),_0x2bff('0x7'),'serverUrl'],'include':[{'model':_0x2bff('0x8'),'as':_0x2bff('0x9'),'attributes':['id','name'],'include':[{'model':'Tag','attributes':['id','name']},{'model':_0x2bff('0xa'),'as':_0x2bff('0xb'),'attributes':['id','type',_0x2bff('0xc'),'variableName'],'include':[{'model':'Variable','as':_0x2bff('0xd'),'attributes':['id','name']}]},{'model':'FreshdeskField','as':'Descriptions','attributes':['id',_0x2bff('0xe'),'content',_0x2bff('0xf'),_0x2bff('0x10'),'keyContent',_0x2bff('0x11')],'include':[{'model':_0x2bff('0xd'),'as':'Variable','attributes':['id','name']}]},{'model':_0x2bff('0xa'),'as':_0x2bff('0x12'),'attributes':['id','type',_0x2bff('0xc'),_0x2bff('0x13'),'nameField',_0x2bff('0x14'),_0x2bff('0x11')],'include':[{'model':_0x2bff('0xd'),'as':_0x2bff('0xd'),'attributes':['id','name']}]}]}]},'log':_0x2bff('0x3')});};};
\ No newline at end of file
index e845bc0..3fd3564 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc4aa=['Subjects','type','content','Variable','key','keyContent','GetFreshsalesccount','../../client','getFreshsalesAccounts','Request','GetFreshsalesAccount','name','serverUrl','FreshsalesConfiguration','Configurations','FreshsalesField'];(function(_0x16bb4b,_0x5fe431){var _0x8aeb84=function(_0x36ba6e){while(--_0x36ba6e){_0x16bb4b['push'](_0x16bb4b['shift']());}};_0x8aeb84(++_0x5fe431);}(_0xc4aa,0x1b7));var _0xac4a=function(_0x32f7d7,_0x54231b){_0x32f7d7=_0x32f7d7-0x0;var _0x133d09=_0xc4aa[_0x32f7d7];return _0x133d09;};'use strict';var client=require(_0xac4a('0x0'));exports[_0xac4a('0x1')]=function(){return function(_0x40a0d0){return client[_0xac4a('0x2')](_0xac4a('0x3'),{'options':{'raw':![],'attributes':['id',_0xac4a('0x4'),'username','apiKey','remoteUri',_0xac4a('0x5')],'include':[{'model':_0xac4a('0x6'),'as':_0xac4a('0x7'),'attributes':['id',_0xac4a('0x4')],'include':[{'model':_0xac4a('0x8'),'as':_0xac4a('0x9'),'attributes':['id',_0xac4a('0xa'),_0xac4a('0xb'),'variableName'],'include':[{'model':'Variable','as':_0xac4a('0xc'),'attributes':['id',_0xac4a('0x4')]}]},{'model':_0xac4a('0x8'),'as':'Descriptions','attributes':['id',_0xac4a('0xa'),_0xac4a('0xb'),_0xac4a('0xd'),'keyType',_0xac4a('0xe'),'variableName'],'include':[{'model':_0xac4a('0xc'),'as':'Variable','attributes':['id',_0xac4a('0x4')]}]}]}]},'log':_0xac4a('0xf')});};};
\ No newline at end of file
+var _0xba34=['Configurations','name','FreshsalesField','Subjects','content','variableName','Variable','Descriptions','type','key','keyType','../../client','getFreshsalesAccounts','Request','GetFreshsalesAccount','remoteUri','serverUrl','FreshsalesConfiguration'];(function(_0x463697,_0xccfdc4){var _0x33cfe1=function(_0x5c74ec){while(--_0x5c74ec){_0x463697['push'](_0x463697['shift']());}};_0x33cfe1(++_0xccfdc4);}(_0xba34,0x119));var _0x4ba3=function(_0x2161c8,_0x4615ba){_0x2161c8=_0x2161c8-0x0;var _0x1c38ae=_0xba34[_0x2161c8];return _0x1c38ae;};'use strict';var client=require(_0x4ba3('0x0'));exports[_0x4ba3('0x1')]=function(){return function(_0xb04f7b){return client[_0x4ba3('0x2')](_0x4ba3('0x3'),{'options':{'raw':![],'attributes':['id','name','username','apiKey',_0x4ba3('0x4'),_0x4ba3('0x5')],'include':[{'model':_0x4ba3('0x6'),'as':_0x4ba3('0x7'),'attributes':['id',_0x4ba3('0x8')],'include':[{'model':_0x4ba3('0x9'),'as':_0x4ba3('0xa'),'attributes':['id','type',_0x4ba3('0xb'),_0x4ba3('0xc')],'include':[{'model':_0x4ba3('0xd'),'as':_0x4ba3('0xd'),'attributes':['id',_0x4ba3('0x8')]}]},{'model':_0x4ba3('0x9'),'as':_0x4ba3('0xe'),'attributes':['id',_0x4ba3('0xf'),_0x4ba3('0xb'),_0x4ba3('0x10'),_0x4ba3('0x11'),'keyContent',_0x4ba3('0xc')],'include':[{'model':_0x4ba3('0xd'),'as':'Variable','attributes':['id',_0x4ba3('0x8')]}]}]}]},'log':'GetFreshsalesccount'});};};
\ No newline at end of file
index 80c3aa6..6ca69cd 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc6a2=['Fields','../../client','getSalesforceAccounts','Request','GetSalesforceAccount','name','username','password','remoteUri','clientId','clientSecret','securityToken','serverUrl','type','SalesforceConfiguration','Configurations','moduleCreate','ticketType','leadId','additionalSearchAccount','additionalSearchContact','additionalSearchLead','SalesforceField','Subjects','Descriptions','Variable'];(function(_0x215863,_0x44609a){var _0x4d5f5c=function(_0x3a18dc){while(--_0x3a18dc){_0x215863['push'](_0x215863['shift']());}};_0x4d5f5c(++_0x44609a);}(_0xc6a2,0x69));var _0x2c6a=function(_0x1b7491,_0x5abae0){_0x1b7491=_0x1b7491-0x0;var _0x4a012a=_0xc6a2[_0x1b7491];return _0x4a012a;};'use strict';var client=require(_0x2c6a('0x0'));exports[_0x2c6a('0x1')]=function(){return function(_0x5bdc6c){return client[_0x2c6a('0x2')](_0x2c6a('0x3'),{'options':{'raw':![],'attributes':['id',_0x2c6a('0x4'),_0x2c6a('0x5'),_0x2c6a('0x6'),_0x2c6a('0x7'),_0x2c6a('0x8'),_0x2c6a('0x9'),_0x2c6a('0xa'),_0x2c6a('0xb'),_0x2c6a('0xc')],'include':[{'model':_0x2c6a('0xd'),'as':_0x2c6a('0xe'),'attributes':['id',_0x2c6a('0x4'),'moduleSearch',_0x2c6a('0xf'),_0x2c6a('0x10'),_0x2c6a('0x11'),_0x2c6a('0x12'),_0x2c6a('0x13'),_0x2c6a('0x14')],'include':[{'model':_0x2c6a('0x15'),'as':_0x2c6a('0x16'),'include':[{'model':'Variable','as':'Variable','attributes':['id',_0x2c6a('0x4')]}]},{'model':_0x2c6a('0x15'),'as':_0x2c6a('0x17'),'include':[{'model':_0x2c6a('0x18'),'as':'Variable','attributes':['id','name']}]},{'model':_0x2c6a('0x15'),'as':_0x2c6a('0x19'),'include':[{'model':_0x2c6a('0x18'),'as':'Variable','attributes':['id','name']}]}]}]},'log':'GetSalesforceAccount'});};};
\ No newline at end of file
+var _0x6b19=['SalesforceField','Variable','Fields','GetSalesforceAccount','../../client','Request','name','username','password','remoteUri','clientSecret','securityToken','SalesforceConfiguration','Configurations','moduleSearch','moduleCreate','leadId','additionalSearchAccount','additionalSearchContact','additionalSearchLead'];(function(_0x27e1bc,_0x29630d){var _0x8967f7=function(_0x3d43c7){while(--_0x3d43c7){_0x27e1bc['push'](_0x27e1bc['shift']());}};_0x8967f7(++_0x29630d);}(_0x6b19,0xf4));var _0x96b1=function(_0x3bdd7f,_0x20a918){_0x3bdd7f=_0x3bdd7f-0x0;var _0x463261=_0x6b19[_0x3bdd7f];return _0x463261;};'use strict';var client=require(_0x96b1('0x0'));exports['getSalesforceAccounts']=function(){return function(_0x3dc1ab){return client[_0x96b1('0x1')]('GetSalesforceAccount',{'options':{'raw':![],'attributes':['id',_0x96b1('0x2'),_0x96b1('0x3'),_0x96b1('0x4'),_0x96b1('0x5'),'clientId',_0x96b1('0x6'),_0x96b1('0x7'),'serverUrl','type'],'include':[{'model':_0x96b1('0x8'),'as':_0x96b1('0x9'),'attributes':['id','name',_0x96b1('0xa'),_0x96b1('0xb'),'ticketType',_0x96b1('0xc'),_0x96b1('0xd'),_0x96b1('0xe'),_0x96b1('0xf')],'include':[{'model':_0x96b1('0x10'),'as':'Subjects','include':[{'model':_0x96b1('0x11'),'as':'Variable','attributes':['id','name']}]},{'model':'SalesforceField','as':'Descriptions','include':[{'model':_0x96b1('0x11'),'as':_0x96b1('0x11'),'attributes':['id',_0x96b1('0x2')]}]},{'model':_0x96b1('0x10'),'as':_0x96b1('0x12'),'include':[{'model':'Variable','as':_0x96b1('0x11'),'attributes':['id',_0x96b1('0x2')]}]}]}]},'log':_0x96b1('0x13')});};};
\ No newline at end of file
index 0b5bfe7..b8b479e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xda19=['ServicenowConfiguration','Configurations','name','ServicenowField','Subjects','type','Variable','Descriptions','content','key','keyType','keyContent','Fields','nameField','GetServicenowkAccount','getServicenowAccounts','GetServicenowAccount','description','password','email','remoteUri','serverUrl'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0xda19,0xd5));var _0x9da1=function(_0x5ec859,_0x1c0ea4){_0x5ec859=_0x5ec859-0x0;var _0xd2eb60=_0xda19[_0x5ec859];return _0xd2eb60;};'use strict';var client=require('../../client');exports[_0x9da1('0x0')]=function(){return function(_0x430d39){return client['Request'](_0x9da1('0x1'),{'options':{'raw':![],'attributes':['id','name',_0x9da1('0x2'),'username',_0x9da1('0x3'),_0x9da1('0x4'),_0x9da1('0x5'),_0x9da1('0x6')],'include':[{'model':_0x9da1('0x7'),'as':_0x9da1('0x8'),'attributes':['id',_0x9da1('0x9')],'include':[{'model':_0x9da1('0xa'),'as':_0x9da1('0xb'),'attributes':['id',_0x9da1('0xc'),'content','variableName'],'include':[{'model':'Variable','as':_0x9da1('0xd'),'attributes':['id','name']}]},{'model':_0x9da1('0xa'),'as':_0x9da1('0xe'),'attributes':['id',_0x9da1('0xc'),_0x9da1('0xf'),_0x9da1('0x10'),_0x9da1('0x11'),_0x9da1('0x12'),'variableName'],'include':[{'model':'Variable','as':_0x9da1('0xd'),'attributes':['id','name']}]},{'model':_0x9da1('0xa'),'as':_0x9da1('0x13'),'attributes':['id',_0x9da1('0xc'),_0x9da1('0xf'),'idField',_0x9da1('0x14'),'customField','variableName'],'include':[{'model':_0x9da1('0xd'),'as':'Variable','attributes':['id',_0x9da1('0x9')]}]}]}]},'log':_0x9da1('0x15')});};};
\ No newline at end of file
+var _0x814b=['variableName','Variable','Descriptions','key','keyContent','Fields','idField','nameField','customField','GetServicenowkAccount','../../client','getServicenowAccounts','Request','GetServicenowAccount','name','username','password','email','remoteUri','serverUrl','ServicenowConfiguration','ServicenowField','type','content'];(function(_0x38e04b,_0x38f1eb){var _0x181bd5=function(_0x5a57f0){while(--_0x5a57f0){_0x38e04b['push'](_0x38e04b['shift']());}};_0x181bd5(++_0x38f1eb);}(_0x814b,0x1a2));var _0xb814=function(_0x2302a1,_0x4bc33d){_0x2302a1=_0x2302a1-0x0;var _0x413cae=_0x814b[_0x2302a1];return _0x413cae;};'use strict';var client=require(_0xb814('0x0'));exports[_0xb814('0x1')]=function(){return function(_0x434f30){return client[_0xb814('0x2')](_0xb814('0x3'),{'options':{'raw':![],'attributes':['id',_0xb814('0x4'),'description',_0xb814('0x5'),_0xb814('0x6'),_0xb814('0x7'),_0xb814('0x8'),_0xb814('0x9')],'include':[{'model':_0xb814('0xa'),'as':'Configurations','attributes':['id',_0xb814('0x4')],'include':[{'model':_0xb814('0xb'),'as':'Subjects','attributes':['id',_0xb814('0xc'),_0xb814('0xd'),_0xb814('0xe')],'include':[{'model':_0xb814('0xf'),'as':_0xb814('0xf'),'attributes':['id',_0xb814('0x4')]}]},{'model':_0xb814('0xb'),'as':_0xb814('0x10'),'attributes':['id',_0xb814('0xc'),_0xb814('0xd'),_0xb814('0x11'),'keyType',_0xb814('0x12'),'variableName'],'include':[{'model':_0xb814('0xf'),'as':_0xb814('0xf'),'attributes':['id',_0xb814('0x4')]}]},{'model':_0xb814('0xb'),'as':_0xb814('0x13'),'attributes':['id',_0xb814('0xc'),_0xb814('0xd'),_0xb814('0x14'),_0xb814('0x15'),_0xb814('0x16'),_0xb814('0xe')],'include':[{'model':_0xb814('0xf'),'as':_0xb814('0xf'),'attributes':['id',_0xb814('0x4')]}]}]}]},'log':_0xb814('0x17')});};};
\ No newline at end of file
index 81eb993..1abff5b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xda2d=['Subjects','type','content','variableName','Variable','key','keyType','keyContent','idField','nameField','customField','getSugarcrmAccounts','Request','GetSugarcrmAccount','name','serverUrl','SugarcrmConfiguration','Configurations','SugarcrmField'];(function(_0x207140,_0x4c6556){var _0x39e8cf=function(_0x16b730){while(--_0x16b730){_0x207140['push'](_0x207140['shift']());}};_0x39e8cf(++_0x4c6556);}(_0xda2d,0x102));var _0xdda2=function(_0x5f2cdf,_0x4d5577){_0x5f2cdf=_0x5f2cdf-0x0;var _0x20b3e3=_0xda2d[_0x5f2cdf];return _0x20b3e3;};'use strict';var client=require('../../client');exports[_0xdda2('0x0')]=function(){return function(_0x35f029){return client[_0xdda2('0x1')](_0xdda2('0x2'),{'options':{'raw':![],'attributes':['id',_0xdda2('0x3'),'username','password','remoteUri',_0xdda2('0x4')],'include':[{'model':_0xdda2('0x5'),'as':_0xdda2('0x6'),'attributes':['id',_0xdda2('0x3')],'include':[{'model':_0xdda2('0x7'),'as':_0xdda2('0x8'),'attributes':['id',_0xdda2('0x9'),_0xdda2('0xa'),_0xdda2('0xb')],'include':[{'model':_0xdda2('0xc'),'as':'Variable','attributes':['id',_0xdda2('0x3')]}]},{'model':_0xdda2('0x7'),'as':'Descriptions','attributes':['id',_0xdda2('0x9'),_0xdda2('0xa'),_0xdda2('0xd'),_0xdda2('0xe'),_0xdda2('0xf'),_0xdda2('0xb')],'include':[{'model':_0xdda2('0xc'),'as':_0xdda2('0xc'),'attributes':['id','name']}]},{'model':'SugarcrmField','as':'Fields','attributes':['id',_0xdda2('0x9'),_0xdda2('0xa'),_0xdda2('0x10'),_0xdda2('0x11'),_0xdda2('0x12'),_0xdda2('0xb')],'include':[{'model':_0xdda2('0xc'),'as':'Variable','attributes':['id',_0xdda2('0x3')]}]}]}]},'log':'GetSugarcrmAccount'});};};
\ No newline at end of file
+var _0x14a0=['variableName','key','keyContent','Variable','SugarcrmField','Fields','idField','nameField','customField','getSugarcrmAccounts','Request','GetSugarcrmAccount','name','username','password','SugarcrmConfiguration','Configurations','type','content'];(function(_0x56ea6f,_0x15535a){var _0x43ac31=function(_0x1b6d99){while(--_0x1b6d99){_0x56ea6f['push'](_0x56ea6f['shift']());}};_0x43ac31(++_0x15535a);}(_0x14a0,0x8e));var _0x014a=function(_0x406720,_0x4502fc){_0x406720=_0x406720-0x0;var _0x3c0262=_0x14a0[_0x406720];return _0x3c0262;};'use strict';var client=require('../../client');exports[_0x014a('0x0')]=function(){return function(_0x451138){return client[_0x014a('0x1')](_0x014a('0x2'),{'options':{'raw':![],'attributes':['id',_0x014a('0x3'),_0x014a('0x4'),_0x014a('0x5'),'remoteUri','serverUrl'],'include':[{'model':_0x014a('0x6'),'as':_0x014a('0x7'),'attributes':['id',_0x014a('0x3')],'include':[{'model':'SugarcrmField','as':'Subjects','attributes':['id',_0x014a('0x8'),_0x014a('0x9'),_0x014a('0xa')],'include':[{'model':'Variable','as':'Variable','attributes':['id',_0x014a('0x3')]}]},{'model':'SugarcrmField','as':'Descriptions','attributes':['id','type','content',_0x014a('0xb'),'keyType',_0x014a('0xc'),_0x014a('0xa')],'include':[{'model':'Variable','as':_0x014a('0xd'),'attributes':['id',_0x014a('0x3')]}]},{'model':_0x014a('0xe'),'as':_0x014a('0xf'),'attributes':['id',_0x014a('0x8'),_0x014a('0x9'),_0x014a('0x10'),_0x014a('0x11'),_0x014a('0x12'),_0x014a('0xa')],'include':[{'model':_0x014a('0xd'),'as':_0x014a('0xd'),'attributes':['id','name']}]}]}]},'log':_0x014a('0x2')});};};
\ No newline at end of file
index 65a9306..b985127 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xac79=['username','accessKey','serverUrl','VtigerConfiguration','Configurations','VtigerField','Subjects','type','Variable','Descriptions','content','key','keyType','keyContent','variableName','Fields','nameField','customField','../../client','getVtigerAccounts','Request','GetVtigerAccount','name','description'];(function(_0x23be6b,_0x286ab9){var _0x1ac89a=function(_0x12701a){while(--_0x12701a){_0x23be6b['push'](_0x23be6b['shift']());}};_0x1ac89a(++_0x286ab9);}(_0xac79,0x17a));var _0x9ac7=function(_0x3bb2d3,_0x5ad50e){_0x3bb2d3=_0x3bb2d3-0x0;var _0x442187=_0xac79[_0x3bb2d3];return _0x442187;};'use strict';var client=require(_0x9ac7('0x0'));exports[_0x9ac7('0x1')]=function(){return function(_0x322593){return client[_0x9ac7('0x2')](_0x9ac7('0x3'),{'options':{'raw':![],'attributes':['id',_0x9ac7('0x4'),_0x9ac7('0x5'),_0x9ac7('0x6'),_0x9ac7('0x7'),'remoteUri',_0x9ac7('0x8')],'include':[{'model':_0x9ac7('0x9'),'as':_0x9ac7('0xa'),'attributes':['id',_0x9ac7('0x4')],'include':[{'model':_0x9ac7('0xb'),'as':_0x9ac7('0xc'),'attributes':['id',_0x9ac7('0xd'),'content','variableName'],'include':[{'model':_0x9ac7('0xe'),'as':'Variable','attributes':['id',_0x9ac7('0x4')]}]},{'model':'VtigerField','as':_0x9ac7('0xf'),'attributes':['id',_0x9ac7('0xd'),_0x9ac7('0x10'),_0x9ac7('0x11'),_0x9ac7('0x12'),_0x9ac7('0x13'),_0x9ac7('0x14')],'include':[{'model':_0x9ac7('0xe'),'as':'Variable','attributes':['id',_0x9ac7('0x4')]}]},{'model':_0x9ac7('0xb'),'as':_0x9ac7('0x15'),'attributes':['id','type',_0x9ac7('0x10'),'idField',_0x9ac7('0x16'),_0x9ac7('0x17'),_0x9ac7('0x14')],'include':[{'model':_0x9ac7('0xe'),'as':_0x9ac7('0xe'),'attributes':['id','name']}]}]}]},'log':'GetVtigerAccount'});};};
\ No newline at end of file
+var _0x10a0=['Configurations','VtigerField','type','content','variableName','Variable','Descriptions','key','Fields','idField','nameField','GetVtigerAccount','../../client','getVtigerAccounts','Request','name','description','accessKey','remoteUri','VtigerConfiguration'];(function(_0x24061a,_0x1c9f4d){var _0x82054e=function(_0x2ec346){while(--_0x2ec346){_0x24061a['push'](_0x24061a['shift']());}};_0x82054e(++_0x1c9f4d);}(_0x10a0,0x124));var _0x010a=function(_0xd6bcdb,_0x44853c){_0xd6bcdb=_0xd6bcdb-0x0;var _0x199a86=_0x10a0[_0xd6bcdb];return _0x199a86;};'use strict';var client=require(_0x010a('0x0'));exports[_0x010a('0x1')]=function(){return function(_0x30f561){return client[_0x010a('0x2')]('GetVtigerAccount',{'options':{'raw':![],'attributes':['id',_0x010a('0x3'),_0x010a('0x4'),'username',_0x010a('0x5'),_0x010a('0x6'),'serverUrl'],'include':[{'model':_0x010a('0x7'),'as':_0x010a('0x8'),'attributes':['id','name'],'include':[{'model':_0x010a('0x9'),'as':'Subjects','attributes':['id',_0x010a('0xa'),_0x010a('0xb'),_0x010a('0xc')],'include':[{'model':'Variable','as':_0x010a('0xd'),'attributes':['id',_0x010a('0x3')]}]},{'model':_0x010a('0x9'),'as':_0x010a('0xe'),'attributes':['id','type',_0x010a('0xb'),_0x010a('0xf'),'keyType','keyContent',_0x010a('0xc')],'include':[{'model':_0x010a('0xd'),'as':'Variable','attributes':['id','name']}]},{'model':_0x010a('0x9'),'as':_0x010a('0x10'),'attributes':['id',_0x010a('0xa'),_0x010a('0xb'),_0x010a('0x11'),_0x010a('0x12'),'customField',_0x010a('0xc')],'include':[{'model':_0x010a('0xd'),'as':_0x010a('0xd'),'attributes':['id',_0x010a('0x3')]}]}]}]},'log':_0x010a('0x13')});};};
\ No newline at end of file
index a413992..728c570 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4838=['type','ZendeskConfiguration','Configurations','Tag','ZendeskField','Variable','content','key','keyContent','variableName','idField','nameField','../../client','getZendeskAccounts','Request','GetZendeskAccount','name','username','password','token','remoteUri','authType','serverUrl'];(function(_0x42a2db,_0x4c2b9b){var _0x1ad451=function(_0x3672f3){while(--_0x3672f3){_0x42a2db['push'](_0x42a2db['shift']());}};_0x1ad451(++_0x4c2b9b);}(_0x4838,0x1aa));var _0x8483=function(_0x500819,_0x24d1c2){_0x500819=_0x500819-0x0;var _0x5b4fe6=_0x4838[_0x500819];return _0x5b4fe6;};'use strict';var client=require(_0x8483('0x0'));exports[_0x8483('0x1')]=function(){return function(_0x41f345){return client[_0x8483('0x2')](_0x8483('0x3'),{'options':{'raw':![],'attributes':['id',_0x8483('0x4'),_0x8483('0x5'),_0x8483('0x6'),_0x8483('0x7'),_0x8483('0x8'),_0x8483('0x9'),_0x8483('0xa'),_0x8483('0xb')],'include':[{'model':_0x8483('0xc'),'as':_0x8483('0xd'),'attributes':['id',_0x8483('0x4')],'include':[{'model':_0x8483('0xe'),'attributes':['id',_0x8483('0x4')]},{'model':_0x8483('0xf'),'as':'Subjects','attributes':['id',_0x8483('0xb'),'content','variableName'],'include':[{'model':_0x8483('0x10'),'as':_0x8483('0x10'),'attributes':['id',_0x8483('0x4')]}]},{'model':_0x8483('0xf'),'as':'Descriptions','attributes':['id',_0x8483('0xb'),_0x8483('0x11'),_0x8483('0x12'),'keyType',_0x8483('0x13'),_0x8483('0x14')],'include':[{'model':_0x8483('0x10'),'as':'Variable','attributes':['id',_0x8483('0x4')]}]},{'model':_0x8483('0xf'),'as':'Fields','attributes':['id',_0x8483('0xb'),_0x8483('0x11'),_0x8483('0x15'),_0x8483('0x16'),'customField',_0x8483('0x14')],'include':[{'model':'Variable','as':_0x8483('0x10'),'attributes':['id',_0x8483('0x4')]}]}]}]},'log':_0x8483('0x3')});};};
\ No newline at end of file
+var _0x77fc=['nameField','../../client','getZendeskAccounts','Request','GetZendeskAccount','name','username','password','remoteUri','authType','serverUrl','type','ZendeskConfiguration','Tag','ZendeskField','Variable','Descriptions','content','key','variableName','Fields','idField'];(function(_0x7f92f3,_0x233917){var _0xe35281=function(_0x1c1052){while(--_0x1c1052){_0x7f92f3['push'](_0x7f92f3['shift']());}};_0xe35281(++_0x233917);}(_0x77fc,0x9b));var _0xc77f=function(_0x45d55e,_0x2fede3){_0x45d55e=_0x45d55e-0x0;var _0x29812a=_0x77fc[_0x45d55e];return _0x29812a;};'use strict';var client=require(_0xc77f('0x0'));exports[_0xc77f('0x1')]=function(){return function(_0x318216){return client[_0xc77f('0x2')](_0xc77f('0x3'),{'options':{'raw':![],'attributes':['id',_0xc77f('0x4'),_0xc77f('0x5'),_0xc77f('0x6'),'token',_0xc77f('0x7'),_0xc77f('0x8'),_0xc77f('0x9'),_0xc77f('0xa')],'include':[{'model':_0xc77f('0xb'),'as':'Configurations','attributes':['id','name'],'include':[{'model':_0xc77f('0xc'),'attributes':['id',_0xc77f('0x4')]},{'model':_0xc77f('0xd'),'as':'Subjects','attributes':['id',_0xc77f('0xa'),'content','variableName'],'include':[{'model':'Variable','as':_0xc77f('0xe'),'attributes':['id','name']}]},{'model':_0xc77f('0xd'),'as':_0xc77f('0xf'),'attributes':['id',_0xc77f('0xa'),_0xc77f('0x10'),_0xc77f('0x11'),'keyType','keyContent',_0xc77f('0x12')],'include':[{'model':'Variable','as':'Variable','attributes':['id','name']}]},{'model':_0xc77f('0xd'),'as':_0xc77f('0x13'),'attributes':['id',_0xc77f('0xa'),'content',_0xc77f('0x14'),_0xc77f('0x15'),'customField',_0xc77f('0x12')],'include':[{'model':'Variable','as':'Variable','attributes':['id','name']}]}]}]},'log':_0xc77f('0x3')});};};
\ No newline at end of file
index 83611d4..06eaa66 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa881=['code','refreshToken','ZohoConfiguration','Configurations','moduleCreate','moduleSearch','ZohoField','Subjects','type','content','variableName','Variable','Descriptions','key','keyContent','Fields','idField','customField','../../client','getZohoAccounts','Request','GetZohoAccount','name','description','zone','clientId','clientSecret'];(function(_0x584082,_0x388b73){var _0x49fcaa=function(_0x47da73){while(--_0x47da73){_0x584082['push'](_0x584082['shift']());}};_0x49fcaa(++_0x388b73);}(_0xa881,0x99));var _0x1a88=function(_0xa464c9,_0x7c86d8){_0xa464c9=_0xa464c9-0x0;var _0x3d73c4=_0xa881[_0xa464c9];return _0x3d73c4;};'use strict';var client=require(_0x1a88('0x0'));exports[_0x1a88('0x1')]=function(){return function(_0x114f3b){return client[_0x1a88('0x2')](_0x1a88('0x3'),{'options':{'raw':![],'attributes':['id',_0x1a88('0x4'),_0x1a88('0x5'),'host',_0x1a88('0x6'),_0x1a88('0x7'),_0x1a88('0x8'),'serverUrl',_0x1a88('0x9'),_0x1a88('0xa')],'include':[{'model':_0x1a88('0xb'),'as':_0x1a88('0xc'),'attributes':['id',_0x1a88('0x4'),_0x1a88('0xd'),_0x1a88('0xe'),_0x1a88('0x5')],'include':[{'model':_0x1a88('0xf'),'as':_0x1a88('0x10'),'attributes':['id',_0x1a88('0x11'),_0x1a88('0x12'),_0x1a88('0x13')],'include':[{'model':_0x1a88('0x14'),'as':_0x1a88('0x14'),'attributes':['id','name']}]},{'model':_0x1a88('0xf'),'as':_0x1a88('0x15'),'attributes':['id',_0x1a88('0x11'),_0x1a88('0x12'),_0x1a88('0x16'),'keyType',_0x1a88('0x17'),_0x1a88('0x13')],'include':[{'model':'Variable','as':_0x1a88('0x14'),'attributes':['id',_0x1a88('0x4')]}]},{'model':_0x1a88('0xf'),'as':_0x1a88('0x18'),'attributes':['id',_0x1a88('0x11'),'content',_0x1a88('0x19'),'nameField',_0x1a88('0x1a'),_0x1a88('0x13')],'include':[{'model':_0x1a88('0x14'),'as':_0x1a88('0x14'),'attributes':['id',_0x1a88('0x4')]}]}]}]},'log':_0x1a88('0x3')});};};
\ No newline at end of file
+var _0x7a60=['content','variableName','Variable','ZohoField','Descriptions','key','keyType','keyContent','idField','customField','getZohoAccounts','Request','GetZohoAccount','name','description','host','zone','clientId','clientSecret','serverUrl','code','refreshToken','ZohoConfiguration','Configurations','moduleSearch','Subjects','type'];(function(_0x4729d5,_0x4c585b){var _0x380482=function(_0x1bf23e){while(--_0x1bf23e){_0x4729d5['push'](_0x4729d5['shift']());}};_0x380482(++_0x4c585b);}(_0x7a60,0xfd));var _0x07a6=function(_0x44ebe1,_0x44650a){_0x44ebe1=_0x44ebe1-0x0;var _0x20eedc=_0x7a60[_0x44ebe1];return _0x20eedc;};'use strict';var client=require('../../client');exports[_0x07a6('0x0')]=function(){return function(_0x2da5c6){return client[_0x07a6('0x1')](_0x07a6('0x2'),{'options':{'raw':![],'attributes':['id',_0x07a6('0x3'),_0x07a6('0x4'),_0x07a6('0x5'),_0x07a6('0x6'),_0x07a6('0x7'),_0x07a6('0x8'),_0x07a6('0x9'),_0x07a6('0xa'),_0x07a6('0xb')],'include':[{'model':_0x07a6('0xc'),'as':_0x07a6('0xd'),'attributes':['id',_0x07a6('0x3'),'moduleCreate',_0x07a6('0xe'),_0x07a6('0x4')],'include':[{'model':'ZohoField','as':_0x07a6('0xf'),'attributes':['id',_0x07a6('0x10'),_0x07a6('0x11'),_0x07a6('0x12')],'include':[{'model':'Variable','as':_0x07a6('0x13'),'attributes':['id',_0x07a6('0x3')]}]},{'model':_0x07a6('0x14'),'as':_0x07a6('0x15'),'attributes':['id','type',_0x07a6('0x11'),_0x07a6('0x16'),_0x07a6('0x17'),_0x07a6('0x18'),_0x07a6('0x12')],'include':[{'model':_0x07a6('0x13'),'as':'Variable','attributes':['id','name']}]},{'model':_0x07a6('0x14'),'as':'Fields','attributes':['id',_0x07a6('0x10'),_0x07a6('0x11'),_0x07a6('0x19'),'nameField',_0x07a6('0x1a'),'variableName'],'include':[{'model':_0x07a6('0x13'),'as':'Variable','attributes':['id',_0x07a6('0x3')]}]}]}]},'log':_0x07a6('0x2')});};};
\ No newline at end of file
index 3652732..205000e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf675=['queue','accountcode','uniqueid','voiceDialReport','membername','endtime','starttime','seconds','exten','dialstring','agent','toNumber','lodash','util','../client','voiceQueueReport','queuecallercompleteAt','CreateMemberReport','voice','lastAssignedTo','isNil','interface','TALKING','diff','queuecallerleaveAt','inbound','calleridnum'];(function(_0x2e0725,_0x52ee8c){var _0x3a85d3=function(_0x1b4184){while(--_0x1b4184){_0x2e0725['push'](_0x2e0725['shift']());}};_0x3a85d3(++_0x52ee8c);}(_0xf675,0x1bc));var _0x5f67=function(_0x37ded3,_0x371ebb){_0x37ded3=_0x37ded3-0x0;var _0x51e49e=_0xf675[_0x37ded3];return _0x51e49e;};'use strict';var moment=require('moment');var _=require(_0x5f67('0x0'));var util=require(_0x5f67('0x1'));var client=require(_0x5f67('0x2'));exports[_0x5f67('0x3')]=function(_0x346ddb){var _0x1654ec=_0x346ddb[_0x5f67('0x4')]||_0x346ddb['queuecallerexitAt'];return client['Request'](_0x5f67('0x5'),{'body':{'channel':_0x5f67('0x6'),'membername':_0x346ddb[_0x5f67('0x7')],'interface':_[_0x5f67('0x8')](_0x346ddb['interface'])?util['format']('SIP/%s',_0x346ddb[_0x5f67('0x7')]):_0x346ddb[_0x5f67('0x9')],'type':_0x5f67('0xa'),'enterAt':_0x346ddb['queuecallerleaveAt'],'exitAt':_0x1654ec,'duration':moment(_0x1654ec)[_0x5f67('0xb')](_0x346ddb[_0x5f67('0xc')],'seconds'),'data1':_0x5f67('0xd'),'data2':_0x346ddb[_0x5f67('0xe')],'data3':_0x346ddb['exten'],'data4':null,'data5':_0x346ddb[_0x5f67('0xf')],'role':'agent','internal':_0x346ddb['accountcode']?_['toNumber'](_0x346ddb[_0x5f67('0x10')]):undefined,'uniqueid':_0x346ddb[_0x5f67('0x11')]},'log':_0x5f67('0x5')});};exports[_0x5f67('0x12')]=function(_0x336c60){return client['Request'](_0x5f67('0x5'),{'body':{'channel':_0x5f67('0x6'),'membername':_0x336c60[_0x5f67('0x13')],'interface':_0x336c60[_0x5f67('0x9')],'type':_0x5f67('0xa'),'enterAt':_0x336c60['starttime'],'exitAt':_0x336c60[_0x5f67('0x14')],'duration':moment(_0x336c60[_0x5f67('0x14')])[_0x5f67('0xb')](_0x336c60['starttime'],'seconds')>=0x0?moment(_0x336c60[_0x5f67('0x14')])[_0x5f67('0xb')](_0x336c60[_0x5f67('0x15')],_0x5f67('0x16')):null,'data1':'outbound','data2':_0x336c60[_0x5f67('0x10')],'data3':_0x336c60[_0x5f67('0x17')],'data4':_0x336c60[_0x5f67('0x18')]||null,'role':_0x5f67('0x19'),'internal':_0x336c60['accountcode']?_[_0x5f67('0x1a')](_0x336c60['accountcode']):undefined,'uniqueid':_0x336c60[_0x5f67('0x11')]},'log':_0x5f67('0x5')});};
\ No newline at end of file
+var _0x1dc8=['queuecallerleaveAt','seconds','inbound','exten','queue','agent','accountcode','toNumber','uniqueid','CreateMemberReport','voiceDialReport','Request','membername','TALKING','endtime','diff','starttime','outbound','dialstring','moment','lodash','util','../client','voiceQueueReport','queuecallerexitAt','voice','lastAssignedTo','isNil','interface','format'];(function(_0x2fe50c,_0x2ec4f8){var _0x58224b=function(_0x2c26aa){while(--_0x2c26aa){_0x2fe50c['push'](_0x2fe50c['shift']());}};_0x58224b(++_0x2ec4f8);}(_0x1dc8,0xe5));var _0x81dc=function(_0x377a7d,_0x45aa46){_0x377a7d=_0x377a7d-0x0;var _0x3fd6a1=_0x1dc8[_0x377a7d];return _0x3fd6a1;};'use strict';var moment=require(_0x81dc('0x0'));var _=require(_0x81dc('0x1'));var util=require(_0x81dc('0x2'));var client=require(_0x81dc('0x3'));exports[_0x81dc('0x4')]=function(_0x5cf1c5){var _0x1daaf7=_0x5cf1c5['queuecallercompleteAt']||_0x5cf1c5[_0x81dc('0x5')];return client['Request']('CreateMemberReport',{'body':{'channel':_0x81dc('0x6'),'membername':_0x5cf1c5[_0x81dc('0x7')],'interface':_[_0x81dc('0x8')](_0x5cf1c5[_0x81dc('0x9')])?util[_0x81dc('0xa')]('SIP/%s',_0x5cf1c5[_0x81dc('0x7')]):_0x5cf1c5[_0x81dc('0x9')],'type':'TALKING','enterAt':_0x5cf1c5[_0x81dc('0xb')],'exitAt':_0x1daaf7,'duration':moment(_0x1daaf7)['diff'](_0x5cf1c5[_0x81dc('0xb')],_0x81dc('0xc')),'data1':_0x81dc('0xd'),'data2':_0x5cf1c5['calleridnum'],'data3':_0x5cf1c5[_0x81dc('0xe')],'data4':null,'data5':_0x5cf1c5[_0x81dc('0xf')],'role':_0x81dc('0x10'),'internal':_0x5cf1c5[_0x81dc('0x11')]?_[_0x81dc('0x12')](_0x5cf1c5[_0x81dc('0x11')]):undefined,'uniqueid':_0x5cf1c5[_0x81dc('0x13')]},'log':_0x81dc('0x14')});};exports[_0x81dc('0x15')]=function(_0x5e5264){return client[_0x81dc('0x16')](_0x81dc('0x14'),{'body':{'channel':_0x81dc('0x6'),'membername':_0x5e5264[_0x81dc('0x17')],'interface':_0x5e5264['interface'],'type':_0x81dc('0x18'),'enterAt':_0x5e5264['starttime'],'exitAt':_0x5e5264[_0x81dc('0x19')],'duration':moment(_0x5e5264[_0x81dc('0x19')])[_0x81dc('0x1a')](_0x5e5264[_0x81dc('0x1b')],'seconds')>=0x0?moment(_0x5e5264[_0x81dc('0x19')])['diff'](_0x5e5264[_0x81dc('0x1b')],_0x81dc('0xc')):null,'data1':_0x81dc('0x1c'),'data2':_0x5e5264[_0x81dc('0x11')],'data3':_0x5e5264[_0x81dc('0xe')],'data4':_0x5e5264[_0x81dc('0x1d')]||null,'role':_0x81dc('0x10'),'internal':_0x5e5264['accountcode']?_[_0x81dc('0x12')](_0x5e5264[_0x81dc('0x11')]):undefined,'uniqueid':_0x5e5264['uniqueid']},'log':_0x81dc('0x14')});};
\ No newline at end of file
index af4b5fa..3ccfef5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0962=['stopRecordingOnTransfer','GetSettings','../client','getSettings','Request','ShowSetting'];(function(_0x20a584,_0xe384a5){var _0x4b41a8=function(_0x2127c6){while(--_0x2127c6){_0x20a584['push'](_0x20a584['shift']());}};_0x4b41a8(++_0xe384a5);}(_0x0962,0x116));var _0x2096=function(_0x5cd56a,_0x48a519){_0x5cd56a=_0x5cd56a-0x0;var _0x399450=_0x0962[_0x5cd56a];return _0x399450;};'use strict';var client=require(_0x2096('0x0'));exports[_0x2096('0x1')]=function(){return client[_0x2096('0x2')](_0x2096('0x3'),{'options':{'raw':!![],'where':{'id':0x1},'attributes':[_0x2096('0x4')]},'log':_0x2096('0x5')});};
\ No newline at end of file
+var _0x9be2=['Request','stopRecordingOnTransfer','GetSettings','../client','getSettings'];(function(_0x2706a5,_0x2208fc){var _0x34c552=function(_0x3b09ba){while(--_0x3b09ba){_0x2706a5['push'](_0x2706a5['shift']());}};_0x34c552(++_0x2208fc);}(_0x9be2,0x85));var _0x29be=function(_0x2ed7bd,_0x212461){_0x2ed7bd=_0x2ed7bd-0x0;var _0x352472=_0x9be2[_0x2ed7bd];return _0x352472;};'use strict';var client=require(_0x29be('0x0'));exports[_0x29be('0x1')]=function(){return client[_0x29be('0x2')]('ShowSetting',{'options':{'raw':!![],'where':{'id':0x1},'attributes':[_0x29be('0x3')]},'log':_0x29be('0x4')});};
\ No newline at end of file
index 6630ac7..f77808d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0444=['name','../client','Request','GetTemplate'];(function(_0x26a10e,_0x47262a){var _0x308138=function(_0x4822ba){while(--_0x4822ba){_0x26a10e['push'](_0x26a10e['shift']());}};_0x308138(++_0x47262a);}(_0x0444,0xbd));var _0x4044=function(_0x5b010b,_0x30eb2d){_0x5b010b=_0x5b010b-0x0;var _0x525b1d=_0x0444[_0x5b010b];return _0x525b1d;};'use strict';var client=require(_0x4044('0x0'));exports['getTemplates']=function(_0x4fe379){return function(_0x139226){return client[_0x4044('0x1')](_0x4044('0x2'),{'options':{'raw':!![],'attributes':['id',_0x4044('0x3'),'html']},'log':_0x4044('0x2')});};};
\ No newline at end of file
+var _0xf35d=['../client','Request','GetTemplate','html'];(function(_0x299718,_0x27afc8){var _0xc9c41f=function(_0x695f8e){while(--_0x695f8e){_0x299718['push'](_0x299718['shift']());}};_0xc9c41f(++_0x27afc8);}(_0xf35d,0x17c));var _0xdf35=function(_0x20294b,_0x409f4c){_0x20294b=_0x20294b-0x0;var _0x3c1c5d=_0xf35d[_0x20294b];return _0x3c1c5d;};'use strict';var client=require(_0xdf35('0x0'));exports['getTemplates']=function(_0xe0e7c9){return function(_0x5d041e){return client[_0xdf35('0x1')](_0xdf35('0x2'),{'options':{'raw':!![],'attributes':['id','name',_0xdf35('0x3')]},'log':'GetTemplate'});};};
\ No newline at end of file
index 33d072c..8e2e98c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9f04=['data1','data2','data3','data5','data6','data7','../client','getTriggers','Request','GetTrigger','name','channel','status','Condition','AllConditions','field','operator','value','Action','action'];(function(_0xb301ed,_0x280e7f){var _0x3558be=function(_0x5f18d1){while(--_0x5f18d1){_0xb301ed['push'](_0xb301ed['shift']());}};_0x3558be(++_0x280e7f);}(_0x9f04,0xba));var _0x49f0=function(_0xa464c9,_0x7c86d8){_0xa464c9=_0xa464c9-0x0;var _0x3d73c4=_0x9f04[_0xa464c9];return _0x3d73c4;};'use strict';var client=require(_0x49f0('0x0'));exports[_0x49f0('0x1')]=function(_0x21e2af){return function(_0x536b4c){return client[_0x49f0('0x2')](_0x49f0('0x3'),{'options':{'raw':![],'attributes':['id',_0x49f0('0x4'),_0x49f0('0x5'),_0x49f0('0x6')],'include':[{'model':_0x49f0('0x7'),'as':_0x49f0('0x8'),'attributes':['id',_0x49f0('0x9'),_0x49f0('0xa'),_0x49f0('0xb')]},{'model':_0x49f0('0x7'),'as':'AnyConditions','attributes':['id',_0x49f0('0x9'),'operator','value']},{'model':_0x49f0('0xc'),'as':'Actions','attributes':['id',_0x49f0('0xd'),_0x49f0('0xe'),_0x49f0('0xf'),_0x49f0('0x10'),'data4',_0x49f0('0x11'),_0x49f0('0x12'),_0x49f0('0x13')]}]},'log':'GetTrigger'});};};
\ No newline at end of file
+var _0x20dd=['Action','Actions','action','data1','data3','data4','data6','data7','../client','getTriggers','Request','GetTrigger','name','channel','status','Condition','operator','AnyConditions'];(function(_0x19cf72,_0x37be00){var _0x2e5b3b=function(_0x3024e8){while(--_0x3024e8){_0x19cf72['push'](_0x19cf72['shift']());}};_0x2e5b3b(++_0x37be00);}(_0x20dd,0xbc));var _0xd20d=function(_0x2ff0b8,_0x39d6ac){_0x2ff0b8=_0x2ff0b8-0x0;var _0x58dcbe=_0x20dd[_0x2ff0b8];return _0x58dcbe;};'use strict';var client=require(_0xd20d('0x0'));exports[_0xd20d('0x1')]=function(_0x31d7e6){return function(_0x3f6b44){return client[_0xd20d('0x2')](_0xd20d('0x3'),{'options':{'raw':![],'attributes':['id',_0xd20d('0x4'),_0xd20d('0x5'),_0xd20d('0x6')],'include':[{'model':_0xd20d('0x7'),'as':'AllConditions','attributes':['id','field',_0xd20d('0x8'),'value']},{'model':_0xd20d('0x7'),'as':_0xd20d('0x9'),'attributes':['id','field',_0xd20d('0x8'),'value']},{'model':_0xd20d('0xa'),'as':_0xd20d('0xb'),'attributes':['id',_0xd20d('0xc'),_0xd20d('0xd'),'data2',_0xd20d('0xe'),_0xd20d('0xf'),'data5',_0xd20d('0x10'),_0xd20d('0x11')]}]},'log':'GetTrigger'});};};
\ No newline at end of file
index 60eb5f3..0534708 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7579=['registry','defaultuser','../client','getTrunks','Request','GetTrunk'];(function(_0xbca1b1,_0x33f0ce){var _0x4e1686=function(_0x58a80c){while(--_0x58a80c){_0xbca1b1['push'](_0xbca1b1['shift']());}};_0x4e1686(++_0x33f0ce);}(_0x7579,0x1e2));var _0x9757=function(_0x5a0b9,_0x1c0d56){_0x5a0b9=_0x5a0b9-0x0;var _0x2bf41a=_0x7579[_0x5a0b9];return _0x2bf41a;};'use strict';var client=require(_0x9757('0x0'));exports[_0x9757('0x1')]=function(_0x2e6b70){return function(_0x30eeec){return client[_0x9757('0x2')](_0x9757('0x3'),{'options':{'raw':!![],'where':{'active':0x1},'attributes':['id','name',_0x9757('0x4'),_0x9757('0x5')]},'log':_0x9757('0x3')});};};
\ No newline at end of file
+var _0xab44=['Request','GetTrunk','name','registry','../client','getTrunks'];(function(_0x55d856,_0x20a983){var _0x273c03=function(_0x531302){while(--_0x531302){_0x55d856['push'](_0x55d856['shift']());}};_0x273c03(++_0x20a983);}(_0xab44,0xe2));var _0x4ab4=function(_0x2c27a2,_0x5321cb){_0x2c27a2=_0x2c27a2-0x0;var _0xf7295d=_0xab44[_0x2c27a2];return _0xf7295d;};'use strict';var client=require(_0x4ab4('0x0'));exports[_0x4ab4('0x1')]=function(_0x3b09a0){return function(_0x2f665b){return client[_0x4ab4('0x2')](_0x4ab4('0x3'),{'options':{'raw':!![],'where':{'active':0x1},'attributes':['id',_0x4ab4('0x4'),_0x4ab4('0x5'),'defaultuser']},'log':'GetTrunk'});};};
\ No newline at end of file
index 3a9a7ac..e8cdb39 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(_0x4d44a6,_0x242d79){var _0x49784e=function(_0x11c027){while(--_0x11c027){_0x4d44a6['push'](_0x4d44a6['shift']());}};_0x49784e(++_0x242d79);}(_0x70e0,0x17b));var _0x070e=function(_0xc4388d,_0xc56789){_0xc4388d=_0xc4388d-0x0;var _0x193801=_0x70e0[_0xc4388d];return _0x193801;};'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 _0x9c44=['online','pauseType','Request','GetUser','agent','name','email','accountcode','lastLoginAt','lastPauseAt','voicePause','phone','mobile','interface','getTelephones','telephone','internal','PauseUser','savePause','getAgent','ShowUser','fullname'];(function(_0x2d8a6c,_0x5c8da8){var _0x5a680a=function(_0x30bce6){while(--_0x30bce6){_0x2d8a6c['push'](_0x2d8a6c['shift']());}};_0x5a680a(++_0x5c8da8);}(_0x9c44,0x178));var _0x49c4=function(_0x3511d3,_0x4107ae){_0x3511d3=_0x3511d3-0x0;var _0x5d6321=_0x9c44[_0x3511d3];return _0x5d6321;};'use strict';var client=require('../client');exports['getAgents']=function(){return function(){return client[_0x49c4('0x0')](_0x49c4('0x1'),{'options':{'raw':![],'where':{'role':_0x49c4('0x2')},'attributes':['id',_0x49c4('0x3'),_0x49c4('0x4'),_0x49c4('0x5'),'fullname','online',_0x49c4('0x6'),'pauseType',_0x49c4('0x7'),_0x49c4('0x8'),_0x49c4('0x9'),_0x49c4('0xa'),_0x49c4('0xb')]},'log':'getAgents'});};};exports[_0x49c4('0xc')]=function(){return function(){return client[_0x49c4('0x0')](_0x49c4('0x1'),{'options':{'raw':!![],'where':{'role':_0x49c4('0xd')},'attributes':['id','name','accountcode',_0x49c4('0xe')]},'log':_0x49c4('0xc')});};};exports['savePause']=function(_0xb611a1,_0x459d09,_0x4adb3c){return client['Request'](_0x49c4('0xf'),{'body':{'type':_0x459d09,'uniqueid':_0x4adb3c},'options':{'where':{'id':_0xb611a1['id']}},'log':_0x49c4('0x10')});};exports['saveUnpause']=function(_0x7df3a9){return client[_0x49c4('0x0')]('UnpauseUser',{'body':{},'options':{'where':{'id':_0x7df3a9['id']}},'log':_0x49c4('0x10')});};exports[_0x49c4('0x11')]=function(_0x21f15a){return client[_0x49c4('0x0')](_0x49c4('0x12'),{'options':{'raw':![],'where':{'role':_0x49c4('0x2'),'id':_0x21f15a},'attributes':['id',_0x49c4('0x3'),_0x49c4('0x4'),'accountcode',_0x49c4('0x13'),_0x49c4('0x14'),_0x49c4('0x6'),_0x49c4('0x15'),_0x49c4('0x7'),'voicePause',_0x49c4('0xb')]},'log':_0x49c4('0x11')});};
\ No newline at end of file
index 2930f12..5d62371 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2a95=['../client','CreateVoiceAgentReport','update','Request','UpdateVoiceAgentReport'];(function(_0xa6a120,_0x18840b){var _0x429341=function(_0x12ff50){while(--_0x12ff50){_0xa6a120['push'](_0xa6a120['shift']());}};_0x429341(++_0x18840b);}(_0x2a95,0x136));var _0x52a9=function(_0x865298,_0x345afb){_0x865298=_0x865298-0x0;var _0x42f68b=_0x2a95[_0x865298];return _0x42f68b;};'use strict';var client=require(_0x52a9('0x0'));exports['create']=function(_0x4d7963){return client['Request'](_0x52a9('0x1'),{'body':_0x4d7963,'log':_0x52a9('0x1')});};exports[_0x52a9('0x2')]=function(_0x65a95c,_0x22e830,_0x3ddeae){return client[_0x52a9('0x3')](_0x52a9('0x4'),{'body':_0x65a95c,'options':{'where':{'uniqueid':_0x22e830,'interface':_0x3ddeae,'agentcomplete':!![]}},'log':_0x52a9('0x4')});};
\ No newline at end of file
+var _0x8852=['CreateVoiceAgentReport','Request','UpdateVoiceAgentReport','create'];(function(_0x331d2e,_0x29a093){var _0x4ace25=function(_0x2fc9d3){while(--_0x2fc9d3){_0x331d2e['push'](_0x331d2e['shift']());}};_0x4ace25(++_0x29a093);}(_0x8852,0x147));var _0x2885=function(_0x3ab9ee,_0x4a74b8){_0x3ab9ee=_0x3ab9ee-0x0;var _0x82ee88=_0x8852[_0x3ab9ee];return _0x82ee88;};'use strict';var client=require('../client');exports[_0x2885('0x0')]=function(_0x5a0c24){return client['Request'](_0x2885('0x1'),{'body':_0x5a0c24,'log':_0x2885('0x1')});};exports['update']=function(_0x16b7b7,_0x34393e,_0x2e1fc2){return client[_0x2885('0x2')]('UpdateVoiceAgentReport',{'body':_0x16b7b7,'options':{'where':{'uniqueid':_0x34393e,'interface':_0x2e1fc2,'agentcomplete':!![]}},'log':_0x2885('0x3')});};
\ No newline at end of file
index 49571e8..4f97fc3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1c33=['day','format','YYYY-MM-DD\x20HH:mm:ss','endOf','type','duration','billableseconds','GetVoiceCallReports','moment','util','lodash','../client','Request','CreateVoiceCallReport','merge','context','callerid','DOCUMENTATION','getVoiceCallReports','outbound','startOf'];(function(_0x3facf7,_0x5cd28e){var _0x5620f9=function(_0x4f1079){while(--_0x4f1079){_0x3facf7['push'](_0x3facf7['shift']());}};_0x5620f9(++_0x5cd28e);}(_0x1c33,0xda));var _0x31c3=function(_0x347877,_0x629d6d){_0x347877=_0x347877-0x0;var _0x53f026=_0x1c33[_0x347877];return _0x53f026;};'use strict';var moment=require(_0x31c3('0x0'));var util=require(_0x31c3('0x1'));var _=require(_0x31c3('0x2'));var client=require(_0x31c3('0x3'));exports['create']=function(_0x4eafbe){return client[_0x31c3('0x4')](_0x31c3('0x5'),{'body':_[_0x31c3('0x6')](_0x4eafbe,{'source':_0x4eafbe['calleridnum'],'destinationcontext':_0x4eafbe[_0x31c3('0x7')],'callerid':_0x4eafbe[_0x31c3('0x8')],'amaflags':_0x31c3('0x9')}),'log':_0x31c3('0x5')});};exports[_0x31c3('0xa')]=function(){return function(){return client[_0x31c3('0x4')]('GetVoiceCallReport',{'options':{'where':{'type':[_0x31c3('0xb')],'createdAt':{'$between':[moment()[_0x31c3('0xc')](_0x31c3('0xd'))[_0x31c3('0xe')](_0x31c3('0xf')),moment()[_0x31c3('0x10')]('day')[_0x31c3('0xe')](_0x31c3('0xf'))]}},'attributes':[_0x31c3('0x11'),'disposition',_0x31c3('0x12'),_0x31c3('0x13')]},'log':_0x31c3('0x14')});};};
\ No newline at end of file
+var _0xb67d=['callerid','getVoiceCallReports','GetVoiceCallReport','outbound','startOf','day','format','YYYY-MM-DD\x20HH:mm:ss','endOf','type','GetVoiceCallReports','moment','util','lodash','../client','Request','CreateVoiceCallReport'];(function(_0x100d08,_0x1233f9){var _0x439f38=function(_0xa39521){while(--_0xa39521){_0x100d08['push'](_0x100d08['shift']());}};_0x439f38(++_0x1233f9);}(_0xb67d,0x192));var _0xdb67=function(_0x3b380d,_0x4bf247){_0x3b380d=_0x3b380d-0x0;var _0x54502b=_0xb67d[_0x3b380d];return _0x54502b;};'use strict';var moment=require(_0xdb67('0x0'));var util=require(_0xdb67('0x1'));var _=require(_0xdb67('0x2'));var client=require(_0xdb67('0x3'));exports['create']=function(_0x1ca099){return client[_0xdb67('0x4')](_0xdb67('0x5'),{'body':_['merge'](_0x1ca099,{'source':_0x1ca099['calleridnum'],'destinationcontext':_0x1ca099['context'],'callerid':_0x1ca099[_0xdb67('0x6')],'amaflags':'DOCUMENTATION'}),'log':_0xdb67('0x5')});};exports[_0xdb67('0x7')]=function(){return function(){return client[_0xdb67('0x4')](_0xdb67('0x8'),{'options':{'where':{'type':[_0xdb67('0x9')],'createdAt':{'$between':[moment()[_0xdb67('0xa')](_0xdb67('0xb'))[_0xdb67('0xc')](_0xdb67('0xd')),moment()[_0xdb67('0xe')]('day')[_0xdb67('0xc')](_0xdb67('0xd'))]}},'attributes':[_0xdb67('0xf'),'disposition','duration','billableseconds']},'log':_0xdb67('0x10')});};};
\ No newline at end of file
index e899191..42fdbd6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1ea3=['create','Request','CreateVoiceDialReport','../client'];(function(_0x4232d8,_0x13fd09){var _0x324de2=function(_0x167ad5){while(--_0x167ad5){_0x4232d8['push'](_0x4232d8['shift']());}};_0x324de2(++_0x13fd09);}(_0x1ea3,0x123));var _0x31ea=function(_0x1d9aa0,_0x272488){_0x1d9aa0=_0x1d9aa0-0x0;var _0x226868=_0x1ea3[_0x1d9aa0];return _0x226868;};'use strict';var client=require(_0x31ea('0x0'));exports[_0x31ea('0x1')]=function(_0x153276){return client[_0x31ea('0x2')](_0x31ea('0x3'),{'body':_0x153276,'log':_0x31ea('0x3')});};
\ No newline at end of file
+var _0x4760=['../client','Request','CreateVoiceDialReport'];(function(_0x55ff63,_0x52e36c){var _0x41841f=function(_0x23da47){while(--_0x23da47){_0x55ff63['push'](_0x55ff63['shift']());}};_0x41841f(++_0x52e36c);}(_0x4760,0x9c));var _0x0476=function(_0x40186e,_0x2530d6){_0x40186e=_0x40186e-0x0;var _0x5c388f=_0x4760[_0x40186e];return _0x5c388f;};'use strict';var client=require(_0x0476('0x0'));exports['create']=function(_0x37cb27){return client[_0x0476('0x1')](_0x0476('0x2'),{'body':_0x37cb27,'log':_0x0476('0x2')});};
\ No newline at end of file
index 161bca4..b8a443a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc6fe=['GetVoiceExtension','exten','recordingFormat','../client','getVoiceExtensions'];(function(_0x2d8e13,_0x2296b7){var _0xb69c95=function(_0x2d6623){while(--_0x2d6623){_0x2d8e13['push'](_0x2d8e13['shift']());}};_0xb69c95(++_0x2296b7);}(_0xc6fe,0xbc));var _0xec6f=function(_0x1e976c,_0x298d82){_0x1e976c=_0x1e976c-0x0;var _0x3a63fb=_0xc6fe[_0x1e976c];return _0x3a63fb;};'use strict';var client=require(_0xec6f('0x0'));exports[_0xec6f('0x1')]=function(){return function(){return client['Request'](_0xec6f('0x2'),{'options':{'raw':!![],'attributes':['id',_0xec6f('0x3'),_0xec6f('0x4')],'where':{'VoiceExtensionId':null}},'log':'getVoiceExtensions'});};};
\ No newline at end of file
+var _0x8db0=['recordingFormat','../client','getVoiceExtensions','GetVoiceExtension','exten'];(function(_0x1ebce2,_0x10e903){var _0x4a330c=function(_0x4fd810){while(--_0x4fd810){_0x1ebce2['push'](_0x1ebce2['shift']());}};_0x4a330c(++_0x10e903);}(_0x8db0,0x65));var _0x08db=function(_0x5d7227,_0x12aebe){_0x5d7227=_0x5d7227-0x0;var _0x15ac55=_0x8db0[_0x5d7227];return _0x15ac55;};'use strict';var client=require(_0x08db('0x0'));exports[_0x08db('0x1')]=function(){return function(){return client['Request'](_0x08db('0x2'),{'options':{'raw':!![],'attributes':['id',_0x08db('0x3'),_0x08db('0x4')],'where':{'VoiceExtensionId':null}},'log':'getVoiceExtensions'});};};
\ No newline at end of file
index b00f34b..cf194c1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xef9f=['dialPredictiveInterval','dialOriginateCallerIdNumber','dialOriginateTimeout','dialQueueTimeout','dialQueueProject','dialCongestionMaxRetry','dialCongestionRetryFrequency','dialBusyMaxRetry','dialBusyRetryFrequency','dialNoAnswerMaxRetry','dialNoAnswerRetryFrequency','dialGlobalMaxRetry','dialTimezone','dialPrefix','dialCheckDuplicateType','dialAMDActive','dialAMDInitialSilence','dialAMDGreeting','dialAMDAfterGreetingSilence','dialAMDBetweenWordsSilence','dialAMDMaximumNumberOfWords','dialAMDMaximumWordLength','timeout','dialRecallMeTimeout','dialOrderByScheduledAt','dialAgiAfterHangupAgent','dialQueueProject2','dialRandomLastDigitCallerIdNumber','dialCutDigit','dialNoSuchNumberMaxRetry','dialNoSuchNumberRetryFrequency','dialAbandonedMaxRetry','dialMachineMaxRetry','dialMachineRetryFrequency','dialAgentRejectRetryFrequency','mandatoryDisposition','dialPredictiveIntervalMaxThreshold','dialPredictiveIntervalMinThreshold','Trunk','name','active','Pause','TrunkBackup','callerid','Interval','Intervals','interval','../client','getVoiceQueues','Request','GetVoiceQueue','acw','acwTimeout','autopause','monitor_format','type','dialActive','dialLimitChannel','dialPowerLevel'];(function(_0x54d4a8,_0x585a59){var _0x3b321b=function(_0x245c6a){while(--_0x245c6a){_0x54d4a8['push'](_0x54d4a8['shift']());}};_0x3b321b(++_0x585a59);}(_0xef9f,0x191));var _0xfef9=function(_0x470796,_0x3cd398){_0x470796=_0x470796-0x0;var _0x5b3059=_0xef9f[_0x470796];return _0x5b3059;};'use strict';var client=require(_0xfef9('0x0'));exports[_0xfef9('0x1')]=function(){return function(){return client[_0xfef9('0x2')](_0xfef9('0x3'),{'options':{'raw':![],'attributes':['id','name',_0xfef9('0x4'),_0xfef9('0x5'),_0xfef9('0x6'),_0xfef9('0x7'),_0xfef9('0x8'),_0xfef9('0x9'),'dialMethod',_0xfef9('0xa'),'dialLimitQueue',_0xfef9('0xb'),'dialPredictiveOptimization','dialPredictiveOptimizationPercentage',_0xfef9('0xc'),'dialOriginateCallerIdName',_0xfef9('0xd'),_0xfef9('0xe'),'dialQueueOptions',_0xfef9('0xf'),_0xfef9('0x10'),_0xfef9('0x11'),_0xfef9('0x12'),_0xfef9('0x13'),_0xfef9('0x14'),_0xfef9('0x15'),_0xfef9('0x16'),_0xfef9('0x17'),_0xfef9('0x18'),'dialGlobalInterval',_0xfef9('0x19'),_0xfef9('0x1a'),_0xfef9('0x1b'),_0xfef9('0x1c'),_0xfef9('0x1d'),_0xfef9('0x1e'),'dialAMDTotalAnalysisTime','dialAMDMinWordLength',_0xfef9('0x1f'),_0xfef9('0x20'),'dialAMDSilenceThreshold',_0xfef9('0x21'),_0xfef9('0x22'),_0xfef9('0x23'),'dialRecallInQueue',_0xfef9('0x24'),_0xfef9('0x25'),'dialAgiAfterHangupClient',_0xfef9('0x26'),_0xfef9('0x7'),'strategy',_0xfef9('0x27'),_0xfef9('0x28'),_0xfef9('0x29'),_0xfef9('0x2a'),'dialDropMaxRetry','dialDropRetryFrequency',_0xfef9('0x2b'),'dialAbandonedRetryFrequency',_0xfef9('0x2c'),_0xfef9('0x2d'),'dialAgentRejectMaxRetry',_0xfef9('0x2e'),_0xfef9('0x2f'),_0xfef9('0x30'),_0xfef9('0x31')],'include':[{'model':_0xfef9('0x32'),'as':_0xfef9('0x32'),'attributes':['id',_0xfef9('0x33'),'callerid',_0xfef9('0x34')]},{'model':_0xfef9('0x35'),'as':'mandatoryDispositionPause','attributes':['id','name']},{'model':_0xfef9('0x32'),'as':_0xfef9('0x36'),'attributes':['id','name',_0xfef9('0x37'),'active']},{'model':_0xfef9('0x38'),'as':'Interval','attributes':['id',_0xfef9('0x33')],'include':[{'model':_0xfef9('0x38'),'as':_0xfef9('0x39'),'attributes':['id',_0xfef9('0x33'),_0xfef9('0x3a')]}]}]},'log':_0xfef9('0x1')});};};
\ No newline at end of file
+var _0x795d=['dialAMDGreeting','dialAMDAfterGreetingSilence','dialAMDTotalAnalysisTime','dialAMDMinWordLength','dialAMDBetweenWordsSilence','dialAMDMaximumNumberOfWords','dialAMDSilenceThreshold','dialAMDMaximumWordLength','timeout','dialRecallMeTimeout','dialRecallInQueue','dialAgiAfterHangupAgent','dialQueueProject2','monitor_format','dialRandomLastDigitCallerIdNumber','dialCutDigit','dialNoSuchNumberMaxRetry','dialDropMaxRetry','dialDropRetryFrequency','dialAbandonedMaxRetry','dialAbandonedRetryFrequency','dialMachineMaxRetry','dialAgentRejectMaxRetry','dialAgentRejectRetryFrequency','mandatoryDisposition','dialPredictiveIntervalMinThreshold','Trunk','Pause','TrunkBackup','callerid','active','Interval','Intervals','getVoiceQueues','../client','Request','GetVoiceQueue','name','acw','acwTimeout','autopause','type','dialActive','dialMethod','dialLimitChannel','dialLimitQueue','dialPowerLevel','dialPredictiveOptimizationPercentage','dialPredictiveInterval','dialOriginateCallerIdName','dialOriginateCallerIdNumber','dialOriginateTimeout','dialQueueOptions','dialQueueTimeout','dialQueueProject','dialCongestionMaxRetry','dialBusyRetryFrequency','dialNoAnswerMaxRetry','dialNoAnswerRetryFrequency','dialGlobalMaxRetry','dialTimezone','dialGlobalInterval','dialPrefix','dialCheckDuplicateType','dialAMDActive','dialAMDInitialSilence'];(function(_0x20a558,_0x160e0e){var _0x53d3f7=function(_0x259bd8){while(--_0x259bd8){_0x20a558['push'](_0x20a558['shift']());}};_0x53d3f7(++_0x160e0e);}(_0x795d,0x16c));var _0xd795=function(_0xe540c0,_0x2d98e5){_0xe540c0=_0xe540c0-0x0;var _0x130549=_0x795d[_0xe540c0];return _0x130549;};'use strict';var client=require(_0xd795('0x0'));exports['getVoiceQueues']=function(){return function(){return client[_0xd795('0x1')](_0xd795('0x2'),{'options':{'raw':![],'attributes':['id',_0xd795('0x3'),_0xd795('0x4'),_0xd795('0x5'),_0xd795('0x6'),'monitor_format',_0xd795('0x7'),_0xd795('0x8'),_0xd795('0x9'),_0xd795('0xa'),_0xd795('0xb'),_0xd795('0xc'),'dialPredictiveOptimization',_0xd795('0xd'),_0xd795('0xe'),_0xd795('0xf'),_0xd795('0x10'),_0xd795('0x11'),_0xd795('0x12'),_0xd795('0x13'),_0xd795('0x14'),_0xd795('0x15'),'dialCongestionRetryFrequency','dialBusyMaxRetry',_0xd795('0x16'),_0xd795('0x17'),_0xd795('0x18'),_0xd795('0x19'),_0xd795('0x1a'),_0xd795('0x1b'),_0xd795('0x1c'),_0xd795('0x1d'),_0xd795('0x1e'),_0xd795('0x1f'),_0xd795('0x20'),_0xd795('0x21'),_0xd795('0x22'),_0xd795('0x23'),_0xd795('0x24'),_0xd795('0x25'),_0xd795('0x26'),_0xd795('0x27'),_0xd795('0x28'),_0xd795('0x29'),_0xd795('0x2a'),'dialOrderByScheduledAt',_0xd795('0x2b'),'dialAgiAfterHangupClient',_0xd795('0x2c'),_0xd795('0x2d'),'strategy',_0xd795('0x2e'),_0xd795('0x2f'),_0xd795('0x30'),'dialNoSuchNumberRetryFrequency',_0xd795('0x31'),_0xd795('0x32'),_0xd795('0x33'),_0xd795('0x34'),_0xd795('0x35'),'dialMachineRetryFrequency',_0xd795('0x36'),_0xd795('0x37'),_0xd795('0x38'),'dialPredictiveIntervalMaxThreshold',_0xd795('0x39')],'include':[{'model':_0xd795('0x3a'),'as':_0xd795('0x3a'),'attributes':['id','name','callerid','active']},{'model':_0xd795('0x3b'),'as':'mandatoryDispositionPause','attributes':['id',_0xd795('0x3')]},{'model':'Trunk','as':_0xd795('0x3c'),'attributes':['id','name',_0xd795('0x3d'),_0xd795('0x3e')]},{'model':_0xd795('0x3f'),'as':_0xd795('0x3f'),'attributes':['id',_0xd795('0x3')],'include':[{'model':'Interval','as':_0xd795('0x40'),'attributes':['id','name','interval']}]}]},'log':_0xd795('0x41')});};};
\ No newline at end of file
index c71baed..90c03bd 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(_0x24084f,_0x336f48){var _0x5bbe18=function(_0x539ec8){while(--_0x539ec8){_0x24084f['push'](_0x24084f['shift']());}};_0x5bbe18(++_0x336f48);}(_0xa9e0,0x123));var _0x0a9e=function(_0x18a79d,_0x57bd2c){_0x18a79d=_0x18a79d-0x0;var _0x4f8848=_0xa9e0[_0x18a79d];return _0x4f8848;};'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(_0x155fea,_0x1afd1e){var _0x4394bb=function(_0x1b82c8){while(--_0x1b82c8){_0x155fea['push'](_0x155fea['shift']());}};_0x4394bb(++_0x1afd1e);}(_0xa9e0,0x123));var _0x0a9e=function(_0x34bf97,_0xc60f9d){_0x34bf97=_0x34bf97-0x0;var _0x292719=_0xa9e0[_0x34bf97];return _0x292719;};'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 c245caf..385203b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd7dd=['../client','getVoiceQueueRtPauses','Request','GetVoiceQueueRtPauses'];(function(_0xd2ff14,_0x34b145){var _0x40aa14=function(_0x162ae3){while(--_0x162ae3){_0xd2ff14['push'](_0xd2ff14['shift']());}};_0x40aa14(++_0x34b145);}(_0xd7dd,0x170));var _0xdd7d=function(_0x2d6334,_0x442f22){_0x2d6334=_0x2d6334-0x0;var _0x2ff29d=_0xd7dd[_0x2d6334];return _0x2ff29d;};'use strict';var client=require(_0xdd7d('0x0'));exports[_0xdd7d('0x1')]=function(_0xb021da){return function(){return client[_0xdd7d('0x2')](_0xdd7d('0x3'),{'options':{'where':{'VoiceQueueId':_0xb021da,'paused':!![]},'raw':!![]},'log':'getVoiceQueueRtPauses'});};};
\ No newline at end of file
+var _0x7cf5=['../client','getVoiceQueueRtPauses','Request'];(function(_0x2f73ab,_0x55a68b){var _0x281996=function(_0x544eb9){while(--_0x544eb9){_0x2f73ab['push'](_0x2f73ab['shift']());}};_0x281996(++_0x55a68b);}(_0x7cf5,0x10b));var _0x57cf=function(_0x162be4,_0x513841){_0x162be4=_0x162be4-0x0;var _0x1d0b27=_0x7cf5[_0x162be4];return _0x1d0b27;};'use strict';var client=require(_0x57cf('0x0'));exports[_0x57cf('0x1')]=function(_0x3174c5){return function(){return client[_0x57cf('0x2')]('GetVoiceQueueRtPauses',{'options':{'where':{'VoiceQueueId':_0x3174c5,'paused':!![]},'raw':!![]},'log':_0x57cf('0x1')});};};
\ No newline at end of file
index c8d6c0c..38b996f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9957=['CreateVoiceRecording','merge','monitorFilename','lodash','../client','create'];(function(_0x2081ba,_0x376753){var _0x3c8fc9=function(_0x2acdad){while(--_0x2acdad){_0x2081ba['push'](_0x2081ba['shift']());}};_0x3c8fc9(++_0x376753);}(_0x9957,0x93));var _0x7995=function(_0x1facfa,_0x1acf7d){_0x1facfa=_0x1facfa-0x0;var _0x9ec701=_0x9957[_0x1facfa];return _0x9ec701;};'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
+var _0x7a54=['create','Request','CreateVoiceRecording','monitorFilename','lodash','../client'];(function(_0x176512,_0x20ff5c){var _0x53397e=function(_0x4f8354){while(--_0x4f8354){_0x176512['push'](_0x176512['shift']());}};_0x53397e(++_0x20ff5c);}(_0x7a54,0x106));var _0x47a5=function(_0x439f9e,_0x2804c3){_0x439f9e=_0x439f9e-0x0;var _0x11f9b1=_0x7a54[_0x439f9e];return _0x11f9b1;};'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
index 82fe3b1..cf852da 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x82bf=['transfertargetaccountcode','transfertargetexten','origtransfererexten','attended','../client','transfers','blindTransfer','CreateVoiceTransferReport','result','transfererchannel','transferercalleridname','transfererconnectedlinenum','transfererconnectedlinename','transferercontext','transfererexten','transfererlinkedid','transfereecalleridnum','transfereeconnectedlinenum','transfereeconnectedlinename','transfereeaccountcode','transfereecontext','transfereeexten','isexternal','extension','blind','attendedTransfer','Request','origtransfererchannel','origtransferercalleridnum','origtransferercalleridname','secondtransfererconnectedlinenum','secondtransfererconnectedlinename','origtransfereraccountcode','secondtransferercontext','origtransfererlinkedid','transfertargetcalleridnum','transfertargetcalleridname','transfertargetconnectedlinenum','transfertargetconnectedlinename'];(function(_0x19ff50,_0x4ec334){var _0x33b996=function(_0x203a79){while(--_0x203a79){_0x19ff50['push'](_0x19ff50['shift']());}};_0x33b996(++_0x4ec334);}(_0x82bf,0x115));var _0xf82b=function(_0x59bcfd,_0x480a30){_0x59bcfd=_0x59bcfd-0x0;var _0x47619e=_0x82bf[_0x59bcfd];return _0x47619e;};'use strict';var client=require(_0xf82b('0x0'));exports[_0xf82b('0x1')]={};exports[_0xf82b('0x2')]=function(_0x430f42){return client['Request'](_0xf82b('0x3'),{'body':{'result':_0x430f42[_0xf82b('0x4')],'transfererchannel':_0x430f42[_0xf82b('0x5')],'transferercalleridnum':_0x430f42['transferercalleridnum'],'transferercalleridname':_0x430f42[_0xf82b('0x6')],'transfererconnectedlinenum':_0x430f42[_0xf82b('0x7')],'transfererconnectedlinename':_0x430f42[_0xf82b('0x8')],'transfereraccountcode':_0x430f42['transfereraccountcode'],'transferercontext':_0x430f42[_0xf82b('0x9')],'transfererexten':_0x430f42[_0xf82b('0xa')],'transfererlinkedid':_0x430f42[_0xf82b('0xb')],'transfereechannel':_0x430f42['transfereechannel'],'transfereecalleridnum':_0x430f42[_0xf82b('0xc')],'transfereecalleridname':_0x430f42['transfereecalleridname'],'transfereeconnectedlinenum':_0x430f42[_0xf82b('0xd')],'transfereeconnectedlinename':_0x430f42[_0xf82b('0xe')],'transfereeaccountcode':_0x430f42[_0xf82b('0xf')],'transfereecontext':_0x430f42[_0xf82b('0x10')],'transfereeexten':_0x430f42[_0xf82b('0x11')],'transfereelinkedid':_0x430f42['transfereelinkedid'],'isexternal':_0x430f42[_0xf82b('0x12')],'context':_0x430f42['context'],'extension':_0x430f42[_0xf82b('0x13')],'type':_0xf82b('0x14')},'log':_0xf82b('0x3')});};exports[_0xf82b('0x15')]=function(_0x4c1882){return client[_0xf82b('0x16')](_0xf82b('0x3'),{'body':{'result':_0x4c1882[_0xf82b('0x4')],'transfererchannel':_0x4c1882[_0xf82b('0x17')],'transferercalleridnum':_0x4c1882[_0xf82b('0x18')],'transferercalleridname':_0x4c1882[_0xf82b('0x19')],'transfererconnectedlinenum':_0x4c1882[_0xf82b('0x1a')],'transfererconnectedlinename':_0x4c1882[_0xf82b('0x1b')],'transfereraccountcode':_0x4c1882[_0xf82b('0x1c')],'transferercontext':_0x4c1882[_0xf82b('0x1d')],'transfererexten':_0x4c1882['secondtransfererexten'],'transfererlinkedid':_0x4c1882[_0xf82b('0x1e')],'transfereechannel':_0x4c1882['transfertargetchannel'],'transfereecalleridnum':_0x4c1882[_0xf82b('0x1f')],'transfereecalleridname':_0x4c1882[_0xf82b('0x20')],'transfereeconnectedlinenum':_0x4c1882[_0xf82b('0x21')],'transfereeconnectedlinename':_0x4c1882[_0xf82b('0x22')],'transfereeaccountcode':_0x4c1882[_0xf82b('0x23')],'transfereecontext':_0x4c1882['transfertargetcontext'],'transfereeexten':_0x4c1882[_0xf82b('0x24')],'transfereelinkedid':_0x4c1882['transfertargetlinkedid'],'isexternal':_0x4c1882['isexternal'],'context':_0x4c1882['origtransferercontext'],'extension':_0x4c1882[_0xf82b('0x25')],'type':_0xf82b('0x26')},'log':'CreateVoiceTransferReport'});};
\ No newline at end of file
+var _0x2244=['transfereechannel','transfereeconnectedlinename','transfereeaccountcode','transfereeexten','transfereelinkedid','isexternal','context','extension','blind','CreateVoiceTransferReport','attendedTransfer','Request','origtransferercalleridname','secondtransfererconnectedlinename','origtransfereraccountcode','secondtransferercontext','secondtransfererexten','transfertargetchannel','transfertargetcalleridnum','transfertargetcalleridname','transfertargetconnectedlinenum','transfertargetconnectedlinename','transfertargetaccountcode','transfertargetexten','transfertargetlinkedid','origtransferercontext','attended','../client','transfers','blindTransfer','result','transfererchannel','transferercalleridname','transfereraccountcode','transferercontext','transfererexten','transfererlinkedid'];(function(_0x566606,_0x51640a){var _0xfb2557=function(_0x5e63af){while(--_0x5e63af){_0x566606['push'](_0x566606['shift']());}};_0xfb2557(++_0x51640a);}(_0x2244,0x1b2));var _0x4224=function(_0x64d243,_0x4852f3){_0x64d243=_0x64d243-0x0;var _0x275046=_0x2244[_0x64d243];return _0x275046;};'use strict';var client=require(_0x4224('0x0'));exports[_0x4224('0x1')]={};exports[_0x4224('0x2')]=function(_0x41f303){return client['Request']('CreateVoiceTransferReport',{'body':{'result':_0x41f303[_0x4224('0x3')],'transfererchannel':_0x41f303[_0x4224('0x4')],'transferercalleridnum':_0x41f303['transferercalleridnum'],'transferercalleridname':_0x41f303[_0x4224('0x5')],'transfererconnectedlinenum':_0x41f303['transfererconnectedlinenum'],'transfererconnectedlinename':_0x41f303['transfererconnectedlinename'],'transfereraccountcode':_0x41f303[_0x4224('0x6')],'transferercontext':_0x41f303[_0x4224('0x7')],'transfererexten':_0x41f303[_0x4224('0x8')],'transfererlinkedid':_0x41f303[_0x4224('0x9')],'transfereechannel':_0x41f303[_0x4224('0xa')],'transfereecalleridnum':_0x41f303['transfereecalleridnum'],'transfereecalleridname':_0x41f303['transfereecalleridname'],'transfereeconnectedlinenum':_0x41f303['transfereeconnectedlinenum'],'transfereeconnectedlinename':_0x41f303[_0x4224('0xb')],'transfereeaccountcode':_0x41f303[_0x4224('0xc')],'transfereecontext':_0x41f303['transfereecontext'],'transfereeexten':_0x41f303[_0x4224('0xd')],'transfereelinkedid':_0x41f303[_0x4224('0xe')],'isexternal':_0x41f303[_0x4224('0xf')],'context':_0x41f303[_0x4224('0x10')],'extension':_0x41f303[_0x4224('0x11')],'type':_0x4224('0x12')},'log':_0x4224('0x13')});};exports[_0x4224('0x14')]=function(_0xee0532){return client[_0x4224('0x15')](_0x4224('0x13'),{'body':{'result':_0xee0532[_0x4224('0x3')],'transfererchannel':_0xee0532['origtransfererchannel'],'transferercalleridnum':_0xee0532['origtransferercalleridnum'],'transferercalleridname':_0xee0532[_0x4224('0x16')],'transfererconnectedlinenum':_0xee0532['secondtransfererconnectedlinenum'],'transfererconnectedlinename':_0xee0532[_0x4224('0x17')],'transfereraccountcode':_0xee0532[_0x4224('0x18')],'transferercontext':_0xee0532[_0x4224('0x19')],'transfererexten':_0xee0532[_0x4224('0x1a')],'transfererlinkedid':_0xee0532['origtransfererlinkedid'],'transfereechannel':_0xee0532[_0x4224('0x1b')],'transfereecalleridnum':_0xee0532[_0x4224('0x1c')],'transfereecalleridname':_0xee0532[_0x4224('0x1d')],'transfereeconnectedlinenum':_0xee0532[_0x4224('0x1e')],'transfereeconnectedlinename':_0xee0532[_0x4224('0x1f')],'transfereeaccountcode':_0xee0532[_0x4224('0x20')],'transfereecontext':_0xee0532['transfertargetcontext'],'transfereeexten':_0xee0532[_0x4224('0x21')],'transfereelinkedid':_0xee0532[_0x4224('0x22')],'isexternal':_0xee0532[_0x4224('0xf')],'context':_0xee0532[_0x4224('0x23')],'extension':_0xee0532['origtransfererexten'],'type':_0x4224('0x24')},'log':_0x4224('0x13')});};
\ No newline at end of file
index cc43085..d26bb2e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3024=['hasOwnProperty','available','pTalking','sumBillable','sumHoldTime','total','type','unmanaged','abandoned','waiting','loggedInDb','outbound','dialActive','dialMethod','dialOriginateCallerIdName','dialOriginateCallerIdNumber','dialOriginateTimeout','dialPrefix','temp','outboundAnswerAgiCallsDay','outboundAnswerCallsDay','outboundBlacklistCallsDay','outboundBusyCallsDay','outboundCongestionCallsDay','outboundDropCallsDayACS','outboundDropCallsDayTimeout','outboundNoAnswerCallsDay','outboundNoSuchCallsDay','outboundOriginateFailureCallsDay','outboundReCallsDay','outboundRejectCallsDay','outboundUnknownCallsDay','predictiveIntervalAnsweredCalls','predictiveIntervalAvgHoldtime','predictiveIntervalDroppedCallsCallersExit','predictiveIntervalDroppedCallsTimeout','predictiveIntervalErlangCalls','predictiveIntervalErlangCallsDroppedCalls','predictiveIntervalHitRate','predictiveIntervalMultiplicativeFactor','predictiveIntervalPauses','predictiveIntervalAvailable','predictiveIntervalTotalCalls','originated','erlangCalls','erlangCallToSecond','erlangAbandonmentRate','erlangBusyFactor','startPredictive','startProgressive','Trunk','active','Interval','push','length','find','omit','undefined','channels','voicechannel','map','uniqueid','channel','filename','wav','ai(mixmonitorid)','monitors','toLowerCase','isNil','YYYY-MM-DD\x20HH:mm:ss','rec','mixmonitorid','status','resolve','StopMixMonitor','destinationchannel','stop','%s.%s','Channel\x20doesn\x27t\x20exist','voicequeuechannel','voicequeuechannelhangup','queueChannels','Hangup','voicequeuechannelredirect','context','values','telephones','outboundChannels','campaigns','run','event','Event\x20name\x20mandatory','emit','faxAccounts','send','checkAfterSend','http','127.0.0.1','log','AMI\x20RPC\x20server\x20listening\x20on\x20127.0.0.1:%d!','lodash','util','validate','bluebird','../properties','listen','format','%s/%s','name','timers','timer','agents','updateStatusRealtime','QueuePause','isConnected','asterisk','ami\x20disconnected','join','keys','module','action','Reload','Action','then','message','catch','error','username','pick','Command','content','voiceQueues'];(function(_0xef8146,_0x459c34){var _0x5a6cb0=function(_0x2f84ec){while(--_0x2f84ec){_0xef8146['push'](_0xef8146['shift']());}};_0x5a6cb0(++_0x459c34);}(_0x3024,0x64));var _0x4302=function(_0x29b882,_0x2f2699){_0x29b882=_0x29b882-0x0;var _0x201d23=_0x3024[_0x29b882];return _0x201d23;};'use strict';var _=require(_0x4302('0x0'));var util=require(_0x4302('0x1'));var jayson=require('jayson/promise');var schema=require(_0x4302('0x2'));var BPromise=require(_0x4302('0x3'));var moment=require('moment');var config=require('../../../config/environment');var properties=require(_0x4302('0x4'));var ami=require('../ami');exports[_0x4302('0x5')]=function(_0x1d9b55,_0x574548,_0x13d051){return new BPromise(function(_0x5f20,_0x4c3983){var _0xced9fc={'QueuePause':function(_0x2aecd7){return new Promise(function(_0x3c007b,_0x285613){var _0x22cb00=util[_0x4302('0x6')](_0x4302('0x7'),'SIP',_0x2aecd7[_0x4302('0x8')]);if(_0x1d9b55[_0x4302('0x9')]&&_0x1d9b55[_0x4302('0x9')][_0x22cb00]&&_0x1d9b55['timers'][_0x22cb00][_0x4302('0xa')]){_0x1d9b55[_0x4302('0x9')][_0x22cb00]['updateAcw']();}if(_0x1d9b55[_0x4302('0xb')][_0x22cb00]){_0x1d9b55[_0x4302('0xb')][_0x22cb00][_0x4302('0xc')]({'statePause':_0x2aecd7['pause']?!![]:![]});}_0x3c007b({'code':0xc8,'message':_0x4302('0xd')});});},'Reload':function(_0x177706){var _0x567c6e=this;return new Promise(function(_0x1f67ba,_0x41b495){if(ami[_0x4302('0xe')]()==![]){return _0x41b495(_0x567c6e['error'](0x1f4,[config[_0x4302('0xf')]['ip'],config[_0x4302('0xf')]['username'],_0x4302('0x10')][_0x4302('0x11')]('\x20')));}_0x177706=_['pick'](_0x177706,_[_0x4302('0x12')](properties[_0x4302('0x13')]));_0x177706[_0x4302('0x14')]=_0x4302('0x15');return ami[_0x4302('0x16')](_0x177706)[_0x4302('0x17')](function(_0x3ff185){_0x1f67ba({'code':0xc8,'message':_0x3ff185[_0x4302('0x18')]});})[_0x4302('0x19')](function(_0x41de23){_0x41b495(_0x567c6e[_0x4302('0x1a')](0x1f5,_0x41de23[_0x4302('0x18')]));});});},'Command':function(_0x44a594){var _0xa736ce=this;return new Promise(function(_0x4c24fc,_0x161780){if(ami['isConnected']()==![]){return _0x161780(_0xa736ce[_0x4302('0x1a')](0x1f4,[config['asterisk']['ip'],config['asterisk'][_0x4302('0x1b')],_0x4302('0x10')][_0x4302('0x11')]('\x20')));}_0x44a594=_[_0x4302('0x1c')](_0x44a594,'command');_0x44a594['action']=_0x4302('0x1d');return ami[_0x4302('0x16')](_0x44a594)[_0x4302('0x17')](function(_0x4b259d){_0x4c24fc({'code':0xc8,'message':_0x4b259d[_0x4302('0x1e')]});})[_0x4302('0x19')](function(_0x72ed32){_0x161780(_0xa736ce[_0x4302('0x1a')](0x1f5,_0x72ed32['message']));});});},'VoiceQueues':function(_0x4b330f){return new Promise(function(_0x481a9d,_0x5a2952){var _0x1021b1=[];for(var _0x3ffa91 in _0x1d9b55['voiceQueues']){if(_0x1d9b55[_0x4302('0x1f')][_0x4302('0x20')](_0x3ffa91)){var _0x20fe19=_0x1d9b55['voiceQueues'][_0x3ffa91];var _0x17a8b7={'id':_0x20fe19['id'],'name':_0x20fe19['name'],'strategy':_0x20fe19['strategy'],'answered':_0x20fe19['answered'],'available':_0x20fe19[_0x4302('0x21')],'loggedIn':_0x20fe19['loggedIn'],'pTalking':_0x20fe19[_0x4302('0x22')],'sumBillable':_0x20fe19[_0x4302('0x23')],'sumDuration':_0x20fe19['sumDuration'],'sumHoldTime':_0x20fe19[_0x4302('0x24')]||0x0,'talking':_0x20fe19['talking'],'total':_0x20fe19[_0x4302('0x25')],'type':_0x20fe19[_0x4302('0x26')],'unmanaged':_0x20fe19[_0x4302('0x27')],'abandoned':_0x20fe19[_0x4302('0x28')],'waiting':_0x20fe19[_0x4302('0x29')],'loggedInDb':_0x20fe19[_0x4302('0x2a')]};if(_0x20fe19[_0x4302('0x26')]===_0x4302('0x2b')){_0x17a8b7[_0x4302('0x2c')]=_0x20fe19['dialActive'];_0x17a8b7[_0x4302('0x2d')]=_0x20fe19[_0x4302('0x2d')];_0x17a8b7[_0x4302('0x2e')]=_0x20fe19[_0x4302('0x2e')];_0x17a8b7['dialOriginateCallerIdNumber']=_0x20fe19[_0x4302('0x2f')];_0x17a8b7[_0x4302('0x30')]=_0x20fe19[_0x4302('0x30')];_0x17a8b7[_0x4302('0x31')]=_0x20fe19[_0x4302('0x31')];_0x17a8b7['temp']=_0x20fe19[_0x4302('0x32')];_0x17a8b7[_0x4302('0x33')]=_0x20fe19[_0x4302('0x33')];_0x17a8b7[_0x4302('0x34')]=_0x20fe19[_0x4302('0x34')];_0x17a8b7[_0x4302('0x35')]=_0x20fe19[_0x4302('0x35')];_0x17a8b7[_0x4302('0x36')]=_0x20fe19[_0x4302('0x36')];_0x17a8b7['outboundCongestionCallsDay']=_0x20fe19[_0x4302('0x37')];_0x17a8b7['outboundDropCallsDayACS']=_0x20fe19[_0x4302('0x38')];_0x17a8b7['outboundDropCallsDayCallersExit']=_0x20fe19['outboundDropCallsDayCallersExit'];_0x17a8b7[_0x4302('0x39')]=_0x20fe19[_0x4302('0x39')];_0x17a8b7[_0x4302('0x3a')]=_0x20fe19['outboundNoAnswerCallsDay'];_0x17a8b7[_0x4302('0x3b')]=_0x20fe19[_0x4302('0x3b')];_0x17a8b7[_0x4302('0x3c')]=_0x20fe19[_0x4302('0x3c')];_0x17a8b7['outboundReCallsDay']=_0x20fe19[_0x4302('0x3d')];_0x17a8b7['outboundRejectCallsDay']=_0x20fe19[_0x4302('0x3e')];_0x17a8b7[_0x4302('0x3f')]=_0x20fe19[_0x4302('0x3f')];_0x17a8b7[_0x4302('0x40')]=_0x20fe19[_0x4302('0x40')];_0x17a8b7['predictiveIntervalAvgHoldtime']=_0x20fe19[_0x4302('0x41')];_0x17a8b7['predictiveIntervalAvgTalktime']=_0x20fe19['predictiveIntervalAvgTalktime'];_0x17a8b7['predictiveIntervalDroppedCallsCallersExit']=_0x20fe19[_0x4302('0x42')];_0x17a8b7[_0x4302('0x43')]=_0x20fe19[_0x4302('0x43')];_0x17a8b7[_0x4302('0x44')]=_0x20fe19[_0x4302('0x44')];_0x17a8b7[_0x4302('0x45')]=_0x20fe19[_0x4302('0x45')];_0x17a8b7[_0x4302('0x46')]=_0x20fe19[_0x4302('0x46')];_0x17a8b7[_0x4302('0x47')]=_0x20fe19['predictiveIntervalMultiplicativeFactor'];_0x17a8b7['predictiveIntervalPauses']=_0x20fe19[_0x4302('0x48')];_0x17a8b7[_0x4302('0x49')]=_0x20fe19[_0x4302('0x49')];_0x17a8b7[_0x4302('0x4a')]=_0x20fe19['predictiveIntervalTotalCalls'];_0x17a8b7['message']=_0x20fe19[_0x4302('0x18')];_0x17a8b7[_0x4302('0x4b')]=_0x20fe19[_0x4302('0x4b')];_0x17a8b7[_0x4302('0x4c')]=_0x20fe19[_0x4302('0x4c')];_0x17a8b7[_0x4302('0x4d')]=_0x20fe19['erlangCallToSecond'];_0x17a8b7[_0x4302('0x4e')]=_0x20fe19['erlangAbandonmentRate'];_0x17a8b7[_0x4302('0x4f')]=_0x20fe19[_0x4302('0x4f')];_0x17a8b7[_0x4302('0x50')]=_0x20fe19[_0x4302('0x50')];_0x17a8b7['startProgressive']=_0x20fe19[_0x4302('0x51')];}if(_0x20fe19[_0x4302('0x52')]){_0x17a8b7[_0x4302('0x52')]={'id':_0x20fe19[_0x4302('0x52')]['id'],'name':_0x20fe19[_0x4302('0x52')]['name'],'active':_0x20fe19[_0x4302('0x52')][_0x4302('0x53')],'callerid':_0x20fe19['Trunk']['callerid']};}if(_0x20fe19[_0x4302('0x54')]){_0x17a8b7[_0x4302('0x54')]={'id':_0x20fe19['Interval']['id'],'name':_0x20fe19[_0x4302('0x54')][_0x4302('0x8')]};}_0x1021b1[_0x4302('0x55')](_0x17a8b7);}}_0x481a9d({'count':_0x1021b1[_0x4302('0x56')],'rows':_0x1021b1});});},'UpdateVoiceQueue':function(_0x25d875){return new Promise(function(_0x329869,_0x187ec3){var _0x24ce01=_[_0x4302('0x57')](_0x1d9b55[_0x4302('0x1f')],{'id':parseInt(_0x25d875['id'])});var _0x519865=_[_0x4302('0x58')](_0x25d875,['id']);if(_0x24ce01){for(var _0x4ce759 in _0x519865){if(typeof _0x519865[_0x4ce759]!==_0x4302('0x59')&&typeof _0x24ce01[_0x4ce759]!=='undefined'){_0x24ce01[_0x4ce759]=_0x519865[_0x4ce759];}}_0x329869(_0x24ce01);}else{_0x187ec3();}});},'VoiceChannels':function(_0x4678c1){return new Promise(function(_0x4ba5e,_0x577d17){var _0x34bc72=_['values'](_0x1d9b55[_0x4302('0x5a')]);_0x4ba5e({'count':_0x34bc72['length'],'rows':_0x34bc72});});},'VoiceChannelMixMonitor':function(_0x3ba272){var _0x34f7ab=this;return new Promise(function(_0x3b8bf8,_0xb05578){if(ami[_0x4302('0xe')]()==![]){return _0xb05578(_0x34f7ab[_0x4302('0x1a')](0x1f4,[config['asterisk']['ip'],config[_0x4302('0xf')][_0x4302('0x1b')],_0x4302('0x10')][_0x4302('0x11')]('\x20')));}var _0x4e6792=schema(properties[_0x4302('0x5b')])[_0x4302('0x2')](_0x3ba272);if(_0x4e6792[_0x4302('0x56')]>0x0){return _0xb05578(_0x34f7ab[_0x4302('0x1a')](0x1f4,_[_0x4302('0x5c')](_0x4e6792,_0x4302('0x18'))[_0x4302('0x11')](',\x20')));}var _0x44515a=_[_0x4302('0x57')](_0x1d9b55[_0x4302('0x5a')],{'uniqueid':_0x3ba272[_0x4302('0x5d')]});if(_0x44515a&&_0x44515a[_0x4302('0x5e')]){var _0x2e9b3e=util[_0x4302('0x6')]('%s.%s',_0x3ba272[_0x4302('0x5f')]||_0x3ba272['uniqueid'],_0x3ba272[_0x4302('0x6')]||_0x4302('0x60'));return ami['Action']({'action':'MixMonitor','channel':_0x44515a[_0x4302('0x5e')],'file':_0x2e9b3e,'options':_0x4302('0x61')})[_0x4302('0x17')](function(_0x5a2291){var _0x51cf46=_['find'](_0x44515a[_0x4302('0x62')],{'filename':'/var/spool/asterisk/monitor/'+_0x2e9b3e[_0x4302('0x63')]()});if(_[_0x4302('0x64')](_0x51cf46)){_0x44515a['monitors'][_0x4302('0x55')]({'filename':'/var/spool/asterisk/monitor/'+_0x2e9b3e[_0x4302('0x63')](),'createdAt':moment()['format'](_0x4302('0x65')),'mixmonitorid':_0x5a2291['mixmonitorid'],'status':_0x4302('0x66')});}else{_0x51cf46[_0x4302('0x67')]=_0x5a2291['mixmonitorid'];_0x51cf46[_0x4302('0x68')]=_0x4302('0x66');}_0x3b8bf8({'code':0xc8,'message':[_0x3ba272[_0x4302('0x5d')],'MixMonitor\x20Success',_0x5a2291[_0x4302('0x67')]][_0x4302('0x11')]('\x20'),'mixmonitorid':_0x5a2291['mixmonitorid']});})[_0x4302('0x19')](function(_0x3568aa){_0xb05578(_0x34f7ab[_0x4302('0x1a')](0x1f5,[_0x3ba272[_0x4302('0x5d')],_0x3568aa[_0x4302('0x18')][_0x4302('0x63')]()][_0x4302('0x11')]('\x20')));});}else{return _0xb05578(_0x34f7ab[_0x4302('0x1a')](0x1f5,'Channel\x20doesn\x27t\x20exist'));}});},'VoiceChannelStopMixMonitor':function(_0x50c87b){var _0x3f605b=this;return new Promise(function(_0xf27f6,_0x4a1b55){if(ami[_0x4302('0xe')]()==![]){return _0x4a1b55(_0x3f605b[_0x4302('0x1a')](0x1f4,[config[_0x4302('0xf')]['ip'],config[_0x4302('0xf')][_0x4302('0x1b')],'ami\x20disconnected'][_0x4302('0x11')]('\x20')));}var _0x13b333=schema(properties[_0x4302('0x5b')])[_0x4302('0x2')](_0x50c87b);if(_0x13b333[_0x4302('0x56')]>0x0){return _0x4a1b55(_0x3f605b[_0x4302('0x1a')](0x1f4,_[_0x4302('0x5c')](_0x13b333,_0x4302('0x18'))['join'](',\x20')));}var _0x1720f2=_['find'](_0x1d9b55[_0x4302('0x5a')],{'uniqueid':_0x50c87b['uniqueid']});if(_0x1720f2){return BPromise[_0x4302('0x69')]()[_0x4302('0x17')](function(){if(_0x1720f2[_0x4302('0x5e')]){return ami[_0x4302('0x16')]({'action':_0x4302('0x6a'),'channel':_0x1720f2[_0x4302('0x5e')],'mixmonitorid':_0x50c87b[_0x4302('0x67')]})[_0x4302('0x19')](function(_0x339ea3){});}})['then'](function(){if(_0x1720f2[_0x4302('0x6b')]){return ami['Action']({'action':_0x4302('0x6a'),'channel':_0x1720f2[_0x4302('0x6b')],'mixmonitorid':_0x50c87b[_0x4302('0x67')]})[_0x4302('0x19')](function(_0x5c713e){});}})[_0x4302('0x17')](function(_0x1fe403){var _0x431de6=_[_0x4302('0x57')](_0x1720f2[_0x4302('0x62')],{'mixmonitorid':_0x50c87b[_0x4302('0x67')]});if(_0x431de6){_0x431de6['status']=_0x4302('0x6c');}})[_0x4302('0x17')](function(){var _0x2c10ac=util[_0x4302('0x6')](_0x4302('0x6d'),_0x50c87b[_0x4302('0x5f')]||_0x50c87b[_0x4302('0x5d')],_0x50c87b[_0x4302('0x6')]||_0x4302('0x60'));var _0xd54642=_[_0x4302('0x57')](_0x1720f2[_0x4302('0x62')],{'filename':'/var/spool/asterisk/monitor/'+_0x2c10ac['toLowerCase']()});if(_0xd54642){_0xd54642[_0x4302('0x68')]=_0x4302('0x6c');}})[_0x4302('0x17')](function(){_0xf27f6({'code':0xc8,'message':[_0x50c87b[_0x4302('0x5d')],'StopMixMonitor\x20Success'][_0x4302('0x11')]('\x20')});})['catch'](function(_0x5e5dd5){_0x4a1b55(_0x3f605b[_0x4302('0x1a')](0x1f5,[_0x50c87b[_0x4302('0x5d')],_0x5e5dd5[_0x4302('0x18')]['toLowerCase']()][_0x4302('0x11')]('\x20')));});}else{return _0x4a1b55(_0x3f605b[_0x4302('0x1a')](0x1f5,_0x4302('0x6e')));}});},'VoiceQueuesChannels':function(_0x54bc4f){return new Promise(function(_0x5e3f77,_0x57812c){var _0x323708=_['values'](_0x1d9b55['queueChannels']);_0x5e3f77({'count':_0x323708[_0x4302('0x56')],'rows':_0x323708});});},'VoiceQueuesChannel':function(_0x56bb08){var _0x490f66=this;return new Promise(function(_0x1b94cf,_0x64a9fb){var _0x48dc7a=schema(properties[_0x4302('0x6f')])[_0x4302('0x2')](_0x56bb08);if(_0x48dc7a[_0x4302('0x56')]>0x0){return _0x64a9fb(_0x490f66[_0x4302('0x1a')](0x1f4,_[_0x4302('0x5c')](_0x48dc7a,_0x4302('0x18'))['join'](',\x20')));}var _0x3baeec=_[_0x4302('0x57')](_0x1d9b55['queueChannels'],{'uniqueid':_0x56bb08[_0x4302('0x5d')]});if(_0x3baeec){_0x1b94cf(_0x3baeec);}else{return _0x64a9fb(_0x490f66[_0x4302('0x1a')](0x1f5,_0x4302('0x6e')));}});},'VoiceQueuesChannelHangup':function(_0x5098c5){var _0x3b2cae=this;return new Promise(function(_0x53dfd4,_0x2b429a){if(ami[_0x4302('0xe')]()==![]){return _0x2b429a(_0x3b2cae[_0x4302('0x1a')](0x1f4,[config[_0x4302('0xf')]['ip'],config['asterisk'][_0x4302('0x1b')],_0x4302('0x10')][_0x4302('0x11')]('\x20')));}var _0x588491=schema(properties[_0x4302('0x70')])[_0x4302('0x2')](_0x5098c5);if(_0x588491[_0x4302('0x56')]>0x0){return _0x2b429a(_0x3b2cae[_0x4302('0x1a')](0x1f4,_[_0x4302('0x5c')](_0x588491,'message')[_0x4302('0x11')](',\x20')));}var _0x3424b4=_['find'](_0x1d9b55[_0x4302('0x71')],{'uniqueid':_0x5098c5[_0x4302('0x5d')]});if(_0x3424b4&&_0x3424b4[_0x4302('0x5e')]){return ami[_0x4302('0x16')]({'action':_0x4302('0x72'),'channel':_0x3424b4[_0x4302('0x5e')]})[_0x4302('0x17')](function(_0x26d992){_0x53dfd4({'code':0xc8,'message':[_0x5098c5[_0x4302('0x5d')],_0x26d992[_0x4302('0x18')][_0x4302('0x63')]()][_0x4302('0x11')]('\x20')});})['catch'](function(_0x4eeebe){_0x2b429a(_0x3b2cae[_0x4302('0x1a')](0x1f5,[_0x5098c5[_0x4302('0x5d')],_0x4eeebe[_0x4302('0x18')]['toLowerCase']()][_0x4302('0x11')]('\x20')));});}else{return _0x2b429a(_0x3b2cae[_0x4302('0x1a')](0x1f5,_0x4302('0x6e')));}});},'VoiceQueuesChannelRedirect':function(_0x621ab8){var _0xfc594a=this;return new Promise(function(_0x5d4da3,_0x169b89){if(ami['isConnected']()==![]){return _0x169b89(_0xfc594a[_0x4302('0x1a')](0x1f4,[config[_0x4302('0xf')]['ip'],config['asterisk'][_0x4302('0x1b')],_0x4302('0x10')][_0x4302('0x11')]('\x20')));}var _0x2e94b0=schema(properties[_0x4302('0x73')])[_0x4302('0x2')](_0x621ab8);if(_0x2e94b0[_0x4302('0x56')]>0x0){return _0x169b89(_0xfc594a['error'](0x1f4,_[_0x4302('0x5c')](_0x2e94b0,_0x4302('0x18'))[_0x4302('0x11')](',\x20')));}var _0x3c94b5=_['find'](_0x1d9b55[_0x4302('0x71')],{'uniqueid':_0x621ab8[_0x4302('0x5d')]});if(_0x3c94b5&&_0x3c94b5['channel']){return ami[_0x4302('0x16')]({'action':'Redirect','channel':_0x3c94b5[_0x4302('0x5e')],'exten':_0x621ab8['exten'],'context':_0x621ab8['context']||_0x3c94b5[_0x4302('0x74')],'priority':0x1})[_0x4302('0x17')](function(_0x491cec){_0x5d4da3({'code':0xc8,'message':[_0x621ab8[_0x4302('0x5d')],_0x491cec[_0x4302('0x18')][_0x4302('0x63')]()]['join']('\x20')});})[_0x4302('0x19')](function(_0x298a6d){_0x169b89(_0xfc594a[_0x4302('0x1a')](0x1f5,[_0x621ab8[_0x4302('0x5d')],_0x298a6d['message'][_0x4302('0x63')]()][_0x4302('0x11')]('\x20')));});}else{return _0x169b89(_0xfc594a[_0x4302('0x1a')](0x1f5,_0x4302('0x6e')));}});},'Agents':function(_0x24974b){return new Promise(function(_0x25ce62,_0x5afbcc){var _0x22ec92=_['values'](_0x1d9b55[_0x4302('0xb')]);_0x25ce62({'count':_0x22ec92[_0x4302('0x56')],'rows':_0x22ec92});});},'Telephones':function(_0xc761a1){return new Promise(function(_0x326eec,_0x5d948d){var _0x9d8734=_[_0x4302('0x75')](_0x1d9b55[_0x4302('0x76')]);_0x326eec({'count':_0x9d8734[_0x4302('0x56')],'rows':_0x9d8734});});},'Trunks':function(_0x48927a){return new Promise(function(_0x25f546,_0x23d256){var _0x156a4a=_[_0x4302('0x75')](_0x1d9b55['trunks']);_0x25f546({'count':_0x156a4a[_0x4302('0x56')],'rows':_0x156a4a});});},'OutboundChannels':function(_0x370451){return new Promise(function(_0x4893e2,_0x53ae1a){var _0x266632=_['values'](_0x1d9b55[_0x4302('0x77')]);_0x4893e2({'count':_0x266632[_0x4302('0x56')],'rows':_0x266632});});},'Outbound':function(_0x2813c8){return new Promise(function(_0x46c98,_0x1d391a){_0x46c98(_0x1d9b55[_0x4302('0x2b')]);});},'Campaigns':function(_0x303a2a){return new Promise(function(_0x20baec,_0x2588a){var _0x2e7caf=_[_0x4302('0x75')](_0x1d9b55[_0x4302('0x78')]);_0x20baec({'count':_0x2e7caf[_0x4302('0x56')],'rows':_0x2e7caf});});},'VoiceQueuesPreview':function(_0x45c160){var _0x546c34=this;return new Promise(function(_0x374a7a,_0x172a20){_0x574548[_0x4302('0x79')](_0x45c160['id'])[_0x4302('0x17')](function(_0x5f59d0){_0x374a7a({'code':0xc8,'message':_0x5f59d0['message']});})[_0x4302('0x19')](function(_0x2b7713){_0x172a20(_0x546c34[_0x4302('0x1a')](0x1f4,_0x2b7713['message']));});});},'EventManager':function(_0x5a24c8){var _0x1161d1=this;return new Promise(function(_0x26590e,_0x2e579f){if(!_0x5a24c8[_0x4302('0x7a')]){return _0x2e579f(_0x1161d1[_0x4302('0x1a')](0x1f4,_0x4302('0x7b')));}ami[_0x4302('0x7c')]('custom:'+_0x5a24c8[_0x4302('0x7a')],_0x5a24c8[_0x4302('0x18')]);_0x26590e({'code':0xc8,'message':_0x5a24c8});});},'FaxAccounts':function(_0x163f60){return new Promise(function(_0x80443f,_0x495c26){var _0x2e0938=_[_0x4302('0x75')](_0x1d9b55[_0x4302('0x7d')]);_0x80443f({'count':_0x2e0938[_0x4302('0x56')],'rows':_0x2e0938});});},'SendFax':function(_0x26cfe3){var _0x5cc19c=this;return new Promise(function(_0x192af8,_0x80eb62){_0x13d051[_0x4302('0x7e')](_0x26cfe3)[_0x4302('0x17')](function(_0x398e48){_0x192af8({'code':0xc8,'message':_0x398e48[_0x4302('0x18')]});})['catch'](function(_0x156a58){_0x80eb62(_0x5cc19c[_0x4302('0x1a')](0x1f4,_0x156a58[_0x4302('0x18')]));});});},'CheckAfterSend':function(_0x20bd35){var _0x36b385=this;return new Promise(function(_0x378901,_0x1fe69a){_0x13d051[_0x4302('0x7f')](_0x20bd35)[_0x4302('0x17')](function(_0x431341){_0x378901({'code':0xc8,'message':_0x431341['message']});})['catch'](function(_0x2d9bc4){_0x1fe69a(_0x36b385[_0x4302('0x1a')](0x1f4,_0x2d9bc4[_0x4302('0x18')]));});});}};var _0xebc470=jayson['server'](_0xced9fc)[_0x4302('0x80')]();_0xebc470['on']('error',function(_0x232b2){return _0x4c3983(_0x232b2);});_0xebc470[_0x4302('0x5')](0x232a,_0x4302('0x81'),function(){console[_0x4302('0x82')](_0x4302('0x83'),0x232a);return _0x5f20('RPC\x20listening\x20on\x20port:'+0x232a);});});};
\ No newline at end of file
+var _0xce68=['error','asterisk','username','ami\x20disconnected','join','pick','keys','module','action','Reload','Action','catch','isConnected','command','Command','voiceQueues','hasOwnProperty','strategy','answered','available','loggedIn','pTalking','sumHoldTime','talking','total','unmanaged','abandoned','waiting','loggedInDb','outbound','dialActive','dialMethod','dialOriginateCallerIdName','dialOriginateCallerIdNumber','dialOriginateTimeout','dialPrefix','temp','outboundAnswerAgiCallsDay','outboundAnswerCallsDay','outboundBlacklistCallsDay','outboundBusyCallsDay','outboundCongestionCallsDay','outboundDropCallsDayACS','outboundDropCallsDayCallersExit','outboundNoAnswerCallsDay','outboundOriginateFailureCallsDay','outboundReCallsDay','outboundRejectCallsDay','outboundUnknownCallsDay','predictiveIntervalAnsweredCalls','predictiveIntervalAvgHoldtime','predictiveIntervalAvgTalktime','predictiveIntervalDroppedCallsCallersExit','predictiveIntervalDroppedCallsTimeout','predictiveIntervalErlangCalls','predictiveIntervalErlangCallsDroppedCalls','predictiveIntervalHitRate','predictiveIntervalMultiplicativeFactor','predictiveIntervalPauses','predictiveIntervalAvailable','predictiveIntervalTotalCalls','message','originated','erlangCalls','erlangCallToSecond','erlangAbandonmentRate','erlangBusyFactor','startPredictive','startProgressive','Trunk','active','callerid','Interval','push','find','omit','undefined','values','length','voicechannel','uniqueid','channel','filename','format','MixMonitor','ai(mixmonitorid)','then','monitors','/var/spool/asterisk/monitor/','isNil','toLowerCase','YYYY-MM-DD\x20HH:mm:ss','mixmonitorid','rec','Channel\x20doesn\x27t\x20exist','channels','resolve','StopMixMonitor','destinationchannel','stop','%s.%s','queueChannels','voicequeuechannel','map','voicequeuechannelhangup','Hangup','voicequeuechannelredirect','Redirect','exten','context','telephones','outboundChannels','campaigns','run','event','Event\x20name\x20mandatory','emit','custom:','checkAfterSend','server','http','127.0.0.1','log','AMI\x20RPC\x20server\x20listening\x20on\x20127.0.0.1:%d!','RPC\x20listening\x20on\x20port:','lodash','jayson/promise','validate','bluebird','moment','../../../config/environment','../ami','listen','%s/%s','SIP','name','timers','timer','updateAcw','agents','updateStatusRealtime','pause','QueuePause'];(function(_0xaa1b3e,_0x47d976){var _0x454d7d=function(_0x575b32){while(--_0x575b32){_0xaa1b3e['push'](_0xaa1b3e['shift']());}};_0x454d7d(++_0x47d976);}(_0xce68,0x10c));var _0x8ce6=function(_0x333779,_0x32d631){_0x333779=_0x333779-0x0;var _0x2b43ef=_0xce68[_0x333779];return _0x2b43ef;};'use strict';var _=require(_0x8ce6('0x0'));var util=require('util');var jayson=require(_0x8ce6('0x1'));var schema=require(_0x8ce6('0x2'));var BPromise=require(_0x8ce6('0x3'));var moment=require(_0x8ce6('0x4'));var config=require(_0x8ce6('0x5'));var properties=require('../properties');var ami=require(_0x8ce6('0x6'));exports[_0x8ce6('0x7')]=function(_0x39301d,_0x5cd417,_0x116e0a){return new BPromise(function(_0x10b3ca,_0x4fed90){var _0x4e5471={'QueuePause':function(_0x34b134){return new Promise(function(_0x357fbb,_0x17811e){var _0x258d09=util['format'](_0x8ce6('0x8'),_0x8ce6('0x9'),_0x34b134[_0x8ce6('0xa')]);if(_0x39301d[_0x8ce6('0xb')]&&_0x39301d[_0x8ce6('0xb')][_0x258d09]&&_0x39301d[_0x8ce6('0xb')][_0x258d09][_0x8ce6('0xc')]){_0x39301d[_0x8ce6('0xb')][_0x258d09][_0x8ce6('0xd')]();}if(_0x39301d[_0x8ce6('0xe')][_0x258d09]){_0x39301d[_0x8ce6('0xe')][_0x258d09][_0x8ce6('0xf')]({'statePause':_0x34b134[_0x8ce6('0x10')]?!![]:![]});}_0x357fbb({'code':0xc8,'message':_0x8ce6('0x11')});});},'Reload':function(_0x1e8b85){var _0x3db848=this;return new Promise(function(_0x38252e,_0x1d7aaf){if(ami['isConnected']()==![]){return _0x1d7aaf(_0x3db848[_0x8ce6('0x12')](0x1f4,[config['asterisk']['ip'],config[_0x8ce6('0x13')][_0x8ce6('0x14')],_0x8ce6('0x15')][_0x8ce6('0x16')]('\x20')));}_0x1e8b85=_[_0x8ce6('0x17')](_0x1e8b85,_[_0x8ce6('0x18')](properties[_0x8ce6('0x19')]));_0x1e8b85[_0x8ce6('0x1a')]=_0x8ce6('0x1b');return ami[_0x8ce6('0x1c')](_0x1e8b85)['then'](function(_0x4474d0){_0x38252e({'code':0xc8,'message':_0x4474d0['message']});})[_0x8ce6('0x1d')](function(_0x175a74){_0x1d7aaf(_0x3db848[_0x8ce6('0x12')](0x1f5,_0x175a74['message']));});});},'Command':function(_0x4ffe5e){var _0x30e233=this;return new Promise(function(_0x2bf89c,_0x4eb0df){if(ami[_0x8ce6('0x1e')]()==![]){return _0x4eb0df(_0x30e233[_0x8ce6('0x12')](0x1f4,[config[_0x8ce6('0x13')]['ip'],config[_0x8ce6('0x13')][_0x8ce6('0x14')],_0x8ce6('0x15')][_0x8ce6('0x16')]('\x20')));}_0x4ffe5e=_[_0x8ce6('0x17')](_0x4ffe5e,_0x8ce6('0x1f'));_0x4ffe5e[_0x8ce6('0x1a')]=_0x8ce6('0x20');return ami[_0x8ce6('0x1c')](_0x4ffe5e)['then'](function(_0x462c8b){_0x2bf89c({'code':0xc8,'message':_0x462c8b['content']});})[_0x8ce6('0x1d')](function(_0x28c639){_0x4eb0df(_0x30e233[_0x8ce6('0x12')](0x1f5,_0x28c639['message']));});});},'VoiceQueues':function(_0x4862b0){return new Promise(function(_0x5d72b0,_0x5c2b61){var _0x3a8325=[];for(var _0x1e95cb in _0x39301d[_0x8ce6('0x21')]){if(_0x39301d[_0x8ce6('0x21')][_0x8ce6('0x22')](_0x1e95cb)){var _0xadc624=_0x39301d['voiceQueues'][_0x1e95cb];var _0x5656ab={'id':_0xadc624['id'],'name':_0xadc624[_0x8ce6('0xa')],'strategy':_0xadc624[_0x8ce6('0x23')],'answered':_0xadc624[_0x8ce6('0x24')],'available':_0xadc624[_0x8ce6('0x25')],'loggedIn':_0xadc624[_0x8ce6('0x26')],'pTalking':_0xadc624[_0x8ce6('0x27')],'sumBillable':_0xadc624['sumBillable'],'sumDuration':_0xadc624['sumDuration'],'sumHoldTime':_0xadc624[_0x8ce6('0x28')]||0x0,'talking':_0xadc624[_0x8ce6('0x29')],'total':_0xadc624[_0x8ce6('0x2a')],'type':_0xadc624['type'],'unmanaged':_0xadc624[_0x8ce6('0x2b')],'abandoned':_0xadc624[_0x8ce6('0x2c')],'waiting':_0xadc624[_0x8ce6('0x2d')],'loggedInDb':_0xadc624[_0x8ce6('0x2e')]};if(_0xadc624['type']===_0x8ce6('0x2f')){_0x5656ab[_0x8ce6('0x30')]=_0xadc624['dialActive'];_0x5656ab['dialMethod']=_0xadc624[_0x8ce6('0x31')];_0x5656ab[_0x8ce6('0x32')]=_0xadc624[_0x8ce6('0x32')];_0x5656ab[_0x8ce6('0x33')]=_0xadc624[_0x8ce6('0x33')];_0x5656ab[_0x8ce6('0x34')]=_0xadc624[_0x8ce6('0x34')];_0x5656ab[_0x8ce6('0x35')]=_0xadc624[_0x8ce6('0x35')];_0x5656ab[_0x8ce6('0x36')]=_0xadc624[_0x8ce6('0x36')];_0x5656ab[_0x8ce6('0x37')]=_0xadc624[_0x8ce6('0x37')];_0x5656ab[_0x8ce6('0x38')]=_0xadc624[_0x8ce6('0x38')];_0x5656ab[_0x8ce6('0x39')]=_0xadc624[_0x8ce6('0x39')];_0x5656ab[_0x8ce6('0x3a')]=_0xadc624[_0x8ce6('0x3a')];_0x5656ab['outboundCongestionCallsDay']=_0xadc624[_0x8ce6('0x3b')];_0x5656ab[_0x8ce6('0x3c')]=_0xadc624[_0x8ce6('0x3c')];_0x5656ab[_0x8ce6('0x3d')]=_0xadc624[_0x8ce6('0x3d')];_0x5656ab['outboundDropCallsDayTimeout']=_0xadc624['outboundDropCallsDayTimeout'];_0x5656ab[_0x8ce6('0x3e')]=_0xadc624[_0x8ce6('0x3e')];_0x5656ab['outboundNoSuchCallsDay']=_0xadc624['outboundNoSuchCallsDay'];_0x5656ab[_0x8ce6('0x3f')]=_0xadc624[_0x8ce6('0x3f')];_0x5656ab[_0x8ce6('0x40')]=_0xadc624[_0x8ce6('0x40')];_0x5656ab[_0x8ce6('0x41')]=_0xadc624[_0x8ce6('0x41')];_0x5656ab['outboundUnknownCallsDay']=_0xadc624[_0x8ce6('0x42')];_0x5656ab['predictiveIntervalAnsweredCalls']=_0xadc624[_0x8ce6('0x43')];_0x5656ab['predictiveIntervalAvgHoldtime']=_0xadc624[_0x8ce6('0x44')];_0x5656ab[_0x8ce6('0x45')]=_0xadc624[_0x8ce6('0x45')];_0x5656ab[_0x8ce6('0x46')]=_0xadc624['predictiveIntervalDroppedCallsCallersExit'];_0x5656ab[_0x8ce6('0x47')]=_0xadc624['predictiveIntervalDroppedCallsTimeout'];_0x5656ab[_0x8ce6('0x48')]=_0xadc624['predictiveIntervalErlangCalls'];_0x5656ab[_0x8ce6('0x49')]=_0xadc624[_0x8ce6('0x49')];_0x5656ab[_0x8ce6('0x4a')]=_0xadc624['predictiveIntervalHitRate'];_0x5656ab[_0x8ce6('0x4b')]=_0xadc624[_0x8ce6('0x4b')];_0x5656ab[_0x8ce6('0x4c')]=_0xadc624[_0x8ce6('0x4c')];_0x5656ab[_0x8ce6('0x4d')]=_0xadc624[_0x8ce6('0x4d')];_0x5656ab['predictiveIntervalTotalCalls']=_0xadc624[_0x8ce6('0x4e')];_0x5656ab[_0x8ce6('0x4f')]=_0xadc624[_0x8ce6('0x4f')];_0x5656ab['originated']=_0xadc624[_0x8ce6('0x50')];_0x5656ab[_0x8ce6('0x51')]=_0xadc624[_0x8ce6('0x51')];_0x5656ab[_0x8ce6('0x52')]=_0xadc624[_0x8ce6('0x52')];_0x5656ab[_0x8ce6('0x53')]=_0xadc624[_0x8ce6('0x53')];_0x5656ab[_0x8ce6('0x54')]=_0xadc624[_0x8ce6('0x54')];_0x5656ab[_0x8ce6('0x55')]=_0xadc624[_0x8ce6('0x55')];_0x5656ab[_0x8ce6('0x56')]=_0xadc624[_0x8ce6('0x56')];}if(_0xadc624[_0x8ce6('0x57')]){_0x5656ab[_0x8ce6('0x57')]={'id':_0xadc624['Trunk']['id'],'name':_0xadc624[_0x8ce6('0x57')][_0x8ce6('0xa')],'active':_0xadc624[_0x8ce6('0x57')][_0x8ce6('0x58')],'callerid':_0xadc624[_0x8ce6('0x57')][_0x8ce6('0x59')]};}if(_0xadc624[_0x8ce6('0x5a')]){_0x5656ab[_0x8ce6('0x5a')]={'id':_0xadc624[_0x8ce6('0x5a')]['id'],'name':_0xadc624[_0x8ce6('0x5a')][_0x8ce6('0xa')]};}_0x3a8325[_0x8ce6('0x5b')](_0x5656ab);}}_0x5d72b0({'count':_0x3a8325['length'],'rows':_0x3a8325});});},'UpdateVoiceQueue':function(_0x1d18a6){return new Promise(function(_0x29b020,_0x16ba59){var _0x28d685=_[_0x8ce6('0x5c')](_0x39301d[_0x8ce6('0x21')],{'id':parseInt(_0x1d18a6['id'])});var _0x58d54f=_[_0x8ce6('0x5d')](_0x1d18a6,['id']);if(_0x28d685){for(var _0x3137bb in _0x58d54f){if(typeof _0x58d54f[_0x3137bb]!==_0x8ce6('0x5e')&&typeof _0x28d685[_0x3137bb]!==_0x8ce6('0x5e')){_0x28d685[_0x3137bb]=_0x58d54f[_0x3137bb];}}_0x29b020(_0x28d685);}else{_0x16ba59();}});},'VoiceChannels':function(_0x563641){return new Promise(function(_0x212d18,_0x527133){var _0x106c9a=_[_0x8ce6('0x5f')](_0x39301d['channels']);_0x212d18({'count':_0x106c9a[_0x8ce6('0x60')],'rows':_0x106c9a});});},'VoiceChannelMixMonitor':function(_0x102fae){var _0x3c70a9=this;return new Promise(function(_0x154d01,_0xe74d6a){if(ami['isConnected']()==![]){return _0xe74d6a(_0x3c70a9[_0x8ce6('0x12')](0x1f4,[config[_0x8ce6('0x13')]['ip'],config['asterisk'][_0x8ce6('0x14')],'ami\x20disconnected']['join']('\x20')));}var _0x5b3551=schema(properties[_0x8ce6('0x61')])[_0x8ce6('0x2')](_0x102fae);if(_0x5b3551['length']>0x0){return _0xe74d6a(_0x3c70a9['error'](0x1f4,_['map'](_0x5b3551,_0x8ce6('0x4f'))[_0x8ce6('0x16')](',\x20')));}var _0xf81694=_[_0x8ce6('0x5c')](_0x39301d['channels'],{'uniqueid':_0x102fae[_0x8ce6('0x62')]});if(_0xf81694&&_0xf81694[_0x8ce6('0x63')]){var _0x25e894=util['format']('%s.%s',_0x102fae[_0x8ce6('0x64')]||_0x102fae[_0x8ce6('0x62')],_0x102fae[_0x8ce6('0x65')]||'wav');return ami[_0x8ce6('0x1c')]({'action':_0x8ce6('0x66'),'channel':_0xf81694[_0x8ce6('0x63')],'file':_0x25e894,'options':_0x8ce6('0x67')})[_0x8ce6('0x68')](function(_0x4e5ed7){var _0x3dc9e4=_[_0x8ce6('0x5c')](_0xf81694[_0x8ce6('0x69')],{'filename':_0x8ce6('0x6a')+_0x25e894['toLowerCase']()});if(_[_0x8ce6('0x6b')](_0x3dc9e4)){_0xf81694[_0x8ce6('0x69')][_0x8ce6('0x5b')]({'filename':_0x8ce6('0x6a')+_0x25e894[_0x8ce6('0x6c')](),'createdAt':moment()[_0x8ce6('0x65')](_0x8ce6('0x6d')),'mixmonitorid':_0x4e5ed7[_0x8ce6('0x6e')],'status':_0x8ce6('0x6f')});}else{_0x3dc9e4[_0x8ce6('0x6e')]=_0x4e5ed7['mixmonitorid'];_0x3dc9e4['status']=_0x8ce6('0x6f');}_0x154d01({'code':0xc8,'message':[_0x102fae[_0x8ce6('0x62')],'MixMonitor\x20Success',_0x4e5ed7[_0x8ce6('0x6e')]]['join']('\x20'),'mixmonitorid':_0x4e5ed7[_0x8ce6('0x6e')]});})[_0x8ce6('0x1d')](function(_0x1ef538){_0xe74d6a(_0x3c70a9['error'](0x1f5,[_0x102fae[_0x8ce6('0x62')],_0x1ef538[_0x8ce6('0x4f')][_0x8ce6('0x6c')]()][_0x8ce6('0x16')]('\x20')));});}else{return _0xe74d6a(_0x3c70a9[_0x8ce6('0x12')](0x1f5,_0x8ce6('0x70')));}});},'VoiceChannelStopMixMonitor':function(_0x1e5383){var _0xaa5624=this;return new Promise(function(_0x2f78f7,_0x3a86d0){if(ami['isConnected']()==![]){return _0x3a86d0(_0xaa5624[_0x8ce6('0x12')](0x1f4,[config[_0x8ce6('0x13')]['ip'],config[_0x8ce6('0x13')]['username'],_0x8ce6('0x15')][_0x8ce6('0x16')]('\x20')));}var _0x2a26c0=schema(properties[_0x8ce6('0x61')])[_0x8ce6('0x2')](_0x1e5383);if(_0x2a26c0['length']>0x0){return _0x3a86d0(_0xaa5624['error'](0x1f4,_['map'](_0x2a26c0,'message')[_0x8ce6('0x16')](',\x20')));}var _0x5e45d6=_[_0x8ce6('0x5c')](_0x39301d[_0x8ce6('0x71')],{'uniqueid':_0x1e5383[_0x8ce6('0x62')]});if(_0x5e45d6){return BPromise[_0x8ce6('0x72')]()['then'](function(){if(_0x5e45d6[_0x8ce6('0x63')]){return ami[_0x8ce6('0x1c')]({'action':_0x8ce6('0x73'),'channel':_0x5e45d6[_0x8ce6('0x63')],'mixmonitorid':_0x1e5383[_0x8ce6('0x6e')]})['catch'](function(_0x218fee){});}})['then'](function(){if(_0x5e45d6[_0x8ce6('0x74')]){return ami['Action']({'action':'StopMixMonitor','channel':_0x5e45d6[_0x8ce6('0x74')],'mixmonitorid':_0x1e5383['mixmonitorid']})[_0x8ce6('0x1d')](function(_0x4485be){});}})[_0x8ce6('0x68')](function(_0x370a8c){var _0x6a8ee9=_['find'](_0x5e45d6[_0x8ce6('0x69')],{'mixmonitorid':_0x1e5383[_0x8ce6('0x6e')]});if(_0x6a8ee9){_0x6a8ee9['status']=_0x8ce6('0x75');}})[_0x8ce6('0x68')](function(){var _0x3eb715=util['format'](_0x8ce6('0x76'),_0x1e5383[_0x8ce6('0x64')]||_0x1e5383[_0x8ce6('0x62')],_0x1e5383[_0x8ce6('0x65')]||'wav');var _0x1db316=_['find'](_0x5e45d6[_0x8ce6('0x69')],{'filename':_0x8ce6('0x6a')+_0x3eb715[_0x8ce6('0x6c')]()});if(_0x1db316){_0x1db316['status']=_0x8ce6('0x75');}})[_0x8ce6('0x68')](function(){_0x2f78f7({'code':0xc8,'message':[_0x1e5383[_0x8ce6('0x62')],'StopMixMonitor\x20Success'][_0x8ce6('0x16')]('\x20')});})[_0x8ce6('0x1d')](function(_0x21d38a){_0x3a86d0(_0xaa5624[_0x8ce6('0x12')](0x1f5,[_0x1e5383[_0x8ce6('0x62')],_0x21d38a[_0x8ce6('0x4f')][_0x8ce6('0x6c')]()][_0x8ce6('0x16')]('\x20')));});}else{return _0x3a86d0(_0xaa5624[_0x8ce6('0x12')](0x1f5,_0x8ce6('0x70')));}});},'VoiceQueuesChannels':function(_0x216dc3){return new Promise(function(_0x7314e5,_0xdb5554){var _0x55d7cd=_['values'](_0x39301d[_0x8ce6('0x77')]);_0x7314e5({'count':_0x55d7cd['length'],'rows':_0x55d7cd});});},'VoiceQueuesChannel':function(_0x46de33){var _0x1b2dbb=this;return new Promise(function(_0x393177,_0x239d38){var _0x3b4e8b=schema(properties[_0x8ce6('0x78')])[_0x8ce6('0x2')](_0x46de33);if(_0x3b4e8b['length']>0x0){return _0x239d38(_0x1b2dbb[_0x8ce6('0x12')](0x1f4,_[_0x8ce6('0x79')](_0x3b4e8b,_0x8ce6('0x4f'))[_0x8ce6('0x16')](',\x20')));}var _0x3eda12=_['find'](_0x39301d[_0x8ce6('0x77')],{'uniqueid':_0x46de33[_0x8ce6('0x62')]});if(_0x3eda12){_0x393177(_0x3eda12);}else{return _0x239d38(_0x1b2dbb[_0x8ce6('0x12')](0x1f5,_0x8ce6('0x70')));}});},'VoiceQueuesChannelHangup':function(_0x11241e){var _0xb2b3c2=this;return new Promise(function(_0x39f31d,_0x47d17f){if(ami[_0x8ce6('0x1e')]()==![]){return _0x47d17f(_0xb2b3c2['error'](0x1f4,[config['asterisk']['ip'],config[_0x8ce6('0x13')][_0x8ce6('0x14')],_0x8ce6('0x15')]['join']('\x20')));}var _0x319588=schema(properties[_0x8ce6('0x7a')])[_0x8ce6('0x2')](_0x11241e);if(_0x319588[_0x8ce6('0x60')]>0x0){return _0x47d17f(_0xb2b3c2[_0x8ce6('0x12')](0x1f4,_['map'](_0x319588,_0x8ce6('0x4f'))[_0x8ce6('0x16')](',\x20')));}var _0x31de73=_['find'](_0x39301d[_0x8ce6('0x77')],{'uniqueid':_0x11241e['uniqueid']});if(_0x31de73&&_0x31de73['channel']){return ami[_0x8ce6('0x1c')]({'action':_0x8ce6('0x7b'),'channel':_0x31de73[_0x8ce6('0x63')]})['then'](function(_0xebe36d){_0x39f31d({'code':0xc8,'message':[_0x11241e[_0x8ce6('0x62')],_0xebe36d[_0x8ce6('0x4f')][_0x8ce6('0x6c')]()][_0x8ce6('0x16')]('\x20')});})['catch'](function(_0x39b33d){_0x47d17f(_0xb2b3c2[_0x8ce6('0x12')](0x1f5,[_0x11241e[_0x8ce6('0x62')],_0x39b33d[_0x8ce6('0x4f')][_0x8ce6('0x6c')]()][_0x8ce6('0x16')]('\x20')));});}else{return _0x47d17f(_0xb2b3c2[_0x8ce6('0x12')](0x1f5,'Channel\x20doesn\x27t\x20exist'));}});},'VoiceQueuesChannelRedirect':function(_0x267e30){var _0x20f27=this;return new Promise(function(_0x5382b6,_0x178bb1){if(ami[_0x8ce6('0x1e')]()==![]){return _0x178bb1(_0x20f27[_0x8ce6('0x12')](0x1f4,[config['asterisk']['ip'],config['asterisk'][_0x8ce6('0x14')],_0x8ce6('0x15')][_0x8ce6('0x16')]('\x20')));}var _0x22bfd3=schema(properties[_0x8ce6('0x7c')])[_0x8ce6('0x2')](_0x267e30);if(_0x22bfd3[_0x8ce6('0x60')]>0x0){return _0x178bb1(_0x20f27[_0x8ce6('0x12')](0x1f4,_['map'](_0x22bfd3,_0x8ce6('0x4f'))[_0x8ce6('0x16')](',\x20')));}var _0xfc059b=_[_0x8ce6('0x5c')](_0x39301d[_0x8ce6('0x77')],{'uniqueid':_0x267e30[_0x8ce6('0x62')]});if(_0xfc059b&&_0xfc059b[_0x8ce6('0x63')]){return ami[_0x8ce6('0x1c')]({'action':_0x8ce6('0x7d'),'channel':_0xfc059b[_0x8ce6('0x63')],'exten':_0x267e30[_0x8ce6('0x7e')],'context':_0x267e30[_0x8ce6('0x7f')]||_0xfc059b[_0x8ce6('0x7f')],'priority':0x1})[_0x8ce6('0x68')](function(_0x458f09){_0x5382b6({'code':0xc8,'message':[_0x267e30[_0x8ce6('0x62')],_0x458f09[_0x8ce6('0x4f')][_0x8ce6('0x6c')]()][_0x8ce6('0x16')]('\x20')});})[_0x8ce6('0x1d')](function(_0x1d3843){_0x178bb1(_0x20f27[_0x8ce6('0x12')](0x1f5,[_0x267e30[_0x8ce6('0x62')],_0x1d3843[_0x8ce6('0x4f')]['toLowerCase']()]['join']('\x20')));});}else{return _0x178bb1(_0x20f27[_0x8ce6('0x12')](0x1f5,_0x8ce6('0x70')));}});},'Agents':function(_0xc07c3){return new Promise(function(_0x2429f2,_0x4bf699){var _0x13e61a=_[_0x8ce6('0x5f')](_0x39301d[_0x8ce6('0xe')]);_0x2429f2({'count':_0x13e61a[_0x8ce6('0x60')],'rows':_0x13e61a});});},'Telephones':function(_0x23fc30){return new Promise(function(_0x26a28e,_0x1213aa){var _0x1bdc7f=_['values'](_0x39301d[_0x8ce6('0x80')]);_0x26a28e({'count':_0x1bdc7f[_0x8ce6('0x60')],'rows':_0x1bdc7f});});},'Trunks':function(_0x156390){return new Promise(function(_0x6d3475,_0x36339c){var _0x15c5e1=_[_0x8ce6('0x5f')](_0x39301d['trunks']);_0x6d3475({'count':_0x15c5e1[_0x8ce6('0x60')],'rows':_0x15c5e1});});},'OutboundChannels':function(_0x5e31b4){return new Promise(function(_0xc25857,_0x19d8a8){var _0x1587c7=_[_0x8ce6('0x5f')](_0x39301d[_0x8ce6('0x81')]);_0xc25857({'count':_0x1587c7[_0x8ce6('0x60')],'rows':_0x1587c7});});},'Outbound':function(_0x3616bc){return new Promise(function(_0x444d6b,_0x31bfc4){_0x444d6b(_0x39301d[_0x8ce6('0x2f')]);});},'Campaigns':function(_0x285c3d){return new Promise(function(_0x2172af,_0x12a792){var _0x212a7a=_[_0x8ce6('0x5f')](_0x39301d[_0x8ce6('0x82')]);_0x2172af({'count':_0x212a7a['length'],'rows':_0x212a7a});});},'VoiceQueuesPreview':function(_0x3454b9){var _0x2a6fb=this;return new Promise(function(_0x598830,_0x211cfc){_0x5cd417[_0x8ce6('0x83')](_0x3454b9['id'])[_0x8ce6('0x68')](function(_0x59b718){_0x598830({'code':0xc8,'message':_0x59b718[_0x8ce6('0x4f')]});})['catch'](function(_0x54d62c){_0x211cfc(_0x2a6fb['error'](0x1f4,_0x54d62c[_0x8ce6('0x4f')]));});});},'EventManager':function(_0x4c5a19){var _0x2eb897=this;return new Promise(function(_0x3c6352,_0x425649){if(!_0x4c5a19[_0x8ce6('0x84')]){return _0x425649(_0x2eb897['error'](0x1f4,_0x8ce6('0x85')));}ami[_0x8ce6('0x86')](_0x8ce6('0x87')+_0x4c5a19['event'],_0x4c5a19[_0x8ce6('0x4f')]);_0x3c6352({'code':0xc8,'message':_0x4c5a19});});},'FaxAccounts':function(_0x470dd9){return new Promise(function(_0x2817bd,_0x3e4f27){var _0x5b20db=_[_0x8ce6('0x5f')](_0x39301d['faxAccounts']);_0x2817bd({'count':_0x5b20db[_0x8ce6('0x60')],'rows':_0x5b20db});});},'SendFax':function(_0x59a21d){var _0xda8278=this;return new Promise(function(_0x50cf5b,_0x46b34a){_0x116e0a['send'](_0x59a21d)[_0x8ce6('0x68')](function(_0x27ba25){_0x50cf5b({'code':0xc8,'message':_0x27ba25[_0x8ce6('0x4f')]});})[_0x8ce6('0x1d')](function(_0x529af4){_0x46b34a(_0xda8278['error'](0x1f4,_0x529af4['message']));});});},'CheckAfterSend':function(_0x29927a){var _0x3dec6a=this;return new Promise(function(_0x41bb74,_0x26530e){_0x116e0a[_0x8ce6('0x88')](_0x29927a)[_0x8ce6('0x68')](function(_0x52ba74){_0x41bb74({'code':0xc8,'message':_0x52ba74[_0x8ce6('0x4f')]});})[_0x8ce6('0x1d')](function(_0xe3d0c3){_0x26530e(_0x3dec6a[_0x8ce6('0x12')](0x1f4,_0xe3d0c3[_0x8ce6('0x4f')]));});});}};var _0x2e4ae1=jayson[_0x8ce6('0x89')](_0x4e5471)[_0x8ce6('0x8a')]();_0x2e4ae1['on'](_0x8ce6('0x12'),function(_0x286648){return _0x4fed90(_0x286648);});_0x2e4ae1['listen'](0x232a,_0x8ce6('0x8b'),function(){console[_0x8ce6('0x8c')](_0x8ce6('0x8d'),0x232a);return _0x10b3ca(_0x8ce6('0x8e')+0x232a);});});};
\ No newline at end of file
index 908ee7b..b0651f6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xfcd3=['[CM][%s][%s]\x20Autocreate\x20disabled','isNil','name','format','action','bluebird','ioredis','util','../../../../config/logger','../../rpc/cmContact','redis','defaults','localhost','socket.io-emitter','[CM][%s][%s]','stringify','exec','data1','data2','xmd-contactid','ListId','data3','split','phone','$or','routeId','destcalleridnum','calleridnum','firstName','lastName','fax','createdAt','scheduledAt','updatedAt','union','then','isEmpty','length','info','[CM][%s][%s]\x20Contact\x20found:%s','uniqueid','map','join','[CM][%s][%s]\x20Contact\x20not\x20found','data4','calleridname','<unknown>','Unknown','destcalleridname','resolve','push','[CM][%s][%s]\x20Contact\x20created:%s'];(function(_0x1fca53,_0x1ba26f){var _0x3d7f4d=function(_0x1b8eea){while(--_0x1b8eea){_0x1fca53['push'](_0x1fca53['shift']());}};_0x3d7f4d(++_0x1ba26f);}(_0xfcd3,0x13d));var _0x3fcd=function(_0x13187a,_0x2fcec4){_0x13187a=_0x13187a-0x0;var _0x65b85f=_0xfcd3[_0x13187a];return _0x65b85f;};'use strict';var _=require('lodash');var BPromise=require(_0x3fcd('0x0'));var Redis=require(_0x3fcd('0x1'));var util=require(_0x3fcd('0x2'));var config=require('../../../../config/environment');var logger=require(_0x3fcd('0x3'))('trigger');var cmContactRpc=require(_0x3fcd('0x4'));config[_0x3fcd('0x5')]=_[_0x3fcd('0x6')](config[_0x3fcd('0x5')],{'host':_0x3fcd('0x7'),'port':0x18eb});var io=require(_0x3fcd('0x8'))(new Redis(config['redis']));function emit(_0x1bc226,_0x11163a,_0x49224d,_0x3b4d90,_0x38a896){logger['info'](_0x3fcd('0x9'),_0x1bc226,_0x11163a['id'],_0x49224d,_0x3b4d90,JSON[_0x3fcd('0xa')](_0x38a896));io['to'](_0x49224d)['emit'](_0x3b4d90,_0x38a896);}exports[_0x3fcd('0xb')]=function(_0x28c89a,_0x35e651,_0x3ec1b2,_0x307f16){var _0x38b50a,_0x44edc6;var _0x63b2d4={};var _0xcc82d=Number(_0x3ec1b2[_0x3fcd('0xc')]);var _0x5546bd=_0x3ec1b2[_0x3fcd('0xd')]?Boolean(Number(_0x3ec1b2[_0x3fcd('0xd')])):![];var _0x370f4e;if(_0x307f16['xmd-contactid']){_0x63b2d4['id']=_0x307f16[_0x3fcd('0xe')];}if(!_0x63b2d4['id']){_0x63b2d4[_0x3fcd('0xf')]=_0xcc82d;_0x370f4e=_0x3ec1b2[_0x3fcd('0x10')]&&_0x3ec1b2[_0x3fcd('0x10')]!=='0'?_0x3ec1b2[_0x3fcd('0x10')][_0x3fcd('0x11')](','):[_0x3fcd('0x12')];_0x63b2d4[_0x3fcd('0x13')]=_['map'](_0x370f4e,function(_0x34d0d5){var _0x18b92a={};_0x18b92a[_0x34d0d5]=_0x307f16[_0x3fcd('0x14')]?_0x307f16[_0x3fcd('0x15')]:_0x307f16[_0x3fcd('0x16')];return _0x18b92a;});}var _0x4260a0=['id',_0x3fcd('0x17'),_0x3fcd('0x18'),_0x3fcd('0x12'),'mobile',_0x3fcd('0x19'),_0x3fcd('0xf'),_0x3fcd('0x1a'),_0x3fcd('0x1b'),_0x3fcd('0x1c')];var _0xb0dd56=_[_0x3fcd('0x1d')](_0x4260a0,_0x370f4e);BPromise['resolve']()['then'](cmContactRpc['getContacts']({'attributes':_0xb0dd56,'where':_0x63b2d4}))[_0x3fcd('0x1e')](function(_0x436caf){_0x44edc6=_0x436caf;if(!_[_0x3fcd('0x1f')](_0x44edc6)){if(_0x44edc6[_0x3fcd('0x20')]===0x1){_0x38b50a=_0x44edc6[0x0];logger[_0x3fcd('0x21')](_0x3fcd('0x22'),_0x307f16[_0x3fcd('0x23')],_0x35e651['id'],_0x38b50a['id']);}else{logger[_0x3fcd('0x21')]('[CM][%s][%s]\x20Multiple\x20contacts\x20found:[%s]',_0x307f16[_0x3fcd('0x23')],_0x35e651['id'],_[_0x3fcd('0x24')](_0x44edc6,'id')[_0x3fcd('0x25')](','));}return;}else{logger[_0x3fcd('0x21')](_0x3fcd('0x26'),_0x307f16[_0x3fcd('0x23')],_0x35e651['id']);var _0x5688b6={'ListId':_0xcc82d};var _0xecad85=_0x3ec1b2[_0x3fcd('0x27')]&&_0x3ec1b2[_0x3fcd('0x27')]!=='0'?_0x3ec1b2[_0x3fcd('0x27')]:'phone';if(_0x5546bd){logger[_0x3fcd('0x21')]('[CM][%s][%s]\x20Autocreate\x20enabled',_0x307f16[_0x3fcd('0x23')],_0x35e651['id']);_0x5688b6[_0xecad85]=_['isNil'](_0x307f16[_0x3fcd('0x14')])?_0x307f16[_0x3fcd('0x16')]:_0x307f16[_0x3fcd('0x15')];if(_['isNil'](_0x307f16[_0x3fcd('0x14')])){_0x5688b6[_0x3fcd('0x17')]=_0x307f16[_0x3fcd('0x28')]&&_0x307f16['calleridname']!==_0x3fcd('0x29')?_0x307f16[_0x3fcd('0x28')]:_0x3fcd('0x2a');}else{_0x5688b6[_0x3fcd('0x17')]=_0x307f16[_0x3fcd('0x2b')]&&_0x307f16[_0x3fcd('0x2b')]!=='<unknown>'?_0x307f16[_0x3fcd('0x2b')]:_0x3fcd('0x2a');}return BPromise[_0x3fcd('0x2c')]()[_0x3fcd('0x1e')](cmContactRpc['createContact'](_0x5688b6))[_0x3fcd('0x1e')](function(_0x238159){_0x38b50a=_0x238159;_0x44edc6[_0x3fcd('0x2d')](_0x238159);if(_0x38b50a){logger[_0x3fcd('0x21')](_0x3fcd('0x2e'),_0x307f16[_0x3fcd('0x23')],_0x35e651['id'],_0x38b50a['id']);}return;});}else{logger['info'](_0x3fcd('0x2f'),_0x307f16['uniqueid'],_0x35e651['id']);_0x5688b6[_0xecad85]=_[_0x3fcd('0x30')](_0x307f16['routeId'])?_0x307f16['calleridnum']:_0x307f16[_0x3fcd('0x15')];if(_[_0x3fcd('0x30')](_0x307f16['routeId'])){_0x5688b6[_0x3fcd('0x17')]=_0x307f16[_0x3fcd('0x28')]&&_0x307f16['calleridname']!==_0x3fcd('0x29')?_0x307f16[_0x3fcd('0x28')]:_0x3fcd('0x2a');}else{_0x5688b6[_0x3fcd('0x17')]=_0x307f16[_0x3fcd('0x2b')]&&_0x307f16[_0x3fcd('0x2b')]!==_0x3fcd('0x29')?_0x307f16[_0x3fcd('0x2b')]:_0x3fcd('0x2a');}_0x38b50a=_0x5688b6;_0x44edc6[_0x3fcd('0x2d')](_0x5688b6);return;}}})['then'](function(){if(_0x28c89a){emit(_0x307f16[_0x3fcd('0x23')],_0x35e651,util['format']('user:%s',_0x28c89a[_0x3fcd('0x31')]),util[_0x3fcd('0x32')]('trigger:%s',_0x3ec1b2[_0x3fcd('0x33')]['toLowerCase']()),{'evt':_['merge'](_0x307f16,{'autoCreate':_0x5546bd}),'contact':_0x38b50a===undefined?{}:_0x38b50a,'contacts':_0x44edc6[_0x3fcd('0x20')]===0x0?undefined:_0x44edc6});}});};
\ No newline at end of file
+var _0x6086=['../../rpc/cmContact','redis','defaults','socket.io-emitter','info','[CM][%s][%s]','stringify','emit','exec','data1','data2','xmd-contactid','data3','split','phone','$or','map','routeId','destcalleridnum','calleridnum','mobile','ListId','createdAt','scheduledAt','updatedAt','union','resolve','then','isEmpty','length','uniqueid','join','data4','isNil','firstName','<unknown>','Unknown','destcalleridname','push','[CM][%s][%s]\x20Autocreate\x20disabled','calleridname','format','name','trigger:%s','action','toLowerCase','merge','lodash','../../../../config/environment','../../../../config/logger','trigger'];(function(_0x3050b5,_0x182c6a){var _0x37cceb=function(_0x49b797){while(--_0x49b797){_0x3050b5['push'](_0x3050b5['shift']());}};_0x37cceb(++_0x182c6a);}(_0x6086,0x95));var _0x6608=function(_0xa49986,_0x13e35d){_0xa49986=_0xa49986-0x0;var _0x4d56c2=_0x6086[_0xa49986];return _0x4d56c2;};'use strict';var _=require(_0x6608('0x0'));var BPromise=require('bluebird');var Redis=require('ioredis');var util=require('util');var config=require(_0x6608('0x1'));var logger=require(_0x6608('0x2'))(_0x6608('0x3'));var cmContactRpc=require(_0x6608('0x4'));config[_0x6608('0x5')]=_[_0x6608('0x6')](config[_0x6608('0x5')],{'host':'localhost','port':0x18eb});var io=require(_0x6608('0x7'))(new Redis(config['redis']));function emit(_0xa0d2d1,_0x555e49,_0x509689,_0x40e1e7,_0x4572dc){logger[_0x6608('0x8')](_0x6608('0x9'),_0xa0d2d1,_0x555e49['id'],_0x509689,_0x40e1e7,JSON[_0x6608('0xa')](_0x4572dc));io['to'](_0x509689)[_0x6608('0xb')](_0x40e1e7,_0x4572dc);}exports[_0x6608('0xc')]=function(_0x84f53f,_0x30af60,_0x54cedc,_0x3f549e){var _0x3abf1a,_0x3745db;var _0x5c1272={};var _0x36b3c7=Number(_0x54cedc[_0x6608('0xd')]);var _0x238dd9=_0x54cedc[_0x6608('0xe')]?Boolean(Number(_0x54cedc[_0x6608('0xe')])):![];var _0x20d1b9;if(_0x3f549e[_0x6608('0xf')]){_0x5c1272['id']=_0x3f549e['xmd-contactid'];}if(!_0x5c1272['id']){_0x5c1272['ListId']=_0x36b3c7;_0x20d1b9=_0x54cedc[_0x6608('0x10')]&&_0x54cedc[_0x6608('0x10')]!=='0'?_0x54cedc[_0x6608('0x10')][_0x6608('0x11')](','):[_0x6608('0x12')];_0x5c1272[_0x6608('0x13')]=_[_0x6608('0x14')](_0x20d1b9,function(_0x2dff4c){var _0x4adb29={};_0x4adb29[_0x2dff4c]=_0x3f549e[_0x6608('0x15')]?_0x3f549e[_0x6608('0x16')]:_0x3f549e[_0x6608('0x17')];return _0x4adb29;});}var _0x204779=['id','firstName','lastName',_0x6608('0x12'),_0x6608('0x18'),'fax',_0x6608('0x19'),_0x6608('0x1a'),_0x6608('0x1b'),_0x6608('0x1c')];var _0x1931dc=_[_0x6608('0x1d')](_0x204779,_0x20d1b9);BPromise[_0x6608('0x1e')]()[_0x6608('0x1f')](cmContactRpc['getContacts']({'attributes':_0x1931dc,'where':_0x5c1272}))[_0x6608('0x1f')](function(_0xac0eb9){_0x3745db=_0xac0eb9;if(!_[_0x6608('0x20')](_0x3745db)){if(_0x3745db[_0x6608('0x21')]===0x1){_0x3abf1a=_0x3745db[0x0];logger[_0x6608('0x8')]('[CM][%s][%s]\x20Contact\x20found:%s',_0x3f549e[_0x6608('0x22')],_0x30af60['id'],_0x3abf1a['id']);}else{logger[_0x6608('0x8')]('[CM][%s][%s]\x20Multiple\x20contacts\x20found:[%s]',_0x3f549e['uniqueid'],_0x30af60['id'],_[_0x6608('0x14')](_0x3745db,'id')[_0x6608('0x23')](','));}return;}else{logger[_0x6608('0x8')]('[CM][%s][%s]\x20Contact\x20not\x20found',_0x3f549e[_0x6608('0x22')],_0x30af60['id']);var _0x44c7a9={'ListId':_0x36b3c7};var _0x1974c8=_0x54cedc[_0x6608('0x24')]&&_0x54cedc[_0x6608('0x24')]!=='0'?_0x54cedc[_0x6608('0x24')]:'phone';if(_0x238dd9){logger[_0x6608('0x8')]('[CM][%s][%s]\x20Autocreate\x20enabled',_0x3f549e['uniqueid'],_0x30af60['id']);_0x44c7a9[_0x1974c8]=_['isNil'](_0x3f549e['routeId'])?_0x3f549e[_0x6608('0x17')]:_0x3f549e[_0x6608('0x16')];if(_[_0x6608('0x25')](_0x3f549e['routeId'])){_0x44c7a9[_0x6608('0x26')]=_0x3f549e['calleridname']&&_0x3f549e['calleridname']!==_0x6608('0x27')?_0x3f549e['calleridname']:_0x6608('0x28');}else{_0x44c7a9[_0x6608('0x26')]=_0x3f549e[_0x6608('0x29')]&&_0x3f549e[_0x6608('0x29')]!=='<unknown>'?_0x3f549e[_0x6608('0x29')]:_0x6608('0x28');}return BPromise[_0x6608('0x1e')]()[_0x6608('0x1f')](cmContactRpc['createContact'](_0x44c7a9))[_0x6608('0x1f')](function(_0x3ff07c){_0x3abf1a=_0x3ff07c;_0x3745db[_0x6608('0x2a')](_0x3ff07c);if(_0x3abf1a){logger['info']('[CM][%s][%s]\x20Contact\x20created:%s',_0x3f549e[_0x6608('0x22')],_0x30af60['id'],_0x3abf1a['id']);}return;});}else{logger[_0x6608('0x8')](_0x6608('0x2b'),_0x3f549e[_0x6608('0x22')],_0x30af60['id']);_0x44c7a9[_0x1974c8]=_['isNil'](_0x3f549e[_0x6608('0x15')])?_0x3f549e[_0x6608('0x17')]:_0x3f549e[_0x6608('0x16')];if(_['isNil'](_0x3f549e[_0x6608('0x15')])){_0x44c7a9[_0x6608('0x26')]=_0x3f549e['calleridname']&&_0x3f549e[_0x6608('0x2c')]!==_0x6608('0x27')?_0x3f549e[_0x6608('0x2c')]:_0x6608('0x28');}else{_0x44c7a9[_0x6608('0x26')]=_0x3f549e['destcalleridname']&&_0x3f549e[_0x6608('0x29')]!=='<unknown>'?_0x3f549e['destcalleridname']:_0x6608('0x28');}_0x3abf1a=_0x44c7a9;_0x3745db['push'](_0x44c7a9);return;}}})[_0x6608('0x1f')](function(){if(_0x84f53f){emit(_0x3f549e[_0x6608('0x22')],_0x30af60,util[_0x6608('0x2d')]('user:%s',_0x84f53f[_0x6608('0x2e')]),util[_0x6608('0x2d')](_0x6608('0x2f'),_0x54cedc[_0x6608('0x30')][_0x6608('0x31')]()),{'evt':_[_0x6608('0x32')](_0x3f549e,{'autoCreate':_0x238dd9}),'contact':_0x3abf1a===undefined?{}:_0x3abf1a,'contacts':_0x3745db['length']===0x0?undefined:_0x3745db});}});};
\ No newline at end of file
index d0e03f2..38485f2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc7c6=['deskAccounts','custom:agentcalled','syncCustomEvent','bind','custom:agentconnect','custom:agentringnoanswer','custom:agentcomplete','custom:agentnosuchnumber','custom:agentcongestion','custom:agentreject','custom:amd','custom:queuecallerabandon','custom:timeout','custom:dialbegin','syncAgentDial','custom:dialconnect','custom:dialend','custom:newinteraction','custom:closedinteraction','custom:incomingmessage','custom:outgoingmessage','custom:acceptmessage','custom:rejectmessage','prototype','info','stringify','emit','clone','motionChannel','voice','checkTriggers','interface','checkTrigger','merge','variables','Actions','action','toLowerCase','contactmanager','motionbar','browser','data1','popup','TemplateId','render','html','template\x20not\x20found','uri','buildUri','data2','data3','isNil','data4','location','windowWidth','data5','windowHeight','600','winApplication','winArguments','format','user:%s','trigger:%s:%s','jscripty','name','trigger:%s','exec','integration','queue','urlforward','script','parse','query','search','replace','AllConditions','length','some','checkConditions','channel','field','account','chat','ChatWebsiteId','operator','value','upperFirst','AccountId','interaction','message','event','agent','membername','lastevent','routeId','exports','util','lodash','mustache','ioredis','./urlforward','./cmContact','../../../config/environment','trigger','../ami','redis','defaults','localhost','socket.io-emitter','url','winapp','triggers','agents','voiceQueues','templates','voiceExtensions','zendeskAccounts','freshdeskAccounts','salesforceAccounts','sugarcrmAccounts','zohoAccounts','vtigerAccounts','servicenowAccounts','dynamics365Accounts','freshsalesAccounts','accounts'];(function(_0x2c5251,_0x11d641){var _0x38360c=function(_0x40d493){while(--_0x40d493){_0x2c5251['push'](_0x2c5251['shift']());}};_0x38360c(++_0x11d641);}(_0xc7c6,0x15c));var _0x6c7c=function(_0x6ba216,_0x31cdd1){_0x6ba216=_0x6ba216-0x0;var _0x333a11=_0xc7c6[_0x6ba216];return _0x333a11;};'use strict';var util=require(_0x6c7c('0x0'));var _=require(_0x6c7c('0x1'));var url=require('url');var Mustache=require(_0x6c7c('0x2'));var Redis=require(_0x6c7c('0x3'));var urlforward=require(_0x6c7c('0x4'));var integration=require('./integration');var cmContact=require(_0x6c7c('0x5'));var script=require('./script');var config=require(_0x6c7c('0x6'));var logger=require('../../../config/logger')(_0x6c7c('0x7'));var ami=require(_0x6c7c('0x8'));config[_0x6c7c('0x9')]=_[_0x6c7c('0xa')](config[_0x6c7c('0x9')],{'host':_0x6c7c('0xb'),'port':0x18eb});var io=require(_0x6c7c('0xc'))(new Redis(config[_0x6c7c('0x9')]));var operators={'equals':function(_0x45b950,_0x1bfc21){return _0x45b950==_0x1bfc21;},'not_equals':function(_0x4ae97e,_0x20b0fe){return _0x4ae97e!=_0x20b0fe;}};var barAndWebActions=['popup',_0x6c7c('0xd'),_0x6c7c('0xe')];function Trigger(_0x385ed6){this[_0x6c7c('0xf')]=_0x385ed6[_0x6c7c('0xf')];this[_0x6c7c('0x10')]=_0x385ed6['agents'];this[_0x6c7c('0x11')]=_0x385ed6[_0x6c7c('0x11')];this[_0x6c7c('0x12')]=_0x385ed6[_0x6c7c('0x12')];this[_0x6c7c('0x13')]=_0x385ed6[_0x6c7c('0x13')];this[_0x6c7c('0x14')]=_0x385ed6[_0x6c7c('0x14')];this[_0x6c7c('0x15')]=_0x385ed6[_0x6c7c('0x15')];this[_0x6c7c('0x16')]=_0x385ed6[_0x6c7c('0x16')];this[_0x6c7c('0x17')]=_0x385ed6[_0x6c7c('0x17')];this[_0x6c7c('0x18')]=_0x385ed6['zohoAccounts'];this['deskAccounts']=_0x385ed6['deskAccounts'];this[_0x6c7c('0x19')]=_0x385ed6[_0x6c7c('0x19')];this['servicenowAccounts']=_0x385ed6[_0x6c7c('0x1a')];this[_0x6c7c('0x1b')]=_0x385ed6['dynamics365Accounts'];this[_0x6c7c('0x1c')]=_0x385ed6['freshsalesAccounts'];this[_0x6c7c('0x1d')]={'zendesk':this[_0x6c7c('0x14')],'salesforce':this['salesforceAccounts'],'freshdesk':this['freshdeskAccounts'],'sugarcrm':this[_0x6c7c('0x17')],'zoho':this[_0x6c7c('0x18')],'desk':this[_0x6c7c('0x1e')],'vtiger':this['vtigerAccounts'],'dynamics365':this[_0x6c7c('0x1b')],'freshsales':this[_0x6c7c('0x1c')],'servicenow':this[_0x6c7c('0x1a')]};ami['on'](_0x6c7c('0x1f'),this[_0x6c7c('0x20')][_0x6c7c('0x21')](this));ami['on'](_0x6c7c('0x22'),this[_0x6c7c('0x20')][_0x6c7c('0x21')](this));ami['on'](_0x6c7c('0x23'),this[_0x6c7c('0x20')][_0x6c7c('0x21')](this));ami['on'](_0x6c7c('0x24'),this[_0x6c7c('0x20')]['bind'](this));ami['on'](_0x6c7c('0x25'),this['syncCustomEvent'][_0x6c7c('0x21')](this));ami['on']('custom:agentnoanswer',this['syncCustomEvent'][_0x6c7c('0x21')](this));ami['on']('custom:agentbusy',this[_0x6c7c('0x20')][_0x6c7c('0x21')](this));ami['on'](_0x6c7c('0x26'),this['syncCustomEvent'][_0x6c7c('0x21')](this));ami['on'](_0x6c7c('0x27'),this[_0x6c7c('0x20')][_0x6c7c('0x21')](this));ami['on'](_0x6c7c('0x28'),this[_0x6c7c('0x20')][_0x6c7c('0x21')](this));ami['on'](_0x6c7c('0x29'),this[_0x6c7c('0x20')][_0x6c7c('0x21')](this));ami['on'](_0x6c7c('0x2a'),this[_0x6c7c('0x20')][_0x6c7c('0x21')](this));ami['on'](_0x6c7c('0x2b'),this[_0x6c7c('0x2c')][_0x6c7c('0x21')](this));ami['on'](_0x6c7c('0x2d'),this[_0x6c7c('0x2c')]['bind'](this));ami['on'](_0x6c7c('0x2e'),this[_0x6c7c('0x2c')][_0x6c7c('0x21')](this));ami['on'](_0x6c7c('0x2f'),this[_0x6c7c('0x20')]['bind'](this));ami['on'](_0x6c7c('0x30'),this['syncCustomEvent']['bind'](this));ami['on'](_0x6c7c('0x31'),this['syncCustomEvent'][_0x6c7c('0x21')](this));ami['on'](_0x6c7c('0x32'),this['syncCustomEvent'][_0x6c7c('0x21')](this));ami['on'](_0x6c7c('0x33'),this[_0x6c7c('0x20')][_0x6c7c('0x21')](this));ami['on'](_0x6c7c('0x34'),this[_0x6c7c('0x20')][_0x6c7c('0x21')](this));}Trigger[_0x6c7c('0x35')]['emit']=function(_0x4986df,_0x3e9366,_0x15fc8e){logger[_0x6c7c('0x36')](_0x4986df,_0x3e9366,JSON[_0x6c7c('0x37')](_0x15fc8e));io['to'](_0x4986df)[_0x6c7c('0x38')](_0x3e9366,_0x15fc8e);};Trigger[_0x6c7c('0x35')][_0x6c7c('0x20')]=function(_0x22d468){var _0x10f28c=_[_0x6c7c('0x39')](_0x22d468);if(typeof _0x10f28c[_0x6c7c('0x3a')]==='undefined'){_0x10f28c[_0x6c7c('0x3a')]=_0x6c7c('0x3b');}this[_0x6c7c('0x3c')](_0x10f28c);};Trigger['prototype'][_0x6c7c('0x2c')]=function(_0x41d2c2){if(this[_0x6c7c('0x10')][_0x41d2c2[_0x6c7c('0x3d')]]){this[_0x6c7c('0x20')](_0x41d2c2);}};Trigger[_0x6c7c('0x35')][_0x6c7c('0x3c')]=function(_0x4e50ed){var _0x2d917d;for(var _0x5a0696 in this[_0x6c7c('0xf')]){if(this[_0x6c7c('0xf')]['hasOwnProperty'](_0x5a0696)){if(this[_0x6c7c('0xf')][_0x5a0696]['status']){_0x2d917d=this[_0x6c7c('0x3e')](this['triggers'][_0x5a0696],_0x4e50ed);if(_0x2d917d){_[_0x6c7c('0x3f')](_0x4e50ed,_0x4e50ed[_0x6c7c('0x40')]);for(var _0x13dff2=0x0,_0x35ad7c,_0x14cf08,_0x4a18ca;_0x13dff2<this['triggers'][_0x5a0696][_0x6c7c('0x41')]['length'];_0x13dff2+=0x1){_0x35ad7c=this[_0x6c7c('0xf')][_0x5a0696]['Actions'][_0x13dff2];if(this[_0x6c7c('0x10')][_0x4e50ed['interface']]){switch(_0x35ad7c[_0x6c7c('0x42')][_0x6c7c('0x43')]()){case _0x6c7c('0x44'):break;case _0x6c7c('0x45'):case _0x6c7c('0x46'):var _0x5ddf67={};switch(barAndWebActions[_0x35ad7c[_0x6c7c('0x47')]]){case _0x6c7c('0x48'):_0x5ddf67[_0x6c7c('0x49')]=_0x35ad7c['data2'];_0x5ddf67['html']=this[_0x6c7c('0x12')][_0x35ad7c['data2']]?Mustache[_0x6c7c('0x4a')](this[_0x6c7c('0x12')][_0x35ad7c['data2']][_0x6c7c('0x4b')],_0x4e50ed):_0x6c7c('0x4c');break;case _0x6c7c('0xd'):_0x5ddf67[_0x6c7c('0x4d')]=this[_0x6c7c('0x4e')](_0x35ad7c[_0x6c7c('0x4f')],_0x4e50ed,_['isNil'](_0x35ad7c[_0x6c7c('0x50')])?!![]:parseInt(_0x35ad7c['data3'],0xa));if(_[_0x6c7c('0x51')](_0x35ad7c[_0x6c7c('0x52')])){_0x5ddf67[_0x6c7c('0x53')]='0';}else{_0x5ddf67['uriLocation']=_0x35ad7c[_0x6c7c('0x52')];_0x5ddf67[_0x6c7c('0x54')]=_['isNil'](_0x35ad7c['data5'])?'800':_0x35ad7c[_0x6c7c('0x55')];_0x5ddf67[_0x6c7c('0x56')]=_[_0x6c7c('0x51')](_0x35ad7c['data6'])?_0x6c7c('0x57'):_0x35ad7c['data6'];}break;case'winapp':_0x5ddf67[_0x6c7c('0x58')]=_0x35ad7c[_0x6c7c('0x4f')]?Mustache[_0x6c7c('0x4a')](_0x35ad7c[_0x6c7c('0x4f')],_0x4e50ed):'';_0x5ddf67[_0x6c7c('0x59')]=_0x35ad7c[_0x6c7c('0x50')]?Mustache[_0x6c7c('0x4a')](_0x35ad7c[_0x6c7c('0x50')],_0x4e50ed):'';break;}this['emit'](util[_0x6c7c('0x5a')](_0x6c7c('0x5b'),this[_0x6c7c('0x10')][_0x4e50ed[_0x6c7c('0x3d')]]['name']),util[_0x6c7c('0x5a')](_0x6c7c('0x5c'),_0x35ad7c['action'][_0x6c7c('0x43')](),barAndWebActions[_0x35ad7c[_0x6c7c('0x47')]]),_[_0x6c7c('0x3f')](_0x5ddf67,_0x4e50ed));break;case _0x6c7c('0x5d'):this['emit'](util['format']('user:%s',this['agents'][_0x4e50ed[_0x6c7c('0x3d')]][_0x6c7c('0x5e')]),util['format'](_0x6c7c('0x5f'),_0x35ad7c[_0x6c7c('0x42')]['toLowerCase']()),_[_0x6c7c('0x3f')]({'ProjectId':parseInt(_0x35ad7c[_0x6c7c('0x47')],0xa)},_0x4e50ed));break;default:this[_0x6c7c('0x38')](util['format'](_0x6c7c('0x5b'),this[_0x6c7c('0x10')][_0x4e50ed[_0x6c7c('0x3d')]][_0x6c7c('0x5e')]),util['format'](_0x6c7c('0x5f'),_0x35ad7c['action'][_0x6c7c('0x43')]()),_[_0x6c7c('0x3f')]({},_0x35ad7c,_0x4e50ed));}}switch(_0x35ad7c[_0x6c7c('0x42')][_0x6c7c('0x43')]()){case _0x6c7c('0x44'):cmContact[_0x6c7c('0x60')](this[_0x6c7c('0x10')][_0x4e50ed[_0x6c7c('0x3d')]],this[_0x6c7c('0xf')][_0x5a0696],_0x35ad7c,_0x4e50ed);break;case _0x6c7c('0x61'):integration['exec'](_0x35ad7c,_0x4e50ed,this['accounts'],this[_0x6c7c('0x10')][_0x4e50ed[_0x6c7c('0x3d')]],this[_0x6c7c('0x11')][_0x4e50ed[_0x6c7c('0x62')]],this['voiceExtensions'][_0x4e50ed['routeId']]);break;case _0x6c7c('0x63'):urlforward[_0x6c7c('0x60')](_0x35ad7c,_0x4e50ed);break;case _0x6c7c('0x64'):script[_0x6c7c('0x60')](_0x35ad7c,_0x4e50ed);break;}}}}}}};Trigger[_0x6c7c('0x35')][_0x6c7c('0x4e')]=function(_0x49ff12,_0x5f1e14,_0x3f3379){var _0x259db9=url[_0x6c7c('0x65')](Mustache['render'](_0x49ff12,_0x5f1e14),!![]);if(_0x3f3379){_[_0x6c7c('0x3f')](_0x259db9[_0x6c7c('0x66')],_0x5f1e14);}delete _0x259db9[_0x6c7c('0x67')];var _0x9af6e=url[_0x6c7c('0x5a')](_0x259db9);_0x9af6e=_0x9af6e[_0x6c7c('0x68')](/\/\?/g,'?');return _0x9af6e;};Trigger[_0x6c7c('0x35')]['checkTrigger']=function(_0x55065e,_0x4b7c4a){var _0x291da9=!![];var _0x42e8a4=!![];var _0x4971d8=![];if(_0x55065e['channel']===_0x4b7c4a[_0x6c7c('0x3a')]){_0x4971d8=!![];}if(_0x55065e['AllConditions']['length']){_0x291da9=_['every'](_0x55065e[_0x6c7c('0x69')],this['checkConditions'](_0x4b7c4a,_0x55065e['channel']));}if(_0x55065e['AnyConditions'][_0x6c7c('0x6a')]){_0x42e8a4=_[_0x6c7c('0x6b')](_0x55065e['AnyConditions'],this[_0x6c7c('0x6c')](_0x4b7c4a,_0x55065e[_0x6c7c('0x6d')]));}return _0x4971d8&&_0x291da9&&_0x42e8a4;};Trigger[_0x6c7c('0x35')]['checkConditions']=function(_0x1d14af,_0x535bad){return function(_0x4c7e9e){switch(_0x4c7e9e[_0x6c7c('0x6e')]){case _0x6c7c('0x6f'):if(_0x1d14af['channel']===_0x535bad){if(_0x535bad===_0x6c7c('0x70')){return _0x1d14af[_0x6c7c('0x71')]?operators[_0x4c7e9e[_0x6c7c('0x72')]](Number(_0x4c7e9e[_0x6c7c('0x73')]),_0x1d14af[_0x6c7c('0x71')]):![];}else{return _0x1d14af[_[_0x6c7c('0x74')](_0x535bad)+_0x6c7c('0x75')]?operators[_0x4c7e9e[_0x6c7c('0x72')]](Number(_0x4c7e9e[_0x6c7c('0x73')]),_0x1d14af[_['upperFirst'](_0x535bad)+_0x6c7c('0x75')]):![];}}break;case _0x6c7c('0x76'):case _0x6c7c('0x77'):if(_0x1d14af['channel']===_0x535bad){return _0x1d14af['event']?operators[_0x4c7e9e['operator']](_0x4c7e9e[_0x6c7c('0x73')],_0x1d14af[_0x6c7c('0x78')]):![];}break;case _0x6c7c('0x62'):return _0x1d14af['queue']?operators[_0x4c7e9e[_0x6c7c('0x72')]](_0x4c7e9e[_0x6c7c('0x73')],_0x1d14af[_0x6c7c('0x62')]):![];case _0x6c7c('0x79'):return _0x1d14af[_0x6c7c('0x7a')]?operators[_0x4c7e9e[_0x6c7c('0x72')]](_0x4c7e9e[_0x6c7c('0x73')],_0x1d14af[_0x6c7c('0x7a')]):![];case _0x6c7c('0x7b'):return _0x1d14af[_0x6c7c('0x7b')]?operators[_0x4c7e9e[_0x6c7c('0x72')]](_0x4c7e9e[_0x6c7c('0x73')],_0x1d14af['lastevent']):![];case _0x6c7c('0x7c'):return _0x1d14af[_0x6c7c('0x7c')]?operators[_0x4c7e9e[_0x6c7c('0x72')]](_0x4c7e9e[_0x6c7c('0x73')],_0x1d14af[_0x6c7c('0x7c')]):![];}return![];};};module[_0x6c7c('0x7d')]=Trigger;
\ No newline at end of file
+var _0xa30e=['templates','voiceExtensions','zendeskAccounts','freshdeskAccounts','salesforceAccounts','sugarcrmAccounts','zohoAccounts','deskAccounts','vtigerAccounts','servicenowAccounts','dynamics365Accounts','freshsalesAccounts','accounts','syncCustomEvent','custom:agentconnect','bind','custom:agentringnoanswer','custom:agentcomplete','custom:agentnoanswer','custom:agentcongestion','custom:agentreject','custom:amd','custom:queuecallerabandon','custom:timeout','custom:dialbegin','custom:dialconnect','syncAgentDial','custom:dialend','custom:newinteraction','custom:closedinteraction','custom:incomingmessage','custom:outgoingmessage','custom:rejectmessage','prototype','info','stringify','emit','interface','checkTriggers','checkTrigger','merge','variables','Actions','toLowerCase','browser','data1','TemplateId','data2','render','html','template\x20not\x20found','uri','buildUri','isNil','data3','data4','location','uriLocation','windowWidth','data5','800','data6','winapp','winApplication','winArguments','format','user:%s','trigger:%s:%s','action','jscripty','trigger:%s','name','contactmanager','exec','integration','routeId','script','parse','query','search','replace','length','every','AllConditions','AnyConditions','some','checkConditions','channel','field','account','chat','ChatWebsiteId','operator','value','upperFirst','AccountId','interaction','message','event','queue','membername','lastevent','util','url','mustache','./cmContact','./script','../../../config/environment','../../../config/logger','trigger','../ami','redis','defaults','socket.io-emitter','popup','triggers','agents','voiceQueues'];(function(_0x2519b6,_0x4bafa9){var _0x28b7b0=function(_0xdc366a){while(--_0xdc366a){_0x2519b6['push'](_0x2519b6['shift']());}};_0x28b7b0(++_0x4bafa9);}(_0xa30e,0x152));var _0xea30=function(_0x22fe5c,_0x28645c){_0x22fe5c=_0x22fe5c-0x0;var _0x17a217=_0xa30e[_0x22fe5c];return _0x17a217;};'use strict';var util=require(_0xea30('0x0'));var _=require('lodash');var url=require(_0xea30('0x1'));var Mustache=require(_0xea30('0x2'));var Redis=require('ioredis');var urlforward=require('./urlforward');var integration=require('./integration');var cmContact=require(_0xea30('0x3'));var script=require(_0xea30('0x4'));var config=require(_0xea30('0x5'));var logger=require(_0xea30('0x6'))(_0xea30('0x7'));var ami=require(_0xea30('0x8'));config[_0xea30('0x9')]=_[_0xea30('0xa')](config[_0xea30('0x9')],{'host':'localhost','port':0x18eb});var io=require(_0xea30('0xb'))(new Redis(config['redis']));var operators={'equals':function(_0x360bb2,_0x1470d9){return _0x360bb2==_0x1470d9;},'not_equals':function(_0x2c0356,_0x3d993d){return _0x2c0356!=_0x3d993d;}};var barAndWebActions=[_0xea30('0xc'),'url','winapp'];function Trigger(_0x1434dc){this[_0xea30('0xd')]=_0x1434dc[_0xea30('0xd')];this[_0xea30('0xe')]=_0x1434dc[_0xea30('0xe')];this[_0xea30('0xf')]=_0x1434dc[_0xea30('0xf')];this[_0xea30('0x10')]=_0x1434dc[_0xea30('0x10')];this[_0xea30('0x11')]=_0x1434dc[_0xea30('0x11')];this[_0xea30('0x12')]=_0x1434dc[_0xea30('0x12')];this[_0xea30('0x13')]=_0x1434dc[_0xea30('0x13')];this['salesforceAccounts']=_0x1434dc[_0xea30('0x14')];this[_0xea30('0x15')]=_0x1434dc[_0xea30('0x15')];this['zohoAccounts']=_0x1434dc[_0xea30('0x16')];this[_0xea30('0x17')]=_0x1434dc[_0xea30('0x17')];this[_0xea30('0x18')]=_0x1434dc['vtigerAccounts'];this[_0xea30('0x19')]=_0x1434dc[_0xea30('0x19')];this[_0xea30('0x1a')]=_0x1434dc[_0xea30('0x1a')];this['freshsalesAccounts']=_0x1434dc[_0xea30('0x1b')];this[_0xea30('0x1c')]={'zendesk':this[_0xea30('0x12')],'salesforce':this[_0xea30('0x14')],'freshdesk':this['freshdeskAccounts'],'sugarcrm':this['sugarcrmAccounts'],'zoho':this[_0xea30('0x16')],'desk':this['deskAccounts'],'vtiger':this[_0xea30('0x18')],'dynamics365':this['dynamics365Accounts'],'freshsales':this[_0xea30('0x1b')],'servicenow':this[_0xea30('0x19')]};ami['on']('custom:agentcalled',this[_0xea30('0x1d')]['bind'](this));ami['on'](_0xea30('0x1e'),this[_0xea30('0x1d')][_0xea30('0x1f')](this));ami['on'](_0xea30('0x20'),this[_0xea30('0x1d')][_0xea30('0x1f')](this));ami['on'](_0xea30('0x21'),this['syncCustomEvent'][_0xea30('0x1f')](this));ami['on']('custom:agentnosuchnumber',this[_0xea30('0x1d')][_0xea30('0x1f')](this));ami['on'](_0xea30('0x22'),this[_0xea30('0x1d')][_0xea30('0x1f')](this));ami['on']('custom:agentbusy',this[_0xea30('0x1d')][_0xea30('0x1f')](this));ami['on'](_0xea30('0x23'),this[_0xea30('0x1d')][_0xea30('0x1f')](this));ami['on'](_0xea30('0x24'),this[_0xea30('0x1d')]['bind'](this));ami['on'](_0xea30('0x25'),this['syncCustomEvent'][_0xea30('0x1f')](this));ami['on'](_0xea30('0x26'),this['syncCustomEvent']['bind'](this));ami['on'](_0xea30('0x27'),this['syncCustomEvent'][_0xea30('0x1f')](this));ami['on'](_0xea30('0x28'),this['syncAgentDial']['bind'](this));ami['on'](_0xea30('0x29'),this[_0xea30('0x2a')]['bind'](this));ami['on'](_0xea30('0x2b'),this[_0xea30('0x2a')][_0xea30('0x1f')](this));ami['on'](_0xea30('0x2c'),this[_0xea30('0x1d')][_0xea30('0x1f')](this));ami['on'](_0xea30('0x2d'),this[_0xea30('0x1d')][_0xea30('0x1f')](this));ami['on'](_0xea30('0x2e'),this['syncCustomEvent'][_0xea30('0x1f')](this));ami['on'](_0xea30('0x2f'),this[_0xea30('0x1d')][_0xea30('0x1f')](this));ami['on']('custom:acceptmessage',this[_0xea30('0x1d')]['bind'](this));ami['on'](_0xea30('0x30'),this[_0xea30('0x1d')]['bind'](this));}Trigger[_0xea30('0x31')]['emit']=function(_0x3389f6,_0x3f1291,_0x1f58d7){logger[_0xea30('0x32')](_0x3389f6,_0x3f1291,JSON[_0xea30('0x33')](_0x1f58d7));io['to'](_0x3389f6)[_0xea30('0x34')](_0x3f1291,_0x1f58d7);};Trigger[_0xea30('0x31')]['syncCustomEvent']=function(_0x36d1d7){var _0x147a50=_['clone'](_0x36d1d7);this['checkTriggers'](_0x147a50);};Trigger['prototype']['syncAgentDial']=function(_0x1cf5ce){if(this['agents'][_0x1cf5ce[_0xea30('0x35')]]){this['syncCustomEvent'](_0x1cf5ce);}};Trigger[_0xea30('0x31')][_0xea30('0x36')]=function(_0x11d0e9){var _0x6a4bb6;for(var _0x404904 in this[_0xea30('0xd')]){if(this[_0xea30('0xd')]['hasOwnProperty'](_0x404904)){if(this['triggers'][_0x404904]['status']){_0x6a4bb6=this[_0xea30('0x37')](this[_0xea30('0xd')][_0x404904],_0x11d0e9);if(_0x6a4bb6){_[_0xea30('0x38')](_0x11d0e9,_0x11d0e9[_0xea30('0x39')]);for(var _0x3459c2=0x0,_0x49c4e1,_0x1d5181,_0x482145;_0x3459c2<this[_0xea30('0xd')][_0x404904][_0xea30('0x3a')]['length'];_0x3459c2+=0x1){_0x49c4e1=this['triggers'][_0x404904][_0xea30('0x3a')][_0x3459c2];if(this[_0xea30('0xe')][_0x11d0e9[_0xea30('0x35')]]){switch(_0x49c4e1['action'][_0xea30('0x3b')]()){case'contactmanager':break;case'motionbar':case _0xea30('0x3c'):var _0x26997b={};switch(barAndWebActions[_0x49c4e1[_0xea30('0x3d')]]){case _0xea30('0xc'):_0x26997b[_0xea30('0x3e')]=_0x49c4e1['data2'];_0x26997b['html']=this[_0xea30('0x10')][_0x49c4e1[_0xea30('0x3f')]]?Mustache[_0xea30('0x40')](this[_0xea30('0x10')][_0x49c4e1[_0xea30('0x3f')]][_0xea30('0x41')],_0x11d0e9):_0xea30('0x42');break;case _0xea30('0x1'):_0x26997b[_0xea30('0x43')]=this[_0xea30('0x44')](_0x49c4e1['data2'],_0x11d0e9,_[_0xea30('0x45')](_0x49c4e1['data3'])?!![]:parseInt(_0x49c4e1[_0xea30('0x46')],0xa));if(_[_0xea30('0x45')](_0x49c4e1[_0xea30('0x47')])){_0x26997b[_0xea30('0x48')]='0';}else{_0x26997b[_0xea30('0x49')]=_0x49c4e1[_0xea30('0x47')];_0x26997b[_0xea30('0x4a')]=_['isNil'](_0x49c4e1[_0xea30('0x4b')])?_0xea30('0x4c'):_0x49c4e1['data5'];_0x26997b['windowHeight']=_[_0xea30('0x45')](_0x49c4e1[_0xea30('0x4d')])?'600':_0x49c4e1[_0xea30('0x4d')];}break;case _0xea30('0x4e'):_0x26997b[_0xea30('0x4f')]=_0x49c4e1[_0xea30('0x3f')]?Mustache[_0xea30('0x40')](_0x49c4e1[_0xea30('0x3f')],_0x11d0e9):'';_0x26997b[_0xea30('0x50')]=_0x49c4e1['data3']?Mustache['render'](_0x49c4e1['data3'],_0x11d0e9):'';break;}this[_0xea30('0x34')](util[_0xea30('0x51')](_0xea30('0x52'),this[_0xea30('0xe')][_0x11d0e9[_0xea30('0x35')]]['name']),util[_0xea30('0x51')](_0xea30('0x53'),_0x49c4e1[_0xea30('0x54')][_0xea30('0x3b')](),barAndWebActions[_0x49c4e1[_0xea30('0x3d')]]),_[_0xea30('0x38')](_0x26997b,_0x11d0e9));break;case _0xea30('0x55'):this['emit'](util[_0xea30('0x51')]('user:%s',this[_0xea30('0xe')][_0x11d0e9[_0xea30('0x35')]]['name']),util['format'](_0xea30('0x56'),_0x49c4e1[_0xea30('0x54')][_0xea30('0x3b')]()),_[_0xea30('0x38')]({'ProjectId':parseInt(_0x49c4e1[_0xea30('0x3d')],0xa)},_0x11d0e9));break;default:this[_0xea30('0x34')](util[_0xea30('0x51')](_0xea30('0x52'),this[_0xea30('0xe')][_0x11d0e9[_0xea30('0x35')]][_0xea30('0x57')]),util[_0xea30('0x51')](_0xea30('0x56'),_0x49c4e1[_0xea30('0x54')][_0xea30('0x3b')]()),_[_0xea30('0x38')]({},_0x49c4e1,_0x11d0e9));}}switch(_0x49c4e1[_0xea30('0x54')][_0xea30('0x3b')]()){case _0xea30('0x58'):cmContact[_0xea30('0x59')](this[_0xea30('0xe')][_0x11d0e9[_0xea30('0x35')]],this[_0xea30('0xd')][_0x404904],_0x49c4e1,_0x11d0e9);break;case _0xea30('0x5a'):integration['exec'](_0x49c4e1,_0x11d0e9,this[_0xea30('0x1c')],this[_0xea30('0xe')][_0x11d0e9['interface']],this[_0xea30('0xf')][_0x11d0e9['queue']],this[_0xea30('0x11')][_0x11d0e9[_0xea30('0x5b')]]);break;case'urlforward':urlforward['exec'](_0x49c4e1,_0x11d0e9);break;case _0xea30('0x5c'):script[_0xea30('0x59')](_0x49c4e1,_0x11d0e9);break;}}}}}}};Trigger['prototype']['buildUri']=function(_0x1f8538,_0x259bde,_0x18ff17){var _0xa8223c=url[_0xea30('0x5d')](Mustache[_0xea30('0x40')](_0x1f8538,_0x259bde),!![]);if(_0x18ff17){_[_0xea30('0x38')](_0xa8223c[_0xea30('0x5e')],_0x259bde);}delete _0xa8223c[_0xea30('0x5f')];var _0x2eff66=url[_0xea30('0x51')](_0xa8223c);_0x2eff66=_0x2eff66[_0xea30('0x60')](/\/\?/g,'?');return _0x2eff66;};Trigger[_0xea30('0x31')][_0xea30('0x37')]=function(_0x530f08,_0x17ec91){var _0x3b9b9b=!![],_0x4d1177=!![];if(_0x530f08['AllConditions'][_0xea30('0x61')]){_0x3b9b9b=_[_0xea30('0x62')](_0x530f08[_0xea30('0x63')],this['checkConditions'](_0x17ec91,_0x530f08['channel']));}if(_0x530f08[_0xea30('0x64')][_0xea30('0x61')]){_0x4d1177=_[_0xea30('0x65')](_0x530f08[_0xea30('0x64')],this[_0xea30('0x66')](_0x17ec91,_0x530f08[_0xea30('0x67')]));}return _0x3b9b9b&&_0x4d1177;};Trigger['prototype'][_0xea30('0x66')]=function(_0x1ce2d2,_0x5ed45e){return function(_0x3f9e94){switch(_0x3f9e94[_0xea30('0x68')]){case _0xea30('0x69'):if(_0x1ce2d2[_0xea30('0x67')]===_0x5ed45e){if(_0x5ed45e===_0xea30('0x6a')){return _0x1ce2d2[_0xea30('0x6b')]?operators[_0x3f9e94[_0xea30('0x6c')]](Number(_0x3f9e94[_0xea30('0x6d')]),_0x1ce2d2[_0xea30('0x6b')]):![];}else{return _0x1ce2d2[_[_0xea30('0x6e')](_0x5ed45e)+_0xea30('0x6f')]?operators[_0x3f9e94['operator']](Number(_0x3f9e94[_0xea30('0x6d')]),_0x1ce2d2[_[_0xea30('0x6e')](_0x5ed45e)+_0xea30('0x6f')]):![];}}break;case _0xea30('0x70'):case _0xea30('0x71'):if(_0x1ce2d2['channel']===_0x5ed45e){return _0x1ce2d2[_0xea30('0x72')]?operators[_0x3f9e94['operator']](_0x3f9e94['value'],_0x1ce2d2[_0xea30('0x72')]):![];}break;case _0xea30('0x73'):return _0x1ce2d2['queue']?operators[_0x3f9e94[_0xea30('0x6c')]](_0x3f9e94[_0xea30('0x6d')],_0x1ce2d2[_0xea30('0x73')]):![];case'agent':return _0x1ce2d2['membername']?operators[_0x3f9e94[_0xea30('0x6c')]](_0x3f9e94[_0xea30('0x6d')],_0x1ce2d2[_0xea30('0x74')]):![];case'lastevent':return _0x1ce2d2[_0xea30('0x75')]?operators[_0x3f9e94[_0xea30('0x6c')]](_0x3f9e94[_0xea30('0x6d')],_0x1ce2d2['lastevent']):![];case _0xea30('0x5b'):return _0x1ce2d2[_0xea30('0x5b')]?operators[_0x3f9e94[_0xea30('0x6c')]](_0x3f9e94[_0xea30('0x6d')],_0x1ce2d2['routeId']):![];}return![];};};module['exports']=Trigger;
\ No newline at end of file
index f853d53..6db1717 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7217=['format','%s/users','remoteUri','then','total_entries','find','entries','info','Agent\x20found!','Agent\x20not\x20found,\x20using\x20the\x20admin\x20account!','%s/users/me','debug','stringify','GET','authType','basic','%s:%s','username','password','token','Basic\x20%s','base64','Searching\x20enduser\x20with\x20phone','%s/customers/search','Enduser\x20found!','_embedded','Enduser\x20not\x20found,\x20creating\x20a\x20new\x20enduser!','length','map','forEach','string','picklist','nameField','customField','content','toString','includes','idField','custom_fields','variable','variableName','type','customVariable','Variable','name','toLowerCase','priority','Creating\x20new\x20ticket...','merge','getString','new','xCALLY','Motion','CTI','Tags','Descriptions','user','%s/customers/%d/cases','queue','stripTrailingSlash','serverUrl','monitor_format','[QUEUE]','Recording\x20is\x20enabled!','recordingURL','%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s','Authorization','email','The\x20User\x20ID\x20is:','calleridnum','The\x20Enduser\x20ID\x20is:','Ticket\x20created!','integrationTab','Displaying\x20ticket\x20to\x20agent...','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','error','catch','outbound','recordingFormat','none','[OUTBOUND]','uniqueid','The\x20Ticket\x20ID\x20is:','%s/agent/tickets/%s','unmanaged','lastevent','toUpperCase','calleridname','lodash','md5','util','ioredis','./util','../../../../config/environment','redis','defaults','localhost','socket.io-emitter','emit','application/json','validateEmail','Getting\x20agent\x20with\x20email'];(function(_0x3479e0,_0x2ceef0){var _0x4c5126=function(_0x30b358){while(--_0x30b358){_0x3479e0['push'](_0x3479e0['shift']());}};_0x4c5126(++_0x2ceef0);}(_0x7217,0x19e));var _0x7721=function(_0x4cf98e,_0xba4b79){_0x4cf98e=_0x4cf98e-0x0;var _0x1623ac=_0x7217[_0x4cf98e];return _0x1623ac;};'use strict';var _=require(_0x7721('0x0'));var rp=require('request-promise');var md5=require(_0x7721('0x1'));var util=require(_0x7721('0x2'));var Redis=require(_0x7721('0x3'));var intUtil=require(_0x7721('0x4'));var config=require(_0x7721('0x5'));var logger=require('../../../../config/logger')('desk');config[_0x7721('0x6')]=_[_0x7721('0x7')](config[_0x7721('0x6')],{'host':_0x7721('0x8'),'port':0x18eb});var io=require(_0x7721('0x9'))(new Redis(config[_0x7721('0x6')]));function emit(_0x18ab6b,_0x21f680,_0x225610){io['to'](_0x18ab6b)[_0x7721('0xa')](_0x21f680,_0x225610);}var headers={'Content-Type':_0x7721('0xb'),'Accept':_0x7721('0xb')};function getUser(_0xfa8835,_0x138740){if(intUtil[_0x7721('0xc')](_0x138740)===!![]){logger['info'](_0x7721('0xd'),_0x138740);return request({'uri':util[_0x7721('0xe')](_0x7721('0xf'),_0xfa8835[_0x7721('0x10')])})[_0x7721('0x11')](function(_0x409b37){if(_0x409b37[_0x7721('0x12')]){return _[_0x7721('0x13')](_0x409b37['_embedded'][_0x7721('0x14')],{'email':_0x138740});}})[_0x7721('0x11')](function(_0x57ff6d){if(_0x57ff6d){logger[_0x7721('0x15')](_0x7721('0x16'));return _0x57ff6d;}else{logger[_0x7721('0x15')](_0x7721('0x17'));return request({'uri':util['format'](_0x7721('0x18'),_0xfa8835[_0x7721('0x10')])});}});}else{logger['info']('Invalid\x20email\x20format,\x20using\x20the\x20admin\x20account!');return request({'uri':util['format'](_0x7721('0x18'),_0xfa8835[_0x7721('0x10')])});}}function request(_0x3cc909){logger[_0x7721('0x19')]('[HTTP]',JSON[_0x7721('0x1a')](_0x3cc909));return rp(_['defaults'](_0x3cc909,{'method':_0x7721('0x1b'),'headers':headers,'json':!![]}));}function getAuth(_0x5cb0e6){var _0xfec626;if(_0x5cb0e6[_0x7721('0x1c')]===_0x7721('0x1d')){_0xfec626=util[_0x7721('0xe')](_0x7721('0x1e'),_0x5cb0e6[_0x7721('0x1f')],_0x5cb0e6[_0x7721('0x20')]);}else if(_0x5cb0e6[_0x7721('0x1c')]===_0x7721('0x21')){_0xfec626=util[_0x7721('0xe')]('%s/token:%s',_0x5cb0e6[_0x7721('0x1f')],_0x5cb0e6[_0x7721('0x21')]);}return util[_0x7721('0xe')](_0x7721('0x22'),new Buffer(_0xfec626)['toString'](_0x7721('0x23')));}function getEndUser(_0x512f31,_0xb9e9dd,_0x288e3a){logger[_0x7721('0x15')](_0x7721('0x24'),_0x288e3a);return request({'uri':util[_0x7721('0xe')](_0x7721('0x25'),_0x512f31[_0x7721('0x10')]),'qs':{'phone':_0x288e3a}})['then'](function(_0x216f20){if(_0x216f20[_0x7721('0x12')]){logger[_0x7721('0x15')](_0x7721('0x26'));return _0x216f20[_0x7721('0x27')][_0x7721('0x14')][0x0];}else{logger[_0x7721('0x15')](_0x7721('0x28'));return request({'uri':util[_0x7721('0xe')]('%s/customers',_0x512f31[_0x7721('0x10')]),'method':'POST','body':{'first_name':_0xb9e9dd,'title':_0xb9e9dd,'phone_numbers':[{'type':'work','value':_0x288e3a}]}});}});}function getTags(_0x315202,_0x343c19){var _0x53c904=[];if(_0x315202&&_0x315202[_0x7721('0x29')]>0x0){_0x53c904=_[_0x7721('0x2a')](_0x315202,_0x343c19);}return _0x53c904;}function getCustomFields(_0x37b9f0,_0xd7d703){var _0x1da2d8=[];var _0x5c54f0={'custom_fields':{}};if(_0x37b9f0[_0x7721('0x29')]>0x0){_[_0x7721('0x2b')](_0x37b9f0,function(_0x497f9f){if(_['includes']([_0x7721('0x2c'),_0x7721('0x2d')],_0x497f9f['type'])&&_0x497f9f[_0x7721('0x2e')]&&!_0x497f9f[_0x7721('0x2f')]){_0x5c54f0[_0x497f9f[_0x7721('0x2e')]['toLowerCase']()]=_0x497f9f[_0x7721('0x30')][_0x7721('0x31')]();}else if(_[_0x7721('0x32')]([_0x7721('0x2c'),_0x7721('0x2d')],_0x497f9f['type'])&&_0x497f9f[_0x7721('0x33')]&&_0x497f9f[_0x7721('0x2f')]){_0x5c54f0[_0x7721('0x34')][_0x497f9f['idField']]=_0x497f9f[_0x7721('0x30')][_0x7721('0x31')]();}else if(_0x497f9f['type']===_0x7721('0x35')&&_0x497f9f['variableName']&&_0x497f9f[_0x7721('0x33')]&&_0x497f9f[_0x7721('0x2f')]){_0xd7d703[_0x497f9f[_0x7721('0x36')]]&&(_0x5c54f0[_0x7721('0x34')][_0x497f9f[_0x7721('0x33')]]=_0xd7d703[_0x497f9f[_0x7721('0x36')]][_0x7721('0x31')]());}else if(_0x497f9f[_0x7721('0x37')]===_0x7721('0x38')&&_0x497f9f[_0x7721('0x39')]&&_0x497f9f[_0x7721('0x39')]['name']&&_0x497f9f[_0x7721('0x33')]&&_0x497f9f['customField']){_0xd7d703[_0x497f9f[_0x7721('0x39')][_0x7721('0x3a')][_0x7721('0x3b')]()]&&(_0x5c54f0[_0x7721('0x34')][_0x497f9f[_0x7721('0x33')]]=_0xd7d703[_0x497f9f[_0x7721('0x39')]['name']['toLowerCase']()]['toString']());}});}if(_0x5c54f0['priority']){_0x5c54f0[_0x7721('0x3c')]=Number(_0x5c54f0[_0x7721('0x3c')]);}return _0x5c54f0;}function getTicket(_0x1acc72,_0x22ef35,_0x4a90ce,_0xa389fa,_0x4cf659){logger[_0x7721('0x15')](_0x7721('0x3d'));var _0x5a278e=_[_0x7721('0x3e')]({'subject':intUtil[_0x7721('0x3f')](_0xa389fa['Subjects'],_0x4cf659,'\x20'),'type':'phone','status':_0x7721('0x40'),'labels':[_0x7721('0x41'),_0x7721('0x42'),_0x7721('0x43')]['concat'](getTags(_0xa389fa[_0x7721('0x44')],_0x7721('0x3a'))),'description':intUtil[_0x7721('0x3f')](_0xa389fa[_0x7721('0x45')],_0x4cf659,'\x0a'),'_links':{'assigned_user':{'href':util[_0x7721('0xe')]('/api/v2/users/%d',_0x22ef35['id']),'class':_0x7721('0x46')}},'message':{'direction':'in','body':intUtil['getString'](_0xa389fa[_0x7721('0x45')],_0x4cf659,'\x0a')}},getCustomFields(_0xa389fa['Fields'],_0x4cf659));return request({'uri':util[_0x7721('0xe')](_0x7721('0x47'),_0x1acc72[_0x7721('0x10')],_0x4a90ce['id']),'method':'POST','body':_0x5a278e});}exports[_0x7721('0x48')]=function(_0x11d853,_0x1ad315,_0x481fa8,_0x9f7b1d,_0x754071,_0xdb3033){var _0x2d5f35,_0x135dbc;_0xdb3033[_0x7721('0x10')]=intUtil[_0x7721('0x49')](_0xdb3033['remoteUri']);_0xdb3033['serverUrl']=intUtil[_0x7721('0x49')](_0xdb3033[_0x7721('0x4a')]);if(_0x754071&&_0x754071[_0x7721('0x4b')]){logger[_0x7721('0x15')](_0x7721('0x4c'),_0x7721('0x4d'));_0x1ad315[_0x7721('0x4e')]=util[_0x7721('0xe')](_0x7721('0x4f'),_0xdb3033[_0x7721('0x4a')],_0x1ad315['uniqueid'],md5(_0x1ad315['uniqueid']));}else{_0x1ad315[_0x7721('0x4e')]='';}headers[_0x7721('0x50')]=getAuth(_0xdb3033);return getUser(_0xdb3033,_0x9f7b1d[_0x7721('0x51')])[_0x7721('0x11')](function(_0x589e95){_0x2d5f35=_0x589e95;logger[_0x7721('0x15')](_0x7721('0x52'),_0x2d5f35['id']);return getEndUser(_0xdb3033,_0x1ad315['calleridname'],_0x1ad315[_0x7721('0x53')]);})['then'](function(_0x2682b1){_0x135dbc=_0x2682b1;logger['info'](_0x7721('0x54'),_0x135dbc['id']);return getTicket(_0xdb3033,_0x2d5f35,_0x135dbc,_0x481fa8,_0x1ad315);})[_0x7721('0x11')](function(_0xf17c40){if(_0xf17c40){logger['info'](_0x7721('0x55'));logger[_0x7721('0x15')]('The\x20Ticket\x20ID\x20is:',_0xf17c40['id']);switch(_0xdb3033[_0x7721('0x37')]){case _0x7721('0x56'):logger[_0x7721('0x15')]('[QUEUE]',_0x7721('0x57'));emit(util['format'](_0x7721('0x58'),_0x9f7b1d[_0x7721('0x3a')]),_0x7721('0x59'),{'recordId':_0xf17c40['id']});break;case _0x7721('0x5a'):logger[_0x7721('0x15')](_0x7721('0x4c'),_0x7721('0x5b'));emit(util[_0x7721('0xe')](_0x7721('0x58'),_0x9f7b1d[_0x7721('0x3a')]),_0x7721('0x5c'),{'uri':util[_0x7721('0xe')](_0x7721('0x5d'),_0xf17c40['id'])});break;default:logger[_0x7721('0x5e')](_0x7721('0x4c'),'Desk\x20account\x20type\x20not\x20recognized');}}})[_0x7721('0x5f')](function(_0x2f6f30){console[_0x7721('0x5e')](_0x2f6f30);logger[_0x7721('0x5e')](_0x7721('0x4c'),JSON[_0x7721('0x1a')](_0x2f6f30));});};exports[_0x7721('0x60')]=function(_0x57484c,_0x234bee,_0x17036e,_0x134908,_0x3b7382,_0x1f1e84,_0x9c0d4){var _0x7fbd6c,_0x33287d;_0x1f1e84[_0x7721('0x10')]=intUtil[_0x7721('0x49')](_0x1f1e84[_0x7721('0x10')]);_0x1f1e84['serverUrl']=intUtil[_0x7721('0x49')](_0x1f1e84[_0x7721('0x4a')]);if(_0x9c0d4&&_0x9c0d4[_0x7721('0x61')]&&_0x9c0d4[_0x7721('0x61')]!==_0x7721('0x62')){logger[_0x7721('0x15')](_0x7721('0x63'),_0x7721('0x4d'));_0x234bee[_0x7721('0x4e')]=util[_0x7721('0xe')](_0x7721('0x4f'),_0x1f1e84[_0x7721('0x4a')],_0x234bee[_0x7721('0x64')],md5(_0x234bee[_0x7721('0x64')]));}headers[_0x7721('0x50')]=getAuth(_0x1f1e84);return getUser(_0x1f1e84,_0x134908['email'])['then'](function(_0x4e112e){_0x7fbd6c=_0x4e112e;logger[_0x7721('0x15')]('The\x20User\x20ID\x20is:',_0x7fbd6c['id']);return getEndUser(_0x1f1e84,_0x234bee['destcalleridname'],_0x234bee['destcalleridnum']);})['then'](function(_0x47925a){_0x33287d=_0x47925a;logger[_0x7721('0x15')](_0x7721('0x54'),_0x33287d['id']);return getTicket(_0x1f1e84,_0x7fbd6c,_0x33287d,_0x17036e,_0x234bee);})['then'](function(_0x5181d7){if(_0x5181d7){logger['info']('Ticket\x20created!');logger['info'](_0x7721('0x65'),_0x5181d7['id']);switch(_0x1f1e84['type']){case'integrationTab':logger['info'](_0x7721('0x4c'),_0x7721('0x57'));emit(util[_0x7721('0xe')]('user:%s',_0x134908[_0x7721('0x3a')]),_0x7721('0x59'),{'recordId':_0x5181d7['id']});break;case _0x7721('0x5a'):logger[_0x7721('0x15')](_0x7721('0x4c'),_0x7721('0x5b'));emit(util[_0x7721('0xe')](_0x7721('0x58'),_0x134908[_0x7721('0x3a')]),_0x7721('0x5c'),{'uri':util[_0x7721('0xe')](_0x7721('0x66'),_0x1f1e84[_0x7721('0x10')],_0x5181d7['id'])});break;default:logger[_0x7721('0x5e')](_0x7721('0x63'),'Desk\x20account\x20type\x20not\x20recognized');}}})[_0x7721('0x5f')](function(_0x2c93b0){logger[_0x7721('0x5e')](_0x7721('0x63'),JSON['stringify'](_0x2c93b0));});};exports[_0x7721('0x67')]=function(_0x104f05,_0x4c8284,_0x3e7df3,_0x5d37ad,_0x1f508d,_0x4bfb48){var _0x36a3a6,_0x3f9eaa;_0x4bfb48[_0x7721('0x10')]=intUtil[_0x7721('0x49')](_0x4bfb48[_0x7721('0x10')]);_0x4bfb48[_0x7721('0x4a')]=intUtil[_0x7721('0x49')](_0x4bfb48['serverUrl']);if(_0x1f508d&&_0x1f508d[_0x7721('0x4b')]){logger[_0x7721('0x15')]('['+_0x4c8284[_0x7721('0x68')][_0x7721('0x69')]()+']',_0x7721('0x4d'));_0x4c8284[_0x7721('0x4e')]=util[_0x7721('0xe')]('%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s',_0x4bfb48[_0x7721('0x4a')],_0x4c8284[_0x7721('0x64')],md5(_0x4c8284['uniqueid']));}else{_0x4c8284[_0x7721('0x4e')]='';}headers['Authorization']=getAuth(_0x4bfb48);return getUser(_0x4bfb48)[_0x7721('0x11')](function(_0x382800){_0x36a3a6=_0x382800;logger[_0x7721('0x15')](_0x7721('0x52'),_0x36a3a6['id']);return getEndUser(_0x4bfb48,_0x4c8284[_0x7721('0x6a')],_0x4c8284[_0x7721('0x53')]);})[_0x7721('0x11')](function(_0x5dca04){_0x3f9eaa=_0x5dca04;logger[_0x7721('0x15')](_0x7721('0x54'),_0x3f9eaa['id']);return getTicket(_0x4bfb48,_0x36a3a6,_0x3f9eaa,_0x3e7df3,_0x4c8284);})[_0x7721('0x11')](function(_0x5f08cc){if(_0x5f08cc){logger['info']('Ticket\x20created!');logger['info']('The\x20Ticket\x20ID\x20is:',_0x5f08cc['id']);}})[_0x7721('0x5f')](function(_0x2645dd){logger['error']('['+_0x4c8284[_0x7721('0x68')][_0x7721('0x69')]()+']',JSON[_0x7721('0x1a')](_0x2645dd));});};
\ No newline at end of file
+var _0x326f=['catch','stringify','unmanaged','lastevent','toUpperCase','lodash','util','ioredis','./util','../../../../config/environment','../../../../config/logger','desk','redis','defaults','localhost','validateEmail','info','Getting\x20agent\x20with\x20email','%s/users','then','total_entries','_embedded','entries','Agent\x20found!','format','Invalid\x20email\x20format,\x20using\x20the\x20admin\x20account!','%s/users/me','remoteUri','debug','[HTTP]','GET','authType','basic','password','%s/token:%s','Basic\x20%s','Searching\x20enduser\x20with\x20phone','%s/customers/search','Enduser\x20found!','Enduser\x20not\x20found,\x20creating\x20a\x20new\x20enduser!','POST','work','map','length','includes','string','picklist','type','nameField','customField','toLowerCase','content','idField','custom_fields','toString','variable','variableName','customVariable','Variable','name','priority','Creating\x20new\x20ticket...','getString','Subjects','xCALLY','concat','Descriptions','user','Fields','%s/customers/%d/cases','queue','stripTrailingSlash','serverUrl','monitor_format','[QUEUE]','Recording\x20is\x20enabled!','recordingURL','uniqueid','Authorization','email','The\x20User\x20ID\x20is:','calleridname','calleridnum','The\x20Enduser\x20ID\x20is:','Ticket\x20created!','The\x20Ticket\x20ID\x20is:','Displaying\x20ticket\x20to\x20agent...','trigger:desk:display','newTab','Displaying\x20ticket\x20to\x20agent\x20in\x20a\x20new\x20tab...','user:%s','trigger:browser:url','error','Desk\x20account\x20type\x20not\x20recognized','outbound','recordingFormat','none','[OUTBOUND]','%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s','destcalleridname','integrationTab','%s/agent/tickets/%s'];(function(_0x160c73,_0x2ee678){var _0xd9302=function(_0x169454){while(--_0x169454){_0x160c73['push'](_0x160c73['shift']());}};_0xd9302(++_0x2ee678);}(_0x326f,0xd1));var _0xf326=function(_0xed609a,_0x31d2d9){_0xed609a=_0xed609a-0x0;var _0x1404c9=_0x326f[_0xed609a];return _0x1404c9;};'use strict';var _=require(_0xf326('0x0'));var rp=require('request-promise');var md5=require('md5');var util=require(_0xf326('0x1'));var Redis=require(_0xf326('0x2'));var intUtil=require(_0xf326('0x3'));var config=require(_0xf326('0x4'));var logger=require(_0xf326('0x5'))(_0xf326('0x6'));config[_0xf326('0x7')]=_[_0xf326('0x8')](config[_0xf326('0x7')],{'host':_0xf326('0x9'),'port':0x18eb});var io=require('socket.io-emitter')(new Redis(config[_0xf326('0x7')]));function emit(_0x3851eb,_0x165f95,_0x1e7b8a){io['to'](_0x3851eb)['emit'](_0x165f95,_0x1e7b8a);}var headers={'Content-Type':'application/json','Accept':'application/json'};function getUser(_0x3bacf2,_0x1fc80e){if(intUtil[_0xf326('0xa')](_0x1fc80e)===!![]){logger[_0xf326('0xb')](_0xf326('0xc'),_0x1fc80e);return request({'uri':util['format'](_0xf326('0xd'),_0x3bacf2['remoteUri'])})[_0xf326('0xe')](function(_0x4aaf3a){if(_0x4aaf3a[_0xf326('0xf')]){return _['find'](_0x4aaf3a[_0xf326('0x10')][_0xf326('0x11')],{'email':_0x1fc80e});}})['then'](function(_0x342fe5){if(_0x342fe5){logger[_0xf326('0xb')](_0xf326('0x12'));return _0x342fe5;}else{logger[_0xf326('0xb')]('Agent\x20not\x20found,\x20using\x20the\x20admin\x20account!');return request({'uri':util[_0xf326('0x13')]('%s/users/me',_0x3bacf2['remoteUri'])});}});}else{logger[_0xf326('0xb')](_0xf326('0x14'));return request({'uri':util[_0xf326('0x13')](_0xf326('0x15'),_0x3bacf2[_0xf326('0x16')])});}}function request(_0x287a2a){logger[_0xf326('0x17')](_0xf326('0x18'),JSON['stringify'](_0x287a2a));return rp(_[_0xf326('0x8')](_0x287a2a,{'method':_0xf326('0x19'),'headers':headers,'json':!![]}));}function getAuth(_0x18bee3){var _0x31ffb9;if(_0x18bee3[_0xf326('0x1a')]===_0xf326('0x1b')){_0x31ffb9=util['format']('%s:%s',_0x18bee3['username'],_0x18bee3[_0xf326('0x1c')]);}else if(_0x18bee3[_0xf326('0x1a')]==='token'){_0x31ffb9=util['format'](_0xf326('0x1d'),_0x18bee3['username'],_0x18bee3['token']);}return util[_0xf326('0x13')](_0xf326('0x1e'),new Buffer(_0x31ffb9)['toString']('base64'));}function getEndUser(_0x19b8ba,_0xb1efcf,_0x5f21a2){logger[_0xf326('0xb')](_0xf326('0x1f'),_0x5f21a2);return request({'uri':util[_0xf326('0x13')](_0xf326('0x20'),_0x19b8ba[_0xf326('0x16')]),'qs':{'phone':_0x5f21a2}})[_0xf326('0xe')](function(_0x5ce532){if(_0x5ce532['total_entries']){logger['info'](_0xf326('0x21'));return _0x5ce532[_0xf326('0x10')][_0xf326('0x11')][0x0];}else{logger[_0xf326('0xb')](_0xf326('0x22'));return request({'uri':util[_0xf326('0x13')]('%s/customers',_0x19b8ba[_0xf326('0x16')]),'method':_0xf326('0x23'),'body':{'first_name':_0xb1efcf,'title':_0xb1efcf,'phone_numbers':[{'type':_0xf326('0x24'),'value':_0x5f21a2}]}});}});}function getTags(_0x581531,_0x1617d2){var _0x55ad0f=[];if(_0x581531&&_0x581531['length']>0x0){_0x55ad0f=_[_0xf326('0x25')](_0x581531,_0x1617d2);}return _0x55ad0f;}function getCustomFields(_0x1ae23a,_0x2fa28e){var _0x5dbe63=[];var _0xc115d9={'custom_fields':{}};if(_0x1ae23a[_0xf326('0x26')]>0x0){_['forEach'](_0x1ae23a,function(_0x225776){if(_[_0xf326('0x27')]([_0xf326('0x28'),_0xf326('0x29')],_0x225776[_0xf326('0x2a')])&&_0x225776[_0xf326('0x2b')]&&!_0x225776[_0xf326('0x2c')]){_0xc115d9[_0x225776[_0xf326('0x2b')][_0xf326('0x2d')]()]=_0x225776[_0xf326('0x2e')]['toString']();}else if(_[_0xf326('0x27')]([_0xf326('0x28'),_0xf326('0x29')],_0x225776['type'])&&_0x225776[_0xf326('0x2f')]&&_0x225776[_0xf326('0x2c')]){_0xc115d9[_0xf326('0x30')][_0x225776['idField']]=_0x225776['content'][_0xf326('0x31')]();}else if(_0x225776[_0xf326('0x2a')]===_0xf326('0x32')&&_0x225776[_0xf326('0x33')]&&_0x225776[_0xf326('0x2f')]&&_0x225776[_0xf326('0x2c')]){_0x2fa28e[_0x225776[_0xf326('0x33')]]&&(_0xc115d9[_0xf326('0x30')][_0x225776['idField']]=_0x2fa28e[_0x225776[_0xf326('0x33')]][_0xf326('0x31')]());}else if(_0x225776['type']===_0xf326('0x34')&&_0x225776['Variable']&&_0x225776[_0xf326('0x35')]['name']&&_0x225776['idField']&&_0x225776[_0xf326('0x2c')]){_0x2fa28e[_0x225776['Variable'][_0xf326('0x36')]['toLowerCase']()]&&(_0xc115d9[_0xf326('0x30')][_0x225776[_0xf326('0x2f')]]=_0x2fa28e[_0x225776[_0xf326('0x35')]['name'][_0xf326('0x2d')]()][_0xf326('0x31')]());}});}if(_0xc115d9['priority']){_0xc115d9[_0xf326('0x37')]=Number(_0xc115d9[_0xf326('0x37')]);}return _0xc115d9;}function getTicket(_0x40fa7a,_0xaf65e0,_0x51076c,_0x2c4416,_0xb1ef35){logger[_0xf326('0xb')](_0xf326('0x38'));var _0x1d88ed=_['merge']({'subject':intUtil[_0xf326('0x39')](_0x2c4416[_0xf326('0x3a')],_0xb1ef35,'\x20'),'type':'phone','status':'new','labels':[_0xf326('0x3b'),'Motion','CTI'][_0xf326('0x3c')](getTags(_0x2c4416['Tags'],_0xf326('0x36'))),'description':intUtil[_0xf326('0x39')](_0x2c4416[_0xf326('0x3d')],_0xb1ef35,'\x0a'),'_links':{'assigned_user':{'href':util[_0xf326('0x13')]('/api/v2/users/%d',_0xaf65e0['id']),'class':_0xf326('0x3e')}},'message':{'direction':'in','body':intUtil[_0xf326('0x39')](_0x2c4416[_0xf326('0x3d')],_0xb1ef35,'\x0a')}},getCustomFields(_0x2c4416[_0xf326('0x3f')],_0xb1ef35));return request({'uri':util[_0xf326('0x13')](_0xf326('0x40'),_0x40fa7a[_0xf326('0x16')],_0x51076c['id']),'method':_0xf326('0x23'),'body':_0x1d88ed});}exports[_0xf326('0x41')]=function(_0x1227d3,_0x361776,_0x2bab13,_0x50d63f,_0x1b6126,_0x1637dc){var _0x2ed1a7,_0x270288;_0x1637dc[_0xf326('0x16')]=intUtil[_0xf326('0x42')](_0x1637dc['remoteUri']);_0x1637dc[_0xf326('0x43')]=intUtil[_0xf326('0x42')](_0x1637dc['serverUrl']);if(_0x1b6126&&_0x1b6126[_0xf326('0x44')]){logger[_0xf326('0xb')](_0xf326('0x45'),_0xf326('0x46'));_0x361776[_0xf326('0x47')]=util['format']('%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s',_0x1637dc[_0xf326('0x43')],_0x361776[_0xf326('0x48')],md5(_0x361776['uniqueid']));}else{_0x361776['recordingURL']='';}headers[_0xf326('0x49')]=getAuth(_0x1637dc);return getUser(_0x1637dc,_0x50d63f[_0xf326('0x4a')])[_0xf326('0xe')](function(_0x5b3705){_0x2ed1a7=_0x5b3705;logger[_0xf326('0xb')](_0xf326('0x4b'),_0x2ed1a7['id']);return getEndUser(_0x1637dc,_0x361776[_0xf326('0x4c')],_0x361776[_0xf326('0x4d')]);})[_0xf326('0xe')](function(_0x2d9bba){_0x270288=_0x2d9bba;logger[_0xf326('0xb')](_0xf326('0x4e'),_0x270288['id']);return getTicket(_0x1637dc,_0x2ed1a7,_0x270288,_0x2bab13,_0x361776);})[_0xf326('0xe')](function(_0x27ced1){if(_0x27ced1){logger[_0xf326('0xb')](_0xf326('0x4f'));logger[_0xf326('0xb')](_0xf326('0x50'),_0x27ced1['id']);switch(_0x1637dc[_0xf326('0x2a')]){case'integrationTab':logger[_0xf326('0xb')](_0xf326('0x45'),_0xf326('0x51'));emit(util[_0xf326('0x13')]('user:%s',_0x50d63f[_0xf326('0x36')]),_0xf326('0x52'),{'recordId':_0x27ced1['id']});break;case _0xf326('0x53'):logger[_0xf326('0xb')]('[QUEUE]',_0xf326('0x54'));emit(util[_0xf326('0x13')](_0xf326('0x55'),_0x50d63f[_0xf326('0x36')]),_0xf326('0x56'),{'uri':util['format']('https://xcally.desk.com/web/agent/case/%d',_0x27ced1['id'])});break;default:logger[_0xf326('0x57')](_0xf326('0x45'),_0xf326('0x58'));}}})['catch'](function(_0x102fba){console[_0xf326('0x57')](_0x102fba);logger[_0xf326('0x57')]('[QUEUE]',JSON['stringify'](_0x102fba));});};exports[_0xf326('0x59')]=function(_0x5b4832,_0x1cf58f,_0x554277,_0x458e5f,_0x7ee57,_0x28c959,_0x25e091){var _0x212594,_0x35d3c8;_0x28c959[_0xf326('0x16')]=intUtil['stripTrailingSlash'](_0x28c959[_0xf326('0x16')]);_0x28c959[_0xf326('0x43')]=intUtil[_0xf326('0x42')](_0x28c959['serverUrl']);if(_0x25e091&&_0x25e091[_0xf326('0x5a')]&&_0x25e091[_0xf326('0x5a')]!==_0xf326('0x5b')){logger[_0xf326('0xb')](_0xf326('0x5c'),'Recording\x20is\x20enabled!');_0x1cf58f[_0xf326('0x47')]=util[_0xf326('0x13')](_0xf326('0x5d'),_0x28c959[_0xf326('0x43')],_0x1cf58f['uniqueid'],md5(_0x1cf58f[_0xf326('0x48')]));}headers[_0xf326('0x49')]=getAuth(_0x28c959);return getUser(_0x28c959,_0x458e5f[_0xf326('0x4a')])[_0xf326('0xe')](function(_0x4d3b9e){_0x212594=_0x4d3b9e;logger['info'](_0xf326('0x4b'),_0x212594['id']);return getEndUser(_0x28c959,_0x1cf58f[_0xf326('0x5e')],_0x1cf58f['destcalleridnum']);})[_0xf326('0xe')](function(_0x29de71){_0x35d3c8=_0x29de71;logger[_0xf326('0xb')](_0xf326('0x4e'),_0x35d3c8['id']);return getTicket(_0x28c959,_0x212594,_0x35d3c8,_0x554277,_0x1cf58f);})['then'](function(_0xb1c18c){if(_0xb1c18c){logger['info']('Ticket\x20created!');logger[_0xf326('0xb')]('The\x20Ticket\x20ID\x20is:',_0xb1c18c['id']);switch(_0x28c959[_0xf326('0x2a')]){case _0xf326('0x5f'):logger[_0xf326('0xb')]('[QUEUE]','Displaying\x20ticket\x20to\x20agent...');emit(util[_0xf326('0x13')](_0xf326('0x55'),_0x458e5f[_0xf326('0x36')]),'trigger:desk:display',{'recordId':_0xb1c18c['id']});break;case _0xf326('0x53'):logger['info'](_0xf326('0x45'),_0xf326('0x54'));emit(util[_0xf326('0x13')](_0xf326('0x55'),_0x458e5f[_0xf326('0x36')]),_0xf326('0x56'),{'uri':util[_0xf326('0x13')](_0xf326('0x60'),_0x28c959[_0xf326('0x16')],_0xb1c18c['id'])});break;default:logger[_0xf326('0x57')](_0xf326('0x5c'),_0xf326('0x58'));}}})[_0xf326('0x61')](function(_0x4ca1b8){logger[_0xf326('0x57')]('[OUTBOUND]',JSON[_0xf326('0x62')](_0x4ca1b8));});};exports[_0xf326('0x63')]=function(_0x5e858d,_0x2b770c,_0x5283da,_0x3255b2,_0xd55246,_0x28f3cb){var _0x2d45c9,_0x31b6dd;_0x28f3cb['remoteUri']=intUtil['stripTrailingSlash'](_0x28f3cb[_0xf326('0x16')]);_0x28f3cb[_0xf326('0x43')]=intUtil[_0xf326('0x42')](_0x28f3cb[_0xf326('0x43')]);if(_0xd55246&&_0xd55246[_0xf326('0x44')]){logger['info']('['+_0x2b770c[_0xf326('0x64')][_0xf326('0x65')]()+']','Recording\x20is\x20enabled!');_0x2b770c['recordingURL']=util['format'](_0xf326('0x5d'),_0x28f3cb[_0xf326('0x43')],_0x2b770c[_0xf326('0x48')],md5(_0x2b770c[_0xf326('0x48')]));}else{_0x2b770c[_0xf326('0x47')]='';}headers[_0xf326('0x49')]=getAuth(_0x28f3cb);return getUser(_0x28f3cb)[_0xf326('0xe')](function(_0x4b9013){_0x2d45c9=_0x4b9013;logger[_0xf326('0xb')](_0xf326('0x4b'),_0x2d45c9['id']);return getEndUser(_0x28f3cb,_0x2b770c[_0xf326('0x4c')],_0x2b770c[_0xf326('0x4d')]);})['then'](function(_0x3717fe){_0x31b6dd=_0x3717fe;logger['info']('The\x20Enduser\x20ID\x20is:',_0x31b6dd['id']);return getTicket(_0x28f3cb,_0x2d45c9,_0x31b6dd,_0x5283da,_0x2b770c);})[_0xf326('0xe')](function(_0x540fa0){if(_0x540fa0){logger[_0xf326('0xb')](_0xf326('0x4f'));logger[_0xf326('0xb')](_0xf326('0x50'),_0x540fa0['id']);}})[_0xf326('0x61')](function(_0x541491){logger['error']('['+_0x2b770c['lastevent'][_0xf326('0x65')]()+']',JSON[_0xf326('0x62')](_0x541491));});};
\ No newline at end of file
index 64a992d..86fa2d2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x318e=['type','customField','idField','substring','indexOf','content','ticketType','assign','getString','/contacts(','Fields','phonecall','phonecalls','Subjects','Descriptions','callDirection','queue','odata-entityid','ticketId','format','%s/main.aspx?pagetype=entityrecord&etn=%s&id=%s','user:%s','trigger:browser:url','stripTrailingSlash','serverUrl','%s/api/data/v9.0/','https://login.microsoftonline.com/%s/oauth2/token','tenantId','%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s','uniqueid','monitor_format','Recording\x20is\x20enabled!','recordingFormat','none','[OUTBOUND]','recordingURL',']\x20The\x20User\x20ID\x20is:',']\x20The\x20User\x20email\x20is:',']\x20The\x20Enduser\x20ID\x20is:',']\x20The\x20Enduser\x20phone\x20is:',']\x20The\x20%s\x20ID\x20is:\x20%s',']\x20Call\x20direction:\x20%s',']\x20Error\x20running\x20Dynamics365\x20integration','inspect','lodash','bluebird','request-promise','md5','ioredis','dynamics365','../../../../config/environment','redis','defaults','localhost','socket.io-emitter','POST','clientId','remoteUri','username','password','clientSecret','then','error','toUpperCase',']\x20Wrong\x20credentials!','message','systemusers?$select=internalemailaddress,isdisabled,systemuserid','value','isNil','validateEmail','userEmail','email','length','isdisabled','info',']\x20Agent\x20found\x20','systemuserid',']\x20Agent\x20not\x20found,\x20using\x20the\x20admin\x20account!','internalemailaddress','catch','toLowerCase','destcalleridnum','calleridnum','contacts','/systemusers(','userId','Bearer\x20','4.0','headers','lastIndexOf','enduserId','outbound','GET','contacts?$select=telephone1&$filter=telephone1\x20eq\x20\x27','%2b','telephone1',']\x20Enduser\x20created!','forEach','string','picklist'];(function(_0x503c5e,_0x58687b){var _0x1a11ac=function(_0xcf57eb){while(--_0xcf57eb){_0x503c5e['push'](_0x503c5e['shift']());}};_0x1a11ac(++_0x58687b);}(_0x318e,0x1bc));var _0xe318=function(_0x19ee25,_0x30bd55){_0x19ee25=_0x19ee25-0x0;var _0xae04d1=_0x318e[_0x19ee25];return _0xae04d1;};'use strict';var _=require(_0xe318('0x0'));var BPromise=require(_0xe318('0x1'));var rp=require(_0xe318('0x2'));var util=require('util');var intUtil=require('./util');var md5=require(_0xe318('0x3'));var Redis=require(_0xe318('0x4'));var logger=require('../../../../config/logger')(_0xe318('0x5'));var config=require(_0xe318('0x6'));config[_0xe318('0x7')]=_[_0xe318('0x8')](config['redis'],{'host':_0xe318('0x9'),'port':0x18eb});var io=require(_0xe318('0xa'))(new Redis(config['redis']));function getAuthToken(_0x3b219e,_0x23599d,_0x45f0ee){var _0x5e8ce6={'method':_0xe318('0xb'),'uri':_0x23599d,'form':{'client_id':_0x3b219e[_0xe318('0xc')],'resource':_0x3b219e[_0xe318('0xd')],'username':_0x3b219e[_0xe318('0xe')],'password':_0x3b219e['password'],'grant_type':_0xe318('0xf'),'client_secret':_0x3b219e[_0xe318('0x10')]},'json':!![]};return rp(_0x5e8ce6)[_0xe318('0x11')](function(_0x55d037){return _0x55d037['access_token'];})['catch'](function(_0x1c4166){logger[_0xe318('0x12')]('['+[_0x45f0ee[_0xe318('0x13')]()]+_0xe318('0x14'));return _0x1c4166[_0xe318('0x15')];});}function getUser(_0x1cfec1,_0x57b06b,_0x165812,_0x199bc9,_0x477f1e,_0x3b4a73){return new BPromise(function(_0x109dfb,_0x1f940c){return getAuthToken(_0x57b06b,_0x199bc9,_0x3b4a73)[_0xe318('0x11')](function(_0x37727c){var _0x2b72a7={'method':'GET','uri':_0x477f1e+_0xe318('0x16'),'headers':{'Authorization':'Bearer\x20'+_0x37727c,'OData-Version':'4.0'},'json':!![]};return rp(_0x2b72a7);})[_0xe318('0x11')](function(_0x11abb1){var _0x348276=_0x11abb1[_0xe318('0x17')];var _0x348a58=![];var _0x2b841b=null;if(!_[_0xe318('0x18')](_0x165812)){if(intUtil[_0xe318('0x19')](_0x165812['email'])){_0x1cfec1[_0xe318('0x1a')]=_0x165812[_0xe318('0x1b')];for(_0x2b841b=0x0;_0x2b841b<_0x348276[_0xe318('0x1c')];_0x2b841b++){if(_0x348276[_0x2b841b]['internalemailaddress']===_0x165812['email']&&!_0x348276[_0x2b841b][_0xe318('0x1d')]){_0x348a58=!![];logger[_0xe318('0x1e')]('['+[_0x3b4a73[_0xe318('0x13')]()]+_0xe318('0x1f')+_0x348276[_0x2b841b][_0xe318('0x20')]+'!');_0x1cfec1['userId']=_0x348276[_0x2b841b][_0xe318('0x20')];}}}}if(!_0x348a58){logger[_0xe318('0x1e')]('['+[_0x3b4a73[_0xe318('0x13')]()]+_0xe318('0x21'));_0x1cfec1[_0xe318('0x1a')]=_0x57b06b[_0xe318('0xe')];for(_0x2b841b=0x0;_0x2b841b<_0x348276[_0xe318('0x1c')];_0x2b841b++){if(_0x348276[_0x2b841b][_0xe318('0x22')]===_0x57b06b['username']){_0x1cfec1['userId']=_0x348276[_0x2b841b]['systemuserid'];}}}_0x109dfb(_0x1cfec1);})[_0xe318('0x23')](function(_0x498b2a){_0x1f940c(_0x498b2a[_0xe318('0x15')]);});});}function createEndUser(_0x555a68,_0x130856,_0x52a75d,_0x478401,_0x3effd5,_0x18de12){return new BPromise(function(_0x1a3f7f,_0x2357cf){return getAuthToken(_0x130856,_0x52a75d,_0x18de12)[_0xe318('0x11')](function(_0x4e13b3){var _0x38cf02=_0x18de12[_0xe318('0x24')]()==='outbound'?_0x3effd5[_0xe318('0x25')]:_0x3effd5[_0xe318('0x26')];var _0x2695e9={'method':'POST','uri':_0x478401+_0xe318('0x27'),'body':{'telephone1':_0x38cf02,'fullname':_0x38cf02,'firstname':_0x38cf02,'lastname':'_','mobilephone':null,'address1_telephone1':null,'ownerid@odata.bind':_0xe318('0x28')+_0x555a68[_0xe318('0x29')]+')'},'headers':{'Authorization':_0xe318('0x2a')+_0x4e13b3,'OData-Version':_0xe318('0x2b')},'json':!![],'resolveWithFullResponse':!![]};return rp(_0x2695e9);})[_0xe318('0x11')](function(_0x72024f){var _0x8f2b4=_0x72024f[_0xe318('0x2c')]['odata-entityid'];var _0x328652=_0x8f2b4['substring'](_0x8f2b4[_0xe318('0x2d')]('(')+0x1,_0x8f2b4[_0xe318('0x2d')](')'));_0x555a68[_0xe318('0x2e')]=_0x328652;_0x1a3f7f(_0x555a68);})[_0xe318('0x23')](function(_0x500a4e){_0x2357cf(_0x500a4e[_0xe318('0x15')]);});});}function getEndUser(_0x448f33,_0x2b8e2c,_0x269b76,_0x4a53f5,_0x434252,_0x24b6ab){return new BPromise(function(_0x404541,_0x475996){var _0x415d8f=_0x24b6ab[_0xe318('0x24')]()===_0xe318('0x2f')?_0x434252[_0xe318('0x25')]:_0x434252['calleridnum'];return getAuthToken(_0x2b8e2c,_0x269b76,_0x24b6ab)[_0xe318('0x11')](function(_0x2ed53b){var _0x2a0e60={'method':_0xe318('0x30'),'uri':_0x4a53f5+_0xe318('0x31')+_0x415d8f['replace']('+',_0xe318('0x32'))+'\x27','headers':{'Authorization':_0xe318('0x2a')+_0x2ed53b,'If-None-Match':null,'OData-Version':_0xe318('0x2b')},'json':!![]};return rp(_0x2a0e60);})[_0xe318('0x11')](function(_0x16c7df){var _0x4ef1e8=null;if(_0x16c7df){var _0x3826cc=_0x16c7df[_0xe318('0x17')];var _0x2a3418=![];for(_0x4ef1e8=0x0;_0x4ef1e8<_0x3826cc[_0xe318('0x1c')];_0x4ef1e8++){if(_0x3826cc[_0x4ef1e8][_0xe318('0x33')]===_0x415d8f){_0x2a3418=!![];_0x448f33[_0xe318('0x2e')]=_0x3826cc[_0x4ef1e8]['contactid'];}}if(_0x2a3418){_0x404541(_0x448f33);}else{return createEndUser(_0x448f33,_0x2b8e2c,_0x269b76,_0x4a53f5,_0x434252,_0x24b6ab)['then'](function(_0x22a9ea){logger[_0xe318('0x1e')]('['+[_0x24b6ab['toUpperCase']()]+_0xe318('0x34'),_0x22a9ea[_0xe318('0x2e')]);_0x404541(_0x22a9ea);});}}else{return createEndUser(_0x448f33,_0x2b8e2c,_0x269b76,_0x4a53f5,_0x434252,_0x24b6ab)[_0xe318('0x11')](function(_0x70b81f){logger['info']('['+[_0x24b6ab[_0xe318('0x13')]()]+']\x20Enduser\x20Created!',_0x70b81f['enduserId']);_0x404541(_0x70b81f);});}});});}function getCustomFields(_0x1b5f2a,_0x572852,_0x8318bc){var _0x49e547={};if(_0x1b5f2a[_0xe318('0x1c')]>0x0){_[_0xe318('0x35')](_0x1b5f2a,function(_0x2df8ba){if(_['includes']([_0xe318('0x36'),_0xe318('0x37')],_0x2df8ba[_0xe318('0x38')])&&_0x2df8ba['nameField']&&!_0x2df8ba[_0xe318('0x39')]){var _0x3fb42e=_0x2df8ba[_0xe318('0x3a')][_0xe318('0x24')]();var _0x40b6ad=_0x3fb42e[_0xe318('0x3b')](0x0,_0x3fb42e['indexOf']('_'));var _0x4a0748=_0x3fb42e['substring'](_0x3fb42e[_0xe318('0x3c')]('_')+0x1);if(_0x40b6ad===_0x8318bc){_0x49e547[_0x4a0748]=_0x2df8ba[_0xe318('0x3d')];}}});}return _0x49e547;}function getTicket(_0x369b1b,_0x306758,_0x3d9bbc,_0x48a972,_0x4f42e3,_0x432cc0,_0x41a0cc){return new BPromise(function(_0x51be26,_0x398a2c){var _0x168591;return getAuthToken(_0x306758,_0x3d9bbc,_0x41a0cc)[_0xe318('0x11')](function(_0x4faa1d){if(_0x432cc0[_0xe318('0x3e')]==='incident'){_0x168591={'method':'POST','uri':_0x48a972+'incidents','body':Object[_0xe318('0x3f')]({},{'title':intUtil[_0xe318('0x40')](_0x432cc0['Subjects'],_0x4f42e3,'\x20'),'description':intUtil[_0xe318('0x40')](_0x432cc0['Descriptions'],_0x4f42e3,'\x0a'),'customerid_contact@odata.bind':_0xe318('0x41')+_0x369b1b[_0xe318('0x2e')]+')','ownerid@odata.bind':_0xe318('0x28')+_0x369b1b[_0xe318('0x29')]+')','caseorigincode':'1'},getCustomFields(_0x432cc0[_0xe318('0x42')],_0x4f42e3,_0x432cc0['ticketType'])),'headers':{'Authorization':_0xe318('0x2a')+_0x4faa1d,'OData-Version':_0xe318('0x2b')},'json':!![],'resolveWithFullResponse':!![]};}if(_0x432cc0['ticketType']===_0xe318('0x43')){_0x168591={'method':'POST','uri':_0x48a972+_0xe318('0x44'),'body':Object[_0xe318('0x3f')]({},{'subject':intUtil[_0xe318('0x40')](_0x432cc0[_0xe318('0x45')],_0x4f42e3,'\x20'),'phonenumber':String(_0x4f42e3[_0xe318('0x26')]),'description':intUtil[_0xe318('0x40')](_0x432cc0[_0xe318('0x46')],_0x4f42e3,'\x0a'),'regardingobjectid_contact@odata.bind':'/contacts('+_0x369b1b[_0xe318('0x2e')]+')','ownerid@odata.bind':_0xe318('0x28')+_0x369b1b[_0xe318('0x29')]+')','directioncode':_0x369b1b[_0xe318('0x47')]===_0xe318('0x48')?![]:!![],'phonecall_activity_parties':[{'partyid_systemuser@odata.bind':_0xe318('0x28')+_0x369b1b['userId']+')','participationtypemask':_0x369b1b[_0xe318('0x47')]==='queue'?0x2:0x1},{'partyid_contact@odata.bind':_0xe318('0x41')+_0x369b1b[_0xe318('0x2e')]+')','participationtypemask':_0x369b1b[_0xe318('0x47')]==='queue'?0x1:0x2}]},getCustomFields(_0x432cc0[_0xe318('0x42')],_0x4f42e3,_0x432cc0[_0xe318('0x3e')])),'headers':{'Authorization':_0xe318('0x2a')+_0x4faa1d,'OData-Version':_0xe318('0x2b')},'json':!![],'resolveWithFullResponse':!![]};}return rp(_0x168591);})[_0xe318('0x11')](function(_0x175dd2){var _0x342ea1=_0x175dd2[_0xe318('0x2c')][_0xe318('0x49')];var _0x2e3bd7=_0x342ea1[_0xe318('0x3b')](_0x342ea1[_0xe318('0x2d')]('(')+0x1,_0x342ea1['lastIndexOf'](')'));_0x369b1b[_0xe318('0x4a')]=_0x2e3bd7;_0x51be26(_0x369b1b);})['catch'](function(_0x1fcace){_0x398a2c(_0x1fcace[_0xe318('0x15')]);});});}function emit(_0x21233a,_0x19b6db,_0x47fc4e,_0x235a41){var _0x5f246f={'uri':util[_0xe318('0x4b')](_0xe318('0x4c'),_0x21233a,_0x47fc4e,_0x235a41)};io['to'](util['format'](_0xe318('0x4d'),_0x19b6db))['emit'](_0xe318('0x4e'),_0x5f246f);}exports['cs']=function(_0xb5130e,_0x5ebd7c,_0x417d7f,_0x4be2de,_0x57694e,_0x2558c6,_0x221858,_0x15e0ce){var _0x26cdd6={};_0x2558c6['remoteUri']=intUtil[_0xe318('0x4f')](_0x2558c6[_0xe318('0xd')]);_0x2558c6['serverUrl']=intUtil[_0xe318('0x4f')](_0x2558c6[_0xe318('0x50')]);_0x26cdd6[_0xe318('0x47')]=_0x15e0ce===_0xe318('0x48')||_0x15e0ce==='unmanaged'?_0xe318('0x48'):_0xe318('0x2f');var _0x56b1d0=util[_0xe318('0x4b')](_0xe318('0x51'),_0x2558c6[_0xe318('0xd')]);var _0x477c3f=util[_0xe318('0x4b')](_0xe318('0x52'),_0x2558c6[_0xe318('0x53')]);var _0x3c8067=util[_0xe318('0x4b')](_0xe318('0x54'),_0x2558c6[_0xe318('0x50')],_0x5ebd7c[_0xe318('0x55')],md5(_0x5ebd7c['uniqueid']));if(_0x57694e&&_0x57694e[_0xe318('0x56')]){logger['info']('[QUEUE]',_0xe318('0x57'));_0x5ebd7c['recordingURL']=_0x3c8067;}else if(_0x221858&&_0x221858[_0xe318('0x58')]&&_0x221858[_0xe318('0x58')]!==_0xe318('0x59')){logger[_0xe318('0x1e')](_0xe318('0x5a'),'Recording\x20is\x20enabled!');_0x5ebd7c[_0xe318('0x5b')]=_0x3c8067;}else{_0x5ebd7c['recordingURL']='';}return getUser(_0x26cdd6,_0x2558c6,_0x4be2de,_0x477c3f,_0x56b1d0,_0x15e0ce)[_0xe318('0x11')](function(_0xdb7b9d){logger[_0xe318('0x1e')]('['+_0x15e0ce[_0xe318('0x13')]()+_0xe318('0x5c'),_0xdb7b9d[_0xe318('0x29')]);logger[_0xe318('0x1e')]('['+_0x15e0ce[_0xe318('0x13')]()+_0xe318('0x5d'),_0xdb7b9d[_0xe318('0x1a')]);return getEndUser(_0xdb7b9d,_0x2558c6,_0x477c3f,_0x56b1d0,_0x5ebd7c,_0x15e0ce);})[_0xe318('0x11')](function(_0x22ae07){logger[_0xe318('0x1e')]('['+_0x15e0ce['toUpperCase']()+_0xe318('0x5e'),_0x22ae07[_0xe318('0x2e')]);logger[_0xe318('0x1e')]('['+_0x15e0ce[_0xe318('0x13')]()+_0xe318('0x5f'),_0x5ebd7c[_0xe318('0x26')]);return getTicket(_0x22ae07,_0x2558c6,_0x477c3f,_0x56b1d0,_0x5ebd7c,_0x417d7f,_0x15e0ce);})[_0xe318('0x11')](function(_0x36aa58){logger['info'](util['format']('['+_0x15e0ce[_0xe318('0x13')]()+_0xe318('0x60'),_0x417d7f['ticketType'],_0x36aa58[_0xe318('0x4a')]));logger[_0xe318('0x1e')](util[_0xe318('0x4b')]('['+_0x15e0ce['toUpperCase']()+_0xe318('0x61'),_0x15e0ce));if(_0x15e0ce!=='unmanaged'){logger[_0xe318('0x1e')]('['+_0x15e0ce[_0xe318('0x13')]()+']','Displaying\x20call\x20in\x20a\x20new\x20tab...');emit(_0x2558c6[_0xe318('0xd')],_0x4be2de['name'],_0x417d7f[_0xe318('0x3e')],_0x36aa58[_0xe318('0x4a')]);}})['catch'](function(_0x269cae){logger['error']('['+_0x15e0ce[_0xe318('0x13')]()+_0xe318('0x62'),util[_0xe318('0x63')](_0x269cae,{'showHidden':!![],'depth':null}));});};
\ No newline at end of file
+var _0x1955=['defaults','redis','localhost','POST','clientId','remoteUri','username','password','clientSecret','then','access_token','catch','error',']\x20Wrong\x20credentials!','GET','systemusers?$select=internalemailaddress,isdisabled,systemuserid','Bearer\x20','4.0','value','isNil','email','length','internalemailaddress','isdisabled','info',']\x20Agent\x20found\x20','systemuserid','userId','toUpperCase','userEmail','toLowerCase','outbound','destcalleridnum','calleridnum','contacts','/systemusers(','headers','odata-entityid','substring','lastIndexOf','message','contacts?$select=telephone1&$filter=telephone1\x20eq\x20\x27','replace','%2b','telephone1','forEach','includes','string','picklist','type','nameField','customField','idField','indexOf','content','incidents','getString','Subjects','Descriptions','/contacts(','enduserId','ticketType','phonecall','phonecalls','assign','callDirection','queue','Fields','ticketId','format','user:%s','emit','trigger:browser:url','stripTrailingSlash','serverUrl','unmanaged','https://login.microsoftonline.com/%s/oauth2/token','tenantId','uniqueid','monitor_format','[QUEUE]','recordingURL','recordingFormat','none','Recording\x20is\x20enabled!',']\x20The\x20User\x20email\x20is:',']\x20The\x20Enduser\x20ID\x20is:',']\x20The\x20Enduser\x20phone\x20is:',']\x20The\x20%s\x20ID\x20is:\x20%s',']\x20Call\x20direction:\x20%s',']\x20Error\x20running\x20Dynamics365\x20integration','inspect','bluebird','request-promise','./util','md5','ioredis','../../../../config/logger','dynamics365','../../../../config/environment'];(function(_0x359220,_0x46c310){var _0x240d9d=function(_0x551ce6){while(--_0x551ce6){_0x359220['push'](_0x359220['shift']());}};_0x240d9d(++_0x46c310);}(_0x1955,0xc0));var _0x5195=function(_0x46e363,_0x45d7e2){_0x46e363=_0x46e363-0x0;var _0x3fb059=_0x1955[_0x46e363];return _0x3fb059;};'use strict';var _=require('lodash');var BPromise=require(_0x5195('0x0'));var rp=require(_0x5195('0x1'));var util=require('util');var intUtil=require(_0x5195('0x2'));var md5=require(_0x5195('0x3'));var Redis=require(_0x5195('0x4'));var logger=require(_0x5195('0x5'))(_0x5195('0x6'));var config=require(_0x5195('0x7'));config['redis']=_[_0x5195('0x8')](config[_0x5195('0x9')],{'host':_0x5195('0xa'),'port':0x18eb});var io=require('socket.io-emitter')(new Redis(config['redis']));function getAuthToken(_0xc1bf6a,_0x17ba22,_0x4f77d8){var _0x19204b={'method':_0x5195('0xb'),'uri':_0x17ba22,'form':{'client_id':_0xc1bf6a[_0x5195('0xc')],'resource':_0xc1bf6a[_0x5195('0xd')],'username':_0xc1bf6a[_0x5195('0xe')],'password':_0xc1bf6a[_0x5195('0xf')],'grant_type':_0x5195('0xf'),'client_secret':_0xc1bf6a[_0x5195('0x10')]},'json':!![]};return rp(_0x19204b)[_0x5195('0x11')](function(_0xa4d66){return _0xa4d66[_0x5195('0x12')];})[_0x5195('0x13')](function(_0x5847f5){logger[_0x5195('0x14')]('['+[_0x4f77d8['toUpperCase']()]+_0x5195('0x15'));return _0x5847f5['message'];});}function getUser(_0xd89e70,_0xc67ef,_0x5d99e5,_0x48e06a,_0x24ee60,_0x4cd9be){return new BPromise(function(_0x1caa58,_0x556e1d){return getAuthToken(_0xc67ef,_0x48e06a,_0x4cd9be)['then'](function(_0x22e848){var _0x447eb0={'method':_0x5195('0x16'),'uri':_0x24ee60+_0x5195('0x17'),'headers':{'Authorization':_0x5195('0x18')+_0x22e848,'OData-Version':_0x5195('0x19')},'json':!![]};return rp(_0x447eb0);})[_0x5195('0x11')](function(_0x3aaa92){var _0x267caa=_0x3aaa92[_0x5195('0x1a')];var _0x4c6570=![];var _0x5b7840=null;if(!_[_0x5195('0x1b')](_0x5d99e5)){if(intUtil['validateEmail'](_0x5d99e5[_0x5195('0x1c')])){_0xd89e70['userEmail']=_0x5d99e5[_0x5195('0x1c')];for(_0x5b7840=0x0;_0x5b7840<_0x267caa[_0x5195('0x1d')];_0x5b7840++){if(_0x267caa[_0x5b7840][_0x5195('0x1e')]===_0x5d99e5[_0x5195('0x1c')]&&!_0x267caa[_0x5b7840][_0x5195('0x1f')]){_0x4c6570=!![];logger[_0x5195('0x20')]('['+[_0x4cd9be['toUpperCase']()]+_0x5195('0x21')+_0x267caa[_0x5b7840][_0x5195('0x22')]+'!');_0xd89e70[_0x5195('0x23')]=_0x267caa[_0x5b7840]['systemuserid'];}}}}if(!_0x4c6570){logger[_0x5195('0x20')]('['+[_0x4cd9be[_0x5195('0x24')]()]+']\x20Agent\x20not\x20found,\x20using\x20the\x20admin\x20account!');_0xd89e70[_0x5195('0x25')]=_0xc67ef[_0x5195('0xe')];for(_0x5b7840=0x0;_0x5b7840<_0x267caa[_0x5195('0x1d')];_0x5b7840++){if(_0x267caa[_0x5b7840][_0x5195('0x1e')]===_0xc67ef[_0x5195('0xe')]){_0xd89e70[_0x5195('0x23')]=_0x267caa[_0x5b7840][_0x5195('0x22')];}}}_0x1caa58(_0xd89e70);})['catch'](function(_0x56e7e1){_0x556e1d(_0x56e7e1['message']);});});}function createEndUser(_0x35e98d,_0x2aca59,_0x56e218,_0x5edbec,_0x3a4adb,_0x29d748){return new BPromise(function(_0x29a0b4,_0x441e58){return getAuthToken(_0x2aca59,_0x56e218,_0x29d748)[_0x5195('0x11')](function(_0x32acbc){var _0xd2c7e7=_0x29d748[_0x5195('0x26')]()===_0x5195('0x27')?_0x3a4adb[_0x5195('0x28')]:_0x3a4adb[_0x5195('0x29')];var _0xb3b1ca={'method':'POST','uri':_0x5edbec+_0x5195('0x2a'),'body':{'telephone1':_0xd2c7e7,'fullname':_0xd2c7e7,'firstname':_0xd2c7e7,'lastname':'_','mobilephone':null,'address1_telephone1':null,'ownerid@odata.bind':_0x5195('0x2b')+_0x35e98d[_0x5195('0x23')]+')'},'headers':{'Authorization':_0x5195('0x18')+_0x32acbc,'OData-Version':_0x5195('0x19')},'json':!![],'resolveWithFullResponse':!![]};return rp(_0xb3b1ca);})['then'](function(_0x5ac813){var _0xd87aba=_0x5ac813[_0x5195('0x2c')][_0x5195('0x2d')];var _0xd3e341=_0xd87aba[_0x5195('0x2e')](_0xd87aba['lastIndexOf']('(')+0x1,_0xd87aba[_0x5195('0x2f')](')'));_0x35e98d['enduserId']=_0xd3e341;_0x29a0b4(_0x35e98d);})[_0x5195('0x13')](function(_0x342c){_0x441e58(_0x342c[_0x5195('0x30')]);});});}function getEndUser(_0x437d38,_0x24a92e,_0x5b46ad,_0x15e695,_0x385103,_0x15a213){return new BPromise(function(_0x2847be,_0x2c45fe){var _0xb2fbfd=_0x15a213['toLowerCase']()==='outbound'?_0x385103[_0x5195('0x28')]:_0x385103[_0x5195('0x29')];return getAuthToken(_0x24a92e,_0x5b46ad,_0x15a213)[_0x5195('0x11')](function(_0x3a13d8){var _0x2b637d={'method':'GET','uri':_0x15e695+_0x5195('0x31')+_0xb2fbfd[_0x5195('0x32')]('+',_0x5195('0x33'))+'\x27','headers':{'Authorization':_0x5195('0x18')+_0x3a13d8,'If-None-Match':null,'OData-Version':_0x5195('0x19')},'json':!![]};return rp(_0x2b637d);})[_0x5195('0x11')](function(_0x1de4d9){var _0x5c05d0=null;if(_0x1de4d9){var _0x43dafc=_0x1de4d9[_0x5195('0x1a')];var _0x23f1ae=![];for(_0x5c05d0=0x0;_0x5c05d0<_0x43dafc['length'];_0x5c05d0++){if(_0x43dafc[_0x5c05d0][_0x5195('0x34')]===_0xb2fbfd){_0x23f1ae=!![];_0x437d38['enduserId']=_0x43dafc[_0x5c05d0]['contactid'];}}if(_0x23f1ae){_0x2847be(_0x437d38);}else{return createEndUser(_0x437d38,_0x24a92e,_0x5b46ad,_0x15e695,_0x385103,_0x15a213)[_0x5195('0x11')](function(_0x4e3fdf){logger['info']('['+[_0x15a213[_0x5195('0x24')]()]+']\x20Enduser\x20created!',_0x4e3fdf['enduserId']);_0x2847be(_0x4e3fdf);});}}else{return createEndUser(_0x437d38,_0x24a92e,_0x5b46ad,_0x15e695,_0x385103,_0x15a213)[_0x5195('0x11')](function(_0x255b01){logger['info']('['+[_0x15a213['toUpperCase']()]+']\x20Enduser\x20Created!',_0x255b01['enduserId']);_0x2847be(_0x255b01);});}});});}function getCustomFields(_0x12e326,_0x1b009f,_0xe3ee3c){var _0x35c67d={};if(_0x12e326[_0x5195('0x1d')]>0x0){_[_0x5195('0x35')](_0x12e326,function(_0x5d1753){if(_[_0x5195('0x36')]([_0x5195('0x37'),_0x5195('0x38')],_0x5d1753[_0x5195('0x39')])&&_0x5d1753[_0x5195('0x3a')]&&!_0x5d1753[_0x5195('0x3b')]){var _0x438fb5=_0x5d1753[_0x5195('0x3c')][_0x5195('0x26')]();var _0x15cd51=_0x438fb5[_0x5195('0x2e')](0x0,_0x438fb5['indexOf']('_'));var _0x147562=_0x438fb5[_0x5195('0x2e')](_0x438fb5[_0x5195('0x3d')]('_')+0x1);if(_0x15cd51===_0xe3ee3c){_0x35c67d[_0x147562]=_0x5d1753[_0x5195('0x3e')];}}});}return _0x35c67d;}function getTicket(_0x1a5e74,_0x1622e9,_0x3fc886,_0x5ec289,_0x59cdc2,_0xd79526,_0x1906e5){return new BPromise(function(_0x308310,_0x5b7e89){var _0x4cb470;return getAuthToken(_0x1622e9,_0x3fc886,_0x1906e5)[_0x5195('0x11')](function(_0x40632c){if(_0xd79526['ticketType']==='incident'){_0x4cb470={'method':_0x5195('0xb'),'uri':_0x5ec289+_0x5195('0x3f'),'body':Object['assign']({},{'title':intUtil[_0x5195('0x40')](_0xd79526[_0x5195('0x41')],_0x59cdc2,'\x20'),'description':intUtil[_0x5195('0x40')](_0xd79526[_0x5195('0x42')],_0x59cdc2,'\x0a'),'customerid_contact@odata.bind':_0x5195('0x43')+_0x1a5e74[_0x5195('0x44')]+')','ownerid@odata.bind':_0x5195('0x2b')+_0x1a5e74[_0x5195('0x23')]+')','caseorigincode':'1'},getCustomFields(_0xd79526['Fields'],_0x59cdc2,_0xd79526[_0x5195('0x45')])),'headers':{'Authorization':_0x5195('0x18')+_0x40632c,'OData-Version':_0x5195('0x19')},'json':!![],'resolveWithFullResponse':!![]};}if(_0xd79526[_0x5195('0x45')]===_0x5195('0x46')){_0x4cb470={'method':_0x5195('0xb'),'uri':_0x5ec289+_0x5195('0x47'),'body':Object[_0x5195('0x48')]({},{'subject':intUtil[_0x5195('0x40')](_0xd79526[_0x5195('0x41')],_0x59cdc2,'\x20'),'phonenumber':String(_0x59cdc2[_0x5195('0x29')]),'description':intUtil['getString'](_0xd79526[_0x5195('0x42')],_0x59cdc2,'\x0a'),'regardingobjectid_contact@odata.bind':'/contacts('+_0x1a5e74[_0x5195('0x44')]+')','ownerid@odata.bind':_0x5195('0x2b')+_0x1a5e74[_0x5195('0x23')]+')','directioncode':_0x1a5e74[_0x5195('0x49')]==='queue'?![]:!![],'phonecall_activity_parties':[{'partyid_systemuser@odata.bind':_0x5195('0x2b')+_0x1a5e74[_0x5195('0x23')]+')','participationtypemask':_0x1a5e74[_0x5195('0x49')]===_0x5195('0x4a')?0x2:0x1},{'partyid_contact@odata.bind':_0x5195('0x43')+_0x1a5e74[_0x5195('0x44')]+')','participationtypemask':_0x1a5e74['callDirection']===_0x5195('0x4a')?0x1:0x2}]},getCustomFields(_0xd79526[_0x5195('0x4b')],_0x59cdc2,_0xd79526[_0x5195('0x45')])),'headers':{'Authorization':_0x5195('0x18')+_0x40632c,'OData-Version':_0x5195('0x19')},'json':!![],'resolveWithFullResponse':!![]};}return rp(_0x4cb470);})[_0x5195('0x11')](function(_0x2a4408){var _0x377d20=_0x2a4408[_0x5195('0x2c')][_0x5195('0x2d')];var _0x561c93=_0x377d20['substring'](_0x377d20[_0x5195('0x2f')]('(')+0x1,_0x377d20[_0x5195('0x2f')](')'));_0x1a5e74[_0x5195('0x4c')]=_0x561c93;_0x308310(_0x1a5e74);})[_0x5195('0x13')](function(_0x4caf5b){_0x5b7e89(_0x4caf5b[_0x5195('0x30')]);});});}function emit(_0x46c7a5,_0x385ca2,_0x27276f,_0x22f356){var _0xb2eff3={'uri':util[_0x5195('0x4d')]('%s/main.aspx?pagetype=entityrecord&etn=%s&id=%s',_0x46c7a5,_0x27276f,_0x22f356)};io['to'](util[_0x5195('0x4d')](_0x5195('0x4e'),_0x385ca2))[_0x5195('0x4f')](_0x5195('0x50'),_0xb2eff3);}exports['cs']=function(_0x40dd58,_0x477284,_0x15b3a7,_0x1617da,_0x25291b,_0x27afed,_0x2c39ec,_0x28ac62){var _0x29a674={};_0x27afed[_0x5195('0xd')]=intUtil[_0x5195('0x51')](_0x27afed['remoteUri']);_0x27afed[_0x5195('0x52')]=intUtil[_0x5195('0x51')](_0x27afed[_0x5195('0x52')]);_0x29a674['callDirection']=_0x28ac62===_0x5195('0x4a')||_0x28ac62===_0x5195('0x53')?_0x5195('0x4a'):'outbound';var _0x360118=util[_0x5195('0x4d')]('%s/api/data/v9.0/',_0x27afed[_0x5195('0xd')]);var _0x518efd=util[_0x5195('0x4d')](_0x5195('0x54'),_0x27afed[_0x5195('0x55')]);var _0x57a4f5=util[_0x5195('0x4d')]('%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s',_0x27afed[_0x5195('0x52')],_0x477284[_0x5195('0x56')],md5(_0x477284[_0x5195('0x56')]));if(_0x25291b&&_0x25291b[_0x5195('0x57')]){logger[_0x5195('0x20')](_0x5195('0x58'),'Recording\x20is\x20enabled!');_0x477284[_0x5195('0x59')]=_0x57a4f5;}else if(_0x2c39ec&&_0x2c39ec[_0x5195('0x5a')]&&_0x2c39ec[_0x5195('0x5a')]!==_0x5195('0x5b')){logger[_0x5195('0x20')]('[OUTBOUND]',_0x5195('0x5c'));_0x477284[_0x5195('0x59')]=_0x57a4f5;}else{_0x477284['recordingURL']='';}return getUser(_0x29a674,_0x27afed,_0x1617da,_0x518efd,_0x360118,_0x28ac62)[_0x5195('0x11')](function(_0x5b8354){logger[_0x5195('0x20')]('['+_0x28ac62[_0x5195('0x24')]()+']\x20The\x20User\x20ID\x20is:',_0x5b8354['userId']);logger[_0x5195('0x20')]('['+_0x28ac62[_0x5195('0x24')]()+_0x5195('0x5d'),_0x5b8354[_0x5195('0x25')]);return getEndUser(_0x5b8354,_0x27afed,_0x518efd,_0x360118,_0x477284,_0x28ac62);})['then'](function(_0x49d99e){logger['info']('['+_0x28ac62[_0x5195('0x24')]()+_0x5195('0x5e'),_0x49d99e[_0x5195('0x44')]);logger[_0x5195('0x20')]('['+_0x28ac62[_0x5195('0x24')]()+_0x5195('0x5f'),_0x477284[_0x5195('0x29')]);return getTicket(_0x49d99e,_0x27afed,_0x518efd,_0x360118,_0x477284,_0x15b3a7,_0x28ac62);})[_0x5195('0x11')](function(_0x555138){logger[_0x5195('0x20')](util[_0x5195('0x4d')]('['+_0x28ac62['toUpperCase']()+_0x5195('0x60'),_0x15b3a7['ticketType'],_0x555138[_0x5195('0x4c')]));logger[_0x5195('0x20')](util['format']('['+_0x28ac62[_0x5195('0x24')]()+_0x5195('0x61'),_0x28ac62));if(_0x28ac62!=='unmanaged'){logger['info']('['+_0x28ac62[_0x5195('0x24')]()+']','Displaying\x20call\x20in\x20a\x20new\x20tab...');emit(_0x27afed[_0x5195('0xd')],_0x1617da['name'],_0x15b3a7[_0x5195('0x45')],_0x555138[_0x5195('0x4c')]);}})[_0x5195('0x13')](function(_0x2baddd){logger['error']('['+_0x28ac62['toUpperCase']()+_0x5195('0x62'),util[_0x5195('0x63')](_0x2baddd,{'showHidden':!![],'depth':null}));});};
\ No newline at end of file
index cec685e..46e1040 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7b4a=['destcalleridname','Displaying\x20ticket\x20to\x20agent\x20in\x20a\x20new\x20tab...','error','unmanaged','lastevent','lodash','md5','ioredis','./util','../../../../config/environment','../../../../config/logger','freshdesk','redis','defaults','localhost','application/json','emit','info','Creating\x20new\x20ticket...','merge','format','Caller\x20-\x20%s','calleridname','calleridnum','getString','Descriptions','<br>','name','mapValues','custom_fields','value','%s/api/v2/tickets','POST','then','%s/api/v2/agents','remoteUri','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','length','Enduser\x20found!','Enduser\x20not\x20found,\x20creating\x20a\x20new\x20enduser!','%s/api/v2/contacts','Enduser\x20created.','Basic\x20%s','toString','base64','debug','stringify','GET','map','forEach','includes','picklist','nameField','customField','toLowerCase','content','string','type','idField','push','variable','variableName','customVariable','Variable','queue','stripTrailingSlash','serverUrl','monitor_format','[QUEUE]','Recording\x20is\x20enabled!','recordingURL','%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s','uniqueid','Authorization','The\x20User\x20ID\x20is:','The\x20Enduser\x20ID\x20is:','Ticket\x20created!','The\x20Ticket\x20ID\x20is:','user:%s','trigger:browser:url','%s/helpdesk/tickets/%d','catch','outbound','none','[OUTBOUND]'];(function(_0x469a3c,_0x5ebc10){var _0x968f4=function(_0x22403b){while(--_0x22403b){_0x469a3c['push'](_0x469a3c['shift']());}};_0x968f4(++_0x5ebc10);}(_0x7b4a,0x119));var _0xa7b4=function(_0x3ef90f,_0x46f414){_0x3ef90f=_0x3ef90f-0x0;var _0x278fab=_0x7b4a[_0x3ef90f];return _0x278fab;};'use strict';var _=require(_0xa7b4('0x0'));var rp=require('request-promise');var md5=require(_0xa7b4('0x1'));var util=require('util');var Redis=require(_0xa7b4('0x2'));var intUtil=require(_0xa7b4('0x3'));var config=require(_0xa7b4('0x4'));var logger=require(_0xa7b4('0x5'))(_0xa7b4('0x6'));config[_0xa7b4('0x7')]=_[_0xa7b4('0x8')](config['redis'],{'host':_0xa7b4('0x9'),'port':0x18eb});var io=require('socket.io-emitter')(new Redis(config[_0xa7b4('0x7')]));var headers={'Content-Type':_0xa7b4('0xa'),'Accept':_0xa7b4('0xa')};function emit(_0xdf64c7,_0x39b77f,_0x5de540){io['to'](_0xdf64c7)[_0xa7b4('0xb')](_0x39b77f,_0x5de540);}function getTicket(_0x351b9f,_0x37ef6d,_0x155841,_0x303b6c,_0x4eaf10){logger[_0xa7b4('0xc')](_0xa7b4('0xd'));var _0x118ad3=_[_0xa7b4('0xe')]({'responder_id':_0x37ef6d['id'],'requester_id':_0x155841['id'],'name':util[_0xa7b4('0xf')](_0xa7b4('0x10'),_0x4eaf10[_0xa7b4('0x11')]),'phone':_0x4eaf10[_0xa7b4('0x12')],'source':0x3,'priority':0x1,'status':0x2,'subject':intUtil[_0xa7b4('0x13')](_0x303b6c['Subjects'],_0x4eaf10,'\x20'),'description':intUtil[_0xa7b4('0x13')](_0x303b6c[_0xa7b4('0x14')],_0x4eaf10,_0xa7b4('0x15')),'tags':getTags(_0x303b6c['Tags'],_0xa7b4('0x16'))},getCustomFields(_0x303b6c['Fields'],_0x4eaf10));_0x118ad3['custom_fields']=_[_0xa7b4('0x17')](_['keyBy'](_0x118ad3[_0xa7b4('0x18')],'id'),_0xa7b4('0x19'));return request({'uri':util[_0xa7b4('0xf')](_0xa7b4('0x1a'),_0x351b9f['remoteUri']),'method':_0xa7b4('0x1b'),'body':_0x118ad3})[_0xa7b4('0x1c')](function(_0xf724ad){logger[_0xa7b4('0xc')]('Ticket\x20created!');return _0xf724ad;});}function getUser(_0x75b69,_0x4342fe){if(intUtil['validateEmail'](_0x4342fe)){return request({'uri':util['format'](_0xa7b4('0x1d'),_0x75b69[_0xa7b4('0x1e')]),'qs':{'email':_0x4342fe}})['then'](function(_0x51c643){if(_0x51c643['length']){logger['info'](_0xa7b4('0x1f'));return _['find'](_0x51c643,function(_0x50391d){return _0x50391d[_0xa7b4('0x20')][_0xa7b4('0x21')]===_0x4342fe;});}else{logger[_0xa7b4('0xc')](_0xa7b4('0x22'));return request({'uri':util[_0xa7b4('0xf')](_0xa7b4('0x23'),_0x75b69['remoteUri'])})[_0xa7b4('0x1c')](function(_0x37ef85){logger[_0xa7b4('0xc')](_0xa7b4('0x24'));return _0x37ef85;});}});}else{logger[_0xa7b4('0xc')](_0xa7b4('0x25'));return request({'uri':util['format']('%s/api/v2/agents/me',_0x75b69[_0xa7b4('0x1e')])})['then'](function(_0x253956){logger[_0xa7b4('0xc')]('Admin\x20account\x20selected.');return _0x253956;});}}function getEndUser(_0x41dd60,_0x5ceadd,_0x38a895){logger[_0xa7b4('0xc')](_0xa7b4('0x26'),_0x38a895);return request({'uri':util[_0xa7b4('0xf')]('%s/api/v2/contacts',_0x41dd60[_0xa7b4('0x1e')]),'qs':{'phone':_0x38a895}})['then'](function(_0x2eb8e9){if(_0x2eb8e9[_0xa7b4('0x27')]){logger['info'](_0xa7b4('0x28'));return _['find'](_0x2eb8e9,{'phone':_0x38a895});}else{logger['info'](_0xa7b4('0x29'));return request({'uri':util[_0xa7b4('0xf')](_0xa7b4('0x2a'),_0x41dd60[_0xa7b4('0x1e')]),'method':_0xa7b4('0x1b'),'body':{'name':_0x5ceadd,'phone':_0x38a895}})[_0xa7b4('0x1c')](function(_0x2e618b){logger['info'](_0xa7b4('0x2b'));return _0x2e618b;});}});}function getAuth(_0x27cd23){return util['format'](_0xa7b4('0x2c'),new Buffer(_0x27cd23['apiKey']+':X')[_0xa7b4('0x2d')](_0xa7b4('0x2e')));}function request(_0x33352b){logger[_0xa7b4('0x2f')]('[HTTP]',JSON[_0xa7b4('0x30')](_0x33352b));return rp(_[_0xa7b4('0x8')](_0x33352b,{'method':_0xa7b4('0x31'),'headers':headers,'json':!![]}));}function getTags(_0xf444f6,_0x1b4232){var _0x577cf1=[];if(_0xf444f6&&_0xf444f6['length']>0x0){_0x577cf1=_[_0xa7b4('0x32')](_0xf444f6,_0x1b4232);}return _0x577cf1;}function getCustomFields(_0x2d015d,_0x32ae58){var _0x2f7fba=[];var _0x434ba9={'custom_fields':[]};if(_0x2d015d['length']>0x0){_[_0xa7b4('0x33')](_0x2d015d,function(_0x5e1a48){if(_[_0xa7b4('0x34')](['string',_0xa7b4('0x35')],_0x5e1a48['type'])&&_0x5e1a48[_0xa7b4('0x36')]&&!_0x5e1a48[_0xa7b4('0x37')]){_0x434ba9[_0x5e1a48[_0xa7b4('0x36')][_0xa7b4('0x38')]()]=_0x5e1a48[_0xa7b4('0x39')]['toString']();}else if(_[_0xa7b4('0x34')]([_0xa7b4('0x3a'),_0xa7b4('0x35')],_0x5e1a48[_0xa7b4('0x3b')])&&_0x5e1a48[_0xa7b4('0x3c')]&&_0x5e1a48[_0xa7b4('0x37')]){_0x434ba9['custom_fields'][_0xa7b4('0x3d')]({'id':_0x5e1a48[_0xa7b4('0x3c')],'value':_0x5e1a48[_0xa7b4('0x39')][_0xa7b4('0x2d')]()});}else if(_0x5e1a48[_0xa7b4('0x3b')]===_0xa7b4('0x3e')&&_0x5e1a48[_0xa7b4('0x3f')]&&_0x5e1a48[_0xa7b4('0x3c')]&&_0x5e1a48[_0xa7b4('0x37')]){_0x32ae58[_0x5e1a48['variableName']]&&_0x434ba9[_0xa7b4('0x18')][_0xa7b4('0x3d')]({'id':_0x5e1a48[_0xa7b4('0x3c')],'value':_0x32ae58[_0x5e1a48[_0xa7b4('0x3f')]][_0xa7b4('0x2d')]()});}else if(_0x5e1a48[_0xa7b4('0x3b')]===_0xa7b4('0x40')&&_0x5e1a48[_0xa7b4('0x41')]&&_0x5e1a48[_0xa7b4('0x41')]['name']&&_0x5e1a48[_0xa7b4('0x3c')]&&_0x5e1a48[_0xa7b4('0x37')]){_0x32ae58[_0x5e1a48[_0xa7b4('0x41')][_0xa7b4('0x16')][_0xa7b4('0x38')]()]&&_0x434ba9[_0xa7b4('0x18')][_0xa7b4('0x3d')]({'id':_0x5e1a48[_0xa7b4('0x3c')],'value':_0x32ae58[_0x5e1a48[_0xa7b4('0x41')][_0xa7b4('0x16')][_0xa7b4('0x38')]()][_0xa7b4('0x2d')]()});}});}return _0x434ba9;}exports[_0xa7b4('0x42')]=function(_0x1ee091,_0x569cb0,_0x5c12d0,_0x1799a8,_0x577fdf,_0x27fe03){var _0x20782f,_0xc27371;_0x27fe03['remoteUri']=intUtil[_0xa7b4('0x43')](_0x27fe03[_0xa7b4('0x1e')]);_0x27fe03[_0xa7b4('0x44')]=intUtil[_0xa7b4('0x43')](_0x27fe03[_0xa7b4('0x44')]);if(_0x577fdf&&_0x577fdf[_0xa7b4('0x45')]){logger['info'](_0xa7b4('0x46'),_0xa7b4('0x47'));_0x569cb0[_0xa7b4('0x48')]=util['format'](_0xa7b4('0x49'),_0x27fe03[_0xa7b4('0x44')],_0x569cb0[_0xa7b4('0x4a')],md5(_0x569cb0[_0xa7b4('0x4a')]));}else{_0x569cb0['recordingURL']='';}headers[_0xa7b4('0x4b')]=getAuth(_0x27fe03);return getUser(_0x27fe03,_0x1799a8['email'])['then'](function(_0x10b3a2){_0x20782f=_0x10b3a2;logger[_0xa7b4('0xc')](_0xa7b4('0x4c'),_0x20782f['id']);return getEndUser(_0x27fe03,_0x569cb0[_0xa7b4('0x11')],_0x569cb0[_0xa7b4('0x12')]);})[_0xa7b4('0x1c')](function(_0x104fbc){_0xc27371=_0x104fbc;logger['info'](_0xa7b4('0x4d'),_0xc27371['id']);return getTicket(_0x27fe03,_0x20782f,_0xc27371,_0x5c12d0,_0x569cb0);})[_0xa7b4('0x1c')](function(_0x413728){if(_0x413728&&_0x413728['id']){logger[_0xa7b4('0xc')](_0xa7b4('0x4e'));logger['info'](_0xa7b4('0x4f'),_0x413728['id']);logger[_0xa7b4('0xc')]('[QUEUE]','Displaying\x20ticket\x20to\x20agent\x20in\x20a\x20new\x20tab...');emit(util[_0xa7b4('0xf')](_0xa7b4('0x50'),_0x1799a8[_0xa7b4('0x16')]),_0xa7b4('0x51'),{'uri':util[_0xa7b4('0xf')](_0xa7b4('0x52'),_0x27fe03['remoteUri'],_0x413728['id'])});}})[_0xa7b4('0x53')](function(_0x4dc210){logger['error'](_0xa7b4('0x46'),JSON[_0xa7b4('0x30')](_0x4dc210));});};exports[_0xa7b4('0x54')]=function(_0xf0d1e5,_0x36b621,_0x1ec540,_0x1836f6,_0xf41ddb,_0x110d86,_0x2ea5f6){var _0x4aa607,_0x186cdb;_0x110d86[_0xa7b4('0x1e')]=intUtil[_0xa7b4('0x43')](_0x110d86[_0xa7b4('0x1e')]);_0x110d86[_0xa7b4('0x44')]=intUtil[_0xa7b4('0x43')](_0x110d86['serverUrl']);if(_0x2ea5f6&&_0x2ea5f6['recordingFormat']&&_0x2ea5f6['recordingFormat']!==_0xa7b4('0x55')){logger[_0xa7b4('0xc')](_0xa7b4('0x56'),'Recording\x20is\x20enabled!');_0x36b621[_0xa7b4('0x48')]=util[_0xa7b4('0xf')](_0xa7b4('0x49'),_0x110d86[_0xa7b4('0x44')],_0x36b621['uniqueid'],md5(_0x36b621['uniqueid']));}headers[_0xa7b4('0x4b')]=getAuth(_0x110d86);return getUser(_0x110d86,_0x1836f6[_0xa7b4('0x21')])[_0xa7b4('0x1c')](function(_0x560db7){_0x4aa607=_0x560db7;logger[_0xa7b4('0xc')](_0xa7b4('0x4c'),_0x4aa607['id']);return getEndUser(_0x110d86,_0x36b621[_0xa7b4('0x57')],_0x36b621['destcalleridnum']);})[_0xa7b4('0x1c')](function(_0x5db6d6){_0x186cdb=_0x5db6d6;logger[_0xa7b4('0xc')]('The\x20Enduser\x20ID\x20is:',_0x186cdb['id']);return getTicket(_0x110d86,_0x4aa607,_0x186cdb,_0x1ec540,_0x36b621);})[_0xa7b4('0x1c')](function(_0x104fd8){if(_0x104fd8&&_0x104fd8['id']){logger[_0xa7b4('0xc')]('Ticket\x20created!');logger[_0xa7b4('0xc')](_0xa7b4('0x4f'),_0x104fd8['id']);logger[_0xa7b4('0xc')]('[OUTBOUND]',_0xa7b4('0x58'));emit(util[_0xa7b4('0xf')](_0xa7b4('0x50'),_0x1836f6[_0xa7b4('0x16')]),_0xa7b4('0x51'),{'uri':util[_0xa7b4('0xf')](_0xa7b4('0x52'),_0x110d86[_0xa7b4('0x1e')],_0x104fd8['id'])});}})[_0xa7b4('0x53')](function(_0x17f6c9){logger[_0xa7b4('0x59')]('[OUTBOUND]',JSON[_0xa7b4('0x30')](_0x17f6c9));});};exports[_0xa7b4('0x5a')]=function(_0x12efb8,_0x1bdb5a,_0x3ff571,_0x143182,_0x932ea3,_0x46a428){var _0x33323a,_0xdba562;_0x46a428[_0xa7b4('0x1e')]=intUtil['stripTrailingSlash'](_0x46a428[_0xa7b4('0x1e')]);_0x46a428['serverUrl']=intUtil[_0xa7b4('0x43')](_0x46a428[_0xa7b4('0x44')]);if(_0x932ea3&&_0x932ea3[_0xa7b4('0x45')]){logger[_0xa7b4('0xc')]('['+_0x1bdb5a[_0xa7b4('0x5b')]['toUpperCase']()+']','Recording\x20is\x20enabled!');_0x1bdb5a['recordingURL']=util[_0xa7b4('0xf')]('%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s',_0x46a428[_0xa7b4('0x44')],_0x1bdb5a['uniqueid'],md5(_0x1bdb5a['uniqueid']));}else{_0x1bdb5a[_0xa7b4('0x48')]='';}headers[_0xa7b4('0x4b')]=getAuth(_0x46a428);return getUser(_0x46a428,'')[_0xa7b4('0x1c')](function(_0x2ee98a){_0x33323a=_0x2ee98a;logger[_0xa7b4('0xc')](_0xa7b4('0x4c'),_0x33323a['id']);return getEndUser(_0x46a428,_0x1bdb5a[_0xa7b4('0x11')],_0x1bdb5a[_0xa7b4('0x12')]);})[_0xa7b4('0x1c')](function(_0x1a8201){_0xdba562=_0x1a8201;logger[_0xa7b4('0xc')](_0xa7b4('0x4d'),_0xdba562['id']);return getTicket(_0x46a428,_0x33323a,_0xdba562,_0x3ff571,_0x1bdb5a);})[_0xa7b4('0x1c')](function(_0x107ad8){if(_0x107ad8){logger[_0xa7b4('0xc')]('Ticket\x20created!');logger[_0xa7b4('0xc')](_0xa7b4('0x4f'),_0x107ad8['id']);}})[_0xa7b4('0x53')](function(_0x1d3083){logger[_0xa7b4('0x59')]('['+_0x1bdb5a[_0xa7b4('0x5b')]['toUpperCase']()+']',JSON['stringify'](_0x1d3083));});};
\ No newline at end of file
+var _0xbb30=['Ticket\x20created!','validateEmail','then','length','Agent\x20found!','find','contact','email','Agent\x20not\x20found,\x20using\x20the\x20admin\x20account!','Admin\x20account\x20selected.','Invalid\x20email\x20format,\x20using\x20the\x20admin\x20account!','%s/api/v2/agents/me','Searching\x20enduser\x20with\x20phone','%s/api/v2/contacts','Enduser\x20created.','Basic\x20%s','apiKey','toString','base64','debug','[HTTP]','stringify','GET','map','forEach','string','picklist','type','nameField','customField','toLowerCase','content','idField','push','variable','variableName','Variable','name','stripTrailingSlash','serverUrl','monitor_format','Recording\x20is\x20enabled!','uniqueid','recordingURL','Authorization','The\x20User\x20ID\x20is:','calleridname','The\x20Ticket\x20ID\x20is:','[QUEUE]','Displaying\x20ticket\x20to\x20agent\x20in\x20a\x20new\x20tab...','%s/helpdesk/tickets/%d','catch','outbound','recordingFormat','none','[OUTBOUND]','%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s','destcalleridname','destcalleridnum','The\x20Enduser\x20ID\x20is:','trigger:browser:url','lastevent','toUpperCase','lodash','request-promise','md5','util','ioredis','../../../../config/environment','../../../../config/logger','freshdesk','redis','defaults','socket.io-emitter','application/json','emit','Creating\x20new\x20ticket...','merge','format','Caller\x20-\x20%s','calleridnum','getString','Descriptions','<br>','Tags','Fields','mapValues','keyBy','custom_fields','value','%s/api/v2/tickets','remoteUri','POST','info'];(function(_0x1a3eaa,_0x8c27ae){var _0x44639c=function(_0x420397){while(--_0x420397){_0x1a3eaa['push'](_0x1a3eaa['shift']());}};_0x44639c(++_0x8c27ae);}(_0xbb30,0x1b7));var _0x0bb3=function(_0x33c9ae,_0x534733){_0x33c9ae=_0x33c9ae-0x0;var _0xcf1526=_0xbb30[_0x33c9ae];return _0xcf1526;};'use strict';var _=require(_0x0bb3('0x0'));var rp=require(_0x0bb3('0x1'));var md5=require(_0x0bb3('0x2'));var util=require(_0x0bb3('0x3'));var Redis=require(_0x0bb3('0x4'));var intUtil=require('./util');var config=require(_0x0bb3('0x5'));var logger=require(_0x0bb3('0x6'))(_0x0bb3('0x7'));config[_0x0bb3('0x8')]=_[_0x0bb3('0x9')](config[_0x0bb3('0x8')],{'host':'localhost','port':0x18eb});var io=require(_0x0bb3('0xa'))(new Redis(config['redis']));var headers={'Content-Type':'application/json','Accept':_0x0bb3('0xb')};function emit(_0x114e67,_0x453ac1,_0x361f43){io['to'](_0x114e67)[_0x0bb3('0xc')](_0x453ac1,_0x361f43);}function getTicket(_0x36d082,_0x36c9a8,_0x5167d2,_0x33d1f1,_0x134fdd){logger['info'](_0x0bb3('0xd'));var _0x369623=_[_0x0bb3('0xe')]({'responder_id':_0x36c9a8['id'],'requester_id':_0x5167d2['id'],'name':util[_0x0bb3('0xf')](_0x0bb3('0x10'),_0x134fdd['calleridname']),'phone':_0x134fdd[_0x0bb3('0x11')],'source':0x3,'priority':0x1,'status':0x2,'subject':intUtil['getString'](_0x33d1f1['Subjects'],_0x134fdd,'\x20'),'description':intUtil[_0x0bb3('0x12')](_0x33d1f1[_0x0bb3('0x13')],_0x134fdd,_0x0bb3('0x14')),'tags':getTags(_0x33d1f1[_0x0bb3('0x15')],'name')},getCustomFields(_0x33d1f1[_0x0bb3('0x16')],_0x134fdd));_0x369623['custom_fields']=_[_0x0bb3('0x17')](_[_0x0bb3('0x18')](_0x369623[_0x0bb3('0x19')],'id'),_0x0bb3('0x1a'));return request({'uri':util[_0x0bb3('0xf')](_0x0bb3('0x1b'),_0x36d082[_0x0bb3('0x1c')]),'method':_0x0bb3('0x1d'),'body':_0x369623})['then'](function(_0x204a8b){logger[_0x0bb3('0x1e')](_0x0bb3('0x1f'));return _0x204a8b;});}function getUser(_0x3be1d7,_0xfe0700){if(intUtil[_0x0bb3('0x20')](_0xfe0700)){return request({'uri':util[_0x0bb3('0xf')]('%s/api/v2/agents',_0x3be1d7['remoteUri']),'qs':{'email':_0xfe0700}})[_0x0bb3('0x21')](function(_0x1456b6){if(_0x1456b6[_0x0bb3('0x22')]){logger[_0x0bb3('0x1e')](_0x0bb3('0x23'));return _[_0x0bb3('0x24')](_0x1456b6,function(_0x463d5c){return _0x463d5c[_0x0bb3('0x25')][_0x0bb3('0x26')]===_0xfe0700;});}else{logger[_0x0bb3('0x1e')](_0x0bb3('0x27'));return request({'uri':util[_0x0bb3('0xf')]('%s/api/v2/agents/me',_0x3be1d7[_0x0bb3('0x1c')])})['then'](function(_0x383f99){logger[_0x0bb3('0x1e')](_0x0bb3('0x28'));return _0x383f99;});}});}else{logger[_0x0bb3('0x1e')](_0x0bb3('0x29'));return request({'uri':util[_0x0bb3('0xf')](_0x0bb3('0x2a'),_0x3be1d7[_0x0bb3('0x1c')])})[_0x0bb3('0x21')](function(_0x3fdab5){logger['info']('Admin\x20account\x20selected.');return _0x3fdab5;});}}function getEndUser(_0x12f5ad,_0x5801cb,_0x46db13){logger[_0x0bb3('0x1e')](_0x0bb3('0x2b'),_0x46db13);return request({'uri':util[_0x0bb3('0xf')](_0x0bb3('0x2c'),_0x12f5ad[_0x0bb3('0x1c')]),'qs':{'phone':_0x46db13}})[_0x0bb3('0x21')](function(_0x5b3303){if(_0x5b3303[_0x0bb3('0x22')]){logger[_0x0bb3('0x1e')]('Enduser\x20found!');return _[_0x0bb3('0x24')](_0x5b3303,{'phone':_0x46db13});}else{logger['info']('Enduser\x20not\x20found,\x20creating\x20a\x20new\x20enduser!');return request({'uri':util['format'](_0x0bb3('0x2c'),_0x12f5ad[_0x0bb3('0x1c')]),'method':_0x0bb3('0x1d'),'body':{'name':_0x5801cb,'phone':_0x46db13}})[_0x0bb3('0x21')](function(_0x587ae2){logger[_0x0bb3('0x1e')](_0x0bb3('0x2d'));return _0x587ae2;});}});}function getAuth(_0x46d304){return util[_0x0bb3('0xf')](_0x0bb3('0x2e'),new Buffer(_0x46d304[_0x0bb3('0x2f')]+':X')[_0x0bb3('0x30')](_0x0bb3('0x31')));}function request(_0xbbd43e){logger[_0x0bb3('0x32')](_0x0bb3('0x33'),JSON[_0x0bb3('0x34')](_0xbbd43e));return rp(_['defaults'](_0xbbd43e,{'method':_0x0bb3('0x35'),'headers':headers,'json':!![]}));}function getTags(_0x10b2d7,_0xdd98ac){var _0x4ccd36=[];if(_0x10b2d7&&_0x10b2d7[_0x0bb3('0x22')]>0x0){_0x4ccd36=_[_0x0bb3('0x36')](_0x10b2d7,_0xdd98ac);}return _0x4ccd36;}function getCustomFields(_0x18a967,_0x13613d){var _0x3f2bdf=[];var _0x2c8641={'custom_fields':[]};if(_0x18a967[_0x0bb3('0x22')]>0x0){_[_0x0bb3('0x37')](_0x18a967,function(_0x18013a){if(_['includes']([_0x0bb3('0x38'),_0x0bb3('0x39')],_0x18013a[_0x0bb3('0x3a')])&&_0x18013a[_0x0bb3('0x3b')]&&!_0x18013a[_0x0bb3('0x3c')]){_0x2c8641[_0x18013a[_0x0bb3('0x3b')][_0x0bb3('0x3d')]()]=_0x18013a[_0x0bb3('0x3e')][_0x0bb3('0x30')]();}else if(_['includes']([_0x0bb3('0x38'),_0x0bb3('0x39')],_0x18013a[_0x0bb3('0x3a')])&&_0x18013a[_0x0bb3('0x3f')]&&_0x18013a[_0x0bb3('0x3c')]){_0x2c8641[_0x0bb3('0x19')][_0x0bb3('0x40')]({'id':_0x18013a['idField'],'value':_0x18013a[_0x0bb3('0x3e')][_0x0bb3('0x30')]()});}else if(_0x18013a[_0x0bb3('0x3a')]===_0x0bb3('0x41')&&_0x18013a['variableName']&&_0x18013a['idField']&&_0x18013a[_0x0bb3('0x3c')]){_0x13613d[_0x18013a[_0x0bb3('0x42')]]&&_0x2c8641[_0x0bb3('0x19')]['push']({'id':_0x18013a[_0x0bb3('0x3f')],'value':_0x13613d[_0x18013a[_0x0bb3('0x42')]][_0x0bb3('0x30')]()});}else if(_0x18013a[_0x0bb3('0x3a')]==='customVariable'&&_0x18013a['Variable']&&_0x18013a[_0x0bb3('0x43')]['name']&&_0x18013a[_0x0bb3('0x3f')]&&_0x18013a[_0x0bb3('0x3c')]){_0x13613d[_0x18013a['Variable'][_0x0bb3('0x44')]['toLowerCase']()]&&_0x2c8641['custom_fields'][_0x0bb3('0x40')]({'id':_0x18013a['idField'],'value':_0x13613d[_0x18013a[_0x0bb3('0x43')][_0x0bb3('0x44')][_0x0bb3('0x3d')]()][_0x0bb3('0x30')]()});}});}return _0x2c8641;}exports['queue']=function(_0x4db9b0,_0x3a7103,_0x15daaf,_0x1189cc,_0x56d70c,_0x5afbe1){var _0x105468,_0x31ead0;_0x5afbe1[_0x0bb3('0x1c')]=intUtil[_0x0bb3('0x45')](_0x5afbe1['remoteUri']);_0x5afbe1['serverUrl']=intUtil[_0x0bb3('0x45')](_0x5afbe1[_0x0bb3('0x46')]);if(_0x56d70c&&_0x56d70c[_0x0bb3('0x47')]){logger[_0x0bb3('0x1e')]('[QUEUE]',_0x0bb3('0x48'));_0x3a7103['recordingURL']=util[_0x0bb3('0xf')]('%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s',_0x5afbe1[_0x0bb3('0x46')],_0x3a7103[_0x0bb3('0x49')],md5(_0x3a7103[_0x0bb3('0x49')]));}else{_0x3a7103[_0x0bb3('0x4a')]='';}headers[_0x0bb3('0x4b')]=getAuth(_0x5afbe1);return getUser(_0x5afbe1,_0x1189cc[_0x0bb3('0x26')])[_0x0bb3('0x21')](function(_0x270f5){_0x105468=_0x270f5;logger['info'](_0x0bb3('0x4c'),_0x105468['id']);return getEndUser(_0x5afbe1,_0x3a7103[_0x0bb3('0x4d')],_0x3a7103[_0x0bb3('0x11')]);})[_0x0bb3('0x21')](function(_0x3d6539){_0x31ead0=_0x3d6539;logger[_0x0bb3('0x1e')]('The\x20Enduser\x20ID\x20is:',_0x31ead0['id']);return getTicket(_0x5afbe1,_0x105468,_0x31ead0,_0x15daaf,_0x3a7103);})[_0x0bb3('0x21')](function(_0x4d40ee){if(_0x4d40ee&&_0x4d40ee['id']){logger[_0x0bb3('0x1e')](_0x0bb3('0x1f'));logger[_0x0bb3('0x1e')](_0x0bb3('0x4e'),_0x4d40ee['id']);logger[_0x0bb3('0x1e')](_0x0bb3('0x4f'),_0x0bb3('0x50'));emit(util[_0x0bb3('0xf')]('user:%s',_0x1189cc[_0x0bb3('0x44')]),'trigger:browser:url',{'uri':util['format'](_0x0bb3('0x51'),_0x5afbe1[_0x0bb3('0x1c')],_0x4d40ee['id'])});}})[_0x0bb3('0x52')](function(_0x3d0943){logger['error'](_0x0bb3('0x4f'),JSON[_0x0bb3('0x34')](_0x3d0943));});};exports[_0x0bb3('0x53')]=function(_0x4163cb,_0x287f84,_0x32fa3c,_0x50e5df,_0x52fc2c,_0x248aff,_0x120a2a){var _0x531aae,_0x1dffe8;_0x248aff[_0x0bb3('0x1c')]=intUtil[_0x0bb3('0x45')](_0x248aff[_0x0bb3('0x1c')]);_0x248aff[_0x0bb3('0x46')]=intUtil['stripTrailingSlash'](_0x248aff[_0x0bb3('0x46')]);if(_0x120a2a&&_0x120a2a[_0x0bb3('0x54')]&&_0x120a2a['recordingFormat']!==_0x0bb3('0x55')){logger[_0x0bb3('0x1e')](_0x0bb3('0x56'),_0x0bb3('0x48'));_0x287f84[_0x0bb3('0x4a')]=util['format'](_0x0bb3('0x57'),_0x248aff[_0x0bb3('0x46')],_0x287f84['uniqueid'],md5(_0x287f84[_0x0bb3('0x49')]));}headers[_0x0bb3('0x4b')]=getAuth(_0x248aff);return getUser(_0x248aff,_0x50e5df[_0x0bb3('0x26')])[_0x0bb3('0x21')](function(_0x1debb8){_0x531aae=_0x1debb8;logger['info'](_0x0bb3('0x4c'),_0x531aae['id']);return getEndUser(_0x248aff,_0x287f84[_0x0bb3('0x58')],_0x287f84[_0x0bb3('0x59')]);})['then'](function(_0x460c61){_0x1dffe8=_0x460c61;logger[_0x0bb3('0x1e')](_0x0bb3('0x5a'),_0x1dffe8['id']);return getTicket(_0x248aff,_0x531aae,_0x1dffe8,_0x32fa3c,_0x287f84);})[_0x0bb3('0x21')](function(_0x2de398){if(_0x2de398&&_0x2de398['id']){logger[_0x0bb3('0x1e')](_0x0bb3('0x1f'));logger[_0x0bb3('0x1e')]('The\x20Ticket\x20ID\x20is:',_0x2de398['id']);logger[_0x0bb3('0x1e')](_0x0bb3('0x56'),_0x0bb3('0x50'));emit(util[_0x0bb3('0xf')]('user:%s',_0x50e5df[_0x0bb3('0x44')]),_0x0bb3('0x5b'),{'uri':util[_0x0bb3('0xf')](_0x0bb3('0x51'),_0x248aff['remoteUri'],_0x2de398['id'])});}})[_0x0bb3('0x52')](function(_0x4bbbf6){logger['error'](_0x0bb3('0x56'),JSON[_0x0bb3('0x34')](_0x4bbbf6));});};exports['unmanaged']=function(_0x5f4394,_0x59d4c0,_0x168427,_0x5bb044,_0x315d3d,_0x5eff45){var _0x5f097d,_0x384907;_0x5eff45['remoteUri']=intUtil['stripTrailingSlash'](_0x5eff45['remoteUri']);_0x5eff45['serverUrl']=intUtil[_0x0bb3('0x45')](_0x5eff45[_0x0bb3('0x46')]);if(_0x315d3d&&_0x315d3d[_0x0bb3('0x47')]){logger['info']('['+_0x59d4c0[_0x0bb3('0x5c')][_0x0bb3('0x5d')]()+']',_0x0bb3('0x48'));_0x59d4c0[_0x0bb3('0x4a')]=util[_0x0bb3('0xf')](_0x0bb3('0x57'),_0x5eff45[_0x0bb3('0x46')],_0x59d4c0[_0x0bb3('0x49')],md5(_0x59d4c0[_0x0bb3('0x49')]));}else{_0x59d4c0[_0x0bb3('0x4a')]='';}headers[_0x0bb3('0x4b')]=getAuth(_0x5eff45);return getUser(_0x5eff45,'')['then'](function(_0x2d2cd5){_0x5f097d=_0x2d2cd5;logger['info'](_0x0bb3('0x4c'),_0x5f097d['id']);return getEndUser(_0x5eff45,_0x59d4c0['calleridname'],_0x59d4c0[_0x0bb3('0x11')]);})[_0x0bb3('0x21')](function(_0xaa1e3e){_0x384907=_0xaa1e3e;logger[_0x0bb3('0x1e')](_0x0bb3('0x5a'),_0x384907['id']);return getTicket(_0x5eff45,_0x5f097d,_0x384907,_0x168427,_0x59d4c0);})[_0x0bb3('0x21')](function(_0x38c51b){if(_0x38c51b){logger[_0x0bb3('0x1e')]('Ticket\x20created!');logger['info'](_0x0bb3('0x4e'),_0x38c51b['id']);}})['catch'](function(_0x1a6308){logger['error']('['+_0x59d4c0[_0x0bb3('0x5c')][_0x0bb3('0x5d')]()+']',JSON[_0x0bb3('0x34')](_0x1a6308));});};
\ No newline at end of file
index dc18c4b..809011d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x28e3=['[QUEUE]','Recording\x20is\x20enabled!','recordingFormat','none','recordingURL','The\x20ticket\x20ID\x20is:\x20%s','Displaying\x20task\x20in\x20a\x20new\x20tab...',']\x20Error\x20running\x20Freshsales\x20integration','inspect','request-promise','md5','util','moment','bluebird','ioredis','./util','../../../../config/environment','../../../../config/logger','freshsales','redis','defaults','socket.io-emitter','GET','/api/selector/owners','headers','Getting\x20admin\x20information','then','users','length','email','adminEmail','adminId','info','Requested\x20Resource\x20not\x20Found','toUpperCase','agentEmail','userEmail','userId','User\x20found:','Admin\x20selected','catch','&f=','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','YYYY-MM-DDTHH:mm:ss','Contact\x20not\x20found,\x20creating\x20a\x20new\x20contact','contact','error','message','Creating\x20new\x20task','/api/tasks','getString','Contact','ticketId','task','Task\x20created:','emit','trigger:browser:url','apiKey','remoteUri','stripTrailingSlash','serverUrl','username','outbound','destcalleridnum','callDirection','unmanaged','queue','%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s','monitor_format'];(function(_0x2dafbe,_0x5d04de){var _0x58a45a=function(_0x50ac96){while(--_0x50ac96){_0x2dafbe['push'](_0x2dafbe['shift']());}};_0x58a45a(++_0x5d04de);}(_0x28e3,0x194));var _0x328e=function(_0x13e741,_0x5d3c24){_0x13e741=_0x13e741-0x0;var _0x3f8bb3=_0x28e3[_0x13e741];return _0x3f8bb3;};'use strict';var _=require('lodash');var rp=require(_0x328e('0x0'));var md5=require(_0x328e('0x1'));var util=require(_0x328e('0x2'));var moment=require(_0x328e('0x3'));var Promise=require(_0x328e('0x4'));var Redis=require(_0x328e('0x5'));var intUtil=require(_0x328e('0x6'));var config=require(_0x328e('0x7'));var logger=require(_0x328e('0x8'))(_0x328e('0x9'));config[_0x328e('0xa')]=_[_0x328e('0xb')](config[_0x328e('0xa')],{'host':'localhost','port':0x18eb});var io=require(_0x328e('0xc'))(new Redis(config[_0x328e('0xa')]));function getAdminId(_0xa084f0,_0x34694c,_0x30e794,_0xa8a39){return new Promise(function(_0x37a5eb,_0x224be2){var _0x172114=![];var _0x2b651a={'method':_0x328e('0xd'),'uri':_0xa8a39+_0x328e('0xe'),'json':!![]};_0x2b651a[_0x328e('0xf')]=_0x30e794;logger['info'](_0x328e('0x10'));return rp(_0x2b651a)[_0x328e('0x11')](function(_0x317fbe){if(_0x317fbe){var _0xc5a0e=_0x317fbe[_0x328e('0x12')];var _0x4573f2=null;for(_0x4573f2=0x0;_0x4573f2<_0xc5a0e[_0x328e('0x13')];_0x4573f2++){if(_0xc5a0e[_0x4573f2][_0x328e('0x14')]===_0xa084f0[_0x328e('0x15')]){_0xa084f0[_0x328e('0x16')]=_0xc5a0e[_0x4573f2]['id'];_0x172114=!![];}}if(_0x172114){logger[_0x328e('0x17')]('Admin\x20found:',_0xa084f0[_0x328e('0x16')]);_0x37a5eb(_0xa084f0);}else{_0x224be2({'statusCode':0x194,'message':_0x328e('0x18')});}}else{_0x224be2({'statusCode':0x194,'message':_0x328e('0x18')});}})['catch'](function(_0x3170c4){logger['error']('['+[_0x34694c[_0x328e('0x19')]()]+']',_0x3170c4['message']);_0x224be2(_0x3170c4);});});}function getUser(_0x47509f,_0x596481,_0x25e650){return function(_0x5be94b){return new Promise(function(_0x29dc0e,_0x41e06f){var _0x433c61={'method':'GET','uri':_0x25e650+_0x328e('0xe'),'json':!![]};_0x433c61['headers']=_0x596481;logger[_0x328e('0x17')]('Getting\x20user\x20list');return rp(_0x433c61)[_0x328e('0x11')](function(_0xabc687){if(_0xabc687){var _0x264170=_0xabc687[_0x328e('0x12')];var _0x4ec257=![];var _0x2a9d09=null;if(_0x5be94b[_0x328e('0x1a')]!==null){logger[_0x328e('0x17')]('Getting\x20user\x20with\x20email',_0x5be94b[_0x328e('0x1a')]);_0x5be94b[_0x328e('0x1b')]=_0x5be94b['agentEmail'];for(_0x2a9d09=0x0;_0x2a9d09<_0x264170[_0x328e('0x13')];_0x2a9d09++){if(_0x264170[_0x2a9d09][_0x328e('0x14')]===_0x5be94b[_0x328e('0x1a')]){_0x4ec257=!![];_0x5be94b[_0x328e('0x1c')]=_0x264170[_0x2a9d09]['id'];logger[_0x328e('0x17')](_0x328e('0x1d'),_0x5be94b['userId']);}}}if(!_0x4ec257){logger[_0x328e('0x17')](_0x328e('0x1e'));_0x5be94b['userEmail']=_0x5be94b['adminEmail'];_0x5be94b[_0x328e('0x1c')]=_0x5be94b['adminId'];_0x4ec257=!![];}if(_0x4ec257){_0x29dc0e(_0x5be94b);}else{_0x41e06f({'statusCode':0x194,'message':_0x328e('0x18')});}}else{_0x41e06f({'statusCode':0x194,'message':_0x328e('0x18')});}})[_0x328e('0x1f')](function(_0x5d5183){logger['error']('['+[_0x47509f[_0x328e('0x19')]()]+']',_0x5d5183['message']);_0x41e06f(_0x5d5183);});});};}function searchContact(_0x9b5856,_0x2ed8b8,_0x3f7a9c,_0x5499ce){return new Promise(function(_0x2bb84e,_0x50cc4c){var _0x3f7c24={'method':_0x328e('0xd'),'headers':_0x2ed8b8,'uri':_0x9b5856+'/api/lookup?q='+_0x5499ce+_0x328e('0x20')+_0x3f7a9c+'&entities=contact','json':!![]};rp(_0x3f7c24)['then'](function(_0x39bf27){var _0x1cc22f=_['find'](_0x39bf27[_0x328e('0x21')]['contacts'],[_0x3f7a9c,_0x5499ce]);_0x2bb84e(_0x1cc22f);})[_0x328e('0x1f')](function(_0x406af5){_0x50cc4c(_0x406af5);});});}function getEndUser(_0x5b36ee,_0x5a8852,_0x59b672){return function(_0x567ae9){return new Promise(function(_0x2d68ad,_0x39ebec){logger[_0x328e('0x17')](util[_0x328e('0x22')](_0x328e('0x23'),_0x567ae9[_0x328e('0x24')]));searchContact(_0x59b672,_0x5a8852,_0x328e('0x25'),_0x567ae9[_0x328e('0x24')])['then'](function(_0x3e782c){if(_0x3e782c){_0x567ae9[_0x328e('0x26')]=_0x3e782c['id'];logger['info'](_0x328e('0x27'),_0x567ae9['endUserId']);return _0x2d68ad(_0x567ae9);}searchContact(_0x59b672,_0x5a8852,_0x328e('0x28'),_0x567ae9['contactNumber'])[_0x328e('0x11')](function(_0xf526fb){if(_0xf526fb){_0x567ae9['endUserId']=_0xf526fb['id'];logger[_0x328e('0x17')](_0x328e('0x29'),_0x567ae9[_0x328e('0x26')]);return _0x2d68ad(_0x567ae9);}createEndUser(_0x567ae9,_0x5b36ee,_0x5a8852,_0x59b672)[_0x328e('0x11')](function(_0x1aa1ca){logger[_0x328e('0x17')](_0x328e('0x2a'),_0x1aa1ca[_0x328e('0x26')]);return _0x2d68ad(_0x1aa1ca);});});})[_0x328e('0x1f')](function(_0x4bd5d9){_0x39ebec(_0x4bd5d9);});});};}function createEndUser(_0x11ec7d,_0x4e8bb1,_0x52a5cd,_0x2a8399){return new Promise(function(_0x3f786e,_0x1efebf){var _0x4e6584=moment();var _0x4db28d={'method':_0x328e('0x2b'),'uri':_0x2a8399+'/api/contacts','body':{'contact':{'last_name':_0x11ec7d[_0x328e('0x24')],'work_number':_0x11ec7d[_0x328e('0x24')],'mobile_number':_0x11ec7d[_0x328e('0x24')],'owner_id':_0x11ec7d[_0x328e('0x1c')],'created_at':_0x4e6584[_0x328e('0x22')](_0x328e('0x2c'))}},'json':!![]};_0x4db28d[_0x328e('0xf')]=_0x52a5cd;logger[_0x328e('0x17')](_0x328e('0x2d'));return rp(_0x4db28d)[_0x328e('0x11')](function(_0x4038a1){_0x11ec7d[_0x328e('0x26')]=_0x4038a1[_0x328e('0x2e')]['id'];_0x3f786e(_0x11ec7d);})[_0x328e('0x1f')](function(_0x2c2aec){logger[_0x328e('0x2f')]('['+[_0x4e8bb1[_0x328e('0x19')]()]+']',_0x2c2aec['message']);_0x1efebf(_0x2c2aec[_0x328e('0x30')]);});});}function getTicket(_0x4153ad,_0xa792e4,_0x578e2e,_0x41ba22,_0x2c38f5){return function(_0x55d907){logger[_0x328e('0x17')](_0x328e('0x31'));return new Promise(function(_0x27ea37,_0x440086){var _0x12523b=moment();var _0x349b7b={'method':_0x328e('0x2b'),'uri':_0x578e2e+_0x328e('0x32'),'body':{'title':intUtil[_0x328e('0x33')](_0x41ba22['Subjects'],_0x2c38f5,'\x20'),'description':intUtil[_0x328e('0x33')](_0x41ba22['Descriptions'],_0x2c38f5,'\x0a'),'owner_id':_0x55d907['userId'],'creater_id':_0x55d907[_0x328e('0x16')],'targetable_id':_0x55d907[_0x328e('0x26')],'targetable_type':_0x328e('0x34'),'created_at':_0x12523b[_0x328e('0x22')](_0x328e('0x2c')),'due_date':_0x12523b['add'](0x1e,'m')[_0x328e('0x22')](_0x328e('0x2c'))},'json':!![]};_0x349b7b[_0x328e('0xf')]=_0xa792e4;return rp(_0x349b7b)[_0x328e('0x11')](function(_0x5a133d){_0x55d907[_0x328e('0x35')]=_0x5a133d[_0x328e('0x36')]['id'];logger[_0x328e('0x17')](_0x328e('0x37'),_0x55d907[_0x328e('0x35')]);_0x27ea37(_0x55d907);})[_0x328e('0x1f')](function(_0x316c4a){logger[_0x328e('0x2f')]('['+[_0x4153ad['toUpperCase']()]+']',_0x316c4a['message']);_0x440086(_0x316c4a[_0x328e('0x30')]);});});};}function emit(_0x3d33cb,_0x8334c,_0x427991){var _0xb13da3={'uri':_0x3d33cb+'/contacts/'+_0x427991};io['to'](util[_0x328e('0x22')]('user:%s',_0x8334c))[_0x328e('0x38')](_0x328e('0x39'),_0xb13da3);}exports['cs']=function(_0x1b94c4,_0x44a528,_0x523abe,_0x334dff,_0xf9cd87,_0x4e8e86,_0x178cfd,_0x594c62){var _0x471e3d={};var _0x2b2a85={'Authorization':'Token\x20token='+_0x4e8e86[_0x328e('0x3a')]};_0x4e8e86[_0x328e('0x3b')]=intUtil[_0x328e('0x3c')](_0x4e8e86['remoteUri']);_0x4e8e86[_0x328e('0x3d')]=intUtil[_0x328e('0x3c')](_0x4e8e86[_0x328e('0x3d')]);var _0x10fac3=_0x4e8e86[_0x328e('0x3b')];_0x471e3d[_0x328e('0x15')]=_0x4e8e86[_0x328e('0x3e')];_0x471e3d['contactNumber']=_0x594c62['toLowerCase']()===_0x328e('0x3f')?_0x44a528[_0x328e('0x40')]:_0x44a528['calleridnum'];_0x471e3d[_0x328e('0x41')]=_0x594c62==='queue'||_0x594c62===_0x328e('0x42')?_0x328e('0x43'):_0x328e('0x3f');if(_0x334dff){_0x471e3d[_0x328e('0x1a')]=_0x334dff[_0x328e('0x14')];}var _0x1e7917=util[_0x328e('0x22')](_0x328e('0x44'),_0x4e8e86[_0x328e('0x3d')],_0x44a528['uniqueid'],md5(_0x44a528['uniqueid']));if(_0xf9cd87&&_0xf9cd87[_0x328e('0x45')]){logger[_0x328e('0x17')](_0x328e('0x46'),_0x328e('0x47'));_0x44a528['recordingURL']=_0x1e7917;}else if(_0x178cfd&&_0x178cfd[_0x328e('0x48')]&&_0x178cfd[_0x328e('0x48')]!==_0x328e('0x49')){logger[_0x328e('0x17')]('[OUTBOUND]',_0x328e('0x47'));_0x44a528['recordingURL']=_0x1e7917;}else{_0x44a528[_0x328e('0x4a')]='';}return getAdminId(_0x471e3d,_0x594c62,_0x2b2a85,_0x10fac3)[_0x328e('0x11')](getUser(_0x594c62,_0x2b2a85,_0x10fac3))[_0x328e('0x11')](getEndUser(_0x594c62,_0x2b2a85,_0x10fac3))[_0x328e('0x11')](getTicket(_0x594c62,_0x2b2a85,_0x10fac3,_0x523abe,_0x44a528))[_0x328e('0x11')](function(_0x4b7e51){logger['info'](util[_0x328e('0x22')](_0x328e('0x4b'),_0x4b7e51['ticketId']));if(_0x594c62!==_0x328e('0x42')){logger[_0x328e('0x17')]('['+[_0x594c62['toUpperCase']()]+']',_0x328e('0x4c'));emit(_0x10fac3,_0x334dff['name'],_0x4b7e51['endUserId']);}})['catch'](function(_0x28c3d0){logger[_0x328e('0x2f')]('['+[_0x594c62[_0x328e('0x19')]()]+_0x328e('0x4d'),util[_0x328e('0x4e')](_0x28c3d0,{'showHidden':!![],'depth':null}));});};
\ No newline at end of file
+var _0x8e72=['catch','error','toUpperCase','message','GET','Getting\x20user\x20list','then','users','agentEmail','Getting\x20user\x20with\x20email','userEmail','userId','Admin\x20selected','&f=','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','YYYY-MM-DDTHH:mm:ss','headers','Contact\x20not\x20found,\x20creating\x20a\x20new\x20contact','contact','getString','Subjects','Descriptions','Contact','ticketId','task','Task\x20created:','/contacts/','user:%s','emit','trigger:browser:url','apiKey','remoteUri','stripTrailingSlash','serverUrl','username','toLowerCase','outbound','queue','%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s','uniqueid','monitor_format','[QUEUE]','Recording\x20is\x20enabled!','recordingFormat','none','[OUTBOUND]','recordingURL','Displaying\x20task\x20in\x20a\x20new\x20tab...','name','inspect','lodash','request-promise','util','moment','bluebird','ioredis','./util','../../../../config/environment','../../../../config/logger','freshsales','redis','defaults','localhost','socket.io-emitter','/api/selector/owners','info','Getting\x20admin\x20information','length','email','adminEmail','adminId','Admin\x20found:','Requested\x20Resource\x20not\x20Found'];(function(_0x37cd10,_0x423bec){var _0x45539d=function(_0x57433c){while(--_0x57433c){_0x37cd10['push'](_0x37cd10['shift']());}};_0x45539d(++_0x423bec);}(_0x8e72,0x139));var _0x28e7=function(_0x518eb9,_0x4388bb){_0x518eb9=_0x518eb9-0x0;var _0x11f33c=_0x8e72[_0x518eb9];return _0x11f33c;};'use strict';var _=require(_0x28e7('0x0'));var rp=require(_0x28e7('0x1'));var md5=require('md5');var util=require(_0x28e7('0x2'));var moment=require(_0x28e7('0x3'));var Promise=require(_0x28e7('0x4'));var Redis=require(_0x28e7('0x5'));var intUtil=require(_0x28e7('0x6'));var config=require(_0x28e7('0x7'));var logger=require(_0x28e7('0x8'))(_0x28e7('0x9'));config[_0x28e7('0xa')]=_[_0x28e7('0xb')](config[_0x28e7('0xa')],{'host':_0x28e7('0xc'),'port':0x18eb});var io=require(_0x28e7('0xd'))(new Redis(config[_0x28e7('0xa')]));function getAdminId(_0x1bbd14,_0x4fd820,_0x165dfe,_0x286700){return new Promise(function(_0xfeb2df,_0x11305e){var _0x2c095e=![];var _0x351146={'method':'GET','uri':_0x286700+_0x28e7('0xe'),'json':!![]};_0x351146['headers']=_0x165dfe;logger[_0x28e7('0xf')](_0x28e7('0x10'));return rp(_0x351146)['then'](function(_0x1a96f1){if(_0x1a96f1){var _0x2e0f9b=_0x1a96f1['users'];var _0x4c649a=null;for(_0x4c649a=0x0;_0x4c649a<_0x2e0f9b[_0x28e7('0x11')];_0x4c649a++){if(_0x2e0f9b[_0x4c649a][_0x28e7('0x12')]===_0x1bbd14[_0x28e7('0x13')]){_0x1bbd14[_0x28e7('0x14')]=_0x2e0f9b[_0x4c649a]['id'];_0x2c095e=!![];}}if(_0x2c095e){logger[_0x28e7('0xf')](_0x28e7('0x15'),_0x1bbd14['adminId']);_0xfeb2df(_0x1bbd14);}else{_0x11305e({'statusCode':0x194,'message':_0x28e7('0x16')});}}else{_0x11305e({'statusCode':0x194,'message':'Requested\x20Resource\x20not\x20Found'});}})[_0x28e7('0x17')](function(_0x37e38f){logger[_0x28e7('0x18')]('['+[_0x4fd820[_0x28e7('0x19')]()]+']',_0x37e38f[_0x28e7('0x1a')]);_0x11305e(_0x37e38f);});});}function getUser(_0x138d6b,_0x23cf42,_0x24dcb0){return function(_0x54ac12){return new Promise(function(_0x5b2d86,_0x308686){var _0x29317c={'method':_0x28e7('0x1b'),'uri':_0x24dcb0+'/api/selector/owners','json':!![]};_0x29317c['headers']=_0x23cf42;logger['info'](_0x28e7('0x1c'));return rp(_0x29317c)[_0x28e7('0x1d')](function(_0x140381){if(_0x140381){var _0x5c3f41=_0x140381[_0x28e7('0x1e')];var _0x5ae82d=![];var _0x2b736c=null;if(_0x54ac12[_0x28e7('0x1f')]!==null){logger[_0x28e7('0xf')](_0x28e7('0x20'),_0x54ac12[_0x28e7('0x1f')]);_0x54ac12[_0x28e7('0x21')]=_0x54ac12['agentEmail'];for(_0x2b736c=0x0;_0x2b736c<_0x5c3f41[_0x28e7('0x11')];_0x2b736c++){if(_0x5c3f41[_0x2b736c][_0x28e7('0x12')]===_0x54ac12['agentEmail']){_0x5ae82d=!![];_0x54ac12['userId']=_0x5c3f41[_0x2b736c]['id'];logger[_0x28e7('0xf')]('User\x20found:',_0x54ac12[_0x28e7('0x22')]);}}}if(!_0x5ae82d){logger[_0x28e7('0xf')](_0x28e7('0x23'));_0x54ac12[_0x28e7('0x21')]=_0x54ac12[_0x28e7('0x13')];_0x54ac12[_0x28e7('0x22')]=_0x54ac12['adminId'];_0x5ae82d=!![];}if(_0x5ae82d){_0x5b2d86(_0x54ac12);}else{_0x308686({'statusCode':0x194,'message':_0x28e7('0x16')});}}else{_0x308686({'statusCode':0x194,'message':_0x28e7('0x16')});}})[_0x28e7('0x17')](function(_0x3f8377){logger[_0x28e7('0x18')]('['+[_0x138d6b[_0x28e7('0x19')]()]+']',_0x3f8377['message']);_0x308686(_0x3f8377);});});};}function searchContact(_0x4a1141,_0x20aa22,_0x557e67,_0x32a892){return new Promise(function(_0x30bd97,_0x3b4a9d){var _0x22f11b={'method':'GET','headers':_0x20aa22,'uri':_0x4a1141+'/api/lookup?q='+_0x32a892+_0x28e7('0x24')+_0x557e67+'&entities=contact','json':!![]};rp(_0x22f11b)['then'](function(_0xf2d155){var _0x3ebb4b=_[_0x28e7('0x25')](_0xf2d155[_0x28e7('0x26')][_0x28e7('0x26')],[_0x557e67,_0x32a892]);_0x30bd97(_0x3ebb4b);})['catch'](function(_0x194297){_0x3b4a9d(_0x194297);});});}function getEndUser(_0x5d6c08,_0x49e63e,_0x28b788){return function(_0x21e247){return new Promise(function(_0x9ec71b,_0xfd3ab1){logger[_0x28e7('0xf')](util[_0x28e7('0x27')](_0x28e7('0x28'),_0x21e247[_0x28e7('0x29')]));searchContact(_0x28b788,_0x49e63e,_0x28e7('0x2a'),_0x21e247[_0x28e7('0x29')])['then'](function(_0xadc4d8){if(_0xadc4d8){_0x21e247[_0x28e7('0x2b')]=_0xadc4d8['id'];logger['info'](_0x28e7('0x2c'),_0x21e247[_0x28e7('0x2b')]);return _0x9ec71b(_0x21e247);}searchContact(_0x28b788,_0x49e63e,_0x28e7('0x2d'),_0x21e247[_0x28e7('0x29')])[_0x28e7('0x1d')](function(_0x56e43c){if(_0x56e43c){_0x21e247[_0x28e7('0x2b')]=_0x56e43c['id'];logger[_0x28e7('0xf')](_0x28e7('0x2e'),_0x21e247[_0x28e7('0x2b')]);return _0x9ec71b(_0x21e247);}createEndUser(_0x21e247,_0x5d6c08,_0x49e63e,_0x28b788)[_0x28e7('0x1d')](function(_0x322bd7){logger[_0x28e7('0xf')](_0x28e7('0x2f'),_0x322bd7[_0x28e7('0x2b')]);return _0x9ec71b(_0x322bd7);});});})['catch'](function(_0x5dc75c){_0xfd3ab1(_0x5dc75c);});});};}function createEndUser(_0x186f69,_0x2cd283,_0x4451ab,_0x31fcf6){return new Promise(function(_0x589e9a,_0x43e65c){var _0x122621=moment();var _0x11e1f7={'method':_0x28e7('0x30'),'uri':_0x31fcf6+'/api/contacts','body':{'contact':{'last_name':_0x186f69['contactNumber'],'work_number':_0x186f69[_0x28e7('0x29')],'mobile_number':_0x186f69['contactNumber'],'owner_id':_0x186f69[_0x28e7('0x22')],'created_at':_0x122621[_0x28e7('0x27')](_0x28e7('0x31'))}},'json':!![]};_0x11e1f7[_0x28e7('0x32')]=_0x4451ab;logger[_0x28e7('0xf')](_0x28e7('0x33'));return rp(_0x11e1f7)[_0x28e7('0x1d')](function(_0x2fb8e8){_0x186f69[_0x28e7('0x2b')]=_0x2fb8e8[_0x28e7('0x34')]['id'];_0x589e9a(_0x186f69);})[_0x28e7('0x17')](function(_0x505a0d){logger[_0x28e7('0x18')]('['+[_0x2cd283[_0x28e7('0x19')]()]+']',_0x505a0d[_0x28e7('0x1a')]);_0x43e65c(_0x505a0d['message']);});});}function getTicket(_0x29b74b,_0x3e0b58,_0x3621f1,_0x4a4494,_0x53fac5){return function(_0x15bfff){logger[_0x28e7('0xf')]('Creating\x20new\x20task');return new Promise(function(_0x5d85ae,_0x5bbaad){var _0x1e8df9=moment();var _0x4a91ba={'method':_0x28e7('0x30'),'uri':_0x3621f1+'/api/tasks','body':{'title':intUtil[_0x28e7('0x35')](_0x4a4494[_0x28e7('0x36')],_0x53fac5,'\x20'),'description':intUtil[_0x28e7('0x35')](_0x4a4494[_0x28e7('0x37')],_0x53fac5,'\x0a'),'owner_id':_0x15bfff[_0x28e7('0x22')],'creater_id':_0x15bfff['adminId'],'targetable_id':_0x15bfff[_0x28e7('0x2b')],'targetable_type':_0x28e7('0x38'),'created_at':_0x1e8df9['format'](_0x28e7('0x31')),'due_date':_0x1e8df9['add'](0x1e,'m')['format'](_0x28e7('0x31'))},'json':!![]};_0x4a91ba['headers']=_0x3e0b58;return rp(_0x4a91ba)[_0x28e7('0x1d')](function(_0x14c576){_0x15bfff[_0x28e7('0x39')]=_0x14c576[_0x28e7('0x3a')]['id'];logger['info'](_0x28e7('0x3b'),_0x15bfff[_0x28e7('0x39')]);_0x5d85ae(_0x15bfff);})[_0x28e7('0x17')](function(_0x1e4752){logger[_0x28e7('0x18')]('['+[_0x29b74b['toUpperCase']()]+']',_0x1e4752[_0x28e7('0x1a')]);_0x5bbaad(_0x1e4752['message']);});});};}function emit(_0x222d90,_0x221bf3,_0x303b5b){var _0x13010c={'uri':_0x222d90+_0x28e7('0x3c')+_0x303b5b};io['to'](util[_0x28e7('0x27')](_0x28e7('0x3d'),_0x221bf3))[_0x28e7('0x3e')](_0x28e7('0x3f'),_0x13010c);}exports['cs']=function(_0x580620,_0x16e7e7,_0xd583b9,_0x3685d5,_0x294baf,_0x20d938,_0x3e0d5c,_0x50ceb1){var _0xa0ee07={};var _0x3b0e7e={'Authorization':'Token\x20token='+_0x20d938[_0x28e7('0x40')]};_0x20d938[_0x28e7('0x41')]=intUtil[_0x28e7('0x42')](_0x20d938[_0x28e7('0x41')]);_0x20d938[_0x28e7('0x43')]=intUtil[_0x28e7('0x42')](_0x20d938['serverUrl']);var _0x429d3a=_0x20d938[_0x28e7('0x41')];_0xa0ee07['adminEmail']=_0x20d938[_0x28e7('0x44')];_0xa0ee07[_0x28e7('0x29')]=_0x50ceb1[_0x28e7('0x45')]()===_0x28e7('0x46')?_0x16e7e7['destcalleridnum']:_0x16e7e7['calleridnum'];_0xa0ee07['callDirection']=_0x50ceb1===_0x28e7('0x47')||_0x50ceb1==='unmanaged'?_0x28e7('0x47'):_0x28e7('0x46');if(_0x3685d5){_0xa0ee07[_0x28e7('0x1f')]=_0x3685d5['email'];}var _0x238808=util[_0x28e7('0x27')](_0x28e7('0x48'),_0x20d938[_0x28e7('0x43')],_0x16e7e7[_0x28e7('0x49')],md5(_0x16e7e7[_0x28e7('0x49')]));if(_0x294baf&&_0x294baf[_0x28e7('0x4a')]){logger['info'](_0x28e7('0x4b'),_0x28e7('0x4c'));_0x16e7e7['recordingURL']=_0x238808;}else if(_0x3e0d5c&&_0x3e0d5c[_0x28e7('0x4d')]&&_0x3e0d5c['recordingFormat']!==_0x28e7('0x4e')){logger[_0x28e7('0xf')](_0x28e7('0x4f'),_0x28e7('0x4c'));_0x16e7e7[_0x28e7('0x50')]=_0x238808;}else{_0x16e7e7['recordingURL']='';}return getAdminId(_0xa0ee07,_0x50ceb1,_0x3b0e7e,_0x429d3a)[_0x28e7('0x1d')](getUser(_0x50ceb1,_0x3b0e7e,_0x429d3a))[_0x28e7('0x1d')](getEndUser(_0x50ceb1,_0x3b0e7e,_0x429d3a))[_0x28e7('0x1d')](getTicket(_0x50ceb1,_0x3b0e7e,_0x429d3a,_0xd583b9,_0x16e7e7))['then'](function(_0x21b115){logger[_0x28e7('0xf')](util[_0x28e7('0x27')]('The\x20ticket\x20ID\x20is:\x20%s',_0x21b115['ticketId']));if(_0x50ceb1!=='unmanaged'){logger[_0x28e7('0xf')]('['+[_0x50ceb1['toUpperCase']()]+']',_0x28e7('0x51'));emit(_0x429d3a,_0x3685d5[_0x28e7('0x52')],_0x21b115[_0x28e7('0x2b')]);}})['catch'](function(_0x3bd9ea){logger[_0x28e7('0x18')]('['+[_0x50ceb1['toUpperCase']()]+']\x20Error\x20running\x20Freshsales\x20integration',util[_0x28e7('0x53')](_0x3bd9ea,{'showHidden':!![],'depth':null}));});};
\ No newline at end of file
index 4c409bd..0c2493f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x595b=['data1','toLowerCase','find','Configurations','queue','log','unmanaged','zendesk','sugarcrm','desk','../../../../config/logger','error','[EXEC]','format','%s\x20configuration\x20#%s\x20not\x20found','data3','%s\x20account\x20#%s\x20not\x20found','util','./zendesk','./salesforce','./sugarcrm','./freshdesk','./zoho','./desk','./vtiger','./servicenow','./freshsales','salesforce','freshdesk','zoho','vtiger','dynamics365','servicenow','includes'];(function(_0x3bf43b,_0x24fadd){var _0xf220a8=function(_0x4ad4d8){while(--_0x4ad4d8){_0x3bf43b['push'](_0x3bf43b['shift']());}};_0xf220a8(++_0x24fadd);}(_0x595b,0x77));var _0xb595=function(_0x3d7d4e,_0x1e6c95){_0x3d7d4e=_0x3d7d4e-0x0;var _0x461b4e=_0x595b[_0x3d7d4e];return _0x461b4e;};'use strict';var _=require('lodash');var util=require(_0xb595('0x0'));var zendesk=require(_0xb595('0x1'));var salesforce=require(_0xb595('0x2'));var sugarcrm=require(_0xb595('0x3'));var freshdesk=require(_0xb595('0x4'));var zoho=require(_0xb595('0x5'));var desk=require(_0xb595('0x6'));var vtiger=require(_0xb595('0x7'));var servicenow=require(_0xb595('0x8'));var dynamics365=require('./dynamics365');var freshsales=require(_0xb595('0x9'));var integrations=['zendesk',_0xb595('0xa'),'sugarcrm',_0xb595('0xb'),_0xb595('0xc'),'desk',_0xb595('0xd'),_0xb595('0xe'),'freshsales',_0xb595('0xf')];exports['exec']=function(_0x4f182a,_0x42b050,_0x47353a,_0x47821a,_0xd23ecb,_0x3f86f8){if(_0x47353a){if(_[_0xb595('0x10')](integrations,_0x4f182a[_0xb595('0x11')][_0xb595('0x12')]())){try{var _0x3f2e7e=null;var _0x3f8005='';var _0x4ed7fa=_0x47353a[_0x4f182a[_0xb595('0x11')][_0xb595('0x12')]()];if(_0x4ed7fa){var _0x220576=_0x4ed7fa[_0x4f182a['data2']];if(_0x220576){var _0x5a434d=_[_0xb595('0x13')](_0x220576[_0xb595('0x14')],{'id':parseInt(_0x4f182a['data3'],0xa)});if(_0x5a434d){if(_0x47821a){if(_0xd23ecb&&_0x42b050[_0xb595('0x15')]){_0x3f8005=_0xb595('0x15');}else if(_0x42b050['routeId']){_0x3f8005='outbound';}else{console[_0xb595('0x16')]('EVENT\x20UNKNOWN',_0x42b050);}}else{_0x3f8005=_0xb595('0x17');}switch(_0x4f182a['data1'][_0xb595('0x12')]()){case _0xb595('0x18'):zendesk[_0x3f8005](_0x4f182a,_0x42b050,_0x5a434d,_0x47821a,_0xd23ecb,_0x220576,_0x3f86f8);break;case _0xb595('0xa'):salesforce[_0x3f8005](_0x4f182a,_0x42b050,_0x5a434d,_0x47821a,_0xd23ecb,_0x220576,_0x3f86f8);break;case _0xb595('0x19'):sugarcrm[_0x3f8005](_0x4f182a,_0x42b050,_0x5a434d,_0x47821a,_0xd23ecb,_0x220576,_0x3f86f8);break;case'freshdesk':freshdesk[_0x3f8005](_0x4f182a,_0x42b050,_0x5a434d,_0x47821a,_0xd23ecb,_0x220576,_0x3f86f8);break;case _0xb595('0xc'):zoho[_0x3f8005](_0x4f182a,_0x42b050,_0x5a434d,_0x47821a,_0xd23ecb,_0x220576,_0x3f86f8);break;case _0xb595('0x1a'):desk[_0x3f8005](_0x4f182a,_0x42b050,_0x5a434d,_0x47821a,_0xd23ecb,_0x220576,_0x3f86f8);break;case _0xb595('0xd'):vtiger[_0x3f8005](_0x4f182a,_0x42b050,_0x5a434d,_0x47821a,_0xd23ecb,_0x220576,_0x3f86f8);break;case'freshsales':freshsales['cs'](_0x4f182a,_0x42b050,_0x5a434d,_0x47821a,_0xd23ecb,_0x220576,_0x3f86f8,_0x3f8005);break;case _0xb595('0xf'):servicenow['cs'](_0x4f182a,_0x42b050,_0x5a434d,_0x47821a,_0xd23ecb,_0x220576,_0x3f86f8,_0x3f8005);break;case _0xb595('0xe'):dynamics365['cs'](_0x4f182a,_0x42b050,_0x5a434d,_0x47821a,_0xd23ecb,_0x220576,_0x3f86f8,_0x3f8005);break;default:console[_0xb595('0x16')]('unknown\x20integration');}}else{_0x3f2e7e=require(_0xb595('0x1b'))(_0x4f182a[_0xb595('0x11')][_0xb595('0x12')]());_0x3f2e7e[_0xb595('0x1c')](_0xb595('0x1d'),util[_0xb595('0x1e')](_0xb595('0x1f'),_0x4f182a[_0xb595('0x11')][_0xb595('0x12')](),_0x4f182a[_0xb595('0x20')]));}}else{_0x3f2e7e=require(_0xb595('0x1b'))(_0x4f182a[_0xb595('0x11')][_0xb595('0x12')]());_0x3f2e7e[_0xb595('0x1c')](_0xb595('0x1d'),util[_0xb595('0x1e')](_0xb595('0x21'),_0x4f182a[_0xb595('0x11')][_0xb595('0x12')](),_0x4f182a['data2']));}}else{}}catch(_0x3736f4){console['error'](_0x3736f4);}}}};
\ No newline at end of file
+var _0x249e=['./desk','./servicenow','./dynamics365','./freshsales','zendesk','salesforce','sugarcrm','freshdesk','zoho','desk','vtiger','dynamics365','freshsales','servicenow','exec','includes','data1','toLowerCase','data2','find','Configurations','data3','routeId','outbound','log','unmanaged','unknown\x20integration','../../../../config/logger','error','[EXEC]','format','%s\x20configuration\x20#%s\x20not\x20found','util','./zendesk','./sugarcrm','./freshdesk'];(function(_0x25e7cb,_0x3579b7){var _0x375d92=function(_0xe8cf3b){while(--_0xe8cf3b){_0x25e7cb['push'](_0x25e7cb['shift']());}};_0x375d92(++_0x3579b7);}(_0x249e,0x1d0));var _0xe249=function(_0x5b0a5a,_0x438f3c){_0x5b0a5a=_0x5b0a5a-0x0;var _0x586b54=_0x249e[_0x5b0a5a];return _0x586b54;};'use strict';var _=require('lodash');var util=require(_0xe249('0x0'));var zendesk=require(_0xe249('0x1'));var salesforce=require('./salesforce');var sugarcrm=require(_0xe249('0x2'));var freshdesk=require(_0xe249('0x3'));var zoho=require('./zoho');var desk=require(_0xe249('0x4'));var vtiger=require('./vtiger');var servicenow=require(_0xe249('0x5'));var dynamics365=require(_0xe249('0x6'));var freshsales=require(_0xe249('0x7'));var integrations=[_0xe249('0x8'),_0xe249('0x9'),_0xe249('0xa'),_0xe249('0xb'),_0xe249('0xc'),_0xe249('0xd'),_0xe249('0xe'),_0xe249('0xf'),_0xe249('0x10'),_0xe249('0x11')];exports[_0xe249('0x12')]=function(_0x3f99a9,_0x224cb5,_0x1deb4e,_0x5ddd18,_0x48ced1,_0x149a5f){if(_0x1deb4e){if(_[_0xe249('0x13')](integrations,_0x3f99a9[_0xe249('0x14')][_0xe249('0x15')]())){try{var _0x227aae=null;var _0x4245a5='';var _0x5a842a=_0x1deb4e[_0x3f99a9['data1']['toLowerCase']()];if(_0x5a842a){var _0x155bb6=_0x5a842a[_0x3f99a9[_0xe249('0x16')]];if(_0x155bb6){var _0x19bea7=_[_0xe249('0x17')](_0x155bb6[_0xe249('0x18')],{'id':parseInt(_0x3f99a9[_0xe249('0x19')],0xa)});if(_0x19bea7){if(_0x5ddd18){if(_0x48ced1&&_0x224cb5['queue']){_0x4245a5='queue';}else if(_0x224cb5[_0xe249('0x1a')]){_0x4245a5=_0xe249('0x1b');}else{console[_0xe249('0x1c')]('EVENT\x20UNKNOWN',_0x224cb5);}}else{_0x4245a5=_0xe249('0x1d');}switch(_0x3f99a9[_0xe249('0x14')][_0xe249('0x15')]()){case'zendesk':zendesk[_0x4245a5](_0x3f99a9,_0x224cb5,_0x19bea7,_0x5ddd18,_0x48ced1,_0x155bb6,_0x149a5f);break;case _0xe249('0x9'):salesforce[_0x4245a5](_0x3f99a9,_0x224cb5,_0x19bea7,_0x5ddd18,_0x48ced1,_0x155bb6,_0x149a5f);break;case _0xe249('0xa'):sugarcrm[_0x4245a5](_0x3f99a9,_0x224cb5,_0x19bea7,_0x5ddd18,_0x48ced1,_0x155bb6,_0x149a5f);break;case'freshdesk':freshdesk[_0x4245a5](_0x3f99a9,_0x224cb5,_0x19bea7,_0x5ddd18,_0x48ced1,_0x155bb6,_0x149a5f);break;case _0xe249('0xc'):zoho[_0x4245a5](_0x3f99a9,_0x224cb5,_0x19bea7,_0x5ddd18,_0x48ced1,_0x155bb6,_0x149a5f);break;case _0xe249('0xd'):desk[_0x4245a5](_0x3f99a9,_0x224cb5,_0x19bea7,_0x5ddd18,_0x48ced1,_0x155bb6,_0x149a5f);break;case'vtiger':vtiger[_0x4245a5](_0x3f99a9,_0x224cb5,_0x19bea7,_0x5ddd18,_0x48ced1,_0x155bb6,_0x149a5f);break;case _0xe249('0x10'):freshsales['cs'](_0x3f99a9,_0x224cb5,_0x19bea7,_0x5ddd18,_0x48ced1,_0x155bb6,_0x149a5f,_0x4245a5);break;case _0xe249('0x11'):servicenow['cs'](_0x3f99a9,_0x224cb5,_0x19bea7,_0x5ddd18,_0x48ced1,_0x155bb6,_0x149a5f,_0x4245a5);break;case _0xe249('0xf'):dynamics365['cs'](_0x3f99a9,_0x224cb5,_0x19bea7,_0x5ddd18,_0x48ced1,_0x155bb6,_0x149a5f,_0x4245a5);break;default:console[_0xe249('0x1c')](_0xe249('0x1e'));}}else{_0x227aae=require(_0xe249('0x1f'))(_0x3f99a9['data1'][_0xe249('0x15')]());_0x227aae[_0xe249('0x20')](_0xe249('0x21'),util[_0xe249('0x22')](_0xe249('0x23'),_0x3f99a9[_0xe249('0x14')][_0xe249('0x15')](),_0x3f99a9[_0xe249('0x19')]));}}else{_0x227aae=require(_0xe249('0x1f'))(_0x3f99a9[_0xe249('0x14')][_0xe249('0x15')]());_0x227aae['error'](_0xe249('0x21'),util['format']('%s\x20account\x20#%s\x20not\x20found',_0x3f99a9[_0xe249('0x14')][_0xe249('0x15')](),_0x3f99a9['data2']));}}else{}}catch(_0x4a2993){console[_0xe249('0x20')](_0x4a2993);}}}};
\ No newline at end of file
index bda25fc..bdeb5c3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2a64=['bluebird','util','ioredis','./util','../../../../config/logger','salesforce','socket.io-emitter','redis','emit','assign','getString','Subjects','Descriptions','ActivityDate','IsReminderSet','endUserType','contact','WhoId','account','ticketType','Case','ContactId','AccountId','lead','leadId','info','Association\x20between\x20Case\x20and\x20Lead\x20skipped','sobject','create','isNil','validateEmail','User','find','execute','then','length','Email','Agent\x20%s\x20found.','identity','resolve','user_id','display_name','Agent\x20%s\x20not\x20found.\x20Switch\x20to\x20the\x20admin\x20account.','Searching\x20enduser\x20with\x20phone\x20%s.\x20Serching\x20method\x20used\x20%s.','moduleSearch','contact_lead','cloneDeep','additionalSearchContact','merge','Contact','additionalSearchLead','$or','account_contact_lead','additionalSearchAccount','Account','Lead','first','Name','Phone','attributes','toLowerCase','Enduser\x20with\x20phone\x20%s\x20not\x20found','moduleCreate','Enduser\x20with\x20phone\x20%s.\x20Creating\x20method\x20used\x20%s.','LastName','<unknown>','Caller\x20-\x20%s','format','Company','No\x20Company','upperFirst','includes','string','picklist','type','idField','content','toString','variable','variableName','Variable','name','password','concat','Connection','login','username','Connection\x20established.','queue','serverUrl','stripTrailingSlash','monitor_format','[QUEUE]','Recording\x20is\x20enabled!','recordingURL','uniqueid','email','calleridnum','Fields','[QUEUE]\x20Ticket\x20%s\x20created','[QUEUE]\x20Displaying\x20ticket\x20%s\x20to\x20agent\x20%s.\x20Integration\x20account\x20type\x20%s.','integrationTab','newTab','user:%s','%s/%s/e','error','[QUEUE]\x20Salesforce\x20account\x20type\x20not\x20recognized.','catch','remoteUri','recordingFormat','none','[OUTBOUND]','%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s','destcalleridname','destcalleridnum','[OUTBOUND]\x20Ticket\x20%s\x20created.','[OUTBOUND]\x20Displaying\x20ticket\x20%s\x20to\x20agent\x20%s.\x20Integration\x20account\x20type\x20%s.','trigger:salesforce:display','trigger:browser:url','Salesforce\x20account\x20type\x20not\x20recognized','unmanaged','lastevent','toUpperCase','calleridname',']\x20Integration\x20account\x20type\x20%s.','lodash','request-promise'];(function(_0x59ee6f,_0x450239){var _0x4c0979=function(_0x565e92){while(--_0x565e92){_0x59ee6f['push'](_0x59ee6f['shift']());}};_0x4c0979(++_0x450239);}(_0x2a64,0x17b));var _0x42a6=function(_0x48eb26,_0x5b07cb){_0x48eb26=_0x48eb26-0x0;var _0x376e2b=_0x2a64[_0x48eb26];return _0x376e2b;};'use strict';var _=require(_0x42a6('0x0'));var rp=require(_0x42a6('0x1'));var moment=require('moment');var BPromise=require(_0x42a6('0x2'));var md5=require('md5');var jsforce=require('jsforce');var util=require(_0x42a6('0x3'));var Redis=require(_0x42a6('0x4'));var intUtil=require(_0x42a6('0x5'));var config=require('../../../../config/environment');var logger=require(_0x42a6('0x6'))(_0x42a6('0x7'));config['redis']=_['defaults'](config['redis'],{'host':'localhost','port':0x18eb});var io=require(_0x42a6('0x8'))(new Redis(config[_0x42a6('0x9')]));function emit(_0x3754df,_0x5321f9,_0x12d636){io['to'](_0x3754df)[_0x42a6('0xa')](_0x5321f9,_0x12d636);}function getTicket(_0x1690ad,_0x4b098f,_0xab6c67,_0x38bda9,_0x463b4e,_0x4faa68,_0x39f293,_0x297741){var _0x1ab477=Object[_0x42a6('0xb')]({},{'OwnerId':_0x4b098f['id'],'Subject':intUtil[_0x42a6('0xc')](_0x38bda9[_0x42a6('0xd')],_0x463b4e,'\x20'),'Description':intUtil[_0x42a6('0xc')](_0x38bda9[_0x42a6('0xe')],_0x463b4e,'\x0a')},getCustomFields(_0x4faa68,_0x463b4e));if(_0xab6c67){if(_0x38bda9['ticketType']==='Task'){_0x1ab477[_0x42a6('0xf')]=moment['utc']();_0x1ab477[_0x42a6('0x10')]=![];_0x1ab477['IsRecurrence']=![];if(_0xab6c67[_0x42a6('0x11')]===_0x42a6('0x12')||_0xab6c67[_0x42a6('0x11')]==='lead'){_0x1ab477[_0x42a6('0x13')]=_0xab6c67['id'];}else if(_0xab6c67['endUserType']===_0x42a6('0x14')){_0x1ab477['WhatId']=_0xab6c67['id'];}}else if(_0x38bda9[_0x42a6('0x15')]===_0x42a6('0x16')){if(_0xab6c67[_0x42a6('0x11')]==='contact'){_0x1ab477[_0x42a6('0x17')]=_0xab6c67['id'];}else if(_0xab6c67[_0x42a6('0x11')]===_0x42a6('0x14')){_0x1ab477[_0x42a6('0x18')]=_0xab6c67['id'];}else if(_0xab6c67[_0x42a6('0x11')]===_0x42a6('0x19')&&_0x38bda9[_0x42a6('0x1a')]){_0x1ab477[_0x38bda9['leadId']]=_0xab6c67['id'];}else{logger[_0x42a6('0x1b')](_0x42a6('0x1c'));}}}return _0x39f293[_0x42a6('0x1d')](_0x38bda9[_0x42a6('0x15')])[_0x42a6('0x1e')](_0x1ab477);}function getUser(_0x1602d7,_0x53057b,_0x4cf8c3){if(!_[_0x42a6('0x1f')](_0x53057b)&&intUtil[_0x42a6('0x20')](_0x53057b)){var _0x390012={'Email':_0x53057b};var _0x17767b={'Id':!![],'Username':!![],'Name':!![],'Email':!![]};return _0x4cf8c3[_0x42a6('0x1d')](_0x42a6('0x21'))[_0x42a6('0x22')](_0x390012,_0x17767b)[_0x42a6('0x23')]()[_0x42a6('0x24')](function(_0x3dd723){if(_0x3dd723[_0x42a6('0x25')]){var _0x596204=_[_0x42a6('0x22')](_0x3dd723,function(_0x1d7990){return _0x1d7990[_0x42a6('0x26')]===_0x53057b;});if(_0x596204){logger[_0x42a6('0x1b')](_0x42a6('0x27'),_0x53057b);return BPromise['resolve']({'id':_0x596204['Id'],'name':_0x596204['Name']});}}else{logger['info']('Agent\x20%s\x20not\x20found.\x20Switch\x20to\x20the\x20admin\x20account.',_0x53057b);return _0x4cf8c3[_0x42a6('0x28')]()[_0x42a6('0x24')](function(_0x2ccfd7){return BPromise[_0x42a6('0x29')]({'id':_0x2ccfd7[_0x42a6('0x2a')],'name':_0x2ccfd7[_0x42a6('0x2b')]});});}});}else{logger['info'](_0x42a6('0x2c'),_0x53057b);return _0x4cf8c3[_0x42a6('0x28')]()[_0x42a6('0x24')](function(_0x45defd){return BPromise[_0x42a6('0x29')]({'id':_0x45defd[_0x42a6('0x2a')],'name':_0x45defd[_0x42a6('0x2b')]});});}}function getEndUser(_0xd0db0f,_0x49b560,_0x5942ff,_0x90c355,_0x206942){var _0x7005b2={'$or':{'Phone':_0x90c355}};var _0x5c95c8={'Id':!![],'Name':!![],'Phone':!![]};return BPromise[_0x42a6('0x29')]()[_0x42a6('0x24')](function(){logger[_0x42a6('0x1b')](_0x42a6('0x2d'),_0x90c355,_0x49b560[_0x42a6('0x2e')]);switch(_0x49b560[_0x42a6('0x2e')]){case _0x42a6('0x2f'):var _0x20fcfd=_[_0x42a6('0x30')](_0x7005b2);if(_0x49b560[_0x42a6('0x31')]){var _0x44ab93={};_0x44ab93[_0x49b560['additionalSearchContact']]=_0x90c355;_[_0x42a6('0x32')](_0x20fcfd['$or'],_0x44ab93);}return _0x206942[_0x42a6('0x1d')](_0x42a6('0x33'))[_0x42a6('0x22')](_0x20fcfd,_0x5c95c8)[_0x42a6('0x23')]()[_0x42a6('0x24')](function(_0x53801d){if(_0x53801d&&_0x53801d['length']){return _0x53801d;}else{var _0x5ada4d=_[_0x42a6('0x30')](_0x7005b2);if(_0x49b560[_0x42a6('0x34')]){var _0x30a46b={};_0x30a46b[_0x49b560[_0x42a6('0x34')]]=_0x90c355;_[_0x42a6('0x32')](_0x5ada4d[_0x42a6('0x35')],_0x30a46b);}return _0x206942[_0x42a6('0x1d')]('Lead')[_0x42a6('0x22')](_0x5ada4d,_0x5c95c8);}});case _0x42a6('0x36'):var _0x12a900=_[_0x42a6('0x30')](_0x7005b2);if(_0x49b560[_0x42a6('0x37')]){var _0x44ab93={};_0x44ab93[_0x49b560[_0x42a6('0x37')]]=_0x90c355;_[_0x42a6('0x32')](_0x12a900['$or'],_0x44ab93);}return _0x206942['sobject'](_0x42a6('0x38'))[_0x42a6('0x22')](_0x12a900,_0x5c95c8)[_0x42a6('0x23')]()[_0x42a6('0x24')](function(_0x2c252f){if(_0x2c252f&&_0x2c252f[_0x42a6('0x25')]){return _0x2c252f;}else{var _0x551fe6=_[_0x42a6('0x30')](_0x7005b2);if(_0x49b560[_0x42a6('0x31')]){var _0x1fe3b1={};_0x1fe3b1[_0x49b560[_0x42a6('0x31')]]=_0x90c355;_[_0x42a6('0x32')](_0x551fe6[_0x42a6('0x35')],_0x1fe3b1);}return _0x206942[_0x42a6('0x1d')](_0x42a6('0x33'))['find'](_0x551fe6,_0x5c95c8)[_0x42a6('0x24')](function(_0x54ce19){if(_0x54ce19&&_0x54ce19['length']){return _0x54ce19;}else{var _0x216eb8=_[_0x42a6('0x30')](_0x7005b2);if(_0x49b560[_0x42a6('0x34')]){var _0x1044a5={};_0x1044a5[_0x49b560['additionalSearchLead']]=_0x90c355;_['merge'](_0x216eb8[_0x42a6('0x35')],_0x1044a5);}return _0x206942[_0x42a6('0x1d')](_0x42a6('0x39'))[_0x42a6('0x22')](_0x216eb8,_0x5c95c8);}});}});case _0x42a6('0x12'):var _0x20fcfd=_['cloneDeep'](_0x7005b2);if(_0x49b560['additionalSearchContact']){var _0x44ab93={};_0x44ab93[_0x49b560[_0x42a6('0x31')]]=_0x90c355;_[_0x42a6('0x32')](_0x20fcfd[_0x42a6('0x35')],_0x44ab93);}return _0x206942['sobject'](_0x42a6('0x33'))[_0x42a6('0x22')](_0x20fcfd,_0x5c95c8)[_0x42a6('0x23')]();case _0x42a6('0x19'):var _0x1f90a2=_[_0x42a6('0x30')](_0x7005b2);if(_0x49b560[_0x42a6('0x34')]){var _0x44ab93={};_0x44ab93[_0x49b560['additionalSearchLead']]=_0x90c355;_[_0x42a6('0x32')](_0x1f90a2[_0x42a6('0x35')],_0x44ab93);}return _0x206942[_0x42a6('0x1d')](_0x42a6('0x39'))[_0x42a6('0x22')](_0x1f90a2,_0x5c95c8);case'account':var _0x12a900=_[_0x42a6('0x30')](_0x7005b2);if(_0x49b560[_0x42a6('0x37')]){var _0x44ab93={};_0x44ab93[_0x49b560[_0x42a6('0x37')]]=_0x90c355;_['merge'](_0x12a900['$or'],_0x44ab93);}return _0x206942[_0x42a6('0x1d')](_0x42a6('0x38'))[_0x42a6('0x22')](_0x12a900,_0x5c95c8);default:return null;}})[_0x42a6('0x24')](function(_0xb3a414){if(_0xb3a414&&_0xb3a414[_0x42a6('0x25')]){var _0xc4e18a=_[_0x42a6('0x3a')](_0xb3a414);if(_0xc4e18a){return BPromise[_0x42a6('0x29')]({'id':_0xc4e18a['Id'],'name':_0xc4e18a[_0x42a6('0x3b')],'phone':_0xc4e18a[_0x42a6('0x3c')],'endUserType':_0xc4e18a[_0x42a6('0x3d')]['type'][_0x42a6('0x3e')]()});}}})[_0x42a6('0x24')](function(_0x407308){if(_0x407308){logger[_0x42a6('0x1b')]('Enduser\x20(%s)\x20with\x20phone\x20%s\x20found',_0x407308[_0x42a6('0x11')],_0x90c355);return BPromise[_0x42a6('0x29')](_0x407308);}else{logger[_0x42a6('0x1b')](_0x42a6('0x3f'),_0x90c355);var _0x441075={'Phone':_0x90c355};if(_0x49b560[_0x42a6('0x40')]){if(_0x49b560['moduleCreate']===_0x42a6('0x12')){logger[_0x42a6('0x1b')](_0x42a6('0x41'),_0x90c355,_0x49b560[_0x42a6('0x40')]);_0x441075[_0x42a6('0x42')]=_0x5942ff!==_0x42a6('0x43')?_0x5942ff:util['format'](_0x42a6('0x44'),_0x90c355);}else if(_0x49b560[_0x42a6('0x40')]==='lead'){logger['info'](_0x42a6('0x41'),_0x90c355,_0x49b560['moduleCreate']);_0x441075[_0x42a6('0x42')]=_0x5942ff!=='<unknown>'?_0x5942ff:util[_0x42a6('0x45')](_0x42a6('0x44'),_0x90c355);_0x441075[_0x42a6('0x46')]=_0x42a6('0x47');}else if(_0x49b560[_0x42a6('0x40')]==='account'){logger[_0x42a6('0x1b')](_0x42a6('0x41'),_0x90c355,_0x49b560[_0x42a6('0x40')]);_0x441075['Name']=_0x5942ff!==_0x42a6('0x43')?_0x5942ff:util[_0x42a6('0x45')](_0x42a6('0x44'),_0x90c355);}else{return null;}}return _0x206942['sobject'](_[_0x42a6('0x48')](_0x49b560[_0x42a6('0x40')]))['create'](_0x441075)['then'](function(_0x1a7f4d){return BPromise[_0x42a6('0x29')]({'id':_0x1a7f4d['id'],'endUserType':_0x49b560[_0x42a6('0x40')]});});}});}function getCustomFields(_0x230dea,_0x17b5b1){var _0x558885={};if(_0x230dea['length']>0x0){_['forEach'](_0x230dea,function(_0x205748){if(_[_0x42a6('0x49')]([_0x42a6('0x4a'),_0x42a6('0x4b')],_0x205748[_0x42a6('0x4c')])&&_0x205748['idField']){_0x558885[_0x205748[_0x42a6('0x4d')]]=_0x205748[_0x42a6('0x4e')][_0x42a6('0x4f')]();}else if(_0x205748['type']===_0x42a6('0x50')&&_0x205748['variableName']&&_0x205748[_0x42a6('0x4d')]){_0x17b5b1[_0x205748[_0x42a6('0x51')]]&&(_0x558885[_0x205748[_0x42a6('0x4d')]]=_0x17b5b1[_0x205748['variableName']][_0x42a6('0x4f')]());}else if(_0x205748[_0x42a6('0x4c')]==='customVariable'&&_0x205748['Variable']&&_0x205748[_0x42a6('0x52')][_0x42a6('0x53')]&&_0x205748[_0x42a6('0x4d')]){_0x17b5b1[_0x205748[_0x42a6('0x52')]['name'][_0x42a6('0x3e')]()]&&(_0x558885[_0x205748['idField']]=_0x17b5b1[_0x205748[_0x42a6('0x52')][_0x42a6('0x53')][_0x42a6('0x3e')]()][_0x42a6('0x4f')]());}});}return _0x558885;}function getConnection(_0x1404ae){var _0x5394b2=_0x1404ae[_0x42a6('0x54')][_0x42a6('0x55')](_0x1404ae['securityToken']);var _0xe16000=new jsforce[(_0x42a6('0x56'))]({'oauth2':{'loginUrl':_0x1404ae['remoteUri']||'https://login.salesforce.com','clientId':_0x1404ae['clientId'],'clientSecret':_0x1404ae['clientSecret']}});return _0xe16000[_0x42a6('0x57')](_0x1404ae[_0x42a6('0x58')],_0x5394b2)[_0x42a6('0x24')](function(){logger[_0x42a6('0x1b')](_0x42a6('0x59'));return _0xe16000;});}exports[_0x42a6('0x5a')]=function(_0x145240,_0x299b91,_0x3b930c,_0x536faa,_0x2d012b,_0x2adab8){var _0x2236e5,_0x2193fb,_0x47788d,_0x237a37;_0x2adab8['serverUrl']=intUtil['stripTrailingSlash'](_0x2adab8[_0x42a6('0x5b')]);_0x2adab8['remoteUri']=intUtil[_0x42a6('0x5c')](_0x2adab8['remoteUri']);if(_0x2d012b&&_0x2d012b[_0x42a6('0x5d')]){logger[_0x42a6('0x1b')](_0x42a6('0x5e'),_0x42a6('0x5f'));_0x299b91[_0x42a6('0x60')]=util['format']('%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s',_0x2adab8[_0x42a6('0x5b')],_0x299b91['uniqueid'],md5(_0x299b91[_0x42a6('0x61')]));}else{_0x299b91[_0x42a6('0x60')]='';}return getConnection(_0x2adab8)['then'](function(_0x533835){_0x237a37=_0x533835;return getUser(_0x2adab8,_0x536faa[_0x42a6('0x62')],_0x237a37);})['then'](function(_0x53403d){_0x2236e5=_0x53403d;return getEndUser(_0x2adab8,_0x3b930c,_0x299b91['calleridname'],_0x299b91[_0x42a6('0x63')],_0x237a37);})['then'](function(_0x4cfbee){_0x2193fb=_0x4cfbee;return getTicket(_0x2adab8,_0x2236e5,_0x2193fb,_0x3b930c,_0x299b91,_0x3b930c[_0x42a6('0x64')],_0x237a37,'queue');})[_0x42a6('0x24')](function(_0x116e27){_0x47788d=_0x116e27;logger['info'](_0x42a6('0x65'),_0x47788d['id']);logger[_0x42a6('0x1b')](_0x42a6('0x66'),_0x47788d['id'],_0x536faa[_0x42a6('0x53')],_0x2adab8[_0x42a6('0x4c')]);switch(_0x2adab8['type']){case _0x42a6('0x67'):emit(util[_0x42a6('0x45')]('user:%s',_0x536faa[_0x42a6('0x53')]),'trigger:salesforce:display',{'recordId':_0x47788d['id']});break;case _0x42a6('0x68'):emit(util[_0x42a6('0x45')](_0x42a6('0x69'),_0x536faa[_0x42a6('0x53')]),'trigger:browser:url',{'uri':util['format'](_0x42a6('0x6a'),_0x237a37['instanceUrl'],_0x47788d['id'])});break;default:logger[_0x42a6('0x6b')](_0x42a6('0x6c'));}})[_0x42a6('0x6d')](function(_0xa063a5){logger[_0x42a6('0x6b')]('[QUEUE]',_0xa063a5);});};exports['outbound']=function(_0x20730e,_0x2a608b,_0x6f1d22,_0x1c1af6,_0x2bf8de,_0x55542b,_0x127f21){var _0x363f2f,_0x2b86c6,_0x548b91,_0x527d8c;_0x55542b[_0x42a6('0x5b')]=intUtil['stripTrailingSlash'](_0x55542b[_0x42a6('0x5b')]);_0x55542b[_0x42a6('0x6e')]=intUtil[_0x42a6('0x5c')](_0x55542b['remoteUri']);if(_0x127f21&&_0x127f21[_0x42a6('0x6f')]&&_0x127f21['recordingFormat']!==_0x42a6('0x70')){logger[_0x42a6('0x1b')](_0x42a6('0x71'),'Recording\x20is\x20enabled!');_0x2a608b[_0x42a6('0x60')]=util[_0x42a6('0x45')](_0x42a6('0x72'),_0x55542b['serverUrl'],_0x2a608b[_0x42a6('0x61')],md5(_0x2a608b['uniqueid']));}return getConnection(_0x55542b)[_0x42a6('0x24')](function(_0x57aa38){_0x527d8c=_0x57aa38;return getUser(_0x55542b,_0x1c1af6[_0x42a6('0x62')],_0x527d8c);})[_0x42a6('0x24')](function(_0x85fe0e){_0x363f2f=_0x85fe0e;return getEndUser(_0x55542b,_0x6f1d22,_0x2a608b[_0x42a6('0x73')],_0x2a608b[_0x42a6('0x74')],_0x527d8c);})[_0x42a6('0x24')](function(_0x1217cc){_0x2b86c6=_0x1217cc;return getTicket(_0x55542b,_0x363f2f,_0x2b86c6,_0x6f1d22,_0x2a608b,_0x6f1d22[_0x42a6('0x64')],_0x527d8c,'outbound');})[_0x42a6('0x24')](function(_0x2c4803){_0x548b91=_0x2c4803;logger[_0x42a6('0x1b')](_0x42a6('0x75'),_0x548b91['id']);logger[_0x42a6('0x1b')](_0x42a6('0x76'),_0x548b91['id'],_0x1c1af6[_0x42a6('0x53')],_0x55542b[_0x42a6('0x4c')]);switch(_0x55542b[_0x42a6('0x4c')]){case _0x42a6('0x67'):emit(util['format']('user:%s',_0x1c1af6[_0x42a6('0x53')]),_0x42a6('0x77'),{'recordId':_0x548b91['id']});break;case _0x42a6('0x68'):emit(util[_0x42a6('0x45')]('user:%s',_0x1c1af6[_0x42a6('0x53')]),_0x42a6('0x78'),{'uri':util[_0x42a6('0x45')](_0x42a6('0x6a'),_0x527d8c['instanceUrl'],_0x548b91['id'])});break;default:logger['error'](_0x42a6('0x71'),_0x42a6('0x79'));}})['catch'](function(_0x59812f){logger[_0x42a6('0x6b')]('[OUTBOUND]',_0x59812f);});};exports[_0x42a6('0x7a')]=function(_0x304259,_0x1fc932,_0x248213,_0x5eb996,_0xd884f,_0x263eaf){var _0x406f1c,_0x250f65,_0x57033d,_0x460230;_0x263eaf[_0x42a6('0x5b')]=intUtil['stripTrailingSlash'](_0x263eaf[_0x42a6('0x5b')]);_0x263eaf[_0x42a6('0x6e')]=intUtil['stripTrailingSlash'](_0x263eaf[_0x42a6('0x6e')]);if(_0xd884f&&_0xd884f['monitor_format']){logger[_0x42a6('0x1b')]('['+_0x1fc932[_0x42a6('0x7b')][_0x42a6('0x7c')]()+']','Recording\x20is\x20enabled!');_0x1fc932[_0x42a6('0x60')]=util[_0x42a6('0x45')](_0x42a6('0x72'),_0x263eaf['serverUrl'],_0x1fc932['uniqueid'],md5(_0x1fc932[_0x42a6('0x61')]));}else{_0x1fc932[_0x42a6('0x60')]='';}return getConnection(_0x263eaf)['then'](function(_0x225191){_0x460230=_0x225191;if(!_[_0x42a6('0x1f')](_0x5eb996)){return getUser(_0x263eaf,_0x5eb996[_0x42a6('0x53')],_0x460230);}else{return getUser(_0x263eaf,null,_0x460230);}})['then'](function(_0x3df313){_0x406f1c=_0x3df313;return getEndUser(_0x263eaf,_0x248213,_0x1fc932[_0x42a6('0x7d')],_0x1fc932[_0x42a6('0x63')],_0x460230);})['then'](function(_0x487453){_0x250f65=_0x487453;return getTicket(_0x263eaf,_0x406f1c,_0x250f65,_0x248213,_0x1fc932,_0x248213['Fields'],_0x460230);})['then'](function(_0x4f3509){_0x57033d=_0x4f3509;logger[_0x42a6('0x1b')]('['+_0x1fc932[_0x42a6('0x7b')][_0x42a6('0x7c')]()+']\x20Ticket\x20%s\x20created.',_0x57033d['id']);logger[_0x42a6('0x1b')]('['+_0x1fc932[_0x42a6('0x7b')][_0x42a6('0x7c')]()+_0x42a6('0x7e'),_0x263eaf[_0x42a6('0x4c')]);})[_0x42a6('0x6d')](function(_0x2cdec1){logger['error']('['+_0x1fc932[_0x42a6('0x7b')][_0x42a6('0x7c')]()+']',_0x2cdec1);});};
\ No newline at end of file
+var _0xc909=['unmanaged','lastevent','toUpperCase',']\x20Ticket\x20%s\x20created.',']\x20Integration\x20account\x20type\x20%s.','lodash','md5','jsforce','util','ioredis','../../../../config/environment','../../../../config/logger','salesforce','redis','defaults','localhost','socket.io-emitter','assign','getString','Subjects','Descriptions','ticketType','Task','ActivityDate','utc','IsRecurrence','endUserType','contact','WhoId','account','Case','ContactId','AccountId','lead','leadId','info','Association\x20between\x20Case\x20and\x20Lead\x20skipped','sobject','isNil','validateEmail','User','find','execute','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','then','additionalSearchLead','merge','Lead','account_contact_lead','additionalSearchAccount','Account','Phone','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','<unknown>','format','Caller\x20-\x20%s','Company','No\x20Company','upperFirst','create','string','picklist','idField','content','variable','variableName','toString','customVariable','Variable','name','securityToken','Connection','remoteUri','https://login.salesforce.com','clientSecret','login','username','Connection\x20established.','queue','serverUrl','stripTrailingSlash','monitor_format','[QUEUE]','Recording\x20is\x20enabled!','uniqueid','email','calleridnum','[QUEUE]\x20Ticket\x20%s\x20created','[QUEUE]\x20Displaying\x20ticket\x20%s\x20to\x20agent\x20%s.\x20Integration\x20account\x20type\x20%s.','user:%s','trigger:salesforce:display','%s/%s/e','instanceUrl','error','catch','recordingFormat','recordingURL','%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s','destcalleridname','Fields','outbound','[OUTBOUND]\x20Ticket\x20%s\x20created.','[OUTBOUND]\x20Displaying\x20ticket\x20%s\x20to\x20agent\x20%s.\x20Integration\x20account\x20type\x20%s.','integrationTab','newTab','trigger:browser:url','[OUTBOUND]','Salesforce\x20account\x20type\x20not\x20recognized'];(function(_0x56ec38,_0xeeb83c){var _0x1ba2be=function(_0x4ec0f8){while(--_0x4ec0f8){_0x56ec38['push'](_0x56ec38['shift']());}};_0x1ba2be(++_0xeeb83c);}(_0xc909,0x85));var _0x9c90=function(_0xbd08b4,_0x4790ed){_0xbd08b4=_0xbd08b4-0x0;var _0x314f1e=_0xc909[_0xbd08b4];return _0x314f1e;};'use strict';var _=require(_0x9c90('0x0'));var rp=require('request-promise');var moment=require('moment');var BPromise=require('bluebird');var md5=require(_0x9c90('0x1'));var jsforce=require(_0x9c90('0x2'));var util=require(_0x9c90('0x3'));var Redis=require(_0x9c90('0x4'));var intUtil=require('./util');var config=require(_0x9c90('0x5'));var logger=require(_0x9c90('0x6'))(_0x9c90('0x7'));config[_0x9c90('0x8')]=_[_0x9c90('0x9')](config[_0x9c90('0x8')],{'host':_0x9c90('0xa'),'port':0x18eb});var io=require(_0x9c90('0xb'))(new Redis(config['redis']));function emit(_0xb0bdf,_0x52f1a3,_0x540b3e){io['to'](_0xb0bdf)['emit'](_0x52f1a3,_0x540b3e);}function getTicket(_0x1a0ff0,_0x3ba37b,_0x160af8,_0x21f132,_0x12ecfb,_0x500ff9,_0x41c933,_0x5ce3d5){var _0x11b87e=Object[_0x9c90('0xc')]({},{'OwnerId':_0x3ba37b['id'],'Subject':intUtil[_0x9c90('0xd')](_0x21f132[_0x9c90('0xe')],_0x12ecfb,'\x20'),'Description':intUtil['getString'](_0x21f132[_0x9c90('0xf')],_0x12ecfb,'\x0a')},getCustomFields(_0x500ff9,_0x12ecfb));if(_0x160af8){if(_0x21f132[_0x9c90('0x10')]===_0x9c90('0x11')){_0x11b87e[_0x9c90('0x12')]=moment[_0x9c90('0x13')]();_0x11b87e['IsReminderSet']=![];_0x11b87e[_0x9c90('0x14')]=![];if(_0x160af8[_0x9c90('0x15')]===_0x9c90('0x16')||_0x160af8[_0x9c90('0x15')]==='lead'){_0x11b87e[_0x9c90('0x17')]=_0x160af8['id'];}else if(_0x160af8[_0x9c90('0x15')]===_0x9c90('0x18')){_0x11b87e['WhatId']=_0x160af8['id'];}}else if(_0x21f132[_0x9c90('0x10')]===_0x9c90('0x19')){if(_0x160af8[_0x9c90('0x15')]===_0x9c90('0x16')){_0x11b87e[_0x9c90('0x1a')]=_0x160af8['id'];}else if(_0x160af8[_0x9c90('0x15')]===_0x9c90('0x18')){_0x11b87e[_0x9c90('0x1b')]=_0x160af8['id'];}else if(_0x160af8[_0x9c90('0x15')]===_0x9c90('0x1c')&&_0x21f132[_0x9c90('0x1d')]){_0x11b87e[_0x21f132[_0x9c90('0x1d')]]=_0x160af8['id'];}else{logger[_0x9c90('0x1e')](_0x9c90('0x1f'));}}}return _0x41c933[_0x9c90('0x20')](_0x21f132[_0x9c90('0x10')])['create'](_0x11b87e);}function getUser(_0x2f8174,_0x146429,_0x49266a){if(!_[_0x9c90('0x21')](_0x146429)&&intUtil[_0x9c90('0x22')](_0x146429)){var _0x323df9={'Email':_0x146429};var _0x16c1e3={'Id':!![],'Username':!![],'Name':!![],'Email':!![]};return _0x49266a[_0x9c90('0x20')](_0x9c90('0x23'))[_0x9c90('0x24')](_0x323df9,_0x16c1e3)[_0x9c90('0x25')]()['then'](function(_0x144db9){if(_0x144db9[_0x9c90('0x26')]){var _0x2008e5=_[_0x9c90('0x24')](_0x144db9,function(_0x311a6f){return _0x311a6f[_0x9c90('0x27')]===_0x146429;});if(_0x2008e5){logger[_0x9c90('0x1e')](_0x9c90('0x28'),_0x146429);return BPromise[_0x9c90('0x29')]({'id':_0x2008e5['Id'],'name':_0x2008e5[_0x9c90('0x2a')]});}}else{logger[_0x9c90('0x1e')](_0x9c90('0x2b'),_0x146429);return _0x49266a[_0x9c90('0x2c')]()['then'](function(_0x3ef147){return BPromise[_0x9c90('0x29')]({'id':_0x3ef147[_0x9c90('0x2d')],'name':_0x3ef147['display_name']});});}});}else{logger[_0x9c90('0x1e')]('Agent\x20%s\x20not\x20found.\x20Switch\x20to\x20the\x20admin\x20account.',_0x146429);return _0x49266a[_0x9c90('0x2c')]()['then'](function(_0x49491a){return BPromise[_0x9c90('0x29')]({'id':_0x49491a[_0x9c90('0x2d')],'name':_0x49491a[_0x9c90('0x2e')]});});}}function getEndUser(_0x24c234,_0x542091,_0x3a7f01,_0x2cbedd,_0xba5f5){var _0x2126ab={'$or':{'Phone':_0x2cbedd}};var _0x235e46={'Id':!![],'Name':!![],'Phone':!![]};return BPromise[_0x9c90('0x29')]()['then'](function(){logger[_0x9c90('0x1e')]('Searching\x20enduser\x20with\x20phone\x20%s.\x20Serching\x20method\x20used\x20%s.',_0x2cbedd,_0x542091['moduleSearch']);switch(_0x542091[_0x9c90('0x2f')]){case _0x9c90('0x30'):var _0x5354e0=_[_0x9c90('0x31')](_0x2126ab);if(_0x542091[_0x9c90('0x32')]){var _0x3af32d={};_0x3af32d[_0x542091[_0x9c90('0x32')]]=_0x2cbedd;_['merge'](_0x5354e0[_0x9c90('0x33')],_0x3af32d);}return _0xba5f5[_0x9c90('0x20')](_0x9c90('0x34'))[_0x9c90('0x24')](_0x5354e0,_0x235e46)['execute']()[_0x9c90('0x35')](function(_0x8565){if(_0x8565&&_0x8565[_0x9c90('0x26')]){return _0x8565;}else{var _0xf7c6fe=_[_0x9c90('0x31')](_0x2126ab);if(_0x542091[_0x9c90('0x36')]){var _0x3697b9={};_0x3697b9[_0x542091[_0x9c90('0x36')]]=_0x2cbedd;_[_0x9c90('0x37')](_0xf7c6fe[_0x9c90('0x33')],_0x3697b9);}return _0xba5f5[_0x9c90('0x20')](_0x9c90('0x38'))['find'](_0xf7c6fe,_0x235e46);}});case _0x9c90('0x39'):var _0x652e8f=_[_0x9c90('0x31')](_0x2126ab);if(_0x542091[_0x9c90('0x3a')]){var _0x3af32d={};_0x3af32d[_0x542091[_0x9c90('0x3a')]]=_0x2cbedd;_[_0x9c90('0x37')](_0x652e8f[_0x9c90('0x33')],_0x3af32d);}return _0xba5f5['sobject'](_0x9c90('0x3b'))['find'](_0x652e8f,_0x235e46)[_0x9c90('0x25')]()[_0x9c90('0x35')](function(_0x3ba921){if(_0x3ba921&&_0x3ba921[_0x9c90('0x26')]){return _0x3ba921;}else{var _0x18ac12=_[_0x9c90('0x31')](_0x2126ab);if(_0x542091[_0x9c90('0x32')]){var _0x51e615={};_0x51e615[_0x542091[_0x9c90('0x32')]]=_0x2cbedd;_[_0x9c90('0x37')](_0x18ac12[_0x9c90('0x33')],_0x51e615);}return _0xba5f5['sobject'](_0x9c90('0x34'))[_0x9c90('0x24')](_0x18ac12,_0x235e46)[_0x9c90('0x35')](function(_0x19ae32){if(_0x19ae32&&_0x19ae32[_0x9c90('0x26')]){return _0x19ae32;}else{var _0x5a9c9c=_[_0x9c90('0x31')](_0x2126ab);if(_0x542091[_0x9c90('0x36')]){var _0x26f5a2={};_0x26f5a2[_0x542091[_0x9c90('0x36')]]=_0x2cbedd;_[_0x9c90('0x37')](_0x5a9c9c[_0x9c90('0x33')],_0x26f5a2);}return _0xba5f5['sobject'](_0x9c90('0x38'))['find'](_0x5a9c9c,_0x235e46);}});}});case _0x9c90('0x16'):var _0x5354e0=_[_0x9c90('0x31')](_0x2126ab);if(_0x542091[_0x9c90('0x32')]){var _0x3af32d={};_0x3af32d[_0x542091[_0x9c90('0x32')]]=_0x2cbedd;_[_0x9c90('0x37')](_0x5354e0[_0x9c90('0x33')],_0x3af32d);}return _0xba5f5[_0x9c90('0x20')](_0x9c90('0x34'))['find'](_0x5354e0,_0x235e46)[_0x9c90('0x25')]();case _0x9c90('0x1c'):var _0x25849e=_[_0x9c90('0x31')](_0x2126ab);if(_0x542091[_0x9c90('0x36')]){var _0x3af32d={};_0x3af32d[_0x542091['additionalSearchLead']]=_0x2cbedd;_[_0x9c90('0x37')](_0x25849e[_0x9c90('0x33')],_0x3af32d);}return _0xba5f5[_0x9c90('0x20')]('Lead')[_0x9c90('0x24')](_0x25849e,_0x235e46);case _0x9c90('0x18'):var _0x652e8f=_['cloneDeep'](_0x2126ab);if(_0x542091[_0x9c90('0x3a')]){var _0x3af32d={};_0x3af32d[_0x542091[_0x9c90('0x3a')]]=_0x2cbedd;_[_0x9c90('0x37')](_0x652e8f[_0x9c90('0x33')],_0x3af32d);}return _0xba5f5[_0x9c90('0x20')](_0x9c90('0x3b'))[_0x9c90('0x24')](_0x652e8f,_0x235e46);default:return null;}})['then'](function(_0x5d4e02){if(_0x5d4e02&&_0x5d4e02[_0x9c90('0x26')]){var _0xfb61cb=_['first'](_0x5d4e02);if(_0xfb61cb){return BPromise[_0x9c90('0x29')]({'id':_0xfb61cb['Id'],'name':_0xfb61cb[_0x9c90('0x2a')],'phone':_0xfb61cb[_0x9c90('0x3c')],'endUserType':_0xfb61cb['attributes'][_0x9c90('0x3d')][_0x9c90('0x3e')]()});}}})[_0x9c90('0x35')](function(_0x131c01){if(_0x131c01){logger[_0x9c90('0x1e')](_0x9c90('0x3f'),_0x131c01[_0x9c90('0x15')],_0x2cbedd);return BPromise[_0x9c90('0x29')](_0x131c01);}else{logger[_0x9c90('0x1e')](_0x9c90('0x40'),_0x2cbedd);var _0x4e589b={'Phone':_0x2cbedd};if(_0x542091[_0x9c90('0x41')]){if(_0x542091['moduleCreate']===_0x9c90('0x16')){logger['info'](_0x9c90('0x42'),_0x2cbedd,_0x542091['moduleCreate']);_0x4e589b[_0x9c90('0x43')]=_0x3a7f01!==_0x9c90('0x44')?_0x3a7f01:util[_0x9c90('0x45')](_0x9c90('0x46'),_0x2cbedd);}else if(_0x542091['moduleCreate']===_0x9c90('0x1c')){logger[_0x9c90('0x1e')](_0x9c90('0x42'),_0x2cbedd,_0x542091[_0x9c90('0x41')]);_0x4e589b['LastName']=_0x3a7f01!=='<unknown>'?_0x3a7f01:util['format'](_0x9c90('0x46'),_0x2cbedd);_0x4e589b[_0x9c90('0x47')]=_0x9c90('0x48');}else if(_0x542091[_0x9c90('0x41')]==='account'){logger[_0x9c90('0x1e')]('Enduser\x20with\x20phone\x20%s.\x20Creating\x20method\x20used\x20%s.',_0x2cbedd,_0x542091[_0x9c90('0x41')]);_0x4e589b[_0x9c90('0x2a')]=_0x3a7f01!==_0x9c90('0x44')?_0x3a7f01:util[_0x9c90('0x45')](_0x9c90('0x46'),_0x2cbedd);}else{return null;}}return _0xba5f5[_0x9c90('0x20')](_[_0x9c90('0x49')](_0x542091['moduleCreate']))[_0x9c90('0x4a')](_0x4e589b)['then'](function(_0x13e38a){return BPromise[_0x9c90('0x29')]({'id':_0x13e38a['id'],'endUserType':_0x542091[_0x9c90('0x41')]});});}});}function getCustomFields(_0x58ca46,_0x172ecc){var _0x303d20={};if(_0x58ca46['length']>0x0){_['forEach'](_0x58ca46,function(_0x2ef429){if(_['includes']([_0x9c90('0x4b'),_0x9c90('0x4c')],_0x2ef429['type'])&&_0x2ef429[_0x9c90('0x4d')]){_0x303d20[_0x2ef429['idField']]=_0x2ef429[_0x9c90('0x4e')]['toString']();}else if(_0x2ef429[_0x9c90('0x3d')]===_0x9c90('0x4f')&&_0x2ef429[_0x9c90('0x50')]&&_0x2ef429[_0x9c90('0x4d')]){_0x172ecc[_0x2ef429['variableName']]&&(_0x303d20[_0x2ef429[_0x9c90('0x4d')]]=_0x172ecc[_0x2ef429[_0x9c90('0x50')]][_0x9c90('0x51')]());}else if(_0x2ef429['type']===_0x9c90('0x52')&&_0x2ef429[_0x9c90('0x53')]&&_0x2ef429['Variable'][_0x9c90('0x54')]&&_0x2ef429[_0x9c90('0x4d')]){_0x172ecc[_0x2ef429[_0x9c90('0x53')][_0x9c90('0x54')][_0x9c90('0x3e')]()]&&(_0x303d20[_0x2ef429[_0x9c90('0x4d')]]=_0x172ecc[_0x2ef429[_0x9c90('0x53')][_0x9c90('0x54')][_0x9c90('0x3e')]()][_0x9c90('0x51')]());}});}return _0x303d20;}function getConnection(_0x200cef){var _0x717338=_0x200cef['password']['concat'](_0x200cef[_0x9c90('0x55')]);var _0x13bdfb=new jsforce[(_0x9c90('0x56'))]({'oauth2':{'loginUrl':_0x200cef[_0x9c90('0x57')]||_0x9c90('0x58'),'clientId':_0x200cef['clientId'],'clientSecret':_0x200cef[_0x9c90('0x59')]}});return _0x13bdfb[_0x9c90('0x5a')](_0x200cef[_0x9c90('0x5b')],_0x717338)[_0x9c90('0x35')](function(){logger[_0x9c90('0x1e')](_0x9c90('0x5c'));return _0x13bdfb;});}exports[_0x9c90('0x5d')]=function(_0x56014a,_0x10c146,_0x917301,_0x2c14d3,_0x3dc9fe,_0x3444cc){var _0x16155d,_0x4dfa34,_0x577dec,_0x4aaac6;_0x3444cc[_0x9c90('0x5e')]=intUtil[_0x9c90('0x5f')](_0x3444cc[_0x9c90('0x5e')]);_0x3444cc[_0x9c90('0x57')]=intUtil[_0x9c90('0x5f')](_0x3444cc[_0x9c90('0x57')]);if(_0x3dc9fe&&_0x3dc9fe[_0x9c90('0x60')]){logger['info'](_0x9c90('0x61'),_0x9c90('0x62'));_0x10c146['recordingURL']=util[_0x9c90('0x45')]('%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s',_0x3444cc[_0x9c90('0x5e')],_0x10c146[_0x9c90('0x63')],md5(_0x10c146['uniqueid']));}else{_0x10c146['recordingURL']='';}return getConnection(_0x3444cc)[_0x9c90('0x35')](function(_0x1f5af8){_0x4aaac6=_0x1f5af8;return getUser(_0x3444cc,_0x2c14d3[_0x9c90('0x64')],_0x4aaac6);})[_0x9c90('0x35')](function(_0xf06189){_0x16155d=_0xf06189;return getEndUser(_0x3444cc,_0x917301,_0x10c146['calleridname'],_0x10c146[_0x9c90('0x65')],_0x4aaac6);})[_0x9c90('0x35')](function(_0x156d1c){_0x4dfa34=_0x156d1c;return getTicket(_0x3444cc,_0x16155d,_0x4dfa34,_0x917301,_0x10c146,_0x917301['Fields'],_0x4aaac6,_0x9c90('0x5d'));})[_0x9c90('0x35')](function(_0x30ee07){_0x577dec=_0x30ee07;logger['info'](_0x9c90('0x66'),_0x577dec['id']);logger['info'](_0x9c90('0x67'),_0x577dec['id'],_0x2c14d3['name'],_0x3444cc[_0x9c90('0x3d')]);switch(_0x3444cc[_0x9c90('0x3d')]){case'integrationTab':emit(util[_0x9c90('0x45')](_0x9c90('0x68'),_0x2c14d3['name']),_0x9c90('0x69'),{'recordId':_0x577dec['id']});break;case'newTab':emit(util['format'](_0x9c90('0x68'),_0x2c14d3[_0x9c90('0x54')]),'trigger:browser:url',{'uri':util[_0x9c90('0x45')](_0x9c90('0x6a'),_0x4aaac6[_0x9c90('0x6b')],_0x577dec['id'])});break;default:logger[_0x9c90('0x6c')]('[QUEUE]\x20Salesforce\x20account\x20type\x20not\x20recognized.');}})[_0x9c90('0x6d')](function(_0x40f606){logger['error'](_0x9c90('0x61'),_0x40f606);});};exports['outbound']=function(_0x29d7ba,_0x27c477,_0x2a3a78,_0x42674b,_0x5cc6c5,_0x48194a,_0x112243){var _0x16c534,_0x56ab5c,_0x388834,_0x4e0377;_0x48194a[_0x9c90('0x5e')]=intUtil[_0x9c90('0x5f')](_0x48194a[_0x9c90('0x5e')]);_0x48194a['remoteUri']=intUtil['stripTrailingSlash'](_0x48194a[_0x9c90('0x57')]);if(_0x112243&&_0x112243[_0x9c90('0x6e')]&&_0x112243[_0x9c90('0x6e')]!=='none'){logger[_0x9c90('0x1e')]('[OUTBOUND]',_0x9c90('0x62'));_0x27c477[_0x9c90('0x6f')]=util[_0x9c90('0x45')](_0x9c90('0x70'),_0x48194a[_0x9c90('0x5e')],_0x27c477[_0x9c90('0x63')],md5(_0x27c477[_0x9c90('0x63')]));}return getConnection(_0x48194a)[_0x9c90('0x35')](function(_0x5d3242){_0x4e0377=_0x5d3242;return getUser(_0x48194a,_0x42674b[_0x9c90('0x64')],_0x4e0377);})['then'](function(_0x4a6c07){_0x16c534=_0x4a6c07;return getEndUser(_0x48194a,_0x2a3a78,_0x27c477[_0x9c90('0x71')],_0x27c477['destcalleridnum'],_0x4e0377);})[_0x9c90('0x35')](function(_0x37c315){_0x56ab5c=_0x37c315;return getTicket(_0x48194a,_0x16c534,_0x56ab5c,_0x2a3a78,_0x27c477,_0x2a3a78[_0x9c90('0x72')],_0x4e0377,_0x9c90('0x73'));})[_0x9c90('0x35')](function(_0x4d6eec){_0x388834=_0x4d6eec;logger[_0x9c90('0x1e')](_0x9c90('0x74'),_0x388834['id']);logger[_0x9c90('0x1e')](_0x9c90('0x75'),_0x388834['id'],_0x42674b[_0x9c90('0x54')],_0x48194a[_0x9c90('0x3d')]);switch(_0x48194a[_0x9c90('0x3d')]){case _0x9c90('0x76'):emit(util[_0x9c90('0x45')](_0x9c90('0x68'),_0x42674b[_0x9c90('0x54')]),_0x9c90('0x69'),{'recordId':_0x388834['id']});break;case _0x9c90('0x77'):emit(util[_0x9c90('0x45')]('user:%s',_0x42674b[_0x9c90('0x54')]),_0x9c90('0x78'),{'uri':util['format'](_0x9c90('0x6a'),_0x4e0377[_0x9c90('0x6b')],_0x388834['id'])});break;default:logger[_0x9c90('0x6c')](_0x9c90('0x79'),_0x9c90('0x7a'));}})['catch'](function(_0x503135){logger[_0x9c90('0x6c')](_0x9c90('0x79'),_0x503135);});};exports[_0x9c90('0x7b')]=function(_0x244777,_0x28d7a4,_0x73679c,_0x535e45,_0x52fe9d,_0xf17c68){var _0xe4540,_0x5553cd,_0x493973,_0x4077cc;_0xf17c68[_0x9c90('0x5e')]=intUtil[_0x9c90('0x5f')](_0xf17c68[_0x9c90('0x5e')]);_0xf17c68[_0x9c90('0x57')]=intUtil[_0x9c90('0x5f')](_0xf17c68[_0x9c90('0x57')]);if(_0x52fe9d&&_0x52fe9d[_0x9c90('0x60')]){logger[_0x9c90('0x1e')]('['+_0x28d7a4[_0x9c90('0x7c')][_0x9c90('0x7d')]()+']','Recording\x20is\x20enabled!');_0x28d7a4['recordingURL']=util[_0x9c90('0x45')](_0x9c90('0x70'),_0xf17c68[_0x9c90('0x5e')],_0x28d7a4[_0x9c90('0x63')],md5(_0x28d7a4[_0x9c90('0x63')]));}else{_0x28d7a4[_0x9c90('0x6f')]='';}return getConnection(_0xf17c68)['then'](function(_0x37fee2){_0x4077cc=_0x37fee2;if(!_[_0x9c90('0x21')](_0x535e45)){return getUser(_0xf17c68,_0x535e45['name'],_0x4077cc);}else{return getUser(_0xf17c68,null,_0x4077cc);}})['then'](function(_0x553581){_0xe4540=_0x553581;return getEndUser(_0xf17c68,_0x73679c,_0x28d7a4['calleridname'],_0x28d7a4[_0x9c90('0x65')],_0x4077cc);})['then'](function(_0x172cce){_0x5553cd=_0x172cce;return getTicket(_0xf17c68,_0xe4540,_0x5553cd,_0x73679c,_0x28d7a4,_0x73679c[_0x9c90('0x72')],_0x4077cc);})['then'](function(_0x23283a){_0x493973=_0x23283a;logger['info']('['+_0x28d7a4['lastevent'][_0x9c90('0x7d')]()+_0x9c90('0x7e'),_0x493973['id']);logger[_0x9c90('0x1e')]('['+_0x28d7a4[_0x9c90('0x7c')][_0x9c90('0x7d')]()+_0x9c90('0x7f'),_0xf17c68[_0x9c90('0x3d')]);})['catch'](function(_0x27d3fd){logger[_0x9c90('0x6c')]('['+_0x28d7a4[_0x9c90('0x7c')]['toUpperCase']()+']',_0x27d3fd);});};
\ No newline at end of file
index 65d6379..ae4233a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x809a=['none','[OUTBOUND]','call\x20direction:\x20%s','Displaying\x20call\x20in\x20a\x20new\x20tab...',']\x20Error\x20running\x20ServiceNow\x20integration','bluebird','request-promise','util','md5','ioredis','../../../../config/environment','../../../../config/logger','servicenow','defaults','redis','localhost','GET','sys_user?sysparm_query=user_name%3Dadmin','then','length','adminId','result','sys_id','info','error','toUpperCase','message','validateEmail','userEmail','],\x20getUser\x20rp\x20obj','],\x20getUser\x20entity','active','userId','adminEmail','catch',']\x20using\x20admin\x20profile','POST','sys_user?','endUserNumber','user','true','System','],\x20EndUser\x20schema','endUserId','],\x20getEndUser\x20input\x20crm','],\x20getEndUser\x20crm','],\x20createEndUser\x20crm','forEach','includes','type','nameField','customField','toLowerCase','content','toString','string','picklist','idField','variable','variableName','customVariable','Variable','name',']\x20getTicket\x20input\x20crm','incident','assign','getString','Subjects','number',']\x20getTicket\x20crm','label','?sysparm_query=name%3D','label_entry','Incident','ticketId','Incident\x20-\x20','ticketNumber','push','all',']\x20arrayPromises:\x20IDs\x20in\x20table\x20label','Tags','map','%26sysparm_record_target%3Dincident','%26sysparm_record_row%3D1%26sysparm_record_rows%3D39','%26sysparm_record_list%3Dactive%253Dtrue','%255EORDERBYDESCnumber','/nav_to.do?uri=incident.do?sys_id%3D','format','user:%s','username','password','sysparm_limit=1','sysparm_display_value=true','remoteUri','stripTrailingSlash','serverUrl','%s/api/now/table/','isNil','email','outbound','destcalleridnum','callDirection','queue','unmanaged','%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s','uniqueid','monitor_format','[QUEUE]','Recording\x20is\x20enabled!','recordingURL','recordingFormat'];(function(_0x5deb5f,_0x196be5){var _0xb1d347=function(_0x3648ed){while(--_0x3648ed){_0x5deb5f['push'](_0x5deb5f['shift']());}};_0xb1d347(++_0x196be5);}(_0x809a,0x1c1));var _0xa809=function(_0x12031e,_0x5d3d56){_0x12031e=_0x12031e-0x0;var _0xbe1a3b=_0x809a[_0x12031e];return _0xbe1a3b;};'use strict';var _=require('lodash');var Promise=require(_0xa809('0x0'));var rp=require(_0xa809('0x1'));var util=require(_0xa809('0x2'));var md5=require(_0xa809('0x3'));var Redis=require(_0xa809('0x4'));var intUtil=require('./util');var config=require(_0xa809('0x5'));var logger=require(_0xa809('0x6'))(_0xa809('0x7'));config['redis']=_[_0xa809('0x8')](config[_0xa809('0x9')],{'host':_0xa809('0xa'),'port':0x18eb});var io=require('socket.io-emitter')(new Redis(config[_0xa809('0x9')]));function getAdminUser(_0x3f522e,_0x1e9ea6,_0x58a6a8,_0xb78a0,_0x267930,_0xc548dd){return new Promise(function(_0x46fa10,_0x44eac4){var _0x5854a0={'method':_0xa809('0xb'),'uri':_0xb78a0+_0xa809('0xc')+'&'+_0x267930+'&'+_0xc548dd,'auth':_0x1e9ea6,'json':!![]};return rp(_0x5854a0)[_0xa809('0xd')](function(_0x166927){if(_0x166927['result'][_0xa809('0xe')]>0x0){_0x58a6a8[_0xa809('0xf')]=_0x166927[_0xa809('0x10')][0x0][_0xa809('0x11')];}logger[_0xa809('0x12')]('['+[_0x3f522e['toUpperCase']()]+'],\x20getAdminUser\x20crm',_0x58a6a8);_0x46fa10(_0x58a6a8);})['catch'](function(_0x1ca222){logger[_0xa809('0x13')]('['+[_0x3f522e[_0xa809('0x14')]()]+']',_0x1ca222[_0xa809('0x15')]);_0x44eac4(_0x1ca222['message']);});});}function getUser(_0x5599b4,_0x1d3eb2,_0xaf0af2,_0x59d8aa,_0x4e8c03){return function(_0x852b13){logger[_0xa809('0x12')]('['+[_0x5599b4[_0xa809('0x14')]()]+'],\x20getUser\x20input\x20crm',_0x852b13);return new Promise(function(_0x2734ff,_0xdfeb8b){if(intUtil[_0xa809('0x16')](_0x852b13['userEmail'])){var _0x1cc704={'method':_0xa809('0xb'),'uri':_0xaf0af2+'sys_user?sysparm_query=email%3D'+_0x852b13[_0xa809('0x17')]+'&'+_0x59d8aa+'&'+_0x4e8c03,'auth':_0x1d3eb2,'json':!![]};logger[_0xa809('0x12')]('['+[_0x5599b4[_0xa809('0x14')]()]+_0xa809('0x18'),_0x1cc704);return rp(_0x1cc704)[_0xa809('0xd')](function(_0x1371d7){logger[_0xa809('0x12')]('['+[_0x5599b4['toUpperCase']()]+_0xa809('0x19'),_0x1371d7);if(_0x1371d7[_0xa809('0x10')][_0xa809('0xe')]>0x0&&String(_0x1371d7[_0xa809('0x10')][0x0][_0xa809('0x1a')])==='true'){_0x852b13[_0xa809('0x1b')]=_0x1371d7[_0xa809('0x10')][0x0][_0xa809('0x11')];}else{_0x852b13['userId']=_0x852b13[_0xa809('0xf')];_0x852b13[_0xa809('0x17')]=_0x852b13[_0xa809('0x1c')];}logger['info']('['+[_0x5599b4[_0xa809('0x14')]()]+'],\x20getUser\x20crm',_0x852b13);_0x2734ff(_0x852b13);})[_0xa809('0x1d')](function(_0x33b2e0){logger['error']('['+[_0x5599b4['toUpperCase']()]+']',_0x33b2e0['message']);_0xdfeb8b(_0x33b2e0[_0xa809('0x15')]);});}else{logger[_0xa809('0x12')]('['+[_0x5599b4[_0xa809('0x14')]()]+_0xa809('0x1e'));_0x852b13[_0xa809('0x1b')]=_0x852b13[_0xa809('0xf')];_0x852b13['userEmail']=_0x852b13[_0xa809('0x1c')];_0x2734ff(_0x852b13);}});};}function createEndUser(_0x484cfd,_0xbf3de6,_0x2250a9,_0x5e16e1,_0xe15658){logger[_0xa809('0x12')]('['+[_0x484cfd[_0xa809('0x14')]()]+'],\x20createEndUser\x20input\x20crm',_0x2250a9);return new Promise(function(_0x3c9646,_0x5f5c10){var _0x2dbd0e={'method':_0xa809('0x1f'),'uri':_0x5e16e1+_0xa809('0x20')+_0xe15658,'body':{'user_name':_0x2250a9[_0xa809('0x21')],'roles':_0xa809('0x22'),'first_name':_0x2250a9[_0xa809('0x21')],'active':_0xa809('0x23'),'date_format':_0xa809('0x24'),'phone':_0x2250a9[_0xa809('0x21')]},'auth':_0xbf3de6,'json':!![]};return rp(_0x2dbd0e)[_0xa809('0xd')](function(_0x3e571b){logger[_0xa809('0x12')]('['+[_0x484cfd[_0xa809('0x14')]()]+_0xa809('0x25'),_0x3e571b[_0xa809('0x10')]);_0x2250a9[_0xa809('0x26')]=_0x3e571b['result'][_0xa809('0x11')];_0x3c9646(_0x2250a9);})[_0xa809('0x1d')](function(_0xbb560){logger[_0xa809('0x13')]('['+[_0x484cfd[_0xa809('0x14')]()]+']',_0xbb560['message']);_0x5f5c10(_0xbb560[_0xa809('0x15')]);});});}function getEndUser(_0x36d5b4,_0x19b617,_0x392bb9,_0x270290,_0x17f5aa){return function(_0x140550){logger[_0xa809('0x12')]('['+[_0x36d5b4['toUpperCase']()]+_0xa809('0x27'),_0x140550);return new Promise(function(_0x2ee8fa,_0x4ae1ca){var _0x2547e7={'method':_0xa809('0xb'),'uri':_0x392bb9+'sys_user?sysparm_query=phone%3D'+_0x140550[_0xa809('0x21')]+'&'+_0x270290+'&'+_0x17f5aa,'auth':_0x19b617,'json':!![]};return rp(_0x2547e7)[_0xa809('0xd')](function(_0x4cfd0c){if(_0x4cfd0c[_0xa809('0x10')][_0xa809('0xe')]>0x0){_0x140550[_0xa809('0x26')]=_0x4cfd0c[_0xa809('0x10')][0x0]['sys_id'];logger['info']('['+[_0x36d5b4['toUpperCase']()]+_0xa809('0x28'),_0x140550);_0x2ee8fa(_0x140550);}else{return createEndUser(_0x36d5b4,_0x19b617,_0x140550,_0x392bb9,_0x270290)['then'](function(_0xe8adc){logger['info']('['+[_0x36d5b4[_0xa809('0x14')]()]+_0xa809('0x29'),_0xe8adc);_0x2ee8fa(_0xe8adc);});}})[_0xa809('0x1d')](function(_0x20571d){logger[_0xa809('0x13')]('['+[_0x36d5b4[_0xa809('0x14')]()]+']',_0x20571d['message']);_0x4ae1ca(_0x20571d['message']);});});};}function getCustomFields(_0x266eef,_0x5b66d9){var _0x4ec628={};if(_0x266eef['length']>0x0){_[_0xa809('0x2a')](_0x266eef,function(_0x32fd86){if(_[_0xa809('0x2b')](['string','picklist'],_0x32fd86[_0xa809('0x2c')])&&_0x32fd86[_0xa809('0x2d')]&&!_0x32fd86[_0xa809('0x2e')]){_0x4ec628[_0x32fd86[_0xa809('0x2d')][_0xa809('0x2f')]()]=_0x32fd86[_0xa809('0x30')][_0xa809('0x31')]();}else if(_[_0xa809('0x2b')]([_0xa809('0x32'),_0xa809('0x33')],_0x32fd86['type'])&&_0x32fd86[_0xa809('0x34')]&&_0x32fd86[_0xa809('0x2e')]){_0x4ec628[_0x32fd86['idField'][_0xa809('0x2f')]()]=_0x32fd86[_0xa809('0x30')][_0xa809('0x31')]();}else if(_0x32fd86['type']===_0xa809('0x35')&&_0x32fd86[_0xa809('0x36')]&&_0x32fd86[_0xa809('0x34')]&&_0x32fd86['customField']){_0x4ec628[_0x32fd86[_0xa809('0x34')][_0xa809('0x2f')]()]=_0x5b66d9[_0x32fd86[_0xa809('0x36')]]['toString']();}else if(_0x32fd86[_0xa809('0x2c')]===_0xa809('0x37')&&_0x32fd86[_0xa809('0x38')]&&_0x32fd86[_0xa809('0x38')][_0xa809('0x39')]&&_0x32fd86['idField']&&_0x32fd86[_0xa809('0x2e')]){_0x4ec628[_0x32fd86['idField'][_0xa809('0x2f')]()]=_0x5b66d9[_0x32fd86[_0xa809('0x38')][_0xa809('0x39')]['toLowerCase']()][_0xa809('0x31')]();}});}return _0x4ec628;}function getTicket(_0x4ced2f,_0x274e1a,_0x30b586,_0x2f54d2,_0x430b49,_0x1ee2ab){return function(_0x65b0eb){logger[_0xa809('0x12')]('['+[_0x4ced2f[_0xa809('0x14')]()]+_0xa809('0x3a'),_0x65b0eb);return new Promise(function(_0x39403c,_0x4360dc){var _0x3c3b99=_0x4ced2f[_0xa809('0x2f')]()==='outbound'?_0x65b0eb[_0xa809('0x1b')]:_0x65b0eb['endUserId'];var _0x37c35a={'method':_0xa809('0x1f'),'uri':_0x30b586+_0xa809('0x3b')+'?'+_0x1ee2ab,'body':Object[_0xa809('0x3c')]({},{'active':_0xa809('0x23'),'caller_id':_0x3c3b99,'assigned_to':_0x65b0eb[_0xa809('0x1b')],'short_description':intUtil[_0xa809('0x3d')](_0x2f54d2[_0xa809('0x3e')],_0x430b49,'\x20'),'description':intUtil['getString'](_0x2f54d2['Descriptions'],_0x430b49,'\x0a')},getCustomFields(_0x2f54d2['Fields'],_0x430b49)),'auth':_0x274e1a,'json':!![]};return rp(_0x37c35a)[_0xa809('0xd')](function(_0x7a751){logger[_0xa809('0x12')]('['+[_0x4ced2f[_0xa809('0x14')]()]+']\x20POST\x20incident\x20entity\x20schema',_0x7a751[_0xa809('0x10')]);_0x65b0eb['ticketId']=_0x7a751['result'][_0xa809('0x11')];_0x65b0eb['ticketNumber']=_0x7a751['result'][_0xa809('0x3f')];logger[_0xa809('0x12')]('['+[_0x4ced2f[_0xa809('0x14')]()]+_0xa809('0x40'),_0x65b0eb);_0x39403c(_0x65b0eb);})[_0xa809('0x1d')](function(_0x420fe1){logger[_0xa809('0x13')]('['+[_0x4ced2f[_0xa809('0x14')]()]+']',_0x420fe1['message']);_0x4360dc(_0x420fe1[_0xa809('0x15')]);});});};}function createRemoteTag(_0x4bcf39,_0x17c14a,_0x20e8f8,_0x2b7993){return new Promise(function(_0x5d616f,_0x1447dc){var _0x3ca3e2={'method':_0xa809('0x1f'),'uri':_0x20e8f8+_0xa809('0x41')+'?'+_0x2b7993,'body':{'short_description':_0x4bcf39,'global':!![],'active':!![],'name':_0x4bcf39},'auth':_0x17c14a,'json':!![]};return rp(_0x3ca3e2)[_0xa809('0xd')](function(_0x108fd9){var _0x143c7e=_0x108fd9[_0xa809('0x10')][_0xa809('0x11')];_0x5d616f(_0x143c7e);});});}function getRemoteTag(_0x154cfa,_0x315b3,_0x8f20fa,_0x2e9c5f,_0x4ab9d9){return new Promise(function(_0xb7a690,_0x86786){var _0xd0e43f={'method':_0xa809('0xb'),'uri':_0x8f20fa+_0xa809('0x41')+_0xa809('0x42')+_0x154cfa+'&'+_0x2e9c5f,'auth':_0x315b3,'json':!![]};return rp(_0xd0e43f)['then'](function(_0x1ee7b2){if(_0x1ee7b2[_0xa809('0x10')]['length']>0x0){var _0x4fdd6e=_0x1ee7b2[_0xa809('0x10')][0x0]['sys_id'];_0xb7a690(_0x4fdd6e);}else{return createRemoteTag(_0x154cfa,_0x315b3,_0x8f20fa,_0x2e9c5f)['then'](function(_0x198bbb){_0xb7a690(_0x198bbb);});}});});}function assignTagToIncident(_0x168b50,_0x223075,_0x4f8754,_0x1d120c,_0x51ebf6){return new Promise(function(_0x5edc92,_0x3de6a8){var _0x41a995={'method':_0xa809('0x1f'),'uri':_0x4f8754+_0xa809('0x43')+'?'+_0x51ebf6,'body':{'label':_0x168b50,'table':_0xa809('0x3b'),'id_type':_0xa809('0x44'),'table_key':_0x1d120c[_0xa809('0x45')],'title':_0xa809('0x46')+_0x1d120c[_0xa809('0x47')],'id_display':_0x1d120c[_0xa809('0x47')]},'auth':_0x223075,'json':!![]};return rp(_0x41a995)['then'](function(_0x543b97){_0x5edc92();})[_0xa809('0x1d')](function(){_0x5edc92();});});}function manageTags(_0x48a857,_0x152b11,_0x56b7ce,_0xb2109f,_0x58f283,_0x49f9e3,_0x54eae3){return new Promise(function(_0x2d3c88,_0x2c394b){var _0x584c79=[];_0x152b11[_0xa809('0x2a')](function(_0x4932a2){_0x584c79[_0xa809('0x48')](getRemoteTag(_0x4932a2,_0x56b7ce,_0xb2109f,_0x49f9e3,_0x54eae3));});return Promise[_0xa809('0x49')](_0x584c79)['then'](function(_0x1c2989){if(_0x1c2989[_0xa809('0xe')]){logger[_0xa809('0x12')]('['+[_0x48a857[_0xa809('0x14')]()]+_0xa809('0x4a'),_0x1c2989);var _0x395f0f=[];_0x1c2989['forEach'](function(_0x3a5a30){_0x395f0f[_0xa809('0x48')](assignTagToIncident(_0x3a5a30,_0x56b7ce,_0xb2109f,_0x58f283,_0x49f9e3));});return Promise[_0xa809('0x49')](_0x395f0f)[_0xa809('0xd')](function(){_0x2d3c88();})['catch'](function(){_0x2d3c88();});}else{_0x2d3c88();}});});}function getTags(_0x2bced6,_0x2795bc,_0x5d246e,_0x2018ce,_0x592cff,_0x458b30){return function(_0x447ad3){return new Promise(function(_0x31b2b2,_0x474a27){var _0x45e0ef=[];var _0xb73701=_0x2018ce[_0xa809('0x4b')];if(_0xb73701&&_0xb73701[_0xa809('0xe')]>0x0){_0x45e0ef=_[_0xa809('0x4c')](_0xb73701,'name');}if(_0x45e0ef[_0xa809('0xe')]>0x0){return manageTags(_0x2bced6,_0x45e0ef,_0x2795bc,_0x5d246e,_0x447ad3,_0x592cff,_0x458b30)['then'](function(){_0x31b2b2(_0x447ad3);});}else{_0x31b2b2(_0x447ad3);}});};}function emit(_0x4cad85,_0x2b08b8,_0x5a13d9){var _0x453c97=_0xa809('0x4d')+_0xa809('0x4e')+_0xa809('0x4f')+_0xa809('0x50');var _0x3b4c83={'uri':_0x4cad85+_0xa809('0x51')+_0x5a13d9+_0x453c97};io['to'](util[_0xa809('0x52')](_0xa809('0x53'),_0x2b08b8))['emit']('trigger:browser:url',_0x3b4c83);}exports['cs']=function(_0x4e1fd5,_0x529df8,_0x2cfc49,_0x41283a,_0x13ad9f,_0x3514f1,_0x1cc569,_0x4d20){var _0x632381={};var _0x2c90c1={'user':_0x3514f1[_0xa809('0x54')],'pass':_0x3514f1[_0xa809('0x55')]};var _0x5cdaab=_0xa809('0x56');var _0xf0eb24=_0xa809('0x57');_0x3514f1[_0xa809('0x58')]=intUtil[_0xa809('0x59')](_0x3514f1['remoteUri']);_0x3514f1[_0xa809('0x5a')]=intUtil[_0xa809('0x59')](_0x3514f1['serverUrl']);var _0xca31ef=util[_0xa809('0x52')](_0xa809('0x5b'),_0x3514f1[_0xa809('0x58')]);_0x632381[_0xa809('0x17')]=!_[_0xa809('0x5c')](_0x41283a)?_0x41283a[_0xa809('0x5d')]:null;_0x632381[_0xa809('0x1c')]=_0x3514f1[_0xa809('0x5d')];_0x632381[_0xa809('0x21')]=_0x4d20['toLowerCase']()===_0xa809('0x5e')?_0x529df8[_0xa809('0x5f')]:_0x529df8['calleridnum'];_0x632381[_0xa809('0x60')]=_0x4d20===_0xa809('0x61')||_0x4d20===_0xa809('0x62')?_0xa809('0x61'):_0xa809('0x5e');var _0x5da802=util[_0xa809('0x52')](_0xa809('0x63'),_0x3514f1['serverUrl'],_0x529df8['uniqueid'],md5(_0x529df8[_0xa809('0x64')]));if(_0x13ad9f&&_0x13ad9f[_0xa809('0x65')]){logger[_0xa809('0x12')](_0xa809('0x66'),_0xa809('0x67'));_0x529df8[_0xa809('0x68')]=_0x5da802;}else if(_0x1cc569&&_0x1cc569[_0xa809('0x69')]&&_0x1cc569['recordingFormat']!==_0xa809('0x6a')){logger[_0xa809('0x12')](_0xa809('0x6b'),_0xa809('0x67'));_0x529df8[_0xa809('0x68')]=_0x5da802;}else{_0x529df8['recordingURL']='';}return getAdminUser(_0x4d20,_0x2c90c1,_0x632381,_0xca31ef,_0xf0eb24,_0x5cdaab)[_0xa809('0xd')](getUser(_0x4d20,_0x2c90c1,_0xca31ef,_0xf0eb24,_0x5cdaab))[_0xa809('0xd')](getEndUser(_0x4d20,_0x2c90c1,_0xca31ef,_0xf0eb24,_0x5cdaab))[_0xa809('0xd')](getTicket(_0x4d20,_0x2c90c1,_0xca31ef,_0x2cfc49,_0x529df8,_0xf0eb24))['then'](function(_0x4ac6ec){logger[_0xa809('0x12')](util[_0xa809('0x52')]('The\x20ticket\x20ID\x20is:\x20%s',_0x4ac6ec[_0xa809('0x45')]));logger['info'](util[_0xa809('0x52')](_0xa809('0x6c'),_0x4d20));if(_0x4d20!==_0xa809('0x62')){logger['info']('['+[_0x4d20[_0xa809('0x14')]()]+']',_0xa809('0x6d'));emit(_0x3514f1[_0xa809('0x58')],_0x41283a[_0xa809('0x39')],_0x4ac6ec[_0xa809('0x45')]);}})[_0xa809('0x1d')](function(_0x842952){logger[_0xa809('0x13')]('['+[_0x4d20[_0xa809('0x14')]()]+_0xa809('0x6e'),util['inspect'](_0x842952,{'showHidden':!![],'depth':null}));});};
\ No newline at end of file
+var _0xe809=[']\x20Error\x20running\x20ServiceNow\x20integration','lodash','bluebird','request-promise','util','md5','ioredis','./util','../../../../config/logger','servicenow','redis','socket.io-emitter','GET','then','result','info','],\x20getAdminUser\x20crm','error','message','toUpperCase','],\x20getUser\x20input\x20crm','userEmail','sys_user?sysparm_query=email%3D','],\x20getUser\x20rp\x20obj','],\x20getUser\x20entity','length','active','true','userId','sys_id','adminId','adminEmail','],\x20getUser\x20crm','catch',']\x20using\x20admin\x20profile','],\x20createEndUser\x20input\x20crm','POST','sys_user?','endUserNumber','user','System','],\x20EndUser\x20schema','sys_user?sysparm_query=phone%3D','endUserId','forEach','string','picklist','type','nameField','customField','toLowerCase','content','toString','includes','idField','variableName','customVariable','Variable','name',']\x20getTicket\x20input\x20crm','outbound','incident','assign','getString','Subjects','Descriptions',']\x20POST\x20incident\x20entity\x20schema','ticketId','number','label','?sysparm_query=name%3D','ticketNumber','push','all','map','%26sysparm_record_target%3Dincident','%26sysparm_record_row%3D1%26sysparm_record_rows%3D39','%26sysparm_record_list%3Dactive%253Dtrue','%255EORDERBYDESCnumber','format','user:%s','emit','trigger:browser:url','password','sysparm_limit=1','remoteUri','stripTrailingSlash','serverUrl','isNil','email','destcalleridnum','calleridnum','callDirection','unmanaged','queue','uniqueid','monitor_format','Recording\x20is\x20enabled!','recordingURL','recordingFormat','none','The\x20ticket\x20ID\x20is:\x20%s','Displaying\x20call\x20in\x20a\x20new\x20tab...'];(function(_0x20a584,_0xe384a5){var _0x4b41a8=function(_0x2127c6){while(--_0x2127c6){_0x20a584['push'](_0x20a584['shift']());}};_0x4b41a8(++_0xe384a5);}(_0xe809,0x136));var _0x9e80=function(_0x7f8f9c,_0x427d17){_0x7f8f9c=_0x7f8f9c-0x0;var _0x298f93=_0xe809[_0x7f8f9c];return _0x298f93;};'use strict';var _=require(_0x9e80('0x0'));var Promise=require(_0x9e80('0x1'));var rp=require(_0x9e80('0x2'));var util=require(_0x9e80('0x3'));var md5=require(_0x9e80('0x4'));var Redis=require(_0x9e80('0x5'));var intUtil=require(_0x9e80('0x6'));var config=require('../../../../config/environment');var logger=require(_0x9e80('0x7'))(_0x9e80('0x8'));config[_0x9e80('0x9')]=_['defaults'](config['redis'],{'host':'localhost','port':0x18eb});var io=require(_0x9e80('0xa'))(new Redis(config[_0x9e80('0x9')]));function getAdminUser(_0x432d15,_0x696efb,_0x14e35d,_0x30ee6d,_0x1d436b,_0x580d21){return new Promise(function(_0x5eac29,_0x50859e){var _0x2355f3={'method':_0x9e80('0xb'),'uri':_0x30ee6d+'sys_user?sysparm_query=user_name%3Dadmin'+'&'+_0x1d436b+'&'+_0x580d21,'auth':_0x696efb,'json':!![]};return rp(_0x2355f3)[_0x9e80('0xc')](function(_0x3f0f82){if(_0x3f0f82[_0x9e80('0xd')]['length']>0x0){_0x14e35d['adminId']=_0x3f0f82[_0x9e80('0xd')][0x0]['sys_id'];}logger[_0x9e80('0xe')]('['+[_0x432d15['toUpperCase']()]+_0x9e80('0xf'),_0x14e35d);_0x5eac29(_0x14e35d);})['catch'](function(_0x12670c){logger[_0x9e80('0x10')]('['+[_0x432d15['toUpperCase']()]+']',_0x12670c[_0x9e80('0x11')]);_0x50859e(_0x12670c[_0x9e80('0x11')]);});});}function getUser(_0x10fae4,_0x537894,_0x7b96c5,_0x56316e,_0x1c4ae6){return function(_0x5464de){logger['info']('['+[_0x10fae4[_0x9e80('0x12')]()]+_0x9e80('0x13'),_0x5464de);return new Promise(function(_0x49be6f,_0x25a869){if(intUtil['validateEmail'](_0x5464de[_0x9e80('0x14')])){var _0x2d5e27={'method':_0x9e80('0xb'),'uri':_0x7b96c5+_0x9e80('0x15')+_0x5464de[_0x9e80('0x14')]+'&'+_0x56316e+'&'+_0x1c4ae6,'auth':_0x537894,'json':!![]};logger[_0x9e80('0xe')]('['+[_0x10fae4[_0x9e80('0x12')]()]+_0x9e80('0x16'),_0x2d5e27);return rp(_0x2d5e27)['then'](function(_0x27b7c0){logger[_0x9e80('0xe')]('['+[_0x10fae4['toUpperCase']()]+_0x9e80('0x17'),_0x27b7c0);if(_0x27b7c0[_0x9e80('0xd')][_0x9e80('0x18')]>0x0&&String(_0x27b7c0[_0x9e80('0xd')][0x0][_0x9e80('0x19')])===_0x9e80('0x1a')){_0x5464de[_0x9e80('0x1b')]=_0x27b7c0[_0x9e80('0xd')][0x0][_0x9e80('0x1c')];}else{_0x5464de[_0x9e80('0x1b')]=_0x5464de[_0x9e80('0x1d')];_0x5464de['userEmail']=_0x5464de[_0x9e80('0x1e')];}logger['info']('['+[_0x10fae4['toUpperCase']()]+_0x9e80('0x1f'),_0x5464de);_0x49be6f(_0x5464de);})[_0x9e80('0x20')](function(_0x242c7d){logger['error']('['+[_0x10fae4[_0x9e80('0x12')]()]+']',_0x242c7d[_0x9e80('0x11')]);_0x25a869(_0x242c7d['message']);});}else{logger[_0x9e80('0xe')]('['+[_0x10fae4[_0x9e80('0x12')]()]+_0x9e80('0x21'));_0x5464de[_0x9e80('0x1b')]=_0x5464de[_0x9e80('0x1d')];_0x5464de['userEmail']=_0x5464de['adminEmail'];_0x49be6f(_0x5464de);}});};}function createEndUser(_0x30442d,_0xc810df,_0x4863da,_0xa06562,_0x4a0e07){logger[_0x9e80('0xe')]('['+[_0x30442d[_0x9e80('0x12')]()]+_0x9e80('0x22'),_0x4863da);return new Promise(function(_0x24ecf8,_0x173aac){var _0xa3553d={'method':_0x9e80('0x23'),'uri':_0xa06562+_0x9e80('0x24')+_0x4a0e07,'body':{'user_name':_0x4863da[_0x9e80('0x25')],'roles':_0x9e80('0x26'),'first_name':_0x4863da[_0x9e80('0x25')],'active':_0x9e80('0x1a'),'date_format':_0x9e80('0x27'),'phone':_0x4863da[_0x9e80('0x25')]},'auth':_0xc810df,'json':!![]};return rp(_0xa3553d)[_0x9e80('0xc')](function(_0x385fb5){logger[_0x9e80('0xe')]('['+[_0x30442d[_0x9e80('0x12')]()]+_0x9e80('0x28'),_0x385fb5[_0x9e80('0xd')]);_0x4863da['endUserId']=_0x385fb5[_0x9e80('0xd')][_0x9e80('0x1c')];_0x24ecf8(_0x4863da);})[_0x9e80('0x20')](function(_0x1a55a0){logger['error']('['+[_0x30442d[_0x9e80('0x12')]()]+']',_0x1a55a0[_0x9e80('0x11')]);_0x173aac(_0x1a55a0[_0x9e80('0x11')]);});});}function getEndUser(_0xbea647,_0x35dcd9,_0x5e07e6,_0x308130,_0x1e43e9){return function(_0x31dfdd){logger[_0x9e80('0xe')]('['+[_0xbea647[_0x9e80('0x12')]()]+'],\x20getEndUser\x20input\x20crm',_0x31dfdd);return new Promise(function(_0x456906,_0x2b9371){var _0x563708={'method':_0x9e80('0xb'),'uri':_0x5e07e6+_0x9e80('0x29')+_0x31dfdd[_0x9e80('0x25')]+'&'+_0x308130+'&'+_0x1e43e9,'auth':_0x35dcd9,'json':!![]};return rp(_0x563708)[_0x9e80('0xc')](function(_0xef4e3b){if(_0xef4e3b[_0x9e80('0xd')][_0x9e80('0x18')]>0x0){_0x31dfdd[_0x9e80('0x2a')]=_0xef4e3b['result'][0x0][_0x9e80('0x1c')];logger[_0x9e80('0xe')]('['+[_0xbea647['toUpperCase']()]+'],\x20getEndUser\x20crm',_0x31dfdd);_0x456906(_0x31dfdd);}else{return createEndUser(_0xbea647,_0x35dcd9,_0x31dfdd,_0x5e07e6,_0x308130)[_0x9e80('0xc')](function(_0x17288e){logger[_0x9e80('0xe')]('['+[_0xbea647[_0x9e80('0x12')]()]+'],\x20createEndUser\x20crm',_0x17288e);_0x456906(_0x17288e);});}})[_0x9e80('0x20')](function(_0x50e0f0){logger[_0x9e80('0x10')]('['+[_0xbea647['toUpperCase']()]+']',_0x50e0f0[_0x9e80('0x11')]);_0x2b9371(_0x50e0f0[_0x9e80('0x11')]);});});};}function getCustomFields(_0x3f783e,_0x132f6e){var _0xa6a370={};if(_0x3f783e[_0x9e80('0x18')]>0x0){_[_0x9e80('0x2b')](_0x3f783e,function(_0x150965){if(_['includes']([_0x9e80('0x2c'),_0x9e80('0x2d')],_0x150965[_0x9e80('0x2e')])&&_0x150965[_0x9e80('0x2f')]&&!_0x150965[_0x9e80('0x30')]){_0xa6a370[_0x150965[_0x9e80('0x2f')][_0x9e80('0x31')]()]=_0x150965[_0x9e80('0x32')][_0x9e80('0x33')]();}else if(_[_0x9e80('0x34')]([_0x9e80('0x2c'),'picklist'],_0x150965['type'])&&_0x150965[_0x9e80('0x35')]&&_0x150965['customField']){_0xa6a370[_0x150965['idField']['toLowerCase']()]=_0x150965['content'][_0x9e80('0x33')]();}else if(_0x150965[_0x9e80('0x2e')]==='variable'&&_0x150965[_0x9e80('0x36')]&&_0x150965[_0x9e80('0x35')]&&_0x150965[_0x9e80('0x30')]){_0xa6a370[_0x150965['idField'][_0x9e80('0x31')]()]=_0x132f6e[_0x150965[_0x9e80('0x36')]][_0x9e80('0x33')]();}else if(_0x150965[_0x9e80('0x2e')]===_0x9e80('0x37')&&_0x150965[_0x9e80('0x38')]&&_0x150965[_0x9e80('0x38')][_0x9e80('0x39')]&&_0x150965[_0x9e80('0x35')]&&_0x150965['customField']){_0xa6a370[_0x150965['idField']['toLowerCase']()]=_0x132f6e[_0x150965[_0x9e80('0x38')][_0x9e80('0x39')][_0x9e80('0x31')]()]['toString']();}});}return _0xa6a370;}function getTicket(_0x483744,_0x55bf0c,_0xbfe01c,_0x5a8e60,_0x4e835e,_0x1a1e9f){return function(_0x399d66){logger['info']('['+[_0x483744[_0x9e80('0x12')]()]+_0x9e80('0x3a'),_0x399d66);return new Promise(function(_0x27d489,_0x567942){var _0x120466=_0x483744[_0x9e80('0x31')]()===_0x9e80('0x3b')?_0x399d66['userId']:_0x399d66[_0x9e80('0x2a')];var _0x4b0ea2={'method':_0x9e80('0x23'),'uri':_0xbfe01c+_0x9e80('0x3c')+'?'+_0x1a1e9f,'body':Object[_0x9e80('0x3d')]({},{'active':_0x9e80('0x1a'),'caller_id':_0x120466,'assigned_to':_0x399d66[_0x9e80('0x1b')],'short_description':intUtil[_0x9e80('0x3e')](_0x5a8e60[_0x9e80('0x3f')],_0x4e835e,'\x20'),'description':intUtil[_0x9e80('0x3e')](_0x5a8e60[_0x9e80('0x40')],_0x4e835e,'\x0a')},getCustomFields(_0x5a8e60['Fields'],_0x4e835e)),'auth':_0x55bf0c,'json':!![]};return rp(_0x4b0ea2)[_0x9e80('0xc')](function(_0x4c6734){logger[_0x9e80('0xe')]('['+[_0x483744[_0x9e80('0x12')]()]+_0x9e80('0x41'),_0x4c6734[_0x9e80('0xd')]);_0x399d66[_0x9e80('0x42')]=_0x4c6734[_0x9e80('0xd')]['sys_id'];_0x399d66['ticketNumber']=_0x4c6734[_0x9e80('0xd')][_0x9e80('0x43')];logger['info']('['+[_0x483744[_0x9e80('0x12')]()]+']\x20getTicket\x20crm',_0x399d66);_0x27d489(_0x399d66);})['catch'](function(_0x34e109){logger[_0x9e80('0x10')]('['+[_0x483744[_0x9e80('0x12')]()]+']',_0x34e109['message']);_0x567942(_0x34e109[_0x9e80('0x11')]);});});};}function createRemoteTag(_0x12ba34,_0x57c285,_0x542be9,_0x44a2bc){return new Promise(function(_0x2c563b,_0x103212){var _0x1b612b={'method':_0x9e80('0x23'),'uri':_0x542be9+_0x9e80('0x44')+'?'+_0x44a2bc,'body':{'short_description':_0x12ba34,'global':!![],'active':!![],'name':_0x12ba34},'auth':_0x57c285,'json':!![]};return rp(_0x1b612b)[_0x9e80('0xc')](function(_0x5ab04e){var _0x48b760=_0x5ab04e[_0x9e80('0xd')][_0x9e80('0x1c')];_0x2c563b(_0x48b760);});});}function getRemoteTag(_0x1f2be9,_0x2effbe,_0x22efca,_0x3c4030,_0x3e2402){return new Promise(function(_0x1c65a1,_0x465306){var _0x43d897={'method':_0x9e80('0xb'),'uri':_0x22efca+_0x9e80('0x44')+_0x9e80('0x45')+_0x1f2be9+'&'+_0x3c4030,'auth':_0x2effbe,'json':!![]};return rp(_0x43d897)['then'](function(_0x567331){if(_0x567331['result'][_0x9e80('0x18')]>0x0){var _0x28504f=_0x567331[_0x9e80('0xd')][0x0][_0x9e80('0x1c')];_0x1c65a1(_0x28504f);}else{return createRemoteTag(_0x1f2be9,_0x2effbe,_0x22efca,_0x3c4030)[_0x9e80('0xc')](function(_0x38a09e){_0x1c65a1(_0x38a09e);});}});});}function assignTagToIncident(_0x903fd2,_0x6df740,_0x104f84,_0x5bd208,_0x51e9d9){return new Promise(function(_0x34f798,_0x573cae){var _0x570c60={'method':_0x9e80('0x23'),'uri':_0x104f84+'label_entry'+'?'+_0x51e9d9,'body':{'label':_0x903fd2,'table':'incident','id_type':'Incident','table_key':_0x5bd208[_0x9e80('0x42')],'title':'Incident\x20-\x20'+_0x5bd208[_0x9e80('0x46')],'id_display':_0x5bd208[_0x9e80('0x46')]},'auth':_0x6df740,'json':!![]};return rp(_0x570c60)[_0x9e80('0xc')](function(_0x32b9c6){_0x34f798();})[_0x9e80('0x20')](function(){_0x34f798();});});}function manageTags(_0xadb3bc,_0x3ae3db,_0x287b7b,_0x5d0c91,_0x456a5e,_0x2a1586,_0x3dccab){return new Promise(function(_0x1498f3,_0x5aee18){var _0x1769e7=[];_0x3ae3db[_0x9e80('0x2b')](function(_0x243009){_0x1769e7[_0x9e80('0x47')](getRemoteTag(_0x243009,_0x287b7b,_0x5d0c91,_0x2a1586,_0x3dccab));});return Promise['all'](_0x1769e7)[_0x9e80('0xc')](function(_0x204242){if(_0x204242[_0x9e80('0x18')]){logger[_0x9e80('0xe')]('['+[_0xadb3bc[_0x9e80('0x12')]()]+']\x20arrayPromises:\x20IDs\x20in\x20table\x20label',_0x204242);var _0x390975=[];_0x204242[_0x9e80('0x2b')](function(_0x28ab31){_0x390975[_0x9e80('0x47')](assignTagToIncident(_0x28ab31,_0x287b7b,_0x5d0c91,_0x456a5e,_0x2a1586));});return Promise[_0x9e80('0x48')](_0x390975)[_0x9e80('0xc')](function(){_0x1498f3();})[_0x9e80('0x20')](function(){_0x1498f3();});}else{_0x1498f3();}});});}function getTags(_0x270aa3,_0x584885,_0x4ce4b9,_0x28086b,_0x4b003a,_0x2a0696){return function(_0x2abba0){return new Promise(function(_0x18af00,_0x44c60f){var _0x54000f=[];var _0x568a25=_0x28086b['Tags'];if(_0x568a25&&_0x568a25['length']>0x0){_0x54000f=_[_0x9e80('0x49')](_0x568a25,_0x9e80('0x39'));}if(_0x54000f['length']>0x0){return manageTags(_0x270aa3,_0x54000f,_0x584885,_0x4ce4b9,_0x2abba0,_0x4b003a,_0x2a0696)[_0x9e80('0xc')](function(){_0x18af00(_0x2abba0);});}else{_0x18af00(_0x2abba0);}});};}function emit(_0x98250c,_0x2f1172,_0x447cf3){var _0x2bd0ef=_0x9e80('0x4a')+_0x9e80('0x4b')+_0x9e80('0x4c')+_0x9e80('0x4d');var _0x504f84={'uri':_0x98250c+'/nav_to.do?uri=incident.do?sys_id%3D'+_0x447cf3+_0x2bd0ef};io['to'](util[_0x9e80('0x4e')](_0x9e80('0x4f'),_0x2f1172))[_0x9e80('0x50')](_0x9e80('0x51'),_0x504f84);}exports['cs']=function(_0x22a6c6,_0x31fcb5,_0x1ccbd2,_0xa3b486,_0x2c8c45,_0x354679,_0x92dc94,_0x9eac7a){var _0x1f1752={};var _0x4ae8e4={'user':_0x354679['username'],'pass':_0x354679[_0x9e80('0x52')]};var _0x39cae9=_0x9e80('0x53');var _0x1c5772='sysparm_display_value=true';_0x354679[_0x9e80('0x54')]=intUtil[_0x9e80('0x55')](_0x354679['remoteUri']);_0x354679[_0x9e80('0x56')]=intUtil[_0x9e80('0x55')](_0x354679[_0x9e80('0x56')]);var _0x229ca0=util['format']('%s/api/now/table/',_0x354679[_0x9e80('0x54')]);_0x1f1752[_0x9e80('0x14')]=!_[_0x9e80('0x57')](_0xa3b486)?_0xa3b486[_0x9e80('0x58')]:null;_0x1f1752[_0x9e80('0x1e')]=_0x354679['email'];_0x1f1752[_0x9e80('0x25')]=_0x9eac7a[_0x9e80('0x31')]()===_0x9e80('0x3b')?_0x31fcb5[_0x9e80('0x59')]:_0x31fcb5[_0x9e80('0x5a')];_0x1f1752[_0x9e80('0x5b')]=_0x9eac7a==='queue'||_0x9eac7a===_0x9e80('0x5c')?_0x9e80('0x5d'):'outbound';var _0x18dce1=util[_0x9e80('0x4e')]('%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s',_0x354679[_0x9e80('0x56')],_0x31fcb5[_0x9e80('0x5e')],md5(_0x31fcb5[_0x9e80('0x5e')]));if(_0x2c8c45&&_0x2c8c45[_0x9e80('0x5f')]){logger['info']('[QUEUE]',_0x9e80('0x60'));_0x31fcb5[_0x9e80('0x61')]=_0x18dce1;}else if(_0x92dc94&&_0x92dc94[_0x9e80('0x62')]&&_0x92dc94[_0x9e80('0x62')]!==_0x9e80('0x63')){logger[_0x9e80('0xe')]('[OUTBOUND]',_0x9e80('0x60'));_0x31fcb5[_0x9e80('0x61')]=_0x18dce1;}else{_0x31fcb5[_0x9e80('0x61')]='';}return getAdminUser(_0x9eac7a,_0x4ae8e4,_0x1f1752,_0x229ca0,_0x1c5772,_0x39cae9)['then'](getUser(_0x9eac7a,_0x4ae8e4,_0x229ca0,_0x1c5772,_0x39cae9))[_0x9e80('0xc')](getEndUser(_0x9eac7a,_0x4ae8e4,_0x229ca0,_0x1c5772,_0x39cae9))['then'](getTicket(_0x9eac7a,_0x4ae8e4,_0x229ca0,_0x1ccbd2,_0x31fcb5,_0x1c5772))[_0x9e80('0xc')](function(_0x50288f){logger[_0x9e80('0xe')](util['format'](_0x9e80('0x64'),_0x50288f['ticketId']));logger[_0x9e80('0xe')](util['format']('call\x20direction:\x20%s',_0x9eac7a));if(_0x9eac7a!==_0x9e80('0x5c')){logger['info']('['+[_0x9eac7a[_0x9e80('0x12')]()]+']',_0x9e80('0x65'));emit(_0x354679[_0x9e80('0x54')],_0xa3b486['name'],_0x50288f['ticketId']);}})[_0x9e80('0x20')](function(_0x1c777f){logger[_0x9e80('0x10')]('['+[_0x9eac7a[_0x9e80('0x12')]()]+_0x9e80('0x66'),util['inspect'](_0x1c777f,{'showHidden':!![],'depth':null}));});};
\ No newline at end of file
index db01ea1..6478561 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc21a=['length','variableName','push','set_entry','JSON','Calls','format','Basic\x20%s','apiKey','toString','get_server_info','stringify','isNil','Getting\x20agent\x20with\x20name','get_entry_list','Employees','INSTR\x20(\x20users.user_name,\x20\x22%s\x22)\x20>\x200','user_name','then','entry_list','Agent\x20found!','resolve','name_value_list','value','user_id','Agent\x20not\x20available,\x20using\x20the\x20admin\x20account!','Searching\x20enduser\x20with\x20phone','contacts.phone_home\x20=\x20\x22%s\x22','phone_home','Enduser\x20found!','Enduser\x20not\x20found,\x20creating\x20a\x20new\x20enduser!','first_name','<unknown>','Enduser\x20created.','[HTTP]','map','string','nameField','toLowerCase','content','type','idField','custom_fields','variable','customField','customVariable','Variable','login','username','Account\x20%d\x20is\x20not\x20valid','set_relationship','remoteUri','serverUrl','%s/service/v4_1/rest.php','monitor_format','Recording\x20is\x20enabled!','%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s','recordingURL','The\x20User\x20ID\x20is:','calleridname','calleridnum','Inbound','The\x20Ticket\x20ID\x20is:','contacts','charAt','%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','[QUEUE]','Displaying\x20ticket\x20to\x20agent\x20in\x20a\x20new\x20tab...','user:%s','stripTrailingSlash','uri','recordingFormat','none','uniqueid','destcalleridname','destcalleridnum','The\x20Enduser\x20ID\x20is:','Outbound','Ticket\x20created!','users','version','[OUTBOUND]','trigger:browser:url','unmanaged','lastevent','toUpperCase','Fields','lodash','request-promise','bluebird','md5','util','./util','../../../../config/environment','../../../../config/logger','sugarcrm','redis','defaults','socket.io-emitter','POST','info','Creating\x20new\x20ticket...','getString','assigned_user_id','Descriptions','date_start','toISOString','replace','duration_hours','duration_minutes','parent_id','parent_type','Contacts','parent_name','name','direction'];(function(_0x3e71a5,_0x37679a){var _0xa367bf=function(_0x469804){while(--_0x469804){_0x3e71a5['push'](_0x3e71a5['shift']());}};_0xa367bf(++_0x37679a);}(_0xc21a,0xcd));var _0xac21=function(_0x123af2,_0x56fb8d){_0x123af2=_0x123af2-0x0;var _0x45df4c=_0xc21a[_0x123af2];return _0x45df4c;};'use strict';var _=require(_0xac21('0x0'));var rp=require(_0xac21('0x1'));var BPromise=require(_0xac21('0x2'));var md5=require(_0xac21('0x3'));var util=require(_0xac21('0x4'));var Redis=require('ioredis');var intUtil=require(_0xac21('0x5'));var config=require(_0xac21('0x6'));var logger=require(_0xac21('0x7'))(_0xac21('0x8'));config[_0xac21('0x9')]=_[_0xac21('0xa')](config[_0xac21('0x9')],{'host':'localhost','port':0x18eb});var io=require(_0xac21('0xb'))(new Redis(config[_0xac21('0x9')]));var def={'method':_0xac21('0xc'),'json':!![]};function emit(_0x3d0bec,_0x299828,_0x359778){io['to'](_0x3d0bec)['emit'](_0x299828,_0x359778);}function getTicket(_0xf1306f,_0x56252d,_0x283d86,_0x3d63bd,_0x180e63,_0x5c0b41,_0x4d5f73,_0x1f270f){logger[_0xac21('0xd')](_0xac21('0xe'));var _0xea26f8=new Date();var _0x20b6a9=[{'name':'name','value':intUtil[_0xac21('0xf')](_0x3d63bd['Subjects'],_0x180e63,'\x20')},{'name':_0xac21('0x10'),'value':_0x56252d['id']},{'name':'created_by','value':_0x56252d['id']},{'name':'description','value':intUtil['getString'](_0x3d63bd[_0xac21('0x11')],_0x180e63,'\x0a')},{'name':_0xac21('0x12'),'value':_0xea26f8[_0xac21('0x13')]()['slice'](0x0,0x13)[_0xac21('0x14')]('T','\x20')},{'name':_0xac21('0x15'),'value':'0'},{'name':_0xac21('0x16'),'value':'15'},{'name':_0xac21('0x17'),'value':_0x283d86['id']},{'name':_0xac21('0x18'),'value':_0xac21('0x19')},{'name':_0xac21('0x1a'),'value':_0x283d86[_0xac21('0x1b')]},{'name':_0xac21('0x1c'),'value':_0x1f270f}];if(_0x5c0b41[_0xac21('0x1d')]){_['forEach'](_0x5c0b41,function(_0x16cfd8){if(_0x180e63[_0x16cfd8[_0xac21('0x1e')]]){_0x20b6a9[_0xac21('0x1f')]({'name':_0x16cfd8['idField'],'value':_0x180e63[_0x16cfd8[_0xac21('0x1e')]]});}});}return request({'form':{'method':_0xac21('0x20'),'input_type':_0xac21('0x21'),'response_type':_0xac21('0x21'),'rest_data':JSON['stringify']({'session':_0x4d5f73['id'],'module_name':_0xac21('0x22'),'name_value_list':_0x20b6a9})}});}function getAuth(_0x10fb73){return util[_0xac21('0x23')](_0xac21('0x24'),new Buffer(_0x10fb73[_0xac21('0x25')]+':X')[_0xac21('0x26')]('base64'));}function getServerInfo(_0x13f2bd){return request({'form':{'method':_0xac21('0x27'),'input_type':_0xac21('0x21'),'response_type':_0xac21('0x21'),'rest_data':JSON[_0xac21('0x28')]({'session':_0x13f2bd['id']})}});}function getUser(_0x2938d7,_0x10a855,_0x4ce519){if(!_[_0xac21('0x29')](_0x10a855)){logger[_0xac21('0xd')](_0xac21('0x2a'),_0x10a855);return request({'form':{'method':_0xac21('0x2b'),'input_type':_0xac21('0x21'),'response_type':_0xac21('0x21'),'rest_data':JSON[_0xac21('0x28')]({'session':_0x4ce519['id'],'module_name':_0xac21('0x2c'),'query':util[_0xac21('0x23')](_0xac21('0x2d'),_0x10a855),'order_by':'','offset':'0','select_fields':['id',_0xac21('0x1b'),_0xac21('0x2e')],'link_name_to_fields_array':[],'max_results':-0x1,'deleted':'0'})}})[_0xac21('0x2f')](function(_0x267d8b){if(_0x267d8b[_0xac21('0x30')][_0xac21('0x1d')]){var _0x2b38c9=_['find'](_0x267d8b[_0xac21('0x30')],function(_0x35ce7a){return _0x35ce7a['name_value_list'][_0xac21('0x2e')]['value']===_0x10a855;});if(_0x2b38c9){logger[_0xac21('0xd')](_0xac21('0x31'));return BPromise[_0xac21('0x32')]({'id':_0x2b38c9[_0xac21('0x33')]['id'][_0xac21('0x34')],'name':_0x2b38c9['name_value_list'][_0xac21('0x1b')][_0xac21('0x34')]});}}logger[_0xac21('0xd')]('Agent\x20not\x20found,\x20using\x20the\x20admin\x20account!');return BPromise[_0xac21('0x32')]({'id':_0x4ce519[_0xac21('0x33')][_0xac21('0x35')]['value'],'name':_0x4ce519[_0xac21('0x33')][_0xac21('0x2e')][_0xac21('0x34')]});});}else{logger['info'](_0xac21('0x36'));return BPromise[_0xac21('0x32')]({'id':_0x4ce519[_0xac21('0x33')][_0xac21('0x35')][_0xac21('0x34')],'name':_0x4ce519['name_value_list'][_0xac21('0x2e')][_0xac21('0x34')]});}}function getEndUser(_0x57b141,_0x570272,_0x3f7df9,_0x50f974){logger[_0xac21('0xd')](_0xac21('0x37'),_0x3f7df9);return request({'form':{'method':_0xac21('0x2b'),'input_type':_0xac21('0x21'),'response_type':'JSON','rest_data':JSON['stringify']({'session':_0x50f974['id'],'module_name':'Contacts','query':util[_0xac21('0x23')](_0xac21('0x38'),_0x3f7df9),'order_by':'','offset':'0','select_fields':['id','name','phone_home'],'link_name_to_fields_array':[],'max_results':-0x1,'deleted':'0'})}})[_0xac21('0x2f')](function(_0x20a935){if(_0x20a935[_0xac21('0x30')][_0xac21('0x1d')]){var _0x5f299f=_['find'](_0x20a935[_0xac21('0x30')],function(_0x210f18){return _0x210f18[_0xac21('0x33')][_0xac21('0x39')]['value']===_0x3f7df9;});if(_0x5f299f){logger[_0xac21('0xd')](_0xac21('0x3a'));return BPromise[_0xac21('0x32')]({'id':_0x5f299f[_0xac21('0x33')]['id']['value'],'name':_0x5f299f[_0xac21('0x33')][_0xac21('0x1b')]['value'],'phone':_0x5f299f[_0xac21('0x33')][_0xac21('0x39')]['value']});}}else{logger[_0xac21('0xd')](_0xac21('0x3b'));return request({'form':{'method':'set_entry','input_type':'JSON','response_type':_0xac21('0x21'),'rest_data':JSON['stringify']({'session':_0x50f974['id'],'module_name':_0xac21('0x19'),'name_value_list':[{'name':_0xac21('0x3c'),'value':_0x570272!==_0xac21('0x3d')?_0x570272:util[_0xac21('0x23')]('Caller\x20-\x20%s',_0x3f7df9)},{'name':'phone_home','value':_0x3f7df9}]})}})['then'](function(_0x29554f){logger[_0xac21('0xd')](_0xac21('0x3e'));return BPromise[_0xac21('0x32')]({'id':_0x29554f['id'],'name':_0x29554f[_0xac21('0x30')]['first_name'][_0xac21('0x34')],'phone':_0x29554f[_0xac21('0x30')][_0xac21('0x39')][_0xac21('0x34')]});});}});}function request(_0x5a4906){logger['debug'](_0xac21('0x3f'),JSON['stringify'](_0x5a4906));return rp(_['merge'](def,_0x5a4906));}function getTags(_0x4b4e40,_0x574219){var _0x55925d=[];if(_0x4b4e40&&_0x4b4e40[_0xac21('0x1d')]>0x0){_0x55925d=_[_0xac21('0x40')](_0x4b4e40,_0x574219);}return _0x55925d;}function getCustomFields(_0x2b3924,_0x44264c){var _0x2ddc28=[];var _0x46fb75={'custom_fields':[]};if(_0x2b3924[_0xac21('0x1d')]>0x0){_['forEach'](_0x2b3924,function(_0x54a44d){if(_0x54a44d['type']===_0xac21('0x41')&&_0x54a44d[_0xac21('0x42')]&&!_0x54a44d['customField']){_0x46fb75[_0x54a44d[_0xac21('0x42')][_0xac21('0x43')]()]=_0x54a44d[_0xac21('0x44')][_0xac21('0x26')]();}else if(_0x54a44d[_0xac21('0x45')]===_0xac21('0x41')&&_0x54a44d[_0xac21('0x46')]&&_0x54a44d['customField']){_0x46fb75[_0xac21('0x47')][_0xac21('0x1f')]({'id':_0x54a44d[_0xac21('0x46')],'value':_0x54a44d[_0xac21('0x44')][_0xac21('0x26')]()});}else if(_0x54a44d['type']===_0xac21('0x48')&&_0x54a44d[_0xac21('0x1e')]&&_0x54a44d['idField']&&_0x54a44d[_0xac21('0x49')]){_0x44264c[_0x54a44d['variableName']]&&_0x46fb75['custom_fields'][_0xac21('0x1f')]({'id':_0x54a44d[_0xac21('0x46')],'value':_0x44264c[_0x54a44d['variableName']][_0xac21('0x26')]()});}else if(_0x54a44d[_0xac21('0x45')]===_0xac21('0x4a')&&_0x54a44d[_0xac21('0x4b')]&&_0x54a44d['Variable']['name']&&_0x54a44d[_0xac21('0x46')]&&_0x54a44d[_0xac21('0x49')]){_0x44264c[_0x54a44d[_0xac21('0x4b')][_0xac21('0x1b')]['toLowerCase']()]&&_0x46fb75['custom_fields']['push']({'id':_0x54a44d['idField'],'value':_0x44264c[_0x54a44d['Variable'][_0xac21('0x1b')][_0xac21('0x43')]()][_0xac21('0x26')]()});}});}return _0x46fb75;}function getConnection(_0x4ce55c){return request({'method':_0xac21('0xc'),'form':{'method':_0xac21('0x4c'),'input_type':_0xac21('0x21'),'response_type':_0xac21('0x21'),'rest_data':JSON[_0xac21('0x28')]({'user_auth':{'user_name':_0x4ce55c[_0xac21('0x4d')],'password':_0x4ce55c['password'],'encryption':'PLAIN'},'application':'xCALLY\x20Motion\x20integration'})}})[_0xac21('0x2f')](function(_0x651e04){var _0x3a52f6=_0x651e04;if(_0x3a52f6['id']){def['sessionID']=_0x3a52f6['id'];return BPromise[_0xac21('0x32')](_0x3a52f6);}else{throw new Error(util[_0xac21('0x23')](_0xac21('0x4e'),_0x4ce55c['id']));}});}function setRelationship(_0x2d70af,_0x58d5c5,_0xa93a8f,_0x2b3443){return request({'form':{'method':_0xac21('0x4f'),'input_type':_0xac21('0x21'),'response_type':_0xac21('0x21'),'rest_data':JSON[_0xac21('0x28')]({'session':_0x2d70af['id'],'module_name':_0xac21('0x22'),'module_id':_0xa93a8f['id'],'link_field_name':_0x2b3443,'related_ids':[_0x58d5c5['id']],'name_value_list':[],'delete':0x0})}});}exports['queue']=function(_0x1eaeb4,_0x4368a0,_0x3e2a7d,_0x447d9b,_0x42f46f,_0xd67651){var _0x412ed2,_0x597dcd,_0x5379e2,_0x58529a;_0xd67651[_0xac21('0x50')]=intUtil['stripTrailingSlash'](_0xd67651[_0xac21('0x50')]);_0xd67651[_0xac21('0x51')]=intUtil['stripTrailingSlash'](_0xd67651['serverUrl']);def['uri']=util['format'](_0xac21('0x52'),_0xd67651[_0xac21('0x50')]);if(_0x42f46f&&_0x42f46f[_0xac21('0x53')]){logger[_0xac21('0xd')]('[QUEUE]',_0xac21('0x54'));_0x4368a0['recordingURL']=util[_0xac21('0x23')](_0xac21('0x55'),_0xd67651[_0xac21('0x51')],_0x4368a0['uniqueid'],md5(_0x4368a0['uniqueid']));}else{_0x4368a0[_0xac21('0x56')]='';}return getConnection(_0xd67651)['then'](function(_0x51d97d){_0x58529a=_0x51d97d;return getUser(_0xd67651,_0x447d9b['name'],_0x58529a);})[_0xac21('0x2f')](function(_0x5d7577){_0x412ed2=_0x5d7577;logger['info'](_0xac21('0x57'),_0x412ed2['id']);return getEndUser(_0xd67651,_0x4368a0[_0xac21('0x58')],_0x4368a0[_0xac21('0x59')],_0x58529a);})[_0xac21('0x2f')](function(_0x62671d){_0x597dcd=_0x62671d;logger[_0xac21('0xd')]('The\x20Enduser\x20ID\x20is:',_0x597dcd['id']);return getTicket(_0xd67651,_0x412ed2,_0x597dcd,_0x3e2a7d,_0x4368a0,_0x3e2a7d['Fields'],_0x58529a,_0xac21('0x5a'));})[_0xac21('0x2f')](function(_0x44e5ad){_0x5379e2=_0x44e5ad;logger['info']('Ticket\x20created!');logger[_0xac21('0xd')](_0xac21('0x5b'),_0x5379e2['id']);return setRelationship(_0x58529a,_0x412ed2,_0x5379e2,'users');})[_0xac21('0x2f')](function(){return setRelationship(_0x58529a,_0x597dcd,_0x5379e2,_0xac21('0x5c'));})[_0xac21('0x2f')](function(){return getServerInfo(_0x58529a);})['then'](function(_0x182462){var _0x173f37=parseInt(_0x182462['version'][_0xac21('0x5d')](0x0));var _0x35ae00=util['format'](_0xac21('0x5e'),_0xd67651[_0xac21('0x50')],_0x5379e2['id']);if(_0x173f37>0x6){_0x35ae00=util[_0xac21('0x23')](_0xac21('0x5f'),_0xd67651[_0xac21('0x50')],_0x5379e2['id']);}logger[_0xac21('0xd')](_0xac21('0x60'),_0xac21('0x61'));emit(util[_0xac21('0x23')](_0xac21('0x62'),_0x447d9b[_0xac21('0x1b')]),'trigger:browser:url',{'uri':_0x35ae00});})['catch'](function(_0x541e2c){logger['error'](_0xac21('0x60'),JSON['stringify'](_0x541e2c));});};exports['outbound']=function(_0x22915f,_0x16f6d8,_0x54de0a,_0x19935d,_0x218ea5,_0x2a2c32,_0x33b048){var _0x103be6,_0x39020c,_0x433d61,_0x58711f;_0x2a2c32[_0xac21('0x50')]=intUtil[_0xac21('0x63')](_0x2a2c32[_0xac21('0x50')]);_0x2a2c32[_0xac21('0x51')]=intUtil[_0xac21('0x63')](_0x2a2c32[_0xac21('0x51')]);def[_0xac21('0x64')]=util['format'](_0xac21('0x52'),_0x2a2c32['remoteUri']);if(_0x33b048&&_0x33b048[_0xac21('0x65')]&&_0x33b048[_0xac21('0x65')]!==_0xac21('0x66')){logger[_0xac21('0xd')]('[OUTBOUND]','Recording\x20is\x20enabled!');_0x16f6d8[_0xac21('0x56')]=util['format'](_0xac21('0x55'),_0x2a2c32[_0xac21('0x51')],_0x16f6d8[_0xac21('0x67')],md5(_0x16f6d8[_0xac21('0x67')]));}return getConnection(_0x2a2c32)[_0xac21('0x2f')](function(_0x56f208){_0x58711f=_0x56f208;return getUser(_0x2a2c32,_0x19935d[_0xac21('0x1b')],_0x58711f);})['then'](function(_0x3d812d){_0x103be6=_0x3d812d;logger['info']('The\x20User\x20ID\x20is:',_0x103be6['id']);return getEndUser(_0x2a2c32,_0x16f6d8[_0xac21('0x68')],_0x16f6d8[_0xac21('0x69')],_0x58711f);})['then'](function(_0x31d208){_0x39020c=_0x31d208;logger[_0xac21('0xd')](_0xac21('0x6a'),_0x39020c['id']);return getTicket(_0x2a2c32,_0x103be6,_0x39020c,_0x54de0a,_0x16f6d8,_0x54de0a['Fields'],_0x58711f,_0xac21('0x6b'));})[_0xac21('0x2f')](function(_0x255a94){_0x433d61=_0x255a94;logger[_0xac21('0xd')](_0xac21('0x6c'));logger['info'](_0xac21('0x5b'),_0x433d61['id']);return setRelationship(_0x58711f,_0x103be6,_0x433d61,_0xac21('0x6d'));})[_0xac21('0x2f')](function(){return setRelationship(_0x58711f,_0x39020c,_0x433d61,_0xac21('0x5c'));})[_0xac21('0x2f')](function(){return getServerInfo(_0x58711f);})[_0xac21('0x2f')](function(_0x583670){var _0x2cfebf=parseInt(_0x583670[_0xac21('0x6e')][_0xac21('0x5d')](0x0));var _0x2e1c3c=util[_0xac21('0x23')](_0xac21('0x5e'),_0x2a2c32[_0xac21('0x50')],_0x433d61['id']);if(_0x2cfebf>0x6){_0x2e1c3c=util[_0xac21('0x23')](_0xac21('0x5f'),_0x2a2c32[_0xac21('0x50')],_0x433d61['id']);}logger[_0xac21('0xd')](_0xac21('0x6f'),'Displaying\x20ticket\x20to\x20agent\x20in\x20a\x20new\x20tab...');emit(util[_0xac21('0x23')](_0xac21('0x62'),_0x19935d['name']),_0xac21('0x70'),{'uri':_0x2e1c3c});})['catch'](function(_0x1ea1bc){logger['error'](_0xac21('0x6f'),JSON[_0xac21('0x28')](_0x1ea1bc));});};exports[_0xac21('0x71')]=function(_0x26967e,_0x42e544,_0x298e06,_0x224d6e,_0x452cba,_0x5d7de8){var _0x2f2877,_0x5aa708,_0x7ed327,_0x51047b;_0x5d7de8['remoteUri']=intUtil['stripTrailingSlash'](_0x5d7de8['remoteUri']);_0x5d7de8[_0xac21('0x51')]=intUtil[_0xac21('0x63')](_0x5d7de8[_0xac21('0x51')]);def[_0xac21('0x64')]=util[_0xac21('0x23')](_0xac21('0x52'),_0x5d7de8[_0xac21('0x50')]);if(_0x452cba&&_0x452cba['monitor_format']){logger['info']('['+_0x42e544[_0xac21('0x72')][_0xac21('0x73')]()+']',_0xac21('0x54'));_0x42e544[_0xac21('0x56')]=util[_0xac21('0x23')]('%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s',_0x5d7de8[_0xac21('0x51')],_0x42e544[_0xac21('0x67')],md5(_0x42e544[_0xac21('0x67')]));}else{_0x42e544[_0xac21('0x56')]='';}return getConnection(_0x5d7de8)[_0xac21('0x2f')](function(_0x3aa7d8){_0x51047b=_0x3aa7d8;if(!_[_0xac21('0x29')](_0x224d6e)){return getUser(_0x5d7de8,_0x224d6e['name'],_0x51047b);}else{return getUser(_0x5d7de8,null,_0x51047b);}})[_0xac21('0x2f')](function(_0x3e10e1){_0x2f2877=_0x3e10e1;logger[_0xac21('0xd')]('The\x20User\x20ID\x20is:',_0x2f2877['id']);return getEndUser(_0x5d7de8,_0x42e544[_0xac21('0x58')],_0x42e544[_0xac21('0x59')],_0x51047b);})[_0xac21('0x2f')](function(_0x94580b){_0x5aa708=_0x94580b;logger[_0xac21('0xd')](_0xac21('0x6a'),_0x5aa708['id']);return getTicket(_0x5d7de8,_0x2f2877,_0x5aa708,_0x298e06,_0x42e544,_0x298e06[_0xac21('0x74')],_0x51047b,_0xac21('0x5a'));})['then'](function(_0x264fa6){_0x7ed327=_0x264fa6;logger[_0xac21('0xd')]('Ticket\x20created!');logger[_0xac21('0xd')](_0xac21('0x5b'),_0x7ed327['id']);return setRelationship(_0x51047b,_0x2f2877,_0x7ed327,'users');})[_0xac21('0x2f')](function(){return setRelationship(_0x51047b,_0x5aa708,_0x7ed327,_0xac21('0x5c'));})[_0xac21('0x2f')](function(){return getServerInfo(_0x51047b);})['catch'](function(_0x25513a){logger['error']('['+_0x42e544[_0xac21('0x72')][_0xac21('0x73')]()+']',JSON[_0xac21('0x28')](_0x25513a));});};
\ No newline at end of file
+var _0x5490=['getString','Descriptions','date_start','toISOString','slice','replace','duration_minutes','parent_id','parent_type','Contacts','parent_name','forEach','variableName','idField','set_entry','JSON','stringify','Calls','format','Basic\x20%s','apiKey','toString','base64','get_server_info','isNil','Getting\x20agent\x20with\x20name','get_entry_list','INSTR\x20(\x20users.user_name,\x20\x22%s\x22)\x20>\x200','user_name','then','entry_list','length','find','name_value_list','value','Agent\x20found!','Agent\x20not\x20found,\x20using\x20the\x20admin\x20account!','resolve','Agent\x20not\x20available,\x20using\x20the\x20admin\x20account!','user_id','Searching\x20enduser\x20with\x20phone','phone_home','Enduser\x20found!','Enduser\x20not\x20found,\x20creating\x20a\x20new\x20enduser!','<unknown>','Caller\x20-\x20%s','first_name','debug','map','type','string','nameField','customField','content','push','variable','custom_fields','Variable','toLowerCase','POST','login','username','password','xCALLY\x20Motion\x20integration','sessionID','Account\x20%d\x20is\x20not\x20valid','set_relationship','queue','remoteUri','serverUrl','uri','%s/service/v4_1/rest.php','[QUEUE]','recordingURL','%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s','The\x20User\x20ID\x20is:','calleridname','calleridnum','Fields','Inbound','The\x20Ticket\x20ID\x20is:','contacts','version','%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','trigger:browser:url','catch','error','outbound','stripTrailingSlash','recordingFormat','none','Recording\x20is\x20enabled!','uniqueid','destcalleridname','destcalleridnum','Ticket\x20created!','users','charAt','[OUTBOUND]','Displaying\x20ticket\x20to\x20agent\x20in\x20a\x20new\x20tab...','user:%s','unmanaged','monitor_format','lastevent','toUpperCase','The\x20Enduser\x20ID\x20is:','lodash','util','./util','../../../../config/environment','../../../../config/logger','sugarcrm','redis','defaults','localhost','socket.io-emitter','emit','info','Creating\x20new\x20ticket...','name','Subjects','assigned_user_id','created_by','description'];(function(_0x28947d,_0x4cc9c6){var _0x12d2ee=function(_0x3f38fc){while(--_0x3f38fc){_0x28947d['push'](_0x28947d['shift']());}};_0x12d2ee(++_0x4cc9c6);}(_0x5490,0x1e2));var _0x0549=function(_0x8912d9,_0x361140){_0x8912d9=_0x8912d9-0x0;var _0x3918e3=_0x5490[_0x8912d9];return _0x3918e3;};'use strict';var _=require(_0x0549('0x0'));var rp=require('request-promise');var BPromise=require('bluebird');var md5=require('md5');var util=require(_0x0549('0x1'));var Redis=require('ioredis');var intUtil=require(_0x0549('0x2'));var config=require(_0x0549('0x3'));var logger=require(_0x0549('0x4'))(_0x0549('0x5'));config[_0x0549('0x6')]=_[_0x0549('0x7')](config[_0x0549('0x6')],{'host':_0x0549('0x8'),'port':0x18eb});var io=require(_0x0549('0x9'))(new Redis(config[_0x0549('0x6')]));var def={'method':'POST','json':!![]};function emit(_0x3f5c08,_0x50a4a2,_0x4f8858){io['to'](_0x3f5c08)[_0x0549('0xa')](_0x50a4a2,_0x4f8858);}function getTicket(_0x124c0b,_0x13c718,_0x53e7b5,_0x3b4442,_0x237cbd,_0x16f98c,_0x4473b5,_0x3ee625){logger[_0x0549('0xb')](_0x0549('0xc'));var _0x184282=new Date();var _0x15e31e=[{'name':_0x0549('0xd'),'value':intUtil['getString'](_0x3b4442[_0x0549('0xe')],_0x237cbd,'\x20')},{'name':_0x0549('0xf'),'value':_0x13c718['id']},{'name':_0x0549('0x10'),'value':_0x13c718['id']},{'name':_0x0549('0x11'),'value':intUtil[_0x0549('0x12')](_0x3b4442[_0x0549('0x13')],_0x237cbd,'\x0a')},{'name':_0x0549('0x14'),'value':_0x184282[_0x0549('0x15')]()[_0x0549('0x16')](0x0,0x13)[_0x0549('0x17')]('T','\x20')},{'name':'duration_hours','value':'0'},{'name':_0x0549('0x18'),'value':'15'},{'name':_0x0549('0x19'),'value':_0x53e7b5['id']},{'name':_0x0549('0x1a'),'value':_0x0549('0x1b')},{'name':_0x0549('0x1c'),'value':_0x53e7b5[_0x0549('0xd')]},{'name':'direction','value':_0x3ee625}];if(_0x16f98c['length']){_[_0x0549('0x1d')](_0x16f98c,function(_0x3c0741){if(_0x237cbd[_0x3c0741[_0x0549('0x1e')]]){_0x15e31e['push']({'name':_0x3c0741[_0x0549('0x1f')],'value':_0x237cbd[_0x3c0741[_0x0549('0x1e')]]});}});}return request({'form':{'method':_0x0549('0x20'),'input_type':'JSON','response_type':_0x0549('0x21'),'rest_data':JSON[_0x0549('0x22')]({'session':_0x4473b5['id'],'module_name':_0x0549('0x23'),'name_value_list':_0x15e31e})}});}function getAuth(_0x4b7143){return util[_0x0549('0x24')](_0x0549('0x25'),new Buffer(_0x4b7143[_0x0549('0x26')]+':X')[_0x0549('0x27')](_0x0549('0x28')));}function getServerInfo(_0x123923){return request({'form':{'method':_0x0549('0x29'),'input_type':_0x0549('0x21'),'response_type':_0x0549('0x21'),'rest_data':JSON[_0x0549('0x22')]({'session':_0x123923['id']})}});}function getUser(_0x59f3c5,_0x32a911,_0x492b17){if(!_[_0x0549('0x2a')](_0x32a911)){logger[_0x0549('0xb')](_0x0549('0x2b'),_0x32a911);return request({'form':{'method':_0x0549('0x2c'),'input_type':_0x0549('0x21'),'response_type':'JSON','rest_data':JSON[_0x0549('0x22')]({'session':_0x492b17['id'],'module_name':'Employees','query':util[_0x0549('0x24')](_0x0549('0x2d'),_0x32a911),'order_by':'','offset':'0','select_fields':['id','name',_0x0549('0x2e')],'link_name_to_fields_array':[],'max_results':-0x1,'deleted':'0'})}})[_0x0549('0x2f')](function(_0x1e078a){if(_0x1e078a[_0x0549('0x30')][_0x0549('0x31')]){var _0x44f250=_[_0x0549('0x32')](_0x1e078a[_0x0549('0x30')],function(_0x1553a3){return _0x1553a3[_0x0549('0x33')]['user_name'][_0x0549('0x34')]===_0x32a911;});if(_0x44f250){logger[_0x0549('0xb')](_0x0549('0x35'));return BPromise['resolve']({'id':_0x44f250[_0x0549('0x33')]['id'][_0x0549('0x34')],'name':_0x44f250[_0x0549('0x33')][_0x0549('0xd')][_0x0549('0x34')]});}}logger[_0x0549('0xb')](_0x0549('0x36'));return BPromise[_0x0549('0x37')]({'id':_0x492b17[_0x0549('0x33')]['user_id'][_0x0549('0x34')],'name':_0x492b17[_0x0549('0x33')]['user_name']['value']});});}else{logger['info'](_0x0549('0x38'));return BPromise[_0x0549('0x37')]({'id':_0x492b17[_0x0549('0x33')][_0x0549('0x39')]['value'],'name':_0x492b17[_0x0549('0x33')][_0x0549('0x2e')][_0x0549('0x34')]});}}function getEndUser(_0x178ca0,_0x4886ab,_0x407f94,_0x2dc828){logger[_0x0549('0xb')](_0x0549('0x3a'),_0x407f94);return request({'form':{'method':_0x0549('0x2c'),'input_type':_0x0549('0x21'),'response_type':'JSON','rest_data':JSON['stringify']({'session':_0x2dc828['id'],'module_name':_0x0549('0x1b'),'query':util[_0x0549('0x24')]('contacts.phone_home\x20=\x20\x22%s\x22',_0x407f94),'order_by':'','offset':'0','select_fields':['id',_0x0549('0xd'),'phone_home'],'link_name_to_fields_array':[],'max_results':-0x1,'deleted':'0'})}})[_0x0549('0x2f')](function(_0x212fdd){if(_0x212fdd['entry_list']['length']){var _0x3a2317=_[_0x0549('0x32')](_0x212fdd[_0x0549('0x30')],function(_0x2dbae8){return _0x2dbae8['name_value_list'][_0x0549('0x3b')][_0x0549('0x34')]===_0x407f94;});if(_0x3a2317){logger[_0x0549('0xb')](_0x0549('0x3c'));return BPromise[_0x0549('0x37')]({'id':_0x3a2317[_0x0549('0x33')]['id'][_0x0549('0x34')],'name':_0x3a2317[_0x0549('0x33')][_0x0549('0xd')]['value'],'phone':_0x3a2317['name_value_list'][_0x0549('0x3b')][_0x0549('0x34')]});}}else{logger['info'](_0x0549('0x3d'));return request({'form':{'method':_0x0549('0x20'),'input_type':'JSON','response_type':_0x0549('0x21'),'rest_data':JSON[_0x0549('0x22')]({'session':_0x2dc828['id'],'module_name':_0x0549('0x1b'),'name_value_list':[{'name':'first_name','value':_0x4886ab!==_0x0549('0x3e')?_0x4886ab:util[_0x0549('0x24')](_0x0549('0x3f'),_0x407f94)},{'name':'phone_home','value':_0x407f94}]})}})['then'](function(_0xbe1988){logger[_0x0549('0xb')]('Enduser\x20created.');return BPromise['resolve']({'id':_0xbe1988['id'],'name':_0xbe1988[_0x0549('0x30')][_0x0549('0x40')][_0x0549('0x34')],'phone':_0xbe1988['entry_list']['phone_home'][_0x0549('0x34')]});});}});}function request(_0x1318c9){logger[_0x0549('0x41')]('[HTTP]',JSON['stringify'](_0x1318c9));return rp(_['merge'](def,_0x1318c9));}function getTags(_0x7d870c,_0x13aabd){var _0x5a2e9c=[];if(_0x7d870c&&_0x7d870c['length']>0x0){_0x5a2e9c=_[_0x0549('0x42')](_0x7d870c,_0x13aabd);}return _0x5a2e9c;}function getCustomFields(_0x2c41b8,_0x4c1f16){var _0x20fd29=[];var _0x3d9bcd={'custom_fields':[]};if(_0x2c41b8[_0x0549('0x31')]>0x0){_['forEach'](_0x2c41b8,function(_0x1469ff){if(_0x1469ff[_0x0549('0x43')]===_0x0549('0x44')&&_0x1469ff[_0x0549('0x45')]&&!_0x1469ff[_0x0549('0x46')]){_0x3d9bcd[_0x1469ff[_0x0549('0x45')]['toLowerCase']()]=_0x1469ff[_0x0549('0x47')][_0x0549('0x27')]();}else if(_0x1469ff[_0x0549('0x43')]===_0x0549('0x44')&&_0x1469ff[_0x0549('0x1f')]&&_0x1469ff[_0x0549('0x46')]){_0x3d9bcd['custom_fields'][_0x0549('0x48')]({'id':_0x1469ff[_0x0549('0x1f')],'value':_0x1469ff[_0x0549('0x47')][_0x0549('0x27')]()});}else if(_0x1469ff[_0x0549('0x43')]===_0x0549('0x49')&&_0x1469ff[_0x0549('0x1e')]&&_0x1469ff[_0x0549('0x1f')]&&_0x1469ff[_0x0549('0x46')]){_0x4c1f16[_0x1469ff[_0x0549('0x1e')]]&&_0x3d9bcd[_0x0549('0x4a')][_0x0549('0x48')]({'id':_0x1469ff['idField'],'value':_0x4c1f16[_0x1469ff[_0x0549('0x1e')]][_0x0549('0x27')]()});}else if(_0x1469ff[_0x0549('0x43')]==='customVariable'&&_0x1469ff[_0x0549('0x4b')]&&_0x1469ff['Variable']['name']&&_0x1469ff['idField']&&_0x1469ff[_0x0549('0x46')]){_0x4c1f16[_0x1469ff['Variable'][_0x0549('0xd')][_0x0549('0x4c')]()]&&_0x3d9bcd['custom_fields'][_0x0549('0x48')]({'id':_0x1469ff[_0x0549('0x1f')],'value':_0x4c1f16[_0x1469ff[_0x0549('0x4b')][_0x0549('0xd')][_0x0549('0x4c')]()][_0x0549('0x27')]()});}});}return _0x3d9bcd;}function getConnection(_0x3259ff){return request({'method':_0x0549('0x4d'),'form':{'method':_0x0549('0x4e'),'input_type':_0x0549('0x21'),'response_type':_0x0549('0x21'),'rest_data':JSON[_0x0549('0x22')]({'user_auth':{'user_name':_0x3259ff[_0x0549('0x4f')],'password':_0x3259ff[_0x0549('0x50')],'encryption':'PLAIN'},'application':_0x0549('0x51')})}})[_0x0549('0x2f')](function(_0x150aa8){var _0x300ec2=_0x150aa8;if(_0x300ec2['id']){def[_0x0549('0x52')]=_0x300ec2['id'];return BPromise[_0x0549('0x37')](_0x300ec2);}else{throw new Error(util['format'](_0x0549('0x53'),_0x3259ff['id']));}});}function setRelationship(_0x7f93ae,_0x4b4ad7,_0x459750,_0x3efb97){return request({'form':{'method':_0x0549('0x54'),'input_type':_0x0549('0x21'),'response_type':_0x0549('0x21'),'rest_data':JSON[_0x0549('0x22')]({'session':_0x7f93ae['id'],'module_name':_0x0549('0x23'),'module_id':_0x459750['id'],'link_field_name':_0x3efb97,'related_ids':[_0x4b4ad7['id']],'name_value_list':[],'delete':0x0})}});}exports[_0x0549('0x55')]=function(_0x3ea37b,_0x4f2339,_0x161453,_0x22c832,_0x1e38d6,_0x1a1e2d){var _0x579732,_0xd045c4,_0x5c0f74,_0x100676;_0x1a1e2d[_0x0549('0x56')]=intUtil['stripTrailingSlash'](_0x1a1e2d[_0x0549('0x56')]);_0x1a1e2d[_0x0549('0x57')]=intUtil['stripTrailingSlash'](_0x1a1e2d[_0x0549('0x57')]);def[_0x0549('0x58')]=util['format'](_0x0549('0x59'),_0x1a1e2d[_0x0549('0x56')]);if(_0x1e38d6&&_0x1e38d6['monitor_format']){logger['info'](_0x0549('0x5a'),'Recording\x20is\x20enabled!');_0x4f2339[_0x0549('0x5b')]=util[_0x0549('0x24')](_0x0549('0x5c'),_0x1a1e2d[_0x0549('0x57')],_0x4f2339['uniqueid'],md5(_0x4f2339['uniqueid']));}else{_0x4f2339[_0x0549('0x5b')]='';}return getConnection(_0x1a1e2d)['then'](function(_0x19fcef){_0x100676=_0x19fcef;return getUser(_0x1a1e2d,_0x22c832[_0x0549('0xd')],_0x100676);})[_0x0549('0x2f')](function(_0x3adf28){_0x579732=_0x3adf28;logger['info'](_0x0549('0x5d'),_0x579732['id']);return getEndUser(_0x1a1e2d,_0x4f2339[_0x0549('0x5e')],_0x4f2339[_0x0549('0x5f')],_0x100676);})[_0x0549('0x2f')](function(_0x27b86a){_0xd045c4=_0x27b86a;logger['info']('The\x20Enduser\x20ID\x20is:',_0xd045c4['id']);return getTicket(_0x1a1e2d,_0x579732,_0xd045c4,_0x161453,_0x4f2339,_0x161453[_0x0549('0x60')],_0x100676,_0x0549('0x61'));})[_0x0549('0x2f')](function(_0x5d8204){_0x5c0f74=_0x5d8204;logger[_0x0549('0xb')]('Ticket\x20created!');logger[_0x0549('0xb')](_0x0549('0x62'),_0x5c0f74['id']);return setRelationship(_0x100676,_0x579732,_0x5c0f74,'users');})['then'](function(){return setRelationship(_0x100676,_0xd045c4,_0x5c0f74,_0x0549('0x63'));})[_0x0549('0x2f')](function(){return getServerInfo(_0x100676);})[_0x0549('0x2f')](function(_0x15dd75){var _0x47fe48=parseInt(_0x15dd75[_0x0549('0x64')]['charAt'](0x0));var _0x4b4455=util['format'](_0x0549('0x65'),_0x1a1e2d[_0x0549('0x56')],_0x5c0f74['id']);if(_0x47fe48>0x6){_0x4b4455=util['format'](_0x0549('0x66'),_0x1a1e2d['remoteUri'],_0x5c0f74['id']);}logger[_0x0549('0xb')](_0x0549('0x5a'),'Displaying\x20ticket\x20to\x20agent\x20in\x20a\x20new\x20tab...');emit(util[_0x0549('0x24')]('user:%s',_0x22c832[_0x0549('0xd')]),_0x0549('0x67'),{'uri':_0x4b4455});})[_0x0549('0x68')](function(_0x23729f){logger[_0x0549('0x69')](_0x0549('0x5a'),JSON[_0x0549('0x22')](_0x23729f));});};exports[_0x0549('0x6a')]=function(_0x4859e7,_0x498481,_0x5087f2,_0x53496a,_0x1ba704,_0x58bfab,_0x542b59){var _0x11a44a,_0x5ef351,_0x2f2a28,_0x491c46;_0x58bfab[_0x0549('0x56')]=intUtil[_0x0549('0x6b')](_0x58bfab['remoteUri']);_0x58bfab[_0x0549('0x57')]=intUtil[_0x0549('0x6b')](_0x58bfab[_0x0549('0x57')]);def[_0x0549('0x58')]=util[_0x0549('0x24')](_0x0549('0x59'),_0x58bfab[_0x0549('0x56')]);if(_0x542b59&&_0x542b59[_0x0549('0x6c')]&&_0x542b59['recordingFormat']!==_0x0549('0x6d')){logger['info']('[OUTBOUND]',_0x0549('0x6e'));_0x498481[_0x0549('0x5b')]=util[_0x0549('0x24')](_0x0549('0x5c'),_0x58bfab['serverUrl'],_0x498481[_0x0549('0x6f')],md5(_0x498481[_0x0549('0x6f')]));}return getConnection(_0x58bfab)['then'](function(_0x575a1c){_0x491c46=_0x575a1c;return getUser(_0x58bfab,_0x53496a[_0x0549('0xd')],_0x491c46);})[_0x0549('0x2f')](function(_0x3245a6){_0x11a44a=_0x3245a6;logger[_0x0549('0xb')](_0x0549('0x5d'),_0x11a44a['id']);return getEndUser(_0x58bfab,_0x498481[_0x0549('0x70')],_0x498481[_0x0549('0x71')],_0x491c46);})[_0x0549('0x2f')](function(_0x207e88){_0x5ef351=_0x207e88;logger[_0x0549('0xb')]('The\x20Enduser\x20ID\x20is:',_0x5ef351['id']);return getTicket(_0x58bfab,_0x11a44a,_0x5ef351,_0x5087f2,_0x498481,_0x5087f2[_0x0549('0x60')],_0x491c46,'Outbound');})[_0x0549('0x2f')](function(_0xfb2b1c){_0x2f2a28=_0xfb2b1c;logger[_0x0549('0xb')](_0x0549('0x72'));logger[_0x0549('0xb')](_0x0549('0x62'),_0x2f2a28['id']);return setRelationship(_0x491c46,_0x11a44a,_0x2f2a28,_0x0549('0x73'));})[_0x0549('0x2f')](function(){return setRelationship(_0x491c46,_0x5ef351,_0x2f2a28,'contacts');})['then'](function(){return getServerInfo(_0x491c46);})[_0x0549('0x2f')](function(_0x136679){var _0x3faa99=parseInt(_0x136679[_0x0549('0x64')][_0x0549('0x74')](0x0));var _0x2f0b7e=util['format'](_0x0549('0x65'),_0x58bfab[_0x0549('0x56')],_0x2f2a28['id']);if(_0x3faa99>0x6){_0x2f0b7e=util[_0x0549('0x24')](_0x0549('0x66'),_0x58bfab['remoteUri'],_0x2f2a28['id']);}logger[_0x0549('0xb')](_0x0549('0x75'),_0x0549('0x76'));emit(util['format'](_0x0549('0x77'),_0x53496a[_0x0549('0xd')]),'trigger:browser:url',{'uri':_0x2f0b7e});})[_0x0549('0x68')](function(_0x431f14){logger[_0x0549('0x69')](_0x0549('0x75'),JSON[_0x0549('0x22')](_0x431f14));});};exports[_0x0549('0x78')]=function(_0xc0b042,_0x19e852,_0x46253a,_0x1ab730,_0x32ac3a,_0x53fe1f){var _0x2e0232,_0x29e826,_0x200ffa,_0x1283c1;_0x53fe1f['remoteUri']=intUtil[_0x0549('0x6b')](_0x53fe1f['remoteUri']);_0x53fe1f['serverUrl']=intUtil[_0x0549('0x6b')](_0x53fe1f[_0x0549('0x57')]);def[_0x0549('0x58')]=util[_0x0549('0x24')]('%s/service/v4_1/rest.php',_0x53fe1f['remoteUri']);if(_0x32ac3a&&_0x32ac3a[_0x0549('0x79')]){logger['info']('['+_0x19e852[_0x0549('0x7a')][_0x0549('0x7b')]()+']','Recording\x20is\x20enabled!');_0x19e852[_0x0549('0x5b')]=util[_0x0549('0x24')](_0x0549('0x5c'),_0x53fe1f[_0x0549('0x57')],_0x19e852['uniqueid'],md5(_0x19e852['uniqueid']));}else{_0x19e852['recordingURL']='';}return getConnection(_0x53fe1f)[_0x0549('0x2f')](function(_0x2b9482){_0x1283c1=_0x2b9482;if(!_[_0x0549('0x2a')](_0x1ab730)){return getUser(_0x53fe1f,_0x1ab730[_0x0549('0xd')],_0x1283c1);}else{return getUser(_0x53fe1f,null,_0x1283c1);}})['then'](function(_0xdb3da){_0x2e0232=_0xdb3da;logger['info'](_0x0549('0x5d'),_0x2e0232['id']);return getEndUser(_0x53fe1f,_0x19e852['calleridname'],_0x19e852['calleridnum'],_0x1283c1);})[_0x0549('0x2f')](function(_0x45ccd0){_0x29e826=_0x45ccd0;logger[_0x0549('0xb')](_0x0549('0x7c'),_0x29e826['id']);return getTicket(_0x53fe1f,_0x2e0232,_0x29e826,_0x46253a,_0x19e852,_0x46253a[_0x0549('0x60')],_0x1283c1,_0x0549('0x61'));})['then'](function(_0x14beea){_0x200ffa=_0x14beea;logger[_0x0549('0xb')]('Ticket\x20created!');logger[_0x0549('0xb')](_0x0549('0x62'),_0x200ffa['id']);return setRelationship(_0x1283c1,_0x2e0232,_0x200ffa,'users');})[_0x0549('0x2f')](function(){return setRelationship(_0x1283c1,_0x29e826,_0x200ffa,'contacts');})['then'](function(){return getServerInfo(_0x1283c1);})[_0x0549('0x68')](function(_0xd32369){logger[_0x0549('0x69')]('['+_0x19e852['lastevent'][_0x0549('0x7b')]()+']',JSON[_0x0549('0x22')](_0xd32369));});};
\ No newline at end of file
index 79d041c..d493942 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x257e=['push','content','type','variable','variableName','toString','customVariable','Variable','name','toLowerCase','keyValue','keyType','key','format','%s:\x20%s','keyContent','join','stripTrailingSlash','slice','substring','isNil','test','lodash','util','getString','length','sortBy','string'];(function(_0x36fbef,_0x4ffc84){var _0x45e270=function(_0x32dd95){while(--_0x32dd95){_0x36fbef['push'](_0x36fbef['shift']());}};_0x45e270(++_0x4ffc84);}(_0x257e,0x14a));var _0xe257=function(_0x1f62c3,_0x1ff95b){_0x1f62c3=_0x1f62c3-0x0;var _0x385c1c=_0x257e[_0x1f62c3];return _0x385c1c;};'use strict';var _=require(_0xe257('0x0'));var util=require(_0xe257('0x1'));exports[_0xe257('0x2')]=function(_0x55bcd8,_0x4795c0,_0x259b96){var _0xfeb479=[];if(_0x55bcd8[_0xe257('0x3')]>0x0){var _0x3cf47a=_[_0xe257('0x4')](_0x55bcd8,['id']);for(var _0x161cfe=0x0;_0x161cfe<_0x3cf47a['length'];_0x161cfe++){var _0x5770ba=_0x3cf47a[_0x161cfe];if(_0x5770ba['type']===_0xe257('0x5')){_0xfeb479[_0xe257('0x6')](_0x5770ba[_0xe257('0x7')]);}else if(_0x5770ba[_0xe257('0x8')]===_0xe257('0x9')&&_0x5770ba[_0xe257('0xa')]){_0x4795c0[_0x5770ba[_0xe257('0xa')]]&&_0xfeb479[_0xe257('0x6')](_0x4795c0[_0x5770ba[_0xe257('0xa')]][_0xe257('0xb')]());}else if(_0x5770ba[_0xe257('0x8')]===_0xe257('0xc')&&_0x5770ba[_0xe257('0xd')]&&_0x5770ba[_0xe257('0xd')][_0xe257('0xe')]){_0x4795c0[_0x5770ba[_0xe257('0xd')][_0xe257('0xe')][_0xe257('0xf')]()]&&_0xfeb479[_0xe257('0x6')](_0x4795c0[_0x5770ba['Variable']['name']['toLowerCase']()][_0xe257('0xb')]());}else if(_0x5770ba[_0xe257('0x8')]===_0xe257('0x10')){if(_0x5770ba[_0xe257('0x11')]==='string'&&_0x5770ba[_0xe257('0x12')]){_0xfeb479[_0xe257('0x6')](util[_0xe257('0x13')](_0xe257('0x14'),_0x5770ba['key'],_0x5770ba[_0xe257('0x15')]));}else if(_0x5770ba[_0xe257('0x11')]==='variable'&&_0x5770ba[_0xe257('0xa')]&&_0x5770ba['key']){_0x4795c0[_0x5770ba[_0xe257('0xa')]]&&_0xfeb479['push'](util[_0xe257('0x13')](_0xe257('0x14'),_0x5770ba[_0xe257('0x12')],_0x4795c0[_0x5770ba['variableName']]));}else if(_0x5770ba[_0xe257('0x11')]===_0xe257('0xc')&&_0x5770ba[_0xe257('0xd')]&&_0x5770ba['Variable']['name']&&_0x5770ba['key']){_0x4795c0[_0x5770ba[_0xe257('0xd')][_0xe257('0xe')][_0xe257('0xf')]()]&&_0xfeb479['push'](util[_0xe257('0x13')](_0xe257('0x14'),_0x5770ba[_0xe257('0x12')],_0x4795c0[_0x5770ba[_0xe257('0xd')][_0xe257('0xe')][_0xe257('0xf')]()]));}}}}return _0xfeb479[_0xe257('0x16')](_0x259b96);};exports[_0xe257('0x17')]=function(_0x21c74f){var _0x5aa98e=_0x21c74f[_0xe257('0x18')](-0x1);if(_0x5aa98e==='/'){_0x21c74f=_0x21c74f[_0xe257('0x19')](0x0,_0x21c74f['lastIndexOf'](_0x5aa98e));}return _0x21c74f;};exports['validateEmail']=function(_0x10d00d){if(!_[_0xe257('0x1a')](_0x10d00d)&&_0x10d00d!==''){var _0x5d90aa=/^(([^<>()\[\]\\.,;:\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 _0x5d90aa[_0xe257('0x1b')](String(_0x10d00d)[_0xe257('0xf')]());}else{return![];}};
\ No newline at end of file
+var _0x71c9=['util','getString','length','sortBy','type','string','push','content','variable','variableName','toString','Variable','name','toLowerCase','keyValue','keyType','key','format','%s:\x20%s','keyContent','customVariable','slice','substring','lastIndexOf','isNil','test'];(function(_0xdea1b1,_0x455f12){var _0x38377e=function(_0x11da70){while(--_0x11da70){_0xdea1b1['push'](_0xdea1b1['shift']());}};_0x38377e(++_0x455f12);}(_0x71c9,0x68));var _0x971c=function(_0xbe66d4,_0x38c785){_0xbe66d4=_0xbe66d4-0x0;var _0x51101d=_0x71c9[_0xbe66d4];return _0x51101d;};'use strict';var _=require('lodash');var util=require(_0x971c('0x0'));exports[_0x971c('0x1')]=function(_0x282b1c,_0xaf1276,_0x1f7f32){var _0x1cc9f5=[];if(_0x282b1c[_0x971c('0x2')]>0x0){var _0x55d2c3=_[_0x971c('0x3')](_0x282b1c,['id']);for(var _0x5a6470=0x0;_0x5a6470<_0x55d2c3['length'];_0x5a6470++){var _0x49f621=_0x55d2c3[_0x5a6470];if(_0x49f621[_0x971c('0x4')]===_0x971c('0x5')){_0x1cc9f5[_0x971c('0x6')](_0x49f621[_0x971c('0x7')]);}else if(_0x49f621[_0x971c('0x4')]===_0x971c('0x8')&&_0x49f621[_0x971c('0x9')]){_0xaf1276[_0x49f621[_0x971c('0x9')]]&&_0x1cc9f5['push'](_0xaf1276[_0x49f621[_0x971c('0x9')]][_0x971c('0xa')]());}else if(_0x49f621[_0x971c('0x4')]==='customVariable'&&_0x49f621[_0x971c('0xb')]&&_0x49f621['Variable'][_0x971c('0xc')]){_0xaf1276[_0x49f621[_0x971c('0xb')][_0x971c('0xc')][_0x971c('0xd')]()]&&_0x1cc9f5[_0x971c('0x6')](_0xaf1276[_0x49f621['Variable'][_0x971c('0xc')][_0x971c('0xd')]()][_0x971c('0xa')]());}else if(_0x49f621[_0x971c('0x4')]===_0x971c('0xe')){if(_0x49f621[_0x971c('0xf')]===_0x971c('0x5')&&_0x49f621[_0x971c('0x10')]){_0x1cc9f5['push'](util[_0x971c('0x11')](_0x971c('0x12'),_0x49f621['key'],_0x49f621[_0x971c('0x13')]));}else if(_0x49f621[_0x971c('0xf')]===_0x971c('0x8')&&_0x49f621[_0x971c('0x9')]&&_0x49f621[_0x971c('0x10')]){_0xaf1276[_0x49f621[_0x971c('0x9')]]&&_0x1cc9f5[_0x971c('0x6')](util[_0x971c('0x11')](_0x971c('0x12'),_0x49f621[_0x971c('0x10')],_0xaf1276[_0x49f621[_0x971c('0x9')]]));}else if(_0x49f621[_0x971c('0xf')]===_0x971c('0x14')&&_0x49f621[_0x971c('0xb')]&&_0x49f621['Variable'][_0x971c('0xc')]&&_0x49f621[_0x971c('0x10')]){_0xaf1276[_0x49f621[_0x971c('0xb')][_0x971c('0xc')][_0x971c('0xd')]()]&&_0x1cc9f5[_0x971c('0x6')](util[_0x971c('0x11')](_0x971c('0x12'),_0x49f621[_0x971c('0x10')],_0xaf1276[_0x49f621[_0x971c('0xb')][_0x971c('0xc')][_0x971c('0xd')]()]));}}}}return _0x1cc9f5['join'](_0x1f7f32);};exports['stripTrailingSlash']=function(_0x5bed30){var _0xcdbc6d=_0x5bed30[_0x971c('0x15')](-0x1);if(_0xcdbc6d==='/'){_0x5bed30=_0x5bed30[_0x971c('0x16')](0x0,_0x5bed30[_0x971c('0x17')](_0xcdbc6d));}return _0x5bed30;};exports['validateEmail']=function(_0x159221){if(!_[_0x971c('0x18')](_0x159221)&&_0x159221!==''){var _0x5c0b0c=/^(([^<>()\[\]\\.,;:\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 _0x5c0b0c[_0x971c('0x19')](String(_0x159221)[_0x971c('0xd')]());}else{return![];}};
\ No newline at end of file
index 5ee28c0..7496903 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa9e0=['variable','variableName','customVariable','Variable','name','toLowerCase','info','Creating\x20new\x20ticket...','Normal','Open','Subjects','POST','format','%s/webservice.php','create','username','sessionName','HelpDesk','stringify','then','result','Ticket\x20could\x20not\x20be\x20created\x20due\x20to:\x20%s','catch','error','[vTiger],\x20%s,\x20%s,\x20%s','createTicket','validateEmail','Getting\x20agent\x20with\x20email','GET','query','SELECT\x20first_name,\x20last_name,\x20email1\x20FROM\x20Users\x20WHERE\x20email1=\x27%s\x27;','success','resolve','email1','last_name','Agent\x20not\x20found,\x20using\x20the\x20admin\x20account!','userId','admin','statusCode','getUser','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','Enduser\x20created.','phone','getEndUser','accessKey','getchallenge','login','token','Account\x20%d\x20is\x20not\x20valid','[HTTP]','queue','stripTrailingSlash','[QUEUE]','recordingURL','%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s','serverUrl','uniqueid','The\x20User\x20ID\x20is:','calleridnum','Ticket\x20created!','The\x20Ticket\x20ID\x20is:','%s/index.php?module=HelpDesk&view=Detail&record=%s&app=SUPPORT','Displaying\x20ticket\x20to\x20agent\x20in\x20a\x20new\x20tab...','user:%s','outbound','recordingFormat','none','[OUTBOUND]','destcalleridname','The\x20Enduser\x20ID\x20is:','Fields','split','trigger:browser:url','unmanaged','monitor_format','toUpperCase','calleridname','lastevent','lodash','request-promise','bluebird','ioredis','../../../../config/environment','../../../../config/logger','vTiger','redis','defaults','localhost','socket.io-emitter','length','forEach','includes','idField','content','toString','type'];(function(_0x3bf83f,_0x181cac){var _0x22c4a9=function(_0xb3ff0d){while(--_0xb3ff0d){_0x3bf83f['push'](_0x3bf83f['shift']());}};_0x22c4a9(++_0x181cac);}(_0xa9e0,0x123));var _0x0a9e=function(_0x491a7f,_0x28bb80){_0x491a7f=_0x491a7f-0x0;var _0x3d8f44=_0xa9e0[_0x491a7f];return _0x3d8f44;};'use strict';var _=require(_0x0a9e('0x0'));var rp=require(_0x0a9e('0x1'));var BPromise=require(_0x0a9e('0x2'));var md5=require('md5');var util=require('util');var Redis=require(_0x0a9e('0x3'));var intUtil=require('./util');var config=require(_0x0a9e('0x4'));var logger=require(_0x0a9e('0x5'))(_0x0a9e('0x6'));config[_0x0a9e('0x7')]=_[_0x0a9e('0x8')](config['redis'],{'host':_0x0a9e('0x9'),'port':0x18eb});var io=require(_0x0a9e('0xa'))(new Redis(config[_0x0a9e('0x7')]));function emit(_0x5f41ea,_0x503809,_0xe42b77){io['to'](_0x5f41ea)['emit'](_0x503809,_0xe42b77);}function getCustomFields(_0x52cace,_0x39753a){var _0xf81284={};if(_0x52cace[_0x0a9e('0xb')]>0x0){_[_0x0a9e('0xc')](_0x52cace,function(_0xfeb75b){if(_[_0x0a9e('0xd')](['string','picklist'],_0xfeb75b['type'])&&_0xfeb75b['idField']){_0xf81284[_0xfeb75b[_0x0a9e('0xe')]]=_0xfeb75b[_0x0a9e('0xf')][_0x0a9e('0x10')]();}else if(_0xfeb75b[_0x0a9e('0x11')]===_0x0a9e('0x12')&&_0xfeb75b[_0x0a9e('0x13')]&&_0xfeb75b['idField']&&_0x39753a[_0xfeb75b[_0x0a9e('0x13')]]){_0xf81284[_0xfeb75b[_0x0a9e('0xe')]]=_0x39753a[_0xfeb75b[_0x0a9e('0x13')]][_0x0a9e('0x10')]();}else if(_0xfeb75b[_0x0a9e('0x11')]===_0x0a9e('0x14')&&_0xfeb75b['Variable']&&_0xfeb75b[_0x0a9e('0x15')]['name']&&_0xfeb75b[_0x0a9e('0xe')]&&_0x39753a[_0xfeb75b['Variable'][_0x0a9e('0x16')][_0x0a9e('0x17')]()]){_0xf81284[_0xfeb75b['idField']]=_0x39753a[_0xfeb75b[_0x0a9e('0x15')]['name'][_0x0a9e('0x17')]()][_0x0a9e('0x10')]();}});}return _0xf81284;}function createTicket(_0x106033,_0x205fd6,_0x31b1ca,_0x2eb11f,_0x530eb7,_0x20559e,_0x1314ae){logger[_0x0a9e('0x18')](_0x0a9e('0x19'));var _0x105080=_['merge']({'parent_id':'','assigned_user_id':_0x205fd6['id'],'ticketpriorities':_0x0a9e('0x1a'),'ticketstatus':_0x0a9e('0x1b'),'ticket_title':intUtil['getString'](_0x2eb11f[_0x0a9e('0x1c')],_0x530eb7,'\x20'),'description':intUtil['getString'](_0x2eb11f['Descriptions'],_0x530eb7,'\x0a'),'contact_id':_0x31b1ca['id']},getCustomFields(_0x20559e,_0x530eb7));var _0x3a02e1={'method':_0x0a9e('0x1d'),'uri':util[_0x0a9e('0x1e')](_0x0a9e('0x1f'),_0x106033['remoteUri']),'form':{'operation':_0x0a9e('0x20'),'username':_0x106033[_0x0a9e('0x21')],'sessionName':_0x1314ae[_0x0a9e('0x22')],'elementType':_0x0a9e('0x23'),'element':JSON[_0x0a9e('0x24')](_0x105080)},'json':!![]};return request(_0x3a02e1)[_0x0a9e('0x25')](function(_0x16b1ca){if(_0x16b1ca['success']){return BPromise['resolve']({'id':_0x16b1ca[_0x0a9e('0x26')]['id']});}else{throw new Error(util[_0x0a9e('0x1e')](_0x0a9e('0x27'),JSON[_0x0a9e('0x24')](_0x16b1ca['error'])));}})[_0x0a9e('0x28')](function(_0x479bc4){var _0x45a1e7=_0x479bc4['statusCode']||0x1f4;logger[_0x0a9e('0x29')](_0x0a9e('0x2a'),_0x0a9e('0x2b'),_0x45a1e7,JSON[_0x0a9e('0x24')](_0x479bc4));});}function getUser(_0x140511,_0x1538a4,_0x11c3b6){if(intUtil[_0x0a9e('0x2c')](_0x1538a4)){logger['info'](_0x0a9e('0x2d'),_0x1538a4);return request({'method':_0x0a9e('0x2e'),'uri':util[_0x0a9e('0x1e')](_0x0a9e('0x1f'),_0x140511['remoteUri']),'qs':{'operation':_0x0a9e('0x2f'),'username':_0x140511[_0x0a9e('0x21')],'sessionName':_0x11c3b6[_0x0a9e('0x22')],'query':util[_0x0a9e('0x1e')](_0x0a9e('0x30'),_0x1538a4)},'json':!![]})[_0x0a9e('0x25')](function(_0x296f41){if(_0x296f41[_0x0a9e('0x31')]&&_0x296f41[_0x0a9e('0x26')]['length']){logger[_0x0a9e('0x18')]('Agent\x20found!');return BPromise[_0x0a9e('0x32')]({'id':_0x296f41[_0x0a9e('0x26')][0x0]['id'],'email':_0x296f41[_0x0a9e('0x26')][0x0][_0x0a9e('0x33')],'name':_0x296f41[_0x0a9e('0x26')][0x0]['first_name']+'\x20'+_0x296f41[_0x0a9e('0x26')][_0x0a9e('0x34')]});}else{logger[_0x0a9e('0x18')](_0x0a9e('0x35'));return BPromise[_0x0a9e('0x32')]({'id':_0x11c3b6[_0x0a9e('0x36')],'email':_0x140511[_0x0a9e('0x21')],'name':_0x0a9e('0x37')});}})['catch'](function(_0x44295a){var _0x5e7238=_0x44295a[_0x0a9e('0x38')]||0x1f4;logger[_0x0a9e('0x29')](_0x0a9e('0x2a'),_0x0a9e('0x39'),_0x5e7238,JSON['stringify'](_0x44295a));});}else{logger[_0x0a9e('0x18')](_0x0a9e('0x35'));return BPromise[_0x0a9e('0x32')]({'id':_0x11c3b6[_0x0a9e('0x36')],'email':_0x140511['username'],'name':'admin'})[_0x0a9e('0x28')](function(_0x5640eb){var _0x24936a=_0x5640eb[_0x0a9e('0x38')]||0x1f4;logger[_0x0a9e('0x29')](_0x0a9e('0x2a'),'getUser',_0x24936a,JSON[_0x0a9e('0x24')](_0x5640eb));});}}function getEndUser(_0x3bfce8,_0x3cae,_0x533942,_0x1dbf74){logger[_0x0a9e('0x18')](_0x0a9e('0x3a'),_0x533942);return request({'method':'GET','uri':util['format'](_0x0a9e('0x1f'),_0x3bfce8[_0x0a9e('0x3b')]),'qs':{'operation':'query','username':_0x3bfce8[_0x0a9e('0x21')],'sessionName':_0x1dbf74[_0x0a9e('0x22')],'query':util[_0x0a9e('0x1e')](_0x0a9e('0x3c'),_0x533942,_0x533942,_0x533942,_0x533942,_0x533942)},'json':!![]})['then'](function(_0x5a594b){if(_0x5a594b[_0x0a9e('0x31')]&&_0x5a594b[_0x0a9e('0x26')]['length']){logger[_0x0a9e('0x18')](_0x0a9e('0x3d'));return BPromise[_0x0a9e('0x32')]({'id':_0x5a594b['result'][0x0]['id'],'name':_0x5a594b[_0x0a9e('0x26')][0x0][_0x0a9e('0x3e')]+'\x20'+_0x5a594b[_0x0a9e('0x26')][0x0][_0x0a9e('0x3f')],'phone':_0x533942});}else{logger[_0x0a9e('0x18')](_0x0a9e('0x40'));return request({'method':_0x0a9e('0x1d'),'uri':util[_0x0a9e('0x1e')](_0x0a9e('0x1f'),_0x3bfce8[_0x0a9e('0x3b')]),'form':{'operation':_0x0a9e('0x20'),'sessionName':_0x1dbf74[_0x0a9e('0x22')],'elementType':_0x0a9e('0x41'),'element':JSON[_0x0a9e('0x24')]({'lastname':_0x3cae,'phone':_0x533942,'assigned_user_id':'\x20'})},'json':!![]})[_0x0a9e('0x25')](function(_0x4d04c8){logger['info'](_0x0a9e('0x42'));return BPromise[_0x0a9e('0x32')]({'id':_0x4d04c8[_0x0a9e('0x26')]['id'],'name':_0x4d04c8[_0x0a9e('0x26')][_0x0a9e('0x3f')],'phone':_0x4d04c8[_0x0a9e('0x26')][_0x0a9e('0x43')]});})[_0x0a9e('0x28')](function(_0x432fcc){var _0x25c6e6=_0x432fcc[_0x0a9e('0x38')]||0x1f4;logger[_0x0a9e('0x29')]('[vTiger],\x20%s,\x20%s,\x20%s',_0x0a9e('0x44'),_0x25c6e6,JSON[_0x0a9e('0x24')](_0x432fcc));});}});}function getConnection(_0xdd268f){var _0xfbd5ad=_0xdd268f[_0x0a9e('0x21')];var _0xbe9d19=_0xdd268f[_0x0a9e('0x45')];return request({'method':_0x0a9e('0x2e'),'uri':util['format'](_0x0a9e('0x1f'),_0xdd268f['remoteUri']),'qs':{'operation':_0x0a9e('0x46'),'username':_0xfbd5ad},'json':!![]})[_0x0a9e('0x25')](function(_0x8d6dd1){if(_0x8d6dd1['success']){return request({'method':_0x0a9e('0x1d'),'uri':util[_0x0a9e('0x1e')](_0x0a9e('0x1f'),_0xdd268f[_0x0a9e('0x3b')]),'form':{'operation':_0x0a9e('0x47'),'username':_0xfbd5ad,'accessKey':md5(_0x8d6dd1[_0x0a9e('0x26')][_0x0a9e('0x48')]+_0xbe9d19)},'json':!![]});}})['then'](function(_0x13f44d){if(_0x13f44d[_0x0a9e('0x31')]){return BPromise[_0x0a9e('0x32')](_0x13f44d[_0x0a9e('0x26')]);}else{throw new Error(util[_0x0a9e('0x1e')](_0x0a9e('0x49'),_0xdd268f['id']));}})[_0x0a9e('0x28')](function(_0x19383e){var _0x34febd=_0x19383e['statusCode']||0x1f4;logger[_0x0a9e('0x29')](_0x0a9e('0x2a'),'getConnection',_0x34febd,JSON['stringify'](_0x19383e));});}function request(_0x5ddf84){logger[_0x0a9e('0x18')](_0x0a9e('0x4a'),JSON[_0x0a9e('0x24')](_0x5ddf84));return rp(_0x5ddf84);}exports[_0x0a9e('0x4b')]=function(_0x61bb17,_0x30decb,_0x2e5165,_0x375c18,_0x5d38ae,_0x4b1b9f){var _0x53975a,_0x39d77d,_0x204173,_0x14d602;_0x4b1b9f['remoteUri']=intUtil[_0x0a9e('0x4c')](_0x4b1b9f[_0x0a9e('0x3b')]);if(_0x5d38ae&&_0x5d38ae['monitor_format']){logger['info'](_0x0a9e('0x4d'),'Recording\x20is\x20enabled!');_0x30decb[_0x0a9e('0x4e')]=util['format'](_0x0a9e('0x4f'),_0x4b1b9f[_0x0a9e('0x50')],_0x30decb[_0x0a9e('0x51')],md5(_0x30decb['uniqueid']));}else{_0x30decb[_0x0a9e('0x4e')]='';}return getConnection(_0x4b1b9f)[_0x0a9e('0x25')](function(_0x508b47){_0x14d602=_0x508b47;return getUser(_0x4b1b9f,_0x375c18['email'],_0x14d602);})[_0x0a9e('0x25')](function(_0x3aedd0){_0x53975a=_0x3aedd0;logger['info'](_0x0a9e('0x52'),_0x53975a['id']);return getEndUser(_0x4b1b9f,_0x30decb['calleridname'],_0x30decb[_0x0a9e('0x53')],_0x14d602);})['then'](function(_0xe22ccc){_0x39d77d=_0xe22ccc;logger['info']('The\x20Enduser\x20ID\x20is:',_0x39d77d['id']);return createTicket(_0x4b1b9f,_0x53975a,_0x39d77d,_0x2e5165,_0x30decb,_0x2e5165['Fields'],_0x14d602);})[_0x0a9e('0x25')](function(_0x47de4c){_0x204173=_0x47de4c;logger[_0x0a9e('0x18')](_0x0a9e('0x54'));logger[_0x0a9e('0x18')](_0x0a9e('0x55'),_0x204173['id']);var _0x232830=util[_0x0a9e('0x1e')](_0x0a9e('0x56'),_0x4b1b9f[_0x0a9e('0x3b')],_['split'](_0x204173['id'],'x')[0x1]);logger[_0x0a9e('0x18')](_0x0a9e('0x4d'),_0x0a9e('0x57'));emit(util[_0x0a9e('0x1e')](_0x0a9e('0x58'),_0x375c18[_0x0a9e('0x16')]),'trigger:browser:url',{'uri':_0x232830});})[_0x0a9e('0x28')](function(_0x26bc80){logger['error'](_0x0a9e('0x4d'),JSON['stringify'](_0x26bc80));});};exports[_0x0a9e('0x59')]=function(_0x5ba1f9,_0x4b3c1a,_0x5674ee,_0x273cb5,_0x49d231,_0x2244d6,_0x1fc70e){var _0x261adb,_0x7be420,_0x1cca9f,_0x26d7db;_0x2244d6['remoteUri']=intUtil[_0x0a9e('0x4c')](_0x2244d6['remoteUri']);_0x2244d6[_0x0a9e('0x50')]=intUtil[_0x0a9e('0x4c')](_0x2244d6[_0x0a9e('0x50')]);if(_0x1fc70e&&_0x1fc70e['recordingFormat']&&_0x1fc70e[_0x0a9e('0x5a')]!==_0x0a9e('0x5b')){logger[_0x0a9e('0x18')](_0x0a9e('0x5c'),'Recording\x20is\x20enabled!');_0x4b3c1a[_0x0a9e('0x4e')]=util[_0x0a9e('0x1e')]('%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s',_0x2244d6[_0x0a9e('0x50')],_0x4b3c1a[_0x0a9e('0x51')],md5(_0x4b3c1a[_0x0a9e('0x51')]));}return getConnection(_0x2244d6)[_0x0a9e('0x25')](function(_0x401837){_0x26d7db=_0x401837;return getUser(_0x2244d6,_0x273cb5['email'],_0x26d7db);})[_0x0a9e('0x25')](function(_0x2937e0){_0x261adb=_0x2937e0;logger[_0x0a9e('0x18')]('The\x20User\x20ID\x20is:',_0x261adb['id']);return getEndUser(_0x2244d6,_0x4b3c1a[_0x0a9e('0x5d')],_0x4b3c1a['destcalleridnum'],_0x26d7db);})['then'](function(_0x242745){_0x7be420=_0x242745;logger[_0x0a9e('0x18')](_0x0a9e('0x5e'),_0x7be420['id']);return createTicket(_0x2244d6,_0x261adb,_0x7be420,_0x5674ee,_0x4b3c1a,_0x5674ee[_0x0a9e('0x5f')],_0x26d7db);})[_0x0a9e('0x25')](function(_0xc8c264){_0x1cca9f=_0xc8c264;logger[_0x0a9e('0x18')](_0x0a9e('0x54'));logger[_0x0a9e('0x18')](_0x0a9e('0x55'),_0x1cca9f['id']);var _0x2e89b7=util[_0x0a9e('0x1e')](_0x0a9e('0x56'),_0x2244d6[_0x0a9e('0x3b')],_[_0x0a9e('0x60')](_0x1cca9f['id'],'x')[0x1]);logger[_0x0a9e('0x18')](_0x0a9e('0x5c'),_0x0a9e('0x57'));emit(util['format'](_0x0a9e('0x58'),_0x273cb5[_0x0a9e('0x16')]),_0x0a9e('0x61'),{'uri':_0x2e89b7});})['catch'](function(_0x1148a1){logger[_0x0a9e('0x29')]('[OUTBOUND]',JSON[_0x0a9e('0x24')](_0x1148a1));});};exports[_0x0a9e('0x62')]=function(_0x3ef315,_0x427946,_0x13b5c0,_0x4a43a8,_0x50cdce,_0x4a2438){var _0x40fb85,_0x18bf5d,_0x1104ad,_0x23a7d3;_0x4a2438[_0x0a9e('0x3b')]=intUtil[_0x0a9e('0x4c')](_0x4a2438[_0x0a9e('0x3b')]);_0x4a2438[_0x0a9e('0x50')]=intUtil['stripTrailingSlash'](_0x4a2438[_0x0a9e('0x50')]);if(_0x50cdce&&_0x50cdce[_0x0a9e('0x63')]){logger[_0x0a9e('0x18')]('['+_0x427946['lastevent'][_0x0a9e('0x64')]()+']','Recording\x20is\x20enabled!');_0x427946[_0x0a9e('0x4e')]=util[_0x0a9e('0x1e')]('%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s',_0x4a2438[_0x0a9e('0x50')],_0x427946[_0x0a9e('0x51')],md5(_0x427946[_0x0a9e('0x51')]));}else{_0x427946[_0x0a9e('0x4e')]='';}return getConnection(_0x4a2438)['then'](function(_0x1d442c){_0x23a7d3=_0x1d442c;return getUser(_0x4a2438,'',_0x23a7d3);})[_0x0a9e('0x25')](function(_0x371533){_0x40fb85=_0x371533;logger[_0x0a9e('0x18')]('The\x20User\x20ID\x20is:',_0x40fb85['id']);return getEndUser(_0x4a2438,_0x427946[_0x0a9e('0x65')],_0x427946[_0x0a9e('0x53')],_0x23a7d3);})[_0x0a9e('0x25')](function(_0x361b21){_0x18bf5d=_0x361b21;logger['info'](_0x0a9e('0x5e'),_0x18bf5d['id']);return createTicket(_0x4a2438,_0x40fb85,_0x18bf5d,_0x13b5c0,_0x427946,_0x13b5c0[_0x0a9e('0x5f')],_0x23a7d3);})[_0x0a9e('0x25')](function(_0xf410e5){_0x1104ad=_0xf410e5;logger[_0x0a9e('0x18')](_0x0a9e('0x54'));logger[_0x0a9e('0x18')](_0x0a9e('0x55'),_0x1104ad['id']);})[_0x0a9e('0x28')](function(_0x336dc3){logger[_0x0a9e('0x29')]('['+_0x427946[_0x0a9e('0x66')][_0x0a9e('0x64')]()+']',JSON[_0x0a9e('0x24')](_0x336dc3));});};
\ 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(_0x6189a5,_0x3c64e0){var _0x55043=function(_0x26a4f0){while(--_0x26a4f0){_0x6189a5['push'](_0x6189a5['shift']());}};_0x55043(++_0x3c64e0);}(_0xe706,0xa3));var _0x6e70=function(_0x5b8262,_0x93ab76){_0x5b8262=_0x5b8262-0x0;var _0x21f734=_0xe706[_0x5b8262];return _0x21f734;};'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 0dae89a..c7450d3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5561=['zendesk','redis','defaults','socket.io-emitter','emit','application/json','Creating\x20new\x20ticket...','format','%s/tickets.json','POST','merge','Tags','name','getString','Subjects','Descriptions','Fields','then','info','Ticket\x20created!','ticket','validateEmail','%s/search.json','find','results','remoteUri','Admin\x20account\x20selected.','user','Agent\x20not\x20found,\x20using\x20the\x20admin\x20account!','%s/users/me.json','Searching\x20enduser\x20with\x20phone','type:user\x20role:end-user\x20phone:%s','length','end-user','Enduser\x20found!','Enduser\x20not\x20found,\x20creating\x20a\x20new\x20enduser!','Caller\x20-\x20%s','Enduser\x20created.','authType','password','username','token','%s/token:%s','base64','debug','stringify','GET','map','forEach','picklist','type','nameField','customField','toLowerCase','content','toString','string','custom_fields','push','idField','variable','variableName','Variable','queue','stripTrailingSlash','serverUrl','monitor_format','[QUEUE]','Recording\x20is\x20enabled!','recordingURL','%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s','uniqueid','Authorization','email','The\x20User\x20ID\x20is:','The\x20Enduser\x20ID\x20is:','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...','user:%s','trigger:browser:url','replace','/api/v2','error','Zendesk\x20account\x20type\x20not\x20recognized','[QUEUE]\x20Error\x20running\x20Zendesk\x20integration','inspect','recordingFormat','none','destcalleridname','[OUTBOUND]','%s/agent/tickets/%s','[OUTBOUND]\x20Error\x20running\x20Zendesk\x20integration','lastevent','toUpperCase','catch','\x20Error\x20running\x20Zendesk\x20integration','lodash','request-promise','md5','util','ioredis','./util','../../../../config/environment','../../../../config/logger'];(function(_0x321bb2,_0x202794){var _0x9c12ed=function(_0x263dd3){while(--_0x263dd3){_0x321bb2['push'](_0x321bb2['shift']());}};_0x9c12ed(++_0x202794);}(_0x5561,0x13c));var _0x1556=function(_0x273ddf,_0x1ec849){_0x273ddf=_0x273ddf-0x0;var _0x8960a4=_0x5561[_0x273ddf];return _0x8960a4;};'use strict';var _=require(_0x1556('0x0'));var rp=require(_0x1556('0x1'));var md5=require(_0x1556('0x2'));var util=require(_0x1556('0x3'));var Redis=require(_0x1556('0x4'));var intUtil=require(_0x1556('0x5'));var config=require(_0x1556('0x6'));var logger=require(_0x1556('0x7'))(_0x1556('0x8'));config[_0x1556('0x9')]=_[_0x1556('0xa')](config[_0x1556('0x9')],{'host':'localhost','port':0x18eb});var io=require(_0x1556('0xb'))(new Redis(config[_0x1556('0x9')]));function emit(_0x481f2b,_0x2149cc,_0x2158a7){io['to'](_0x481f2b)[_0x1556('0xc')](_0x2149cc,_0x2158a7);}var headers={'Content-Type':_0x1556('0xd'),'Accept':_0x1556('0xd')};function getTicket(_0x5b63e7,_0x13cede,_0x13da0f,_0x26a09d,_0x481896){logger['info'](_0x1556('0xe'));return request({'uri':util[_0x1556('0xf')](_0x1556('0x10'),_0x5b63e7['remoteUri']),'method':_0x1556('0x11'),'body':{'ticket':_[_0x1556('0x12')]({'requester_id':_0x13da0f['id'],'submitter_id':_0x13cede?_0x13cede['id']:undefined,'assignee_id':_0x13cede?_0x13cede['id']:undefined,'tags':getTags(_0x26a09d[_0x1556('0x13')],_0x1556('0x14')),'subject':intUtil[_0x1556('0x15')](_0x26a09d[_0x1556('0x16')],_0x481896,'\x20'),'description':intUtil['getString'](_0x26a09d[_0x1556('0x17')],_0x481896,'\x0a'),'comment':{'public':![],'body':intUtil[_0x1556('0x15')](_0x26a09d[_0x1556('0x17')],_0x481896,'\x0a')}},getCustomFields(_0x26a09d[_0x1556('0x18')],_0x481896))}})[_0x1556('0x19')](function(_0x4e5ab8){logger[_0x1556('0x1a')](_0x1556('0x1b'));return _0x4e5ab8[_0x1556('0x1c')];});}function getUser(_0xea79a1,_0x1bf7c7){if(intUtil[_0x1556('0x1d')](_0x1bf7c7)){logger['info']('Getting\x20agent\x20with\x20email',_0x1bf7c7);return request({'uri':util[_0x1556('0xf')](_0x1556('0x1e'),_0xea79a1['remoteUri']),'qs':{'query':util[_0x1556('0xf')]('type:user\x20role:agent\x20email:%s',_0x1bf7c7)}})[_0x1556('0x19')](function(_0xb05dc2){if(_0xb05dc2['count']){logger[_0x1556('0x1a')]('Agent\x20found!');return _[_0x1556('0x1f')](_0xb05dc2[_0x1556('0x20')],{'email':_0x1bf7c7,'role':'agent'});}else{logger[_0x1556('0x1a')]('Agent\x20not\x20found,\x20using\x20the\x20admin\x20account!');return request({'uri':util[_0x1556('0xf')]('%s/users/me.json',_0xea79a1[_0x1556('0x21')])})[_0x1556('0x19')](function(_0x245daa){logger[_0x1556('0x1a')](_0x1556('0x22'));return _0x245daa[_0x1556('0x23')];});}});}else{logger[_0x1556('0x1a')](_0x1556('0x24'));return request({'uri':util[_0x1556('0xf')](_0x1556('0x25'),_0xea79a1[_0x1556('0x21')])})[_0x1556('0x19')](function(_0x433969){logger['info']('Admin\x20account\x20selected.');return _0x433969[_0x1556('0x23')];});}}function getEndUser(_0x5badb0,_0xf20011,_0x2fcea5){logger[_0x1556('0x1a')](_0x1556('0x26'),_0x2fcea5);return request({'uri':util[_0x1556('0xf')]('%s/search.json',_0x5badb0[_0x1556('0x21')]),'qs':{'query':util['format'](_0x1556('0x27'),_0x2fcea5)}})[_0x1556('0x19')](function(_0x547eb8){var _0x313ac6;if(_0x547eb8[_0x1556('0x20')][_0x1556('0x28')]){_0x547eb8[_0x1556('0x20')]=_['filter'](_0x547eb8['results'],{'suspended':![],'role':_0x1556('0x29')});if(_0x547eb8[_0x1556('0x20')]['length']){_0x313ac6=_['first'](_0x547eb8[_0x1556('0x20')]);}}if(_0x313ac6){logger[_0x1556('0x1a')](_0x1556('0x2a'));return _0x313ac6;}else{logger[_0x1556('0x1a')](_0x1556('0x2b'));return request({'uri':util[_0x1556('0xf')]('%s/users.json',_0x5badb0['remoteUri']),'method':_0x1556('0x11'),'body':{'user':{'role':_0x1556('0x29'),'name':util[_0x1556('0xf')](_0x1556('0x2c'),_0xf20011||_0x2fcea5),'phone':_0x2fcea5}}})[_0x1556('0x19')](function(_0x5d6aa4){logger[_0x1556('0x1a')](_0x1556('0x2d'));return _0x5d6aa4[_0x1556('0x23')];});}});}function getAuth(_0x5839ab){var _0x3938a9;if(_0x5839ab[_0x1556('0x2e')]===_0x1556('0x2f')){_0x3938a9=util[_0x1556('0xf')]('%s:%s',_0x5839ab[_0x1556('0x30')],_0x5839ab[_0x1556('0x2f')]);}else if(_0x5839ab[_0x1556('0x2e')]===_0x1556('0x31')){_0x3938a9=util[_0x1556('0xf')](_0x1556('0x32'),_0x5839ab['username'],_0x5839ab[_0x1556('0x31')]);}return util[_0x1556('0xf')]('Basic\x20%s',new Buffer(_0x3938a9)['toString'](_0x1556('0x33')));}function request(_0xd6c4ec){logger[_0x1556('0x34')]('[HTTP]',JSON[_0x1556('0x35')](_0xd6c4ec));return rp(_[_0x1556('0xa')](_0xd6c4ec,{'method':_0x1556('0x36'),'headers':headers,'json':!![]}));}function getTags(_0x39589c,_0x5048a){var _0xe66a02=[];if(_0x39589c&&_0x39589c[_0x1556('0x28')]>0x0){_0xe66a02=_[_0x1556('0x37')](_0x39589c,_0x5048a);}return _0xe66a02;}function getCustomFields(_0x251660,_0xedc5b4){var _0x5e549b=[];var _0x1e4662={'custom_fields':[]};if(_0x251660['length']>0x0){_[_0x1556('0x38')](_0x251660,function(_0x1bee12){if(_['includes'](['string',_0x1556('0x39')],_0x1bee12[_0x1556('0x3a')])&&_0x1bee12[_0x1556('0x3b')]&&!_0x1bee12[_0x1556('0x3c')]){_0x1e4662[_0x1bee12['nameField'][_0x1556('0x3d')]()]=_0x1bee12[_0x1556('0x3e')][_0x1556('0x3f')]();}else if(_['includes']([_0x1556('0x40'),_0x1556('0x39')],_0x1bee12['type'])&&_0x1bee12['idField']&&_0x1bee12[_0x1556('0x3c')]){_0x1e4662[_0x1556('0x41')][_0x1556('0x42')]({'id':_0x1bee12[_0x1556('0x43')],'value':_0x1bee12['content'][_0x1556('0x3f')]()});}else if(_0x1bee12[_0x1556('0x3a')]===_0x1556('0x44')&&_0x1bee12[_0x1556('0x45')]&&_0x1bee12['idField']&&_0x1bee12['customField']){_0xedc5b4[_0x1bee12[_0x1556('0x45')]]&&_0x1e4662['custom_fields']['push']({'id':_0x1bee12[_0x1556('0x43')],'value':_0xedc5b4[_0x1bee12['variableName']][_0x1556('0x3f')]()});}else if(_0x1bee12[_0x1556('0x3a')]==='customVariable'&&_0x1bee12[_0x1556('0x46')]&&_0x1bee12['Variable'][_0x1556('0x14')]&&_0x1bee12[_0x1556('0x43')]&&_0x1bee12[_0x1556('0x3c')]){_0xedc5b4[_0x1bee12[_0x1556('0x46')][_0x1556('0x14')][_0x1556('0x3d')]()]&&_0x1e4662[_0x1556('0x41')][_0x1556('0x42')]({'id':_0x1bee12[_0x1556('0x43')],'value':_0xedc5b4[_0x1bee12[_0x1556('0x46')][_0x1556('0x14')]['toLowerCase']()][_0x1556('0x3f')]()});}});}return _0x1e4662;}exports[_0x1556('0x47')]=function(_0x25e5eb,_0x52b485,_0x4f83d3,_0x3a5c38,_0x26d056,_0x266f7d){var _0x4fa912,_0x371665;_0x266f7d[_0x1556('0x21')]=intUtil['stripTrailingSlash'](_0x266f7d['remoteUri']);_0x266f7d['serverUrl']=intUtil[_0x1556('0x48')](_0x266f7d[_0x1556('0x49')]);if(_0x26d056&&_0x26d056[_0x1556('0x4a')]){logger[_0x1556('0x1a')](_0x1556('0x4b'),_0x1556('0x4c'));_0x52b485[_0x1556('0x4d')]=util[_0x1556('0xf')](_0x1556('0x4e'),_0x266f7d[_0x1556('0x49')],_0x52b485[_0x1556('0x4f')],md5(_0x52b485[_0x1556('0x4f')]));}else{_0x52b485['recordingURL']='';}headers[_0x1556('0x50')]=getAuth(_0x266f7d);return getUser(_0x266f7d,_0x3a5c38[_0x1556('0x51')])[_0x1556('0x19')](function(_0x1b7763){_0x4fa912=_0x1b7763;logger[_0x1556('0x1a')](_0x1556('0x52'),_0x4fa912['id']);return getEndUser(_0x266f7d,_0x52b485['calleridname'],_0x52b485['calleridnum']);})[_0x1556('0x19')](function(_0x31770d){_0x371665=_0x31770d;logger['info'](_0x1556('0x53'),_0x371665['id']);return getTicket(_0x266f7d,_0x4fa912,_0x371665,_0x4f83d3,_0x52b485);})[_0x1556('0x19')](function(_0x412203){if(_0x412203){logger[_0x1556('0x1a')](_0x1556('0x54'),_0x412203['id']);switch(_0x266f7d[_0x1556('0x3a')]){case _0x1556('0x55'):logger[_0x1556('0x1a')]('[QUEUE]',_0x1556('0x56'));return request({'uri':util[_0x1556('0xf')](_0x1556('0x57'),_0x266f7d[_0x1556('0x21')],_0x4fa912['id'],_0x412203['id']),'method':_0x1556('0x11')});case _0x1556('0x58'):logger[_0x1556('0x1a')](_0x1556('0x4b'),_0x1556('0x59'));emit(util[_0x1556('0xf')](_0x1556('0x5a'),_0x3a5c38[_0x1556('0x14')]),_0x1556('0x5b'),{'uri':util[_0x1556('0xf')]('%s/agent/tickets/%s',_0x266f7d['remoteUri'][_0x1556('0x5c')](_0x1556('0x5d'),''),_0x412203['id'])});break;default:logger[_0x1556('0x5e')](_0x1556('0x4b'),_0x1556('0x5f'));}}})['catch'](function(_0xeb5c34){logger[_0x1556('0x5e')](_0x1556('0x60'),util[_0x1556('0x61')](_0xeb5c34,{'showHidden':!![],'depth':null}));});};exports['outbound']=function(_0x2ff7d2,_0x57aa28,_0x28899b,_0x3ff461,_0x598a71,_0x53f689,_0x3fba41){var _0x1c1eff,_0x46fe30;_0x53f689[_0x1556('0x21')]=intUtil[_0x1556('0x48')](_0x53f689[_0x1556('0x21')]);_0x53f689['serverUrl']=intUtil['stripTrailingSlash'](_0x53f689[_0x1556('0x49')]);if(_0x3fba41&&_0x3fba41[_0x1556('0x62')]&&_0x3fba41[_0x1556('0x62')]!==_0x1556('0x63')){logger['info']('[OUTBOUND]',_0x1556('0x4c'));_0x57aa28[_0x1556('0x4d')]=util[_0x1556('0xf')](_0x1556('0x4e'),_0x53f689[_0x1556('0x49')],_0x57aa28[_0x1556('0x4f')],md5(_0x57aa28['uniqueid']));}headers[_0x1556('0x50')]=getAuth(_0x53f689);return getUser(_0x53f689,_0x3ff461['email'])[_0x1556('0x19')](function(_0x1b89dc){_0x1c1eff=_0x1b89dc;logger['info'](_0x1556('0x52'),_0x1c1eff['id']);return getEndUser(_0x53f689,_0x57aa28[_0x1556('0x64')],_0x57aa28['destcalleridnum']);})[_0x1556('0x19')](function(_0xdece12){_0x46fe30=_0xdece12;logger[_0x1556('0x1a')](_0x1556('0x53'),_0x46fe30['id']);return getTicket(_0x53f689,_0x1c1eff,_0x46fe30,_0x28899b,_0x57aa28);})[_0x1556('0x19')](function(_0x5434ce){if(_0x5434ce){logger['info']('The\x20Ticket\x20ID\x20is:',_0x5434ce['id']);switch(_0x53f689[_0x1556('0x3a')]){case'integrationTab':logger['info'](_0x1556('0x65'),'Displaying\x20ticket\x20to\x20agent...');return request({'uri':util[_0x1556('0xf')](_0x1556('0x57'),_0x53f689[_0x1556('0x21')],_0x1c1eff['id'],_0x5434ce['id']),'method':_0x1556('0x11')});case'newTab':logger[_0x1556('0x1a')](_0x1556('0x65'),_0x1556('0x59'));emit(util[_0x1556('0xf')](_0x1556('0x5a'),_0x3ff461[_0x1556('0x14')]),'trigger:browser:url',{'uri':util['format'](_0x1556('0x66'),_0x53f689[_0x1556('0x21')]['replace'](_0x1556('0x5d'),''),_0x5434ce['id'])});break;default:logger[_0x1556('0x5e')](_0x1556('0x65'),'Zendesk\x20account\x20type\x20not\x20recognized');}}})['catch'](function(_0x50f0e8){logger['error'](_0x1556('0x67'),util[_0x1556('0x61')](_0x50f0e8,{'showHidden':!![],'depth':null}));});};exports['unmanaged']=function(_0x5ba165,_0x5df809,_0x3a751e,_0x520b11,_0x52f552,_0x40c25c){var _0x213444,_0x33fcb9;_0x40c25c[_0x1556('0x21')]=intUtil[_0x1556('0x48')](_0x40c25c[_0x1556('0x21')]);_0x40c25c['serverUrl']=intUtil[_0x1556('0x48')](_0x40c25c[_0x1556('0x49')]);if(_0x52f552&&_0x52f552[_0x1556('0x4a')]){logger[_0x1556('0x1a')]('['+_0x5df809[_0x1556('0x68')][_0x1556('0x69')]()+']',_0x1556('0x4c'));_0x5df809[_0x1556('0x4d')]=util[_0x1556('0xf')](_0x1556('0x4e'),_0x40c25c[_0x1556('0x49')],_0x5df809[_0x1556('0x4f')],md5(_0x5df809['uniqueid']));}else{_0x5df809[_0x1556('0x4d')]='';}headers[_0x1556('0x50')]=getAuth(_0x40c25c);return getUser(_0x40c25c)[_0x1556('0x19')](function(_0x5cf272){_0x213444=_0x5cf272;logger['info'](_0x1556('0x52'),_0x213444['id']);return getEndUser(_0x40c25c,_0x5df809['calleridname'],_0x5df809['calleridnum']);})['then'](function(_0x485ca6){_0x33fcb9=_0x485ca6;logger['info'](_0x1556('0x53'),_0x33fcb9['id']);return getTicket(_0x40c25c,_0x213444,_0x33fcb9,_0x3a751e,_0x5df809);})[_0x1556('0x19')](function(_0xad0354){if(_0xad0354){logger['info']('The\x20Ticket\x20ID\x20is:',_0xad0354['id']);}})[_0x1556('0x6a')](function(_0x3b2149){logger[_0x1556('0x5e')]('['+_0x5df809[_0x1556('0x68')][_0x1556('0x69')]()+']'+_0x1556('0x6b'),util[_0x1556('0x61')](_0x3b2149,{'showHidden':!![],'depth':null}));});};
\ No newline at end of file
+var _0x65c8=['integrationTab','Displaying\x20ticket\x20to\x20agent...','newTab','Displaying\x20ticket\x20to\x20agent\x20in\x20a\x20new\x20tab...','user:%s','%s/agent/tickets/%s','replace','/api/v2','error','Zendesk\x20account\x20type\x20not\x20recognized','catch','[QUEUE]\x20Error\x20running\x20Zendesk\x20integration','outbound','recordingFormat','[OUTBOUND]','destcalleridname','destcalleridnum','%s/channels/voice/agents/%d/tickets/%d/display.json','[OUTBOUND]\x20Error\x20running\x20Zendesk\x20integration','inspect','unmanaged','lastevent','toUpperCase','calleridname','lodash','request-promise','md5','ioredis','./util','../../../../config/environment','defaults','redis','localhost','socket.io-emitter','emit','application/json','Creating\x20new\x20ticket...','%s/tickets.json','remoteUri','POST','Tags','getString','Descriptions','Fields','then','info','Ticket\x20created!','validateEmail','Getting\x20agent\x20with\x20email','format','%s/search.json','type:user\x20role:agent\x20email:%s','Agent\x20found!','find','results','Agent\x20not\x20found,\x20using\x20the\x20admin\x20account!','Admin\x20account\x20selected.','user','%s/users/me.json','Searching\x20enduser\x20with\x20phone','type:user\x20role:end-user\x20phone:%s','length','end-user','first','Enduser\x20found!','Enduser\x20not\x20found,\x20creating\x20a\x20new\x20enduser!','Caller\x20-\x20%s','Enduser\x20created.','authType','password','%s:%s','username','token','%s/token:%s','Basic\x20%s','toString','base64','[HTTP]','map','forEach','string','picklist','type','customField','nameField','toLowerCase','content','includes','push','idField','variable','variableName','custom_fields','customVariable','Variable','name','queue','stripTrailingSlash','serverUrl','monitor_format','[QUEUE]','Recording\x20is\x20enabled!','recordingURL','%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s','uniqueid','Authorization','email','The\x20User\x20ID\x20is:','calleridnum','The\x20Enduser\x20ID\x20is:','The\x20Ticket\x20ID\x20is:'];(function(_0x30266b,_0x4ab80a){var _0x1d8791=function(_0x38c513){while(--_0x38c513){_0x30266b['push'](_0x30266b['shift']());}};_0x1d8791(++_0x4ab80a);}(_0x65c8,0x165));var _0x865c=function(_0x10a264,_0x37b9ac){_0x10a264=_0x10a264-0x0;var _0x15bbdf=_0x65c8[_0x10a264];return _0x15bbdf;};'use strict';var _=require(_0x865c('0x0'));var rp=require(_0x865c('0x1'));var md5=require(_0x865c('0x2'));var util=require('util');var Redis=require(_0x865c('0x3'));var intUtil=require(_0x865c('0x4'));var config=require(_0x865c('0x5'));var logger=require('../../../../config/logger')('zendesk');config['redis']=_[_0x865c('0x6')](config[_0x865c('0x7')],{'host':_0x865c('0x8'),'port':0x18eb});var io=require(_0x865c('0x9'))(new Redis(config[_0x865c('0x7')]));function emit(_0x3bb798,_0x3d57e1,_0x52c1e6){io['to'](_0x3bb798)[_0x865c('0xa')](_0x3d57e1,_0x52c1e6);}var headers={'Content-Type':_0x865c('0xb'),'Accept':_0x865c('0xb')};function getTicket(_0x28f935,_0x134d9f,_0x5016d4,_0x72541a,_0x155673){logger['info'](_0x865c('0xc'));return request({'uri':util['format'](_0x865c('0xd'),_0x28f935[_0x865c('0xe')]),'method':_0x865c('0xf'),'body':{'ticket':_['merge']({'requester_id':_0x5016d4['id'],'submitter_id':_0x134d9f?_0x134d9f['id']:undefined,'assignee_id':_0x134d9f?_0x134d9f['id']:undefined,'tags':getTags(_0x72541a[_0x865c('0x10')],'name'),'subject':intUtil[_0x865c('0x11')](_0x72541a['Subjects'],_0x155673,'\x20'),'description':intUtil[_0x865c('0x11')](_0x72541a[_0x865c('0x12')],_0x155673,'\x0a'),'comment':{'public':![],'body':intUtil[_0x865c('0x11')](_0x72541a[_0x865c('0x12')],_0x155673,'\x0a')}},getCustomFields(_0x72541a[_0x865c('0x13')],_0x155673))}})[_0x865c('0x14')](function(_0x539aff){logger[_0x865c('0x15')](_0x865c('0x16'));return _0x539aff['ticket'];});}function getUser(_0xdf995d,_0x129d2c){if(intUtil[_0x865c('0x17')](_0x129d2c)){logger[_0x865c('0x15')](_0x865c('0x18'),_0x129d2c);return request({'uri':util[_0x865c('0x19')](_0x865c('0x1a'),_0xdf995d[_0x865c('0xe')]),'qs':{'query':util[_0x865c('0x19')](_0x865c('0x1b'),_0x129d2c)}})[_0x865c('0x14')](function(_0x2418e4){if(_0x2418e4['count']){logger[_0x865c('0x15')](_0x865c('0x1c'));return _[_0x865c('0x1d')](_0x2418e4[_0x865c('0x1e')],{'email':_0x129d2c,'role':'agent'});}else{logger[_0x865c('0x15')](_0x865c('0x1f'));return request({'uri':util[_0x865c('0x19')]('%s/users/me.json',_0xdf995d['remoteUri'])})[_0x865c('0x14')](function(_0x4bceec){logger[_0x865c('0x15')](_0x865c('0x20'));return _0x4bceec[_0x865c('0x21')];});}});}else{logger[_0x865c('0x15')](_0x865c('0x1f'));return request({'uri':util[_0x865c('0x19')](_0x865c('0x22'),_0xdf995d[_0x865c('0xe')])})[_0x865c('0x14')](function(_0x4b1a33){logger[_0x865c('0x15')]('Admin\x20account\x20selected.');return _0x4b1a33[_0x865c('0x21')];});}}function getEndUser(_0x493c7d,_0x14ed55,_0x2ff96d){logger[_0x865c('0x15')](_0x865c('0x23'),_0x2ff96d);return request({'uri':util[_0x865c('0x19')]('%s/search.json',_0x493c7d[_0x865c('0xe')]),'qs':{'query':util[_0x865c('0x19')](_0x865c('0x24'),_0x2ff96d)}})[_0x865c('0x14')](function(_0x3e805d){var _0x1643d8;if(_0x3e805d[_0x865c('0x1e')][_0x865c('0x25')]){_0x3e805d['results']=_['filter'](_0x3e805d[_0x865c('0x1e')],{'suspended':![],'role':_0x865c('0x26')});if(_0x3e805d['results'][_0x865c('0x25')]){_0x1643d8=_[_0x865c('0x27')](_0x3e805d[_0x865c('0x1e')]);}}if(_0x1643d8){logger[_0x865c('0x15')](_0x865c('0x28'));return _0x1643d8;}else{logger[_0x865c('0x15')](_0x865c('0x29'));return request({'uri':util[_0x865c('0x19')]('%s/users.json',_0x493c7d['remoteUri']),'method':_0x865c('0xf'),'body':{'user':{'role':_0x865c('0x26'),'name':util['format'](_0x865c('0x2a'),_0x14ed55||_0x2ff96d),'phone':_0x2ff96d}}})[_0x865c('0x14')](function(_0x345780){logger[_0x865c('0x15')](_0x865c('0x2b'));return _0x345780[_0x865c('0x21')];});}});}function getAuth(_0x31717b){var _0x4bd515;if(_0x31717b[_0x865c('0x2c')]===_0x865c('0x2d')){_0x4bd515=util['format'](_0x865c('0x2e'),_0x31717b[_0x865c('0x2f')],_0x31717b['password']);}else if(_0x31717b[_0x865c('0x2c')]===_0x865c('0x30')){_0x4bd515=util[_0x865c('0x19')](_0x865c('0x31'),_0x31717b[_0x865c('0x2f')],_0x31717b[_0x865c('0x30')]);}return util[_0x865c('0x19')](_0x865c('0x32'),new Buffer(_0x4bd515)[_0x865c('0x33')](_0x865c('0x34')));}function request(_0x1406b5){logger['debug'](_0x865c('0x35'),JSON['stringify'](_0x1406b5));return rp(_[_0x865c('0x6')](_0x1406b5,{'method':'GET','headers':headers,'json':!![]}));}function getTags(_0x59e07d,_0x5afb57){var _0x52f0b1=[];if(_0x59e07d&&_0x59e07d['length']>0x0){_0x52f0b1=_[_0x865c('0x36')](_0x59e07d,_0x5afb57);}return _0x52f0b1;}function getCustomFields(_0x11ee58,_0x5a0f9f){var _0x487637=[];var _0x38a2a8={'custom_fields':[]};if(_0x11ee58['length']>0x0){_[_0x865c('0x37')](_0x11ee58,function(_0x3ff770){if(_['includes']([_0x865c('0x38'),_0x865c('0x39')],_0x3ff770[_0x865c('0x3a')])&&_0x3ff770['nameField']&&!_0x3ff770[_0x865c('0x3b')]){_0x38a2a8[_0x3ff770[_0x865c('0x3c')][_0x865c('0x3d')]()]=_0x3ff770[_0x865c('0x3e')][_0x865c('0x33')]();}else if(_[_0x865c('0x3f')](['string',_0x865c('0x39')],_0x3ff770[_0x865c('0x3a')])&&_0x3ff770['idField']&&_0x3ff770[_0x865c('0x3b')]){_0x38a2a8['custom_fields'][_0x865c('0x40')]({'id':_0x3ff770[_0x865c('0x41')],'value':_0x3ff770['content']['toString']()});}else if(_0x3ff770['type']===_0x865c('0x42')&&_0x3ff770['variableName']&&_0x3ff770[_0x865c('0x41')]&&_0x3ff770['customField']){_0x5a0f9f[_0x3ff770[_0x865c('0x43')]]&&_0x38a2a8[_0x865c('0x44')][_0x865c('0x40')]({'id':_0x3ff770['idField'],'value':_0x5a0f9f[_0x3ff770[_0x865c('0x43')]][_0x865c('0x33')]()});}else if(_0x3ff770['type']===_0x865c('0x45')&&_0x3ff770[_0x865c('0x46')]&&_0x3ff770['Variable'][_0x865c('0x47')]&&_0x3ff770[_0x865c('0x41')]&&_0x3ff770[_0x865c('0x3b')]){_0x5a0f9f[_0x3ff770['Variable'][_0x865c('0x47')]['toLowerCase']()]&&_0x38a2a8['custom_fields'][_0x865c('0x40')]({'id':_0x3ff770[_0x865c('0x41')],'value':_0x5a0f9f[_0x3ff770[_0x865c('0x46')][_0x865c('0x47')][_0x865c('0x3d')]()][_0x865c('0x33')]()});}});}return _0x38a2a8;}exports[_0x865c('0x48')]=function(_0x333f32,_0x288309,_0x2f24de,_0x50f043,_0x2dd11b,_0x1f5b37){var _0x3de94d,_0x54c250;_0x1f5b37[_0x865c('0xe')]=intUtil[_0x865c('0x49')](_0x1f5b37[_0x865c('0xe')]);_0x1f5b37[_0x865c('0x4a')]=intUtil[_0x865c('0x49')](_0x1f5b37[_0x865c('0x4a')]);if(_0x2dd11b&&_0x2dd11b[_0x865c('0x4b')]){logger['info'](_0x865c('0x4c'),_0x865c('0x4d'));_0x288309[_0x865c('0x4e')]=util['format'](_0x865c('0x4f'),_0x1f5b37[_0x865c('0x4a')],_0x288309['uniqueid'],md5(_0x288309[_0x865c('0x50')]));}else{_0x288309[_0x865c('0x4e')]='';}headers[_0x865c('0x51')]=getAuth(_0x1f5b37);return getUser(_0x1f5b37,_0x50f043[_0x865c('0x52')])['then'](function(_0x1180a7){_0x3de94d=_0x1180a7;logger[_0x865c('0x15')](_0x865c('0x53'),_0x3de94d['id']);return getEndUser(_0x1f5b37,_0x288309['calleridname'],_0x288309[_0x865c('0x54')]);})[_0x865c('0x14')](function(_0x1c5240){_0x54c250=_0x1c5240;logger[_0x865c('0x15')](_0x865c('0x55'),_0x54c250['id']);return getTicket(_0x1f5b37,_0x3de94d,_0x54c250,_0x2f24de,_0x288309);})['then'](function(_0x455f67){if(_0x455f67){logger[_0x865c('0x15')](_0x865c('0x56'),_0x455f67['id']);switch(_0x1f5b37['type']){case _0x865c('0x57'):logger[_0x865c('0x15')](_0x865c('0x4c'),_0x865c('0x58'));return request({'uri':util['format']('%s/channels/voice/agents/%d/tickets/%d/display.json',_0x1f5b37[_0x865c('0xe')],_0x3de94d['id'],_0x455f67['id']),'method':_0x865c('0xf')});case _0x865c('0x59'):logger[_0x865c('0x15')](_0x865c('0x4c'),_0x865c('0x5a'));emit(util[_0x865c('0x19')](_0x865c('0x5b'),_0x50f043[_0x865c('0x47')]),'trigger:browser:url',{'uri':util['format'](_0x865c('0x5c'),_0x1f5b37[_0x865c('0xe')][_0x865c('0x5d')](_0x865c('0x5e'),''),_0x455f67['id'])});break;default:logger[_0x865c('0x5f')](_0x865c('0x4c'),_0x865c('0x60'));}}})[_0x865c('0x61')](function(_0x493917){logger['error'](_0x865c('0x62'),util['inspect'](_0x493917,{'showHidden':!![],'depth':null}));});};exports[_0x865c('0x63')]=function(_0x594d49,_0x10a437,_0xf03492,_0x1611a6,_0x23bc4e,_0xfbbbfc,_0x12bf36){var _0x127f13,_0x568879;_0xfbbbfc[_0x865c('0xe')]=intUtil[_0x865c('0x49')](_0xfbbbfc[_0x865c('0xe')]);_0xfbbbfc['serverUrl']=intUtil['stripTrailingSlash'](_0xfbbbfc['serverUrl']);if(_0x12bf36&&_0x12bf36['recordingFormat']&&_0x12bf36[_0x865c('0x64')]!=='none'){logger[_0x865c('0x15')](_0x865c('0x65'),'Recording\x20is\x20enabled!');_0x10a437[_0x865c('0x4e')]=util[_0x865c('0x19')](_0x865c('0x4f'),_0xfbbbfc[_0x865c('0x4a')],_0x10a437[_0x865c('0x50')],md5(_0x10a437[_0x865c('0x50')]));}headers[_0x865c('0x51')]=getAuth(_0xfbbbfc);return getUser(_0xfbbbfc,_0x1611a6['email'])[_0x865c('0x14')](function(_0x3da939){_0x127f13=_0x3da939;logger[_0x865c('0x15')](_0x865c('0x53'),_0x127f13['id']);return getEndUser(_0xfbbbfc,_0x10a437[_0x865c('0x66')],_0x10a437[_0x865c('0x67')]);})['then'](function(_0x17503d){_0x568879=_0x17503d;logger['info'](_0x865c('0x55'),_0x568879['id']);return getTicket(_0xfbbbfc,_0x127f13,_0x568879,_0xf03492,_0x10a437);})[_0x865c('0x14')](function(_0x33f73a){if(_0x33f73a){logger[_0x865c('0x15')](_0x865c('0x56'),_0x33f73a['id']);switch(_0xfbbbfc[_0x865c('0x3a')]){case _0x865c('0x57'):logger[_0x865c('0x15')](_0x865c('0x65'),'Displaying\x20ticket\x20to\x20agent...');return request({'uri':util['format'](_0x865c('0x68'),_0xfbbbfc[_0x865c('0xe')],_0x127f13['id'],_0x33f73a['id']),'method':_0x865c('0xf')});case _0x865c('0x59'):logger[_0x865c('0x15')]('[OUTBOUND]',_0x865c('0x5a'));emit(util[_0x865c('0x19')]('user:%s',_0x1611a6['name']),'trigger:browser:url',{'uri':util['format'](_0x865c('0x5c'),_0xfbbbfc['remoteUri'][_0x865c('0x5d')](_0x865c('0x5e'),''),_0x33f73a['id'])});break;default:logger[_0x865c('0x5f')](_0x865c('0x65'),_0x865c('0x60'));}}})['catch'](function(_0x130393){logger[_0x865c('0x5f')](_0x865c('0x69'),util[_0x865c('0x6a')](_0x130393,{'showHidden':!![],'depth':null}));});};exports[_0x865c('0x6b')]=function(_0x21233b,_0x493d18,_0x3569b8,_0x1136d4,_0x2ab25a,_0x58e436){var _0x27f919,_0x4b4240;_0x58e436['remoteUri']=intUtil['stripTrailingSlash'](_0x58e436['remoteUri']);_0x58e436[_0x865c('0x4a')]=intUtil[_0x865c('0x49')](_0x58e436[_0x865c('0x4a')]);if(_0x2ab25a&&_0x2ab25a[_0x865c('0x4b')]){logger[_0x865c('0x15')]('['+_0x493d18[_0x865c('0x6c')][_0x865c('0x6d')]()+']',_0x865c('0x4d'));_0x493d18[_0x865c('0x4e')]=util[_0x865c('0x19')](_0x865c('0x4f'),_0x58e436['serverUrl'],_0x493d18[_0x865c('0x50')],md5(_0x493d18[_0x865c('0x50')]));}else{_0x493d18[_0x865c('0x4e')]='';}headers['Authorization']=getAuth(_0x58e436);return getUser(_0x58e436)[_0x865c('0x14')](function(_0x12c6a0){_0x27f919=_0x12c6a0;logger[_0x865c('0x15')](_0x865c('0x53'),_0x27f919['id']);return getEndUser(_0x58e436,_0x493d18[_0x865c('0x6e')],_0x493d18[_0x865c('0x54')]);})[_0x865c('0x14')](function(_0x50d0e8){_0x4b4240=_0x50d0e8;logger[_0x865c('0x15')](_0x865c('0x55'),_0x4b4240['id']);return getTicket(_0x58e436,_0x27f919,_0x4b4240,_0x3569b8,_0x493d18);})[_0x865c('0x14')](function(_0xfdfa7){if(_0xfdfa7){logger[_0x865c('0x15')](_0x865c('0x56'),_0xfdfa7['id']);}})['catch'](function(_0x4e6881){logger[_0x865c('0x5f')]('['+_0x493d18['lastevent'][_0x865c('0x6d')]()+']'+'\x20Error\x20running\x20Zendesk\x20integration',util[_0x865c('0x6a')](_0x4e6881,{'showHidden':!![],'depth':null}));});};
\ No newline at end of file
index 66005c6..cb90ff3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xbab8=['user','error','The\x20failing\x20result\x20is','stringify','Unable\x20to\x20retrieve\x20zoho\x20account\x20users:\x20','data','https://www.zohoapis.','/crm/v2/','startCase','moduleCreate','role','first_name','last_name','code','SUCCESS','details','enduserType','log','CREATE\x20ERROR','moduleSearch','contact_lead','uri','/crm/v2/Contacts/search?criteria=((Phone:equals:','Contacts','/crm/v2/Leads/search?criteria=((Phone:equals:','Leads','nothing','lead','Owner','Subject','Description','getString','Who_Id','Full_Name','First_Name','Last_Name','What_Id','talktime','Call_Duration','utc','mm:ss','endtime','diff','starttime','YYYY-MM-DDTHH:mm:ss','lastevent','called','Call_Result','Called','connect','Answered','rejected','Abandoned','Timeout','Call_Start_Time','Call_Type','Inbound','merge','Fields','POST','Call\x20created!','queue','host','stripTrailingSlash','serverUrl','monitor_format','[QUEUE]','Recording\x20is\x20enabled!','/api/voice/recordings/','/downloads?type=uniqueid&token=','uniqueid','recordingURL','zoho.eu','com','The\x20User\x20ID\x20is:','calleridname','The\x20Call\x20ID\x20is:','user:%s','trigger:browser:url','https://crm.','/crm/EntityInfo.do?module=Calls&id=','outbound','recordingFormat','none','destcalleridnum','Outbound','[OUTBOUND]','Displaying\x20call\x20to\x20agent\x20in\x20a\x20new\x20tab...','unmanaged','calleridnum','toUpperCase','lodash','request-promise','util','moment','ioredis','../../../../config/environment','../../../../config/logger','redis','defaults','emit','[HTTP]','length','forEach','includes','string','picklist','type','idField','content','variable','variableName','toString','customVariable','Variable','name','toLowerCase','indexOf','isNil','access_token','isBefore','expires_in','https://accounts.zoho.com','https://accounts.zoho.com.au','https://accounts.zoho.eu','https://accounts.zoho.in','https://accounts.zoho.com.cn','/oauth/v2/token','refreshToken','clientId','clientSecret','refresh_token','add','seconds','catch','Failing\x20creating\x20the\x20access_token','stack','info','Search\x20user','GET','format','https://www.zohoapis.%s/crm/v2/users','Zoho-oauthtoken\x20','then','isArrayLikeObject','users','email','Agent\x20found!','Using\x20the\x20admin\x20account!','profile','Administrator'];(function(_0xb85387,_0x198cd3){var _0x947143=function(_0x23c09b){while(--_0x23c09b){_0xb85387['push'](_0xb85387['shift']());}};_0x947143(++_0x198cd3);}(_0xbab8,0xf2));var _0x8bab=function(_0x58a41a,_0x3369b3){_0x58a41a=_0x58a41a-0x0;var _0x1ce989=_0xbab8[_0x58a41a];return _0x1ce989;};'use strict';var _=require(_0x8bab('0x0'));var rp=require(_0x8bab('0x1'));var md5=require('md5');var util=require(_0x8bab('0x2'));var intUtil=require('./util');var moment=require(_0x8bab('0x3'));var Redis=require(_0x8bab('0x4'));var BPromise=require('bluebird');var config=require(_0x8bab('0x5'));var logger=require(_0x8bab('0x6'))('zoho');config[_0x8bab('0x7')]=_[_0x8bab('0x8')](config[_0x8bab('0x7')],{'host':'localhost','port':0x18eb});var io=require('socket.io-emitter')(new Redis(config[_0x8bab('0x7')]));function emit(_0x517d0f,_0x8ecdd9,_0x3b430f){io['to'](_0x517d0f)[_0x8bab('0x9')](_0x8ecdd9,_0x3b430f);}function request(_0x2d7f18){logger['debug'](_0x8bab('0xa'),JSON['stringify'](_0x2d7f18));return rp(_0x2d7f18);}function getCustomFields(_0x12b4b6,_0x3de986){var _0x1d2780={};if(_0x12b4b6[_0x8bab('0xb')]>0x0){_[_0x8bab('0xc')](_0x12b4b6,function(_0x254368){if(_[_0x8bab('0xd')]([_0x8bab('0xe'),_0x8bab('0xf')],_0x254368[_0x8bab('0x10')])&&_0x254368[_0x8bab('0x11')]){_0x1d2780[_0x254368[_0x8bab('0x11')]]=_0x254368[_0x8bab('0x12')]['toString']();}else if(_0x254368[_0x8bab('0x10')]===_0x8bab('0x13')&&_0x254368[_0x8bab('0x14')]&&_0x254368['idField']&&_0x3de986[_0x254368['variableName']]){_0x1d2780[_0x254368['idField']]=_0x3de986[_0x254368['variableName']][_0x8bab('0x15')]();}else if(_0x254368['type']===_0x8bab('0x16')&&_0x254368[_0x8bab('0x17')]&&_0x254368[_0x8bab('0x17')][_0x8bab('0x18')]&&_0x254368[_0x8bab('0x11')]&&_0x3de986[_0x254368[_0x8bab('0x17')][_0x8bab('0x18')][_0x8bab('0x19')]()]){_0x1d2780[_0x254368[_0x8bab('0x11')]]=_0x3de986[_0x254368[_0x8bab('0x17')][_0x8bab('0x18')][_0x8bab('0x19')]()][_0x8bab('0x15')]();}});}return _0x1d2780;}function getName(_0x59aca5){if(_0x59aca5[_0x8bab('0x1a')]('\x20')>0x0){var _0x4f6013=_0x59aca5['split'](/ (.+)/);if(_0x4f6013[0x1]){return _0x4f6013;}}return[_0x59aca5,_0x59aca5];}var accountsTokens={};function getAccessToken(_0x1a5e5a){return new Promise(function(_0x543a75,_0x4eecbc){if(!_['isNil'](accountsTokens[_0x1a5e5a['id']])&&!_[_0x8bab('0x1b')](accountsTokens[_0x1a5e5a['id']][_0x8bab('0x1c')])){if(moment()[_0x8bab('0x1d')](accountsTokens[_0x1a5e5a['id']][_0x8bab('0x1e')])){_0x543a75(accountsTokens[_0x1a5e5a['id']][_0x8bab('0x1c')]);}}var _0x2d59e8;switch(_0x1a5e5a['zone']){case'US':_0x2d59e8=_0x8bab('0x1f');break;case'AU':_0x2d59e8=_0x8bab('0x20');break;case'EU':_0x2d59e8=_0x8bab('0x21');break;case'IN':_0x2d59e8=_0x8bab('0x22');break;case'CN':_0x2d59e8=_0x8bab('0x23');break;default:_0x2d59e8=_0x8bab('0x21');break;}var _0x26d913={'method':'POST','uri':_0x2d59e8+_0x8bab('0x24'),'qs':{'refresh_token':_0x1a5e5a[_0x8bab('0x25')],'client_id':_0x1a5e5a[_0x8bab('0x26')],'client_secret':_0x1a5e5a[_0x8bab('0x27')],'grant_type':_0x8bab('0x28')},'json':!![]};return rp(_0x26d913)['then'](function(_0x33dcab){accountsTokens[_0x1a5e5a['id']]={'access_token':_0x33dcab[_0x8bab('0x1c')],'expires_in':moment()[_0x8bab('0x29')](_0x33dcab[_0x8bab('0x1e')],_0x8bab('0x2a'))};_0x543a75(_0x33dcab[_0x8bab('0x1c')]);})[_0x8bab('0x2b')](function(_0x494a7a){logger['error'](_0x8bab('0x2c'),_0x494a7a[_0x8bab('0x2d')]);_0x4eecbc(_0x494a7a);});});}function getUser(_0x2cbcde,_0x1f753f,_0x477fed,_0x10a803){logger[_0x8bab('0x2e')](_0x8bab('0x2f'));return request({'method':_0x8bab('0x30'),'uri':util[_0x8bab('0x31')](_0x8bab('0x32'),_0x1f753f),'qs':{'type':'ActiveUsers'},'headers':{'Authorization':_0x8bab('0x33')+_0x2cbcde},'json':!![]})[_0x8bab('0x34')](function(_0x22979a){if(_0x22979a['users']){var _0x38a89e=-0x1;if(_[_0x8bab('0x35')](_0x22979a[_0x8bab('0x36')])){if(!_['isNil'](_0x10a803)){_0x38a89e=_['findIndex'](_0x22979a[_0x8bab('0x36')],function(_0x3699a3){return _0x3699a3[_0x8bab('0x37')]===_0x10a803;});}if(_0x38a89e>=0x0){logger['info'](_0x8bab('0x38'));}else{logger['info'](_0x8bab('0x39'));_0x38a89e=_['findIndex'](_0x22979a[_0x8bab('0x36')],function(_0x1b2df1){return _0x1b2df1[_0x8bab('0x3a')]['name']===_0x8bab('0x3b');});}return _0x22979a[_0x8bab('0x36')][_0x38a89e];}else{if(_0x22979a['user']['profile'][_0x8bab('0x18')]===_0x8bab('0x3b')){logger[_0x8bab('0x2e')](_0x8bab('0x39'));user=_0x22979a[_0x8bab('0x3c')];return user;}else{logger[_0x8bab('0x3d')](_0x8bab('0x3e'),JSON[_0x8bab('0x3f')](_0x22979a));throw new Error(_0x8bab('0x40')+JSON[_0x8bab('0x3f')](_0x22979a));}}}else{logger[_0x8bab('0x3d')](_0x8bab('0x3e'),JSON[_0x8bab('0x3f')](_0x22979a));throw new Error(_0x8bab('0x40')+JSON[_0x8bab('0x3f')](_0x22979a));}})['catch'](function(_0x152401){console[_0x8bab('0x3d')](_0x152401);});}function getZohoUser(_0x3d71cd,_0x5954b9){return new BPromise(function(_0x402fa4,_0x38abaa){request(_0x3d71cd)[_0x8bab('0x34')](function(_0x162a40){var _0x47e1e5=null;if(_0x162a40){_0x47e1e5=_0x162a40[_0x8bab('0x41')][0x0];_0x47e1e5['enduserType']=_0x5954b9;}_0x402fa4(_0x47e1e5);})['catch'](function(_0x4f42f1){_0x38abaa(_0x4f42f1);});});}function createEndUser(_0xab6f0c,_0x1fe7ef,_0x5a20e6,_0x694b58,_0xafaf7b,_0x1de0b9){var _0x5a20e6=getName(_0x5a20e6);return request({'method':'POST','uri':_0x8bab('0x42')+_0x1fe7ef+_0x8bab('0x43')+_[_0x8bab('0x44')](_0x1de0b9[_0x8bab('0x45')])+'s','body':{'data':[{'Last_Name':_0x5a20e6[0x1],'First_Name':_0x5a20e6[0x0],'Phone':_0x694b58,'Owner':{'name':!_[_0x8bab('0x1b')](_0xafaf7b[_0x8bab('0x46')][_0x8bab('0x18')])?_0xafaf7b[_0x8bab('0x46')]['name']:!_[_0x8bab('0x1b')](_0xafaf7b[_0x8bab('0x47')])?_0xafaf7b['first_name']+'\x20'+_0xafaf7b[_0x8bab('0x48')]:_0xafaf7b[_0x8bab('0x48')],'id':_0xafaf7b['id']}}]},'headers':{'Authorization':_0x8bab('0x33')+_0xab6f0c},'json':!![]})[_0x8bab('0x34')](function(_0x36a8a0){if(_0x36a8a0&&_0x36a8a0[_0x8bab('0x41')][0x0][_0x8bab('0x49')]===_0x8bab('0x4a')){var _0x12fec5=_0x36a8a0[_0x8bab('0x41')][0x0][_0x8bab('0x4b')];_0x12fec5[_0x8bab('0x4c')]=_[_0x8bab('0x44')](_0x1de0b9[_0x8bab('0x45')])+'s';return _0x12fec5;}logger[_0x8bab('0x3d')]('The\x20failing\x20result\x20is',JSON[_0x8bab('0x3f')](data));throw new Error('Error:\x20'+JSON[_0x8bab('0x3f')](data));})[_0x8bab('0x2b')](function(_0x4d9782){console[_0x8bab('0x4d')](_0x8bab('0x4e'),_0x4d9782);});}function getEndUser(_0x126392,_0x5a236d,_0x9d20c4,_0x34eb6d,_0x2982a4,_0x28a0d7,_0x51f9a0){var _0x51bdf5={'method':_0x8bab('0x30'),'uri':'','headers':{'Authorization':'Zoho-oauthtoken\x20'+_0x126392},'json':!![]};switch(_0x51f9a0[_0x8bab('0x4f')]){case _0x8bab('0x50'):_0x51bdf5[_0x8bab('0x51')]=_0x8bab('0x42')+_0x5a236d+_0x8bab('0x52')+_0x2982a4+'))';return getZohoUser(_0x51bdf5,_0x8bab('0x53'))[_0x8bab('0x34')](function(_0x541101){if(_0x541101)return _0x541101;_0x51bdf5[_0x8bab('0x51')]=_0x8bab('0x42')+_0x5a236d+_0x8bab('0x54')+_0x2982a4+'))';return getZohoUser(_0x51bdf5,_0x8bab('0x55'))[_0x8bab('0x34')](function(_0x488afd){if(_0x488afd)return _0x488afd;if(_0x51f9a0[_0x8bab('0x45')]!=_0x8bab('0x56')){return createEndUser(_0x126392,_0x5a236d,_0x34eb6d,_0x2982a4,_0x28a0d7,_0x51f9a0);}else{return{};}});});break;case'contact':_0x51bdf5['uri']=_0x8bab('0x42')+_0x5a236d+_0x8bab('0x52')+_0x2982a4+'))';return getZohoUser(_0x51bdf5,'Contacts')[_0x8bab('0x34')](function(_0x54e0a1){if(_0x54e0a1)return _0x54e0a1;if(_0x51f9a0[_0x8bab('0x45')]!='nothing'){return createEndUser(_0x126392,_0x5a236d,_0x34eb6d,_0x2982a4,_0x28a0d7,_0x51f9a0);}else{return{};}});break;case _0x8bab('0x57'):_0x51bdf5[_0x8bab('0x51')]=_0x8bab('0x42')+_0x5a236d+_0x8bab('0x54')+_0x2982a4+'))';return getZohoUser(_0x51bdf5,_0x8bab('0x55'))[_0x8bab('0x34')](function(_0x1835d3){if(_0x1835d3)return _0x1835d3;if(_0x51f9a0[_0x8bab('0x45')]!='nothing'){return createEndUser(_0x126392,_0x5a236d,_0x34eb6d,_0x2982a4,_0x28a0d7,_0x51f9a0);}else{return{};}});break;}}function getCall(_0x426233,_0x5dd4fe,_0x4be11c,_0x609f4,_0x15c6d8,_0x1aef41,_0x285ab5,_0x13d9d5){logger[_0x8bab('0x2e')]('Creating\x20new\x20call...');var _0x5ac3d7={};_0x5ac3d7[_0x8bab('0x58')]={'name':!_[_0x8bab('0x1b')](_0x609f4[_0x8bab('0x46')][_0x8bab('0x18')])&&!_['isNil'](_0x609f4[_0x8bab('0x3a')]['name'])&&_0x609f4[_0x8bab('0x3a')]['name']==='administrator'?_0x609f4[_0x8bab('0x46')][_0x8bab('0x18')]:!_[_0x8bab('0x1b')](_0x609f4[_0x8bab('0x47')])?_0x609f4[_0x8bab('0x47')]+'\x20'+_0x609f4[_0x8bab('0x48')]:_0x609f4[_0x8bab('0x48')],'id':_0x609f4['id']};_0x5ac3d7[_0x8bab('0x59')]=intUtil['getString'](_0x1aef41['Subjects'],_0x285ab5,'\x20');_0x5ac3d7[_0x8bab('0x5a')]=intUtil[_0x8bab('0x5b')](_0x1aef41['Descriptions'],_0x285ab5,'\x0a');if(_0x15c6d8[_0x8bab('0x4c')]==='Contacts'){_0x5ac3d7[_0x8bab('0x5c')]={'name':!_[_0x8bab('0x1b')](_0x15c6d8[_0x8bab('0x5d')])?_0x15c6d8[_0x8bab('0x5d')]:!_[_0x8bab('0x1b')](_0x15c6d8[_0x8bab('0x5e')])?_0x15c6d8['First_Name']+'\x20'+_0x15c6d8[_0x8bab('0x5f')]:_0x15c6d8[_0x8bab('0x5f')],'id':_0x15c6d8['id']};}if(_0x15c6d8[_0x8bab('0x4c')]==='Leads'){_0x5ac3d7[_0x8bab('0x60')]={'name':!_[_0x8bab('0x1b')](_0x15c6d8[_0x8bab('0x5d')])?_0x15c6d8['Full_Name']:!_[_0x8bab('0x1b')](_0x15c6d8[_0x8bab('0x5e')])?_0x15c6d8['First_Name']+'\x20'+_0x15c6d8[_0x8bab('0x5f')]:_0x15c6d8['Last_Name'],'id':_0x15c6d8['id']};_0x5ac3d7['$se_module']=_[_0x8bab('0x44')](_0x15c6d8[_0x8bab('0x4c')]);}if(_0x285ab5[_0x8bab('0x61')]){_0x5ac3d7[_0x8bab('0x62')]=moment[_0x8bab('0x63')](parseInt(_0x285ab5[_0x8bab('0x61')])*0x3e8)[_0x8bab('0x31')](_0x8bab('0x64'));}else if(_0x285ab5['answertime']&&_0x285ab5[_0x8bab('0x65')]){_0x5ac3d7[_0x8bab('0x62')]=moment[_0x8bab('0x63')](moment(_0x285ab5[_0x8bab('0x65')],'YYYY-MM-DDTHH:mm:ss')[_0x8bab('0x66')](moment(_0x285ab5[_0x8bab('0x67')],_0x8bab('0x68'))))['format']('mm:ss');}switch(_0x285ab5[_0x8bab('0x69')]){case _0x8bab('0x6a'):_0x5ac3d7[_0x8bab('0x6b')]=_0x8bab('0x6c');break;case'complete':case _0x8bab('0x6d'):_0x5ac3d7[_0x8bab('0x6b')]=_0x8bab('0x6e');break;case _0x8bab('0x6f'):_0x5ac3d7[_0x8bab('0x6b')]='Rejected';break;case'abandoned':_0x5ac3d7[_0x8bab('0x6b')]=_0x8bab('0x70');break;case'timeout':_0x5ac3d7[_0x8bab('0x6b')]=_0x8bab('0x71');default:}_0x5ac3d7[_0x8bab('0x72')]=(_0x13d9d5==='outbound'?moment(_0x285ab5[_0x8bab('0x67')])['format'](_0x8bab('0x68')):moment(_0x285ab5['agentcalledAt'])[_0x8bab('0x31')](_0x8bab('0x68')))||moment()['format'](_0x8bab('0x68'));_0x5ac3d7[_0x8bab('0x73')]=_0x13d9d5||_0x8bab('0x74');_0x5ac3d7=_[_0x8bab('0x75')](_0x5ac3d7,getCustomFields(_0x1aef41[_0x8bab('0x76')],_0x285ab5));return request({'method':_0x8bab('0x77'),'uri':_0x8bab('0x42')+_0x5dd4fe+'/crm/v2/Calls','headers':{'Authorization':_0x8bab('0x33')+_0x426233},'body':{'data':[_0x5ac3d7]},'json':!![]})[_0x8bab('0x34')](function(_0x5913d5){if(_0x5913d5&&_0x5913d5[_0x8bab('0x41')][0x0][_0x8bab('0x49')]===_0x8bab('0x4a')){logger[_0x8bab('0x2e')](_0x8bab('0x78'));return{'id':_0x5913d5[_0x8bab('0x41')][0x0][_0x8bab('0x4b')]['id']};}})['catch'](function(_0x501a5d){logger['info']('err',_0x501a5d['stack']);console[_0x8bab('0x4d')]('err',_0x501a5d);});}exports[_0x8bab('0x79')]=function(_0x2a8fbb,_0x5a7182,_0x34dd5f,_0x522b05,_0xe9558f,_0x4a655b){var _0x2aaf03,_0x148d37,_0x4a7e90;_0x4a655b[_0x8bab('0x7a')]=intUtil[_0x8bab('0x7b')](_0x4a655b['host']);_0x4a655b[_0x8bab('0x7c')]=intUtil[_0x8bab('0x7b')](_0x4a655b[_0x8bab('0x7c')]);if(_0xe9558f&&_0xe9558f[_0x8bab('0x7d')]){logger[_0x8bab('0x2e')](_0x8bab('0x7e'),_0x8bab('0x7f'));_0x5a7182['recordingURL']=_0x4a655b[_0x8bab('0x7c')]+_0x8bab('0x80')+_0x5a7182['uniqueid']+_0x8bab('0x81')+md5(_0x5a7182[_0x8bab('0x82')]);}else{_0x5a7182[_0x8bab('0x83')]='';}var _0x191962=_0x4a655b['host']===_0x8bab('0x84')?'eu':_0x8bab('0x85');return getAccessToken(_0x4a655b)['then'](function(_0x37ee61){_0x4a7e90=_0x37ee61;return getUser(_0x4a7e90,_0x191962,_0x4a655b,_0x522b05[_0x8bab('0x37')]);})[_0x8bab('0x34')](function(_0x176ad6){_0x2aaf03=_0x176ad6;logger[_0x8bab('0x2e')](_0x8bab('0x86'),_0x2aaf03['id']);return getEndUser(_0x4a7e90,_0x191962,_0x4a655b,_0x5a7182[_0x8bab('0x87')],_0x5a7182['calleridnum'],_0x2aaf03,_0x34dd5f);})[_0x8bab('0x34')](function(_0x4e2f85){_0x148d37=_0x4e2f85;return getCall(_0x4a7e90,_0x191962,_0x4a655b,_0x2aaf03,_0x148d37,_0x34dd5f,_0x5a7182,'Inbound');})[_0x8bab('0x34')](function(_0x5b609f){if(_0x5b609f){logger[_0x8bab('0x2e')](_0x8bab('0x88'),_0x5b609f['id']);logger[_0x8bab('0x2e')](_0x8bab('0x7e'),'Displaying\x20call\x20to\x20agent\x20in\x20a\x20new\x20tab...');emit(util[_0x8bab('0x31')](_0x8bab('0x89'),_0x522b05['name']),_0x8bab('0x8a'),{'uri':_0x8bab('0x8b')+_0x4a655b[_0x8bab('0x7a')]+_0x8bab('0x8c')+_0x5b609f['id']});}})[_0x8bab('0x2b')](function(_0x18e38b){logger[_0x8bab('0x3d')](_0x8bab('0x7e'),JSON[_0x8bab('0x3f')](_0x18e38b));});};exports[_0x8bab('0x8d')]=function(_0x41c023,_0x370746,_0x213f56,_0x22add4,_0x575b5f,_0x591d87,_0x4dd75b){var _0x35d722,_0x4f3340,_0x529624;_0x591d87[_0x8bab('0x7a')]=intUtil[_0x8bab('0x7b')](_0x591d87['host']);_0x591d87[_0x8bab('0x7c')]=intUtil['stripTrailingSlash'](_0x591d87['serverUrl']);if(_0x4dd75b&&_0x4dd75b[_0x8bab('0x8e')]&&_0x4dd75b[_0x8bab('0x8e')]!==_0x8bab('0x8f')){logger[_0x8bab('0x2e')]('[OUTBOUND]',_0x8bab('0x7f'));_0x370746[_0x8bab('0x83')]=_0x591d87[_0x8bab('0x7c')]+_0x8bab('0x80')+_0x370746[_0x8bab('0x82')]+_0x8bab('0x81')+md5(_0x370746[_0x8bab('0x82')]);}var _0x2596b0=_0x591d87['host']===_0x8bab('0x84')?'eu':_0x8bab('0x85');return getAccessToken(_0x591d87)[_0x8bab('0x34')](function(_0x215058){_0x529624=_0x215058;return getUser(_0x529624,_0x2596b0,_0x591d87,_0x22add4[_0x8bab('0x37')]);})[_0x8bab('0x34')](function(_0x1ec24c){_0x35d722=_0x1ec24c;logger[_0x8bab('0x2e')](_0x8bab('0x86'),_0x35d722['id']);return getEndUser(_0x529624,_0x2596b0,_0x591d87,_0x370746['destcalleridname'],_0x370746[_0x8bab('0x90')],_0x35d722,_0x213f56);})[_0x8bab('0x34')](function(_0x336f25){_0x4f3340=_0x336f25;return getCall(_0x529624,_0x2596b0,_0x591d87,_0x35d722,_0x4f3340,_0x213f56,_0x370746,_0x8bab('0x91'));})[_0x8bab('0x34')](function(_0x2b1005){if(_0x2b1005){logger[_0x8bab('0x2e')](_0x8bab('0x88'),_0x2b1005['id']);logger[_0x8bab('0x2e')](_0x8bab('0x92'),_0x8bab('0x93'));emit(util[_0x8bab('0x31')]('user:%s',_0x22add4[_0x8bab('0x18')]),'trigger:browser:url',{'uri':_0x8bab('0x8b')+_0x591d87[_0x8bab('0x7a')]+_0x8bab('0x8c')+_0x2b1005['id']});}})['catch'](function(_0x223540){logger[_0x8bab('0x3d')](_0x8bab('0x92'),JSON[_0x8bab('0x3f')](_0x223540));});};exports[_0x8bab('0x94')]=function(_0x25ec7f,_0x37a462,_0x96215b,_0x5efbbd,_0x58a019,_0x34dcae){var _0x361f62,_0x3280f5,_0x28930f;_0x34dcae[_0x8bab('0x7a')]=intUtil['stripTrailingSlash'](_0x34dcae['host']);_0x34dcae[_0x8bab('0x7c')]=intUtil[_0x8bab('0x7b')](_0x34dcae[_0x8bab('0x7c')]);if(_0x58a019&&_0x58a019['monitor_format']){logger[_0x8bab('0x2e')]('['+_0x37a462['lastevent']['toUpperCase']()+']','Recording\x20is\x20enabled!');_0x37a462[_0x8bab('0x83')]=_0x34dcae[_0x8bab('0x7c')]+_0x8bab('0x80')+_0x37a462['uniqueid']+_0x8bab('0x81')+md5(_0x37a462['uniqueid']);}else{_0x37a462[_0x8bab('0x83')]='';}var _0x327582=_0x34dcae[_0x8bab('0x7a')]===_0x8bab('0x84')?'eu':_0x8bab('0x85');return getAccessToken(_0x34dcae)['then'](function(_0x532c66){_0x28930f=_0x532c66;return getUser(_0x28930f,_0x327582,_0x34dcae);})[_0x8bab('0x34')](function(_0x71692c){_0x361f62=_0x71692c;logger[_0x8bab('0x2e')](_0x8bab('0x86'),_0x361f62['id']);return getEndUser(_0x28930f,_0x327582,_0x34dcae,_0x37a462[_0x8bab('0x87')],_0x37a462[_0x8bab('0x95')],_0x361f62,_0x96215b);})[_0x8bab('0x34')](function(_0x2a3446){_0x3280f5=_0x2a3446;return getCall(_0x28930f,_0x327582,_0x34dcae,_0x361f62,_0x3280f5,_0x96215b,_0x37a462,_0x8bab('0x74'));})[_0x8bab('0x34')](function(_0xdc1995){if(_0xdc1995){logger[_0x8bab('0x2e')](_0x8bab('0x88'),_0xdc1995['id']);}})[_0x8bab('0x2b')](function(_0x1409db){logger[_0x8bab('0x3d')]('['+_0x37a462['lastevent'][_0x8bab('0x96')]()+']',JSON[_0x8bab('0x3f')](_0x1409db));});};
\ No newline at end of file
+var _0x261b=['complete','connect','rejected','Rejected','abandoned','Call_Start_Time','outbound','Call_Type','Fields','Call\x20created!','err','stack','log','host','stripTrailingSlash','serverUrl','monitor_format','[QUEUE]','recordingURL','/api/voice/recordings/','uniqueid','/downloads?type=uniqueid&token=','zoho.eu','com','The\x20User\x20ID\x20is:','calleridnum','Inbound','The\x20Call\x20ID\x20is:','user:%s','/crm/EntityInfo.do?module=Calls&id=','recordingFormat','none','Recording\x20is\x20enabled!','destcalleridname','destcalleridnum','Outbound','[OUTBOUND]','Displaying\x20call\x20to\x20agent\x20in\x20a\x20new\x20tab...','https://crm.','unmanaged','toUpperCase','calleridname','lodash','request-promise','ioredis','../../../../config/environment','zoho','defaults','redis','localhost','socket.io-emitter','emit','debug','[HTTP]','stringify','includes','string','picklist','type','idField','variable','variableName','toString','customVariable','Variable','name','toLowerCase','indexOf','split','isNil','access_token','isBefore','expires_in','zone','https://accounts.zoho.com.au','https://accounts.zoho.in','https://accounts.zoho.com.cn','https://accounts.zoho.eu','POST','/oauth/v2/token','refreshToken','clientSecret','refresh_token','then','add','seconds','catch','error','Failing\x20creating\x20the\x20access_token','info','GET','format','https://www.zohoapis.%s/crm/v2/users','ActiveUsers','Zoho-oauthtoken\x20','users','findIndex','email','Agent\x20found!','profile','Administrator','user','Using\x20the\x20admin\x20account!','The\x20failing\x20result\x20is','Unable\x20to\x20retrieve\x20zoho\x20account\x20users:\x20','enduserType','https://www.zohoapis.','/crm/v2/','moduleCreate','role','first_name','last_name','code','data','details','startCase','CREATE\x20ERROR','moduleSearch','contact_lead','uri','/crm/v2/Contacts/search?criteria=((Phone:equals:','Contacts','/crm/v2/Leads/search?criteria=((Phone:equals:','Leads','contact','nothing','lead','Creating\x20new\x20call...','Owner','administrator','Subjects','Description','getString','Descriptions','Full_Name','Last_Name','What_Id','First_Name','$se_module','Call_Duration','utc','talktime','mm:ss','answertime','endtime','YYYY-MM-DDTHH:mm:ss','diff','starttime','lastevent','called','Call_Result','Called'];(function(_0x1c7889,_0x24cd26){var _0x2f14e5=function(_0x9ae1b1){while(--_0x9ae1b1){_0x1c7889['push'](_0x1c7889['shift']());}};_0x2f14e5(++_0x24cd26);}(_0x261b,0x15a));var _0xb261=function(_0xfecd9e,_0x25e4e8){_0xfecd9e=_0xfecd9e-0x0;var _0x464064=_0x261b[_0xfecd9e];return _0x464064;};'use strict';var _=require(_0xb261('0x0'));var rp=require(_0xb261('0x1'));var md5=require('md5');var util=require('util');var intUtil=require('./util');var moment=require('moment');var Redis=require(_0xb261('0x2'));var BPromise=require('bluebird');var config=require(_0xb261('0x3'));var logger=require('../../../../config/logger')(_0xb261('0x4'));config['redis']=_[_0xb261('0x5')](config[_0xb261('0x6')],{'host':_0xb261('0x7'),'port':0x18eb});var io=require(_0xb261('0x8'))(new Redis(config['redis']));function emit(_0x756381,_0x7a0aaa,_0x46bd41){io['to'](_0x756381)[_0xb261('0x9')](_0x7a0aaa,_0x46bd41);}function request(_0x599c92){logger[_0xb261('0xa')](_0xb261('0xb'),JSON[_0xb261('0xc')](_0x599c92));return rp(_0x599c92);}function getCustomFields(_0x2b8dc3,_0x32606f){var _0xdf7398={};if(_0x2b8dc3['length']>0x0){_['forEach'](_0x2b8dc3,function(_0x488310){if(_[_0xb261('0xd')]([_0xb261('0xe'),_0xb261('0xf')],_0x488310[_0xb261('0x10')])&&_0x488310[_0xb261('0x11')]){_0xdf7398[_0x488310[_0xb261('0x11')]]=_0x488310['content']['toString']();}else if(_0x488310[_0xb261('0x10')]===_0xb261('0x12')&&_0x488310[_0xb261('0x13')]&&_0x488310[_0xb261('0x11')]&&_0x32606f[_0x488310[_0xb261('0x13')]]){_0xdf7398[_0x488310[_0xb261('0x11')]]=_0x32606f[_0x488310[_0xb261('0x13')]][_0xb261('0x14')]();}else if(_0x488310[_0xb261('0x10')]===_0xb261('0x15')&&_0x488310[_0xb261('0x16')]&&_0x488310[_0xb261('0x16')]['name']&&_0x488310[_0xb261('0x11')]&&_0x32606f[_0x488310[_0xb261('0x16')][_0xb261('0x17')][_0xb261('0x18')]()]){_0xdf7398[_0x488310['idField']]=_0x32606f[_0x488310[_0xb261('0x16')][_0xb261('0x17')][_0xb261('0x18')]()][_0xb261('0x14')]();}});}return _0xdf7398;}function getName(_0x38d35d){if(_0x38d35d[_0xb261('0x19')]('\x20')>0x0){var _0x3a9f9f=_0x38d35d[_0xb261('0x1a')](/ (.+)/);if(_0x3a9f9f[0x1]){return _0x3a9f9f;}}return[_0x38d35d,_0x38d35d];}var accountsTokens={};function getAccessToken(_0x45f6d8){return new Promise(function(_0x3681bc,_0x147059){if(!_[_0xb261('0x1b')](accountsTokens[_0x45f6d8['id']])&&!_[_0xb261('0x1b')](accountsTokens[_0x45f6d8['id']][_0xb261('0x1c')])){if(moment()[_0xb261('0x1d')](accountsTokens[_0x45f6d8['id']][_0xb261('0x1e')])){_0x3681bc(accountsTokens[_0x45f6d8['id']][_0xb261('0x1c')]);}}var _0x5ac0d9;switch(_0x45f6d8[_0xb261('0x1f')]){case'US':_0x5ac0d9='https://accounts.zoho.com';break;case'AU':_0x5ac0d9=_0xb261('0x20');break;case'EU':_0x5ac0d9='https://accounts.zoho.eu';break;case'IN':_0x5ac0d9=_0xb261('0x21');break;case'CN':_0x5ac0d9=_0xb261('0x22');break;default:_0x5ac0d9=_0xb261('0x23');break;}var _0x1dbe11={'method':_0xb261('0x24'),'uri':_0x5ac0d9+_0xb261('0x25'),'qs':{'refresh_token':_0x45f6d8[_0xb261('0x26')],'client_id':_0x45f6d8['clientId'],'client_secret':_0x45f6d8[_0xb261('0x27')],'grant_type':_0xb261('0x28')},'json':!![]};return rp(_0x1dbe11)[_0xb261('0x29')](function(_0x4fbd81){accountsTokens[_0x45f6d8['id']]={'access_token':_0x4fbd81['access_token'],'expires_in':moment()[_0xb261('0x2a')](_0x4fbd81[_0xb261('0x1e')],_0xb261('0x2b'))};_0x3681bc(_0x4fbd81[_0xb261('0x1c')]);})[_0xb261('0x2c')](function(_0x5ecfad){logger[_0xb261('0x2d')](_0xb261('0x2e'),_0x5ecfad['stack']);_0x147059(_0x5ecfad);});});}function getUser(_0x1c9c9a,_0x2c121b,_0x86ddef,_0x4bc2db){logger[_0xb261('0x2f')]('Search\x20user');return request({'method':_0xb261('0x30'),'uri':util[_0xb261('0x31')](_0xb261('0x32'),_0x2c121b),'qs':{'type':_0xb261('0x33')},'headers':{'Authorization':_0xb261('0x34')+_0x1c9c9a},'json':!![]})[_0xb261('0x29')](function(_0x32032d){if(_0x32032d[_0xb261('0x35')]){var _0x349901=-0x1;if(_['isArrayLikeObject'](_0x32032d[_0xb261('0x35')])){if(!_[_0xb261('0x1b')](_0x4bc2db)){_0x349901=_[_0xb261('0x36')](_0x32032d[_0xb261('0x35')],function(_0x533c0f){return _0x533c0f[_0xb261('0x37')]===_0x4bc2db;});}if(_0x349901>=0x0){logger[_0xb261('0x2f')](_0xb261('0x38'));}else{logger[_0xb261('0x2f')]('Using\x20the\x20admin\x20account!');_0x349901=_['findIndex'](_0x32032d[_0xb261('0x35')],function(_0x53b991){return _0x53b991[_0xb261('0x39')][_0xb261('0x17')]===_0xb261('0x3a');});}return _0x32032d[_0xb261('0x35')][_0x349901];}else{if(_0x32032d[_0xb261('0x3b')][_0xb261('0x39')][_0xb261('0x17')]===_0xb261('0x3a')){logger['info'](_0xb261('0x3c'));user=_0x32032d[_0xb261('0x3b')];return user;}else{logger['error'](_0xb261('0x3d'),JSON['stringify'](_0x32032d));throw new Error(_0xb261('0x3e')+JSON[_0xb261('0xc')](_0x32032d));}}}else{logger[_0xb261('0x2d')](_0xb261('0x3d'),JSON['stringify'](_0x32032d));throw new Error(_0xb261('0x3e')+JSON[_0xb261('0xc')](_0x32032d));}})[_0xb261('0x2c')](function(_0x85f3f3){console[_0xb261('0x2d')](_0x85f3f3);});}function getZohoUser(_0x4f38b6,_0x2a642d){return new BPromise(function(_0x265cf5,_0xeb82e3){request(_0x4f38b6)[_0xb261('0x29')](function(_0x40c5f5){var _0x3acdf1=null;if(_0x40c5f5){_0x3acdf1=_0x40c5f5['data'][0x0];_0x3acdf1[_0xb261('0x3f')]=_0x2a642d;}_0x265cf5(_0x3acdf1);})['catch'](function(_0x22f508){_0xeb82e3(_0x22f508);});});}function createEndUser(_0x58a24d,_0x35a238,_0xf16298,_0x20ee37,_0x58bebd,_0x4f8af2){var _0xf16298=getName(_0xf16298);return request({'method':'POST','uri':_0xb261('0x40')+_0x35a238+_0xb261('0x41')+_['startCase'](_0x4f8af2[_0xb261('0x42')])+'s','body':{'data':[{'Last_Name':_0xf16298[0x1],'First_Name':_0xf16298[0x0],'Phone':_0x20ee37,'Owner':{'name':!_['isNil'](_0x58bebd[_0xb261('0x43')][_0xb261('0x17')])?_0x58bebd['role'][_0xb261('0x17')]:!_[_0xb261('0x1b')](_0x58bebd[_0xb261('0x44')])?_0x58bebd[_0xb261('0x44')]+'\x20'+_0x58bebd[_0xb261('0x45')]:_0x58bebd[_0xb261('0x45')],'id':_0x58bebd['id']}}]},'headers':{'Authorization':_0xb261('0x34')+_0x58a24d},'json':!![]})['then'](function(_0x3e4c14){if(_0x3e4c14&&_0x3e4c14['data'][0x0][_0xb261('0x46')]==='SUCCESS'){var _0x16d53a=_0x3e4c14[_0xb261('0x47')][0x0][_0xb261('0x48')];_0x16d53a[_0xb261('0x3f')]=_[_0xb261('0x49')](_0x4f8af2[_0xb261('0x42')])+'s';return _0x16d53a;}logger['error'](_0xb261('0x3d'),JSON[_0xb261('0xc')](data));throw new Error('Error:\x20'+JSON['stringify'](data));})['catch'](function(_0x148202){console['log'](_0xb261('0x4a'),_0x148202);});}function getEndUser(_0x3b174a,_0x20a926,_0x51ec8c,_0x1097de,_0x5205a2,_0x15a6b6,_0x234d41){var _0x264c5d={'method':_0xb261('0x30'),'uri':'','headers':{'Authorization':_0xb261('0x34')+_0x3b174a},'json':!![]};switch(_0x234d41[_0xb261('0x4b')]){case _0xb261('0x4c'):_0x264c5d[_0xb261('0x4d')]=_0xb261('0x40')+_0x20a926+_0xb261('0x4e')+_0x5205a2+'))';return getZohoUser(_0x264c5d,_0xb261('0x4f'))[_0xb261('0x29')](function(_0x378273){if(_0x378273)return _0x378273;_0x264c5d['uri']='https://www.zohoapis.'+_0x20a926+_0xb261('0x50')+_0x5205a2+'))';return getZohoUser(_0x264c5d,_0xb261('0x51'))[_0xb261('0x29')](function(_0x51bb24){if(_0x51bb24)return _0x51bb24;if(_0x234d41[_0xb261('0x42')]!='nothing'){return createEndUser(_0x3b174a,_0x20a926,_0x1097de,_0x5205a2,_0x15a6b6,_0x234d41);}else{return{};}});});break;case _0xb261('0x52'):_0x264c5d[_0xb261('0x4d')]=_0xb261('0x40')+_0x20a926+_0xb261('0x4e')+_0x5205a2+'))';return getZohoUser(_0x264c5d,_0xb261('0x4f'))[_0xb261('0x29')](function(_0x2796a2){if(_0x2796a2)return _0x2796a2;if(_0x234d41[_0xb261('0x42')]!=_0xb261('0x53')){return createEndUser(_0x3b174a,_0x20a926,_0x1097de,_0x5205a2,_0x15a6b6,_0x234d41);}else{return{};}});break;case _0xb261('0x54'):_0x264c5d['uri']='https://www.zohoapis.'+_0x20a926+_0xb261('0x50')+_0x5205a2+'))';return getZohoUser(_0x264c5d,'Leads')['then'](function(_0x1ad3d1){if(_0x1ad3d1)return _0x1ad3d1;if(_0x234d41['moduleCreate']!='nothing'){return createEndUser(_0x3b174a,_0x20a926,_0x1097de,_0x5205a2,_0x15a6b6,_0x234d41);}else{return{};}});break;}}function getCall(_0x3447c6,_0x366e7f,_0x5a5bb0,_0x37cf27,_0x4b34ab,_0x252948,_0x4ed148,_0x184b1e){logger['info'](_0xb261('0x55'));var _0x51e340={};_0x51e340[_0xb261('0x56')]={'name':!_['isNil'](_0x37cf27['role'][_0xb261('0x17')])&&!_[_0xb261('0x1b')](_0x37cf27[_0xb261('0x39')][_0xb261('0x17')])&&_0x37cf27['profile'][_0xb261('0x17')]===_0xb261('0x57')?_0x37cf27[_0xb261('0x43')][_0xb261('0x17')]:!_['isNil'](_0x37cf27[_0xb261('0x44')])?_0x37cf27[_0xb261('0x44')]+'\x20'+_0x37cf27[_0xb261('0x45')]:_0x37cf27['last_name'],'id':_0x37cf27['id']};_0x51e340['Subject']=intUtil['getString'](_0x252948[_0xb261('0x58')],_0x4ed148,'\x20');_0x51e340[_0xb261('0x59')]=intUtil[_0xb261('0x5a')](_0x252948[_0xb261('0x5b')],_0x4ed148,'\x0a');if(_0x4b34ab[_0xb261('0x3f')]===_0xb261('0x4f')){_0x51e340['Who_Id']={'name':!_[_0xb261('0x1b')](_0x4b34ab['Full_Name'])?_0x4b34ab[_0xb261('0x5c')]:!_[_0xb261('0x1b')](_0x4b34ab['First_Name'])?_0x4b34ab['First_Name']+'\x20'+_0x4b34ab[_0xb261('0x5d')]:_0x4b34ab[_0xb261('0x5d')],'id':_0x4b34ab['id']};}if(_0x4b34ab[_0xb261('0x3f')]===_0xb261('0x51')){_0x51e340[_0xb261('0x5e')]={'name':!_['isNil'](_0x4b34ab[_0xb261('0x5c')])?_0x4b34ab[_0xb261('0x5c')]:!_[_0xb261('0x1b')](_0x4b34ab[_0xb261('0x5f')])?_0x4b34ab['First_Name']+'\x20'+_0x4b34ab[_0xb261('0x5d')]:_0x4b34ab[_0xb261('0x5d')],'id':_0x4b34ab['id']};_0x51e340[_0xb261('0x60')]=_[_0xb261('0x49')](_0x4b34ab[_0xb261('0x3f')]);}if(_0x4ed148['talktime']){_0x51e340[_0xb261('0x61')]=moment[_0xb261('0x62')](parseInt(_0x4ed148[_0xb261('0x63')])*0x3e8)[_0xb261('0x31')](_0xb261('0x64'));}else if(_0x4ed148[_0xb261('0x65')]&&_0x4ed148[_0xb261('0x66')]){_0x51e340['Call_Duration']=moment[_0xb261('0x62')](moment(_0x4ed148['endtime'],_0xb261('0x67'))[_0xb261('0x68')](moment(_0x4ed148[_0xb261('0x69')],'YYYY-MM-DDTHH:mm:ss')))['format'](_0xb261('0x64'));}switch(_0x4ed148[_0xb261('0x6a')]){case _0xb261('0x6b'):_0x51e340[_0xb261('0x6c')]=_0xb261('0x6d');break;case _0xb261('0x6e'):case _0xb261('0x6f'):_0x51e340['Call_Result']='Answered';break;case _0xb261('0x70'):_0x51e340[_0xb261('0x6c')]=_0xb261('0x71');break;case _0xb261('0x72'):_0x51e340[_0xb261('0x6c')]='Abandoned';break;case'timeout':_0x51e340[_0xb261('0x6c')]='Timeout';default:}_0x51e340[_0xb261('0x73')]=(_0x184b1e===_0xb261('0x74')?moment(_0x4ed148['starttime'])[_0xb261('0x31')](_0xb261('0x67')):moment(_0x4ed148['agentcalledAt'])[_0xb261('0x31')](_0xb261('0x67')))||moment()[_0xb261('0x31')]('YYYY-MM-DDTHH:mm:ss');_0x51e340[_0xb261('0x75')]=_0x184b1e||'Inbound';_0x51e340=_['merge'](_0x51e340,getCustomFields(_0x252948[_0xb261('0x76')],_0x4ed148));return request({'method':_0xb261('0x24'),'uri':_0xb261('0x40')+_0x366e7f+'/crm/v2/Calls','headers':{'Authorization':'Zoho-oauthtoken\x20'+_0x3447c6},'body':{'data':[_0x51e340]},'json':!![]})[_0xb261('0x29')](function(_0x33c3a7){if(_0x33c3a7&&_0x33c3a7[_0xb261('0x47')][0x0][_0xb261('0x46')]==='SUCCESS'){logger['info'](_0xb261('0x77'));return{'id':_0x33c3a7[_0xb261('0x47')][0x0][_0xb261('0x48')]['id']};}})[_0xb261('0x2c')](function(_0x4b509c){logger[_0xb261('0x2f')](_0xb261('0x78'),_0x4b509c[_0xb261('0x79')]);console[_0xb261('0x7a')](_0xb261('0x78'),_0x4b509c);});}exports['queue']=function(_0x55bc13,_0x5bff9e,_0x18ab6a,_0x5721b1,_0x17ac31,_0x245d97){var _0x1be109,_0x3cc9aa,_0x1d0875;_0x245d97[_0xb261('0x7b')]=intUtil[_0xb261('0x7c')](_0x245d97['host']);_0x245d97[_0xb261('0x7d')]=intUtil[_0xb261('0x7c')](_0x245d97[_0xb261('0x7d')]);if(_0x17ac31&&_0x17ac31[_0xb261('0x7e')]){logger[_0xb261('0x2f')](_0xb261('0x7f'),'Recording\x20is\x20enabled!');_0x5bff9e[_0xb261('0x80')]=_0x245d97[_0xb261('0x7d')]+_0xb261('0x81')+_0x5bff9e[_0xb261('0x82')]+_0xb261('0x83')+md5(_0x5bff9e['uniqueid']);}else{_0x5bff9e[_0xb261('0x80')]='';}var _0x254e7c=_0x245d97[_0xb261('0x7b')]===_0xb261('0x84')?'eu':_0xb261('0x85');return getAccessToken(_0x245d97)['then'](function(_0x218aae){_0x1d0875=_0x218aae;return getUser(_0x1d0875,_0x254e7c,_0x245d97,_0x5721b1['email']);})['then'](function(_0xd04ab9){_0x1be109=_0xd04ab9;logger['info'](_0xb261('0x86'),_0x1be109['id']);return getEndUser(_0x1d0875,_0x254e7c,_0x245d97,_0x5bff9e['calleridname'],_0x5bff9e[_0xb261('0x87')],_0x1be109,_0x18ab6a);})[_0xb261('0x29')](function(_0x286fdd){_0x3cc9aa=_0x286fdd;return getCall(_0x1d0875,_0x254e7c,_0x245d97,_0x1be109,_0x3cc9aa,_0x18ab6a,_0x5bff9e,_0xb261('0x88'));})[_0xb261('0x29')](function(_0x535197){if(_0x535197){logger['info'](_0xb261('0x89'),_0x535197['id']);logger[_0xb261('0x2f')](_0xb261('0x7f'),'Displaying\x20call\x20to\x20agent\x20in\x20a\x20new\x20tab...');emit(util[_0xb261('0x31')](_0xb261('0x8a'),_0x5721b1['name']),'trigger:browser:url',{'uri':'https://crm.'+_0x245d97[_0xb261('0x7b')]+_0xb261('0x8b')+_0x535197['id']});}})['catch'](function(_0x197727){logger[_0xb261('0x2d')](_0xb261('0x7f'),JSON[_0xb261('0xc')](_0x197727));});};exports[_0xb261('0x74')]=function(_0x5026a1,_0x479f4b,_0x31b66c,_0x545987,_0x36c3d0,_0x278453,_0x16f1fa){var _0xf2632,_0x100021,_0x903c5a;_0x278453[_0xb261('0x7b')]=intUtil[_0xb261('0x7c')](_0x278453[_0xb261('0x7b')]);_0x278453[_0xb261('0x7d')]=intUtil[_0xb261('0x7c')](_0x278453[_0xb261('0x7d')]);if(_0x16f1fa&&_0x16f1fa['recordingFormat']&&_0x16f1fa[_0xb261('0x8c')]!==_0xb261('0x8d')){logger[_0xb261('0x2f')]('[OUTBOUND]',_0xb261('0x8e'));_0x479f4b['recordingURL']=_0x278453[_0xb261('0x7d')]+_0xb261('0x81')+_0x479f4b['uniqueid']+_0xb261('0x83')+md5(_0x479f4b['uniqueid']);}var _0x27961b=_0x278453[_0xb261('0x7b')]===_0xb261('0x84')?'eu':_0xb261('0x85');return getAccessToken(_0x278453)['then'](function(_0x5c13c0){_0x903c5a=_0x5c13c0;return getUser(_0x903c5a,_0x27961b,_0x278453,_0x545987[_0xb261('0x37')]);})[_0xb261('0x29')](function(_0x1d5ef3){_0xf2632=_0x1d5ef3;logger['info'](_0xb261('0x86'),_0xf2632['id']);return getEndUser(_0x903c5a,_0x27961b,_0x278453,_0x479f4b[_0xb261('0x8f')],_0x479f4b[_0xb261('0x90')],_0xf2632,_0x31b66c);})[_0xb261('0x29')](function(_0x48bc77){_0x100021=_0x48bc77;return getCall(_0x903c5a,_0x27961b,_0x278453,_0xf2632,_0x100021,_0x31b66c,_0x479f4b,_0xb261('0x91'));})[_0xb261('0x29')](function(_0x5045f7){if(_0x5045f7){logger[_0xb261('0x2f')](_0xb261('0x89'),_0x5045f7['id']);logger[_0xb261('0x2f')](_0xb261('0x92'),_0xb261('0x93'));emit(util[_0xb261('0x31')](_0xb261('0x8a'),_0x545987[_0xb261('0x17')]),'trigger:browser:url',{'uri':_0xb261('0x94')+_0x278453[_0xb261('0x7b')]+_0xb261('0x8b')+_0x5045f7['id']});}})[_0xb261('0x2c')](function(_0x24a8aa){logger[_0xb261('0x2d')]('[OUTBOUND]',JSON[_0xb261('0xc')](_0x24a8aa));});};exports[_0xb261('0x95')]=function(_0x1f424e,_0x103020,_0x8a6dbc,_0x3a8ff4,_0xf7ef99,_0xa4da51){var _0x3ade2a,_0x2d36f2,_0x38b8eb;_0xa4da51[_0xb261('0x7b')]=intUtil[_0xb261('0x7c')](_0xa4da51[_0xb261('0x7b')]);_0xa4da51['serverUrl']=intUtil['stripTrailingSlash'](_0xa4da51[_0xb261('0x7d')]);if(_0xf7ef99&&_0xf7ef99[_0xb261('0x7e')]){logger[_0xb261('0x2f')]('['+_0x103020[_0xb261('0x6a')][_0xb261('0x96')]()+']',_0xb261('0x8e'));_0x103020[_0xb261('0x80')]=_0xa4da51[_0xb261('0x7d')]+_0xb261('0x81')+_0x103020[_0xb261('0x82')]+_0xb261('0x83')+md5(_0x103020[_0xb261('0x82')]);}else{_0x103020[_0xb261('0x80')]='';}var _0x33ca4b=_0xa4da51[_0xb261('0x7b')]==='zoho.eu'?'eu':'com';return getAccessToken(_0xa4da51)[_0xb261('0x29')](function(_0x1bb4ec){_0x38b8eb=_0x1bb4ec;return getUser(_0x38b8eb,_0x33ca4b,_0xa4da51);})['then'](function(_0x500ca2){_0x3ade2a=_0x500ca2;logger[_0xb261('0x2f')](_0xb261('0x86'),_0x3ade2a['id']);return getEndUser(_0x38b8eb,_0x33ca4b,_0xa4da51,_0x103020[_0xb261('0x97')],_0x103020['calleridnum'],_0x3ade2a,_0x8a6dbc);})[_0xb261('0x29')](function(_0xdd3a5d){_0x2d36f2=_0xdd3a5d;return getCall(_0x38b8eb,_0x33ca4b,_0xa4da51,_0x3ade2a,_0x2d36f2,_0x8a6dbc,_0x103020,_0xb261('0x88'));})[_0xb261('0x29')](function(_0x2fb3c4){if(_0x2fb3c4){logger[_0xb261('0x2f')](_0xb261('0x89'),_0x2fb3c4['id']);}})['catch'](function(_0x1634a0){logger[_0xb261('0x2d')]('['+_0x103020[_0xb261('0x6a')]['toUpperCase']()+']',JSON[_0xb261('0xc')](_0x1634a0));});};
\ No newline at end of file
index 0c67532..e252ab5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc6cc=['%s\x20\x27%s\x27\x20failed\x20with\x20code\x20%d\x20and\x20error:\x20%s','info','util','shelljs','mustache','trigger','exec','data2','Script','data3','render'];(function(_0x4d7530,_0xdee31){var _0x1afc9e=function(_0x2a0c56){while(--_0x2a0c56){_0x4d7530['push'](_0x4d7530['shift']());}};_0x1afc9e(++_0xdee31);}(_0xc6cc,0xf4));var _0xcc6c=function(_0x23564a,_0x35a781){_0x23564a=_0x23564a-0x0;var _0x402501=_0xc6cc[_0x23564a];return _0x402501;};'use strict';var util=require(_0xcc6c('0x0'));var sh=require(_0xcc6c('0x1'));var Mustache=require(_0xcc6c('0x2'));var logger=require('../../../../config/logger')(_0xcc6c('0x3'));exports[_0xcc6c('0x4')]=function(_0x1edd6e,_0x336b56){var _0x39ae89=_0x1edd6e[_0xcc6c('0x5')]?_0x1edd6e[_0xcc6c('0x5')]:_0xcc6c('0x6');var _0x4dec82=_0x1edd6e[_0xcc6c('0x7')]?Mustache[_0xcc6c('0x8')](_0x1edd6e[_0xcc6c('0x7')],_0x336b56):_0x336b56;sh[_0xcc6c('0x4')](_0x4dec82,function(_0x4ca724,_0x246e12,_0x42f77f){if(_0x4ca724!==0x0){logger['error'](util['format'](_0xcc6c('0x9'),_0x39ae89,_0x4dec82,_0x4ca724,_0x42f77f));}else{logger[_0xcc6c('0xa')](util['format']('%s\x20\x27%s\x27\x20succeeded\x20with\x20output:\x20%s',_0x39ae89,_0x4dec82,_0x246e12));}});};
\ No newline at end of file
+var _0x638c=['data3','render','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','shelljs','mustache','trigger','data2','Script'];(function(_0x24ebaf,_0x3351a2){var _0x127279=function(_0x27e14d){while(--_0x27e14d){_0x24ebaf['push'](_0x24ebaf['shift']());}};_0x127279(++_0x3351a2);}(_0x638c,0x186));var _0xc638=function(_0x13c17e,_0x332c91){_0x13c17e=_0x13c17e-0x0;var _0x2de4e7=_0x638c[_0x13c17e];return _0x2de4e7;};'use strict';var util=require(_0xc638('0x0'));var sh=require(_0xc638('0x1'));var Mustache=require(_0xc638('0x2'));var logger=require('../../../../config/logger')(_0xc638('0x3'));exports['exec']=function(_0x211ba9,_0x35d52d){var _0x3a52f8=_0x211ba9['data2']?_0x211ba9[_0xc638('0x4')]:_0xc638('0x5');var _0x36d9e7=_0x211ba9[_0xc638('0x6')]?Mustache[_0xc638('0x7')](_0x211ba9[_0xc638('0x6')],_0x35d52d):_0x35d52d;sh['exec'](_0x36d9e7,function(_0x1353ce,_0x5eca94,_0x5ae74d){if(_0x1353ce!==0x0){logger['error'](util[_0xc638('0x8')](_0xc638('0x9'),_0x3a52f8,_0x36d9e7,_0x1353ce,_0x5ae74d));}else{logger[_0xc638('0xa')](util['format'](_0xc638('0xb'),_0x3a52f8,_0x36d9e7,_0x5eca94));}});};
\ No newline at end of file
index c8f80c9..180e119 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8d4c=['object','%s\x20%s\x20succeeded\x20with\x20status:\x20%d\x20and\x20response:\x20%s','statusCode','%s\x20%s\x20failed\x20with\x20status:\x20%d\x20and\x20error:\x20%s\x20%s','name','message','request-promise','lodash','mustache','../../../../config/logger','trigger','exec','data1','toUpperCase','render','data2','data5','number','parse','data6','stack','DELETE','PUT','data7','body','error','info','format','%s\x20%s\x20sending\x20request\x20with\x20following\x20options:\x20%s','stringify','isNil',',\x20request\x20body:\x20'];(function(_0x5e3b04,_0xbb6795){var _0x1fc44d=function(_0x3472a1){while(--_0x3472a1){_0x5e3b04['push'](_0x5e3b04['shift']());}};_0x1fc44d(++_0xbb6795);}(_0x8d4c,0x166));var _0xc8d4=function(_0xc67563,_0x5d40fb){_0xc67563=_0xc67563-0x0;var _0x420434=_0x8d4c[_0xc67563];return _0x420434;};'use strict';var rp=require(_0xc8d4('0x0'));var util=require('util');var _=require(_0xc8d4('0x1'));var Mustache=require(_0xc8d4('0x2'));var logger=require(_0xc8d4('0x3'))(_0xc8d4('0x4'));exports[_0xc8d4('0x5')]=function(_0x1d8946,_0x763e3b){var _0x3507b9,_0x574468;var _0x41a352={'method':_0x1d8946[_0xc8d4('0x6')][_0xc8d4('0x7')](),'uri':Mustache[_0xc8d4('0x8')](_0x1d8946[_0xc8d4('0x9')],_0x763e3b),'json':!![],'resolveWithFullResponse':!![],'timeout':typeof parseInt(_0x1d8946[_0xc8d4('0xa')])===_0xc8d4('0xb')&&parseInt(_0x1d8946[_0xc8d4('0xa')])>=0x1&&parseInt(_0x1d8946[_0xc8d4('0xa')])<=0xa?parseInt(_0x1d8946['data5'])*0x3e8:0x5*0x3e8};try{_0x41a352['headers']=_0x1d8946['data6']?JSON[_0xc8d4('0xc')](Mustache['render'](_0x1d8946[_0xc8d4('0xd')],_0x763e3b)):{};}catch(_0x5c6d16){logger['error'](_0x5c6d16[_0xc8d4('0xe')]);}switch(_0x1d8946['data1'][_0xc8d4('0x7')]()){case'GET':case _0xc8d4('0xf'):_0x3507b9=null;_0x41a352['qs']=_0x763e3b;break;case'POST':case _0xc8d4('0x10'):if(_0x1d8946[_0xc8d4('0x11')]){try{_0x3507b9=JSON[_0xc8d4('0xc')](Mustache['render'](_0x1d8946[_0xc8d4('0x11')],_0x763e3b));_0x41a352[_0xc8d4('0x12')]=_0x3507b9;}catch(_0x330574){logger[_0xc8d4('0x13')](_0x330574[_0xc8d4('0xe')]);logger['error']('body\x20has\x20been\x20passed\x20to\x20URLforward\x20in\x20a\x20wrong\x20format');}}else{_0x3507b9=_0x763e3b;_0x41a352[_0xc8d4('0x12')]=_0x3507b9;}break;}logger[_0xc8d4('0x14')](util[_0xc8d4('0x15')](_0xc8d4('0x16'),_0x1d8946[_0xc8d4('0x6')],_0x1d8946[_0xc8d4('0x9')],JSON[_0xc8d4('0x17')](_0x41a352)));rp(_0x41a352)['then'](function(_0x35c117){_0x3507b9=!_[_0xc8d4('0x18')](_0x3507b9)?_0xc8d4('0x19')+_0x3507b9:'';_0x574468=typeof _0x35c117[_0xc8d4('0x12')]===_0xc8d4('0x1a')?JSON['stringify'](_0x35c117[_0xc8d4('0x12')]):_0x35c117[_0xc8d4('0x12')];logger[_0xc8d4('0x14')](util[_0xc8d4('0x15')](_0xc8d4('0x1b'),_0x1d8946[_0xc8d4('0x6')],_0x1d8946[_0xc8d4('0x9')],_0x35c117[_0xc8d4('0x1c')],_0x574468));})['catch'](function(_0x3d53bd){logger[_0xc8d4('0x13')](util[_0xc8d4('0x15')](_0xc8d4('0x1d'),_0x1d8946['data1'],_0x1d8946['data2'],_0x3d53bd[_0xc8d4('0x1c')],_0x3d53bd[_0xc8d4('0x1e')],_0x3d53bd[_0xc8d4('0x1f')]));});};
\ No newline at end of file
+var _0x833c=['statusCode','message','request-promise','mustache','../../../../config/logger','trigger','exec','data1','render','data2','data5','number','headers','data6','parse','error','stack','toUpperCase','GET','POST','PUT','data7','body','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','%s\x20%s\x20succeeded\x20with\x20status:\x20%d\x20and\x20response:\x20%s','%s\x20%s\x20failed\x20with\x20status:\x20%d\x20and\x20error:\x20%s\x20%s'];(function(_0x5ebb4d,_0x48edbb){var _0x51cea5=function(_0x54fb30){while(--_0x54fb30){_0x5ebb4d['push'](_0x5ebb4d['shift']());}};_0x51cea5(++_0x48edbb);}(_0x833c,0xe9));var _0xc833=function(_0x354712,_0x4fa631){_0x354712=_0x354712-0x0;var _0x3a3c7a=_0x833c[_0x354712];return _0x3a3c7a;};'use strict';var rp=require(_0xc833('0x0'));var util=require('util');var _=require('lodash');var Mustache=require(_0xc833('0x1'));var logger=require(_0xc833('0x2'))(_0xc833('0x3'));exports[_0xc833('0x4')]=function(_0x175360,_0x22c17c){var _0x471113,_0x22aab1;var _0x34a5a4={'method':_0x175360[_0xc833('0x5')]['toUpperCase'](),'uri':Mustache[_0xc833('0x6')](_0x175360[_0xc833('0x7')],_0x22c17c),'json':!![],'resolveWithFullResponse':!![],'timeout':typeof parseInt(_0x175360[_0xc833('0x8')])===_0xc833('0x9')&&parseInt(_0x175360[_0xc833('0x8')])>=0x1&&parseInt(_0x175360[_0xc833('0x8')])<=0xa?parseInt(_0x175360[_0xc833('0x8')])*0x3e8:0x5*0x3e8};try{_0x34a5a4[_0xc833('0xa')]=_0x175360[_0xc833('0xb')]?JSON[_0xc833('0xc')](Mustache[_0xc833('0x6')](_0x175360[_0xc833('0xb')],_0x22c17c)):{};}catch(_0x5264f1){logger[_0xc833('0xd')](_0x5264f1[_0xc833('0xe')]);}switch(_0x175360['data1'][_0xc833('0xf')]()){case _0xc833('0x10'):case'DELETE':_0x471113=null;_0x34a5a4['qs']=_0x22c17c;break;case _0xc833('0x11'):case _0xc833('0x12'):if(_0x175360[_0xc833('0x13')]){try{_0x471113=JSON[_0xc833('0xc')](Mustache[_0xc833('0x6')](_0x175360[_0xc833('0x13')],_0x22c17c));_0x34a5a4[_0xc833('0x14')]=_0x471113;}catch(_0x475b58){logger[_0xc833('0xd')](_0x475b58['stack']);logger[_0xc833('0xd')](_0xc833('0x15'));}}else{_0x471113=_0x22c17c;_0x34a5a4[_0xc833('0x14')]=_0x471113;}break;}logger[_0xc833('0x16')](util[_0xc833('0x17')](_0xc833('0x18'),_0x175360[_0xc833('0x5')],_0x175360[_0xc833('0x7')],JSON[_0xc833('0x19')](_0x34a5a4)));rp(_0x34a5a4)[_0xc833('0x1a')](function(_0x58d078){_0x471113=!_[_0xc833('0x1b')](_0x471113)?_0xc833('0x1c')+_0x471113:'';_0x22aab1=typeof _0x58d078[_0xc833('0x14')]==='object'?JSON[_0xc833('0x19')](_0x58d078['body']):_0x58d078['body'];logger[_0xc833('0x16')](util[_0xc833('0x17')](_0xc833('0x1d'),_0x175360['data1'],_0x175360[_0xc833('0x7')],_0x58d078['statusCode'],_0x22aab1));})['catch'](function(_0x33f0fc){logger['error'](util[_0xc833('0x17')](_0xc833('0x1e'),_0x175360[_0xc833('0x5')],_0x175360['data2'],_0x33f0fc[_0xc833('0x1f')],_0x33f0fc['name'],_0x33f0fc[_0xc833('0x20')]));});};
\ No newline at end of file
index 7de758b..95d6bb9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe8ec=['rpc','message','result','catch','exports','jayson/promise','bluebird','../../config/logger','routing','client','http','Request','then','error'];(function(_0x34eb31,_0x8f0f70){var _0x254994=function(_0xbec9a3){while(--_0xbec9a3){_0x34eb31['push'](_0x34eb31['shift']());}};_0x254994(++_0x8f0f70);}(_0xe8ec,0xe5));var _0xce8e=function(_0x7d9eee,_0x10abb1){_0x7d9eee=_0x7d9eee-0x0;var _0x1689a=_0xe8ec[_0x7d9eee];return _0x1689a;};'use strict';var jayson=require(_0xce8e('0x0'));var BPromise=require(_0xce8e('0x1'));var logger=require(_0xce8e('0x2'))(_0xce8e('0x3'));var client=jayson[_0xce8e('0x4')][_0xce8e('0x5')]({'port':0x2329});client[_0xce8e('0x6')]=function(_0x5e545b,_0x324a0d){return new BPromise(function(_0x3561d9,_0x1b7a43){return client['request'](_0x5e545b,_0x324a0d)[_0xce8e('0x7')](function(_0x37c43b){logger['debug']('rpc',_0xce8e('0x3'),_0x5e545b,_0x324a0d,_0x37c43b);if(_0x37c43b[_0xce8e('0x8')]){logger[_0xce8e('0x8')](_0xce8e('0x9'),_0xce8e('0x3'),_0x5e545b,_0x37c43b[_0xce8e('0x8')][_0xce8e('0xa')],_0x324a0d);return _0x1b7a43(_0x37c43b[_0xce8e('0x8')]['message']);}else{return _0x3561d9(_0x37c43b[_0xce8e('0xb')]);}})[_0xce8e('0xc')](function(_0x2647af){logger[_0xce8e('0x8')]('rpc','routing',_0x5e545b,_0x2647af,_0x324a0d);return _0x1b7a43(_0x2647af);});});};module[_0xce8e('0xd')]=client;
\ No newline at end of file
+var _0x1af7=['error','message','result','catch','exports','client','http','Request','request','rpc','routing'];(function(_0x49cb71,_0x2f0149){var _0x3a50fd=function(_0x48c304){while(--_0x48c304){_0x49cb71['push'](_0x49cb71['shift']());}};_0x3a50fd(++_0x2f0149);}(_0x1af7,0xaa));var _0x71af=function(_0x122ef9,_0x451d2a){_0x122ef9=_0x122ef9-0x0;var _0x42fba0=_0x1af7[_0x122ef9];return _0x42fba0;};'use strict';var jayson=require('jayson/promise');var BPromise=require('bluebird');var logger=require('../../config/logger')('routing');var client=jayson[_0x71af('0x0')][_0x71af('0x1')]({'port':0x2329});client[_0x71af('0x2')]=function(_0x126791,_0x1ba33c){return new BPromise(function(_0x3511b8,_0x2f2d6e){return client[_0x71af('0x3')](_0x126791,_0x1ba33c)['then'](function(_0x23fa69){logger['debug'](_0x71af('0x4'),_0x71af('0x5'),_0x126791,_0x1ba33c,_0x23fa69);if(_0x23fa69[_0x71af('0x6')]){logger[_0x71af('0x6')]('rpc',_0x71af('0x5'),_0x126791,_0x23fa69[_0x71af('0x6')][_0x71af('0x7')],_0x1ba33c);return _0x2f2d6e(_0x23fa69[_0x71af('0x6')]['message']);}else{return _0x3511b8(_0x23fa69[_0x71af('0x8')]);}})[_0x71af('0x9')](function(_0x19a2a1){logger[_0x71af('0x6')](_0x71af('0x4'),_0x71af('0x5'),_0x126791,_0x19a2a1,_0x1ba33c);return _0x2f2d6e(_0x19a2a1);});});};module[_0x71af('0xa')]=client;
\ No newline at end of file
index e13ca8e..fc8b493 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa7b3=['./server','./realtime','./lib/email','./rpc/mailAccount','./rpc/setting','resolve','then','initMailAccounts','refresh','mailAccounts','getSettings','loginMailFrequency','log'];(function(_0x337427,_0x5bbccb){var _0x43c7ea=function(_0x510cf0){while(--_0x510cf0){_0x337427['push'](_0x337427['shift']());}};_0x43c7ea(++_0x5bbccb);}(_0xa7b3,0x1ee));var _0x3a7b=function(_0x4727a4,_0x20d595){_0x4727a4=_0x4727a4-0x0;var _0x2545f7=_0xa7b3[_0x4727a4];return _0x2545f7;};'use strict';var BPromise=require('bluebird');var server=require(_0x3a7b('0x0'));var Realtime=require(_0x3a7b('0x1'));var EmailChannel=require(_0x3a7b('0x2'));var mailAccount=require(_0x3a7b('0x3'));var setting=require(_0x3a7b('0x4'));var realtime=new Realtime();var email=new EmailChannel(realtime);function initRealtime(){return BPromise[_0x3a7b('0x5')]()[_0x3a7b('0x6')](mailAccount['getMailAccounts']())[_0x3a7b('0x6')](realtime[_0x3a7b('0x7')]())['then'](function(){email[_0x3a7b('0x8')](realtime[_0x3a7b('0x9')]);return realtime;});}function main(){return server['listen'](realtime,email)['then'](function(){return initRealtime();})[_0x3a7b('0x6')](function(){return setting[_0x3a7b('0xa')]();})['then'](function(_0x40e0fe){return setInterval(initRealtime,_0x40e0fe[_0x3a7b('0xb')]*0x3e8);})['catch'](function(_0x117ba3){console[_0x3a7b('0xc')](_0x117ba3);});}main();
\ No newline at end of file
+var _0xdc0e=['loginMailFrequency','catch','log','./server','./realtime','./lib/email','./rpc/mailAccount','./rpc/setting','resolve','then','getMailAccounts','initMailAccounts','refresh','mailAccounts','listen'];(function(_0x59cf43,_0x50c140){var _0x58c221=function(_0x31c72e){while(--_0x31c72e){_0x59cf43['push'](_0x59cf43['shift']());}};_0x58c221(++_0x50c140);}(_0xdc0e,0xa8));var _0xedc0=function(_0xb77d35,_0x291854){_0xb77d35=_0xb77d35-0x0;var _0x5389a8=_0xdc0e[_0xb77d35];return _0x5389a8;};'use strict';var BPromise=require('bluebird');var server=require(_0xedc0('0x0'));var Realtime=require(_0xedc0('0x1'));var EmailChannel=require(_0xedc0('0x2'));var mailAccount=require(_0xedc0('0x3'));var setting=require(_0xedc0('0x4'));var realtime=new Realtime();var email=new EmailChannel(realtime);function initRealtime(){return BPromise[_0xedc0('0x5')]()[_0xedc0('0x6')](mailAccount[_0xedc0('0x7')]())[_0xedc0('0x6')](realtime[_0xedc0('0x8')]())[_0xedc0('0x6')](function(){email[_0xedc0('0x9')](realtime[_0xedc0('0xa')]);return realtime;});}function main(){return server[_0xedc0('0xb')](realtime,email)[_0xedc0('0x6')](function(){return initRealtime();})[_0xedc0('0x6')](function(){return setting['getSettings']();})['then'](function(_0xf75062){return setInterval(initRealtime,_0xf75062[_0xedc0('0xc')]*0x3e8);})[_0xedc0('0xd')](function(_0x2ea874){console[_0xedc0('0xe')](_0x2ea874);});}main();
\ No newline at end of file
index 4d406f1..abe9882 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2b31=['emit','name','active','messageStatus','Imap','total','stringify','mailAccount:update','refresh','hasOwnProperty','box','handleImapEmail','bind','end','handleImapEnd','error','handleImapError','status','disabled','prototype','handleImapBox','messages','New\x20email\x20from\x20%s\x20%s\x20%s\x20to\x20%s','notify','then','Mail\x20accepted\x20from\x20routing','catch','Mail\x20not\x20accepted\x20from\x20routing\x20%s','sendMail','send','verifySmtp','isNil','Smtp','lastSync','verify','verified','moment','bluebird','md5','ioredis','../../../config/environment','../../../config/logger','email','redis','localhost','./imap','./smtp','../rpc/mailAccount','info','start\x20email\x20channel','mailAccounts','imapAccounts','smtp'];(function(_0x70e086,_0x1ac7d6){var _0x4b416d=function(_0x47f0a0){while(--_0x47f0a0){_0x70e086['push'](_0x70e086['shift']());}};_0x4b416d(++_0x1ac7d6);}(_0x2b31,0x162));var _0x12b3=function(_0x4aaac3,_0x37555f){_0x4aaac3=_0x4aaac3-0x0;var _0x15cc8d=_0x2b31[_0x4aaac3];return _0x15cc8d;};'use strict';var _=require('lodash');var moment=require(_0x12b3('0x0'));var BPromise=require(_0x12b3('0x1'));var md5=require(_0x12b3('0x2'));var Redis=require(_0x12b3('0x3'));var config=require(_0x12b3('0x4'));var logger=require(_0x12b3('0x5'))(_0x12b3('0x6'));config[_0x12b3('0x7')]=_['defaults'](config[_0x12b3('0x7')],{'host':_0x12b3('0x8'),'port':0x18eb});var io=require('socket.io-emitter')(new Redis(config[_0x12b3('0x7')]));var EmailImap=require(_0x12b3('0x9'));var EmailSmtp=require(_0x12b3('0xa'));var mailAccount=require(_0x12b3('0xb'));var md5Accounts={};function EmailChannel(_0x3e5b40){logger[_0x12b3('0xc')](_0x12b3('0xd'));this['mailAccounts']=_0x3e5b40[_0x12b3('0xe')];this[_0x12b3('0xf')]={};this[_0x12b3('0x10')]=new EmailSmtp();}EmailChannel['prototype'][_0x12b3('0x11')]=function(_0x34dfdf){var _0xce84d8=this[_0x12b3('0xe')][_0x34dfdf];var _0x5106b1={'id':_0xce84d8['id'],'name':_0xce84d8[_0x12b3('0x12')],'key':_0xce84d8['key'],'active':_0xce84d8[_0x12b3('0x13')],'Imap':{'status':_0xce84d8['Imap']['status'],'messageStatus':_0xce84d8['Imap'][_0x12b3('0x14')],'total':_0xce84d8[_0x12b3('0x15')][_0x12b3('0x16')]}};if(_['isNil'](md5Accounts[_0x34dfdf])){md5Accounts[_0x34dfdf]={};}var _0x1c7187=md5(JSON[_0x12b3('0x17')](_0x5106b1));if(md5Accounts[_0x34dfdf]['md5']!==_0x1c7187){md5Accounts[_0x34dfdf]['md5']=_0x1c7187;io[_0x12b3('0x11')](_0x12b3('0x18'),_0x5106b1);}};EmailChannel['prototype'][_0x12b3('0x19')]=function(_0x241781){for(var _0x1f6c5a in _0x241781){if(_0x241781['hasOwnProperty'](_0x1f6c5a)){if(_0x241781[_0x1f6c5a][_0x12b3('0x15')]&&_0x241781[_0x1f6c5a][_0x12b3('0x13')]){var _0x35ae9b=_0x241781[_0x1f6c5a][_0x12b3('0x15')];if(!this[_0x12b3('0xf')][_0x12b3('0x1a')](_0x35ae9b['id'])){this['imapAccounts'][_0x35ae9b['id']]=new EmailImap(_0x35ae9b,_0x241781[_0x1f6c5a]['email']);this[_0x12b3('0xf')][_0x35ae9b['id']]['on'](_0x12b3('0x1b'),this['handleImapBox']['bind'](this,_0x1f6c5a));this['imapAccounts'][_0x35ae9b['id']]['on'](_0x12b3('0x6'),this[_0x12b3('0x1c')][_0x12b3('0x1d')](this,_0x1f6c5a));this['imapAccounts'][_0x35ae9b['id']]['on'](_0x12b3('0x1e'),this[_0x12b3('0x1f')][_0x12b3('0x1d')](this,_0x1f6c5a));this[_0x12b3('0xf')][_0x35ae9b['id']]['on'](_0x12b3('0x20'),this[_0x12b3('0x21')][_0x12b3('0x1d')](this,_0x1f6c5a));}}else{if(_['isNil'](this[_0x12b3('0xe')][_0x1f6c5a][_0x12b3('0x15')])){this['mailAccounts'][_0x1f6c5a][_0x12b3('0x15')]={};}this[_0x12b3('0xe')][_0x1f6c5a][_0x12b3('0x15')][_0x12b3('0x22')]=_0x12b3('0x23');this['mailAccounts'][_0x1f6c5a][_0x12b3('0x15')]['messageStatus']='';this['emit'](_0x1f6c5a);}}}};EmailChannel[_0x12b3('0x24')][_0x12b3('0x25')]=function(_0x2f2e9f,_0x37e41b){if(this[_0x12b3('0xe')][_0x2f2e9f]){this[_0x12b3('0xe')][_0x2f2e9f]['Imap'][_0x12b3('0x22')]='connected';this[_0x12b3('0xe')][_0x2f2e9f][_0x12b3('0x15')][_0x12b3('0x14')]=_0x37e41b['name'];if(_0x37e41b['messages']){this[_0x12b3('0xe')][_0x2f2e9f]['Imap'][_0x12b3('0x16')]=_0x37e41b[_0x12b3('0x26')][_0x12b3('0x16')];}return this[_0x12b3('0x11')](_0x2f2e9f);}};EmailChannel[_0x12b3('0x24')]['handleImapEmail']=function(_0x5c80c8,_0x180b7e){logger['info'](_0x12b3('0x27'),_0x180b7e['firstName'],_0x180b7e['lastName'],_0x180b7e['from'],_0x5c80c8);if(this[_0x12b3('0xe')][_0x5c80c8]){return mailAccount[_0x12b3('0x28')](_0x5c80c8,_0x180b7e)[_0x12b3('0x29')](function(_0x556200){if(_0x556200){logger[_0x12b3('0xc')](_0x12b3('0x2a'));}})[_0x12b3('0x2b')](function(_0x313a98){logger[_0x12b3('0x20')](_0x12b3('0x2c'),JSON['stringify'](_0x313a98));});}};EmailChannel['prototype'][_0x12b3('0x1f')]=function(_0x3ca994){if(this['mailAccounts'][_0x3ca994]&&this[_0x12b3('0xe')][_0x3ca994][_0x12b3('0x15')]){if(this[_0x12b3('0xf')][this[_0x12b3('0xe')][_0x3ca994][_0x12b3('0x15')]['id']]){delete this[_0x12b3('0xf')][this['mailAccounts'][_0x3ca994]['Imap']['id']];}this[_0x12b3('0xe')][_0x3ca994][_0x12b3('0x15')]['lastSync']=moment();this[_0x12b3('0x11')](_0x3ca994);}};EmailChannel[_0x12b3('0x24')][_0x12b3('0x21')]=function(_0x52e68c,_0x3697f){if(this['mailAccounts'][_0x52e68c]){this[_0x12b3('0xe')][_0x52e68c][_0x12b3('0x15')][_0x12b3('0x22')]=_0x12b3('0x20');this[_0x12b3('0xe')][_0x52e68c][_0x12b3('0x15')][_0x12b3('0x14')]=_0x3697f;return this[_0x12b3('0x11')](_0x52e68c);}};EmailChannel[_0x12b3('0x24')][_0x12b3('0x2d')]=function(_0x5dcf06,_0x4d69f3){return this[_0x12b3('0x10')][_0x12b3('0x2e')](_0x5dcf06,_0x4d69f3);};EmailChannel[_0x12b3('0x24')][_0x12b3('0x2f')]=function(_0x21b883){var _0xe3fd56=this;if(this['mailAccounts'][_0x21b883['id']]){if(_[_0x12b3('0x30')](this[_0x12b3('0xe')][_0x21b883['id']][_0x12b3('0x31')])){this[_0x12b3('0xe')][_0x21b883['id']][_0x12b3('0x31')]={};}this[_0x12b3('0xe')][_0x21b883['id']][_0x12b3('0x31')][_0x12b3('0x32')]=moment();return new BPromise(function(_0x352ddc,_0x4ea569){return _0xe3fd56[_0x12b3('0x10')][_0x12b3('0x33')](_0x21b883)['then'](function(_0x508f9f){_0xe3fd56['mailAccounts'][_0x21b883['id']][_0x12b3('0x31')][_0x12b3('0x22')]=_0x12b3('0x34');_0xe3fd56['mailAccounts'][_0x21b883['id']]['Smtp'][_0x12b3('0x14')]='';_0xe3fd56[_0x12b3('0x11')](_0x21b883['id']);_0x352ddc(_0x508f9f);})['catch'](function(_0x2d4edc){_0xe3fd56[_0x12b3('0xe')][_0x21b883['id']][_0x12b3('0x31')][_0x12b3('0x22')]='error';_0xe3fd56[_0x12b3('0xe')][_0x21b883['id']][_0x12b3('0x31')][_0x12b3('0x14')]=_0x2d4edc;_0xe3fd56[_0x12b3('0x11')](_0x21b883['id']);_0x4ea569(_0x2d4edc);});});}return this[_0x12b3('0x10')][_0x12b3('0x33')](_0x21b883);};module['exports']=EmailChannel;
\ No newline at end of file
+var _0xe62f=['../rpc/mailAccount','mailAccounts','imapAccounts','smtp','prototype','emit','name','key','active','Imap','total','isNil','stringify','refresh','hasOwnProperty','box','handleImapBox','bind','handleImapEmail','end','handleImapEnd','error','handleImapError','status','disabled','messageStatus','connected','messages','info','New\x20email\x20from\x20%s\x20%s\x20%s\x20to\x20%s','firstName','from','then','Mail\x20accepted\x20from\x20routing','catch','Mail\x20not\x20accepted\x20from\x20routing\x20%s','lastSync','sendMail','verifySmtp','Smtp','verify','verified','bluebird','md5','ioredis','../../../config/logger','email','redis','localhost','socket.io-emitter'];(function(_0x5b561d,_0x422b7c){var _0x431060=function(_0x401409){while(--_0x401409){_0x5b561d['push'](_0x5b561d['shift']());}};_0x431060(++_0x422b7c);}(_0xe62f,0x8e));var _0xfe62=function(_0x3effbf,_0xe2236b){_0x3effbf=_0x3effbf-0x0;var _0x2f4c11=_0xe62f[_0x3effbf];return _0x2f4c11;};'use strict';var _=require('lodash');var moment=require('moment');var BPromise=require(_0xfe62('0x0'));var md5=require(_0xfe62('0x1'));var Redis=require(_0xfe62('0x2'));var config=require('../../../config/environment');var logger=require(_0xfe62('0x3'))(_0xfe62('0x4'));config['redis']=_['defaults'](config[_0xfe62('0x5')],{'host':_0xfe62('0x6'),'port':0x18eb});var io=require(_0xfe62('0x7'))(new Redis(config[_0xfe62('0x5')]));var EmailImap=require('./imap');var EmailSmtp=require('./smtp');var mailAccount=require(_0xfe62('0x8'));var md5Accounts={};function EmailChannel(_0x56db6b){logger['info']('start\x20email\x20channel');this[_0xfe62('0x9')]=_0x56db6b[_0xfe62('0x9')];this[_0xfe62('0xa')]={};this[_0xfe62('0xb')]=new EmailSmtp();}EmailChannel[_0xfe62('0xc')][_0xfe62('0xd')]=function(_0x2c010f){var _0x12f264=this[_0xfe62('0x9')][_0x2c010f];var _0x38e362={'id':_0x12f264['id'],'name':_0x12f264[_0xfe62('0xe')],'key':_0x12f264[_0xfe62('0xf')],'active':_0x12f264[_0xfe62('0x10')],'Imap':{'status':_0x12f264[_0xfe62('0x11')]['status'],'messageStatus':_0x12f264[_0xfe62('0x11')]['messageStatus'],'total':_0x12f264[_0xfe62('0x11')][_0xfe62('0x12')]}};if(_[_0xfe62('0x13')](md5Accounts[_0x2c010f])){md5Accounts[_0x2c010f]={};}var _0xe3df82=md5(JSON[_0xfe62('0x14')](_0x38e362));if(md5Accounts[_0x2c010f]['md5']!==_0xe3df82){md5Accounts[_0x2c010f][_0xfe62('0x1')]=_0xe3df82;io[_0xfe62('0xd')]('mailAccount:update',_0x38e362);}};EmailChannel['prototype'][_0xfe62('0x15')]=function(_0x382c0a){for(var _0x5ebb2d in _0x382c0a){if(_0x382c0a[_0xfe62('0x16')](_0x5ebb2d)){if(_0x382c0a[_0x5ebb2d][_0xfe62('0x11')]&&_0x382c0a[_0x5ebb2d][_0xfe62('0x10')]){var _0x509dcb=_0x382c0a[_0x5ebb2d][_0xfe62('0x11')];if(!this['imapAccounts'][_0xfe62('0x16')](_0x509dcb['id'])){this['imapAccounts'][_0x509dcb['id']]=new EmailImap(_0x509dcb,_0x382c0a[_0x5ebb2d]['email']);this[_0xfe62('0xa')][_0x509dcb['id']]['on'](_0xfe62('0x17'),this[_0xfe62('0x18')][_0xfe62('0x19')](this,_0x5ebb2d));this['imapAccounts'][_0x509dcb['id']]['on'](_0xfe62('0x4'),this[_0xfe62('0x1a')]['bind'](this,_0x5ebb2d));this[_0xfe62('0xa')][_0x509dcb['id']]['on'](_0xfe62('0x1b'),this[_0xfe62('0x1c')][_0xfe62('0x19')](this,_0x5ebb2d));this[_0xfe62('0xa')][_0x509dcb['id']]['on'](_0xfe62('0x1d'),this[_0xfe62('0x1e')]['bind'](this,_0x5ebb2d));}}else{if(_[_0xfe62('0x13')](this[_0xfe62('0x9')][_0x5ebb2d][_0xfe62('0x11')])){this['mailAccounts'][_0x5ebb2d][_0xfe62('0x11')]={};}this[_0xfe62('0x9')][_0x5ebb2d][_0xfe62('0x11')][_0xfe62('0x1f')]=_0xfe62('0x20');this['mailAccounts'][_0x5ebb2d][_0xfe62('0x11')][_0xfe62('0x21')]='';this['emit'](_0x5ebb2d);}}}};EmailChannel[_0xfe62('0xc')][_0xfe62('0x18')]=function(_0x5ab7db,_0x15a101){if(this[_0xfe62('0x9')][_0x5ab7db]){this['mailAccounts'][_0x5ab7db][_0xfe62('0x11')][_0xfe62('0x1f')]=_0xfe62('0x22');this['mailAccounts'][_0x5ab7db][_0xfe62('0x11')][_0xfe62('0x21')]=_0x15a101[_0xfe62('0xe')];if(_0x15a101[_0xfe62('0x23')]){this[_0xfe62('0x9')][_0x5ab7db]['Imap'][_0xfe62('0x12')]=_0x15a101[_0xfe62('0x23')][_0xfe62('0x12')];}return this[_0xfe62('0xd')](_0x5ab7db);}};EmailChannel[_0xfe62('0xc')][_0xfe62('0x1a')]=function(_0x26a5a1,_0x281f3c){logger[_0xfe62('0x24')](_0xfe62('0x25'),_0x281f3c[_0xfe62('0x26')],_0x281f3c['lastName'],_0x281f3c[_0xfe62('0x27')],_0x26a5a1);if(this[_0xfe62('0x9')][_0x26a5a1]){return mailAccount['notify'](_0x26a5a1,_0x281f3c)[_0xfe62('0x28')](function(_0x444e0d){if(_0x444e0d){logger[_0xfe62('0x24')](_0xfe62('0x29'));}})[_0xfe62('0x2a')](function(_0x1f1b3a){logger[_0xfe62('0x1d')](_0xfe62('0x2b'),JSON[_0xfe62('0x14')](_0x1f1b3a));});}};EmailChannel[_0xfe62('0xc')][_0xfe62('0x1c')]=function(_0x4a7c2e){if(this[_0xfe62('0x9')][_0x4a7c2e]&&this[_0xfe62('0x9')][_0x4a7c2e]['Imap']){if(this[_0xfe62('0xa')][this['mailAccounts'][_0x4a7c2e]['Imap']['id']]){delete this[_0xfe62('0xa')][this['mailAccounts'][_0x4a7c2e][_0xfe62('0x11')]['id']];}this[_0xfe62('0x9')][_0x4a7c2e][_0xfe62('0x11')][_0xfe62('0x2c')]=moment();this[_0xfe62('0xd')](_0x4a7c2e);}};EmailChannel[_0xfe62('0xc')][_0xfe62('0x1e')]=function(_0x4c7145,_0x2884d7){if(this['mailAccounts'][_0x4c7145]){this['mailAccounts'][_0x4c7145][_0xfe62('0x11')][_0xfe62('0x1f')]='error';this['mailAccounts'][_0x4c7145][_0xfe62('0x11')][_0xfe62('0x21')]=_0x2884d7;return this[_0xfe62('0xd')](_0x4c7145);}};EmailChannel['prototype'][_0xfe62('0x2d')]=function(_0x3a9eaf,_0x373b5d){return this[_0xfe62('0xb')]['send'](_0x3a9eaf,_0x373b5d);};EmailChannel[_0xfe62('0xc')][_0xfe62('0x2e')]=function(_0x457dec){var _0x20d94e=this;if(this[_0xfe62('0x9')][_0x457dec['id']]){if(_['isNil'](this[_0xfe62('0x9')][_0x457dec['id']][_0xfe62('0x2f')])){this['mailAccounts'][_0x457dec['id']][_0xfe62('0x2f')]={};}this[_0xfe62('0x9')][_0x457dec['id']][_0xfe62('0x2f')][_0xfe62('0x2c')]=moment();return new BPromise(function(_0x51812a,_0x341ee0){return _0x20d94e[_0xfe62('0xb')][_0xfe62('0x30')](_0x457dec)['then'](function(_0x3cc881){_0x20d94e[_0xfe62('0x9')][_0x457dec['id']]['Smtp'][_0xfe62('0x1f')]=_0xfe62('0x31');_0x20d94e['mailAccounts'][_0x457dec['id']][_0xfe62('0x2f')][_0xfe62('0x21')]='';_0x20d94e['emit'](_0x457dec['id']);_0x51812a(_0x3cc881);})['catch'](function(_0x14933d){_0x20d94e[_0xfe62('0x9')][_0x457dec['id']][_0xfe62('0x2f')][_0xfe62('0x1f')]=_0xfe62('0x1d');_0x20d94e[_0xfe62('0x9')][_0x457dec['id']][_0xfe62('0x2f')]['messageStatus']=_0x14933d;_0x20d94e[_0xfe62('0xd')](_0x457dec['id']);_0x341ee0(_0x14933d);});});}return this[_0xfe62('0xb')][_0xfe62('0x30')](_0x457dec);};module['exports']=EmailChannel;
\ No newline at end of file
index 887c845..496796c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x10dc=['host','port','tls','autotls','getHost','anonymous@xcally.com','handleOpenBox','box','handleCloseBox','readUnseen','search','UNSEEN','handleReadUnseen','length','fetch','message','handleFetchMessage','handleFetchError','handleMessageBody','attributes','handleMessageEnd','handleSimpleParser','parser','emit','handleFetchEnd','closeBox','stringify','textCode','exports','path','util','imap','lodash','Iconv','events','EventEmitter','./utils','email','mailbox','account','once','handleReady','bind','end','handleEnd','error','handleError','connect','inherits','prototype','getAccount','connTimeout','authTimeout','isNil','service','authentication','user','password'];(function(_0x150184,_0x3a6138){var _0x1756ba=function(_0x3e843b){while(--_0x3e843b){_0x150184['push'](_0x150184['shift']());}};_0x1756ba(++_0x3a6138);}(_0x10dc,0x13f));var _0xc10d=function(_0x32f7d7,_0x54231b){_0x32f7d7=_0x32f7d7-0x0;var _0x133d09=_0x10dc[_0x32f7d7];return _0x133d09;};'use strict';var fs=require('fs');var path=require(_0xc10d('0x0'));var util=require(_0xc10d('0x1'));var Imap=require(_0xc10d('0x2'));var _=require(_0xc10d('0x3'));var rs=require('randomstring');var simpleParser=require('mailparser')['simpleParser'];var Iconv=require('iconv')[_0xc10d('0x4')];var EventEmitter=require(_0xc10d('0x5'))[_0xc10d('0x6')];var utils=require(_0xc10d('0x7'));var logger=require('../../../config/logger')(_0xc10d('0x8'));function EmailImap(_0x359469,_0x46848b){this[_0xc10d('0x9')]='INBOX';this[_0xc10d('0xa')]=this['getAccount'](_0x359469,_0x46848b);this[_0xc10d('0x2')]=new Imap(this['account']);this['imap'][_0xc10d('0xb')]('ready',this[_0xc10d('0xc')][_0xc10d('0xd')](this));this[_0xc10d('0x2')]['once'](_0xc10d('0xe'),this[_0xc10d('0xf')][_0xc10d('0xd')](this));this['imap']['on'](_0xc10d('0x10'),this[_0xc10d('0x11')][_0xc10d('0xd')](this));this['imap'][_0xc10d('0x12')]();}util[_0xc10d('0x13')](EmailImap,EventEmitter);EmailImap[_0xc10d('0x14')][_0xc10d('0x15')]=function(_0x5370f6,_0x4e1096){var _0x1d727d={'connTimeout':_0x5370f6[_0xc10d('0x16')]?_0x5370f6[_0xc10d('0x16')]*0x3e8:0x2710,'authTimeout':_0x5370f6[_0xc10d('0x17')]?_0x5370f6[_0xc10d('0x17')]*0x3e8:0x1388};if(_[_0xc10d('0x18')](_0x5370f6[_0xc10d('0x19')])){if(_0x5370f6[_0xc10d('0x1a')]){_0x1d727d[_0xc10d('0x1b')]=_0x5370f6[_0xc10d('0x1b')];_0x1d727d['password']=_0x5370f6[_0xc10d('0x1c')];}_0x1d727d[_0xc10d('0x1d')]=_0x5370f6[_0xc10d('0x1d')];_0x1d727d[_0xc10d('0x1e')]=_0x5370f6['port']||0x3e1;if(_0x5370f6[_0xc10d('0x1f')]){_0x1d727d['tls']=!![];}else{_0x1d727d[_0xc10d('0x1f')]=![];_0x1d727d[_0xc10d('0x20')]='required';}}else{_0x1d727d[_0xc10d('0x1b')]=_0x5370f6[_0xc10d('0x1b')];_0x1d727d[_0xc10d('0x1c')]=_0x5370f6[_0xc10d('0x1c')];_0x1d727d[_0xc10d('0x1d')]=utils[_0xc10d('0x21')](_0x5370f6[_0xc10d('0x19')]);_0x1d727d[_0xc10d('0x1e')]=0x3e1;_0x1d727d['tls']=!![];}_0x1d727d[_0xc10d('0x8')]=_0x4e1096||_0x5370f6[_0xc10d('0x1b')]||_0xc10d('0x22');return _0x1d727d;};EmailImap[_0xc10d('0x14')][_0xc10d('0xc')]=function(){this['imap']['openBox'](this[_0xc10d('0x9')],![],this[_0xc10d('0x23')][_0xc10d('0xd')](this));};EmailImap[_0xc10d('0x14')][_0xc10d('0x23')]=function(_0x55b7c1,_0x5c5460){if(_0x55b7c1){this[_0xc10d('0x11')](_0x55b7c1,!![]);}else{this['emit'](_0xc10d('0x24'),_0x5c5460);this['readUnseen']();}};EmailImap[_0xc10d('0x14')][_0xc10d('0x25')]=function(_0x239c5a){if(_0x239c5a){this[_0xc10d('0x11')](_0x239c5a,!![]);}else{this['imap']['end']();}};EmailImap['prototype'][_0xc10d('0x26')]=function(){this[_0xc10d('0x2')][_0xc10d('0x27')]([_0xc10d('0x28')],this[_0xc10d('0x29')][_0xc10d('0xd')](this));};EmailImap['prototype']['handleReadUnseen']=function(_0xb73c03,_0x292460){if(_0xb73c03){this['handleError'](_0xb73c03,!![]);}else{if(_0x292460[_0xc10d('0x2a')]){try{var _0x1cadc0=this[_0xc10d('0x2')][_0xc10d('0x2b')](_0x292460,{'bodies':'','markSeen':!![]});_0x1cadc0['on'](_0xc10d('0x2c'),this[_0xc10d('0x2d')][_0xc10d('0xd')](this));_0x1cadc0[_0xc10d('0xb')](_0xc10d('0x10'),this[_0xc10d('0x2e')]['bind'](this));_0x1cadc0[_0xc10d('0xb')](_0xc10d('0xe'),this['handleFetchEnd'][_0xc10d('0xd')](this));}catch(_0x1af7ee){logger[_0xc10d('0x10')](_0x1af7ee);}}else{this[_0xc10d('0x2')]['closeBox'](!![],this[_0xc10d('0x25')][_0xc10d('0xd')](this));}}};EmailImap[_0xc10d('0x14')]['handleFetchMessage']=function(_0x415800,_0x1078e0){_0x415800['on']('body',this[_0xc10d('0x2f')][_0xc10d('0xd')](this));_0x415800[_0xc10d('0xb')](_0xc10d('0x30'),this['handleMessageAttributes'][_0xc10d('0xd')](this));_0x415800[_0xc10d('0xb')](_0xc10d('0xe'),this[_0xc10d('0x31')][_0xc10d('0xd')](this));};EmailImap[_0xc10d('0x14')][_0xc10d('0x2f')]=function(_0x317d94,_0x8372db){simpleParser(_0x317d94,{'Iconv':Iconv},this[_0xc10d('0x32')][_0xc10d('0xd')](this));};EmailImap[_0xc10d('0x14')]['handleMessageAttributes']=function(_0xab0d01){};EmailImap[_0xc10d('0x14')][_0xc10d('0x31')]=function(){};EmailImap[_0xc10d('0x14')][_0xc10d('0x32')]=function(_0x113b15,_0x3457a5){if(_0x113b15){logger[_0xc10d('0x10')](_0x113b15);}else{var _0x4c4676=this;utils[_0xc10d('0x33')](this[_0xc10d('0xa')],_0x3457a5,function(_0x70774f){_0x4c4676[_0xc10d('0x34')]('email',_0x70774f);});}};EmailImap[_0xc10d('0x14')][_0xc10d('0x35')]=function(){this[_0xc10d('0x2')][_0xc10d('0x36')](!![],this[_0xc10d('0x25')]['bind'](this));};EmailImap[_0xc10d('0x14')]['handleFetchError']=function(_0x114f87){this[_0xc10d('0x11')](_0x114f87);this[_0xc10d('0x2')]['closeBox'](!![],this[_0xc10d('0x25')][_0xc10d('0xd')](this));};EmailImap[_0xc10d('0x14')]['handleEnd']=function(){this[_0xc10d('0x34')](_0xc10d('0xe'));};EmailImap[_0xc10d('0x14')][_0xc10d('0x11')]=function(_0x3992ec,_0x23fad2){logger[_0xc10d('0x10')](_0xc10d('0x11'),this['account'][_0xc10d('0x8')],JSON[_0xc10d('0x37')](_0x3992ec));var _0x2d38c5='';if(_0x3992ec){if(_0x3992ec[_0xc10d('0x38')]){_0x2d38c5=_0x3992ec[_0xc10d('0x38')];}else{for(var _0x46e1fd in _0x3992ec){if(_0x3992ec['hasOwnProperty'](_0x46e1fd)){_0x2d38c5+=_['upperFirst'](_0x46e1fd)+':\x20'+_0x3992ec[_0x46e1fd]+'\x0a';}}}}if(_0x23fad2){this[_0xc10d('0x2')][_0xc10d('0xe')]();}else{this['emit'](_0xc10d('0x10'),_0x2d38c5);this[_0xc10d('0x34')](_0xc10d('0xe'));}};module[_0xc10d('0x39')]=EmailImap;
\ No newline at end of file
+var _0xaf98=['connect','inherits','connTimeout','authTimeout','user','password','host','port','tls','autotls','required','getHost','service','anonymous@xcally.com','handleReady','openBox','handleOpenBox','prototype','handleError','box','readUnseen','handleCloseBox','end','search','handleReadUnseen','length','fetch','message','handleFetchMessage','handleFetchError','handleFetchEnd','closeBox','handleMessageBody','handleSimpleParser','handleMessageEnd','emit','stringify','textCode','hasOwnProperty','upperFirst','exports','path','util','imap','lodash','randomstring','mailparser','simpleParser','Iconv','EventEmitter','./utils','../../../config/logger','email','mailbox','INBOX','account','ready','once','handleEnd','bind','error'];(function(_0x514088,_0x54d21a){var _0x217d05=function(_0xcf77be){while(--_0xcf77be){_0x514088['push'](_0x514088['shift']());}};_0x217d05(++_0x54d21a);}(_0xaf98,0x11d));var _0x8af9=function(_0xa0b239,_0x1faa74){_0xa0b239=_0xa0b239-0x0;var _0x2e2592=_0xaf98[_0xa0b239];return _0x2e2592;};'use strict';var fs=require('fs');var path=require(_0x8af9('0x0'));var util=require(_0x8af9('0x1'));var Imap=require(_0x8af9('0x2'));var _=require(_0x8af9('0x3'));var rs=require(_0x8af9('0x4'));var simpleParser=require(_0x8af9('0x5'))[_0x8af9('0x6')];var Iconv=require('iconv')[_0x8af9('0x7')];var EventEmitter=require('events')[_0x8af9('0x8')];var utils=require(_0x8af9('0x9'));var logger=require(_0x8af9('0xa'))(_0x8af9('0xb'));function EmailImap(_0x7e316a,_0x197b3b){this[_0x8af9('0xc')]=_0x8af9('0xd');this[_0x8af9('0xe')]=this['getAccount'](_0x7e316a,_0x197b3b);this[_0x8af9('0x2')]=new Imap(this[_0x8af9('0xe')]);this[_0x8af9('0x2')]['once'](_0x8af9('0xf'),this['handleReady']['bind'](this));this[_0x8af9('0x2')][_0x8af9('0x10')]('end',this[_0x8af9('0x11')][_0x8af9('0x12')](this));this[_0x8af9('0x2')]['on'](_0x8af9('0x13'),this['handleError'][_0x8af9('0x12')](this));this[_0x8af9('0x2')][_0x8af9('0x14')]();}util[_0x8af9('0x15')](EmailImap,EventEmitter);EmailImap['prototype']['getAccount']=function(_0x9dbaae,_0x5738f7){var _0x85f7a6={'connTimeout':_0x9dbaae[_0x8af9('0x16')]?_0x9dbaae[_0x8af9('0x16')]*0x3e8:0x2710,'authTimeout':_0x9dbaae['authTimeout']?_0x9dbaae[_0x8af9('0x17')]*0x3e8:0x1388};if(_['isNil'](_0x9dbaae['service'])){if(_0x9dbaae['authentication']){_0x85f7a6[_0x8af9('0x18')]=_0x9dbaae[_0x8af9('0x18')];_0x85f7a6[_0x8af9('0x19')]=_0x9dbaae[_0x8af9('0x19')];}_0x85f7a6[_0x8af9('0x1a')]=_0x9dbaae[_0x8af9('0x1a')];_0x85f7a6[_0x8af9('0x1b')]=_0x9dbaae[_0x8af9('0x1b')]||0x3e1;if(_0x9dbaae[_0x8af9('0x1c')]){_0x85f7a6['tls']=!![];}else{_0x85f7a6[_0x8af9('0x1c')]=![];_0x85f7a6[_0x8af9('0x1d')]=_0x8af9('0x1e');}}else{_0x85f7a6[_0x8af9('0x18')]=_0x9dbaae[_0x8af9('0x18')];_0x85f7a6[_0x8af9('0x19')]=_0x9dbaae[_0x8af9('0x19')];_0x85f7a6[_0x8af9('0x1a')]=utils[_0x8af9('0x1f')](_0x9dbaae[_0x8af9('0x20')]);_0x85f7a6[_0x8af9('0x1b')]=0x3e1;_0x85f7a6[_0x8af9('0x1c')]=!![];}_0x85f7a6[_0x8af9('0xb')]=_0x5738f7||_0x9dbaae[_0x8af9('0x18')]||_0x8af9('0x21');return _0x85f7a6;};EmailImap['prototype'][_0x8af9('0x22')]=function(){this[_0x8af9('0x2')][_0x8af9('0x23')](this[_0x8af9('0xc')],![],this[_0x8af9('0x24')]['bind'](this));};EmailImap[_0x8af9('0x25')]['handleOpenBox']=function(_0x387c0e,_0x29eacd){if(_0x387c0e){this[_0x8af9('0x26')](_0x387c0e,!![]);}else{this['emit'](_0x8af9('0x27'),_0x29eacd);this[_0x8af9('0x28')]();}};EmailImap[_0x8af9('0x25')][_0x8af9('0x29')]=function(_0x477d9c){if(_0x477d9c){this['handleError'](_0x477d9c,!![]);}else{this['imap'][_0x8af9('0x2a')]();}};EmailImap['prototype'][_0x8af9('0x28')]=function(){this[_0x8af9('0x2')][_0x8af9('0x2b')](['UNSEEN'],this[_0x8af9('0x2c')]['bind'](this));};EmailImap['prototype'][_0x8af9('0x2c')]=function(_0x4d8691,_0x1c6773){if(_0x4d8691){this[_0x8af9('0x26')](_0x4d8691,!![]);}else{if(_0x1c6773[_0x8af9('0x2d')]){try{var _0x49591e=this['imap'][_0x8af9('0x2e')](_0x1c6773,{'bodies':'','markSeen':!![]});_0x49591e['on'](_0x8af9('0x2f'),this[_0x8af9('0x30')][_0x8af9('0x12')](this));_0x49591e['once'](_0x8af9('0x13'),this[_0x8af9('0x31')][_0x8af9('0x12')](this));_0x49591e[_0x8af9('0x10')]('end',this[_0x8af9('0x32')][_0x8af9('0x12')](this));}catch(_0x127386){logger[_0x8af9('0x13')](_0x127386);}}else{this[_0x8af9('0x2')][_0x8af9('0x33')](!![],this[_0x8af9('0x29')]['bind'](this));}}};EmailImap[_0x8af9('0x25')]['handleFetchMessage']=function(_0x49acc0,_0x3af169){_0x49acc0['on']('body',this[_0x8af9('0x34')][_0x8af9('0x12')](this));_0x49acc0[_0x8af9('0x10')]('attributes',this['handleMessageAttributes'][_0x8af9('0x12')](this));_0x49acc0[_0x8af9('0x10')](_0x8af9('0x2a'),this['handleMessageEnd'][_0x8af9('0x12')](this));};EmailImap[_0x8af9('0x25')][_0x8af9('0x34')]=function(_0x4b2340,_0x560005){simpleParser(_0x4b2340,{'Iconv':Iconv},this[_0x8af9('0x35')]['bind'](this));};EmailImap['prototype']['handleMessageAttributes']=function(_0x4f57fa){};EmailImap[_0x8af9('0x25')][_0x8af9('0x36')]=function(){};EmailImap[_0x8af9('0x25')][_0x8af9('0x35')]=function(_0xe1019c,_0x2eb150){if(_0xe1019c){logger['error'](_0xe1019c);}else{var _0x100d87=this;utils['parser'](this['account'],_0x2eb150,function(_0x1782b1){_0x100d87['emit'](_0x8af9('0xb'),_0x1782b1);});}};EmailImap['prototype'][_0x8af9('0x32')]=function(){this[_0x8af9('0x2')][_0x8af9('0x33')](!![],this['handleCloseBox'][_0x8af9('0x12')](this));};EmailImap[_0x8af9('0x25')]['handleFetchError']=function(_0x589555){this[_0x8af9('0x26')](_0x589555);this[_0x8af9('0x2')][_0x8af9('0x33')](!![],this[_0x8af9('0x29')][_0x8af9('0x12')](this));};EmailImap[_0x8af9('0x25')][_0x8af9('0x11')]=function(){this[_0x8af9('0x37')](_0x8af9('0x2a'));};EmailImap['prototype']['handleError']=function(_0xfa2826,_0x5da88c){logger['error'](_0x8af9('0x26'),this[_0x8af9('0xe')][_0x8af9('0xb')],JSON[_0x8af9('0x38')](_0xfa2826));var _0x4bb1b8='';if(_0xfa2826){if(_0xfa2826[_0x8af9('0x39')]){_0x4bb1b8=_0xfa2826[_0x8af9('0x39')];}else{for(var _0x475036 in _0xfa2826){if(_0xfa2826[_0x8af9('0x3a')](_0x475036)){_0x4bb1b8+=_[_0x8af9('0x3b')](_0x475036)+':\x20'+_0xfa2826[_0x475036]+'\x0a';}}}}if(_0x5da88c){this['imap'][_0x8af9('0x2a')]();}else{this[_0x8af9('0x37')](_0x8af9('0x13'),_0x4bb1b8);this[_0x8af9('0x37')](_0x8af9('0x2a'));}};module[_0x8af9('0x3c')]=EmailImap;
\ No newline at end of file
index 144664b..b9e0b2b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd91c=['sendMail','toString','verify','exports','nodemailer','nodemailer-plugin-inline-base64','prototype','send','createTransport','use','compile'];(function(_0x3054be,_0x1bdc8b){var _0x3df150=function(_0x56cfbf){while(--_0x56cfbf){_0x3054be['push'](_0x3054be['shift']());}};_0x3df150(++_0x1bdc8b);}(_0xd91c,0x159));var _0xcd91=function(_0x35ec86,_0x446b61){_0x35ec86=_0x35ec86-0x0;var _0x22f78c=_0xd91c[_0x35ec86];return _0x22f78c;};'use strict';var nodemailer=require(_0xcd91('0x0'));var BPromise=require('bluebird');var inlineBase64=require(_0xcd91('0x1'));function EmailSmtp(){}EmailSmtp[_0xcd91('0x2')][_0xcd91('0x3')]=function(_0x252011,_0x43a4b7){return new BPromise(function(_0x44849d,_0x4dda75){var _0x739186=nodemailer[_0xcd91('0x4')](_0x252011);_0x739186[_0xcd91('0x5')](_0xcd91('0x6'),inlineBase64());_0x739186[_0xcd91('0x7')](_0x43a4b7,function(_0x43d877,_0x30c9ae){if(_0x43d877){_0x4dda75(_0x43d877[_0xcd91('0x8')]());}else{_0x44849d(_0x30c9ae);}});});};EmailSmtp[_0xcd91('0x2')][_0xcd91('0x9')]=function(_0x486ba0){return new BPromise(function(_0x1ea5ec,_0x62c34c){var _0x16e1f2=nodemailer['createTransport'](_0x486ba0);_0x16e1f2[_0xcd91('0x9')](function(_0x191f9,_0x458dbd){if(_0x191f9){_0x62c34c(_0x191f9['toString']());}else{if(_0x458dbd){_0x1ea5ec(_0x458dbd);}else{_0x62c34c('Not\x20verifired');}}});});};module[_0xcd91('0xa')]=EmailSmtp;
\ No newline at end of file
+var _0x2251=['prototype','send','use','sendMail','verify','createTransport','toString','Not\x20verifired','exports','nodemailer','bluebird','nodemailer-plugin-inline-base64'];(function(_0x321bb2,_0x202794){var _0x9c12ed=function(_0x263dd3){while(--_0x263dd3){_0x321bb2['push'](_0x321bb2['shift']());}};_0x9c12ed(++_0x202794);}(_0x2251,0x1c5));var _0x1225=function(_0x511497,_0x302dde){_0x511497=_0x511497-0x0;var _0x3ad9b3=_0x2251[_0x511497];return _0x3ad9b3;};'use strict';var nodemailer=require(_0x1225('0x0'));var BPromise=require(_0x1225('0x1'));var inlineBase64=require(_0x1225('0x2'));function EmailSmtp(){}EmailSmtp[_0x1225('0x3')][_0x1225('0x4')]=function(_0x3000e8,_0x2d300b){return new BPromise(function(_0x1cfb90,_0x31196a){var _0x50bf26=nodemailer['createTransport'](_0x3000e8);_0x50bf26[_0x1225('0x5')]('compile',inlineBase64());_0x50bf26[_0x1225('0x6')](_0x2d300b,function(_0x3d5848,_0x24dca3){if(_0x3d5848){_0x31196a(_0x3d5848['toString']());}else{_0x1cfb90(_0x24dca3);}});});};EmailSmtp['prototype'][_0x1225('0x7')]=function(_0x3bd49f){return new BPromise(function(_0x149f97,_0x43be78){var _0x1651a8=nodemailer[_0x1225('0x8')](_0x3bd49f);_0x1651a8[_0x1225('0x7')](function(_0x248e1d,_0x24221f){if(_0x248e1d){_0x43be78(_0x248e1d[_0x1225('0x9')]());}else{if(_0x24221f){_0x149f97(_0x24221f);}else{_0x43be78(_0x1225('0xa'));}}});});};module[_0x1225('0xb')]=EmailSmtp;
\ No newline at end of file
index bd104b9..7503c23 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9303=['@xcally.com','name','indexOf','split','slice','Anonymous','value','length','anonymous','html','test','replace','includes','<img','attachments','push','filename','_SRC','_IMG','<span\x20style=font-weight:bold>\x20[Attachment:\x20','\x20]</span>','body','textAsHtml','<a\x20target=\x22_blank\x22\x20','message','originTo','email','isEmpty','originCc','bcc','attach','attachment','%s-%s','now','server/files/attachments/','content','contentType','headerLines','Auto-Submitted:\x20auto-replied','line','isAutoreply','parser','from','subject','messageId','inReplyTo','date','format','YYYY-MM-DD\x20HH:mm:ss','filter','application/ms-tnef','Email\x20message\x20%s\x20is\x20in\x20TNEF\x20format:\x20message\x20content\x20will\x20be\x20converted\x20by\x20the\x20system','parseBuffer','first','BodyHTML','<p>Empty\x20message</p>','Title','Data','getHost','gmail','imap.gmail.com','imap.mail.yahoo.com','hotmail','imap-mail.outlook.com','outlook365','outlook.office365.com','127.0.0.1','lodash','path','node-tnef','../../../config/environment','head','address','generate'];(function(_0x2112d4,_0x3c863c){var _0x434972=function(_0x477020){while(--_0x477020){_0x2112d4['push'](_0x2112d4['shift']());}};_0x434972(++_0x3c863c);}(_0x9303,0xd7));var _0x3930=function(_0x47c902,_0x220fd2){_0x47c902=_0x47c902-0x0;var _0x1ad6a0=_0x9303[_0x47c902];return _0x1ad6a0;};'use strict';var _=require(_0x3930('0x0'));var moment=require('moment');var random=require('randomstring');var fs=require('fs');var path=require(_0x3930('0x1'));var util=require('util');var tnef=require(_0x3930('0x2'));var logger=require('../../../config/logger')('email');var config=require(_0x3930('0x3'));function getAddress(_0x2dddd0){var _0x1fb17=_[_0x3930('0x4')](_0x2dddd0['value']);return _0x1fb17&&_0x1fb17[_0x3930('0x5')]?_0x1fb17['address']:'anonymous'+random[_0x3930('0x6')](0x6)+_0x3930('0x7');}function getFirstName(_0x20ba32){var _0xe6fe58=_[_0x3930('0x4')](_0x20ba32['value']);if(_0xe6fe58&&_0xe6fe58['name']){if(_0xe6fe58[_0x3930('0x8')]==_0xe6fe58['address']){return _0xe6fe58['name']['substring'](0x0,_0xe6fe58[_0x3930('0x8')][_0x3930('0x9')]('@'));}var _0x417b9c=_0xe6fe58[_0x3930('0x8')][_0x3930('0xa')](/\s+/);return _0x417b9c['length']>0x1?_0x417b9c[_0x3930('0xb')](0x0,-0x1)['join']('\x20'):_0xe6fe58[_0x3930('0x8')];}return _0x3930('0xc');}function getLastName(_0x5d44a1){var _0x555cae=_[_0x3930('0x4')](_0x5d44a1[_0x3930('0xd')]);if(_0x555cae&&_0x555cae['name']){var _0x457912=_0x555cae[_0x3930('0x8')][_0x3930('0xa')](/\s+/);return _0x457912[_0x3930('0xe')]>0x1?_0x457912['pop']():'';}return'';}function getMails(_0x55ec9b,_0x3a2ac0){var _0x49468d='';for(var _0x2a2562=0x0;_0x2a2562<_0x3a2ac0['value'][_0x3930('0xe')];_0x2a2562+=0x1){if(_0x3a2ac0[_0x3930('0xd')][_0x2a2562]['address']!==_0x55ec9b){if(!_['isEmpty'](_0x49468d)){_0x49468d+=',';}_0x49468d+=_0x3a2ac0['value'][_0x2a2562][_0x3930('0x8')]||_0x3a2ac0[_0x3930('0xd')][_0x2a2562][_0x3930('0x5')]||'';_0x49468d+='\x20<';_0x49468d+=_0x3a2ac0['value'][_0x2a2562]['address']?_0x3a2ac0['value'][_0x2a2562]['address']:_0x3930('0xf')+random[_0x3930('0x6')](0x6)+_0x3930('0x7');_0x49468d+='>';}}return _0x49468d;}function parseEmail(_0x31938b,_0x3d2a2f,_0x559c86){if(_0x3d2a2f[_0x3930('0x10')]){var _0x315f73=/<script\b[^<]*(?:(?!<\/script>)<[^<]*)*<\/script>/gi;while(_0x315f73[_0x3930('0x11')](_0x3d2a2f['html'])){_0x3d2a2f[_0x3930('0x10')]=_0x3d2a2f[_0x3930('0x10')][_0x3930('0x12')](_0x315f73,'');}if(_0x3d2a2f[_0x3930('0x10')][_0x3930('0x13')](_0x3930('0x14'))){var _0x347d7d=[];_0x3d2a2f[_0x3930('0x15')]['forEach'](_0x25135a=>{_0x347d7d[_0x3930('0x16')](_0x25135a[_0x3930('0x17')]);});var _0x11358e=/<img.*? _SRC(.*?)[^>]+>/g;var _0x454138=/src="data:image\/([a-zA-Z]*);base64,([^"]*)"/g;var _0x5b4c56=_0x3d2a2f[_0x3930('0x10')][_0x3930('0x12')](_0x454138,_0x3930('0x18'));var _0x5b20a7=_0x5b4c56[_0x3930('0x12')](_0x11358e,_0x3930('0x19'));for(let _0x699a54=0x0;_0x699a54<_0x347d7d[_0x3930('0xe')];_0x699a54++){var _0x582b18=_0x5b20a7['replace'](_0x3930('0x19'),_0x3930('0x1a')+_0x347d7d[_0x699a54]+_0x3930('0x1b'));_0x5b20a7=_0x582b18;}_0x3d2a2f['html']=_0x5b20a7;}_0x559c86[_0x3930('0x1c')]=_0x3d2a2f[_0x3930('0x10')];}else{_0x559c86[_0x3930('0x1c')]=_0x3d2a2f[_0x3930('0x1d')];}if(_0x559c86[_0x3930('0x1c')]){_0x559c86[_0x3930('0x1c')]=_0x559c86[_0x3930('0x1c')][_0x3930('0x12')](/<a\s+/gi,_0x3930('0x1e'));}if(_0x3d2a2f['to']){_0x559c86[_0x3930('0x1f')][_0x3930('0x20')]=getMails(null,_0x3d2a2f['to']);var _0x88ba12=getMails(_0x31938b[_0x3930('0x21')],_0x3d2a2f['to']);if(!_[_0x3930('0x22')](_0x88ba12)){_0x559c86[_0x3930('0x1f')]['cc']+=_0x88ba12;}}if(_0x3d2a2f['cc']){_0x559c86[_0x3930('0x1f')][_0x3930('0x23')]=getMails(null,_0x3d2a2f['cc']);var _0x154a5e=getMails(_0x31938b[_0x3930('0x21')],_0x3d2a2f['cc']);if(!_[_0x3930('0x22')](_0x154a5e)){if(!_['isEmpty'](_0x559c86['message']['cc'])){_0x559c86['message']['cc']+=',';}_0x559c86[_0x3930('0x1f')]['cc']+=_0x154a5e;}}if(!_[_0x3930('0x13')](_0x559c86['message'][_0x3930('0x20')],_0x31938b[_0x3930('0x21')])&&!_['includes'](_0x559c86[_0x3930('0x1f')]['originCc'],_0x31938b[_0x3930('0x21')])){_0x559c86[_0x3930('0x1f')][_0x3930('0x24')]=_0x31938b[_0x3930('0x21')];}if(_0x3d2a2f[_0x3930('0x15')]&&_0x3d2a2f[_0x3930('0x15')][_0x3930('0xe')]){_0x559c86[_0x3930('0x1f')][_0x3930('0x25')]=_0x3d2a2f[_0x3930('0x15')][_0x3930('0xe')];for(var _0x2e9694=0x0,_0x3ff697,_0xfc8229,_0x231fa1;_0x2e9694<_0x3d2a2f[_0x3930('0x15')]['length'];_0x2e9694+=0x1){if(_0x3d2a2f[_0x3930('0x15')][_0x2e9694]['type']===_0x3930('0x26')){_0x231fa1=_0x3d2a2f['attachments'][_0x2e9694][_0x3930('0x17')]||'attachment-'+_0x2e9694;_0x3ff697=util['format'](_0x3930('0x27'),Date[_0x3930('0x28')](),_0x231fa1);_0xfc8229=path['join'](config['root'],_0x3930('0x29'),_0x3ff697);fs['writeFileSync'](_0xfc8229,_0x3d2a2f[_0x3930('0x15')][_0x2e9694][_0x3930('0x2a')]);_0x559c86[_0x3930('0x1f')][_0x3930('0x15')][_0x3930('0x16')]({'name':_0x231fa1,'basename':_0x3ff697,'type':_0x3d2a2f[_0x3930('0x15')][_0x2e9694][_0x3930('0x2b')],'filepath':_0xfc8229});}}}if(_0x3d2a2f[_0x3930('0x2c')]&&_0x3d2a2f['headerLines']['length']>0x0){var _0xc821be=[_0x3930('0x2d'),'X-Auto-Response-Suppress:\x20All','Precedence:\x20auto_reply'];for(var _0x3d90bd=0x0;_0x3d90bd<_0x3d2a2f[_0x3930('0x2c')][_0x3930('0xe')];_0x3d90bd++){var _0x531890=_['indexOf'](_0xc821be,_0x3d2a2f[_0x3930('0x2c')][_0x3d90bd][_0x3930('0x2e')]);if(_0x531890>=0x0){_0x559c86[_0x3930('0x2f')]=!![];}}}return _0x559c86;}exports[_0x3930('0x30')]=function(_0x5cc6d8,_0x5e7718,_0x3c251d){var _0x4a9d9c={'from':getAddress(_0x5e7718[_0x3930('0x31')]),'firstName':getFirstName(_0x5e7718[_0x3930('0x31')]),'lastName':getLastName(_0x5e7718['from']),'mapKey':_0x3930('0x21'),'message':{'from':getMails(_0x5cc6d8['email'],_0x5e7718[_0x3930('0x31')]),'to':_0x5cc6d8[_0x3930('0x21')],'cc':'','subject':_0x5e7718[_0x3930('0x32')]||'','messageId':_0x5e7718[_0x3930('0x33')],'inReplyTo':_0x5e7718[_0x3930('0x34')],'sentAt':moment(_0x5e7718[_0x3930('0x35')])[_0x3930('0x36')](_0x3930('0x37')),'attach':![],'attachments':[]}};if(!_0x5e7718[_0x3930('0x10')]&&!_0x5e7718[_0x3930('0x1d')]){var _0x390a7d=_[_0x3930('0x38')](_0x5e7718[_0x3930('0x15')],{'contentType':_0x3930('0x39')});if(_0x390a7d[_0x3930('0xe')]){logger['info'](util[_0x3930('0x36')](_0x3930('0x3a'),_0x5e7718[_0x3930('0x33')]));tnef[_0x3930('0x3b')](_[_0x3930('0x3c')](_0x390a7d)[_0x3930('0x2a')],function(_0x58ebb7,_0x465910){if(_0x465910){_0x5e7718[_0x3930('0x10')]=_0x465910[_0x3930('0x3d')]||_0x3930('0x3e');if(_0x465910['Attachments']){for(var _0xc5d137=0x0;_0xc5d137<_0x465910['Attachments'][_0x3930('0xe')];_0xc5d137++){var _0x4eaf27=_0x465910['Attachments'][_0xc5d137];_0x4a9d9c[_0x3930('0x1f')][_0x3930('0x15')]['push']({'filename':_0x4eaf27[_0x3930('0x3f')],'content':Buffer[_0x3930('0x31')](_0x4eaf27[_0x3930('0x40')])});}}}_0x3c251d(parseEmail(_0x5cc6d8,_0x5e7718,_0x4a9d9c));});}else{_0x5e7718[_0x3930('0x10')]='<p>Empty\x20message</p>';_0x3c251d(parseEmail(_0x5cc6d8,_0x5e7718,_0x4a9d9c));}}else{_0x3c251d(parseEmail(_0x5cc6d8,_0x5e7718,_0x4a9d9c));}};exports[_0x3930('0x41')]=function(_0x5a1a23){switch(_0x5a1a23){case _0x3930('0x42'):return _0x3930('0x43');case'yahoo':return _0x3930('0x44');case _0x3930('0x45'):return _0x3930('0x46');case _0x3930('0x47'):return _0x3930('0x48');}return _0x3930('0x49');};
\ No newline at end of file
+var _0x4c99=['message','originCc','includes','bcc','attach','attachment','attachment-','%s-%s','now','server/files/attachments/','writeFileSync','content','contentType','headerLines','Auto-Submitted:\x20auto-replied','X-Auto-Response-Suppress:\x20All','Precedence:\x20auto_reply','line','isAutoreply','parser','from','subject','messageId','inReplyTo','date','filter','application/ms-tnef','info','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','Title','Data','getHost','gmail','yahoo','imap-mail.outlook.com','outlook.office365.com','lodash','randomstring','../../../config/logger','email','value','generate','@xcally.com','head','name','address','indexOf','split','length','slice','join','Anonymous','pop','isEmpty','anonymous','html','test','<img','attachments','forEach','push','filename','replace','_IMG','\x20]</span>','body','textAsHtml','<a\x20target=\x22_blank\x22\x20','originTo'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x4c99,0x1ec));var _0x94c9=function(_0x321bb2,_0x202794){_0x321bb2=_0x321bb2-0x0;var _0x9c12ed=_0x4c99[_0x321bb2];return _0x9c12ed;};'use strict';var _=require(_0x94c9('0x0'));var moment=require('moment');var random=require(_0x94c9('0x1'));var fs=require('fs');var path=require('path');var util=require('util');var tnef=require('node-tnef');var logger=require(_0x94c9('0x2'))(_0x94c9('0x3'));var config=require('../../../config/environment');function getAddress(_0x2e39a6){var _0x244ae9=_['head'](_0x2e39a6[_0x94c9('0x4')]);return _0x244ae9&&_0x244ae9['address']?_0x244ae9['address']:'anonymous'+random[_0x94c9('0x5')](0x6)+_0x94c9('0x6');}function getFirstName(_0x3a1743){var _0x53bd2d=_[_0x94c9('0x7')](_0x3a1743[_0x94c9('0x4')]);if(_0x53bd2d&&_0x53bd2d[_0x94c9('0x8')]){if(_0x53bd2d[_0x94c9('0x8')]==_0x53bd2d[_0x94c9('0x9')]){return _0x53bd2d[_0x94c9('0x8')]['substring'](0x0,_0x53bd2d[_0x94c9('0x8')][_0x94c9('0xa')]('@'));}var _0xef9ed0=_0x53bd2d['name'][_0x94c9('0xb')](/\s+/);return _0xef9ed0[_0x94c9('0xc')]>0x1?_0xef9ed0[_0x94c9('0xd')](0x0,-0x1)[_0x94c9('0xe')]('\x20'):_0x53bd2d[_0x94c9('0x8')];}return _0x94c9('0xf');}function getLastName(_0x44a017){var _0x132e5e=_['head'](_0x44a017['value']);if(_0x132e5e&&_0x132e5e['name']){var _0x3afa3=_0x132e5e[_0x94c9('0x8')]['split'](/\s+/);return _0x3afa3[_0x94c9('0xc')]>0x1?_0x3afa3[_0x94c9('0x10')]():'';}return'';}function getMails(_0x372b66,_0x56609d){var _0x5db248='';for(var _0x447937=0x0;_0x447937<_0x56609d[_0x94c9('0x4')][_0x94c9('0xc')];_0x447937+=0x1){if(_0x56609d[_0x94c9('0x4')][_0x447937]['address']!==_0x372b66){if(!_[_0x94c9('0x11')](_0x5db248)){_0x5db248+=',';}_0x5db248+=_0x56609d[_0x94c9('0x4')][_0x447937][_0x94c9('0x8')]||_0x56609d[_0x94c9('0x4')][_0x447937][_0x94c9('0x9')]||'';_0x5db248+='\x20<';_0x5db248+=_0x56609d[_0x94c9('0x4')][_0x447937][_0x94c9('0x9')]?_0x56609d['value'][_0x447937][_0x94c9('0x9')]:_0x94c9('0x12')+random['generate'](0x6)+_0x94c9('0x6');_0x5db248+='>';}}return _0x5db248;}function parseEmail(_0x10c163,_0x114828,_0x1bb3f0){if(_0x114828[_0x94c9('0x13')]){var _0x2892d1=/<script\b[^<]*(?:(?!<\/script>)<[^<]*)*<\/script>/gi;while(_0x2892d1[_0x94c9('0x14')](_0x114828[_0x94c9('0x13')])){_0x114828[_0x94c9('0x13')]=_0x114828[_0x94c9('0x13')]['replace'](_0x2892d1,'');}if(_0x114828[_0x94c9('0x13')]['includes'](_0x94c9('0x15'))){var _0x497c31=[];_0x114828[_0x94c9('0x16')][_0x94c9('0x17')](_0x2e5398=>{_0x497c31[_0x94c9('0x18')](_0x2e5398[_0x94c9('0x19')]);});var _0x158db9=/<img.*? _SRC(.*?)[^>]+>/g;var _0x578ca5=/src="data:image\/([a-zA-Z]*);base64,([^"]*)"/g;var _0xeb9f1=_0x114828[_0x94c9('0x13')][_0x94c9('0x1a')](_0x578ca5,'_SRC');var _0x2ea850=_0xeb9f1['replace'](_0x158db9,_0x94c9('0x1b'));for(let _0x79575e=0x0;_0x79575e<_0x497c31[_0x94c9('0xc')];_0x79575e++){var _0x37b09a=_0x2ea850[_0x94c9('0x1a')](_0x94c9('0x1b'),'<span\x20style=font-weight:bold>\x20[Attachment:\x20'+_0x497c31[_0x79575e]+_0x94c9('0x1c'));_0x2ea850=_0x37b09a;}_0x114828[_0x94c9('0x13')]=_0x2ea850;}_0x1bb3f0[_0x94c9('0x1d')]=_0x114828['html'];}else{_0x1bb3f0[_0x94c9('0x1d')]=_0x114828[_0x94c9('0x1e')];}if(_0x1bb3f0[_0x94c9('0x1d')]){_0x1bb3f0[_0x94c9('0x1d')]=_0x1bb3f0['body'][_0x94c9('0x1a')](/<a\s+/gi,_0x94c9('0x1f'));}if(_0x114828['to']){_0x1bb3f0['message'][_0x94c9('0x20')]=getMails(null,_0x114828['to']);var _0x4b62ea=getMails(_0x10c163[_0x94c9('0x3')],_0x114828['to']);if(!_[_0x94c9('0x11')](_0x4b62ea)){_0x1bb3f0[_0x94c9('0x21')]['cc']+=_0x4b62ea;}}if(_0x114828['cc']){_0x1bb3f0[_0x94c9('0x21')][_0x94c9('0x22')]=getMails(null,_0x114828['cc']);var _0x589926=getMails(_0x10c163[_0x94c9('0x3')],_0x114828['cc']);if(!_[_0x94c9('0x11')](_0x589926)){if(!_[_0x94c9('0x11')](_0x1bb3f0[_0x94c9('0x21')]['cc'])){_0x1bb3f0['message']['cc']+=',';}_0x1bb3f0[_0x94c9('0x21')]['cc']+=_0x589926;}}if(!_[_0x94c9('0x23')](_0x1bb3f0['message'][_0x94c9('0x20')],_0x10c163[_0x94c9('0x3')])&&!_[_0x94c9('0x23')](_0x1bb3f0['message'][_0x94c9('0x22')],_0x10c163[_0x94c9('0x3')])){_0x1bb3f0['message'][_0x94c9('0x24')]=_0x10c163['email'];}if(_0x114828['attachments']&&_0x114828[_0x94c9('0x16')]['length']){_0x1bb3f0[_0x94c9('0x21')][_0x94c9('0x25')]=_0x114828[_0x94c9('0x16')][_0x94c9('0xc')];for(var _0x2a2db3=0x0,_0x3c6341,_0x504337,_0x34f8e6;_0x2a2db3<_0x114828[_0x94c9('0x16')][_0x94c9('0xc')];_0x2a2db3+=0x1){if(_0x114828[_0x94c9('0x16')][_0x2a2db3]['type']===_0x94c9('0x26')){_0x34f8e6=_0x114828[_0x94c9('0x16')][_0x2a2db3][_0x94c9('0x19')]||_0x94c9('0x27')+_0x2a2db3;_0x3c6341=util['format'](_0x94c9('0x28'),Date[_0x94c9('0x29')](),_0x34f8e6);_0x504337=path[_0x94c9('0xe')](config['root'],_0x94c9('0x2a'),_0x3c6341);fs[_0x94c9('0x2b')](_0x504337,_0x114828[_0x94c9('0x16')][_0x2a2db3][_0x94c9('0x2c')]);_0x1bb3f0[_0x94c9('0x21')][_0x94c9('0x16')][_0x94c9('0x18')]({'name':_0x34f8e6,'basename':_0x3c6341,'type':_0x114828[_0x94c9('0x16')][_0x2a2db3][_0x94c9('0x2d')],'filepath':_0x504337});}}}if(_0x114828[_0x94c9('0x2e')]&&_0x114828[_0x94c9('0x2e')][_0x94c9('0xc')]>0x0){var _0x3cfcc3=[_0x94c9('0x2f'),_0x94c9('0x30'),_0x94c9('0x31')];for(var _0x1117cf=0x0;_0x1117cf<_0x114828[_0x94c9('0x2e')][_0x94c9('0xc')];_0x1117cf++){var _0xd8f228=_[_0x94c9('0xa')](_0x3cfcc3,_0x114828['headerLines'][_0x1117cf][_0x94c9('0x32')]);if(_0xd8f228>=0x0){_0x1bb3f0[_0x94c9('0x33')]=!![];}}}return _0x1bb3f0;}exports[_0x94c9('0x34')]=function(_0x4ed9bd,_0x19cfe6,_0x58475c){var _0x2557a1={'from':getAddress(_0x19cfe6[_0x94c9('0x35')]),'firstName':getFirstName(_0x19cfe6[_0x94c9('0x35')]),'lastName':getLastName(_0x19cfe6['from']),'mapKey':_0x94c9('0x3'),'message':{'from':getMails(_0x4ed9bd['email'],_0x19cfe6[_0x94c9('0x35')]),'to':_0x4ed9bd[_0x94c9('0x3')],'cc':'','subject':_0x19cfe6[_0x94c9('0x36')]||'','messageId':_0x19cfe6[_0x94c9('0x37')],'inReplyTo':_0x19cfe6[_0x94c9('0x38')],'sentAt':moment(_0x19cfe6[_0x94c9('0x39')])['format']('YYYY-MM-DD\x20HH:mm:ss'),'attach':![],'attachments':[]}};if(!_0x19cfe6['html']&&!_0x19cfe6[_0x94c9('0x1e')]){var _0x32d955=_[_0x94c9('0x3a')](_0x19cfe6['attachments'],{'contentType':_0x94c9('0x3b')});if(_0x32d955['length']){logger[_0x94c9('0x3c')](util[_0x94c9('0x3d')](_0x94c9('0x3e'),_0x19cfe6[_0x94c9('0x37')]));tnef[_0x94c9('0x3f')](_[_0x94c9('0x40')](_0x32d955)[_0x94c9('0x2c')],function(_0x52ca34,_0xe800ed){if(_0xe800ed){_0x19cfe6['html']=_0xe800ed[_0x94c9('0x41')]||_0x94c9('0x42');if(_0xe800ed[_0x94c9('0x43')]){for(var _0x9db0af=0x0;_0x9db0af<_0xe800ed[_0x94c9('0x43')][_0x94c9('0xc')];_0x9db0af++){var _0x2240e1=_0xe800ed[_0x94c9('0x43')][_0x9db0af];_0x2557a1['message'][_0x94c9('0x16')][_0x94c9('0x18')]({'filename':_0x2240e1[_0x94c9('0x44')],'content':Buffer[_0x94c9('0x35')](_0x2240e1[_0x94c9('0x45')])});}}}_0x58475c(parseEmail(_0x4ed9bd,_0x19cfe6,_0x2557a1));});}else{_0x19cfe6['html']=_0x94c9('0x42');_0x58475c(parseEmail(_0x4ed9bd,_0x19cfe6,_0x2557a1));}}else{_0x58475c(parseEmail(_0x4ed9bd,_0x19cfe6,_0x2557a1));}};exports[_0x94c9('0x46')]=function(_0x5cb82d){switch(_0x5cb82d){case _0x94c9('0x47'):return'imap.gmail.com';case _0x94c9('0x48'):return'imap.mail.yahoo.com';case'hotmail':return _0x94c9('0x49');case'outlook365':return _0x94c9('0x4a');}return'127.0.0.1';};
\ No newline at end of file
index 523ae95..04e1d85 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xce13=['Imap','Smtp','exports','lodash','name','Service','key','SERV','active'];(function(_0x5159af,_0x32898b){var _0x324b8e=function(_0x2661cd){while(--_0x2661cd){_0x5159af['push'](_0x5159af['shift']());}};_0x324b8e(++_0x32898b);}(_0xce13,0x147));var _0x3ce1=function(_0x26ba79,_0xa995a3){_0x26ba79=_0x26ba79-0x0;var _0x123daf=_0xce13[_0x26ba79];return _0x123daf;};'use strict';var _=require(_0x3ce1('0x0'));function MailAccount(_0x1c0940){this['id']=_0x1c0940['id']||0x0;this[_0x3ce1('0x1')]=_0x1c0940['name']||_0x3ce1('0x2');this[_0x3ce1('0x3')]=_0x1c0940[_0x3ce1('0x3')]||_0x3ce1('0x4');this[_0x3ce1('0x5')]=_0x1c0940['active']||![];this[_0x3ce1('0x6')]=_0x1c0940[_0x3ce1('0x6')]||[];this[_0x3ce1('0x7')]=_0x1c0940[_0x3ce1('0x7')]||[];}module[_0x3ce1('0x8')]=MailAccount;
\ No newline at end of file
+var _0x158c=['active','Imap','Smtp','exports','lodash','name','Service','key','SERV'];(function(_0xe2d001,_0x4e9338){var _0x504025=function(_0x9a607b){while(--_0x9a607b){_0xe2d001['push'](_0xe2d001['shift']());}};_0x504025(++_0x4e9338);}(_0x158c,0x67));var _0xc158=function(_0x3ecf9f,_0x2ecd76){_0x3ecf9f=_0x3ecf9f-0x0;var _0x239c38=_0x158c[_0x3ecf9f];return _0x239c38;};'use strict';var _=require(_0xc158('0x0'));function MailAccount(_0x1c3134){this['id']=_0x1c3134['id']||0x0;this[_0xc158('0x1')]=_0x1c3134['name']||_0xc158('0x2');this['key']=_0x1c3134[_0xc158('0x3')]||_0xc158('0x4');this['active']=_0x1c3134[_0xc158('0x5')]||![];this[_0xc158('0x6')]=_0x1c3134['Imap']||[];this[_0xc158('0x7')]=_0x1c3134['Smtp']||[];}module[_0xc158('0x8')]=MailAccount;
\ No newline at end of file
index 8f7ee7e..90a9a49 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4450=['merge','mapKeys','hasOwnProperty','prototype','initMailAccounts','mailAccounts','isUndefined'];(function(_0xe601ac,_0x5ee7ba){var _0x2ceca0=function(_0x26fbc0){while(--_0x26fbc0){_0xe601ac['push'](_0xe601ac['shift']());}};_0x2ceca0(++_0x5ee7ba);}(_0x4450,0x15f));var _0x0445=function(_0x4270ee,_0x25096f){_0x4270ee=_0x4270ee-0x0;var _0x36e569=_0x4450[_0x4270ee];return _0x36e569;};'use strict';var _=require('lodash');var MailAccount=require('../model/mailAccount');var Realtime=function(){this['mailAccounts']={};};function freeIsNotKey(_0x30d298,_0x44ca7e,_0x48f9c8){var _0x42cc69=_[_0x0445('0x0')](_0x30d298,function(_0x4f12ca,_0x16ba85){return _0x4f12ca[_0x48f9c8];});for(var _0x1f3f89 in _0x44ca7e){if(_0x44ca7e[_0x0445('0x1')](_0x1f3f89)){if(!_0x42cc69[_0x1f3f89]){delete _0x44ca7e[_0x1f3f89];}}}}Realtime[_0x0445('0x2')]['mergeFromDatabase']=function(_0x2aedee,_0x4bdad4){for(var _0x4d1080 in _0x4bdad4){if(_0x2aedee['hasOwnProperty'](_0x4d1080)){_0x2aedee[_0x4d1080]=_0x4bdad4[_0x4d1080];}}};Realtime[_0x0445('0x2')][_0x0445('0x3')]=function(){var _0x3dbff6=this;return function(_0x560507){if(_0x560507){freeIsNotKey(_0x560507,_0x3dbff6[_0x0445('0x4')],'id');for(var _0x5f35d2=0x0,_0x59ee07={},_0xcd070={};_0x5f35d2<_0x560507['length'];_0x5f35d2+=0x1){_0x59ee07=_0x560507[_0x5f35d2];if(_[_0x0445('0x5')](_0x3dbff6[_0x0445('0x4')][_0x59ee07['id']])){_0x3dbff6[_0x0445('0x4')][_0x59ee07['id']]=new MailAccount(_0x59ee07);}else{_[_0x0445('0x6')](_0x3dbff6[_0x0445('0x4')][_0x59ee07['id']],_0x59ee07);}}}return _0x3dbff6[_0x0445('0x4')];};};module['exports']=Realtime;
\ No newline at end of file
+var _0x78ce=['lodash','mailAccounts','prototype','mergeFromDatabase','isUndefined'];(function(_0x485224,_0x28aed6){var _0x4c317e=function(_0x2eb775){while(--_0x2eb775){_0x485224['push'](_0x485224['shift']());}};_0x4c317e(++_0x28aed6);}(_0x78ce,0x1c7));var _0xe78c=function(_0x5accad,_0x5791e0){_0x5accad=_0x5accad-0x0;var _0x5768c7=_0x78ce[_0x5accad];return _0x5768c7;};'use strict';var _=require(_0xe78c('0x0'));var MailAccount=require('../model/mailAccount');var Realtime=function(){this[_0xe78c('0x1')]={};};function freeIsNotKey(_0x12704a,_0x115860,_0x235cdd){var _0x476791=_['mapKeys'](_0x12704a,function(_0x40001a,_0x63c159){return _0x40001a[_0x235cdd];});for(var _0x21fcea in _0x115860){if(_0x115860['hasOwnProperty'](_0x21fcea)){if(!_0x476791[_0x21fcea]){delete _0x115860[_0x21fcea];}}}}Realtime[_0xe78c('0x2')][_0xe78c('0x3')]=function(_0x33b659,_0x567134){for(var _0x5c9071 in _0x567134){if(_0x33b659['hasOwnProperty'](_0x5c9071)){_0x33b659[_0x5c9071]=_0x567134[_0x5c9071];}}};Realtime[_0xe78c('0x2')]['initMailAccounts']=function(){var _0x31d7fe=this;return function(_0x4ac0c3){if(_0x4ac0c3){freeIsNotKey(_0x4ac0c3,_0x31d7fe[_0xe78c('0x1')],'id');for(var _0x228652=0x0,_0x18cdef={},_0x513603={};_0x228652<_0x4ac0c3['length'];_0x228652+=0x1){_0x18cdef=_0x4ac0c3[_0x228652];if(_[_0xe78c('0x4')](_0x31d7fe[_0xe78c('0x1')][_0x18cdef['id']])){_0x31d7fe['mailAccounts'][_0x18cdef['id']]=new MailAccount(_0x18cdef);}else{_['merge'](_0x31d7fe[_0xe78c('0x1')][_0x18cdef['id']],_0x18cdef);}}}return _0x31d7fe[_0xe78c('0x1')];};};module['exports']=Realtime;
\ No newline at end of file
index 2451c9c..797b577 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xbd0a=['Request','email','active','key','ListId','TemplateId','MailServerIn','Imap','MailServerOut','Smtp','notify','NotifyMailAccount','../client'];(function(_0x4f6295,_0x385a48){var _0x2a4ccb=function(_0x35176e){while(--_0x35176e){_0x4f6295['push'](_0x4f6295['shift']());}};_0x2a4ccb(++_0x385a48);}(_0xbd0a,0x1b9));var _0xabd0=function(_0x22eae5,_0x191188){_0x22eae5=_0x22eae5-0x0;var _0x80fc64=_0xbd0a[_0x22eae5];return _0x80fc64;};'use strict';var client=require(_0xabd0('0x0'));exports['getMailAccounts']=function(){return function(){return client[_0xabd0('0x1')]('GetMailAccount',{'options':{'attributes':['id','name','service',_0xabd0('0x2'),_0xabd0('0x3'),_0xabd0('0x4'),_0xabd0('0x5'),_0xabd0('0x6')],'raw':![],'include':[{'model':_0xabd0('0x7'),'as':_0xabd0('0x8')},{'model':_0xabd0('0x9'),'as':_0xabd0('0xa')}]},'log':'getMailAccount'});};};exports[_0xabd0('0xb')]=function(_0xb60e77,_0x2b50c1){return client['Request'](_0xabd0('0xc'),{'account':{'id':_0xb60e77},'body':_0x2b50c1,'log':'NotifyMailAccount'});};
\ No newline at end of file
+var _0xbd0a=['Request','email','active','key','ListId','TemplateId','MailServerIn','Imap','MailServerOut','Smtp','notify','NotifyMailAccount','../client'];(function(_0x4d89e7,_0x8f6e0a){var _0x9926c0=function(_0x2d2e74){while(--_0x2d2e74){_0x4d89e7['push'](_0x4d89e7['shift']());}};_0x9926c0(++_0x8f6e0a);}(_0xbd0a,0x1b9));var _0xabd0=function(_0x17e653,_0x228e4d){_0x17e653=_0x17e653-0x0;var _0x1c14fe=_0xbd0a[_0x17e653];return _0x1c14fe;};'use strict';var client=require(_0xabd0('0x0'));exports['getMailAccounts']=function(){return function(){return client[_0xabd0('0x1')]('GetMailAccount',{'options':{'attributes':['id','name','service',_0xabd0('0x2'),_0xabd0('0x3'),_0xabd0('0x4'),_0xabd0('0x5'),_0xabd0('0x6')],'raw':![],'include':[{'model':_0xabd0('0x7'),'as':_0xabd0('0x8')},{'model':_0xabd0('0x9'),'as':_0xabd0('0xa')}]},'log':'getMailAccount'});};};exports[_0xabd0('0xb')]=function(_0xb60e77,_0x2b50c1){return client['Request'](_0xabd0('0xc'),{'account':{'id':_0xb60e77},'body':_0x2b50c1,'log':'NotifyMailAccount'});};
\ No newline at end of file
index 9e9ab27..91907f6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0650=['Request','ShowSetting','loginMailFrequency','../client','getSettings'];(function(_0x1205fb,_0x1819ab){var _0x450300=function(_0x155631){while(--_0x155631){_0x1205fb['push'](_0x1205fb['shift']());}};_0x450300(++_0x1819ab);}(_0x0650,0x76));var _0x0065=function(_0x5217e2,_0x15c6f1){_0x5217e2=_0x5217e2-0x0;var _0x2da0b4=_0x0650[_0x5217e2];return _0x2da0b4;};'use strict';var client=require(_0x0065('0x0'));exports[_0x0065('0x1')]=function(){return client[_0x0065('0x2')](_0x0065('0x3'),{'options':{'raw':!![],'where':{'id':0x1},'attributes':[_0x0065('0x4')]},'log':'GetSettings'});};
\ No newline at end of file
+var _0x55d5=['getSettings','Request','ShowSetting','GetSettings'];(function(_0x1efb78,_0x58772b){var _0x5e5682=function(_0x4beaac){while(--_0x4beaac){_0x1efb78['push'](_0x1efb78['shift']());}};_0x5e5682(++_0x58772b);}(_0x55d5,0xec));var _0x555d=function(_0x346737,_0x3e6081){_0x346737=_0x346737-0x0;var _0x1ade2e=_0x55d5[_0x346737];return _0x1ade2e;};'use strict';var client=require('../client');exports[_0x555d('0x0')]=function(){return client[_0x555d('0x1')](_0x555d('0x2'),{'options':{'raw':!![],'where':{'id':0x1},'attributes':['loginMailFrequency']},'log':_0x555d('0x3')});};
\ No newline at end of file
index 1697899..820a722 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(_0x57b54c,_0x54ce0d){var _0x59cc19=function(_0xa33bc6){while(--_0xa33bc6){_0x57b54c['push'](_0x57b54c['shift']());}};_0x59cc19(++_0x54ce0d);}(_0xa9e0,0x123));var _0x0a9e=function(_0xf0bcac,_0x531755){_0xf0bcac=_0xf0bcac-0x0;var _0x4e4c65=_0xa9e0[_0xf0bcac];return _0x4e4c65;};'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(_0x25bea7,_0x49ab45){_0x25bea7=_0x25bea7-0x0;var _0x175952=_0xa9e0[_0x25bea7];return _0x175952;};'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 db00ded..c9cc0ac 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xac27=['ioredis','createServer','timeout','listen','socket.io','websocket','polling','defaults','redis','localhost','adapter','socket.io-redis','../../config/triggers','default','../../config/socketio','../../config/express','../../routes','listening','log','port','exports','lodash','http','express','sticky-session'];(function(_0x1bac31,_0xa64f13){var _0x2c2781=function(_0x5b81a0){while(--_0x5b81a0){_0x1bac31['push'](_0x1bac31['shift']());}};_0x2c2781(++_0xa64f13);}(_0xac27,0x128));var _0x7ac2=function(_0x21a9d9,_0x4d5ac8){_0x21a9d9=_0x21a9d9-0x0;var _0x46adce=_0xac27[_0x21a9d9];return _0x46adce;};'use strict';var _=require(_0x7ac2('0x0'));var http=require(_0x7ac2('0x1'));var express=require(_0x7ac2('0x2'));var sticky=require(_0x7ac2('0x3'));var Redis=require(_0x7ac2('0x4'));var config=require('../../config/environment');var app=express();var server=http[_0x7ac2('0x5')](app);server[_0x7ac2('0x6')]=0xdbba0;if(sticky[_0x7ac2('0x7')](server,config['port'])){var socketio=require(_0x7ac2('0x8'))(server,{'transports':[_0x7ac2('0x9'),_0x7ac2('0xa')]});config['redis']=_[_0x7ac2('0xb')](config[_0x7ac2('0xc')],{'host':_0x7ac2('0xd'),'port':0x18eb});socketio[_0x7ac2('0xe')](require(_0x7ac2('0xf'))({'pubClient':new Redis(config[_0x7ac2('0xc')]),'subClient':new Redis(config['redis'])}));require(_0x7ac2('0x10'))[_0x7ac2('0x11')]();require(_0x7ac2('0x12'))[_0x7ac2('0x11')](socketio);require(_0x7ac2('0x13'))[_0x7ac2('0x11')](app);require(_0x7ac2('0x14'))['default'](app);}else{server['once'](_0x7ac2('0x15'),function(){console[_0x7ac2('0x16')]('Express\x20server\x20listening\x20on\x20port\x20%d!',config[_0x7ac2('0x17')]);});}exports=module[_0x7ac2('0x18')]=app;
\ No newline at end of file
+var _0x4874=['express','sticky-session','ioredis','../../config/environment','createServer','timeout','listen','port','socket.io','websocket','redis','defaults','localhost','adapter','socket.io-redis','../../config/triggers','default','../../config/socketio','once','listening','log','Express\x20server\x20listening\x20on\x20port\x20%d!','exports','lodash','http'];(function(_0x2a2485,_0x5be636){var _0x527584=function(_0x377c0a){while(--_0x377c0a){_0x2a2485['push'](_0x2a2485['shift']());}};_0x527584(++_0x5be636);}(_0x4874,0x7b));var _0x4487=function(_0x1b2ff7,_0x12a034){_0x1b2ff7=_0x1b2ff7-0x0;var _0x31656a=_0x4874[_0x1b2ff7];return _0x31656a;};'use strict';var _=require(_0x4487('0x0'));var http=require(_0x4487('0x1'));var express=require(_0x4487('0x2'));var sticky=require(_0x4487('0x3'));var Redis=require(_0x4487('0x4'));var config=require(_0x4487('0x5'));var app=express();var server=http[_0x4487('0x6')](app);server[_0x4487('0x7')]=0xdbba0;if(sticky[_0x4487('0x8')](server,config[_0x4487('0x9')])){var socketio=require(_0x4487('0xa'))(server,{'transports':[_0x4487('0xb'),'polling']});config[_0x4487('0xc')]=_[_0x4487('0xd')](config['redis'],{'host':_0x4487('0xe'),'port':0x18eb});socketio[_0x4487('0xf')](require(_0x4487('0x10'))({'pubClient':new Redis(config[_0x4487('0xc')]),'subClient':new Redis(config[_0x4487('0xc')])}));require(_0x4487('0x11'))[_0x4487('0x12')]();require(_0x4487('0x13'))[_0x4487('0x12')](socketio);require('../../config/express')[_0x4487('0x12')](app);require('../../routes')['default'](app);}else{server[_0x4487('0x14')](_0x4487('0x15'),function(){console[_0x4487('0x16')](_0x4487('0x17'),config[_0x4487('0x9')]);});}exports=module[_0x4487('0x18')]=app;
\ No newline at end of file
index ad1c026..36672cd 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4dc3=['debug','rpc','error','message','result','catch','jayson/promise','bluebird','../../config/logger','routing','client','http','request','then'];(function(_0x82d015,_0x523e8b){var _0x5c5851=function(_0x3f631a){while(--_0x3f631a){_0x82d015['push'](_0x82d015['shift']());}};_0x5c5851(++_0x523e8b);}(_0x4dc3,0xae));var _0x34dc=function(_0x98db33,_0x397f20){_0x98db33=_0x98db33-0x0;var _0x5ae63a=_0x4dc3[_0x98db33];return _0x5ae63a;};'use strict';var jayson=require(_0x34dc('0x0'));var BPromise=require(_0x34dc('0x1'));var logger=require(_0x34dc('0x2'))(_0x34dc('0x3'));var client=jayson[_0x34dc('0x4')][_0x34dc('0x5')]({'port':0x2329});client['Request']=function(_0x34f2bd,_0x17309e){return new BPromise(function(_0x3f6b1f,_0x7774a5){return client[_0x34dc('0x6')](_0x34f2bd,_0x17309e)[_0x34dc('0x7')](function(_0x2a6e56){logger[_0x34dc('0x8')](_0x34dc('0x9'),_0x34dc('0x3'),_0x34f2bd,_0x17309e,_0x2a6e56);if(_0x2a6e56[_0x34dc('0xa')]){logger[_0x34dc('0xa')](_0x34dc('0x9'),_0x34dc('0x3'),_0x34f2bd,_0x2a6e56[_0x34dc('0xa')][_0x34dc('0xb')],_0x17309e);return _0x7774a5(_0x2a6e56['error'][_0x34dc('0xb')]);}else{return _0x3f6b1f(_0x2a6e56[_0x34dc('0xc')]);}})[_0x34dc('0xd')](function(_0x3f6337){logger['error'](_0x34dc('0x9'),_0x34dc('0x3'),_0x34f2bd,_0x3f6337,_0x17309e);return _0x7774a5(_0x3f6337);});});};module['exports']=client;
\ No newline at end of file
+var _0xdc64=['error','rpc','message','result','catch','jayson/promise','bluebird','../../config/logger','routing','client','http','Request','request','debug'];(function(_0x2bf4a3,_0x42b8b1){var _0x57f376=function(_0x4401d3){while(--_0x4401d3){_0x2bf4a3['push'](_0x2bf4a3['shift']());}};_0x57f376(++_0x42b8b1);}(_0xdc64,0x1e1));var _0x4dc6=function(_0x3a705b,_0x41de4b){_0x3a705b=_0x3a705b-0x0;var _0x2dc335=_0xdc64[_0x3a705b];return _0x2dc335;};'use strict';var jayson=require(_0x4dc6('0x0'));var BPromise=require(_0x4dc6('0x1'));var logger=require(_0x4dc6('0x2'))(_0x4dc6('0x3'));var client=jayson[_0x4dc6('0x4')][_0x4dc6('0x5')]({'port':0x2329});client[_0x4dc6('0x6')]=function(_0x4e8a04,_0x4cd918){return new BPromise(function(_0x587b2d,_0x15e39f){return client[_0x4dc6('0x7')](_0x4e8a04,_0x4cd918)['then'](function(_0x478177){logger[_0x4dc6('0x8')]('rpc',_0x4dc6('0x3'),_0x4e8a04,_0x4cd918,_0x478177);if(_0x478177[_0x4dc6('0x9')]){logger['error'](_0x4dc6('0xa'),_0x4dc6('0x3'),_0x4e8a04,_0x478177['error']['message'],_0x4cd918);return _0x15e39f(_0x478177[_0x4dc6('0x9')][_0x4dc6('0xb')]);}else{return _0x587b2d(_0x478177[_0x4dc6('0xc')]);}})[_0x4dc6('0xd')](function(_0x135f5c){logger[_0x4dc6('0x9')](_0x4dc6('0xa'),_0x4dc6('0x3'),_0x4e8a04,_0x135f5c,_0x4cd918);return _0x15e39f(_0x135f5c);});});};module['exports']=client;
\ No newline at end of file
index dfb7cb2..fcfcd4d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x30eb=['resolve','then','initIntervals','getOpenchannelQueues','initOpenchannelQueues','getChatQueues','initChatQueues','getSmsQueues','getMailQueues','initMailQueues','getFaxQueues','initFaxQueues','getWhatsappQueues','initWhatsappQueues','listen','catch','log','bluebird','./server','./realtime','./rpc/interval','./rpc/openchannelQueue','./rpc/chatQueue','./rpc/smsQueue','./rpc/mailQueue','./rpc/faxQueue'];(function(_0x153e7d,_0x10a35f){var _0x3c22dd=function(_0x4d33f6){while(--_0x4d33f6){_0x153e7d['push'](_0x153e7d['shift']());}};_0x3c22dd(++_0x10a35f);}(_0x30eb,0xe1));var _0xb30e=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x30eb[_0x3dd15e];return _0x231fd0;};'use strict';var BPromise=require(_0xb30e('0x0'));var server=require(_0xb30e('0x1'));var Realtime=require(_0xb30e('0x2'));var user=require('./rpc/user');var interval=require(_0xb30e('0x3'));var openchannelQueue=require(_0xb30e('0x4'));var chatQueue=require(_0xb30e('0x5'));var smsQueue=require(_0xb30e('0x6'));var mailQueue=require(_0xb30e('0x7'));var faxQueue=require(_0xb30e('0x8'));var whatsappQueue=require('./rpc/whatsappQueue');var realtime=new Realtime();function initRealtime(){return BPromise[_0xb30e('0x9')]()[_0xb30e('0xa')](user['getAgents']())['then'](realtime['initAgents']())[_0xb30e('0xa')](interval['getIntervals']())['then'](realtime[_0xb30e('0xb')]())[_0xb30e('0xa')](openchannelQueue[_0xb30e('0xc')]())['then'](realtime[_0xb30e('0xd')]())[_0xb30e('0xa')](chatQueue[_0xb30e('0xe')]())[_0xb30e('0xa')](realtime[_0xb30e('0xf')]())[_0xb30e('0xa')](smsQueue[_0xb30e('0x10')]())['then'](realtime['initSmsQueues']())[_0xb30e('0xa')](mailQueue[_0xb30e('0x11')]())[_0xb30e('0xa')](realtime[_0xb30e('0x12')]())[_0xb30e('0xa')](faxQueue[_0xb30e('0x13')]())[_0xb30e('0xa')](realtime[_0xb30e('0x14')]())[_0xb30e('0xa')](whatsappQueue[_0xb30e('0x15')]())['then'](realtime[_0xb30e('0x16')]())[_0xb30e('0xa')](function(){return realtime;});}function main(){return server[_0xb30e('0x17')](realtime)[_0xb30e('0xa')](function(_0x443a4d){return initRealtime();})[_0xb30e('0xa')](function(_0x4666f7){return setInterval(initRealtime,0x1388);})[_0xb30e('0x18')](function(_0x38bba7){console[_0xb30e('0x19')](_0x38bba7);});}main();
\ No newline at end of file
+var _0xf6f9=['initWhatsappQueues','catch','./server','./rpc/user','./rpc/interval','./rpc/openchannelQueue','./rpc/chatQueue','./rpc/smsQueue','./rpc/mailQueue','./rpc/faxQueue','./rpc/whatsappQueue','then','getAgents','initAgents','getIntervals','initIntervals','getOpenchannelQueues','initOpenchannelQueues','initSmsQueues','getMailQueues','initMailQueues','initFaxQueues','getWhatsappQueues'];(function(_0x5e36d1,_0x471178){var _0x950b9e=function(_0x1872f3){while(--_0x1872f3){_0x5e36d1['push'](_0x5e36d1['shift']());}};_0x950b9e(++_0x471178);}(_0xf6f9,0x1b7));var _0x9f6f=function(_0x178e0b,_0x38dcd0){_0x178e0b=_0x178e0b-0x0;var _0x46eafc=_0xf6f9[_0x178e0b];return _0x46eafc;};'use strict';var BPromise=require('bluebird');var server=require(_0x9f6f('0x0'));var Realtime=require('./realtime');var user=require(_0x9f6f('0x1'));var interval=require(_0x9f6f('0x2'));var openchannelQueue=require(_0x9f6f('0x3'));var chatQueue=require(_0x9f6f('0x4'));var smsQueue=require(_0x9f6f('0x5'));var mailQueue=require(_0x9f6f('0x6'));var faxQueue=require(_0x9f6f('0x7'));var whatsappQueue=require(_0x9f6f('0x8'));var realtime=new Realtime();function initRealtime(){return BPromise['resolve']()[_0x9f6f('0x9')](user[_0x9f6f('0xa')]())[_0x9f6f('0x9')](realtime[_0x9f6f('0xb')]())['then'](interval[_0x9f6f('0xc')]())['then'](realtime[_0x9f6f('0xd')]())[_0x9f6f('0x9')](openchannelQueue[_0x9f6f('0xe')]())[_0x9f6f('0x9')](realtime[_0x9f6f('0xf')]())[_0x9f6f('0x9')](chatQueue['getChatQueues']())['then'](realtime['initChatQueues']())[_0x9f6f('0x9')](smsQueue['getSmsQueues']())[_0x9f6f('0x9')](realtime[_0x9f6f('0x10')]())[_0x9f6f('0x9')](mailQueue[_0x9f6f('0x11')]())[_0x9f6f('0x9')](realtime[_0x9f6f('0x12')]())[_0x9f6f('0x9')](faxQueue['getFaxQueues']())[_0x9f6f('0x9')](realtime[_0x9f6f('0x13')]())[_0x9f6f('0x9')](whatsappQueue[_0x9f6f('0x14')]())[_0x9f6f('0x9')](realtime[_0x9f6f('0x15')]())['then'](function(){return realtime;});}function main(){return server['listen'](realtime)[_0x9f6f('0x9')](function(_0x169d1e){return initRealtime();})[_0x9f6f('0x9')](function(_0x2a38f1){return setInterval(initRealtime,0x1388);})[_0x9f6f('0x16')](function(_0x4fd00f){console['log'](_0x4fd00f);});}main();
\ No newline at end of file
index 236214e..16284e2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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(_0x447db1,_0x2cf7fe){var _0x122772=function(_0x21b858){while(--_0x21b858){_0x447db1['push'](_0x447db1['shift']());}};_0x122772(++_0x2cf7fe);}(_0xc4aa,0x1b7));var _0xac4a=function(_0x2064e5,_0x4f6fa2){_0x2064e5=_0x2064e5-0x0;var _0x21a233=_0xc4aa[_0x2064e5];return _0x21a233;};'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
+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(_0x2dafbe,_0x5d04de){var _0x58a45a=function(_0x50ac96){while(--_0x50ac96){_0x2dafbe['push'](_0x2dafbe['shift']());}};_0x58a45a(++_0x5d04de);}(_0x1261,0x144));var _0x1126=function(_0x58c654,_0x56f774){_0x58c654=_0x58c654-0x0;var _0x1b1164=_0x1261[_0x58c654];return _0x1b1164;};'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
index a9a695a..f0d8d5f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb443=['jayson/promise','http','then','message','catch','sendMailMessage','SendMail','bluebird'];(function(_0x3a607e,_0x54d530){var _0x37b106=function(_0x1becae){while(--_0x1becae){_0x3a607e['push'](_0x3a607e['shift']());}};_0x37b106(++_0x54d530);}(_0xb443,0x10f));var _0x3b44=function(_0xda464c,_0x26e47d){_0xda464c=_0xda464c-0x0;var _0x19e222=_0xb443[_0xda464c];return _0x19e222;};'use strict';var BPromise=require(_0x3b44('0x0'));var jayson=require(_0x3b44('0x1'));var client=jayson['client'][_0x3b44('0x2')]({'port':0x232b});function request(_0x1e7a40,_0x3fe26c){return new BPromise(function(_0xad2352,_0x1861ed){return client['request'](_0x1e7a40,_0x3fe26c)[_0x3b44('0x3')](function(_0x19a3cc){if(_0x19a3cc['error']){return _0x1861ed(_0x19a3cc['error'][_0x3b44('0x4')]);}else{return _0xad2352(_0x19a3cc['result']);}})[_0x3b44('0x5')](function(_0x16b78d){return _0x1861ed(_0x16b78d);});});}exports[_0x3b44('0x6')]=function(_0x30bf36,_0x59f4ef){return request(_0x3b44('0x7'),{'account':_0x30bf36,'message':_0x59f4ef});};
\ No newline at end of file
+var _0x484f=['http','then','error','message','result','catch','SendMail','bluebird','jayson/promise','client'];(function(_0x38c89f,_0x2dcaf0){var _0x3f07ec=function(_0x51a7f8){while(--_0x51a7f8){_0x38c89f['push'](_0x38c89f['shift']());}};_0x3f07ec(++_0x2dcaf0);}(_0x484f,0xbb));var _0xf484=function(_0xd299c3,_0x4ba0f1){_0xd299c3=_0xd299c3-0x0;var _0x376574=_0x484f[_0xd299c3];return _0x376574;};'use strict';var BPromise=require(_0xf484('0x0'));var jayson=require(_0xf484('0x1'));var client=jayson[_0xf484('0x2')][_0xf484('0x3')]({'port':0x232b});function request(_0x59fe6a,_0x9fc399){return new BPromise(function(_0x1f1745,_0x4e71af){return client['request'](_0x59fe6a,_0x9fc399)[_0xf484('0x4')](function(_0x355e00){if(_0x355e00['error']){return _0x4e71af(_0x355e00[_0xf484('0x5')][_0xf484('0x6')]);}else{return _0x1f1745(_0x355e00[_0xf484('0x7')]);}})[_0xf484('0x8')](function(_0x47cae8){return _0x4e71af(_0x47cae8);});});}exports['sendMailMessage']=function(_0x582d14,_0x5b7ca9){return request(_0xf484('0x9'),{'account':_0x582d14,'message':_0x5b7ca9});};
\ No newline at end of file
index 1a1996e..d92d9f3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xfd07=['idle','updateRealtime','chat','openchannel','sms','whatsapp','length','Status','StatusTime','toNumber','format','chatCurrentCapacity','openchannelCurrentCapacity','stringify','emit','user:save','lodash','moment','defaults','redis','localhost','name','online','voicePause','chatPause','mailPause','faxPause','smsPause','openchannelPause','chatStatus','unknown','chatStatusTime','chatCapacity','mailStatus','mailStatusTime','mailCapacity','mailCurrentCapacity','faxStatus','faxStatusTime','faxCapacity','faxCurrentCapacity','smsStatus','smsStatusTime','smsCapacity','smsCurrentCapacity','whatsappStatus','whatsappStatusTime','whatsappCapacity','whatsappCurrentCapacity','openchannelStatus','openchannelStatusTime','openchannelCapacity','busy','busyQueue','md5','prototype','getChannelStatus','CurrentCapacity','Capacity','maxcapacity','working'];(function(_0x597484,_0x199340){var _0x218e64=function(_0x390d55){while(--_0x390d55){_0x597484['push'](_0x597484['shift']());}};_0x218e64(++_0x199340);}(_0xfd07,0x104));var _0x7fd0=function(_0x143cfd,_0x1a336e){_0x143cfd=_0x143cfd-0x0;var _0x2cb5f5=_0xfd07[_0x143cfd];return _0x2cb5f5;};'use strict';var _=require(_0x7fd0('0x0'));var moment=require(_0x7fd0('0x1'));var md5=require('md5');var Redis=require('ioredis');var config=require('../../../config/environment');config['redis']=_[_0x7fd0('0x2')](config[_0x7fd0('0x3')],{'host':_0x7fd0('0x4'),'port':0x18eb});var io=require('socket.io-emitter')(new Redis(config['redis']));function Agent(_0x2a7ffe){this['id']=_0x2a7ffe['id']||0x0;this[_0x7fd0('0x5')]=_0x2a7ffe[_0x7fd0('0x5')]||'';this[_0x7fd0('0x6')]=_0x2a7ffe['online']||!![];this[_0x7fd0('0x7')]=_0x2a7ffe[_0x7fd0('0x7')]||![];this[_0x7fd0('0x8')]=_0x2a7ffe['chatPause']||![];this['mailPause']=_0x2a7ffe[_0x7fd0('0x9')]||![];this['faxPause']=_0x2a7ffe[_0x7fd0('0xa')]||![];this[_0x7fd0('0xb')]=_0x2a7ffe[_0x7fd0('0xb')]||![];this[_0x7fd0('0xc')]=_0x2a7ffe[_0x7fd0('0xc')]||![];this[_0x7fd0('0xd')]=_0x7fd0('0xe');this[_0x7fd0('0xf')]=0x0;this[_0x7fd0('0x10')]=_0x2a7ffe['chatCapacity']||0x0;this['chatCurrentCapacity']=0x0;this[_0x7fd0('0x11')]=_0x7fd0('0xe');this[_0x7fd0('0x12')]=0x0;this[_0x7fd0('0x13')]=_0x2a7ffe[_0x7fd0('0x13')]||0x0;this[_0x7fd0('0x14')]=0x0;this[_0x7fd0('0x15')]='unknown';this[_0x7fd0('0x16')]=0x0;this[_0x7fd0('0x17')]=_0x2a7ffe[_0x7fd0('0x17')]||0x0;this[_0x7fd0('0x18')]=0x0;this[_0x7fd0('0x19')]=_0x7fd0('0xe');this[_0x7fd0('0x1a')]=0x0;this[_0x7fd0('0x1b')]=_0x2a7ffe['smsCapacity']||0x0;this[_0x7fd0('0x1c')]=0x0;this[_0x7fd0('0x1d')]='unknown';this[_0x7fd0('0x1e')]=0x0;this[_0x7fd0('0x1f')]=_0x2a7ffe[_0x7fd0('0x1f')]||0x0;this[_0x7fd0('0x20')]=0x0;this[_0x7fd0('0x21')]=_0x7fd0('0xe');this[_0x7fd0('0x22')]=0x0;this[_0x7fd0('0x23')]=_0x2a7ffe[_0x7fd0('0x23')]||0x0;this['openchannelCurrentCapacity']=0x0;this[_0x7fd0('0x24')]=![];this[_0x7fd0('0x25')]=undefined;this[_0x7fd0('0x26')]='';this['updateRealtime']();}Agent[_0x7fd0('0x27')][_0x7fd0('0x28')]=function(_0x5a7caf){if(this[_0x5a7caf+_0x7fd0('0x29')]>0x0){if(this[_0x5a7caf+_0x7fd0('0x2a')]>0x0&&this[_0x5a7caf+_0x7fd0('0x29')]>=this[_0x5a7caf+_0x7fd0('0x2a')]){return _0x7fd0('0x2b');}else{return _0x7fd0('0x2c');}}else{return _0x7fd0('0x2d');}};Agent[_0x7fd0('0x27')][_0x7fd0('0x2e')]=function(){var _0xb9dff6=['mail',_0x7fd0('0x2f'),_0x7fd0('0x30'),'fax',_0x7fd0('0x31'),_0x7fd0('0x32')];for(var _0x55cd93=0x0;_0x55cd93<_0xb9dff6[_0x7fd0('0x33')];_0x55cd93+=0x1){var _0x434b38=this['getChannelStatus'](_0xb9dff6[_0x55cd93]);if(this[_0xb9dff6[_0x55cd93]+_0x7fd0('0x34')]!==_0x434b38){this[_0xb9dff6[_0x55cd93]+_0x7fd0('0x35')]=_[_0x7fd0('0x36')](moment()[_0x7fd0('0x37')]('x'));}this[_0xb9dff6[_0x55cd93]+_0x7fd0('0x34')]=_0x434b38;}var _0x2d82ad={'id':this['id'],'name':this[_0x7fd0('0x5')],'online':this['online'],'voicePause':this[_0x7fd0('0x7')],'chatPause':this[_0x7fd0('0x8')],'mailPause':this[_0x7fd0('0x9')],'smsPause':this[_0x7fd0('0xb')],'faxPause':this[_0x7fd0('0xa')],'openchannelPause':this[_0x7fd0('0xc')],'chatStatus':this['chatStatus'],'chatStatusTime':this[_0x7fd0('0xf')],'chatCapacity':this['chatCapacity'],'chatCurrentCapacity':this[_0x7fd0('0x38')],'mailStatus':this[_0x7fd0('0x11')],'mailStatusTime':this[_0x7fd0('0x12')],'mailCapacity':this[_0x7fd0('0x13')],'mailCurrentCapacity':this['mailCurrentCapacity'],'faxStatus':this[_0x7fd0('0x15')],'faxStatusTime':this[_0x7fd0('0x16')],'faxCapacity':this[_0x7fd0('0x17')],'faxCurrentCapacity':this[_0x7fd0('0x18')],'smsStatus':this[_0x7fd0('0x19')],'smsStatusTime':this['smsStatusTime'],'smsCapacity':this[_0x7fd0('0x1b')],'smsCurrentCapacity':this[_0x7fd0('0x1c')],'whatsappStatus':this[_0x7fd0('0x1d')],'whatsappStatusTime':this[_0x7fd0('0x1e')],'whatsappCapacity':this[_0x7fd0('0x1f')],'whatsappCurrentCapacity':this[_0x7fd0('0x20')],'openchannelStatus':this[_0x7fd0('0x21')],'openchannelStatusTime':this[_0x7fd0('0x22')],'openchannelCapacity':this['openchannelCapacity'],'openchannelCurrentCapacity':this[_0x7fd0('0x39')],'busy':this[_0x7fd0('0x24')],'busyQueue':this['busyQueue']};var _0x29de2b=md5(JSON[_0x7fd0('0x3a')](_0x2d82ad));if(this[_0x7fd0('0x26')]!==_0x29de2b){this[_0x7fd0('0x26')]=_0x29de2b;io[_0x7fd0('0x3b')](_0x7fd0('0x3c'),_0x2d82ad);}};module['exports']=Agent;
\ No newline at end of file
+var _0x2779=['length','Status','toNumber','format','smsPause','chatCapacity','faxStatus','smsStatus','openchannelCurrentCapacity','stringify','emit','user:save','exports','lodash','moment','md5','ioredis','../../../config/environment','redis','defaults','localhost','name','online','voicePause','chatPause','mailPause','faxPause','openchannelPause','chatStatus','unknown','chatStatusTime','chatCurrentCapacity','mailStatus','mailStatusTime','mailCapacity','mailCurrentCapacity','faxStatusTime','faxCapacity','faxCurrentCapacity','smsStatusTime','smsCapacity','smsCurrentCapacity','whatsappStatusTime','whatsappCapacity','whatsappCurrentCapacity','openchannelStatus','openchannelStatusTime','openchannelCapacity','busyQueue','updateRealtime','Capacity','CurrentCapacity','maxcapacity','working','idle','prototype','mail','chat','openchannel','fax','sms','whatsapp'];(function(_0x1c3bef,_0x328de4){var _0x4693eb=function(_0x2c94e4){while(--_0x2c94e4){_0x1c3bef['push'](_0x1c3bef['shift']());}};_0x4693eb(++_0x328de4);}(_0x2779,0x143));var _0x9277=function(_0x2e6a57,_0x35a300){_0x2e6a57=_0x2e6a57-0x0;var _0x5539e6=_0x2779[_0x2e6a57];return _0x5539e6;};'use strict';var _=require(_0x9277('0x0'));var moment=require(_0x9277('0x1'));var md5=require(_0x9277('0x2'));var Redis=require(_0x9277('0x3'));var config=require(_0x9277('0x4'));config[_0x9277('0x5')]=_[_0x9277('0x6')](config[_0x9277('0x5')],{'host':_0x9277('0x7'),'port':0x18eb});var io=require('socket.io-emitter')(new Redis(config[_0x9277('0x5')]));function Agent(_0x24c860){this['id']=_0x24c860['id']||0x0;this[_0x9277('0x8')]=_0x24c860[_0x9277('0x8')]||'';this[_0x9277('0x9')]=_0x24c860[_0x9277('0x9')]||!![];this[_0x9277('0xa')]=_0x24c860[_0x9277('0xa')]||![];this['chatPause']=_0x24c860[_0x9277('0xb')]||![];this[_0x9277('0xc')]=_0x24c860['mailPause']||![];this[_0x9277('0xd')]=_0x24c860[_0x9277('0xd')]||![];this['smsPause']=_0x24c860['smsPause']||![];this[_0x9277('0xe')]=_0x24c860[_0x9277('0xe')]||![];this[_0x9277('0xf')]=_0x9277('0x10');this[_0x9277('0x11')]=0x0;this['chatCapacity']=_0x24c860['chatCapacity']||0x0;this[_0x9277('0x12')]=0x0;this[_0x9277('0x13')]=_0x9277('0x10');this[_0x9277('0x14')]=0x0;this[_0x9277('0x15')]=_0x24c860[_0x9277('0x15')]||0x0;this[_0x9277('0x16')]=0x0;this['faxStatus']=_0x9277('0x10');this[_0x9277('0x17')]=0x0;this[_0x9277('0x18')]=_0x24c860['faxCapacity']||0x0;this[_0x9277('0x19')]=0x0;this['smsStatus']=_0x9277('0x10');this[_0x9277('0x1a')]=0x0;this['smsCapacity']=_0x24c860[_0x9277('0x1b')]||0x0;this[_0x9277('0x1c')]=0x0;this['whatsappStatus']=_0x9277('0x10');this[_0x9277('0x1d')]=0x0;this[_0x9277('0x1e')]=_0x24c860['whatsappCapacity']||0x0;this[_0x9277('0x1f')]=0x0;this[_0x9277('0x20')]=_0x9277('0x10');this[_0x9277('0x21')]=0x0;this[_0x9277('0x22')]=_0x24c860[_0x9277('0x22')]||0x0;this['openchannelCurrentCapacity']=0x0;this['busy']=![];this[_0x9277('0x23')]=undefined;this[_0x9277('0x2')]='';this[_0x9277('0x24')]();}Agent['prototype']['getChannelStatus']=function(_0x1cf31f){if(this[_0x1cf31f+'CurrentCapacity']>0x0){if(this[_0x1cf31f+_0x9277('0x25')]>0x0&&this[_0x1cf31f+_0x9277('0x26')]>=this[_0x1cf31f+_0x9277('0x25')]){return _0x9277('0x27');}else{return _0x9277('0x28');}}else{return _0x9277('0x29');}};Agent[_0x9277('0x2a')][_0x9277('0x24')]=function(){var _0x50a296=[_0x9277('0x2b'),_0x9277('0x2c'),_0x9277('0x2d'),_0x9277('0x2e'),_0x9277('0x2f'),_0x9277('0x30')];for(var _0x17b5cb=0x0;_0x17b5cb<_0x50a296[_0x9277('0x31')];_0x17b5cb+=0x1){var _0x2df781=this['getChannelStatus'](_0x50a296[_0x17b5cb]);if(this[_0x50a296[_0x17b5cb]+_0x9277('0x32')]!==_0x2df781){this[_0x50a296[_0x17b5cb]+'StatusTime']=_[_0x9277('0x33')](moment()[_0x9277('0x34')]('x'));}this[_0x50a296[_0x17b5cb]+_0x9277('0x32')]=_0x2df781;}var _0xb38e21={'id':this['id'],'name':this['name'],'online':this[_0x9277('0x9')],'voicePause':this['voicePause'],'chatPause':this[_0x9277('0xb')],'mailPause':this[_0x9277('0xc')],'smsPause':this[_0x9277('0x35')],'faxPause':this[_0x9277('0xd')],'openchannelPause':this[_0x9277('0xe')],'chatStatus':this['chatStatus'],'chatStatusTime':this[_0x9277('0x11')],'chatCapacity':this[_0x9277('0x36')],'chatCurrentCapacity':this[_0x9277('0x12')],'mailStatus':this['mailStatus'],'mailStatusTime':this[_0x9277('0x14')],'mailCapacity':this[_0x9277('0x15')],'mailCurrentCapacity':this[_0x9277('0x16')],'faxStatus':this[_0x9277('0x37')],'faxStatusTime':this[_0x9277('0x17')],'faxCapacity':this[_0x9277('0x18')],'faxCurrentCapacity':this['faxCurrentCapacity'],'smsStatus':this[_0x9277('0x38')],'smsStatusTime':this['smsStatusTime'],'smsCapacity':this['smsCapacity'],'smsCurrentCapacity':this[_0x9277('0x1c')],'whatsappStatus':this['whatsappStatus'],'whatsappStatusTime':this[_0x9277('0x1d')],'whatsappCapacity':this[_0x9277('0x1e')],'whatsappCurrentCapacity':this['whatsappCurrentCapacity'],'openchannelStatus':this[_0x9277('0x20')],'openchannelStatusTime':this[_0x9277('0x21')],'openchannelCapacity':this[_0x9277('0x22')],'openchannelCurrentCapacity':this[_0x9277('0x39')],'busy':this['busy'],'busyQueue':this[_0x9277('0x23')]};var _0x2e6a91=md5(JSON[_0x9277('0x3a')](_0xb38e21));if(this[_0x9277('0x2')]!==_0x2e6a91){this['md5']=_0x2e6a91;io[_0x9277('0x3b')](_0x9277('0x3c'),_0xb38e21);}};module[_0x9277('0x3d')]=Agent;
\ No newline at end of file
index ada8028..bff44c4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe69b=['../../../config/environment','defaults','redis','socket.io-emitter','name','timeout','strategy','beepall','Agents','waiting','updateRouting','prototype','_rr','mapAgentsId','updateRealtime','length','online','loggedIn','chatPause','paused','available','format','chat:queue:%s','chat_queue:save','exports','md5','util','ioredis'];(function(_0xc872e4,_0x4d5f20){var _0x814392=function(_0x13b673){while(--_0x13b673){_0xc872e4['push'](_0xc872e4['shift']());}};_0x814392(++_0x4d5f20);}(_0xe69b,0x169));var _0xbe69=function(_0x3afec2,_0x55148d){_0x3afec2=_0x3afec2-0x0;var _0x1d7a5b=_0xe69b[_0x3afec2];return _0x1d7a5b;};'use strict';var _=require('lodash');var md5=require(_0xbe69('0x0'));var util=require(_0xbe69('0x1'));var Redis=require(_0xbe69('0x2'));var config=require(_0xbe69('0x3'));config['redis']=_[_0xbe69('0x4')](config[_0xbe69('0x5')],{'host':'localhost','port':0x18eb});var io=require(_0xbe69('0x6'))(new Redis(config[_0xbe69('0x5')]));function ChatQueue(_0x3cb1ea){this['id']=_0x3cb1ea['id']||0x0;this[_0xbe69('0x7')]=_0x3cb1ea['name']||'';this[_0xbe69('0x8')]=_0x3cb1ea[_0xbe69('0x8')]||0xa;this[_0xbe69('0x9')]=_0x3cb1ea[_0xbe69('0x9')]||_0xbe69('0xa');this[_0xbe69('0xb')]=_0x3cb1ea[_0xbe69('0xb')];this['mapAgentsId']={};this[_0xbe69('0xc')]=0x0;this[_0xbe69('0x0')]='';this[_0xbe69('0xd')]();this['updateRealtime']();}ChatQueue[_0xbe69('0xe')]['updateRouting']=function(){var _0x5bba49=this['mapAgentsId'][_0xbe69('0xf')];this['mapAgentsId']=_['map'](this['Agents'],'id');this[_0xbe69('0x10')][_0xbe69('0xf')]=_0x5bba49;};ChatQueue[_0xbe69('0xe')][_0xbe69('0x11')]=function(){this['loggedIn']=0x0;this['paused']=0x0;for(var _0x1cb3b4=0x0;_0x1cb3b4<this[_0xbe69('0xb')][_0xbe69('0x12')];_0x1cb3b4+=0x1){if(this[_0xbe69('0xb')][_0x1cb3b4][_0xbe69('0x13')]){this[_0xbe69('0x14')]+=0x1;}if(this['Agents'][_0x1cb3b4][_0xbe69('0x15')]){this[_0xbe69('0x16')]+=0x1;}}this[_0xbe69('0x17')]=this[_0xbe69('0x14')]-this[_0xbe69('0x16')];this[_0xbe69('0x17')]=this[_0xbe69('0x17')]>=0x0?this[_0xbe69('0x17')]:0x0;var _0xa7be6c={'id':this['id'],'available':this['available'],'loggedIn':this[_0xbe69('0x14')],'name':this[_0xbe69('0x7')],'paused':this['paused'],'waiting':this[_0xbe69('0xc')]};var _0x2d889d=md5(JSON['stringify'](_0xa7be6c));if(this['md5']!==_0x2d889d){this[_0xbe69('0x0')]=_0x2d889d;io['to'](util[_0xbe69('0x18')](_0xbe69('0x19'),_0xa7be6c[_0xbe69('0x7')]))['emit'](_0xbe69('0x1a'),_0xa7be6c);}};module[_0xbe69('0x1b')]=ChatQueue;
\ No newline at end of file
+var _0xc989=['waiting','md5','updateRouting','prototype','_rr','updateRealtime','loggedIn','paused','online','chatPause','available','stringify','format','chat:queue:%s','chat_queue:save','exports','util','ioredis','../../../config/environment','redis','defaults','localhost','socket.io-emitter','name','timeout','strategy','beepall','Agents','mapAgentsId'];(function(_0x14b39e,_0xd46d1f){var _0x32ef40=function(_0x6efff7){while(--_0x6efff7){_0x14b39e['push'](_0x14b39e['shift']());}};_0x32ef40(++_0xd46d1f);}(_0xc989,0x1c3));var _0x9c98=function(_0x3ab51d,_0x2fa01d){_0x3ab51d=_0x3ab51d-0x0;var _0x29a04e=_0xc989[_0x3ab51d];return _0x29a04e;};'use strict';var _=require('lodash');var md5=require('md5');var util=require(_0x9c98('0x0'));var Redis=require(_0x9c98('0x1'));var config=require(_0x9c98('0x2'));config[_0x9c98('0x3')]=_[_0x9c98('0x4')](config[_0x9c98('0x3')],{'host':_0x9c98('0x5'),'port':0x18eb});var io=require(_0x9c98('0x6'))(new Redis(config[_0x9c98('0x3')]));function ChatQueue(_0x4ecfdc){this['id']=_0x4ecfdc['id']||0x0;this[_0x9c98('0x7')]=_0x4ecfdc[_0x9c98('0x7')]||'';this[_0x9c98('0x8')]=_0x4ecfdc[_0x9c98('0x8')]||0xa;this[_0x9c98('0x9')]=_0x4ecfdc['strategy']||_0x9c98('0xa');this[_0x9c98('0xb')]=_0x4ecfdc[_0x9c98('0xb')];this[_0x9c98('0xc')]={};this[_0x9c98('0xd')]=0x0;this[_0x9c98('0xe')]='';this[_0x9c98('0xf')]();this['updateRealtime']();}ChatQueue[_0x9c98('0x10')][_0x9c98('0xf')]=function(){var _0x38ff06=this[_0x9c98('0xc')][_0x9c98('0x11')];this[_0x9c98('0xc')]=_['map'](this['Agents'],'id');this['mapAgentsId'][_0x9c98('0x11')]=_0x38ff06;};ChatQueue[_0x9c98('0x10')][_0x9c98('0x12')]=function(){this[_0x9c98('0x13')]=0x0;this[_0x9c98('0x14')]=0x0;for(var _0x22eb73=0x0;_0x22eb73<this['Agents']['length'];_0x22eb73+=0x1){if(this[_0x9c98('0xb')][_0x22eb73][_0x9c98('0x15')]){this[_0x9c98('0x13')]+=0x1;}if(this[_0x9c98('0xb')][_0x22eb73][_0x9c98('0x16')]){this[_0x9c98('0x14')]+=0x1;}}this[_0x9c98('0x17')]=this[_0x9c98('0x13')]-this[_0x9c98('0x14')];this[_0x9c98('0x17')]=this[_0x9c98('0x17')]>=0x0?this[_0x9c98('0x17')]:0x0;var _0x6ae776={'id':this['id'],'available':this[_0x9c98('0x17')],'loggedIn':this[_0x9c98('0x13')],'name':this[_0x9c98('0x7')],'paused':this[_0x9c98('0x14')],'waiting':this[_0x9c98('0xd')]};var _0x499519=md5(JSON[_0x9c98('0x18')](_0x6ae776));if(this[_0x9c98('0xe')]!==_0x499519){this['md5']=_0x499519;io['to'](util[_0x9c98('0x19')](_0x9c98('0x1a'),_0x6ae776[_0x9c98('0x7')]))['emit'](_0x9c98('0x1b'),_0x6ae776);}};module[_0x9c98('0x1c')]=ChatQueue;
\ No newline at end of file
index 220c9d1..6c7fadc 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xcc82=['online','faxPause','available','stringify','md5','fax:queue:%s','emit','exports','lodash','ioredis','../../../config/environment','redis','defaults','localhost','name','timeout','strategy','Agents','waiting','updateRouting','updateRealtime','mapAgentsId','_rr','prototype','loggedIn','paused','length'];(function(_0x3ad25a,_0x116f97){var _0x27c9ec=function(_0x24cf68){while(--_0x24cf68){_0x3ad25a['push'](_0x3ad25a['shift']());}};_0x27c9ec(++_0x116f97);}(_0xcc82,0x167));var _0x2cc8=function(_0x258fb0,_0x5362dc){_0x258fb0=_0x258fb0-0x0;var _0x4d1afe=_0xcc82[_0x258fb0];return _0x4d1afe;};'use strict';var _=require(_0x2cc8('0x0'));var md5=require('md5');var util=require('util');var Redis=require(_0x2cc8('0x1'));var config=require(_0x2cc8('0x2'));config[_0x2cc8('0x3')]=_[_0x2cc8('0x4')](config[_0x2cc8('0x3')],{'host':_0x2cc8('0x5'),'port':0x18eb});var io=require('socket.io-emitter')(new Redis(config[_0x2cc8('0x3')]));function FaxQueue(_0x33dbd7){this['id']=_0x33dbd7['id']||0x0;this[_0x2cc8('0x6')]=_0x33dbd7[_0x2cc8('0x6')]||'';this[_0x2cc8('0x7')]=_0x33dbd7['timeout']||0xa;this[_0x2cc8('0x8')]=_0x33dbd7[_0x2cc8('0x8')]||'beepall';this[_0x2cc8('0x9')]=_0x33dbd7[_0x2cc8('0x9')];this['mapAgentsId']={};this[_0x2cc8('0xa')]=0x0;this['md5']='';this[_0x2cc8('0xb')]();this[_0x2cc8('0xc')]();}FaxQueue['prototype']['updateRouting']=function(){var _0x3ac58b=this[_0x2cc8('0xd')]['_rr'];this[_0x2cc8('0xd')]=_['map'](this[_0x2cc8('0x9')],'id');this[_0x2cc8('0xd')][_0x2cc8('0xe')]=_0x3ac58b;};FaxQueue[_0x2cc8('0xf')][_0x2cc8('0xc')]=function(){this[_0x2cc8('0x10')]=0x0;this[_0x2cc8('0x11')]=0x0;for(var _0x1da3d0=0x0;_0x1da3d0<this[_0x2cc8('0x9')][_0x2cc8('0x12')];_0x1da3d0+=0x1){if(this[_0x2cc8('0x9')][_0x1da3d0][_0x2cc8('0x13')]){this[_0x2cc8('0x10')]+=0x1;}if(this['Agents'][_0x1da3d0][_0x2cc8('0x14')]){this[_0x2cc8('0x11')]+=0x1;}}this[_0x2cc8('0x15')]=this[_0x2cc8('0x10')]-this[_0x2cc8('0x11')];this[_0x2cc8('0x15')]=this[_0x2cc8('0x15')]>=0x0?this[_0x2cc8('0x15')]:0x0;var _0x58ffbe={'id':this['id'],'available':this['available'],'loggedIn':this[_0x2cc8('0x10')],'name':this['name'],'paused':this['paused'],'waiting':this[_0x2cc8('0xa')]};var _0x9bb4d1=md5(JSON[_0x2cc8('0x16')](_0x58ffbe));if(this[_0x2cc8('0x17')]!==_0x9bb4d1){this[_0x2cc8('0x17')]=_0x9bb4d1;io['to'](util['format'](_0x2cc8('0x18'),_0x58ffbe[_0x2cc8('0x6')]))[_0x2cc8('0x19')]('fax_queue:save',_0x58ffbe);}};module[_0x2cc8('0x1a')]=FaxQueue;
\ No newline at end of file
+var _0x166e=['fax_queue:save','exports','lodash','md5','util','ioredis','redis','defaults','localhost','socket.io-emitter','name','timeout','strategy','Agents','mapAgentsId','waiting','updateRouting','updateRealtime','prototype','map','paused','length','online','loggedIn','faxPause','available','fax:queue:%s'];(function(_0x19950b,_0x53d0d7){var _0x3c6b41=function(_0x3924ad){while(--_0x3924ad){_0x19950b['push'](_0x19950b['shift']());}};_0x3c6b41(++_0x53d0d7);}(_0x166e,0x1cd));var _0xe166=function(_0xd572e9,_0x2b106b){_0xd572e9=_0xd572e9-0x0;var _0x159551=_0x166e[_0xd572e9];return _0x159551;};'use strict';var _=require(_0xe166('0x0'));var md5=require(_0xe166('0x1'));var util=require(_0xe166('0x2'));var Redis=require(_0xe166('0x3'));var config=require('../../../config/environment');config[_0xe166('0x4')]=_[_0xe166('0x5')](config[_0xe166('0x4')],{'host':_0xe166('0x6'),'port':0x18eb});var io=require(_0xe166('0x7'))(new Redis(config[_0xe166('0x4')]));function FaxQueue(_0x48a8a0){this['id']=_0x48a8a0['id']||0x0;this[_0xe166('0x8')]=_0x48a8a0['name']||'';this[_0xe166('0x9')]=_0x48a8a0['timeout']||0xa;this[_0xe166('0xa')]=_0x48a8a0[_0xe166('0xa')]||'beepall';this[_0xe166('0xb')]=_0x48a8a0[_0xe166('0xb')];this[_0xe166('0xc')]={};this[_0xe166('0xd')]=0x0;this['md5']='';this[_0xe166('0xe')]();this[_0xe166('0xf')]();}FaxQueue[_0xe166('0x10')][_0xe166('0xe')]=function(){var _0x435aae=this['mapAgentsId']['_rr'];this[_0xe166('0xc')]=_[_0xe166('0x11')](this[_0xe166('0xb')],'id');this[_0xe166('0xc')]['_rr']=_0x435aae;};FaxQueue[_0xe166('0x10')][_0xe166('0xf')]=function(){this['loggedIn']=0x0;this[_0xe166('0x12')]=0x0;for(var _0x58c45e=0x0;_0x58c45e<this[_0xe166('0xb')][_0xe166('0x13')];_0x58c45e+=0x1){if(this['Agents'][_0x58c45e][_0xe166('0x14')]){this[_0xe166('0x15')]+=0x1;}if(this[_0xe166('0xb')][_0x58c45e][_0xe166('0x16')]){this['paused']+=0x1;}}this[_0xe166('0x17')]=this[_0xe166('0x15')]-this[_0xe166('0x12')];this[_0xe166('0x17')]=this[_0xe166('0x17')]>=0x0?this[_0xe166('0x17')]:0x0;var _0x1dde1c={'id':this['id'],'available':this[_0xe166('0x17')],'loggedIn':this['loggedIn'],'name':this[_0xe166('0x8')],'paused':this[_0xe166('0x12')],'waiting':this[_0xe166('0xd')]};var _0x362654=md5(JSON['stringify'](_0x1dde1c));if(this[_0xe166('0x1')]!==_0x362654){this[_0xe166('0x1')]=_0x362654;io['to'](util['format'](_0xe166('0x18'),_0x1dde1c[_0xe166('0x8')]))['emit'](_0xe166('0x19'),_0x1dde1c);}};module[_0xe166('0x1a')]=FaxQueue;
\ No newline at end of file
index a3d3c02..5826dca 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7828=['name','Intervals','exports'];(function(_0x11ce46,_0x177a85){var _0x368a1e=function(_0x425454){while(--_0x425454){_0x11ce46['push'](_0x11ce46['shift']());}};_0x368a1e(++_0x177a85);}(_0x7828,0xc0));var _0x8782=function(_0x474d67,_0x2838b9){_0x474d67=_0x474d67-0x0;var _0xdeb047=_0x7828[_0x474d67];return _0xdeb047;};'use strict';function Interval(_0x15b378){this['id']=_0x15b378['id']||0x0;this[_0x8782('0x0')]=_0x15b378[_0x8782('0x0')]||'';this['Intervals']=_0x15b378[_0x8782('0x1')]||{};}module[_0x8782('0x2')]=Interval;
\ No newline at end of file
+var _0x1f9c=['exports','name'];(function(_0x243b59,_0x3f9495){var _0x3e1676=function(_0x354052){while(--_0x354052){_0x243b59['push'](_0x243b59['shift']());}};_0x3e1676(++_0x3f9495);}(_0x1f9c,0x147));var _0xc1f9=function(_0x3833dd,_0x3180df){_0x3833dd=_0x3833dd-0x0;var _0x4fbaa0=_0x1f9c[_0x3833dd];return _0x4fbaa0;};'use strict';function Interval(_0x4d1fdb){this['id']=_0x4d1fdb['id']||0x0;this[_0xc1f9('0x0')]=_0x4d1fdb['name']||'';this['Intervals']=_0x4d1fdb['Intervals']||{};}module[_0xc1f9('0x1')]=Interval;
\ No newline at end of file
index f045761..39829eb 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xde74=['mail_queue:save','exports','md5','util','ioredis','../../../config/environment','redis','defaults','localhost','socket.io-emitter','name','timeout','strategy','beepall','Agents','mapAgentsId','waiting','updateRealtime','prototype','updateRouting','_rr','map','loggedIn','length','mailPause','paused','available','format','mail:queue:%s','emit'];(function(_0x5e8f0f,_0x545a82){var _0x45f632=function(_0x21a187){while(--_0x21a187){_0x5e8f0f['push'](_0x5e8f0f['shift']());}};_0x45f632(++_0x545a82);}(_0xde74,0x1a6));var _0x4de7=function(_0x21e1ee,_0xac3437){_0x21e1ee=_0x21e1ee-0x0;var _0x5d3d7f=_0xde74[_0x21e1ee];return _0x5d3d7f;};'use strict';var _=require('lodash');var md5=require(_0x4de7('0x0'));var util=require(_0x4de7('0x1'));var Redis=require(_0x4de7('0x2'));var config=require(_0x4de7('0x3'));config[_0x4de7('0x4')]=_[_0x4de7('0x5')](config[_0x4de7('0x4')],{'host':_0x4de7('0x6'),'port':0x18eb});var io=require(_0x4de7('0x7'))(new Redis(config['redis']));function MailQueue(_0x4a48bf){this['id']=_0x4a48bf['id']||0x0;this[_0x4de7('0x8')]=_0x4a48bf[_0x4de7('0x8')]||'';this[_0x4de7('0x9')]=_0x4a48bf[_0x4de7('0x9')]||0xa;this[_0x4de7('0xa')]=_0x4a48bf[_0x4de7('0xa')]||_0x4de7('0xb');this[_0x4de7('0xc')]=_0x4a48bf[_0x4de7('0xc')];this[_0x4de7('0xd')]={};this[_0x4de7('0xe')]=0x0;this[_0x4de7('0x0')]='';this['updateRouting']();this[_0x4de7('0xf')]();}MailQueue[_0x4de7('0x10')][_0x4de7('0x11')]=function(){var _0x4edc05=this[_0x4de7('0xd')][_0x4de7('0x12')];this[_0x4de7('0xd')]=_[_0x4de7('0x13')](this[_0x4de7('0xc')],'id');this['mapAgentsId'][_0x4de7('0x12')]=_0x4edc05;};MailQueue['prototype'][_0x4de7('0xf')]=function(){this[_0x4de7('0x14')]=0x0;this['paused']=0x0;for(var _0x1ae7f5=0x0;_0x1ae7f5<this[_0x4de7('0xc')][_0x4de7('0x15')];_0x1ae7f5+=0x1){if(this['Agents'][_0x1ae7f5]['online']){this[_0x4de7('0x14')]+=0x1;}if(this[_0x4de7('0xc')][_0x1ae7f5][_0x4de7('0x16')]){this[_0x4de7('0x17')]+=0x1;}}this['available']=this[_0x4de7('0x14')]-this[_0x4de7('0x17')];this[_0x4de7('0x18')]=this[_0x4de7('0x18')]>=0x0?this[_0x4de7('0x18')]:0x0;var _0x519ba0={'id':this['id'],'available':this[_0x4de7('0x18')],'loggedIn':this[_0x4de7('0x14')],'name':this[_0x4de7('0x8')],'paused':this[_0x4de7('0x17')],'waiting':this['waiting']};var _0x116df8=md5(JSON['stringify'](_0x519ba0));if(this['md5']!==_0x116df8){this['md5']=_0x116df8;io['to'](util[_0x4de7('0x19')](_0x4de7('0x1a'),_0x519ba0['name']))[_0x4de7('0x1b')](_0x4de7('0x1c'),_0x519ba0);}};module[_0x4de7('0x1d')]=MailQueue;
\ No newline at end of file
+var _0xf697=['_rr','map','prototype','loggedIn','paused','length','mailPause','available','stringify','mail:queue:%s','emit','mail_queue:save','exports','md5','util','ioredis','../../../config/environment','redis','defaults','localhost','socket.io-emitter','name','timeout','strategy','beepall','Agents','mapAgentsId','waiting','updateRealtime','updateRouting'];(function(_0x5b29df,_0x9f665b){var _0x9f3815=function(_0x452f1f){while(--_0x452f1f){_0x5b29df['push'](_0x5b29df['shift']());}};_0x9f3815(++_0x9f665b);}(_0xf697,0x193));var _0x7f69=function(_0x2db637,_0x3d5742){_0x2db637=_0x2db637-0x0;var _0x2aa2a8=_0xf697[_0x2db637];return _0x2aa2a8;};'use strict';var _=require('lodash');var md5=require(_0x7f69('0x0'));var util=require(_0x7f69('0x1'));var Redis=require(_0x7f69('0x2'));var config=require(_0x7f69('0x3'));config[_0x7f69('0x4')]=_[_0x7f69('0x5')](config[_0x7f69('0x4')],{'host':_0x7f69('0x6'),'port':0x18eb});var io=require(_0x7f69('0x7'))(new Redis(config['redis']));function MailQueue(_0x2ce4dc){this['id']=_0x2ce4dc['id']||0x0;this[_0x7f69('0x8')]=_0x2ce4dc[_0x7f69('0x8')]||'';this[_0x7f69('0x9')]=_0x2ce4dc[_0x7f69('0x9')]||0xa;this[_0x7f69('0xa')]=_0x2ce4dc[_0x7f69('0xa')]||_0x7f69('0xb');this[_0x7f69('0xc')]=_0x2ce4dc[_0x7f69('0xc')];this[_0x7f69('0xd')]={};this[_0x7f69('0xe')]=0x0;this[_0x7f69('0x0')]='';this['updateRouting']();this[_0x7f69('0xf')]();}MailQueue['prototype'][_0x7f69('0x10')]=function(){var _0x4e2c32=this['mapAgentsId'][_0x7f69('0x11')];this['mapAgentsId']=_[_0x7f69('0x12')](this[_0x7f69('0xc')],'id');this[_0x7f69('0xd')][_0x7f69('0x11')]=_0x4e2c32;};MailQueue[_0x7f69('0x13')]['updateRealtime']=function(){this[_0x7f69('0x14')]=0x0;this[_0x7f69('0x15')]=0x0;for(var _0x59bc6a=0x0;_0x59bc6a<this[_0x7f69('0xc')][_0x7f69('0x16')];_0x59bc6a+=0x1){if(this[_0x7f69('0xc')][_0x59bc6a]['online']){this[_0x7f69('0x14')]+=0x1;}if(this[_0x7f69('0xc')][_0x59bc6a][_0x7f69('0x17')]){this[_0x7f69('0x15')]+=0x1;}}this[_0x7f69('0x18')]=this[_0x7f69('0x14')]-this[_0x7f69('0x15')];this[_0x7f69('0x18')]=this[_0x7f69('0x18')]>=0x0?this['available']:0x0;var _0x4f5412={'id':this['id'],'available':this[_0x7f69('0x18')],'loggedIn':this['loggedIn'],'name':this['name'],'paused':this[_0x7f69('0x15')],'waiting':this[_0x7f69('0xe')]};var _0x3c656b=md5(JSON[_0x7f69('0x19')](_0x4f5412));if(this['md5']!==_0x3c656b){this[_0x7f69('0x0')]=_0x3c656b;io['to'](util['format'](_0x7f69('0x1a'),_0x4f5412[_0x7f69('0x8')]))[_0x7f69('0x1b')](_0x7f69('0x1c'),_0x4f5412);}};module[_0x7f69('0x1d')]=MailQueue;
\ No newline at end of file
index 06f3923..432364e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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(_0x48cd85,_0x27a056){var _0x358339=function(_0xd9e860){while(--_0xd9e860){_0x48cd85['push'](_0x48cd85['shift']());}};_0x358339(++_0x27a056);}(_0x814b,0x1a2));var _0xb814=function(_0x571d85,_0xda439c){_0x571d85=_0x571d85-0x0;var _0x3c2e07=_0x814b[_0x571d85];return _0x3c2e07;};'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
+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(_0x1382ec,_0x589ce9){var _0x153e92=function(_0x1b1b12){while(--_0x1b1b12){_0x1382ec['push'](_0x1382ec['shift']());}};_0x153e92(++_0x589ce9);}(_0x814b,0x1a2));var _0xb814=function(_0x6ff984,_0x52fbd1){_0x6ff984=_0x6ff984-0x0;var _0x1b8400=_0x814b[_0x6ff984];return _0x1b8400;};'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 464118f..c9c54b1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe57e=['util','ioredis','../../../config/environment','redis','socket.io-emitter','timeout','strategy','beepall','Agents','md5','updateRouting','updateRealtime','prototype','mapAgentsId','map','_rr','loggedIn','length','smsPause','paused','name','waiting','stringify','format','sms:queue:%s','sms_queue:save','lodash'];(function(_0x526f25,_0x2ff1f2){var _0x12c335=function(_0x3287b5){while(--_0x3287b5){_0x526f25['push'](_0x526f25['shift']());}};_0x12c335(++_0x2ff1f2);}(_0xe57e,0xf2));var _0xee57=function(_0x2c94cf,_0x173ea6){_0x2c94cf=_0x2c94cf-0x0;var _0x19a531=_0xe57e[_0x2c94cf];return _0x19a531;};'use strict';var _=require(_0xee57('0x0'));var md5=require('md5');var util=require(_0xee57('0x1'));var Redis=require(_0xee57('0x2'));var config=require(_0xee57('0x3'));config['redis']=_['defaults'](config[_0xee57('0x4')],{'host':'localhost','port':0x18eb});var io=require(_0xee57('0x5'))(new Redis(config[_0xee57('0x4')]));function SmsQueue(_0x19c8b2){this['id']=_0x19c8b2['id']||0x0;this['name']=_0x19c8b2['name']||'';this[_0xee57('0x6')]=_0x19c8b2[_0xee57('0x6')]||0xa;this[_0xee57('0x7')]=_0x19c8b2[_0xee57('0x7')]||_0xee57('0x8');this[_0xee57('0x9')]=_0x19c8b2[_0xee57('0x9')];this['mapAgentsId']={};this['waiting']=0x0;this[_0xee57('0xa')]='';this[_0xee57('0xb')]();this[_0xee57('0xc')]();}SmsQueue[_0xee57('0xd')][_0xee57('0xb')]=function(){var _0x3eb823=this[_0xee57('0xe')]['_rr'];this['mapAgentsId']=_[_0xee57('0xf')](this[_0xee57('0x9')],'id');this[_0xee57('0xe')][_0xee57('0x10')]=_0x3eb823;};SmsQueue[_0xee57('0xd')]['updateRealtime']=function(){this[_0xee57('0x11')]=0x0;this['paused']=0x0;for(var _0x2a807e=0x0;_0x2a807e<this['Agents'][_0xee57('0x12')];_0x2a807e+=0x1){if(this['Agents'][_0x2a807e]['online']){this[_0xee57('0x11')]+=0x1;}if(this[_0xee57('0x9')][_0x2a807e][_0xee57('0x13')]){this[_0xee57('0x14')]+=0x1;}}this['available']=this[_0xee57('0x11')]-this[_0xee57('0x14')];this['available']=this['available']>=0x0?this['available']:0x0;var _0x41e018={'id':this['id'],'available':this['available'],'loggedIn':this[_0xee57('0x11')],'name':this[_0xee57('0x15')],'paused':this[_0xee57('0x14')],'waiting':this[_0xee57('0x16')]};var _0x396318=md5(JSON[_0xee57('0x17')](_0x41e018));if(this['md5']!==_0x396318){this[_0xee57('0xa')]=_0x396318;io['to'](util[_0xee57('0x18')](_0xee57('0x19'),_0x41e018['name']))['emit'](_0xee57('0x1a'),_0x41e018);}};module['exports']=SmsQueue;
\ No newline at end of file
+var _0x1b32=['ioredis','../../../config/environment','redis','defaults','localhost','socket.io-emitter','name','timeout','strategy','mapAgentsId','waiting','updateRealtime','prototype','updateRouting','_rr','map','Agents','paused','loggedIn','smsPause','available','format','sms:queue:%s','emit','sms_queue:save','md5','util'];(function(_0x2226e1,_0xfdb16d){var _0x1303c5=function(_0x23e0de){while(--_0x23e0de){_0x2226e1['push'](_0x2226e1['shift']());}};_0x1303c5(++_0xfdb16d);}(_0x1b32,0x85));var _0x21b3=function(_0x599f41,_0x4db732){_0x599f41=_0x599f41-0x0;var _0x2e4d58=_0x1b32[_0x599f41];return _0x2e4d58;};'use strict';var _=require('lodash');var md5=require(_0x21b3('0x0'));var util=require(_0x21b3('0x1'));var Redis=require(_0x21b3('0x2'));var config=require(_0x21b3('0x3'));config[_0x21b3('0x4')]=_[_0x21b3('0x5')](config[_0x21b3('0x4')],{'host':_0x21b3('0x6'),'port':0x18eb});var io=require(_0x21b3('0x7'))(new Redis(config[_0x21b3('0x4')]));function SmsQueue(_0x124b9e){this['id']=_0x124b9e['id']||0x0;this[_0x21b3('0x8')]=_0x124b9e[_0x21b3('0x8')]||'';this[_0x21b3('0x9')]=_0x124b9e[_0x21b3('0x9')]||0xa;this['strategy']=_0x124b9e[_0x21b3('0xa')]||'beepall';this['Agents']=_0x124b9e['Agents'];this[_0x21b3('0xb')]={};this[_0x21b3('0xc')]=0x0;this['md5']='';this['updateRouting']();this[_0x21b3('0xd')]();}SmsQueue[_0x21b3('0xe')][_0x21b3('0xf')]=function(){var _0x4af5e0=this[_0x21b3('0xb')][_0x21b3('0x10')];this[_0x21b3('0xb')]=_[_0x21b3('0x11')](this[_0x21b3('0x12')],'id');this[_0x21b3('0xb')][_0x21b3('0x10')]=_0x4af5e0;};SmsQueue[_0x21b3('0xe')][_0x21b3('0xd')]=function(){this['loggedIn']=0x0;this[_0x21b3('0x13')]=0x0;for(var _0x810f46=0x0;_0x810f46<this[_0x21b3('0x12')]['length'];_0x810f46+=0x1){if(this[_0x21b3('0x12')][_0x810f46]['online']){this[_0x21b3('0x14')]+=0x1;}if(this['Agents'][_0x810f46][_0x21b3('0x15')]){this[_0x21b3('0x13')]+=0x1;}}this[_0x21b3('0x16')]=this[_0x21b3('0x14')]-this['paused'];this[_0x21b3('0x16')]=this['available']>=0x0?this[_0x21b3('0x16')]:0x0;var _0x2af6e4={'id':this['id'],'available':this[_0x21b3('0x16')],'loggedIn':this[_0x21b3('0x14')],'name':this['name'],'paused':this[_0x21b3('0x13')],'waiting':this[_0x21b3('0xc')]};var _0x3f4040=md5(JSON['stringify'](_0x2af6e4));if(this[_0x21b3('0x0')]!==_0x3f4040){this[_0x21b3('0x0')]=_0x3f4040;io['to'](util[_0x21b3('0x17')](_0x21b3('0x18'),_0x2af6e4[_0x21b3('0x8')]))[_0x21b3('0x19')](_0x21b3('0x1a'),_0x2af6e4);}};module['exports']=SmsQueue;
\ No newline at end of file
index cc2ee44..e6ed15d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb940=['../../../config/environment','redis','defaults','localhost','name','timeout','strategy','beepall','Agents','mapAgentsId','waiting','updateRouting','prototype','_rr','map','updateRealtime','loggedIn','paused','online','whatsappPause','available','format','whatsapp:queue:%s','emit','whatsapp_queue:save','exports','lodash','md5','ioredis'];(function(_0xd7c80e,_0x4c46bb){var _0xadc294=function(_0x4dd28e){while(--_0x4dd28e){_0xd7c80e['push'](_0xd7c80e['shift']());}};_0xadc294(++_0x4c46bb);}(_0xb940,0x8e));var _0x0b94=function(_0x8c0bf5,_0x2456ab){_0x8c0bf5=_0x8c0bf5-0x0;var _0x447387=_0xb940[_0x8c0bf5];return _0x447387;};'use strict';var _=require(_0x0b94('0x0'));var md5=require(_0x0b94('0x1'));var util=require('util');var Redis=require(_0x0b94('0x2'));var config=require(_0x0b94('0x3'));config[_0x0b94('0x4')]=_[_0x0b94('0x5')](config[_0x0b94('0x4')],{'host':_0x0b94('0x6'),'port':0x18eb});var io=require('socket.io-emitter')(new Redis(config['redis']));function WhatsappQueue(_0x59d185){this['id']=_0x59d185['id']||0x0;this[_0x0b94('0x7')]=_0x59d185['name']||'';this['timeout']=_0x59d185[_0x0b94('0x8')]||0xa;this[_0x0b94('0x9')]=_0x59d185[_0x0b94('0x9')]||_0x0b94('0xa');this[_0x0b94('0xb')]=_0x59d185['Agents'];this[_0x0b94('0xc')]={};this[_0x0b94('0xd')]=0x0;this[_0x0b94('0x1')]='';this[_0x0b94('0xe')]();this['updateRealtime']();}WhatsappQueue[_0x0b94('0xf')][_0x0b94('0xe')]=function(){var _0x54869d=this[_0x0b94('0xc')][_0x0b94('0x10')];this['mapAgentsId']=_[_0x0b94('0x11')](this[_0x0b94('0xb')],'id');this[_0x0b94('0xc')][_0x0b94('0x10')]=_0x54869d;};WhatsappQueue['prototype'][_0x0b94('0x12')]=function(){this[_0x0b94('0x13')]=0x0;this[_0x0b94('0x14')]=0x0;for(var _0x13ea0c=0x0;_0x13ea0c<this['Agents']['length'];_0x13ea0c+=0x1){if(this[_0x0b94('0xb')][_0x13ea0c][_0x0b94('0x15')]){this[_0x0b94('0x13')]+=0x1;}if(this[_0x0b94('0xb')][_0x13ea0c][_0x0b94('0x16')]){this[_0x0b94('0x14')]+=0x1;}}this[_0x0b94('0x17')]=this[_0x0b94('0x13')]-this[_0x0b94('0x14')];this[_0x0b94('0x17')]=this[_0x0b94('0x17')]>=0x0?this[_0x0b94('0x17')]:0x0;var _0x50676a={'id':this['id'],'available':this['available'],'loggedIn':this[_0x0b94('0x13')],'name':this['name'],'paused':this['paused'],'waiting':this['waiting']};var _0x2e5e87=md5(JSON['stringify'](_0x50676a));if(this[_0x0b94('0x1')]!==_0x2e5e87){this[_0x0b94('0x1')]=_0x2e5e87;io['to'](util[_0x0b94('0x18')](_0x0b94('0x19'),_0x50676a[_0x0b94('0x7')]))[_0x0b94('0x1a')](_0x0b94('0x1b'),_0x50676a);}};module[_0x0b94('0x1c')]=WhatsappQueue;
\ No newline at end of file
+var _0x3123=['whatsapp_queue:save','exports','md5','util','redis','localhost','socket.io-emitter','name','timeout','strategy','Agents','mapAgentsId','waiting','updateRouting','prototype','map','_rr','updateRealtime','paused','length','online','loggedIn','whatsappPause','available','stringify','format','whatsapp:queue:%s','emit'];(function(_0x3d0461,_0xeab134){var _0x5d5045=function(_0xe15a16){while(--_0xe15a16){_0x3d0461['push'](_0x3d0461['shift']());}};_0x5d5045(++_0xeab134);}(_0x3123,0x136));var _0x3312=function(_0x23d8da,_0x39e8d5){_0x23d8da=_0x23d8da-0x0;var _0x542871=_0x3123[_0x23d8da];return _0x542871;};'use strict';var _=require('lodash');var md5=require(_0x3312('0x0'));var util=require(_0x3312('0x1'));var Redis=require('ioredis');var config=require('../../../config/environment');config[_0x3312('0x2')]=_['defaults'](config[_0x3312('0x2')],{'host':_0x3312('0x3'),'port':0x18eb});var io=require(_0x3312('0x4'))(new Redis(config['redis']));function WhatsappQueue(_0x27bda2){this['id']=_0x27bda2['id']||0x0;this[_0x3312('0x5')]=_0x27bda2[_0x3312('0x5')]||'';this[_0x3312('0x6')]=_0x27bda2[_0x3312('0x6')]||0xa;this[_0x3312('0x7')]=_0x27bda2['strategy']||'beepall';this['Agents']=_0x27bda2[_0x3312('0x8')];this[_0x3312('0x9')]={};this[_0x3312('0xa')]=0x0;this[_0x3312('0x0')]='';this[_0x3312('0xb')]();this['updateRealtime']();}WhatsappQueue[_0x3312('0xc')]['updateRouting']=function(){var _0x1c7ced=this[_0x3312('0x9')]['_rr'];this[_0x3312('0x9')]=_[_0x3312('0xd')](this[_0x3312('0x8')],'id');this['mapAgentsId'][_0x3312('0xe')]=_0x1c7ced;};WhatsappQueue[_0x3312('0xc')][_0x3312('0xf')]=function(){this['loggedIn']=0x0;this[_0x3312('0x10')]=0x0;for(var _0x18a863=0x0;_0x18a863<this[_0x3312('0x8')][_0x3312('0x11')];_0x18a863+=0x1){if(this['Agents'][_0x18a863][_0x3312('0x12')]){this[_0x3312('0x13')]+=0x1;}if(this[_0x3312('0x8')][_0x18a863][_0x3312('0x14')]){this[_0x3312('0x10')]+=0x1;}}this[_0x3312('0x15')]=this['loggedIn']-this[_0x3312('0x10')];this['available']=this[_0x3312('0x15')]>=0x0?this['available']:0x0;var _0x3e0dbf={'id':this['id'],'available':this[_0x3312('0x15')],'loggedIn':this['loggedIn'],'name':this[_0x3312('0x5')],'paused':this[_0x3312('0x10')],'waiting':this['waiting']};var _0x5ba1e7=md5(JSON[_0x3312('0x16')](_0x3e0dbf));if(this[_0x3312('0x0')]!==_0x5ba1e7){this['md5']=_0x5ba1e7;io['to'](util[_0x3312('0x17')](_0x3312('0x18'),_0x3e0dbf[_0x3312('0x5')]))[_0x3312('0x19')](_0x3312('0x1a'),_0x3e0dbf);}};module[_0x3312('0x1b')]=WhatsappQueue;
\ No newline at end of file
index 39142f3..9f4a449 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(_0x321bb2,_0x202794){var _0x9c12ed=function(_0x263dd3){while(--_0x263dd3){_0x321bb2['push'](_0x321bb2['shift']());}};_0x9c12ed(++_0x202794);}(_0xa9e0,0x123));var _0x0a9e=function(_0x3c4737,_0x2329ec){_0x3c4737=_0x3c4737-0x0;var _0x2bb926=_0xa9e0[_0x3c4737];return _0x2bb926;};'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(_0x29b609,_0x19d388){_0x29b609=_0x29b609-0x0;var _0x54c952=_0xa9e0[_0x29b609];return _0x54c952;};'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 6b6a071..be89165 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd02e=['updateChatInteraction','addTags','AddTagsToChatInteraction','addTagsToChatInteraction','../client','update','UpdateChatInteraction'];(function(_0x3586d5,_0x497fc0){var _0x7ed165=function(_0x103135){while(--_0x103135){_0x3586d5['push'](_0x3586d5['shift']());}};_0x7ed165(++_0x497fc0);}(_0xd02e,0x74));var _0xed02=function(_0x2bd278,_0x59d28b){_0x2bd278=_0x2bd278-0x0;var _0x5150d7=_0xd02e[_0x2bd278];return _0x5150d7;};'use strict';var client=require(_0xed02('0x0'));exports[_0xed02('0x1')]=function(_0x596e5b,_0x329362){return client['Request'](_0xed02('0x2'),{'body':_0x329362,'options':{'where':{'id':_0x596e5b}},'log':_0xed02('0x3')});};exports[_0xed02('0x4')]=function(_0x55506c,_0x42e301){return client['Request'](_0xed02('0x5'),{'body':_0x42e301,'options':{'where':{'id':_0x55506c}},'log':_0xed02('0x6')});};
\ No newline at end of file
+var _0xe137=['addTagsToChatInteraction','update','Request','UpdateChatInteraction','updateChatInteraction','AddTagsToChatInteraction'];(function(_0x2c61f8,_0xb8a4dd){var _0x4badd1=function(_0x548e80){while(--_0x548e80){_0x2c61f8['push'](_0x2c61f8['shift']());}};_0x4badd1(++_0xb8a4dd);}(_0xe137,0x169));var _0x7e13=function(_0x3afe18,_0x26922c){_0x3afe18=_0x3afe18-0x0;var _0x19ed1f=_0xe137[_0x3afe18];return _0x19ed1f;};'use strict';var client=require('../client');exports[_0x7e13('0x0')]=function(_0x4a66bf,_0x18a7ca){return client[_0x7e13('0x1')](_0x7e13('0x2'),{'body':_0x18a7ca,'options':{'where':{'id':_0x4a66bf}},'log':_0x7e13('0x3')});};exports['addTags']=function(_0x159d14,_0x456c34){return client[_0x7e13('0x1')](_0x7e13('0x4'),{'body':_0x456c34,'options':{'where':{'id':_0x159d14}},'log':_0x7e13('0x5')});};
\ No newline at end of file
index 427f7d6..4ba2291 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4662=['../client','CreateChatMessage','createChatMessage'];(function(_0x516a4a,_0x2e9902){var _0x121d82=function(_0x8d0c19){while(--_0x8d0c19){_0x516a4a['push'](_0x516a4a['shift']());}};_0x121d82(++_0x2e9902);}(_0x4662,0x192));var _0x2466=function(_0x2d4e0f,_0x5af607){_0x2d4e0f=_0x2d4e0f-0x0;var _0x355435=_0x4662[_0x2d4e0f];return _0x355435;};'use strict';var client=require(_0x2466('0x0'));exports['create']=function(_0x1b6c8b){return client['Request'](_0x2466('0x1'),{'body':_0x1b6c8b,'log':_0x2466('0x2')});};
\ No newline at end of file
+var _0x8d3d=['CreateChatMessage','createChatMessage','Request'];(function(_0x2043c2,_0x11c3ed){var _0xb1d3c7=function(_0x1a2d00){while(--_0x1a2d00){_0x2043c2['push'](_0x2043c2['shift']());}};_0xb1d3c7(++_0x11c3ed);}(_0x8d3d,0xaa));var _0xd8d3=function(_0x4bfe02,_0x1de667){_0x4bfe02=_0x4bfe02-0x0;var _0x5ba14d=_0x8d3d[_0x4bfe02];return _0x5ba14d;};'use strict';var client=require('../client');exports['create']=function(_0x58618c){return client[_0xd8d3('0x0')](_0xd8d3('0x1'),{'body':_0x58618c,'log':_0xd8d3('0x2')});};
\ No newline at end of file
index e7a1b02..bcae048 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe574=['online','chatPause','getChatQueues','../client','Request','GetChatQueue','name','timeout','strategy','User','Agents'];(function(_0x384601,_0x2050a0){var _0x525dda=function(_0xb63eaf){while(--_0xb63eaf){_0x384601['push'](_0x384601['shift']());}};_0x525dda(++_0x2050a0);}(_0xe574,0x100));var _0x4e57=function(_0x4b055c,_0x4b870b){_0x4b055c=_0x4b055c-0x0;var _0x4b62bb=_0xe574[_0x4b055c];return _0x4b62bb;};'use strict';var client=require(_0x4e57('0x0'));exports['getChatQueues']=function(){return function(){return client[_0x4e57('0x1')](_0x4e57('0x2'),{'options':{'raw':![],'attributes':['id',_0x4e57('0x3'),_0x4e57('0x4'),_0x4e57('0x5')],'include':[{'model':_0x4e57('0x6'),'as':_0x4e57('0x7'),'attributes':['id',_0x4e57('0x3'),_0x4e57('0x8'),_0x4e57('0x9')]}]},'log':_0x4e57('0xa')});};};
\ No newline at end of file
+var _0x3d9f=['strategy','User','chatPause','../client','getChatQueues','Request','GetChatQueue','name','timeout'];(function(_0x2aa575,_0x380416){var _0x1e0f16=function(_0x510bb7){while(--_0x510bb7){_0x2aa575['push'](_0x2aa575['shift']());}};_0x1e0f16(++_0x380416);}(_0x3d9f,0xd2));var _0xf3d9=function(_0x2f5ac5,_0x1ee939){_0x2f5ac5=_0x2f5ac5-0x0;var _0x37c9a8=_0x3d9f[_0x2f5ac5];return _0x37c9a8;};'use strict';var client=require(_0xf3d9('0x0'));exports[_0xf3d9('0x1')]=function(){return function(){return client[_0xf3d9('0x2')](_0xf3d9('0x3'),{'options':{'raw':![],'attributes':['id',_0xf3d9('0x4'),_0xf3d9('0x5'),_0xf3d9('0x6')],'include':[{'model':_0xf3d9('0x7'),'as':'Agents','attributes':['id','name','online',_0xf3d9('0x8')]}]},'log':'getChatQueues'});};};
\ No newline at end of file
index 06cd31d..d6e19b3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x31c2=['UpdateChatQueueReport','DESC','../client','Request','CreateChatQueueReport','update'];(function(_0x1ccdf7,_0x215d5a){var _0x52a0ae=function(_0x40324a){while(--_0x40324a){_0x1ccdf7['push'](_0x1ccdf7['shift']());}};_0x52a0ae(++_0x215d5a);}(_0x31c2,0x98));var _0x231c=function(_0x49168a,_0x14746c){_0x49168a=_0x49168a-0x0;var _0x5bf780=_0x31c2[_0x49168a];return _0x5bf780;};'use strict';var client=require(_0x231c('0x0'));exports['create']=function(_0x59c066){return client[_0x231c('0x1')](_0x231c('0x2'),{'body':_0x59c066,'log':'CreateChatQueueReport'});};exports[_0x231c('0x3')]=function(_0x54b19e,_0x396f04){return client[_0x231c('0x1')](_0x231c('0x4'),{'body':_0x396f04,'options':{'where':{'uniqueid':_0x54b19e},'order':[['id',_0x231c('0x5')]],'limit':0x1},'log':_0x231c('0x4')});};
\ No newline at end of file
+var _0x4f17=['CreateChatQueueReport','update','UpdateChatQueueReport','../client','Request'];(function(_0x2eb0b2,_0x611103){var _0x483cbd=function(_0x428bb2){while(--_0x428bb2){_0x2eb0b2['push'](_0x2eb0b2['shift']());}};_0x483cbd(++_0x611103);}(_0x4f17,0x9e));var _0x74f1=function(_0x3eb630,_0x552586){_0x3eb630=_0x3eb630-0x0;var _0x1b840d=_0x4f17[_0x3eb630];return _0x1b840d;};'use strict';var client=require(_0x74f1('0x0'));exports['create']=function(_0xc7f009){return client[_0x74f1('0x1')]('CreateChatQueueReport',{'body':_0xc7f009,'log':_0x74f1('0x2')});};exports[_0x74f1('0x3')]=function(_0x3f16b2,_0x62251d){return client[_0x74f1('0x1')]('UpdateChatQueueReport',{'body':_0x62251d,'options':{'where':{'uniqueid':_0x3f16b2},'order':[['id','DESC']],'limit':0x1},'log':_0x74f1('0x4')});};
\ No newline at end of file
index 7a603e9..0b46390 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7a54=['Request','UpdateFaxInteraction','addTags','AddTagsToFaxInteraction','../client','update'];(function(_0xbca1b1,_0x33f0ce){var _0x4e1686=function(_0x58a80c){while(--_0x58a80c){_0xbca1b1['push'](_0xbca1b1['shift']());}};_0x4e1686(++_0x33f0ce);}(_0x7a54,0x106));var _0x47a5=function(_0x2d03c0,_0x2bd338){_0x2d03c0=_0x2d03c0-0x0;var _0x1f2d90=_0x7a54[_0x2d03c0];return _0x1f2d90;};'use strict';var client=require(_0x47a5('0x0'));exports[_0x47a5('0x1')]=function(_0x44b31e,_0x58157c){return client[_0x47a5('0x2')](_0x47a5('0x3'),{'body':_0x58157c,'options':{'where':{'id':_0x44b31e}},'log':'updateFaxInteraction'});};exports[_0x47a5('0x4')]=function(_0x11bf85,_0x2a1a7e){return client[_0x47a5('0x2')](_0x47a5('0x5'),{'body':_0x2a1a7e,'options':{'where':{'id':_0x11bf85}},'log':'addTagsToFaxInteraction'});};
\ No newline at end of file
+var _0x9957=['Request','AddTagsToFaxInteraction','addTagsToFaxInteraction','../client','update','UpdateFaxInteraction','updateFaxInteraction','addTags'];(function(_0x1c476f,_0x25fbf8){var _0x378e07=function(_0x10c791){while(--_0x10c791){_0x1c476f['push'](_0x1c476f['shift']());}};_0x378e07(++_0x25fbf8);}(_0x9957,0x93));var _0x7995=function(_0x3b380d,_0x4bf247){_0x3b380d=_0x3b380d-0x0;var _0x54502b=_0x9957[_0x3b380d];return _0x54502b;};'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 03f858b..346c91f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x292e=['../client','create','Request','CreateFaxMessage','createFaxMessage'];(function(_0x11ff06,_0x8b3a2c){var _0x1ff1c0=function(_0x415c25){while(--_0x415c25){_0x11ff06['push'](_0x11ff06['shift']());}};_0x1ff1c0(++_0x8b3a2c);}(_0x292e,0x82));var _0xe292=function(_0x138adb,_0x193fee){_0x138adb=_0x138adb-0x0;var _0x1b27f2=_0x292e[_0x138adb];return _0x1b27f2;};'use strict';var client=require(_0xe292('0x0'));exports[_0xe292('0x1')]=function(_0x39c06a){return client[_0xe292('0x2')](_0xe292('0x3'),{'body':_0x39c06a,'log':_0xe292('0x4')});};
\ No newline at end of file
+var _0x2f6a=['CreateFaxMessage','createFaxMessage','../client','create','Request'];(function(_0x30ae5e,_0x391fc4){var _0x1f2e93=function(_0x60307d){while(--_0x60307d){_0x30ae5e['push'](_0x30ae5e['shift']());}};_0x1f2e93(++_0x391fc4);}(_0x2f6a,0x66));var _0xa2f6=function(_0x5b9c78,_0x3a157b){_0x5b9c78=_0x5b9c78-0x0;var _0x129e33=_0x2f6a[_0x5b9c78];return _0x129e33;};'use strict';var client=require(_0xa2f6('0x0'));exports[_0xa2f6('0x1')]=function(_0x26d548){return client[_0xa2f6('0x2')](_0xa2f6('0x3'),{'body':_0x26d548,'log':_0xa2f6('0x4')});};
\ No newline at end of file
index 4e19a66..8b8e62c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3ab2=['online','faxPause','../client','getFaxQueues','GetFaxQueue','name','timeout','User','Agents'];(function(_0x15a1af,_0x3defcf){var _0x145a2b=function(_0x5e2c75){while(--_0x5e2c75){_0x15a1af['push'](_0x15a1af['shift']());}};_0x145a2b(++_0x3defcf);}(_0x3ab2,0xa4));var _0x23ab=function(_0x19142f,_0x76c69a){_0x19142f=_0x19142f-0x0;var _0x2e38c4=_0x3ab2[_0x19142f];return _0x2e38c4;};'use strict';var client=require(_0x23ab('0x0'));exports[_0x23ab('0x1')]=function(){return function(){return client['Request'](_0x23ab('0x2'),{'options':{'raw':![],'attributes':['id',_0x23ab('0x3'),_0x23ab('0x4'),'strategy'],'include':[{'model':_0x23ab('0x5'),'as':_0x23ab('0x6'),'attributes':['id',_0x23ab('0x3'),_0x23ab('0x7'),_0x23ab('0x8')]}]},'log':_0x23ab('0x1')});};};
\ No newline at end of file
+var _0xede7=['Request','GetFaxQueue','name','timeout','strategy','User','online','faxPause','getFaxQueues','../client'];(function(_0x5b4490,_0x14af15){var _0xb7f865=function(_0x40e0e4){while(--_0x40e0e4){_0x5b4490['push'](_0x5b4490['shift']());}};_0xb7f865(++_0x14af15);}(_0xede7,0x167));var _0x7ede=function(_0x4849f6,_0x104836){_0x4849f6=_0x4849f6-0x0;var _0x1a3dcd=_0xede7[_0x4849f6];return _0x1a3dcd;};'use strict';var client=require(_0x7ede('0x0'));exports['getFaxQueues']=function(){return function(){return client[_0x7ede('0x1')](_0x7ede('0x2'),{'options':{'raw':![],'attributes':['id',_0x7ede('0x3'),_0x7ede('0x4'),_0x7ede('0x5')],'include':[{'model':_0x7ede('0x6'),'as':'Agents','attributes':['id','name',_0x7ede('0x7'),_0x7ede('0x8')]}]},'log':_0x7ede('0x9')});};};
\ No newline at end of file
index 845119c..90e2615 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xfa3a=['update','Request','UpdateFaxQueueReport','DESC','../client','create','CreateFaxQueueReport'];(function(_0x3541dc,_0x409bc2){var _0xa3e4f=function(_0x557b67){while(--_0x557b67){_0x3541dc['push'](_0x3541dc['shift']());}};_0xa3e4f(++_0x409bc2);}(_0xfa3a,0x1d2));var _0xafa3=function(_0x557f28,_0xc7a5a6){_0x557f28=_0x557f28-0x0;var _0x2ffa93=_0xfa3a[_0x557f28];return _0x2ffa93;};'use strict';var client=require(_0xafa3('0x0'));exports[_0xafa3('0x1')]=function(_0x5315f2){return client['Request'](_0xafa3('0x2'),{'body':_0x5315f2,'log':_0xafa3('0x2')});};exports[_0xafa3('0x3')]=function(_0x142389,_0x2438fd){return client[_0xafa3('0x4')](_0xafa3('0x5'),{'body':_0x2438fd,'options':{'where':{'uniqueid':_0x142389},'order':[['id',_0xafa3('0x6')]],'limit':0x1},'log':_0xafa3('0x5')});};
\ No newline at end of file
+var _0x4ebe=['Request','update','UpdateFaxQueueReport','../client'];(function(_0x2641f9,_0x26715f){var _0x585741=function(_0x2d1462){while(--_0x2d1462){_0x2641f9['push'](_0x2641f9['shift']());}};_0x585741(++_0x26715f);}(_0x4ebe,0xdf));var _0xe4eb=function(_0x6b5e1e,_0x1944cc){_0x6b5e1e=_0x6b5e1e-0x0;var _0x139e53=_0x4ebe[_0x6b5e1e];return _0x139e53;};'use strict';var client=require(_0xe4eb('0x0'));exports['create']=function(_0x1fc547){return client[_0xe4eb('0x1')]('CreateFaxQueueReport',{'body':_0x1fc547,'log':'CreateFaxQueueReport'});};exports[_0xe4eb('0x2')]=function(_0x3d099d,_0x20e515){return client['Request']('UpdateFaxQueueReport',{'body':_0x20e515,'options':{'where':{'uniqueid':_0x3d099d},'order':[['id','DESC']],'limit':0x1},'log':_0xe4eb('0x3')});};
\ No newline at end of file
index c540717..0c2c36b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x742c=['GetInterval','name','Interval','Intervals','interval','../client','getIntervals','Request'];(function(_0x2641f9,_0x26715f){var _0x585741=function(_0x2d1462){while(--_0x2d1462){_0x2641f9['push'](_0x2641f9['shift']());}};_0x585741(++_0x26715f);}(_0x742c,0x1b5));var _0xc742=function(_0x38ced4,_0x24263f){_0x38ced4=_0x38ced4-0x0;var _0x547c07=_0x742c[_0x38ced4];return _0x547c07;};'use strict';var client=require(_0xc742('0x0'));exports[_0xc742('0x1')]=function(){return function(){return client[_0xc742('0x2')](_0xc742('0x3'),{'options':{'raw':![],'where':{'IntervalId':null},'attributes':['id',_0xc742('0x4')],'include':[{'model':_0xc742('0x5'),'as':_0xc742('0x6'),'attributes':['id','name',_0xc742('0x7')]}]},'log':_0xc742('0x1')});};};
\ No newline at end of file
+var _0x7b97=['interval','../client','GetInterval','name','Interval','Intervals'];(function(_0x5d6456,_0x58ecc7){var _0x4d66c1=function(_0x4335e3){while(--_0x4335e3){_0x5d6456['push'](_0x5d6456['shift']());}};_0x4d66c1(++_0x58ecc7);}(_0x7b97,0x19f));var _0x77b9=function(_0x24e951,_0x544ac7){_0x24e951=_0x24e951-0x0;var _0x554280=_0x7b97[_0x24e951];return _0x554280;};'use strict';var client=require(_0x77b9('0x0'));exports['getIntervals']=function(){return function(){return client['Request'](_0x77b9('0x1'),{'options':{'raw':![],'where':{'IntervalId':null},'attributes':['id',_0x77b9('0x2')],'include':[{'model':_0x77b9('0x3'),'as':_0x77b9('0x4'),'attributes':['id',_0x77b9('0x2'),_0x77b9('0x5')]}]},'log':'getIntervals'});};};
\ No newline at end of file
index 53294e4..6f97993 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe2cf=['addTags','Request','AddTagsToMailInteraction','update','UpdateMailInteraction','updateMailInteraction'];(function(_0x3fb9dd,_0x174fff){var _0x20136a=function(_0x480081){while(--_0x480081){_0x3fb9dd['push'](_0x3fb9dd['shift']());}};_0x20136a(++_0x174fff);}(_0xe2cf,0x1a1));var _0xfe2c=function(_0x3b2e0a,_0x49a3f9){_0x3b2e0a=_0x3b2e0a-0x0;var _0x4a84bd=_0xe2cf[_0x3b2e0a];return _0x4a84bd;};'use strict';var client=require('../client');exports[_0xfe2c('0x0')]=function(_0x546786,_0x11c3a4){return client['Request'](_0xfe2c('0x1'),{'body':_0x11c3a4,'options':{'where':{'id':_0x546786}},'log':_0xfe2c('0x2')});};exports[_0xfe2c('0x3')]=function(_0x11b6b8,_0x494978){return client[_0xfe2c('0x4')](_0xfe2c('0x5'),{'body':_0x494978,'options':{'where':{'id':_0x11b6b8}},'log':'addTagsToChatInteraction'});};
\ No newline at end of file
+var _0xe2cf=['addTags','Request','AddTagsToMailInteraction','update','UpdateMailInteraction','updateMailInteraction'];(function(_0x1aba25,_0x1faed1){var _0x47d997=function(_0x4f9e11){while(--_0x4f9e11){_0x1aba25['push'](_0x1aba25['shift']());}};_0x47d997(++_0x1faed1);}(_0xe2cf,0x1a1));var _0xfe2c=function(_0x32729c,_0xf5afd8){_0x32729c=_0x32729c-0x0;var _0x482cfd=_0xe2cf[_0x32729c];return _0x482cfd;};'use strict';var client=require('../client');exports[_0xfe2c('0x0')]=function(_0x546786,_0x11c3a4){return client['Request'](_0xfe2c('0x1'),{'body':_0x11c3a4,'options':{'where':{'id':_0x546786}},'log':_0xfe2c('0x2')});};exports[_0xfe2c('0x3')]=function(_0x11b6b8,_0x494978){return client[_0xfe2c('0x4')](_0xfe2c('0x5'),{'body':_0x494978,'options':{'where':{'id':_0x11b6b8}},'log':'addTagsToChatInteraction'});};
\ No newline at end of file
index 9ef9e1b..a0b70fe 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x443b=['../client','create','Request','createMailMessage'];(function(_0x409f20,_0x260ce1){var _0x43478a=function(_0x3d4efd){while(--_0x3d4efd){_0x409f20['push'](_0x409f20['shift']());}};_0x43478a(++_0x260ce1);}(_0x443b,0x188));var _0xb443=function(_0x20a584,_0xe384a5){_0x20a584=_0x20a584-0x0;var _0x4b41a8=_0x443b[_0x20a584];return _0x4b41a8;};'use strict';var client=require(_0xb443('0x0'));exports[_0xb443('0x1')]=function(_0x38fd2d){return client[_0xb443('0x2')]('CreateMailMessage',{'body':_0x38fd2d,'log':_0xb443('0x3')});};
\ No newline at end of file
+var _0xd40d=['Request','../client','create'];(function(_0xc8d900,_0x97858d){var _0xb27118=function(_0x37c95a){while(--_0x37c95a){_0xc8d900['push'](_0xc8d900['shift']());}};_0xb27118(++_0x97858d);}(_0xd40d,0x1a8));var _0xdd40=function(_0x29cb21,_0x441ba3){_0x29cb21=_0x29cb21-0x0;var _0x2c5e56=_0xd40d[_0x29cb21];return _0x2c5e56;};'use strict';var client=require(_0xdd40('0x0'));exports[_0xdd40('0x1')]=function(_0xa93b54){return client[_0xdd40('0x2')]('CreateMailMessage',{'body':_0xa93b54,'log':'createMailMessage'});};
\ No newline at end of file
index 21f4c33..e89573a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xef08=['../client','Request','GetMailQueue','timeout','strategy','User','online','getMailQueues'];(function(_0x879e31,_0x139d02){var _0x3467e8=function(_0x544fc6){while(--_0x544fc6){_0x879e31['push'](_0x879e31['shift']());}};_0x3467e8(++_0x139d02);}(_0xef08,0x1b8));var _0x8ef0=function(_0x1f3cb5,_0x1dfbda){_0x1f3cb5=_0x1f3cb5-0x0;var _0x436de6=_0xef08[_0x1f3cb5];return _0x436de6;};'use strict';var client=require(_0x8ef0('0x0'));exports['getMailQueues']=function(){return function(){return client[_0x8ef0('0x1')](_0x8ef0('0x2'),{'options':{'raw':![],'attributes':['id','name',_0x8ef0('0x3'),_0x8ef0('0x4')],'include':[{'model':_0x8ef0('0x5'),'as':'Agents','attributes':['id','name',_0x8ef0('0x6'),'mailPause']}]},'log':_0x8ef0('0x7')});};};
\ No newline at end of file
+var _0x4304=['online','mailPause','getMailQueues','Request','GetMailQueue','name','timeout','strategy'];(function(_0x2e2aa4,_0x5bb374){var _0x1aaa7b=function(_0x39bb2a){while(--_0x39bb2a){_0x2e2aa4['push'](_0x2e2aa4['shift']());}};_0x1aaa7b(++_0x5bb374);}(_0x4304,0x13a));var _0x4430=function(_0x4edb7e,_0x59581e){_0x4edb7e=_0x4edb7e-0x0;var _0x553a55=_0x4304[_0x4edb7e];return _0x553a55;};'use strict';var client=require('../client');exports[_0x4430('0x0')]=function(){return function(){return client[_0x4430('0x1')](_0x4430('0x2'),{'options':{'raw':![],'attributes':['id',_0x4430('0x3'),_0x4430('0x4'),_0x4430('0x5')],'include':[{'model':'User','as':'Agents','attributes':['id',_0x4430('0x3'),_0x4430('0x6'),_0x4430('0x7')]}]},'log':_0x4430('0x0')});};};
\ No newline at end of file
index 08dd616..b46c2ce 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xae14=['CreateMailQueueReport','UpdateMailQueueReport','DESC','../client','create','Request'];(function(_0x4dc763,_0x22bff4){var _0x292fe1=function(_0x409c8a){while(--_0x409c8a){_0x4dc763['push'](_0x4dc763['shift']());}};_0x292fe1(++_0x22bff4);}(_0xae14,0x7b));var _0x4ae1=function(_0x333683,_0x2e51dc){_0x333683=_0x333683-0x0;var _0x570c76=_0xae14[_0x333683];return _0x570c76;};'use strict';var client=require(_0x4ae1('0x0'));exports[_0x4ae1('0x1')]=function(_0x1e7837){return client[_0x4ae1('0x2')](_0x4ae1('0x3'),{'body':_0x1e7837,'log':_0x4ae1('0x3')});};exports['update']=function(_0x5efec0,_0x643fd){return client[_0x4ae1('0x2')](_0x4ae1('0x4'),{'body':_0x643fd,'options':{'where':{'uniqueid':_0x5efec0},'order':[['id',_0x4ae1('0x5')]],'limit':0x1},'log':_0x4ae1('0x4')});};
\ No newline at end of file
+var _0xa4b8=['../client','create','Request','update','DESC'];(function(_0x2aa323,_0x1c492b){var _0x17fcab=function(_0x261146){while(--_0x261146){_0x2aa323['push'](_0x2aa323['shift']());}};_0x17fcab(++_0x1c492b);}(_0xa4b8,0x104));var _0x8a4b=function(_0x37fb3a,_0x5a14ee){_0x37fb3a=_0x37fb3a-0x0;var _0x1e5c8f=_0xa4b8[_0x37fb3a];return _0x1e5c8f;};'use strict';var client=require(_0x8a4b('0x0'));exports[_0x8a4b('0x1')]=function(_0x258722){return client[_0x8a4b('0x2')]('CreateMailQueueReport',{'body':_0x258722,'log':'CreateMailQueueReport'});};exports[_0x8a4b('0x3')]=function(_0x44fee6,_0x17505f){return client[_0x8a4b('0x2')]('UpdateMailQueueReport',{'body':_0x17505f,'options':{'where':{'uniqueid':_0x44fee6},'order':[['id',_0x8a4b('0x4')]],'limit':0x1},'log':'UpdateMailQueueReport'});};
\ No newline at end of file
index 50469cb..112085e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb25d=['addTagsToChatInteraction','update','Request','UpdateOpenchannelInteraction','updateOpenchannelInteraction','addTags','AddTagsToOpenchannelInteraction'];(function(_0x159653,_0x10f5c8){var _0x5e13cf=function(_0x51d37e){while(--_0x51d37e){_0x159653['push'](_0x159653['shift']());}};_0x5e13cf(++_0x10f5c8);}(_0xb25d,0x135));var _0xdb25=function(_0xcc3caf,_0x11800f){_0xcc3caf=_0xcc3caf-0x0;var _0x5d1173=_0xb25d[_0xcc3caf];return _0x5d1173;};'use strict';var client=require('../client');exports[_0xdb25('0x0')]=function(_0xdbd12e,_0x4b4594){return client[_0xdb25('0x1')](_0xdb25('0x2'),{'body':_0x4b4594,'options':{'where':{'id':_0xdbd12e}},'log':_0xdb25('0x3')});};exports[_0xdb25('0x4')]=function(_0x487748,_0x4a67a1){return client[_0xdb25('0x1')](_0xdb25('0x5'),{'body':_0x4a67a1,'options':{'where':{'id':_0x487748}},'log':_0xdb25('0x6')});};
\ No newline at end of file
+var _0x6ec5=['addTags','Request','AddTagsToOpenchannelInteraction','addTagsToChatInteraction','../client','update'];(function(_0xa79977,_0x4f7f12){var _0x109f10=function(_0x56780f){while(--_0x56780f){_0xa79977['push'](_0xa79977['shift']());}};_0x109f10(++_0x4f7f12);}(_0x6ec5,0x88));var _0x56ec=function(_0x2dafbe,_0x5d04de){_0x2dafbe=_0x2dafbe-0x0;var _0x58a45a=_0x6ec5[_0x2dafbe];return _0x58a45a;};'use strict';var client=require(_0x56ec('0x0'));exports[_0x56ec('0x1')]=function(_0x1b2909,_0x1ebea2){return client['Request']('UpdateOpenchannelInteraction',{'body':_0x1ebea2,'options':{'where':{'id':_0x1b2909}},'log':'updateOpenchannelInteraction'});};exports[_0x56ec('0x2')]=function(_0x3ebd9a,_0x2dd735){return client[_0x56ec('0x3')](_0x56ec('0x4'),{'body':_0x2dd735,'options':{'where':{'id':_0x3ebd9a}},'log':_0x56ec('0x5')});};
\ No newline at end of file
index 4256432..bea0090 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9f2c=['create','Request','createOpenchannelMessage','../client'];(function(_0x5b4ea5,_0xb55757){var _0x3f5508=function(_0x33aaac){while(--_0x33aaac){_0x5b4ea5['push'](_0x5b4ea5['shift']());}};_0x3f5508(++_0xb55757);}(_0x9f2c,0x1a7));var _0xc9f2=function(_0x4a8b72,_0xb54e90){_0x4a8b72=_0x4a8b72-0x0;var _0x217237=_0x9f2c[_0x4a8b72];return _0x217237;};'use strict';var client=require(_0xc9f2('0x0'));exports[_0xc9f2('0x1')]=function(_0xe310a4){return client[_0xc9f2('0x2')]('CreateOpenchannelMessage',{'body':_0xe310a4,'log':_0xc9f2('0x3')});};
\ No newline at end of file
+var _0xd30c=['Request','createOpenchannelMessage','../client','create'];(function(_0x5005be,_0x24b8f3){var _0x44d883=function(_0x51ba1f){while(--_0x51ba1f){_0x5005be['push'](_0x5005be['shift']());}};_0x44d883(++_0x24b8f3);}(_0xd30c,0x1ee));var _0xcd30=function(_0x346737,_0x3e6081){_0x346737=_0x346737-0x0;var _0x1ade2e=_0xd30c[_0x346737];return _0x1ade2e;};'use strict';var client=require(_0xcd30('0x0'));exports[_0xcd30('0x1')]=function(_0x4d1ded){return client[_0xcd30('0x2')]('CreateOpenchannelMessage',{'body':_0x4d1ded,'log':_0xcd30('0x3')});};
\ No newline at end of file
index 9d3b227..e214296 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x93cc=['openchannelPause','../client','getOpenchannelQueues','Request','GetOpenchannelQueue','name','timeout','User','Agents','online'];(function(_0x5d3306,_0x6e1379){var _0x6968f7=function(_0x3f9b44){while(--_0x3f9b44){_0x5d3306['push'](_0x5d3306['shift']());}};_0x6968f7(++_0x6e1379);}(_0x93cc,0xc9));var _0xc93c=function(_0x64ac4d,_0x5bea0d){_0x64ac4d=_0x64ac4d-0x0;var _0x4ee35e=_0x93cc[_0x64ac4d];return _0x4ee35e;};'use strict';var client=require(_0xc93c('0x0'));exports[_0xc93c('0x1')]=function(){return function(){return client[_0xc93c('0x2')](_0xc93c('0x3'),{'options':{'raw':![],'attributes':['id',_0xc93c('0x4'),_0xc93c('0x5'),'strategy'],'include':[{'model':_0xc93c('0x6'),'as':_0xc93c('0x7'),'attributes':['id','name',_0xc93c('0x8'),_0xc93c('0x9')]}]},'log':_0xc93c('0x1')});};};
\ No newline at end of file
+var _0xa8d3=['online','../client','getOpenchannelQueues','Request','GetOpenchannelQueue','name','timeout','strategy','User'];(function(_0xb99e28,_0x1bbe21){var _0x559673=function(_0x2fd59a){while(--_0x2fd59a){_0xb99e28['push'](_0xb99e28['shift']());}};_0x559673(++_0x1bbe21);}(_0xa8d3,0x121));var _0x3a8d=function(_0x618414,_0x1a7a60){_0x618414=_0x618414-0x0;var _0x21c19a=_0xa8d3[_0x618414];return _0x21c19a;};'use strict';var client=require(_0x3a8d('0x0'));exports[_0x3a8d('0x1')]=function(){return function(){return client[_0x3a8d('0x2')](_0x3a8d('0x3'),{'options':{'raw':![],'attributes':['id',_0x3a8d('0x4'),_0x3a8d('0x5'),_0x3a8d('0x6')],'include':[{'model':_0x3a8d('0x7'),'as':'Agents','attributes':['id','name',_0x3a8d('0x8'),'openchannelPause']}]},'log':_0x3a8d('0x1')});};};
\ No newline at end of file
index 45c6cd7..cba115b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xfc04=['DESC','UpdateOpenchannelQueueReport','../client','Request','CreateOpenchannelQueueReport','update'];(function(_0x29c677,_0x22c87c){var _0x3e41e3=function(_0x2d9443){while(--_0x2d9443){_0x29c677['push'](_0x29c677['shift']());}};_0x3e41e3(++_0x22c87c);}(_0xfc04,0xa4));var _0x4fc0=function(_0x5985d4,_0x1001f3){_0x5985d4=_0x5985d4-0x0;var _0x5e1bb8=_0xfc04[_0x5985d4];return _0x5e1bb8;};'use strict';var client=require(_0x4fc0('0x0'));exports['create']=function(_0x1a0d48){return client[_0x4fc0('0x1')](_0x4fc0('0x2'),{'body':_0x1a0d48,'log':_0x4fc0('0x2')});};exports[_0x4fc0('0x3')]=function(_0x442ba0,_0x285864){return client[_0x4fc0('0x1')]('UpdateOpenchannelQueueReport',{'body':_0x285864,'options':{'where':{'uniqueid':_0x442ba0},'order':[['id',_0x4fc0('0x4')]],'limit':0x1},'log':_0x4fc0('0x5')});};
\ No newline at end of file
+var _0xc0d8=['Request','CreateOpenchannelQueueReport','update','UpdateOpenchannelQueueReport','DESC','../client','create'];(function(_0x46aff0,_0x122890){var _0x9d78cf=function(_0x3f14cb){while(--_0x3f14cb){_0x46aff0['push'](_0x46aff0['shift']());}};_0x9d78cf(++_0x122890);}(_0xc0d8,0x6e));var _0x8c0d=function(_0x51bcb9,_0x576ba6){_0x51bcb9=_0x51bcb9-0x0;var _0x352178=_0xc0d8[_0x51bcb9];return _0x352178;};'use strict';var client=require(_0x8c0d('0x0'));exports[_0x8c0d('0x1')]=function(_0x36ba0f){return client[_0x8c0d('0x2')]('CreateOpenchannelQueueReport',{'body':_0x36ba0f,'log':_0x8c0d('0x3')});};exports[_0x8c0d('0x4')]=function(_0x4d9e58,_0x4296e3){return client[_0x8c0d('0x2')](_0x8c0d('0x5'),{'body':_0x4296e3,'options':{'where':{'uniqueid':_0x4d9e58},'order':[['id',_0x8c0d('0x6')]],'limit':0x1},'log':'UpdateOpenchannelQueueReport'});};
\ No newline at end of file
index cf22172..742e49b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x34f8=['AddTagsToSmsInteraction','addTagsToSmsInteraction','../client','update','Request','addTags'];(function(_0x163d2e,_0x1ff261){var _0x4fbc80=function(_0x3ebcce){while(--_0x3ebcce){_0x163d2e['push'](_0x163d2e['shift']());}};_0x4fbc80(++_0x1ff261);}(_0x34f8,0x80));var _0x834f=function(_0x2497ed,_0x51ecf4){_0x2497ed=_0x2497ed-0x0;var _0x32d9d0=_0x34f8[_0x2497ed];return _0x32d9d0;};'use strict';var client=require(_0x834f('0x0'));exports[_0x834f('0x1')]=function(_0x2a7837,_0x45ec5b){return client[_0x834f('0x2')]('UpdateSmsInteraction',{'body':_0x45ec5b,'options':{'where':{'id':_0x2a7837}},'log':'updateSmsInteraction'});};exports[_0x834f('0x3')]=function(_0x92264b,_0x4d23b1){return client[_0x834f('0x2')](_0x834f('0x4'),{'body':_0x4d23b1,'options':{'where':{'id':_0x92264b}},'log':_0x834f('0x5')});};
\ No newline at end of file
+var _0xbc17=['addTags','addTagsToSmsInteraction','../client','update','Request'];(function(_0x5ad190,_0xd39c9e){var _0x518ed3=function(_0x57f03a){while(--_0x57f03a){_0x5ad190['push'](_0x5ad190['shift']());}};_0x518ed3(++_0xd39c9e);}(_0xbc17,0x1ab));var _0x7bc1=function(_0x25a787,_0x6926e7){_0x25a787=_0x25a787-0x0;var _0x37712a=_0xbc17[_0x25a787];return _0x37712a;};'use strict';var client=require(_0x7bc1('0x0'));exports[_0x7bc1('0x1')]=function(_0x5e8e5a,_0x20ed9b){return client[_0x7bc1('0x2')]('UpdateSmsInteraction',{'body':_0x20ed9b,'options':{'where':{'id':_0x5e8e5a}},'log':'updateSmsInteraction'});};exports[_0x7bc1('0x3')]=function(_0x7aa41e,_0x5dfaa8){return client[_0x7bc1('0x2')]('AddTagsToSmsInteraction',{'body':_0x5dfaa8,'options':{'where':{'id':_0x7aa41e}},'log':_0x7bc1('0x4')});};
\ No newline at end of file
index 422672a..772dd8a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6fc0=['createSmsMessage','../client','Request'];(function(_0x68c979,_0x431cff){var _0x4f0001=function(_0xa7595d){while(--_0xa7595d){_0x68c979['push'](_0x68c979['shift']());}};_0x4f0001(++_0x431cff);}(_0x6fc0,0x100));var _0x06fc=function(_0x6f4f4,_0x4c0978){_0x6f4f4=_0x6f4f4-0x0;var _0x469587=_0x6fc0[_0x6f4f4];return _0x469587;};'use strict';var client=require(_0x06fc('0x0'));exports['create']=function(_0x2f7d22){return client[_0x06fc('0x1')]('CreateSmsMessage',{'body':_0x2f7d22,'log':_0x06fc('0x2')});};
\ No newline at end of file
+var _0xb44d=['create','Request','CreateSmsMessage','../client'];(function(_0x31cc0e,_0x24ba4c){var _0x144862=function(_0x4d236e){while(--_0x4d236e){_0x31cc0e['push'](_0x31cc0e['shift']());}};_0x144862(++_0x24ba4c);}(_0xb44d,0xcf));var _0xdb44=function(_0x502c7d,_0x2f1285){_0x502c7d=_0x502c7d-0x0;var _0x30b7ed=_0xb44d[_0x502c7d];return _0x30b7ed;};'use strict';var client=require(_0xdb44('0x0'));exports[_0xdb44('0x1')]=function(_0x21f2d5){return client[_0xdb44('0x2')](_0xdb44('0x3'),{'body':_0x21f2d5,'log':'createSmsMessage'});};
\ No newline at end of file
index 9c82ffe..12918d6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0713=['getSmsQueues','Request','GetSmsQueue','name','timeout','strategy','Agents','online','smsPause'];(function(_0x3181cc,_0x28447f){var _0x547a4a=function(_0x3ede80){while(--_0x3ede80){_0x3181cc['push'](_0x3181cc['shift']());}};_0x547a4a(++_0x28447f);}(_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
+var _0xe706=['Agents','online','smsPause','../client','getSmsQueues','Request','name','timeout','strategy','User'];(function(_0x11a1a3,_0x4eaa66){var _0x11c3b6=function(_0x281ae1){while(--_0x281ae1){_0x11a1a3['push'](_0x11a1a3['shift']());}};_0x11c3b6(++_0x4eaa66);}(_0xe706,0xa3));var _0x6e70=function(_0x12e7de,_0x2b96d0){_0x12e7de=_0x12e7de-0x0;var _0x1375bf=_0xe706[_0x12e7de];return _0x1375bf;};'use strict';var client=require(_0x6e70('0x0'));exports[_0x6e70('0x1')]=function(){return function(){return client[_0x6e70('0x2')]('GetSmsQueue',{'options':{'raw':![],'attributes':['id',_0x6e70('0x3'),_0x6e70('0x4'),_0x6e70('0x5')],'include':[{'model':_0x6e70('0x6'),'as':_0x6e70('0x7'),'attributes':['id',_0x6e70('0x3'),_0x6e70('0x8'),_0x6e70('0x9')]}]},'log':_0x6e70('0x1')});};};
\ No newline at end of file
index 62c2d4f..d326bf3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9957=['../client','create','Request','CreateSmsQueueReport','update','UpdateSmsQueueReport','DESC'];(function(_0x194db2,_0x539750){var _0x15b2ca=function(_0x547963){while(--_0x547963){_0x194db2['push'](_0x194db2['shift']());}};_0x15b2ca(++_0x539750);}(_0x9957,0x93));var _0x7995=function(_0x3947c9,_0x4d6c97){_0x3947c9=_0x3947c9-0x0;var _0x2e7871=_0x9957[_0x3947c9];return _0x2e7871;};'use strict';var client=require(_0x7995('0x0'));exports[_0x7995('0x1')]=function(_0x2722a3){return client[_0x7995('0x2')]('CreateSmsQueueReport',{'body':_0x2722a3,'log':_0x7995('0x3')});};exports[_0x7995('0x4')]=function(_0x1902b4,_0x462a03){return client['Request'](_0x7995('0x5'),{'body':_0x462a03,'options':{'where':{'uniqueid':_0x1902b4},'order':[['id',_0x7995('0x6')]],'limit':0x1},'log':_0x7995('0x5')});};
\ No newline at end of file
+var _0x3e74=['CreateSmsQueueReport','UpdateSmsQueueReport','DESC','../client','Request'];(function(_0x23599f,_0x48002a){var _0x403940=function(_0x549596){while(--_0x549596){_0x23599f['push'](_0x23599f['shift']());}};_0x403940(++_0x48002a);}(_0x3e74,0x175));var _0x43e7=function(_0xe91fbd,_0x4ce994){_0xe91fbd=_0xe91fbd-0x0;var _0x170a06=_0x3e74[_0xe91fbd];return _0x170a06;};'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 23cd6b5..6a52653 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(_0x5bf18d,_0x264c55){var _0x1d6cc0=function(_0x2d69d9){while(--_0x2d69d9){_0x5bf18d['push'](_0x5bf18d['shift']());}};_0x1d6cc0(++_0x264c55);}(_0xa9e0,0x123));var _0x0a9e=function(_0x47b58b,_0x41a189){_0x47b58b=_0x47b58b-0x0;var _0x46bebe=_0xa9e0[_0x47b58b];return _0x46bebe;};'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(_0x41f324,_0x29e259){var _0x511c60=function(_0x411a04){while(--_0x411a04){_0x41f324['push'](_0x41f324['shift']());}};_0x511c60(++_0x29e259);}(_0xa9e0,0x123));var _0x0a9e=function(_0x2576d7,_0x167624){_0x2576d7=_0x2576d7-0x0;var _0x16a08c=_0xa9e0[_0x2576d7];return _0x16a08c;};'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 8c28737..6bfd9c1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb46f=['Request','UpdateWhatsappInteraction','updateWhatsappInteraction','addTags','AddTagsToWhatsappInteraction','addTagsToWhatsappInteraction','../client','update'];(function(_0x56a2af,_0x261833){var _0x522672=function(_0x116625){while(--_0x116625){_0x56a2af['push'](_0x56a2af['shift']());}};_0x522672(++_0x261833);}(_0xb46f,0xb6));var _0xfb46=function(_0xbcf825,_0x24614f){_0xbcf825=_0xbcf825-0x0;var _0x22986e=_0xb46f[_0xbcf825];return _0x22986e;};'use strict';var client=require(_0xfb46('0x0'));exports[_0xfb46('0x1')]=function(_0x5f2971,_0x4db7cc){return client[_0xfb46('0x2')](_0xfb46('0x3'),{'body':_0x4db7cc,'options':{'where':{'id':_0x5f2971}},'log':_0xfb46('0x4')});};exports[_0xfb46('0x5')]=function(_0x4fb0bb,_0x95533e){return client['Request'](_0xfb46('0x6'),{'body':_0x95533e,'options':{'where':{'id':_0x4fb0bb}},'log':_0xfb46('0x7')});};
\ No newline at end of file
+var _0x4279=['addTagsToWhatsappInteraction','update','Request','UpdateWhatsappInteraction','updateWhatsappInteraction','addTags','AddTagsToWhatsappInteraction'];(function(_0x1bee9b,_0x3cc78e){var _0xe1e9c6=function(_0x258827){while(--_0x258827){_0x1bee9b['push'](_0x1bee9b['shift']());}};_0xe1e9c6(++_0x3cc78e);}(_0x4279,0x8d));var _0x9427=function(_0x3bd156,_0x31de23){_0x3bd156=_0x3bd156-0x0;var _0x47e2f0=_0x4279[_0x3bd156];return _0x47e2f0;};'use strict';var client=require('../client');exports[_0x9427('0x0')]=function(_0x218ae7,_0x594cbc){return client[_0x9427('0x1')](_0x9427('0x2'),{'body':_0x594cbc,'options':{'where':{'id':_0x218ae7}},'log':_0x9427('0x3')});};exports[_0x9427('0x4')]=function(_0x54cdfb,_0x426911){return client['Request'](_0x9427('0x5'),{'body':_0x426911,'options':{'where':{'id':_0x54cdfb}},'log':_0x9427('0x6')});};
\ No newline at end of file
index c0dde12..aca8b82 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x17d5=['../client','create','CreateWhatsappMessage','createWhatsappMessage'];(function(_0x1e7f2b,_0x1b527a){var _0x23464a=function(_0x5c652d){while(--_0x5c652d){_0x1e7f2b['push'](_0x1e7f2b['shift']());}};_0x23464a(++_0x1b527a);}(_0x17d5,0x11c));var _0x517d=function(_0x2a35ba,_0x32f27e){_0x2a35ba=_0x2a35ba-0x0;var _0xe99deb=_0x17d5[_0x2a35ba];return _0xe99deb;};'use strict';var client=require(_0x517d('0x0'));exports[_0x517d('0x1')]=function(_0x427faf){return client['Request'](_0x517d('0x2'),{'body':_0x427faf,'log':_0x517d('0x3')});};
\ No newline at end of file
+var _0x735d=['createWhatsappMessage'];(function(_0x4c8454,_0x3f0e7a){var _0x1b0cb2=function(_0x217513){while(--_0x217513){_0x4c8454['push'](_0x4c8454['shift']());}};_0x1b0cb2(++_0x3f0e7a);}(_0x735d,0x12d));var _0xd735=function(_0x4a82ac,_0x1fb931){_0x4a82ac=_0x4a82ac-0x0;var _0x58ee97=_0x735d[_0x4a82ac];return _0x58ee97;};'use strict';var client=require('../client');exports['create']=function(_0x36a33a){return client['Request']('CreateWhatsappMessage',{'body':_0x36a33a,'log':_0xd735('0x0')});};
\ No newline at end of file
index 66d027c..5d21cc4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc35c=['GetWhatsappQueue','name','strategy','User','online','whatsappPause','../client','getWhatsappQueues'];(function(_0x17406a,_0x1e2320){var _0x1501ff=function(_0x4b075a){while(--_0x4b075a){_0x17406a['push'](_0x17406a['shift']());}};_0x1501ff(++_0x1e2320);}(_0xc35c,0x116));var _0xcc35=function(_0x20d8b0,_0x3b7c24){_0x20d8b0=_0x20d8b0-0x0;var _0x13985e=_0xc35c[_0x20d8b0];return _0x13985e;};'use strict';var client=require(_0xcc35('0x0'));exports[_0xcc35('0x1')]=function(){return function(){return client['Request'](_0xcc35('0x2'),{'options':{'raw':![],'attributes':['id',_0xcc35('0x3'),'timeout',_0xcc35('0x4')],'include':[{'model':_0xcc35('0x5'),'as':'Agents','attributes':['id',_0xcc35('0x3'),_0xcc35('0x6'),_0xcc35('0x7')]}]},'log':_0xcc35('0x1')});};};
\ No newline at end of file
+var _0x71d5=['User','Agents','online','whatsappPause','getWhatsappQueues','../client','GetWhatsappQueue','name','strategy'];(function(_0x543cc,_0x2d3555){var _0x173c0a=function(_0x47f726){while(--_0x47f726){_0x543cc['push'](_0x543cc['shift']());}};_0x173c0a(++_0x2d3555);}(_0x71d5,0x11c));var _0x571d=function(_0x3eb713,_0x437874){_0x3eb713=_0x3eb713-0x0;var _0x1d7128=_0x71d5[_0x3eb713];return _0x1d7128;};'use strict';var client=require(_0x571d('0x0'));exports['getWhatsappQueues']=function(){return function(){return client['Request'](_0x571d('0x1'),{'options':{'raw':![],'attributes':['id',_0x571d('0x2'),'timeout',_0x571d('0x3')],'include':[{'model':_0x571d('0x4'),'as':_0x571d('0x5'),'attributes':['id',_0x571d('0x2'),_0x571d('0x6'),_0x571d('0x7')]}]},'log':_0x571d('0x8')});};};
\ No newline at end of file
index 8c5c062..a789a1a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xfbc8=['DESC','create','Request','CreateWhatsappQueueReport','update','UpdateWhatsappQueueReport'];(function(_0x11ec6c,_0x1a8169){var _0xb59506=function(_0x58e31d){while(--_0x58e31d){_0x11ec6c['push'](_0x11ec6c['shift']());}};_0xb59506(++_0x1a8169);}(_0xfbc8,0x127));var _0x8fbc=function(_0x978971,_0x4ca3cb){_0x978971=_0x978971-0x0;var _0x48572f=_0xfbc8[_0x978971];return _0x48572f;};'use strict';var client=require('../client');exports[_0x8fbc('0x0')]=function(_0x1d746c){return client[_0x8fbc('0x1')](_0x8fbc('0x2'),{'body':_0x1d746c,'log':_0x8fbc('0x2')});};exports[_0x8fbc('0x3')]=function(_0x257ea7,_0x2f9efc){return client[_0x8fbc('0x1')](_0x8fbc('0x4'),{'body':_0x2f9efc,'options':{'where':{'uniqueid':_0x257ea7},'order':[['id',_0x8fbc('0x5')]],'limit':0x1},'log':'UpdateWhatsappQueueReport'});};
\ No newline at end of file
+var _0xe076=['../client','create','CreateWhatsappQueueReport','Request','DESC'];(function(_0xa90e43,_0x5cf6d7){var _0x981284=function(_0x5964bc){while(--_0x5964bc){_0xa90e43['push'](_0xa90e43['shift']());}};_0x981284(++_0x5cf6d7);}(_0xe076,0x13b));var _0x6e07=function(_0x3b5250,_0x7a0b2c){_0x3b5250=_0x3b5250-0x0;var _0xc844a1=_0xe076[_0x3b5250];return _0xc844a1;};'use strict';var client=require(_0x6e07('0x0'));exports[_0x6e07('0x1')]=function(_0x264d07){return client['Request'](_0x6e07('0x2'),{'body':_0x264d07,'log':_0x6e07('0x2')});};exports['update']=function(_0x45a178,_0x229044){return client[_0x6e07('0x3')]('UpdateWhatsappQueueReport',{'body':_0x229044,'options':{'where':{'uniqueid':_0x45a178},'order':[['id',_0x6e07('0x4')]],'limit':0x1},'log':'UpdateWhatsappQueueReport'});};
\ No newline at end of file
index 040d191..ba6e6c2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x33e1=['routing','./strategy','string','number','[%s][AGENT][NAME:%s][STATUS:%s]','name','toLowerCase','consequence','length','error','[%s][AGENT]\x20%s','map','message','stop','find','agents','timeout','createQueue','atimeout','channel','format','START:%s','rules','end','info','[%s][AGENT]\x20ROUTING\x20STOPPED','close','complete','next','agent','[%s][QUEUE]\x20%s','lodash','util','../../../../config/logger'];(function(_0x3b0399,_0x28efe0){var _0x566630=function(_0x3083c5){while(--_0x3083c5){_0x3b0399['push'](_0x3b0399['shift']());}};_0x566630(++_0x28efe0);}(_0x33e1,0x12f));var _0x133e=function(_0x541e2e,_0x4dc036){_0x541e2e=_0x541e2e-0x0;var _0x3d3f2b=_0x33e1[_0x541e2e];return _0x3d3f2b;};'use strict';var schema=require('validate');var _=require(_0x133e('0x0'));var util=require(_0x133e('0x1'));var seqqueue=require('seq-queue');var logger=require(_0x133e('0x2'))(_0x133e('0x3'));var strategy=require(_0x133e('0x4'));var queue=schema({'name':{'type':_0x133e('0x5'),'required':!![],'message':'name\x20is\x20a\x20string\x20and\x20it\x20is\x20required'},'timeout':{'type':_0x133e('0x6'),'message':'timeout\x20is\x20a\x20number'}});function writeLog(_0x35daa0,_0x34b204,_0x13a340){return logger['info'](util['format'](_0x133e('0x7'),_0x35daa0,_0x34b204[_0x133e('0x8')],_0x13a340));}function handleFindAgent(_0x185283){return function(_0x43e186){return _0x43e186[_0x133e('0x8')][_0x133e('0x9')]()===_0x185283[_0x133e('0x9')]();};}exports[_0x133e('0xa')]=function(_0x3f7c9e,_0x5145bc,_0x4d29bc,_0x395667){return function(_0x188e0a){try{var _0x4d0874={'name':_0x5145bc[0x0],'timeout':_0x5145bc[0x1]};var _0x330a89=queue['validate'](_0x4d0874,{'typecast':!![]});if(_0x330a89[_0x133e('0xb')]){logger[_0x133e('0xc')](_0x133e('0xd'),_0x3f7c9e,_[_0x133e('0xe')](_0x330a89,_0x133e('0xf'))['join'](',\x20'));_0x188e0a[_0x133e('0x10')]();}else{var _0xd8336f=_[_0x133e('0x11')](_0x4d29bc[_0x133e('0x12')],handleFindAgent(_0x4d0874[_0x133e('0x8')]));if(_0xd8336f){var _0x2458c9=(_0x4d0874[_0x133e('0x13')]||0xa)*0x3e8;var _0x24466e,_0x4106d1;var _0x5d8370=seqqueue[_0x133e('0x14')](_0x2458c9);_0x5d8370['id']=_0x3f7c9e;_0x5d8370[_0x133e('0x15')]=_0x2458c9;_0x5d8370[_0x133e('0x16')]=_0x395667['channel'];writeLog(_0x3f7c9e,_0xd8336f,util[_0x133e('0x17')](_0x133e('0x18'),_0x2458c9));_0x4d29bc[_0x133e('0x19')][_0x3f7c9e]['on'](_0x133e('0x1a'),function(){logger[_0x133e('0x1b')](_0x133e('0x1c'),_0x3f7c9e);clearTimeout(_0x4106d1);_0x4106d1=undefined;_0x5d8370[_0x133e('0x1d')]();if(_0x4d29bc['rules'][_0x3f7c9e]){delete _0x4d29bc[_0x133e('0x19')][_0x3f7c9e];}_0x188e0a['stop']();});_0x4d29bc['rules'][_0x3f7c9e]['on'](_0x133e('0x1e'),function(){if(_0x4d29bc[_0x133e('0x19')][_0x3f7c9e]){delete _0x4d29bc[_0x133e('0x19')][_0x3f7c9e];}});_0x4106d1=setTimeout(function(){logger[_0x133e('0x1b')]('[%s][AGENT]\x20ROUTING\x20END',_0x3f7c9e);clearTimeout(_0x4106d1);_0x5d8370[_0x133e('0x1d')]();_0x188e0a[_0x133e('0x1f')]();},_0x2458c9);strategy[_0x133e('0x20')](_0x5d8370,_0xd8336f,_0x4d29bc,_0x395667);}else{logger[_0x133e('0xc')]('[%s][AGENT]\x20agent\x20not\x20found\x20%s',_0x3f7c9e,_0x4d0874['name']);_0x188e0a[_0x133e('0x10')]();}}}catch(_0xf983db){console['log'](_0xf983db);logger['error'](_0x133e('0x21'),_0x3f7c9e,_0xf983db['stack']);_0x188e0a['stop']();}};};
\ No newline at end of file
+var _0x5021=['agent','[%s][AGENT]\x20agent\x20not\x20found\x20%s','log','[%s][QUEUE]\x20%s','stack','validate','lodash','seq-queue','routing','./strategy','string','number','timeout\x20is\x20a\x20number','info','format','name','toLowerCase','consequence','error','[%s][AGENT]\x20%s','message','join','stop','agents','timeout','createQueue','atimeout','channel','START:%s','rules','end','[%s][AGENT]\x20ROUTING\x20STOPPED','[%s][AGENT]\x20ROUTING\x20END','close','next'];(function(_0x36f47c,_0x38ef4d){var _0x296c55=function(_0x403eec){while(--_0x403eec){_0x36f47c['push'](_0x36f47c['shift']());}};_0x296c55(++_0x38ef4d);}(_0x5021,0xfa));var _0x1502=function(_0x2b6971,_0x32af8b){_0x2b6971=_0x2b6971-0x0;var _0x4684ec=_0x5021[_0x2b6971];return _0x4684ec;};'use strict';var schema=require(_0x1502('0x0'));var _=require(_0x1502('0x1'));var util=require('util');var seqqueue=require(_0x1502('0x2'));var logger=require('../../../../config/logger')(_0x1502('0x3'));var strategy=require(_0x1502('0x4'));var queue=schema({'name':{'type':_0x1502('0x5'),'required':!![],'message':'name\x20is\x20a\x20string\x20and\x20it\x20is\x20required'},'timeout':{'type':_0x1502('0x6'),'message':_0x1502('0x7')}});function writeLog(_0x5a2714,_0x3bd7e2,_0x46aed7){return logger[_0x1502('0x8')](util[_0x1502('0x9')]('[%s][AGENT][NAME:%s][STATUS:%s]',_0x5a2714,_0x3bd7e2[_0x1502('0xa')],_0x46aed7));}function handleFindAgent(_0x3f1dd0){return function(_0x52c286){return _0x52c286[_0x1502('0xa')]['toLowerCase']()===_0x3f1dd0[_0x1502('0xb')]();};}exports[_0x1502('0xc')]=function(_0x341c81,_0x241860,_0x5d4e32,_0x52ba01){return function(_0x1274f0){try{var _0x10a71c={'name':_0x241860[0x0],'timeout':_0x241860[0x1]};var _0x464cd6=queue[_0x1502('0x0')](_0x10a71c,{'typecast':!![]});if(_0x464cd6['length']){logger[_0x1502('0xd')](_0x1502('0xe'),_0x341c81,_['map'](_0x464cd6,_0x1502('0xf'))[_0x1502('0x10')](',\x20'));_0x1274f0[_0x1502('0x11')]();}else{var _0x199007=_['find'](_0x5d4e32[_0x1502('0x12')],handleFindAgent(_0x10a71c['name']));if(_0x199007){var _0x45e2f6=(_0x10a71c[_0x1502('0x13')]||0xa)*0x3e8;var _0x506e57,_0x1ae97a;var _0x2cc1a2=seqqueue[_0x1502('0x14')](_0x45e2f6);_0x2cc1a2['id']=_0x341c81;_0x2cc1a2[_0x1502('0x15')]=_0x45e2f6;_0x2cc1a2[_0x1502('0x16')]=_0x52ba01['channel'];writeLog(_0x341c81,_0x199007,util['format'](_0x1502('0x17'),_0x45e2f6));_0x5d4e32[_0x1502('0x18')][_0x341c81]['on'](_0x1502('0x19'),function(){logger['info'](_0x1502('0x1a'),_0x341c81);clearTimeout(_0x1ae97a);_0x1ae97a=undefined;_0x2cc1a2['close']();if(_0x5d4e32[_0x1502('0x18')][_0x341c81]){delete _0x5d4e32[_0x1502('0x18')][_0x341c81];}_0x1274f0[_0x1502('0x11')]();});_0x5d4e32[_0x1502('0x18')][_0x341c81]['on']('complete',function(){if(_0x5d4e32['rules'][_0x341c81]){delete _0x5d4e32['rules'][_0x341c81];}});_0x1ae97a=setTimeout(function(){logger[_0x1502('0x8')](_0x1502('0x1b'),_0x341c81);clearTimeout(_0x1ae97a);_0x2cc1a2[_0x1502('0x1c')]();_0x1274f0[_0x1502('0x1d')]();},_0x45e2f6);strategy[_0x1502('0x1e')](_0x2cc1a2,_0x199007,_0x5d4e32,_0x52ba01);}else{logger[_0x1502('0xd')](_0x1502('0x1f'),_0x341c81,_0x10a71c[_0x1502('0xa')]);_0x1274f0[_0x1502('0x11')]();}}}catch(_0x5e52ee){console[_0x1502('0x20')](_0x5e52ee);logger[_0x1502('0xd')](_0x1502('0x21'),_0x341c81,_0x5e52ee[_0x1502('0x22')]);_0x1274f0[_0x1502('0x11')]();}};};
\ No newline at end of file
index 0619ab1..064da26 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x706d=['$LATEST','interaction','toString','postText','message','providerName','create','dialogState','catch','stringify','lodash','moment','./utils','../../../../config/logger','../../rpc/chatMessage','../../rpc/openchannelMessage','../../rpc/mailMessage','../../rpc/smsMessage','UserId','info','[%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','chat','ChatWebsiteId','account','upperFirst','AccountId','InteractionId','created','body','getMustacheRender','Message','then','error','finally','[%s][AMAZONLEX]\x20Welcome\x20Message\x20has\x20been\x20sent!','[%s][AMAZONLEX]\x20Welcome\x20Message\x20is\x20empty.\x20It\x20will\x20wait\x20for\x20a\x20message\x20from\x20customer!','stop','LexRuntime'];(function(_0x5b8347,_0x2e31eb){var _0x1f0bb8=function(_0x1cc5f7){while(--_0x1cc5f7){_0x5b8347['push'](_0x5b8347['shift']());}};_0x1f0bb8(++_0x2e31eb);}(_0x706d,0x1b1));var _0xd706=function(_0x3b9bf7,_0x17b4ba){_0x3b9bf7=_0x3b9bf7-0x0;var _0x1a0ad5=_0x706d[_0x3b9bf7];return _0x1a0ad5;};'use strict';var _=require(_0xd706('0x0'));var moment=require(_0xd706('0x1'));var AWS=require('aws-sdk');var utils=require(_0xd706('0x2'));var logger=require(_0xd706('0x3'))('routing');var rpc={'chatMessage':require(_0xd706('0x4')),'openchannelMessage':require(_0xd706('0x5')),'mailMessage':require(_0xd706('0x6')),'smsMessage':require(_0xd706('0x7')),'faxMessage':require('../../rpc/faxMessage'),'whatsappMessage':require('../../rpc/whatsappMessage')};exports['consequence']=function(_0xe9a6cc,_0x13e0de){return function(_0x4d34d4){try{if(!_['isNil'](this['interaction'][_0xd706('0x8')])){logger[_0xd706('0x9')](_0xd706('0xa'),_0xe9a6cc,_0xd706('0xb'));return _0x4d34d4[_0xd706('0xc')]();}var _0x1d3fbc={'ContactId':this['contact']['id'],'sentAt':moment()[_0xd706('0xd')](_0xd706('0xe')),'direction':_0xd706('0xf')};if(this[_0xd706('0x10')]===_0xd706('0x11')||this[_0xd706('0x10')]===_0xd706('0x12')){_0x1d3fbc[_0xd706('0x13')]=this['interaction'][_0xd706('0x13')];}var _0x256212=this[_0xd706('0x10')];if(_0x256212===_0xd706('0x14')){_0x1d3fbc[_0xd706('0x15')]=this[_0xd706('0x16')]['id'];}else{_0x1d3fbc[_[_0xd706('0x17')](_0x256212)+_0xd706('0x18')]=this[_0xd706('0x16')]['id'];}_0x1d3fbc[_[_0xd706('0x17')](_0x256212)+_0xd706('0x19')]=this['interaction']['id'];if(this['interaction'][_0xd706('0x1a')]){var _0x22e095=_0x13e0de[0x4];if(!_['isEmpty'](_0x22e095)){_0x1d3fbc[_0xd706('0x1b')]=utils[_0xd706('0x1c')](_0x22e095,this);return rpc[_0x256212+_0xd706('0x1d')]['create'](_0x1d3fbc)[_0xd706('0x1e')](function(_0x3188b6){logger[_0xd706('0x9')](_0xd706('0xa'),_0xe9a6cc,_0x1d3fbc['body']);})['catch'](function(_0x3e5cb2){logger[_0xd706('0x1f')]('[%s][AMAZONLEX]\x20%s',_0xe9a6cc,JSON['stringify'](_0x3e5cb2));})[_0xd706('0x20')](function(){logger[_0xd706('0x9')](_0xd706('0x21'),_0xe9a6cc);_0x4d34d4['stop']();});}else{logger[_0xd706('0x9')](_0xd706('0x22'),_0xe9a6cc);_0x4d34d4[_0xd706('0x23')]();}}else{var _0xe24d8e=this;var _0x510e93=new AWS[(_0xd706('0x24'))]({'accessKeyId':_0x13e0de[0x0],'secretAccessKey':_0x13e0de[0x1],'region':_0x13e0de[0x2]});var _0x21d700={'botAlias':_0xd706('0x25'),'botName':_0x13e0de[0x3],'inputText':this['message'][_0xd706('0x1b')],'userId':this['channel']+':'+this[_0xd706('0x26')]['id'][_0xd706('0x27')]()};_0x510e93[_0xd706('0x28')](_0x21d700,function(_0x692f7f,_0xa30364){if(_0x692f7f){logger[_0xd706('0x1f')](_0xd706('0xa'),_0xe9a6cc,_0x692f7f[_0xd706('0x29')]);_0x4d34d4[_0xd706('0xc')]();}else if(_0xa30364&&_0xa30364[_0xd706('0x29')]){_0xe24d8e[_0xd706('0x1b')]['amazonlex']=_0xa30364;_0x1d3fbc[_0xd706('0x1b')]=_0xa30364[_0xd706('0x29')];_0x1d3fbc[_0xd706('0x2a')]='amazonlex';_0x1d3fbc['providerResponse']=JSON['stringify'](_0xa30364);return rpc[_0x256212+'Message'][_0xd706('0x2b')](_0x1d3fbc)[_0xd706('0x1e')](function(_0x5ab919){logger['info'](_0xd706('0xa'),_0xe9a6cc,_0x1d3fbc['body']);if(_0xa30364[_0xd706('0x2c')]=='Failed'){_0x4d34d4[_0xd706('0xc')]();}else{_0x4d34d4['stop']();}})[_0xd706('0x2d')](function(_0x133b0d){logger[_0xd706('0x1f')](_0xd706('0xa'),_0xe9a6cc,JSON['stringify'](_0x133b0d));_0x4d34d4[_0xd706('0xc')]();});}else{_0x4d34d4[_0xd706('0xc')]();}});}}catch(_0x33c40b){logger[_0xd706('0x1f')](_0xd706('0xa'),_0xe9a6cc,JSON[_0xd706('0x2e')](_0x33c40b));_0x4d34d4[_0xd706('0x23')]();}};};
\ No newline at end of file
+var _0xb237=['message','toString','providerName','providerResponse','stringify','dialogState','Failed','next','lodash','moment','aws-sdk','../../rpc/chatMessage','../../rpc/openchannelMessage','../../rpc/mailMessage','../../rpc/smsMessage','../../rpc/faxMessage','consequence','interaction','info','[%s][AMAZONLEX]\x20%s','Agent\x20is\x20managing\x20the\x20interaction.\x20Go\x20to\x20next\x20application.','contact','format','out','sms','whatsapp','phone','channel','ChatWebsiteId','account','upperFirst','AccountId','InteractionId','isEmpty','body','Message','create','catch','error','finally','[%s][AMAZONLEX]\x20Welcome\x20Message\x20has\x20been\x20sent!','stop','[%s][AMAZONLEX]\x20Welcome\x20Message\x20is\x20empty.\x20It\x20will\x20wait\x20for\x20a\x20message\x20from\x20customer!','LexRuntime'];(function(_0x5075c8,_0x1dc10c){var _0x5f29ae=function(_0x52a241){while(--_0x52a241){_0x5075c8['push'](_0x5075c8['shift']());}};_0x5f29ae(++_0x1dc10c);}(_0xb237,0x194));var _0x7b23=function(_0x2d6263,_0x1845ab){_0x2d6263=_0x2d6263-0x0;var _0x544e9a=_0xb237[_0x2d6263];return _0x544e9a;};'use strict';var _=require(_0x7b23('0x0'));var moment=require(_0x7b23('0x1'));var AWS=require(_0x7b23('0x2'));var utils=require('./utils');var logger=require('../../../../config/logger')('routing');var rpc={'chatMessage':require(_0x7b23('0x3')),'openchannelMessage':require(_0x7b23('0x4')),'mailMessage':require(_0x7b23('0x5')),'smsMessage':require(_0x7b23('0x6')),'faxMessage':require(_0x7b23('0x7')),'whatsappMessage':require('../../rpc/whatsappMessage')};exports[_0x7b23('0x8')]=function(_0x4f254a,_0x1e1825){return function(_0x599f77){try{if(!_['isNil'](this[_0x7b23('0x9')]['UserId'])){logger[_0x7b23('0xa')](_0x7b23('0xb'),_0x4f254a,_0x7b23('0xc'));return _0x599f77['next']();}var _0x2c24a5={'ContactId':this[_0x7b23('0xd')]['id'],'sentAt':moment()[_0x7b23('0xe')]('YYYY-MM-DD\x20HH:mm:ss'),'direction':_0x7b23('0xf')};if(this['channel']===_0x7b23('0x10')||this['channel']===_0x7b23('0x11')){_0x2c24a5[_0x7b23('0x12')]=this[_0x7b23('0x9')][_0x7b23('0x12')];}var _0x2735d4=this[_0x7b23('0x13')];if(_0x2735d4==='chat'){_0x2c24a5[_0x7b23('0x14')]=this[_0x7b23('0x15')]['id'];}else{_0x2c24a5[_[_0x7b23('0x16')](_0x2735d4)+_0x7b23('0x17')]=this[_0x7b23('0x15')]['id'];}_0x2c24a5[_['upperFirst'](_0x2735d4)+_0x7b23('0x18')]=this[_0x7b23('0x9')]['id'];if(this[_0x7b23('0x9')]['created']){var _0x46e7d2=_0x1e1825[0x4];if(!_[_0x7b23('0x19')](_0x46e7d2)){_0x2c24a5[_0x7b23('0x1a')]=utils['getMustacheRender'](_0x46e7d2,this);return rpc[_0x2735d4+_0x7b23('0x1b')][_0x7b23('0x1c')](_0x2c24a5)['then'](function(_0x2215da){logger[_0x7b23('0xa')](_0x7b23('0xb'),_0x4f254a,_0x2c24a5[_0x7b23('0x1a')]);})[_0x7b23('0x1d')](function(_0x1f788c){logger[_0x7b23('0x1e')](_0x7b23('0xb'),_0x4f254a,JSON['stringify'](_0x1f788c));})[_0x7b23('0x1f')](function(){logger[_0x7b23('0xa')](_0x7b23('0x20'),_0x4f254a);_0x599f77[_0x7b23('0x21')]();});}else{logger[_0x7b23('0xa')](_0x7b23('0x22'),_0x4f254a);_0x599f77[_0x7b23('0x21')]();}}else{var _0x8e324=this;var _0x1dee1b=new AWS[(_0x7b23('0x23'))]({'accessKeyId':_0x1e1825[0x0],'secretAccessKey':_0x1e1825[0x1],'region':_0x1e1825[0x2]});var _0x273dc4={'botAlias':'$LATEST','botName':_0x1e1825[0x3],'inputText':this[_0x7b23('0x24')][_0x7b23('0x1a')],'userId':this[_0x7b23('0x13')]+':'+this['interaction']['id'][_0x7b23('0x25')]()};_0x1dee1b['postText'](_0x273dc4,function(_0x15bfc0,_0x27997e){if(_0x15bfc0){logger[_0x7b23('0x1e')]('[%s][AMAZONLEX]\x20%s',_0x4f254a,_0x15bfc0[_0x7b23('0x24')]);_0x599f77['next']();}else if(_0x27997e&&_0x27997e[_0x7b23('0x24')]){_0x8e324[_0x7b23('0x1a')]['amazonlex']=_0x27997e;_0x2c24a5['body']=_0x27997e[_0x7b23('0x24')];_0x2c24a5[_0x7b23('0x26')]='amazonlex';_0x2c24a5[_0x7b23('0x27')]=JSON[_0x7b23('0x28')](_0x27997e);return rpc[_0x2735d4+'Message'][_0x7b23('0x1c')](_0x2c24a5)['then'](function(_0x5219f5){logger[_0x7b23('0xa')](_0x7b23('0xb'),_0x4f254a,_0x2c24a5[_0x7b23('0x1a')]);if(_0x27997e[_0x7b23('0x29')]==_0x7b23('0x2a')){_0x599f77[_0x7b23('0x2b')]();}else{_0x599f77[_0x7b23('0x21')]();}})[_0x7b23('0x1d')](function(_0x1a3b68){logger[_0x7b23('0x1e')](_0x7b23('0xb'),_0x4f254a,JSON[_0x7b23('0x28')](_0x1a3b68));_0x599f77[_0x7b23('0x2b')]();});}else{_0x599f77['next']();}});}}catch(_0x1a5da6){logger['error']('[%s][AMAZONLEX]\x20%s',_0x4f254a,JSON[_0x7b23('0x28')](_0x1a5da6));_0x599f77[_0x7b23('0x21')]();}};};
\ No newline at end of file
index e6ae4ec..ff3d64f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe9be=['chat','account','upperFirst','AccountId','InteractionId','Message','Smtp','service','host','port','secure','authentication','auth','inReplyTo','messageId','html','replace','<div\x20id=\x22xm-mail-content\x22','<div','</div>','headers','All','sendMailMessage','[%s][AUTOREPLY]\x20SMTP\x20SENT','create','then','stringify','catch','error','[RPC][%s][AUTOREPLY]\x20%s','finally','resolve','Interaction','update','[%s][AUTOREPLY][autoreplyExecuted]\x20%s','[RPC][%s][AUTOREPLY][autoreplyExecuted]\x20%s','stop','lodash','moment','./utils','routing','../../rpc/openchannelMessage','../../rpc/mailMessage','../../rpc/faxMessage','../../rpc/whatsappMessage','../../rpc/mailInteraction','../../rpc/smsInteraction','consequence','channel','mail','body','isAutoreply','info','[%s][AUTOREPLY]\x20%s','Autoreply\x20not\x20executed\x20(message\x20is\x20autoreply)','next','isNil','created','interaction','Autoreply\x20already\x20sent','autoreplyExecuted','format','YYYY-MM-DD\x20HH:mm:ss','out','getMustacheRender','message','from','phone','read','subject','startsWith','Re:'];(function(_0x1bd34a,_0x2a4a09){var _0x9c3e81=function(_0x5ee86f){while(--_0x5ee86f){_0x1bd34a['push'](_0x1bd34a['shift']());}};_0x9c3e81(++_0x2a4a09);}(_0xe9be,0xfd));var _0xee9b=function(_0x29e7fb,_0x5b2ff3){_0x29e7fb=_0x29e7fb-0x0;var _0x171dad=_0xe9be[_0x29e7fb];return _0x171dad;};'use strict';var _=require(_0xee9b('0x0'));var moment=require(_0xee9b('0x1'));var utils=require(_0xee9b('0x2'));var logger=require('../../../../config/logger')(_0xee9b('0x3'));var rpc={'chatMessage':require('../../rpc/chatMessage'),'openchannelMessage':require(_0xee9b('0x4')),'mailMessage':require(_0xee9b('0x5')),'smsMessage':require('../../rpc/smsMessage'),'faxMessage':require(_0xee9b('0x6')),'whatsappMessage':require(_0xee9b('0x7')),'chatInteraction':require('../../rpc/chatInteraction'),'openchannelInteraction':require('../../rpc/openchannelInteraction'),'mailInteraction':require(_0xee9b('0x8')),'smsInteraction':require(_0xee9b('0x9')),'faxInteraction':require('../../rpc/faxInteraction'),'whatsappInteraction':require('../../rpc/whatsappInteraction')};var mailRpc=require('../../mailRpc');exports[_0xee9b('0xa')]=function(_0x35b5f8,_0x4919da,_0x3efdbf,_0x25a551){return function(_0x198660){try{var _0x3134c0=this[_0xee9b('0xb')];if(_0x3134c0===_0xee9b('0xc')&&_0x25a551[_0xee9b('0xd')][_0xee9b('0xe')]){logger[_0xee9b('0xf')](_0xee9b('0x10'),_0x35b5f8,_0xee9b('0x11'));return _0x198660[_0xee9b('0x12')]();}if(_0x4919da[0x0]==='1'&&(_[_0xee9b('0x13')](this['interaction'][_0xee9b('0x14')])||!this[_0xee9b('0x15')]['created'])){logger[_0xee9b('0xf')]('[%s][AUTOREPLY]\x20%s',_0x35b5f8,_0xee9b('0x16'));return _0x198660['next']();}if(_0x4919da[0x0]==='2'&&this[_0xee9b('0x15')][_0xee9b('0x17')]){logger[_0xee9b('0xf')]('[%s][AUTOREPLY][autoreplyExecuted]\x20%s',_0x35b5f8,'One\x20Time\x20already\x20sent');return _0x198660[_0xee9b('0x12')]();}var _0x388dc8={'ContactId':this['contact']['id'],'sentAt':moment()[_0xee9b('0x18')](_0xee9b('0x19')),'direction':_0xee9b('0x1a')};if(this[_0xee9b('0xb')]===_0xee9b('0xc')){_0x388dc8[_0xee9b('0xd')]=utils[_0xee9b('0x1b')](_0x4919da[0x2],this);}else{_0x388dc8[_0xee9b('0xd')]=utils[_0xee9b('0x1b')](_0x4919da[0x1],this);}if(this[_0xee9b('0x1c')]){_0x388dc8['to']=this[_0xee9b('0x1c')][_0xee9b('0x1d')]||'';if(this[_0xee9b('0xb')]===_0xee9b('0xc')&&_0x4919da[0x1]==='1'){_0x388dc8['cc']=this[_0xee9b('0x1c')]['cc']||'';}_0x388dc8['from']=this[_0xee9b('0x1c')]['to']||'';_0x388dc8[_0xee9b('0x1e')]=this[_0xee9b('0x1c')][_0xee9b('0x1e')]||'';_0x388dc8[_0xee9b('0x1f')]=!![];if(this['message'][_0xee9b('0x20')]){_0x388dc8[_0xee9b('0x20')]='';_0x388dc8['subject']+=_[_0xee9b('0x21')](this[_0xee9b('0x1c')]['subject'],_0xee9b('0x22'))?'':'Re:\x20';_0x388dc8[_0xee9b('0x20')]+=this[_0xee9b('0x1c')][_0xee9b('0x20')];}}if(this[_0xee9b('0xb')]===_0xee9b('0x23')){_0x388dc8['ChatWebsiteId']=this[_0xee9b('0x24')]['id'];}else{_0x388dc8[_[_0xee9b('0x25')](this[_0xee9b('0xb')])+_0xee9b('0x26')]=this[_0xee9b('0x24')]['id'];}_0x388dc8[_['upperFirst'](this['channel'])+_0xee9b('0x27')]=this[_0xee9b('0x15')]['id'];var _0x1fdd2c=this[_0xee9b('0x15')];if(rpc[this[_0xee9b('0xb')]+_0xee9b('0x28')]){if(this[_0xee9b('0xb')]==='mail'){var _0x45448b={'tls':{'rejectUnauthorized':![]}};if(this[_0xee9b('0x24')][_0xee9b('0x29')][_0xee9b('0x2a')]){_0x45448b[_0xee9b('0x2a')]=this[_0xee9b('0x24')]['Smtp'][_0xee9b('0x2a')];}else{_0x45448b[_0xee9b('0x2b')]=this[_0xee9b('0x24')][_0xee9b('0x29')][_0xee9b('0x2b')];_0x45448b[_0xee9b('0x2c')]=this[_0xee9b('0x24')][_0xee9b('0x29')][_0xee9b('0x2c')];_0x45448b[_0xee9b('0x2d')]=this['account'][_0xee9b('0x29')][_0xee9b('0x2d')];}if(this['account']['Smtp'][_0xee9b('0x2e')]){_0x45448b[_0xee9b('0x2f')]={'user':this[_0xee9b('0x24')][_0xee9b('0x29')]['user'],'pass':this[_0xee9b('0x24')]['Smtp']['pass']};}_0x388dc8[_0xee9b('0x30')]=this[_0xee9b('0x1c')][_0xee9b('0x31')];_0x388dc8[_0xee9b('0x32')]='<div\x20id=\x22xm-mail-content\x22>'+_[_0xee9b('0x33')](_0x388dc8[_0xee9b('0xd')],_0xee9b('0x34'),_0xee9b('0x35'))+_0xee9b('0x36');_0x388dc8[_0xee9b('0x37')]={'Auto-Submitted':'auto-replied','X-Auto-Response-Suppress':_0xee9b('0x38'),'Precedence':'auto_reply'};return mailRpc[_0xee9b('0x39')](_0x45448b,_0x388dc8)['then'](function(_0x737edb){logger[_0xee9b('0xf')](_0xee9b('0x3a'),_0x35b5f8);_0x388dc8[_0xee9b('0x31')]=_0x737edb['message'][_0xee9b('0x31')];return rpc[_0x3134c0+_0xee9b('0x28')][_0xee9b('0x3b')](_0x388dc8);})[_0xee9b('0x3c')](function(_0x37773a){logger['info'](_0xee9b('0x10'),_0x35b5f8,JSON[_0xee9b('0x3d')](_0x37773a));})[_0xee9b('0x3e')](function(_0x44bddf){logger[_0xee9b('0x3f')](_0xee9b('0x40'),_0x35b5f8,JSON[_0xee9b('0x3d')](_0x44bddf));})[_0xee9b('0x41')](function(){Promise[_0xee9b('0x42')]()['then'](function(){if(_0x4919da[0x0]!=='2'||_0x1fdd2c[_0xee9b('0x17')])return;return rpc[_0x3134c0+_0xee9b('0x43')][_0xee9b('0x44')](_0x1fdd2c['id'],{'autoreplyExecuted':!![]})[_0xee9b('0x3c')](function(_0x314ad3){logger[_0xee9b('0xf')](_0xee9b('0x45'),_0x35b5f8,JSON['stringify'](_0x314ad3));})[_0xee9b('0x3e')](function(_0x5ea0f4){logger['error'](_0xee9b('0x46'),_0x35b5f8,JSON[_0xee9b('0x3d')](_0x5ea0f4));});})[_0xee9b('0x3c')](function(){_0x198660['next']();});});}else{return rpc[this[_0xee9b('0xb')]+_0xee9b('0x28')][_0xee9b('0x3b')](_0x388dc8)[_0xee9b('0x3c')](function(_0x2debd0){logger[_0xee9b('0xf')]('[%s][AUTOREPLY]\x20%s',_0x35b5f8,_0x388dc8[_0xee9b('0xd')]);})[_0xee9b('0x3e')](function(_0x5597dd){logger[_0xee9b('0x3f')](_0xee9b('0x10'),_0x35b5f8,JSON[_0xee9b('0x3d')](_0x5597dd));})['finally'](function(){Promise[_0xee9b('0x42')]()[_0xee9b('0x3c')](function(){if(_0x4919da[0x0]!=='2'||_0x1fdd2c[_0xee9b('0x17')])return;return rpc[_0x3134c0+_0xee9b('0x43')][_0xee9b('0x44')](_0x1fdd2c['id'],{'autoreplyExecuted':!![]})[_0xee9b('0x3c')](function(_0x4e3c1c){logger[_0xee9b('0xf')](_0xee9b('0x45'),_0x35b5f8,JSON[_0xee9b('0x3d')](_0x4e3c1c));})[_0xee9b('0x3e')](function(_0x220920){logger[_0xee9b('0x3f')]('[RPC][%s][AUTOREPLY][autoreplyExecuted]\x20%s',_0x35b5f8,JSON[_0xee9b('0x3d')](_0x220920));});})[_0xee9b('0x3c')](function(){_0x198660['next']();});});}}}catch(_0x103cdf){logger[_0xee9b('0x3f')](_0xee9b('0x10'),_0x35b5f8,JSON[_0xee9b('0x3d')](_0x103cdf));_0x198660[_0xee9b('0x47')]();}};};
\ No newline at end of file
+var _0x19ba=['getMustacheRender','message','from','phone','subject','Re:','ChatWebsiteId','account','upperFirst','AccountId','InteractionId','Message','Smtp','service','host','port','secure','authentication','auth','user','inReplyTo','<div\x20id=\x22xm-mail-content\x22>','<div','auto-replied','All','auto_reply','sendMailMessage','[%s][AUTOREPLY]\x20SMTP\x20SENT','messageId','create','then','stringify','catch','[RPC][%s][AUTOREPLY]\x20%s','finally','Interaction','update','error','[RPC][%s][AUTOREPLY][autoreplyExecuted]\x20%s','stop','moment','./utils','routing','../../rpc/openchannelMessage','../../rpc/mailMessage','../../rpc/smsMessage','../../rpc/faxMessage','../../rpc/whatsappMessage','../../rpc/chatInteraction','../../rpc/openchannelInteraction','../../rpc/smsInteraction','../../rpc/whatsappInteraction','../../mailRpc','mail','body','isAutoreply','[%s][AUTOREPLY]\x20%s','Autoreply\x20not\x20executed\x20(message\x20is\x20autoreply)','next','isNil','interaction','created','info','Autoreply\x20already\x20sent','autoreplyExecuted','[%s][AUTOREPLY][autoreplyExecuted]\x20%s','contact','format','YYYY-MM-DD\x20HH:mm:ss','out','channel'];(function(_0x18b3dc,_0x40ffe8){var _0x4b53fe=function(_0x3d7973){while(--_0x3d7973){_0x18b3dc['push'](_0x18b3dc['shift']());}};_0x4b53fe(++_0x40ffe8);}(_0x19ba,0x1d2));var _0xa19b=function(_0x5bc69d,_0x25137d){_0x5bc69d=_0x5bc69d-0x0;var _0x154d9c=_0x19ba[_0x5bc69d];return _0x154d9c;};'use strict';var _=require('lodash');var moment=require(_0xa19b('0x0'));var utils=require(_0xa19b('0x1'));var logger=require('../../../../config/logger')(_0xa19b('0x2'));var rpc={'chatMessage':require('../../rpc/chatMessage'),'openchannelMessage':require(_0xa19b('0x3')),'mailMessage':require(_0xa19b('0x4')),'smsMessage':require(_0xa19b('0x5')),'faxMessage':require(_0xa19b('0x6')),'whatsappMessage':require(_0xa19b('0x7')),'chatInteraction':require(_0xa19b('0x8')),'openchannelInteraction':require(_0xa19b('0x9')),'mailInteraction':require('../../rpc/mailInteraction'),'smsInteraction':require(_0xa19b('0xa')),'faxInteraction':require('../../rpc/faxInteraction'),'whatsappInteraction':require(_0xa19b('0xb'))};var mailRpc=require(_0xa19b('0xc'));exports['consequence']=function(_0xa52456,_0x348535,_0x52d5aa,_0x2dda25){return function(_0xa56911){try{var _0x198288=this['channel'];if(_0x198288===_0xa19b('0xd')&&_0x2dda25[_0xa19b('0xe')][_0xa19b('0xf')]){logger['info'](_0xa19b('0x10'),_0xa52456,_0xa19b('0x11'));return _0xa56911[_0xa19b('0x12')]();}if(_0x348535[0x0]==='1'&&(_[_0xa19b('0x13')](this[_0xa19b('0x14')][_0xa19b('0x15')])||!this[_0xa19b('0x14')]['created'])){logger[_0xa19b('0x16')](_0xa19b('0x10'),_0xa52456,_0xa19b('0x17'));return _0xa56911[_0xa19b('0x12')]();}if(_0x348535[0x0]==='2'&&this['interaction'][_0xa19b('0x18')]){logger[_0xa19b('0x16')](_0xa19b('0x19'),_0xa52456,'One\x20Time\x20already\x20sent');return _0xa56911[_0xa19b('0x12')]();}var _0x10badb={'ContactId':this[_0xa19b('0x1a')]['id'],'sentAt':moment()[_0xa19b('0x1b')](_0xa19b('0x1c')),'direction':_0xa19b('0x1d')};if(this[_0xa19b('0x1e')]==='mail'){_0x10badb[_0xa19b('0xe')]=utils[_0xa19b('0x1f')](_0x348535[0x2],this);}else{_0x10badb[_0xa19b('0xe')]=utils['getMustacheRender'](_0x348535[0x1],this);}if(this[_0xa19b('0x20')]){_0x10badb['to']=this[_0xa19b('0x20')][_0xa19b('0x21')]||'';if(this[_0xa19b('0x1e')]==='mail'&&_0x348535[0x1]==='1'){_0x10badb['cc']=this[_0xa19b('0x20')]['cc']||'';}_0x10badb[_0xa19b('0x21')]=this[_0xa19b('0x20')]['to']||'';_0x10badb[_0xa19b('0x22')]=this[_0xa19b('0x20')][_0xa19b('0x22')]||'';_0x10badb['read']=!![];if(this[_0xa19b('0x20')][_0xa19b('0x23')]){_0x10badb[_0xa19b('0x23')]='';_0x10badb['subject']+=_['startsWith'](this[_0xa19b('0x20')][_0xa19b('0x23')],_0xa19b('0x24'))?'':'Re:\x20';_0x10badb[_0xa19b('0x23')]+=this[_0xa19b('0x20')][_0xa19b('0x23')];}}if(this['channel']==='chat'){_0x10badb[_0xa19b('0x25')]=this[_0xa19b('0x26')]['id'];}else{_0x10badb[_[_0xa19b('0x27')](this['channel'])+_0xa19b('0x28')]=this[_0xa19b('0x26')]['id'];}_0x10badb[_[_0xa19b('0x27')](this[_0xa19b('0x1e')])+_0xa19b('0x29')]=this[_0xa19b('0x14')]['id'];var _0x7d78e1=this['interaction'];if(rpc[this[_0xa19b('0x1e')]+_0xa19b('0x2a')]){if(this[_0xa19b('0x1e')]===_0xa19b('0xd')){var _0x1cecf5={'tls':{'rejectUnauthorized':![]}};if(this[_0xa19b('0x26')][_0xa19b('0x2b')][_0xa19b('0x2c')]){_0x1cecf5[_0xa19b('0x2c')]=this[_0xa19b('0x26')][_0xa19b('0x2b')][_0xa19b('0x2c')];}else{_0x1cecf5[_0xa19b('0x2d')]=this['account'][_0xa19b('0x2b')][_0xa19b('0x2d')];_0x1cecf5[_0xa19b('0x2e')]=this[_0xa19b('0x26')][_0xa19b('0x2b')][_0xa19b('0x2e')];_0x1cecf5[_0xa19b('0x2f')]=this['account'][_0xa19b('0x2b')][_0xa19b('0x2f')];}if(this[_0xa19b('0x26')]['Smtp'][_0xa19b('0x30')]){_0x1cecf5[_0xa19b('0x31')]={'user':this[_0xa19b('0x26')][_0xa19b('0x2b')][_0xa19b('0x32')],'pass':this[_0xa19b('0x26')]['Smtp']['pass']};}_0x10badb[_0xa19b('0x33')]=this[_0xa19b('0x20')]['messageId'];_0x10badb['html']=_0xa19b('0x34')+_['replace'](_0x10badb[_0xa19b('0xe')],'<div\x20id=\x22xm-mail-content\x22',_0xa19b('0x35'))+'</div>';_0x10badb['headers']={'Auto-Submitted':_0xa19b('0x36'),'X-Auto-Response-Suppress':_0xa19b('0x37'),'Precedence':_0xa19b('0x38')};return mailRpc[_0xa19b('0x39')](_0x1cecf5,_0x10badb)['then'](function(_0x1d1480){logger['info'](_0xa19b('0x3a'),_0xa52456);_0x10badb['messageId']=_0x1d1480[_0xa19b('0x20')][_0xa19b('0x3b')];return rpc[_0x198288+_0xa19b('0x2a')][_0xa19b('0x3c')](_0x10badb);})[_0xa19b('0x3d')](function(_0x3a07e7){logger[_0xa19b('0x16')]('[%s][AUTOREPLY]\x20%s',_0xa52456,JSON[_0xa19b('0x3e')](_0x3a07e7));})[_0xa19b('0x3f')](function(_0x49e3d5){logger['error'](_0xa19b('0x40'),_0xa52456,JSON[_0xa19b('0x3e')](_0x49e3d5));})[_0xa19b('0x41')](function(){Promise['resolve']()['then'](function(){if(_0x348535[0x0]!=='2'||_0x7d78e1[_0xa19b('0x18')])return;return rpc[_0x198288+_0xa19b('0x42')][_0xa19b('0x43')](_0x7d78e1['id'],{'autoreplyExecuted':!![]})['then'](function(_0x3d6951){logger[_0xa19b('0x16')](_0xa19b('0x19'),_0xa52456,JSON[_0xa19b('0x3e')](_0x3d6951));})['catch'](function(_0x2d1570){logger[_0xa19b('0x44')](_0xa19b('0x45'),_0xa52456,JSON[_0xa19b('0x3e')](_0x2d1570));});})[_0xa19b('0x3d')](function(){_0xa56911[_0xa19b('0x12')]();});});}else{return rpc[this['channel']+'Message']['create'](_0x10badb)[_0xa19b('0x3d')](function(_0x16ad9a){logger[_0xa19b('0x16')](_0xa19b('0x10'),_0xa52456,_0x10badb[_0xa19b('0xe')]);})[_0xa19b('0x3f')](function(_0x4a0740){logger[_0xa19b('0x44')](_0xa19b('0x10'),_0xa52456,JSON[_0xa19b('0x3e')](_0x4a0740));})[_0xa19b('0x41')](function(){Promise['resolve']()[_0xa19b('0x3d')](function(){if(_0x348535[0x0]!=='2'||_0x7d78e1[_0xa19b('0x18')])return;return rpc[_0x198288+_0xa19b('0x42')][_0xa19b('0x43')](_0x7d78e1['id'],{'autoreplyExecuted':!![]})[_0xa19b('0x3d')](function(_0x490c4f){logger[_0xa19b('0x16')](_0xa19b('0x19'),_0xa52456,JSON[_0xa19b('0x3e')](_0x490c4f));})[_0xa19b('0x3f')](function(_0x53d3f2){logger[_0xa19b('0x44')](_0xa19b('0x45'),_0xa52456,JSON['stringify'](_0x53d3f2));});})[_0xa19b('0x3d')](function(){_0xa56911[_0xa19b('0x12')]();});});}}}catch(_0x4905bf){logger[_0xa19b('0x44')](_0xa19b('0x10'),_0xa52456,JSON[_0xa19b('0x3e')](_0x4905bf));_0xa56911[_0xa19b('0x46')]();}};};
\ No newline at end of file
index d06ff78..e32188d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x12e4=['catch','error','stringify','finally','stop','moment','../../rpc/chatInteraction','../../rpc/openchannelInteraction','../../rpc/smsInteraction','../../rpc/whatsappInteraction','consequence','info','format','YYYY-MM-DD\x20HH:mm:ss','channel','Interaction','update','interaction','then'];(function(_0x5ee211,_0x3f31a3){var _0x46fc90=function(_0x44f6d8){while(--_0x44f6d8){_0x5ee211['push'](_0x5ee211['shift']());}};_0x46fc90(++_0x3f31a3);}(_0x12e4,0x181));var _0x412e=function(_0xb8d17b,_0x2f3493){_0xb8d17b=_0xb8d17b-0x0;var _0x319c6a=_0x12e4[_0xb8d17b];return _0x319c6a;};'use strict';var moment=require(_0x412e('0x0'));var logger=require('../../../../config/logger')('routing');var rpc={'chatInteraction':require(_0x412e('0x1')),'openchannelInteraction':require(_0x412e('0x2')),'smsInteraction':require(_0x412e('0x3')),'mailInteraction':require('../../rpc/mailInteraction'),'faxInteraction':require('../../rpc/faxInteraction'),'whatsappInteraction':require(_0x412e('0x4'))};exports[_0x412e('0x5')]=function(_0xbe115f,_0x4fe531,_0x2572c3,_0x4bfb58){return function(_0x4c1cb8){try{logger[_0x412e('0x6')]('[%s][CLOSE]\x20reason\x20%s',_0xbe115f,_0x4fe531[0x0]);var _0x5e4176={'closed':0x1,'closedAt':moment()[_0x412e('0x7')](_0x412e('0x8')),'closeReason':'system','disposition':_0x4fe531[0x0]};if(rpc[_0x4bfb58[_0x412e('0x9')]+'Interaction']){rpc[_0x4bfb58['channel']+_0x412e('0xa')][_0x412e('0xb')](_0x4bfb58[_0x412e('0xc')]['id'],_0x5e4176)[_0x412e('0xd')](function(_0x488fcf){logger[_0x412e('0x6')]('[%s][CLOSE]\x20interaction\x20%s\x20has\x20been\x20closed!',_0xbe115f,_0x4bfb58[_0x412e('0xc')]['id']);})[_0x412e('0xe')](function(_0x2a4ad3){logger[_0x412e('0xf')]('[%s][CLOSE]\x20%s',_0xbe115f,JSON[_0x412e('0x10')](_0x2a4ad3));})[_0x412e('0x11')](function(){_0x4c1cb8[_0x412e('0x12')]();});}}catch(_0x3e0f39){logger['error']('[%s][CLOSE]\x20%s',_0xbe115f,JSON[_0x412e('0x10')](_0x3e0f39));_0x4c1cb8['stop']();}};};
\ No newline at end of file
+var _0xc98f=['../../rpc/mailInteraction','../../rpc/faxInteraction','consequence','info','[%s][CLOSE]\x20reason\x20%s','format','YYYY-MM-DD\x20HH:mm:ss','channel','Interaction','interaction','[%s][CLOSE]\x20interaction\x20%s\x20has\x20been\x20closed!','catch','stop','[%s][CLOSE]\x20%s','../../../../config/logger','routing','../../rpc/openchannelInteraction'];(function(_0x37ffea,_0x25b006){var _0x2e2615=function(_0x5e6c74){while(--_0x5e6c74){_0x37ffea['push'](_0x37ffea['shift']());}};_0x2e2615(++_0x25b006);}(_0xc98f,0x1c8));var _0xfc98=function(_0x29ad98,_0x1ab4e2){_0x29ad98=_0x29ad98-0x0;var _0x4eba8d=_0xc98f[_0x29ad98];return _0x4eba8d;};'use strict';var moment=require('moment');var logger=require(_0xfc98('0x0'))(_0xfc98('0x1'));var rpc={'chatInteraction':require('../../rpc/chatInteraction'),'openchannelInteraction':require(_0xfc98('0x2')),'smsInteraction':require('../../rpc/smsInteraction'),'mailInteraction':require(_0xfc98('0x3')),'faxInteraction':require(_0xfc98('0x4')),'whatsappInteraction':require('../../rpc/whatsappInteraction')};exports[_0xfc98('0x5')]=function(_0x48d002,_0x343e99,_0x4a8116,_0x138a30){return function(_0x1f27f5){try{logger[_0xfc98('0x6')](_0xfc98('0x7'),_0x48d002,_0x343e99[0x0]);var _0x2e9614={'closed':0x1,'closedAt':moment()[_0xfc98('0x8')](_0xfc98('0x9')),'closeReason':'system','disposition':_0x343e99[0x0]};if(rpc[_0x138a30[_0xfc98('0xa')]+_0xfc98('0xb')]){rpc[_0x138a30['channel']+_0xfc98('0xb')]['update'](_0x138a30[_0xfc98('0xc')]['id'],_0x2e9614)['then'](function(_0x566fc8){logger[_0xfc98('0x6')](_0xfc98('0xd'),_0x48d002,_0x138a30[_0xfc98('0xc')]['id']);})[_0xfc98('0xe')](function(_0x298289){logger['error']('[%s][CLOSE]\x20%s',_0x48d002,JSON['stringify'](_0x298289));})['finally'](function(){_0x1f27f5[_0xfc98('0xf')]();});}}catch(_0x4744b9){logger['error'](_0xfc98('0x10'),_0x48d002,JSON['stringify'](_0x4744b9));_0x1f27f5[_0xfc98('0xf')]();}};};
\ No newline at end of file
index 2a9f210..f6aa9f6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x277c=['message','then','result','fulfillment','speech','providerName','dialogflow','providerResponse','stringify','create','lodash','apiai-promise','md5','./utils','../../../../config/logger','routing','../../rpc/chatMessage','../../rpc/openchannelMessage','../../rpc/mailMessage','../../rpc/whatsappMessage','isNil','UserId','info','[%s][DIALOGFLOW]\x20%s','Agent\x20is\x20managing\x20the\x20interaction.\x20Go\x20to\x20next\x20application.','next','YYYY-MM-DD\x20HH:mm:ss','out','channel','sms','whatsapp','interaction','phone','ChatWebsiteId','account','upperFirst','created','isEmpty','Message','body','catch','error','finally','[%s][DIALOGFLOW]\x20Welcome\x20Message\x20has\x20been\x20sent!','stop','[%s][DIALOGFLOW]\x20Welcome\x20Message\x20is\x20empty.\x20It\x20will\x20wait\x20for\x20a\x20message\x20from\x20customer!','textRequest'];(function(_0x502c7d,_0x2f1285){var _0x30b7ed=function(_0x2d92f3){while(--_0x2d92f3){_0x502c7d['push'](_0x502c7d['shift']());}};_0x30b7ed(++_0x2f1285);}(_0x277c,0x153));var _0xc277=function(_0x1d7440,_0x3bb25e){_0x1d7440=_0x1d7440-0x0;var _0x302209=_0x277c[_0x1d7440];return _0x302209;};'use strict';var _=require(_0xc277('0x0'));var moment=require('moment');var apiai=require(_0xc277('0x1'));var md5=require(_0xc277('0x2'));var utils=require(_0xc277('0x3'));var logger=require(_0xc277('0x4'))(_0xc277('0x5'));var rpc={'chatMessage':require(_0xc277('0x6')),'openchannelMessage':require(_0xc277('0x7')),'mailMessage':require(_0xc277('0x8')),'smsMessage':require('../../rpc/smsMessage'),'faxMessage':require('../../rpc/faxMessage'),'whatsappMessage':require(_0xc277('0x9'))};exports['consequence']=function(_0x77e168,_0x54d634){return function(_0x378158){try{if(!_[_0xc277('0xa')](this['interaction'][_0xc277('0xb')])){logger[_0xc277('0xc')](_0xc277('0xd'),_0x77e168,_0xc277('0xe'));return _0x378158[_0xc277('0xf')]();}var _0x1e4087={'ContactId':this['contact']['id'],'sentAt':moment()['format'](_0xc277('0x10')),'direction':_0xc277('0x11')};if(this[_0xc277('0x12')]===_0xc277('0x13')||this['channel']===_0xc277('0x14')){_0x1e4087['phone']=this[_0xc277('0x15')][_0xc277('0x16')];}var _0x1850eb=this[_0xc277('0x12')];if(_0x1850eb==='chat'){_0x1e4087[_0xc277('0x17')]=this[_0xc277('0x18')]['id'];}else{_0x1e4087[_[_0xc277('0x19')](_0x1850eb)+'AccountId']=this['account']['id'];}_0x1e4087[_[_0xc277('0x19')](_0x1850eb)+'InteractionId']=this[_0xc277('0x15')]['id'];if(this['interaction'][_0xc277('0x1a')]){var _0x1162b9=_0x54d634[0x2];if(!_[_0xc277('0x1b')](_0x1162b9)){_0x1e4087['body']=utils['getMustacheRender'](_0x1162b9,this);return rpc[_0x1850eb+_0xc277('0x1c')]['create'](_0x1e4087)['then'](function(_0x1e1a9b){logger[_0xc277('0xc')](_0xc277('0xd'),_0x77e168,_0x1e4087[_0xc277('0x1d')]);})[_0xc277('0x1e')](function(_0x355eee){logger[_0xc277('0x1f')]('[%s][DIALOGFLOW]\x20%s',_0x77e168,JSON['stringify'](_0x355eee));})[_0xc277('0x20')](function(){logger[_0xc277('0xc')](_0xc277('0x21'),_0x77e168);_0x378158[_0xc277('0x22')]();});}else{logger[_0xc277('0xc')](_0xc277('0x23'),_0x77e168);_0x378158[_0xc277('0x22')]();}}else{var _0x42cb0b=this;var _0x1bc888=apiai(_0x54d634[0x0],{'language':_0x54d634[0x1]||'en'});return _0x1bc888[_0xc277('0x24')](this[_0xc277('0x25')]['body'],{'sessionId':md5(this[_0xc277('0x15')]['id'])})[_0xc277('0x26')](function(_0x54b2e1){_0x42cb0b[_0xc277('0x1d')]['dialogflow']=_0x54b2e1;_0x1e4087['body']=_0x54b2e1[_0xc277('0x27')][_0xc277('0x28')][_0xc277('0x29')];_0x1e4087[_0xc277('0x2a')]=_0xc277('0x2b');_0x1e4087[_0xc277('0x2c')]=JSON[_0xc277('0x2d')](_0x54b2e1);return rpc[_0x1850eb+_0xc277('0x1c')][_0xc277('0x2e')](_0x1e4087)[_0xc277('0x26')](function(_0x40d17a){logger['info']('[%s][DIALOGFLOW]\x20%s',_0x77e168,_0x1e4087[_0xc277('0x1d')]);if(_0x54b2e1[_0xc277('0x27')]['metadata']['endConversation']){_0x378158[_0xc277('0xf')]();}else{_0x378158[_0xc277('0x22')]();}})[_0xc277('0x1e')](function(_0x21c78c){logger[_0xc277('0x1f')]('[%s][DIALOGFLOW]\x20%s',_0x77e168,JSON[_0xc277('0x2d')](_0x21c78c));_0x378158['next']();});})[_0xc277('0x1e')](function(_0x74ff17){logger[_0xc277('0x1f')](_0xc277('0xd'),_0x77e168,_0x74ff17['message']);_0x378158[_0xc277('0xf')]();});}}catch(_0x5a7bb6){logger[_0xc277('0x1f')](_0xc277('0xd'),_0x77e168,JSON[_0xc277('0x2d')](_0x5a7bb6));_0x378158[_0xc277('0x22')]();}};};
\ No newline at end of file
+var _0x12e9=['textRequest','dialogflow','result','speech','providerName','metadata','endConversation','message','apiai-promise','./utils','../../../../config/logger','../../rpc/chatMessage','../../rpc/openchannelMessage','../../rpc/smsMessage','../../rpc/faxMessage','../../rpc/whatsappMessage','consequence','isNil','interaction','UserId','next','contact','format','YYYY-MM-DD\x20HH:mm:ss','channel','sms','whatsapp','phone','chat','ChatWebsiteId','account','AccountId','InteractionId','isEmpty','body','getMustacheRender','create','then','info','[%s][DIALOGFLOW]\x20%s','catch','error','stringify','finally','[%s][DIALOGFLOW]\x20Welcome\x20Message\x20has\x20been\x20sent!','stop','[%s][DIALOGFLOW]\x20Welcome\x20Message\x20is\x20empty.\x20It\x20will\x20wait\x20for\x20a\x20message\x20from\x20customer!'];(function(_0x21a9d9,_0x4d5ac8){var _0x46adce=function(_0xfdd336){while(--_0xfdd336){_0x21a9d9['push'](_0x21a9d9['shift']());}};_0x46adce(++_0x4d5ac8);}(_0x12e9,0x66));var _0x912e=function(_0x34e6b1,_0x12e470){_0x34e6b1=_0x34e6b1-0x0;var _0x5ec1e5=_0x12e9[_0x34e6b1];return _0x5ec1e5;};'use strict';var _=require('lodash');var moment=require('moment');var apiai=require(_0x912e('0x0'));var md5=require('md5');var utils=require(_0x912e('0x1'));var logger=require(_0x912e('0x2'))('routing');var rpc={'chatMessage':require(_0x912e('0x3')),'openchannelMessage':require(_0x912e('0x4')),'mailMessage':require('../../rpc/mailMessage'),'smsMessage':require(_0x912e('0x5')),'faxMessage':require(_0x912e('0x6')),'whatsappMessage':require(_0x912e('0x7'))};exports[_0x912e('0x8')]=function(_0x4f4dbb,_0x2e950a){return function(_0x2ccba9){try{if(!_[_0x912e('0x9')](this[_0x912e('0xa')][_0x912e('0xb')])){logger['info']('[%s][DIALOGFLOW]\x20%s',_0x4f4dbb,'Agent\x20is\x20managing\x20the\x20interaction.\x20Go\x20to\x20next\x20application.');return _0x2ccba9[_0x912e('0xc')]();}var _0x2344a0={'ContactId':this[_0x912e('0xd')]['id'],'sentAt':moment()[_0x912e('0xe')](_0x912e('0xf')),'direction':'out'};if(this[_0x912e('0x10')]===_0x912e('0x11')||this[_0x912e('0x10')]===_0x912e('0x12')){_0x2344a0[_0x912e('0x13')]=this[_0x912e('0xa')][_0x912e('0x13')];}var _0x318f19=this[_0x912e('0x10')];if(_0x318f19===_0x912e('0x14')){_0x2344a0[_0x912e('0x15')]=this[_0x912e('0x16')]['id'];}else{_0x2344a0[_['upperFirst'](_0x318f19)+_0x912e('0x17')]=this['account']['id'];}_0x2344a0[_['upperFirst'](_0x318f19)+_0x912e('0x18')]=this[_0x912e('0xa')]['id'];if(this[_0x912e('0xa')]['created']){var _0x572179=_0x2e950a[0x2];if(!_[_0x912e('0x19')](_0x572179)){_0x2344a0[_0x912e('0x1a')]=utils[_0x912e('0x1b')](_0x572179,this);return rpc[_0x318f19+'Message'][_0x912e('0x1c')](_0x2344a0)[_0x912e('0x1d')](function(_0x3286bb){logger[_0x912e('0x1e')](_0x912e('0x1f'),_0x4f4dbb,_0x2344a0['body']);})[_0x912e('0x20')](function(_0x4709b9){logger[_0x912e('0x21')](_0x912e('0x1f'),_0x4f4dbb,JSON[_0x912e('0x22')](_0x4709b9));})[_0x912e('0x23')](function(){logger[_0x912e('0x1e')](_0x912e('0x24'),_0x4f4dbb);_0x2ccba9[_0x912e('0x25')]();});}else{logger[_0x912e('0x1e')](_0x912e('0x26'),_0x4f4dbb);_0x2ccba9['stop']();}}else{var _0x201bf8=this;var _0x4f1a6f=apiai(_0x2e950a[0x0],{'language':_0x2e950a[0x1]||'en'});return _0x4f1a6f[_0x912e('0x27')](this['message'][_0x912e('0x1a')],{'sessionId':md5(this[_0x912e('0xa')]['id'])})['then'](function(_0x28497d){_0x201bf8[_0x912e('0x1a')][_0x912e('0x28')]=_0x28497d;_0x2344a0[_0x912e('0x1a')]=_0x28497d[_0x912e('0x29')]['fulfillment'][_0x912e('0x2a')];_0x2344a0[_0x912e('0x2b')]=_0x912e('0x28');_0x2344a0['providerResponse']=JSON[_0x912e('0x22')](_0x28497d);return rpc[_0x318f19+'Message'][_0x912e('0x1c')](_0x2344a0)[_0x912e('0x1d')](function(_0xe48a67){logger[_0x912e('0x1e')](_0x912e('0x1f'),_0x4f4dbb,_0x2344a0['body']);if(_0x28497d[_0x912e('0x29')][_0x912e('0x2c')][_0x912e('0x2d')]){_0x2ccba9['next']();}else{_0x2ccba9[_0x912e('0x25')]();}})['catch'](function(_0x4d4845){logger['error'](_0x912e('0x1f'),_0x4f4dbb,JSON['stringify'](_0x4d4845));_0x2ccba9['next']();});})['catch'](function(_0x3f61a2){logger[_0x912e('0x21')](_0x912e('0x1f'),_0x4f4dbb,_0x3f61a2[_0x912e('0x2e')]);_0x2ccba9[_0x912e('0xc')]();});}}catch(_0x235af8){logger[_0x912e('0x21')](_0x912e('0x1f'),_0x4f4dbb,JSON[_0x912e('0x22')](_0x235af8));_0x2ccba9[_0x912e('0x25')]();}};};
\ No newline at end of file
index b0ea2ce..d3e67b2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd1e7=['interaction','Agent\x20is\x20managing\x20the\x20interaction.\x20Go\x20to\x20next\x20application.','next','contact','format','YYYY-MM-DD\x20HH:mm:ss','out','sms','channel','whatsapp','chat','account','upperFirst','AccountId','isEmpty','getMustacheRender','create','[%s][DIALOGFLOWV2]\x20Welcome\x20Message\x20has\x20been\x20sent!','stop','[%s][DIALOGFLOWV2]\x20Welcome\x20Message\x20is\x20empty.\x20It\x20will\x20wait\x20for\x20a\x20message\x20from\x20customer!','replace','SessionsClient','sessionPath','detectIntent','dialogflowV2','queryResult','diagnosticInfo','fields','end_conversation','boolValue','DIALOGFLOWV2_ACTION','action','DIALOGFLOWV2_ALLREQUIREDPARAMSPRESENT','allRequiredParamsPresent','DIALOGFLOWV2_ENDCONVERSATION','DIALOGFLOWV2_INTENTNAME','intent','displayName','isFallback','languageCode','DIALOGFLOWV2_SCORE','intentDetectionConfidence','providerResponse','length','push','fulfillmentText','all','message','lodash','dialogflow','md5','moment','bluebird','routing','../../rpc/chatMessage','../../rpc/openchannelMessage','../../rpc/mailMessage','../../rpc/smsMessage','../../rpc/faxMessage','clone','body','Message','then','info','catch','error','[%s][DIALOGFLOWV2]\x20%s','stringify','consequence','isNil'];(function(_0x5e8c0f,_0x1f20d9){var _0x568dbe=function(_0xdc6797){while(--_0xdc6797){_0x5e8c0f['push'](_0x5e8c0f['shift']());}};_0x568dbe(++_0x1f20d9);}(_0xd1e7,0x1d4));var _0x7d1e=function(_0x4eeea9,_0x425ba0){_0x4eeea9=_0x4eeea9-0x0;var _0x4c1e70=_0xd1e7[_0x4eeea9];return _0x4c1e70;};'use strict';var _=require(_0x7d1e('0x0'));var dialogflow=require(_0x7d1e('0x1'));var md5=require(_0x7d1e('0x2'));var moment=require(_0x7d1e('0x3'));var Promise=require(_0x7d1e('0x4'));var logger=require('../../../../config/logger')(_0x7d1e('0x5'));var utils=require('./utils');var rpc={'chatMessage':require(_0x7d1e('0x6')),'openchannelMessage':require(_0x7d1e('0x7')),'mailMessage':require(_0x7d1e('0x8')),'smsMessage':require(_0x7d1e('0x9')),'faxMessage':require(_0x7d1e('0xa')),'whatsappMessage':require('../../rpc/whatsappMessage')};function createMessage(_0x59a23a,_0x4d3be2,_0x383ee4,_0x4fb597){return new Promise(function(_0x1ff178,_0x5eeef2){var _0x29b051=_[_0x7d1e('0xb')](_0x383ee4);_0x29b051[_0x7d1e('0xc')]=_0x4fb597;return rpc[_0x4d3be2+_0x7d1e('0xd')]['create'](_0x29b051)[_0x7d1e('0xe')](function(){logger[_0x7d1e('0xf')]('[%s][DIALOGFLOWV2]\x20%s',_0x59a23a,_0x29b051[_0x7d1e('0xc')]);_0x1ff178();})[_0x7d1e('0x10')](function(_0x38209e){logger[_0x7d1e('0x11')](_0x7d1e('0x12'),_0x59a23a,JSON[_0x7d1e('0x13')](_0x38209e));_0x5eeef2(_0x38209e);});});}exports[_0x7d1e('0x14')]=function(_0x3c2106,_0x4542e1){return function(_0x4bbac0){try{if(!_[_0x7d1e('0x15')](this[_0x7d1e('0x16')]['UserId'])){logger[_0x7d1e('0xf')](_0x7d1e('0x12'),_0x3c2106,_0x7d1e('0x17'));return _0x4bbac0[_0x7d1e('0x18')]();}var _0x1ca53f={'ContactId':this[_0x7d1e('0x19')]['id'],'sentAt':moment()[_0x7d1e('0x1a')](_0x7d1e('0x1b')),'direction':_0x7d1e('0x1c')};if(this['channel']===_0x7d1e('0x1d')||this[_0x7d1e('0x1e')]===_0x7d1e('0x1f')){_0x1ca53f['phone']=this['interaction']['phone'];}var _0x2dded4=this[_0x7d1e('0x1e')];if(_0x2dded4===_0x7d1e('0x20')){_0x1ca53f['ChatWebsiteId']=this[_0x7d1e('0x21')]['id'];}else{_0x1ca53f[_[_0x7d1e('0x22')](_0x2dded4)+_0x7d1e('0x23')]=this['account']['id'];}_0x1ca53f[_[_0x7d1e('0x22')](_0x2dded4)+'InteractionId']=this[_0x7d1e('0x16')]['id'];if(this[_0x7d1e('0x16')]['created']){var _0x3ceed4=_0x4542e1[0x4];if(!_[_0x7d1e('0x24')](_0x3ceed4)){_0x1ca53f[_0x7d1e('0xc')]=utils[_0x7d1e('0x25')](_0x3ceed4,this);return rpc[_0x2dded4+_0x7d1e('0xd')][_0x7d1e('0x26')](_0x1ca53f)['then'](function(_0x65267c){logger[_0x7d1e('0xf')](_0x7d1e('0x12'),_0x3c2106,_0x1ca53f[_0x7d1e('0xc')]);})[_0x7d1e('0x10')](function(_0x334be6){logger[_0x7d1e('0x11')](_0x7d1e('0x12'),_0x3c2106,JSON[_0x7d1e('0x13')](_0x334be6));})['finally'](function(){logger[_0x7d1e('0xf')](_0x7d1e('0x27'),_0x3c2106);_0x4bbac0[_0x7d1e('0x28')]();});}else{logger[_0x7d1e('0xf')](_0x7d1e('0x29'),_0x3c2106);_0x4bbac0['stop']();}}else{var _0x2a4f67=this;var _0x30b4f8=_0x4542e1[0x2][_0x7d1e('0x2a')](/\\n/g,'\x0a');var _0x3e86fb={'credentials':{'private_key':_0x30b4f8,'client_email':_0x4542e1[0x1]}};var _0x322e15=new dialogflow[(_0x7d1e('0x2b'))](_0x3e86fb);var _0x200950=_0x322e15[_0x7d1e('0x2c')](_0x4542e1[0x0],md5(_0x2a4f67[_0x7d1e('0x16')]['id']));var _0x336bc2={'session':_0x200950,'queryInput':{'text':{'text':_0x2a4f67['message'][_0x7d1e('0xc')],'languageCode':_0x4542e1[0x3]||'en'}}};return _0x322e15[_0x7d1e('0x2d')](_0x336bc2)['then'](function(_0x473306){if(_0x473306&&_0x473306['length']){_0x2a4f67[_0x7d1e('0xc')][_0x7d1e('0x2e')]=_0x473306;var _0x14b8da=_0x473306[0x0];var _0x3af48f=_0x14b8da[_0x7d1e('0x2f')][_0x7d1e('0x30')]&&_0x14b8da[_0x7d1e('0x2f')][_0x7d1e('0x30')][_0x7d1e('0x31')]?_0x14b8da[_0x7d1e('0x2f')][_0x7d1e('0x30')][_0x7d1e('0x31')][_0x7d1e('0x32')][_0x7d1e('0x33')]:![];_0x2a4f67[_0x7d1e('0xc')][_0x7d1e('0x34')]=_0x14b8da[_0x7d1e('0x2f')][_0x7d1e('0x35')];_0x2a4f67[_0x7d1e('0xc')][_0x7d1e('0x36')]=_0x14b8da['queryResult'][_0x7d1e('0x37')];_0x2a4f67['body'][_0x7d1e('0x38')]=_0x14b8da['queryResult']['diagnosticInfo']&&_0x14b8da[_0x7d1e('0x2f')][_0x7d1e('0x30')][_0x7d1e('0x31')]?_0x14b8da['queryResult'][_0x7d1e('0x30')]['fields'][_0x7d1e('0x32')][_0x7d1e('0x33')]:![];_0x2a4f67[_0x7d1e('0xc')][_0x7d1e('0x39')]=_0x14b8da['queryResult']['intent']['name'];_0x2a4f67[_0x7d1e('0xc')]['DIALOGFLOWV2_INTENTDISPLAYNAME']=_0x14b8da['queryResult'][_0x7d1e('0x3a')][_0x7d1e('0x3b')];_0x2a4f67[_0x7d1e('0xc')]['DIALOGFLOWV2_ISFALLBACKINTENT']=_0x14b8da[_0x7d1e('0x2f')][_0x7d1e('0x3a')][_0x7d1e('0x3c')];_0x2a4f67[_0x7d1e('0xc')]['DIALOGFLOWV2_LANGUAGECODE']=_0x14b8da['queryResult'][_0x7d1e('0x3d')];_0x2a4f67[_0x7d1e('0xc')]['DIALOGFLOWV2_QUERYTEXT']=_0x14b8da['queryResult']['queryText'];_0x2a4f67['body'][_0x7d1e('0x3e')]=_0x14b8da[_0x7d1e('0x2f')][_0x7d1e('0x3f')];_0x1ca53f['providerName']='dialogflowV2';_0x1ca53f[_0x7d1e('0x40')]=JSON[_0x7d1e('0x13')](_0x473306);var _0x5ddefe=[];for(var _0x189654=0x0;_0x189654<_0x473306[_0x7d1e('0x41')];_0x189654++){var _0x28dbdd=_0x473306[_0x189654];if(_0x28dbdd&&_0x28dbdd['queryResult']&&_0x28dbdd[_0x7d1e('0x2f')]['fulfillmentText']){_0x5ddefe[_0x7d1e('0x42')](createMessage(_0x3c2106,_0x2dded4,_0x1ca53f,_0x28dbdd[_0x7d1e('0x2f')][_0x7d1e('0x43')]));}}return Promise[_0x7d1e('0x44')](_0x5ddefe)['then'](function(){if(_0x3af48f){_0x4bbac0[_0x7d1e('0x18')]();}else{_0x4bbac0['stop']();}})['catch'](function(_0x362b91){logger['error'](_0x7d1e('0x12'),_0x3c2106,JSON[_0x7d1e('0x13')](_0x362b91));_0x4bbac0[_0x7d1e('0x18')]();});}})[_0x7d1e('0x10')](function(_0x2e568d){logger[_0x7d1e('0x11')](_0x7d1e('0x12'),_0x3c2106,_0x2e568d[_0x7d1e('0x45')]);_0x4bbac0[_0x7d1e('0x18')]();});}}catch(_0x112d7c){logger[_0x7d1e('0x11')](_0x7d1e('0x12'),_0x3c2106,JSON[_0x7d1e('0x13')](_0x112d7c));_0x4bbac0['stop']();}};};
\ No newline at end of file
+var _0x5a96=['Agent\x20is\x20managing\x20the\x20interaction.\x20Go\x20to\x20next\x20application.','next','format','YYYY-MM-DD\x20HH:mm:ss','out','channel','sms','phone','interaction','ChatWebsiteId','upperFirst','AccountId','created','isEmpty','getMustacheRender','Message','stop','[%s][DIALOGFLOWV2]\x20Welcome\x20Message\x20is\x20empty.\x20It\x20will\x20wait\x20for\x20a\x20message\x20from\x20customer!','replace','SessionsClient','sessionPath','message','length','dialogflowV2','queryResult','diagnosticInfo','fields','end_conversation','DIALOGFLOWV2_ACTION','action','DIALOGFLOWV2_ALLREQUIREDPARAMSPRESENT','allRequiredParamsPresent','DIALOGFLOWV2_ENDCONVERSATION','DIALOGFLOWV2_INTENTNAME','intent','name','DIALOGFLOWV2_INTENTDISPLAYNAME','displayName','DIALOGFLOWV2_ISFALLBACKINTENT','isFallback','DIALOGFLOWV2_LANGUAGECODE','languageCode','DIALOGFLOWV2_QUERYTEXT','queryText','DIALOGFLOWV2_SCORE','intentDetectionConfidence','providerResponse','fulfillmentText','push','all','lodash','dialogflow','moment','bluebird','../../../../config/logger','routing','./utils','../../rpc/chatMessage','../../rpc/mailMessage','clone','body','create','then','info','[%s][DIALOGFLOWV2]\x20%s','catch','error','stringify','UserId'];(function(_0x5607ba,_0x603e78){var _0x23bf86=function(_0x2ed4fc){while(--_0x2ed4fc){_0x5607ba['push'](_0x5607ba['shift']());}};_0x23bf86(++_0x603e78);}(_0x5a96,0xbc));var _0x65a9=function(_0x3bece3,_0x10a102){_0x3bece3=_0x3bece3-0x0;var _0x4f033c=_0x5a96[_0x3bece3];return _0x4f033c;};'use strict';var _=require(_0x65a9('0x0'));var dialogflow=require(_0x65a9('0x1'));var md5=require('md5');var moment=require(_0x65a9('0x2'));var Promise=require(_0x65a9('0x3'));var logger=require(_0x65a9('0x4'))(_0x65a9('0x5'));var utils=require(_0x65a9('0x6'));var rpc={'chatMessage':require(_0x65a9('0x7')),'openchannelMessage':require('../../rpc/openchannelMessage'),'mailMessage':require(_0x65a9('0x8')),'smsMessage':require('../../rpc/smsMessage'),'faxMessage':require('../../rpc/faxMessage'),'whatsappMessage':require('../../rpc/whatsappMessage')};function createMessage(_0x596d73,_0x94fce1,_0x107fea,_0x5ae332){return new Promise(function(_0x3330b9,_0x49ed58){var _0xa8a5d8=_[_0x65a9('0x9')](_0x107fea);_0xa8a5d8[_0x65a9('0xa')]=_0x5ae332;return rpc[_0x94fce1+'Message'][_0x65a9('0xb')](_0xa8a5d8)[_0x65a9('0xc')](function(){logger[_0x65a9('0xd')](_0x65a9('0xe'),_0x596d73,_0xa8a5d8['body']);_0x3330b9();})[_0x65a9('0xf')](function(_0x4abfcd){logger[_0x65a9('0x10')](_0x65a9('0xe'),_0x596d73,JSON[_0x65a9('0x11')](_0x4abfcd));_0x49ed58(_0x4abfcd);});});}exports['consequence']=function(_0x5ac610,_0x1fc8b0){return function(_0x3f7e15){try{if(!_['isNil'](this['interaction'][_0x65a9('0x12')])){logger[_0x65a9('0xd')](_0x65a9('0xe'),_0x5ac610,_0x65a9('0x13'));return _0x3f7e15[_0x65a9('0x14')]();}var _0x47a11d={'ContactId':this['contact']['id'],'sentAt':moment()[_0x65a9('0x15')](_0x65a9('0x16')),'direction':_0x65a9('0x17')};if(this[_0x65a9('0x18')]===_0x65a9('0x19')||this[_0x65a9('0x18')]==='whatsapp'){_0x47a11d[_0x65a9('0x1a')]=this[_0x65a9('0x1b')]['phone'];}var _0x65b278=this[_0x65a9('0x18')];if(_0x65b278==='chat'){_0x47a11d[_0x65a9('0x1c')]=this['account']['id'];}else{_0x47a11d[_[_0x65a9('0x1d')](_0x65b278)+_0x65a9('0x1e')]=this['account']['id'];}_0x47a11d[_[_0x65a9('0x1d')](_0x65b278)+'InteractionId']=this[_0x65a9('0x1b')]['id'];if(this[_0x65a9('0x1b')][_0x65a9('0x1f')]){var _0x15ef4c=_0x1fc8b0[0x4];if(!_[_0x65a9('0x20')](_0x15ef4c)){_0x47a11d[_0x65a9('0xa')]=utils[_0x65a9('0x21')](_0x15ef4c,this);return rpc[_0x65b278+_0x65a9('0x22')][_0x65a9('0xb')](_0x47a11d)['then'](function(_0x1af517){logger[_0x65a9('0xd')]('[%s][DIALOGFLOWV2]\x20%s',_0x5ac610,_0x47a11d['body']);})[_0x65a9('0xf')](function(_0x10bdb1){logger['error']('[%s][DIALOGFLOWV2]\x20%s',_0x5ac610,JSON[_0x65a9('0x11')](_0x10bdb1));})['finally'](function(){logger[_0x65a9('0xd')]('[%s][DIALOGFLOWV2]\x20Welcome\x20Message\x20has\x20been\x20sent!',_0x5ac610);_0x3f7e15[_0x65a9('0x23')]();});}else{logger[_0x65a9('0xd')](_0x65a9('0x24'),_0x5ac610);_0x3f7e15[_0x65a9('0x23')]();}}else{var _0x37ecc8=this;var _0xb5feb6=_0x1fc8b0[0x2][_0x65a9('0x25')](/\\n/g,'\x0a');var _0x5d9bd3={'credentials':{'private_key':_0xb5feb6,'client_email':_0x1fc8b0[0x1]}};var _0x5ce376=new dialogflow[(_0x65a9('0x26'))](_0x5d9bd3);var _0x51712=_0x5ce376[_0x65a9('0x27')](_0x1fc8b0[0x0],md5(_0x37ecc8['interaction']['id']));var _0x42b0c4={'session':_0x51712,'queryInput':{'text':{'text':_0x37ecc8[_0x65a9('0x28')][_0x65a9('0xa')],'languageCode':_0x1fc8b0[0x3]||'en'}}};return _0x5ce376['detectIntent'](_0x42b0c4)['then'](function(_0x5126c8){if(_0x5126c8&&_0x5126c8[_0x65a9('0x29')]){_0x37ecc8[_0x65a9('0xa')][_0x65a9('0x2a')]=_0x5126c8;var _0x3170ac=_0x5126c8[0x0];var _0x145eab=_0x3170ac['queryResult']['diagnosticInfo']&&_0x3170ac[_0x65a9('0x2b')][_0x65a9('0x2c')][_0x65a9('0x2d')]?_0x3170ac[_0x65a9('0x2b')]['diagnosticInfo']['fields'][_0x65a9('0x2e')]['boolValue']:![];_0x37ecc8[_0x65a9('0xa')][_0x65a9('0x2f')]=_0x3170ac[_0x65a9('0x2b')][_0x65a9('0x30')];_0x37ecc8[_0x65a9('0xa')][_0x65a9('0x31')]=_0x3170ac[_0x65a9('0x2b')][_0x65a9('0x32')];_0x37ecc8[_0x65a9('0xa')][_0x65a9('0x33')]=_0x3170ac[_0x65a9('0x2b')][_0x65a9('0x2c')]&&_0x3170ac[_0x65a9('0x2b')]['diagnosticInfo']['fields']?_0x3170ac[_0x65a9('0x2b')][_0x65a9('0x2c')][_0x65a9('0x2d')]['end_conversation']['boolValue']:![];_0x37ecc8[_0x65a9('0xa')][_0x65a9('0x34')]=_0x3170ac[_0x65a9('0x2b')][_0x65a9('0x35')][_0x65a9('0x36')];_0x37ecc8['body'][_0x65a9('0x37')]=_0x3170ac['queryResult'][_0x65a9('0x35')][_0x65a9('0x38')];_0x37ecc8['body'][_0x65a9('0x39')]=_0x3170ac[_0x65a9('0x2b')]['intent'][_0x65a9('0x3a')];_0x37ecc8['body'][_0x65a9('0x3b')]=_0x3170ac[_0x65a9('0x2b')][_0x65a9('0x3c')];_0x37ecc8[_0x65a9('0xa')][_0x65a9('0x3d')]=_0x3170ac[_0x65a9('0x2b')][_0x65a9('0x3e')];_0x37ecc8[_0x65a9('0xa')][_0x65a9('0x3f')]=_0x3170ac['queryResult'][_0x65a9('0x40')];_0x47a11d['providerName']=_0x65a9('0x2a');_0x47a11d[_0x65a9('0x41')]=JSON[_0x65a9('0x11')](_0x5126c8);var _0x4017e7=[];for(var _0x198dea=0x0;_0x198dea<_0x5126c8['length'];_0x198dea++){var _0x403a57=_0x5126c8[_0x198dea];if(_0x403a57&&_0x403a57['queryResult']&&_0x403a57[_0x65a9('0x2b')][_0x65a9('0x42')]){_0x4017e7[_0x65a9('0x43')](createMessage(_0x5ac610,_0x65b278,_0x47a11d,_0x403a57[_0x65a9('0x2b')]['fulfillmentText']));}}return Promise[_0x65a9('0x44')](_0x4017e7)[_0x65a9('0xc')](function(){if(_0x145eab){_0x3f7e15[_0x65a9('0x14')]();}else{_0x3f7e15[_0x65a9('0x23')]();}})[_0x65a9('0xf')](function(_0x53ee03){logger[_0x65a9('0x10')](_0x65a9('0xe'),_0x5ac610,JSON['stringify'](_0x53ee03));_0x3f7e15[_0x65a9('0x14')]();});}})[_0x65a9('0xf')](function(_0x2a212a){logger[_0x65a9('0x10')]('[%s][DIALOGFLOWV2]\x20%s',_0x5ac610,_0x2a212a[_0x65a9('0x28')]);_0x3f7e15[_0x65a9('0x14')]();});}}catch(_0x1f0e3a){logger[_0x65a9('0x10')](_0x65a9('0xe'),_0x5ac610,JSON[_0x65a9('0x11')](_0x1f0e3a));_0x3f7e15['stop']();}};};
\ No newline at end of file
index 1827b82..fa41833 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x612f=['consequence','fromString','replace','length','error','[%s][GOTOIF]\x20%s','map','message','join','stop','priorityTrue','info','[%s][GOTOIF]\x20condition\x20%s\x20is\x20%s\x20try\x20goto\x20priority\x20%s','condition','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','lodash','html-to-text','./utils','string','condition\x20is\x20a\x20string\x20and\x20it\x20is\x20required','number','priority\x20true\x20is\x20a\x20number','priority\x20false\x20is\x20a\x20number'];(function(_0x328efb,_0x92a2d6){var _0x47020f=function(_0x50c2af){while(--_0x50c2af){_0x328efb['push'](_0x328efb['shift']());}};_0x47020f(++_0x92a2d6);}(_0x612f,0x170));var _0xf612=function(_0x5ae3c8,_0x62a22f){_0x5ae3c8=_0x5ae3c8-0x0;var _0x5781b7=_0x612f[_0x5ae3c8];return _0x5781b7;};'use strict';var schema=require(_0xf612('0x0'));var _=require(_0xf612('0x1'));var htmlToText=require(_0xf612('0x2'));var utils=require(_0xf612('0x3'));var logger=require('../../../../config/logger')('routing');var gotoif=schema({'condition':{'type':_0xf612('0x4'),'required':!![],'message':_0xf612('0x5')},'priorityTrue':{'type':_0xf612('0x6'),'message':_0xf612('0x7')},'priorityFalse':{'type':_0xf612('0x6'),'message':_0xf612('0x8')}});exports[_0xf612('0x9')]=function(_0x569bea,_0x4f1987){return function(_0x1f1f9c){try{var _0x24def1={'condition':htmlToText[_0xf612('0xa')](utils['getMustacheRender'](_0x4f1987[0x0],this),{'wordwrap':![]})[_0xf612('0xb')](/<\/?[^>]+(>|$)/g,''),'priorityTrue':_0x4f1987[0x1],'priorityFalse':_0x4f1987[0x2]};var _0x58bb7f=gotoif[_0xf612('0x0')](_0x24def1,{'typecast':!![]});if(_0x58bb7f[_0xf612('0xc')]){logger[_0xf612('0xd')](_0xf612('0xe'),_0x569bea,_[_0xf612('0xf')](_0x58bb7f,_0xf612('0x10'))[_0xf612('0x11')](',\x20'));_0x1f1f9c[_0xf612('0x12')]();}else{try{var _0x183bfe=eval('('+_0x24def1['condition']+')');var _0x526a74=_0x183bfe?_0x24def1[_0xf612('0x13')]:_0x24def1['priorityFalse'];logger[_0xf612('0x14')](_0xf612('0x15'),_0x569bea,_0x24def1[_0xf612('0x16')],_0x183bfe,_0x526a74||_0xf612('0x17'));if(_0x526a74){var _0x4d03f2=_['findIndex'](_0x1f1f9c[_0xf612('0x18')](),{'p':_0x526a74});if(_0x4d03f2>=0x0){logger[_0xf612('0x14')](_0xf612('0x19'),_0x569bea,_0x526a74||_0xf612('0x17'),_0x4d03f2);_0x1f1f9c[_0xf612('0x17')](_0x4d03f2);}else{logger[_0xf612('0x14')](_0xf612('0x1a'),_0x569bea,_0x526a74||_0xf612('0x17'));_0x1f1f9c[_0xf612('0x12')]();}}else{_0x1f1f9c[_0xf612('0x17')]();}}catch(_0x4b3100){logger[_0xf612('0xd')](_0xf612('0x1b'),_0x569bea,_0x4b3100['message']);_0x1f1f9c[_0xf612('0x12')]();}}}catch(_0x41732a){logger[_0xf612('0xd')](_0xf612('0xe'),_0x569bea,JSON[_0xf612('0x1c')](_0x41732a));_0x1f1f9c[_0xf612('0x12')]();}};};
\ No newline at end of file
+var _0x4abe=['info','[%s][GOTOIF]\x20priority\x20%s\x20found\x20at\x20index:\x20%s','[%s][GOTOIF]\x20priority\x20%s\x20not\x20found','[%s][GOTOIF]\x20%s','stringify','validate','html-to-text','./utils','routing','condition\x20is\x20a\x20string\x20and\x20it\x20is\x20required','number','priority\x20false\x20is\x20a\x20number','consequence','getMustacheRender','replace','length','error','map','stop','condition','priorityTrue','priorityFalse','next','findIndex','rules'];(function(_0x2922f8,_0x56658a){var _0x437608=function(_0xa1ac9a){while(--_0xa1ac9a){_0x2922f8['push'](_0x2922f8['shift']());}};_0x437608(++_0x56658a);}(_0x4abe,0x9b));var _0xe4ab=function(_0x2a0f5a,_0x5286f9){_0x2a0f5a=_0x2a0f5a-0x0;var _0xcbdbc4=_0x4abe[_0x2a0f5a];return _0xcbdbc4;};'use strict';var schema=require(_0xe4ab('0x0'));var _=require('lodash');var htmlToText=require(_0xe4ab('0x1'));var utils=require(_0xe4ab('0x2'));var logger=require('../../../../config/logger')(_0xe4ab('0x3'));var gotoif=schema({'condition':{'type':'string','required':!![],'message':_0xe4ab('0x4')},'priorityTrue':{'type':_0xe4ab('0x5'),'message':'priority\x20true\x20is\x20a\x20number'},'priorityFalse':{'type':_0xe4ab('0x5'),'message':_0xe4ab('0x6')}});exports[_0xe4ab('0x7')]=function(_0x2ae431,_0x2c89a8){return function(_0x11936c){try{var _0x154c08={'condition':htmlToText['fromString'](utils[_0xe4ab('0x8')](_0x2c89a8[0x0],this),{'wordwrap':![]})[_0xe4ab('0x9')](/<\/?[^>]+(>|$)/g,''),'priorityTrue':_0x2c89a8[0x1],'priorityFalse':_0x2c89a8[0x2]};var _0x193f98=gotoif['validate'](_0x154c08,{'typecast':!![]});if(_0x193f98[_0xe4ab('0xa')]){logger[_0xe4ab('0xb')]('[%s][GOTOIF]\x20%s',_0x2ae431,_[_0xe4ab('0xc')](_0x193f98,'message')['join'](',\x20'));_0x11936c[_0xe4ab('0xd')]();}else{try{var _0x5c0722=eval('('+_0x154c08[_0xe4ab('0xe')]+')');var _0x55dd84=_0x5c0722?_0x154c08[_0xe4ab('0xf')]:_0x154c08[_0xe4ab('0x10')];logger['info']('[%s][GOTOIF]\x20condition\x20%s\x20is\x20%s\x20try\x20goto\x20priority\x20%s',_0x2ae431,_0x154c08[_0xe4ab('0xe')],_0x5c0722,_0x55dd84||_0xe4ab('0x11'));if(_0x55dd84){var _0x4f6d49=_[_0xe4ab('0x12')](_0x11936c[_0xe4ab('0x13')](),{'p':_0x55dd84});if(_0x4f6d49>=0x0){logger[_0xe4ab('0x14')](_0xe4ab('0x15'),_0x2ae431,_0x55dd84||_0xe4ab('0x11'),_0x4f6d49);_0x11936c[_0xe4ab('0x11')](_0x4f6d49);}else{logger['info'](_0xe4ab('0x16'),_0x2ae431,_0x55dd84||_0xe4ab('0x11'));_0x11936c[_0xe4ab('0xd')]();}}else{_0x11936c[_0xe4ab('0x11')]();}}catch(_0x141377){logger[_0xe4ab('0xb')]('[%s][GOTOIF]\x20eval\x20error:\x20%s',_0x2ae431,_0x141377['message']);_0x11936c[_0xe4ab('0xd')]();}}}catch(_0x5bd515){logger[_0xe4ab('0xb')](_0xe4ab('0x17'),_0x2ae431,JSON[_0xe4ab('0x18')](_0x5bd515));_0x11936c['stop']();}};};
\ No newline at end of file
index 9d32856..c3dba5a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd8a8=['[%s][GOTOP]\x20priority\x20%s\x20not\x20found','stringify','lodash','number','priority\x20is\x20a\x20number\x20and\x20it\x20is\x20required','validate','length','error','[%s][GOTOP]\x20%s','map','message','stop','info','[%s][GOTOP]\x20priority\x20%s','priority','findIndex','rules','next'];(function(_0x490ec6,_0x218d9b){var _0x595852=function(_0x4e41d0){while(--_0x4e41d0){_0x490ec6['push'](_0x490ec6['shift']());}};_0x595852(++_0x218d9b);}(_0xd8a8,0x1a0));var _0x8d8a=function(_0x147a08,_0x41aad2){_0x147a08=_0x147a08-0x0;var _0x433e13=_0xd8a8[_0x147a08];return _0x433e13;};'use strict';var schema=require('validate');var _=require(_0x8d8a('0x0'));var logger=require('../../../../config/logger')('routing');var gotop=schema({'priority':{'type':_0x8d8a('0x1'),'required':!![],'message':_0x8d8a('0x2')}});exports['consequence']=function(_0x1d6ac1,_0x5d4517){return function(_0x5388cf){try{var _0x1bc532={'priority':_0x5d4517[0x0]};var _0x43126f=gotop[_0x8d8a('0x3')](_0x1bc532,{'typecast':!![]});if(_0x43126f[_0x8d8a('0x4')]){logger[_0x8d8a('0x5')](_0x8d8a('0x6'),_0x1d6ac1,_[_0x8d8a('0x7')](_0x43126f,_0x8d8a('0x8'))['join'](',\x20'));_0x5388cf[_0x8d8a('0x9')]();}else{logger[_0x8d8a('0xa')](_0x8d8a('0xb'),_0x1d6ac1,_0x1bc532[_0x8d8a('0xc')]);if(_0x1bc532[_0x8d8a('0xc')]){var _0xe6f637=_[_0x8d8a('0xd')](_0x5388cf[_0x8d8a('0xe')](),{'p':_0x1bc532[_0x8d8a('0xc')]});if(_0xe6f637>=0x0){logger[_0x8d8a('0xa')]('[%s][GOTOP]\x20priority\x20%s\x20found\x20at\x20index:\x20%s',_0x1d6ac1,_0x1bc532['priority']||_0x8d8a('0xf'),_0xe6f637);_0x5388cf[_0x8d8a('0xf')](_0xe6f637);}else{logger['info'](_0x8d8a('0x10'),_0x1d6ac1,_0x1bc532[_0x8d8a('0xc')]||_0x8d8a('0xf'));_0x5388cf['stop']();}}else{_0x5388cf[_0x8d8a('0xf')]();}}}catch(_0x3b25dc){logger[_0x8d8a('0x5')](_0x8d8a('0x6'),_0x1d6ac1,JSON[_0x8d8a('0x11')](_0x3b25dc));_0x5388cf['stop']();}};};
\ No newline at end of file
+var _0xf57a=['number','priority\x20is\x20a\x20number\x20and\x20it\x20is\x20required','consequence','length','error','[%s][GOTOP]\x20%s','message','join','info','priority','findIndex','rules','next','stop','stringify','validate','lodash','routing'];(function(_0xf71120,_0x25b7f9){var _0xbe2fd3=function(_0x1acbdd){while(--_0x1acbdd){_0xf71120['push'](_0xf71120['shift']());}};_0xbe2fd3(++_0x25b7f9);}(_0xf57a,0x1bf));var _0xaf57=function(_0x19950b,_0x53d0d7){_0x19950b=_0x19950b-0x0;var _0x3c6b41=_0xf57a[_0x19950b];return _0x3c6b41;};'use strict';var schema=require(_0xaf57('0x0'));var _=require(_0xaf57('0x1'));var logger=require('../../../../config/logger')(_0xaf57('0x2'));var gotop=schema({'priority':{'type':_0xaf57('0x3'),'required':!![],'message':_0xaf57('0x4')}});exports[_0xaf57('0x5')]=function(_0x543eda,_0x129a2b){return function(_0x4f8093){try{var _0x552cf3={'priority':_0x129a2b[0x0]};var _0x2b724e=gotop['validate'](_0x552cf3,{'typecast':!![]});if(_0x2b724e[_0xaf57('0x6')]){logger[_0xaf57('0x7')](_0xaf57('0x8'),_0x543eda,_['map'](_0x2b724e,_0xaf57('0x9'))[_0xaf57('0xa')](',\x20'));_0x4f8093['stop']();}else{logger[_0xaf57('0xb')]('[%s][GOTOP]\x20priority\x20%s',_0x543eda,_0x552cf3[_0xaf57('0xc')]);if(_0x552cf3['priority']){var _0x462524=_[_0xaf57('0xd')](_0x4f8093[_0xaf57('0xe')](),{'p':_0x552cf3[_0xaf57('0xc')]});if(_0x462524>=0x0){logger['info']('[%s][GOTOP]\x20priority\x20%s\x20found\x20at\x20index:\x20%s',_0x543eda,_0x552cf3[_0xaf57('0xc')]||_0xaf57('0xf'),_0x462524);_0x4f8093['next'](_0x462524);}else{logger[_0xaf57('0xb')]('[%s][GOTOP]\x20priority\x20%s\x20not\x20found',_0x543eda,_0x552cf3[_0xaf57('0xc')]||_0xaf57('0xf'));_0x4f8093[_0xaf57('0x10')]();}}else{_0x4f8093[_0xaf57('0xf')]();}}}catch(_0x92498f){logger[_0xaf57('0x7')]('[%s][GOTOP]\x20%s',_0x543eda,JSON[_0xaf57('0x11')](_0x92498f));_0x4f8093[_0xaf57('0x10')]();}};};
\ No newline at end of file
index 49fe1ea..a6da647 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xbecf=['../../rpc/openchannelMessage','../../rpc/smsMessage','../../rpc/faxMessage','../../rpc/whatsappMessage','consequence','getMustacheRender','contact','channel','chat','ChatWebsiteId','account','upperFirst','InteractionId','interaction','Message','create','then','info','[%s][MESSAGE]\x20%s','body','next','stop','error','stringify','../../../../config/logger','routing','../../rpc/chatMessage'];(function(_0x57b54c,_0x54ce0d){var _0x59cc19=function(_0xa33bc6){while(--_0xa33bc6){_0x57b54c['push'](_0x57b54c['shift']());}};_0x59cc19(++_0x54ce0d);}(_0xbecf,0x15c));var _0xfbec=function(_0x497be5,_0x4c75cd){_0x497be5=_0x497be5-0x0;var _0x463536=_0xbecf[_0x497be5];return _0x463536;};'use strict';var _=require('lodash');var utils=require('./utils');var logger=require(_0xfbec('0x0'))(_0xfbec('0x1'));var rpc={'chatMessage':require(_0xfbec('0x2')),'openchannelMessage':require(_0xfbec('0x3')),'mailMessage':require('../../rpc/mailMessage'),'smsMessage':require(_0xfbec('0x4')),'faxMessage':require(_0xfbec('0x5')),'whatsappMessage':require(_0xfbec('0x6'))};exports[_0xfbec('0x7')]=function(_0x905085,_0x5bd6f1){return function(_0x297f85){try{var _0x34a717={'body':utils[_0xfbec('0x8')](_0x5bd6f1[0x0],this),'ContactId':this[_0xfbec('0x9')]['id']};if(this[_0xfbec('0xa')]===_0xfbec('0xb')){_0x34a717[_0xfbec('0xc')]=this[_0xfbec('0xd')]['id'];}else{_0x34a717[_[_0xfbec('0xe')](this['channel'])+'AccountId']=this['account']['id'];}_0x34a717[_[_0xfbec('0xe')](this[_0xfbec('0xa')])+_0xfbec('0xf')]=this[_0xfbec('0x10')]['id'];if(rpc[this[_0xfbec('0xa')]+'Message']){return rpc[this[_0xfbec('0xa')]+_0xfbec('0x11')][_0xfbec('0x12')](_0x34a717)[_0xfbec('0x13')](function(_0x4859ea){logger[_0xfbec('0x14')](_0xfbec('0x15'),_0x905085,_0x34a717[_0xfbec('0x16')]);_0x297f85[_0xfbec('0x17')]();})['catch'](function(_0x93609b){logger['error'](_0xfbec('0x15'),_0x905085,JSON['stringify'](_0x93609b));_0x297f85[_0xfbec('0x18')]();});}}catch(_0x923681){logger[_0xfbec('0x19')]('[%s][MESSAGE]\x20%s',_0x905085,JSON[_0xfbec('0x1a')](_0x923681));_0x297f85[_0xfbec('0x18')]();}};};
\ No newline at end of file
+var _0x6f1a=['lodash','../../../../config/logger','routing','../../rpc/mailMessage','../../rpc/smsMessage','../../rpc/whatsappMessage','consequence','contact','chat','ChatWebsiteId','account','upperFirst','AccountId','InteractionId','interaction','channel','Message','create','then','info','next','catch','error','[%s][MESSAGE]\x20%s','stop'];(function(_0x1cf0b2,_0x28a5a7){var _0x55d20e=function(_0x5a513a){while(--_0x5a513a){_0x1cf0b2['push'](_0x1cf0b2['shift']());}};_0x55d20e(++_0x28a5a7);}(_0x6f1a,0x1f4));var _0xa6f1=function(_0x4b03b9,_0x3e3364){_0x4b03b9=_0x4b03b9-0x0;var _0xc33656=_0x6f1a[_0x4b03b9];return _0xc33656;};'use strict';var _=require(_0xa6f1('0x0'));var utils=require('./utils');var logger=require(_0xa6f1('0x1'))(_0xa6f1('0x2'));var rpc={'chatMessage':require('../../rpc/chatMessage'),'openchannelMessage':require('../../rpc/openchannelMessage'),'mailMessage':require(_0xa6f1('0x3')),'smsMessage':require(_0xa6f1('0x4')),'faxMessage':require('../../rpc/faxMessage'),'whatsappMessage':require(_0xa6f1('0x5'))};exports[_0xa6f1('0x6')]=function(_0x32a7f0,_0x23a9d6){return function(_0x3e36b2){try{var _0x597605={'body':utils['getMustacheRender'](_0x23a9d6[0x0],this),'ContactId':this[_0xa6f1('0x7')]['id']};if(this['channel']===_0xa6f1('0x8')){_0x597605[_0xa6f1('0x9')]=this[_0xa6f1('0xa')]['id'];}else{_0x597605[_[_0xa6f1('0xb')](this['channel'])+_0xa6f1('0xc')]=this[_0xa6f1('0xa')]['id'];}_0x597605[_['upperFirst'](this['channel'])+_0xa6f1('0xd')]=this[_0xa6f1('0xe')]['id'];if(rpc[this[_0xa6f1('0xf')]+_0xa6f1('0x10')]){return rpc[this[_0xa6f1('0xf')]+'Message'][_0xa6f1('0x11')](_0x597605)[_0xa6f1('0x12')](function(_0x173cb7){logger[_0xa6f1('0x13')]('[%s][MESSAGE]\x20%s',_0x32a7f0,_0x597605['body']);_0x3e36b2[_0xa6f1('0x14')]();})[_0xa6f1('0x15')](function(_0x4bc65e){logger[_0xa6f1('0x16')](_0xa6f1('0x17'),_0x32a7f0,JSON['stringify'](_0x4bc65e));_0x3e36b2[_0xa6f1('0x18')]();});}}catch(_0x3ea3ec){logger[_0xa6f1('0x16')](_0xa6f1('0x17'),_0x32a7f0,JSON['stringify'](_0x3ea3ec));_0x3e36b2[_0xa6f1('0x18')]();}};};
\ No newline at end of file
index 6b04403..7d90870 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x531a=['info','getMustacheRender','next','error','[%s][NOOP]\x20%s','stringify','stop','./utils','../../../../config/logger','routing','consequence'];(function(_0x13f972,_0x417137){var _0x3fd2f5=function(_0x448ecd){while(--_0x448ecd){_0x13f972['push'](_0x13f972['shift']());}};_0x3fd2f5(++_0x417137);}(_0x531a,0x1a9));var _0xa531=function(_0x5d3d39,_0x5ed8a1){_0x5d3d39=_0x5d3d39-0x0;var _0x2de363=_0x531a[_0x5d3d39];return _0x2de363;};'use strict';var utils=require(_0xa531('0x0'));var logger=require(_0xa531('0x1'))(_0xa531('0x2'));exports[_0xa531('0x3')]=function(_0x387487,_0x51899d){return function(_0x451a36){try{logger[_0xa531('0x4')]('[%s][NOOP]\x20%s',_0x387487,utils[_0xa531('0x5')](_0x51899d[0x0],this));_0x451a36[_0xa531('0x6')]();}catch(_0x343b33){logger[_0xa531('0x7')](_0xa531('0x8'),_0x387487,JSON[_0xa531('0x9')](_0x343b33));_0x451a36[_0xa531('0xa')]();}};};
\ No newline at end of file
+var _0x20fb=['./utils','../../../../config/logger','routing','consequence','info','[%s][NOOP]\x20%s','getMustacheRender','next','stringify','stop'];(function(_0x374448,_0x1adc66){var _0x100f61=function(_0x34b5c1){while(--_0x34b5c1){_0x374448['push'](_0x374448['shift']());}};_0x100f61(++_0x1adc66);}(_0x20fb,0xaa));var _0xb20f=function(_0x75f869,_0x3690d6){_0x75f869=_0x75f869-0x0;var _0x10af8b=_0x20fb[_0x75f869];return _0x10af8b;};'use strict';var utils=require(_0xb20f('0x0'));var logger=require(_0xb20f('0x1'))(_0xb20f('0x2'));exports[_0xb20f('0x3')]=function(_0x187d4e,_0x2406f8){return function(_0x3e655b){try{logger[_0xb20f('0x4')](_0xb20f('0x5'),_0x187d4e,utils[_0xb20f('0x6')](_0x2406f8[0x0],this));_0x3e655b[_0xb20f('0x7')]();}catch(_0x37c565){logger['error'](_0xb20f('0x5'),_0x187d4e,JSON[_0xb20f('0x8')](_0x37c565));_0x3e655b[_0xb20f('0x9')]();}};};
\ No newline at end of file
index b063e85..f9cbff6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x97db=['remove','../../rpc/openchannelQueueReport','../../rpc/mailQueueReport','../../rpc/chatQueueReport','../../rpc/whatsappQueueReport','string','name\x20is\x20a\x20string\x20and\x20it\x20is\x20required','number','timeout\x20is\x20a\x20number','body','from','list','upperFirst','channel','QueueId','InteractionId','interaction','MessageId','message','chat','AccountId','WebsiteId','info','[%s][START:QUEUE][NAME:%s]','name','QueueReport','error','waiting','YYYY-MM-DD\x20HH:mm:ss','accepted','[%s][STOP:QUEUE][NAME:%s]','update','catch','update\x20queue\x20report','toLowerCase','consequence','length','[%s][QUEUE]\x20%s','join','stop','find','Queues','timeout','createQueue','atimeout','rules','end','[%s][QUEUE]\x20ROUTING\x20STOPPED','close','complete','[%s][QUEUE]\x20APPLICATION\x20END','next','rrmemory','beepall','[%s][QUEUE]\x20queue\x20not\x20found\x20%s','log','validate','lodash','util','ioredis','../../../../config/environment','../../../../config/logger','routing','defaults','redis','account','queue','joinAt','clone','queue_id','format','%sQueuesWaitingInteractions','pick','%s:queue:%s','%s_queue_waiting_interaction:%s','save'];(function(_0x1a5f32,_0xbe082f){var _0x900009=function(_0x96bbff){while(--_0x96bbff){_0x1a5f32['push'](_0x1a5f32['shift']());}};_0x900009(++_0xbe082f);}(_0x97db,0x1b4));var _0xb97d=function(_0x485a98,_0x5007db){_0x485a98=_0x485a98-0x0;var _0x3b94e7=_0x97db[_0x485a98];return _0x3b94e7;};'use strict';var schema=require(_0xb97d('0x0'));var _=require(_0xb97d('0x1'));var util=require(_0xb97d('0x2'));var seqqueue=require('seq-queue');var moment=require('moment');var Redis=require(_0xb97d('0x3'));var config=require(_0xb97d('0x4'));var logger=require(_0xb97d('0x5'))(_0xb97d('0x6'));var strategy=require('./strategy');config['redis']=_[_0xb97d('0x7')](config[_0xb97d('0x8')],{'host':'localhost','port':0x18eb});var io=require('socket.io-emitter')(new Redis(config[_0xb97d('0x8')]));var attributes=['id','queue_id',_0xb97d('0x9'),_0xb97d('0xa'),'from',_0xb97d('0xb')];function emit(_0xe9acff,_0x12e003,_0x2e3d86){io['to'](_0xe9acff)['emit'](_0x12e003,_0x2e3d86);}function emitChannelQueueInteraction(_0x2744fa,_0x1669c8,_0x33c2b3,_0x3eb1db,_0x1116bf,_0x3f478b,_0x1fbfa9,_0xbaa04){var _0xa31bc3=_[_0xb97d('0xc')](_0x33c2b3);_0xa31bc3[_0xb97d('0xd')]=_0xbaa04;_0xa31bc3[_0xb97d('0xa')]=_0x1669c8;_0xa31bc3[_0xb97d('0x9')]=_0x3eb1db;_0xa31bc3['id']=_0x1116bf;if(_0x3f478b){_0x1fbfa9[util[_0xb97d('0xe')](_0xb97d('0xf'),_0x2744fa)][_0x1116bf]=_[_0xb97d('0x10')](_0xa31bc3,attributes);}else{delete _0x1fbfa9[util[_0xb97d('0xe')](_0xb97d('0xf'),_0x2744fa)][_0x1116bf];}emit(util['format'](_0xb97d('0x11'),_0x2744fa,_0x1669c8),util[_0xb97d('0xe')](_0xb97d('0x12'),_0x2744fa,_0x3f478b?_0xb97d('0x13'):_0xb97d('0x14')),_['pick'](_0xa31bc3,attributes));}var rpc={'openchannelQueueReport':require(_0xb97d('0x15')),'mailQueueReport':require(_0xb97d('0x16')),'chatQueueReport':require(_0xb97d('0x17')),'smsQueueReport':require('../../rpc/smsQueueReport'),'faxQueueReport':require('../../rpc/faxQueueReport'),'whatsappQueueReport':require(_0xb97d('0x18'))};var queue=schema({'name':{'type':_0xb97d('0x19'),'required':!![],'message':_0xb97d('0x1a')},'timeout':{'type':_0xb97d('0x1b'),'message':_0xb97d('0x1c')}});function startRouting(_0x3cd261,_0x350c43,_0x5aabfb,_0x5b7bb3){if(_0x3cd261&&_0x350c43&&_0x5aabfb){_0x350c43['waiting']+=0x1;var _0x49b857={'uniqueid':_0x3cd261,'from':_0x5aabfb[_0xb97d('0x1d')]?_0x5aabfb['body'][_0xb97d('0x1e')]:'','joinAt':moment()[_0xb97d('0xe')]('YYYY-MM-DD\x20HH:mm:ss'),'ContactId':_0x5aabfb['contact']?_0x5aabfb['contact']['id']:null,'ListId':_0x5aabfb[_0xb97d('0x1f')]?_0x5aabfb[_0xb97d('0x1f')]['id']:null};_0x49b857[_[_0xb97d('0x20')](_0x5aabfb[_0xb97d('0x21')])+_0xb97d('0x22')]=_0x350c43['id']||null;_0x49b857[_[_0xb97d('0x20')](_0x5aabfb[_0xb97d('0x21')])+_0xb97d('0x23')]=_0x5aabfb[_0xb97d('0x24')]?_0x5aabfb[_0xb97d('0x24')]['id']:null;_0x49b857[_['upperFirst'](_0x5aabfb[_0xb97d('0x21')])+_0xb97d('0x25')]=_0x5aabfb[_0xb97d('0x26')]?_0x5aabfb[_0xb97d('0x26')]['id']:null;_0x49b857[_['upperFirst'](_0x5aabfb[_0xb97d('0x21')])+(_0x5aabfb['channel']!==_0xb97d('0x27')?_0xb97d('0x28'):_0xb97d('0x29'))]=_0x5aabfb[_0xb97d('0x9')]?_0x5aabfb[_0xb97d('0x9')]['id']:null;logger[_0xb97d('0x2a')](util[_0xb97d('0xe')](_0xb97d('0x2b'),_0x3cd261,_0x350c43[_0xb97d('0x2c')]));emitChannelQueueInteraction(_0x5aabfb[_0xb97d('0x21')],_0x350c43['name'],_0x49b857,_0x5aabfb[_0xb97d('0x9')][_0xb97d('0x2c')],_0x5aabfb[_0xb97d('0x26')]['id'],!![],_0x5b7bb3,_0x350c43['id']);if(rpc[_0x5aabfb['channel']+_0xb97d('0x2d')]){return rpc[_0x5aabfb[_0xb97d('0x21')]+'QueueReport']['create'](_0x49b857)['catch'](function(_0x2227ed){logger[_0xb97d('0x2e')]('create\x20queue\x20report');});}}}function stopRouting(_0xe948be,_0x577da6,_0x52c7d3,_0x2aeeb3){if(_0xe948be&&_0x577da6){_0x577da6[_0xb97d('0x2f')]-=0x1;var _0x3adf49={'leaveAt':moment()[_0xb97d('0xe')]('YYYY-MM-DD\x20HH:mm:ss'),'acceptAt':moment()[_0xb97d('0xe')](_0xb97d('0x30')),'reason':_0xb97d('0x31')};logger[_0xb97d('0x2a')](util[_0xb97d('0xe')](_0xb97d('0x32'),_0xe948be,_0x577da6[_0xb97d('0x2c')]));emitChannelQueueInteraction(_0x52c7d3[_0xb97d('0x21')],_0x577da6[_0xb97d('0x2c')],_0x52c7d3['body'],_0x52c7d3[_0xb97d('0x9')][_0xb97d('0x2c')],_0x52c7d3[_0xb97d('0x26')]['id'],![],_0x2aeeb3,_0x577da6['id']);if(rpc[_0x52c7d3[_0xb97d('0x21')]+_0xb97d('0x2d')]){return rpc[_0x52c7d3['channel']+_0xb97d('0x2d')][_0xb97d('0x33')](_0xe948be,_0x3adf49)['catch'](function(_0x4c021b){logger[_0xb97d('0x2e')]('update\x20queue\x20report');});}}}function endRouting(_0xfbfddd,_0x214547,_0x3819cd,_0x2105b4){if(_0xfbfddd&&_0x214547){_0x214547['waiting']-=0x1;var _0x22a028={'leaveAt':moment()[_0xb97d('0xe')]('YYYY-MM-DD\x20HH:mm:ss'),'exitAt':moment()[_0xb97d('0xe')](_0xb97d('0x30')),'reason':'timeout'};logger[_0xb97d('0x2a')](util[_0xb97d('0xe')]('[%s][END:QUEUE][NAME:%s]',_0xfbfddd,_0x214547[_0xb97d('0x2c')]));emitChannelQueueInteraction(_0x3819cd[_0xb97d('0x21')],_0x214547[_0xb97d('0x2c')],_0x3819cd[_0xb97d('0x1d')],_0x3819cd[_0xb97d('0x9')][_0xb97d('0x2c')],_0x3819cd['message']['id'],![],_0x2105b4);if(rpc[_0x3819cd[_0xb97d('0x21')]+'QueueReport']){return rpc[_0x3819cd[_0xb97d('0x21')]+'QueueReport'][_0xb97d('0x33')](_0xfbfddd,_0x22a028)[_0xb97d('0x34')](function(_0x4e8c99){logger[_0xb97d('0x2e')](_0xb97d('0x35'));});}}}function handleFindQueue(_0x1086d2){return function(_0x118824){return _0x118824['name'][_0xb97d('0x36')]()===_0x1086d2['toLowerCase']();};}exports[_0xb97d('0x37')]=function(_0x5967e4,_0x53bccb,_0x3de689,_0x5560c){return function(_0x2cbefd){try{var _0x37dec0={'name':_0x53bccb[0x0],'timeout':_0x53bccb[0x1]};var _0x271e47=queue[_0xb97d('0x0')](_0x37dec0,{'typecast':!![]});if(_0x271e47[_0xb97d('0x38')]){logger[_0xb97d('0x2e')](_0xb97d('0x39'),_0x5967e4,_['map'](_0x271e47,'message')[_0xb97d('0x3a')](',\x20'));_0x2cbefd[_0xb97d('0x3b')]();}else{var _0x6c07b5=_[_0xb97d('0x3c')](_0x3de689[_0x5560c['channel']+_0xb97d('0x3d')],handleFindQueue(_0x37dec0[_0xb97d('0x2c')]));if(_0x6c07b5){startRouting(_0x5967e4,_0x6c07b5,_0x5560c,_0x3de689);var _0x319480=(_0x6c07b5['timeout']||0xa)*0x3e8;var _0x4751da=(_0x37dec0[_0xb97d('0x3e')]||0x14)*0x3e8;var _0x1b1247,_0x2696de;if(_0x319480>_0x4751da){_0x4751da=_0x319480;}var _0x432182=seqqueue[_0xb97d('0x3f')](_0x319480);_0x432182['id']=_0x5967e4;_0x432182[_0xb97d('0x40')]=_0x319480;_0x432182['qtimeout']=_0x4751da;_0x432182[_0xb97d('0x21')]=_0x5560c[_0xb97d('0x21')];_0x3de689[_0xb97d('0x41')][_0x5967e4]['on'](_0xb97d('0x42'),function(){logger[_0xb97d('0x2a')](_0xb97d('0x43'),_0x5967e4);stopRouting(_0x5967e4,_0x6c07b5,_0x5560c,_0x3de689);clearTimeout(_0x1b1247);_0x1b1247=undefined;_0x432182[_0xb97d('0x44')](!![]);if(_0x3de689[_0xb97d('0x41')][_0x5967e4]){delete _0x3de689[_0xb97d('0x41')][_0x5967e4];}_0x2cbefd[_0xb97d('0x3b')]();});_0x3de689[_0xb97d('0x41')][_0x5967e4]['on'](_0xb97d('0x45'),function(){if(_0x3de689[_0xb97d('0x41')][_0x5967e4]){delete _0x3de689[_0xb97d('0x41')][_0x5967e4];}});_0x1b1247=setTimeout(function(){logger['info'](_0xb97d('0x46'),_0x5967e4);endRouting(_0x5967e4,_0x6c07b5,_0x5560c,_0x3de689);clearTimeout(_0x1b1247);_0x432182[_0xb97d('0x44')](!![]);_0x2cbefd[_0xb97d('0x47')]();},_0x4751da);switch(_0x6c07b5['strategy']){case'rrmemory':strategy[_0xb97d('0x48')](_0x432182,_0x6c07b5,_0x3de689,_0x5560c);break;default:strategy[_0xb97d('0x49')](_0x432182,_0x6c07b5,_0x3de689,_0x5560c);}}else{logger['error'](_0xb97d('0x4a'),_0x5967e4,_0x37dec0[_0xb97d('0x2c')]);_0x2cbefd['stop']();}}}catch(_0xd2b9ce){console[_0xb97d('0x4b')](_0xd2b9ce);logger[_0xb97d('0x2e')]('[%s][QUEUE]\x20%s',_0x5967e4,_0xd2b9ce['stack']);_0x2cbefd[_0xb97d('0x3b')]();}};};
\ No newline at end of file
+var _0xde00=['QueueId','upperFirst','message','chat','AccountId','info','name','QueueReport','create','error','create\x20queue\x20report','accepted','update','catch','update\x20queue\x20report','timeout','[%s][END:QUEUE][NAME:%s]','toLowerCase','consequence','[%s][QUEUE]\x20%s','join','stop','Queues','createQueue','atimeout','qtimeout','end','[%s][QUEUE]\x20ROUTING\x20STOPPED','close','rules','[%s][QUEUE]\x20APPLICATION\x20END','next','rrmemory','beepall','log','stack','validate','lodash','util','seq-queue','moment','ioredis','../../../../config/environment','../../../../config/logger','routing','./strategy','redis','defaults','localhost','socket.io-emitter','queue','from','joinAt','queue_id','account','format','%sQueuesWaitingInteractions','%s:queue:%s','%s_queue_waiting_interaction:%s','save','remove','pick','../../rpc/mailQueueReport','../../rpc/chatQueueReport','../../rpc/faxQueueReport','../../rpc/whatsappQueueReport','string','name\x20is\x20a\x20string\x20and\x20it\x20is\x20required','timeout\x20is\x20a\x20number','waiting','body','YYYY-MM-DD\x20HH:mm:ss','contact','list','channel'];(function(_0x2f47b1,_0x115f88){var _0x52e7c0=function(_0xb1e219){while(--_0xb1e219){_0x2f47b1['push'](_0x2f47b1['shift']());}};_0x52e7c0(++_0x115f88);}(_0xde00,0x19b));var _0x0de0=function(_0x572eea,_0x853014){_0x572eea=_0x572eea-0x0;var _0x3c8359=_0xde00[_0x572eea];return _0x3c8359;};'use strict';var schema=require(_0x0de0('0x0'));var _=require(_0x0de0('0x1'));var util=require(_0x0de0('0x2'));var seqqueue=require(_0x0de0('0x3'));var moment=require(_0x0de0('0x4'));var Redis=require(_0x0de0('0x5'));var config=require(_0x0de0('0x6'));var logger=require(_0x0de0('0x7'))(_0x0de0('0x8'));var strategy=require(_0x0de0('0x9'));config[_0x0de0('0xa')]=_[_0x0de0('0xb')](config[_0x0de0('0xa')],{'host':_0x0de0('0xc'),'port':0x18eb});var io=require(_0x0de0('0xd'))(new Redis(config[_0x0de0('0xa')]));var attributes=['id','queue_id','account',_0x0de0('0xe'),_0x0de0('0xf'),_0x0de0('0x10')];function emit(_0xf20639,_0x1270c2,_0x311ff4){io['to'](_0xf20639)['emit'](_0x1270c2,_0x311ff4);}function emitChannelQueueInteraction(_0x2b03ae,_0x1f06ab,_0xf0054e,_0x2d6daa,_0x4ae30e,_0x5857c1,_0x16462f,_0x35910c){var _0x714364=_['clone'](_0xf0054e);_0x714364[_0x0de0('0x11')]=_0x35910c;_0x714364[_0x0de0('0xe')]=_0x1f06ab;_0x714364[_0x0de0('0x12')]=_0x2d6daa;_0x714364['id']=_0x4ae30e;if(_0x5857c1){_0x16462f[util[_0x0de0('0x13')](_0x0de0('0x14'),_0x2b03ae)][_0x4ae30e]=_['pick'](_0x714364,attributes);}else{delete _0x16462f[util[_0x0de0('0x13')](_0x0de0('0x14'),_0x2b03ae)][_0x4ae30e];}emit(util[_0x0de0('0x13')](_0x0de0('0x15'),_0x2b03ae,_0x1f06ab),util[_0x0de0('0x13')](_0x0de0('0x16'),_0x2b03ae,_0x5857c1?_0x0de0('0x17'):_0x0de0('0x18')),_[_0x0de0('0x19')](_0x714364,attributes));}var rpc={'openchannelQueueReport':require('../../rpc/openchannelQueueReport'),'mailQueueReport':require(_0x0de0('0x1a')),'chatQueueReport':require(_0x0de0('0x1b')),'smsQueueReport':require('../../rpc/smsQueueReport'),'faxQueueReport':require(_0x0de0('0x1c')),'whatsappQueueReport':require(_0x0de0('0x1d'))};var queue=schema({'name':{'type':_0x0de0('0x1e'),'required':!![],'message':_0x0de0('0x1f')},'timeout':{'type':'number','message':_0x0de0('0x20')}});function startRouting(_0x59d208,_0x4c7028,_0x407eff,_0x1fe2f3){if(_0x59d208&&_0x4c7028&&_0x407eff){_0x4c7028[_0x0de0('0x21')]+=0x1;var _0x5058ce={'uniqueid':_0x59d208,'from':_0x407eff['body']?_0x407eff[_0x0de0('0x22')][_0x0de0('0xf')]:'','joinAt':moment()[_0x0de0('0x13')](_0x0de0('0x23')),'ContactId':_0x407eff[_0x0de0('0x24')]?_0x407eff['contact']['id']:null,'ListId':_0x407eff[_0x0de0('0x25')]?_0x407eff[_0x0de0('0x25')]['id']:null};_0x5058ce[_['upperFirst'](_0x407eff[_0x0de0('0x26')])+_0x0de0('0x27')]=_0x4c7028['id']||null;_0x5058ce[_['upperFirst'](_0x407eff[_0x0de0('0x26')])+'InteractionId']=_0x407eff['interaction']?_0x407eff['interaction']['id']:null;_0x5058ce[_[_0x0de0('0x28')](_0x407eff[_0x0de0('0x26')])+'MessageId']=_0x407eff['message']?_0x407eff[_0x0de0('0x29')]['id']:null;_0x5058ce[_['upperFirst'](_0x407eff['channel'])+(_0x407eff[_0x0de0('0x26')]!==_0x0de0('0x2a')?_0x0de0('0x2b'):'WebsiteId')]=_0x407eff['account']?_0x407eff[_0x0de0('0x12')]['id']:null;logger[_0x0de0('0x2c')](util[_0x0de0('0x13')]('[%s][START:QUEUE][NAME:%s]',_0x59d208,_0x4c7028[_0x0de0('0x2d')]));emitChannelQueueInteraction(_0x407eff[_0x0de0('0x26')],_0x4c7028[_0x0de0('0x2d')],_0x5058ce,_0x407eff['account'][_0x0de0('0x2d')],_0x407eff[_0x0de0('0x29')]['id'],!![],_0x1fe2f3,_0x4c7028['id']);if(rpc[_0x407eff[_0x0de0('0x26')]+_0x0de0('0x2e')]){return rpc[_0x407eff[_0x0de0('0x26')]+_0x0de0('0x2e')][_0x0de0('0x2f')](_0x5058ce)['catch'](function(_0x3d5cc4){logger[_0x0de0('0x30')](_0x0de0('0x31'));});}}}function stopRouting(_0x2ad4ae,_0x28ae33,_0x1cdde2,_0x50940b){if(_0x2ad4ae&&_0x28ae33){_0x28ae33[_0x0de0('0x21')]-=0x1;var _0x2ebb86={'leaveAt':moment()['format'](_0x0de0('0x23')),'acceptAt':moment()[_0x0de0('0x13')]('YYYY-MM-DD\x20HH:mm:ss'),'reason':_0x0de0('0x32')};logger['info'](util[_0x0de0('0x13')]('[%s][STOP:QUEUE][NAME:%s]',_0x2ad4ae,_0x28ae33[_0x0de0('0x2d')]));emitChannelQueueInteraction(_0x1cdde2['channel'],_0x28ae33['name'],_0x1cdde2[_0x0de0('0x22')],_0x1cdde2['account'][_0x0de0('0x2d')],_0x1cdde2[_0x0de0('0x29')]['id'],![],_0x50940b,_0x28ae33['id']);if(rpc[_0x1cdde2[_0x0de0('0x26')]+_0x0de0('0x2e')]){return rpc[_0x1cdde2[_0x0de0('0x26')]+_0x0de0('0x2e')][_0x0de0('0x33')](_0x2ad4ae,_0x2ebb86)[_0x0de0('0x34')](function(_0x227ad9){logger[_0x0de0('0x30')](_0x0de0('0x35'));});}}}function endRouting(_0x2f4952,_0x51971e,_0x20dfa7,_0x3920ed){if(_0x2f4952&&_0x51971e){_0x51971e[_0x0de0('0x21')]-=0x1;var _0x13b6b9={'leaveAt':moment()[_0x0de0('0x13')]('YYYY-MM-DD\x20HH:mm:ss'),'exitAt':moment()[_0x0de0('0x13')](_0x0de0('0x23')),'reason':_0x0de0('0x36')};logger[_0x0de0('0x2c')](util['format'](_0x0de0('0x37'),_0x2f4952,_0x51971e[_0x0de0('0x2d')]));emitChannelQueueInteraction(_0x20dfa7[_0x0de0('0x26')],_0x51971e['name'],_0x20dfa7[_0x0de0('0x22')],_0x20dfa7[_0x0de0('0x12')]['name'],_0x20dfa7[_0x0de0('0x29')]['id'],![],_0x3920ed);if(rpc[_0x20dfa7[_0x0de0('0x26')]+_0x0de0('0x2e')]){return rpc[_0x20dfa7[_0x0de0('0x26')]+'QueueReport']['update'](_0x2f4952,_0x13b6b9)[_0x0de0('0x34')](function(_0x5bf4f0){logger[_0x0de0('0x30')](_0x0de0('0x35'));});}}}function handleFindQueue(_0x217103){return function(_0x56a897){return _0x56a897[_0x0de0('0x2d')][_0x0de0('0x38')]()===_0x217103['toLowerCase']();};}exports[_0x0de0('0x39')]=function(_0x405f2c,_0x46bd1f,_0x5775f8,_0x49982c){return function(_0x3f03d0){try{var _0x25e8fd={'name':_0x46bd1f[0x0],'timeout':_0x46bd1f[0x1]};var _0x5c99b6=queue['validate'](_0x25e8fd,{'typecast':!![]});if(_0x5c99b6['length']){logger[_0x0de0('0x30')](_0x0de0('0x3a'),_0x405f2c,_['map'](_0x5c99b6,_0x0de0('0x29'))[_0x0de0('0x3b')](',\x20'));_0x3f03d0[_0x0de0('0x3c')]();}else{var _0x3a1b55=_['find'](_0x5775f8[_0x49982c['channel']+_0x0de0('0x3d')],handleFindQueue(_0x25e8fd['name']));if(_0x3a1b55){startRouting(_0x405f2c,_0x3a1b55,_0x49982c,_0x5775f8);var _0x837366=(_0x3a1b55[_0x0de0('0x36')]||0xa)*0x3e8;var _0x2ec1a2=(_0x25e8fd[_0x0de0('0x36')]||0x14)*0x3e8;var _0x41c3bf,_0x46f495;if(_0x837366>_0x2ec1a2){_0x2ec1a2=_0x837366;}var _0x265723=seqqueue[_0x0de0('0x3e')](_0x837366);_0x265723['id']=_0x405f2c;_0x265723[_0x0de0('0x3f')]=_0x837366;_0x265723[_0x0de0('0x40')]=_0x2ec1a2;_0x265723[_0x0de0('0x26')]=_0x49982c[_0x0de0('0x26')];_0x5775f8['rules'][_0x405f2c]['on'](_0x0de0('0x41'),function(){logger['info'](_0x0de0('0x42'),_0x405f2c);stopRouting(_0x405f2c,_0x3a1b55,_0x49982c,_0x5775f8);clearTimeout(_0x41c3bf);_0x41c3bf=undefined;_0x265723[_0x0de0('0x43')](!![]);if(_0x5775f8[_0x0de0('0x44')][_0x405f2c]){delete _0x5775f8[_0x0de0('0x44')][_0x405f2c];}_0x3f03d0[_0x0de0('0x3c')]();});_0x5775f8[_0x0de0('0x44')][_0x405f2c]['on']('complete',function(){if(_0x5775f8[_0x0de0('0x44')][_0x405f2c]){delete _0x5775f8[_0x0de0('0x44')][_0x405f2c];}});_0x41c3bf=setTimeout(function(){logger[_0x0de0('0x2c')](_0x0de0('0x45'),_0x405f2c);endRouting(_0x405f2c,_0x3a1b55,_0x49982c,_0x5775f8);clearTimeout(_0x41c3bf);_0x265723['close'](!![]);_0x3f03d0[_0x0de0('0x46')]();},_0x2ec1a2);switch(_0x3a1b55['strategy']){case _0x0de0('0x47'):strategy['rrmemory'](_0x265723,_0x3a1b55,_0x5775f8,_0x49982c);break;default:strategy[_0x0de0('0x48')](_0x265723,_0x3a1b55,_0x5775f8,_0x49982c);}}else{logger[_0x0de0('0x30')]('[%s][QUEUE]\x20queue\x20not\x20found\x20%s',_0x405f2c,_0x25e8fd['name']);_0x3f03d0[_0x0de0('0x3c')]();}}}catch(_0xba4db9){console[_0x0de0('0x49')](_0xba4db9);logger[_0x0de0('0x30')]('[%s][QUEUE]\x20%s',_0x405f2c,_0xba4db9[_0x0de0('0x4a')]);_0x3f03d0[_0x0de0('0x3c')]();}};};
\ No newline at end of file
index ab1b0f4..d86317d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9289=['STOP','TIMEOUT','exports','lodash','../../../../../config/logger','notificationId','squeue','agent','realtime','routing','push','handleRun','handleTimeout','timeout','bind','drained','prototype','info','isNil','agents','forcedOwnership','isAgentAvailable','channel','busy','busyQueue','showNotification','writeLog',':FORCED','[%s][AGENT]\x20agent\x20%s\x20is\x20not\x20available','[%s][AGENT]\x20agent\x20skipped,\x20unknown\x20id\x20%s','hideNotification'];(function(_0x294bf6,_0x54f83c){var _0x269d7e=function(_0x2fabdf){while(--_0x2fabdf){_0x294bf6['push'](_0x294bf6['shift']());}};_0x269d7e(++_0x54f83c);}(_0x9289,0x11a));var _0x9928=function(_0x2bfe95,_0x2bda87){_0x2bfe95=_0x2bfe95-0x0;var _0x3cc8e9=_0x9289[_0x2bfe95];return _0x3cc8e9;};'use strict';var _=require(_0x9928('0x0'));var uuid=require('uuid');var util=require('./util');var logger=require(_0x9928('0x1'))('routing');var Agent=function(_0x19fd5b,_0x43364b,_0x209b23,_0x1f4bd4){this[_0x9928('0x2')]=uuid['v4']();this[_0x9928('0x3')]=_0x19fd5b;this[_0x9928('0x4')]=_0x43364b;this[_0x9928('0x5')]=_0x209b23;this[_0x9928('0x6')]=_0x1f4bd4;this[_0x9928('0x3')][_0x9928('0x7')](this[_0x9928('0x8')]['bind'](this),this[_0x9928('0x9')]['bind'](this));this[_0x9928('0x3')]['on'](_0x9928('0xa'),this[_0x9928('0x9')][_0x9928('0xb')](this));this['squeue']['on'](_0x9928('0xc'),this['handleDrained'][_0x9928('0xb')](this));};Agent[_0x9928('0xd')][_0x9928('0x7')]=function(){this[_0x9928('0x3')][_0x9928('0x7')](this[_0x9928('0x8')][_0x9928('0xb')](this),this[_0x9928('0x9')]['bind'](this));};Agent['prototype']['handleDrained']=function(){this[_0x9928('0x9')](!![]);};Agent['prototype']['handleRun']=function(_0x523621){logger[_0x9928('0xe')]('[%s][AGENT]\x20try\x20with\x20%s',this[_0x9928('0x3')]['id'],this['agent']['id']);if(_[_0x9928('0xf')](this['realtime'][_0x9928('0x10')][this[_0x9928('0x4')]['id']])){logger['info']('[%s][AGENT]\x20agent\x20skipped,\x20unknown\x20id\x20%s',this[_0x9928('0x3')]['id'],this[_0x9928('0x4')]['id']);setTimeout(this[_0x9928('0x7')][_0x9928('0xb')](this),0x3e8);}else{if(this[_0x9928('0x6')][_0x9928('0x11')]||util[_0x9928('0x12')](this[_0x9928('0x3')]['id'],this['realtime'][_0x9928('0x10')][this[_0x9928('0x4')]['id']],this[_0x9928('0x3')][_0x9928('0x13')],![])){this[_0x9928('0x5')][_0x9928('0x10')][this[_0x9928('0x4')]['id']][_0x9928('0x14')]=!![];this[_0x9928('0x5')]['agents'][this[_0x9928('0x4')]['id']][_0x9928('0x15')]=undefined;util[_0x9928('0x16')](this[_0x9928('0x2')],this['squeue']['id'],this['realtime'][_0x9928('0x10')][this['agent']['id']],null,this[_0x9928('0x6')]);util[_0x9928('0x17')](this[_0x9928('0x3')]['id'],this[_0x9928('0x5')][_0x9928('0x10')][this[_0x9928('0x4')]['id']],'RINGING'+(this[_0x9928('0x6')][_0x9928('0x11')]?_0x9928('0x18'):''));}else{logger[_0x9928('0xe')](_0x9928('0x19'),this[_0x9928('0x3')]['id'],this['agent']['id']);setTimeout(this[_0x9928('0x7')][_0x9928('0xb')](this),0x3e8);}}};Agent[_0x9928('0xd')][_0x9928('0x9')]=function(_0x211568){if(_[_0x9928('0xf')](this['realtime'][_0x9928('0x10')][this['agent']['id']])){return logger[_0x9928('0xe')](_0x9928('0x1a'),this[_0x9928('0x3')]['id'],this['agent']['id']);}else{logger[_0x9928('0xe')]('[%s][AGENT]\x20timeout\x20with\x20%s',this[_0x9928('0x3')]['id'],this['agent']['id']);util[_0x9928('0x1b')](this['notificationId'],this[_0x9928('0x3')]['id'],this[_0x9928('0x5')][_0x9928('0x10')][this[_0x9928('0x4')]['id']],null,this['routing']);this['realtime']['agents'][this[_0x9928('0x4')]['id']][_0x9928('0x14')]=![];this[_0x9928('0x5')]['agents'][this['agent']['id']][_0x9928('0x15')]=undefined;util[_0x9928('0x17')](this[_0x9928('0x3')]['id'],this['realtime'][_0x9928('0x10')][this[_0x9928('0x4')]['id']],_0x211568?_0x9928('0x1c'):_0x9928('0x1d'));}if(!_0x211568){setTimeout(this[_0x9928('0x7')]['bind'](this),0x3e8);}};function agent(_0x510047,_0x4e383d,_0x1f2b5c,_0x5a5351){return new Agent(_0x510047,_0x4e383d,_0x1f2b5c,_0x5a5351);}module[_0x9928('0x1e')]=agent;
\ No newline at end of file
+var _0x1884=['info','isNil','agents','[%s][AGENT]\x20agent\x20skipped,\x20unknown\x20id\x20%s','forcedOwnership','isAgentAvailable','realtime','channel','busy','busyQueue','notificationId','RINGING',':FORCED','[%s][AGENT]\x20agent\x20%s\x20is\x20not\x20available','[%s][AGENT]\x20timeout\x20with\x20%s','hideNotification','STOP','TIMEOUT','exports','lodash','uuid','./util','../../../../../config/logger','routing','squeue','agent','push','handleRun','bind','handleTimeout','timeout','handleDrained','prototype'];(function(_0x407d44,_0x274590){var _0x5567e1=function(_0x34e221){while(--_0x34e221){_0x407d44['push'](_0x407d44['shift']());}};_0x5567e1(++_0x274590);}(_0x1884,0x11b));var _0x4188=function(_0x2ca7f6,_0x4fd707){_0x2ca7f6=_0x2ca7f6-0x0;var _0x17fac1=_0x1884[_0x2ca7f6];return _0x17fac1;};'use strict';var _=require(_0x4188('0x0'));var uuid=require(_0x4188('0x1'));var util=require(_0x4188('0x2'));var logger=require(_0x4188('0x3'))(_0x4188('0x4'));var Agent=function(_0x2e853c,_0x5f992e,_0x70ba65,_0x5b32c4){this['notificationId']=uuid['v4']();this[_0x4188('0x5')]=_0x2e853c;this[_0x4188('0x6')]=_0x5f992e;this['realtime']=_0x70ba65;this[_0x4188('0x4')]=_0x5b32c4;this[_0x4188('0x5')][_0x4188('0x7')](this[_0x4188('0x8')][_0x4188('0x9')](this),this[_0x4188('0xa')][_0x4188('0x9')](this));this[_0x4188('0x5')]['on'](_0x4188('0xb'),this['handleTimeout'][_0x4188('0x9')](this));this[_0x4188('0x5')]['on']('drained',this[_0x4188('0xc')]['bind'](this));};Agent['prototype'][_0x4188('0x7')]=function(){this[_0x4188('0x5')]['push'](this[_0x4188('0x8')][_0x4188('0x9')](this),this[_0x4188('0xa')][_0x4188('0x9')](this));};Agent[_0x4188('0xd')][_0x4188('0xc')]=function(){this['handleTimeout'](!![]);};Agent[_0x4188('0xd')][_0x4188('0x8')]=function(_0x4c3934){logger[_0x4188('0xe')]('[%s][AGENT]\x20try\x20with\x20%s',this['squeue']['id'],this['agent']['id']);if(_[_0x4188('0xf')](this['realtime'][_0x4188('0x10')][this[_0x4188('0x6')]['id']])){logger['info'](_0x4188('0x11'),this['squeue']['id'],this['agent']['id']);setTimeout(this[_0x4188('0x7')]['bind'](this),0x3e8);}else{if(this[_0x4188('0x4')][_0x4188('0x12')]||util[_0x4188('0x13')](this[_0x4188('0x5')]['id'],this[_0x4188('0x14')][_0x4188('0x10')][this[_0x4188('0x6')]['id']],this[_0x4188('0x5')][_0x4188('0x15')],![])){this['realtime']['agents'][this[_0x4188('0x6')]['id']][_0x4188('0x16')]=!![];this[_0x4188('0x14')][_0x4188('0x10')][this[_0x4188('0x6')]['id']][_0x4188('0x17')]=undefined;util['showNotification'](this[_0x4188('0x18')],this[_0x4188('0x5')]['id'],this[_0x4188('0x14')]['agents'][this[_0x4188('0x6')]['id']],null,this[_0x4188('0x4')]);util['writeLog'](this['squeue']['id'],this[_0x4188('0x14')]['agents'][this[_0x4188('0x6')]['id']],_0x4188('0x19')+(this[_0x4188('0x4')][_0x4188('0x12')]?_0x4188('0x1a'):''));}else{logger[_0x4188('0xe')](_0x4188('0x1b'),this[_0x4188('0x5')]['id'],this['agent']['id']);setTimeout(this['push'][_0x4188('0x9')](this),0x3e8);}}};Agent[_0x4188('0xd')][_0x4188('0xa')]=function(_0x244a42){if(_[_0x4188('0xf')](this[_0x4188('0x14')][_0x4188('0x10')][this['agent']['id']])){return logger[_0x4188('0xe')](_0x4188('0x11'),this[_0x4188('0x5')]['id'],this[_0x4188('0x6')]['id']);}else{logger[_0x4188('0xe')](_0x4188('0x1c'),this['squeue']['id'],this[_0x4188('0x6')]['id']);util[_0x4188('0x1d')](this['notificationId'],this[_0x4188('0x5')]['id'],this[_0x4188('0x14')]['agents'][this['agent']['id']],null,this[_0x4188('0x4')]);this[_0x4188('0x14')]['agents'][this[_0x4188('0x6')]['id']][_0x4188('0x16')]=![];this['realtime'][_0x4188('0x10')][this['agent']['id']]['busyQueue']=undefined;util['writeLog'](this[_0x4188('0x5')]['id'],this['realtime']['agents'][this[_0x4188('0x6')]['id']],_0x244a42?_0x4188('0x1e'):_0x4188('0x1f'));}if(!_0x244a42){setTimeout(this['push'][_0x4188('0x9')](this),0x3e8);}};function agent(_0xde8b84,_0x15c7f0,_0x248795,_0x2f92f1){return new Agent(_0xde8b84,_0x15c7f0,_0x248795,_0x2f92f1);}module[_0x4188('0x20')]=agent;
\ No newline at end of file
index 96f95e0..7b086c0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x81bd=['isNil','queue','Agents','length','agents','info','[%s][QUEUE]\x20agent\x20skipped,\x20unknown\x20id\x20%s','writeLog','RINGING','busy','busyQueue','name','showNotification','[%s][QUEUE]\x20ALL\x20AGENTS\x20ARE\x20BUSY','[%s][QUEUE]\x20EMPTY','hideNotification','STOP','TIMEOUT','exports','lodash','uuid','./util','../../../../../config/logger','routing','notificationId','squeue','realtime','bind','timeout','handleTimeout','drained','handleDrained','prototype','push','handleRun'];(function(_0x4ebc0a,_0x539e42){var _0x2425c9=function(_0x43b0b4){while(--_0x43b0b4){_0x4ebc0a['push'](_0x4ebc0a['shift']());}};_0x2425c9(++_0x539e42);}(_0x81bd,0x7c));var _0xd81b=function(_0x5a7650,_0x454cd1){_0x5a7650=_0x5a7650-0x0;var _0x1b8bfc=_0x81bd[_0x5a7650];return _0x1b8bfc;};'use strict';var _=require(_0xd81b('0x0'));var uuid=require(_0xd81b('0x1'));var util=require(_0xd81b('0x2'));var logger=require(_0xd81b('0x3'))(_0xd81b('0x4'));var Beepall=function(_0x2ec03a,_0x111a9c,_0x54e096,_0x16e8de){this[_0xd81b('0x5')]=uuid['v4']();this[_0xd81b('0x6')]=_0x2ec03a;this['queue']=_0x111a9c;this[_0xd81b('0x7')]=_0x54e096;this[_0xd81b('0x4')]=_0x16e8de;this[_0xd81b('0x6')]['push'](this['handleRun'][_0xd81b('0x8')](this),this['handleTimeout'][_0xd81b('0x8')](this));this[_0xd81b('0x6')]['on'](_0xd81b('0x9'),this[_0xd81b('0xa')][_0xd81b('0x8')](this));this[_0xd81b('0x6')]['on'](_0xd81b('0xb'),this[_0xd81b('0xc')][_0xd81b('0x8')](this));};Beepall[_0xd81b('0xd')][_0xd81b('0xe')]=function(){this[_0xd81b('0x6')][_0xd81b('0xe')](this['handleRun'][_0xd81b('0x8')](this),this['handleTimeout'][_0xd81b('0x8')](this));};Beepall[_0xd81b('0xd')]['handleDrained']=function(_0x35a053){this['handleTimeout'](!![]);};Beepall[_0xd81b('0xd')][_0xd81b('0xf')]=function(_0x6c6041){var _0x35cfc1=!![];if(!_[_0xd81b('0x10')](this['queue'])&&!_[_0xd81b('0x10')](this[_0xd81b('0x11')]['Agents'])&&this[_0xd81b('0x11')][_0xd81b('0x12')][_0xd81b('0x13')]>0x0){for(var _0x15e860=0x0,_0x5f7db6;_0x15e860<this[_0xd81b('0x11')][_0xd81b('0x12')][_0xd81b('0x13')];_0x15e860+=0x1){_0x5f7db6=this[_0xd81b('0x11')][_0xd81b('0x12')][_0x15e860]['id'];if(_[_0xd81b('0x10')](this[_0xd81b('0x7')][_0xd81b('0x14')][_0x5f7db6])){logger[_0xd81b('0x15')](_0xd81b('0x16'),this[_0xd81b('0x6')]['id'],_0x5f7db6);}else{if(util['isAgentAvailable'](this['squeue']['id'],this[_0xd81b('0x7')][_0xd81b('0x14')][_0x5f7db6],this[_0xd81b('0x6')]['channel'],!![])){_0x35cfc1=![];util[_0xd81b('0x17')](this[_0xd81b('0x6')]['id'],this['realtime'][_0xd81b('0x14')][_0x5f7db6],_0xd81b('0x18'));this[_0xd81b('0x7')][_0xd81b('0x14')][_0x5f7db6][_0xd81b('0x19')]=!![];this[_0xd81b('0x7')][_0xd81b('0x14')][_0x5f7db6][_0xd81b('0x1a')]=this[_0xd81b('0x11')][_0xd81b('0x1b')];util[_0xd81b('0x1c')](this[_0xd81b('0x5')],this['squeue']['id'],this[_0xd81b('0x7')][_0xd81b('0x14')][_0x5f7db6],this[_0xd81b('0x11')],this[_0xd81b('0x4')]);}}}if(_0x35cfc1){logger[_0xd81b('0x15')](_0xd81b('0x1d'),this[_0xd81b('0x6')]['id']);setTimeout(this[_0xd81b('0xe')][_0xd81b('0x8')](this),0x3e8);}}else{logger['info'](_0xd81b('0x1e'),this['squeue']['id']);setTimeout(this['push'][_0xd81b('0x8')](this),0x3e8);}};Beepall[_0xd81b('0xd')]['handleTimeout']=function(_0x481454){if(!_[_0xd81b('0x10')](this[_0xd81b('0x11')])&&!_[_0xd81b('0x10')](this[_0xd81b('0x11')][_0xd81b('0x12')])){for(var _0x4654ba=0x0,_0x5527ed;_0x4654ba<this[_0xd81b('0x11')][_0xd81b('0x12')]['length'];_0x4654ba+=0x1){_0x5527ed=this['queue'][_0xd81b('0x12')][_0x4654ba]['id'];if(_[_0xd81b('0x10')](this['realtime']['agents'][_0x5527ed])){logger['info'](_0xd81b('0x16'),this[_0xd81b('0x6')]['id'],_0x5527ed);}else{util[_0xd81b('0x1f')](this[_0xd81b('0x5')],this[_0xd81b('0x6')]['id'],this[_0xd81b('0x7')][_0xd81b('0x14')][_0x5527ed],this['queue'],this[_0xd81b('0x4')]);util['writeLog'](this[_0xd81b('0x6')]['id'],this[_0xd81b('0x7')][_0xd81b('0x14')][_0x5527ed],_0x481454?_0xd81b('0x20'):_0xd81b('0x21'));this[_0xd81b('0x7')][_0xd81b('0x14')][_0x5527ed][_0xd81b('0x19')]=![];this[_0xd81b('0x7')][_0xd81b('0x14')][_0x5527ed][_0xd81b('0x1a')]=undefined;}}}if(!_0x481454){setTimeout(this[_0xd81b('0xe')][_0xd81b('0x8')](this),0x3e8);}};function beepall(_0x57bc0c,_0x49deb8,_0x413bf6,_0x46119e){return new Beepall(_0x57bc0c,_0x49deb8,_0x413bf6,_0x46119e);}module[_0xd81b('0x22')]=beepall;
\ No newline at end of file
+var _0x82f5=['uuid','./util','../../../../../config/logger','routing','notificationId','squeue','queue','realtime','push','bind','handleTimeout','timeout','drained','handleDrained','prototype','handleRun','isNil','Agents','info','[%s][QUEUE]\x20agent\x20skipped,\x20unknown\x20id\x20%s','isAgentAvailable','agents','channel','writeLog','showNotification','[%s][QUEUE]\x20ALL\x20AGENTS\x20ARE\x20BUSY','[%s][QUEUE]\x20EMPTY','length','hideNotification','STOP','TIMEOUT','busy','busyQueue','exports','lodash'];(function(_0x7a5636,_0x268765){var _0x2191fa=function(_0x3c6ef3){while(--_0x3c6ef3){_0x7a5636['push'](_0x7a5636['shift']());}};_0x2191fa(++_0x268765);}(_0x82f5,0x15d));var _0x582f=function(_0x1affa7,_0x53fe51){_0x1affa7=_0x1affa7-0x0;var _0xb7402c=_0x82f5[_0x1affa7];return _0xb7402c;};'use strict';var _=require(_0x582f('0x0'));var uuid=require(_0x582f('0x1'));var util=require(_0x582f('0x2'));var logger=require(_0x582f('0x3'))(_0x582f('0x4'));var Beepall=function(_0x5a8ca2,_0x4e1ebd,_0x22c0b1,_0x3f3bde){this[_0x582f('0x5')]=uuid['v4']();this[_0x582f('0x6')]=_0x5a8ca2;this[_0x582f('0x7')]=_0x4e1ebd;this[_0x582f('0x8')]=_0x22c0b1;this[_0x582f('0x4')]=_0x3f3bde;this['squeue'][_0x582f('0x9')](this['handleRun'][_0x582f('0xa')](this),this[_0x582f('0xb')][_0x582f('0xa')](this));this['squeue']['on'](_0x582f('0xc'),this[_0x582f('0xb')]['bind'](this));this[_0x582f('0x6')]['on'](_0x582f('0xd'),this[_0x582f('0xe')][_0x582f('0xa')](this));};Beepall[_0x582f('0xf')]['push']=function(){this['squeue'][_0x582f('0x9')](this[_0x582f('0x10')][_0x582f('0xa')](this),this[_0x582f('0xb')][_0x582f('0xa')](this));};Beepall['prototype'][_0x582f('0xe')]=function(_0x360c1c){this['handleTimeout'](!![]);};Beepall[_0x582f('0xf')][_0x582f('0x10')]=function(_0x3e374b){var _0x16e2ce=!![];if(!_[_0x582f('0x11')](this[_0x582f('0x7')])&&!_[_0x582f('0x11')](this[_0x582f('0x7')][_0x582f('0x12')])&&this[_0x582f('0x7')][_0x582f('0x12')]['length']>0x0){for(var _0x18a8a3=0x0,_0x1f055b;_0x18a8a3<this[_0x582f('0x7')][_0x582f('0x12')]['length'];_0x18a8a3+=0x1){_0x1f055b=this[_0x582f('0x7')][_0x582f('0x12')][_0x18a8a3]['id'];if(_[_0x582f('0x11')](this[_0x582f('0x8')]['agents'][_0x1f055b])){logger[_0x582f('0x13')](_0x582f('0x14'),this['squeue']['id'],_0x1f055b);}else{if(util[_0x582f('0x15')](this[_0x582f('0x6')]['id'],this['realtime'][_0x582f('0x16')][_0x1f055b],this[_0x582f('0x6')][_0x582f('0x17')],!![])){_0x16e2ce=![];util[_0x582f('0x18')](this[_0x582f('0x6')]['id'],this[_0x582f('0x8')]['agents'][_0x1f055b],'RINGING');this[_0x582f('0x8')][_0x582f('0x16')][_0x1f055b]['busy']=!![];this[_0x582f('0x8')][_0x582f('0x16')][_0x1f055b]['busyQueue']=this[_0x582f('0x7')]['name'];util[_0x582f('0x19')](this['notificationId'],this[_0x582f('0x6')]['id'],this['realtime']['agents'][_0x1f055b],this[_0x582f('0x7')],this['routing']);}}}if(_0x16e2ce){logger[_0x582f('0x13')](_0x582f('0x1a'),this[_0x582f('0x6')]['id']);setTimeout(this[_0x582f('0x9')][_0x582f('0xa')](this),0x3e8);}}else{logger[_0x582f('0x13')](_0x582f('0x1b'),this[_0x582f('0x6')]['id']);setTimeout(this[_0x582f('0x9')][_0x582f('0xa')](this),0x3e8);}};Beepall[_0x582f('0xf')][_0x582f('0xb')]=function(_0x54bdbc){if(!_[_0x582f('0x11')](this[_0x582f('0x7')])&&!_[_0x582f('0x11')](this['queue'][_0x582f('0x12')])){for(var _0x3a0c54=0x0,_0x159ad7;_0x3a0c54<this[_0x582f('0x7')][_0x582f('0x12')][_0x582f('0x1c')];_0x3a0c54+=0x1){_0x159ad7=this['queue'][_0x582f('0x12')][_0x3a0c54]['id'];if(_[_0x582f('0x11')](this[_0x582f('0x8')][_0x582f('0x16')][_0x159ad7])){logger[_0x582f('0x13')]('[%s][QUEUE]\x20agent\x20skipped,\x20unknown\x20id\x20%s',this[_0x582f('0x6')]['id'],_0x159ad7);}else{util[_0x582f('0x1d')](this[_0x582f('0x5')],this['squeue']['id'],this[_0x582f('0x8')][_0x582f('0x16')][_0x159ad7],this[_0x582f('0x7')],this[_0x582f('0x4')]);util[_0x582f('0x18')](this[_0x582f('0x6')]['id'],this[_0x582f('0x8')][_0x582f('0x16')][_0x159ad7],_0x54bdbc?_0x582f('0x1e'):_0x582f('0x1f'));this[_0x582f('0x8')][_0x582f('0x16')][_0x159ad7][_0x582f('0x20')]=![];this[_0x582f('0x8')]['agents'][_0x159ad7][_0x582f('0x21')]=undefined;}}}if(!_0x54bdbc){setTimeout(this[_0x582f('0x9')][_0x582f('0xa')](this),0x3e8);}};function beepall(_0x369b00,_0x12b663,_0x3a95a2,_0x5be204){return new Beepall(_0x369b00,_0x12b663,_0x3a95a2,_0x5be204);}module[_0x582f('0x22')]=beepall;
\ No newline at end of file
index b8b6339..b87692f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4bd1=['./agent','exports','./rrmemory','./beepall'];(function(_0x3ec1da,_0x1e36f5){var _0x472358=function(_0x1d41b1){while(--_0x1d41b1){_0x3ec1da['push'](_0x3ec1da['shift']());}};_0x472358(++_0x1e36f5);}(_0x4bd1,0x111));var _0x14bd=function(_0xc36d01,_0x3bf1a6){_0xc36d01=_0xc36d01-0x0;var _0xecb231=_0x4bd1[_0xc36d01];return _0xecb231;};'use strict';module[_0x14bd('0x0')]={'rrmemory':require(_0x14bd('0x1')),'beepall':require(_0x14bd('0x2')),'agent':require(_0x14bd('0x3'))};
\ No newline at end of file
+var _0x18c6=['./agent','exports','./beepall'];(function(_0x817138,_0x19d3e8){var _0x305712=function(_0xff0e75){while(--_0xff0e75){_0x817138['push'](_0x817138['shift']());}};_0x305712(++_0x19d3e8);}(_0x18c6,0xc1));var _0x618c=function(_0x292a47,_0x392e1d){_0x292a47=_0x292a47-0x0;var _0x1faff6=_0x18c6[_0x292a47];return _0x1faff6;};'use strict';module[_0x618c('0x0')]={'rrmemory':require('./rrmemory'),'beepall':require(_0x618c('0x1')),'agent':require(_0x618c('0x2'))};
\ No newline at end of file
index c007024..5c2f2ea 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xecd1=['TIMEOUT','exports','lodash','./util','../../../../../config/logger','routing','notificationId','squeue','queue','realtime','intervals','handleRun','bind','handleTimeout','module','timeout','prototype','push','handleDrained','handleCheckReject','isAgentAvailable','agents','channel','info','[%s][QUEUE]\x20available\x20again\x20%s','agentId','[%s][QUEUE]\x20try\x20with\x20%s','[%s][QUEUE]\x20agent\x20skipped,\x20unknown\x20id\x20%s','done','busy','busyQueue','name','writeLog','RINGING','[%s][QUEUE]\x20agent\x20skipped,\x20not\x20available\x20id\x20%s','[%s][QUEUE]\x20timeout\x20with\x20%s','isNil'];(function(_0x2f0ae8,_0x2bd1c4){var _0x1e7b13=function(_0x457957){while(--_0x457957){_0x2f0ae8['push'](_0x2f0ae8['shift']());}};_0x1e7b13(++_0x2bd1c4);}(_0xecd1,0x71));var _0x1ecd=function(_0x2455f3,_0x23aba2){_0x2455f3=_0x2455f3-0x0;var _0x711eec=_0xecd1[_0x2455f3];return _0x711eec;};'use strict';var rr=require('rr');var _=require(_0x1ecd('0x0'));var uuid=require('uuid');var util=require(_0x1ecd('0x1'));var logger=require(_0x1ecd('0x2'))(_0x1ecd('0x3'));var RRMemory=function(_0x5c7083,_0x132b51,_0x3e5ee6,_0x271e84){this[_0x1ecd('0x4')]=uuid['v4']();this[_0x1ecd('0x5')]=_0x5c7083;this[_0x1ecd('0x6')]=_0x132b51;this[_0x1ecd('0x7')]=_0x3e5ee6;this['routing']=_0x271e84;this[_0x1ecd('0x8')]={};this[_0x1ecd('0x5')]['push'](this[_0x1ecd('0x9')][_0x1ecd('0xa')](this),this[_0x1ecd('0xb')][_0x1ecd('0xa')](this),this[_0x1ecd('0xc')]);this[_0x1ecd('0x5')]['on'](_0x1ecd('0xd'),this[_0x1ecd('0xb')]['bind'](this));this[_0x1ecd('0x5')]['on']('drained',this['handleDrained'][_0x1ecd('0xa')](this));};RRMemory[_0x1ecd('0xe')]['push']=function(){this['squeue'][_0x1ecd('0xf')](this[_0x1ecd('0x9')][_0x1ecd('0xa')](this),this['handleTimeout']['bind'](this));};RRMemory[_0x1ecd('0xe')][_0x1ecd('0x10')]=function(_0xc56b9a){this[_0x1ecd('0xb')](!![]);};RRMemory[_0x1ecd('0xe')][_0x1ecd('0x11')]=function(_0x359e9f){if(util[_0x1ecd('0x12')](this[_0x1ecd('0x5')]['id'],this['realtime'][_0x1ecd('0x13')][this['agentId']],this[_0x1ecd('0x5')][_0x1ecd('0x14')],!![])){logger[_0x1ecd('0x15')](_0x1ecd('0x16'),this[_0x1ecd('0x5')]['id'],this[_0x1ecd('0x17')]);clearInterval(this[_0x1ecd('0x8')][this[_0x1ecd('0x17')]]);_0x359e9f['done']();setTimeout(this['push'][_0x1ecd('0xa')](this),0x3e8);}};RRMemory['prototype'][_0x1ecd('0x9')]=function(_0x589245){this[_0x1ecd('0x17')]=rr(this[_0x1ecd('0x6')]['mapAgentsId']);logger[_0x1ecd('0x15')](_0x1ecd('0x18'),this['squeue']['id'],this[_0x1ecd('0x17')]);if(_['isNil'](this[_0x1ecd('0x7')][_0x1ecd('0x13')][this[_0x1ecd('0x17')]])){logger['info'](_0x1ecd('0x19'),this[_0x1ecd('0x5')]['id'],this['agentId']);_0x589245[_0x1ecd('0x1a')]();setTimeout(this[_0x1ecd('0xf')][_0x1ecd('0xa')](this),0x3e8);}else{if(util['isAgentAvailable'](this[_0x1ecd('0x5')]['id'],this[_0x1ecd('0x7')][_0x1ecd('0x13')][this['agentId']],this[_0x1ecd('0x5')][_0x1ecd('0x14')],!![])){this[_0x1ecd('0x7')]['agents'][this[_0x1ecd('0x17')]][_0x1ecd('0x1b')]=!![];this[_0x1ecd('0x7')][_0x1ecd('0x13')][this[_0x1ecd('0x17')]][_0x1ecd('0x1c')]=this['queue'][_0x1ecd('0x1d')];util['showNotification'](this[_0x1ecd('0x4')],this['squeue']['id'],this['realtime'][_0x1ecd('0x13')][this[_0x1ecd('0x17')]],this[_0x1ecd('0x6')],this[_0x1ecd('0x3')]);util[_0x1ecd('0x1e')](this[_0x1ecd('0x5')]['id'],this[_0x1ecd('0x7')][_0x1ecd('0x13')][this[_0x1ecd('0x17')]],_0x1ecd('0x1f'));this[_0x1ecd('0x8')][this['agentId']]=setInterval(this[_0x1ecd('0x11')]['bind'](this,_0x589245),0x3e8);}else{logger[_0x1ecd('0x15')](_0x1ecd('0x20'),this[_0x1ecd('0x5')]['id'],this[_0x1ecd('0x17')]);_0x589245[_0x1ecd('0x1a')]();setTimeout(this[_0x1ecd('0xf')][_0x1ecd('0xa')](this),0x3e8);}}};RRMemory['prototype'][_0x1ecd('0xb')]=function(_0x56df24){logger[_0x1ecd('0x15')](_0x1ecd('0x21'),this[_0x1ecd('0x5')]['id'],this[_0x1ecd('0x17')]);if(_[_0x1ecd('0x22')](this[_0x1ecd('0x7')][_0x1ecd('0x13')][this[_0x1ecd('0x17')]])){logger[_0x1ecd('0x15')](_0x1ecd('0x19'),this[_0x1ecd('0x5')]['id'],this[_0x1ecd('0x17')]);}else{clearInterval(this[_0x1ecd('0x8')][this[_0x1ecd('0x17')]]);util['hideNotification'](this['notificationId'],this[_0x1ecd('0x5')]['id'],this[_0x1ecd('0x7')]['agents'][this['agentId']],this['queue'],this[_0x1ecd('0x3')]);util[_0x1ecd('0x1e')](this[_0x1ecd('0x5')]['id'],this['realtime']['agents'][this[_0x1ecd('0x17')]],_0x1ecd('0x23'));this[_0x1ecd('0x7')][_0x1ecd('0x13')][this[_0x1ecd('0x17')]][_0x1ecd('0x1b')]=![];this[_0x1ecd('0x7')][_0x1ecd('0x13')][this['agentId']][_0x1ecd('0x1c')]=undefined;}if(!_0x56df24){setTimeout(this[_0x1ecd('0xf')][_0x1ecd('0xa')](this),0x3e8);}};function rrmemory(_0x506ea3,_0x4e3e87,_0x19dd7c,_0x52a009){return new RRMemory(_0x506ea3,_0x4e3e87,_0x19dd7c,_0x52a009);}module[_0x1ecd('0x24')]=rrmemory;
\ No newline at end of file
+var _0x4f07=['handleRun','bind','handleTimeout','module','timeout','drained','handleDrained','prototype','handleCheckReject','agents','channel','info','[%s][QUEUE]\x20available\x20again\x20%s','agentId','done','mapAgentsId','[%s][QUEUE]\x20try\x20with\x20%s','isNil','[%s][QUEUE]\x20agent\x20skipped,\x20unknown\x20id\x20%s','isAgentAvailable','busyQueue','name','notificationId','routing','writeLog','RINGING','[%s][QUEUE]\x20agent\x20skipped,\x20not\x20available\x20id\x20%s','hideNotification','busy','./util','../../../../../config/logger','squeue','queue','realtime','intervals','push'];(function(_0x373b2d,_0x3943f1){var _0x3a1204=function(_0x502d0e){while(--_0x502d0e){_0x373b2d['push'](_0x373b2d['shift']());}};_0x3a1204(++_0x3943f1);}(_0x4f07,0x1cd));var _0x74f0=function(_0x2641f9,_0x26715f){_0x2641f9=_0x2641f9-0x0;var _0x585741=_0x4f07[_0x2641f9];return _0x585741;};'use strict';var rr=require('rr');var _=require('lodash');var uuid=require('uuid');var util=require(_0x74f0('0x0'));var logger=require(_0x74f0('0x1'))('routing');var RRMemory=function(_0x1aae42,_0xb5e3a1,_0x4397f9,_0x4b334e){this['notificationId']=uuid['v4']();this[_0x74f0('0x2')]=_0x1aae42;this[_0x74f0('0x3')]=_0xb5e3a1;this[_0x74f0('0x4')]=_0x4397f9;this['routing']=_0x4b334e;this[_0x74f0('0x5')]={};this[_0x74f0('0x2')][_0x74f0('0x6')](this[_0x74f0('0x7')][_0x74f0('0x8')](this),this[_0x74f0('0x9')][_0x74f0('0x8')](this),this[_0x74f0('0xa')]);this['squeue']['on'](_0x74f0('0xb'),this[_0x74f0('0x9')][_0x74f0('0x8')](this));this[_0x74f0('0x2')]['on'](_0x74f0('0xc'),this[_0x74f0('0xd')][_0x74f0('0x8')](this));};RRMemory[_0x74f0('0xe')]['push']=function(){this['squeue']['push'](this[_0x74f0('0x7')][_0x74f0('0x8')](this),this[_0x74f0('0x9')][_0x74f0('0x8')](this));};RRMemory[_0x74f0('0xe')][_0x74f0('0xd')]=function(_0x52d844){this['handleTimeout'](!![]);};RRMemory[_0x74f0('0xe')][_0x74f0('0xf')]=function(_0x1f8605){if(util['isAgentAvailable'](this[_0x74f0('0x2')]['id'],this[_0x74f0('0x4')][_0x74f0('0x10')][this['agentId']],this[_0x74f0('0x2')][_0x74f0('0x11')],!![])){logger[_0x74f0('0x12')](_0x74f0('0x13'),this[_0x74f0('0x2')]['id'],this[_0x74f0('0x14')]);clearInterval(this['intervals'][this[_0x74f0('0x14')]]);_0x1f8605[_0x74f0('0x15')]();setTimeout(this[_0x74f0('0x6')][_0x74f0('0x8')](this),0x3e8);}};RRMemory[_0x74f0('0xe')][_0x74f0('0x7')]=function(_0x370a15){this[_0x74f0('0x14')]=rr(this[_0x74f0('0x3')][_0x74f0('0x16')]);logger[_0x74f0('0x12')](_0x74f0('0x17'),this[_0x74f0('0x2')]['id'],this[_0x74f0('0x14')]);if(_[_0x74f0('0x18')](this[_0x74f0('0x4')][_0x74f0('0x10')][this[_0x74f0('0x14')]])){logger[_0x74f0('0x12')](_0x74f0('0x19'),this[_0x74f0('0x2')]['id'],this['agentId']);_0x370a15['done']();setTimeout(this[_0x74f0('0x6')]['bind'](this),0x3e8);}else{if(util[_0x74f0('0x1a')](this[_0x74f0('0x2')]['id'],this['realtime'][_0x74f0('0x10')][this['agentId']],this[_0x74f0('0x2')]['channel'],!![])){this[_0x74f0('0x4')][_0x74f0('0x10')][this[_0x74f0('0x14')]]['busy']=!![];this[_0x74f0('0x4')][_0x74f0('0x10')][this[_0x74f0('0x14')]][_0x74f0('0x1b')]=this[_0x74f0('0x3')][_0x74f0('0x1c')];util['showNotification'](this[_0x74f0('0x1d')],this[_0x74f0('0x2')]['id'],this[_0x74f0('0x4')][_0x74f0('0x10')][this[_0x74f0('0x14')]],this[_0x74f0('0x3')],this[_0x74f0('0x1e')]);util[_0x74f0('0x1f')](this['squeue']['id'],this[_0x74f0('0x4')][_0x74f0('0x10')][this['agentId']],_0x74f0('0x20'));this[_0x74f0('0x5')][this[_0x74f0('0x14')]]=setInterval(this[_0x74f0('0xf')][_0x74f0('0x8')](this,_0x370a15),0x3e8);}else{logger[_0x74f0('0x12')](_0x74f0('0x21'),this[_0x74f0('0x2')]['id'],this[_0x74f0('0x14')]);_0x370a15['done']();setTimeout(this[_0x74f0('0x6')][_0x74f0('0x8')](this),0x3e8);}}};RRMemory[_0x74f0('0xe')][_0x74f0('0x9')]=function(_0x285032){logger[_0x74f0('0x12')]('[%s][QUEUE]\x20timeout\x20with\x20%s',this[_0x74f0('0x2')]['id'],this[_0x74f0('0x14')]);if(_[_0x74f0('0x18')](this[_0x74f0('0x4')][_0x74f0('0x10')][this[_0x74f0('0x14')]])){logger[_0x74f0('0x12')](_0x74f0('0x19'),this[_0x74f0('0x2')]['id'],this[_0x74f0('0x14')]);}else{clearInterval(this[_0x74f0('0x5')][this[_0x74f0('0x14')]]);util[_0x74f0('0x22')](this['notificationId'],this['squeue']['id'],this[_0x74f0('0x4')][_0x74f0('0x10')][this[_0x74f0('0x14')]],this[_0x74f0('0x3')],this[_0x74f0('0x1e')]);util[_0x74f0('0x1f')](this[_0x74f0('0x2')]['id'],this['realtime'][_0x74f0('0x10')][this['agentId']],'TIMEOUT');this[_0x74f0('0x4')]['agents'][this[_0x74f0('0x14')]][_0x74f0('0x23')]=![];this[_0x74f0('0x4')]['agents'][this[_0x74f0('0x14')]][_0x74f0('0x1b')]=undefined;}if(!_0x285032){setTimeout(this[_0x74f0('0x6')][_0x74f0('0x8')](this),0x3e8);}};function rrmemory(_0x497c04,_0x1b9809,_0x3b368b,_0x2d41ee){return new RRMemory(_0x497c04,_0x1b9809,_0x3b368b,_0x2d41ee);}module['exports']=rrmemory;
\ No newline at end of file
index 24733ae..dd4bb26 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7ee1=['info','[%s][QUEUE][AGENT:%s][STATUS:%s]','isAgentAvailable','BUSY','online','OFFLINE','Pause','PAUSE','hasOwnProperty','Capacity','CurrentCapacity','\x20MAXCAPACITY','showNotification','hideNotification','writeLog','lodash','ioredis','../../../../../config/environment','../../../../../config/logger','redis','defaults','localhost','format','name','emit','user:save','split','\x20interaction','account','notificationSound','notificationShake','body','queue','getMustacheRender','notificationTemplate','msg','I\x20can\x27t\x20render\x20your\x20template','error','[%s][QUEUE]\x20%s','message','user:%s','save'];(function(_0x5b89c2,_0x55a198){var _0x2e35d5=function(_0x2952c9){while(--_0x2952c9){_0x5b89c2['push'](_0x5b89c2['shift']());}};_0x2e35d5(++_0x55a198);}(_0x7ee1,0x8d));var _0x17ee=function(_0x15220c,_0x134976){_0x15220c=_0x15220c-0x0;var _0x4c1602=_0x7ee1[_0x15220c];return _0x4c1602;};'use strict';var _=require(_0x17ee('0x0'));var util=require('util');var utils=require('../utils');var Mustache=require('mustache');var Redis=require(_0x17ee('0x1'));var config=require(_0x17ee('0x2'));var logger=require(_0x17ee('0x3'))('routing');config[_0x17ee('0x4')]=_[_0x17ee('0x5')](config[_0x17ee('0x4')],{'host':_0x17ee('0x6'),'port':0x18eb});var io=require('socket.io-emitter')(new Redis(config[_0x17ee('0x4')]));function emit(_0x29b9eb,_0x54b4f6,_0x3f61af){io['to'](_0x29b9eb)['emit'](_0x54b4f6,_0x3f61af);}function sendNotification(_0x3d767b,_0xfa5096,_0x2c961f,_0x4af369,_0x4b6374,_0x4d6bb5){io['to'](util[_0x17ee('0x7')]('user:%s',_0x4af369[_0x17ee('0x8')]))[_0x17ee('0x9')](_0x17ee('0xa'),_0x4af369);var _0x3d4f0f=_0x4d6bb5||{};var _0x57fae0=_0x2c961f[_0x17ee('0xb')]('.');var _0x51b5d9={'uniqueid':_0xfa5096,'channel':_0x57fae0[0x0],'id':_0x57fae0[0x1],'title':_0x57fae0[0x0]+_0x17ee('0xc'),'interactionId':_0x57fae0[0x2],'queue':_0x4b6374?_0x4b6374[_0x17ee('0x8')]:null,'sound':_0x3d4f0f[_0x17ee('0xd')][_0x17ee('0xe')],'shake':_0x3d4f0f[_0x17ee('0xd')][_0x17ee('0xf')]};try{if(!_0x3d4f0f[_0x17ee('0x10')]){_0x3d4f0f[_0x17ee('0x10')]={};}if(_0x4b6374){_0x3d4f0f[_0x17ee('0x10')][_0x17ee('0x11')]=_0x4b6374;}else if(_0x3d4f0f[_0x17ee('0x10')]['queue']){delete _0x3d4f0f['body']['queue'];}_0x51b5d9['msg']=utils[_0x17ee('0x12')](_0x3d4f0f[_0x17ee('0xd')][_0x17ee('0x13')],_0x3d4f0f);}catch(_0x2e2287){_0x51b5d9[_0x17ee('0x14')]=_0x17ee('0x15');logger[_0x17ee('0x16')](util['format'](_0x17ee('0x17'),_0xfa5096,_0x2e2287[_0x17ee('0x18')]));}io['to'](util[_0x17ee('0x7')](_0x17ee('0x19'),_0x4af369[_0x17ee('0x8')]))['emit'](util[_0x17ee('0x7')]('notification:%s',_0x3d767b?_0x17ee('0x1a'):'remove'),_0x51b5d9);}function writeLog(_0x1f4956,_0x343f1b,_0x2ee1b6){return logger[_0x17ee('0x1b')](util[_0x17ee('0x7')](_0x17ee('0x1c'),_0x1f4956,_0x343f1b[_0x17ee('0x8')],_0x2ee1b6));}exports[_0x17ee('0x1d')]=function(_0x1425e5,_0x1f3d6d,_0x37fe4e,_0x4d2d91){if(_0x1f3d6d['busy']){writeLog(_0x1425e5,_0x1f3d6d,_0x17ee('0x1e'));return![];}if(!_0x1f3d6d[_0x17ee('0x1f')]){writeLog(_0x1425e5,_0x1f3d6d,_0x17ee('0x20'));return![];}if(_0x1f3d6d[_0x37fe4e+_0x17ee('0x21')]){writeLog(_0x1425e5,_0x1f3d6d,_0x17ee('0x22'));return![];}if(_0x4d2d91&&_0x1f3d6d[_0x17ee('0x23')](_0x37fe4e+_0x17ee('0x24'))&&_0x1f3d6d[_0x17ee('0x23')](_0x37fe4e+_0x17ee('0x25'))){if(_0x1f3d6d[_0x37fe4e+_0x17ee('0x24')]>0x0&&_0x1f3d6d[_0x37fe4e+_0x17ee('0x25')]>=_0x1f3d6d[_0x37fe4e+_0x17ee('0x24')]){writeLog(_0x1425e5,_0x1f3d6d,_0x37fe4e['toUpperCase']()+_0x17ee('0x26'));return![];}}return!![];};exports[_0x17ee('0x27')]=function(_0x11ce7e,_0x258018,_0x125513,_0x51a561,_0x38237c){return sendNotification(!![],_0x11ce7e,_0x258018,_0x125513,_0x51a561,_0x38237c);};exports[_0x17ee('0x28')]=function(_0x295186,_0x4c461b,_0x2220cb,_0x27ab38,_0x56c6ba){return sendNotification(![],_0x295186,_0x4c461b,_0x2220cb,_0x27ab38,_0x56c6ba);};exports[_0x17ee('0x29')]=writeLog;
\ No newline at end of file
+var _0x77d4=['user:%s','save','remove','info','[%s][QUEUE][AGENT:%s][STATUS:%s]','isAgentAvailable','BUSY','OFFLINE','Pause','PAUSE','hasOwnProperty','CurrentCapacity','Capacity','toUpperCase','\x20MAXCAPACITY','showNotification','hideNotification','writeLog','util','mustache','../../../../../config/environment','../../../../../config/logger','defaults','redis','localhost','socket.io-emitter','emit','format','name','user:save','split','account','notificationSound','notificationShake','body','queue','getMustacheRender','notificationTemplate','I\x20can\x27t\x20render\x20your\x20template','[%s][QUEUE]\x20%s','message'];(function(_0x5227b7,_0xd67a45){var _0x283421=function(_0x5e2d71){while(--_0x5e2d71){_0x5227b7['push'](_0x5227b7['shift']());}};_0x283421(++_0xd67a45);}(_0x77d4,0x108));var _0x477d=function(_0x5c56c1,_0x3c1325){_0x5c56c1=_0x5c56c1-0x0;var _0x49a58e=_0x77d4[_0x5c56c1];return _0x49a58e;};'use strict';var _=require('lodash');var util=require(_0x477d('0x0'));var utils=require('../utils');var Mustache=require(_0x477d('0x1'));var Redis=require('ioredis');var config=require(_0x477d('0x2'));var logger=require(_0x477d('0x3'))('routing');config['redis']=_[_0x477d('0x4')](config[_0x477d('0x5')],{'host':_0x477d('0x6'),'port':0x18eb});var io=require(_0x477d('0x7'))(new Redis(config[_0x477d('0x5')]));function emit(_0x45ca2d,_0x5153df,_0x4f4fb4){io['to'](_0x45ca2d)[_0x477d('0x8')](_0x5153df,_0x4f4fb4);}function sendNotification(_0x579859,_0x5da70c,_0x70b0f1,_0x29f11b,_0x204cb9,_0x2c326c){io['to'](util[_0x477d('0x9')]('user:%s',_0x29f11b[_0x477d('0xa')]))['emit'](_0x477d('0xb'),_0x29f11b);var _0x462ac1=_0x2c326c||{};var _0x55ace3=_0x70b0f1[_0x477d('0xc')]('.');var _0x3d362a={'uniqueid':_0x5da70c,'channel':_0x55ace3[0x0],'id':_0x55ace3[0x1],'title':_0x55ace3[0x0]+'\x20interaction','interactionId':_0x55ace3[0x2],'queue':_0x204cb9?_0x204cb9['name']:null,'sound':_0x462ac1[_0x477d('0xd')][_0x477d('0xe')],'shake':_0x462ac1['account'][_0x477d('0xf')]};try{if(!_0x462ac1[_0x477d('0x10')]){_0x462ac1['body']={};}if(_0x204cb9){_0x462ac1['body'][_0x477d('0x11')]=_0x204cb9;}else if(_0x462ac1['body'][_0x477d('0x11')]){delete _0x462ac1[_0x477d('0x10')][_0x477d('0x11')];}_0x3d362a['msg']=utils[_0x477d('0x12')](_0x462ac1[_0x477d('0xd')][_0x477d('0x13')],_0x462ac1);}catch(_0x19c5a7){_0x3d362a['msg']=_0x477d('0x14');logger['error'](util[_0x477d('0x9')](_0x477d('0x15'),_0x5da70c,_0x19c5a7[_0x477d('0x16')]));}io['to'](util[_0x477d('0x9')](_0x477d('0x17'),_0x29f11b[_0x477d('0xa')]))['emit'](util[_0x477d('0x9')]('notification:%s',_0x579859?_0x477d('0x18'):_0x477d('0x19')),_0x3d362a);}function writeLog(_0x40256e,_0x14cbd5,_0x27b3aa){return logger[_0x477d('0x1a')](util[_0x477d('0x9')](_0x477d('0x1b'),_0x40256e,_0x14cbd5[_0x477d('0xa')],_0x27b3aa));}exports[_0x477d('0x1c')]=function(_0x3d2943,_0x3525e8,_0x43c845,_0x1f3868){if(_0x3525e8['busy']){writeLog(_0x3d2943,_0x3525e8,_0x477d('0x1d'));return![];}if(!_0x3525e8['online']){writeLog(_0x3d2943,_0x3525e8,_0x477d('0x1e'));return![];}if(_0x3525e8[_0x43c845+_0x477d('0x1f')]){writeLog(_0x3d2943,_0x3525e8,_0x477d('0x20'));return![];}if(_0x1f3868&&_0x3525e8[_0x477d('0x21')](_0x43c845+'Capacity')&&_0x3525e8[_0x477d('0x21')](_0x43c845+_0x477d('0x22'))){if(_0x3525e8[_0x43c845+_0x477d('0x23')]>0x0&&_0x3525e8[_0x43c845+'CurrentCapacity']>=_0x3525e8[_0x43c845+'Capacity']){writeLog(_0x3d2943,_0x3525e8,_0x43c845[_0x477d('0x24')]()+_0x477d('0x25'));return![];}}return!![];};exports[_0x477d('0x26')]=function(_0x5c8ef1,_0x254141,_0x297d15,_0x74ebb4,_0xe4dd40){return sendNotification(!![],_0x5c8ef1,_0x254141,_0x297d15,_0x74ebb4,_0xe4dd40);};exports[_0x477d('0x27')]=function(_0x537fc4,_0x2fc959,_0xeb02f5,_0x17dd16,_0x25a329){return sendNotification(![],_0x537fc4,_0x2fc959,_0xeb02f5,_0x17dd16,_0x25a329);};exports[_0x477d('0x28')]=writeLog;
\ No newline at end of file
index 5c975bd..d0b4adf 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8cec=['exec','trim','[%s][SYSTEM]\x20result\x20code:\x20%s','replace','[%s][SYSTEM]\x20set\x20variable\x20%s:\x20%s','isObject','stringify','validate','lodash','routing','string','command\x20is\x20a\x20string\x20and\x20it\x20is\x20required','consequence','length','error','[%s][SYSTEM]\x20%s','map','message','join','info','[%s][SYSTEM]\x20no\x20command\x20executed,\x20force\x20next','next','[%s][SYSTEM]\x20commnad:\x20%s'];(function(_0x274fac,_0x61e213){var _0x1a0e89=function(_0xdc3c72){while(--_0xdc3c72){_0x274fac['push'](_0x274fac['shift']());}};_0x1a0e89(++_0x61e213);}(_0x8cec,0x104));var _0xc8ce=function(_0x5521fa,_0x5eaf1a){_0x5521fa=_0x5521fa-0x0;var _0x498abf=_0x8cec[_0x5521fa];return _0x498abf;};'use strict';var schema=require(_0xc8ce('0x0'));var sh=require('shelljs');var _=require(_0xc8ce('0x1'));var utils=require('./utils');var logger=require('../../../../config/logger')(_0xc8ce('0x2'));var system=schema({'command':{'type':_0xc8ce('0x3'),'required':!![],'message':_0xc8ce('0x4')}});exports[_0xc8ce('0x5')]=function(_0x3744c1,_0x377021){return function(_0x330b75){try{var _0x8f677c={'command':_0x377021[0x0]};var _0x4662bb=system[_0xc8ce('0x0')](_0x8f677c,{'typecast':!![]});if(_0x4662bb[_0xc8ce('0x6')]){logger[_0xc8ce('0x7')](_0xc8ce('0x8'),_0x3744c1,_[_0xc8ce('0x9')](_0x4662bb,_0xc8ce('0xa'))[_0xc8ce('0xb')](',\x20'));logger[_0xc8ce('0xc')](_0xc8ce('0xd'),_0x3744c1);_0x330b75[_0xc8ce('0xe')]();}else{var _0x1b3399=this;var _0x5459c3=utils['getMustacheRender'](_0x377021[0x0],this);logger[_0xc8ce('0xc')](_0xc8ce('0xf'),_0x3744c1,_0x5459c3);sh[_0xc8ce('0x10')](_[_0xc8ce('0x11')](_0x5459c3),function(_0x3208fa,_0x446eef){logger[_0xc8ce('0xc')](_0xc8ce('0x12'),_0x3744c1,_0x3208fa);if(_0x3208fa==0x0){var _0x4a2038=_0x446eef[_0xc8ce('0x13')](/(\r\n|\n|\r)/gm,'');if(_['isNil'](_0x377021[0x1])||_['isEmpty'](_0x377021[0x1])){logger['info']('[%s][SYSTEM]\x20no\x20variable',_0x3744c1);_0x1b3399['body'][_0x377021[0x1]]=_0x4a2038;}else{logger[_0xc8ce('0xc')](_0xc8ce('0x14'),_0x3744c1,_0x377021[0x1],_0x4a2038);_0x1b3399['body'][_0x377021[0x1]]=_0x4a2038;}}_0x330b75['next']();});}}catch(_0xf6e43c){logger[_0xc8ce('0x7')](_0xc8ce('0x8'),_0x3744c1,_[_0xc8ce('0x15')](_0xf6e43c)?JSON[_0xc8ce('0x16')](_0xf6e43c):_0xf6e43c);logger['info']('[%s][SYSTEM]\x20no\x20command\x20executed,\x20force\x20next',_0x3744c1);_0x330b75[_0xc8ce('0xe')]();}};};
\ No newline at end of file
+var _0x13bb=['string','command\x20is\x20a\x20string\x20and\x20it\x20is\x20required','validate','length','error','[%s][SYSTEM]\x20%s','map','message','info','next','getMustacheRender','[%s][SYSTEM]\x20commnad:\x20%s','exec','trim','[%s][SYSTEM]\x20result\x20code:\x20%s','replace','body','[%s][SYSTEM]\x20set\x20variable\x20%s:\x20%s','isObject','stringify','[%s][SYSTEM]\x20no\x20command\x20executed,\x20force\x20next','shelljs','lodash','./utils','../../../../config/logger','routing'];(function(_0x3ba216,_0x2285a9){var _0x45d2e2=function(_0x49dbb1){while(--_0x49dbb1){_0x3ba216['push'](_0x3ba216['shift']());}};_0x45d2e2(++_0x2285a9);}(_0x13bb,0x19b));var _0xb13b=function(_0x77c2b3,_0x3fd965){_0x77c2b3=_0x77c2b3-0x0;var _0x3744de=_0x13bb[_0x77c2b3];return _0x3744de;};'use strict';var schema=require('validate');var sh=require(_0xb13b('0x0'));var _=require(_0xb13b('0x1'));var utils=require(_0xb13b('0x2'));var logger=require(_0xb13b('0x3'))(_0xb13b('0x4'));var system=schema({'command':{'type':_0xb13b('0x5'),'required':!![],'message':_0xb13b('0x6')}});exports['consequence']=function(_0x5bcf95,_0x4eee71){return function(_0x416886){try{var _0x4e83d8={'command':_0x4eee71[0x0]};var _0xb9881a=system[_0xb13b('0x7')](_0x4e83d8,{'typecast':!![]});if(_0xb9881a[_0xb13b('0x8')]){logger[_0xb13b('0x9')](_0xb13b('0xa'),_0x5bcf95,_[_0xb13b('0xb')](_0xb9881a,_0xb13b('0xc'))['join'](',\x20'));logger[_0xb13b('0xd')]('[%s][SYSTEM]\x20no\x20command\x20executed,\x20force\x20next',_0x5bcf95);_0x416886[_0xb13b('0xe')]();}else{var _0x47db06=this;var _0x529df7=utils[_0xb13b('0xf')](_0x4eee71[0x0],this);logger['info'](_0xb13b('0x10'),_0x5bcf95,_0x529df7);sh[_0xb13b('0x11')](_[_0xb13b('0x12')](_0x529df7),function(_0x3da1bc,_0xf2ff87){logger['info'](_0xb13b('0x13'),_0x5bcf95,_0x3da1bc);if(_0x3da1bc==0x0){var _0x4ee8e4=_0xf2ff87[_0xb13b('0x14')](/(\r\n|\n|\r)/gm,'');if(_['isNil'](_0x4eee71[0x1])||_['isEmpty'](_0x4eee71[0x1])){logger['info']('[%s][SYSTEM]\x20no\x20variable',_0x5bcf95);_0x47db06[_0xb13b('0x15')][_0x4eee71[0x1]]=_0x4ee8e4;}else{logger['info'](_0xb13b('0x16'),_0x5bcf95,_0x4eee71[0x1],_0x4ee8e4);_0x47db06[_0xb13b('0x15')][_0x4eee71[0x1]]=_0x4ee8e4;}}_0x416886[_0xb13b('0xe')]();});}}catch(_0x5d7402){logger[_0xb13b('0x9')](_0xb13b('0xa'),_0x5bcf95,_[_0xb13b('0x17')](_0x5d7402)?JSON[_0xb13b('0x18')](_0x5d7402):_0x5d7402);logger['info'](_0xb13b('0x19'),_0x5bcf95);_0x416886[_0xb13b('0xe')]();}};};
\ No newline at end of file
index 84239f6..3e07f99 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9ad8=['validate','lodash','../../rpc/chatInteraction','../../rpc/smsInteraction','../../rpc/mailInteraction','../../../../config/logger','routing','number','TagId\x20is\x20a\x20string\x20and\x20it\x20is\x20required','length','error','[%s][TAG]\x20%s','map','message','join','Interaction','addTags','interaction','then','info','[%s][TAG]\x20tag\x20\x22%s\x22\x20added\x20to\x20%s\x20interaction\x20%s','channel','catch','stringify','[%s][TAG]\x20no\x20tags\x20saved,\x20force\x20next','next','isObject'];(function(_0x52fbe4,_0x5bc703){var _0x274a30=function(_0x322313){while(--_0x322313){_0x52fbe4['push'](_0x52fbe4['shift']());}};_0x274a30(++_0x5bc703);}(_0x9ad8,0x195));var _0x89ad=function(_0x3bd497,_0x37d7a8){_0x3bd497=_0x3bd497-0x0;var _0x32f967=_0x9ad8[_0x3bd497];return _0x32f967;};'use strict';var schema=require(_0x89ad('0x0'));var _=require(_0x89ad('0x1'));var rpc={'chatInteraction':require(_0x89ad('0x2')),'openchannelInteraction':require('../../rpc/openchannelInteraction'),'smsInteraction':require(_0x89ad('0x3')),'mailInteraction':require(_0x89ad('0x4')),'faxInteraction':require('../../rpc/faxInteraction'),'whatsappInteraction':require('../../rpc/whatsappInteraction')};var logger=require(_0x89ad('0x5'))(_0x89ad('0x6'));var tag=schema({'tag':{'type':_0x89ad('0x7'),'required':!![],'message':_0x89ad('0x8')}});exports['consequence']=function(_0x1fd7a5,_0x4dfdb9,_0x331e12,_0x150a13){return function(_0x442fea){try{var _0x492d1f={'tag':_0x4dfdb9[0x0]};var _0x1968b6=tag['validate'](_0x492d1f,{'typecast':!![]});if(_0x1968b6[_0x89ad('0x9')]){logger[_0x89ad('0xa')](_0x89ad('0xb'),_0x1fd7a5,_[_0x89ad('0xc')](_0x1968b6,_0x89ad('0xd'))[_0x89ad('0xe')](',\x20'));logger['info']('[%s][TAG]\x20no\x20tags\x20saved,\x20force\x20next',_0x1fd7a5);_0x442fea['next']();}else{var _0x3e8eb7={'ids':[_0x4dfdb9[0x0]]};if(rpc[_0x150a13['channel']+'Interaction']){rpc[_0x150a13['channel']+_0x89ad('0xf')][_0x89ad('0x10')](_0x150a13[_0x89ad('0x11')]['id'],_0x3e8eb7)[_0x89ad('0x12')](function(_0x28e032){logger[_0x89ad('0x13')](_0x89ad('0x14'),_0x1fd7a5,_0x4dfdb9[0x1],_0x150a13[_0x89ad('0x15')],_0x150a13[_0x89ad('0x11')]['id']);})[_0x89ad('0x16')](function(_0x3ef524){logger[_0x89ad('0xa')](_0x89ad('0xb'),_0x1fd7a5,JSON[_0x89ad('0x17')](_0x3ef524));logger[_0x89ad('0x13')](_0x89ad('0x18'),_0x1fd7a5);})['finally'](function(){_0x442fea[_0x89ad('0x19')]();});}}}catch(_0x35130e){logger['error']('[%s][TAG]\x20%s',_0x1fd7a5,_[_0x89ad('0x1a')](_0x35130e)?JSON[_0x89ad('0x17')](_0x35130e):_0x35130e);logger[_0x89ad('0x13')]('[%s][TAG]\x20no\x20tags\x20saved,\x20force\x20next',_0x1fd7a5);_0x442fea[_0x89ad('0x19')]();}};};
\ No newline at end of file
+var _0xe0be=['routing','number','TagId\x20is\x20a\x20string\x20and\x20it\x20is\x20required','validate','length','error','[%s][TAG]\x20%s','map','join','info','next','channel','Interaction','addTags','interaction','then','[%s][TAG]\x20tag\x20\x22%s\x22\x20added\x20to\x20%s\x20interaction\x20%s','catch','stringify','[%s][TAG]\x20no\x20tags\x20saved,\x20force\x20next','finally','../../rpc/openchannelInteraction','../../rpc/smsInteraction','../../rpc/mailInteraction','../../rpc/faxInteraction','../../rpc/whatsappInteraction','../../../../config/logger'];(function(_0x5d6456,_0x58ecc7){var _0x4d66c1=function(_0x4335e3){while(--_0x4335e3){_0x5d6456['push'](_0x5d6456['shift']());}};_0x4d66c1(++_0x58ecc7);}(_0xe0be,0x13e));var _0xee0b=function(_0x1ffbab,_0x5b5fa8){_0x1ffbab=_0x1ffbab-0x0;var _0x37f89d=_0xe0be[_0x1ffbab];return _0x37f89d;};'use strict';var schema=require('validate');var _=require('lodash');var rpc={'chatInteraction':require('../../rpc/chatInteraction'),'openchannelInteraction':require(_0xee0b('0x0')),'smsInteraction':require(_0xee0b('0x1')),'mailInteraction':require(_0xee0b('0x2')),'faxInteraction':require(_0xee0b('0x3')),'whatsappInteraction':require(_0xee0b('0x4'))};var logger=require(_0xee0b('0x5'))(_0xee0b('0x6'));var tag=schema({'tag':{'type':_0xee0b('0x7'),'required':!![],'message':_0xee0b('0x8')}});exports['consequence']=function(_0x285459,_0x5506ac,_0x7791aa,_0x1661b2){return function(_0x58e5da){try{var _0x14f0c8={'tag':_0x5506ac[0x0]};var _0x3e9139=tag[_0xee0b('0x9')](_0x14f0c8,{'typecast':!![]});if(_0x3e9139[_0xee0b('0xa')]){logger[_0xee0b('0xb')](_0xee0b('0xc'),_0x285459,_[_0xee0b('0xd')](_0x3e9139,'message')[_0xee0b('0xe')](',\x20'));logger[_0xee0b('0xf')]('[%s][TAG]\x20no\x20tags\x20saved,\x20force\x20next',_0x285459);_0x58e5da[_0xee0b('0x10')]();}else{var _0x120100={'ids':[_0x5506ac[0x0]]};if(rpc[_0x1661b2[_0xee0b('0x11')]+_0xee0b('0x12')]){rpc[_0x1661b2[_0xee0b('0x11')]+_0xee0b('0x12')][_0xee0b('0x13')](_0x1661b2[_0xee0b('0x14')]['id'],_0x120100)[_0xee0b('0x15')](function(_0x274890){logger[_0xee0b('0xf')](_0xee0b('0x16'),_0x285459,_0x5506ac[0x1],_0x1661b2['channel'],_0x1661b2[_0xee0b('0x14')]['id']);})[_0xee0b('0x17')](function(_0x4525d7){logger[_0xee0b('0xb')](_0xee0b('0xc'),_0x285459,JSON[_0xee0b('0x18')](_0x4525d7));logger[_0xee0b('0xf')](_0xee0b('0x19'),_0x285459);})[_0xee0b('0x1a')](function(){_0x58e5da[_0xee0b('0x10')]();});}}}catch(_0x2a4fc0){logger['error']('[%s][TAG]\x20%s',_0x285459,_['isObject'](_0x2a4fc0)?JSON['stringify'](_0x2a4fc0):_0x2a4fc0);logger[_0xee0b('0xf')](_0xee0b('0x19'),_0x285459);_0x58e5da[_0xee0b('0x10')]();}};};
\ No newline at end of file
index 84b5800..d884ab7 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(_0x439cd7,_0x3e7581){var _0x4f6921=function(_0xdd7c7a){while(--_0xdd7c7a){_0x439cd7['push'](_0x439cd7['shift']());}};_0x4f6921(++_0x3e7581);}(_0xd8b0,0xad));var _0x0d8b=function(_0x122ef9,_0x451d2a){_0x122ef9=_0x122ef9-0x0;var _0x42fba0=_0xd8b0[_0x122ef9];return _0x42fba0;};'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 _0x9c44=['merge','body','account','list','exports','render'];(function(_0x16ad43,_0xd8147a){var _0xdc4c14=function(_0x47eb85){while(--_0x47eb85){_0x16ad43['push'](_0x16ad43['shift']());}};_0xdc4c14(++_0xd8147a);}(_0x9c44,0x178));var _0x49c4=function(_0x13b02f,_0x462a53){_0x13b02f=_0x13b02f-0x0;var _0x12e9a6=_0x9c44[_0x13b02f];return _0x12e9a6;};'use strict';var Mustache=require('mustache');var _=require('lodash');module[_0x49c4('0x0')]={'getMustacheRender':function(_0x18bf2d,_0x26844b){return Mustache[_0x49c4('0x1')](_0x18bf2d,_[_0x49c4('0x2')](_0x26844b[_0x49c4('0x3')],{'contact':_0x26844b['contact'],'message':_0x26844b['message'],'account':_0x26844b[_0x49c4('0x4')],'interaction':_0x26844b['interaction'],'list':_0x26844b[_0x49c4('0x5')]}))||'';}};
\ No newline at end of file
index 897d215..2505f35 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd72d=['listen','log','lodash','path','jayson/promise','routing','../rpc/openchannelQueueReport','../rpc/mailQueueReport','../rpc/chatQueueReport','../rpc/smsQueueReport','../lib/rule-engine','format','%s.%s.%s','isNil','IntervalId','Intervals','interval','rules','message','interaction','applications','isArray','length','existsSync','join','app','.js','toLowerCase','autoreply','appdata','channel','mail','push','slice','dialogflow','split','amazonlex','tag','TagId','%s:%s:%s','./interval','condition','intervals','./applications/','consequence','priority','info','Push\x20new\x20rule','\x20|\x20','error','Please\x20create\x20a\x20new\x20file\x20under','execute','Applications\x20executed','matchPath','emit','complete','No\x20applications\x20to\x20execute','stack','routing\x20is\x20empty','agent','agents','busy','busyQueue','end','QueueReport','update','UserId','catch','error\x20update\x20queue\x20report','message\x20is\x20empty','hasOwnProperty','capacity','CurrentCapacity','updateRealtime','agent\x20not\x20found','values','chatQueues','loggedIn','name','paused','mailQueues','available','waiting','openchannelQueues','smsQueues','faxQueues','whatsappQueues','chatQueuesWaitingInteractions','mailQueuesWaitingInteractions','openchannelQueuesWaitingInteractions','smsQueuesWaitingInteractions','whatsappQueuesWaitingInteractions','server','stringify'];(function(_0x2dfc99,_0x192634){var _0x115c07=function(_0xa8435){while(--_0xa8435){_0x2dfc99['push'](_0x2dfc99['shift']());}};_0x115c07(++_0x192634);}(_0xd72d,0xbe));var _0xdd72=function(_0x2675e5,_0x5c4f0e){_0x2675e5=_0x2675e5-0x0;var _0x5ee886=_0xd72d[_0x2675e5];return _0x5ee886;};'use strict';var _=require(_0xdd72('0x0'));var util=require('util');var path=require(_0xdd72('0x1'));var fs=require('fs');var jayson=require(_0xdd72('0x2'));var BPromise=require('bluebird');var uuid=require('uuid');var config=require('../../../config/environment');var logger=require('../../../config/logger')(_0xdd72('0x3'));var rpc={'openchannelQueueReport':require(_0xdd72('0x4')),'mailQueueReport':require(_0xdd72('0x5')),'chatQueueReport':require(_0xdd72('0x6')),'smsQueueReport':require(_0xdd72('0x7')),'faxQueueReport':require('../rpc/faxQueueReport'),'whatsappQueueReport':require('../rpc/whatsappQueueReport')};var RuleEngine=require(_0xdd72('0x8'));function getId(_0x10b9e1,_0x5898fd,_0x3749d2){return util[_0xdd72('0x9')](_0xdd72('0xa'),_0x10b9e1,_0x5898fd||0x0,_0x3749d2||0x0);}function getIntervals(_0x11445a,_0x527cee){var _0x14db14=[];if(!_[_0xdd72('0xb')](_0x527cee[_0xdd72('0xc')])&&!_[_0xdd72('0xb')](_0x11445a[_0x527cee[_0xdd72('0xc')]])&&!_[_0xdd72('0xb')](_0x11445a[_0x527cee[_0xdd72('0xc')]][_0xdd72('0xd')])){_0x14db14=_['map'](_0x11445a[_0x527cee[_0xdd72('0xc')]][_0xdd72('0xd')],_0xdd72('0xe'));}else if(!_[_0xdd72('0xb')](_0x527cee[_0xdd72('0xe')])){_0x14db14=[_0x527cee[_0xdd72('0xe')]];}return _0x14db14;}exports['listen']=function(_0x37476f){_0x37476f[_0xdd72('0xf')]={};return new BPromise(function(_0x16e49d,_0xd4d9dd){var _0x160e42={'Start':function(_0x354726){var _0x406151=this;return new Promise(function(_0x10f49a,_0x2f54c3){if(_0x354726){try{var _0x3725be=[];var _0x4494e4=getId(_0x354726['channel'],_0x354726[_0xdd72('0x10')]?_0x354726[_0xdd72('0x10')]['id']:0x0,_0x354726[_0xdd72('0x11')]?_0x354726[_0xdd72('0x11')]['id']:0x0);if(_0x354726[_0xdd72('0x12')]&&_[_0xdd72('0x13')](_0x354726[_0xdd72('0x12')])&&_0x354726[_0xdd72('0x12')][_0xdd72('0x14')]){for(var _0x27c990=0x0;_0x27c990<_0x354726['applications'][_0xdd72('0x14')];_0x27c990+=0x1){var _0x3c5fd6=_0x354726[_0xdd72('0x12')][_0x27c990];if(fs[_0xdd72('0x15')](path[_0xdd72('0x16')](__dirname,'applications',_0x3c5fd6[_0xdd72('0x17')]+_0xdd72('0x18')))){var _0x442ae4=[];switch(_0x3c5fd6[_0xdd72('0x17')][_0xdd72('0x19')]()){case _0xdd72('0x1a'):var _0x41297a=_0x3c5fd6[_0xdd72('0x1b')]['split'](',');if(_0x354726[_0xdd72('0x1c')]===_0xdd72('0x1d')){_0x442ae4[_0xdd72('0x1e')](_0x41297a[0x0]);_0x442ae4[_0xdd72('0x1e')](_0x41297a[0x1]);_0x442ae4[_0xdd72('0x1e')](_0x41297a[_0xdd72('0x1f')](0x2,_0x41297a[_0xdd72('0x14')])[_0xdd72('0x16')](','));}else{_0x442ae4[_0xdd72('0x1e')](_0x41297a[0x0]);_0x442ae4[_0xdd72('0x1e')](_0x41297a[_0xdd72('0x1f')](0x1,_0x41297a[_0xdd72('0x14')])['join'](','));}break;case _0xdd72('0x20'):var _0x2b3a43=_0x3c5fd6['appdata'][_0xdd72('0x21')](',');_0x442ae4[_0xdd72('0x1e')](_0x2b3a43[0x0]);_0x442ae4[_0xdd72('0x1e')](_0x2b3a43[0x1]);_0x442ae4[_0xdd72('0x1e')](_0x2b3a43[_0xdd72('0x1f')](0x2,_0x2b3a43['length'])[_0xdd72('0x16')](','));break;case'dialogflowv2':var _0x5e1a71=_0x3c5fd6[_0xdd72('0x1b')][_0xdd72('0x21')](',');_0x442ae4[_0xdd72('0x1e')](_0x5e1a71[0x0]);_0x442ae4[_0xdd72('0x1e')](_0x5e1a71[0x1]);_0x442ae4[_0xdd72('0x1e')](_0x5e1a71[0x2]);_0x442ae4[_0xdd72('0x1e')](_0x5e1a71[0x3]);_0x442ae4[_0xdd72('0x1e')](_0x5e1a71[_0xdd72('0x1f')](0x4,_0x5e1a71['length'])[_0xdd72('0x16')](','));break;case _0xdd72('0x22'):var _0x57b4a0=_0x3c5fd6['appdata'][_0xdd72('0x21')](',');_0x442ae4[_0xdd72('0x1e')](_0x57b4a0[0x0]);_0x442ae4[_0xdd72('0x1e')](_0x57b4a0[0x1]);_0x442ae4[_0xdd72('0x1e')](_0x57b4a0[0x2]);_0x442ae4[_0xdd72('0x1e')](_0x57b4a0[0x3]);_0x442ae4[_0xdd72('0x1e')](_0x57b4a0[_0xdd72('0x1f')](0x4,_0x57b4a0[_0xdd72('0x14')])[_0xdd72('0x16')](','));break;case _0xdd72('0x10'):_0x442ae4['push'](_0x3c5fd6['appdata']);break;case _0xdd72('0x23'):_0x442ae4[_0xdd72('0x1e')](_0x3c5fd6[_0xdd72('0x24')]);_0x442ae4[_0xdd72('0x1e')](_0x3c5fd6[_0xdd72('0x1b')]);break;default:_0x442ae4=_['isNil'](_0x3c5fd6['appdata'])?[]:_0x3c5fd6['appdata'][_0xdd72('0x21')](',');}var _0xe3c18d={'id':util['format'](_0xdd72('0x25'),_0x4494e4,_0x3c5fd6['id'],_0x3c5fd6[_0xdd72('0x17')]),'condition':require(_0xdd72('0x26'))[_0xdd72('0x27')](_0x4494e4,getIntervals(_0x37476f[_0xdd72('0x28')],_0x3c5fd6),_0x37476f),'consequence':require(_0xdd72('0x29')+_0x3c5fd6[_0xdd72('0x17')])[_0xdd72('0x2a')](_0x4494e4,_0x442ae4,_0x37476f,_0x354726),'p':_0x3c5fd6[_0xdd72('0x2b')]||0x0};logger[_0xdd72('0x2c')](_0xdd72('0x2d'),_0xe3c18d['id'],'on\x20interval',getIntervals(_0x37476f[_0xdd72('0x28')],_0x3c5fd6)[_0xdd72('0x16')](_0xdd72('0x2e')));_0x3725be[_0xdd72('0x1e')](_0xe3c18d);}else{logger[_0xdd72('0x2f')](_0xdd72('0x30'),path[_0xdd72('0x16')](__dirname,_0xdd72('0x12'),_0x3c5fd6[_0xdd72('0x17')]+_0xdd72('0x18')));}}_0x37476f['rules'][_0x4494e4]=new RuleEngine(_0x3725be);_0x37476f[_0xdd72('0xf')][_0x4494e4][_0xdd72('0x31')](_0x354726,function(_0x5cfe42){logger['info'](_0xdd72('0x32'),JSON['stringify'](_0x5cfe42[_0xdd72('0x33')]));if(_0x37476f[_0xdd72('0xf')][_0x4494e4]){_0x37476f[_0xdd72('0xf')][_0x4494e4][_0xdd72('0x34')](_0xdd72('0x35'));}});return _0x10f49a({'code':0xc8,'message':_0x354726});}else{logger[_0xdd72('0x2c')](_0xdd72('0x36'));return _0x10f49a({'code':0xc8,'message':_0x354726});}}catch(_0x45c9f2){logger['error'](_0x45c9f2[_0xdd72('0x37')]);return _0x2f54c3(_0x406151['error'](0x1f4,_0x45c9f2));}}return _0x2f54c3(_0xdd72('0x38'));});},'AcceptMessage':function(_0x61b1a5){var _0x3b9c12=this;return new Promise(function(_0x4bc7cf,_0x3672a0){if(_0x61b1a5[_0xdd72('0x39')]&&_0x61b1a5[_0xdd72('0x39')]['id']){if(_0x37476f[_0xdd72('0x3a')][_0x61b1a5[_0xdd72('0x39')]['id']]){_0x37476f[_0xdd72('0x3a')][_0x61b1a5[_0xdd72('0x39')]['id']][_0xdd72('0x3b')]=![];_0x37476f['agents'][_0x61b1a5[_0xdd72('0x39')]['id']][_0xdd72('0x3c')]=undefined;}}if(_0x61b1a5[_0xdd72('0x10')]&&_0x61b1a5['message']['id']){try{var _0xd6fe75=getId(_0x61b1a5[_0xdd72('0x1c')],_0x61b1a5[_0xdd72('0x10')]?_0x61b1a5['message']['id']:0x0,_0x61b1a5[_0xdd72('0x11')]?_0x61b1a5['interaction']['id']:0x0);if(_0x37476f['rules'][_0xd6fe75]){_0x37476f[_0xdd72('0xf')][_0xd6fe75][_0xdd72('0x34')](_0xdd72('0x3d'));if(rpc[_0x61b1a5[_0xdd72('0x1c')]+_0xdd72('0x3e')]){rpc[_0x61b1a5['channel']+'QueueReport'][_0xdd72('0x3f')](_0xd6fe75,{'UserId':_0x61b1a5['message'][_0xdd72('0x40')]})[_0xdd72('0x41')](function(_0x3c417f){logger['error'](_0xdd72('0x42'));});}}return _0x4bc7cf({'code':0xc8,'message':_0x61b1a5});}catch(_0x420ee6){logger['error'](_0x420ee6['stack']);return _0x3672a0(_0x3b9c12[_0xdd72('0x2f')](0x1f4,_0x420ee6));}}logger[_0xdd72('0x2f')](_0xdd72('0x43'));return _0x3672a0(_0x3b9c12['error'](0x1f4,_0xdd72('0x43')));});},'RejectMessage':function(_0x2684b9){var _0x17994a=this;return new Promise(function(_0x581daf,_0x3feceb){if(_0x2684b9[_0xdd72('0x39')]&&_0x2684b9[_0xdd72('0x39')]['id']){try{if(_0x37476f[_0xdd72('0x3a')][_0x2684b9[_0xdd72('0x39')]['id']]){_0x37476f[_0xdd72('0x3a')][_0x2684b9['agent']['id']][_0xdd72('0x3b')]=![];_0x37476f[_0xdd72('0x3a')][_0x2684b9[_0xdd72('0x39')]['id']][_0xdd72('0x3c')]=undefined;}return _0x581daf({'code':0xc8,'message':_0x2684b9});}catch(_0x3d7480){logger[_0xdd72('0x2f')](_0x3d7480[_0xdd72('0x37')]);return _0x3feceb(_0x17994a[_0xdd72('0x2f')](0x1f4,_0x3d7480));}}logger['error'](_0xdd72('0x43'));return _0x3feceb(_0x17994a[_0xdd72('0x2f')](0x1f4,_0xdd72('0x43')));});},'AbandonInteraction':function(_0x3def67){var _0x3020bd=this;return new Promise(function(_0x712b27,_0x472755){if(_0x3def67[_0xdd72('0x1c')]&&_0x3def67[_0xdd72('0x11')]&&_0x3def67['interaction']['id']){try{var _0x1df7bb=getId(_0x3def67['channel'],_0x3def67[_0xdd72('0x10')]?_0x3def67[_0xdd72('0x10')]['id']:0x0,_0x3def67[_0xdd72('0x11')]?_0x3def67[_0xdd72('0x11')]['id']:0x0);if(_0x37476f[_0xdd72('0xf')][_0x1df7bb]){_0x37476f[_0xdd72('0xf')][_0x1df7bb][_0xdd72('0x34')](_0xdd72('0x3d'));}return _0x712b27({'code':0xc8,'message':_0x3def67});}catch(_0x549c00){logger['error'](_0x549c00[_0xdd72('0x37')]);return _0x472755(_0x3020bd[_0xdd72('0x2f')](0x1f4,_0x549c00));}}logger['error'](_0xdd72('0x43'));return _0x472755(_0x3020bd[_0xdd72('0x2f')](0x1f4,_0xdd72('0x43')));});},'AgentCapacity':function(_0x3aa4ce){var _0x46b9c8=this;return new Promise(function(_0x26acc2,_0x56470a){if(_0x37476f[_0xdd72('0x3a')][_0xdd72('0x44')](_0x3aa4ce['id'])){for(var _0x1e9697 in _0x3aa4ce['capacity']){if(_0x3aa4ce[_0xdd72('0x45')]['hasOwnProperty'](_0x1e9697)){if(_0x37476f[_0xdd72('0x3a')][_0x3aa4ce['id']][_0xdd72('0x44')](_0x1e9697+_0xdd72('0x46'))){_0x37476f[_0xdd72('0x3a')][_0x3aa4ce['id']][_0x1e9697+_0xdd72('0x46')]=parseInt(_0x3aa4ce[_0xdd72('0x45')][_0x1e9697],0xa);}}}_0x37476f['agents'][_0x3aa4ce['id']][_0xdd72('0x47')]();return _0x26acc2({'code':0xc8,'message':_0x37476f[_0xdd72('0x3a')][_0x3aa4ce['id']]});}else{return _0x56470a(_0x46b9c8['error'](0x1f4,_0xdd72('0x48')));}});},'Agents':function(_0x30dd0d){return new Promise(function(_0x53ac9f,_0x496c1f){var _0x573d1e=_[_0xdd72('0x49')](_0x37476f[_0xdd72('0x3a')]);_0x53ac9f({'count':_0x573d1e[_0xdd72('0x14')],'rows':_0x573d1e});});},'ChatQueues':function(_0x1f0268){return new Promise(function(_0x26aeef,_0x1a1aa1){var _0x60bcde=[];for(var _0x1d703b in _0x37476f[_0xdd72('0x4a')]){if(_0x37476f[_0xdd72('0x4a')][_0xdd72('0x44')](_0x1d703b)){var _0x5822f7=_0x37476f[_0xdd72('0x4a')][_0x1d703b];var _0x5381aa={'id':_0x5822f7['id'],'available':_0x5822f7['available'],'loggedIn':_0x5822f7[_0xdd72('0x4b')],'name':_0x5822f7[_0xdd72('0x4c')],'paused':_0x5822f7[_0xdd72('0x4d')],'waiting':_0x5822f7['waiting']};_0x60bcde['push'](_0x5381aa);}}_0x26aeef({'count':_0x60bcde[_0xdd72('0x14')],'rows':_0x60bcde});});},'MailQueues':function(_0xa35590){return new Promise(function(_0x3c99db,_0xbd5b39){var _0x1fa0d7=[];for(var _0x4d97e5 in _0x37476f['mailQueues']){if(_0x37476f[_0xdd72('0x4e')][_0xdd72('0x44')](_0x4d97e5)){var _0x43f1e8=_0x37476f[_0xdd72('0x4e')][_0x4d97e5];var _0x35a705={'id':_0x43f1e8['id'],'available':_0x43f1e8[_0xdd72('0x4f')],'loggedIn':_0x43f1e8[_0xdd72('0x4b')],'name':_0x43f1e8['name'],'paused':_0x43f1e8['paused'],'waiting':_0x43f1e8[_0xdd72('0x50')]};_0x1fa0d7[_0xdd72('0x1e')](_0x35a705);}}_0x3c99db({'count':_0x1fa0d7[_0xdd72('0x14')],'rows':_0x1fa0d7});});},'OpenchannelQueues':function(_0xf72899){return new Promise(function(_0x30ea9f,_0x277a78){var _0x427290=[];for(var _0x10be50 in _0x37476f[_0xdd72('0x51')]){if(_0x37476f[_0xdd72('0x51')]['hasOwnProperty'](_0x10be50)){var _0x415c1c=_0x37476f[_0xdd72('0x51')][_0x10be50];var _0x4a7e78={'id':_0x415c1c['id'],'available':_0x415c1c[_0xdd72('0x4f')],'loggedIn':_0x415c1c[_0xdd72('0x4b')],'name':_0x415c1c[_0xdd72('0x4c')],'paused':_0x415c1c[_0xdd72('0x4d')],'waiting':_0x415c1c[_0xdd72('0x50')]};_0x427290[_0xdd72('0x1e')](_0x4a7e78);}}_0x30ea9f({'count':_0x427290[_0xdd72('0x14')],'rows':_0x427290});});},'SmsQueues':function(_0x313040){return new Promise(function(_0x44b6c8,_0x2f8279){var _0x53c816=[];for(var _0x4242f5 in _0x37476f[_0xdd72('0x52')]){if(_0x37476f['smsQueues'][_0xdd72('0x44')](_0x4242f5)){var _0x1f3933=_0x37476f[_0xdd72('0x52')][_0x4242f5];var _0x59d6c1={'id':_0x1f3933['id'],'available':_0x1f3933[_0xdd72('0x4f')],'loggedIn':_0x1f3933[_0xdd72('0x4b')],'name':_0x1f3933[_0xdd72('0x4c')],'paused':_0x1f3933[_0xdd72('0x4d')],'waiting':_0x1f3933[_0xdd72('0x50')]};_0x53c816[_0xdd72('0x1e')](_0x59d6c1);}}_0x44b6c8({'count':_0x53c816[_0xdd72('0x14')],'rows':_0x53c816});});},'FaxQueues':function(_0x5b3200){return new Promise(function(_0xddf980,_0x1143b0){var _0x34b69f=[];for(var _0xec239 in _0x37476f[_0xdd72('0x53')]){if(_0x37476f['faxQueues']['hasOwnProperty'](_0xec239)){var _0xc69a2f=_0x37476f['faxQueues'][_0xec239];var _0x4c4c15={'id':_0xc69a2f['id'],'available':_0xc69a2f[_0xdd72('0x4f')],'loggedIn':_0xc69a2f[_0xdd72('0x4b')],'name':_0xc69a2f[_0xdd72('0x4c')],'paused':_0xc69a2f[_0xdd72('0x4d')],'waiting':_0xc69a2f[_0xdd72('0x50')]};_0x34b69f[_0xdd72('0x1e')](_0x4c4c15);}}_0xddf980({'count':_0x34b69f[_0xdd72('0x14')],'rows':_0x34b69f});});},'WhatsappQueues':function(_0x4909bb){return new Promise(function(_0x4ad2cf,_0x58c8cd){var _0x3a1a16=[];for(var _0x314972 in _0x37476f[_0xdd72('0x54')]){if(_0x37476f['whatsappQueues'][_0xdd72('0x44')](_0x314972)){var _0x12dad5=_0x37476f['whatsappQueues'][_0x314972];var _0x6446f8={'id':_0x12dad5['id'],'available':_0x12dad5['available'],'loggedIn':_0x12dad5['loggedIn'],'name':_0x12dad5[_0xdd72('0x4c')],'paused':_0x12dad5['paused'],'waiting':_0x12dad5[_0xdd72('0x50')]};_0x3a1a16[_0xdd72('0x1e')](_0x6446f8);}}_0x4ad2cf({'count':_0x3a1a16[_0xdd72('0x14')],'rows':_0x3a1a16});});},'ChatQueuesWaitingInteractions':function(_0x390366){return new Promise(function(_0x52c4c6,_0x8689a7){var _0x1ec0c6=_['values'](_0x37476f[_0xdd72('0x55')]);_0x52c4c6({'count':_0x1ec0c6['length'],'rows':_0x1ec0c6});});},'MailQueuesWaitingInteractions':function(_0x3af2b2){return new Promise(function(_0x540935,_0x348ca4){var _0x1d0889=_[_0xdd72('0x49')](_0x37476f[_0xdd72('0x56')]);_0x540935({'count':_0x1d0889[_0xdd72('0x14')],'rows':_0x1d0889});});},'OpenchannelQueuesWaitingInteractions':function(_0x58508d){return new Promise(function(_0x403a10,_0x575697){var _0x407053=_[_0xdd72('0x49')](_0x37476f[_0xdd72('0x57')]);_0x403a10({'count':_0x407053[_0xdd72('0x14')],'rows':_0x407053});});},'SmsQueuesWaitingInteractions':function(_0x3aea30){return new Promise(function(_0x1de269,_0x57c587){var _0xb2ea80=_[_0xdd72('0x49')](_0x37476f[_0xdd72('0x58')]);_0x1de269({'count':_0xb2ea80[_0xdd72('0x14')],'rows':_0xb2ea80});});},'FaxQueuesWaitingInteractions':function(_0x24c565){return new Promise(function(_0x689c1c,_0x190da2){var _0x22eaa4=_[_0xdd72('0x49')](_0x37476f['faxQueuesWaitingInteractions']);_0x689c1c({'count':_0x22eaa4[_0xdd72('0x14')],'rows':_0x22eaa4});});},'WhatsappQueuesWaitingInteractions':function(_0x414989){return new Promise(function(_0x2db57f,_0xafa338){var _0x1a5b76=_['values'](_0x37476f[_0xdd72('0x59')]);_0x2db57f({'count':_0x1a5b76[_0xdd72('0x14')],'rows':_0x1a5b76});});}};var _0x5e0546=jayson[_0xdd72('0x5a')](_0x160e42)['http']();_0x5e0546['on'](_0xdd72('0x2f'),function(_0x2b6f0d){logger[_0xdd72('0x2f')](JSON[_0xdd72('0x5b')](_0x2b6f0d));return _0xd4d9dd(_0x2b6f0d);});_0x5e0546[_0xdd72('0x5c')](0x232c,'127.0.0.1',function(){console[_0xdd72('0x5d')]('Routing\x20RPC\x20server\x20listening\x20on\x20127.0.0.1:%d!',0x232c);return _0x16e49d('RPC\x20listening\x20on\x20port:'+0x232c);});});};
\ No newline at end of file
+var _0x0284=['mailQueues','openchannelQueues','loggedIn','smsQueues','faxQueues','whatsappQueues','mailQueuesWaitingInteractions','openchannelQueuesWaitingInteractions','smsQueuesWaitingInteractions','faxQueuesWaitingInteractions','whatsappQueuesWaitingInteractions','server','127.0.0.1','Routing\x20RPC\x20server\x20listening\x20on\x20127.0.0.1:%d!','RPC\x20listening\x20on\x20port:','util','path','jayson/promise','bluebird','uuid','../../../config/environment','routing','../rpc/openchannelQueueReport','../rpc/mailQueueReport','../rpc/chatQueueReport','../rpc/smsQueueReport','../rpc/faxQueueReport','../rpc/whatsappQueueReport','isNil','IntervalId','Intervals','map','interval','listen','rules','channel','message','interaction','applications','isArray','length','existsSync','join','.js','app','toLowerCase','autoreply','appdata','split','mail','push','slice','dialogflow','dialogflowv2','amazonlex','tag','TagId','format','%s:%s:%s','./interval','intervals','./applications/','consequence','priority','info','Push\x20new\x20rule','on\x20interval','\x20|\x20','error','Please\x20create\x20a\x20new\x20file\x20under','execute','Applications\x20executed','stringify','emit','complete','No\x20applications\x20to\x20execute','stack','routing\x20is\x20empty','agent','agents','busy','QueueReport','catch','error\x20update\x20queue\x20report','message\x20is\x20empty','busyQueue','end','hasOwnProperty','capacity','CurrentCapacity','agent\x20not\x20found','values','chatQueues','available','name','paused','waiting'];(function(_0x1fc1f9,_0x454fb2){var _0x4987ca=function(_0x5e90dd){while(--_0x5e90dd){_0x1fc1f9['push'](_0x1fc1f9['shift']());}};_0x4987ca(++_0x454fb2);}(_0x0284,0xd1));var _0x4028=function(_0x1fc4e2,_0x493c3b){_0x1fc4e2=_0x1fc4e2-0x0;var _0x2ba184=_0x0284[_0x1fc4e2];return _0x2ba184;};'use strict';var _=require('lodash');var util=require(_0x4028('0x0'));var path=require(_0x4028('0x1'));var fs=require('fs');var jayson=require(_0x4028('0x2'));var BPromise=require(_0x4028('0x3'));var uuid=require(_0x4028('0x4'));var config=require(_0x4028('0x5'));var logger=require('../../../config/logger')(_0x4028('0x6'));var rpc={'openchannelQueueReport':require(_0x4028('0x7')),'mailQueueReport':require(_0x4028('0x8')),'chatQueueReport':require(_0x4028('0x9')),'smsQueueReport':require(_0x4028('0xa')),'faxQueueReport':require(_0x4028('0xb')),'whatsappQueueReport':require(_0x4028('0xc'))};var RuleEngine=require('../lib/rule-engine');function getId(_0x4fa56b,_0x25f788,_0x4bf9eb){return util['format']('%s.%s.%s',_0x4fa56b,_0x25f788||0x0,_0x4bf9eb||0x0);}function getIntervals(_0x4da5c3,_0x2e05bf){var _0x29b270=[];if(!_[_0x4028('0xd')](_0x2e05bf[_0x4028('0xe')])&&!_[_0x4028('0xd')](_0x4da5c3[_0x2e05bf[_0x4028('0xe')]])&&!_[_0x4028('0xd')](_0x4da5c3[_0x2e05bf[_0x4028('0xe')]][_0x4028('0xf')])){_0x29b270=_[_0x4028('0x10')](_0x4da5c3[_0x2e05bf[_0x4028('0xe')]][_0x4028('0xf')],_0x4028('0x11'));}else if(!_[_0x4028('0xd')](_0x2e05bf[_0x4028('0x11')])){_0x29b270=[_0x2e05bf['interval']];}return _0x29b270;}exports[_0x4028('0x12')]=function(_0x6b8c){_0x6b8c[_0x4028('0x13')]={};return new BPromise(function(_0x5c7c0c,_0x6699){var _0x98f73b={'Start':function(_0x1dacde){var _0x37d2e9=this;return new Promise(function(_0x20f5f0,_0x3d559d){if(_0x1dacde){try{var _0xa67c91=[];var _0x36df52=getId(_0x1dacde[_0x4028('0x14')],_0x1dacde['message']?_0x1dacde[_0x4028('0x15')]['id']:0x0,_0x1dacde['interaction']?_0x1dacde[_0x4028('0x16')]['id']:0x0);if(_0x1dacde[_0x4028('0x17')]&&_[_0x4028('0x18')](_0x1dacde[_0x4028('0x17')])&&_0x1dacde[_0x4028('0x17')][_0x4028('0x19')]){for(var _0xb25b83=0x0;_0xb25b83<_0x1dacde[_0x4028('0x17')]['length'];_0xb25b83+=0x1){var _0x41fd71=_0x1dacde[_0x4028('0x17')][_0xb25b83];if(fs[_0x4028('0x1a')](path[_0x4028('0x1b')](__dirname,_0x4028('0x17'),_0x41fd71['app']+_0x4028('0x1c')))){var _0x115aa0=[];switch(_0x41fd71[_0x4028('0x1d')][_0x4028('0x1e')]()){case _0x4028('0x1f'):var _0x22dbd3=_0x41fd71[_0x4028('0x20')][_0x4028('0x21')](',');if(_0x1dacde[_0x4028('0x14')]===_0x4028('0x22')){_0x115aa0[_0x4028('0x23')](_0x22dbd3[0x0]);_0x115aa0[_0x4028('0x23')](_0x22dbd3[0x1]);_0x115aa0[_0x4028('0x23')](_0x22dbd3[_0x4028('0x24')](0x2,_0x22dbd3[_0x4028('0x19')])[_0x4028('0x1b')](','));}else{_0x115aa0[_0x4028('0x23')](_0x22dbd3[0x0]);_0x115aa0[_0x4028('0x23')](_0x22dbd3['slice'](0x1,_0x22dbd3[_0x4028('0x19')])['join'](','));}break;case _0x4028('0x25'):var _0x42bb51=_0x41fd71['appdata'][_0x4028('0x21')](',');_0x115aa0['push'](_0x42bb51[0x0]);_0x115aa0[_0x4028('0x23')](_0x42bb51[0x1]);_0x115aa0[_0x4028('0x23')](_0x42bb51[_0x4028('0x24')](0x2,_0x42bb51[_0x4028('0x19')])['join'](','));break;case _0x4028('0x26'):var _0x8658bb=_0x41fd71[_0x4028('0x20')][_0x4028('0x21')](',');_0x115aa0[_0x4028('0x23')](_0x8658bb[0x0]);_0x115aa0[_0x4028('0x23')](_0x8658bb[0x1]);_0x115aa0['push'](_0x8658bb[0x2]);_0x115aa0[_0x4028('0x23')](_0x8658bb[0x3]);_0x115aa0[_0x4028('0x23')](_0x8658bb[_0x4028('0x24')](0x4,_0x8658bb[_0x4028('0x19')])[_0x4028('0x1b')](','));break;case _0x4028('0x27'):var _0x517183=_0x41fd71[_0x4028('0x20')][_0x4028('0x21')](',');_0x115aa0[_0x4028('0x23')](_0x517183[0x0]);_0x115aa0[_0x4028('0x23')](_0x517183[0x1]);_0x115aa0['push'](_0x517183[0x2]);_0x115aa0['push'](_0x517183[0x3]);_0x115aa0[_0x4028('0x23')](_0x517183[_0x4028('0x24')](0x4,_0x517183[_0x4028('0x19')])[_0x4028('0x1b')](','));break;case _0x4028('0x15'):_0x115aa0[_0x4028('0x23')](_0x41fd71[_0x4028('0x20')]);break;case _0x4028('0x28'):_0x115aa0['push'](_0x41fd71[_0x4028('0x29')]);_0x115aa0[_0x4028('0x23')](_0x41fd71['appdata']);break;default:_0x115aa0=_[_0x4028('0xd')](_0x41fd71[_0x4028('0x20')])?[]:_0x41fd71[_0x4028('0x20')][_0x4028('0x21')](',');}var _0x4e6ed1={'id':util[_0x4028('0x2a')](_0x4028('0x2b'),_0x36df52,_0x41fd71['id'],_0x41fd71[_0x4028('0x1d')]),'condition':require(_0x4028('0x2c'))['condition'](_0x36df52,getIntervals(_0x6b8c[_0x4028('0x2d')],_0x41fd71),_0x6b8c),'consequence':require(_0x4028('0x2e')+_0x41fd71[_0x4028('0x1d')])[_0x4028('0x2f')](_0x36df52,_0x115aa0,_0x6b8c,_0x1dacde),'p':_0x41fd71[_0x4028('0x30')]||0x0};logger[_0x4028('0x31')](_0x4028('0x32'),_0x4e6ed1['id'],_0x4028('0x33'),getIntervals(_0x6b8c[_0x4028('0x2d')],_0x41fd71)[_0x4028('0x1b')](_0x4028('0x34')));_0xa67c91[_0x4028('0x23')](_0x4e6ed1);}else{logger[_0x4028('0x35')](_0x4028('0x36'),path[_0x4028('0x1b')](__dirname,_0x4028('0x17'),_0x41fd71[_0x4028('0x1d')]+_0x4028('0x1c')));}}_0x6b8c[_0x4028('0x13')][_0x36df52]=new RuleEngine(_0xa67c91);_0x6b8c[_0x4028('0x13')][_0x36df52][_0x4028('0x37')](_0x1dacde,function(_0x225931){logger[_0x4028('0x31')](_0x4028('0x38'),JSON[_0x4028('0x39')](_0x225931['matchPath']));if(_0x6b8c[_0x4028('0x13')][_0x36df52]){_0x6b8c['rules'][_0x36df52][_0x4028('0x3a')](_0x4028('0x3b'));}});return _0x20f5f0({'code':0xc8,'message':_0x1dacde});}else{logger[_0x4028('0x31')](_0x4028('0x3c'));return _0x20f5f0({'code':0xc8,'message':_0x1dacde});}}catch(_0x3c3410){logger[_0x4028('0x35')](_0x3c3410[_0x4028('0x3d')]);return _0x3d559d(_0x37d2e9[_0x4028('0x35')](0x1f4,_0x3c3410));}}return _0x3d559d(_0x4028('0x3e'));});},'AcceptMessage':function(_0x2a987f){var _0x5ef1bc=this;return new Promise(function(_0x4f2de4,_0xa090f8){if(_0x2a987f['agent']&&_0x2a987f[_0x4028('0x3f')]['id']){if(_0x6b8c[_0x4028('0x40')][_0x2a987f[_0x4028('0x3f')]['id']]){_0x6b8c['agents'][_0x2a987f[_0x4028('0x3f')]['id']][_0x4028('0x41')]=![];_0x6b8c[_0x4028('0x40')][_0x2a987f['agent']['id']]['busyQueue']=undefined;}}if(_0x2a987f['message']&&_0x2a987f['message']['id']){try{var _0x40deb5=getId(_0x2a987f[_0x4028('0x14')],_0x2a987f[_0x4028('0x15')]?_0x2a987f[_0x4028('0x15')]['id']:0x0,_0x2a987f[_0x4028('0x16')]?_0x2a987f[_0x4028('0x16')]['id']:0x0);if(_0x6b8c[_0x4028('0x13')][_0x40deb5]){_0x6b8c[_0x4028('0x13')][_0x40deb5]['emit']('end');if(rpc[_0x2a987f[_0x4028('0x14')]+_0x4028('0x42')]){rpc[_0x2a987f[_0x4028('0x14')]+_0x4028('0x42')]['update'](_0x40deb5,{'UserId':_0x2a987f['message']['UserId']})[_0x4028('0x43')](function(_0x3b6b98){logger[_0x4028('0x35')](_0x4028('0x44'));});}}return _0x4f2de4({'code':0xc8,'message':_0x2a987f});}catch(_0x53c6c5){logger[_0x4028('0x35')](_0x53c6c5[_0x4028('0x3d')]);return _0xa090f8(_0x5ef1bc[_0x4028('0x35')](0x1f4,_0x53c6c5));}}logger[_0x4028('0x35')](_0x4028('0x45'));return _0xa090f8(_0x5ef1bc[_0x4028('0x35')](0x1f4,_0x4028('0x45')));});},'RejectMessage':function(_0x1bdf98){var _0x3020c4=this;return new Promise(function(_0x4a44f1,_0x210806){if(_0x1bdf98[_0x4028('0x3f')]&&_0x1bdf98[_0x4028('0x3f')]['id']){try{if(_0x6b8c['agents'][_0x1bdf98[_0x4028('0x3f')]['id']]){_0x6b8c['agents'][_0x1bdf98[_0x4028('0x3f')]['id']][_0x4028('0x41')]=![];_0x6b8c['agents'][_0x1bdf98[_0x4028('0x3f')]['id']][_0x4028('0x46')]=undefined;}return _0x4a44f1({'code':0xc8,'message':_0x1bdf98});}catch(_0x403aee){logger['error'](_0x403aee[_0x4028('0x3d')]);return _0x210806(_0x3020c4[_0x4028('0x35')](0x1f4,_0x403aee));}}logger[_0x4028('0x35')]('message\x20is\x20empty');return _0x210806(_0x3020c4[_0x4028('0x35')](0x1f4,_0x4028('0x45')));});},'AbandonInteraction':function(_0xbb25d5){var _0x513cbb=this;return new Promise(function(_0x52e674,_0x2db095){if(_0xbb25d5[_0x4028('0x14')]&&_0xbb25d5[_0x4028('0x16')]&&_0xbb25d5[_0x4028('0x16')]['id']){try{var _0x2cdcc7=getId(_0xbb25d5[_0x4028('0x14')],_0xbb25d5[_0x4028('0x15')]?_0xbb25d5[_0x4028('0x15')]['id']:0x0,_0xbb25d5[_0x4028('0x16')]?_0xbb25d5[_0x4028('0x16')]['id']:0x0);if(_0x6b8c[_0x4028('0x13')][_0x2cdcc7]){_0x6b8c[_0x4028('0x13')][_0x2cdcc7][_0x4028('0x3a')](_0x4028('0x47'));}return _0x52e674({'code':0xc8,'message':_0xbb25d5});}catch(_0x3b078f){logger[_0x4028('0x35')](_0x3b078f[_0x4028('0x3d')]);return _0x2db095(_0x513cbb['error'](0x1f4,_0x3b078f));}}logger[_0x4028('0x35')](_0x4028('0x45'));return _0x2db095(_0x513cbb[_0x4028('0x35')](0x1f4,_0x4028('0x45')));});},'AgentCapacity':function(_0x54c499){var _0xb07762=this;return new Promise(function(_0x16bab1,_0x4561cb){if(_0x6b8c[_0x4028('0x40')][_0x4028('0x48')](_0x54c499['id'])){for(var _0x1f7321 in _0x54c499[_0x4028('0x49')]){if(_0x54c499['capacity'][_0x4028('0x48')](_0x1f7321)){if(_0x6b8c['agents'][_0x54c499['id']]['hasOwnProperty'](_0x1f7321+_0x4028('0x4a'))){_0x6b8c[_0x4028('0x40')][_0x54c499['id']][_0x1f7321+_0x4028('0x4a')]=parseInt(_0x54c499[_0x4028('0x49')][_0x1f7321],0xa);}}}_0x6b8c['agents'][_0x54c499['id']]['updateRealtime']();return _0x16bab1({'code':0xc8,'message':_0x6b8c['agents'][_0x54c499['id']]});}else{return _0x4561cb(_0xb07762[_0x4028('0x35')](0x1f4,_0x4028('0x4b')));}});},'Agents':function(_0x4278bc){return new Promise(function(_0x509b34,_0xbb9de5){var _0x8aed14=_[_0x4028('0x4c')](_0x6b8c[_0x4028('0x40')]);_0x509b34({'count':_0x8aed14[_0x4028('0x19')],'rows':_0x8aed14});});},'ChatQueues':function(_0x3f269b){return new Promise(function(_0x2e4e8e,_0xf576bd){var _0x590ea5=[];for(var _0x10083b in _0x6b8c[_0x4028('0x4d')]){if(_0x6b8c[_0x4028('0x4d')][_0x4028('0x48')](_0x10083b)){var _0x3662b4=_0x6b8c[_0x4028('0x4d')][_0x10083b];var _0x57d108={'id':_0x3662b4['id'],'available':_0x3662b4[_0x4028('0x4e')],'loggedIn':_0x3662b4['loggedIn'],'name':_0x3662b4[_0x4028('0x4f')],'paused':_0x3662b4[_0x4028('0x50')],'waiting':_0x3662b4[_0x4028('0x51')]};_0x590ea5['push'](_0x57d108);}}_0x2e4e8e({'count':_0x590ea5[_0x4028('0x19')],'rows':_0x590ea5});});},'MailQueues':function(_0x27a482){return new Promise(function(_0x5ea0d7,_0x5ee8bb){var _0x247a0f=[];for(var _0x3a3d23 in _0x6b8c[_0x4028('0x52')]){if(_0x6b8c['mailQueues'][_0x4028('0x48')](_0x3a3d23)){var _0x39c195=_0x6b8c[_0x4028('0x52')][_0x3a3d23];var _0x2ab095={'id':_0x39c195['id'],'available':_0x39c195[_0x4028('0x4e')],'loggedIn':_0x39c195['loggedIn'],'name':_0x39c195['name'],'paused':_0x39c195['paused'],'waiting':_0x39c195[_0x4028('0x51')]};_0x247a0f[_0x4028('0x23')](_0x2ab095);}}_0x5ea0d7({'count':_0x247a0f[_0x4028('0x19')],'rows':_0x247a0f});});},'OpenchannelQueues':function(_0x3fcb3f){return new Promise(function(_0x515e2c,_0x432e45){var _0x450ed8=[];for(var _0x3c6409 in _0x6b8c[_0x4028('0x53')]){if(_0x6b8c['openchannelQueues'][_0x4028('0x48')](_0x3c6409)){var _0x213ca9=_0x6b8c[_0x4028('0x53')][_0x3c6409];var _0x5eb0f9={'id':_0x213ca9['id'],'available':_0x213ca9[_0x4028('0x4e')],'loggedIn':_0x213ca9[_0x4028('0x54')],'name':_0x213ca9[_0x4028('0x4f')],'paused':_0x213ca9[_0x4028('0x50')],'waiting':_0x213ca9['waiting']};_0x450ed8['push'](_0x5eb0f9);}}_0x515e2c({'count':_0x450ed8[_0x4028('0x19')],'rows':_0x450ed8});});},'SmsQueues':function(_0x5a8f63){return new Promise(function(_0x504096,_0x2319d6){var _0x7f84cb=[];for(var _0x4d4547 in _0x6b8c[_0x4028('0x55')]){if(_0x6b8c[_0x4028('0x55')][_0x4028('0x48')](_0x4d4547)){var _0x190991=_0x6b8c[_0x4028('0x55')][_0x4d4547];var _0x14f836={'id':_0x190991['id'],'available':_0x190991[_0x4028('0x4e')],'loggedIn':_0x190991[_0x4028('0x54')],'name':_0x190991[_0x4028('0x4f')],'paused':_0x190991[_0x4028('0x50')],'waiting':_0x190991[_0x4028('0x51')]};_0x7f84cb['push'](_0x14f836);}}_0x504096({'count':_0x7f84cb[_0x4028('0x19')],'rows':_0x7f84cb});});},'FaxQueues':function(_0x85a5b2){return new Promise(function(_0x4bb1c4,_0x2885a2){var _0x153c67=[];for(var _0x541f34 in _0x6b8c['faxQueues']){if(_0x6b8c[_0x4028('0x56')]['hasOwnProperty'](_0x541f34)){var _0xdc3f9a=_0x6b8c[_0x4028('0x56')][_0x541f34];var _0x57b962={'id':_0xdc3f9a['id'],'available':_0xdc3f9a[_0x4028('0x4e')],'loggedIn':_0xdc3f9a['loggedIn'],'name':_0xdc3f9a['name'],'paused':_0xdc3f9a[_0x4028('0x50')],'waiting':_0xdc3f9a[_0x4028('0x51')]};_0x153c67['push'](_0x57b962);}}_0x4bb1c4({'count':_0x153c67[_0x4028('0x19')],'rows':_0x153c67});});},'WhatsappQueues':function(_0xef7618){return new Promise(function(_0x14f84b,_0x2d4ada){var _0x3b820f=[];for(var _0x3c5fc6 in _0x6b8c[_0x4028('0x57')]){if(_0x6b8c[_0x4028('0x57')][_0x4028('0x48')](_0x3c5fc6)){var _0x21795a=_0x6b8c[_0x4028('0x57')][_0x3c5fc6];var _0x436a02={'id':_0x21795a['id'],'available':_0x21795a[_0x4028('0x4e')],'loggedIn':_0x21795a[_0x4028('0x54')],'name':_0x21795a[_0x4028('0x4f')],'paused':_0x21795a[_0x4028('0x50')],'waiting':_0x21795a[_0x4028('0x51')]};_0x3b820f['push'](_0x436a02);}}_0x14f84b({'count':_0x3b820f[_0x4028('0x19')],'rows':_0x3b820f});});},'ChatQueuesWaitingInteractions':function(_0x2727d1){return new Promise(function(_0x5e2cbb,_0x1510db){var _0x110487=_[_0x4028('0x4c')](_0x6b8c['chatQueuesWaitingInteractions']);_0x5e2cbb({'count':_0x110487[_0x4028('0x19')],'rows':_0x110487});});},'MailQueuesWaitingInteractions':function(_0x157310){return new Promise(function(_0x360516,_0x3eb739){var _0x11a1d5=_['values'](_0x6b8c[_0x4028('0x58')]);_0x360516({'count':_0x11a1d5['length'],'rows':_0x11a1d5});});},'OpenchannelQueuesWaitingInteractions':function(_0x4cfebd){return new Promise(function(_0x4c37ce,_0x115885){var _0xc21aa6=_[_0x4028('0x4c')](_0x6b8c[_0x4028('0x59')]);_0x4c37ce({'count':_0xc21aa6[_0x4028('0x19')],'rows':_0xc21aa6});});},'SmsQueuesWaitingInteractions':function(_0x10d033){return new Promise(function(_0x4bb562,_0xc9abde){var _0x2feb4a=_[_0x4028('0x4c')](_0x6b8c[_0x4028('0x5a')]);_0x4bb562({'count':_0x2feb4a[_0x4028('0x19')],'rows':_0x2feb4a});});},'FaxQueuesWaitingInteractions':function(_0x2b159){return new Promise(function(_0x19866a,_0x361ff1){var _0x525006=_['values'](_0x6b8c[_0x4028('0x5b')]);_0x19866a({'count':_0x525006[_0x4028('0x19')],'rows':_0x525006});});},'WhatsappQueuesWaitingInteractions':function(_0x5e4a8a){return new Promise(function(_0x1be863,_0xfb789e){var _0x58c6b7=_[_0x4028('0x4c')](_0x6b8c[_0x4028('0x5c')]);_0x1be863({'count':_0x58c6b7[_0x4028('0x19')],'rows':_0x58c6b7});});}};var _0x22d235=jayson[_0x4028('0x5d')](_0x98f73b)['http']();_0x22d235['on'](_0x4028('0x35'),function(_0x48b558){logger[_0x4028('0x35')](JSON[_0x4028('0x39')](_0x48b558));return _0x6699(_0x48b558);});_0x22d235[_0x4028('0x12')](0x232c,_0x4028('0x5e'),function(){console['log'](_0x4028('0x5f'),0x232c);return _0x5c7c0c(_0x4028('0x60')+0x232c);});});};
\ No newline at end of file
index 474118f..1dd4243 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x466e=['stack','util','jayson/promise','lodash','../../../config/logger','routing','client','then','message','result','catch','rules','info','[%s][INTERVAL]\x20ROUTING\x20STOPPED','stop','length','push','Command','format','iftime\x20%s','indexOf','error','[%s][INTERVAL]\x20%s','some','[%s][INTERVAL]\x20%s\x20%s','\x20|\x20','when','log'];(function(_0x5f5106,_0x3948a8){var _0x224deb=function(_0x3e2449){while(--_0x3e2449){_0x5f5106['push'](_0x5f5106['shift']());}};_0x224deb(++_0x3948a8);}(_0x466e,0xe1));var _0xe466=function(_0x4ae0f6,_0x3badcd){_0x4ae0f6=_0x4ae0f6-0x0;var _0x600b83=_0x466e[_0x4ae0f6];return _0x600b83;};'use strict';var util=require(_0xe466('0x0'));var BPromise=require('bluebird');var jayson=require(_0xe466('0x1'));var _=require(_0xe466('0x2'));var logger=require(_0xe466('0x3'))(_0xe466('0x4'));var client=jayson[_0xe466('0x5')]['http']({'port':0x232a});function request(_0x2ed8f8,_0x40a4d3){return new BPromise(function(_0xa72a00,_0x269b97){return client['request'](_0x2ed8f8,_0x40a4d3)[_0xe466('0x6')](function(_0x4328ad){if(_0x4328ad['error']){return _0x269b97(_0x4328ad['error'][_0xe466('0x7')]);}else{return _0xa72a00(_0x4328ad[_0xe466('0x8')]);}})[_0xe466('0x9')](function(_0x2b7707){return _0x269b97(_0x2b7707);});});}exports['condition']=function(_0x37d996,_0x11db78,_0x3cc9da){return function(_0x380e13){if(_0x3cc9da[_0xe466('0xa')]&&!_0x3cc9da['rules'][_0x37d996]){logger[_0xe466('0xb')](_0xe466('0xc'),_0x37d996);return _0x380e13[_0xe466('0xd')]();}var _0x298933=[];for(var _0x9476b9=0x0;_0x9476b9<_0x11db78[_0xe466('0xe')];_0x9476b9+=0x1){_0x298933[_0xe466('0xf')](request(_0xe466('0x10'),{'command':util[_0xe466('0x11')](_0xe466('0x12'),_0x11db78[_0x9476b9])})[_0xe466('0x6')](function(_0x1b252f){return _0x1b252f&&_0x1b252f[_0xe466('0x7')]&&_0x1b252f['message'][_0xe466('0x13')]('true')>=0x0?!![]:![];})[_0xe466('0x9')](function(_0x225d06){logger[_0xe466('0x14')](_0xe466('0x15'),_0x37d996,_0x11db78[_0x9476b9]);}));}BPromise['all'](_0x298933)['then'](function(_0x5d039c){var _0x5cf95d=_[_0xe466('0x16')](_0x5d039c);logger[_0xe466('0xb')](_0xe466('0x17'),_0x37d996,_0x11db78['join'](_0xe466('0x18')),_0x5cf95d);_0x380e13[_0xe466('0x19')](_0x5cf95d);})[_0xe466('0x9')](function(_0x1bef10){console[_0xe466('0x1a')](_0x1bef10);logger[_0xe466('0x14')](_0xe466('0x17'),_0x37d996,_0x11db78['join'](_0xe466('0x18')),_0x1bef10[_0xe466('0x1b')]);_0x380e13[_0xe466('0xd')]();});};};
\ No newline at end of file
+var _0x6bb9=['[%s][INTERVAL]\x20ROUTING\x20STOPPED','stop','length','Command','format','iftime\x20%s','indexOf','true','[%s][INTERVAL]\x20%s','all','some','join','\x20|\x20','when','log','[%s][INTERVAL]\x20%s\x20%s','stack','util','bluebird','lodash','routing','http','request','then','error','message','result','catch','condition','rules','info'];(function(_0x2e4809,_0x365e2a){var _0x4e9161=function(_0x19d951){while(--_0x19d951){_0x2e4809['push'](_0x2e4809['shift']());}};_0x4e9161(++_0x365e2a);}(_0x6bb9,0x6e));var _0x96bb=function(_0x1709cc,_0x3a0ed9){_0x1709cc=_0x1709cc-0x0;var _0x42a064=_0x6bb9[_0x1709cc];return _0x42a064;};'use strict';var util=require(_0x96bb('0x0'));var BPromise=require(_0x96bb('0x1'));var jayson=require('jayson/promise');var _=require(_0x96bb('0x2'));var logger=require('../../../config/logger')(_0x96bb('0x3'));var client=jayson['client'][_0x96bb('0x4')]({'port':0x232a});function request(_0x1ef6e6,_0x3ebe38){return new BPromise(function(_0x3391c3,_0x213af7){return client[_0x96bb('0x5')](_0x1ef6e6,_0x3ebe38)[_0x96bb('0x6')](function(_0x4bd8d3){if(_0x4bd8d3[_0x96bb('0x7')]){return _0x213af7(_0x4bd8d3[_0x96bb('0x7')][_0x96bb('0x8')]);}else{return _0x3391c3(_0x4bd8d3[_0x96bb('0x9')]);}})[_0x96bb('0xa')](function(_0x2d1587){return _0x213af7(_0x2d1587);});});}exports[_0x96bb('0xb')]=function(_0x53386d,_0x3ba613,_0x2a24e4){return function(_0x26ac0c){if(_0x2a24e4[_0x96bb('0xc')]&&!_0x2a24e4[_0x96bb('0xc')][_0x53386d]){logger[_0x96bb('0xd')](_0x96bb('0xe'),_0x53386d);return _0x26ac0c[_0x96bb('0xf')]();}var _0x445216=[];for(var _0x5070ec=0x0;_0x5070ec<_0x3ba613[_0x96bb('0x10')];_0x5070ec+=0x1){_0x445216['push'](request(_0x96bb('0x11'),{'command':util[_0x96bb('0x12')](_0x96bb('0x13'),_0x3ba613[_0x5070ec])})[_0x96bb('0x6')](function(_0x55971){return _0x55971&&_0x55971[_0x96bb('0x8')]&&_0x55971[_0x96bb('0x8')][_0x96bb('0x14')](_0x96bb('0x15'))>=0x0?!![]:![];})[_0x96bb('0xa')](function(_0x1478f8){logger[_0x96bb('0x7')](_0x96bb('0x16'),_0x53386d,_0x3ba613[_0x5070ec]);}));}BPromise[_0x96bb('0x17')](_0x445216)[_0x96bb('0x6')](function(_0x58f84e){var _0xa9cf28=_[_0x96bb('0x18')](_0x58f84e);logger[_0x96bb('0xd')]('[%s][INTERVAL]\x20%s\x20%s',_0x53386d,_0x3ba613[_0x96bb('0x19')](_0x96bb('0x1a')),_0xa9cf28);_0x26ac0c[_0x96bb('0x1b')](_0xa9cf28);})['catch'](function(_0x466c48){console[_0x96bb('0x1c')](_0x466c48);logger[_0x96bb('0x7')](_0x96bb('0x1d'),_0x53386d,_0x3ba613['join'](_0x96bb('0x1a')),_0x466c48[_0x96bb('0x1e')]);_0x26ac0c[_0x96bb('0xf')]();});};};
\ No newline at end of file
index 8d0bb2b..116c488 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x80ed=['secondtransfererlinkedid','secondtransfererexten','transfertargetuniqueid','clone','calleridname','hangup','[%s][agents][hangup]','timeout','cause','rejected','indexOf','splice','[%s][agents][hangup]\x20agent:%s\x20reason:%s\x20lastevent:%s','agent','lodash','./utils','format','[%s][agents][writeDB]\x20channel:%s\x20queue:%s\x20agent:%s\x20interface:%s\x20calleridnum:%s\x20connectedlinenum:%s\x20lastevent:%s','uniqueid','channel','membername','interface','calleridnum','lastevent','queue','getVoiceQueueByName','then','type','agentacw','agentcomplete','acwtime','acwTimeout','request','CreateVoiceAgentReport','destuniqueid','[%s][agents][agentcalled]','agentcalledAt','called','connectedlinenum','connectedlinename','info','[%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','now','reason','holdtime','ringtime','talktime','push','queuecallerabandon','forIn','includes','debug','[%s][agents][queuecallerabandon]\x20agent:%s\x20destuniqueid:%s\x20lastevent:abandoned','abandoned','[%s][agents][queuecallerabandon]','agentconnect','[%s][agents][agentconnect]','[%s][agents][agentconnect]\x20agent:%s\x20destuniqueid:%s\x20lastevent:connect','agentconnectAt','answered_elsewhere','answeredelsewheredestinationuniqueid','answeredelsewheremembername','[%s][agents][agentcomplete]\x20agent:%s\x20destuniqueid:%s\x20lastevent:complete','agentcompleteAt','diffTime','complete','[%s][agents][agentcomplete]','transfereruniqueid','[%s][agents][blindtransfer]','[%s][agents][blindtransfer]\x20agent:%s\x20transferuniqueid:%s','transfer','transfertype','blind','transferexten','extension','transferuniqueid','attendedtransfer','[%s][agents][attendedtransfer]','origtransfereruniqueid','secondtransfereruniqueid','[%s][agents][attendedtransfer]\x20agent:%s','origtransfererexten','transfereeuniqueid','agententerreason'];(function(_0x2a6ab8,_0x5eb621){var _0x5752ab=function(_0x49766d){while(--_0x49766d){_0x2a6ab8['push'](_0x2a6ab8['shift']());}};_0x5752ab(++_0x5eb621);}(_0x80ed,0x11c));var _0xd80e=function(_0xf0160e,_0x16b581){_0xf0160e=_0xf0160e-0x0;var _0x5bd369=_0x80ed[_0xf0160e];return _0x5bd369;};'use strict';var _=require(_0xd80e('0x0'));var util=require('util');var utils=require(_0xd80e('0x1'));var agents={};var transfers={};var unanswered=[];function writeDB(_0x182da3,_0x4329e5){utils['info'](util[_0xd80e('0x2')](_0xd80e('0x3'),_0x182da3[_0xd80e('0x4')],_0x182da3[_0xd80e('0x5')],_0x182da3['queue'],_0x182da3[_0xd80e('0x6')],_0x182da3[_0xd80e('0x7')],_0x182da3[_0xd80e('0x8')],_0x182da3['connectedlinenum'],_0x182da3[_0xd80e('0x9')]));if(_0x182da3[_0xd80e('0xa')]){utils[_0xd80e('0xb')](_0x182da3[_0xd80e('0xa')])[_0xd80e('0xc')](function(_0x298c29){if(_0x298c29){_0x182da3[_0xd80e('0xd')]=_0x298c29[_0xd80e('0xd')];_0x182da3[_0xd80e('0xe')]=_0x182da3[_0xd80e('0xf')]?_0x298c29['acw']:![];_0x182da3[_0xd80e('0x10')]=_0x182da3[_0xd80e('0xe')]?_0x298c29[_0xd80e('0x11')]:0x0;}utils[_0xd80e('0x12')](_0xd80e('0x13'),_0x182da3);});}else{utils[_0xd80e('0x12')](_0xd80e('0x13'),_0x182da3);}if(_0x4329e5){delete transfers[_0x182da3[_0xd80e('0x4')]];}else{delete agents[_0x182da3[_0xd80e('0x14')]];}}exports['agentcalled']=function(_0x5691a1){try{utils['debug'](util['format'](_0xd80e('0x15'),_0x5691a1[_0xd80e('0x4')]),_0x5691a1);agents[_0x5691a1[_0xd80e('0x14')]]=_0x5691a1;agents[_0x5691a1[_0xd80e('0x14')]][_0xd80e('0x16')]=utils['now']();agents[_0x5691a1[_0xd80e('0x14')]][_0xd80e('0x9')]=_0xd80e('0x17');agents[_0x5691a1[_0xd80e('0x14')]][_0xd80e('0x18')]=null;agents[_0x5691a1[_0xd80e('0x14')]][_0xd80e('0x19')]=null;utils[_0xd80e('0x1a')](util['format'](_0xd80e('0x1b'),_0x5691a1[_0xd80e('0x4')],agents[_0x5691a1[_0xd80e('0x14')]][_0xd80e('0x6')],_0x5691a1['destuniqueid']));}catch(_0x39397a){utils[_0xd80e('0x1c')](util[_0xd80e('0x2')]('[%s][agents][agentcalled]',_0x5691a1[_0xd80e('0x4')]),_0x39397a);}};exports[_0xd80e('0x1d')]=function(_0x2765ea){try{if(!_[_0xd80e('0x1e')](agents[_0x2765ea[_0xd80e('0x14')]])){utils['debug'](util['format'](_0xd80e('0x1f'),_0x2765ea[_0xd80e('0x4')]),_0x2765ea);utils[_0xd80e('0x1a')](util[_0xd80e('0x2')](_0xd80e('0x20'),_0x2765ea[_0xd80e('0x4')],agents[_0x2765ea[_0xd80e('0x14')]]['membername'],_0x2765ea[_0xd80e('0x14')]));agents[_0x2765ea[_0xd80e('0x14')]][_0xd80e('0x1d')]=!![];agents[_0x2765ea['destuniqueid']][_0xd80e('0x21')]=utils[_0xd80e('0x22')]();agents[_0x2765ea[_0xd80e('0x14')]]['lastevent']='timeout';agents[_0x2765ea['destuniqueid']][_0xd80e('0x23')]='timeout';agents[_0x2765ea[_0xd80e('0x14')]][_0xd80e('0x24')]=_0x2765ea['ringtime']?parseInt(_0x2765ea[_0xd80e('0x25')])/0x3e8:0x0;agents[_0x2765ea[_0xd80e('0x14')]][_0xd80e('0x26')]=0x0;unanswered[_0xd80e('0x27')](_0x2765ea['destuniqueid']);}}catch(_0x15f317){utils[_0xd80e('0x1c')](util[_0xd80e('0x2')](_0xd80e('0x1f'),_0x2765ea[_0xd80e('0x4')]),_0x15f317);}};exports[_0xd80e('0x28')]=function(_0x289685){try{_[_0xd80e('0x29')](agents,function(_0x5522dd,_0x54504e){if(_0x5522dd[_0xd80e('0x4')]==_0x289685[_0xd80e('0x4')]&&!_[_0xd80e('0x2a')](unanswered,_0x5522dd[_0xd80e('0x14')])){utils[_0xd80e('0x2b')](util[_0xd80e('0x2')]('[%s][agents][queuecallerabandon]',_0x289685['uniqueid']),_0x289685);utils[_0xd80e('0x1a')](util[_0xd80e('0x2')](_0xd80e('0x2c'),_0x289685[_0xd80e('0x4')],_0x5522dd[_0xd80e('0x6')],_0x5522dd[_0xd80e('0x14')]));_0x5522dd[_0xd80e('0x1d')]=!![];_0x5522dd[_0xd80e('0x21')]=utils['now']();_0x5522dd['lastevent']=_0xd80e('0x2d');_0x5522dd[_0xd80e('0x23')]=_0xd80e('0x2d');_0x5522dd[_0xd80e('0x24')]=_0x289685[_0xd80e('0x24')];_0x5522dd[_0xd80e('0x26')]=0x0;writeDB(_0x5522dd);}});}catch(_0x17b8c7){utils[_0xd80e('0x1c')](util[_0xd80e('0x2')](_0xd80e('0x2e'),_0x289685['uniqueid']),_0x17b8c7);}};exports[_0xd80e('0x2f')]=function(_0x490432){try{if(agents[_0x490432[_0xd80e('0x14')]]){utils[_0xd80e('0x2b')](util[_0xd80e('0x2')](_0xd80e('0x30'),_0x490432['uniqueid']),_0x490432);utils[_0xd80e('0x1a')](util['format'](_0xd80e('0x31'),_0x490432['uniqueid'],agents[_0x490432[_0xd80e('0x14')]][_0xd80e('0x6')],_0x490432['destuniqueid']));agents[_0x490432[_0xd80e('0x14')]][_0xd80e('0x32')]=utils[_0xd80e('0x22')]();agents[_0x490432['destuniqueid']][_0xd80e('0x18')]=_0x490432[_0xd80e('0x18')];agents[_0x490432[_0xd80e('0x14')]][_0xd80e('0x19')]=_0x490432[_0xd80e('0x19')];agents[_0x490432[_0xd80e('0x14')]][_0xd80e('0x24')]=_0x490432[_0xd80e('0x25')];agents[_0x490432[_0xd80e('0x14')]]['lastevent']='connect';_['forIn'](agents,function(_0x161455,_0x3ff4b4){if(_0x161455['destuniqueid']!=_0x490432[_0xd80e('0x14')]&&_0x161455['uniqueid']==_0x490432[_0xd80e('0x4')]){_0x161455['talktime']=0x0;_0x161455[_0xd80e('0x24')]=_0x490432[_0xd80e('0x25')];_0x161455['agentringnoanswer']=!![];_0x161455['agentringnoanswerAt']=utils[_0xd80e('0x22')]();_0x161455[_0xd80e('0x9')]=_0xd80e('0x33');_0x161455[_0xd80e('0x23')]=_0xd80e('0x33');_0x161455[_0xd80e('0x34')]=_0x490432[_0xd80e('0x14')];_0x161455[_0xd80e('0x35')]=_0x490432[_0xd80e('0x6')];writeDB(_0x161455);}});}}catch(_0x2da5f5){utils[_0xd80e('0x1c')](util[_0xd80e('0x2')](_0xd80e('0x30'),_0x490432[_0xd80e('0x4')]),_0x2da5f5);}};exports[_0xd80e('0xf')]=function(_0x7f80a){try{if(!_['isNil'](agents[_0x7f80a['destuniqueid']])){utils['debug'](util[_0xd80e('0x2')]('[%s][agents][agentcomplete]',_0x7f80a[_0xd80e('0x4')]),_0x7f80a);utils[_0xd80e('0x1a')](util[_0xd80e('0x2')](_0xd80e('0x36'),_0x7f80a[_0xd80e('0x4')],agents[_0x7f80a[_0xd80e('0x14')]]['membername'],_0x7f80a['destuniqueid']));agents[_0x7f80a['destuniqueid']][_0xd80e('0xf')]=!![];agents[_0x7f80a['destuniqueid']][_0xd80e('0x37')]=utils[_0xd80e('0x22')]();agents[_0x7f80a[_0xd80e('0x14')]][_0xd80e('0x26')]=utils[_0xd80e('0x38')](agents[_0x7f80a['destuniqueid']][_0xd80e('0x37')],agents[_0x7f80a[_0xd80e('0x14')]][_0xd80e('0x32')]);agents[_0x7f80a['destuniqueid']][_0xd80e('0x23')]=_0x7f80a[_0xd80e('0x23')];agents[_0x7f80a[_0xd80e('0x14')]]['lastevent']=_0xd80e('0x39');writeDB(agents[_0x7f80a[_0xd80e('0x14')]]);}}catch(_0xf0d5aa){utils[_0xd80e('0x1c')](util[_0xd80e('0x2')](_0xd80e('0x3a'),_0x7f80a['uniqueid']),_0xf0d5aa);}};exports['blindtransfer']=function(_0x275985){try{if(!_[_0xd80e('0x1e')](agents[_0x275985[_0xd80e('0x3b')]])){utils['debug'](util['format'](_0xd80e('0x3c'),_0x275985[_0xd80e('0x4')]),_0x275985);utils[_0xd80e('0x1a')](util[_0xd80e('0x2')](_0xd80e('0x3d'),_0x275985['uniqueid'],agents[_0x275985[_0xd80e('0x3b')]]['membername'],agents[_0x275985[_0xd80e('0x3b')]][_0xd80e('0x4')]));agents[_0x275985['transfereruniqueid']][_0xd80e('0x3e')]=!![];agents[_0x275985[_0xd80e('0x3b')]][_0xd80e('0x3f')]=_0xd80e('0x40');agents[_0x275985[_0xd80e('0x3b')]][_0xd80e('0x41')]=_0x275985[_0xd80e('0x42')];agents[_0x275985['transfereruniqueid']][_0xd80e('0x43')]=agents[_0x275985[_0xd80e('0x3b')]][_0xd80e('0x4')];}}catch(_0x4a66ca){utils['error'](util[_0xd80e('0x2')](_0xd80e('0x3c'),_0x275985[_0xd80e('0x4')]),_0x4a66ca);}};exports[_0xd80e('0x44')]=function(_0x2f66eb){try{utils[_0xd80e('0x2b')](util[_0xd80e('0x2')](_0xd80e('0x45'),_0x2f66eb['origtransfereruniqueid']),_0x2f66eb);if(_0x2f66eb[_0xd80e('0x46')]==_0x2f66eb['origtransfererlinkedid']){if(!_[_0xd80e('0x1e')](agents[_0x2f66eb[_0xd80e('0x47')]])){utils[_0xd80e('0x1a')](util[_0xd80e('0x2')](_0xd80e('0x48'),_0x2f66eb[_0xd80e('0x46')],agents[_0x2f66eb['secondtransfereruniqueid']][_0xd80e('0x6')]));agents[_0x2f66eb['secondtransfereruniqueid']][_0xd80e('0x3e')]=!![];agents[_0x2f66eb[_0xd80e('0x47')]]['transfertype']='ATTENDED';agents[_0x2f66eb[_0xd80e('0x47')]][_0xd80e('0x41')]=_0x2f66eb[_0xd80e('0x49')];agents[_0x2f66eb['secondtransfereruniqueid']]['transferuniqueid']=_0x2f66eb[_0xd80e('0x46')];}if(_0x2f66eb[_0xd80e('0x4a')]&&agents[_0x2f66eb['transfereeuniqueid']]){agents[_0x2f66eb[_0xd80e('0x4a')]][_0xd80e('0x4b')]=0x1;transfers[_0x2f66eb[_0xd80e('0x4a')]]=_['clone'](agents[_0x2f66eb[_0xd80e('0x4a')]]);transfers[_0x2f66eb['transfereeuniqueid']][_0xd80e('0x8')]=agents[_0x2f66eb[_0xd80e('0x47')]][_0xd80e('0x8')];transfers[_0x2f66eb[_0xd80e('0x4a')]]['calleridname']=agents[_0x2f66eb[_0xd80e('0x47')]]['calleridname'];transfers[_0x2f66eb[_0xd80e('0x4a')]]['agentcalledAt']=utils[_0xd80e('0x22')]();transfers[_0x2f66eb[_0xd80e('0x4a')]][_0xd80e('0x32')]=utils[_0xd80e('0x22')]();transfers[_0x2f66eb['transfereeuniqueid']][_0xd80e('0x24')]=0x0;transfers[_0x2f66eb[_0xd80e('0x4a')]]['agententerreason']=0x2;}}else if(_0x2f66eb[_0xd80e('0x47')]==_0x2f66eb[_0xd80e('0x4c')]){if(!_[_0xd80e('0x1e')](agents[_0x2f66eb[_0xd80e('0x46')]])){utils['info'](util[_0xd80e('0x2')](_0xd80e('0x48'),_0x2f66eb['origtransfereruniqueid'],agents[_0x2f66eb[_0xd80e('0x46')]][_0xd80e('0x6')]));agents[_0x2f66eb[_0xd80e('0x46')]]['transfer']=!![];agents[_0x2f66eb['origtransfereruniqueid']]['transfertype']='ATTENDED';agents[_0x2f66eb[_0xd80e('0x46')]]['transferexten']=_0x2f66eb[_0xd80e('0x4d')];agents[_0x2f66eb[_0xd80e('0x46')]][_0xd80e('0x43')]=_0x2f66eb['secondtransfereruniqueid'];}if(_0x2f66eb[_0xd80e('0x4e')]&&agents[_0x2f66eb[_0xd80e('0x4e')]]){agents[_0x2f66eb[_0xd80e('0x4e')]][_0xd80e('0x4b')]=0x1;transfers[_0x2f66eb[_0xd80e('0x4e')]]=_[_0xd80e('0x4f')](agents[_0x2f66eb[_0xd80e('0x4e')]]);transfers[_0x2f66eb[_0xd80e('0x4e')]][_0xd80e('0x8')]=agents[_0x2f66eb['origtransfereruniqueid']]['calleridnum'];transfers[_0x2f66eb[_0xd80e('0x4e')]][_0xd80e('0x50')]=agents[_0x2f66eb[_0xd80e('0x46')]][_0xd80e('0x50')];transfers[_0x2f66eb['transfertargetuniqueid']][_0xd80e('0x16')]=utils[_0xd80e('0x22')]();transfers[_0x2f66eb[_0xd80e('0x4e')]][_0xd80e('0x32')]=utils[_0xd80e('0x22')]();transfers[_0x2f66eb['transfertargetuniqueid']][_0xd80e('0x24')]=0x0;transfers[_0x2f66eb[_0xd80e('0x4e')]][_0xd80e('0x4b')]=0x2;}}}catch(_0x1676c7){utils['error'](util[_0xd80e('0x2')](_0xd80e('0x45'),_0x2f66eb[_0xd80e('0x46')]),_0x1676c7);}};exports[_0xd80e('0x51')]=function(_0x433782){try{utils[_0xd80e('0x2b')](util['format'](_0xd80e('0x52'),_0x433782[_0xd80e('0x4')]),_0x433782);if(agents[_0x433782['uniqueid']]&&agents[_0x433782[_0xd80e('0x4')]][_0xd80e('0x23')]===_0xd80e('0x53')){if(_0x433782[_0xd80e('0x54')]==='21'){agents[_0x433782['uniqueid']][_0xd80e('0x23')]='rejected';agents[_0x433782[_0xd80e('0x4')]][_0xd80e('0x9')]=_0xd80e('0x55');}utils[_0xd80e('0x1a')](util[_0xd80e('0x2')]('[%s][agents][hangup]\x20agent:%s\x20reason:%s\x20lastevent:%s',_0x433782[_0xd80e('0x4')],agents[_0x433782[_0xd80e('0x4')]][_0xd80e('0x6')],agents[_0x433782[_0xd80e('0x4')]]['reason'],agents[_0x433782[_0xd80e('0x4')]][_0xd80e('0x9')]));writeDB(agents[_0x433782['uniqueid']]);var _0x2597a3=unanswered[_0xd80e('0x56')](_0x433782[_0xd80e('0x4')]);if(_0x2597a3>-0x1){unanswered[_0xd80e('0x57')](_0x2597a3,0x1);}}if(transfers[_0x433782[_0xd80e('0x4')]]){transfers[_0x433782[_0xd80e('0x4')]]['agentcomplete']=!![];transfers[_0x433782['uniqueid']][_0xd80e('0x37')]=utils['now']();transfers[_0x433782['uniqueid']][_0xd80e('0x26')]=utils[_0xd80e('0x38')](transfers[_0x433782[_0xd80e('0x4')]][_0xd80e('0x37')],transfers[_0x433782[_0xd80e('0x4')]][_0xd80e('0x32')]);transfers[_0x433782[_0xd80e('0x4')]][_0xd80e('0x23')]='agent';transfers[_0x433782[_0xd80e('0x4')]][_0xd80e('0x9')]=_0xd80e('0x39');utils[_0xd80e('0x1a')](util['format'](_0xd80e('0x58'),_0x433782[_0xd80e('0x4')],transfers[_0x433782['uniqueid']][_0xd80e('0x6')],transfers[_0x433782[_0xd80e('0x4')]]['reason'],transfers[_0x433782[_0xd80e('0x4')]][_0xd80e('0x9')]));writeDB(transfers[_0x433782[_0xd80e('0x4')]],!![]);}if(agents[_0x433782[_0xd80e('0x4')]]&&agents[_0x433782[_0xd80e('0x4')]][_0xd80e('0x32')]){agents[_0x433782[_0xd80e('0x4')]][_0xd80e('0xf')]=!![];agents[_0x433782[_0xd80e('0x4')]][_0xd80e('0x37')]=utils['now']();agents[_0x433782[_0xd80e('0x4')]][_0xd80e('0x26')]=utils['diffTime'](agents[_0x433782[_0xd80e('0x4')]][_0xd80e('0x37')],agents[_0x433782[_0xd80e('0x4')]]['agentconnectAt']);agents[_0x433782[_0xd80e('0x4')]]['reason']=agents[_0x433782[_0xd80e('0x4')]][_0xd80e('0x3e')]?_0xd80e('0x3e'):_0xd80e('0x59');agents[_0x433782[_0xd80e('0x4')]]['lastevent']=_0xd80e('0x39');utils[_0xd80e('0x1a')](util[_0xd80e('0x2')](_0xd80e('0x58'),_0x433782[_0xd80e('0x4')],agents[_0x433782[_0xd80e('0x4')]][_0xd80e('0x6')],agents[_0x433782[_0xd80e('0x4')]][_0xd80e('0x23')],agents[_0x433782[_0xd80e('0x4')]][_0xd80e('0x9')]));writeDB(agents[_0x433782[_0xd80e('0x4')]]);}}catch(_0x31fd22){utils[_0xd80e('0x1c')](util['format'](_0xd80e('0x52'),_0x433782['uniqueid']),_0x31fd22);}};
\ No newline at end of file
+var _0xd64b=['[%s][agents][attendedtransfer]','origtransfereruniqueid','[%s][agents][attendedtransfer]\x20agent:%s','secondtransfereruniqueid','ATTENDED','origtransfererexten','transferuniqueid','transfereeuniqueid','agententerreason','clone','calleridname','secondtransfererlinkedid','secondtransfererexten','transfertargetuniqueid','hangup','[%s][agents][hangup]','cause','rejected','indexOf','splice','agent','[%s][agents][hangup]\x20agent:%s\x20reason:%s\x20lastevent:%s','complete','lodash','./utils','info','format','[%s][agents][writeDB]\x20channel:%s\x20queue:%s\x20agent:%s\x20interface:%s\x20calleridnum:%s\x20connectedlinenum:%s\x20lastevent:%s','uniqueid','calleridnum','connectedlinenum','lastevent','queue','getVoiceQueueByName','then','type','agentacw','agentcomplete','acwtime','acwTimeout','request','destuniqueid','agentcalled','debug','[%s][agents][agentcalled]','agentcalledAt','now','called','connectedlinename','[%s][agents][agentcalled]\x20agent:%s\x20destuniqueid:%s\x20lastevent:called','membername','error','agentringnoanswer','isNil','[%s][agents][agentringnoanswer]\x20agent:%s\x20destuniqueid:%s\x20lastevent:timeout','agentringnoanswerAt','reason','timeout','ringtime','push','queuecallerabandon','forIn','includes','[%s][agents][queuecallerabandon]','abandoned','holdtime','agentconnect','[%s][agents][agentconnect]','connect','talktime','answered_elsewhere','answeredelsewheredestinationuniqueid','answeredelsewheremembername','[%s][agents][agentcomplete]','diffTime','agentcompleteAt','agentconnectAt','blindtransfer','transfereruniqueid','[%s][agents][blindtransfer]','[%s][agents][blindtransfer]\x20agent:%s\x20transferuniqueid:%s','transfer','transfertype','blind','transferexten'];(function(_0x23f08f,_0x574ab0){var _0x30b6ae=function(_0x4ed5a6){while(--_0x4ed5a6){_0x23f08f['push'](_0x23f08f['shift']());}};_0x30b6ae(++_0x574ab0);}(_0xd64b,0xc1));var _0xbd64=function(_0x3c6562,_0x5eca79){_0x3c6562=_0x3c6562-0x0;var _0x2c6720=_0xd64b[_0x3c6562];return _0x2c6720;};'use strict';var _=require(_0xbd64('0x0'));var util=require('util');var utils=require(_0xbd64('0x1'));var agents={};var transfers={};var unanswered=[];function writeDB(_0x4bfb7c,_0x30b9b3){utils[_0xbd64('0x2')](util[_0xbd64('0x3')](_0xbd64('0x4'),_0x4bfb7c[_0xbd64('0x5')],_0x4bfb7c['channel'],_0x4bfb7c['queue'],_0x4bfb7c['membername'],_0x4bfb7c['interface'],_0x4bfb7c[_0xbd64('0x6')],_0x4bfb7c[_0xbd64('0x7')],_0x4bfb7c[_0xbd64('0x8')]));if(_0x4bfb7c[_0xbd64('0x9')]){utils[_0xbd64('0xa')](_0x4bfb7c[_0xbd64('0x9')])[_0xbd64('0xb')](function(_0x5d32b8){if(_0x5d32b8){_0x4bfb7c['type']=_0x5d32b8[_0xbd64('0xc')];_0x4bfb7c[_0xbd64('0xd')]=_0x4bfb7c[_0xbd64('0xe')]?_0x5d32b8['acw']:![];_0x4bfb7c[_0xbd64('0xf')]=_0x4bfb7c[_0xbd64('0xd')]?_0x5d32b8[_0xbd64('0x10')]:0x0;}utils[_0xbd64('0x11')]('CreateVoiceAgentReport',_0x4bfb7c);});}else{utils[_0xbd64('0x11')]('CreateVoiceAgentReport',_0x4bfb7c);}if(_0x30b9b3){delete transfers[_0x4bfb7c[_0xbd64('0x5')]];}else{delete agents[_0x4bfb7c[_0xbd64('0x12')]];}}exports[_0xbd64('0x13')]=function(_0x2183e2){try{utils[_0xbd64('0x14')](util[_0xbd64('0x3')](_0xbd64('0x15'),_0x2183e2[_0xbd64('0x5')]),_0x2183e2);agents[_0x2183e2[_0xbd64('0x12')]]=_0x2183e2;agents[_0x2183e2['destuniqueid']][_0xbd64('0x16')]=utils[_0xbd64('0x17')]();agents[_0x2183e2[_0xbd64('0x12')]][_0xbd64('0x8')]=_0xbd64('0x18');agents[_0x2183e2['destuniqueid']][_0xbd64('0x7')]=null;agents[_0x2183e2['destuniqueid']][_0xbd64('0x19')]=null;utils[_0xbd64('0x2')](util[_0xbd64('0x3')](_0xbd64('0x1a'),_0x2183e2[_0xbd64('0x5')],agents[_0x2183e2[_0xbd64('0x12')]][_0xbd64('0x1b')],_0x2183e2[_0xbd64('0x12')]));}catch(_0x5d3b00){utils[_0xbd64('0x1c')](util[_0xbd64('0x3')]('[%s][agents][agentcalled]',_0x2183e2['uniqueid']),_0x5d3b00);}};exports[_0xbd64('0x1d')]=function(_0x42b328){try{if(!_[_0xbd64('0x1e')](agents[_0x42b328[_0xbd64('0x12')]])){utils[_0xbd64('0x14')](util[_0xbd64('0x3')]('[%s][agents][agentringnoanswer]',_0x42b328['uniqueid']),_0x42b328);utils[_0xbd64('0x2')](util[_0xbd64('0x3')](_0xbd64('0x1f'),_0x42b328[_0xbd64('0x5')],agents[_0x42b328['destuniqueid']]['membername'],_0x42b328[_0xbd64('0x12')]));agents[_0x42b328['destuniqueid']][_0xbd64('0x1d')]=!![];agents[_0x42b328['destuniqueid']][_0xbd64('0x20')]=utils[_0xbd64('0x17')]();agents[_0x42b328[_0xbd64('0x12')]][_0xbd64('0x8')]='timeout';agents[_0x42b328[_0xbd64('0x12')]][_0xbd64('0x21')]=_0xbd64('0x22');agents[_0x42b328[_0xbd64('0x12')]]['holdtime']=_0x42b328['ringtime']?parseInt(_0x42b328[_0xbd64('0x23')])/0x3e8:0x0;agents[_0x42b328['destuniqueid']]['talktime']=0x0;unanswered[_0xbd64('0x24')](_0x42b328['destuniqueid']);}}catch(_0x3cf5b7){utils['error'](util[_0xbd64('0x3')]('[%s][agents][agentringnoanswer]',_0x42b328[_0xbd64('0x5')]),_0x3cf5b7);}};exports[_0xbd64('0x25')]=function(_0x3be63a){try{_[_0xbd64('0x26')](agents,function(_0x306f19,_0x207ffc){if(_0x306f19['uniqueid']==_0x3be63a[_0xbd64('0x5')]&&!_[_0xbd64('0x27')](unanswered,_0x306f19[_0xbd64('0x12')])){utils[_0xbd64('0x14')](util[_0xbd64('0x3')](_0xbd64('0x28'),_0x3be63a['uniqueid']),_0x3be63a);utils['info'](util[_0xbd64('0x3')]('[%s][agents][queuecallerabandon]\x20agent:%s\x20destuniqueid:%s\x20lastevent:abandoned',_0x3be63a[_0xbd64('0x5')],_0x306f19[_0xbd64('0x1b')],_0x306f19['destuniqueid']));_0x306f19['agentringnoanswer']=!![];_0x306f19[_0xbd64('0x20')]=utils['now']();_0x306f19['lastevent']=_0xbd64('0x29');_0x306f19[_0xbd64('0x21')]=_0xbd64('0x29');_0x306f19['holdtime']=_0x3be63a[_0xbd64('0x2a')];_0x306f19['talktime']=0x0;writeDB(_0x306f19);}});}catch(_0x1fc9cf){utils[_0xbd64('0x1c')](util[_0xbd64('0x3')](_0xbd64('0x28'),_0x3be63a[_0xbd64('0x5')]),_0x1fc9cf);}};exports[_0xbd64('0x2b')]=function(_0x513339){try{if(agents[_0x513339['destuniqueid']]){utils[_0xbd64('0x14')](util[_0xbd64('0x3')](_0xbd64('0x2c'),_0x513339[_0xbd64('0x5')]),_0x513339);utils[_0xbd64('0x2')](util[_0xbd64('0x3')]('[%s][agents][agentconnect]\x20agent:%s\x20destuniqueid:%s\x20lastevent:connect',_0x513339['uniqueid'],agents[_0x513339[_0xbd64('0x12')]][_0xbd64('0x1b')],_0x513339[_0xbd64('0x12')]));agents[_0x513339['destuniqueid']]['agentconnectAt']=utils[_0xbd64('0x17')]();agents[_0x513339['destuniqueid']][_0xbd64('0x7')]=_0x513339['connectedlinenum'];agents[_0x513339[_0xbd64('0x12')]][_0xbd64('0x19')]=_0x513339['connectedlinename'];agents[_0x513339[_0xbd64('0x12')]]['holdtime']=_0x513339['ringtime'];agents[_0x513339[_0xbd64('0x12')]][_0xbd64('0x8')]=_0xbd64('0x2d');_['forIn'](agents,function(_0x540e2a,_0x5d6bcf){if(_0x540e2a[_0xbd64('0x12')]!=_0x513339[_0xbd64('0x12')]&&_0x540e2a['uniqueid']==_0x513339[_0xbd64('0x5')]){_0x540e2a[_0xbd64('0x2e')]=0x0;_0x540e2a[_0xbd64('0x2a')]=_0x513339[_0xbd64('0x23')];_0x540e2a['agentringnoanswer']=!![];_0x540e2a['agentringnoanswerAt']=utils[_0xbd64('0x17')]();_0x540e2a['lastevent']='answered_elsewhere';_0x540e2a[_0xbd64('0x21')]=_0xbd64('0x2f');_0x540e2a[_0xbd64('0x30')]=_0x513339[_0xbd64('0x12')];_0x540e2a[_0xbd64('0x31')]=_0x513339[_0xbd64('0x1b')];writeDB(_0x540e2a);}});}}catch(_0x247775){utils[_0xbd64('0x1c')](util['format'](_0xbd64('0x2c'),_0x513339[_0xbd64('0x5')]),_0x247775);}};exports['agentcomplete']=function(_0x41b27a){try{if(!_[_0xbd64('0x1e')](agents[_0x41b27a[_0xbd64('0x12')]])){utils[_0xbd64('0x14')](util[_0xbd64('0x3')](_0xbd64('0x32'),_0x41b27a[_0xbd64('0x5')]),_0x41b27a);utils['info'](util[_0xbd64('0x3')]('[%s][agents][agentcomplete]\x20agent:%s\x20destuniqueid:%s\x20lastevent:complete',_0x41b27a[_0xbd64('0x5')],agents[_0x41b27a['destuniqueid']][_0xbd64('0x1b')],_0x41b27a[_0xbd64('0x12')]));agents[_0x41b27a[_0xbd64('0x12')]]['agentcomplete']=!![];agents[_0x41b27a[_0xbd64('0x12')]]['agentcompleteAt']=utils['now']();agents[_0x41b27a['destuniqueid']][_0xbd64('0x2e')]=utils[_0xbd64('0x33')](agents[_0x41b27a[_0xbd64('0x12')]][_0xbd64('0x34')],agents[_0x41b27a[_0xbd64('0x12')]][_0xbd64('0x35')]);agents[_0x41b27a[_0xbd64('0x12')]]['reason']=_0x41b27a[_0xbd64('0x21')];agents[_0x41b27a[_0xbd64('0x12')]][_0xbd64('0x8')]='complete';writeDB(agents[_0x41b27a[_0xbd64('0x12')]]);}}catch(_0x436f36){utils[_0xbd64('0x1c')](util[_0xbd64('0x3')](_0xbd64('0x32'),_0x41b27a['uniqueid']),_0x436f36);}};exports[_0xbd64('0x36')]=function(_0x1a9ec8){try{if(!_[_0xbd64('0x1e')](agents[_0x1a9ec8[_0xbd64('0x37')]])){utils['debug'](util['format'](_0xbd64('0x38'),_0x1a9ec8[_0xbd64('0x5')]),_0x1a9ec8);utils[_0xbd64('0x2')](util[_0xbd64('0x3')](_0xbd64('0x39'),_0x1a9ec8[_0xbd64('0x5')],agents[_0x1a9ec8[_0xbd64('0x37')]][_0xbd64('0x1b')],agents[_0x1a9ec8[_0xbd64('0x37')]][_0xbd64('0x5')]));agents[_0x1a9ec8[_0xbd64('0x37')]][_0xbd64('0x3a')]=!![];agents[_0x1a9ec8[_0xbd64('0x37')]][_0xbd64('0x3b')]=_0xbd64('0x3c');agents[_0x1a9ec8['transfereruniqueid']][_0xbd64('0x3d')]=_0x1a9ec8['extension'];agents[_0x1a9ec8['transfereruniqueid']]['transferuniqueid']=agents[_0x1a9ec8['transfereruniqueid']][_0xbd64('0x5')];}}catch(_0x2f56df){utils['error'](util[_0xbd64('0x3')](_0xbd64('0x38'),_0x1a9ec8[_0xbd64('0x5')]),_0x2f56df);}};exports['attendedtransfer']=function(_0x2c42fd){try{utils[_0xbd64('0x14')](util[_0xbd64('0x3')](_0xbd64('0x3e'),_0x2c42fd[_0xbd64('0x3f')]),_0x2c42fd);if(_0x2c42fd[_0xbd64('0x3f')]==_0x2c42fd['origtransfererlinkedid']){if(!_['isNil'](agents[_0x2c42fd['secondtransfereruniqueid']])){utils[_0xbd64('0x2')](util[_0xbd64('0x3')](_0xbd64('0x40'),_0x2c42fd[_0xbd64('0x3f')],agents[_0x2c42fd['secondtransfereruniqueid']][_0xbd64('0x1b')]));agents[_0x2c42fd[_0xbd64('0x41')]][_0xbd64('0x3a')]=!![];agents[_0x2c42fd[_0xbd64('0x41')]][_0xbd64('0x3b')]=_0xbd64('0x42');agents[_0x2c42fd['secondtransfereruniqueid']][_0xbd64('0x3d')]=_0x2c42fd[_0xbd64('0x43')];agents[_0x2c42fd[_0xbd64('0x41')]][_0xbd64('0x44')]=_0x2c42fd[_0xbd64('0x3f')];}if(_0x2c42fd[_0xbd64('0x45')]&&agents[_0x2c42fd[_0xbd64('0x45')]]){agents[_0x2c42fd[_0xbd64('0x45')]][_0xbd64('0x46')]=0x1;transfers[_0x2c42fd[_0xbd64('0x45')]]=_[_0xbd64('0x47')](agents[_0x2c42fd[_0xbd64('0x45')]]);transfers[_0x2c42fd['transfereeuniqueid']]['calleridnum']=agents[_0x2c42fd[_0xbd64('0x41')]][_0xbd64('0x6')];transfers[_0x2c42fd['transfereeuniqueid']]['calleridname']=agents[_0x2c42fd[_0xbd64('0x41')]][_0xbd64('0x48')];transfers[_0x2c42fd['transfereeuniqueid']][_0xbd64('0x16')]=utils[_0xbd64('0x17')]();transfers[_0x2c42fd[_0xbd64('0x45')]][_0xbd64('0x35')]=utils[_0xbd64('0x17')]();transfers[_0x2c42fd[_0xbd64('0x45')]][_0xbd64('0x2a')]=0x0;transfers[_0x2c42fd[_0xbd64('0x45')]][_0xbd64('0x46')]=0x2;}}else if(_0x2c42fd['secondtransfereruniqueid']==_0x2c42fd[_0xbd64('0x49')]){if(!_[_0xbd64('0x1e')](agents[_0x2c42fd[_0xbd64('0x3f')]])){utils['info'](util[_0xbd64('0x3')](_0xbd64('0x40'),_0x2c42fd['origtransfereruniqueid'],agents[_0x2c42fd[_0xbd64('0x3f')]][_0xbd64('0x1b')]));agents[_0x2c42fd[_0xbd64('0x3f')]][_0xbd64('0x3a')]=!![];agents[_0x2c42fd[_0xbd64('0x3f')]][_0xbd64('0x3b')]='ATTENDED';agents[_0x2c42fd[_0xbd64('0x3f')]][_0xbd64('0x3d')]=_0x2c42fd[_0xbd64('0x4a')];agents[_0x2c42fd[_0xbd64('0x3f')]]['transferuniqueid']=_0x2c42fd[_0xbd64('0x41')];}if(_0x2c42fd[_0xbd64('0x4b')]&&agents[_0x2c42fd['transfertargetuniqueid']]){agents[_0x2c42fd[_0xbd64('0x4b')]]['agententerreason']=0x1;transfers[_0x2c42fd[_0xbd64('0x4b')]]=_[_0xbd64('0x47')](agents[_0x2c42fd[_0xbd64('0x4b')]]);transfers[_0x2c42fd[_0xbd64('0x4b')]]['calleridnum']=agents[_0x2c42fd[_0xbd64('0x3f')]][_0xbd64('0x6')];transfers[_0x2c42fd[_0xbd64('0x4b')]][_0xbd64('0x48')]=agents[_0x2c42fd[_0xbd64('0x3f')]][_0xbd64('0x48')];transfers[_0x2c42fd['transfertargetuniqueid']]['agentcalledAt']=utils['now']();transfers[_0x2c42fd[_0xbd64('0x4b')]][_0xbd64('0x35')]=utils[_0xbd64('0x17')]();transfers[_0x2c42fd[_0xbd64('0x4b')]][_0xbd64('0x2a')]=0x0;transfers[_0x2c42fd[_0xbd64('0x4b')]]['agententerreason']=0x2;}}}catch(_0x30eddc){utils[_0xbd64('0x1c')](util[_0xbd64('0x3')](_0xbd64('0x3e'),_0x2c42fd[_0xbd64('0x3f')]),_0x30eddc);}};exports[_0xbd64('0x4c')]=function(_0x2f3516){try{utils[_0xbd64('0x14')](util[_0xbd64('0x3')](_0xbd64('0x4d'),_0x2f3516[_0xbd64('0x5')]),_0x2f3516);if(agents[_0x2f3516[_0xbd64('0x5')]]&&agents[_0x2f3516['uniqueid']]['reason']===_0xbd64('0x22')){if(_0x2f3516[_0xbd64('0x4e')]==='21'){agents[_0x2f3516[_0xbd64('0x5')]]['reason']=_0xbd64('0x4f');agents[_0x2f3516['uniqueid']][_0xbd64('0x8')]=_0xbd64('0x4f');}utils[_0xbd64('0x2')](util[_0xbd64('0x3')]('[%s][agents][hangup]\x20agent:%s\x20reason:%s\x20lastevent:%s',_0x2f3516[_0xbd64('0x5')],agents[_0x2f3516['uniqueid']][_0xbd64('0x1b')],agents[_0x2f3516[_0xbd64('0x5')]][_0xbd64('0x21')],agents[_0x2f3516[_0xbd64('0x5')]][_0xbd64('0x8')]));writeDB(agents[_0x2f3516['uniqueid']]);var _0x43780f=unanswered[_0xbd64('0x50')](_0x2f3516['uniqueid']);if(_0x43780f>-0x1){unanswered[_0xbd64('0x51')](_0x43780f,0x1);}}if(transfers[_0x2f3516[_0xbd64('0x5')]]){transfers[_0x2f3516[_0xbd64('0x5')]][_0xbd64('0xe')]=!![];transfers[_0x2f3516['uniqueid']][_0xbd64('0x34')]=utils['now']();transfers[_0x2f3516[_0xbd64('0x5')]][_0xbd64('0x2e')]=utils[_0xbd64('0x33')](transfers[_0x2f3516['uniqueid']]['agentcompleteAt'],transfers[_0x2f3516['uniqueid']]['agentconnectAt']);transfers[_0x2f3516[_0xbd64('0x5')]][_0xbd64('0x21')]=_0xbd64('0x52');transfers[_0x2f3516[_0xbd64('0x5')]][_0xbd64('0x8')]='complete';utils[_0xbd64('0x2')](util[_0xbd64('0x3')](_0xbd64('0x53'),_0x2f3516[_0xbd64('0x5')],transfers[_0x2f3516[_0xbd64('0x5')]]['membername'],transfers[_0x2f3516[_0xbd64('0x5')]][_0xbd64('0x21')],transfers[_0x2f3516[_0xbd64('0x5')]][_0xbd64('0x8')]));writeDB(transfers[_0x2f3516['uniqueid']],!![]);}if(agents[_0x2f3516['uniqueid']]&&agents[_0x2f3516[_0xbd64('0x5')]][_0xbd64('0x35')]){agents[_0x2f3516[_0xbd64('0x5')]][_0xbd64('0xe')]=!![];agents[_0x2f3516[_0xbd64('0x5')]][_0xbd64('0x34')]=utils[_0xbd64('0x17')]();agents[_0x2f3516[_0xbd64('0x5')]]['talktime']=utils[_0xbd64('0x33')](agents[_0x2f3516['uniqueid']][_0xbd64('0x34')],agents[_0x2f3516[_0xbd64('0x5')]][_0xbd64('0x35')]);agents[_0x2f3516['uniqueid']][_0xbd64('0x21')]=agents[_0x2f3516['uniqueid']]['transfer']?_0xbd64('0x3a'):_0xbd64('0x52');agents[_0x2f3516[_0xbd64('0x5')]]['lastevent']=_0xbd64('0x54');utils[_0xbd64('0x2')](util[_0xbd64('0x3')](_0xbd64('0x53'),_0x2f3516['uniqueid'],agents[_0x2f3516[_0xbd64('0x5')]][_0xbd64('0x1b')],agents[_0x2f3516[_0xbd64('0x5')]][_0xbd64('0x21')],agents[_0x2f3516[_0xbd64('0x5')]][_0xbd64('0x8')]));writeDB(agents[_0x2f3516[_0xbd64('0x5')]]);}}catch(_0x439bbd){utils[_0xbd64('0x1c')](util[_0xbd64('0x3')](_0xbd64('0x4d'),_0x2f3516[_0xbd64('0x5')]),_0x439bbd);}};
\ No newline at end of file
index 31b3414..200cbc8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc846=['[%s][calls][newstate]\x20context:%s\x20channel:%s','systemanswertime','isNil','transfer','[%s][calls][newstate]\x20linkedid:%s\x20context:%s\x20channel:%s','destinationchannel','answertime','disposition','toNumber','ANSWERED','hangup','[%s][calls][hangup]','callerid','calleridnum','[%s][calls][hangup]\x20callerid:%s\x20reason:%s','cause-txt','endtime','duration','[%s][calls][attendedtransfer]','localtwolinkedid','transfereechannel','[%s][calls][attendedtransfer]\x20localtwolinkedid:%s\x20destinationchannel:%s','origtransfereruniqueid','secondtransfererchannel','userfield','_attended','transfertargetchannel','origtransfererchannel','musiconholdstart','[%s][calls][musiconholdstart]','musiconholdstartAt','[%s][calls][musiconholdstart]\x20musiconholdstartAt:%s','musiconholdstop','mohtime','[%s][calls][musiconholdstop]\x20mohtime:%s','[%s][calls][musiconholdstop]','varset','variable','xmd-originatecalleridnum','value','source','xmd-phone','destination','\x22\x20<','xmd-callerid-preview','xmd-callerid','[%s][calls][varset]\x20variable:%s\x20value:%s','xmd-queue','xmcs-queue','lastapplication','Queue','lastdata','xmd-contactid','[%s][calls][varset]\x20variable:xmd-contactid\x20value:%s','ContactId','xmd-cdrtype','type','outboundrouteid','[%s][calls][varset]\x20variable:outboundrouteid\x20value:%s','routeid','sipcallid','[%s][calls][varset]\x20variable:sipcallid\x20value:%s','[%s][calls][varset]','newexten','application','toLowerCase','set','startsWith','appdata','cdr','split','substring','includes','gotoif','[%s][calls][newexten]','lodash','util','./utils','NO\x20ANSWER','FAILED','BUSY','blinds','uniqueid','transfereeuniqueid','info','format','[%s][calls][writeDB]\x20channel:%s\x20queue:%s\x20agent:%s\x20interface:%s\x20calleridnum:%s\x20connectedlinenum:%s\x20lastevent:%s','queue','membername','interface','lastevent','getUserByInternal','then','request','CreateVoiceCallReport','newchannel','debug','linkedid','channel','OutgoingSpoolFailed','[%s][calls][newchannel]\x20context:%s\x20exten:%s','accountcode','context','now','DOCUMENTATION','error','newstate','[%s][calls][newstate]','channelstate'];(function(_0x42cae2,_0x284ef8){var _0x5f256f=function(_0x41abc8){while(--_0x41abc8){_0x42cae2['push'](_0x42cae2['shift']());}};_0x5f256f(++_0x284ef8);}(_0xc846,0xb8));var _0x6c84=function(_0x1f252e,_0x428398){_0x1f252e=_0x1f252e-0x0;var _0x5574b7=_0xc846[_0x1f252e];return _0x5574b7;};'use strict';var _=require(_0x6c84('0x0'));var util=require(_0x6c84('0x1'));var utils=require(_0x6c84('0x2'));var transfers=require('./transfers.controller');var dispositions=[_0x6c84('0x3'),_0x6c84('0x4'),'FAILED',_0x6c84('0x3'),'NO\x20ANSWER','NO\x20ANSWER','ANSWERED',_0x6c84('0x5'),_0x6c84('0x4'),'FAILED',_0x6c84('0x4')];var channels={};function writeDB(_0x386eaa){var _0x3c9454;if(transfers[_0x6c84('0x6')][_0x386eaa['uniqueid']]){_0x3c9454=_0x386eaa['uniqueid'];_0x386eaa[_0x6c84('0x7')]=transfers[_0x6c84('0x6')][_0x386eaa['uniqueid']][_0x6c84('0x8')];}utils[_0x6c84('0x9')](util[_0x6c84('0xa')](_0x6c84('0xb'),_0x386eaa[_0x6c84('0x7')],_0x386eaa['channel'],_0x386eaa[_0x6c84('0xc')],_0x386eaa[_0x6c84('0xd')],_0x386eaa[_0x6c84('0xe')],_0x386eaa['calleridnum'],_0x386eaa['connectedlinenum'],_0x386eaa[_0x6c84('0xf')]));if(_0x386eaa['accountcode']){utils[_0x6c84('0x10')](_0x386eaa['accountcode'])[_0x6c84('0x11')](function(_0x27e483){if(_0x27e483){_0x386eaa['UserId']=_0x27e483['id'];}utils[_0x6c84('0x12')](_0x6c84('0x13'),_0x386eaa);});}else{utils[_0x6c84('0x12')](_0x6c84('0x13'),_0x386eaa);}if(channels[_0x386eaa[_0x6c84('0x7')]]){delete channels[_0x386eaa[_0x6c84('0x7')]];}else if(_0x3c9454&&channels[_0x3c9454]){delete transfers['blinds'][_0x3c9454];delete channels[_0x3c9454];}}exports[_0x6c84('0x14')]=function(_0x4dd875){try{utils[_0x6c84('0x15')](util[_0x6c84('0xa')]('[%s][calls][newchannel]',_0x4dd875[_0x6c84('0x7')]),_0x4dd875);if(_0x4dd875[_0x6c84('0x7')]==_0x4dd875[_0x6c84('0x16')]&&_0x4dd875[_0x6c84('0x17')]!=_0x6c84('0x18')){utils[_0x6c84('0x9')](util[_0x6c84('0xa')](_0x6c84('0x19'),_0x4dd875[_0x6c84('0x7')],_0x4dd875['context'],_0x4dd875['exten']));channels[_0x4dd875[_0x6c84('0x7')]]={'uniqueid':_0x4dd875[_0x6c84('0x7')],'accountcode':_0x4dd875[_0x6c84('0x1a')],'source':_0x4dd875['calleridnum'],'destination':_0x4dd875['exten'],'destinationcontext':_0x4dd875[_0x6c84('0x1b')],'channel':_0x4dd875['channel'],'starttime':utils[_0x6c84('0x1c')](),'answertime':null,'systemanswertime':null,'mohtime':0x0,'disposition':_0x6c84('0x3'),'amaflags':_0x6c84('0x1d')};}}catch(_0xe976e5){utils[_0x6c84('0x1e')](util[_0x6c84('0xa')]('[%s][calls][newchannel]',_0x4dd875[_0x6c84('0x7')]),_0xe976e5);}};exports[_0x6c84('0x1f')]=function(_0x1d0543){try{utils['debug'](util['format'](_0x6c84('0x20'),_0x1d0543['uniqueid']),_0x1d0543);if(!_['isNil'](channels[_0x1d0543['uniqueid']])&&_0x1d0543[_0x6c84('0x21')]==0x6){utils[_0x6c84('0x9')](util[_0x6c84('0xa')](_0x6c84('0x22'),_0x1d0543[_0x6c84('0x7')],_0x1d0543[_0x6c84('0x1b')],_0x1d0543[_0x6c84('0x17')]));if(_['isNil'](channels[_0x1d0543[_0x6c84('0x7')]][_0x6c84('0x23')])){channels[_0x1d0543[_0x6c84('0x7')]]['systemanswertime']=utils[_0x6c84('0x1c')]();}}else if(!_[_0x6c84('0x24')](channels[_0x1d0543[_0x6c84('0x16')]])&&_0x1d0543[_0x6c84('0x21')]==0x6&&_0x1d0543['context']!=_0x6c84('0x25')){utils[_0x6c84('0x9')](util[_0x6c84('0xa')](_0x6c84('0x26'),_0x1d0543[_0x6c84('0x7')],_0x1d0543[_0x6c84('0x16')],_0x1d0543[_0x6c84('0x1b')],_0x1d0543[_0x6c84('0x17')]));channels[_0x1d0543['linkedid']]['accountcode']=_0x1d0543[_0x6c84('0x1a')];channels[_0x1d0543['linkedid']][_0x6c84('0x27')]=_0x1d0543['channel'];if(_['isNil'](channels[_0x1d0543['linkedid']][_0x6c84('0x28')])){channels[_0x1d0543[_0x6c84('0x16')]][_0x6c84('0x28')]=utils[_0x6c84('0x1c')]();}channels[_0x1d0543['linkedid']][_0x6c84('0x29')]=dispositions[_[_0x6c84('0x2a')](_0x1d0543[_0x6c84('0x21')])]||_0x6c84('0x2b');}}catch(_0x586471){utils[_0x6c84('0x1e')](util[_0x6c84('0xa')]('[%s][calls][newstate]',_0x1d0543[_0x6c84('0x7')]),_0x586471);}};exports[_0x6c84('0x2c')]=function(_0x3c3995){try{if(!_[_0x6c84('0x24')](channels[_0x3c3995[_0x6c84('0x7')]])){utils['debug'](util[_0x6c84('0xa')](_0x6c84('0x2d'),_0x3c3995[_0x6c84('0x7')]),_0x3c3995);if(_[_0x6c84('0x24')](channels[_0x3c3995[_0x6c84('0x7')]][_0x6c84('0x2e')])){channels[_0x3c3995[_0x6c84('0x7')]][_0x6c84('0x2e')]=_0x3c3995['calleridname']+'\x20<'+_0x3c3995[_0x6c84('0x2f')]+'>';}utils[_0x6c84('0x9')](util[_0x6c84('0xa')](_0x6c84('0x30'),_0x3c3995[_0x6c84('0x7')],channels[_0x3c3995[_0x6c84('0x7')]][_0x6c84('0x2e')],_0x3c3995[_0x6c84('0x31')]));channels[_0x3c3995['uniqueid']][_0x6c84('0x32')]=utils[_0x6c84('0x1c')]();channels[_0x3c3995[_0x6c84('0x7')]][_0x6c84('0x33')]=utils['diffTime'](channels[_0x3c3995['uniqueid']][_0x6c84('0x32')],channels[_0x3c3995[_0x6c84('0x7')]]['starttime']);channels[_0x3c3995['uniqueid']]['billableseconds']=channels[_0x3c3995['uniqueid']][_0x6c84('0x28')]?utils['diffTime'](channels[_0x3c3995['uniqueid']][_0x6c84('0x32')],channels[_0x3c3995['uniqueid']]['answertime']):0x0;writeDB(channels[_0x3c3995[_0x6c84('0x7')]]);}}catch(_0x68c209){utils['error'](util[_0x6c84('0xa')](_0x6c84('0x2d'),_0x3c3995[_0x6c84('0x7')]),_0x68c209);}};exports['attendedtransfer']=function(_0x42d9ba){try{if(!_['isNil'](channels[_0x42d9ba['localtwolinkedid']])){utils[_0x6c84('0x15')](util[_0x6c84('0xa')](_0x6c84('0x34'),_0x42d9ba['origtransfereruniqueid']),_0x42d9ba);if(channels[_0x42d9ba[_0x6c84('0x35')]][_0x6c84('0x17')]==_0x42d9ba[_0x6c84('0x36')]){utils[_0x6c84('0x9')](util[_0x6c84('0xa')](_0x6c84('0x37'),_0x42d9ba[_0x6c84('0x38')],_0x42d9ba['localtwolinkedid'],_0x42d9ba[_0x6c84('0x39')]));channels[_0x42d9ba[_0x6c84('0x35')]]['destinationchannel']=_0x42d9ba[_0x6c84('0x39')];channels[_0x42d9ba[_0x6c84('0x35')]][_0x6c84('0x3a')]=_0x6c84('0x3b');}else if(channels[_0x42d9ba[_0x6c84('0x35')]][_0x6c84('0x17')]=_0x42d9ba[_0x6c84('0x3c')]){utils[_0x6c84('0x9')](util[_0x6c84('0xa')]('[%s][calls][attendedtransfer]\x20localtwolinkedid:%s\x20destinationchannel:%s',_0x42d9ba[_0x6c84('0x38')],_0x42d9ba[_0x6c84('0x35')],_0x42d9ba[_0x6c84('0x3d')]));channels[_0x42d9ba[_0x6c84('0x35')]][_0x6c84('0x27')]=_0x42d9ba[_0x6c84('0x3d')];channels[_0x42d9ba[_0x6c84('0x35')]]['userfield']='_attended';}}}catch(_0xf5d9ee){utils[_0x6c84('0x1e')](util[_0x6c84('0xa')](_0x6c84('0x34'),_0x42d9ba[_0x6c84('0x38')]),_0xf5d9ee);}};exports[_0x6c84('0x3e')]=function(_0x19b152){try{if(!_[_0x6c84('0x24')](channels[_0x19b152[_0x6c84('0x7')]])){utils['debug'](util[_0x6c84('0xa')](_0x6c84('0x3f'),_0x19b152['uniqueid']),_0x19b152);channels[_0x19b152[_0x6c84('0x7')]][_0x6c84('0x40')]=utils[_0x6c84('0x1c')]();utils['info'](util['format'](_0x6c84('0x41'),_0x19b152[_0x6c84('0x7')],channels[_0x19b152['uniqueid']][_0x6c84('0x40')]));}}catch(_0x213d4b){utils['error'](util['format'](_0x6c84('0x3f'),_0x19b152[_0x6c84('0x7')]),_0x213d4b);}};exports[_0x6c84('0x42')]=function(_0xb67f3){try{if(!_[_0x6c84('0x24')](channels[_0xb67f3['uniqueid']])){utils[_0x6c84('0x15')](util[_0x6c84('0xa')]('[%s][calls][musiconholdstop]',_0xb67f3['uniqueid']),_0xb67f3);if(!_[_0x6c84('0x24')](channels[_0xb67f3['uniqueid']][_0x6c84('0x40')])){channels[_0xb67f3['uniqueid']][_0x6c84('0x43')]+=utils['diffTime'](utils[_0x6c84('0x1c')](),channels[_0xb67f3['uniqueid']][_0x6c84('0x40')]);utils['info'](util[_0x6c84('0xa')](_0x6c84('0x44'),_0xb67f3[_0x6c84('0x7')],channels[_0xb67f3['uniqueid']][_0x6c84('0x43')]));delete channels[_0xb67f3[_0x6c84('0x7')]][_0x6c84('0x40')];}}}catch(_0x3d7358){utils[_0x6c84('0x1e')](util[_0x6c84('0xa')](_0x6c84('0x45'),_0xb67f3['uniqueid']),_0x3d7358);}};exports[_0x6c84('0x46')]=function(_0x2c3af){try{if(!_['isNil'](channels[_0x2c3af[_0x6c84('0x7')]])){utils['debug'](util['format']('[%s][calls][varset]',_0x2c3af[_0x6c84('0x7')]),_0x2c3af);if(!_[_0x6c84('0x24')](_0x2c3af[_0x6c84('0x47')][_0x6c84('0x48')])){utils[_0x6c84('0x9')](util[_0x6c84('0xa')]('[%s][calls][varset]\x20variable:xmd-originatecalleridnum\x20value:%s',_0x2c3af['uniqueid'],_0x2c3af[_0x6c84('0x49')]));channels[_0x2c3af['uniqueid']][_0x6c84('0x4a')]=_0x2c3af[_0x6c84('0x49')];}if(!_[_0x6c84('0x24')](_0x2c3af[_0x6c84('0x47')][_0x6c84('0x4b')])){utils[_0x6c84('0x9')](util[_0x6c84('0xa')]('[%s][calls][varset]\x20variable:xmd-phone\x20value:%s',_0x2c3af['uniqueid'],_0x2c3af['value']));channels[_0x2c3af[_0x6c84('0x7')]][_0x6c84('0x4c')]=_0x2c3af[_0x6c84('0x49')];channels[_0x2c3af[_0x6c84('0x7')]][_0x6c84('0x2e')]='\x22'+_0x2c3af[_0x6c84('0x49')]+_0x6c84('0x4d')+_0x2c3af['value']+'>';}if(!_[_0x6c84('0x24')](_0x2c3af['variable'][_0x6c84('0x4e')])||!_['isNil'](_0x2c3af[_0x6c84('0x47')][_0x6c84('0x4f')])){utils[_0x6c84('0x9')](util['format'](_0x6c84('0x50'),_0x2c3af[_0x6c84('0x7')],!_[_0x6c84('0x24')](_0x2c3af[_0x6c84('0x47')][_0x6c84('0x4e')])?_0x6c84('0x4e'):_0x6c84('0x4f'),_0x2c3af[_0x6c84('0x49')]));channels[_0x2c3af[_0x6c84('0x7')]]['callerid']=_0x2c3af[_0x6c84('0x49')];}if(!_['isNil'](_0x2c3af[_0x6c84('0x47')][_0x6c84('0x51')])||!_[_0x6c84('0x24')](_0x2c3af[_0x6c84('0x47')]['xmcs-queue'])){utils[_0x6c84('0x9')](util[_0x6c84('0xa')](_0x6c84('0x50'),_0x2c3af['uniqueid'],!_[_0x6c84('0x24')](_0x2c3af[_0x6c84('0x47')][_0x6c84('0x51')])?_0x6c84('0x51'):_0x6c84('0x52'),_0x2c3af['value']));channels[_0x2c3af['uniqueid']][_0x6c84('0x53')]=_0x6c84('0x54');channels[_0x2c3af[_0x6c84('0x7')]][_0x6c84('0x55')]=_0x2c3af['value'];channels[_0x2c3af['uniqueid']][_0x6c84('0xc')]=!![];}if(!_['isNil'](_0x2c3af[_0x6c84('0x47')][_0x6c84('0x56')])){utils[_0x6c84('0x9')](util[_0x6c84('0xa')](_0x6c84('0x57'),_0x2c3af[_0x6c84('0x7')],_0x2c3af[_0x6c84('0x49')]));channels[_0x2c3af[_0x6c84('0x7')]][_0x6c84('0x58')]=_0x2c3af[_0x6c84('0x49')];}if(!_[_0x6c84('0x24')](_0x2c3af[_0x6c84('0x47')][_0x6c84('0x59')])){utils[_0x6c84('0x9')](util[_0x6c84('0xa')]('[%s][calls][varset]\x20variable:xmd-cdrtype\x20value:%s',_0x2c3af[_0x6c84('0x7')],_0x2c3af[_0x6c84('0x49')]));channels[_0x2c3af[_0x6c84('0x7')]][_0x6c84('0x5a')]=_0x2c3af[_0x6c84('0x49')];}if(!_['isNil'](_0x2c3af['variable'][_0x6c84('0x5b')])){utils['info'](util[_0x6c84('0xa')](_0x6c84('0x5c'),_0x2c3af[_0x6c84('0x7')],_0x2c3af[_0x6c84('0x49')]));channels[_0x2c3af[_0x6c84('0x7')]][_0x6c84('0x5d')]=_0x2c3af['value'];}if(!_[_0x6c84('0x24')](_0x2c3af[_0x6c84('0x47')][_0x6c84('0x5e')])){utils[_0x6c84('0x9')](util['format'](_0x6c84('0x5f'),_0x2c3af[_0x6c84('0x7')],_0x2c3af[_0x6c84('0x49')]));channels[_0x2c3af[_0x6c84('0x7')]][_0x6c84('0x5e')]=_0x2c3af[_0x6c84('0x49')];}}}catch(_0x32e883){utils[_0x6c84('0x1e')](util[_0x6c84('0xa')](_0x6c84('0x60'),_0x2c3af[_0x6c84('0x7')]),_0x32e883);}};exports[_0x6c84('0x61')]=function(_0x5ecdca){try{if(!_[_0x6c84('0x24')](channels[_0x5ecdca[_0x6c84('0x7')]])){utils[_0x6c84('0x15')](util[_0x6c84('0xa')]('[%s][calls][newexten]',_0x5ecdca[_0x6c84('0x7')]),_0x5ecdca);utils[_0x6c84('0x9')](util[_0x6c84('0xa')]('[%s][calls][newexten]\x20application:%s\x20appdata:%s',_0x5ecdca[_0x6c84('0x7')],_0x5ecdca['application'],_0x5ecdca['appdata']));if(_0x5ecdca[_0x6c84('0x62')][_0x6c84('0x63')]()==_0x6c84('0x64')&&_[_0x6c84('0x65')](_0x5ecdca[_0x6c84('0x66')][_0x6c84('0x63')](),_0x6c84('0x67'))){var _0xddf6ea=_0x5ecdca['appdata'][_0x6c84('0x68')]('=');var _0x4f590c=_0xddf6ea[0x0][_0x6c84('0x69')](_0xddf6ea[0x0]['lastIndexOf']('(')+0x1,_0xddf6ea[0x0]['lastIndexOf'](')'));var _0x344352=_0xddf6ea[0x1];channels[_0x5ecdca[_0x6c84('0x7')]][_0x4f590c]=_0x344352;}if(!_[_0x6c84('0x6a')]([_0x6c84('0x2c'),'noop','execif','set',_0x6c84('0x6b')],_0x5ecdca[_0x6c84('0x62')][_0x6c84('0x63')]())){channels[_0x5ecdca[_0x6c84('0x7')]][_0x6c84('0x53')]=_0x5ecdca[_0x6c84('0x62')];channels[_0x5ecdca[_0x6c84('0x7')]][_0x6c84('0x55')]=_0x5ecdca[_0x6c84('0x66')];}}}catch(_0x3c768d){utils[_0x6c84('0x1e')](util['format'](_0x6c84('0x6c'),_0x5ecdca[_0x6c84('0x7')]),_0x3c768d);}};
\ No newline at end of file
+var _0x4199=['accountcode','getUserByInternal','then','UserId','request','CreateVoiceCallReport','newchannel','debug','[%s][calls][newchannel]','linkedid','channel','OutgoingSpoolFailed','[%s][calls][newchannel]\x20context:%s\x20exten:%s','context','exten','now','DOCUMENTATION','error','newstate','[%s][calls][newstate]','isNil','channelstate','systemanswertime','transfer','[%s][calls][newstate]\x20linkedid:%s\x20context:%s\x20channel:%s','destinationchannel','answertime','disposition','toNumber','hangup','callerid','calleridname','[%s][calls][hangup]\x20callerid:%s\x20reason:%s','cause-txt','endtime','duration','diffTime','billableseconds','[%s][calls][hangup]','attendedtransfer','localtwolinkedid','[%s][calls][attendedtransfer]','origtransfereruniqueid','[%s][calls][attendedtransfer]\x20localtwolinkedid:%s\x20destinationchannel:%s','secondtransfererchannel','userfield','transfertargetchannel','origtransfererchannel','_attended','musiconholdstart','[%s][calls][musiconholdstart]','musiconholdstartAt','musiconholdstop','mohtime','varset','[%s][calls][varset]','variable','xmd-originatecalleridnum','[%s][calls][varset]\x20variable:xmd-originatecalleridnum\x20value:%s','source','xmd-phone','[%s][calls][varset]\x20variable:xmd-phone\x20value:%s','value','destination','\x22\x20<','xmd-callerid-preview','xmd-callerid','[%s][calls][varset]\x20variable:%s\x20value:%s','xmcs-queue','xmd-queue','lastapplication','Queue','lastdata','xmd-cdrtype','type','outboundrouteid','[%s][calls][varset]\x20variable:outboundrouteid\x20value:%s','routeid','[%s][calls][varset]\x20variable:sipcallid\x20value:%s','sipcallid','[%s][calls][newexten]\x20application:%s\x20appdata:%s','appdata','application','toLowerCase','set','startsWith','cdr','split','substring','lastIndexOf','includes','noop','execif','[%s][calls][newexten]','lodash','util','./utils','./transfers.controller','NO\x20ANSWER','FAILED','ANSWERED','BUSY','blinds','uniqueid','transfereeuniqueid','info','format','queue','membername','interface','calleridnum','lastevent'];(function(_0x618414,_0x1a7a60){var _0x21c19a=function(_0x507b17){while(--_0x507b17){_0x618414['push'](_0x618414['shift']());}};_0x21c19a(++_0x1a7a60);}(_0x4199,0x1ae));var _0x9419=function(_0x2d92e0,_0x4ca453){_0x2d92e0=_0x2d92e0-0x0;var _0x2da92=_0x4199[_0x2d92e0];return _0x2da92;};'use strict';var _=require(_0x9419('0x0'));var util=require(_0x9419('0x1'));var utils=require(_0x9419('0x2'));var transfers=require(_0x9419('0x3'));var dispositions=[_0x9419('0x4'),_0x9419('0x5'),_0x9419('0x5'),_0x9419('0x4'),_0x9419('0x4'),_0x9419('0x4'),_0x9419('0x6'),_0x9419('0x7'),_0x9419('0x5'),_0x9419('0x5'),_0x9419('0x5')];var channels={};function writeDB(_0x29761c){var _0x2784ff;if(transfers[_0x9419('0x8')][_0x29761c[_0x9419('0x9')]]){_0x2784ff=_0x29761c['uniqueid'];_0x29761c[_0x9419('0x9')]=transfers[_0x9419('0x8')][_0x29761c[_0x9419('0x9')]][_0x9419('0xa')];}utils[_0x9419('0xb')](util[_0x9419('0xc')]('[%s][calls][writeDB]\x20channel:%s\x20queue:%s\x20agent:%s\x20interface:%s\x20calleridnum:%s\x20connectedlinenum:%s\x20lastevent:%s',_0x29761c[_0x9419('0x9')],_0x29761c['channel'],_0x29761c[_0x9419('0xd')],_0x29761c[_0x9419('0xe')],_0x29761c[_0x9419('0xf')],_0x29761c[_0x9419('0x10')],_0x29761c['connectedlinenum'],_0x29761c[_0x9419('0x11')]));if(_0x29761c[_0x9419('0x12')]){utils[_0x9419('0x13')](_0x29761c[_0x9419('0x12')])[_0x9419('0x14')](function(_0x4b320c){if(_0x4b320c){_0x29761c[_0x9419('0x15')]=_0x4b320c['id'];}utils[_0x9419('0x16')](_0x9419('0x17'),_0x29761c);});}else{utils[_0x9419('0x16')](_0x9419('0x17'),_0x29761c);}if(channels[_0x29761c[_0x9419('0x9')]]){delete channels[_0x29761c[_0x9419('0x9')]];}else if(_0x2784ff&&channels[_0x2784ff]){delete transfers[_0x9419('0x8')][_0x2784ff];delete channels[_0x2784ff];}}exports[_0x9419('0x18')]=function(_0x5406e4){try{utils[_0x9419('0x19')](util['format'](_0x9419('0x1a'),_0x5406e4[_0x9419('0x9')]),_0x5406e4);if(_0x5406e4[_0x9419('0x9')]==_0x5406e4[_0x9419('0x1b')]&&_0x5406e4[_0x9419('0x1c')]!=_0x9419('0x1d')){utils[_0x9419('0xb')](util[_0x9419('0xc')](_0x9419('0x1e'),_0x5406e4['uniqueid'],_0x5406e4[_0x9419('0x1f')],_0x5406e4[_0x9419('0x20')]));channels[_0x5406e4['uniqueid']]={'uniqueid':_0x5406e4[_0x9419('0x9')],'accountcode':_0x5406e4[_0x9419('0x12')],'source':_0x5406e4['calleridnum'],'destination':_0x5406e4['exten'],'destinationcontext':_0x5406e4[_0x9419('0x1f')],'channel':_0x5406e4['channel'],'starttime':utils[_0x9419('0x21')](),'answertime':null,'systemanswertime':null,'mohtime':0x0,'disposition':_0x9419('0x4'),'amaflags':_0x9419('0x22')};}}catch(_0x2d2d56){utils[_0x9419('0x23')](util[_0x9419('0xc')]('[%s][calls][newchannel]',_0x5406e4['uniqueid']),_0x2d2d56);}};exports[_0x9419('0x24')]=function(_0x30a80e){try{utils['debug'](util['format'](_0x9419('0x25'),_0x30a80e[_0x9419('0x9')]),_0x30a80e);if(!_[_0x9419('0x26')](channels[_0x30a80e[_0x9419('0x9')]])&&_0x30a80e[_0x9419('0x27')]==0x6){utils[_0x9419('0xb')](util[_0x9419('0xc')]('[%s][calls][newstate]\x20context:%s\x20channel:%s',_0x30a80e[_0x9419('0x9')],_0x30a80e[_0x9419('0x1f')],_0x30a80e['channel']));if(_[_0x9419('0x26')](channels[_0x30a80e[_0x9419('0x9')]][_0x9419('0x28')])){channels[_0x30a80e[_0x9419('0x9')]][_0x9419('0x28')]=utils['now']();}}else if(!_[_0x9419('0x26')](channels[_0x30a80e[_0x9419('0x1b')]])&&_0x30a80e[_0x9419('0x27')]==0x6&&_0x30a80e[_0x9419('0x1f')]!=_0x9419('0x29')){utils[_0x9419('0xb')](util[_0x9419('0xc')](_0x9419('0x2a'),_0x30a80e[_0x9419('0x9')],_0x30a80e['linkedid'],_0x30a80e['context'],_0x30a80e[_0x9419('0x1c')]));channels[_0x30a80e[_0x9419('0x1b')]][_0x9419('0x12')]=_0x30a80e[_0x9419('0x12')];channels[_0x30a80e[_0x9419('0x1b')]][_0x9419('0x2b')]=_0x30a80e[_0x9419('0x1c')];if(_[_0x9419('0x26')](channels[_0x30a80e[_0x9419('0x1b')]]['answertime'])){channels[_0x30a80e[_0x9419('0x1b')]][_0x9419('0x2c')]=utils[_0x9419('0x21')]();}channels[_0x30a80e['linkedid']][_0x9419('0x2d')]=dispositions[_[_0x9419('0x2e')](_0x30a80e['channelstate'])]||_0x9419('0x6');}}catch(_0x5a4ada){utils[_0x9419('0x23')](util[_0x9419('0xc')](_0x9419('0x25'),_0x30a80e[_0x9419('0x9')]),_0x5a4ada);}};exports[_0x9419('0x2f')]=function(_0x3d9b4d){try{if(!_[_0x9419('0x26')](channels[_0x3d9b4d[_0x9419('0x9')]])){utils['debug'](util[_0x9419('0xc')]('[%s][calls][hangup]',_0x3d9b4d[_0x9419('0x9')]),_0x3d9b4d);if(_[_0x9419('0x26')](channels[_0x3d9b4d[_0x9419('0x9')]][_0x9419('0x30')])){channels[_0x3d9b4d[_0x9419('0x9')]][_0x9419('0x30')]=_0x3d9b4d[_0x9419('0x31')]+'\x20<'+_0x3d9b4d[_0x9419('0x10')]+'>';}utils[_0x9419('0xb')](util[_0x9419('0xc')](_0x9419('0x32'),_0x3d9b4d['uniqueid'],channels[_0x3d9b4d[_0x9419('0x9')]][_0x9419('0x30')],_0x3d9b4d[_0x9419('0x33')]));channels[_0x3d9b4d[_0x9419('0x9')]][_0x9419('0x34')]=utils[_0x9419('0x21')]();channels[_0x3d9b4d[_0x9419('0x9')]][_0x9419('0x35')]=utils[_0x9419('0x36')](channels[_0x3d9b4d['uniqueid']][_0x9419('0x34')],channels[_0x3d9b4d['uniqueid']]['starttime']);channels[_0x3d9b4d['uniqueid']][_0x9419('0x37')]=channels[_0x3d9b4d[_0x9419('0x9')]][_0x9419('0x2c')]?utils['diffTime'](channels[_0x3d9b4d[_0x9419('0x9')]][_0x9419('0x34')],channels[_0x3d9b4d[_0x9419('0x9')]][_0x9419('0x2c')]):0x0;writeDB(channels[_0x3d9b4d[_0x9419('0x9')]]);}}catch(_0x16f7ff){utils[_0x9419('0x23')](util[_0x9419('0xc')](_0x9419('0x38'),_0x3d9b4d[_0x9419('0x9')]),_0x16f7ff);}};exports[_0x9419('0x39')]=function(_0x392622){try{if(!_[_0x9419('0x26')](channels[_0x392622[_0x9419('0x3a')]])){utils[_0x9419('0x19')](util['format'](_0x9419('0x3b'),_0x392622[_0x9419('0x3c')]),_0x392622);if(channels[_0x392622[_0x9419('0x3a')]]['channel']==_0x392622['transfereechannel']){utils['info'](util[_0x9419('0xc')](_0x9419('0x3d'),_0x392622['origtransfereruniqueid'],_0x392622[_0x9419('0x3a')],_0x392622[_0x9419('0x3e')]));channels[_0x392622[_0x9419('0x3a')]][_0x9419('0x2b')]=_0x392622['secondtransfererchannel'];channels[_0x392622[_0x9419('0x3a')]][_0x9419('0x3f')]='_attended';}else if(channels[_0x392622['localtwolinkedid']]['channel']=_0x392622[_0x9419('0x40')]){utils['info'](util['format'](_0x9419('0x3d'),_0x392622['origtransfereruniqueid'],_0x392622[_0x9419('0x3a')],_0x392622['origtransfererchannel']));channels[_0x392622[_0x9419('0x3a')]][_0x9419('0x2b')]=_0x392622[_0x9419('0x41')];channels[_0x392622[_0x9419('0x3a')]][_0x9419('0x3f')]=_0x9419('0x42');}}}catch(_0x1a6914){utils[_0x9419('0x23')](util[_0x9419('0xc')](_0x9419('0x3b'),_0x392622[_0x9419('0x3c')]),_0x1a6914);}};exports[_0x9419('0x43')]=function(_0x3be2c9){try{if(!_[_0x9419('0x26')](channels[_0x3be2c9[_0x9419('0x9')]])){utils[_0x9419('0x19')](util[_0x9419('0xc')](_0x9419('0x44'),_0x3be2c9['uniqueid']),_0x3be2c9);channels[_0x3be2c9['uniqueid']][_0x9419('0x45')]=utils[_0x9419('0x21')]();utils[_0x9419('0xb')](util[_0x9419('0xc')]('[%s][calls][musiconholdstart]\x20musiconholdstartAt:%s',_0x3be2c9[_0x9419('0x9')],channels[_0x3be2c9[_0x9419('0x9')]][_0x9419('0x45')]));}}catch(_0x1afe4d){utils[_0x9419('0x23')](util[_0x9419('0xc')]('[%s][calls][musiconholdstart]',_0x3be2c9['uniqueid']),_0x1afe4d);}};exports[_0x9419('0x46')]=function(_0x5b2288){try{if(!_['isNil'](channels[_0x5b2288[_0x9419('0x9')]])){utils[_0x9419('0x19')](util['format']('[%s][calls][musiconholdstop]',_0x5b2288[_0x9419('0x9')]),_0x5b2288);if(!_[_0x9419('0x26')](channels[_0x5b2288[_0x9419('0x9')]][_0x9419('0x45')])){channels[_0x5b2288[_0x9419('0x9')]][_0x9419('0x47')]+=utils[_0x9419('0x36')](utils[_0x9419('0x21')](),channels[_0x5b2288['uniqueid']][_0x9419('0x45')]);utils[_0x9419('0xb')](util['format']('[%s][calls][musiconholdstop]\x20mohtime:%s',_0x5b2288[_0x9419('0x9')],channels[_0x5b2288[_0x9419('0x9')]][_0x9419('0x47')]));delete channels[_0x5b2288[_0x9419('0x9')]][_0x9419('0x45')];}}}catch(_0x372853){utils[_0x9419('0x23')](util['format']('[%s][calls][musiconholdstop]',_0x5b2288[_0x9419('0x9')]),_0x372853);}};exports[_0x9419('0x48')]=function(_0x4a6fd0){try{if(!_[_0x9419('0x26')](channels[_0x4a6fd0[_0x9419('0x9')]])){utils[_0x9419('0x19')](util[_0x9419('0xc')](_0x9419('0x49'),_0x4a6fd0[_0x9419('0x9')]),_0x4a6fd0);if(!_[_0x9419('0x26')](_0x4a6fd0[_0x9419('0x4a')][_0x9419('0x4b')])){utils['info'](util['format'](_0x9419('0x4c'),_0x4a6fd0[_0x9419('0x9')],_0x4a6fd0['value']));channels[_0x4a6fd0[_0x9419('0x9')]][_0x9419('0x4d')]=_0x4a6fd0['value'];}if(!_[_0x9419('0x26')](_0x4a6fd0[_0x9419('0x4a')][_0x9419('0x4e')])){utils[_0x9419('0xb')](util[_0x9419('0xc')](_0x9419('0x4f'),_0x4a6fd0[_0x9419('0x9')],_0x4a6fd0[_0x9419('0x50')]));channels[_0x4a6fd0[_0x9419('0x9')]][_0x9419('0x51')]=_0x4a6fd0['value'];channels[_0x4a6fd0[_0x9419('0x9')]]['callerid']='\x22'+_0x4a6fd0[_0x9419('0x50')]+_0x9419('0x52')+_0x4a6fd0[_0x9419('0x50')]+'>';}if(!_['isNil'](_0x4a6fd0['variable'][_0x9419('0x53')])||!_[_0x9419('0x26')](_0x4a6fd0[_0x9419('0x4a')][_0x9419('0x54')])){utils[_0x9419('0xb')](util[_0x9419('0xc')](_0x9419('0x55'),_0x4a6fd0[_0x9419('0x9')],!_[_0x9419('0x26')](_0x4a6fd0['variable']['xmd-callerid-preview'])?_0x9419('0x53'):'xmd-callerid',_0x4a6fd0[_0x9419('0x50')]));channels[_0x4a6fd0['uniqueid']][_0x9419('0x30')]=_0x4a6fd0[_0x9419('0x50')];}if(!_[_0x9419('0x26')](_0x4a6fd0[_0x9419('0x4a')]['xmd-queue'])||!_['isNil'](_0x4a6fd0[_0x9419('0x4a')][_0x9419('0x56')])){utils[_0x9419('0xb')](util[_0x9419('0xc')](_0x9419('0x55'),_0x4a6fd0['uniqueid'],!_[_0x9419('0x26')](_0x4a6fd0[_0x9419('0x4a')][_0x9419('0x57')])?_0x9419('0x57'):_0x9419('0x56'),_0x4a6fd0['value']));channels[_0x4a6fd0[_0x9419('0x9')]][_0x9419('0x58')]=_0x9419('0x59');channels[_0x4a6fd0[_0x9419('0x9')]][_0x9419('0x5a')]=_0x4a6fd0[_0x9419('0x50')];channels[_0x4a6fd0[_0x9419('0x9')]][_0x9419('0xd')]=!![];}if(!_['isNil'](_0x4a6fd0[_0x9419('0x4a')]['xmd-contactid'])){utils[_0x9419('0xb')](util[_0x9419('0xc')]('[%s][calls][varset]\x20variable:xmd-contactid\x20value:%s',_0x4a6fd0['uniqueid'],_0x4a6fd0[_0x9419('0x50')]));channels[_0x4a6fd0[_0x9419('0x9')]]['ContactId']=_0x4a6fd0[_0x9419('0x50')];}if(!_[_0x9419('0x26')](_0x4a6fd0[_0x9419('0x4a')][_0x9419('0x5b')])){utils['info'](util['format']('[%s][calls][varset]\x20variable:xmd-cdrtype\x20value:%s',_0x4a6fd0[_0x9419('0x9')],_0x4a6fd0[_0x9419('0x50')]));channels[_0x4a6fd0[_0x9419('0x9')]][_0x9419('0x5c')]=_0x4a6fd0[_0x9419('0x50')];}if(!_['isNil'](_0x4a6fd0[_0x9419('0x4a')][_0x9419('0x5d')])){utils[_0x9419('0xb')](util['format'](_0x9419('0x5e'),_0x4a6fd0[_0x9419('0x9')],_0x4a6fd0['value']));channels[_0x4a6fd0[_0x9419('0x9')]][_0x9419('0x5f')]=_0x4a6fd0[_0x9419('0x50')];}if(!_[_0x9419('0x26')](_0x4a6fd0[_0x9419('0x4a')]['sipcallid'])){utils['info'](util[_0x9419('0xc')](_0x9419('0x60'),_0x4a6fd0[_0x9419('0x9')],_0x4a6fd0[_0x9419('0x50')]));channels[_0x4a6fd0[_0x9419('0x9')]][_0x9419('0x61')]=_0x4a6fd0['value'];}}}catch(_0x34401d){utils['error'](util[_0x9419('0xc')](_0x9419('0x49'),_0x4a6fd0['uniqueid']),_0x34401d);}};exports['newexten']=function(_0x2db954){try{if(!_[_0x9419('0x26')](channels[_0x2db954['uniqueid']])){utils[_0x9419('0x19')](util[_0x9419('0xc')]('[%s][calls][newexten]',_0x2db954[_0x9419('0x9')]),_0x2db954);utils[_0x9419('0xb')](util[_0x9419('0xc')](_0x9419('0x62'),_0x2db954[_0x9419('0x9')],_0x2db954['application'],_0x2db954[_0x9419('0x63')]));if(_0x2db954[_0x9419('0x64')][_0x9419('0x65')]()==_0x9419('0x66')&&_[_0x9419('0x67')](_0x2db954['appdata']['toLowerCase'](),_0x9419('0x68'))){var _0x296ef2=_0x2db954[_0x9419('0x63')][_0x9419('0x69')]('=');var _0x18c4af=_0x296ef2[0x0][_0x9419('0x6a')](_0x296ef2[0x0][_0x9419('0x6b')]('(')+0x1,_0x296ef2[0x0][_0x9419('0x6b')](')'));var _0x1723a6=_0x296ef2[0x1];channels[_0x2db954['uniqueid']][_0x18c4af]=_0x1723a6;}if(!_[_0x9419('0x6c')]([_0x9419('0x2f'),_0x9419('0x6d'),_0x9419('0x6e'),_0x9419('0x66'),'gotoif'],_0x2db954[_0x9419('0x64')][_0x9419('0x65')]())){channels[_0x2db954['uniqueid']][_0x9419('0x58')]=_0x2db954[_0x9419('0x64')];channels[_0x2db954[_0x9419('0x9')]][_0x9419('0x5a')]=_0x2db954[_0x9419('0x63')];}}}catch(_0x5d9457){utils[_0x9419('0x23')](util[_0x9419('0xc')](_0x9419('0x6f'),_0x2db954['uniqueid']),_0x5d9457);}};
\ No newline at end of file
index facee2c..69570fc 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x74d4=['error','[core]\x20error','close','managerevent','./utils','connect','info','shutdown','[core]\x20shutdown'];(function(_0x43c425,_0x261891){var _0x17ad8b=function(_0x3c2fec){while(--_0x3c2fec){_0x43c425['push'](_0x43c425['shift']());}};_0x17ad8b(++_0x261891);}(_0x74d4,0x112));var _0x474d=function(_0x141de3,_0x2ad411){_0x141de3=_0x141de3-0x0;var _0x74ec7c=_0x74d4[_0x141de3];return _0x74ec7c;};'use strict';var utils=require(_0x474d('0x0'));exports[_0x474d('0x1')]=function(){utils[_0x474d('0x2')]('[core]\x20connected');};exports[_0x474d('0x3')]=function(){utils['info'](_0x474d('0x4'));};exports['fullybooted']=function(){utils[_0x474d('0x2')]('[core]\x20fullybooted');};exports['error']=function(_0x33a0bd){utils[_0x474d('0x5')](_0x474d('0x6'),_0x33a0bd);};exports[_0x474d('0x7')]=function(){utils['info']('[core]\x20close');};exports[_0x474d('0x8')]=function(_0x3a85aa){};
\ No newline at end of file
+var _0x3c34=['connect','info','[core]\x20connected','shutdown','[core]\x20fullybooted','error','[core]\x20close','managerevent','./utils'];(function(_0x2641f9,_0x26715f){var _0x585741=function(_0x2d1462){while(--_0x2d1462){_0x2641f9['push'](_0x2641f9['shift']());}};_0x585741(++_0x26715f);}(_0x3c34,0x14c));var _0x43c3=function(_0x2d7f0e,_0x3e6fbd){_0x2d7f0e=_0x2d7f0e-0x0;var _0x110b07=_0x3c34[_0x2d7f0e];return _0x110b07;};'use strict';var utils=require(_0x43c3('0x0'));exports[_0x43c3('0x1')]=function(){utils[_0x43c3('0x2')](_0x43c3('0x3'));};exports[_0x43c3('0x4')]=function(){utils[_0x43c3('0x2')]('[core]\x20shutdown');};exports['fullybooted']=function(){utils[_0x43c3('0x2')](_0x43c3('0x5'));};exports[_0x43c3('0x6')]=function(_0x301446){utils[_0x43c3('0x6')]('[core]\x20error',_0x301446);};exports['close']=function(){utils[_0x43c3('0x2')](_0x43c3('0x7'));};exports[_0x43c3('0x8')]=function(_0x3c0ab6){};
\ No newline at end of file
index afbf576..19c6009 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc398=['assign','now','lastevent','[%s][dials][hangup]\x20starttime:%s\x20lastevent:called','starttime','[%s][dials][dialbegin]','dialend','[%s][dials][dialend]','answertime','[%s][dials][dialend]\x20dialstatus:%s\x20answertime:%s\x20lastevent:connect','[%s][dials][dialend]\x20dialstatus:%s','hangup','[%s][dials][hangup]\x20calleridnum:%s\x20calleridname:%s\x20lastevent:complete\x20reason:%s','calleridname','cause-txt','complete','duration','endtime','holdtime','diffTime','billableseconds','util','./utils','format','[%s][dials][writeDB]\x20channel:%s\x20dialstring:%s\x20calleridnum:%s\x20connectedlinenum:%s\x20dialstatus:%s','uniqueid','channel','connectedlinenum','dialstatus','CreateVoiceDialReport','newexten','debug','[%s][dials][newexten]','info','[%s][dials][newexten]\x20application:%s\x20appdata:%s','application','toLowerCase','set','startsWith','cdr(routeid)','appdata','split','error','varset','[%s][dials][varset]','isNil','variable','outboundrouteid','[%s][dials][varset]\x20variable:outboundrouteid\x20value:%s','value','dialbegin'];(function(_0x44a94,_0x39f323){var _0x31ef56=function(_0x54e098){while(--_0x54e098){_0x44a94['push'](_0x44a94['shift']());}};_0x31ef56(++_0x39f323);}(_0xc398,0x114));var _0x8c39=function(_0xf04c6d,_0xe98786){_0xf04c6d=_0xf04c6d-0x0;var _0x4a804e=_0xc398[_0xf04c6d];return _0x4a804e;};'use strict';var _=require('lodash');var util=require(_0x8c39('0x0'));var utils=require(_0x8c39('0x1'));var dials={};function writeDB(_0x5b4b0f){utils['info'](util[_0x8c39('0x2')](_0x8c39('0x3'),_0x5b4b0f[_0x8c39('0x4')],_0x5b4b0f[_0x8c39('0x5')],_0x5b4b0f['dialstring'],_0x5b4b0f['calleridnum'],_0x5b4b0f[_0x8c39('0x6')],_0x5b4b0f[_0x8c39('0x7')]));utils['request'](_0x8c39('0x8'),_0x5b4b0f);delete dials[_0x5b4b0f[_0x8c39('0x4')]];}exports[_0x8c39('0x9')]=function(_0x268c42){try{utils[_0x8c39('0xa')](util[_0x8c39('0x2')](_0x8c39('0xb'),_0x268c42['uniqueid']),_0x268c42);utils[_0x8c39('0xc')](util[_0x8c39('0x2')](_0x8c39('0xd'),_0x268c42['uniqueid'],_0x268c42[_0x8c39('0xe')],_0x268c42['appdata']));if(_0x268c42[_0x8c39('0xe')][_0x8c39('0xf')]()==_0x8c39('0x10')&&_[_0x8c39('0x11')](_0x268c42['appdata'][_0x8c39('0xf')](),_0x8c39('0x12'))){var _0x8d9c34=_0x268c42[_0x8c39('0x13')][_0x8c39('0x14')]('=');dials[_0x268c42['uniqueid']]={'routeId':_0x8d9c34[0x1]};}}catch(_0x4847d1){utils[_0x8c39('0x15')](util['format'](_0x8c39('0xb'),_0x268c42[_0x8c39('0x4')]),_0x4847d1);}};exports[_0x8c39('0x16')]=function(_0x3c47c5){try{utils[_0x8c39('0xa')](util[_0x8c39('0x2')](_0x8c39('0x17'),_0x3c47c5['uniqueid']),_0x3c47c5);if(!_[_0x8c39('0x18')](_0x3c47c5[_0x8c39('0x19')][_0x8c39('0x1a')])){utils[_0x8c39('0xc')](util[_0x8c39('0x2')](_0x8c39('0x1b'),_0x3c47c5[_0x8c39('0x4')],_0x3c47c5[_0x8c39('0x1c')]));dials[_0x3c47c5[_0x8c39('0x4')]]={'routeId':_0x3c47c5[_0x8c39('0x1c')]};}}catch(_0x297f98){utils[_0x8c39('0x15')](util[_0x8c39('0x2')](_0x8c39('0x17'),_0x3c47c5[_0x8c39('0x4')]),_0x297f98);}};exports[_0x8c39('0x1d')]=function(_0x400ccb){try{if(!_['isNil'](dials[_0x400ccb[_0x8c39('0x4')]])){utils['debug'](util[_0x8c39('0x2')]('[%s][dials][dialbegin]',_0x400ccb['uniqueid']),_0x400ccb);dials[_0x400ccb['uniqueid']]=_[_0x8c39('0x1e')](dials[_0x400ccb[_0x8c39('0x4')]],_0x400ccb);dials[_0x400ccb[_0x8c39('0x4')]]['starttime']=utils[_0x8c39('0x1f')]();dials[_0x400ccb[_0x8c39('0x4')]][_0x8c39('0x20')]='called';utils[_0x8c39('0xc')](util[_0x8c39('0x2')](_0x8c39('0x21'),_0x400ccb[_0x8c39('0x4')],dials[_0x400ccb[_0x8c39('0x4')]][_0x8c39('0x22')]));}}catch(_0xd42b0a){utils['error'](util['format'](_0x8c39('0x23'),_0x400ccb[_0x8c39('0x4')]),_0xd42b0a);}};exports[_0x8c39('0x24')]=function(_0x16e1e9){try{if(!_[_0x8c39('0x18')](dials[_0x16e1e9[_0x8c39('0x4')]])){utils['debug'](util[_0x8c39('0x2')](_0x8c39('0x25'),_0x16e1e9[_0x8c39('0x4')]),_0x16e1e9);dials[_0x16e1e9[_0x8c39('0x4')]][_0x8c39('0x7')]=_0x16e1e9['dialstatus'];if(_0x16e1e9[_0x8c39('0x7')]=='ANSWER'){dials[_0x16e1e9['uniqueid']]=_[_0x8c39('0x1e')](dials[_0x16e1e9['uniqueid']],_0x16e1e9);dials[_0x16e1e9[_0x8c39('0x4')]][_0x8c39('0x26')]=utils[_0x8c39('0x1f')]();dials[_0x16e1e9['uniqueid']][_0x8c39('0x20')]='connect';utils[_0x8c39('0xc')](util['format'](_0x8c39('0x27'),_0x16e1e9['uniqueid'],_0x16e1e9[_0x8c39('0x7')],dials[_0x16e1e9['uniqueid']][_0x8c39('0x26')]));}else{utils[_0x8c39('0xc')](util[_0x8c39('0x2')](_0x8c39('0x28'),_0x16e1e9[_0x8c39('0x4')],_0x16e1e9[_0x8c39('0x7')]));}}}catch(_0x42f6ca){utils[_0x8c39('0x15')](util['format'](_0x8c39('0x25'),_0x16e1e9[_0x8c39('0x4')]),_0x42f6ca);}};exports[_0x8c39('0x29')]=function(_0x36063c){try{if(!_['isNil'](dials[_0x36063c[_0x8c39('0x4')]])){utils[_0x8c39('0xa')](util[_0x8c39('0x2')]('[%s][dials][hangup]',_0x36063c[_0x8c39('0x4')]),_0x36063c);utils[_0x8c39('0xc')](util[_0x8c39('0x2')](_0x8c39('0x2a'),_0x36063c[_0x8c39('0x4')],_0x36063c['calleridnum'],_0x36063c[_0x8c39('0x2b')],_0x36063c[_0x8c39('0x2c')]));dials[_0x36063c[_0x8c39('0x4')]]=_['assign'](dials[_0x36063c[_0x8c39('0x4')]],{'endtime':utils[_0x8c39('0x1f')](),'lastevent':_0x8c39('0x2d')});dials[_0x36063c['uniqueid']][_0x8c39('0x2e')]=utils['diffTime'](dials[_0x36063c['uniqueid']][_0x8c39('0x2f')],dials[_0x36063c[_0x8c39('0x4')]][_0x8c39('0x22')]);dials[_0x36063c['uniqueid']][_0x8c39('0x30')]=utils[_0x8c39('0x31')](dials[_0x36063c['uniqueid']]['answertime']||dials[_0x36063c['uniqueid']][_0x8c39('0x2f')],dials[_0x36063c[_0x8c39('0x4')]][_0x8c39('0x22')]);dials[_0x36063c['uniqueid']][_0x8c39('0x32')]=dials[_0x36063c['uniqueid']]['answertime']?utils[_0x8c39('0x31')](dials[_0x36063c['uniqueid']][_0x8c39('0x2f')],dials[_0x36063c[_0x8c39('0x4')]][_0x8c39('0x26')]):0x0;writeDB(dials[_0x36063c[_0x8c39('0x4')]]);}}catch(_0x4fd809){utils[_0x8c39('0x15')](util[_0x8c39('0x2')]('[%s][dials][hangup]',_0x36063c[_0x8c39('0x4')]),_0x4fd809);}};
\ No newline at end of file
+var _0xff30=['[%s][dials][dialend]\x20dialstatus:%s\x20answertime:%s\x20lastevent:connect','[%s][dials][dialend]\x20dialstatus:%s','[%s][dials][hangup]','calleridnum','duration','diffTime','endtime','holdtime','billableseconds','./utils','info','[%s][dials][writeDB]\x20channel:%s\x20dialstring:%s\x20calleridnum:%s\x20connectedlinenum:%s\x20dialstatus:%s','uniqueid','channel','connectedlinenum','request','CreateVoiceDialReport','debug','format','[%s][dials][newexten]\x20application:%s\x20appdata:%s','application','appdata','toLowerCase','set','startsWith','cdr(routeid)','split','[%s][dials][newexten]','varset','variable','outboundrouteid','[%s][dials][varset]\x20variable:outboundrouteid\x20value:%s','value','error','[%s][dials][varset]','dialbegin','isNil','assign','starttime','now','lastevent','[%s][dials][hangup]\x20starttime:%s\x20lastevent:called','[%s][dials][dialbegin]','dialend','[%s][dials][dialend]','dialstatus','ANSWER','answertime','connect'];(function(_0xa464c9,_0x7c86d8){var _0x3d73c4=function(_0x5c2056){while(--_0x5c2056){_0xa464c9['push'](_0xa464c9['shift']());}};_0x3d73c4(++_0x7c86d8);}(_0xff30,0x6b));var _0x0ff3=function(_0x32cd5c,_0x22a6a3){_0x32cd5c=_0x32cd5c-0x0;var _0x42a01a=_0xff30[_0x32cd5c];return _0x42a01a;};'use strict';var _=require('lodash');var util=require('util');var utils=require(_0x0ff3('0x0'));var dials={};function writeDB(_0x22f783){utils[_0x0ff3('0x1')](util['format'](_0x0ff3('0x2'),_0x22f783[_0x0ff3('0x3')],_0x22f783[_0x0ff3('0x4')],_0x22f783['dialstring'],_0x22f783['calleridnum'],_0x22f783[_0x0ff3('0x5')],_0x22f783['dialstatus']));utils[_0x0ff3('0x6')](_0x0ff3('0x7'),_0x22f783);delete dials[_0x22f783['uniqueid']];}exports['newexten']=function(_0x434800){try{utils[_0x0ff3('0x8')](util[_0x0ff3('0x9')]('[%s][dials][newexten]',_0x434800[_0x0ff3('0x3')]),_0x434800);utils[_0x0ff3('0x1')](util['format'](_0x0ff3('0xa'),_0x434800['uniqueid'],_0x434800[_0x0ff3('0xb')],_0x434800[_0x0ff3('0xc')]));if(_0x434800['application'][_0x0ff3('0xd')]()==_0x0ff3('0xe')&&_[_0x0ff3('0xf')](_0x434800[_0x0ff3('0xc')][_0x0ff3('0xd')](),_0x0ff3('0x10'))){var _0x1ef027=_0x434800[_0x0ff3('0xc')][_0x0ff3('0x11')]('=');dials[_0x434800[_0x0ff3('0x3')]]={'routeId':_0x1ef027[0x1]};}}catch(_0x5b2b5a){utils['error'](util[_0x0ff3('0x9')](_0x0ff3('0x12'),_0x434800[_0x0ff3('0x3')]),_0x5b2b5a);}};exports[_0x0ff3('0x13')]=function(_0x3f1dbb){try{utils[_0x0ff3('0x8')](util[_0x0ff3('0x9')]('[%s][dials][varset]',_0x3f1dbb[_0x0ff3('0x3')]),_0x3f1dbb);if(!_['isNil'](_0x3f1dbb[_0x0ff3('0x14')][_0x0ff3('0x15')])){utils['info'](util[_0x0ff3('0x9')](_0x0ff3('0x16'),_0x3f1dbb[_0x0ff3('0x3')],_0x3f1dbb[_0x0ff3('0x17')]));dials[_0x3f1dbb[_0x0ff3('0x3')]]={'routeId':_0x3f1dbb[_0x0ff3('0x17')]};}}catch(_0x2cf1ae){utils[_0x0ff3('0x18')](util['format'](_0x0ff3('0x19'),_0x3f1dbb[_0x0ff3('0x3')]),_0x2cf1ae);}};exports[_0x0ff3('0x1a')]=function(_0xc99e30){try{if(!_[_0x0ff3('0x1b')](dials[_0xc99e30['uniqueid']])){utils['debug'](util[_0x0ff3('0x9')]('[%s][dials][dialbegin]',_0xc99e30['uniqueid']),_0xc99e30);dials[_0xc99e30[_0x0ff3('0x3')]]=_[_0x0ff3('0x1c')](dials[_0xc99e30[_0x0ff3('0x3')]],_0xc99e30);dials[_0xc99e30[_0x0ff3('0x3')]][_0x0ff3('0x1d')]=utils[_0x0ff3('0x1e')]();dials[_0xc99e30['uniqueid']][_0x0ff3('0x1f')]='called';utils[_0x0ff3('0x1')](util[_0x0ff3('0x9')](_0x0ff3('0x20'),_0xc99e30[_0x0ff3('0x3')],dials[_0xc99e30['uniqueid']][_0x0ff3('0x1d')]));}}catch(_0x13ab56){utils[_0x0ff3('0x18')](util[_0x0ff3('0x9')](_0x0ff3('0x21'),_0xc99e30[_0x0ff3('0x3')]),_0x13ab56);}};exports[_0x0ff3('0x22')]=function(_0xad9d6b){try{if(!_['isNil'](dials[_0xad9d6b[_0x0ff3('0x3')]])){utils[_0x0ff3('0x8')](util['format'](_0x0ff3('0x23'),_0xad9d6b[_0x0ff3('0x3')]),_0xad9d6b);dials[_0xad9d6b[_0x0ff3('0x3')]]['dialstatus']=_0xad9d6b['dialstatus'];if(_0xad9d6b[_0x0ff3('0x24')]==_0x0ff3('0x25')){dials[_0xad9d6b['uniqueid']]=_[_0x0ff3('0x1c')](dials[_0xad9d6b[_0x0ff3('0x3')]],_0xad9d6b);dials[_0xad9d6b[_0x0ff3('0x3')]][_0x0ff3('0x26')]=utils['now']();dials[_0xad9d6b['uniqueid']]['lastevent']=_0x0ff3('0x27');utils[_0x0ff3('0x1')](util['format'](_0x0ff3('0x28'),_0xad9d6b[_0x0ff3('0x3')],_0xad9d6b[_0x0ff3('0x24')],dials[_0xad9d6b[_0x0ff3('0x3')]][_0x0ff3('0x26')]));}else{utils['info'](util[_0x0ff3('0x9')](_0x0ff3('0x29'),_0xad9d6b[_0x0ff3('0x3')],_0xad9d6b[_0x0ff3('0x24')]));}}}catch(_0x138fb1){utils[_0x0ff3('0x18')](util['format']('[%s][dials][dialend]',_0xad9d6b[_0x0ff3('0x3')]),_0x138fb1);}};exports['hangup']=function(_0x404386){try{if(!_[_0x0ff3('0x1b')](dials[_0x404386[_0x0ff3('0x3')]])){utils['debug'](util['format'](_0x0ff3('0x2a'),_0x404386['uniqueid']),_0x404386);utils[_0x0ff3('0x1')](util['format']('[%s][dials][hangup]\x20calleridnum:%s\x20calleridname:%s\x20lastevent:complete\x20reason:%s',_0x404386['uniqueid'],_0x404386[_0x0ff3('0x2b')],_0x404386['calleridname'],_0x404386['cause-txt']));dials[_0x404386[_0x0ff3('0x3')]]=_[_0x0ff3('0x1c')](dials[_0x404386[_0x0ff3('0x3')]],{'endtime':utils[_0x0ff3('0x1e')](),'lastevent':'complete'});dials[_0x404386[_0x0ff3('0x3')]][_0x0ff3('0x2c')]=utils[_0x0ff3('0x2d')](dials[_0x404386[_0x0ff3('0x3')]][_0x0ff3('0x2e')],dials[_0x404386[_0x0ff3('0x3')]][_0x0ff3('0x1d')]);dials[_0x404386[_0x0ff3('0x3')]][_0x0ff3('0x2f')]=utils[_0x0ff3('0x2d')](dials[_0x404386[_0x0ff3('0x3')]][_0x0ff3('0x26')]||dials[_0x404386[_0x0ff3('0x3')]][_0x0ff3('0x2e')],dials[_0x404386[_0x0ff3('0x3')]][_0x0ff3('0x1d')]);dials[_0x404386[_0x0ff3('0x3')]][_0x0ff3('0x30')]=dials[_0x404386[_0x0ff3('0x3')]][_0x0ff3('0x26')]?utils[_0x0ff3('0x2d')](dials[_0x404386[_0x0ff3('0x3')]][_0x0ff3('0x2e')],dials[_0x404386['uniqueid']][_0x0ff3('0x26')]):0x0;writeDB(dials[_0x404386[_0x0ff3('0x3')]]);}}catch(_0x1588ac){utils['error'](util[_0x0ff3('0x9')](_0x0ff3('0x2a'),_0x404386[_0x0ff3('0x3')]),_0x1588ac);}};
\ No newline at end of file
index c3606a1..4cecd72 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x334e=['[%s][index][attendedtransfer]','origtransfereruniqueid','varset','[%s][index][varset]','newexten','[%s][index][newexten]','newchannel','[%s][index][newchannel]','dialbegin','[%s][index][dialbegin]','[%s]dialbegin','dialend','[%s][index][dialend]','asterisk-manager','../../config/environment','./utils','asterisk','password','keepConnected','xdr','disabled','XDR\x20DISABLED','./agents.controller','./calls.controller','./queues.controller','./recordings.controller','./members.controller','./dials.controller','./transfers.controller','./core.controller','shutdown','fullybooted','error','close','managerevent','devicestatechange','[%s][index][devicestatechange]','device','format','agentcalled','debug','[%s][index][agentcalled]','uniqueid','agentringnoanswer','[%s][index][agentringnoanswer]','agentconnect','[%s][index][agentconnect]','agentcomplete','[%s][index][agentcomplete]','queuecallerabandon','[%s][index][queuecallerabandon]','queuecallerjoin','[%s][index][queuecallerjoin]','queuecallerleave','[%s][index][queuecallerleave]','musiconholdstart','[%s][index][musiconholdstart]','musiconholdstop','[%s][index][musiconholdstop]','newstate','[%s][index][newstate]','[%s][index][hangup]','hangup','cdr','[%s][index][cdr]','[%s][index][blindtransfer]','blindtransfer','attendedtransfer'];(function(_0x648163,_0x241576){var _0x199d4d=function(_0x23055d){while(--_0x23055d){_0x648163['push'](_0x648163['shift']());}};_0x199d4d(++_0x241576);}(_0x334e,0xd9));var _0xe334=function(_0x4cdbbd,_0x1f9d52){_0x4cdbbd=_0x4cdbbd-0x0;var _0x6c0994=_0x334e[_0x4cdbbd];return _0x6c0994;};var AsteriskManager=require(_0xe334('0x0'));var config=require(_0xe334('0x1'));var utils=require(_0xe334('0x2'));var util=require('util');var ami=new AsteriskManager(config[_0xe334('0x3')]['port'],config['asterisk']['ip'],config['asterisk']['username'],config[_0xe334('0x3')][_0xe334('0x4')],!![]);ami[_0xe334('0x5')]();if(config[_0xe334('0x6')]&&config[_0xe334('0x6')][_0xe334('0x7')]){utils['info'](_0xe334('0x8'));}else{var agents=require(_0xe334('0x9'));var calls=require(_0xe334('0xa'));var queues=require(_0xe334('0xb'));var recordings=require(_0xe334('0xc'));var members=require(_0xe334('0xd'));var dials=require(_0xe334('0xe'));var transfers=require(_0xe334('0xf'));var core=require(_0xe334('0x10'));ami['on']('connect',core['connect']);ami['on'](_0xe334('0x11'),core[_0xe334('0x11')]);ami['on'](_0xe334('0x12'),core[_0xe334('0x12')]);ami['on'](_0xe334('0x13'),core[_0xe334('0x13')]);ami['on'](_0xe334('0x14'),core[_0xe334('0x14')]);ami['on'](_0xe334('0x15'),core['managerevent']);ami['on'](_0xe334('0x16'),function(_0x591ec3){try{utils['debug'](util['format'](_0xe334('0x17'),_0x591ec3[_0xe334('0x18')]),_0x591ec3);members['devicestatechange'](_0x591ec3);}catch(_0x353f1c){utils[_0xe334('0x13')](util[_0xe334('0x19')](_0xe334('0x17'),_0x591ec3['device']),_0x353f1c);}});ami['on'](_0xe334('0x1a'),function(_0x3bfa65){try{utils[_0xe334('0x1b')](util[_0xe334('0x19')](_0xe334('0x1c'),_0x3bfa65[_0xe334('0x1d')]),_0x3bfa65);agents[_0xe334('0x1a')](_0x3bfa65);}catch(_0x4264be){utils['error'](util['format'](_0xe334('0x1c'),_0x3bfa65['uniqueid']),_0x4264be);}});ami['on'](_0xe334('0x1e'),function(_0x53cd36){try{utils['debug'](util['format'](_0xe334('0x1f'),_0x53cd36[_0xe334('0x1d')]),_0x53cd36);agents['agentringnoanswer'](_0x53cd36);}catch(_0x7f917c){utils[_0xe334('0x13')](util[_0xe334('0x19')](_0xe334('0x1f'),_0x53cd36[_0xe334('0x1d')]),_0x7f917c);}});ami['on'](_0xe334('0x20'),function(_0x3afeb9){try{utils[_0xe334('0x1b')](util['format'](_0xe334('0x21'),_0x3afeb9['uniqueid']),_0x3afeb9);agents[_0xe334('0x20')](_0x3afeb9);queues[_0xe334('0x20')](_0x3afeb9);}catch(_0x4df068){utils[_0xe334('0x13')](util[_0xe334('0x19')](_0xe334('0x21'),_0x3afeb9[_0xe334('0x1d')]),_0x4df068);}});ami['on'](_0xe334('0x22'),function(_0x5995ec){try{utils['debug'](util[_0xe334('0x19')](_0xe334('0x23'),_0x5995ec[_0xe334('0x1d')]),_0x5995ec);agents[_0xe334('0x22')](_0x5995ec);queues[_0xe334('0x22')](_0x5995ec);members['agentcomplete'](_0x5995ec);}catch(_0x2a01f3){utils[_0xe334('0x13')](util[_0xe334('0x19')](_0xe334('0x23'),_0x5995ec['uniqueid']),_0x2a01f3);}});ami['on'](_0xe334('0x24'),function(_0x14ac6a){try{utils[_0xe334('0x1b')](util[_0xe334('0x19')](_0xe334('0x25'),_0x14ac6a[_0xe334('0x1d')]),_0x14ac6a);agents[_0xe334('0x24')](_0x14ac6a);queues[_0xe334('0x24')](_0x14ac6a);}catch(_0x1335e5){utils[_0xe334('0x13')](util['format']('[%s][index][queuecallerabandon]',_0x14ac6a[_0xe334('0x1d')]),_0x1335e5);}});ami['on'](_0xe334('0x26'),function(_0x4bfc24){try{utils[_0xe334('0x1b')](util[_0xe334('0x19')](_0xe334('0x27'),_0x4bfc24[_0xe334('0x1d')]),_0x4bfc24);queues[_0xe334('0x26')](_0x4bfc24);recordings[_0xe334('0x26')](_0x4bfc24);}catch(_0x59b9c8){utils['error'](util[_0xe334('0x19')](_0xe334('0x27'),_0x4bfc24[_0xe334('0x1d')]),_0x59b9c8);}});ami['on'](_0xe334('0x28'),function(_0xe6614b){try{utils['debug'](util[_0xe334('0x19')](_0xe334('0x29'),_0xe6614b[_0xe334('0x1d')]),_0xe6614b);queues[_0xe334('0x28')](_0xe6614b);}catch(_0x543c18){utils[_0xe334('0x13')](util[_0xe334('0x19')](_0xe334('0x29'),_0xe6614b['uniqueid']),_0x543c18);}});ami['on']('musiconholdstart',function(_0x1e3cc9){try{utils['debug'](util[_0xe334('0x19')]('[%s][index][musiconholdstart]',_0x1e3cc9[_0xe334('0x1d')]),_0x1e3cc9);queues[_0xe334('0x2a')](_0x1e3cc9);calls[_0xe334('0x2a')](_0x1e3cc9);}catch(_0x51463c){utils[_0xe334('0x13')](util['format'](_0xe334('0x2b'),_0x1e3cc9[_0xe334('0x1d')]),_0x51463c);}});ami['on'](_0xe334('0x2c'),function(_0x1fe7d6){try{utils[_0xe334('0x1b')](util[_0xe334('0x19')](_0xe334('0x2d'),_0x1fe7d6[_0xe334('0x1d')]),_0x1fe7d6);queues[_0xe334('0x2c')](_0x1fe7d6);calls[_0xe334('0x2c')](_0x1fe7d6);}catch(_0xfb3e7d){utils['error'](util[_0xe334('0x19')](_0xe334('0x2d'),_0x1fe7d6['uniqueid']),_0xfb3e7d);}});ami['on'](_0xe334('0x2e'),function(_0x1d3742){try{utils[_0xe334('0x1b')](util[_0xe334('0x19')](_0xe334('0x2f'),_0x1d3742['uniqueid']),_0x1d3742);calls['newstate'](_0x1d3742);recordings[_0xe334('0x2e')](_0x1d3742);}catch(_0x3d003c){utils[_0xe334('0x13')](util[_0xe334('0x19')](_0xe334('0x2f'),_0x1d3742['uniqueid']),_0x3d003c);}});ami['on']('hangup',function(_0x551cc8){try{utils[_0xe334('0x1b')](util['format'](_0xe334('0x30'),_0x551cc8['uniqueid']),_0x551cc8);calls[_0xe334('0x31')](_0x551cc8);recordings[_0xe334('0x31')](_0x551cc8);dials[_0xe334('0x31')](_0x551cc8);agents[_0xe334('0x31')](_0x551cc8);queues[_0xe334('0x31')](_0x551cc8);}catch(_0x382e02){utils[_0xe334('0x13')](util['format'](_0xe334('0x30'),_0x551cc8[_0xe334('0x1d')]),_0x382e02);}});ami['on'](_0xe334('0x32'),function(_0x542f29){try{utils[_0xe334('0x1b')](util[_0xe334('0x19')](_0xe334('0x33'),_0x542f29[_0xe334('0x1d')]),_0x542f29);members[_0xe334('0x32')](_0x542f29);}catch(_0x4768b6){utils[_0xe334('0x13')](util[_0xe334('0x19')](_0xe334('0x33'),_0x542f29[_0xe334('0x1d')]),_0x4768b6);}});ami['on']('blindtransfer',function(_0x536840){try{utils[_0xe334('0x1b')](util[_0xe334('0x19')](_0xe334('0x34'),_0x536840[_0xe334('0x1d')]),_0x536840);queues[_0xe334('0x35')](_0x536840);agents['blindtransfer'](_0x536840);transfers[_0xe334('0x35')](_0x536840);}catch(_0x2dd466){utils[_0xe334('0x13')](util[_0xe334('0x19')]('[%s][index][blindtransfer]',_0x536840[_0xe334('0x1d')]),_0x2dd466);}});ami['on'](_0xe334('0x36'),function(_0x24afc7){try{utils[_0xe334('0x1b')](util['format'](_0xe334('0x37'),_0x24afc7[_0xe334('0x38')]),_0x24afc7);queues[_0xe334('0x36')](_0x24afc7);transfers[_0xe334('0x36')](_0x24afc7);agents[_0xe334('0x36')](_0x24afc7);calls[_0xe334('0x36')](_0x24afc7);}catch(_0x163291){utils['error'](util['format']('[%s][index][attendedtransfer]',_0x24afc7[_0xe334('0x38')]),_0x163291);}});ami['on'](_0xe334('0x39'),function(_0x22a648){try{utils[_0xe334('0x1b')](util['format'](_0xe334('0x3a'),_0x22a648[_0xe334('0x1d')]),_0x22a648);queues[_0xe334('0x39')](_0x22a648);recordings[_0xe334('0x39')](_0x22a648);calls[_0xe334('0x39')](_0x22a648);dials[_0xe334('0x39')](_0x22a648);}catch(_0x4cd916){utils[_0xe334('0x13')](util[_0xe334('0x19')](_0xe334('0x3a'),_0x22a648[_0xe334('0x1d')]),_0x4cd916);}});ami['on'](_0xe334('0x3b'),function(_0x5bc71f){try{utils[_0xe334('0x1b')](util[_0xe334('0x19')](_0xe334('0x3c'),_0x5bc71f['uniqueid']),_0x5bc71f);calls[_0xe334('0x3b')](_0x5bc71f);recordings['newexten'](_0x5bc71f);dials[_0xe334('0x3b')](_0x5bc71f);}catch(_0x73e2b3){utils[_0xe334('0x13')](util[_0xe334('0x19')](_0xe334('0x3c'),_0x5bc71f[_0xe334('0x1d')]),_0x73e2b3);}});ami['on'](_0xe334('0x3d'),function(_0xc54125){try{utils['debug'](util[_0xe334('0x19')](_0xe334('0x3e'),_0xc54125['uniqueid']),_0xc54125);calls['newchannel'](_0xc54125);recordings[_0xe334('0x3d')](_0xc54125);}catch(_0x5a918a){utils[_0xe334('0x13')](util[_0xe334('0x19')]('[%s][index][newchannel]',_0xc54125[_0xe334('0x1d')]),_0x5a918a);}});ami['on'](_0xe334('0x3f'),function(_0x5419ff){try{utils[_0xe334('0x1b')](util['format'](_0xe334('0x40'),_0x5419ff['uniqueid']),_0x5419ff);dials['dialbegin'](_0x5419ff);}catch(_0x273c91){utils[_0xe334('0x13')](util[_0xe334('0x19')](_0xe334('0x41'),_0x5419ff[_0xe334('0x1d')]),_0x273c91);}});ami['on'](_0xe334('0x42'),function(_0x5e1284){try{utils[_0xe334('0x1b')](util[_0xe334('0x19')](_0xe334('0x43'),_0x5e1284[_0xe334('0x1d')]),_0x5e1284);dials[_0xe334('0x42')](_0x5e1284);}catch(_0x5b1d47){utils['error'](util[_0xe334('0x19')](_0xe334('0x43'),_0x5e1284[_0xe334('0x1d')]),_0x5b1d47);}});}
\ No newline at end of file
+var _0x0cfb=['util','asterisk','port','username','xdr','info','XDR\x20DISABLED','./agents.controller','./calls.controller','./queues.controller','./recordings.controller','./members.controller','./dials.controller','./core.controller','connect','shutdown','fullybooted','error','close','managerevent','debug','format','[%s][index][devicestatechange]','device','agentcalled','[%s][index][agentcalled]','uniqueid','agentringnoanswer','[%s][index][agentringnoanswer]','agentconnect','[%s][index][agentconnect]','agentcomplete','[%s][index][agentcomplete]','queuecallerabandon','[%s][index][queuecallerabandon]','[%s][index][queuecallerjoin]','queuecallerjoin','queuecallerleave','[%s][index][musiconholdstart]','musiconholdstart','musiconholdstop','[%s][index][musiconholdstop]','newstate','[%s][index][newstate]','hangup','[%s][index][hangup]','cdr','[%s][index][cdr]','blindtransfer','[%s][index][blindtransfer]','[%s][index][attendedtransfer]','origtransfereruniqueid','attendedtransfer','[%s][index][varset]','varset','newexten','[%s][index][newexten]','newchannel','dialbegin','[%s][index][dialbegin]','[%s]dialbegin','dialend','[%s][index][dialend]','asterisk-manager','../../config/environment','./utils'];(function(_0x21dd50,_0x2126e9){var _0x38659d=function(_0x47a956){while(--_0x47a956){_0x21dd50['push'](_0x21dd50['shift']());}};_0x38659d(++_0x2126e9);}(_0x0cfb,0x1cb));var _0xb0cf=function(_0x6131cd,_0x4c26a1){_0x6131cd=_0x6131cd-0x0;var _0x47e916=_0x0cfb[_0x6131cd];return _0x47e916;};var AsteriskManager=require(_0xb0cf('0x0'));var config=require(_0xb0cf('0x1'));var utils=require(_0xb0cf('0x2'));var util=require(_0xb0cf('0x3'));var ami=new AsteriskManager(config[_0xb0cf('0x4')][_0xb0cf('0x5')],config['asterisk']['ip'],config[_0xb0cf('0x4')][_0xb0cf('0x6')],config['asterisk']['password'],!![]);ami['keepConnected']();if(config[_0xb0cf('0x7')]&&config[_0xb0cf('0x7')]['disabled']){utils[_0xb0cf('0x8')](_0xb0cf('0x9'));}else{var agents=require(_0xb0cf('0xa'));var calls=require(_0xb0cf('0xb'));var queues=require(_0xb0cf('0xc'));var recordings=require(_0xb0cf('0xd'));var members=require(_0xb0cf('0xe'));var dials=require(_0xb0cf('0xf'));var transfers=require('./transfers.controller');var core=require(_0xb0cf('0x10'));ami['on'](_0xb0cf('0x11'),core['connect']);ami['on'](_0xb0cf('0x12'),core['shutdown']);ami['on'](_0xb0cf('0x13'),core['fullybooted']);ami['on']('error',core[_0xb0cf('0x14')]);ami['on'](_0xb0cf('0x15'),core['close']);ami['on'](_0xb0cf('0x16'),core[_0xb0cf('0x16')]);ami['on']('devicestatechange',function(_0x4293a2){try{utils[_0xb0cf('0x17')](util[_0xb0cf('0x18')](_0xb0cf('0x19'),_0x4293a2[_0xb0cf('0x1a')]),_0x4293a2);members['devicestatechange'](_0x4293a2);}catch(_0x1934df){utils[_0xb0cf('0x14')](util[_0xb0cf('0x18')](_0xb0cf('0x19'),_0x4293a2[_0xb0cf('0x1a')]),_0x1934df);}});ami['on'](_0xb0cf('0x1b'),function(_0x4c4610){try{utils[_0xb0cf('0x17')](util[_0xb0cf('0x18')](_0xb0cf('0x1c'),_0x4c4610[_0xb0cf('0x1d')]),_0x4c4610);agents[_0xb0cf('0x1b')](_0x4c4610);}catch(_0x15d153){utils[_0xb0cf('0x14')](util[_0xb0cf('0x18')](_0xb0cf('0x1c'),_0x4c4610[_0xb0cf('0x1d')]),_0x15d153);}});ami['on'](_0xb0cf('0x1e'),function(_0x5795ac){try{utils[_0xb0cf('0x17')](util[_0xb0cf('0x18')](_0xb0cf('0x1f'),_0x5795ac[_0xb0cf('0x1d')]),_0x5795ac);agents[_0xb0cf('0x1e')](_0x5795ac);}catch(_0x3aec67){utils['error'](util[_0xb0cf('0x18')](_0xb0cf('0x1f'),_0x5795ac['uniqueid']),_0x3aec67);}});ami['on'](_0xb0cf('0x20'),function(_0x500d4c){try{utils[_0xb0cf('0x17')](util[_0xb0cf('0x18')](_0xb0cf('0x21'),_0x500d4c[_0xb0cf('0x1d')]),_0x500d4c);agents['agentconnect'](_0x500d4c);queues[_0xb0cf('0x20')](_0x500d4c);}catch(_0x237ead){utils['error'](util[_0xb0cf('0x18')](_0xb0cf('0x21'),_0x500d4c[_0xb0cf('0x1d')]),_0x237ead);}});ami['on'](_0xb0cf('0x22'),function(_0x1cf1a0){try{utils['debug'](util[_0xb0cf('0x18')]('[%s][index][agentcomplete]',_0x1cf1a0[_0xb0cf('0x1d')]),_0x1cf1a0);agents[_0xb0cf('0x22')](_0x1cf1a0);queues[_0xb0cf('0x22')](_0x1cf1a0);members[_0xb0cf('0x22')](_0x1cf1a0);}catch(_0x5b323f){utils[_0xb0cf('0x14')](util[_0xb0cf('0x18')](_0xb0cf('0x23'),_0x1cf1a0[_0xb0cf('0x1d')]),_0x5b323f);}});ami['on'](_0xb0cf('0x24'),function(_0xb75dea){try{utils[_0xb0cf('0x17')](util[_0xb0cf('0x18')](_0xb0cf('0x25'),_0xb75dea[_0xb0cf('0x1d')]),_0xb75dea);agents[_0xb0cf('0x24')](_0xb75dea);queues['queuecallerabandon'](_0xb75dea);}catch(_0xac4f0f){utils[_0xb0cf('0x14')](util[_0xb0cf('0x18')](_0xb0cf('0x25'),_0xb75dea[_0xb0cf('0x1d')]),_0xac4f0f);}});ami['on']('queuecallerjoin',function(_0x215061){try{utils[_0xb0cf('0x17')](util[_0xb0cf('0x18')](_0xb0cf('0x26'),_0x215061[_0xb0cf('0x1d')]),_0x215061);queues[_0xb0cf('0x27')](_0x215061);recordings['queuecallerjoin'](_0x215061);}catch(_0x13ffb3){utils[_0xb0cf('0x14')](util[_0xb0cf('0x18')](_0xb0cf('0x26'),_0x215061[_0xb0cf('0x1d')]),_0x13ffb3);}});ami['on']('queuecallerleave',function(_0x417648){try{utils[_0xb0cf('0x17')](util[_0xb0cf('0x18')]('[%s][index][queuecallerleave]',_0x417648['uniqueid']),_0x417648);queues[_0xb0cf('0x28')](_0x417648);}catch(_0xb0e121){utils[_0xb0cf('0x14')](util[_0xb0cf('0x18')]('[%s][index][queuecallerleave]',_0x417648['uniqueid']),_0xb0e121);}});ami['on']('musiconholdstart',function(_0x516a33){try{utils[_0xb0cf('0x17')](util['format'](_0xb0cf('0x29'),_0x516a33[_0xb0cf('0x1d')]),_0x516a33);queues[_0xb0cf('0x2a')](_0x516a33);calls[_0xb0cf('0x2a')](_0x516a33);}catch(_0x294ca0){utils[_0xb0cf('0x14')](util[_0xb0cf('0x18')](_0xb0cf('0x29'),_0x516a33['uniqueid']),_0x294ca0);}});ami['on'](_0xb0cf('0x2b'),function(_0x3cf517){try{utils[_0xb0cf('0x17')](util['format']('[%s][index][musiconholdstop]',_0x3cf517[_0xb0cf('0x1d')]),_0x3cf517);queues[_0xb0cf('0x2b')](_0x3cf517);calls[_0xb0cf('0x2b')](_0x3cf517);}catch(_0x4443db){utils[_0xb0cf('0x14')](util[_0xb0cf('0x18')](_0xb0cf('0x2c'),_0x3cf517['uniqueid']),_0x4443db);}});ami['on'](_0xb0cf('0x2d'),function(_0x41fe84){try{utils['debug'](util[_0xb0cf('0x18')](_0xb0cf('0x2e'),_0x41fe84[_0xb0cf('0x1d')]),_0x41fe84);calls[_0xb0cf('0x2d')](_0x41fe84);recordings['newstate'](_0x41fe84);}catch(_0x1dd4c0){utils[_0xb0cf('0x14')](util[_0xb0cf('0x18')](_0xb0cf('0x2e'),_0x41fe84[_0xb0cf('0x1d')]),_0x1dd4c0);}});ami['on'](_0xb0cf('0x2f'),function(_0x1de4a8){try{utils[_0xb0cf('0x17')](util['format'](_0xb0cf('0x30'),_0x1de4a8['uniqueid']),_0x1de4a8);calls[_0xb0cf('0x2f')](_0x1de4a8);recordings[_0xb0cf('0x2f')](_0x1de4a8);dials[_0xb0cf('0x2f')](_0x1de4a8);agents['hangup'](_0x1de4a8);queues[_0xb0cf('0x2f')](_0x1de4a8);}catch(_0x12d822){utils[_0xb0cf('0x14')](util['format'](_0xb0cf('0x30'),_0x1de4a8[_0xb0cf('0x1d')]),_0x12d822);}});ami['on'](_0xb0cf('0x31'),function(_0x1fdb00){try{utils[_0xb0cf('0x17')](util[_0xb0cf('0x18')]('[%s][index][cdr]',_0x1fdb00[_0xb0cf('0x1d')]),_0x1fdb00);members['cdr'](_0x1fdb00);}catch(_0x2ffd56){utils['error'](util[_0xb0cf('0x18')](_0xb0cf('0x32'),_0x1fdb00[_0xb0cf('0x1d')]),_0x2ffd56);}});ami['on'](_0xb0cf('0x33'),function(_0x40d7ac){try{utils[_0xb0cf('0x17')](util[_0xb0cf('0x18')](_0xb0cf('0x34'),_0x40d7ac[_0xb0cf('0x1d')]),_0x40d7ac);queues[_0xb0cf('0x33')](_0x40d7ac);agents['blindtransfer'](_0x40d7ac);transfers[_0xb0cf('0x33')](_0x40d7ac);}catch(_0x2f7d02){utils['error'](util[_0xb0cf('0x18')](_0xb0cf('0x34'),_0x40d7ac[_0xb0cf('0x1d')]),_0x2f7d02);}});ami['on']('attendedtransfer',function(_0x1ac7fd){try{utils[_0xb0cf('0x17')](util[_0xb0cf('0x18')](_0xb0cf('0x35'),_0x1ac7fd[_0xb0cf('0x36')]),_0x1ac7fd);queues[_0xb0cf('0x37')](_0x1ac7fd);transfers[_0xb0cf('0x37')](_0x1ac7fd);agents[_0xb0cf('0x37')](_0x1ac7fd);calls[_0xb0cf('0x37')](_0x1ac7fd);}catch(_0x4445fa){utils['error'](util['format'](_0xb0cf('0x35'),_0x1ac7fd['origtransfereruniqueid']),_0x4445fa);}});ami['on']('varset',function(_0x55c381){try{utils[_0xb0cf('0x17')](util[_0xb0cf('0x18')](_0xb0cf('0x38'),_0x55c381[_0xb0cf('0x1d')]),_0x55c381);queues['varset'](_0x55c381);recordings[_0xb0cf('0x39')](_0x55c381);calls[_0xb0cf('0x39')](_0x55c381);dials[_0xb0cf('0x39')](_0x55c381);}catch(_0x997bb1){utils[_0xb0cf('0x14')](util['format'](_0xb0cf('0x38'),_0x55c381[_0xb0cf('0x1d')]),_0x997bb1);}});ami['on'](_0xb0cf('0x3a'),function(_0xed09f4){try{utils[_0xb0cf('0x17')](util[_0xb0cf('0x18')]('[%s][index][newexten]',_0xed09f4[_0xb0cf('0x1d')]),_0xed09f4);calls[_0xb0cf('0x3a')](_0xed09f4);recordings[_0xb0cf('0x3a')](_0xed09f4);dials[_0xb0cf('0x3a')](_0xed09f4);}catch(_0x14ef15){utils[_0xb0cf('0x14')](util[_0xb0cf('0x18')](_0xb0cf('0x3b'),_0xed09f4['uniqueid']),_0x14ef15);}});ami['on'](_0xb0cf('0x3c'),function(_0x5ab0ce){try{utils[_0xb0cf('0x17')](util['format']('[%s][index][newchannel]',_0x5ab0ce[_0xb0cf('0x1d')]),_0x5ab0ce);calls['newchannel'](_0x5ab0ce);recordings[_0xb0cf('0x3c')](_0x5ab0ce);}catch(_0x501f83){utils[_0xb0cf('0x14')](util['format']('[%s][index][newchannel]',_0x5ab0ce[_0xb0cf('0x1d')]),_0x501f83);}});ami['on'](_0xb0cf('0x3d'),function(_0x2c5b6f){try{utils[_0xb0cf('0x17')](util[_0xb0cf('0x18')](_0xb0cf('0x3e'),_0x2c5b6f[_0xb0cf('0x1d')]),_0x2c5b6f);dials[_0xb0cf('0x3d')](_0x2c5b6f);}catch(_0xb6a998){utils['error'](util['format'](_0xb0cf('0x3f'),_0x2c5b6f[_0xb0cf('0x1d')]),_0xb6a998);}});ami['on'](_0xb0cf('0x40'),function(_0x1e5816){try{utils['debug'](util[_0xb0cf('0x18')](_0xb0cf('0x41'),_0x1e5816['uniqueid']),_0x1e5816);dials[_0xb0cf('0x40')](_0x1e5816);}catch(_0x36c868){utils[_0xb0cf('0x14')](util['format'](_0xb0cf('0x41'),_0x1e5816[_0xb0cf('0x1d')]),_0x36c868);}});}
\ No newline at end of file
index f33e47d..7aeab57 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2617=['state','INUSE','voice','now','agent','NOT_INUSE','duration','diffTime','enterAt','agentcomplete','debug','[%s][members][agentcomplete]','[%s][members][agentcomplete]\x20interface:%s\x20queue:%s','queue','assign','cdr','data3','destination','[%s][members][cdr]\x20type:%s\x20source:%s\x20destination:%s','data1','exitAt','destinationchannel','isNil','source','[%s][members][cdr]','lodash','Local/_attended@transfer','Queue:','info','[%s][members][writeDB]\x20interface:%s\x20channel:%s\x20data2:%s\x20agent:%s\x20type:%s','uniqueid','interface','channel','data2','membername','type','getUserByInterface','then','name','internal','request','CreateMemberReport','split','catch','error','format','[%s][members][writeDB]','some','startsWith','devicestatechange','[%s][members][devicestatechange]','device','[%s][members][devicestatechange]\x20state:%s\x20interface:%s'];(function(_0x1c0f3f,_0x3be33e){var _0x3a23f8=function(_0x176665){while(--_0x176665){_0x1c0f3f['push'](_0x1c0f3f['shift']());}};_0x3a23f8(++_0x3be33e);}(_0x2617,0xb8));var _0x7261=function(_0x573145,_0x58c492){_0x573145=_0x573145-0x0;var _0x530863=_0x2617[_0x573145];return _0x530863;};'use strict';var _=require(_0x7261('0x0'));var util=require('util');var utils=require('./utils');var members={};var exclude=[_0x7261('0x1'),_0x7261('0x2')];function writeDB(_0x18b6e7){utils[_0x7261('0x3')](util['format'](_0x7261('0x4'),_0x18b6e7[_0x7261('0x5')],_0x18b6e7[_0x7261('0x6')],_0x18b6e7[_0x7261('0x7')],_0x18b6e7[_0x7261('0x8')],_0x18b6e7[_0x7261('0x9')],_0x18b6e7[_0x7261('0xa')]));if(_0x18b6e7[_0x7261('0x6')]){utils[_0x7261('0xb')](_0x18b6e7[_0x7261('0x6')])[_0x7261('0xc')](function(_0x184f86){if(_0x184f86){_0x18b6e7[_0x7261('0x9')]=_0x184f86[_0x7261('0xd')];_0x18b6e7[_0x7261('0xe')]=_0x184f86[_0x7261('0xe')];utils[_0x7261('0xf')](_0x7261('0x10'),_0x18b6e7);}else{utils['getUserByName'](_0x18b6e7['interface'][_0x7261('0x11')]('/')[0x1])[_0x7261('0xc')](function(_0x3da18c){if(_0x3da18c){_0x18b6e7[_0x7261('0x9')]=_0x3da18c[_0x7261('0xd')];_0x18b6e7[_0x7261('0xe')]=_0x3da18c[_0x7261('0xe')];utils[_0x7261('0xf')](_0x7261('0x10'),_0x18b6e7);}});}})[_0x7261('0x12')](function(_0x40e25f){utils[_0x7261('0x13')](util[_0x7261('0x14')](_0x7261('0x15'),_0x18b6e7[_0x7261('0x5')]),_0x40e25f);});}delete members[_0x18b6e7[_0x7261('0x6')]];}function startsWith(_0x337dcd,_0xcfb4){return _[_0x7261('0x16')](_0x337dcd,function(_0x1fd845){return _[_0x7261('0x17')](_0xcfb4,_0x1fd845);});}exports[_0x7261('0x18')]=function(_0x3d020a){try{utils['debug'](util['format'](_0x7261('0x19'),members[_0x3d020a[_0x7261('0x1a')]]?members[_0x3d020a[_0x7261('0x1a')]]['uniqueid']:_0x3d020a['device']),_0x3d020a);utils[_0x7261('0x3')](util[_0x7261('0x14')](_0x7261('0x1b'),members[_0x3d020a[_0x7261('0x1a')]]?members[_0x3d020a[_0x7261('0x1a')]]['uniqueid']:_0x3d020a[_0x7261('0x1a')],_0x3d020a[_0x7261('0x1c')],_0x3d020a[_0x7261('0x1a')]));switch(_0x3d020a[_0x7261('0x1c')]){case _0x7261('0x1d'):case'BUSY':if(!startsWith(exclude,_0x3d020a['device'])){members[_0x3d020a['device']]={'channel':_0x7261('0x1e'),'interface':_0x3d020a[_0x7261('0x1a')],'type':'TALKING','enterAt':utils[_0x7261('0x1f')](),'role':_0x7261('0x20')};}break;case _0x7261('0x21'):if(!_['isNil'](members[_0x3d020a[_0x7261('0x1a')]])){members[_0x3d020a[_0x7261('0x1a')]]['exitAt']=utils[_0x7261('0x1f')]();members[_0x3d020a[_0x7261('0x1a')]][_0x7261('0x22')]=utils[_0x7261('0x23')](members[_0x3d020a[_0x7261('0x1a')]]['exitAt'],members[_0x3d020a[_0x7261('0x1a')]][_0x7261('0x24')]);if(members[_0x3d020a[_0x7261('0x1a')]][_0x7261('0x5')]){writeDB(members[_0x3d020a[_0x7261('0x1a')]]);}}break;default:break;}}catch(_0x268083){utils[_0x7261('0x13')](util['format'](_0x7261('0x19'),members[_0x3d020a[_0x7261('0x1a')]]?members[_0x3d020a[_0x7261('0x1a')]][_0x7261('0x5')]:_0x3d020a[_0x7261('0x1a')]),_0x268083);}};exports[_0x7261('0x25')]=function(_0x61ae51){try{if(!_['isNil'](members[_0x61ae51[_0x7261('0x6')]])){utils[_0x7261('0x26')](util[_0x7261('0x14')](_0x7261('0x27'),_0x61ae51[_0x7261('0x5')]),_0x61ae51);utils['info'](util[_0x7261('0x14')](_0x7261('0x28'),_0x61ae51[_0x7261('0x5')],_0x61ae51['interface'],_0x61ae51[_0x7261('0x29')]));members[_0x61ae51['interface']]=_[_0x7261('0x2a')](members[_0x61ae51['interface']],{'data4':_0x61ae51['queue'],'uniqueid':_0x61ae51['uniqueid']});}}catch(_0x17c31b){utils[_0x7261('0x13')](util[_0x7261('0x14')](_0x7261('0x27'),_0x61ae51[_0x7261('0x5')]),_0x17c31b);}};exports[_0x7261('0x2b')]=function(_0x4a8b1e){try{utils[_0x7261('0x26')](util['format']('[%s][members][cdr]',_0x4a8b1e[_0x7261('0x5')]),_0x4a8b1e);if(_0x4a8b1e['channel']){var _0x20ef39=_0x4a8b1e[_0x7261('0x7')][_0x7261('0x11')]('-')[0x0];if(!_['isNil'](members[_0x20ef39])){members[_0x20ef39]=_['assign'](members[_0x20ef39],{'data1':members[_0x20ef39]['data1']||_0x4a8b1e[_0x7261('0xa')],'data2':members[_0x20ef39][_0x7261('0x8')]||_0x4a8b1e['source'],'data3':members[_0x20ef39][_0x7261('0x2c')]||_0x4a8b1e[_0x7261('0x2d')],'uniqueid':members[_0x20ef39]['uniqueid']||_0x4a8b1e['uniqueid']});utils[_0x7261('0x3')](util[_0x7261('0x14')](_0x7261('0x2e'),_0x4a8b1e[_0x7261('0x5')],members[_0x20ef39][_0x7261('0x2f')],members[_0x20ef39][_0x7261('0x8')],members[_0x20ef39][_0x7261('0x2c')]));if(members[_0x20ef39][_0x7261('0x30')]){writeDB(members[_0x20ef39]);}}}if(_0x4a8b1e['destinationchannel']){var _0x55b2dd=_0x4a8b1e[_0x7261('0x31')][_0x7261('0x11')]('-')[0x0];if(!_[_0x7261('0x32')](members[_0x55b2dd])){members[_0x55b2dd]=_[_0x7261('0x2a')](members[_0x55b2dd],{'data1':members[_0x55b2dd][_0x7261('0x2f')]||_0x4a8b1e[_0x7261('0xa')],'data2':members[_0x55b2dd][_0x7261('0x8')]||_0x4a8b1e[_0x7261('0x33')],'data3':members[_0x55b2dd][_0x7261('0x2c')]||_0x4a8b1e[_0x7261('0x2d')],'uniqueid':members[_0x55b2dd][_0x7261('0x5')]||_0x4a8b1e[_0x7261('0x5')]});utils[_0x7261('0x3')](util[_0x7261('0x14')]('[%s][members][cdr]\x20type:%s\x20source:%s\x20destination:%s',_0x4a8b1e[_0x7261('0x5')],members[_0x55b2dd][_0x7261('0x2f')],members[_0x55b2dd][_0x7261('0x8')],members[_0x55b2dd]['data3']));if(members[_0x55b2dd][_0x7261('0x30')]){writeDB(members[_0x55b2dd]);}}}}catch(_0x468f93){utils[_0x7261('0x13')](util['format'](_0x7261('0x34'),_0x4a8b1e[_0x7261('0x5')]),_0x468f93);}};
\ No newline at end of file
+var _0xa8db=['interface','channel','data2','membername','getUserByInterface','then','name','internal','request','getUserByName','CreateMemberReport','catch','error','[%s][members][writeDB]','some','startsWith','devicestatechange','debug','[%s][members][devicestatechange]','device','info','state','BUSY','voice','TALKING','now','agent','isNil','exitAt','duration','diffTime','enterAt','agentcomplete','[%s][members][agentcomplete]','[%s][members][agentcomplete]\x20interface:%s\x20queue:%s','queue','cdr','[%s][members][cdr]','split','assign','data1','type','data3','[%s][members][cdr]\x20type:%s\x20source:%s\x20destination:%s','destinationchannel','source','destination','util','./utils','Local/_attended@transfer','format','[%s][members][writeDB]\x20interface:%s\x20channel:%s\x20data2:%s\x20agent:%s\x20type:%s','uniqueid'];(function(_0x3fb9dd,_0x174fff){var _0x20136a=function(_0x480081){while(--_0x480081){_0x3fb9dd['push'](_0x3fb9dd['shift']());}};_0x20136a(++_0x174fff);}(_0xa8db,0x16d));var _0xba8d=function(_0x1ebce2,_0x10e903){_0x1ebce2=_0x1ebce2-0x0;var _0x4a330c=_0xa8db[_0x1ebce2];return _0x4a330c;};'use strict';var _=require('lodash');var util=require(_0xba8d('0x0'));var utils=require(_0xba8d('0x1'));var members={};var exclude=[_0xba8d('0x2'),'Queue:'];function writeDB(_0x3f9c3f){utils['info'](util[_0xba8d('0x3')](_0xba8d('0x4'),_0x3f9c3f[_0xba8d('0x5')],_0x3f9c3f[_0xba8d('0x6')],_0x3f9c3f[_0xba8d('0x7')],_0x3f9c3f[_0xba8d('0x8')],_0x3f9c3f[_0xba8d('0x9')],_0x3f9c3f['type']));if(_0x3f9c3f[_0xba8d('0x6')]){utils[_0xba8d('0xa')](_0x3f9c3f['interface'])[_0xba8d('0xb')](function(_0x11f10d){if(_0x11f10d){_0x3f9c3f[_0xba8d('0x9')]=_0x11f10d[_0xba8d('0xc')];_0x3f9c3f[_0xba8d('0xd')]=_0x11f10d['internal'];utils[_0xba8d('0xe')]('CreateMemberReport',_0x3f9c3f);}else{utils[_0xba8d('0xf')](_0x3f9c3f[_0xba8d('0x6')]['split']('/')[0x1])['then'](function(_0x2ac350){if(_0x2ac350){_0x3f9c3f[_0xba8d('0x9')]=_0x2ac350[_0xba8d('0xc')];_0x3f9c3f[_0xba8d('0xd')]=_0x2ac350[_0xba8d('0xd')];utils[_0xba8d('0xe')](_0xba8d('0x10'),_0x3f9c3f);}});}})[_0xba8d('0x11')](function(_0x386ca9){utils[_0xba8d('0x12')](util[_0xba8d('0x3')](_0xba8d('0x13'),_0x3f9c3f[_0xba8d('0x5')]),_0x386ca9);});}delete members[_0x3f9c3f[_0xba8d('0x6')]];}function startsWith(_0x1f1ba4,_0x46ca95){return _[_0xba8d('0x14')](_0x1f1ba4,function(_0x354a89){return _[_0xba8d('0x15')](_0x46ca95,_0x354a89);});}exports[_0xba8d('0x16')]=function(_0x3b4de2){try{utils[_0xba8d('0x17')](util[_0xba8d('0x3')](_0xba8d('0x18'),members[_0x3b4de2[_0xba8d('0x19')]]?members[_0x3b4de2[_0xba8d('0x19')]][_0xba8d('0x5')]:_0x3b4de2[_0xba8d('0x19')]),_0x3b4de2);utils[_0xba8d('0x1a')](util[_0xba8d('0x3')]('[%s][members][devicestatechange]\x20state:%s\x20interface:%s',members[_0x3b4de2[_0xba8d('0x19')]]?members[_0x3b4de2[_0xba8d('0x19')]][_0xba8d('0x5')]:_0x3b4de2['device'],_0x3b4de2[_0xba8d('0x1b')],_0x3b4de2[_0xba8d('0x19')]));switch(_0x3b4de2[_0xba8d('0x1b')]){case'INUSE':case _0xba8d('0x1c'):if(!startsWith(exclude,_0x3b4de2[_0xba8d('0x19')])){members[_0x3b4de2['device']]={'channel':_0xba8d('0x1d'),'interface':_0x3b4de2[_0xba8d('0x19')],'type':_0xba8d('0x1e'),'enterAt':utils[_0xba8d('0x1f')](),'role':_0xba8d('0x20')};}break;case'NOT_INUSE':if(!_[_0xba8d('0x21')](members[_0x3b4de2[_0xba8d('0x19')]])){members[_0x3b4de2[_0xba8d('0x19')]][_0xba8d('0x22')]=utils[_0xba8d('0x1f')]();members[_0x3b4de2['device']][_0xba8d('0x23')]=utils[_0xba8d('0x24')](members[_0x3b4de2[_0xba8d('0x19')]][_0xba8d('0x22')],members[_0x3b4de2['device']][_0xba8d('0x25')]);if(members[_0x3b4de2[_0xba8d('0x19')]][_0xba8d('0x5')]){writeDB(members[_0x3b4de2[_0xba8d('0x19')]]);}}break;default:break;}}catch(_0x13c226){utils[_0xba8d('0x12')](util[_0xba8d('0x3')](_0xba8d('0x18'),members[_0x3b4de2[_0xba8d('0x19')]]?members[_0x3b4de2[_0xba8d('0x19')]][_0xba8d('0x5')]:_0x3b4de2[_0xba8d('0x19')]),_0x13c226);}};exports[_0xba8d('0x26')]=function(_0x1db60c){try{if(!_['isNil'](members[_0x1db60c[_0xba8d('0x6')]])){utils[_0xba8d('0x17')](util[_0xba8d('0x3')](_0xba8d('0x27'),_0x1db60c[_0xba8d('0x5')]),_0x1db60c);utils[_0xba8d('0x1a')](util[_0xba8d('0x3')](_0xba8d('0x28'),_0x1db60c[_0xba8d('0x5')],_0x1db60c['interface'],_0x1db60c['queue']));members[_0x1db60c[_0xba8d('0x6')]]=_['assign'](members[_0x1db60c['interface']],{'data4':_0x1db60c[_0xba8d('0x29')],'uniqueid':_0x1db60c[_0xba8d('0x5')]});}}catch(_0x495582){utils[_0xba8d('0x12')](util['format'](_0xba8d('0x27'),_0x1db60c[_0xba8d('0x5')]),_0x495582);}};exports[_0xba8d('0x2a')]=function(_0x2700eb){try{utils[_0xba8d('0x17')](util[_0xba8d('0x3')](_0xba8d('0x2b'),_0x2700eb[_0xba8d('0x5')]),_0x2700eb);if(_0x2700eb[_0xba8d('0x7')]){var _0x1e5369=_0x2700eb[_0xba8d('0x7')][_0xba8d('0x2c')]('-')[0x0];if(!_['isNil'](members[_0x1e5369])){members[_0x1e5369]=_[_0xba8d('0x2d')](members[_0x1e5369],{'data1':members[_0x1e5369][_0xba8d('0x2e')]||_0x2700eb[_0xba8d('0x2f')],'data2':members[_0x1e5369][_0xba8d('0x8')]||_0x2700eb['source'],'data3':members[_0x1e5369][_0xba8d('0x30')]||_0x2700eb['destination'],'uniqueid':members[_0x1e5369]['uniqueid']||_0x2700eb[_0xba8d('0x5')]});utils['info'](util[_0xba8d('0x3')](_0xba8d('0x31'),_0x2700eb['uniqueid'],members[_0x1e5369][_0xba8d('0x2e')],members[_0x1e5369][_0xba8d('0x8')],members[_0x1e5369]['data3']));if(members[_0x1e5369][_0xba8d('0x22')]){writeDB(members[_0x1e5369]);}}}if(_0x2700eb[_0xba8d('0x32')]){var _0x5c5c09=_0x2700eb['destinationchannel'][_0xba8d('0x2c')]('-')[0x0];if(!_[_0xba8d('0x21')](members[_0x5c5c09])){members[_0x5c5c09]=_[_0xba8d('0x2d')](members[_0x5c5c09],{'data1':members[_0x5c5c09]['data1']||_0x2700eb[_0xba8d('0x2f')],'data2':members[_0x5c5c09][_0xba8d('0x8')]||_0x2700eb[_0xba8d('0x33')],'data3':members[_0x5c5c09][_0xba8d('0x30')]||_0x2700eb[_0xba8d('0x34')],'uniqueid':members[_0x5c5c09][_0xba8d('0x5')]||_0x2700eb['uniqueid']});utils['info'](util[_0xba8d('0x3')](_0xba8d('0x31'),_0x2700eb[_0xba8d('0x5')],members[_0x5c5c09][_0xba8d('0x2e')],members[_0x5c5c09][_0xba8d('0x8')],members[_0x5c5c09][_0xba8d('0x30')]));if(members[_0x5c5c09][_0xba8d('0x22')]){writeDB(members[_0x5c5c09]);}}}}catch(_0x1505fd){utils[_0xba8d('0x12')](util[_0xba8d('0x3')](_0xba8d('0x2b'),_0x2700eb[_0xba8d('0x5')]),_0x1505fd);}};
\ No newline at end of file
index a98e6e2..c0ebc26 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xbd8f=['[%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','ATTENDEDTRANSFER','transfereelinkedid','clone','transfertargetuniqueid','calleridname','queuecallerjoinAt','mohtime','[%s][queues][attendedtransfer]\x20name:%s\x20transferuniqueid:%s\x20transferexten:%s\x20queuecallerexitreason:ATTENDEDTRANSFER','secondtransfereruniqueid','secondtransfererexten','transfertargetlinkedid','[%s][queues][attendedtransfer]\x20name:%s\x20transfereduniqueid:%s\x20calleridnum:%s\x20calleridname:%s','[%s][queues][attendedtransfer]\x20name:%s\x20transfereduniqueid:%s','musiconholdstartAt','[%s][queues][musiconholdstop]\x20name:%s\x20musiconholdstartAt:%s','[%s][queues][musiconholdstart]','musiconholdstop','[%s][queues][musiconholdstop]','[%s][queues][musiconholdstop]\x20name:%s\x20mohtime:%s','lodash','util','./utils','info','format','[%s][queues][writeDB]\x20channel:%s\x20queue:%s\x20lastAssignedTo:%s\x20calleridnum:%s\x20accountcode:%s\x20queuecallerexitreason:%s','channel','queue','calleridnum','accountcode','queuecallerexitreason','getVoiceQueueByName','type','request','CreateVoiceQueueReport','transfereduniqueid','uniqueid','queuecallerjoin','[%s][queues][queuecallerjoin]','[%s][queues][queuecallerjoin]\x20name:%s\x20position:%s','position','now','error','hangup','isNil','queuecallerleaveAt','queuecallerabandon','queuecallerexit','queuecallercomplete','queuecallercompleteAt','[%s][queues][hangup]\x20name:%s\x20queuecallerexitreason:%s','name','queuecallerenterreason','[%s][queues][hangup]','debug','[%s][queues][varset]','variable','queuestatus','toUpperCase','CONTINUE','queuecallerabandonAt','queuecallerexitAt','[%s][queues][varset]\x20name:%s\x20variable:queuestatus\x20value:%s\x20queuecallerexitreason:%s','value','queueposition','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','connectedlinenum','holdtime','diffTime','count','connectedlinename','agentconnect','[%s][queues][agentconnect]','membername','destaccountcode','assigned','lastAssignedTo','agentcomplete','transfer','TRANSFER','reason','[%s][queues][agentcomplete]\x20name:%s\x20agent:%s\x20queuecallerexitreason:%s','[%s][queues][agentcomplete]','blindtransfer','transfereeuniqueid','[%s][queues][blindtransfer]','transfertype','BLIND','transferexten','extension','transferuniqueid','BLINDTRANSFER'];(function(_0x488ea4,_0x38a6f0){var _0x4d399e=function(_0x255af5){while(--_0x255af5){_0x488ea4['push'](_0x488ea4['shift']());}};_0x4d399e(++_0x38a6f0);}(_0xbd8f,0xed));var _0xfbd8=function(_0x232cbf,_0x3e2f33){_0x232cbf=_0x232cbf-0x0;var _0x1cd460=_0xbd8f[_0x232cbf];return _0x1cd460;};'use strict';var _=require(_0xfbd8('0x0'));var util=require(_0xfbd8('0x1'));var utils=require(_0xfbd8('0x2'));var queues={};function writeDB(_0x48ce10){utils[_0xfbd8('0x3')](util[_0xfbd8('0x4')](_0xfbd8('0x5'),_0x48ce10['uniqueid'],_0x48ce10[_0xfbd8('0x6')],_0x48ce10[_0xfbd8('0x7')],_0x48ce10['lastAssignedTo'],_0x48ce10[_0xfbd8('0x8')],_0x48ce10[_0xfbd8('0x9')],_0x48ce10[_0xfbd8('0xa')]));if(_0x48ce10['queue']){utils[_0xfbd8('0xb')](_0x48ce10['queue'])['then'](function(_0xd22cf0){if(_0xd22cf0){_0x48ce10[_0xfbd8('0xc')]=_0xd22cf0[_0xfbd8('0xc')];}utils[_0xfbd8('0xd')](_0xfbd8('0xe'),_0x48ce10);});}else{utils[_0xfbd8('0xd')](_0xfbd8('0xe'),_0x48ce10);}if(_0x48ce10[_0xfbd8('0xf')]){delete queues[_0x48ce10[_0xfbd8('0xf')]];}else{delete queues[_0x48ce10[_0xfbd8('0x10')]];}}exports[_0xfbd8('0x11')]=function(_0x522ff9){try{utils['debug'](util[_0xfbd8('0x4')](_0xfbd8('0x12'),_0x522ff9[_0xfbd8('0x10')]),_0x522ff9);utils[_0xfbd8('0x3')](util[_0xfbd8('0x4')](_0xfbd8('0x13'),_0x522ff9[_0xfbd8('0x10')],_0x522ff9[_0xfbd8('0x7')],_0x522ff9['position']));queues[_0x522ff9['uniqueid']]=_['assign'](_0x522ff9,{'originalposition':_0x522ff9[_0xfbd8('0x14')],'queuecallerjoinAt':utils[_0xfbd8('0x15')](),'mohtime':0x0});}catch(_0x1e6d2){utils[_0xfbd8('0x16')](util[_0xfbd8('0x4')](_0xfbd8('0x12'),_0x522ff9[_0xfbd8('0x10')]),_0x1e6d2);}};exports[_0xfbd8('0x17')]=function(_0x1d6262){try{if(!_[_0xfbd8('0x18')](queues[_0x1d6262[_0xfbd8('0x10')]])){utils['debug'](util[_0xfbd8('0x4')]('[%s][queues][hangup]',_0x1d6262[_0xfbd8('0x10')]),_0x1d6262);if(queues[_0x1d6262[_0xfbd8('0x10')]][_0xfbd8('0x19')]){if(!queues[_0x1d6262['uniqueid']][_0xfbd8('0x1a')]&&!queues[_0x1d6262[_0xfbd8('0x10')]][_0xfbd8('0x1b')]){queues[_0x1d6262[_0xfbd8('0x10')]][_0xfbd8('0x1c')]=!![];queues[_0x1d6262[_0xfbd8('0x10')]][_0xfbd8('0x1d')]=utils[_0xfbd8('0x15')]();queues[_0x1d6262[_0xfbd8('0x10')]][_0xfbd8('0xa')]='COMPLETEDBYAGENT';}utils[_0xfbd8('0x3')](util['format'](_0xfbd8('0x1e'),_0x1d6262[_0xfbd8('0x10')],queues[_0x1d6262[_0xfbd8('0x10')]][_0xfbd8('0x1f')],queues[_0x1d6262[_0xfbd8('0x10')]][_0xfbd8('0xa')]));writeDB(queues[_0x1d6262[_0xfbd8('0x10')]]);}else if(queues[_0x1d6262['uniqueid']][_0xfbd8('0xf')]){utils['info'](util[_0xfbd8('0x4')]('[%s][queues][hangup]\x20name:%s\x20transfereduniqueid:%s',_0x1d6262[_0xfbd8('0x10')],queues[_0x1d6262[_0xfbd8('0x10')]]['name'],queues[_0x1d6262[_0xfbd8('0x10')]][_0xfbd8('0xf')]));queues[queues[_0x1d6262[_0xfbd8('0x10')]][_0xfbd8('0xf')]]=queues[_0x1d6262['uniqueid']];queues[queues[_0x1d6262[_0xfbd8('0x10')]][_0xfbd8('0xf')]][_0xfbd8('0x20')]=0x2;delete queues[_0x1d6262[_0xfbd8('0x10')]];}}}catch(_0x317e20){utils['error'](util[_0xfbd8('0x4')](_0xfbd8('0x21'),_0x1d6262[_0xfbd8('0x10')]),_0x317e20);}};exports['varset']=function(_0x422ebb){try{utils[_0xfbd8('0x22')](util[_0xfbd8('0x4')](_0xfbd8('0x23'),_0x422ebb['uniqueid']),_0x422ebb);if(!_[_0xfbd8('0x18')](_0x422ebb[_0xfbd8('0x24')][_0xfbd8('0x25')])&&_0x422ebb['value'][_0xfbd8('0x26')]()!==_0xfbd8('0x27')){if(!_[_0xfbd8('0x18')](queues[_0x422ebb[_0xfbd8('0x10')]])){queues[_0x422ebb[_0xfbd8('0x10')]]['queuecallerabandon']=![];queues[_0x422ebb[_0xfbd8('0x10')]][_0xfbd8('0x28')]=null;queues[_0x422ebb[_0xfbd8('0x10')]][_0xfbd8('0x1b')]=!![];queues[_0x422ebb[_0xfbd8('0x10')]][_0xfbd8('0x29')]=utils[_0xfbd8('0x15')]();queues[_0x422ebb[_0xfbd8('0x10')]]['queuecallerexitreason']=_0x422ebb['value'][_0xfbd8('0x26')]();utils[_0xfbd8('0x3')](util['format'](_0xfbd8('0x2a'),_0x422ebb[_0xfbd8('0x10')],queues[_0x422ebb[_0xfbd8('0x10')]][_0xfbd8('0x1f')],_0x422ebb[_0xfbd8('0x2b')],queues[_0x422ebb[_0xfbd8('0x10')]][_0xfbd8('0xa')]));writeDB(queues[_0x422ebb[_0xfbd8('0x10')]]);}}else if(!_['isNil'](_0x422ebb[_0xfbd8('0x24')][_0xfbd8('0x2c')])){if(!_[_0xfbd8('0x18')](queues[_0x422ebb['uniqueid']])&&!queues[_0x422ebb[_0xfbd8('0x10')]]['queuecallerabandon']){queues[_0x422ebb[_0xfbd8('0x10')]][_0xfbd8('0x1a')]=![];queues[_0x422ebb[_0xfbd8('0x10')]]['queuecallerabandonAt']=null;queues[_0x422ebb[_0xfbd8('0x10')]][_0xfbd8('0x1b')]=!![];queues[_0x422ebb[_0xfbd8('0x10')]][_0xfbd8('0x29')]=utils[_0xfbd8('0x15')]();queues[_0x422ebb[_0xfbd8('0x10')]][_0xfbd8('0xa')]=_0xfbd8('0x2d');utils['info'](util[_0xfbd8('0x4')](_0xfbd8('0x2e'),_0x422ebb[_0xfbd8('0x10')],queues[_0x422ebb[_0xfbd8('0x10')]][_0xfbd8('0x1f')],_0x422ebb[_0xfbd8('0x2b')],queues[_0x422ebb[_0xfbd8('0x10')]][_0xfbd8('0xa')]));}}}catch(_0x19e9f2){utils[_0xfbd8('0x16')](util[_0xfbd8('0x4')](_0xfbd8('0x23'),_0x422ebb['uniqueid']),_0x19e9f2);}};exports[_0xfbd8('0x1a')]=function(_0x22c266){try{if(!_['isNil'](queues[_0x22c266[_0xfbd8('0x10')]])){utils['debug'](util[_0xfbd8('0x4')](_0xfbd8('0x2f'),_0x22c266[_0xfbd8('0x10')]),_0x22c266);queues[_0x22c266[_0xfbd8('0x10')]]['queuecallerexit']=![];queues[_0x22c266[_0xfbd8('0x10')]][_0xfbd8('0x29')]=null;queues[_0x22c266[_0xfbd8('0x10')]]['queuecallerabandon']=!![];queues[_0x22c266[_0xfbd8('0x10')]][_0xfbd8('0x28')]=utils[_0xfbd8('0x15')]();queues[_0x22c266[_0xfbd8('0x10')]]['queuecallerexitreason']='ABANDONED';utils[_0xfbd8('0x3')](util[_0xfbd8('0x4')](_0xfbd8('0x30'),_0x22c266[_0xfbd8('0x10')],queues[_0x22c266[_0xfbd8('0x10')]]['name'],queues[_0x22c266[_0xfbd8('0x10')]]['queuecallerexitreason']));}}catch(_0x2c8130){utils[_0xfbd8('0x16')](util['format'](_0xfbd8('0x2f'),_0x22c266['uniqueid']),_0x2c8130);}};exports[_0xfbd8('0x31')]=function(_0x31ef0f){try{if(!_[_0xfbd8('0x18')](queues[_0x31ef0f[_0xfbd8('0x10')]])){utils['debug'](util[_0xfbd8('0x4')](_0xfbd8('0x32'),_0x31ef0f[_0xfbd8('0x10')]),_0x31ef0f);utils['info'](util[_0xfbd8('0x4')](_0xfbd8('0x33'),_0x31ef0f[_0xfbd8('0x10')],queues[_0x31ef0f['uniqueid']][_0xfbd8('0x1f')],_0x31ef0f[_0xfbd8('0x34')],_0x31ef0f['connectedlinename']));queues[_0x31ef0f[_0xfbd8('0x10')]][_0xfbd8('0x31')]=!![];queues[_0x31ef0f[_0xfbd8('0x10')]]['queuecallerleaveAt']=utils['now']();queues[_0x31ef0f[_0xfbd8('0x10')]][_0xfbd8('0x35')]=utils[_0xfbd8('0x36')](queues[_0x31ef0f['uniqueid']][_0xfbd8('0x19')],queues[_0x31ef0f[_0xfbd8('0x10')]]['queuecallerjoinAt']);queues[_0x31ef0f['uniqueid']][_0xfbd8('0x14')]=_0x31ef0f[_0xfbd8('0x14')];queues[_0x31ef0f[_0xfbd8('0x10')]][_0xfbd8('0x37')]=_0x31ef0f[_0xfbd8('0x37')];queues[_0x31ef0f['uniqueid']]['connectedlinenum']=_0x31ef0f['connectedlinenum'];queues[_0x31ef0f[_0xfbd8('0x10')]][_0xfbd8('0x38')]=_0x31ef0f['connectedlinename'];}}catch(_0x20f59e){utils[_0xfbd8('0x16')](util[_0xfbd8('0x4')]('[%s][queues][queuecallerleave]',_0x31ef0f[_0xfbd8('0x10')]),_0x20f59e);}};exports[_0xfbd8('0x39')]=function(_0xcb389f){try{if(!_[_0xfbd8('0x18')](queues[_0xcb389f[_0xfbd8('0x10')]])){utils[_0xfbd8('0x22')](util[_0xfbd8('0x4')](_0xfbd8('0x3a'),_0xcb389f[_0xfbd8('0x10')]),_0xcb389f);utils[_0xfbd8('0x3')](util[_0xfbd8('0x4')]('[%s][queues][agentconnect]\x20name:%s\x20agent:%s\x20accountcode:%s',_0xcb389f[_0xfbd8('0x10')],queues[_0xcb389f[_0xfbd8('0x10')]]['name'],_0xcb389f[_0xfbd8('0x3b')],_0xcb389f[_0xfbd8('0x3c')]));queues[_0xcb389f[_0xfbd8('0x10')]][_0xfbd8('0x1a')]=![];queues[_0xcb389f[_0xfbd8('0x10')]]['queuecallerabandon']=![];queues[_0xcb389f[_0xfbd8('0x10')]][_0xfbd8('0x28')]=null;queues[_0xcb389f['uniqueid']][_0xfbd8('0x1b')]=![];queues[_0xcb389f[_0xfbd8('0x10')]][_0xfbd8('0xa')]=null;queues[_0xcb389f[_0xfbd8('0x10')]]['queuecallerexitAt']=null;queues[_0xcb389f['uniqueid']][_0xfbd8('0x3d')]=!![];queues[_0xcb389f[_0xfbd8('0x10')]][_0xfbd8('0x9')]=_0xcb389f[_0xfbd8('0x3c')];queues[_0xcb389f[_0xfbd8('0x10')]][_0xfbd8('0x3e')]=_0xcb389f[_0xfbd8('0x3b')];}}catch(_0x129d12){utils[_0xfbd8('0x16')](util[_0xfbd8('0x4')]('[%s][queues][agentconnect]',_0xcb389f[_0xfbd8('0x10')]),_0x129d12);}};exports[_0xfbd8('0x3f')]=function(_0x4c9253){try{if(!_['isNil'](queues[_0x4c9253[_0xfbd8('0x10')]])){if(queues[_0x4c9253[_0xfbd8('0x10')]]['queuecallerleaveAt']){utils[_0xfbd8('0x22')](util[_0xfbd8('0x4')]('[%s][queues][agentcomplete]',_0x4c9253[_0xfbd8('0x10')]),_0x4c9253);queues[_0x4c9253[_0xfbd8('0x10')]][_0xfbd8('0x1a')]=![];queues[_0x4c9253['uniqueid']][_0xfbd8('0x1a')]=![];queues[_0x4c9253[_0xfbd8('0x10')]][_0xfbd8('0x28')]=null;queues[_0x4c9253['uniqueid']][_0xfbd8('0x1b')]=![];queues[_0x4c9253['uniqueid']]['queuecallerexitAt']=null;queues[_0x4c9253[_0xfbd8('0x10')]][_0xfbd8('0x3d')]=!![];queues[_0x4c9253[_0xfbd8('0x10')]][_0xfbd8('0x3e')]=_0x4c9253[_0xfbd8('0x3b')];queues[_0x4c9253['uniqueid']]['queuecallercomplete']=!![];queues[_0x4c9253[_0xfbd8('0x10')]][_0xfbd8('0x1d')]=utils[_0xfbd8('0x15')]();if(_0x4c9253['reason']==_0xfbd8('0x40')){if(!queues[_0x4c9253['uniqueid']]['transfer']){queues[_0x4c9253[_0xfbd8('0x10')]][_0xfbd8('0xa')]=_0xfbd8('0x41');}}else{queues[_0x4c9253[_0xfbd8('0x10')]][_0xfbd8('0xa')]='COMPLETEDBY'+_0x4c9253[_0xfbd8('0x42')][_0xfbd8('0x26')]();}utils['info'](util[_0xfbd8('0x4')](_0xfbd8('0x43'),_0x4c9253['uniqueid'],queues[_0x4c9253[_0xfbd8('0x10')]][_0xfbd8('0x1f')],_0x4c9253[_0xfbd8('0x3b')],queues[_0x4c9253[_0xfbd8('0x10')]][_0xfbd8('0xa')]));writeDB(queues[_0x4c9253[_0xfbd8('0x10')]]);}}}catch(_0x4f56ee){utils[_0xfbd8('0x16')](util[_0xfbd8('0x4')](_0xfbd8('0x44'),_0x4c9253['uniqueid']),_0x4f56ee);}};exports[_0xfbd8('0x45')]=function(_0x57ee92){try{if(!_['isNil'](queues[_0x57ee92[_0xfbd8('0x46')]])){utils['debug'](util[_0xfbd8('0x4')](_0xfbd8('0x47'),_0x57ee92['uniqueid']),_0x57ee92);queues[_0x57ee92['transfereeuniqueid']][_0xfbd8('0x40')]=!![];queues[_0x57ee92[_0xfbd8('0x46')]][_0xfbd8('0x48')]=_0xfbd8('0x49');queues[_0x57ee92['transfereeuniqueid']][_0xfbd8('0x4a')]=_0x57ee92[_0xfbd8('0x4b')];queues[_0x57ee92[_0xfbd8('0x46')]][_0xfbd8('0x4c')]=_0x57ee92[_0xfbd8('0x46')];queues[_0x57ee92[_0xfbd8('0x46')]][_0xfbd8('0xa')]=_0xfbd8('0x4d');utils['info'](util[_0xfbd8('0x4')](_0xfbd8('0x4e'),_0x57ee92[_0xfbd8('0x10')],queues[_0x57ee92['transfereeuniqueid']][_0xfbd8('0x1f')],_0x57ee92[_0xfbd8('0x46')],_0x57ee92[_0xfbd8('0x4b')]));}}catch(_0x28c037){utils[_0xfbd8('0x16')](util[_0xfbd8('0x4')](_0xfbd8('0x47'),_0x57ee92[_0xfbd8('0x10')]),_0x28c037);}};exports[_0xfbd8('0x4f')]=function(_0x46a9e7){try{utils[_0xfbd8('0x22')](util[_0xfbd8('0x4')](_0xfbd8('0x50'),_0x46a9e7[_0xfbd8('0x51')]),_0x46a9e7);if(_0x46a9e7[_0xfbd8('0x51')]==_0x46a9e7[_0xfbd8('0x52')]){if(!_[_0xfbd8('0x18')](queues[_0x46a9e7[_0xfbd8('0x53')]])){utils[_0xfbd8('0x3')](util[_0xfbd8('0x4')](_0xfbd8('0x54'),_0x46a9e7['origtransfereruniqueid'],queues[_0x46a9e7[_0xfbd8('0x53')]][_0xfbd8('0x1f')],_0x46a9e7['origtransfererexten']));queues[_0x46a9e7['secondtransfererlinkedid']]['transfer']=!![];queues[_0x46a9e7[_0xfbd8('0x53')]][_0xfbd8('0x48')]='ATTENDED';queues[_0x46a9e7[_0xfbd8('0x53')]][_0xfbd8('0x4a')]=_0x46a9e7[_0xfbd8('0x55')];queues[_0x46a9e7[_0xfbd8('0x53')]][_0xfbd8('0x4c')]=_0x46a9e7[_0xfbd8('0x51')];queues[_0x46a9e7[_0xfbd8('0x53')]]['queuecallerexitreason']=_0xfbd8('0x56');}if(!_['isNil'](queues[_0x46a9e7[_0xfbd8('0x52')]])){if(_0x46a9e7[_0xfbd8('0x57')]&&queues[_0x46a9e7[_0xfbd8('0x57')]]){queues[_0x46a9e7[_0xfbd8('0x57')]][_0xfbd8('0x20')]=0x1;queues[_0x46a9e7[_0xfbd8('0x46')]]=_[_0xfbd8('0x58')](queues[_0x46a9e7[_0xfbd8('0x57')]]);queues[_0x46a9e7['transfereeuniqueid']][_0xfbd8('0xf')]=_0x46a9e7[_0xfbd8('0x59')];queues[_0x46a9e7[_0xfbd8('0x46')]][_0xfbd8('0x20')]=0x2;queues[_0x46a9e7[_0xfbd8('0x46')]][_0xfbd8('0x8')]=queues[_0x46a9e7['secondtransfererlinkedid']][_0xfbd8('0x8')];queues[_0x46a9e7['transfereeuniqueid']][_0xfbd8('0x5a')]=queues[_0x46a9e7['secondtransfererlinkedid']]['calleridname'];queues[_0x46a9e7[_0xfbd8('0x46')]][_0xfbd8('0x5b')]=utils[_0xfbd8('0x15')]();queues[_0x46a9e7['transfereeuniqueid']][_0xfbd8('0x19')]=utils[_0xfbd8('0x15')]();queues[_0x46a9e7[_0xfbd8('0x46')]][_0xfbd8('0x35')]=0x0;queues[_0x46a9e7[_0xfbd8('0x46')]][_0xfbd8('0x5c')]=0x0;utils[_0xfbd8('0x3')](util[_0xfbd8('0x4')]('[%s][queues][attendedtransfer]\x20name:%s\x20calleridnum:%s\x20calleridname:%s',_0x46a9e7['origtransfereruniqueid'],queues[_0x46a9e7[_0xfbd8('0x46')]][_0xfbd8('0x1f')],queues[_0x46a9e7['transfereeuniqueid']]['calleridnum'],queues[_0x46a9e7['transfereeuniqueid']][_0xfbd8('0x5a')]));}else{utils[_0xfbd8('0x3')](util[_0xfbd8('0x4')]('[%s][queues][attendedtransfer]\x20name:%s\x20transfereduniqueid:%s',_0x46a9e7[_0xfbd8('0x51')],queues[_0x46a9e7[_0xfbd8('0x52')]]['name'],_0x46a9e7[_0xfbd8('0x53')]));queues[_0x46a9e7['origtransfererlinkedid']]['transfereduniqueid']=_0x46a9e7[_0xfbd8('0x53')];}}}else if(_0x46a9e7['secondtransfereruniqueid']==_0x46a9e7[_0xfbd8('0x53')]){if(!_[_0xfbd8('0x18')](queues[_0x46a9e7['origtransfererlinkedid']])){utils[_0xfbd8('0x3')](util[_0xfbd8('0x4')](_0xfbd8('0x5d'),_0x46a9e7[_0xfbd8('0x51')],queues[_0x46a9e7['origtransfererlinkedid']]['name'],_0x46a9e7[_0xfbd8('0x5e')],_0x46a9e7['secondtransfererexten']));queues[_0x46a9e7['origtransfererlinkedid']][_0xfbd8('0x40')]=!![];queues[_0x46a9e7[_0xfbd8('0x52')]][_0xfbd8('0x48')]='ATTENDED';queues[_0x46a9e7[_0xfbd8('0x52')]][_0xfbd8('0x4a')]=_0x46a9e7[_0xfbd8('0x5f')];queues[_0x46a9e7[_0xfbd8('0x52')]]['transferuniqueid']=_0x46a9e7['secondtransfereruniqueid'];queues[_0x46a9e7[_0xfbd8('0x52')]][_0xfbd8('0xa')]=_0xfbd8('0x56');}if(!_[_0xfbd8('0x18')](queues[_0x46a9e7[_0xfbd8('0x53')]])){if(_0x46a9e7[_0xfbd8('0x60')]&&queues[_0x46a9e7[_0xfbd8('0x60')]]){queues[_0x46a9e7['transfertargetlinkedid']][_0xfbd8('0x20')]=0x1;queues[_0x46a9e7[_0xfbd8('0x59')]]=_[_0xfbd8('0x58')](queues[_0x46a9e7[_0xfbd8('0x60')]]);queues[_0x46a9e7[_0xfbd8('0x59')]][_0xfbd8('0xf')]=_0x46a9e7[_0xfbd8('0x59')];queues[_0x46a9e7[_0xfbd8('0x59')]]['queuecallerenterreason']=0x2;queues[_0x46a9e7[_0xfbd8('0x59')]][_0xfbd8('0x8')]=queues[_0x46a9e7[_0xfbd8('0x52')]][_0xfbd8('0x8')];queues[_0x46a9e7[_0xfbd8('0x59')]]['calleridname']=queues[_0x46a9e7['origtransfererlinkedid']][_0xfbd8('0x5a')];queues[_0x46a9e7[_0xfbd8('0x59')]][_0xfbd8('0x5b')]=utils[_0xfbd8('0x15')]();queues[_0x46a9e7[_0xfbd8('0x59')]]['queuecallerleaveAt']=utils[_0xfbd8('0x15')]();queues[_0x46a9e7['transfertargetuniqueid']][_0xfbd8('0x35')]=0x0;queues[_0x46a9e7['transfertargetuniqueid']][_0xfbd8('0x5c')]=0x0;utils['info'](util[_0xfbd8('0x4')](_0xfbd8('0x61'),_0x46a9e7[_0xfbd8('0x51')],queues[_0x46a9e7[_0xfbd8('0x59')]][_0xfbd8('0x1f')],queues[_0x46a9e7[_0xfbd8('0x59')]][_0xfbd8('0xf')],queues[_0x46a9e7[_0xfbd8('0x59')]][_0xfbd8('0x8')],queues[_0x46a9e7[_0xfbd8('0x59')]][_0xfbd8('0x5a')]));}else{utils['info'](util[_0xfbd8('0x4')](_0xfbd8('0x62'),_0x46a9e7['origtransfereruniqueid'],queues[_0x46a9e7[_0xfbd8('0x53')]][_0xfbd8('0x1f')],_0x46a9e7['origtransfererlinkedid']));queues[_0x46a9e7[_0xfbd8('0x53')]][_0xfbd8('0xf')]=_0x46a9e7[_0xfbd8('0x52')];}}}}catch(_0x25852a){utils['error'](util['format'](_0xfbd8('0x50'),_0x46a9e7[_0xfbd8('0x51')]),_0x25852a);}};exports['musiconholdstart']=function(_0x422a5d){try{if(!_[_0xfbd8('0x18')](queues[_0x422a5d[_0xfbd8('0x10')]])){utils[_0xfbd8('0x22')](util[_0xfbd8('0x4')]('[%s][queues][musiconholdstart]',_0x422a5d[_0xfbd8('0x10')]),_0x422a5d);queues[_0x422a5d['uniqueid']][_0xfbd8('0x63')]=utils[_0xfbd8('0x15')]();utils[_0xfbd8('0x3')](util[_0xfbd8('0x4')](_0xfbd8('0x64'),_0x422a5d[_0xfbd8('0x10')],queues[_0x422a5d['uniqueid']]['name'],queues[_0x422a5d[_0xfbd8('0x10')]]['musiconholdstartAt']));}}catch(_0x291f4c){utils['error'](util[_0xfbd8('0x4')](_0xfbd8('0x65'),_0x422a5d['uniqueid']),_0x291f4c);}};exports[_0xfbd8('0x66')]=function(_0x114518){try{if(!_['isNil'](queues[_0x114518[_0xfbd8('0x10')]])){if(!_[_0xfbd8('0x18')](queues[_0x114518[_0xfbd8('0x10')]]['musiconholdstartAt'])){utils[_0xfbd8('0x22')](util[_0xfbd8('0x4')](_0xfbd8('0x67'),_0x114518[_0xfbd8('0x10')]),_0x114518);queues[_0x114518[_0xfbd8('0x10')]][_0xfbd8('0x5c')]+=utils[_0xfbd8('0x36')](utils[_0xfbd8('0x15')](),queues[_0x114518[_0xfbd8('0x10')]][_0xfbd8('0x63')]);utils[_0xfbd8('0x3')](util['format'](_0xfbd8('0x68'),_0x114518[_0xfbd8('0x10')],queues[_0x114518['uniqueid']]['name'],queues[_0x114518[_0xfbd8('0x10')]][_0xfbd8('0x5c')]));delete queues[_0x114518['uniqueid']][_0xfbd8('0x63')];}}}catch(_0xa4d897){utils[_0xfbd8('0x16')](util[_0xfbd8('0x4')]('[%s][queues][musiconholdstop]',_0x114518[_0xfbd8('0x10')]),_0xa4d897);}};
\ No newline at end of file
+var _0x5126=['secondtransfererexten','transfertargetlinkedid','[%s][queues][attendedtransfer]\x20name:%s\x20transfereduniqueid:%s\x20calleridnum:%s\x20calleridname:%s','musiconholdstart','[%s][queues][musiconholdstart]','musiconholdstartAt','[%s][queues][musiconholdstop]\x20name:%s\x20musiconholdstartAt:%s','musiconholdstop','[%s][queues][musiconholdstop]','lodash','util','info','format','[%s][queues][writeDB]\x20channel:%s\x20queue:%s\x20lastAssignedTo:%s\x20calleridnum:%s\x20accountcode:%s\x20queuecallerexitreason:%s','uniqueid','channel','queue','queuecallerexitreason','getVoiceQueueByName','then','request','CreateVoiceQueueReport','transfereduniqueid','queuecallerjoin','debug','[%s][queues][queuecallerjoin]','assign','now','hangup','queuecallerleaveAt','queuecallerabandon','queuecallerexit','queuecallercompleteAt','COMPLETEDBYAGENT','[%s][queues][hangup]\x20name:%s\x20queuecallerexitreason:%s','[%s][queues][hangup]\x20name:%s\x20transfereduniqueid:%s','name','queuecallerenterreason','error','varset','[%s][queues][varset]','isNil','variable','queuestatus','value','CONTINUE','toUpperCase','[%s][queues][varset]\x20name:%s\x20variable:queuestatus\x20value:%s\x20queuecallerexitreason:%s','queueposition','queuecallerexitAt','ABANDONED','[%s][queues][queuecallerabandon]\x20name:%s\x20queuecallerexitreason:%s','queuecallerleave','[%s][queues][queuecallerleave]','[%s][queues][queuecallerleave]\x20name:%s\x20connectedlinenum:%s\x20connectedlinename:%s','connectedlinename','holdtime','diffTime','queuecallerjoinAt','position','count','connectedlinenum','agentconnect','[%s][queues][agentconnect]','membername','destaccountcode','lastAssignedTo','agentcomplete','[%s][queues][agentcomplete]','queuecallerabandonAt','assigned','reason','transfer','TRANSFER','COMPLETEDBY','[%s][queues][agentcomplete]\x20name:%s\x20agent:%s\x20queuecallerexitreason:%s','transfereeuniqueid','transfertype','BLIND','transferuniqueid','BLINDTRANSFER','[%s][queues][blindtransfer]','attendedtransfer','[%s][queues][attendedtransfer]','origtransfereruniqueid','origtransfererlinkedid','secondtransfererlinkedid','[%s][queues][attendedtransfer]\x20name:%s\x20transferexten:%s\x20queuecallerexitreason:ATTENDEDTRANSFER','ATTENDED','transferexten','ATTENDEDTRANSFER','transfereelinkedid','transfertargetuniqueid','calleridnum','calleridname','mohtime','[%s][queues][attendedtransfer]\x20name:%s\x20transfereduniqueid:%s','secondtransfereruniqueid'];(function(_0x2e2cd7,_0x4860e6){var _0x37d88f=function(_0x58eafa){while(--_0x58eafa){_0x2e2cd7['push'](_0x2e2cd7['shift']());}};_0x37d88f(++_0x4860e6);}(_0x5126,0xcd));var _0x6512=function(_0x1df19b,_0x594d7b){_0x1df19b=_0x1df19b-0x0;var _0x47f96a=_0x5126[_0x1df19b];return _0x47f96a;};'use strict';var _=require(_0x6512('0x0'));var util=require(_0x6512('0x1'));var utils=require('./utils');var queues={};function writeDB(_0xd2fe25){utils[_0x6512('0x2')](util[_0x6512('0x3')](_0x6512('0x4'),_0xd2fe25[_0x6512('0x5')],_0xd2fe25[_0x6512('0x6')],_0xd2fe25[_0x6512('0x7')],_0xd2fe25['lastAssignedTo'],_0xd2fe25['calleridnum'],_0xd2fe25['accountcode'],_0xd2fe25[_0x6512('0x8')]));if(_0xd2fe25[_0x6512('0x7')]){utils[_0x6512('0x9')](_0xd2fe25[_0x6512('0x7')])[_0x6512('0xa')](function(_0x5dd3ca){if(_0x5dd3ca){_0xd2fe25['type']=_0x5dd3ca['type'];}utils[_0x6512('0xb')](_0x6512('0xc'),_0xd2fe25);});}else{utils[_0x6512('0xb')](_0x6512('0xc'),_0xd2fe25);}if(_0xd2fe25[_0x6512('0xd')]){delete queues[_0xd2fe25[_0x6512('0xd')]];}else{delete queues[_0xd2fe25[_0x6512('0x5')]];}}exports[_0x6512('0xe')]=function(_0x3169b5){try{utils[_0x6512('0xf')](util[_0x6512('0x3')](_0x6512('0x10'),_0x3169b5['uniqueid']),_0x3169b5);utils[_0x6512('0x2')](util['format']('[%s][queues][queuecallerjoin]\x20name:%s\x20position:%s',_0x3169b5[_0x6512('0x5')],_0x3169b5['queue'],_0x3169b5['position']));queues[_0x3169b5[_0x6512('0x5')]]=_[_0x6512('0x11')](_0x3169b5,{'originalposition':_0x3169b5['position'],'queuecallerjoinAt':utils[_0x6512('0x12')](),'mohtime':0x0});}catch(_0x4cb47f){utils['error'](util[_0x6512('0x3')]('[%s][queues][queuecallerjoin]',_0x3169b5['uniqueid']),_0x4cb47f);}};exports[_0x6512('0x13')]=function(_0x486394){try{if(!_['isNil'](queues[_0x486394[_0x6512('0x5')]])){utils[_0x6512('0xf')](util[_0x6512('0x3')]('[%s][queues][hangup]',_0x486394[_0x6512('0x5')]),_0x486394);if(queues[_0x486394['uniqueid']][_0x6512('0x14')]){if(!queues[_0x486394['uniqueid']][_0x6512('0x15')]&&!queues[_0x486394[_0x6512('0x5')]][_0x6512('0x16')]){queues[_0x486394['uniqueid']]['queuecallercomplete']=!![];queues[_0x486394[_0x6512('0x5')]][_0x6512('0x17')]=utils[_0x6512('0x12')]();queues[_0x486394[_0x6512('0x5')]][_0x6512('0x8')]=_0x6512('0x18');}utils[_0x6512('0x2')](util[_0x6512('0x3')](_0x6512('0x19'),_0x486394[_0x6512('0x5')],queues[_0x486394[_0x6512('0x5')]]['name'],queues[_0x486394[_0x6512('0x5')]]['queuecallerexitreason']));writeDB(queues[_0x486394['uniqueid']]);}else if(queues[_0x486394[_0x6512('0x5')]][_0x6512('0xd')]){utils['info'](util['format'](_0x6512('0x1a'),_0x486394[_0x6512('0x5')],queues[_0x486394[_0x6512('0x5')]][_0x6512('0x1b')],queues[_0x486394[_0x6512('0x5')]][_0x6512('0xd')]));queues[queues[_0x486394['uniqueid']][_0x6512('0xd')]]=queues[_0x486394[_0x6512('0x5')]];queues[queues[_0x486394[_0x6512('0x5')]][_0x6512('0xd')]][_0x6512('0x1c')]=0x2;delete queues[_0x486394[_0x6512('0x5')]];}}}catch(_0x2a5cdf){utils[_0x6512('0x1d')](util[_0x6512('0x3')]('[%s][queues][hangup]',_0x486394[_0x6512('0x5')]),_0x2a5cdf);}};exports[_0x6512('0x1e')]=function(_0x2abb66){try{utils['debug'](util['format'](_0x6512('0x1f'),_0x2abb66[_0x6512('0x5')]),_0x2abb66);if(!_[_0x6512('0x20')](_0x2abb66[_0x6512('0x21')][_0x6512('0x22')])&&_0x2abb66[_0x6512('0x23')]['toUpperCase']()!==_0x6512('0x24')){if(!_[_0x6512('0x20')](queues[_0x2abb66[_0x6512('0x5')]])){queues[_0x2abb66['uniqueid']]['queuecallerabandon']=![];queues[_0x2abb66[_0x6512('0x5')]]['queuecallerabandonAt']=null;queues[_0x2abb66[_0x6512('0x5')]][_0x6512('0x16')]=!![];queues[_0x2abb66['uniqueid']]['queuecallerexitAt']=utils[_0x6512('0x12')]();queues[_0x2abb66[_0x6512('0x5')]]['queuecallerexitreason']=_0x2abb66['value'][_0x6512('0x25')]();utils['info'](util[_0x6512('0x3')](_0x6512('0x26'),_0x2abb66[_0x6512('0x5')],queues[_0x2abb66['uniqueid']]['name'],_0x2abb66[_0x6512('0x23')],queues[_0x2abb66[_0x6512('0x5')]][_0x6512('0x8')]));writeDB(queues[_0x2abb66[_0x6512('0x5')]]);}}else if(!_[_0x6512('0x20')](_0x2abb66[_0x6512('0x21')][_0x6512('0x27')])){if(!_[_0x6512('0x20')](queues[_0x2abb66[_0x6512('0x5')]])&&!queues[_0x2abb66['uniqueid']][_0x6512('0x15')]){queues[_0x2abb66[_0x6512('0x5')]][_0x6512('0x15')]=![];queues[_0x2abb66[_0x6512('0x5')]]['queuecallerabandonAt']=null;queues[_0x2abb66['uniqueid']][_0x6512('0x16')]=!![];queues[_0x2abb66[_0x6512('0x5')]][_0x6512('0x28')]=utils[_0x6512('0x12')]();queues[_0x2abb66[_0x6512('0x5')]][_0x6512('0x8')]='EXITWITHKEY';utils[_0x6512('0x2')](util['format']('[%s][queues][varset]\x20name:%s\x20variable:queueposition\x20value:%s\x20queuecallerexitreason:%s',_0x2abb66['uniqueid'],queues[_0x2abb66['uniqueid']][_0x6512('0x1b')],_0x2abb66[_0x6512('0x23')],queues[_0x2abb66[_0x6512('0x5')]][_0x6512('0x8')]));}}}catch(_0x59b07e){utils[_0x6512('0x1d')](util[_0x6512('0x3')](_0x6512('0x1f'),_0x2abb66[_0x6512('0x5')]),_0x59b07e);}};exports[_0x6512('0x15')]=function(_0x3434a2){try{if(!_[_0x6512('0x20')](queues[_0x3434a2['uniqueid']])){utils[_0x6512('0xf')](util[_0x6512('0x3')]('[%s][queues][queuecallerabandon]',_0x3434a2['uniqueid']),_0x3434a2);queues[_0x3434a2[_0x6512('0x5')]][_0x6512('0x16')]=![];queues[_0x3434a2[_0x6512('0x5')]]['queuecallerexitAt']=null;queues[_0x3434a2[_0x6512('0x5')]][_0x6512('0x15')]=!![];queues[_0x3434a2[_0x6512('0x5')]]['queuecallerabandonAt']=utils[_0x6512('0x12')]();queues[_0x3434a2[_0x6512('0x5')]]['queuecallerexitreason']=_0x6512('0x29');utils[_0x6512('0x2')](util[_0x6512('0x3')](_0x6512('0x2a'),_0x3434a2[_0x6512('0x5')],queues[_0x3434a2[_0x6512('0x5')]][_0x6512('0x1b')],queues[_0x3434a2['uniqueid']][_0x6512('0x8')]));}}catch(_0x43293a){utils[_0x6512('0x1d')](util[_0x6512('0x3')]('[%s][queues][queuecallerabandon]',_0x3434a2[_0x6512('0x5')]),_0x43293a);}};exports[_0x6512('0x2b')]=function(_0x961f86){try{if(!_[_0x6512('0x20')](queues[_0x961f86['uniqueid']])){utils[_0x6512('0xf')](util['format'](_0x6512('0x2c'),_0x961f86[_0x6512('0x5')]),_0x961f86);utils[_0x6512('0x2')](util[_0x6512('0x3')](_0x6512('0x2d'),_0x961f86[_0x6512('0x5')],queues[_0x961f86['uniqueid']]['name'],_0x961f86['connectedlinenum'],_0x961f86[_0x6512('0x2e')]));queues[_0x961f86[_0x6512('0x5')]][_0x6512('0x2b')]=!![];queues[_0x961f86['uniqueid']][_0x6512('0x14')]=utils[_0x6512('0x12')]();queues[_0x961f86[_0x6512('0x5')]][_0x6512('0x2f')]=utils[_0x6512('0x30')](queues[_0x961f86[_0x6512('0x5')]][_0x6512('0x14')],queues[_0x961f86[_0x6512('0x5')]][_0x6512('0x31')]);queues[_0x961f86[_0x6512('0x5')]][_0x6512('0x32')]=_0x961f86[_0x6512('0x32')];queues[_0x961f86[_0x6512('0x5')]][_0x6512('0x33')]=_0x961f86['count'];queues[_0x961f86[_0x6512('0x5')]][_0x6512('0x34')]=_0x961f86[_0x6512('0x34')];queues[_0x961f86[_0x6512('0x5')]][_0x6512('0x2e')]=_0x961f86[_0x6512('0x2e')];}}catch(_0x5dabbe){utils[_0x6512('0x1d')](util[_0x6512('0x3')](_0x6512('0x2c'),_0x961f86['uniqueid']),_0x5dabbe);}};exports[_0x6512('0x35')]=function(_0x2fdbbb){try{if(!_[_0x6512('0x20')](queues[_0x2fdbbb[_0x6512('0x5')]])){utils['debug'](util['format'](_0x6512('0x36'),_0x2fdbbb['uniqueid']),_0x2fdbbb);utils['info'](util[_0x6512('0x3')]('[%s][queues][agentconnect]\x20name:%s\x20agent:%s\x20accountcode:%s',_0x2fdbbb['uniqueid'],queues[_0x2fdbbb[_0x6512('0x5')]][_0x6512('0x1b')],_0x2fdbbb[_0x6512('0x37')],_0x2fdbbb['destaccountcode']));queues[_0x2fdbbb[_0x6512('0x5')]]['queuecallerabandon']=![];queues[_0x2fdbbb[_0x6512('0x5')]][_0x6512('0x15')]=![];queues[_0x2fdbbb[_0x6512('0x5')]]['queuecallerabandonAt']=null;queues[_0x2fdbbb['uniqueid']]['queuecallerexit']=![];queues[_0x2fdbbb[_0x6512('0x5')]]['queuecallerexitreason']=null;queues[_0x2fdbbb[_0x6512('0x5')]][_0x6512('0x28')]=null;queues[_0x2fdbbb[_0x6512('0x5')]]['assigned']=!![];queues[_0x2fdbbb[_0x6512('0x5')]]['accountcode']=_0x2fdbbb[_0x6512('0x38')];queues[_0x2fdbbb[_0x6512('0x5')]][_0x6512('0x39')]=_0x2fdbbb[_0x6512('0x37')];}}catch(_0x54d49f){utils[_0x6512('0x1d')](util[_0x6512('0x3')]('[%s][queues][agentconnect]',_0x2fdbbb['uniqueid']),_0x54d49f);}};exports[_0x6512('0x3a')]=function(_0x1e9e4c){try{if(!_[_0x6512('0x20')](queues[_0x1e9e4c[_0x6512('0x5')]])){if(queues[_0x1e9e4c[_0x6512('0x5')]][_0x6512('0x14')]){utils['debug'](util[_0x6512('0x3')](_0x6512('0x3b'),_0x1e9e4c[_0x6512('0x5')]),_0x1e9e4c);queues[_0x1e9e4c[_0x6512('0x5')]][_0x6512('0x15')]=![];queues[_0x1e9e4c['uniqueid']]['queuecallerabandon']=![];queues[_0x1e9e4c[_0x6512('0x5')]][_0x6512('0x3c')]=null;queues[_0x1e9e4c[_0x6512('0x5')]][_0x6512('0x16')]=![];queues[_0x1e9e4c[_0x6512('0x5')]][_0x6512('0x28')]=null;queues[_0x1e9e4c[_0x6512('0x5')]][_0x6512('0x3d')]=!![];queues[_0x1e9e4c[_0x6512('0x5')]][_0x6512('0x39')]=_0x1e9e4c[_0x6512('0x37')];queues[_0x1e9e4c[_0x6512('0x5')]]['queuecallercomplete']=!![];queues[_0x1e9e4c[_0x6512('0x5')]][_0x6512('0x17')]=utils[_0x6512('0x12')]();if(_0x1e9e4c[_0x6512('0x3e')]==_0x6512('0x3f')){if(!queues[_0x1e9e4c[_0x6512('0x5')]][_0x6512('0x3f')]){queues[_0x1e9e4c[_0x6512('0x5')]][_0x6512('0x8')]=_0x6512('0x40');}}else{queues[_0x1e9e4c[_0x6512('0x5')]][_0x6512('0x8')]=_0x6512('0x41')+_0x1e9e4c[_0x6512('0x3e')][_0x6512('0x25')]();}utils[_0x6512('0x2')](util[_0x6512('0x3')](_0x6512('0x42'),_0x1e9e4c[_0x6512('0x5')],queues[_0x1e9e4c[_0x6512('0x5')]][_0x6512('0x1b')],_0x1e9e4c['membername'],queues[_0x1e9e4c['uniqueid']][_0x6512('0x8')]));writeDB(queues[_0x1e9e4c[_0x6512('0x5')]]);}}}catch(_0x1be2df){utils['error'](util[_0x6512('0x3')]('[%s][queues][agentcomplete]',_0x1e9e4c[_0x6512('0x5')]),_0x1be2df);}};exports['blindtransfer']=function(_0x3b7465){try{if(!_[_0x6512('0x20')](queues[_0x3b7465[_0x6512('0x43')]])){utils['debug'](util[_0x6512('0x3')]('[%s][queues][blindtransfer]',_0x3b7465['uniqueid']),_0x3b7465);queues[_0x3b7465[_0x6512('0x43')]][_0x6512('0x3f')]=!![];queues[_0x3b7465['transfereeuniqueid']][_0x6512('0x44')]=_0x6512('0x45');queues[_0x3b7465[_0x6512('0x43')]]['transferexten']=_0x3b7465['extension'];queues[_0x3b7465[_0x6512('0x43')]][_0x6512('0x46')]=_0x3b7465[_0x6512('0x43')];queues[_0x3b7465['transfereeuniqueid']]['queuecallerexitreason']=_0x6512('0x47');utils['info'](util['format']('[%s][queues][blindtransfer]\x20name:%s\x20transferuniqueid:%s\x20transferexten:%s\x20queuecallerexitreason:BLINDTRANSFER',_0x3b7465[_0x6512('0x5')],queues[_0x3b7465[_0x6512('0x43')]][_0x6512('0x1b')],_0x3b7465['transfereeuniqueid'],_0x3b7465['extension']));}}catch(_0x45ffb0){utils[_0x6512('0x1d')](util[_0x6512('0x3')](_0x6512('0x48'),_0x3b7465[_0x6512('0x5')]),_0x45ffb0);}};exports[_0x6512('0x49')]=function(_0x5d977c){try{utils[_0x6512('0xf')](util[_0x6512('0x3')](_0x6512('0x4a'),_0x5d977c[_0x6512('0x4b')]),_0x5d977c);if(_0x5d977c['origtransfereruniqueid']==_0x5d977c[_0x6512('0x4c')]){if(!_[_0x6512('0x20')](queues[_0x5d977c[_0x6512('0x4d')]])){utils[_0x6512('0x2')](util[_0x6512('0x3')](_0x6512('0x4e'),_0x5d977c['origtransfereruniqueid'],queues[_0x5d977c['secondtransfererlinkedid']]['name'],_0x5d977c['origtransfererexten']));queues[_0x5d977c[_0x6512('0x4d')]][_0x6512('0x3f')]=!![];queues[_0x5d977c[_0x6512('0x4d')]][_0x6512('0x44')]=_0x6512('0x4f');queues[_0x5d977c[_0x6512('0x4d')]][_0x6512('0x50')]=_0x5d977c['origtransfererexten'];queues[_0x5d977c[_0x6512('0x4d')]][_0x6512('0x46')]=_0x5d977c[_0x6512('0x4b')];queues[_0x5d977c[_0x6512('0x4d')]]['queuecallerexitreason']=_0x6512('0x51');}if(!_[_0x6512('0x20')](queues[_0x5d977c[_0x6512('0x4c')]])){if(_0x5d977c[_0x6512('0x52')]&&queues[_0x5d977c[_0x6512('0x52')]]){queues[_0x5d977c[_0x6512('0x52')]][_0x6512('0x1c')]=0x1;queues[_0x5d977c[_0x6512('0x43')]]=_['clone'](queues[_0x5d977c['transfereelinkedid']]);queues[_0x5d977c['transfereeuniqueid']][_0x6512('0xd')]=_0x5d977c[_0x6512('0x53')];queues[_0x5d977c[_0x6512('0x43')]][_0x6512('0x1c')]=0x2;queues[_0x5d977c[_0x6512('0x43')]][_0x6512('0x54')]=queues[_0x5d977c[_0x6512('0x4d')]][_0x6512('0x54')];queues[_0x5d977c['transfereeuniqueid']]['calleridname']=queues[_0x5d977c[_0x6512('0x4d')]][_0x6512('0x55')];queues[_0x5d977c[_0x6512('0x43')]][_0x6512('0x31')]=utils[_0x6512('0x12')]();queues[_0x5d977c[_0x6512('0x43')]][_0x6512('0x14')]=utils['now']();queues[_0x5d977c['transfereeuniqueid']]['holdtime']=0x0;queues[_0x5d977c[_0x6512('0x43')]][_0x6512('0x56')]=0x0;utils['info'](util['format']('[%s][queues][attendedtransfer]\x20name:%s\x20calleridnum:%s\x20calleridname:%s',_0x5d977c[_0x6512('0x4b')],queues[_0x5d977c[_0x6512('0x43')]][_0x6512('0x1b')],queues[_0x5d977c[_0x6512('0x43')]]['calleridnum'],queues[_0x5d977c['transfereeuniqueid']]['calleridname']));}else{utils['info'](util[_0x6512('0x3')](_0x6512('0x57'),_0x5d977c[_0x6512('0x4b')],queues[_0x5d977c[_0x6512('0x4c')]][_0x6512('0x1b')],_0x5d977c[_0x6512('0x4d')]));queues[_0x5d977c[_0x6512('0x4c')]][_0x6512('0xd')]=_0x5d977c[_0x6512('0x4d')];}}}else if(_0x5d977c[_0x6512('0x58')]==_0x5d977c[_0x6512('0x4d')]){if(!_[_0x6512('0x20')](queues[_0x5d977c['origtransfererlinkedid']])){utils['info'](util[_0x6512('0x3')]('[%s][queues][attendedtransfer]\x20name:%s\x20transferuniqueid:%s\x20transferexten:%s\x20queuecallerexitreason:ATTENDEDTRANSFER',_0x5d977c[_0x6512('0x4b')],queues[_0x5d977c[_0x6512('0x4c')]][_0x6512('0x1b')],_0x5d977c[_0x6512('0x58')],_0x5d977c[_0x6512('0x59')]));queues[_0x5d977c[_0x6512('0x4c')]][_0x6512('0x3f')]=!![];queues[_0x5d977c[_0x6512('0x4c')]][_0x6512('0x44')]=_0x6512('0x4f');queues[_0x5d977c['origtransfererlinkedid']][_0x6512('0x50')]=_0x5d977c[_0x6512('0x59')];queues[_0x5d977c['origtransfererlinkedid']][_0x6512('0x46')]=_0x5d977c[_0x6512('0x58')];queues[_0x5d977c[_0x6512('0x4c')]]['queuecallerexitreason']=_0x6512('0x51');}if(!_[_0x6512('0x20')](queues[_0x5d977c['secondtransfererlinkedid']])){if(_0x5d977c['transfertargetlinkedid']&&queues[_0x5d977c['transfertargetlinkedid']]){queues[_0x5d977c[_0x6512('0x5a')]]['queuecallerenterreason']=0x1;queues[_0x5d977c[_0x6512('0x53')]]=_['clone'](queues[_0x5d977c[_0x6512('0x5a')]]);queues[_0x5d977c[_0x6512('0x53')]][_0x6512('0xd')]=_0x5d977c['transfertargetuniqueid'];queues[_0x5d977c[_0x6512('0x53')]][_0x6512('0x1c')]=0x2;queues[_0x5d977c[_0x6512('0x53')]]['calleridnum']=queues[_0x5d977c[_0x6512('0x4c')]][_0x6512('0x54')];queues[_0x5d977c[_0x6512('0x53')]][_0x6512('0x55')]=queues[_0x5d977c[_0x6512('0x4c')]][_0x6512('0x55')];queues[_0x5d977c['transfertargetuniqueid']]['queuecallerjoinAt']=utils['now']();queues[_0x5d977c[_0x6512('0x53')]][_0x6512('0x14')]=utils[_0x6512('0x12')]();queues[_0x5d977c[_0x6512('0x53')]][_0x6512('0x2f')]=0x0;queues[_0x5d977c[_0x6512('0x53')]][_0x6512('0x56')]=0x0;utils[_0x6512('0x2')](util[_0x6512('0x3')](_0x6512('0x5b'),_0x5d977c[_0x6512('0x4b')],queues[_0x5d977c[_0x6512('0x53')]][_0x6512('0x1b')],queues[_0x5d977c[_0x6512('0x53')]]['transfereduniqueid'],queues[_0x5d977c[_0x6512('0x53')]][_0x6512('0x54')],queues[_0x5d977c[_0x6512('0x53')]]['calleridname']));}else{utils[_0x6512('0x2')](util[_0x6512('0x3')](_0x6512('0x57'),_0x5d977c['origtransfereruniqueid'],queues[_0x5d977c[_0x6512('0x4d')]][_0x6512('0x1b')],_0x5d977c[_0x6512('0x4c')]));queues[_0x5d977c[_0x6512('0x4d')]][_0x6512('0xd')]=_0x5d977c[_0x6512('0x4c')];}}}}catch(_0x1e73a7){utils[_0x6512('0x1d')](util[_0x6512('0x3')](_0x6512('0x4a'),_0x5d977c[_0x6512('0x4b')]),_0x1e73a7);}};exports[_0x6512('0x5c')]=function(_0x22481a){try{if(!_[_0x6512('0x20')](queues[_0x22481a['uniqueid']])){utils['debug'](util[_0x6512('0x3')](_0x6512('0x5d'),_0x22481a[_0x6512('0x5')]),_0x22481a);queues[_0x22481a[_0x6512('0x5')]][_0x6512('0x5e')]=utils[_0x6512('0x12')]();utils[_0x6512('0x2')](util['format'](_0x6512('0x5f'),_0x22481a[_0x6512('0x5')],queues[_0x22481a[_0x6512('0x5')]][_0x6512('0x1b')],queues[_0x22481a[_0x6512('0x5')]][_0x6512('0x5e')]));}}catch(_0x87fbdb){utils[_0x6512('0x1d')](util[_0x6512('0x3')](_0x6512('0x5d'),_0x22481a['uniqueid']),_0x87fbdb);}};exports[_0x6512('0x60')]=function(_0x1cb02f){try{if(!_['isNil'](queues[_0x1cb02f[_0x6512('0x5')]])){if(!_[_0x6512('0x20')](queues[_0x1cb02f[_0x6512('0x5')]][_0x6512('0x5e')])){utils[_0x6512('0xf')](util[_0x6512('0x3')](_0x6512('0x61'),_0x1cb02f[_0x6512('0x5')]),_0x1cb02f);queues[_0x1cb02f['uniqueid']]['mohtime']+=utils['diffTime'](utils[_0x6512('0x12')](),queues[_0x1cb02f[_0x6512('0x5')]][_0x6512('0x5e')]);utils[_0x6512('0x2')](util[_0x6512('0x3')]('[%s][queues][musiconholdstop]\x20name:%s\x20mohtime:%s',_0x1cb02f['uniqueid'],queues[_0x1cb02f[_0x6512('0x5')]][_0x6512('0x1b')],queues[_0x1cb02f['uniqueid']][_0x6512('0x56')]));delete queues[_0x1cb02f['uniqueid']][_0x6512('0x5e')];}}}catch(_0x122f17){utils['error'](util[_0x6512('0x3')]('[%s][queues][musiconholdstop]',_0x1cb02f['uniqueid']),_0x122f17);}};
\ No newline at end of file
index 58d688c..b7567cf 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9ab9=['.wav49','replace','find','monitors','[%s][recordings][hangup]\x20calleridnum:%s\x20calleridname:%s\x20reason:%s','calleridnum','cause-txt','calleridname','connectedlinenum','type','connectedlinename','forEach','clone','[%s][recordings][hangup]','newexten','[%s][recordings][newexten]','[%s][recordings][newexten]\x20application:%s\x20appdata:%s','application','appdata','toLowerCase','set','startsWith','cdr','split','substring','lastIndexOf','queuecallerjoin','[%s][recordings][queuecallerjoin]','queue','lodash','util','./utils','info','[%s][recordings][writeDB]','uniqueid','getUserByInternal','then','membername','name','UserId','request','CreateVoiceRecording','debug','format','[%s][recordings][newchannel]','[%s][recordings][newchannel]\x20context:%s\x20exten:%s','exten','accountcode','context','error','newstate','[%s][recordings][newstate]','isNil','channelstate','[%s][recordings][newstate]\x20context:%s\x20channel:%s','channel','linkedid','transfer','[%s][recordings][newstate]\x20linkedid:%s\x20context:%s\x20channel:%s','variable','mixmonitor_filename','[%s][recordings][varset]','[%s][recordings][varset]\x20variable:%s\x20value:%s','value'];(function(_0x48ccaa,_0x118a60){var _0x3c11ab=function(_0x4cfdee){while(--_0x4cfdee){_0x48ccaa['push'](_0x48ccaa['shift']());}};_0x3c11ab(++_0x118a60);}(_0x9ab9,0x19d));var _0x99ab=function(_0x431c01,_0x24e6ab){_0x431c01=_0x431c01-0x0;var _0x53d85a=_0x9ab9[_0x431c01];return _0x53d85a;};'use strict';var _=require(_0x99ab('0x0'));var util=require(_0x99ab('0x1'));var utils=require(_0x99ab('0x2'));var recordings={};function writeDB(_0xce29b){utils[_0x99ab('0x3')](util['format'](_0x99ab('0x4'),_0xce29b[_0x99ab('0x5')]));if(_0xce29b['accountcode']){utils[_0x99ab('0x6')](_0xce29b['accountcode'])[_0x99ab('0x7')](function(_0x1042a3){if(_0x1042a3){_0xce29b[_0x99ab('0x8')]=_0x1042a3[_0x99ab('0x9')];_0xce29b[_0x99ab('0xa')]=_0x1042a3['id'];}utils['request']('CreateVoiceRecording',_0xce29b);});}else{utils[_0x99ab('0xb')](_0x99ab('0xc'),_0xce29b);}}exports['newchannel']=function(_0x14d083){try{utils[_0x99ab('0xd')](util[_0x99ab('0xe')](_0x99ab('0xf'),_0x14d083[_0x99ab('0x5')]),_0x14d083);if(_0x14d083[_0x99ab('0x5')]==_0x14d083['linkedid']){utils[_0x99ab('0x3')](util[_0x99ab('0xe')](_0x99ab('0x10'),_0x14d083['uniqueid'],_0x14d083['context'],_0x14d083[_0x99ab('0x11')]));recordings[_0x14d083[_0x99ab('0x5')]]={'uniqueid':_0x14d083[_0x99ab('0x5')],'accountcode':_0x14d083[_0x99ab('0x12')],'exten':_0x14d083[_0x99ab('0x11')],'context':_0x14d083[_0x99ab('0x13')],'channel':_0x14d083['channel'],'monitors':[]};}}catch(_0x97639f){utils[_0x99ab('0x14')](util['format'](_0x99ab('0xf'),_0x14d083[_0x99ab('0x5')]),_0x97639f);}};exports[_0x99ab('0x15')]=function(_0x4b11f1){try{utils[_0x99ab('0xd')](util[_0x99ab('0xe')](_0x99ab('0x16'),_0x4b11f1[_0x99ab('0x5')]),_0x4b11f1);if(!_[_0x99ab('0x17')](recordings[_0x4b11f1[_0x99ab('0x5')]])&&_0x4b11f1[_0x99ab('0x18')]==0x6){utils[_0x99ab('0x3')](util['format'](_0x99ab('0x19'),_0x4b11f1[_0x99ab('0x5')],_0x4b11f1[_0x99ab('0x13')],_0x4b11f1[_0x99ab('0x1a')]));}else if(!_[_0x99ab('0x17')](recordings[_0x4b11f1[_0x99ab('0x1b')]])&&_0x4b11f1[_0x99ab('0x18')]==0x6&&_0x4b11f1[_0x99ab('0x13')]!=_0x99ab('0x1c')){utils['info'](util['format'](_0x99ab('0x1d'),_0x4b11f1[_0x99ab('0x5')],_0x4b11f1[_0x99ab('0x1b')],_0x4b11f1['context'],_0x4b11f1[_0x99ab('0x1a')]));recordings[_0x4b11f1[_0x99ab('0x1b')]][_0x99ab('0x12')]=_0x4b11f1[_0x99ab('0x12')];}}catch(_0x624e9b){utils[_0x99ab('0x14')](util[_0x99ab('0xe')]('[%s][recordings][newstate]',_0x4b11f1[_0x99ab('0x5')]),_0x624e9b);}};exports['varset']=function(_0x461f2f){try{if(!_['isNil'](_0x461f2f['variable'])&&!_[_0x99ab('0x17')](_0x461f2f[_0x99ab('0x1e')][_0x99ab('0x1f')])){utils['debug'](util[_0x99ab('0xe')](_0x99ab('0x20'),_0x461f2f[_0x99ab('0x5')]),_0x461f2f);utils[_0x99ab('0x3')](util[_0x99ab('0xe')](_0x99ab('0x21'),_0x461f2f[_0x99ab('0x5')],_0x461f2f[_0x99ab('0x1e')],_0x461f2f[_0x99ab('0x22')]));if(_['endsWith'](_0x461f2f[_0x99ab('0x22')],_0x99ab('0x23'))){_0x461f2f['value']=_0x461f2f[_0x99ab('0x22')][_0x99ab('0x24')](_0x99ab('0x23'),'.WAV');}if(recordings[_0x461f2f['linkedid']]){var _0x415276=_[_0x99ab('0x25')](recordings[_0x461f2f[_0x99ab('0x1b')]][_0x99ab('0x26')],{'value':_0x461f2f[_0x99ab('0x22')]});if(_[_0x99ab('0x17')](_0x415276)){recordings[_0x461f2f[_0x99ab('0x1b')]][_0x99ab('0x26')]['push']({'value':_0x461f2f[_0x99ab('0x22')]});}}}}catch(_0x453138){utils['error'](util[_0x99ab('0xe')](_0x99ab('0x20'),_0x461f2f['uniqueid']),_0x453138);}};exports['hangup']=function(_0x18b705){try{if(!_[_0x99ab('0x17')](recordings[_0x18b705[_0x99ab('0x5')]])){utils['debug'](util['format']('[%s][recordings][hangup]',_0x18b705['uniqueid']),_0x18b705);utils['info'](util['format'](_0x99ab('0x27'),_0x18b705[_0x99ab('0x5')],_0x18b705[_0x99ab('0x28')],_0x18b705['calleridname'],_0x18b705[_0x99ab('0x29')]));recordings[_0x18b705[_0x99ab('0x5')]][_0x99ab('0x28')]=_0x18b705['calleridnum'];recordings[_0x18b705[_0x99ab('0x5')]][_0x99ab('0x2a')]=_0x18b705[_0x99ab('0x2a')];recordings[_0x18b705[_0x99ab('0x5')]][_0x99ab('0x2b')]=_0x18b705[_0x99ab('0x2b')];recordings[_0x18b705[_0x99ab('0x5')]]['connectedlinename']=_0x18b705['connectedlinename'];if(recordings[_0x18b705[_0x99ab('0x5')]][_0x99ab('0x2c')]=='outbound'&&recordings[_0x18b705[_0x99ab('0x5')]][_0x99ab('0x12')]){recordings[_0x18b705[_0x99ab('0x5')]]['connectedlinenum']=recordings[_0x18b705[_0x99ab('0x5')]][_0x99ab('0x12')];recordings[_0x18b705[_0x99ab('0x5')]][_0x99ab('0x2d')]='';}recordings[_0x18b705[_0x99ab('0x5')]]['monitors'][_0x99ab('0x2e')](function(_0x36730a){var _0x5a6495=_[_0x99ab('0x2f')](recordings[_0x18b705['uniqueid']]);_0x5a6495[_0x99ab('0x22')]=_0x36730a[_0x99ab('0x22')];writeDB(_0x5a6495);});delete recordings[_0x18b705[_0x99ab('0x5')]];}}catch(_0x67fefb){utils[_0x99ab('0x14')](util[_0x99ab('0xe')](_0x99ab('0x30'),_0x18b705[_0x99ab('0x5')]),_0x67fefb);}};exports[_0x99ab('0x31')]=function(_0x2c4f29){try{if(!_['isNil'](recordings[_0x2c4f29[_0x99ab('0x5')]])){utils[_0x99ab('0xd')](util['format'](_0x99ab('0x32'),_0x2c4f29['uniqueid']),_0x2c4f29);utils[_0x99ab('0x3')](util['format'](_0x99ab('0x33'),_0x2c4f29[_0x99ab('0x5')],_0x2c4f29[_0x99ab('0x34')],_0x2c4f29[_0x99ab('0x35')]));if(_0x2c4f29['application'][_0x99ab('0x36')]()==_0x99ab('0x37')&&_[_0x99ab('0x38')](_0x2c4f29[_0x99ab('0x35')][_0x99ab('0x36')](),_0x99ab('0x39'))){var _0x402120=_0x2c4f29[_0x99ab('0x35')][_0x99ab('0x3a')]('=');var _0x67bea8=_0x402120[0x0][_0x99ab('0x3b')](_0x402120[0x0][_0x99ab('0x3c')]('(')+0x1,_0x402120[0x0][_0x99ab('0x3c')](')'));var _0x28525f=_0x402120[0x1];recordings[_0x2c4f29[_0x99ab('0x5')]][_0x67bea8]=_0x28525f;}}}catch(_0x5aa17f){utils[_0x99ab('0x14')](util[_0x99ab('0xe')]('[%s][recordings][newexten]',_0x2c4f29[_0x99ab('0x5')]),_0x5aa17f);}};exports[_0x99ab('0x3d')]=function(_0x8bc250){try{if(!_[_0x99ab('0x17')](recordings[_0x8bc250[_0x99ab('0x5')]])){utils[_0x99ab('0xd')](util[_0x99ab('0xe')](_0x99ab('0x3e'),_0x8bc250[_0x99ab('0x5')]),_0x8bc250);utils[_0x99ab('0x3')](util[_0x99ab('0xe')]('[%s][recordings][queuecallerjoin]\x20queue:%s',_0x8bc250[_0x99ab('0x5')],_0x8bc250[_0x99ab('0x3f')]));recordings[_0x8bc250[_0x99ab('0x5')]][_0x99ab('0x3f')]=_0x8bc250['queue'];}}catch(_0x520420){utils[_0x99ab('0x14')](util['format'](_0x99ab('0x3e'),_0x8bc250[_0x99ab('0x5')]),_0x520420);}};
\ No newline at end of file
+var _0x1f7f=['newexten','[%s][recordings][newexten]','[%s][recordings][newexten]\x20application:%s\x20appdata:%s','application','appdata','toLowerCase','cdr','split','lastIndexOf','queuecallerjoin','[%s][recordings][queuecallerjoin]','queue','lodash','format','[%s][recordings][writeDB]','accountcode','getUserByInternal','then','membername','name','UserId','request','CreateVoiceRecording','debug','[%s][recordings][newchannel]','uniqueid','info','[%s][recordings][newchannel]\x20context:%s\x20exten:%s','context','exten','channel','newstate','[%s][recordings][newstate]','[%s][recordings][newstate]\x20context:%s\x20channel:%s','isNil','linkedid','channelstate','transfer','error','variable','[%s][recordings][varset]','[%s][recordings][varset]\x20variable:%s\x20value:%s','value','endsWith','replace','.WAV','monitors','hangup','[%s][recordings][hangup]','[%s][recordings][hangup]\x20calleridnum:%s\x20calleridname:%s\x20reason:%s','calleridnum','calleridname','cause-txt','connectedlinenum','connectedlinename','type','outbound','forEach','clone'];(function(_0x4bb581,_0x6f7037){var _0x316bf5=function(_0x1f6ed0){while(--_0x1f6ed0){_0x4bb581['push'](_0x4bb581['shift']());}};_0x316bf5(++_0x6f7037);}(_0x1f7f,0xbd));var _0xf1f7=function(_0x89fffe,_0x1ef3ba){_0x89fffe=_0x89fffe-0x0;var _0x4a9fad=_0x1f7f[_0x89fffe];return _0x4a9fad;};'use strict';var _=require(_0xf1f7('0x0'));var util=require('util');var utils=require('./utils');var recordings={};function writeDB(_0x298324){utils['info'](util[_0xf1f7('0x1')](_0xf1f7('0x2'),_0x298324['uniqueid']));if(_0x298324[_0xf1f7('0x3')]){utils[_0xf1f7('0x4')](_0x298324['accountcode'])[_0xf1f7('0x5')](function(_0x3dd367){if(_0x3dd367){_0x298324[_0xf1f7('0x6')]=_0x3dd367[_0xf1f7('0x7')];_0x298324[_0xf1f7('0x8')]=_0x3dd367['id'];}utils[_0xf1f7('0x9')](_0xf1f7('0xa'),_0x298324);});}else{utils['request'](_0xf1f7('0xa'),_0x298324);}}exports['newchannel']=function(_0x25bd81){try{utils[_0xf1f7('0xb')](util['format'](_0xf1f7('0xc'),_0x25bd81[_0xf1f7('0xd')]),_0x25bd81);if(_0x25bd81[_0xf1f7('0xd')]==_0x25bd81['linkedid']){utils[_0xf1f7('0xe')](util[_0xf1f7('0x1')](_0xf1f7('0xf'),_0x25bd81[_0xf1f7('0xd')],_0x25bd81[_0xf1f7('0x10')],_0x25bd81[_0xf1f7('0x11')]));recordings[_0x25bd81[_0xf1f7('0xd')]]={'uniqueid':_0x25bd81[_0xf1f7('0xd')],'accountcode':_0x25bd81[_0xf1f7('0x3')],'exten':_0x25bd81['exten'],'context':_0x25bd81['context'],'channel':_0x25bd81[_0xf1f7('0x12')],'monitors':[]};}}catch(_0x7c2687){utils['error'](util[_0xf1f7('0x1')](_0xf1f7('0xc'),_0x25bd81[_0xf1f7('0xd')]),_0x7c2687);}};exports[_0xf1f7('0x13')]=function(_0x45e03f){try{utils['debug'](util[_0xf1f7('0x1')](_0xf1f7('0x14'),_0x45e03f['uniqueid']),_0x45e03f);if(!_['isNil'](recordings[_0x45e03f[_0xf1f7('0xd')]])&&_0x45e03f['channelstate']==0x6){utils['info'](util['format'](_0xf1f7('0x15'),_0x45e03f[_0xf1f7('0xd')],_0x45e03f[_0xf1f7('0x10')],_0x45e03f[_0xf1f7('0x12')]));}else if(!_[_0xf1f7('0x16')](recordings[_0x45e03f[_0xf1f7('0x17')]])&&_0x45e03f[_0xf1f7('0x18')]==0x6&&_0x45e03f['context']!=_0xf1f7('0x19')){utils['info'](util[_0xf1f7('0x1')]('[%s][recordings][newstate]\x20linkedid:%s\x20context:%s\x20channel:%s',_0x45e03f['uniqueid'],_0x45e03f[_0xf1f7('0x17')],_0x45e03f[_0xf1f7('0x10')],_0x45e03f['channel']));recordings[_0x45e03f[_0xf1f7('0x17')]][_0xf1f7('0x3')]=_0x45e03f['accountcode'];}}catch(_0x504a22){utils[_0xf1f7('0x1a')](util['format'](_0xf1f7('0x14'),_0x45e03f[_0xf1f7('0xd')]),_0x504a22);}};exports['varset']=function(_0x47a1c1){try{if(!_[_0xf1f7('0x16')](_0x47a1c1[_0xf1f7('0x1b')])&&!_[_0xf1f7('0x16')](_0x47a1c1[_0xf1f7('0x1b')]['mixmonitor_filename'])){utils['debug'](util[_0xf1f7('0x1')](_0xf1f7('0x1c'),_0x47a1c1['uniqueid']),_0x47a1c1);utils[_0xf1f7('0xe')](util['format'](_0xf1f7('0x1d'),_0x47a1c1['uniqueid'],_0x47a1c1[_0xf1f7('0x1b')],_0x47a1c1[_0xf1f7('0x1e')]));if(_[_0xf1f7('0x1f')](_0x47a1c1[_0xf1f7('0x1e')],'.wav49')){_0x47a1c1[_0xf1f7('0x1e')]=_0x47a1c1[_0xf1f7('0x1e')][_0xf1f7('0x20')]('.wav49',_0xf1f7('0x21'));}if(recordings[_0x47a1c1[_0xf1f7('0x17')]]){var _0x4674ba=_['find'](recordings[_0x47a1c1[_0xf1f7('0x17')]][_0xf1f7('0x22')],{'value':_0x47a1c1[_0xf1f7('0x1e')]});if(_[_0xf1f7('0x16')](_0x4674ba)){recordings[_0x47a1c1[_0xf1f7('0x17')]][_0xf1f7('0x22')]['push']({'value':_0x47a1c1[_0xf1f7('0x1e')]});}}}}catch(_0x2c183e){utils['error'](util[_0xf1f7('0x1')]('[%s][recordings][varset]',_0x47a1c1[_0xf1f7('0xd')]),_0x2c183e);}};exports[_0xf1f7('0x23')]=function(_0x2099d9){try{if(!_[_0xf1f7('0x16')](recordings[_0x2099d9[_0xf1f7('0xd')]])){utils[_0xf1f7('0xb')](util['format'](_0xf1f7('0x24'),_0x2099d9[_0xf1f7('0xd')]),_0x2099d9);utils[_0xf1f7('0xe')](util[_0xf1f7('0x1')](_0xf1f7('0x25'),_0x2099d9[_0xf1f7('0xd')],_0x2099d9[_0xf1f7('0x26')],_0x2099d9[_0xf1f7('0x27')],_0x2099d9[_0xf1f7('0x28')]));recordings[_0x2099d9[_0xf1f7('0xd')]]['calleridnum']=_0x2099d9[_0xf1f7('0x26')];recordings[_0x2099d9[_0xf1f7('0xd')]][_0xf1f7('0x27')]=_0x2099d9[_0xf1f7('0x27')];recordings[_0x2099d9[_0xf1f7('0xd')]][_0xf1f7('0x29')]=_0x2099d9[_0xf1f7('0x29')];recordings[_0x2099d9[_0xf1f7('0xd')]][_0xf1f7('0x2a')]=_0x2099d9[_0xf1f7('0x2a')];if(recordings[_0x2099d9['uniqueid']][_0xf1f7('0x2b')]==_0xf1f7('0x2c')&&recordings[_0x2099d9[_0xf1f7('0xd')]]['accountcode']){recordings[_0x2099d9[_0xf1f7('0xd')]][_0xf1f7('0x29')]=recordings[_0x2099d9[_0xf1f7('0xd')]]['accountcode'];recordings[_0x2099d9[_0xf1f7('0xd')]][_0xf1f7('0x2a')]='';}recordings[_0x2099d9[_0xf1f7('0xd')]][_0xf1f7('0x22')][_0xf1f7('0x2d')](function(_0x516e85){var _0x80b07b=_[_0xf1f7('0x2e')](recordings[_0x2099d9[_0xf1f7('0xd')]]);_0x80b07b[_0xf1f7('0x1e')]=_0x516e85[_0xf1f7('0x1e')];writeDB(_0x80b07b);});delete recordings[_0x2099d9[_0xf1f7('0xd')]];}}catch(_0x533aaa){utils['error'](util['format'](_0xf1f7('0x24'),_0x2099d9[_0xf1f7('0xd')]),_0x533aaa);}};exports[_0xf1f7('0x2f')]=function(_0x4657c7){try{if(!_[_0xf1f7('0x16')](recordings[_0x4657c7[_0xf1f7('0xd')]])){utils[_0xf1f7('0xb')](util[_0xf1f7('0x1')](_0xf1f7('0x30'),_0x4657c7[_0xf1f7('0xd')]),_0x4657c7);utils[_0xf1f7('0xe')](util[_0xf1f7('0x1')](_0xf1f7('0x31'),_0x4657c7[_0xf1f7('0xd')],_0x4657c7[_0xf1f7('0x32')],_0x4657c7['appdata']));if(_0x4657c7[_0xf1f7('0x32')]['toLowerCase']()=='set'&&_['startsWith'](_0x4657c7[_0xf1f7('0x33')][_0xf1f7('0x34')](),_0xf1f7('0x35'))){var _0x4e40c9=_0x4657c7[_0xf1f7('0x33')][_0xf1f7('0x36')]('=');var _0x3b8612=_0x4e40c9[0x0]['substring'](_0x4e40c9[0x0][_0xf1f7('0x37')]('(')+0x1,_0x4e40c9[0x0][_0xf1f7('0x37')](')'));var _0x327ef8=_0x4e40c9[0x1];recordings[_0x4657c7[_0xf1f7('0xd')]][_0x3b8612]=_0x327ef8;}}}catch(_0x4c7ad8){utils['error'](util[_0xf1f7('0x1')](_0xf1f7('0x30'),_0x4657c7[_0xf1f7('0xd')]),_0x4c7ad8);}};exports[_0xf1f7('0x38')]=function(_0x254d1a){try{if(!_[_0xf1f7('0x16')](recordings[_0x254d1a[_0xf1f7('0xd')]])){utils[_0xf1f7('0xb')](util[_0xf1f7('0x1')](_0xf1f7('0x39'),_0x254d1a[_0xf1f7('0xd')]),_0x254d1a);utils[_0xf1f7('0xe')](util[_0xf1f7('0x1')]('[%s][recordings][queuecallerjoin]\x20queue:%s',_0x254d1a[_0xf1f7('0xd')],_0x254d1a[_0xf1f7('0x3a')]));recordings[_0x254d1a[_0xf1f7('0xd')]][_0xf1f7('0x3a')]=_0x254d1a[_0xf1f7('0x3a')];}}catch(_0x345936){utils['error'](util[_0xf1f7('0x1')](_0xf1f7('0x39'),_0x254d1a['uniqueid']),_0x345936);}};
\ No newline at end of file
index 55b22da..5afb78f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x073f=['lodash','./utils','info','format','[%s][transfers][writeDB]\x20type:%s','type','attended','origtransfereruniqueid','uniqueid','request','blinds','blindtransfer','debug','[%s][transfers][blindtransfer]','transferercalleridnum','transferercalleridname','transfereecalleridnum','transfereruniqueid','error','[%s][transfers][attendedtransfer]','origtransferercalleridnum','transfertargetcalleridnum','transfertargetcalleridname','assign','origtransfererchannel','origtransferercalleridname','secondtransfererconnectedlinename','origtransfereraccountcode','secondtransferercontext','secondtransfererexten','origtransfererlinkedid','origtransferercontext','origtransfererexten','isNil','transfereechannel','transfertargetchannel','transfertargetconnectedlinenum','transfertargetconnectedlinename','transfertargetcontext','transfertargetexten','transfertargetlinkedid'];(function(_0xb65e77,_0x238c3d){var _0x38134b=function(_0x39da21){while(--_0x39da21){_0xb65e77['push'](_0xb65e77['shift']());}};_0x38134b(++_0x238c3d);}(_0x073f,0x11f));var _0xf073=function(_0x1c8c28,_0x3ee093){_0x1c8c28=_0x1c8c28-0x0;var _0x1f59b4=_0x073f[_0x1c8c28];return _0x1f59b4;};'use strict';var _=require(_0xf073('0x0'));var util=require('util');var utils=require(_0xf073('0x1'));function writeDB(_0x261b5c){utils[_0xf073('0x2')](util[_0xf073('0x3')](_0xf073('0x4'),_0x261b5c[_0xf073('0x5')]===_0xf073('0x6')?_0x261b5c[_0xf073('0x7')]:_0x261b5c[_0xf073('0x8')],_0x261b5c[_0xf073('0x5')]));utils[_0xf073('0x9')]('CreateVoiceTransferReport',_0x261b5c);}exports[_0xf073('0xa')]={};exports[_0xf073('0xb')]=function(_0x2594de){try{utils[_0xf073('0xc')](util[_0xf073('0x3')](_0xf073('0xd'),_0x2594de['uniqueid']),_0x2594de);utils[_0xf073('0x2')](util[_0xf073('0x3')]('[%s][transfers][blindtransfer]\x20transferercalleridnum:%s\x20transferercalleridname:%s\x20transfereecalleridnum:%s\x20transfereecalleridname:%s',_0x2594de[_0xf073('0x8')],_0x2594de[_0xf073('0xe')],_0x2594de[_0xf073('0xf')],_0x2594de[_0xf073('0x10')],_0x2594de['transfereecalleridname']));_0x2594de[_0xf073('0x5')]='blind';exports[_0xf073('0xa')][_0x2594de[_0xf073('0x11')]]=_0x2594de;writeDB(_0x2594de);}catch(_0x41a961){utils[_0xf073('0x12')](util[_0xf073('0x3')]('[%s][transfers][blindtransfer]',_0x2594de['uniqueid']),_0x41a961);}};exports['attendedtransfer']=function(_0x367a53){try{utils['debug'](util[_0xf073('0x3')](_0xf073('0x13'),_0x367a53[_0xf073('0x7')]),_0x367a53);utils[_0xf073('0x2')](util[_0xf073('0x3')]('[%s][transfers][attendedtransfer]\x20transferercalleridnum:%s\x20transferercalleridname:%s\x20transfereecalleridnum:%s\x20transfereecalleridname:%s',_0x367a53[_0xf073('0x7')],_0x367a53[_0xf073('0x14')],_0x367a53['origtransferercalleridname'],_0x367a53[_0xf073('0x15')],_0x367a53[_0xf073('0x16')]));_0x367a53=_[_0xf073('0x17')](_0x367a53,{'transfererchannel':_0x367a53[_0xf073('0x18')],'transferercalleridnum':_0x367a53[_0xf073('0x14')],'transferercalleridname':_0x367a53[_0xf073('0x19')],'transfererconnectedlinenum':_0x367a53['secondtransfererconnectedlinenum'],'transfererconnectedlinename':_0x367a53[_0xf073('0x1a')],'transfereraccountcode':_0x367a53[_0xf073('0x1b')],'transferercontext':_0x367a53[_0xf073('0x1c')],'transfererexten':_0x367a53[_0xf073('0x1d')],'transfererlinkedid':_0x367a53[_0xf073('0x1e')],'context':_0x367a53[_0xf073('0x1f')],'extension':_0x367a53[_0xf073('0x20')],'type':_0xf073('0x6')});if(_[_0xf073('0x21')](_0x367a53[_0xf073('0x22')])){_0x367a53=_[_0xf073('0x17')](_0x367a53,{'transfereechannel':_0x367a53[_0xf073('0x23')],'transfereecalleridnum':_0x367a53[_0xf073('0x15')],'transfereecalleridname':_0x367a53[_0xf073('0x16')],'transfereeconnectedlinenum':_0x367a53[_0xf073('0x24')],'transfereeconnectedlinename':_0x367a53[_0xf073('0x25')],'transfereeaccountcode':_0x367a53['transfertargetaccountcode'],'transfereecontext':_0x367a53[_0xf073('0x26')],'transfereeexten':_0x367a53[_0xf073('0x27')],'transfereelinkedid':_0x367a53[_0xf073('0x28')]});}writeDB(_0x367a53);}catch(_0x62ea63){utils[_0xf073('0x12')](util[_0xf073('0x3')](_0xf073('0x13'),_0x367a53['origtransfereruniqueid']),_0x62ea63);}};
\ No newline at end of file
+var _0x29e7=['transfereechannel','assign','transfertargetchannel','transfertargetaccountcode','transfertargetexten','transfertargetlinkedid','lodash','util','info','format','[%s][transfers][writeDB]\x20type:%s','type','attended','origtransfereruniqueid','request','CreateVoiceTransferReport','blinds','[%s][transfers][blindtransfer]','uniqueid','[%s][transfers][blindtransfer]\x20transferercalleridnum:%s\x20transferercalleridname:%s\x20transfereecalleridnum:%s\x20transfereecalleridname:%s','transferercalleridnum','transfereecalleridnum','transfereecalleridname','transfereruniqueid','error','attendedtransfer','debug','[%s][transfers][attendedtransfer]','[%s][transfers][attendedtransfer]\x20transferercalleridnum:%s\x20transferercalleridname:%s\x20transfereecalleridnum:%s\x20transfereecalleridname:%s','origtransferercalleridname','transfertargetcalleridnum','transfertargetcalleridname','origtransfererchannel','origtransferercalleridnum','secondtransfererconnectedlinenum','origtransfereraccountcode','secondtransferercontext','secondtransfererexten','origtransfererlinkedid','isNil'];(function(_0x5c436e,_0x145ed8){var _0x51d618=function(_0x377bdb){while(--_0x377bdb){_0x5c436e['push'](_0x5c436e['shift']());}};_0x51d618(++_0x145ed8);}(_0x29e7,0x11e));var _0x729e=function(_0x20afc3,_0x2f189a){_0x20afc3=_0x20afc3-0x0;var _0x4cbb43=_0x29e7[_0x20afc3];return _0x4cbb43;};'use strict';var _=require(_0x729e('0x0'));var util=require(_0x729e('0x1'));var utils=require('./utils');function writeDB(_0x5836d0){utils[_0x729e('0x2')](util[_0x729e('0x3')](_0x729e('0x4'),_0x5836d0[_0x729e('0x5')]===_0x729e('0x6')?_0x5836d0[_0x729e('0x7')]:_0x5836d0['uniqueid'],_0x5836d0[_0x729e('0x5')]));utils[_0x729e('0x8')](_0x729e('0x9'),_0x5836d0);}exports[_0x729e('0xa')]={};exports['blindtransfer']=function(_0x7534fa){try{utils['debug'](util['format'](_0x729e('0xb'),_0x7534fa[_0x729e('0xc')]),_0x7534fa);utils[_0x729e('0x2')](util[_0x729e('0x3')](_0x729e('0xd'),_0x7534fa[_0x729e('0xc')],_0x7534fa[_0x729e('0xe')],_0x7534fa['transferercalleridname'],_0x7534fa[_0x729e('0xf')],_0x7534fa[_0x729e('0x10')]));_0x7534fa[_0x729e('0x5')]='blind';exports[_0x729e('0xa')][_0x7534fa[_0x729e('0x11')]]=_0x7534fa;writeDB(_0x7534fa);}catch(_0x256dfa){utils[_0x729e('0x12')](util[_0x729e('0x3')](_0x729e('0xb'),_0x7534fa[_0x729e('0xc')]),_0x256dfa);}};exports[_0x729e('0x13')]=function(_0x22d6c5){try{utils[_0x729e('0x14')](util[_0x729e('0x3')](_0x729e('0x15'),_0x22d6c5[_0x729e('0x7')]),_0x22d6c5);utils['info'](util['format'](_0x729e('0x16'),_0x22d6c5[_0x729e('0x7')],_0x22d6c5['origtransferercalleridnum'],_0x22d6c5[_0x729e('0x17')],_0x22d6c5[_0x729e('0x18')],_0x22d6c5[_0x729e('0x19')]));_0x22d6c5=_['assign'](_0x22d6c5,{'transfererchannel':_0x22d6c5[_0x729e('0x1a')],'transferercalleridnum':_0x22d6c5[_0x729e('0x1b')],'transferercalleridname':_0x22d6c5[_0x729e('0x17')],'transfererconnectedlinenum':_0x22d6c5[_0x729e('0x1c')],'transfererconnectedlinename':_0x22d6c5['secondtransfererconnectedlinename'],'transfereraccountcode':_0x22d6c5[_0x729e('0x1d')],'transferercontext':_0x22d6c5[_0x729e('0x1e')],'transfererexten':_0x22d6c5[_0x729e('0x1f')],'transfererlinkedid':_0x22d6c5[_0x729e('0x20')],'context':_0x22d6c5['origtransferercontext'],'extension':_0x22d6c5['origtransfererexten'],'type':_0x729e('0x6')});if(_[_0x729e('0x21')](_0x22d6c5[_0x729e('0x22')])){_0x22d6c5=_[_0x729e('0x23')](_0x22d6c5,{'transfereechannel':_0x22d6c5[_0x729e('0x24')],'transfereecalleridnum':_0x22d6c5[_0x729e('0x18')],'transfereecalleridname':_0x22d6c5[_0x729e('0x19')],'transfereeconnectedlinenum':_0x22d6c5['transfertargetconnectedlinenum'],'transfereeconnectedlinename':_0x22d6c5['transfertargetconnectedlinename'],'transfereeaccountcode':_0x22d6c5[_0x729e('0x25')],'transfereecontext':_0x22d6c5['transfertargetcontext'],'transfereeexten':_0x22d6c5[_0x729e('0x26')],'transfereelinkedid':_0x22d6c5[_0x729e('0x27')]});}writeDB(_0x22d6c5);}catch(_0x13dc8c){utils[_0x729e('0x12')](util['format']('[%s][transfers][attendedtransfer]',_0x22d6c5[_0x729e('0x7')]),_0x13dc8c);}};
\ No newline at end of file
index 6f3d53a..2b30de3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xba18=['bluebird','jayson/promise','moment','util','client','http','../../config/logger','xdr','info','inspect','debug','error','request','then','[utils][request]\x20name:%s','catch','GetUser','internal','[utils][getUser]\x20where:%s','stringify','result','length','getUserByInternal','[utils][getUserByInternal]\x20internal:%s\x20%s','found','notfound','[utils][getUserByInterface]\x20interface:%s\x20%s','[utils][getUserByInterface]','getUserByName','[utils][getUserByName]\x20name:%s\x20%s','[utils][getUserByName]','getVoiceQueueByName','GetVoiceQueue','type','acw','acwTimeout','[utils][getVoiceQueueByName]','add','seconds','format','YYYY-MM-DD\x20HH:mm:ss','subtractTime','subtract','diffTime','diff','sumTime','now','isAfter','isBefore'];(function(_0x583901,_0x587b9c){var _0x47390a=function(_0x223407){while(--_0x223407){_0x583901['push'](_0x583901['shift']());}};_0x47390a(++_0x587b9c);}(_0xba18,0x1ea));var _0x8ba1=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0xba18[_0x3dd15e];return _0x231fd0;};'use strict';var BPromise=require(_0x8ba1('0x0'));var jayson=require(_0x8ba1('0x1'));var moment=require(_0x8ba1('0x2'));var util=require(_0x8ba1('0x3'));var client=jayson[_0x8ba1('0x4')][_0x8ba1('0x5')]({'port':0x2329});var logger=require(_0x8ba1('0x6'))(_0x8ba1('0x7'));exports['info']=function(_0xe3bc16,_0x3136d7){logger[_0x8ba1('0x8')](_0xe3bc16,_0x3136d7?util[_0x8ba1('0x9')](_0x3136d7,{'showHidden':![],'depth':null}):'');};exports[_0x8ba1('0xa')]=function(_0x2ffa15,_0x51a988){logger[_0x8ba1('0xa')](_0x2ffa15,_0x51a988?util[_0x8ba1('0x9')](_0x51a988,{'showHidden':![],'depth':null}):'');};exports['error']=function(_0x49709e,_0x4aa3e3){logger[_0x8ba1('0xb')](_0x49709e,_0x4aa3e3?util[_0x8ba1('0x9')](_0x4aa3e3,{'showHidden':![],'depth':null}):'');};exports['request']=function(_0x457158,_0x38aae9){return client[_0x8ba1('0xc')](_0x457158,{'body':_0x38aae9})[_0x8ba1('0xd')](function(_0x447ac0){logger['debug'](_0x8ba1('0xe'),_0x457158,_0x447ac0?util[_0x8ba1('0x9')](_0x447ac0,{'showHidden':![],'depth':null}):'');})[_0x8ba1('0xf')](function(_0x1fcfd7){logger[_0x8ba1('0xb')](_0x8ba1('0xe'),_0x457158,_0x1fcfd7?util['inspect'](_0x1fcfd7,{'showHidden':![],'depth':null}):'');});};function getUser(_0x108541){return client[_0x8ba1('0xc')](_0x8ba1('0x10'),{'options':{'raw':!![],'attributes':['id',_0x8ba1('0x11'),'name','interface'],'where':_0x108541,'limit':0x1}})['then'](function(_0x3058ac){logger[_0x8ba1('0xa')](_0x8ba1('0x12'),JSON[_0x8ba1('0x13')](_0x108541),_0x3058ac?util[_0x8ba1('0x9')](_0x3058ac,{'showHidden':![],'depth':null}):'');return _0x3058ac[_0x8ba1('0x14')][_0x8ba1('0x15')]?_0x3058ac[_0x8ba1('0x14')][0x0]:null;});}exports[_0x8ba1('0x16')]=function(_0x245929){return new BPromise(function(_0x4d75fa,_0x4c6325){if(_0x245929){return getUser({'internal':_0x245929})[_0x8ba1('0xd')](function(_0x360f00){logger['info'](_0x8ba1('0x17'),_0x245929,_0x360f00?_0x8ba1('0x18'):_0x8ba1('0x19'));return _0x4d75fa(_0x360f00);})[_0x8ba1('0xf')](function(_0x1dc1b4){logger[_0x8ba1('0xb')]('[utils][getUserByInternal]',_0x1dc1b4?util[_0x8ba1('0x9')](_0x1dc1b4,{'showHidden':![],'depth':null}):'');return _0x4d75fa(null);});}return _0x4d75fa(null);});};exports['getUserByInterface']=function(_0xd78e53){return new BPromise(function(_0x244245,_0x121cc4){if(_0xd78e53){return getUser({'interface':_0xd78e53})[_0x8ba1('0xd')](function(_0x4e66e1){logger[_0x8ba1('0x8')](_0x8ba1('0x1a'),_0xd78e53,_0x4e66e1?_0x8ba1('0x18'):_0x8ba1('0x19'));return _0x244245(_0x4e66e1);})[_0x8ba1('0xf')](function(_0x3b70ea){logger[_0x8ba1('0xb')](_0x8ba1('0x1b'),_0x3b70ea?util[_0x8ba1('0x9')](_0x3b70ea,{'showHidden':![],'depth':null}):'');return _0x244245(null);});}return _0x244245(null);});};exports[_0x8ba1('0x1c')]=function(_0x3b205c){return new BPromise(function(_0x550d33,_0x5c924e){if(_0x3b205c){return getUser({'name':_0x3b205c})[_0x8ba1('0xd')](function(_0x1ccd44){logger['info'](_0x8ba1('0x1d'),_0x3b205c,_0x1ccd44?_0x8ba1('0x18'):_0x8ba1('0x19'));return _0x550d33(_0x1ccd44);})[_0x8ba1('0xf')](function(_0x15e419){logger[_0x8ba1('0xb')](_0x8ba1('0x1e'),_0x15e419?util[_0x8ba1('0x9')](_0x15e419,{'showHidden':![],'depth':null}):'');return _0x550d33(null);});}return _0x550d33(null);});};exports[_0x8ba1('0x1f')]=function(_0x3f1b37){return new BPromise(function(_0x3e8e6d,_0x136eef){if(_0x3f1b37){return client[_0x8ba1('0xc')](_0x8ba1('0x20'),{'options':{'raw':!![],'attributes':['id','name',_0x8ba1('0x21'),_0x8ba1('0x22'),_0x8ba1('0x23')],'where':{'name':_0x3f1b37},'limit':0x1}})[_0x8ba1('0xd')](function(_0x243a0a){logger[_0x8ba1('0xa')]('[utils][getVoiceQueueByName]\x20name:%s',_0x3f1b37,_0x243a0a?util[_0x8ba1('0x9')](_0x243a0a,{'showHidden':![],'depth':null}):'');logger[_0x8ba1('0x8')]('[utils][getVoiceQueueByName]\x20name:%s\x20%s',_0x3f1b37,_0x243a0a?_0x8ba1('0x18'):'notfound');return _0x3e8e6d(_0x243a0a[_0x8ba1('0x14')][_0x8ba1('0x15')]?_0x243a0a['result'][0x0]:null);})[_0x8ba1('0xf')](function(_0x40b97c){logger[_0x8ba1('0xb')](_0x8ba1('0x24'),_0x40b97c?util[_0x8ba1('0x9')](_0x40b97c,{'showHidden':![],'depth':null}):'');return _0x3e8e6d(null);});}return _0x3e8e6d(null);});};exports['addTime']=function(_0x26d845,_0x174528){return moment(_0x26d845)[_0x8ba1('0x25')](_0x174528,_0x8ba1('0x26'))[_0x8ba1('0x27')](_0x8ba1('0x28'));};exports[_0x8ba1('0x29')]=function(_0x3303fe,_0x5a7d65){return moment(_0x3303fe)[_0x8ba1('0x2a')](_0x5a7d65,_0x8ba1('0x26'))[_0x8ba1('0x27')](_0x8ba1('0x28'));};exports[_0x8ba1('0x2b')]=function(_0x15d93e,_0x215656){return moment(_0x15d93e)[_0x8ba1('0x2c')](moment(_0x215656),_0x8ba1('0x26'));};exports[_0x8ba1('0x2d')]=function(_0x571edc,_0xc79922){return parseInt(_0x571edc,0xa)+parseInt(_0xc79922,0xa);};exports[_0x8ba1('0x2e')]=function(){return moment()[_0x8ba1('0x27')](_0x8ba1('0x28'));};exports[_0x8ba1('0x2f')]=function(_0xd85bde,_0x3034aa){if(_0x3034aa){return moment(_0xd85bde)[_0x8ba1('0x2f')](_0x3034aa);}return!![];};exports[_0x8ba1('0x30')]=function(_0x3db733,_0x4e1a7c){if(_0x4e1a7c){return moment(_0x3db733)['isBefore'](_0x4e1a7c);}else if(_0x3db733){return!![];}return![];};
\ No newline at end of file
+var _0xbddb=['diffTime','diff','sumTime','now','isAfter','isBefore','bluebird','jayson/promise','moment','util','client','http','../../config/logger','xdr','info','inspect','debug','error','request','then','[utils][request]\x20name:%s','catch','GetUser','internal','name','stringify','result','getUserByInternal','[utils][getUserByInternal]\x20internal:%s\x20%s','found','notfound','[utils][getUserByInternal]','getUserByInterface','[utils][getUserByInterface]\x20interface:%s\x20%s','[utils][getUserByInterface]','getUserByName','[utils][getUserByName]','getVoiceQueueByName','GetVoiceQueue','type','acwTimeout','[utils][getVoiceQueueByName]\x20name:%s','addTime','add','format','YYYY-MM-DD\x20HH:mm:ss','subtractTime','subtract','seconds'];(function(_0x28f153,_0x4852ed){var _0x56b861=function(_0x3cbf02){while(--_0x3cbf02){_0x28f153['push'](_0x28f153['shift']());}};_0x56b861(++_0x4852ed);}(_0xbddb,0x1bf));var _0xbbdd=function(_0x3ab51d,_0x2fa01d){_0x3ab51d=_0x3ab51d-0x0;var _0x29a04e=_0xbddb[_0x3ab51d];return _0x29a04e;};'use strict';var BPromise=require(_0xbbdd('0x0'));var jayson=require(_0xbbdd('0x1'));var moment=require(_0xbbdd('0x2'));var util=require(_0xbbdd('0x3'));var client=jayson[_0xbbdd('0x4')][_0xbbdd('0x5')]({'port':0x2329});var logger=require(_0xbbdd('0x6'))(_0xbbdd('0x7'));exports[_0xbbdd('0x8')]=function(_0x3268c5,_0xbb768d){logger['info'](_0x3268c5,_0xbb768d?util[_0xbbdd('0x9')](_0xbb768d,{'showHidden':![],'depth':null}):'');};exports[_0xbbdd('0xa')]=function(_0x40d924,_0x3c61fb){logger[_0xbbdd('0xa')](_0x40d924,_0x3c61fb?util[_0xbbdd('0x9')](_0x3c61fb,{'showHidden':![],'depth':null}):'');};exports[_0xbbdd('0xb')]=function(_0x22f744,_0x2cbdb7){logger[_0xbbdd('0xb')](_0x22f744,_0x2cbdb7?util['inspect'](_0x2cbdb7,{'showHidden':![],'depth':null}):'');};exports['request']=function(_0x4c877b,_0x22b8ff){return client[_0xbbdd('0xc')](_0x4c877b,{'body':_0x22b8ff})[_0xbbdd('0xd')](function(_0x53311b){logger[_0xbbdd('0xa')](_0xbbdd('0xe'),_0x4c877b,_0x53311b?util['inspect'](_0x53311b,{'showHidden':![],'depth':null}):'');})[_0xbbdd('0xf')](function(_0x12aeb1){logger[_0xbbdd('0xb')](_0xbbdd('0xe'),_0x4c877b,_0x12aeb1?util[_0xbbdd('0x9')](_0x12aeb1,{'showHidden':![],'depth':null}):'');});};function getUser(_0x2a6640){return client[_0xbbdd('0xc')](_0xbbdd('0x10'),{'options':{'raw':!![],'attributes':['id',_0xbbdd('0x11'),_0xbbdd('0x12'),'interface'],'where':_0x2a6640,'limit':0x1}})[_0xbbdd('0xd')](function(_0x351e28){logger['debug']('[utils][getUser]\x20where:%s',JSON[_0xbbdd('0x13')](_0x2a6640),_0x351e28?util[_0xbbdd('0x9')](_0x351e28,{'showHidden':![],'depth':null}):'');return _0x351e28[_0xbbdd('0x14')]['length']?_0x351e28[_0xbbdd('0x14')][0x0]:null;});}exports[_0xbbdd('0x15')]=function(_0x5ee2f0){return new BPromise(function(_0x15607e,_0x5855d5){if(_0x5ee2f0){return getUser({'internal':_0x5ee2f0})[_0xbbdd('0xd')](function(_0x573cdb){logger[_0xbbdd('0x8')](_0xbbdd('0x16'),_0x5ee2f0,_0x573cdb?_0xbbdd('0x17'):_0xbbdd('0x18'));return _0x15607e(_0x573cdb);})[_0xbbdd('0xf')](function(_0x2ba7b5){logger[_0xbbdd('0xb')](_0xbbdd('0x19'),_0x2ba7b5?util[_0xbbdd('0x9')](_0x2ba7b5,{'showHidden':![],'depth':null}):'');return _0x15607e(null);});}return _0x15607e(null);});};exports[_0xbbdd('0x1a')]=function(_0x237e11){return new BPromise(function(_0x509cd3,_0x32fd8d){if(_0x237e11){return getUser({'interface':_0x237e11})[_0xbbdd('0xd')](function(_0x337429){logger['info'](_0xbbdd('0x1b'),_0x237e11,_0x337429?_0xbbdd('0x17'):_0xbbdd('0x18'));return _0x509cd3(_0x337429);})['catch'](function(_0x436baa){logger['error'](_0xbbdd('0x1c'),_0x436baa?util[_0xbbdd('0x9')](_0x436baa,{'showHidden':![],'depth':null}):'');return _0x509cd3(null);});}return _0x509cd3(null);});};exports[_0xbbdd('0x1d')]=function(_0x282b9f){return new BPromise(function(_0x57891e,_0x53d567){if(_0x282b9f){return getUser({'name':_0x282b9f})[_0xbbdd('0xd')](function(_0xe0a0d4){logger['info']('[utils][getUserByName]\x20name:%s\x20%s',_0x282b9f,_0xe0a0d4?_0xbbdd('0x17'):'notfound');return _0x57891e(_0xe0a0d4);})[_0xbbdd('0xf')](function(_0x348b22){logger[_0xbbdd('0xb')](_0xbbdd('0x1e'),_0x348b22?util['inspect'](_0x348b22,{'showHidden':![],'depth':null}):'');return _0x57891e(null);});}return _0x57891e(null);});};exports[_0xbbdd('0x1f')]=function(_0x3ad2d2){return new BPromise(function(_0x207fc8,_0x37e97a){if(_0x3ad2d2){return client[_0xbbdd('0xc')](_0xbbdd('0x20'),{'options':{'raw':!![],'attributes':['id',_0xbbdd('0x12'),_0xbbdd('0x21'),'acw',_0xbbdd('0x22')],'where':{'name':_0x3ad2d2},'limit':0x1}})[_0xbbdd('0xd')](function(_0x3d3fb9){logger[_0xbbdd('0xa')](_0xbbdd('0x23'),_0x3ad2d2,_0x3d3fb9?util[_0xbbdd('0x9')](_0x3d3fb9,{'showHidden':![],'depth':null}):'');logger[_0xbbdd('0x8')]('[utils][getVoiceQueueByName]\x20name:%s\x20%s',_0x3ad2d2,_0x3d3fb9?'found':_0xbbdd('0x18'));return _0x207fc8(_0x3d3fb9[_0xbbdd('0x14')]['length']?_0x3d3fb9[_0xbbdd('0x14')][0x0]:null);})['catch'](function(_0x374b13){logger['error']('[utils][getVoiceQueueByName]',_0x374b13?util['inspect'](_0x374b13,{'showHidden':![],'depth':null}):'');return _0x207fc8(null);});}return _0x207fc8(null);});};exports[_0xbbdd('0x24')]=function(_0x38e5f1,_0x3ceb6e){return moment(_0x38e5f1)[_0xbbdd('0x25')](_0x3ceb6e,'seconds')[_0xbbdd('0x26')](_0xbbdd('0x27'));};exports[_0xbbdd('0x28')]=function(_0x566f14,_0x3ec6d7){return moment(_0x566f14)[_0xbbdd('0x29')](_0x3ec6d7,_0xbbdd('0x2a'))['format']('YYYY-MM-DD\x20HH:mm:ss');};exports[_0xbbdd('0x2b')]=function(_0x502bb2,_0x3c8097){return moment(_0x502bb2)[_0xbbdd('0x2c')](moment(_0x3c8097),_0xbbdd('0x2a'));};exports[_0xbbdd('0x2d')]=function(_0x233623,_0x332326){return parseInt(_0x233623,0xa)+parseInt(_0x332326,0xa);};exports[_0xbbdd('0x2e')]=function(){return moment()['format'](_0xbbdd('0x27'));};exports[_0xbbdd('0x2f')]=function(_0x40d64b,_0x4322f3){if(_0x4322f3){return moment(_0x40d64b)['isAfter'](_0x4322f3);}return!![];};exports[_0xbbdd('0x30')]=function(_0x4a2d5f,_0x2e6ae6){if(_0x2e6ae6){return moment(_0x4a2d5f)['isBefore'](_0x2e6ae6);}else if(_0x4a2d5f){return!![];}return![];};
\ No newline at end of file